From 27e60883bedcb8f74a1c2766617dd3e88d06c1a3 Mon Sep 17 00:00:00 2001 From: Giorgi Lagidze Date: Wed, 14 Aug 2024 13:06:00 +0400 Subject: [PATCH 01/15] proposal and plugins interfaces changes with backwards compatibility --- .../IERC1967Upgradeable.dbg.json | 4 + .../IERC1967Upgradeable.json | 56 +++ .../IERC1822ProxiableUpgradeable.dbg.json | 4 + .../IERC1822ProxiableUpgradeable.json | 24 ++ .../ERC1967UpgradeUpgradeable.dbg.json | 4 + .../ERC1967UpgradeUpgradeable.json | 69 +++ .../IBeaconUpgradeable.dbg.json | 4 + .../IBeaconUpgradeable.json | 24 ++ .../Initializable.sol/Initializable.dbg.json | 4 + .../Initializable.sol/Initializable.json | 24 ++ .../UUPSUpgradeable.dbg.json | 4 + .../UUPSUpgradeable.sol/UUPSUpgradeable.json | 113 +++++ .../AddressUpgradeable.dbg.json | 4 + .../AddressUpgradeable.json | 10 + .../CheckpointsUpgradeable.dbg.json | 4 + .../CheckpointsUpgradeable.json | 10 + .../ContextUpgradeable.dbg.json | 4 + .../ContextUpgradeable.json | 24 ++ .../CountersUpgradeable.dbg.json | 4 + .../CountersUpgradeable.json | 10 + .../StorageSlotUpgradeable.dbg.json | 4 + .../StorageSlotUpgradeable.json | 10 + .../ERC165Upgradeable.dbg.json | 4 + .../ERC165Upgradeable.json | 43 ++ .../IERC165Upgradeable.dbg.json | 4 + .../IERC165Upgradeable.json | 30 ++ .../MathUpgradeable.dbg.json | 4 + .../MathUpgradeable.sol/MathUpgradeable.json | 10 + .../SafeCastUpgradeable.dbg.json | 4 + .../SafeCastUpgradeable.json | 10 + .../interfaces/IERC1967.sol/IERC1967.dbg.json | 4 + .../interfaces/IERC1967.sol/IERC1967.json | 56 +++ .../IERC1822Proxiable.dbg.json | 4 + .../draft-IERC1822.sol/IERC1822Proxiable.json | 24 ++ .../proxy/Clones.sol/Clones.dbg.json | 4 + .../contracts/proxy/Clones.sol/Clones.json | 10 + .../ERC1967Proxy.sol/ERC1967Proxy.dbg.json | 4 + .../ERC1967Proxy.sol/ERC1967Proxy.json | 80 ++++ .../ERC1967Upgrade.dbg.json | 4 + .../ERC1967Upgrade.sol/ERC1967Upgrade.json | 56 +++ .../contracts/proxy/Proxy.sol/Proxy.dbg.json | 4 + .../contracts/proxy/Proxy.sol/Proxy.json | 19 + .../proxy/beacon/IBeacon.sol/IBeacon.dbg.json | 4 + .../proxy/beacon/IBeacon.sol/IBeacon.json | 24 ++ .../ERC1155/ERC1155.sol/ERC1155.dbg.json | 4 + .../token/ERC1155/ERC1155.sol/ERC1155.json | 334 +++++++++++++++ .../ERC1155/IERC1155.sol/IERC1155.dbg.json | 4 + .../token/ERC1155/IERC1155.sol/IERC1155.json | 304 +++++++++++++ .../IERC1155Receiver.dbg.json | 4 + .../IERC1155Receiver.json | 108 +++++ .../IERC1155MetadataURI.dbg.json | 4 + .../IERC1155MetadataURI.json | 323 ++++++++++++++ .../token/ERC20/ERC20.sol/ERC20.dbg.json | 4 + .../token/ERC20/ERC20.sol/ERC20.json | 297 +++++++++++++ .../token/ERC20/IERC20.sol/IERC20.dbg.json | 4 + .../token/ERC20/IERC20.sol/IERC20.json | 194 +++++++++ .../IERC20Metadata.dbg.json | 4 + .../IERC20Metadata.sol/IERC20Metadata.json | 233 ++++++++++ .../token/ERC721/ERC721.sol/ERC721.dbg.json | 4 + .../token/ERC721/ERC721.sol/ERC721.json | 357 +++++++++++++++ .../token/ERC721/IERC721.sol/IERC721.dbg.json | 4 + .../token/ERC721/IERC721.sol/IERC721.json | 296 +++++++++++++ .../IERC721Receiver.dbg.json | 4 + .../IERC721Receiver.sol/IERC721Receiver.json | 45 ++ .../IERC721Metadata.dbg.json | 4 + .../IERC721Metadata.sol/IERC721Metadata.json | 341 +++++++++++++++ .../utils/Address.sol/Address.dbg.json | 4 + .../contracts/utils/Address.sol/Address.json | 10 + .../utils/Context.sol/Context.dbg.json | 4 + .../contracts/utils/Context.sol/Context.json | 10 + .../utils/Counters.sol/Counters.dbg.json | 4 + .../utils/Counters.sol/Counters.json | 10 + .../StorageSlot.sol/StorageSlot.dbg.json | 4 + .../utils/StorageSlot.sol/StorageSlot.json | 10 + .../utils/Strings.sol/Strings.dbg.json | 4 + .../contracts/utils/Strings.sol/Strings.json | 10 + .../introspection/ERC165.sol/ERC165.dbg.json | 4 + .../introspection/ERC165.sol/ERC165.json | 30 ++ .../IERC165.sol/IERC165.dbg.json | 4 + .../introspection/IERC165.sol/IERC165.json | 30 ++ .../utils/math/Math.sol/Math.dbg.json | 4 + .../contracts/utils/math/Math.sol/Math.json | 10 + .../math/SignedMath.sol/SignedMath.dbg.json | 4 + .../utils/math/SignedMath.sol/SignedMath.json | 10 + .../58fb59cc656bfddaae1de55a017c315b.json | 1 + .../9ac591806bb2e846e5a60f79d635058e.json | 1 + .../artifacts/src/dao/IDAO.sol/IDAO.dbg.json | 4 + .../artifacts/src/dao/IDAO.sol/IDAO.json | 379 ++++++++++++++++ .../mocks/dao/DAOMock.sol/DAOMock.dbg.json | 4 + .../src/mocks/dao/DAOMock.sol/DAOMock.json | 405 ++++++++++++++++++ .../DaoAuthorizableMock.dbg.json | 4 + .../DaoAuthorizableMock.json | 81 ++++ .../DaoAuthorizableUpgradeableMock.dbg.json | 4 + .../DaoAuthorizableUpgradeableMock.json | 109 +++++ .../PermissionConditionMock.dbg.json | 4 + .../PermissionConditionMock.json | 103 +++++ ...ermissionConditionUpgradeableMock.dbg.json | 4 + .../PermissionConditionUpgradeableMock.json | 116 +++++ .../PluginCloneableMockBad.dbg.json | 4 + .../PluginCloneableMockBad.json | 153 +++++++ .../PluginCloneableMockBuild1.dbg.json | 4 + .../PluginCloneableMockBuild1.json | 153 +++++++ .../PluginCloneableMockBuild2.dbg.json | 4 + .../PluginCloneableMockBuild2.json | 166 +++++++ .../PluginCloneableSetupMockBuild1.dbg.json | 4 + .../PluginCloneableSetupMockBuild1.json | 297 +++++++++++++ .../PluginCloneableSetupMockBuild2.dbg.json | 4 + .../PluginCloneableSetupMockBuild2.json | 297 +++++++++++++ .../PluginMock.sol/PluginMockBuild1.dbg.json | 4 + .../PluginMock.sol/PluginMockBuild1.json | 138 ++++++ .../PluginSetupMockBuild1.dbg.json | 4 + .../PluginSetupMockBuild1.json | 297 +++++++++++++ .../PluginUUPSUpgradeableMockBad.dbg.json | 4 + .../PluginUUPSUpgradeableMockBad.json | 294 +++++++++++++ .../PluginUUPSUpgradeableMockBuild1.dbg.json | 4 + .../PluginUUPSUpgradeableMockBuild1.json | 294 +++++++++++++ .../PluginUUPSUpgradeableMockBuild2.dbg.json | 4 + .../PluginUUPSUpgradeableMockBuild2.json | 320 ++++++++++++++ .../PluginUUPSUpgradeableMockBuild3.dbg.json | 4 + .../PluginUUPSUpgradeableMockBuild3.json | 333 ++++++++++++++ ...ginUUPSUpgradeableSetupMockBuild1.dbg.json | 4 + .../PluginUUPSUpgradeableSetupMockBuild1.json | 308 +++++++++++++ ...ginUUPSUpgradeableSetupMockBuild2.dbg.json | 4 + .../PluginUUPSUpgradeableSetupMockBuild2.json | 308 +++++++++++++ ...ginUUPSUpgradeableSetupMockBuild3.dbg.json | 4 + .../PluginUUPSUpgradeableSetupMockBuild3.json | 308 +++++++++++++ .../AddresslistMock.dbg.json | 4 + .../AddresslistMock.sol/AddresslistMock.json | 123 ++++++ .../ERC1155Mock.sol/ERC1155Mock.dbg.json | 4 + .../token/ERC1155Mock.sol/ERC1155Mock.json | 380 ++++++++++++++++ .../token/ERC20Mock.sol/ERC20Mock.dbg.json | 4 + .../mocks/token/ERC20Mock.sol/ERC20Mock.json | 341 +++++++++++++++ .../token/ERC721Mock.sol/ERC721Mock.dbg.json | 4 + .../token/ERC721Mock.sol/ERC721Mock.json | 388 +++++++++++++++++ .../math/BitmapMock.sol/BitmapMock.dbg.json | 4 + .../utils/math/BitmapMock.sol/BitmapMock.json | 59 +++ .../math/RatioMock.sol/RatioMock.dbg.json | 4 + .../utils/math/RatioMock.sol/RatioMock.json | 64 +++ .../ProtocolVersionMock.dbg.json | 4 + .../ProtocolVersionMock.json | 24 ++ .../VersionComparisonLibMock.dbg.json | 4 + .../VersionComparisonLibMock.json | 155 +++++++ .../PermissionLib.sol/PermissionLib.dbg.json | 4 + .../PermissionLib.sol/PermissionLib.json | 24 ++ .../DaoAuthorizable.dbg.json | 4 + .../DaoAuthorizable.sol/DaoAuthorizable.json | 24 ++ .../DaoAuthorizableUpgradeable.dbg.json | 4 + .../DaoAuthorizableUpgradeable.json | 37 ++ .../IPermissionCondition.dbg.json | 4 + .../IPermissionCondition.json | 45 ++ .../PermissionCondition.dbg.json | 4 + .../PermissionCondition.json | 77 ++++ .../PermissionConditionUpgradeable.dbg.json | 4 + .../PermissionConditionUpgradeable.json | 90 ++++ .../src/plugin/IPlugin.sol/IPlugin.dbg.json | 4 + .../src/plugin/IPlugin.sol/IPlugin.json | 24 ++ .../src/plugin/Plugin.sol/Plugin.dbg.json | 4 + .../src/plugin/Plugin.sol/Plugin.json | 114 +++++ .../PluginCloneable.dbg.json | 4 + .../PluginCloneable.sol/PluginCloneable.json | 127 ++++++ .../PluginUUPSUpgradeable.dbg.json | 4 + .../PluginUUPSUpgradeable.json | 268 ++++++++++++ .../Addresslist.sol/Addresslist.dbg.json | 4 + .../Addresslist.sol/Addresslist.json | 97 +++++ .../IMembership.sol/IMembership.dbg.json | 4 + .../IMembership.sol/IMembership.json | 69 +++ .../proposal/IProposal.sol/IProposal.dbg.json | 4 + .../proposal/IProposal.sol/IProposal.json | 173 ++++++++ .../proposal/Proposal.sol/Proposal.dbg.json | 4 + .../proposal/Proposal.sol/Proposal.json | 192 +++++++++ .../ProposalUpgradeable.dbg.json | 4 + .../ProposalUpgradeable.json | 205 +++++++++ .../IPluginSetup.sol/IPluginSetup.dbg.json | 4 + .../setup/IPluginSetup.sol/IPluginSetup.json | 250 +++++++++++ .../PluginSetup.sol/PluginSetup.dbg.json | 4 + .../setup/PluginSetup.sol/PluginSetup.json | 287 +++++++++++++ .../PluginUpgradeableSetup.dbg.json | 4 + .../PluginUpgradeableSetup.json | 298 +++++++++++++ .../ProxyFactory.sol/ProxyFactory.dbg.json | 4 + .../ProxyFactory.sol/ProxyFactory.json | 86 ++++ .../deployment/ProxyLib.sol/ProxyLib.dbg.json | 4 + .../deployment/ProxyLib.sol/ProxyLib.json | 10 + .../IProtocolVersion.dbg.json | 4 + .../IProtocolVersion.json | 24 ++ .../ProtocolVersion.dbg.json | 4 + .../ProtocolVersion.sol/ProtocolVersion.json | 24 ++ .../VersionComparisonLib.dbg.json | 4 + .../VersionComparisonLib.json | 10 + .../extensions/proposal/ProposalMock.sol | 41 -- .../proposal/ProposalUpgradeableMock.sol | 41 -- contracts/src/plugin/Plugin.sol | 43 ++ contracts/src/plugin/PluginCloneable.sol | 43 ++ .../src/plugin/PluginUUPSUpgradeable.sol | 44 +- .../plugin/extensions/proposal/IProposal.sol | 19 + .../plugin/extensions/proposal/Proposal.sol | 63 +-- .../proposal/ProposalUpgradeable.sol | 61 +-- 196 files changed, 13188 insertions(+), 187 deletions(-) create mode 100644 contracts/artifacts/@openzeppelin/contracts-upgradeable/interfaces/IERC1967Upgradeable.sol/IERC1967Upgradeable.dbg.json create mode 100644 contracts/artifacts/@openzeppelin/contracts-upgradeable/interfaces/IERC1967Upgradeable.sol/IERC1967Upgradeable.json create mode 100644 contracts/artifacts/@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol/IERC1822ProxiableUpgradeable.dbg.json create mode 100644 contracts/artifacts/@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol/IERC1822ProxiableUpgradeable.json create mode 100644 contracts/artifacts/@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol/ERC1967UpgradeUpgradeable.dbg.json create mode 100644 contracts/artifacts/@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol/ERC1967UpgradeUpgradeable.json create mode 100644 contracts/artifacts/@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.sol/IBeaconUpgradeable.dbg.json create mode 100644 contracts/artifacts/@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.sol/IBeaconUpgradeable.json create mode 100644 contracts/artifacts/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol/Initializable.dbg.json create mode 100644 contracts/artifacts/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol/Initializable.json create mode 100644 contracts/artifacts/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol/UUPSUpgradeable.dbg.json create mode 100644 contracts/artifacts/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol/UUPSUpgradeable.json create mode 100644 contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol/AddressUpgradeable.dbg.json create mode 100644 contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol/AddressUpgradeable.json create mode 100644 contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/CheckpointsUpgradeable.sol/CheckpointsUpgradeable.dbg.json create mode 100644 contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/CheckpointsUpgradeable.sol/CheckpointsUpgradeable.json create mode 100644 contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol/ContextUpgradeable.dbg.json create mode 100644 contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol/ContextUpgradeable.json create mode 100644 contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol/CountersUpgradeable.dbg.json create mode 100644 contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol/CountersUpgradeable.json create mode 100644 contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol/StorageSlotUpgradeable.dbg.json create mode 100644 contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol/StorageSlotUpgradeable.json create mode 100644 contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol/ERC165Upgradeable.dbg.json create mode 100644 contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol/ERC165Upgradeable.json create mode 100644 contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol/IERC165Upgradeable.dbg.json create mode 100644 contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol/IERC165Upgradeable.json create mode 100644 contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/math/MathUpgradeable.sol/MathUpgradeable.dbg.json create mode 100644 contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/math/MathUpgradeable.sol/MathUpgradeable.json create mode 100644 contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol/SafeCastUpgradeable.dbg.json create mode 100644 contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol/SafeCastUpgradeable.json create mode 100644 contracts/artifacts/@openzeppelin/contracts/interfaces/IERC1967.sol/IERC1967.dbg.json create mode 100644 contracts/artifacts/@openzeppelin/contracts/interfaces/IERC1967.sol/IERC1967.json create mode 100644 contracts/artifacts/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/IERC1822Proxiable.dbg.json create mode 100644 contracts/artifacts/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/IERC1822Proxiable.json create mode 100644 contracts/artifacts/@openzeppelin/contracts/proxy/Clones.sol/Clones.dbg.json create mode 100644 contracts/artifacts/@openzeppelin/contracts/proxy/Clones.sol/Clones.json create mode 100644 contracts/artifacts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol/ERC1967Proxy.dbg.json create mode 100644 contracts/artifacts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol/ERC1967Proxy.json create mode 100644 contracts/artifacts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol/ERC1967Upgrade.dbg.json create mode 100644 contracts/artifacts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol/ERC1967Upgrade.json create mode 100644 contracts/artifacts/@openzeppelin/contracts/proxy/Proxy.sol/Proxy.dbg.json create mode 100644 contracts/artifacts/@openzeppelin/contracts/proxy/Proxy.sol/Proxy.json create mode 100644 contracts/artifacts/@openzeppelin/contracts/proxy/beacon/IBeacon.sol/IBeacon.dbg.json create mode 100644 contracts/artifacts/@openzeppelin/contracts/proxy/beacon/IBeacon.sol/IBeacon.json create mode 100644 contracts/artifacts/@openzeppelin/contracts/token/ERC1155/ERC1155.sol/ERC1155.dbg.json create mode 100644 contracts/artifacts/@openzeppelin/contracts/token/ERC1155/ERC1155.sol/ERC1155.json create mode 100644 contracts/artifacts/@openzeppelin/contracts/token/ERC1155/IERC1155.sol/IERC1155.dbg.json create mode 100644 contracts/artifacts/@openzeppelin/contracts/token/ERC1155/IERC1155.sol/IERC1155.json create mode 100644 contracts/artifacts/@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol/IERC1155Receiver.dbg.json create mode 100644 contracts/artifacts/@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol/IERC1155Receiver.json create mode 100644 contracts/artifacts/@openzeppelin/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol/IERC1155MetadataURI.dbg.json create mode 100644 contracts/artifacts/@openzeppelin/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol/IERC1155MetadataURI.json create mode 100644 contracts/artifacts/@openzeppelin/contracts/token/ERC20/ERC20.sol/ERC20.dbg.json create mode 100644 contracts/artifacts/@openzeppelin/contracts/token/ERC20/ERC20.sol/ERC20.json create mode 100644 contracts/artifacts/@openzeppelin/contracts/token/ERC20/IERC20.sol/IERC20.dbg.json create mode 100644 contracts/artifacts/@openzeppelin/contracts/token/ERC20/IERC20.sol/IERC20.json create mode 100644 contracts/artifacts/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol/IERC20Metadata.dbg.json create mode 100644 contracts/artifacts/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol/IERC20Metadata.json create mode 100644 contracts/artifacts/@openzeppelin/contracts/token/ERC721/ERC721.sol/ERC721.dbg.json create mode 100644 contracts/artifacts/@openzeppelin/contracts/token/ERC721/ERC721.sol/ERC721.json create mode 100644 contracts/artifacts/@openzeppelin/contracts/token/ERC721/IERC721.sol/IERC721.dbg.json create mode 100644 contracts/artifacts/@openzeppelin/contracts/token/ERC721/IERC721.sol/IERC721.json create mode 100644 contracts/artifacts/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol/IERC721Receiver.dbg.json create mode 100644 contracts/artifacts/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol/IERC721Receiver.json create mode 100644 contracts/artifacts/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol/IERC721Metadata.dbg.json create mode 100644 contracts/artifacts/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol/IERC721Metadata.json create mode 100644 contracts/artifacts/@openzeppelin/contracts/utils/Address.sol/Address.dbg.json create mode 100644 contracts/artifacts/@openzeppelin/contracts/utils/Address.sol/Address.json create mode 100644 contracts/artifacts/@openzeppelin/contracts/utils/Context.sol/Context.dbg.json create mode 100644 contracts/artifacts/@openzeppelin/contracts/utils/Context.sol/Context.json create mode 100644 contracts/artifacts/@openzeppelin/contracts/utils/Counters.sol/Counters.dbg.json create mode 100644 contracts/artifacts/@openzeppelin/contracts/utils/Counters.sol/Counters.json create mode 100644 contracts/artifacts/@openzeppelin/contracts/utils/StorageSlot.sol/StorageSlot.dbg.json create mode 100644 contracts/artifacts/@openzeppelin/contracts/utils/StorageSlot.sol/StorageSlot.json create mode 100644 contracts/artifacts/@openzeppelin/contracts/utils/Strings.sol/Strings.dbg.json create mode 100644 contracts/artifacts/@openzeppelin/contracts/utils/Strings.sol/Strings.json create mode 100644 contracts/artifacts/@openzeppelin/contracts/utils/introspection/ERC165.sol/ERC165.dbg.json create mode 100644 contracts/artifacts/@openzeppelin/contracts/utils/introspection/ERC165.sol/ERC165.json create mode 100644 contracts/artifacts/@openzeppelin/contracts/utils/introspection/IERC165.sol/IERC165.dbg.json create mode 100644 contracts/artifacts/@openzeppelin/contracts/utils/introspection/IERC165.sol/IERC165.json create mode 100644 contracts/artifacts/@openzeppelin/contracts/utils/math/Math.sol/Math.dbg.json create mode 100644 contracts/artifacts/@openzeppelin/contracts/utils/math/Math.sol/Math.json create mode 100644 contracts/artifacts/@openzeppelin/contracts/utils/math/SignedMath.sol/SignedMath.dbg.json create mode 100644 contracts/artifacts/@openzeppelin/contracts/utils/math/SignedMath.sol/SignedMath.json create mode 100644 contracts/artifacts/build-info/58fb59cc656bfddaae1de55a017c315b.json create mode 100644 contracts/artifacts/build-info/9ac591806bb2e846e5a60f79d635058e.json create mode 100644 contracts/artifacts/src/dao/IDAO.sol/IDAO.dbg.json create mode 100644 contracts/artifacts/src/dao/IDAO.sol/IDAO.json create mode 100644 contracts/artifacts/src/mocks/dao/DAOMock.sol/DAOMock.dbg.json create mode 100644 contracts/artifacts/src/mocks/dao/DAOMock.sol/DAOMock.json create mode 100644 contracts/artifacts/src/mocks/permission/auth/DaoAuthorizableMock.sol/DaoAuthorizableMock.dbg.json create mode 100644 contracts/artifacts/src/mocks/permission/auth/DaoAuthorizableMock.sol/DaoAuthorizableMock.json create mode 100644 contracts/artifacts/src/mocks/permission/auth/DaoAuthorizableUpgradeableMock.sol/DaoAuthorizableUpgradeableMock.dbg.json create mode 100644 contracts/artifacts/src/mocks/permission/auth/DaoAuthorizableUpgradeableMock.sol/DaoAuthorizableUpgradeableMock.json create mode 100644 contracts/artifacts/src/mocks/permission/condition/PermissionConditionMock.sol/PermissionConditionMock.dbg.json create mode 100644 contracts/artifacts/src/mocks/permission/condition/PermissionConditionMock.sol/PermissionConditionMock.json create mode 100644 contracts/artifacts/src/mocks/permission/condition/PermissionConditionUpgradeableMock.sol/PermissionConditionUpgradeableMock.dbg.json create mode 100644 contracts/artifacts/src/mocks/permission/condition/PermissionConditionUpgradeableMock.sol/PermissionConditionUpgradeableMock.json create mode 100644 contracts/artifacts/src/mocks/plugin/PluginCloneableMock.sol/PluginCloneableMockBad.dbg.json create mode 100644 contracts/artifacts/src/mocks/plugin/PluginCloneableMock.sol/PluginCloneableMockBad.json create mode 100644 contracts/artifacts/src/mocks/plugin/PluginCloneableMock.sol/PluginCloneableMockBuild1.dbg.json create mode 100644 contracts/artifacts/src/mocks/plugin/PluginCloneableMock.sol/PluginCloneableMockBuild1.json create mode 100644 contracts/artifacts/src/mocks/plugin/PluginCloneableMock.sol/PluginCloneableMockBuild2.dbg.json create mode 100644 contracts/artifacts/src/mocks/plugin/PluginCloneableMock.sol/PluginCloneableMockBuild2.json create mode 100644 contracts/artifacts/src/mocks/plugin/PluginCloneableSetupMock.sol/PluginCloneableSetupMockBuild1.dbg.json create mode 100644 contracts/artifacts/src/mocks/plugin/PluginCloneableSetupMock.sol/PluginCloneableSetupMockBuild1.json create mode 100644 contracts/artifacts/src/mocks/plugin/PluginCloneableSetupMock.sol/PluginCloneableSetupMockBuild2.dbg.json create mode 100644 contracts/artifacts/src/mocks/plugin/PluginCloneableSetupMock.sol/PluginCloneableSetupMockBuild2.json create mode 100644 contracts/artifacts/src/mocks/plugin/PluginMock.sol/PluginMockBuild1.dbg.json create mode 100644 contracts/artifacts/src/mocks/plugin/PluginMock.sol/PluginMockBuild1.json create mode 100644 contracts/artifacts/src/mocks/plugin/PluginSetupMock.sol/PluginSetupMockBuild1.dbg.json create mode 100644 contracts/artifacts/src/mocks/plugin/PluginSetupMock.sol/PluginSetupMockBuild1.json create mode 100644 contracts/artifacts/src/mocks/plugin/PluginUUPSUpgradeableMock.sol/PluginUUPSUpgradeableMockBad.dbg.json create mode 100644 contracts/artifacts/src/mocks/plugin/PluginUUPSUpgradeableMock.sol/PluginUUPSUpgradeableMockBad.json create mode 100644 contracts/artifacts/src/mocks/plugin/PluginUUPSUpgradeableMock.sol/PluginUUPSUpgradeableMockBuild1.dbg.json create mode 100644 contracts/artifacts/src/mocks/plugin/PluginUUPSUpgradeableMock.sol/PluginUUPSUpgradeableMockBuild1.json create mode 100644 contracts/artifacts/src/mocks/plugin/PluginUUPSUpgradeableMock.sol/PluginUUPSUpgradeableMockBuild2.dbg.json create mode 100644 contracts/artifacts/src/mocks/plugin/PluginUUPSUpgradeableMock.sol/PluginUUPSUpgradeableMockBuild2.json create mode 100644 contracts/artifacts/src/mocks/plugin/PluginUUPSUpgradeableMock.sol/PluginUUPSUpgradeableMockBuild3.dbg.json create mode 100644 contracts/artifacts/src/mocks/plugin/PluginUUPSUpgradeableMock.sol/PluginUUPSUpgradeableMockBuild3.json create mode 100644 contracts/artifacts/src/mocks/plugin/PluginUUPSUpgradeableSetupMock.sol/PluginUUPSUpgradeableSetupMockBuild1.dbg.json create mode 100644 contracts/artifacts/src/mocks/plugin/PluginUUPSUpgradeableSetupMock.sol/PluginUUPSUpgradeableSetupMockBuild1.json create mode 100644 contracts/artifacts/src/mocks/plugin/PluginUUPSUpgradeableSetupMock.sol/PluginUUPSUpgradeableSetupMockBuild2.dbg.json create mode 100644 contracts/artifacts/src/mocks/plugin/PluginUUPSUpgradeableSetupMock.sol/PluginUUPSUpgradeableSetupMockBuild2.json create mode 100644 contracts/artifacts/src/mocks/plugin/PluginUUPSUpgradeableSetupMock.sol/PluginUUPSUpgradeableSetupMockBuild3.dbg.json create mode 100644 contracts/artifacts/src/mocks/plugin/PluginUUPSUpgradeableSetupMock.sol/PluginUUPSUpgradeableSetupMockBuild3.json create mode 100644 contracts/artifacts/src/mocks/plugin/extensions/governance/AddresslistMock.sol/AddresslistMock.dbg.json create mode 100644 contracts/artifacts/src/mocks/plugin/extensions/governance/AddresslistMock.sol/AddresslistMock.json create mode 100644 contracts/artifacts/src/mocks/token/ERC1155Mock.sol/ERC1155Mock.dbg.json create mode 100644 contracts/artifacts/src/mocks/token/ERC1155Mock.sol/ERC1155Mock.json create mode 100644 contracts/artifacts/src/mocks/token/ERC20Mock.sol/ERC20Mock.dbg.json create mode 100644 contracts/artifacts/src/mocks/token/ERC20Mock.sol/ERC20Mock.json create mode 100644 contracts/artifacts/src/mocks/token/ERC721Mock.sol/ERC721Mock.dbg.json create mode 100644 contracts/artifacts/src/mocks/token/ERC721Mock.sol/ERC721Mock.json create mode 100644 contracts/artifacts/src/mocks/utils/math/BitmapMock.sol/BitmapMock.dbg.json create mode 100644 contracts/artifacts/src/mocks/utils/math/BitmapMock.sol/BitmapMock.json create mode 100644 contracts/artifacts/src/mocks/utils/math/RatioMock.sol/RatioMock.dbg.json create mode 100644 contracts/artifacts/src/mocks/utils/math/RatioMock.sol/RatioMock.json create mode 100644 contracts/artifacts/src/mocks/utils/versioning/ProtocolVersionMock.sol/ProtocolVersionMock.dbg.json create mode 100644 contracts/artifacts/src/mocks/utils/versioning/ProtocolVersionMock.sol/ProtocolVersionMock.json create mode 100644 contracts/artifacts/src/mocks/utils/versioning/VersionComparisonLibMock.sol/VersionComparisonLibMock.dbg.json create mode 100644 contracts/artifacts/src/mocks/utils/versioning/VersionComparisonLibMock.sol/VersionComparisonLibMock.json create mode 100644 contracts/artifacts/src/permission/PermissionLib.sol/PermissionLib.dbg.json create mode 100644 contracts/artifacts/src/permission/PermissionLib.sol/PermissionLib.json create mode 100644 contracts/artifacts/src/permission/auth/DaoAuthorizable.sol/DaoAuthorizable.dbg.json create mode 100644 contracts/artifacts/src/permission/auth/DaoAuthorizable.sol/DaoAuthorizable.json create mode 100644 contracts/artifacts/src/permission/auth/DaoAuthorizableUpgradeable.sol/DaoAuthorizableUpgradeable.dbg.json create mode 100644 contracts/artifacts/src/permission/auth/DaoAuthorizableUpgradeable.sol/DaoAuthorizableUpgradeable.json create mode 100644 contracts/artifacts/src/permission/condition/IPermissionCondition.sol/IPermissionCondition.dbg.json create mode 100644 contracts/artifacts/src/permission/condition/IPermissionCondition.sol/IPermissionCondition.json create mode 100644 contracts/artifacts/src/permission/condition/PermissionCondition.sol/PermissionCondition.dbg.json create mode 100644 contracts/artifacts/src/permission/condition/PermissionCondition.sol/PermissionCondition.json create mode 100644 contracts/artifacts/src/permission/condition/PermissionConditionUpgradeable.sol/PermissionConditionUpgradeable.dbg.json create mode 100644 contracts/artifacts/src/permission/condition/PermissionConditionUpgradeable.sol/PermissionConditionUpgradeable.json create mode 100644 contracts/artifacts/src/plugin/IPlugin.sol/IPlugin.dbg.json create mode 100644 contracts/artifacts/src/plugin/IPlugin.sol/IPlugin.json create mode 100644 contracts/artifacts/src/plugin/Plugin.sol/Plugin.dbg.json create mode 100644 contracts/artifacts/src/plugin/Plugin.sol/Plugin.json create mode 100644 contracts/artifacts/src/plugin/PluginCloneable.sol/PluginCloneable.dbg.json create mode 100644 contracts/artifacts/src/plugin/PluginCloneable.sol/PluginCloneable.json create mode 100644 contracts/artifacts/src/plugin/PluginUUPSUpgradeable.sol/PluginUUPSUpgradeable.dbg.json create mode 100644 contracts/artifacts/src/plugin/PluginUUPSUpgradeable.sol/PluginUUPSUpgradeable.json create mode 100644 contracts/artifacts/src/plugin/extensions/governance/Addresslist.sol/Addresslist.dbg.json create mode 100644 contracts/artifacts/src/plugin/extensions/governance/Addresslist.sol/Addresslist.json create mode 100644 contracts/artifacts/src/plugin/extensions/membership/IMembership.sol/IMembership.dbg.json create mode 100644 contracts/artifacts/src/plugin/extensions/membership/IMembership.sol/IMembership.json create mode 100644 contracts/artifacts/src/plugin/extensions/proposal/IProposal.sol/IProposal.dbg.json create mode 100644 contracts/artifacts/src/plugin/extensions/proposal/IProposal.sol/IProposal.json create mode 100644 contracts/artifacts/src/plugin/extensions/proposal/Proposal.sol/Proposal.dbg.json create mode 100644 contracts/artifacts/src/plugin/extensions/proposal/Proposal.sol/Proposal.json create mode 100644 contracts/artifacts/src/plugin/extensions/proposal/ProposalUpgradeable.sol/ProposalUpgradeable.dbg.json create mode 100644 contracts/artifacts/src/plugin/extensions/proposal/ProposalUpgradeable.sol/ProposalUpgradeable.json create mode 100644 contracts/artifacts/src/plugin/setup/IPluginSetup.sol/IPluginSetup.dbg.json create mode 100644 contracts/artifacts/src/plugin/setup/IPluginSetup.sol/IPluginSetup.json create mode 100644 contracts/artifacts/src/plugin/setup/PluginSetup.sol/PluginSetup.dbg.json create mode 100644 contracts/artifacts/src/plugin/setup/PluginSetup.sol/PluginSetup.json create mode 100644 contracts/artifacts/src/plugin/setup/PluginUpgradeableSetup.sol/PluginUpgradeableSetup.dbg.json create mode 100644 contracts/artifacts/src/plugin/setup/PluginUpgradeableSetup.sol/PluginUpgradeableSetup.json create mode 100644 contracts/artifacts/src/utils/deployment/ProxyFactory.sol/ProxyFactory.dbg.json create mode 100644 contracts/artifacts/src/utils/deployment/ProxyFactory.sol/ProxyFactory.json create mode 100644 contracts/artifacts/src/utils/deployment/ProxyLib.sol/ProxyLib.dbg.json create mode 100644 contracts/artifacts/src/utils/deployment/ProxyLib.sol/ProxyLib.json create mode 100644 contracts/artifacts/src/utils/versioning/IProtocolVersion.sol/IProtocolVersion.dbg.json create mode 100644 contracts/artifacts/src/utils/versioning/IProtocolVersion.sol/IProtocolVersion.json create mode 100644 contracts/artifacts/src/utils/versioning/ProtocolVersion.sol/ProtocolVersion.dbg.json create mode 100644 contracts/artifacts/src/utils/versioning/ProtocolVersion.sol/ProtocolVersion.json create mode 100644 contracts/artifacts/src/utils/versioning/VersionComparisonLib.sol/VersionComparisonLib.dbg.json create mode 100644 contracts/artifacts/src/utils/versioning/VersionComparisonLib.sol/VersionComparisonLib.json delete mode 100644 contracts/src/mocks/plugin/extensions/proposal/ProposalMock.sol delete mode 100644 contracts/src/mocks/plugin/extensions/proposal/ProposalUpgradeableMock.sol diff --git a/contracts/artifacts/@openzeppelin/contracts-upgradeable/interfaces/IERC1967Upgradeable.sol/IERC1967Upgradeable.dbg.json b/contracts/artifacts/@openzeppelin/contracts-upgradeable/interfaces/IERC1967Upgradeable.sol/IERC1967Upgradeable.dbg.json new file mode 100644 index 00000000..4058cb44 --- /dev/null +++ b/contracts/artifacts/@openzeppelin/contracts-upgradeable/interfaces/IERC1967Upgradeable.sol/IERC1967Upgradeable.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" +} diff --git a/contracts/artifacts/@openzeppelin/contracts-upgradeable/interfaces/IERC1967Upgradeable.sol/IERC1967Upgradeable.json b/contracts/artifacts/@openzeppelin/contracts-upgradeable/interfaces/IERC1967Upgradeable.sol/IERC1967Upgradeable.json new file mode 100644 index 00000000..1d763411 --- /dev/null +++ b/contracts/artifacts/@openzeppelin/contracts-upgradeable/interfaces/IERC1967Upgradeable.sol/IERC1967Upgradeable.json @@ -0,0 +1,56 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IERC1967Upgradeable", + "sourceName": "@openzeppelin/contracts-upgradeable/interfaces/IERC1967Upgradeable.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "previousAdmin", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "newAdmin", + "type": "address" + } + ], + "name": "AdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "beacon", + "type": "address" + } + ], + "name": "BeaconUpgraded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "Upgraded", + "type": "event" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol/IERC1822ProxiableUpgradeable.dbg.json b/contracts/artifacts/@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol/IERC1822ProxiableUpgradeable.dbg.json new file mode 100644 index 00000000..4058cb44 --- /dev/null +++ b/contracts/artifacts/@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol/IERC1822ProxiableUpgradeable.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" +} diff --git a/contracts/artifacts/@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol/IERC1822ProxiableUpgradeable.json b/contracts/artifacts/@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol/IERC1822ProxiableUpgradeable.json new file mode 100644 index 00000000..fc506349 --- /dev/null +++ b/contracts/artifacts/@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol/IERC1822ProxiableUpgradeable.json @@ -0,0 +1,24 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IERC1822ProxiableUpgradeable", + "sourceName": "@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol", + "abi": [ + { + "inputs": [], + "name": "proxiableUUID", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol/ERC1967UpgradeUpgradeable.dbg.json b/contracts/artifacts/@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol/ERC1967UpgradeUpgradeable.dbg.json new file mode 100644 index 00000000..b8d2318f --- /dev/null +++ b/contracts/artifacts/@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol/ERC1967UpgradeUpgradeable.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" +} diff --git a/contracts/artifacts/@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol/ERC1967UpgradeUpgradeable.json b/contracts/artifacts/@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol/ERC1967UpgradeUpgradeable.json new file mode 100644 index 00000000..99f87335 --- /dev/null +++ b/contracts/artifacts/@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol/ERC1967UpgradeUpgradeable.json @@ -0,0 +1,69 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "ERC1967UpgradeUpgradeable", + "sourceName": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "previousAdmin", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "newAdmin", + "type": "address" + } + ], + "name": "AdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "beacon", + "type": "address" + } + ], + "name": "BeaconUpgraded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint8", + "name": "version", + "type": "uint8" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "Upgraded", + "type": "event" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.sol/IBeaconUpgradeable.dbg.json b/contracts/artifacts/@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.sol/IBeaconUpgradeable.dbg.json new file mode 100644 index 00000000..b8d2318f --- /dev/null +++ b/contracts/artifacts/@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.sol/IBeaconUpgradeable.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" +} diff --git a/contracts/artifacts/@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.sol/IBeaconUpgradeable.json b/contracts/artifacts/@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.sol/IBeaconUpgradeable.json new file mode 100644 index 00000000..1c51ed2f --- /dev/null +++ b/contracts/artifacts/@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.sol/IBeaconUpgradeable.json @@ -0,0 +1,24 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IBeaconUpgradeable", + "sourceName": "@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.sol", + "abi": [ + { + "inputs": [], + "name": "implementation", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol/Initializable.dbg.json b/contracts/artifacts/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol/Initializable.dbg.json new file mode 100644 index 00000000..b8d2318f --- /dev/null +++ b/contracts/artifacts/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol/Initializable.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" +} diff --git a/contracts/artifacts/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol/Initializable.json b/contracts/artifacts/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol/Initializable.json new file mode 100644 index 00000000..4b29c723 --- /dev/null +++ b/contracts/artifacts/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol/Initializable.json @@ -0,0 +1,24 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "Initializable", + "sourceName": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint8", + "name": "version", + "type": "uint8" + } + ], + "name": "Initialized", + "type": "event" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol/UUPSUpgradeable.dbg.json b/contracts/artifacts/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol/UUPSUpgradeable.dbg.json new file mode 100644 index 00000000..b8d2318f --- /dev/null +++ b/contracts/artifacts/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol/UUPSUpgradeable.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" +} diff --git a/contracts/artifacts/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol/UUPSUpgradeable.json b/contracts/artifacts/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol/UUPSUpgradeable.json new file mode 100644 index 00000000..414ef083 --- /dev/null +++ b/contracts/artifacts/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol/UUPSUpgradeable.json @@ -0,0 +1,113 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "UUPSUpgradeable", + "sourceName": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "previousAdmin", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "newAdmin", + "type": "address" + } + ], + "name": "AdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "beacon", + "type": "address" + } + ], + "name": "BeaconUpgraded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint8", + "name": "version", + "type": "uint8" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "Upgraded", + "type": "event" + }, + { + "inputs": [], + "name": "proxiableUUID", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newImplementation", + "type": "address" + } + ], + "name": "upgradeTo", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newImplementation", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "upgradeToAndCall", + "outputs": [], + "stateMutability": "payable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol/AddressUpgradeable.dbg.json b/contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol/AddressUpgradeable.dbg.json new file mode 100644 index 00000000..4058cb44 --- /dev/null +++ b/contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol/AddressUpgradeable.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" +} diff --git a/contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol/AddressUpgradeable.json b/contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol/AddressUpgradeable.json new file mode 100644 index 00000000..87a75b56 --- /dev/null +++ b/contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol/AddressUpgradeable.json @@ -0,0 +1,10 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "AddressUpgradeable", + "sourceName": "@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", + "abi": [], + "bytecode": "0x602d6037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/CheckpointsUpgradeable.sol/CheckpointsUpgradeable.dbg.json b/contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/CheckpointsUpgradeable.sol/CheckpointsUpgradeable.dbg.json new file mode 100644 index 00000000..4058cb44 --- /dev/null +++ b/contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/CheckpointsUpgradeable.sol/CheckpointsUpgradeable.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" +} diff --git a/contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/CheckpointsUpgradeable.sol/CheckpointsUpgradeable.json b/contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/CheckpointsUpgradeable.sol/CheckpointsUpgradeable.json new file mode 100644 index 00000000..63ee9146 --- /dev/null +++ b/contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/CheckpointsUpgradeable.sol/CheckpointsUpgradeable.json @@ -0,0 +1,10 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "CheckpointsUpgradeable", + "sourceName": "@openzeppelin/contracts-upgradeable/utils/CheckpointsUpgradeable.sol", + "abi": [], + "bytecode": "0x602d6037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol/ContextUpgradeable.dbg.json b/contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol/ContextUpgradeable.dbg.json new file mode 100644 index 00000000..4058cb44 --- /dev/null +++ b/contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol/ContextUpgradeable.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" +} diff --git a/contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol/ContextUpgradeable.json b/contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol/ContextUpgradeable.json new file mode 100644 index 00000000..e154d607 --- /dev/null +++ b/contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol/ContextUpgradeable.json @@ -0,0 +1,24 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "ContextUpgradeable", + "sourceName": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint8", + "name": "version", + "type": "uint8" + } + ], + "name": "Initialized", + "type": "event" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol/CountersUpgradeable.dbg.json b/contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol/CountersUpgradeable.dbg.json new file mode 100644 index 00000000..4058cb44 --- /dev/null +++ b/contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol/CountersUpgradeable.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" +} diff --git a/contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol/CountersUpgradeable.json b/contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol/CountersUpgradeable.json new file mode 100644 index 00000000..309924e7 --- /dev/null +++ b/contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol/CountersUpgradeable.json @@ -0,0 +1,10 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "CountersUpgradeable", + "sourceName": "@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol", + "abi": [], + "bytecode": "0x602d6037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol/StorageSlotUpgradeable.dbg.json b/contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol/StorageSlotUpgradeable.dbg.json new file mode 100644 index 00000000..4058cb44 --- /dev/null +++ b/contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol/StorageSlotUpgradeable.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" +} diff --git a/contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol/StorageSlotUpgradeable.json b/contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol/StorageSlotUpgradeable.json new file mode 100644 index 00000000..902f6b70 --- /dev/null +++ b/contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol/StorageSlotUpgradeable.json @@ -0,0 +1,10 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "StorageSlotUpgradeable", + "sourceName": "@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol", + "abi": [], + "bytecode": "0x602d6037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol/ERC165Upgradeable.dbg.json b/contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol/ERC165Upgradeable.dbg.json new file mode 100644 index 00000000..b8d2318f --- /dev/null +++ b/contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol/ERC165Upgradeable.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" +} diff --git a/contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol/ERC165Upgradeable.json b/contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol/ERC165Upgradeable.json new file mode 100644 index 00000000..a3aa0c4b --- /dev/null +++ b/contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol/ERC165Upgradeable.json @@ -0,0 +1,43 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "ERC165Upgradeable", + "sourceName": "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint8", + "name": "version", + "type": "uint8" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol/IERC165Upgradeable.dbg.json b/contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol/IERC165Upgradeable.dbg.json new file mode 100644 index 00000000..b8d2318f --- /dev/null +++ b/contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol/IERC165Upgradeable.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" +} diff --git a/contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol/IERC165Upgradeable.json b/contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol/IERC165Upgradeable.json new file mode 100644 index 00000000..938eb23b --- /dev/null +++ b/contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol/IERC165Upgradeable.json @@ -0,0 +1,30 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IERC165Upgradeable", + "sourceName": "@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/math/MathUpgradeable.sol/MathUpgradeable.dbg.json b/contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/math/MathUpgradeable.sol/MathUpgradeable.dbg.json new file mode 100644 index 00000000..b8d2318f --- /dev/null +++ b/contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/math/MathUpgradeable.sol/MathUpgradeable.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" +} diff --git a/contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/math/MathUpgradeable.sol/MathUpgradeable.json b/contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/math/MathUpgradeable.sol/MathUpgradeable.json new file mode 100644 index 00000000..a127e6af --- /dev/null +++ b/contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/math/MathUpgradeable.sol/MathUpgradeable.json @@ -0,0 +1,10 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "MathUpgradeable", + "sourceName": "@openzeppelin/contracts-upgradeable/utils/math/MathUpgradeable.sol", + "abi": [], + "bytecode": "0x602d6037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol/SafeCastUpgradeable.dbg.json b/contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol/SafeCastUpgradeable.dbg.json new file mode 100644 index 00000000..b8d2318f --- /dev/null +++ b/contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol/SafeCastUpgradeable.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" +} diff --git a/contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol/SafeCastUpgradeable.json b/contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol/SafeCastUpgradeable.json new file mode 100644 index 00000000..9b317692 --- /dev/null +++ b/contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol/SafeCastUpgradeable.json @@ -0,0 +1,10 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "SafeCastUpgradeable", + "sourceName": "@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", + "abi": [], + "bytecode": "0x602d6037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/@openzeppelin/contracts/interfaces/IERC1967.sol/IERC1967.dbg.json b/contracts/artifacts/@openzeppelin/contracts/interfaces/IERC1967.sol/IERC1967.dbg.json new file mode 100644 index 00000000..4058cb44 --- /dev/null +++ b/contracts/artifacts/@openzeppelin/contracts/interfaces/IERC1967.sol/IERC1967.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" +} diff --git a/contracts/artifacts/@openzeppelin/contracts/interfaces/IERC1967.sol/IERC1967.json b/contracts/artifacts/@openzeppelin/contracts/interfaces/IERC1967.sol/IERC1967.json new file mode 100644 index 00000000..b37b2586 --- /dev/null +++ b/contracts/artifacts/@openzeppelin/contracts/interfaces/IERC1967.sol/IERC1967.json @@ -0,0 +1,56 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IERC1967", + "sourceName": "@openzeppelin/contracts/interfaces/IERC1967.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "previousAdmin", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "newAdmin", + "type": "address" + } + ], + "name": "AdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "beacon", + "type": "address" + } + ], + "name": "BeaconUpgraded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "Upgraded", + "type": "event" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/IERC1822Proxiable.dbg.json b/contracts/artifacts/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/IERC1822Proxiable.dbg.json new file mode 100644 index 00000000..4058cb44 --- /dev/null +++ b/contracts/artifacts/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/IERC1822Proxiable.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" +} diff --git a/contracts/artifacts/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/IERC1822Proxiable.json b/contracts/artifacts/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/IERC1822Proxiable.json new file mode 100644 index 00000000..e9576bf3 --- /dev/null +++ b/contracts/artifacts/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/IERC1822Proxiable.json @@ -0,0 +1,24 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IERC1822Proxiable", + "sourceName": "@openzeppelin/contracts/interfaces/draft-IERC1822.sol", + "abi": [ + { + "inputs": [], + "name": "proxiableUUID", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/@openzeppelin/contracts/proxy/Clones.sol/Clones.dbg.json b/contracts/artifacts/@openzeppelin/contracts/proxy/Clones.sol/Clones.dbg.json new file mode 100644 index 00000000..4058cb44 --- /dev/null +++ b/contracts/artifacts/@openzeppelin/contracts/proxy/Clones.sol/Clones.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" +} diff --git a/contracts/artifacts/@openzeppelin/contracts/proxy/Clones.sol/Clones.json b/contracts/artifacts/@openzeppelin/contracts/proxy/Clones.sol/Clones.json new file mode 100644 index 00000000..61b311f7 --- /dev/null +++ b/contracts/artifacts/@openzeppelin/contracts/proxy/Clones.sol/Clones.json @@ -0,0 +1,10 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "Clones", + "sourceName": "@openzeppelin/contracts/proxy/Clones.sol", + "abi": [], + "bytecode": "0x602d6037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol/ERC1967Proxy.dbg.json b/contracts/artifacts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol/ERC1967Proxy.dbg.json new file mode 100644 index 00000000..b8d2318f --- /dev/null +++ b/contracts/artifacts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol/ERC1967Proxy.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" +} diff --git a/contracts/artifacts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol/ERC1967Proxy.json b/contracts/artifacts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol/ERC1967Proxy.json new file mode 100644 index 00000000..057a281b --- /dev/null +++ b/contracts/artifacts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol/ERC1967Proxy.json @@ -0,0 +1,80 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "ERC1967Proxy", + "sourceName": "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_logic", + "type": "address" + }, + { + "internalType": "bytes", + "name": "_data", + "type": "bytes" + } + ], + "stateMutability": "payable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "previousAdmin", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "newAdmin", + "type": "address" + } + ], + "name": "AdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "beacon", + "type": "address" + } + ], + "name": "BeaconUpgraded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "Upgraded", + "type": "event" + }, + { + "stateMutability": "payable", + "type": "fallback" + }, + { + "stateMutability": "payable", + "type": "receive" + } + ], + "bytecode": "0x60806040526040516106fe3803806106fe83398101604081905261002291610319565b61002e82826000610035565b5050610436565b61003e8361006b565b60008251118061004b5750805b156100665761006483836100ab60201b6100291760201c565b505b505050565b610074816100d7565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606100d083836040518060600160405280602781526020016106d7602791396101a9565b9392505050565b6100ea8161022260201b6100551760201c565b6101515760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b806101887f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61023160201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6060600080856001600160a01b0316856040516101c691906103e7565b600060405180830381855af49150503d8060008114610201576040519150601f19603f3d011682016040523d82523d6000602084013e610206565b606091505b50909250905061021886838387610234565b9695505050505050565b6001600160a01b03163b151590565b90565b606083156102a357825160000361029c576001600160a01b0385163b61029c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610148565b50816102ad565b6102ad83836102b5565b949350505050565b8151156102c55781518083602001fd5b8060405162461bcd60e51b81526004016101489190610403565b634e487b7160e01b600052604160045260246000fd5b60005b838110156103105781810151838201526020016102f8565b50506000910152565b6000806040838503121561032c57600080fd5b82516001600160a01b038116811461034357600080fd5b60208401519092506001600160401b038082111561036057600080fd5b818501915085601f83011261037457600080fd5b815181811115610386576103866102df565b604051601f8201601f19908116603f011681019083821181831017156103ae576103ae6102df565b816040528281528860208487010111156103c757600080fd5b6103d88360208301602088016102f5565b80955050505050509250929050565b600082516103f98184602087016102f5565b9190910192915050565b60208152600082518060208401526104228160408501602087016102f5565b601f01601f19169190910160400192915050565b610292806104456000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b61009f565b565b606061004e838360405180606001604052806027815260200161025f602791396100c3565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e8080156100be573d6000f35b3d6000fd5b6060600080856001600160a01b0316856040516100e0919061020f565b600060405180830381855af49150503d806000811461011b576040519150601f19603f3d011682016040523d82523d6000602084013e610120565b606091505b50915091506101318683838761013b565b9695505050505050565b606083156101af5782516000036101a8576001600160a01b0385163b6101a85760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b50816101b9565b6101b983836101c1565b949350505050565b8151156101d15781518083602001fd5b8060405162461bcd60e51b815260040161019f919061022b565b60005b838110156102065781810151838201526020016101ee565b50506000910152565b600082516102218184602087016101eb565b9190910192915050565b602081526000825180602084015261024a8160408501602087016101eb565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564", + "deployedBytecode": "0x60806040523661001357610011610017565b005b6100115b610027610022610067565b61009f565b565b606061004e838360405180606001604052806027815260200161025f602791396100c3565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e8080156100be573d6000f35b3d6000fd5b6060600080856001600160a01b0316856040516100e0919061020f565b600060405180830381855af49150503d806000811461011b576040519150601f19603f3d011682016040523d82523d6000602084013e610120565b606091505b50915091506101318683838761013b565b9695505050505050565b606083156101af5782516000036101a8576001600160a01b0385163b6101a85760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b50816101b9565b6101b983836101c1565b949350505050565b8151156101d15781518083602001fd5b8060405162461bcd60e51b815260040161019f919061022b565b60005b838110156102065781810151838201526020016101ee565b50506000910152565b600082516102218184602087016101eb565b9190910192915050565b602081526000825180602084015261024a8160408501602087016101eb565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol/ERC1967Upgrade.dbg.json b/contracts/artifacts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol/ERC1967Upgrade.dbg.json new file mode 100644 index 00000000..b8d2318f --- /dev/null +++ b/contracts/artifacts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol/ERC1967Upgrade.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" +} diff --git a/contracts/artifacts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol/ERC1967Upgrade.json b/contracts/artifacts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol/ERC1967Upgrade.json new file mode 100644 index 00000000..11a1efea --- /dev/null +++ b/contracts/artifacts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol/ERC1967Upgrade.json @@ -0,0 +1,56 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "ERC1967Upgrade", + "sourceName": "@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "previousAdmin", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "newAdmin", + "type": "address" + } + ], + "name": "AdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "beacon", + "type": "address" + } + ], + "name": "BeaconUpgraded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "Upgraded", + "type": "event" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/@openzeppelin/contracts/proxy/Proxy.sol/Proxy.dbg.json b/contracts/artifacts/@openzeppelin/contracts/proxy/Proxy.sol/Proxy.dbg.json new file mode 100644 index 00000000..4058cb44 --- /dev/null +++ b/contracts/artifacts/@openzeppelin/contracts/proxy/Proxy.sol/Proxy.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" +} diff --git a/contracts/artifacts/@openzeppelin/contracts/proxy/Proxy.sol/Proxy.json b/contracts/artifacts/@openzeppelin/contracts/proxy/Proxy.sol/Proxy.json new file mode 100644 index 00000000..89b7ade9 --- /dev/null +++ b/contracts/artifacts/@openzeppelin/contracts/proxy/Proxy.sol/Proxy.json @@ -0,0 +1,19 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "Proxy", + "sourceName": "@openzeppelin/contracts/proxy/Proxy.sol", + "abi": [ + { + "stateMutability": "payable", + "type": "fallback" + }, + { + "stateMutability": "payable", + "type": "receive" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/@openzeppelin/contracts/proxy/beacon/IBeacon.sol/IBeacon.dbg.json b/contracts/artifacts/@openzeppelin/contracts/proxy/beacon/IBeacon.sol/IBeacon.dbg.json new file mode 100644 index 00000000..b8d2318f --- /dev/null +++ b/contracts/artifacts/@openzeppelin/contracts/proxy/beacon/IBeacon.sol/IBeacon.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" +} diff --git a/contracts/artifacts/@openzeppelin/contracts/proxy/beacon/IBeacon.sol/IBeacon.json b/contracts/artifacts/@openzeppelin/contracts/proxy/beacon/IBeacon.sol/IBeacon.json new file mode 100644 index 00000000..9ff0f137 --- /dev/null +++ b/contracts/artifacts/@openzeppelin/contracts/proxy/beacon/IBeacon.sol/IBeacon.json @@ -0,0 +1,24 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IBeacon", + "sourceName": "@openzeppelin/contracts/proxy/beacon/IBeacon.sol", + "abi": [ + { + "inputs": [], + "name": "implementation", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/@openzeppelin/contracts/token/ERC1155/ERC1155.sol/ERC1155.dbg.json b/contracts/artifacts/@openzeppelin/contracts/token/ERC1155/ERC1155.sol/ERC1155.dbg.json new file mode 100644 index 00000000..b8d2318f --- /dev/null +++ b/contracts/artifacts/@openzeppelin/contracts/token/ERC1155/ERC1155.sol/ERC1155.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" +} diff --git a/contracts/artifacts/@openzeppelin/contracts/token/ERC1155/ERC1155.sol/ERC1155.json b/contracts/artifacts/@openzeppelin/contracts/token/ERC1155/ERC1155.sol/ERC1155.json new file mode 100644 index 00000000..22aceccd --- /dev/null +++ b/contracts/artifacts/@openzeppelin/contracts/token/ERC1155/ERC1155.sol/ERC1155.json @@ -0,0 +1,334 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "ERC1155", + "sourceName": "@openzeppelin/contracts/token/ERC1155/ERC1155.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "string", + "name": "uri_", + "type": "string" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "ApprovalForAll", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "values", + "type": "uint256[]" + } + ], + "name": "TransferBatch", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "TransferSingle", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "string", + "name": "value", + "type": "string" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "name": "URI", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "accounts", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + } + ], + "name": "balanceOfBatch", + "outputs": [ + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "isApprovedForAll", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "safeBatchTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "setApprovalForAll", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "uri", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x60806040523480156200001157600080fd5b50604051620017463803806200174683398101604081905262000034916200006e565b6200003f8162000046565b506200029e565b6002620000548282620001d2565b5050565b634e487b7160e01b600052604160045260246000fd5b600060208083850312156200008257600080fd5b82516001600160401b03808211156200009a57600080fd5b818501915085601f830112620000af57600080fd5b815181811115620000c457620000c462000058565b604051601f8201601f19908116603f01168101908382118183101715620000ef57620000ef62000058565b8160405282815288868487010111156200010857600080fd5b600093505b828410156200012c57848401860151818501870152928501926200010d565b600086848301015280965050505050505092915050565b600181811c908216806200015857607f821691505b6020821081036200017957634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620001cd57600081815260208120601f850160051c81016020861015620001a85750805b601f850160051c820191505b81811015620001c957828155600101620001b4565b5050505b505050565b81516001600160401b03811115620001ee57620001ee62000058565b6200020681620001ff845462000143565b846200017f565b602080601f8311600181146200023e5760008415620002255750858301515b600019600386901b1c1916600185901b178555620001c9565b600085815260208120601f198616915b828110156200026f578886015182559484019460019091019084016200024e565b50858210156200028e5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61149880620002ae6000396000f3fe608060405234801561001057600080fd5b50600436106100875760003560e01c80634e1273f41161005b5780634e1273f41461010a578063a22cb4651461012a578063e985e9c51461013d578063f242432a1461017957600080fd5b8062fdd58e1461008c57806301ffc9a7146100b25780630e89341c146100d55780632eb2c2d6146100f5575b600080fd5b61009f61009a366004610dab565b61018c565b6040519081526020015b60405180910390f35b6100c56100c0366004610dee565b610238565b60405190151581526020016100a9565b6100e86100e3366004610e12565b610288565b6040516100a99190610e71565b610108610103366004610fd0565b61031c565b005b61011d61011836600461107a565b6103af565b6040516100a99190611180565b610108610138366004611193565b6104ed565b6100c561014b3660046111cf565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205460ff1690565b610108610187366004611202565b6104fc565b60006001600160a01b03831661020f5760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201527f616c6964206f776e65720000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b506000818152602081815260408083206001600160a01b03861684529091529020545b92915050565b60006001600160e01b03198216636cdb3d1360e11b148061026957506001600160e01b031982166303a24d0760e21b145b8061023257506301ffc9a760e01b6001600160e01b0319831614610232565b60606002805461029790611267565b80601f01602080910402602001604051908101604052809291908181526020018280546102c390611267565b80156103105780601f106102e557610100808354040283529160200191610310565b820191906000526020600020905b8154815290600101906020018083116102f357829003601f168201915b50505050509050919050565b6001600160a01b0385163314806103385750610338853361014b565b61039b5760405162461bcd60e51b815260206004820152602e60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201526d195c881bdc88185c1c1c9bdd995960921b6064820152608401610206565b6103a88585858585610588565b5050505050565b606081518351146104285760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e67746860448201527f206d69736d6174636800000000000000000000000000000000000000000000006064820152608401610206565b6000835167ffffffffffffffff81111561044457610444610e84565b60405190808252806020026020018201604052801561046d578160200160208202803683370190505b50905060005b84518110156104e5576104b8858281518110610491576104916112a1565b60200260200101518583815181106104ab576104ab6112a1565b602002602001015161018c565b8282815181106104ca576104ca6112a1565b60209081029190910101526104de816112cd565b9050610473565b509392505050565b6104f83383836107fb565b5050565b6001600160a01b0385163314806105185750610518853361014b565b61057b5760405162461bcd60e51b815260206004820152602e60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201526d195c881bdc88185c1c1c9bdd995960921b6064820152608401610206565b6103a885858585856108ef565b81518351146105ff5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060448201527f6d69736d617463680000000000000000000000000000000000000000000000006064820152608401610206565b6001600160a01b0384166106635760405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b6064820152608401610206565b3360005b845181101561078d576000858281518110610684576106846112a1565b6020026020010151905060008583815181106106a2576106a26112a1565b602090810291909101810151600084815280835260408082206001600160a01b038e1683529093529190912054909150818110156107355760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201526939103a3930b739b332b960b11b6064820152608401610206565b6000838152602081815260408083206001600160a01b038e8116855292528083208585039055908b168252812080548492906107729084906112e6565b9250508190555050505080610786906112cd565b9050610667565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb87876040516107dd9291906112f9565b60405180910390a46107f3818787878787610a9a565b505050505050565b816001600160a01b0316836001600160a01b0316036108825760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c2073746174757360448201527f20666f722073656c6600000000000000000000000000000000000000000000006064820152608401610206565b6001600160a01b03838116600081815260016020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0384166109535760405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b6064820152608401610206565b33600061095f85610c48565b9050600061096c85610c48565b90506000868152602081815260408083206001600160a01b038c168452909152902054858110156109f25760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201526939103a3930b739b332b960b11b6064820152608401610206565b6000878152602081815260408083206001600160a01b038d8116855292528083208985039055908a16825281208054889290610a2f9084906112e6565b909155505060408051888152602081018890526001600160a01b03808b16928c821692918816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4610a8f848a8a8a8a8a610c93565b505050505050505050565b6001600160a01b0384163b156107f35760405163bc197c8160e01b81526001600160a01b0385169063bc197c8190610ade9089908990889088908890600401611327565b6020604051808303816000875af1925050508015610b19575060408051601f3d908101601f19168201909252610b1691810190611385565b60015b610bce57610b256113a2565b806308c379a003610b5e5750610b396113be565b80610b445750610b60565b8060405162461bcd60e51b81526004016102069190610e71565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e2d4552433131353560448201527f526563656976657220696d706c656d656e7465720000000000000000000000006064820152608401610206565b6001600160e01b0319811663bc197c8160e01b14610c3f5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a656374656044820152676420746f6b656e7360c01b6064820152608401610206565b50505050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110610c8257610c826112a1565b602090810291909101015292915050565b6001600160a01b0384163b156107f35760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e6190610cd79089908990889088908890600401611448565b6020604051808303816000875af1925050508015610d12575060408051601f3d908101601f19168201909252610d0f91810190611385565b60015b610d1e57610b256113a2565b6001600160e01b0319811663f23a6e6160e01b14610c3f5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a656374656044820152676420746f6b656e7360c01b6064820152608401610206565b80356001600160a01b0381168114610da657600080fd5b919050565b60008060408385031215610dbe57600080fd5b610dc783610d8f565b946020939093013593505050565b6001600160e01b031981168114610deb57600080fd5b50565b600060208284031215610e0057600080fd5b8135610e0b81610dd5565b9392505050565b600060208284031215610e2457600080fd5b5035919050565b6000815180845260005b81811015610e5157602081850181015186830182015201610e35565b506000602082860101526020601f19601f83011685010191505092915050565b602081526000610e0b6020830184610e2b565b634e487b7160e01b600052604160045260246000fd5b601f8201601f1916810167ffffffffffffffff81118282101715610ec057610ec0610e84565b6040525050565b600067ffffffffffffffff821115610ee157610ee1610e84565b5060051b60200190565b600082601f830112610efc57600080fd5b81356020610f0982610ec7565b604051610f168282610e9a565b83815260059390931b8501820192828101915086841115610f3657600080fd5b8286015b84811015610f515780358352918301918301610f3a565b509695505050505050565b600082601f830112610f6d57600080fd5b813567ffffffffffffffff811115610f8757610f87610e84565b604051610f9e601f8301601f191660200182610e9a565b818152846020838601011115610fb357600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a08688031215610fe857600080fd5b610ff186610d8f565b9450610fff60208701610d8f565b9350604086013567ffffffffffffffff8082111561101c57600080fd5b61102889838a01610eeb565b9450606088013591508082111561103e57600080fd5b61104a89838a01610eeb565b9350608088013591508082111561106057600080fd5b5061106d88828901610f5c565b9150509295509295909350565b6000806040838503121561108d57600080fd5b823567ffffffffffffffff808211156110a557600080fd5b818501915085601f8301126110b957600080fd5b813560206110c682610ec7565b6040516110d38282610e9a565b83815260059390931b85018201928281019150898411156110f357600080fd5b948201945b838610156111185761110986610d8f565b825294820194908201906110f8565b9650508601359250508082111561112e57600080fd5b5061113b85828601610eeb565b9150509250929050565b600081518084526020808501945080840160005b8381101561117557815187529582019590820190600101611159565b509495945050505050565b602081526000610e0b6020830184611145565b600080604083850312156111a657600080fd5b6111af83610d8f565b9150602083013580151581146111c457600080fd5b809150509250929050565b600080604083850312156111e257600080fd5b6111eb83610d8f565b91506111f960208401610d8f565b90509250929050565b600080600080600060a0868803121561121a57600080fd5b61122386610d8f565b945061123160208701610d8f565b93506040860135925060608601359150608086013567ffffffffffffffff81111561125b57600080fd5b61106d88828901610f5c565b600181811c9082168061127b57607f821691505b60208210810361129b57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016112df576112df6112b7565b5060010190565b80820180821115610232576102326112b7565b60408152600061130c6040830185611145565b828103602084015261131e8185611145565b95945050505050565b60006001600160a01b03808816835280871660208401525060a0604083015261135360a0830186611145565b82810360608401526113658186611145565b905082810360808401526113798185610e2b565b98975050505050505050565b60006020828403121561139757600080fd5b8151610e0b81610dd5565b600060033d11156113bb5760046000803e5060005160e01c5b90565b600060443d10156113cc5790565b6040516003193d81016004833e81513d67ffffffffffffffff81602484011181841117156113fc57505050505090565b82850191508151818111156114145750505050505090565b843d870101602082850101111561142e5750505050505090565b61143d60208286010187610e9a565b509095945050505050565b60006001600160a01b03808816835280871660208401525084604083015283606083015260a0608083015261148060a0830184610e2b565b97965050505050505056fea164736f6c6343000811000a", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100875760003560e01c80634e1273f41161005b5780634e1273f41461010a578063a22cb4651461012a578063e985e9c51461013d578063f242432a1461017957600080fd5b8062fdd58e1461008c57806301ffc9a7146100b25780630e89341c146100d55780632eb2c2d6146100f5575b600080fd5b61009f61009a366004610dab565b61018c565b6040519081526020015b60405180910390f35b6100c56100c0366004610dee565b610238565b60405190151581526020016100a9565b6100e86100e3366004610e12565b610288565b6040516100a99190610e71565b610108610103366004610fd0565b61031c565b005b61011d61011836600461107a565b6103af565b6040516100a99190611180565b610108610138366004611193565b6104ed565b6100c561014b3660046111cf565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205460ff1690565b610108610187366004611202565b6104fc565b60006001600160a01b03831661020f5760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201527f616c6964206f776e65720000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b506000818152602081815260408083206001600160a01b03861684529091529020545b92915050565b60006001600160e01b03198216636cdb3d1360e11b148061026957506001600160e01b031982166303a24d0760e21b145b8061023257506301ffc9a760e01b6001600160e01b0319831614610232565b60606002805461029790611267565b80601f01602080910402602001604051908101604052809291908181526020018280546102c390611267565b80156103105780601f106102e557610100808354040283529160200191610310565b820191906000526020600020905b8154815290600101906020018083116102f357829003601f168201915b50505050509050919050565b6001600160a01b0385163314806103385750610338853361014b565b61039b5760405162461bcd60e51b815260206004820152602e60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201526d195c881bdc88185c1c1c9bdd995960921b6064820152608401610206565b6103a88585858585610588565b5050505050565b606081518351146104285760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e67746860448201527f206d69736d6174636800000000000000000000000000000000000000000000006064820152608401610206565b6000835167ffffffffffffffff81111561044457610444610e84565b60405190808252806020026020018201604052801561046d578160200160208202803683370190505b50905060005b84518110156104e5576104b8858281518110610491576104916112a1565b60200260200101518583815181106104ab576104ab6112a1565b602002602001015161018c565b8282815181106104ca576104ca6112a1565b60209081029190910101526104de816112cd565b9050610473565b509392505050565b6104f83383836107fb565b5050565b6001600160a01b0385163314806105185750610518853361014b565b61057b5760405162461bcd60e51b815260206004820152602e60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201526d195c881bdc88185c1c1c9bdd995960921b6064820152608401610206565b6103a885858585856108ef565b81518351146105ff5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060448201527f6d69736d617463680000000000000000000000000000000000000000000000006064820152608401610206565b6001600160a01b0384166106635760405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b6064820152608401610206565b3360005b845181101561078d576000858281518110610684576106846112a1565b6020026020010151905060008583815181106106a2576106a26112a1565b602090810291909101810151600084815280835260408082206001600160a01b038e1683529093529190912054909150818110156107355760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201526939103a3930b739b332b960b11b6064820152608401610206565b6000838152602081815260408083206001600160a01b038e8116855292528083208585039055908b168252812080548492906107729084906112e6565b9250508190555050505080610786906112cd565b9050610667565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb87876040516107dd9291906112f9565b60405180910390a46107f3818787878787610a9a565b505050505050565b816001600160a01b0316836001600160a01b0316036108825760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c2073746174757360448201527f20666f722073656c6600000000000000000000000000000000000000000000006064820152608401610206565b6001600160a01b03838116600081815260016020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0384166109535760405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b6064820152608401610206565b33600061095f85610c48565b9050600061096c85610c48565b90506000868152602081815260408083206001600160a01b038c168452909152902054858110156109f25760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201526939103a3930b739b332b960b11b6064820152608401610206565b6000878152602081815260408083206001600160a01b038d8116855292528083208985039055908a16825281208054889290610a2f9084906112e6565b909155505060408051888152602081018890526001600160a01b03808b16928c821692918816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4610a8f848a8a8a8a8a610c93565b505050505050505050565b6001600160a01b0384163b156107f35760405163bc197c8160e01b81526001600160a01b0385169063bc197c8190610ade9089908990889088908890600401611327565b6020604051808303816000875af1925050508015610b19575060408051601f3d908101601f19168201909252610b1691810190611385565b60015b610bce57610b256113a2565b806308c379a003610b5e5750610b396113be565b80610b445750610b60565b8060405162461bcd60e51b81526004016102069190610e71565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e2d4552433131353560448201527f526563656976657220696d706c656d656e7465720000000000000000000000006064820152608401610206565b6001600160e01b0319811663bc197c8160e01b14610c3f5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a656374656044820152676420746f6b656e7360c01b6064820152608401610206565b50505050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110610c8257610c826112a1565b602090810291909101015292915050565b6001600160a01b0384163b156107f35760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e6190610cd79089908990889088908890600401611448565b6020604051808303816000875af1925050508015610d12575060408051601f3d908101601f19168201909252610d0f91810190611385565b60015b610d1e57610b256113a2565b6001600160e01b0319811663f23a6e6160e01b14610c3f5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a656374656044820152676420746f6b656e7360c01b6064820152608401610206565b80356001600160a01b0381168114610da657600080fd5b919050565b60008060408385031215610dbe57600080fd5b610dc783610d8f565b946020939093013593505050565b6001600160e01b031981168114610deb57600080fd5b50565b600060208284031215610e0057600080fd5b8135610e0b81610dd5565b9392505050565b600060208284031215610e2457600080fd5b5035919050565b6000815180845260005b81811015610e5157602081850181015186830182015201610e35565b506000602082860101526020601f19601f83011685010191505092915050565b602081526000610e0b6020830184610e2b565b634e487b7160e01b600052604160045260246000fd5b601f8201601f1916810167ffffffffffffffff81118282101715610ec057610ec0610e84565b6040525050565b600067ffffffffffffffff821115610ee157610ee1610e84565b5060051b60200190565b600082601f830112610efc57600080fd5b81356020610f0982610ec7565b604051610f168282610e9a565b83815260059390931b8501820192828101915086841115610f3657600080fd5b8286015b84811015610f515780358352918301918301610f3a565b509695505050505050565b600082601f830112610f6d57600080fd5b813567ffffffffffffffff811115610f8757610f87610e84565b604051610f9e601f8301601f191660200182610e9a565b818152846020838601011115610fb357600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a08688031215610fe857600080fd5b610ff186610d8f565b9450610fff60208701610d8f565b9350604086013567ffffffffffffffff8082111561101c57600080fd5b61102889838a01610eeb565b9450606088013591508082111561103e57600080fd5b61104a89838a01610eeb565b9350608088013591508082111561106057600080fd5b5061106d88828901610f5c565b9150509295509295909350565b6000806040838503121561108d57600080fd5b823567ffffffffffffffff808211156110a557600080fd5b818501915085601f8301126110b957600080fd5b813560206110c682610ec7565b6040516110d38282610e9a565b83815260059390931b85018201928281019150898411156110f357600080fd5b948201945b838610156111185761110986610d8f565b825294820194908201906110f8565b9650508601359250508082111561112e57600080fd5b5061113b85828601610eeb565b9150509250929050565b600081518084526020808501945080840160005b8381101561117557815187529582019590820190600101611159565b509495945050505050565b602081526000610e0b6020830184611145565b600080604083850312156111a657600080fd5b6111af83610d8f565b9150602083013580151581146111c457600080fd5b809150509250929050565b600080604083850312156111e257600080fd5b6111eb83610d8f565b91506111f960208401610d8f565b90509250929050565b600080600080600060a0868803121561121a57600080fd5b61122386610d8f565b945061123160208701610d8f565b93506040860135925060608601359150608086013567ffffffffffffffff81111561125b57600080fd5b61106d88828901610f5c565b600181811c9082168061127b57607f821691505b60208210810361129b57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016112df576112df6112b7565b5060010190565b80820180821115610232576102326112b7565b60408152600061130c6040830185611145565b828103602084015261131e8185611145565b95945050505050565b60006001600160a01b03808816835280871660208401525060a0604083015261135360a0830186611145565b82810360608401526113658186611145565b905082810360808401526113798185610e2b565b98975050505050505050565b60006020828403121561139757600080fd5b8151610e0b81610dd5565b600060033d11156113bb5760046000803e5060005160e01c5b90565b600060443d10156113cc5790565b6040516003193d81016004833e81513d67ffffffffffffffff81602484011181841117156113fc57505050505090565b82850191508151818111156114145750505050505090565b843d870101602082850101111561142e5750505050505090565b61143d60208286010187610e9a565b509095945050505050565b60006001600160a01b03808816835280871660208401525084604083015283606083015260a0608083015261148060a0830184610e2b565b97965050505050505056fea164736f6c6343000811000a", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/@openzeppelin/contracts/token/ERC1155/IERC1155.sol/IERC1155.dbg.json b/contracts/artifacts/@openzeppelin/contracts/token/ERC1155/IERC1155.sol/IERC1155.dbg.json new file mode 100644 index 00000000..b8d2318f --- /dev/null +++ b/contracts/artifacts/@openzeppelin/contracts/token/ERC1155/IERC1155.sol/IERC1155.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" +} diff --git a/contracts/artifacts/@openzeppelin/contracts/token/ERC1155/IERC1155.sol/IERC1155.json b/contracts/artifacts/@openzeppelin/contracts/token/ERC1155/IERC1155.sol/IERC1155.json new file mode 100644 index 00000000..ab05ae0e --- /dev/null +++ b/contracts/artifacts/@openzeppelin/contracts/token/ERC1155/IERC1155.sol/IERC1155.json @@ -0,0 +1,304 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IERC1155", + "sourceName": "@openzeppelin/contracts/token/ERC1155/IERC1155.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "ApprovalForAll", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "values", + "type": "uint256[]" + } + ], + "name": "TransferBatch", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "TransferSingle", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "string", + "name": "value", + "type": "string" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "name": "URI", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "accounts", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + } + ], + "name": "balanceOfBatch", + "outputs": [ + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "isApprovedForAll", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "safeBatchTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "setApprovalForAll", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol/IERC1155Receiver.dbg.json b/contracts/artifacts/@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol/IERC1155Receiver.dbg.json new file mode 100644 index 00000000..b8d2318f --- /dev/null +++ b/contracts/artifacts/@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol/IERC1155Receiver.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" +} diff --git a/contracts/artifacts/@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol/IERC1155Receiver.json b/contracts/artifacts/@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol/IERC1155Receiver.json new file mode 100644 index 00000000..55daf1e1 --- /dev/null +++ b/contracts/artifacts/@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol/IERC1155Receiver.json @@ -0,0 +1,108 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IERC1155Receiver", + "sourceName": "@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "values", + "type": "uint256[]" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "onERC1155BatchReceived", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "onERC1155Received", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/@openzeppelin/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol/IERC1155MetadataURI.dbg.json b/contracts/artifacts/@openzeppelin/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol/IERC1155MetadataURI.dbg.json new file mode 100644 index 00000000..c8024a50 --- /dev/null +++ b/contracts/artifacts/@openzeppelin/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol/IERC1155MetadataURI.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" +} diff --git a/contracts/artifacts/@openzeppelin/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol/IERC1155MetadataURI.json b/contracts/artifacts/@openzeppelin/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol/IERC1155MetadataURI.json new file mode 100644 index 00000000..315b0f85 --- /dev/null +++ b/contracts/artifacts/@openzeppelin/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol/IERC1155MetadataURI.json @@ -0,0 +1,323 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IERC1155MetadataURI", + "sourceName": "@openzeppelin/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "ApprovalForAll", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "values", + "type": "uint256[]" + } + ], + "name": "TransferBatch", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "TransferSingle", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "string", + "name": "value", + "type": "string" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "name": "URI", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "accounts", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + } + ], + "name": "balanceOfBatch", + "outputs": [ + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "isApprovedForAll", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "safeBatchTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "setApprovalForAll", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "name": "uri", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/@openzeppelin/contracts/token/ERC20/ERC20.sol/ERC20.dbg.json b/contracts/artifacts/@openzeppelin/contracts/token/ERC20/ERC20.sol/ERC20.dbg.json new file mode 100644 index 00000000..b8d2318f --- /dev/null +++ b/contracts/artifacts/@openzeppelin/contracts/token/ERC20/ERC20.sol/ERC20.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" +} diff --git a/contracts/artifacts/@openzeppelin/contracts/token/ERC20/ERC20.sol/ERC20.json b/contracts/artifacts/@openzeppelin/contracts/token/ERC20/ERC20.sol/ERC20.json new file mode 100644 index 00000000..a784675d --- /dev/null +++ b/contracts/artifacts/@openzeppelin/contracts/token/ERC20/ERC20.sol/ERC20.json @@ -0,0 +1,297 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "ERC20", + "sourceName": "@openzeppelin/contracts/token/ERC20/ERC20.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "string", + "name": "name_", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol_", + "type": "string" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "subtractedValue", + "type": "uint256" + } + ], + "name": "decreaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "addedValue", + "type": "uint256" + } + ], + "name": "increaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x60806040523480156200001157600080fd5b5060405162000bcb38038062000bcb83398101604081905262000034916200011f565b600362000042838262000218565b50600462000051828262000218565b505050620002e4565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200008257600080fd5b81516001600160401b03808211156200009f576200009f6200005a565b604051601f8301601f19908116603f01168101908282118183101715620000ca57620000ca6200005a565b81604052838152602092508683858801011115620000e757600080fd5b600091505b838210156200010b5785820183015181830184015290820190620000ec565b600093810190920192909252949350505050565b600080604083850312156200013357600080fd5b82516001600160401b03808211156200014b57600080fd5b620001598683870162000070565b935060208501519150808211156200017057600080fd5b506200017f8582860162000070565b9150509250929050565b600181811c908216806200019e57607f821691505b602082108103620001bf57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200021357600081815260208120601f850160051c81016020861015620001ee5750805b601f850160051c820191505b818110156200020f57828155600101620001fa565b5050505b505050565b81516001600160401b038111156200023457620002346200005a565b6200024c8162000245845462000189565b84620001c5565b602080601f8311600181146200028457600084156200026b5750858301515b600019600386901b1c1916600185901b1785556200020f565b600085815260208120601f198616915b82811015620002b55788860151825594840194600190910190840162000294565b5085821015620002d45787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6108d780620002f46000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c80633950935111610081578063a457c2d71161005b578063a457c2d714610187578063a9059cbb1461019a578063dd62ed3e146101ad57600080fd5b8063395093511461014357806370a082311461015657806395d89b411461017f57600080fd5b806318160ddd116100b257806318160ddd1461010f57806323b872dd14610121578063313ce5671461013457600080fd5b806306fdde03146100ce578063095ea7b3146100ec575b600080fd5b6100d66101e6565b6040516100e3919061074a565b60405180910390f35b6100ff6100fa3660046107b4565b610278565b60405190151581526020016100e3565b6002545b6040519081526020016100e3565b6100ff61012f3660046107de565b610292565b604051601281526020016100e3565b6100ff6101513660046107b4565b6102b6565b61011361016436600461081a565b6001600160a01b031660009081526020819052604090205490565b6100d66102f5565b6100ff6101953660046107b4565b610304565b6100ff6101a83660046107b4565b6103b3565b6101136101bb36600461083c565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f59061086f565b80601f01602080910402602001604051908101604052809291908181526020018280546102219061086f565b801561026e5780601f106102435761010080835404028352916020019161026e565b820191906000526020600020905b81548152906001019060200180831161025157829003601f168201915b5050505050905090565b6000336102868185856103c1565b60019150505b92915050565b6000336102a08582856104e5565b6102ab858585610577565b506001949350505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490919061028690829086906102f09087906108a9565b6103c1565b6060600480546101f59061086f565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909190838110156103a65760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6102ab82868684036103c1565b600033610286818585610577565b6001600160a01b0383166104235760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161039d565b6001600160a01b0382166104845760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161039d565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03838116600090815260016020908152604080832093861683529290522054600019811461057157818110156105645760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161039d565b61057184848484036103c1565b50505050565b6001600160a01b0383166105f35760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f6472657373000000000000000000000000000000000000000000000000000000606482015260840161039d565b6001600160a01b0382166106555760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161039d565b6001600160a01b038316600090815260208190526040902054818110156106e45760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e63650000000000000000000000000000000000000000000000000000606482015260840161039d565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610571565b600060208083528351808285015260005b818110156107775785810183015185820160400152820161075b565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146107af57600080fd5b919050565b600080604083850312156107c757600080fd5b6107d083610798565b946020939093013593505050565b6000806000606084860312156107f357600080fd5b6107fc84610798565b925061080a60208501610798565b9150604084013590509250925092565b60006020828403121561082c57600080fd5b61083582610798565b9392505050565b6000806040838503121561084f57600080fd5b61085883610798565b915061086660208401610798565b90509250929050565b600181811c9082168061088357607f821691505b6020821081036108a357634e487b7160e01b600052602260045260246000fd5b50919050565b8082018082111561028c57634e487b7160e01b600052601160045260246000fdfea164736f6c6343000811000a", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100c95760003560e01c80633950935111610081578063a457c2d71161005b578063a457c2d714610187578063a9059cbb1461019a578063dd62ed3e146101ad57600080fd5b8063395093511461014357806370a082311461015657806395d89b411461017f57600080fd5b806318160ddd116100b257806318160ddd1461010f57806323b872dd14610121578063313ce5671461013457600080fd5b806306fdde03146100ce578063095ea7b3146100ec575b600080fd5b6100d66101e6565b6040516100e3919061074a565b60405180910390f35b6100ff6100fa3660046107b4565b610278565b60405190151581526020016100e3565b6002545b6040519081526020016100e3565b6100ff61012f3660046107de565b610292565b604051601281526020016100e3565b6100ff6101513660046107b4565b6102b6565b61011361016436600461081a565b6001600160a01b031660009081526020819052604090205490565b6100d66102f5565b6100ff6101953660046107b4565b610304565b6100ff6101a83660046107b4565b6103b3565b6101136101bb36600461083c565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f59061086f565b80601f01602080910402602001604051908101604052809291908181526020018280546102219061086f565b801561026e5780601f106102435761010080835404028352916020019161026e565b820191906000526020600020905b81548152906001019060200180831161025157829003601f168201915b5050505050905090565b6000336102868185856103c1565b60019150505b92915050565b6000336102a08582856104e5565b6102ab858585610577565b506001949350505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490919061028690829086906102f09087906108a9565b6103c1565b6060600480546101f59061086f565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909190838110156103a65760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6102ab82868684036103c1565b600033610286818585610577565b6001600160a01b0383166104235760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161039d565b6001600160a01b0382166104845760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161039d565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03838116600090815260016020908152604080832093861683529290522054600019811461057157818110156105645760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161039d565b61057184848484036103c1565b50505050565b6001600160a01b0383166105f35760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f6472657373000000000000000000000000000000000000000000000000000000606482015260840161039d565b6001600160a01b0382166106555760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161039d565b6001600160a01b038316600090815260208190526040902054818110156106e45760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e63650000000000000000000000000000000000000000000000000000606482015260840161039d565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610571565b600060208083528351808285015260005b818110156107775785810183015185820160400152820161075b565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146107af57600080fd5b919050565b600080604083850312156107c757600080fd5b6107d083610798565b946020939093013593505050565b6000806000606084860312156107f357600080fd5b6107fc84610798565b925061080a60208501610798565b9150604084013590509250925092565b60006020828403121561082c57600080fd5b61083582610798565b9392505050565b6000806040838503121561084f57600080fd5b61085883610798565b915061086660208401610798565b90509250929050565b600181811c9082168061088357607f821691505b6020821081036108a357634e487b7160e01b600052602260045260246000fd5b50919050565b8082018082111561028c57634e487b7160e01b600052601160045260246000fdfea164736f6c6343000811000a", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/@openzeppelin/contracts/token/ERC20/IERC20.sol/IERC20.dbg.json b/contracts/artifacts/@openzeppelin/contracts/token/ERC20/IERC20.sol/IERC20.dbg.json new file mode 100644 index 00000000..b8d2318f --- /dev/null +++ b/contracts/artifacts/@openzeppelin/contracts/token/ERC20/IERC20.sol/IERC20.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" +} diff --git a/contracts/artifacts/@openzeppelin/contracts/token/ERC20/IERC20.sol/IERC20.json b/contracts/artifacts/@openzeppelin/contracts/token/ERC20/IERC20.sol/IERC20.json new file mode 100644 index 00000000..76b073c0 --- /dev/null +++ b/contracts/artifacts/@openzeppelin/contracts/token/ERC20/IERC20.sol/IERC20.json @@ -0,0 +1,194 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IERC20", + "sourceName": "@openzeppelin/contracts/token/ERC20/IERC20.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol/IERC20Metadata.dbg.json b/contracts/artifacts/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol/IERC20Metadata.dbg.json new file mode 100644 index 00000000..c8024a50 --- /dev/null +++ b/contracts/artifacts/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol/IERC20Metadata.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" +} diff --git a/contracts/artifacts/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol/IERC20Metadata.json b/contracts/artifacts/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol/IERC20Metadata.json new file mode 100644 index 00000000..0436b925 --- /dev/null +++ b/contracts/artifacts/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol/IERC20Metadata.json @@ -0,0 +1,233 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IERC20Metadata", + "sourceName": "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/@openzeppelin/contracts/token/ERC721/ERC721.sol/ERC721.dbg.json b/contracts/artifacts/@openzeppelin/contracts/token/ERC721/ERC721.sol/ERC721.dbg.json new file mode 100644 index 00000000..b8d2318f --- /dev/null +++ b/contracts/artifacts/@openzeppelin/contracts/token/ERC721/ERC721.sol/ERC721.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" +} diff --git a/contracts/artifacts/@openzeppelin/contracts/token/ERC721/ERC721.sol/ERC721.json b/contracts/artifacts/@openzeppelin/contracts/token/ERC721/ERC721.sol/ERC721.json new file mode 100644 index 00000000..62ddd69d --- /dev/null +++ b/contracts/artifacts/@openzeppelin/contracts/token/ERC721/ERC721.sol/ERC721.json @@ -0,0 +1,357 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "ERC721", + "sourceName": "@openzeppelin/contracts/token/ERC721/ERC721.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "string", + "name": "name_", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol_", + "type": "string" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "approved", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "ApprovalForAll", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "getApproved", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "isApprovedForAll", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ownerOf", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "setApprovalForAll", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "tokenURI", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x60806040523480156200001157600080fd5b50604051620014ec380380620014ec83398101604081905262000034916200011f565b600062000042838262000218565b50600162000051828262000218565b505050620002e4565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200008257600080fd5b81516001600160401b03808211156200009f576200009f6200005a565b604051601f8301601f19908116603f01168101908282118183101715620000ca57620000ca6200005a565b81604052838152602092508683858801011115620000e757600080fd5b600091505b838210156200010b5785820183015181830184015290820190620000ec565b600093810190920192909252949350505050565b600080604083850312156200013357600080fd5b82516001600160401b03808211156200014b57600080fd5b620001598683870162000070565b935060208501519150808211156200017057600080fd5b506200017f8582860162000070565b9150509250929050565b600181811c908216806200019e57607f821691505b602082108103620001bf57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200021357600081815260208120601f850160051c81016020861015620001ee5750805b601f850160051c820191505b818110156200020f57828155600101620001fa565b5050505b505050565b81516001600160401b038111156200023457620002346200005a565b6200024c8162000245845462000189565b84620001c5565b602080601f8311600181146200028457600084156200026b5750858301515b600019600386901b1c1916600185901b1785556200020f565b600085815260208120601f198616915b82811015620002b55788860151825594840194600190910190840162000294565b5085821015620002d45787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6111f880620002f46000396000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c80636352211e1161008c578063a22cb46511610066578063a22cb465146101c3578063b88d4fde146101d6578063c87b56dd146101e9578063e985e9c5146101fc57600080fd5b80636352211e1461018757806370a082311461019a57806395d89b41146101bb57600080fd5b8063095ea7b3116100bd578063095ea7b31461014c57806323b872dd1461016157806342842e0e1461017457600080fd5b806301ffc9a7146100e457806306fdde031461010c578063081812fc14610121575b600080fd5b6100f76100f2366004610e92565b610238565b60405190151581526020015b60405180910390f35b61011461028a565b6040516101039190610eff565b61013461012f366004610f12565b61031c565b6040516001600160a01b039091168152602001610103565b61015f61015a366004610f47565b610343565b005b61015f61016f366004610f71565b61045d565b61015f610182366004610f71565b6104d4565b610134610195366004610f12565b6104ef565b6101ad6101a8366004610fad565b610554565b604051908152602001610103565b6101146105ee565b61015f6101d1366004610fc8565b6105fd565b61015f6101e436600461101a565b61060c565b6101146101f7366004610f12565b61068a565b6100f761020a3660046110f6565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b60006001600160e01b031982166380ac58cd60e01b148061026957506001600160e01b03198216635b5e139f60e01b145b8061028457506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606000805461029990611129565b80601f01602080910402602001604051908101604052809291908181526020018280546102c590611129565b80156103125780601f106102e757610100808354040283529160200191610312565b820191906000526020600020905b8154815290600101906020018083116102f557829003601f168201915b5050505050905090565b6000610327826106fe565b506000908152600460205260409020546001600160a01b031690565b600061034e826104ef565b9050806001600160a01b0316836001600160a01b0316036103c05760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b03821614806103dc57506103dc813361020a565b61044e5760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c00000060648201526084016103b7565b6104588383610765565b505050565b61046733826107e0565b6104c95760405162461bcd60e51b815260206004820152602d60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201526c1c881bdc88185c1c1c9bdd9959609a1b60648201526084016103b7565b61045883838361085f565b6104588383836040518060200160405280600081525061060c565b6000818152600260205260408120546001600160a01b0316806102845760405162461bcd60e51b815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e204944000000000000000060448201526064016103b7565b60006001600160a01b0382166105d25760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f74206120766160448201527f6c6964206f776e6572000000000000000000000000000000000000000000000060648201526084016103b7565b506001600160a01b031660009081526003602052604090205490565b60606001805461029990611129565b610608338383610a4c565b5050565b61061633836107e0565b6106785760405162461bcd60e51b815260206004820152602d60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201526c1c881bdc88185c1c1c9bdd9959609a1b60648201526084016103b7565b61068484848484610b1a565b50505050565b6060610695826106fe565b60006106ac60408051602081019091526000815290565b905060008151116106cc57604051806020016040528060008152506106f7565b806106d684610ba3565b6040516020016106e7929190611163565b6040516020818303038152906040525b9392505050565b6000818152600260205260409020546001600160a01b03166107625760405162461bcd60e51b815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e204944000000000000000060448201526064016103b7565b50565b6000818152600460205260409020805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03841690811790915581906107a7826104ef565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000806107ec836104ef565b9050806001600160a01b0316846001600160a01b0316148061083357506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b806108575750836001600160a01b031661084c8461031c565b6001600160a01b0316145b949350505050565b826001600160a01b0316610872826104ef565b6001600160a01b0316146108d65760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016103b7565b6001600160a01b0382166109385760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016103b7565b826001600160a01b031661094b826104ef565b6001600160a01b0316146109af5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016103b7565b6000818152600460209081526040808320805473ffffffffffffffffffffffffffffffffffffffff199081169091556001600160a01b0387811680865260038552838620805460001901905590871680865283862080546001019055868652600290945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b816001600160a01b0316836001600160a01b031603610aad5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016103b7565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b610b2584848461085f565b610b3184848484610c43565b6106845760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e746572000000000000000000000000000060648201526084016103b7565b60606000610bb083610d9a565b600101905060008167ffffffffffffffff811115610bd057610bd0611004565b6040519080825280601f01601f191660200182016040528015610bfa576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084610c0457509392505050565b60006001600160a01b0384163b15610d8f57604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290610c87903390899088908890600401611192565b6020604051808303816000875af1925050508015610cc2575060408051601f3d908101601f19168201909252610cbf918101906111ce565b60015b610d75573d808015610cf0576040519150601f19603f3d011682016040523d82523d6000602084013e610cf5565b606091505b508051600003610d6d5760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e746572000000000000000000000000000060648201526084016103b7565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050610857565b506001949350505050565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310610de3577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310610e0f576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310610e2d57662386f26fc10000830492506010015b6305f5e1008310610e45576305f5e100830492506008015b6127108310610e5957612710830492506004015b60648310610e6b576064830492506002015b600a83106102845760010192915050565b6001600160e01b03198116811461076257600080fd5b600060208284031215610ea457600080fd5b81356106f781610e7c565b60005b83811015610eca578181015183820152602001610eb2565b50506000910152565b60008151808452610eeb816020860160208601610eaf565b601f01601f19169290920160200192915050565b6020815260006106f76020830184610ed3565b600060208284031215610f2457600080fd5b5035919050565b80356001600160a01b0381168114610f4257600080fd5b919050565b60008060408385031215610f5a57600080fd5b610f6383610f2b565b946020939093013593505050565b600080600060608486031215610f8657600080fd5b610f8f84610f2b565b9250610f9d60208501610f2b565b9150604084013590509250925092565b600060208284031215610fbf57600080fd5b6106f782610f2b565b60008060408385031215610fdb57600080fd5b610fe483610f2b565b915060208301358015158114610ff957600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b6000806000806080858703121561103057600080fd5b61103985610f2b565b935061104760208601610f2b565b925060408501359150606085013567ffffffffffffffff8082111561106b57600080fd5b818701915087601f83011261107f57600080fd5b81358181111561109157611091611004565b604051601f8201601f19908116603f011681019083821181831017156110b9576110b9611004565b816040528281528a60208487010111156110d257600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b6000806040838503121561110957600080fd5b61111283610f2b565b915061112060208401610f2b565b90509250929050565b600181811c9082168061113d57607f821691505b60208210810361115d57634e487b7160e01b600052602260045260246000fd5b50919050565b60008351611175818460208801610eaf565b835190830190611189818360208801610eaf565b01949350505050565b60006001600160a01b038087168352808616602084015250836040830152608060608301526111c46080830184610ed3565b9695505050505050565b6000602082840312156111e057600080fd5b81516106f781610e7c56fea164736f6c6343000811000a", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100df5760003560e01c80636352211e1161008c578063a22cb46511610066578063a22cb465146101c3578063b88d4fde146101d6578063c87b56dd146101e9578063e985e9c5146101fc57600080fd5b80636352211e1461018757806370a082311461019a57806395d89b41146101bb57600080fd5b8063095ea7b3116100bd578063095ea7b31461014c57806323b872dd1461016157806342842e0e1461017457600080fd5b806301ffc9a7146100e457806306fdde031461010c578063081812fc14610121575b600080fd5b6100f76100f2366004610e92565b610238565b60405190151581526020015b60405180910390f35b61011461028a565b6040516101039190610eff565b61013461012f366004610f12565b61031c565b6040516001600160a01b039091168152602001610103565b61015f61015a366004610f47565b610343565b005b61015f61016f366004610f71565b61045d565b61015f610182366004610f71565b6104d4565b610134610195366004610f12565b6104ef565b6101ad6101a8366004610fad565b610554565b604051908152602001610103565b6101146105ee565b61015f6101d1366004610fc8565b6105fd565b61015f6101e436600461101a565b61060c565b6101146101f7366004610f12565b61068a565b6100f761020a3660046110f6565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b60006001600160e01b031982166380ac58cd60e01b148061026957506001600160e01b03198216635b5e139f60e01b145b8061028457506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606000805461029990611129565b80601f01602080910402602001604051908101604052809291908181526020018280546102c590611129565b80156103125780601f106102e757610100808354040283529160200191610312565b820191906000526020600020905b8154815290600101906020018083116102f557829003601f168201915b5050505050905090565b6000610327826106fe565b506000908152600460205260409020546001600160a01b031690565b600061034e826104ef565b9050806001600160a01b0316836001600160a01b0316036103c05760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b03821614806103dc57506103dc813361020a565b61044e5760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c00000060648201526084016103b7565b6104588383610765565b505050565b61046733826107e0565b6104c95760405162461bcd60e51b815260206004820152602d60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201526c1c881bdc88185c1c1c9bdd9959609a1b60648201526084016103b7565b61045883838361085f565b6104588383836040518060200160405280600081525061060c565b6000818152600260205260408120546001600160a01b0316806102845760405162461bcd60e51b815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e204944000000000000000060448201526064016103b7565b60006001600160a01b0382166105d25760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f74206120766160448201527f6c6964206f776e6572000000000000000000000000000000000000000000000060648201526084016103b7565b506001600160a01b031660009081526003602052604090205490565b60606001805461029990611129565b610608338383610a4c565b5050565b61061633836107e0565b6106785760405162461bcd60e51b815260206004820152602d60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201526c1c881bdc88185c1c1c9bdd9959609a1b60648201526084016103b7565b61068484848484610b1a565b50505050565b6060610695826106fe565b60006106ac60408051602081019091526000815290565b905060008151116106cc57604051806020016040528060008152506106f7565b806106d684610ba3565b6040516020016106e7929190611163565b6040516020818303038152906040525b9392505050565b6000818152600260205260409020546001600160a01b03166107625760405162461bcd60e51b815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e204944000000000000000060448201526064016103b7565b50565b6000818152600460205260409020805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03841690811790915581906107a7826104ef565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000806107ec836104ef565b9050806001600160a01b0316846001600160a01b0316148061083357506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b806108575750836001600160a01b031661084c8461031c565b6001600160a01b0316145b949350505050565b826001600160a01b0316610872826104ef565b6001600160a01b0316146108d65760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016103b7565b6001600160a01b0382166109385760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016103b7565b826001600160a01b031661094b826104ef565b6001600160a01b0316146109af5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016103b7565b6000818152600460209081526040808320805473ffffffffffffffffffffffffffffffffffffffff199081169091556001600160a01b0387811680865260038552838620805460001901905590871680865283862080546001019055868652600290945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b816001600160a01b0316836001600160a01b031603610aad5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016103b7565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b610b2584848461085f565b610b3184848484610c43565b6106845760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e746572000000000000000000000000000060648201526084016103b7565b60606000610bb083610d9a565b600101905060008167ffffffffffffffff811115610bd057610bd0611004565b6040519080825280601f01601f191660200182016040528015610bfa576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084610c0457509392505050565b60006001600160a01b0384163b15610d8f57604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290610c87903390899088908890600401611192565b6020604051808303816000875af1925050508015610cc2575060408051601f3d908101601f19168201909252610cbf918101906111ce565b60015b610d75573d808015610cf0576040519150601f19603f3d011682016040523d82523d6000602084013e610cf5565b606091505b508051600003610d6d5760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e746572000000000000000000000000000060648201526084016103b7565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050610857565b506001949350505050565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310610de3577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310610e0f576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310610e2d57662386f26fc10000830492506010015b6305f5e1008310610e45576305f5e100830492506008015b6127108310610e5957612710830492506004015b60648310610e6b576064830492506002015b600a83106102845760010192915050565b6001600160e01b03198116811461076257600080fd5b600060208284031215610ea457600080fd5b81356106f781610e7c565b60005b83811015610eca578181015183820152602001610eb2565b50506000910152565b60008151808452610eeb816020860160208601610eaf565b601f01601f19169290920160200192915050565b6020815260006106f76020830184610ed3565b600060208284031215610f2457600080fd5b5035919050565b80356001600160a01b0381168114610f4257600080fd5b919050565b60008060408385031215610f5a57600080fd5b610f6383610f2b565b946020939093013593505050565b600080600060608486031215610f8657600080fd5b610f8f84610f2b565b9250610f9d60208501610f2b565b9150604084013590509250925092565b600060208284031215610fbf57600080fd5b6106f782610f2b565b60008060408385031215610fdb57600080fd5b610fe483610f2b565b915060208301358015158114610ff957600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b6000806000806080858703121561103057600080fd5b61103985610f2b565b935061104760208601610f2b565b925060408501359150606085013567ffffffffffffffff8082111561106b57600080fd5b818701915087601f83011261107f57600080fd5b81358181111561109157611091611004565b604051601f8201601f19908116603f011681019083821181831017156110b9576110b9611004565b816040528281528a60208487010111156110d257600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b6000806040838503121561110957600080fd5b61111283610f2b565b915061112060208401610f2b565b90509250929050565b600181811c9082168061113d57607f821691505b60208210810361115d57634e487b7160e01b600052602260045260246000fd5b50919050565b60008351611175818460208801610eaf565b835190830190611189818360208801610eaf565b01949350505050565b60006001600160a01b038087168352808616602084015250836040830152608060608301526111c46080830184610ed3565b9695505050505050565b6000602082840312156111e057600080fd5b81516106f781610e7c56fea164736f6c6343000811000a", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/@openzeppelin/contracts/token/ERC721/IERC721.sol/IERC721.dbg.json b/contracts/artifacts/@openzeppelin/contracts/token/ERC721/IERC721.sol/IERC721.dbg.json new file mode 100644 index 00000000..b8d2318f --- /dev/null +++ b/contracts/artifacts/@openzeppelin/contracts/token/ERC721/IERC721.sol/IERC721.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" +} diff --git a/contracts/artifacts/@openzeppelin/contracts/token/ERC721/IERC721.sol/IERC721.json b/contracts/artifacts/@openzeppelin/contracts/token/ERC721/IERC721.sol/IERC721.json new file mode 100644 index 00000000..3677fd69 --- /dev/null +++ b/contracts/artifacts/@openzeppelin/contracts/token/ERC721/IERC721.sol/IERC721.json @@ -0,0 +1,296 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IERC721", + "sourceName": "@openzeppelin/contracts/token/ERC721/IERC721.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "approved", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "ApprovalForAll", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "getApproved", + "outputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "isApprovedForAll", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ownerOf", + "outputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "setApprovalForAll", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol/IERC721Receiver.dbg.json b/contracts/artifacts/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol/IERC721Receiver.dbg.json new file mode 100644 index 00000000..b8d2318f --- /dev/null +++ b/contracts/artifacts/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol/IERC721Receiver.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" +} diff --git a/contracts/artifacts/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol/IERC721Receiver.json b/contracts/artifacts/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol/IERC721Receiver.json new file mode 100644 index 00000000..e91c7b08 --- /dev/null +++ b/contracts/artifacts/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol/IERC721Receiver.json @@ -0,0 +1,45 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IERC721Receiver", + "sourceName": "@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "onERC721Received", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol/IERC721Metadata.dbg.json b/contracts/artifacts/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol/IERC721Metadata.dbg.json new file mode 100644 index 00000000..c8024a50 --- /dev/null +++ b/contracts/artifacts/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol/IERC721Metadata.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" +} diff --git a/contracts/artifacts/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol/IERC721Metadata.json b/contracts/artifacts/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol/IERC721Metadata.json new file mode 100644 index 00000000..4eea2c23 --- /dev/null +++ b/contracts/artifacts/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol/IERC721Metadata.json @@ -0,0 +1,341 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IERC721Metadata", + "sourceName": "@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "approved", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "ApprovalForAll", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "getApproved", + "outputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "isApprovedForAll", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ownerOf", + "outputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "setApprovalForAll", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "tokenURI", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/@openzeppelin/contracts/utils/Address.sol/Address.dbg.json b/contracts/artifacts/@openzeppelin/contracts/utils/Address.sol/Address.dbg.json new file mode 100644 index 00000000..4058cb44 --- /dev/null +++ b/contracts/artifacts/@openzeppelin/contracts/utils/Address.sol/Address.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" +} diff --git a/contracts/artifacts/@openzeppelin/contracts/utils/Address.sol/Address.json b/contracts/artifacts/@openzeppelin/contracts/utils/Address.sol/Address.json new file mode 100644 index 00000000..d8ec594c --- /dev/null +++ b/contracts/artifacts/@openzeppelin/contracts/utils/Address.sol/Address.json @@ -0,0 +1,10 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "Address", + "sourceName": "@openzeppelin/contracts/utils/Address.sol", + "abi": [], + "bytecode": "0x602d6037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/@openzeppelin/contracts/utils/Context.sol/Context.dbg.json b/contracts/artifacts/@openzeppelin/contracts/utils/Context.sol/Context.dbg.json new file mode 100644 index 00000000..4058cb44 --- /dev/null +++ b/contracts/artifacts/@openzeppelin/contracts/utils/Context.sol/Context.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" +} diff --git a/contracts/artifacts/@openzeppelin/contracts/utils/Context.sol/Context.json b/contracts/artifacts/@openzeppelin/contracts/utils/Context.sol/Context.json new file mode 100644 index 00000000..8fe86fc7 --- /dev/null +++ b/contracts/artifacts/@openzeppelin/contracts/utils/Context.sol/Context.json @@ -0,0 +1,10 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "Context", + "sourceName": "@openzeppelin/contracts/utils/Context.sol", + "abi": [], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/@openzeppelin/contracts/utils/Counters.sol/Counters.dbg.json b/contracts/artifacts/@openzeppelin/contracts/utils/Counters.sol/Counters.dbg.json new file mode 100644 index 00000000..4058cb44 --- /dev/null +++ b/contracts/artifacts/@openzeppelin/contracts/utils/Counters.sol/Counters.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" +} diff --git a/contracts/artifacts/@openzeppelin/contracts/utils/Counters.sol/Counters.json b/contracts/artifacts/@openzeppelin/contracts/utils/Counters.sol/Counters.json new file mode 100644 index 00000000..d776d599 --- /dev/null +++ b/contracts/artifacts/@openzeppelin/contracts/utils/Counters.sol/Counters.json @@ -0,0 +1,10 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "Counters", + "sourceName": "@openzeppelin/contracts/utils/Counters.sol", + "abi": [], + "bytecode": "0x602d6037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/@openzeppelin/contracts/utils/StorageSlot.sol/StorageSlot.dbg.json b/contracts/artifacts/@openzeppelin/contracts/utils/StorageSlot.sol/StorageSlot.dbg.json new file mode 100644 index 00000000..4058cb44 --- /dev/null +++ b/contracts/artifacts/@openzeppelin/contracts/utils/StorageSlot.sol/StorageSlot.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" +} diff --git a/contracts/artifacts/@openzeppelin/contracts/utils/StorageSlot.sol/StorageSlot.json b/contracts/artifacts/@openzeppelin/contracts/utils/StorageSlot.sol/StorageSlot.json new file mode 100644 index 00000000..0dd65d40 --- /dev/null +++ b/contracts/artifacts/@openzeppelin/contracts/utils/StorageSlot.sol/StorageSlot.json @@ -0,0 +1,10 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "StorageSlot", + "sourceName": "@openzeppelin/contracts/utils/StorageSlot.sol", + "abi": [], + "bytecode": "0x602d6037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/@openzeppelin/contracts/utils/Strings.sol/Strings.dbg.json b/contracts/artifacts/@openzeppelin/contracts/utils/Strings.sol/Strings.dbg.json new file mode 100644 index 00000000..4058cb44 --- /dev/null +++ b/contracts/artifacts/@openzeppelin/contracts/utils/Strings.sol/Strings.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" +} diff --git a/contracts/artifacts/@openzeppelin/contracts/utils/Strings.sol/Strings.json b/contracts/artifacts/@openzeppelin/contracts/utils/Strings.sol/Strings.json new file mode 100644 index 00000000..ce9ebf9c --- /dev/null +++ b/contracts/artifacts/@openzeppelin/contracts/utils/Strings.sol/Strings.json @@ -0,0 +1,10 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "Strings", + "sourceName": "@openzeppelin/contracts/utils/Strings.sol", + "abi": [], + "bytecode": "0x602d6037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/@openzeppelin/contracts/utils/introspection/ERC165.sol/ERC165.dbg.json b/contracts/artifacts/@openzeppelin/contracts/utils/introspection/ERC165.sol/ERC165.dbg.json new file mode 100644 index 00000000..b8d2318f --- /dev/null +++ b/contracts/artifacts/@openzeppelin/contracts/utils/introspection/ERC165.sol/ERC165.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" +} diff --git a/contracts/artifacts/@openzeppelin/contracts/utils/introspection/ERC165.sol/ERC165.json b/contracts/artifacts/@openzeppelin/contracts/utils/introspection/ERC165.sol/ERC165.json new file mode 100644 index 00000000..1304472c --- /dev/null +++ b/contracts/artifacts/@openzeppelin/contracts/utils/introspection/ERC165.sol/ERC165.json @@ -0,0 +1,30 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "ERC165", + "sourceName": "@openzeppelin/contracts/utils/introspection/ERC165.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/@openzeppelin/contracts/utils/introspection/IERC165.sol/IERC165.dbg.json b/contracts/artifacts/@openzeppelin/contracts/utils/introspection/IERC165.sol/IERC165.dbg.json new file mode 100644 index 00000000..b8d2318f --- /dev/null +++ b/contracts/artifacts/@openzeppelin/contracts/utils/introspection/IERC165.sol/IERC165.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" +} diff --git a/contracts/artifacts/@openzeppelin/contracts/utils/introspection/IERC165.sol/IERC165.json b/contracts/artifacts/@openzeppelin/contracts/utils/introspection/IERC165.sol/IERC165.json new file mode 100644 index 00000000..ff87f91e --- /dev/null +++ b/contracts/artifacts/@openzeppelin/contracts/utils/introspection/IERC165.sol/IERC165.json @@ -0,0 +1,30 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IERC165", + "sourceName": "@openzeppelin/contracts/utils/introspection/IERC165.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/@openzeppelin/contracts/utils/math/Math.sol/Math.dbg.json b/contracts/artifacts/@openzeppelin/contracts/utils/math/Math.sol/Math.dbg.json new file mode 100644 index 00000000..b8d2318f --- /dev/null +++ b/contracts/artifacts/@openzeppelin/contracts/utils/math/Math.sol/Math.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" +} diff --git a/contracts/artifacts/@openzeppelin/contracts/utils/math/Math.sol/Math.json b/contracts/artifacts/@openzeppelin/contracts/utils/math/Math.sol/Math.json new file mode 100644 index 00000000..7da67804 --- /dev/null +++ b/contracts/artifacts/@openzeppelin/contracts/utils/math/Math.sol/Math.json @@ -0,0 +1,10 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "Math", + "sourceName": "@openzeppelin/contracts/utils/math/Math.sol", + "abi": [], + "bytecode": "0x602d6037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/@openzeppelin/contracts/utils/math/SignedMath.sol/SignedMath.dbg.json b/contracts/artifacts/@openzeppelin/contracts/utils/math/SignedMath.sol/SignedMath.dbg.json new file mode 100644 index 00000000..b8d2318f --- /dev/null +++ b/contracts/artifacts/@openzeppelin/contracts/utils/math/SignedMath.sol/SignedMath.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" +} diff --git a/contracts/artifacts/@openzeppelin/contracts/utils/math/SignedMath.sol/SignedMath.json b/contracts/artifacts/@openzeppelin/contracts/utils/math/SignedMath.sol/SignedMath.json new file mode 100644 index 00000000..5b2408ec --- /dev/null +++ b/contracts/artifacts/@openzeppelin/contracts/utils/math/SignedMath.sol/SignedMath.json @@ -0,0 +1,10 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "SignedMath", + "sourceName": "@openzeppelin/contracts/utils/math/SignedMath.sol", + "abi": [], + "bytecode": "0x602d6037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/build-info/58fb59cc656bfddaae1de55a017c315b.json b/contracts/artifacts/build-info/58fb59cc656bfddaae1de55a017c315b.json new file mode 100644 index 00000000..d4a8c8ad --- /dev/null +++ b/contracts/artifacts/build-info/58fb59cc656bfddaae1de55a017c315b.json @@ -0,0 +1 @@ +{"id":"58fb59cc656bfddaae1de55a017c315b","_format":"hh-sol-build-info-1","solcVersion":"0.8.17","solcLongVersion":"0.8.17+commit.8df45f5f","input":{"language":"Solidity","sources":{"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.5.0) (interfaces/draft-IERC1822.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\n * proxy whose upgrades are fully controlled by the current implementation.\n */\ninterface IERC1822ProxiableUpgradeable {\n /**\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\n * address.\n *\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\n * function revert if invoked through a proxy.\n */\n function proxiableUUID() external view returns (bytes32);\n}\n"},"@openzeppelin/contracts-upgradeable/interfaces/IERC1967Upgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (interfaces/IERC1967.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\n *\n * _Available since v4.8.3._\n */\ninterface IERC1967Upgradeable {\n /**\n * @dev Emitted when the implementation is upgraded.\n */\n event Upgraded(address indexed implementation);\n\n /**\n * @dev Emitted when the admin account has changed.\n */\n event AdminChanged(address previousAdmin, address newAdmin);\n\n /**\n * @dev Emitted when the beacon is changed.\n */\n event BeaconUpgraded(address indexed beacon);\n}\n"},"@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\n */\ninterface IBeaconUpgradeable {\n /**\n * @dev Must return an address that can be used as a delegate call target.\n *\n * {BeaconProxy} will check that this address is a contract.\n */\n function implementation() external view returns (address);\n}\n"},"@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/ERC1967/ERC1967Upgrade.sol)\n\npragma solidity ^0.8.2;\n\nimport \"../beacon/IBeaconUpgradeable.sol\";\nimport \"../../interfaces/IERC1967Upgradeable.sol\";\nimport \"../../interfaces/draft-IERC1822Upgradeable.sol\";\nimport \"../../utils/AddressUpgradeable.sol\";\nimport \"../../utils/StorageSlotUpgradeable.sol\";\nimport {Initializable} from \"../utils/Initializable.sol\";\n\n/**\n * @dev This abstract contract provides getters and event emitting update functions for\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\n *\n * _Available since v4.1._\n */\nabstract contract ERC1967UpgradeUpgradeable is Initializable, IERC1967Upgradeable {\n // This is the keccak-256 hash of \"eip1967.proxy.rollback\" subtracted by 1\n bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\n\n /**\n * @dev Storage slot with the address of the current implementation.\n * This is the keccak-256 hash of \"eip1967.proxy.implementation\" subtracted by 1, and is\n * validated in the constructor.\n */\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n\n function __ERC1967Upgrade_init() internal onlyInitializing {\n }\n\n function __ERC1967Upgrade_init_unchained() internal onlyInitializing {\n }\n /**\n * @dev Returns the current implementation address.\n */\n function _getImplementation() internal view returns (address) {\n return StorageSlotUpgradeable.getAddressSlot(_IMPLEMENTATION_SLOT).value;\n }\n\n /**\n * @dev Stores a new address in the EIP1967 implementation slot.\n */\n function _setImplementation(address newImplementation) private {\n require(AddressUpgradeable.isContract(newImplementation), \"ERC1967: new implementation is not a contract\");\n StorageSlotUpgradeable.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\n }\n\n /**\n * @dev Perform implementation upgrade\n *\n * Emits an {Upgraded} event.\n */\n function _upgradeTo(address newImplementation) internal {\n _setImplementation(newImplementation);\n emit Upgraded(newImplementation);\n }\n\n /**\n * @dev Perform implementation upgrade with additional setup call.\n *\n * Emits an {Upgraded} event.\n */\n function _upgradeToAndCall(address newImplementation, bytes memory data, bool forceCall) internal {\n _upgradeTo(newImplementation);\n if (data.length > 0 || forceCall) {\n AddressUpgradeable.functionDelegateCall(newImplementation, data);\n }\n }\n\n /**\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\n *\n * Emits an {Upgraded} event.\n */\n function _upgradeToAndCallUUPS(address newImplementation, bytes memory data, bool forceCall) internal {\n // Upgrades from old implementations will perform a rollback test. This test requires the new\n // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\n // this special case will break upgrade paths from old UUPS implementation to new ones.\n if (StorageSlotUpgradeable.getBooleanSlot(_ROLLBACK_SLOT).value) {\n _setImplementation(newImplementation);\n } else {\n try IERC1822ProxiableUpgradeable(newImplementation).proxiableUUID() returns (bytes32 slot) {\n require(slot == _IMPLEMENTATION_SLOT, \"ERC1967Upgrade: unsupported proxiableUUID\");\n } catch {\n revert(\"ERC1967Upgrade: new implementation is not UUPS\");\n }\n _upgradeToAndCall(newImplementation, data, forceCall);\n }\n }\n\n /**\n * @dev Storage slot with the admin of the contract.\n * This is the keccak-256 hash of \"eip1967.proxy.admin\" subtracted by 1, and is\n * validated in the constructor.\n */\n bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\n\n /**\n * @dev Returns the current admin.\n */\n function _getAdmin() internal view returns (address) {\n return StorageSlotUpgradeable.getAddressSlot(_ADMIN_SLOT).value;\n }\n\n /**\n * @dev Stores a new address in the EIP1967 admin slot.\n */\n function _setAdmin(address newAdmin) private {\n require(newAdmin != address(0), \"ERC1967: new admin is the zero address\");\n StorageSlotUpgradeable.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\n }\n\n /**\n * @dev Changes the admin of the proxy.\n *\n * Emits an {AdminChanged} event.\n */\n function _changeAdmin(address newAdmin) internal {\n emit AdminChanged(_getAdmin(), newAdmin);\n _setAdmin(newAdmin);\n }\n\n /**\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\n * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\n */\n bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\n\n /**\n * @dev Returns the current beacon.\n */\n function _getBeacon() internal view returns (address) {\n return StorageSlotUpgradeable.getAddressSlot(_BEACON_SLOT).value;\n }\n\n /**\n * @dev Stores a new beacon in the EIP1967 beacon slot.\n */\n function _setBeacon(address newBeacon) private {\n require(AddressUpgradeable.isContract(newBeacon), \"ERC1967: new beacon is not a contract\");\n require(\n AddressUpgradeable.isContract(IBeaconUpgradeable(newBeacon).implementation()),\n \"ERC1967: beacon implementation is not a contract\"\n );\n StorageSlotUpgradeable.getAddressSlot(_BEACON_SLOT).value = newBeacon;\n }\n\n /**\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\n *\n * Emits a {BeaconUpgraded} event.\n */\n function _upgradeBeaconToAndCall(address newBeacon, bytes memory data, bool forceCall) internal {\n _setBeacon(newBeacon);\n emit BeaconUpgraded(newBeacon);\n if (data.length > 0 || forceCall) {\n AddressUpgradeable.functionDelegateCall(IBeaconUpgradeable(newBeacon).implementation(), data);\n }\n }\n\n /**\n * @dev This empty reserved space is put in place to allow future versions to add new\n * variables without shifting down storage in the inheritance chain.\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\n */\n uint256[50] private __gap;\n}\n"},"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\n\npragma solidity ^0.8.2;\n\nimport \"../../utils/AddressUpgradeable.sol\";\n\n/**\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\n *\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\n * reused. This mechanism prevents re-execution of each \"step\" but allows the creation of new initialization steps in\n * case an upgrade adds a module that needs to be initialized.\n *\n * For example:\n *\n * [.hljs-theme-light.nopadding]\n * ```solidity\n * contract MyToken is ERC20Upgradeable {\n * function initialize() initializer public {\n * __ERC20_init(\"MyToken\", \"MTK\");\n * }\n * }\n *\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\n * function initializeV2() reinitializer(2) public {\n * __ERC20Permit_init(\"MyToken\");\n * }\n * }\n * ```\n *\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\n *\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\n *\n * [CAUTION]\n * ====\n * Avoid leaving a contract uninitialized.\n *\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\n *\n * [.hljs-theme-light.nopadding]\n * ```\n * /// @custom:oz-upgrades-unsafe-allow constructor\n * constructor() {\n * _disableInitializers();\n * }\n * ```\n * ====\n */\nabstract contract Initializable {\n /**\n * @dev Indicates that the contract has been initialized.\n * @custom:oz-retyped-from bool\n */\n uint8 private _initialized;\n\n /**\n * @dev Indicates that the contract is in the process of being initialized.\n */\n bool private _initializing;\n\n /**\n * @dev Triggered when the contract has been initialized or reinitialized.\n */\n event Initialized(uint8 version);\n\n /**\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\n * `onlyInitializing` functions can be used to initialize parent contracts.\n *\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\n * constructor.\n *\n * Emits an {Initialized} event.\n */\n modifier initializer() {\n bool isTopLevelCall = !_initializing;\n require(\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\n \"Initializable: contract is already initialized\"\n );\n _initialized = 1;\n if (isTopLevelCall) {\n _initializing = true;\n }\n _;\n if (isTopLevelCall) {\n _initializing = false;\n emit Initialized(1);\n }\n }\n\n /**\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\n * used to initialize parent contracts.\n *\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\n * are added through upgrades and that require initialization.\n *\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\n * cannot be nested. If one is invoked in the context of another, execution will revert.\n *\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\n * a contract, executing them in the right order is up to the developer or operator.\n *\n * WARNING: setting the version to 255 will prevent any future reinitialization.\n *\n * Emits an {Initialized} event.\n */\n modifier reinitializer(uint8 version) {\n require(!_initializing && _initialized < version, \"Initializable: contract is already initialized\");\n _initialized = version;\n _initializing = true;\n _;\n _initializing = false;\n emit Initialized(version);\n }\n\n /**\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\n */\n modifier onlyInitializing() {\n require(_initializing, \"Initializable: contract is not initializing\");\n _;\n }\n\n /**\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\n * through proxies.\n *\n * Emits an {Initialized} event the first time it is successfully executed.\n */\n function _disableInitializers() internal virtual {\n require(!_initializing, \"Initializable: contract is initializing\");\n if (_initialized != type(uint8).max) {\n _initialized = type(uint8).max;\n emit Initialized(type(uint8).max);\n }\n }\n\n /**\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\n */\n function _getInitializedVersion() internal view returns (uint8) {\n return _initialized;\n }\n\n /**\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\n */\n function _isInitializing() internal view returns (bool) {\n return _initializing;\n }\n}\n"},"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/UUPSUpgradeable.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../../interfaces/draft-IERC1822Upgradeable.sol\";\nimport \"../ERC1967/ERC1967UpgradeUpgradeable.sol\";\nimport {Initializable} from \"./Initializable.sol\";\n\n/**\n * @dev An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an\n * {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy.\n *\n * A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is\n * reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing\n * `UUPSUpgradeable` with a custom implementation of upgrades.\n *\n * The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism.\n *\n * _Available since v4.1._\n */\nabstract contract UUPSUpgradeable is Initializable, IERC1822ProxiableUpgradeable, ERC1967UpgradeUpgradeable {\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable state-variable-assignment\n address private immutable __self = address(this);\n\n /**\n * @dev Check that the execution is being performed through a delegatecall call and that the execution context is\n * a proxy contract with an implementation (as defined in ERC1967) pointing to self. This should only be the case\n * for UUPS and transparent proxies that are using the current contract as their implementation. Execution of a\n * function through ERC1167 minimal proxies (clones) would not normally pass this test, but is not guaranteed to\n * fail.\n */\n modifier onlyProxy() {\n require(address(this) != __self, \"Function must be called through delegatecall\");\n require(_getImplementation() == __self, \"Function must be called through active proxy\");\n _;\n }\n\n /**\n * @dev Check that the execution is not being performed through a delegate call. This allows a function to be\n * callable on the implementing contract but not through proxies.\n */\n modifier notDelegated() {\n require(address(this) == __self, \"UUPSUpgradeable: must not be called through delegatecall\");\n _;\n }\n\n function __UUPSUpgradeable_init() internal onlyInitializing {\n }\n\n function __UUPSUpgradeable_init_unchained() internal onlyInitializing {\n }\n /**\n * @dev Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the\n * implementation. It is used to validate the implementation's compatibility when performing an upgrade.\n *\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\n * function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\n */\n function proxiableUUID() external view virtual override notDelegated returns (bytes32) {\n return _IMPLEMENTATION_SLOT;\n }\n\n /**\n * @dev Upgrade the implementation of the proxy to `newImplementation`.\n *\n * Calls {_authorizeUpgrade}.\n *\n * Emits an {Upgraded} event.\n *\n * @custom:oz-upgrades-unsafe-allow-reachable delegatecall\n */\n function upgradeTo(address newImplementation) public virtual onlyProxy {\n _authorizeUpgrade(newImplementation);\n _upgradeToAndCallUUPS(newImplementation, new bytes(0), false);\n }\n\n /**\n * @dev Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call\n * encoded in `data`.\n *\n * Calls {_authorizeUpgrade}.\n *\n * Emits an {Upgraded} event.\n *\n * @custom:oz-upgrades-unsafe-allow-reachable delegatecall\n */\n function upgradeToAndCall(address newImplementation, bytes memory data) public payable virtual onlyProxy {\n _authorizeUpgrade(newImplementation);\n _upgradeToAndCallUUPS(newImplementation, data, true);\n }\n\n /**\n * @dev Function that should revert when `msg.sender` is not authorized to upgrade the contract. Called by\n * {upgradeTo} and {upgradeToAndCall}.\n *\n * Normally, this function will use an xref:access.adoc[access control] modifier such as {Ownable-onlyOwner}.\n *\n * ```solidity\n * function _authorizeUpgrade(address) internal override onlyOwner {}\n * ```\n */\n function _authorizeUpgrade(address newImplementation) internal virtual;\n\n /**\n * @dev This empty reserved space is put in place to allow future versions to add new\n * variables without shifting down storage in the inheritance chain.\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\n */\n uint256[50] private __gap;\n}\n"},"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\n\npragma solidity ^0.8.1;\n\n/**\n * @dev Collection of functions related to the address type\n */\nlibrary AddressUpgradeable {\n /**\n * @dev Returns true if `account` is a contract.\n *\n * [IMPORTANT]\n * ====\n * It is unsafe to assume that an address for which this function returns\n * false is an externally-owned account (EOA) and not a contract.\n *\n * Among others, `isContract` will return false for the following\n * types of addresses:\n *\n * - an externally-owned account\n * - a contract in construction\n * - an address where a contract will be created\n * - an address where a contract lived, but was destroyed\n *\n * Furthermore, `isContract` will also return true if the target contract within\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\n * which only has an effect at the end of a transaction.\n * ====\n *\n * [IMPORTANT]\n * ====\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\n *\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\n * constructor.\n * ====\n */\n function isContract(address account) internal view returns (bool) {\n // This method relies on extcodesize/address.code.length, which returns 0\n // for contracts in construction, since the code is only stored at the end\n // of the constructor execution.\n\n return account.code.length > 0;\n }\n\n /**\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n * `recipient`, forwarding all available gas and reverting on errors.\n *\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\n * imposed by `transfer`, making them unable to receive funds via\n * `transfer`. {sendValue} removes this limitation.\n *\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n *\n * IMPORTANT: because control is transferred to `recipient`, care must be\n * taken to not create reentrancy vulnerabilities. Consider using\n * {ReentrancyGuard} or the\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\n */\n function sendValue(address payable recipient, uint256 amount) internal {\n require(address(this).balance >= amount, \"Address: insufficient balance\");\n\n (bool success, ) = recipient.call{value: amount}(\"\");\n require(success, \"Address: unable to send value, recipient may have reverted\");\n }\n\n /**\n * @dev Performs a Solidity function call using a low level `call`. A\n * plain `call` is an unsafe replacement for a function call: use this\n * function instead.\n *\n * If `target` reverts with a revert reason, it is bubbled up by this\n * function (like regular Solidity function calls).\n *\n * Returns the raw returned data. To convert to the expected return value,\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n *\n * Requirements:\n *\n * - `target` must be a contract.\n * - calling `target` with `data` must not revert.\n *\n * _Available since v3.1._\n */\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\n return functionCallWithValue(target, data, 0, \"Address: low-level call failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n * `errorMessage` as a fallback revert reason when `target` reverts.\n *\n * _Available since v3.1._\n */\n function functionCall(\n address target,\n bytes memory data,\n string memory errorMessage\n ) internal returns (bytes memory) {\n return functionCallWithValue(target, data, 0, errorMessage);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but also transferring `value` wei to `target`.\n *\n * Requirements:\n *\n * - the calling contract must have an ETH balance of at least `value`.\n * - the called Solidity function must be `payable`.\n *\n * _Available since v3.1._\n */\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\n return functionCallWithValue(target, data, value, \"Address: low-level call with value failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n * with `errorMessage` as a fallback revert reason when `target` reverts.\n *\n * _Available since v3.1._\n */\n function functionCallWithValue(\n address target,\n bytes memory data,\n uint256 value,\n string memory errorMessage\n ) internal returns (bytes memory) {\n require(address(this).balance >= value, \"Address: insufficient balance for call\");\n (bool success, bytes memory returndata) = target.call{value: value}(data);\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but performing a static call.\n *\n * _Available since v3.3._\n */\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\n return functionStaticCall(target, data, \"Address: low-level static call failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n * but performing a static call.\n *\n * _Available since v3.3._\n */\n function functionStaticCall(\n address target,\n bytes memory data,\n string memory errorMessage\n ) internal view returns (bytes memory) {\n (bool success, bytes memory returndata) = target.staticcall(data);\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but performing a delegate call.\n *\n * _Available since v3.4._\n */\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\n return functionDelegateCall(target, data, \"Address: low-level delegate call failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n * but performing a delegate call.\n *\n * _Available since v3.4._\n */\n function functionDelegateCall(\n address target,\n bytes memory data,\n string memory errorMessage\n ) internal returns (bytes memory) {\n (bool success, bytes memory returndata) = target.delegatecall(data);\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\n }\n\n /**\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\n *\n * _Available since v4.8._\n */\n function verifyCallResultFromTarget(\n address target,\n bool success,\n bytes memory returndata,\n string memory errorMessage\n ) internal view returns (bytes memory) {\n if (success) {\n if (returndata.length == 0) {\n // only check isContract if the call was successful and the return data is empty\n // otherwise we already know that it was a contract\n require(isContract(target), \"Address: call to non-contract\");\n }\n return returndata;\n } else {\n _revert(returndata, errorMessage);\n }\n }\n\n /**\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\n * revert reason or using the provided one.\n *\n * _Available since v4.3._\n */\n function verifyCallResult(\n bool success,\n bytes memory returndata,\n string memory errorMessage\n ) internal pure returns (bytes memory) {\n if (success) {\n return returndata;\n } else {\n _revert(returndata, errorMessage);\n }\n }\n\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\n // Look for revert reason and bubble it up if present\n if (returndata.length > 0) {\n // The easiest way to bubble the revert reason is using memory via assembly\n /// @solidity memory-safe-assembly\n assembly {\n let returndata_size := mload(returndata)\n revert(add(32, returndata), returndata_size)\n }\n } else {\n revert(errorMessage);\n }\n }\n}\n"},"@openzeppelin/contracts-upgradeable/utils/CheckpointsUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Checkpoints.sol)\n// This file was procedurally generated from scripts/generate/templates/Checkpoints.js.\n\npragma solidity ^0.8.0;\n\nimport \"./math/MathUpgradeable.sol\";\nimport \"./math/SafeCastUpgradeable.sol\";\n\n/**\n * @dev This library defines the `History` struct, for checkpointing values as they change at different points in\n * time, and later looking up past values by block number. See {Votes} as an example.\n *\n * To create a history of checkpoints define a variable type `Checkpoints.History` in your contract, and store a new\n * checkpoint for the current transaction block using the {push} function.\n *\n * _Available since v4.5._\n */\nlibrary CheckpointsUpgradeable {\n struct History {\n Checkpoint[] _checkpoints;\n }\n\n struct Checkpoint {\n uint32 _blockNumber;\n uint224 _value;\n }\n\n /**\n * @dev Returns the value at a given block number. If a checkpoint is not available at that block, the closest one\n * before it is returned, or zero otherwise. Because the number returned corresponds to that at the end of the\n * block, the requested block number must be in the past, excluding the current block.\n */\n function getAtBlock(History storage self, uint256 blockNumber) internal view returns (uint256) {\n require(blockNumber < block.number, \"Checkpoints: block not yet mined\");\n uint32 key = SafeCastUpgradeable.toUint32(blockNumber);\n\n uint256 len = self._checkpoints.length;\n uint256 pos = _upperBinaryLookup(self._checkpoints, key, 0, len);\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\n }\n\n /**\n * @dev Returns the value at a given block number. If a checkpoint is not available at that block, the closest one\n * before it is returned, or zero otherwise. Similar to {upperLookup} but optimized for the case when the searched\n * checkpoint is probably \"recent\", defined as being among the last sqrt(N) checkpoints where N is the number of\n * checkpoints.\n */\n function getAtProbablyRecentBlock(History storage self, uint256 blockNumber) internal view returns (uint256) {\n require(blockNumber < block.number, \"Checkpoints: block not yet mined\");\n uint32 key = SafeCastUpgradeable.toUint32(blockNumber);\n\n uint256 len = self._checkpoints.length;\n\n uint256 low = 0;\n uint256 high = len;\n\n if (len > 5) {\n uint256 mid = len - MathUpgradeable.sqrt(len);\n if (key < _unsafeAccess(self._checkpoints, mid)._blockNumber) {\n high = mid;\n } else {\n low = mid + 1;\n }\n }\n\n uint256 pos = _upperBinaryLookup(self._checkpoints, key, low, high);\n\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\n }\n\n /**\n * @dev Pushes a value onto a History so that it is stored as the checkpoint for the current block.\n *\n * Returns previous value and new value.\n */\n function push(History storage self, uint256 value) internal returns (uint256, uint256) {\n return _insert(self._checkpoints, SafeCastUpgradeable.toUint32(block.number), SafeCastUpgradeable.toUint224(value));\n }\n\n /**\n * @dev Pushes a value onto a History, by updating the latest value using binary operation `op`. The new value will\n * be set to `op(latest, delta)`.\n *\n * Returns previous value and new value.\n */\n function push(\n History storage self,\n function(uint256, uint256) view returns (uint256) op,\n uint256 delta\n ) internal returns (uint256, uint256) {\n return push(self, op(latest(self), delta));\n }\n\n /**\n * @dev Returns the value in the most recent checkpoint, or zero if there are no checkpoints.\n */\n function latest(History storage self) internal view returns (uint224) {\n uint256 pos = self._checkpoints.length;\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\n }\n\n /**\n * @dev Returns whether there is a checkpoint in the structure (i.e. it is not empty), and if so the key and value\n * in the most recent checkpoint.\n */\n function latestCheckpoint(\n History storage self\n ) internal view returns (bool exists, uint32 _blockNumber, uint224 _value) {\n uint256 pos = self._checkpoints.length;\n if (pos == 0) {\n return (false, 0, 0);\n } else {\n Checkpoint memory ckpt = _unsafeAccess(self._checkpoints, pos - 1);\n return (true, ckpt._blockNumber, ckpt._value);\n }\n }\n\n /**\n * @dev Returns the number of checkpoint.\n */\n function length(History storage self) internal view returns (uint256) {\n return self._checkpoints.length;\n }\n\n /**\n * @dev Pushes a (`key`, `value`) pair into an ordered list of checkpoints, either by inserting a new checkpoint,\n * or by updating the last one.\n */\n function _insert(Checkpoint[] storage self, uint32 key, uint224 value) private returns (uint224, uint224) {\n uint256 pos = self.length;\n\n if (pos > 0) {\n // Copying to memory is important here.\n Checkpoint memory last = _unsafeAccess(self, pos - 1);\n\n // Checkpoint keys must be non-decreasing.\n require(last._blockNumber <= key, \"Checkpoint: decreasing keys\");\n\n // Update or push new checkpoint\n if (last._blockNumber == key) {\n _unsafeAccess(self, pos - 1)._value = value;\n } else {\n self.push(Checkpoint({_blockNumber: key, _value: value}));\n }\n return (last._value, value);\n } else {\n self.push(Checkpoint({_blockNumber: key, _value: value}));\n return (0, value);\n }\n }\n\n /**\n * @dev Return the index of the last (most recent) checkpoint with key lower or equal than the search key, or `high` if there is none.\n * `low` and `high` define a section where to do the search, with inclusive `low` and exclusive `high`.\n *\n * WARNING: `high` should not be greater than the array's length.\n */\n function _upperBinaryLookup(\n Checkpoint[] storage self,\n uint32 key,\n uint256 low,\n uint256 high\n ) private view returns (uint256) {\n while (low < high) {\n uint256 mid = MathUpgradeable.average(low, high);\n if (_unsafeAccess(self, mid)._blockNumber > key) {\n high = mid;\n } else {\n low = mid + 1;\n }\n }\n return high;\n }\n\n /**\n * @dev Return the index of the first (oldest) checkpoint with key is greater or equal than the search key, or `high` if there is none.\n * `low` and `high` define a section where to do the search, with inclusive `low` and exclusive `high`.\n *\n * WARNING: `high` should not be greater than the array's length.\n */\n function _lowerBinaryLookup(\n Checkpoint[] storage self,\n uint32 key,\n uint256 low,\n uint256 high\n ) private view returns (uint256) {\n while (low < high) {\n uint256 mid = MathUpgradeable.average(low, high);\n if (_unsafeAccess(self, mid)._blockNumber < key) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return high;\n }\n\n /**\n * @dev Access an element of the array without performing bounds check. The position is assumed to be within bounds.\n */\n function _unsafeAccess(Checkpoint[] storage self, uint256 pos) private pure returns (Checkpoint storage result) {\n assembly {\n mstore(0, self.slot)\n result.slot := add(keccak256(0, 0x20), pos)\n }\n }\n\n struct Trace224 {\n Checkpoint224[] _checkpoints;\n }\n\n struct Checkpoint224 {\n uint32 _key;\n uint224 _value;\n }\n\n /**\n * @dev Pushes a (`key`, `value`) pair into a Trace224 so that it is stored as the checkpoint.\n *\n * Returns previous value and new value.\n */\n function push(Trace224 storage self, uint32 key, uint224 value) internal returns (uint224, uint224) {\n return _insert(self._checkpoints, key, value);\n }\n\n /**\n * @dev Returns the value in the first (oldest) checkpoint with key greater or equal than the search key, or zero if there is none.\n */\n function lowerLookup(Trace224 storage self, uint32 key) internal view returns (uint224) {\n uint256 len = self._checkpoints.length;\n uint256 pos = _lowerBinaryLookup(self._checkpoints, key, 0, len);\n return pos == len ? 0 : _unsafeAccess(self._checkpoints, pos)._value;\n }\n\n /**\n * @dev Returns the value in the last (most recent) checkpoint with key lower or equal than the search key, or zero if there is none.\n */\n function upperLookup(Trace224 storage self, uint32 key) internal view returns (uint224) {\n uint256 len = self._checkpoints.length;\n uint256 pos = _upperBinaryLookup(self._checkpoints, key, 0, len);\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\n }\n\n /**\n * @dev Returns the value in the last (most recent) checkpoint with key lower or equal than the search key, or zero if there is none.\n *\n * NOTE: This is a variant of {upperLookup} that is optimised to find \"recent\" checkpoint (checkpoints with high keys).\n */\n function upperLookupRecent(Trace224 storage self, uint32 key) internal view returns (uint224) {\n uint256 len = self._checkpoints.length;\n\n uint256 low = 0;\n uint256 high = len;\n\n if (len > 5) {\n uint256 mid = len - MathUpgradeable.sqrt(len);\n if (key < _unsafeAccess(self._checkpoints, mid)._key) {\n high = mid;\n } else {\n low = mid + 1;\n }\n }\n\n uint256 pos = _upperBinaryLookup(self._checkpoints, key, low, high);\n\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\n }\n\n /**\n * @dev Returns the value in the most recent checkpoint, or zero if there are no checkpoints.\n */\n function latest(Trace224 storage self) internal view returns (uint224) {\n uint256 pos = self._checkpoints.length;\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\n }\n\n /**\n * @dev Returns whether there is a checkpoint in the structure (i.e. it is not empty), and if so the key and value\n * in the most recent checkpoint.\n */\n function latestCheckpoint(Trace224 storage self) internal view returns (bool exists, uint32 _key, uint224 _value) {\n uint256 pos = self._checkpoints.length;\n if (pos == 0) {\n return (false, 0, 0);\n } else {\n Checkpoint224 memory ckpt = _unsafeAccess(self._checkpoints, pos - 1);\n return (true, ckpt._key, ckpt._value);\n }\n }\n\n /**\n * @dev Returns the number of checkpoint.\n */\n function length(Trace224 storage self) internal view returns (uint256) {\n return self._checkpoints.length;\n }\n\n /**\n * @dev Pushes a (`key`, `value`) pair into an ordered list of checkpoints, either by inserting a new checkpoint,\n * or by updating the last one.\n */\n function _insert(Checkpoint224[] storage self, uint32 key, uint224 value) private returns (uint224, uint224) {\n uint256 pos = self.length;\n\n if (pos > 0) {\n // Copying to memory is important here.\n Checkpoint224 memory last = _unsafeAccess(self, pos - 1);\n\n // Checkpoint keys must be non-decreasing.\n require(last._key <= key, \"Checkpoint: decreasing keys\");\n\n // Update or push new checkpoint\n if (last._key == key) {\n _unsafeAccess(self, pos - 1)._value = value;\n } else {\n self.push(Checkpoint224({_key: key, _value: value}));\n }\n return (last._value, value);\n } else {\n self.push(Checkpoint224({_key: key, _value: value}));\n return (0, value);\n }\n }\n\n /**\n * @dev Return the index of the last (most recent) checkpoint with key lower or equal than the search key, or `high` if there is none.\n * `low` and `high` define a section where to do the search, with inclusive `low` and exclusive `high`.\n *\n * WARNING: `high` should not be greater than the array's length.\n */\n function _upperBinaryLookup(\n Checkpoint224[] storage self,\n uint32 key,\n uint256 low,\n uint256 high\n ) private view returns (uint256) {\n while (low < high) {\n uint256 mid = MathUpgradeable.average(low, high);\n if (_unsafeAccess(self, mid)._key > key) {\n high = mid;\n } else {\n low = mid + 1;\n }\n }\n return high;\n }\n\n /**\n * @dev Return the index of the first (oldest) checkpoint with key is greater or equal than the search key, or `high` if there is none.\n * `low` and `high` define a section where to do the search, with inclusive `low` and exclusive `high`.\n *\n * WARNING: `high` should not be greater than the array's length.\n */\n function _lowerBinaryLookup(\n Checkpoint224[] storage self,\n uint32 key,\n uint256 low,\n uint256 high\n ) private view returns (uint256) {\n while (low < high) {\n uint256 mid = MathUpgradeable.average(low, high);\n if (_unsafeAccess(self, mid)._key < key) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return high;\n }\n\n /**\n * @dev Access an element of the array without performing bounds check. The position is assumed to be within bounds.\n */\n function _unsafeAccess(\n Checkpoint224[] storage self,\n uint256 pos\n ) private pure returns (Checkpoint224 storage result) {\n assembly {\n mstore(0, self.slot)\n result.slot := add(keccak256(0, 0x20), pos)\n }\n }\n\n struct Trace160 {\n Checkpoint160[] _checkpoints;\n }\n\n struct Checkpoint160 {\n uint96 _key;\n uint160 _value;\n }\n\n /**\n * @dev Pushes a (`key`, `value`) pair into a Trace160 so that it is stored as the checkpoint.\n *\n * Returns previous value and new value.\n */\n function push(Trace160 storage self, uint96 key, uint160 value) internal returns (uint160, uint160) {\n return _insert(self._checkpoints, key, value);\n }\n\n /**\n * @dev Returns the value in the first (oldest) checkpoint with key greater or equal than the search key, or zero if there is none.\n */\n function lowerLookup(Trace160 storage self, uint96 key) internal view returns (uint160) {\n uint256 len = self._checkpoints.length;\n uint256 pos = _lowerBinaryLookup(self._checkpoints, key, 0, len);\n return pos == len ? 0 : _unsafeAccess(self._checkpoints, pos)._value;\n }\n\n /**\n * @dev Returns the value in the last (most recent) checkpoint with key lower or equal than the search key, or zero if there is none.\n */\n function upperLookup(Trace160 storage self, uint96 key) internal view returns (uint160) {\n uint256 len = self._checkpoints.length;\n uint256 pos = _upperBinaryLookup(self._checkpoints, key, 0, len);\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\n }\n\n /**\n * @dev Returns the value in the last (most recent) checkpoint with key lower or equal than the search key, or zero if there is none.\n *\n * NOTE: This is a variant of {upperLookup} that is optimised to find \"recent\" checkpoint (checkpoints with high keys).\n */\n function upperLookupRecent(Trace160 storage self, uint96 key) internal view returns (uint160) {\n uint256 len = self._checkpoints.length;\n\n uint256 low = 0;\n uint256 high = len;\n\n if (len > 5) {\n uint256 mid = len - MathUpgradeable.sqrt(len);\n if (key < _unsafeAccess(self._checkpoints, mid)._key) {\n high = mid;\n } else {\n low = mid + 1;\n }\n }\n\n uint256 pos = _upperBinaryLookup(self._checkpoints, key, low, high);\n\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\n }\n\n /**\n * @dev Returns the value in the most recent checkpoint, or zero if there are no checkpoints.\n */\n function latest(Trace160 storage self) internal view returns (uint160) {\n uint256 pos = self._checkpoints.length;\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\n }\n\n /**\n * @dev Returns whether there is a checkpoint in the structure (i.e. it is not empty), and if so the key and value\n * in the most recent checkpoint.\n */\n function latestCheckpoint(Trace160 storage self) internal view returns (bool exists, uint96 _key, uint160 _value) {\n uint256 pos = self._checkpoints.length;\n if (pos == 0) {\n return (false, 0, 0);\n } else {\n Checkpoint160 memory ckpt = _unsafeAccess(self._checkpoints, pos - 1);\n return (true, ckpt._key, ckpt._value);\n }\n }\n\n /**\n * @dev Returns the number of checkpoint.\n */\n function length(Trace160 storage self) internal view returns (uint256) {\n return self._checkpoints.length;\n }\n\n /**\n * @dev Pushes a (`key`, `value`) pair into an ordered list of checkpoints, either by inserting a new checkpoint,\n * or by updating the last one.\n */\n function _insert(Checkpoint160[] storage self, uint96 key, uint160 value) private returns (uint160, uint160) {\n uint256 pos = self.length;\n\n if (pos > 0) {\n // Copying to memory is important here.\n Checkpoint160 memory last = _unsafeAccess(self, pos - 1);\n\n // Checkpoint keys must be non-decreasing.\n require(last._key <= key, \"Checkpoint: decreasing keys\");\n\n // Update or push new checkpoint\n if (last._key == key) {\n _unsafeAccess(self, pos - 1)._value = value;\n } else {\n self.push(Checkpoint160({_key: key, _value: value}));\n }\n return (last._value, value);\n } else {\n self.push(Checkpoint160({_key: key, _value: value}));\n return (0, value);\n }\n }\n\n /**\n * @dev Return the index of the last (most recent) checkpoint with key lower or equal than the search key, or `high` if there is none.\n * `low` and `high` define a section where to do the search, with inclusive `low` and exclusive `high`.\n *\n * WARNING: `high` should not be greater than the array's length.\n */\n function _upperBinaryLookup(\n Checkpoint160[] storage self,\n uint96 key,\n uint256 low,\n uint256 high\n ) private view returns (uint256) {\n while (low < high) {\n uint256 mid = MathUpgradeable.average(low, high);\n if (_unsafeAccess(self, mid)._key > key) {\n high = mid;\n } else {\n low = mid + 1;\n }\n }\n return high;\n }\n\n /**\n * @dev Return the index of the first (oldest) checkpoint with key is greater or equal than the search key, or `high` if there is none.\n * `low` and `high` define a section where to do the search, with inclusive `low` and exclusive `high`.\n *\n * WARNING: `high` should not be greater than the array's length.\n */\n function _lowerBinaryLookup(\n Checkpoint160[] storage self,\n uint96 key,\n uint256 low,\n uint256 high\n ) private view returns (uint256) {\n while (low < high) {\n uint256 mid = MathUpgradeable.average(low, high);\n if (_unsafeAccess(self, mid)._key < key) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return high;\n }\n\n /**\n * @dev Access an element of the array without performing bounds check. The position is assumed to be within bounds.\n */\n function _unsafeAccess(\n Checkpoint160[] storage self,\n uint256 pos\n ) private pure returns (Checkpoint160 storage result) {\n assembly {\n mstore(0, self.slot)\n result.slot := add(keccak256(0, 0x20), pos)\n }\n }\n}\n"},"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\n\npragma solidity ^0.8.0;\nimport {Initializable} from \"../proxy/utils/Initializable.sol\";\n\n/**\n * @dev Provides information about the current execution context, including the\n * sender of the transaction and its data. While these are generally available\n * via msg.sender and msg.data, they should not be accessed in such a direct\n * manner, since when dealing with meta-transactions the account sending and\n * paying for execution may not be the actual sender (as far as an application\n * is concerned).\n *\n * This contract is only required for intermediate, library-like contracts.\n */\nabstract contract ContextUpgradeable is Initializable {\n function __Context_init() internal onlyInitializing {\n }\n\n function __Context_init_unchained() internal onlyInitializing {\n }\n function _msgSender() internal view virtual returns (address) {\n return msg.sender;\n }\n\n function _msgData() internal view virtual returns (bytes calldata) {\n return msg.data;\n }\n\n function _contextSuffixLength() internal view virtual returns (uint256) {\n return 0;\n }\n\n /**\n * @dev This empty reserved space is put in place to allow future versions to add new\n * variables without shifting down storage in the inheritance chain.\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\n */\n uint256[50] private __gap;\n}\n"},"@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/Counters.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @title Counters\n * @author Matt Condon (@shrugs)\n * @dev Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number\n * of elements in a mapping, issuing ERC721 ids, or counting request ids.\n *\n * Include with `using Counters for Counters.Counter;`\n */\nlibrary CountersUpgradeable {\n struct Counter {\n // This variable should never be directly accessed by users of the library: interactions must be restricted to\n // the library's function. As of Solidity v0.5.2, this cannot be enforced, though there is a proposal to add\n // this feature: see https://github.com/ethereum/solidity/issues/4637\n uint256 _value; // default: 0\n }\n\n function current(Counter storage counter) internal view returns (uint256) {\n return counter._value;\n }\n\n function increment(Counter storage counter) internal {\n unchecked {\n counter._value += 1;\n }\n }\n\n function decrement(Counter storage counter) internal {\n uint256 value = counter._value;\n require(value > 0, \"Counter: decrement overflow\");\n unchecked {\n counter._value = value - 1;\n }\n }\n\n function reset(Counter storage counter) internal {\n counter._value = 0;\n }\n}\n"},"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\n\npragma solidity ^0.8.0;\n\nimport \"./IERC165Upgradeable.sol\";\nimport {Initializable} from \"../../proxy/utils/Initializable.sol\";\n\n/**\n * @dev Implementation of the {IERC165} interface.\n *\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\n * for the additional interface id that will be supported. For example:\n *\n * ```solidity\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\n * }\n * ```\n *\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\n */\nabstract contract ERC165Upgradeable is Initializable, IERC165Upgradeable {\n function __ERC165_init() internal onlyInitializing {\n }\n\n function __ERC165_init_unchained() internal onlyInitializing {\n }\n /**\n * @dev See {IERC165-supportsInterface}.\n */\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n return interfaceId == type(IERC165Upgradeable).interfaceId;\n }\n\n /**\n * @dev This empty reserved space is put in place to allow future versions to add new\n * variables without shifting down storage in the inheritance chain.\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\n */\n uint256[50] private __gap;\n}\n"},"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Interface of the ERC165 standard, as defined in the\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\n *\n * Implementers can declare support of contract interfaces, which can then be\n * queried by others ({ERC165Checker}).\n *\n * For an implementation, see {ERC165}.\n */\ninterface IERC165Upgradeable {\n /**\n * @dev Returns true if this contract implements the interface defined by\n * `interfaceId`. See the corresponding\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\n * to learn more about how these ids are created.\n *\n * This function call must use less than 30 000 gas.\n */\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\n}\n"},"@openzeppelin/contracts-upgradeable/utils/math/MathUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/math/Math.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Standard math utilities missing in the Solidity language.\n */\nlibrary MathUpgradeable {\n enum Rounding {\n Down, // Toward negative infinity\n Up, // Toward infinity\n Zero // Toward zero\n }\n\n /**\n * @dev Returns the largest of two numbers.\n */\n function max(uint256 a, uint256 b) internal pure returns (uint256) {\n return a > b ? a : b;\n }\n\n /**\n * @dev Returns the smallest of two numbers.\n */\n function min(uint256 a, uint256 b) internal pure returns (uint256) {\n return a < b ? a : b;\n }\n\n /**\n * @dev Returns the average of two numbers. The result is rounded towards\n * zero.\n */\n function average(uint256 a, uint256 b) internal pure returns (uint256) {\n // (a + b) / 2 can overflow.\n return (a & b) + (a ^ b) / 2;\n }\n\n /**\n * @dev Returns the ceiling of the division of two numbers.\n *\n * This differs from standard division with `/` in that it rounds up instead\n * of rounding down.\n */\n function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\n // (a + b - 1) / b can overflow on addition, so we distribute.\n return a == 0 ? 0 : (a - 1) / b + 1;\n }\n\n /**\n * @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\n * @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)\n * with further edits by Uniswap Labs also under MIT license.\n */\n function mulDiv(uint256 x, uint256 y, uint256 denominator) internal pure returns (uint256 result) {\n unchecked {\n // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use\n // use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\n // variables such that product = prod1 * 2^256 + prod0.\n uint256 prod0; // Least significant 256 bits of the product\n uint256 prod1; // Most significant 256 bits of the product\n assembly {\n let mm := mulmod(x, y, not(0))\n prod0 := mul(x, y)\n prod1 := sub(sub(mm, prod0), lt(mm, prod0))\n }\n\n // Handle non-overflow cases, 256 by 256 division.\n if (prod1 == 0) {\n // Solidity will revert if denominator == 0, unlike the div opcode on its own.\n // The surrounding unchecked block does not change this fact.\n // See https://docs.soliditylang.org/en/latest/control-structures.html#checked-or-unchecked-arithmetic.\n return prod0 / denominator;\n }\n\n // Make sure the result is less than 2^256. Also prevents denominator == 0.\n require(denominator > prod1, \"Math: mulDiv overflow\");\n\n ///////////////////////////////////////////////\n // 512 by 256 division.\n ///////////////////////////////////////////////\n\n // Make division exact by subtracting the remainder from [prod1 prod0].\n uint256 remainder;\n assembly {\n // Compute remainder using mulmod.\n remainder := mulmod(x, y, denominator)\n\n // Subtract 256 bit number from 512 bit number.\n prod1 := sub(prod1, gt(remainder, prod0))\n prod0 := sub(prod0, remainder)\n }\n\n // Factor powers of two out of denominator and compute largest power of two divisor of denominator. Always >= 1.\n // See https://cs.stackexchange.com/q/138556/92363.\n\n // Does not overflow because the denominator cannot be zero at this stage in the function.\n uint256 twos = denominator & (~denominator + 1);\n assembly {\n // Divide denominator by twos.\n denominator := div(denominator, twos)\n\n // Divide [prod1 prod0] by twos.\n prod0 := div(prod0, twos)\n\n // Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one.\n twos := add(div(sub(0, twos), twos), 1)\n }\n\n // Shift in bits from prod1 into prod0.\n prod0 |= prod1 * twos;\n\n // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such\n // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for\n // four bits. That is, denominator * inv = 1 mod 2^4.\n uint256 inverse = (3 * denominator) ^ 2;\n\n // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also works\n // in modular arithmetic, doubling the correct bits in each step.\n inverse *= 2 - denominator * inverse; // inverse mod 2^8\n inverse *= 2 - denominator * inverse; // inverse mod 2^16\n inverse *= 2 - denominator * inverse; // inverse mod 2^32\n inverse *= 2 - denominator * inverse; // inverse mod 2^64\n inverse *= 2 - denominator * inverse; // inverse mod 2^128\n inverse *= 2 - denominator * inverse; // inverse mod 2^256\n\n // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\n // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is\n // less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1\n // is no longer required.\n result = prod0 * inverse;\n return result;\n }\n }\n\n /**\n * @notice Calculates x * y / denominator with full precision, following the selected rounding direction.\n */\n function mulDiv(uint256 x, uint256 y, uint256 denominator, Rounding rounding) internal pure returns (uint256) {\n uint256 result = mulDiv(x, y, denominator);\n if (rounding == Rounding.Up && mulmod(x, y, denominator) > 0) {\n result += 1;\n }\n return result;\n }\n\n /**\n * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down.\n *\n * Inspired by Henry S. Warren, Jr.'s \"Hacker's Delight\" (Chapter 11).\n */\n function sqrt(uint256 a) internal pure returns (uint256) {\n if (a == 0) {\n return 0;\n }\n\n // For our first guess, we get the biggest power of 2 which is smaller than the square root of the target.\n //\n // We know that the \"msb\" (most significant bit) of our target number `a` is a power of 2 such that we have\n // `msb(a) <= a < 2*msb(a)`. This value can be written `msb(a)=2**k` with `k=log2(a)`.\n //\n // This can be rewritten `2**log2(a) <= a < 2**(log2(a) + 1)`\n // → `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))`\n // → `2**(k/2) <= sqrt(a) < 2**((k+1)/2) <= 2**(k/2 + 1)`\n //\n // Consequently, `2**(log2(a) / 2)` is a good first approximation of `sqrt(a)` with at least 1 correct bit.\n uint256 result = 1 << (log2(a) >> 1);\n\n // At this point `result` is an estimation with one bit of precision. We know the true value is a uint128,\n // since it is the square root of a uint256. Newton's method converges quadratically (precision doubles at\n // every iteration). We thus need at most 7 iteration to turn our partial result with one bit of precision\n // into the expected uint128 result.\n unchecked {\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n return min(result, a / result);\n }\n }\n\n /**\n * @notice Calculates sqrt(a), following the selected rounding direction.\n */\n function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {\n unchecked {\n uint256 result = sqrt(a);\n return result + (rounding == Rounding.Up && result * result < a ? 1 : 0);\n }\n }\n\n /**\n * @dev Return the log in base 2, rounded down, of a positive value.\n * Returns 0 if given 0.\n */\n function log2(uint256 value) internal pure returns (uint256) {\n uint256 result = 0;\n unchecked {\n if (value >> 128 > 0) {\n value >>= 128;\n result += 128;\n }\n if (value >> 64 > 0) {\n value >>= 64;\n result += 64;\n }\n if (value >> 32 > 0) {\n value >>= 32;\n result += 32;\n }\n if (value >> 16 > 0) {\n value >>= 16;\n result += 16;\n }\n if (value >> 8 > 0) {\n value >>= 8;\n result += 8;\n }\n if (value >> 4 > 0) {\n value >>= 4;\n result += 4;\n }\n if (value >> 2 > 0) {\n value >>= 2;\n result += 2;\n }\n if (value >> 1 > 0) {\n result += 1;\n }\n }\n return result;\n }\n\n /**\n * @dev Return the log in base 2, following the selected rounding direction, of a positive value.\n * Returns 0 if given 0.\n */\n function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {\n unchecked {\n uint256 result = log2(value);\n return result + (rounding == Rounding.Up && 1 << result < value ? 1 : 0);\n }\n }\n\n /**\n * @dev Return the log in base 10, rounded down, of a positive value.\n * Returns 0 if given 0.\n */\n function log10(uint256 value) internal pure returns (uint256) {\n uint256 result = 0;\n unchecked {\n if (value >= 10 ** 64) {\n value /= 10 ** 64;\n result += 64;\n }\n if (value >= 10 ** 32) {\n value /= 10 ** 32;\n result += 32;\n }\n if (value >= 10 ** 16) {\n value /= 10 ** 16;\n result += 16;\n }\n if (value >= 10 ** 8) {\n value /= 10 ** 8;\n result += 8;\n }\n if (value >= 10 ** 4) {\n value /= 10 ** 4;\n result += 4;\n }\n if (value >= 10 ** 2) {\n value /= 10 ** 2;\n result += 2;\n }\n if (value >= 10 ** 1) {\n result += 1;\n }\n }\n return result;\n }\n\n /**\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\n * Returns 0 if given 0.\n */\n function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {\n unchecked {\n uint256 result = log10(value);\n return result + (rounding == Rounding.Up && 10 ** result < value ? 1 : 0);\n }\n }\n\n /**\n * @dev Return the log in base 256, rounded down, of a positive value.\n * Returns 0 if given 0.\n *\n * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.\n */\n function log256(uint256 value) internal pure returns (uint256) {\n uint256 result = 0;\n unchecked {\n if (value >> 128 > 0) {\n value >>= 128;\n result += 16;\n }\n if (value >> 64 > 0) {\n value >>= 64;\n result += 8;\n }\n if (value >> 32 > 0) {\n value >>= 32;\n result += 4;\n }\n if (value >> 16 > 0) {\n value >>= 16;\n result += 2;\n }\n if (value >> 8 > 0) {\n result += 1;\n }\n }\n return result;\n }\n\n /**\n * @dev Return the log in base 256, following the selected rounding direction, of a positive value.\n * Returns 0 if given 0.\n */\n function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {\n unchecked {\n uint256 result = log256(value);\n return result + (rounding == Rounding.Up && 1 << (result << 3) < value ? 1 : 0);\n }\n }\n}\n"},"@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/SafeCast.sol)\n// This file was procedurally generated from scripts/generate/templates/SafeCast.js.\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Wrappers over Solidity's uintXX/intXX casting operators with added overflow\n * checks.\n *\n * Downcasting from uint256/int256 in Solidity does not revert on overflow. This can\n * easily result in undesired exploitation or bugs, since developers usually\n * assume that overflows raise errors. `SafeCast` restores this intuition by\n * reverting the transaction when such an operation overflows.\n *\n * Using this library instead of the unchecked operations eliminates an entire\n * class of bugs, so it's recommended to use it always.\n *\n * Can be combined with {SafeMath} and {SignedSafeMath} to extend it to smaller types, by performing\n * all math on `uint256` and `int256` and then downcasting.\n */\nlibrary SafeCastUpgradeable {\n /**\n * @dev Returns the downcasted uint248 from uint256, reverting on\n * overflow (when the input is greater than largest uint248).\n *\n * Counterpart to Solidity's `uint248` operator.\n *\n * Requirements:\n *\n * - input must fit into 248 bits\n *\n * _Available since v4.7._\n */\n function toUint248(uint256 value) internal pure returns (uint248) {\n require(value <= type(uint248).max, \"SafeCast: value doesn't fit in 248 bits\");\n return uint248(value);\n }\n\n /**\n * @dev Returns the downcasted uint240 from uint256, reverting on\n * overflow (when the input is greater than largest uint240).\n *\n * Counterpart to Solidity's `uint240` operator.\n *\n * Requirements:\n *\n * - input must fit into 240 bits\n *\n * _Available since v4.7._\n */\n function toUint240(uint256 value) internal pure returns (uint240) {\n require(value <= type(uint240).max, \"SafeCast: value doesn't fit in 240 bits\");\n return uint240(value);\n }\n\n /**\n * @dev Returns the downcasted uint232 from uint256, reverting on\n * overflow (when the input is greater than largest uint232).\n *\n * Counterpart to Solidity's `uint232` operator.\n *\n * Requirements:\n *\n * - input must fit into 232 bits\n *\n * _Available since v4.7._\n */\n function toUint232(uint256 value) internal pure returns (uint232) {\n require(value <= type(uint232).max, \"SafeCast: value doesn't fit in 232 bits\");\n return uint232(value);\n }\n\n /**\n * @dev Returns the downcasted uint224 from uint256, reverting on\n * overflow (when the input is greater than largest uint224).\n *\n * Counterpart to Solidity's `uint224` operator.\n *\n * Requirements:\n *\n * - input must fit into 224 bits\n *\n * _Available since v4.2._\n */\n function toUint224(uint256 value) internal pure returns (uint224) {\n require(value <= type(uint224).max, \"SafeCast: value doesn't fit in 224 bits\");\n return uint224(value);\n }\n\n /**\n * @dev Returns the downcasted uint216 from uint256, reverting on\n * overflow (when the input is greater than largest uint216).\n *\n * Counterpart to Solidity's `uint216` operator.\n *\n * Requirements:\n *\n * - input must fit into 216 bits\n *\n * _Available since v4.7._\n */\n function toUint216(uint256 value) internal pure returns (uint216) {\n require(value <= type(uint216).max, \"SafeCast: value doesn't fit in 216 bits\");\n return uint216(value);\n }\n\n /**\n * @dev Returns the downcasted uint208 from uint256, reverting on\n * overflow (when the input is greater than largest uint208).\n *\n * Counterpart to Solidity's `uint208` operator.\n *\n * Requirements:\n *\n * - input must fit into 208 bits\n *\n * _Available since v4.7._\n */\n function toUint208(uint256 value) internal pure returns (uint208) {\n require(value <= type(uint208).max, \"SafeCast: value doesn't fit in 208 bits\");\n return uint208(value);\n }\n\n /**\n * @dev Returns the downcasted uint200 from uint256, reverting on\n * overflow (when the input is greater than largest uint200).\n *\n * Counterpart to Solidity's `uint200` operator.\n *\n * Requirements:\n *\n * - input must fit into 200 bits\n *\n * _Available since v4.7._\n */\n function toUint200(uint256 value) internal pure returns (uint200) {\n require(value <= type(uint200).max, \"SafeCast: value doesn't fit in 200 bits\");\n return uint200(value);\n }\n\n /**\n * @dev Returns the downcasted uint192 from uint256, reverting on\n * overflow (when the input is greater than largest uint192).\n *\n * Counterpart to Solidity's `uint192` operator.\n *\n * Requirements:\n *\n * - input must fit into 192 bits\n *\n * _Available since v4.7._\n */\n function toUint192(uint256 value) internal pure returns (uint192) {\n require(value <= type(uint192).max, \"SafeCast: value doesn't fit in 192 bits\");\n return uint192(value);\n }\n\n /**\n * @dev Returns the downcasted uint184 from uint256, reverting on\n * overflow (when the input is greater than largest uint184).\n *\n * Counterpart to Solidity's `uint184` operator.\n *\n * Requirements:\n *\n * - input must fit into 184 bits\n *\n * _Available since v4.7._\n */\n function toUint184(uint256 value) internal pure returns (uint184) {\n require(value <= type(uint184).max, \"SafeCast: value doesn't fit in 184 bits\");\n return uint184(value);\n }\n\n /**\n * @dev Returns the downcasted uint176 from uint256, reverting on\n * overflow (when the input is greater than largest uint176).\n *\n * Counterpart to Solidity's `uint176` operator.\n *\n * Requirements:\n *\n * - input must fit into 176 bits\n *\n * _Available since v4.7._\n */\n function toUint176(uint256 value) internal pure returns (uint176) {\n require(value <= type(uint176).max, \"SafeCast: value doesn't fit in 176 bits\");\n return uint176(value);\n }\n\n /**\n * @dev Returns the downcasted uint168 from uint256, reverting on\n * overflow (when the input is greater than largest uint168).\n *\n * Counterpart to Solidity's `uint168` operator.\n *\n * Requirements:\n *\n * - input must fit into 168 bits\n *\n * _Available since v4.7._\n */\n function toUint168(uint256 value) internal pure returns (uint168) {\n require(value <= type(uint168).max, \"SafeCast: value doesn't fit in 168 bits\");\n return uint168(value);\n }\n\n /**\n * @dev Returns the downcasted uint160 from uint256, reverting on\n * overflow (when the input is greater than largest uint160).\n *\n * Counterpart to Solidity's `uint160` operator.\n *\n * Requirements:\n *\n * - input must fit into 160 bits\n *\n * _Available since v4.7._\n */\n function toUint160(uint256 value) internal pure returns (uint160) {\n require(value <= type(uint160).max, \"SafeCast: value doesn't fit in 160 bits\");\n return uint160(value);\n }\n\n /**\n * @dev Returns the downcasted uint152 from uint256, reverting on\n * overflow (when the input is greater than largest uint152).\n *\n * Counterpart to Solidity's `uint152` operator.\n *\n * Requirements:\n *\n * - input must fit into 152 bits\n *\n * _Available since v4.7._\n */\n function toUint152(uint256 value) internal pure returns (uint152) {\n require(value <= type(uint152).max, \"SafeCast: value doesn't fit in 152 bits\");\n return uint152(value);\n }\n\n /**\n * @dev Returns the downcasted uint144 from uint256, reverting on\n * overflow (when the input is greater than largest uint144).\n *\n * Counterpart to Solidity's `uint144` operator.\n *\n * Requirements:\n *\n * - input must fit into 144 bits\n *\n * _Available since v4.7._\n */\n function toUint144(uint256 value) internal pure returns (uint144) {\n require(value <= type(uint144).max, \"SafeCast: value doesn't fit in 144 bits\");\n return uint144(value);\n }\n\n /**\n * @dev Returns the downcasted uint136 from uint256, reverting on\n * overflow (when the input is greater than largest uint136).\n *\n * Counterpart to Solidity's `uint136` operator.\n *\n * Requirements:\n *\n * - input must fit into 136 bits\n *\n * _Available since v4.7._\n */\n function toUint136(uint256 value) internal pure returns (uint136) {\n require(value <= type(uint136).max, \"SafeCast: value doesn't fit in 136 bits\");\n return uint136(value);\n }\n\n /**\n * @dev Returns the downcasted uint128 from uint256, reverting on\n * overflow (when the input is greater than largest uint128).\n *\n * Counterpart to Solidity's `uint128` operator.\n *\n * Requirements:\n *\n * - input must fit into 128 bits\n *\n * _Available since v2.5._\n */\n function toUint128(uint256 value) internal pure returns (uint128) {\n require(value <= type(uint128).max, \"SafeCast: value doesn't fit in 128 bits\");\n return uint128(value);\n }\n\n /**\n * @dev Returns the downcasted uint120 from uint256, reverting on\n * overflow (when the input is greater than largest uint120).\n *\n * Counterpart to Solidity's `uint120` operator.\n *\n * Requirements:\n *\n * - input must fit into 120 bits\n *\n * _Available since v4.7._\n */\n function toUint120(uint256 value) internal pure returns (uint120) {\n require(value <= type(uint120).max, \"SafeCast: value doesn't fit in 120 bits\");\n return uint120(value);\n }\n\n /**\n * @dev Returns the downcasted uint112 from uint256, reverting on\n * overflow (when the input is greater than largest uint112).\n *\n * Counterpart to Solidity's `uint112` operator.\n *\n * Requirements:\n *\n * - input must fit into 112 bits\n *\n * _Available since v4.7._\n */\n function toUint112(uint256 value) internal pure returns (uint112) {\n require(value <= type(uint112).max, \"SafeCast: value doesn't fit in 112 bits\");\n return uint112(value);\n }\n\n /**\n * @dev Returns the downcasted uint104 from uint256, reverting on\n * overflow (when the input is greater than largest uint104).\n *\n * Counterpart to Solidity's `uint104` operator.\n *\n * Requirements:\n *\n * - input must fit into 104 bits\n *\n * _Available since v4.7._\n */\n function toUint104(uint256 value) internal pure returns (uint104) {\n require(value <= type(uint104).max, \"SafeCast: value doesn't fit in 104 bits\");\n return uint104(value);\n }\n\n /**\n * @dev Returns the downcasted uint96 from uint256, reverting on\n * overflow (when the input is greater than largest uint96).\n *\n * Counterpart to Solidity's `uint96` operator.\n *\n * Requirements:\n *\n * - input must fit into 96 bits\n *\n * _Available since v4.2._\n */\n function toUint96(uint256 value) internal pure returns (uint96) {\n require(value <= type(uint96).max, \"SafeCast: value doesn't fit in 96 bits\");\n return uint96(value);\n }\n\n /**\n * @dev Returns the downcasted uint88 from uint256, reverting on\n * overflow (when the input is greater than largest uint88).\n *\n * Counterpart to Solidity's `uint88` operator.\n *\n * Requirements:\n *\n * - input must fit into 88 bits\n *\n * _Available since v4.7._\n */\n function toUint88(uint256 value) internal pure returns (uint88) {\n require(value <= type(uint88).max, \"SafeCast: value doesn't fit in 88 bits\");\n return uint88(value);\n }\n\n /**\n * @dev Returns the downcasted uint80 from uint256, reverting on\n * overflow (when the input is greater than largest uint80).\n *\n * Counterpart to Solidity's `uint80` operator.\n *\n * Requirements:\n *\n * - input must fit into 80 bits\n *\n * _Available since v4.7._\n */\n function toUint80(uint256 value) internal pure returns (uint80) {\n require(value <= type(uint80).max, \"SafeCast: value doesn't fit in 80 bits\");\n return uint80(value);\n }\n\n /**\n * @dev Returns the downcasted uint72 from uint256, reverting on\n * overflow (when the input is greater than largest uint72).\n *\n * Counterpart to Solidity's `uint72` operator.\n *\n * Requirements:\n *\n * - input must fit into 72 bits\n *\n * _Available since v4.7._\n */\n function toUint72(uint256 value) internal pure returns (uint72) {\n require(value <= type(uint72).max, \"SafeCast: value doesn't fit in 72 bits\");\n return uint72(value);\n }\n\n /**\n * @dev Returns the downcasted uint64 from uint256, reverting on\n * overflow (when the input is greater than largest uint64).\n *\n * Counterpart to Solidity's `uint64` operator.\n *\n * Requirements:\n *\n * - input must fit into 64 bits\n *\n * _Available since v2.5._\n */\n function toUint64(uint256 value) internal pure returns (uint64) {\n require(value <= type(uint64).max, \"SafeCast: value doesn't fit in 64 bits\");\n return uint64(value);\n }\n\n /**\n * @dev Returns the downcasted uint56 from uint256, reverting on\n * overflow (when the input is greater than largest uint56).\n *\n * Counterpart to Solidity's `uint56` operator.\n *\n * Requirements:\n *\n * - input must fit into 56 bits\n *\n * _Available since v4.7._\n */\n function toUint56(uint256 value) internal pure returns (uint56) {\n require(value <= type(uint56).max, \"SafeCast: value doesn't fit in 56 bits\");\n return uint56(value);\n }\n\n /**\n * @dev Returns the downcasted uint48 from uint256, reverting on\n * overflow (when the input is greater than largest uint48).\n *\n * Counterpart to Solidity's `uint48` operator.\n *\n * Requirements:\n *\n * - input must fit into 48 bits\n *\n * _Available since v4.7._\n */\n function toUint48(uint256 value) internal pure returns (uint48) {\n require(value <= type(uint48).max, \"SafeCast: value doesn't fit in 48 bits\");\n return uint48(value);\n }\n\n /**\n * @dev Returns the downcasted uint40 from uint256, reverting on\n * overflow (when the input is greater than largest uint40).\n *\n * Counterpart to Solidity's `uint40` operator.\n *\n * Requirements:\n *\n * - input must fit into 40 bits\n *\n * _Available since v4.7._\n */\n function toUint40(uint256 value) internal pure returns (uint40) {\n require(value <= type(uint40).max, \"SafeCast: value doesn't fit in 40 bits\");\n return uint40(value);\n }\n\n /**\n * @dev Returns the downcasted uint32 from uint256, reverting on\n * overflow (when the input is greater than largest uint32).\n *\n * Counterpart to Solidity's `uint32` operator.\n *\n * Requirements:\n *\n * - input must fit into 32 bits\n *\n * _Available since v2.5._\n */\n function toUint32(uint256 value) internal pure returns (uint32) {\n require(value <= type(uint32).max, \"SafeCast: value doesn't fit in 32 bits\");\n return uint32(value);\n }\n\n /**\n * @dev Returns the downcasted uint24 from uint256, reverting on\n * overflow (when the input is greater than largest uint24).\n *\n * Counterpart to Solidity's `uint24` operator.\n *\n * Requirements:\n *\n * - input must fit into 24 bits\n *\n * _Available since v4.7._\n */\n function toUint24(uint256 value) internal pure returns (uint24) {\n require(value <= type(uint24).max, \"SafeCast: value doesn't fit in 24 bits\");\n return uint24(value);\n }\n\n /**\n * @dev Returns the downcasted uint16 from uint256, reverting on\n * overflow (when the input is greater than largest uint16).\n *\n * Counterpart to Solidity's `uint16` operator.\n *\n * Requirements:\n *\n * - input must fit into 16 bits\n *\n * _Available since v2.5._\n */\n function toUint16(uint256 value) internal pure returns (uint16) {\n require(value <= type(uint16).max, \"SafeCast: value doesn't fit in 16 bits\");\n return uint16(value);\n }\n\n /**\n * @dev Returns the downcasted uint8 from uint256, reverting on\n * overflow (when the input is greater than largest uint8).\n *\n * Counterpart to Solidity's `uint8` operator.\n *\n * Requirements:\n *\n * - input must fit into 8 bits\n *\n * _Available since v2.5._\n */\n function toUint8(uint256 value) internal pure returns (uint8) {\n require(value <= type(uint8).max, \"SafeCast: value doesn't fit in 8 bits\");\n return uint8(value);\n }\n\n /**\n * @dev Converts a signed int256 into an unsigned uint256.\n *\n * Requirements:\n *\n * - input must be greater than or equal to 0.\n *\n * _Available since v3.0._\n */\n function toUint256(int256 value) internal pure returns (uint256) {\n require(value >= 0, \"SafeCast: value must be positive\");\n return uint256(value);\n }\n\n /**\n * @dev Returns the downcasted int248 from int256, reverting on\n * overflow (when the input is less than smallest int248 or\n * greater than largest int248).\n *\n * Counterpart to Solidity's `int248` operator.\n *\n * Requirements:\n *\n * - input must fit into 248 bits\n *\n * _Available since v4.7._\n */\n function toInt248(int256 value) internal pure returns (int248 downcasted) {\n downcasted = int248(value);\n require(downcasted == value, \"SafeCast: value doesn't fit in 248 bits\");\n }\n\n /**\n * @dev Returns the downcasted int240 from int256, reverting on\n * overflow (when the input is less than smallest int240 or\n * greater than largest int240).\n *\n * Counterpart to Solidity's `int240` operator.\n *\n * Requirements:\n *\n * - input must fit into 240 bits\n *\n * _Available since v4.7._\n */\n function toInt240(int256 value) internal pure returns (int240 downcasted) {\n downcasted = int240(value);\n require(downcasted == value, \"SafeCast: value doesn't fit in 240 bits\");\n }\n\n /**\n * @dev Returns the downcasted int232 from int256, reverting on\n * overflow (when the input is less than smallest int232 or\n * greater than largest int232).\n *\n * Counterpart to Solidity's `int232` operator.\n *\n * Requirements:\n *\n * - input must fit into 232 bits\n *\n * _Available since v4.7._\n */\n function toInt232(int256 value) internal pure returns (int232 downcasted) {\n downcasted = int232(value);\n require(downcasted == value, \"SafeCast: value doesn't fit in 232 bits\");\n }\n\n /**\n * @dev Returns the downcasted int224 from int256, reverting on\n * overflow (when the input is less than smallest int224 or\n * greater than largest int224).\n *\n * Counterpart to Solidity's `int224` operator.\n *\n * Requirements:\n *\n * - input must fit into 224 bits\n *\n * _Available since v4.7._\n */\n function toInt224(int256 value) internal pure returns (int224 downcasted) {\n downcasted = int224(value);\n require(downcasted == value, \"SafeCast: value doesn't fit in 224 bits\");\n }\n\n /**\n * @dev Returns the downcasted int216 from int256, reverting on\n * overflow (when the input is less than smallest int216 or\n * greater than largest int216).\n *\n * Counterpart to Solidity's `int216` operator.\n *\n * Requirements:\n *\n * - input must fit into 216 bits\n *\n * _Available since v4.7._\n */\n function toInt216(int256 value) internal pure returns (int216 downcasted) {\n downcasted = int216(value);\n require(downcasted == value, \"SafeCast: value doesn't fit in 216 bits\");\n }\n\n /**\n * @dev Returns the downcasted int208 from int256, reverting on\n * overflow (when the input is less than smallest int208 or\n * greater than largest int208).\n *\n * Counterpart to Solidity's `int208` operator.\n *\n * Requirements:\n *\n * - input must fit into 208 bits\n *\n * _Available since v4.7._\n */\n function toInt208(int256 value) internal pure returns (int208 downcasted) {\n downcasted = int208(value);\n require(downcasted == value, \"SafeCast: value doesn't fit in 208 bits\");\n }\n\n /**\n * @dev Returns the downcasted int200 from int256, reverting on\n * overflow (when the input is less than smallest int200 or\n * greater than largest int200).\n *\n * Counterpart to Solidity's `int200` operator.\n *\n * Requirements:\n *\n * - input must fit into 200 bits\n *\n * _Available since v4.7._\n */\n function toInt200(int256 value) internal pure returns (int200 downcasted) {\n downcasted = int200(value);\n require(downcasted == value, \"SafeCast: value doesn't fit in 200 bits\");\n }\n\n /**\n * @dev Returns the downcasted int192 from int256, reverting on\n * overflow (when the input is less than smallest int192 or\n * greater than largest int192).\n *\n * Counterpart to Solidity's `int192` operator.\n *\n * Requirements:\n *\n * - input must fit into 192 bits\n *\n * _Available since v4.7._\n */\n function toInt192(int256 value) internal pure returns (int192 downcasted) {\n downcasted = int192(value);\n require(downcasted == value, \"SafeCast: value doesn't fit in 192 bits\");\n }\n\n /**\n * @dev Returns the downcasted int184 from int256, reverting on\n * overflow (when the input is less than smallest int184 or\n * greater than largest int184).\n *\n * Counterpart to Solidity's `int184` operator.\n *\n * Requirements:\n *\n * - input must fit into 184 bits\n *\n * _Available since v4.7._\n */\n function toInt184(int256 value) internal pure returns (int184 downcasted) {\n downcasted = int184(value);\n require(downcasted == value, \"SafeCast: value doesn't fit in 184 bits\");\n }\n\n /**\n * @dev Returns the downcasted int176 from int256, reverting on\n * overflow (when the input is less than smallest int176 or\n * greater than largest int176).\n *\n * Counterpart to Solidity's `int176` operator.\n *\n * Requirements:\n *\n * - input must fit into 176 bits\n *\n * _Available since v4.7._\n */\n function toInt176(int256 value) internal pure returns (int176 downcasted) {\n downcasted = int176(value);\n require(downcasted == value, \"SafeCast: value doesn't fit in 176 bits\");\n }\n\n /**\n * @dev Returns the downcasted int168 from int256, reverting on\n * overflow (when the input is less than smallest int168 or\n * greater than largest int168).\n *\n * Counterpart to Solidity's `int168` operator.\n *\n * Requirements:\n *\n * - input must fit into 168 bits\n *\n * _Available since v4.7._\n */\n function toInt168(int256 value) internal pure returns (int168 downcasted) {\n downcasted = int168(value);\n require(downcasted == value, \"SafeCast: value doesn't fit in 168 bits\");\n }\n\n /**\n * @dev Returns the downcasted int160 from int256, reverting on\n * overflow (when the input is less than smallest int160 or\n * greater than largest int160).\n *\n * Counterpart to Solidity's `int160` operator.\n *\n * Requirements:\n *\n * - input must fit into 160 bits\n *\n * _Available since v4.7._\n */\n function toInt160(int256 value) internal pure returns (int160 downcasted) {\n downcasted = int160(value);\n require(downcasted == value, \"SafeCast: value doesn't fit in 160 bits\");\n }\n\n /**\n * @dev Returns the downcasted int152 from int256, reverting on\n * overflow (when the input is less than smallest int152 or\n * greater than largest int152).\n *\n * Counterpart to Solidity's `int152` operator.\n *\n * Requirements:\n *\n * - input must fit into 152 bits\n *\n * _Available since v4.7._\n */\n function toInt152(int256 value) internal pure returns (int152 downcasted) {\n downcasted = int152(value);\n require(downcasted == value, \"SafeCast: value doesn't fit in 152 bits\");\n }\n\n /**\n * @dev Returns the downcasted int144 from int256, reverting on\n * overflow (when the input is less than smallest int144 or\n * greater than largest int144).\n *\n * Counterpart to Solidity's `int144` operator.\n *\n * Requirements:\n *\n * - input must fit into 144 bits\n *\n * _Available since v4.7._\n */\n function toInt144(int256 value) internal pure returns (int144 downcasted) {\n downcasted = int144(value);\n require(downcasted == value, \"SafeCast: value doesn't fit in 144 bits\");\n }\n\n /**\n * @dev Returns the downcasted int136 from int256, reverting on\n * overflow (when the input is less than smallest int136 or\n * greater than largest int136).\n *\n * Counterpart to Solidity's `int136` operator.\n *\n * Requirements:\n *\n * - input must fit into 136 bits\n *\n * _Available since v4.7._\n */\n function toInt136(int256 value) internal pure returns (int136 downcasted) {\n downcasted = int136(value);\n require(downcasted == value, \"SafeCast: value doesn't fit in 136 bits\");\n }\n\n /**\n * @dev Returns the downcasted int128 from int256, reverting on\n * overflow (when the input is less than smallest int128 or\n * greater than largest int128).\n *\n * Counterpart to Solidity's `int128` operator.\n *\n * Requirements:\n *\n * - input must fit into 128 bits\n *\n * _Available since v3.1._\n */\n function toInt128(int256 value) internal pure returns (int128 downcasted) {\n downcasted = int128(value);\n require(downcasted == value, \"SafeCast: value doesn't fit in 128 bits\");\n }\n\n /**\n * @dev Returns the downcasted int120 from int256, reverting on\n * overflow (when the input is less than smallest int120 or\n * greater than largest int120).\n *\n * Counterpart to Solidity's `int120` operator.\n *\n * Requirements:\n *\n * - input must fit into 120 bits\n *\n * _Available since v4.7._\n */\n function toInt120(int256 value) internal pure returns (int120 downcasted) {\n downcasted = int120(value);\n require(downcasted == value, \"SafeCast: value doesn't fit in 120 bits\");\n }\n\n /**\n * @dev Returns the downcasted int112 from int256, reverting on\n * overflow (when the input is less than smallest int112 or\n * greater than largest int112).\n *\n * Counterpart to Solidity's `int112` operator.\n *\n * Requirements:\n *\n * - input must fit into 112 bits\n *\n * _Available since v4.7._\n */\n function toInt112(int256 value) internal pure returns (int112 downcasted) {\n downcasted = int112(value);\n require(downcasted == value, \"SafeCast: value doesn't fit in 112 bits\");\n }\n\n /**\n * @dev Returns the downcasted int104 from int256, reverting on\n * overflow (when the input is less than smallest int104 or\n * greater than largest int104).\n *\n * Counterpart to Solidity's `int104` operator.\n *\n * Requirements:\n *\n * - input must fit into 104 bits\n *\n * _Available since v4.7._\n */\n function toInt104(int256 value) internal pure returns (int104 downcasted) {\n downcasted = int104(value);\n require(downcasted == value, \"SafeCast: value doesn't fit in 104 bits\");\n }\n\n /**\n * @dev Returns the downcasted int96 from int256, reverting on\n * overflow (when the input is less than smallest int96 or\n * greater than largest int96).\n *\n * Counterpart to Solidity's `int96` operator.\n *\n * Requirements:\n *\n * - input must fit into 96 bits\n *\n * _Available since v4.7._\n */\n function toInt96(int256 value) internal pure returns (int96 downcasted) {\n downcasted = int96(value);\n require(downcasted == value, \"SafeCast: value doesn't fit in 96 bits\");\n }\n\n /**\n * @dev Returns the downcasted int88 from int256, reverting on\n * overflow (when the input is less than smallest int88 or\n * greater than largest int88).\n *\n * Counterpart to Solidity's `int88` operator.\n *\n * Requirements:\n *\n * - input must fit into 88 bits\n *\n * _Available since v4.7._\n */\n function toInt88(int256 value) internal pure returns (int88 downcasted) {\n downcasted = int88(value);\n require(downcasted == value, \"SafeCast: value doesn't fit in 88 bits\");\n }\n\n /**\n * @dev Returns the downcasted int80 from int256, reverting on\n * overflow (when the input is less than smallest int80 or\n * greater than largest int80).\n *\n * Counterpart to Solidity's `int80` operator.\n *\n * Requirements:\n *\n * - input must fit into 80 bits\n *\n * _Available since v4.7._\n */\n function toInt80(int256 value) internal pure returns (int80 downcasted) {\n downcasted = int80(value);\n require(downcasted == value, \"SafeCast: value doesn't fit in 80 bits\");\n }\n\n /**\n * @dev Returns the downcasted int72 from int256, reverting on\n * overflow (when the input is less than smallest int72 or\n * greater than largest int72).\n *\n * Counterpart to Solidity's `int72` operator.\n *\n * Requirements:\n *\n * - input must fit into 72 bits\n *\n * _Available since v4.7._\n */\n function toInt72(int256 value) internal pure returns (int72 downcasted) {\n downcasted = int72(value);\n require(downcasted == value, \"SafeCast: value doesn't fit in 72 bits\");\n }\n\n /**\n * @dev Returns the downcasted int64 from int256, reverting on\n * overflow (when the input is less than smallest int64 or\n * greater than largest int64).\n *\n * Counterpart to Solidity's `int64` operator.\n *\n * Requirements:\n *\n * - input must fit into 64 bits\n *\n * _Available since v3.1._\n */\n function toInt64(int256 value) internal pure returns (int64 downcasted) {\n downcasted = int64(value);\n require(downcasted == value, \"SafeCast: value doesn't fit in 64 bits\");\n }\n\n /**\n * @dev Returns the downcasted int56 from int256, reverting on\n * overflow (when the input is less than smallest int56 or\n * greater than largest int56).\n *\n * Counterpart to Solidity's `int56` operator.\n *\n * Requirements:\n *\n * - input must fit into 56 bits\n *\n * _Available since v4.7._\n */\n function toInt56(int256 value) internal pure returns (int56 downcasted) {\n downcasted = int56(value);\n require(downcasted == value, \"SafeCast: value doesn't fit in 56 bits\");\n }\n\n /**\n * @dev Returns the downcasted int48 from int256, reverting on\n * overflow (when the input is less than smallest int48 or\n * greater than largest int48).\n *\n * Counterpart to Solidity's `int48` operator.\n *\n * Requirements:\n *\n * - input must fit into 48 bits\n *\n * _Available since v4.7._\n */\n function toInt48(int256 value) internal pure returns (int48 downcasted) {\n downcasted = int48(value);\n require(downcasted == value, \"SafeCast: value doesn't fit in 48 bits\");\n }\n\n /**\n * @dev Returns the downcasted int40 from int256, reverting on\n * overflow (when the input is less than smallest int40 or\n * greater than largest int40).\n *\n * Counterpart to Solidity's `int40` operator.\n *\n * Requirements:\n *\n * - input must fit into 40 bits\n *\n * _Available since v4.7._\n */\n function toInt40(int256 value) internal pure returns (int40 downcasted) {\n downcasted = int40(value);\n require(downcasted == value, \"SafeCast: value doesn't fit in 40 bits\");\n }\n\n /**\n * @dev Returns the downcasted int32 from int256, reverting on\n * overflow (when the input is less than smallest int32 or\n * greater than largest int32).\n *\n * Counterpart to Solidity's `int32` operator.\n *\n * Requirements:\n *\n * - input must fit into 32 bits\n *\n * _Available since v3.1._\n */\n function toInt32(int256 value) internal pure returns (int32 downcasted) {\n downcasted = int32(value);\n require(downcasted == value, \"SafeCast: value doesn't fit in 32 bits\");\n }\n\n /**\n * @dev Returns the downcasted int24 from int256, reverting on\n * overflow (when the input is less than smallest int24 or\n * greater than largest int24).\n *\n * Counterpart to Solidity's `int24` operator.\n *\n * Requirements:\n *\n * - input must fit into 24 bits\n *\n * _Available since v4.7._\n */\n function toInt24(int256 value) internal pure returns (int24 downcasted) {\n downcasted = int24(value);\n require(downcasted == value, \"SafeCast: value doesn't fit in 24 bits\");\n }\n\n /**\n * @dev Returns the downcasted int16 from int256, reverting on\n * overflow (when the input is less than smallest int16 or\n * greater than largest int16).\n *\n * Counterpart to Solidity's `int16` operator.\n *\n * Requirements:\n *\n * - input must fit into 16 bits\n *\n * _Available since v3.1._\n */\n function toInt16(int256 value) internal pure returns (int16 downcasted) {\n downcasted = int16(value);\n require(downcasted == value, \"SafeCast: value doesn't fit in 16 bits\");\n }\n\n /**\n * @dev Returns the downcasted int8 from int256, reverting on\n * overflow (when the input is less than smallest int8 or\n * greater than largest int8).\n *\n * Counterpart to Solidity's `int8` operator.\n *\n * Requirements:\n *\n * - input must fit into 8 bits\n *\n * _Available since v3.1._\n */\n function toInt8(int256 value) internal pure returns (int8 downcasted) {\n downcasted = int8(value);\n require(downcasted == value, \"SafeCast: value doesn't fit in 8 bits\");\n }\n\n /**\n * @dev Converts an unsigned uint256 into a signed int256.\n *\n * Requirements:\n *\n * - input must be less than or equal to maxInt256.\n *\n * _Available since v3.0._\n */\n function toInt256(uint256 value) internal pure returns (int256) {\n // Note: Unsafe cast below is okay because `type(int256).max` is guaranteed to be positive\n require(value <= uint256(type(int256).max), \"SafeCast: value doesn't fit in an int256\");\n return int256(value);\n }\n}\n"},"@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/StorageSlot.sol)\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Library for reading and writing primitive types to specific storage slots.\n *\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\n * This library helps with reading and writing to such slots without the need for inline assembly.\n *\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\n *\n * Example usage to set ERC1967 implementation slot:\n * ```solidity\n * contract ERC1967 {\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n *\n * function _getImplementation() internal view returns (address) {\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\n * }\n *\n * function _setImplementation(address newImplementation) internal {\n * require(Address.isContract(newImplementation), \"ERC1967: new implementation is not a contract\");\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\n * }\n * }\n * ```\n *\n * _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._\n * _Available since v4.9 for `string`, `bytes`._\n */\nlibrary StorageSlotUpgradeable {\n struct AddressSlot {\n address value;\n }\n\n struct BooleanSlot {\n bool value;\n }\n\n struct Bytes32Slot {\n bytes32 value;\n }\n\n struct Uint256Slot {\n uint256 value;\n }\n\n struct StringSlot {\n string value;\n }\n\n struct BytesSlot {\n bytes value;\n }\n\n /**\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\n */\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\n */\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\n */\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\n */\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `StringSlot` with member `value` located at `slot`.\n */\n function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\n */\n function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := store.slot\n }\n }\n\n /**\n * @dev Returns an `BytesSlot` with member `value` located at `slot`.\n */\n function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\n */\n function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := store.slot\n }\n }\n}\n"},"@openzeppelin/contracts/interfaces/draft-IERC1822.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.5.0) (interfaces/draft-IERC1822.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\n * proxy whose upgrades are fully controlled by the current implementation.\n */\ninterface IERC1822Proxiable {\n /**\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\n * address.\n *\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\n * function revert if invoked through a proxy.\n */\n function proxiableUUID() external view returns (bytes32);\n}\n"},"@openzeppelin/contracts/interfaces/IERC1967.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (interfaces/IERC1967.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\n *\n * _Available since v4.8.3._\n */\ninterface IERC1967 {\n /**\n * @dev Emitted when the implementation is upgraded.\n */\n event Upgraded(address indexed implementation);\n\n /**\n * @dev Emitted when the admin account has changed.\n */\n event AdminChanged(address previousAdmin, address newAdmin);\n\n /**\n * @dev Emitted when the beacon is changed.\n */\n event BeaconUpgraded(address indexed beacon);\n}\n"},"@openzeppelin/contracts/proxy/beacon/IBeacon.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\n */\ninterface IBeacon {\n /**\n * @dev Must return an address that can be used as a delegate call target.\n *\n * {BeaconProxy} will check that this address is a contract.\n */\n function implementation() external view returns (address);\n}\n"},"@openzeppelin/contracts/proxy/Clones.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/Clones.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev https://eips.ethereum.org/EIPS/eip-1167[EIP 1167] is a standard for\n * deploying minimal proxy contracts, also known as \"clones\".\n *\n * > To simply and cheaply clone contract functionality in an immutable way, this standard specifies\n * > a minimal bytecode implementation that delegates all calls to a known, fixed address.\n *\n * The library includes functions to deploy a proxy using either `create` (traditional deployment) or `create2`\n * (salted deterministic deployment). It also includes functions to predict the addresses of clones deployed using the\n * deterministic method.\n *\n * _Available since v3.4._\n */\nlibrary Clones {\n /**\n * @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`.\n *\n * This function uses the create opcode, which should never revert.\n */\n function clone(address implementation) internal returns (address instance) {\n /// @solidity memory-safe-assembly\n assembly {\n // Cleans the upper 96 bits of the `implementation` word, then packs the first 3 bytes\n // of the `implementation` address with the bytecode before the address.\n mstore(0x00, or(shr(0xe8, shl(0x60, implementation)), 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000))\n // Packs the remaining 17 bytes of `implementation` with the bytecode after the address.\n mstore(0x20, or(shl(0x78, implementation), 0x5af43d82803e903d91602b57fd5bf3))\n instance := create(0, 0x09, 0x37)\n }\n require(instance != address(0), \"ERC1167: create failed\");\n }\n\n /**\n * @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`.\n *\n * This function uses the create2 opcode and a `salt` to deterministically deploy\n * the clone. Using the same `implementation` and `salt` multiple time will revert, since\n * the clones cannot be deployed twice at the same address.\n */\n function cloneDeterministic(address implementation, bytes32 salt) internal returns (address instance) {\n /// @solidity memory-safe-assembly\n assembly {\n // Cleans the upper 96 bits of the `implementation` word, then packs the first 3 bytes\n // of the `implementation` address with the bytecode before the address.\n mstore(0x00, or(shr(0xe8, shl(0x60, implementation)), 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000))\n // Packs the remaining 17 bytes of `implementation` with the bytecode after the address.\n mstore(0x20, or(shl(0x78, implementation), 0x5af43d82803e903d91602b57fd5bf3))\n instance := create2(0, 0x09, 0x37, salt)\n }\n require(instance != address(0), \"ERC1167: create2 failed\");\n }\n\n /**\n * @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}.\n */\n function predictDeterministicAddress(\n address implementation,\n bytes32 salt,\n address deployer\n ) internal pure returns (address predicted) {\n /// @solidity memory-safe-assembly\n assembly {\n let ptr := mload(0x40)\n mstore(add(ptr, 0x38), deployer)\n mstore(add(ptr, 0x24), 0x5af43d82803e903d91602b57fd5bf3ff)\n mstore(add(ptr, 0x14), implementation)\n mstore(ptr, 0x3d602d80600a3d3981f3363d3d373d3d3d363d73)\n mstore(add(ptr, 0x58), salt)\n mstore(add(ptr, 0x78), keccak256(add(ptr, 0x0c), 0x37))\n predicted := keccak256(add(ptr, 0x43), 0x55)\n }\n }\n\n /**\n * @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}.\n */\n function predictDeterministicAddress(\n address implementation,\n bytes32 salt\n ) internal view returns (address predicted) {\n return predictDeterministicAddress(implementation, salt, address(this));\n }\n}\n"},"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.7.0) (proxy/ERC1967/ERC1967Proxy.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../Proxy.sol\";\nimport \"./ERC1967Upgrade.sol\";\n\n/**\n * @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an\n * implementation address that can be changed. This address is stored in storage in the location specified by\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the\n * implementation behind the proxy.\n */\ncontract ERC1967Proxy is Proxy, ERC1967Upgrade {\n /**\n * @dev Initializes the upgradeable proxy with an initial implementation specified by `_logic`.\n *\n * If `_data` is nonempty, it's used as data in a delegate call to `_logic`. This will typically be an encoded\n * function call, and allows initializing the storage of the proxy like a Solidity constructor.\n */\n constructor(address _logic, bytes memory _data) payable {\n _upgradeToAndCall(_logic, _data, false);\n }\n\n /**\n * @dev Returns the current implementation address.\n */\n function _implementation() internal view virtual override returns (address impl) {\n return ERC1967Upgrade._getImplementation();\n }\n}\n"},"@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/ERC1967/ERC1967Upgrade.sol)\n\npragma solidity ^0.8.2;\n\nimport \"../beacon/IBeacon.sol\";\nimport \"../../interfaces/IERC1967.sol\";\nimport \"../../interfaces/draft-IERC1822.sol\";\nimport \"../../utils/Address.sol\";\nimport \"../../utils/StorageSlot.sol\";\n\n/**\n * @dev This abstract contract provides getters and event emitting update functions for\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\n *\n * _Available since v4.1._\n */\nabstract contract ERC1967Upgrade is IERC1967 {\n // This is the keccak-256 hash of \"eip1967.proxy.rollback\" subtracted by 1\n bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\n\n /**\n * @dev Storage slot with the address of the current implementation.\n * This is the keccak-256 hash of \"eip1967.proxy.implementation\" subtracted by 1, and is\n * validated in the constructor.\n */\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n\n /**\n * @dev Returns the current implementation address.\n */\n function _getImplementation() internal view returns (address) {\n return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\n }\n\n /**\n * @dev Stores a new address in the EIP1967 implementation slot.\n */\n function _setImplementation(address newImplementation) private {\n require(Address.isContract(newImplementation), \"ERC1967: new implementation is not a contract\");\n StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\n }\n\n /**\n * @dev Perform implementation upgrade\n *\n * Emits an {Upgraded} event.\n */\n function _upgradeTo(address newImplementation) internal {\n _setImplementation(newImplementation);\n emit Upgraded(newImplementation);\n }\n\n /**\n * @dev Perform implementation upgrade with additional setup call.\n *\n * Emits an {Upgraded} event.\n */\n function _upgradeToAndCall(address newImplementation, bytes memory data, bool forceCall) internal {\n _upgradeTo(newImplementation);\n if (data.length > 0 || forceCall) {\n Address.functionDelegateCall(newImplementation, data);\n }\n }\n\n /**\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\n *\n * Emits an {Upgraded} event.\n */\n function _upgradeToAndCallUUPS(address newImplementation, bytes memory data, bool forceCall) internal {\n // Upgrades from old implementations will perform a rollback test. This test requires the new\n // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\n // this special case will break upgrade paths from old UUPS implementation to new ones.\n if (StorageSlot.getBooleanSlot(_ROLLBACK_SLOT).value) {\n _setImplementation(newImplementation);\n } else {\n try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\n require(slot == _IMPLEMENTATION_SLOT, \"ERC1967Upgrade: unsupported proxiableUUID\");\n } catch {\n revert(\"ERC1967Upgrade: new implementation is not UUPS\");\n }\n _upgradeToAndCall(newImplementation, data, forceCall);\n }\n }\n\n /**\n * @dev Storage slot with the admin of the contract.\n * This is the keccak-256 hash of \"eip1967.proxy.admin\" subtracted by 1, and is\n * validated in the constructor.\n */\n bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\n\n /**\n * @dev Returns the current admin.\n */\n function _getAdmin() internal view returns (address) {\n return StorageSlot.getAddressSlot(_ADMIN_SLOT).value;\n }\n\n /**\n * @dev Stores a new address in the EIP1967 admin slot.\n */\n function _setAdmin(address newAdmin) private {\n require(newAdmin != address(0), \"ERC1967: new admin is the zero address\");\n StorageSlot.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\n }\n\n /**\n * @dev Changes the admin of the proxy.\n *\n * Emits an {AdminChanged} event.\n */\n function _changeAdmin(address newAdmin) internal {\n emit AdminChanged(_getAdmin(), newAdmin);\n _setAdmin(newAdmin);\n }\n\n /**\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\n * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\n */\n bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\n\n /**\n * @dev Returns the current beacon.\n */\n function _getBeacon() internal view returns (address) {\n return StorageSlot.getAddressSlot(_BEACON_SLOT).value;\n }\n\n /**\n * @dev Stores a new beacon in the EIP1967 beacon slot.\n */\n function _setBeacon(address newBeacon) private {\n require(Address.isContract(newBeacon), \"ERC1967: new beacon is not a contract\");\n require(\n Address.isContract(IBeacon(newBeacon).implementation()),\n \"ERC1967: beacon implementation is not a contract\"\n );\n StorageSlot.getAddressSlot(_BEACON_SLOT).value = newBeacon;\n }\n\n /**\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\n *\n * Emits a {BeaconUpgraded} event.\n */\n function _upgradeBeaconToAndCall(address newBeacon, bytes memory data, bool forceCall) internal {\n _setBeacon(newBeacon);\n emit BeaconUpgraded(newBeacon);\n if (data.length > 0 || forceCall) {\n Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\n }\n }\n}\n"},"@openzeppelin/contracts/proxy/Proxy.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.6.0) (proxy/Proxy.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\n * be specified by overriding the virtual {_implementation} function.\n *\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\n * different contract through the {_delegate} function.\n *\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\n */\nabstract contract Proxy {\n /**\n * @dev Delegates the current call to `implementation`.\n *\n * This function does not return to its internal call site, it will return directly to the external caller.\n */\n function _delegate(address implementation) internal virtual {\n assembly {\n // Copy msg.data. We take full control of memory in this inline assembly\n // block because it will not return to Solidity code. We overwrite the\n // Solidity scratch pad at memory position 0.\n calldatacopy(0, 0, calldatasize())\n\n // Call the implementation.\n // out and outsize are 0 because we don't know the size yet.\n let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)\n\n // Copy the returned data.\n returndatacopy(0, 0, returndatasize())\n\n switch result\n // delegatecall returns 0 on error.\n case 0 {\n revert(0, returndatasize())\n }\n default {\n return(0, returndatasize())\n }\n }\n }\n\n /**\n * @dev This is a virtual function that should be overridden so it returns the address to which the fallback function\n * and {_fallback} should delegate.\n */\n function _implementation() internal view virtual returns (address);\n\n /**\n * @dev Delegates the current call to the address returned by `_implementation()`.\n *\n * This function does not return to its internal call site, it will return directly to the external caller.\n */\n function _fallback() internal virtual {\n _beforeFallback();\n _delegate(_implementation());\n }\n\n /**\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\n * function in the contract matches the call data.\n */\n fallback() external payable virtual {\n _fallback();\n }\n\n /**\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data\n * is empty.\n */\n receive() external payable virtual {\n _fallback();\n }\n\n /**\n * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`\n * call, or as part of the Solidity `fallback` or `receive` functions.\n *\n * If overridden should call `super._beforeFallback()`.\n */\n function _beforeFallback() internal virtual {}\n}\n"},"@openzeppelin/contracts/token/ERC1155/ERC1155.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC1155/ERC1155.sol)\n\npragma solidity ^0.8.0;\n\nimport \"./IERC1155.sol\";\nimport \"./IERC1155Receiver.sol\";\nimport \"./extensions/IERC1155MetadataURI.sol\";\nimport \"../../utils/Address.sol\";\nimport \"../../utils/Context.sol\";\nimport \"../../utils/introspection/ERC165.sol\";\n\n/**\n * @dev Implementation of the basic standard multi-token.\n * See https://eips.ethereum.org/EIPS/eip-1155\n * Originally based on code by Enjin: https://github.com/enjin/erc-1155\n *\n * _Available since v3.1._\n */\ncontract ERC1155 is Context, ERC165, IERC1155, IERC1155MetadataURI {\n using Address for address;\n\n // Mapping from token ID to account balances\n mapping(uint256 => mapping(address => uint256)) private _balances;\n\n // Mapping from account to operator approvals\n mapping(address => mapping(address => bool)) private _operatorApprovals;\n\n // Used as the URI for all token types by relying on ID substitution, e.g. https://token-cdn-domain/{id}.json\n string private _uri;\n\n /**\n * @dev See {_setURI}.\n */\n constructor(string memory uri_) {\n _setURI(uri_);\n }\n\n /**\n * @dev See {IERC165-supportsInterface}.\n */\n function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) {\n return\n interfaceId == type(IERC1155).interfaceId ||\n interfaceId == type(IERC1155MetadataURI).interfaceId ||\n super.supportsInterface(interfaceId);\n }\n\n /**\n * @dev See {IERC1155MetadataURI-uri}.\n *\n * This implementation returns the same URI for *all* token types. It relies\n * on the token type ID substitution mechanism\n * https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP].\n *\n * Clients calling this function must replace the `\\{id\\}` substring with the\n * actual token type ID.\n */\n function uri(uint256) public view virtual override returns (string memory) {\n return _uri;\n }\n\n /**\n * @dev See {IERC1155-balanceOf}.\n *\n * Requirements:\n *\n * - `account` cannot be the zero address.\n */\n function balanceOf(address account, uint256 id) public view virtual override returns (uint256) {\n require(account != address(0), \"ERC1155: address zero is not a valid owner\");\n return _balances[id][account];\n }\n\n /**\n * @dev See {IERC1155-balanceOfBatch}.\n *\n * Requirements:\n *\n * - `accounts` and `ids` must have the same length.\n */\n function balanceOfBatch(\n address[] memory accounts,\n uint256[] memory ids\n ) public view virtual override returns (uint256[] memory) {\n require(accounts.length == ids.length, \"ERC1155: accounts and ids length mismatch\");\n\n uint256[] memory batchBalances = new uint256[](accounts.length);\n\n for (uint256 i = 0; i < accounts.length; ++i) {\n batchBalances[i] = balanceOf(accounts[i], ids[i]);\n }\n\n return batchBalances;\n }\n\n /**\n * @dev See {IERC1155-setApprovalForAll}.\n */\n function setApprovalForAll(address operator, bool approved) public virtual override {\n _setApprovalForAll(_msgSender(), operator, approved);\n }\n\n /**\n * @dev See {IERC1155-isApprovedForAll}.\n */\n function isApprovedForAll(address account, address operator) public view virtual override returns (bool) {\n return _operatorApprovals[account][operator];\n }\n\n /**\n * @dev See {IERC1155-safeTransferFrom}.\n */\n function safeTransferFrom(\n address from,\n address to,\n uint256 id,\n uint256 amount,\n bytes memory data\n ) public virtual override {\n require(\n from == _msgSender() || isApprovedForAll(from, _msgSender()),\n \"ERC1155: caller is not token owner or approved\"\n );\n _safeTransferFrom(from, to, id, amount, data);\n }\n\n /**\n * @dev See {IERC1155-safeBatchTransferFrom}.\n */\n function safeBatchTransferFrom(\n address from,\n address to,\n uint256[] memory ids,\n uint256[] memory amounts,\n bytes memory data\n ) public virtual override {\n require(\n from == _msgSender() || isApprovedForAll(from, _msgSender()),\n \"ERC1155: caller is not token owner or approved\"\n );\n _safeBatchTransferFrom(from, to, ids, amounts, data);\n }\n\n /**\n * @dev Transfers `amount` tokens of token type `id` from `from` to `to`.\n *\n * Emits a {TransferSingle} event.\n *\n * Requirements:\n *\n * - `to` cannot be the zero address.\n * - `from` must have a balance of tokens of type `id` of at least `amount`.\n * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the\n * acceptance magic value.\n */\n function _safeTransferFrom(\n address from,\n address to,\n uint256 id,\n uint256 amount,\n bytes memory data\n ) internal virtual {\n require(to != address(0), \"ERC1155: transfer to the zero address\");\n\n address operator = _msgSender();\n uint256[] memory ids = _asSingletonArray(id);\n uint256[] memory amounts = _asSingletonArray(amount);\n\n _beforeTokenTransfer(operator, from, to, ids, amounts, data);\n\n uint256 fromBalance = _balances[id][from];\n require(fromBalance >= amount, \"ERC1155: insufficient balance for transfer\");\n unchecked {\n _balances[id][from] = fromBalance - amount;\n }\n _balances[id][to] += amount;\n\n emit TransferSingle(operator, from, to, id, amount);\n\n _afterTokenTransfer(operator, from, to, ids, amounts, data);\n\n _doSafeTransferAcceptanceCheck(operator, from, to, id, amount, data);\n }\n\n /**\n * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_safeTransferFrom}.\n *\n * Emits a {TransferBatch} event.\n *\n * Requirements:\n *\n * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the\n * acceptance magic value.\n */\n function _safeBatchTransferFrom(\n address from,\n address to,\n uint256[] memory ids,\n uint256[] memory amounts,\n bytes memory data\n ) internal virtual {\n require(ids.length == amounts.length, \"ERC1155: ids and amounts length mismatch\");\n require(to != address(0), \"ERC1155: transfer to the zero address\");\n\n address operator = _msgSender();\n\n _beforeTokenTransfer(operator, from, to, ids, amounts, data);\n\n for (uint256 i = 0; i < ids.length; ++i) {\n uint256 id = ids[i];\n uint256 amount = amounts[i];\n\n uint256 fromBalance = _balances[id][from];\n require(fromBalance >= amount, \"ERC1155: insufficient balance for transfer\");\n unchecked {\n _balances[id][from] = fromBalance - amount;\n }\n _balances[id][to] += amount;\n }\n\n emit TransferBatch(operator, from, to, ids, amounts);\n\n _afterTokenTransfer(operator, from, to, ids, amounts, data);\n\n _doSafeBatchTransferAcceptanceCheck(operator, from, to, ids, amounts, data);\n }\n\n /**\n * @dev Sets a new URI for all token types, by relying on the token type ID\n * substitution mechanism\n * https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP].\n *\n * By this mechanism, any occurrence of the `\\{id\\}` substring in either the\n * URI or any of the amounts in the JSON file at said URI will be replaced by\n * clients with the token type ID.\n *\n * For example, the `https://token-cdn-domain/\\{id\\}.json` URI would be\n * interpreted by clients as\n * `https://token-cdn-domain/000000000000000000000000000000000000000000000000000000000004cce0.json`\n * for token type ID 0x4cce0.\n *\n * See {uri}.\n *\n * Because these URIs cannot be meaningfully represented by the {URI} event,\n * this function emits no events.\n */\n function _setURI(string memory newuri) internal virtual {\n _uri = newuri;\n }\n\n /**\n * @dev Creates `amount` tokens of token type `id`, and assigns them to `to`.\n *\n * Emits a {TransferSingle} event.\n *\n * Requirements:\n *\n * - `to` cannot be the zero address.\n * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the\n * acceptance magic value.\n */\n function _mint(address to, uint256 id, uint256 amount, bytes memory data) internal virtual {\n require(to != address(0), \"ERC1155: mint to the zero address\");\n\n address operator = _msgSender();\n uint256[] memory ids = _asSingletonArray(id);\n uint256[] memory amounts = _asSingletonArray(amount);\n\n _beforeTokenTransfer(operator, address(0), to, ids, amounts, data);\n\n _balances[id][to] += amount;\n emit TransferSingle(operator, address(0), to, id, amount);\n\n _afterTokenTransfer(operator, address(0), to, ids, amounts, data);\n\n _doSafeTransferAcceptanceCheck(operator, address(0), to, id, amount, data);\n }\n\n /**\n * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_mint}.\n *\n * Emits a {TransferBatch} event.\n *\n * Requirements:\n *\n * - `ids` and `amounts` must have the same length.\n * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the\n * acceptance magic value.\n */\n function _mintBatch(\n address to,\n uint256[] memory ids,\n uint256[] memory amounts,\n bytes memory data\n ) internal virtual {\n require(to != address(0), \"ERC1155: mint to the zero address\");\n require(ids.length == amounts.length, \"ERC1155: ids and amounts length mismatch\");\n\n address operator = _msgSender();\n\n _beforeTokenTransfer(operator, address(0), to, ids, amounts, data);\n\n for (uint256 i = 0; i < ids.length; i++) {\n _balances[ids[i]][to] += amounts[i];\n }\n\n emit TransferBatch(operator, address(0), to, ids, amounts);\n\n _afterTokenTransfer(operator, address(0), to, ids, amounts, data);\n\n _doSafeBatchTransferAcceptanceCheck(operator, address(0), to, ids, amounts, data);\n }\n\n /**\n * @dev Destroys `amount` tokens of token type `id` from `from`\n *\n * Emits a {TransferSingle} event.\n *\n * Requirements:\n *\n * - `from` cannot be the zero address.\n * - `from` must have at least `amount` tokens of token type `id`.\n */\n function _burn(address from, uint256 id, uint256 amount) internal virtual {\n require(from != address(0), \"ERC1155: burn from the zero address\");\n\n address operator = _msgSender();\n uint256[] memory ids = _asSingletonArray(id);\n uint256[] memory amounts = _asSingletonArray(amount);\n\n _beforeTokenTransfer(operator, from, address(0), ids, amounts, \"\");\n\n uint256 fromBalance = _balances[id][from];\n require(fromBalance >= amount, \"ERC1155: burn amount exceeds balance\");\n unchecked {\n _balances[id][from] = fromBalance - amount;\n }\n\n emit TransferSingle(operator, from, address(0), id, amount);\n\n _afterTokenTransfer(operator, from, address(0), ids, amounts, \"\");\n }\n\n /**\n * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_burn}.\n *\n * Emits a {TransferBatch} event.\n *\n * Requirements:\n *\n * - `ids` and `amounts` must have the same length.\n */\n function _burnBatch(address from, uint256[] memory ids, uint256[] memory amounts) internal virtual {\n require(from != address(0), \"ERC1155: burn from the zero address\");\n require(ids.length == amounts.length, \"ERC1155: ids and amounts length mismatch\");\n\n address operator = _msgSender();\n\n _beforeTokenTransfer(operator, from, address(0), ids, amounts, \"\");\n\n for (uint256 i = 0; i < ids.length; i++) {\n uint256 id = ids[i];\n uint256 amount = amounts[i];\n\n uint256 fromBalance = _balances[id][from];\n require(fromBalance >= amount, \"ERC1155: burn amount exceeds balance\");\n unchecked {\n _balances[id][from] = fromBalance - amount;\n }\n }\n\n emit TransferBatch(operator, from, address(0), ids, amounts);\n\n _afterTokenTransfer(operator, from, address(0), ids, amounts, \"\");\n }\n\n /**\n * @dev Approve `operator` to operate on all of `owner` tokens\n *\n * Emits an {ApprovalForAll} event.\n */\n function _setApprovalForAll(address owner, address operator, bool approved) internal virtual {\n require(owner != operator, \"ERC1155: setting approval status for self\");\n _operatorApprovals[owner][operator] = approved;\n emit ApprovalForAll(owner, operator, approved);\n }\n\n /**\n * @dev Hook that is called before any token transfer. This includes minting\n * and burning, as well as batched variants.\n *\n * The same hook is called on both single and batched variants. For single\n * transfers, the length of the `ids` and `amounts` arrays will be 1.\n *\n * Calling conditions (for each `id` and `amount` pair):\n *\n * - When `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n * of token type `id` will be transferred to `to`.\n * - When `from` is zero, `amount` tokens of token type `id` will be minted\n * for `to`.\n * - when `to` is zero, `amount` of ``from``'s tokens of token type `id`\n * will be burned.\n * - `from` and `to` are never both zero.\n * - `ids` and `amounts` have the same, non-zero length.\n *\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\n */\n function _beforeTokenTransfer(\n address operator,\n address from,\n address to,\n uint256[] memory ids,\n uint256[] memory amounts,\n bytes memory data\n ) internal virtual {}\n\n /**\n * @dev Hook that is called after any token transfer. This includes minting\n * and burning, as well as batched variants.\n *\n * The same hook is called on both single and batched variants. For single\n * transfers, the length of the `id` and `amount` arrays will be 1.\n *\n * Calling conditions (for each `id` and `amount` pair):\n *\n * - When `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n * of token type `id` will be transferred to `to`.\n * - When `from` is zero, `amount` tokens of token type `id` will be minted\n * for `to`.\n * - when `to` is zero, `amount` of ``from``'s tokens of token type `id`\n * will be burned.\n * - `from` and `to` are never both zero.\n * - `ids` and `amounts` have the same, non-zero length.\n *\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\n */\n function _afterTokenTransfer(\n address operator,\n address from,\n address to,\n uint256[] memory ids,\n uint256[] memory amounts,\n bytes memory data\n ) internal virtual {}\n\n function _doSafeTransferAcceptanceCheck(\n address operator,\n address from,\n address to,\n uint256 id,\n uint256 amount,\n bytes memory data\n ) private {\n if (to.isContract()) {\n try IERC1155Receiver(to).onERC1155Received(operator, from, id, amount, data) returns (bytes4 response) {\n if (response != IERC1155Receiver.onERC1155Received.selector) {\n revert(\"ERC1155: ERC1155Receiver rejected tokens\");\n }\n } catch Error(string memory reason) {\n revert(reason);\n } catch {\n revert(\"ERC1155: transfer to non-ERC1155Receiver implementer\");\n }\n }\n }\n\n function _doSafeBatchTransferAcceptanceCheck(\n address operator,\n address from,\n address to,\n uint256[] memory ids,\n uint256[] memory amounts,\n bytes memory data\n ) private {\n if (to.isContract()) {\n try IERC1155Receiver(to).onERC1155BatchReceived(operator, from, ids, amounts, data) returns (\n bytes4 response\n ) {\n if (response != IERC1155Receiver.onERC1155BatchReceived.selector) {\n revert(\"ERC1155: ERC1155Receiver rejected tokens\");\n }\n } catch Error(string memory reason) {\n revert(reason);\n } catch {\n revert(\"ERC1155: transfer to non-ERC1155Receiver implementer\");\n }\n }\n }\n\n function _asSingletonArray(uint256 element) private pure returns (uint256[] memory) {\n uint256[] memory array = new uint256[](1);\n array[0] = element;\n\n return array;\n }\n}\n"},"@openzeppelin/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (token/ERC1155/extensions/IERC1155MetadataURI.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../IERC1155.sol\";\n\n/**\n * @dev Interface of the optional ERC1155MetadataExtension interface, as defined\n * in the https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[EIP].\n *\n * _Available since v3.1._\n */\ninterface IERC1155MetadataURI is IERC1155 {\n /**\n * @dev Returns the URI for token type `id`.\n *\n * If the `\\{id\\}` substring is present in the URI, it must be replaced by\n * clients with the actual token type ID.\n */\n function uri(uint256 id) external view returns (string memory);\n}\n"},"@openzeppelin/contracts/token/ERC1155/IERC1155.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC1155/IERC1155.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../../utils/introspection/IERC165.sol\";\n\n/**\n * @dev Required interface of an ERC1155 compliant contract, as defined in the\n * https://eips.ethereum.org/EIPS/eip-1155[EIP].\n *\n * _Available since v3.1._\n */\ninterface IERC1155 is IERC165 {\n /**\n * @dev Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`.\n */\n event TransferSingle(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value);\n\n /**\n * @dev Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all\n * transfers.\n */\n event TransferBatch(\n address indexed operator,\n address indexed from,\n address indexed to,\n uint256[] ids,\n uint256[] values\n );\n\n /**\n * @dev Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to\n * `approved`.\n */\n event ApprovalForAll(address indexed account, address indexed operator, bool approved);\n\n /**\n * @dev Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI.\n *\n * If an {URI} event was emitted for `id`, the standard\n * https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value\n * returned by {IERC1155MetadataURI-uri}.\n */\n event URI(string value, uint256 indexed id);\n\n /**\n * @dev Returns the amount of tokens of token type `id` owned by `account`.\n *\n * Requirements:\n *\n * - `account` cannot be the zero address.\n */\n function balanceOf(address account, uint256 id) external view returns (uint256);\n\n /**\n * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}.\n *\n * Requirements:\n *\n * - `accounts` and `ids` must have the same length.\n */\n function balanceOfBatch(\n address[] calldata accounts,\n uint256[] calldata ids\n ) external view returns (uint256[] memory);\n\n /**\n * @dev Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`,\n *\n * Emits an {ApprovalForAll} event.\n *\n * Requirements:\n *\n * - `operator` cannot be the caller.\n */\n function setApprovalForAll(address operator, bool approved) external;\n\n /**\n * @dev Returns true if `operator` is approved to transfer ``account``'s tokens.\n *\n * See {setApprovalForAll}.\n */\n function isApprovedForAll(address account, address operator) external view returns (bool);\n\n /**\n * @dev Transfers `amount` tokens of token type `id` from `from` to `to`.\n *\n * Emits a {TransferSingle} event.\n *\n * Requirements:\n *\n * - `to` cannot be the zero address.\n * - If the caller is not `from`, it must have been approved to spend ``from``'s tokens via {setApprovalForAll}.\n * - `from` must have a balance of tokens of type `id` of at least `amount`.\n * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the\n * acceptance magic value.\n */\n function safeTransferFrom(address from, address to, uint256 id, uint256 amount, bytes calldata data) external;\n\n /**\n * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}.\n *\n * Emits a {TransferBatch} event.\n *\n * Requirements:\n *\n * - `ids` and `amounts` must have the same length.\n * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the\n * acceptance magic value.\n */\n function safeBatchTransferFrom(\n address from,\n address to,\n uint256[] calldata ids,\n uint256[] calldata amounts,\n bytes calldata data\n ) external;\n}\n"},"@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC1155/IERC1155Receiver.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../../utils/introspection/IERC165.sol\";\n\n/**\n * @dev _Available since v3.1._\n */\ninterface IERC1155Receiver is IERC165 {\n /**\n * @dev Handles the receipt of a single ERC1155 token type. This function is\n * called at the end of a `safeTransferFrom` after the balance has been updated.\n *\n * NOTE: To accept the transfer, this must return\n * `bytes4(keccak256(\"onERC1155Received(address,address,uint256,uint256,bytes)\"))`\n * (i.e. 0xf23a6e61, or its own function selector).\n *\n * @param operator The address which initiated the transfer (i.e. msg.sender)\n * @param from The address which previously owned the token\n * @param id The ID of the token being transferred\n * @param value The amount of tokens being transferred\n * @param data Additional data with no specified format\n * @return `bytes4(keccak256(\"onERC1155Received(address,address,uint256,uint256,bytes)\"))` if transfer is allowed\n */\n function onERC1155Received(\n address operator,\n address from,\n uint256 id,\n uint256 value,\n bytes calldata data\n ) external returns (bytes4);\n\n /**\n * @dev Handles the receipt of a multiple ERC1155 token types. This function\n * is called at the end of a `safeBatchTransferFrom` after the balances have\n * been updated.\n *\n * NOTE: To accept the transfer(s), this must return\n * `bytes4(keccak256(\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\"))`\n * (i.e. 0xbc197c81, or its own function selector).\n *\n * @param operator The address which initiated the batch transfer (i.e. msg.sender)\n * @param from The address which previously owned the token\n * @param ids An array containing ids of each token being transferred (order and length must match values array)\n * @param values An array containing amounts of each token being transferred (order and length must match ids array)\n * @param data Additional data with no specified format\n * @return `bytes4(keccak256(\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\"))` if transfer is allowed\n */\n function onERC1155BatchReceived(\n address operator,\n address from,\n uint256[] calldata ids,\n uint256[] calldata values,\n bytes calldata data\n ) external returns (bytes4);\n}\n"},"@openzeppelin/contracts/token/ERC20/ERC20.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/ERC20.sol)\n\npragma solidity ^0.8.0;\n\nimport \"./IERC20.sol\";\nimport \"./extensions/IERC20Metadata.sol\";\nimport \"../../utils/Context.sol\";\n\n/**\n * @dev Implementation of the {IERC20} interface.\n *\n * This implementation is agnostic to the way tokens are created. This means\n * that a supply mechanism has to be added in a derived contract using {_mint}.\n * For a generic mechanism see {ERC20PresetMinterPauser}.\n *\n * TIP: For a detailed writeup see our guide\n * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How\n * to implement supply mechanisms].\n *\n * The default value of {decimals} is 18. To change this, you should override\n * this function so it returns a different value.\n *\n * We have followed general OpenZeppelin Contracts guidelines: functions revert\n * instead returning `false` on failure. This behavior is nonetheless\n * conventional and does not conflict with the expectations of ERC20\n * applications.\n *\n * Additionally, an {Approval} event is emitted on calls to {transferFrom}.\n * This allows applications to reconstruct the allowance for all accounts just\n * by listening to said events. Other implementations of the EIP may not emit\n * these events, as it isn't required by the specification.\n *\n * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}\n * functions have been added to mitigate the well-known issues around setting\n * allowances. See {IERC20-approve}.\n */\ncontract ERC20 is Context, IERC20, IERC20Metadata {\n mapping(address => uint256) private _balances;\n\n mapping(address => mapping(address => uint256)) private _allowances;\n\n uint256 private _totalSupply;\n\n string private _name;\n string private _symbol;\n\n /**\n * @dev Sets the values for {name} and {symbol}.\n *\n * All two of these values are immutable: they can only be set once during\n * construction.\n */\n constructor(string memory name_, string memory symbol_) {\n _name = name_;\n _symbol = symbol_;\n }\n\n /**\n * @dev Returns the name of the token.\n */\n function name() public view virtual override returns (string memory) {\n return _name;\n }\n\n /**\n * @dev Returns the symbol of the token, usually a shorter version of the\n * name.\n */\n function symbol() public view virtual override returns (string memory) {\n return _symbol;\n }\n\n /**\n * @dev Returns the number of decimals used to get its user representation.\n * For example, if `decimals` equals `2`, a balance of `505` tokens should\n * be displayed to a user as `5.05` (`505 / 10 ** 2`).\n *\n * Tokens usually opt for a value of 18, imitating the relationship between\n * Ether and Wei. This is the default value returned by this function, unless\n * it's overridden.\n *\n * NOTE: This information is only used for _display_ purposes: it in\n * no way affects any of the arithmetic of the contract, including\n * {IERC20-balanceOf} and {IERC20-transfer}.\n */\n function decimals() public view virtual override returns (uint8) {\n return 18;\n }\n\n /**\n * @dev See {IERC20-totalSupply}.\n */\n function totalSupply() public view virtual override returns (uint256) {\n return _totalSupply;\n }\n\n /**\n * @dev See {IERC20-balanceOf}.\n */\n function balanceOf(address account) public view virtual override returns (uint256) {\n return _balances[account];\n }\n\n /**\n * @dev See {IERC20-transfer}.\n *\n * Requirements:\n *\n * - `to` cannot be the zero address.\n * - the caller must have a balance of at least `amount`.\n */\n function transfer(address to, uint256 amount) public virtual override returns (bool) {\n address owner = _msgSender();\n _transfer(owner, to, amount);\n return true;\n }\n\n /**\n * @dev See {IERC20-allowance}.\n */\n function allowance(address owner, address spender) public view virtual override returns (uint256) {\n return _allowances[owner][spender];\n }\n\n /**\n * @dev See {IERC20-approve}.\n *\n * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on\n * `transferFrom`. This is semantically equivalent to an infinite approval.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n */\n function approve(address spender, uint256 amount) public virtual override returns (bool) {\n address owner = _msgSender();\n _approve(owner, spender, amount);\n return true;\n }\n\n /**\n * @dev See {IERC20-transferFrom}.\n *\n * Emits an {Approval} event indicating the updated allowance. This is not\n * required by the EIP. See the note at the beginning of {ERC20}.\n *\n * NOTE: Does not update the allowance if the current allowance\n * is the maximum `uint256`.\n *\n * Requirements:\n *\n * - `from` and `to` cannot be the zero address.\n * - `from` must have a balance of at least `amount`.\n * - the caller must have allowance for ``from``'s tokens of at least\n * `amount`.\n */\n function transferFrom(address from, address to, uint256 amount) public virtual override returns (bool) {\n address spender = _msgSender();\n _spendAllowance(from, spender, amount);\n _transfer(from, to, amount);\n return true;\n }\n\n /**\n * @dev Atomically increases the allowance granted to `spender` by the caller.\n *\n * This is an alternative to {approve} that can be used as a mitigation for\n * problems described in {IERC20-approve}.\n *\n * Emits an {Approval} event indicating the updated allowance.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n */\n function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {\n address owner = _msgSender();\n _approve(owner, spender, allowance(owner, spender) + addedValue);\n return true;\n }\n\n /**\n * @dev Atomically decreases the allowance granted to `spender` by the caller.\n *\n * This is an alternative to {approve} that can be used as a mitigation for\n * problems described in {IERC20-approve}.\n *\n * Emits an {Approval} event indicating the updated allowance.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n * - `spender` must have allowance for the caller of at least\n * `subtractedValue`.\n */\n function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {\n address owner = _msgSender();\n uint256 currentAllowance = allowance(owner, spender);\n require(currentAllowance >= subtractedValue, \"ERC20: decreased allowance below zero\");\n unchecked {\n _approve(owner, spender, currentAllowance - subtractedValue);\n }\n\n return true;\n }\n\n /**\n * @dev Moves `amount` of tokens from `from` to `to`.\n *\n * This internal function is equivalent to {transfer}, and can be used to\n * e.g. implement automatic token fees, slashing mechanisms, etc.\n *\n * Emits a {Transfer} event.\n *\n * Requirements:\n *\n * - `from` cannot be the zero address.\n * - `to` cannot be the zero address.\n * - `from` must have a balance of at least `amount`.\n */\n function _transfer(address from, address to, uint256 amount) internal virtual {\n require(from != address(0), \"ERC20: transfer from the zero address\");\n require(to != address(0), \"ERC20: transfer to the zero address\");\n\n _beforeTokenTransfer(from, to, amount);\n\n uint256 fromBalance = _balances[from];\n require(fromBalance >= amount, \"ERC20: transfer amount exceeds balance\");\n unchecked {\n _balances[from] = fromBalance - amount;\n // Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by\n // decrementing then incrementing.\n _balances[to] += amount;\n }\n\n emit Transfer(from, to, amount);\n\n _afterTokenTransfer(from, to, amount);\n }\n\n /** @dev Creates `amount` tokens and assigns them to `account`, increasing\n * the total supply.\n *\n * Emits a {Transfer} event with `from` set to the zero address.\n *\n * Requirements:\n *\n * - `account` cannot be the zero address.\n */\n function _mint(address account, uint256 amount) internal virtual {\n require(account != address(0), \"ERC20: mint to the zero address\");\n\n _beforeTokenTransfer(address(0), account, amount);\n\n _totalSupply += amount;\n unchecked {\n // Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above.\n _balances[account] += amount;\n }\n emit Transfer(address(0), account, amount);\n\n _afterTokenTransfer(address(0), account, amount);\n }\n\n /**\n * @dev Destroys `amount` tokens from `account`, reducing the\n * total supply.\n *\n * Emits a {Transfer} event with `to` set to the zero address.\n *\n * Requirements:\n *\n * - `account` cannot be the zero address.\n * - `account` must have at least `amount` tokens.\n */\n function _burn(address account, uint256 amount) internal virtual {\n require(account != address(0), \"ERC20: burn from the zero address\");\n\n _beforeTokenTransfer(account, address(0), amount);\n\n uint256 accountBalance = _balances[account];\n require(accountBalance >= amount, \"ERC20: burn amount exceeds balance\");\n unchecked {\n _balances[account] = accountBalance - amount;\n // Overflow not possible: amount <= accountBalance <= totalSupply.\n _totalSupply -= amount;\n }\n\n emit Transfer(account, address(0), amount);\n\n _afterTokenTransfer(account, address(0), amount);\n }\n\n /**\n * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.\n *\n * This internal function is equivalent to `approve`, and can be used to\n * e.g. set automatic allowances for certain subsystems, etc.\n *\n * Emits an {Approval} event.\n *\n * Requirements:\n *\n * - `owner` cannot be the zero address.\n * - `spender` cannot be the zero address.\n */\n function _approve(address owner, address spender, uint256 amount) internal virtual {\n require(owner != address(0), \"ERC20: approve from the zero address\");\n require(spender != address(0), \"ERC20: approve to the zero address\");\n\n _allowances[owner][spender] = amount;\n emit Approval(owner, spender, amount);\n }\n\n /**\n * @dev Updates `owner` s allowance for `spender` based on spent `amount`.\n *\n * Does not update the allowance amount in case of infinite allowance.\n * Revert if not enough allowance is available.\n *\n * Might emit an {Approval} event.\n */\n function _spendAllowance(address owner, address spender, uint256 amount) internal virtual {\n uint256 currentAllowance = allowance(owner, spender);\n if (currentAllowance != type(uint256).max) {\n require(currentAllowance >= amount, \"ERC20: insufficient allowance\");\n unchecked {\n _approve(owner, spender, currentAllowance - amount);\n }\n }\n }\n\n /**\n * @dev Hook that is called before any transfer of tokens. This includes\n * minting and burning.\n *\n * Calling conditions:\n *\n * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n * will be transferred to `to`.\n * - when `from` is zero, `amount` tokens will be minted for `to`.\n * - when `to` is zero, `amount` of ``from``'s tokens will be burned.\n * - `from` and `to` are never both zero.\n *\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\n */\n function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual {}\n\n /**\n * @dev Hook that is called after any transfer of tokens. This includes\n * minting and burning.\n *\n * Calling conditions:\n *\n * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n * has been transferred to `to`.\n * - when `from` is zero, `amount` tokens have been minted for `to`.\n * - when `to` is zero, `amount` of ``from``'s tokens have been burned.\n * - `from` and `to` are never both zero.\n *\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\n */\n function _afterTokenTransfer(address from, address to, uint256 amount) internal virtual {}\n}\n"},"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../IERC20.sol\";\n\n/**\n * @dev Interface for the optional metadata functions from the ERC20 standard.\n *\n * _Available since v4.1._\n */\ninterface IERC20Metadata is IERC20 {\n /**\n * @dev Returns the name of the token.\n */\n function name() external view returns (string memory);\n\n /**\n * @dev Returns the symbol of the token.\n */\n function symbol() external view returns (string memory);\n\n /**\n * @dev Returns the decimals places of the token.\n */\n function decimals() external view returns (uint8);\n}\n"},"@openzeppelin/contracts/token/ERC20/IERC20.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/IERC20.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Interface of the ERC20 standard as defined in the EIP.\n */\ninterface IERC20 {\n /**\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\n * another (`to`).\n *\n * Note that `value` may be zero.\n */\n event Transfer(address indexed from, address indexed to, uint256 value);\n\n /**\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\n * a call to {approve}. `value` is the new allowance.\n */\n event Approval(address indexed owner, address indexed spender, uint256 value);\n\n /**\n * @dev Returns the amount of tokens in existence.\n */\n function totalSupply() external view returns (uint256);\n\n /**\n * @dev Returns the amount of tokens owned by `account`.\n */\n function balanceOf(address account) external view returns (uint256);\n\n /**\n * @dev Moves `amount` tokens from the caller's account to `to`.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transfer(address to, uint256 amount) external returns (bool);\n\n /**\n * @dev Returns the remaining number of tokens that `spender` will be\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\n * zero by default.\n *\n * This value changes when {approve} or {transferFrom} are called.\n */\n function allowance(address owner, address spender) external view returns (uint256);\n\n /**\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\n * that someone may use both the old and the new allowance by unfortunate\n * transaction ordering. One possible solution to mitigate this race\n * condition is to first reduce the spender's allowance to 0 and set the\n * desired value afterwards:\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n *\n * Emits an {Approval} event.\n */\n function approve(address spender, uint256 amount) external returns (bool);\n\n /**\n * @dev Moves `amount` tokens from `from` to `to` using the\n * allowance mechanism. `amount` is then deducted from the caller's\n * allowance.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transferFrom(address from, address to, uint256 amount) external returns (bool);\n}\n"},"@openzeppelin/contracts/token/ERC721/ERC721.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC721/ERC721.sol)\n\npragma solidity ^0.8.0;\n\nimport \"./IERC721.sol\";\nimport \"./IERC721Receiver.sol\";\nimport \"./extensions/IERC721Metadata.sol\";\nimport \"../../utils/Address.sol\";\nimport \"../../utils/Context.sol\";\nimport \"../../utils/Strings.sol\";\nimport \"../../utils/introspection/ERC165.sol\";\n\n/**\n * @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including\n * the Metadata extension, but not including the Enumerable extension, which is available separately as\n * {ERC721Enumerable}.\n */\ncontract ERC721 is Context, ERC165, IERC721, IERC721Metadata {\n using Address for address;\n using Strings for uint256;\n\n // Token name\n string private _name;\n\n // Token symbol\n string private _symbol;\n\n // Mapping from token ID to owner address\n mapping(uint256 => address) private _owners;\n\n // Mapping owner address to token count\n mapping(address => uint256) private _balances;\n\n // Mapping from token ID to approved address\n mapping(uint256 => address) private _tokenApprovals;\n\n // Mapping from owner to operator approvals\n mapping(address => mapping(address => bool)) private _operatorApprovals;\n\n /**\n * @dev Initializes the contract by setting a `name` and a `symbol` to the token collection.\n */\n constructor(string memory name_, string memory symbol_) {\n _name = name_;\n _symbol = symbol_;\n }\n\n /**\n * @dev See {IERC165-supportsInterface}.\n */\n function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) {\n return\n interfaceId == type(IERC721).interfaceId ||\n interfaceId == type(IERC721Metadata).interfaceId ||\n super.supportsInterface(interfaceId);\n }\n\n /**\n * @dev See {IERC721-balanceOf}.\n */\n function balanceOf(address owner) public view virtual override returns (uint256) {\n require(owner != address(0), \"ERC721: address zero is not a valid owner\");\n return _balances[owner];\n }\n\n /**\n * @dev See {IERC721-ownerOf}.\n */\n function ownerOf(uint256 tokenId) public view virtual override returns (address) {\n address owner = _ownerOf(tokenId);\n require(owner != address(0), \"ERC721: invalid token ID\");\n return owner;\n }\n\n /**\n * @dev See {IERC721Metadata-name}.\n */\n function name() public view virtual override returns (string memory) {\n return _name;\n }\n\n /**\n * @dev See {IERC721Metadata-symbol}.\n */\n function symbol() public view virtual override returns (string memory) {\n return _symbol;\n }\n\n /**\n * @dev See {IERC721Metadata-tokenURI}.\n */\n function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {\n _requireMinted(tokenId);\n\n string memory baseURI = _baseURI();\n return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : \"\";\n }\n\n /**\n * @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\n * token will be the concatenation of the `baseURI` and the `tokenId`. Empty\n * by default, can be overridden in child contracts.\n */\n function _baseURI() internal view virtual returns (string memory) {\n return \"\";\n }\n\n /**\n * @dev See {IERC721-approve}.\n */\n function approve(address to, uint256 tokenId) public virtual override {\n address owner = ERC721.ownerOf(tokenId);\n require(to != owner, \"ERC721: approval to current owner\");\n\n require(\n _msgSender() == owner || isApprovedForAll(owner, _msgSender()),\n \"ERC721: approve caller is not token owner or approved for all\"\n );\n\n _approve(to, tokenId);\n }\n\n /**\n * @dev See {IERC721-getApproved}.\n */\n function getApproved(uint256 tokenId) public view virtual override returns (address) {\n _requireMinted(tokenId);\n\n return _tokenApprovals[tokenId];\n }\n\n /**\n * @dev See {IERC721-setApprovalForAll}.\n */\n function setApprovalForAll(address operator, bool approved) public virtual override {\n _setApprovalForAll(_msgSender(), operator, approved);\n }\n\n /**\n * @dev See {IERC721-isApprovedForAll}.\n */\n function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) {\n return _operatorApprovals[owner][operator];\n }\n\n /**\n * @dev See {IERC721-transferFrom}.\n */\n function transferFrom(address from, address to, uint256 tokenId) public virtual override {\n //solhint-disable-next-line max-line-length\n require(_isApprovedOrOwner(_msgSender(), tokenId), \"ERC721: caller is not token owner or approved\");\n\n _transfer(from, to, tokenId);\n }\n\n /**\n * @dev See {IERC721-safeTransferFrom}.\n */\n function safeTransferFrom(address from, address to, uint256 tokenId) public virtual override {\n safeTransferFrom(from, to, tokenId, \"\");\n }\n\n /**\n * @dev See {IERC721-safeTransferFrom}.\n */\n function safeTransferFrom(address from, address to, uint256 tokenId, bytes memory data) public virtual override {\n require(_isApprovedOrOwner(_msgSender(), tokenId), \"ERC721: caller is not token owner or approved\");\n _safeTransfer(from, to, tokenId, data);\n }\n\n /**\n * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n * are aware of the ERC721 protocol to prevent tokens from being forever locked.\n *\n * `data` is additional data, it has no specified format and it is sent in call to `to`.\n *\n * This internal function is equivalent to {safeTransferFrom}, and can be used to e.g.\n * implement alternative mechanisms to perform token transfer, such as signature-based.\n *\n * Requirements:\n *\n * - `from` cannot be the zero address.\n * - `to` cannot be the zero address.\n * - `tokenId` token must exist and be owned by `from`.\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n *\n * Emits a {Transfer} event.\n */\n function _safeTransfer(address from, address to, uint256 tokenId, bytes memory data) internal virtual {\n _transfer(from, to, tokenId);\n require(_checkOnERC721Received(from, to, tokenId, data), \"ERC721: transfer to non ERC721Receiver implementer\");\n }\n\n /**\n * @dev Returns the owner of the `tokenId`. Does NOT revert if token doesn't exist\n */\n function _ownerOf(uint256 tokenId) internal view virtual returns (address) {\n return _owners[tokenId];\n }\n\n /**\n * @dev Returns whether `tokenId` exists.\n *\n * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}.\n *\n * Tokens start existing when they are minted (`_mint`),\n * and stop existing when they are burned (`_burn`).\n */\n function _exists(uint256 tokenId) internal view virtual returns (bool) {\n return _ownerOf(tokenId) != address(0);\n }\n\n /**\n * @dev Returns whether `spender` is allowed to manage `tokenId`.\n *\n * Requirements:\n *\n * - `tokenId` must exist.\n */\n function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) {\n address owner = ERC721.ownerOf(tokenId);\n return (spender == owner || isApprovedForAll(owner, spender) || getApproved(tokenId) == spender);\n }\n\n /**\n * @dev Safely mints `tokenId` and transfers it to `to`.\n *\n * Requirements:\n *\n * - `tokenId` must not exist.\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n *\n * Emits a {Transfer} event.\n */\n function _safeMint(address to, uint256 tokenId) internal virtual {\n _safeMint(to, tokenId, \"\");\n }\n\n /**\n * @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\n * forwarded in {IERC721Receiver-onERC721Received} to contract recipients.\n */\n function _safeMint(address to, uint256 tokenId, bytes memory data) internal virtual {\n _mint(to, tokenId);\n require(\n _checkOnERC721Received(address(0), to, tokenId, data),\n \"ERC721: transfer to non ERC721Receiver implementer\"\n );\n }\n\n /**\n * @dev Mints `tokenId` and transfers it to `to`.\n *\n * WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\n *\n * Requirements:\n *\n * - `tokenId` must not exist.\n * - `to` cannot be the zero address.\n *\n * Emits a {Transfer} event.\n */\n function _mint(address to, uint256 tokenId) internal virtual {\n require(to != address(0), \"ERC721: mint to the zero address\");\n require(!_exists(tokenId), \"ERC721: token already minted\");\n\n _beforeTokenTransfer(address(0), to, tokenId, 1);\n\n // Check that tokenId was not minted by `_beforeTokenTransfer` hook\n require(!_exists(tokenId), \"ERC721: token already minted\");\n\n unchecked {\n // Will not overflow unless all 2**256 token ids are minted to the same owner.\n // Given that tokens are minted one by one, it is impossible in practice that\n // this ever happens. Might change if we allow batch minting.\n // The ERC fails to describe this case.\n _balances[to] += 1;\n }\n\n _owners[tokenId] = to;\n\n emit Transfer(address(0), to, tokenId);\n\n _afterTokenTransfer(address(0), to, tokenId, 1);\n }\n\n /**\n * @dev Destroys `tokenId`.\n * The approval is cleared when the token is burned.\n * This is an internal function that does not check if the sender is authorized to operate on the token.\n *\n * Requirements:\n *\n * - `tokenId` must exist.\n *\n * Emits a {Transfer} event.\n */\n function _burn(uint256 tokenId) internal virtual {\n address owner = ERC721.ownerOf(tokenId);\n\n _beforeTokenTransfer(owner, address(0), tokenId, 1);\n\n // Update ownership in case tokenId was transferred by `_beforeTokenTransfer` hook\n owner = ERC721.ownerOf(tokenId);\n\n // Clear approvals\n delete _tokenApprovals[tokenId];\n\n unchecked {\n // Cannot overflow, as that would require more tokens to be burned/transferred\n // out than the owner initially received through minting and transferring in.\n _balances[owner] -= 1;\n }\n delete _owners[tokenId];\n\n emit Transfer(owner, address(0), tokenId);\n\n _afterTokenTransfer(owner, address(0), tokenId, 1);\n }\n\n /**\n * @dev Transfers `tokenId` from `from` to `to`.\n * As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\n *\n * Requirements:\n *\n * - `to` cannot be the zero address.\n * - `tokenId` token must be owned by `from`.\n *\n * Emits a {Transfer} event.\n */\n function _transfer(address from, address to, uint256 tokenId) internal virtual {\n require(ERC721.ownerOf(tokenId) == from, \"ERC721: transfer from incorrect owner\");\n require(to != address(0), \"ERC721: transfer to the zero address\");\n\n _beforeTokenTransfer(from, to, tokenId, 1);\n\n // Check that tokenId was not transferred by `_beforeTokenTransfer` hook\n require(ERC721.ownerOf(tokenId) == from, \"ERC721: transfer from incorrect owner\");\n\n // Clear approvals from the previous owner\n delete _tokenApprovals[tokenId];\n\n unchecked {\n // `_balances[from]` cannot overflow for the same reason as described in `_burn`:\n // `from`'s balance is the number of token held, which is at least one before the current\n // transfer.\n // `_balances[to]` could overflow in the conditions described in `_mint`. That would require\n // all 2**256 token ids to be minted, which in practice is impossible.\n _balances[from] -= 1;\n _balances[to] += 1;\n }\n _owners[tokenId] = to;\n\n emit Transfer(from, to, tokenId);\n\n _afterTokenTransfer(from, to, tokenId, 1);\n }\n\n /**\n * @dev Approve `to` to operate on `tokenId`\n *\n * Emits an {Approval} event.\n */\n function _approve(address to, uint256 tokenId) internal virtual {\n _tokenApprovals[tokenId] = to;\n emit Approval(ERC721.ownerOf(tokenId), to, tokenId);\n }\n\n /**\n * @dev Approve `operator` to operate on all of `owner` tokens\n *\n * Emits an {ApprovalForAll} event.\n */\n function _setApprovalForAll(address owner, address operator, bool approved) internal virtual {\n require(owner != operator, \"ERC721: approve to caller\");\n _operatorApprovals[owner][operator] = approved;\n emit ApprovalForAll(owner, operator, approved);\n }\n\n /**\n * @dev Reverts if the `tokenId` has not been minted yet.\n */\n function _requireMinted(uint256 tokenId) internal view virtual {\n require(_exists(tokenId), \"ERC721: invalid token ID\");\n }\n\n /**\n * @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address.\n * The call is not executed if the target address is not a contract.\n *\n * @param from address representing the previous owner of the given token ID\n * @param to target address that will receive the tokens\n * @param tokenId uint256 ID of the token to be transferred\n * @param data bytes optional data to send along with the call\n * @return bool whether the call correctly returned the expected magic value\n */\n function _checkOnERC721Received(\n address from,\n address to,\n uint256 tokenId,\n bytes memory data\n ) private returns (bool) {\n if (to.isContract()) {\n try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, data) returns (bytes4 retval) {\n return retval == IERC721Receiver.onERC721Received.selector;\n } catch (bytes memory reason) {\n if (reason.length == 0) {\n revert(\"ERC721: transfer to non ERC721Receiver implementer\");\n } else {\n /// @solidity memory-safe-assembly\n assembly {\n revert(add(32, reason), mload(reason))\n }\n }\n }\n } else {\n return true;\n }\n }\n\n /**\n * @dev Hook that is called before any token transfer. This includes minting and burning. If {ERC721Consecutive} is\n * used, the hook may be called as part of a consecutive (batch) mint, as indicated by `batchSize` greater than 1.\n *\n * Calling conditions:\n *\n * - When `from` and `to` are both non-zero, ``from``'s tokens will be transferred to `to`.\n * - When `from` is zero, the tokens will be minted for `to`.\n * - When `to` is zero, ``from``'s tokens will be burned.\n * - `from` and `to` are never both zero.\n * - `batchSize` is non-zero.\n *\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\n */\n function _beforeTokenTransfer(address from, address to, uint256 firstTokenId, uint256 batchSize) internal virtual {}\n\n /**\n * @dev Hook that is called after any token transfer. This includes minting and burning. If {ERC721Consecutive} is\n * used, the hook may be called as part of a consecutive (batch) mint, as indicated by `batchSize` greater than 1.\n *\n * Calling conditions:\n *\n * - When `from` and `to` are both non-zero, ``from``'s tokens were transferred to `to`.\n * - When `from` is zero, the tokens were minted for `to`.\n * - When `to` is zero, ``from``'s tokens were burned.\n * - `from` and `to` are never both zero.\n * - `batchSize` is non-zero.\n *\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\n */\n function _afterTokenTransfer(address from, address to, uint256 firstTokenId, uint256 batchSize) internal virtual {}\n\n /**\n * @dev Unsafe write access to the balances, used by extensions that \"mint\" tokens using an {ownerOf} override.\n *\n * WARNING: Anyone calling this MUST ensure that the balances remain consistent with the ownership. The invariant\n * being that for any address `a` the value returned by `balanceOf(a)` must be equal to the number of tokens such\n * that `ownerOf(tokenId)` is `a`.\n */\n // solhint-disable-next-line func-name-mixedcase\n function __unsafe_increaseBalance(address account, uint256 amount) internal {\n _balances[account] += amount;\n }\n}\n"},"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Metadata.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../IERC721.sol\";\n\n/**\n * @title ERC-721 Non-Fungible Token Standard, optional metadata extension\n * @dev See https://eips.ethereum.org/EIPS/eip-721\n */\ninterface IERC721Metadata is IERC721 {\n /**\n * @dev Returns the token collection name.\n */\n function name() external view returns (string memory);\n\n /**\n * @dev Returns the token collection symbol.\n */\n function symbol() external view returns (string memory);\n\n /**\n * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.\n */\n function tokenURI(uint256 tokenId) external view returns (string memory);\n}\n"},"@openzeppelin/contracts/token/ERC721/IERC721.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC721/IERC721.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../../utils/introspection/IERC165.sol\";\n\n/**\n * @dev Required interface of an ERC721 compliant contract.\n */\ninterface IERC721 is IERC165 {\n /**\n * @dev Emitted when `tokenId` token is transferred from `from` to `to`.\n */\n event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);\n\n /**\n * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.\n */\n event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);\n\n /**\n * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\n */\n event ApprovalForAll(address indexed owner, address indexed operator, bool approved);\n\n /**\n * @dev Returns the number of tokens in ``owner``'s account.\n */\n function balanceOf(address owner) external view returns (uint256 balance);\n\n /**\n * @dev Returns the owner of the `tokenId` token.\n *\n * Requirements:\n *\n * - `tokenId` must exist.\n */\n function ownerOf(uint256 tokenId) external view returns (address owner);\n\n /**\n * @dev Safely transfers `tokenId` token from `from` to `to`.\n *\n * Requirements:\n *\n * - `from` cannot be the zero address.\n * - `to` cannot be the zero address.\n * - `tokenId` token must exist and be owned by `from`.\n * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n *\n * Emits a {Transfer} event.\n */\n function safeTransferFrom(address from, address to, uint256 tokenId, bytes calldata data) external;\n\n /**\n * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n * are aware of the ERC721 protocol to prevent tokens from being forever locked.\n *\n * Requirements:\n *\n * - `from` cannot be the zero address.\n * - `to` cannot be the zero address.\n * - `tokenId` token must exist and be owned by `from`.\n * - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}.\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n *\n * Emits a {Transfer} event.\n */\n function safeTransferFrom(address from, address to, uint256 tokenId) external;\n\n /**\n * @dev Transfers `tokenId` token from `from` to `to`.\n *\n * WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721\n * or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must\n * understand this adds an external call which potentially creates a reentrancy vulnerability.\n *\n * Requirements:\n *\n * - `from` cannot be the zero address.\n * - `to` cannot be the zero address.\n * - `tokenId` token must be owned by `from`.\n * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n *\n * Emits a {Transfer} event.\n */\n function transferFrom(address from, address to, uint256 tokenId) external;\n\n /**\n * @dev Gives permission to `to` to transfer `tokenId` token to another account.\n * The approval is cleared when the token is transferred.\n *\n * Only a single account can be approved at a time, so approving the zero address clears previous approvals.\n *\n * Requirements:\n *\n * - The caller must own the token or be an approved operator.\n * - `tokenId` must exist.\n *\n * Emits an {Approval} event.\n */\n function approve(address to, uint256 tokenId) external;\n\n /**\n * @dev Approve or remove `operator` as an operator for the caller.\n * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\n *\n * Requirements:\n *\n * - The `operator` cannot be the caller.\n *\n * Emits an {ApprovalForAll} event.\n */\n function setApprovalForAll(address operator, bool approved) external;\n\n /**\n * @dev Returns the account approved for `tokenId` token.\n *\n * Requirements:\n *\n * - `tokenId` must exist.\n */\n function getApproved(uint256 tokenId) external view returns (address operator);\n\n /**\n * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\n *\n * See {setApprovalForAll}\n */\n function isApprovedForAll(address owner, address operator) external view returns (bool);\n}\n"},"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC721/IERC721Receiver.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @title ERC721 token receiver interface\n * @dev Interface for any contract that wants to support safeTransfers\n * from ERC721 asset contracts.\n */\ninterface IERC721Receiver {\n /**\n * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}\n * by `operator` from `from`, this function is called.\n *\n * It must return its Solidity selector to confirm the token transfer.\n * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted.\n *\n * The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`.\n */\n function onERC721Received(\n address operator,\n address from,\n uint256 tokenId,\n bytes calldata data\n ) external returns (bytes4);\n}\n"},"@openzeppelin/contracts/utils/Address.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\n\npragma solidity ^0.8.1;\n\n/**\n * @dev Collection of functions related to the address type\n */\nlibrary Address {\n /**\n * @dev Returns true if `account` is a contract.\n *\n * [IMPORTANT]\n * ====\n * It is unsafe to assume that an address for which this function returns\n * false is an externally-owned account (EOA) and not a contract.\n *\n * Among others, `isContract` will return false for the following\n * types of addresses:\n *\n * - an externally-owned account\n * - a contract in construction\n * - an address where a contract will be created\n * - an address where a contract lived, but was destroyed\n *\n * Furthermore, `isContract` will also return true if the target contract within\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\n * which only has an effect at the end of a transaction.\n * ====\n *\n * [IMPORTANT]\n * ====\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\n *\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\n * constructor.\n * ====\n */\n function isContract(address account) internal view returns (bool) {\n // This method relies on extcodesize/address.code.length, which returns 0\n // for contracts in construction, since the code is only stored at the end\n // of the constructor execution.\n\n return account.code.length > 0;\n }\n\n /**\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n * `recipient`, forwarding all available gas and reverting on errors.\n *\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\n * imposed by `transfer`, making them unable to receive funds via\n * `transfer`. {sendValue} removes this limitation.\n *\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n *\n * IMPORTANT: because control is transferred to `recipient`, care must be\n * taken to not create reentrancy vulnerabilities. Consider using\n * {ReentrancyGuard} or the\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\n */\n function sendValue(address payable recipient, uint256 amount) internal {\n require(address(this).balance >= amount, \"Address: insufficient balance\");\n\n (bool success, ) = recipient.call{value: amount}(\"\");\n require(success, \"Address: unable to send value, recipient may have reverted\");\n }\n\n /**\n * @dev Performs a Solidity function call using a low level `call`. A\n * plain `call` is an unsafe replacement for a function call: use this\n * function instead.\n *\n * If `target` reverts with a revert reason, it is bubbled up by this\n * function (like regular Solidity function calls).\n *\n * Returns the raw returned data. To convert to the expected return value,\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n *\n * Requirements:\n *\n * - `target` must be a contract.\n * - calling `target` with `data` must not revert.\n *\n * _Available since v3.1._\n */\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\n return functionCallWithValue(target, data, 0, \"Address: low-level call failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n * `errorMessage` as a fallback revert reason when `target` reverts.\n *\n * _Available since v3.1._\n */\n function functionCall(\n address target,\n bytes memory data,\n string memory errorMessage\n ) internal returns (bytes memory) {\n return functionCallWithValue(target, data, 0, errorMessage);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but also transferring `value` wei to `target`.\n *\n * Requirements:\n *\n * - the calling contract must have an ETH balance of at least `value`.\n * - the called Solidity function must be `payable`.\n *\n * _Available since v3.1._\n */\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\n return functionCallWithValue(target, data, value, \"Address: low-level call with value failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n * with `errorMessage` as a fallback revert reason when `target` reverts.\n *\n * _Available since v3.1._\n */\n function functionCallWithValue(\n address target,\n bytes memory data,\n uint256 value,\n string memory errorMessage\n ) internal returns (bytes memory) {\n require(address(this).balance >= value, \"Address: insufficient balance for call\");\n (bool success, bytes memory returndata) = target.call{value: value}(data);\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but performing a static call.\n *\n * _Available since v3.3._\n */\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\n return functionStaticCall(target, data, \"Address: low-level static call failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n * but performing a static call.\n *\n * _Available since v3.3._\n */\n function functionStaticCall(\n address target,\n bytes memory data,\n string memory errorMessage\n ) internal view returns (bytes memory) {\n (bool success, bytes memory returndata) = target.staticcall(data);\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but performing a delegate call.\n *\n * _Available since v3.4._\n */\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\n return functionDelegateCall(target, data, \"Address: low-level delegate call failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n * but performing a delegate call.\n *\n * _Available since v3.4._\n */\n function functionDelegateCall(\n address target,\n bytes memory data,\n string memory errorMessage\n ) internal returns (bytes memory) {\n (bool success, bytes memory returndata) = target.delegatecall(data);\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\n }\n\n /**\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\n *\n * _Available since v4.8._\n */\n function verifyCallResultFromTarget(\n address target,\n bool success,\n bytes memory returndata,\n string memory errorMessage\n ) internal view returns (bytes memory) {\n if (success) {\n if (returndata.length == 0) {\n // only check isContract if the call was successful and the return data is empty\n // otherwise we already know that it was a contract\n require(isContract(target), \"Address: call to non-contract\");\n }\n return returndata;\n } else {\n _revert(returndata, errorMessage);\n }\n }\n\n /**\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\n * revert reason or using the provided one.\n *\n * _Available since v4.3._\n */\n function verifyCallResult(\n bool success,\n bytes memory returndata,\n string memory errorMessage\n ) internal pure returns (bytes memory) {\n if (success) {\n return returndata;\n } else {\n _revert(returndata, errorMessage);\n }\n }\n\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\n // Look for revert reason and bubble it up if present\n if (returndata.length > 0) {\n // The easiest way to bubble the revert reason is using memory via assembly\n /// @solidity memory-safe-assembly\n assembly {\n let returndata_size := mload(returndata)\n revert(add(32, returndata), returndata_size)\n }\n } else {\n revert(errorMessage);\n }\n }\n}\n"},"@openzeppelin/contracts/utils/Context.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Provides information about the current execution context, including the\n * sender of the transaction and its data. While these are generally available\n * via msg.sender and msg.data, they should not be accessed in such a direct\n * manner, since when dealing with meta-transactions the account sending and\n * paying for execution may not be the actual sender (as far as an application\n * is concerned).\n *\n * This contract is only required for intermediate, library-like contracts.\n */\nabstract contract Context {\n function _msgSender() internal view virtual returns (address) {\n return msg.sender;\n }\n\n function _msgData() internal view virtual returns (bytes calldata) {\n return msg.data;\n }\n\n function _contextSuffixLength() internal view virtual returns (uint256) {\n return 0;\n }\n}\n"},"@openzeppelin/contracts/utils/Counters.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/Counters.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @title Counters\n * @author Matt Condon (@shrugs)\n * @dev Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number\n * of elements in a mapping, issuing ERC721 ids, or counting request ids.\n *\n * Include with `using Counters for Counters.Counter;`\n */\nlibrary Counters {\n struct Counter {\n // This variable should never be directly accessed by users of the library: interactions must be restricted to\n // the library's function. As of Solidity v0.5.2, this cannot be enforced, though there is a proposal to add\n // this feature: see https://github.com/ethereum/solidity/issues/4637\n uint256 _value; // default: 0\n }\n\n function current(Counter storage counter) internal view returns (uint256) {\n return counter._value;\n }\n\n function increment(Counter storage counter) internal {\n unchecked {\n counter._value += 1;\n }\n }\n\n function decrement(Counter storage counter) internal {\n uint256 value = counter._value;\n require(value > 0, \"Counter: decrement overflow\");\n unchecked {\n counter._value = value - 1;\n }\n }\n\n function reset(Counter storage counter) internal {\n counter._value = 0;\n }\n}\n"},"@openzeppelin/contracts/utils/introspection/ERC165.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\n\npragma solidity ^0.8.0;\n\nimport \"./IERC165.sol\";\n\n/**\n * @dev Implementation of the {IERC165} interface.\n *\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\n * for the additional interface id that will be supported. For example:\n *\n * ```solidity\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\n * }\n * ```\n *\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\n */\nabstract contract ERC165 is IERC165 {\n /**\n * @dev See {IERC165-supportsInterface}.\n */\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n return interfaceId == type(IERC165).interfaceId;\n }\n}\n"},"@openzeppelin/contracts/utils/introspection/IERC165.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Interface of the ERC165 standard, as defined in the\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\n *\n * Implementers can declare support of contract interfaces, which can then be\n * queried by others ({ERC165Checker}).\n *\n * For an implementation, see {ERC165}.\n */\ninterface IERC165 {\n /**\n * @dev Returns true if this contract implements the interface defined by\n * `interfaceId`. See the corresponding\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\n * to learn more about how these ids are created.\n *\n * This function call must use less than 30 000 gas.\n */\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\n}\n"},"@openzeppelin/contracts/utils/math/Math.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/math/Math.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Standard math utilities missing in the Solidity language.\n */\nlibrary Math {\n enum Rounding {\n Down, // Toward negative infinity\n Up, // Toward infinity\n Zero // Toward zero\n }\n\n /**\n * @dev Returns the largest of two numbers.\n */\n function max(uint256 a, uint256 b) internal pure returns (uint256) {\n return a > b ? a : b;\n }\n\n /**\n * @dev Returns the smallest of two numbers.\n */\n function min(uint256 a, uint256 b) internal pure returns (uint256) {\n return a < b ? a : b;\n }\n\n /**\n * @dev Returns the average of two numbers. The result is rounded towards\n * zero.\n */\n function average(uint256 a, uint256 b) internal pure returns (uint256) {\n // (a + b) / 2 can overflow.\n return (a & b) + (a ^ b) / 2;\n }\n\n /**\n * @dev Returns the ceiling of the division of two numbers.\n *\n * This differs from standard division with `/` in that it rounds up instead\n * of rounding down.\n */\n function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\n // (a + b - 1) / b can overflow on addition, so we distribute.\n return a == 0 ? 0 : (a - 1) / b + 1;\n }\n\n /**\n * @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\n * @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)\n * with further edits by Uniswap Labs also under MIT license.\n */\n function mulDiv(uint256 x, uint256 y, uint256 denominator) internal pure returns (uint256 result) {\n unchecked {\n // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use\n // use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\n // variables such that product = prod1 * 2^256 + prod0.\n uint256 prod0; // Least significant 256 bits of the product\n uint256 prod1; // Most significant 256 bits of the product\n assembly {\n let mm := mulmod(x, y, not(0))\n prod0 := mul(x, y)\n prod1 := sub(sub(mm, prod0), lt(mm, prod0))\n }\n\n // Handle non-overflow cases, 256 by 256 division.\n if (prod1 == 0) {\n // Solidity will revert if denominator == 0, unlike the div opcode on its own.\n // The surrounding unchecked block does not change this fact.\n // See https://docs.soliditylang.org/en/latest/control-structures.html#checked-or-unchecked-arithmetic.\n return prod0 / denominator;\n }\n\n // Make sure the result is less than 2^256. Also prevents denominator == 0.\n require(denominator > prod1, \"Math: mulDiv overflow\");\n\n ///////////////////////////////////////////////\n // 512 by 256 division.\n ///////////////////////////////////////////////\n\n // Make division exact by subtracting the remainder from [prod1 prod0].\n uint256 remainder;\n assembly {\n // Compute remainder using mulmod.\n remainder := mulmod(x, y, denominator)\n\n // Subtract 256 bit number from 512 bit number.\n prod1 := sub(prod1, gt(remainder, prod0))\n prod0 := sub(prod0, remainder)\n }\n\n // Factor powers of two out of denominator and compute largest power of two divisor of denominator. Always >= 1.\n // See https://cs.stackexchange.com/q/138556/92363.\n\n // Does not overflow because the denominator cannot be zero at this stage in the function.\n uint256 twos = denominator & (~denominator + 1);\n assembly {\n // Divide denominator by twos.\n denominator := div(denominator, twos)\n\n // Divide [prod1 prod0] by twos.\n prod0 := div(prod0, twos)\n\n // Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one.\n twos := add(div(sub(0, twos), twos), 1)\n }\n\n // Shift in bits from prod1 into prod0.\n prod0 |= prod1 * twos;\n\n // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such\n // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for\n // four bits. That is, denominator * inv = 1 mod 2^4.\n uint256 inverse = (3 * denominator) ^ 2;\n\n // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also works\n // in modular arithmetic, doubling the correct bits in each step.\n inverse *= 2 - denominator * inverse; // inverse mod 2^8\n inverse *= 2 - denominator * inverse; // inverse mod 2^16\n inverse *= 2 - denominator * inverse; // inverse mod 2^32\n inverse *= 2 - denominator * inverse; // inverse mod 2^64\n inverse *= 2 - denominator * inverse; // inverse mod 2^128\n inverse *= 2 - denominator * inverse; // inverse mod 2^256\n\n // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\n // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is\n // less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1\n // is no longer required.\n result = prod0 * inverse;\n return result;\n }\n }\n\n /**\n * @notice Calculates x * y / denominator with full precision, following the selected rounding direction.\n */\n function mulDiv(uint256 x, uint256 y, uint256 denominator, Rounding rounding) internal pure returns (uint256) {\n uint256 result = mulDiv(x, y, denominator);\n if (rounding == Rounding.Up && mulmod(x, y, denominator) > 0) {\n result += 1;\n }\n return result;\n }\n\n /**\n * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down.\n *\n * Inspired by Henry S. Warren, Jr.'s \"Hacker's Delight\" (Chapter 11).\n */\n function sqrt(uint256 a) internal pure returns (uint256) {\n if (a == 0) {\n return 0;\n }\n\n // For our first guess, we get the biggest power of 2 which is smaller than the square root of the target.\n //\n // We know that the \"msb\" (most significant bit) of our target number `a` is a power of 2 such that we have\n // `msb(a) <= a < 2*msb(a)`. This value can be written `msb(a)=2**k` with `k=log2(a)`.\n //\n // This can be rewritten `2**log2(a) <= a < 2**(log2(a) + 1)`\n // → `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))`\n // → `2**(k/2) <= sqrt(a) < 2**((k+1)/2) <= 2**(k/2 + 1)`\n //\n // Consequently, `2**(log2(a) / 2)` is a good first approximation of `sqrt(a)` with at least 1 correct bit.\n uint256 result = 1 << (log2(a) >> 1);\n\n // At this point `result` is an estimation with one bit of precision. We know the true value is a uint128,\n // since it is the square root of a uint256. Newton's method converges quadratically (precision doubles at\n // every iteration). We thus need at most 7 iteration to turn our partial result with one bit of precision\n // into the expected uint128 result.\n unchecked {\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n return min(result, a / result);\n }\n }\n\n /**\n * @notice Calculates sqrt(a), following the selected rounding direction.\n */\n function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {\n unchecked {\n uint256 result = sqrt(a);\n return result + (rounding == Rounding.Up && result * result < a ? 1 : 0);\n }\n }\n\n /**\n * @dev Return the log in base 2, rounded down, of a positive value.\n * Returns 0 if given 0.\n */\n function log2(uint256 value) internal pure returns (uint256) {\n uint256 result = 0;\n unchecked {\n if (value >> 128 > 0) {\n value >>= 128;\n result += 128;\n }\n if (value >> 64 > 0) {\n value >>= 64;\n result += 64;\n }\n if (value >> 32 > 0) {\n value >>= 32;\n result += 32;\n }\n if (value >> 16 > 0) {\n value >>= 16;\n result += 16;\n }\n if (value >> 8 > 0) {\n value >>= 8;\n result += 8;\n }\n if (value >> 4 > 0) {\n value >>= 4;\n result += 4;\n }\n if (value >> 2 > 0) {\n value >>= 2;\n result += 2;\n }\n if (value >> 1 > 0) {\n result += 1;\n }\n }\n return result;\n }\n\n /**\n * @dev Return the log in base 2, following the selected rounding direction, of a positive value.\n * Returns 0 if given 0.\n */\n function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {\n unchecked {\n uint256 result = log2(value);\n return result + (rounding == Rounding.Up && 1 << result < value ? 1 : 0);\n }\n }\n\n /**\n * @dev Return the log in base 10, rounded down, of a positive value.\n * Returns 0 if given 0.\n */\n function log10(uint256 value) internal pure returns (uint256) {\n uint256 result = 0;\n unchecked {\n if (value >= 10 ** 64) {\n value /= 10 ** 64;\n result += 64;\n }\n if (value >= 10 ** 32) {\n value /= 10 ** 32;\n result += 32;\n }\n if (value >= 10 ** 16) {\n value /= 10 ** 16;\n result += 16;\n }\n if (value >= 10 ** 8) {\n value /= 10 ** 8;\n result += 8;\n }\n if (value >= 10 ** 4) {\n value /= 10 ** 4;\n result += 4;\n }\n if (value >= 10 ** 2) {\n value /= 10 ** 2;\n result += 2;\n }\n if (value >= 10 ** 1) {\n result += 1;\n }\n }\n return result;\n }\n\n /**\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\n * Returns 0 if given 0.\n */\n function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {\n unchecked {\n uint256 result = log10(value);\n return result + (rounding == Rounding.Up && 10 ** result < value ? 1 : 0);\n }\n }\n\n /**\n * @dev Return the log in base 256, rounded down, of a positive value.\n * Returns 0 if given 0.\n *\n * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.\n */\n function log256(uint256 value) internal pure returns (uint256) {\n uint256 result = 0;\n unchecked {\n if (value >> 128 > 0) {\n value >>= 128;\n result += 16;\n }\n if (value >> 64 > 0) {\n value >>= 64;\n result += 8;\n }\n if (value >> 32 > 0) {\n value >>= 32;\n result += 4;\n }\n if (value >> 16 > 0) {\n value >>= 16;\n result += 2;\n }\n if (value >> 8 > 0) {\n result += 1;\n }\n }\n return result;\n }\n\n /**\n * @dev Return the log in base 256, following the selected rounding direction, of a positive value.\n * Returns 0 if given 0.\n */\n function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {\n unchecked {\n uint256 result = log256(value);\n return result + (rounding == Rounding.Up && 1 << (result << 3) < value ? 1 : 0);\n }\n }\n}\n"},"@openzeppelin/contracts/utils/math/SignedMath.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/SignedMath.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Standard signed math utilities missing in the Solidity language.\n */\nlibrary SignedMath {\n /**\n * @dev Returns the largest of two signed numbers.\n */\n function max(int256 a, int256 b) internal pure returns (int256) {\n return a > b ? a : b;\n }\n\n /**\n * @dev Returns the smallest of two signed numbers.\n */\n function min(int256 a, int256 b) internal pure returns (int256) {\n return a < b ? a : b;\n }\n\n /**\n * @dev Returns the average of two signed numbers without overflow.\n * The result is rounded towards zero.\n */\n function average(int256 a, int256 b) internal pure returns (int256) {\n // Formula from the book \"Hacker's Delight\"\n int256 x = (a & b) + ((a ^ b) >> 1);\n return x + (int256(uint256(x) >> 255) & (a ^ b));\n }\n\n /**\n * @dev Returns the absolute unsigned value of a signed value.\n */\n function abs(int256 n) internal pure returns (uint256) {\n unchecked {\n // must be unchecked in order to support `n = type(int256).min`\n return uint256(n >= 0 ? n : -n);\n }\n }\n}\n"},"@openzeppelin/contracts/utils/StorageSlot.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/StorageSlot.sol)\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Library for reading and writing primitive types to specific storage slots.\n *\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\n * This library helps with reading and writing to such slots without the need for inline assembly.\n *\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\n *\n * Example usage to set ERC1967 implementation slot:\n * ```solidity\n * contract ERC1967 {\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n *\n * function _getImplementation() internal view returns (address) {\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\n * }\n *\n * function _setImplementation(address newImplementation) internal {\n * require(Address.isContract(newImplementation), \"ERC1967: new implementation is not a contract\");\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\n * }\n * }\n * ```\n *\n * _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._\n * _Available since v4.9 for `string`, `bytes`._\n */\nlibrary StorageSlot {\n struct AddressSlot {\n address value;\n }\n\n struct BooleanSlot {\n bool value;\n }\n\n struct Bytes32Slot {\n bytes32 value;\n }\n\n struct Uint256Slot {\n uint256 value;\n }\n\n struct StringSlot {\n string value;\n }\n\n struct BytesSlot {\n bytes value;\n }\n\n /**\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\n */\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\n */\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\n */\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\n */\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `StringSlot` with member `value` located at `slot`.\n */\n function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\n */\n function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := store.slot\n }\n }\n\n /**\n * @dev Returns an `BytesSlot` with member `value` located at `slot`.\n */\n function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\n */\n function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := store.slot\n }\n }\n}\n"},"@openzeppelin/contracts/utils/Strings.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Strings.sol)\n\npragma solidity ^0.8.0;\n\nimport \"./math/Math.sol\";\nimport \"./math/SignedMath.sol\";\n\n/**\n * @dev String operations.\n */\nlibrary Strings {\n bytes16 private constant _SYMBOLS = \"0123456789abcdef\";\n uint8 private constant _ADDRESS_LENGTH = 20;\n\n /**\n * @dev Converts a `uint256` to its ASCII `string` decimal representation.\n */\n function toString(uint256 value) internal pure returns (string memory) {\n unchecked {\n uint256 length = Math.log10(value) + 1;\n string memory buffer = new string(length);\n uint256 ptr;\n /// @solidity memory-safe-assembly\n assembly {\n ptr := add(buffer, add(32, length))\n }\n while (true) {\n ptr--;\n /// @solidity memory-safe-assembly\n assembly {\n mstore8(ptr, byte(mod(value, 10), _SYMBOLS))\n }\n value /= 10;\n if (value == 0) break;\n }\n return buffer;\n }\n }\n\n /**\n * @dev Converts a `int256` to its ASCII `string` decimal representation.\n */\n function toString(int256 value) internal pure returns (string memory) {\n return string(abi.encodePacked(value < 0 ? \"-\" : \"\", toString(SignedMath.abs(value))));\n }\n\n /**\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\n */\n function toHexString(uint256 value) internal pure returns (string memory) {\n unchecked {\n return toHexString(value, Math.log256(value) + 1);\n }\n }\n\n /**\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\n */\n function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\n bytes memory buffer = new bytes(2 * length + 2);\n buffer[0] = \"0\";\n buffer[1] = \"x\";\n for (uint256 i = 2 * length + 1; i > 1; --i) {\n buffer[i] = _SYMBOLS[value & 0xf];\n value >>= 4;\n }\n require(value == 0, \"Strings: hex length insufficient\");\n return string(buffer);\n }\n\n /**\n * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.\n */\n function toHexString(address addr) internal pure returns (string memory) {\n return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);\n }\n\n /**\n * @dev Returns true if the two strings are equal.\n */\n function equal(string memory a, string memory b) internal pure returns (bool) {\n return keccak256(bytes(a)) == keccak256(bytes(b));\n }\n}\n"},"src/dao/IDAO.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\n/// @title IDAO\n/// @author Aragon X - 2022-2023\n/// @notice The interface required for DAOs within the Aragon App DAO framework.\n/// @custom:security-contact sirt@aragon.org\ninterface IDAO {\n /// @notice The action struct to be consumed by the DAO's `execute` function resulting in an external call.\n /// @param to The address to call.\n /// @param value The native token value to be sent with the call.\n /// @param data The bytes-encoded function selector and calldata for the call.\n struct Action {\n address to;\n uint256 value;\n bytes data;\n }\n\n /// @notice Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\n /// @param _where The address of the contract.\n /// @param _who The address of a EOA or contract to give the permissions.\n /// @param _permissionId The permission identifier.\n /// @param _data The optional data passed to the `PermissionCondition` registered.\n /// @return Returns true if the address has permission, false if not.\n function hasPermission(\n address _where,\n address _who,\n bytes32 _permissionId,\n bytes memory _data\n ) external view returns (bool);\n\n /// @notice Updates the DAO metadata (e.g., an IPFS hash).\n /// @param _metadata The IPFS hash of the new metadata object.\n function setMetadata(bytes calldata _metadata) external;\n\n /// @notice Emitted when the DAO metadata is updated.\n /// @param metadata The IPFS hash of the new metadata object.\n event MetadataSet(bytes metadata);\n\n /// @notice Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted.\n /// @param _callId The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce.\n /// @param _actions The array of actions.\n /// @param _allowFailureMap A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\n /// @return The array of results obtained from the executed actions in `bytes`.\n /// @return The resulting failure map containing the actions have actually failed.\n function execute(\n bytes32 _callId,\n Action[] memory _actions,\n uint256 _allowFailureMap\n ) external returns (bytes[] memory, uint256);\n\n /// @notice Emitted when a proposal is executed.\n /// @param actor The address of the caller.\n /// @param callId The ID of the call.\n /// @param actions The array of actions executed.\n /// @param allowFailureMap The allow failure map encoding which actions are allowed to fail.\n /// @param failureMap The failure map encoding which actions have failed.\n /// @param execResults The array with the results of the executed actions.\n /// @dev The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce.\n event Executed(\n address indexed actor,\n bytes32 callId,\n Action[] actions,\n uint256 allowFailureMap,\n uint256 failureMap,\n bytes[] execResults\n );\n\n /// @notice Emitted when a standard callback is registered.\n /// @param interfaceId The ID of the interface.\n /// @param callbackSelector The selector of the callback function.\n /// @param magicNumber The magic number to be registered for the callback function selector.\n event StandardCallbackRegistered(\n bytes4 interfaceId,\n bytes4 callbackSelector,\n bytes4 magicNumber\n );\n\n /// @notice Deposits (native) tokens to the DAO contract with a reference string.\n /// @param _token The address of the token or address(0) in case of the native token.\n /// @param _amount The amount of tokens to deposit.\n /// @param _reference The reference describing the deposit reason.\n function deposit(address _token, uint256 _amount, string calldata _reference) external payable;\n\n /// @notice Emitted when a token deposit has been made to the DAO.\n /// @param sender The address of the sender.\n /// @param token The address of the deposited token.\n /// @param amount The amount of tokens deposited.\n /// @param _reference The reference describing the deposit reason.\n event Deposited(\n address indexed sender,\n address indexed token,\n uint256 amount,\n string _reference\n );\n\n /// @notice Emitted when a native token deposit has been made to the DAO.\n /// @dev This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).\n /// @param sender The address of the sender.\n /// @param amount The amount of native tokens deposited.\n event NativeTokenDeposited(address sender, uint256 amount);\n\n /// @notice Setter for the trusted forwarder verifying the meta transaction.\n /// @param _trustedForwarder The trusted forwarder address.\n function setTrustedForwarder(address _trustedForwarder) external;\n\n /// @notice Getter for the trusted forwarder verifying the meta transaction.\n /// @return The trusted forwarder address.\n function getTrustedForwarder() external view returns (address);\n\n /// @notice Emitted when a new TrustedForwarder is set on the DAO.\n /// @param forwarder the new forwarder address.\n event TrustedForwarderSet(address forwarder);\n\n /// @notice Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\n /// @param _hash The hash of the data to be signed.\n /// @param _signature The signature byte array associated with `_hash`.\n /// @return Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not.\n function isValidSignature(bytes32 _hash, bytes memory _signature) external returns (bytes4);\n\n /// @notice Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\n /// @param _interfaceId The ID of the interface.\n /// @param _callbackSelector The selector of the callback function.\n /// @param _magicNumber The magic number to be registered for the function signature.\n function registerStandardCallback(\n bytes4 _interfaceId,\n bytes4 _callbackSelector,\n bytes4 _magicNumber\n ) external;\n\n /// @notice Removed function being left here to not corrupt the IDAO interface ID. Any call will revert.\n /// @dev Introduced in v1.0.0. Removed in v1.4.0.\n function setSignatureValidator(address) external;\n}\n"},"src/mocks/dao/DAOMock.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\nimport {IDAO} from \"../../dao/IDAO.sol\";\n\n/// @notice A mock DAO that anyone can set permissions in.\n/// @dev DO NOT USE IN PRODUCTION!\ncontract DAOMock is IDAO {\n bool public hasPermissionReturnValueMock;\n\n function setHasPermissionReturnValueMock(bool _hasPermissionReturnValueMock) external {\n hasPermissionReturnValueMock = _hasPermissionReturnValueMock;\n }\n\n function hasPermission(\n address _where,\n address _who,\n bytes32 _permissionId,\n bytes memory _data\n ) external view override returns (bool) {\n (_where, _who, _permissionId, _data);\n return hasPermissionReturnValueMock;\n }\n\n function getTrustedForwarder() public pure override returns (address) {\n return address(0);\n }\n\n function setTrustedForwarder(address _trustedForwarder) external pure override {\n (_trustedForwarder);\n }\n\n function setMetadata(bytes calldata _metadata) external pure override {\n (_metadata);\n }\n\n function execute(\n bytes32 callId,\n Action[] memory _actions,\n uint256 allowFailureMap\n ) external override returns (bytes[] memory execResults, uint256 failureMap) {\n emit Executed(msg.sender, callId, _actions, allowFailureMap, failureMap, execResults);\n }\n\n function deposit(\n address _token,\n uint256 _amount,\n string calldata _reference\n ) external payable override {\n (_token, _amount, _reference);\n }\n\n function setSignatureValidator(address _signatureValidator) external pure override {\n (_signatureValidator);\n }\n\n function isValidSignature(\n bytes32 _hash,\n bytes memory _signature\n ) external pure override returns (bytes4) {\n (_hash, _signature);\n return 0x0;\n }\n\n function registerStandardCallback(\n bytes4 _interfaceId,\n bytes4 _callbackSelector,\n bytes4 _magicNumber\n ) external pure override {\n (_interfaceId, _callbackSelector, _magicNumber);\n }\n}\n"},"src/mocks/permission/auth/DaoAuthorizableMock.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\nimport {DaoAuthorizable} from \"../../../permission/auth/DaoAuthorizable.sol\";\nimport {IDAO} from \"../../../dao/IDAO.sol\";\n\n/// @notice A mock contract containing a function protected by the `auth` modifier.\n/// @dev DO NOT USE IN PRODUCTION!\ncontract DaoAuthorizableMock is DaoAuthorizable {\n bytes32 public constant AUTHORIZED_FUNC_PERMISSION_ID = keccak256(\"AUTHORIZED_FUNC_PERMISSION\");\n\n constructor(IDAO _dao) DaoAuthorizable(_dao) {}\n\n function authorizedFunc()\n external\n auth(AUTHORIZED_FUNC_PERMISSION_ID)\n // solhint-disable-next-line no-empty-blocks\n {\n\n }\n}\n"},"src/mocks/permission/auth/DaoAuthorizableUpgradeableMock.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\nimport {DaoAuthorizableUpgradeable} from \"../../../permission/auth/DaoAuthorizableUpgradeable.sol\";\nimport {IDAO} from \"../../../dao/IDAO.sol\";\n\n/// @notice A mock contract containing a function protected by the `auth` modifier.\n/// @dev DO NOT USE IN PRODUCTION!\ncontract DaoAuthorizableUpgradeableMock is DaoAuthorizableUpgradeable {\n bytes32 public constant AUTHORIZED_FUNC_PERMISSION_ID = keccak256(\"AUTHORIZED_FUNC_PERMISSION\");\n\n function initialize(IDAO _dao) external initializer {\n __DaoAuthorizableUpgradeable_init(_dao);\n }\n\n /// @notice The following function intentionally misses the `initializer` modifier\n /// to validate that `__DaoAuthorizableUpgradeable_init` cannot be called outside initialization.\n function notAnInitializer(IDAO _dao) external {\n __DaoAuthorizableUpgradeable_init(_dao);\n }\n\n function authorizedFunc()\n external\n auth(AUTHORIZED_FUNC_PERMISSION_ID) // solhint-disable-next-line no-empty-blocks\n {}\n}\n"},"src/mocks/permission/condition/PermissionConditionMock.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\nimport {PermissionCondition} from \"../../../permission/condition/PermissionCondition.sol\";\n\n/// @notice A mock permission condition that can be set to permit or deny every call.\n/// @dev DO NOT USE IN PRODUCTION!\ncontract PermissionConditionMock is PermissionCondition {\n bool public answer;\n\n function setAnswer(bool _answer) external {\n answer = _answer;\n }\n\n function isGranted(\n address _where,\n address _who,\n bytes32 _permissionId,\n bytes memory _data\n ) external view returns (bool) {\n (_where, _who, _permissionId, _data);\n return answer;\n }\n}\n"},"src/mocks/permission/condition/PermissionConditionUpgradeableMock.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\nimport {PermissionConditionUpgradeable} from \"../../../permission/condition/PermissionConditionUpgradeable.sol\";\n\n/// @notice A mock permission condition that can be set to permit or deny every call and be upgraded by everyone.\n/// @dev DO NOT USE IN PRODUCTION!\ncontract PermissionConditionUpgradeableMock is PermissionConditionUpgradeable {\n bool public answer;\n\n function setAnswer(bool _answer) external {\n answer = _answer;\n }\n\n function isGranted(\n address _where,\n address _who,\n bytes32 _permissionId,\n bytes memory _data\n ) external view returns (bool) {\n (_where, _who, _permissionId, _data);\n return answer;\n }\n}\n"},"src/mocks/plugin/extensions/governance/AddresslistMock.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\nimport {Addresslist} from \"../../../../plugin/extensions/governance/Addresslist.sol\";\n\n/// @notice A mock addresslist that everyone can add and remove addresses to and from, respectively.\n/// @dev DO NOT USE IN PRODUCTION!\ncontract AddresslistMock is Addresslist {\n function addAddresses(address[] calldata _newAddresses) external {\n _addAddresses(_newAddresses);\n }\n\n function removeAddresses(address[] calldata _exitingAddresses) external {\n _removeAddresses(_exitingAddresses);\n }\n}\n"},"src/mocks/plugin/extensions/proposal/ProposalMock.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\nimport {Proposal} from \"../../../../plugin/extensions/proposal/Proposal.sol\";\nimport {IDAO} from \"../../../../dao/IDAO.sol\";\n\n/// @notice A mock contract containing functions to create and execute proposals.\n/// @dev DO NOT USE IN PRODUCTION!\ncontract ProposalMock is Proposal {\n function createProposalId() external returns (uint256 proposalId) {\n proposalId = _createProposalId();\n }\n\n function createProposal(\n address _creator,\n bytes calldata _metadata,\n uint64 _startDate,\n uint64 _endDate,\n IDAO.Action[] calldata _actions,\n uint256 _allowFailureMap\n ) external returns (uint256 proposalId) {\n proposalId = _createProposal(\n _creator,\n _metadata,\n _startDate,\n _endDate,\n _actions,\n _allowFailureMap\n );\n }\n\n function executeProposal(\n IDAO _dao,\n uint256 _proposalId,\n IDAO.Action[] memory _actions,\n uint256 _allowFailureMap\n ) external returns (bytes[] memory execResults, uint256 failureMap) {\n (execResults, failureMap) = _executeProposal(_dao, _proposalId, _actions, _allowFailureMap);\n }\n}\n"},"src/mocks/plugin/extensions/proposal/ProposalUpgradeableMock.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\nimport {ProposalUpgradeable} from \"../../../../plugin/extensions/proposal/ProposalUpgradeable.sol\";\nimport {IDAO} from \"../../../../dao/IDAO.sol\";\n\n/// @notice A mock contract containing functions to create and execute proposals as well as storage gaps in inherited contracts to be used in UUPS upgradeable contracts.\n/// @dev DO NOT USE IN PRODUCTION!\ncontract ProposalUpgradeableMock is ProposalUpgradeable {\n function createProposalId() external returns (uint256 proposalId) {\n proposalId = _createProposalId();\n }\n\n function createProposal(\n address _creator,\n bytes calldata _metadata,\n uint64 _startDate,\n uint64 _endDate,\n IDAO.Action[] calldata _actions,\n uint256 _allowFailureMap\n ) external returns (uint256 proposalId) {\n proposalId = _createProposal(\n _creator,\n _metadata,\n _startDate,\n _endDate,\n _actions,\n _allowFailureMap\n );\n }\n\n function executeProposal(\n IDAO _dao,\n uint256 _proposalId,\n IDAO.Action[] memory _actions,\n uint256 _allowFailureMap\n ) external returns (bytes[] memory execResults, uint256 failureMap) {\n (execResults, failureMap) = _executeProposal(_dao, _proposalId, _actions, _allowFailureMap);\n }\n}\n"},"src/mocks/plugin/PluginCloneableMock.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\n/* solhint-disable one-contract-per-file */\npragma solidity ^0.8.8;\n\nimport {PluginCloneable} from \"../../plugin/PluginCloneable.sol\";\nimport {IDAO} from \"../../dao/IDAO.sol\";\n\n/// @notice A mock cloneable plugin to be deployed via the minimal proxy pattern.\n/// v1.1 (Release 1, Build 1)\n/// @dev DO NOT USE IN PRODUCTION!\ncontract PluginCloneableMockBuild1 is PluginCloneable {\n uint256 public state1;\n\n function initialize(IDAO _dao) external initializer {\n __PluginCloneable_init(_dao);\n state1 = 1;\n }\n}\n\n/// @notice A mock cloneable plugin to be deployed via the minimal proxy pattern.\n/// v1.1 (Release 1, Build 2)\n/// @dev DO NOT USE IN PRODUCTION!\ncontract PluginCloneableMockBuild2 is PluginCloneable {\n uint256 public state1;\n uint256 public state2;\n\n function initialize(IDAO _dao) external initializer {\n __PluginCloneable_init(_dao);\n state1 = 1;\n state2 = 2;\n }\n}\n\n/// @notice A mock cloneable plugin missing an initializer function.\n/// @dev DO NOT USE IN PRODUCTION!\ncontract PluginCloneableMockBad is PluginCloneable {\n uint256 public state1;\n\n function notAnInitializer(IDAO _dao) external {\n __PluginCloneable_init(_dao);\n state1 = 1;\n }\n}\n"},"src/mocks/plugin/PluginCloneableSetupMock.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\n/* solhint-disable one-contract-per-file */\npragma solidity ^0.8.8;\n\nimport {PermissionLib} from \"../../permission/PermissionLib.sol\";\nimport {IPluginSetup} from \"../../plugin/setup/IPluginSetup.sol\";\nimport {PluginSetup} from \"../../plugin/setup/PluginSetup.sol\";\nimport {ProxyLib} from \"../../utils/deployment/ProxyLib.sol\";\nimport {IDAO} from \"../../dao/IDAO.sol\";\nimport {mockPermissions, mockHelpers} from \"./PluginSetupMockData.sol\";\nimport {PluginCloneableMockBuild1, PluginCloneableMockBuild2} from \"./PluginCloneableMock.sol\";\n\n/// @notice A mock plugin setup of a cloneable plugin to be deployed via the minimal proxy pattern.\n/// v1.1 (Release 1, Build 1)\n/// @dev DO NOT USE IN PRODUCTION!\ncontract PluginCloneableSetupMockBuild1 is PluginSetup {\n using ProxyLib for address;\n\n uint16 internal constant THIS_BUILD = 1;\n\n constructor() PluginSetup(address(new PluginCloneableMockBuild1())) {}\n\n /// @inheritdoc IPluginSetup\n function prepareInstallation(\n address _dao,\n bytes memory\n ) external returns (address plugin, PreparedSetupData memory preparedSetupData) {\n bytes memory initData = abi.encodeCall(PluginCloneableMockBuild1.initialize, (IDAO(_dao)));\n plugin = implementation().deployMinimalProxy(initData);\n preparedSetupData.helpers = mockHelpers(THIS_BUILD);\n preparedSetupData.permissions = mockPermissions(\n 0,\n THIS_BUILD,\n PermissionLib.Operation.Grant\n );\n }\n\n /// @inheritdoc IPluginSetup\n function prepareUninstallation(\n address _dao,\n SetupPayload calldata _payload\n ) external pure returns (PermissionLib.MultiTargetPermission[] memory permissions) {\n (_dao, _payload);\n permissions = mockPermissions(0, THIS_BUILD, PermissionLib.Operation.Revoke);\n }\n}\n\n/// @notice A mock plugin setup of a cloneable plugin to be deployed via the minimal proxy pattern.\n/// v1.2 (Release 1, Build 2)\n/// @dev DO NOT USE IN PRODUCTION!\ncontract PluginCloneableSetupMockBuild2 is PluginSetup {\n using ProxyLib for address;\n\n uint16 internal constant THIS_BUILD = 2;\n\n constructor() PluginSetup(address(new PluginCloneableMockBuild2())) {}\n\n /// @inheritdoc IPluginSetup\n function prepareInstallation(\n address _dao,\n bytes memory\n ) external returns (address plugin, PreparedSetupData memory preparedSetupData) {\n bytes memory initData = abi.encodeCall(PluginCloneableMockBuild2.initialize, (IDAO(_dao)));\n plugin = implementation().deployMinimalProxy(initData);\n preparedSetupData.helpers = mockHelpers(THIS_BUILD);\n preparedSetupData.permissions = mockPermissions(\n 0,\n THIS_BUILD,\n PermissionLib.Operation.Grant\n );\n }\n\n /// @inheritdoc IPluginSetup\n function prepareUninstallation(\n address _dao,\n SetupPayload calldata _payload\n ) external pure returns (PermissionLib.MultiTargetPermission[] memory permissions) {\n (_dao, _payload);\n permissions = mockPermissions(0, THIS_BUILD, PermissionLib.Operation.Revoke);\n }\n}\n"},"src/mocks/plugin/PluginMock.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\nimport {Plugin} from \"../../plugin/Plugin.sol\";\nimport {IDAO} from \"../../dao/IDAO.sol\";\n\n/// @notice A mock plugin to be deployed via the `new` keyword.\n/// v1.1 (Release 1, Build 1)\n/// @dev DO NOT USE IN PRODUCTION!\ncontract PluginMockBuild1 is Plugin {\n uint256 public state1;\n\n constructor(IDAO _dao) Plugin(_dao) {\n state1 = 1;\n }\n}\n"},"src/mocks/plugin/PluginSetupMock.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\n/* solhint-disable one-contract-per-file */\npragma solidity ^0.8.8;\n\nimport {PermissionLib} from \"../../permission/PermissionLib.sol\";\nimport {IPluginSetup} from \"../../plugin/setup/IPluginSetup.sol\";\nimport {PluginSetup} from \"../../plugin/setup/PluginSetup.sol\";\nimport {IDAO} from \"../../dao/IDAO.sol\";\nimport {mockPermissions, mockHelpers} from \"./PluginSetupMockData.sol\";\nimport {PluginMockBuild1} from \"./PluginMock.sol\";\n\n/// @notice A mock plugin setup of a plugin to be deployed via the `new` keyword.\n/// v1.1 (Release 1, Build 1)\n/// @dev DO NOT USE IN PRODUCTION!\ncontract PluginSetupMockBuild1 is PluginSetup {\n constructor() PluginSetup(address(new PluginMockBuild1(IDAO(address(0))))) {}\n\n /// @inheritdoc IPluginSetup\n function prepareInstallation(\n address _dao,\n bytes memory _data\n ) external returns (address plugin, PreparedSetupData memory preparedSetupData) {\n (_data);\n plugin = address(new PluginMockBuild1(IDAO(_dao)));\n preparedSetupData.helpers = mockHelpers(1);\n preparedSetupData.permissions = mockPermissions(0, 1, PermissionLib.Operation.Grant);\n }\n\n /// @inheritdoc IPluginSetup\n function prepareUninstallation(\n address _dao,\n SetupPayload calldata _payload\n ) external pure returns (PermissionLib.MultiTargetPermission[] memory permissions) {\n (_dao, _payload);\n permissions = mockPermissions(0, 1, PermissionLib.Operation.Revoke);\n }\n}\n"},"src/mocks/plugin/PluginSetupMockData.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\nimport {PermissionLib} from \"../../permission/PermissionLib.sol\";\n\naddress constant NO_CONDITION = address(0);\n\nerror ConflictingValues();\n\n/// @notice Creates a mock `MultiTargetPermission` array by converting a range of `uint160` values into `address` values.\n/// @param rangeStart The start of the range.\n/// @param rangeEnd The end of the range (that is not included).\n/// @param op The permission operation type.\n/// @return permissions The mock array of permissions.\n/// @dev DO NOT USE IN PRODUCTION!\nfunction mockPermissions(\n uint160 rangeStart,\n uint160 rangeEnd,\n PermissionLib.Operation op\n) pure returns (PermissionLib.MultiTargetPermission[] memory permissions) {\n if (rangeStart > rangeEnd) revert ConflictingValues();\n\n permissions = new PermissionLib.MultiTargetPermission[](rangeEnd - rangeStart);\n\n for (uint160 i = rangeStart; i < rangeEnd; i++) {\n permissions[i - rangeStart] = PermissionLib.MultiTargetPermission({\n operation: op,\n where: address(i),\n who: address(i),\n condition: PermissionLib.NO_CONDITION,\n permissionId: keccak256(\"MOCK_PERMISSION\")\n });\n }\n}\n\n/// @notice Creates a mock array of helper addresses of specified length by converting `uint160` values starting from 0 into `address` values.\n/// @param len The length of the helper array.\n/// @return helpers The mock array of helper addresses.\n/// @dev DO NOT USE IN PRODUCTION!\nfunction mockHelpers(uint160 len) pure returns (address[] memory helpers) {\n helpers = new address[](len);\n\n for (uint160 i = 0; i < len; i++) {\n helpers[i] = address(i);\n }\n}\n"},"src/mocks/plugin/PluginUUPSUpgradeableMock.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\n/* solhint-disable one-contract-per-file */\npragma solidity ^0.8.8;\n\nimport {PluginUUPSUpgradeable} from \"../../plugin/PluginUUPSUpgradeable.sol\";\nimport {IDAO} from \"../../dao/IDAO.sol\";\n\n/// @notice A mock upgradeable plugin to be deployed via the UUPS proxy pattern.\n/// v1.1 (Release 1, Build 1)\n/// @dev DO NOT USE IN PRODUCTION!\ncontract PluginUUPSUpgradeableMockBuild1 is PluginUUPSUpgradeable {\n uint256 public state1;\n\n function initialize(IDAO _dao) external initializer {\n __PluginUUPSUpgradeable_init(_dao);\n state1 = 1;\n }\n}\n\n/// @notice A mock upgradeable plugin to be deployed via the UUPS proxy pattern.\n/// v1.1 (Release 1, Build 2)\n/// @dev DO NOT USE IN PRODUCTION!\ncontract PluginUUPSUpgradeableMockBuild2 is PluginUUPSUpgradeable {\n uint256 public state1;\n uint256 public state2;\n\n function initialize(IDAO _dao) external reinitializer(2) {\n __PluginUUPSUpgradeable_init(_dao);\n state1 = 1;\n state2 = 2;\n }\n\n function initializeFrom(uint16 _previousBuild) external reinitializer(2) {\n if (_previousBuild < 2) {\n state2 = 2;\n }\n }\n}\n\n/// @notice A mock upgradeable plugin to be deployed via the UUPS proxy pattern.\n/// v1.1 (Release 1, Build 3)\n/// @dev DO NOT USE IN PRODUCTION!\ncontract PluginUUPSUpgradeableMockBuild3 is PluginUUPSUpgradeable {\n uint256 public state1;\n uint256 public state2;\n uint256 public state3;\n\n function initialize(IDAO _dao) external reinitializer(3) {\n __PluginUUPSUpgradeable_init(_dao);\n state1 = 1;\n state2 = 2;\n state3 = 3;\n }\n\n function initializeFrom(uint16 _previousBuild) external reinitializer(3) {\n if (_previousBuild < 2) {\n state2 = 2;\n }\n if (_previousBuild < 3) {\n state3 = 3;\n }\n }\n}\n\n/// @notice A mock upgradeable plugin missing an initializer function.\n/// @dev DO NOT USE IN PRODUCTION!\ncontract PluginUUPSUpgradeableMockBad is PluginUUPSUpgradeable {\n uint256 public state1;\n\n function notAnInitializer(IDAO _dao) external {\n __PluginUUPSUpgradeable_init(_dao);\n state1 = 1;\n }\n}\n"},"src/mocks/plugin/PluginUUPSUpgradeableSetupMock.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\n/* solhint-disable one-contract-per-file */\npragma solidity ^0.8.8;\n\nimport {PermissionLib} from \"../../permission/PermissionLib.sol\";\nimport {IPluginSetup} from \"../../plugin/setup/IPluginSetup.sol\";\nimport {PluginUpgradeableSetup} from \"../../plugin/setup/PluginUpgradeableSetup.sol\";\nimport {ProxyLib} from \"../../utils/deployment/ProxyLib.sol\";\nimport {IDAO} from \"../../dao/IDAO.sol\";\nimport {mockPermissions, mockHelpers} from \"./PluginSetupMockData.sol\";\nimport {PluginUUPSUpgradeableMockBuild1, PluginUUPSUpgradeableMockBuild2, PluginUUPSUpgradeableMockBuild3} from \"./PluginUUPSUpgradeableMock.sol\";\n\n/// @notice A mock plugin setup of an upgradeable plugin to be deployed via the UUPS pattern.\n/// v1.1 (Release 1, Build 1)\n/// @dev DO NOT USE IN PRODUCTION!\ncontract PluginUUPSUpgradeableSetupMockBuild1 is PluginUpgradeableSetup {\n using ProxyLib for address;\n\n uint16 internal constant THIS_BUILD = 1;\n\n constructor() PluginUpgradeableSetup(address(new PluginUUPSUpgradeableMockBuild1())) {}\n\n /// @inheritdoc IPluginSetup\n function prepareInstallation(\n address _dao,\n bytes memory\n ) public returns (address plugin, PreparedSetupData memory preparedSetupData) {\n bytes memory initData = abi.encodeCall(\n PluginUUPSUpgradeableMockBuild1.initialize,\n (IDAO(_dao))\n );\n plugin = implementation().deployUUPSProxy(initData);\n preparedSetupData.helpers = mockHelpers(1);\n preparedSetupData.permissions = mockPermissions(0, 1, PermissionLib.Operation.Grant);\n }\n\n /// @inheritdoc IPluginSetup\n /// @dev The default implementation for the initial build 1 that reverts because no earlier build exists.\n function prepareUpdate(\n address _dao,\n uint16 _fromBuild,\n SetupPayload calldata _payload\n ) external pure virtual returns (bytes memory, PreparedSetupData memory) {\n (_dao, _fromBuild, _payload);\n revert InvalidUpdatePath({fromBuild: 0, thisBuild: THIS_BUILD});\n }\n\n /// @inheritdoc IPluginSetup\n function prepareUninstallation(\n address _dao,\n SetupPayload calldata _payload\n ) external pure returns (PermissionLib.MultiTargetPermission[] memory permissions) {\n (_dao, _payload);\n permissions = mockPermissions(0, THIS_BUILD, PermissionLib.Operation.Revoke);\n }\n}\n\n/// @notice A mock plugin setup of an upgradeable plugin to be deployed via the UUPS pattern.\n/// v1.2 (Release 1, Build 2)\n/// @dev DO NOT USE IN PRODUCTION!\ncontract PluginUUPSUpgradeableSetupMockBuild2 is PluginUpgradeableSetup {\n using ProxyLib for address;\n\n uint16 internal constant THIS_BUILD = 2;\n\n constructor() PluginUpgradeableSetup(address(new PluginUUPSUpgradeableMockBuild2())) {}\n\n /// @inheritdoc IPluginSetup\n function prepareInstallation(\n address _dao,\n bytes memory\n ) external returns (address plugin, PreparedSetupData memory preparedSetupData) {\n bytes memory initData = abi.encodeCall(\n PluginUUPSUpgradeableMockBuild2.initialize,\n (IDAO(_dao))\n );\n plugin = implementation().deployUUPSProxy(initData);\n preparedSetupData.helpers = mockHelpers(THIS_BUILD);\n preparedSetupData.permissions = mockPermissions(\n 0,\n THIS_BUILD,\n PermissionLib.Operation.Grant\n );\n }\n\n /// @inheritdoc IPluginSetup\n function prepareUpdate(\n address _dao,\n uint16 _fromBuild,\n SetupPayload calldata _payload\n )\n external\n pure\n override\n returns (bytes memory initData, PreparedSetupData memory preparedSetupData)\n {\n (_dao, _payload);\n\n // Update from Build 1\n if (_fromBuild == 1) {\n preparedSetupData.helpers = mockHelpers(THIS_BUILD);\n initData = abi.encodeCall(PluginUUPSUpgradeableMockBuild2.initializeFrom, (_fromBuild));\n preparedSetupData.permissions = mockPermissions(\n _fromBuild,\n THIS_BUILD,\n PermissionLib.Operation.Grant\n );\n }\n }\n\n /// @inheritdoc IPluginSetup\n function prepareUninstallation(\n address _dao,\n SetupPayload calldata _payload\n ) external pure returns (PermissionLib.MultiTargetPermission[] memory permissions) {\n (_dao, _payload);\n permissions = mockPermissions(0, THIS_BUILD, PermissionLib.Operation.Revoke);\n }\n}\n\n/// @notice A mock plugin setup of an upgradeable plugin to be deployed via the UUPS pattern.\n/// v1.3 (Release 1, Build 3)\ncontract PluginUUPSUpgradeableSetupMockBuild3 is PluginUpgradeableSetup {\n using ProxyLib for address;\n\n uint16 internal constant THIS_BUILD = 3;\n\n constructor() PluginUpgradeableSetup(address(new PluginUUPSUpgradeableMockBuild3())) {}\n\n /// @inheritdoc IPluginSetup\n function prepareInstallation(\n address _dao,\n bytes memory\n ) external returns (address plugin, PreparedSetupData memory preparedSetupData) {\n bytes memory initData = abi.encodeCall(\n PluginUUPSUpgradeableMockBuild3.initialize,\n (IDAO(_dao))\n );\n plugin = implementation().deployUUPSProxy(initData);\n preparedSetupData.helpers = mockHelpers(THIS_BUILD);\n preparedSetupData.permissions = mockPermissions(\n 0,\n THIS_BUILD,\n PermissionLib.Operation.Grant\n );\n }\n\n /// @inheritdoc IPluginSetup\n function prepareUpdate(\n address _dao,\n uint16 _fromBuild,\n SetupPayload calldata _payload\n )\n external\n pure\n override\n returns (bytes memory initData, PreparedSetupData memory preparedSetupData)\n {\n (_dao, _payload);\n\n // Update from Build 1\n if (_fromBuild == 1) {\n preparedSetupData.helpers = mockHelpers(THIS_BUILD);\n initData = abi.encodeCall(PluginUUPSUpgradeableMockBuild3.initializeFrom, (_fromBuild));\n preparedSetupData.permissions = mockPermissions(\n _fromBuild,\n THIS_BUILD,\n PermissionLib.Operation.Grant\n );\n\n // If this update path should not be supported, you can revert with an error, e.g.,\n // revert InvalidUpdatePath({fromBuild: _fromBuild, thisBuild: THIS_BUILD});\n }\n\n // Update from Build 2\n if (_fromBuild == 2) {\n preparedSetupData.helpers = mockHelpers(THIS_BUILD);\n initData = abi.encodeCall(PluginUUPSUpgradeableMockBuild3.initializeFrom, (_fromBuild));\n preparedSetupData.permissions = mockPermissions(\n _fromBuild,\n THIS_BUILD,\n PermissionLib.Operation.Grant\n );\n }\n }\n\n /// @inheritdoc IPluginSetup\n function prepareUninstallation(\n address _dao,\n SetupPayload calldata _payload\n ) external pure returns (PermissionLib.MultiTargetPermission[] memory permissions) {\n (_dao, _payload);\n permissions = mockPermissions(0, THIS_BUILD, PermissionLib.Operation.Revoke);\n }\n}\n"},"src/mocks/token/ERC1155Mock.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\nimport {ERC1155} from \"@openzeppelin/contracts/token/ERC1155/ERC1155.sol\";\n\n/// @notice A mock [ERC-1155](https://eips.ethereum.org/EIPS/eip-1155) token that can be minted and burned by everyone.\n/// @dev DO NOT USE IN PRODUCTION!\ncontract ERC1155Mock is ERC1155 {\n constructor(string memory _uri) ERC1155(_uri) {}\n\n function mint(address account, uint256 tokenId, uint256 amount) public {\n _mint(account, tokenId, amount, bytes(\"\"));\n }\n\n function burn(address account, uint256 tokenId, uint256 amount) public {\n _burn(account, tokenId, amount);\n }\n}\n"},"src/mocks/token/ERC20Mock.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\nimport {ERC20} from \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n/// @notice A mock [ERC-20](https://eips.ethereum.org/EIPS/eip-20) token that can be minted and burned by everyone.\n/// @dev DO NOT USE IN PRODUCTION!\ncontract ERC20Mock is ERC20 {\n uint8 public decimals_ = 18;\n\n constructor(string memory _name, string memory _symbol) ERC20(_name, _symbol) {}\n\n function setDecimals(uint8 _decimals) public {\n decimals_ = _decimals;\n }\n\n function decimals() public view override returns (uint8) {\n return decimals_;\n }\n\n // sets the balance of the address\n // this mints/burns the amount depending on the current balance\n function setBalance(address to, uint256 amount) public {\n uint256 old = balanceOf(to);\n if (old < amount) {\n _mint(to, amount - old);\n } else if (old > amount) {\n _burn(to, old - amount);\n }\n }\n}\n"},"src/mocks/token/ERC721Mock.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\nimport {ERC721} from \"@openzeppelin/contracts/token/ERC721/ERC721.sol\";\n\n/// @notice A mock [ERC-721](https://eips.ethereum.org/EIPS/eip-721) token that can be minted and burned by everyone.\n/// @dev DO NOT USE IN PRODUCTION!\ncontract ERC721Mock is ERC721 {\n constructor(string memory name_, string memory symbol_) ERC721(name_, symbol_) {}\n\n function mint(address account, uint256 tokenId) public {\n _mint(account, tokenId);\n }\n\n function burn(uint256 tokenId) public {\n _burn(tokenId);\n }\n}\n"},"src/mocks/utils/math/BitmapMock.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\nimport {hasBit as _hasBit, flipBit as _flipBit} from \"../../../utils/math/BitMap.sol\";\n\n/// @notice A mock contract containing functions manipulating bitmaps.\n/// @dev DO NOT USE IN PRODUCTION!\ncontract BitmapMock {\n function hasBit(uint256 _bitmap, uint8 _index) public pure returns (bool) {\n return _hasBit(_bitmap, _index);\n }\n\n function flipBit(uint256 _bitmap, uint8 _index) public pure returns (uint256) {\n return _flipBit(_bitmap, _index);\n }\n}\n"},"src/mocks/utils/math/RatioMock.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\nimport {RATIO_BASE, _applyRatioCeiled} from \"../../../utils/math/Ratio.sol\";\n\n/// @notice A mock contract containing functions manipulating bitmaps.\n/// @dev DO NOT USE IN PRODUCTION!\ncontract RatioMock {\n function getRatioBase() public pure returns (uint256) {\n return RATIO_BASE;\n }\n\n function applyRatioCeiled(uint256 _value, uint256 _ratio) public pure returns (uint256) {\n return _applyRatioCeiled(_value, _ratio);\n }\n}\n"},"src/mocks/utils/versioning/ProtocolVersionMock.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\nimport {ProtocolVersion} from \"../../../utils/versioning/ProtocolVersion.sol\";\n\n/// @notice A mock contract returning the OSx protocol version number.\n/// @dev DO NOT USE IN PRODUCTION!\n// solhint-disable-next-line no-empty-blocks\ncontract ProtocolVersionMock is ProtocolVersion {\n\n}\n"},"src/mocks/utils/versioning/VersionComparisonLibMock.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\nimport {VersionComparisonLib} from \"../../../utils/versioning/VersionComparisonLib.sol\";\n\n/// @notice A mock contract containing functions to compare semantic version numbers.\n/// @dev DO NOT USE IN PRODUCTION!\ncontract VersionComparisonLibMock {\n using VersionComparisonLib for uint8[3];\n\n function eq(uint8[3] memory lhs, uint8[3] memory rhs) public pure returns (bool) {\n return lhs.eq(rhs);\n }\n\n function neq(uint8[3] memory lhs, uint8[3] memory rhs) public pure returns (bool) {\n return lhs.neq(rhs);\n }\n\n function lt(uint8[3] memory lhs, uint8[3] memory rhs) public pure returns (bool) {\n return lhs.lt(rhs);\n }\n\n function lte(uint8[3] memory lhs, uint8[3] memory rhs) public pure returns (bool) {\n return lhs.lte(rhs);\n }\n\n function gt(uint8[3] memory lhs, uint8[3] memory rhs) public pure returns (bool) {\n return lhs.gt(rhs);\n }\n\n function gte(uint8[3] memory lhs, uint8[3] memory rhs) public pure returns (bool) {\n return lhs.gte(rhs);\n }\n}\n"},"src/permission/auth/auth.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\nimport {IDAO} from \"../../dao/IDAO.sol\";\n\n/// @notice Thrown if a call is unauthorized in the associated DAO.\n/// @param dao The associated DAO.\n/// @param where The context in which the authorization reverted.\n/// @param who The address (EOA or contract) missing the permission.\n/// @param permissionId The permission identifier.\nerror DaoUnauthorized(address dao, address where, address who, bytes32 permissionId);\n\n/// @notice A free function checking if a caller is granted permissions on a target contract via a permission identifier that redirects the approval to a `PermissionCondition` if this was specified in the setup.\n/// @param _where The address of the target contract for which `who` receives permission.\n/// @param _who The address (EOA or contract) owning the permission.\n/// @param _permissionId The permission identifier.\n/// @param _data The optional data passed to the `PermissionCondition` registered.\n/// @custom:security-contact sirt@aragon.org\nfunction _auth(\n IDAO _dao,\n address _where,\n address _who,\n bytes32 _permissionId,\n bytes calldata _data\n) view {\n if (!_dao.hasPermission(_where, _who, _permissionId, _data))\n revert DaoUnauthorized({\n dao: address(_dao),\n where: _where,\n who: _who,\n permissionId: _permissionId\n });\n}\n"},"src/permission/auth/DaoAuthorizable.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\nimport {Context} from \"@openzeppelin/contracts/utils/Context.sol\";\n\nimport {IDAO} from \"../../dao/IDAO.sol\";\nimport {_auth} from \"./auth.sol\";\n\n/// @title DaoAuthorizable\n/// @author Aragon X - 2022-2023\n/// @notice An abstract contract providing a meta-transaction compatible modifier for non-upgradeable contracts instantiated via the `new` keyword to authorize function calls through an associated DAO.\n/// @custom:security-contact sirt@aragon.org\nabstract contract DaoAuthorizable is Context {\n /// @notice The associated DAO managing the permissions of inheriting contracts.\n IDAO private immutable DAO;\n\n /// @notice Constructs the contract by setting the associated DAO.\n /// @param _dao The associated DAO address.\n constructor(IDAO _dao) {\n DAO = _dao;\n }\n\n /// @notice Returns the DAO contract.\n /// @return The DAO contract.\n function dao() public view returns (IDAO) {\n return DAO;\n }\n\n /// @notice A modifier to make functions on inheriting contracts authorized. Permissions to call the function are checked through the associated DAO's permission manager.\n /// @param _permissionId The permission identifier required to call the method this modifier is applied to.\n modifier auth(bytes32 _permissionId) {\n _auth(DAO, address(this), _msgSender(), _permissionId, _msgData());\n _;\n }\n}\n"},"src/permission/auth/DaoAuthorizableUpgradeable.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\nimport {ContextUpgradeable} from \"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\";\n\nimport {IDAO} from \"../../dao/IDAO.sol\";\nimport {_auth} from \"./auth.sol\";\n\n/// @title DaoAuthorizableUpgradeable\n/// @author Aragon X - 2022-2023\n/// @notice An abstract contract providing a meta-transaction compatible modifier for upgradeable or cloneable contracts to authorize function calls through an associated DAO.\n/// @dev Make sure to call `__DaoAuthorizableUpgradeable_init` during initialization of the inheriting contract.\n/// @custom:security-contact sirt@aragon.org\nabstract contract DaoAuthorizableUpgradeable is ContextUpgradeable {\n /// @notice The associated DAO managing the permissions of inheriting contracts.\n IDAO private dao_;\n\n /// @notice Initializes the contract by setting the associated DAO.\n /// @param _dao The associated DAO address.\n // solhint-disable-next-line func-name-mixedcase\n function __DaoAuthorizableUpgradeable_init(IDAO _dao) internal onlyInitializing {\n dao_ = _dao;\n }\n\n /// @notice Returns the DAO contract.\n /// @return The DAO contract.\n function dao() public view returns (IDAO) {\n return dao_;\n }\n\n /// @notice A modifier to make functions on inheriting contracts authorized. Permissions to call the function are checked through the associated DAO's permission manager.\n /// @param _permissionId The permission identifier required to call the method this modifier is applied to.\n modifier auth(bytes32 _permissionId) {\n _auth(dao_, address(this), _msgSender(), _permissionId, _msgData());\n _;\n }\n\n /// @notice This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain (see [OpenZeppelin's guide about storage gaps](https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps)).\n uint256[49] private __gap;\n}\n"},"src/permission/condition/IPermissionCondition.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\n/// @title IPermissionCondition\n/// @author Aragon X - 2021-2023\n/// @notice An interface to be implemented to support custom permission logic.\n/// @dev To attach a condition to a permission, the `grantWithCondition` function must be used and refer to the implementing contract's address with the `condition` argument.\n/// @custom:security-contact sirt@aragon.org\ninterface IPermissionCondition {\n /// @notice Checks if a call is permitted.\n /// @param _where The address of the target contract.\n /// @param _who The address (EOA or contract) for which the permissions are checked.\n /// @param _permissionId The permission identifier.\n /// @param _data Optional data passed to the `PermissionCondition` implementation.\n /// @return isPermitted Returns true if the call is permitted.\n function isGranted(\n address _where,\n address _who,\n bytes32 _permissionId,\n bytes calldata _data\n ) external view returns (bool isPermitted);\n}\n"},"src/permission/condition/PermissionCondition.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\nimport {ERC165} from \"@openzeppelin/contracts/utils/introspection/ERC165.sol\";\n\nimport {IProtocolVersion} from \"../../utils/versioning/IProtocolVersion.sol\";\nimport {ProtocolVersion} from \"../../utils/versioning/ProtocolVersion.sol\";\nimport {IPermissionCondition} from \"./IPermissionCondition.sol\";\n\n/// @title PermissionCondition\n/// @author Aragon X - 2023\n/// @notice An abstract contract for non-upgradeable contracts instantiated via the `new` keyword to inherit from to support customary permissions depending on arbitrary on-chain state.\n/// @custom:security-contact sirt@aragon.org\nabstract contract PermissionCondition is ERC165, IPermissionCondition, ProtocolVersion {\n /// @notice Checks if an interface is supported by this or its parent contract.\n /// @param _interfaceId The ID of the interface.\n /// @return Returns `true` if the interface is supported.\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\n return\n _interfaceId == type(IPermissionCondition).interfaceId ||\n _interfaceId == type(IProtocolVersion).interfaceId ||\n super.supportsInterface(_interfaceId);\n }\n}\n"},"src/permission/condition/PermissionConditionUpgradeable.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\nimport {ERC165Upgradeable} from \"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\";\n\nimport {IProtocolVersion} from \"../../utils/versioning/IProtocolVersion.sol\";\nimport {ProtocolVersion} from \"../../utils/versioning/ProtocolVersion.sol\";\nimport {IPermissionCondition} from \"./IPermissionCondition.sol\";\n\n/// @title PermissionConditionUpgradeable\n/// @author Aragon X - 2023\n/// @notice An abstract contract for upgradeable or cloneable contracts to inherit from and to support customary permissions depending on arbitrary on-chain state.\n/// @custom:security-contact sirt@aragon.org\nabstract contract PermissionConditionUpgradeable is\n ERC165Upgradeable,\n IPermissionCondition,\n ProtocolVersion\n{\n /// @notice Checks if an interface is supported by this or its parent contract.\n /// @param _interfaceId The ID of the interface.\n /// @return Returns `true` if the interface is supported.\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\n return\n _interfaceId == type(IPermissionCondition).interfaceId ||\n _interfaceId == type(IProtocolVersion).interfaceId ||\n super.supportsInterface(_interfaceId);\n }\n}\n"},"src/permission/PermissionLib.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\n/// @title PermissionLib\n/// @author Aragon X - 2021-2023\n/// @notice A library containing objects for permission processing.\n/// @custom:security-contact sirt@aragon.org\nlibrary PermissionLib {\n /// @notice A constant expressing that no condition is applied to a permission.\n address public constant NO_CONDITION = address(0);\n\n /// @notice The types of permission operations available in the `PermissionManager`.\n /// @param Grant The grant operation setting a permission without a condition.\n /// @param Revoke The revoke operation removing a permission (that was granted with or without a condition).\n /// @param GrantWithCondition The grant operation setting a permission with a condition.\n enum Operation {\n Grant,\n Revoke,\n GrantWithCondition\n }\n\n /// @notice A struct containing the information for a permission to be applied on a single target contract without a condition.\n /// @param operation The permission operation type.\n /// @param who The address (EOA or contract) receiving the permission.\n /// @param permissionId The permission identifier.\n struct SingleTargetPermission {\n Operation operation;\n address who;\n bytes32 permissionId;\n }\n\n /// @notice A struct containing the information for a permission to be applied on multiple target contracts, optionally, with a condition.\n /// @param operation The permission operation type.\n /// @param where The address of the target contract for which `who` receives permission.\n /// @param who The address (EOA or contract) receiving the permission.\n /// @param condition The `PermissionCondition` that will be asked for authorization on calls connected to the specified permission identifier.\n /// @param permissionId The permission identifier.\n struct MultiTargetPermission {\n Operation operation;\n address where;\n address who;\n address condition;\n bytes32 permissionId;\n }\n}\n"},"src/plugin/extensions/governance/Addresslist.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\nimport {CheckpointsUpgradeable} from \"@openzeppelin/contracts-upgradeable/utils/CheckpointsUpgradeable.sol\";\n\nimport {_uncheckedAdd, _uncheckedSub} from \"../../../utils/math/UncheckedMath.sol\";\n\n/// @title Addresslist\n/// @author Aragon X - 2021-2023\n/// @notice The majority voting implementation using a list of member addresses.\n/// @dev This contract inherits from `MajorityVotingBase` and implements the `IMajorityVoting` interface.\n/// @custom:security-contact sirt@aragon.org\nabstract contract Addresslist {\n using CheckpointsUpgradeable for CheckpointsUpgradeable.History;\n\n /// @notice The mapping containing the checkpointed history of the address list.\n // solhint-disable-next-line named-parameters-mapping\n mapping(address => CheckpointsUpgradeable.History) private _addresslistCheckpoints;\n\n /// @notice The checkpointed history of the length of the address list.\n CheckpointsUpgradeable.History private _addresslistLengthCheckpoints;\n\n /// @notice Thrown when the address list update is invalid, which can be caused by the addition of an existing member or removal of a non-existing member.\n /// @param member The array of member addresses to be added or removed.\n error InvalidAddresslistUpdate(address member);\n\n /// @notice Checks if an account is on the address list at a specific block number.\n /// @param _account The account address being checked.\n /// @param _blockNumber The block number.\n /// @return Whether the account is listed at the specified block number.\n function isListedAtBlock(\n address _account,\n uint256 _blockNumber\n ) public view virtual returns (bool) {\n return _addresslistCheckpoints[_account].getAtBlock(_blockNumber) == 1;\n }\n\n /// @notice Checks if an account is currently on the address list.\n /// @param _account The account address being checked.\n /// @return Whether the account is currently listed.\n function isListed(address _account) public view virtual returns (bool) {\n return _addresslistCheckpoints[_account].latest() == 1;\n }\n\n /// @notice Returns the length of the address list at a specific block number.\n /// @param _blockNumber The specific block to get the count from. If `0`, then the latest checkpoint value is returned.\n /// @return The address list length at the specified block number.\n function addresslistLengthAtBlock(uint256 _blockNumber) public view virtual returns (uint256) {\n return _addresslistLengthCheckpoints.getAtBlock(_blockNumber);\n }\n\n /// @notice Returns the current length of the address list.\n /// @return The current address list length.\n function addresslistLength() public view virtual returns (uint256) {\n return _addresslistLengthCheckpoints.latest();\n }\n\n /// @notice Internal function to add new addresses to the address list.\n /// @param _newAddresses The new addresses to be added.\n function _addAddresses(address[] calldata _newAddresses) internal virtual {\n for (uint256 i; i < _newAddresses.length; ) {\n if (isListed(_newAddresses[i])) {\n revert InvalidAddresslistUpdate(_newAddresses[i]);\n }\n\n // Mark the address as listed\n _addresslistCheckpoints[_newAddresses[i]].push(1);\n\n unchecked {\n ++i;\n }\n }\n _addresslistLengthCheckpoints.push(_uncheckedAdd, _newAddresses.length);\n }\n\n /// @notice Internal function to remove existing addresses from the address list.\n /// @param _exitingAddresses The existing addresses to be removed.\n function _removeAddresses(address[] calldata _exitingAddresses) internal virtual {\n for (uint256 i; i < _exitingAddresses.length; ) {\n if (!isListed(_exitingAddresses[i])) {\n revert InvalidAddresslistUpdate(_exitingAddresses[i]);\n }\n\n // Mark the address as not listed\n _addresslistCheckpoints[_exitingAddresses[i]].push(0);\n\n unchecked {\n ++i;\n }\n }\n _addresslistLengthCheckpoints.push(_uncheckedSub, _exitingAddresses.length);\n }\n\n /// @dev This empty reserved space is put in place to allow future versions to add new\n /// variables without shifting down storage in the inheritance chain.\n /// https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\n uint256[48] private __gap;\n}\n"},"src/plugin/extensions/membership/IMembership.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\n/// @title IMembership\n/// @author Aragon X - 2022-2023\n/// @notice An interface to be implemented by DAO plugins that define membership.\n/// @custom:security-contact sirt@aragon.org\ninterface IMembership {\n /// @notice Emitted when members are added to the DAO plugin.\n /// @param members The list of new members being added.\n event MembersAdded(address[] members);\n\n /// @notice Emitted when members are removed from the DAO plugin.\n /// @param members The list of existing members being removed.\n event MembersRemoved(address[] members);\n\n /// @notice Emitted to announce the membership being defined by a contract.\n /// @param definingContract The contract defining the membership.\n event MembershipContractAnnounced(address indexed definingContract);\n\n /// @notice Checks if an account is a member of the DAO.\n /// @param _account The address of the account to be checked.\n /// @return Whether the account is a member or not.\n /// @dev This function must be implemented in the plugin contract that introduces the members to the DAO.\n function isMember(address _account) external view returns (bool);\n}\n"},"src/plugin/extensions/proposal/IProposal.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\nimport {IDAO} from \"../../../dao/IDAO.sol\";\n\n/// @title IProposal\n/// @author Aragon X - 2022-2023\n/// @notice An interface to be implemented by DAO plugins that create and execute proposals.\n/// @custom:security-contact sirt@aragon.org\ninterface IProposal {\n /// @notice Emitted when a proposal is created.\n /// @param proposalId The ID of the proposal.\n /// @param creator The creator of the proposal.\n /// @param startDate The start date of the proposal in seconds.\n /// @param endDate The end date of the proposal in seconds.\n /// @param metadata The metadata of the proposal.\n /// @param actions The actions that will be executed if the proposal passes.\n /// @param allowFailureMap A bitmap allowing the proposal to succeed, even if individual actions might revert. If the bit at index `i` is 1, the proposal succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\n event ProposalCreated(\n uint256 indexed proposalId,\n address indexed creator,\n uint64 startDate,\n uint64 endDate,\n bytes metadata,\n IDAO.Action[] actions,\n uint256 allowFailureMap\n );\n\n /// @notice Emitted when a proposal is executed.\n /// @param proposalId The ID of the proposal.\n event ProposalExecuted(uint256 indexed proposalId);\n\n /// @notice Returns the proposal count determining the next proposal ID.\n /// @return The proposal count.\n function proposalCount() external view returns (uint256);\n}\n"},"src/plugin/extensions/proposal/Proposal.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\nimport {Counters} from \"@openzeppelin/contracts/utils/Counters.sol\";\nimport {ERC165} from \"@openzeppelin/contracts/utils/introspection/ERC165.sol\";\n\nimport {IDAO} from \"../../../dao/IDAO.sol\";\nimport {IProposal} from \"./IProposal.sol\";\n\n/// @title Proposal\n/// @author Aragon X - 2022-2023\n/// @notice An abstract contract containing the traits and internal functionality to create and execute proposals that can be inherited by non-upgradeable DAO plugins.\n/// @custom:security-contact sirt@aragon.org\nabstract contract Proposal is IProposal, ERC165 {\n using Counters for Counters.Counter;\n\n /// @notice The incremental ID for proposals and executions.\n Counters.Counter private proposalCounter;\n\n /// @inheritdoc IProposal\n function proposalCount() public view override returns (uint256) {\n return proposalCounter.current();\n }\n\n /// @notice Checks if this or the parent contract supports an interface by its ID.\n /// @param _interfaceId The ID of the interface.\n /// @return Returns `true` if the interface is supported.\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\n return _interfaceId == type(IProposal).interfaceId || super.supportsInterface(_interfaceId);\n }\n\n /// @notice Creates a proposal ID.\n /// @return proposalId The proposal ID.\n function _createProposalId() internal returns (uint256 proposalId) {\n proposalId = proposalCount();\n proposalCounter.increment();\n }\n\n /// @notice Internal function to create a proposal.\n /// @param _metadata The proposal metadata.\n /// @param _startDate The start date of the proposal in seconds.\n /// @param _endDate The end date of the proposal in seconds.\n /// @param _allowFailureMap A bitmap allowing the proposal to succeed, even if individual actions might revert. If the bit at index `i` is 1, the proposal succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\n /// @param _actions The actions that will be executed after the proposal passes.\n /// @return proposalId The ID of the proposal.\n function _createProposal(\n address _creator,\n bytes calldata _metadata,\n uint64 _startDate,\n uint64 _endDate,\n IDAO.Action[] calldata _actions,\n uint256 _allowFailureMap\n ) internal virtual returns (uint256 proposalId) {\n proposalId = _createProposalId();\n\n emit ProposalCreated({\n proposalId: proposalId,\n creator: _creator,\n metadata: _metadata,\n startDate: _startDate,\n endDate: _endDate,\n actions: _actions,\n allowFailureMap: _allowFailureMap\n });\n }\n\n /// @notice Internal function to execute a proposal.\n /// @param _proposalId The ID of the proposal to be executed.\n /// @param _actions The array of actions to be executed.\n /// @param _allowFailureMap A bitmap allowing the proposal to succeed, even if individual actions might revert. If the bit at index `i` is 1, the proposal succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\n /// @return execResults The array with the results of the executed actions.\n /// @return failureMap The failure map encoding which actions have failed.\n function _executeProposal(\n IDAO _dao,\n uint256 _proposalId,\n IDAO.Action[] memory _actions,\n uint256 _allowFailureMap\n ) internal virtual returns (bytes[] memory execResults, uint256 failureMap) {\n (execResults, failureMap) = _dao.execute(bytes32(_proposalId), _actions, _allowFailureMap);\n emit ProposalExecuted({proposalId: _proposalId});\n }\n}\n"},"src/plugin/extensions/proposal/ProposalUpgradeable.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\nimport {CountersUpgradeable} from \"@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol\";\nimport {ERC165Upgradeable} from \"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\";\n\nimport {IDAO} from \"../../../dao/IDAO.sol\";\nimport {IProposal} from \"./IProposal.sol\";\n\n/// @title ProposalUpgradeable\n/// @author Aragon X - 2022-2023\n/// @notice An abstract contract containing the traits and internal functionality to create and execute proposals that can be inherited by upgradeable DAO plugins.\n/// @custom:security-contact sirt@aragon.org\nabstract contract ProposalUpgradeable is IProposal, ERC165Upgradeable {\n using CountersUpgradeable for CountersUpgradeable.Counter;\n\n /// @notice The incremental ID for proposals and executions.\n CountersUpgradeable.Counter private proposalCounter;\n\n /// @inheritdoc IProposal\n function proposalCount() public view override returns (uint256) {\n return proposalCounter.current();\n }\n\n /// @notice Checks if this or the parent contract supports an interface by its ID.\n /// @param _interfaceId The ID of the interface.\n /// @return Returns `true` if the interface is supported.\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\n return _interfaceId == type(IProposal).interfaceId || super.supportsInterface(_interfaceId);\n }\n\n /// @notice Creates a proposal ID.\n /// @return proposalId The proposal ID.\n function _createProposalId() internal returns (uint256 proposalId) {\n proposalId = proposalCount();\n proposalCounter.increment();\n }\n\n /// @notice Internal function to create a proposal.\n /// @param _metadata The proposal metadata.\n /// @param _startDate The start date of the proposal in seconds.\n /// @param _endDate The end date of the proposal in seconds.\n /// @param _allowFailureMap A bitmap allowing the proposal to succeed, even if individual actions might revert. If the bit at index `i` is 1, the proposal succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\n /// @param _actions The actions that will be executed after the proposal passes.\n /// @return proposalId The ID of the proposal.\n function _createProposal(\n address _creator,\n bytes calldata _metadata,\n uint64 _startDate,\n uint64 _endDate,\n IDAO.Action[] calldata _actions,\n uint256 _allowFailureMap\n ) internal virtual returns (uint256 proposalId) {\n proposalId = _createProposalId();\n\n emit ProposalCreated({\n proposalId: proposalId,\n creator: _creator,\n metadata: _metadata,\n startDate: _startDate,\n endDate: _endDate,\n actions: _actions,\n allowFailureMap: _allowFailureMap\n });\n }\n\n /// @notice Internal function to execute a proposal.\n /// @param _proposalId The ID of the proposal to be executed.\n /// @param _actions The array of actions to be executed.\n /// @param _allowFailureMap A bitmap allowing the proposal to succeed, even if individual actions might revert. If the bit at index `i` is 1, the proposal succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\n /// @return execResults The array with the results of the executed actions.\n /// @return failureMap The failure map encoding which actions have failed.\n function _executeProposal(\n IDAO _dao,\n uint256 _proposalId,\n IDAO.Action[] memory _actions,\n uint256 _allowFailureMap\n ) internal virtual returns (bytes[] memory execResults, uint256 failureMap) {\n (execResults, failureMap) = _dao.execute(bytes32(_proposalId), _actions, _allowFailureMap);\n emit ProposalExecuted({proposalId: _proposalId});\n }\n\n /// @notice This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain (see [OpenZeppelin's guide about storage gaps](https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps)).\n uint256[49] private __gap;\n}\n"},"src/plugin/IPlugin.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\n/// @title IPlugin\n/// @author Aragon X - 2022-2023\n/// @notice An interface defining the traits of a plugin.\n/// @custom:security-contact sirt@aragon.org\ninterface IPlugin {\n enum PluginType {\n UUPS,\n Cloneable,\n Constructable\n }\n\n /// @notice Returns the plugin's type\n function pluginType() external view returns (PluginType);\n}\n"},"src/plugin/Plugin.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\nimport {ERC165} from \"@openzeppelin/contracts/utils/introspection/ERC165.sol\";\n\nimport {IProtocolVersion} from \"../utils/versioning/IProtocolVersion.sol\";\nimport {ProtocolVersion} from \"../utils/versioning/ProtocolVersion.sol\";\nimport {DaoAuthorizable} from \"../permission/auth/DaoAuthorizable.sol\";\nimport {IDAO} from \"../dao/IDAO.sol\";\nimport {IPlugin} from \"./IPlugin.sol\";\n\n/// @title Plugin\n/// @author Aragon X - 2022-2023\n/// @notice An abstract, non-upgradeable contract to inherit from when creating a plugin being deployed via the `new` keyword.\n/// @custom:security-contact sirt@aragon.org\nabstract contract Plugin is IPlugin, ERC165, DaoAuthorizable, ProtocolVersion {\n /// @notice Constructs the plugin by storing the associated DAO.\n /// @param _dao The DAO contract.\n constructor(IDAO _dao) DaoAuthorizable(_dao) {}\n\n /// @inheritdoc IPlugin\n function pluginType() public pure override returns (PluginType) {\n return PluginType.Constructable;\n }\n\n /// @notice Checks if this or the parent contract supports an interface by its ID.\n /// @param _interfaceId The ID of the interface.\n /// @return Returns `true` if the interface is supported.\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\n return\n _interfaceId == type(IPlugin).interfaceId ||\n _interfaceId == type(IProtocolVersion).interfaceId ||\n super.supportsInterface(_interfaceId);\n }\n}\n"},"src/plugin/PluginCloneable.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\nimport {ERC165Upgradeable} from \"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\";\n\nimport {IProtocolVersion} from \"../utils/versioning/IProtocolVersion.sol\";\nimport {ProtocolVersion} from \"../utils/versioning/ProtocolVersion.sol\";\nimport {DaoAuthorizableUpgradeable} from \"../permission/auth/DaoAuthorizableUpgradeable.sol\";\nimport {IDAO} from \"../dao/IDAO.sol\";\nimport {IPlugin} from \"./IPlugin.sol\";\n\n/// @title PluginCloneable\n/// @author Aragon X - 2022-2023\n/// @notice An abstract, non-upgradeable contract to inherit from when creating a plugin being deployed via the minimal clones pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)).\n/// @custom:security-contact sirt@aragon.org\nabstract contract PluginCloneable is\n IPlugin,\n ERC165Upgradeable,\n DaoAuthorizableUpgradeable,\n ProtocolVersion\n{\n /// @notice Disables the initializers on the implementation contract to prevent it from being left uninitialized.\n /// @custom:oz-upgrades-unsafe-allow constructor\n constructor() {\n _disableInitializers();\n }\n\n /// @notice Initializes the plugin by storing the associated DAO.\n /// @param _dao The DAO contract.\n // solhint-disable-next-line func-name-mixedcase\n function __PluginCloneable_init(IDAO _dao) internal virtual onlyInitializing {\n __DaoAuthorizableUpgradeable_init(_dao);\n }\n\n /// @inheritdoc IPlugin\n function pluginType() public pure override returns (PluginType) {\n return PluginType.Cloneable;\n }\n\n /// @notice Checks if this or the parent contract supports an interface by its ID.\n /// @param _interfaceId The ID of the interface.\n /// @return Returns `true` if the interface is supported.\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\n return\n _interfaceId == type(IPlugin).interfaceId ||\n _interfaceId == type(IProtocolVersion).interfaceId ||\n super.supportsInterface(_interfaceId);\n }\n}\n"},"src/plugin/PluginUUPSUpgradeable.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\nimport {UUPSUpgradeable} from \"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\";\nimport {IERC1822ProxiableUpgradeable} from \"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol\";\nimport {ERC165Upgradeable} from \"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\";\n\nimport {IProtocolVersion} from \"../utils/versioning/IProtocolVersion.sol\";\nimport {ProtocolVersion} from \"../utils/versioning/ProtocolVersion.sol\";\nimport {DaoAuthorizableUpgradeable} from \"../permission/auth/DaoAuthorizableUpgradeable.sol\";\nimport {IDAO} from \"../dao/IDAO.sol\";\nimport {IPlugin} from \"./IPlugin.sol\";\n\n/// @title PluginUUPSUpgradeable\n/// @author Aragon X - 2022-2023\n/// @notice An abstract, upgradeable contract to inherit from when creating a plugin being deployed via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\n/// @custom:security-contact sirt@aragon.org\nabstract contract PluginUUPSUpgradeable is\n IPlugin,\n ERC165Upgradeable,\n UUPSUpgradeable,\n DaoAuthorizableUpgradeable,\n ProtocolVersion\n{\n // NOTE: When adding new state variables to the contract, the size of `_gap` has to be adapted below as well.\n\n /// @notice Disables the initializers on the implementation contract to prevent it from being left uninitialized.\n /// @custom:oz-upgrades-unsafe-allow constructor\n constructor() {\n _disableInitializers();\n }\n\n /// @inheritdoc IPlugin\n function pluginType() public pure override returns (PluginType) {\n return PluginType.UUPS;\n }\n\n /// @notice The ID of the permission required to call the `_authorizeUpgrade` function.\n bytes32 public constant UPGRADE_PLUGIN_PERMISSION_ID = keccak256(\"UPGRADE_PLUGIN_PERMISSION\");\n\n /// @notice Initializes the plugin by storing the associated DAO.\n /// @param _dao The DAO contract.\n // solhint-disable-next-line func-name-mixedcase\n function __PluginUUPSUpgradeable_init(IDAO _dao) internal virtual onlyInitializing {\n __DaoAuthorizableUpgradeable_init(_dao);\n }\n\n /// @notice Checks if an interface is supported by this or its parent contract.\n /// @param _interfaceId The ID of the interface.\n /// @return Returns `true` if the interface is supported.\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\n return\n _interfaceId == type(IPlugin).interfaceId ||\n _interfaceId == type(IProtocolVersion).interfaceId ||\n _interfaceId == type(IERC1822ProxiableUpgradeable).interfaceId ||\n super.supportsInterface(_interfaceId);\n }\n\n /// @notice Returns the address of the implementation contract in the [proxy storage slot](https://eips.ethereum.org/EIPS/eip-1967) slot the [UUPS proxy](https://eips.ethereum.org/EIPS/eip-1822) is pointing to.\n /// @return The address of the implementation contract.\n function implementation() public view returns (address) {\n return _getImplementation();\n }\n\n /// @notice Internal method authorizing the upgrade of the contract via the [upgradeability mechanism for UUPS proxies](https://docs.openzeppelin.com/contracts/4.x/api/proxy#UUPSUpgradeable) (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\n /// @dev The caller must have the `UPGRADE_PLUGIN_PERMISSION_ID` permission.\n function _authorizeUpgrade(\n address\n )\n internal\n virtual\n override\n auth(UPGRADE_PLUGIN_PERMISSION_ID)\n // solhint-disable-next-line no-empty-blocks\n {\n\n }\n\n /// @notice This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain (see [OpenZeppelin's guide about storage gaps](https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps)).\n uint256[50] private __gap;\n}\n"},"src/plugin/setup/IPluginSetup.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\nimport {PermissionLib} from \"../../permission/PermissionLib.sol\";\n\n// solhint-disable-next-line no-unused-import\nimport {IDAO} from \"../../dao/IDAO.sol\";\n\n/// @title IPluginSetup\n/// @author Aragon X - 2022-2023\n/// @notice The interface required for a plugin setup contract to be consumed by the `PluginSetupProcessor` for plugin installations, updates, and uninstallations.\n/// @custom:security-contact sirt@aragon.org\ninterface IPluginSetup {\n /// @notice The data associated with a prepared setup.\n /// @param helpers The address array of helpers (contracts or EOAs) associated with this plugin version after the installation or update.\n /// @param permissions The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the installing or updating DAO.\n struct PreparedSetupData {\n address[] helpers;\n PermissionLib.MultiTargetPermission[] permissions;\n }\n\n /// @notice The payload for plugin updates and uninstallations containing the existing contracts as well as optional data to be consumed by the plugin setup.\n /// @param plugin The address of the `Plugin`.\n /// @param currentHelpers The address array of all current helpers (contracts or EOAs) associated with the plugin to update from.\n /// @param data The bytes-encoded data containing the input parameters for the preparation of update/uninstall as specified in the corresponding ABI on the version's metadata.\n struct SetupPayload {\n address plugin;\n address[] currentHelpers;\n bytes data;\n }\n\n /// @notice Prepares the installation of a plugin.\n /// @param _dao The address of the installing DAO.\n /// @param _data The bytes-encoded data containing the input parameters for the installation as specified in the plugin's build metadata JSON file.\n /// @return plugin The address of the `Plugin` contract being prepared for installation.\n /// @return preparedSetupData The deployed plugin's relevant data which consists of helpers and permissions.\n function prepareInstallation(\n address _dao,\n bytes calldata _data\n ) external returns (address plugin, PreparedSetupData memory preparedSetupData);\n\n /// @notice Prepares the update of a plugin.\n /// @param _dao The address of the updating DAO.\n /// @param _fromBuild The build number of the plugin to update from.\n /// @param _payload The relevant data necessary for the `prepareUpdate`. See above.\n /// @return initData The initialization data to be passed to upgradeable contracts when the update is applied in the `PluginSetupProcessor`.\n /// @return preparedSetupData The deployed plugin's relevant data which consists of helpers and permissions.\n function prepareUpdate(\n address _dao,\n uint16 _fromBuild,\n SetupPayload calldata _payload\n ) external returns (bytes memory initData, PreparedSetupData memory preparedSetupData);\n\n /// @notice Prepares the uninstallation of a plugin.\n /// @param _dao The address of the uninstalling DAO.\n /// @param _payload The relevant data necessary for the `prepareUninstallation`. See above.\n /// @return permissions The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the uninstalling DAO.\n function prepareUninstallation(\n address _dao,\n SetupPayload calldata _payload\n ) external returns (PermissionLib.MultiTargetPermission[] memory permissions);\n\n /// @notice Returns the plugin implementation address.\n /// @return The address of the plugin implementation contract.\n /// @dev The implementation can be instantiated via the `new` keyword, cloned via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)), or proxied via the UUPS proxy pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\n function implementation() external view returns (address);\n}\n"},"src/plugin/setup/PluginSetup.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\nimport {ERC165} from \"@openzeppelin/contracts/utils/introspection/ERC165.sol\";\n\nimport {IProtocolVersion} from \"../../utils/versioning/IProtocolVersion.sol\";\nimport {ProtocolVersion} from \"../../utils/versioning/ProtocolVersion.sol\";\nimport {IPluginSetup} from \"./IPluginSetup.sol\";\n\n/// @title PluginSetup\n/// @author Aragon X - 2022-2024\n/// @notice An abstract contract to inherit from to implement the plugin setup for non-upgradeable plugins, i.e,\n/// - `Plugin` being deployed via the `new` keyword\n/// - `PluginCloneable` being deployed via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)).\n/// @custom:security-contact sirt@aragon.org\nabstract contract PluginSetup is ERC165, IPluginSetup, ProtocolVersion {\n /// @notice The address of the plugin implementation contract for initial block explorer verification and, in the case of `PluginClonable` implementations, to create [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167) clones from.\n address internal immutable IMPLEMENTATION;\n\n /// @notice Thrown when attempting to prepare an update on a non-upgradeable plugin.\n error NonUpgradeablePlugin();\n\n /// @notice The contract constructor, that setting the plugin implementation contract.\n /// @param _implementation The address of the plugin implementation contract.\n constructor(address _implementation) {\n IMPLEMENTATION = _implementation;\n }\n\n /// @inheritdoc IPluginSetup\n /// @dev Since the underlying plugin is non-upgradeable, this non-virtual function must always revert.\n function prepareUpdate(\n address _dao,\n uint16 _fromBuild,\n SetupPayload calldata _payload\n ) external pure returns (bytes memory, PreparedSetupData memory) {\n (_dao, _fromBuild, _payload);\n revert NonUpgradeablePlugin();\n }\n\n /// @notice Checks if this or the parent contract supports an interface by its ID.\n /// @param _interfaceId The ID of the interface.\n /// @return Returns `true` if the interface is supported.\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\n return\n _interfaceId == type(IPluginSetup).interfaceId ||\n _interfaceId == type(IProtocolVersion).interfaceId ||\n super.supportsInterface(_interfaceId);\n }\n\n /// @inheritdoc IPluginSetup\n function implementation() public view returns (address) {\n return IMPLEMENTATION;\n }\n}\n"},"src/plugin/setup/PluginUpgradeableSetup.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\nimport {ERC165} from \"@openzeppelin/contracts/utils/introspection/ERC165.sol\";\n\nimport {IProtocolVersion} from \"../../utils/versioning/IProtocolVersion.sol\";\nimport {ProtocolVersion} from \"../../utils/versioning/ProtocolVersion.sol\";\nimport {IPluginSetup} from \"./IPluginSetup.sol\";\n\n/// @title PluginUpgradeableSetup\n/// @author Aragon X - 2022-2024\n/// @notice An abstract contract to inherit from to implement the plugin setup for upgradeable plugins, i.e, `PluginUUPSUpgradeable` being deployed via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822) and [ERC-1967](https://eips.ethereum.org/EIPS/eip-1967)).\n/// @custom:security-contact sirt@aragon.org\nabstract contract PluginUpgradeableSetup is ERC165, IPluginSetup, ProtocolVersion {\n /// @notice The address of the plugin implementation contract for initial block explorer verification\n /// and to create [ERC-1967](https://eips.ethereum.org/EIPS/eip-1967) UUPS proxies from.\n address internal immutable IMPLEMENTATION;\n\n /// @notice Thrown when an update path is not available, for example, if this is the initial build.\n /// @param fromBuild The build number to update from.\n /// @param thisBuild The build number of this setup to update to.\n error InvalidUpdatePath(uint16 fromBuild, uint16 thisBuild);\n\n /// @notice The contract constructor, that setting the plugin implementation contract.\n /// @param _implementation The address of the plugin implementation contract.\n constructor(address _implementation) {\n IMPLEMENTATION = _implementation;\n }\n\n /// @notice Checks if this or the parent contract supports an interface by its ID.\n /// @param _interfaceId The ID of the interface.\n /// @return Returns `true` if the interface is supported.\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\n return\n _interfaceId == type(IPluginSetup).interfaceId ||\n _interfaceId == type(IProtocolVersion).interfaceId ||\n super.supportsInterface(_interfaceId);\n }\n\n /// @inheritdoc IPluginSetup\n function implementation() public view returns (address) {\n return IMPLEMENTATION;\n }\n}\n"},"src/utils/deployment/ProxyFactory.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\nimport {ProxyLib} from \"./ProxyLib.sol\";\n\n/// @title ProxyFactory\n/// @author Aragon X - 2024\n/// @notice A factory to deploy proxies via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)) and minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)).\n/// @custom:security-contact sirt@aragon.org\ncontract ProxyFactory {\n using ProxyLib for address;\n /// @notice The immutable logic contract address.\n address internal immutable IMPLEMENTATION;\n\n /// @notice Emitted when an proxy contract is created.\n /// @param proxy The proxy address.\n event ProxyCreated(address proxy);\n\n /// @notice Initializes the contract with a logic contract address.\n /// @param _implementation The logic contract address.\n constructor(address _implementation) {\n IMPLEMENTATION = _implementation;\n }\n\n /// @notice Creates an [ERC-1967](https://eips.ethereum.org/EIPS/eip-1967) proxy contract pointing to the pre-set logic contract.\n /// @param _data The initialization data for this contract.\n /// @return proxy The address of the proxy contract created.\n /// @dev If `_data` is non-empty, it is used in a delegate call to the `_implementation` contract. This will typically be an encoded function call initializing the proxy (see [OpenZeppelin ERC1967Proxy-constructor](https://docs.openzeppelin.com/contracts/4.x/api/proxy#ERC1967Proxy-constructor-address-bytes-)).\n function deployUUPSProxy(bytes memory _data) external returns (address proxy) {\n proxy = IMPLEMENTATION.deployUUPSProxy(_data);\n emit ProxyCreated({proxy: proxy});\n }\n\n /// @notice Creates an [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167) minimal proxy contract pointing to the pre-set logic contract.\n /// @param _data The initialization data for this contract.\n /// @return proxy The address of the proxy contract created.\n /// @dev If `_data` is non-empty, it is used in a call to the clone contract. This will typically be an encoded function call initializing the storage of the contract.\n function deployMinimalProxy(bytes memory _data) external returns (address proxy) {\n proxy = IMPLEMENTATION.deployMinimalProxy(_data);\n emit ProxyCreated({proxy: proxy});\n }\n\n /// @notice Returns the implementation contract address.\n /// @return The address of the implementation contract.\n /// @dev The implementation can be cloned via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)), or proxied via the UUPS proxy pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\n function implementation() public view returns (address) {\n return IMPLEMENTATION;\n }\n}\n"},"src/utils/deployment/ProxyLib.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\nimport {ERC1967Proxy} from \"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol\";\nimport {Clones} from \"@openzeppelin/contracts/proxy/Clones.sol\";\nimport {Address} from \"@openzeppelin/contracts/utils/Address.sol\";\n\n/// @title ProxyLib\n/// @author Aragon X - 2024\n/// @notice A library containing methods for the deployment of proxies via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)) and minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)).\n/// @custom:security-contact sirt@aragon.org\nlibrary ProxyLib {\n using Address for address;\n using Clones for address;\n\n /// @notice Creates an [ERC-1967](https://eips.ethereum.org/EIPS/eip-1967) UUPS proxy contract pointing to a logic contract and allows to immediately initialize it.\n /// @param _logic The logic contract the proxy is pointing to.\n /// @param _initCalldata The initialization data for this contract.\n /// @return uupsProxy The address of the UUPS proxy contract created.\n /// @dev If `_initCalldata` is non-empty, it is used in a delegate call to the `_logic` contract. This will typically be an encoded function call initializing the storage of the proxy (see [OpenZeppelin ERC1967Proxy-constructor](https://docs.openzeppelin.com/contracts/4.x/api/proxy#ERC1967Proxy-constructor-address-bytes-)).\n function deployUUPSProxy(\n address _logic,\n bytes memory _initCalldata\n ) internal returns (address uupsProxy) {\n uupsProxy = address(new ERC1967Proxy({_logic: _logic, _data: _initCalldata}));\n }\n\n /// @notice Creates an [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167) minimal proxy contract, also known as clones, pointing to a logic contract and allows to immediately initialize it.\n /// @param _logic The logic contract the proxy is pointing to.\n /// @param _initCalldata The initialization data for this contract.\n /// @return minimalProxy The address of the minimal proxy contract created.\n /// @dev If `_initCalldata` is non-empty, it is used in a call to the clone contract. This will typically be an encoded function call initializing the storage of the contract.\n function deployMinimalProxy(\n address _logic,\n bytes memory _initCalldata\n ) internal returns (address minimalProxy) {\n minimalProxy = _logic.clone();\n if (_initCalldata.length > 0) {\n minimalProxy.functionCall({data: _initCalldata});\n }\n }\n}\n"},"src/utils/math/BitMap.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\n/// @param bitmap The `uint256` representation of bits.\n/// @param index The index number to check whether 1 or 0 is set.\n/// @return Returns `true` if the bit is set at `index` on `bitmap`.\n/// @custom:security-contact sirt@aragon.org\nfunction hasBit(uint256 bitmap, uint8 index) pure returns (bool) {\n uint256 bitValue = bitmap & (1 << index);\n return bitValue > 0;\n}\n\n/// @param bitmap The `uint256` representation of bits.\n/// @param index The index number to set the bit.\n/// @return Returns a new number in which the bit is set at `index`.\n/// @custom:security-contact sirt@aragon.org\nfunction flipBit(uint256 bitmap, uint8 index) pure returns (uint256) {\n return bitmap ^ (1 << index);\n}\n"},"src/utils/math/Ratio.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\n// The base value to encode real-valued ratios on the interval `[0,1]` as integers on the interval `[0, 10**6]`.\nuint256 constant RATIO_BASE = 10 ** 6;\n\n/// @notice Thrown if a ratio value exceeds the maximal value of `10**6`.\n/// @param limit The maximal value.\n/// @param actual The actual value.\nerror RatioOutOfBounds(uint256 limit, uint256 actual);\n\n/// @notice Applies a ratio to a value and ceils the remainder.\n/// @param _value The value to which the ratio is applied.\n/// @param _ratio The ratio that must be in the interval `[0, 10**6]`.\n/// @return result The resulting value.\n/// @custom:security-contact sirt@aragon.org\nfunction _applyRatioCeiled(uint256 _value, uint256 _ratio) pure returns (uint256 result) {\n if (_ratio > RATIO_BASE) {\n revert RatioOutOfBounds({limit: RATIO_BASE, actual: _ratio});\n }\n\n _value = _value * _ratio;\n uint256 remainder = _value % RATIO_BASE;\n result = _value / RATIO_BASE;\n\n // Check if ceiling is needed\n if (remainder != 0) {\n ++result;\n }\n}\n"},"src/utils/math/UncheckedMath.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\n/// @notice Adds two unsigned integers without checking the result for overflow errors (using safe math).\n/// @param a The first summand.\n/// @param b The second summand.\n/// @return The sum.\n/// @custom:security-contact sirt@aragon.org\nfunction _uncheckedAdd(uint256 a, uint256 b) pure returns (uint256) {\n unchecked {\n return a + b;\n }\n}\n\n/// @notice Subtracts two unsigned integers without checking the result for overflow errors (using safe math).\n/// @param a The minuend.\n/// @param b The subtrahend.\n/// @return The difference.\n/// @custom:security-contact sirt@aragon.org\nfunction _uncheckedSub(uint256 a, uint256 b) pure returns (uint256) {\n unchecked {\n return a - b;\n }\n}\n"},"src/utils/versioning/IProtocolVersion.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\n/// @title IProtocolVersion\n/// @author Aragon X - 2022-2023\n/// @notice An interface defining the semantic Aragon OSx protocol version number.\n/// @custom:security-contact sirt@aragon.org\ninterface IProtocolVersion {\n /// @notice Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\n /// @return _version Returns the semantic Aragon OSx protocol version number.\n /// @dev This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\n function protocolVersion() external view returns (uint8[3] memory _version);\n}\n"},"src/utils/versioning/ProtocolVersion.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\nimport {IProtocolVersion} from \"./IProtocolVersion.sol\";\n\n/// @title ProtocolVersion\n/// @author Aragon X - 2023\n/// @notice An abstract, stateless, non-upgradeable contract providing the current Aragon OSx protocol version number.\n/// @dev Do not add any new variables to this contract that would shift down storage in the inheritance chain.\n/// @custom:security-contact sirt@aragon.org\nabstract contract ProtocolVersion is IProtocolVersion {\n // IMPORTANT: Do not add any storage variable, see the above notice.\n\n /// @inheritdoc IProtocolVersion\n function protocolVersion() public pure returns (uint8[3] memory) {\n return [1, 4, 0];\n }\n}\n"},"src/utils/versioning/VersionComparisonLib.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\n/// @title VersionComparisonLib\n/// @author Aragon X - 2023\n/// @notice A library containing methods for [semantic version number](https://semver.org/spec/v2.0.0.html) comparison.\n/// @custom:security-contact sirt@aragon.org\nlibrary VersionComparisonLib {\n /// @notice Equality comparator for two semantic version numbers.\n /// @param lhs The left-hand side semantic version number.\n /// @param rhs The right-hand side semantic version number.\n /// @return Whether the two numbers are equal or not.\n function eq(uint8[3] memory lhs, uint8[3] memory rhs) internal pure returns (bool) {\n if (lhs[0] != rhs[0]) return false;\n\n if (lhs[1] != rhs[1]) return false;\n\n if (lhs[2] != rhs[2]) return false;\n\n return true;\n }\n\n /// @notice Inequality comparator for two semantic version numbers.\n /// @param lhs The left-hand side semantic version number.\n /// @param rhs The right-hand side semantic version number.\n /// @return Whether the two numbers are inequal or not.\n function neq(uint8[3] memory lhs, uint8[3] memory rhs) internal pure returns (bool) {\n if (lhs[0] != rhs[0]) return true;\n\n if (lhs[1] != rhs[1]) return true;\n\n if (lhs[2] != rhs[2]) return true;\n\n return false;\n }\n\n /// @notice Less than comparator for two semantic version numbers.\n /// @param lhs The left-hand side semantic version number.\n /// @param rhs The right-hand side semantic version number.\n /// @return Whether the first number is less than the second number or not.\n function lt(uint8[3] memory lhs, uint8[3] memory rhs) internal pure returns (bool) {\n if (lhs[0] < rhs[0]) return true;\n if (lhs[0] > rhs[0]) return false;\n\n if (lhs[1] < rhs[1]) return true;\n if (lhs[1] > rhs[1]) return false;\n\n if (lhs[2] < rhs[2]) return true;\n\n return false;\n }\n\n /// @notice Less than or equal to comparator for two semantic version numbers.\n /// @param lhs The left-hand side semantic version number.\n /// @param rhs The right-hand side semantic version number.\n /// @return Whether the first number is less than or equal to the second number or not.\n function lte(uint8[3] memory lhs, uint8[3] memory rhs) internal pure returns (bool) {\n if (lhs[0] < rhs[0]) return true;\n if (lhs[0] > rhs[0]) return false;\n\n if (lhs[1] < rhs[1]) return true;\n if (lhs[1] > rhs[1]) return false;\n\n if (lhs[2] <= rhs[2]) return true;\n\n return false;\n }\n\n /// @notice Greater than comparator for two semantic version numbers.\n /// @param lhs The left-hand side semantic version number.\n /// @param rhs The right-hand side semantic version number.\n /// @return Whether the first number is greater than the second number or not.\n function gt(uint8[3] memory lhs, uint8[3] memory rhs) internal pure returns (bool) {\n if (lhs[0] > rhs[0]) return true;\n if (lhs[0] < rhs[0]) return false;\n\n if (lhs[1] > rhs[1]) return true;\n if (lhs[1] < rhs[1]) return false;\n\n if (lhs[2] > rhs[2]) return true;\n\n return false;\n }\n\n /// @notice Greater than or equal to comparator for two semantic version numbers.\n /// @param lhs The left-hand side semantic version number.\n /// @param rhs The right-hand side semantic version number.\n /// @return Whether the first number is greater than or equal to the second number or not.\n function gte(uint8[3] memory lhs, uint8[3] memory rhs) internal pure returns (bool) {\n if (lhs[0] > rhs[0]) return true;\n if (lhs[0] < rhs[0]) return false;\n\n if (lhs[1] > rhs[1]) return true;\n if (lhs[1] < rhs[1]) return false;\n\n if (lhs[2] >= rhs[2]) return true;\n\n return false;\n }\n}\n"}},"settings":{"metadata":{"bytecodeHash":"none","useLiteralContent":true},"optimizer":{"enabled":true,"runs":800},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata","storageLayout","devdoc","userdoc","evm.gasEstimates"],"":["ast"]}}}},"output":{"sources":{"@openzeppelin/contracts-upgradeable/interfaces/IERC1967Upgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/interfaces/IERC1967Upgradeable.sol","exportedSymbols":{"IERC1967Upgradeable":[20]},"id":21,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"107:23:0"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC1967Upgradeable","contractDependencies":[],"contractKind":"interface","documentation":{"id":2,"nodeType":"StructuredDocumentation","src":"132:133:0","text":" @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\n _Available since v4.8.3._"},"fullyImplemented":true,"id":20,"linearizedBaseContracts":[20],"name":"IERC1967Upgradeable","nameLocation":"276:19:0","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":3,"nodeType":"StructuredDocumentation","src":"302:68:0","text":" @dev Emitted when the implementation is upgraded."},"eventSelector":"bc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","id":7,"name":"Upgraded","nameLocation":"381:8:0","nodeType":"EventDefinition","parameters":{"id":6,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5,"indexed":true,"mutability":"mutable","name":"implementation","nameLocation":"406:14:0","nodeType":"VariableDeclaration","scope":7,"src":"390:30:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4,"name":"address","nodeType":"ElementaryTypeName","src":"390:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"389:32:0"},"src":"375:47:0"},{"anonymous":false,"documentation":{"id":8,"nodeType":"StructuredDocumentation","src":"428:67:0","text":" @dev Emitted when the admin account has changed."},"eventSelector":"7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f","id":14,"name":"AdminChanged","nameLocation":"506:12:0","nodeType":"EventDefinition","parameters":{"id":13,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10,"indexed":false,"mutability":"mutable","name":"previousAdmin","nameLocation":"527:13:0","nodeType":"VariableDeclaration","scope":14,"src":"519:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9,"name":"address","nodeType":"ElementaryTypeName","src":"519:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12,"indexed":false,"mutability":"mutable","name":"newAdmin","nameLocation":"550:8:0","nodeType":"VariableDeclaration","scope":14,"src":"542:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11,"name":"address","nodeType":"ElementaryTypeName","src":"542:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"518:41:0"},"src":"500:60:0"},{"anonymous":false,"documentation":{"id":15,"nodeType":"StructuredDocumentation","src":"566:59:0","text":" @dev Emitted when the beacon is changed."},"eventSelector":"1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e","id":19,"name":"BeaconUpgraded","nameLocation":"636:14:0","nodeType":"EventDefinition","parameters":{"id":18,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17,"indexed":true,"mutability":"mutable","name":"beacon","nameLocation":"667:6:0","nodeType":"VariableDeclaration","scope":19,"src":"651:22:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16,"name":"address","nodeType":"ElementaryTypeName","src":"651:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"650:24:0"},"src":"630:45:0"}],"scope":21,"src":"266:411:0","usedErrors":[]}],"src":"107:571:0"},"id":0},"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol","exportedSymbols":{"IERC1822ProxiableUpgradeable":[30]},"id":31,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":22,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"113:23:1"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC1822ProxiableUpgradeable","contractDependencies":[],"contractKind":"interface","documentation":{"id":23,"nodeType":"StructuredDocumentation","src":"138:203:1","text":" @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\n proxy whose upgrades are fully controlled by the current implementation."},"fullyImplemented":false,"id":30,"linearizedBaseContracts":[30],"name":"IERC1822ProxiableUpgradeable","nameLocation":"352:28:1","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":24,"nodeType":"StructuredDocumentation","src":"387:438:1","text":" @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\n address.\n IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\n bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\n function revert if invoked through a proxy."},"functionSelector":"52d1902d","id":29,"implemented":false,"kind":"function","modifiers":[],"name":"proxiableUUID","nameLocation":"839:13:1","nodeType":"FunctionDefinition","parameters":{"id":25,"nodeType":"ParameterList","parameters":[],"src":"852:2:1"},"returnParameters":{"id":28,"nodeType":"ParameterList","parameters":[{"constant":false,"id":27,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":29,"src":"878:7:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":26,"name":"bytes32","nodeType":"ElementaryTypeName","src":"878:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"877:9:1"},"scope":30,"src":"830:57:1","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":31,"src":"342:547:1","usedErrors":[]}],"src":"113:777:1"},"id":1},"@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol","exportedSymbols":{"AddressUpgradeable":[1001],"ERC1967UpgradeUpgradeable":[355],"IBeaconUpgradeable":[365],"IERC1822ProxiableUpgradeable":[30],"IERC1967Upgradeable":[20],"Initializable":[534],"StorageSlotUpgradeable":[2777]},"id":356,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":32,"literals":["solidity","^","0.8",".2"],"nodeType":"PragmaDirective","src":"116:23:2"},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.sol","file":"../beacon/IBeaconUpgradeable.sol","id":33,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":356,"sourceUnit":366,"src":"141:42:2","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/interfaces/IERC1967Upgradeable.sol","file":"../../interfaces/IERC1967Upgradeable.sol","id":34,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":356,"sourceUnit":21,"src":"184:50:2","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol","file":"../../interfaces/draft-IERC1822Upgradeable.sol","id":35,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":356,"sourceUnit":31,"src":"235:56:2","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol","file":"../../utils/AddressUpgradeable.sol","id":36,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":356,"sourceUnit":1002,"src":"292:44:2","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol","file":"../../utils/StorageSlotUpgradeable.sol","id":37,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":356,"sourceUnit":2778,"src":"337:48:2","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","file":"../utils/Initializable.sol","id":39,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":356,"sourceUnit":535,"src":"386:57:2","symbolAliases":[{"foreign":{"id":38,"name":"Initializable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":534,"src":"394:13:2","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":41,"name":"Initializable","nameLocations":["677:13:2"],"nodeType":"IdentifierPath","referencedDeclaration":534,"src":"677:13:2"},"id":42,"nodeType":"InheritanceSpecifier","src":"677:13:2"},{"baseName":{"id":43,"name":"IERC1967Upgradeable","nameLocations":["692:19:2"],"nodeType":"IdentifierPath","referencedDeclaration":20,"src":"692:19:2"},"id":44,"nodeType":"InheritanceSpecifier","src":"692:19:2"}],"canonicalName":"ERC1967UpgradeUpgradeable","contractDependencies":[],"contractKind":"contract","documentation":{"id":40,"nodeType":"StructuredDocumentation","src":"445:184:2","text":" @dev This abstract contract provides getters and event emitting update functions for\n https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\n _Available since v4.1._"},"fullyImplemented":true,"id":355,"linearizedBaseContracts":[355,20,534],"name":"ERC1967UpgradeUpgradeable","nameLocation":"648:25:2","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":47,"mutability":"constant","name":"_ROLLBACK_SLOT","nameLocation":"822:14:2","nodeType":"VariableDeclaration","scope":355,"src":"797:108:2","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":45,"name":"bytes32","nodeType":"ElementaryTypeName","src":"797:7:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307834393130666466613136666564333236306564306537313437663763633664613131613630323038623562393430366431326136333536313466666439313433","id":46,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"839:66:2","typeDescriptions":{"typeIdentifier":"t_rational_33048860383849004559742813297059419343339852917517107368639918720169455489347_by_1","typeString":"int_const 3304...(69 digits omitted)...9347"},"value":"0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143"},"visibility":"private"},{"constant":true,"documentation":{"id":48,"nodeType":"StructuredDocumentation","src":"912:214:2","text":" @dev Storage slot with the address of the current implementation.\n This is the keccak-256 hash of \"eip1967.proxy.implementation\" subtracted by 1, and is\n validated in the constructor."},"id":51,"mutability":"constant","name":"_IMPLEMENTATION_SLOT","nameLocation":"1157:20:2","nodeType":"VariableDeclaration","scope":355,"src":"1131:115:2","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":49,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1131:7:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307833363038393461313362613161333231303636376338323834393264623938646361336532303736636333373335613932306133636135303564333832626263","id":50,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1180:66:2","typeDescriptions":{"typeIdentifier":"t_rational_24440054405305269366569402256811496959409073762505157381672968839269610695612_by_1","typeString":"int_const 2444...(69 digits omitted)...5612"},"value":"0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc"},"visibility":"internal"},{"body":{"id":56,"nodeType":"Block","src":"1312:7:2","statements":[]},"id":57,"implemented":true,"kind":"function","modifiers":[{"id":54,"kind":"modifierInvocation","modifierName":{"id":53,"name":"onlyInitializing","nameLocations":["1295:16:2"],"nodeType":"IdentifierPath","referencedDeclaration":479,"src":"1295:16:2"},"nodeType":"ModifierInvocation","src":"1295:16:2"}],"name":"__ERC1967Upgrade_init","nameLocation":"1262:21:2","nodeType":"FunctionDefinition","parameters":{"id":52,"nodeType":"ParameterList","parameters":[],"src":"1283:2:2"},"returnParameters":{"id":55,"nodeType":"ParameterList","parameters":[],"src":"1312:0:2"},"scope":355,"src":"1253:66:2","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":62,"nodeType":"Block","src":"1394:7:2","statements":[]},"id":63,"implemented":true,"kind":"function","modifiers":[{"id":60,"kind":"modifierInvocation","modifierName":{"id":59,"name":"onlyInitializing","nameLocations":["1377:16:2"],"nodeType":"IdentifierPath","referencedDeclaration":479,"src":"1377:16:2"},"nodeType":"ModifierInvocation","src":"1377:16:2"}],"name":"__ERC1967Upgrade_init_unchained","nameLocation":"1334:31:2","nodeType":"FunctionDefinition","parameters":{"id":58,"nodeType":"ParameterList","parameters":[],"src":"1365:2:2"},"returnParameters":{"id":61,"nodeType":"ParameterList","parameters":[],"src":"1394:0:2"},"scope":355,"src":"1325:76:2","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":75,"nodeType":"Block","src":"1540:89:2","statements":[{"expression":{"expression":{"arguments":[{"id":71,"name":"_IMPLEMENTATION_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51,"src":"1595:20:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":69,"name":"StorageSlotUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2777,"src":"1557:22:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlotUpgradeable_$2777_$","typeString":"type(library StorageSlotUpgradeable)"}},"id":70,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1580:14:2","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":2699,"src":"1557:37:2","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$2673_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlotUpgradeable.AddressSlot storage pointer)"}},"id":72,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1557:59:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$2673_storage_ptr","typeString":"struct StorageSlotUpgradeable.AddressSlot storage pointer"}},"id":73,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1617:5:2","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":2672,"src":"1557:65:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":68,"id":74,"nodeType":"Return","src":"1550:72:2"}]},"documentation":{"id":64,"nodeType":"StructuredDocumentation","src":"1406:67:2","text":" @dev Returns the current implementation address."},"id":76,"implemented":true,"kind":"function","modifiers":[],"name":"_getImplementation","nameLocation":"1487:18:2","nodeType":"FunctionDefinition","parameters":{"id":65,"nodeType":"ParameterList","parameters":[],"src":"1505:2:2"},"returnParameters":{"id":68,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":76,"src":"1531:7:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":66,"name":"address","nodeType":"ElementaryTypeName","src":"1531:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1530:9:2"},"scope":355,"src":"1478:151:2","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":99,"nodeType":"Block","src":"1783:218:2","statements":[{"expression":{"arguments":[{"arguments":[{"id":85,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79,"src":"1831:17:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":83,"name":"AddressUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1001,"src":"1801:18:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AddressUpgradeable_$1001_$","typeString":"type(library AddressUpgradeable)"}},"id":84,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1820:10:2","memberName":"isContract","nodeType":"MemberAccess","referencedDeclaration":689,"src":"1801:29:2","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":86,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1801:48:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"455243313936373a206e657720696d706c656d656e746174696f6e206973206e6f74206120636f6e7472616374","id":87,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1851:47:2","typeDescriptions":{"typeIdentifier":"t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65","typeString":"literal_string \"ERC1967: new implementation is not a contract\""},"value":"ERC1967: new implementation is not a contract"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65","typeString":"literal_string \"ERC1967: new implementation is not a contract\""}],"id":82,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"1793:7:2","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":88,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1793:106:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":89,"nodeType":"ExpressionStatement","src":"1793:106:2"},{"expression":{"id":97,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[{"id":93,"name":"_IMPLEMENTATION_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51,"src":"1947:20:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":90,"name":"StorageSlotUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2777,"src":"1909:22:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlotUpgradeable_$2777_$","typeString":"type(library StorageSlotUpgradeable)"}},"id":92,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1932:14:2","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":2699,"src":"1909:37:2","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$2673_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlotUpgradeable.AddressSlot storage pointer)"}},"id":94,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1909:59:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$2673_storage_ptr","typeString":"struct StorageSlotUpgradeable.AddressSlot storage pointer"}},"id":95,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1969:5:2","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":2672,"src":"1909:65:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":96,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79,"src":"1977:17:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1909:85:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":98,"nodeType":"ExpressionStatement","src":"1909:85:2"}]},"documentation":{"id":77,"nodeType":"StructuredDocumentation","src":"1635:80:2","text":" @dev Stores a new address in the EIP1967 implementation slot."},"id":100,"implemented":true,"kind":"function","modifiers":[],"name":"_setImplementation","nameLocation":"1729:18:2","nodeType":"FunctionDefinition","parameters":{"id":80,"nodeType":"ParameterList","parameters":[{"constant":false,"id":79,"mutability":"mutable","name":"newImplementation","nameLocation":"1756:17:2","nodeType":"VariableDeclaration","scope":100,"src":"1748:25:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":78,"name":"address","nodeType":"ElementaryTypeName","src":"1748:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1747:27:2"},"returnParameters":{"id":81,"nodeType":"ParameterList","parameters":[],"src":"1783:0:2"},"scope":355,"src":"1720:281:2","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":114,"nodeType":"Block","src":"2163:96:2","statements":[{"expression":{"arguments":[{"id":107,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":103,"src":"2192:17:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":106,"name":"_setImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":100,"src":"2173:18:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":108,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2173:37:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":109,"nodeType":"ExpressionStatement","src":"2173:37:2"},{"eventCall":{"arguments":[{"id":111,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":103,"src":"2234:17:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":110,"name":"Upgraded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7,"src":"2225:8:2","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":112,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2225:27:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":113,"nodeType":"EmitStatement","src":"2220:32:2"}]},"documentation":{"id":101,"nodeType":"StructuredDocumentation","src":"2007:95:2","text":" @dev Perform implementation upgrade\n Emits an {Upgraded} event."},"id":115,"implemented":true,"kind":"function","modifiers":[],"name":"_upgradeTo","nameLocation":"2116:10:2","nodeType":"FunctionDefinition","parameters":{"id":104,"nodeType":"ParameterList","parameters":[{"constant":false,"id":103,"mutability":"mutable","name":"newImplementation","nameLocation":"2135:17:2","nodeType":"VariableDeclaration","scope":115,"src":"2127:25:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":102,"name":"address","nodeType":"ElementaryTypeName","src":"2127:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2126:27:2"},"returnParameters":{"id":105,"nodeType":"ParameterList","parameters":[],"src":"2163:0:2"},"scope":355,"src":"2107:152:2","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":144,"nodeType":"Block","src":"2491:178:2","statements":[{"expression":{"arguments":[{"id":126,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":118,"src":"2512:17:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":125,"name":"_upgradeTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":115,"src":"2501:10:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":127,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2501:29:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":128,"nodeType":"ExpressionStatement","src":"2501:29:2"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":134,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":132,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":129,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120,"src":"2544:4:2","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":130,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2549:6:2","memberName":"length","nodeType":"MemberAccess","src":"2544:11:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":131,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2558:1:2","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2544:15:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"id":133,"name":"forceCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":122,"src":"2563:9:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2544:28:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":143,"nodeType":"IfStatement","src":"2540:123:2","trueBody":{"id":142,"nodeType":"Block","src":"2574:89:2","statements":[{"expression":{"arguments":[{"id":138,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":118,"src":"2628:17:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":139,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120,"src":"2647:4:2","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":135,"name":"AddressUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1001,"src":"2588:18:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AddressUpgradeable_$1001_$","typeString":"type(library AddressUpgradeable)"}},"id":137,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2607:20:2","memberName":"functionDelegateCall","nodeType":"MemberAccess","referencedDeclaration":888,"src":"2588:39:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory) returns (bytes memory)"}},"id":140,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2588:64:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":141,"nodeType":"ExpressionStatement","src":"2588:64:2"}]}}]},"documentation":{"id":116,"nodeType":"StructuredDocumentation","src":"2265:123:2","text":" @dev Perform implementation upgrade with additional setup call.\n Emits an {Upgraded} event."},"id":145,"implemented":true,"kind":"function","modifiers":[],"name":"_upgradeToAndCall","nameLocation":"2402:17:2","nodeType":"FunctionDefinition","parameters":{"id":123,"nodeType":"ParameterList","parameters":[{"constant":false,"id":118,"mutability":"mutable","name":"newImplementation","nameLocation":"2428:17:2","nodeType":"VariableDeclaration","scope":145,"src":"2420:25:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":117,"name":"address","nodeType":"ElementaryTypeName","src":"2420:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120,"mutability":"mutable","name":"data","nameLocation":"2460:4:2","nodeType":"VariableDeclaration","scope":145,"src":"2447:17:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":119,"name":"bytes","nodeType":"ElementaryTypeName","src":"2447:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":122,"mutability":"mutable","name":"forceCall","nameLocation":"2471:9:2","nodeType":"VariableDeclaration","scope":145,"src":"2466:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":121,"name":"bool","nodeType":"ElementaryTypeName","src":"2466:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2419:62:2"},"returnParameters":{"id":124,"nodeType":"ParameterList","parameters":[],"src":"2491:0:2"},"scope":355,"src":"2393:276:2","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":197,"nodeType":"Block","src":"2943:842:2","statements":[{"condition":{"expression":{"arguments":[{"id":157,"name":"_ROLLBACK_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47,"src":"3295:14:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":155,"name":"StorageSlotUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2777,"src":"3257:22:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlotUpgradeable_$2777_$","typeString":"type(library StorageSlotUpgradeable)"}},"id":156,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3280:14:2","memberName":"getBooleanSlot","nodeType":"MemberAccess","referencedDeclaration":2710,"src":"3257:37:2","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_BooleanSlot_$2676_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlotUpgradeable.BooleanSlot storage pointer)"}},"id":158,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3257:53:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_BooleanSlot_$2676_storage_ptr","typeString":"struct StorageSlotUpgradeable.BooleanSlot storage pointer"}},"id":159,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3311:5:2","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":2675,"src":"3257:59:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":195,"nodeType":"Block","src":"3386:393:2","statements":[{"clauses":[{"block":{"id":180,"nodeType":"Block","src":"3491:115:2","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":176,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":174,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":171,"src":"3517:4:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":175,"name":"_IMPLEMENTATION_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51,"src":"3525:20:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"3517:28:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"45524331393637557067726164653a20756e737570706f727465642070726f786961626c6555554944","id":177,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3547:43:2","typeDescriptions":{"typeIdentifier":"t_stringliteral_76b6b6debfc5febf101145a79ecf0b0d2e89e397dfdab2bca99888370411152c","typeString":"literal_string \"ERC1967Upgrade: unsupported proxiableUUID\""},"value":"ERC1967Upgrade: unsupported proxiableUUID"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_76b6b6debfc5febf101145a79ecf0b0d2e89e397dfdab2bca99888370411152c","typeString":"literal_string \"ERC1967Upgrade: unsupported proxiableUUID\""}],"id":173,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"3509:7:2","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":178,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3509:82:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":179,"nodeType":"ExpressionStatement","src":"3509:82:2"}]},"errorName":"","id":181,"nodeType":"TryCatchClause","parameters":{"id":172,"nodeType":"ParameterList","parameters":[{"constant":false,"id":171,"mutability":"mutable","name":"slot","nameLocation":"3485:4:2","nodeType":"VariableDeclaration","scope":181,"src":"3477:12:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":170,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3477:7:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3476:14:2"},"src":"3468:138:2"},{"block":{"id":186,"nodeType":"Block","src":"3613:89:2","statements":[{"expression":{"arguments":[{"hexValue":"45524331393637557067726164653a206e657720696d706c656d656e746174696f6e206973206e6f742055555053","id":183,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3638:48:2","typeDescriptions":{"typeIdentifier":"t_stringliteral_8e8e2fbcb586f700b5b14e2c4a650c8d83b9773c31c5fe8962070ea544e11f24","typeString":"literal_string \"ERC1967Upgrade: new implementation is not UUPS\""},"value":"ERC1967Upgrade: new implementation is not UUPS"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_8e8e2fbcb586f700b5b14e2c4a650c8d83b9773c31c5fe8962070ea544e11f24","typeString":"literal_string \"ERC1967Upgrade: new implementation is not UUPS\""}],"id":182,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[4294967277,4294967277],"referencedDeclaration":4294967277,"src":"3631:6:2","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":184,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3631:56:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":185,"nodeType":"ExpressionStatement","src":"3631:56:2"}]},"errorName":"","id":187,"nodeType":"TryCatchClause","src":"3607:95:2"}],"externalCall":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":166,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":148,"src":"3433:17:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":165,"name":"IERC1822ProxiableUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30,"src":"3404:28:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC1822ProxiableUpgradeable_$30_$","typeString":"type(contract IERC1822ProxiableUpgradeable)"}},"id":167,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3404:47:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC1822ProxiableUpgradeable_$30","typeString":"contract IERC1822ProxiableUpgradeable"}},"id":168,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3452:13:2","memberName":"proxiableUUID","nodeType":"MemberAccess","referencedDeclaration":29,"src":"3404:61:2","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_bytes32_$","typeString":"function () view external returns (bytes32)"}},"id":169,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3404:63:2","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":188,"nodeType":"TryStatement","src":"3400:302:2"},{"expression":{"arguments":[{"id":190,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":148,"src":"3733:17:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":191,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":150,"src":"3752:4:2","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":192,"name":"forceCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":152,"src":"3758:9:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":189,"name":"_upgradeToAndCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":145,"src":"3715:17:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_bool_$returns$__$","typeString":"function (address,bytes memory,bool)"}},"id":193,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3715:53:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":194,"nodeType":"ExpressionStatement","src":"3715:53:2"}]},"id":196,"nodeType":"IfStatement","src":"3253:526:2","trueBody":{"id":164,"nodeType":"Block","src":"3318:62:2","statements":[{"expression":{"arguments":[{"id":161,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":148,"src":"3351:17:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":160,"name":"_setImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":100,"src":"3332:18:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":162,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3332:37:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":163,"nodeType":"ExpressionStatement","src":"3332:37:2"}]}}]},"documentation":{"id":146,"nodeType":"StructuredDocumentation","src":"2675:161:2","text":" @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\n Emits an {Upgraded} event."},"id":198,"implemented":true,"kind":"function","modifiers":[],"name":"_upgradeToAndCallUUPS","nameLocation":"2850:21:2","nodeType":"FunctionDefinition","parameters":{"id":153,"nodeType":"ParameterList","parameters":[{"constant":false,"id":148,"mutability":"mutable","name":"newImplementation","nameLocation":"2880:17:2","nodeType":"VariableDeclaration","scope":198,"src":"2872:25:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":147,"name":"address","nodeType":"ElementaryTypeName","src":"2872:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":150,"mutability":"mutable","name":"data","nameLocation":"2912:4:2","nodeType":"VariableDeclaration","scope":198,"src":"2899:17:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":149,"name":"bytes","nodeType":"ElementaryTypeName","src":"2899:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":152,"mutability":"mutable","name":"forceCall","nameLocation":"2923:9:2","nodeType":"VariableDeclaration","scope":198,"src":"2918:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":151,"name":"bool","nodeType":"ElementaryTypeName","src":"2918:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2871:62:2"},"returnParameters":{"id":154,"nodeType":"ParameterList","parameters":[],"src":"2943:0:2"},"scope":355,"src":"2841:944:2","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"constant":true,"documentation":{"id":199,"nodeType":"StructuredDocumentation","src":"3791:189:2","text":" @dev Storage slot with the admin of the contract.\n This is the keccak-256 hash of \"eip1967.proxy.admin\" subtracted by 1, and is\n validated in the constructor."},"id":202,"mutability":"constant","name":"_ADMIN_SLOT","nameLocation":"4011:11:2","nodeType":"VariableDeclaration","scope":355,"src":"3985:106:2","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":200,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3985:7:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307862353331323736383461353638623331373361653133623966386136303136653234336536336236653865653131373864366137313738353062356436313033","id":201,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4025:66:2","typeDescriptions":{"typeIdentifier":"t_rational_81955473079516046949633743016697847541294818689821282749996681496272635257091_by_1","typeString":"int_const 8195...(69 digits omitted)...7091"},"value":"0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103"},"visibility":"internal"},{"body":{"id":214,"nodeType":"Block","src":"4206:80:2","statements":[{"expression":{"expression":{"arguments":[{"id":210,"name":"_ADMIN_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":202,"src":"4261:11:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":208,"name":"StorageSlotUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2777,"src":"4223:22:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlotUpgradeable_$2777_$","typeString":"type(library StorageSlotUpgradeable)"}},"id":209,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4246:14:2","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":2699,"src":"4223:37:2","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$2673_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlotUpgradeable.AddressSlot storage pointer)"}},"id":211,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4223:50:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$2673_storage_ptr","typeString":"struct StorageSlotUpgradeable.AddressSlot storage pointer"}},"id":212,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4274:5:2","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":2672,"src":"4223:56:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":207,"id":213,"nodeType":"Return","src":"4216:63:2"}]},"documentation":{"id":203,"nodeType":"StructuredDocumentation","src":"4098:50:2","text":" @dev Returns the current admin."},"id":215,"implemented":true,"kind":"function","modifiers":[],"name":"_getAdmin","nameLocation":"4162:9:2","nodeType":"FunctionDefinition","parameters":{"id":204,"nodeType":"ParameterList","parameters":[],"src":"4171:2:2"},"returnParameters":{"id":207,"nodeType":"ParameterList","parameters":[{"constant":false,"id":206,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":215,"src":"4197:7:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":205,"name":"address","nodeType":"ElementaryTypeName","src":"4197:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4196:9:2"},"scope":355,"src":"4153:133:2","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":240,"nodeType":"Block","src":"4413:167:2","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":227,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":222,"name":"newAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":218,"src":"4431:8:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":225,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4451:1:2","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":224,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4443:7:2","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":223,"name":"address","nodeType":"ElementaryTypeName","src":"4443:7:2","typeDescriptions":{}}},"id":226,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4443:10:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4431:22:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"455243313936373a206e65772061646d696e20697320746865207a65726f2061646472657373","id":228,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4455:40:2","typeDescriptions":{"typeIdentifier":"t_stringliteral_3820e16891102c1360a787e6e648431097d92537f969d458f5c94b56f8318be5","typeString":"literal_string \"ERC1967: new admin is the zero address\""},"value":"ERC1967: new admin is the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_3820e16891102c1360a787e6e648431097d92537f969d458f5c94b56f8318be5","typeString":"literal_string \"ERC1967: new admin is the zero address\""}],"id":221,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"4423:7:2","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":229,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4423:73:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":230,"nodeType":"ExpressionStatement","src":"4423:73:2"},{"expression":{"id":238,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[{"id":234,"name":"_ADMIN_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":202,"src":"4544:11:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":231,"name":"StorageSlotUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2777,"src":"4506:22:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlotUpgradeable_$2777_$","typeString":"type(library StorageSlotUpgradeable)"}},"id":233,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4529:14:2","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":2699,"src":"4506:37:2","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$2673_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlotUpgradeable.AddressSlot storage pointer)"}},"id":235,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4506:50:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$2673_storage_ptr","typeString":"struct StorageSlotUpgradeable.AddressSlot storage pointer"}},"id":236,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4557:5:2","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":2672,"src":"4506:56:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":237,"name":"newAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":218,"src":"4565:8:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4506:67:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":239,"nodeType":"ExpressionStatement","src":"4506:67:2"}]},"documentation":{"id":216,"nodeType":"StructuredDocumentation","src":"4292:71:2","text":" @dev Stores a new address in the EIP1967 admin slot."},"id":241,"implemented":true,"kind":"function","modifiers":[],"name":"_setAdmin","nameLocation":"4377:9:2","nodeType":"FunctionDefinition","parameters":{"id":219,"nodeType":"ParameterList","parameters":[{"constant":false,"id":218,"mutability":"mutable","name":"newAdmin","nameLocation":"4395:8:2","nodeType":"VariableDeclaration","scope":241,"src":"4387:16:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":217,"name":"address","nodeType":"ElementaryTypeName","src":"4387:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4386:18:2"},"returnParameters":{"id":220,"nodeType":"ParameterList","parameters":[],"src":"4413:0:2"},"scope":355,"src":"4368:212:2","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":257,"nodeType":"Block","src":"4740:86:2","statements":[{"eventCall":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":248,"name":"_getAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":215,"src":"4768:9:2","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":249,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4768:11:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":250,"name":"newAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":244,"src":"4781:8:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":247,"name":"AdminChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14,"src":"4755:12:2","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":251,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4755:35:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":252,"nodeType":"EmitStatement","src":"4750:40:2"},{"expression":{"arguments":[{"id":254,"name":"newAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":244,"src":"4810:8:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":253,"name":"_setAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":241,"src":"4800:9:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":255,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4800:19:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":256,"nodeType":"ExpressionStatement","src":"4800:19:2"}]},"documentation":{"id":242,"nodeType":"StructuredDocumentation","src":"4586:100:2","text":" @dev Changes the admin of the proxy.\n Emits an {AdminChanged} event."},"id":258,"implemented":true,"kind":"function","modifiers":[],"name":"_changeAdmin","nameLocation":"4700:12:2","nodeType":"FunctionDefinition","parameters":{"id":245,"nodeType":"ParameterList","parameters":[{"constant":false,"id":244,"mutability":"mutable","name":"newAdmin","nameLocation":"4721:8:2","nodeType":"VariableDeclaration","scope":258,"src":"4713:16:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":243,"name":"address","nodeType":"ElementaryTypeName","src":"4713:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4712:18:2"},"returnParameters":{"id":246,"nodeType":"ParameterList","parameters":[],"src":"4740:0:2"},"scope":355,"src":"4691:135:2","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"constant":true,"documentation":{"id":259,"nodeType":"StructuredDocumentation","src":"4832:232:2","text":" @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\n This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor."},"id":262,"mutability":"constant","name":"_BEACON_SLOT","nameLocation":"5095:12:2","nodeType":"VariableDeclaration","scope":355,"src":"5069:107:2","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":260,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5069:7:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307861336630616437346535343233616562666438306433656634333436353738333335613961373261656165653539666636636233353832623335313333643530","id":261,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5110:66:2","typeDescriptions":{"typeIdentifier":"t_rational_74152234768234802001998023604048924213078445070507226371336425913862612794704_by_1","typeString":"int_const 7415...(69 digits omitted)...4704"},"value":"0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50"},"visibility":"internal"},{"body":{"id":274,"nodeType":"Block","src":"5293:81:2","statements":[{"expression":{"expression":{"arguments":[{"id":270,"name":"_BEACON_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":262,"src":"5348:12:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":268,"name":"StorageSlotUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2777,"src":"5310:22:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlotUpgradeable_$2777_$","typeString":"type(library StorageSlotUpgradeable)"}},"id":269,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5333:14:2","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":2699,"src":"5310:37:2","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$2673_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlotUpgradeable.AddressSlot storage pointer)"}},"id":271,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5310:51:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$2673_storage_ptr","typeString":"struct StorageSlotUpgradeable.AddressSlot storage pointer"}},"id":272,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5362:5:2","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":2672,"src":"5310:57:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":267,"id":273,"nodeType":"Return","src":"5303:64:2"}]},"documentation":{"id":263,"nodeType":"StructuredDocumentation","src":"5183:51:2","text":" @dev Returns the current beacon."},"id":275,"implemented":true,"kind":"function","modifiers":[],"name":"_getBeacon","nameLocation":"5248:10:2","nodeType":"FunctionDefinition","parameters":{"id":264,"nodeType":"ParameterList","parameters":[],"src":"5258:2:2"},"returnParameters":{"id":267,"nodeType":"ParameterList","parameters":[{"constant":false,"id":266,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":275,"src":"5284:7:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":265,"name":"address","nodeType":"ElementaryTypeName","src":"5284:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5283:9:2"},"scope":355,"src":"5239:135:2","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":310,"nodeType":"Block","src":"5503:368:2","statements":[{"expression":{"arguments":[{"arguments":[{"id":284,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":278,"src":"5551:9:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":282,"name":"AddressUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1001,"src":"5521:18:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AddressUpgradeable_$1001_$","typeString":"type(library AddressUpgradeable)"}},"id":283,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5540:10:2","memberName":"isContract","nodeType":"MemberAccess","referencedDeclaration":689,"src":"5521:29:2","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":285,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5521:40:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"455243313936373a206e657720626561636f6e206973206e6f74206120636f6e7472616374","id":286,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5563:39:2","typeDescriptions":{"typeIdentifier":"t_stringliteral_9589b7809634e4928033de18bb696e9af4ef71b703652af5245f2dbebf2f4470","typeString":"literal_string \"ERC1967: new beacon is not a contract\""},"value":"ERC1967: new beacon is not a contract"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9589b7809634e4928033de18bb696e9af4ef71b703652af5245f2dbebf2f4470","typeString":"literal_string \"ERC1967: new beacon is not a contract\""}],"id":281,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"5513:7:2","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":287,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5513:90:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":288,"nodeType":"ExpressionStatement","src":"5513:90:2"},{"expression":{"arguments":[{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":293,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":278,"src":"5683:9:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":292,"name":"IBeaconUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":365,"src":"5664:18:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBeaconUpgradeable_$365_$","typeString":"type(contract IBeaconUpgradeable)"}},"id":294,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5664:29:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBeaconUpgradeable_$365","typeString":"contract IBeaconUpgradeable"}},"id":295,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5694:14:2","memberName":"implementation","nodeType":"MemberAccess","referencedDeclaration":364,"src":"5664:44:2","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":296,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5664:46:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":290,"name":"AddressUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1001,"src":"5634:18:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AddressUpgradeable_$1001_$","typeString":"type(library AddressUpgradeable)"}},"id":291,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5653:10:2","memberName":"isContract","nodeType":"MemberAccess","referencedDeclaration":689,"src":"5634:29:2","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":297,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5634:77:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"455243313936373a20626561636f6e20696d706c656d656e746174696f6e206973206e6f74206120636f6e7472616374","id":298,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5725:50:2","typeDescriptions":{"typeIdentifier":"t_stringliteral_f95fd1f5b5578816eb23f6ca0f2439b4b5e4094dc16e99c3b8e91603a83f93c8","typeString":"literal_string \"ERC1967: beacon implementation is not a contract\""},"value":"ERC1967: beacon implementation is not a contract"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_f95fd1f5b5578816eb23f6ca0f2439b4b5e4094dc16e99c3b8e91603a83f93c8","typeString":"literal_string \"ERC1967: beacon implementation is not a contract\""}],"id":289,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"5613:7:2","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":299,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5613:172:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":300,"nodeType":"ExpressionStatement","src":"5613:172:2"},{"expression":{"id":308,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[{"id":304,"name":"_BEACON_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":262,"src":"5833:12:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":301,"name":"StorageSlotUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2777,"src":"5795:22:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlotUpgradeable_$2777_$","typeString":"type(library StorageSlotUpgradeable)"}},"id":303,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5818:14:2","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":2699,"src":"5795:37:2","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$2673_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlotUpgradeable.AddressSlot storage pointer)"}},"id":305,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5795:51:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$2673_storage_ptr","typeString":"struct StorageSlotUpgradeable.AddressSlot storage pointer"}},"id":306,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5847:5:2","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":2672,"src":"5795:57:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":307,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":278,"src":"5855:9:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5795:69:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":309,"nodeType":"ExpressionStatement","src":"5795:69:2"}]},"documentation":{"id":276,"nodeType":"StructuredDocumentation","src":"5380:71:2","text":" @dev Stores a new beacon in the EIP1967 beacon slot."},"id":311,"implemented":true,"kind":"function","modifiers":[],"name":"_setBeacon","nameLocation":"5465:10:2","nodeType":"FunctionDefinition","parameters":{"id":279,"nodeType":"ParameterList","parameters":[{"constant":false,"id":278,"mutability":"mutable","name":"newBeacon","nameLocation":"5484:9:2","nodeType":"VariableDeclaration","scope":311,"src":"5476:17:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":277,"name":"address","nodeType":"ElementaryTypeName","src":"5476:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5475:19:2"},"returnParameters":{"id":280,"nodeType":"ParameterList","parameters":[],"src":"5503:0:2"},"scope":355,"src":"5456:415:2","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":348,"nodeType":"Block","src":"6270:239:2","statements":[{"expression":{"arguments":[{"id":322,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":314,"src":"6291:9:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":321,"name":"_setBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":311,"src":"6280:10:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":323,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6280:21:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":324,"nodeType":"ExpressionStatement","src":"6280:21:2"},{"eventCall":{"arguments":[{"id":326,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":314,"src":"6331:9:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":325,"name":"BeaconUpgraded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19,"src":"6316:14:2","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":327,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6316:25:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":328,"nodeType":"EmitStatement","src":"6311:30:2"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":334,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":332,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":329,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":316,"src":"6355:4:2","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":330,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6360:6:2","memberName":"length","nodeType":"MemberAccess","src":"6355:11:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":331,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6369:1:2","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6355:15:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"id":333,"name":"forceCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":318,"src":"6374:9:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6355:28:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":347,"nodeType":"IfStatement","src":"6351:152:2","trueBody":{"id":346,"nodeType":"Block","src":"6385:118:2","statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":339,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":314,"src":"6458:9:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":338,"name":"IBeaconUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":365,"src":"6439:18:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBeaconUpgradeable_$365_$","typeString":"type(contract IBeaconUpgradeable)"}},"id":340,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6439:29:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBeaconUpgradeable_$365","typeString":"contract IBeaconUpgradeable"}},"id":341,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6469:14:2","memberName":"implementation","nodeType":"MemberAccess","referencedDeclaration":364,"src":"6439:44:2","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":342,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6439:46:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":343,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":316,"src":"6487:4:2","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":335,"name":"AddressUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1001,"src":"6399:18:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AddressUpgradeable_$1001_$","typeString":"type(library AddressUpgradeable)"}},"id":337,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6418:20:2","memberName":"functionDelegateCall","nodeType":"MemberAccess","referencedDeclaration":888,"src":"6399:39:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory) returns (bytes memory)"}},"id":344,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6399:93:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":345,"nodeType":"ExpressionStatement","src":"6399:93:2"}]}}]},"documentation":{"id":312,"nodeType":"StructuredDocumentation","src":"5877:292:2","text":" @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\n not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\n Emits a {BeaconUpgraded} event."},"id":349,"implemented":true,"kind":"function","modifiers":[],"name":"_upgradeBeaconToAndCall","nameLocation":"6183:23:2","nodeType":"FunctionDefinition","parameters":{"id":319,"nodeType":"ParameterList","parameters":[{"constant":false,"id":314,"mutability":"mutable","name":"newBeacon","nameLocation":"6215:9:2","nodeType":"VariableDeclaration","scope":349,"src":"6207:17:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":313,"name":"address","nodeType":"ElementaryTypeName","src":"6207:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":316,"mutability":"mutable","name":"data","nameLocation":"6239:4:2","nodeType":"VariableDeclaration","scope":349,"src":"6226:17:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":315,"name":"bytes","nodeType":"ElementaryTypeName","src":"6226:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":318,"mutability":"mutable","name":"forceCall","nameLocation":"6250:9:2","nodeType":"VariableDeclaration","scope":349,"src":"6245:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":317,"name":"bool","nodeType":"ElementaryTypeName","src":"6245:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6206:54:2"},"returnParameters":{"id":320,"nodeType":"ParameterList","parameters":[],"src":"6270:0:2"},"scope":355,"src":"6174:335:2","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"constant":false,"documentation":{"id":350,"nodeType":"StructuredDocumentation","src":"6515:254:2","text":" @dev This empty reserved space is put in place to allow future versions to add new\n variables without shifting down storage in the inheritance chain.\n See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"},"id":354,"mutability":"mutable","name":"__gap","nameLocation":"6794:5:2","nodeType":"VariableDeclaration","scope":355,"src":"6774:25:2","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$50_storage","typeString":"uint256[50]"},"typeName":{"baseType":{"id":351,"name":"uint256","nodeType":"ElementaryTypeName","src":"6774:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":353,"length":{"hexValue":"3530","id":352,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6782:2:2","typeDescriptions":{"typeIdentifier":"t_rational_50_by_1","typeString":"int_const 50"},"value":"50"},"nodeType":"ArrayTypeName","src":"6774:11:2","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$50_storage_ptr","typeString":"uint256[50]"}},"visibility":"private"}],"scope":356,"src":"630:6172:2","usedErrors":[]}],"src":"116:6687:2"},"id":2},"@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.sol","exportedSymbols":{"IBeaconUpgradeable":[365]},"id":366,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":357,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"93:23:3"},{"abstract":false,"baseContracts":[],"canonicalName":"IBeaconUpgradeable","contractDependencies":[],"contractKind":"interface","documentation":{"id":358,"nodeType":"StructuredDocumentation","src":"118:79:3","text":" @dev This is the interface that {BeaconProxy} expects of its beacon."},"fullyImplemented":false,"id":365,"linearizedBaseContracts":[365],"name":"IBeaconUpgradeable","nameLocation":"208:18:3","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":359,"nodeType":"StructuredDocumentation","src":"233:162:3","text":" @dev Must return an address that can be used as a delegate call target.\n {BeaconProxy} will check that this address is a contract."},"functionSelector":"5c60da1b","id":364,"implemented":false,"kind":"function","modifiers":[],"name":"implementation","nameLocation":"409:14:3","nodeType":"FunctionDefinition","parameters":{"id":360,"nodeType":"ParameterList","parameters":[],"src":"423:2:3"},"returnParameters":{"id":363,"nodeType":"ParameterList","parameters":[{"constant":false,"id":362,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":364,"src":"449:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":361,"name":"address","nodeType":"ElementaryTypeName","src":"449:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"448:9:3"},"scope":365,"src":"400:58:3","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":366,"src":"198:262:3","usedErrors":[]}],"src":"93:368:3"},"id":3},"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","exportedSymbols":{"AddressUpgradeable":[1001],"Initializable":[534]},"id":535,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":367,"literals":["solidity","^","0.8",".2"],"nodeType":"PragmaDirective","src":"113:23:4"},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol","file":"../../utils/AddressUpgradeable.sol","id":368,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":535,"sourceUnit":1002,"src":"138:44:4","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[],"canonicalName":"Initializable","contractDependencies":[],"contractKind":"contract","documentation":{"id":369,"nodeType":"StructuredDocumentation","src":"184:2209:4","text":" @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\n behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\n external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\n function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\n The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\n reused. This mechanism prevents re-execution of each \"step\" but allows the creation of new initialization steps in\n case an upgrade adds a module that needs to be initialized.\n For example:\n [.hljs-theme-light.nopadding]\n ```solidity\n contract MyToken is ERC20Upgradeable {\n function initialize() initializer public {\n __ERC20_init(\"MyToken\", \"MTK\");\n }\n }\n contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\n function initializeV2() reinitializer(2) public {\n __ERC20Permit_init(\"MyToken\");\n }\n }\n ```\n TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\n possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\n CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\n that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\n [CAUTION]\n ====\n Avoid leaving a contract uninitialized.\n An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\n contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\n the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\n [.hljs-theme-light.nopadding]\n ```\n /// @custom:oz-upgrades-unsafe-allow constructor\n constructor() {\n _disableInitializers();\n }\n ```\n ===="},"fullyImplemented":true,"id":534,"linearizedBaseContracts":[534],"name":"Initializable","nameLocation":"2412:13:4","nodeType":"ContractDefinition","nodes":[{"constant":false,"documentation":{"id":370,"nodeType":"StructuredDocumentation","src":"2432:109:4","text":" @dev Indicates that the contract has been initialized.\n @custom:oz-retyped-from bool"},"id":372,"mutability":"mutable","name":"_initialized","nameLocation":"2560:12:4","nodeType":"VariableDeclaration","scope":534,"src":"2546:26:4","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":371,"name":"uint8","nodeType":"ElementaryTypeName","src":"2546:5:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"private"},{"constant":false,"documentation":{"id":373,"nodeType":"StructuredDocumentation","src":"2579:91:4","text":" @dev Indicates that the contract is in the process of being initialized."},"id":375,"mutability":"mutable","name":"_initializing","nameLocation":"2688:13:4","nodeType":"VariableDeclaration","scope":534,"src":"2675:26:4","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":374,"name":"bool","nodeType":"ElementaryTypeName","src":"2675:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"private"},{"anonymous":false,"documentation":{"id":376,"nodeType":"StructuredDocumentation","src":"2708:90:4","text":" @dev Triggered when the contract has been initialized or reinitialized."},"eventSelector":"7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498","id":380,"name":"Initialized","nameLocation":"2809:11:4","nodeType":"EventDefinition","parameters":{"id":379,"nodeType":"ParameterList","parameters":[{"constant":false,"id":378,"indexed":false,"mutability":"mutable","name":"version","nameLocation":"2827:7:4","nodeType":"VariableDeclaration","scope":380,"src":"2821:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":377,"name":"uint8","nodeType":"ElementaryTypeName","src":"2821:5:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"2820:15:4"},"src":"2803:33:4"},{"body":{"id":435,"nodeType":"Block","src":"3269:483:4","statements":[{"assignments":[384],"declarations":[{"constant":false,"id":384,"mutability":"mutable","name":"isTopLevelCall","nameLocation":"3284:14:4","nodeType":"VariableDeclaration","scope":435,"src":"3279:19:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":383,"name":"bool","nodeType":"ElementaryTypeName","src":"3279:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":387,"initialValue":{"id":386,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"3301:14:4","subExpression":{"id":385,"name":"_initializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":375,"src":"3302:13:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"3279:36:4"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":408,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":393,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":389,"name":"isTopLevelCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":384,"src":"3347:14:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":392,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":390,"name":"_initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":372,"src":"3365:12:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"31","id":391,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3380:1:4","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3365:16:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3347:34:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":394,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3346:36:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":406,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":402,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"3387:45:4","subExpression":{"arguments":[{"arguments":[{"id":399,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967268,"src":"3426:4:4","typeDescriptions":{"typeIdentifier":"t_contract$_Initializable_$534","typeString":"contract Initializable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Initializable_$534","typeString":"contract Initializable"}],"id":398,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3418:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":397,"name":"address","nodeType":"ElementaryTypeName","src":"3418:7:4","typeDescriptions":{}}},"id":400,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3418:13:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":395,"name":"AddressUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1001,"src":"3388:18:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AddressUpgradeable_$1001_$","typeString":"type(library AddressUpgradeable)"}},"id":396,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3407:10:4","memberName":"isContract","nodeType":"MemberAccess","referencedDeclaration":689,"src":"3388:29:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":401,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3388:44:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":405,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":403,"name":"_initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":372,"src":"3436:12:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":404,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3452:1:4","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3436:17:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3387:66:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":407,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3386:68:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3346:108:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a6564","id":409,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3468:48:4","typeDescriptions":{"typeIdentifier":"t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759","typeString":"literal_string \"Initializable: contract is already initialized\""},"value":"Initializable: contract is already initialized"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759","typeString":"literal_string \"Initializable: contract is already initialized\""}],"id":388,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"3325:7:4","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":410,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3325:201:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":411,"nodeType":"ExpressionStatement","src":"3325:201:4"},{"expression":{"id":414,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":412,"name":"_initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":372,"src":"3536:12:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"31","id":413,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3551:1:4","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3536:16:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":415,"nodeType":"ExpressionStatement","src":"3536:16:4"},{"condition":{"id":416,"name":"isTopLevelCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":384,"src":"3566:14:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":422,"nodeType":"IfStatement","src":"3562:65:4","trueBody":{"id":421,"nodeType":"Block","src":"3582:45:4","statements":[{"expression":{"id":419,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":417,"name":"_initializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":375,"src":"3596:13:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":418,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3612:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"3596:20:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":420,"nodeType":"ExpressionStatement","src":"3596:20:4"}]}},{"id":423,"nodeType":"PlaceholderStatement","src":"3636:1:4"},{"condition":{"id":424,"name":"isTopLevelCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":384,"src":"3651:14:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":434,"nodeType":"IfStatement","src":"3647:99:4","trueBody":{"id":433,"nodeType":"Block","src":"3667:79:4","statements":[{"expression":{"id":427,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":425,"name":"_initializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":375,"src":"3681:13:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":426,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3697:5:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"3681:21:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":428,"nodeType":"ExpressionStatement","src":"3681:21:4"},{"eventCall":{"arguments":[{"hexValue":"31","id":430,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3733:1:4","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":429,"name":"Initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":380,"src":"3721:11:4","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint8_$returns$__$","typeString":"function (uint8)"}},"id":431,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3721:14:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":432,"nodeType":"EmitStatement","src":"3716:19:4"}]}}]},"documentation":{"id":381,"nodeType":"StructuredDocumentation","src":"2842:399:4","text":" @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\n `onlyInitializing` functions can be used to initialize parent contracts.\n Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\n constructor.\n Emits an {Initialized} event."},"id":436,"name":"initializer","nameLocation":"3255:11:4","nodeType":"ModifierDefinition","parameters":{"id":382,"nodeType":"ParameterList","parameters":[],"src":"3266:2:4"},"src":"3246:506:4","virtual":false,"visibility":"internal"},{"body":{"id":468,"nodeType":"Block","src":"4863:255:4","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":447,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":443,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"4881:14:4","subExpression":{"id":442,"name":"_initializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":375,"src":"4882:13:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":446,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":444,"name":"_initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":372,"src":"4899:12:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":445,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":439,"src":"4914:7:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"4899:22:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4881:40:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a6564","id":448,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4923:48:4","typeDescriptions":{"typeIdentifier":"t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759","typeString":"literal_string \"Initializable: contract is already initialized\""},"value":"Initializable: contract is already initialized"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759","typeString":"literal_string \"Initializable: contract is already initialized\""}],"id":441,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"4873:7:4","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":449,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4873:99:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":450,"nodeType":"ExpressionStatement","src":"4873:99:4"},{"expression":{"id":453,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":451,"name":"_initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":372,"src":"4982:12:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":452,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":439,"src":"4997:7:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"4982:22:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":454,"nodeType":"ExpressionStatement","src":"4982:22:4"},{"expression":{"id":457,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":455,"name":"_initializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":375,"src":"5014:13:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":456,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5030:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"5014:20:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":458,"nodeType":"ExpressionStatement","src":"5014:20:4"},{"id":459,"nodeType":"PlaceholderStatement","src":"5044:1:4"},{"expression":{"id":462,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":460,"name":"_initializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":375,"src":"5055:13:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":461,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5071:5:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"5055:21:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":463,"nodeType":"ExpressionStatement","src":"5055:21:4"},{"eventCall":{"arguments":[{"id":465,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":439,"src":"5103:7:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":464,"name":"Initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":380,"src":"5091:11:4","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint8_$returns$__$","typeString":"function (uint8)"}},"id":466,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5091:20:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":467,"nodeType":"EmitStatement","src":"5086:25:4"}]},"documentation":{"id":437,"nodeType":"StructuredDocumentation","src":"3758:1062:4","text":" @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\n contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\n used to initialize parent contracts.\n A reinitializer may be used after the original initialization step. This is essential to configure modules that\n are added through upgrades and that require initialization.\n When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\n cannot be nested. If one is invoked in the context of another, execution will revert.\n Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\n a contract, executing them in the right order is up to the developer or operator.\n WARNING: setting the version to 255 will prevent any future reinitialization.\n Emits an {Initialized} event."},"id":469,"name":"reinitializer","nameLocation":"4834:13:4","nodeType":"ModifierDefinition","parameters":{"id":440,"nodeType":"ParameterList","parameters":[{"constant":false,"id":439,"mutability":"mutable","name":"version","nameLocation":"4854:7:4","nodeType":"VariableDeclaration","scope":469,"src":"4848:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":438,"name":"uint8","nodeType":"ElementaryTypeName","src":"4848:5:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"4847:15:4"},"src":"4825:293:4","virtual":false,"visibility":"internal"},{"body":{"id":478,"nodeType":"Block","src":"5356:97:4","statements":[{"expression":{"arguments":[{"id":473,"name":"_initializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":375,"src":"5374:13:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e697469616c697a61626c653a20636f6e7472616374206973206e6f7420696e697469616c697a696e67","id":474,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5389:45:4","typeDescriptions":{"typeIdentifier":"t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b","typeString":"literal_string \"Initializable: contract is not initializing\""},"value":"Initializable: contract is not initializing"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b","typeString":"literal_string \"Initializable: contract is not initializing\""}],"id":472,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"5366:7:4","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":475,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5366:69:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":476,"nodeType":"ExpressionStatement","src":"5366:69:4"},{"id":477,"nodeType":"PlaceholderStatement","src":"5445:1:4"}]},"documentation":{"id":470,"nodeType":"StructuredDocumentation","src":"5124:199:4","text":" @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\n {initializer} and {reinitializer} modifiers, directly or indirectly."},"id":479,"name":"onlyInitializing","nameLocation":"5337:16:4","nodeType":"ModifierDefinition","parameters":{"id":471,"nodeType":"ParameterList","parameters":[],"src":"5353:2:4"},"src":"5328:125:4","virtual":false,"visibility":"internal"},{"body":{"id":514,"nodeType":"Block","src":"5988:231:4","statements":[{"expression":{"arguments":[{"id":485,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"6006:14:4","subExpression":{"id":484,"name":"_initializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":375,"src":"6007:13:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e697469616c697a61626c653a20636f6e747261637420697320696e697469616c697a696e67","id":486,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6022:41:4","typeDescriptions":{"typeIdentifier":"t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a","typeString":"literal_string \"Initializable: contract is initializing\""},"value":"Initializable: contract is initializing"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a","typeString":"literal_string \"Initializable: contract is initializing\""}],"id":483,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"5998:7:4","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":487,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5998:66:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":488,"nodeType":"ExpressionStatement","src":"5998:66:4"},{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":495,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":489,"name":"_initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":372,"src":"6078:12:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"arguments":[{"id":492,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6099:5:4","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":491,"name":"uint8","nodeType":"ElementaryTypeName","src":"6099:5:4","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"}],"id":490,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"6094:4:4","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":493,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6094:11:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint8","typeString":"type(uint8)"}},"id":494,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6106:3:4","memberName":"max","nodeType":"MemberAccess","src":"6094:15:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"6078:31:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":513,"nodeType":"IfStatement","src":"6074:139:4","trueBody":{"id":512,"nodeType":"Block","src":"6111:102:4","statements":[{"expression":{"id":502,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":496,"name":"_initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":372,"src":"6125:12:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"arguments":[{"id":499,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6145:5:4","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":498,"name":"uint8","nodeType":"ElementaryTypeName","src":"6145:5:4","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"}],"id":497,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"6140:4:4","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":500,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6140:11:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint8","typeString":"type(uint8)"}},"id":501,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6152:3:4","memberName":"max","nodeType":"MemberAccess","src":"6140:15:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"6125:30:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":503,"nodeType":"ExpressionStatement","src":"6125:30:4"},{"eventCall":{"arguments":[{"expression":{"arguments":[{"id":507,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6191:5:4","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":506,"name":"uint8","nodeType":"ElementaryTypeName","src":"6191:5:4","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"}],"id":505,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"6186:4:4","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":508,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6186:11:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint8","typeString":"type(uint8)"}},"id":509,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6198:3:4","memberName":"max","nodeType":"MemberAccess","src":"6186:15:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":504,"name":"Initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":380,"src":"6174:11:4","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint8_$returns$__$","typeString":"function (uint8)"}},"id":510,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6174:28:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":511,"nodeType":"EmitStatement","src":"6169:33:4"}]}}]},"documentation":{"id":480,"nodeType":"StructuredDocumentation","src":"5459:475:4","text":" @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\n Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\n to any version. It is recommended to use this to lock implementation contracts that are designed to be called\n through proxies.\n Emits an {Initialized} event the first time it is successfully executed."},"id":515,"implemented":true,"kind":"function","modifiers":[],"name":"_disableInitializers","nameLocation":"5948:20:4","nodeType":"FunctionDefinition","parameters":{"id":481,"nodeType":"ParameterList","parameters":[],"src":"5968:2:4"},"returnParameters":{"id":482,"nodeType":"ParameterList","parameters":[],"src":"5988:0:4"},"scope":534,"src":"5939:280:4","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":523,"nodeType":"Block","src":"6393:36:4","statements":[{"expression":{"id":521,"name":"_initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":372,"src":"6410:12:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"functionReturnParameters":520,"id":522,"nodeType":"Return","src":"6403:19:4"}]},"documentation":{"id":516,"nodeType":"StructuredDocumentation","src":"6225:99:4","text":" @dev Returns the highest version that has been initialized. See {reinitializer}."},"id":524,"implemented":true,"kind":"function","modifiers":[],"name":"_getInitializedVersion","nameLocation":"6338:22:4","nodeType":"FunctionDefinition","parameters":{"id":517,"nodeType":"ParameterList","parameters":[],"src":"6360:2:4"},"returnParameters":{"id":520,"nodeType":"ParameterList","parameters":[{"constant":false,"id":519,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":524,"src":"6386:5:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":518,"name":"uint8","nodeType":"ElementaryTypeName","src":"6386:5:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"6385:7:4"},"scope":534,"src":"6329:100:4","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":532,"nodeType":"Block","src":"6601:37:4","statements":[{"expression":{"id":530,"name":"_initializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":375,"src":"6618:13:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":529,"id":531,"nodeType":"Return","src":"6611:20:4"}]},"documentation":{"id":525,"nodeType":"StructuredDocumentation","src":"6435:105:4","text":" @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}."},"id":533,"implemented":true,"kind":"function","modifiers":[],"name":"_isInitializing","nameLocation":"6554:15:4","nodeType":"FunctionDefinition","parameters":{"id":526,"nodeType":"ParameterList","parameters":[],"src":"6569:2:4"},"returnParameters":{"id":529,"nodeType":"ParameterList","parameters":[{"constant":false,"id":528,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":533,"src":"6595:4:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":527,"name":"bool","nodeType":"ElementaryTypeName","src":"6595:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6594:6:4"},"scope":534,"src":"6545:93:4","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":535,"src":"2394:4246:4","usedErrors":[]}],"src":"113:6528:4"},"id":4},"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol","exportedSymbols":{"AddressUpgradeable":[1001],"ERC1967UpgradeUpgradeable":[355],"IBeaconUpgradeable":[365],"IERC1822ProxiableUpgradeable":[30],"IERC1967Upgradeable":[20],"Initializable":[534],"StorageSlotUpgradeable":[2777],"UUPSUpgradeable":[671]},"id":672,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":536,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"115:23:5"},{"absolutePath":"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol","file":"../../interfaces/draft-IERC1822Upgradeable.sol","id":537,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":672,"sourceUnit":31,"src":"140:56:5","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol","file":"../ERC1967/ERC1967UpgradeUpgradeable.sol","id":538,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":672,"sourceUnit":356,"src":"197:50:5","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","file":"./Initializable.sol","id":540,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":672,"sourceUnit":535,"src":"248:50:5","symbolAliases":[{"foreign":{"id":539,"name":"Initializable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":534,"src":"256:13:5","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":542,"name":"Initializable","nameLocations":["986:13:5"],"nodeType":"IdentifierPath","referencedDeclaration":534,"src":"986:13:5"},"id":543,"nodeType":"InheritanceSpecifier","src":"986:13:5"},{"baseName":{"id":544,"name":"IERC1822ProxiableUpgradeable","nameLocations":["1001:28:5"],"nodeType":"IdentifierPath","referencedDeclaration":30,"src":"1001:28:5"},"id":545,"nodeType":"InheritanceSpecifier","src":"1001:28:5"},{"baseName":{"id":546,"name":"ERC1967UpgradeUpgradeable","nameLocations":["1031:25:5"],"nodeType":"IdentifierPath","referencedDeclaration":355,"src":"1031:25:5"},"id":547,"nodeType":"InheritanceSpecifier","src":"1031:25:5"}],"canonicalName":"UUPSUpgradeable","contractDependencies":[],"contractKind":"contract","documentation":{"id":541,"nodeType":"StructuredDocumentation","src":"300:648:5","text":" @dev An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an\n {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy.\n A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is\n reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing\n `UUPSUpgradeable` with a custom implementation of upgrades.\n The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism.\n _Available since v4.1._"},"fullyImplemented":false,"id":671,"linearizedBaseContracts":[671,355,20,30,534],"name":"UUPSUpgradeable","nameLocation":"967:15:5","nodeType":"ContractDefinition","nodes":[{"constant":false,"documentation":{"id":548,"nodeType":"StructuredDocumentation","src":"1063:87:5","text":"@custom:oz-upgrades-unsafe-allow state-variable-immutable state-variable-assignment"},"id":554,"mutability":"immutable","name":"__self","nameLocation":"1181:6:5","nodeType":"VariableDeclaration","scope":671,"src":"1155:48:5","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":549,"name":"address","nodeType":"ElementaryTypeName","src":"1155:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":{"arguments":[{"id":552,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967268,"src":"1198:4:5","typeDescriptions":{"typeIdentifier":"t_contract$_UUPSUpgradeable_$671","typeString":"contract UUPSUpgradeable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_UUPSUpgradeable_$671","typeString":"contract UUPSUpgradeable"}],"id":551,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1190:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":550,"name":"address","nodeType":"ElementaryTypeName","src":"1190:7:5","typeDescriptions":{}}},"id":553,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1190:13:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"body":{"id":576,"nodeType":"Block","src":"1729:205:5","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":563,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":560,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967268,"src":"1755:4:5","typeDescriptions":{"typeIdentifier":"t_contract$_UUPSUpgradeable_$671","typeString":"contract UUPSUpgradeable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_UUPSUpgradeable_$671","typeString":"contract UUPSUpgradeable"}],"id":559,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1747:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":558,"name":"address","nodeType":"ElementaryTypeName","src":"1747:7:5","typeDescriptions":{}}},"id":561,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1747:13:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":562,"name":"__self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":554,"src":"1764:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1747:23:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682064656c656761746563616c6c","id":564,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1772:46:5","typeDescriptions":{"typeIdentifier":"t_stringliteral_36e108fa7a809b52ab1951dd91c117a7bc9ac5250bdf1aa162d4e104f7edf9eb","typeString":"literal_string \"Function must be called through delegatecall\""},"value":"Function must be called through delegatecall"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_36e108fa7a809b52ab1951dd91c117a7bc9ac5250bdf1aa162d4e104f7edf9eb","typeString":"literal_string \"Function must be called through delegatecall\""}],"id":557,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"1739:7:5","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":565,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1739:80:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":566,"nodeType":"ExpressionStatement","src":"1739:80:5"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":571,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":568,"name":"_getImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76,"src":"1837:18:5","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":569,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1837:20:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":570,"name":"__self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":554,"src":"1861:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1837:30:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"46756e6374696f6e206d7573742062652063616c6c6564207468726f756768206163746976652070726f7879","id":572,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1869:46:5","typeDescriptions":{"typeIdentifier":"t_stringliteral_52f1ead4d9653e13afbd2e90ef2587c30187cd50b2e97d784e3f7a7541247434","typeString":"literal_string \"Function must be called through active proxy\""},"value":"Function must be called through active proxy"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_52f1ead4d9653e13afbd2e90ef2587c30187cd50b2e97d784e3f7a7541247434","typeString":"literal_string \"Function must be called through active proxy\""}],"id":567,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"1829:7:5","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":573,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1829:87:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":574,"nodeType":"ExpressionStatement","src":"1829:87:5"},{"id":575,"nodeType":"PlaceholderStatement","src":"1926:1:5"}]},"documentation":{"id":555,"nodeType":"StructuredDocumentation","src":"1210:493:5","text":" @dev Check that the execution is being performed through a delegatecall call and that the execution context is\n a proxy contract with an implementation (as defined in ERC1967) pointing to self. This should only be the case\n for UUPS and transparent proxies that are using the current contract as their implementation. Execution of a\n function through ERC1167 minimal proxies (clones) would not normally pass this test, but is not guaranteed to\n fail."},"id":577,"name":"onlyProxy","nameLocation":"1717:9:5","nodeType":"ModifierDefinition","parameters":{"id":556,"nodeType":"ParameterList","parameters":[],"src":"1726:2:5"},"src":"1708:226:5","virtual":false,"visibility":"internal"},{"body":{"id":591,"nodeType":"Block","src":"2164:120:5","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":586,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":583,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967268,"src":"2190:4:5","typeDescriptions":{"typeIdentifier":"t_contract$_UUPSUpgradeable_$671","typeString":"contract UUPSUpgradeable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_UUPSUpgradeable_$671","typeString":"contract UUPSUpgradeable"}],"id":582,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2182:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":581,"name":"address","nodeType":"ElementaryTypeName","src":"2182:7:5","typeDescriptions":{}}},"id":584,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2182:13:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":585,"name":"__self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":554,"src":"2199:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2182:23:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"555550535570677261646561626c653a206d757374206e6f742062652063616c6c6564207468726f7567682064656c656761746563616c6c","id":587,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2207:58:5","typeDescriptions":{"typeIdentifier":"t_stringliteral_67f0151b4ad1dcfa0e3302a0cd6019f51582ef1807b37dceb00bd852a514f7f4","typeString":"literal_string \"UUPSUpgradeable: must not be called through delegatecall\""},"value":"UUPSUpgradeable: must not be called through delegatecall"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_67f0151b4ad1dcfa0e3302a0cd6019f51582ef1807b37dceb00bd852a514f7f4","typeString":"literal_string \"UUPSUpgradeable: must not be called through delegatecall\""}],"id":580,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"2174:7:5","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":588,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2174:92:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":589,"nodeType":"ExpressionStatement","src":"2174:92:5"},{"id":590,"nodeType":"PlaceholderStatement","src":"2276:1:5"}]},"documentation":{"id":578,"nodeType":"StructuredDocumentation","src":"1940:195:5","text":" @dev Check that the execution is not being performed through a delegate call. This allows a function to be\n callable on the implementing contract but not through proxies."},"id":592,"name":"notDelegated","nameLocation":"2149:12:5","nodeType":"ModifierDefinition","parameters":{"id":579,"nodeType":"ParameterList","parameters":[],"src":"2161:2:5"},"src":"2140:144:5","virtual":false,"visibility":"internal"},{"body":{"id":597,"nodeType":"Block","src":"2350:7:5","statements":[]},"id":598,"implemented":true,"kind":"function","modifiers":[{"id":595,"kind":"modifierInvocation","modifierName":{"id":594,"name":"onlyInitializing","nameLocations":["2333:16:5"],"nodeType":"IdentifierPath","referencedDeclaration":479,"src":"2333:16:5"},"nodeType":"ModifierInvocation","src":"2333:16:5"}],"name":"__UUPSUpgradeable_init","nameLocation":"2299:22:5","nodeType":"FunctionDefinition","parameters":{"id":593,"nodeType":"ParameterList","parameters":[],"src":"2321:2:5"},"returnParameters":{"id":596,"nodeType":"ParameterList","parameters":[],"src":"2350:0:5"},"scope":671,"src":"2290:67:5","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":603,"nodeType":"Block","src":"2433:7:5","statements":[]},"id":604,"implemented":true,"kind":"function","modifiers":[{"id":601,"kind":"modifierInvocation","modifierName":{"id":600,"name":"onlyInitializing","nameLocations":["2416:16:5"],"nodeType":"IdentifierPath","referencedDeclaration":479,"src":"2416:16:5"},"nodeType":"ModifierInvocation","src":"2416:16:5"}],"name":"__UUPSUpgradeable_init_unchained","nameLocation":"2372:32:5","nodeType":"FunctionDefinition","parameters":{"id":599,"nodeType":"ParameterList","parameters":[],"src":"2404:2:5"},"returnParameters":{"id":602,"nodeType":"ParameterList","parameters":[],"src":"2433:0:5"},"scope":671,"src":"2363:77:5","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[29],"body":{"id":615,"nodeType":"Block","src":"3114:44:5","statements":[{"expression":{"id":613,"name":"_IMPLEMENTATION_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51,"src":"3131:20:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":612,"id":614,"nodeType":"Return","src":"3124:27:5"}]},"documentation":{"id":605,"nodeType":"StructuredDocumentation","src":"2445:577:5","text":" @dev Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the\n implementation. It is used to validate the implementation's compatibility when performing an upgrade.\n IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\n bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\n function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier."},"functionSelector":"52d1902d","id":616,"implemented":true,"kind":"function","modifiers":[{"id":609,"kind":"modifierInvocation","modifierName":{"id":608,"name":"notDelegated","nameLocations":["3083:12:5"],"nodeType":"IdentifierPath","referencedDeclaration":592,"src":"3083:12:5"},"nodeType":"ModifierInvocation","src":"3083:12:5"}],"name":"proxiableUUID","nameLocation":"3036:13:5","nodeType":"FunctionDefinition","overrides":{"id":607,"nodeType":"OverrideSpecifier","overrides":[],"src":"3074:8:5"},"parameters":{"id":606,"nodeType":"ParameterList","parameters":[],"src":"3049:2:5"},"returnParameters":{"id":612,"nodeType":"ParameterList","parameters":[{"constant":false,"id":611,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":616,"src":"3105:7:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":610,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3105:7:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3104:9:5"},"scope":671,"src":"3027:131:5","stateMutability":"view","virtual":true,"visibility":"external"},{"body":{"id":637,"nodeType":"Block","src":"3479:124:5","statements":[{"expression":{"arguments":[{"id":625,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":619,"src":"3507:17:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":624,"name":"_authorizeUpgrade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":665,"src":"3489:17:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":626,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3489:36:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":627,"nodeType":"ExpressionStatement","src":"3489:36:5"},{"expression":{"arguments":[{"id":629,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":619,"src":"3557:17:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":632,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3586:1:5","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":631,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"3576:9:5","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":630,"name":"bytes","nodeType":"ElementaryTypeName","src":"3580:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":633,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3576:12:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"66616c7365","id":634,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3590:5:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":628,"name":"_upgradeToAndCallUUPS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":198,"src":"3535:21:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_bool_$returns$__$","typeString":"function (address,bytes memory,bool)"}},"id":635,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3535:61:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":636,"nodeType":"ExpressionStatement","src":"3535:61:5"}]},"documentation":{"id":617,"nodeType":"StructuredDocumentation","src":"3164:239:5","text":" @dev Upgrade the implementation of the proxy to `newImplementation`.\n Calls {_authorizeUpgrade}.\n Emits an {Upgraded} event.\n @custom:oz-upgrades-unsafe-allow-reachable delegatecall"},"functionSelector":"3659cfe6","id":638,"implemented":true,"kind":"function","modifiers":[{"id":622,"kind":"modifierInvocation","modifierName":{"id":621,"name":"onlyProxy","nameLocations":["3469:9:5"],"nodeType":"IdentifierPath","referencedDeclaration":577,"src":"3469:9:5"},"nodeType":"ModifierInvocation","src":"3469:9:5"}],"name":"upgradeTo","nameLocation":"3417:9:5","nodeType":"FunctionDefinition","parameters":{"id":620,"nodeType":"ParameterList","parameters":[{"constant":false,"id":619,"mutability":"mutable","name":"newImplementation","nameLocation":"3435:17:5","nodeType":"VariableDeclaration","scope":638,"src":"3427:25:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":618,"name":"address","nodeType":"ElementaryTypeName","src":"3427:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3426:27:5"},"returnParameters":{"id":623,"nodeType":"ParameterList","parameters":[],"src":"3479:0:5"},"scope":671,"src":"3408:195:5","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":658,"nodeType":"Block","src":"4027:115:5","statements":[{"expression":{"arguments":[{"id":649,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":641,"src":"4055:17:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":648,"name":"_authorizeUpgrade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":665,"src":"4037:17:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":650,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4037:36:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":651,"nodeType":"ExpressionStatement","src":"4037:36:5"},{"expression":{"arguments":[{"id":653,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":641,"src":"4105:17:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":654,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":643,"src":"4124:4:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"74727565","id":655,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4130:4:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":652,"name":"_upgradeToAndCallUUPS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":198,"src":"4083:21:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_bool_$returns$__$","typeString":"function (address,bytes memory,bool)"}},"id":656,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4083:52:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":657,"nodeType":"ExpressionStatement","src":"4083:52:5"}]},"documentation":{"id":639,"nodeType":"StructuredDocumentation","src":"3609:308:5","text":" @dev Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call\n encoded in `data`.\n Calls {_authorizeUpgrade}.\n Emits an {Upgraded} event.\n @custom:oz-upgrades-unsafe-allow-reachable delegatecall"},"functionSelector":"4f1ef286","id":659,"implemented":true,"kind":"function","modifiers":[{"id":646,"kind":"modifierInvocation","modifierName":{"id":645,"name":"onlyProxy","nameLocations":["4017:9:5"],"nodeType":"IdentifierPath","referencedDeclaration":577,"src":"4017:9:5"},"nodeType":"ModifierInvocation","src":"4017:9:5"}],"name":"upgradeToAndCall","nameLocation":"3931:16:5","nodeType":"FunctionDefinition","parameters":{"id":644,"nodeType":"ParameterList","parameters":[{"constant":false,"id":641,"mutability":"mutable","name":"newImplementation","nameLocation":"3956:17:5","nodeType":"VariableDeclaration","scope":659,"src":"3948:25:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":640,"name":"address","nodeType":"ElementaryTypeName","src":"3948:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":643,"mutability":"mutable","name":"data","nameLocation":"3988:4:5","nodeType":"VariableDeclaration","scope":659,"src":"3975:17:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":642,"name":"bytes","nodeType":"ElementaryTypeName","src":"3975:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3947:46:5"},"returnParameters":{"id":647,"nodeType":"ParameterList","parameters":[],"src":"4027:0:5"},"scope":671,"src":"3922:220:5","stateMutability":"payable","virtual":true,"visibility":"public"},{"documentation":{"id":660,"nodeType":"StructuredDocumentation","src":"4148:397:5","text":" @dev Function that should revert when `msg.sender` is not authorized to upgrade the contract. Called by\n {upgradeTo} and {upgradeToAndCall}.\n Normally, this function will use an xref:access.adoc[access control] modifier such as {Ownable-onlyOwner}.\n ```solidity\n function _authorizeUpgrade(address) internal override onlyOwner {}\n ```"},"id":665,"implemented":false,"kind":"function","modifiers":[],"name":"_authorizeUpgrade","nameLocation":"4559:17:5","nodeType":"FunctionDefinition","parameters":{"id":663,"nodeType":"ParameterList","parameters":[{"constant":false,"id":662,"mutability":"mutable","name":"newImplementation","nameLocation":"4585:17:5","nodeType":"VariableDeclaration","scope":665,"src":"4577:25:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":661,"name":"address","nodeType":"ElementaryTypeName","src":"4577:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4576:27:5"},"returnParameters":{"id":664,"nodeType":"ParameterList","parameters":[],"src":"4620:0:5"},"scope":671,"src":"4550:71:5","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"constant":false,"documentation":{"id":666,"nodeType":"StructuredDocumentation","src":"4627:254:5","text":" @dev This empty reserved space is put in place to allow future versions to add new\n variables without shifting down storage in the inheritance chain.\n See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"},"id":670,"mutability":"mutable","name":"__gap","nameLocation":"4906:5:5","nodeType":"VariableDeclaration","scope":671,"src":"4886:25:5","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$50_storage","typeString":"uint256[50]"},"typeName":{"baseType":{"id":667,"name":"uint256","nodeType":"ElementaryTypeName","src":"4886:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":669,"length":{"hexValue":"3530","id":668,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4894:2:5","typeDescriptions":{"typeIdentifier":"t_rational_50_by_1","typeString":"int_const 50"},"value":"50"},"nodeType":"ArrayTypeName","src":"4886:11:5","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$50_storage_ptr","typeString":"uint256[50]"}},"visibility":"private"}],"scope":672,"src":"949:3965:5","usedErrors":[]}],"src":"115:4800:5"},"id":5},"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol","exportedSymbols":{"AddressUpgradeable":[1001]},"id":1002,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":673,"literals":["solidity","^","0.8",".1"],"nodeType":"PragmaDirective","src":"101:23:6"},{"abstract":false,"baseContracts":[],"canonicalName":"AddressUpgradeable","contractDependencies":[],"contractKind":"library","documentation":{"id":674,"nodeType":"StructuredDocumentation","src":"126:67:6","text":" @dev Collection of functions related to the address type"},"fullyImplemented":true,"id":1001,"linearizedBaseContracts":[1001],"name":"AddressUpgradeable","nameLocation":"202:18:6","nodeType":"ContractDefinition","nodes":[{"body":{"id":688,"nodeType":"Block","src":"1489:254:6","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":686,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":682,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":677,"src":"1713:7:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":683,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1721:4:6","memberName":"code","nodeType":"MemberAccess","src":"1713:12:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":684,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1726:6:6","memberName":"length","nodeType":"MemberAccess","src":"1713:19:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":685,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1735:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1713:23:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":681,"id":687,"nodeType":"Return","src":"1706:30:6"}]},"documentation":{"id":675,"nodeType":"StructuredDocumentation","src":"227:1191:6","text":" @dev Returns true if `account` is a contract.\n [IMPORTANT]\n ====\n It is unsafe to assume that an address for which this function returns\n false is an externally-owned account (EOA) and not a contract.\n Among others, `isContract` will return false for the following\n types of addresses:\n - an externally-owned account\n - a contract in construction\n - an address where a contract will be created\n - an address where a contract lived, but was destroyed\n Furthermore, `isContract` will also return true if the target contract within\n the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\n which only has an effect at the end of a transaction.\n ====\n [IMPORTANT]\n ====\n You shouldn't rely on `isContract` to protect against flash loan attacks!\n Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\n like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\n constructor.\n ===="},"id":689,"implemented":true,"kind":"function","modifiers":[],"name":"isContract","nameLocation":"1432:10:6","nodeType":"FunctionDefinition","parameters":{"id":678,"nodeType":"ParameterList","parameters":[{"constant":false,"id":677,"mutability":"mutable","name":"account","nameLocation":"1451:7:6","nodeType":"VariableDeclaration","scope":689,"src":"1443:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":676,"name":"address","nodeType":"ElementaryTypeName","src":"1443:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1442:17:6"},"returnParameters":{"id":681,"nodeType":"ParameterList","parameters":[{"constant":false,"id":680,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":689,"src":"1483:4:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":679,"name":"bool","nodeType":"ElementaryTypeName","src":"1483:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1482:6:6"},"scope":1001,"src":"1423:320:6","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":722,"nodeType":"Block","src":"2729:241:6","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":704,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":700,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967268,"src":"2755:4:6","typeDescriptions":{"typeIdentifier":"t_contract$_AddressUpgradeable_$1001","typeString":"library AddressUpgradeable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_AddressUpgradeable_$1001","typeString":"library AddressUpgradeable"}],"id":699,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2747:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":698,"name":"address","nodeType":"ElementaryTypeName","src":"2747:7:6","typeDescriptions":{}}},"id":701,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2747:13:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":702,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2761:7:6","memberName":"balance","nodeType":"MemberAccess","src":"2747:21:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":703,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":694,"src":"2772:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2747:31:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20696e73756666696369656e742062616c616e6365","id":705,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2780:31:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_5597a22abd0ef5332f8053862eb236db7590f17e2b93a53f63a103becfb561f9","typeString":"literal_string \"Address: insufficient balance\""},"value":"Address: insufficient balance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5597a22abd0ef5332f8053862eb236db7590f17e2b93a53f63a103becfb561f9","typeString":"literal_string \"Address: insufficient balance\""}],"id":697,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"2739:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":706,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2739:73:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":707,"nodeType":"ExpressionStatement","src":"2739:73:6"},{"assignments":[709,null],"declarations":[{"constant":false,"id":709,"mutability":"mutable","name":"success","nameLocation":"2829:7:6","nodeType":"VariableDeclaration","scope":722,"src":"2824:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":708,"name":"bool","nodeType":"ElementaryTypeName","src":"2824:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":716,"initialValue":{"arguments":[{"hexValue":"","id":714,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2872:2:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"id":710,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":692,"src":"2842:9:6","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":711,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2852:4:6","memberName":"call","nodeType":"MemberAccess","src":"2842:14:6","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":713,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":712,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":694,"src":"2864:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"2842:29:6","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":715,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2842:33:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"2823:52:6"},{"expression":{"arguments":[{"id":718,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":709,"src":"2893:7:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d61792068617665207265766572746564","id":719,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2902:60:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_51ddaa38748c0a1144620fb5bfe8edab31ea437571ad591a7734bbfd0429aeae","typeString":"literal_string \"Address: unable to send value, recipient may have reverted\""},"value":"Address: unable to send value, recipient may have reverted"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_51ddaa38748c0a1144620fb5bfe8edab31ea437571ad591a7734bbfd0429aeae","typeString":"literal_string \"Address: unable to send value, recipient may have reverted\""}],"id":717,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"2885:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":720,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2885:78:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":721,"nodeType":"ExpressionStatement","src":"2885:78:6"}]},"documentation":{"id":690,"nodeType":"StructuredDocumentation","src":"1749:904:6","text":" @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n `recipient`, forwarding all available gas and reverting on errors.\n https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n of certain opcodes, possibly making contracts go over the 2300 gas limit\n imposed by `transfer`, making them unable to receive funds via\n `transfer`. {sendValue} removes this limitation.\n https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n IMPORTANT: because control is transferred to `recipient`, care must be\n taken to not create reentrancy vulnerabilities. Consider using\n {ReentrancyGuard} or the\n https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]."},"id":723,"implemented":true,"kind":"function","modifiers":[],"name":"sendValue","nameLocation":"2667:9:6","nodeType":"FunctionDefinition","parameters":{"id":695,"nodeType":"ParameterList","parameters":[{"constant":false,"id":692,"mutability":"mutable","name":"recipient","nameLocation":"2693:9:6","nodeType":"VariableDeclaration","scope":723,"src":"2677:25:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":691,"name":"address","nodeType":"ElementaryTypeName","src":"2677:15:6","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"},{"constant":false,"id":694,"mutability":"mutable","name":"amount","nameLocation":"2712:6:6","nodeType":"VariableDeclaration","scope":723,"src":"2704:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":693,"name":"uint256","nodeType":"ElementaryTypeName","src":"2704:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2676:43:6"},"returnParameters":{"id":696,"nodeType":"ParameterList","parameters":[],"src":"2729:0:6"},"scope":1001,"src":"2658:312:6","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":740,"nodeType":"Block","src":"3801:96:6","statements":[{"expression":{"arguments":[{"id":734,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":726,"src":"3840:6:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":735,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":728,"src":"3848:4:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"30","id":736,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3854:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"416464726573733a206c6f772d6c6576656c2063616c6c206661696c6564","id":737,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3857:32:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_24d7ab5d382116e64324f19950ca9340b8af1ddeb09a8d026e0a3c6a01dcc9df","typeString":"literal_string \"Address: low-level call failed\""},"value":"Address: low-level call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_stringliteral_24d7ab5d382116e64324f19950ca9340b8af1ddeb09a8d026e0a3c6a01dcc9df","typeString":"literal_string \"Address: low-level call failed\""}],"id":733,"name":"functionCallWithValue","nodeType":"Identifier","overloadedDeclarations":[781,825],"referencedDeclaration":825,"src":"3818:21:6","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,uint256,string memory) returns (bytes memory)"}},"id":738,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3818:72:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":732,"id":739,"nodeType":"Return","src":"3811:79:6"}]},"documentation":{"id":724,"nodeType":"StructuredDocumentation","src":"2976:731:6","text":" @dev Performs a Solidity function call using a low level `call`. A\n plain `call` is an unsafe replacement for a function call: use this\n function instead.\n If `target` reverts with a revert reason, it is bubbled up by this\n function (like regular Solidity function calls).\n Returns the raw returned data. To convert to the expected return value,\n use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n Requirements:\n - `target` must be a contract.\n - calling `target` with `data` must not revert.\n _Available since v3.1._"},"id":741,"implemented":true,"kind":"function","modifiers":[],"name":"functionCall","nameLocation":"3721:12:6","nodeType":"FunctionDefinition","parameters":{"id":729,"nodeType":"ParameterList","parameters":[{"constant":false,"id":726,"mutability":"mutable","name":"target","nameLocation":"3742:6:6","nodeType":"VariableDeclaration","scope":741,"src":"3734:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":725,"name":"address","nodeType":"ElementaryTypeName","src":"3734:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":728,"mutability":"mutable","name":"data","nameLocation":"3763:4:6","nodeType":"VariableDeclaration","scope":741,"src":"3750:17:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":727,"name":"bytes","nodeType":"ElementaryTypeName","src":"3750:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3733:35:6"},"returnParameters":{"id":732,"nodeType":"ParameterList","parameters":[{"constant":false,"id":731,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":741,"src":"3787:12:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":730,"name":"bytes","nodeType":"ElementaryTypeName","src":"3787:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3786:14:6"},"scope":1001,"src":"3712:185:6","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":760,"nodeType":"Block","src":"4266:76:6","statements":[{"expression":{"arguments":[{"id":754,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":744,"src":"4305:6:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":755,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":746,"src":"4313:4:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"30","id":756,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4319:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":757,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":748,"src":"4322:12:6","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":753,"name":"functionCallWithValue","nodeType":"Identifier","overloadedDeclarations":[781,825],"referencedDeclaration":825,"src":"4283:21:6","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,uint256,string memory) returns (bytes memory)"}},"id":758,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4283:52:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":752,"id":759,"nodeType":"Return","src":"4276:59:6"}]},"documentation":{"id":742,"nodeType":"StructuredDocumentation","src":"3903:211:6","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n `errorMessage` as a fallback revert reason when `target` reverts.\n _Available since v3.1._"},"id":761,"implemented":true,"kind":"function","modifiers":[],"name":"functionCall","nameLocation":"4128:12:6","nodeType":"FunctionDefinition","parameters":{"id":749,"nodeType":"ParameterList","parameters":[{"constant":false,"id":744,"mutability":"mutable","name":"target","nameLocation":"4158:6:6","nodeType":"VariableDeclaration","scope":761,"src":"4150:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":743,"name":"address","nodeType":"ElementaryTypeName","src":"4150:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":746,"mutability":"mutable","name":"data","nameLocation":"4187:4:6","nodeType":"VariableDeclaration","scope":761,"src":"4174:17:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":745,"name":"bytes","nodeType":"ElementaryTypeName","src":"4174:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":748,"mutability":"mutable","name":"errorMessage","nameLocation":"4215:12:6","nodeType":"VariableDeclaration","scope":761,"src":"4201:26:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":747,"name":"string","nodeType":"ElementaryTypeName","src":"4201:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"4140:93:6"},"returnParameters":{"id":752,"nodeType":"ParameterList","parameters":[{"constant":false,"id":751,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":761,"src":"4252:12:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":750,"name":"bytes","nodeType":"ElementaryTypeName","src":"4252:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4251:14:6"},"scope":1001,"src":"4119:223:6","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":780,"nodeType":"Block","src":"4817:111:6","statements":[{"expression":{"arguments":[{"id":774,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":764,"src":"4856:6:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":775,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":766,"src":"4864:4:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":776,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":768,"src":"4870:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"416464726573733a206c6f772d6c6576656c2063616c6c20776974682076616c7565206661696c6564","id":777,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4877:43:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_88a4a0b5e975840320a0475d4027005235904fdb5ece94df156f3d717cb2dbfc","typeString":"literal_string \"Address: low-level call with value failed\""},"value":"Address: low-level call with value failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_88a4a0b5e975840320a0475d4027005235904fdb5ece94df156f3d717cb2dbfc","typeString":"literal_string \"Address: low-level call with value failed\""}],"id":773,"name":"functionCallWithValue","nodeType":"Identifier","overloadedDeclarations":[781,825],"referencedDeclaration":825,"src":"4834:21:6","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,uint256,string memory) returns (bytes memory)"}},"id":778,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4834:87:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":772,"id":779,"nodeType":"Return","src":"4827:94:6"}]},"documentation":{"id":762,"nodeType":"StructuredDocumentation","src":"4348:351:6","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but also transferring `value` wei to `target`.\n Requirements:\n - the calling contract must have an ETH balance of at least `value`.\n - the called Solidity function must be `payable`.\n _Available since v3.1._"},"id":781,"implemented":true,"kind":"function","modifiers":[],"name":"functionCallWithValue","nameLocation":"4713:21:6","nodeType":"FunctionDefinition","parameters":{"id":769,"nodeType":"ParameterList","parameters":[{"constant":false,"id":764,"mutability":"mutable","name":"target","nameLocation":"4743:6:6","nodeType":"VariableDeclaration","scope":781,"src":"4735:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":763,"name":"address","nodeType":"ElementaryTypeName","src":"4735:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":766,"mutability":"mutable","name":"data","nameLocation":"4764:4:6","nodeType":"VariableDeclaration","scope":781,"src":"4751:17:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":765,"name":"bytes","nodeType":"ElementaryTypeName","src":"4751:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":768,"mutability":"mutable","name":"value","nameLocation":"4778:5:6","nodeType":"VariableDeclaration","scope":781,"src":"4770:13:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":767,"name":"uint256","nodeType":"ElementaryTypeName","src":"4770:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4734:50:6"},"returnParameters":{"id":772,"nodeType":"ParameterList","parameters":[{"constant":false,"id":771,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":781,"src":"4803:12:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":770,"name":"bytes","nodeType":"ElementaryTypeName","src":"4803:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4802:14:6"},"scope":1001,"src":"4704:224:6","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":824,"nodeType":"Block","src":"5355:267:6","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":802,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":798,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967268,"src":"5381:4:6","typeDescriptions":{"typeIdentifier":"t_contract$_AddressUpgradeable_$1001","typeString":"library AddressUpgradeable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_AddressUpgradeable_$1001","typeString":"library AddressUpgradeable"}],"id":797,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5373:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":796,"name":"address","nodeType":"ElementaryTypeName","src":"5373:7:6","typeDescriptions":{}}},"id":799,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5373:13:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":800,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5387:7:6","memberName":"balance","nodeType":"MemberAccess","src":"5373:21:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":801,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":788,"src":"5398:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5373:30:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c","id":803,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5405:40:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c","typeString":"literal_string \"Address: insufficient balance for call\""},"value":"Address: insufficient balance for call"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c","typeString":"literal_string \"Address: insufficient balance for call\""}],"id":795,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"5365:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":804,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5365:81:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":805,"nodeType":"ExpressionStatement","src":"5365:81:6"},{"assignments":[807,809],"declarations":[{"constant":false,"id":807,"mutability":"mutable","name":"success","nameLocation":"5462:7:6","nodeType":"VariableDeclaration","scope":824,"src":"5457:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":806,"name":"bool","nodeType":"ElementaryTypeName","src":"5457:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":809,"mutability":"mutable","name":"returndata","nameLocation":"5484:10:6","nodeType":"VariableDeclaration","scope":824,"src":"5471:23:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":808,"name":"bytes","nodeType":"ElementaryTypeName","src":"5471:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":816,"initialValue":{"arguments":[{"id":814,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":786,"src":"5524:4:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":810,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":784,"src":"5498:6:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":811,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5505:4:6","memberName":"call","nodeType":"MemberAccess","src":"5498:11:6","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":813,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":812,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":788,"src":"5517:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"5498:25:6","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":815,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5498:31:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"5456:73:6"},{"expression":{"arguments":[{"id":818,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":784,"src":"5573:6:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":819,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":807,"src":"5581:7:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":820,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":809,"src":"5590:10:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":821,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":790,"src":"5602:12:6","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":817,"name":"verifyCallResultFromTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":956,"src":"5546:26:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bool,bytes memory,string memory) view returns (bytes memory)"}},"id":822,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5546:69:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":794,"id":823,"nodeType":"Return","src":"5539:76:6"}]},"documentation":{"id":782,"nodeType":"StructuredDocumentation","src":"4934:237:6","text":" @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n with `errorMessage` as a fallback revert reason when `target` reverts.\n _Available since v3.1._"},"id":825,"implemented":true,"kind":"function","modifiers":[],"name":"functionCallWithValue","nameLocation":"5185:21:6","nodeType":"FunctionDefinition","parameters":{"id":791,"nodeType":"ParameterList","parameters":[{"constant":false,"id":784,"mutability":"mutable","name":"target","nameLocation":"5224:6:6","nodeType":"VariableDeclaration","scope":825,"src":"5216:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":783,"name":"address","nodeType":"ElementaryTypeName","src":"5216:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":786,"mutability":"mutable","name":"data","nameLocation":"5253:4:6","nodeType":"VariableDeclaration","scope":825,"src":"5240:17:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":785,"name":"bytes","nodeType":"ElementaryTypeName","src":"5240:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":788,"mutability":"mutable","name":"value","nameLocation":"5275:5:6","nodeType":"VariableDeclaration","scope":825,"src":"5267:13:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":787,"name":"uint256","nodeType":"ElementaryTypeName","src":"5267:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":790,"mutability":"mutable","name":"errorMessage","nameLocation":"5304:12:6","nodeType":"VariableDeclaration","scope":825,"src":"5290:26:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":789,"name":"string","nodeType":"ElementaryTypeName","src":"5290:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"5206:116:6"},"returnParameters":{"id":794,"nodeType":"ParameterList","parameters":[{"constant":false,"id":793,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":825,"src":"5341:12:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":792,"name":"bytes","nodeType":"ElementaryTypeName","src":"5341:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5340:14:6"},"scope":1001,"src":"5176:446:6","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":841,"nodeType":"Block","src":"5899:97:6","statements":[{"expression":{"arguments":[{"id":836,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":828,"src":"5935:6:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":837,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":830,"src":"5943:4:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"416464726573733a206c6f772d6c6576656c207374617469632063616c6c206661696c6564","id":838,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5949:39:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_90ec82aa826a536a4cbfae44ecfa384680faa9a4b77344bce96aa761ad904df0","typeString":"literal_string \"Address: low-level static call failed\""},"value":"Address: low-level static call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_90ec82aa826a536a4cbfae44ecfa384680faa9a4b77344bce96aa761ad904df0","typeString":"literal_string \"Address: low-level static call failed\""}],"id":835,"name":"functionStaticCall","nodeType":"Identifier","overloadedDeclarations":[842,871],"referencedDeclaration":871,"src":"5916:18:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,string memory) view returns (bytes memory)"}},"id":839,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5916:73:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":834,"id":840,"nodeType":"Return","src":"5909:80:6"}]},"documentation":{"id":826,"nodeType":"StructuredDocumentation","src":"5628:166:6","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a static call.\n _Available since v3.3._"},"id":842,"implemented":true,"kind":"function","modifiers":[],"name":"functionStaticCall","nameLocation":"5808:18:6","nodeType":"FunctionDefinition","parameters":{"id":831,"nodeType":"ParameterList","parameters":[{"constant":false,"id":828,"mutability":"mutable","name":"target","nameLocation":"5835:6:6","nodeType":"VariableDeclaration","scope":842,"src":"5827:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":827,"name":"address","nodeType":"ElementaryTypeName","src":"5827:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":830,"mutability":"mutable","name":"data","nameLocation":"5856:4:6","nodeType":"VariableDeclaration","scope":842,"src":"5843:17:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":829,"name":"bytes","nodeType":"ElementaryTypeName","src":"5843:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5826:35:6"},"returnParameters":{"id":834,"nodeType":"ParameterList","parameters":[{"constant":false,"id":833,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":842,"src":"5885:12:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":832,"name":"bytes","nodeType":"ElementaryTypeName","src":"5885:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5884:14:6"},"scope":1001,"src":"5799:197:6","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":870,"nodeType":"Block","src":"6338:168:6","statements":[{"assignments":[855,857],"declarations":[{"constant":false,"id":855,"mutability":"mutable","name":"success","nameLocation":"6354:7:6","nodeType":"VariableDeclaration","scope":870,"src":"6349:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":854,"name":"bool","nodeType":"ElementaryTypeName","src":"6349:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":857,"mutability":"mutable","name":"returndata","nameLocation":"6376:10:6","nodeType":"VariableDeclaration","scope":870,"src":"6363:23:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":856,"name":"bytes","nodeType":"ElementaryTypeName","src":"6363:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":862,"initialValue":{"arguments":[{"id":860,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":847,"src":"6408:4:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":858,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":845,"src":"6390:6:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":859,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6397:10:6","memberName":"staticcall","nodeType":"MemberAccess","src":"6390:17:6","typeDescriptions":{"typeIdentifier":"t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) view returns (bool,bytes memory)"}},"id":861,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6390:23:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"6348:65:6"},{"expression":{"arguments":[{"id":864,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":845,"src":"6457:6:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":865,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":855,"src":"6465:7:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":866,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":857,"src":"6474:10:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":867,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":849,"src":"6486:12:6","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":863,"name":"verifyCallResultFromTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":956,"src":"6430:26:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bool,bytes memory,string memory) view returns (bytes memory)"}},"id":868,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6430:69:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":853,"id":869,"nodeType":"Return","src":"6423:76:6"}]},"documentation":{"id":843,"nodeType":"StructuredDocumentation","src":"6002:173:6","text":" @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n but performing a static call.\n _Available since v3.3._"},"id":871,"implemented":true,"kind":"function","modifiers":[],"name":"functionStaticCall","nameLocation":"6189:18:6","nodeType":"FunctionDefinition","parameters":{"id":850,"nodeType":"ParameterList","parameters":[{"constant":false,"id":845,"mutability":"mutable","name":"target","nameLocation":"6225:6:6","nodeType":"VariableDeclaration","scope":871,"src":"6217:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":844,"name":"address","nodeType":"ElementaryTypeName","src":"6217:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":847,"mutability":"mutable","name":"data","nameLocation":"6254:4:6","nodeType":"VariableDeclaration","scope":871,"src":"6241:17:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":846,"name":"bytes","nodeType":"ElementaryTypeName","src":"6241:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":849,"mutability":"mutable","name":"errorMessage","nameLocation":"6282:12:6","nodeType":"VariableDeclaration","scope":871,"src":"6268:26:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":848,"name":"string","nodeType":"ElementaryTypeName","src":"6268:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"6207:93:6"},"returnParameters":{"id":853,"nodeType":"ParameterList","parameters":[{"constant":false,"id":852,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":871,"src":"6324:12:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":851,"name":"bytes","nodeType":"ElementaryTypeName","src":"6324:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6323:14:6"},"scope":1001,"src":"6180:326:6","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":887,"nodeType":"Block","src":"6782:101:6","statements":[{"expression":{"arguments":[{"id":882,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":874,"src":"6820:6:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":883,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":876,"src":"6828:4:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564","id":884,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6834:41:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_9fdcd12e4b726339b32a442b0a448365d5d85c96b2d2cff917b4f66c63110398","typeString":"literal_string \"Address: low-level delegate call failed\""},"value":"Address: low-level delegate call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_9fdcd12e4b726339b32a442b0a448365d5d85c96b2d2cff917b4f66c63110398","typeString":"literal_string \"Address: low-level delegate call failed\""}],"id":881,"name":"functionDelegateCall","nodeType":"Identifier","overloadedDeclarations":[888,917],"referencedDeclaration":917,"src":"6799:20:6","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,string memory) returns (bytes memory)"}},"id":885,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6799:77:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":880,"id":886,"nodeType":"Return","src":"6792:84:6"}]},"documentation":{"id":872,"nodeType":"StructuredDocumentation","src":"6512:168:6","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a delegate call.\n _Available since v3.4._"},"id":888,"implemented":true,"kind":"function","modifiers":[],"name":"functionDelegateCall","nameLocation":"6694:20:6","nodeType":"FunctionDefinition","parameters":{"id":877,"nodeType":"ParameterList","parameters":[{"constant":false,"id":874,"mutability":"mutable","name":"target","nameLocation":"6723:6:6","nodeType":"VariableDeclaration","scope":888,"src":"6715:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":873,"name":"address","nodeType":"ElementaryTypeName","src":"6715:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":876,"mutability":"mutable","name":"data","nameLocation":"6744:4:6","nodeType":"VariableDeclaration","scope":888,"src":"6731:17:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":875,"name":"bytes","nodeType":"ElementaryTypeName","src":"6731:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6714:35:6"},"returnParameters":{"id":880,"nodeType":"ParameterList","parameters":[{"constant":false,"id":879,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":888,"src":"6768:12:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":878,"name":"bytes","nodeType":"ElementaryTypeName","src":"6768:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6767:14:6"},"scope":1001,"src":"6685:198:6","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":916,"nodeType":"Block","src":"7224:170:6","statements":[{"assignments":[901,903],"declarations":[{"constant":false,"id":901,"mutability":"mutable","name":"success","nameLocation":"7240:7:6","nodeType":"VariableDeclaration","scope":916,"src":"7235:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":900,"name":"bool","nodeType":"ElementaryTypeName","src":"7235:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":903,"mutability":"mutable","name":"returndata","nameLocation":"7262:10:6","nodeType":"VariableDeclaration","scope":916,"src":"7249:23:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":902,"name":"bytes","nodeType":"ElementaryTypeName","src":"7249:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":908,"initialValue":{"arguments":[{"id":906,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":893,"src":"7296:4:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":904,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":891,"src":"7276:6:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":905,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7283:12:6","memberName":"delegatecall","nodeType":"MemberAccess","src":"7276:19:6","typeDescriptions":{"typeIdentifier":"t_function_baredelegatecall_nonpayable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) returns (bool,bytes memory)"}},"id":907,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7276:25:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"7234:67:6"},{"expression":{"arguments":[{"id":910,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":891,"src":"7345:6:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":911,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":901,"src":"7353:7:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":912,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":903,"src":"7362:10:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":913,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":895,"src":"7374:12:6","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":909,"name":"verifyCallResultFromTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":956,"src":"7318:26:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bool,bytes memory,string memory) view returns (bytes memory)"}},"id":914,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7318:69:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":899,"id":915,"nodeType":"Return","src":"7311:76:6"}]},"documentation":{"id":889,"nodeType":"StructuredDocumentation","src":"6889:175:6","text":" @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n but performing a delegate call.\n _Available since v3.4._"},"id":917,"implemented":true,"kind":"function","modifiers":[],"name":"functionDelegateCall","nameLocation":"7078:20:6","nodeType":"FunctionDefinition","parameters":{"id":896,"nodeType":"ParameterList","parameters":[{"constant":false,"id":891,"mutability":"mutable","name":"target","nameLocation":"7116:6:6","nodeType":"VariableDeclaration","scope":917,"src":"7108:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":890,"name":"address","nodeType":"ElementaryTypeName","src":"7108:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":893,"mutability":"mutable","name":"data","nameLocation":"7145:4:6","nodeType":"VariableDeclaration","scope":917,"src":"7132:17:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":892,"name":"bytes","nodeType":"ElementaryTypeName","src":"7132:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":895,"mutability":"mutable","name":"errorMessage","nameLocation":"7173:12:6","nodeType":"VariableDeclaration","scope":917,"src":"7159:26:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":894,"name":"string","nodeType":"ElementaryTypeName","src":"7159:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"7098:93:6"},"returnParameters":{"id":899,"nodeType":"ParameterList","parameters":[{"constant":false,"id":898,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":917,"src":"7210:12:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":897,"name":"bytes","nodeType":"ElementaryTypeName","src":"7210:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7209:14:6"},"scope":1001,"src":"7069:325:6","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":955,"nodeType":"Block","src":"7876:434:6","statements":[{"condition":{"id":931,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":922,"src":"7890:7:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":953,"nodeType":"Block","src":"8246:58:6","statements":[{"expression":{"arguments":[{"id":949,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":924,"src":"8268:10:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":950,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":926,"src":"8280:12:6","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":948,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1000,"src":"8260:7:6","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (bytes memory,string memory) pure"}},"id":951,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8260:33:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":952,"nodeType":"ExpressionStatement","src":"8260:33:6"}]},"id":954,"nodeType":"IfStatement","src":"7886:418:6","trueBody":{"id":947,"nodeType":"Block","src":"7899:341:6","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":935,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":932,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":924,"src":"7917:10:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":933,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7928:6:6","memberName":"length","nodeType":"MemberAccess","src":"7917:17:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":934,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7938:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7917:22:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":944,"nodeType":"IfStatement","src":"7913:286:6","trueBody":{"id":943,"nodeType":"Block","src":"7941:258:6","statements":[{"expression":{"arguments":[{"arguments":[{"id":938,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":920,"src":"8143:6:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":937,"name":"isContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":689,"src":"8132:10:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":939,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8132:18:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374","id":940,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8152:31:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad","typeString":"literal_string \"Address: call to non-contract\""},"value":"Address: call to non-contract"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad","typeString":"literal_string \"Address: call to non-contract\""}],"id":936,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"8124:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":941,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8124:60:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":942,"nodeType":"ExpressionStatement","src":"8124:60:6"}]}},{"expression":{"id":945,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":924,"src":"8219:10:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":930,"id":946,"nodeType":"Return","src":"8212:17:6"}]}}]},"documentation":{"id":918,"nodeType":"StructuredDocumentation","src":"7400:277:6","text":" @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\n the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\n _Available since v4.8._"},"id":956,"implemented":true,"kind":"function","modifiers":[],"name":"verifyCallResultFromTarget","nameLocation":"7691:26:6","nodeType":"FunctionDefinition","parameters":{"id":927,"nodeType":"ParameterList","parameters":[{"constant":false,"id":920,"mutability":"mutable","name":"target","nameLocation":"7735:6:6","nodeType":"VariableDeclaration","scope":956,"src":"7727:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":919,"name":"address","nodeType":"ElementaryTypeName","src":"7727:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":922,"mutability":"mutable","name":"success","nameLocation":"7756:7:6","nodeType":"VariableDeclaration","scope":956,"src":"7751:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":921,"name":"bool","nodeType":"ElementaryTypeName","src":"7751:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":924,"mutability":"mutable","name":"returndata","nameLocation":"7786:10:6","nodeType":"VariableDeclaration","scope":956,"src":"7773:23:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":923,"name":"bytes","nodeType":"ElementaryTypeName","src":"7773:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":926,"mutability":"mutable","name":"errorMessage","nameLocation":"7820:12:6","nodeType":"VariableDeclaration","scope":956,"src":"7806:26:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":925,"name":"string","nodeType":"ElementaryTypeName","src":"7806:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"7717:121:6"},"returnParameters":{"id":930,"nodeType":"ParameterList","parameters":[{"constant":false,"id":929,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":956,"src":"7862:12:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":928,"name":"bytes","nodeType":"ElementaryTypeName","src":"7862:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7861:14:6"},"scope":1001,"src":"7682:628:6","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":979,"nodeType":"Block","src":"8691:135:6","statements":[{"condition":{"id":968,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":959,"src":"8705:7:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":977,"nodeType":"Block","src":"8762:58:6","statements":[{"expression":{"arguments":[{"id":973,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":961,"src":"8784:10:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":974,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":963,"src":"8796:12:6","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":972,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1000,"src":"8776:7:6","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (bytes memory,string memory) pure"}},"id":975,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8776:33:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":976,"nodeType":"ExpressionStatement","src":"8776:33:6"}]},"id":978,"nodeType":"IfStatement","src":"8701:119:6","trueBody":{"id":971,"nodeType":"Block","src":"8714:42:6","statements":[{"expression":{"id":969,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":961,"src":"8735:10:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":967,"id":970,"nodeType":"Return","src":"8728:17:6"}]}}]},"documentation":{"id":957,"nodeType":"StructuredDocumentation","src":"8316:210:6","text":" @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\n revert reason or using the provided one.\n _Available since v4.3._"},"id":980,"implemented":true,"kind":"function","modifiers":[],"name":"verifyCallResult","nameLocation":"8540:16:6","nodeType":"FunctionDefinition","parameters":{"id":964,"nodeType":"ParameterList","parameters":[{"constant":false,"id":959,"mutability":"mutable","name":"success","nameLocation":"8571:7:6","nodeType":"VariableDeclaration","scope":980,"src":"8566:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":958,"name":"bool","nodeType":"ElementaryTypeName","src":"8566:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":961,"mutability":"mutable","name":"returndata","nameLocation":"8601:10:6","nodeType":"VariableDeclaration","scope":980,"src":"8588:23:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":960,"name":"bytes","nodeType":"ElementaryTypeName","src":"8588:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":963,"mutability":"mutable","name":"errorMessage","nameLocation":"8635:12:6","nodeType":"VariableDeclaration","scope":980,"src":"8621:26:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":962,"name":"string","nodeType":"ElementaryTypeName","src":"8621:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"8556:97:6"},"returnParameters":{"id":967,"nodeType":"ParameterList","parameters":[{"constant":false,"id":966,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":980,"src":"8677:12:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":965,"name":"bytes","nodeType":"ElementaryTypeName","src":"8677:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"8676:14:6"},"scope":1001,"src":"8531:295:6","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":999,"nodeType":"Block","src":"8915:457:6","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":990,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":987,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":982,"src":"8991:10:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":988,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9002:6:6","memberName":"length","nodeType":"MemberAccess","src":"8991:17:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":989,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9011:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8991:21:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":997,"nodeType":"Block","src":"9321:45:6","statements":[{"expression":{"arguments":[{"id":994,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":984,"src":"9342:12:6","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":993,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[4294967277,4294967277],"referencedDeclaration":4294967277,"src":"9335:6:6","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":995,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9335:20:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":996,"nodeType":"ExpressionStatement","src":"9335:20:6"}]},"id":998,"nodeType":"IfStatement","src":"8987:379:6","trueBody":{"id":992,"nodeType":"Block","src":"9014:301:6","statements":[{"AST":{"nodeType":"YulBlock","src":"9172:133:6","statements":[{"nodeType":"YulVariableDeclaration","src":"9190:40:6","value":{"arguments":[{"name":"returndata","nodeType":"YulIdentifier","src":"9219:10:6"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"9213:5:6"},"nodeType":"YulFunctionCall","src":"9213:17:6"},"variables":[{"name":"returndata_size","nodeType":"YulTypedName","src":"9194:15:6","type":""}]},{"expression":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9258:2:6","type":"","value":"32"},{"name":"returndata","nodeType":"YulIdentifier","src":"9262:10:6"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9254:3:6"},"nodeType":"YulFunctionCall","src":"9254:19:6"},{"name":"returndata_size","nodeType":"YulIdentifier","src":"9275:15:6"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9247:6:6"},"nodeType":"YulFunctionCall","src":"9247:44:6"},"nodeType":"YulExpressionStatement","src":"9247:44:6"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"london","externalReferences":[{"declaration":982,"isOffset":false,"isSlot":false,"src":"9219:10:6","valueSize":1},{"declaration":982,"isOffset":false,"isSlot":false,"src":"9262:10:6","valueSize":1}],"id":991,"nodeType":"InlineAssembly","src":"9163:142:6"}]}}]},"id":1000,"implemented":true,"kind":"function","modifiers":[],"name":"_revert","nameLocation":"8841:7:6","nodeType":"FunctionDefinition","parameters":{"id":985,"nodeType":"ParameterList","parameters":[{"constant":false,"id":982,"mutability":"mutable","name":"returndata","nameLocation":"8862:10:6","nodeType":"VariableDeclaration","scope":1000,"src":"8849:23:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":981,"name":"bytes","nodeType":"ElementaryTypeName","src":"8849:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":984,"mutability":"mutable","name":"errorMessage","nameLocation":"8888:12:6","nodeType":"VariableDeclaration","scope":1000,"src":"8874:26:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":983,"name":"string","nodeType":"ElementaryTypeName","src":"8874:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"8848:53:6"},"returnParameters":{"id":986,"nodeType":"ParameterList","parameters":[],"src":"8915:0:6"},"scope":1001,"src":"8832:540:6","stateMutability":"pure","virtual":false,"visibility":"private"}],"scope":1002,"src":"194:9180:6","usedErrors":[]}],"src":"101:9274:6"},"id":6},"@openzeppelin/contracts-upgradeable/utils/CheckpointsUpgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/CheckpointsUpgradeable.sol","exportedSymbols":{"CheckpointsUpgradeable":[2542],"MathUpgradeable":[3700],"SafeCastUpgradeable":[5241]},"id":2543,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1003,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"193:23:7"},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/math/MathUpgradeable.sol","file":"./math/MathUpgradeable.sol","id":1004,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2543,"sourceUnit":3701,"src":"218:36:7","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol","file":"./math/SafeCastUpgradeable.sol","id":1005,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2543,"sourceUnit":5242,"src":"255:40:7","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"CheckpointsUpgradeable","contractDependencies":[],"contractKind":"library","documentation":{"id":1006,"nodeType":"StructuredDocumentation","src":"297:432:7","text":" @dev This library defines the `History` struct, for checkpointing values as they change at different points in\n time, and later looking up past values by block number. See {Votes} as an example.\n To create a history of checkpoints define a variable type `Checkpoints.History` in your contract, and store a new\n checkpoint for the current transaction block using the {push} function.\n _Available since v4.5._"},"fullyImplemented":true,"id":2542,"linearizedBaseContracts":[2542],"name":"CheckpointsUpgradeable","nameLocation":"738:22:7","nodeType":"ContractDefinition","nodes":[{"canonicalName":"CheckpointsUpgradeable.History","id":1011,"members":[{"constant":false,"id":1010,"mutability":"mutable","name":"_checkpoints","nameLocation":"805:12:7","nodeType":"VariableDeclaration","scope":1011,"src":"792:25:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint_$1016_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint[]"},"typeName":{"baseType":{"id":1008,"nodeType":"UserDefinedTypeName","pathNode":{"id":1007,"name":"Checkpoint","nameLocations":["792:10:7"],"nodeType":"IdentifierPath","referencedDeclaration":1016,"src":"792:10:7"},"referencedDeclaration":1016,"src":"792:10:7","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint_$1016_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint"}},"id":1009,"nodeType":"ArrayTypeName","src":"792:12:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint_$1016_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint[]"}},"visibility":"internal"}],"name":"History","nameLocation":"774:7:7","nodeType":"StructDefinition","scope":2542,"src":"767:57:7","visibility":"public"},{"canonicalName":"CheckpointsUpgradeable.Checkpoint","id":1016,"members":[{"constant":false,"id":1013,"mutability":"mutable","name":"_blockNumber","nameLocation":"865:12:7","nodeType":"VariableDeclaration","scope":1016,"src":"858:19:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":1012,"name":"uint32","nodeType":"ElementaryTypeName","src":"858:6:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":1015,"mutability":"mutable","name":"_value","nameLocation":"895:6:7","nodeType":"VariableDeclaration","scope":1016,"src":"887:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"},"typeName":{"id":1014,"name":"uint224","nodeType":"ElementaryTypeName","src":"887:7:7","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"visibility":"internal"}],"name":"Checkpoint","nameLocation":"837:10:7","nodeType":"StructDefinition","scope":2542,"src":"830:78:7","visibility":"public"},{"body":{"id":1072,"nodeType":"Block","src":"1350:355:7","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1031,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1028,"name":"blockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1022,"src":"1368:11:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":1029,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967292,"src":"1382:5:7","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":1030,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1388:6:7","memberName":"number","nodeType":"MemberAccess","src":"1382:12:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1368:26:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"436865636b706f696e74733a20626c6f636b206e6f7420796574206d696e6564","id":1032,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1396:34:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_65bd29ebd873d82da6b3634513fc6582859c8e00f2a09cb4bdbeddf7d05eb5be","typeString":"literal_string \"Checkpoints: block not yet mined\""},"value":"Checkpoints: block not yet mined"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_65bd29ebd873d82da6b3634513fc6582859c8e00f2a09cb4bdbeddf7d05eb5be","typeString":"literal_string \"Checkpoints: block not yet mined\""}],"id":1027,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"1360:7:7","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1033,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1360:71:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1034,"nodeType":"ExpressionStatement","src":"1360:71:7"},{"assignments":[1036],"declarations":[{"constant":false,"id":1036,"mutability":"mutable","name":"key","nameLocation":"1448:3:7","nodeType":"VariableDeclaration","scope":1072,"src":"1441:10:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":1035,"name":"uint32","nodeType":"ElementaryTypeName","src":"1441:6:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"id":1041,"initialValue":{"arguments":[{"id":1039,"name":"blockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1022,"src":"1483:11:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1037,"name":"SafeCastUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5241,"src":"1454:19:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCastUpgradeable_$5241_$","typeString":"type(library SafeCastUpgradeable)"}},"id":1038,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1474:8:7","memberName":"toUint32","nodeType":"MemberAccess","referencedDeclaration":4403,"src":"1454:28:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint32_$","typeString":"function (uint256) pure returns (uint32)"}},"id":1040,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1454:41:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"VariableDeclarationStatement","src":"1441:54:7"},{"assignments":[1043],"declarations":[{"constant":false,"id":1043,"mutability":"mutable","name":"len","nameLocation":"1514:3:7","nodeType":"VariableDeclaration","scope":1072,"src":"1506:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1042,"name":"uint256","nodeType":"ElementaryTypeName","src":"1506:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1047,"initialValue":{"expression":{"expression":{"id":1044,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1020,"src":"1520:4:7","typeDescriptions":{"typeIdentifier":"t_struct$_History_$1011_storage_ptr","typeString":"struct CheckpointsUpgradeable.History storage pointer"}},"id":1045,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1525:12:7","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":1010,"src":"1520:17:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint_$1016_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint storage ref[] storage ref"}},"id":1046,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1538:6:7","memberName":"length","nodeType":"MemberAccess","src":"1520:24:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1506:38:7"},{"assignments":[1049],"declarations":[{"constant":false,"id":1049,"mutability":"mutable","name":"pos","nameLocation":"1562:3:7","nodeType":"VariableDeclaration","scope":1072,"src":"1554:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1048,"name":"uint256","nodeType":"ElementaryTypeName","src":"1554:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1057,"initialValue":{"arguments":[{"expression":{"id":1051,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1020,"src":"1587:4:7","typeDescriptions":{"typeIdentifier":"t_struct$_History_$1011_storage_ptr","typeString":"struct CheckpointsUpgradeable.History storage pointer"}},"id":1052,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1592:12:7","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":1010,"src":"1587:17:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint_$1016_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint storage ref[] storage ref"}},{"id":1053,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1036,"src":"1606:3:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"hexValue":"30","id":1054,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1611:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":1055,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1043,"src":"1614:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint_$1016_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint storage ref[] storage ref"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1050,"name":"_upperBinaryLookup","nodeType":"Identifier","overloadedDeclarations":[1470,1972,2474],"referencedDeclaration":1470,"src":"1568:18:7","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_array$_t_struct$_Checkpoint_$1016_storage_$dyn_storage_ptr_$_t_uint32_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint storage ref[] storage pointer,uint32,uint256,uint256) view returns (uint256)"}},"id":1056,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1568:50:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1554:64:7"},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1060,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1058,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1049,"src":"1635:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1059,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1642:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1635:8:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"expression":{"arguments":[{"expression":{"id":1063,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1020,"src":"1664:4:7","typeDescriptions":{"typeIdentifier":"t_struct$_History_$1011_storage_ptr","typeString":"struct CheckpointsUpgradeable.History storage pointer"}},"id":1064,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1669:12:7","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":1010,"src":"1664:17:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint_$1016_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint storage ref[] storage ref"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1067,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1065,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1049,"src":"1683:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":1066,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1689:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1683:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint_$1016_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint storage ref[] storage ref"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1062,"name":"_unsafeAccess","nodeType":"Identifier","overloadedDeclarations":[1537,2039,2541],"referencedDeclaration":1537,"src":"1650:13:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_struct$_Checkpoint_$1016_storage_$dyn_storage_ptr_$_t_uint256_$returns$_t_struct$_Checkpoint_$1016_storage_ptr_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint storage ref[] storage pointer,uint256) pure returns (struct CheckpointsUpgradeable.Checkpoint storage pointer)"}},"id":1068,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1650:41:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint_$1016_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint storage pointer"}},"id":1069,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1692:6:7","memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":1015,"src":"1650:48:7","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"id":1070,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"1635:63:7","trueExpression":{"hexValue":"30","id":1061,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1646:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"functionReturnParameters":1026,"id":1071,"nodeType":"Return","src":"1628:70:7"}]},"documentation":{"id":1017,"nodeType":"StructuredDocumentation","src":"914:336:7","text":" @dev Returns the value at a given block number. If a checkpoint is not available at that block, the closest one\n before it is returned, or zero otherwise. Because the number returned corresponds to that at the end of the\n block, the requested block number must be in the past, excluding the current block."},"id":1073,"implemented":true,"kind":"function","modifiers":[],"name":"getAtBlock","nameLocation":"1264:10:7","nodeType":"FunctionDefinition","parameters":{"id":1023,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1020,"mutability":"mutable","name":"self","nameLocation":"1291:4:7","nodeType":"VariableDeclaration","scope":1073,"src":"1275:20:7","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_History_$1011_storage_ptr","typeString":"struct CheckpointsUpgradeable.History"},"typeName":{"id":1019,"nodeType":"UserDefinedTypeName","pathNode":{"id":1018,"name":"History","nameLocations":["1275:7:7"],"nodeType":"IdentifierPath","referencedDeclaration":1011,"src":"1275:7:7"},"referencedDeclaration":1011,"src":"1275:7:7","typeDescriptions":{"typeIdentifier":"t_struct$_History_$1011_storage_ptr","typeString":"struct CheckpointsUpgradeable.History"}},"visibility":"internal"},{"constant":false,"id":1022,"mutability":"mutable","name":"blockNumber","nameLocation":"1305:11:7","nodeType":"VariableDeclaration","scope":1073,"src":"1297:19:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1021,"name":"uint256","nodeType":"ElementaryTypeName","src":"1297:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1274:43:7"},"returnParameters":{"id":1026,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1025,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1073,"src":"1341:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1024,"name":"uint256","nodeType":"ElementaryTypeName","src":"1341:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1340:9:7"},"scope":2542,"src":"1255:450:7","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":1172,"nodeType":"Block","src":"2211:677:7","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1088,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1085,"name":"blockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1079,"src":"2229:11:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":1086,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967292,"src":"2243:5:7","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":1087,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2249:6:7","memberName":"number","nodeType":"MemberAccess","src":"2243:12:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2229:26:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"436865636b706f696e74733a20626c6f636b206e6f7420796574206d696e6564","id":1089,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2257:34:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_65bd29ebd873d82da6b3634513fc6582859c8e00f2a09cb4bdbeddf7d05eb5be","typeString":"literal_string \"Checkpoints: block not yet mined\""},"value":"Checkpoints: block not yet mined"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_65bd29ebd873d82da6b3634513fc6582859c8e00f2a09cb4bdbeddf7d05eb5be","typeString":"literal_string \"Checkpoints: block not yet mined\""}],"id":1084,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"2221:7:7","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1090,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2221:71:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1091,"nodeType":"ExpressionStatement","src":"2221:71:7"},{"assignments":[1093],"declarations":[{"constant":false,"id":1093,"mutability":"mutable","name":"key","nameLocation":"2309:3:7","nodeType":"VariableDeclaration","scope":1172,"src":"2302:10:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":1092,"name":"uint32","nodeType":"ElementaryTypeName","src":"2302:6:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"id":1098,"initialValue":{"arguments":[{"id":1096,"name":"blockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1079,"src":"2344:11:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1094,"name":"SafeCastUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5241,"src":"2315:19:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCastUpgradeable_$5241_$","typeString":"type(library SafeCastUpgradeable)"}},"id":1095,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2335:8:7","memberName":"toUint32","nodeType":"MemberAccess","referencedDeclaration":4403,"src":"2315:28:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint32_$","typeString":"function (uint256) pure returns (uint32)"}},"id":1097,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2315:41:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"VariableDeclarationStatement","src":"2302:54:7"},{"assignments":[1100],"declarations":[{"constant":false,"id":1100,"mutability":"mutable","name":"len","nameLocation":"2375:3:7","nodeType":"VariableDeclaration","scope":1172,"src":"2367:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1099,"name":"uint256","nodeType":"ElementaryTypeName","src":"2367:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1104,"initialValue":{"expression":{"expression":{"id":1101,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1077,"src":"2381:4:7","typeDescriptions":{"typeIdentifier":"t_struct$_History_$1011_storage_ptr","typeString":"struct CheckpointsUpgradeable.History storage pointer"}},"id":1102,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2386:12:7","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":1010,"src":"2381:17:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint_$1016_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint storage ref[] storage ref"}},"id":1103,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2399:6:7","memberName":"length","nodeType":"MemberAccess","src":"2381:24:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2367:38:7"},{"assignments":[1106],"declarations":[{"constant":false,"id":1106,"mutability":"mutable","name":"low","nameLocation":"2424:3:7","nodeType":"VariableDeclaration","scope":1172,"src":"2416:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1105,"name":"uint256","nodeType":"ElementaryTypeName","src":"2416:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1108,"initialValue":{"hexValue":"30","id":1107,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2430:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"2416:15:7"},{"assignments":[1110],"declarations":[{"constant":false,"id":1110,"mutability":"mutable","name":"high","nameLocation":"2449:4:7","nodeType":"VariableDeclaration","scope":1172,"src":"2441:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1109,"name":"uint256","nodeType":"ElementaryTypeName","src":"2441:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1112,"initialValue":{"id":1111,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1100,"src":"2456:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2441:18:7"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1115,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1113,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1100,"src":"2474:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"35","id":1114,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2480:1:7","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"src":"2474:7:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1147,"nodeType":"IfStatement","src":"2470:253:7","trueBody":{"id":1146,"nodeType":"Block","src":"2483:240:7","statements":[{"assignments":[1117],"declarations":[{"constant":false,"id":1117,"mutability":"mutable","name":"mid","nameLocation":"2505:3:7","nodeType":"VariableDeclaration","scope":1146,"src":"2497:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1116,"name":"uint256","nodeType":"ElementaryTypeName","src":"2497:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1124,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1123,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1118,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1100,"src":"2511:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[{"id":1121,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1100,"src":"2538:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1119,"name":"MathUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3700,"src":"2517:15:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_MathUpgradeable_$3700_$","typeString":"type(library MathUpgradeable)"}},"id":1120,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2533:4:7","memberName":"sqrt","nodeType":"MemberAccess","referencedDeclaration":3204,"src":"2517:20:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1122,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2517:25:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2511:31:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2497:45:7"},{"condition":{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":1132,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1125,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1093,"src":"2560:3:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"arguments":[{"expression":{"id":1127,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1077,"src":"2580:4:7","typeDescriptions":{"typeIdentifier":"t_struct$_History_$1011_storage_ptr","typeString":"struct CheckpointsUpgradeable.History storage pointer"}},"id":1128,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2585:12:7","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":1010,"src":"2580:17:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint_$1016_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint storage ref[] storage ref"}},{"id":1129,"name":"mid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1117,"src":"2599:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint_$1016_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint storage ref[] storage ref"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1126,"name":"_unsafeAccess","nodeType":"Identifier","overloadedDeclarations":[1537,2039,2541],"referencedDeclaration":1537,"src":"2566:13:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_struct$_Checkpoint_$1016_storage_$dyn_storage_ptr_$_t_uint256_$returns$_t_struct$_Checkpoint_$1016_storage_ptr_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint storage ref[] storage pointer,uint256) pure returns (struct CheckpointsUpgradeable.Checkpoint storage pointer)"}},"id":1130,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2566:37:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint_$1016_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint storage pointer"}},"id":1131,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2604:12:7","memberName":"_blockNumber","nodeType":"MemberAccess","referencedDeclaration":1013,"src":"2566:50:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"2560:56:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1144,"nodeType":"Block","src":"2667:46:7","statements":[{"expression":{"id":1142,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1138,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1106,"src":"2685:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1141,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1139,"name":"mid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1117,"src":"2691:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1140,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2697:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2691:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2685:13:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1143,"nodeType":"ExpressionStatement","src":"2685:13:7"}]},"id":1145,"nodeType":"IfStatement","src":"2556:157:7","trueBody":{"id":1137,"nodeType":"Block","src":"2618:43:7","statements":[{"expression":{"id":1135,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1133,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1110,"src":"2636:4:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1134,"name":"mid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1117,"src":"2643:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2636:10:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1136,"nodeType":"ExpressionStatement","src":"2636:10:7"}]}}]}},{"assignments":[1149],"declarations":[{"constant":false,"id":1149,"mutability":"mutable","name":"pos","nameLocation":"2741:3:7","nodeType":"VariableDeclaration","scope":1172,"src":"2733:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1148,"name":"uint256","nodeType":"ElementaryTypeName","src":"2733:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1157,"initialValue":{"arguments":[{"expression":{"id":1151,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1077,"src":"2766:4:7","typeDescriptions":{"typeIdentifier":"t_struct$_History_$1011_storage_ptr","typeString":"struct CheckpointsUpgradeable.History storage pointer"}},"id":1152,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2771:12:7","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":1010,"src":"2766:17:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint_$1016_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint storage ref[] storage ref"}},{"id":1153,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1093,"src":"2785:3:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":1154,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1106,"src":"2790:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1155,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1110,"src":"2795:4:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint_$1016_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint storage ref[] storage ref"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1150,"name":"_upperBinaryLookup","nodeType":"Identifier","overloadedDeclarations":[1470,1972,2474],"referencedDeclaration":1470,"src":"2747:18:7","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_array$_t_struct$_Checkpoint_$1016_storage_$dyn_storage_ptr_$_t_uint32_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint storage ref[] storage pointer,uint32,uint256,uint256) view returns (uint256)"}},"id":1156,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2747:53:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2733:67:7"},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1160,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1158,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1149,"src":"2818:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1159,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2825:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2818:8:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"expression":{"arguments":[{"expression":{"id":1163,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1077,"src":"2847:4:7","typeDescriptions":{"typeIdentifier":"t_struct$_History_$1011_storage_ptr","typeString":"struct CheckpointsUpgradeable.History storage pointer"}},"id":1164,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2852:12:7","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":1010,"src":"2847:17:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint_$1016_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint storage ref[] storage ref"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1167,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1165,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1149,"src":"2866:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":1166,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2872:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2866:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint_$1016_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint storage ref[] storage ref"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1162,"name":"_unsafeAccess","nodeType":"Identifier","overloadedDeclarations":[1537,2039,2541],"referencedDeclaration":1537,"src":"2833:13:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_struct$_Checkpoint_$1016_storage_$dyn_storage_ptr_$_t_uint256_$returns$_t_struct$_Checkpoint_$1016_storage_ptr_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint storage ref[] storage pointer,uint256) pure returns (struct CheckpointsUpgradeable.Checkpoint storage pointer)"}},"id":1168,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2833:41:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint_$1016_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint storage pointer"}},"id":1169,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2875:6:7","memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":1015,"src":"2833:48:7","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"id":1170,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"2818:63:7","trueExpression":{"hexValue":"30","id":1161,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2829:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"functionReturnParameters":1083,"id":1171,"nodeType":"Return","src":"2811:70:7"}]},"documentation":{"id":1074,"nodeType":"StructuredDocumentation","src":"1711:386:7","text":" @dev Returns the value at a given block number. If a checkpoint is not available at that block, the closest one\n before it is returned, or zero otherwise. Similar to {upperLookup} but optimized for the case when the searched\n checkpoint is probably \"recent\", defined as being among the last sqrt(N) checkpoints where N is the number of\n checkpoints."},"id":1173,"implemented":true,"kind":"function","modifiers":[],"name":"getAtProbablyRecentBlock","nameLocation":"2111:24:7","nodeType":"FunctionDefinition","parameters":{"id":1080,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1077,"mutability":"mutable","name":"self","nameLocation":"2152:4:7","nodeType":"VariableDeclaration","scope":1173,"src":"2136:20:7","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_History_$1011_storage_ptr","typeString":"struct CheckpointsUpgradeable.History"},"typeName":{"id":1076,"nodeType":"UserDefinedTypeName","pathNode":{"id":1075,"name":"History","nameLocations":["2136:7:7"],"nodeType":"IdentifierPath","referencedDeclaration":1011,"src":"2136:7:7"},"referencedDeclaration":1011,"src":"2136:7:7","typeDescriptions":{"typeIdentifier":"t_struct$_History_$1011_storage_ptr","typeString":"struct CheckpointsUpgradeable.History"}},"visibility":"internal"},{"constant":false,"id":1079,"mutability":"mutable","name":"blockNumber","nameLocation":"2166:11:7","nodeType":"VariableDeclaration","scope":1173,"src":"2158:19:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1078,"name":"uint256","nodeType":"ElementaryTypeName","src":"2158:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2135:43:7"},"returnParameters":{"id":1083,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1082,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1173,"src":"2202:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1081,"name":"uint256","nodeType":"ElementaryTypeName","src":"2202:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2201:9:7"},"scope":2542,"src":"2102:786:7","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":1200,"nodeType":"Block","src":"3153:132:7","statements":[{"expression":{"arguments":[{"expression":{"id":1187,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1177,"src":"3178:4:7","typeDescriptions":{"typeIdentifier":"t_struct$_History_$1011_storage_ptr","typeString":"struct CheckpointsUpgradeable.History storage pointer"}},"id":1188,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3183:12:7","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":1010,"src":"3178:17:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint_$1016_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint storage ref[] storage ref"}},{"arguments":[{"expression":{"id":1191,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967292,"src":"3226:5:7","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":1192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3232:6:7","memberName":"number","nodeType":"MemberAccess","src":"3226:12:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1189,"name":"SafeCastUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5241,"src":"3197:19:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCastUpgradeable_$5241_$","typeString":"type(library SafeCastUpgradeable)"}},"id":1190,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3217:8:7","memberName":"toUint32","nodeType":"MemberAccess","referencedDeclaration":4403,"src":"3197:28:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint32_$","typeString":"function (uint256) pure returns (uint32)"}},"id":1193,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3197:42:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"arguments":[{"id":1196,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1179,"src":"3271:5:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1194,"name":"SafeCastUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5241,"src":"3241:19:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCastUpgradeable_$5241_$","typeString":"type(library SafeCastUpgradeable)"}},"id":1195,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3261:9:7","memberName":"toUint224","nodeType":"MemberAccess","referencedDeclaration":3803,"src":"3241:29:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint224_$","typeString":"function (uint256) pure returns (uint224)"}},"id":1197,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3241:36:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint_$1016_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint storage ref[] storage ref"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_uint224","typeString":"uint224"}],"id":1186,"name":"_insert","nodeType":"Identifier","overloadedDeclarations":[1418,1920,2422],"referencedDeclaration":1418,"src":"3170:7:7","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_struct$_Checkpoint_$1016_storage_$dyn_storage_ptr_$_t_uint32_$_t_uint224_$returns$_t_uint224_$_t_uint224_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint storage ref[] storage pointer,uint32,uint224) returns (uint224,uint224)"}},"id":1198,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3170:108:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint224_$_t_uint224_$","typeString":"tuple(uint224,uint224)"}},"functionReturnParameters":1185,"id":1199,"nodeType":"Return","src":"3163:115:7"}]},"documentation":{"id":1174,"nodeType":"StructuredDocumentation","src":"2894:167:7","text":" @dev Pushes a value onto a History so that it is stored as the checkpoint for the current block.\n Returns previous value and new value."},"id":1201,"implemented":true,"kind":"function","modifiers":[],"name":"push","nameLocation":"3075:4:7","nodeType":"FunctionDefinition","parameters":{"id":1180,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1177,"mutability":"mutable","name":"self","nameLocation":"3096:4:7","nodeType":"VariableDeclaration","scope":1201,"src":"3080:20:7","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_History_$1011_storage_ptr","typeString":"struct CheckpointsUpgradeable.History"},"typeName":{"id":1176,"nodeType":"UserDefinedTypeName","pathNode":{"id":1175,"name":"History","nameLocations":["3080:7:7"],"nodeType":"IdentifierPath","referencedDeclaration":1011,"src":"3080:7:7"},"referencedDeclaration":1011,"src":"3080:7:7","typeDescriptions":{"typeIdentifier":"t_struct$_History_$1011_storage_ptr","typeString":"struct CheckpointsUpgradeable.History"}},"visibility":"internal"},{"constant":false,"id":1179,"mutability":"mutable","name":"value","nameLocation":"3110:5:7","nodeType":"VariableDeclaration","scope":1201,"src":"3102:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1178,"name":"uint256","nodeType":"ElementaryTypeName","src":"3102:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3079:37:7"},"returnParameters":{"id":1185,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1182,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1201,"src":"3135:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1181,"name":"uint256","nodeType":"ElementaryTypeName","src":"3135:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1184,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1201,"src":"3144:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1183,"name":"uint256","nodeType":"ElementaryTypeName","src":"3144:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3134:18:7"},"scope":2542,"src":"3066:219:7","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1234,"nodeType":"Block","src":"3688:59:7","statements":[{"expression":{"arguments":[{"id":1225,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1205,"src":"3710:4:7","typeDescriptions":{"typeIdentifier":"t_struct$_History_$1011_storage_ptr","typeString":"struct CheckpointsUpgradeable.History storage pointer"}},{"arguments":[{"arguments":[{"id":1228,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1205,"src":"3726:4:7","typeDescriptions":{"typeIdentifier":"t_struct$_History_$1011_storage_ptr","typeString":"struct CheckpointsUpgradeable.History storage pointer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_History_$1011_storage_ptr","typeString":"struct CheckpointsUpgradeable.History storage pointer"}],"id":1227,"name":"latest","nodeType":"Identifier","overloadedDeclarations":[1265,1767,2269],"referencedDeclaration":1265,"src":"3719:6:7","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_History_$1011_storage_ptr_$returns$_t_uint224_$","typeString":"function (struct CheckpointsUpgradeable.History storage pointer) view returns (uint224)"}},"id":1229,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3719:12:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},{"id":1230,"name":"delta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1217,"src":"3733:5:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint224","typeString":"uint224"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1226,"name":"op","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1215,"src":"3716:2:7","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) view returns (uint256)"}},"id":1231,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3716:23:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_History_$1011_storage_ptr","typeString":"struct CheckpointsUpgradeable.History storage pointer"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1224,"name":"push","nodeType":"Identifier","overloadedDeclarations":[1201,1235,1570,2072],"referencedDeclaration":1201,"src":"3705:4:7","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_History_$1011_storage_ptr_$_t_uint256_$returns$_t_uint256_$_t_uint256_$","typeString":"function (struct CheckpointsUpgradeable.History storage pointer,uint256) returns (uint256,uint256)"}},"id":1232,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3705:35:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"functionReturnParameters":1223,"id":1233,"nodeType":"Return","src":"3698:42:7"}]},"documentation":{"id":1202,"nodeType":"StructuredDocumentation","src":"3291:221:7","text":" @dev Pushes a value onto a History, by updating the latest value using binary operation `op`. The new value will\n be set to `op(latest, delta)`.\n Returns previous value and new value."},"id":1235,"implemented":true,"kind":"function","modifiers":[],"name":"push","nameLocation":"3526:4:7","nodeType":"FunctionDefinition","parameters":{"id":1218,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1205,"mutability":"mutable","name":"self","nameLocation":"3556:4:7","nodeType":"VariableDeclaration","scope":1235,"src":"3540:20:7","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_History_$1011_storage_ptr","typeString":"struct CheckpointsUpgradeable.History"},"typeName":{"id":1204,"nodeType":"UserDefinedTypeName","pathNode":{"id":1203,"name":"History","nameLocations":["3540:7:7"],"nodeType":"IdentifierPath","referencedDeclaration":1011,"src":"3540:7:7"},"referencedDeclaration":1011,"src":"3540:7:7","typeDescriptions":{"typeIdentifier":"t_struct$_History_$1011_storage_ptr","typeString":"struct CheckpointsUpgradeable.History"}},"visibility":"internal"},{"constant":false,"id":1215,"mutability":"mutable","name":"op","nameLocation":"3620:2:7","nodeType":"VariableDeclaration","scope":1235,"src":"3570:52:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) view returns (uint256)"},"typeName":{"id":1214,"nodeType":"FunctionTypeName","parameterTypes":{"id":1210,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1207,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1214,"src":"3579:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1206,"name":"uint256","nodeType":"ElementaryTypeName","src":"3579:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1209,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1214,"src":"3588:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1208,"name":"uint256","nodeType":"ElementaryTypeName","src":"3588:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3578:18:7"},"returnParameterTypes":{"id":1213,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1212,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1214,"src":"3611:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1211,"name":"uint256","nodeType":"ElementaryTypeName","src":"3611:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3610:9:7"},"src":"3570:52:7","stateMutability":"view","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) view returns (uint256)"},"visibility":"internal"},"visibility":"internal"},{"constant":false,"id":1217,"mutability":"mutable","name":"delta","nameLocation":"3640:5:7","nodeType":"VariableDeclaration","scope":1235,"src":"3632:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1216,"name":"uint256","nodeType":"ElementaryTypeName","src":"3632:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3530:121:7"},"returnParameters":{"id":1223,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1220,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1235,"src":"3670:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1219,"name":"uint256","nodeType":"ElementaryTypeName","src":"3670:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1222,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1235,"src":"3679:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1221,"name":"uint256","nodeType":"ElementaryTypeName","src":"3679:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3669:18:7"},"scope":2542,"src":"3517:230:7","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1264,"nodeType":"Block","src":"3937:135:7","statements":[{"assignments":[1245],"declarations":[{"constant":false,"id":1245,"mutability":"mutable","name":"pos","nameLocation":"3955:3:7","nodeType":"VariableDeclaration","scope":1264,"src":"3947:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1244,"name":"uint256","nodeType":"ElementaryTypeName","src":"3947:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1249,"initialValue":{"expression":{"expression":{"id":1246,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1239,"src":"3961:4:7","typeDescriptions":{"typeIdentifier":"t_struct$_History_$1011_storage_ptr","typeString":"struct CheckpointsUpgradeable.History storage pointer"}},"id":1247,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3966:12:7","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":1010,"src":"3961:17:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint_$1016_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint storage ref[] storage ref"}},"id":1248,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3979:6:7","memberName":"length","nodeType":"MemberAccess","src":"3961:24:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3947:38:7"},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1252,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1250,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1245,"src":"4002:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1251,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4009:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4002:8:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"expression":{"arguments":[{"expression":{"id":1255,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1239,"src":"4031:4:7","typeDescriptions":{"typeIdentifier":"t_struct$_History_$1011_storage_ptr","typeString":"struct CheckpointsUpgradeable.History storage pointer"}},"id":1256,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4036:12:7","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":1010,"src":"4031:17:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint_$1016_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint storage ref[] storage ref"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1259,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1257,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1245,"src":"4050:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":1258,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4056:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"4050:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint_$1016_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint storage ref[] storage ref"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1254,"name":"_unsafeAccess","nodeType":"Identifier","overloadedDeclarations":[1537,2039,2541],"referencedDeclaration":1537,"src":"4017:13:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_struct$_Checkpoint_$1016_storage_$dyn_storage_ptr_$_t_uint256_$returns$_t_struct$_Checkpoint_$1016_storage_ptr_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint storage ref[] storage pointer,uint256) pure returns (struct CheckpointsUpgradeable.Checkpoint storage pointer)"}},"id":1260,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4017:41:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint_$1016_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint storage pointer"}},"id":1261,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4059:6:7","memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":1015,"src":"4017:48:7","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"id":1262,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"4002:63:7","trueExpression":{"hexValue":"30","id":1253,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4013:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"functionReturnParameters":1243,"id":1263,"nodeType":"Return","src":"3995:70:7"}]},"documentation":{"id":1236,"nodeType":"StructuredDocumentation","src":"3753:109:7","text":" @dev Returns the value in the most recent checkpoint, or zero if there are no checkpoints."},"id":1265,"implemented":true,"kind":"function","modifiers":[],"name":"latest","nameLocation":"3876:6:7","nodeType":"FunctionDefinition","parameters":{"id":1240,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1239,"mutability":"mutable","name":"self","nameLocation":"3899:4:7","nodeType":"VariableDeclaration","scope":1265,"src":"3883:20:7","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_History_$1011_storage_ptr","typeString":"struct CheckpointsUpgradeable.History"},"typeName":{"id":1238,"nodeType":"UserDefinedTypeName","pathNode":{"id":1237,"name":"History","nameLocations":["3883:7:7"],"nodeType":"IdentifierPath","referencedDeclaration":1011,"src":"3883:7:7"},"referencedDeclaration":1011,"src":"3883:7:7","typeDescriptions":{"typeIdentifier":"t_struct$_History_$1011_storage_ptr","typeString":"struct CheckpointsUpgradeable.History"}},"visibility":"internal"}],"src":"3882:22:7"},"returnParameters":{"id":1243,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1242,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1265,"src":"3928:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"},"typeName":{"id":1241,"name":"uint224","nodeType":"ElementaryTypeName","src":"3928:7:7","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"visibility":"internal"}],"src":"3927:9:7"},"scope":2542,"src":"3867:205:7","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":1313,"nodeType":"Block","src":"4386:279:7","statements":[{"assignments":[1279],"declarations":[{"constant":false,"id":1279,"mutability":"mutable","name":"pos","nameLocation":"4404:3:7","nodeType":"VariableDeclaration","scope":1313,"src":"4396:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1278,"name":"uint256","nodeType":"ElementaryTypeName","src":"4396:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1283,"initialValue":{"expression":{"expression":{"id":1280,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1269,"src":"4410:4:7","typeDescriptions":{"typeIdentifier":"t_struct$_History_$1011_storage_ptr","typeString":"struct CheckpointsUpgradeable.History storage pointer"}},"id":1281,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4415:12:7","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":1010,"src":"4410:17:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint_$1016_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint storage ref[] storage ref"}},"id":1282,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4428:6:7","memberName":"length","nodeType":"MemberAccess","src":"4410:24:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4396:38:7"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1286,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1284,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1279,"src":"4448:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1285,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4455:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4448:8:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1311,"nodeType":"Block","src":"4509:150:7","statements":[{"assignments":[1295],"declarations":[{"constant":false,"id":1295,"mutability":"mutable","name":"ckpt","nameLocation":"4541:4:7","nodeType":"VariableDeclaration","scope":1311,"src":"4523:22:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint_$1016_memory_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint"},"typeName":{"id":1294,"nodeType":"UserDefinedTypeName","pathNode":{"id":1293,"name":"Checkpoint","nameLocations":["4523:10:7"],"nodeType":"IdentifierPath","referencedDeclaration":1016,"src":"4523:10:7"},"referencedDeclaration":1016,"src":"4523:10:7","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint_$1016_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint"}},"visibility":"internal"}],"id":1303,"initialValue":{"arguments":[{"expression":{"id":1297,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1269,"src":"4562:4:7","typeDescriptions":{"typeIdentifier":"t_struct$_History_$1011_storage_ptr","typeString":"struct CheckpointsUpgradeable.History storage pointer"}},"id":1298,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4567:12:7","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":1010,"src":"4562:17:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint_$1016_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint storage ref[] storage ref"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1301,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1299,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1279,"src":"4581:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":1300,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4587:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"4581:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint_$1016_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint storage ref[] storage ref"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1296,"name":"_unsafeAccess","nodeType":"Identifier","overloadedDeclarations":[1537,2039,2541],"referencedDeclaration":1537,"src":"4548:13:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_struct$_Checkpoint_$1016_storage_$dyn_storage_ptr_$_t_uint256_$returns$_t_struct$_Checkpoint_$1016_storage_ptr_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint storage ref[] storage pointer,uint256) pure returns (struct CheckpointsUpgradeable.Checkpoint storage pointer)"}},"id":1302,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4548:41:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint_$1016_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"4523:66:7"},{"expression":{"components":[{"hexValue":"74727565","id":1304,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4611:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"expression":{"id":1305,"name":"ckpt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1295,"src":"4617:4:7","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint_$1016_memory_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint memory"}},"id":1306,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4622:12:7","memberName":"_blockNumber","nodeType":"MemberAccess","referencedDeclaration":1013,"src":"4617:17:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"expression":{"id":1307,"name":"ckpt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1295,"src":"4636:4:7","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint_$1016_memory_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint memory"}},"id":1308,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4641:6:7","memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":1015,"src":"4636:11:7","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}}],"id":1309,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4610:38:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint32_$_t_uint224_$","typeString":"tuple(bool,uint32,uint224)"}},"functionReturnParameters":1277,"id":1310,"nodeType":"Return","src":"4603:45:7"}]},"id":1312,"nodeType":"IfStatement","src":"4444:215:7","trueBody":{"id":1292,"nodeType":"Block","src":"4458:45:7","statements":[{"expression":{"components":[{"hexValue":"66616c7365","id":1287,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4480:5:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":1288,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4487:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"30","id":1289,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4490:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":1290,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"4479:13:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0,int_const 0)"}},"functionReturnParameters":1277,"id":1291,"nodeType":"Return","src":"4472:20:7"}]}}]},"documentation":{"id":1266,"nodeType":"StructuredDocumentation","src":"4078:168:7","text":" @dev Returns whether there is a checkpoint in the structure (i.e. it is not empty), and if so the key and value\n in the most recent checkpoint."},"id":1314,"implemented":true,"kind":"function","modifiers":[],"name":"latestCheckpoint","nameLocation":"4260:16:7","nodeType":"FunctionDefinition","parameters":{"id":1270,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1269,"mutability":"mutable","name":"self","nameLocation":"4302:4:7","nodeType":"VariableDeclaration","scope":1314,"src":"4286:20:7","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_History_$1011_storage_ptr","typeString":"struct CheckpointsUpgradeable.History"},"typeName":{"id":1268,"nodeType":"UserDefinedTypeName","pathNode":{"id":1267,"name":"History","nameLocations":["4286:7:7"],"nodeType":"IdentifierPath","referencedDeclaration":1011,"src":"4286:7:7"},"referencedDeclaration":1011,"src":"4286:7:7","typeDescriptions":{"typeIdentifier":"t_struct$_History_$1011_storage_ptr","typeString":"struct CheckpointsUpgradeable.History"}},"visibility":"internal"}],"src":"4276:36:7"},"returnParameters":{"id":1277,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1272,"mutability":"mutable","name":"exists","nameLocation":"4341:6:7","nodeType":"VariableDeclaration","scope":1314,"src":"4336:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1271,"name":"bool","nodeType":"ElementaryTypeName","src":"4336:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1274,"mutability":"mutable","name":"_blockNumber","nameLocation":"4356:12:7","nodeType":"VariableDeclaration","scope":1314,"src":"4349:19:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":1273,"name":"uint32","nodeType":"ElementaryTypeName","src":"4349:6:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":1276,"mutability":"mutable","name":"_value","nameLocation":"4378:6:7","nodeType":"VariableDeclaration","scope":1314,"src":"4370:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"},"typeName":{"id":1275,"name":"uint224","nodeType":"ElementaryTypeName","src":"4370:7:7","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"visibility":"internal"}],"src":"4335:50:7"},"scope":2542,"src":"4251:414:7","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":1327,"nodeType":"Block","src":"4803:48:7","statements":[{"expression":{"expression":{"expression":{"id":1323,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1318,"src":"4820:4:7","typeDescriptions":{"typeIdentifier":"t_struct$_History_$1011_storage_ptr","typeString":"struct CheckpointsUpgradeable.History storage pointer"}},"id":1324,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4825:12:7","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":1010,"src":"4820:17:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint_$1016_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint storage ref[] storage ref"}},"id":1325,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4838:6:7","memberName":"length","nodeType":"MemberAccess","src":"4820:24:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1322,"id":1326,"nodeType":"Return","src":"4813:31:7"}]},"documentation":{"id":1315,"nodeType":"StructuredDocumentation","src":"4671:57:7","text":" @dev Returns the number of checkpoint."},"id":1328,"implemented":true,"kind":"function","modifiers":[],"name":"length","nameLocation":"4742:6:7","nodeType":"FunctionDefinition","parameters":{"id":1319,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1318,"mutability":"mutable","name":"self","nameLocation":"4765:4:7","nodeType":"VariableDeclaration","scope":1328,"src":"4749:20:7","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_History_$1011_storage_ptr","typeString":"struct CheckpointsUpgradeable.History"},"typeName":{"id":1317,"nodeType":"UserDefinedTypeName","pathNode":{"id":1316,"name":"History","nameLocations":["4749:7:7"],"nodeType":"IdentifierPath","referencedDeclaration":1011,"src":"4749:7:7"},"referencedDeclaration":1011,"src":"4749:7:7","typeDescriptions":{"typeIdentifier":"t_struct$_History_$1011_storage_ptr","typeString":"struct CheckpointsUpgradeable.History"}},"visibility":"internal"}],"src":"4748:22:7"},"returnParameters":{"id":1322,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1321,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1328,"src":"4794:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1320,"name":"uint256","nodeType":"ElementaryTypeName","src":"4794:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4793:9:7"},"scope":2542,"src":"4733:118:7","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":1417,"nodeType":"Block","src":"5133:750:7","statements":[{"assignments":[1345],"declarations":[{"constant":false,"id":1345,"mutability":"mutable","name":"pos","nameLocation":"5151:3:7","nodeType":"VariableDeclaration","scope":1417,"src":"5143:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1344,"name":"uint256","nodeType":"ElementaryTypeName","src":"5143:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1348,"initialValue":{"expression":{"id":1346,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1333,"src":"5157:4:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint_$1016_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint storage ref[] storage pointer"}},"id":1347,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5162:6:7","memberName":"length","nodeType":"MemberAccess","src":"5157:11:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5143:25:7"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1351,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1349,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1345,"src":"5183:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1350,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5189:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5183:7:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1415,"nodeType":"Block","src":"5764:113:7","statements":[{"expression":{"arguments":[{"arguments":[{"id":1406,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1335,"src":"5814:3:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":1407,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1337,"src":"5827:5:7","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_uint224","typeString":"uint224"}],"id":1405,"name":"Checkpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1016,"src":"5788:10:7","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Checkpoint_$1016_storage_ptr_$","typeString":"type(struct CheckpointsUpgradeable.Checkpoint storage pointer)"}},"id":1408,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["5800:12:7","5819:6:7"],"names":["_blockNumber","_value"],"nodeType":"FunctionCall","src":"5788:46:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint_$1016_memory_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Checkpoint_$1016_memory_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint memory"}],"expression":{"id":1402,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1333,"src":"5778:4:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint_$1016_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint storage ref[] storage pointer"}},"id":1404,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5783:4:7","memberName":"push","nodeType":"MemberAccess","src":"5778:9:7","typeDescriptions":{"typeIdentifier":"t_function_arraypush_nonpayable$_t_array$_t_struct$_Checkpoint_$1016_storage_$dyn_storage_ptr_$_t_struct$_Checkpoint_$1016_storage_$returns$__$bound_to$_t_array$_t_struct$_Checkpoint_$1016_storage_$dyn_storage_ptr_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint storage ref[] storage pointer,struct CheckpointsUpgradeable.Checkpoint storage ref)"}},"id":1409,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5778:57:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1410,"nodeType":"ExpressionStatement","src":"5778:57:7"},{"expression":{"components":[{"hexValue":"30","id":1411,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5857:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":1412,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1337,"src":"5860:5:7","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}}],"id":1413,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5856:10:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_rational_0_by_1_$_t_uint224_$","typeString":"tuple(int_const 0,uint224)"}},"functionReturnParameters":1343,"id":1414,"nodeType":"Return","src":"5849:17:7"}]},"id":1416,"nodeType":"IfStatement","src":"5179:698:7","trueBody":{"id":1401,"nodeType":"Block","src":"5192:566:7","statements":[{"assignments":[1354],"declarations":[{"constant":false,"id":1354,"mutability":"mutable","name":"last","nameLocation":"5276:4:7","nodeType":"VariableDeclaration","scope":1401,"src":"5258:22:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint_$1016_memory_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint"},"typeName":{"id":1353,"nodeType":"UserDefinedTypeName","pathNode":{"id":1352,"name":"Checkpoint","nameLocations":["5258:10:7"],"nodeType":"IdentifierPath","referencedDeclaration":1016,"src":"5258:10:7"},"referencedDeclaration":1016,"src":"5258:10:7","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint_$1016_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint"}},"visibility":"internal"}],"id":1361,"initialValue":{"arguments":[{"id":1356,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1333,"src":"5297:4:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint_$1016_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint storage ref[] storage pointer"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1359,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1357,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1345,"src":"5303:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":1358,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5309:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"5303:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint_$1016_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint storage ref[] storage pointer"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1355,"name":"_unsafeAccess","nodeType":"Identifier","overloadedDeclarations":[1537,2039,2541],"referencedDeclaration":1537,"src":"5283:13:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_struct$_Checkpoint_$1016_storage_$dyn_storage_ptr_$_t_uint256_$returns$_t_struct$_Checkpoint_$1016_storage_ptr_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint storage ref[] storage pointer,uint256) pure returns (struct CheckpointsUpgradeable.Checkpoint storage pointer)"}},"id":1360,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5283:28:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint_$1016_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"5258:53:7"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":1366,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1363,"name":"last","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1354,"src":"5389:4:7","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint_$1016_memory_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint memory"}},"id":1364,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5394:12:7","memberName":"_blockNumber","nodeType":"MemberAccess","referencedDeclaration":1013,"src":"5389:17:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":1365,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1335,"src":"5410:3:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"5389:24:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"436865636b706f696e743a2064656372656173696e67206b657973","id":1367,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5415:29:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_4f6b1769383e9e01fad001f10d4f9180a25f63424c2597419936b157d29f34ec","typeString":"literal_string \"Checkpoint: decreasing keys\""},"value":"Checkpoint: decreasing keys"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_4f6b1769383e9e01fad001f10d4f9180a25f63424c2597419936b157d29f34ec","typeString":"literal_string \"Checkpoint: decreasing keys\""}],"id":1362,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"5381:7:7","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1368,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5381:64:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1369,"nodeType":"ExpressionStatement","src":"5381:64:7"},{"condition":{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":1373,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1370,"name":"last","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1354,"src":"5509:4:7","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint_$1016_memory_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint memory"}},"id":1371,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5514:12:7","memberName":"_blockNumber","nodeType":"MemberAccess","referencedDeclaration":1013,"src":"5509:17:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":1372,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1335,"src":"5530:3:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"5509:24:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1394,"nodeType":"Block","src":"5617:90:7","statements":[{"expression":{"arguments":[{"arguments":[{"id":1389,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1335,"src":"5671:3:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":1390,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1337,"src":"5684:5:7","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_uint224","typeString":"uint224"}],"id":1388,"name":"Checkpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1016,"src":"5645:10:7","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Checkpoint_$1016_storage_ptr_$","typeString":"type(struct CheckpointsUpgradeable.Checkpoint storage pointer)"}},"id":1391,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["5657:12:7","5676:6:7"],"names":["_blockNumber","_value"],"nodeType":"FunctionCall","src":"5645:46:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint_$1016_memory_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Checkpoint_$1016_memory_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint memory"}],"expression":{"id":1385,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1333,"src":"5635:4:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint_$1016_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint storage ref[] storage pointer"}},"id":1387,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5640:4:7","memberName":"push","nodeType":"MemberAccess","src":"5635:9:7","typeDescriptions":{"typeIdentifier":"t_function_arraypush_nonpayable$_t_array$_t_struct$_Checkpoint_$1016_storage_$dyn_storage_ptr_$_t_struct$_Checkpoint_$1016_storage_$returns$__$bound_to$_t_array$_t_struct$_Checkpoint_$1016_storage_$dyn_storage_ptr_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint storage ref[] storage pointer,struct CheckpointsUpgradeable.Checkpoint storage ref)"}},"id":1392,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5635:57:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1393,"nodeType":"ExpressionStatement","src":"5635:57:7"}]},"id":1395,"nodeType":"IfStatement","src":"5505:202:7","trueBody":{"id":1384,"nodeType":"Block","src":"5535:76:7","statements":[{"expression":{"id":1382,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[{"id":1375,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1333,"src":"5567:4:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint_$1016_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint storage ref[] storage pointer"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1378,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1376,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1345,"src":"5573:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":1377,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5579:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"5573:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint_$1016_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint storage ref[] storage pointer"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1374,"name":"_unsafeAccess","nodeType":"Identifier","overloadedDeclarations":[1537,2039,2541],"referencedDeclaration":1537,"src":"5553:13:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_struct$_Checkpoint_$1016_storage_$dyn_storage_ptr_$_t_uint256_$returns$_t_struct$_Checkpoint_$1016_storage_ptr_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint storage ref[] storage pointer,uint256) pure returns (struct CheckpointsUpgradeable.Checkpoint storage pointer)"}},"id":1379,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5553:28:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint_$1016_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint storage pointer"}},"id":1380,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5582:6:7","memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":1015,"src":"5553:35:7","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1381,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1337,"src":"5591:5:7","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"src":"5553:43:7","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"id":1383,"nodeType":"ExpressionStatement","src":"5553:43:7"}]}},{"expression":{"components":[{"expression":{"id":1396,"name":"last","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1354,"src":"5728:4:7","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint_$1016_memory_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint memory"}},"id":1397,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5733:6:7","memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":1015,"src":"5728:11:7","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},{"id":1398,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1337,"src":"5741:5:7","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}}],"id":1399,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5727:20:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint224_$_t_uint224_$","typeString":"tuple(uint224,uint224)"}},"functionReturnParameters":1343,"id":1400,"nodeType":"Return","src":"5720:27:7"}]}}]},"documentation":{"id":1329,"nodeType":"StructuredDocumentation","src":"4857:165:7","text":" @dev Pushes a (`key`, `value`) pair into an ordered list of checkpoints, either by inserting a new checkpoint,\n or by updating the last one."},"id":1418,"implemented":true,"kind":"function","modifiers":[],"name":"_insert","nameLocation":"5036:7:7","nodeType":"FunctionDefinition","parameters":{"id":1338,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1333,"mutability":"mutable","name":"self","nameLocation":"5065:4:7","nodeType":"VariableDeclaration","scope":1418,"src":"5044:25:7","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint_$1016_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint[]"},"typeName":{"baseType":{"id":1331,"nodeType":"UserDefinedTypeName","pathNode":{"id":1330,"name":"Checkpoint","nameLocations":["5044:10:7"],"nodeType":"IdentifierPath","referencedDeclaration":1016,"src":"5044:10:7"},"referencedDeclaration":1016,"src":"5044:10:7","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint_$1016_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint"}},"id":1332,"nodeType":"ArrayTypeName","src":"5044:12:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint_$1016_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint[]"}},"visibility":"internal"},{"constant":false,"id":1335,"mutability":"mutable","name":"key","nameLocation":"5078:3:7","nodeType":"VariableDeclaration","scope":1418,"src":"5071:10:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":1334,"name":"uint32","nodeType":"ElementaryTypeName","src":"5071:6:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":1337,"mutability":"mutable","name":"value","nameLocation":"5091:5:7","nodeType":"VariableDeclaration","scope":1418,"src":"5083:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"},"typeName":{"id":1336,"name":"uint224","nodeType":"ElementaryTypeName","src":"5083:7:7","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"visibility":"internal"}],"src":"5043:54:7"},"returnParameters":{"id":1343,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1340,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1418,"src":"5115:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"},"typeName":{"id":1339,"name":"uint224","nodeType":"ElementaryTypeName","src":"5115:7:7","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"visibility":"internal"},{"constant":false,"id":1342,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1418,"src":"5124:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"},"typeName":{"id":1341,"name":"uint224","nodeType":"ElementaryTypeName","src":"5124:7:7","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"visibility":"internal"}],"src":"5114:18:7"},"scope":2542,"src":"5027:856:7","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":1469,"nodeType":"Block","src":"6392:286:7","statements":[{"body":{"id":1465,"nodeType":"Block","src":"6421:230:7","statements":[{"assignments":[1438],"declarations":[{"constant":false,"id":1438,"mutability":"mutable","name":"mid","nameLocation":"6443:3:7","nodeType":"VariableDeclaration","scope":1465,"src":"6435:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1437,"name":"uint256","nodeType":"ElementaryTypeName","src":"6435:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1444,"initialValue":{"arguments":[{"id":1441,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1427,"src":"6473:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1442,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1429,"src":"6478:4:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1439,"name":"MathUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3700,"src":"6449:15:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_MathUpgradeable_$3700_$","typeString":"type(library MathUpgradeable)"}},"id":1440,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6465:7:7","memberName":"average","nodeType":"MemberAccess","referencedDeclaration":2900,"src":"6449:23:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":1443,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6449:34:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6435:48:7"},{"condition":{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":1451,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":1446,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1423,"src":"6515:4:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint_$1016_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint storage ref[] storage pointer"}},{"id":1447,"name":"mid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1438,"src":"6521:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint_$1016_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint storage ref[] storage pointer"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1445,"name":"_unsafeAccess","nodeType":"Identifier","overloadedDeclarations":[1537,2039,2541],"referencedDeclaration":1537,"src":"6501:13:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_struct$_Checkpoint_$1016_storage_$dyn_storage_ptr_$_t_uint256_$returns$_t_struct$_Checkpoint_$1016_storage_ptr_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint storage ref[] storage pointer,uint256) pure returns (struct CheckpointsUpgradeable.Checkpoint storage pointer)"}},"id":1448,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6501:24:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint_$1016_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint storage pointer"}},"id":1449,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6526:12:7","memberName":"_blockNumber","nodeType":"MemberAccess","referencedDeclaration":1013,"src":"6501:37:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":1450,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1425,"src":"6541:3:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"6501:43:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1463,"nodeType":"Block","src":"6595:46:7","statements":[{"expression":{"id":1461,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1457,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1427,"src":"6613:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1460,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1458,"name":"mid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1438,"src":"6619:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1459,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6625:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"6619:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6613:13:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1462,"nodeType":"ExpressionStatement","src":"6613:13:7"}]},"id":1464,"nodeType":"IfStatement","src":"6497:144:7","trueBody":{"id":1456,"nodeType":"Block","src":"6546:43:7","statements":[{"expression":{"id":1454,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1452,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1429,"src":"6564:4:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1453,"name":"mid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1438,"src":"6571:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6564:10:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1455,"nodeType":"ExpressionStatement","src":"6564:10:7"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1436,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1434,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1427,"src":"6409:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1435,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1429,"src":"6415:4:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6409:10:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1466,"nodeType":"WhileStatement","src":"6402:249:7"},{"expression":{"id":1467,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1429,"src":"6667:4:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1433,"id":1468,"nodeType":"Return","src":"6660:11:7"}]},"documentation":{"id":1419,"nodeType":"StructuredDocumentation","src":"5889:335:7","text":" @dev Return the index of the last (most recent) checkpoint with key lower or equal than the search key, or `high` if there is none.\n `low` and `high` define a section where to do the search, with inclusive `low` and exclusive `high`.\n WARNING: `high` should not be greater than the array's length."},"id":1470,"implemented":true,"kind":"function","modifiers":[],"name":"_upperBinaryLookup","nameLocation":"6238:18:7","nodeType":"FunctionDefinition","parameters":{"id":1430,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1423,"mutability":"mutable","name":"self","nameLocation":"6287:4:7","nodeType":"VariableDeclaration","scope":1470,"src":"6266:25:7","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint_$1016_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint[]"},"typeName":{"baseType":{"id":1421,"nodeType":"UserDefinedTypeName","pathNode":{"id":1420,"name":"Checkpoint","nameLocations":["6266:10:7"],"nodeType":"IdentifierPath","referencedDeclaration":1016,"src":"6266:10:7"},"referencedDeclaration":1016,"src":"6266:10:7","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint_$1016_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint"}},"id":1422,"nodeType":"ArrayTypeName","src":"6266:12:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint_$1016_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint[]"}},"visibility":"internal"},{"constant":false,"id":1425,"mutability":"mutable","name":"key","nameLocation":"6308:3:7","nodeType":"VariableDeclaration","scope":1470,"src":"6301:10:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":1424,"name":"uint32","nodeType":"ElementaryTypeName","src":"6301:6:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":1427,"mutability":"mutable","name":"low","nameLocation":"6329:3:7","nodeType":"VariableDeclaration","scope":1470,"src":"6321:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1426,"name":"uint256","nodeType":"ElementaryTypeName","src":"6321:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1429,"mutability":"mutable","name":"high","nameLocation":"6350:4:7","nodeType":"VariableDeclaration","scope":1470,"src":"6342:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1428,"name":"uint256","nodeType":"ElementaryTypeName","src":"6342:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6256:104:7"},"returnParameters":{"id":1433,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1432,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1470,"src":"6383:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1431,"name":"uint256","nodeType":"ElementaryTypeName","src":"6383:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6382:9:7"},"scope":2542,"src":"6229:449:7","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":1521,"nodeType":"Block","src":"7188:286:7","statements":[{"body":{"id":1517,"nodeType":"Block","src":"7217:230:7","statements":[{"assignments":[1490],"declarations":[{"constant":false,"id":1490,"mutability":"mutable","name":"mid","nameLocation":"7239:3:7","nodeType":"VariableDeclaration","scope":1517,"src":"7231:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1489,"name":"uint256","nodeType":"ElementaryTypeName","src":"7231:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1496,"initialValue":{"arguments":[{"id":1493,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1479,"src":"7269:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1494,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1481,"src":"7274:4:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1491,"name":"MathUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3700,"src":"7245:15:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_MathUpgradeable_$3700_$","typeString":"type(library MathUpgradeable)"}},"id":1492,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7261:7:7","memberName":"average","nodeType":"MemberAccess","referencedDeclaration":2900,"src":"7245:23:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":1495,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7245:34:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7231:48:7"},{"condition":{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":1503,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":1498,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1475,"src":"7311:4:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint_$1016_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint storage ref[] storage pointer"}},{"id":1499,"name":"mid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1490,"src":"7317:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint_$1016_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint storage ref[] storage pointer"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1497,"name":"_unsafeAccess","nodeType":"Identifier","overloadedDeclarations":[1537,2039,2541],"referencedDeclaration":1537,"src":"7297:13:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_struct$_Checkpoint_$1016_storage_$dyn_storage_ptr_$_t_uint256_$returns$_t_struct$_Checkpoint_$1016_storage_ptr_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint storage ref[] storage pointer,uint256) pure returns (struct CheckpointsUpgradeable.Checkpoint storage pointer)"}},"id":1500,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7297:24:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint_$1016_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint storage pointer"}},"id":1501,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7322:12:7","memberName":"_blockNumber","nodeType":"MemberAccess","referencedDeclaration":1013,"src":"7297:37:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1502,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1477,"src":"7337:3:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"7297:43:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1515,"nodeType":"Block","src":"7394:43:7","statements":[{"expression":{"id":1513,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1511,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1481,"src":"7412:4:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1512,"name":"mid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1490,"src":"7419:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7412:10:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1514,"nodeType":"ExpressionStatement","src":"7412:10:7"}]},"id":1516,"nodeType":"IfStatement","src":"7293:144:7","trueBody":{"id":1510,"nodeType":"Block","src":"7342:46:7","statements":[{"expression":{"id":1508,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1504,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1479,"src":"7360:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1507,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1505,"name":"mid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1490,"src":"7366:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1506,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7372:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7366:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7360:13:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1509,"nodeType":"ExpressionStatement","src":"7360:13:7"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1488,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1486,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1479,"src":"7205:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1487,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1481,"src":"7211:4:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7205:10:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1518,"nodeType":"WhileStatement","src":"7198:249:7"},{"expression":{"id":1519,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1481,"src":"7463:4:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1485,"id":1520,"nodeType":"Return","src":"7456:11:7"}]},"documentation":{"id":1471,"nodeType":"StructuredDocumentation","src":"6684:336:7","text":" @dev Return the index of the first (oldest) checkpoint with key is greater or equal than the search key, or `high` if there is none.\n `low` and `high` define a section where to do the search, with inclusive `low` and exclusive `high`.\n WARNING: `high` should not be greater than the array's length."},"id":1522,"implemented":true,"kind":"function","modifiers":[],"name":"_lowerBinaryLookup","nameLocation":"7034:18:7","nodeType":"FunctionDefinition","parameters":{"id":1482,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1475,"mutability":"mutable","name":"self","nameLocation":"7083:4:7","nodeType":"VariableDeclaration","scope":1522,"src":"7062:25:7","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint_$1016_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint[]"},"typeName":{"baseType":{"id":1473,"nodeType":"UserDefinedTypeName","pathNode":{"id":1472,"name":"Checkpoint","nameLocations":["7062:10:7"],"nodeType":"IdentifierPath","referencedDeclaration":1016,"src":"7062:10:7"},"referencedDeclaration":1016,"src":"7062:10:7","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint_$1016_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint"}},"id":1474,"nodeType":"ArrayTypeName","src":"7062:12:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint_$1016_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint[]"}},"visibility":"internal"},{"constant":false,"id":1477,"mutability":"mutable","name":"key","nameLocation":"7104:3:7","nodeType":"VariableDeclaration","scope":1522,"src":"7097:10:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":1476,"name":"uint32","nodeType":"ElementaryTypeName","src":"7097:6:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":1479,"mutability":"mutable","name":"low","nameLocation":"7125:3:7","nodeType":"VariableDeclaration","scope":1522,"src":"7117:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1478,"name":"uint256","nodeType":"ElementaryTypeName","src":"7117:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1481,"mutability":"mutable","name":"high","nameLocation":"7146:4:7","nodeType":"VariableDeclaration","scope":1522,"src":"7138:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1480,"name":"uint256","nodeType":"ElementaryTypeName","src":"7138:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7052:104:7"},"returnParameters":{"id":1485,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1484,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1522,"src":"7179:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1483,"name":"uint256","nodeType":"ElementaryTypeName","src":"7179:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7178:9:7"},"scope":2542,"src":"7025:449:7","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":1536,"nodeType":"Block","src":"7729:125:7","statements":[{"AST":{"nodeType":"YulBlock","src":"7748:100:7","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7769:1:7","type":"","value":"0"},{"name":"self.slot","nodeType":"YulIdentifier","src":"7772:9:7"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7762:6:7"},"nodeType":"YulFunctionCall","src":"7762:20:7"},"nodeType":"YulExpressionStatement","src":"7762:20:7"},{"nodeType":"YulAssignment","src":"7795:43:7","value":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7824:1:7","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7827:4:7","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nodeType":"YulIdentifier","src":"7814:9:7"},"nodeType":"YulFunctionCall","src":"7814:18:7"},{"name":"pos","nodeType":"YulIdentifier","src":"7834:3:7"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7810:3:7"},"nodeType":"YulFunctionCall","src":"7810:28:7"},"variableNames":[{"name":"result.slot","nodeType":"YulIdentifier","src":"7795:11:7"}]}]},"evmVersion":"london","externalReferences":[{"declaration":1529,"isOffset":false,"isSlot":false,"src":"7834:3:7","valueSize":1},{"declaration":1533,"isOffset":false,"isSlot":true,"src":"7795:11:7","suffix":"slot","valueSize":1},{"declaration":1527,"isOffset":false,"isSlot":true,"src":"7772:9:7","suffix":"slot","valueSize":1}],"id":1535,"nodeType":"InlineAssembly","src":"7739:109:7"}]},"documentation":{"id":1523,"nodeType":"StructuredDocumentation","src":"7480:132:7","text":" @dev Access an element of the array without performing bounds check. The position is assumed to be within bounds."},"id":1537,"implemented":true,"kind":"function","modifiers":[],"name":"_unsafeAccess","nameLocation":"7626:13:7","nodeType":"FunctionDefinition","parameters":{"id":1530,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1527,"mutability":"mutable","name":"self","nameLocation":"7661:4:7","nodeType":"VariableDeclaration","scope":1537,"src":"7640:25:7","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint_$1016_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint[]"},"typeName":{"baseType":{"id":1525,"nodeType":"UserDefinedTypeName","pathNode":{"id":1524,"name":"Checkpoint","nameLocations":["7640:10:7"],"nodeType":"IdentifierPath","referencedDeclaration":1016,"src":"7640:10:7"},"referencedDeclaration":1016,"src":"7640:10:7","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint_$1016_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint"}},"id":1526,"nodeType":"ArrayTypeName","src":"7640:12:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint_$1016_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint[]"}},"visibility":"internal"},{"constant":false,"id":1529,"mutability":"mutable","name":"pos","nameLocation":"7675:3:7","nodeType":"VariableDeclaration","scope":1537,"src":"7667:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1528,"name":"uint256","nodeType":"ElementaryTypeName","src":"7667:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7639:40:7"},"returnParameters":{"id":1534,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1533,"mutability":"mutable","name":"result","nameLocation":"7721:6:7","nodeType":"VariableDeclaration","scope":1537,"src":"7702:25:7","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint_$1016_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint"},"typeName":{"id":1532,"nodeType":"UserDefinedTypeName","pathNode":{"id":1531,"name":"Checkpoint","nameLocations":["7702:10:7"],"nodeType":"IdentifierPath","referencedDeclaration":1016,"src":"7702:10:7"},"referencedDeclaration":1016,"src":"7702:10:7","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint_$1016_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint"}},"visibility":"internal"}],"src":"7701:27:7"},"scope":2542,"src":"7617:237:7","stateMutability":"pure","virtual":false,"visibility":"private"},{"canonicalName":"CheckpointsUpgradeable.Trace224","id":1542,"members":[{"constant":false,"id":1541,"mutability":"mutable","name":"_checkpoints","nameLocation":"7902:12:7","nodeType":"VariableDeclaration","scope":1542,"src":"7886:28:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224[]"},"typeName":{"baseType":{"id":1539,"nodeType":"UserDefinedTypeName","pathNode":{"id":1538,"name":"Checkpoint224","nameLocations":["7886:13:7"],"nodeType":"IdentifierPath","referencedDeclaration":1547,"src":"7886:13:7"},"referencedDeclaration":1547,"src":"7886:13:7","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint224_$1547_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224"}},"id":1540,"nodeType":"ArrayTypeName","src":"7886:15:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224[]"}},"visibility":"internal"}],"name":"Trace224","nameLocation":"7867:8:7","nodeType":"StructDefinition","scope":2542,"src":"7860:61:7","visibility":"public"},{"canonicalName":"CheckpointsUpgradeable.Checkpoint224","id":1547,"members":[{"constant":false,"id":1544,"mutability":"mutable","name":"_key","nameLocation":"7965:4:7","nodeType":"VariableDeclaration","scope":1547,"src":"7958:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":1543,"name":"uint32","nodeType":"ElementaryTypeName","src":"7958:6:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":1546,"mutability":"mutable","name":"_value","nameLocation":"7987:6:7","nodeType":"VariableDeclaration","scope":1547,"src":"7979:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"},"typeName":{"id":1545,"name":"uint224","nodeType":"ElementaryTypeName","src":"7979:7:7","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"visibility":"internal"}],"name":"Checkpoint224","nameLocation":"7934:13:7","nodeType":"StructDefinition","scope":2542,"src":"7927:73:7","visibility":"public"},{"body":{"id":1569,"nodeType":"Block","src":"8273:62:7","statements":[{"expression":{"arguments":[{"expression":{"id":1563,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1551,"src":"8298:4:7","typeDescriptions":{"typeIdentifier":"t_struct$_Trace224_$1542_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace224 storage pointer"}},"id":1564,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8303:12:7","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":1541,"src":"8298:17:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage ref"}},{"id":1565,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1553,"src":"8317:3:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":1566,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1555,"src":"8322:5:7","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage ref"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_uint224","typeString":"uint224"}],"id":1562,"name":"_insert","nodeType":"Identifier","overloadedDeclarations":[1418,1920,2422],"referencedDeclaration":1920,"src":"8290:7:7","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage_ptr_$_t_uint32_$_t_uint224_$returns$_t_uint224_$_t_uint224_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage pointer,uint32,uint224) returns (uint224,uint224)"}},"id":1567,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8290:38:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint224_$_t_uint224_$","typeString":"tuple(uint224,uint224)"}},"functionReturnParameters":1561,"id":1568,"nodeType":"Return","src":"8283:45:7"}]},"documentation":{"id":1548,"nodeType":"StructuredDocumentation","src":"8006:162:7","text":" @dev Pushes a (`key`, `value`) pair into a Trace224 so that it is stored as the checkpoint.\n Returns previous value and new value."},"id":1570,"implemented":true,"kind":"function","modifiers":[],"name":"push","nameLocation":"8182:4:7","nodeType":"FunctionDefinition","parameters":{"id":1556,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1551,"mutability":"mutable","name":"self","nameLocation":"8204:4:7","nodeType":"VariableDeclaration","scope":1570,"src":"8187:21:7","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Trace224_$1542_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace224"},"typeName":{"id":1550,"nodeType":"UserDefinedTypeName","pathNode":{"id":1549,"name":"Trace224","nameLocations":["8187:8:7"],"nodeType":"IdentifierPath","referencedDeclaration":1542,"src":"8187:8:7"},"referencedDeclaration":1542,"src":"8187:8:7","typeDescriptions":{"typeIdentifier":"t_struct$_Trace224_$1542_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace224"}},"visibility":"internal"},{"constant":false,"id":1553,"mutability":"mutable","name":"key","nameLocation":"8217:3:7","nodeType":"VariableDeclaration","scope":1570,"src":"8210:10:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":1552,"name":"uint32","nodeType":"ElementaryTypeName","src":"8210:6:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":1555,"mutability":"mutable","name":"value","nameLocation":"8230:5:7","nodeType":"VariableDeclaration","scope":1570,"src":"8222:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"},"typeName":{"id":1554,"name":"uint224","nodeType":"ElementaryTypeName","src":"8222:7:7","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"visibility":"internal"}],"src":"8186:50:7"},"returnParameters":{"id":1561,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1558,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1570,"src":"8255:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"},"typeName":{"id":1557,"name":"uint224","nodeType":"ElementaryTypeName","src":"8255:7:7","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"visibility":"internal"},{"constant":false,"id":1560,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1570,"src":"8264:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"},"typeName":{"id":1559,"name":"uint224","nodeType":"ElementaryTypeName","src":"8264:7:7","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"visibility":"internal"}],"src":"8254:18:7"},"scope":2542,"src":"8173:162:7","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1609,"nodeType":"Block","src":"8581:207:7","statements":[{"assignments":[1582],"declarations":[{"constant":false,"id":1582,"mutability":"mutable","name":"len","nameLocation":"8599:3:7","nodeType":"VariableDeclaration","scope":1609,"src":"8591:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1581,"name":"uint256","nodeType":"ElementaryTypeName","src":"8591:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1586,"initialValue":{"expression":{"expression":{"id":1583,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1574,"src":"8605:4:7","typeDescriptions":{"typeIdentifier":"t_struct$_Trace224_$1542_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace224 storage pointer"}},"id":1584,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8610:12:7","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":1541,"src":"8605:17:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage ref"}},"id":1585,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8623:6:7","memberName":"length","nodeType":"MemberAccess","src":"8605:24:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8591:38:7"},{"assignments":[1588],"declarations":[{"constant":false,"id":1588,"mutability":"mutable","name":"pos","nameLocation":"8647:3:7","nodeType":"VariableDeclaration","scope":1609,"src":"8639:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1587,"name":"uint256","nodeType":"ElementaryTypeName","src":"8639:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1596,"initialValue":{"arguments":[{"expression":{"id":1590,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1574,"src":"8672:4:7","typeDescriptions":{"typeIdentifier":"t_struct$_Trace224_$1542_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace224 storage pointer"}},"id":1591,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8677:12:7","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":1541,"src":"8672:17:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage ref"}},{"id":1592,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1576,"src":"8691:3:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"hexValue":"30","id":1593,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8696:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":1594,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1582,"src":"8699:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage ref"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1589,"name":"_lowerBinaryLookup","nodeType":"Identifier","overloadedDeclarations":[1522,2024,2526],"referencedDeclaration":2024,"src":"8653:18:7","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage_ptr_$_t_uint32_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage pointer,uint32,uint256,uint256) view returns (uint256)"}},"id":1595,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8653:50:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8639:64:7"},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1599,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1597,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1588,"src":"8720:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":1598,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1582,"src":"8727:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8720:10:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"expression":{"arguments":[{"expression":{"id":1602,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1574,"src":"8751:4:7","typeDescriptions":{"typeIdentifier":"t_struct$_Trace224_$1542_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace224 storage pointer"}},"id":1603,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8756:12:7","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":1541,"src":"8751:17:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage ref"}},{"id":1604,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1588,"src":"8770:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage ref"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1601,"name":"_unsafeAccess","nodeType":"Identifier","overloadedDeclarations":[1537,2039,2541],"referencedDeclaration":2039,"src":"8737:13:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage_ptr_$_t_uint256_$returns$_t_struct$_Checkpoint224_$1547_storage_ptr_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage pointer,uint256) pure returns (struct CheckpointsUpgradeable.Checkpoint224 storage pointer)"}},"id":1605,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8737:37:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint224_$1547_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage pointer"}},"id":1606,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8775:6:7","memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":1546,"src":"8737:44:7","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"id":1607,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"8720:61:7","trueExpression":{"hexValue":"30","id":1600,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8733:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"functionReturnParameters":1580,"id":1608,"nodeType":"Return","src":"8713:68:7"}]},"documentation":{"id":1571,"nodeType":"StructuredDocumentation","src":"8341:147:7","text":" @dev Returns the value in the first (oldest) checkpoint with key greater or equal than the search key, or zero if there is none."},"id":1610,"implemented":true,"kind":"function","modifiers":[],"name":"lowerLookup","nameLocation":"8502:11:7","nodeType":"FunctionDefinition","parameters":{"id":1577,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1574,"mutability":"mutable","name":"self","nameLocation":"8531:4:7","nodeType":"VariableDeclaration","scope":1610,"src":"8514:21:7","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Trace224_$1542_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace224"},"typeName":{"id":1573,"nodeType":"UserDefinedTypeName","pathNode":{"id":1572,"name":"Trace224","nameLocations":["8514:8:7"],"nodeType":"IdentifierPath","referencedDeclaration":1542,"src":"8514:8:7"},"referencedDeclaration":1542,"src":"8514:8:7","typeDescriptions":{"typeIdentifier":"t_struct$_Trace224_$1542_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace224"}},"visibility":"internal"},{"constant":false,"id":1576,"mutability":"mutable","name":"key","nameLocation":"8544:3:7","nodeType":"VariableDeclaration","scope":1610,"src":"8537:10:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":1575,"name":"uint32","nodeType":"ElementaryTypeName","src":"8537:6:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"8513:35:7"},"returnParameters":{"id":1580,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1579,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1610,"src":"8572:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"},"typeName":{"id":1578,"name":"uint224","nodeType":"ElementaryTypeName","src":"8572:7:7","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"visibility":"internal"}],"src":"8571:9:7"},"scope":2542,"src":"8493:295:7","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":1651,"nodeType":"Block","src":"9036:209:7","statements":[{"assignments":[1622],"declarations":[{"constant":false,"id":1622,"mutability":"mutable","name":"len","nameLocation":"9054:3:7","nodeType":"VariableDeclaration","scope":1651,"src":"9046:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1621,"name":"uint256","nodeType":"ElementaryTypeName","src":"9046:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1626,"initialValue":{"expression":{"expression":{"id":1623,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1614,"src":"9060:4:7","typeDescriptions":{"typeIdentifier":"t_struct$_Trace224_$1542_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace224 storage pointer"}},"id":1624,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9065:12:7","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":1541,"src":"9060:17:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage ref"}},"id":1625,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9078:6:7","memberName":"length","nodeType":"MemberAccess","src":"9060:24:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9046:38:7"},{"assignments":[1628],"declarations":[{"constant":false,"id":1628,"mutability":"mutable","name":"pos","nameLocation":"9102:3:7","nodeType":"VariableDeclaration","scope":1651,"src":"9094:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1627,"name":"uint256","nodeType":"ElementaryTypeName","src":"9094:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1636,"initialValue":{"arguments":[{"expression":{"id":1630,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1614,"src":"9127:4:7","typeDescriptions":{"typeIdentifier":"t_struct$_Trace224_$1542_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace224 storage pointer"}},"id":1631,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9132:12:7","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":1541,"src":"9127:17:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage ref"}},{"id":1632,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1616,"src":"9146:3:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"hexValue":"30","id":1633,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9151:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":1634,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1622,"src":"9154:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage ref"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1629,"name":"_upperBinaryLookup","nodeType":"Identifier","overloadedDeclarations":[1470,1972,2474],"referencedDeclaration":1972,"src":"9108:18:7","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage_ptr_$_t_uint32_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage pointer,uint32,uint256,uint256) view returns (uint256)"}},"id":1635,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9108:50:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9094:64:7"},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1639,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1637,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1628,"src":"9175:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1638,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9182:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9175:8:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"expression":{"arguments":[{"expression":{"id":1642,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1614,"src":"9204:4:7","typeDescriptions":{"typeIdentifier":"t_struct$_Trace224_$1542_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace224 storage pointer"}},"id":1643,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9209:12:7","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":1541,"src":"9204:17:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage ref"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1646,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1644,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1628,"src":"9223:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":1645,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9229:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9223:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage ref"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1641,"name":"_unsafeAccess","nodeType":"Identifier","overloadedDeclarations":[1537,2039,2541],"referencedDeclaration":2039,"src":"9190:13:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage_ptr_$_t_uint256_$returns$_t_struct$_Checkpoint224_$1547_storage_ptr_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage pointer,uint256) pure returns (struct CheckpointsUpgradeable.Checkpoint224 storage pointer)"}},"id":1647,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9190:41:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint224_$1547_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage pointer"}},"id":1648,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9232:6:7","memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":1546,"src":"9190:48:7","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"id":1649,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"9175:63:7","trueExpression":{"hexValue":"30","id":1640,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9186:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"functionReturnParameters":1620,"id":1650,"nodeType":"Return","src":"9168:70:7"}]},"documentation":{"id":1611,"nodeType":"StructuredDocumentation","src":"8794:149:7","text":" @dev Returns the value in the last (most recent) checkpoint with key lower or equal than the search key, or zero if there is none."},"id":1652,"implemented":true,"kind":"function","modifiers":[],"name":"upperLookup","nameLocation":"8957:11:7","nodeType":"FunctionDefinition","parameters":{"id":1617,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1614,"mutability":"mutable","name":"self","nameLocation":"8986:4:7","nodeType":"VariableDeclaration","scope":1652,"src":"8969:21:7","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Trace224_$1542_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace224"},"typeName":{"id":1613,"nodeType":"UserDefinedTypeName","pathNode":{"id":1612,"name":"Trace224","nameLocations":["8969:8:7"],"nodeType":"IdentifierPath","referencedDeclaration":1542,"src":"8969:8:7"},"referencedDeclaration":1542,"src":"8969:8:7","typeDescriptions":{"typeIdentifier":"t_struct$_Trace224_$1542_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace224"}},"visibility":"internal"},{"constant":false,"id":1616,"mutability":"mutable","name":"key","nameLocation":"8999:3:7","nodeType":"VariableDeclaration","scope":1652,"src":"8992:10:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":1615,"name":"uint32","nodeType":"ElementaryTypeName","src":"8992:6:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"8968:35:7"},"returnParameters":{"id":1620,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1619,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1652,"src":"9027:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"},"typeName":{"id":1618,"name":"uint224","nodeType":"ElementaryTypeName","src":"9027:7:7","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"visibility":"internal"}],"src":"9026:9:7"},"scope":2542,"src":"8948:297:7","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":1736,"nodeType":"Block","src":"9630:523:7","statements":[{"assignments":[1664],"declarations":[{"constant":false,"id":1664,"mutability":"mutable","name":"len","nameLocation":"9648:3:7","nodeType":"VariableDeclaration","scope":1736,"src":"9640:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1663,"name":"uint256","nodeType":"ElementaryTypeName","src":"9640:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1668,"initialValue":{"expression":{"expression":{"id":1665,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1656,"src":"9654:4:7","typeDescriptions":{"typeIdentifier":"t_struct$_Trace224_$1542_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace224 storage pointer"}},"id":1666,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9659:12:7","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":1541,"src":"9654:17:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage ref"}},"id":1667,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9672:6:7","memberName":"length","nodeType":"MemberAccess","src":"9654:24:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9640:38:7"},{"assignments":[1670],"declarations":[{"constant":false,"id":1670,"mutability":"mutable","name":"low","nameLocation":"9697:3:7","nodeType":"VariableDeclaration","scope":1736,"src":"9689:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1669,"name":"uint256","nodeType":"ElementaryTypeName","src":"9689:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1672,"initialValue":{"hexValue":"30","id":1671,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9703:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"9689:15:7"},{"assignments":[1674],"declarations":[{"constant":false,"id":1674,"mutability":"mutable","name":"high","nameLocation":"9722:4:7","nodeType":"VariableDeclaration","scope":1736,"src":"9714:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1673,"name":"uint256","nodeType":"ElementaryTypeName","src":"9714:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1676,"initialValue":{"id":1675,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1664,"src":"9729:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9714:18:7"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1679,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1677,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1664,"src":"9747:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"35","id":1678,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9753:1:7","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"src":"9747:7:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1711,"nodeType":"IfStatement","src":"9743:245:7","trueBody":{"id":1710,"nodeType":"Block","src":"9756:232:7","statements":[{"assignments":[1681],"declarations":[{"constant":false,"id":1681,"mutability":"mutable","name":"mid","nameLocation":"9778:3:7","nodeType":"VariableDeclaration","scope":1710,"src":"9770:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1680,"name":"uint256","nodeType":"ElementaryTypeName","src":"9770:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1688,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1687,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1682,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1664,"src":"9784:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[{"id":1685,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1664,"src":"9811:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1683,"name":"MathUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3700,"src":"9790:15:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_MathUpgradeable_$3700_$","typeString":"type(library MathUpgradeable)"}},"id":1684,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9806:4:7","memberName":"sqrt","nodeType":"MemberAccess","referencedDeclaration":3204,"src":"9790:20:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1686,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9790:25:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9784:31:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9770:45:7"},{"condition":{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":1696,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1689,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1658,"src":"9833:3:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"arguments":[{"expression":{"id":1691,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1656,"src":"9853:4:7","typeDescriptions":{"typeIdentifier":"t_struct$_Trace224_$1542_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace224 storage pointer"}},"id":1692,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9858:12:7","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":1541,"src":"9853:17:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage ref"}},{"id":1693,"name":"mid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1681,"src":"9872:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage ref"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1690,"name":"_unsafeAccess","nodeType":"Identifier","overloadedDeclarations":[1537,2039,2541],"referencedDeclaration":2039,"src":"9839:13:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage_ptr_$_t_uint256_$returns$_t_struct$_Checkpoint224_$1547_storage_ptr_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage pointer,uint256) pure returns (struct CheckpointsUpgradeable.Checkpoint224 storage pointer)"}},"id":1694,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9839:37:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint224_$1547_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage pointer"}},"id":1695,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9877:4:7","memberName":"_key","nodeType":"MemberAccess","referencedDeclaration":1544,"src":"9839:42:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"9833:48:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1708,"nodeType":"Block","src":"9932:46:7","statements":[{"expression":{"id":1706,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1702,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1670,"src":"9950:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1705,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1703,"name":"mid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1681,"src":"9956:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1704,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9962:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9956:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9950:13:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1707,"nodeType":"ExpressionStatement","src":"9950:13:7"}]},"id":1709,"nodeType":"IfStatement","src":"9829:149:7","trueBody":{"id":1701,"nodeType":"Block","src":"9883:43:7","statements":[{"expression":{"id":1699,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1697,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1674,"src":"9901:4:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1698,"name":"mid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1681,"src":"9908:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9901:10:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1700,"nodeType":"ExpressionStatement","src":"9901:10:7"}]}}]}},{"assignments":[1713],"declarations":[{"constant":false,"id":1713,"mutability":"mutable","name":"pos","nameLocation":"10006:3:7","nodeType":"VariableDeclaration","scope":1736,"src":"9998:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1712,"name":"uint256","nodeType":"ElementaryTypeName","src":"9998:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1721,"initialValue":{"arguments":[{"expression":{"id":1715,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1656,"src":"10031:4:7","typeDescriptions":{"typeIdentifier":"t_struct$_Trace224_$1542_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace224 storage pointer"}},"id":1716,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10036:12:7","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":1541,"src":"10031:17:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage ref"}},{"id":1717,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1658,"src":"10050:3:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":1718,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1670,"src":"10055:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1719,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1674,"src":"10060:4:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage ref"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1714,"name":"_upperBinaryLookup","nodeType":"Identifier","overloadedDeclarations":[1470,1972,2474],"referencedDeclaration":1972,"src":"10012:18:7","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage_ptr_$_t_uint32_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage pointer,uint32,uint256,uint256) view returns (uint256)"}},"id":1720,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10012:53:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9998:67:7"},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1724,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1722,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1713,"src":"10083:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1723,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10090:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"10083:8:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"expression":{"arguments":[{"expression":{"id":1727,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1656,"src":"10112:4:7","typeDescriptions":{"typeIdentifier":"t_struct$_Trace224_$1542_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace224 storage pointer"}},"id":1728,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10117:12:7","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":1541,"src":"10112:17:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage ref"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1731,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1729,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1713,"src":"10131:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":1730,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10137:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"10131:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage ref"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1726,"name":"_unsafeAccess","nodeType":"Identifier","overloadedDeclarations":[1537,2039,2541],"referencedDeclaration":2039,"src":"10098:13:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage_ptr_$_t_uint256_$returns$_t_struct$_Checkpoint224_$1547_storage_ptr_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage pointer,uint256) pure returns (struct CheckpointsUpgradeable.Checkpoint224 storage pointer)"}},"id":1732,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10098:41:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint224_$1547_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage pointer"}},"id":1733,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10140:6:7","memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":1546,"src":"10098:48:7","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"id":1734,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"10083:63:7","trueExpression":{"hexValue":"30","id":1725,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10094:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"functionReturnParameters":1662,"id":1735,"nodeType":"Return","src":"10076:70:7"}]},"documentation":{"id":1653,"nodeType":"StructuredDocumentation","src":"9251:280:7","text":" @dev Returns the value in the last (most recent) checkpoint with key lower or equal than the search key, or zero if there is none.\n NOTE: This is a variant of {upperLookup} that is optimised to find \"recent\" checkpoint (checkpoints with high keys)."},"id":1737,"implemented":true,"kind":"function","modifiers":[],"name":"upperLookupRecent","nameLocation":"9545:17:7","nodeType":"FunctionDefinition","parameters":{"id":1659,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1656,"mutability":"mutable","name":"self","nameLocation":"9580:4:7","nodeType":"VariableDeclaration","scope":1737,"src":"9563:21:7","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Trace224_$1542_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace224"},"typeName":{"id":1655,"nodeType":"UserDefinedTypeName","pathNode":{"id":1654,"name":"Trace224","nameLocations":["9563:8:7"],"nodeType":"IdentifierPath","referencedDeclaration":1542,"src":"9563:8:7"},"referencedDeclaration":1542,"src":"9563:8:7","typeDescriptions":{"typeIdentifier":"t_struct$_Trace224_$1542_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace224"}},"visibility":"internal"},{"constant":false,"id":1658,"mutability":"mutable","name":"key","nameLocation":"9593:3:7","nodeType":"VariableDeclaration","scope":1737,"src":"9586:10:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":1657,"name":"uint32","nodeType":"ElementaryTypeName","src":"9586:6:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"9562:35:7"},"returnParameters":{"id":1662,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1661,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1737,"src":"9621:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"},"typeName":{"id":1660,"name":"uint224","nodeType":"ElementaryTypeName","src":"9621:7:7","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"visibility":"internal"}],"src":"9620:9:7"},"scope":2542,"src":"9536:617:7","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":1766,"nodeType":"Block","src":"10344:135:7","statements":[{"assignments":[1747],"declarations":[{"constant":false,"id":1747,"mutability":"mutable","name":"pos","nameLocation":"10362:3:7","nodeType":"VariableDeclaration","scope":1766,"src":"10354:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1746,"name":"uint256","nodeType":"ElementaryTypeName","src":"10354:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1751,"initialValue":{"expression":{"expression":{"id":1748,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1741,"src":"10368:4:7","typeDescriptions":{"typeIdentifier":"t_struct$_Trace224_$1542_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace224 storage pointer"}},"id":1749,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10373:12:7","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":1541,"src":"10368:17:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage ref"}},"id":1750,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10386:6:7","memberName":"length","nodeType":"MemberAccess","src":"10368:24:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"10354:38:7"},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1754,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1752,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1747,"src":"10409:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1753,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10416:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"10409:8:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"expression":{"arguments":[{"expression":{"id":1757,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1741,"src":"10438:4:7","typeDescriptions":{"typeIdentifier":"t_struct$_Trace224_$1542_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace224 storage pointer"}},"id":1758,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10443:12:7","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":1541,"src":"10438:17:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage ref"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1761,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1759,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1747,"src":"10457:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":1760,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10463:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"10457:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage ref"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1756,"name":"_unsafeAccess","nodeType":"Identifier","overloadedDeclarations":[1537,2039,2541],"referencedDeclaration":2039,"src":"10424:13:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage_ptr_$_t_uint256_$returns$_t_struct$_Checkpoint224_$1547_storage_ptr_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage pointer,uint256) pure returns (struct CheckpointsUpgradeable.Checkpoint224 storage pointer)"}},"id":1762,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10424:41:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint224_$1547_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage pointer"}},"id":1763,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10466:6:7","memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":1546,"src":"10424:48:7","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"id":1764,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"10409:63:7","trueExpression":{"hexValue":"30","id":1755,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10420:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"functionReturnParameters":1745,"id":1765,"nodeType":"Return","src":"10402:70:7"}]},"documentation":{"id":1738,"nodeType":"StructuredDocumentation","src":"10159:109:7","text":" @dev Returns the value in the most recent checkpoint, or zero if there are no checkpoints."},"id":1767,"implemented":true,"kind":"function","modifiers":[],"name":"latest","nameLocation":"10282:6:7","nodeType":"FunctionDefinition","parameters":{"id":1742,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1741,"mutability":"mutable","name":"self","nameLocation":"10306:4:7","nodeType":"VariableDeclaration","scope":1767,"src":"10289:21:7","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Trace224_$1542_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace224"},"typeName":{"id":1740,"nodeType":"UserDefinedTypeName","pathNode":{"id":1739,"name":"Trace224","nameLocations":["10289:8:7"],"nodeType":"IdentifierPath","referencedDeclaration":1542,"src":"10289:8:7"},"referencedDeclaration":1542,"src":"10289:8:7","typeDescriptions":{"typeIdentifier":"t_struct$_Trace224_$1542_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace224"}},"visibility":"internal"}],"src":"10288:23:7"},"returnParameters":{"id":1745,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1744,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1767,"src":"10335:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"},"typeName":{"id":1743,"name":"uint224","nodeType":"ElementaryTypeName","src":"10335:7:7","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"visibility":"internal"}],"src":"10334:9:7"},"scope":2542,"src":"10273:206:7","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":1815,"nodeType":"Block","src":"10772:274:7","statements":[{"assignments":[1781],"declarations":[{"constant":false,"id":1781,"mutability":"mutable","name":"pos","nameLocation":"10790:3:7","nodeType":"VariableDeclaration","scope":1815,"src":"10782:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1780,"name":"uint256","nodeType":"ElementaryTypeName","src":"10782:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1785,"initialValue":{"expression":{"expression":{"id":1782,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1771,"src":"10796:4:7","typeDescriptions":{"typeIdentifier":"t_struct$_Trace224_$1542_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace224 storage pointer"}},"id":1783,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10801:12:7","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":1541,"src":"10796:17:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage ref"}},"id":1784,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10814:6:7","memberName":"length","nodeType":"MemberAccess","src":"10796:24:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"10782:38:7"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1788,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1786,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1781,"src":"10834:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1787,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10841:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"10834:8:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1813,"nodeType":"Block","src":"10895:145:7","statements":[{"assignments":[1797],"declarations":[{"constant":false,"id":1797,"mutability":"mutable","name":"ckpt","nameLocation":"10930:4:7","nodeType":"VariableDeclaration","scope":1813,"src":"10909:25:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint224_$1547_memory_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224"},"typeName":{"id":1796,"nodeType":"UserDefinedTypeName","pathNode":{"id":1795,"name":"Checkpoint224","nameLocations":["10909:13:7"],"nodeType":"IdentifierPath","referencedDeclaration":1547,"src":"10909:13:7"},"referencedDeclaration":1547,"src":"10909:13:7","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint224_$1547_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224"}},"visibility":"internal"}],"id":1805,"initialValue":{"arguments":[{"expression":{"id":1799,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1771,"src":"10951:4:7","typeDescriptions":{"typeIdentifier":"t_struct$_Trace224_$1542_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace224 storage pointer"}},"id":1800,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10956:12:7","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":1541,"src":"10951:17:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage ref"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1803,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1801,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1781,"src":"10970:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":1802,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10976:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"10970:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage ref"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1798,"name":"_unsafeAccess","nodeType":"Identifier","overloadedDeclarations":[1537,2039,2541],"referencedDeclaration":2039,"src":"10937:13:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage_ptr_$_t_uint256_$returns$_t_struct$_Checkpoint224_$1547_storage_ptr_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage pointer,uint256) pure returns (struct CheckpointsUpgradeable.Checkpoint224 storage pointer)"}},"id":1804,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10937:41:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint224_$1547_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"10909:69:7"},{"expression":{"components":[{"hexValue":"74727565","id":1806,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"11000:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"expression":{"id":1807,"name":"ckpt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1797,"src":"11006:4:7","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint224_$1547_memory_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224 memory"}},"id":1808,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11011:4:7","memberName":"_key","nodeType":"MemberAccess","referencedDeclaration":1544,"src":"11006:9:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"expression":{"id":1809,"name":"ckpt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1797,"src":"11017:4:7","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint224_$1547_memory_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224 memory"}},"id":1810,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11022:6:7","memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":1546,"src":"11017:11:7","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}}],"id":1811,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10999:30:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint32_$_t_uint224_$","typeString":"tuple(bool,uint32,uint224)"}},"functionReturnParameters":1779,"id":1812,"nodeType":"Return","src":"10992:37:7"}]},"id":1814,"nodeType":"IfStatement","src":"10830:210:7","trueBody":{"id":1794,"nodeType":"Block","src":"10844:45:7","statements":[{"expression":{"components":[{"hexValue":"66616c7365","id":1789,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10866:5:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":1790,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10873:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"30","id":1791,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10876:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":1792,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"10865:13:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0,int_const 0)"}},"functionReturnParameters":1779,"id":1793,"nodeType":"Return","src":"10858:20:7"}]}}]},"documentation":{"id":1768,"nodeType":"StructuredDocumentation","src":"10485:168:7","text":" @dev Returns whether there is a checkpoint in the structure (i.e. it is not empty), and if so the key and value\n in the most recent checkpoint."},"id":1816,"implemented":true,"kind":"function","modifiers":[],"name":"latestCheckpoint","nameLocation":"10667:16:7","nodeType":"FunctionDefinition","parameters":{"id":1772,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1771,"mutability":"mutable","name":"self","nameLocation":"10701:4:7","nodeType":"VariableDeclaration","scope":1816,"src":"10684:21:7","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Trace224_$1542_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace224"},"typeName":{"id":1770,"nodeType":"UserDefinedTypeName","pathNode":{"id":1769,"name":"Trace224","nameLocations":["10684:8:7"],"nodeType":"IdentifierPath","referencedDeclaration":1542,"src":"10684:8:7"},"referencedDeclaration":1542,"src":"10684:8:7","typeDescriptions":{"typeIdentifier":"t_struct$_Trace224_$1542_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace224"}},"visibility":"internal"}],"src":"10683:23:7"},"returnParameters":{"id":1779,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1774,"mutability":"mutable","name":"exists","nameLocation":"10735:6:7","nodeType":"VariableDeclaration","scope":1816,"src":"10730:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1773,"name":"bool","nodeType":"ElementaryTypeName","src":"10730:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1776,"mutability":"mutable","name":"_key","nameLocation":"10750:4:7","nodeType":"VariableDeclaration","scope":1816,"src":"10743:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":1775,"name":"uint32","nodeType":"ElementaryTypeName","src":"10743:6:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":1778,"mutability":"mutable","name":"_value","nameLocation":"10764:6:7","nodeType":"VariableDeclaration","scope":1816,"src":"10756:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"},"typeName":{"id":1777,"name":"uint224","nodeType":"ElementaryTypeName","src":"10756:7:7","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"visibility":"internal"}],"src":"10729:42:7"},"scope":2542,"src":"10658:388:7","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":1829,"nodeType":"Block","src":"11185:48:7","statements":[{"expression":{"expression":{"expression":{"id":1825,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1820,"src":"11202:4:7","typeDescriptions":{"typeIdentifier":"t_struct$_Trace224_$1542_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace224 storage pointer"}},"id":1826,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11207:12:7","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":1541,"src":"11202:17:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage ref"}},"id":1827,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11220:6:7","memberName":"length","nodeType":"MemberAccess","src":"11202:24:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1824,"id":1828,"nodeType":"Return","src":"11195:31:7"}]},"documentation":{"id":1817,"nodeType":"StructuredDocumentation","src":"11052:57:7","text":" @dev Returns the number of checkpoint."},"id":1830,"implemented":true,"kind":"function","modifiers":[],"name":"length","nameLocation":"11123:6:7","nodeType":"FunctionDefinition","parameters":{"id":1821,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1820,"mutability":"mutable","name":"self","nameLocation":"11147:4:7","nodeType":"VariableDeclaration","scope":1830,"src":"11130:21:7","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Trace224_$1542_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace224"},"typeName":{"id":1819,"nodeType":"UserDefinedTypeName","pathNode":{"id":1818,"name":"Trace224","nameLocations":["11130:8:7"],"nodeType":"IdentifierPath","referencedDeclaration":1542,"src":"11130:8:7"},"referencedDeclaration":1542,"src":"11130:8:7","typeDescriptions":{"typeIdentifier":"t_struct$_Trace224_$1542_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace224"}},"visibility":"internal"}],"src":"11129:23:7"},"returnParameters":{"id":1824,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1823,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1830,"src":"11176:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1822,"name":"uint256","nodeType":"ElementaryTypeName","src":"11176:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11175:9:7"},"scope":2542,"src":"11114:119:7","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":1919,"nodeType":"Block","src":"11518:727:7","statements":[{"assignments":[1847],"declarations":[{"constant":false,"id":1847,"mutability":"mutable","name":"pos","nameLocation":"11536:3:7","nodeType":"VariableDeclaration","scope":1919,"src":"11528:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1846,"name":"uint256","nodeType":"ElementaryTypeName","src":"11528:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1850,"initialValue":{"expression":{"id":1848,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1835,"src":"11542:4:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage pointer"}},"id":1849,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11547:6:7","memberName":"length","nodeType":"MemberAccess","src":"11542:11:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"11528:25:7"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1853,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1851,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1847,"src":"11568:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1852,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11574:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11568:7:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1917,"nodeType":"Block","src":"12131:108:7","statements":[{"expression":{"arguments":[{"arguments":[{"id":1908,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1837,"src":"12176:3:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":1909,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1839,"src":"12189:5:7","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_uint224","typeString":"uint224"}],"id":1907,"name":"Checkpoint224","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1547,"src":"12155:13:7","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Checkpoint224_$1547_storage_ptr_$","typeString":"type(struct CheckpointsUpgradeable.Checkpoint224 storage pointer)"}},"id":1910,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["12170:4:7","12181:6:7"],"names":["_key","_value"],"nodeType":"FunctionCall","src":"12155:41:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint224_$1547_memory_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224 memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Checkpoint224_$1547_memory_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224 memory"}],"expression":{"id":1904,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1835,"src":"12145:4:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage pointer"}},"id":1906,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12150:4:7","memberName":"push","nodeType":"MemberAccess","src":"12145:9:7","typeDescriptions":{"typeIdentifier":"t_function_arraypush_nonpayable$_t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage_ptr_$_t_struct$_Checkpoint224_$1547_storage_$returns$__$bound_to$_t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage_ptr_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage pointer,struct CheckpointsUpgradeable.Checkpoint224 storage ref)"}},"id":1911,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12145:52:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1912,"nodeType":"ExpressionStatement","src":"12145:52:7"},{"expression":{"components":[{"hexValue":"30","id":1913,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12219:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":1914,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1839,"src":"12222:5:7","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}}],"id":1915,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12218:10:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_rational_0_by_1_$_t_uint224_$","typeString":"tuple(int_const 0,uint224)"}},"functionReturnParameters":1845,"id":1916,"nodeType":"Return","src":"12211:17:7"}]},"id":1918,"nodeType":"IfStatement","src":"11564:675:7","trueBody":{"id":1903,"nodeType":"Block","src":"11577:548:7","statements":[{"assignments":[1856],"declarations":[{"constant":false,"id":1856,"mutability":"mutable","name":"last","nameLocation":"11664:4:7","nodeType":"VariableDeclaration","scope":1903,"src":"11643:25:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint224_$1547_memory_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224"},"typeName":{"id":1855,"nodeType":"UserDefinedTypeName","pathNode":{"id":1854,"name":"Checkpoint224","nameLocations":["11643:13:7"],"nodeType":"IdentifierPath","referencedDeclaration":1547,"src":"11643:13:7"},"referencedDeclaration":1547,"src":"11643:13:7","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint224_$1547_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224"}},"visibility":"internal"}],"id":1863,"initialValue":{"arguments":[{"id":1858,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1835,"src":"11685:4:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage pointer"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1861,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1859,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1847,"src":"11691:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":1860,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11697:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"11691:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage pointer"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1857,"name":"_unsafeAccess","nodeType":"Identifier","overloadedDeclarations":[1537,2039,2541],"referencedDeclaration":2039,"src":"11671:13:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage_ptr_$_t_uint256_$returns$_t_struct$_Checkpoint224_$1547_storage_ptr_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage pointer,uint256) pure returns (struct CheckpointsUpgradeable.Checkpoint224 storage pointer)"}},"id":1862,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11671:28:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint224_$1547_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"11643:56:7"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":1868,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1865,"name":"last","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1856,"src":"11777:4:7","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint224_$1547_memory_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224 memory"}},"id":1866,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11782:4:7","memberName":"_key","nodeType":"MemberAccess","referencedDeclaration":1544,"src":"11777:9:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":1867,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1837,"src":"11790:3:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"11777:16:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"436865636b706f696e743a2064656372656173696e67206b657973","id":1869,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11795:29:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_4f6b1769383e9e01fad001f10d4f9180a25f63424c2597419936b157d29f34ec","typeString":"literal_string \"Checkpoint: decreasing keys\""},"value":"Checkpoint: decreasing keys"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_4f6b1769383e9e01fad001f10d4f9180a25f63424c2597419936b157d29f34ec","typeString":"literal_string \"Checkpoint: decreasing keys\""}],"id":1864,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"11769:7:7","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1870,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11769:56:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1871,"nodeType":"ExpressionStatement","src":"11769:56:7"},{"condition":{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":1875,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1872,"name":"last","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1856,"src":"11889:4:7","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint224_$1547_memory_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224 memory"}},"id":1873,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11894:4:7","memberName":"_key","nodeType":"MemberAccess","referencedDeclaration":1544,"src":"11889:9:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":1874,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1837,"src":"11902:3:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"11889:16:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1896,"nodeType":"Block","src":"11989:85:7","statements":[{"expression":{"arguments":[{"arguments":[{"id":1891,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1837,"src":"12038:3:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":1892,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1839,"src":"12051:5:7","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_uint224","typeString":"uint224"}],"id":1890,"name":"Checkpoint224","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1547,"src":"12017:13:7","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Checkpoint224_$1547_storage_ptr_$","typeString":"type(struct CheckpointsUpgradeable.Checkpoint224 storage pointer)"}},"id":1893,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["12032:4:7","12043:6:7"],"names":["_key","_value"],"nodeType":"FunctionCall","src":"12017:41:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint224_$1547_memory_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224 memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Checkpoint224_$1547_memory_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224 memory"}],"expression":{"id":1887,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1835,"src":"12007:4:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage pointer"}},"id":1889,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12012:4:7","memberName":"push","nodeType":"MemberAccess","src":"12007:9:7","typeDescriptions":{"typeIdentifier":"t_function_arraypush_nonpayable$_t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage_ptr_$_t_struct$_Checkpoint224_$1547_storage_$returns$__$bound_to$_t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage_ptr_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage pointer,struct CheckpointsUpgradeable.Checkpoint224 storage ref)"}},"id":1894,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12007:52:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1895,"nodeType":"ExpressionStatement","src":"12007:52:7"}]},"id":1897,"nodeType":"IfStatement","src":"11885:189:7","trueBody":{"id":1886,"nodeType":"Block","src":"11907:76:7","statements":[{"expression":{"id":1884,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[{"id":1877,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1835,"src":"11939:4:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage pointer"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1880,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1878,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1847,"src":"11945:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":1879,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11951:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"11945:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage pointer"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1876,"name":"_unsafeAccess","nodeType":"Identifier","overloadedDeclarations":[1537,2039,2541],"referencedDeclaration":2039,"src":"11925:13:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage_ptr_$_t_uint256_$returns$_t_struct$_Checkpoint224_$1547_storage_ptr_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage pointer,uint256) pure returns (struct CheckpointsUpgradeable.Checkpoint224 storage pointer)"}},"id":1881,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11925:28:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint224_$1547_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage pointer"}},"id":1882,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"11954:6:7","memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":1546,"src":"11925:35:7","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1883,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1839,"src":"11963:5:7","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"src":"11925:43:7","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"id":1885,"nodeType":"ExpressionStatement","src":"11925:43:7"}]}},{"expression":{"components":[{"expression":{"id":1898,"name":"last","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1856,"src":"12095:4:7","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint224_$1547_memory_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224 memory"}},"id":1899,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12100:6:7","memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":1546,"src":"12095:11:7","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},{"id":1900,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1839,"src":"12108:5:7","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}}],"id":1901,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12094:20:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint224_$_t_uint224_$","typeString":"tuple(uint224,uint224)"}},"functionReturnParameters":1845,"id":1902,"nodeType":"Return","src":"12087:27:7"}]}}]},"documentation":{"id":1831,"nodeType":"StructuredDocumentation","src":"11239:165:7","text":" @dev Pushes a (`key`, `value`) pair into an ordered list of checkpoints, either by inserting a new checkpoint,\n or by updating the last one."},"id":1920,"implemented":true,"kind":"function","modifiers":[],"name":"_insert","nameLocation":"11418:7:7","nodeType":"FunctionDefinition","parameters":{"id":1840,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1835,"mutability":"mutable","name":"self","nameLocation":"11450:4:7","nodeType":"VariableDeclaration","scope":1920,"src":"11426:28:7","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224[]"},"typeName":{"baseType":{"id":1833,"nodeType":"UserDefinedTypeName","pathNode":{"id":1832,"name":"Checkpoint224","nameLocations":["11426:13:7"],"nodeType":"IdentifierPath","referencedDeclaration":1547,"src":"11426:13:7"},"referencedDeclaration":1547,"src":"11426:13:7","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint224_$1547_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224"}},"id":1834,"nodeType":"ArrayTypeName","src":"11426:15:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224[]"}},"visibility":"internal"},{"constant":false,"id":1837,"mutability":"mutable","name":"key","nameLocation":"11463:3:7","nodeType":"VariableDeclaration","scope":1920,"src":"11456:10:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":1836,"name":"uint32","nodeType":"ElementaryTypeName","src":"11456:6:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":1839,"mutability":"mutable","name":"value","nameLocation":"11476:5:7","nodeType":"VariableDeclaration","scope":1920,"src":"11468:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"},"typeName":{"id":1838,"name":"uint224","nodeType":"ElementaryTypeName","src":"11468:7:7","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"visibility":"internal"}],"src":"11425:57:7"},"returnParameters":{"id":1845,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1842,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1920,"src":"11500:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"},"typeName":{"id":1841,"name":"uint224","nodeType":"ElementaryTypeName","src":"11500:7:7","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"visibility":"internal"},{"constant":false,"id":1844,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1920,"src":"11509:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"},"typeName":{"id":1843,"name":"uint224","nodeType":"ElementaryTypeName","src":"11509:7:7","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"visibility":"internal"}],"src":"11499:18:7"},"scope":2542,"src":"11409:836:7","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":1971,"nodeType":"Block","src":"12757:278:7","statements":[{"body":{"id":1967,"nodeType":"Block","src":"12786:222:7","statements":[{"assignments":[1940],"declarations":[{"constant":false,"id":1940,"mutability":"mutable","name":"mid","nameLocation":"12808:3:7","nodeType":"VariableDeclaration","scope":1967,"src":"12800:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1939,"name":"uint256","nodeType":"ElementaryTypeName","src":"12800:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1946,"initialValue":{"arguments":[{"id":1943,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1929,"src":"12838:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1944,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1931,"src":"12843:4:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1941,"name":"MathUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3700,"src":"12814:15:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_MathUpgradeable_$3700_$","typeString":"type(library MathUpgradeable)"}},"id":1942,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12830:7:7","memberName":"average","nodeType":"MemberAccess","referencedDeclaration":2900,"src":"12814:23:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":1945,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12814:34:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12800:48:7"},{"condition":{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":1953,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":1948,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1925,"src":"12880:4:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage pointer"}},{"id":1949,"name":"mid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1940,"src":"12886:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage pointer"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1947,"name":"_unsafeAccess","nodeType":"Identifier","overloadedDeclarations":[1537,2039,2541],"referencedDeclaration":2039,"src":"12866:13:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage_ptr_$_t_uint256_$returns$_t_struct$_Checkpoint224_$1547_storage_ptr_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage pointer,uint256) pure returns (struct CheckpointsUpgradeable.Checkpoint224 storage pointer)"}},"id":1950,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12866:24:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint224_$1547_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage pointer"}},"id":1951,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12891:4:7","memberName":"_key","nodeType":"MemberAccess","referencedDeclaration":1544,"src":"12866:29:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":1952,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1927,"src":"12898:3:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"12866:35:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1965,"nodeType":"Block","src":"12952:46:7","statements":[{"expression":{"id":1963,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1959,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1929,"src":"12970:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1962,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1960,"name":"mid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1940,"src":"12976:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1961,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12982:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"12976:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12970:13:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1964,"nodeType":"ExpressionStatement","src":"12970:13:7"}]},"id":1966,"nodeType":"IfStatement","src":"12862:136:7","trueBody":{"id":1958,"nodeType":"Block","src":"12903:43:7","statements":[{"expression":{"id":1956,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1954,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1931,"src":"12921:4:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1955,"name":"mid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1940,"src":"12928:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12921:10:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1957,"nodeType":"ExpressionStatement","src":"12921:10:7"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1938,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1936,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1929,"src":"12774:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1937,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1931,"src":"12780:4:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12774:10:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1968,"nodeType":"WhileStatement","src":"12767:241:7"},{"expression":{"id":1969,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1931,"src":"13024:4:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1935,"id":1970,"nodeType":"Return","src":"13017:11:7"}]},"documentation":{"id":1921,"nodeType":"StructuredDocumentation","src":"12251:335:7","text":" @dev Return the index of the last (most recent) checkpoint with key lower or equal than the search key, or `high` if there is none.\n `low` and `high` define a section where to do the search, with inclusive `low` and exclusive `high`.\n WARNING: `high` should not be greater than the array's length."},"id":1972,"implemented":true,"kind":"function","modifiers":[],"name":"_upperBinaryLookup","nameLocation":"12600:18:7","nodeType":"FunctionDefinition","parameters":{"id":1932,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1925,"mutability":"mutable","name":"self","nameLocation":"12652:4:7","nodeType":"VariableDeclaration","scope":1972,"src":"12628:28:7","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224[]"},"typeName":{"baseType":{"id":1923,"nodeType":"UserDefinedTypeName","pathNode":{"id":1922,"name":"Checkpoint224","nameLocations":["12628:13:7"],"nodeType":"IdentifierPath","referencedDeclaration":1547,"src":"12628:13:7"},"referencedDeclaration":1547,"src":"12628:13:7","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint224_$1547_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224"}},"id":1924,"nodeType":"ArrayTypeName","src":"12628:15:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224[]"}},"visibility":"internal"},{"constant":false,"id":1927,"mutability":"mutable","name":"key","nameLocation":"12673:3:7","nodeType":"VariableDeclaration","scope":1972,"src":"12666:10:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":1926,"name":"uint32","nodeType":"ElementaryTypeName","src":"12666:6:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":1929,"mutability":"mutable","name":"low","nameLocation":"12694:3:7","nodeType":"VariableDeclaration","scope":1972,"src":"12686:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1928,"name":"uint256","nodeType":"ElementaryTypeName","src":"12686:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1931,"mutability":"mutable","name":"high","nameLocation":"12715:4:7","nodeType":"VariableDeclaration","scope":1972,"src":"12707:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1930,"name":"uint256","nodeType":"ElementaryTypeName","src":"12707:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12618:107:7"},"returnParameters":{"id":1935,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1934,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1972,"src":"12748:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1933,"name":"uint256","nodeType":"ElementaryTypeName","src":"12748:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12747:9:7"},"scope":2542,"src":"12591:444:7","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":2023,"nodeType":"Block","src":"13548:278:7","statements":[{"body":{"id":2019,"nodeType":"Block","src":"13577:222:7","statements":[{"assignments":[1992],"declarations":[{"constant":false,"id":1992,"mutability":"mutable","name":"mid","nameLocation":"13599:3:7","nodeType":"VariableDeclaration","scope":2019,"src":"13591:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1991,"name":"uint256","nodeType":"ElementaryTypeName","src":"13591:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1998,"initialValue":{"arguments":[{"id":1995,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1981,"src":"13629:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1996,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1983,"src":"13634:4:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1993,"name":"MathUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3700,"src":"13605:15:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_MathUpgradeable_$3700_$","typeString":"type(library MathUpgradeable)"}},"id":1994,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13621:7:7","memberName":"average","nodeType":"MemberAccess","referencedDeclaration":2900,"src":"13605:23:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":1997,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13605:34:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13591:48:7"},{"condition":{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":2005,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":2000,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1977,"src":"13671:4:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage pointer"}},{"id":2001,"name":"mid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1992,"src":"13677:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage pointer"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1999,"name":"_unsafeAccess","nodeType":"Identifier","overloadedDeclarations":[1537,2039,2541],"referencedDeclaration":2039,"src":"13657:13:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage_ptr_$_t_uint256_$returns$_t_struct$_Checkpoint224_$1547_storage_ptr_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage pointer,uint256) pure returns (struct CheckpointsUpgradeable.Checkpoint224 storage pointer)"}},"id":2002,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13657:24:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint224_$1547_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage pointer"}},"id":2003,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13682:4:7","memberName":"_key","nodeType":"MemberAccess","referencedDeclaration":1544,"src":"13657:29:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":2004,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1979,"src":"13689:3:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"13657:35:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2017,"nodeType":"Block","src":"13746:43:7","statements":[{"expression":{"id":2015,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2013,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1983,"src":"13764:4:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2014,"name":"mid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1992,"src":"13771:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13764:10:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2016,"nodeType":"ExpressionStatement","src":"13764:10:7"}]},"id":2018,"nodeType":"IfStatement","src":"13653:136:7","trueBody":{"id":2012,"nodeType":"Block","src":"13694:46:7","statements":[{"expression":{"id":2010,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2006,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1981,"src":"13712:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2009,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2007,"name":"mid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1992,"src":"13718:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":2008,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13724:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"13718:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13712:13:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2011,"nodeType":"ExpressionStatement","src":"13712:13:7"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1990,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1988,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1981,"src":"13565:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1989,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1983,"src":"13571:4:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13565:10:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2020,"nodeType":"WhileStatement","src":"13558:241:7"},{"expression":{"id":2021,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1983,"src":"13815:4:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1987,"id":2022,"nodeType":"Return","src":"13808:11:7"}]},"documentation":{"id":1973,"nodeType":"StructuredDocumentation","src":"13041:336:7","text":" @dev Return the index of the first (oldest) checkpoint with key is greater or equal than the search key, or `high` if there is none.\n `low` and `high` define a section where to do the search, with inclusive `low` and exclusive `high`.\n WARNING: `high` should not be greater than the array's length."},"id":2024,"implemented":true,"kind":"function","modifiers":[],"name":"_lowerBinaryLookup","nameLocation":"13391:18:7","nodeType":"FunctionDefinition","parameters":{"id":1984,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1977,"mutability":"mutable","name":"self","nameLocation":"13443:4:7","nodeType":"VariableDeclaration","scope":2024,"src":"13419:28:7","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224[]"},"typeName":{"baseType":{"id":1975,"nodeType":"UserDefinedTypeName","pathNode":{"id":1974,"name":"Checkpoint224","nameLocations":["13419:13:7"],"nodeType":"IdentifierPath","referencedDeclaration":1547,"src":"13419:13:7"},"referencedDeclaration":1547,"src":"13419:13:7","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint224_$1547_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224"}},"id":1976,"nodeType":"ArrayTypeName","src":"13419:15:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224[]"}},"visibility":"internal"},{"constant":false,"id":1979,"mutability":"mutable","name":"key","nameLocation":"13464:3:7","nodeType":"VariableDeclaration","scope":2024,"src":"13457:10:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":1978,"name":"uint32","nodeType":"ElementaryTypeName","src":"13457:6:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":1981,"mutability":"mutable","name":"low","nameLocation":"13485:3:7","nodeType":"VariableDeclaration","scope":2024,"src":"13477:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1980,"name":"uint256","nodeType":"ElementaryTypeName","src":"13477:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1983,"mutability":"mutable","name":"high","nameLocation":"13506:4:7","nodeType":"VariableDeclaration","scope":2024,"src":"13498:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1982,"name":"uint256","nodeType":"ElementaryTypeName","src":"13498:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13409:107:7"},"returnParameters":{"id":1987,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1986,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2024,"src":"13539:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1985,"name":"uint256","nodeType":"ElementaryTypeName","src":"13539:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13538:9:7"},"scope":2542,"src":"13382:444:7","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":2038,"nodeType":"Block","src":"14109:125:7","statements":[{"AST":{"nodeType":"YulBlock","src":"14128:100:7","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"14149:1:7","type":"","value":"0"},{"name":"self.slot","nodeType":"YulIdentifier","src":"14152:9:7"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"14142:6:7"},"nodeType":"YulFunctionCall","src":"14142:20:7"},"nodeType":"YulExpressionStatement","src":"14142:20:7"},{"nodeType":"YulAssignment","src":"14175:43:7","value":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"14204:1:7","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"14207:4:7","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nodeType":"YulIdentifier","src":"14194:9:7"},"nodeType":"YulFunctionCall","src":"14194:18:7"},{"name":"pos","nodeType":"YulIdentifier","src":"14214:3:7"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14190:3:7"},"nodeType":"YulFunctionCall","src":"14190:28:7"},"variableNames":[{"name":"result.slot","nodeType":"YulIdentifier","src":"14175:11:7"}]}]},"evmVersion":"london","externalReferences":[{"declaration":2031,"isOffset":false,"isSlot":false,"src":"14214:3:7","valueSize":1},{"declaration":2035,"isOffset":false,"isSlot":true,"src":"14175:11:7","suffix":"slot","valueSize":1},{"declaration":2029,"isOffset":false,"isSlot":true,"src":"14152:9:7","suffix":"slot","valueSize":1}],"id":2037,"nodeType":"InlineAssembly","src":"14119:109:7"}]},"documentation":{"id":2025,"nodeType":"StructuredDocumentation","src":"13832:132:7","text":" @dev Access an element of the array without performing bounds check. The position is assumed to be within bounds."},"id":2039,"implemented":true,"kind":"function","modifiers":[],"name":"_unsafeAccess","nameLocation":"13978:13:7","nodeType":"FunctionDefinition","parameters":{"id":2032,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2029,"mutability":"mutable","name":"self","nameLocation":"14025:4:7","nodeType":"VariableDeclaration","scope":2039,"src":"14001:28:7","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224[]"},"typeName":{"baseType":{"id":2027,"nodeType":"UserDefinedTypeName","pathNode":{"id":2026,"name":"Checkpoint224","nameLocations":["14001:13:7"],"nodeType":"IdentifierPath","referencedDeclaration":1547,"src":"14001:13:7"},"referencedDeclaration":1547,"src":"14001:13:7","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint224_$1547_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224"}},"id":2028,"nodeType":"ArrayTypeName","src":"14001:15:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224[]"}},"visibility":"internal"},{"constant":false,"id":2031,"mutability":"mutable","name":"pos","nameLocation":"14047:3:7","nodeType":"VariableDeclaration","scope":2039,"src":"14039:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2030,"name":"uint256","nodeType":"ElementaryTypeName","src":"14039:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13991:65:7"},"returnParameters":{"id":2036,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2035,"mutability":"mutable","name":"result","nameLocation":"14101:6:7","nodeType":"VariableDeclaration","scope":2039,"src":"14079:28:7","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint224_$1547_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224"},"typeName":{"id":2034,"nodeType":"UserDefinedTypeName","pathNode":{"id":2033,"name":"Checkpoint224","nameLocations":["14079:13:7"],"nodeType":"IdentifierPath","referencedDeclaration":1547,"src":"14079:13:7"},"referencedDeclaration":1547,"src":"14079:13:7","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint224_$1547_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224"}},"visibility":"internal"}],"src":"14078:30:7"},"scope":2542,"src":"13969:265:7","stateMutability":"pure","virtual":false,"visibility":"private"},{"canonicalName":"CheckpointsUpgradeable.Trace160","id":2044,"members":[{"constant":false,"id":2043,"mutability":"mutable","name":"_checkpoints","nameLocation":"14282:12:7","nodeType":"VariableDeclaration","scope":2044,"src":"14266:28:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160[]"},"typeName":{"baseType":{"id":2041,"nodeType":"UserDefinedTypeName","pathNode":{"id":2040,"name":"Checkpoint160","nameLocations":["14266:13:7"],"nodeType":"IdentifierPath","referencedDeclaration":2049,"src":"14266:13:7"},"referencedDeclaration":2049,"src":"14266:13:7","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint160_$2049_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160"}},"id":2042,"nodeType":"ArrayTypeName","src":"14266:15:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160[]"}},"visibility":"internal"}],"name":"Trace160","nameLocation":"14247:8:7","nodeType":"StructDefinition","scope":2542,"src":"14240:61:7","visibility":"public"},{"canonicalName":"CheckpointsUpgradeable.Checkpoint160","id":2049,"members":[{"constant":false,"id":2046,"mutability":"mutable","name":"_key","nameLocation":"14345:4:7","nodeType":"VariableDeclaration","scope":2049,"src":"14338:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":2045,"name":"uint96","nodeType":"ElementaryTypeName","src":"14338:6:7","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"},{"constant":false,"id":2048,"mutability":"mutable","name":"_value","nameLocation":"14367:6:7","nodeType":"VariableDeclaration","scope":2049,"src":"14359:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":2047,"name":"uint160","nodeType":"ElementaryTypeName","src":"14359:7:7","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"name":"Checkpoint160","nameLocation":"14314:13:7","nodeType":"StructDefinition","scope":2542,"src":"14307:73:7","visibility":"public"},{"body":{"id":2071,"nodeType":"Block","src":"14653:62:7","statements":[{"expression":{"arguments":[{"expression":{"id":2065,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2053,"src":"14678:4:7","typeDescriptions":{"typeIdentifier":"t_struct$_Trace160_$2044_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace160 storage pointer"}},"id":2066,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14683:12:7","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":2043,"src":"14678:17:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage ref"}},{"id":2067,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2055,"src":"14697:3:7","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},{"id":2068,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2057,"src":"14702:5:7","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage ref"},{"typeIdentifier":"t_uint96","typeString":"uint96"},{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":2064,"name":"_insert","nodeType":"Identifier","overloadedDeclarations":[1418,1920,2422],"referencedDeclaration":2422,"src":"14670:7:7","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage_ptr_$_t_uint96_$_t_uint160_$returns$_t_uint160_$_t_uint160_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage pointer,uint96,uint160) returns (uint160,uint160)"}},"id":2069,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14670:38:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint160_$_t_uint160_$","typeString":"tuple(uint160,uint160)"}},"functionReturnParameters":2063,"id":2070,"nodeType":"Return","src":"14663:45:7"}]},"documentation":{"id":2050,"nodeType":"StructuredDocumentation","src":"14386:162:7","text":" @dev Pushes a (`key`, `value`) pair into a Trace160 so that it is stored as the checkpoint.\n Returns previous value and new value."},"id":2072,"implemented":true,"kind":"function","modifiers":[],"name":"push","nameLocation":"14562:4:7","nodeType":"FunctionDefinition","parameters":{"id":2058,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2053,"mutability":"mutable","name":"self","nameLocation":"14584:4:7","nodeType":"VariableDeclaration","scope":2072,"src":"14567:21:7","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Trace160_$2044_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace160"},"typeName":{"id":2052,"nodeType":"UserDefinedTypeName","pathNode":{"id":2051,"name":"Trace160","nameLocations":["14567:8:7"],"nodeType":"IdentifierPath","referencedDeclaration":2044,"src":"14567:8:7"},"referencedDeclaration":2044,"src":"14567:8:7","typeDescriptions":{"typeIdentifier":"t_struct$_Trace160_$2044_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace160"}},"visibility":"internal"},{"constant":false,"id":2055,"mutability":"mutable","name":"key","nameLocation":"14597:3:7","nodeType":"VariableDeclaration","scope":2072,"src":"14590:10:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":2054,"name":"uint96","nodeType":"ElementaryTypeName","src":"14590:6:7","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"},{"constant":false,"id":2057,"mutability":"mutable","name":"value","nameLocation":"14610:5:7","nodeType":"VariableDeclaration","scope":2072,"src":"14602:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":2056,"name":"uint160","nodeType":"ElementaryTypeName","src":"14602:7:7","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"14566:50:7"},"returnParameters":{"id":2063,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2060,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2072,"src":"14635:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":2059,"name":"uint160","nodeType":"ElementaryTypeName","src":"14635:7:7","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":2062,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2072,"src":"14644:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":2061,"name":"uint160","nodeType":"ElementaryTypeName","src":"14644:7:7","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"14634:18:7"},"scope":2542,"src":"14553:162:7","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2111,"nodeType":"Block","src":"14961:207:7","statements":[{"assignments":[2084],"declarations":[{"constant":false,"id":2084,"mutability":"mutable","name":"len","nameLocation":"14979:3:7","nodeType":"VariableDeclaration","scope":2111,"src":"14971:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2083,"name":"uint256","nodeType":"ElementaryTypeName","src":"14971:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2088,"initialValue":{"expression":{"expression":{"id":2085,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2076,"src":"14985:4:7","typeDescriptions":{"typeIdentifier":"t_struct$_Trace160_$2044_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace160 storage pointer"}},"id":2086,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14990:12:7","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":2043,"src":"14985:17:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage ref"}},"id":2087,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15003:6:7","memberName":"length","nodeType":"MemberAccess","src":"14985:24:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"14971:38:7"},{"assignments":[2090],"declarations":[{"constant":false,"id":2090,"mutability":"mutable","name":"pos","nameLocation":"15027:3:7","nodeType":"VariableDeclaration","scope":2111,"src":"15019:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2089,"name":"uint256","nodeType":"ElementaryTypeName","src":"15019:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2098,"initialValue":{"arguments":[{"expression":{"id":2092,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2076,"src":"15052:4:7","typeDescriptions":{"typeIdentifier":"t_struct$_Trace160_$2044_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace160 storage pointer"}},"id":2093,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15057:12:7","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":2043,"src":"15052:17:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage ref"}},{"id":2094,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2078,"src":"15071:3:7","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},{"hexValue":"30","id":2095,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15076:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":2096,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2084,"src":"15079:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage ref"},{"typeIdentifier":"t_uint96","typeString":"uint96"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2091,"name":"_lowerBinaryLookup","nodeType":"Identifier","overloadedDeclarations":[1522,2024,2526],"referencedDeclaration":2526,"src":"15033:18:7","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage_ptr_$_t_uint96_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage pointer,uint96,uint256,uint256) view returns (uint256)"}},"id":2097,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15033:50:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"15019:64:7"},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2101,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2099,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2090,"src":"15100:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":2100,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2084,"src":"15107:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15100:10:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"expression":{"arguments":[{"expression":{"id":2104,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2076,"src":"15131:4:7","typeDescriptions":{"typeIdentifier":"t_struct$_Trace160_$2044_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace160 storage pointer"}},"id":2105,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15136:12:7","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":2043,"src":"15131:17:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage ref"}},{"id":2106,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2090,"src":"15150:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage ref"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2103,"name":"_unsafeAccess","nodeType":"Identifier","overloadedDeclarations":[1537,2039,2541],"referencedDeclaration":2541,"src":"15117:13:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage_ptr_$_t_uint256_$returns$_t_struct$_Checkpoint160_$2049_storage_ptr_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage pointer,uint256) pure returns (struct CheckpointsUpgradeable.Checkpoint160 storage pointer)"}},"id":2107,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15117:37:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint160_$2049_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage pointer"}},"id":2108,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15155:6:7","memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":2048,"src":"15117:44:7","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"id":2109,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"15100:61:7","trueExpression":{"hexValue":"30","id":2102,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15113:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"functionReturnParameters":2082,"id":2110,"nodeType":"Return","src":"15093:68:7"}]},"documentation":{"id":2073,"nodeType":"StructuredDocumentation","src":"14721:147:7","text":" @dev Returns the value in the first (oldest) checkpoint with key greater or equal than the search key, or zero if there is none."},"id":2112,"implemented":true,"kind":"function","modifiers":[],"name":"lowerLookup","nameLocation":"14882:11:7","nodeType":"FunctionDefinition","parameters":{"id":2079,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2076,"mutability":"mutable","name":"self","nameLocation":"14911:4:7","nodeType":"VariableDeclaration","scope":2112,"src":"14894:21:7","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Trace160_$2044_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace160"},"typeName":{"id":2075,"nodeType":"UserDefinedTypeName","pathNode":{"id":2074,"name":"Trace160","nameLocations":["14894:8:7"],"nodeType":"IdentifierPath","referencedDeclaration":2044,"src":"14894:8:7"},"referencedDeclaration":2044,"src":"14894:8:7","typeDescriptions":{"typeIdentifier":"t_struct$_Trace160_$2044_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace160"}},"visibility":"internal"},{"constant":false,"id":2078,"mutability":"mutable","name":"key","nameLocation":"14924:3:7","nodeType":"VariableDeclaration","scope":2112,"src":"14917:10:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":2077,"name":"uint96","nodeType":"ElementaryTypeName","src":"14917:6:7","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"}],"src":"14893:35:7"},"returnParameters":{"id":2082,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2081,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2112,"src":"14952:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":2080,"name":"uint160","nodeType":"ElementaryTypeName","src":"14952:7:7","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"14951:9:7"},"scope":2542,"src":"14873:295:7","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":2153,"nodeType":"Block","src":"15416:209:7","statements":[{"assignments":[2124],"declarations":[{"constant":false,"id":2124,"mutability":"mutable","name":"len","nameLocation":"15434:3:7","nodeType":"VariableDeclaration","scope":2153,"src":"15426:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2123,"name":"uint256","nodeType":"ElementaryTypeName","src":"15426:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2128,"initialValue":{"expression":{"expression":{"id":2125,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2116,"src":"15440:4:7","typeDescriptions":{"typeIdentifier":"t_struct$_Trace160_$2044_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace160 storage pointer"}},"id":2126,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15445:12:7","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":2043,"src":"15440:17:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage ref"}},"id":2127,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15458:6:7","memberName":"length","nodeType":"MemberAccess","src":"15440:24:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"15426:38:7"},{"assignments":[2130],"declarations":[{"constant":false,"id":2130,"mutability":"mutable","name":"pos","nameLocation":"15482:3:7","nodeType":"VariableDeclaration","scope":2153,"src":"15474:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2129,"name":"uint256","nodeType":"ElementaryTypeName","src":"15474:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2138,"initialValue":{"arguments":[{"expression":{"id":2132,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2116,"src":"15507:4:7","typeDescriptions":{"typeIdentifier":"t_struct$_Trace160_$2044_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace160 storage pointer"}},"id":2133,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15512:12:7","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":2043,"src":"15507:17:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage ref"}},{"id":2134,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2118,"src":"15526:3:7","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},{"hexValue":"30","id":2135,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15531:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":2136,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2124,"src":"15534:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage ref"},{"typeIdentifier":"t_uint96","typeString":"uint96"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2131,"name":"_upperBinaryLookup","nodeType":"Identifier","overloadedDeclarations":[1470,1972,2474],"referencedDeclaration":2474,"src":"15488:18:7","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage_ptr_$_t_uint96_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage pointer,uint96,uint256,uint256) view returns (uint256)"}},"id":2137,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15488:50:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"15474:64:7"},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2141,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2139,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2130,"src":"15555:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2140,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15562:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"15555:8:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"expression":{"arguments":[{"expression":{"id":2144,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2116,"src":"15584:4:7","typeDescriptions":{"typeIdentifier":"t_struct$_Trace160_$2044_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace160 storage pointer"}},"id":2145,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15589:12:7","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":2043,"src":"15584:17:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage ref"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2148,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2146,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2130,"src":"15603:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":2147,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15609:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"15603:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage ref"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2143,"name":"_unsafeAccess","nodeType":"Identifier","overloadedDeclarations":[1537,2039,2541],"referencedDeclaration":2541,"src":"15570:13:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage_ptr_$_t_uint256_$returns$_t_struct$_Checkpoint160_$2049_storage_ptr_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage pointer,uint256) pure returns (struct CheckpointsUpgradeable.Checkpoint160 storage pointer)"}},"id":2149,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15570:41:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint160_$2049_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage pointer"}},"id":2150,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15612:6:7","memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":2048,"src":"15570:48:7","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"id":2151,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"15555:63:7","trueExpression":{"hexValue":"30","id":2142,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15566:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"functionReturnParameters":2122,"id":2152,"nodeType":"Return","src":"15548:70:7"}]},"documentation":{"id":2113,"nodeType":"StructuredDocumentation","src":"15174:149:7","text":" @dev Returns the value in the last (most recent) checkpoint with key lower or equal than the search key, or zero if there is none."},"id":2154,"implemented":true,"kind":"function","modifiers":[],"name":"upperLookup","nameLocation":"15337:11:7","nodeType":"FunctionDefinition","parameters":{"id":2119,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2116,"mutability":"mutable","name":"self","nameLocation":"15366:4:7","nodeType":"VariableDeclaration","scope":2154,"src":"15349:21:7","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Trace160_$2044_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace160"},"typeName":{"id":2115,"nodeType":"UserDefinedTypeName","pathNode":{"id":2114,"name":"Trace160","nameLocations":["15349:8:7"],"nodeType":"IdentifierPath","referencedDeclaration":2044,"src":"15349:8:7"},"referencedDeclaration":2044,"src":"15349:8:7","typeDescriptions":{"typeIdentifier":"t_struct$_Trace160_$2044_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace160"}},"visibility":"internal"},{"constant":false,"id":2118,"mutability":"mutable","name":"key","nameLocation":"15379:3:7","nodeType":"VariableDeclaration","scope":2154,"src":"15372:10:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":2117,"name":"uint96","nodeType":"ElementaryTypeName","src":"15372:6:7","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"}],"src":"15348:35:7"},"returnParameters":{"id":2122,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2121,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2154,"src":"15407:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":2120,"name":"uint160","nodeType":"ElementaryTypeName","src":"15407:7:7","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"15406:9:7"},"scope":2542,"src":"15328:297:7","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":2238,"nodeType":"Block","src":"16010:523:7","statements":[{"assignments":[2166],"declarations":[{"constant":false,"id":2166,"mutability":"mutable","name":"len","nameLocation":"16028:3:7","nodeType":"VariableDeclaration","scope":2238,"src":"16020:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2165,"name":"uint256","nodeType":"ElementaryTypeName","src":"16020:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2170,"initialValue":{"expression":{"expression":{"id":2167,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2158,"src":"16034:4:7","typeDescriptions":{"typeIdentifier":"t_struct$_Trace160_$2044_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace160 storage pointer"}},"id":2168,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16039:12:7","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":2043,"src":"16034:17:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage ref"}},"id":2169,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16052:6:7","memberName":"length","nodeType":"MemberAccess","src":"16034:24:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"16020:38:7"},{"assignments":[2172],"declarations":[{"constant":false,"id":2172,"mutability":"mutable","name":"low","nameLocation":"16077:3:7","nodeType":"VariableDeclaration","scope":2238,"src":"16069:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2171,"name":"uint256","nodeType":"ElementaryTypeName","src":"16069:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2174,"initialValue":{"hexValue":"30","id":2173,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16083:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"16069:15:7"},{"assignments":[2176],"declarations":[{"constant":false,"id":2176,"mutability":"mutable","name":"high","nameLocation":"16102:4:7","nodeType":"VariableDeclaration","scope":2238,"src":"16094:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2175,"name":"uint256","nodeType":"ElementaryTypeName","src":"16094:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2178,"initialValue":{"id":2177,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2166,"src":"16109:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"16094:18:7"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2181,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2179,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2166,"src":"16127:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"35","id":2180,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16133:1:7","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"src":"16127:7:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2213,"nodeType":"IfStatement","src":"16123:245:7","trueBody":{"id":2212,"nodeType":"Block","src":"16136:232:7","statements":[{"assignments":[2183],"declarations":[{"constant":false,"id":2183,"mutability":"mutable","name":"mid","nameLocation":"16158:3:7","nodeType":"VariableDeclaration","scope":2212,"src":"16150:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2182,"name":"uint256","nodeType":"ElementaryTypeName","src":"16150:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2190,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2189,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2184,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2166,"src":"16164:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[{"id":2187,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2166,"src":"16191:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":2185,"name":"MathUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3700,"src":"16170:15:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_MathUpgradeable_$3700_$","typeString":"type(library MathUpgradeable)"}},"id":2186,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16186:4:7","memberName":"sqrt","nodeType":"MemberAccess","referencedDeclaration":3204,"src":"16170:20:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":2188,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16170:25:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16164:31:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"16150:45:7"},{"condition":{"commonType":{"typeIdentifier":"t_uint96","typeString":"uint96"},"id":2198,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2191,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2160,"src":"16213:3:7","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"arguments":[{"expression":{"id":2193,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2158,"src":"16233:4:7","typeDescriptions":{"typeIdentifier":"t_struct$_Trace160_$2044_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace160 storage pointer"}},"id":2194,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16238:12:7","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":2043,"src":"16233:17:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage ref"}},{"id":2195,"name":"mid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2183,"src":"16252:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage ref"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2192,"name":"_unsafeAccess","nodeType":"Identifier","overloadedDeclarations":[1537,2039,2541],"referencedDeclaration":2541,"src":"16219:13:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage_ptr_$_t_uint256_$returns$_t_struct$_Checkpoint160_$2049_storage_ptr_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage pointer,uint256) pure returns (struct CheckpointsUpgradeable.Checkpoint160 storage pointer)"}},"id":2196,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16219:37:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint160_$2049_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage pointer"}},"id":2197,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16257:4:7","memberName":"_key","nodeType":"MemberAccess","referencedDeclaration":2046,"src":"16219:42:7","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"src":"16213:48:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2210,"nodeType":"Block","src":"16312:46:7","statements":[{"expression":{"id":2208,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2204,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2172,"src":"16330:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2207,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2205,"name":"mid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2183,"src":"16336:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":2206,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16342:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"16336:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16330:13:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2209,"nodeType":"ExpressionStatement","src":"16330:13:7"}]},"id":2211,"nodeType":"IfStatement","src":"16209:149:7","trueBody":{"id":2203,"nodeType":"Block","src":"16263:43:7","statements":[{"expression":{"id":2201,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2199,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2176,"src":"16281:4:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2200,"name":"mid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2183,"src":"16288:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16281:10:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2202,"nodeType":"ExpressionStatement","src":"16281:10:7"}]}}]}},{"assignments":[2215],"declarations":[{"constant":false,"id":2215,"mutability":"mutable","name":"pos","nameLocation":"16386:3:7","nodeType":"VariableDeclaration","scope":2238,"src":"16378:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2214,"name":"uint256","nodeType":"ElementaryTypeName","src":"16378:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2223,"initialValue":{"arguments":[{"expression":{"id":2217,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2158,"src":"16411:4:7","typeDescriptions":{"typeIdentifier":"t_struct$_Trace160_$2044_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace160 storage pointer"}},"id":2218,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16416:12:7","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":2043,"src":"16411:17:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage ref"}},{"id":2219,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2160,"src":"16430:3:7","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},{"id":2220,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2172,"src":"16435:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2221,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2176,"src":"16440:4:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage ref"},{"typeIdentifier":"t_uint96","typeString":"uint96"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2216,"name":"_upperBinaryLookup","nodeType":"Identifier","overloadedDeclarations":[1470,1972,2474],"referencedDeclaration":2474,"src":"16392:18:7","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage_ptr_$_t_uint96_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage pointer,uint96,uint256,uint256) view returns (uint256)"}},"id":2222,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16392:53:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"16378:67:7"},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2226,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2224,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2215,"src":"16463:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2225,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16470:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"16463:8:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"expression":{"arguments":[{"expression":{"id":2229,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2158,"src":"16492:4:7","typeDescriptions":{"typeIdentifier":"t_struct$_Trace160_$2044_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace160 storage pointer"}},"id":2230,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16497:12:7","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":2043,"src":"16492:17:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage ref"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2233,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2231,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2215,"src":"16511:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":2232,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16517:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"16511:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage ref"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2228,"name":"_unsafeAccess","nodeType":"Identifier","overloadedDeclarations":[1537,2039,2541],"referencedDeclaration":2541,"src":"16478:13:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage_ptr_$_t_uint256_$returns$_t_struct$_Checkpoint160_$2049_storage_ptr_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage pointer,uint256) pure returns (struct CheckpointsUpgradeable.Checkpoint160 storage pointer)"}},"id":2234,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16478:41:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint160_$2049_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage pointer"}},"id":2235,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16520:6:7","memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":2048,"src":"16478:48:7","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"id":2236,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"16463:63:7","trueExpression":{"hexValue":"30","id":2227,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16474:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"functionReturnParameters":2164,"id":2237,"nodeType":"Return","src":"16456:70:7"}]},"documentation":{"id":2155,"nodeType":"StructuredDocumentation","src":"15631:280:7","text":" @dev Returns the value in the last (most recent) checkpoint with key lower or equal than the search key, or zero if there is none.\n NOTE: This is a variant of {upperLookup} that is optimised to find \"recent\" checkpoint (checkpoints with high keys)."},"id":2239,"implemented":true,"kind":"function","modifiers":[],"name":"upperLookupRecent","nameLocation":"15925:17:7","nodeType":"FunctionDefinition","parameters":{"id":2161,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2158,"mutability":"mutable","name":"self","nameLocation":"15960:4:7","nodeType":"VariableDeclaration","scope":2239,"src":"15943:21:7","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Trace160_$2044_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace160"},"typeName":{"id":2157,"nodeType":"UserDefinedTypeName","pathNode":{"id":2156,"name":"Trace160","nameLocations":["15943:8:7"],"nodeType":"IdentifierPath","referencedDeclaration":2044,"src":"15943:8:7"},"referencedDeclaration":2044,"src":"15943:8:7","typeDescriptions":{"typeIdentifier":"t_struct$_Trace160_$2044_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace160"}},"visibility":"internal"},{"constant":false,"id":2160,"mutability":"mutable","name":"key","nameLocation":"15973:3:7","nodeType":"VariableDeclaration","scope":2239,"src":"15966:10:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":2159,"name":"uint96","nodeType":"ElementaryTypeName","src":"15966:6:7","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"}],"src":"15942:35:7"},"returnParameters":{"id":2164,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2163,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2239,"src":"16001:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":2162,"name":"uint160","nodeType":"ElementaryTypeName","src":"16001:7:7","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"16000:9:7"},"scope":2542,"src":"15916:617:7","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":2268,"nodeType":"Block","src":"16724:135:7","statements":[{"assignments":[2249],"declarations":[{"constant":false,"id":2249,"mutability":"mutable","name":"pos","nameLocation":"16742:3:7","nodeType":"VariableDeclaration","scope":2268,"src":"16734:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2248,"name":"uint256","nodeType":"ElementaryTypeName","src":"16734:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2253,"initialValue":{"expression":{"expression":{"id":2250,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2243,"src":"16748:4:7","typeDescriptions":{"typeIdentifier":"t_struct$_Trace160_$2044_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace160 storage pointer"}},"id":2251,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16753:12:7","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":2043,"src":"16748:17:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage ref"}},"id":2252,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16766:6:7","memberName":"length","nodeType":"MemberAccess","src":"16748:24:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"16734:38:7"},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2256,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2254,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2249,"src":"16789:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2255,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16796:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"16789:8:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"expression":{"arguments":[{"expression":{"id":2259,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2243,"src":"16818:4:7","typeDescriptions":{"typeIdentifier":"t_struct$_Trace160_$2044_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace160 storage pointer"}},"id":2260,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16823:12:7","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":2043,"src":"16818:17:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage ref"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2263,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2261,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2249,"src":"16837:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":2262,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16843:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"16837:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage ref"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2258,"name":"_unsafeAccess","nodeType":"Identifier","overloadedDeclarations":[1537,2039,2541],"referencedDeclaration":2541,"src":"16804:13:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage_ptr_$_t_uint256_$returns$_t_struct$_Checkpoint160_$2049_storage_ptr_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage pointer,uint256) pure returns (struct CheckpointsUpgradeable.Checkpoint160 storage pointer)"}},"id":2264,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16804:41:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint160_$2049_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage pointer"}},"id":2265,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16846:6:7","memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":2048,"src":"16804:48:7","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"id":2266,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"16789:63:7","trueExpression":{"hexValue":"30","id":2257,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16800:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"functionReturnParameters":2247,"id":2267,"nodeType":"Return","src":"16782:70:7"}]},"documentation":{"id":2240,"nodeType":"StructuredDocumentation","src":"16539:109:7","text":" @dev Returns the value in the most recent checkpoint, or zero if there are no checkpoints."},"id":2269,"implemented":true,"kind":"function","modifiers":[],"name":"latest","nameLocation":"16662:6:7","nodeType":"FunctionDefinition","parameters":{"id":2244,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2243,"mutability":"mutable","name":"self","nameLocation":"16686:4:7","nodeType":"VariableDeclaration","scope":2269,"src":"16669:21:7","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Trace160_$2044_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace160"},"typeName":{"id":2242,"nodeType":"UserDefinedTypeName","pathNode":{"id":2241,"name":"Trace160","nameLocations":["16669:8:7"],"nodeType":"IdentifierPath","referencedDeclaration":2044,"src":"16669:8:7"},"referencedDeclaration":2044,"src":"16669:8:7","typeDescriptions":{"typeIdentifier":"t_struct$_Trace160_$2044_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace160"}},"visibility":"internal"}],"src":"16668:23:7"},"returnParameters":{"id":2247,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2246,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2269,"src":"16715:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":2245,"name":"uint160","nodeType":"ElementaryTypeName","src":"16715:7:7","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"16714:9:7"},"scope":2542,"src":"16653:206:7","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":2317,"nodeType":"Block","src":"17152:274:7","statements":[{"assignments":[2283],"declarations":[{"constant":false,"id":2283,"mutability":"mutable","name":"pos","nameLocation":"17170:3:7","nodeType":"VariableDeclaration","scope":2317,"src":"17162:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2282,"name":"uint256","nodeType":"ElementaryTypeName","src":"17162:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2287,"initialValue":{"expression":{"expression":{"id":2284,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2273,"src":"17176:4:7","typeDescriptions":{"typeIdentifier":"t_struct$_Trace160_$2044_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace160 storage pointer"}},"id":2285,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17181:12:7","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":2043,"src":"17176:17:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage ref"}},"id":2286,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17194:6:7","memberName":"length","nodeType":"MemberAccess","src":"17176:24:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"17162:38:7"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2290,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2288,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2283,"src":"17214:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2289,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17221:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"17214:8:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2315,"nodeType":"Block","src":"17275:145:7","statements":[{"assignments":[2299],"declarations":[{"constant":false,"id":2299,"mutability":"mutable","name":"ckpt","nameLocation":"17310:4:7","nodeType":"VariableDeclaration","scope":2315,"src":"17289:25:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint160_$2049_memory_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160"},"typeName":{"id":2298,"nodeType":"UserDefinedTypeName","pathNode":{"id":2297,"name":"Checkpoint160","nameLocations":["17289:13:7"],"nodeType":"IdentifierPath","referencedDeclaration":2049,"src":"17289:13:7"},"referencedDeclaration":2049,"src":"17289:13:7","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint160_$2049_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160"}},"visibility":"internal"}],"id":2307,"initialValue":{"arguments":[{"expression":{"id":2301,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2273,"src":"17331:4:7","typeDescriptions":{"typeIdentifier":"t_struct$_Trace160_$2044_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace160 storage pointer"}},"id":2302,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17336:12:7","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":2043,"src":"17331:17:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage ref"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2305,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2303,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2283,"src":"17350:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":2304,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17356:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17350:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage ref"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2300,"name":"_unsafeAccess","nodeType":"Identifier","overloadedDeclarations":[1537,2039,2541],"referencedDeclaration":2541,"src":"17317:13:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage_ptr_$_t_uint256_$returns$_t_struct$_Checkpoint160_$2049_storage_ptr_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage pointer,uint256) pure returns (struct CheckpointsUpgradeable.Checkpoint160 storage pointer)"}},"id":2306,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17317:41:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint160_$2049_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"17289:69:7"},{"expression":{"components":[{"hexValue":"74727565","id":2308,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"17380:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"expression":{"id":2309,"name":"ckpt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2299,"src":"17386:4:7","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint160_$2049_memory_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160 memory"}},"id":2310,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17391:4:7","memberName":"_key","nodeType":"MemberAccess","referencedDeclaration":2046,"src":"17386:9:7","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},{"expression":{"id":2311,"name":"ckpt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2299,"src":"17397:4:7","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint160_$2049_memory_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160 memory"}},"id":2312,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17402:6:7","memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":2048,"src":"17397:11:7","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"id":2313,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17379:30:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint96_$_t_uint160_$","typeString":"tuple(bool,uint96,uint160)"}},"functionReturnParameters":2281,"id":2314,"nodeType":"Return","src":"17372:37:7"}]},"id":2316,"nodeType":"IfStatement","src":"17210:210:7","trueBody":{"id":2296,"nodeType":"Block","src":"17224:45:7","statements":[{"expression":{"components":[{"hexValue":"66616c7365","id":2291,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"17246:5:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":2292,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17253:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"30","id":2293,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17256:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":2294,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"17245:13:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0,int_const 0)"}},"functionReturnParameters":2281,"id":2295,"nodeType":"Return","src":"17238:20:7"}]}}]},"documentation":{"id":2270,"nodeType":"StructuredDocumentation","src":"16865:168:7","text":" @dev Returns whether there is a checkpoint in the structure (i.e. it is not empty), and if so the key and value\n in the most recent checkpoint."},"id":2318,"implemented":true,"kind":"function","modifiers":[],"name":"latestCheckpoint","nameLocation":"17047:16:7","nodeType":"FunctionDefinition","parameters":{"id":2274,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2273,"mutability":"mutable","name":"self","nameLocation":"17081:4:7","nodeType":"VariableDeclaration","scope":2318,"src":"17064:21:7","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Trace160_$2044_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace160"},"typeName":{"id":2272,"nodeType":"UserDefinedTypeName","pathNode":{"id":2271,"name":"Trace160","nameLocations":["17064:8:7"],"nodeType":"IdentifierPath","referencedDeclaration":2044,"src":"17064:8:7"},"referencedDeclaration":2044,"src":"17064:8:7","typeDescriptions":{"typeIdentifier":"t_struct$_Trace160_$2044_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace160"}},"visibility":"internal"}],"src":"17063:23:7"},"returnParameters":{"id":2281,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2276,"mutability":"mutable","name":"exists","nameLocation":"17115:6:7","nodeType":"VariableDeclaration","scope":2318,"src":"17110:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2275,"name":"bool","nodeType":"ElementaryTypeName","src":"17110:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2278,"mutability":"mutable","name":"_key","nameLocation":"17130:4:7","nodeType":"VariableDeclaration","scope":2318,"src":"17123:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":2277,"name":"uint96","nodeType":"ElementaryTypeName","src":"17123:6:7","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"},{"constant":false,"id":2280,"mutability":"mutable","name":"_value","nameLocation":"17144:6:7","nodeType":"VariableDeclaration","scope":2318,"src":"17136:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":2279,"name":"uint160","nodeType":"ElementaryTypeName","src":"17136:7:7","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"17109:42:7"},"scope":2542,"src":"17038:388:7","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":2331,"nodeType":"Block","src":"17565:48:7","statements":[{"expression":{"expression":{"expression":{"id":2327,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2322,"src":"17582:4:7","typeDescriptions":{"typeIdentifier":"t_struct$_Trace160_$2044_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace160 storage pointer"}},"id":2328,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17587:12:7","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":2043,"src":"17582:17:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage ref"}},"id":2329,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17600:6:7","memberName":"length","nodeType":"MemberAccess","src":"17582:24:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2326,"id":2330,"nodeType":"Return","src":"17575:31:7"}]},"documentation":{"id":2319,"nodeType":"StructuredDocumentation","src":"17432:57:7","text":" @dev Returns the number of checkpoint."},"id":2332,"implemented":true,"kind":"function","modifiers":[],"name":"length","nameLocation":"17503:6:7","nodeType":"FunctionDefinition","parameters":{"id":2323,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2322,"mutability":"mutable","name":"self","nameLocation":"17527:4:7","nodeType":"VariableDeclaration","scope":2332,"src":"17510:21:7","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Trace160_$2044_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace160"},"typeName":{"id":2321,"nodeType":"UserDefinedTypeName","pathNode":{"id":2320,"name":"Trace160","nameLocations":["17510:8:7"],"nodeType":"IdentifierPath","referencedDeclaration":2044,"src":"17510:8:7"},"referencedDeclaration":2044,"src":"17510:8:7","typeDescriptions":{"typeIdentifier":"t_struct$_Trace160_$2044_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace160"}},"visibility":"internal"}],"src":"17509:23:7"},"returnParameters":{"id":2326,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2325,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2332,"src":"17556:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2324,"name":"uint256","nodeType":"ElementaryTypeName","src":"17556:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17555:9:7"},"scope":2542,"src":"17494:119:7","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":2421,"nodeType":"Block","src":"17898:727:7","statements":[{"assignments":[2349],"declarations":[{"constant":false,"id":2349,"mutability":"mutable","name":"pos","nameLocation":"17916:3:7","nodeType":"VariableDeclaration","scope":2421,"src":"17908:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2348,"name":"uint256","nodeType":"ElementaryTypeName","src":"17908:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2352,"initialValue":{"expression":{"id":2350,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2337,"src":"17922:4:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage pointer"}},"id":2351,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17927:6:7","memberName":"length","nodeType":"MemberAccess","src":"17922:11:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"17908:25:7"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2355,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2353,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2349,"src":"17948:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2354,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17954:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"17948:7:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2419,"nodeType":"Block","src":"18511:108:7","statements":[{"expression":{"arguments":[{"arguments":[{"id":2410,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2339,"src":"18556:3:7","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},{"id":2411,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2341,"src":"18569:5:7","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint96","typeString":"uint96"},{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":2409,"name":"Checkpoint160","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2049,"src":"18535:13:7","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Checkpoint160_$2049_storage_ptr_$","typeString":"type(struct CheckpointsUpgradeable.Checkpoint160 storage pointer)"}},"id":2412,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["18550:4:7","18561:6:7"],"names":["_key","_value"],"nodeType":"FunctionCall","src":"18535:41:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint160_$2049_memory_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160 memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Checkpoint160_$2049_memory_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160 memory"}],"expression":{"id":2406,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2337,"src":"18525:4:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage pointer"}},"id":2408,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18530:4:7","memberName":"push","nodeType":"MemberAccess","src":"18525:9:7","typeDescriptions":{"typeIdentifier":"t_function_arraypush_nonpayable$_t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage_ptr_$_t_struct$_Checkpoint160_$2049_storage_$returns$__$bound_to$_t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage_ptr_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage pointer,struct CheckpointsUpgradeable.Checkpoint160 storage ref)"}},"id":2413,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18525:52:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2414,"nodeType":"ExpressionStatement","src":"18525:52:7"},{"expression":{"components":[{"hexValue":"30","id":2415,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18599:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":2416,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2341,"src":"18602:5:7","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"id":2417,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18598:10:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_rational_0_by_1_$_t_uint160_$","typeString":"tuple(int_const 0,uint160)"}},"functionReturnParameters":2347,"id":2418,"nodeType":"Return","src":"18591:17:7"}]},"id":2420,"nodeType":"IfStatement","src":"17944:675:7","trueBody":{"id":2405,"nodeType":"Block","src":"17957:548:7","statements":[{"assignments":[2358],"declarations":[{"constant":false,"id":2358,"mutability":"mutable","name":"last","nameLocation":"18044:4:7","nodeType":"VariableDeclaration","scope":2405,"src":"18023:25:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint160_$2049_memory_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160"},"typeName":{"id":2357,"nodeType":"UserDefinedTypeName","pathNode":{"id":2356,"name":"Checkpoint160","nameLocations":["18023:13:7"],"nodeType":"IdentifierPath","referencedDeclaration":2049,"src":"18023:13:7"},"referencedDeclaration":2049,"src":"18023:13:7","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint160_$2049_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160"}},"visibility":"internal"}],"id":2365,"initialValue":{"arguments":[{"id":2360,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2337,"src":"18065:4:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage pointer"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2363,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2361,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2349,"src":"18071:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":2362,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18077:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"18071:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage pointer"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2359,"name":"_unsafeAccess","nodeType":"Identifier","overloadedDeclarations":[1537,2039,2541],"referencedDeclaration":2541,"src":"18051:13:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage_ptr_$_t_uint256_$returns$_t_struct$_Checkpoint160_$2049_storage_ptr_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage pointer,uint256) pure returns (struct CheckpointsUpgradeable.Checkpoint160 storage pointer)"}},"id":2364,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18051:28:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint160_$2049_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"18023:56:7"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint96","typeString":"uint96"},"id":2370,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2367,"name":"last","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2358,"src":"18157:4:7","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint160_$2049_memory_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160 memory"}},"id":2368,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"18162:4:7","memberName":"_key","nodeType":"MemberAccess","referencedDeclaration":2046,"src":"18157:9:7","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":2369,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2339,"src":"18170:3:7","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"src":"18157:16:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"436865636b706f696e743a2064656372656173696e67206b657973","id":2371,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"18175:29:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_4f6b1769383e9e01fad001f10d4f9180a25f63424c2597419936b157d29f34ec","typeString":"literal_string \"Checkpoint: decreasing keys\""},"value":"Checkpoint: decreasing keys"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_4f6b1769383e9e01fad001f10d4f9180a25f63424c2597419936b157d29f34ec","typeString":"literal_string \"Checkpoint: decreasing keys\""}],"id":2366,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"18149:7:7","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2372,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18149:56:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2373,"nodeType":"ExpressionStatement","src":"18149:56:7"},{"condition":{"commonType":{"typeIdentifier":"t_uint96","typeString":"uint96"},"id":2377,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2374,"name":"last","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2358,"src":"18269:4:7","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint160_$2049_memory_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160 memory"}},"id":2375,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"18274:4:7","memberName":"_key","nodeType":"MemberAccess","referencedDeclaration":2046,"src":"18269:9:7","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":2376,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2339,"src":"18282:3:7","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"src":"18269:16:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2398,"nodeType":"Block","src":"18369:85:7","statements":[{"expression":{"arguments":[{"arguments":[{"id":2393,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2339,"src":"18418:3:7","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},{"id":2394,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2341,"src":"18431:5:7","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint96","typeString":"uint96"},{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":2392,"name":"Checkpoint160","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2049,"src":"18397:13:7","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Checkpoint160_$2049_storage_ptr_$","typeString":"type(struct CheckpointsUpgradeable.Checkpoint160 storage pointer)"}},"id":2395,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["18412:4:7","18423:6:7"],"names":["_key","_value"],"nodeType":"FunctionCall","src":"18397:41:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint160_$2049_memory_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160 memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Checkpoint160_$2049_memory_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160 memory"}],"expression":{"id":2389,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2337,"src":"18387:4:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage pointer"}},"id":2391,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18392:4:7","memberName":"push","nodeType":"MemberAccess","src":"18387:9:7","typeDescriptions":{"typeIdentifier":"t_function_arraypush_nonpayable$_t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage_ptr_$_t_struct$_Checkpoint160_$2049_storage_$returns$__$bound_to$_t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage_ptr_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage pointer,struct CheckpointsUpgradeable.Checkpoint160 storage ref)"}},"id":2396,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18387:52:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2397,"nodeType":"ExpressionStatement","src":"18387:52:7"}]},"id":2399,"nodeType":"IfStatement","src":"18265:189:7","trueBody":{"id":2388,"nodeType":"Block","src":"18287:76:7","statements":[{"expression":{"id":2386,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[{"id":2379,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2337,"src":"18319:4:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage pointer"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2382,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2380,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2349,"src":"18325:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":2381,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18331:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"18325:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage pointer"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2378,"name":"_unsafeAccess","nodeType":"Identifier","overloadedDeclarations":[1537,2039,2541],"referencedDeclaration":2541,"src":"18305:13:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage_ptr_$_t_uint256_$returns$_t_struct$_Checkpoint160_$2049_storage_ptr_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage pointer,uint256) pure returns (struct CheckpointsUpgradeable.Checkpoint160 storage pointer)"}},"id":2383,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18305:28:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint160_$2049_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage pointer"}},"id":2384,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"18334:6:7","memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":2048,"src":"18305:35:7","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2385,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2341,"src":"18343:5:7","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"18305:43:7","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"id":2387,"nodeType":"ExpressionStatement","src":"18305:43:7"}]}},{"expression":{"components":[{"expression":{"id":2400,"name":"last","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2358,"src":"18475:4:7","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint160_$2049_memory_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160 memory"}},"id":2401,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"18480:6:7","memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":2048,"src":"18475:11:7","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":2402,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2341,"src":"18488:5:7","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"id":2403,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18474:20:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint160_$_t_uint160_$","typeString":"tuple(uint160,uint160)"}},"functionReturnParameters":2347,"id":2404,"nodeType":"Return","src":"18467:27:7"}]}}]},"documentation":{"id":2333,"nodeType":"StructuredDocumentation","src":"17619:165:7","text":" @dev Pushes a (`key`, `value`) pair into an ordered list of checkpoints, either by inserting a new checkpoint,\n or by updating the last one."},"id":2422,"implemented":true,"kind":"function","modifiers":[],"name":"_insert","nameLocation":"17798:7:7","nodeType":"FunctionDefinition","parameters":{"id":2342,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2337,"mutability":"mutable","name":"self","nameLocation":"17830:4:7","nodeType":"VariableDeclaration","scope":2422,"src":"17806:28:7","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160[]"},"typeName":{"baseType":{"id":2335,"nodeType":"UserDefinedTypeName","pathNode":{"id":2334,"name":"Checkpoint160","nameLocations":["17806:13:7"],"nodeType":"IdentifierPath","referencedDeclaration":2049,"src":"17806:13:7"},"referencedDeclaration":2049,"src":"17806:13:7","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint160_$2049_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160"}},"id":2336,"nodeType":"ArrayTypeName","src":"17806:15:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160[]"}},"visibility":"internal"},{"constant":false,"id":2339,"mutability":"mutable","name":"key","nameLocation":"17843:3:7","nodeType":"VariableDeclaration","scope":2422,"src":"17836:10:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":2338,"name":"uint96","nodeType":"ElementaryTypeName","src":"17836:6:7","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"},{"constant":false,"id":2341,"mutability":"mutable","name":"value","nameLocation":"17856:5:7","nodeType":"VariableDeclaration","scope":2422,"src":"17848:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":2340,"name":"uint160","nodeType":"ElementaryTypeName","src":"17848:7:7","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"17805:57:7"},"returnParameters":{"id":2347,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2344,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2422,"src":"17880:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":2343,"name":"uint160","nodeType":"ElementaryTypeName","src":"17880:7:7","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":2346,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2422,"src":"17889:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":2345,"name":"uint160","nodeType":"ElementaryTypeName","src":"17889:7:7","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"17879:18:7"},"scope":2542,"src":"17789:836:7","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":2473,"nodeType":"Block","src":"19137:278:7","statements":[{"body":{"id":2469,"nodeType":"Block","src":"19166:222:7","statements":[{"assignments":[2442],"declarations":[{"constant":false,"id":2442,"mutability":"mutable","name":"mid","nameLocation":"19188:3:7","nodeType":"VariableDeclaration","scope":2469,"src":"19180:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2441,"name":"uint256","nodeType":"ElementaryTypeName","src":"19180:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2448,"initialValue":{"arguments":[{"id":2445,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2431,"src":"19218:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2446,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2433,"src":"19223:4:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":2443,"name":"MathUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3700,"src":"19194:15:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_MathUpgradeable_$3700_$","typeString":"type(library MathUpgradeable)"}},"id":2444,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19210:7:7","memberName":"average","nodeType":"MemberAccess","referencedDeclaration":2900,"src":"19194:23:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":2447,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19194:34:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"19180:48:7"},{"condition":{"commonType":{"typeIdentifier":"t_uint96","typeString":"uint96"},"id":2455,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":2450,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2427,"src":"19260:4:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage pointer"}},{"id":2451,"name":"mid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2442,"src":"19266:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage pointer"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2449,"name":"_unsafeAccess","nodeType":"Identifier","overloadedDeclarations":[1537,2039,2541],"referencedDeclaration":2541,"src":"19246:13:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage_ptr_$_t_uint256_$returns$_t_struct$_Checkpoint160_$2049_storage_ptr_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage pointer,uint256) pure returns (struct CheckpointsUpgradeable.Checkpoint160 storage pointer)"}},"id":2452,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19246:24:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint160_$2049_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage pointer"}},"id":2453,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19271:4:7","memberName":"_key","nodeType":"MemberAccess","referencedDeclaration":2046,"src":"19246:29:7","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":2454,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2429,"src":"19278:3:7","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"src":"19246:35:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2467,"nodeType":"Block","src":"19332:46:7","statements":[{"expression":{"id":2465,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2461,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2431,"src":"19350:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2464,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2462,"name":"mid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2442,"src":"19356:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":2463,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19362:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"19356:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19350:13:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2466,"nodeType":"ExpressionStatement","src":"19350:13:7"}]},"id":2468,"nodeType":"IfStatement","src":"19242:136:7","trueBody":{"id":2460,"nodeType":"Block","src":"19283:43:7","statements":[{"expression":{"id":2458,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2456,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2433,"src":"19301:4:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2457,"name":"mid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2442,"src":"19308:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19301:10:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2459,"nodeType":"ExpressionStatement","src":"19301:10:7"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2440,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2438,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2431,"src":"19154:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":2439,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2433,"src":"19160:4:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19154:10:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2470,"nodeType":"WhileStatement","src":"19147:241:7"},{"expression":{"id":2471,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2433,"src":"19404:4:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2437,"id":2472,"nodeType":"Return","src":"19397:11:7"}]},"documentation":{"id":2423,"nodeType":"StructuredDocumentation","src":"18631:335:7","text":" @dev Return the index of the last (most recent) checkpoint with key lower or equal than the search key, or `high` if there is none.\n `low` and `high` define a section where to do the search, with inclusive `low` and exclusive `high`.\n WARNING: `high` should not be greater than the array's length."},"id":2474,"implemented":true,"kind":"function","modifiers":[],"name":"_upperBinaryLookup","nameLocation":"18980:18:7","nodeType":"FunctionDefinition","parameters":{"id":2434,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2427,"mutability":"mutable","name":"self","nameLocation":"19032:4:7","nodeType":"VariableDeclaration","scope":2474,"src":"19008:28:7","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160[]"},"typeName":{"baseType":{"id":2425,"nodeType":"UserDefinedTypeName","pathNode":{"id":2424,"name":"Checkpoint160","nameLocations":["19008:13:7"],"nodeType":"IdentifierPath","referencedDeclaration":2049,"src":"19008:13:7"},"referencedDeclaration":2049,"src":"19008:13:7","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint160_$2049_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160"}},"id":2426,"nodeType":"ArrayTypeName","src":"19008:15:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160[]"}},"visibility":"internal"},{"constant":false,"id":2429,"mutability":"mutable","name":"key","nameLocation":"19053:3:7","nodeType":"VariableDeclaration","scope":2474,"src":"19046:10:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":2428,"name":"uint96","nodeType":"ElementaryTypeName","src":"19046:6:7","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"},{"constant":false,"id":2431,"mutability":"mutable","name":"low","nameLocation":"19074:3:7","nodeType":"VariableDeclaration","scope":2474,"src":"19066:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2430,"name":"uint256","nodeType":"ElementaryTypeName","src":"19066:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2433,"mutability":"mutable","name":"high","nameLocation":"19095:4:7","nodeType":"VariableDeclaration","scope":2474,"src":"19087:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2432,"name":"uint256","nodeType":"ElementaryTypeName","src":"19087:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18998:107:7"},"returnParameters":{"id":2437,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2436,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2474,"src":"19128:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2435,"name":"uint256","nodeType":"ElementaryTypeName","src":"19128:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"19127:9:7"},"scope":2542,"src":"18971:444:7","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":2525,"nodeType":"Block","src":"19928:278:7","statements":[{"body":{"id":2521,"nodeType":"Block","src":"19957:222:7","statements":[{"assignments":[2494],"declarations":[{"constant":false,"id":2494,"mutability":"mutable","name":"mid","nameLocation":"19979:3:7","nodeType":"VariableDeclaration","scope":2521,"src":"19971:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2493,"name":"uint256","nodeType":"ElementaryTypeName","src":"19971:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2500,"initialValue":{"arguments":[{"id":2497,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2483,"src":"20009:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2498,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2485,"src":"20014:4:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":2495,"name":"MathUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3700,"src":"19985:15:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_MathUpgradeable_$3700_$","typeString":"type(library MathUpgradeable)"}},"id":2496,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"20001:7:7","memberName":"average","nodeType":"MemberAccess","referencedDeclaration":2900,"src":"19985:23:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":2499,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19985:34:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"19971:48:7"},{"condition":{"commonType":{"typeIdentifier":"t_uint96","typeString":"uint96"},"id":2507,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":2502,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2479,"src":"20051:4:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage pointer"}},{"id":2503,"name":"mid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2494,"src":"20057:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage pointer"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2501,"name":"_unsafeAccess","nodeType":"Identifier","overloadedDeclarations":[1537,2039,2541],"referencedDeclaration":2541,"src":"20037:13:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage_ptr_$_t_uint256_$returns$_t_struct$_Checkpoint160_$2049_storage_ptr_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage pointer,uint256) pure returns (struct CheckpointsUpgradeable.Checkpoint160 storage pointer)"}},"id":2504,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20037:24:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint160_$2049_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage pointer"}},"id":2505,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"20062:4:7","memberName":"_key","nodeType":"MemberAccess","referencedDeclaration":2046,"src":"20037:29:7","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":2506,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2481,"src":"20069:3:7","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"src":"20037:35:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2519,"nodeType":"Block","src":"20126:43:7","statements":[{"expression":{"id":2517,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2515,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2485,"src":"20144:4:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2516,"name":"mid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2494,"src":"20151:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20144:10:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2518,"nodeType":"ExpressionStatement","src":"20144:10:7"}]},"id":2520,"nodeType":"IfStatement","src":"20033:136:7","trueBody":{"id":2514,"nodeType":"Block","src":"20074:46:7","statements":[{"expression":{"id":2512,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2508,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2483,"src":"20092:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2511,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2509,"name":"mid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2494,"src":"20098:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":2510,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20104:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"20098:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20092:13:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2513,"nodeType":"ExpressionStatement","src":"20092:13:7"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2492,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2490,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2483,"src":"19945:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":2491,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2485,"src":"19951:4:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19945:10:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2522,"nodeType":"WhileStatement","src":"19938:241:7"},{"expression":{"id":2523,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2485,"src":"20195:4:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2489,"id":2524,"nodeType":"Return","src":"20188:11:7"}]},"documentation":{"id":2475,"nodeType":"StructuredDocumentation","src":"19421:336:7","text":" @dev Return the index of the first (oldest) checkpoint with key is greater or equal than the search key, or `high` if there is none.\n `low` and `high` define a section where to do the search, with inclusive `low` and exclusive `high`.\n WARNING: `high` should not be greater than the array's length."},"id":2526,"implemented":true,"kind":"function","modifiers":[],"name":"_lowerBinaryLookup","nameLocation":"19771:18:7","nodeType":"FunctionDefinition","parameters":{"id":2486,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2479,"mutability":"mutable","name":"self","nameLocation":"19823:4:7","nodeType":"VariableDeclaration","scope":2526,"src":"19799:28:7","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160[]"},"typeName":{"baseType":{"id":2477,"nodeType":"UserDefinedTypeName","pathNode":{"id":2476,"name":"Checkpoint160","nameLocations":["19799:13:7"],"nodeType":"IdentifierPath","referencedDeclaration":2049,"src":"19799:13:7"},"referencedDeclaration":2049,"src":"19799:13:7","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint160_$2049_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160"}},"id":2478,"nodeType":"ArrayTypeName","src":"19799:15:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160[]"}},"visibility":"internal"},{"constant":false,"id":2481,"mutability":"mutable","name":"key","nameLocation":"19844:3:7","nodeType":"VariableDeclaration","scope":2526,"src":"19837:10:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":2480,"name":"uint96","nodeType":"ElementaryTypeName","src":"19837:6:7","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"},{"constant":false,"id":2483,"mutability":"mutable","name":"low","nameLocation":"19865:3:7","nodeType":"VariableDeclaration","scope":2526,"src":"19857:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2482,"name":"uint256","nodeType":"ElementaryTypeName","src":"19857:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2485,"mutability":"mutable","name":"high","nameLocation":"19886:4:7","nodeType":"VariableDeclaration","scope":2526,"src":"19878:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2484,"name":"uint256","nodeType":"ElementaryTypeName","src":"19878:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"19789:107:7"},"returnParameters":{"id":2489,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2488,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2526,"src":"19919:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2487,"name":"uint256","nodeType":"ElementaryTypeName","src":"19919:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"19918:9:7"},"scope":2542,"src":"19762:444:7","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":2540,"nodeType":"Block","src":"20489:125:7","statements":[{"AST":{"nodeType":"YulBlock","src":"20508:100:7","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"20529:1:7","type":"","value":"0"},{"name":"self.slot","nodeType":"YulIdentifier","src":"20532:9:7"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"20522:6:7"},"nodeType":"YulFunctionCall","src":"20522:20:7"},"nodeType":"YulExpressionStatement","src":"20522:20:7"},{"nodeType":"YulAssignment","src":"20555:43:7","value":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"20584:1:7","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"20587:4:7","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nodeType":"YulIdentifier","src":"20574:9:7"},"nodeType":"YulFunctionCall","src":"20574:18:7"},{"name":"pos","nodeType":"YulIdentifier","src":"20594:3:7"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20570:3:7"},"nodeType":"YulFunctionCall","src":"20570:28:7"},"variableNames":[{"name":"result.slot","nodeType":"YulIdentifier","src":"20555:11:7"}]}]},"evmVersion":"london","externalReferences":[{"declaration":2533,"isOffset":false,"isSlot":false,"src":"20594:3:7","valueSize":1},{"declaration":2537,"isOffset":false,"isSlot":true,"src":"20555:11:7","suffix":"slot","valueSize":1},{"declaration":2531,"isOffset":false,"isSlot":true,"src":"20532:9:7","suffix":"slot","valueSize":1}],"id":2539,"nodeType":"InlineAssembly","src":"20499:109:7"}]},"documentation":{"id":2527,"nodeType":"StructuredDocumentation","src":"20212:132:7","text":" @dev Access an element of the array without performing bounds check. The position is assumed to be within bounds."},"id":2541,"implemented":true,"kind":"function","modifiers":[],"name":"_unsafeAccess","nameLocation":"20358:13:7","nodeType":"FunctionDefinition","parameters":{"id":2534,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2531,"mutability":"mutable","name":"self","nameLocation":"20405:4:7","nodeType":"VariableDeclaration","scope":2541,"src":"20381:28:7","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160[]"},"typeName":{"baseType":{"id":2529,"nodeType":"UserDefinedTypeName","pathNode":{"id":2528,"name":"Checkpoint160","nameLocations":["20381:13:7"],"nodeType":"IdentifierPath","referencedDeclaration":2049,"src":"20381:13:7"},"referencedDeclaration":2049,"src":"20381:13:7","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint160_$2049_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160"}},"id":2530,"nodeType":"ArrayTypeName","src":"20381:15:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160[]"}},"visibility":"internal"},{"constant":false,"id":2533,"mutability":"mutable","name":"pos","nameLocation":"20427:3:7","nodeType":"VariableDeclaration","scope":2541,"src":"20419:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2532,"name":"uint256","nodeType":"ElementaryTypeName","src":"20419:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20371:65:7"},"returnParameters":{"id":2538,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2537,"mutability":"mutable","name":"result","nameLocation":"20481:6:7","nodeType":"VariableDeclaration","scope":2541,"src":"20459:28:7","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint160_$2049_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160"},"typeName":{"id":2536,"nodeType":"UserDefinedTypeName","pathNode":{"id":2535,"name":"Checkpoint160","nameLocations":["20459:13:7"],"nodeType":"IdentifierPath","referencedDeclaration":2049,"src":"20459:13:7"},"referencedDeclaration":2049,"src":"20459:13:7","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint160_$2049_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160"}},"visibility":"internal"}],"src":"20458:30:7"},"scope":2542,"src":"20349:265:7","stateMutability":"pure","virtual":false,"visibility":"private"}],"scope":2543,"src":"730:19886:7","usedErrors":[]}],"src":"193:20424:7"},"id":7},"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol","exportedSymbols":{"ContextUpgradeable":[2593],"Initializable":[534]},"id":2594,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2544,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"101:23:8"},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","file":"../proxy/utils/Initializable.sol","id":2546,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2594,"sourceUnit":535,"src":"125:63:8","symbolAliases":[{"foreign":{"id":2545,"name":"Initializable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":534,"src":"133:13:8","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":2548,"name":"Initializable","nameLocations":["727:13:8"],"nodeType":"IdentifierPath","referencedDeclaration":534,"src":"727:13:8"},"id":2549,"nodeType":"InheritanceSpecifier","src":"727:13:8"}],"canonicalName":"ContextUpgradeable","contractDependencies":[],"contractKind":"contract","documentation":{"id":2547,"nodeType":"StructuredDocumentation","src":"190:496:8","text":" @dev Provides information about the current execution context, including the\n sender of the transaction and its data. While these are generally available\n via msg.sender and msg.data, they should not be accessed in such a direct\n manner, since when dealing with meta-transactions the account sending and\n paying for execution may not be the actual sender (as far as an application\n is concerned).\n This contract is only required for intermediate, library-like contracts."},"fullyImplemented":true,"id":2593,"linearizedBaseContracts":[2593,534],"name":"ContextUpgradeable","nameLocation":"705:18:8","nodeType":"ContractDefinition","nodes":[{"body":{"id":2554,"nodeType":"Block","src":"799:7:8","statements":[]},"id":2555,"implemented":true,"kind":"function","modifiers":[{"id":2552,"kind":"modifierInvocation","modifierName":{"id":2551,"name":"onlyInitializing","nameLocations":["782:16:8"],"nodeType":"IdentifierPath","referencedDeclaration":479,"src":"782:16:8"},"nodeType":"ModifierInvocation","src":"782:16:8"}],"name":"__Context_init","nameLocation":"756:14:8","nodeType":"FunctionDefinition","parameters":{"id":2550,"nodeType":"ParameterList","parameters":[],"src":"770:2:8"},"returnParameters":{"id":2553,"nodeType":"ParameterList","parameters":[],"src":"799:0:8"},"scope":2593,"src":"747:59:8","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2560,"nodeType":"Block","src":"874:7:8","statements":[]},"id":2561,"implemented":true,"kind":"function","modifiers":[{"id":2558,"kind":"modifierInvocation","modifierName":{"id":2557,"name":"onlyInitializing","nameLocations":["857:16:8"],"nodeType":"IdentifierPath","referencedDeclaration":479,"src":"857:16:8"},"nodeType":"ModifierInvocation","src":"857:16:8"}],"name":"__Context_init_unchained","nameLocation":"821:24:8","nodeType":"FunctionDefinition","parameters":{"id":2556,"nodeType":"ParameterList","parameters":[],"src":"845:2:8"},"returnParameters":{"id":2559,"nodeType":"ParameterList","parameters":[],"src":"874:0:8"},"scope":2593,"src":"812:69:8","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2569,"nodeType":"Block","src":"948:34:8","statements":[{"expression":{"expression":{"id":2566,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967281,"src":"965:3:8","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2567,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"969:6:8","memberName":"sender","nodeType":"MemberAccess","src":"965:10:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2565,"id":2568,"nodeType":"Return","src":"958:17:8"}]},"id":2570,"implemented":true,"kind":"function","modifiers":[],"name":"_msgSender","nameLocation":"895:10:8","nodeType":"FunctionDefinition","parameters":{"id":2562,"nodeType":"ParameterList","parameters":[],"src":"905:2:8"},"returnParameters":{"id":2565,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2564,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2570,"src":"939:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2563,"name":"address","nodeType":"ElementaryTypeName","src":"939:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"938:9:8"},"scope":2593,"src":"886:96:8","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":2578,"nodeType":"Block","src":"1055:32:8","statements":[{"expression":{"expression":{"id":2575,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967281,"src":"1072:3:8","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2576,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1076:4:8","memberName":"data","nodeType":"MemberAccess","src":"1072:8:8","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"functionReturnParameters":2574,"id":2577,"nodeType":"Return","src":"1065:15:8"}]},"id":2579,"implemented":true,"kind":"function","modifiers":[],"name":"_msgData","nameLocation":"997:8:8","nodeType":"FunctionDefinition","parameters":{"id":2571,"nodeType":"ParameterList","parameters":[],"src":"1005:2:8"},"returnParameters":{"id":2574,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2573,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2579,"src":"1039:14:8","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2572,"name":"bytes","nodeType":"ElementaryTypeName","src":"1039:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1038:16:8"},"scope":2593,"src":"988:99:8","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":2586,"nodeType":"Block","src":"1165:25:8","statements":[{"expression":{"hexValue":"30","id":2584,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1182:1:8","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":2583,"id":2585,"nodeType":"Return","src":"1175:8:8"}]},"id":2587,"implemented":true,"kind":"function","modifiers":[],"name":"_contextSuffixLength","nameLocation":"1102:20:8","nodeType":"FunctionDefinition","parameters":{"id":2580,"nodeType":"ParameterList","parameters":[],"src":"1122:2:8"},"returnParameters":{"id":2583,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2582,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2587,"src":"1156:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2581,"name":"uint256","nodeType":"ElementaryTypeName","src":"1156:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1155:9:8"},"scope":2593,"src":"1093:97:8","stateMutability":"view","virtual":true,"visibility":"internal"},{"constant":false,"documentation":{"id":2588,"nodeType":"StructuredDocumentation","src":"1196:254:8","text":" @dev This empty reserved space is put in place to allow future versions to add new\n variables without shifting down storage in the inheritance chain.\n See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"},"id":2592,"mutability":"mutable","name":"__gap","nameLocation":"1475:5:8","nodeType":"VariableDeclaration","scope":2593,"src":"1455:25:8","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$50_storage","typeString":"uint256[50]"},"typeName":{"baseType":{"id":2589,"name":"uint256","nodeType":"ElementaryTypeName","src":"1455:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2591,"length":{"hexValue":"3530","id":2590,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1463:2:8","typeDescriptions":{"typeIdentifier":"t_rational_50_by_1","typeString":"int_const 50"},"value":"50"},"nodeType":"ArrayTypeName","src":"1455:11:8","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$50_storage_ptr","typeString":"uint256[50]"}},"visibility":"private"}],"scope":2594,"src":"687:796:8","usedErrors":[]}],"src":"101:1383:8"},"id":8},"@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol","exportedSymbols":{"CountersUpgradeable":[2667]},"id":2668,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2595,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"87:23:9"},{"abstract":false,"baseContracts":[],"canonicalName":"CountersUpgradeable","contractDependencies":[],"contractKind":"library","documentation":{"id":2596,"nodeType":"StructuredDocumentation","src":"112:311:9","text":" @title Counters\n @author Matt Condon (@shrugs)\n @dev Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number\n of elements in a mapping, issuing ERC721 ids, or counting request ids.\n Include with `using Counters for Counters.Counter;`"},"fullyImplemented":true,"id":2667,"linearizedBaseContracts":[2667],"name":"CountersUpgradeable","nameLocation":"432:19:9","nodeType":"ContractDefinition","nodes":[{"canonicalName":"CountersUpgradeable.Counter","id":2599,"members":[{"constant":false,"id":2598,"mutability":"mutable","name":"_value","nameLocation":"805:6:9","nodeType":"VariableDeclaration","scope":2599,"src":"797:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2597,"name":"uint256","nodeType":"ElementaryTypeName","src":"797:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"Counter","nameLocation":"465:7:9","nodeType":"StructDefinition","scope":2667,"src":"458:374:9","visibility":"public"},{"body":{"id":2610,"nodeType":"Block","src":"912:38:9","statements":[{"expression":{"expression":{"id":2607,"name":"counter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2602,"src":"929:7:9","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$2599_storage_ptr","typeString":"struct CountersUpgradeable.Counter storage pointer"}},"id":2608,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"937:6:9","memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":2598,"src":"929:14:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2606,"id":2609,"nodeType":"Return","src":"922:21:9"}]},"id":2611,"implemented":true,"kind":"function","modifiers":[],"name":"current","nameLocation":"847:7:9","nodeType":"FunctionDefinition","parameters":{"id":2603,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2602,"mutability":"mutable","name":"counter","nameLocation":"871:7:9","nodeType":"VariableDeclaration","scope":2611,"src":"855:23:9","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$2599_storage_ptr","typeString":"struct CountersUpgradeable.Counter"},"typeName":{"id":2601,"nodeType":"UserDefinedTypeName","pathNode":{"id":2600,"name":"Counter","nameLocations":["855:7:9"],"nodeType":"IdentifierPath","referencedDeclaration":2599,"src":"855:7:9"},"referencedDeclaration":2599,"src":"855:7:9","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$2599_storage_ptr","typeString":"struct CountersUpgradeable.Counter"}},"visibility":"internal"}],"src":"854:25:9"},"returnParameters":{"id":2606,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2605,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2611,"src":"903:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2604,"name":"uint256","nodeType":"ElementaryTypeName","src":"903:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"902:9:9"},"scope":2667,"src":"838:112:9","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":2624,"nodeType":"Block","src":"1009:70:9","statements":[{"id":2623,"nodeType":"UncheckedBlock","src":"1019:54:9","statements":[{"expression":{"id":2621,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":2617,"name":"counter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2614,"src":"1043:7:9","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$2599_storage_ptr","typeString":"struct CountersUpgradeable.Counter storage pointer"}},"id":2619,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1051:6:9","memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":2598,"src":"1043:14:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":2620,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1061:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1043:19:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2622,"nodeType":"ExpressionStatement","src":"1043:19:9"}]}]},"id":2625,"implemented":true,"kind":"function","modifiers":[],"name":"increment","nameLocation":"965:9:9","nodeType":"FunctionDefinition","parameters":{"id":2615,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2614,"mutability":"mutable","name":"counter","nameLocation":"991:7:9","nodeType":"VariableDeclaration","scope":2625,"src":"975:23:9","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$2599_storage_ptr","typeString":"struct CountersUpgradeable.Counter"},"typeName":{"id":2613,"nodeType":"UserDefinedTypeName","pathNode":{"id":2612,"name":"Counter","nameLocations":["975:7:9"],"nodeType":"IdentifierPath","referencedDeclaration":2599,"src":"975:7:9"},"referencedDeclaration":2599,"src":"975:7:9","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$2599_storage_ptr","typeString":"struct CountersUpgradeable.Counter"}},"visibility":"internal"}],"src":"974:25:9"},"returnParameters":{"id":2616,"nodeType":"ParameterList","parameters":[],"src":"1009:0:9"},"scope":2667,"src":"956:123:9","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2652,"nodeType":"Block","src":"1138:176:9","statements":[{"assignments":[2632],"declarations":[{"constant":false,"id":2632,"mutability":"mutable","name":"value","nameLocation":"1156:5:9","nodeType":"VariableDeclaration","scope":2652,"src":"1148:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2631,"name":"uint256","nodeType":"ElementaryTypeName","src":"1148:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2635,"initialValue":{"expression":{"id":2633,"name":"counter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2628,"src":"1164:7:9","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$2599_storage_ptr","typeString":"struct CountersUpgradeable.Counter storage pointer"}},"id":2634,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1172:6:9","memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":2598,"src":"1164:14:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1148:30:9"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2639,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2637,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2632,"src":"1196:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2638,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1204:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1196:9:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"436f756e7465723a2064656372656d656e74206f766572666c6f77","id":2640,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1207:29:9","typeDescriptions":{"typeIdentifier":"t_stringliteral_1dfd0d5389474d871b8e8929aab9d4def041f55f90f625754fb5f9a9ba08af6f","typeString":"literal_string \"Counter: decrement overflow\""},"value":"Counter: decrement overflow"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_1dfd0d5389474d871b8e8929aab9d4def041f55f90f625754fb5f9a9ba08af6f","typeString":"literal_string \"Counter: decrement overflow\""}],"id":2636,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"1188:7:9","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2641,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1188:49:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2642,"nodeType":"ExpressionStatement","src":"1188:49:9"},{"id":2651,"nodeType":"UncheckedBlock","src":"1247:61:9","statements":[{"expression":{"id":2649,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":2643,"name":"counter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2628,"src":"1271:7:9","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$2599_storage_ptr","typeString":"struct CountersUpgradeable.Counter storage pointer"}},"id":2645,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1279:6:9","memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":2598,"src":"1271:14:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2648,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2646,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2632,"src":"1288:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":2647,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1296:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1288:9:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1271:26:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2650,"nodeType":"ExpressionStatement","src":"1271:26:9"}]}]},"id":2653,"implemented":true,"kind":"function","modifiers":[],"name":"decrement","nameLocation":"1094:9:9","nodeType":"FunctionDefinition","parameters":{"id":2629,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2628,"mutability":"mutable","name":"counter","nameLocation":"1120:7:9","nodeType":"VariableDeclaration","scope":2653,"src":"1104:23:9","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$2599_storage_ptr","typeString":"struct CountersUpgradeable.Counter"},"typeName":{"id":2627,"nodeType":"UserDefinedTypeName","pathNode":{"id":2626,"name":"Counter","nameLocations":["1104:7:9"],"nodeType":"IdentifierPath","referencedDeclaration":2599,"src":"1104:7:9"},"referencedDeclaration":2599,"src":"1104:7:9","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$2599_storage_ptr","typeString":"struct CountersUpgradeable.Counter"}},"visibility":"internal"}],"src":"1103:25:9"},"returnParameters":{"id":2630,"nodeType":"ParameterList","parameters":[],"src":"1138:0:9"},"scope":2667,"src":"1085:229:9","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2665,"nodeType":"Block","src":"1369:35:9","statements":[{"expression":{"id":2663,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":2659,"name":"counter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2656,"src":"1379:7:9","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$2599_storage_ptr","typeString":"struct CountersUpgradeable.Counter storage pointer"}},"id":2661,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1387:6:9","memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":2598,"src":"1379:14:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":2662,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1396:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1379:18:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2664,"nodeType":"ExpressionStatement","src":"1379:18:9"}]},"id":2666,"implemented":true,"kind":"function","modifiers":[],"name":"reset","nameLocation":"1329:5:9","nodeType":"FunctionDefinition","parameters":{"id":2657,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2656,"mutability":"mutable","name":"counter","nameLocation":"1351:7:9","nodeType":"VariableDeclaration","scope":2666,"src":"1335:23:9","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$2599_storage_ptr","typeString":"struct CountersUpgradeable.Counter"},"typeName":{"id":2655,"nodeType":"UserDefinedTypeName","pathNode":{"id":2654,"name":"Counter","nameLocations":["1335:7:9"],"nodeType":"IdentifierPath","referencedDeclaration":2599,"src":"1335:7:9"},"referencedDeclaration":2599,"src":"1335:7:9","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$2599_storage_ptr","typeString":"struct CountersUpgradeable.Counter"}},"visibility":"internal"}],"src":"1334:25:9"},"returnParameters":{"id":2658,"nodeType":"ParameterList","parameters":[],"src":"1369:0:9"},"scope":2667,"src":"1320:84:9","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":2668,"src":"424:982:9","usedErrors":[]}],"src":"87:1320:9"},"id":9},"@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol","exportedSymbols":{"StorageSlotUpgradeable":[2777]},"id":2778,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2669,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"193:23:10"},{"abstract":false,"baseContracts":[],"canonicalName":"StorageSlotUpgradeable","contractDependencies":[],"contractKind":"library","documentation":{"id":2670,"nodeType":"StructuredDocumentation","src":"218:1201:10","text":" @dev Library for reading and writing primitive types to specific storage slots.\n Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\n This library helps with reading and writing to such slots without the need for inline assembly.\n The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\n Example usage to set ERC1967 implementation slot:\n ```solidity\n contract ERC1967 {\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n function _getImplementation() internal view returns (address) {\n return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\n }\n function _setImplementation(address newImplementation) internal {\n require(Address.isContract(newImplementation), \"ERC1967: new implementation is not a contract\");\n StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\n }\n }\n ```\n _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._\n _Available since v4.9 for `string`, `bytes`._"},"fullyImplemented":true,"id":2777,"linearizedBaseContracts":[2777],"name":"StorageSlotUpgradeable","nameLocation":"1428:22:10","nodeType":"ContractDefinition","nodes":[{"canonicalName":"StorageSlotUpgradeable.AddressSlot","id":2673,"members":[{"constant":false,"id":2672,"mutability":"mutable","name":"value","nameLocation":"1494:5:10","nodeType":"VariableDeclaration","scope":2673,"src":"1486:13:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2671,"name":"address","nodeType":"ElementaryTypeName","src":"1486:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"name":"AddressSlot","nameLocation":"1464:11:10","nodeType":"StructDefinition","scope":2777,"src":"1457:49:10","visibility":"public"},{"canonicalName":"StorageSlotUpgradeable.BooleanSlot","id":2676,"members":[{"constant":false,"id":2675,"mutability":"mutable","name":"value","nameLocation":"1546:5:10","nodeType":"VariableDeclaration","scope":2676,"src":"1541:10:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2674,"name":"bool","nodeType":"ElementaryTypeName","src":"1541:4:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"name":"BooleanSlot","nameLocation":"1519:11:10","nodeType":"StructDefinition","scope":2777,"src":"1512:46:10","visibility":"public"},{"canonicalName":"StorageSlotUpgradeable.Bytes32Slot","id":2679,"members":[{"constant":false,"id":2678,"mutability":"mutable","name":"value","nameLocation":"1601:5:10","nodeType":"VariableDeclaration","scope":2679,"src":"1593:13:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2677,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1593:7:10","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"name":"Bytes32Slot","nameLocation":"1571:11:10","nodeType":"StructDefinition","scope":2777,"src":"1564:49:10","visibility":"public"},{"canonicalName":"StorageSlotUpgradeable.Uint256Slot","id":2682,"members":[{"constant":false,"id":2681,"mutability":"mutable","name":"value","nameLocation":"1656:5:10","nodeType":"VariableDeclaration","scope":2682,"src":"1648:13:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2680,"name":"uint256","nodeType":"ElementaryTypeName","src":"1648:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"Uint256Slot","nameLocation":"1626:11:10","nodeType":"StructDefinition","scope":2777,"src":"1619:49:10","visibility":"public"},{"canonicalName":"StorageSlotUpgradeable.StringSlot","id":2685,"members":[{"constant":false,"id":2684,"mutability":"mutable","name":"value","nameLocation":"1709:5:10","nodeType":"VariableDeclaration","scope":2685,"src":"1702:12:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":2683,"name":"string","nodeType":"ElementaryTypeName","src":"1702:6:10","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"name":"StringSlot","nameLocation":"1681:10:10","nodeType":"StructDefinition","scope":2777,"src":"1674:47:10","visibility":"public"},{"canonicalName":"StorageSlotUpgradeable.BytesSlot","id":2688,"members":[{"constant":false,"id":2687,"mutability":"mutable","name":"value","nameLocation":"1760:5:10","nodeType":"VariableDeclaration","scope":2688,"src":"1754:11:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":2686,"name":"bytes","nodeType":"ElementaryTypeName","src":"1754:5:10","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"name":"BytesSlot","nameLocation":"1734:9:10","nodeType":"StructDefinition","scope":2777,"src":"1727:45:10","visibility":"public"},{"body":{"id":2698,"nodeType":"Block","src":"1954:106:10","statements":[{"AST":{"nodeType":"YulBlock","src":"2016:38:10","statements":[{"nodeType":"YulAssignment","src":"2030:14:10","value":{"name":"slot","nodeType":"YulIdentifier","src":"2040:4:10"},"variableNames":[{"name":"r.slot","nodeType":"YulIdentifier","src":"2030:6:10"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"london","externalReferences":[{"declaration":2695,"isOffset":false,"isSlot":true,"src":"2030:6:10","suffix":"slot","valueSize":1},{"declaration":2691,"isOffset":false,"isSlot":false,"src":"2040:4:10","valueSize":1}],"id":2697,"nodeType":"InlineAssembly","src":"2007:47:10"}]},"documentation":{"id":2689,"nodeType":"StructuredDocumentation","src":"1778:87:10","text":" @dev Returns an `AddressSlot` with member `value` located at `slot`."},"id":2699,"implemented":true,"kind":"function","modifiers":[],"name":"getAddressSlot","nameLocation":"1879:14:10","nodeType":"FunctionDefinition","parameters":{"id":2692,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2691,"mutability":"mutable","name":"slot","nameLocation":"1902:4:10","nodeType":"VariableDeclaration","scope":2699,"src":"1894:12:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2690,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1894:7:10","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1893:14:10"},"returnParameters":{"id":2696,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2695,"mutability":"mutable","name":"r","nameLocation":"1951:1:10","nodeType":"VariableDeclaration","scope":2699,"src":"1931:21:10","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$2673_storage_ptr","typeString":"struct StorageSlotUpgradeable.AddressSlot"},"typeName":{"id":2694,"nodeType":"UserDefinedTypeName","pathNode":{"id":2693,"name":"AddressSlot","nameLocations":["1931:11:10"],"nodeType":"IdentifierPath","referencedDeclaration":2673,"src":"1931:11:10"},"referencedDeclaration":2673,"src":"1931:11:10","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$2673_storage_ptr","typeString":"struct StorageSlotUpgradeable.AddressSlot"}},"visibility":"internal"}],"src":"1930:23:10"},"scope":2777,"src":"1870:190:10","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2709,"nodeType":"Block","src":"2242:106:10","statements":[{"AST":{"nodeType":"YulBlock","src":"2304:38:10","statements":[{"nodeType":"YulAssignment","src":"2318:14:10","value":{"name":"slot","nodeType":"YulIdentifier","src":"2328:4:10"},"variableNames":[{"name":"r.slot","nodeType":"YulIdentifier","src":"2318:6:10"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"london","externalReferences":[{"declaration":2706,"isOffset":false,"isSlot":true,"src":"2318:6:10","suffix":"slot","valueSize":1},{"declaration":2702,"isOffset":false,"isSlot":false,"src":"2328:4:10","valueSize":1}],"id":2708,"nodeType":"InlineAssembly","src":"2295:47:10"}]},"documentation":{"id":2700,"nodeType":"StructuredDocumentation","src":"2066:87:10","text":" @dev Returns an `BooleanSlot` with member `value` located at `slot`."},"id":2710,"implemented":true,"kind":"function","modifiers":[],"name":"getBooleanSlot","nameLocation":"2167:14:10","nodeType":"FunctionDefinition","parameters":{"id":2703,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2702,"mutability":"mutable","name":"slot","nameLocation":"2190:4:10","nodeType":"VariableDeclaration","scope":2710,"src":"2182:12:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2701,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2182:7:10","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2181:14:10"},"returnParameters":{"id":2707,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2706,"mutability":"mutable","name":"r","nameLocation":"2239:1:10","nodeType":"VariableDeclaration","scope":2710,"src":"2219:21:10","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_BooleanSlot_$2676_storage_ptr","typeString":"struct StorageSlotUpgradeable.BooleanSlot"},"typeName":{"id":2705,"nodeType":"UserDefinedTypeName","pathNode":{"id":2704,"name":"BooleanSlot","nameLocations":["2219:11:10"],"nodeType":"IdentifierPath","referencedDeclaration":2676,"src":"2219:11:10"},"referencedDeclaration":2676,"src":"2219:11:10","typeDescriptions":{"typeIdentifier":"t_struct$_BooleanSlot_$2676_storage_ptr","typeString":"struct StorageSlotUpgradeable.BooleanSlot"}},"visibility":"internal"}],"src":"2218:23:10"},"scope":2777,"src":"2158:190:10","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2720,"nodeType":"Block","src":"2530:106:10","statements":[{"AST":{"nodeType":"YulBlock","src":"2592:38:10","statements":[{"nodeType":"YulAssignment","src":"2606:14:10","value":{"name":"slot","nodeType":"YulIdentifier","src":"2616:4:10"},"variableNames":[{"name":"r.slot","nodeType":"YulIdentifier","src":"2606:6:10"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"london","externalReferences":[{"declaration":2717,"isOffset":false,"isSlot":true,"src":"2606:6:10","suffix":"slot","valueSize":1},{"declaration":2713,"isOffset":false,"isSlot":false,"src":"2616:4:10","valueSize":1}],"id":2719,"nodeType":"InlineAssembly","src":"2583:47:10"}]},"documentation":{"id":2711,"nodeType":"StructuredDocumentation","src":"2354:87:10","text":" @dev Returns an `Bytes32Slot` with member `value` located at `slot`."},"id":2721,"implemented":true,"kind":"function","modifiers":[],"name":"getBytes32Slot","nameLocation":"2455:14:10","nodeType":"FunctionDefinition","parameters":{"id":2714,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2713,"mutability":"mutable","name":"slot","nameLocation":"2478:4:10","nodeType":"VariableDeclaration","scope":2721,"src":"2470:12:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2712,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2470:7:10","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2469:14:10"},"returnParameters":{"id":2718,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2717,"mutability":"mutable","name":"r","nameLocation":"2527:1:10","nodeType":"VariableDeclaration","scope":2721,"src":"2507:21:10","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Slot_$2679_storage_ptr","typeString":"struct StorageSlotUpgradeable.Bytes32Slot"},"typeName":{"id":2716,"nodeType":"UserDefinedTypeName","pathNode":{"id":2715,"name":"Bytes32Slot","nameLocations":["2507:11:10"],"nodeType":"IdentifierPath","referencedDeclaration":2679,"src":"2507:11:10"},"referencedDeclaration":2679,"src":"2507:11:10","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Slot_$2679_storage_ptr","typeString":"struct StorageSlotUpgradeable.Bytes32Slot"}},"visibility":"internal"}],"src":"2506:23:10"},"scope":2777,"src":"2446:190:10","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2731,"nodeType":"Block","src":"2818:106:10","statements":[{"AST":{"nodeType":"YulBlock","src":"2880:38:10","statements":[{"nodeType":"YulAssignment","src":"2894:14:10","value":{"name":"slot","nodeType":"YulIdentifier","src":"2904:4:10"},"variableNames":[{"name":"r.slot","nodeType":"YulIdentifier","src":"2894:6:10"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"london","externalReferences":[{"declaration":2728,"isOffset":false,"isSlot":true,"src":"2894:6:10","suffix":"slot","valueSize":1},{"declaration":2724,"isOffset":false,"isSlot":false,"src":"2904:4:10","valueSize":1}],"id":2730,"nodeType":"InlineAssembly","src":"2871:47:10"}]},"documentation":{"id":2722,"nodeType":"StructuredDocumentation","src":"2642:87:10","text":" @dev Returns an `Uint256Slot` with member `value` located at `slot`."},"id":2732,"implemented":true,"kind":"function","modifiers":[],"name":"getUint256Slot","nameLocation":"2743:14:10","nodeType":"FunctionDefinition","parameters":{"id":2725,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2724,"mutability":"mutable","name":"slot","nameLocation":"2766:4:10","nodeType":"VariableDeclaration","scope":2732,"src":"2758:12:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2723,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2758:7:10","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2757:14:10"},"returnParameters":{"id":2729,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2728,"mutability":"mutable","name":"r","nameLocation":"2815:1:10","nodeType":"VariableDeclaration","scope":2732,"src":"2795:21:10","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Uint256Slot_$2682_storage_ptr","typeString":"struct StorageSlotUpgradeable.Uint256Slot"},"typeName":{"id":2727,"nodeType":"UserDefinedTypeName","pathNode":{"id":2726,"name":"Uint256Slot","nameLocations":["2795:11:10"],"nodeType":"IdentifierPath","referencedDeclaration":2682,"src":"2795:11:10"},"referencedDeclaration":2682,"src":"2795:11:10","typeDescriptions":{"typeIdentifier":"t_struct$_Uint256Slot_$2682_storage_ptr","typeString":"struct StorageSlotUpgradeable.Uint256Slot"}},"visibility":"internal"}],"src":"2794:23:10"},"scope":2777,"src":"2734:190:10","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2742,"nodeType":"Block","src":"3103:106:10","statements":[{"AST":{"nodeType":"YulBlock","src":"3165:38:10","statements":[{"nodeType":"YulAssignment","src":"3179:14:10","value":{"name":"slot","nodeType":"YulIdentifier","src":"3189:4:10"},"variableNames":[{"name":"r.slot","nodeType":"YulIdentifier","src":"3179:6:10"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"london","externalReferences":[{"declaration":2739,"isOffset":false,"isSlot":true,"src":"3179:6:10","suffix":"slot","valueSize":1},{"declaration":2735,"isOffset":false,"isSlot":false,"src":"3189:4:10","valueSize":1}],"id":2741,"nodeType":"InlineAssembly","src":"3156:47:10"}]},"documentation":{"id":2733,"nodeType":"StructuredDocumentation","src":"2930:86:10","text":" @dev Returns an `StringSlot` with member `value` located at `slot`."},"id":2743,"implemented":true,"kind":"function","modifiers":[],"name":"getStringSlot","nameLocation":"3030:13:10","nodeType":"FunctionDefinition","parameters":{"id":2736,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2735,"mutability":"mutable","name":"slot","nameLocation":"3052:4:10","nodeType":"VariableDeclaration","scope":2743,"src":"3044:12:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2734,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3044:7:10","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3043:14:10"},"returnParameters":{"id":2740,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2739,"mutability":"mutable","name":"r","nameLocation":"3100:1:10","nodeType":"VariableDeclaration","scope":2743,"src":"3081:20:10","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_StringSlot_$2685_storage_ptr","typeString":"struct StorageSlotUpgradeable.StringSlot"},"typeName":{"id":2738,"nodeType":"UserDefinedTypeName","pathNode":{"id":2737,"name":"StringSlot","nameLocations":["3081:10:10"],"nodeType":"IdentifierPath","referencedDeclaration":2685,"src":"3081:10:10"},"referencedDeclaration":2685,"src":"3081:10:10","typeDescriptions":{"typeIdentifier":"t_struct$_StringSlot_$2685_storage_ptr","typeString":"struct StorageSlotUpgradeable.StringSlot"}},"visibility":"internal"}],"src":"3080:22:10"},"scope":2777,"src":"3021:188:10","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2753,"nodeType":"Block","src":"3411:112:10","statements":[{"AST":{"nodeType":"YulBlock","src":"3473:44:10","statements":[{"nodeType":"YulAssignment","src":"3487:20:10","value":{"name":"store.slot","nodeType":"YulIdentifier","src":"3497:10:10"},"variableNames":[{"name":"r.slot","nodeType":"YulIdentifier","src":"3487:6:10"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"london","externalReferences":[{"declaration":2750,"isOffset":false,"isSlot":true,"src":"3487:6:10","suffix":"slot","valueSize":1},{"declaration":2746,"isOffset":false,"isSlot":true,"src":"3497:10:10","suffix":"slot","valueSize":1}],"id":2752,"nodeType":"InlineAssembly","src":"3464:53:10"}]},"documentation":{"id":2744,"nodeType":"StructuredDocumentation","src":"3215:101:10","text":" @dev Returns an `StringSlot` representation of the string storage pointer `store`."},"id":2754,"implemented":true,"kind":"function","modifiers":[],"name":"getStringSlot","nameLocation":"3330:13:10","nodeType":"FunctionDefinition","parameters":{"id":2747,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2746,"mutability":"mutable","name":"store","nameLocation":"3359:5:10","nodeType":"VariableDeclaration","scope":2754,"src":"3344:20:10","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":2745,"name":"string","nodeType":"ElementaryTypeName","src":"3344:6:10","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3343:22:10"},"returnParameters":{"id":2751,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2750,"mutability":"mutable","name":"r","nameLocation":"3408:1:10","nodeType":"VariableDeclaration","scope":2754,"src":"3389:20:10","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_StringSlot_$2685_storage_ptr","typeString":"struct StorageSlotUpgradeable.StringSlot"},"typeName":{"id":2749,"nodeType":"UserDefinedTypeName","pathNode":{"id":2748,"name":"StringSlot","nameLocations":["3389:10:10"],"nodeType":"IdentifierPath","referencedDeclaration":2685,"src":"3389:10:10"},"referencedDeclaration":2685,"src":"3389:10:10","typeDescriptions":{"typeIdentifier":"t_struct$_StringSlot_$2685_storage_ptr","typeString":"struct StorageSlotUpgradeable.StringSlot"}},"visibility":"internal"}],"src":"3388:22:10"},"scope":2777,"src":"3321:202:10","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2764,"nodeType":"Block","src":"3699:106:10","statements":[{"AST":{"nodeType":"YulBlock","src":"3761:38:10","statements":[{"nodeType":"YulAssignment","src":"3775:14:10","value":{"name":"slot","nodeType":"YulIdentifier","src":"3785:4:10"},"variableNames":[{"name":"r.slot","nodeType":"YulIdentifier","src":"3775:6:10"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"london","externalReferences":[{"declaration":2761,"isOffset":false,"isSlot":true,"src":"3775:6:10","suffix":"slot","valueSize":1},{"declaration":2757,"isOffset":false,"isSlot":false,"src":"3785:4:10","valueSize":1}],"id":2763,"nodeType":"InlineAssembly","src":"3752:47:10"}]},"documentation":{"id":2755,"nodeType":"StructuredDocumentation","src":"3529:85:10","text":" @dev Returns an `BytesSlot` with member `value` located at `slot`."},"id":2765,"implemented":true,"kind":"function","modifiers":[],"name":"getBytesSlot","nameLocation":"3628:12:10","nodeType":"FunctionDefinition","parameters":{"id":2758,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2757,"mutability":"mutable","name":"slot","nameLocation":"3649:4:10","nodeType":"VariableDeclaration","scope":2765,"src":"3641:12:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2756,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3641:7:10","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3640:14:10"},"returnParameters":{"id":2762,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2761,"mutability":"mutable","name":"r","nameLocation":"3696:1:10","nodeType":"VariableDeclaration","scope":2765,"src":"3678:19:10","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$2688_storage_ptr","typeString":"struct StorageSlotUpgradeable.BytesSlot"},"typeName":{"id":2760,"nodeType":"UserDefinedTypeName","pathNode":{"id":2759,"name":"BytesSlot","nameLocations":["3678:9:10"],"nodeType":"IdentifierPath","referencedDeclaration":2688,"src":"3678:9:10"},"referencedDeclaration":2688,"src":"3678:9:10","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$2688_storage_ptr","typeString":"struct StorageSlotUpgradeable.BytesSlot"}},"visibility":"internal"}],"src":"3677:21:10"},"scope":2777,"src":"3619:186:10","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2775,"nodeType":"Block","src":"4002:112:10","statements":[{"AST":{"nodeType":"YulBlock","src":"4064:44:10","statements":[{"nodeType":"YulAssignment","src":"4078:20:10","value":{"name":"store.slot","nodeType":"YulIdentifier","src":"4088:10:10"},"variableNames":[{"name":"r.slot","nodeType":"YulIdentifier","src":"4078:6:10"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"london","externalReferences":[{"declaration":2772,"isOffset":false,"isSlot":true,"src":"4078:6:10","suffix":"slot","valueSize":1},{"declaration":2768,"isOffset":false,"isSlot":true,"src":"4088:10:10","suffix":"slot","valueSize":1}],"id":2774,"nodeType":"InlineAssembly","src":"4055:53:10"}]},"documentation":{"id":2766,"nodeType":"StructuredDocumentation","src":"3811:99:10","text":" @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`."},"id":2776,"implemented":true,"kind":"function","modifiers":[],"name":"getBytesSlot","nameLocation":"3924:12:10","nodeType":"FunctionDefinition","parameters":{"id":2769,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2768,"mutability":"mutable","name":"store","nameLocation":"3951:5:10","nodeType":"VariableDeclaration","scope":2776,"src":"3937:19:10","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":2767,"name":"bytes","nodeType":"ElementaryTypeName","src":"3937:5:10","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3936:21:10"},"returnParameters":{"id":2773,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2772,"mutability":"mutable","name":"r","nameLocation":"3999:1:10","nodeType":"VariableDeclaration","scope":2776,"src":"3981:19:10","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$2688_storage_ptr","typeString":"struct StorageSlotUpgradeable.BytesSlot"},"typeName":{"id":2771,"nodeType":"UserDefinedTypeName","pathNode":{"id":2770,"name":"BytesSlot","nameLocations":["3981:9:10"],"nodeType":"IdentifierPath","referencedDeclaration":2688,"src":"3981:9:10"},"referencedDeclaration":2688,"src":"3981:9:10","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$2688_storage_ptr","typeString":"struct StorageSlotUpgradeable.BytesSlot"}},"visibility":"internal"}],"src":"3980:21:10"},"scope":2777,"src":"3915:199:10","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":2778,"src":"1420:2696:10","usedErrors":[]}],"src":"193:3924:10"},"id":10},"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol","exportedSymbols":{"ERC165Upgradeable":[2822],"IERC165Upgradeable":[2834],"Initializable":[534]},"id":2823,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2779,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"99:23:11"},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol","file":"./IERC165Upgradeable.sol","id":2780,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2823,"sourceUnit":2835,"src":"124:34:11","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","file":"../../proxy/utils/Initializable.sol","id":2782,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2823,"sourceUnit":535,"src":"159:66:11","symbolAliases":[{"foreign":{"id":2781,"name":"Initializable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":534,"src":"167:13:11","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":2784,"name":"Initializable","nameLocations":["843:13:11"],"nodeType":"IdentifierPath","referencedDeclaration":534,"src":"843:13:11"},"id":2785,"nodeType":"InheritanceSpecifier","src":"843:13:11"},{"baseName":{"id":2786,"name":"IERC165Upgradeable","nameLocations":["858:18:11"],"nodeType":"IdentifierPath","referencedDeclaration":2834,"src":"858:18:11"},"id":2787,"nodeType":"InheritanceSpecifier","src":"858:18:11"}],"canonicalName":"ERC165Upgradeable","contractDependencies":[],"contractKind":"contract","documentation":{"id":2783,"nodeType":"StructuredDocumentation","src":"227:576:11","text":" @dev Implementation of the {IERC165} interface.\n Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\n for the additional interface id that will be supported. For example:\n ```solidity\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\n }\n ```\n Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation."},"fullyImplemented":true,"id":2822,"linearizedBaseContracts":[2822,2834,534],"name":"ERC165Upgradeable","nameLocation":"822:17:11","nodeType":"ContractDefinition","nodes":[{"body":{"id":2792,"nodeType":"Block","src":"934:7:11","statements":[]},"id":2793,"implemented":true,"kind":"function","modifiers":[{"id":2790,"kind":"modifierInvocation","modifierName":{"id":2789,"name":"onlyInitializing","nameLocations":["917:16:11"],"nodeType":"IdentifierPath","referencedDeclaration":479,"src":"917:16:11"},"nodeType":"ModifierInvocation","src":"917:16:11"}],"name":"__ERC165_init","nameLocation":"892:13:11","nodeType":"FunctionDefinition","parameters":{"id":2788,"nodeType":"ParameterList","parameters":[],"src":"905:2:11"},"returnParameters":{"id":2791,"nodeType":"ParameterList","parameters":[],"src":"934:0:11"},"scope":2822,"src":"883:58:11","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2798,"nodeType":"Block","src":"1008:7:11","statements":[]},"id":2799,"implemented":true,"kind":"function","modifiers":[{"id":2796,"kind":"modifierInvocation","modifierName":{"id":2795,"name":"onlyInitializing","nameLocations":["991:16:11"],"nodeType":"IdentifierPath","referencedDeclaration":479,"src":"991:16:11"},"nodeType":"ModifierInvocation","src":"991:16:11"}],"name":"__ERC165_init_unchained","nameLocation":"956:23:11","nodeType":"FunctionDefinition","parameters":{"id":2794,"nodeType":"ParameterList","parameters":[],"src":"979:2:11"},"returnParameters":{"id":2797,"nodeType":"ParameterList","parameters":[],"src":"1008:0:11"},"scope":2822,"src":"947:68:11","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[2833],"body":{"id":2815,"nodeType":"Block","src":"1172:75:11","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":2813,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2808,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2802,"src":"1189:11:11","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":2810,"name":"IERC165Upgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2834,"src":"1209:18:11","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC165Upgradeable_$2834_$","typeString":"type(contract IERC165Upgradeable)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC165Upgradeable_$2834_$","typeString":"type(contract IERC165Upgradeable)"}],"id":2809,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"1204:4:11","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":2811,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1204:24:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC165Upgradeable_$2834","typeString":"type(contract IERC165Upgradeable)"}},"id":2812,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1229:11:11","memberName":"interfaceId","nodeType":"MemberAccess","src":"1204:36:11","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"1189:51:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2807,"id":2814,"nodeType":"Return","src":"1182:58:11"}]},"documentation":{"id":2800,"nodeType":"StructuredDocumentation","src":"1020:56:11","text":" @dev See {IERC165-supportsInterface}."},"functionSelector":"01ffc9a7","id":2816,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"1090:17:11","nodeType":"FunctionDefinition","overrides":{"id":2804,"nodeType":"OverrideSpecifier","overrides":[],"src":"1148:8:11"},"parameters":{"id":2803,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2802,"mutability":"mutable","name":"interfaceId","nameLocation":"1115:11:11","nodeType":"VariableDeclaration","scope":2816,"src":"1108:18:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2801,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1108:6:11","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"1107:20:11"},"returnParameters":{"id":2807,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2806,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2816,"src":"1166:4:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2805,"name":"bool","nodeType":"ElementaryTypeName","src":"1166:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1165:6:11"},"scope":2822,"src":"1081:166:11","stateMutability":"view","virtual":true,"visibility":"public"},{"constant":false,"documentation":{"id":2817,"nodeType":"StructuredDocumentation","src":"1253:254:11","text":" @dev This empty reserved space is put in place to allow future versions to add new\n variables without shifting down storage in the inheritance chain.\n See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"},"id":2821,"mutability":"mutable","name":"__gap","nameLocation":"1532:5:11","nodeType":"VariableDeclaration","scope":2822,"src":"1512:25:11","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$50_storage","typeString":"uint256[50]"},"typeName":{"baseType":{"id":2818,"name":"uint256","nodeType":"ElementaryTypeName","src":"1512:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2820,"length":{"hexValue":"3530","id":2819,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1520:2:11","typeDescriptions":{"typeIdentifier":"t_rational_50_by_1","typeString":"int_const 50"},"value":"50"},"nodeType":"ArrayTypeName","src":"1512:11:11","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$50_storage_ptr","typeString":"uint256[50]"}},"visibility":"private"}],"scope":2823,"src":"804:736:11","usedErrors":[]}],"src":"99:1442:11"},"id":11},"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol","exportedSymbols":{"IERC165Upgradeable":[2834]},"id":2835,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2824,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"100:23:12"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC165Upgradeable","contractDependencies":[],"contractKind":"interface","documentation":{"id":2825,"nodeType":"StructuredDocumentation","src":"125:279:12","text":" @dev Interface of the ERC165 standard, as defined in the\n https://eips.ethereum.org/EIPS/eip-165[EIP].\n Implementers can declare support of contract interfaces, which can then be\n queried by others ({ERC165Checker}).\n For an implementation, see {ERC165}."},"fullyImplemented":false,"id":2834,"linearizedBaseContracts":[2834],"name":"IERC165Upgradeable","nameLocation":"415:18:12","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":2826,"nodeType":"StructuredDocumentation","src":"440:340:12","text":" @dev Returns true if this contract implements the interface defined by\n `interfaceId`. See the corresponding\n https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\n to learn more about how these ids are created.\n This function call must use less than 30 000 gas."},"functionSelector":"01ffc9a7","id":2833,"implemented":false,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"794:17:12","nodeType":"FunctionDefinition","parameters":{"id":2829,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2828,"mutability":"mutable","name":"interfaceId","nameLocation":"819:11:12","nodeType":"VariableDeclaration","scope":2833,"src":"812:18:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2827,"name":"bytes4","nodeType":"ElementaryTypeName","src":"812:6:12","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"811:20:12"},"returnParameters":{"id":2832,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2831,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2833,"src":"855:4:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2830,"name":"bool","nodeType":"ElementaryTypeName","src":"855:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"854:6:12"},"scope":2834,"src":"785:76:12","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":2835,"src":"405:458:12","usedErrors":[]}],"src":"100:764:12"},"id":12},"@openzeppelin/contracts-upgradeable/utils/math/MathUpgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/math/MathUpgradeable.sol","exportedSymbols":{"MathUpgradeable":[3700]},"id":3701,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2836,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"103:23:13"},{"abstract":false,"baseContracts":[],"canonicalName":"MathUpgradeable","contractDependencies":[],"contractKind":"library","documentation":{"id":2837,"nodeType":"StructuredDocumentation","src":"128:73:13","text":" @dev Standard math utilities missing in the Solidity language."},"fullyImplemented":true,"id":3700,"linearizedBaseContracts":[3700],"name":"MathUpgradeable","nameLocation":"210:15:13","nodeType":"ContractDefinition","nodes":[{"canonicalName":"MathUpgradeable.Rounding","id":2841,"members":[{"id":2838,"name":"Down","nameLocation":"256:4:13","nodeType":"EnumValue","src":"256:4:13"},{"id":2839,"name":"Up","nameLocation":"298:2:13","nodeType":"EnumValue","src":"298:2:13"},{"id":2840,"name":"Zero","nameLocation":"329:4:13","nodeType":"EnumValue","src":"329:4:13"}],"name":"Rounding","nameLocation":"237:8:13","nodeType":"EnumDefinition","src":"232:122:13"},{"body":{"id":2858,"nodeType":"Block","src":"491:37:13","statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2853,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2851,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2844,"src":"508:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":2852,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2846,"src":"512:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"508:5:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":2855,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2846,"src":"520:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2856,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"508:13:13","trueExpression":{"id":2854,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2844,"src":"516:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2850,"id":2857,"nodeType":"Return","src":"501:20:13"}]},"documentation":{"id":2842,"nodeType":"StructuredDocumentation","src":"360:59:13","text":" @dev Returns the largest of two numbers."},"id":2859,"implemented":true,"kind":"function","modifiers":[],"name":"max","nameLocation":"433:3:13","nodeType":"FunctionDefinition","parameters":{"id":2847,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2844,"mutability":"mutable","name":"a","nameLocation":"445:1:13","nodeType":"VariableDeclaration","scope":2859,"src":"437:9:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2843,"name":"uint256","nodeType":"ElementaryTypeName","src":"437:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2846,"mutability":"mutable","name":"b","nameLocation":"456:1:13","nodeType":"VariableDeclaration","scope":2859,"src":"448:9:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2845,"name":"uint256","nodeType":"ElementaryTypeName","src":"448:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"436:22:13"},"returnParameters":{"id":2850,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2849,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2859,"src":"482:7:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2848,"name":"uint256","nodeType":"ElementaryTypeName","src":"482:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"481:9:13"},"scope":3700,"src":"424:104:13","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2876,"nodeType":"Block","src":"666:37:13","statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2871,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2869,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2862,"src":"683:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":2870,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2864,"src":"687:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"683:5:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":2873,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2864,"src":"695:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2874,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"683:13:13","trueExpression":{"id":2872,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2862,"src":"691:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2868,"id":2875,"nodeType":"Return","src":"676:20:13"}]},"documentation":{"id":2860,"nodeType":"StructuredDocumentation","src":"534:60:13","text":" @dev Returns the smallest of two numbers."},"id":2877,"implemented":true,"kind":"function","modifiers":[],"name":"min","nameLocation":"608:3:13","nodeType":"FunctionDefinition","parameters":{"id":2865,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2862,"mutability":"mutable","name":"a","nameLocation":"620:1:13","nodeType":"VariableDeclaration","scope":2877,"src":"612:9:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2861,"name":"uint256","nodeType":"ElementaryTypeName","src":"612:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2864,"mutability":"mutable","name":"b","nameLocation":"631:1:13","nodeType":"VariableDeclaration","scope":2877,"src":"623:9:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2863,"name":"uint256","nodeType":"ElementaryTypeName","src":"623:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"611:22:13"},"returnParameters":{"id":2868,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2867,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2877,"src":"657:7:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2866,"name":"uint256","nodeType":"ElementaryTypeName","src":"657:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"656:9:13"},"scope":3700,"src":"599:104:13","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2899,"nodeType":"Block","src":"887:82:13","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2897,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2889,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2887,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2880,"src":"942:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":2888,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2882,"src":"946:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"942:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2890,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"941:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2896,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2893,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2891,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2880,"src":"952:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":2892,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2882,"src":"956:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"952:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2894,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"951:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"32","id":2895,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"961:1:13","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"951:11:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"941:21:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2886,"id":2898,"nodeType":"Return","src":"934:28:13"}]},"documentation":{"id":2878,"nodeType":"StructuredDocumentation","src":"709:102:13","text":" @dev Returns the average of two numbers. The result is rounded towards\n zero."},"id":2900,"implemented":true,"kind":"function","modifiers":[],"name":"average","nameLocation":"825:7:13","nodeType":"FunctionDefinition","parameters":{"id":2883,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2880,"mutability":"mutable","name":"a","nameLocation":"841:1:13","nodeType":"VariableDeclaration","scope":2900,"src":"833:9:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2879,"name":"uint256","nodeType":"ElementaryTypeName","src":"833:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2882,"mutability":"mutable","name":"b","nameLocation":"852:1:13","nodeType":"VariableDeclaration","scope":2900,"src":"844:9:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2881,"name":"uint256","nodeType":"ElementaryTypeName","src":"844:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"832:22:13"},"returnParameters":{"id":2886,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2885,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2900,"src":"878:7:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2884,"name":"uint256","nodeType":"ElementaryTypeName","src":"878:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"877:9:13"},"scope":3700,"src":"816:153:13","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2924,"nodeType":"Block","src":"1239:123:13","statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2912,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2910,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2903,"src":"1327:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2911,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1332:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1327:6:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2921,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2919,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2916,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2914,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2903,"src":"1341:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":2915,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1345:1:13","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1341:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2917,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1340:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2918,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2905,"src":"1350:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1340:11:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":2920,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1354:1:13","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1340:15:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2922,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"1327:28:13","trueExpression":{"hexValue":"30","id":2913,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1336:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2909,"id":2923,"nodeType":"Return","src":"1320:35:13"}]},"documentation":{"id":2901,"nodeType":"StructuredDocumentation","src":"975:188:13","text":" @dev Returns the ceiling of the division of two numbers.\n This differs from standard division with `/` in that it rounds up instead\n of rounding down."},"id":2925,"implemented":true,"kind":"function","modifiers":[],"name":"ceilDiv","nameLocation":"1177:7:13","nodeType":"FunctionDefinition","parameters":{"id":2906,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2903,"mutability":"mutable","name":"a","nameLocation":"1193:1:13","nodeType":"VariableDeclaration","scope":2925,"src":"1185:9:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2902,"name":"uint256","nodeType":"ElementaryTypeName","src":"1185:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2905,"mutability":"mutable","name":"b","nameLocation":"1204:1:13","nodeType":"VariableDeclaration","scope":2925,"src":"1196:9:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2904,"name":"uint256","nodeType":"ElementaryTypeName","src":"1196:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1184:22:13"},"returnParameters":{"id":2909,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2908,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2925,"src":"1230:7:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2907,"name":"uint256","nodeType":"ElementaryTypeName","src":"1230:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1229:9:13"},"scope":3700,"src":"1168:194:13","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3047,"nodeType":"Block","src":"1776:4115:13","statements":[{"id":3046,"nodeType":"UncheckedBlock","src":"1786:4099:13","statements":[{"assignments":[2938],"declarations":[{"constant":false,"id":2938,"mutability":"mutable","name":"prod0","nameLocation":"2115:5:13","nodeType":"VariableDeclaration","scope":3046,"src":"2107:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2937,"name":"uint256","nodeType":"ElementaryTypeName","src":"2107:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2939,"nodeType":"VariableDeclarationStatement","src":"2107:13:13"},{"assignments":[2941],"declarations":[{"constant":false,"id":2941,"mutability":"mutable","name":"prod1","nameLocation":"2187:5:13","nodeType":"VariableDeclaration","scope":3046,"src":"2179:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2940,"name":"uint256","nodeType":"ElementaryTypeName","src":"2179:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2942,"nodeType":"VariableDeclarationStatement","src":"2179:13:13"},{"AST":{"nodeType":"YulBlock","src":"2259:157:13","statements":[{"nodeType":"YulVariableDeclaration","src":"2277:30:13","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"2294:1:13"},{"name":"y","nodeType":"YulIdentifier","src":"2297:1:13"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2304:1:13","type":"","value":"0"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"2300:3:13"},"nodeType":"YulFunctionCall","src":"2300:6:13"}],"functionName":{"name":"mulmod","nodeType":"YulIdentifier","src":"2287:6:13"},"nodeType":"YulFunctionCall","src":"2287:20:13"},"variables":[{"name":"mm","nodeType":"YulTypedName","src":"2281:2:13","type":""}]},{"nodeType":"YulAssignment","src":"2324:18:13","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"2337:1:13"},{"name":"y","nodeType":"YulIdentifier","src":"2340:1:13"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"2333:3:13"},"nodeType":"YulFunctionCall","src":"2333:9:13"},"variableNames":[{"name":"prod0","nodeType":"YulIdentifier","src":"2324:5:13"}]},{"nodeType":"YulAssignment","src":"2359:43:13","value":{"arguments":[{"arguments":[{"name":"mm","nodeType":"YulIdentifier","src":"2376:2:13"},{"name":"prod0","nodeType":"YulIdentifier","src":"2380:5:13"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2372:3:13"},"nodeType":"YulFunctionCall","src":"2372:14:13"},{"arguments":[{"name":"mm","nodeType":"YulIdentifier","src":"2391:2:13"},{"name":"prod0","nodeType":"YulIdentifier","src":"2395:5:13"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2388:2:13"},"nodeType":"YulFunctionCall","src":"2388:13:13"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2368:3:13"},"nodeType":"YulFunctionCall","src":"2368:34:13"},"variableNames":[{"name":"prod1","nodeType":"YulIdentifier","src":"2359:5:13"}]}]},"evmVersion":"london","externalReferences":[{"declaration":2938,"isOffset":false,"isSlot":false,"src":"2324:5:13","valueSize":1},{"declaration":2938,"isOffset":false,"isSlot":false,"src":"2380:5:13","valueSize":1},{"declaration":2938,"isOffset":false,"isSlot":false,"src":"2395:5:13","valueSize":1},{"declaration":2941,"isOffset":false,"isSlot":false,"src":"2359:5:13","valueSize":1},{"declaration":2928,"isOffset":false,"isSlot":false,"src":"2294:1:13","valueSize":1},{"declaration":2928,"isOffset":false,"isSlot":false,"src":"2337:1:13","valueSize":1},{"declaration":2930,"isOffset":false,"isSlot":false,"src":"2297:1:13","valueSize":1},{"declaration":2930,"isOffset":false,"isSlot":false,"src":"2340:1:13","valueSize":1}],"id":2943,"nodeType":"InlineAssembly","src":"2250:166:13"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2946,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2944,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2941,"src":"2497:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2945,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2506:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2497:10:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2952,"nodeType":"IfStatement","src":"2493:368:13","trueBody":{"id":2951,"nodeType":"Block","src":"2509:352:13","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2949,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2947,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2938,"src":"2827:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2948,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2932,"src":"2835:11:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2827:19:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2936,"id":2950,"nodeType":"Return","src":"2820:26:13"}]}},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2956,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2954,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2932,"src":"2971:11:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":2955,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2941,"src":"2985:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2971:19:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4d6174683a206d756c446976206f766572666c6f77","id":2957,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2992:23:13","typeDescriptions":{"typeIdentifier":"t_stringliteral_d87093691d63b122ac2c14d1b11554b287e2431cf2b03550b3be7cffb0f86851","typeString":"literal_string \"Math: mulDiv overflow\""},"value":"Math: mulDiv overflow"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d87093691d63b122ac2c14d1b11554b287e2431cf2b03550b3be7cffb0f86851","typeString":"literal_string \"Math: mulDiv overflow\""}],"id":2953,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"2963:7:13","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2958,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2963:53:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2959,"nodeType":"ExpressionStatement","src":"2963:53:13"},{"assignments":[2961],"declarations":[{"constant":false,"id":2961,"mutability":"mutable","name":"remainder","nameLocation":"3280:9:13","nodeType":"VariableDeclaration","scope":3046,"src":"3272:17:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2960,"name":"uint256","nodeType":"ElementaryTypeName","src":"3272:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2962,"nodeType":"VariableDeclarationStatement","src":"3272:17:13"},{"AST":{"nodeType":"YulBlock","src":"3312:291:13","statements":[{"nodeType":"YulAssignment","src":"3381:38:13","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"3401:1:13"},{"name":"y","nodeType":"YulIdentifier","src":"3404:1:13"},{"name":"denominator","nodeType":"YulIdentifier","src":"3407:11:13"}],"functionName":{"name":"mulmod","nodeType":"YulIdentifier","src":"3394:6:13"},"nodeType":"YulFunctionCall","src":"3394:25:13"},"variableNames":[{"name":"remainder","nodeType":"YulIdentifier","src":"3381:9:13"}]},{"nodeType":"YulAssignment","src":"3501:41:13","value":{"arguments":[{"name":"prod1","nodeType":"YulIdentifier","src":"3514:5:13"},{"arguments":[{"name":"remainder","nodeType":"YulIdentifier","src":"3524:9:13"},{"name":"prod0","nodeType":"YulIdentifier","src":"3535:5:13"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3521:2:13"},"nodeType":"YulFunctionCall","src":"3521:20:13"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3510:3:13"},"nodeType":"YulFunctionCall","src":"3510:32:13"},"variableNames":[{"name":"prod1","nodeType":"YulIdentifier","src":"3501:5:13"}]},{"nodeType":"YulAssignment","src":"3559:30:13","value":{"arguments":[{"name":"prod0","nodeType":"YulIdentifier","src":"3572:5:13"},{"name":"remainder","nodeType":"YulIdentifier","src":"3579:9:13"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3568:3:13"},"nodeType":"YulFunctionCall","src":"3568:21:13"},"variableNames":[{"name":"prod0","nodeType":"YulIdentifier","src":"3559:5:13"}]}]},"evmVersion":"london","externalReferences":[{"declaration":2932,"isOffset":false,"isSlot":false,"src":"3407:11:13","valueSize":1},{"declaration":2938,"isOffset":false,"isSlot":false,"src":"3535:5:13","valueSize":1},{"declaration":2938,"isOffset":false,"isSlot":false,"src":"3559:5:13","valueSize":1},{"declaration":2938,"isOffset":false,"isSlot":false,"src":"3572:5:13","valueSize":1},{"declaration":2941,"isOffset":false,"isSlot":false,"src":"3501:5:13","valueSize":1},{"declaration":2941,"isOffset":false,"isSlot":false,"src":"3514:5:13","valueSize":1},{"declaration":2961,"isOffset":false,"isSlot":false,"src":"3381:9:13","valueSize":1},{"declaration":2961,"isOffset":false,"isSlot":false,"src":"3524:9:13","valueSize":1},{"declaration":2961,"isOffset":false,"isSlot":false,"src":"3579:9:13","valueSize":1},{"declaration":2928,"isOffset":false,"isSlot":false,"src":"3401:1:13","valueSize":1},{"declaration":2930,"isOffset":false,"isSlot":false,"src":"3404:1:13","valueSize":1}],"id":2963,"nodeType":"InlineAssembly","src":"3303:300:13"},{"assignments":[2965],"declarations":[{"constant":false,"id":2965,"mutability":"mutable","name":"twos","nameLocation":"3918:4:13","nodeType":"VariableDeclaration","scope":3046,"src":"3910:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2964,"name":"uint256","nodeType":"ElementaryTypeName","src":"3910:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2973,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2972,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2966,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2932,"src":"3925:11:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2970,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2968,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"~","prefix":true,"src":"3940:12:13","subExpression":{"id":2967,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2932,"src":"3941:11:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":2969,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3955:1:13","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3940:16:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2971,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3939:18:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3925:32:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3910:47:13"},{"AST":{"nodeType":"YulBlock","src":"3980:362:13","statements":[{"nodeType":"YulAssignment","src":"4045:37:13","value":{"arguments":[{"name":"denominator","nodeType":"YulIdentifier","src":"4064:11:13"},{"name":"twos","nodeType":"YulIdentifier","src":"4077:4:13"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"4060:3:13"},"nodeType":"YulFunctionCall","src":"4060:22:13"},"variableNames":[{"name":"denominator","nodeType":"YulIdentifier","src":"4045:11:13"}]},{"nodeType":"YulAssignment","src":"4149:25:13","value":{"arguments":[{"name":"prod0","nodeType":"YulIdentifier","src":"4162:5:13"},{"name":"twos","nodeType":"YulIdentifier","src":"4169:4:13"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"4158:3:13"},"nodeType":"YulFunctionCall","src":"4158:16:13"},"variableNames":[{"name":"prod0","nodeType":"YulIdentifier","src":"4149:5:13"}]},{"nodeType":"YulAssignment","src":"4289:39:13","value":{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4309:1:13","type":"","value":"0"},{"name":"twos","nodeType":"YulIdentifier","src":"4312:4:13"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4305:3:13"},"nodeType":"YulFunctionCall","src":"4305:12:13"},{"name":"twos","nodeType":"YulIdentifier","src":"4319:4:13"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"4301:3:13"},"nodeType":"YulFunctionCall","src":"4301:23:13"},{"kind":"number","nodeType":"YulLiteral","src":"4326:1:13","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4297:3:13"},"nodeType":"YulFunctionCall","src":"4297:31:13"},"variableNames":[{"name":"twos","nodeType":"YulIdentifier","src":"4289:4:13"}]}]},"evmVersion":"london","externalReferences":[{"declaration":2932,"isOffset":false,"isSlot":false,"src":"4045:11:13","valueSize":1},{"declaration":2932,"isOffset":false,"isSlot":false,"src":"4064:11:13","valueSize":1},{"declaration":2938,"isOffset":false,"isSlot":false,"src":"4149:5:13","valueSize":1},{"declaration":2938,"isOffset":false,"isSlot":false,"src":"4162:5:13","valueSize":1},{"declaration":2965,"isOffset":false,"isSlot":false,"src":"4077:4:13","valueSize":1},{"declaration":2965,"isOffset":false,"isSlot":false,"src":"4169:4:13","valueSize":1},{"declaration":2965,"isOffset":false,"isSlot":false,"src":"4289:4:13","valueSize":1},{"declaration":2965,"isOffset":false,"isSlot":false,"src":"4312:4:13","valueSize":1},{"declaration":2965,"isOffset":false,"isSlot":false,"src":"4319:4:13","valueSize":1}],"id":2974,"nodeType":"InlineAssembly","src":"3971:371:13"},{"expression":{"id":2979,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2975,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2938,"src":"4408:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2978,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2976,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2941,"src":"4417:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":2977,"name":"twos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2965,"src":"4425:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4417:12:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4408:21:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2980,"nodeType":"ExpressionStatement","src":"4408:21:13"},{"assignments":[2982],"declarations":[{"constant":false,"id":2982,"mutability":"mutable","name":"inverse","nameLocation":"4755:7:13","nodeType":"VariableDeclaration","scope":3046,"src":"4747:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2981,"name":"uint256","nodeType":"ElementaryTypeName","src":"4747:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2989,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2988,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2985,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"33","id":2983,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4766:1:13","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":2984,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2932,"src":"4770:11:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4766:15:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2986,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4765:17:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"hexValue":"32","id":2987,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4785:1:13","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"4765:21:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4747:39:13"},{"expression":{"id":2996,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2990,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2982,"src":"5003:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2995,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":2991,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5014:1:13","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2994,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2992,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2932,"src":"5018:11:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":2993,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2982,"src":"5032:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5018:21:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5014:25:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5003:36:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2997,"nodeType":"ExpressionStatement","src":"5003:36:13"},{"expression":{"id":3004,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2998,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2982,"src":"5072:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3003,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":2999,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5083:1:13","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3002,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3000,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2932,"src":"5087:11:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":3001,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2982,"src":"5101:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5087:21:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5083:25:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5072:36:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3005,"nodeType":"ExpressionStatement","src":"5072:36:13"},{"expression":{"id":3012,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3006,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2982,"src":"5142:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3011,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":3007,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5153:1:13","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3010,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3008,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2932,"src":"5157:11:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":3009,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2982,"src":"5171:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5157:21:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5153:25:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5142:36:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3013,"nodeType":"ExpressionStatement","src":"5142:36:13"},{"expression":{"id":3020,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3014,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2982,"src":"5212:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3019,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":3015,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5223:1:13","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3018,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3016,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2932,"src":"5227:11:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":3017,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2982,"src":"5241:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5227:21:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5223:25:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5212:36:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3021,"nodeType":"ExpressionStatement","src":"5212:36:13"},{"expression":{"id":3028,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3022,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2982,"src":"5282:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3027,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":3023,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5293:1:13","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3026,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3024,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2932,"src":"5297:11:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":3025,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2982,"src":"5311:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5297:21:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5293:25:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5282:36:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3029,"nodeType":"ExpressionStatement","src":"5282:36:13"},{"expression":{"id":3036,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3030,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2982,"src":"5353:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3035,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":3031,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5364:1:13","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3034,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3032,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2932,"src":"5368:11:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":3033,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2982,"src":"5382:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5368:21:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5364:25:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5353:36:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3037,"nodeType":"ExpressionStatement","src":"5353:36:13"},{"expression":{"id":3042,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3038,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2935,"src":"5823:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3041,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3039,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2938,"src":"5832:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":3040,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2982,"src":"5840:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5832:15:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5823:24:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3043,"nodeType":"ExpressionStatement","src":"5823:24:13"},{"expression":{"id":3044,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2935,"src":"5868:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2936,"id":3045,"nodeType":"Return","src":"5861:13:13"}]}]},"documentation":{"id":2926,"nodeType":"StructuredDocumentation","src":"1368:305:13","text":" @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\n @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)\n with further edits by Uniswap Labs also under MIT license."},"id":3048,"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"1687:6:13","nodeType":"FunctionDefinition","parameters":{"id":2933,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2928,"mutability":"mutable","name":"x","nameLocation":"1702:1:13","nodeType":"VariableDeclaration","scope":3048,"src":"1694:9:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2927,"name":"uint256","nodeType":"ElementaryTypeName","src":"1694:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2930,"mutability":"mutable","name":"y","nameLocation":"1713:1:13","nodeType":"VariableDeclaration","scope":3048,"src":"1705:9:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2929,"name":"uint256","nodeType":"ElementaryTypeName","src":"1705:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2932,"mutability":"mutable","name":"denominator","nameLocation":"1724:11:13","nodeType":"VariableDeclaration","scope":3048,"src":"1716:19:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2931,"name":"uint256","nodeType":"ElementaryTypeName","src":"1716:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1693:43:13"},"returnParameters":{"id":2936,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2935,"mutability":"mutable","name":"result","nameLocation":"1768:6:13","nodeType":"VariableDeclaration","scope":3048,"src":"1760:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2934,"name":"uint256","nodeType":"ElementaryTypeName","src":"1760:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1759:16:13"},"scope":3700,"src":"1678:4213:13","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3091,"nodeType":"Block","src":"6133:189:13","statements":[{"assignments":[3064],"declarations":[{"constant":false,"id":3064,"mutability":"mutable","name":"result","nameLocation":"6151:6:13","nodeType":"VariableDeclaration","scope":3091,"src":"6143:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3063,"name":"uint256","nodeType":"ElementaryTypeName","src":"6143:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3070,"initialValue":{"arguments":[{"id":3066,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3051,"src":"6167:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3067,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3053,"src":"6170:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3068,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3055,"src":"6173:11:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3065,"name":"mulDiv","nodeType":"Identifier","overloadedDeclarations":[3048,3092],"referencedDeclaration":3048,"src":"6160:6:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":3069,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6160:25:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6143:42:13"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":3082,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_enum$_Rounding_$2841","typeString":"enum MathUpgradeable.Rounding"},"id":3074,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3071,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3058,"src":"6199:8:13","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2841","typeString":"enum MathUpgradeable.Rounding"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":3072,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2841,"src":"6211:8:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$2841_$","typeString":"type(enum MathUpgradeable.Rounding)"}},"id":3073,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6220:2:13","memberName":"Up","nodeType":"MemberAccess","referencedDeclaration":2839,"src":"6211:11:13","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2841","typeString":"enum MathUpgradeable.Rounding"}},"src":"6199:23:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3081,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":3076,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3051,"src":"6233:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3077,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3053,"src":"6236:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3078,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3055,"src":"6239:11:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3075,"name":"mulmod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967280,"src":"6226:6:13","typeDescriptions":{"typeIdentifier":"t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":3079,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6226:25:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3080,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6254:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6226:29:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6199:56:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3088,"nodeType":"IfStatement","src":"6195:98:13","trueBody":{"id":3087,"nodeType":"Block","src":"6257:36:13","statements":[{"expression":{"id":3085,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3083,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3064,"src":"6271:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":3084,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6281:1:13","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"6271:11:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3086,"nodeType":"ExpressionStatement","src":"6271:11:13"}]}},{"expression":{"id":3089,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3064,"src":"6309:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3062,"id":3090,"nodeType":"Return","src":"6302:13:13"}]},"documentation":{"id":3049,"nodeType":"StructuredDocumentation","src":"5897:121:13","text":" @notice Calculates x * y / denominator with full precision, following the selected rounding direction."},"id":3092,"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"6032:6:13","nodeType":"FunctionDefinition","parameters":{"id":3059,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3051,"mutability":"mutable","name":"x","nameLocation":"6047:1:13","nodeType":"VariableDeclaration","scope":3092,"src":"6039:9:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3050,"name":"uint256","nodeType":"ElementaryTypeName","src":"6039:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3053,"mutability":"mutable","name":"y","nameLocation":"6058:1:13","nodeType":"VariableDeclaration","scope":3092,"src":"6050:9:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3052,"name":"uint256","nodeType":"ElementaryTypeName","src":"6050:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3055,"mutability":"mutable","name":"denominator","nameLocation":"6069:11:13","nodeType":"VariableDeclaration","scope":3092,"src":"6061:19:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3054,"name":"uint256","nodeType":"ElementaryTypeName","src":"6061:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3058,"mutability":"mutable","name":"rounding","nameLocation":"6091:8:13","nodeType":"VariableDeclaration","scope":3092,"src":"6082:17:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2841","typeString":"enum MathUpgradeable.Rounding"},"typeName":{"id":3057,"nodeType":"UserDefinedTypeName","pathNode":{"id":3056,"name":"Rounding","nameLocations":["6082:8:13"],"nodeType":"IdentifierPath","referencedDeclaration":2841,"src":"6082:8:13"},"referencedDeclaration":2841,"src":"6082:8:13","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2841","typeString":"enum MathUpgradeable.Rounding"}},"visibility":"internal"}],"src":"6038:62:13"},"returnParameters":{"id":3062,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3061,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3092,"src":"6124:7:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3060,"name":"uint256","nodeType":"ElementaryTypeName","src":"6124:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6123:9:13"},"scope":3700,"src":"6023:299:13","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3203,"nodeType":"Block","src":"6598:1585:13","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3102,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3100,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3095,"src":"6612:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":3101,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6617:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6612:6:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3106,"nodeType":"IfStatement","src":"6608:45:13","trueBody":{"id":3105,"nodeType":"Block","src":"6620:33:13","statements":[{"expression":{"hexValue":"30","id":3103,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6641:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":3099,"id":3104,"nodeType":"Return","src":"6634:8:13"}]}},{"assignments":[3108],"declarations":[{"constant":false,"id":3108,"mutability":"mutable","name":"result","nameLocation":"7340:6:13","nodeType":"VariableDeclaration","scope":3203,"src":"7332:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3107,"name":"uint256","nodeType":"ElementaryTypeName","src":"7332:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3117,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3116,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":3109,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7349:1:13","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3114,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":3111,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3095,"src":"7360:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3110,"name":"log2","nodeType":"Identifier","overloadedDeclarations":[3372,3408],"referencedDeclaration":3372,"src":"7355:4:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":3112,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7355:7:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":3113,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7366:1:13","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7355:12:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3115,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7354:14:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7349:19:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7332:36:13"},{"id":3202,"nodeType":"UncheckedBlock","src":"7769:408:13","statements":[{"expression":{"id":3127,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3118,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3108,"src":"7793:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3126,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3123,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3119,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3108,"src":"7803:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3122,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3120,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3095,"src":"7812:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":3121,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3108,"src":"7816:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7812:10:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7803:19:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3124,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7802:21:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":3125,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7827:1:13","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7802:26:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7793:35:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3128,"nodeType":"ExpressionStatement","src":"7793:35:13"},{"expression":{"id":3138,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3129,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3108,"src":"7842:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3137,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3134,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3130,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3108,"src":"7852:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3133,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3131,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3095,"src":"7861:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":3132,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3108,"src":"7865:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7861:10:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7852:19:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3135,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7851:21:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":3136,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7876:1:13","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7851:26:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7842:35:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3139,"nodeType":"ExpressionStatement","src":"7842:35:13"},{"expression":{"id":3149,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3140,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3108,"src":"7891:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3148,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3145,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3141,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3108,"src":"7901:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3144,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3142,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3095,"src":"7910:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":3143,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3108,"src":"7914:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7910:10:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7901:19:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3146,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7900:21:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":3147,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7925:1:13","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7900:26:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7891:35:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3150,"nodeType":"ExpressionStatement","src":"7891:35:13"},{"expression":{"id":3160,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3151,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3108,"src":"7940:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3159,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3156,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3152,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3108,"src":"7950:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3155,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3153,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3095,"src":"7959:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":3154,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3108,"src":"7963:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7959:10:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7950:19:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3157,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7949:21:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":3158,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7974:1:13","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7949:26:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7940:35:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3161,"nodeType":"ExpressionStatement","src":"7940:35:13"},{"expression":{"id":3171,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3162,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3108,"src":"7989:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3170,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3167,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3163,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3108,"src":"7999:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3166,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3164,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3095,"src":"8008:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":3165,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3108,"src":"8012:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8008:10:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7999:19:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3168,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7998:21:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":3169,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8023:1:13","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7998:26:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7989:35:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3172,"nodeType":"ExpressionStatement","src":"7989:35:13"},{"expression":{"id":3182,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3173,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3108,"src":"8038:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3181,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3178,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3174,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3108,"src":"8048:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3177,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3175,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3095,"src":"8057:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":3176,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3108,"src":"8061:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8057:10:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8048:19:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3179,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8047:21:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":3180,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8072:1:13","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"8047:26:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8038:35:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3183,"nodeType":"ExpressionStatement","src":"8038:35:13"},{"expression":{"id":3193,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3184,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3108,"src":"8087:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3189,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3185,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3108,"src":"8097:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3186,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3095,"src":"8106:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":3187,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3108,"src":"8110:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8106:10:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8097:19:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3190,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8096:21:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":3191,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8121:1:13","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"8096:26:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8087:35:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3194,"nodeType":"ExpressionStatement","src":"8087:35:13"},{"expression":{"arguments":[{"id":3196,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3108,"src":"8147:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3199,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3197,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3095,"src":"8155:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":3198,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3108,"src":"8159:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8155:10:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3195,"name":"min","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2877,"src":"8143:3:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":3200,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8143:23:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3099,"id":3201,"nodeType":"Return","src":"8136:30:13"}]}]},"documentation":{"id":3093,"nodeType":"StructuredDocumentation","src":"6328:208:13","text":" @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down.\n Inspired by Henry S. Warren, Jr.'s \"Hacker's Delight\" (Chapter 11)."},"id":3204,"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"6550:4:13","nodeType":"FunctionDefinition","parameters":{"id":3096,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3095,"mutability":"mutable","name":"a","nameLocation":"6563:1:13","nodeType":"VariableDeclaration","scope":3204,"src":"6555:9:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3094,"name":"uint256","nodeType":"ElementaryTypeName","src":"6555:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6554:11:13"},"returnParameters":{"id":3099,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3098,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3204,"src":"6589:7:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3097,"name":"uint256","nodeType":"ElementaryTypeName","src":"6589:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6588:9:13"},"scope":3700,"src":"6541:1642:13","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3239,"nodeType":"Block","src":"8359:161:13","statements":[{"id":3238,"nodeType":"UncheckedBlock","src":"8369:145:13","statements":[{"assignments":[3216],"declarations":[{"constant":false,"id":3216,"mutability":"mutable","name":"result","nameLocation":"8401:6:13","nodeType":"VariableDeclaration","scope":3238,"src":"8393:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3215,"name":"uint256","nodeType":"ElementaryTypeName","src":"8393:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3220,"initialValue":{"arguments":[{"id":3218,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3207,"src":"8415:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3217,"name":"sqrt","nodeType":"Identifier","overloadedDeclarations":[3204,3240],"referencedDeclaration":3204,"src":"8410:4:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":3219,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8410:7:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8393:24:13"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3236,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3221,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3216,"src":"8438:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":3231,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_enum$_Rounding_$2841","typeString":"enum MathUpgradeable.Rounding"},"id":3225,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3222,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3210,"src":"8448:8:13","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2841","typeString":"enum MathUpgradeable.Rounding"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":3223,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2841,"src":"8460:8:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$2841_$","typeString":"type(enum MathUpgradeable.Rounding)"}},"id":3224,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8469:2:13","memberName":"Up","nodeType":"MemberAccess","referencedDeclaration":2839,"src":"8460:11:13","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2841","typeString":"enum MathUpgradeable.Rounding"}},"src":"8448:23:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3230,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3228,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3226,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3216,"src":"8475:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":3227,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3216,"src":"8484:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8475:15:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":3229,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3207,"src":"8493:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8475:19:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"8448:46:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":3233,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8501:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":3234,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"8448:54:13","trueExpression":{"hexValue":"31","id":3232,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8497:1:13","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":3235,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8447:56:13","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"8438:65:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3214,"id":3237,"nodeType":"Return","src":"8431:72:13"}]}]},"documentation":{"id":3205,"nodeType":"StructuredDocumentation","src":"8189:89:13","text":" @notice Calculates sqrt(a), following the selected rounding direction."},"id":3240,"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"8292:4:13","nodeType":"FunctionDefinition","parameters":{"id":3211,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3207,"mutability":"mutable","name":"a","nameLocation":"8305:1:13","nodeType":"VariableDeclaration","scope":3240,"src":"8297:9:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3206,"name":"uint256","nodeType":"ElementaryTypeName","src":"8297:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3210,"mutability":"mutable","name":"rounding","nameLocation":"8317:8:13","nodeType":"VariableDeclaration","scope":3240,"src":"8308:17:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2841","typeString":"enum MathUpgradeable.Rounding"},"typeName":{"id":3209,"nodeType":"UserDefinedTypeName","pathNode":{"id":3208,"name":"Rounding","nameLocations":["8308:8:13"],"nodeType":"IdentifierPath","referencedDeclaration":2841,"src":"8308:8:13"},"referencedDeclaration":2841,"src":"8308:8:13","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2841","typeString":"enum MathUpgradeable.Rounding"}},"visibility":"internal"}],"src":"8296:30:13"},"returnParameters":{"id":3214,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3213,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3240,"src":"8350:7:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3212,"name":"uint256","nodeType":"ElementaryTypeName","src":"8350:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8349:9:13"},"scope":3700,"src":"8283:237:13","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3371,"nodeType":"Block","src":"8705:922:13","statements":[{"assignments":[3249],"declarations":[{"constant":false,"id":3249,"mutability":"mutable","name":"result","nameLocation":"8723:6:13","nodeType":"VariableDeclaration","scope":3371,"src":"8715:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3248,"name":"uint256","nodeType":"ElementaryTypeName","src":"8715:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3251,"initialValue":{"hexValue":"30","id":3250,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8732:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"8715:18:13"},{"id":3368,"nodeType":"UncheckedBlock","src":"8743:855:13","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3256,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3254,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3252,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3243,"src":"8771:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":3253,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8780:3:13","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"8771:12:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3255,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8786:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8771:16:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3266,"nodeType":"IfStatement","src":"8767:99:13","trueBody":{"id":3265,"nodeType":"Block","src":"8789:77:13","statements":[{"expression":{"id":3259,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3257,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3243,"src":"8807:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"313238","id":3258,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8817:3:13","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"8807:13:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3260,"nodeType":"ExpressionStatement","src":"8807:13:13"},{"expression":{"id":3263,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3261,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3249,"src":"8838:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"313238","id":3262,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8848:3:13","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"8838:13:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3264,"nodeType":"ExpressionStatement","src":"8838:13:13"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3271,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3269,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3267,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3243,"src":"8883:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3634","id":3268,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8892:2:13","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"8883:11:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3270,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8897:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8883:15:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3281,"nodeType":"IfStatement","src":"8879:96:13","trueBody":{"id":3280,"nodeType":"Block","src":"8900:75:13","statements":[{"expression":{"id":3274,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3272,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3243,"src":"8918:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3634","id":3273,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8928:2:13","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"8918:12:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3275,"nodeType":"ExpressionStatement","src":"8918:12:13"},{"expression":{"id":3278,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3276,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3249,"src":"8948:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3634","id":3277,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8958:2:13","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"8948:12:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3279,"nodeType":"ExpressionStatement","src":"8948:12:13"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3286,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3284,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3282,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3243,"src":"8992:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3332","id":3283,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9001:2:13","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"8992:11:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3285,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9006:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8992:15:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3296,"nodeType":"IfStatement","src":"8988:96:13","trueBody":{"id":3295,"nodeType":"Block","src":"9009:75:13","statements":[{"expression":{"id":3289,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3287,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3243,"src":"9027:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3332","id":3288,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9037:2:13","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"9027:12:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3290,"nodeType":"ExpressionStatement","src":"9027:12:13"},{"expression":{"id":3293,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3291,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3249,"src":"9057:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":3292,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9067:2:13","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"9057:12:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3294,"nodeType":"ExpressionStatement","src":"9057:12:13"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3301,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3299,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3297,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3243,"src":"9101:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3136","id":3298,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9110:2:13","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"9101:11:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3300,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9115:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9101:15:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3311,"nodeType":"IfStatement","src":"9097:96:13","trueBody":{"id":3310,"nodeType":"Block","src":"9118:75:13","statements":[{"expression":{"id":3304,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3302,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3243,"src":"9136:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3136","id":3303,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9146:2:13","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"9136:12:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3305,"nodeType":"ExpressionStatement","src":"9136:12:13"},{"expression":{"id":3308,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3306,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3249,"src":"9166:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":3307,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9176:2:13","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"9166:12:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3309,"nodeType":"ExpressionStatement","src":"9166:12:13"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3316,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3314,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3312,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3243,"src":"9210:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":3313,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9219:1:13","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"9210:10:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3315,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9223:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9210:14:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3326,"nodeType":"IfStatement","src":"9206:93:13","trueBody":{"id":3325,"nodeType":"Block","src":"9226:73:13","statements":[{"expression":{"id":3319,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3317,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3243,"src":"9244:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"38","id":3318,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9254:1:13","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"9244:11:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3320,"nodeType":"ExpressionStatement","src":"9244:11:13"},{"expression":{"id":3323,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3321,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3249,"src":"9273:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":3322,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9283:1:13","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"9273:11:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3324,"nodeType":"ExpressionStatement","src":"9273:11:13"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3331,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3329,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3327,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3243,"src":"9316:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"34","id":3328,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9325:1:13","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"9316:10:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3330,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9329:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9316:14:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3341,"nodeType":"IfStatement","src":"9312:93:13","trueBody":{"id":3340,"nodeType":"Block","src":"9332:73:13","statements":[{"expression":{"id":3334,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3332,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3243,"src":"9350:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":3333,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9360:1:13","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"9350:11:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3335,"nodeType":"ExpressionStatement","src":"9350:11:13"},{"expression":{"id":3338,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3336,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3249,"src":"9379:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":3337,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9389:1:13","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"9379:11:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3339,"nodeType":"ExpressionStatement","src":"9379:11:13"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3346,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3344,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3342,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3243,"src":"9422:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"32","id":3343,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9431:1:13","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"9422:10:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3345,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9435:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9422:14:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3356,"nodeType":"IfStatement","src":"9418:93:13","trueBody":{"id":3355,"nodeType":"Block","src":"9438:73:13","statements":[{"expression":{"id":3349,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3347,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3243,"src":"9456:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"32","id":3348,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9466:1:13","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"9456:11:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3350,"nodeType":"ExpressionStatement","src":"9456:11:13"},{"expression":{"id":3353,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3351,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3249,"src":"9485:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":3352,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9495:1:13","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"9485:11:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3354,"nodeType":"ExpressionStatement","src":"9485:11:13"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3361,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3359,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3357,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3243,"src":"9528:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":3358,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9537:1:13","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9528:10:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3360,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9541:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9528:14:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3367,"nodeType":"IfStatement","src":"9524:64:13","trueBody":{"id":3366,"nodeType":"Block","src":"9544:44:13","statements":[{"expression":{"id":3364,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3362,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3249,"src":"9562:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":3363,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9572:1:13","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9562:11:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3365,"nodeType":"ExpressionStatement","src":"9562:11:13"}]}}]},{"expression":{"id":3369,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3249,"src":"9614:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3247,"id":3370,"nodeType":"Return","src":"9607:13:13"}]},"documentation":{"id":3241,"nodeType":"StructuredDocumentation","src":"8526:113:13","text":" @dev Return the log in base 2, rounded down, of a positive value.\n Returns 0 if given 0."},"id":3372,"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"8653:4:13","nodeType":"FunctionDefinition","parameters":{"id":3244,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3243,"mutability":"mutable","name":"value","nameLocation":"8666:5:13","nodeType":"VariableDeclaration","scope":3372,"src":"8658:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3242,"name":"uint256","nodeType":"ElementaryTypeName","src":"8658:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8657:15:13"},"returnParameters":{"id":3247,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3246,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3372,"src":"8696:7:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3245,"name":"uint256","nodeType":"ElementaryTypeName","src":"8696:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8695:9:13"},"scope":3700,"src":"8644:983:13","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3407,"nodeType":"Block","src":"9860:165:13","statements":[{"id":3406,"nodeType":"UncheckedBlock","src":"9870:149:13","statements":[{"assignments":[3384],"declarations":[{"constant":false,"id":3384,"mutability":"mutable","name":"result","nameLocation":"9902:6:13","nodeType":"VariableDeclaration","scope":3406,"src":"9894:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3383,"name":"uint256","nodeType":"ElementaryTypeName","src":"9894:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3388,"initialValue":{"arguments":[{"id":3386,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3375,"src":"9916:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3385,"name":"log2","nodeType":"Identifier","overloadedDeclarations":[3372,3408],"referencedDeclaration":3372,"src":"9911:4:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":3387,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9911:11:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9894:28:13"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3404,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3389,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3384,"src":"9943:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":3399,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_enum$_Rounding_$2841","typeString":"enum MathUpgradeable.Rounding"},"id":3393,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3390,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3378,"src":"9953:8:13","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2841","typeString":"enum MathUpgradeable.Rounding"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":3391,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2841,"src":"9965:8:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$2841_$","typeString":"type(enum MathUpgradeable.Rounding)"}},"id":3392,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9974:2:13","memberName":"Up","nodeType":"MemberAccess","referencedDeclaration":2839,"src":"9965:11:13","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2841","typeString":"enum MathUpgradeable.Rounding"}},"src":"9953:23:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3398,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3396,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":3394,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9980:1:13","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":3395,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3384,"src":"9985:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9980:11:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":3397,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3375,"src":"9994:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9980:19:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"9953:46:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":3401,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10006:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":3402,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"9953:54:13","trueExpression":{"hexValue":"31","id":3400,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10002:1:13","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":3403,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9952:56:13","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"9943:65:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3382,"id":3405,"nodeType":"Return","src":"9936:72:13"}]}]},"documentation":{"id":3373,"nodeType":"StructuredDocumentation","src":"9633:142:13","text":" @dev Return the log in base 2, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"id":3408,"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"9789:4:13","nodeType":"FunctionDefinition","parameters":{"id":3379,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3375,"mutability":"mutable","name":"value","nameLocation":"9802:5:13","nodeType":"VariableDeclaration","scope":3408,"src":"9794:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3374,"name":"uint256","nodeType":"ElementaryTypeName","src":"9794:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3378,"mutability":"mutable","name":"rounding","nameLocation":"9818:8:13","nodeType":"VariableDeclaration","scope":3408,"src":"9809:17:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2841","typeString":"enum MathUpgradeable.Rounding"},"typeName":{"id":3377,"nodeType":"UserDefinedTypeName","pathNode":{"id":3376,"name":"Rounding","nameLocations":["9809:8:13"],"nodeType":"IdentifierPath","referencedDeclaration":2841,"src":"9809:8:13"},"referencedDeclaration":2841,"src":"9809:8:13","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2841","typeString":"enum MathUpgradeable.Rounding"}},"visibility":"internal"}],"src":"9793:34:13"},"returnParameters":{"id":3382,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3381,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3408,"src":"9851:7:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3380,"name":"uint256","nodeType":"ElementaryTypeName","src":"9851:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9850:9:13"},"scope":3700,"src":"9780:245:13","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3536,"nodeType":"Block","src":"10212:854:13","statements":[{"assignments":[3417],"declarations":[{"constant":false,"id":3417,"mutability":"mutable","name":"result","nameLocation":"10230:6:13","nodeType":"VariableDeclaration","scope":3536,"src":"10222:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3416,"name":"uint256","nodeType":"ElementaryTypeName","src":"10222:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3419,"initialValue":{"hexValue":"30","id":3418,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10239:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"10222:18:13"},{"id":3533,"nodeType":"UncheckedBlock","src":"10250:787:13","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3424,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3420,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3411,"src":"10278:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"},"id":3423,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":3421,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10287:2:13","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":3422,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10293:2:13","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"10287:8:13","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"10278:17:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3436,"nodeType":"IfStatement","src":"10274:103:13","trueBody":{"id":3435,"nodeType":"Block","src":"10297:80:13","statements":[{"expression":{"id":3429,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3425,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3411,"src":"10315:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"},"id":3428,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":3426,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10324:2:13","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":3427,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10330:2:13","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"10324:8:13","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"10315:17:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3430,"nodeType":"ExpressionStatement","src":"10315:17:13"},{"expression":{"id":3433,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3431,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3417,"src":"10350:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3634","id":3432,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10360:2:13","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"10350:12:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3434,"nodeType":"ExpressionStatement","src":"10350:12:13"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3441,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3437,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3411,"src":"10394:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"},"id":3440,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":3438,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10403:2:13","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":3439,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10409:2:13","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"10403:8:13","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"10394:17:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3453,"nodeType":"IfStatement","src":"10390:103:13","trueBody":{"id":3452,"nodeType":"Block","src":"10413:80:13","statements":[{"expression":{"id":3446,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3442,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3411,"src":"10431:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"},"id":3445,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":3443,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10440:2:13","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":3444,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10446:2:13","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"10440:8:13","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"10431:17:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3447,"nodeType":"ExpressionStatement","src":"10431:17:13"},{"expression":{"id":3450,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3448,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3417,"src":"10466:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":3449,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10476:2:13","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"10466:12:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3451,"nodeType":"ExpressionStatement","src":"10466:12:13"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3458,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3454,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3411,"src":"10510:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":3457,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":3455,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10519:2:13","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":3456,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10525:2:13","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"10519:8:13","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"10510:17:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3470,"nodeType":"IfStatement","src":"10506:103:13","trueBody":{"id":3469,"nodeType":"Block","src":"10529:80:13","statements":[{"expression":{"id":3463,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3459,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3411,"src":"10547:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":3462,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":3460,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10556:2:13","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":3461,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10562:2:13","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"10556:8:13","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"10547:17:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3464,"nodeType":"ExpressionStatement","src":"10547:17:13"},{"expression":{"id":3467,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3465,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3417,"src":"10582:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":3466,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10592:2:13","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"10582:12:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3468,"nodeType":"ExpressionStatement","src":"10582:12:13"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3475,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3471,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3411,"src":"10626:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":3474,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":3472,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10635:2:13","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":3473,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10641:1:13","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"10635:7:13","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"10626:16:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3487,"nodeType":"IfStatement","src":"10622:100:13","trueBody":{"id":3486,"nodeType":"Block","src":"10644:78:13","statements":[{"expression":{"id":3480,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3476,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3411,"src":"10662:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":3479,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":3477,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10671:2:13","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":3478,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10677:1:13","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"10671:7:13","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"10662:16:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3481,"nodeType":"ExpressionStatement","src":"10662:16:13"},{"expression":{"id":3484,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3482,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3417,"src":"10696:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":3483,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10706:1:13","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"10696:11:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3485,"nodeType":"ExpressionStatement","src":"10696:11:13"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3492,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3488,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3411,"src":"10739:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":3491,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":3489,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10748:2:13","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":3490,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10754:1:13","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"10748:7:13","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"10739:16:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3504,"nodeType":"IfStatement","src":"10735:100:13","trueBody":{"id":3503,"nodeType":"Block","src":"10757:78:13","statements":[{"expression":{"id":3497,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3493,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3411,"src":"10775:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":3496,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":3494,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10784:2:13","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":3495,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10790:1:13","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"10784:7:13","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"10775:16:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3498,"nodeType":"ExpressionStatement","src":"10775:16:13"},{"expression":{"id":3501,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3499,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3417,"src":"10809:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":3500,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10819:1:13","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"10809:11:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3502,"nodeType":"ExpressionStatement","src":"10809:11:13"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3509,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3505,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3411,"src":"10852:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":3508,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":3506,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10861:2:13","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":3507,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10867:1:13","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"10861:7:13","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"10852:16:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3521,"nodeType":"IfStatement","src":"10848:100:13","trueBody":{"id":3520,"nodeType":"Block","src":"10870:78:13","statements":[{"expression":{"id":3514,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3510,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3411,"src":"10888:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":3513,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":3511,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10897:2:13","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":3512,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10903:1:13","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"10897:7:13","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"10888:16:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3515,"nodeType":"ExpressionStatement","src":"10888:16:13"},{"expression":{"id":3518,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3516,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3417,"src":"10922:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":3517,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10932:1:13","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"10922:11:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3519,"nodeType":"ExpressionStatement","src":"10922:11:13"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3526,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3522,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3411,"src":"10965:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"id":3525,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":3523,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10974:2:13","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"31","id":3524,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10980:1:13","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"10974:7:13","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"}},"src":"10965:16:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3532,"nodeType":"IfStatement","src":"10961:66:13","trueBody":{"id":3531,"nodeType":"Block","src":"10983:44:13","statements":[{"expression":{"id":3529,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3527,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3417,"src":"11001:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":3528,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11011:1:13","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"11001:11:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3530,"nodeType":"ExpressionStatement","src":"11001:11:13"}]}}]},{"expression":{"id":3534,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3417,"src":"11053:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3415,"id":3535,"nodeType":"Return","src":"11046:13:13"}]},"documentation":{"id":3409,"nodeType":"StructuredDocumentation","src":"10031:114:13","text":" @dev Return the log in base 10, rounded down, of a positive value.\n Returns 0 if given 0."},"id":3537,"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"10159:5:13","nodeType":"FunctionDefinition","parameters":{"id":3412,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3411,"mutability":"mutable","name":"value","nameLocation":"10173:5:13","nodeType":"VariableDeclaration","scope":3537,"src":"10165:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3410,"name":"uint256","nodeType":"ElementaryTypeName","src":"10165:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10164:15:13"},"returnParameters":{"id":3415,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3414,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3537,"src":"10203:7:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3413,"name":"uint256","nodeType":"ElementaryTypeName","src":"10203:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10202:9:13"},"scope":3700,"src":"10150:916:13","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3572,"nodeType":"Block","src":"11301:167:13","statements":[{"id":3571,"nodeType":"UncheckedBlock","src":"11311:151:13","statements":[{"assignments":[3549],"declarations":[{"constant":false,"id":3549,"mutability":"mutable","name":"result","nameLocation":"11343:6:13","nodeType":"VariableDeclaration","scope":3571,"src":"11335:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3548,"name":"uint256","nodeType":"ElementaryTypeName","src":"11335:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3553,"initialValue":{"arguments":[{"id":3551,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3540,"src":"11358:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3550,"name":"log10","nodeType":"Identifier","overloadedDeclarations":[3537,3573],"referencedDeclaration":3537,"src":"11352:5:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":3552,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11352:12:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"11335:29:13"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3569,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3554,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3549,"src":"11385:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":3564,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_enum$_Rounding_$2841","typeString":"enum MathUpgradeable.Rounding"},"id":3558,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3555,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3543,"src":"11395:8:13","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2841","typeString":"enum MathUpgradeable.Rounding"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":3556,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2841,"src":"11407:8:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$2841_$","typeString":"type(enum MathUpgradeable.Rounding)"}},"id":3557,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11416:2:13","memberName":"Up","nodeType":"MemberAccess","referencedDeclaration":2839,"src":"11407:11:13","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2841","typeString":"enum MathUpgradeable.Rounding"}},"src":"11395:23:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3563,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3561,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":3559,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11422:2:13","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"id":3560,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3549,"src":"11428:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11422:12:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":3562,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3540,"src":"11437:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11422:20:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"11395:47:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":3566,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11449:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":3567,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"11395:55:13","trueExpression":{"hexValue":"31","id":3565,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11445:1:13","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":3568,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11394:57:13","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"11385:66:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3547,"id":3570,"nodeType":"Return","src":"11378:73:13"}]}]},"documentation":{"id":3538,"nodeType":"StructuredDocumentation","src":"11072:143:13","text":" @dev Return the log in base 10, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"id":3573,"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"11229:5:13","nodeType":"FunctionDefinition","parameters":{"id":3544,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3540,"mutability":"mutable","name":"value","nameLocation":"11243:5:13","nodeType":"VariableDeclaration","scope":3573,"src":"11235:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3539,"name":"uint256","nodeType":"ElementaryTypeName","src":"11235:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3543,"mutability":"mutable","name":"rounding","nameLocation":"11259:8:13","nodeType":"VariableDeclaration","scope":3573,"src":"11250:17:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2841","typeString":"enum MathUpgradeable.Rounding"},"typeName":{"id":3542,"nodeType":"UserDefinedTypeName","pathNode":{"id":3541,"name":"Rounding","nameLocations":["11250:8:13"],"nodeType":"IdentifierPath","referencedDeclaration":2841,"src":"11250:8:13"},"referencedDeclaration":2841,"src":"11250:8:13","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2841","typeString":"enum MathUpgradeable.Rounding"}},"visibility":"internal"}],"src":"11234:34:13"},"returnParameters":{"id":3547,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3546,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3573,"src":"11292:7:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3545,"name":"uint256","nodeType":"ElementaryTypeName","src":"11292:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11291:9:13"},"scope":3700,"src":"11220:248:13","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3659,"nodeType":"Block","src":"11782:600:13","statements":[{"assignments":[3582],"declarations":[{"constant":false,"id":3582,"mutability":"mutable","name":"result","nameLocation":"11800:6:13","nodeType":"VariableDeclaration","scope":3659,"src":"11792:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3581,"name":"uint256","nodeType":"ElementaryTypeName","src":"11792:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3584,"initialValue":{"hexValue":"30","id":3583,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11809:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"11792:18:13"},{"id":3656,"nodeType":"UncheckedBlock","src":"11820:533:13","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3589,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3587,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3585,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3576,"src":"11848:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":3586,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11857:3:13","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"11848:12:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3588,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11863:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11848:16:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3599,"nodeType":"IfStatement","src":"11844:98:13","trueBody":{"id":3598,"nodeType":"Block","src":"11866:76:13","statements":[{"expression":{"id":3592,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3590,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3576,"src":"11884:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"313238","id":3591,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11894:3:13","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"11884:13:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3593,"nodeType":"ExpressionStatement","src":"11884:13:13"},{"expression":{"id":3596,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3594,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3582,"src":"11915:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":3595,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11925:2:13","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"11915:12:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3597,"nodeType":"ExpressionStatement","src":"11915:12:13"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3604,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3602,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3600,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3576,"src":"11959:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3634","id":3601,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11968:2:13","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"11959:11:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3603,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11973:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11959:15:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3614,"nodeType":"IfStatement","src":"11955:95:13","trueBody":{"id":3613,"nodeType":"Block","src":"11976:74:13","statements":[{"expression":{"id":3607,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3605,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3576,"src":"11994:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3634","id":3606,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12004:2:13","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"11994:12:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3608,"nodeType":"ExpressionStatement","src":"11994:12:13"},{"expression":{"id":3611,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3609,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3582,"src":"12024:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":3610,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12034:1:13","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"12024:11:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3612,"nodeType":"ExpressionStatement","src":"12024:11:13"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3619,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3617,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3615,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3576,"src":"12067:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3332","id":3616,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12076:2:13","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"12067:11:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3618,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12081:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12067:15:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3629,"nodeType":"IfStatement","src":"12063:95:13","trueBody":{"id":3628,"nodeType":"Block","src":"12084:74:13","statements":[{"expression":{"id":3622,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3620,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3576,"src":"12102:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3332","id":3621,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12112:2:13","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"12102:12:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3623,"nodeType":"ExpressionStatement","src":"12102:12:13"},{"expression":{"id":3626,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3624,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3582,"src":"12132:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":3625,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12142:1:13","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"12132:11:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3627,"nodeType":"ExpressionStatement","src":"12132:11:13"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3634,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3632,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3630,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3576,"src":"12175:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3136","id":3631,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12184:2:13","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"12175:11:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3633,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12189:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12175:15:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3644,"nodeType":"IfStatement","src":"12171:95:13","trueBody":{"id":3643,"nodeType":"Block","src":"12192:74:13","statements":[{"expression":{"id":3637,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3635,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3576,"src":"12210:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3136","id":3636,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12220:2:13","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"12210:12:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3638,"nodeType":"ExpressionStatement","src":"12210:12:13"},{"expression":{"id":3641,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3639,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3582,"src":"12240:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":3640,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12250:1:13","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"12240:11:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3642,"nodeType":"ExpressionStatement","src":"12240:11:13"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3649,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3647,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3645,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3576,"src":"12283:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":3646,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12292:1:13","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"12283:10:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3648,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12296:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12283:14:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3655,"nodeType":"IfStatement","src":"12279:64:13","trueBody":{"id":3654,"nodeType":"Block","src":"12299:44:13","statements":[{"expression":{"id":3652,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3650,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3582,"src":"12317:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":3651,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12327:1:13","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"12317:11:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3653,"nodeType":"ExpressionStatement","src":"12317:11:13"}]}}]},{"expression":{"id":3657,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3582,"src":"12369:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3580,"id":3658,"nodeType":"Return","src":"12362:13:13"}]},"documentation":{"id":3574,"nodeType":"StructuredDocumentation","src":"11474:240:13","text":" @dev Return the log in base 256, rounded down, of a positive value.\n Returns 0 if given 0.\n Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string."},"id":3660,"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"11728:6:13","nodeType":"FunctionDefinition","parameters":{"id":3577,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3576,"mutability":"mutable","name":"value","nameLocation":"11743:5:13","nodeType":"VariableDeclaration","scope":3660,"src":"11735:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3575,"name":"uint256","nodeType":"ElementaryTypeName","src":"11735:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11734:15:13"},"returnParameters":{"id":3580,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3579,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3660,"src":"11773:7:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3578,"name":"uint256","nodeType":"ElementaryTypeName","src":"11773:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11772:9:13"},"scope":3700,"src":"11719:663:13","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3698,"nodeType":"Block","src":"12619:174:13","statements":[{"id":3697,"nodeType":"UncheckedBlock","src":"12629:158:13","statements":[{"assignments":[3672],"declarations":[{"constant":false,"id":3672,"mutability":"mutable","name":"result","nameLocation":"12661:6:13","nodeType":"VariableDeclaration","scope":3697,"src":"12653:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3671,"name":"uint256","nodeType":"ElementaryTypeName","src":"12653:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3676,"initialValue":{"arguments":[{"id":3674,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3663,"src":"12677:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3673,"name":"log256","nodeType":"Identifier","overloadedDeclarations":[3660,3699],"referencedDeclaration":3660,"src":"12670:6:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":3675,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12670:13:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12653:30:13"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3695,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3677,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3672,"src":"12704:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":3690,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_enum$_Rounding_$2841","typeString":"enum MathUpgradeable.Rounding"},"id":3681,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3678,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3666,"src":"12714:8:13","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2841","typeString":"enum MathUpgradeable.Rounding"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":3679,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2841,"src":"12726:8:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$2841_$","typeString":"type(enum MathUpgradeable.Rounding)"}},"id":3680,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"12735:2:13","memberName":"Up","nodeType":"MemberAccess","referencedDeclaration":2839,"src":"12726:11:13","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2841","typeString":"enum MathUpgradeable.Rounding"}},"src":"12714:23:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3689,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3687,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":3682,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12741:1:13","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3685,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3683,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3672,"src":"12747:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"33","id":3684,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12757:1:13","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"12747:11:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3686,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12746:13:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12741:18:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":3688,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3663,"src":"12762:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12741:26:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"12714:53:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":3692,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12774:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":3693,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"12714:61:13","trueExpression":{"hexValue":"31","id":3691,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12770:1:13","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":3694,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12713:63:13","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"12704:72:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3670,"id":3696,"nodeType":"Return","src":"12697:79:13"}]}]},"documentation":{"id":3661,"nodeType":"StructuredDocumentation","src":"12388:144:13","text":" @dev Return the log in base 256, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"id":3699,"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"12546:6:13","nodeType":"FunctionDefinition","parameters":{"id":3667,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3663,"mutability":"mutable","name":"value","nameLocation":"12561:5:13","nodeType":"VariableDeclaration","scope":3699,"src":"12553:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3662,"name":"uint256","nodeType":"ElementaryTypeName","src":"12553:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3666,"mutability":"mutable","name":"rounding","nameLocation":"12577:8:13","nodeType":"VariableDeclaration","scope":3699,"src":"12568:17:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2841","typeString":"enum MathUpgradeable.Rounding"},"typeName":{"id":3665,"nodeType":"UserDefinedTypeName","pathNode":{"id":3664,"name":"Rounding","nameLocations":["12568:8:13"],"nodeType":"IdentifierPath","referencedDeclaration":2841,"src":"12568:8:13"},"referencedDeclaration":2841,"src":"12568:8:13","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2841","typeString":"enum MathUpgradeable.Rounding"}},"visibility":"internal"}],"src":"12552:34:13"},"returnParameters":{"id":3670,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3669,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3699,"src":"12610:7:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3668,"name":"uint256","nodeType":"ElementaryTypeName","src":"12610:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12609:9:13"},"scope":3700,"src":"12537:256:13","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":3701,"src":"202:12593:13","usedErrors":[]}],"src":"103:12693:13"},"id":13},"@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol","exportedSymbols":{"SafeCastUpgradeable":[5241]},"id":5242,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":3702,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"192:23:14"},{"abstract":false,"baseContracts":[],"canonicalName":"SafeCastUpgradeable","contractDependencies":[],"contractKind":"library","documentation":{"id":3703,"nodeType":"StructuredDocumentation","src":"217:709:14","text":" @dev Wrappers over Solidity's uintXX/intXX casting operators with added overflow\n checks.\n Downcasting from uint256/int256 in Solidity does not revert on overflow. This can\n easily result in undesired exploitation or bugs, since developers usually\n assume that overflows raise errors. `SafeCast` restores this intuition by\n reverting the transaction when such an operation overflows.\n Using this library instead of the unchecked operations eliminates an entire\n class of bugs, so it's recommended to use it always.\n Can be combined with {SafeMath} and {SignedSafeMath} to extend it to smaller types, by performing\n all math on `uint256` and `int256` and then downcasting."},"fullyImplemented":true,"id":5241,"linearizedBaseContracts":[5241],"name":"SafeCastUpgradeable","nameLocation":"935:19:14","nodeType":"ContractDefinition","nodes":[{"body":{"id":3727,"nodeType":"Block","src":"1350:126:14","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3718,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3712,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3706,"src":"1368:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":3715,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1382:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint248_$","typeString":"type(uint248)"},"typeName":{"id":3714,"name":"uint248","nodeType":"ElementaryTypeName","src":"1382:7:14","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint248_$","typeString":"type(uint248)"}],"id":3713,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"1377:4:14","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3716,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1377:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint248","typeString":"type(uint248)"}},"id":3717,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1391:3:14","memberName":"max","nodeType":"MemberAccess","src":"1377:17:14","typeDescriptions":{"typeIdentifier":"t_uint248","typeString":"uint248"}},"src":"1368:26:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e203234382062697473","id":3719,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1396:41:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_6ac19bba4607c9b45ff35f54fbc4ca64c29c7457109a16fa180ea77cdbda8593","typeString":"literal_string \"SafeCast: value doesn't fit in 248 bits\""},"value":"SafeCast: value doesn't fit in 248 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_6ac19bba4607c9b45ff35f54fbc4ca64c29c7457109a16fa180ea77cdbda8593","typeString":"literal_string \"SafeCast: value doesn't fit in 248 bits\""}],"id":3711,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"1360:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3720,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1360:78:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3721,"nodeType":"ExpressionStatement","src":"1360:78:14"},{"expression":{"arguments":[{"id":3724,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3706,"src":"1463:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3723,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1455:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint248_$","typeString":"type(uint248)"},"typeName":{"id":3722,"name":"uint248","nodeType":"ElementaryTypeName","src":"1455:7:14","typeDescriptions":{}}},"id":3725,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1455:14:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint248","typeString":"uint248"}},"functionReturnParameters":3710,"id":3726,"nodeType":"Return","src":"1448:21:14"}]},"documentation":{"id":3704,"nodeType":"StructuredDocumentation","src":"961:318:14","text":" @dev Returns the downcasted uint248 from uint256, reverting on\n overflow (when the input is greater than largest uint248).\n Counterpart to Solidity's `uint248` operator.\n Requirements:\n - input must fit into 248 bits\n _Available since v4.7._"},"id":3728,"implemented":true,"kind":"function","modifiers":[],"name":"toUint248","nameLocation":"1293:9:14","nodeType":"FunctionDefinition","parameters":{"id":3707,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3706,"mutability":"mutable","name":"value","nameLocation":"1311:5:14","nodeType":"VariableDeclaration","scope":3728,"src":"1303:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3705,"name":"uint256","nodeType":"ElementaryTypeName","src":"1303:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1302:15:14"},"returnParameters":{"id":3710,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3709,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3728,"src":"1341:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint248","typeString":"uint248"},"typeName":{"id":3708,"name":"uint248","nodeType":"ElementaryTypeName","src":"1341:7:14","typeDescriptions":{"typeIdentifier":"t_uint248","typeString":"uint248"}},"visibility":"internal"}],"src":"1340:9:14"},"scope":5241,"src":"1284:192:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3752,"nodeType":"Block","src":"1871:126:14","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3743,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3737,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3731,"src":"1889:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":3740,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1903:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint240_$","typeString":"type(uint240)"},"typeName":{"id":3739,"name":"uint240","nodeType":"ElementaryTypeName","src":"1903:7:14","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint240_$","typeString":"type(uint240)"}],"id":3738,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"1898:4:14","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3741,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1898:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint240","typeString":"type(uint240)"}},"id":3742,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1912:3:14","memberName":"max","nodeType":"MemberAccess","src":"1898:17:14","typeDescriptions":{"typeIdentifier":"t_uint240","typeString":"uint240"}},"src":"1889:26:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e203234302062697473","id":3744,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1917:41:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_375fa0f6cb9fb5845d214c630920cedf4424913ed6dc32c297d430efa3d61a87","typeString":"literal_string \"SafeCast: value doesn't fit in 240 bits\""},"value":"SafeCast: value doesn't fit in 240 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_375fa0f6cb9fb5845d214c630920cedf4424913ed6dc32c297d430efa3d61a87","typeString":"literal_string \"SafeCast: value doesn't fit in 240 bits\""}],"id":3736,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"1881:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3745,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1881:78:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3746,"nodeType":"ExpressionStatement","src":"1881:78:14"},{"expression":{"arguments":[{"id":3749,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3731,"src":"1984:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3748,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1976:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint240_$","typeString":"type(uint240)"},"typeName":{"id":3747,"name":"uint240","nodeType":"ElementaryTypeName","src":"1976:7:14","typeDescriptions":{}}},"id":3750,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1976:14:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint240","typeString":"uint240"}},"functionReturnParameters":3735,"id":3751,"nodeType":"Return","src":"1969:21:14"}]},"documentation":{"id":3729,"nodeType":"StructuredDocumentation","src":"1482:318:14","text":" @dev Returns the downcasted uint240 from uint256, reverting on\n overflow (when the input is greater than largest uint240).\n Counterpart to Solidity's `uint240` operator.\n Requirements:\n - input must fit into 240 bits\n _Available since v4.7._"},"id":3753,"implemented":true,"kind":"function","modifiers":[],"name":"toUint240","nameLocation":"1814:9:14","nodeType":"FunctionDefinition","parameters":{"id":3732,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3731,"mutability":"mutable","name":"value","nameLocation":"1832:5:14","nodeType":"VariableDeclaration","scope":3753,"src":"1824:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3730,"name":"uint256","nodeType":"ElementaryTypeName","src":"1824:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1823:15:14"},"returnParameters":{"id":3735,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3734,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3753,"src":"1862:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint240","typeString":"uint240"},"typeName":{"id":3733,"name":"uint240","nodeType":"ElementaryTypeName","src":"1862:7:14","typeDescriptions":{"typeIdentifier":"t_uint240","typeString":"uint240"}},"visibility":"internal"}],"src":"1861:9:14"},"scope":5241,"src":"1805:192:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3777,"nodeType":"Block","src":"2392:126:14","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3768,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3762,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3756,"src":"2410:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":3765,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2424:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint232_$","typeString":"type(uint232)"},"typeName":{"id":3764,"name":"uint232","nodeType":"ElementaryTypeName","src":"2424:7:14","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint232_$","typeString":"type(uint232)"}],"id":3763,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"2419:4:14","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3766,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2419:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint232","typeString":"type(uint232)"}},"id":3767,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2433:3:14","memberName":"max","nodeType":"MemberAccess","src":"2419:17:14","typeDescriptions":{"typeIdentifier":"t_uint232","typeString":"uint232"}},"src":"2410:26:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e203233322062697473","id":3769,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2438:41:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_5797fb2c4589bd6a92752ce0eacaac67341e37ab28c96c2284ab897e7ac77957","typeString":"literal_string \"SafeCast: value doesn't fit in 232 bits\""},"value":"SafeCast: value doesn't fit in 232 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5797fb2c4589bd6a92752ce0eacaac67341e37ab28c96c2284ab897e7ac77957","typeString":"literal_string \"SafeCast: value doesn't fit in 232 bits\""}],"id":3761,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"2402:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3770,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2402:78:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3771,"nodeType":"ExpressionStatement","src":"2402:78:14"},{"expression":{"arguments":[{"id":3774,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3756,"src":"2505:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3773,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2497:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint232_$","typeString":"type(uint232)"},"typeName":{"id":3772,"name":"uint232","nodeType":"ElementaryTypeName","src":"2497:7:14","typeDescriptions":{}}},"id":3775,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2497:14:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint232","typeString":"uint232"}},"functionReturnParameters":3760,"id":3776,"nodeType":"Return","src":"2490:21:14"}]},"documentation":{"id":3754,"nodeType":"StructuredDocumentation","src":"2003:318:14","text":" @dev Returns the downcasted uint232 from uint256, reverting on\n overflow (when the input is greater than largest uint232).\n Counterpart to Solidity's `uint232` operator.\n Requirements:\n - input must fit into 232 bits\n _Available since v4.7._"},"id":3778,"implemented":true,"kind":"function","modifiers":[],"name":"toUint232","nameLocation":"2335:9:14","nodeType":"FunctionDefinition","parameters":{"id":3757,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3756,"mutability":"mutable","name":"value","nameLocation":"2353:5:14","nodeType":"VariableDeclaration","scope":3778,"src":"2345:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3755,"name":"uint256","nodeType":"ElementaryTypeName","src":"2345:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2344:15:14"},"returnParameters":{"id":3760,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3759,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3778,"src":"2383:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint232","typeString":"uint232"},"typeName":{"id":3758,"name":"uint232","nodeType":"ElementaryTypeName","src":"2383:7:14","typeDescriptions":{"typeIdentifier":"t_uint232","typeString":"uint232"}},"visibility":"internal"}],"src":"2382:9:14"},"scope":5241,"src":"2326:192:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3802,"nodeType":"Block","src":"2913:126:14","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3793,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3787,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3781,"src":"2931:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":3790,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2945:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint224_$","typeString":"type(uint224)"},"typeName":{"id":3789,"name":"uint224","nodeType":"ElementaryTypeName","src":"2945:7:14","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint224_$","typeString":"type(uint224)"}],"id":3788,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"2940:4:14","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3791,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2940:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint224","typeString":"type(uint224)"}},"id":3792,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2954:3:14","memberName":"max","nodeType":"MemberAccess","src":"2940:17:14","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"src":"2931:26:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e203232342062697473","id":3794,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2959:41:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_9d2acf551b2466898443b9bc3a403a4d86037386bc5a8960c1bbb0f204e69b79","typeString":"literal_string \"SafeCast: value doesn't fit in 224 bits\""},"value":"SafeCast: value doesn't fit in 224 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9d2acf551b2466898443b9bc3a403a4d86037386bc5a8960c1bbb0f204e69b79","typeString":"literal_string \"SafeCast: value doesn't fit in 224 bits\""}],"id":3786,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"2923:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3795,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2923:78:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3796,"nodeType":"ExpressionStatement","src":"2923:78:14"},{"expression":{"arguments":[{"id":3799,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3781,"src":"3026:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3798,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3018:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint224_$","typeString":"type(uint224)"},"typeName":{"id":3797,"name":"uint224","nodeType":"ElementaryTypeName","src":"3018:7:14","typeDescriptions":{}}},"id":3800,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3018:14:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"functionReturnParameters":3785,"id":3801,"nodeType":"Return","src":"3011:21:14"}]},"documentation":{"id":3779,"nodeType":"StructuredDocumentation","src":"2524:318:14","text":" @dev Returns the downcasted uint224 from uint256, reverting on\n overflow (when the input is greater than largest uint224).\n Counterpart to Solidity's `uint224` operator.\n Requirements:\n - input must fit into 224 bits\n _Available since v4.2._"},"id":3803,"implemented":true,"kind":"function","modifiers":[],"name":"toUint224","nameLocation":"2856:9:14","nodeType":"FunctionDefinition","parameters":{"id":3782,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3781,"mutability":"mutable","name":"value","nameLocation":"2874:5:14","nodeType":"VariableDeclaration","scope":3803,"src":"2866:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3780,"name":"uint256","nodeType":"ElementaryTypeName","src":"2866:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2865:15:14"},"returnParameters":{"id":3785,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3784,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3803,"src":"2904:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"},"typeName":{"id":3783,"name":"uint224","nodeType":"ElementaryTypeName","src":"2904:7:14","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"visibility":"internal"}],"src":"2903:9:14"},"scope":5241,"src":"2847:192:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3827,"nodeType":"Block","src":"3434:126:14","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3818,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3812,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3806,"src":"3452:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":3815,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3466:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint216_$","typeString":"type(uint216)"},"typeName":{"id":3814,"name":"uint216","nodeType":"ElementaryTypeName","src":"3466:7:14","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint216_$","typeString":"type(uint216)"}],"id":3813,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"3461:4:14","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3816,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3461:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint216","typeString":"type(uint216)"}},"id":3817,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3475:3:14","memberName":"max","nodeType":"MemberAccess","src":"3461:17:14","typeDescriptions":{"typeIdentifier":"t_uint216","typeString":"uint216"}},"src":"3452:26:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e203231362062697473","id":3819,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3480:41:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_8966adc0aad8dc91b207c69c3eb4937e498af8cc706cfe7edd55f3a6ea53488d","typeString":"literal_string \"SafeCast: value doesn't fit in 216 bits\""},"value":"SafeCast: value doesn't fit in 216 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8966adc0aad8dc91b207c69c3eb4937e498af8cc706cfe7edd55f3a6ea53488d","typeString":"literal_string \"SafeCast: value doesn't fit in 216 bits\""}],"id":3811,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"3444:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3820,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3444:78:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3821,"nodeType":"ExpressionStatement","src":"3444:78:14"},{"expression":{"arguments":[{"id":3824,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3806,"src":"3547:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3823,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3539:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint216_$","typeString":"type(uint216)"},"typeName":{"id":3822,"name":"uint216","nodeType":"ElementaryTypeName","src":"3539:7:14","typeDescriptions":{}}},"id":3825,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3539:14:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint216","typeString":"uint216"}},"functionReturnParameters":3810,"id":3826,"nodeType":"Return","src":"3532:21:14"}]},"documentation":{"id":3804,"nodeType":"StructuredDocumentation","src":"3045:318:14","text":" @dev Returns the downcasted uint216 from uint256, reverting on\n overflow (when the input is greater than largest uint216).\n Counterpart to Solidity's `uint216` operator.\n Requirements:\n - input must fit into 216 bits\n _Available since v4.7._"},"id":3828,"implemented":true,"kind":"function","modifiers":[],"name":"toUint216","nameLocation":"3377:9:14","nodeType":"FunctionDefinition","parameters":{"id":3807,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3806,"mutability":"mutable","name":"value","nameLocation":"3395:5:14","nodeType":"VariableDeclaration","scope":3828,"src":"3387:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3805,"name":"uint256","nodeType":"ElementaryTypeName","src":"3387:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3386:15:14"},"returnParameters":{"id":3810,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3809,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3828,"src":"3425:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint216","typeString":"uint216"},"typeName":{"id":3808,"name":"uint216","nodeType":"ElementaryTypeName","src":"3425:7:14","typeDescriptions":{"typeIdentifier":"t_uint216","typeString":"uint216"}},"visibility":"internal"}],"src":"3424:9:14"},"scope":5241,"src":"3368:192:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3852,"nodeType":"Block","src":"3955:126:14","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3843,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3837,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3831,"src":"3973:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":3840,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3987:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint208_$","typeString":"type(uint208)"},"typeName":{"id":3839,"name":"uint208","nodeType":"ElementaryTypeName","src":"3987:7:14","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint208_$","typeString":"type(uint208)"}],"id":3838,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"3982:4:14","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3841,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3982:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint208","typeString":"type(uint208)"}},"id":3842,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3996:3:14","memberName":"max","nodeType":"MemberAccess","src":"3982:17:14","typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"}},"src":"3973:26:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e203230382062697473","id":3844,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4001:41:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_43d81217fa633fa1c6e88855de94fb990f5831ac266b0a90afa660e986ab5e23","typeString":"literal_string \"SafeCast: value doesn't fit in 208 bits\""},"value":"SafeCast: value doesn't fit in 208 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_43d81217fa633fa1c6e88855de94fb990f5831ac266b0a90afa660e986ab5e23","typeString":"literal_string \"SafeCast: value doesn't fit in 208 bits\""}],"id":3836,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"3965:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3845,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3965:78:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3846,"nodeType":"ExpressionStatement","src":"3965:78:14"},{"expression":{"arguments":[{"id":3849,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3831,"src":"4068:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3848,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4060:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint208_$","typeString":"type(uint208)"},"typeName":{"id":3847,"name":"uint208","nodeType":"ElementaryTypeName","src":"4060:7:14","typeDescriptions":{}}},"id":3850,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4060:14:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"}},"functionReturnParameters":3835,"id":3851,"nodeType":"Return","src":"4053:21:14"}]},"documentation":{"id":3829,"nodeType":"StructuredDocumentation","src":"3566:318:14","text":" @dev Returns the downcasted uint208 from uint256, reverting on\n overflow (when the input is greater than largest uint208).\n Counterpart to Solidity's `uint208` operator.\n Requirements:\n - input must fit into 208 bits\n _Available since v4.7._"},"id":3853,"implemented":true,"kind":"function","modifiers":[],"name":"toUint208","nameLocation":"3898:9:14","nodeType":"FunctionDefinition","parameters":{"id":3832,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3831,"mutability":"mutable","name":"value","nameLocation":"3916:5:14","nodeType":"VariableDeclaration","scope":3853,"src":"3908:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3830,"name":"uint256","nodeType":"ElementaryTypeName","src":"3908:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3907:15:14"},"returnParameters":{"id":3835,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3834,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3853,"src":"3946:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"},"typeName":{"id":3833,"name":"uint208","nodeType":"ElementaryTypeName","src":"3946:7:14","typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"}},"visibility":"internal"}],"src":"3945:9:14"},"scope":5241,"src":"3889:192:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3877,"nodeType":"Block","src":"4476:126:14","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3868,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3862,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3856,"src":"4494:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":3865,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4508:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint200_$","typeString":"type(uint200)"},"typeName":{"id":3864,"name":"uint200","nodeType":"ElementaryTypeName","src":"4508:7:14","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint200_$","typeString":"type(uint200)"}],"id":3863,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"4503:4:14","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3866,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4503:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint200","typeString":"type(uint200)"}},"id":3867,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4517:3:14","memberName":"max","nodeType":"MemberAccess","src":"4503:17:14","typeDescriptions":{"typeIdentifier":"t_uint200","typeString":"uint200"}},"src":"4494:26:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e203230302062697473","id":3869,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4522:41:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_df8130f294fe2698967ea9ead82c4da9454490567d976d00551e0174e655314c","typeString":"literal_string \"SafeCast: value doesn't fit in 200 bits\""},"value":"SafeCast: value doesn't fit in 200 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_df8130f294fe2698967ea9ead82c4da9454490567d976d00551e0174e655314c","typeString":"literal_string \"SafeCast: value doesn't fit in 200 bits\""}],"id":3861,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"4486:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3870,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4486:78:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3871,"nodeType":"ExpressionStatement","src":"4486:78:14"},{"expression":{"arguments":[{"id":3874,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3856,"src":"4589:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3873,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4581:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint200_$","typeString":"type(uint200)"},"typeName":{"id":3872,"name":"uint200","nodeType":"ElementaryTypeName","src":"4581:7:14","typeDescriptions":{}}},"id":3875,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4581:14:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint200","typeString":"uint200"}},"functionReturnParameters":3860,"id":3876,"nodeType":"Return","src":"4574:21:14"}]},"documentation":{"id":3854,"nodeType":"StructuredDocumentation","src":"4087:318:14","text":" @dev Returns the downcasted uint200 from uint256, reverting on\n overflow (when the input is greater than largest uint200).\n Counterpart to Solidity's `uint200` operator.\n Requirements:\n - input must fit into 200 bits\n _Available since v4.7._"},"id":3878,"implemented":true,"kind":"function","modifiers":[],"name":"toUint200","nameLocation":"4419:9:14","nodeType":"FunctionDefinition","parameters":{"id":3857,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3856,"mutability":"mutable","name":"value","nameLocation":"4437:5:14","nodeType":"VariableDeclaration","scope":3878,"src":"4429:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3855,"name":"uint256","nodeType":"ElementaryTypeName","src":"4429:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4428:15:14"},"returnParameters":{"id":3860,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3859,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3878,"src":"4467:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint200","typeString":"uint200"},"typeName":{"id":3858,"name":"uint200","nodeType":"ElementaryTypeName","src":"4467:7:14","typeDescriptions":{"typeIdentifier":"t_uint200","typeString":"uint200"}},"visibility":"internal"}],"src":"4466:9:14"},"scope":5241,"src":"4410:192:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3902,"nodeType":"Block","src":"4997:126:14","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3893,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3887,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3881,"src":"5015:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":3890,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5029:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint192_$","typeString":"type(uint192)"},"typeName":{"id":3889,"name":"uint192","nodeType":"ElementaryTypeName","src":"5029:7:14","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint192_$","typeString":"type(uint192)"}],"id":3888,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"5024:4:14","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3891,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5024:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint192","typeString":"type(uint192)"}},"id":3892,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5038:3:14","memberName":"max","nodeType":"MemberAccess","src":"5024:17:14","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"src":"5015:26:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e203139322062697473","id":3894,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5043:41:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_112978800f12a1c4f1eab82789f7b6defd49dc1c17ba270a84ffc28392fb05ae","typeString":"literal_string \"SafeCast: value doesn't fit in 192 bits\""},"value":"SafeCast: value doesn't fit in 192 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_112978800f12a1c4f1eab82789f7b6defd49dc1c17ba270a84ffc28392fb05ae","typeString":"literal_string \"SafeCast: value doesn't fit in 192 bits\""}],"id":3886,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"5007:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3895,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5007:78:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3896,"nodeType":"ExpressionStatement","src":"5007:78:14"},{"expression":{"arguments":[{"id":3899,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3881,"src":"5110:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3898,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5102:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint192_$","typeString":"type(uint192)"},"typeName":{"id":3897,"name":"uint192","nodeType":"ElementaryTypeName","src":"5102:7:14","typeDescriptions":{}}},"id":3900,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5102:14:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"functionReturnParameters":3885,"id":3901,"nodeType":"Return","src":"5095:21:14"}]},"documentation":{"id":3879,"nodeType":"StructuredDocumentation","src":"4608:318:14","text":" @dev Returns the downcasted uint192 from uint256, reverting on\n overflow (when the input is greater than largest uint192).\n Counterpart to Solidity's `uint192` operator.\n Requirements:\n - input must fit into 192 bits\n _Available since v4.7._"},"id":3903,"implemented":true,"kind":"function","modifiers":[],"name":"toUint192","nameLocation":"4940:9:14","nodeType":"FunctionDefinition","parameters":{"id":3882,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3881,"mutability":"mutable","name":"value","nameLocation":"4958:5:14","nodeType":"VariableDeclaration","scope":3903,"src":"4950:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3880,"name":"uint256","nodeType":"ElementaryTypeName","src":"4950:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4949:15:14"},"returnParameters":{"id":3885,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3884,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3903,"src":"4988:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"},"typeName":{"id":3883,"name":"uint192","nodeType":"ElementaryTypeName","src":"4988:7:14","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"visibility":"internal"}],"src":"4987:9:14"},"scope":5241,"src":"4931:192:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3927,"nodeType":"Block","src":"5518:126:14","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3918,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3912,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3906,"src":"5536:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":3915,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5550:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint184_$","typeString":"type(uint184)"},"typeName":{"id":3914,"name":"uint184","nodeType":"ElementaryTypeName","src":"5550:7:14","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint184_$","typeString":"type(uint184)"}],"id":3913,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"5545:4:14","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3916,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5545:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint184","typeString":"type(uint184)"}},"id":3917,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5559:3:14","memberName":"max","nodeType":"MemberAccess","src":"5545:17:14","typeDescriptions":{"typeIdentifier":"t_uint184","typeString":"uint184"}},"src":"5536:26:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e203138342062697473","id":3919,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5564:41:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_86c53d89b1944d561ecfa42e859033241d1df6ea8d42a57ae02f79d45de4aa75","typeString":"literal_string \"SafeCast: value doesn't fit in 184 bits\""},"value":"SafeCast: value doesn't fit in 184 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_86c53d89b1944d561ecfa42e859033241d1df6ea8d42a57ae02f79d45de4aa75","typeString":"literal_string \"SafeCast: value doesn't fit in 184 bits\""}],"id":3911,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"5528:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3920,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5528:78:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3921,"nodeType":"ExpressionStatement","src":"5528:78:14"},{"expression":{"arguments":[{"id":3924,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3906,"src":"5631:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3923,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5623:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint184_$","typeString":"type(uint184)"},"typeName":{"id":3922,"name":"uint184","nodeType":"ElementaryTypeName","src":"5623:7:14","typeDescriptions":{}}},"id":3925,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5623:14:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint184","typeString":"uint184"}},"functionReturnParameters":3910,"id":3926,"nodeType":"Return","src":"5616:21:14"}]},"documentation":{"id":3904,"nodeType":"StructuredDocumentation","src":"5129:318:14","text":" @dev Returns the downcasted uint184 from uint256, reverting on\n overflow (when the input is greater than largest uint184).\n Counterpart to Solidity's `uint184` operator.\n Requirements:\n - input must fit into 184 bits\n _Available since v4.7._"},"id":3928,"implemented":true,"kind":"function","modifiers":[],"name":"toUint184","nameLocation":"5461:9:14","nodeType":"FunctionDefinition","parameters":{"id":3907,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3906,"mutability":"mutable","name":"value","nameLocation":"5479:5:14","nodeType":"VariableDeclaration","scope":3928,"src":"5471:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3905,"name":"uint256","nodeType":"ElementaryTypeName","src":"5471:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5470:15:14"},"returnParameters":{"id":3910,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3909,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3928,"src":"5509:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint184","typeString":"uint184"},"typeName":{"id":3908,"name":"uint184","nodeType":"ElementaryTypeName","src":"5509:7:14","typeDescriptions":{"typeIdentifier":"t_uint184","typeString":"uint184"}},"visibility":"internal"}],"src":"5508:9:14"},"scope":5241,"src":"5452:192:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3952,"nodeType":"Block","src":"6039:126:14","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3943,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3937,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3931,"src":"6057:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":3940,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6071:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint176_$","typeString":"type(uint176)"},"typeName":{"id":3939,"name":"uint176","nodeType":"ElementaryTypeName","src":"6071:7:14","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint176_$","typeString":"type(uint176)"}],"id":3938,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"6066:4:14","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3941,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6066:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint176","typeString":"type(uint176)"}},"id":3942,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6080:3:14","memberName":"max","nodeType":"MemberAccess","src":"6066:17:14","typeDescriptions":{"typeIdentifier":"t_uint176","typeString":"uint176"}},"src":"6057:26:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e203137362062697473","id":3944,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6085:41:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_4069e970f734339c7841e84a1b26f503bff22b76884c1168dc24e2e6af9b1e30","typeString":"literal_string \"SafeCast: value doesn't fit in 176 bits\""},"value":"SafeCast: value doesn't fit in 176 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_4069e970f734339c7841e84a1b26f503bff22b76884c1168dc24e2e6af9b1e30","typeString":"literal_string \"SafeCast: value doesn't fit in 176 bits\""}],"id":3936,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"6049:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3945,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6049:78:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3946,"nodeType":"ExpressionStatement","src":"6049:78:14"},{"expression":{"arguments":[{"id":3949,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3931,"src":"6152:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3948,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6144:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint176_$","typeString":"type(uint176)"},"typeName":{"id":3947,"name":"uint176","nodeType":"ElementaryTypeName","src":"6144:7:14","typeDescriptions":{}}},"id":3950,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6144:14:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint176","typeString":"uint176"}},"functionReturnParameters":3935,"id":3951,"nodeType":"Return","src":"6137:21:14"}]},"documentation":{"id":3929,"nodeType":"StructuredDocumentation","src":"5650:318:14","text":" @dev Returns the downcasted uint176 from uint256, reverting on\n overflow (when the input is greater than largest uint176).\n Counterpart to Solidity's `uint176` operator.\n Requirements:\n - input must fit into 176 bits\n _Available since v4.7._"},"id":3953,"implemented":true,"kind":"function","modifiers":[],"name":"toUint176","nameLocation":"5982:9:14","nodeType":"FunctionDefinition","parameters":{"id":3932,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3931,"mutability":"mutable","name":"value","nameLocation":"6000:5:14","nodeType":"VariableDeclaration","scope":3953,"src":"5992:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3930,"name":"uint256","nodeType":"ElementaryTypeName","src":"5992:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5991:15:14"},"returnParameters":{"id":3935,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3934,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3953,"src":"6030:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint176","typeString":"uint176"},"typeName":{"id":3933,"name":"uint176","nodeType":"ElementaryTypeName","src":"6030:7:14","typeDescriptions":{"typeIdentifier":"t_uint176","typeString":"uint176"}},"visibility":"internal"}],"src":"6029:9:14"},"scope":5241,"src":"5973:192:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3977,"nodeType":"Block","src":"6560:126:14","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3968,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3962,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3956,"src":"6578:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":3965,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6592:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint168_$","typeString":"type(uint168)"},"typeName":{"id":3964,"name":"uint168","nodeType":"ElementaryTypeName","src":"6592:7:14","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint168_$","typeString":"type(uint168)"}],"id":3963,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"6587:4:14","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3966,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6587:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint168","typeString":"type(uint168)"}},"id":3967,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6601:3:14","memberName":"max","nodeType":"MemberAccess","src":"6587:17:14","typeDescriptions":{"typeIdentifier":"t_uint168","typeString":"uint168"}},"src":"6578:26:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e203136382062697473","id":3969,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6606:41:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_67ef32a3cbe7b34392347d335b0a7ae95c74a34ca40e4efb58f6c9a3154e85a1","typeString":"literal_string \"SafeCast: value doesn't fit in 168 bits\""},"value":"SafeCast: value doesn't fit in 168 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_67ef32a3cbe7b34392347d335b0a7ae95c74a34ca40e4efb58f6c9a3154e85a1","typeString":"literal_string \"SafeCast: value doesn't fit in 168 bits\""}],"id":3961,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"6570:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3970,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6570:78:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3971,"nodeType":"ExpressionStatement","src":"6570:78:14"},{"expression":{"arguments":[{"id":3974,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3956,"src":"6673:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3973,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6665:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint168_$","typeString":"type(uint168)"},"typeName":{"id":3972,"name":"uint168","nodeType":"ElementaryTypeName","src":"6665:7:14","typeDescriptions":{}}},"id":3975,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6665:14:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint168","typeString":"uint168"}},"functionReturnParameters":3960,"id":3976,"nodeType":"Return","src":"6658:21:14"}]},"documentation":{"id":3954,"nodeType":"StructuredDocumentation","src":"6171:318:14","text":" @dev Returns the downcasted uint168 from uint256, reverting on\n overflow (when the input is greater than largest uint168).\n Counterpart to Solidity's `uint168` operator.\n Requirements:\n - input must fit into 168 bits\n _Available since v4.7._"},"id":3978,"implemented":true,"kind":"function","modifiers":[],"name":"toUint168","nameLocation":"6503:9:14","nodeType":"FunctionDefinition","parameters":{"id":3957,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3956,"mutability":"mutable","name":"value","nameLocation":"6521:5:14","nodeType":"VariableDeclaration","scope":3978,"src":"6513:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3955,"name":"uint256","nodeType":"ElementaryTypeName","src":"6513:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6512:15:14"},"returnParameters":{"id":3960,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3959,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3978,"src":"6551:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint168","typeString":"uint168"},"typeName":{"id":3958,"name":"uint168","nodeType":"ElementaryTypeName","src":"6551:7:14","typeDescriptions":{"typeIdentifier":"t_uint168","typeString":"uint168"}},"visibility":"internal"}],"src":"6550:9:14"},"scope":5241,"src":"6494:192:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4002,"nodeType":"Block","src":"7081:126:14","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3993,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3987,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3981,"src":"7099:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":3990,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7113:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":3989,"name":"uint160","nodeType":"ElementaryTypeName","src":"7113:7:14","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"}],"id":3988,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"7108:4:14","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3991,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7108:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint160","typeString":"type(uint160)"}},"id":3992,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7122:3:14","memberName":"max","nodeType":"MemberAccess","src":"7108:17:14","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"7099:26:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e203136302062697473","id":3994,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7127:41:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_976ecce9083debfe29d3a99b955facf24b8725f1b964d1a5bb4197ffcd60ab9d","typeString":"literal_string \"SafeCast: value doesn't fit in 160 bits\""},"value":"SafeCast: value doesn't fit in 160 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_976ecce9083debfe29d3a99b955facf24b8725f1b964d1a5bb4197ffcd60ab9d","typeString":"literal_string \"SafeCast: value doesn't fit in 160 bits\""}],"id":3986,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"7091:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3995,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7091:78:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3996,"nodeType":"ExpressionStatement","src":"7091:78:14"},{"expression":{"arguments":[{"id":3999,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3981,"src":"7194:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3998,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7186:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":3997,"name":"uint160","nodeType":"ElementaryTypeName","src":"7186:7:14","typeDescriptions":{}}},"id":4000,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7186:14:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"functionReturnParameters":3985,"id":4001,"nodeType":"Return","src":"7179:21:14"}]},"documentation":{"id":3979,"nodeType":"StructuredDocumentation","src":"6692:318:14","text":" @dev Returns the downcasted uint160 from uint256, reverting on\n overflow (when the input is greater than largest uint160).\n Counterpart to Solidity's `uint160` operator.\n Requirements:\n - input must fit into 160 bits\n _Available since v4.7._"},"id":4003,"implemented":true,"kind":"function","modifiers":[],"name":"toUint160","nameLocation":"7024:9:14","nodeType":"FunctionDefinition","parameters":{"id":3982,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3981,"mutability":"mutable","name":"value","nameLocation":"7042:5:14","nodeType":"VariableDeclaration","scope":4003,"src":"7034:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3980,"name":"uint256","nodeType":"ElementaryTypeName","src":"7034:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7033:15:14"},"returnParameters":{"id":3985,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3984,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4003,"src":"7072:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":3983,"name":"uint160","nodeType":"ElementaryTypeName","src":"7072:7:14","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"7071:9:14"},"scope":5241,"src":"7015:192:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4027,"nodeType":"Block","src":"7602:126:14","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4018,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4012,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4006,"src":"7620:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":4015,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7634:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint152_$","typeString":"type(uint152)"},"typeName":{"id":4014,"name":"uint152","nodeType":"ElementaryTypeName","src":"7634:7:14","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint152_$","typeString":"type(uint152)"}],"id":4013,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"7629:4:14","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":4016,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7629:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint152","typeString":"type(uint152)"}},"id":4017,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7643:3:14","memberName":"max","nodeType":"MemberAccess","src":"7629:17:14","typeDescriptions":{"typeIdentifier":"t_uint152","typeString":"uint152"}},"src":"7620:26:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e203135322062697473","id":4019,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7648:41:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_211cad43a2caf5f01e34af51190b8a7b6f3d9c195bd25586ea12242191b97831","typeString":"literal_string \"SafeCast: value doesn't fit in 152 bits\""},"value":"SafeCast: value doesn't fit in 152 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_211cad43a2caf5f01e34af51190b8a7b6f3d9c195bd25586ea12242191b97831","typeString":"literal_string \"SafeCast: value doesn't fit in 152 bits\""}],"id":4011,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"7612:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4020,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7612:78:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4021,"nodeType":"ExpressionStatement","src":"7612:78:14"},{"expression":{"arguments":[{"id":4024,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4006,"src":"7715:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4023,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7707:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint152_$","typeString":"type(uint152)"},"typeName":{"id":4022,"name":"uint152","nodeType":"ElementaryTypeName","src":"7707:7:14","typeDescriptions":{}}},"id":4025,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7707:14:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint152","typeString":"uint152"}},"functionReturnParameters":4010,"id":4026,"nodeType":"Return","src":"7700:21:14"}]},"documentation":{"id":4004,"nodeType":"StructuredDocumentation","src":"7213:318:14","text":" @dev Returns the downcasted uint152 from uint256, reverting on\n overflow (when the input is greater than largest uint152).\n Counterpart to Solidity's `uint152` operator.\n Requirements:\n - input must fit into 152 bits\n _Available since v4.7._"},"id":4028,"implemented":true,"kind":"function","modifiers":[],"name":"toUint152","nameLocation":"7545:9:14","nodeType":"FunctionDefinition","parameters":{"id":4007,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4006,"mutability":"mutable","name":"value","nameLocation":"7563:5:14","nodeType":"VariableDeclaration","scope":4028,"src":"7555:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4005,"name":"uint256","nodeType":"ElementaryTypeName","src":"7555:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7554:15:14"},"returnParameters":{"id":4010,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4009,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4028,"src":"7593:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint152","typeString":"uint152"},"typeName":{"id":4008,"name":"uint152","nodeType":"ElementaryTypeName","src":"7593:7:14","typeDescriptions":{"typeIdentifier":"t_uint152","typeString":"uint152"}},"visibility":"internal"}],"src":"7592:9:14"},"scope":5241,"src":"7536:192:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4052,"nodeType":"Block","src":"8123:126:14","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4043,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4037,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4031,"src":"8141:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":4040,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8155:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint144_$","typeString":"type(uint144)"},"typeName":{"id":4039,"name":"uint144","nodeType":"ElementaryTypeName","src":"8155:7:14","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint144_$","typeString":"type(uint144)"}],"id":4038,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"8150:4:14","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":4041,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8150:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint144","typeString":"type(uint144)"}},"id":4042,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8164:3:14","memberName":"max","nodeType":"MemberAccess","src":"8150:17:14","typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"}},"src":"8141:26:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e203134342062697473","id":4044,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8169:41:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_17d8c5a6d3b2fd2517ba2e4a2ac70a3367cd362448f8338aaa6edf8bfd812bab","typeString":"literal_string \"SafeCast: value doesn't fit in 144 bits\""},"value":"SafeCast: value doesn't fit in 144 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_17d8c5a6d3b2fd2517ba2e4a2ac70a3367cd362448f8338aaa6edf8bfd812bab","typeString":"literal_string \"SafeCast: value doesn't fit in 144 bits\""}],"id":4036,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"8133:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4045,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8133:78:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4046,"nodeType":"ExpressionStatement","src":"8133:78:14"},{"expression":{"arguments":[{"id":4049,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4031,"src":"8236:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4048,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8228:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint144_$","typeString":"type(uint144)"},"typeName":{"id":4047,"name":"uint144","nodeType":"ElementaryTypeName","src":"8228:7:14","typeDescriptions":{}}},"id":4050,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8228:14:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"}},"functionReturnParameters":4035,"id":4051,"nodeType":"Return","src":"8221:21:14"}]},"documentation":{"id":4029,"nodeType":"StructuredDocumentation","src":"7734:318:14","text":" @dev Returns the downcasted uint144 from uint256, reverting on\n overflow (when the input is greater than largest uint144).\n Counterpart to Solidity's `uint144` operator.\n Requirements:\n - input must fit into 144 bits\n _Available since v4.7._"},"id":4053,"implemented":true,"kind":"function","modifiers":[],"name":"toUint144","nameLocation":"8066:9:14","nodeType":"FunctionDefinition","parameters":{"id":4032,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4031,"mutability":"mutable","name":"value","nameLocation":"8084:5:14","nodeType":"VariableDeclaration","scope":4053,"src":"8076:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4030,"name":"uint256","nodeType":"ElementaryTypeName","src":"8076:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8075:15:14"},"returnParameters":{"id":4035,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4034,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4053,"src":"8114:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"},"typeName":{"id":4033,"name":"uint144","nodeType":"ElementaryTypeName","src":"8114:7:14","typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"}},"visibility":"internal"}],"src":"8113:9:14"},"scope":5241,"src":"8057:192:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4077,"nodeType":"Block","src":"8644:126:14","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4068,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4062,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4056,"src":"8662:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":4065,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8676:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint136_$","typeString":"type(uint136)"},"typeName":{"id":4064,"name":"uint136","nodeType":"ElementaryTypeName","src":"8676:7:14","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint136_$","typeString":"type(uint136)"}],"id":4063,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"8671:4:14","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":4066,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8671:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint136","typeString":"type(uint136)"}},"id":4067,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8685:3:14","memberName":"max","nodeType":"MemberAccess","src":"8671:17:14","typeDescriptions":{"typeIdentifier":"t_uint136","typeString":"uint136"}},"src":"8662:26:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e203133362062697473","id":4069,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8690:41:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_8b1f81e2e2913e1cee9dba7bcd9837bbf8a8122edaac4afc578271db3c25a56a","typeString":"literal_string \"SafeCast: value doesn't fit in 136 bits\""},"value":"SafeCast: value doesn't fit in 136 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8b1f81e2e2913e1cee9dba7bcd9837bbf8a8122edaac4afc578271db3c25a56a","typeString":"literal_string \"SafeCast: value doesn't fit in 136 bits\""}],"id":4061,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"8654:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4070,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8654:78:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4071,"nodeType":"ExpressionStatement","src":"8654:78:14"},{"expression":{"arguments":[{"id":4074,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4056,"src":"8757:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4073,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8749:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint136_$","typeString":"type(uint136)"},"typeName":{"id":4072,"name":"uint136","nodeType":"ElementaryTypeName","src":"8749:7:14","typeDescriptions":{}}},"id":4075,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8749:14:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint136","typeString":"uint136"}},"functionReturnParameters":4060,"id":4076,"nodeType":"Return","src":"8742:21:14"}]},"documentation":{"id":4054,"nodeType":"StructuredDocumentation","src":"8255:318:14","text":" @dev Returns the downcasted uint136 from uint256, reverting on\n overflow (when the input is greater than largest uint136).\n Counterpart to Solidity's `uint136` operator.\n Requirements:\n - input must fit into 136 bits\n _Available since v4.7._"},"id":4078,"implemented":true,"kind":"function","modifiers":[],"name":"toUint136","nameLocation":"8587:9:14","nodeType":"FunctionDefinition","parameters":{"id":4057,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4056,"mutability":"mutable","name":"value","nameLocation":"8605:5:14","nodeType":"VariableDeclaration","scope":4078,"src":"8597:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4055,"name":"uint256","nodeType":"ElementaryTypeName","src":"8597:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8596:15:14"},"returnParameters":{"id":4060,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4059,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4078,"src":"8635:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint136","typeString":"uint136"},"typeName":{"id":4058,"name":"uint136","nodeType":"ElementaryTypeName","src":"8635:7:14","typeDescriptions":{"typeIdentifier":"t_uint136","typeString":"uint136"}},"visibility":"internal"}],"src":"8634:9:14"},"scope":5241,"src":"8578:192:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4102,"nodeType":"Block","src":"9165:126:14","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4093,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4087,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4081,"src":"9183:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":4090,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9197:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":4089,"name":"uint128","nodeType":"ElementaryTypeName","src":"9197:7:14","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"}],"id":4088,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"9192:4:14","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":4091,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9192:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint128","typeString":"type(uint128)"}},"id":4092,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9206:3:14","memberName":"max","nodeType":"MemberAccess","src":"9192:17:14","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"9183:26:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e203132382062697473","id":4094,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9211:41:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_47a1e201974f94d3d1a31c8b08ae18c6966c758bdcd4400020012b98cc55426c","typeString":"literal_string \"SafeCast: value doesn't fit in 128 bits\""},"value":"SafeCast: value doesn't fit in 128 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_47a1e201974f94d3d1a31c8b08ae18c6966c758bdcd4400020012b98cc55426c","typeString":"literal_string \"SafeCast: value doesn't fit in 128 bits\""}],"id":4086,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"9175:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4095,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9175:78:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4096,"nodeType":"ExpressionStatement","src":"9175:78:14"},{"expression":{"arguments":[{"id":4099,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4081,"src":"9278:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4098,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9270:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":4097,"name":"uint128","nodeType":"ElementaryTypeName","src":"9270:7:14","typeDescriptions":{}}},"id":4100,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9270:14:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"functionReturnParameters":4085,"id":4101,"nodeType":"Return","src":"9263:21:14"}]},"documentation":{"id":4079,"nodeType":"StructuredDocumentation","src":"8776:318:14","text":" @dev Returns the downcasted uint128 from uint256, reverting on\n overflow (when the input is greater than largest uint128).\n Counterpart to Solidity's `uint128` operator.\n Requirements:\n - input must fit into 128 bits\n _Available since v2.5._"},"id":4103,"implemented":true,"kind":"function","modifiers":[],"name":"toUint128","nameLocation":"9108:9:14","nodeType":"FunctionDefinition","parameters":{"id":4082,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4081,"mutability":"mutable","name":"value","nameLocation":"9126:5:14","nodeType":"VariableDeclaration","scope":4103,"src":"9118:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4080,"name":"uint256","nodeType":"ElementaryTypeName","src":"9118:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9117:15:14"},"returnParameters":{"id":4085,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4084,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4103,"src":"9156:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":4083,"name":"uint128","nodeType":"ElementaryTypeName","src":"9156:7:14","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"9155:9:14"},"scope":5241,"src":"9099:192:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4127,"nodeType":"Block","src":"9686:126:14","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4118,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4112,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4106,"src":"9704:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":4115,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9718:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint120_$","typeString":"type(uint120)"},"typeName":{"id":4114,"name":"uint120","nodeType":"ElementaryTypeName","src":"9718:7:14","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint120_$","typeString":"type(uint120)"}],"id":4113,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"9713:4:14","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":4116,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9713:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint120","typeString":"type(uint120)"}},"id":4117,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9727:3:14","memberName":"max","nodeType":"MemberAccess","src":"9713:17:14","typeDescriptions":{"typeIdentifier":"t_uint120","typeString":"uint120"}},"src":"9704:26:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e203132302062697473","id":4119,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9732:41:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_3c40c26bb27060cce77002ca0c426dcc1bef2d367c195ca2eb24bd8b2cc1bb09","typeString":"literal_string \"SafeCast: value doesn't fit in 120 bits\""},"value":"SafeCast: value doesn't fit in 120 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_3c40c26bb27060cce77002ca0c426dcc1bef2d367c195ca2eb24bd8b2cc1bb09","typeString":"literal_string \"SafeCast: value doesn't fit in 120 bits\""}],"id":4111,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"9696:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4120,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9696:78:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4121,"nodeType":"ExpressionStatement","src":"9696:78:14"},{"expression":{"arguments":[{"id":4124,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4106,"src":"9799:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4123,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9791:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint120_$","typeString":"type(uint120)"},"typeName":{"id":4122,"name":"uint120","nodeType":"ElementaryTypeName","src":"9791:7:14","typeDescriptions":{}}},"id":4125,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9791:14:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint120","typeString":"uint120"}},"functionReturnParameters":4110,"id":4126,"nodeType":"Return","src":"9784:21:14"}]},"documentation":{"id":4104,"nodeType":"StructuredDocumentation","src":"9297:318:14","text":" @dev Returns the downcasted uint120 from uint256, reverting on\n overflow (when the input is greater than largest uint120).\n Counterpart to Solidity's `uint120` operator.\n Requirements:\n - input must fit into 120 bits\n _Available since v4.7._"},"id":4128,"implemented":true,"kind":"function","modifiers":[],"name":"toUint120","nameLocation":"9629:9:14","nodeType":"FunctionDefinition","parameters":{"id":4107,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4106,"mutability":"mutable","name":"value","nameLocation":"9647:5:14","nodeType":"VariableDeclaration","scope":4128,"src":"9639:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4105,"name":"uint256","nodeType":"ElementaryTypeName","src":"9639:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9638:15:14"},"returnParameters":{"id":4110,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4109,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4128,"src":"9677:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint120","typeString":"uint120"},"typeName":{"id":4108,"name":"uint120","nodeType":"ElementaryTypeName","src":"9677:7:14","typeDescriptions":{"typeIdentifier":"t_uint120","typeString":"uint120"}},"visibility":"internal"}],"src":"9676:9:14"},"scope":5241,"src":"9620:192:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4152,"nodeType":"Block","src":"10207:126:14","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4143,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4137,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4131,"src":"10225:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":4140,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10239:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint112_$","typeString":"type(uint112)"},"typeName":{"id":4139,"name":"uint112","nodeType":"ElementaryTypeName","src":"10239:7:14","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint112_$","typeString":"type(uint112)"}],"id":4138,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"10234:4:14","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":4141,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10234:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint112","typeString":"type(uint112)"}},"id":4142,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"10248:3:14","memberName":"max","nodeType":"MemberAccess","src":"10234:17:14","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"src":"10225:26:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e203131322062697473","id":4144,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10253:41:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_45659ae152ef697531e1c1115de07c87af91ac22466c3e76b808821799776efd","typeString":"literal_string \"SafeCast: value doesn't fit in 112 bits\""},"value":"SafeCast: value doesn't fit in 112 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_45659ae152ef697531e1c1115de07c87af91ac22466c3e76b808821799776efd","typeString":"literal_string \"SafeCast: value doesn't fit in 112 bits\""}],"id":4136,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"10217:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4145,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10217:78:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4146,"nodeType":"ExpressionStatement","src":"10217:78:14"},{"expression":{"arguments":[{"id":4149,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4131,"src":"10320:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4148,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10312:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint112_$","typeString":"type(uint112)"},"typeName":{"id":4147,"name":"uint112","nodeType":"ElementaryTypeName","src":"10312:7:14","typeDescriptions":{}}},"id":4150,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10312:14:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"functionReturnParameters":4135,"id":4151,"nodeType":"Return","src":"10305:21:14"}]},"documentation":{"id":4129,"nodeType":"StructuredDocumentation","src":"9818:318:14","text":" @dev Returns the downcasted uint112 from uint256, reverting on\n overflow (when the input is greater than largest uint112).\n Counterpart to Solidity's `uint112` operator.\n Requirements:\n - input must fit into 112 bits\n _Available since v4.7._"},"id":4153,"implemented":true,"kind":"function","modifiers":[],"name":"toUint112","nameLocation":"10150:9:14","nodeType":"FunctionDefinition","parameters":{"id":4132,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4131,"mutability":"mutable","name":"value","nameLocation":"10168:5:14","nodeType":"VariableDeclaration","scope":4153,"src":"10160:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4130,"name":"uint256","nodeType":"ElementaryTypeName","src":"10160:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10159:15:14"},"returnParameters":{"id":4135,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4134,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4153,"src":"10198:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"},"typeName":{"id":4133,"name":"uint112","nodeType":"ElementaryTypeName","src":"10198:7:14","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"visibility":"internal"}],"src":"10197:9:14"},"scope":5241,"src":"10141:192:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4177,"nodeType":"Block","src":"10728:126:14","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4168,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4162,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4156,"src":"10746:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":4165,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10760:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint104_$","typeString":"type(uint104)"},"typeName":{"id":4164,"name":"uint104","nodeType":"ElementaryTypeName","src":"10760:7:14","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint104_$","typeString":"type(uint104)"}],"id":4163,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"10755:4:14","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":4166,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10755:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint104","typeString":"type(uint104)"}},"id":4167,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"10769:3:14","memberName":"max","nodeType":"MemberAccess","src":"10755:17:14","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}},"src":"10746:26:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e203130342062697473","id":4169,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10774:41:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_5d7f3e1b7e9f9a06fded6b093c6fd1473ca0a14cc4bb683db904e803e2482981","typeString":"literal_string \"SafeCast: value doesn't fit in 104 bits\""},"value":"SafeCast: value doesn't fit in 104 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5d7f3e1b7e9f9a06fded6b093c6fd1473ca0a14cc4bb683db904e803e2482981","typeString":"literal_string \"SafeCast: value doesn't fit in 104 bits\""}],"id":4161,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"10738:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4170,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10738:78:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4171,"nodeType":"ExpressionStatement","src":"10738:78:14"},{"expression":{"arguments":[{"id":4174,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4156,"src":"10841:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4173,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10833:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint104_$","typeString":"type(uint104)"},"typeName":{"id":4172,"name":"uint104","nodeType":"ElementaryTypeName","src":"10833:7:14","typeDescriptions":{}}},"id":4175,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10833:14:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}},"functionReturnParameters":4160,"id":4176,"nodeType":"Return","src":"10826:21:14"}]},"documentation":{"id":4154,"nodeType":"StructuredDocumentation","src":"10339:318:14","text":" @dev Returns the downcasted uint104 from uint256, reverting on\n overflow (when the input is greater than largest uint104).\n Counterpart to Solidity's `uint104` operator.\n Requirements:\n - input must fit into 104 bits\n _Available since v4.7._"},"id":4178,"implemented":true,"kind":"function","modifiers":[],"name":"toUint104","nameLocation":"10671:9:14","nodeType":"FunctionDefinition","parameters":{"id":4157,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4156,"mutability":"mutable","name":"value","nameLocation":"10689:5:14","nodeType":"VariableDeclaration","scope":4178,"src":"10681:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4155,"name":"uint256","nodeType":"ElementaryTypeName","src":"10681:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10680:15:14"},"returnParameters":{"id":4160,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4159,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4178,"src":"10719:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"},"typeName":{"id":4158,"name":"uint104","nodeType":"ElementaryTypeName","src":"10719:7:14","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}},"visibility":"internal"}],"src":"10718:9:14"},"scope":5241,"src":"10662:192:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4202,"nodeType":"Block","src":"11243:123:14","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4193,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4187,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4181,"src":"11261:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":4190,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11275:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint96_$","typeString":"type(uint96)"},"typeName":{"id":4189,"name":"uint96","nodeType":"ElementaryTypeName","src":"11275:6:14","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint96_$","typeString":"type(uint96)"}],"id":4188,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"11270:4:14","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":4191,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11270:12:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint96","typeString":"type(uint96)"}},"id":4192,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11283:3:14","memberName":"max","nodeType":"MemberAccess","src":"11270:16:14","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"src":"11261:25:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e2039362062697473","id":4194,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11288:40:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_06d20189090e973729391526269baef79c35dd621633195648e5f8309eef9e19","typeString":"literal_string \"SafeCast: value doesn't fit in 96 bits\""},"value":"SafeCast: value doesn't fit in 96 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_06d20189090e973729391526269baef79c35dd621633195648e5f8309eef9e19","typeString":"literal_string \"SafeCast: value doesn't fit in 96 bits\""}],"id":4186,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"11253:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4195,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11253:76:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4196,"nodeType":"ExpressionStatement","src":"11253:76:14"},{"expression":{"arguments":[{"id":4199,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4181,"src":"11353:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4198,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11346:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint96_$","typeString":"type(uint96)"},"typeName":{"id":4197,"name":"uint96","nodeType":"ElementaryTypeName","src":"11346:6:14","typeDescriptions":{}}},"id":4200,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11346:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"functionReturnParameters":4185,"id":4201,"nodeType":"Return","src":"11339:20:14"}]},"documentation":{"id":4179,"nodeType":"StructuredDocumentation","src":"10860:314:14","text":" @dev Returns the downcasted uint96 from uint256, reverting on\n overflow (when the input is greater than largest uint96).\n Counterpart to Solidity's `uint96` operator.\n Requirements:\n - input must fit into 96 bits\n _Available since v4.2._"},"id":4203,"implemented":true,"kind":"function","modifiers":[],"name":"toUint96","nameLocation":"11188:8:14","nodeType":"FunctionDefinition","parameters":{"id":4182,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4181,"mutability":"mutable","name":"value","nameLocation":"11205:5:14","nodeType":"VariableDeclaration","scope":4203,"src":"11197:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4180,"name":"uint256","nodeType":"ElementaryTypeName","src":"11197:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11196:15:14"},"returnParameters":{"id":4185,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4184,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4203,"src":"11235:6:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":4183,"name":"uint96","nodeType":"ElementaryTypeName","src":"11235:6:14","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"}],"src":"11234:8:14"},"scope":5241,"src":"11179:187:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4227,"nodeType":"Block","src":"11755:123:14","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4218,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4212,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4206,"src":"11773:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":4215,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11787:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint88_$","typeString":"type(uint88)"},"typeName":{"id":4214,"name":"uint88","nodeType":"ElementaryTypeName","src":"11787:6:14","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint88_$","typeString":"type(uint88)"}],"id":4213,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"11782:4:14","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":4216,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11782:12:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint88","typeString":"type(uint88)"}},"id":4217,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11795:3:14","memberName":"max","nodeType":"MemberAccess","src":"11782:16:14","typeDescriptions":{"typeIdentifier":"t_uint88","typeString":"uint88"}},"src":"11773:25:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e2038382062697473","id":4219,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11800:40:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_ae080bd7a76a46f0a0caf00941bc2cdf6002799ca2813a3af7295019576d715d","typeString":"literal_string \"SafeCast: value doesn't fit in 88 bits\""},"value":"SafeCast: value doesn't fit in 88 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ae080bd7a76a46f0a0caf00941bc2cdf6002799ca2813a3af7295019576d715d","typeString":"literal_string \"SafeCast: value doesn't fit in 88 bits\""}],"id":4211,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"11765:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4220,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11765:76:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4221,"nodeType":"ExpressionStatement","src":"11765:76:14"},{"expression":{"arguments":[{"id":4224,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4206,"src":"11865:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4223,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11858:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint88_$","typeString":"type(uint88)"},"typeName":{"id":4222,"name":"uint88","nodeType":"ElementaryTypeName","src":"11858:6:14","typeDescriptions":{}}},"id":4225,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11858:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint88","typeString":"uint88"}},"functionReturnParameters":4210,"id":4226,"nodeType":"Return","src":"11851:20:14"}]},"documentation":{"id":4204,"nodeType":"StructuredDocumentation","src":"11372:314:14","text":" @dev Returns the downcasted uint88 from uint256, reverting on\n overflow (when the input is greater than largest uint88).\n Counterpart to Solidity's `uint88` operator.\n Requirements:\n - input must fit into 88 bits\n _Available since v4.7._"},"id":4228,"implemented":true,"kind":"function","modifiers":[],"name":"toUint88","nameLocation":"11700:8:14","nodeType":"FunctionDefinition","parameters":{"id":4207,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4206,"mutability":"mutable","name":"value","nameLocation":"11717:5:14","nodeType":"VariableDeclaration","scope":4228,"src":"11709:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4205,"name":"uint256","nodeType":"ElementaryTypeName","src":"11709:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11708:15:14"},"returnParameters":{"id":4210,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4209,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4228,"src":"11747:6:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint88","typeString":"uint88"},"typeName":{"id":4208,"name":"uint88","nodeType":"ElementaryTypeName","src":"11747:6:14","typeDescriptions":{"typeIdentifier":"t_uint88","typeString":"uint88"}},"visibility":"internal"}],"src":"11746:8:14"},"scope":5241,"src":"11691:187:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4252,"nodeType":"Block","src":"12267:123:14","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4243,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4237,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4231,"src":"12285:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":4240,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12299:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint80_$","typeString":"type(uint80)"},"typeName":{"id":4239,"name":"uint80","nodeType":"ElementaryTypeName","src":"12299:6:14","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint80_$","typeString":"type(uint80)"}],"id":4238,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"12294:4:14","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":4241,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12294:12:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint80","typeString":"type(uint80)"}},"id":4242,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"12307:3:14","memberName":"max","nodeType":"MemberAccess","src":"12294:16:14","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"src":"12285:25:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e2038302062697473","id":4244,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12312:40:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_3cba87c71fade7d3cd7b673c159aab98afc040a5369691a33559d905d20ab5d1","typeString":"literal_string \"SafeCast: value doesn't fit in 80 bits\""},"value":"SafeCast: value doesn't fit in 80 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_3cba87c71fade7d3cd7b673c159aab98afc040a5369691a33559d905d20ab5d1","typeString":"literal_string \"SafeCast: value doesn't fit in 80 bits\""}],"id":4236,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"12277:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4245,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12277:76:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4246,"nodeType":"ExpressionStatement","src":"12277:76:14"},{"expression":{"arguments":[{"id":4249,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4231,"src":"12377:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4248,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12370:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint80_$","typeString":"type(uint80)"},"typeName":{"id":4247,"name":"uint80","nodeType":"ElementaryTypeName","src":"12370:6:14","typeDescriptions":{}}},"id":4250,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12370:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"functionReturnParameters":4235,"id":4251,"nodeType":"Return","src":"12363:20:14"}]},"documentation":{"id":4229,"nodeType":"StructuredDocumentation","src":"11884:314:14","text":" @dev Returns the downcasted uint80 from uint256, reverting on\n overflow (when the input is greater than largest uint80).\n Counterpart to Solidity's `uint80` operator.\n Requirements:\n - input must fit into 80 bits\n _Available since v4.7._"},"id":4253,"implemented":true,"kind":"function","modifiers":[],"name":"toUint80","nameLocation":"12212:8:14","nodeType":"FunctionDefinition","parameters":{"id":4232,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4231,"mutability":"mutable","name":"value","nameLocation":"12229:5:14","nodeType":"VariableDeclaration","scope":4253,"src":"12221:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4230,"name":"uint256","nodeType":"ElementaryTypeName","src":"12221:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12220:15:14"},"returnParameters":{"id":4235,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4234,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4253,"src":"12259:6:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"},"typeName":{"id":4233,"name":"uint80","nodeType":"ElementaryTypeName","src":"12259:6:14","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"visibility":"internal"}],"src":"12258:8:14"},"scope":5241,"src":"12203:187:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4277,"nodeType":"Block","src":"12779:123:14","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4268,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4262,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4256,"src":"12797:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":4265,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12811:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint72_$","typeString":"type(uint72)"},"typeName":{"id":4264,"name":"uint72","nodeType":"ElementaryTypeName","src":"12811:6:14","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint72_$","typeString":"type(uint72)"}],"id":4263,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"12806:4:14","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":4266,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12806:12:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint72","typeString":"type(uint72)"}},"id":4267,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"12819:3:14","memberName":"max","nodeType":"MemberAccess","src":"12806:16:14","typeDescriptions":{"typeIdentifier":"t_uint72","typeString":"uint72"}},"src":"12797:25:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e2037322062697473","id":4269,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12824:40:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_71584237cc5250b8f417982144a947efe8f4c76feba008ff32ac480e69d60606","typeString":"literal_string \"SafeCast: value doesn't fit in 72 bits\""},"value":"SafeCast: value doesn't fit in 72 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_71584237cc5250b8f417982144a947efe8f4c76feba008ff32ac480e69d60606","typeString":"literal_string \"SafeCast: value doesn't fit in 72 bits\""}],"id":4261,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"12789:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4270,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12789:76:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4271,"nodeType":"ExpressionStatement","src":"12789:76:14"},{"expression":{"arguments":[{"id":4274,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4256,"src":"12889:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4273,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12882:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint72_$","typeString":"type(uint72)"},"typeName":{"id":4272,"name":"uint72","nodeType":"ElementaryTypeName","src":"12882:6:14","typeDescriptions":{}}},"id":4275,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12882:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint72","typeString":"uint72"}},"functionReturnParameters":4260,"id":4276,"nodeType":"Return","src":"12875:20:14"}]},"documentation":{"id":4254,"nodeType":"StructuredDocumentation","src":"12396:314:14","text":" @dev Returns the downcasted uint72 from uint256, reverting on\n overflow (when the input is greater than largest uint72).\n Counterpart to Solidity's `uint72` operator.\n Requirements:\n - input must fit into 72 bits\n _Available since v4.7._"},"id":4278,"implemented":true,"kind":"function","modifiers":[],"name":"toUint72","nameLocation":"12724:8:14","nodeType":"FunctionDefinition","parameters":{"id":4257,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4256,"mutability":"mutable","name":"value","nameLocation":"12741:5:14","nodeType":"VariableDeclaration","scope":4278,"src":"12733:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4255,"name":"uint256","nodeType":"ElementaryTypeName","src":"12733:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12732:15:14"},"returnParameters":{"id":4260,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4259,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4278,"src":"12771:6:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint72","typeString":"uint72"},"typeName":{"id":4258,"name":"uint72","nodeType":"ElementaryTypeName","src":"12771:6:14","typeDescriptions":{"typeIdentifier":"t_uint72","typeString":"uint72"}},"visibility":"internal"}],"src":"12770:8:14"},"scope":5241,"src":"12715:187:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4302,"nodeType":"Block","src":"13291:123:14","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4293,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4287,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4281,"src":"13309:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":4290,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13323:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":4289,"name":"uint64","nodeType":"ElementaryTypeName","src":"13323:6:14","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"}],"id":4288,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"13318:4:14","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":4291,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13318:12:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint64","typeString":"type(uint64)"}},"id":4292,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"13331:3:14","memberName":"max","nodeType":"MemberAccess","src":"13318:16:14","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"13309:25:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e2036342062697473","id":4294,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"13336:40:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_93ae0c6bf6ffaece591a770b1865daa9f65157e541970aa9d8dc5f89a9490939","typeString":"literal_string \"SafeCast: value doesn't fit in 64 bits\""},"value":"SafeCast: value doesn't fit in 64 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_93ae0c6bf6ffaece591a770b1865daa9f65157e541970aa9d8dc5f89a9490939","typeString":"literal_string \"SafeCast: value doesn't fit in 64 bits\""}],"id":4286,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"13301:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4295,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13301:76:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4296,"nodeType":"ExpressionStatement","src":"13301:76:14"},{"expression":{"arguments":[{"id":4299,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4281,"src":"13401:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4298,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13394:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":4297,"name":"uint64","nodeType":"ElementaryTypeName","src":"13394:6:14","typeDescriptions":{}}},"id":4300,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13394:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"functionReturnParameters":4285,"id":4301,"nodeType":"Return","src":"13387:20:14"}]},"documentation":{"id":4279,"nodeType":"StructuredDocumentation","src":"12908:314:14","text":" @dev Returns the downcasted uint64 from uint256, reverting on\n overflow (when the input is greater than largest uint64).\n Counterpart to Solidity's `uint64` operator.\n Requirements:\n - input must fit into 64 bits\n _Available since v2.5._"},"id":4303,"implemented":true,"kind":"function","modifiers":[],"name":"toUint64","nameLocation":"13236:8:14","nodeType":"FunctionDefinition","parameters":{"id":4282,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4281,"mutability":"mutable","name":"value","nameLocation":"13253:5:14","nodeType":"VariableDeclaration","scope":4303,"src":"13245:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4280,"name":"uint256","nodeType":"ElementaryTypeName","src":"13245:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13244:15:14"},"returnParameters":{"id":4285,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4284,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4303,"src":"13283:6:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":4283,"name":"uint64","nodeType":"ElementaryTypeName","src":"13283:6:14","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"13282:8:14"},"scope":5241,"src":"13227:187:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4327,"nodeType":"Block","src":"13803:123:14","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4318,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4312,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4306,"src":"13821:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":4315,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13835:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint56_$","typeString":"type(uint56)"},"typeName":{"id":4314,"name":"uint56","nodeType":"ElementaryTypeName","src":"13835:6:14","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint56_$","typeString":"type(uint56)"}],"id":4313,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"13830:4:14","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":4316,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13830:12:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint56","typeString":"type(uint56)"}},"id":4317,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"13843:3:14","memberName":"max","nodeType":"MemberAccess","src":"13830:16:14","typeDescriptions":{"typeIdentifier":"t_uint56","typeString":"uint56"}},"src":"13821:25:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e2035362062697473","id":4319,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"13848:40:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_656ad93b5ff6665bfe05d97d51fad7c02ad79e6c43bef066c042a6900f450bc5","typeString":"literal_string \"SafeCast: value doesn't fit in 56 bits\""},"value":"SafeCast: value doesn't fit in 56 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_656ad93b5ff6665bfe05d97d51fad7c02ad79e6c43bef066c042a6900f450bc5","typeString":"literal_string \"SafeCast: value doesn't fit in 56 bits\""}],"id":4311,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"13813:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4320,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13813:76:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4321,"nodeType":"ExpressionStatement","src":"13813:76:14"},{"expression":{"arguments":[{"id":4324,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4306,"src":"13913:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4323,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13906:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint56_$","typeString":"type(uint56)"},"typeName":{"id":4322,"name":"uint56","nodeType":"ElementaryTypeName","src":"13906:6:14","typeDescriptions":{}}},"id":4325,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13906:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint56","typeString":"uint56"}},"functionReturnParameters":4310,"id":4326,"nodeType":"Return","src":"13899:20:14"}]},"documentation":{"id":4304,"nodeType":"StructuredDocumentation","src":"13420:314:14","text":" @dev Returns the downcasted uint56 from uint256, reverting on\n overflow (when the input is greater than largest uint56).\n Counterpart to Solidity's `uint56` operator.\n Requirements:\n - input must fit into 56 bits\n _Available since v4.7._"},"id":4328,"implemented":true,"kind":"function","modifiers":[],"name":"toUint56","nameLocation":"13748:8:14","nodeType":"FunctionDefinition","parameters":{"id":4307,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4306,"mutability":"mutable","name":"value","nameLocation":"13765:5:14","nodeType":"VariableDeclaration","scope":4328,"src":"13757:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4305,"name":"uint256","nodeType":"ElementaryTypeName","src":"13757:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13756:15:14"},"returnParameters":{"id":4310,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4309,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4328,"src":"13795:6:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint56","typeString":"uint56"},"typeName":{"id":4308,"name":"uint56","nodeType":"ElementaryTypeName","src":"13795:6:14","typeDescriptions":{"typeIdentifier":"t_uint56","typeString":"uint56"}},"visibility":"internal"}],"src":"13794:8:14"},"scope":5241,"src":"13739:187:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4352,"nodeType":"Block","src":"14315:123:14","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4343,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4337,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4331,"src":"14333:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":4340,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14347:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint48_$","typeString":"type(uint48)"},"typeName":{"id":4339,"name":"uint48","nodeType":"ElementaryTypeName","src":"14347:6:14","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint48_$","typeString":"type(uint48)"}],"id":4338,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"14342:4:14","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":4341,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14342:12:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint48","typeString":"type(uint48)"}},"id":4342,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"14355:3:14","memberName":"max","nodeType":"MemberAccess","src":"14342:16:14","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"14333:25:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e2034382062697473","id":4344,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"14360:40:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_599034f9324dd4e988c6cea5a00a30f53147fec1b01559682f18cd840028f495","typeString":"literal_string \"SafeCast: value doesn't fit in 48 bits\""},"value":"SafeCast: value doesn't fit in 48 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_599034f9324dd4e988c6cea5a00a30f53147fec1b01559682f18cd840028f495","typeString":"literal_string \"SafeCast: value doesn't fit in 48 bits\""}],"id":4336,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"14325:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4345,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14325:76:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4346,"nodeType":"ExpressionStatement","src":"14325:76:14"},{"expression":{"arguments":[{"id":4349,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4331,"src":"14425:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4348,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14418:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint48_$","typeString":"type(uint48)"},"typeName":{"id":4347,"name":"uint48","nodeType":"ElementaryTypeName","src":"14418:6:14","typeDescriptions":{}}},"id":4350,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14418:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"functionReturnParameters":4335,"id":4351,"nodeType":"Return","src":"14411:20:14"}]},"documentation":{"id":4329,"nodeType":"StructuredDocumentation","src":"13932:314:14","text":" @dev Returns the downcasted uint48 from uint256, reverting on\n overflow (when the input is greater than largest uint48).\n Counterpart to Solidity's `uint48` operator.\n Requirements:\n - input must fit into 48 bits\n _Available since v4.7._"},"id":4353,"implemented":true,"kind":"function","modifiers":[],"name":"toUint48","nameLocation":"14260:8:14","nodeType":"FunctionDefinition","parameters":{"id":4332,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4331,"mutability":"mutable","name":"value","nameLocation":"14277:5:14","nodeType":"VariableDeclaration","scope":4353,"src":"14269:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4330,"name":"uint256","nodeType":"ElementaryTypeName","src":"14269:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14268:15:14"},"returnParameters":{"id":4335,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4334,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4353,"src":"14307:6:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":4333,"name":"uint48","nodeType":"ElementaryTypeName","src":"14307:6:14","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"14306:8:14"},"scope":5241,"src":"14251:187:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4377,"nodeType":"Block","src":"14827:123:14","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4368,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4362,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4356,"src":"14845:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":4365,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14859:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint40_$","typeString":"type(uint40)"},"typeName":{"id":4364,"name":"uint40","nodeType":"ElementaryTypeName","src":"14859:6:14","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint40_$","typeString":"type(uint40)"}],"id":4363,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"14854:4:14","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":4366,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14854:12:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint40","typeString":"type(uint40)"}},"id":4367,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"14867:3:14","memberName":"max","nodeType":"MemberAccess","src":"14854:16:14","typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"}},"src":"14845:25:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e2034302062697473","id":4369,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"14872:40:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_b23559c58b98a5d3ed7016699c7171ac8defa5a1d180f9a9ffa60468a5701d37","typeString":"literal_string \"SafeCast: value doesn't fit in 40 bits\""},"value":"SafeCast: value doesn't fit in 40 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b23559c58b98a5d3ed7016699c7171ac8defa5a1d180f9a9ffa60468a5701d37","typeString":"literal_string \"SafeCast: value doesn't fit in 40 bits\""}],"id":4361,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"14837:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4370,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14837:76:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4371,"nodeType":"ExpressionStatement","src":"14837:76:14"},{"expression":{"arguments":[{"id":4374,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4356,"src":"14937:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4373,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14930:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint40_$","typeString":"type(uint40)"},"typeName":{"id":4372,"name":"uint40","nodeType":"ElementaryTypeName","src":"14930:6:14","typeDescriptions":{}}},"id":4375,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14930:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"}},"functionReturnParameters":4360,"id":4376,"nodeType":"Return","src":"14923:20:14"}]},"documentation":{"id":4354,"nodeType":"StructuredDocumentation","src":"14444:314:14","text":" @dev Returns the downcasted uint40 from uint256, reverting on\n overflow (when the input is greater than largest uint40).\n Counterpart to Solidity's `uint40` operator.\n Requirements:\n - input must fit into 40 bits\n _Available since v4.7._"},"id":4378,"implemented":true,"kind":"function","modifiers":[],"name":"toUint40","nameLocation":"14772:8:14","nodeType":"FunctionDefinition","parameters":{"id":4357,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4356,"mutability":"mutable","name":"value","nameLocation":"14789:5:14","nodeType":"VariableDeclaration","scope":4378,"src":"14781:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4355,"name":"uint256","nodeType":"ElementaryTypeName","src":"14781:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14780:15:14"},"returnParameters":{"id":4360,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4359,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4378,"src":"14819:6:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"},"typeName":{"id":4358,"name":"uint40","nodeType":"ElementaryTypeName","src":"14819:6:14","typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"}},"visibility":"internal"}],"src":"14818:8:14"},"scope":5241,"src":"14763:187:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4402,"nodeType":"Block","src":"15339:123:14","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4393,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4387,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4381,"src":"15357:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":4390,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15371:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"},"typeName":{"id":4389,"name":"uint32","nodeType":"ElementaryTypeName","src":"15371:6:14","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"}],"id":4388,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"15366:4:14","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":4391,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15366:12:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint32","typeString":"type(uint32)"}},"id":4392,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"15379:3:14","memberName":"max","nodeType":"MemberAccess","src":"15366:16:14","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"15357:25:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e2033322062697473","id":4394,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"15384:40:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_c907489dafcfb622d3b83f2657a14d6da2f59e0de3116af0d6a80554c1a7cb19","typeString":"literal_string \"SafeCast: value doesn't fit in 32 bits\""},"value":"SafeCast: value doesn't fit in 32 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_c907489dafcfb622d3b83f2657a14d6da2f59e0de3116af0d6a80554c1a7cb19","typeString":"literal_string \"SafeCast: value doesn't fit in 32 bits\""}],"id":4386,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"15349:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4395,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15349:76:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4396,"nodeType":"ExpressionStatement","src":"15349:76:14"},{"expression":{"arguments":[{"id":4399,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4381,"src":"15449:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4398,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15442:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"},"typeName":{"id":4397,"name":"uint32","nodeType":"ElementaryTypeName","src":"15442:6:14","typeDescriptions":{}}},"id":4400,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15442:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"functionReturnParameters":4385,"id":4401,"nodeType":"Return","src":"15435:20:14"}]},"documentation":{"id":4379,"nodeType":"StructuredDocumentation","src":"14956:314:14","text":" @dev Returns the downcasted uint32 from uint256, reverting on\n overflow (when the input is greater than largest uint32).\n Counterpart to Solidity's `uint32` operator.\n Requirements:\n - input must fit into 32 bits\n _Available since v2.5._"},"id":4403,"implemented":true,"kind":"function","modifiers":[],"name":"toUint32","nameLocation":"15284:8:14","nodeType":"FunctionDefinition","parameters":{"id":4382,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4381,"mutability":"mutable","name":"value","nameLocation":"15301:5:14","nodeType":"VariableDeclaration","scope":4403,"src":"15293:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4380,"name":"uint256","nodeType":"ElementaryTypeName","src":"15293:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15292:15:14"},"returnParameters":{"id":4385,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4384,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4403,"src":"15331:6:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":4383,"name":"uint32","nodeType":"ElementaryTypeName","src":"15331:6:14","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"15330:8:14"},"scope":5241,"src":"15275:187:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4427,"nodeType":"Block","src":"15851:123:14","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4418,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4412,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4406,"src":"15869:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":4415,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15883:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint24_$","typeString":"type(uint24)"},"typeName":{"id":4414,"name":"uint24","nodeType":"ElementaryTypeName","src":"15883:6:14","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint24_$","typeString":"type(uint24)"}],"id":4413,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"15878:4:14","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":4416,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15878:12:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint24","typeString":"type(uint24)"}},"id":4417,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"15891:3:14","memberName":"max","nodeType":"MemberAccess","src":"15878:16:14","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"src":"15869:25:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e2032342062697473","id":4419,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"15896:40:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_f68b65aaf4574c34e9b9d1442d19636c6608b8c4dbd9331c7245f7915c8b2f55","typeString":"literal_string \"SafeCast: value doesn't fit in 24 bits\""},"value":"SafeCast: value doesn't fit in 24 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_f68b65aaf4574c34e9b9d1442d19636c6608b8c4dbd9331c7245f7915c8b2f55","typeString":"literal_string \"SafeCast: value doesn't fit in 24 bits\""}],"id":4411,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"15861:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4420,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15861:76:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4421,"nodeType":"ExpressionStatement","src":"15861:76:14"},{"expression":{"arguments":[{"id":4424,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4406,"src":"15961:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4423,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15954:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint24_$","typeString":"type(uint24)"},"typeName":{"id":4422,"name":"uint24","nodeType":"ElementaryTypeName","src":"15954:6:14","typeDescriptions":{}}},"id":4425,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15954:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"functionReturnParameters":4410,"id":4426,"nodeType":"Return","src":"15947:20:14"}]},"documentation":{"id":4404,"nodeType":"StructuredDocumentation","src":"15468:314:14","text":" @dev Returns the downcasted uint24 from uint256, reverting on\n overflow (when the input is greater than largest uint24).\n Counterpart to Solidity's `uint24` operator.\n Requirements:\n - input must fit into 24 bits\n _Available since v4.7._"},"id":4428,"implemented":true,"kind":"function","modifiers":[],"name":"toUint24","nameLocation":"15796:8:14","nodeType":"FunctionDefinition","parameters":{"id":4407,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4406,"mutability":"mutable","name":"value","nameLocation":"15813:5:14","nodeType":"VariableDeclaration","scope":4428,"src":"15805:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4405,"name":"uint256","nodeType":"ElementaryTypeName","src":"15805:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15804:15:14"},"returnParameters":{"id":4410,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4409,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4428,"src":"15843:6:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":4408,"name":"uint24","nodeType":"ElementaryTypeName","src":"15843:6:14","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"src":"15842:8:14"},"scope":5241,"src":"15787:187:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4452,"nodeType":"Block","src":"16363:123:14","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4443,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4437,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4431,"src":"16381:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":4440,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16395:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint16_$","typeString":"type(uint16)"},"typeName":{"id":4439,"name":"uint16","nodeType":"ElementaryTypeName","src":"16395:6:14","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint16_$","typeString":"type(uint16)"}],"id":4438,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"16390:4:14","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":4441,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16390:12:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint16","typeString":"type(uint16)"}},"id":4442,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"16403:3:14","memberName":"max","nodeType":"MemberAccess","src":"16390:16:14","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"src":"16381:25:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e2031362062697473","id":4444,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"16408:40:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_13d3a66f9e0e5c92bbe7743bcd3bdb4695009d5f3a96e5ff49718d715b484033","typeString":"literal_string \"SafeCast: value doesn't fit in 16 bits\""},"value":"SafeCast: value doesn't fit in 16 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_13d3a66f9e0e5c92bbe7743bcd3bdb4695009d5f3a96e5ff49718d715b484033","typeString":"literal_string \"SafeCast: value doesn't fit in 16 bits\""}],"id":4436,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"16373:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4445,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16373:76:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4446,"nodeType":"ExpressionStatement","src":"16373:76:14"},{"expression":{"arguments":[{"id":4449,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4431,"src":"16473:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4448,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16466:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint16_$","typeString":"type(uint16)"},"typeName":{"id":4447,"name":"uint16","nodeType":"ElementaryTypeName","src":"16466:6:14","typeDescriptions":{}}},"id":4450,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16466:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"functionReturnParameters":4435,"id":4451,"nodeType":"Return","src":"16459:20:14"}]},"documentation":{"id":4429,"nodeType":"StructuredDocumentation","src":"15980:314:14","text":" @dev Returns the downcasted uint16 from uint256, reverting on\n overflow (when the input is greater than largest uint16).\n Counterpart to Solidity's `uint16` operator.\n Requirements:\n - input must fit into 16 bits\n _Available since v2.5._"},"id":4453,"implemented":true,"kind":"function","modifiers":[],"name":"toUint16","nameLocation":"16308:8:14","nodeType":"FunctionDefinition","parameters":{"id":4432,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4431,"mutability":"mutable","name":"value","nameLocation":"16325:5:14","nodeType":"VariableDeclaration","scope":4453,"src":"16317:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4430,"name":"uint256","nodeType":"ElementaryTypeName","src":"16317:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16316:15:14"},"returnParameters":{"id":4435,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4434,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4453,"src":"16355:6:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":4433,"name":"uint16","nodeType":"ElementaryTypeName","src":"16355:6:14","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"16354:8:14"},"scope":5241,"src":"16299:187:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4477,"nodeType":"Block","src":"16869:120:14","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4468,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4462,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4456,"src":"16887:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":4465,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16901:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":4464,"name":"uint8","nodeType":"ElementaryTypeName","src":"16901:5:14","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"}],"id":4463,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"16896:4:14","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":4466,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16896:11:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint8","typeString":"type(uint8)"}},"id":4467,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"16908:3:14","memberName":"max","nodeType":"MemberAccess","src":"16896:15:14","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"16887:24:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e20382062697473","id":4469,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"16913:39:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_2610961ba53259047cd57c60366c5ad0b8aabf5eb4132487619b736715a740d1","typeString":"literal_string \"SafeCast: value doesn't fit in 8 bits\""},"value":"SafeCast: value doesn't fit in 8 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2610961ba53259047cd57c60366c5ad0b8aabf5eb4132487619b736715a740d1","typeString":"literal_string \"SafeCast: value doesn't fit in 8 bits\""}],"id":4461,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"16879:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4470,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16879:74:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4471,"nodeType":"ExpressionStatement","src":"16879:74:14"},{"expression":{"arguments":[{"id":4474,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4456,"src":"16976:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4473,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16970:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":4472,"name":"uint8","nodeType":"ElementaryTypeName","src":"16970:5:14","typeDescriptions":{}}},"id":4475,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16970:12:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"functionReturnParameters":4460,"id":4476,"nodeType":"Return","src":"16963:19:14"}]},"documentation":{"id":4454,"nodeType":"StructuredDocumentation","src":"16492:310:14","text":" @dev Returns the downcasted uint8 from uint256, reverting on\n overflow (when the input is greater than largest uint8).\n Counterpart to Solidity's `uint8` operator.\n Requirements:\n - input must fit into 8 bits\n _Available since v2.5._"},"id":4478,"implemented":true,"kind":"function","modifiers":[],"name":"toUint8","nameLocation":"16816:7:14","nodeType":"FunctionDefinition","parameters":{"id":4457,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4456,"mutability":"mutable","name":"value","nameLocation":"16832:5:14","nodeType":"VariableDeclaration","scope":4478,"src":"16824:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4455,"name":"uint256","nodeType":"ElementaryTypeName","src":"16824:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16823:15:14"},"returnParameters":{"id":4460,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4459,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4478,"src":"16862:5:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":4458,"name":"uint8","nodeType":"ElementaryTypeName","src":"16862:5:14","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"16861:7:14"},"scope":5241,"src":"16807:182:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4498,"nodeType":"Block","src":"17263:103:14","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4489,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4487,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4481,"src":"17281:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"30","id":4488,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17290:1:14","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"17281:10:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c7565206d75737420626520706f736974697665","id":4490,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"17293:34:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_74e6d3a4204092bea305532ded31d3763fc378e46be3884a93ceff08a0761807","typeString":"literal_string \"SafeCast: value must be positive\""},"value":"SafeCast: value must be positive"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_74e6d3a4204092bea305532ded31d3763fc378e46be3884a93ceff08a0761807","typeString":"literal_string \"SafeCast: value must be positive\""}],"id":4486,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"17273:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4491,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17273:55:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4492,"nodeType":"ExpressionStatement","src":"17273:55:14"},{"expression":{"arguments":[{"id":4495,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4481,"src":"17353:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4494,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"17345:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":4493,"name":"uint256","nodeType":"ElementaryTypeName","src":"17345:7:14","typeDescriptions":{}}},"id":4496,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17345:14:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4485,"id":4497,"nodeType":"Return","src":"17338:21:14"}]},"documentation":{"id":4479,"nodeType":"StructuredDocumentation","src":"16995:198:14","text":" @dev Converts a signed int256 into an unsigned uint256.\n Requirements:\n - input must be greater than or equal to 0.\n _Available since v3.0._"},"id":4499,"implemented":true,"kind":"function","modifiers":[],"name":"toUint256","nameLocation":"17207:9:14","nodeType":"FunctionDefinition","parameters":{"id":4482,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4481,"mutability":"mutable","name":"value","nameLocation":"17224:5:14","nodeType":"VariableDeclaration","scope":4499,"src":"17217:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4480,"name":"int256","nodeType":"ElementaryTypeName","src":"17217:6:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"17216:14:14"},"returnParameters":{"id":4485,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4484,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4499,"src":"17254:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4483,"name":"uint256","nodeType":"ElementaryTypeName","src":"17254:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17253:9:14"},"scope":5241,"src":"17198:168:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4521,"nodeType":"Block","src":"17801:124:14","statements":[{"expression":{"id":4512,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4507,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4505,"src":"17811:10:14","typeDescriptions":{"typeIdentifier":"t_int248","typeString":"int248"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4510,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4502,"src":"17831:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4509,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"17824:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_int248_$","typeString":"type(int248)"},"typeName":{"id":4508,"name":"int248","nodeType":"ElementaryTypeName","src":"17824:6:14","typeDescriptions":{}}},"id":4511,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17824:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int248","typeString":"int248"}},"src":"17811:26:14","typeDescriptions":{"typeIdentifier":"t_int248","typeString":"int248"}},"id":4513,"nodeType":"ExpressionStatement","src":"17811:26:14"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4517,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4515,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4505,"src":"17855:10:14","typeDescriptions":{"typeIdentifier":"t_int248","typeString":"int248"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":4516,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4502,"src":"17869:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17855:19:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e203234382062697473","id":4518,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"17876:41:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_6ac19bba4607c9b45ff35f54fbc4ca64c29c7457109a16fa180ea77cdbda8593","typeString":"literal_string \"SafeCast: value doesn't fit in 248 bits\""},"value":"SafeCast: value doesn't fit in 248 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_6ac19bba4607c9b45ff35f54fbc4ca64c29c7457109a16fa180ea77cdbda8593","typeString":"literal_string \"SafeCast: value doesn't fit in 248 bits\""}],"id":4514,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"17847:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4519,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17847:71:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4520,"nodeType":"ExpressionStatement","src":"17847:71:14"}]},"documentation":{"id":4500,"nodeType":"StructuredDocumentation","src":"17372:350:14","text":" @dev Returns the downcasted int248 from int256, reverting on\n overflow (when the input is less than smallest int248 or\n greater than largest int248).\n Counterpart to Solidity's `int248` operator.\n Requirements:\n - input must fit into 248 bits\n _Available since v4.7._"},"id":4522,"implemented":true,"kind":"function","modifiers":[],"name":"toInt248","nameLocation":"17736:8:14","nodeType":"FunctionDefinition","parameters":{"id":4503,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4502,"mutability":"mutable","name":"value","nameLocation":"17752:5:14","nodeType":"VariableDeclaration","scope":4522,"src":"17745:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4501,"name":"int256","nodeType":"ElementaryTypeName","src":"17745:6:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"17744:14:14"},"returnParameters":{"id":4506,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4505,"mutability":"mutable","name":"downcasted","nameLocation":"17789:10:14","nodeType":"VariableDeclaration","scope":4522,"src":"17782:17:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int248","typeString":"int248"},"typeName":{"id":4504,"name":"int248","nodeType":"ElementaryTypeName","src":"17782:6:14","typeDescriptions":{"typeIdentifier":"t_int248","typeString":"int248"}},"visibility":"internal"}],"src":"17781:19:14"},"scope":5241,"src":"17727:198:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4544,"nodeType":"Block","src":"18360:124:14","statements":[{"expression":{"id":4535,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4530,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4528,"src":"18370:10:14","typeDescriptions":{"typeIdentifier":"t_int240","typeString":"int240"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4533,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4525,"src":"18390:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4532,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"18383:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_int240_$","typeString":"type(int240)"},"typeName":{"id":4531,"name":"int240","nodeType":"ElementaryTypeName","src":"18383:6:14","typeDescriptions":{}}},"id":4534,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18383:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int240","typeString":"int240"}},"src":"18370:26:14","typeDescriptions":{"typeIdentifier":"t_int240","typeString":"int240"}},"id":4536,"nodeType":"ExpressionStatement","src":"18370:26:14"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4540,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4538,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4528,"src":"18414:10:14","typeDescriptions":{"typeIdentifier":"t_int240","typeString":"int240"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":4539,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4525,"src":"18428:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18414:19:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e203234302062697473","id":4541,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"18435:41:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_375fa0f6cb9fb5845d214c630920cedf4424913ed6dc32c297d430efa3d61a87","typeString":"literal_string \"SafeCast: value doesn't fit in 240 bits\""},"value":"SafeCast: value doesn't fit in 240 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_375fa0f6cb9fb5845d214c630920cedf4424913ed6dc32c297d430efa3d61a87","typeString":"literal_string \"SafeCast: value doesn't fit in 240 bits\""}],"id":4537,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"18406:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4542,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18406:71:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4543,"nodeType":"ExpressionStatement","src":"18406:71:14"}]},"documentation":{"id":4523,"nodeType":"StructuredDocumentation","src":"17931:350:14","text":" @dev Returns the downcasted int240 from int256, reverting on\n overflow (when the input is less than smallest int240 or\n greater than largest int240).\n Counterpart to Solidity's `int240` operator.\n Requirements:\n - input must fit into 240 bits\n _Available since v4.7._"},"id":4545,"implemented":true,"kind":"function","modifiers":[],"name":"toInt240","nameLocation":"18295:8:14","nodeType":"FunctionDefinition","parameters":{"id":4526,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4525,"mutability":"mutable","name":"value","nameLocation":"18311:5:14","nodeType":"VariableDeclaration","scope":4545,"src":"18304:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4524,"name":"int256","nodeType":"ElementaryTypeName","src":"18304:6:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"18303:14:14"},"returnParameters":{"id":4529,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4528,"mutability":"mutable","name":"downcasted","nameLocation":"18348:10:14","nodeType":"VariableDeclaration","scope":4545,"src":"18341:17:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int240","typeString":"int240"},"typeName":{"id":4527,"name":"int240","nodeType":"ElementaryTypeName","src":"18341:6:14","typeDescriptions":{"typeIdentifier":"t_int240","typeString":"int240"}},"visibility":"internal"}],"src":"18340:19:14"},"scope":5241,"src":"18286:198:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4567,"nodeType":"Block","src":"18919:124:14","statements":[{"expression":{"id":4558,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4553,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4551,"src":"18929:10:14","typeDescriptions":{"typeIdentifier":"t_int232","typeString":"int232"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4556,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4548,"src":"18949:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4555,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"18942:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_int232_$","typeString":"type(int232)"},"typeName":{"id":4554,"name":"int232","nodeType":"ElementaryTypeName","src":"18942:6:14","typeDescriptions":{}}},"id":4557,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18942:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int232","typeString":"int232"}},"src":"18929:26:14","typeDescriptions":{"typeIdentifier":"t_int232","typeString":"int232"}},"id":4559,"nodeType":"ExpressionStatement","src":"18929:26:14"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4563,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4561,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4551,"src":"18973:10:14","typeDescriptions":{"typeIdentifier":"t_int232","typeString":"int232"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":4562,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4548,"src":"18987:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18973:19:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e203233322062697473","id":4564,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"18994:41:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_5797fb2c4589bd6a92752ce0eacaac67341e37ab28c96c2284ab897e7ac77957","typeString":"literal_string \"SafeCast: value doesn't fit in 232 bits\""},"value":"SafeCast: value doesn't fit in 232 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5797fb2c4589bd6a92752ce0eacaac67341e37ab28c96c2284ab897e7ac77957","typeString":"literal_string \"SafeCast: value doesn't fit in 232 bits\""}],"id":4560,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"18965:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4565,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18965:71:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4566,"nodeType":"ExpressionStatement","src":"18965:71:14"}]},"documentation":{"id":4546,"nodeType":"StructuredDocumentation","src":"18490:350:14","text":" @dev Returns the downcasted int232 from int256, reverting on\n overflow (when the input is less than smallest int232 or\n greater than largest int232).\n Counterpart to Solidity's `int232` operator.\n Requirements:\n - input must fit into 232 bits\n _Available since v4.7._"},"id":4568,"implemented":true,"kind":"function","modifiers":[],"name":"toInt232","nameLocation":"18854:8:14","nodeType":"FunctionDefinition","parameters":{"id":4549,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4548,"mutability":"mutable","name":"value","nameLocation":"18870:5:14","nodeType":"VariableDeclaration","scope":4568,"src":"18863:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4547,"name":"int256","nodeType":"ElementaryTypeName","src":"18863:6:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"18862:14:14"},"returnParameters":{"id":4552,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4551,"mutability":"mutable","name":"downcasted","nameLocation":"18907:10:14","nodeType":"VariableDeclaration","scope":4568,"src":"18900:17:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int232","typeString":"int232"},"typeName":{"id":4550,"name":"int232","nodeType":"ElementaryTypeName","src":"18900:6:14","typeDescriptions":{"typeIdentifier":"t_int232","typeString":"int232"}},"visibility":"internal"}],"src":"18899:19:14"},"scope":5241,"src":"18845:198:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4590,"nodeType":"Block","src":"19478:124:14","statements":[{"expression":{"id":4581,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4576,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4574,"src":"19488:10:14","typeDescriptions":{"typeIdentifier":"t_int224","typeString":"int224"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4579,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4571,"src":"19508:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4578,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"19501:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_int224_$","typeString":"type(int224)"},"typeName":{"id":4577,"name":"int224","nodeType":"ElementaryTypeName","src":"19501:6:14","typeDescriptions":{}}},"id":4580,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19501:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int224","typeString":"int224"}},"src":"19488:26:14","typeDescriptions":{"typeIdentifier":"t_int224","typeString":"int224"}},"id":4582,"nodeType":"ExpressionStatement","src":"19488:26:14"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4586,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4584,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4574,"src":"19532:10:14","typeDescriptions":{"typeIdentifier":"t_int224","typeString":"int224"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":4585,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4571,"src":"19546:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"19532:19:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e203232342062697473","id":4587,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"19553:41:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_9d2acf551b2466898443b9bc3a403a4d86037386bc5a8960c1bbb0f204e69b79","typeString":"literal_string \"SafeCast: value doesn't fit in 224 bits\""},"value":"SafeCast: value doesn't fit in 224 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9d2acf551b2466898443b9bc3a403a4d86037386bc5a8960c1bbb0f204e69b79","typeString":"literal_string \"SafeCast: value doesn't fit in 224 bits\""}],"id":4583,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"19524:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4588,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19524:71:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4589,"nodeType":"ExpressionStatement","src":"19524:71:14"}]},"documentation":{"id":4569,"nodeType":"StructuredDocumentation","src":"19049:350:14","text":" @dev Returns the downcasted int224 from int256, reverting on\n overflow (when the input is less than smallest int224 or\n greater than largest int224).\n Counterpart to Solidity's `int224` operator.\n Requirements:\n - input must fit into 224 bits\n _Available since v4.7._"},"id":4591,"implemented":true,"kind":"function","modifiers":[],"name":"toInt224","nameLocation":"19413:8:14","nodeType":"FunctionDefinition","parameters":{"id":4572,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4571,"mutability":"mutable","name":"value","nameLocation":"19429:5:14","nodeType":"VariableDeclaration","scope":4591,"src":"19422:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4570,"name":"int256","nodeType":"ElementaryTypeName","src":"19422:6:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"19421:14:14"},"returnParameters":{"id":4575,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4574,"mutability":"mutable","name":"downcasted","nameLocation":"19466:10:14","nodeType":"VariableDeclaration","scope":4591,"src":"19459:17:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int224","typeString":"int224"},"typeName":{"id":4573,"name":"int224","nodeType":"ElementaryTypeName","src":"19459:6:14","typeDescriptions":{"typeIdentifier":"t_int224","typeString":"int224"}},"visibility":"internal"}],"src":"19458:19:14"},"scope":5241,"src":"19404:198:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4613,"nodeType":"Block","src":"20037:124:14","statements":[{"expression":{"id":4604,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4599,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4597,"src":"20047:10:14","typeDescriptions":{"typeIdentifier":"t_int216","typeString":"int216"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4602,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4594,"src":"20067:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4601,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"20060:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_int216_$","typeString":"type(int216)"},"typeName":{"id":4600,"name":"int216","nodeType":"ElementaryTypeName","src":"20060:6:14","typeDescriptions":{}}},"id":4603,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20060:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int216","typeString":"int216"}},"src":"20047:26:14","typeDescriptions":{"typeIdentifier":"t_int216","typeString":"int216"}},"id":4605,"nodeType":"ExpressionStatement","src":"20047:26:14"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4609,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4607,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4597,"src":"20091:10:14","typeDescriptions":{"typeIdentifier":"t_int216","typeString":"int216"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":4608,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4594,"src":"20105:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20091:19:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e203231362062697473","id":4610,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"20112:41:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_8966adc0aad8dc91b207c69c3eb4937e498af8cc706cfe7edd55f3a6ea53488d","typeString":"literal_string \"SafeCast: value doesn't fit in 216 bits\""},"value":"SafeCast: value doesn't fit in 216 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8966adc0aad8dc91b207c69c3eb4937e498af8cc706cfe7edd55f3a6ea53488d","typeString":"literal_string \"SafeCast: value doesn't fit in 216 bits\""}],"id":4606,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"20083:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4611,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20083:71:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4612,"nodeType":"ExpressionStatement","src":"20083:71:14"}]},"documentation":{"id":4592,"nodeType":"StructuredDocumentation","src":"19608:350:14","text":" @dev Returns the downcasted int216 from int256, reverting on\n overflow (when the input is less than smallest int216 or\n greater than largest int216).\n Counterpart to Solidity's `int216` operator.\n Requirements:\n - input must fit into 216 bits\n _Available since v4.7._"},"id":4614,"implemented":true,"kind":"function","modifiers":[],"name":"toInt216","nameLocation":"19972:8:14","nodeType":"FunctionDefinition","parameters":{"id":4595,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4594,"mutability":"mutable","name":"value","nameLocation":"19988:5:14","nodeType":"VariableDeclaration","scope":4614,"src":"19981:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4593,"name":"int256","nodeType":"ElementaryTypeName","src":"19981:6:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"19980:14:14"},"returnParameters":{"id":4598,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4597,"mutability":"mutable","name":"downcasted","nameLocation":"20025:10:14","nodeType":"VariableDeclaration","scope":4614,"src":"20018:17:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int216","typeString":"int216"},"typeName":{"id":4596,"name":"int216","nodeType":"ElementaryTypeName","src":"20018:6:14","typeDescriptions":{"typeIdentifier":"t_int216","typeString":"int216"}},"visibility":"internal"}],"src":"20017:19:14"},"scope":5241,"src":"19963:198:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4636,"nodeType":"Block","src":"20596:124:14","statements":[{"expression":{"id":4627,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4622,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4620,"src":"20606:10:14","typeDescriptions":{"typeIdentifier":"t_int208","typeString":"int208"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4625,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4617,"src":"20626:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4624,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"20619:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_int208_$","typeString":"type(int208)"},"typeName":{"id":4623,"name":"int208","nodeType":"ElementaryTypeName","src":"20619:6:14","typeDescriptions":{}}},"id":4626,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20619:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int208","typeString":"int208"}},"src":"20606:26:14","typeDescriptions":{"typeIdentifier":"t_int208","typeString":"int208"}},"id":4628,"nodeType":"ExpressionStatement","src":"20606:26:14"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4632,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4630,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4620,"src":"20650:10:14","typeDescriptions":{"typeIdentifier":"t_int208","typeString":"int208"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":4631,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4617,"src":"20664:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20650:19:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e203230382062697473","id":4633,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"20671:41:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_43d81217fa633fa1c6e88855de94fb990f5831ac266b0a90afa660e986ab5e23","typeString":"literal_string \"SafeCast: value doesn't fit in 208 bits\""},"value":"SafeCast: value doesn't fit in 208 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_43d81217fa633fa1c6e88855de94fb990f5831ac266b0a90afa660e986ab5e23","typeString":"literal_string \"SafeCast: value doesn't fit in 208 bits\""}],"id":4629,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"20642:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4634,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20642:71:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4635,"nodeType":"ExpressionStatement","src":"20642:71:14"}]},"documentation":{"id":4615,"nodeType":"StructuredDocumentation","src":"20167:350:14","text":" @dev Returns the downcasted int208 from int256, reverting on\n overflow (when the input is less than smallest int208 or\n greater than largest int208).\n Counterpart to Solidity's `int208` operator.\n Requirements:\n - input must fit into 208 bits\n _Available since v4.7._"},"id":4637,"implemented":true,"kind":"function","modifiers":[],"name":"toInt208","nameLocation":"20531:8:14","nodeType":"FunctionDefinition","parameters":{"id":4618,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4617,"mutability":"mutable","name":"value","nameLocation":"20547:5:14","nodeType":"VariableDeclaration","scope":4637,"src":"20540:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4616,"name":"int256","nodeType":"ElementaryTypeName","src":"20540:6:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"20539:14:14"},"returnParameters":{"id":4621,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4620,"mutability":"mutable","name":"downcasted","nameLocation":"20584:10:14","nodeType":"VariableDeclaration","scope":4637,"src":"20577:17:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int208","typeString":"int208"},"typeName":{"id":4619,"name":"int208","nodeType":"ElementaryTypeName","src":"20577:6:14","typeDescriptions":{"typeIdentifier":"t_int208","typeString":"int208"}},"visibility":"internal"}],"src":"20576:19:14"},"scope":5241,"src":"20522:198:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4659,"nodeType":"Block","src":"21155:124:14","statements":[{"expression":{"id":4650,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4645,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4643,"src":"21165:10:14","typeDescriptions":{"typeIdentifier":"t_int200","typeString":"int200"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4648,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4640,"src":"21185:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4647,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"21178:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_int200_$","typeString":"type(int200)"},"typeName":{"id":4646,"name":"int200","nodeType":"ElementaryTypeName","src":"21178:6:14","typeDescriptions":{}}},"id":4649,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21178:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int200","typeString":"int200"}},"src":"21165:26:14","typeDescriptions":{"typeIdentifier":"t_int200","typeString":"int200"}},"id":4651,"nodeType":"ExpressionStatement","src":"21165:26:14"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4655,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4653,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4643,"src":"21209:10:14","typeDescriptions":{"typeIdentifier":"t_int200","typeString":"int200"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":4654,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4640,"src":"21223:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"21209:19:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e203230302062697473","id":4656,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"21230:41:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_df8130f294fe2698967ea9ead82c4da9454490567d976d00551e0174e655314c","typeString":"literal_string \"SafeCast: value doesn't fit in 200 bits\""},"value":"SafeCast: value doesn't fit in 200 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_df8130f294fe2698967ea9ead82c4da9454490567d976d00551e0174e655314c","typeString":"literal_string \"SafeCast: value doesn't fit in 200 bits\""}],"id":4652,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"21201:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4657,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21201:71:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4658,"nodeType":"ExpressionStatement","src":"21201:71:14"}]},"documentation":{"id":4638,"nodeType":"StructuredDocumentation","src":"20726:350:14","text":" @dev Returns the downcasted int200 from int256, reverting on\n overflow (when the input is less than smallest int200 or\n greater than largest int200).\n Counterpart to Solidity's `int200` operator.\n Requirements:\n - input must fit into 200 bits\n _Available since v4.7._"},"id":4660,"implemented":true,"kind":"function","modifiers":[],"name":"toInt200","nameLocation":"21090:8:14","nodeType":"FunctionDefinition","parameters":{"id":4641,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4640,"mutability":"mutable","name":"value","nameLocation":"21106:5:14","nodeType":"VariableDeclaration","scope":4660,"src":"21099:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4639,"name":"int256","nodeType":"ElementaryTypeName","src":"21099:6:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"21098:14:14"},"returnParameters":{"id":4644,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4643,"mutability":"mutable","name":"downcasted","nameLocation":"21143:10:14","nodeType":"VariableDeclaration","scope":4660,"src":"21136:17:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int200","typeString":"int200"},"typeName":{"id":4642,"name":"int200","nodeType":"ElementaryTypeName","src":"21136:6:14","typeDescriptions":{"typeIdentifier":"t_int200","typeString":"int200"}},"visibility":"internal"}],"src":"21135:19:14"},"scope":5241,"src":"21081:198:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4682,"nodeType":"Block","src":"21714:124:14","statements":[{"expression":{"id":4673,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4668,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4666,"src":"21724:10:14","typeDescriptions":{"typeIdentifier":"t_int192","typeString":"int192"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4671,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4663,"src":"21744:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4670,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"21737:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_int192_$","typeString":"type(int192)"},"typeName":{"id":4669,"name":"int192","nodeType":"ElementaryTypeName","src":"21737:6:14","typeDescriptions":{}}},"id":4672,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21737:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int192","typeString":"int192"}},"src":"21724:26:14","typeDescriptions":{"typeIdentifier":"t_int192","typeString":"int192"}},"id":4674,"nodeType":"ExpressionStatement","src":"21724:26:14"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4678,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4676,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4666,"src":"21768:10:14","typeDescriptions":{"typeIdentifier":"t_int192","typeString":"int192"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":4677,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4663,"src":"21782:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"21768:19:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e203139322062697473","id":4679,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"21789:41:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_112978800f12a1c4f1eab82789f7b6defd49dc1c17ba270a84ffc28392fb05ae","typeString":"literal_string \"SafeCast: value doesn't fit in 192 bits\""},"value":"SafeCast: value doesn't fit in 192 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_112978800f12a1c4f1eab82789f7b6defd49dc1c17ba270a84ffc28392fb05ae","typeString":"literal_string \"SafeCast: value doesn't fit in 192 bits\""}],"id":4675,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"21760:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4680,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21760:71:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4681,"nodeType":"ExpressionStatement","src":"21760:71:14"}]},"documentation":{"id":4661,"nodeType":"StructuredDocumentation","src":"21285:350:14","text":" @dev Returns the downcasted int192 from int256, reverting on\n overflow (when the input is less than smallest int192 or\n greater than largest int192).\n Counterpart to Solidity's `int192` operator.\n Requirements:\n - input must fit into 192 bits\n _Available since v4.7._"},"id":4683,"implemented":true,"kind":"function","modifiers":[],"name":"toInt192","nameLocation":"21649:8:14","nodeType":"FunctionDefinition","parameters":{"id":4664,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4663,"mutability":"mutable","name":"value","nameLocation":"21665:5:14","nodeType":"VariableDeclaration","scope":4683,"src":"21658:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4662,"name":"int256","nodeType":"ElementaryTypeName","src":"21658:6:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"21657:14:14"},"returnParameters":{"id":4667,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4666,"mutability":"mutable","name":"downcasted","nameLocation":"21702:10:14","nodeType":"VariableDeclaration","scope":4683,"src":"21695:17:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int192","typeString":"int192"},"typeName":{"id":4665,"name":"int192","nodeType":"ElementaryTypeName","src":"21695:6:14","typeDescriptions":{"typeIdentifier":"t_int192","typeString":"int192"}},"visibility":"internal"}],"src":"21694:19:14"},"scope":5241,"src":"21640:198:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4705,"nodeType":"Block","src":"22273:124:14","statements":[{"expression":{"id":4696,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4691,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4689,"src":"22283:10:14","typeDescriptions":{"typeIdentifier":"t_int184","typeString":"int184"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4694,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4686,"src":"22303:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4693,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"22296:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_int184_$","typeString":"type(int184)"},"typeName":{"id":4692,"name":"int184","nodeType":"ElementaryTypeName","src":"22296:6:14","typeDescriptions":{}}},"id":4695,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22296:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int184","typeString":"int184"}},"src":"22283:26:14","typeDescriptions":{"typeIdentifier":"t_int184","typeString":"int184"}},"id":4697,"nodeType":"ExpressionStatement","src":"22283:26:14"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4699,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4689,"src":"22327:10:14","typeDescriptions":{"typeIdentifier":"t_int184","typeString":"int184"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":4700,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4686,"src":"22341:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"22327:19:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e203138342062697473","id":4702,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"22348:41:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_86c53d89b1944d561ecfa42e859033241d1df6ea8d42a57ae02f79d45de4aa75","typeString":"literal_string \"SafeCast: value doesn't fit in 184 bits\""},"value":"SafeCast: value doesn't fit in 184 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_86c53d89b1944d561ecfa42e859033241d1df6ea8d42a57ae02f79d45de4aa75","typeString":"literal_string \"SafeCast: value doesn't fit in 184 bits\""}],"id":4698,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"22319:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4703,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22319:71:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4704,"nodeType":"ExpressionStatement","src":"22319:71:14"}]},"documentation":{"id":4684,"nodeType":"StructuredDocumentation","src":"21844:350:14","text":" @dev Returns the downcasted int184 from int256, reverting on\n overflow (when the input is less than smallest int184 or\n greater than largest int184).\n Counterpart to Solidity's `int184` operator.\n Requirements:\n - input must fit into 184 bits\n _Available since v4.7._"},"id":4706,"implemented":true,"kind":"function","modifiers":[],"name":"toInt184","nameLocation":"22208:8:14","nodeType":"FunctionDefinition","parameters":{"id":4687,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4686,"mutability":"mutable","name":"value","nameLocation":"22224:5:14","nodeType":"VariableDeclaration","scope":4706,"src":"22217:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4685,"name":"int256","nodeType":"ElementaryTypeName","src":"22217:6:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"22216:14:14"},"returnParameters":{"id":4690,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4689,"mutability":"mutable","name":"downcasted","nameLocation":"22261:10:14","nodeType":"VariableDeclaration","scope":4706,"src":"22254:17:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int184","typeString":"int184"},"typeName":{"id":4688,"name":"int184","nodeType":"ElementaryTypeName","src":"22254:6:14","typeDescriptions":{"typeIdentifier":"t_int184","typeString":"int184"}},"visibility":"internal"}],"src":"22253:19:14"},"scope":5241,"src":"22199:198:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4728,"nodeType":"Block","src":"22832:124:14","statements":[{"expression":{"id":4719,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4714,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4712,"src":"22842:10:14","typeDescriptions":{"typeIdentifier":"t_int176","typeString":"int176"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4717,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4709,"src":"22862:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4716,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"22855:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_int176_$","typeString":"type(int176)"},"typeName":{"id":4715,"name":"int176","nodeType":"ElementaryTypeName","src":"22855:6:14","typeDescriptions":{}}},"id":4718,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22855:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int176","typeString":"int176"}},"src":"22842:26:14","typeDescriptions":{"typeIdentifier":"t_int176","typeString":"int176"}},"id":4720,"nodeType":"ExpressionStatement","src":"22842:26:14"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4724,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4722,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4712,"src":"22886:10:14","typeDescriptions":{"typeIdentifier":"t_int176","typeString":"int176"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":4723,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4709,"src":"22900:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"22886:19:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e203137362062697473","id":4725,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"22907:41:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_4069e970f734339c7841e84a1b26f503bff22b76884c1168dc24e2e6af9b1e30","typeString":"literal_string \"SafeCast: value doesn't fit in 176 bits\""},"value":"SafeCast: value doesn't fit in 176 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_4069e970f734339c7841e84a1b26f503bff22b76884c1168dc24e2e6af9b1e30","typeString":"literal_string \"SafeCast: value doesn't fit in 176 bits\""}],"id":4721,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"22878:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4726,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22878:71:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4727,"nodeType":"ExpressionStatement","src":"22878:71:14"}]},"documentation":{"id":4707,"nodeType":"StructuredDocumentation","src":"22403:350:14","text":" @dev Returns the downcasted int176 from int256, reverting on\n overflow (when the input is less than smallest int176 or\n greater than largest int176).\n Counterpart to Solidity's `int176` operator.\n Requirements:\n - input must fit into 176 bits\n _Available since v4.7._"},"id":4729,"implemented":true,"kind":"function","modifiers":[],"name":"toInt176","nameLocation":"22767:8:14","nodeType":"FunctionDefinition","parameters":{"id":4710,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4709,"mutability":"mutable","name":"value","nameLocation":"22783:5:14","nodeType":"VariableDeclaration","scope":4729,"src":"22776:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4708,"name":"int256","nodeType":"ElementaryTypeName","src":"22776:6:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"22775:14:14"},"returnParameters":{"id":4713,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4712,"mutability":"mutable","name":"downcasted","nameLocation":"22820:10:14","nodeType":"VariableDeclaration","scope":4729,"src":"22813:17:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int176","typeString":"int176"},"typeName":{"id":4711,"name":"int176","nodeType":"ElementaryTypeName","src":"22813:6:14","typeDescriptions":{"typeIdentifier":"t_int176","typeString":"int176"}},"visibility":"internal"}],"src":"22812:19:14"},"scope":5241,"src":"22758:198:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4751,"nodeType":"Block","src":"23391:124:14","statements":[{"expression":{"id":4742,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4737,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4735,"src":"23401:10:14","typeDescriptions":{"typeIdentifier":"t_int168","typeString":"int168"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4740,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4732,"src":"23421:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4739,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"23414:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_int168_$","typeString":"type(int168)"},"typeName":{"id":4738,"name":"int168","nodeType":"ElementaryTypeName","src":"23414:6:14","typeDescriptions":{}}},"id":4741,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23414:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int168","typeString":"int168"}},"src":"23401:26:14","typeDescriptions":{"typeIdentifier":"t_int168","typeString":"int168"}},"id":4743,"nodeType":"ExpressionStatement","src":"23401:26:14"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4747,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4745,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4735,"src":"23445:10:14","typeDescriptions":{"typeIdentifier":"t_int168","typeString":"int168"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":4746,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4732,"src":"23459:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"23445:19:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e203136382062697473","id":4748,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"23466:41:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_67ef32a3cbe7b34392347d335b0a7ae95c74a34ca40e4efb58f6c9a3154e85a1","typeString":"literal_string \"SafeCast: value doesn't fit in 168 bits\""},"value":"SafeCast: value doesn't fit in 168 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_67ef32a3cbe7b34392347d335b0a7ae95c74a34ca40e4efb58f6c9a3154e85a1","typeString":"literal_string \"SafeCast: value doesn't fit in 168 bits\""}],"id":4744,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"23437:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4749,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23437:71:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4750,"nodeType":"ExpressionStatement","src":"23437:71:14"}]},"documentation":{"id":4730,"nodeType":"StructuredDocumentation","src":"22962:350:14","text":" @dev Returns the downcasted int168 from int256, reverting on\n overflow (when the input is less than smallest int168 or\n greater than largest int168).\n Counterpart to Solidity's `int168` operator.\n Requirements:\n - input must fit into 168 bits\n _Available since v4.7._"},"id":4752,"implemented":true,"kind":"function","modifiers":[],"name":"toInt168","nameLocation":"23326:8:14","nodeType":"FunctionDefinition","parameters":{"id":4733,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4732,"mutability":"mutable","name":"value","nameLocation":"23342:5:14","nodeType":"VariableDeclaration","scope":4752,"src":"23335:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4731,"name":"int256","nodeType":"ElementaryTypeName","src":"23335:6:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"23334:14:14"},"returnParameters":{"id":4736,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4735,"mutability":"mutable","name":"downcasted","nameLocation":"23379:10:14","nodeType":"VariableDeclaration","scope":4752,"src":"23372:17:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int168","typeString":"int168"},"typeName":{"id":4734,"name":"int168","nodeType":"ElementaryTypeName","src":"23372:6:14","typeDescriptions":{"typeIdentifier":"t_int168","typeString":"int168"}},"visibility":"internal"}],"src":"23371:19:14"},"scope":5241,"src":"23317:198:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4774,"nodeType":"Block","src":"23950:124:14","statements":[{"expression":{"id":4765,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4760,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4758,"src":"23960:10:14","typeDescriptions":{"typeIdentifier":"t_int160","typeString":"int160"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4763,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4755,"src":"23980:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4762,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"23973:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_int160_$","typeString":"type(int160)"},"typeName":{"id":4761,"name":"int160","nodeType":"ElementaryTypeName","src":"23973:6:14","typeDescriptions":{}}},"id":4764,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23973:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int160","typeString":"int160"}},"src":"23960:26:14","typeDescriptions":{"typeIdentifier":"t_int160","typeString":"int160"}},"id":4766,"nodeType":"ExpressionStatement","src":"23960:26:14"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4770,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4768,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4758,"src":"24004:10:14","typeDescriptions":{"typeIdentifier":"t_int160","typeString":"int160"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":4769,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4755,"src":"24018:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"24004:19:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e203136302062697473","id":4771,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"24025:41:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_976ecce9083debfe29d3a99b955facf24b8725f1b964d1a5bb4197ffcd60ab9d","typeString":"literal_string \"SafeCast: value doesn't fit in 160 bits\""},"value":"SafeCast: value doesn't fit in 160 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_976ecce9083debfe29d3a99b955facf24b8725f1b964d1a5bb4197ffcd60ab9d","typeString":"literal_string \"SafeCast: value doesn't fit in 160 bits\""}],"id":4767,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"23996:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4772,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23996:71:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4773,"nodeType":"ExpressionStatement","src":"23996:71:14"}]},"documentation":{"id":4753,"nodeType":"StructuredDocumentation","src":"23521:350:14","text":" @dev Returns the downcasted int160 from int256, reverting on\n overflow (when the input is less than smallest int160 or\n greater than largest int160).\n Counterpart to Solidity's `int160` operator.\n Requirements:\n - input must fit into 160 bits\n _Available since v4.7._"},"id":4775,"implemented":true,"kind":"function","modifiers":[],"name":"toInt160","nameLocation":"23885:8:14","nodeType":"FunctionDefinition","parameters":{"id":4756,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4755,"mutability":"mutable","name":"value","nameLocation":"23901:5:14","nodeType":"VariableDeclaration","scope":4775,"src":"23894:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4754,"name":"int256","nodeType":"ElementaryTypeName","src":"23894:6:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"23893:14:14"},"returnParameters":{"id":4759,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4758,"mutability":"mutable","name":"downcasted","nameLocation":"23938:10:14","nodeType":"VariableDeclaration","scope":4775,"src":"23931:17:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int160","typeString":"int160"},"typeName":{"id":4757,"name":"int160","nodeType":"ElementaryTypeName","src":"23931:6:14","typeDescriptions":{"typeIdentifier":"t_int160","typeString":"int160"}},"visibility":"internal"}],"src":"23930:19:14"},"scope":5241,"src":"23876:198:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4797,"nodeType":"Block","src":"24509:124:14","statements":[{"expression":{"id":4788,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4783,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4781,"src":"24519:10:14","typeDescriptions":{"typeIdentifier":"t_int152","typeString":"int152"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4786,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4778,"src":"24539:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4785,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"24532:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_int152_$","typeString":"type(int152)"},"typeName":{"id":4784,"name":"int152","nodeType":"ElementaryTypeName","src":"24532:6:14","typeDescriptions":{}}},"id":4787,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24532:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int152","typeString":"int152"}},"src":"24519:26:14","typeDescriptions":{"typeIdentifier":"t_int152","typeString":"int152"}},"id":4789,"nodeType":"ExpressionStatement","src":"24519:26:14"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4793,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4791,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4781,"src":"24563:10:14","typeDescriptions":{"typeIdentifier":"t_int152","typeString":"int152"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":4792,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4778,"src":"24577:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"24563:19:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e203135322062697473","id":4794,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"24584:41:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_211cad43a2caf5f01e34af51190b8a7b6f3d9c195bd25586ea12242191b97831","typeString":"literal_string \"SafeCast: value doesn't fit in 152 bits\""},"value":"SafeCast: value doesn't fit in 152 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_211cad43a2caf5f01e34af51190b8a7b6f3d9c195bd25586ea12242191b97831","typeString":"literal_string \"SafeCast: value doesn't fit in 152 bits\""}],"id":4790,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"24555:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4795,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24555:71:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4796,"nodeType":"ExpressionStatement","src":"24555:71:14"}]},"documentation":{"id":4776,"nodeType":"StructuredDocumentation","src":"24080:350:14","text":" @dev Returns the downcasted int152 from int256, reverting on\n overflow (when the input is less than smallest int152 or\n greater than largest int152).\n Counterpart to Solidity's `int152` operator.\n Requirements:\n - input must fit into 152 bits\n _Available since v4.7._"},"id":4798,"implemented":true,"kind":"function","modifiers":[],"name":"toInt152","nameLocation":"24444:8:14","nodeType":"FunctionDefinition","parameters":{"id":4779,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4778,"mutability":"mutable","name":"value","nameLocation":"24460:5:14","nodeType":"VariableDeclaration","scope":4798,"src":"24453:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4777,"name":"int256","nodeType":"ElementaryTypeName","src":"24453:6:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"24452:14:14"},"returnParameters":{"id":4782,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4781,"mutability":"mutable","name":"downcasted","nameLocation":"24497:10:14","nodeType":"VariableDeclaration","scope":4798,"src":"24490:17:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int152","typeString":"int152"},"typeName":{"id":4780,"name":"int152","nodeType":"ElementaryTypeName","src":"24490:6:14","typeDescriptions":{"typeIdentifier":"t_int152","typeString":"int152"}},"visibility":"internal"}],"src":"24489:19:14"},"scope":5241,"src":"24435:198:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4820,"nodeType":"Block","src":"25068:124:14","statements":[{"expression":{"id":4811,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4806,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4804,"src":"25078:10:14","typeDescriptions":{"typeIdentifier":"t_int144","typeString":"int144"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4809,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4801,"src":"25098:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4808,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25091:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_int144_$","typeString":"type(int144)"},"typeName":{"id":4807,"name":"int144","nodeType":"ElementaryTypeName","src":"25091:6:14","typeDescriptions":{}}},"id":4810,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25091:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int144","typeString":"int144"}},"src":"25078:26:14","typeDescriptions":{"typeIdentifier":"t_int144","typeString":"int144"}},"id":4812,"nodeType":"ExpressionStatement","src":"25078:26:14"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4816,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4814,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4804,"src":"25122:10:14","typeDescriptions":{"typeIdentifier":"t_int144","typeString":"int144"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":4815,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4801,"src":"25136:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"25122:19:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e203134342062697473","id":4817,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"25143:41:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_17d8c5a6d3b2fd2517ba2e4a2ac70a3367cd362448f8338aaa6edf8bfd812bab","typeString":"literal_string \"SafeCast: value doesn't fit in 144 bits\""},"value":"SafeCast: value doesn't fit in 144 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_17d8c5a6d3b2fd2517ba2e4a2ac70a3367cd362448f8338aaa6edf8bfd812bab","typeString":"literal_string \"SafeCast: value doesn't fit in 144 bits\""}],"id":4813,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"25114:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4818,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25114:71:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4819,"nodeType":"ExpressionStatement","src":"25114:71:14"}]},"documentation":{"id":4799,"nodeType":"StructuredDocumentation","src":"24639:350:14","text":" @dev Returns the downcasted int144 from int256, reverting on\n overflow (when the input is less than smallest int144 or\n greater than largest int144).\n Counterpart to Solidity's `int144` operator.\n Requirements:\n - input must fit into 144 bits\n _Available since v4.7._"},"id":4821,"implemented":true,"kind":"function","modifiers":[],"name":"toInt144","nameLocation":"25003:8:14","nodeType":"FunctionDefinition","parameters":{"id":4802,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4801,"mutability":"mutable","name":"value","nameLocation":"25019:5:14","nodeType":"VariableDeclaration","scope":4821,"src":"25012:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4800,"name":"int256","nodeType":"ElementaryTypeName","src":"25012:6:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"25011:14:14"},"returnParameters":{"id":4805,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4804,"mutability":"mutable","name":"downcasted","nameLocation":"25056:10:14","nodeType":"VariableDeclaration","scope":4821,"src":"25049:17:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int144","typeString":"int144"},"typeName":{"id":4803,"name":"int144","nodeType":"ElementaryTypeName","src":"25049:6:14","typeDescriptions":{"typeIdentifier":"t_int144","typeString":"int144"}},"visibility":"internal"}],"src":"25048:19:14"},"scope":5241,"src":"24994:198:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4843,"nodeType":"Block","src":"25627:124:14","statements":[{"expression":{"id":4834,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4829,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4827,"src":"25637:10:14","typeDescriptions":{"typeIdentifier":"t_int136","typeString":"int136"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4832,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4824,"src":"25657:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4831,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25650:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_int136_$","typeString":"type(int136)"},"typeName":{"id":4830,"name":"int136","nodeType":"ElementaryTypeName","src":"25650:6:14","typeDescriptions":{}}},"id":4833,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25650:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int136","typeString":"int136"}},"src":"25637:26:14","typeDescriptions":{"typeIdentifier":"t_int136","typeString":"int136"}},"id":4835,"nodeType":"ExpressionStatement","src":"25637:26:14"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4839,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4837,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4827,"src":"25681:10:14","typeDescriptions":{"typeIdentifier":"t_int136","typeString":"int136"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":4838,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4824,"src":"25695:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"25681:19:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e203133362062697473","id":4840,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"25702:41:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_8b1f81e2e2913e1cee9dba7bcd9837bbf8a8122edaac4afc578271db3c25a56a","typeString":"literal_string \"SafeCast: value doesn't fit in 136 bits\""},"value":"SafeCast: value doesn't fit in 136 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8b1f81e2e2913e1cee9dba7bcd9837bbf8a8122edaac4afc578271db3c25a56a","typeString":"literal_string \"SafeCast: value doesn't fit in 136 bits\""}],"id":4836,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"25673:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4841,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25673:71:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4842,"nodeType":"ExpressionStatement","src":"25673:71:14"}]},"documentation":{"id":4822,"nodeType":"StructuredDocumentation","src":"25198:350:14","text":" @dev Returns the downcasted int136 from int256, reverting on\n overflow (when the input is less than smallest int136 or\n greater than largest int136).\n Counterpart to Solidity's `int136` operator.\n Requirements:\n - input must fit into 136 bits\n _Available since v4.7._"},"id":4844,"implemented":true,"kind":"function","modifiers":[],"name":"toInt136","nameLocation":"25562:8:14","nodeType":"FunctionDefinition","parameters":{"id":4825,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4824,"mutability":"mutable","name":"value","nameLocation":"25578:5:14","nodeType":"VariableDeclaration","scope":4844,"src":"25571:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4823,"name":"int256","nodeType":"ElementaryTypeName","src":"25571:6:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"25570:14:14"},"returnParameters":{"id":4828,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4827,"mutability":"mutable","name":"downcasted","nameLocation":"25615:10:14","nodeType":"VariableDeclaration","scope":4844,"src":"25608:17:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int136","typeString":"int136"},"typeName":{"id":4826,"name":"int136","nodeType":"ElementaryTypeName","src":"25608:6:14","typeDescriptions":{"typeIdentifier":"t_int136","typeString":"int136"}},"visibility":"internal"}],"src":"25607:19:14"},"scope":5241,"src":"25553:198:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4866,"nodeType":"Block","src":"26186:124:14","statements":[{"expression":{"id":4857,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4852,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4850,"src":"26196:10:14","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4855,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4847,"src":"26216:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4854,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"26209:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_int128_$","typeString":"type(int128)"},"typeName":{"id":4853,"name":"int128","nodeType":"ElementaryTypeName","src":"26209:6:14","typeDescriptions":{}}},"id":4856,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26209:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"src":"26196:26:14","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"id":4858,"nodeType":"ExpressionStatement","src":"26196:26:14"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4862,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4860,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4850,"src":"26240:10:14","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":4861,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4847,"src":"26254:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"26240:19:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e203132382062697473","id":4863,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"26261:41:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_47a1e201974f94d3d1a31c8b08ae18c6966c758bdcd4400020012b98cc55426c","typeString":"literal_string \"SafeCast: value doesn't fit in 128 bits\""},"value":"SafeCast: value doesn't fit in 128 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_47a1e201974f94d3d1a31c8b08ae18c6966c758bdcd4400020012b98cc55426c","typeString":"literal_string \"SafeCast: value doesn't fit in 128 bits\""}],"id":4859,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"26232:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4864,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26232:71:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4865,"nodeType":"ExpressionStatement","src":"26232:71:14"}]},"documentation":{"id":4845,"nodeType":"StructuredDocumentation","src":"25757:350:14","text":" @dev Returns the downcasted int128 from int256, reverting on\n overflow (when the input is less than smallest int128 or\n greater than largest int128).\n Counterpart to Solidity's `int128` operator.\n Requirements:\n - input must fit into 128 bits\n _Available since v3.1._"},"id":4867,"implemented":true,"kind":"function","modifiers":[],"name":"toInt128","nameLocation":"26121:8:14","nodeType":"FunctionDefinition","parameters":{"id":4848,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4847,"mutability":"mutable","name":"value","nameLocation":"26137:5:14","nodeType":"VariableDeclaration","scope":4867,"src":"26130:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4846,"name":"int256","nodeType":"ElementaryTypeName","src":"26130:6:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"26129:14:14"},"returnParameters":{"id":4851,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4850,"mutability":"mutable","name":"downcasted","nameLocation":"26174:10:14","nodeType":"VariableDeclaration","scope":4867,"src":"26167:17:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"},"typeName":{"id":4849,"name":"int128","nodeType":"ElementaryTypeName","src":"26167:6:14","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"visibility":"internal"}],"src":"26166:19:14"},"scope":5241,"src":"26112:198:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4889,"nodeType":"Block","src":"26745:124:14","statements":[{"expression":{"id":4880,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4875,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4873,"src":"26755:10:14","typeDescriptions":{"typeIdentifier":"t_int120","typeString":"int120"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4878,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4870,"src":"26775:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4877,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"26768:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_int120_$","typeString":"type(int120)"},"typeName":{"id":4876,"name":"int120","nodeType":"ElementaryTypeName","src":"26768:6:14","typeDescriptions":{}}},"id":4879,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26768:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int120","typeString":"int120"}},"src":"26755:26:14","typeDescriptions":{"typeIdentifier":"t_int120","typeString":"int120"}},"id":4881,"nodeType":"ExpressionStatement","src":"26755:26:14"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4885,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4883,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4873,"src":"26799:10:14","typeDescriptions":{"typeIdentifier":"t_int120","typeString":"int120"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":4884,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4870,"src":"26813:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"26799:19:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e203132302062697473","id":4886,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"26820:41:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_3c40c26bb27060cce77002ca0c426dcc1bef2d367c195ca2eb24bd8b2cc1bb09","typeString":"literal_string \"SafeCast: value doesn't fit in 120 bits\""},"value":"SafeCast: value doesn't fit in 120 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_3c40c26bb27060cce77002ca0c426dcc1bef2d367c195ca2eb24bd8b2cc1bb09","typeString":"literal_string \"SafeCast: value doesn't fit in 120 bits\""}],"id":4882,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"26791:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4887,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26791:71:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4888,"nodeType":"ExpressionStatement","src":"26791:71:14"}]},"documentation":{"id":4868,"nodeType":"StructuredDocumentation","src":"26316:350:14","text":" @dev Returns the downcasted int120 from int256, reverting on\n overflow (when the input is less than smallest int120 or\n greater than largest int120).\n Counterpart to Solidity's `int120` operator.\n Requirements:\n - input must fit into 120 bits\n _Available since v4.7._"},"id":4890,"implemented":true,"kind":"function","modifiers":[],"name":"toInt120","nameLocation":"26680:8:14","nodeType":"FunctionDefinition","parameters":{"id":4871,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4870,"mutability":"mutable","name":"value","nameLocation":"26696:5:14","nodeType":"VariableDeclaration","scope":4890,"src":"26689:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4869,"name":"int256","nodeType":"ElementaryTypeName","src":"26689:6:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"26688:14:14"},"returnParameters":{"id":4874,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4873,"mutability":"mutable","name":"downcasted","nameLocation":"26733:10:14","nodeType":"VariableDeclaration","scope":4890,"src":"26726:17:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int120","typeString":"int120"},"typeName":{"id":4872,"name":"int120","nodeType":"ElementaryTypeName","src":"26726:6:14","typeDescriptions":{"typeIdentifier":"t_int120","typeString":"int120"}},"visibility":"internal"}],"src":"26725:19:14"},"scope":5241,"src":"26671:198:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4912,"nodeType":"Block","src":"27304:124:14","statements":[{"expression":{"id":4903,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4898,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4896,"src":"27314:10:14","typeDescriptions":{"typeIdentifier":"t_int112","typeString":"int112"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4901,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4893,"src":"27334:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4900,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"27327:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_int112_$","typeString":"type(int112)"},"typeName":{"id":4899,"name":"int112","nodeType":"ElementaryTypeName","src":"27327:6:14","typeDescriptions":{}}},"id":4902,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27327:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int112","typeString":"int112"}},"src":"27314:26:14","typeDescriptions":{"typeIdentifier":"t_int112","typeString":"int112"}},"id":4904,"nodeType":"ExpressionStatement","src":"27314:26:14"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4908,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4906,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4896,"src":"27358:10:14","typeDescriptions":{"typeIdentifier":"t_int112","typeString":"int112"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":4907,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4893,"src":"27372:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"27358:19:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e203131322062697473","id":4909,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"27379:41:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_45659ae152ef697531e1c1115de07c87af91ac22466c3e76b808821799776efd","typeString":"literal_string \"SafeCast: value doesn't fit in 112 bits\""},"value":"SafeCast: value doesn't fit in 112 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_45659ae152ef697531e1c1115de07c87af91ac22466c3e76b808821799776efd","typeString":"literal_string \"SafeCast: value doesn't fit in 112 bits\""}],"id":4905,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"27350:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4910,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27350:71:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4911,"nodeType":"ExpressionStatement","src":"27350:71:14"}]},"documentation":{"id":4891,"nodeType":"StructuredDocumentation","src":"26875:350:14","text":" @dev Returns the downcasted int112 from int256, reverting on\n overflow (when the input is less than smallest int112 or\n greater than largest int112).\n Counterpart to Solidity's `int112` operator.\n Requirements:\n - input must fit into 112 bits\n _Available since v4.7._"},"id":4913,"implemented":true,"kind":"function","modifiers":[],"name":"toInt112","nameLocation":"27239:8:14","nodeType":"FunctionDefinition","parameters":{"id":4894,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4893,"mutability":"mutable","name":"value","nameLocation":"27255:5:14","nodeType":"VariableDeclaration","scope":4913,"src":"27248:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4892,"name":"int256","nodeType":"ElementaryTypeName","src":"27248:6:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"27247:14:14"},"returnParameters":{"id":4897,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4896,"mutability":"mutable","name":"downcasted","nameLocation":"27292:10:14","nodeType":"VariableDeclaration","scope":4913,"src":"27285:17:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int112","typeString":"int112"},"typeName":{"id":4895,"name":"int112","nodeType":"ElementaryTypeName","src":"27285:6:14","typeDescriptions":{"typeIdentifier":"t_int112","typeString":"int112"}},"visibility":"internal"}],"src":"27284:19:14"},"scope":5241,"src":"27230:198:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4935,"nodeType":"Block","src":"27863:124:14","statements":[{"expression":{"id":4926,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4921,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4919,"src":"27873:10:14","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4924,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4916,"src":"27893:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4923,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"27886:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_int104_$","typeString":"type(int104)"},"typeName":{"id":4922,"name":"int104","nodeType":"ElementaryTypeName","src":"27886:6:14","typeDescriptions":{}}},"id":4925,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27886:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"src":"27873:26:14","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"id":4927,"nodeType":"ExpressionStatement","src":"27873:26:14"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4931,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4929,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4919,"src":"27917:10:14","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":4930,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4916,"src":"27931:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"27917:19:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e203130342062697473","id":4932,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"27938:41:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_5d7f3e1b7e9f9a06fded6b093c6fd1473ca0a14cc4bb683db904e803e2482981","typeString":"literal_string \"SafeCast: value doesn't fit in 104 bits\""},"value":"SafeCast: value doesn't fit in 104 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5d7f3e1b7e9f9a06fded6b093c6fd1473ca0a14cc4bb683db904e803e2482981","typeString":"literal_string \"SafeCast: value doesn't fit in 104 bits\""}],"id":4928,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"27909:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4933,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27909:71:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4934,"nodeType":"ExpressionStatement","src":"27909:71:14"}]},"documentation":{"id":4914,"nodeType":"StructuredDocumentation","src":"27434:350:14","text":" @dev Returns the downcasted int104 from int256, reverting on\n overflow (when the input is less than smallest int104 or\n greater than largest int104).\n Counterpart to Solidity's `int104` operator.\n Requirements:\n - input must fit into 104 bits\n _Available since v4.7._"},"id":4936,"implemented":true,"kind":"function","modifiers":[],"name":"toInt104","nameLocation":"27798:8:14","nodeType":"FunctionDefinition","parameters":{"id":4917,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4916,"mutability":"mutable","name":"value","nameLocation":"27814:5:14","nodeType":"VariableDeclaration","scope":4936,"src":"27807:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4915,"name":"int256","nodeType":"ElementaryTypeName","src":"27807:6:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"27806:14:14"},"returnParameters":{"id":4920,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4919,"mutability":"mutable","name":"downcasted","nameLocation":"27851:10:14","nodeType":"VariableDeclaration","scope":4936,"src":"27844:17:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"},"typeName":{"id":4918,"name":"int104","nodeType":"ElementaryTypeName","src":"27844:6:14","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"visibility":"internal"}],"src":"27843:19:14"},"scope":5241,"src":"27789:198:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4958,"nodeType":"Block","src":"28415:122:14","statements":[{"expression":{"id":4949,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4944,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4942,"src":"28425:10:14","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4947,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4939,"src":"28444:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4946,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"28438:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_int96_$","typeString":"type(int96)"},"typeName":{"id":4945,"name":"int96","nodeType":"ElementaryTypeName","src":"28438:5:14","typeDescriptions":{}}},"id":4948,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28438:12:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"src":"28425:25:14","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"id":4950,"nodeType":"ExpressionStatement","src":"28425:25:14"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4954,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4952,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4942,"src":"28468:10:14","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":4953,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4939,"src":"28482:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"28468:19:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e2039362062697473","id":4955,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"28489:40:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_06d20189090e973729391526269baef79c35dd621633195648e5f8309eef9e19","typeString":"literal_string \"SafeCast: value doesn't fit in 96 bits\""},"value":"SafeCast: value doesn't fit in 96 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_06d20189090e973729391526269baef79c35dd621633195648e5f8309eef9e19","typeString":"literal_string \"SafeCast: value doesn't fit in 96 bits\""}],"id":4951,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"28460:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4956,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28460:70:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4957,"nodeType":"ExpressionStatement","src":"28460:70:14"}]},"documentation":{"id":4937,"nodeType":"StructuredDocumentation","src":"27993:345:14","text":" @dev Returns the downcasted int96 from int256, reverting on\n overflow (when the input is less than smallest int96 or\n greater than largest int96).\n Counterpart to Solidity's `int96` operator.\n Requirements:\n - input must fit into 96 bits\n _Available since v4.7._"},"id":4959,"implemented":true,"kind":"function","modifiers":[],"name":"toInt96","nameLocation":"28352:7:14","nodeType":"FunctionDefinition","parameters":{"id":4940,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4939,"mutability":"mutable","name":"value","nameLocation":"28367:5:14","nodeType":"VariableDeclaration","scope":4959,"src":"28360:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4938,"name":"int256","nodeType":"ElementaryTypeName","src":"28360:6:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"28359:14:14"},"returnParameters":{"id":4943,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4942,"mutability":"mutable","name":"downcasted","nameLocation":"28403:10:14","nodeType":"VariableDeclaration","scope":4959,"src":"28397:16:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":4941,"name":"int96","nodeType":"ElementaryTypeName","src":"28397:5:14","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"}],"src":"28396:18:14"},"scope":5241,"src":"28343:194:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4981,"nodeType":"Block","src":"28965:122:14","statements":[{"expression":{"id":4972,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4967,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4965,"src":"28975:10:14","typeDescriptions":{"typeIdentifier":"t_int88","typeString":"int88"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4970,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4962,"src":"28994:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4969,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"28988:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_int88_$","typeString":"type(int88)"},"typeName":{"id":4968,"name":"int88","nodeType":"ElementaryTypeName","src":"28988:5:14","typeDescriptions":{}}},"id":4971,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28988:12:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int88","typeString":"int88"}},"src":"28975:25:14","typeDescriptions":{"typeIdentifier":"t_int88","typeString":"int88"}},"id":4973,"nodeType":"ExpressionStatement","src":"28975:25:14"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4977,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4975,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4965,"src":"29018:10:14","typeDescriptions":{"typeIdentifier":"t_int88","typeString":"int88"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":4976,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4962,"src":"29032:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"29018:19:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e2038382062697473","id":4978,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"29039:40:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_ae080bd7a76a46f0a0caf00941bc2cdf6002799ca2813a3af7295019576d715d","typeString":"literal_string \"SafeCast: value doesn't fit in 88 bits\""},"value":"SafeCast: value doesn't fit in 88 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ae080bd7a76a46f0a0caf00941bc2cdf6002799ca2813a3af7295019576d715d","typeString":"literal_string \"SafeCast: value doesn't fit in 88 bits\""}],"id":4974,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"29010:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4979,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29010:70:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4980,"nodeType":"ExpressionStatement","src":"29010:70:14"}]},"documentation":{"id":4960,"nodeType":"StructuredDocumentation","src":"28543:345:14","text":" @dev Returns the downcasted int88 from int256, reverting on\n overflow (when the input is less than smallest int88 or\n greater than largest int88).\n Counterpart to Solidity's `int88` operator.\n Requirements:\n - input must fit into 88 bits\n _Available since v4.7._"},"id":4982,"implemented":true,"kind":"function","modifiers":[],"name":"toInt88","nameLocation":"28902:7:14","nodeType":"FunctionDefinition","parameters":{"id":4963,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4962,"mutability":"mutable","name":"value","nameLocation":"28917:5:14","nodeType":"VariableDeclaration","scope":4982,"src":"28910:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4961,"name":"int256","nodeType":"ElementaryTypeName","src":"28910:6:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"28909:14:14"},"returnParameters":{"id":4966,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4965,"mutability":"mutable","name":"downcasted","nameLocation":"28953:10:14","nodeType":"VariableDeclaration","scope":4982,"src":"28947:16:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int88","typeString":"int88"},"typeName":{"id":4964,"name":"int88","nodeType":"ElementaryTypeName","src":"28947:5:14","typeDescriptions":{"typeIdentifier":"t_int88","typeString":"int88"}},"visibility":"internal"}],"src":"28946:18:14"},"scope":5241,"src":"28893:194:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5004,"nodeType":"Block","src":"29515:122:14","statements":[{"expression":{"id":4995,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4990,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4988,"src":"29525:10:14","typeDescriptions":{"typeIdentifier":"t_int80","typeString":"int80"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4993,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4985,"src":"29544:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4992,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"29538:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_int80_$","typeString":"type(int80)"},"typeName":{"id":4991,"name":"int80","nodeType":"ElementaryTypeName","src":"29538:5:14","typeDescriptions":{}}},"id":4994,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29538:12:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int80","typeString":"int80"}},"src":"29525:25:14","typeDescriptions":{"typeIdentifier":"t_int80","typeString":"int80"}},"id":4996,"nodeType":"ExpressionStatement","src":"29525:25:14"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5000,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4998,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4988,"src":"29568:10:14","typeDescriptions":{"typeIdentifier":"t_int80","typeString":"int80"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":4999,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4985,"src":"29582:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"29568:19:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e2038302062697473","id":5001,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"29589:40:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_3cba87c71fade7d3cd7b673c159aab98afc040a5369691a33559d905d20ab5d1","typeString":"literal_string \"SafeCast: value doesn't fit in 80 bits\""},"value":"SafeCast: value doesn't fit in 80 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_3cba87c71fade7d3cd7b673c159aab98afc040a5369691a33559d905d20ab5d1","typeString":"literal_string \"SafeCast: value doesn't fit in 80 bits\""}],"id":4997,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"29560:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":5002,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29560:70:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5003,"nodeType":"ExpressionStatement","src":"29560:70:14"}]},"documentation":{"id":4983,"nodeType":"StructuredDocumentation","src":"29093:345:14","text":" @dev Returns the downcasted int80 from int256, reverting on\n overflow (when the input is less than smallest int80 or\n greater than largest int80).\n Counterpart to Solidity's `int80` operator.\n Requirements:\n - input must fit into 80 bits\n _Available since v4.7._"},"id":5005,"implemented":true,"kind":"function","modifiers":[],"name":"toInt80","nameLocation":"29452:7:14","nodeType":"FunctionDefinition","parameters":{"id":4986,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4985,"mutability":"mutable","name":"value","nameLocation":"29467:5:14","nodeType":"VariableDeclaration","scope":5005,"src":"29460:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4984,"name":"int256","nodeType":"ElementaryTypeName","src":"29460:6:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"29459:14:14"},"returnParameters":{"id":4989,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4988,"mutability":"mutable","name":"downcasted","nameLocation":"29503:10:14","nodeType":"VariableDeclaration","scope":5005,"src":"29497:16:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int80","typeString":"int80"},"typeName":{"id":4987,"name":"int80","nodeType":"ElementaryTypeName","src":"29497:5:14","typeDescriptions":{"typeIdentifier":"t_int80","typeString":"int80"}},"visibility":"internal"}],"src":"29496:18:14"},"scope":5241,"src":"29443:194:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5027,"nodeType":"Block","src":"30065:122:14","statements":[{"expression":{"id":5018,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5013,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5011,"src":"30075:10:14","typeDescriptions":{"typeIdentifier":"t_int72","typeString":"int72"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":5016,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5008,"src":"30094:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":5015,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"30088:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_int72_$","typeString":"type(int72)"},"typeName":{"id":5014,"name":"int72","nodeType":"ElementaryTypeName","src":"30088:5:14","typeDescriptions":{}}},"id":5017,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30088:12:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int72","typeString":"int72"}},"src":"30075:25:14","typeDescriptions":{"typeIdentifier":"t_int72","typeString":"int72"}},"id":5019,"nodeType":"ExpressionStatement","src":"30075:25:14"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5023,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5021,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5011,"src":"30118:10:14","typeDescriptions":{"typeIdentifier":"t_int72","typeString":"int72"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":5022,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5008,"src":"30132:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"30118:19:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e2037322062697473","id":5024,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"30139:40:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_71584237cc5250b8f417982144a947efe8f4c76feba008ff32ac480e69d60606","typeString":"literal_string \"SafeCast: value doesn't fit in 72 bits\""},"value":"SafeCast: value doesn't fit in 72 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_71584237cc5250b8f417982144a947efe8f4c76feba008ff32ac480e69d60606","typeString":"literal_string \"SafeCast: value doesn't fit in 72 bits\""}],"id":5020,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"30110:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":5025,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30110:70:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5026,"nodeType":"ExpressionStatement","src":"30110:70:14"}]},"documentation":{"id":5006,"nodeType":"StructuredDocumentation","src":"29643:345:14","text":" @dev Returns the downcasted int72 from int256, reverting on\n overflow (when the input is less than smallest int72 or\n greater than largest int72).\n Counterpart to Solidity's `int72` operator.\n Requirements:\n - input must fit into 72 bits\n _Available since v4.7._"},"id":5028,"implemented":true,"kind":"function","modifiers":[],"name":"toInt72","nameLocation":"30002:7:14","nodeType":"FunctionDefinition","parameters":{"id":5009,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5008,"mutability":"mutable","name":"value","nameLocation":"30017:5:14","nodeType":"VariableDeclaration","scope":5028,"src":"30010:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5007,"name":"int256","nodeType":"ElementaryTypeName","src":"30010:6:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"30009:14:14"},"returnParameters":{"id":5012,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5011,"mutability":"mutable","name":"downcasted","nameLocation":"30053:10:14","nodeType":"VariableDeclaration","scope":5028,"src":"30047:16:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int72","typeString":"int72"},"typeName":{"id":5010,"name":"int72","nodeType":"ElementaryTypeName","src":"30047:5:14","typeDescriptions":{"typeIdentifier":"t_int72","typeString":"int72"}},"visibility":"internal"}],"src":"30046:18:14"},"scope":5241,"src":"29993:194:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5050,"nodeType":"Block","src":"30615:122:14","statements":[{"expression":{"id":5041,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5036,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5034,"src":"30625:10:14","typeDescriptions":{"typeIdentifier":"t_int64","typeString":"int64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":5039,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5031,"src":"30644:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":5038,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"30638:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_int64_$","typeString":"type(int64)"},"typeName":{"id":5037,"name":"int64","nodeType":"ElementaryTypeName","src":"30638:5:14","typeDescriptions":{}}},"id":5040,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30638:12:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int64","typeString":"int64"}},"src":"30625:25:14","typeDescriptions":{"typeIdentifier":"t_int64","typeString":"int64"}},"id":5042,"nodeType":"ExpressionStatement","src":"30625:25:14"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5046,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5044,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5034,"src":"30668:10:14","typeDescriptions":{"typeIdentifier":"t_int64","typeString":"int64"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":5045,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5031,"src":"30682:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"30668:19:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e2036342062697473","id":5047,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"30689:40:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_93ae0c6bf6ffaece591a770b1865daa9f65157e541970aa9d8dc5f89a9490939","typeString":"literal_string \"SafeCast: value doesn't fit in 64 bits\""},"value":"SafeCast: value doesn't fit in 64 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_93ae0c6bf6ffaece591a770b1865daa9f65157e541970aa9d8dc5f89a9490939","typeString":"literal_string \"SafeCast: value doesn't fit in 64 bits\""}],"id":5043,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"30660:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":5048,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30660:70:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5049,"nodeType":"ExpressionStatement","src":"30660:70:14"}]},"documentation":{"id":5029,"nodeType":"StructuredDocumentation","src":"30193:345:14","text":" @dev Returns the downcasted int64 from int256, reverting on\n overflow (when the input is less than smallest int64 or\n greater than largest int64).\n Counterpart to Solidity's `int64` operator.\n Requirements:\n - input must fit into 64 bits\n _Available since v3.1._"},"id":5051,"implemented":true,"kind":"function","modifiers":[],"name":"toInt64","nameLocation":"30552:7:14","nodeType":"FunctionDefinition","parameters":{"id":5032,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5031,"mutability":"mutable","name":"value","nameLocation":"30567:5:14","nodeType":"VariableDeclaration","scope":5051,"src":"30560:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5030,"name":"int256","nodeType":"ElementaryTypeName","src":"30560:6:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"30559:14:14"},"returnParameters":{"id":5035,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5034,"mutability":"mutable","name":"downcasted","nameLocation":"30603:10:14","nodeType":"VariableDeclaration","scope":5051,"src":"30597:16:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int64","typeString":"int64"},"typeName":{"id":5033,"name":"int64","nodeType":"ElementaryTypeName","src":"30597:5:14","typeDescriptions":{"typeIdentifier":"t_int64","typeString":"int64"}},"visibility":"internal"}],"src":"30596:18:14"},"scope":5241,"src":"30543:194:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5073,"nodeType":"Block","src":"31165:122:14","statements":[{"expression":{"id":5064,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5059,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5057,"src":"31175:10:14","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":5062,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5054,"src":"31194:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":5061,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"31188:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_int56_$","typeString":"type(int56)"},"typeName":{"id":5060,"name":"int56","nodeType":"ElementaryTypeName","src":"31188:5:14","typeDescriptions":{}}},"id":5063,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31188:12:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"src":"31175:25:14","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"id":5065,"nodeType":"ExpressionStatement","src":"31175:25:14"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5069,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5067,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5057,"src":"31218:10:14","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":5068,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5054,"src":"31232:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"31218:19:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e2035362062697473","id":5070,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"31239:40:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_656ad93b5ff6665bfe05d97d51fad7c02ad79e6c43bef066c042a6900f450bc5","typeString":"literal_string \"SafeCast: value doesn't fit in 56 bits\""},"value":"SafeCast: value doesn't fit in 56 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_656ad93b5ff6665bfe05d97d51fad7c02ad79e6c43bef066c042a6900f450bc5","typeString":"literal_string \"SafeCast: value doesn't fit in 56 bits\""}],"id":5066,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"31210:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":5071,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31210:70:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5072,"nodeType":"ExpressionStatement","src":"31210:70:14"}]},"documentation":{"id":5052,"nodeType":"StructuredDocumentation","src":"30743:345:14","text":" @dev Returns the downcasted int56 from int256, reverting on\n overflow (when the input is less than smallest int56 or\n greater than largest int56).\n Counterpart to Solidity's `int56` operator.\n Requirements:\n - input must fit into 56 bits\n _Available since v4.7._"},"id":5074,"implemented":true,"kind":"function","modifiers":[],"name":"toInt56","nameLocation":"31102:7:14","nodeType":"FunctionDefinition","parameters":{"id":5055,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5054,"mutability":"mutable","name":"value","nameLocation":"31117:5:14","nodeType":"VariableDeclaration","scope":5074,"src":"31110:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5053,"name":"int256","nodeType":"ElementaryTypeName","src":"31110:6:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"31109:14:14"},"returnParameters":{"id":5058,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5057,"mutability":"mutable","name":"downcasted","nameLocation":"31153:10:14","nodeType":"VariableDeclaration","scope":5074,"src":"31147:16:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"},"typeName":{"id":5056,"name":"int56","nodeType":"ElementaryTypeName","src":"31147:5:14","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"visibility":"internal"}],"src":"31146:18:14"},"scope":5241,"src":"31093:194:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5096,"nodeType":"Block","src":"31715:122:14","statements":[{"expression":{"id":5087,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5082,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5080,"src":"31725:10:14","typeDescriptions":{"typeIdentifier":"t_int48","typeString":"int48"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":5085,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5077,"src":"31744:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":5084,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"31738:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_int48_$","typeString":"type(int48)"},"typeName":{"id":5083,"name":"int48","nodeType":"ElementaryTypeName","src":"31738:5:14","typeDescriptions":{}}},"id":5086,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31738:12:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int48","typeString":"int48"}},"src":"31725:25:14","typeDescriptions":{"typeIdentifier":"t_int48","typeString":"int48"}},"id":5088,"nodeType":"ExpressionStatement","src":"31725:25:14"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5092,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5090,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5080,"src":"31768:10:14","typeDescriptions":{"typeIdentifier":"t_int48","typeString":"int48"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":5091,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5077,"src":"31782:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"31768:19:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e2034382062697473","id":5093,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"31789:40:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_599034f9324dd4e988c6cea5a00a30f53147fec1b01559682f18cd840028f495","typeString":"literal_string \"SafeCast: value doesn't fit in 48 bits\""},"value":"SafeCast: value doesn't fit in 48 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_599034f9324dd4e988c6cea5a00a30f53147fec1b01559682f18cd840028f495","typeString":"literal_string \"SafeCast: value doesn't fit in 48 bits\""}],"id":5089,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"31760:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":5094,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31760:70:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5095,"nodeType":"ExpressionStatement","src":"31760:70:14"}]},"documentation":{"id":5075,"nodeType":"StructuredDocumentation","src":"31293:345:14","text":" @dev Returns the downcasted int48 from int256, reverting on\n overflow (when the input is less than smallest int48 or\n greater than largest int48).\n Counterpart to Solidity's `int48` operator.\n Requirements:\n - input must fit into 48 bits\n _Available since v4.7._"},"id":5097,"implemented":true,"kind":"function","modifiers":[],"name":"toInt48","nameLocation":"31652:7:14","nodeType":"FunctionDefinition","parameters":{"id":5078,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5077,"mutability":"mutable","name":"value","nameLocation":"31667:5:14","nodeType":"VariableDeclaration","scope":5097,"src":"31660:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5076,"name":"int256","nodeType":"ElementaryTypeName","src":"31660:6:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"31659:14:14"},"returnParameters":{"id":5081,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5080,"mutability":"mutable","name":"downcasted","nameLocation":"31703:10:14","nodeType":"VariableDeclaration","scope":5097,"src":"31697:16:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int48","typeString":"int48"},"typeName":{"id":5079,"name":"int48","nodeType":"ElementaryTypeName","src":"31697:5:14","typeDescriptions":{"typeIdentifier":"t_int48","typeString":"int48"}},"visibility":"internal"}],"src":"31696:18:14"},"scope":5241,"src":"31643:194:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5119,"nodeType":"Block","src":"32265:122:14","statements":[{"expression":{"id":5110,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5105,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5103,"src":"32275:10:14","typeDescriptions":{"typeIdentifier":"t_int40","typeString":"int40"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":5108,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5100,"src":"32294:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":5107,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"32288:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_int40_$","typeString":"type(int40)"},"typeName":{"id":5106,"name":"int40","nodeType":"ElementaryTypeName","src":"32288:5:14","typeDescriptions":{}}},"id":5109,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32288:12:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int40","typeString":"int40"}},"src":"32275:25:14","typeDescriptions":{"typeIdentifier":"t_int40","typeString":"int40"}},"id":5111,"nodeType":"ExpressionStatement","src":"32275:25:14"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5115,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5113,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5103,"src":"32318:10:14","typeDescriptions":{"typeIdentifier":"t_int40","typeString":"int40"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":5114,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5100,"src":"32332:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"32318:19:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e2034302062697473","id":5116,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"32339:40:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_b23559c58b98a5d3ed7016699c7171ac8defa5a1d180f9a9ffa60468a5701d37","typeString":"literal_string \"SafeCast: value doesn't fit in 40 bits\""},"value":"SafeCast: value doesn't fit in 40 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b23559c58b98a5d3ed7016699c7171ac8defa5a1d180f9a9ffa60468a5701d37","typeString":"literal_string \"SafeCast: value doesn't fit in 40 bits\""}],"id":5112,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"32310:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":5117,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32310:70:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5118,"nodeType":"ExpressionStatement","src":"32310:70:14"}]},"documentation":{"id":5098,"nodeType":"StructuredDocumentation","src":"31843:345:14","text":" @dev Returns the downcasted int40 from int256, reverting on\n overflow (when the input is less than smallest int40 or\n greater than largest int40).\n Counterpart to Solidity's `int40` operator.\n Requirements:\n - input must fit into 40 bits\n _Available since v4.7._"},"id":5120,"implemented":true,"kind":"function","modifiers":[],"name":"toInt40","nameLocation":"32202:7:14","nodeType":"FunctionDefinition","parameters":{"id":5101,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5100,"mutability":"mutable","name":"value","nameLocation":"32217:5:14","nodeType":"VariableDeclaration","scope":5120,"src":"32210:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5099,"name":"int256","nodeType":"ElementaryTypeName","src":"32210:6:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"32209:14:14"},"returnParameters":{"id":5104,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5103,"mutability":"mutable","name":"downcasted","nameLocation":"32253:10:14","nodeType":"VariableDeclaration","scope":5120,"src":"32247:16:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int40","typeString":"int40"},"typeName":{"id":5102,"name":"int40","nodeType":"ElementaryTypeName","src":"32247:5:14","typeDescriptions":{"typeIdentifier":"t_int40","typeString":"int40"}},"visibility":"internal"}],"src":"32246:18:14"},"scope":5241,"src":"32193:194:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5142,"nodeType":"Block","src":"32815:122:14","statements":[{"expression":{"id":5133,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5128,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5126,"src":"32825:10:14","typeDescriptions":{"typeIdentifier":"t_int32","typeString":"int32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":5131,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5123,"src":"32844:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":5130,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"32838:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_int32_$","typeString":"type(int32)"},"typeName":{"id":5129,"name":"int32","nodeType":"ElementaryTypeName","src":"32838:5:14","typeDescriptions":{}}},"id":5132,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32838:12:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int32","typeString":"int32"}},"src":"32825:25:14","typeDescriptions":{"typeIdentifier":"t_int32","typeString":"int32"}},"id":5134,"nodeType":"ExpressionStatement","src":"32825:25:14"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5138,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5136,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5126,"src":"32868:10:14","typeDescriptions":{"typeIdentifier":"t_int32","typeString":"int32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":5137,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5123,"src":"32882:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"32868:19:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e2033322062697473","id":5139,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"32889:40:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_c907489dafcfb622d3b83f2657a14d6da2f59e0de3116af0d6a80554c1a7cb19","typeString":"literal_string \"SafeCast: value doesn't fit in 32 bits\""},"value":"SafeCast: value doesn't fit in 32 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_c907489dafcfb622d3b83f2657a14d6da2f59e0de3116af0d6a80554c1a7cb19","typeString":"literal_string \"SafeCast: value doesn't fit in 32 bits\""}],"id":5135,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"32860:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":5140,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32860:70:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5141,"nodeType":"ExpressionStatement","src":"32860:70:14"}]},"documentation":{"id":5121,"nodeType":"StructuredDocumentation","src":"32393:345:14","text":" @dev Returns the downcasted int32 from int256, reverting on\n overflow (when the input is less than smallest int32 or\n greater than largest int32).\n Counterpart to Solidity's `int32` operator.\n Requirements:\n - input must fit into 32 bits\n _Available since v3.1._"},"id":5143,"implemented":true,"kind":"function","modifiers":[],"name":"toInt32","nameLocation":"32752:7:14","nodeType":"FunctionDefinition","parameters":{"id":5124,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5123,"mutability":"mutable","name":"value","nameLocation":"32767:5:14","nodeType":"VariableDeclaration","scope":5143,"src":"32760:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5122,"name":"int256","nodeType":"ElementaryTypeName","src":"32760:6:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"32759:14:14"},"returnParameters":{"id":5127,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5126,"mutability":"mutable","name":"downcasted","nameLocation":"32803:10:14","nodeType":"VariableDeclaration","scope":5143,"src":"32797:16:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int32","typeString":"int32"},"typeName":{"id":5125,"name":"int32","nodeType":"ElementaryTypeName","src":"32797:5:14","typeDescriptions":{"typeIdentifier":"t_int32","typeString":"int32"}},"visibility":"internal"}],"src":"32796:18:14"},"scope":5241,"src":"32743:194:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5165,"nodeType":"Block","src":"33365:122:14","statements":[{"expression":{"id":5156,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5151,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5149,"src":"33375:10:14","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":5154,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5146,"src":"33394:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":5153,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"33388:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_int24_$","typeString":"type(int24)"},"typeName":{"id":5152,"name":"int24","nodeType":"ElementaryTypeName","src":"33388:5:14","typeDescriptions":{}}},"id":5155,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33388:12:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"33375:25:14","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"id":5157,"nodeType":"ExpressionStatement","src":"33375:25:14"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5161,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5159,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5149,"src":"33418:10:14","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":5160,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5146,"src":"33432:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"33418:19:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e2032342062697473","id":5162,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"33439:40:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_f68b65aaf4574c34e9b9d1442d19636c6608b8c4dbd9331c7245f7915c8b2f55","typeString":"literal_string \"SafeCast: value doesn't fit in 24 bits\""},"value":"SafeCast: value doesn't fit in 24 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_f68b65aaf4574c34e9b9d1442d19636c6608b8c4dbd9331c7245f7915c8b2f55","typeString":"literal_string \"SafeCast: value doesn't fit in 24 bits\""}],"id":5158,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"33410:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":5163,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33410:70:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5164,"nodeType":"ExpressionStatement","src":"33410:70:14"}]},"documentation":{"id":5144,"nodeType":"StructuredDocumentation","src":"32943:345:14","text":" @dev Returns the downcasted int24 from int256, reverting on\n overflow (when the input is less than smallest int24 or\n greater than largest int24).\n Counterpart to Solidity's `int24` operator.\n Requirements:\n - input must fit into 24 bits\n _Available since v4.7._"},"id":5166,"implemented":true,"kind":"function","modifiers":[],"name":"toInt24","nameLocation":"33302:7:14","nodeType":"FunctionDefinition","parameters":{"id":5147,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5146,"mutability":"mutable","name":"value","nameLocation":"33317:5:14","nodeType":"VariableDeclaration","scope":5166,"src":"33310:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5145,"name":"int256","nodeType":"ElementaryTypeName","src":"33310:6:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"33309:14:14"},"returnParameters":{"id":5150,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5149,"mutability":"mutable","name":"downcasted","nameLocation":"33353:10:14","nodeType":"VariableDeclaration","scope":5166,"src":"33347:16:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":5148,"name":"int24","nodeType":"ElementaryTypeName","src":"33347:5:14","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"33346:18:14"},"scope":5241,"src":"33293:194:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5188,"nodeType":"Block","src":"33915:122:14","statements":[{"expression":{"id":5179,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5174,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5172,"src":"33925:10:14","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":5177,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5169,"src":"33944:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":5176,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"33938:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_int16_$","typeString":"type(int16)"},"typeName":{"id":5175,"name":"int16","nodeType":"ElementaryTypeName","src":"33938:5:14","typeDescriptions":{}}},"id":5178,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33938:12:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"src":"33925:25:14","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"id":5180,"nodeType":"ExpressionStatement","src":"33925:25:14"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5184,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5182,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5172,"src":"33968:10:14","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":5183,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5169,"src":"33982:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"33968:19:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e2031362062697473","id":5185,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"33989:40:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_13d3a66f9e0e5c92bbe7743bcd3bdb4695009d5f3a96e5ff49718d715b484033","typeString":"literal_string \"SafeCast: value doesn't fit in 16 bits\""},"value":"SafeCast: value doesn't fit in 16 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_13d3a66f9e0e5c92bbe7743bcd3bdb4695009d5f3a96e5ff49718d715b484033","typeString":"literal_string \"SafeCast: value doesn't fit in 16 bits\""}],"id":5181,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"33960:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":5186,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33960:70:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5187,"nodeType":"ExpressionStatement","src":"33960:70:14"}]},"documentation":{"id":5167,"nodeType":"StructuredDocumentation","src":"33493:345:14","text":" @dev Returns the downcasted int16 from int256, reverting on\n overflow (when the input is less than smallest int16 or\n greater than largest int16).\n Counterpart to Solidity's `int16` operator.\n Requirements:\n - input must fit into 16 bits\n _Available since v3.1._"},"id":5189,"implemented":true,"kind":"function","modifiers":[],"name":"toInt16","nameLocation":"33852:7:14","nodeType":"FunctionDefinition","parameters":{"id":5170,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5169,"mutability":"mutable","name":"value","nameLocation":"33867:5:14","nodeType":"VariableDeclaration","scope":5189,"src":"33860:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5168,"name":"int256","nodeType":"ElementaryTypeName","src":"33860:6:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"33859:14:14"},"returnParameters":{"id":5173,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5172,"mutability":"mutable","name":"downcasted","nameLocation":"33903:10:14","nodeType":"VariableDeclaration","scope":5189,"src":"33897:16:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"},"typeName":{"id":5171,"name":"int16","nodeType":"ElementaryTypeName","src":"33897:5:14","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"visibility":"internal"}],"src":"33896:18:14"},"scope":5241,"src":"33843:194:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5211,"nodeType":"Block","src":"34458:120:14","statements":[{"expression":{"id":5202,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5197,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5195,"src":"34468:10:14","typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":5200,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5192,"src":"34486:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":5199,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"34481:4:14","typeDescriptions":{"typeIdentifier":"t_type$_t_int8_$","typeString":"type(int8)"},"typeName":{"id":5198,"name":"int8","nodeType":"ElementaryTypeName","src":"34481:4:14","typeDescriptions":{}}},"id":5201,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34481:11:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"}},"src":"34468:24:14","typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"}},"id":5203,"nodeType":"ExpressionStatement","src":"34468:24:14"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5207,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5205,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5195,"src":"34510:10:14","typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":5206,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5192,"src":"34524:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"34510:19:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e20382062697473","id":5208,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"34531:39:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_2610961ba53259047cd57c60366c5ad0b8aabf5eb4132487619b736715a740d1","typeString":"literal_string \"SafeCast: value doesn't fit in 8 bits\""},"value":"SafeCast: value doesn't fit in 8 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2610961ba53259047cd57c60366c5ad0b8aabf5eb4132487619b736715a740d1","typeString":"literal_string \"SafeCast: value doesn't fit in 8 bits\""}],"id":5204,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"34502:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":5209,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34502:69:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5210,"nodeType":"ExpressionStatement","src":"34502:69:14"}]},"documentation":{"id":5190,"nodeType":"StructuredDocumentation","src":"34043:340:14","text":" @dev Returns the downcasted int8 from int256, reverting on\n overflow (when the input is less than smallest int8 or\n greater than largest int8).\n Counterpart to Solidity's `int8` operator.\n Requirements:\n - input must fit into 8 bits\n _Available since v3.1._"},"id":5212,"implemented":true,"kind":"function","modifiers":[],"name":"toInt8","nameLocation":"34397:6:14","nodeType":"FunctionDefinition","parameters":{"id":5193,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5192,"mutability":"mutable","name":"value","nameLocation":"34411:5:14","nodeType":"VariableDeclaration","scope":5212,"src":"34404:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5191,"name":"int256","nodeType":"ElementaryTypeName","src":"34404:6:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"34403:14:14"},"returnParameters":{"id":5196,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5195,"mutability":"mutable","name":"downcasted","nameLocation":"34446:10:14","nodeType":"VariableDeclaration","scope":5212,"src":"34441:15:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"},"typeName":{"id":5194,"name":"int8","nodeType":"ElementaryTypeName","src":"34441:4:14","typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"}},"visibility":"internal"}],"src":"34440:17:14"},"scope":5241,"src":"34388:190:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5239,"nodeType":"Block","src":"34856:233:14","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5230,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5221,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5215,"src":"34973:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"arguments":[{"expression":{"arguments":[{"id":5226,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"34995:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":5225,"name":"int256","nodeType":"ElementaryTypeName","src":"34995:6:14","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"}],"id":5224,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"34990:4:14","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5227,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34990:12:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_int256","typeString":"type(int256)"}},"id":5228,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"35003:3:14","memberName":"max","nodeType":"MemberAccess","src":"34990:16:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":5223,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"34982:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":5222,"name":"uint256","nodeType":"ElementaryTypeName","src":"34982:7:14","typeDescriptions":{}}},"id":5229,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34982:25:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"34973:34:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e20616e20696e74323536","id":5231,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"35009:42:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_d70dcf21692b3c91b4c5fbb89ed57f464aa42efbe5b0ea96c4acb7c080144227","typeString":"literal_string \"SafeCast: value doesn't fit in an int256\""},"value":"SafeCast: value doesn't fit in an int256"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d70dcf21692b3c91b4c5fbb89ed57f464aa42efbe5b0ea96c4acb7c080144227","typeString":"literal_string \"SafeCast: value doesn't fit in an int256\""}],"id":5220,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"34965:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":5232,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34965:87:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5233,"nodeType":"ExpressionStatement","src":"34965:87:14"},{"expression":{"arguments":[{"id":5236,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5215,"src":"35076:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5235,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"35069:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":5234,"name":"int256","nodeType":"ElementaryTypeName","src":"35069:6:14","typeDescriptions":{}}},"id":5237,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"35069:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":5219,"id":5238,"nodeType":"Return","src":"35062:20:14"}]},"documentation":{"id":5213,"nodeType":"StructuredDocumentation","src":"34584:203:14","text":" @dev Converts an unsigned uint256 into a signed int256.\n Requirements:\n - input must be less than or equal to maxInt256.\n _Available since v3.0._"},"id":5240,"implemented":true,"kind":"function","modifiers":[],"name":"toInt256","nameLocation":"34801:8:14","nodeType":"FunctionDefinition","parameters":{"id":5216,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5215,"mutability":"mutable","name":"value","nameLocation":"34818:5:14","nodeType":"VariableDeclaration","scope":5240,"src":"34810:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5214,"name":"uint256","nodeType":"ElementaryTypeName","src":"34810:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"34809:15:14"},"returnParameters":{"id":5219,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5218,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5240,"src":"34848:6:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5217,"name":"int256","nodeType":"ElementaryTypeName","src":"34848:6:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"34847:8:14"},"scope":5241,"src":"34792:297:14","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":5242,"src":"927:34164:14","usedErrors":[]}],"src":"192:34900:14"},"id":14},"@openzeppelin/contracts/interfaces/IERC1967.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/interfaces/IERC1967.sol","exportedSymbols":{"IERC1967":[5262]},"id":5263,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":5243,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"107:23:15"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC1967","contractDependencies":[],"contractKind":"interface","documentation":{"id":5244,"nodeType":"StructuredDocumentation","src":"132:133:15","text":" @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\n _Available since v4.8.3._"},"fullyImplemented":true,"id":5262,"linearizedBaseContracts":[5262],"name":"IERC1967","nameLocation":"276:8:15","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":5245,"nodeType":"StructuredDocumentation","src":"291:68:15","text":" @dev Emitted when the implementation is upgraded."},"eventSelector":"bc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","id":5249,"name":"Upgraded","nameLocation":"370:8:15","nodeType":"EventDefinition","parameters":{"id":5248,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5247,"indexed":true,"mutability":"mutable","name":"implementation","nameLocation":"395:14:15","nodeType":"VariableDeclaration","scope":5249,"src":"379:30:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5246,"name":"address","nodeType":"ElementaryTypeName","src":"379:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"378:32:15"},"src":"364:47:15"},{"anonymous":false,"documentation":{"id":5250,"nodeType":"StructuredDocumentation","src":"417:67:15","text":" @dev Emitted when the admin account has changed."},"eventSelector":"7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f","id":5256,"name":"AdminChanged","nameLocation":"495:12:15","nodeType":"EventDefinition","parameters":{"id":5255,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5252,"indexed":false,"mutability":"mutable","name":"previousAdmin","nameLocation":"516:13:15","nodeType":"VariableDeclaration","scope":5256,"src":"508:21:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5251,"name":"address","nodeType":"ElementaryTypeName","src":"508:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5254,"indexed":false,"mutability":"mutable","name":"newAdmin","nameLocation":"539:8:15","nodeType":"VariableDeclaration","scope":5256,"src":"531:16:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5253,"name":"address","nodeType":"ElementaryTypeName","src":"531:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"507:41:15"},"src":"489:60:15"},{"anonymous":false,"documentation":{"id":5257,"nodeType":"StructuredDocumentation","src":"555:59:15","text":" @dev Emitted when the beacon is changed."},"eventSelector":"1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e","id":5261,"name":"BeaconUpgraded","nameLocation":"625:14:15","nodeType":"EventDefinition","parameters":{"id":5260,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5259,"indexed":true,"mutability":"mutable","name":"beacon","nameLocation":"656:6:15","nodeType":"VariableDeclaration","scope":5261,"src":"640:22:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5258,"name":"address","nodeType":"ElementaryTypeName","src":"640:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"639:24:15"},"src":"619:45:15"}],"scope":5263,"src":"266:400:15","usedErrors":[]}],"src":"107:560:15"},"id":15},"@openzeppelin/contracts/interfaces/draft-IERC1822.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/interfaces/draft-IERC1822.sol","exportedSymbols":{"IERC1822Proxiable":[5272]},"id":5273,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":5264,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"113:23:16"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC1822Proxiable","contractDependencies":[],"contractKind":"interface","documentation":{"id":5265,"nodeType":"StructuredDocumentation","src":"138:203:16","text":" @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\n proxy whose upgrades are fully controlled by the current implementation."},"fullyImplemented":false,"id":5272,"linearizedBaseContracts":[5272],"name":"IERC1822Proxiable","nameLocation":"352:17:16","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":5266,"nodeType":"StructuredDocumentation","src":"376:438:16","text":" @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\n address.\n IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\n bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\n function revert if invoked through a proxy."},"functionSelector":"52d1902d","id":5271,"implemented":false,"kind":"function","modifiers":[],"name":"proxiableUUID","nameLocation":"828:13:16","nodeType":"FunctionDefinition","parameters":{"id":5267,"nodeType":"ParameterList","parameters":[],"src":"841:2:16"},"returnParameters":{"id":5270,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5269,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5271,"src":"867:7:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5268,"name":"bytes32","nodeType":"ElementaryTypeName","src":"867:7:16","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"866:9:16"},"scope":5272,"src":"819:57:16","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":5273,"src":"342:536:16","usedErrors":[]}],"src":"113:766:16"},"id":16},"@openzeppelin/contracts/proxy/Clones.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/proxy/Clones.sol","exportedSymbols":{"Clones":[5352]},"id":5353,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":5274,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"100:23:17"},{"abstract":false,"baseContracts":[],"canonicalName":"Clones","contractDependencies":[],"contractKind":"library","documentation":{"id":5275,"nodeType":"StructuredDocumentation","src":"125:629:17","text":" @dev https://eips.ethereum.org/EIPS/eip-1167[EIP 1167] is a standard for\n deploying minimal proxy contracts, also known as \"clones\".\n > To simply and cheaply clone contract functionality in an immutable way, this standard specifies\n > a minimal bytecode implementation that delegates all calls to a known, fixed address.\n The library includes functions to deploy a proxy using either `create` (traditional deployment) or `create2`\n (salted deterministic deployment). It also includes functions to predict the addresses of clones deployed using the\n deterministic method.\n _Available since v3.4._"},"fullyImplemented":true,"id":5352,"linearizedBaseContracts":[5352],"name":"Clones","nameLocation":"763:6:17","nodeType":"ContractDefinition","nodes":[{"body":{"id":5294,"nodeType":"Block","src":"1048:684:17","statements":[{"AST":{"nodeType":"YulBlock","src":"1110:549:17","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1315:4:17","type":"","value":"0x00"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1328:4:17","type":"","value":"0xe8"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1338:4:17","type":"","value":"0x60"},{"name":"implementation","nodeType":"YulIdentifier","src":"1344:14:17"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1334:3:17"},"nodeType":"YulFunctionCall","src":"1334:25:17"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"1324:3:17"},"nodeType":"YulFunctionCall","src":"1324:36:17"},{"kind":"number","nodeType":"YulLiteral","src":"1362:48:17","type":"","value":"0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"1321:2:17"},"nodeType":"YulFunctionCall","src":"1321:90:17"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1308:6:17"},"nodeType":"YulFunctionCall","src":"1308:104:17"},"nodeType":"YulExpressionStatement","src":"1308:104:17"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1533:4:17","type":"","value":"0x20"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1546:4:17","type":"","value":"0x78"},{"name":"implementation","nodeType":"YulIdentifier","src":"1552:14:17"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1542:3:17"},"nodeType":"YulFunctionCall","src":"1542:25:17"},{"kind":"number","nodeType":"YulLiteral","src":"1569:32:17","type":"","value":"0x5af43d82803e903d91602b57fd5bf3"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"1539:2:17"},"nodeType":"YulFunctionCall","src":"1539:63:17"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1526:6:17"},"nodeType":"YulFunctionCall","src":"1526:77:17"},"nodeType":"YulExpressionStatement","src":"1526:77:17"},{"nodeType":"YulAssignment","src":"1616:33:17","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1635:1:17","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1638:4:17","type":"","value":"0x09"},{"kind":"number","nodeType":"YulLiteral","src":"1644:4:17","type":"","value":"0x37"}],"functionName":{"name":"create","nodeType":"YulIdentifier","src":"1628:6:17"},"nodeType":"YulFunctionCall","src":"1628:21:17"},"variableNames":[{"name":"instance","nodeType":"YulIdentifier","src":"1616:8:17"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"london","externalReferences":[{"declaration":5278,"isOffset":false,"isSlot":false,"src":"1344:14:17","valueSize":1},{"declaration":5278,"isOffset":false,"isSlot":false,"src":"1552:14:17","valueSize":1},{"declaration":5281,"isOffset":false,"isSlot":false,"src":"1616:8:17","valueSize":1}],"id":5283,"nodeType":"InlineAssembly","src":"1101:558:17"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":5290,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5285,"name":"instance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5281,"src":"1676:8:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":5288,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1696:1:17","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":5287,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1688:7:17","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5286,"name":"address","nodeType":"ElementaryTypeName","src":"1688:7:17","typeDescriptions":{}}},"id":5289,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1688:10:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1676:22:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"455243313136373a20637265617465206661696c6564","id":5291,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1700:24:17","typeDescriptions":{"typeIdentifier":"t_stringliteral_68ca40b61460257f14e69f48b1a4dbc812e9afc6932f127ef8084544457b3335","typeString":"literal_string \"ERC1167: create failed\""},"value":"ERC1167: create failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_68ca40b61460257f14e69f48b1a4dbc812e9afc6932f127ef8084544457b3335","typeString":"literal_string \"ERC1167: create failed\""}],"id":5284,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"1668:7:17","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":5292,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1668:57:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5293,"nodeType":"ExpressionStatement","src":"1668:57:17"}]},"documentation":{"id":5276,"nodeType":"StructuredDocumentation","src":"776:192:17","text":" @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`.\n This function uses the create opcode, which should never revert."},"id":5295,"implemented":true,"kind":"function","modifiers":[],"name":"clone","nameLocation":"982:5:17","nodeType":"FunctionDefinition","parameters":{"id":5279,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5278,"mutability":"mutable","name":"implementation","nameLocation":"996:14:17","nodeType":"VariableDeclaration","scope":5295,"src":"988:22:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5277,"name":"address","nodeType":"ElementaryTypeName","src":"988:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"987:24:17"},"returnParameters":{"id":5282,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5281,"mutability":"mutable","name":"instance","nameLocation":"1038:8:17","nodeType":"VariableDeclaration","scope":5295,"src":"1030:16:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5280,"name":"address","nodeType":"ElementaryTypeName","src":"1030:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1029:18:17"},"scope":5352,"src":"973:759:17","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":5316,"nodeType":"Block","src":"2209:692:17","statements":[{"AST":{"nodeType":"YulBlock","src":"2271:556:17","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2476:4:17","type":"","value":"0x00"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2489:4:17","type":"","value":"0xe8"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2499:4:17","type":"","value":"0x60"},{"name":"implementation","nodeType":"YulIdentifier","src":"2505:14:17"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2495:3:17"},"nodeType":"YulFunctionCall","src":"2495:25:17"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"2485:3:17"},"nodeType":"YulFunctionCall","src":"2485:36:17"},{"kind":"number","nodeType":"YulLiteral","src":"2523:48:17","type":"","value":"0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"2482:2:17"},"nodeType":"YulFunctionCall","src":"2482:90:17"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2469:6:17"},"nodeType":"YulFunctionCall","src":"2469:104:17"},"nodeType":"YulExpressionStatement","src":"2469:104:17"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2694:4:17","type":"","value":"0x20"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2707:4:17","type":"","value":"0x78"},{"name":"implementation","nodeType":"YulIdentifier","src":"2713:14:17"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2703:3:17"},"nodeType":"YulFunctionCall","src":"2703:25:17"},{"kind":"number","nodeType":"YulLiteral","src":"2730:32:17","type":"","value":"0x5af43d82803e903d91602b57fd5bf3"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"2700:2:17"},"nodeType":"YulFunctionCall","src":"2700:63:17"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2687:6:17"},"nodeType":"YulFunctionCall","src":"2687:77:17"},"nodeType":"YulExpressionStatement","src":"2687:77:17"},{"nodeType":"YulAssignment","src":"2777:40:17","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2797:1:17","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2800:4:17","type":"","value":"0x09"},{"kind":"number","nodeType":"YulLiteral","src":"2806:4:17","type":"","value":"0x37"},{"name":"salt","nodeType":"YulIdentifier","src":"2812:4:17"}],"functionName":{"name":"create2","nodeType":"YulIdentifier","src":"2789:7:17"},"nodeType":"YulFunctionCall","src":"2789:28:17"},"variableNames":[{"name":"instance","nodeType":"YulIdentifier","src":"2777:8:17"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"london","externalReferences":[{"declaration":5298,"isOffset":false,"isSlot":false,"src":"2505:14:17","valueSize":1},{"declaration":5298,"isOffset":false,"isSlot":false,"src":"2713:14:17","valueSize":1},{"declaration":5303,"isOffset":false,"isSlot":false,"src":"2777:8:17","valueSize":1},{"declaration":5300,"isOffset":false,"isSlot":false,"src":"2812:4:17","valueSize":1}],"id":5305,"nodeType":"InlineAssembly","src":"2262:565:17"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":5312,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5307,"name":"instance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5303,"src":"2844:8:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":5310,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2864:1:17","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":5309,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2856:7:17","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5308,"name":"address","nodeType":"ElementaryTypeName","src":"2856:7:17","typeDescriptions":{}}},"id":5311,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2856:10:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2844:22:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"455243313136373a2063726561746532206661696c6564","id":5313,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2868:25:17","typeDescriptions":{"typeIdentifier":"t_stringliteral_4ec050e530ce66e7658278ab7a4e4a2f19225159c48fc52eb249bd268e755d73","typeString":"literal_string \"ERC1167: create2 failed\""},"value":"ERC1167: create2 failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_4ec050e530ce66e7658278ab7a4e4a2f19225159c48fc52eb249bd268e755d73","typeString":"literal_string \"ERC1167: create2 failed\""}],"id":5306,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"2836:7:17","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":5314,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2836:58:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5315,"nodeType":"ExpressionStatement","src":"2836:58:17"}]},"documentation":{"id":5296,"nodeType":"StructuredDocumentation","src":"1738:364:17","text":" @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`.\n This function uses the create2 opcode and a `salt` to deterministically deploy\n the clone. Using the same `implementation` and `salt` multiple time will revert, since\n the clones cannot be deployed twice at the same address."},"id":5317,"implemented":true,"kind":"function","modifiers":[],"name":"cloneDeterministic","nameLocation":"2116:18:17","nodeType":"FunctionDefinition","parameters":{"id":5301,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5298,"mutability":"mutable","name":"implementation","nameLocation":"2143:14:17","nodeType":"VariableDeclaration","scope":5317,"src":"2135:22:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5297,"name":"address","nodeType":"ElementaryTypeName","src":"2135:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5300,"mutability":"mutable","name":"salt","nameLocation":"2167:4:17","nodeType":"VariableDeclaration","scope":5317,"src":"2159:12:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5299,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2159:7:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2134:38:17"},"returnParameters":{"id":5304,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5303,"mutability":"mutable","name":"instance","nameLocation":"2199:8:17","nodeType":"VariableDeclaration","scope":5317,"src":"2191:16:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5302,"name":"address","nodeType":"ElementaryTypeName","src":"2191:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2190:18:17"},"scope":5352,"src":"2107:794:17","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":5330,"nodeType":"Block","src":"3176:515:17","statements":[{"AST":{"nodeType":"YulBlock","src":"3238:447:17","statements":[{"nodeType":"YulVariableDeclaration","src":"3252:22:17","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3269:4:17","type":"","value":"0x40"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3263:5:17"},"nodeType":"YulFunctionCall","src":"3263:11:17"},"variables":[{"name":"ptr","nodeType":"YulTypedName","src":"3256:3:17","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"3298:3:17"},{"kind":"number","nodeType":"YulLiteral","src":"3303:4:17","type":"","value":"0x38"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3294:3:17"},"nodeType":"YulFunctionCall","src":"3294:14:17"},{"name":"deployer","nodeType":"YulIdentifier","src":"3310:8:17"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3287:6:17"},"nodeType":"YulFunctionCall","src":"3287:32:17"},"nodeType":"YulExpressionStatement","src":"3287:32:17"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"3343:3:17"},{"kind":"number","nodeType":"YulLiteral","src":"3348:4:17","type":"","value":"0x24"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3339:3:17"},"nodeType":"YulFunctionCall","src":"3339:14:17"},{"kind":"number","nodeType":"YulLiteral","src":"3355:34:17","type":"","value":"0x5af43d82803e903d91602b57fd5bf3ff"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3332:6:17"},"nodeType":"YulFunctionCall","src":"3332:58:17"},"nodeType":"YulExpressionStatement","src":"3332:58:17"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"3414:3:17"},{"kind":"number","nodeType":"YulLiteral","src":"3419:4:17","type":"","value":"0x14"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3410:3:17"},"nodeType":"YulFunctionCall","src":"3410:14:17"},{"name":"implementation","nodeType":"YulIdentifier","src":"3426:14:17"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3403:6:17"},"nodeType":"YulFunctionCall","src":"3403:38:17"},"nodeType":"YulExpressionStatement","src":"3403:38:17"},{"expression":{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"3461:3:17"},{"kind":"number","nodeType":"YulLiteral","src":"3466:42:17","type":"","value":"0x3d602d80600a3d3981f3363d3d373d3d3d363d73"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3454:6:17"},"nodeType":"YulFunctionCall","src":"3454:55:17"},"nodeType":"YulExpressionStatement","src":"3454:55:17"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"3533:3:17"},{"kind":"number","nodeType":"YulLiteral","src":"3538:4:17","type":"","value":"0x58"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3529:3:17"},"nodeType":"YulFunctionCall","src":"3529:14:17"},{"name":"salt","nodeType":"YulIdentifier","src":"3545:4:17"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3522:6:17"},"nodeType":"YulFunctionCall","src":"3522:28:17"},"nodeType":"YulExpressionStatement","src":"3522:28:17"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"3574:3:17"},{"kind":"number","nodeType":"YulLiteral","src":"3579:4:17","type":"","value":"0x78"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3570:3:17"},"nodeType":"YulFunctionCall","src":"3570:14:17"},{"arguments":[{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"3600:3:17"},{"kind":"number","nodeType":"YulLiteral","src":"3605:4:17","type":"","value":"0x0c"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3596:3:17"},"nodeType":"YulFunctionCall","src":"3596:14:17"},{"kind":"number","nodeType":"YulLiteral","src":"3612:4:17","type":"","value":"0x37"}],"functionName":{"name":"keccak256","nodeType":"YulIdentifier","src":"3586:9:17"},"nodeType":"YulFunctionCall","src":"3586:31:17"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3563:6:17"},"nodeType":"YulFunctionCall","src":"3563:55:17"},"nodeType":"YulExpressionStatement","src":"3563:55:17"},{"nodeType":"YulAssignment","src":"3631:44:17","value":{"arguments":[{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"3658:3:17"},{"kind":"number","nodeType":"YulLiteral","src":"3663:4:17","type":"","value":"0x43"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3654:3:17"},"nodeType":"YulFunctionCall","src":"3654:14:17"},{"kind":"number","nodeType":"YulLiteral","src":"3670:4:17","type":"","value":"0x55"}],"functionName":{"name":"keccak256","nodeType":"YulIdentifier","src":"3644:9:17"},"nodeType":"YulFunctionCall","src":"3644:31:17"},"variableNames":[{"name":"predicted","nodeType":"YulIdentifier","src":"3631:9:17"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"london","externalReferences":[{"declaration":5324,"isOffset":false,"isSlot":false,"src":"3310:8:17","valueSize":1},{"declaration":5320,"isOffset":false,"isSlot":false,"src":"3426:14:17","valueSize":1},{"declaration":5327,"isOffset":false,"isSlot":false,"src":"3631:9:17","valueSize":1},{"declaration":5322,"isOffset":false,"isSlot":false,"src":"3545:4:17","valueSize":1}],"id":5329,"nodeType":"InlineAssembly","src":"3229:456:17"}]},"documentation":{"id":5318,"nodeType":"StructuredDocumentation","src":"2907:99:17","text":" @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}."},"id":5331,"implemented":true,"kind":"function","modifiers":[],"name":"predictDeterministicAddress","nameLocation":"3020:27:17","nodeType":"FunctionDefinition","parameters":{"id":5325,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5320,"mutability":"mutable","name":"implementation","nameLocation":"3065:14:17","nodeType":"VariableDeclaration","scope":5331,"src":"3057:22:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5319,"name":"address","nodeType":"ElementaryTypeName","src":"3057:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5322,"mutability":"mutable","name":"salt","nameLocation":"3097:4:17","nodeType":"VariableDeclaration","scope":5331,"src":"3089:12:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5321,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3089:7:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":5324,"mutability":"mutable","name":"deployer","nameLocation":"3119:8:17","nodeType":"VariableDeclaration","scope":5331,"src":"3111:16:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5323,"name":"address","nodeType":"ElementaryTypeName","src":"3111:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3047:86:17"},"returnParameters":{"id":5328,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5327,"mutability":"mutable","name":"predicted","nameLocation":"3165:9:17","nodeType":"VariableDeclaration","scope":5331,"src":"3157:17:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5326,"name":"address","nodeType":"ElementaryTypeName","src":"3157:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3156:19:17"},"scope":5352,"src":"3011:680:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5350,"nodeType":"Block","src":"3940:88:17","statements":[{"expression":{"arguments":[{"id":5342,"name":"implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5334,"src":"3985:14:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5343,"name":"salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5336,"src":"4001:4:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[{"id":5346,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967268,"src":"4015:4:17","typeDescriptions":{"typeIdentifier":"t_contract$_Clones_$5352","typeString":"library Clones"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Clones_$5352","typeString":"library Clones"}],"id":5345,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4007:7:17","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5344,"name":"address","nodeType":"ElementaryTypeName","src":"4007:7:17","typeDescriptions":{}}},"id":5347,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4007:13:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":5341,"name":"predictDeterministicAddress","nodeType":"Identifier","overloadedDeclarations":[5331,5351],"referencedDeclaration":5331,"src":"3957:27:17","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_bytes32_$_t_address_$returns$_t_address_$","typeString":"function (address,bytes32,address) pure returns (address)"}},"id":5348,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3957:64:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":5340,"id":5349,"nodeType":"Return","src":"3950:71:17"}]},"documentation":{"id":5332,"nodeType":"StructuredDocumentation","src":"3697:99:17","text":" @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}."},"id":5351,"implemented":true,"kind":"function","modifiers":[],"name":"predictDeterministicAddress","nameLocation":"3810:27:17","nodeType":"FunctionDefinition","parameters":{"id":5337,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5334,"mutability":"mutable","name":"implementation","nameLocation":"3855:14:17","nodeType":"VariableDeclaration","scope":5351,"src":"3847:22:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5333,"name":"address","nodeType":"ElementaryTypeName","src":"3847:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5336,"mutability":"mutable","name":"salt","nameLocation":"3887:4:17","nodeType":"VariableDeclaration","scope":5351,"src":"3879:12:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5335,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3879:7:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3837:60:17"},"returnParameters":{"id":5340,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5339,"mutability":"mutable","name":"predicted","nameLocation":"3929:9:17","nodeType":"VariableDeclaration","scope":5351,"src":"3921:17:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5338,"name":"address","nodeType":"ElementaryTypeName","src":"3921:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3920:19:17"},"scope":5352,"src":"3801:227:17","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":5353,"src":"755:3275:17","usedErrors":[]}],"src":"100:3931:17"},"id":17},"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol","exportedSymbols":{"Address":[9264],"ERC1967Proxy":[5389],"ERC1967Upgrade":[5693],"IBeacon":[5755],"IERC1822Proxiable":[5272],"IERC1967":[5262],"Proxy":[5745],"StorageSlot":[9478]},"id":5390,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":5354,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"114:23:18"},{"absolutePath":"@openzeppelin/contracts/proxy/Proxy.sol","file":"../Proxy.sol","id":5355,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5390,"sourceUnit":5746,"src":"139:22:18","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol","file":"./ERC1967Upgrade.sol","id":5356,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5390,"sourceUnit":5694,"src":"162:30:18","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":5358,"name":"Proxy","nameLocations":["592:5:18"],"nodeType":"IdentifierPath","referencedDeclaration":5745,"src":"592:5:18"},"id":5359,"nodeType":"InheritanceSpecifier","src":"592:5:18"},{"baseName":{"id":5360,"name":"ERC1967Upgrade","nameLocations":["599:14:18"],"nodeType":"IdentifierPath","referencedDeclaration":5693,"src":"599:14:18"},"id":5361,"nodeType":"InheritanceSpecifier","src":"599:14:18"}],"canonicalName":"ERC1967Proxy","contractDependencies":[],"contractKind":"contract","documentation":{"id":5357,"nodeType":"StructuredDocumentation","src":"194:372:18","text":" @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an\n implementation address that can be changed. This address is stored in storage in the location specified by\n https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the\n implementation behind the proxy."},"fullyImplemented":true,"id":5389,"linearizedBaseContracts":[5389,5693,5262,5745],"name":"ERC1967Proxy","nameLocation":"576:12:18","nodeType":"ContractDefinition","nodes":[{"body":{"id":5375,"nodeType":"Block","src":"1014:56:18","statements":[{"expression":{"arguments":[{"id":5370,"name":"_logic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5364,"src":"1042:6:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5371,"name":"_data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5366,"src":"1050:5:18","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"66616c7365","id":5372,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1057:5:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":5369,"name":"_upgradeToAndCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5488,"src":"1024:17:18","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_bool_$returns$__$","typeString":"function (address,bytes memory,bool)"}},"id":5373,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1024:39:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5374,"nodeType":"ExpressionStatement","src":"1024:39:18"}]},"documentation":{"id":5362,"nodeType":"StructuredDocumentation","src":"620:333:18","text":" @dev Initializes the upgradeable proxy with an initial implementation specified by `_logic`.\n If `_data` is nonempty, it's used as data in a delegate call to `_logic`. This will typically be an encoded\n function call, and allows initializing the storage of the proxy like a Solidity constructor."},"id":5376,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":5367,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5364,"mutability":"mutable","name":"_logic","nameLocation":"978:6:18","nodeType":"VariableDeclaration","scope":5376,"src":"970:14:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5363,"name":"address","nodeType":"ElementaryTypeName","src":"970:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5366,"mutability":"mutable","name":"_data","nameLocation":"999:5:18","nodeType":"VariableDeclaration","scope":5376,"src":"986:18:18","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5365,"name":"bytes","nodeType":"ElementaryTypeName","src":"986:5:18","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"969:36:18"},"returnParameters":{"id":5368,"nodeType":"ParameterList","parameters":[],"src":"1014:0:18"},"scope":5389,"src":"958:112:18","stateMutability":"payable","virtual":false,"visibility":"public"},{"baseFunctions":[5710],"body":{"id":5387,"nodeType":"Block","src":"1229:59:18","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":5383,"name":"ERC1967Upgrade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5693,"src":"1246:14:18","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC1967Upgrade_$5693_$","typeString":"type(contract ERC1967Upgrade)"}},"id":5384,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1261:18:18","memberName":"_getImplementation","nodeType":"MemberAccess","referencedDeclaration":5419,"src":"1246:33:18","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":5385,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1246:35:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":5382,"id":5386,"nodeType":"Return","src":"1239:42:18"}]},"documentation":{"id":5377,"nodeType":"StructuredDocumentation","src":"1076:67:18","text":" @dev Returns the current implementation address."},"id":5388,"implemented":true,"kind":"function","modifiers":[],"name":"_implementation","nameLocation":"1157:15:18","nodeType":"FunctionDefinition","overrides":{"id":5379,"nodeType":"OverrideSpecifier","overrides":[],"src":"1197:8:18"},"parameters":{"id":5378,"nodeType":"ParameterList","parameters":[],"src":"1172:2:18"},"returnParameters":{"id":5382,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5381,"mutability":"mutable","name":"impl","nameLocation":"1223:4:18","nodeType":"VariableDeclaration","scope":5388,"src":"1215:12:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5380,"name":"address","nodeType":"ElementaryTypeName","src":"1215:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1214:14:18"},"scope":5389,"src":"1148:140:18","stateMutability":"view","virtual":true,"visibility":"internal"}],"scope":5390,"src":"567:723:18","usedErrors":[]}],"src":"114:1177:18"},"id":18},"@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol","exportedSymbols":{"Address":[9264],"ERC1967Upgrade":[5693],"IBeacon":[5755],"IERC1822Proxiable":[5272],"IERC1967":[5262],"StorageSlot":[9478]},"id":5694,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":5391,"literals":["solidity","^","0.8",".2"],"nodeType":"PragmaDirective","src":"116:23:19"},{"absolutePath":"@openzeppelin/contracts/proxy/beacon/IBeacon.sol","file":"../beacon/IBeacon.sol","id":5392,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5694,"sourceUnit":5756,"src":"141:31:19","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/interfaces/IERC1967.sol","file":"../../interfaces/IERC1967.sol","id":5393,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5694,"sourceUnit":5263,"src":"173:39:19","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/interfaces/draft-IERC1822.sol","file":"../../interfaces/draft-IERC1822.sol","id":5394,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5694,"sourceUnit":5273,"src":"213:45:19","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Address.sol","file":"../../utils/Address.sol","id":5395,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5694,"sourceUnit":9265,"src":"259:33:19","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/StorageSlot.sol","file":"../../utils/StorageSlot.sol","id":5396,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5694,"sourceUnit":9479,"src":"293:37:19","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":5398,"name":"IERC1967","nameLocations":["553:8:19"],"nodeType":"IdentifierPath","referencedDeclaration":5262,"src":"553:8:19"},"id":5399,"nodeType":"InheritanceSpecifier","src":"553:8:19"}],"canonicalName":"ERC1967Upgrade","contractDependencies":[],"contractKind":"contract","documentation":{"id":5397,"nodeType":"StructuredDocumentation","src":"332:184:19","text":" @dev This abstract contract provides getters and event emitting update functions for\n https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\n _Available since v4.1._"},"fullyImplemented":true,"id":5693,"linearizedBaseContracts":[5693,5262],"name":"ERC1967Upgrade","nameLocation":"535:14:19","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":5402,"mutability":"constant","name":"_ROLLBACK_SLOT","nameLocation":"672:14:19","nodeType":"VariableDeclaration","scope":5693,"src":"647:108:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5400,"name":"bytes32","nodeType":"ElementaryTypeName","src":"647:7:19","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307834393130666466613136666564333236306564306537313437663763633664613131613630323038623562393430366431326136333536313466666439313433","id":5401,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"689:66:19","typeDescriptions":{"typeIdentifier":"t_rational_33048860383849004559742813297059419343339852917517107368639918720169455489347_by_1","typeString":"int_const 3304...(69 digits omitted)...9347"},"value":"0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143"},"visibility":"private"},{"constant":true,"documentation":{"id":5403,"nodeType":"StructuredDocumentation","src":"762:214:19","text":" @dev Storage slot with the address of the current implementation.\n This is the keccak-256 hash of \"eip1967.proxy.implementation\" subtracted by 1, and is\n validated in the constructor."},"id":5406,"mutability":"constant","name":"_IMPLEMENTATION_SLOT","nameLocation":"1007:20:19","nodeType":"VariableDeclaration","scope":5693,"src":"981:115:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5404,"name":"bytes32","nodeType":"ElementaryTypeName","src":"981:7:19","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307833363038393461313362613161333231303636376338323834393264623938646361336532303736636333373335613932306133636135303564333832626263","id":5405,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1030:66:19","typeDescriptions":{"typeIdentifier":"t_rational_24440054405305269366569402256811496959409073762505157381672968839269610695612_by_1","typeString":"int_const 2444...(69 digits omitted)...5612"},"value":"0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc"},"visibility":"internal"},{"body":{"id":5418,"nodeType":"Block","src":"1237:78:19","statements":[{"expression":{"expression":{"arguments":[{"id":5414,"name":"_IMPLEMENTATION_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5406,"src":"1281:20:19","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":5412,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9478,"src":"1254:11:19","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$9478_$","typeString":"type(library StorageSlot)"}},"id":5413,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1266:14:19","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":9400,"src":"1254:26:19","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$9374_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"}},"id":5415,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1254:48:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$9374_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"id":5416,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1303:5:19","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":9373,"src":"1254:54:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":5411,"id":5417,"nodeType":"Return","src":"1247:61:19"}]},"documentation":{"id":5407,"nodeType":"StructuredDocumentation","src":"1103:67:19","text":" @dev Returns the current implementation address."},"id":5419,"implemented":true,"kind":"function","modifiers":[],"name":"_getImplementation","nameLocation":"1184:18:19","nodeType":"FunctionDefinition","parameters":{"id":5408,"nodeType":"ParameterList","parameters":[],"src":"1202:2:19"},"returnParameters":{"id":5411,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5410,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5419,"src":"1228:7:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5409,"name":"address","nodeType":"ElementaryTypeName","src":"1228:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1227:9:19"},"scope":5693,"src":"1175:140:19","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":5442,"nodeType":"Block","src":"1469:196:19","statements":[{"expression":{"arguments":[{"arguments":[{"id":5428,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5422,"src":"1506:17:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":5426,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9264,"src":"1487:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Address_$9264_$","typeString":"type(library Address)"}},"id":5427,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1495:10:19","memberName":"isContract","nodeType":"MemberAccess","referencedDeclaration":8952,"src":"1487:18:19","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":5429,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1487:37:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"455243313936373a206e657720696d706c656d656e746174696f6e206973206e6f74206120636f6e7472616374","id":5430,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1526:47:19","typeDescriptions":{"typeIdentifier":"t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65","typeString":"literal_string \"ERC1967: new implementation is not a contract\""},"value":"ERC1967: new implementation is not a contract"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65","typeString":"literal_string \"ERC1967: new implementation is not a contract\""}],"id":5425,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"1479:7:19","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":5431,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1479:95:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5432,"nodeType":"ExpressionStatement","src":"1479:95:19"},{"expression":{"id":5440,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[{"id":5436,"name":"_IMPLEMENTATION_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5406,"src":"1611:20:19","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":5433,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9478,"src":"1584:11:19","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$9478_$","typeString":"type(library StorageSlot)"}},"id":5435,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1596:14:19","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":9400,"src":"1584:26:19","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$9374_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"}},"id":5437,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1584:48:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$9374_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"id":5438,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1633:5:19","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":9373,"src":"1584:54:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":5439,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5422,"src":"1641:17:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1584:74:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":5441,"nodeType":"ExpressionStatement","src":"1584:74:19"}]},"documentation":{"id":5420,"nodeType":"StructuredDocumentation","src":"1321:80:19","text":" @dev Stores a new address in the EIP1967 implementation slot."},"id":5443,"implemented":true,"kind":"function","modifiers":[],"name":"_setImplementation","nameLocation":"1415:18:19","nodeType":"FunctionDefinition","parameters":{"id":5423,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5422,"mutability":"mutable","name":"newImplementation","nameLocation":"1442:17:19","nodeType":"VariableDeclaration","scope":5443,"src":"1434:25:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5421,"name":"address","nodeType":"ElementaryTypeName","src":"1434:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1433:27:19"},"returnParameters":{"id":5424,"nodeType":"ParameterList","parameters":[],"src":"1469:0:19"},"scope":5693,"src":"1406:259:19","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":5457,"nodeType":"Block","src":"1827:96:19","statements":[{"expression":{"arguments":[{"id":5450,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5446,"src":"1856:17:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":5449,"name":"_setImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5443,"src":"1837:18:19","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":5451,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1837:37:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5452,"nodeType":"ExpressionStatement","src":"1837:37:19"},{"eventCall":{"arguments":[{"id":5454,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5446,"src":"1898:17:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":5453,"name":"Upgraded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5249,"src":"1889:8:19","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":5455,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1889:27:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5456,"nodeType":"EmitStatement","src":"1884:32:19"}]},"documentation":{"id":5444,"nodeType":"StructuredDocumentation","src":"1671:95:19","text":" @dev Perform implementation upgrade\n Emits an {Upgraded} event."},"id":5458,"implemented":true,"kind":"function","modifiers":[],"name":"_upgradeTo","nameLocation":"1780:10:19","nodeType":"FunctionDefinition","parameters":{"id":5447,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5446,"mutability":"mutable","name":"newImplementation","nameLocation":"1799:17:19","nodeType":"VariableDeclaration","scope":5458,"src":"1791:25:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5445,"name":"address","nodeType":"ElementaryTypeName","src":"1791:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1790:27:19"},"returnParameters":{"id":5448,"nodeType":"ParameterList","parameters":[],"src":"1827:0:19"},"scope":5693,"src":"1771:152:19","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":5487,"nodeType":"Block","src":"2155:167:19","statements":[{"expression":{"arguments":[{"id":5469,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5461,"src":"2176:17:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":5468,"name":"_upgradeTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5458,"src":"2165:10:19","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":5470,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2165:29:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5471,"nodeType":"ExpressionStatement","src":"2165:29:19"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":5477,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5475,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":5472,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5463,"src":"2208:4:19","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":5473,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2213:6:19","memberName":"length","nodeType":"MemberAccess","src":"2208:11:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":5474,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2222:1:19","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2208:15:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"id":5476,"name":"forceCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5465,"src":"2227:9:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2208:28:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5486,"nodeType":"IfStatement","src":"2204:112:19","trueBody":{"id":5485,"nodeType":"Block","src":"2238:78:19","statements":[{"expression":{"arguments":[{"id":5481,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5461,"src":"2281:17:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5482,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5463,"src":"2300:4:19","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":5478,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9264,"src":"2252:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Address_$9264_$","typeString":"type(library Address)"}},"id":5480,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2260:20:19","memberName":"functionDelegateCall","nodeType":"MemberAccess","referencedDeclaration":9151,"src":"2252:28:19","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory) returns (bytes memory)"}},"id":5483,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2252:53:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":5484,"nodeType":"ExpressionStatement","src":"2252:53:19"}]}}]},"documentation":{"id":5459,"nodeType":"StructuredDocumentation","src":"1929:123:19","text":" @dev Perform implementation upgrade with additional setup call.\n Emits an {Upgraded} event."},"id":5488,"implemented":true,"kind":"function","modifiers":[],"name":"_upgradeToAndCall","nameLocation":"2066:17:19","nodeType":"FunctionDefinition","parameters":{"id":5466,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5461,"mutability":"mutable","name":"newImplementation","nameLocation":"2092:17:19","nodeType":"VariableDeclaration","scope":5488,"src":"2084:25:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5460,"name":"address","nodeType":"ElementaryTypeName","src":"2084:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5463,"mutability":"mutable","name":"data","nameLocation":"2124:4:19","nodeType":"VariableDeclaration","scope":5488,"src":"2111:17:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5462,"name":"bytes","nodeType":"ElementaryTypeName","src":"2111:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":5465,"mutability":"mutable","name":"forceCall","nameLocation":"2135:9:19","nodeType":"VariableDeclaration","scope":5488,"src":"2130:14:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5464,"name":"bool","nodeType":"ElementaryTypeName","src":"2130:4:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2083:62:19"},"returnParameters":{"id":5467,"nodeType":"ParameterList","parameters":[],"src":"2155:0:19"},"scope":5693,"src":"2057:265:19","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":5540,"nodeType":"Block","src":"2596:820:19","statements":[{"condition":{"expression":{"arguments":[{"id":5500,"name":"_ROLLBACK_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5402,"src":"2937:14:19","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":5498,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9478,"src":"2910:11:19","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$9478_$","typeString":"type(library StorageSlot)"}},"id":5499,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2922:14:19","memberName":"getBooleanSlot","nodeType":"MemberAccess","referencedDeclaration":9411,"src":"2910:26:19","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_BooleanSlot_$9377_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.BooleanSlot storage pointer)"}},"id":5501,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2910:42:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_BooleanSlot_$9377_storage_ptr","typeString":"struct StorageSlot.BooleanSlot storage pointer"}},"id":5502,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2953:5:19","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":9376,"src":"2910:48:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":5538,"nodeType":"Block","src":"3028:382:19","statements":[{"clauses":[{"block":{"id":5523,"nodeType":"Block","src":"3122:115:19","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":5519,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5517,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5514,"src":"3148:4:19","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":5518,"name":"_IMPLEMENTATION_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5406,"src":"3156:20:19","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"3148:28:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"45524331393637557067726164653a20756e737570706f727465642070726f786961626c6555554944","id":5520,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3178:43:19","typeDescriptions":{"typeIdentifier":"t_stringliteral_76b6b6debfc5febf101145a79ecf0b0d2e89e397dfdab2bca99888370411152c","typeString":"literal_string \"ERC1967Upgrade: unsupported proxiableUUID\""},"value":"ERC1967Upgrade: unsupported proxiableUUID"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_76b6b6debfc5febf101145a79ecf0b0d2e89e397dfdab2bca99888370411152c","typeString":"literal_string \"ERC1967Upgrade: unsupported proxiableUUID\""}],"id":5516,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"3140:7:19","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":5521,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3140:82:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5522,"nodeType":"ExpressionStatement","src":"3140:82:19"}]},"errorName":"","id":5524,"nodeType":"TryCatchClause","parameters":{"id":5515,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5514,"mutability":"mutable","name":"slot","nameLocation":"3116:4:19","nodeType":"VariableDeclaration","scope":5524,"src":"3108:12:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5513,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3108:7:19","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3107:14:19"},"src":"3099:138:19"},{"block":{"id":5529,"nodeType":"Block","src":"3244:89:19","statements":[{"expression":{"arguments":[{"hexValue":"45524331393637557067726164653a206e657720696d706c656d656e746174696f6e206973206e6f742055555053","id":5526,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3269:48:19","typeDescriptions":{"typeIdentifier":"t_stringliteral_8e8e2fbcb586f700b5b14e2c4a650c8d83b9773c31c5fe8962070ea544e11f24","typeString":"literal_string \"ERC1967Upgrade: new implementation is not UUPS\""},"value":"ERC1967Upgrade: new implementation is not UUPS"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_8e8e2fbcb586f700b5b14e2c4a650c8d83b9773c31c5fe8962070ea544e11f24","typeString":"literal_string \"ERC1967Upgrade: new implementation is not UUPS\""}],"id":5525,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[4294967277,4294967277],"referencedDeclaration":4294967277,"src":"3262:6:19","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":5527,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3262:56:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5528,"nodeType":"ExpressionStatement","src":"3262:56:19"}]},"errorName":"","id":5530,"nodeType":"TryCatchClause","src":"3238:95:19"}],"externalCall":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":5509,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5491,"src":"3064:17:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":5508,"name":"IERC1822Proxiable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5272,"src":"3046:17:19","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC1822Proxiable_$5272_$","typeString":"type(contract IERC1822Proxiable)"}},"id":5510,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3046:36:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC1822Proxiable_$5272","typeString":"contract IERC1822Proxiable"}},"id":5511,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3083:13:19","memberName":"proxiableUUID","nodeType":"MemberAccess","referencedDeclaration":5271,"src":"3046:50:19","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_bytes32_$","typeString":"function () view external returns (bytes32)"}},"id":5512,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3046:52:19","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":5531,"nodeType":"TryStatement","src":"3042:291:19"},{"expression":{"arguments":[{"id":5533,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5491,"src":"3364:17:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5534,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5493,"src":"3383:4:19","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":5535,"name":"forceCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5495,"src":"3389:9:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":5532,"name":"_upgradeToAndCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5488,"src":"3346:17:19","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_bool_$returns$__$","typeString":"function (address,bytes memory,bool)"}},"id":5536,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3346:53:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5537,"nodeType":"ExpressionStatement","src":"3346:53:19"}]},"id":5539,"nodeType":"IfStatement","src":"2906:504:19","trueBody":{"id":5507,"nodeType":"Block","src":"2960:62:19","statements":[{"expression":{"arguments":[{"id":5504,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5491,"src":"2993:17:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":5503,"name":"_setImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5443,"src":"2974:18:19","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":5505,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2974:37:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5506,"nodeType":"ExpressionStatement","src":"2974:37:19"}]}}]},"documentation":{"id":5489,"nodeType":"StructuredDocumentation","src":"2328:161:19","text":" @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\n Emits an {Upgraded} event."},"id":5541,"implemented":true,"kind":"function","modifiers":[],"name":"_upgradeToAndCallUUPS","nameLocation":"2503:21:19","nodeType":"FunctionDefinition","parameters":{"id":5496,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5491,"mutability":"mutable","name":"newImplementation","nameLocation":"2533:17:19","nodeType":"VariableDeclaration","scope":5541,"src":"2525:25:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5490,"name":"address","nodeType":"ElementaryTypeName","src":"2525:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5493,"mutability":"mutable","name":"data","nameLocation":"2565:4:19","nodeType":"VariableDeclaration","scope":5541,"src":"2552:17:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5492,"name":"bytes","nodeType":"ElementaryTypeName","src":"2552:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":5495,"mutability":"mutable","name":"forceCall","nameLocation":"2576:9:19","nodeType":"VariableDeclaration","scope":5541,"src":"2571:14:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5494,"name":"bool","nodeType":"ElementaryTypeName","src":"2571:4:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2524:62:19"},"returnParameters":{"id":5497,"nodeType":"ParameterList","parameters":[],"src":"2596:0:19"},"scope":5693,"src":"2494:922:19","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"constant":true,"documentation":{"id":5542,"nodeType":"StructuredDocumentation","src":"3422:189:19","text":" @dev Storage slot with the admin of the contract.\n This is the keccak-256 hash of \"eip1967.proxy.admin\" subtracted by 1, and is\n validated in the constructor."},"id":5545,"mutability":"constant","name":"_ADMIN_SLOT","nameLocation":"3642:11:19","nodeType":"VariableDeclaration","scope":5693,"src":"3616:106:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5543,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3616:7:19","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307862353331323736383461353638623331373361653133623966386136303136653234336536336236653865653131373864366137313738353062356436313033","id":5544,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3656:66:19","typeDescriptions":{"typeIdentifier":"t_rational_81955473079516046949633743016697847541294818689821282749996681496272635257091_by_1","typeString":"int_const 8195...(69 digits omitted)...7091"},"value":"0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103"},"visibility":"internal"},{"body":{"id":5557,"nodeType":"Block","src":"3837:69:19","statements":[{"expression":{"expression":{"arguments":[{"id":5553,"name":"_ADMIN_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5545,"src":"3881:11:19","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":5551,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9478,"src":"3854:11:19","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$9478_$","typeString":"type(library StorageSlot)"}},"id":5552,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3866:14:19","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":9400,"src":"3854:26:19","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$9374_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"}},"id":5554,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3854:39:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$9374_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"id":5555,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3894:5:19","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":9373,"src":"3854:45:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":5550,"id":5556,"nodeType":"Return","src":"3847:52:19"}]},"documentation":{"id":5546,"nodeType":"StructuredDocumentation","src":"3729:50:19","text":" @dev Returns the current admin."},"id":5558,"implemented":true,"kind":"function","modifiers":[],"name":"_getAdmin","nameLocation":"3793:9:19","nodeType":"FunctionDefinition","parameters":{"id":5547,"nodeType":"ParameterList","parameters":[],"src":"3802:2:19"},"returnParameters":{"id":5550,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5549,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5558,"src":"3828:7:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5548,"name":"address","nodeType":"ElementaryTypeName","src":"3828:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3827:9:19"},"scope":5693,"src":"3784:122:19","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":5583,"nodeType":"Block","src":"4033:156:19","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":5570,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5565,"name":"newAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5561,"src":"4051:8:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":5568,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4071:1:19","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":5567,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4063:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5566,"name":"address","nodeType":"ElementaryTypeName","src":"4063:7:19","typeDescriptions":{}}},"id":5569,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4063:10:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4051:22:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"455243313936373a206e65772061646d696e20697320746865207a65726f2061646472657373","id":5571,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4075:40:19","typeDescriptions":{"typeIdentifier":"t_stringliteral_3820e16891102c1360a787e6e648431097d92537f969d458f5c94b56f8318be5","typeString":"literal_string \"ERC1967: new admin is the zero address\""},"value":"ERC1967: new admin is the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_3820e16891102c1360a787e6e648431097d92537f969d458f5c94b56f8318be5","typeString":"literal_string \"ERC1967: new admin is the zero address\""}],"id":5564,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"4043:7:19","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":5572,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4043:73:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5573,"nodeType":"ExpressionStatement","src":"4043:73:19"},{"expression":{"id":5581,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[{"id":5577,"name":"_ADMIN_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5545,"src":"4153:11:19","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":5574,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9478,"src":"4126:11:19","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$9478_$","typeString":"type(library StorageSlot)"}},"id":5576,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4138:14:19","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":9400,"src":"4126:26:19","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$9374_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"}},"id":5578,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4126:39:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$9374_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"id":5579,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4166:5:19","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":9373,"src":"4126:45:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":5580,"name":"newAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5561,"src":"4174:8:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4126:56:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":5582,"nodeType":"ExpressionStatement","src":"4126:56:19"}]},"documentation":{"id":5559,"nodeType":"StructuredDocumentation","src":"3912:71:19","text":" @dev Stores a new address in the EIP1967 admin slot."},"id":5584,"implemented":true,"kind":"function","modifiers":[],"name":"_setAdmin","nameLocation":"3997:9:19","nodeType":"FunctionDefinition","parameters":{"id":5562,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5561,"mutability":"mutable","name":"newAdmin","nameLocation":"4015:8:19","nodeType":"VariableDeclaration","scope":5584,"src":"4007:16:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5560,"name":"address","nodeType":"ElementaryTypeName","src":"4007:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4006:18:19"},"returnParameters":{"id":5563,"nodeType":"ParameterList","parameters":[],"src":"4033:0:19"},"scope":5693,"src":"3988:201:19","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":5600,"nodeType":"Block","src":"4349:86:19","statements":[{"eventCall":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":5591,"name":"_getAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5558,"src":"4377:9:19","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":5592,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4377:11:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5593,"name":"newAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5587,"src":"4390:8:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":5590,"name":"AdminChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5256,"src":"4364:12:19","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":5594,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4364:35:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5595,"nodeType":"EmitStatement","src":"4359:40:19"},{"expression":{"arguments":[{"id":5597,"name":"newAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5587,"src":"4419:8:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":5596,"name":"_setAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5584,"src":"4409:9:19","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":5598,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4409:19:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5599,"nodeType":"ExpressionStatement","src":"4409:19:19"}]},"documentation":{"id":5585,"nodeType":"StructuredDocumentation","src":"4195:100:19","text":" @dev Changes the admin of the proxy.\n Emits an {AdminChanged} event."},"id":5601,"implemented":true,"kind":"function","modifiers":[],"name":"_changeAdmin","nameLocation":"4309:12:19","nodeType":"FunctionDefinition","parameters":{"id":5588,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5587,"mutability":"mutable","name":"newAdmin","nameLocation":"4330:8:19","nodeType":"VariableDeclaration","scope":5601,"src":"4322:16:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5586,"name":"address","nodeType":"ElementaryTypeName","src":"4322:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4321:18:19"},"returnParameters":{"id":5589,"nodeType":"ParameterList","parameters":[],"src":"4349:0:19"},"scope":5693,"src":"4300:135:19","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"constant":true,"documentation":{"id":5602,"nodeType":"StructuredDocumentation","src":"4441:232:19","text":" @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\n This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor."},"id":5605,"mutability":"constant","name":"_BEACON_SLOT","nameLocation":"4704:12:19","nodeType":"VariableDeclaration","scope":5693,"src":"4678:107:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5603,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4678:7:19","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307861336630616437346535343233616562666438306433656634333436353738333335613961373261656165653539666636636233353832623335313333643530","id":5604,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4719:66:19","typeDescriptions":{"typeIdentifier":"t_rational_74152234768234802001998023604048924213078445070507226371336425913862612794704_by_1","typeString":"int_const 7415...(69 digits omitted)...4704"},"value":"0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50"},"visibility":"internal"},{"body":{"id":5617,"nodeType":"Block","src":"4902:70:19","statements":[{"expression":{"expression":{"arguments":[{"id":5613,"name":"_BEACON_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5605,"src":"4946:12:19","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":5611,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9478,"src":"4919:11:19","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$9478_$","typeString":"type(library StorageSlot)"}},"id":5612,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4931:14:19","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":9400,"src":"4919:26:19","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$9374_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"}},"id":5614,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4919:40:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$9374_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"id":5615,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4960:5:19","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":9373,"src":"4919:46:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":5610,"id":5616,"nodeType":"Return","src":"4912:53:19"}]},"documentation":{"id":5606,"nodeType":"StructuredDocumentation","src":"4792:51:19","text":" @dev Returns the current beacon."},"id":5618,"implemented":true,"kind":"function","modifiers":[],"name":"_getBeacon","nameLocation":"4857:10:19","nodeType":"FunctionDefinition","parameters":{"id":5607,"nodeType":"ParameterList","parameters":[],"src":"4867:2:19"},"returnParameters":{"id":5610,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5609,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5618,"src":"4893:7:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5608,"name":"address","nodeType":"ElementaryTypeName","src":"4893:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4892:9:19"},"scope":5693,"src":"4848:124:19","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":5653,"nodeType":"Block","src":"5101:324:19","statements":[{"expression":{"arguments":[{"arguments":[{"id":5627,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5621,"src":"5138:9:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":5625,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9264,"src":"5119:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Address_$9264_$","typeString":"type(library Address)"}},"id":5626,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5127:10:19","memberName":"isContract","nodeType":"MemberAccess","referencedDeclaration":8952,"src":"5119:18:19","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":5628,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5119:29:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"455243313936373a206e657720626561636f6e206973206e6f74206120636f6e7472616374","id":5629,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5150:39:19","typeDescriptions":{"typeIdentifier":"t_stringliteral_9589b7809634e4928033de18bb696e9af4ef71b703652af5245f2dbebf2f4470","typeString":"literal_string \"ERC1967: new beacon is not a contract\""},"value":"ERC1967: new beacon is not a contract"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9589b7809634e4928033de18bb696e9af4ef71b703652af5245f2dbebf2f4470","typeString":"literal_string \"ERC1967: new beacon is not a contract\""}],"id":5624,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"5111:7:19","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":5630,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5111:79:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5631,"nodeType":"ExpressionStatement","src":"5111:79:19"},{"expression":{"arguments":[{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":5636,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5621,"src":"5248:9:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":5635,"name":"IBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5755,"src":"5240:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBeacon_$5755_$","typeString":"type(contract IBeacon)"}},"id":5637,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5240:18:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBeacon_$5755","typeString":"contract IBeacon"}},"id":5638,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5259:14:19","memberName":"implementation","nodeType":"MemberAccess","referencedDeclaration":5754,"src":"5240:33:19","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":5639,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5240:35:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":5633,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9264,"src":"5221:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Address_$9264_$","typeString":"type(library Address)"}},"id":5634,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5229:10:19","memberName":"isContract","nodeType":"MemberAccess","referencedDeclaration":8952,"src":"5221:18:19","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":5640,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5221:55:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"455243313936373a20626561636f6e20696d706c656d656e746174696f6e206973206e6f74206120636f6e7472616374","id":5641,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5290:50:19","typeDescriptions":{"typeIdentifier":"t_stringliteral_f95fd1f5b5578816eb23f6ca0f2439b4b5e4094dc16e99c3b8e91603a83f93c8","typeString":"literal_string \"ERC1967: beacon implementation is not a contract\""},"value":"ERC1967: beacon implementation is not a contract"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_f95fd1f5b5578816eb23f6ca0f2439b4b5e4094dc16e99c3b8e91603a83f93c8","typeString":"literal_string \"ERC1967: beacon implementation is not a contract\""}],"id":5632,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"5200:7:19","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":5642,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5200:150:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5643,"nodeType":"ExpressionStatement","src":"5200:150:19"},{"expression":{"id":5651,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[{"id":5647,"name":"_BEACON_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5605,"src":"5387:12:19","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":5644,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9478,"src":"5360:11:19","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$9478_$","typeString":"type(library StorageSlot)"}},"id":5646,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5372:14:19","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":9400,"src":"5360:26:19","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$9374_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"}},"id":5648,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5360:40:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$9374_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"id":5649,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5401:5:19","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":9373,"src":"5360:46:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":5650,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5621,"src":"5409:9:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5360:58:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":5652,"nodeType":"ExpressionStatement","src":"5360:58:19"}]},"documentation":{"id":5619,"nodeType":"StructuredDocumentation","src":"4978:71:19","text":" @dev Stores a new beacon in the EIP1967 beacon slot."},"id":5654,"implemented":true,"kind":"function","modifiers":[],"name":"_setBeacon","nameLocation":"5063:10:19","nodeType":"FunctionDefinition","parameters":{"id":5622,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5621,"mutability":"mutable","name":"newBeacon","nameLocation":"5082:9:19","nodeType":"VariableDeclaration","scope":5654,"src":"5074:17:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5620,"name":"address","nodeType":"ElementaryTypeName","src":"5074:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5073:19:19"},"returnParameters":{"id":5623,"nodeType":"ParameterList","parameters":[],"src":"5101:0:19"},"scope":5693,"src":"5054:371:19","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":5691,"nodeType":"Block","src":"5824:217:19","statements":[{"expression":{"arguments":[{"id":5665,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5657,"src":"5845:9:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":5664,"name":"_setBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5654,"src":"5834:10:19","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":5666,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5834:21:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5667,"nodeType":"ExpressionStatement","src":"5834:21:19"},{"eventCall":{"arguments":[{"id":5669,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5657,"src":"5885:9:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":5668,"name":"BeaconUpgraded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5261,"src":"5870:14:19","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":5670,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5870:25:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5671,"nodeType":"EmitStatement","src":"5865:30:19"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":5677,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5675,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":5672,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5659,"src":"5909:4:19","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":5673,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5914:6:19","memberName":"length","nodeType":"MemberAccess","src":"5909:11:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":5674,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5923:1:19","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5909:15:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"id":5676,"name":"forceCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5661,"src":"5928:9:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"5909:28:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5690,"nodeType":"IfStatement","src":"5905:130:19","trueBody":{"id":5689,"nodeType":"Block","src":"5939:96:19","statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":5682,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5657,"src":"5990:9:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":5681,"name":"IBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5755,"src":"5982:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBeacon_$5755_$","typeString":"type(contract IBeacon)"}},"id":5683,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5982:18:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBeacon_$5755","typeString":"contract IBeacon"}},"id":5684,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6001:14:19","memberName":"implementation","nodeType":"MemberAccess","referencedDeclaration":5754,"src":"5982:33:19","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":5685,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5982:35:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5686,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5659,"src":"6019:4:19","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":5678,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9264,"src":"5953:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Address_$9264_$","typeString":"type(library Address)"}},"id":5680,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5961:20:19","memberName":"functionDelegateCall","nodeType":"MemberAccess","referencedDeclaration":9151,"src":"5953:28:19","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory) returns (bytes memory)"}},"id":5687,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5953:71:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":5688,"nodeType":"ExpressionStatement","src":"5953:71:19"}]}}]},"documentation":{"id":5655,"nodeType":"StructuredDocumentation","src":"5431:292:19","text":" @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\n not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\n Emits a {BeaconUpgraded} event."},"id":5692,"implemented":true,"kind":"function","modifiers":[],"name":"_upgradeBeaconToAndCall","nameLocation":"5737:23:19","nodeType":"FunctionDefinition","parameters":{"id":5662,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5657,"mutability":"mutable","name":"newBeacon","nameLocation":"5769:9:19","nodeType":"VariableDeclaration","scope":5692,"src":"5761:17:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5656,"name":"address","nodeType":"ElementaryTypeName","src":"5761:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5659,"mutability":"mutable","name":"data","nameLocation":"5793:4:19","nodeType":"VariableDeclaration","scope":5692,"src":"5780:17:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5658,"name":"bytes","nodeType":"ElementaryTypeName","src":"5780:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":5661,"mutability":"mutable","name":"forceCall","nameLocation":"5804:9:19","nodeType":"VariableDeclaration","scope":5692,"src":"5799:14:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5660,"name":"bool","nodeType":"ElementaryTypeName","src":"5799:4:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5760:54:19"},"returnParameters":{"id":5663,"nodeType":"ParameterList","parameters":[],"src":"5824:0:19"},"scope":5693,"src":"5728:313:19","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":5694,"src":"517:5526:19","usedErrors":[]}],"src":"116:5928:19"},"id":19},"@openzeppelin/contracts/proxy/Proxy.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/proxy/Proxy.sol","exportedSymbols":{"Proxy":[5745]},"id":5746,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":5695,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"99:23:20"},{"abstract":true,"baseContracts":[],"canonicalName":"Proxy","contractDependencies":[],"contractKind":"contract","documentation":{"id":5696,"nodeType":"StructuredDocumentation","src":"124:598:20","text":" @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\n instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\n be specified by overriding the virtual {_implementation} function.\n Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\n different contract through the {_delegate} function.\n The success and return data of the delegated call will be returned back to the caller of the proxy."},"fullyImplemented":false,"id":5745,"linearizedBaseContracts":[5745],"name":"Proxy","nameLocation":"741:5:20","nodeType":"ContractDefinition","nodes":[{"body":{"id":5703,"nodeType":"Block","src":"1008:835:20","statements":[{"AST":{"nodeType":"YulBlock","src":"1027:810:20","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1280:1:20","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1283:1:20","type":"","value":"0"},{"arguments":[],"functionName":{"name":"calldatasize","nodeType":"YulIdentifier","src":"1286:12:20"},"nodeType":"YulFunctionCall","src":"1286:14:20"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"1267:12:20"},"nodeType":"YulFunctionCall","src":"1267:34:20"},"nodeType":"YulExpressionStatement","src":"1267:34:20"},{"nodeType":"YulVariableDeclaration","src":"1428:74:20","value":{"arguments":[{"arguments":[],"functionName":{"name":"gas","nodeType":"YulIdentifier","src":"1455:3:20"},"nodeType":"YulFunctionCall","src":"1455:5:20"},{"name":"implementation","nodeType":"YulIdentifier","src":"1462:14:20"},{"kind":"number","nodeType":"YulLiteral","src":"1478:1:20","type":"","value":"0"},{"arguments":[],"functionName":{"name":"calldatasize","nodeType":"YulIdentifier","src":"1481:12:20"},"nodeType":"YulFunctionCall","src":"1481:14:20"},{"kind":"number","nodeType":"YulLiteral","src":"1497:1:20","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1500:1:20","type":"","value":"0"}],"functionName":{"name":"delegatecall","nodeType":"YulIdentifier","src":"1442:12:20"},"nodeType":"YulFunctionCall","src":"1442:60:20"},"variables":[{"name":"result","nodeType":"YulTypedName","src":"1432:6:20","type":""}]},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1570:1:20","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1573:1:20","type":"","value":"0"},{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"1576:14:20"},"nodeType":"YulFunctionCall","src":"1576:16:20"}],"functionName":{"name":"returndatacopy","nodeType":"YulIdentifier","src":"1555:14:20"},"nodeType":"YulFunctionCall","src":"1555:38:20"},"nodeType":"YulExpressionStatement","src":"1555:38:20"},{"cases":[{"body":{"nodeType":"YulBlock","src":"1688:59:20","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1713:1:20","type":"","value":"0"},{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"1716:14:20"},"nodeType":"YulFunctionCall","src":"1716:16:20"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1706:6:20"},"nodeType":"YulFunctionCall","src":"1706:27:20"},"nodeType":"YulExpressionStatement","src":"1706:27:20"}]},"nodeType":"YulCase","src":"1681:66:20","value":{"kind":"number","nodeType":"YulLiteral","src":"1686:1:20","type":"","value":"0"}},{"body":{"nodeType":"YulBlock","src":"1768:59:20","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1793:1:20","type":"","value":"0"},{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"1796:14:20"},"nodeType":"YulFunctionCall","src":"1796:16:20"}],"functionName":{"name":"return","nodeType":"YulIdentifier","src":"1786:6:20"},"nodeType":"YulFunctionCall","src":"1786:27:20"},"nodeType":"YulExpressionStatement","src":"1786:27:20"}]},"nodeType":"YulCase","src":"1760:67:20","value":"default"}],"expression":{"name":"result","nodeType":"YulIdentifier","src":"1614:6:20"},"nodeType":"YulSwitch","src":"1607:220:20"}]},"evmVersion":"london","externalReferences":[{"declaration":5699,"isOffset":false,"isSlot":false,"src":"1462:14:20","valueSize":1}],"id":5702,"nodeType":"InlineAssembly","src":"1018:819:20"}]},"documentation":{"id":5697,"nodeType":"StructuredDocumentation","src":"753:190:20","text":" @dev Delegates the current call to `implementation`.\n This function does not return to its internal call site, it will return directly to the external caller."},"id":5704,"implemented":true,"kind":"function","modifiers":[],"name":"_delegate","nameLocation":"957:9:20","nodeType":"FunctionDefinition","parameters":{"id":5700,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5699,"mutability":"mutable","name":"implementation","nameLocation":"975:14:20","nodeType":"VariableDeclaration","scope":5704,"src":"967:22:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5698,"name":"address","nodeType":"ElementaryTypeName","src":"967:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"966:24:20"},"returnParameters":{"id":5701,"nodeType":"ParameterList","parameters":[],"src":"1008:0:20"},"scope":5745,"src":"948:895:20","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"documentation":{"id":5705,"nodeType":"StructuredDocumentation","src":"1849:173:20","text":" @dev This is a virtual function that should be overridden so it returns the address to which the fallback function\n and {_fallback} should delegate."},"id":5710,"implemented":false,"kind":"function","modifiers":[],"name":"_implementation","nameLocation":"2036:15:20","nodeType":"FunctionDefinition","parameters":{"id":5706,"nodeType":"ParameterList","parameters":[],"src":"2051:2:20"},"returnParameters":{"id":5709,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5708,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5710,"src":"2085:7:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5707,"name":"address","nodeType":"ElementaryTypeName","src":"2085:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2084:9:20"},"scope":5745,"src":"2027:67:20","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":5722,"nodeType":"Block","src":"2360:72:20","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":5714,"name":"_beforeFallback","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5744,"src":"2370:15:20","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":5715,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2370:17:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5716,"nodeType":"ExpressionStatement","src":"2370:17:20"},{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":5718,"name":"_implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5710,"src":"2407:15:20","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":5719,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2407:17:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":5717,"name":"_delegate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5704,"src":"2397:9:20","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":5720,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2397:28:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5721,"nodeType":"ExpressionStatement","src":"2397:28:20"}]},"documentation":{"id":5711,"nodeType":"StructuredDocumentation","src":"2100:217:20","text":" @dev Delegates the current call to the address returned by `_implementation()`.\n This function does not return to its internal call site, it will return directly to the external caller."},"id":5723,"implemented":true,"kind":"function","modifiers":[],"name":"_fallback","nameLocation":"2331:9:20","nodeType":"FunctionDefinition","parameters":{"id":5712,"nodeType":"ParameterList","parameters":[],"src":"2340:2:20"},"returnParameters":{"id":5713,"nodeType":"ParameterList","parameters":[],"src":"2360:0:20"},"scope":5745,"src":"2322:110:20","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":5730,"nodeType":"Block","src":"2665:28:20","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":5727,"name":"_fallback","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5723,"src":"2675:9:20","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":5728,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2675:11:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5729,"nodeType":"ExpressionStatement","src":"2675:11:20"}]},"documentation":{"id":5724,"nodeType":"StructuredDocumentation","src":"2438:186:20","text":" @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\n function in the contract matches the call data."},"id":5731,"implemented":true,"kind":"fallback","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":5725,"nodeType":"ParameterList","parameters":[],"src":"2637:2:20"},"returnParameters":{"id":5726,"nodeType":"ParameterList","parameters":[],"src":"2665:0:20"},"scope":5745,"src":"2629:64:20","stateMutability":"payable","virtual":true,"visibility":"external"},{"body":{"id":5738,"nodeType":"Block","src":"2888:28:20","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":5735,"name":"_fallback","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5723,"src":"2898:9:20","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":5736,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2898:11:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5737,"nodeType":"ExpressionStatement","src":"2898:11:20"}]},"documentation":{"id":5732,"nodeType":"StructuredDocumentation","src":"2699:149:20","text":" @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data\n is empty."},"id":5739,"implemented":true,"kind":"receive","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":5733,"nodeType":"ParameterList","parameters":[],"src":"2860:2:20"},"returnParameters":{"id":5734,"nodeType":"ParameterList","parameters":[],"src":"2888:0:20"},"scope":5745,"src":"2853:63:20","stateMutability":"payable","virtual":true,"visibility":"external"},{"body":{"id":5743,"nodeType":"Block","src":"3242:2:20","statements":[]},"documentation":{"id":5740,"nodeType":"StructuredDocumentation","src":"2922:271:20","text":" @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`\n call, or as part of the Solidity `fallback` or `receive` functions.\n If overridden should call `super._beforeFallback()`."},"id":5744,"implemented":true,"kind":"function","modifiers":[],"name":"_beforeFallback","nameLocation":"3207:15:20","nodeType":"FunctionDefinition","parameters":{"id":5741,"nodeType":"ParameterList","parameters":[],"src":"3222:2:20"},"returnParameters":{"id":5742,"nodeType":"ParameterList","parameters":[],"src":"3242:0:20"},"scope":5745,"src":"3198:46:20","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":5746,"src":"723:2523:20","usedErrors":[]}],"src":"99:3148:20"},"id":20},"@openzeppelin/contracts/proxy/beacon/IBeacon.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/proxy/beacon/IBeacon.sol","exportedSymbols":{"IBeacon":[5755]},"id":5756,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":5747,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"93:23:21"},{"abstract":false,"baseContracts":[],"canonicalName":"IBeacon","contractDependencies":[],"contractKind":"interface","documentation":{"id":5748,"nodeType":"StructuredDocumentation","src":"118:79:21","text":" @dev This is the interface that {BeaconProxy} expects of its beacon."},"fullyImplemented":false,"id":5755,"linearizedBaseContracts":[5755],"name":"IBeacon","nameLocation":"208:7:21","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":5749,"nodeType":"StructuredDocumentation","src":"222:162:21","text":" @dev Must return an address that can be used as a delegate call target.\n {BeaconProxy} will check that this address is a contract."},"functionSelector":"5c60da1b","id":5754,"implemented":false,"kind":"function","modifiers":[],"name":"implementation","nameLocation":"398:14:21","nodeType":"FunctionDefinition","parameters":{"id":5750,"nodeType":"ParameterList","parameters":[],"src":"412:2:21"},"returnParameters":{"id":5753,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5752,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5754,"src":"438:7:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5751,"name":"address","nodeType":"ElementaryTypeName","src":"438:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"437:9:21"},"scope":5755,"src":"389:58:21","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":5756,"src":"198:251:21","usedErrors":[]}],"src":"93:357:21"},"id":21},"@openzeppelin/contracts/token/ERC1155/ERC1155.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC1155/ERC1155.sol","exportedSymbols":{"Address":[9264],"Context":[9294],"ERC1155":[6978],"ERC165":[9731],"IERC1155":[7100],"IERC1155MetadataURI":[7156],"IERC1155Receiver":[7141],"IERC165":[9743]},"id":6979,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":5757,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"109:23:22"},{"absolutePath":"@openzeppelin/contracts/token/ERC1155/IERC1155.sol","file":"./IERC1155.sol","id":5758,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6979,"sourceUnit":7101,"src":"134:24:22","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol","file":"./IERC1155Receiver.sol","id":5759,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6979,"sourceUnit":7142,"src":"159:32:22","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol","file":"./extensions/IERC1155MetadataURI.sol","id":5760,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6979,"sourceUnit":7157,"src":"192:46:22","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Address.sol","file":"../../utils/Address.sol","id":5761,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6979,"sourceUnit":9265,"src":"239:33:22","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Context.sol","file":"../../utils/Context.sol","id":5762,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6979,"sourceUnit":9295,"src":"273:33:22","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/introspection/ERC165.sol","file":"../../utils/introspection/ERC165.sol","id":5763,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6979,"sourceUnit":9732,"src":"307:46:22","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":5765,"name":"Context","nameLocations":["590:7:22"],"nodeType":"IdentifierPath","referencedDeclaration":9294,"src":"590:7:22"},"id":5766,"nodeType":"InheritanceSpecifier","src":"590:7:22"},{"baseName":{"id":5767,"name":"ERC165","nameLocations":["599:6:22"],"nodeType":"IdentifierPath","referencedDeclaration":9731,"src":"599:6:22"},"id":5768,"nodeType":"InheritanceSpecifier","src":"599:6:22"},{"baseName":{"id":5769,"name":"IERC1155","nameLocations":["607:8:22"],"nodeType":"IdentifierPath","referencedDeclaration":7100,"src":"607:8:22"},"id":5770,"nodeType":"InheritanceSpecifier","src":"607:8:22"},{"baseName":{"id":5771,"name":"IERC1155MetadataURI","nameLocations":["617:19:22"],"nodeType":"IdentifierPath","referencedDeclaration":7156,"src":"617:19:22"},"id":5772,"nodeType":"InheritanceSpecifier","src":"617:19:22"}],"canonicalName":"ERC1155","contractDependencies":[],"contractKind":"contract","documentation":{"id":5764,"nodeType":"StructuredDocumentation","src":"355:214:22","text":" @dev Implementation of the basic standard multi-token.\n See https://eips.ethereum.org/EIPS/eip-1155\n Originally based on code by Enjin: https://github.com/enjin/erc-1155\n _Available since v3.1._"},"fullyImplemented":true,"id":6978,"linearizedBaseContracts":[6978,7156,7100,9731,9743,9294],"name":"ERC1155","nameLocation":"579:7:22","nodeType":"ContractDefinition","nodes":[{"global":false,"id":5775,"libraryName":{"id":5773,"name":"Address","nameLocations":["649:7:22"],"nodeType":"IdentifierPath","referencedDeclaration":9264,"src":"649:7:22"},"nodeType":"UsingForDirective","src":"643:26:22","typeName":{"id":5774,"name":"address","nodeType":"ElementaryTypeName","src":"661:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},{"constant":false,"id":5781,"mutability":"mutable","name":"_balances","nameLocation":"780:9:22","nodeType":"VariableDeclaration","scope":6978,"src":"724:65:22","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(uint256 => mapping(address => uint256))"},"typeName":{"id":5780,"keyType":{"id":5776,"name":"uint256","nodeType":"ElementaryTypeName","src":"732:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"724:47:22","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(uint256 => mapping(address => uint256))"},"valueType":{"id":5779,"keyType":{"id":5777,"name":"address","nodeType":"ElementaryTypeName","src":"751:7:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"743:27:22","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueType":{"id":5778,"name":"uint256","nodeType":"ElementaryTypeName","src":"762:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}},"visibility":"private"},{"constant":false,"id":5787,"mutability":"mutable","name":"_operatorApprovals","nameLocation":"899:18:22","nodeType":"VariableDeclaration","scope":6978,"src":"846:71:22","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"typeName":{"id":5786,"keyType":{"id":5782,"name":"address","nodeType":"ElementaryTypeName","src":"854:7:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"846:44:22","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"valueType":{"id":5785,"keyType":{"id":5783,"name":"address","nodeType":"ElementaryTypeName","src":"873:7:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"865:24:22","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueType":{"id":5784,"name":"bool","nodeType":"ElementaryTypeName","src":"884:4:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}}},"visibility":"private"},{"constant":false,"id":5789,"mutability":"mutable","name":"_uri","nameLocation":"1053:4:22","nodeType":"VariableDeclaration","scope":6978,"src":"1038:19:22","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":5788,"name":"string","nodeType":"ElementaryTypeName","src":"1038:6:22","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"body":{"id":5799,"nodeType":"Block","src":"1139:30:22","statements":[{"expression":{"arguments":[{"id":5796,"name":"uri_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5792,"src":"1157:4:22","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":5795,"name":"_setURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6311,"src":"1149:7:22","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":5797,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1149:13:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5798,"nodeType":"ExpressionStatement","src":"1149:13:22"}]},"documentation":{"id":5790,"nodeType":"StructuredDocumentation","src":"1064:38:22","text":" @dev See {_setURI}."},"id":5800,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":5793,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5792,"mutability":"mutable","name":"uri_","nameLocation":"1133:4:22","nodeType":"VariableDeclaration","scope":5800,"src":"1119:18:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5791,"name":"string","nodeType":"ElementaryTypeName","src":"1119:6:22","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1118:20:22"},"returnParameters":{"id":5794,"nodeType":"ParameterList","parameters":[],"src":"1139:0:22"},"scope":6978,"src":"1107:62:22","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[9730,9742],"body":{"id":5830,"nodeType":"Block","src":"1344:197:22","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":5828,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":5823,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":5816,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5811,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5803,"src":"1373:11:22","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":5813,"name":"IERC1155","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7100,"src":"1393:8:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC1155_$7100_$","typeString":"type(contract IERC1155)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC1155_$7100_$","typeString":"type(contract IERC1155)"}],"id":5812,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"1388:4:22","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5814,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1388:14:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC1155_$7100","typeString":"type(contract IERC1155)"}},"id":5815,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1403:11:22","memberName":"interfaceId","nodeType":"MemberAccess","src":"1388:26:22","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"1373:41:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":5822,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5817,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5803,"src":"1430:11:22","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":5819,"name":"IERC1155MetadataURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7156,"src":"1450:19:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC1155MetadataURI_$7156_$","typeString":"type(contract IERC1155MetadataURI)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC1155MetadataURI_$7156_$","typeString":"type(contract IERC1155MetadataURI)"}],"id":5818,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"1445:4:22","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5820,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1445:25:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC1155MetadataURI_$7156","typeString":"type(contract IERC1155MetadataURI)"}},"id":5821,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1471:11:22","memberName":"interfaceId","nodeType":"MemberAccess","src":"1445:37:22","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"1430:52:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1373:109:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":5826,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5803,"src":"1522:11:22","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":5824,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967271,"src":"1498:5:22","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_ERC1155_$6978_$","typeString":"type(contract super ERC1155)"}},"id":5825,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1504:17:22","memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":9730,"src":"1498:23:22","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bool_$","typeString":"function (bytes4) view returns (bool)"}},"id":5827,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1498:36:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1373:161:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":5810,"id":5829,"nodeType":"Return","src":"1354:180:22"}]},"documentation":{"id":5801,"nodeType":"StructuredDocumentation","src":"1175:56:22","text":" @dev See {IERC165-supportsInterface}."},"functionSelector":"01ffc9a7","id":5831,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"1245:17:22","nodeType":"FunctionDefinition","overrides":{"id":5807,"nodeType":"OverrideSpecifier","overrides":[{"id":5805,"name":"ERC165","nameLocations":["1312:6:22"],"nodeType":"IdentifierPath","referencedDeclaration":9731,"src":"1312:6:22"},{"id":5806,"name":"IERC165","nameLocations":["1320:7:22"],"nodeType":"IdentifierPath","referencedDeclaration":9743,"src":"1320:7:22"}],"src":"1303:25:22"},"parameters":{"id":5804,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5803,"mutability":"mutable","name":"interfaceId","nameLocation":"1270:11:22","nodeType":"VariableDeclaration","scope":5831,"src":"1263:18:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":5802,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1263:6:22","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"1262:20:22"},"returnParameters":{"id":5810,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5809,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5831,"src":"1338:4:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5808,"name":"bool","nodeType":"ElementaryTypeName","src":"1338:4:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1337:6:22"},"scope":6978,"src":"1236:305:22","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[7155],"body":{"id":5842,"nodeType":"Block","src":"2015:28:22","statements":[{"expression":{"id":5840,"name":"_uri","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5789,"src":"2032:4:22","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":5839,"id":5841,"nodeType":"Return","src":"2025:11:22"}]},"documentation":{"id":5832,"nodeType":"StructuredDocumentation","src":"1547:388:22","text":" @dev See {IERC1155MetadataURI-uri}.\n This implementation returns the same URI for *all* token types. It relies\n on the token type ID substitution mechanism\n https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP].\n Clients calling this function must replace the `\\{id\\}` substring with the\n actual token type ID."},"functionSelector":"0e89341c","id":5843,"implemented":true,"kind":"function","modifiers":[],"name":"uri","nameLocation":"1949:3:22","nodeType":"FunctionDefinition","overrides":{"id":5836,"nodeType":"OverrideSpecifier","overrides":[],"src":"1982:8:22"},"parameters":{"id":5835,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5834,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5843,"src":"1953:7:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5833,"name":"uint256","nodeType":"ElementaryTypeName","src":"1953:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1952:9:22"},"returnParameters":{"id":5839,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5838,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5843,"src":"2000:13:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5837,"name":"string","nodeType":"ElementaryTypeName","src":"2000:6:22","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1999:15:22"},"scope":6978,"src":"1940:103:22","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[7038],"body":{"id":5870,"nodeType":"Block","src":"2280:132:22","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":5860,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5855,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5846,"src":"2298:7:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":5858,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2317:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":5857,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2309:7:22","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5856,"name":"address","nodeType":"ElementaryTypeName","src":"2309:7:22","typeDescriptions":{}}},"id":5859,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2309:10:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2298:21:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"455243313135353a2061646472657373207a65726f206973206e6f7420612076616c6964206f776e6572","id":5861,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2321:44:22","typeDescriptions":{"typeIdentifier":"t_stringliteral_415a1b99e1fd4a18cf87c08995f5a9130182e8d76e9c17c497bfebaaef9265ad","typeString":"literal_string \"ERC1155: address zero is not a valid owner\""},"value":"ERC1155: address zero is not a valid owner"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_415a1b99e1fd4a18cf87c08995f5a9130182e8d76e9c17c497bfebaaef9265ad","typeString":"literal_string \"ERC1155: address zero is not a valid owner\""}],"id":5854,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"2290:7:22","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":5862,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2290:76:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5863,"nodeType":"ExpressionStatement","src":"2290:76:22"},{"expression":{"baseExpression":{"baseExpression":{"id":5864,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5781,"src":"2383:9:22","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(uint256 => mapping(address => uint256))"}},"id":5866,"indexExpression":{"id":5865,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5848,"src":"2393:2:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2383:13:22","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":5868,"indexExpression":{"id":5867,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5846,"src":"2397:7:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2383:22:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5853,"id":5869,"nodeType":"Return","src":"2376:29:22"}]},"documentation":{"id":5844,"nodeType":"StructuredDocumentation","src":"2049:131:22","text":" @dev See {IERC1155-balanceOf}.\n Requirements:\n - `account` cannot be the zero address."},"functionSelector":"00fdd58e","id":5871,"implemented":true,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"2194:9:22","nodeType":"FunctionDefinition","overrides":{"id":5850,"nodeType":"OverrideSpecifier","overrides":[],"src":"2253:8:22"},"parameters":{"id":5849,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5846,"mutability":"mutable","name":"account","nameLocation":"2212:7:22","nodeType":"VariableDeclaration","scope":5871,"src":"2204:15:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5845,"name":"address","nodeType":"ElementaryTypeName","src":"2204:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5848,"mutability":"mutable","name":"id","nameLocation":"2229:2:22","nodeType":"VariableDeclaration","scope":5871,"src":"2221:10:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5847,"name":"uint256","nodeType":"ElementaryTypeName","src":"2221:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2203:29:22"},"returnParameters":{"id":5853,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5852,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5871,"src":"2271:7:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5851,"name":"uint256","nodeType":"ElementaryTypeName","src":"2271:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2270:9:22"},"scope":6978,"src":"2185:227:22","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[7051],"body":{"id":5934,"nodeType":"Block","src":"2720:335:22","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5890,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":5886,"name":"accounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5875,"src":"2738:8:22","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":5887,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2747:6:22","memberName":"length","nodeType":"MemberAccess","src":"2738:15:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":5888,"name":"ids","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5878,"src":"2757:3:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":5889,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2761:6:22","memberName":"length","nodeType":"MemberAccess","src":"2757:10:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2738:29:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"455243313135353a206163636f756e747320616e6420696473206c656e677468206d69736d61746368","id":5891,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2769:43:22","typeDescriptions":{"typeIdentifier":"t_stringliteral_e155f5d69798c6205436a388a4f3a5fd42f54147b40f4d63a2c8071ff8a9fee5","typeString":"literal_string \"ERC1155: accounts and ids length mismatch\""},"value":"ERC1155: accounts and ids length mismatch"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e155f5d69798c6205436a388a4f3a5fd42f54147b40f4d63a2c8071ff8a9fee5","typeString":"literal_string \"ERC1155: accounts and ids length mismatch\""}],"id":5885,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"2730:7:22","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":5892,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2730:83:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5893,"nodeType":"ExpressionStatement","src":"2730:83:22"},{"assignments":[5898],"declarations":[{"constant":false,"id":5898,"mutability":"mutable","name":"batchBalances","nameLocation":"2841:13:22","nodeType":"VariableDeclaration","scope":5934,"src":"2824:30:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":5896,"name":"uint256","nodeType":"ElementaryTypeName","src":"2824:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5897,"nodeType":"ArrayTypeName","src":"2824:9:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":5905,"initialValue":{"arguments":[{"expression":{"id":5902,"name":"accounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5875,"src":"2871:8:22","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":5903,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2880:6:22","memberName":"length","nodeType":"MemberAccess","src":"2871:15:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5901,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"2857:13:22","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":5899,"name":"uint256","nodeType":"ElementaryTypeName","src":"2861:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5900,"nodeType":"ArrayTypeName","src":"2861:9:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":5904,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2857:30:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"VariableDeclarationStatement","src":"2824:63:22"},{"body":{"id":5930,"nodeType":"Block","src":"2944:74:22","statements":[{"expression":{"id":5928,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":5917,"name":"batchBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5898,"src":"2958:13:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":5919,"indexExpression":{"id":5918,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5907,"src":"2972:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2958:16:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"baseExpression":{"id":5921,"name":"accounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5875,"src":"2987:8:22","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":5923,"indexExpression":{"id":5922,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5907,"src":"2996:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2987:11:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":5924,"name":"ids","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5878,"src":"3000:3:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":5926,"indexExpression":{"id":5925,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5907,"src":"3004:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3000:6:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5920,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5871,"src":"2977:9:22","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,uint256) view returns (uint256)"}},"id":5927,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2977:30:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2958:49:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5929,"nodeType":"ExpressionStatement","src":"2958:49:22"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5913,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5910,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5907,"src":"2918:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":5911,"name":"accounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5875,"src":"2922:8:22","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":5912,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2931:6:22","memberName":"length","nodeType":"MemberAccess","src":"2922:15:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2918:19:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5931,"initializationExpression":{"assignments":[5907],"declarations":[{"constant":false,"id":5907,"mutability":"mutable","name":"i","nameLocation":"2911:1:22","nodeType":"VariableDeclaration","scope":5931,"src":"2903:9:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5906,"name":"uint256","nodeType":"ElementaryTypeName","src":"2903:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5909,"initialValue":{"hexValue":"30","id":5908,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2915:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"2903:13:22"},"loopExpression":{"expression":{"id":5915,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"2939:3:22","subExpression":{"id":5914,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5907,"src":"2941:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5916,"nodeType":"ExpressionStatement","src":"2939:3:22"},"nodeType":"ForStatement","src":"2898:120:22"},{"expression":{"id":5932,"name":"batchBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5898,"src":"3035:13:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"functionReturnParameters":5884,"id":5933,"nodeType":"Return","src":"3028:20:22"}]},"documentation":{"id":5872,"nodeType":"StructuredDocumentation","src":"2418:146:22","text":" @dev See {IERC1155-balanceOfBatch}.\n Requirements:\n - `accounts` and `ids` must have the same length."},"functionSelector":"4e1273f4","id":5935,"implemented":true,"kind":"function","modifiers":[],"name":"balanceOfBatch","nameLocation":"2578:14:22","nodeType":"FunctionDefinition","overrides":{"id":5880,"nodeType":"OverrideSpecifier","overrides":[],"src":"2684:8:22"},"parameters":{"id":5879,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5875,"mutability":"mutable","name":"accounts","nameLocation":"2619:8:22","nodeType":"VariableDeclaration","scope":5935,"src":"2602:25:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":5873,"name":"address","nodeType":"ElementaryTypeName","src":"2602:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":5874,"nodeType":"ArrayTypeName","src":"2602:9:22","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":5878,"mutability":"mutable","name":"ids","nameLocation":"2654:3:22","nodeType":"VariableDeclaration","scope":5935,"src":"2637:20:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":5876,"name":"uint256","nodeType":"ElementaryTypeName","src":"2637:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5877,"nodeType":"ArrayTypeName","src":"2637:9:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"2592:71:22"},"returnParameters":{"id":5884,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5883,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5935,"src":"2702:16:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":5881,"name":"uint256","nodeType":"ElementaryTypeName","src":"2702:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5882,"nodeType":"ArrayTypeName","src":"2702:9:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"2701:18:22"},"scope":6978,"src":"2569:486:22","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[7059],"body":{"id":5951,"nodeType":"Block","src":"3207:69:22","statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":5945,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9276,"src":"3236:10:22","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":5946,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3236:12:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5947,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5938,"src":"3250:8:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5948,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5940,"src":"3260:8:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":5944,"name":"_setApprovalForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6783,"src":"3217:18:22","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,address,bool)"}},"id":5949,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3217:52:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5950,"nodeType":"ExpressionStatement","src":"3217:52:22"}]},"documentation":{"id":5936,"nodeType":"StructuredDocumentation","src":"3061:57:22","text":" @dev See {IERC1155-setApprovalForAll}."},"functionSelector":"a22cb465","id":5952,"implemented":true,"kind":"function","modifiers":[],"name":"setApprovalForAll","nameLocation":"3132:17:22","nodeType":"FunctionDefinition","overrides":{"id":5942,"nodeType":"OverrideSpecifier","overrides":[],"src":"3198:8:22"},"parameters":{"id":5941,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5938,"mutability":"mutable","name":"operator","nameLocation":"3158:8:22","nodeType":"VariableDeclaration","scope":5952,"src":"3150:16:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5937,"name":"address","nodeType":"ElementaryTypeName","src":"3150:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5940,"mutability":"mutable","name":"approved","nameLocation":"3173:8:22","nodeType":"VariableDeclaration","scope":5952,"src":"3168:13:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5939,"name":"bool","nodeType":"ElementaryTypeName","src":"3168:4:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3149:33:22"},"returnParameters":{"id":5943,"nodeType":"ParameterList","parameters":[],"src":"3207:0:22"},"scope":6978,"src":"3123:153:22","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[7069],"body":{"id":5969,"nodeType":"Block","src":"3448:61:22","statements":[{"expression":{"baseExpression":{"baseExpression":{"id":5963,"name":"_operatorApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5787,"src":"3465:18:22","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":5965,"indexExpression":{"id":5964,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5955,"src":"3484:7:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3465:27:22","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":5967,"indexExpression":{"id":5966,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5957,"src":"3493:8:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3465:37:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":5962,"id":5968,"nodeType":"Return","src":"3458:44:22"}]},"documentation":{"id":5953,"nodeType":"StructuredDocumentation","src":"3282:56:22","text":" @dev See {IERC1155-isApprovedForAll}."},"functionSelector":"e985e9c5","id":5970,"implemented":true,"kind":"function","modifiers":[],"name":"isApprovedForAll","nameLocation":"3352:16:22","nodeType":"FunctionDefinition","overrides":{"id":5959,"nodeType":"OverrideSpecifier","overrides":[],"src":"3424:8:22"},"parameters":{"id":5958,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5955,"mutability":"mutable","name":"account","nameLocation":"3377:7:22","nodeType":"VariableDeclaration","scope":5970,"src":"3369:15:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5954,"name":"address","nodeType":"ElementaryTypeName","src":"3369:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5957,"mutability":"mutable","name":"operator","nameLocation":"3394:8:22","nodeType":"VariableDeclaration","scope":5970,"src":"3386:16:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5956,"name":"address","nodeType":"ElementaryTypeName","src":"3386:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3368:35:22"},"returnParameters":{"id":5962,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5961,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5970,"src":"3442:4:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5960,"name":"bool","nodeType":"ElementaryTypeName","src":"3442:4:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3441:6:22"},"scope":6978,"src":"3343:166:22","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[7083],"body":{"id":6007,"nodeType":"Block","src":"3745:225:22","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":5995,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":5989,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5986,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5973,"src":"3776:4:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":5987,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9276,"src":"3784:10:22","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":5988,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3784:12:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3776:20:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":5991,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5973,"src":"3817:4:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[],"expression":{"argumentTypes":[],"id":5992,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9276,"src":"3823:10:22","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":5993,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3823:12:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":5990,"name":"isApprovedForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5970,"src":"3800:16:22","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view returns (bool)"}},"id":5994,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3800:36:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3776:60:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e6572206f7220617070726f766564","id":5996,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3850:48:22","typeDescriptions":{"typeIdentifier":"t_stringliteral_47c72b42072ed6c647dec3a0a5c88bec44d3e901c64659bff94ecce0a0323156","typeString":"literal_string \"ERC1155: caller is not token owner or approved\""},"value":"ERC1155: caller is not token owner or approved"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_47c72b42072ed6c647dec3a0a5c88bec44d3e901c64659bff94ecce0a0323156","typeString":"literal_string \"ERC1155: caller is not token owner or approved\""}],"id":5985,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"3755:7:22","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":5997,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3755:153:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5998,"nodeType":"ExpressionStatement","src":"3755:153:22"},{"expression":{"arguments":[{"id":6000,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5973,"src":"3936:4:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6001,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5975,"src":"3942:2:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6002,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5977,"src":"3946:2:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6003,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5979,"src":"3950:6:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6004,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5981,"src":"3958:4:22","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":5999,"name":"_safeTransferFrom","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6165,"src":"3918:17:22","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,uint256,bytes memory)"}},"id":6005,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3918:45:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6006,"nodeType":"ExpressionStatement","src":"3918:45:22"}]},"documentation":{"id":5971,"nodeType":"StructuredDocumentation","src":"3515:56:22","text":" @dev See {IERC1155-safeTransferFrom}."},"functionSelector":"f242432a","id":6008,"implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"3585:16:22","nodeType":"FunctionDefinition","overrides":{"id":5983,"nodeType":"OverrideSpecifier","overrides":[],"src":"3736:8:22"},"parameters":{"id":5982,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5973,"mutability":"mutable","name":"from","nameLocation":"3619:4:22","nodeType":"VariableDeclaration","scope":6008,"src":"3611:12:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5972,"name":"address","nodeType":"ElementaryTypeName","src":"3611:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5975,"mutability":"mutable","name":"to","nameLocation":"3641:2:22","nodeType":"VariableDeclaration","scope":6008,"src":"3633:10:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5974,"name":"address","nodeType":"ElementaryTypeName","src":"3633:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5977,"mutability":"mutable","name":"id","nameLocation":"3661:2:22","nodeType":"VariableDeclaration","scope":6008,"src":"3653:10:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5976,"name":"uint256","nodeType":"ElementaryTypeName","src":"3653:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5979,"mutability":"mutable","name":"amount","nameLocation":"3681:6:22","nodeType":"VariableDeclaration","scope":6008,"src":"3673:14:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5978,"name":"uint256","nodeType":"ElementaryTypeName","src":"3673:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5981,"mutability":"mutable","name":"data","nameLocation":"3710:4:22","nodeType":"VariableDeclaration","scope":6008,"src":"3697:17:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5980,"name":"bytes","nodeType":"ElementaryTypeName","src":"3697:5:22","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3601:119:22"},"returnParameters":{"id":5984,"nodeType":"ParameterList","parameters":[],"src":"3745:0:22"},"scope":6978,"src":"3576:394:22","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[7099],"body":{"id":6047,"nodeType":"Block","src":"4236:232:22","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":6035,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":6029,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6026,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6011,"src":"4267:4:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":6027,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9276,"src":"4275:10:22","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":6028,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4275:12:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4267:20:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":6031,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6011,"src":"4308:4:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[],"expression":{"argumentTypes":[],"id":6032,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9276,"src":"4314:10:22","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":6033,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4314:12:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":6030,"name":"isApprovedForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5970,"src":"4291:16:22","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view returns (bool)"}},"id":6034,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4291:36:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4267:60:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e6572206f7220617070726f766564","id":6036,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4341:48:22","typeDescriptions":{"typeIdentifier":"t_stringliteral_47c72b42072ed6c647dec3a0a5c88bec44d3e901c64659bff94ecce0a0323156","typeString":"literal_string \"ERC1155: caller is not token owner or approved\""},"value":"ERC1155: caller is not token owner or approved"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_47c72b42072ed6c647dec3a0a5c88bec44d3e901c64659bff94ecce0a0323156","typeString":"literal_string \"ERC1155: caller is not token owner or approved\""}],"id":6025,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"4246:7:22","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":6037,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4246:153:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6038,"nodeType":"ExpressionStatement","src":"4246:153:22"},{"expression":{"arguments":[{"id":6040,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6011,"src":"4432:4:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6041,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6013,"src":"4438:2:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6042,"name":"ids","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6016,"src":"4442:3:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":6043,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6019,"src":"4447:7:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":6044,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6021,"src":"4456:4:22","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":6039,"name":"_safeBatchTransferFrom","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6300,"src":"4409:22:22","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256[] memory,uint256[] memory,bytes memory)"}},"id":6045,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4409:52:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6046,"nodeType":"ExpressionStatement","src":"4409:52:22"}]},"documentation":{"id":6009,"nodeType":"StructuredDocumentation","src":"3976:61:22","text":" @dev See {IERC1155-safeBatchTransferFrom}."},"functionSelector":"2eb2c2d6","id":6048,"implemented":true,"kind":"function","modifiers":[],"name":"safeBatchTransferFrom","nameLocation":"4051:21:22","nodeType":"FunctionDefinition","overrides":{"id":6023,"nodeType":"OverrideSpecifier","overrides":[],"src":"4227:8:22"},"parameters":{"id":6022,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6011,"mutability":"mutable","name":"from","nameLocation":"4090:4:22","nodeType":"VariableDeclaration","scope":6048,"src":"4082:12:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6010,"name":"address","nodeType":"ElementaryTypeName","src":"4082:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6013,"mutability":"mutable","name":"to","nameLocation":"4112:2:22","nodeType":"VariableDeclaration","scope":6048,"src":"4104:10:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6012,"name":"address","nodeType":"ElementaryTypeName","src":"4104:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6016,"mutability":"mutable","name":"ids","nameLocation":"4141:3:22","nodeType":"VariableDeclaration","scope":6048,"src":"4124:20:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":6014,"name":"uint256","nodeType":"ElementaryTypeName","src":"4124:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6015,"nodeType":"ArrayTypeName","src":"4124:9:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":6019,"mutability":"mutable","name":"amounts","nameLocation":"4171:7:22","nodeType":"VariableDeclaration","scope":6048,"src":"4154:24:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":6017,"name":"uint256","nodeType":"ElementaryTypeName","src":"4154:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6018,"nodeType":"ArrayTypeName","src":"4154:9:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":6021,"mutability":"mutable","name":"data","nameLocation":"4201:4:22","nodeType":"VariableDeclaration","scope":6048,"src":"4188:17:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":6020,"name":"bytes","nodeType":"ElementaryTypeName","src":"4188:5:22","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4072:139:22"},"returnParameters":{"id":6024,"nodeType":"ParameterList","parameters":[],"src":"4236:0:22"},"scope":6978,"src":"4042:426:22","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":6164,"nodeType":"Block","src":"5081:784:22","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":6068,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6063,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6053,"src":"5099:2:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":6066,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5113:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":6065,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5105:7:22","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6064,"name":"address","nodeType":"ElementaryTypeName","src":"5105:7:22","typeDescriptions":{}}},"id":6067,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5105:10:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5099:16:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"455243313135353a207472616e7366657220746f20746865207a65726f2061646472657373","id":6069,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5117:39:22","typeDescriptions":{"typeIdentifier":"t_stringliteral_6faf1c67f278b07c6771dcf4c315a89c21c0eaed11d9ab3d51774da1cfef545d","typeString":"literal_string \"ERC1155: transfer to the zero address\""},"value":"ERC1155: transfer to the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_6faf1c67f278b07c6771dcf4c315a89c21c0eaed11d9ab3d51774da1cfef545d","typeString":"literal_string \"ERC1155: transfer to the zero address\""}],"id":6062,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"5091:7:22","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":6070,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5091:66:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6071,"nodeType":"ExpressionStatement","src":"5091:66:22"},{"assignments":[6073],"declarations":[{"constant":false,"id":6073,"mutability":"mutable","name":"operator","nameLocation":"5176:8:22","nodeType":"VariableDeclaration","scope":6164,"src":"5168:16:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6072,"name":"address","nodeType":"ElementaryTypeName","src":"5168:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":6076,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":6074,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9276,"src":"5187:10:22","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":6075,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5187:12:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"5168:31:22"},{"assignments":[6081],"declarations":[{"constant":false,"id":6081,"mutability":"mutable","name":"ids","nameLocation":"5226:3:22","nodeType":"VariableDeclaration","scope":6164,"src":"5209:20:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":6079,"name":"uint256","nodeType":"ElementaryTypeName","src":"5209:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6080,"nodeType":"ArrayTypeName","src":"5209:9:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":6085,"initialValue":{"arguments":[{"id":6083,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6055,"src":"5250:2:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6082,"name":"_asSingletonArray","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6977,"src":"5232:17:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"}},"id":6084,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5232:21:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"VariableDeclarationStatement","src":"5209:44:22"},{"assignments":[6090],"declarations":[{"constant":false,"id":6090,"mutability":"mutable","name":"amounts","nameLocation":"5280:7:22","nodeType":"VariableDeclaration","scope":6164,"src":"5263:24:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":6088,"name":"uint256","nodeType":"ElementaryTypeName","src":"5263:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6089,"nodeType":"ArrayTypeName","src":"5263:9:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":6094,"initialValue":{"arguments":[{"id":6092,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6057,"src":"5308:6:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6091,"name":"_asSingletonArray","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6977,"src":"5290:17:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"}},"id":6093,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5290:25:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"VariableDeclarationStatement","src":"5263:52:22"},{"expression":{"arguments":[{"id":6096,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6073,"src":"5347:8:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6097,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6051,"src":"5357:4:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6098,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6053,"src":"5363:2:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6099,"name":"ids","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6081,"src":"5367:3:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":6100,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6090,"src":"5372:7:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":6101,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6059,"src":"5381:4:22","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":6095,"name":"_beforeTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6802,"src":"5326:20:22","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,address,uint256[] memory,uint256[] memory,bytes memory)"}},"id":6102,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5326:60:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6103,"nodeType":"ExpressionStatement","src":"5326:60:22"},{"assignments":[6105],"declarations":[{"constant":false,"id":6105,"mutability":"mutable","name":"fromBalance","nameLocation":"5405:11:22","nodeType":"VariableDeclaration","scope":6164,"src":"5397:19:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6104,"name":"uint256","nodeType":"ElementaryTypeName","src":"5397:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6111,"initialValue":{"baseExpression":{"baseExpression":{"id":6106,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5781,"src":"5419:9:22","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(uint256 => mapping(address => uint256))"}},"id":6108,"indexExpression":{"id":6107,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6055,"src":"5429:2:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5419:13:22","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":6110,"indexExpression":{"id":6109,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6051,"src":"5433:4:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5419:19:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5397:41:22"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6115,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6113,"name":"fromBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6105,"src":"5456:11:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":6114,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6057,"src":"5471:6:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5456:21:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"455243313135353a20696e73756666696369656e742062616c616e636520666f72207472616e73666572","id":6116,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5479:44:22","typeDescriptions":{"typeIdentifier":"t_stringliteral_8ac7e9556b567c1c94bb4daaa3c3a65be5ac686579615210cb910fb8cb8d65bf","typeString":"literal_string \"ERC1155: insufficient balance for transfer\""},"value":"ERC1155: insufficient balance for transfer"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8ac7e9556b567c1c94bb4daaa3c3a65be5ac686579615210cb910fb8cb8d65bf","typeString":"literal_string \"ERC1155: insufficient balance for transfer\""}],"id":6112,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"5448:7:22","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":6117,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5448:76:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6118,"nodeType":"ExpressionStatement","src":"5448:76:22"},{"id":6129,"nodeType":"UncheckedBlock","src":"5534:77:22","statements":[{"expression":{"id":6127,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":6119,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5781,"src":"5558:9:22","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(uint256 => mapping(address => uint256))"}},"id":6122,"indexExpression":{"id":6120,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6055,"src":"5568:2:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5558:13:22","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":6123,"indexExpression":{"id":6121,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6051,"src":"5572:4:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5558:19:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6126,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6124,"name":"fromBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6105,"src":"5580:11:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":6125,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6057,"src":"5594:6:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5580:20:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5558:42:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6128,"nodeType":"ExpressionStatement","src":"5558:42:22"}]},{"expression":{"id":6136,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":6130,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5781,"src":"5620:9:22","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(uint256 => mapping(address => uint256))"}},"id":6133,"indexExpression":{"id":6131,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6055,"src":"5630:2:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5620:13:22","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":6134,"indexExpression":{"id":6132,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6053,"src":"5634:2:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5620:17:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":6135,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6057,"src":"5641:6:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5620:27:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6137,"nodeType":"ExpressionStatement","src":"5620:27:22"},{"eventCall":{"arguments":[{"id":6139,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6073,"src":"5678:8:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6140,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6051,"src":"5688:4:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6141,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6053,"src":"5694:2:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6142,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6055,"src":"5698:2:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6143,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6057,"src":"5702:6:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6138,"name":"TransferSingle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6997,"src":"5663:14:22","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,address,uint256,uint256)"}},"id":6144,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5663:46:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6145,"nodeType":"EmitStatement","src":"5658:51:22"},{"expression":{"arguments":[{"id":6147,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6073,"src":"5740:8:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6148,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6051,"src":"5750:4:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6149,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6053,"src":"5756:2:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6150,"name":"ids","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6081,"src":"5760:3:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":6151,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6090,"src":"5765:7:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":6152,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6059,"src":"5774:4:22","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":6146,"name":"_afterTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6821,"src":"5720:19:22","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,address,uint256[] memory,uint256[] memory,bytes memory)"}},"id":6153,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5720:59:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6154,"nodeType":"ExpressionStatement","src":"5720:59:22"},{"expression":{"arguments":[{"id":6156,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6073,"src":"5821:8:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6157,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6051,"src":"5831:4:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6158,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6053,"src":"5837:2:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6159,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6055,"src":"5841:2:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6160,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6057,"src":"5845:6:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6161,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6059,"src":"5853:4:22","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":6155,"name":"_doSafeTransferAcceptanceCheck","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6884,"src":"5790:30:22","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,address,uint256,uint256,bytes memory)"}},"id":6162,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5790:68:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6163,"nodeType":"ExpressionStatement","src":"5790:68:22"}]},"documentation":{"id":6049,"nodeType":"StructuredDocumentation","src":"4474:439:22","text":" @dev Transfers `amount` tokens of token type `id` from `from` to `to`.\n Emits a {TransferSingle} event.\n Requirements:\n - `to` cannot be the zero address.\n - `from` must have a balance of tokens of type `id` of at least `amount`.\n - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the\n acceptance magic value."},"id":6165,"implemented":true,"kind":"function","modifiers":[],"name":"_safeTransferFrom","nameLocation":"4927:17:22","nodeType":"FunctionDefinition","parameters":{"id":6060,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6051,"mutability":"mutable","name":"from","nameLocation":"4962:4:22","nodeType":"VariableDeclaration","scope":6165,"src":"4954:12:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6050,"name":"address","nodeType":"ElementaryTypeName","src":"4954:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6053,"mutability":"mutable","name":"to","nameLocation":"4984:2:22","nodeType":"VariableDeclaration","scope":6165,"src":"4976:10:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6052,"name":"address","nodeType":"ElementaryTypeName","src":"4976:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6055,"mutability":"mutable","name":"id","nameLocation":"5004:2:22","nodeType":"VariableDeclaration","scope":6165,"src":"4996:10:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6054,"name":"uint256","nodeType":"ElementaryTypeName","src":"4996:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6057,"mutability":"mutable","name":"amount","nameLocation":"5024:6:22","nodeType":"VariableDeclaration","scope":6165,"src":"5016:14:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6056,"name":"uint256","nodeType":"ElementaryTypeName","src":"5016:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6059,"mutability":"mutable","name":"data","nameLocation":"5053:4:22","nodeType":"VariableDeclaration","scope":6165,"src":"5040:17:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":6058,"name":"bytes","nodeType":"ElementaryTypeName","src":"5040:5:22","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4944:119:22"},"returnParameters":{"id":6061,"nodeType":"ParameterList","parameters":[],"src":"5081:0:22"},"scope":6978,"src":"4918:947:22","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":6299,"nodeType":"Block","src":"6399:927:22","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6186,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":6182,"name":"ids","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6173,"src":"6417:3:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":6183,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6421:6:22","memberName":"length","nodeType":"MemberAccess","src":"6417:10:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":6184,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6176,"src":"6431:7:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":6185,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6439:6:22","memberName":"length","nodeType":"MemberAccess","src":"6431:14:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6417:28:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"455243313135353a2069647320616e6420616d6f756e7473206c656e677468206d69736d61746368","id":6187,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6447:42:22","typeDescriptions":{"typeIdentifier":"t_stringliteral_e909e0c9a8f96b4f9af03b716811ece20beb070be416893ed1d50619b5930807","typeString":"literal_string \"ERC1155: ids and amounts length mismatch\""},"value":"ERC1155: ids and amounts length mismatch"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e909e0c9a8f96b4f9af03b716811ece20beb070be416893ed1d50619b5930807","typeString":"literal_string \"ERC1155: ids and amounts length mismatch\""}],"id":6181,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"6409:7:22","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":6188,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6409:81:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6189,"nodeType":"ExpressionStatement","src":"6409:81:22"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":6196,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6191,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6170,"src":"6508:2:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":6194,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6522:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":6193,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6514:7:22","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6192,"name":"address","nodeType":"ElementaryTypeName","src":"6514:7:22","typeDescriptions":{}}},"id":6195,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6514:10:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6508:16:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"455243313135353a207472616e7366657220746f20746865207a65726f2061646472657373","id":6197,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6526:39:22","typeDescriptions":{"typeIdentifier":"t_stringliteral_6faf1c67f278b07c6771dcf4c315a89c21c0eaed11d9ab3d51774da1cfef545d","typeString":"literal_string \"ERC1155: transfer to the zero address\""},"value":"ERC1155: transfer to the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_6faf1c67f278b07c6771dcf4c315a89c21c0eaed11d9ab3d51774da1cfef545d","typeString":"literal_string \"ERC1155: transfer to the zero address\""}],"id":6190,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"6500:7:22","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":6198,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6500:66:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6199,"nodeType":"ExpressionStatement","src":"6500:66:22"},{"assignments":[6201],"declarations":[{"constant":false,"id":6201,"mutability":"mutable","name":"operator","nameLocation":"6585:8:22","nodeType":"VariableDeclaration","scope":6299,"src":"6577:16:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6200,"name":"address","nodeType":"ElementaryTypeName","src":"6577:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":6204,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":6202,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9276,"src":"6596:10:22","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":6203,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6596:12:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"6577:31:22"},{"expression":{"arguments":[{"id":6206,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6201,"src":"6640:8:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6207,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6168,"src":"6650:4:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6208,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6170,"src":"6656:2:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6209,"name":"ids","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6173,"src":"6660:3:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":6210,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6176,"src":"6665:7:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":6211,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6178,"src":"6674:4:22","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":6205,"name":"_beforeTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6802,"src":"6619:20:22","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,address,uint256[] memory,uint256[] memory,bytes memory)"}},"id":6212,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6619:60:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6213,"nodeType":"ExpressionStatement","src":"6619:60:22"},{"body":{"id":6271,"nodeType":"Block","src":"6731:370:22","statements":[{"assignments":[6226],"declarations":[{"constant":false,"id":6226,"mutability":"mutable","name":"id","nameLocation":"6753:2:22","nodeType":"VariableDeclaration","scope":6271,"src":"6745:10:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6225,"name":"uint256","nodeType":"ElementaryTypeName","src":"6745:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6230,"initialValue":{"baseExpression":{"id":6227,"name":"ids","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6173,"src":"6758:3:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":6229,"indexExpression":{"id":6228,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6215,"src":"6762:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6758:6:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6745:19:22"},{"assignments":[6232],"declarations":[{"constant":false,"id":6232,"mutability":"mutable","name":"amount","nameLocation":"6786:6:22","nodeType":"VariableDeclaration","scope":6271,"src":"6778:14:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6231,"name":"uint256","nodeType":"ElementaryTypeName","src":"6778:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6236,"initialValue":{"baseExpression":{"id":6233,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6176,"src":"6795:7:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":6235,"indexExpression":{"id":6234,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6215,"src":"6803:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6795:10:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6778:27:22"},{"assignments":[6238],"declarations":[{"constant":false,"id":6238,"mutability":"mutable","name":"fromBalance","nameLocation":"6828:11:22","nodeType":"VariableDeclaration","scope":6271,"src":"6820:19:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6237,"name":"uint256","nodeType":"ElementaryTypeName","src":"6820:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6244,"initialValue":{"baseExpression":{"baseExpression":{"id":6239,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5781,"src":"6842:9:22","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(uint256 => mapping(address => uint256))"}},"id":6241,"indexExpression":{"id":6240,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6226,"src":"6852:2:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6842:13:22","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":6243,"indexExpression":{"id":6242,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6168,"src":"6856:4:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6842:19:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6820:41:22"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6248,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6246,"name":"fromBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6238,"src":"6883:11:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":6247,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6232,"src":"6898:6:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6883:21:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"455243313135353a20696e73756666696369656e742062616c616e636520666f72207472616e73666572","id":6249,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6906:44:22","typeDescriptions":{"typeIdentifier":"t_stringliteral_8ac7e9556b567c1c94bb4daaa3c3a65be5ac686579615210cb910fb8cb8d65bf","typeString":"literal_string \"ERC1155: insufficient balance for transfer\""},"value":"ERC1155: insufficient balance for transfer"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8ac7e9556b567c1c94bb4daaa3c3a65be5ac686579615210cb910fb8cb8d65bf","typeString":"literal_string \"ERC1155: insufficient balance for transfer\""}],"id":6245,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"6875:7:22","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":6250,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6875:76:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6251,"nodeType":"ExpressionStatement","src":"6875:76:22"},{"id":6262,"nodeType":"UncheckedBlock","src":"6965:85:22","statements":[{"expression":{"id":6260,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":6252,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5781,"src":"6993:9:22","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(uint256 => mapping(address => uint256))"}},"id":6255,"indexExpression":{"id":6253,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6226,"src":"7003:2:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6993:13:22","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":6256,"indexExpression":{"id":6254,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6168,"src":"7007:4:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6993:19:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6259,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6257,"name":"fromBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6238,"src":"7015:11:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":6258,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6232,"src":"7029:6:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7015:20:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6993:42:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6261,"nodeType":"ExpressionStatement","src":"6993:42:22"}]},{"expression":{"id":6269,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":6263,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5781,"src":"7063:9:22","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(uint256 => mapping(address => uint256))"}},"id":6266,"indexExpression":{"id":6264,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6226,"src":"7073:2:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7063:13:22","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":6267,"indexExpression":{"id":6265,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6170,"src":"7077:2:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7063:17:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":6268,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6232,"src":"7084:6:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7063:27:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6270,"nodeType":"ExpressionStatement","src":"7063:27:22"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6221,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6218,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6215,"src":"6710:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":6219,"name":"ids","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6173,"src":"6714:3:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":6220,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6718:6:22","memberName":"length","nodeType":"MemberAccess","src":"6714:10:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6710:14:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6272,"initializationExpression":{"assignments":[6215],"declarations":[{"constant":false,"id":6215,"mutability":"mutable","name":"i","nameLocation":"6703:1:22","nodeType":"VariableDeclaration","scope":6272,"src":"6695:9:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6214,"name":"uint256","nodeType":"ElementaryTypeName","src":"6695:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6217,"initialValue":{"hexValue":"30","id":6216,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6707:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"6695:13:22"},"loopExpression":{"expression":{"id":6223,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"6726:3:22","subExpression":{"id":6222,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6215,"src":"6728:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6224,"nodeType":"ExpressionStatement","src":"6726:3:22"},"nodeType":"ForStatement","src":"6690:411:22"},{"eventCall":{"arguments":[{"id":6274,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6201,"src":"7130:8:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6275,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6168,"src":"7140:4:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6276,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6170,"src":"7146:2:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6277,"name":"ids","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6173,"src":"7150:3:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":6278,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6176,"src":"7155:7:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}],"id":6273,"name":"TransferBatch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7012,"src":"7116:13:22","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$","typeString":"function (address,address,address,uint256[] memory,uint256[] memory)"}},"id":6279,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7116:47:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6280,"nodeType":"EmitStatement","src":"7111:52:22"},{"expression":{"arguments":[{"id":6282,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6201,"src":"7194:8:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6283,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6168,"src":"7204:4:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6284,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6170,"src":"7210:2:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6285,"name":"ids","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6173,"src":"7214:3:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":6286,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6176,"src":"7219:7:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":6287,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6178,"src":"7228:4:22","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":6281,"name":"_afterTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6821,"src":"7174:19:22","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,address,uint256[] memory,uint256[] memory,bytes memory)"}},"id":6288,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7174:59:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6289,"nodeType":"ExpressionStatement","src":"7174:59:22"},{"expression":{"arguments":[{"id":6291,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6201,"src":"7280:8:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6292,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6168,"src":"7290:4:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6293,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6170,"src":"7296:2:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6294,"name":"ids","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6173,"src":"7300:3:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":6295,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6176,"src":"7305:7:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":6296,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6178,"src":"7314:4:22","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":6290,"name":"_doSafeBatchTransferAcceptanceCheck","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6949,"src":"7244:35:22","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,address,uint256[] memory,uint256[] memory,bytes memory)"}},"id":6297,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7244:75:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6298,"nodeType":"ExpressionStatement","src":"7244:75:22"}]},"documentation":{"id":6166,"nodeType":"StructuredDocumentation","src":"5871:335:22","text":" @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_safeTransferFrom}.\n Emits a {TransferBatch} event.\n Requirements:\n - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the\n acceptance magic value."},"id":6300,"implemented":true,"kind":"function","modifiers":[],"name":"_safeBatchTransferFrom","nameLocation":"6220:22:22","nodeType":"FunctionDefinition","parameters":{"id":6179,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6168,"mutability":"mutable","name":"from","nameLocation":"6260:4:22","nodeType":"VariableDeclaration","scope":6300,"src":"6252:12:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6167,"name":"address","nodeType":"ElementaryTypeName","src":"6252:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6170,"mutability":"mutable","name":"to","nameLocation":"6282:2:22","nodeType":"VariableDeclaration","scope":6300,"src":"6274:10:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6169,"name":"address","nodeType":"ElementaryTypeName","src":"6274:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6173,"mutability":"mutable","name":"ids","nameLocation":"6311:3:22","nodeType":"VariableDeclaration","scope":6300,"src":"6294:20:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":6171,"name":"uint256","nodeType":"ElementaryTypeName","src":"6294:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6172,"nodeType":"ArrayTypeName","src":"6294:9:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":6176,"mutability":"mutable","name":"amounts","nameLocation":"6341:7:22","nodeType":"VariableDeclaration","scope":6300,"src":"6324:24:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":6174,"name":"uint256","nodeType":"ElementaryTypeName","src":"6324:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6175,"nodeType":"ArrayTypeName","src":"6324:9:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":6178,"mutability":"mutable","name":"data","nameLocation":"6371:4:22","nodeType":"VariableDeclaration","scope":6300,"src":"6358:17:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":6177,"name":"bytes","nodeType":"ElementaryTypeName","src":"6358:5:22","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6242:139:22"},"returnParameters":{"id":6180,"nodeType":"ParameterList","parameters":[],"src":"6399:0:22"},"scope":6978,"src":"6211:1115:22","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":6310,"nodeType":"Block","src":"8205:30:22","statements":[{"expression":{"id":6308,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6306,"name":"_uri","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5789,"src":"8215:4:22","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":6307,"name":"newuri","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6303,"src":"8222:6:22","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"8215:13:22","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":6309,"nodeType":"ExpressionStatement","src":"8215:13:22"}]},"documentation":{"id":6301,"nodeType":"StructuredDocumentation","src":"7332:812:22","text":" @dev Sets a new URI for all token types, by relying on the token type ID\n substitution mechanism\n https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP].\n By this mechanism, any occurrence of the `\\{id\\}` substring in either the\n URI or any of the amounts in the JSON file at said URI will be replaced by\n clients with the token type ID.\n For example, the `https://token-cdn-domain/\\{id\\}.json` URI would be\n interpreted by clients as\n `https://token-cdn-domain/000000000000000000000000000000000000000000000000000000000004cce0.json`\n for token type ID 0x4cce0.\n See {uri}.\n Because these URIs cannot be meaningfully represented by the {URI} event,\n this function emits no events."},"id":6311,"implemented":true,"kind":"function","modifiers":[],"name":"_setURI","nameLocation":"8158:7:22","nodeType":"FunctionDefinition","parameters":{"id":6304,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6303,"mutability":"mutable","name":"newuri","nameLocation":"8180:6:22","nodeType":"VariableDeclaration","scope":6311,"src":"8166:20:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":6302,"name":"string","nodeType":"ElementaryTypeName","src":"8166:6:22","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"8165:22:22"},"returnParameters":{"id":6305,"nodeType":"ParameterList","parameters":[],"src":"8205:0:22"},"scope":6978,"src":"8149:86:22","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":6411,"nodeType":"Block","src":"8699:580:22","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":6329,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6324,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6314,"src":"8717:2:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":6327,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8731:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":6326,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8723:7:22","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6325,"name":"address","nodeType":"ElementaryTypeName","src":"8723:7:22","typeDescriptions":{}}},"id":6328,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8723:10:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"8717:16:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"455243313135353a206d696e7420746f20746865207a65726f2061646472657373","id":6330,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8735:35:22","typeDescriptions":{"typeIdentifier":"t_stringliteral_ebf031a1b7ee1d0b3a7752b450a3268e8b6c334561b48c1c0ba0f5bac05749f2","typeString":"literal_string \"ERC1155: mint to the zero address\""},"value":"ERC1155: mint to the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ebf031a1b7ee1d0b3a7752b450a3268e8b6c334561b48c1c0ba0f5bac05749f2","typeString":"literal_string \"ERC1155: mint to the zero address\""}],"id":6323,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"8709:7:22","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":6331,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8709:62:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6332,"nodeType":"ExpressionStatement","src":"8709:62:22"},{"assignments":[6334],"declarations":[{"constant":false,"id":6334,"mutability":"mutable","name":"operator","nameLocation":"8790:8:22","nodeType":"VariableDeclaration","scope":6411,"src":"8782:16:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6333,"name":"address","nodeType":"ElementaryTypeName","src":"8782:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":6337,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":6335,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9276,"src":"8801:10:22","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":6336,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8801:12:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"8782:31:22"},{"assignments":[6342],"declarations":[{"constant":false,"id":6342,"mutability":"mutable","name":"ids","nameLocation":"8840:3:22","nodeType":"VariableDeclaration","scope":6411,"src":"8823:20:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":6340,"name":"uint256","nodeType":"ElementaryTypeName","src":"8823:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6341,"nodeType":"ArrayTypeName","src":"8823:9:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":6346,"initialValue":{"arguments":[{"id":6344,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6316,"src":"8864:2:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6343,"name":"_asSingletonArray","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6977,"src":"8846:17:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"}},"id":6345,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8846:21:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"VariableDeclarationStatement","src":"8823:44:22"},{"assignments":[6351],"declarations":[{"constant":false,"id":6351,"mutability":"mutable","name":"amounts","nameLocation":"8894:7:22","nodeType":"VariableDeclaration","scope":6411,"src":"8877:24:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":6349,"name":"uint256","nodeType":"ElementaryTypeName","src":"8877:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6350,"nodeType":"ArrayTypeName","src":"8877:9:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":6355,"initialValue":{"arguments":[{"id":6353,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6318,"src":"8922:6:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6352,"name":"_asSingletonArray","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6977,"src":"8904:17:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"}},"id":6354,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8904:25:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"VariableDeclarationStatement","src":"8877:52:22"},{"expression":{"arguments":[{"id":6357,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6334,"src":"8961:8:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":6360,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8979:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":6359,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8971:7:22","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6358,"name":"address","nodeType":"ElementaryTypeName","src":"8971:7:22","typeDescriptions":{}}},"id":6361,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8971:10:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6362,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6314,"src":"8983:2:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6363,"name":"ids","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6342,"src":"8987:3:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":6364,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6351,"src":"8992:7:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":6365,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6320,"src":"9001:4:22","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":6356,"name":"_beforeTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6802,"src":"8940:20:22","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,address,uint256[] memory,uint256[] memory,bytes memory)"}},"id":6366,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8940:66:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6367,"nodeType":"ExpressionStatement","src":"8940:66:22"},{"expression":{"id":6374,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":6368,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5781,"src":"9017:9:22","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(uint256 => mapping(address => uint256))"}},"id":6371,"indexExpression":{"id":6369,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6316,"src":"9027:2:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9017:13:22","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":6372,"indexExpression":{"id":6370,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6314,"src":"9031:2:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9017:17:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":6373,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6318,"src":"9038:6:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9017:27:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6375,"nodeType":"ExpressionStatement","src":"9017:27:22"},{"eventCall":{"arguments":[{"id":6377,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6334,"src":"9074:8:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":6380,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9092:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":6379,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9084:7:22","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6378,"name":"address","nodeType":"ElementaryTypeName","src":"9084:7:22","typeDescriptions":{}}},"id":6381,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9084:10:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6382,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6314,"src":"9096:2:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6383,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6316,"src":"9100:2:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6384,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6318,"src":"9104:6:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6376,"name":"TransferSingle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6997,"src":"9059:14:22","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,address,uint256,uint256)"}},"id":6385,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9059:52:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6386,"nodeType":"EmitStatement","src":"9054:57:22"},{"expression":{"arguments":[{"id":6388,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6334,"src":"9142:8:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":6391,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9160:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":6390,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9152:7:22","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6389,"name":"address","nodeType":"ElementaryTypeName","src":"9152:7:22","typeDescriptions":{}}},"id":6392,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9152:10:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6393,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6314,"src":"9164:2:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6394,"name":"ids","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6342,"src":"9168:3:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":6395,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6351,"src":"9173:7:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":6396,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6320,"src":"9182:4:22","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":6387,"name":"_afterTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6821,"src":"9122:19:22","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,address,uint256[] memory,uint256[] memory,bytes memory)"}},"id":6397,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9122:65:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6398,"nodeType":"ExpressionStatement","src":"9122:65:22"},{"expression":{"arguments":[{"id":6400,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6334,"src":"9229:8:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":6403,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9247:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":6402,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9239:7:22","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6401,"name":"address","nodeType":"ElementaryTypeName","src":"9239:7:22","typeDescriptions":{}}},"id":6404,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9239:10:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6405,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6314,"src":"9251:2:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6406,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6316,"src":"9255:2:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6407,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6318,"src":"9259:6:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6408,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6320,"src":"9267:4:22","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":6399,"name":"_doSafeTransferAcceptanceCheck","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6884,"src":"9198:30:22","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,address,uint256,uint256,bytes memory)"}},"id":6409,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9198:74:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6410,"nodeType":"ExpressionStatement","src":"9198:74:22"}]},"documentation":{"id":6312,"nodeType":"StructuredDocumentation","src":"8241:362:22","text":" @dev Creates `amount` tokens of token type `id`, and assigns them to `to`.\n Emits a {TransferSingle} event.\n Requirements:\n - `to` cannot be the zero address.\n - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the\n acceptance magic value."},"id":6412,"implemented":true,"kind":"function","modifiers":[],"name":"_mint","nameLocation":"8617:5:22","nodeType":"FunctionDefinition","parameters":{"id":6321,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6314,"mutability":"mutable","name":"to","nameLocation":"8631:2:22","nodeType":"VariableDeclaration","scope":6412,"src":"8623:10:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6313,"name":"address","nodeType":"ElementaryTypeName","src":"8623:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6316,"mutability":"mutable","name":"id","nameLocation":"8643:2:22","nodeType":"VariableDeclaration","scope":6412,"src":"8635:10:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6315,"name":"uint256","nodeType":"ElementaryTypeName","src":"8635:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6318,"mutability":"mutable","name":"amount","nameLocation":"8655:6:22","nodeType":"VariableDeclaration","scope":6412,"src":"8647:14:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6317,"name":"uint256","nodeType":"ElementaryTypeName","src":"8647:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6320,"mutability":"mutable","name":"data","nameLocation":"8676:4:22","nodeType":"VariableDeclaration","scope":6412,"src":"8663:17:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":6319,"name":"bytes","nodeType":"ElementaryTypeName","src":"8663:5:22","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"8622:59:22"},"returnParameters":{"id":6322,"nodeType":"ParameterList","parameters":[],"src":"8699:0:22"},"scope":6978,"src":"8608:671:22","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":6522,"nodeType":"Block","src":"9823:637:22","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":6432,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6427,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6415,"src":"9841:2:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":6430,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9855:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":6429,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9847:7:22","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6428,"name":"address","nodeType":"ElementaryTypeName","src":"9847:7:22","typeDescriptions":{}}},"id":6431,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9847:10:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9841:16:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"455243313135353a206d696e7420746f20746865207a65726f2061646472657373","id":6433,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9859:35:22","typeDescriptions":{"typeIdentifier":"t_stringliteral_ebf031a1b7ee1d0b3a7752b450a3268e8b6c334561b48c1c0ba0f5bac05749f2","typeString":"literal_string \"ERC1155: mint to the zero address\""},"value":"ERC1155: mint to the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ebf031a1b7ee1d0b3a7752b450a3268e8b6c334561b48c1c0ba0f5bac05749f2","typeString":"literal_string \"ERC1155: mint to the zero address\""}],"id":6426,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"9833:7:22","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":6434,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9833:62:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6435,"nodeType":"ExpressionStatement","src":"9833:62:22"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6441,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":6437,"name":"ids","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6418,"src":"9913:3:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":6438,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9917:6:22","memberName":"length","nodeType":"MemberAccess","src":"9913:10:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":6439,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6421,"src":"9927:7:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":6440,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9935:6:22","memberName":"length","nodeType":"MemberAccess","src":"9927:14:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9913:28:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"455243313135353a2069647320616e6420616d6f756e7473206c656e677468206d69736d61746368","id":6442,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9943:42:22","typeDescriptions":{"typeIdentifier":"t_stringliteral_e909e0c9a8f96b4f9af03b716811ece20beb070be416893ed1d50619b5930807","typeString":"literal_string \"ERC1155: ids and amounts length mismatch\""},"value":"ERC1155: ids and amounts length mismatch"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e909e0c9a8f96b4f9af03b716811ece20beb070be416893ed1d50619b5930807","typeString":"literal_string \"ERC1155: ids and amounts length mismatch\""}],"id":6436,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"9905:7:22","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":6443,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9905:81:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6444,"nodeType":"ExpressionStatement","src":"9905:81:22"},{"assignments":[6446],"declarations":[{"constant":false,"id":6446,"mutability":"mutable","name":"operator","nameLocation":"10005:8:22","nodeType":"VariableDeclaration","scope":6522,"src":"9997:16:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6445,"name":"address","nodeType":"ElementaryTypeName","src":"9997:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":6449,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":6447,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9276,"src":"10016:10:22","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":6448,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10016:12:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"9997:31:22"},{"expression":{"arguments":[{"id":6451,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6446,"src":"10060:8:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":6454,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10078:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":6453,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10070:7:22","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6452,"name":"address","nodeType":"ElementaryTypeName","src":"10070:7:22","typeDescriptions":{}}},"id":6455,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10070:10:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6456,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6415,"src":"10082:2:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6457,"name":"ids","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6418,"src":"10086:3:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":6458,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6421,"src":"10091:7:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":6459,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6423,"src":"10100:4:22","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":6450,"name":"_beforeTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6802,"src":"10039:20:22","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,address,uint256[] memory,uint256[] memory,bytes memory)"}},"id":6460,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10039:66:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6461,"nodeType":"ExpressionStatement","src":"10039:66:22"},{"body":{"id":6485,"nodeType":"Block","src":"10157:60:22","statements":[{"expression":{"id":6483,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":6473,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5781,"src":"10171:9:22","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(uint256 => mapping(address => uint256))"}},"id":6478,"indexExpression":{"baseExpression":{"id":6474,"name":"ids","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6418,"src":"10181:3:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":6476,"indexExpression":{"id":6475,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6463,"src":"10185:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10181:6:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10171:17:22","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":6479,"indexExpression":{"id":6477,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6415,"src":"10189:2:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"10171:21:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"baseExpression":{"id":6480,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6421,"src":"10196:7:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":6482,"indexExpression":{"id":6481,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6463,"src":"10204:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10196:10:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10171:35:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6484,"nodeType":"ExpressionStatement","src":"10171:35:22"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6469,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6466,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6463,"src":"10136:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":6467,"name":"ids","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6418,"src":"10140:3:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":6468,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10144:6:22","memberName":"length","nodeType":"MemberAccess","src":"10140:10:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10136:14:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6486,"initializationExpression":{"assignments":[6463],"declarations":[{"constant":false,"id":6463,"mutability":"mutable","name":"i","nameLocation":"10129:1:22","nodeType":"VariableDeclaration","scope":6486,"src":"10121:9:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6462,"name":"uint256","nodeType":"ElementaryTypeName","src":"10121:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6465,"initialValue":{"hexValue":"30","id":6464,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10133:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"10121:13:22"},"loopExpression":{"expression":{"id":6471,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"10152:3:22","subExpression":{"id":6470,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6463,"src":"10152:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6472,"nodeType":"ExpressionStatement","src":"10152:3:22"},"nodeType":"ForStatement","src":"10116:101:22"},{"eventCall":{"arguments":[{"id":6488,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6446,"src":"10246:8:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":6491,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10264:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":6490,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10256:7:22","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6489,"name":"address","nodeType":"ElementaryTypeName","src":"10256:7:22","typeDescriptions":{}}},"id":6492,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10256:10:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6493,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6415,"src":"10268:2:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6494,"name":"ids","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6418,"src":"10272:3:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":6495,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6421,"src":"10277:7:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}],"id":6487,"name":"TransferBatch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7012,"src":"10232:13:22","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$","typeString":"function (address,address,address,uint256[] memory,uint256[] memory)"}},"id":6496,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10232:53:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6497,"nodeType":"EmitStatement","src":"10227:58:22"},{"expression":{"arguments":[{"id":6499,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6446,"src":"10316:8:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":6502,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10334:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":6501,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10326:7:22","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6500,"name":"address","nodeType":"ElementaryTypeName","src":"10326:7:22","typeDescriptions":{}}},"id":6503,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10326:10:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6504,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6415,"src":"10338:2:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6505,"name":"ids","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6418,"src":"10342:3:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":6506,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6421,"src":"10347:7:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":6507,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6423,"src":"10356:4:22","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":6498,"name":"_afterTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6821,"src":"10296:19:22","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,address,uint256[] memory,uint256[] memory,bytes memory)"}},"id":6508,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10296:65:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6509,"nodeType":"ExpressionStatement","src":"10296:65:22"},{"expression":{"arguments":[{"id":6511,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6446,"src":"10408:8:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":6514,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10426:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":6513,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10418:7:22","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6512,"name":"address","nodeType":"ElementaryTypeName","src":"10418:7:22","typeDescriptions":{}}},"id":6515,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10418:10:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6516,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6415,"src":"10430:2:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6517,"name":"ids","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6418,"src":"10434:3:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":6518,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6421,"src":"10439:7:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":6519,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6423,"src":"10448:4:22","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":6510,"name":"_doSafeBatchTransferAcceptanceCheck","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6949,"src":"10372:35:22","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,address,uint256[] memory,uint256[] memory,bytes memory)"}},"id":6520,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10372:81:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6521,"nodeType":"ExpressionStatement","src":"10372:81:22"}]},"documentation":{"id":6413,"nodeType":"StructuredDocumentation","src":"9285:379:22","text":" @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_mint}.\n Emits a {TransferBatch} event.\n Requirements:\n - `ids` and `amounts` must have the same length.\n - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the\n acceptance magic value."},"id":6523,"implemented":true,"kind":"function","modifiers":[],"name":"_mintBatch","nameLocation":"9678:10:22","nodeType":"FunctionDefinition","parameters":{"id":6424,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6415,"mutability":"mutable","name":"to","nameLocation":"9706:2:22","nodeType":"VariableDeclaration","scope":6523,"src":"9698:10:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6414,"name":"address","nodeType":"ElementaryTypeName","src":"9698:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6418,"mutability":"mutable","name":"ids","nameLocation":"9735:3:22","nodeType":"VariableDeclaration","scope":6523,"src":"9718:20:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":6416,"name":"uint256","nodeType":"ElementaryTypeName","src":"9718:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6417,"nodeType":"ArrayTypeName","src":"9718:9:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":6421,"mutability":"mutable","name":"amounts","nameLocation":"9765:7:22","nodeType":"VariableDeclaration","scope":6523,"src":"9748:24:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":6419,"name":"uint256","nodeType":"ElementaryTypeName","src":"9748:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6420,"nodeType":"ArrayTypeName","src":"9748:9:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":6423,"mutability":"mutable","name":"data","nameLocation":"9795:4:22","nodeType":"VariableDeclaration","scope":6523,"src":"9782:17:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":6422,"name":"bytes","nodeType":"ElementaryTypeName","src":"9782:5:22","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"9688:117:22"},"returnParameters":{"id":6425,"nodeType":"ParameterList","parameters":[],"src":"9823:0:22"},"scope":6978,"src":"9669:791:22","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":6627,"nodeType":"Block","src":"10820:682:22","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":6539,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6534,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6526,"src":"10838:4:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":6537,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10854:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":6536,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10846:7:22","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6535,"name":"address","nodeType":"ElementaryTypeName","src":"10846:7:22","typeDescriptions":{}}},"id":6538,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10846:10:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"10838:18:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"455243313135353a206275726e2066726f6d20746865207a65726f2061646472657373","id":6540,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10858:37:22","typeDescriptions":{"typeIdentifier":"t_stringliteral_87fd4aee52f5758d127cd9704d5ffef70f36ed1e87eb99b6f40e37a25c79a76a","typeString":"literal_string \"ERC1155: burn from the zero address\""},"value":"ERC1155: burn from the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_87fd4aee52f5758d127cd9704d5ffef70f36ed1e87eb99b6f40e37a25c79a76a","typeString":"literal_string \"ERC1155: burn from the zero address\""}],"id":6533,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"10830:7:22","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":6541,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10830:66:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6542,"nodeType":"ExpressionStatement","src":"10830:66:22"},{"assignments":[6544],"declarations":[{"constant":false,"id":6544,"mutability":"mutable","name":"operator","nameLocation":"10915:8:22","nodeType":"VariableDeclaration","scope":6627,"src":"10907:16:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6543,"name":"address","nodeType":"ElementaryTypeName","src":"10907:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":6547,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":6545,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9276,"src":"10926:10:22","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":6546,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10926:12:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"10907:31:22"},{"assignments":[6552],"declarations":[{"constant":false,"id":6552,"mutability":"mutable","name":"ids","nameLocation":"10965:3:22","nodeType":"VariableDeclaration","scope":6627,"src":"10948:20:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":6550,"name":"uint256","nodeType":"ElementaryTypeName","src":"10948:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6551,"nodeType":"ArrayTypeName","src":"10948:9:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":6556,"initialValue":{"arguments":[{"id":6554,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6528,"src":"10989:2:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6553,"name":"_asSingletonArray","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6977,"src":"10971:17:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"}},"id":6555,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10971:21:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"VariableDeclarationStatement","src":"10948:44:22"},{"assignments":[6561],"declarations":[{"constant":false,"id":6561,"mutability":"mutable","name":"amounts","nameLocation":"11019:7:22","nodeType":"VariableDeclaration","scope":6627,"src":"11002:24:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":6559,"name":"uint256","nodeType":"ElementaryTypeName","src":"11002:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6560,"nodeType":"ArrayTypeName","src":"11002:9:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":6565,"initialValue":{"arguments":[{"id":6563,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6530,"src":"11047:6:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6562,"name":"_asSingletonArray","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6977,"src":"11029:17:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"}},"id":6564,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11029:25:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"VariableDeclarationStatement","src":"11002:52:22"},{"expression":{"arguments":[{"id":6567,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6544,"src":"11086:8:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6568,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6526,"src":"11096:4:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":6571,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11110:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":6570,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11102:7:22","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6569,"name":"address","nodeType":"ElementaryTypeName","src":"11102:7:22","typeDescriptions":{}}},"id":6572,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11102:10:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6573,"name":"ids","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6552,"src":"11114:3:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":6574,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6561,"src":"11119:7:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"hexValue":"","id":6575,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11128:2:22","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":6566,"name":"_beforeTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6802,"src":"11065:20:22","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,address,uint256[] memory,uint256[] memory,bytes memory)"}},"id":6576,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11065:66:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6577,"nodeType":"ExpressionStatement","src":"11065:66:22"},{"assignments":[6579],"declarations":[{"constant":false,"id":6579,"mutability":"mutable","name":"fromBalance","nameLocation":"11150:11:22","nodeType":"VariableDeclaration","scope":6627,"src":"11142:19:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6578,"name":"uint256","nodeType":"ElementaryTypeName","src":"11142:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6585,"initialValue":{"baseExpression":{"baseExpression":{"id":6580,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5781,"src":"11164:9:22","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(uint256 => mapping(address => uint256))"}},"id":6582,"indexExpression":{"id":6581,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6528,"src":"11174:2:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11164:13:22","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":6584,"indexExpression":{"id":6583,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6526,"src":"11178:4:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11164:19:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"11142:41:22"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6589,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6587,"name":"fromBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6579,"src":"11201:11:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":6588,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6530,"src":"11216:6:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11201:21:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"455243313135353a206275726e20616d6f756e7420657863656564732062616c616e6365","id":6590,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11224:38:22","typeDescriptions":{"typeIdentifier":"t_stringliteral_294a5de01910e2350ff231c633ae2d453ed6b1b72c75506234b7aace63eae685","typeString":"literal_string \"ERC1155: burn amount exceeds balance\""},"value":"ERC1155: burn amount exceeds balance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_294a5de01910e2350ff231c633ae2d453ed6b1b72c75506234b7aace63eae685","typeString":"literal_string \"ERC1155: burn amount exceeds balance\""}],"id":6586,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"11193:7:22","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":6591,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11193:70:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6592,"nodeType":"ExpressionStatement","src":"11193:70:22"},{"id":6603,"nodeType":"UncheckedBlock","src":"11273:77:22","statements":[{"expression":{"id":6601,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":6593,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5781,"src":"11297:9:22","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(uint256 => mapping(address => uint256))"}},"id":6596,"indexExpression":{"id":6594,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6528,"src":"11307:2:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11297:13:22","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":6597,"indexExpression":{"id":6595,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6526,"src":"11311:4:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"11297:19:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6600,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6598,"name":"fromBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6579,"src":"11319:11:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":6599,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6530,"src":"11333:6:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11319:20:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11297:42:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6602,"nodeType":"ExpressionStatement","src":"11297:42:22"}]},{"eventCall":{"arguments":[{"id":6605,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6544,"src":"11380:8:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6606,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6526,"src":"11390:4:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":6609,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11404:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":6608,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11396:7:22","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6607,"name":"address","nodeType":"ElementaryTypeName","src":"11396:7:22","typeDescriptions":{}}},"id":6610,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11396:10:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6611,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6528,"src":"11408:2:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6612,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6530,"src":"11412:6:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6604,"name":"TransferSingle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6997,"src":"11365:14:22","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,address,uint256,uint256)"}},"id":6613,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11365:54:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6614,"nodeType":"EmitStatement","src":"11360:59:22"},{"expression":{"arguments":[{"id":6616,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6544,"src":"11450:8:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6617,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6526,"src":"11460:4:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":6620,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11474:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":6619,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11466:7:22","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6618,"name":"address","nodeType":"ElementaryTypeName","src":"11466:7:22","typeDescriptions":{}}},"id":6621,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11466:10:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6622,"name":"ids","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6552,"src":"11478:3:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":6623,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6561,"src":"11483:7:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"hexValue":"","id":6624,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11492:2:22","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":6615,"name":"_afterTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6821,"src":"11430:19:22","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,address,uint256[] memory,uint256[] memory,bytes memory)"}},"id":6625,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11430:65:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6626,"nodeType":"ExpressionStatement","src":"11430:65:22"}]},"documentation":{"id":6524,"nodeType":"StructuredDocumentation","src":"10466:275:22","text":" @dev Destroys `amount` tokens of token type `id` from `from`\n Emits a {TransferSingle} event.\n Requirements:\n - `from` cannot be the zero address.\n - `from` must have at least `amount` tokens of token type `id`."},"id":6628,"implemented":true,"kind":"function","modifiers":[],"name":"_burn","nameLocation":"10755:5:22","nodeType":"FunctionDefinition","parameters":{"id":6531,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6526,"mutability":"mutable","name":"from","nameLocation":"10769:4:22","nodeType":"VariableDeclaration","scope":6628,"src":"10761:12:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6525,"name":"address","nodeType":"ElementaryTypeName","src":"10761:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6528,"mutability":"mutable","name":"id","nameLocation":"10783:2:22","nodeType":"VariableDeclaration","scope":6628,"src":"10775:10:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6527,"name":"uint256","nodeType":"ElementaryTypeName","src":"10775:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6530,"mutability":"mutable","name":"amount","nameLocation":"10795:6:22","nodeType":"VariableDeclaration","scope":6628,"src":"10787:14:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6529,"name":"uint256","nodeType":"ElementaryTypeName","src":"10787:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10760:42:22"},"returnParameters":{"id":6532,"nodeType":"ParameterList","parameters":[],"src":"10820:0:22"},"scope":6978,"src":"10746:756:22","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":6750,"nodeType":"Block","src":"11840:814:22","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":6646,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6641,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6631,"src":"11858:4:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":6644,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11874:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":6643,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11866:7:22","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6642,"name":"address","nodeType":"ElementaryTypeName","src":"11866:7:22","typeDescriptions":{}}},"id":6645,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11866:10:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"11858:18:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"455243313135353a206275726e2066726f6d20746865207a65726f2061646472657373","id":6647,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11878:37:22","typeDescriptions":{"typeIdentifier":"t_stringliteral_87fd4aee52f5758d127cd9704d5ffef70f36ed1e87eb99b6f40e37a25c79a76a","typeString":"literal_string \"ERC1155: burn from the zero address\""},"value":"ERC1155: burn from the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_87fd4aee52f5758d127cd9704d5ffef70f36ed1e87eb99b6f40e37a25c79a76a","typeString":"literal_string \"ERC1155: burn from the zero address\""}],"id":6640,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"11850:7:22","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":6648,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11850:66:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6649,"nodeType":"ExpressionStatement","src":"11850:66:22"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6655,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":6651,"name":"ids","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6634,"src":"11934:3:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":6652,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11938:6:22","memberName":"length","nodeType":"MemberAccess","src":"11934:10:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":6653,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6637,"src":"11948:7:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":6654,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11956:6:22","memberName":"length","nodeType":"MemberAccess","src":"11948:14:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11934:28:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"455243313135353a2069647320616e6420616d6f756e7473206c656e677468206d69736d61746368","id":6656,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11964:42:22","typeDescriptions":{"typeIdentifier":"t_stringliteral_e909e0c9a8f96b4f9af03b716811ece20beb070be416893ed1d50619b5930807","typeString":"literal_string \"ERC1155: ids and amounts length mismatch\""},"value":"ERC1155: ids and amounts length mismatch"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e909e0c9a8f96b4f9af03b716811ece20beb070be416893ed1d50619b5930807","typeString":"literal_string \"ERC1155: ids and amounts length mismatch\""}],"id":6650,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"11926:7:22","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":6657,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11926:81:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6658,"nodeType":"ExpressionStatement","src":"11926:81:22"},{"assignments":[6660],"declarations":[{"constant":false,"id":6660,"mutability":"mutable","name":"operator","nameLocation":"12026:8:22","nodeType":"VariableDeclaration","scope":6750,"src":"12018:16:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6659,"name":"address","nodeType":"ElementaryTypeName","src":"12018:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":6663,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":6661,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9276,"src":"12037:10:22","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":6662,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12037:12:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"12018:31:22"},{"expression":{"arguments":[{"id":6665,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6660,"src":"12081:8:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6666,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6631,"src":"12091:4:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":6669,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12105:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":6668,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12097:7:22","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6667,"name":"address","nodeType":"ElementaryTypeName","src":"12097:7:22","typeDescriptions":{}}},"id":6670,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12097:10:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6671,"name":"ids","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6634,"src":"12109:3:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":6672,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6637,"src":"12114:7:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"hexValue":"","id":6673,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12123:2:22","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":6664,"name":"_beforeTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6802,"src":"12060:20:22","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,address,uint256[] memory,uint256[] memory,bytes memory)"}},"id":6674,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12060:66:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6675,"nodeType":"ExpressionStatement","src":"12060:66:22"},{"body":{"id":6725,"nodeType":"Block","src":"12178:323:22","statements":[{"assignments":[6688],"declarations":[{"constant":false,"id":6688,"mutability":"mutable","name":"id","nameLocation":"12200:2:22","nodeType":"VariableDeclaration","scope":6725,"src":"12192:10:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6687,"name":"uint256","nodeType":"ElementaryTypeName","src":"12192:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6692,"initialValue":{"baseExpression":{"id":6689,"name":"ids","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6634,"src":"12205:3:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":6691,"indexExpression":{"id":6690,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6677,"src":"12209:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12205:6:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12192:19:22"},{"assignments":[6694],"declarations":[{"constant":false,"id":6694,"mutability":"mutable","name":"amount","nameLocation":"12233:6:22","nodeType":"VariableDeclaration","scope":6725,"src":"12225:14:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6693,"name":"uint256","nodeType":"ElementaryTypeName","src":"12225:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6698,"initialValue":{"baseExpression":{"id":6695,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6637,"src":"12242:7:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":6697,"indexExpression":{"id":6696,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6677,"src":"12250:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12242:10:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12225:27:22"},{"assignments":[6700],"declarations":[{"constant":false,"id":6700,"mutability":"mutable","name":"fromBalance","nameLocation":"12275:11:22","nodeType":"VariableDeclaration","scope":6725,"src":"12267:19:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6699,"name":"uint256","nodeType":"ElementaryTypeName","src":"12267:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6706,"initialValue":{"baseExpression":{"baseExpression":{"id":6701,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5781,"src":"12289:9:22","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(uint256 => mapping(address => uint256))"}},"id":6703,"indexExpression":{"id":6702,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6688,"src":"12299:2:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12289:13:22","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":6705,"indexExpression":{"id":6704,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6631,"src":"12303:4:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12289:19:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12267:41:22"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6710,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6708,"name":"fromBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6700,"src":"12330:11:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":6709,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6694,"src":"12345:6:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12330:21:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"455243313135353a206275726e20616d6f756e7420657863656564732062616c616e6365","id":6711,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12353:38:22","typeDescriptions":{"typeIdentifier":"t_stringliteral_294a5de01910e2350ff231c633ae2d453ed6b1b72c75506234b7aace63eae685","typeString":"literal_string \"ERC1155: burn amount exceeds balance\""},"value":"ERC1155: burn amount exceeds balance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_294a5de01910e2350ff231c633ae2d453ed6b1b72c75506234b7aace63eae685","typeString":"literal_string \"ERC1155: burn amount exceeds balance\""}],"id":6707,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"12322:7:22","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":6712,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12322:70:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6713,"nodeType":"ExpressionStatement","src":"12322:70:22"},{"id":6724,"nodeType":"UncheckedBlock","src":"12406:85:22","statements":[{"expression":{"id":6722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":6714,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5781,"src":"12434:9:22","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(uint256 => mapping(address => uint256))"}},"id":6717,"indexExpression":{"id":6715,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6688,"src":"12444:2:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12434:13:22","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":6718,"indexExpression":{"id":6716,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6631,"src":"12448:4:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"12434:19:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6721,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6719,"name":"fromBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6700,"src":"12456:11:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":6720,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6694,"src":"12470:6:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12456:20:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12434:42:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6723,"nodeType":"ExpressionStatement","src":"12434:42:22"}]}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6683,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6680,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6677,"src":"12157:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":6681,"name":"ids","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6634,"src":"12161:3:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":6682,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12165:6:22","memberName":"length","nodeType":"MemberAccess","src":"12161:10:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12157:14:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6726,"initializationExpression":{"assignments":[6677],"declarations":[{"constant":false,"id":6677,"mutability":"mutable","name":"i","nameLocation":"12150:1:22","nodeType":"VariableDeclaration","scope":6726,"src":"12142:9:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6676,"name":"uint256","nodeType":"ElementaryTypeName","src":"12142:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6679,"initialValue":{"hexValue":"30","id":6678,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12154:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"12142:13:22"},"loopExpression":{"expression":{"id":6685,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"12173:3:22","subExpression":{"id":6684,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6677,"src":"12173:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6686,"nodeType":"ExpressionStatement","src":"12173:3:22"},"nodeType":"ForStatement","src":"12137:364:22"},{"eventCall":{"arguments":[{"id":6728,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6660,"src":"12530:8:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6729,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6631,"src":"12540:4:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":6732,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12554:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":6731,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12546:7:22","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6730,"name":"address","nodeType":"ElementaryTypeName","src":"12546:7:22","typeDescriptions":{}}},"id":6733,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12546:10:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6734,"name":"ids","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6634,"src":"12558:3:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":6735,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6637,"src":"12563:7:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}],"id":6727,"name":"TransferBatch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7012,"src":"12516:13:22","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$","typeString":"function (address,address,address,uint256[] memory,uint256[] memory)"}},"id":6736,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12516:55:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6737,"nodeType":"EmitStatement","src":"12511:60:22"},{"expression":{"arguments":[{"id":6739,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6660,"src":"12602:8:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6740,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6631,"src":"12612:4:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":6743,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12626:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":6742,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12618:7:22","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6741,"name":"address","nodeType":"ElementaryTypeName","src":"12618:7:22","typeDescriptions":{}}},"id":6744,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12618:10:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6745,"name":"ids","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6634,"src":"12630:3:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":6746,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6637,"src":"12635:7:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"hexValue":"","id":6747,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12644:2:22","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":6738,"name":"_afterTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6821,"src":"12582:19:22","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,address,uint256[] memory,uint256[] memory,bytes memory)"}},"id":6748,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12582:65:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6749,"nodeType":"ExpressionStatement","src":"12582:65:22"}]},"documentation":{"id":6629,"nodeType":"StructuredDocumentation","src":"11508:228:22","text":" @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_burn}.\n Emits a {TransferBatch} event.\n Requirements:\n - `ids` and `amounts` must have the same length."},"id":6751,"implemented":true,"kind":"function","modifiers":[],"name":"_burnBatch","nameLocation":"11750:10:22","nodeType":"FunctionDefinition","parameters":{"id":6638,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6631,"mutability":"mutable","name":"from","nameLocation":"11769:4:22","nodeType":"VariableDeclaration","scope":6751,"src":"11761:12:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6630,"name":"address","nodeType":"ElementaryTypeName","src":"11761:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6634,"mutability":"mutable","name":"ids","nameLocation":"11792:3:22","nodeType":"VariableDeclaration","scope":6751,"src":"11775:20:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":6632,"name":"uint256","nodeType":"ElementaryTypeName","src":"11775:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6633,"nodeType":"ArrayTypeName","src":"11775:9:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":6637,"mutability":"mutable","name":"amounts","nameLocation":"11814:7:22","nodeType":"VariableDeclaration","scope":6751,"src":"11797:24:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":6635,"name":"uint256","nodeType":"ElementaryTypeName","src":"11797:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6636,"nodeType":"ArrayTypeName","src":"11797:9:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"11760:62:22"},"returnParameters":{"id":6639,"nodeType":"ParameterList","parameters":[],"src":"11840:0:22"},"scope":6978,"src":"11741:913:22","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":6782,"nodeType":"Block","src":"12883:200:22","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":6764,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6762,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6754,"src":"12901:5:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6763,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6756,"src":"12910:8:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"12901:17:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"455243313135353a2073657474696e6720617070726f76616c2073746174757320666f722073656c66","id":6765,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12920:43:22","typeDescriptions":{"typeIdentifier":"t_stringliteral_df9806c6dc743de602e49918a67b580590d69ab768bdb59f977c0a884a91a7c2","typeString":"literal_string \"ERC1155: setting approval status for self\""},"value":"ERC1155: setting approval status for self"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_df9806c6dc743de602e49918a67b580590d69ab768bdb59f977c0a884a91a7c2","typeString":"literal_string \"ERC1155: setting approval status for self\""}],"id":6761,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"12893:7:22","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":6766,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12893:71:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6767,"nodeType":"ExpressionStatement","src":"12893:71:22"},{"expression":{"id":6774,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":6768,"name":"_operatorApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5787,"src":"12974:18:22","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":6771,"indexExpression":{"id":6769,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6754,"src":"12993:5:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12974:25:22","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":6772,"indexExpression":{"id":6770,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6756,"src":"13000:8:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"12974:35:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":6773,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6758,"src":"13012:8:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"12974:46:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6775,"nodeType":"ExpressionStatement","src":"12974:46:22"},{"eventCall":{"arguments":[{"id":6777,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6754,"src":"13050:5:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6778,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6756,"src":"13057:8:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6779,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6758,"src":"13067:8:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":6776,"name":"ApprovalForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7021,"src":"13035:14:22","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,address,bool)"}},"id":6780,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13035:41:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6781,"nodeType":"EmitStatement","src":"13030:46:22"}]},"documentation":{"id":6752,"nodeType":"StructuredDocumentation","src":"12660:125:22","text":" @dev Approve `operator` to operate on all of `owner` tokens\n Emits an {ApprovalForAll} event."},"id":6783,"implemented":true,"kind":"function","modifiers":[],"name":"_setApprovalForAll","nameLocation":"12799:18:22","nodeType":"FunctionDefinition","parameters":{"id":6759,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6754,"mutability":"mutable","name":"owner","nameLocation":"12826:5:22","nodeType":"VariableDeclaration","scope":6783,"src":"12818:13:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6753,"name":"address","nodeType":"ElementaryTypeName","src":"12818:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6756,"mutability":"mutable","name":"operator","nameLocation":"12841:8:22","nodeType":"VariableDeclaration","scope":6783,"src":"12833:16:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6755,"name":"address","nodeType":"ElementaryTypeName","src":"12833:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6758,"mutability":"mutable","name":"approved","nameLocation":"12856:8:22","nodeType":"VariableDeclaration","scope":6783,"src":"12851:13:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6757,"name":"bool","nodeType":"ElementaryTypeName","src":"12851:4:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"12817:48:22"},"returnParameters":{"id":6760,"nodeType":"ParameterList","parameters":[],"src":"12883:0:22"},"scope":6978,"src":"12790:293:22","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":6801,"nodeType":"Block","src":"14231:2:22","statements":[]},"documentation":{"id":6784,"nodeType":"StructuredDocumentation","src":"13089:925:22","text":" @dev Hook that is called before any token transfer. This includes minting\n and burning, as well as batched variants.\n The same hook is called on both single and batched variants. For single\n transfers, the length of the `ids` and `amounts` arrays will be 1.\n Calling conditions (for each `id` and `amount` pair):\n - When `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n of token type `id` will be transferred to `to`.\n - When `from` is zero, `amount` tokens of token type `id` will be minted\n for `to`.\n - when `to` is zero, `amount` of ``from``'s tokens of token type `id`\n will be burned.\n - `from` and `to` are never both zero.\n - `ids` and `amounts` have the same, non-zero length.\n To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]."},"id":6802,"implemented":true,"kind":"function","modifiers":[],"name":"_beforeTokenTransfer","nameLocation":"14028:20:22","nodeType":"FunctionDefinition","parameters":{"id":6799,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6786,"mutability":"mutable","name":"operator","nameLocation":"14066:8:22","nodeType":"VariableDeclaration","scope":6802,"src":"14058:16:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6785,"name":"address","nodeType":"ElementaryTypeName","src":"14058:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6788,"mutability":"mutable","name":"from","nameLocation":"14092:4:22","nodeType":"VariableDeclaration","scope":6802,"src":"14084:12:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6787,"name":"address","nodeType":"ElementaryTypeName","src":"14084:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6790,"mutability":"mutable","name":"to","nameLocation":"14114:2:22","nodeType":"VariableDeclaration","scope":6802,"src":"14106:10:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6789,"name":"address","nodeType":"ElementaryTypeName","src":"14106:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6793,"mutability":"mutable","name":"ids","nameLocation":"14143:3:22","nodeType":"VariableDeclaration","scope":6802,"src":"14126:20:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":6791,"name":"uint256","nodeType":"ElementaryTypeName","src":"14126:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6792,"nodeType":"ArrayTypeName","src":"14126:9:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":6796,"mutability":"mutable","name":"amounts","nameLocation":"14173:7:22","nodeType":"VariableDeclaration","scope":6802,"src":"14156:24:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":6794,"name":"uint256","nodeType":"ElementaryTypeName","src":"14156:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6795,"nodeType":"ArrayTypeName","src":"14156:9:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":6798,"mutability":"mutable","name":"data","nameLocation":"14203:4:22","nodeType":"VariableDeclaration","scope":6802,"src":"14190:17:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":6797,"name":"bytes","nodeType":"ElementaryTypeName","src":"14190:5:22","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"14048:165:22"},"returnParameters":{"id":6800,"nodeType":"ParameterList","parameters":[],"src":"14231:0:22"},"scope":6978,"src":"14019:214:22","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":6820,"nodeType":"Block","src":"15377:2:22","statements":[]},"documentation":{"id":6803,"nodeType":"StructuredDocumentation","src":"14239:922:22","text":" @dev Hook that is called after any token transfer. This includes minting\n and burning, as well as batched variants.\n The same hook is called on both single and batched variants. For single\n transfers, the length of the `id` and `amount` arrays will be 1.\n Calling conditions (for each `id` and `amount` pair):\n - When `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n of token type `id` will be transferred to `to`.\n - When `from` is zero, `amount` tokens of token type `id` will be minted\n for `to`.\n - when `to` is zero, `amount` of ``from``'s tokens of token type `id`\n will be burned.\n - `from` and `to` are never both zero.\n - `ids` and `amounts` have the same, non-zero length.\n To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]."},"id":6821,"implemented":true,"kind":"function","modifiers":[],"name":"_afterTokenTransfer","nameLocation":"15175:19:22","nodeType":"FunctionDefinition","parameters":{"id":6818,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6805,"mutability":"mutable","name":"operator","nameLocation":"15212:8:22","nodeType":"VariableDeclaration","scope":6821,"src":"15204:16:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6804,"name":"address","nodeType":"ElementaryTypeName","src":"15204:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6807,"mutability":"mutable","name":"from","nameLocation":"15238:4:22","nodeType":"VariableDeclaration","scope":6821,"src":"15230:12:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6806,"name":"address","nodeType":"ElementaryTypeName","src":"15230:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6809,"mutability":"mutable","name":"to","nameLocation":"15260:2:22","nodeType":"VariableDeclaration","scope":6821,"src":"15252:10:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6808,"name":"address","nodeType":"ElementaryTypeName","src":"15252:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6812,"mutability":"mutable","name":"ids","nameLocation":"15289:3:22","nodeType":"VariableDeclaration","scope":6821,"src":"15272:20:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":6810,"name":"uint256","nodeType":"ElementaryTypeName","src":"15272:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6811,"nodeType":"ArrayTypeName","src":"15272:9:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":6815,"mutability":"mutable","name":"amounts","nameLocation":"15319:7:22","nodeType":"VariableDeclaration","scope":6821,"src":"15302:24:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":6813,"name":"uint256","nodeType":"ElementaryTypeName","src":"15302:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6814,"nodeType":"ArrayTypeName","src":"15302:9:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":6817,"mutability":"mutable","name":"data","nameLocation":"15349:4:22","nodeType":"VariableDeclaration","scope":6821,"src":"15336:17:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":6816,"name":"bytes","nodeType":"ElementaryTypeName","src":"15336:5:22","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"15194:165:22"},"returnParameters":{"id":6819,"nodeType":"ParameterList","parameters":[],"src":"15377:0:22"},"scope":6978,"src":"15166:213:22","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":6883,"nodeType":"Block","src":"15578:532:22","statements":[{"condition":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":6836,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6827,"src":"15592:2:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":6837,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15595:10:22","memberName":"isContract","nodeType":"MemberAccess","referencedDeclaration":8952,"src":"15592:13:22","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$bound_to$_t_address_$","typeString":"function (address) view returns (bool)"}},"id":6838,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15592:15:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6882,"nodeType":"IfStatement","src":"15588:516:22","trueBody":{"id":6881,"nodeType":"Block","src":"15609:495:22","statements":[{"clauses":[{"block":{"id":6863,"nodeType":"Block","src":"15726:184:22","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":6856,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6852,"name":"response","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6850,"src":"15748:8:22","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"expression":{"id":6853,"name":"IERC1155Receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7141,"src":"15760:16:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC1155Receiver_$7141_$","typeString":"type(contract IERC1155Receiver)"}},"id":6854,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"15777:17:22","memberName":"onERC1155Received","nodeType":"MemberAccess","referencedDeclaration":7122,"src":"15760:34:22","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$","typeString":"function IERC1155Receiver.onERC1155Received(address,address,uint256,uint256,bytes calldata) returns (bytes4)"}},"id":6855,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"15795:8:22","memberName":"selector","nodeType":"MemberAccess","src":"15760:43:22","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"15748:55:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6862,"nodeType":"IfStatement","src":"15744:152:22","trueBody":{"id":6861,"nodeType":"Block","src":"15805:91:22","statements":[{"expression":{"arguments":[{"hexValue":"455243313135353a204552433131353552656365697665722072656a656374656420746f6b656e73","id":6858,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"15834:42:22","typeDescriptions":{"typeIdentifier":"t_stringliteral_0587cccad73a80a7f013db13c596f4febc1968dc77e1d3589d5e7a509a3d6503","typeString":"literal_string \"ERC1155: ERC1155Receiver rejected tokens\""},"value":"ERC1155: ERC1155Receiver rejected tokens"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_0587cccad73a80a7f013db13c596f4febc1968dc77e1d3589d5e7a509a3d6503","typeString":"literal_string \"ERC1155: ERC1155Receiver rejected tokens\""}],"id":6857,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[4294967277,4294967277],"referencedDeclaration":4294967277,"src":"15827:6:22","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":6859,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15827:50:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6860,"nodeType":"ExpressionStatement","src":"15827:50:22"}]}}]},"errorName":"","id":6864,"nodeType":"TryCatchClause","parameters":{"id":6851,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6850,"mutability":"mutable","name":"response","nameLocation":"15716:8:22","nodeType":"VariableDeclaration","scope":6864,"src":"15709:15:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":6849,"name":"bytes4","nodeType":"ElementaryTypeName","src":"15709:6:22","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"15708:17:22"},"src":"15700:210:22"},{"block":{"id":6872,"nodeType":"Block","src":"15945:47:22","statements":[{"expression":{"arguments":[{"id":6869,"name":"reason","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6866,"src":"15970:6:22","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":6868,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[4294967277,4294967277],"referencedDeclaration":4294967277,"src":"15963:6:22","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":6870,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15963:14:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6871,"nodeType":"ExpressionStatement","src":"15963:14:22"}]},"errorName":"Error","id":6873,"nodeType":"TryCatchClause","parameters":{"id":6867,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6866,"mutability":"mutable","name":"reason","nameLocation":"15937:6:22","nodeType":"VariableDeclaration","scope":6873,"src":"15923:20:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":6865,"name":"string","nodeType":"ElementaryTypeName","src":"15923:6:22","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"15922:22:22"},"src":"15911:81:22"},{"block":{"id":6878,"nodeType":"Block","src":"15999:95:22","statements":[{"expression":{"arguments":[{"hexValue":"455243313135353a207472616e7366657220746f206e6f6e2d45524331313535526563656976657220696d706c656d656e746572","id":6875,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"16024:54:22","typeDescriptions":{"typeIdentifier":"t_stringliteral_f591f7b75ffc499e05f8b34c3364b2eceff651378d9549db1d5d67c0d8255c5d","typeString":"literal_string \"ERC1155: transfer to non-ERC1155Receiver implementer\""},"value":"ERC1155: transfer to non-ERC1155Receiver implementer"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_f591f7b75ffc499e05f8b34c3364b2eceff651378d9549db1d5d67c0d8255c5d","typeString":"literal_string \"ERC1155: transfer to non-ERC1155Receiver implementer\""}],"id":6874,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[4294967277,4294967277],"referencedDeclaration":4294967277,"src":"16017:6:22","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":6876,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16017:62:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6877,"nodeType":"ExpressionStatement","src":"16017:62:22"}]},"errorName":"","id":6879,"nodeType":"TryCatchClause","src":"15993:101:22"}],"externalCall":{"arguments":[{"id":6843,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6823,"src":"15666:8:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6844,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6825,"src":"15676:4:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6845,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6829,"src":"15682:2:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6846,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6831,"src":"15686:6:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6847,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6833,"src":"15694:4:22","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"id":6840,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6827,"src":"15644:2:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6839,"name":"IERC1155Receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7141,"src":"15627:16:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC1155Receiver_$7141_$","typeString":"type(contract IERC1155Receiver)"}},"id":6841,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15627:20:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC1155Receiver_$7141","typeString":"contract IERC1155Receiver"}},"id":6842,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15648:17:22","memberName":"onERC1155Received","nodeType":"MemberAccess","referencedDeclaration":7122,"src":"15627:38:22","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function (address,address,uint256,uint256,bytes memory) external returns (bytes4)"}},"id":6848,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15627:72:22","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":6880,"nodeType":"TryStatement","src":"15623:471:22"}]}}]},"id":6884,"implemented":true,"kind":"function","modifiers":[],"name":"_doSafeTransferAcceptanceCheck","nameLocation":"15394:30:22","nodeType":"FunctionDefinition","parameters":{"id":6834,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6823,"mutability":"mutable","name":"operator","nameLocation":"15442:8:22","nodeType":"VariableDeclaration","scope":6884,"src":"15434:16:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6822,"name":"address","nodeType":"ElementaryTypeName","src":"15434:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6825,"mutability":"mutable","name":"from","nameLocation":"15468:4:22","nodeType":"VariableDeclaration","scope":6884,"src":"15460:12:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6824,"name":"address","nodeType":"ElementaryTypeName","src":"15460:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6827,"mutability":"mutable","name":"to","nameLocation":"15490:2:22","nodeType":"VariableDeclaration","scope":6884,"src":"15482:10:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6826,"name":"address","nodeType":"ElementaryTypeName","src":"15482:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6829,"mutability":"mutable","name":"id","nameLocation":"15510:2:22","nodeType":"VariableDeclaration","scope":6884,"src":"15502:10:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6828,"name":"uint256","nodeType":"ElementaryTypeName","src":"15502:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6831,"mutability":"mutable","name":"amount","nameLocation":"15530:6:22","nodeType":"VariableDeclaration","scope":6884,"src":"15522:14:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6830,"name":"uint256","nodeType":"ElementaryTypeName","src":"15522:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6833,"mutability":"mutable","name":"data","nameLocation":"15559:4:22","nodeType":"VariableDeclaration","scope":6884,"src":"15546:17:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":6832,"name":"bytes","nodeType":"ElementaryTypeName","src":"15546:5:22","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"15424:145:22"},"returnParameters":{"id":6835,"nodeType":"ParameterList","parameters":[],"src":"15578:0:22"},"scope":6978,"src":"15385:725:22","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":6948,"nodeType":"Block","src":"16334:574:22","statements":[{"condition":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":6901,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6890,"src":"16348:2:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":6902,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16351:10:22","memberName":"isContract","nodeType":"MemberAccess","referencedDeclaration":8952,"src":"16348:13:22","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$bound_to$_t_address_$","typeString":"function (address) view returns (bool)"}},"id":6903,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16348:15:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6947,"nodeType":"IfStatement","src":"16344:558:22","trueBody":{"id":6946,"nodeType":"Block","src":"16365:537:22","statements":[{"clauses":[{"block":{"id":6928,"nodeType":"Block","src":"16519:189:22","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":6921,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6917,"name":"response","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6915,"src":"16541:8:22","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"expression":{"id":6918,"name":"IERC1155Receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7141,"src":"16553:16:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC1155Receiver_$7141_$","typeString":"type(contract IERC1155Receiver)"}},"id":6919,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"16570:22:22","memberName":"onERC1155BatchReceived","nodeType":"MemberAccess","referencedDeclaration":7140,"src":"16553:39:22","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_calldata_ptr_$_t_array$_t_uint256_$dyn_calldata_ptr_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$","typeString":"function IERC1155Receiver.onERC1155BatchReceived(address,address,uint256[] calldata,uint256[] calldata,bytes calldata) returns (bytes4)"}},"id":6920,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"16593:8:22","memberName":"selector","nodeType":"MemberAccess","src":"16553:48:22","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"16541:60:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6927,"nodeType":"IfStatement","src":"16537:157:22","trueBody":{"id":6926,"nodeType":"Block","src":"16603:91:22","statements":[{"expression":{"arguments":[{"hexValue":"455243313135353a204552433131353552656365697665722072656a656374656420746f6b656e73","id":6923,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"16632:42:22","typeDescriptions":{"typeIdentifier":"t_stringliteral_0587cccad73a80a7f013db13c596f4febc1968dc77e1d3589d5e7a509a3d6503","typeString":"literal_string \"ERC1155: ERC1155Receiver rejected tokens\""},"value":"ERC1155: ERC1155Receiver rejected tokens"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_0587cccad73a80a7f013db13c596f4febc1968dc77e1d3589d5e7a509a3d6503","typeString":"literal_string \"ERC1155: ERC1155Receiver rejected tokens\""}],"id":6922,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[4294967277,4294967277],"referencedDeclaration":4294967277,"src":"16625:6:22","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":6924,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16625:50:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6925,"nodeType":"ExpressionStatement","src":"16625:50:22"}]}}]},"errorName":"","id":6929,"nodeType":"TryCatchClause","parameters":{"id":6916,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6915,"mutability":"mutable","name":"response","nameLocation":"16496:8:22","nodeType":"VariableDeclaration","scope":6929,"src":"16489:15:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":6914,"name":"bytes4","nodeType":"ElementaryTypeName","src":"16489:6:22","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"16471:47:22"},"src":"16463:245:22"},{"block":{"id":6937,"nodeType":"Block","src":"16743:47:22","statements":[{"expression":{"arguments":[{"id":6934,"name":"reason","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6931,"src":"16768:6:22","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":6933,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[4294967277,4294967277],"referencedDeclaration":4294967277,"src":"16761:6:22","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":6935,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16761:14:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6936,"nodeType":"ExpressionStatement","src":"16761:14:22"}]},"errorName":"Error","id":6938,"nodeType":"TryCatchClause","parameters":{"id":6932,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6931,"mutability":"mutable","name":"reason","nameLocation":"16735:6:22","nodeType":"VariableDeclaration","scope":6938,"src":"16721:20:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":6930,"name":"string","nodeType":"ElementaryTypeName","src":"16721:6:22","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"16720:22:22"},"src":"16709:81:22"},{"block":{"id":6943,"nodeType":"Block","src":"16797:95:22","statements":[{"expression":{"arguments":[{"hexValue":"455243313135353a207472616e7366657220746f206e6f6e2d45524331313535526563656976657220696d706c656d656e746572","id":6940,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"16822:54:22","typeDescriptions":{"typeIdentifier":"t_stringliteral_f591f7b75ffc499e05f8b34c3364b2eceff651378d9549db1d5d67c0d8255c5d","typeString":"literal_string \"ERC1155: transfer to non-ERC1155Receiver implementer\""},"value":"ERC1155: transfer to non-ERC1155Receiver implementer"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_f591f7b75ffc499e05f8b34c3364b2eceff651378d9549db1d5d67c0d8255c5d","typeString":"literal_string \"ERC1155: transfer to non-ERC1155Receiver implementer\""}],"id":6939,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[4294967277,4294967277],"referencedDeclaration":4294967277,"src":"16815:6:22","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":6941,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16815:62:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6942,"nodeType":"ExpressionStatement","src":"16815:62:22"}]},"errorName":"","id":6944,"nodeType":"TryCatchClause","src":"16791:101:22"}],"externalCall":{"arguments":[{"id":6908,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6886,"src":"16427:8:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6909,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6888,"src":"16437:4:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6910,"name":"ids","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6893,"src":"16443:3:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":6911,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6896,"src":"16448:7:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":6912,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6898,"src":"16457:4:22","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"id":6905,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6890,"src":"16400:2:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6904,"name":"IERC1155Receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7141,"src":"16383:16:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC1155Receiver_$7141_$","typeString":"type(contract IERC1155Receiver)"}},"id":6906,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16383:20:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC1155Receiver_$7141","typeString":"contract IERC1155Receiver"}},"id":6907,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16404:22:22","memberName":"onERC1155BatchReceived","nodeType":"MemberAccess","referencedDeclaration":7140,"src":"16383:43:22","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function (address,address,uint256[] memory,uint256[] memory,bytes memory) external returns (bytes4)"}},"id":6913,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16383:79:22","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":6945,"nodeType":"TryStatement","src":"16379:513:22"}]}}]},"id":6949,"implemented":true,"kind":"function","modifiers":[],"name":"_doSafeBatchTransferAcceptanceCheck","nameLocation":"16125:35:22","nodeType":"FunctionDefinition","parameters":{"id":6899,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6886,"mutability":"mutable","name":"operator","nameLocation":"16178:8:22","nodeType":"VariableDeclaration","scope":6949,"src":"16170:16:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6885,"name":"address","nodeType":"ElementaryTypeName","src":"16170:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6888,"mutability":"mutable","name":"from","nameLocation":"16204:4:22","nodeType":"VariableDeclaration","scope":6949,"src":"16196:12:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6887,"name":"address","nodeType":"ElementaryTypeName","src":"16196:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6890,"mutability":"mutable","name":"to","nameLocation":"16226:2:22","nodeType":"VariableDeclaration","scope":6949,"src":"16218:10:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6889,"name":"address","nodeType":"ElementaryTypeName","src":"16218:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6893,"mutability":"mutable","name":"ids","nameLocation":"16255:3:22","nodeType":"VariableDeclaration","scope":6949,"src":"16238:20:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":6891,"name":"uint256","nodeType":"ElementaryTypeName","src":"16238:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6892,"nodeType":"ArrayTypeName","src":"16238:9:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":6896,"mutability":"mutable","name":"amounts","nameLocation":"16285:7:22","nodeType":"VariableDeclaration","scope":6949,"src":"16268:24:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":6894,"name":"uint256","nodeType":"ElementaryTypeName","src":"16268:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6895,"nodeType":"ArrayTypeName","src":"16268:9:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":6898,"mutability":"mutable","name":"data","nameLocation":"16315:4:22","nodeType":"VariableDeclaration","scope":6949,"src":"16302:17:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":6897,"name":"bytes","nodeType":"ElementaryTypeName","src":"16302:5:22","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"16160:165:22"},"returnParameters":{"id":6900,"nodeType":"ParameterList","parameters":[],"src":"16334:0:22"},"scope":6978,"src":"16116:792:22","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":6976,"nodeType":"Block","src":"16998:109:22","statements":[{"assignments":[6961],"declarations":[{"constant":false,"id":6961,"mutability":"mutable","name":"array","nameLocation":"17025:5:22","nodeType":"VariableDeclaration","scope":6976,"src":"17008:22:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":6959,"name":"uint256","nodeType":"ElementaryTypeName","src":"17008:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6960,"nodeType":"ArrayTypeName","src":"17008:9:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":6967,"initialValue":{"arguments":[{"hexValue":"31","id":6965,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17047:1:22","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":6964,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"17033:13:22","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":6962,"name":"uint256","nodeType":"ElementaryTypeName","src":"17037:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6963,"nodeType":"ArrayTypeName","src":"17037:9:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":6966,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17033:16:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"VariableDeclarationStatement","src":"17008:41:22"},{"expression":{"id":6972,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":6968,"name":"array","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6961,"src":"17059:5:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":6970,"indexExpression":{"hexValue":"30","id":6969,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17065:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"17059:8:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":6971,"name":"element","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6951,"src":"17070:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17059:18:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6973,"nodeType":"ExpressionStatement","src":"17059:18:22"},{"expression":{"id":6974,"name":"array","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6961,"src":"17095:5:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"functionReturnParameters":6956,"id":6975,"nodeType":"Return","src":"17088:12:22"}]},"id":6977,"implemented":true,"kind":"function","modifiers":[],"name":"_asSingletonArray","nameLocation":"16923:17:22","nodeType":"FunctionDefinition","parameters":{"id":6952,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6951,"mutability":"mutable","name":"element","nameLocation":"16949:7:22","nodeType":"VariableDeclaration","scope":6977,"src":"16941:15:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6950,"name":"uint256","nodeType":"ElementaryTypeName","src":"16941:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16940:17:22"},"returnParameters":{"id":6956,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6955,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6977,"src":"16980:16:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":6953,"name":"uint256","nodeType":"ElementaryTypeName","src":"16980:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6954,"nodeType":"ArrayTypeName","src":"16980:9:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"16979:18:22"},"scope":6978,"src":"16914:193:22","stateMutability":"pure","virtual":false,"visibility":"private"}],"scope":6979,"src":"570:16539:22","usedErrors":[]}],"src":"109:17001:22"},"id":22},"@openzeppelin/contracts/token/ERC1155/IERC1155.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC1155/IERC1155.sol","exportedSymbols":{"IERC1155":[7100],"IERC165":[9743]},"id":7101,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":6980,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"110:23:23"},{"absolutePath":"@openzeppelin/contracts/utils/introspection/IERC165.sol","file":"../../utils/introspection/IERC165.sol","id":6981,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7101,"sourceUnit":9744,"src":"135:47:23","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":6983,"name":"IERC165","nameLocations":["372:7:23"],"nodeType":"IdentifierPath","referencedDeclaration":9743,"src":"372:7:23"},"id":6984,"nodeType":"InheritanceSpecifier","src":"372:7:23"}],"canonicalName":"IERC1155","contractDependencies":[],"contractKind":"interface","documentation":{"id":6982,"nodeType":"StructuredDocumentation","src":"184:165:23","text":" @dev Required interface of an ERC1155 compliant contract, as defined in the\n https://eips.ethereum.org/EIPS/eip-1155[EIP].\n _Available since v3.1._"},"fullyImplemented":false,"id":7100,"linearizedBaseContracts":[7100,9743],"name":"IERC1155","nameLocation":"360:8:23","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":6985,"nodeType":"StructuredDocumentation","src":"386:121:23","text":" @dev Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`."},"eventSelector":"c3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62","id":6997,"name":"TransferSingle","nameLocation":"518:14:23","nodeType":"EventDefinition","parameters":{"id":6996,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6987,"indexed":true,"mutability":"mutable","name":"operator","nameLocation":"549:8:23","nodeType":"VariableDeclaration","scope":6997,"src":"533:24:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6986,"name":"address","nodeType":"ElementaryTypeName","src":"533:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6989,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"575:4:23","nodeType":"VariableDeclaration","scope":6997,"src":"559:20:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6988,"name":"address","nodeType":"ElementaryTypeName","src":"559:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6991,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"597:2:23","nodeType":"VariableDeclaration","scope":6997,"src":"581:18:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6990,"name":"address","nodeType":"ElementaryTypeName","src":"581:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6993,"indexed":false,"mutability":"mutable","name":"id","nameLocation":"609:2:23","nodeType":"VariableDeclaration","scope":6997,"src":"601:10:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6992,"name":"uint256","nodeType":"ElementaryTypeName","src":"601:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6995,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"621:5:23","nodeType":"VariableDeclaration","scope":6997,"src":"613:13:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6994,"name":"uint256","nodeType":"ElementaryTypeName","src":"613:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"532:95:23"},"src":"512:116:23"},{"anonymous":false,"documentation":{"id":6998,"nodeType":"StructuredDocumentation","src":"634:144:23","text":" @dev Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all\n transfers."},"eventSelector":"4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb","id":7012,"name":"TransferBatch","nameLocation":"789:13:23","nodeType":"EventDefinition","parameters":{"id":7011,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7000,"indexed":true,"mutability":"mutable","name":"operator","nameLocation":"828:8:23","nodeType":"VariableDeclaration","scope":7012,"src":"812:24:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6999,"name":"address","nodeType":"ElementaryTypeName","src":"812:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7002,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"862:4:23","nodeType":"VariableDeclaration","scope":7012,"src":"846:20:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7001,"name":"address","nodeType":"ElementaryTypeName","src":"846:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7004,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"892:2:23","nodeType":"VariableDeclaration","scope":7012,"src":"876:18:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7003,"name":"address","nodeType":"ElementaryTypeName","src":"876:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7007,"indexed":false,"mutability":"mutable","name":"ids","nameLocation":"914:3:23","nodeType":"VariableDeclaration","scope":7012,"src":"904:13:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":7005,"name":"uint256","nodeType":"ElementaryTypeName","src":"904:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7006,"nodeType":"ArrayTypeName","src":"904:9:23","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":7010,"indexed":false,"mutability":"mutable","name":"values","nameLocation":"937:6:23","nodeType":"VariableDeclaration","scope":7012,"src":"927:16:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":7008,"name":"uint256","nodeType":"ElementaryTypeName","src":"927:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7009,"nodeType":"ArrayTypeName","src":"927:9:23","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"802:147:23"},"src":"783:167:23"},{"anonymous":false,"documentation":{"id":7013,"nodeType":"StructuredDocumentation","src":"956:147:23","text":" @dev Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to\n `approved`."},"eventSelector":"17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31","id":7021,"name":"ApprovalForAll","nameLocation":"1114:14:23","nodeType":"EventDefinition","parameters":{"id":7020,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7015,"indexed":true,"mutability":"mutable","name":"account","nameLocation":"1145:7:23","nodeType":"VariableDeclaration","scope":7021,"src":"1129:23:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7014,"name":"address","nodeType":"ElementaryTypeName","src":"1129:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7017,"indexed":true,"mutability":"mutable","name":"operator","nameLocation":"1170:8:23","nodeType":"VariableDeclaration","scope":7021,"src":"1154:24:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7016,"name":"address","nodeType":"ElementaryTypeName","src":"1154:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7019,"indexed":false,"mutability":"mutable","name":"approved","nameLocation":"1185:8:23","nodeType":"VariableDeclaration","scope":7021,"src":"1180:13:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7018,"name":"bool","nodeType":"ElementaryTypeName","src":"1180:4:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1128:66:23"},"src":"1108:87:23"},{"anonymous":false,"documentation":{"id":7022,"nodeType":"StructuredDocumentation","src":"1201:343:23","text":" @dev Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI.\n If an {URI} event was emitted for `id`, the standard\n https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value\n returned by {IERC1155MetadataURI-uri}."},"eventSelector":"6bb7ff708619ba0610cba295a58592e0451dee2622938c8755667688daf3529b","id":7028,"name":"URI","nameLocation":"1555:3:23","nodeType":"EventDefinition","parameters":{"id":7027,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7024,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"1566:5:23","nodeType":"VariableDeclaration","scope":7028,"src":"1559:12:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":7023,"name":"string","nodeType":"ElementaryTypeName","src":"1559:6:23","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":7026,"indexed":true,"mutability":"mutable","name":"id","nameLocation":"1589:2:23","nodeType":"VariableDeclaration","scope":7028,"src":"1573:18:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7025,"name":"uint256","nodeType":"ElementaryTypeName","src":"1573:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1558:34:23"},"src":"1549:44:23"},{"documentation":{"id":7029,"nodeType":"StructuredDocumentation","src":"1599:173:23","text":" @dev Returns the amount of tokens of token type `id` owned by `account`.\n Requirements:\n - `account` cannot be the zero address."},"functionSelector":"00fdd58e","id":7038,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"1786:9:23","nodeType":"FunctionDefinition","parameters":{"id":7034,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7031,"mutability":"mutable","name":"account","nameLocation":"1804:7:23","nodeType":"VariableDeclaration","scope":7038,"src":"1796:15:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7030,"name":"address","nodeType":"ElementaryTypeName","src":"1796:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7033,"mutability":"mutable","name":"id","nameLocation":"1821:2:23","nodeType":"VariableDeclaration","scope":7038,"src":"1813:10:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7032,"name":"uint256","nodeType":"ElementaryTypeName","src":"1813:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1795:29:23"},"returnParameters":{"id":7037,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7036,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7038,"src":"1848:7:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7035,"name":"uint256","nodeType":"ElementaryTypeName","src":"1848:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1847:9:23"},"scope":7100,"src":"1777:80:23","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":7039,"nodeType":"StructuredDocumentation","src":"1863:188:23","text":" @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}.\n Requirements:\n - `accounts` and `ids` must have the same length."},"functionSelector":"4e1273f4","id":7051,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOfBatch","nameLocation":"2065:14:23","nodeType":"FunctionDefinition","parameters":{"id":7046,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7042,"mutability":"mutable","name":"accounts","nameLocation":"2108:8:23","nodeType":"VariableDeclaration","scope":7051,"src":"2089:27:23","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":7040,"name":"address","nodeType":"ElementaryTypeName","src":"2089:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7041,"nodeType":"ArrayTypeName","src":"2089:9:23","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":7045,"mutability":"mutable","name":"ids","nameLocation":"2145:3:23","nodeType":"VariableDeclaration","scope":7051,"src":"2126:22:23","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":7043,"name":"uint256","nodeType":"ElementaryTypeName","src":"2126:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7044,"nodeType":"ArrayTypeName","src":"2126:9:23","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"2079:75:23"},"returnParameters":{"id":7050,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7049,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7051,"src":"2178:16:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":7047,"name":"uint256","nodeType":"ElementaryTypeName","src":"2178:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7048,"nodeType":"ArrayTypeName","src":"2178:9:23","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"2177:18:23"},"scope":7100,"src":"2056:140:23","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":7052,"nodeType":"StructuredDocumentation","src":"2202:248:23","text":" @dev Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`,\n Emits an {ApprovalForAll} event.\n Requirements:\n - `operator` cannot be the caller."},"functionSelector":"a22cb465","id":7059,"implemented":false,"kind":"function","modifiers":[],"name":"setApprovalForAll","nameLocation":"2464:17:23","nodeType":"FunctionDefinition","parameters":{"id":7057,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7054,"mutability":"mutable","name":"operator","nameLocation":"2490:8:23","nodeType":"VariableDeclaration","scope":7059,"src":"2482:16:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7053,"name":"address","nodeType":"ElementaryTypeName","src":"2482:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7056,"mutability":"mutable","name":"approved","nameLocation":"2505:8:23","nodeType":"VariableDeclaration","scope":7059,"src":"2500:13:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7055,"name":"bool","nodeType":"ElementaryTypeName","src":"2500:4:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2481:33:23"},"returnParameters":{"id":7058,"nodeType":"ParameterList","parameters":[],"src":"2523:0:23"},"scope":7100,"src":"2455:69:23","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":7060,"nodeType":"StructuredDocumentation","src":"2530:135:23","text":" @dev Returns true if `operator` is approved to transfer ``account``'s tokens.\n See {setApprovalForAll}."},"functionSelector":"e985e9c5","id":7069,"implemented":false,"kind":"function","modifiers":[],"name":"isApprovedForAll","nameLocation":"2679:16:23","nodeType":"FunctionDefinition","parameters":{"id":7065,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7062,"mutability":"mutable","name":"account","nameLocation":"2704:7:23","nodeType":"VariableDeclaration","scope":7069,"src":"2696:15:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7061,"name":"address","nodeType":"ElementaryTypeName","src":"2696:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7064,"mutability":"mutable","name":"operator","nameLocation":"2721:8:23","nodeType":"VariableDeclaration","scope":7069,"src":"2713:16:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7063,"name":"address","nodeType":"ElementaryTypeName","src":"2713:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2695:35:23"},"returnParameters":{"id":7068,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7067,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7069,"src":"2754:4:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7066,"name":"bool","nodeType":"ElementaryTypeName","src":"2754:4:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2753:6:23"},"scope":7100,"src":"2670:90:23","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":7070,"nodeType":"StructuredDocumentation","src":"2766:556:23","text":" @dev Transfers `amount` tokens of token type `id` from `from` to `to`.\n Emits a {TransferSingle} event.\n Requirements:\n - `to` cannot be the zero address.\n - If the caller is not `from`, it must have been approved to spend ``from``'s tokens via {setApprovalForAll}.\n - `from` must have a balance of tokens of type `id` of at least `amount`.\n - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the\n acceptance magic value."},"functionSelector":"f242432a","id":7083,"implemented":false,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"3336:16:23","nodeType":"FunctionDefinition","parameters":{"id":7081,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7072,"mutability":"mutable","name":"from","nameLocation":"3361:4:23","nodeType":"VariableDeclaration","scope":7083,"src":"3353:12:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7071,"name":"address","nodeType":"ElementaryTypeName","src":"3353:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7074,"mutability":"mutable","name":"to","nameLocation":"3375:2:23","nodeType":"VariableDeclaration","scope":7083,"src":"3367:10:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7073,"name":"address","nodeType":"ElementaryTypeName","src":"3367:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7076,"mutability":"mutable","name":"id","nameLocation":"3387:2:23","nodeType":"VariableDeclaration","scope":7083,"src":"3379:10:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7075,"name":"uint256","nodeType":"ElementaryTypeName","src":"3379:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7078,"mutability":"mutable","name":"amount","nameLocation":"3399:6:23","nodeType":"VariableDeclaration","scope":7083,"src":"3391:14:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7077,"name":"uint256","nodeType":"ElementaryTypeName","src":"3391:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7080,"mutability":"mutable","name":"data","nameLocation":"3422:4:23","nodeType":"VariableDeclaration","scope":7083,"src":"3407:19:23","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":7079,"name":"bytes","nodeType":"ElementaryTypeName","src":"3407:5:23","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3352:75:23"},"returnParameters":{"id":7082,"nodeType":"ParameterList","parameters":[],"src":"3436:0:23"},"scope":7100,"src":"3327:110:23","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":7084,"nodeType":"StructuredDocumentation","src":"3443:390:23","text":" @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}.\n Emits a {TransferBatch} event.\n Requirements:\n - `ids` and `amounts` must have the same length.\n - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the\n acceptance magic value."},"functionSelector":"2eb2c2d6","id":7099,"implemented":false,"kind":"function","modifiers":[],"name":"safeBatchTransferFrom","nameLocation":"3847:21:23","nodeType":"FunctionDefinition","parameters":{"id":7097,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7086,"mutability":"mutable","name":"from","nameLocation":"3886:4:23","nodeType":"VariableDeclaration","scope":7099,"src":"3878:12:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7085,"name":"address","nodeType":"ElementaryTypeName","src":"3878:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7088,"mutability":"mutable","name":"to","nameLocation":"3908:2:23","nodeType":"VariableDeclaration","scope":7099,"src":"3900:10:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7087,"name":"address","nodeType":"ElementaryTypeName","src":"3900:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7091,"mutability":"mutable","name":"ids","nameLocation":"3939:3:23","nodeType":"VariableDeclaration","scope":7099,"src":"3920:22:23","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":7089,"name":"uint256","nodeType":"ElementaryTypeName","src":"3920:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7090,"nodeType":"ArrayTypeName","src":"3920:9:23","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":7094,"mutability":"mutable","name":"amounts","nameLocation":"3971:7:23","nodeType":"VariableDeclaration","scope":7099,"src":"3952:26:23","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":7092,"name":"uint256","nodeType":"ElementaryTypeName","src":"3952:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7093,"nodeType":"ArrayTypeName","src":"3952:9:23","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":7096,"mutability":"mutable","name":"data","nameLocation":"4003:4:23","nodeType":"VariableDeclaration","scope":7099,"src":"3988:19:23","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":7095,"name":"bytes","nodeType":"ElementaryTypeName","src":"3988:5:23","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3868:145:23"},"returnParameters":{"id":7098,"nodeType":"ParameterList","parameters":[],"src":"4022:0:23"},"scope":7100,"src":"3838:185:23","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":7101,"src":"350:3675:23","usedErrors":[]}],"src":"110:3916:23"},"id":23},"@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol","exportedSymbols":{"IERC1155Receiver":[7141],"IERC165":[9743]},"id":7142,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":7102,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"118:23:24"},{"absolutePath":"@openzeppelin/contracts/utils/introspection/IERC165.sol","file":"../../utils/introspection/IERC165.sol","id":7103,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7142,"sourceUnit":9744,"src":"143:47:24","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":7105,"name":"IERC165","nameLocations":["262:7:24"],"nodeType":"IdentifierPath","referencedDeclaration":9743,"src":"262:7:24"},"id":7106,"nodeType":"InheritanceSpecifier","src":"262:7:24"}],"canonicalName":"IERC1155Receiver","contractDependencies":[],"contractKind":"interface","documentation":{"id":7104,"nodeType":"StructuredDocumentation","src":"192:39:24","text":" @dev _Available since v3.1._"},"fullyImplemented":false,"id":7141,"linearizedBaseContracts":[7141,9743],"name":"IERC1155Receiver","nameLocation":"242:16:24","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":7107,"nodeType":"StructuredDocumentation","src":"276:826:24","text":" @dev Handles the receipt of a single ERC1155 token type. This function is\n called at the end of a `safeTransferFrom` after the balance has been updated.\n NOTE: To accept the transfer, this must return\n `bytes4(keccak256(\"onERC1155Received(address,address,uint256,uint256,bytes)\"))`\n (i.e. 0xf23a6e61, or its own function selector).\n @param operator The address which initiated the transfer (i.e. msg.sender)\n @param from The address which previously owned the token\n @param id The ID of the token being transferred\n @param value The amount of tokens being transferred\n @param data Additional data with no specified format\n @return `bytes4(keccak256(\"onERC1155Received(address,address,uint256,uint256,bytes)\"))` if transfer is allowed"},"functionSelector":"f23a6e61","id":7122,"implemented":false,"kind":"function","modifiers":[],"name":"onERC1155Received","nameLocation":"1116:17:24","nodeType":"FunctionDefinition","parameters":{"id":7118,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7109,"mutability":"mutable","name":"operator","nameLocation":"1151:8:24","nodeType":"VariableDeclaration","scope":7122,"src":"1143:16:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7108,"name":"address","nodeType":"ElementaryTypeName","src":"1143:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7111,"mutability":"mutable","name":"from","nameLocation":"1177:4:24","nodeType":"VariableDeclaration","scope":7122,"src":"1169:12:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7110,"name":"address","nodeType":"ElementaryTypeName","src":"1169:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7113,"mutability":"mutable","name":"id","nameLocation":"1199:2:24","nodeType":"VariableDeclaration","scope":7122,"src":"1191:10:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7112,"name":"uint256","nodeType":"ElementaryTypeName","src":"1191:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7115,"mutability":"mutable","name":"value","nameLocation":"1219:5:24","nodeType":"VariableDeclaration","scope":7122,"src":"1211:13:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7114,"name":"uint256","nodeType":"ElementaryTypeName","src":"1211:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7117,"mutability":"mutable","name":"data","nameLocation":"1249:4:24","nodeType":"VariableDeclaration","scope":7122,"src":"1234:19:24","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":7116,"name":"bytes","nodeType":"ElementaryTypeName","src":"1234:5:24","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1133:126:24"},"returnParameters":{"id":7121,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7120,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7122,"src":"1278:6:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":7119,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1278:6:24","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"1277:8:24"},"scope":7141,"src":"1107:179:24","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":7123,"nodeType":"StructuredDocumentation","src":"1292:994:24","text":" @dev Handles the receipt of a multiple ERC1155 token types. This function\n is called at the end of a `safeBatchTransferFrom` after the balances have\n been updated.\n NOTE: To accept the transfer(s), this must return\n `bytes4(keccak256(\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\"))`\n (i.e. 0xbc197c81, or its own function selector).\n @param operator The address which initiated the batch transfer (i.e. msg.sender)\n @param from The address which previously owned the token\n @param ids An array containing ids of each token being transferred (order and length must match values array)\n @param values An array containing amounts of each token being transferred (order and length must match ids array)\n @param data Additional data with no specified format\n @return `bytes4(keccak256(\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\"))` if transfer is allowed"},"functionSelector":"bc197c81","id":7140,"implemented":false,"kind":"function","modifiers":[],"name":"onERC1155BatchReceived","nameLocation":"2300:22:24","nodeType":"FunctionDefinition","parameters":{"id":7136,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7125,"mutability":"mutable","name":"operator","nameLocation":"2340:8:24","nodeType":"VariableDeclaration","scope":7140,"src":"2332:16:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7124,"name":"address","nodeType":"ElementaryTypeName","src":"2332:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7127,"mutability":"mutable","name":"from","nameLocation":"2366:4:24","nodeType":"VariableDeclaration","scope":7140,"src":"2358:12:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7126,"name":"address","nodeType":"ElementaryTypeName","src":"2358:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7130,"mutability":"mutable","name":"ids","nameLocation":"2399:3:24","nodeType":"VariableDeclaration","scope":7140,"src":"2380:22:24","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":7128,"name":"uint256","nodeType":"ElementaryTypeName","src":"2380:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7129,"nodeType":"ArrayTypeName","src":"2380:9:24","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":7133,"mutability":"mutable","name":"values","nameLocation":"2431:6:24","nodeType":"VariableDeclaration","scope":7140,"src":"2412:25:24","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":7131,"name":"uint256","nodeType":"ElementaryTypeName","src":"2412:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7132,"nodeType":"ArrayTypeName","src":"2412:9:24","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":7135,"mutability":"mutable","name":"data","nameLocation":"2462:4:24","nodeType":"VariableDeclaration","scope":7140,"src":"2447:19:24","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":7134,"name":"bytes","nodeType":"ElementaryTypeName","src":"2447:5:24","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2322:150:24"},"returnParameters":{"id":7139,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7138,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7140,"src":"2491:6:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":7137,"name":"bytes4","nodeType":"ElementaryTypeName","src":"2491:6:24","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"2490:8:24"},"scope":7141,"src":"2291:208:24","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":7142,"src":"232:2269:24","usedErrors":[]}],"src":"118:2384:24"},"id":24},"@openzeppelin/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol","exportedSymbols":{"IERC1155":[7100],"IERC1155MetadataURI":[7156],"IERC165":[9743]},"id":7157,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":7143,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"117:23:25"},{"absolutePath":"@openzeppelin/contracts/token/ERC1155/IERC1155.sol","file":"../IERC1155.sol","id":7144,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7157,"sourceUnit":7101,"src":"142:25:25","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":7146,"name":"IERC1155","nameLocations":["397:8:25"],"nodeType":"IdentifierPath","referencedDeclaration":7100,"src":"397:8:25"},"id":7147,"nodeType":"InheritanceSpecifier","src":"397:8:25"}],"canonicalName":"IERC1155MetadataURI","contractDependencies":[],"contractKind":"interface","documentation":{"id":7145,"nodeType":"StructuredDocumentation","src":"169:194:25","text":" @dev Interface of the optional ERC1155MetadataExtension interface, as defined\n in the https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[EIP].\n _Available since v3.1._"},"fullyImplemented":false,"id":7156,"linearizedBaseContracts":[7156,7100,9743],"name":"IERC1155MetadataURI","nameLocation":"374:19:25","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":7148,"nodeType":"StructuredDocumentation","src":"412:192:25","text":" @dev Returns the URI for token type `id`.\n If the `\\{id\\}` substring is present in the URI, it must be replaced by\n clients with the actual token type ID."},"functionSelector":"0e89341c","id":7155,"implemented":false,"kind":"function","modifiers":[],"name":"uri","nameLocation":"618:3:25","nodeType":"FunctionDefinition","parameters":{"id":7151,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7150,"mutability":"mutable","name":"id","nameLocation":"630:2:25","nodeType":"VariableDeclaration","scope":7155,"src":"622:10:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7149,"name":"uint256","nodeType":"ElementaryTypeName","src":"622:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"621:12:25"},"returnParameters":{"id":7154,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7153,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7155,"src":"657:13:25","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":7152,"name":"string","nodeType":"ElementaryTypeName","src":"657:6:25","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"656:15:25"},"scope":7156,"src":"609:63:25","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":7157,"src":"364:310:25","usedErrors":[]}],"src":"117:558:25"},"id":25},"@openzeppelin/contracts/token/ERC20/ERC20.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC20/ERC20.sol","exportedSymbols":{"Context":[9294],"ERC20":[7743],"IERC20":[7821],"IERC20Metadata":[7846]},"id":7744,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":7158,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"105:23:26"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"./IERC20.sol","id":7159,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7744,"sourceUnit":7822,"src":"130:22:26","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol","file":"./extensions/IERC20Metadata.sol","id":7160,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7744,"sourceUnit":7847,"src":"153:41:26","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Context.sol","file":"../../utils/Context.sol","id":7161,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7744,"sourceUnit":9295,"src":"195:33:26","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":7163,"name":"Context","nameLocations":["1550:7:26"],"nodeType":"IdentifierPath","referencedDeclaration":9294,"src":"1550:7:26"},"id":7164,"nodeType":"InheritanceSpecifier","src":"1550:7:26"},{"baseName":{"id":7165,"name":"IERC20","nameLocations":["1559:6:26"],"nodeType":"IdentifierPath","referencedDeclaration":7821,"src":"1559:6:26"},"id":7166,"nodeType":"InheritanceSpecifier","src":"1559:6:26"},{"baseName":{"id":7167,"name":"IERC20Metadata","nameLocations":["1567:14:26"],"nodeType":"IdentifierPath","referencedDeclaration":7846,"src":"1567:14:26"},"id":7168,"nodeType":"InheritanceSpecifier","src":"1567:14:26"}],"canonicalName":"ERC20","contractDependencies":[],"contractKind":"contract","documentation":{"id":7162,"nodeType":"StructuredDocumentation","src":"230:1301:26","text":" @dev Implementation of the {IERC20} interface.\n This implementation is agnostic to the way tokens are created. This means\n that a supply mechanism has to be added in a derived contract using {_mint}.\n For a generic mechanism see {ERC20PresetMinterPauser}.\n TIP: For a detailed writeup see our guide\n https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How\n to implement supply mechanisms].\n The default value of {decimals} is 18. To change this, you should override\n this function so it returns a different value.\n We have followed general OpenZeppelin Contracts guidelines: functions revert\n instead returning `false` on failure. This behavior is nonetheless\n conventional and does not conflict with the expectations of ERC20\n applications.\n Additionally, an {Approval} event is emitted on calls to {transferFrom}.\n This allows applications to reconstruct the allowance for all accounts just\n by listening to said events. Other implementations of the EIP may not emit\n these events, as it isn't required by the specification.\n Finally, the non-standard {decreaseAllowance} and {increaseAllowance}\n functions have been added to mitigate the well-known issues around setting\n allowances. See {IERC20-approve}."},"fullyImplemented":true,"id":7743,"linearizedBaseContracts":[7743,7846,7821,9294],"name":"ERC20","nameLocation":"1541:5:26","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":7172,"mutability":"mutable","name":"_balances","nameLocation":"1624:9:26","nodeType":"VariableDeclaration","scope":7743,"src":"1588:45:26","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":7171,"keyType":{"id":7169,"name":"address","nodeType":"ElementaryTypeName","src":"1596:7:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1588:27:26","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueType":{"id":7170,"name":"uint256","nodeType":"ElementaryTypeName","src":"1607:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"private"},{"constant":false,"id":7178,"mutability":"mutable","name":"_allowances","nameLocation":"1696:11:26","nodeType":"VariableDeclaration","scope":7743,"src":"1640:67:26","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"typeName":{"id":7177,"keyType":{"id":7173,"name":"address","nodeType":"ElementaryTypeName","src":"1648:7:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1640:47:26","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"valueType":{"id":7176,"keyType":{"id":7174,"name":"address","nodeType":"ElementaryTypeName","src":"1667:7:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1659:27:26","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueType":{"id":7175,"name":"uint256","nodeType":"ElementaryTypeName","src":"1678:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}},"visibility":"private"},{"constant":false,"id":7180,"mutability":"mutable","name":"_totalSupply","nameLocation":"1730:12:26","nodeType":"VariableDeclaration","scope":7743,"src":"1714:28:26","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7179,"name":"uint256","nodeType":"ElementaryTypeName","src":"1714:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"constant":false,"id":7182,"mutability":"mutable","name":"_name","nameLocation":"1764:5:26","nodeType":"VariableDeclaration","scope":7743,"src":"1749:20:26","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":7181,"name":"string","nodeType":"ElementaryTypeName","src":"1749:6:26","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"constant":false,"id":7184,"mutability":"mutable","name":"_symbol","nameLocation":"1790:7:26","nodeType":"VariableDeclaration","scope":7743,"src":"1775:22:26","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":7183,"name":"string","nodeType":"ElementaryTypeName","src":"1775:6:26","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"body":{"id":7200,"nodeType":"Block","src":"2036:57:26","statements":[{"expression":{"id":7194,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7192,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7182,"src":"2046:5:26","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":7193,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7187,"src":"2054:5:26","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"2046:13:26","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":7195,"nodeType":"ExpressionStatement","src":"2046:13:26"},{"expression":{"id":7198,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7196,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7184,"src":"2069:7:26","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":7197,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7189,"src":"2079:7:26","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"2069:17:26","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":7199,"nodeType":"ExpressionStatement","src":"2069:17:26"}]},"documentation":{"id":7185,"nodeType":"StructuredDocumentation","src":"1804:171:26","text":" @dev Sets the values for {name} and {symbol}.\n All two of these values are immutable: they can only be set once during\n construction."},"id":7201,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":7190,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7187,"mutability":"mutable","name":"name_","nameLocation":"2006:5:26","nodeType":"VariableDeclaration","scope":7201,"src":"1992:19:26","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":7186,"name":"string","nodeType":"ElementaryTypeName","src":"1992:6:26","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":7189,"mutability":"mutable","name":"symbol_","nameLocation":"2027:7:26","nodeType":"VariableDeclaration","scope":7201,"src":"2013:21:26","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":7188,"name":"string","nodeType":"ElementaryTypeName","src":"2013:6:26","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1991:44:26"},"returnParameters":{"id":7191,"nodeType":"ParameterList","parameters":[],"src":"2036:0:26"},"scope":7743,"src":"1980:113:26","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[7833],"body":{"id":7210,"nodeType":"Block","src":"2227:29:26","statements":[{"expression":{"id":7208,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7182,"src":"2244:5:26","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":7207,"id":7209,"nodeType":"Return","src":"2237:12:26"}]},"documentation":{"id":7202,"nodeType":"StructuredDocumentation","src":"2099:54:26","text":" @dev Returns the name of the token."},"functionSelector":"06fdde03","id":7211,"implemented":true,"kind":"function","modifiers":[],"name":"name","nameLocation":"2167:4:26","nodeType":"FunctionDefinition","overrides":{"id":7204,"nodeType":"OverrideSpecifier","overrides":[],"src":"2194:8:26"},"parameters":{"id":7203,"nodeType":"ParameterList","parameters":[],"src":"2171:2:26"},"returnParameters":{"id":7207,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7206,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7211,"src":"2212:13:26","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":7205,"name":"string","nodeType":"ElementaryTypeName","src":"2212:6:26","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2211:15:26"},"scope":7743,"src":"2158:98:26","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[7839],"body":{"id":7220,"nodeType":"Block","src":"2440:31:26","statements":[{"expression":{"id":7218,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7184,"src":"2457:7:26","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":7217,"id":7219,"nodeType":"Return","src":"2450:14:26"}]},"documentation":{"id":7212,"nodeType":"StructuredDocumentation","src":"2262:102:26","text":" @dev Returns the symbol of the token, usually a shorter version of the\n name."},"functionSelector":"95d89b41","id":7221,"implemented":true,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"2378:6:26","nodeType":"FunctionDefinition","overrides":{"id":7214,"nodeType":"OverrideSpecifier","overrides":[],"src":"2407:8:26"},"parameters":{"id":7213,"nodeType":"ParameterList","parameters":[],"src":"2384:2:26"},"returnParameters":{"id":7217,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7216,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7221,"src":"2425:13:26","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":7215,"name":"string","nodeType":"ElementaryTypeName","src":"2425:6:26","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2424:15:26"},"scope":7743,"src":"2369:102:26","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[7845],"body":{"id":7230,"nodeType":"Block","src":"3169:26:26","statements":[{"expression":{"hexValue":"3138","id":7228,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3186:2:26","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"},"functionReturnParameters":7227,"id":7229,"nodeType":"Return","src":"3179:9:26"}]},"documentation":{"id":7222,"nodeType":"StructuredDocumentation","src":"2477:622:26","text":" @dev Returns the number of decimals used to get its user representation.\n For example, if `decimals` equals `2`, a balance of `505` tokens should\n be displayed to a user as `5.05` (`505 / 10 ** 2`).\n Tokens usually opt for a value of 18, imitating the relationship between\n Ether and Wei. This is the default value returned by this function, unless\n it's overridden.\n NOTE: This information is only used for _display_ purposes: it in\n no way affects any of the arithmetic of the contract, including\n {IERC20-balanceOf} and {IERC20-transfer}."},"functionSelector":"313ce567","id":7231,"implemented":true,"kind":"function","modifiers":[],"name":"decimals","nameLocation":"3113:8:26","nodeType":"FunctionDefinition","overrides":{"id":7224,"nodeType":"OverrideSpecifier","overrides":[],"src":"3144:8:26"},"parameters":{"id":7223,"nodeType":"ParameterList","parameters":[],"src":"3121:2:26"},"returnParameters":{"id":7227,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7226,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7231,"src":"3162:5:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":7225,"name":"uint8","nodeType":"ElementaryTypeName","src":"3162:5:26","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"3161:7:26"},"scope":7743,"src":"3104:91:26","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[7770],"body":{"id":7240,"nodeType":"Block","src":"3325:36:26","statements":[{"expression":{"id":7238,"name":"_totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7180,"src":"3342:12:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7237,"id":7239,"nodeType":"Return","src":"3335:19:26"}]},"documentation":{"id":7232,"nodeType":"StructuredDocumentation","src":"3201:49:26","text":" @dev See {IERC20-totalSupply}."},"functionSelector":"18160ddd","id":7241,"implemented":true,"kind":"function","modifiers":[],"name":"totalSupply","nameLocation":"3264:11:26","nodeType":"FunctionDefinition","overrides":{"id":7234,"nodeType":"OverrideSpecifier","overrides":[],"src":"3298:8:26"},"parameters":{"id":7233,"nodeType":"ParameterList","parameters":[],"src":"3275:2:26"},"returnParameters":{"id":7237,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7236,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7241,"src":"3316:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7235,"name":"uint256","nodeType":"ElementaryTypeName","src":"3316:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3315:9:26"},"scope":7743,"src":"3255:106:26","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[7778],"body":{"id":7254,"nodeType":"Block","src":"3502:42:26","statements":[{"expression":{"baseExpression":{"id":7250,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7172,"src":"3519:9:26","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":7252,"indexExpression":{"id":7251,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7244,"src":"3529:7:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3519:18:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7249,"id":7253,"nodeType":"Return","src":"3512:25:26"}]},"documentation":{"id":7242,"nodeType":"StructuredDocumentation","src":"3367:47:26","text":" @dev See {IERC20-balanceOf}."},"functionSelector":"70a08231","id":7255,"implemented":true,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"3428:9:26","nodeType":"FunctionDefinition","overrides":{"id":7246,"nodeType":"OverrideSpecifier","overrides":[],"src":"3475:8:26"},"parameters":{"id":7245,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7244,"mutability":"mutable","name":"account","nameLocation":"3446:7:26","nodeType":"VariableDeclaration","scope":7255,"src":"3438:15:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7243,"name":"address","nodeType":"ElementaryTypeName","src":"3438:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3437:17:26"},"returnParameters":{"id":7249,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7248,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7255,"src":"3493:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7247,"name":"uint256","nodeType":"ElementaryTypeName","src":"3493:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3492:9:26"},"scope":7743,"src":"3419:125:26","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[7788],"body":{"id":7279,"nodeType":"Block","src":"3825:104:26","statements":[{"assignments":[7267],"declarations":[{"constant":false,"id":7267,"mutability":"mutable","name":"owner","nameLocation":"3843:5:26","nodeType":"VariableDeclaration","scope":7279,"src":"3835:13:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7266,"name":"address","nodeType":"ElementaryTypeName","src":"3835:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":7270,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":7268,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9276,"src":"3851:10:26","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":7269,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3851:12:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"3835:28:26"},{"expression":{"arguments":[{"id":7272,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7267,"src":"3883:5:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7273,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7258,"src":"3890:2:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7274,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7260,"src":"3894:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7271,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7503,"src":"3873:9:26","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":7275,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3873:28:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7276,"nodeType":"ExpressionStatement","src":"3873:28:26"},{"expression":{"hexValue":"74727565","id":7277,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3918:4:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":7265,"id":7278,"nodeType":"Return","src":"3911:11:26"}]},"documentation":{"id":7256,"nodeType":"StructuredDocumentation","src":"3550:185:26","text":" @dev See {IERC20-transfer}.\n Requirements:\n - `to` cannot be the zero address.\n - the caller must have a balance of at least `amount`."},"functionSelector":"a9059cbb","id":7280,"implemented":true,"kind":"function","modifiers":[],"name":"transfer","nameLocation":"3749:8:26","nodeType":"FunctionDefinition","overrides":{"id":7262,"nodeType":"OverrideSpecifier","overrides":[],"src":"3801:8:26"},"parameters":{"id":7261,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7258,"mutability":"mutable","name":"to","nameLocation":"3766:2:26","nodeType":"VariableDeclaration","scope":7280,"src":"3758:10:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7257,"name":"address","nodeType":"ElementaryTypeName","src":"3758:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7260,"mutability":"mutable","name":"amount","nameLocation":"3778:6:26","nodeType":"VariableDeclaration","scope":7280,"src":"3770:14:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7259,"name":"uint256","nodeType":"ElementaryTypeName","src":"3770:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3757:28:26"},"returnParameters":{"id":7265,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7264,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7280,"src":"3819:4:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7263,"name":"bool","nodeType":"ElementaryTypeName","src":"3819:4:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3818:6:26"},"scope":7743,"src":"3740:189:26","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[7798],"body":{"id":7297,"nodeType":"Block","src":"4085:51:26","statements":[{"expression":{"baseExpression":{"baseExpression":{"id":7291,"name":"_allowances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7178,"src":"4102:11:26","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":7293,"indexExpression":{"id":7292,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7283,"src":"4114:5:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4102:18:26","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":7295,"indexExpression":{"id":7294,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7285,"src":"4121:7:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4102:27:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7290,"id":7296,"nodeType":"Return","src":"4095:34:26"}]},"documentation":{"id":7281,"nodeType":"StructuredDocumentation","src":"3935:47:26","text":" @dev See {IERC20-allowance}."},"functionSelector":"dd62ed3e","id":7298,"implemented":true,"kind":"function","modifiers":[],"name":"allowance","nameLocation":"3996:9:26","nodeType":"FunctionDefinition","overrides":{"id":7287,"nodeType":"OverrideSpecifier","overrides":[],"src":"4058:8:26"},"parameters":{"id":7286,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7283,"mutability":"mutable","name":"owner","nameLocation":"4014:5:26","nodeType":"VariableDeclaration","scope":7298,"src":"4006:13:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7282,"name":"address","nodeType":"ElementaryTypeName","src":"4006:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7285,"mutability":"mutable","name":"spender","nameLocation":"4029:7:26","nodeType":"VariableDeclaration","scope":7298,"src":"4021:15:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7284,"name":"address","nodeType":"ElementaryTypeName","src":"4021:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4005:32:26"},"returnParameters":{"id":7290,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7289,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7298,"src":"4076:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7288,"name":"uint256","nodeType":"ElementaryTypeName","src":"4076:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4075:9:26"},"scope":7743,"src":"3987:149:26","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[7808],"body":{"id":7322,"nodeType":"Block","src":"4533:108:26","statements":[{"assignments":[7310],"declarations":[{"constant":false,"id":7310,"mutability":"mutable","name":"owner","nameLocation":"4551:5:26","nodeType":"VariableDeclaration","scope":7322,"src":"4543:13:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7309,"name":"address","nodeType":"ElementaryTypeName","src":"4543:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":7313,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":7311,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9276,"src":"4559:10:26","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":7312,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4559:12:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"4543:28:26"},{"expression":{"arguments":[{"id":7315,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7310,"src":"4590:5:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7316,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7301,"src":"4597:7:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7317,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7303,"src":"4606:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7314,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7677,"src":"4581:8:26","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":7318,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4581:32:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7319,"nodeType":"ExpressionStatement","src":"4581:32:26"},{"expression":{"hexValue":"74727565","id":7320,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4630:4:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":7308,"id":7321,"nodeType":"Return","src":"4623:11:26"}]},"documentation":{"id":7299,"nodeType":"StructuredDocumentation","src":"4142:297:26","text":" @dev See {IERC20-approve}.\n NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on\n `transferFrom`. This is semantically equivalent to an infinite approval.\n Requirements:\n - `spender` cannot be the zero address."},"functionSelector":"095ea7b3","id":7323,"implemented":true,"kind":"function","modifiers":[],"name":"approve","nameLocation":"4453:7:26","nodeType":"FunctionDefinition","overrides":{"id":7305,"nodeType":"OverrideSpecifier","overrides":[],"src":"4509:8:26"},"parameters":{"id":7304,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7301,"mutability":"mutable","name":"spender","nameLocation":"4469:7:26","nodeType":"VariableDeclaration","scope":7323,"src":"4461:15:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7300,"name":"address","nodeType":"ElementaryTypeName","src":"4461:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7303,"mutability":"mutable","name":"amount","nameLocation":"4486:6:26","nodeType":"VariableDeclaration","scope":7323,"src":"4478:14:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7302,"name":"uint256","nodeType":"ElementaryTypeName","src":"4478:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4460:33:26"},"returnParameters":{"id":7308,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7307,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7323,"src":"4527:4:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7306,"name":"bool","nodeType":"ElementaryTypeName","src":"4527:4:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4526:6:26"},"scope":7743,"src":"4444:197:26","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[7820],"body":{"id":7355,"nodeType":"Block","src":"5306:153:26","statements":[{"assignments":[7337],"declarations":[{"constant":false,"id":7337,"mutability":"mutable","name":"spender","nameLocation":"5324:7:26","nodeType":"VariableDeclaration","scope":7355,"src":"5316:15:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7336,"name":"address","nodeType":"ElementaryTypeName","src":"5316:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":7340,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":7338,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9276,"src":"5334:10:26","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":7339,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5334:12:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"5316:30:26"},{"expression":{"arguments":[{"id":7342,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7326,"src":"5372:4:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7343,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7337,"src":"5378:7:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7344,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7330,"src":"5387:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7341,"name":"_spendAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7720,"src":"5356:15:26","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":7345,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5356:38:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7346,"nodeType":"ExpressionStatement","src":"5356:38:26"},{"expression":{"arguments":[{"id":7348,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7326,"src":"5414:4:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7349,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7328,"src":"5420:2:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7350,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7330,"src":"5424:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7347,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7503,"src":"5404:9:26","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":7351,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5404:27:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7352,"nodeType":"ExpressionStatement","src":"5404:27:26"},{"expression":{"hexValue":"74727565","id":7353,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5448:4:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":7335,"id":7354,"nodeType":"Return","src":"5441:11:26"}]},"documentation":{"id":7324,"nodeType":"StructuredDocumentation","src":"4647:551:26","text":" @dev See {IERC20-transferFrom}.\n Emits an {Approval} event indicating the updated allowance. This is not\n required by the EIP. See the note at the beginning of {ERC20}.\n NOTE: Does not update the allowance if the current allowance\n is the maximum `uint256`.\n Requirements:\n - `from` and `to` cannot be the zero address.\n - `from` must have a balance of at least `amount`.\n - the caller must have allowance for ``from``'s tokens of at least\n `amount`."},"functionSelector":"23b872dd","id":7356,"implemented":true,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"5212:12:26","nodeType":"FunctionDefinition","overrides":{"id":7332,"nodeType":"OverrideSpecifier","overrides":[],"src":"5282:8:26"},"parameters":{"id":7331,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7326,"mutability":"mutable","name":"from","nameLocation":"5233:4:26","nodeType":"VariableDeclaration","scope":7356,"src":"5225:12:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7325,"name":"address","nodeType":"ElementaryTypeName","src":"5225:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7328,"mutability":"mutable","name":"to","nameLocation":"5247:2:26","nodeType":"VariableDeclaration","scope":7356,"src":"5239:10:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7327,"name":"address","nodeType":"ElementaryTypeName","src":"5239:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7330,"mutability":"mutable","name":"amount","nameLocation":"5259:6:26","nodeType":"VariableDeclaration","scope":7356,"src":"5251:14:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7329,"name":"uint256","nodeType":"ElementaryTypeName","src":"5251:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5224:42:26"},"returnParameters":{"id":7335,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7334,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7356,"src":"5300:4:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7333,"name":"bool","nodeType":"ElementaryTypeName","src":"5300:4:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5299:6:26"},"scope":7743,"src":"5203:256:26","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":7384,"nodeType":"Block","src":"5948:140:26","statements":[{"assignments":[7367],"declarations":[{"constant":false,"id":7367,"mutability":"mutable","name":"owner","nameLocation":"5966:5:26","nodeType":"VariableDeclaration","scope":7384,"src":"5958:13:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7366,"name":"address","nodeType":"ElementaryTypeName","src":"5958:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":7370,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":7368,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9276,"src":"5974:10:26","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":7369,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5974:12:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"5958:28:26"},{"expression":{"arguments":[{"id":7372,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7367,"src":"6005:5:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7373,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7359,"src":"6012:7:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7379,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":7375,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7367,"src":"6031:5:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7376,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7359,"src":"6038:7:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":7374,"name":"allowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7298,"src":"6021:9:26","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view returns (uint256)"}},"id":7377,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6021:25:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":7378,"name":"addedValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7361,"src":"6049:10:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6021:38:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7371,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7677,"src":"5996:8:26","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":7380,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5996:64:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7381,"nodeType":"ExpressionStatement","src":"5996:64:26"},{"expression":{"hexValue":"74727565","id":7382,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6077:4:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":7365,"id":7383,"nodeType":"Return","src":"6070:11:26"}]},"documentation":{"id":7357,"nodeType":"StructuredDocumentation","src":"5465:384:26","text":" @dev Atomically increases the allowance granted to `spender` by the caller.\n This is an alternative to {approve} that can be used as a mitigation for\n problems described in {IERC20-approve}.\n Emits an {Approval} event indicating the updated allowance.\n Requirements:\n - `spender` cannot be the zero address."},"functionSelector":"39509351","id":7385,"implemented":true,"kind":"function","modifiers":[],"name":"increaseAllowance","nameLocation":"5863:17:26","nodeType":"FunctionDefinition","parameters":{"id":7362,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7359,"mutability":"mutable","name":"spender","nameLocation":"5889:7:26","nodeType":"VariableDeclaration","scope":7385,"src":"5881:15:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7358,"name":"address","nodeType":"ElementaryTypeName","src":"5881:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7361,"mutability":"mutable","name":"addedValue","nameLocation":"5906:10:26","nodeType":"VariableDeclaration","scope":7385,"src":"5898:18:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7360,"name":"uint256","nodeType":"ElementaryTypeName","src":"5898:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5880:37:26"},"returnParameters":{"id":7365,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7364,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7385,"src":"5942:4:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7363,"name":"bool","nodeType":"ElementaryTypeName","src":"5942:4:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5941:6:26"},"scope":7743,"src":"5854:234:26","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":7425,"nodeType":"Block","src":"6674:328:26","statements":[{"assignments":[7396],"declarations":[{"constant":false,"id":7396,"mutability":"mutable","name":"owner","nameLocation":"6692:5:26","nodeType":"VariableDeclaration","scope":7425,"src":"6684:13:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7395,"name":"address","nodeType":"ElementaryTypeName","src":"6684:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":7399,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":7397,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9276,"src":"6700:10:26","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":7398,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6700:12:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"6684:28:26"},{"assignments":[7401],"declarations":[{"constant":false,"id":7401,"mutability":"mutable","name":"currentAllowance","nameLocation":"6730:16:26","nodeType":"VariableDeclaration","scope":7425,"src":"6722:24:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7400,"name":"uint256","nodeType":"ElementaryTypeName","src":"6722:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7406,"initialValue":{"arguments":[{"id":7403,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7396,"src":"6759:5:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7404,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7388,"src":"6766:7:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":7402,"name":"allowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7298,"src":"6749:9:26","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view returns (uint256)"}},"id":7405,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6749:25:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6722:52:26"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7410,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7408,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7401,"src":"6792:16:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":7409,"name":"subtractedValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7390,"src":"6812:15:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6792:35:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f","id":7411,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6829:39:26","typeDescriptions":{"typeIdentifier":"t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8","typeString":"literal_string \"ERC20: decreased allowance below zero\""},"value":"ERC20: decreased allowance below zero"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8","typeString":"literal_string \"ERC20: decreased allowance below zero\""}],"id":7407,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"6784:7:26","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":7412,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6784:85:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7413,"nodeType":"ExpressionStatement","src":"6784:85:26"},{"id":7422,"nodeType":"UncheckedBlock","src":"6879:95:26","statements":[{"expression":{"arguments":[{"id":7415,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7396,"src":"6912:5:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7416,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7388,"src":"6919:7:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7419,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7417,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7401,"src":"6928:16:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":7418,"name":"subtractedValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7390,"src":"6947:15:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6928:34:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7414,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7677,"src":"6903:8:26","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":7420,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6903:60:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7421,"nodeType":"ExpressionStatement","src":"6903:60:26"}]},{"expression":{"hexValue":"74727565","id":7423,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6991:4:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":7394,"id":7424,"nodeType":"Return","src":"6984:11:26"}]},"documentation":{"id":7386,"nodeType":"StructuredDocumentation","src":"6094:476:26","text":" @dev Atomically decreases the allowance granted to `spender` by the caller.\n This is an alternative to {approve} that can be used as a mitigation for\n problems described in {IERC20-approve}.\n Emits an {Approval} event indicating the updated allowance.\n Requirements:\n - `spender` cannot be the zero address.\n - `spender` must have allowance for the caller of at least\n `subtractedValue`."},"functionSelector":"a457c2d7","id":7426,"implemented":true,"kind":"function","modifiers":[],"name":"decreaseAllowance","nameLocation":"6584:17:26","nodeType":"FunctionDefinition","parameters":{"id":7391,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7388,"mutability":"mutable","name":"spender","nameLocation":"6610:7:26","nodeType":"VariableDeclaration","scope":7426,"src":"6602:15:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7387,"name":"address","nodeType":"ElementaryTypeName","src":"6602:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7390,"mutability":"mutable","name":"subtractedValue","nameLocation":"6627:15:26","nodeType":"VariableDeclaration","scope":7426,"src":"6619:23:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7389,"name":"uint256","nodeType":"ElementaryTypeName","src":"6619:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6601:42:26"},"returnParameters":{"id":7394,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7393,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7426,"src":"6668:4:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7392,"name":"bool","nodeType":"ElementaryTypeName","src":"6668:4:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6667:6:26"},"scope":7743,"src":"6575:427:26","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":7502,"nodeType":"Block","src":"7534:710:26","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":7442,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7437,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7429,"src":"7552:4:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":7440,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7568:1:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":7439,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7560:7:26","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7438,"name":"address","nodeType":"ElementaryTypeName","src":"7560:7:26","typeDescriptions":{}}},"id":7441,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7560:10:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7552:18:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"45524332303a207472616e736665722066726f6d20746865207a65726f2061646472657373","id":7443,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7572:39:26","typeDescriptions":{"typeIdentifier":"t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea","typeString":"literal_string \"ERC20: transfer from the zero address\""},"value":"ERC20: transfer from the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea","typeString":"literal_string \"ERC20: transfer from the zero address\""}],"id":7436,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"7544:7:26","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":7444,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7544:68:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7445,"nodeType":"ExpressionStatement","src":"7544:68:26"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":7452,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7447,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7431,"src":"7630:2:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":7450,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7644:1:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":7449,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7636:7:26","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7448,"name":"address","nodeType":"ElementaryTypeName","src":"7636:7:26","typeDescriptions":{}}},"id":7451,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7636:10:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7630:16:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"45524332303a207472616e7366657220746f20746865207a65726f2061646472657373","id":7453,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7648:37:26","typeDescriptions":{"typeIdentifier":"t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f","typeString":"literal_string \"ERC20: transfer to the zero address\""},"value":"ERC20: transfer to the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f","typeString":"literal_string \"ERC20: transfer to the zero address\""}],"id":7446,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"7622:7:26","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":7454,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7622:64:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7455,"nodeType":"ExpressionStatement","src":"7622:64:26"},{"expression":{"arguments":[{"id":7457,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7429,"src":"7718:4:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7458,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7431,"src":"7724:2:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7459,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7433,"src":"7728:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7456,"name":"_beforeTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7731,"src":"7697:20:26","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":7460,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7697:38:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7461,"nodeType":"ExpressionStatement","src":"7697:38:26"},{"assignments":[7463],"declarations":[{"constant":false,"id":7463,"mutability":"mutable","name":"fromBalance","nameLocation":"7754:11:26","nodeType":"VariableDeclaration","scope":7502,"src":"7746:19:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7462,"name":"uint256","nodeType":"ElementaryTypeName","src":"7746:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7467,"initialValue":{"baseExpression":{"id":7464,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7172,"src":"7768:9:26","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":7466,"indexExpression":{"id":7465,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7429,"src":"7778:4:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7768:15:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7746:37:26"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7471,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7469,"name":"fromBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7463,"src":"7801:11:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":7470,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7433,"src":"7816:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7801:21:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365","id":7472,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7824:40:26","typeDescriptions":{"typeIdentifier":"t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6","typeString":"literal_string \"ERC20: transfer amount exceeds balance\""},"value":"ERC20: transfer amount exceeds balance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6","typeString":"literal_string \"ERC20: transfer amount exceeds balance\""}],"id":7468,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"7793:7:26","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":7473,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7793:72:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7474,"nodeType":"ExpressionStatement","src":"7793:72:26"},{"id":7489,"nodeType":"UncheckedBlock","src":"7875:273:26","statements":[{"expression":{"id":7481,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":7475,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7172,"src":"7899:9:26","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":7477,"indexExpression":{"id":7476,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7429,"src":"7909:4:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7899:15:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7480,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7478,"name":"fromBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7463,"src":"7917:11:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":7479,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7433,"src":"7931:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7917:20:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7899:38:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7482,"nodeType":"ExpressionStatement","src":"7899:38:26"},{"expression":{"id":7487,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":7483,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7172,"src":"8114:9:26","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":7485,"indexExpression":{"id":7484,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7431,"src":"8124:2:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"8114:13:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":7486,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7433,"src":"8131:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8114:23:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7488,"nodeType":"ExpressionStatement","src":"8114:23:26"}]},{"eventCall":{"arguments":[{"id":7491,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7429,"src":"8172:4:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7492,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7431,"src":"8178:2:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7493,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7433,"src":"8182:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7490,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7755,"src":"8163:8:26","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":7494,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8163:26:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7495,"nodeType":"EmitStatement","src":"8158:31:26"},{"expression":{"arguments":[{"id":7497,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7429,"src":"8220:4:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7498,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7431,"src":"8226:2:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7499,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7433,"src":"8230:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7496,"name":"_afterTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7742,"src":"8200:19:26","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":7500,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8200:37:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7501,"nodeType":"ExpressionStatement","src":"8200:37:26"}]},"documentation":{"id":7427,"nodeType":"StructuredDocumentation","src":"7008:443:26","text":" @dev Moves `amount` of tokens from `from` to `to`.\n This internal function is equivalent to {transfer}, and can be used to\n e.g. implement automatic token fees, slashing mechanisms, etc.\n Emits a {Transfer} event.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `from` must have a balance of at least `amount`."},"id":7503,"implemented":true,"kind":"function","modifiers":[],"name":"_transfer","nameLocation":"7465:9:26","nodeType":"FunctionDefinition","parameters":{"id":7434,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7429,"mutability":"mutable","name":"from","nameLocation":"7483:4:26","nodeType":"VariableDeclaration","scope":7503,"src":"7475:12:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7428,"name":"address","nodeType":"ElementaryTypeName","src":"7475:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7431,"mutability":"mutable","name":"to","nameLocation":"7497:2:26","nodeType":"VariableDeclaration","scope":7503,"src":"7489:10:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7430,"name":"address","nodeType":"ElementaryTypeName","src":"7489:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7433,"mutability":"mutable","name":"amount","nameLocation":"7509:6:26","nodeType":"VariableDeclaration","scope":7503,"src":"7501:14:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7432,"name":"uint256","nodeType":"ElementaryTypeName","src":"7501:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7474:42:26"},"returnParameters":{"id":7435,"nodeType":"ParameterList","parameters":[],"src":"7534:0:26"},"scope":7743,"src":"7456:788:26","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":7559,"nodeType":"Block","src":"8585:470:26","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":7517,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7512,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7506,"src":"8603:7:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":7515,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8622:1:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":7514,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8614:7:26","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7513,"name":"address","nodeType":"ElementaryTypeName","src":"8614:7:26","typeDescriptions":{}}},"id":7516,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8614:10:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"8603:21:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"45524332303a206d696e7420746f20746865207a65726f2061646472657373","id":7518,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8626:33:26","typeDescriptions":{"typeIdentifier":"t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e","typeString":"literal_string \"ERC20: mint to the zero address\""},"value":"ERC20: mint to the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e","typeString":"literal_string \"ERC20: mint to the zero address\""}],"id":7511,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"8595:7:26","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":7519,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8595:65:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7520,"nodeType":"ExpressionStatement","src":"8595:65:26"},{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":7524,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8700:1:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":7523,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8692:7:26","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7522,"name":"address","nodeType":"ElementaryTypeName","src":"8692:7:26","typeDescriptions":{}}},"id":7525,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8692:10:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7526,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7506,"src":"8704:7:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7527,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7508,"src":"8713:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7521,"name":"_beforeTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7731,"src":"8671:20:26","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":7528,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8671:49:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7529,"nodeType":"ExpressionStatement","src":"8671:49:26"},{"expression":{"id":7532,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7530,"name":"_totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7180,"src":"8731:12:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":7531,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7508,"src":"8747:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8731:22:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7533,"nodeType":"ExpressionStatement","src":"8731:22:26"},{"id":7540,"nodeType":"UncheckedBlock","src":"8763:175:26","statements":[{"expression":{"id":7538,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":7534,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7172,"src":"8899:9:26","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":7536,"indexExpression":{"id":7535,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7506,"src":"8909:7:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"8899:18:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":7537,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7508,"src":"8921:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8899:28:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7539,"nodeType":"ExpressionStatement","src":"8899:28:26"}]},{"eventCall":{"arguments":[{"arguments":[{"hexValue":"30","id":7544,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8969:1:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":7543,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8961:7:26","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7542,"name":"address","nodeType":"ElementaryTypeName","src":"8961:7:26","typeDescriptions":{}}},"id":7545,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8961:10:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7546,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7506,"src":"8973:7:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7547,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7508,"src":"8982:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7541,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7755,"src":"8952:8:26","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":7548,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8952:37:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7549,"nodeType":"EmitStatement","src":"8947:42:26"},{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":7553,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9028:1:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":7552,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9020:7:26","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7551,"name":"address","nodeType":"ElementaryTypeName","src":"9020:7:26","typeDescriptions":{}}},"id":7554,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9020:10:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7555,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7506,"src":"9032:7:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7556,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7508,"src":"9041:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7550,"name":"_afterTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7742,"src":"9000:19:26","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":7557,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9000:48:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7558,"nodeType":"ExpressionStatement","src":"9000:48:26"}]},"documentation":{"id":7504,"nodeType":"StructuredDocumentation","src":"8250:265:26","text":"@dev Creates `amount` tokens and assigns them to `account`, increasing\n the total supply.\n Emits a {Transfer} event with `from` set to the zero address.\n Requirements:\n - `account` cannot be the zero address."},"id":7560,"implemented":true,"kind":"function","modifiers":[],"name":"_mint","nameLocation":"8529:5:26","nodeType":"FunctionDefinition","parameters":{"id":7509,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7506,"mutability":"mutable","name":"account","nameLocation":"8543:7:26","nodeType":"VariableDeclaration","scope":7560,"src":"8535:15:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7505,"name":"address","nodeType":"ElementaryTypeName","src":"8535:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7508,"mutability":"mutable","name":"amount","nameLocation":"8560:6:26","nodeType":"VariableDeclaration","scope":7560,"src":"8552:14:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7507,"name":"uint256","nodeType":"ElementaryTypeName","src":"8552:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8534:33:26"},"returnParameters":{"id":7510,"nodeType":"ParameterList","parameters":[],"src":"8585:0:26"},"scope":7743,"src":"8520:535:26","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":7631,"nodeType":"Block","src":"9440:594:26","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":7574,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7569,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7563,"src":"9458:7:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":7572,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9477:1:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":7571,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9469:7:26","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7570,"name":"address","nodeType":"ElementaryTypeName","src":"9469:7:26","typeDescriptions":{}}},"id":7573,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9469:10:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9458:21:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"45524332303a206275726e2066726f6d20746865207a65726f2061646472657373","id":7575,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9481:35:26","typeDescriptions":{"typeIdentifier":"t_stringliteral_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f","typeString":"literal_string \"ERC20: burn from the zero address\""},"value":"ERC20: burn from the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f","typeString":"literal_string \"ERC20: burn from the zero address\""}],"id":7568,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"9450:7:26","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":7576,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9450:67:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7577,"nodeType":"ExpressionStatement","src":"9450:67:26"},{"expression":{"arguments":[{"id":7579,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7563,"src":"9549:7:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":7582,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9566:1:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":7581,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9558:7:26","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7580,"name":"address","nodeType":"ElementaryTypeName","src":"9558:7:26","typeDescriptions":{}}},"id":7583,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9558:10:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7584,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7565,"src":"9570:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7578,"name":"_beforeTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7731,"src":"9528:20:26","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":7585,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9528:49:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7586,"nodeType":"ExpressionStatement","src":"9528:49:26"},{"assignments":[7588],"declarations":[{"constant":false,"id":7588,"mutability":"mutable","name":"accountBalance","nameLocation":"9596:14:26","nodeType":"VariableDeclaration","scope":7631,"src":"9588:22:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7587,"name":"uint256","nodeType":"ElementaryTypeName","src":"9588:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7592,"initialValue":{"baseExpression":{"id":7589,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7172,"src":"9613:9:26","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":7591,"indexExpression":{"id":7590,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7563,"src":"9623:7:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9613:18:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9588:43:26"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7596,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7594,"name":"accountBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7588,"src":"9649:14:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":7595,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7565,"src":"9667:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9649:24:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"45524332303a206275726e20616d6f756e7420657863656564732062616c616e6365","id":7597,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9675:36:26","typeDescriptions":{"typeIdentifier":"t_stringliteral_149b126e7125232b4200af45303d04fba8b74653b1a295a6a561a528c33fefdd","typeString":"literal_string \"ERC20: burn amount exceeds balance\""},"value":"ERC20: burn amount exceeds balance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_149b126e7125232b4200af45303d04fba8b74653b1a295a6a561a528c33fefdd","typeString":"literal_string \"ERC20: burn amount exceeds balance\""}],"id":7593,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"9641:7:26","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":7598,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9641:71:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7599,"nodeType":"ExpressionStatement","src":"9641:71:26"},{"id":7612,"nodeType":"UncheckedBlock","src":"9722:194:26","statements":[{"expression":{"id":7606,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":7600,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7172,"src":"9746:9:26","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":7602,"indexExpression":{"id":7601,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7563,"src":"9756:7:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9746:18:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7605,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7603,"name":"accountBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7588,"src":"9767:14:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":7604,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7565,"src":"9784:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9767:23:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9746:44:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7607,"nodeType":"ExpressionStatement","src":"9746:44:26"},{"expression":{"id":7610,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7608,"name":"_totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7180,"src":"9883:12:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":7609,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7565,"src":"9899:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9883:22:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7611,"nodeType":"ExpressionStatement","src":"9883:22:26"}]},{"eventCall":{"arguments":[{"id":7614,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7563,"src":"9940:7:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":7617,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9957:1:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":7616,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9949:7:26","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7615,"name":"address","nodeType":"ElementaryTypeName","src":"9949:7:26","typeDescriptions":{}}},"id":7618,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9949:10:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7619,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7565,"src":"9961:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7613,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7755,"src":"9931:8:26","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":7620,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9931:37:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7621,"nodeType":"EmitStatement","src":"9926:42:26"},{"expression":{"arguments":[{"id":7623,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7563,"src":"9999:7:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":7626,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10016:1:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":7625,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10008:7:26","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7624,"name":"address","nodeType":"ElementaryTypeName","src":"10008:7:26","typeDescriptions":{}}},"id":7627,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10008:10:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7628,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7565,"src":"10020:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7622,"name":"_afterTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7742,"src":"9979:19:26","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":7629,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9979:48:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7630,"nodeType":"ExpressionStatement","src":"9979:48:26"}]},"documentation":{"id":7561,"nodeType":"StructuredDocumentation","src":"9061:309:26","text":" @dev Destroys `amount` tokens from `account`, reducing the\n total supply.\n Emits a {Transfer} event with `to` set to the zero address.\n Requirements:\n - `account` cannot be the zero address.\n - `account` must have at least `amount` tokens."},"id":7632,"implemented":true,"kind":"function","modifiers":[],"name":"_burn","nameLocation":"9384:5:26","nodeType":"FunctionDefinition","parameters":{"id":7566,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7563,"mutability":"mutable","name":"account","nameLocation":"9398:7:26","nodeType":"VariableDeclaration","scope":7632,"src":"9390:15:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7562,"name":"address","nodeType":"ElementaryTypeName","src":"9390:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7565,"mutability":"mutable","name":"amount","nameLocation":"9415:6:26","nodeType":"VariableDeclaration","scope":7632,"src":"9407:14:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7564,"name":"uint256","nodeType":"ElementaryTypeName","src":"9407:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9389:33:26"},"returnParameters":{"id":7567,"nodeType":"ParameterList","parameters":[],"src":"9440:0:26"},"scope":7743,"src":"9375:659:26","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":7676,"nodeType":"Block","src":"10540:257:26","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":7648,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7643,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7635,"src":"10558:5:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":7646,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10575:1:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":7645,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10567:7:26","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7644,"name":"address","nodeType":"ElementaryTypeName","src":"10567:7:26","typeDescriptions":{}}},"id":7647,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10567:10:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"10558:19:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"45524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373","id":7649,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10579:38:26","typeDescriptions":{"typeIdentifier":"t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208","typeString":"literal_string \"ERC20: approve from the zero address\""},"value":"ERC20: approve from the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208","typeString":"literal_string \"ERC20: approve from the zero address\""}],"id":7642,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"10550:7:26","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":7650,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10550:68:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7651,"nodeType":"ExpressionStatement","src":"10550:68:26"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":7658,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7653,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7637,"src":"10636:7:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":7656,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10655:1:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":7655,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10647:7:26","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7654,"name":"address","nodeType":"ElementaryTypeName","src":"10647:7:26","typeDescriptions":{}}},"id":7657,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10647:10:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"10636:21:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"45524332303a20617070726f766520746f20746865207a65726f2061646472657373","id":7659,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10659:36:26","typeDescriptions":{"typeIdentifier":"t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029","typeString":"literal_string \"ERC20: approve to the zero address\""},"value":"ERC20: approve to the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029","typeString":"literal_string \"ERC20: approve to the zero address\""}],"id":7652,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"10628:7:26","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":7660,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10628:68:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7661,"nodeType":"ExpressionStatement","src":"10628:68:26"},{"expression":{"id":7668,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":7662,"name":"_allowances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7178,"src":"10707:11:26","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":7665,"indexExpression":{"id":7663,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7635,"src":"10719:5:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10707:18:26","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":7666,"indexExpression":{"id":7664,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7637,"src":"10726:7:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"10707:27:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":7667,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7639,"src":"10737:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10707:36:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7669,"nodeType":"ExpressionStatement","src":"10707:36:26"},{"eventCall":{"arguments":[{"id":7671,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7635,"src":"10767:5:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7672,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7637,"src":"10774:7:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7673,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7639,"src":"10783:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7670,"name":"Approval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7764,"src":"10758:8:26","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":7674,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10758:32:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7675,"nodeType":"EmitStatement","src":"10753:37:26"}]},"documentation":{"id":7633,"nodeType":"StructuredDocumentation","src":"10040:412:26","text":" @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.\n This internal function is equivalent to `approve`, and can be used to\n e.g. set automatic allowances for certain subsystems, etc.\n Emits an {Approval} event.\n Requirements:\n - `owner` cannot be the zero address.\n - `spender` cannot be the zero address."},"id":7677,"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nameLocation":"10466:8:26","nodeType":"FunctionDefinition","parameters":{"id":7640,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7635,"mutability":"mutable","name":"owner","nameLocation":"10483:5:26","nodeType":"VariableDeclaration","scope":7677,"src":"10475:13:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7634,"name":"address","nodeType":"ElementaryTypeName","src":"10475:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7637,"mutability":"mutable","name":"spender","nameLocation":"10498:7:26","nodeType":"VariableDeclaration","scope":7677,"src":"10490:15:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7636,"name":"address","nodeType":"ElementaryTypeName","src":"10490:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7639,"mutability":"mutable","name":"amount","nameLocation":"10515:6:26","nodeType":"VariableDeclaration","scope":7677,"src":"10507:14:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7638,"name":"uint256","nodeType":"ElementaryTypeName","src":"10507:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10474:48:26"},"returnParameters":{"id":7641,"nodeType":"ParameterList","parameters":[],"src":"10540:0:26"},"scope":7743,"src":"10457:340:26","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":7719,"nodeType":"Block","src":"11168:321:26","statements":[{"assignments":[7688],"declarations":[{"constant":false,"id":7688,"mutability":"mutable","name":"currentAllowance","nameLocation":"11186:16:26","nodeType":"VariableDeclaration","scope":7719,"src":"11178:24:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7687,"name":"uint256","nodeType":"ElementaryTypeName","src":"11178:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7693,"initialValue":{"arguments":[{"id":7690,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7680,"src":"11215:5:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7691,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7682,"src":"11222:7:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":7689,"name":"allowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7298,"src":"11205:9:26","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view returns (uint256)"}},"id":7692,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11205:25:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"11178:52:26"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7700,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7694,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7688,"src":"11244:16:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"arguments":[{"id":7697,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11269:7:26","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":7696,"name":"uint256","nodeType":"ElementaryTypeName","src":"11269:7:26","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":7695,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"11264:4:26","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":7698,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11264:13:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":7699,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11278:3:26","memberName":"max","nodeType":"MemberAccess","src":"11264:17:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11244:37:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7718,"nodeType":"IfStatement","src":"11240:243:26","trueBody":{"id":7717,"nodeType":"Block","src":"11283:200:26","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7704,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7702,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7688,"src":"11305:16:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":7703,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7684,"src":"11325:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11305:26:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"45524332303a20696e73756666696369656e7420616c6c6f77616e6365","id":7705,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11333:31:26","typeDescriptions":{"typeIdentifier":"t_stringliteral_3b6607e091cba9325f958656d2b5e0622ab7dc0eac71a26ac788cb25bc19f4fe","typeString":"literal_string \"ERC20: insufficient allowance\""},"value":"ERC20: insufficient allowance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_3b6607e091cba9325f958656d2b5e0622ab7dc0eac71a26ac788cb25bc19f4fe","typeString":"literal_string \"ERC20: insufficient allowance\""}],"id":7701,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"11297:7:26","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":7706,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11297:68:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7707,"nodeType":"ExpressionStatement","src":"11297:68:26"},{"id":7716,"nodeType":"UncheckedBlock","src":"11379:94:26","statements":[{"expression":{"arguments":[{"id":7709,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7680,"src":"11416:5:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7710,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7682,"src":"11423:7:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7713,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7711,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7688,"src":"11432:16:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":7712,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7684,"src":"11451:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11432:25:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7708,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7677,"src":"11407:8:26","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":7714,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11407:51:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7715,"nodeType":"ExpressionStatement","src":"11407:51:26"}]}]}}]},"documentation":{"id":7678,"nodeType":"StructuredDocumentation","src":"10803:270:26","text":" @dev Updates `owner` s allowance for `spender` based on spent `amount`.\n Does not update the allowance amount in case of infinite allowance.\n Revert if not enough allowance is available.\n Might emit an {Approval} event."},"id":7720,"implemented":true,"kind":"function","modifiers":[],"name":"_spendAllowance","nameLocation":"11087:15:26","nodeType":"FunctionDefinition","parameters":{"id":7685,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7680,"mutability":"mutable","name":"owner","nameLocation":"11111:5:26","nodeType":"VariableDeclaration","scope":7720,"src":"11103:13:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7679,"name":"address","nodeType":"ElementaryTypeName","src":"11103:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7682,"mutability":"mutable","name":"spender","nameLocation":"11126:7:26","nodeType":"VariableDeclaration","scope":7720,"src":"11118:15:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7681,"name":"address","nodeType":"ElementaryTypeName","src":"11118:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7684,"mutability":"mutable","name":"amount","nameLocation":"11143:6:26","nodeType":"VariableDeclaration","scope":7720,"src":"11135:14:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7683,"name":"uint256","nodeType":"ElementaryTypeName","src":"11135:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11102:48:26"},"returnParameters":{"id":7686,"nodeType":"ParameterList","parameters":[],"src":"11168:0:26"},"scope":7743,"src":"11078:411:26","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":7730,"nodeType":"Block","src":"12162:2:26","statements":[]},"documentation":{"id":7721,"nodeType":"StructuredDocumentation","src":"11495:573:26","text":" @dev Hook that is called before any transfer of tokens. This includes\n minting and burning.\n Calling conditions:\n - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n will be transferred to `to`.\n - when `from` is zero, `amount` tokens will be minted for `to`.\n - when `to` is zero, `amount` of ``from``'s tokens will be burned.\n - `from` and `to` are never both zero.\n To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]."},"id":7731,"implemented":true,"kind":"function","modifiers":[],"name":"_beforeTokenTransfer","nameLocation":"12082:20:26","nodeType":"FunctionDefinition","parameters":{"id":7728,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7723,"mutability":"mutable","name":"from","nameLocation":"12111:4:26","nodeType":"VariableDeclaration","scope":7731,"src":"12103:12:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7722,"name":"address","nodeType":"ElementaryTypeName","src":"12103:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7725,"mutability":"mutable","name":"to","nameLocation":"12125:2:26","nodeType":"VariableDeclaration","scope":7731,"src":"12117:10:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7724,"name":"address","nodeType":"ElementaryTypeName","src":"12117:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7727,"mutability":"mutable","name":"amount","nameLocation":"12137:6:26","nodeType":"VariableDeclaration","scope":7731,"src":"12129:14:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7726,"name":"uint256","nodeType":"ElementaryTypeName","src":"12129:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12102:42:26"},"returnParameters":{"id":7729,"nodeType":"ParameterList","parameters":[],"src":"12162:0:26"},"scope":7743,"src":"12073:91:26","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":7741,"nodeType":"Block","src":"12840:2:26","statements":[]},"documentation":{"id":7732,"nodeType":"StructuredDocumentation","src":"12170:577:26","text":" @dev Hook that is called after any transfer of tokens. This includes\n minting and burning.\n Calling conditions:\n - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n has been transferred to `to`.\n - when `from` is zero, `amount` tokens have been minted for `to`.\n - when `to` is zero, `amount` of ``from``'s tokens have been burned.\n - `from` and `to` are never both zero.\n To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]."},"id":7742,"implemented":true,"kind":"function","modifiers":[],"name":"_afterTokenTransfer","nameLocation":"12761:19:26","nodeType":"FunctionDefinition","parameters":{"id":7739,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7734,"mutability":"mutable","name":"from","nameLocation":"12789:4:26","nodeType":"VariableDeclaration","scope":7742,"src":"12781:12:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7733,"name":"address","nodeType":"ElementaryTypeName","src":"12781:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7736,"mutability":"mutable","name":"to","nameLocation":"12803:2:26","nodeType":"VariableDeclaration","scope":7742,"src":"12795:10:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7735,"name":"address","nodeType":"ElementaryTypeName","src":"12795:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7738,"mutability":"mutable","name":"amount","nameLocation":"12815:6:26","nodeType":"VariableDeclaration","scope":7742,"src":"12807:14:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7737,"name":"uint256","nodeType":"ElementaryTypeName","src":"12807:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12780:42:26"},"returnParameters":{"id":7740,"nodeType":"ParameterList","parameters":[],"src":"12840:0:26"},"scope":7743,"src":"12752:90:26","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":7744,"src":"1532:11312:26","usedErrors":[]}],"src":"105:12740:26"},"id":26},"@openzeppelin/contracts/token/ERC20/IERC20.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","exportedSymbols":{"IERC20":[7821]},"id":7822,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":7745,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"106:23:27"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC20","contractDependencies":[],"contractKind":"interface","documentation":{"id":7746,"nodeType":"StructuredDocumentation","src":"131:70:27","text":" @dev Interface of the ERC20 standard as defined in the EIP."},"fullyImplemented":false,"id":7821,"linearizedBaseContracts":[7821],"name":"IERC20","nameLocation":"212:6:27","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":7747,"nodeType":"StructuredDocumentation","src":"225:158:27","text":" @dev Emitted when `value` tokens are moved from one account (`from`) to\n another (`to`).\n Note that `value` may be zero."},"eventSelector":"ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","id":7755,"name":"Transfer","nameLocation":"394:8:27","nodeType":"EventDefinition","parameters":{"id":7754,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7749,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"419:4:27","nodeType":"VariableDeclaration","scope":7755,"src":"403:20:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7748,"name":"address","nodeType":"ElementaryTypeName","src":"403:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7751,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"441:2:27","nodeType":"VariableDeclaration","scope":7755,"src":"425:18:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7750,"name":"address","nodeType":"ElementaryTypeName","src":"425:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7753,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"453:5:27","nodeType":"VariableDeclaration","scope":7755,"src":"445:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7752,"name":"uint256","nodeType":"ElementaryTypeName","src":"445:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"402:57:27"},"src":"388:72:27"},{"anonymous":false,"documentation":{"id":7756,"nodeType":"StructuredDocumentation","src":"466:148:27","text":" @dev Emitted when the allowance of a `spender` for an `owner` is set by\n a call to {approve}. `value` is the new allowance."},"eventSelector":"8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925","id":7764,"name":"Approval","nameLocation":"625:8:27","nodeType":"EventDefinition","parameters":{"id":7763,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7758,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"650:5:27","nodeType":"VariableDeclaration","scope":7764,"src":"634:21:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7757,"name":"address","nodeType":"ElementaryTypeName","src":"634:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7760,"indexed":true,"mutability":"mutable","name":"spender","nameLocation":"673:7:27","nodeType":"VariableDeclaration","scope":7764,"src":"657:23:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7759,"name":"address","nodeType":"ElementaryTypeName","src":"657:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7762,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"690:5:27","nodeType":"VariableDeclaration","scope":7764,"src":"682:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7761,"name":"uint256","nodeType":"ElementaryTypeName","src":"682:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"633:63:27"},"src":"619:78:27"},{"documentation":{"id":7765,"nodeType":"StructuredDocumentation","src":"703:66:27","text":" @dev Returns the amount of tokens in existence."},"functionSelector":"18160ddd","id":7770,"implemented":false,"kind":"function","modifiers":[],"name":"totalSupply","nameLocation":"783:11:27","nodeType":"FunctionDefinition","parameters":{"id":7766,"nodeType":"ParameterList","parameters":[],"src":"794:2:27"},"returnParameters":{"id":7769,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7768,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7770,"src":"820:7:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7767,"name":"uint256","nodeType":"ElementaryTypeName","src":"820:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"819:9:27"},"scope":7821,"src":"774:55:27","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":7771,"nodeType":"StructuredDocumentation","src":"835:72:27","text":" @dev Returns the amount of tokens owned by `account`."},"functionSelector":"70a08231","id":7778,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"921:9:27","nodeType":"FunctionDefinition","parameters":{"id":7774,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7773,"mutability":"mutable","name":"account","nameLocation":"939:7:27","nodeType":"VariableDeclaration","scope":7778,"src":"931:15:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7772,"name":"address","nodeType":"ElementaryTypeName","src":"931:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"930:17:27"},"returnParameters":{"id":7777,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7776,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7778,"src":"971:7:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7775,"name":"uint256","nodeType":"ElementaryTypeName","src":"971:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"970:9:27"},"scope":7821,"src":"912:68:27","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":7779,"nodeType":"StructuredDocumentation","src":"986:202:27","text":" @dev Moves `amount` tokens from the caller's account to `to`.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."},"functionSelector":"a9059cbb","id":7788,"implemented":false,"kind":"function","modifiers":[],"name":"transfer","nameLocation":"1202:8:27","nodeType":"FunctionDefinition","parameters":{"id":7784,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7781,"mutability":"mutable","name":"to","nameLocation":"1219:2:27","nodeType":"VariableDeclaration","scope":7788,"src":"1211:10:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7780,"name":"address","nodeType":"ElementaryTypeName","src":"1211:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7783,"mutability":"mutable","name":"amount","nameLocation":"1231:6:27","nodeType":"VariableDeclaration","scope":7788,"src":"1223:14:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7782,"name":"uint256","nodeType":"ElementaryTypeName","src":"1223:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1210:28:27"},"returnParameters":{"id":7787,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7786,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7788,"src":"1257:4:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7785,"name":"bool","nodeType":"ElementaryTypeName","src":"1257:4:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1256:6:27"},"scope":7821,"src":"1193:70:27","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":7789,"nodeType":"StructuredDocumentation","src":"1269:264:27","text":" @dev Returns the remaining number of tokens that `spender` will be\n allowed to spend on behalf of `owner` through {transferFrom}. This is\n zero by default.\n This value changes when {approve} or {transferFrom} are called."},"functionSelector":"dd62ed3e","id":7798,"implemented":false,"kind":"function","modifiers":[],"name":"allowance","nameLocation":"1547:9:27","nodeType":"FunctionDefinition","parameters":{"id":7794,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7791,"mutability":"mutable","name":"owner","nameLocation":"1565:5:27","nodeType":"VariableDeclaration","scope":7798,"src":"1557:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7790,"name":"address","nodeType":"ElementaryTypeName","src":"1557:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7793,"mutability":"mutable","name":"spender","nameLocation":"1580:7:27","nodeType":"VariableDeclaration","scope":7798,"src":"1572:15:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7792,"name":"address","nodeType":"ElementaryTypeName","src":"1572:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1556:32:27"},"returnParameters":{"id":7797,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7796,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7798,"src":"1612:7:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7795,"name":"uint256","nodeType":"ElementaryTypeName","src":"1612:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1611:9:27"},"scope":7821,"src":"1538:83:27","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":7799,"nodeType":"StructuredDocumentation","src":"1627:642:27","text":" @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n Returns a boolean value indicating whether the operation succeeded.\n IMPORTANT: Beware that changing an allowance with this method brings the risk\n that someone may use both the old and the new allowance by unfortunate\n transaction ordering. One possible solution to mitigate this race\n condition is to first reduce the spender's allowance to 0 and set the\n desired value afterwards:\n https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n Emits an {Approval} event."},"functionSelector":"095ea7b3","id":7808,"implemented":false,"kind":"function","modifiers":[],"name":"approve","nameLocation":"2283:7:27","nodeType":"FunctionDefinition","parameters":{"id":7804,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7801,"mutability":"mutable","name":"spender","nameLocation":"2299:7:27","nodeType":"VariableDeclaration","scope":7808,"src":"2291:15:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7800,"name":"address","nodeType":"ElementaryTypeName","src":"2291:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7803,"mutability":"mutable","name":"amount","nameLocation":"2316:6:27","nodeType":"VariableDeclaration","scope":7808,"src":"2308:14:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7802,"name":"uint256","nodeType":"ElementaryTypeName","src":"2308:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2290:33:27"},"returnParameters":{"id":7807,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7806,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7808,"src":"2342:4:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7805,"name":"bool","nodeType":"ElementaryTypeName","src":"2342:4:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2341:6:27"},"scope":7821,"src":"2274:74:27","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":7809,"nodeType":"StructuredDocumentation","src":"2354:287:27","text":" @dev Moves `amount` tokens from `from` to `to` using the\n allowance mechanism. `amount` is then deducted from the caller's\n allowance.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."},"functionSelector":"23b872dd","id":7820,"implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"2655:12:27","nodeType":"FunctionDefinition","parameters":{"id":7816,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7811,"mutability":"mutable","name":"from","nameLocation":"2676:4:27","nodeType":"VariableDeclaration","scope":7820,"src":"2668:12:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7810,"name":"address","nodeType":"ElementaryTypeName","src":"2668:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7813,"mutability":"mutable","name":"to","nameLocation":"2690:2:27","nodeType":"VariableDeclaration","scope":7820,"src":"2682:10:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7812,"name":"address","nodeType":"ElementaryTypeName","src":"2682:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7815,"mutability":"mutable","name":"amount","nameLocation":"2702:6:27","nodeType":"VariableDeclaration","scope":7820,"src":"2694:14:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7814,"name":"uint256","nodeType":"ElementaryTypeName","src":"2694:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2667:42:27"},"returnParameters":{"id":7819,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7818,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7820,"src":"2728:4:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7817,"name":"bool","nodeType":"ElementaryTypeName","src":"2728:4:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2727:6:27"},"scope":7821,"src":"2646:88:27","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":7822,"src":"202:2534:27","usedErrors":[]}],"src":"106:2631:27"},"id":27},"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol","exportedSymbols":{"IERC20":[7821],"IERC20Metadata":[7846]},"id":7847,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":7823,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"110:23:28"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"../IERC20.sol","id":7824,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7847,"sourceUnit":7822,"src":"135:23:28","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":7826,"name":"IERC20","nameLocations":["305:6:28"],"nodeType":"IdentifierPath","referencedDeclaration":7821,"src":"305:6:28"},"id":7827,"nodeType":"InheritanceSpecifier","src":"305:6:28"}],"canonicalName":"IERC20Metadata","contractDependencies":[],"contractKind":"interface","documentation":{"id":7825,"nodeType":"StructuredDocumentation","src":"160:116:28","text":" @dev Interface for the optional metadata functions from the ERC20 standard.\n _Available since v4.1._"},"fullyImplemented":false,"id":7846,"linearizedBaseContracts":[7846,7821],"name":"IERC20Metadata","nameLocation":"287:14:28","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":7828,"nodeType":"StructuredDocumentation","src":"318:54:28","text":" @dev Returns the name of the token."},"functionSelector":"06fdde03","id":7833,"implemented":false,"kind":"function","modifiers":[],"name":"name","nameLocation":"386:4:28","nodeType":"FunctionDefinition","parameters":{"id":7829,"nodeType":"ParameterList","parameters":[],"src":"390:2:28"},"returnParameters":{"id":7832,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7831,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7833,"src":"416:13:28","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":7830,"name":"string","nodeType":"ElementaryTypeName","src":"416:6:28","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"415:15:28"},"scope":7846,"src":"377:54:28","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":7834,"nodeType":"StructuredDocumentation","src":"437:56:28","text":" @dev Returns the symbol of the token."},"functionSelector":"95d89b41","id":7839,"implemented":false,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"507:6:28","nodeType":"FunctionDefinition","parameters":{"id":7835,"nodeType":"ParameterList","parameters":[],"src":"513:2:28"},"returnParameters":{"id":7838,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7837,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7839,"src":"539:13:28","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":7836,"name":"string","nodeType":"ElementaryTypeName","src":"539:6:28","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"538:15:28"},"scope":7846,"src":"498:56:28","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":7840,"nodeType":"StructuredDocumentation","src":"560:65:28","text":" @dev Returns the decimals places of the token."},"functionSelector":"313ce567","id":7845,"implemented":false,"kind":"function","modifiers":[],"name":"decimals","nameLocation":"639:8:28","nodeType":"FunctionDefinition","parameters":{"id":7841,"nodeType":"ParameterList","parameters":[],"src":"647:2:28"},"returnParameters":{"id":7844,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7843,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7845,"src":"673:5:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":7842,"name":"uint8","nodeType":"ElementaryTypeName","src":"673:5:28","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"672:7:28"},"scope":7846,"src":"630:50:28","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":7847,"src":"277:405:28","usedErrors":[]}],"src":"110:573:28"},"id":28},"@openzeppelin/contracts/token/ERC721/ERC721.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC721/ERC721.sol","exportedSymbols":{"Address":[9264],"Context":[9294],"ERC165":[9731],"ERC721":[8773],"IERC165":[9743],"IERC721":[8889],"IERC721Metadata":[8934],"IERC721Receiver":[8907],"Math":[10609],"SignedMath":[10714],"Strings":[9707]},"id":8774,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":7848,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"107:23:29"},{"absolutePath":"@openzeppelin/contracts/token/ERC721/IERC721.sol","file":"./IERC721.sol","id":7849,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8774,"sourceUnit":8890,"src":"132:23:29","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol","file":"./IERC721Receiver.sol","id":7850,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8774,"sourceUnit":8908,"src":"156:31:29","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol","file":"./extensions/IERC721Metadata.sol","id":7851,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8774,"sourceUnit":8935,"src":"188:42:29","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Address.sol","file":"../../utils/Address.sol","id":7852,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8774,"sourceUnit":9265,"src":"231:33:29","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Context.sol","file":"../../utils/Context.sol","id":7853,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8774,"sourceUnit":9295,"src":"265:33:29","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Strings.sol","file":"../../utils/Strings.sol","id":7854,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8774,"sourceUnit":9708,"src":"299:33:29","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/introspection/ERC165.sol","file":"../../utils/introspection/ERC165.sol","id":7855,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8774,"sourceUnit":9732,"src":"333:46:29","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":7857,"name":"Context","nameLocations":["647:7:29"],"nodeType":"IdentifierPath","referencedDeclaration":9294,"src":"647:7:29"},"id":7858,"nodeType":"InheritanceSpecifier","src":"647:7:29"},{"baseName":{"id":7859,"name":"ERC165","nameLocations":["656:6:29"],"nodeType":"IdentifierPath","referencedDeclaration":9731,"src":"656:6:29"},"id":7860,"nodeType":"InheritanceSpecifier","src":"656:6:29"},{"baseName":{"id":7861,"name":"IERC721","nameLocations":["664:7:29"],"nodeType":"IdentifierPath","referencedDeclaration":8889,"src":"664:7:29"},"id":7862,"nodeType":"InheritanceSpecifier","src":"664:7:29"},{"baseName":{"id":7863,"name":"IERC721Metadata","nameLocations":["673:15:29"],"nodeType":"IdentifierPath","referencedDeclaration":8934,"src":"673:15:29"},"id":7864,"nodeType":"InheritanceSpecifier","src":"673:15:29"}],"canonicalName":"ERC721","contractDependencies":[],"contractKind":"contract","documentation":{"id":7856,"nodeType":"StructuredDocumentation","src":"381:246:29","text":" @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including\n the Metadata extension, but not including the Enumerable extension, which is available separately as\n {ERC721Enumerable}."},"fullyImplemented":true,"id":8773,"linearizedBaseContracts":[8773,8934,8889,9731,9743,9294],"name":"ERC721","nameLocation":"637:6:29","nodeType":"ContractDefinition","nodes":[{"global":false,"id":7867,"libraryName":{"id":7865,"name":"Address","nameLocations":["701:7:29"],"nodeType":"IdentifierPath","referencedDeclaration":9264,"src":"701:7:29"},"nodeType":"UsingForDirective","src":"695:26:29","typeName":{"id":7866,"name":"address","nodeType":"ElementaryTypeName","src":"713:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},{"global":false,"id":7870,"libraryName":{"id":7868,"name":"Strings","nameLocations":["732:7:29"],"nodeType":"IdentifierPath","referencedDeclaration":9707,"src":"732:7:29"},"nodeType":"UsingForDirective","src":"726:26:29","typeName":{"id":7869,"name":"uint256","nodeType":"ElementaryTypeName","src":"744:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"constant":false,"id":7872,"mutability":"mutable","name":"_name","nameLocation":"791:5:29","nodeType":"VariableDeclaration","scope":8773,"src":"776:20:29","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":7871,"name":"string","nodeType":"ElementaryTypeName","src":"776:6:29","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"constant":false,"id":7874,"mutability":"mutable","name":"_symbol","nameLocation":"838:7:29","nodeType":"VariableDeclaration","scope":8773,"src":"823:22:29","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":7873,"name":"string","nodeType":"ElementaryTypeName","src":"823:6:29","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"constant":false,"id":7878,"mutability":"mutable","name":"_owners","nameLocation":"934:7:29","nodeType":"VariableDeclaration","scope":8773,"src":"898:43:29","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"typeName":{"id":7877,"keyType":{"id":7875,"name":"uint256","nodeType":"ElementaryTypeName","src":"906:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"898:27:29","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"valueType":{"id":7876,"name":"address","nodeType":"ElementaryTypeName","src":"917:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"visibility":"private"},{"constant":false,"id":7882,"mutability":"mutable","name":"_balances","nameLocation":"1028:9:29","nodeType":"VariableDeclaration","scope":8773,"src":"992:45:29","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":7881,"keyType":{"id":7879,"name":"address","nodeType":"ElementaryTypeName","src":"1000:7:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"992:27:29","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueType":{"id":7880,"name":"uint256","nodeType":"ElementaryTypeName","src":"1011:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"private"},{"constant":false,"id":7886,"mutability":"mutable","name":"_tokenApprovals","nameLocation":"1129:15:29","nodeType":"VariableDeclaration","scope":8773,"src":"1093:51:29","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"typeName":{"id":7885,"keyType":{"id":7883,"name":"uint256","nodeType":"ElementaryTypeName","src":"1101:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"1093:27:29","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"valueType":{"id":7884,"name":"address","nodeType":"ElementaryTypeName","src":"1112:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"visibility":"private"},{"constant":false,"id":7892,"mutability":"mutable","name":"_operatorApprovals","nameLocation":"1252:18:29","nodeType":"VariableDeclaration","scope":8773,"src":"1199:71:29","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"typeName":{"id":7891,"keyType":{"id":7887,"name":"address","nodeType":"ElementaryTypeName","src":"1207:7:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1199:44:29","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"valueType":{"id":7890,"keyType":{"id":7888,"name":"address","nodeType":"ElementaryTypeName","src":"1226:7:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1218:24:29","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueType":{"id":7889,"name":"bool","nodeType":"ElementaryTypeName","src":"1237:4:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}}},"visibility":"private"},{"body":{"id":7908,"nodeType":"Block","src":"1446:57:29","statements":[{"expression":{"id":7902,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7900,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7872,"src":"1456:5:29","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":7901,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7895,"src":"1464:5:29","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"1456:13:29","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":7903,"nodeType":"ExpressionStatement","src":"1456:13:29"},{"expression":{"id":7906,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7904,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7874,"src":"1479:7:29","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":7905,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7897,"src":"1489:7:29","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"1479:17:29","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":7907,"nodeType":"ExpressionStatement","src":"1479:17:29"}]},"documentation":{"id":7893,"nodeType":"StructuredDocumentation","src":"1277:108:29","text":" @dev Initializes the contract by setting a `name` and a `symbol` to the token collection."},"id":7909,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":7898,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7895,"mutability":"mutable","name":"name_","nameLocation":"1416:5:29","nodeType":"VariableDeclaration","scope":7909,"src":"1402:19:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":7894,"name":"string","nodeType":"ElementaryTypeName","src":"1402:6:29","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":7897,"mutability":"mutable","name":"symbol_","nameLocation":"1437:7:29","nodeType":"VariableDeclaration","scope":7909,"src":"1423:21:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":7896,"name":"string","nodeType":"ElementaryTypeName","src":"1423:6:29","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1401:44:29"},"returnParameters":{"id":7899,"nodeType":"ParameterList","parameters":[],"src":"1446:0:29"},"scope":8773,"src":"1390:113:29","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[9730,9742],"body":{"id":7939,"nodeType":"Block","src":"1678:192:29","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":7937,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":7932,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":7925,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7920,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7912,"src":"1707:11:29","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":7922,"name":"IERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8889,"src":"1727:7:29","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721_$8889_$","typeString":"type(contract IERC721)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC721_$8889_$","typeString":"type(contract IERC721)"}],"id":7921,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"1722:4:29","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":7923,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1722:13:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC721_$8889","typeString":"type(contract IERC721)"}},"id":7924,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1736:11:29","memberName":"interfaceId","nodeType":"MemberAccess","src":"1722:25:29","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"1707:40:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":7931,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7926,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7912,"src":"1763:11:29","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":7928,"name":"IERC721Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8934,"src":"1783:15:29","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Metadata_$8934_$","typeString":"type(contract IERC721Metadata)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC721Metadata_$8934_$","typeString":"type(contract IERC721Metadata)"}],"id":7927,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"1778:4:29","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":7929,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1778:21:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC721Metadata_$8934","typeString":"type(contract IERC721Metadata)"}},"id":7930,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1800:11:29","memberName":"interfaceId","nodeType":"MemberAccess","src":"1778:33:29","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"1763:48:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1707:104:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":7935,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7912,"src":"1851:11:29","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":7933,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967271,"src":"1827:5:29","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_ERC721_$8773_$","typeString":"type(contract super ERC721)"}},"id":7934,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1833:17:29","memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":9730,"src":"1827:23:29","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bool_$","typeString":"function (bytes4) view returns (bool)"}},"id":7936,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1827:36:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1707:156:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":7919,"id":7938,"nodeType":"Return","src":"1688:175:29"}]},"documentation":{"id":7910,"nodeType":"StructuredDocumentation","src":"1509:56:29","text":" @dev See {IERC165-supportsInterface}."},"functionSelector":"01ffc9a7","id":7940,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"1579:17:29","nodeType":"FunctionDefinition","overrides":{"id":7916,"nodeType":"OverrideSpecifier","overrides":[{"id":7914,"name":"ERC165","nameLocations":["1646:6:29"],"nodeType":"IdentifierPath","referencedDeclaration":9731,"src":"1646:6:29"},{"id":7915,"name":"IERC165","nameLocations":["1654:7:29"],"nodeType":"IdentifierPath","referencedDeclaration":9743,"src":"1654:7:29"}],"src":"1637:25:29"},"parameters":{"id":7913,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7912,"mutability":"mutable","name":"interfaceId","nameLocation":"1604:11:29","nodeType":"VariableDeclaration","scope":7940,"src":"1597:18:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":7911,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1597:6:29","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"1596:20:29"},"returnParameters":{"id":7919,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7918,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7940,"src":"1672:4:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7917,"name":"bool","nodeType":"ElementaryTypeName","src":"1672:4:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1671:6:29"},"scope":8773,"src":"1570:300:29","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[8814],"body":{"id":7963,"nodeType":"Block","src":"2010:123:29","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":7955,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7950,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7943,"src":"2028:5:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":7953,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2045:1:29","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":7952,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2037:7:29","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7951,"name":"address","nodeType":"ElementaryTypeName","src":"2037:7:29","typeDescriptions":{}}},"id":7954,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2037:10:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2028:19:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a2061646472657373207a65726f206973206e6f7420612076616c6964206f776e6572","id":7956,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2049:43:29","typeDescriptions":{"typeIdentifier":"t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159","typeString":"literal_string \"ERC721: address zero is not a valid owner\""},"value":"ERC721: address zero is not a valid owner"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159","typeString":"literal_string \"ERC721: address zero is not a valid owner\""}],"id":7949,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"2020:7:29","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":7957,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2020:73:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7958,"nodeType":"ExpressionStatement","src":"2020:73:29"},{"expression":{"baseExpression":{"id":7959,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7882,"src":"2110:9:29","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":7961,"indexExpression":{"id":7960,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7943,"src":"2120:5:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2110:16:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7948,"id":7962,"nodeType":"Return","src":"2103:23:29"}]},"documentation":{"id":7941,"nodeType":"StructuredDocumentation","src":"1876:48:29","text":" @dev See {IERC721-balanceOf}."},"functionSelector":"70a08231","id":7964,"implemented":true,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"1938:9:29","nodeType":"FunctionDefinition","overrides":{"id":7945,"nodeType":"OverrideSpecifier","overrides":[],"src":"1983:8:29"},"parameters":{"id":7944,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7943,"mutability":"mutable","name":"owner","nameLocation":"1956:5:29","nodeType":"VariableDeclaration","scope":7964,"src":"1948:13:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7942,"name":"address","nodeType":"ElementaryTypeName","src":"1948:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1947:15:29"},"returnParameters":{"id":7948,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7947,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7964,"src":"2001:7:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7946,"name":"uint256","nodeType":"ElementaryTypeName","src":"2001:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2000:9:29"},"scope":8773,"src":"1929:204:29","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[8822],"body":{"id":7991,"nodeType":"Block","src":"2271:138:29","statements":[{"assignments":[7974],"declarations":[{"constant":false,"id":7974,"mutability":"mutable","name":"owner","nameLocation":"2289:5:29","nodeType":"VariableDeclaration","scope":7991,"src":"2281:13:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7973,"name":"address","nodeType":"ElementaryTypeName","src":"2281:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":7978,"initialValue":{"arguments":[{"id":7976,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7967,"src":"2306:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7975,"name":"_ownerOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8274,"src":"2297:8:29","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":7977,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2297:17:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"2281:33:29"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":7985,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7980,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7974,"src":"2332:5:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":7983,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2349:1:29","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":7982,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2341:7:29","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7981,"name":"address","nodeType":"ElementaryTypeName","src":"2341:7:29","typeDescriptions":{}}},"id":7984,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2341:10:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2332:19:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a20696e76616c696420746f6b656e204944","id":7986,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2353:26:29","typeDescriptions":{"typeIdentifier":"t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f","typeString":"literal_string \"ERC721: invalid token ID\""},"value":"ERC721: invalid token ID"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f","typeString":"literal_string \"ERC721: invalid token ID\""}],"id":7979,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"2324:7:29","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":7987,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2324:56:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7988,"nodeType":"ExpressionStatement","src":"2324:56:29"},{"expression":{"id":7989,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7974,"src":"2397:5:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":7972,"id":7990,"nodeType":"Return","src":"2390:12:29"}]},"documentation":{"id":7965,"nodeType":"StructuredDocumentation","src":"2139:46:29","text":" @dev See {IERC721-ownerOf}."},"functionSelector":"6352211e","id":7992,"implemented":true,"kind":"function","modifiers":[],"name":"ownerOf","nameLocation":"2199:7:29","nodeType":"FunctionDefinition","overrides":{"id":7969,"nodeType":"OverrideSpecifier","overrides":[],"src":"2244:8:29"},"parameters":{"id":7968,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7967,"mutability":"mutable","name":"tokenId","nameLocation":"2215:7:29","nodeType":"VariableDeclaration","scope":7992,"src":"2207:15:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7966,"name":"uint256","nodeType":"ElementaryTypeName","src":"2207:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2206:17:29"},"returnParameters":{"id":7972,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7971,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7992,"src":"2262:7:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7970,"name":"address","nodeType":"ElementaryTypeName","src":"2262:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2261:9:29"},"scope":8773,"src":"2190:219:29","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[8919],"body":{"id":8001,"nodeType":"Block","src":"2540:29:29","statements":[{"expression":{"id":7999,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7872,"src":"2557:5:29","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":7998,"id":8000,"nodeType":"Return","src":"2550:12:29"}]},"documentation":{"id":7993,"nodeType":"StructuredDocumentation","src":"2415:51:29","text":" @dev See {IERC721Metadata-name}."},"functionSelector":"06fdde03","id":8002,"implemented":true,"kind":"function","modifiers":[],"name":"name","nameLocation":"2480:4:29","nodeType":"FunctionDefinition","overrides":{"id":7995,"nodeType":"OverrideSpecifier","overrides":[],"src":"2507:8:29"},"parameters":{"id":7994,"nodeType":"ParameterList","parameters":[],"src":"2484:2:29"},"returnParameters":{"id":7998,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7997,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8002,"src":"2525:13:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":7996,"name":"string","nodeType":"ElementaryTypeName","src":"2525:6:29","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2524:15:29"},"scope":8773,"src":"2471:98:29","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[8925],"body":{"id":8011,"nodeType":"Block","src":"2704:31:29","statements":[{"expression":{"id":8009,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7874,"src":"2721:7:29","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":8008,"id":8010,"nodeType":"Return","src":"2714:14:29"}]},"documentation":{"id":8003,"nodeType":"StructuredDocumentation","src":"2575:53:29","text":" @dev See {IERC721Metadata-symbol}."},"functionSelector":"95d89b41","id":8012,"implemented":true,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"2642:6:29","nodeType":"FunctionDefinition","overrides":{"id":8005,"nodeType":"OverrideSpecifier","overrides":[],"src":"2671:8:29"},"parameters":{"id":8004,"nodeType":"ParameterList","parameters":[],"src":"2648:2:29"},"returnParameters":{"id":8008,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8007,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8012,"src":"2689:13:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":8006,"name":"string","nodeType":"ElementaryTypeName","src":"2689:6:29","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2688:15:29"},"scope":8773,"src":"2633:102:29","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[8933],"body":{"id":8050,"nodeType":"Block","src":"2889:188:29","statements":[{"expression":{"arguments":[{"id":8022,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8015,"src":"2914:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8021,"name":"_requireMinted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8669,"src":"2899:14:29","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$__$","typeString":"function (uint256) view"}},"id":8023,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2899:23:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8024,"nodeType":"ExpressionStatement","src":"2899:23:29"},{"assignments":[8026],"declarations":[{"constant":false,"id":8026,"mutability":"mutable","name":"baseURI","nameLocation":"2947:7:29","nodeType":"VariableDeclaration","scope":8050,"src":"2933:21:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":8025,"name":"string","nodeType":"ElementaryTypeName","src":"2933:6:29","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":8029,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":8027,"name":"_baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8060,"src":"2957:8:29","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_string_memory_ptr_$","typeString":"function () view returns (string memory)"}},"id":8028,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2957:10:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"2933:34:29"},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8036,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":8032,"name":"baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8026,"src":"2990:7:29","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":8031,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2984:5:29","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":8030,"name":"bytes","nodeType":"ElementaryTypeName","src":"2984:5:29","typeDescriptions":{}}},"id":8033,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2984:14:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":8034,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2999:6:29","memberName":"length","nodeType":"MemberAccess","src":"2984:21:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":8035,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3008:1:29","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2984:25:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"","id":8047,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3068:2:29","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"id":8048,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"2984:86:29","trueExpression":{"arguments":[{"arguments":[{"id":8041,"name":"baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8026,"src":"3036:7:29","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":8042,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8015,"src":"3045:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8043,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3053:8:29","memberName":"toString","nodeType":"MemberAccess","referencedDeclaration":9537,"src":"3045:16:29","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$bound_to$_t_uint256_$","typeString":"function (uint256) pure returns (string memory)"}},"id":8044,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3045:18:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":8039,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967295,"src":"3019:3:29","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":8040,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3023:12:29","memberName":"encodePacked","nodeType":"MemberAccess","src":"3019:16:29","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":8045,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3019:45:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":8038,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3012:6:29","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":8037,"name":"string","nodeType":"ElementaryTypeName","src":"3012:6:29","typeDescriptions":{}}},"id":8046,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3012:53:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":8020,"id":8049,"nodeType":"Return","src":"2977:93:29"}]},"documentation":{"id":8013,"nodeType":"StructuredDocumentation","src":"2741:55:29","text":" @dev See {IERC721Metadata-tokenURI}."},"functionSelector":"c87b56dd","id":8051,"implemented":true,"kind":"function","modifiers":[],"name":"tokenURI","nameLocation":"2810:8:29","nodeType":"FunctionDefinition","overrides":{"id":8017,"nodeType":"OverrideSpecifier","overrides":[],"src":"2856:8:29"},"parameters":{"id":8016,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8015,"mutability":"mutable","name":"tokenId","nameLocation":"2827:7:29","nodeType":"VariableDeclaration","scope":8051,"src":"2819:15:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8014,"name":"uint256","nodeType":"ElementaryTypeName","src":"2819:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2818:17:29"},"returnParameters":{"id":8020,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8019,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8051,"src":"2874:13:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":8018,"name":"string","nodeType":"ElementaryTypeName","src":"2874:6:29","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2873:15:29"},"scope":8773,"src":"2801:276:29","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":8059,"nodeType":"Block","src":"3385:26:29","statements":[{"expression":{"hexValue":"","id":8057,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3402:2:29","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"functionReturnParameters":8056,"id":8058,"nodeType":"Return","src":"3395:9:29"}]},"documentation":{"id":8052,"nodeType":"StructuredDocumentation","src":"3083:231:29","text":" @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\n token will be the concatenation of the `baseURI` and the `tokenId`. Empty\n by default, can be overridden in child contracts."},"id":8060,"implemented":true,"kind":"function","modifiers":[],"name":"_baseURI","nameLocation":"3328:8:29","nodeType":"FunctionDefinition","parameters":{"id":8053,"nodeType":"ParameterList","parameters":[],"src":"3336:2:29"},"returnParameters":{"id":8056,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8055,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8060,"src":"3370:13:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":8054,"name":"string","nodeType":"ElementaryTypeName","src":"3370:6:29","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3369:15:29"},"scope":8773,"src":"3319:92:29","stateMutability":"view","virtual":true,"visibility":"internal"},{"baseFunctions":[8862],"body":{"id":8102,"nodeType":"Block","src":"3538:336:29","statements":[{"assignments":[8070],"declarations":[{"constant":false,"id":8070,"mutability":"mutable","name":"owner","nameLocation":"3556:5:29","nodeType":"VariableDeclaration","scope":8102,"src":"3548:13:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8069,"name":"address","nodeType":"ElementaryTypeName","src":"3548:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":8075,"initialValue":{"arguments":[{"id":8073,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8065,"src":"3579:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8071,"name":"ERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8773,"src":"3564:6:29","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC721_$8773_$","typeString":"type(contract ERC721)"}},"id":8072,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3571:7:29","memberName":"ownerOf","nodeType":"MemberAccess","referencedDeclaration":7992,"src":"3564:14:29","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":8074,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3564:23:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"3548:39:29"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":8079,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8077,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8063,"src":"3605:2:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":8078,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8070,"src":"3611:5:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3605:11:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a20617070726f76616c20746f2063757272656e74206f776e6572","id":8080,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3618:35:29","typeDescriptions":{"typeIdentifier":"t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942","typeString":"literal_string \"ERC721: approval to current owner\""},"value":"ERC721: approval to current owner"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942","typeString":"literal_string \"ERC721: approval to current owner\""}],"id":8076,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"3597:7:29","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8081,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3597:57:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8082,"nodeType":"ExpressionStatement","src":"3597:57:29"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":8093,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":8087,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":8084,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9276,"src":"3686:10:29","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":8085,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3686:12:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":8086,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8070,"src":"3702:5:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3686:21:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":8089,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8070,"src":"3728:5:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[],"expression":{"argumentTypes":[],"id":8090,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9276,"src":"3735:10:29","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":8091,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3735:12:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":8088,"name":"isApprovedForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8156,"src":"3711:16:29","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view returns (bool)"}},"id":8092,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3711:37:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3686:62:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c","id":8094,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3762:63:29","typeDescriptions":{"typeIdentifier":"t_stringliteral_c6e14a63ffb144eeef7cce6988e5dce07c60a7e0a7b1ef25dbe18c61483e0a83","typeString":"literal_string \"ERC721: approve caller is not token owner or approved for all\""},"value":"ERC721: approve caller is not token owner or approved for all"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_c6e14a63ffb144eeef7cce6988e5dce07c60a7e0a7b1ef25dbe18c61483e0a83","typeString":"literal_string \"ERC721: approve caller is not token owner or approved for all\""}],"id":8083,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"3665:7:29","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8095,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3665:170:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8096,"nodeType":"ExpressionStatement","src":"3665:170:29"},{"expression":{"arguments":[{"id":8098,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8063,"src":"3855:2:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8099,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8065,"src":"3859:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8097,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8623,"src":"3846:8:29","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":8100,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3846:21:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8101,"nodeType":"ExpressionStatement","src":"3846:21:29"}]},"documentation":{"id":8061,"nodeType":"StructuredDocumentation","src":"3417:46:29","text":" @dev See {IERC721-approve}."},"functionSelector":"095ea7b3","id":8103,"implemented":true,"kind":"function","modifiers":[],"name":"approve","nameLocation":"3477:7:29","nodeType":"FunctionDefinition","overrides":{"id":8067,"nodeType":"OverrideSpecifier","overrides":[],"src":"3529:8:29"},"parameters":{"id":8066,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8063,"mutability":"mutable","name":"to","nameLocation":"3493:2:29","nodeType":"VariableDeclaration","scope":8103,"src":"3485:10:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8062,"name":"address","nodeType":"ElementaryTypeName","src":"3485:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8065,"mutability":"mutable","name":"tokenId","nameLocation":"3505:7:29","nodeType":"VariableDeclaration","scope":8103,"src":"3497:15:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8064,"name":"uint256","nodeType":"ElementaryTypeName","src":"3497:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3484:29:29"},"returnParameters":{"id":8068,"nodeType":"ParameterList","parameters":[],"src":"3538:0:29"},"scope":8773,"src":"3468:406:29","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[8878],"body":{"id":8120,"nodeType":"Block","src":"4020:82:29","statements":[{"expression":{"arguments":[{"id":8113,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8106,"src":"4045:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8112,"name":"_requireMinted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8669,"src":"4030:14:29","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$__$","typeString":"function (uint256) view"}},"id":8114,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4030:23:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8115,"nodeType":"ExpressionStatement","src":"4030:23:29"},{"expression":{"baseExpression":{"id":8116,"name":"_tokenApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7886,"src":"4071:15:29","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":8118,"indexExpression":{"id":8117,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8106,"src":"4087:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4071:24:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":8111,"id":8119,"nodeType":"Return","src":"4064:31:29"}]},"documentation":{"id":8104,"nodeType":"StructuredDocumentation","src":"3880:50:29","text":" @dev See {IERC721-getApproved}."},"functionSelector":"081812fc","id":8121,"implemented":true,"kind":"function","modifiers":[],"name":"getApproved","nameLocation":"3944:11:29","nodeType":"FunctionDefinition","overrides":{"id":8108,"nodeType":"OverrideSpecifier","overrides":[],"src":"3993:8:29"},"parameters":{"id":8107,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8106,"mutability":"mutable","name":"tokenId","nameLocation":"3964:7:29","nodeType":"VariableDeclaration","scope":8121,"src":"3956:15:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8105,"name":"uint256","nodeType":"ElementaryTypeName","src":"3956:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3955:17:29"},"returnParameters":{"id":8111,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8110,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8121,"src":"4011:7:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8109,"name":"address","nodeType":"ElementaryTypeName","src":"4011:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4010:9:29"},"scope":8773,"src":"3935:167:29","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[8870],"body":{"id":8137,"nodeType":"Block","src":"4253:69:29","statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":8131,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9276,"src":"4282:10:29","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":8132,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4282:12:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8133,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8124,"src":"4296:8:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8134,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8126,"src":"4306:8:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":8130,"name":"_setApprovalForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8655,"src":"4263:18:29","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,address,bool)"}},"id":8135,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4263:52:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8136,"nodeType":"ExpressionStatement","src":"4263:52:29"}]},"documentation":{"id":8122,"nodeType":"StructuredDocumentation","src":"4108:56:29","text":" @dev See {IERC721-setApprovalForAll}."},"functionSelector":"a22cb465","id":8138,"implemented":true,"kind":"function","modifiers":[],"name":"setApprovalForAll","nameLocation":"4178:17:29","nodeType":"FunctionDefinition","overrides":{"id":8128,"nodeType":"OverrideSpecifier","overrides":[],"src":"4244:8:29"},"parameters":{"id":8127,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8124,"mutability":"mutable","name":"operator","nameLocation":"4204:8:29","nodeType":"VariableDeclaration","scope":8138,"src":"4196:16:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8123,"name":"address","nodeType":"ElementaryTypeName","src":"4196:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8126,"mutability":"mutable","name":"approved","nameLocation":"4219:8:29","nodeType":"VariableDeclaration","scope":8138,"src":"4214:13:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8125,"name":"bool","nodeType":"ElementaryTypeName","src":"4214:4:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4195:33:29"},"returnParameters":{"id":8129,"nodeType":"ParameterList","parameters":[],"src":"4253:0:29"},"scope":8773,"src":"4169:153:29","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[8888],"body":{"id":8155,"nodeType":"Block","src":"4491:59:29","statements":[{"expression":{"baseExpression":{"baseExpression":{"id":8149,"name":"_operatorApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7892,"src":"4508:18:29","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":8151,"indexExpression":{"id":8150,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8141,"src":"4527:5:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4508:25:29","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":8153,"indexExpression":{"id":8152,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8143,"src":"4534:8:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4508:35:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":8148,"id":8154,"nodeType":"Return","src":"4501:42:29"}]},"documentation":{"id":8139,"nodeType":"StructuredDocumentation","src":"4328:55:29","text":" @dev See {IERC721-isApprovedForAll}."},"functionSelector":"e985e9c5","id":8156,"implemented":true,"kind":"function","modifiers":[],"name":"isApprovedForAll","nameLocation":"4397:16:29","nodeType":"FunctionDefinition","overrides":{"id":8145,"nodeType":"OverrideSpecifier","overrides":[],"src":"4467:8:29"},"parameters":{"id":8144,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8141,"mutability":"mutable","name":"owner","nameLocation":"4422:5:29","nodeType":"VariableDeclaration","scope":8156,"src":"4414:13:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8140,"name":"address","nodeType":"ElementaryTypeName","src":"4414:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8143,"mutability":"mutable","name":"operator","nameLocation":"4437:8:29","nodeType":"VariableDeclaration","scope":8156,"src":"4429:16:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8142,"name":"address","nodeType":"ElementaryTypeName","src":"4429:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4413:33:29"},"returnParameters":{"id":8148,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8147,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8156,"src":"4485:4:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8146,"name":"bool","nodeType":"ElementaryTypeName","src":"4485:4:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4484:6:29"},"scope":8773,"src":"4388:162:29","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[8854],"body":{"id":8182,"nodeType":"Block","src":"4701:207:29","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":8169,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9276,"src":"4790:10:29","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":8170,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4790:12:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8171,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8163,"src":"4804:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8168,"name":"_isApprovedOrOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8326,"src":"4771:18:29","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) view returns (bool)"}},"id":8172,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4771:41:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6572206f7220617070726f766564","id":8173,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4814:47:29","typeDescriptions":{"typeIdentifier":"t_stringliteral_12a8e5623d251e191fe4a291d9a59bcc01a4db7a1f5c20fc8de44358c18308af","typeString":"literal_string \"ERC721: caller is not token owner or approved\""},"value":"ERC721: caller is not token owner or approved"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_12a8e5623d251e191fe4a291d9a59bcc01a4db7a1f5c20fc8de44358c18308af","typeString":"literal_string \"ERC721: caller is not token owner or approved\""}],"id":8167,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"4763:7:29","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8174,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4763:99:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8175,"nodeType":"ExpressionStatement","src":"4763:99:29"},{"expression":{"arguments":[{"id":8177,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8159,"src":"4883:4:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8178,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8161,"src":"4889:2:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8179,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8163,"src":"4893:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8176,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8599,"src":"4873:9:29","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":8180,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4873:28:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8181,"nodeType":"ExpressionStatement","src":"4873:28:29"}]},"documentation":{"id":8157,"nodeType":"StructuredDocumentation","src":"4556:51:29","text":" @dev See {IERC721-transferFrom}."},"functionSelector":"23b872dd","id":8183,"implemented":true,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"4621:12:29","nodeType":"FunctionDefinition","overrides":{"id":8165,"nodeType":"OverrideSpecifier","overrides":[],"src":"4692:8:29"},"parameters":{"id":8164,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8159,"mutability":"mutable","name":"from","nameLocation":"4642:4:29","nodeType":"VariableDeclaration","scope":8183,"src":"4634:12:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8158,"name":"address","nodeType":"ElementaryTypeName","src":"4634:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8161,"mutability":"mutable","name":"to","nameLocation":"4656:2:29","nodeType":"VariableDeclaration","scope":8183,"src":"4648:10:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8160,"name":"address","nodeType":"ElementaryTypeName","src":"4648:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8163,"mutability":"mutable","name":"tokenId","nameLocation":"4668:7:29","nodeType":"VariableDeclaration","scope":8183,"src":"4660:15:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8162,"name":"uint256","nodeType":"ElementaryTypeName","src":"4660:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4633:43:29"},"returnParameters":{"id":8166,"nodeType":"ParameterList","parameters":[],"src":"4701:0:29"},"scope":8773,"src":"4612:296:29","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[8844],"body":{"id":8201,"nodeType":"Block","src":"5067:56:29","statements":[{"expression":{"arguments":[{"id":8195,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8186,"src":"5094:4:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8196,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8188,"src":"5100:2:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8197,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8190,"src":"5104:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":8198,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5113:2:29","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":8194,"name":"safeTransferFrom","nodeType":"Identifier","overloadedDeclarations":[8202,8232],"referencedDeclaration":8232,"src":"5077:16:29","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":8199,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5077:39:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8200,"nodeType":"ExpressionStatement","src":"5077:39:29"}]},"documentation":{"id":8184,"nodeType":"StructuredDocumentation","src":"4914:55:29","text":" @dev See {IERC721-safeTransferFrom}."},"functionSelector":"42842e0e","id":8202,"implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"4983:16:29","nodeType":"FunctionDefinition","overrides":{"id":8192,"nodeType":"OverrideSpecifier","overrides":[],"src":"5058:8:29"},"parameters":{"id":8191,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8186,"mutability":"mutable","name":"from","nameLocation":"5008:4:29","nodeType":"VariableDeclaration","scope":8202,"src":"5000:12:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8185,"name":"address","nodeType":"ElementaryTypeName","src":"5000:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8188,"mutability":"mutable","name":"to","nameLocation":"5022:2:29","nodeType":"VariableDeclaration","scope":8202,"src":"5014:10:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8187,"name":"address","nodeType":"ElementaryTypeName","src":"5014:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8190,"mutability":"mutable","name":"tokenId","nameLocation":"5034:7:29","nodeType":"VariableDeclaration","scope":8202,"src":"5026:15:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8189,"name":"uint256","nodeType":"ElementaryTypeName","src":"5026:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4999:43:29"},"returnParameters":{"id":8193,"nodeType":"ParameterList","parameters":[],"src":"5067:0:29"},"scope":8773,"src":"4974:149:29","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[8834],"body":{"id":8231,"nodeType":"Block","src":"5301:164:29","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":8217,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9276,"src":"5338:10:29","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":8218,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5338:12:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8219,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8209,"src":"5352:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8216,"name":"_isApprovedOrOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8326,"src":"5319:18:29","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) view returns (bool)"}},"id":8220,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5319:41:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6572206f7220617070726f766564","id":8221,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5362:47:29","typeDescriptions":{"typeIdentifier":"t_stringliteral_12a8e5623d251e191fe4a291d9a59bcc01a4db7a1f5c20fc8de44358c18308af","typeString":"literal_string \"ERC721: caller is not token owner or approved\""},"value":"ERC721: caller is not token owner or approved"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_12a8e5623d251e191fe4a291d9a59bcc01a4db7a1f5c20fc8de44358c18308af","typeString":"literal_string \"ERC721: caller is not token owner or approved\""}],"id":8215,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"5311:7:29","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8222,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5311:99:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8223,"nodeType":"ExpressionStatement","src":"5311:99:29"},{"expression":{"arguments":[{"id":8225,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8205,"src":"5434:4:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8226,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8207,"src":"5440:2:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8227,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8209,"src":"5444:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8228,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8211,"src":"5453:4:29","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":8224,"name":"_safeTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8261,"src":"5420:13:29","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":8229,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5420:38:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8230,"nodeType":"ExpressionStatement","src":"5420:38:29"}]},"documentation":{"id":8203,"nodeType":"StructuredDocumentation","src":"5129:55:29","text":" @dev See {IERC721-safeTransferFrom}."},"functionSelector":"b88d4fde","id":8232,"implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"5198:16:29","nodeType":"FunctionDefinition","overrides":{"id":8213,"nodeType":"OverrideSpecifier","overrides":[],"src":"5292:8:29"},"parameters":{"id":8212,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8205,"mutability":"mutable","name":"from","nameLocation":"5223:4:29","nodeType":"VariableDeclaration","scope":8232,"src":"5215:12:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8204,"name":"address","nodeType":"ElementaryTypeName","src":"5215:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8207,"mutability":"mutable","name":"to","nameLocation":"5237:2:29","nodeType":"VariableDeclaration","scope":8232,"src":"5229:10:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8206,"name":"address","nodeType":"ElementaryTypeName","src":"5229:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8209,"mutability":"mutable","name":"tokenId","nameLocation":"5249:7:29","nodeType":"VariableDeclaration","scope":8232,"src":"5241:15:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8208,"name":"uint256","nodeType":"ElementaryTypeName","src":"5241:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8211,"mutability":"mutable","name":"data","nameLocation":"5271:4:29","nodeType":"VariableDeclaration","scope":8232,"src":"5258:17:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":8210,"name":"bytes","nodeType":"ElementaryTypeName","src":"5258:5:29","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5214:62:29"},"returnParameters":{"id":8214,"nodeType":"ParameterList","parameters":[],"src":"5301:0:29"},"scope":8773,"src":"5189:276:29","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":8260,"nodeType":"Block","src":"6428:165:29","statements":[{"expression":{"arguments":[{"id":8245,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8235,"src":"6448:4:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8246,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8237,"src":"6454:2:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8247,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8239,"src":"6458:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8244,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8599,"src":"6438:9:29","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":8248,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6438:28:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8249,"nodeType":"ExpressionStatement","src":"6438:28:29"},{"expression":{"arguments":[{"arguments":[{"id":8252,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8235,"src":"6507:4:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8253,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8237,"src":"6513:2:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8254,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8239,"src":"6517:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8255,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8241,"src":"6526:4:29","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":8251,"name":"_checkOnERC721Received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8731,"src":"6484:22:29","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (address,address,uint256,bytes memory) returns (bool)"}},"id":8256,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6484:47:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e746572","id":8257,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6533:52:29","typeDescriptions":{"typeIdentifier":"t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e","typeString":"literal_string \"ERC721: transfer to non ERC721Receiver implementer\""},"value":"ERC721: transfer to non ERC721Receiver implementer"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e","typeString":"literal_string \"ERC721: transfer to non ERC721Receiver implementer\""}],"id":8250,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"6476:7:29","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8258,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6476:110:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8259,"nodeType":"ExpressionStatement","src":"6476:110:29"}]},"documentation":{"id":8233,"nodeType":"StructuredDocumentation","src":"5471:850:29","text":" @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n are aware of the ERC721 protocol to prevent tokens from being forever locked.\n `data` is additional data, it has no specified format and it is sent in call to `to`.\n This internal function is equivalent to {safeTransferFrom}, and can be used to e.g.\n implement alternative mechanisms to perform token transfer, such as signature-based.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."},"id":8261,"implemented":true,"kind":"function","modifiers":[],"name":"_safeTransfer","nameLocation":"6335:13:29","nodeType":"FunctionDefinition","parameters":{"id":8242,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8235,"mutability":"mutable","name":"from","nameLocation":"6357:4:29","nodeType":"VariableDeclaration","scope":8261,"src":"6349:12:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8234,"name":"address","nodeType":"ElementaryTypeName","src":"6349:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8237,"mutability":"mutable","name":"to","nameLocation":"6371:2:29","nodeType":"VariableDeclaration","scope":8261,"src":"6363:10:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8236,"name":"address","nodeType":"ElementaryTypeName","src":"6363:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8239,"mutability":"mutable","name":"tokenId","nameLocation":"6383:7:29","nodeType":"VariableDeclaration","scope":8261,"src":"6375:15:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8238,"name":"uint256","nodeType":"ElementaryTypeName","src":"6375:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8241,"mutability":"mutable","name":"data","nameLocation":"6405:4:29","nodeType":"VariableDeclaration","scope":8261,"src":"6392:17:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":8240,"name":"bytes","nodeType":"ElementaryTypeName","src":"6392:5:29","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6348:62:29"},"returnParameters":{"id":8243,"nodeType":"ParameterList","parameters":[],"src":"6428:0:29"},"scope":8773,"src":"6326:267:29","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":8273,"nodeType":"Block","src":"6777:40:29","statements":[{"expression":{"baseExpression":{"id":8269,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7878,"src":"6794:7:29","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":8271,"indexExpression":{"id":8270,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8264,"src":"6802:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6794:16:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":8268,"id":8272,"nodeType":"Return","src":"6787:23:29"}]},"documentation":{"id":8262,"nodeType":"StructuredDocumentation","src":"6599:98:29","text":" @dev Returns the owner of the `tokenId`. Does NOT revert if token doesn't exist"},"id":8274,"implemented":true,"kind":"function","modifiers":[],"name":"_ownerOf","nameLocation":"6711:8:29","nodeType":"FunctionDefinition","parameters":{"id":8265,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8264,"mutability":"mutable","name":"tokenId","nameLocation":"6728:7:29","nodeType":"VariableDeclaration","scope":8274,"src":"6720:15:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8263,"name":"uint256","nodeType":"ElementaryTypeName","src":"6720:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6719:17:29"},"returnParameters":{"id":8268,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8267,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8274,"src":"6768:7:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8266,"name":"address","nodeType":"ElementaryTypeName","src":"6768:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6767:9:29"},"scope":8773,"src":"6702:115:29","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":8291,"nodeType":"Block","src":"7191:55:29","statements":[{"expression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":8289,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":8283,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8277,"src":"7217:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8282,"name":"_ownerOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8274,"src":"7208:8:29","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":8284,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7208:17:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":8287,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7237:1:29","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":8286,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7229:7:29","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8285,"name":"address","nodeType":"ElementaryTypeName","src":"7229:7:29","typeDescriptions":{}}},"id":8288,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7229:10:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7208:31:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":8281,"id":8290,"nodeType":"Return","src":"7201:38:29"}]},"documentation":{"id":8275,"nodeType":"StructuredDocumentation","src":"6823:292:29","text":" @dev Returns whether `tokenId` exists.\n Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}.\n Tokens start existing when they are minted (`_mint`),\n and stop existing when they are burned (`_burn`)."},"id":8292,"implemented":true,"kind":"function","modifiers":[],"name":"_exists","nameLocation":"7129:7:29","nodeType":"FunctionDefinition","parameters":{"id":8278,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8277,"mutability":"mutable","name":"tokenId","nameLocation":"7145:7:29","nodeType":"VariableDeclaration","scope":8292,"src":"7137:15:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8276,"name":"uint256","nodeType":"ElementaryTypeName","src":"7137:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7136:17:29"},"returnParameters":{"id":8281,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8280,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8292,"src":"7185:4:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8279,"name":"bool","nodeType":"ElementaryTypeName","src":"7185:4:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"7184:6:29"},"scope":8773,"src":"7120:126:29","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":8325,"nodeType":"Block","src":"7503:162:29","statements":[{"assignments":[8303],"declarations":[{"constant":false,"id":8303,"mutability":"mutable","name":"owner","nameLocation":"7521:5:29","nodeType":"VariableDeclaration","scope":8325,"src":"7513:13:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8302,"name":"address","nodeType":"ElementaryTypeName","src":"7513:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":8308,"initialValue":{"arguments":[{"id":8306,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8297,"src":"7544:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8304,"name":"ERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8773,"src":"7529:6:29","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC721_$8773_$","typeString":"type(contract ERC721)"}},"id":8305,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7536:7:29","memberName":"ownerOf","nodeType":"MemberAccess","referencedDeclaration":7992,"src":"7529:14:29","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":8307,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7529:23:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"7513:39:29"},{"expression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":8322,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":8316,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":8311,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8309,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8295,"src":"7570:7:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":8310,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8303,"src":"7581:5:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7570:16:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":8313,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8303,"src":"7607:5:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8314,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8295,"src":"7614:7:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":8312,"name":"isApprovedForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8156,"src":"7590:16:29","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view returns (bool)"}},"id":8315,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7590:32:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"7570:52:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":8321,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":8318,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8297,"src":"7638:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8317,"name":"getApproved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8121,"src":"7626:11:29","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":8319,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7626:20:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":8320,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8295,"src":"7650:7:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7626:31:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"7570:87:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":8323,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7569:89:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":8301,"id":8324,"nodeType":"Return","src":"7562:96:29"}]},"documentation":{"id":8293,"nodeType":"StructuredDocumentation","src":"7252:147:29","text":" @dev Returns whether `spender` is allowed to manage `tokenId`.\n Requirements:\n - `tokenId` must exist."},"id":8326,"implemented":true,"kind":"function","modifiers":[],"name":"_isApprovedOrOwner","nameLocation":"7413:18:29","nodeType":"FunctionDefinition","parameters":{"id":8298,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8295,"mutability":"mutable","name":"spender","nameLocation":"7440:7:29","nodeType":"VariableDeclaration","scope":8326,"src":"7432:15:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8294,"name":"address","nodeType":"ElementaryTypeName","src":"7432:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8297,"mutability":"mutable","name":"tokenId","nameLocation":"7457:7:29","nodeType":"VariableDeclaration","scope":8326,"src":"7449:15:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8296,"name":"uint256","nodeType":"ElementaryTypeName","src":"7449:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7431:34:29"},"returnParameters":{"id":8301,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8300,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8326,"src":"7497:4:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8299,"name":"bool","nodeType":"ElementaryTypeName","src":"7497:4:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"7496:6:29"},"scope":8773,"src":"7404:261:29","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":8340,"nodeType":"Block","src":"8060:43:29","statements":[{"expression":{"arguments":[{"id":8335,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8329,"src":"8080:2:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8336,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8331,"src":"8084:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":8337,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8093:2:29","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":8334,"name":"_safeMint","nodeType":"Identifier","overloadedDeclarations":[8341,8370],"referencedDeclaration":8370,"src":"8070:9:29","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,uint256,bytes memory)"}},"id":8338,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8070:26:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8339,"nodeType":"ExpressionStatement","src":"8070:26:29"}]},"documentation":{"id":8327,"nodeType":"StructuredDocumentation","src":"7671:319:29","text":" @dev Safely mints `tokenId` and transfers it to `to`.\n Requirements:\n - `tokenId` must not exist.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."},"id":8341,"implemented":true,"kind":"function","modifiers":[],"name":"_safeMint","nameLocation":"8004:9:29","nodeType":"FunctionDefinition","parameters":{"id":8332,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8329,"mutability":"mutable","name":"to","nameLocation":"8022:2:29","nodeType":"VariableDeclaration","scope":8341,"src":"8014:10:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8328,"name":"address","nodeType":"ElementaryTypeName","src":"8014:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8331,"mutability":"mutable","name":"tokenId","nameLocation":"8034:7:29","nodeType":"VariableDeclaration","scope":8341,"src":"8026:15:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8330,"name":"uint256","nodeType":"ElementaryTypeName","src":"8026:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8013:29:29"},"returnParameters":{"id":8333,"nodeType":"ParameterList","parameters":[],"src":"8060:0:29"},"scope":8773,"src":"7995:108:29","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":8369,"nodeType":"Block","src":"8408:195:29","statements":[{"expression":{"arguments":[{"id":8352,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8344,"src":"8424:2:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8353,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8346,"src":"8428:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8351,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8447,"src":"8418:5:29","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":8354,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8418:18:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8355,"nodeType":"ExpressionStatement","src":"8418:18:29"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"hexValue":"30","id":8360,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8498:1:29","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":8359,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8490:7:29","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8358,"name":"address","nodeType":"ElementaryTypeName","src":"8490:7:29","typeDescriptions":{}}},"id":8361,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8490:10:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8362,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8344,"src":"8502:2:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8363,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8346,"src":"8506:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8364,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8348,"src":"8515:4:29","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":8357,"name":"_checkOnERC721Received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8731,"src":"8467:22:29","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (address,address,uint256,bytes memory) returns (bool)"}},"id":8365,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8467:53:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e746572","id":8366,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8534:52:29","typeDescriptions":{"typeIdentifier":"t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e","typeString":"literal_string \"ERC721: transfer to non ERC721Receiver implementer\""},"value":"ERC721: transfer to non ERC721Receiver implementer"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e","typeString":"literal_string \"ERC721: transfer to non ERC721Receiver implementer\""}],"id":8356,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"8446:7:29","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8367,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8446:150:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8368,"nodeType":"ExpressionStatement","src":"8446:150:29"}]},"documentation":{"id":8342,"nodeType":"StructuredDocumentation","src":"8109:210:29","text":" @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\n forwarded in {IERC721Receiver-onERC721Received} to contract recipients."},"id":8370,"implemented":true,"kind":"function","modifiers":[],"name":"_safeMint","nameLocation":"8333:9:29","nodeType":"FunctionDefinition","parameters":{"id":8349,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8344,"mutability":"mutable","name":"to","nameLocation":"8351:2:29","nodeType":"VariableDeclaration","scope":8370,"src":"8343:10:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8343,"name":"address","nodeType":"ElementaryTypeName","src":"8343:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8346,"mutability":"mutable","name":"tokenId","nameLocation":"8363:7:29","nodeType":"VariableDeclaration","scope":8370,"src":"8355:15:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8345,"name":"uint256","nodeType":"ElementaryTypeName","src":"8355:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8348,"mutability":"mutable","name":"data","nameLocation":"8385:4:29","nodeType":"VariableDeclaration","scope":8370,"src":"8372:17:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":8347,"name":"bytes","nodeType":"ElementaryTypeName","src":"8372:5:29","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"8342:48:29"},"returnParameters":{"id":8350,"nodeType":"ParameterList","parameters":[],"src":"8408:0:29"},"scope":8773,"src":"8324:279:29","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":8446,"nodeType":"Block","src":"8986:859:29","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":8384,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8379,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8373,"src":"9004:2:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":8382,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9018:1:29","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":8381,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9010:7:29","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8380,"name":"address","nodeType":"ElementaryTypeName","src":"9010:7:29","typeDescriptions":{}}},"id":8383,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9010:10:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9004:16:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a206d696e7420746f20746865207a65726f2061646472657373","id":8385,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9022:34:29","typeDescriptions":{"typeIdentifier":"t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6","typeString":"literal_string \"ERC721: mint to the zero address\""},"value":"ERC721: mint to the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6","typeString":"literal_string \"ERC721: mint to the zero address\""}],"id":8378,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"8996:7:29","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8386,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8996:61:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8387,"nodeType":"ExpressionStatement","src":"8996:61:29"},{"expression":{"arguments":[{"id":8392,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"9075:17:29","subExpression":{"arguments":[{"id":8390,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8375,"src":"9084:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8389,"name":"_exists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8292,"src":"9076:7:29","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) view returns (bool)"}},"id":8391,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9076:16:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a20746f6b656e20616c7265616479206d696e746564","id":8393,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9094:30:29","typeDescriptions":{"typeIdentifier":"t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57","typeString":"literal_string \"ERC721: token already minted\""},"value":"ERC721: token already minted"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57","typeString":"literal_string \"ERC721: token already minted\""}],"id":8388,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"9067:7:29","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8394,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9067:58:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8395,"nodeType":"ExpressionStatement","src":"9067:58:29"},{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":8399,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9165:1:29","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":8398,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9157:7:29","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8397,"name":"address","nodeType":"ElementaryTypeName","src":"9157:7:29","typeDescriptions":{}}},"id":8400,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9157:10:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8401,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8373,"src":"9169:2:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8402,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8375,"src":"9173:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"31","id":8403,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9182:1:29","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":8396,"name":"_beforeTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8744,"src":"9136:20:29","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256,uint256)"}},"id":8404,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9136:48:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8405,"nodeType":"ExpressionStatement","src":"9136:48:29"},{"expression":{"arguments":[{"id":8410,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"9279:17:29","subExpression":{"arguments":[{"id":8408,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8375,"src":"9288:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8407,"name":"_exists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8292,"src":"9280:7:29","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) view returns (bool)"}},"id":8409,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9280:16:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a20746f6b656e20616c7265616479206d696e746564","id":8411,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9298:30:29","typeDescriptions":{"typeIdentifier":"t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57","typeString":"literal_string \"ERC721: token already minted\""},"value":"ERC721: token already minted"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57","typeString":"literal_string \"ERC721: token already minted\""}],"id":8406,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"9271:7:29","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8412,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9271:58:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8413,"nodeType":"ExpressionStatement","src":"9271:58:29"},{"id":8420,"nodeType":"UncheckedBlock","src":"9340:360:29","statements":[{"expression":{"id":8418,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":8414,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7882,"src":"9671:9:29","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":8416,"indexExpression":{"id":8415,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8373,"src":"9681:2:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9671:13:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":8417,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9688:1:29","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9671:18:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8419,"nodeType":"ExpressionStatement","src":"9671:18:29"}]},{"expression":{"id":8425,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":8421,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7878,"src":"9710:7:29","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":8423,"indexExpression":{"id":8422,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8375,"src":"9718:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9710:16:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8424,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8373,"src":"9729:2:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9710:21:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":8426,"nodeType":"ExpressionStatement","src":"9710:21:29"},{"eventCall":{"arguments":[{"arguments":[{"hexValue":"30","id":8430,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9764:1:29","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":8429,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9756:7:29","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8428,"name":"address","nodeType":"ElementaryTypeName","src":"9756:7:29","typeDescriptions":{}}},"id":8431,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9756:10:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8432,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8373,"src":"9768:2:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8433,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8375,"src":"9772:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8427,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8788,"src":"9747:8:29","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":8434,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9747:33:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8435,"nodeType":"EmitStatement","src":"9742:38:29"},{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":8439,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9819:1:29","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":8438,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9811:7:29","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8437,"name":"address","nodeType":"ElementaryTypeName","src":"9811:7:29","typeDescriptions":{}}},"id":8440,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9811:10:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8441,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8373,"src":"9823:2:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8442,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8375,"src":"9827:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"31","id":8443,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9836:1:29","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":8436,"name":"_afterTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8757,"src":"9791:19:29","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256,uint256)"}},"id":8444,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9791:47:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8445,"nodeType":"ExpressionStatement","src":"9791:47:29"}]},"documentation":{"id":8371,"nodeType":"StructuredDocumentation","src":"8609:311:29","text":" @dev Mints `tokenId` and transfers it to `to`.\n WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\n Requirements:\n - `tokenId` must not exist.\n - `to` cannot be the zero address.\n Emits a {Transfer} event."},"id":8447,"implemented":true,"kind":"function","modifiers":[],"name":"_mint","nameLocation":"8934:5:29","nodeType":"FunctionDefinition","parameters":{"id":8376,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8373,"mutability":"mutable","name":"to","nameLocation":"8948:2:29","nodeType":"VariableDeclaration","scope":8447,"src":"8940:10:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8372,"name":"address","nodeType":"ElementaryTypeName","src":"8940:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8375,"mutability":"mutable","name":"tokenId","nameLocation":"8960:7:29","nodeType":"VariableDeclaration","scope":8447,"src":"8952:15:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8374,"name":"uint256","nodeType":"ElementaryTypeName","src":"8952:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8939:29:29"},"returnParameters":{"id":8377,"nodeType":"ParameterList","parameters":[],"src":"8986:0:29"},"scope":8773,"src":"8925:920:29","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":8513,"nodeType":"Block","src":"10220:713:29","statements":[{"assignments":[8454],"declarations":[{"constant":false,"id":8454,"mutability":"mutable","name":"owner","nameLocation":"10238:5:29","nodeType":"VariableDeclaration","scope":8513,"src":"10230:13:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8453,"name":"address","nodeType":"ElementaryTypeName","src":"10230:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":8459,"initialValue":{"arguments":[{"id":8457,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8450,"src":"10261:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8455,"name":"ERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8773,"src":"10246:6:29","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC721_$8773_$","typeString":"type(contract ERC721)"}},"id":8456,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10253:7:29","memberName":"ownerOf","nodeType":"MemberAccess","referencedDeclaration":7992,"src":"10246:14:29","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":8458,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10246:23:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"10230:39:29"},{"expression":{"arguments":[{"id":8461,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8454,"src":"10301:5:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":8464,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10316:1:29","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":8463,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10308:7:29","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8462,"name":"address","nodeType":"ElementaryTypeName","src":"10308:7:29","typeDescriptions":{}}},"id":8465,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10308:10:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8466,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8450,"src":"10320:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"31","id":8467,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10329:1:29","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":8460,"name":"_beforeTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8744,"src":"10280:20:29","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256,uint256)"}},"id":8468,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10280:51:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8469,"nodeType":"ExpressionStatement","src":"10280:51:29"},{"expression":{"id":8475,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8470,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8454,"src":"10433:5:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":8473,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8450,"src":"10456:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8471,"name":"ERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8773,"src":"10441:6:29","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC721_$8773_$","typeString":"type(contract ERC721)"}},"id":8472,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10448:7:29","memberName":"ownerOf","nodeType":"MemberAccess","referencedDeclaration":7992,"src":"10441:14:29","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":8474,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10441:23:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"10433:31:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":8476,"nodeType":"ExpressionStatement","src":"10433:31:29"},{"expression":{"id":8480,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"10502:31:29","subExpression":{"baseExpression":{"id":8477,"name":"_tokenApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7886,"src":"10509:15:29","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":8479,"indexExpression":{"id":8478,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8450,"src":"10525:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"10509:24:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8481,"nodeType":"ExpressionStatement","src":"10502:31:29"},{"id":8488,"nodeType":"UncheckedBlock","src":"10544:237:29","statements":[{"expression":{"id":8486,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":8482,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7882,"src":"10749:9:29","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":8484,"indexExpression":{"id":8483,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8454,"src":"10759:5:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"10749:16:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"hexValue":"31","id":8485,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10769:1:29","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"10749:21:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8487,"nodeType":"ExpressionStatement","src":"10749:21:29"}]},{"expression":{"id":8492,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"10790:23:29","subExpression":{"baseExpression":{"id":8489,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7878,"src":"10797:7:29","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":8491,"indexExpression":{"id":8490,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8450,"src":"10805:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"10797:16:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8493,"nodeType":"ExpressionStatement","src":"10790:23:29"},{"eventCall":{"arguments":[{"id":8495,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8454,"src":"10838:5:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":8498,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10853:1:29","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":8497,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10845:7:29","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8496,"name":"address","nodeType":"ElementaryTypeName","src":"10845:7:29","typeDescriptions":{}}},"id":8499,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10845:10:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8500,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8450,"src":"10857:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8494,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8788,"src":"10829:8:29","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":8501,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10829:36:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8502,"nodeType":"EmitStatement","src":"10824:41:29"},{"expression":{"arguments":[{"id":8504,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8454,"src":"10896:5:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":8507,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10911:1:29","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":8506,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10903:7:29","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8505,"name":"address","nodeType":"ElementaryTypeName","src":"10903:7:29","typeDescriptions":{}}},"id":8508,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10903:10:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8509,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8450,"src":"10915:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"31","id":8510,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10924:1:29","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":8503,"name":"_afterTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8757,"src":"10876:19:29","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256,uint256)"}},"id":8511,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10876:50:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8512,"nodeType":"ExpressionStatement","src":"10876:50:29"}]},"documentation":{"id":8448,"nodeType":"StructuredDocumentation","src":"9851:315:29","text":" @dev Destroys `tokenId`.\n The approval is cleared when the token is burned.\n This is an internal function that does not check if the sender is authorized to operate on the token.\n Requirements:\n - `tokenId` must exist.\n Emits a {Transfer} event."},"id":8514,"implemented":true,"kind":"function","modifiers":[],"name":"_burn","nameLocation":"10180:5:29","nodeType":"FunctionDefinition","parameters":{"id":8451,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8450,"mutability":"mutable","name":"tokenId","nameLocation":"10194:7:29","nodeType":"VariableDeclaration","scope":8514,"src":"10186:15:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8449,"name":"uint256","nodeType":"ElementaryTypeName","src":"10186:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10185:17:29"},"returnParameters":{"id":8452,"nodeType":"ParameterList","parameters":[],"src":"10220:0:29"},"scope":8773,"src":"10171:762:29","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":8598,"nodeType":"Block","src":"11336:1124:29","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":8530,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":8527,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8521,"src":"11369:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8525,"name":"ERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8773,"src":"11354:6:29","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC721_$8773_$","typeString":"type(contract ERC721)"}},"id":8526,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11361:7:29","memberName":"ownerOf","nodeType":"MemberAccess","referencedDeclaration":7992,"src":"11354:14:29","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":8528,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11354:23:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":8529,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8517,"src":"11381:4:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"11354:31:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a207472616e736665722066726f6d20696e636f7272656374206f776e6572","id":8531,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11387:39:29","typeDescriptions":{"typeIdentifier":"t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48","typeString":"literal_string \"ERC721: transfer from incorrect owner\""},"value":"ERC721: transfer from incorrect owner"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48","typeString":"literal_string \"ERC721: transfer from incorrect owner\""}],"id":8524,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"11346:7:29","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8532,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11346:81:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8533,"nodeType":"ExpressionStatement","src":"11346:81:29"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":8540,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8535,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8519,"src":"11445:2:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":8538,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11459:1:29","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":8537,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11451:7:29","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8536,"name":"address","nodeType":"ElementaryTypeName","src":"11451:7:29","typeDescriptions":{}}},"id":8539,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11451:10:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"11445:16:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a207472616e7366657220746f20746865207a65726f2061646472657373","id":8541,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11463:38:29","typeDescriptions":{"typeIdentifier":"t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4","typeString":"literal_string \"ERC721: transfer to the zero address\""},"value":"ERC721: transfer to the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4","typeString":"literal_string \"ERC721: transfer to the zero address\""}],"id":8534,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"11437:7:29","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8542,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11437:65:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8543,"nodeType":"ExpressionStatement","src":"11437:65:29"},{"expression":{"arguments":[{"id":8545,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8517,"src":"11534:4:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8546,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8519,"src":"11540:2:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8547,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8521,"src":"11544:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"31","id":8548,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11553:1:29","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":8544,"name":"_beforeTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8744,"src":"11513:20:29","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256,uint256)"}},"id":8549,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11513:42:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8550,"nodeType":"ExpressionStatement","src":"11513:42:29"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":8557,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":8554,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8521,"src":"11670:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8552,"name":"ERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8773,"src":"11655:6:29","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC721_$8773_$","typeString":"type(contract ERC721)"}},"id":8553,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11662:7:29","memberName":"ownerOf","nodeType":"MemberAccess","referencedDeclaration":7992,"src":"11655:14:29","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":8555,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11655:23:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":8556,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8517,"src":"11682:4:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"11655:31:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a207472616e736665722066726f6d20696e636f7272656374206f776e6572","id":8558,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11688:39:29","typeDescriptions":{"typeIdentifier":"t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48","typeString":"literal_string \"ERC721: transfer from incorrect owner\""},"value":"ERC721: transfer from incorrect owner"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48","typeString":"literal_string \"ERC721: transfer from incorrect owner\""}],"id":8551,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"11647:7:29","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8559,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11647:81:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8560,"nodeType":"ExpressionStatement","src":"11647:81:29"},{"expression":{"id":8564,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"11790:31:29","subExpression":{"baseExpression":{"id":8561,"name":"_tokenApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7886,"src":"11797:15:29","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":8563,"indexExpression":{"id":8562,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8521,"src":"11813:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"11797:24:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8565,"nodeType":"ExpressionStatement","src":"11790:31:29"},{"id":8578,"nodeType":"UncheckedBlock","src":"11832:496:29","statements":[{"expression":{"id":8570,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":8566,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7882,"src":"12265:9:29","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":8568,"indexExpression":{"id":8567,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8517,"src":"12275:4:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"12265:15:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"hexValue":"31","id":8569,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12284:1:29","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"12265:20:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8571,"nodeType":"ExpressionStatement","src":"12265:20:29"},{"expression":{"id":8576,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":8572,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7882,"src":"12299:9:29","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":8574,"indexExpression":{"id":8573,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8519,"src":"12309:2:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"12299:13:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":8575,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12316:1:29","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"12299:18:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8577,"nodeType":"ExpressionStatement","src":"12299:18:29"}]},{"expression":{"id":8583,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":8579,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7878,"src":"12337:7:29","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":8581,"indexExpression":{"id":8580,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8521,"src":"12345:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"12337:16:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8582,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8519,"src":"12356:2:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"12337:21:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":8584,"nodeType":"ExpressionStatement","src":"12337:21:29"},{"eventCall":{"arguments":[{"id":8586,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8517,"src":"12383:4:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8587,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8519,"src":"12389:2:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8588,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8521,"src":"12393:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8585,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8788,"src":"12374:8:29","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":8589,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12374:27:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8590,"nodeType":"EmitStatement","src":"12369:32:29"},{"expression":{"arguments":[{"id":8592,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8517,"src":"12432:4:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8593,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8519,"src":"12438:2:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8594,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8521,"src":"12442:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"31","id":8595,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12451:1:29","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":8591,"name":"_afterTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8757,"src":"12412:19:29","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256,uint256)"}},"id":8596,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12412:41:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8597,"nodeType":"ExpressionStatement","src":"12412:41:29"}]},"documentation":{"id":8515,"nodeType":"StructuredDocumentation","src":"10939:313:29","text":" @dev Transfers `tokenId` from `from` to `to`.\n As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\n Requirements:\n - `to` cannot be the zero address.\n - `tokenId` token must be owned by `from`.\n Emits a {Transfer} event."},"id":8599,"implemented":true,"kind":"function","modifiers":[],"name":"_transfer","nameLocation":"11266:9:29","nodeType":"FunctionDefinition","parameters":{"id":8522,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8517,"mutability":"mutable","name":"from","nameLocation":"11284:4:29","nodeType":"VariableDeclaration","scope":8599,"src":"11276:12:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8516,"name":"address","nodeType":"ElementaryTypeName","src":"11276:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8519,"mutability":"mutable","name":"to","nameLocation":"11298:2:29","nodeType":"VariableDeclaration","scope":8599,"src":"11290:10:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8518,"name":"address","nodeType":"ElementaryTypeName","src":"11290:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8521,"mutability":"mutable","name":"tokenId","nameLocation":"11310:7:29","nodeType":"VariableDeclaration","scope":8599,"src":"11302:15:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8520,"name":"uint256","nodeType":"ElementaryTypeName","src":"11302:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11275:43:29"},"returnParameters":{"id":8523,"nodeType":"ParameterList","parameters":[],"src":"11336:0:29"},"scope":8773,"src":"11257:1203:29","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":8622,"nodeType":"Block","src":"12636:107:29","statements":[{"expression":{"id":8611,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":8607,"name":"_tokenApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7886,"src":"12646:15:29","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":8609,"indexExpression":{"id":8608,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8604,"src":"12662:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"12646:24:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8610,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8602,"src":"12673:2:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"12646:29:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":8612,"nodeType":"ExpressionStatement","src":"12646:29:29"},{"eventCall":{"arguments":[{"arguments":[{"id":8616,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8604,"src":"12714:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8614,"name":"ERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8773,"src":"12699:6:29","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC721_$8773_$","typeString":"type(contract ERC721)"}},"id":8615,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12706:7:29","memberName":"ownerOf","nodeType":"MemberAccess","referencedDeclaration":7992,"src":"12699:14:29","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":8617,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12699:23:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8618,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8602,"src":"12724:2:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8619,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8604,"src":"12728:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8613,"name":"Approval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8797,"src":"12690:8:29","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":8620,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12690:46:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8621,"nodeType":"EmitStatement","src":"12685:51:29"}]},"documentation":{"id":8600,"nodeType":"StructuredDocumentation","src":"12466:101:29","text":" @dev Approve `to` to operate on `tokenId`\n Emits an {Approval} event."},"id":8623,"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nameLocation":"12581:8:29","nodeType":"FunctionDefinition","parameters":{"id":8605,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8602,"mutability":"mutable","name":"to","nameLocation":"12598:2:29","nodeType":"VariableDeclaration","scope":8623,"src":"12590:10:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8601,"name":"address","nodeType":"ElementaryTypeName","src":"12590:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8604,"mutability":"mutable","name":"tokenId","nameLocation":"12610:7:29","nodeType":"VariableDeclaration","scope":8623,"src":"12602:15:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8603,"name":"uint256","nodeType":"ElementaryTypeName","src":"12602:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12589:29:29"},"returnParameters":{"id":8606,"nodeType":"ParameterList","parameters":[],"src":"12636:0:29"},"scope":8773,"src":"12572:171:29","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":8654,"nodeType":"Block","src":"12972:184:29","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":8636,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8634,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8626,"src":"12990:5:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":8635,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8628,"src":"12999:8:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"12990:17:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a20617070726f766520746f2063616c6c6572","id":8637,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"13009:27:29","typeDescriptions":{"typeIdentifier":"t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05","typeString":"literal_string \"ERC721: approve to caller\""},"value":"ERC721: approve to caller"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05","typeString":"literal_string \"ERC721: approve to caller\""}],"id":8633,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"12982:7:29","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8638,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12982:55:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8639,"nodeType":"ExpressionStatement","src":"12982:55:29"},{"expression":{"id":8646,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":8640,"name":"_operatorApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7892,"src":"13047:18:29","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":8643,"indexExpression":{"id":8641,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8626,"src":"13066:5:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13047:25:29","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":8644,"indexExpression":{"id":8642,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8628,"src":"13073:8:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"13047:35:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8645,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8630,"src":"13085:8:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"13047:46:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8647,"nodeType":"ExpressionStatement","src":"13047:46:29"},{"eventCall":{"arguments":[{"id":8649,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8626,"src":"13123:5:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8650,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8628,"src":"13130:8:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8651,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8630,"src":"13140:8:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":8648,"name":"ApprovalForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8806,"src":"13108:14:29","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,address,bool)"}},"id":8652,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13108:41:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8653,"nodeType":"EmitStatement","src":"13103:46:29"}]},"documentation":{"id":8624,"nodeType":"StructuredDocumentation","src":"12749:125:29","text":" @dev Approve `operator` to operate on all of `owner` tokens\n Emits an {ApprovalForAll} event."},"id":8655,"implemented":true,"kind":"function","modifiers":[],"name":"_setApprovalForAll","nameLocation":"12888:18:29","nodeType":"FunctionDefinition","parameters":{"id":8631,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8626,"mutability":"mutable","name":"owner","nameLocation":"12915:5:29","nodeType":"VariableDeclaration","scope":8655,"src":"12907:13:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8625,"name":"address","nodeType":"ElementaryTypeName","src":"12907:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8628,"mutability":"mutable","name":"operator","nameLocation":"12930:8:29","nodeType":"VariableDeclaration","scope":8655,"src":"12922:16:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8627,"name":"address","nodeType":"ElementaryTypeName","src":"12922:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8630,"mutability":"mutable","name":"approved","nameLocation":"12945:8:29","nodeType":"VariableDeclaration","scope":8655,"src":"12940:13:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8629,"name":"bool","nodeType":"ElementaryTypeName","src":"12940:4:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"12906:48:29"},"returnParameters":{"id":8632,"nodeType":"ParameterList","parameters":[],"src":"12972:0:29"},"scope":8773,"src":"12879:277:29","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":8668,"nodeType":"Block","src":"13303:70:29","statements":[{"expression":{"arguments":[{"arguments":[{"id":8663,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8658,"src":"13329:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8662,"name":"_exists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8292,"src":"13321:7:29","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) view returns (bool)"}},"id":8664,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13321:16:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a20696e76616c696420746f6b656e204944","id":8665,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"13339:26:29","typeDescriptions":{"typeIdentifier":"t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f","typeString":"literal_string \"ERC721: invalid token ID\""},"value":"ERC721: invalid token ID"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f","typeString":"literal_string \"ERC721: invalid token ID\""}],"id":8661,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"13313:7:29","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8666,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13313:53:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8667,"nodeType":"ExpressionStatement","src":"13313:53:29"}]},"documentation":{"id":8656,"nodeType":"StructuredDocumentation","src":"13162:73:29","text":" @dev Reverts if the `tokenId` has not been minted yet."},"id":8669,"implemented":true,"kind":"function","modifiers":[],"name":"_requireMinted","nameLocation":"13249:14:29","nodeType":"FunctionDefinition","parameters":{"id":8659,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8658,"mutability":"mutable","name":"tokenId","nameLocation":"13272:7:29","nodeType":"VariableDeclaration","scope":8669,"src":"13264:15:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8657,"name":"uint256","nodeType":"ElementaryTypeName","src":"13264:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13263:17:29"},"returnParameters":{"id":8660,"nodeType":"ParameterList","parameters":[],"src":"13303:0:29"},"scope":8773,"src":"13240:133:29","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":8730,"nodeType":"Block","src":"14080:676:29","statements":[{"condition":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":8683,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8674,"src":"14094:2:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":8684,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14097:10:29","memberName":"isContract","nodeType":"MemberAccess","referencedDeclaration":8952,"src":"14094:13:29","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$bound_to$_t_address_$","typeString":"function (address) view returns (bool)"}},"id":8685,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14094:15:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":8728,"nodeType":"Block","src":"14714:36:29","statements":[{"expression":{"hexValue":"74727565","id":8726,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"14735:4:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":8682,"id":8727,"nodeType":"Return","src":"14728:11:29"}]},"id":8729,"nodeType":"IfStatement","src":"14090:660:29","trueBody":{"id":8725,"nodeType":"Block","src":"14111:597:29","statements":[{"clauses":[{"block":{"id":8705,"nodeType":"Block","src":"14225:91:29","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":8703,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8699,"name":"retval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8697,"src":"14250:6:29","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":8700,"name":"IERC721Receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8907,"src":"14260:15:29","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Receiver_$8907_$","typeString":"type(contract IERC721Receiver)"}},"id":8701,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"14276:16:29","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":8906,"src":"14260:32:29","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$","typeString":"function IERC721Receiver.onERC721Received(address,address,uint256,bytes calldata) returns (bytes4)"}},"id":8702,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"14293:8:29","memberName":"selector","nodeType":"MemberAccess","src":"14260:41:29","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"14250:51:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":8682,"id":8704,"nodeType":"Return","src":"14243:58:29"}]},"errorName":"","id":8706,"nodeType":"TryCatchClause","parameters":{"id":8698,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8697,"mutability":"mutable","name":"retval","nameLocation":"14217:6:29","nodeType":"VariableDeclaration","scope":8706,"src":"14210:13:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":8696,"name":"bytes4","nodeType":"ElementaryTypeName","src":"14210:6:29","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"14209:15:29"},"src":"14201:115:29"},{"block":{"id":8722,"nodeType":"Block","src":"14345:353:29","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8713,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":8710,"name":"reason","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8708,"src":"14367:6:29","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":8711,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14374:6:29","memberName":"length","nodeType":"MemberAccess","src":"14367:13:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":8712,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14384:1:29","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"14367:18:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":8720,"nodeType":"Block","src":"14494:190:29","statements":[{"AST":{"nodeType":"YulBlock","src":"14580:86:29","statements":[{"expression":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"14617:2:29","type":"","value":"32"},{"name":"reason","nodeType":"YulIdentifier","src":"14621:6:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14613:3:29"},"nodeType":"YulFunctionCall","src":"14613:15:29"},{"arguments":[{"name":"reason","nodeType":"YulIdentifier","src":"14636:6:29"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"14630:5:29"},"nodeType":"YulFunctionCall","src":"14630:13:29"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"14606:6:29"},"nodeType":"YulFunctionCall","src":"14606:38:29"},"nodeType":"YulExpressionStatement","src":"14606:38:29"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"london","externalReferences":[{"declaration":8708,"isOffset":false,"isSlot":false,"src":"14621:6:29","valueSize":1},{"declaration":8708,"isOffset":false,"isSlot":false,"src":"14636:6:29","valueSize":1}],"id":8719,"nodeType":"InlineAssembly","src":"14571:95:29"}]},"id":8721,"nodeType":"IfStatement","src":"14363:321:29","trueBody":{"id":8718,"nodeType":"Block","src":"14387:101:29","statements":[{"expression":{"arguments":[{"hexValue":"4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e746572","id":8715,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"14416:52:29","typeDescriptions":{"typeIdentifier":"t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e","typeString":"literal_string \"ERC721: transfer to non ERC721Receiver implementer\""},"value":"ERC721: transfer to non ERC721Receiver implementer"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e","typeString":"literal_string \"ERC721: transfer to non ERC721Receiver implementer\""}],"id":8714,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[4294967277,4294967277],"referencedDeclaration":4294967277,"src":"14409:6:29","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":8716,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14409:60:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8717,"nodeType":"ExpressionStatement","src":"14409:60:29"}]}}]},"errorName":"","id":8723,"nodeType":"TryCatchClause","parameters":{"id":8709,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8708,"mutability":"mutable","name":"reason","nameLocation":"14337:6:29","nodeType":"VariableDeclaration","scope":8723,"src":"14324:19:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":8707,"name":"bytes","nodeType":"ElementaryTypeName","src":"14324:5:29","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"14323:21:29"},"src":"14317:381:29"}],"externalCall":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":8690,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9276,"src":"14166:10:29","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":8691,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14166:12:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8692,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8672,"src":"14180:4:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8693,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8676,"src":"14186:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8694,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8678,"src":"14195:4:29","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"id":8687,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8674,"src":"14145:2:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8686,"name":"IERC721Receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8907,"src":"14129:15:29","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Receiver_$8907_$","typeString":"type(contract IERC721Receiver)"}},"id":8688,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14129:19:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC721Receiver_$8907","typeString":"contract IERC721Receiver"}},"id":8689,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14149:16:29","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":8906,"src":"14129:36:29","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function (address,address,uint256,bytes memory) external returns (bytes4)"}},"id":8695,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14129:71:29","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":8724,"nodeType":"TryStatement","src":"14125:573:29"}]}}]},"documentation":{"id":8670,"nodeType":"StructuredDocumentation","src":"13379:541:29","text":" @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address.\n The call is not executed if the target address is not a contract.\n @param from address representing the previous owner of the given token ID\n @param to target address that will receive the tokens\n @param tokenId uint256 ID of the token to be transferred\n @param data bytes optional data to send along with the call\n @return bool whether the call correctly returned the expected magic value"},"id":8731,"implemented":true,"kind":"function","modifiers":[],"name":"_checkOnERC721Received","nameLocation":"13934:22:29","nodeType":"FunctionDefinition","parameters":{"id":8679,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8672,"mutability":"mutable","name":"from","nameLocation":"13974:4:29","nodeType":"VariableDeclaration","scope":8731,"src":"13966:12:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8671,"name":"address","nodeType":"ElementaryTypeName","src":"13966:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8674,"mutability":"mutable","name":"to","nameLocation":"13996:2:29","nodeType":"VariableDeclaration","scope":8731,"src":"13988:10:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8673,"name":"address","nodeType":"ElementaryTypeName","src":"13988:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8676,"mutability":"mutable","name":"tokenId","nameLocation":"14016:7:29","nodeType":"VariableDeclaration","scope":8731,"src":"14008:15:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8675,"name":"uint256","nodeType":"ElementaryTypeName","src":"14008:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8678,"mutability":"mutable","name":"data","nameLocation":"14046:4:29","nodeType":"VariableDeclaration","scope":8731,"src":"14033:17:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":8677,"name":"bytes","nodeType":"ElementaryTypeName","src":"14033:5:29","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"13956:100:29"},"returnParameters":{"id":8682,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8681,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8731,"src":"14074:4:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8680,"name":"bool","nodeType":"ElementaryTypeName","src":"14074:4:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"14073:6:29"},"scope":8773,"src":"13925:831:29","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":8743,"nodeType":"Block","src":"15586:2:29","statements":[]},"documentation":{"id":8732,"nodeType":"StructuredDocumentation","src":"14762:705:29","text":" @dev Hook that is called before any token transfer. This includes minting and burning. If {ERC721Consecutive} is\n used, the hook may be called as part of a consecutive (batch) mint, as indicated by `batchSize` greater than 1.\n Calling conditions:\n - When `from` and `to` are both non-zero, ``from``'s tokens will be transferred to `to`.\n - When `from` is zero, the tokens will be minted for `to`.\n - When `to` is zero, ``from``'s tokens will be burned.\n - `from` and `to` are never both zero.\n - `batchSize` is non-zero.\n To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]."},"id":8744,"implemented":true,"kind":"function","modifiers":[],"name":"_beforeTokenTransfer","nameLocation":"15481:20:29","nodeType":"FunctionDefinition","parameters":{"id":8741,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8734,"mutability":"mutable","name":"from","nameLocation":"15510:4:29","nodeType":"VariableDeclaration","scope":8744,"src":"15502:12:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8733,"name":"address","nodeType":"ElementaryTypeName","src":"15502:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8736,"mutability":"mutable","name":"to","nameLocation":"15524:2:29","nodeType":"VariableDeclaration","scope":8744,"src":"15516:10:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8735,"name":"address","nodeType":"ElementaryTypeName","src":"15516:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8738,"mutability":"mutable","name":"firstTokenId","nameLocation":"15536:12:29","nodeType":"VariableDeclaration","scope":8744,"src":"15528:20:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8737,"name":"uint256","nodeType":"ElementaryTypeName","src":"15528:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8740,"mutability":"mutable","name":"batchSize","nameLocation":"15558:9:29","nodeType":"VariableDeclaration","scope":8744,"src":"15550:17:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8739,"name":"uint256","nodeType":"ElementaryTypeName","src":"15550:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15501:67:29"},"returnParameters":{"id":8742,"nodeType":"ParameterList","parameters":[],"src":"15586:0:29"},"scope":8773,"src":"15472:116:29","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":8756,"nodeType":"Block","src":"16407:2:29","statements":[]},"documentation":{"id":8745,"nodeType":"StructuredDocumentation","src":"15594:695:29","text":" @dev Hook that is called after any token transfer. This includes minting and burning. If {ERC721Consecutive} is\n used, the hook may be called as part of a consecutive (batch) mint, as indicated by `batchSize` greater than 1.\n Calling conditions:\n - When `from` and `to` are both non-zero, ``from``'s tokens were transferred to `to`.\n - When `from` is zero, the tokens were minted for `to`.\n - When `to` is zero, ``from``'s tokens were burned.\n - `from` and `to` are never both zero.\n - `batchSize` is non-zero.\n To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]."},"id":8757,"implemented":true,"kind":"function","modifiers":[],"name":"_afterTokenTransfer","nameLocation":"16303:19:29","nodeType":"FunctionDefinition","parameters":{"id":8754,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8747,"mutability":"mutable","name":"from","nameLocation":"16331:4:29","nodeType":"VariableDeclaration","scope":8757,"src":"16323:12:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8746,"name":"address","nodeType":"ElementaryTypeName","src":"16323:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8749,"mutability":"mutable","name":"to","nameLocation":"16345:2:29","nodeType":"VariableDeclaration","scope":8757,"src":"16337:10:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8748,"name":"address","nodeType":"ElementaryTypeName","src":"16337:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8751,"mutability":"mutable","name":"firstTokenId","nameLocation":"16357:12:29","nodeType":"VariableDeclaration","scope":8757,"src":"16349:20:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8750,"name":"uint256","nodeType":"ElementaryTypeName","src":"16349:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8753,"mutability":"mutable","name":"batchSize","nameLocation":"16379:9:29","nodeType":"VariableDeclaration","scope":8757,"src":"16371:17:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8752,"name":"uint256","nodeType":"ElementaryTypeName","src":"16371:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16322:67:29"},"returnParameters":{"id":8755,"nodeType":"ParameterList","parameters":[],"src":"16407:0:29"},"scope":8773,"src":"16294:115:29","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":8771,"nodeType":"Block","src":"16958:45:29","statements":[{"expression":{"id":8769,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":8765,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7882,"src":"16968:9:29","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":8767,"indexExpression":{"id":8766,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8760,"src":"16978:7:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"16968:18:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":8768,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8762,"src":"16990:6:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16968:28:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8770,"nodeType":"ExpressionStatement","src":"16968:28:29"}]},"documentation":{"id":8758,"nodeType":"StructuredDocumentation","src":"16415:409:29","text":" @dev Unsafe write access to the balances, used by extensions that \"mint\" tokens using an {ownerOf} override.\n WARNING: Anyone calling this MUST ensure that the balances remain consistent with the ownership. The invariant\n being that for any address `a` the value returned by `balanceOf(a)` must be equal to the number of tokens such\n that `ownerOf(tokenId)` is `a`."},"id":8772,"implemented":true,"kind":"function","modifiers":[],"name":"__unsafe_increaseBalance","nameLocation":"16891:24:29","nodeType":"FunctionDefinition","parameters":{"id":8763,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8760,"mutability":"mutable","name":"account","nameLocation":"16924:7:29","nodeType":"VariableDeclaration","scope":8772,"src":"16916:15:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8759,"name":"address","nodeType":"ElementaryTypeName","src":"16916:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8762,"mutability":"mutable","name":"amount","nameLocation":"16941:6:29","nodeType":"VariableDeclaration","scope":8772,"src":"16933:14:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8761,"name":"uint256","nodeType":"ElementaryTypeName","src":"16933:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16915:33:29"},"returnParameters":{"id":8764,"nodeType":"ParameterList","parameters":[],"src":"16958:0:29"},"scope":8773,"src":"16882:121:29","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":8774,"src":"628:16377:29","usedErrors":[]}],"src":"107:16899:29"},"id":29},"@openzeppelin/contracts/token/ERC721/IERC721.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC721/IERC721.sol","exportedSymbols":{"IERC165":[9743],"IERC721":[8889]},"id":8890,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":8775,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"108:23:30"},{"absolutePath":"@openzeppelin/contracts/utils/introspection/IERC165.sol","file":"../../utils/introspection/IERC165.sol","id":8776,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8890,"sourceUnit":9744,"src":"133:47:30","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":8778,"name":"IERC165","nameLocations":["271:7:30"],"nodeType":"IdentifierPath","referencedDeclaration":9743,"src":"271:7:30"},"id":8779,"nodeType":"InheritanceSpecifier","src":"271:7:30"}],"canonicalName":"IERC721","contractDependencies":[],"contractKind":"interface","documentation":{"id":8777,"nodeType":"StructuredDocumentation","src":"182:67:30","text":" @dev Required interface of an ERC721 compliant contract."},"fullyImplemented":false,"id":8889,"linearizedBaseContracts":[8889,9743],"name":"IERC721","nameLocation":"260:7:30","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":8780,"nodeType":"StructuredDocumentation","src":"285:88:30","text":" @dev Emitted when `tokenId` token is transferred from `from` to `to`."},"eventSelector":"ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","id":8788,"name":"Transfer","nameLocation":"384:8:30","nodeType":"EventDefinition","parameters":{"id":8787,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8782,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"409:4:30","nodeType":"VariableDeclaration","scope":8788,"src":"393:20:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8781,"name":"address","nodeType":"ElementaryTypeName","src":"393:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8784,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"431:2:30","nodeType":"VariableDeclaration","scope":8788,"src":"415:18:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8783,"name":"address","nodeType":"ElementaryTypeName","src":"415:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8786,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"451:7:30","nodeType":"VariableDeclaration","scope":8788,"src":"435:23:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8785,"name":"uint256","nodeType":"ElementaryTypeName","src":"435:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"392:67:30"},"src":"378:82:30"},{"anonymous":false,"documentation":{"id":8789,"nodeType":"StructuredDocumentation","src":"466:94:30","text":" @dev Emitted when `owner` enables `approved` to manage the `tokenId` token."},"eventSelector":"8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925","id":8797,"name":"Approval","nameLocation":"571:8:30","nodeType":"EventDefinition","parameters":{"id":8796,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8791,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"596:5:30","nodeType":"VariableDeclaration","scope":8797,"src":"580:21:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8790,"name":"address","nodeType":"ElementaryTypeName","src":"580:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8793,"indexed":true,"mutability":"mutable","name":"approved","nameLocation":"619:8:30","nodeType":"VariableDeclaration","scope":8797,"src":"603:24:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8792,"name":"address","nodeType":"ElementaryTypeName","src":"603:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8795,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"645:7:30","nodeType":"VariableDeclaration","scope":8797,"src":"629:23:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8794,"name":"uint256","nodeType":"ElementaryTypeName","src":"629:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"579:74:30"},"src":"565:89:30"},{"anonymous":false,"documentation":{"id":8798,"nodeType":"StructuredDocumentation","src":"660:117:30","text":" @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets."},"eventSelector":"17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31","id":8806,"name":"ApprovalForAll","nameLocation":"788:14:30","nodeType":"EventDefinition","parameters":{"id":8805,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8800,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"819:5:30","nodeType":"VariableDeclaration","scope":8806,"src":"803:21:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8799,"name":"address","nodeType":"ElementaryTypeName","src":"803:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8802,"indexed":true,"mutability":"mutable","name":"operator","nameLocation":"842:8:30","nodeType":"VariableDeclaration","scope":8806,"src":"826:24:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8801,"name":"address","nodeType":"ElementaryTypeName","src":"826:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8804,"indexed":false,"mutability":"mutable","name":"approved","nameLocation":"857:8:30","nodeType":"VariableDeclaration","scope":8806,"src":"852:13:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8803,"name":"bool","nodeType":"ElementaryTypeName","src":"852:4:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"802:64:30"},"src":"782:85:30"},{"documentation":{"id":8807,"nodeType":"StructuredDocumentation","src":"873:76:30","text":" @dev Returns the number of tokens in ``owner``'s account."},"functionSelector":"70a08231","id":8814,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"963:9:30","nodeType":"FunctionDefinition","parameters":{"id":8810,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8809,"mutability":"mutable","name":"owner","nameLocation":"981:5:30","nodeType":"VariableDeclaration","scope":8814,"src":"973:13:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8808,"name":"address","nodeType":"ElementaryTypeName","src":"973:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"972:15:30"},"returnParameters":{"id":8813,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8812,"mutability":"mutable","name":"balance","nameLocation":"1019:7:30","nodeType":"VariableDeclaration","scope":8814,"src":"1011:15:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8811,"name":"uint256","nodeType":"ElementaryTypeName","src":"1011:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1010:17:30"},"scope":8889,"src":"954:74:30","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":8815,"nodeType":"StructuredDocumentation","src":"1034:131:30","text":" @dev Returns the owner of the `tokenId` token.\n Requirements:\n - `tokenId` must exist."},"functionSelector":"6352211e","id":8822,"implemented":false,"kind":"function","modifiers":[],"name":"ownerOf","nameLocation":"1179:7:30","nodeType":"FunctionDefinition","parameters":{"id":8818,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8817,"mutability":"mutable","name":"tokenId","nameLocation":"1195:7:30","nodeType":"VariableDeclaration","scope":8822,"src":"1187:15:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8816,"name":"uint256","nodeType":"ElementaryTypeName","src":"1187:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1186:17:30"},"returnParameters":{"id":8821,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8820,"mutability":"mutable","name":"owner","nameLocation":"1235:5:30","nodeType":"VariableDeclaration","scope":8822,"src":"1227:13:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8819,"name":"address","nodeType":"ElementaryTypeName","src":"1227:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1226:15:30"},"scope":8889,"src":"1170:72:30","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":8823,"nodeType":"StructuredDocumentation","src":"1248:556:30","text":" @dev Safely transfers `tokenId` token from `from` to `to`.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."},"functionSelector":"b88d4fde","id":8834,"implemented":false,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"1818:16:30","nodeType":"FunctionDefinition","parameters":{"id":8832,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8825,"mutability":"mutable","name":"from","nameLocation":"1843:4:30","nodeType":"VariableDeclaration","scope":8834,"src":"1835:12:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8824,"name":"address","nodeType":"ElementaryTypeName","src":"1835:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8827,"mutability":"mutable","name":"to","nameLocation":"1857:2:30","nodeType":"VariableDeclaration","scope":8834,"src":"1849:10:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8826,"name":"address","nodeType":"ElementaryTypeName","src":"1849:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8829,"mutability":"mutable","name":"tokenId","nameLocation":"1869:7:30","nodeType":"VariableDeclaration","scope":8834,"src":"1861:15:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8828,"name":"uint256","nodeType":"ElementaryTypeName","src":"1861:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8831,"mutability":"mutable","name":"data","nameLocation":"1893:4:30","nodeType":"VariableDeclaration","scope":8834,"src":"1878:19:30","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":8830,"name":"bytes","nodeType":"ElementaryTypeName","src":"1878:5:30","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1834:64:30"},"returnParameters":{"id":8833,"nodeType":"ParameterList","parameters":[],"src":"1907:0:30"},"scope":8889,"src":"1809:99:30","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":8835,"nodeType":"StructuredDocumentation","src":"1914:687:30","text":" @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n are aware of the ERC721 protocol to prevent tokens from being forever locked.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."},"functionSelector":"42842e0e","id":8844,"implemented":false,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"2615:16:30","nodeType":"FunctionDefinition","parameters":{"id":8842,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8837,"mutability":"mutable","name":"from","nameLocation":"2640:4:30","nodeType":"VariableDeclaration","scope":8844,"src":"2632:12:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8836,"name":"address","nodeType":"ElementaryTypeName","src":"2632:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8839,"mutability":"mutable","name":"to","nameLocation":"2654:2:30","nodeType":"VariableDeclaration","scope":8844,"src":"2646:10:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8838,"name":"address","nodeType":"ElementaryTypeName","src":"2646:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8841,"mutability":"mutable","name":"tokenId","nameLocation":"2666:7:30","nodeType":"VariableDeclaration","scope":8844,"src":"2658:15:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8840,"name":"uint256","nodeType":"ElementaryTypeName","src":"2658:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2631:43:30"},"returnParameters":{"id":8843,"nodeType":"ParameterList","parameters":[],"src":"2683:0:30"},"scope":8889,"src":"2606:78:30","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":8845,"nodeType":"StructuredDocumentation","src":"2690:732:30","text":" @dev Transfers `tokenId` token from `from` to `to`.\n WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721\n or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must\n understand this adds an external call which potentially creates a reentrancy vulnerability.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must be owned by `from`.\n - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n Emits a {Transfer} event."},"functionSelector":"23b872dd","id":8854,"implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"3436:12:30","nodeType":"FunctionDefinition","parameters":{"id":8852,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8847,"mutability":"mutable","name":"from","nameLocation":"3457:4:30","nodeType":"VariableDeclaration","scope":8854,"src":"3449:12:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8846,"name":"address","nodeType":"ElementaryTypeName","src":"3449:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8849,"mutability":"mutable","name":"to","nameLocation":"3471:2:30","nodeType":"VariableDeclaration","scope":8854,"src":"3463:10:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8848,"name":"address","nodeType":"ElementaryTypeName","src":"3463:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8851,"mutability":"mutable","name":"tokenId","nameLocation":"3483:7:30","nodeType":"VariableDeclaration","scope":8854,"src":"3475:15:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8850,"name":"uint256","nodeType":"ElementaryTypeName","src":"3475:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3448:43:30"},"returnParameters":{"id":8853,"nodeType":"ParameterList","parameters":[],"src":"3500:0:30"},"scope":8889,"src":"3427:74:30","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":8855,"nodeType":"StructuredDocumentation","src":"3507:452:30","text":" @dev Gives permission to `to` to transfer `tokenId` token to another account.\n The approval is cleared when the token is transferred.\n Only a single account can be approved at a time, so approving the zero address clears previous approvals.\n Requirements:\n - The caller must own the token or be an approved operator.\n - `tokenId` must exist.\n Emits an {Approval} event."},"functionSelector":"095ea7b3","id":8862,"implemented":false,"kind":"function","modifiers":[],"name":"approve","nameLocation":"3973:7:30","nodeType":"FunctionDefinition","parameters":{"id":8860,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8857,"mutability":"mutable","name":"to","nameLocation":"3989:2:30","nodeType":"VariableDeclaration","scope":8862,"src":"3981:10:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8856,"name":"address","nodeType":"ElementaryTypeName","src":"3981:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8859,"mutability":"mutable","name":"tokenId","nameLocation":"4001:7:30","nodeType":"VariableDeclaration","scope":8862,"src":"3993:15:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8858,"name":"uint256","nodeType":"ElementaryTypeName","src":"3993:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3980:29:30"},"returnParameters":{"id":8861,"nodeType":"ParameterList","parameters":[],"src":"4018:0:30"},"scope":8889,"src":"3964:55:30","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":8863,"nodeType":"StructuredDocumentation","src":"4025:309:30","text":" @dev Approve or remove `operator` as an operator for the caller.\n Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\n Requirements:\n - The `operator` cannot be the caller.\n Emits an {ApprovalForAll} event."},"functionSelector":"a22cb465","id":8870,"implemented":false,"kind":"function","modifiers":[],"name":"setApprovalForAll","nameLocation":"4348:17:30","nodeType":"FunctionDefinition","parameters":{"id":8868,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8865,"mutability":"mutable","name":"operator","nameLocation":"4374:8:30","nodeType":"VariableDeclaration","scope":8870,"src":"4366:16:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8864,"name":"address","nodeType":"ElementaryTypeName","src":"4366:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8867,"mutability":"mutable","name":"approved","nameLocation":"4389:8:30","nodeType":"VariableDeclaration","scope":8870,"src":"4384:13:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8866,"name":"bool","nodeType":"ElementaryTypeName","src":"4384:4:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4365:33:30"},"returnParameters":{"id":8869,"nodeType":"ParameterList","parameters":[],"src":"4407:0:30"},"scope":8889,"src":"4339:69:30","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":8871,"nodeType":"StructuredDocumentation","src":"4414:139:30","text":" @dev Returns the account approved for `tokenId` token.\n Requirements:\n - `tokenId` must exist."},"functionSelector":"081812fc","id":8878,"implemented":false,"kind":"function","modifiers":[],"name":"getApproved","nameLocation":"4567:11:30","nodeType":"FunctionDefinition","parameters":{"id":8874,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8873,"mutability":"mutable","name":"tokenId","nameLocation":"4587:7:30","nodeType":"VariableDeclaration","scope":8878,"src":"4579:15:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8872,"name":"uint256","nodeType":"ElementaryTypeName","src":"4579:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4578:17:30"},"returnParameters":{"id":8877,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8876,"mutability":"mutable","name":"operator","nameLocation":"4627:8:30","nodeType":"VariableDeclaration","scope":8878,"src":"4619:16:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8875,"name":"address","nodeType":"ElementaryTypeName","src":"4619:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4618:18:30"},"scope":8889,"src":"4558:79:30","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":8879,"nodeType":"StructuredDocumentation","src":"4643:138:30","text":" @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\n See {setApprovalForAll}"},"functionSelector":"e985e9c5","id":8888,"implemented":false,"kind":"function","modifiers":[],"name":"isApprovedForAll","nameLocation":"4795:16:30","nodeType":"FunctionDefinition","parameters":{"id":8884,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8881,"mutability":"mutable","name":"owner","nameLocation":"4820:5:30","nodeType":"VariableDeclaration","scope":8888,"src":"4812:13:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8880,"name":"address","nodeType":"ElementaryTypeName","src":"4812:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8883,"mutability":"mutable","name":"operator","nameLocation":"4835:8:30","nodeType":"VariableDeclaration","scope":8888,"src":"4827:16:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8882,"name":"address","nodeType":"ElementaryTypeName","src":"4827:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4811:33:30"},"returnParameters":{"id":8887,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8886,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8888,"src":"4868:4:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8885,"name":"bool","nodeType":"ElementaryTypeName","src":"4868:4:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4867:6:30"},"scope":8889,"src":"4786:88:30","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":8890,"src":"250:4626:30","usedErrors":[]}],"src":"108:4769:30"},"id":30},"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol","exportedSymbols":{"IERC721Receiver":[8907]},"id":8908,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":8891,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"116:23:31"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC721Receiver","contractDependencies":[],"contractKind":"interface","documentation":{"id":8892,"nodeType":"StructuredDocumentation","src":"141:152:31","text":" @title ERC721 token receiver interface\n @dev Interface for any contract that wants to support safeTransfers\n from ERC721 asset contracts."},"fullyImplemented":false,"id":8907,"linearizedBaseContracts":[8907],"name":"IERC721Receiver","nameLocation":"304:15:31","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":8893,"nodeType":"StructuredDocumentation","src":"326:493:31","text":" @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}\n by `operator` from `from`, this function is called.\n It must return its Solidity selector to confirm the token transfer.\n If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted.\n The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`."},"functionSelector":"150b7a02","id":8906,"implemented":false,"kind":"function","modifiers":[],"name":"onERC721Received","nameLocation":"833:16:31","nodeType":"FunctionDefinition","parameters":{"id":8902,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8895,"mutability":"mutable","name":"operator","nameLocation":"867:8:31","nodeType":"VariableDeclaration","scope":8906,"src":"859:16:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8894,"name":"address","nodeType":"ElementaryTypeName","src":"859:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8897,"mutability":"mutable","name":"from","nameLocation":"893:4:31","nodeType":"VariableDeclaration","scope":8906,"src":"885:12:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8896,"name":"address","nodeType":"ElementaryTypeName","src":"885:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8899,"mutability":"mutable","name":"tokenId","nameLocation":"915:7:31","nodeType":"VariableDeclaration","scope":8906,"src":"907:15:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8898,"name":"uint256","nodeType":"ElementaryTypeName","src":"907:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8901,"mutability":"mutable","name":"data","nameLocation":"947:4:31","nodeType":"VariableDeclaration","scope":8906,"src":"932:19:31","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":8900,"name":"bytes","nodeType":"ElementaryTypeName","src":"932:5:31","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"849:108:31"},"returnParameters":{"id":8905,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8904,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8906,"src":"976:6:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":8903,"name":"bytes4","nodeType":"ElementaryTypeName","src":"976:6:31","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"975:8:31"},"scope":8907,"src":"824:160:31","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":8908,"src":"294:692:31","usedErrors":[]}],"src":"116:871:31"},"id":31},"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol","exportedSymbols":{"IERC165":[9743],"IERC721":[8889],"IERC721Metadata":[8934]},"id":8935,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":8909,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"112:23:32"},{"absolutePath":"@openzeppelin/contracts/token/ERC721/IERC721.sol","file":"../IERC721.sol","id":8910,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8935,"sourceUnit":8890,"src":"137:24:32","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":8912,"name":"IERC721","nameLocations":["326:7:32"],"nodeType":"IdentifierPath","referencedDeclaration":8889,"src":"326:7:32"},"id":8913,"nodeType":"InheritanceSpecifier","src":"326:7:32"}],"canonicalName":"IERC721Metadata","contractDependencies":[],"contractKind":"interface","documentation":{"id":8911,"nodeType":"StructuredDocumentation","src":"163:133:32","text":" @title ERC-721 Non-Fungible Token Standard, optional metadata extension\n @dev See https://eips.ethereum.org/EIPS/eip-721"},"fullyImplemented":false,"id":8934,"linearizedBaseContracts":[8934,8889,9743],"name":"IERC721Metadata","nameLocation":"307:15:32","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":8914,"nodeType":"StructuredDocumentation","src":"340:58:32","text":" @dev Returns the token collection name."},"functionSelector":"06fdde03","id":8919,"implemented":false,"kind":"function","modifiers":[],"name":"name","nameLocation":"412:4:32","nodeType":"FunctionDefinition","parameters":{"id":8915,"nodeType":"ParameterList","parameters":[],"src":"416:2:32"},"returnParameters":{"id":8918,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8917,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8919,"src":"442:13:32","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":8916,"name":"string","nodeType":"ElementaryTypeName","src":"442:6:32","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"441:15:32"},"scope":8934,"src":"403:54:32","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":8920,"nodeType":"StructuredDocumentation","src":"463:60:32","text":" @dev Returns the token collection symbol."},"functionSelector":"95d89b41","id":8925,"implemented":false,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"537:6:32","nodeType":"FunctionDefinition","parameters":{"id":8921,"nodeType":"ParameterList","parameters":[],"src":"543:2:32"},"returnParameters":{"id":8924,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8923,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8925,"src":"569:13:32","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":8922,"name":"string","nodeType":"ElementaryTypeName","src":"569:6:32","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"568:15:32"},"scope":8934,"src":"528:56:32","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":8926,"nodeType":"StructuredDocumentation","src":"590:90:32","text":" @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token."},"functionSelector":"c87b56dd","id":8933,"implemented":false,"kind":"function","modifiers":[],"name":"tokenURI","nameLocation":"694:8:32","nodeType":"FunctionDefinition","parameters":{"id":8929,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8928,"mutability":"mutable","name":"tokenId","nameLocation":"711:7:32","nodeType":"VariableDeclaration","scope":8933,"src":"703:15:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8927,"name":"uint256","nodeType":"ElementaryTypeName","src":"703:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"702:17:32"},"returnParameters":{"id":8932,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8931,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8933,"src":"743:13:32","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":8930,"name":"string","nodeType":"ElementaryTypeName","src":"743:6:32","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"742:15:32"},"scope":8934,"src":"685:73:32","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":8935,"src":"297:463:32","usedErrors":[]}],"src":"112:649:32"},"id":32},"@openzeppelin/contracts/utils/Address.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/Address.sol","exportedSymbols":{"Address":[9264]},"id":9265,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":8936,"literals":["solidity","^","0.8",".1"],"nodeType":"PragmaDirective","src":"101:23:33"},{"abstract":false,"baseContracts":[],"canonicalName":"Address","contractDependencies":[],"contractKind":"library","documentation":{"id":8937,"nodeType":"StructuredDocumentation","src":"126:67:33","text":" @dev Collection of functions related to the address type"},"fullyImplemented":true,"id":9264,"linearizedBaseContracts":[9264],"name":"Address","nameLocation":"202:7:33","nodeType":"ContractDefinition","nodes":[{"body":{"id":8951,"nodeType":"Block","src":"1478:254:33","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8949,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":8945,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8940,"src":"1702:7:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":8946,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1710:4:33","memberName":"code","nodeType":"MemberAccess","src":"1702:12:33","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":8947,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1715:6:33","memberName":"length","nodeType":"MemberAccess","src":"1702:19:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":8948,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1724:1:33","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1702:23:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":8944,"id":8950,"nodeType":"Return","src":"1695:30:33"}]},"documentation":{"id":8938,"nodeType":"StructuredDocumentation","src":"216:1191:33","text":" @dev Returns true if `account` is a contract.\n [IMPORTANT]\n ====\n It is unsafe to assume that an address for which this function returns\n false is an externally-owned account (EOA) and not a contract.\n Among others, `isContract` will return false for the following\n types of addresses:\n - an externally-owned account\n - a contract in construction\n - an address where a contract will be created\n - an address where a contract lived, but was destroyed\n Furthermore, `isContract` will also return true if the target contract within\n the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\n which only has an effect at the end of a transaction.\n ====\n [IMPORTANT]\n ====\n You shouldn't rely on `isContract` to protect against flash loan attacks!\n Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\n like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\n constructor.\n ===="},"id":8952,"implemented":true,"kind":"function","modifiers":[],"name":"isContract","nameLocation":"1421:10:33","nodeType":"FunctionDefinition","parameters":{"id":8941,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8940,"mutability":"mutable","name":"account","nameLocation":"1440:7:33","nodeType":"VariableDeclaration","scope":8952,"src":"1432:15:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8939,"name":"address","nodeType":"ElementaryTypeName","src":"1432:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1431:17:33"},"returnParameters":{"id":8944,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8943,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8952,"src":"1472:4:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8942,"name":"bool","nodeType":"ElementaryTypeName","src":"1472:4:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1471:6:33"},"scope":9264,"src":"1412:320:33","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":8985,"nodeType":"Block","src":"2718:241:33","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8967,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":8963,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967268,"src":"2744:4:33","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$9264","typeString":"library Address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Address_$9264","typeString":"library Address"}],"id":8962,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2736:7:33","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8961,"name":"address","nodeType":"ElementaryTypeName","src":"2736:7:33","typeDescriptions":{}}},"id":8964,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2736:13:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":8965,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2750:7:33","memberName":"balance","nodeType":"MemberAccess","src":"2736:21:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":8966,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8957,"src":"2761:6:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2736:31:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20696e73756666696369656e742062616c616e6365","id":8968,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2769:31:33","typeDescriptions":{"typeIdentifier":"t_stringliteral_5597a22abd0ef5332f8053862eb236db7590f17e2b93a53f63a103becfb561f9","typeString":"literal_string \"Address: insufficient balance\""},"value":"Address: insufficient balance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5597a22abd0ef5332f8053862eb236db7590f17e2b93a53f63a103becfb561f9","typeString":"literal_string \"Address: insufficient balance\""}],"id":8960,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"2728:7:33","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8969,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2728:73:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8970,"nodeType":"ExpressionStatement","src":"2728:73:33"},{"assignments":[8972,null],"declarations":[{"constant":false,"id":8972,"mutability":"mutable","name":"success","nameLocation":"2818:7:33","nodeType":"VariableDeclaration","scope":8985,"src":"2813:12:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8971,"name":"bool","nodeType":"ElementaryTypeName","src":"2813:4:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":8979,"initialValue":{"arguments":[{"hexValue":"","id":8977,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2861:2:33","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"id":8973,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8955,"src":"2831:9:33","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":8974,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2841:4:33","memberName":"call","nodeType":"MemberAccess","src":"2831:14:33","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":8976,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":8975,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8957,"src":"2853:6:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"2831:29:33","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":8978,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2831:33:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"2812:52:33"},{"expression":{"arguments":[{"id":8981,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8972,"src":"2882:7:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d61792068617665207265766572746564","id":8982,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2891:60:33","typeDescriptions":{"typeIdentifier":"t_stringliteral_51ddaa38748c0a1144620fb5bfe8edab31ea437571ad591a7734bbfd0429aeae","typeString":"literal_string \"Address: unable to send value, recipient may have reverted\""},"value":"Address: unable to send value, recipient may have reverted"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_51ddaa38748c0a1144620fb5bfe8edab31ea437571ad591a7734bbfd0429aeae","typeString":"literal_string \"Address: unable to send value, recipient may have reverted\""}],"id":8980,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"2874:7:33","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8983,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2874:78:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8984,"nodeType":"ExpressionStatement","src":"2874:78:33"}]},"documentation":{"id":8953,"nodeType":"StructuredDocumentation","src":"1738:904:33","text":" @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n `recipient`, forwarding all available gas and reverting on errors.\n https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n of certain opcodes, possibly making contracts go over the 2300 gas limit\n imposed by `transfer`, making them unable to receive funds via\n `transfer`. {sendValue} removes this limitation.\n https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n IMPORTANT: because control is transferred to `recipient`, care must be\n taken to not create reentrancy vulnerabilities. Consider using\n {ReentrancyGuard} or the\n https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]."},"id":8986,"implemented":true,"kind":"function","modifiers":[],"name":"sendValue","nameLocation":"2656:9:33","nodeType":"FunctionDefinition","parameters":{"id":8958,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8955,"mutability":"mutable","name":"recipient","nameLocation":"2682:9:33","nodeType":"VariableDeclaration","scope":8986,"src":"2666:25:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":8954,"name":"address","nodeType":"ElementaryTypeName","src":"2666:15:33","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"},{"constant":false,"id":8957,"mutability":"mutable","name":"amount","nameLocation":"2701:6:33","nodeType":"VariableDeclaration","scope":8986,"src":"2693:14:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8956,"name":"uint256","nodeType":"ElementaryTypeName","src":"2693:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2665:43:33"},"returnParameters":{"id":8959,"nodeType":"ParameterList","parameters":[],"src":"2718:0:33"},"scope":9264,"src":"2647:312:33","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":9003,"nodeType":"Block","src":"3790:96:33","statements":[{"expression":{"arguments":[{"id":8997,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8989,"src":"3829:6:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8998,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8991,"src":"3837:4:33","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"30","id":8999,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3843:1:33","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"416464726573733a206c6f772d6c6576656c2063616c6c206661696c6564","id":9000,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3846:32:33","typeDescriptions":{"typeIdentifier":"t_stringliteral_24d7ab5d382116e64324f19950ca9340b8af1ddeb09a8d026e0a3c6a01dcc9df","typeString":"literal_string \"Address: low-level call failed\""},"value":"Address: low-level call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_stringliteral_24d7ab5d382116e64324f19950ca9340b8af1ddeb09a8d026e0a3c6a01dcc9df","typeString":"literal_string \"Address: low-level call failed\""}],"id":8996,"name":"functionCallWithValue","nodeType":"Identifier","overloadedDeclarations":[9044,9088],"referencedDeclaration":9088,"src":"3807:21:33","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,uint256,string memory) returns (bytes memory)"}},"id":9001,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3807:72:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":8995,"id":9002,"nodeType":"Return","src":"3800:79:33"}]},"documentation":{"id":8987,"nodeType":"StructuredDocumentation","src":"2965:731:33","text":" @dev Performs a Solidity function call using a low level `call`. A\n plain `call` is an unsafe replacement for a function call: use this\n function instead.\n If `target` reverts with a revert reason, it is bubbled up by this\n function (like regular Solidity function calls).\n Returns the raw returned data. To convert to the expected return value,\n use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n Requirements:\n - `target` must be a contract.\n - calling `target` with `data` must not revert.\n _Available since v3.1._"},"id":9004,"implemented":true,"kind":"function","modifiers":[],"name":"functionCall","nameLocation":"3710:12:33","nodeType":"FunctionDefinition","parameters":{"id":8992,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8989,"mutability":"mutable","name":"target","nameLocation":"3731:6:33","nodeType":"VariableDeclaration","scope":9004,"src":"3723:14:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8988,"name":"address","nodeType":"ElementaryTypeName","src":"3723:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8991,"mutability":"mutable","name":"data","nameLocation":"3752:4:33","nodeType":"VariableDeclaration","scope":9004,"src":"3739:17:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":8990,"name":"bytes","nodeType":"ElementaryTypeName","src":"3739:5:33","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3722:35:33"},"returnParameters":{"id":8995,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8994,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9004,"src":"3776:12:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":8993,"name":"bytes","nodeType":"ElementaryTypeName","src":"3776:5:33","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3775:14:33"},"scope":9264,"src":"3701:185:33","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":9023,"nodeType":"Block","src":"4255:76:33","statements":[{"expression":{"arguments":[{"id":9017,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9007,"src":"4294:6:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9018,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9009,"src":"4302:4:33","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"30","id":9019,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4308:1:33","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":9020,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9011,"src":"4311:12:33","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":9016,"name":"functionCallWithValue","nodeType":"Identifier","overloadedDeclarations":[9044,9088],"referencedDeclaration":9088,"src":"4272:21:33","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,uint256,string memory) returns (bytes memory)"}},"id":9021,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4272:52:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":9015,"id":9022,"nodeType":"Return","src":"4265:59:33"}]},"documentation":{"id":9005,"nodeType":"StructuredDocumentation","src":"3892:211:33","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n `errorMessage` as a fallback revert reason when `target` reverts.\n _Available since v3.1._"},"id":9024,"implemented":true,"kind":"function","modifiers":[],"name":"functionCall","nameLocation":"4117:12:33","nodeType":"FunctionDefinition","parameters":{"id":9012,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9007,"mutability":"mutable","name":"target","nameLocation":"4147:6:33","nodeType":"VariableDeclaration","scope":9024,"src":"4139:14:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9006,"name":"address","nodeType":"ElementaryTypeName","src":"4139:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9009,"mutability":"mutable","name":"data","nameLocation":"4176:4:33","nodeType":"VariableDeclaration","scope":9024,"src":"4163:17:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9008,"name":"bytes","nodeType":"ElementaryTypeName","src":"4163:5:33","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":9011,"mutability":"mutable","name":"errorMessage","nameLocation":"4204:12:33","nodeType":"VariableDeclaration","scope":9024,"src":"4190:26:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":9010,"name":"string","nodeType":"ElementaryTypeName","src":"4190:6:33","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"4129:93:33"},"returnParameters":{"id":9015,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9014,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9024,"src":"4241:12:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9013,"name":"bytes","nodeType":"ElementaryTypeName","src":"4241:5:33","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4240:14:33"},"scope":9264,"src":"4108:223:33","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":9043,"nodeType":"Block","src":"4806:111:33","statements":[{"expression":{"arguments":[{"id":9037,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9027,"src":"4845:6:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9038,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9029,"src":"4853:4:33","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":9039,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9031,"src":"4859:5:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"416464726573733a206c6f772d6c6576656c2063616c6c20776974682076616c7565206661696c6564","id":9040,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4866:43:33","typeDescriptions":{"typeIdentifier":"t_stringliteral_88a4a0b5e975840320a0475d4027005235904fdb5ece94df156f3d717cb2dbfc","typeString":"literal_string \"Address: low-level call with value failed\""},"value":"Address: low-level call with value failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_88a4a0b5e975840320a0475d4027005235904fdb5ece94df156f3d717cb2dbfc","typeString":"literal_string \"Address: low-level call with value failed\""}],"id":9036,"name":"functionCallWithValue","nodeType":"Identifier","overloadedDeclarations":[9044,9088],"referencedDeclaration":9088,"src":"4823:21:33","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,uint256,string memory) returns (bytes memory)"}},"id":9041,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4823:87:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":9035,"id":9042,"nodeType":"Return","src":"4816:94:33"}]},"documentation":{"id":9025,"nodeType":"StructuredDocumentation","src":"4337:351:33","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but also transferring `value` wei to `target`.\n Requirements:\n - the calling contract must have an ETH balance of at least `value`.\n - the called Solidity function must be `payable`.\n _Available since v3.1._"},"id":9044,"implemented":true,"kind":"function","modifiers":[],"name":"functionCallWithValue","nameLocation":"4702:21:33","nodeType":"FunctionDefinition","parameters":{"id":9032,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9027,"mutability":"mutable","name":"target","nameLocation":"4732:6:33","nodeType":"VariableDeclaration","scope":9044,"src":"4724:14:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9026,"name":"address","nodeType":"ElementaryTypeName","src":"4724:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9029,"mutability":"mutable","name":"data","nameLocation":"4753:4:33","nodeType":"VariableDeclaration","scope":9044,"src":"4740:17:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9028,"name":"bytes","nodeType":"ElementaryTypeName","src":"4740:5:33","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":9031,"mutability":"mutable","name":"value","nameLocation":"4767:5:33","nodeType":"VariableDeclaration","scope":9044,"src":"4759:13:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9030,"name":"uint256","nodeType":"ElementaryTypeName","src":"4759:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4723:50:33"},"returnParameters":{"id":9035,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9034,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9044,"src":"4792:12:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9033,"name":"bytes","nodeType":"ElementaryTypeName","src":"4792:5:33","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4791:14:33"},"scope":9264,"src":"4693:224:33","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":9087,"nodeType":"Block","src":"5344:267:33","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9065,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":9061,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967268,"src":"5370:4:33","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$9264","typeString":"library Address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Address_$9264","typeString":"library Address"}],"id":9060,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5362:7:33","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9059,"name":"address","nodeType":"ElementaryTypeName","src":"5362:7:33","typeDescriptions":{}}},"id":9062,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5362:13:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":9063,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5376:7:33","memberName":"balance","nodeType":"MemberAccess","src":"5362:21:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":9064,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9051,"src":"5387:5:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5362:30:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c","id":9066,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5394:40:33","typeDescriptions":{"typeIdentifier":"t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c","typeString":"literal_string \"Address: insufficient balance for call\""},"value":"Address: insufficient balance for call"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c","typeString":"literal_string \"Address: insufficient balance for call\""}],"id":9058,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"5354:7:33","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":9067,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5354:81:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9068,"nodeType":"ExpressionStatement","src":"5354:81:33"},{"assignments":[9070,9072],"declarations":[{"constant":false,"id":9070,"mutability":"mutable","name":"success","nameLocation":"5451:7:33","nodeType":"VariableDeclaration","scope":9087,"src":"5446:12:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9069,"name":"bool","nodeType":"ElementaryTypeName","src":"5446:4:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":9072,"mutability":"mutable","name":"returndata","nameLocation":"5473:10:33","nodeType":"VariableDeclaration","scope":9087,"src":"5460:23:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9071,"name":"bytes","nodeType":"ElementaryTypeName","src":"5460:5:33","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":9079,"initialValue":{"arguments":[{"id":9077,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9049,"src":"5513:4:33","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":9073,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9047,"src":"5487:6:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":9074,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5494:4:33","memberName":"call","nodeType":"MemberAccess","src":"5487:11:33","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":9076,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":9075,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9051,"src":"5506:5:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"5487:25:33","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":9078,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5487:31:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"5445:73:33"},{"expression":{"arguments":[{"id":9081,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9047,"src":"5562:6:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9082,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9070,"src":"5570:7:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":9083,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9072,"src":"5579:10:33","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":9084,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9053,"src":"5591:12:33","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":9080,"name":"verifyCallResultFromTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9219,"src":"5535:26:33","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bool,bytes memory,string memory) view returns (bytes memory)"}},"id":9085,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5535:69:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":9057,"id":9086,"nodeType":"Return","src":"5528:76:33"}]},"documentation":{"id":9045,"nodeType":"StructuredDocumentation","src":"4923:237:33","text":" @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n with `errorMessage` as a fallback revert reason when `target` reverts.\n _Available since v3.1._"},"id":9088,"implemented":true,"kind":"function","modifiers":[],"name":"functionCallWithValue","nameLocation":"5174:21:33","nodeType":"FunctionDefinition","parameters":{"id":9054,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9047,"mutability":"mutable","name":"target","nameLocation":"5213:6:33","nodeType":"VariableDeclaration","scope":9088,"src":"5205:14:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9046,"name":"address","nodeType":"ElementaryTypeName","src":"5205:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9049,"mutability":"mutable","name":"data","nameLocation":"5242:4:33","nodeType":"VariableDeclaration","scope":9088,"src":"5229:17:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9048,"name":"bytes","nodeType":"ElementaryTypeName","src":"5229:5:33","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":9051,"mutability":"mutable","name":"value","nameLocation":"5264:5:33","nodeType":"VariableDeclaration","scope":9088,"src":"5256:13:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9050,"name":"uint256","nodeType":"ElementaryTypeName","src":"5256:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9053,"mutability":"mutable","name":"errorMessage","nameLocation":"5293:12:33","nodeType":"VariableDeclaration","scope":9088,"src":"5279:26:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":9052,"name":"string","nodeType":"ElementaryTypeName","src":"5279:6:33","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"5195:116:33"},"returnParameters":{"id":9057,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9056,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9088,"src":"5330:12:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9055,"name":"bytes","nodeType":"ElementaryTypeName","src":"5330:5:33","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5329:14:33"},"scope":9264,"src":"5165:446:33","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":9104,"nodeType":"Block","src":"5888:97:33","statements":[{"expression":{"arguments":[{"id":9099,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9091,"src":"5924:6:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9100,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9093,"src":"5932:4:33","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"416464726573733a206c6f772d6c6576656c207374617469632063616c6c206661696c6564","id":9101,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5938:39:33","typeDescriptions":{"typeIdentifier":"t_stringliteral_90ec82aa826a536a4cbfae44ecfa384680faa9a4b77344bce96aa761ad904df0","typeString":"literal_string \"Address: low-level static call failed\""},"value":"Address: low-level static call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_90ec82aa826a536a4cbfae44ecfa384680faa9a4b77344bce96aa761ad904df0","typeString":"literal_string \"Address: low-level static call failed\""}],"id":9098,"name":"functionStaticCall","nodeType":"Identifier","overloadedDeclarations":[9105,9134],"referencedDeclaration":9134,"src":"5905:18:33","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,string memory) view returns (bytes memory)"}},"id":9102,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5905:73:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":9097,"id":9103,"nodeType":"Return","src":"5898:80:33"}]},"documentation":{"id":9089,"nodeType":"StructuredDocumentation","src":"5617:166:33","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a static call.\n _Available since v3.3._"},"id":9105,"implemented":true,"kind":"function","modifiers":[],"name":"functionStaticCall","nameLocation":"5797:18:33","nodeType":"FunctionDefinition","parameters":{"id":9094,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9091,"mutability":"mutable","name":"target","nameLocation":"5824:6:33","nodeType":"VariableDeclaration","scope":9105,"src":"5816:14:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9090,"name":"address","nodeType":"ElementaryTypeName","src":"5816:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9093,"mutability":"mutable","name":"data","nameLocation":"5845:4:33","nodeType":"VariableDeclaration","scope":9105,"src":"5832:17:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9092,"name":"bytes","nodeType":"ElementaryTypeName","src":"5832:5:33","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5815:35:33"},"returnParameters":{"id":9097,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9096,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9105,"src":"5874:12:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9095,"name":"bytes","nodeType":"ElementaryTypeName","src":"5874:5:33","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5873:14:33"},"scope":9264,"src":"5788:197:33","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":9133,"nodeType":"Block","src":"6327:168:33","statements":[{"assignments":[9118,9120],"declarations":[{"constant":false,"id":9118,"mutability":"mutable","name":"success","nameLocation":"6343:7:33","nodeType":"VariableDeclaration","scope":9133,"src":"6338:12:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9117,"name":"bool","nodeType":"ElementaryTypeName","src":"6338:4:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":9120,"mutability":"mutable","name":"returndata","nameLocation":"6365:10:33","nodeType":"VariableDeclaration","scope":9133,"src":"6352:23:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9119,"name":"bytes","nodeType":"ElementaryTypeName","src":"6352:5:33","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":9125,"initialValue":{"arguments":[{"id":9123,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9110,"src":"6397:4:33","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":9121,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9108,"src":"6379:6:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":9122,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6386:10:33","memberName":"staticcall","nodeType":"MemberAccess","src":"6379:17:33","typeDescriptions":{"typeIdentifier":"t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) view returns (bool,bytes memory)"}},"id":9124,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6379:23:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"6337:65:33"},{"expression":{"arguments":[{"id":9127,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9108,"src":"6446:6:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9128,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9118,"src":"6454:7:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":9129,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9120,"src":"6463:10:33","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":9130,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9112,"src":"6475:12:33","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":9126,"name":"verifyCallResultFromTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9219,"src":"6419:26:33","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bool,bytes memory,string memory) view returns (bytes memory)"}},"id":9131,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6419:69:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":9116,"id":9132,"nodeType":"Return","src":"6412:76:33"}]},"documentation":{"id":9106,"nodeType":"StructuredDocumentation","src":"5991:173:33","text":" @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n but performing a static call.\n _Available since v3.3._"},"id":9134,"implemented":true,"kind":"function","modifiers":[],"name":"functionStaticCall","nameLocation":"6178:18:33","nodeType":"FunctionDefinition","parameters":{"id":9113,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9108,"mutability":"mutable","name":"target","nameLocation":"6214:6:33","nodeType":"VariableDeclaration","scope":9134,"src":"6206:14:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9107,"name":"address","nodeType":"ElementaryTypeName","src":"6206:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9110,"mutability":"mutable","name":"data","nameLocation":"6243:4:33","nodeType":"VariableDeclaration","scope":9134,"src":"6230:17:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9109,"name":"bytes","nodeType":"ElementaryTypeName","src":"6230:5:33","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":9112,"mutability":"mutable","name":"errorMessage","nameLocation":"6271:12:33","nodeType":"VariableDeclaration","scope":9134,"src":"6257:26:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":9111,"name":"string","nodeType":"ElementaryTypeName","src":"6257:6:33","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"6196:93:33"},"returnParameters":{"id":9116,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9115,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9134,"src":"6313:12:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9114,"name":"bytes","nodeType":"ElementaryTypeName","src":"6313:5:33","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6312:14:33"},"scope":9264,"src":"6169:326:33","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":9150,"nodeType":"Block","src":"6771:101:33","statements":[{"expression":{"arguments":[{"id":9145,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9137,"src":"6809:6:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9146,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9139,"src":"6817:4:33","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564","id":9147,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6823:41:33","typeDescriptions":{"typeIdentifier":"t_stringliteral_9fdcd12e4b726339b32a442b0a448365d5d85c96b2d2cff917b4f66c63110398","typeString":"literal_string \"Address: low-level delegate call failed\""},"value":"Address: low-level delegate call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_9fdcd12e4b726339b32a442b0a448365d5d85c96b2d2cff917b4f66c63110398","typeString":"literal_string \"Address: low-level delegate call failed\""}],"id":9144,"name":"functionDelegateCall","nodeType":"Identifier","overloadedDeclarations":[9151,9180],"referencedDeclaration":9180,"src":"6788:20:33","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,string memory) returns (bytes memory)"}},"id":9148,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6788:77:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":9143,"id":9149,"nodeType":"Return","src":"6781:84:33"}]},"documentation":{"id":9135,"nodeType":"StructuredDocumentation","src":"6501:168:33","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a delegate call.\n _Available since v3.4._"},"id":9151,"implemented":true,"kind":"function","modifiers":[],"name":"functionDelegateCall","nameLocation":"6683:20:33","nodeType":"FunctionDefinition","parameters":{"id":9140,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9137,"mutability":"mutable","name":"target","nameLocation":"6712:6:33","nodeType":"VariableDeclaration","scope":9151,"src":"6704:14:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9136,"name":"address","nodeType":"ElementaryTypeName","src":"6704:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9139,"mutability":"mutable","name":"data","nameLocation":"6733:4:33","nodeType":"VariableDeclaration","scope":9151,"src":"6720:17:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9138,"name":"bytes","nodeType":"ElementaryTypeName","src":"6720:5:33","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6703:35:33"},"returnParameters":{"id":9143,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9142,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9151,"src":"6757:12:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9141,"name":"bytes","nodeType":"ElementaryTypeName","src":"6757:5:33","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6756:14:33"},"scope":9264,"src":"6674:198:33","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":9179,"nodeType":"Block","src":"7213:170:33","statements":[{"assignments":[9164,9166],"declarations":[{"constant":false,"id":9164,"mutability":"mutable","name":"success","nameLocation":"7229:7:33","nodeType":"VariableDeclaration","scope":9179,"src":"7224:12:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9163,"name":"bool","nodeType":"ElementaryTypeName","src":"7224:4:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":9166,"mutability":"mutable","name":"returndata","nameLocation":"7251:10:33","nodeType":"VariableDeclaration","scope":9179,"src":"7238:23:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9165,"name":"bytes","nodeType":"ElementaryTypeName","src":"7238:5:33","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":9171,"initialValue":{"arguments":[{"id":9169,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9156,"src":"7285:4:33","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":9167,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9154,"src":"7265:6:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":9168,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7272:12:33","memberName":"delegatecall","nodeType":"MemberAccess","src":"7265:19:33","typeDescriptions":{"typeIdentifier":"t_function_baredelegatecall_nonpayable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) returns (bool,bytes memory)"}},"id":9170,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7265:25:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"7223:67:33"},{"expression":{"arguments":[{"id":9173,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9154,"src":"7334:6:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9174,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9164,"src":"7342:7:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":9175,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9166,"src":"7351:10:33","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":9176,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9158,"src":"7363:12:33","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":9172,"name":"verifyCallResultFromTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9219,"src":"7307:26:33","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bool,bytes memory,string memory) view returns (bytes memory)"}},"id":9177,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7307:69:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":9162,"id":9178,"nodeType":"Return","src":"7300:76:33"}]},"documentation":{"id":9152,"nodeType":"StructuredDocumentation","src":"6878:175:33","text":" @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n but performing a delegate call.\n _Available since v3.4._"},"id":9180,"implemented":true,"kind":"function","modifiers":[],"name":"functionDelegateCall","nameLocation":"7067:20:33","nodeType":"FunctionDefinition","parameters":{"id":9159,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9154,"mutability":"mutable","name":"target","nameLocation":"7105:6:33","nodeType":"VariableDeclaration","scope":9180,"src":"7097:14:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9153,"name":"address","nodeType":"ElementaryTypeName","src":"7097:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9156,"mutability":"mutable","name":"data","nameLocation":"7134:4:33","nodeType":"VariableDeclaration","scope":9180,"src":"7121:17:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9155,"name":"bytes","nodeType":"ElementaryTypeName","src":"7121:5:33","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":9158,"mutability":"mutable","name":"errorMessage","nameLocation":"7162:12:33","nodeType":"VariableDeclaration","scope":9180,"src":"7148:26:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":9157,"name":"string","nodeType":"ElementaryTypeName","src":"7148:6:33","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"7087:93:33"},"returnParameters":{"id":9162,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9161,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9180,"src":"7199:12:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9160,"name":"bytes","nodeType":"ElementaryTypeName","src":"7199:5:33","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7198:14:33"},"scope":9264,"src":"7058:325:33","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":9218,"nodeType":"Block","src":"7865:434:33","statements":[{"condition":{"id":9194,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9185,"src":"7879:7:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":9216,"nodeType":"Block","src":"8235:58:33","statements":[{"expression":{"arguments":[{"id":9212,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9187,"src":"8257:10:33","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":9213,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9189,"src":"8269:12:33","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":9211,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9263,"src":"8249:7:33","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (bytes memory,string memory) pure"}},"id":9214,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8249:33:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9215,"nodeType":"ExpressionStatement","src":"8249:33:33"}]},"id":9217,"nodeType":"IfStatement","src":"7875:418:33","trueBody":{"id":9210,"nodeType":"Block","src":"7888:341:33","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9198,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":9195,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9187,"src":"7906:10:33","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":9196,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7917:6:33","memberName":"length","nodeType":"MemberAccess","src":"7906:17:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":9197,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7927:1:33","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7906:22:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9207,"nodeType":"IfStatement","src":"7902:286:33","trueBody":{"id":9206,"nodeType":"Block","src":"7930:258:33","statements":[{"expression":{"arguments":[{"arguments":[{"id":9201,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9183,"src":"8132:6:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":9200,"name":"isContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8952,"src":"8121:10:33","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":9202,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8121:18:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374","id":9203,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8141:31:33","typeDescriptions":{"typeIdentifier":"t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad","typeString":"literal_string \"Address: call to non-contract\""},"value":"Address: call to non-contract"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad","typeString":"literal_string \"Address: call to non-contract\""}],"id":9199,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"8113:7:33","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":9204,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8113:60:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9205,"nodeType":"ExpressionStatement","src":"8113:60:33"}]}},{"expression":{"id":9208,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9187,"src":"8208:10:33","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":9193,"id":9209,"nodeType":"Return","src":"8201:17:33"}]}}]},"documentation":{"id":9181,"nodeType":"StructuredDocumentation","src":"7389:277:33","text":" @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\n the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\n _Available since v4.8._"},"id":9219,"implemented":true,"kind":"function","modifiers":[],"name":"verifyCallResultFromTarget","nameLocation":"7680:26:33","nodeType":"FunctionDefinition","parameters":{"id":9190,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9183,"mutability":"mutable","name":"target","nameLocation":"7724:6:33","nodeType":"VariableDeclaration","scope":9219,"src":"7716:14:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9182,"name":"address","nodeType":"ElementaryTypeName","src":"7716:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9185,"mutability":"mutable","name":"success","nameLocation":"7745:7:33","nodeType":"VariableDeclaration","scope":9219,"src":"7740:12:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9184,"name":"bool","nodeType":"ElementaryTypeName","src":"7740:4:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":9187,"mutability":"mutable","name":"returndata","nameLocation":"7775:10:33","nodeType":"VariableDeclaration","scope":9219,"src":"7762:23:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9186,"name":"bytes","nodeType":"ElementaryTypeName","src":"7762:5:33","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":9189,"mutability":"mutable","name":"errorMessage","nameLocation":"7809:12:33","nodeType":"VariableDeclaration","scope":9219,"src":"7795:26:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":9188,"name":"string","nodeType":"ElementaryTypeName","src":"7795:6:33","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"7706:121:33"},"returnParameters":{"id":9193,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9192,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9219,"src":"7851:12:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9191,"name":"bytes","nodeType":"ElementaryTypeName","src":"7851:5:33","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7850:14:33"},"scope":9264,"src":"7671:628:33","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":9242,"nodeType":"Block","src":"8680:135:33","statements":[{"condition":{"id":9231,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9222,"src":"8694:7:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":9240,"nodeType":"Block","src":"8751:58:33","statements":[{"expression":{"arguments":[{"id":9236,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9224,"src":"8773:10:33","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":9237,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9226,"src":"8785:12:33","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":9235,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9263,"src":"8765:7:33","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (bytes memory,string memory) pure"}},"id":9238,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8765:33:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9239,"nodeType":"ExpressionStatement","src":"8765:33:33"}]},"id":9241,"nodeType":"IfStatement","src":"8690:119:33","trueBody":{"id":9234,"nodeType":"Block","src":"8703:42:33","statements":[{"expression":{"id":9232,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9224,"src":"8724:10:33","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":9230,"id":9233,"nodeType":"Return","src":"8717:17:33"}]}}]},"documentation":{"id":9220,"nodeType":"StructuredDocumentation","src":"8305:210:33","text":" @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\n revert reason or using the provided one.\n _Available since v4.3._"},"id":9243,"implemented":true,"kind":"function","modifiers":[],"name":"verifyCallResult","nameLocation":"8529:16:33","nodeType":"FunctionDefinition","parameters":{"id":9227,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9222,"mutability":"mutable","name":"success","nameLocation":"8560:7:33","nodeType":"VariableDeclaration","scope":9243,"src":"8555:12:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9221,"name":"bool","nodeType":"ElementaryTypeName","src":"8555:4:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":9224,"mutability":"mutable","name":"returndata","nameLocation":"8590:10:33","nodeType":"VariableDeclaration","scope":9243,"src":"8577:23:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9223,"name":"bytes","nodeType":"ElementaryTypeName","src":"8577:5:33","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":9226,"mutability":"mutable","name":"errorMessage","nameLocation":"8624:12:33","nodeType":"VariableDeclaration","scope":9243,"src":"8610:26:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":9225,"name":"string","nodeType":"ElementaryTypeName","src":"8610:6:33","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"8545:97:33"},"returnParameters":{"id":9230,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9229,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9243,"src":"8666:12:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9228,"name":"bytes","nodeType":"ElementaryTypeName","src":"8666:5:33","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"8665:14:33"},"scope":9264,"src":"8520:295:33","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9262,"nodeType":"Block","src":"8904:457:33","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9253,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":9250,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9245,"src":"8980:10:33","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":9251,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8991:6:33","memberName":"length","nodeType":"MemberAccess","src":"8980:17:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":9252,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9000:1:33","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8980:21:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":9260,"nodeType":"Block","src":"9310:45:33","statements":[{"expression":{"arguments":[{"id":9257,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9247,"src":"9331:12:33","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":9256,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[4294967277,4294967277],"referencedDeclaration":4294967277,"src":"9324:6:33","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":9258,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9324:20:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9259,"nodeType":"ExpressionStatement","src":"9324:20:33"}]},"id":9261,"nodeType":"IfStatement","src":"8976:379:33","trueBody":{"id":9255,"nodeType":"Block","src":"9003:301:33","statements":[{"AST":{"nodeType":"YulBlock","src":"9161:133:33","statements":[{"nodeType":"YulVariableDeclaration","src":"9179:40:33","value":{"arguments":[{"name":"returndata","nodeType":"YulIdentifier","src":"9208:10:33"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"9202:5:33"},"nodeType":"YulFunctionCall","src":"9202:17:33"},"variables":[{"name":"returndata_size","nodeType":"YulTypedName","src":"9183:15:33","type":""}]},{"expression":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9247:2:33","type":"","value":"32"},{"name":"returndata","nodeType":"YulIdentifier","src":"9251:10:33"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9243:3:33"},"nodeType":"YulFunctionCall","src":"9243:19:33"},{"name":"returndata_size","nodeType":"YulIdentifier","src":"9264:15:33"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9236:6:33"},"nodeType":"YulFunctionCall","src":"9236:44:33"},"nodeType":"YulExpressionStatement","src":"9236:44:33"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"london","externalReferences":[{"declaration":9245,"isOffset":false,"isSlot":false,"src":"9208:10:33","valueSize":1},{"declaration":9245,"isOffset":false,"isSlot":false,"src":"9251:10:33","valueSize":1}],"id":9254,"nodeType":"InlineAssembly","src":"9152:142:33"}]}}]},"id":9263,"implemented":true,"kind":"function","modifiers":[],"name":"_revert","nameLocation":"8830:7:33","nodeType":"FunctionDefinition","parameters":{"id":9248,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9245,"mutability":"mutable","name":"returndata","nameLocation":"8851:10:33","nodeType":"VariableDeclaration","scope":9263,"src":"8838:23:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9244,"name":"bytes","nodeType":"ElementaryTypeName","src":"8838:5:33","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":9247,"mutability":"mutable","name":"errorMessage","nameLocation":"8877:12:33","nodeType":"VariableDeclaration","scope":9263,"src":"8863:26:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":9246,"name":"string","nodeType":"ElementaryTypeName","src":"8863:6:33","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"8837:53:33"},"returnParameters":{"id":9249,"nodeType":"ParameterList","parameters":[],"src":"8904:0:33"},"scope":9264,"src":"8821:540:33","stateMutability":"pure","virtual":false,"visibility":"private"}],"scope":9265,"src":"194:9169:33","usedErrors":[]}],"src":"101:9263:33"},"id":33},"@openzeppelin/contracts/utils/Context.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/Context.sol","exportedSymbols":{"Context":[9294]},"id":9295,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":9266,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"101:23:34"},{"abstract":true,"baseContracts":[],"canonicalName":"Context","contractDependencies":[],"contractKind":"contract","documentation":{"id":9267,"nodeType":"StructuredDocumentation","src":"126:496:34","text":" @dev Provides information about the current execution context, including the\n sender of the transaction and its data. While these are generally available\n via msg.sender and msg.data, they should not be accessed in such a direct\n manner, since when dealing with meta-transactions the account sending and\n paying for execution may not be the actual sender (as far as an application\n is concerned).\n This contract is only required for intermediate, library-like contracts."},"fullyImplemented":true,"id":9294,"linearizedBaseContracts":[9294],"name":"Context","nameLocation":"641:7:34","nodeType":"ContractDefinition","nodes":[{"body":{"id":9275,"nodeType":"Block","src":"717:34:34","statements":[{"expression":{"expression":{"id":9272,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967281,"src":"734:3:34","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":9273,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"738:6:34","memberName":"sender","nodeType":"MemberAccess","src":"734:10:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":9271,"id":9274,"nodeType":"Return","src":"727:17:34"}]},"id":9276,"implemented":true,"kind":"function","modifiers":[],"name":"_msgSender","nameLocation":"664:10:34","nodeType":"FunctionDefinition","parameters":{"id":9268,"nodeType":"ParameterList","parameters":[],"src":"674:2:34"},"returnParameters":{"id":9271,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9270,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9276,"src":"708:7:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9269,"name":"address","nodeType":"ElementaryTypeName","src":"708:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"707:9:34"},"scope":9294,"src":"655:96:34","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":9284,"nodeType":"Block","src":"824:32:34","statements":[{"expression":{"expression":{"id":9281,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967281,"src":"841:3:34","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":9282,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"845:4:34","memberName":"data","nodeType":"MemberAccess","src":"841:8:34","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"functionReturnParameters":9280,"id":9283,"nodeType":"Return","src":"834:15:34"}]},"id":9285,"implemented":true,"kind":"function","modifiers":[],"name":"_msgData","nameLocation":"766:8:34","nodeType":"FunctionDefinition","parameters":{"id":9277,"nodeType":"ParameterList","parameters":[],"src":"774:2:34"},"returnParameters":{"id":9280,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9279,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9285,"src":"808:14:34","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":9278,"name":"bytes","nodeType":"ElementaryTypeName","src":"808:5:34","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"807:16:34"},"scope":9294,"src":"757:99:34","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":9292,"nodeType":"Block","src":"934:25:34","statements":[{"expression":{"hexValue":"30","id":9290,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"951:1:34","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":9289,"id":9291,"nodeType":"Return","src":"944:8:34"}]},"id":9293,"implemented":true,"kind":"function","modifiers":[],"name":"_contextSuffixLength","nameLocation":"871:20:34","nodeType":"FunctionDefinition","parameters":{"id":9286,"nodeType":"ParameterList","parameters":[],"src":"891:2:34"},"returnParameters":{"id":9289,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9288,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9293,"src":"925:7:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9287,"name":"uint256","nodeType":"ElementaryTypeName","src":"925:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"924:9:34"},"scope":9294,"src":"862:97:34","stateMutability":"view","virtual":true,"visibility":"internal"}],"scope":9295,"src":"623:338:34","usedErrors":[]}],"src":"101:861:34"},"id":34},"@openzeppelin/contracts/utils/Counters.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/Counters.sol","exportedSymbols":{"Counters":[9368]},"id":9369,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":9296,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"87:23:35"},{"abstract":false,"baseContracts":[],"canonicalName":"Counters","contractDependencies":[],"contractKind":"library","documentation":{"id":9297,"nodeType":"StructuredDocumentation","src":"112:311:35","text":" @title Counters\n @author Matt Condon (@shrugs)\n @dev Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number\n of elements in a mapping, issuing ERC721 ids, or counting request ids.\n Include with `using Counters for Counters.Counter;`"},"fullyImplemented":true,"id":9368,"linearizedBaseContracts":[9368],"name":"Counters","nameLocation":"432:8:35","nodeType":"ContractDefinition","nodes":[{"canonicalName":"Counters.Counter","id":9300,"members":[{"constant":false,"id":9299,"mutability":"mutable","name":"_value","nameLocation":"794:6:35","nodeType":"VariableDeclaration","scope":9300,"src":"786:14:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9298,"name":"uint256","nodeType":"ElementaryTypeName","src":"786:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"Counter","nameLocation":"454:7:35","nodeType":"StructDefinition","scope":9368,"src":"447:374:35","visibility":"public"},{"body":{"id":9311,"nodeType":"Block","src":"901:38:35","statements":[{"expression":{"expression":{"id":9308,"name":"counter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9303,"src":"918:7:35","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$9300_storage_ptr","typeString":"struct Counters.Counter storage pointer"}},"id":9309,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"926:6:35","memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":9299,"src":"918:14:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9307,"id":9310,"nodeType":"Return","src":"911:21:35"}]},"id":9312,"implemented":true,"kind":"function","modifiers":[],"name":"current","nameLocation":"836:7:35","nodeType":"FunctionDefinition","parameters":{"id":9304,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9303,"mutability":"mutable","name":"counter","nameLocation":"860:7:35","nodeType":"VariableDeclaration","scope":9312,"src":"844:23:35","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$9300_storage_ptr","typeString":"struct Counters.Counter"},"typeName":{"id":9302,"nodeType":"UserDefinedTypeName","pathNode":{"id":9301,"name":"Counter","nameLocations":["844:7:35"],"nodeType":"IdentifierPath","referencedDeclaration":9300,"src":"844:7:35"},"referencedDeclaration":9300,"src":"844:7:35","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$9300_storage_ptr","typeString":"struct Counters.Counter"}},"visibility":"internal"}],"src":"843:25:35"},"returnParameters":{"id":9307,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9306,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9312,"src":"892:7:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9305,"name":"uint256","nodeType":"ElementaryTypeName","src":"892:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"891:9:35"},"scope":9368,"src":"827:112:35","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":9325,"nodeType":"Block","src":"998:70:35","statements":[{"id":9324,"nodeType":"UncheckedBlock","src":"1008:54:35","statements":[{"expression":{"id":9322,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":9318,"name":"counter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9315,"src":"1032:7:35","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$9300_storage_ptr","typeString":"struct Counters.Counter storage pointer"}},"id":9320,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1040:6:35","memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":9299,"src":"1032:14:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":9321,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1050:1:35","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1032:19:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9323,"nodeType":"ExpressionStatement","src":"1032:19:35"}]}]},"id":9326,"implemented":true,"kind":"function","modifiers":[],"name":"increment","nameLocation":"954:9:35","nodeType":"FunctionDefinition","parameters":{"id":9316,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9315,"mutability":"mutable","name":"counter","nameLocation":"980:7:35","nodeType":"VariableDeclaration","scope":9326,"src":"964:23:35","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$9300_storage_ptr","typeString":"struct Counters.Counter"},"typeName":{"id":9314,"nodeType":"UserDefinedTypeName","pathNode":{"id":9313,"name":"Counter","nameLocations":["964:7:35"],"nodeType":"IdentifierPath","referencedDeclaration":9300,"src":"964:7:35"},"referencedDeclaration":9300,"src":"964:7:35","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$9300_storage_ptr","typeString":"struct Counters.Counter"}},"visibility":"internal"}],"src":"963:25:35"},"returnParameters":{"id":9317,"nodeType":"ParameterList","parameters":[],"src":"998:0:35"},"scope":9368,"src":"945:123:35","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":9353,"nodeType":"Block","src":"1127:176:35","statements":[{"assignments":[9333],"declarations":[{"constant":false,"id":9333,"mutability":"mutable","name":"value","nameLocation":"1145:5:35","nodeType":"VariableDeclaration","scope":9353,"src":"1137:13:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9332,"name":"uint256","nodeType":"ElementaryTypeName","src":"1137:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9336,"initialValue":{"expression":{"id":9334,"name":"counter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9329,"src":"1153:7:35","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$9300_storage_ptr","typeString":"struct Counters.Counter storage pointer"}},"id":9335,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1161:6:35","memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":9299,"src":"1153:14:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1137:30:35"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9340,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9338,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9333,"src":"1185:5:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":9339,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1193:1:35","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1185:9:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"436f756e7465723a2064656372656d656e74206f766572666c6f77","id":9341,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1196:29:35","typeDescriptions":{"typeIdentifier":"t_stringliteral_1dfd0d5389474d871b8e8929aab9d4def041f55f90f625754fb5f9a9ba08af6f","typeString":"literal_string \"Counter: decrement overflow\""},"value":"Counter: decrement overflow"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_1dfd0d5389474d871b8e8929aab9d4def041f55f90f625754fb5f9a9ba08af6f","typeString":"literal_string \"Counter: decrement overflow\""}],"id":9337,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"1177:7:35","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":9342,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1177:49:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9343,"nodeType":"ExpressionStatement","src":"1177:49:35"},{"id":9352,"nodeType":"UncheckedBlock","src":"1236:61:35","statements":[{"expression":{"id":9350,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":9344,"name":"counter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9329,"src":"1260:7:35","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$9300_storage_ptr","typeString":"struct Counters.Counter storage pointer"}},"id":9346,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1268:6:35","memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":9299,"src":"1260:14:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9349,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9347,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9333,"src":"1277:5:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":9348,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1285:1:35","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1277:9:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1260:26:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9351,"nodeType":"ExpressionStatement","src":"1260:26:35"}]}]},"id":9354,"implemented":true,"kind":"function","modifiers":[],"name":"decrement","nameLocation":"1083:9:35","nodeType":"FunctionDefinition","parameters":{"id":9330,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9329,"mutability":"mutable","name":"counter","nameLocation":"1109:7:35","nodeType":"VariableDeclaration","scope":9354,"src":"1093:23:35","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$9300_storage_ptr","typeString":"struct Counters.Counter"},"typeName":{"id":9328,"nodeType":"UserDefinedTypeName","pathNode":{"id":9327,"name":"Counter","nameLocations":["1093:7:35"],"nodeType":"IdentifierPath","referencedDeclaration":9300,"src":"1093:7:35"},"referencedDeclaration":9300,"src":"1093:7:35","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$9300_storage_ptr","typeString":"struct Counters.Counter"}},"visibility":"internal"}],"src":"1092:25:35"},"returnParameters":{"id":9331,"nodeType":"ParameterList","parameters":[],"src":"1127:0:35"},"scope":9368,"src":"1074:229:35","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":9366,"nodeType":"Block","src":"1358:35:35","statements":[{"expression":{"id":9364,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":9360,"name":"counter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9357,"src":"1368:7:35","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$9300_storage_ptr","typeString":"struct Counters.Counter storage pointer"}},"id":9362,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1376:6:35","memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":9299,"src":"1368:14:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":9363,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1385:1:35","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1368:18:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9365,"nodeType":"ExpressionStatement","src":"1368:18:35"}]},"id":9367,"implemented":true,"kind":"function","modifiers":[],"name":"reset","nameLocation":"1318:5:35","nodeType":"FunctionDefinition","parameters":{"id":9358,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9357,"mutability":"mutable","name":"counter","nameLocation":"1340:7:35","nodeType":"VariableDeclaration","scope":9367,"src":"1324:23:35","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$9300_storage_ptr","typeString":"struct Counters.Counter"},"typeName":{"id":9356,"nodeType":"UserDefinedTypeName","pathNode":{"id":9355,"name":"Counter","nameLocations":["1324:7:35"],"nodeType":"IdentifierPath","referencedDeclaration":9300,"src":"1324:7:35"},"referencedDeclaration":9300,"src":"1324:7:35","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$9300_storage_ptr","typeString":"struct Counters.Counter"}},"visibility":"internal"}],"src":"1323:25:35"},"returnParameters":{"id":9359,"nodeType":"ParameterList","parameters":[],"src":"1358:0:35"},"scope":9368,"src":"1309:84:35","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":9369,"src":"424:971:35","usedErrors":[]}],"src":"87:1309:35"},"id":35},"@openzeppelin/contracts/utils/StorageSlot.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/StorageSlot.sol","exportedSymbols":{"StorageSlot":[9478]},"id":9479,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":9370,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"193:23:36"},{"abstract":false,"baseContracts":[],"canonicalName":"StorageSlot","contractDependencies":[],"contractKind":"library","documentation":{"id":9371,"nodeType":"StructuredDocumentation","src":"218:1201:36","text":" @dev Library for reading and writing primitive types to specific storage slots.\n Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\n This library helps with reading and writing to such slots without the need for inline assembly.\n The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\n Example usage to set ERC1967 implementation slot:\n ```solidity\n contract ERC1967 {\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n function _getImplementation() internal view returns (address) {\n return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\n }\n function _setImplementation(address newImplementation) internal {\n require(Address.isContract(newImplementation), \"ERC1967: new implementation is not a contract\");\n StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\n }\n }\n ```\n _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._\n _Available since v4.9 for `string`, `bytes`._"},"fullyImplemented":true,"id":9478,"linearizedBaseContracts":[9478],"name":"StorageSlot","nameLocation":"1428:11:36","nodeType":"ContractDefinition","nodes":[{"canonicalName":"StorageSlot.AddressSlot","id":9374,"members":[{"constant":false,"id":9373,"mutability":"mutable","name":"value","nameLocation":"1483:5:36","nodeType":"VariableDeclaration","scope":9374,"src":"1475:13:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9372,"name":"address","nodeType":"ElementaryTypeName","src":"1475:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"name":"AddressSlot","nameLocation":"1453:11:36","nodeType":"StructDefinition","scope":9478,"src":"1446:49:36","visibility":"public"},{"canonicalName":"StorageSlot.BooleanSlot","id":9377,"members":[{"constant":false,"id":9376,"mutability":"mutable","name":"value","nameLocation":"1535:5:36","nodeType":"VariableDeclaration","scope":9377,"src":"1530:10:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9375,"name":"bool","nodeType":"ElementaryTypeName","src":"1530:4:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"name":"BooleanSlot","nameLocation":"1508:11:36","nodeType":"StructDefinition","scope":9478,"src":"1501:46:36","visibility":"public"},{"canonicalName":"StorageSlot.Bytes32Slot","id":9380,"members":[{"constant":false,"id":9379,"mutability":"mutable","name":"value","nameLocation":"1590:5:36","nodeType":"VariableDeclaration","scope":9380,"src":"1582:13:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":9378,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1582:7:36","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"name":"Bytes32Slot","nameLocation":"1560:11:36","nodeType":"StructDefinition","scope":9478,"src":"1553:49:36","visibility":"public"},{"canonicalName":"StorageSlot.Uint256Slot","id":9383,"members":[{"constant":false,"id":9382,"mutability":"mutable","name":"value","nameLocation":"1645:5:36","nodeType":"VariableDeclaration","scope":9383,"src":"1637:13:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9381,"name":"uint256","nodeType":"ElementaryTypeName","src":"1637:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"Uint256Slot","nameLocation":"1615:11:36","nodeType":"StructDefinition","scope":9478,"src":"1608:49:36","visibility":"public"},{"canonicalName":"StorageSlot.StringSlot","id":9386,"members":[{"constant":false,"id":9385,"mutability":"mutable","name":"value","nameLocation":"1698:5:36","nodeType":"VariableDeclaration","scope":9386,"src":"1691:12:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":9384,"name":"string","nodeType":"ElementaryTypeName","src":"1691:6:36","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"name":"StringSlot","nameLocation":"1670:10:36","nodeType":"StructDefinition","scope":9478,"src":"1663:47:36","visibility":"public"},{"canonicalName":"StorageSlot.BytesSlot","id":9389,"members":[{"constant":false,"id":9388,"mutability":"mutable","name":"value","nameLocation":"1749:5:36","nodeType":"VariableDeclaration","scope":9389,"src":"1743:11:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":9387,"name":"bytes","nodeType":"ElementaryTypeName","src":"1743:5:36","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"name":"BytesSlot","nameLocation":"1723:9:36","nodeType":"StructDefinition","scope":9478,"src":"1716:45:36","visibility":"public"},{"body":{"id":9399,"nodeType":"Block","src":"1943:106:36","statements":[{"AST":{"nodeType":"YulBlock","src":"2005:38:36","statements":[{"nodeType":"YulAssignment","src":"2019:14:36","value":{"name":"slot","nodeType":"YulIdentifier","src":"2029:4:36"},"variableNames":[{"name":"r.slot","nodeType":"YulIdentifier","src":"2019:6:36"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"london","externalReferences":[{"declaration":9396,"isOffset":false,"isSlot":true,"src":"2019:6:36","suffix":"slot","valueSize":1},{"declaration":9392,"isOffset":false,"isSlot":false,"src":"2029:4:36","valueSize":1}],"id":9398,"nodeType":"InlineAssembly","src":"1996:47:36"}]},"documentation":{"id":9390,"nodeType":"StructuredDocumentation","src":"1767:87:36","text":" @dev Returns an `AddressSlot` with member `value` located at `slot`."},"id":9400,"implemented":true,"kind":"function","modifiers":[],"name":"getAddressSlot","nameLocation":"1868:14:36","nodeType":"FunctionDefinition","parameters":{"id":9393,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9392,"mutability":"mutable","name":"slot","nameLocation":"1891:4:36","nodeType":"VariableDeclaration","scope":9400,"src":"1883:12:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":9391,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1883:7:36","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1882:14:36"},"returnParameters":{"id":9397,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9396,"mutability":"mutable","name":"r","nameLocation":"1940:1:36","nodeType":"VariableDeclaration","scope":9400,"src":"1920:21:36","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$9374_storage_ptr","typeString":"struct StorageSlot.AddressSlot"},"typeName":{"id":9395,"nodeType":"UserDefinedTypeName","pathNode":{"id":9394,"name":"AddressSlot","nameLocations":["1920:11:36"],"nodeType":"IdentifierPath","referencedDeclaration":9374,"src":"1920:11:36"},"referencedDeclaration":9374,"src":"1920:11:36","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$9374_storage_ptr","typeString":"struct StorageSlot.AddressSlot"}},"visibility":"internal"}],"src":"1919:23:36"},"scope":9478,"src":"1859:190:36","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9410,"nodeType":"Block","src":"2231:106:36","statements":[{"AST":{"nodeType":"YulBlock","src":"2293:38:36","statements":[{"nodeType":"YulAssignment","src":"2307:14:36","value":{"name":"slot","nodeType":"YulIdentifier","src":"2317:4:36"},"variableNames":[{"name":"r.slot","nodeType":"YulIdentifier","src":"2307:6:36"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"london","externalReferences":[{"declaration":9407,"isOffset":false,"isSlot":true,"src":"2307:6:36","suffix":"slot","valueSize":1},{"declaration":9403,"isOffset":false,"isSlot":false,"src":"2317:4:36","valueSize":1}],"id":9409,"nodeType":"InlineAssembly","src":"2284:47:36"}]},"documentation":{"id":9401,"nodeType":"StructuredDocumentation","src":"2055:87:36","text":" @dev Returns an `BooleanSlot` with member `value` located at `slot`."},"id":9411,"implemented":true,"kind":"function","modifiers":[],"name":"getBooleanSlot","nameLocation":"2156:14:36","nodeType":"FunctionDefinition","parameters":{"id":9404,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9403,"mutability":"mutable","name":"slot","nameLocation":"2179:4:36","nodeType":"VariableDeclaration","scope":9411,"src":"2171:12:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":9402,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2171:7:36","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2170:14:36"},"returnParameters":{"id":9408,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9407,"mutability":"mutable","name":"r","nameLocation":"2228:1:36","nodeType":"VariableDeclaration","scope":9411,"src":"2208:21:36","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_BooleanSlot_$9377_storage_ptr","typeString":"struct StorageSlot.BooleanSlot"},"typeName":{"id":9406,"nodeType":"UserDefinedTypeName","pathNode":{"id":9405,"name":"BooleanSlot","nameLocations":["2208:11:36"],"nodeType":"IdentifierPath","referencedDeclaration":9377,"src":"2208:11:36"},"referencedDeclaration":9377,"src":"2208:11:36","typeDescriptions":{"typeIdentifier":"t_struct$_BooleanSlot_$9377_storage_ptr","typeString":"struct StorageSlot.BooleanSlot"}},"visibility":"internal"}],"src":"2207:23:36"},"scope":9478,"src":"2147:190:36","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9421,"nodeType":"Block","src":"2519:106:36","statements":[{"AST":{"nodeType":"YulBlock","src":"2581:38:36","statements":[{"nodeType":"YulAssignment","src":"2595:14:36","value":{"name":"slot","nodeType":"YulIdentifier","src":"2605:4:36"},"variableNames":[{"name":"r.slot","nodeType":"YulIdentifier","src":"2595:6:36"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"london","externalReferences":[{"declaration":9418,"isOffset":false,"isSlot":true,"src":"2595:6:36","suffix":"slot","valueSize":1},{"declaration":9414,"isOffset":false,"isSlot":false,"src":"2605:4:36","valueSize":1}],"id":9420,"nodeType":"InlineAssembly","src":"2572:47:36"}]},"documentation":{"id":9412,"nodeType":"StructuredDocumentation","src":"2343:87:36","text":" @dev Returns an `Bytes32Slot` with member `value` located at `slot`."},"id":9422,"implemented":true,"kind":"function","modifiers":[],"name":"getBytes32Slot","nameLocation":"2444:14:36","nodeType":"FunctionDefinition","parameters":{"id":9415,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9414,"mutability":"mutable","name":"slot","nameLocation":"2467:4:36","nodeType":"VariableDeclaration","scope":9422,"src":"2459:12:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":9413,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2459:7:36","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2458:14:36"},"returnParameters":{"id":9419,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9418,"mutability":"mutable","name":"r","nameLocation":"2516:1:36","nodeType":"VariableDeclaration","scope":9422,"src":"2496:21:36","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Slot_$9380_storage_ptr","typeString":"struct StorageSlot.Bytes32Slot"},"typeName":{"id":9417,"nodeType":"UserDefinedTypeName","pathNode":{"id":9416,"name":"Bytes32Slot","nameLocations":["2496:11:36"],"nodeType":"IdentifierPath","referencedDeclaration":9380,"src":"2496:11:36"},"referencedDeclaration":9380,"src":"2496:11:36","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Slot_$9380_storage_ptr","typeString":"struct StorageSlot.Bytes32Slot"}},"visibility":"internal"}],"src":"2495:23:36"},"scope":9478,"src":"2435:190:36","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9432,"nodeType":"Block","src":"2807:106:36","statements":[{"AST":{"nodeType":"YulBlock","src":"2869:38:36","statements":[{"nodeType":"YulAssignment","src":"2883:14:36","value":{"name":"slot","nodeType":"YulIdentifier","src":"2893:4:36"},"variableNames":[{"name":"r.slot","nodeType":"YulIdentifier","src":"2883:6:36"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"london","externalReferences":[{"declaration":9429,"isOffset":false,"isSlot":true,"src":"2883:6:36","suffix":"slot","valueSize":1},{"declaration":9425,"isOffset":false,"isSlot":false,"src":"2893:4:36","valueSize":1}],"id":9431,"nodeType":"InlineAssembly","src":"2860:47:36"}]},"documentation":{"id":9423,"nodeType":"StructuredDocumentation","src":"2631:87:36","text":" @dev Returns an `Uint256Slot` with member `value` located at `slot`."},"id":9433,"implemented":true,"kind":"function","modifiers":[],"name":"getUint256Slot","nameLocation":"2732:14:36","nodeType":"FunctionDefinition","parameters":{"id":9426,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9425,"mutability":"mutable","name":"slot","nameLocation":"2755:4:36","nodeType":"VariableDeclaration","scope":9433,"src":"2747:12:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":9424,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2747:7:36","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2746:14:36"},"returnParameters":{"id":9430,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9429,"mutability":"mutable","name":"r","nameLocation":"2804:1:36","nodeType":"VariableDeclaration","scope":9433,"src":"2784:21:36","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Uint256Slot_$9383_storage_ptr","typeString":"struct StorageSlot.Uint256Slot"},"typeName":{"id":9428,"nodeType":"UserDefinedTypeName","pathNode":{"id":9427,"name":"Uint256Slot","nameLocations":["2784:11:36"],"nodeType":"IdentifierPath","referencedDeclaration":9383,"src":"2784:11:36"},"referencedDeclaration":9383,"src":"2784:11:36","typeDescriptions":{"typeIdentifier":"t_struct$_Uint256Slot_$9383_storage_ptr","typeString":"struct StorageSlot.Uint256Slot"}},"visibility":"internal"}],"src":"2783:23:36"},"scope":9478,"src":"2723:190:36","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9443,"nodeType":"Block","src":"3092:106:36","statements":[{"AST":{"nodeType":"YulBlock","src":"3154:38:36","statements":[{"nodeType":"YulAssignment","src":"3168:14:36","value":{"name":"slot","nodeType":"YulIdentifier","src":"3178:4:36"},"variableNames":[{"name":"r.slot","nodeType":"YulIdentifier","src":"3168:6:36"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"london","externalReferences":[{"declaration":9440,"isOffset":false,"isSlot":true,"src":"3168:6:36","suffix":"slot","valueSize":1},{"declaration":9436,"isOffset":false,"isSlot":false,"src":"3178:4:36","valueSize":1}],"id":9442,"nodeType":"InlineAssembly","src":"3145:47:36"}]},"documentation":{"id":9434,"nodeType":"StructuredDocumentation","src":"2919:86:36","text":" @dev Returns an `StringSlot` with member `value` located at `slot`."},"id":9444,"implemented":true,"kind":"function","modifiers":[],"name":"getStringSlot","nameLocation":"3019:13:36","nodeType":"FunctionDefinition","parameters":{"id":9437,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9436,"mutability":"mutable","name":"slot","nameLocation":"3041:4:36","nodeType":"VariableDeclaration","scope":9444,"src":"3033:12:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":9435,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3033:7:36","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3032:14:36"},"returnParameters":{"id":9441,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9440,"mutability":"mutable","name":"r","nameLocation":"3089:1:36","nodeType":"VariableDeclaration","scope":9444,"src":"3070:20:36","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_StringSlot_$9386_storage_ptr","typeString":"struct StorageSlot.StringSlot"},"typeName":{"id":9439,"nodeType":"UserDefinedTypeName","pathNode":{"id":9438,"name":"StringSlot","nameLocations":["3070:10:36"],"nodeType":"IdentifierPath","referencedDeclaration":9386,"src":"3070:10:36"},"referencedDeclaration":9386,"src":"3070:10:36","typeDescriptions":{"typeIdentifier":"t_struct$_StringSlot_$9386_storage_ptr","typeString":"struct StorageSlot.StringSlot"}},"visibility":"internal"}],"src":"3069:22:36"},"scope":9478,"src":"3010:188:36","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9454,"nodeType":"Block","src":"3400:112:36","statements":[{"AST":{"nodeType":"YulBlock","src":"3462:44:36","statements":[{"nodeType":"YulAssignment","src":"3476:20:36","value":{"name":"store.slot","nodeType":"YulIdentifier","src":"3486:10:36"},"variableNames":[{"name":"r.slot","nodeType":"YulIdentifier","src":"3476:6:36"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"london","externalReferences":[{"declaration":9451,"isOffset":false,"isSlot":true,"src":"3476:6:36","suffix":"slot","valueSize":1},{"declaration":9447,"isOffset":false,"isSlot":true,"src":"3486:10:36","suffix":"slot","valueSize":1}],"id":9453,"nodeType":"InlineAssembly","src":"3453:53:36"}]},"documentation":{"id":9445,"nodeType":"StructuredDocumentation","src":"3204:101:36","text":" @dev Returns an `StringSlot` representation of the string storage pointer `store`."},"id":9455,"implemented":true,"kind":"function","modifiers":[],"name":"getStringSlot","nameLocation":"3319:13:36","nodeType":"FunctionDefinition","parameters":{"id":9448,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9447,"mutability":"mutable","name":"store","nameLocation":"3348:5:36","nodeType":"VariableDeclaration","scope":9455,"src":"3333:20:36","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":9446,"name":"string","nodeType":"ElementaryTypeName","src":"3333:6:36","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3332:22:36"},"returnParameters":{"id":9452,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9451,"mutability":"mutable","name":"r","nameLocation":"3397:1:36","nodeType":"VariableDeclaration","scope":9455,"src":"3378:20:36","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_StringSlot_$9386_storage_ptr","typeString":"struct StorageSlot.StringSlot"},"typeName":{"id":9450,"nodeType":"UserDefinedTypeName","pathNode":{"id":9449,"name":"StringSlot","nameLocations":["3378:10:36"],"nodeType":"IdentifierPath","referencedDeclaration":9386,"src":"3378:10:36"},"referencedDeclaration":9386,"src":"3378:10:36","typeDescriptions":{"typeIdentifier":"t_struct$_StringSlot_$9386_storage_ptr","typeString":"struct StorageSlot.StringSlot"}},"visibility":"internal"}],"src":"3377:22:36"},"scope":9478,"src":"3310:202:36","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9465,"nodeType":"Block","src":"3688:106:36","statements":[{"AST":{"nodeType":"YulBlock","src":"3750:38:36","statements":[{"nodeType":"YulAssignment","src":"3764:14:36","value":{"name":"slot","nodeType":"YulIdentifier","src":"3774:4:36"},"variableNames":[{"name":"r.slot","nodeType":"YulIdentifier","src":"3764:6:36"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"london","externalReferences":[{"declaration":9462,"isOffset":false,"isSlot":true,"src":"3764:6:36","suffix":"slot","valueSize":1},{"declaration":9458,"isOffset":false,"isSlot":false,"src":"3774:4:36","valueSize":1}],"id":9464,"nodeType":"InlineAssembly","src":"3741:47:36"}]},"documentation":{"id":9456,"nodeType":"StructuredDocumentation","src":"3518:85:36","text":" @dev Returns an `BytesSlot` with member `value` located at `slot`."},"id":9466,"implemented":true,"kind":"function","modifiers":[],"name":"getBytesSlot","nameLocation":"3617:12:36","nodeType":"FunctionDefinition","parameters":{"id":9459,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9458,"mutability":"mutable","name":"slot","nameLocation":"3638:4:36","nodeType":"VariableDeclaration","scope":9466,"src":"3630:12:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":9457,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3630:7:36","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3629:14:36"},"returnParameters":{"id":9463,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9462,"mutability":"mutable","name":"r","nameLocation":"3685:1:36","nodeType":"VariableDeclaration","scope":9466,"src":"3667:19:36","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$9389_storage_ptr","typeString":"struct StorageSlot.BytesSlot"},"typeName":{"id":9461,"nodeType":"UserDefinedTypeName","pathNode":{"id":9460,"name":"BytesSlot","nameLocations":["3667:9:36"],"nodeType":"IdentifierPath","referencedDeclaration":9389,"src":"3667:9:36"},"referencedDeclaration":9389,"src":"3667:9:36","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$9389_storage_ptr","typeString":"struct StorageSlot.BytesSlot"}},"visibility":"internal"}],"src":"3666:21:36"},"scope":9478,"src":"3608:186:36","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9476,"nodeType":"Block","src":"3991:112:36","statements":[{"AST":{"nodeType":"YulBlock","src":"4053:44:36","statements":[{"nodeType":"YulAssignment","src":"4067:20:36","value":{"name":"store.slot","nodeType":"YulIdentifier","src":"4077:10:36"},"variableNames":[{"name":"r.slot","nodeType":"YulIdentifier","src":"4067:6:36"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"london","externalReferences":[{"declaration":9473,"isOffset":false,"isSlot":true,"src":"4067:6:36","suffix":"slot","valueSize":1},{"declaration":9469,"isOffset":false,"isSlot":true,"src":"4077:10:36","suffix":"slot","valueSize":1}],"id":9475,"nodeType":"InlineAssembly","src":"4044:53:36"}]},"documentation":{"id":9467,"nodeType":"StructuredDocumentation","src":"3800:99:36","text":" @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`."},"id":9477,"implemented":true,"kind":"function","modifiers":[],"name":"getBytesSlot","nameLocation":"3913:12:36","nodeType":"FunctionDefinition","parameters":{"id":9470,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9469,"mutability":"mutable","name":"store","nameLocation":"3940:5:36","nodeType":"VariableDeclaration","scope":9477,"src":"3926:19:36","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":9468,"name":"bytes","nodeType":"ElementaryTypeName","src":"3926:5:36","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3925:21:36"},"returnParameters":{"id":9474,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9473,"mutability":"mutable","name":"r","nameLocation":"3988:1:36","nodeType":"VariableDeclaration","scope":9477,"src":"3970:19:36","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$9389_storage_ptr","typeString":"struct StorageSlot.BytesSlot"},"typeName":{"id":9472,"nodeType":"UserDefinedTypeName","pathNode":{"id":9471,"name":"BytesSlot","nameLocations":["3970:9:36"],"nodeType":"IdentifierPath","referencedDeclaration":9389,"src":"3970:9:36"},"referencedDeclaration":9389,"src":"3970:9:36","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$9389_storage_ptr","typeString":"struct StorageSlot.BytesSlot"}},"visibility":"internal"}],"src":"3969:21:36"},"scope":9478,"src":"3904:199:36","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":9479,"src":"1420:2685:36","usedErrors":[]}],"src":"193:3913:36"},"id":36},"@openzeppelin/contracts/utils/Strings.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/Strings.sol","exportedSymbols":{"Math":[10609],"SignedMath":[10714],"Strings":[9707]},"id":9708,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":9480,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"101:23:37"},{"absolutePath":"@openzeppelin/contracts/utils/math/Math.sol","file":"./math/Math.sol","id":9481,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":9708,"sourceUnit":10610,"src":"126:25:37","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/math/SignedMath.sol","file":"./math/SignedMath.sol","id":9482,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":9708,"sourceUnit":10715,"src":"152:31:37","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"Strings","contractDependencies":[],"contractKind":"library","documentation":{"id":9483,"nodeType":"StructuredDocumentation","src":"185:34:37","text":" @dev String operations."},"fullyImplemented":true,"id":9707,"linearizedBaseContracts":[9707],"name":"Strings","nameLocation":"228:7:37","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":9486,"mutability":"constant","name":"_SYMBOLS","nameLocation":"267:8:37","nodeType":"VariableDeclaration","scope":9707,"src":"242:54:37","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"},"typeName":{"id":9484,"name":"bytes16","nodeType":"ElementaryTypeName","src":"242:7:37","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"value":{"hexValue":"30313233343536373839616263646566","id":9485,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"278:18:37","typeDescriptions":{"typeIdentifier":"t_stringliteral_cb29997ed99ead0db59ce4d12b7d3723198c827273e5796737c926d78019c39f","typeString":"literal_string \"0123456789abcdef\""},"value":"0123456789abcdef"},"visibility":"private"},{"constant":true,"id":9489,"mutability":"constant","name":"_ADDRESS_LENGTH","nameLocation":"325:15:37","nodeType":"VariableDeclaration","scope":9707,"src":"302:43:37","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":9487,"name":"uint8","nodeType":"ElementaryTypeName","src":"302:5:37","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"3230","id":9488,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"343:2:37","typeDescriptions":{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"},"value":"20"},"visibility":"private"},{"body":{"id":9536,"nodeType":"Block","src":"518:625:37","statements":[{"id":9535,"nodeType":"UncheckedBlock","src":"528:609:37","statements":[{"assignments":[9498],"declarations":[{"constant":false,"id":9498,"mutability":"mutable","name":"length","nameLocation":"560:6:37","nodeType":"VariableDeclaration","scope":9535,"src":"552:14:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9497,"name":"uint256","nodeType":"ElementaryTypeName","src":"552:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9505,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9504,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":9501,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9492,"src":"580:5:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":9499,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10609,"src":"569:4:37","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$10609_$","typeString":"type(library Math)"}},"id":9500,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"574:5:37","memberName":"log10","nodeType":"MemberAccess","referencedDeclaration":10446,"src":"569:10:37","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":9502,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"569:17:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":9503,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"589:1:37","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"569:21:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"552:38:37"},{"assignments":[9507],"declarations":[{"constant":false,"id":9507,"mutability":"mutable","name":"buffer","nameLocation":"618:6:37","nodeType":"VariableDeclaration","scope":9535,"src":"604:20:37","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":9506,"name":"string","nodeType":"ElementaryTypeName","src":"604:6:37","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":9512,"initialValue":{"arguments":[{"id":9510,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9498,"src":"638:6:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9509,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"627:10:37","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"},"typeName":{"id":9508,"name":"string","nodeType":"ElementaryTypeName","src":"631:6:37","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}}},"id":9511,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"627:18:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"604:41:37"},{"assignments":[9514],"declarations":[{"constant":false,"id":9514,"mutability":"mutable","name":"ptr","nameLocation":"667:3:37","nodeType":"VariableDeclaration","scope":9535,"src":"659:11:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9513,"name":"uint256","nodeType":"ElementaryTypeName","src":"659:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9515,"nodeType":"VariableDeclarationStatement","src":"659:11:37"},{"AST":{"nodeType":"YulBlock","src":"740:67:37","statements":[{"nodeType":"YulAssignment","src":"758:35:37","value":{"arguments":[{"name":"buffer","nodeType":"YulIdentifier","src":"769:6:37"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"781:2:37","type":"","value":"32"},{"name":"length","nodeType":"YulIdentifier","src":"785:6:37"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"777:3:37"},"nodeType":"YulFunctionCall","src":"777:15:37"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"765:3:37"},"nodeType":"YulFunctionCall","src":"765:28:37"},"variableNames":[{"name":"ptr","nodeType":"YulIdentifier","src":"758:3:37"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"london","externalReferences":[{"declaration":9507,"isOffset":false,"isSlot":false,"src":"769:6:37","valueSize":1},{"declaration":9498,"isOffset":false,"isSlot":false,"src":"785:6:37","valueSize":1},{"declaration":9514,"isOffset":false,"isSlot":false,"src":"758:3:37","valueSize":1}],"id":9516,"nodeType":"InlineAssembly","src":"731:76:37"},{"body":{"id":9531,"nodeType":"Block","src":"833:267:37","statements":[{"expression":{"id":9519,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":false,"src":"851:5:37","subExpression":{"id":9518,"name":"ptr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9514,"src":"851:3:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9520,"nodeType":"ExpressionStatement","src":"851:5:37"},{"AST":{"nodeType":"YulBlock","src":"934:84:37","statements":[{"expression":{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"964:3:37"},{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"978:5:37"},{"kind":"number","nodeType":"YulLiteral","src":"985:2:37","type":"","value":"10"}],"functionName":{"name":"mod","nodeType":"YulIdentifier","src":"974:3:37"},"nodeType":"YulFunctionCall","src":"974:14:37"},{"name":"_SYMBOLS","nodeType":"YulIdentifier","src":"990:8:37"}],"functionName":{"name":"byte","nodeType":"YulIdentifier","src":"969:4:37"},"nodeType":"YulFunctionCall","src":"969:30:37"}],"functionName":{"name":"mstore8","nodeType":"YulIdentifier","src":"956:7:37"},"nodeType":"YulFunctionCall","src":"956:44:37"},"nodeType":"YulExpressionStatement","src":"956:44:37"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"london","externalReferences":[{"declaration":9486,"isOffset":false,"isSlot":false,"src":"990:8:37","valueSize":1},{"declaration":9514,"isOffset":false,"isSlot":false,"src":"964:3:37","valueSize":1},{"declaration":9492,"isOffset":false,"isSlot":false,"src":"978:5:37","valueSize":1}],"id":9521,"nodeType":"InlineAssembly","src":"925:93:37"},{"expression":{"id":9524,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9522,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9492,"src":"1035:5:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"hexValue":"3130","id":9523,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1044:2:37","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"1035:11:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9525,"nodeType":"ExpressionStatement","src":"1035:11:37"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9528,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9526,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9492,"src":"1068:5:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":9527,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1077:1:37","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1068:10:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9530,"nodeType":"IfStatement","src":"1064:21:37","trueBody":{"id":9529,"nodeType":"Break","src":"1080:5:37"}}]},"condition":{"hexValue":"74727565","id":9517,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"827:4:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"id":9532,"nodeType":"WhileStatement","src":"820:280:37"},{"expression":{"id":9533,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9507,"src":"1120:6:37","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":9496,"id":9534,"nodeType":"Return","src":"1113:13:37"}]}]},"documentation":{"id":9490,"nodeType":"StructuredDocumentation","src":"352:90:37","text":" @dev Converts a `uint256` to its ASCII `string` decimal representation."},"id":9537,"implemented":true,"kind":"function","modifiers":[],"name":"toString","nameLocation":"456:8:37","nodeType":"FunctionDefinition","parameters":{"id":9493,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9492,"mutability":"mutable","name":"value","nameLocation":"473:5:37","nodeType":"VariableDeclaration","scope":9537,"src":"465:13:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9491,"name":"uint256","nodeType":"ElementaryTypeName","src":"465:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"464:15:37"},"returnParameters":{"id":9496,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9495,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9537,"src":"503:13:37","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":9494,"name":"string","nodeType":"ElementaryTypeName","src":"503:6:37","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"502:15:37"},"scope":9707,"src":"447:696:37","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9564,"nodeType":"Block","src":"1313:103:37","statements":[{"expression":{"arguments":[{"arguments":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9549,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9540,"src":"1354:5:37","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":9550,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1362:1:37","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1354:9:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"","id":9553,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1372:2:37","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"id":9554,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"1354:20:37","trueExpression":{"hexValue":"2d","id":9552,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1366:3:37","typeDescriptions":{"typeIdentifier":"t_stringliteral_d3b8281179950f98149eefdb158d0e1acb56f56e8e343aa9fefafa7e36959561","typeString":"literal_string \"-\""},"value":"-"},"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[{"arguments":[{"id":9558,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9540,"src":"1400:5:37","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"expression":{"id":9556,"name":"SignedMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10714,"src":"1385:10:37","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SignedMath_$10714_$","typeString":"type(library SignedMath)"}},"id":9557,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1396:3:37","memberName":"abs","nodeType":"MemberAccess","referencedDeclaration":10713,"src":"1385:14:37","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_uint256_$","typeString":"function (int256) pure returns (uint256)"}},"id":9559,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1385:21:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9555,"name":"toString","nodeType":"Identifier","overloadedDeclarations":[9537,9565],"referencedDeclaration":9537,"src":"1376:8:37","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"}},"id":9560,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1376:31:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":9547,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967295,"src":"1337:3:37","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":9548,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1341:12:37","memberName":"encodePacked","nodeType":"MemberAccess","src":"1337:16:37","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":9561,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1337:71:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":9546,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1330:6:37","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":9545,"name":"string","nodeType":"ElementaryTypeName","src":"1330:6:37","typeDescriptions":{}}},"id":9562,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1330:79:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":9544,"id":9563,"nodeType":"Return","src":"1323:86:37"}]},"documentation":{"id":9538,"nodeType":"StructuredDocumentation","src":"1149:89:37","text":" @dev Converts a `int256` to its ASCII `string` decimal representation."},"id":9565,"implemented":true,"kind":"function","modifiers":[],"name":"toString","nameLocation":"1252:8:37","nodeType":"FunctionDefinition","parameters":{"id":9541,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9540,"mutability":"mutable","name":"value","nameLocation":"1268:5:37","nodeType":"VariableDeclaration","scope":9565,"src":"1261:12:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":9539,"name":"int256","nodeType":"ElementaryTypeName","src":"1261:6:37","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1260:14:37"},"returnParameters":{"id":9544,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9543,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9565,"src":"1298:13:37","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":9542,"name":"string","nodeType":"ElementaryTypeName","src":"1298:6:37","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1297:15:37"},"scope":9707,"src":"1243:173:37","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9584,"nodeType":"Block","src":"1595:100:37","statements":[{"id":9583,"nodeType":"UncheckedBlock","src":"1605:84:37","statements":[{"expression":{"arguments":[{"id":9574,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9568,"src":"1648:5:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9580,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":9577,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9568,"src":"1667:5:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":9575,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10609,"src":"1655:4:37","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$10609_$","typeString":"type(library Math)"}},"id":9576,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1660:6:37","memberName":"log256","nodeType":"MemberAccess","referencedDeclaration":10569,"src":"1655:11:37","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":9578,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1655:18:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":9579,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1676:1:37","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1655:22:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9573,"name":"toHexString","nodeType":"Identifier","overloadedDeclarations":[9585,9661,9681],"referencedDeclaration":9661,"src":"1636:11:37","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (string memory)"}},"id":9581,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1636:42:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":9572,"id":9582,"nodeType":"Return","src":"1629:49:37"}]}]},"documentation":{"id":9566,"nodeType":"StructuredDocumentation","src":"1422:94:37","text":" @dev Converts a `uint256` to its ASCII `string` hexadecimal representation."},"id":9585,"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"1530:11:37","nodeType":"FunctionDefinition","parameters":{"id":9569,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9568,"mutability":"mutable","name":"value","nameLocation":"1550:5:37","nodeType":"VariableDeclaration","scope":9585,"src":"1542:13:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9567,"name":"uint256","nodeType":"ElementaryTypeName","src":"1542:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1541:15:37"},"returnParameters":{"id":9572,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9571,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9585,"src":"1580:13:37","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":9570,"name":"string","nodeType":"ElementaryTypeName","src":"1580:6:37","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1579:15:37"},"scope":9707,"src":"1521:174:37","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9660,"nodeType":"Block","src":"1908:347:37","statements":[{"assignments":[9596],"declarations":[{"constant":false,"id":9596,"mutability":"mutable","name":"buffer","nameLocation":"1931:6:37","nodeType":"VariableDeclaration","scope":9660,"src":"1918:19:37","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9595,"name":"bytes","nodeType":"ElementaryTypeName","src":"1918:5:37","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":9605,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9603,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9601,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":9599,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1950:1:37","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":9600,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9590,"src":"1954:6:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1950:10:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"32","id":9602,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1963:1:37","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"1950:14:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9598,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"1940:9:37","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":9597,"name":"bytes","nodeType":"ElementaryTypeName","src":"1944:5:37","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":9604,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1940:25:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"1918:47:37"},{"expression":{"id":9610,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":9606,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9596,"src":"1975:6:37","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":9608,"indexExpression":{"hexValue":"30","id":9607,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1982:1:37","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1975:9:37","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":9609,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1987:3:37","typeDescriptions":{"typeIdentifier":"t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d","typeString":"literal_string \"0\""},"value":"0"},"src":"1975:15:37","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":9611,"nodeType":"ExpressionStatement","src":"1975:15:37"},{"expression":{"id":9616,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":9612,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9596,"src":"2000:6:37","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":9614,"indexExpression":{"hexValue":"31","id":9613,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2007:1:37","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2000:9:37","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"78","id":9615,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2012:3:37","typeDescriptions":{"typeIdentifier":"t_stringliteral_7521d1cadbcfa91eec65aa16715b94ffc1c9654ba57ea2ef1a2127bca1127a83","typeString":"literal_string \"x\""},"value":"x"},"src":"2000:15:37","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":9617,"nodeType":"ExpressionStatement","src":"2000:15:37"},{"body":{"id":9646,"nodeType":"Block","src":"2070:83:37","statements":[{"expression":{"id":9640,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":9632,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9596,"src":"2084:6:37","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":9634,"indexExpression":{"id":9633,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9619,"src":"2091:1:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2084:9:37","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":9635,"name":"_SYMBOLS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9486,"src":"2096:8:37","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"id":9639,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9638,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9636,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9588,"src":"2105:5:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307866","id":9637,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2113:3:37","typeDescriptions":{"typeIdentifier":"t_rational_15_by_1","typeString":"int_const 15"},"value":"0xf"},"src":"2105:11:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2096:21:37","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"src":"2084:33:37","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":9641,"nodeType":"ExpressionStatement","src":"2084:33:37"},{"expression":{"id":9644,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9642,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9588,"src":"2131:5:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":9643,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2141:1:37","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"2131:11:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9645,"nodeType":"ExpressionStatement","src":"2131:11:37"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9628,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9626,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9619,"src":"2058:1:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"31","id":9627,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2062:1:37","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2058:5:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9647,"initializationExpression":{"assignments":[9619],"declarations":[{"constant":false,"id":9619,"mutability":"mutable","name":"i","nameLocation":"2038:1:37","nodeType":"VariableDeclaration","scope":9647,"src":"2030:9:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9618,"name":"uint256","nodeType":"ElementaryTypeName","src":"2030:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9625,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9624,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9622,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":9620,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2042:1:37","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":9621,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9590,"src":"2046:6:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2042:10:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":9623,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2055:1:37","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2042:14:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2030:26:37"},"loopExpression":{"expression":{"id":9630,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":true,"src":"2065:3:37","subExpression":{"id":9629,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9619,"src":"2067:1:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9631,"nodeType":"ExpressionStatement","src":"2065:3:37"},"nodeType":"ForStatement","src":"2025:128:37"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9651,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9649,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9588,"src":"2170:5:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":9650,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2179:1:37","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2170:10:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"537472696e67733a20686578206c656e67746820696e73756666696369656e74","id":9652,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2182:34:37","typeDescriptions":{"typeIdentifier":"t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2","typeString":"literal_string \"Strings: hex length insufficient\""},"value":"Strings: hex length insufficient"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2","typeString":"literal_string \"Strings: hex length insufficient\""}],"id":9648,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"2162:7:37","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":9653,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2162:55:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9654,"nodeType":"ExpressionStatement","src":"2162:55:37"},{"expression":{"arguments":[{"id":9657,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9596,"src":"2241:6:37","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":9656,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2234:6:37","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":9655,"name":"string","nodeType":"ElementaryTypeName","src":"2234:6:37","typeDescriptions":{}}},"id":9658,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2234:14:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":9594,"id":9659,"nodeType":"Return","src":"2227:21:37"}]},"documentation":{"id":9586,"nodeType":"StructuredDocumentation","src":"1701:112:37","text":" @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length."},"id":9661,"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"1827:11:37","nodeType":"FunctionDefinition","parameters":{"id":9591,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9588,"mutability":"mutable","name":"value","nameLocation":"1847:5:37","nodeType":"VariableDeclaration","scope":9661,"src":"1839:13:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9587,"name":"uint256","nodeType":"ElementaryTypeName","src":"1839:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9590,"mutability":"mutable","name":"length","nameLocation":"1862:6:37","nodeType":"VariableDeclaration","scope":9661,"src":"1854:14:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9589,"name":"uint256","nodeType":"ElementaryTypeName","src":"1854:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1838:31:37"},"returnParameters":{"id":9594,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9593,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9661,"src":"1893:13:37","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":9592,"name":"string","nodeType":"ElementaryTypeName","src":"1893:6:37","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1892:15:37"},"scope":9707,"src":"1818:437:37","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9680,"nodeType":"Block","src":"2480:76:37","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":9674,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9664,"src":"2525:4:37","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":9673,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2517:7:37","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":9672,"name":"uint160","nodeType":"ElementaryTypeName","src":"2517:7:37","typeDescriptions":{}}},"id":9675,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2517:13:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":9671,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2509:7:37","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":9670,"name":"uint256","nodeType":"ElementaryTypeName","src":"2509:7:37","typeDescriptions":{}}},"id":9676,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2509:22:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9677,"name":"_ADDRESS_LENGTH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9489,"src":"2533:15:37","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":9669,"name":"toHexString","nodeType":"Identifier","overloadedDeclarations":[9585,9661,9681],"referencedDeclaration":9661,"src":"2497:11:37","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (string memory)"}},"id":9678,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2497:52:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":9668,"id":9679,"nodeType":"Return","src":"2490:59:37"}]},"documentation":{"id":9662,"nodeType":"StructuredDocumentation","src":"2261:141:37","text":" @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation."},"id":9681,"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"2416:11:37","nodeType":"FunctionDefinition","parameters":{"id":9665,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9664,"mutability":"mutable","name":"addr","nameLocation":"2436:4:37","nodeType":"VariableDeclaration","scope":9681,"src":"2428:12:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9663,"name":"address","nodeType":"ElementaryTypeName","src":"2428:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2427:14:37"},"returnParameters":{"id":9668,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9667,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9681,"src":"2465:13:37","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":9666,"name":"string","nodeType":"ElementaryTypeName","src":"2465:6:37","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2464:15:37"},"scope":9707,"src":"2407:149:37","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9705,"nodeType":"Block","src":"2711:66:37","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":9703,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":9694,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9684,"src":"2744:1:37","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":9693,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2738:5:37","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":9692,"name":"bytes","nodeType":"ElementaryTypeName","src":"2738:5:37","typeDescriptions":{}}},"id":9695,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2738:8:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":9691,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967288,"src":"2728:9:37","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":9696,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2728:19:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"arguments":[{"id":9700,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9686,"src":"2767:1:37","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":9699,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2761:5:37","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":9698,"name":"bytes","nodeType":"ElementaryTypeName","src":"2761:5:37","typeDescriptions":{}}},"id":9701,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2761:8:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":9697,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967288,"src":"2751:9:37","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":9702,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2751:19:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"2728:42:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":9690,"id":9704,"nodeType":"Return","src":"2721:49:37"}]},"documentation":{"id":9682,"nodeType":"StructuredDocumentation","src":"2562:66:37","text":" @dev Returns true if the two strings are equal."},"id":9706,"implemented":true,"kind":"function","modifiers":[],"name":"equal","nameLocation":"2642:5:37","nodeType":"FunctionDefinition","parameters":{"id":9687,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9684,"mutability":"mutable","name":"a","nameLocation":"2662:1:37","nodeType":"VariableDeclaration","scope":9706,"src":"2648:15:37","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":9683,"name":"string","nodeType":"ElementaryTypeName","src":"2648:6:37","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":9686,"mutability":"mutable","name":"b","nameLocation":"2679:1:37","nodeType":"VariableDeclaration","scope":9706,"src":"2665:15:37","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":9685,"name":"string","nodeType":"ElementaryTypeName","src":"2665:6:37","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2647:34:37"},"returnParameters":{"id":9690,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9689,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9706,"src":"2705:4:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9688,"name":"bool","nodeType":"ElementaryTypeName","src":"2705:4:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2704:6:37"},"scope":9707,"src":"2633:144:37","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":9708,"src":"220:2559:37","usedErrors":[]}],"src":"101:2679:37"},"id":37},"@openzeppelin/contracts/utils/introspection/ERC165.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/introspection/ERC165.sol","exportedSymbols":{"ERC165":[9731],"IERC165":[9743]},"id":9732,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":9709,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"99:23:38"},{"absolutePath":"@openzeppelin/contracts/utils/introspection/IERC165.sol","file":"./IERC165.sol","id":9710,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":9732,"sourceUnit":9744,"src":"124:23:38","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":9712,"name":"IERC165","nameLocations":["754:7:38"],"nodeType":"IdentifierPath","referencedDeclaration":9743,"src":"754:7:38"},"id":9713,"nodeType":"InheritanceSpecifier","src":"754:7:38"}],"canonicalName":"ERC165","contractDependencies":[],"contractKind":"contract","documentation":{"id":9711,"nodeType":"StructuredDocumentation","src":"149:576:38","text":" @dev Implementation of the {IERC165} interface.\n Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\n for the additional interface id that will be supported. For example:\n ```solidity\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\n }\n ```\n Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation."},"fullyImplemented":true,"id":9731,"linearizedBaseContracts":[9731,9743],"name":"ERC165","nameLocation":"744:6:38","nodeType":"ContractDefinition","nodes":[{"baseFunctions":[9742],"body":{"id":9729,"nodeType":"Block","src":"920:64:38","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":9727,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9722,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9716,"src":"937:11:38","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":9724,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9743,"src":"957:7:38","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC165_$9743_$","typeString":"type(contract IERC165)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC165_$9743_$","typeString":"type(contract IERC165)"}],"id":9723,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"952:4:38","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":9725,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"952:13:38","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC165_$9743","typeString":"type(contract IERC165)"}},"id":9726,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"966:11:38","memberName":"interfaceId","nodeType":"MemberAccess","src":"952:25:38","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"937:40:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":9721,"id":9728,"nodeType":"Return","src":"930:47:38"}]},"documentation":{"id":9714,"nodeType":"StructuredDocumentation","src":"768:56:38","text":" @dev See {IERC165-supportsInterface}."},"functionSelector":"01ffc9a7","id":9730,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"838:17:38","nodeType":"FunctionDefinition","overrides":{"id":9718,"nodeType":"OverrideSpecifier","overrides":[],"src":"896:8:38"},"parameters":{"id":9717,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9716,"mutability":"mutable","name":"interfaceId","nameLocation":"863:11:38","nodeType":"VariableDeclaration","scope":9730,"src":"856:18:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":9715,"name":"bytes4","nodeType":"ElementaryTypeName","src":"856:6:38","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"855:20:38"},"returnParameters":{"id":9721,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9720,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9730,"src":"914:4:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9719,"name":"bool","nodeType":"ElementaryTypeName","src":"914:4:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"913:6:38"},"scope":9731,"src":"829:155:38","stateMutability":"view","virtual":true,"visibility":"public"}],"scope":9732,"src":"726:260:38","usedErrors":[]}],"src":"99:888:38"},"id":38},"@openzeppelin/contracts/utils/introspection/IERC165.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/introspection/IERC165.sol","exportedSymbols":{"IERC165":[9743]},"id":9744,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":9733,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"100:23:39"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC165","contractDependencies":[],"contractKind":"interface","documentation":{"id":9734,"nodeType":"StructuredDocumentation","src":"125:279:39","text":" @dev Interface of the ERC165 standard, as defined in the\n https://eips.ethereum.org/EIPS/eip-165[EIP].\n Implementers can declare support of contract interfaces, which can then be\n queried by others ({ERC165Checker}).\n For an implementation, see {ERC165}."},"fullyImplemented":false,"id":9743,"linearizedBaseContracts":[9743],"name":"IERC165","nameLocation":"415:7:39","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":9735,"nodeType":"StructuredDocumentation","src":"429:340:39","text":" @dev Returns true if this contract implements the interface defined by\n `interfaceId`. See the corresponding\n https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\n to learn more about how these ids are created.\n This function call must use less than 30 000 gas."},"functionSelector":"01ffc9a7","id":9742,"implemented":false,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"783:17:39","nodeType":"FunctionDefinition","parameters":{"id":9738,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9737,"mutability":"mutable","name":"interfaceId","nameLocation":"808:11:39","nodeType":"VariableDeclaration","scope":9742,"src":"801:18:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":9736,"name":"bytes4","nodeType":"ElementaryTypeName","src":"801:6:39","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"800:20:39"},"returnParameters":{"id":9741,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9740,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9742,"src":"844:4:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9739,"name":"bool","nodeType":"ElementaryTypeName","src":"844:4:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"843:6:39"},"scope":9743,"src":"774:76:39","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":9744,"src":"405:447:39","usedErrors":[]}],"src":"100:753:39"},"id":39},"@openzeppelin/contracts/utils/math/Math.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/math/Math.sol","exportedSymbols":{"Math":[10609]},"id":10610,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":9745,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"103:23:40"},{"abstract":false,"baseContracts":[],"canonicalName":"Math","contractDependencies":[],"contractKind":"library","documentation":{"id":9746,"nodeType":"StructuredDocumentation","src":"128:73:40","text":" @dev Standard math utilities missing in the Solidity language."},"fullyImplemented":true,"id":10609,"linearizedBaseContracts":[10609],"name":"Math","nameLocation":"210:4:40","nodeType":"ContractDefinition","nodes":[{"canonicalName":"Math.Rounding","id":9750,"members":[{"id":9747,"name":"Down","nameLocation":"245:4:40","nodeType":"EnumValue","src":"245:4:40"},{"id":9748,"name":"Up","nameLocation":"287:2:40","nodeType":"EnumValue","src":"287:2:40"},{"id":9749,"name":"Zero","nameLocation":"318:4:40","nodeType":"EnumValue","src":"318:4:40"}],"name":"Rounding","nameLocation":"226:8:40","nodeType":"EnumDefinition","src":"221:122:40"},{"body":{"id":9767,"nodeType":"Block","src":"480:37:40","statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9762,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9760,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9753,"src":"497:1:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":9761,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9755,"src":"501:1:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"497:5:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":9764,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9755,"src":"509:1:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9765,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"497:13:40","trueExpression":{"id":9763,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9753,"src":"505:1:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9759,"id":9766,"nodeType":"Return","src":"490:20:40"}]},"documentation":{"id":9751,"nodeType":"StructuredDocumentation","src":"349:59:40","text":" @dev Returns the largest of two numbers."},"id":9768,"implemented":true,"kind":"function","modifiers":[],"name":"max","nameLocation":"422:3:40","nodeType":"FunctionDefinition","parameters":{"id":9756,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9753,"mutability":"mutable","name":"a","nameLocation":"434:1:40","nodeType":"VariableDeclaration","scope":9768,"src":"426:9:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9752,"name":"uint256","nodeType":"ElementaryTypeName","src":"426:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9755,"mutability":"mutable","name":"b","nameLocation":"445:1:40","nodeType":"VariableDeclaration","scope":9768,"src":"437:9:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9754,"name":"uint256","nodeType":"ElementaryTypeName","src":"437:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"425:22:40"},"returnParameters":{"id":9759,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9758,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9768,"src":"471:7:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9757,"name":"uint256","nodeType":"ElementaryTypeName","src":"471:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"470:9:40"},"scope":10609,"src":"413:104:40","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9785,"nodeType":"Block","src":"655:37:40","statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9780,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9778,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9771,"src":"672:1:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":9779,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9773,"src":"676:1:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"672:5:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":9782,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9773,"src":"684:1:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9783,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"672:13:40","trueExpression":{"id":9781,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9771,"src":"680:1:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9777,"id":9784,"nodeType":"Return","src":"665:20:40"}]},"documentation":{"id":9769,"nodeType":"StructuredDocumentation","src":"523:60:40","text":" @dev Returns the smallest of two numbers."},"id":9786,"implemented":true,"kind":"function","modifiers":[],"name":"min","nameLocation":"597:3:40","nodeType":"FunctionDefinition","parameters":{"id":9774,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9771,"mutability":"mutable","name":"a","nameLocation":"609:1:40","nodeType":"VariableDeclaration","scope":9786,"src":"601:9:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9770,"name":"uint256","nodeType":"ElementaryTypeName","src":"601:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9773,"mutability":"mutable","name":"b","nameLocation":"620:1:40","nodeType":"VariableDeclaration","scope":9786,"src":"612:9:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9772,"name":"uint256","nodeType":"ElementaryTypeName","src":"612:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"600:22:40"},"returnParameters":{"id":9777,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9776,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9786,"src":"646:7:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9775,"name":"uint256","nodeType":"ElementaryTypeName","src":"646:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"645:9:40"},"scope":10609,"src":"588:104:40","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9808,"nodeType":"Block","src":"876:82:40","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9806,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9798,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9796,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9789,"src":"931:1:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":9797,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9791,"src":"935:1:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"931:5:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":9799,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"930:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9805,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9802,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9800,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9789,"src":"941:1:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":9801,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9791,"src":"945:1:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"941:5:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":9803,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"940:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"32","id":9804,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"950:1:40","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"940:11:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"930:21:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9795,"id":9807,"nodeType":"Return","src":"923:28:40"}]},"documentation":{"id":9787,"nodeType":"StructuredDocumentation","src":"698:102:40","text":" @dev Returns the average of two numbers. The result is rounded towards\n zero."},"id":9809,"implemented":true,"kind":"function","modifiers":[],"name":"average","nameLocation":"814:7:40","nodeType":"FunctionDefinition","parameters":{"id":9792,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9789,"mutability":"mutable","name":"a","nameLocation":"830:1:40","nodeType":"VariableDeclaration","scope":9809,"src":"822:9:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9788,"name":"uint256","nodeType":"ElementaryTypeName","src":"822:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9791,"mutability":"mutable","name":"b","nameLocation":"841:1:40","nodeType":"VariableDeclaration","scope":9809,"src":"833:9:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9790,"name":"uint256","nodeType":"ElementaryTypeName","src":"833:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"821:22:40"},"returnParameters":{"id":9795,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9794,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9809,"src":"867:7:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9793,"name":"uint256","nodeType":"ElementaryTypeName","src":"867:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"866:9:40"},"scope":10609,"src":"805:153:40","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9833,"nodeType":"Block","src":"1228:123:40","statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9821,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9819,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9812,"src":"1316:1:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":9820,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1321:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1316:6:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9830,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9828,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9825,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9823,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9812,"src":"1330:1:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":9824,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1334:1:40","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1330:5:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":9826,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1329:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":9827,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9814,"src":"1339:1:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1329:11:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":9829,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1343:1:40","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1329:15:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9831,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"1316:28:40","trueExpression":{"hexValue":"30","id":9822,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1325:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9818,"id":9832,"nodeType":"Return","src":"1309:35:40"}]},"documentation":{"id":9810,"nodeType":"StructuredDocumentation","src":"964:188:40","text":" @dev Returns the ceiling of the division of two numbers.\n This differs from standard division with `/` in that it rounds up instead\n of rounding down."},"id":9834,"implemented":true,"kind":"function","modifiers":[],"name":"ceilDiv","nameLocation":"1166:7:40","nodeType":"FunctionDefinition","parameters":{"id":9815,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9812,"mutability":"mutable","name":"a","nameLocation":"1182:1:40","nodeType":"VariableDeclaration","scope":9834,"src":"1174:9:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9811,"name":"uint256","nodeType":"ElementaryTypeName","src":"1174:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9814,"mutability":"mutable","name":"b","nameLocation":"1193:1:40","nodeType":"VariableDeclaration","scope":9834,"src":"1185:9:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9813,"name":"uint256","nodeType":"ElementaryTypeName","src":"1185:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1173:22:40"},"returnParameters":{"id":9818,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9817,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9834,"src":"1219:7:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9816,"name":"uint256","nodeType":"ElementaryTypeName","src":"1219:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1218:9:40"},"scope":10609,"src":"1157:194:40","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9956,"nodeType":"Block","src":"1765:4115:40","statements":[{"id":9955,"nodeType":"UncheckedBlock","src":"1775:4099:40","statements":[{"assignments":[9847],"declarations":[{"constant":false,"id":9847,"mutability":"mutable","name":"prod0","nameLocation":"2104:5:40","nodeType":"VariableDeclaration","scope":9955,"src":"2096:13:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9846,"name":"uint256","nodeType":"ElementaryTypeName","src":"2096:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9848,"nodeType":"VariableDeclarationStatement","src":"2096:13:40"},{"assignments":[9850],"declarations":[{"constant":false,"id":9850,"mutability":"mutable","name":"prod1","nameLocation":"2176:5:40","nodeType":"VariableDeclaration","scope":9955,"src":"2168:13:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9849,"name":"uint256","nodeType":"ElementaryTypeName","src":"2168:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9851,"nodeType":"VariableDeclarationStatement","src":"2168:13:40"},{"AST":{"nodeType":"YulBlock","src":"2248:157:40","statements":[{"nodeType":"YulVariableDeclaration","src":"2266:30:40","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"2283:1:40"},{"name":"y","nodeType":"YulIdentifier","src":"2286:1:40"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2293:1:40","type":"","value":"0"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"2289:3:40"},"nodeType":"YulFunctionCall","src":"2289:6:40"}],"functionName":{"name":"mulmod","nodeType":"YulIdentifier","src":"2276:6:40"},"nodeType":"YulFunctionCall","src":"2276:20:40"},"variables":[{"name":"mm","nodeType":"YulTypedName","src":"2270:2:40","type":""}]},{"nodeType":"YulAssignment","src":"2313:18:40","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"2326:1:40"},{"name":"y","nodeType":"YulIdentifier","src":"2329:1:40"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"2322:3:40"},"nodeType":"YulFunctionCall","src":"2322:9:40"},"variableNames":[{"name":"prod0","nodeType":"YulIdentifier","src":"2313:5:40"}]},{"nodeType":"YulAssignment","src":"2348:43:40","value":{"arguments":[{"arguments":[{"name":"mm","nodeType":"YulIdentifier","src":"2365:2:40"},{"name":"prod0","nodeType":"YulIdentifier","src":"2369:5:40"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2361:3:40"},"nodeType":"YulFunctionCall","src":"2361:14:40"},{"arguments":[{"name":"mm","nodeType":"YulIdentifier","src":"2380:2:40"},{"name":"prod0","nodeType":"YulIdentifier","src":"2384:5:40"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2377:2:40"},"nodeType":"YulFunctionCall","src":"2377:13:40"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2357:3:40"},"nodeType":"YulFunctionCall","src":"2357:34:40"},"variableNames":[{"name":"prod1","nodeType":"YulIdentifier","src":"2348:5:40"}]}]},"evmVersion":"london","externalReferences":[{"declaration":9847,"isOffset":false,"isSlot":false,"src":"2313:5:40","valueSize":1},{"declaration":9847,"isOffset":false,"isSlot":false,"src":"2369:5:40","valueSize":1},{"declaration":9847,"isOffset":false,"isSlot":false,"src":"2384:5:40","valueSize":1},{"declaration":9850,"isOffset":false,"isSlot":false,"src":"2348:5:40","valueSize":1},{"declaration":9837,"isOffset":false,"isSlot":false,"src":"2283:1:40","valueSize":1},{"declaration":9837,"isOffset":false,"isSlot":false,"src":"2326:1:40","valueSize":1},{"declaration":9839,"isOffset":false,"isSlot":false,"src":"2286:1:40","valueSize":1},{"declaration":9839,"isOffset":false,"isSlot":false,"src":"2329:1:40","valueSize":1}],"id":9852,"nodeType":"InlineAssembly","src":"2239:166:40"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9855,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9853,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9850,"src":"2486:5:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":9854,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2495:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2486:10:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9861,"nodeType":"IfStatement","src":"2482:368:40","trueBody":{"id":9860,"nodeType":"Block","src":"2498:352:40","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9858,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9856,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9847,"src":"2816:5:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":9857,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9841,"src":"2824:11:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2816:19:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9845,"id":9859,"nodeType":"Return","src":"2809:26:40"}]}},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9865,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9863,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9841,"src":"2960:11:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":9864,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9850,"src":"2974:5:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2960:19:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4d6174683a206d756c446976206f766572666c6f77","id":9866,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2981:23:40","typeDescriptions":{"typeIdentifier":"t_stringliteral_d87093691d63b122ac2c14d1b11554b287e2431cf2b03550b3be7cffb0f86851","typeString":"literal_string \"Math: mulDiv overflow\""},"value":"Math: mulDiv overflow"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d87093691d63b122ac2c14d1b11554b287e2431cf2b03550b3be7cffb0f86851","typeString":"literal_string \"Math: mulDiv overflow\""}],"id":9862,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"2952:7:40","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":9867,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2952:53:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9868,"nodeType":"ExpressionStatement","src":"2952:53:40"},{"assignments":[9870],"declarations":[{"constant":false,"id":9870,"mutability":"mutable","name":"remainder","nameLocation":"3269:9:40","nodeType":"VariableDeclaration","scope":9955,"src":"3261:17:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9869,"name":"uint256","nodeType":"ElementaryTypeName","src":"3261:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9871,"nodeType":"VariableDeclarationStatement","src":"3261:17:40"},{"AST":{"nodeType":"YulBlock","src":"3301:291:40","statements":[{"nodeType":"YulAssignment","src":"3370:38:40","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"3390:1:40"},{"name":"y","nodeType":"YulIdentifier","src":"3393:1:40"},{"name":"denominator","nodeType":"YulIdentifier","src":"3396:11:40"}],"functionName":{"name":"mulmod","nodeType":"YulIdentifier","src":"3383:6:40"},"nodeType":"YulFunctionCall","src":"3383:25:40"},"variableNames":[{"name":"remainder","nodeType":"YulIdentifier","src":"3370:9:40"}]},{"nodeType":"YulAssignment","src":"3490:41:40","value":{"arguments":[{"name":"prod1","nodeType":"YulIdentifier","src":"3503:5:40"},{"arguments":[{"name":"remainder","nodeType":"YulIdentifier","src":"3513:9:40"},{"name":"prod0","nodeType":"YulIdentifier","src":"3524:5:40"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3510:2:40"},"nodeType":"YulFunctionCall","src":"3510:20:40"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3499:3:40"},"nodeType":"YulFunctionCall","src":"3499:32:40"},"variableNames":[{"name":"prod1","nodeType":"YulIdentifier","src":"3490:5:40"}]},{"nodeType":"YulAssignment","src":"3548:30:40","value":{"arguments":[{"name":"prod0","nodeType":"YulIdentifier","src":"3561:5:40"},{"name":"remainder","nodeType":"YulIdentifier","src":"3568:9:40"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3557:3:40"},"nodeType":"YulFunctionCall","src":"3557:21:40"},"variableNames":[{"name":"prod0","nodeType":"YulIdentifier","src":"3548:5:40"}]}]},"evmVersion":"london","externalReferences":[{"declaration":9841,"isOffset":false,"isSlot":false,"src":"3396:11:40","valueSize":1},{"declaration":9847,"isOffset":false,"isSlot":false,"src":"3524:5:40","valueSize":1},{"declaration":9847,"isOffset":false,"isSlot":false,"src":"3548:5:40","valueSize":1},{"declaration":9847,"isOffset":false,"isSlot":false,"src":"3561:5:40","valueSize":1},{"declaration":9850,"isOffset":false,"isSlot":false,"src":"3490:5:40","valueSize":1},{"declaration":9850,"isOffset":false,"isSlot":false,"src":"3503:5:40","valueSize":1},{"declaration":9870,"isOffset":false,"isSlot":false,"src":"3370:9:40","valueSize":1},{"declaration":9870,"isOffset":false,"isSlot":false,"src":"3513:9:40","valueSize":1},{"declaration":9870,"isOffset":false,"isSlot":false,"src":"3568:9:40","valueSize":1},{"declaration":9837,"isOffset":false,"isSlot":false,"src":"3390:1:40","valueSize":1},{"declaration":9839,"isOffset":false,"isSlot":false,"src":"3393:1:40","valueSize":1}],"id":9872,"nodeType":"InlineAssembly","src":"3292:300:40"},{"assignments":[9874],"declarations":[{"constant":false,"id":9874,"mutability":"mutable","name":"twos","nameLocation":"3907:4:40","nodeType":"VariableDeclaration","scope":9955,"src":"3899:12:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9873,"name":"uint256","nodeType":"ElementaryTypeName","src":"3899:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9882,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9881,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9875,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9841,"src":"3914:11:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9879,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9877,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"~","prefix":true,"src":"3929:12:40","subExpression":{"id":9876,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9841,"src":"3930:11:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":9878,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3944:1:40","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3929:16:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":9880,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3928:18:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3914:32:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3899:47:40"},{"AST":{"nodeType":"YulBlock","src":"3969:362:40","statements":[{"nodeType":"YulAssignment","src":"4034:37:40","value":{"arguments":[{"name":"denominator","nodeType":"YulIdentifier","src":"4053:11:40"},{"name":"twos","nodeType":"YulIdentifier","src":"4066:4:40"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"4049:3:40"},"nodeType":"YulFunctionCall","src":"4049:22:40"},"variableNames":[{"name":"denominator","nodeType":"YulIdentifier","src":"4034:11:40"}]},{"nodeType":"YulAssignment","src":"4138:25:40","value":{"arguments":[{"name":"prod0","nodeType":"YulIdentifier","src":"4151:5:40"},{"name":"twos","nodeType":"YulIdentifier","src":"4158:4:40"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"4147:3:40"},"nodeType":"YulFunctionCall","src":"4147:16:40"},"variableNames":[{"name":"prod0","nodeType":"YulIdentifier","src":"4138:5:40"}]},{"nodeType":"YulAssignment","src":"4278:39:40","value":{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4298:1:40","type":"","value":"0"},{"name":"twos","nodeType":"YulIdentifier","src":"4301:4:40"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4294:3:40"},"nodeType":"YulFunctionCall","src":"4294:12:40"},{"name":"twos","nodeType":"YulIdentifier","src":"4308:4:40"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"4290:3:40"},"nodeType":"YulFunctionCall","src":"4290:23:40"},{"kind":"number","nodeType":"YulLiteral","src":"4315:1:40","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4286:3:40"},"nodeType":"YulFunctionCall","src":"4286:31:40"},"variableNames":[{"name":"twos","nodeType":"YulIdentifier","src":"4278:4:40"}]}]},"evmVersion":"london","externalReferences":[{"declaration":9841,"isOffset":false,"isSlot":false,"src":"4034:11:40","valueSize":1},{"declaration":9841,"isOffset":false,"isSlot":false,"src":"4053:11:40","valueSize":1},{"declaration":9847,"isOffset":false,"isSlot":false,"src":"4138:5:40","valueSize":1},{"declaration":9847,"isOffset":false,"isSlot":false,"src":"4151:5:40","valueSize":1},{"declaration":9874,"isOffset":false,"isSlot":false,"src":"4066:4:40","valueSize":1},{"declaration":9874,"isOffset":false,"isSlot":false,"src":"4158:4:40","valueSize":1},{"declaration":9874,"isOffset":false,"isSlot":false,"src":"4278:4:40","valueSize":1},{"declaration":9874,"isOffset":false,"isSlot":false,"src":"4301:4:40","valueSize":1},{"declaration":9874,"isOffset":false,"isSlot":false,"src":"4308:4:40","valueSize":1}],"id":9883,"nodeType":"InlineAssembly","src":"3960:371:40"},{"expression":{"id":9888,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9884,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9847,"src":"4397:5:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9887,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9885,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9850,"src":"4406:5:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":9886,"name":"twos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9874,"src":"4414:4:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4406:12:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4397:21:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9889,"nodeType":"ExpressionStatement","src":"4397:21:40"},{"assignments":[9891],"declarations":[{"constant":false,"id":9891,"mutability":"mutable","name":"inverse","nameLocation":"4744:7:40","nodeType":"VariableDeclaration","scope":9955,"src":"4736:15:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9890,"name":"uint256","nodeType":"ElementaryTypeName","src":"4736:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9898,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9897,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9894,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"33","id":9892,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4755:1:40","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":9893,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9841,"src":"4759:11:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4755:15:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":9895,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4754:17:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"hexValue":"32","id":9896,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4774:1:40","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"4754:21:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4736:39:40"},{"expression":{"id":9905,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9899,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9891,"src":"4992:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9904,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":9900,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5003:1:40","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9903,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9901,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9841,"src":"5007:11:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":9902,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9891,"src":"5021:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5007:21:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5003:25:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4992:36:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9906,"nodeType":"ExpressionStatement","src":"4992:36:40"},{"expression":{"id":9913,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9907,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9891,"src":"5061:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9912,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":9908,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5072:1:40","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9911,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9909,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9841,"src":"5076:11:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":9910,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9891,"src":"5090:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5076:21:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5072:25:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5061:36:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9914,"nodeType":"ExpressionStatement","src":"5061:36:40"},{"expression":{"id":9921,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9915,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9891,"src":"5131:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9920,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":9916,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5142:1:40","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9919,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9917,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9841,"src":"5146:11:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":9918,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9891,"src":"5160:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5146:21:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5142:25:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5131:36:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9922,"nodeType":"ExpressionStatement","src":"5131:36:40"},{"expression":{"id":9929,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9923,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9891,"src":"5201:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9928,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":9924,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5212:1:40","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9927,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9925,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9841,"src":"5216:11:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":9926,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9891,"src":"5230:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5216:21:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5212:25:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5201:36:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9930,"nodeType":"ExpressionStatement","src":"5201:36:40"},{"expression":{"id":9937,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9931,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9891,"src":"5271:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9936,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":9932,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5282:1:40","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9935,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9933,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9841,"src":"5286:11:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":9934,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9891,"src":"5300:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5286:21:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5282:25:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5271:36:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9938,"nodeType":"ExpressionStatement","src":"5271:36:40"},{"expression":{"id":9945,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9939,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9891,"src":"5342:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9944,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":9940,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5353:1:40","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9943,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9941,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9841,"src":"5357:11:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":9942,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9891,"src":"5371:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5357:21:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5353:25:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5342:36:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9946,"nodeType":"ExpressionStatement","src":"5342:36:40"},{"expression":{"id":9951,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9947,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9844,"src":"5812:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9950,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9948,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9847,"src":"5821:5:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":9949,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9891,"src":"5829:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5821:15:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5812:24:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9952,"nodeType":"ExpressionStatement","src":"5812:24:40"},{"expression":{"id":9953,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9844,"src":"5857:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9845,"id":9954,"nodeType":"Return","src":"5850:13:40"}]}]},"documentation":{"id":9835,"nodeType":"StructuredDocumentation","src":"1357:305:40","text":" @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\n @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)\n with further edits by Uniswap Labs also under MIT license."},"id":9957,"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"1676:6:40","nodeType":"FunctionDefinition","parameters":{"id":9842,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9837,"mutability":"mutable","name":"x","nameLocation":"1691:1:40","nodeType":"VariableDeclaration","scope":9957,"src":"1683:9:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9836,"name":"uint256","nodeType":"ElementaryTypeName","src":"1683:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9839,"mutability":"mutable","name":"y","nameLocation":"1702:1:40","nodeType":"VariableDeclaration","scope":9957,"src":"1694:9:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9838,"name":"uint256","nodeType":"ElementaryTypeName","src":"1694:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9841,"mutability":"mutable","name":"denominator","nameLocation":"1713:11:40","nodeType":"VariableDeclaration","scope":9957,"src":"1705:19:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9840,"name":"uint256","nodeType":"ElementaryTypeName","src":"1705:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1682:43:40"},"returnParameters":{"id":9845,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9844,"mutability":"mutable","name":"result","nameLocation":"1757:6:40","nodeType":"VariableDeclaration","scope":9957,"src":"1749:14:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9843,"name":"uint256","nodeType":"ElementaryTypeName","src":"1749:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1748:16:40"},"scope":10609,"src":"1667:4213:40","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":10000,"nodeType":"Block","src":"6122:189:40","statements":[{"assignments":[9973],"declarations":[{"constant":false,"id":9973,"mutability":"mutable","name":"result","nameLocation":"6140:6:40","nodeType":"VariableDeclaration","scope":10000,"src":"6132:14:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9972,"name":"uint256","nodeType":"ElementaryTypeName","src":"6132:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9979,"initialValue":{"arguments":[{"id":9975,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9960,"src":"6156:1:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9976,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9962,"src":"6159:1:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9977,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9964,"src":"6162:11:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9974,"name":"mulDiv","nodeType":"Identifier","overloadedDeclarations":[9957,10001],"referencedDeclaration":9957,"src":"6149:6:40","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":9978,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6149:25:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6132:42:40"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":9991,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_enum$_Rounding_$9750","typeString":"enum Math.Rounding"},"id":9983,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9980,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9967,"src":"6188:8:40","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$9750","typeString":"enum Math.Rounding"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":9981,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9750,"src":"6200:8:40","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$9750_$","typeString":"type(enum Math.Rounding)"}},"id":9982,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6209:2:40","memberName":"Up","nodeType":"MemberAccess","referencedDeclaration":9748,"src":"6200:11:40","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$9750","typeString":"enum Math.Rounding"}},"src":"6188:23:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9990,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":9985,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9960,"src":"6222:1:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9986,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9962,"src":"6225:1:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9987,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9964,"src":"6228:11:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9984,"name":"mulmod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967280,"src":"6215:6:40","typeDescriptions":{"typeIdentifier":"t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":9988,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6215:25:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":9989,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6243:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6215:29:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6188:56:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9997,"nodeType":"IfStatement","src":"6184:98:40","trueBody":{"id":9996,"nodeType":"Block","src":"6246:36:40","statements":[{"expression":{"id":9994,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9992,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9973,"src":"6260:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":9993,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6270:1:40","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"6260:11:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9995,"nodeType":"ExpressionStatement","src":"6260:11:40"}]}},{"expression":{"id":9998,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9973,"src":"6298:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9971,"id":9999,"nodeType":"Return","src":"6291:13:40"}]},"documentation":{"id":9958,"nodeType":"StructuredDocumentation","src":"5886:121:40","text":" @notice Calculates x * y / denominator with full precision, following the selected rounding direction."},"id":10001,"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"6021:6:40","nodeType":"FunctionDefinition","parameters":{"id":9968,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9960,"mutability":"mutable","name":"x","nameLocation":"6036:1:40","nodeType":"VariableDeclaration","scope":10001,"src":"6028:9:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9959,"name":"uint256","nodeType":"ElementaryTypeName","src":"6028:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9962,"mutability":"mutable","name":"y","nameLocation":"6047:1:40","nodeType":"VariableDeclaration","scope":10001,"src":"6039:9:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9961,"name":"uint256","nodeType":"ElementaryTypeName","src":"6039:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9964,"mutability":"mutable","name":"denominator","nameLocation":"6058:11:40","nodeType":"VariableDeclaration","scope":10001,"src":"6050:19:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9963,"name":"uint256","nodeType":"ElementaryTypeName","src":"6050:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9967,"mutability":"mutable","name":"rounding","nameLocation":"6080:8:40","nodeType":"VariableDeclaration","scope":10001,"src":"6071:17:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$9750","typeString":"enum Math.Rounding"},"typeName":{"id":9966,"nodeType":"UserDefinedTypeName","pathNode":{"id":9965,"name":"Rounding","nameLocations":["6071:8:40"],"nodeType":"IdentifierPath","referencedDeclaration":9750,"src":"6071:8:40"},"referencedDeclaration":9750,"src":"6071:8:40","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$9750","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"6027:62:40"},"returnParameters":{"id":9971,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9970,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10001,"src":"6113:7:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9969,"name":"uint256","nodeType":"ElementaryTypeName","src":"6113:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6112:9:40"},"scope":10609,"src":"6012:299:40","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":10112,"nodeType":"Block","src":"6587:1585:40","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10011,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10009,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10004,"src":"6601:1:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":10010,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6606:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6601:6:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10015,"nodeType":"IfStatement","src":"6597:45:40","trueBody":{"id":10014,"nodeType":"Block","src":"6609:33:40","statements":[{"expression":{"hexValue":"30","id":10012,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6630:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":10008,"id":10013,"nodeType":"Return","src":"6623:8:40"}]}},{"assignments":[10017],"declarations":[{"constant":false,"id":10017,"mutability":"mutable","name":"result","nameLocation":"7329:6:40","nodeType":"VariableDeclaration","scope":10112,"src":"7321:14:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10016,"name":"uint256","nodeType":"ElementaryTypeName","src":"7321:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10026,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10025,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":10018,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7338:1:40","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10023,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":10020,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10004,"src":"7349:1:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10019,"name":"log2","nodeType":"Identifier","overloadedDeclarations":[10281,10317],"referencedDeclaration":10281,"src":"7344:4:40","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":10021,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7344:7:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":10022,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7355:1:40","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7344:12:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":10024,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7343:14:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7338:19:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7321:36:40"},{"id":10111,"nodeType":"UncheckedBlock","src":"7758:408:40","statements":[{"expression":{"id":10036,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10027,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10017,"src":"7782:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10035,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10032,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10028,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10017,"src":"7792:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10031,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10029,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10004,"src":"7801:1:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":10030,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10017,"src":"7805:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7801:10:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7792:19:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":10033,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7791:21:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":10034,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7816:1:40","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7791:26:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7782:35:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10037,"nodeType":"ExpressionStatement","src":"7782:35:40"},{"expression":{"id":10047,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10038,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10017,"src":"7831:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10046,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10043,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10039,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10017,"src":"7841:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10042,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10040,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10004,"src":"7850:1:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":10041,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10017,"src":"7854:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7850:10:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7841:19:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":10044,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7840:21:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":10045,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7865:1:40","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7840:26:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7831:35:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10048,"nodeType":"ExpressionStatement","src":"7831:35:40"},{"expression":{"id":10058,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10049,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10017,"src":"7880:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10057,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10054,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10050,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10017,"src":"7890:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10053,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10051,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10004,"src":"7899:1:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":10052,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10017,"src":"7903:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7899:10:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7890:19:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":10055,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7889:21:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":10056,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7914:1:40","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7889:26:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7880:35:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10059,"nodeType":"ExpressionStatement","src":"7880:35:40"},{"expression":{"id":10069,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10060,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10017,"src":"7929:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10068,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10065,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10061,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10017,"src":"7939:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10064,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10062,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10004,"src":"7948:1:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":10063,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10017,"src":"7952:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7948:10:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7939:19:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":10066,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7938:21:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":10067,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7963:1:40","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7938:26:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7929:35:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10070,"nodeType":"ExpressionStatement","src":"7929:35:40"},{"expression":{"id":10080,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10071,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10017,"src":"7978:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10079,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10076,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10072,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10017,"src":"7988:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10075,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10073,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10004,"src":"7997:1:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":10074,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10017,"src":"8001:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7997:10:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7988:19:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":10077,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7987:21:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":10078,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8012:1:40","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7987:26:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7978:35:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10081,"nodeType":"ExpressionStatement","src":"7978:35:40"},{"expression":{"id":10091,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10082,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10017,"src":"8027:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10090,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10087,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10083,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10017,"src":"8037:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10086,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10084,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10004,"src":"8046:1:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":10085,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10017,"src":"8050:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8046:10:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8037:19:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":10088,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8036:21:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":10089,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8061:1:40","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"8036:26:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8027:35:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10092,"nodeType":"ExpressionStatement","src":"8027:35:40"},{"expression":{"id":10102,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10093,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10017,"src":"8076:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10101,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10098,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10094,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10017,"src":"8086:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10097,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10095,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10004,"src":"8095:1:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":10096,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10017,"src":"8099:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8095:10:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8086:19:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":10099,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8085:21:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":10100,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8110:1:40","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"8085:26:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8076:35:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10103,"nodeType":"ExpressionStatement","src":"8076:35:40"},{"expression":{"arguments":[{"id":10105,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10017,"src":"8136:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10108,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10106,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10004,"src":"8144:1:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":10107,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10017,"src":"8148:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8144:10:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10104,"name":"min","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9786,"src":"8132:3:40","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":10109,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8132:23:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":10008,"id":10110,"nodeType":"Return","src":"8125:30:40"}]}]},"documentation":{"id":10002,"nodeType":"StructuredDocumentation","src":"6317:208:40","text":" @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down.\n Inspired by Henry S. Warren, Jr.'s \"Hacker's Delight\" (Chapter 11)."},"id":10113,"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"6539:4:40","nodeType":"FunctionDefinition","parameters":{"id":10005,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10004,"mutability":"mutable","name":"a","nameLocation":"6552:1:40","nodeType":"VariableDeclaration","scope":10113,"src":"6544:9:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10003,"name":"uint256","nodeType":"ElementaryTypeName","src":"6544:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6543:11:40"},"returnParameters":{"id":10008,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10007,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10113,"src":"6578:7:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10006,"name":"uint256","nodeType":"ElementaryTypeName","src":"6578:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6577:9:40"},"scope":10609,"src":"6530:1642:40","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":10148,"nodeType":"Block","src":"8348:161:40","statements":[{"id":10147,"nodeType":"UncheckedBlock","src":"8358:145:40","statements":[{"assignments":[10125],"declarations":[{"constant":false,"id":10125,"mutability":"mutable","name":"result","nameLocation":"8390:6:40","nodeType":"VariableDeclaration","scope":10147,"src":"8382:14:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10124,"name":"uint256","nodeType":"ElementaryTypeName","src":"8382:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10129,"initialValue":{"arguments":[{"id":10127,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10116,"src":"8404:1:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10126,"name":"sqrt","nodeType":"Identifier","overloadedDeclarations":[10113,10149],"referencedDeclaration":10113,"src":"8399:4:40","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":10128,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8399:7:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8382:24:40"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10145,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10130,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10125,"src":"8427:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":10140,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_enum$_Rounding_$9750","typeString":"enum Math.Rounding"},"id":10134,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10131,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10119,"src":"8437:8:40","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$9750","typeString":"enum Math.Rounding"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":10132,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9750,"src":"8449:8:40","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$9750_$","typeString":"type(enum Math.Rounding)"}},"id":10133,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8458:2:40","memberName":"Up","nodeType":"MemberAccess","referencedDeclaration":9748,"src":"8449:11:40","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$9750","typeString":"enum Math.Rounding"}},"src":"8437:23:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10139,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10137,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10135,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10125,"src":"8464:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":10136,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10125,"src":"8473:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8464:15:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":10138,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10116,"src":"8482:1:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8464:19:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"8437:46:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":10142,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8490:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":10143,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"8437:54:40","trueExpression":{"hexValue":"31","id":10141,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8486:1:40","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":10144,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8436:56:40","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"8427:65:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":10123,"id":10146,"nodeType":"Return","src":"8420:72:40"}]}]},"documentation":{"id":10114,"nodeType":"StructuredDocumentation","src":"8178:89:40","text":" @notice Calculates sqrt(a), following the selected rounding direction."},"id":10149,"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"8281:4:40","nodeType":"FunctionDefinition","parameters":{"id":10120,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10116,"mutability":"mutable","name":"a","nameLocation":"8294:1:40","nodeType":"VariableDeclaration","scope":10149,"src":"8286:9:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10115,"name":"uint256","nodeType":"ElementaryTypeName","src":"8286:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10119,"mutability":"mutable","name":"rounding","nameLocation":"8306:8:40","nodeType":"VariableDeclaration","scope":10149,"src":"8297:17:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$9750","typeString":"enum Math.Rounding"},"typeName":{"id":10118,"nodeType":"UserDefinedTypeName","pathNode":{"id":10117,"name":"Rounding","nameLocations":["8297:8:40"],"nodeType":"IdentifierPath","referencedDeclaration":9750,"src":"8297:8:40"},"referencedDeclaration":9750,"src":"8297:8:40","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$9750","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"8285:30:40"},"returnParameters":{"id":10123,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10122,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10149,"src":"8339:7:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10121,"name":"uint256","nodeType":"ElementaryTypeName","src":"8339:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8338:9:40"},"scope":10609,"src":"8272:237:40","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":10280,"nodeType":"Block","src":"8694:922:40","statements":[{"assignments":[10158],"declarations":[{"constant":false,"id":10158,"mutability":"mutable","name":"result","nameLocation":"8712:6:40","nodeType":"VariableDeclaration","scope":10280,"src":"8704:14:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10157,"name":"uint256","nodeType":"ElementaryTypeName","src":"8704:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10160,"initialValue":{"hexValue":"30","id":10159,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8721:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"8704:18:40"},{"id":10277,"nodeType":"UncheckedBlock","src":"8732:855:40","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10165,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10163,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10161,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10152,"src":"8760:5:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":10162,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8769:3:40","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"8760:12:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":10164,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8775:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8760:16:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10175,"nodeType":"IfStatement","src":"8756:99:40","trueBody":{"id":10174,"nodeType":"Block","src":"8778:77:40","statements":[{"expression":{"id":10168,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10166,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10152,"src":"8796:5:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"313238","id":10167,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8806:3:40","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"8796:13:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10169,"nodeType":"ExpressionStatement","src":"8796:13:40"},{"expression":{"id":10172,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10170,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10158,"src":"8827:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"313238","id":10171,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8837:3:40","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"8827:13:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10173,"nodeType":"ExpressionStatement","src":"8827:13:40"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10180,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10178,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10176,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10152,"src":"8872:5:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3634","id":10177,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8881:2:40","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"8872:11:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":10179,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8886:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8872:15:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10190,"nodeType":"IfStatement","src":"8868:96:40","trueBody":{"id":10189,"nodeType":"Block","src":"8889:75:40","statements":[{"expression":{"id":10183,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10181,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10152,"src":"8907:5:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3634","id":10182,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8917:2:40","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"8907:12:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10184,"nodeType":"ExpressionStatement","src":"8907:12:40"},{"expression":{"id":10187,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10185,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10158,"src":"8937:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3634","id":10186,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8947:2:40","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"8937:12:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10188,"nodeType":"ExpressionStatement","src":"8937:12:40"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10195,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10193,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10191,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10152,"src":"8981:5:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3332","id":10192,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8990:2:40","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"8981:11:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":10194,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8995:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8981:15:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10205,"nodeType":"IfStatement","src":"8977:96:40","trueBody":{"id":10204,"nodeType":"Block","src":"8998:75:40","statements":[{"expression":{"id":10198,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10196,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10152,"src":"9016:5:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3332","id":10197,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9026:2:40","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"9016:12:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10199,"nodeType":"ExpressionStatement","src":"9016:12:40"},{"expression":{"id":10202,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10200,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10158,"src":"9046:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":10201,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9056:2:40","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"9046:12:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10203,"nodeType":"ExpressionStatement","src":"9046:12:40"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10210,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10208,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10206,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10152,"src":"9090:5:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3136","id":10207,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9099:2:40","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"9090:11:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":10209,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9104:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9090:15:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10220,"nodeType":"IfStatement","src":"9086:96:40","trueBody":{"id":10219,"nodeType":"Block","src":"9107:75:40","statements":[{"expression":{"id":10213,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10211,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10152,"src":"9125:5:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3136","id":10212,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9135:2:40","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"9125:12:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10214,"nodeType":"ExpressionStatement","src":"9125:12:40"},{"expression":{"id":10217,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10215,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10158,"src":"9155:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":10216,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9165:2:40","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"9155:12:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10218,"nodeType":"ExpressionStatement","src":"9155:12:40"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10225,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10223,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10221,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10152,"src":"9199:5:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":10222,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9208:1:40","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"9199:10:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":10224,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9212:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9199:14:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10235,"nodeType":"IfStatement","src":"9195:93:40","trueBody":{"id":10234,"nodeType":"Block","src":"9215:73:40","statements":[{"expression":{"id":10228,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10226,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10152,"src":"9233:5:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"38","id":10227,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9243:1:40","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"9233:11:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10229,"nodeType":"ExpressionStatement","src":"9233:11:40"},{"expression":{"id":10232,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10230,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10158,"src":"9262:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":10231,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9272:1:40","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"9262:11:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10233,"nodeType":"ExpressionStatement","src":"9262:11:40"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10240,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10238,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10236,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10152,"src":"9305:5:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"34","id":10237,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9314:1:40","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"9305:10:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":10239,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9318:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9305:14:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10250,"nodeType":"IfStatement","src":"9301:93:40","trueBody":{"id":10249,"nodeType":"Block","src":"9321:73:40","statements":[{"expression":{"id":10243,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10241,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10152,"src":"9339:5:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":10242,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9349:1:40","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"9339:11:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10244,"nodeType":"ExpressionStatement","src":"9339:11:40"},{"expression":{"id":10247,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10245,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10158,"src":"9368:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":10246,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9378:1:40","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"9368:11:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10248,"nodeType":"ExpressionStatement","src":"9368:11:40"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10255,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10253,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10251,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10152,"src":"9411:5:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"32","id":10252,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9420:1:40","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"9411:10:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":10254,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9424:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9411:14:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10265,"nodeType":"IfStatement","src":"9407:93:40","trueBody":{"id":10264,"nodeType":"Block","src":"9427:73:40","statements":[{"expression":{"id":10258,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10256,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10152,"src":"9445:5:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"32","id":10257,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9455:1:40","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"9445:11:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10259,"nodeType":"ExpressionStatement","src":"9445:11:40"},{"expression":{"id":10262,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10260,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10158,"src":"9474:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":10261,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9484:1:40","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"9474:11:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10263,"nodeType":"ExpressionStatement","src":"9474:11:40"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10270,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10268,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10266,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10152,"src":"9517:5:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":10267,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9526:1:40","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9517:10:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":10269,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9530:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9517:14:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10276,"nodeType":"IfStatement","src":"9513:64:40","trueBody":{"id":10275,"nodeType":"Block","src":"9533:44:40","statements":[{"expression":{"id":10273,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10271,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10158,"src":"9551:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":10272,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9561:1:40","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9551:11:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10274,"nodeType":"ExpressionStatement","src":"9551:11:40"}]}}]},{"expression":{"id":10278,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10158,"src":"9603:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":10156,"id":10279,"nodeType":"Return","src":"9596:13:40"}]},"documentation":{"id":10150,"nodeType":"StructuredDocumentation","src":"8515:113:40","text":" @dev Return the log in base 2, rounded down, of a positive value.\n Returns 0 if given 0."},"id":10281,"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"8642:4:40","nodeType":"FunctionDefinition","parameters":{"id":10153,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10152,"mutability":"mutable","name":"value","nameLocation":"8655:5:40","nodeType":"VariableDeclaration","scope":10281,"src":"8647:13:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10151,"name":"uint256","nodeType":"ElementaryTypeName","src":"8647:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8646:15:40"},"returnParameters":{"id":10156,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10155,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10281,"src":"8685:7:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10154,"name":"uint256","nodeType":"ElementaryTypeName","src":"8685:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8684:9:40"},"scope":10609,"src":"8633:983:40","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":10316,"nodeType":"Block","src":"9849:165:40","statements":[{"id":10315,"nodeType":"UncheckedBlock","src":"9859:149:40","statements":[{"assignments":[10293],"declarations":[{"constant":false,"id":10293,"mutability":"mutable","name":"result","nameLocation":"9891:6:40","nodeType":"VariableDeclaration","scope":10315,"src":"9883:14:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10292,"name":"uint256","nodeType":"ElementaryTypeName","src":"9883:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10297,"initialValue":{"arguments":[{"id":10295,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10284,"src":"9905:5:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10294,"name":"log2","nodeType":"Identifier","overloadedDeclarations":[10281,10317],"referencedDeclaration":10281,"src":"9900:4:40","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":10296,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9900:11:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9883:28:40"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10313,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10298,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10293,"src":"9932:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":10308,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_enum$_Rounding_$9750","typeString":"enum Math.Rounding"},"id":10302,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10299,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10287,"src":"9942:8:40","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$9750","typeString":"enum Math.Rounding"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":10300,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9750,"src":"9954:8:40","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$9750_$","typeString":"type(enum Math.Rounding)"}},"id":10301,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9963:2:40","memberName":"Up","nodeType":"MemberAccess","referencedDeclaration":9748,"src":"9954:11:40","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$9750","typeString":"enum Math.Rounding"}},"src":"9942:23:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10307,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10305,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":10303,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9969:1:40","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":10304,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10293,"src":"9974:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9969:11:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":10306,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10284,"src":"9983:5:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9969:19:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"9942:46:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":10310,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9995:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":10311,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"9942:54:40","trueExpression":{"hexValue":"31","id":10309,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9991:1:40","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":10312,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9941:56:40","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"9932:65:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":10291,"id":10314,"nodeType":"Return","src":"9925:72:40"}]}]},"documentation":{"id":10282,"nodeType":"StructuredDocumentation","src":"9622:142:40","text":" @dev Return the log in base 2, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"id":10317,"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"9778:4:40","nodeType":"FunctionDefinition","parameters":{"id":10288,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10284,"mutability":"mutable","name":"value","nameLocation":"9791:5:40","nodeType":"VariableDeclaration","scope":10317,"src":"9783:13:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10283,"name":"uint256","nodeType":"ElementaryTypeName","src":"9783:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10287,"mutability":"mutable","name":"rounding","nameLocation":"9807:8:40","nodeType":"VariableDeclaration","scope":10317,"src":"9798:17:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$9750","typeString":"enum Math.Rounding"},"typeName":{"id":10286,"nodeType":"UserDefinedTypeName","pathNode":{"id":10285,"name":"Rounding","nameLocations":["9798:8:40"],"nodeType":"IdentifierPath","referencedDeclaration":9750,"src":"9798:8:40"},"referencedDeclaration":9750,"src":"9798:8:40","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$9750","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"9782:34:40"},"returnParameters":{"id":10291,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10290,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10317,"src":"9840:7:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10289,"name":"uint256","nodeType":"ElementaryTypeName","src":"9840:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9839:9:40"},"scope":10609,"src":"9769:245:40","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":10445,"nodeType":"Block","src":"10201:854:40","statements":[{"assignments":[10326],"declarations":[{"constant":false,"id":10326,"mutability":"mutable","name":"result","nameLocation":"10219:6:40","nodeType":"VariableDeclaration","scope":10445,"src":"10211:14:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10325,"name":"uint256","nodeType":"ElementaryTypeName","src":"10211:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10328,"initialValue":{"hexValue":"30","id":10327,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10228:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"10211:18:40"},{"id":10442,"nodeType":"UncheckedBlock","src":"10239:787:40","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10333,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10329,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10320,"src":"10267:5:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"},"id":10332,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":10330,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10276:2:40","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":10331,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10282:2:40","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"10276:8:40","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"10267:17:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10345,"nodeType":"IfStatement","src":"10263:103:40","trueBody":{"id":10344,"nodeType":"Block","src":"10286:80:40","statements":[{"expression":{"id":10338,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10334,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10320,"src":"10304:5:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"},"id":10337,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":10335,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10313:2:40","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":10336,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10319:2:40","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"10313:8:40","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"10304:17:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10339,"nodeType":"ExpressionStatement","src":"10304:17:40"},{"expression":{"id":10342,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10340,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10326,"src":"10339:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3634","id":10341,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10349:2:40","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"10339:12:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10343,"nodeType":"ExpressionStatement","src":"10339:12:40"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10350,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10346,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10320,"src":"10383:5:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"},"id":10349,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":10347,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10392:2:40","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":10348,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10398:2:40","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"10392:8:40","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"10383:17:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10362,"nodeType":"IfStatement","src":"10379:103:40","trueBody":{"id":10361,"nodeType":"Block","src":"10402:80:40","statements":[{"expression":{"id":10355,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10351,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10320,"src":"10420:5:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"},"id":10354,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":10352,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10429:2:40","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":10353,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10435:2:40","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"10429:8:40","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"10420:17:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10356,"nodeType":"ExpressionStatement","src":"10420:17:40"},{"expression":{"id":10359,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10357,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10326,"src":"10455:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":10358,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10465:2:40","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"10455:12:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10360,"nodeType":"ExpressionStatement","src":"10455:12:40"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10367,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10363,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10320,"src":"10499:5:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":10366,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":10364,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10508:2:40","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":10365,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10514:2:40","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"10508:8:40","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"10499:17:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10379,"nodeType":"IfStatement","src":"10495:103:40","trueBody":{"id":10378,"nodeType":"Block","src":"10518:80:40","statements":[{"expression":{"id":10372,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10368,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10320,"src":"10536:5:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":10371,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":10369,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10545:2:40","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":10370,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10551:2:40","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"10545:8:40","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"10536:17:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10373,"nodeType":"ExpressionStatement","src":"10536:17:40"},{"expression":{"id":10376,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10374,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10326,"src":"10571:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":10375,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10581:2:40","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"10571:12:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10377,"nodeType":"ExpressionStatement","src":"10571:12:40"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10384,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10380,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10320,"src":"10615:5:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":10383,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":10381,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10624:2:40","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":10382,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10630:1:40","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"10624:7:40","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"10615:16:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10396,"nodeType":"IfStatement","src":"10611:100:40","trueBody":{"id":10395,"nodeType":"Block","src":"10633:78:40","statements":[{"expression":{"id":10389,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10385,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10320,"src":"10651:5:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":10388,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":10386,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10660:2:40","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":10387,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10666:1:40","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"10660:7:40","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"10651:16:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10390,"nodeType":"ExpressionStatement","src":"10651:16:40"},{"expression":{"id":10393,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10391,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10326,"src":"10685:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":10392,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10695:1:40","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"10685:11:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10394,"nodeType":"ExpressionStatement","src":"10685:11:40"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10401,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10397,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10320,"src":"10728:5:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":10400,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":10398,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10737:2:40","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":10399,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10743:1:40","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"10737:7:40","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"10728:16:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10413,"nodeType":"IfStatement","src":"10724:100:40","trueBody":{"id":10412,"nodeType":"Block","src":"10746:78:40","statements":[{"expression":{"id":10406,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10402,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10320,"src":"10764:5:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":10405,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":10403,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10773:2:40","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":10404,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10779:1:40","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"10773:7:40","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"10764:16:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10407,"nodeType":"ExpressionStatement","src":"10764:16:40"},{"expression":{"id":10410,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10408,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10326,"src":"10798:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":10409,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10808:1:40","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"10798:11:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10411,"nodeType":"ExpressionStatement","src":"10798:11:40"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10418,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10414,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10320,"src":"10841:5:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":10417,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":10415,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10850:2:40","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":10416,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10856:1:40","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"10850:7:40","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"10841:16:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10430,"nodeType":"IfStatement","src":"10837:100:40","trueBody":{"id":10429,"nodeType":"Block","src":"10859:78:40","statements":[{"expression":{"id":10423,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10419,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10320,"src":"10877:5:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":10422,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":10420,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10886:2:40","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":10421,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10892:1:40","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"10886:7:40","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"10877:16:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10424,"nodeType":"ExpressionStatement","src":"10877:16:40"},{"expression":{"id":10427,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10425,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10326,"src":"10911:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":10426,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10921:1:40","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"10911:11:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10428,"nodeType":"ExpressionStatement","src":"10911:11:40"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10435,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10431,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10320,"src":"10954:5:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"id":10434,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":10432,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10963:2:40","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"31","id":10433,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10969:1:40","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"10963:7:40","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"}},"src":"10954:16:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10441,"nodeType":"IfStatement","src":"10950:66:40","trueBody":{"id":10440,"nodeType":"Block","src":"10972:44:40","statements":[{"expression":{"id":10438,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10436,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10326,"src":"10990:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":10437,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11000:1:40","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"10990:11:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10439,"nodeType":"ExpressionStatement","src":"10990:11:40"}]}}]},{"expression":{"id":10443,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10326,"src":"11042:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":10324,"id":10444,"nodeType":"Return","src":"11035:13:40"}]},"documentation":{"id":10318,"nodeType":"StructuredDocumentation","src":"10020:114:40","text":" @dev Return the log in base 10, rounded down, of a positive value.\n Returns 0 if given 0."},"id":10446,"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"10148:5:40","nodeType":"FunctionDefinition","parameters":{"id":10321,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10320,"mutability":"mutable","name":"value","nameLocation":"10162:5:40","nodeType":"VariableDeclaration","scope":10446,"src":"10154:13:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10319,"name":"uint256","nodeType":"ElementaryTypeName","src":"10154:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10153:15:40"},"returnParameters":{"id":10324,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10323,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10446,"src":"10192:7:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10322,"name":"uint256","nodeType":"ElementaryTypeName","src":"10192:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10191:9:40"},"scope":10609,"src":"10139:916:40","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":10481,"nodeType":"Block","src":"11290:167:40","statements":[{"id":10480,"nodeType":"UncheckedBlock","src":"11300:151:40","statements":[{"assignments":[10458],"declarations":[{"constant":false,"id":10458,"mutability":"mutable","name":"result","nameLocation":"11332:6:40","nodeType":"VariableDeclaration","scope":10480,"src":"11324:14:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10457,"name":"uint256","nodeType":"ElementaryTypeName","src":"11324:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10462,"initialValue":{"arguments":[{"id":10460,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10449,"src":"11347:5:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10459,"name":"log10","nodeType":"Identifier","overloadedDeclarations":[10446,10482],"referencedDeclaration":10446,"src":"11341:5:40","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":10461,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11341:12:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"11324:29:40"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10478,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10463,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10458,"src":"11374:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":10473,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_enum$_Rounding_$9750","typeString":"enum Math.Rounding"},"id":10467,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10464,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10452,"src":"11384:8:40","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$9750","typeString":"enum Math.Rounding"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":10465,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9750,"src":"11396:8:40","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$9750_$","typeString":"type(enum Math.Rounding)"}},"id":10466,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11405:2:40","memberName":"Up","nodeType":"MemberAccess","referencedDeclaration":9748,"src":"11396:11:40","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$9750","typeString":"enum Math.Rounding"}},"src":"11384:23:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10472,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10470,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":10468,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11411:2:40","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"id":10469,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10458,"src":"11417:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11411:12:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":10471,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10449,"src":"11426:5:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11411:20:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"11384:47:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":10475,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11438:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":10476,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"11384:55:40","trueExpression":{"hexValue":"31","id":10474,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11434:1:40","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":10477,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11383:57:40","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"11374:66:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":10456,"id":10479,"nodeType":"Return","src":"11367:73:40"}]}]},"documentation":{"id":10447,"nodeType":"StructuredDocumentation","src":"11061:143:40","text":" @dev Return the log in base 10, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"id":10482,"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"11218:5:40","nodeType":"FunctionDefinition","parameters":{"id":10453,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10449,"mutability":"mutable","name":"value","nameLocation":"11232:5:40","nodeType":"VariableDeclaration","scope":10482,"src":"11224:13:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10448,"name":"uint256","nodeType":"ElementaryTypeName","src":"11224:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10452,"mutability":"mutable","name":"rounding","nameLocation":"11248:8:40","nodeType":"VariableDeclaration","scope":10482,"src":"11239:17:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$9750","typeString":"enum Math.Rounding"},"typeName":{"id":10451,"nodeType":"UserDefinedTypeName","pathNode":{"id":10450,"name":"Rounding","nameLocations":["11239:8:40"],"nodeType":"IdentifierPath","referencedDeclaration":9750,"src":"11239:8:40"},"referencedDeclaration":9750,"src":"11239:8:40","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$9750","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"11223:34:40"},"returnParameters":{"id":10456,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10455,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10482,"src":"11281:7:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10454,"name":"uint256","nodeType":"ElementaryTypeName","src":"11281:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11280:9:40"},"scope":10609,"src":"11209:248:40","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":10568,"nodeType":"Block","src":"11771:600:40","statements":[{"assignments":[10491],"declarations":[{"constant":false,"id":10491,"mutability":"mutable","name":"result","nameLocation":"11789:6:40","nodeType":"VariableDeclaration","scope":10568,"src":"11781:14:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10490,"name":"uint256","nodeType":"ElementaryTypeName","src":"11781:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10493,"initialValue":{"hexValue":"30","id":10492,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11798:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"11781:18:40"},{"id":10565,"nodeType":"UncheckedBlock","src":"11809:533:40","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10498,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10496,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10494,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10485,"src":"11837:5:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":10495,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11846:3:40","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"11837:12:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":10497,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11852:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11837:16:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10508,"nodeType":"IfStatement","src":"11833:98:40","trueBody":{"id":10507,"nodeType":"Block","src":"11855:76:40","statements":[{"expression":{"id":10501,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10499,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10485,"src":"11873:5:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"313238","id":10500,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11883:3:40","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"11873:13:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10502,"nodeType":"ExpressionStatement","src":"11873:13:40"},{"expression":{"id":10505,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10503,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10491,"src":"11904:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":10504,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11914:2:40","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"11904:12:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10506,"nodeType":"ExpressionStatement","src":"11904:12:40"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10513,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10511,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10509,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10485,"src":"11948:5:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3634","id":10510,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11957:2:40","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"11948:11:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":10512,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11962:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11948:15:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10523,"nodeType":"IfStatement","src":"11944:95:40","trueBody":{"id":10522,"nodeType":"Block","src":"11965:74:40","statements":[{"expression":{"id":10516,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10514,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10485,"src":"11983:5:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3634","id":10515,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11993:2:40","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"11983:12:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10517,"nodeType":"ExpressionStatement","src":"11983:12:40"},{"expression":{"id":10520,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10518,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10491,"src":"12013:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":10519,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12023:1:40","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"12013:11:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10521,"nodeType":"ExpressionStatement","src":"12013:11:40"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10528,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10526,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10524,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10485,"src":"12056:5:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3332","id":10525,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12065:2:40","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"12056:11:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":10527,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12070:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12056:15:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10538,"nodeType":"IfStatement","src":"12052:95:40","trueBody":{"id":10537,"nodeType":"Block","src":"12073:74:40","statements":[{"expression":{"id":10531,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10529,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10485,"src":"12091:5:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3332","id":10530,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12101:2:40","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"12091:12:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10532,"nodeType":"ExpressionStatement","src":"12091:12:40"},{"expression":{"id":10535,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10533,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10491,"src":"12121:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":10534,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12131:1:40","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"12121:11:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10536,"nodeType":"ExpressionStatement","src":"12121:11:40"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10543,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10541,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10539,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10485,"src":"12164:5:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3136","id":10540,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12173:2:40","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"12164:11:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":10542,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12178:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12164:15:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10553,"nodeType":"IfStatement","src":"12160:95:40","trueBody":{"id":10552,"nodeType":"Block","src":"12181:74:40","statements":[{"expression":{"id":10546,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10544,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10485,"src":"12199:5:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3136","id":10545,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12209:2:40","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"12199:12:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10547,"nodeType":"ExpressionStatement","src":"12199:12:40"},{"expression":{"id":10550,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10548,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10491,"src":"12229:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":10549,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12239:1:40","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"12229:11:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10551,"nodeType":"ExpressionStatement","src":"12229:11:40"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10558,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10556,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10554,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10485,"src":"12272:5:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":10555,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12281:1:40","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"12272:10:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":10557,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12285:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12272:14:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10564,"nodeType":"IfStatement","src":"12268:64:40","trueBody":{"id":10563,"nodeType":"Block","src":"12288:44:40","statements":[{"expression":{"id":10561,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10559,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10491,"src":"12306:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":10560,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12316:1:40","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"12306:11:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10562,"nodeType":"ExpressionStatement","src":"12306:11:40"}]}}]},{"expression":{"id":10566,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10491,"src":"12358:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":10489,"id":10567,"nodeType":"Return","src":"12351:13:40"}]},"documentation":{"id":10483,"nodeType":"StructuredDocumentation","src":"11463:240:40","text":" @dev Return the log in base 256, rounded down, of a positive value.\n Returns 0 if given 0.\n Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string."},"id":10569,"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"11717:6:40","nodeType":"FunctionDefinition","parameters":{"id":10486,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10485,"mutability":"mutable","name":"value","nameLocation":"11732:5:40","nodeType":"VariableDeclaration","scope":10569,"src":"11724:13:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10484,"name":"uint256","nodeType":"ElementaryTypeName","src":"11724:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11723:15:40"},"returnParameters":{"id":10489,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10488,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10569,"src":"11762:7:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10487,"name":"uint256","nodeType":"ElementaryTypeName","src":"11762:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11761:9:40"},"scope":10609,"src":"11708:663:40","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":10607,"nodeType":"Block","src":"12608:174:40","statements":[{"id":10606,"nodeType":"UncheckedBlock","src":"12618:158:40","statements":[{"assignments":[10581],"declarations":[{"constant":false,"id":10581,"mutability":"mutable","name":"result","nameLocation":"12650:6:40","nodeType":"VariableDeclaration","scope":10606,"src":"12642:14:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10580,"name":"uint256","nodeType":"ElementaryTypeName","src":"12642:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10585,"initialValue":{"arguments":[{"id":10583,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10572,"src":"12666:5:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10582,"name":"log256","nodeType":"Identifier","overloadedDeclarations":[10569,10608],"referencedDeclaration":10569,"src":"12659:6:40","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":10584,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12659:13:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12642:30:40"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10604,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10586,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10581,"src":"12693:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":10599,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_enum$_Rounding_$9750","typeString":"enum Math.Rounding"},"id":10590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10587,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10575,"src":"12703:8:40","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$9750","typeString":"enum Math.Rounding"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":10588,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9750,"src":"12715:8:40","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$9750_$","typeString":"type(enum Math.Rounding)"}},"id":10589,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"12724:2:40","memberName":"Up","nodeType":"MemberAccess","referencedDeclaration":9748,"src":"12715:11:40","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$9750","typeString":"enum Math.Rounding"}},"src":"12703:23:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10598,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10596,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":10591,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12730:1:40","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10594,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10592,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10581,"src":"12736:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"33","id":10593,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12746:1:40","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"12736:11:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":10595,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12735:13:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12730:18:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":10597,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10572,"src":"12751:5:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12730:26:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"12703:53:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":10601,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12763:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":10602,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"12703:61:40","trueExpression":{"hexValue":"31","id":10600,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12759:1:40","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":10603,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12702:63:40","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"12693:72:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":10579,"id":10605,"nodeType":"Return","src":"12686:79:40"}]}]},"documentation":{"id":10570,"nodeType":"StructuredDocumentation","src":"12377:144:40","text":" @dev Return the log in base 256, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"id":10608,"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"12535:6:40","nodeType":"FunctionDefinition","parameters":{"id":10576,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10572,"mutability":"mutable","name":"value","nameLocation":"12550:5:40","nodeType":"VariableDeclaration","scope":10608,"src":"12542:13:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10571,"name":"uint256","nodeType":"ElementaryTypeName","src":"12542:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10575,"mutability":"mutable","name":"rounding","nameLocation":"12566:8:40","nodeType":"VariableDeclaration","scope":10608,"src":"12557:17:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$9750","typeString":"enum Math.Rounding"},"typeName":{"id":10574,"nodeType":"UserDefinedTypeName","pathNode":{"id":10573,"name":"Rounding","nameLocations":["12557:8:40"],"nodeType":"IdentifierPath","referencedDeclaration":9750,"src":"12557:8:40"},"referencedDeclaration":9750,"src":"12557:8:40","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$9750","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"12541:34:40"},"returnParameters":{"id":10579,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10578,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10608,"src":"12599:7:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10577,"name":"uint256","nodeType":"ElementaryTypeName","src":"12599:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12598:9:40"},"scope":10609,"src":"12526:256:40","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":10610,"src":"202:12582:40","usedErrors":[]}],"src":"103:12682:40"},"id":40},"@openzeppelin/contracts/utils/math/SignedMath.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/math/SignedMath.sol","exportedSymbols":{"SignedMath":[10714]},"id":10715,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":10611,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"109:23:41"},{"abstract":false,"baseContracts":[],"canonicalName":"SignedMath","contractDependencies":[],"contractKind":"library","documentation":{"id":10612,"nodeType":"StructuredDocumentation","src":"134:80:41","text":" @dev Standard signed math utilities missing in the Solidity language."},"fullyImplemented":true,"id":10714,"linearizedBaseContracts":[10714],"name":"SignedMath","nameLocation":"223:10:41","nodeType":"ContractDefinition","nodes":[{"body":{"id":10629,"nodeType":"Block","src":"375:37:41","statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":10624,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10622,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10615,"src":"392:1:41","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":10623,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10617,"src":"396:1:41","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"392:5:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":10626,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10617,"src":"404:1:41","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":10627,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"392:13:41","trueExpression":{"id":10625,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10615,"src":"400:1:41","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":10621,"id":10628,"nodeType":"Return","src":"385:20:41"}]},"documentation":{"id":10613,"nodeType":"StructuredDocumentation","src":"240:66:41","text":" @dev Returns the largest of two signed numbers."},"id":10630,"implemented":true,"kind":"function","modifiers":[],"name":"max","nameLocation":"320:3:41","nodeType":"FunctionDefinition","parameters":{"id":10618,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10615,"mutability":"mutable","name":"a","nameLocation":"331:1:41","nodeType":"VariableDeclaration","scope":10630,"src":"324:8:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":10614,"name":"int256","nodeType":"ElementaryTypeName","src":"324:6:41","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":10617,"mutability":"mutable","name":"b","nameLocation":"341:1:41","nodeType":"VariableDeclaration","scope":10630,"src":"334:8:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":10616,"name":"int256","nodeType":"ElementaryTypeName","src":"334:6:41","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"323:20:41"},"returnParameters":{"id":10621,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10620,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10630,"src":"367:6:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":10619,"name":"int256","nodeType":"ElementaryTypeName","src":"367:6:41","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"366:8:41"},"scope":10714,"src":"311:101:41","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":10647,"nodeType":"Block","src":"554:37:41","statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":10642,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10640,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10633,"src":"571:1:41","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":10641,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10635,"src":"575:1:41","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"571:5:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":10644,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10635,"src":"583:1:41","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":10645,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"571:13:41","trueExpression":{"id":10643,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10633,"src":"579:1:41","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":10639,"id":10646,"nodeType":"Return","src":"564:20:41"}]},"documentation":{"id":10631,"nodeType":"StructuredDocumentation","src":"418:67:41","text":" @dev Returns the smallest of two signed numbers."},"id":10648,"implemented":true,"kind":"function","modifiers":[],"name":"min","nameLocation":"499:3:41","nodeType":"FunctionDefinition","parameters":{"id":10636,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10633,"mutability":"mutable","name":"a","nameLocation":"510:1:41","nodeType":"VariableDeclaration","scope":10648,"src":"503:8:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":10632,"name":"int256","nodeType":"ElementaryTypeName","src":"503:6:41","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":10635,"mutability":"mutable","name":"b","nameLocation":"520:1:41","nodeType":"VariableDeclaration","scope":10648,"src":"513:8:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":10634,"name":"int256","nodeType":"ElementaryTypeName","src":"513:6:41","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"502:20:41"},"returnParameters":{"id":10639,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10638,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10648,"src":"546:6:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":10637,"name":"int256","nodeType":"ElementaryTypeName","src":"546:6:41","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"545:8:41"},"scope":10714,"src":"490:101:41","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":10691,"nodeType":"Block","src":"796:162:41","statements":[{"assignments":[10659],"declarations":[{"constant":false,"id":10659,"mutability":"mutable","name":"x","nameLocation":"865:1:41","nodeType":"VariableDeclaration","scope":10691,"src":"858:8:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":10658,"name":"int256","nodeType":"ElementaryTypeName","src":"858:6:41","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":10672,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":10671,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":10662,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10660,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10651,"src":"870:1:41","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":10661,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10653,"src":"874:1:41","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"870:5:41","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":10663,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"869:7:41","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":10669,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":10666,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10664,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10651,"src":"881:1:41","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":10665,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10653,"src":"885:1:41","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"881:5:41","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":10667,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"880:7:41","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":10668,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"891:1:41","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"880:12:41","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":10670,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"879:14:41","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"869:24:41","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"858:35:41"},{"expression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":10689,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10673,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10659,"src":"910:1:41","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":10687,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10681,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":10678,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10659,"src":"930:1:41","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":10677,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"922:7:41","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":10676,"name":"uint256","nodeType":"ElementaryTypeName","src":"922:7:41","typeDescriptions":{}}},"id":10679,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"922:10:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"323535","id":10680,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"936:3:41","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"255"},"src":"922:17:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10675,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"915:6:41","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":10674,"name":"int256","nodeType":"ElementaryTypeName","src":"915:6:41","typeDescriptions":{}}},"id":10682,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"915:25:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":10685,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10683,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10651,"src":"944:1:41","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":10684,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10653,"src":"948:1:41","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"944:5:41","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":10686,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"943:7:41","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"915:35:41","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":10688,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"914:37:41","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"910:41:41","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":10657,"id":10690,"nodeType":"Return","src":"903:48:41"}]},"documentation":{"id":10649,"nodeType":"StructuredDocumentation","src":"597:126:41","text":" @dev Returns the average of two signed numbers without overflow.\n The result is rounded towards zero."},"id":10692,"implemented":true,"kind":"function","modifiers":[],"name":"average","nameLocation":"737:7:41","nodeType":"FunctionDefinition","parameters":{"id":10654,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10651,"mutability":"mutable","name":"a","nameLocation":"752:1:41","nodeType":"VariableDeclaration","scope":10692,"src":"745:8:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":10650,"name":"int256","nodeType":"ElementaryTypeName","src":"745:6:41","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":10653,"mutability":"mutable","name":"b","nameLocation":"762:1:41","nodeType":"VariableDeclaration","scope":10692,"src":"755:8:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":10652,"name":"int256","nodeType":"ElementaryTypeName","src":"755:6:41","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"744:20:41"},"returnParameters":{"id":10657,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10656,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10692,"src":"788:6:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":10655,"name":"int256","nodeType":"ElementaryTypeName","src":"788:6:41","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"787:8:41"},"scope":10714,"src":"728:230:41","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":10712,"nodeType":"Block","src":"1102:158:41","statements":[{"id":10711,"nodeType":"UncheckedBlock","src":"1112:142:41","statements":[{"expression":{"arguments":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":10704,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10702,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10695,"src":"1227:1:41","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"30","id":10703,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1232:1:41","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1227:6:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":10707,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"1240:2:41","subExpression":{"id":10706,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10695,"src":"1241:1:41","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":10708,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"1227:15:41","trueExpression":{"id":10705,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10695,"src":"1236:1:41","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":10701,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1219:7:41","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":10700,"name":"uint256","nodeType":"ElementaryTypeName","src":"1219:7:41","typeDescriptions":{}}},"id":10709,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1219:24:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":10699,"id":10710,"nodeType":"Return","src":"1212:31:41"}]}]},"documentation":{"id":10693,"nodeType":"StructuredDocumentation","src":"964:78:41","text":" @dev Returns the absolute unsigned value of a signed value."},"id":10713,"implemented":true,"kind":"function","modifiers":[],"name":"abs","nameLocation":"1056:3:41","nodeType":"FunctionDefinition","parameters":{"id":10696,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10695,"mutability":"mutable","name":"n","nameLocation":"1067:1:41","nodeType":"VariableDeclaration","scope":10713,"src":"1060:8:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":10694,"name":"int256","nodeType":"ElementaryTypeName","src":"1060:6:41","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1059:10:41"},"returnParameters":{"id":10699,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10698,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10713,"src":"1093:7:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10697,"name":"uint256","nodeType":"ElementaryTypeName","src":"1093:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1092:9:41"},"scope":10714,"src":"1047:213:41","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":10715,"src":"215:1047:41","usedErrors":[]}],"src":"109:1154:41"},"id":41},"src/dao/IDAO.sol":{"ast":{"absolutePath":"src/dao/IDAO.sol","exportedSymbols":{"IDAO":[10865]},"id":10866,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":10716,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:42"},{"abstract":false,"baseContracts":[],"canonicalName":"IDAO","contractDependencies":[],"contractKind":"interface","documentation":{"id":10717,"nodeType":"StructuredDocumentation","src":"72:175:42","text":"@title IDAO\n @author Aragon X - 2022-2023\n @notice The interface required for DAOs within the Aragon App DAO framework.\n @custom:security-contact sirt@aragon.org"},"fullyImplemented":false,"id":10865,"linearizedBaseContracts":[10865],"name":"IDAO","nameLocation":"257:4:42","nodeType":"ContractDefinition","nodes":[{"canonicalName":"IDAO.Action","id":10724,"members":[{"constant":false,"id":10719,"mutability":"mutable","name":"to","nameLocation":"604:2:42","nodeType":"VariableDeclaration","scope":10724,"src":"596:10:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10718,"name":"address","nodeType":"ElementaryTypeName","src":"596:7:42","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10721,"mutability":"mutable","name":"value","nameLocation":"624:5:42","nodeType":"VariableDeclaration","scope":10724,"src":"616:13:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10720,"name":"uint256","nodeType":"ElementaryTypeName","src":"616:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10723,"mutability":"mutable","name":"data","nameLocation":"645:4:42","nodeType":"VariableDeclaration","scope":10724,"src":"639:10:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":10722,"name":"bytes","nodeType":"ElementaryTypeName","src":"639:5:42","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"name":"Action","nameLocation":"579:6:42","nodeType":"StructDefinition","scope":10865,"src":"572:84:42","visibility":"public"},{"documentation":{"id":10725,"nodeType":"StructuredDocumentation","src":"662:500:42","text":"@notice Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\n @param _where The address of the contract.\n @param _who The address of a EOA or contract to give the permissions.\n @param _permissionId The permission identifier.\n @param _data The optional data passed to the `PermissionCondition` registered.\n @return Returns true if the address has permission, false if not."},"functionSelector":"fdef9106","id":10738,"implemented":false,"kind":"function","modifiers":[],"name":"hasPermission","nameLocation":"1176:13:42","nodeType":"FunctionDefinition","parameters":{"id":10734,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10727,"mutability":"mutable","name":"_where","nameLocation":"1207:6:42","nodeType":"VariableDeclaration","scope":10738,"src":"1199:14:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10726,"name":"address","nodeType":"ElementaryTypeName","src":"1199:7:42","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10729,"mutability":"mutable","name":"_who","nameLocation":"1231:4:42","nodeType":"VariableDeclaration","scope":10738,"src":"1223:12:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10728,"name":"address","nodeType":"ElementaryTypeName","src":"1223:7:42","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10731,"mutability":"mutable","name":"_permissionId","nameLocation":"1253:13:42","nodeType":"VariableDeclaration","scope":10738,"src":"1245:21:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":10730,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1245:7:42","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":10733,"mutability":"mutable","name":"_data","nameLocation":"1289:5:42","nodeType":"VariableDeclaration","scope":10738,"src":"1276:18:42","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":10732,"name":"bytes","nodeType":"ElementaryTypeName","src":"1276:5:42","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1189:111:42"},"returnParameters":{"id":10737,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10736,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10738,"src":"1324:4:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10735,"name":"bool","nodeType":"ElementaryTypeName","src":"1324:4:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1323:6:42"},"scope":10865,"src":"1167:163:42","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":10739,"nodeType":"StructuredDocumentation","src":"1336:125:42","text":"@notice Updates the DAO metadata (e.g., an IPFS hash).\n @param _metadata The IPFS hash of the new metadata object."},"functionSelector":"ee57e36f","id":10744,"implemented":false,"kind":"function","modifiers":[],"name":"setMetadata","nameLocation":"1475:11:42","nodeType":"FunctionDefinition","parameters":{"id":10742,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10741,"mutability":"mutable","name":"_metadata","nameLocation":"1502:9:42","nodeType":"VariableDeclaration","scope":10744,"src":"1487:24:42","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":10740,"name":"bytes","nodeType":"ElementaryTypeName","src":"1487:5:42","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1486:26:42"},"returnParameters":{"id":10743,"nodeType":"ParameterList","parameters":[],"src":"1521:0:42"},"scope":10865,"src":"1466:56:42","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"anonymous":false,"documentation":{"id":10745,"nodeType":"StructuredDocumentation","src":"1528:119:42","text":"@notice Emitted when the DAO metadata is updated.\n @param metadata The IPFS hash of the new metadata object."},"eventSelector":"bb39ebb37e60fb5d606ffdb749d2336e56b88e6c88c4bd6513b308f643186eed","id":10749,"name":"MetadataSet","nameLocation":"1658:11:42","nodeType":"EventDefinition","parameters":{"id":10748,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10747,"indexed":false,"mutability":"mutable","name":"metadata","nameLocation":"1676:8:42","nodeType":"VariableDeclaration","scope":10749,"src":"1670:14:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":10746,"name":"bytes","nodeType":"ElementaryTypeName","src":"1670:5:42","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1669:16:42"},"src":"1652:34:42"},{"documentation":{"id":10750,"nodeType":"StructuredDocumentation","src":"1692:864:42","text":"@notice Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted.\n @param _callId The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce.\n @param _actions The array of actions.\n @param _allowFailureMap A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\n @return The array of results obtained from the executed actions in `bytes`.\n @return The resulting failure map containing the actions have actually failed."},"functionSelector":"c71bf324","id":10766,"implemented":false,"kind":"function","modifiers":[],"name":"execute","nameLocation":"2570:7:42","nodeType":"FunctionDefinition","parameters":{"id":10759,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10752,"mutability":"mutable","name":"_callId","nameLocation":"2595:7:42","nodeType":"VariableDeclaration","scope":10766,"src":"2587:15:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":10751,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2587:7:42","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":10756,"mutability":"mutable","name":"_actions","nameLocation":"2628:8:42","nodeType":"VariableDeclaration","scope":10766,"src":"2612:24:42","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Action_$10724_memory_ptr_$dyn_memory_ptr","typeString":"struct IDAO.Action[]"},"typeName":{"baseType":{"id":10754,"nodeType":"UserDefinedTypeName","pathNode":{"id":10753,"name":"Action","nameLocations":["2612:6:42"],"nodeType":"IdentifierPath","referencedDeclaration":10724,"src":"2612:6:42"},"referencedDeclaration":10724,"src":"2612:6:42","typeDescriptions":{"typeIdentifier":"t_struct$_Action_$10724_storage_ptr","typeString":"struct IDAO.Action"}},"id":10755,"nodeType":"ArrayTypeName","src":"2612:8:42","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Action_$10724_storage_$dyn_storage_ptr","typeString":"struct IDAO.Action[]"}},"visibility":"internal"},{"constant":false,"id":10758,"mutability":"mutable","name":"_allowFailureMap","nameLocation":"2654:16:42","nodeType":"VariableDeclaration","scope":10766,"src":"2646:24:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10757,"name":"uint256","nodeType":"ElementaryTypeName","src":"2646:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2577:99:42"},"returnParameters":{"id":10765,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10762,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10766,"src":"2695:14:42","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":10760,"name":"bytes","nodeType":"ElementaryTypeName","src":"2695:5:42","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":10761,"nodeType":"ArrayTypeName","src":"2695:7:42","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"},{"constant":false,"id":10764,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10766,"src":"2711:7:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10763,"name":"uint256","nodeType":"ElementaryTypeName","src":"2711:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2694:25:42"},"scope":10865,"src":"2561:159:42","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"anonymous":false,"documentation":{"id":10767,"nodeType":"StructuredDocumentation","src":"2726:611:42","text":"@notice Emitted when a proposal is executed.\n @param actor The address of the caller.\n @param callId The ID of the call.\n @param actions The array of actions executed.\n @param allowFailureMap The allow failure map encoding which actions are allowed to fail.\n @param failureMap The failure map encoding which actions have failed.\n @param execResults The array with the results of the executed actions.\n @dev The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce."},"eventSelector":"d4e57c2049f004fb297ef78591cd409503ceb6b2c722d7ffed032fc99e5f3b58","id":10784,"name":"Executed","nameLocation":"3348:8:42","nodeType":"EventDefinition","parameters":{"id":10783,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10769,"indexed":true,"mutability":"mutable","name":"actor","nameLocation":"3382:5:42","nodeType":"VariableDeclaration","scope":10784,"src":"3366:21:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10768,"name":"address","nodeType":"ElementaryTypeName","src":"3366:7:42","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10771,"indexed":false,"mutability":"mutable","name":"callId","nameLocation":"3405:6:42","nodeType":"VariableDeclaration","scope":10784,"src":"3397:14:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":10770,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3397:7:42","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":10775,"indexed":false,"mutability":"mutable","name":"actions","nameLocation":"3430:7:42","nodeType":"VariableDeclaration","scope":10784,"src":"3421:16:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Action_$10724_memory_ptr_$dyn_memory_ptr","typeString":"struct IDAO.Action[]"},"typeName":{"baseType":{"id":10773,"nodeType":"UserDefinedTypeName","pathNode":{"id":10772,"name":"Action","nameLocations":["3421:6:42"],"nodeType":"IdentifierPath","referencedDeclaration":10724,"src":"3421:6:42"},"referencedDeclaration":10724,"src":"3421:6:42","typeDescriptions":{"typeIdentifier":"t_struct$_Action_$10724_storage_ptr","typeString":"struct IDAO.Action"}},"id":10774,"nodeType":"ArrayTypeName","src":"3421:8:42","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Action_$10724_storage_$dyn_storage_ptr","typeString":"struct IDAO.Action[]"}},"visibility":"internal"},{"constant":false,"id":10777,"indexed":false,"mutability":"mutable","name":"allowFailureMap","nameLocation":"3455:15:42","nodeType":"VariableDeclaration","scope":10784,"src":"3447:23:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10776,"name":"uint256","nodeType":"ElementaryTypeName","src":"3447:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10779,"indexed":false,"mutability":"mutable","name":"failureMap","nameLocation":"3488:10:42","nodeType":"VariableDeclaration","scope":10784,"src":"3480:18:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10778,"name":"uint256","nodeType":"ElementaryTypeName","src":"3480:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10782,"indexed":false,"mutability":"mutable","name":"execResults","nameLocation":"3516:11:42","nodeType":"VariableDeclaration","scope":10784,"src":"3508:19:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":10780,"name":"bytes","nodeType":"ElementaryTypeName","src":"3508:5:42","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":10781,"nodeType":"ArrayTypeName","src":"3508:7:42","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"}],"src":"3356:177:42"},"src":"3342:192:42"},{"anonymous":false,"documentation":{"id":10785,"nodeType":"StructuredDocumentation","src":"3540:279:42","text":"@notice Emitted when a standard callback is registered.\n @param interfaceId The ID of the interface.\n @param callbackSelector The selector of the callback function.\n @param magicNumber The magic number to be registered for the callback function selector."},"eventSelector":"fc72fd547553f7a663e0048e590afc9c47b56a4242e960f31cf4c62e23d308b9","id":10793,"name":"StandardCallbackRegistered","nameLocation":"3830:26:42","nodeType":"EventDefinition","parameters":{"id":10792,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10787,"indexed":false,"mutability":"mutable","name":"interfaceId","nameLocation":"3873:11:42","nodeType":"VariableDeclaration","scope":10793,"src":"3866:18:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":10786,"name":"bytes4","nodeType":"ElementaryTypeName","src":"3866:6:42","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"},{"constant":false,"id":10789,"indexed":false,"mutability":"mutable","name":"callbackSelector","nameLocation":"3901:16:42","nodeType":"VariableDeclaration","scope":10793,"src":"3894:23:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":10788,"name":"bytes4","nodeType":"ElementaryTypeName","src":"3894:6:42","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"},{"constant":false,"id":10791,"indexed":false,"mutability":"mutable","name":"magicNumber","nameLocation":"3934:11:42","nodeType":"VariableDeclaration","scope":10793,"src":"3927:18:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":10790,"name":"bytes4","nodeType":"ElementaryTypeName","src":"3927:6:42","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"3856:95:42"},"src":"3824:128:42"},{"documentation":{"id":10794,"nodeType":"StructuredDocumentation","src":"3958:298:42","text":"@notice Deposits (native) tokens to the DAO contract with a reference string.\n @param _token The address of the token or address(0) in case of the native token.\n @param _amount The amount of tokens to deposit.\n @param _reference The reference describing the deposit reason."},"functionSelector":"bfe07da6","id":10803,"implemented":false,"kind":"function","modifiers":[],"name":"deposit","nameLocation":"4270:7:42","nodeType":"FunctionDefinition","parameters":{"id":10801,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10796,"mutability":"mutable","name":"_token","nameLocation":"4286:6:42","nodeType":"VariableDeclaration","scope":10803,"src":"4278:14:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10795,"name":"address","nodeType":"ElementaryTypeName","src":"4278:7:42","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10798,"mutability":"mutable","name":"_amount","nameLocation":"4302:7:42","nodeType":"VariableDeclaration","scope":10803,"src":"4294:15:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10797,"name":"uint256","nodeType":"ElementaryTypeName","src":"4294:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10800,"mutability":"mutable","name":"_reference","nameLocation":"4327:10:42","nodeType":"VariableDeclaration","scope":10803,"src":"4311:26:42","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string"},"typeName":{"id":10799,"name":"string","nodeType":"ElementaryTypeName","src":"4311:6:42","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"4277:61:42"},"returnParameters":{"id":10802,"nodeType":"ParameterList","parameters":[],"src":"4355:0:42"},"scope":10865,"src":"4261:95:42","stateMutability":"payable","virtual":false,"visibility":"external"},{"anonymous":false,"documentation":{"id":10804,"nodeType":"StructuredDocumentation","src":"4362:297:42","text":"@notice Emitted when a token deposit has been made to the DAO.\n @param sender The address of the sender.\n @param token The address of the deposited token.\n @param amount The amount of tokens deposited.\n @param _reference The reference describing the deposit reason."},"eventSelector":"2bc500cf071be2d1c1458ed6ff484cd4db4345ada8943dee7ff29e7af3558f76","id":10814,"name":"Deposited","nameLocation":"4670:9:42","nodeType":"EventDefinition","parameters":{"id":10813,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10806,"indexed":true,"mutability":"mutable","name":"sender","nameLocation":"4705:6:42","nodeType":"VariableDeclaration","scope":10814,"src":"4689:22:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10805,"name":"address","nodeType":"ElementaryTypeName","src":"4689:7:42","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10808,"indexed":true,"mutability":"mutable","name":"token","nameLocation":"4737:5:42","nodeType":"VariableDeclaration","scope":10814,"src":"4721:21:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10807,"name":"address","nodeType":"ElementaryTypeName","src":"4721:7:42","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10810,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"4760:6:42","nodeType":"VariableDeclaration","scope":10814,"src":"4752:14:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10809,"name":"uint256","nodeType":"ElementaryTypeName","src":"4752:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10812,"indexed":false,"mutability":"mutable","name":"_reference","nameLocation":"4783:10:42","nodeType":"VariableDeclaration","scope":10814,"src":"4776:17:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":10811,"name":"string","nodeType":"ElementaryTypeName","src":"4776:6:42","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"4679:120:42"},"src":"4664:136:42"},{"anonymous":false,"documentation":{"id":10815,"nodeType":"StructuredDocumentation","src":"4806:400:42","text":"@notice Emitted when a native token deposit has been made to the DAO.\n @dev This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).\n @param sender The address of the sender.\n @param amount The amount of native tokens deposited."},"eventSelector":"62c2c8e34665db7c56b2cabd7f5fb9702ccd352ffa8150147e450797e9f8e8f3","id":10821,"name":"NativeTokenDeposited","nameLocation":"5217:20:42","nodeType":"EventDefinition","parameters":{"id":10820,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10817,"indexed":false,"mutability":"mutable","name":"sender","nameLocation":"5246:6:42","nodeType":"VariableDeclaration","scope":10821,"src":"5238:14:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10816,"name":"address","nodeType":"ElementaryTypeName","src":"5238:7:42","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10819,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"5262:6:42","nodeType":"VariableDeclaration","scope":10821,"src":"5254:14:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10818,"name":"uint256","nodeType":"ElementaryTypeName","src":"5254:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5237:32:42"},"src":"5211:59:42"},{"documentation":{"id":10822,"nodeType":"StructuredDocumentation","src":"5276:140:42","text":"@notice Setter for the trusted forwarder verifying the meta transaction.\n @param _trustedForwarder The trusted forwarder address."},"functionSelector":"da742228","id":10827,"implemented":false,"kind":"function","modifiers":[],"name":"setTrustedForwarder","nameLocation":"5430:19:42","nodeType":"FunctionDefinition","parameters":{"id":10825,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10824,"mutability":"mutable","name":"_trustedForwarder","nameLocation":"5458:17:42","nodeType":"VariableDeclaration","scope":10827,"src":"5450:25:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10823,"name":"address","nodeType":"ElementaryTypeName","src":"5450:7:42","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5449:27:42"},"returnParameters":{"id":10826,"nodeType":"ParameterList","parameters":[],"src":"5485:0:42"},"scope":10865,"src":"5421:65:42","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":10828,"nodeType":"StructuredDocumentation","src":"5492:123:42","text":"@notice Getter for the trusted forwarder verifying the meta transaction.\n @return The trusted forwarder address."},"functionSelector":"ce1b815f","id":10833,"implemented":false,"kind":"function","modifiers":[],"name":"getTrustedForwarder","nameLocation":"5629:19:42","nodeType":"FunctionDefinition","parameters":{"id":10829,"nodeType":"ParameterList","parameters":[],"src":"5648:2:42"},"returnParameters":{"id":10832,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10831,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10833,"src":"5674:7:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10830,"name":"address","nodeType":"ElementaryTypeName","src":"5674:7:42","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5673:9:42"},"scope":10865,"src":"5620:63:42","stateMutability":"view","virtual":false,"visibility":"external"},{"anonymous":false,"documentation":{"id":10834,"nodeType":"StructuredDocumentation","src":"5689:118:42","text":"@notice Emitted when a new TrustedForwarder is set on the DAO.\n @param forwarder the new forwarder address."},"eventSelector":"d91237492a9e30cd2faf361fc103998a382ff0ec2b1b07dc1cbebb76ae2f1ea2","id":10838,"name":"TrustedForwarderSet","nameLocation":"5818:19:42","nodeType":"EventDefinition","parameters":{"id":10837,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10836,"indexed":false,"mutability":"mutable","name":"forwarder","nameLocation":"5846:9:42","nodeType":"VariableDeclaration","scope":10838,"src":"5838:17:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10835,"name":"address","nodeType":"ElementaryTypeName","src":"5838:7:42","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5837:19:42"},"src":"5812:45:42"},{"documentation":{"id":10839,"nodeType":"StructuredDocumentation","src":"5863:378:42","text":"@notice Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\n @param _hash The hash of the data to be signed.\n @param _signature The signature byte array associated with `_hash`.\n @return Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not."},"functionSelector":"1626ba7e","id":10848,"implemented":false,"kind":"function","modifiers":[],"name":"isValidSignature","nameLocation":"6255:16:42","nodeType":"FunctionDefinition","parameters":{"id":10844,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10841,"mutability":"mutable","name":"_hash","nameLocation":"6280:5:42","nodeType":"VariableDeclaration","scope":10848,"src":"6272:13:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":10840,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6272:7:42","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":10843,"mutability":"mutable","name":"_signature","nameLocation":"6300:10:42","nodeType":"VariableDeclaration","scope":10848,"src":"6287:23:42","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":10842,"name":"bytes","nodeType":"ElementaryTypeName","src":"6287:5:42","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6271:40:42"},"returnParameters":{"id":10847,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10846,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10848,"src":"6330:6:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":10845,"name":"bytes4","nodeType":"ElementaryTypeName","src":"6330:6:42","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"6329:8:42"},"scope":10865,"src":"6246:92:42","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":10849,"nodeType":"StructuredDocumentation","src":"6344:385:42","text":"@notice Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\n @param _interfaceId The ID of the interface.\n @param _callbackSelector The selector of the callback function.\n @param _magicNumber The magic number to be registered for the function signature."},"functionSelector":"c4a50145","id":10858,"implemented":false,"kind":"function","modifiers":[],"name":"registerStandardCallback","nameLocation":"6743:24:42","nodeType":"FunctionDefinition","parameters":{"id":10856,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10851,"mutability":"mutable","name":"_interfaceId","nameLocation":"6784:12:42","nodeType":"VariableDeclaration","scope":10858,"src":"6777:19:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":10850,"name":"bytes4","nodeType":"ElementaryTypeName","src":"6777:6:42","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"},{"constant":false,"id":10853,"mutability":"mutable","name":"_callbackSelector","nameLocation":"6813:17:42","nodeType":"VariableDeclaration","scope":10858,"src":"6806:24:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":10852,"name":"bytes4","nodeType":"ElementaryTypeName","src":"6806:6:42","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"},{"constant":false,"id":10855,"mutability":"mutable","name":"_magicNumber","nameLocation":"6847:12:42","nodeType":"VariableDeclaration","scope":10858,"src":"6840:19:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":10854,"name":"bytes4","nodeType":"ElementaryTypeName","src":"6840:6:42","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"6767:98:42"},"returnParameters":{"id":10857,"nodeType":"ParameterList","parameters":[],"src":"6874:0:42"},"scope":10865,"src":"6734:141:42","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":10859,"nodeType":"StructuredDocumentation","src":"6881:158:42","text":"@notice Removed function being left here to not corrupt the IDAO interface ID. Any call will revert.\n @dev Introduced in v1.0.0. Removed in v1.4.0."},"functionSelector":"3e2ab0d9","id":10864,"implemented":false,"kind":"function","modifiers":[],"name":"setSignatureValidator","nameLocation":"7053:21:42","nodeType":"FunctionDefinition","parameters":{"id":10862,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10861,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10864,"src":"7075:7:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10860,"name":"address","nodeType":"ElementaryTypeName","src":"7075:7:42","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7074:9:42"},"returnParameters":{"id":10863,"nodeType":"ParameterList","parameters":[],"src":"7092:0:42"},"scope":10865,"src":"7044:49:42","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":10866,"src":"247:6848:42","usedErrors":[]}],"src":"47:7049:42"},"id":42},"src/mocks/dao/DAOMock.sol":{"ast":{"absolutePath":"src/mocks/dao/DAOMock.sol","exportedSymbols":{"DAOMock":[11027],"IDAO":[10865]},"id":11028,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":10867,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:43"},{"absolutePath":"src/dao/IDAO.sol","file":"../../dao/IDAO.sol","id":10869,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":11028,"sourceUnit":10866,"src":"72:40:43","symbolAliases":[{"foreign":{"id":10868,"name":"IDAO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10865,"src":"80:4:43","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":10871,"name":"IDAO","nameLocations":["228:4:43"],"nodeType":"IdentifierPath","referencedDeclaration":10865,"src":"228:4:43"},"id":10872,"nodeType":"InheritanceSpecifier","src":"228:4:43"}],"canonicalName":"DAOMock","contractDependencies":[],"contractKind":"contract","documentation":{"id":10870,"nodeType":"StructuredDocumentation","src":"114:94:43","text":"@notice A mock DAO that anyone can set permissions in.\n @dev DO NOT USE IN PRODUCTION!"},"fullyImplemented":true,"id":11027,"linearizedBaseContracts":[11027,10865],"name":"DAOMock","nameLocation":"217:7:43","nodeType":"ContractDefinition","nodes":[{"constant":false,"functionSelector":"0a1f41ca","id":10874,"mutability":"mutable","name":"hasPermissionReturnValueMock","nameLocation":"251:28:43","nodeType":"VariableDeclaration","scope":11027,"src":"239:40:43","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10873,"name":"bool","nodeType":"ElementaryTypeName","src":"239:4:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"public"},{"body":{"id":10883,"nodeType":"Block","src":"372:77:43","statements":[{"expression":{"id":10881,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10879,"name":"hasPermissionReturnValueMock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10874,"src":"382:28:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10880,"name":"_hasPermissionReturnValueMock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10876,"src":"413:29:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"382:60:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10882,"nodeType":"ExpressionStatement","src":"382:60:43"}]},"functionSelector":"80e4cbe1","id":10884,"implemented":true,"kind":"function","modifiers":[],"name":"setHasPermissionReturnValueMock","nameLocation":"295:31:43","nodeType":"FunctionDefinition","parameters":{"id":10877,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10876,"mutability":"mutable","name":"_hasPermissionReturnValueMock","nameLocation":"332:29:43","nodeType":"VariableDeclaration","scope":10884,"src":"327:34:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10875,"name":"bool","nodeType":"ElementaryTypeName","src":"327:4:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"326:36:43"},"returnParameters":{"id":10878,"nodeType":"ParameterList","parameters":[],"src":"372:0:43"},"scope":11027,"src":"286:163:43","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[10738],"body":{"id":10906,"nodeType":"Block","src":"627:98:43","statements":[{"expression":{"components":[{"id":10898,"name":"_where","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10886,"src":"638:6:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10899,"name":"_who","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10888,"src":"646:4:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10900,"name":"_permissionId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10890,"src":"652:13:43","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":10901,"name":"_data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10892,"src":"667:5:43","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":10902,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"637:36:43","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$","typeString":"tuple(address,address,bytes32,bytes memory)"}},"id":10903,"nodeType":"ExpressionStatement","src":"637:36:43"},{"expression":{"id":10904,"name":"hasPermissionReturnValueMock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10874,"src":"690:28:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":10897,"id":10905,"nodeType":"Return","src":"683:35:43"}]},"functionSelector":"fdef9106","id":10907,"implemented":true,"kind":"function","modifiers":[],"name":"hasPermission","nameLocation":"464:13:43","nodeType":"FunctionDefinition","overrides":{"id":10894,"nodeType":"OverrideSpecifier","overrides":[],"src":"603:8:43"},"parameters":{"id":10893,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10886,"mutability":"mutable","name":"_where","nameLocation":"495:6:43","nodeType":"VariableDeclaration","scope":10907,"src":"487:14:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10885,"name":"address","nodeType":"ElementaryTypeName","src":"487:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10888,"mutability":"mutable","name":"_who","nameLocation":"519:4:43","nodeType":"VariableDeclaration","scope":10907,"src":"511:12:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10887,"name":"address","nodeType":"ElementaryTypeName","src":"511:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10890,"mutability":"mutable","name":"_permissionId","nameLocation":"541:13:43","nodeType":"VariableDeclaration","scope":10907,"src":"533:21:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":10889,"name":"bytes32","nodeType":"ElementaryTypeName","src":"533:7:43","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":10892,"mutability":"mutable","name":"_data","nameLocation":"577:5:43","nodeType":"VariableDeclaration","scope":10907,"src":"564:18:43","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":10891,"name":"bytes","nodeType":"ElementaryTypeName","src":"564:5:43","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"477:111:43"},"returnParameters":{"id":10897,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10896,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10907,"src":"621:4:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10895,"name":"bool","nodeType":"ElementaryTypeName","src":"621:4:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"620:6:43"},"scope":11027,"src":"455:270:43","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[10833],"body":{"id":10918,"nodeType":"Block","src":"801:34:43","statements":[{"expression":{"arguments":[{"hexValue":"30","id":10915,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"826:1:43","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":10914,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"818:7:43","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10913,"name":"address","nodeType":"ElementaryTypeName","src":"818:7:43","typeDescriptions":{}}},"id":10916,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"818:10:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":10912,"id":10917,"nodeType":"Return","src":"811:17:43"}]},"functionSelector":"ce1b815f","id":10919,"implemented":true,"kind":"function","modifiers":[],"name":"getTrustedForwarder","nameLocation":"740:19:43","nodeType":"FunctionDefinition","overrides":{"id":10909,"nodeType":"OverrideSpecifier","overrides":[],"src":"774:8:43"},"parameters":{"id":10908,"nodeType":"ParameterList","parameters":[],"src":"759:2:43"},"returnParameters":{"id":10912,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10911,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10919,"src":"792:7:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10910,"name":"address","nodeType":"ElementaryTypeName","src":"792:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"791:9:43"},"scope":11027,"src":"731:104:43","stateMutability":"pure","virtual":false,"visibility":"public"},{"baseFunctions":[10827],"body":{"id":10928,"nodeType":"Block","src":"920:36:43","statements":[{"expression":{"components":[{"id":10925,"name":"_trustedForwarder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10921,"src":"931:17:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":10926,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"930:19:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":10927,"nodeType":"ExpressionStatement","src":"930:19:43"}]},"functionSelector":"da742228","id":10929,"implemented":true,"kind":"function","modifiers":[],"name":"setTrustedForwarder","nameLocation":"850:19:43","nodeType":"FunctionDefinition","overrides":{"id":10923,"nodeType":"OverrideSpecifier","overrides":[],"src":"911:8:43"},"parameters":{"id":10922,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10921,"mutability":"mutable","name":"_trustedForwarder","nameLocation":"878:17:43","nodeType":"VariableDeclaration","scope":10929,"src":"870:25:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10920,"name":"address","nodeType":"ElementaryTypeName","src":"870:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"869:27:43"},"returnParameters":{"id":10924,"nodeType":"ParameterList","parameters":[],"src":"920:0:43"},"scope":11027,"src":"841:115:43","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[10744],"body":{"id":10938,"nodeType":"Block","src":"1032:28:43","statements":[{"expression":{"components":[{"id":10935,"name":"_metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10931,"src":"1043:9:43","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"id":10936,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1042:11:43","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":10937,"nodeType":"ExpressionStatement","src":"1042:11:43"}]},"functionSelector":"ee57e36f","id":10939,"implemented":true,"kind":"function","modifiers":[],"name":"setMetadata","nameLocation":"971:11:43","nodeType":"FunctionDefinition","overrides":{"id":10933,"nodeType":"OverrideSpecifier","overrides":[],"src":"1023:8:43"},"parameters":{"id":10932,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10931,"mutability":"mutable","name":"_metadata","nameLocation":"998:9:43","nodeType":"VariableDeclaration","scope":10939,"src":"983:24:43","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":10930,"name":"bytes","nodeType":"ElementaryTypeName","src":"983:5:43","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"982:26:43"},"returnParameters":{"id":10934,"nodeType":"ParameterList","parameters":[],"src":"1032:0:43"},"scope":11027,"src":"962:98:43","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[10766],"body":{"id":10966,"nodeType":"Block","src":"1255:102:43","statements":[{"eventCall":{"arguments":[{"expression":{"id":10957,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967281,"src":"1279:3:43","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10958,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1283:6:43","memberName":"sender","nodeType":"MemberAccess","src":"1279:10:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10959,"name":"callId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10941,"src":"1291:6:43","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":10960,"name":"_actions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10945,"src":"1299:8:43","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Action_$10724_memory_ptr_$dyn_memory_ptr","typeString":"struct IDAO.Action memory[] memory"}},{"id":10961,"name":"allowFailureMap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10947,"src":"1309:15:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":10962,"name":"failureMap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10954,"src":"1326:10:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":10963,"name":"execResults","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10952,"src":"1338:11:43","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_array$_t_struct$_Action_$10724_memory_ptr_$dyn_memory_ptr","typeString":"struct IDAO.Action memory[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}],"id":10956,"name":"Executed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10784,"src":"1270:8:43","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_bytes32_$_t_array$_t_struct$_Action_$10724_memory_ptr_$dyn_memory_ptr_$_t_uint256_$_t_uint256_$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$returns$__$","typeString":"function (address,bytes32,struct IDAO.Action memory[] memory,uint256,uint256,bytes memory[] memory)"}},"id":10964,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1270:80:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10965,"nodeType":"EmitStatement","src":"1265:85:43"}]},"functionSelector":"c71bf324","id":10967,"implemented":true,"kind":"function","modifiers":[],"name":"execute","nameLocation":"1075:7:43","nodeType":"FunctionDefinition","overrides":{"id":10949,"nodeType":"OverrideSpecifier","overrides":[],"src":"1189:8:43"},"parameters":{"id":10948,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10941,"mutability":"mutable","name":"callId","nameLocation":"1100:6:43","nodeType":"VariableDeclaration","scope":10967,"src":"1092:14:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":10940,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1092:7:43","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":10945,"mutability":"mutable","name":"_actions","nameLocation":"1132:8:43","nodeType":"VariableDeclaration","scope":10967,"src":"1116:24:43","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Action_$10724_memory_ptr_$dyn_memory_ptr","typeString":"struct IDAO.Action[]"},"typeName":{"baseType":{"id":10943,"nodeType":"UserDefinedTypeName","pathNode":{"id":10942,"name":"Action","nameLocations":["1116:6:43"],"nodeType":"IdentifierPath","referencedDeclaration":10724,"src":"1116:6:43"},"referencedDeclaration":10724,"src":"1116:6:43","typeDescriptions":{"typeIdentifier":"t_struct$_Action_$10724_storage_ptr","typeString":"struct IDAO.Action"}},"id":10944,"nodeType":"ArrayTypeName","src":"1116:8:43","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Action_$10724_storage_$dyn_storage_ptr","typeString":"struct IDAO.Action[]"}},"visibility":"internal"},{"constant":false,"id":10947,"mutability":"mutable","name":"allowFailureMap","nameLocation":"1158:15:43","nodeType":"VariableDeclaration","scope":10967,"src":"1150:23:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10946,"name":"uint256","nodeType":"ElementaryTypeName","src":"1150:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1082:97:43"},"returnParameters":{"id":10955,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10952,"mutability":"mutable","name":"execResults","nameLocation":"1222:11:43","nodeType":"VariableDeclaration","scope":10967,"src":"1207:26:43","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":10950,"name":"bytes","nodeType":"ElementaryTypeName","src":"1207:5:43","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":10951,"nodeType":"ArrayTypeName","src":"1207:7:43","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"},{"constant":false,"id":10954,"mutability":"mutable","name":"failureMap","nameLocation":"1243:10:43","nodeType":"VariableDeclaration","scope":10967,"src":"1235:18:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10953,"name":"uint256","nodeType":"ElementaryTypeName","src":"1235:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1206:48:43"},"scope":11027,"src":"1066:291:43","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[10803],"body":{"id":10982,"nodeType":"Block","src":"1497:46:43","statements":[{"expression":{"components":[{"id":10977,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10969,"src":"1508:6:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10978,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10971,"src":"1516:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":10979,"name":"_reference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10973,"src":"1525:10:43","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}}],"id":10980,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1507:29:43","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint256_$_t_string_calldata_ptr_$","typeString":"tuple(address,uint256,string calldata)"}},"id":10981,"nodeType":"ExpressionStatement","src":"1507:29:43"}]},"functionSelector":"bfe07da6","id":10983,"implemented":true,"kind":"function","modifiers":[],"name":"deposit","nameLocation":"1372:7:43","nodeType":"FunctionDefinition","overrides":{"id":10975,"nodeType":"OverrideSpecifier","overrides":[],"src":"1488:8:43"},"parameters":{"id":10974,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10969,"mutability":"mutable","name":"_token","nameLocation":"1397:6:43","nodeType":"VariableDeclaration","scope":10983,"src":"1389:14:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10968,"name":"address","nodeType":"ElementaryTypeName","src":"1389:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10971,"mutability":"mutable","name":"_amount","nameLocation":"1421:7:43","nodeType":"VariableDeclaration","scope":10983,"src":"1413:15:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10970,"name":"uint256","nodeType":"ElementaryTypeName","src":"1413:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10973,"mutability":"mutable","name":"_reference","nameLocation":"1454:10:43","nodeType":"VariableDeclaration","scope":10983,"src":"1438:26:43","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string"},"typeName":{"id":10972,"name":"string","nodeType":"ElementaryTypeName","src":"1438:6:43","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1379:91:43"},"returnParameters":{"id":10976,"nodeType":"ParameterList","parameters":[],"src":"1497:0:43"},"scope":11027,"src":"1363:180:43","stateMutability":"payable","virtual":false,"visibility":"external"},{"baseFunctions":[10864],"body":{"id":10992,"nodeType":"Block","src":"1632:38:43","statements":[{"expression":{"components":[{"id":10989,"name":"_signatureValidator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10985,"src":"1643:19:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":10990,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1642:21:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":10991,"nodeType":"ExpressionStatement","src":"1642:21:43"}]},"functionSelector":"3e2ab0d9","id":10993,"implemented":true,"kind":"function","modifiers":[],"name":"setSignatureValidator","nameLocation":"1558:21:43","nodeType":"FunctionDefinition","overrides":{"id":10987,"nodeType":"OverrideSpecifier","overrides":[],"src":"1623:8:43"},"parameters":{"id":10986,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10985,"mutability":"mutable","name":"_signatureValidator","nameLocation":"1588:19:43","nodeType":"VariableDeclaration","scope":10993,"src":"1580:27:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10984,"name":"address","nodeType":"ElementaryTypeName","src":"1580:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1579:29:43"},"returnParameters":{"id":10988,"nodeType":"ParameterList","parameters":[],"src":"1632:0:43"},"scope":11027,"src":"1549:121:43","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[10848],"body":{"id":11009,"nodeType":"Block","src":"1804:56:43","statements":[{"expression":{"components":[{"id":11003,"name":"_hash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10995,"src":"1815:5:43","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":11004,"name":"_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10997,"src":"1822:10:43","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":11005,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1814:19:43","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes32_$_t_bytes_memory_ptr_$","typeString":"tuple(bytes32,bytes memory)"}},"id":11006,"nodeType":"ExpressionStatement","src":"1814:19:43"},{"expression":{"hexValue":"307830","id":11007,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1850:3:43","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0x0"},"functionReturnParameters":11002,"id":11008,"nodeType":"Return","src":"1843:10:43"}]},"functionSelector":"1626ba7e","id":11010,"implemented":true,"kind":"function","modifiers":[],"name":"isValidSignature","nameLocation":"1685:16:43","nodeType":"FunctionDefinition","overrides":{"id":10999,"nodeType":"OverrideSpecifier","overrides":[],"src":"1778:8:43"},"parameters":{"id":10998,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10995,"mutability":"mutable","name":"_hash","nameLocation":"1719:5:43","nodeType":"VariableDeclaration","scope":11010,"src":"1711:13:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":10994,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1711:7:43","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":10997,"mutability":"mutable","name":"_signature","nameLocation":"1747:10:43","nodeType":"VariableDeclaration","scope":11010,"src":"1734:23:43","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":10996,"name":"bytes","nodeType":"ElementaryTypeName","src":"1734:5:43","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1701:62:43"},"returnParameters":{"id":11002,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11001,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11010,"src":"1796:6:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":11000,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1796:6:43","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"1795:8:43"},"scope":11027,"src":"1676:184:43","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[10858],"body":{"id":11025,"nodeType":"Block","src":"2021:64:43","statements":[{"expression":{"components":[{"id":11020,"name":"_interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11012,"src":"2032:12:43","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":11021,"name":"_callbackSelector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11014,"src":"2046:17:43","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":11022,"name":"_magicNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11016,"src":"2065:12:43","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"id":11023,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2031:47:43","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes4_$_t_bytes4_$_t_bytes4_$","typeString":"tuple(bytes4,bytes4,bytes4)"}},"id":11024,"nodeType":"ExpressionStatement","src":"2031:47:43"}]},"functionSelector":"c4a50145","id":11026,"implemented":true,"kind":"function","modifiers":[],"name":"registerStandardCallback","nameLocation":"1875:24:43","nodeType":"FunctionDefinition","overrides":{"id":11018,"nodeType":"OverrideSpecifier","overrides":[],"src":"2012:8:43"},"parameters":{"id":11017,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11012,"mutability":"mutable","name":"_interfaceId","nameLocation":"1916:12:43","nodeType":"VariableDeclaration","scope":11026,"src":"1909:19:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":11011,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1909:6:43","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"},{"constant":false,"id":11014,"mutability":"mutable","name":"_callbackSelector","nameLocation":"1945:17:43","nodeType":"VariableDeclaration","scope":11026,"src":"1938:24:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":11013,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1938:6:43","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"},{"constant":false,"id":11016,"mutability":"mutable","name":"_magicNumber","nameLocation":"1979:12:43","nodeType":"VariableDeclaration","scope":11026,"src":"1972:19:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":11015,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1972:6:43","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"1899:98:43"},"returnParameters":{"id":11019,"nodeType":"ParameterList","parameters":[],"src":"2021:0:43"},"scope":11027,"src":"1866:219:43","stateMutability":"pure","virtual":false,"visibility":"external"}],"scope":11028,"src":"208:1879:43","usedErrors":[]}],"src":"47:2041:43"},"id":43},"src/mocks/permission/auth/DaoAuthorizableMock.sol":{"ast":{"absolutePath":"src/mocks/permission/auth/DaoAuthorizableMock.sol","exportedSymbols":{"DaoAuthorizable":[13096],"DaoAuthorizableMock":[11059],"IDAO":[10865]},"id":11060,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":11029,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:44"},{"absolutePath":"src/permission/auth/DaoAuthorizable.sol","file":"../../../permission/auth/DaoAuthorizable.sol","id":11031,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":11060,"sourceUnit":13097,"src":"72:77:44","symbolAliases":[{"foreign":{"id":11030,"name":"DaoAuthorizable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13096,"src":"80:15:44","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/dao/IDAO.sol","file":"../../../dao/IDAO.sol","id":11033,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":11060,"sourceUnit":10866,"src":"150:43:44","symbolAliases":[{"foreign":{"id":11032,"name":"IDAO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10865,"src":"158:4:44","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":11035,"name":"DaoAuthorizable","nameLocations":["346:15:44"],"nodeType":"IdentifierPath","referencedDeclaration":13096,"src":"346:15:44"},"id":11036,"nodeType":"InheritanceSpecifier","src":"346:15:44"}],"canonicalName":"DaoAuthorizableMock","contractDependencies":[],"contractKind":"contract","documentation":{"id":11034,"nodeType":"StructuredDocumentation","src":"195:119:44","text":"@notice A mock contract containing a function protected by the `auth` modifier.\n @dev DO NOT USE IN PRODUCTION!"},"fullyImplemented":true,"id":11059,"linearizedBaseContracts":[11059,13096,9294],"name":"DaoAuthorizableMock","nameLocation":"323:19:44","nodeType":"ContractDefinition","nodes":[{"constant":true,"functionSelector":"403f8575","id":11041,"mutability":"constant","name":"AUTHORIZED_FUNC_PERMISSION_ID","nameLocation":"392:29:44","nodeType":"VariableDeclaration","scope":11059,"src":"368:95:44","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":11037,"name":"bytes32","nodeType":"ElementaryTypeName","src":"368:7:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"415554484f52495a45445f46554e435f5045524d495353494f4e","id":11039,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"434:28:44","typeDescriptions":{"typeIdentifier":"t_stringliteral_6c28b2d088260f42eed051af4616ddda00554ec1880b580a4a9fbf40a70b09eb","typeString":"literal_string \"AUTHORIZED_FUNC_PERMISSION\""},"value":"AUTHORIZED_FUNC_PERMISSION"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_6c28b2d088260f42eed051af4616ddda00554ec1880b580a4a9fbf40a70b09eb","typeString":"literal_string \"AUTHORIZED_FUNC_PERMISSION\""}],"id":11038,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967288,"src":"424:9:44","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":11040,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"424:39:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"public"},{"body":{"id":11050,"nodeType":"Block","src":"515:2:44","statements":[]},"id":11051,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":11047,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11044,"src":"509:4:44","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}}],"id":11048,"kind":"baseConstructorSpecifier","modifierName":{"id":11046,"name":"DaoAuthorizable","nameLocations":["493:15:44"],"nodeType":"IdentifierPath","referencedDeclaration":13096,"src":"493:15:44"},"nodeType":"ModifierInvocation","src":"493:21:44"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":11045,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11044,"mutability":"mutable","name":"_dao","nameLocation":"487:4:44","nodeType":"VariableDeclaration","scope":11051,"src":"482:9:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"},"typeName":{"id":11043,"nodeType":"UserDefinedTypeName","pathNode":{"id":11042,"name":"IDAO","nameLocations":["482:4:44"],"nodeType":"IdentifierPath","referencedDeclaration":10865,"src":"482:4:44"},"referencedDeclaration":10865,"src":"482:4:44","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}},"visibility":"internal"}],"src":"481:11:44"},"returnParameters":{"id":11049,"nodeType":"ParameterList","parameters":[],"src":"515:0:44"},"scope":11059,"src":"470:47:44","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":11057,"nodeType":"Block","src":"663:8:44","statements":[]},"functionSelector":"f09e1623","id":11058,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":11054,"name":"AUTHORIZED_FUNC_PERMISSION_ID","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11041,"src":"579:29:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":11055,"kind":"modifierInvocation","modifierName":{"id":11053,"name":"auth","nameLocations":["574:4:44"],"nodeType":"IdentifierPath","referencedDeclaration":13095,"src":"574:4:44"},"nodeType":"ModifierInvocation","src":"574:35:44"}],"name":"authorizedFunc","nameLocation":"532:14:44","nodeType":"FunctionDefinition","parameters":{"id":11052,"nodeType":"ParameterList","parameters":[],"src":"546:2:44"},"returnParameters":{"id":11056,"nodeType":"ParameterList","parameters":[],"src":"663:0:44"},"scope":11059,"src":"523:148:44","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":11060,"src":"314:359:44","usedErrors":[13176]}],"src":"47:627:44"},"id":44},"src/mocks/permission/auth/DaoAuthorizableUpgradeableMock.sol":{"ast":{"absolutePath":"src/mocks/permission/auth/DaoAuthorizableUpgradeableMock.sol","exportedSymbols":{"DaoAuthorizableUpgradeable":[13161],"DaoAuthorizableUpgradeableMock":[11106],"IDAO":[10865]},"id":11107,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":11061,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:45"},{"absolutePath":"src/permission/auth/DaoAuthorizableUpgradeable.sol","file":"../../../permission/auth/DaoAuthorizableUpgradeable.sol","id":11063,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":11107,"sourceUnit":13162,"src":"72:99:45","symbolAliases":[{"foreign":{"id":11062,"name":"DaoAuthorizableUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13161,"src":"80:26:45","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/dao/IDAO.sol","file":"../../../dao/IDAO.sol","id":11065,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":11107,"sourceUnit":10866,"src":"172:43:45","symbolAliases":[{"foreign":{"id":11064,"name":"IDAO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10865,"src":"180:4:45","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":11067,"name":"DaoAuthorizableUpgradeable","nameLocations":["379:26:45"],"nodeType":"IdentifierPath","referencedDeclaration":13161,"src":"379:26:45"},"id":11068,"nodeType":"InheritanceSpecifier","src":"379:26:45"}],"canonicalName":"DaoAuthorizableUpgradeableMock","contractDependencies":[],"contractKind":"contract","documentation":{"id":11066,"nodeType":"StructuredDocumentation","src":"217:119:45","text":"@notice A mock contract containing a function protected by the `auth` modifier.\n @dev DO NOT USE IN PRODUCTION!"},"fullyImplemented":true,"id":11106,"linearizedBaseContracts":[11106,13161,2593,534],"name":"DaoAuthorizableUpgradeableMock","nameLocation":"345:30:45","nodeType":"ContractDefinition","nodes":[{"constant":true,"functionSelector":"403f8575","id":11073,"mutability":"constant","name":"AUTHORIZED_FUNC_PERMISSION_ID","nameLocation":"436:29:45","nodeType":"VariableDeclaration","scope":11106,"src":"412:95:45","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":11069,"name":"bytes32","nodeType":"ElementaryTypeName","src":"412:7:45","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"415554484f52495a45445f46554e435f5045524d495353494f4e","id":11071,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"478:28:45","typeDescriptions":{"typeIdentifier":"t_stringliteral_6c28b2d088260f42eed051af4616ddda00554ec1880b580a4a9fbf40a70b09eb","typeString":"literal_string \"AUTHORIZED_FUNC_PERMISSION\""},"value":"AUTHORIZED_FUNC_PERMISSION"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_6c28b2d088260f42eed051af4616ddda00554ec1880b580a4a9fbf40a70b09eb","typeString":"literal_string \"AUTHORIZED_FUNC_PERMISSION\""}],"id":11070,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967288,"src":"468:9:45","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":11072,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"468:39:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"public"},{"body":{"id":11085,"nodeType":"Block","src":"566:56:45","statements":[{"expression":{"arguments":[{"id":11082,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11076,"src":"610:4:45","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}],"id":11081,"name":"__DaoAuthorizableUpgradeable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13125,"src":"576:33:45","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IDAO_$10865_$returns$__$","typeString":"function (contract IDAO)"}},"id":11083,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"576:39:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11084,"nodeType":"ExpressionStatement","src":"576:39:45"}]},"functionSelector":"c4d66de8","id":11086,"implemented":true,"kind":"function","modifiers":[{"id":11079,"kind":"modifierInvocation","modifierName":{"id":11078,"name":"initializer","nameLocations":["554:11:45"],"nodeType":"IdentifierPath","referencedDeclaration":436,"src":"554:11:45"},"nodeType":"ModifierInvocation","src":"554:11:45"}],"name":"initialize","nameLocation":"523:10:45","nodeType":"FunctionDefinition","parameters":{"id":11077,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11076,"mutability":"mutable","name":"_dao","nameLocation":"539:4:45","nodeType":"VariableDeclaration","scope":11086,"src":"534:9:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"},"typeName":{"id":11075,"nodeType":"UserDefinedTypeName","pathNode":{"id":11074,"name":"IDAO","nameLocations":["534:4:45"],"nodeType":"IdentifierPath","referencedDeclaration":10865,"src":"534:4:45"},"referencedDeclaration":10865,"src":"534:4:45","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}},"visibility":"internal"}],"src":"533:11:45"},"returnParameters":{"id":11080,"nodeType":"ParameterList","parameters":[],"src":"566:0:45"},"scope":11106,"src":"514:108:45","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":11097,"nodeType":"Block","src":"863:56:45","statements":[{"expression":{"arguments":[{"id":11094,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11090,"src":"907:4:45","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}],"id":11093,"name":"__DaoAuthorizableUpgradeable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13125,"src":"873:33:45","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IDAO_$10865_$returns$__$","typeString":"function (contract IDAO)"}},"id":11095,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"873:39:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11096,"nodeType":"ExpressionStatement","src":"873:39:45"}]},"documentation":{"id":11087,"nodeType":"StructuredDocumentation","src":"628:184:45","text":"@notice The following function intentionally misses the `initializer` modifier\n to validate that `__DaoAuthorizableUpgradeable_init` cannot be called outside initialization."},"functionSelector":"8883bbd7","id":11098,"implemented":true,"kind":"function","modifiers":[],"name":"notAnInitializer","nameLocation":"826:16:45","nodeType":"FunctionDefinition","parameters":{"id":11091,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11090,"mutability":"mutable","name":"_dao","nameLocation":"848:4:45","nodeType":"VariableDeclaration","scope":11098,"src":"843:9:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"},"typeName":{"id":11089,"nodeType":"UserDefinedTypeName","pathNode":{"id":11088,"name":"IDAO","nameLocations":["843:4:45"],"nodeType":"IdentifierPath","referencedDeclaration":10865,"src":"843:4:45"},"referencedDeclaration":10865,"src":"843:4:45","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}},"visibility":"internal"}],"src":"842:11:45"},"returnParameters":{"id":11092,"nodeType":"ParameterList","parameters":[],"src":"863:0:45"},"scope":11106,"src":"817:102:45","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":11104,"nodeType":"Block","src":"1061:2:45","statements":[]},"functionSelector":"f09e1623","id":11105,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":11101,"name":"AUTHORIZED_FUNC_PERMISSION_ID","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11073,"src":"981:29:45","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":11102,"kind":"modifierInvocation","modifierName":{"id":11100,"name":"auth","nameLocations":["976:4:45"],"nodeType":"IdentifierPath","referencedDeclaration":13155,"src":"976:4:45"},"nodeType":"ModifierInvocation","src":"976:35:45"}],"name":"authorizedFunc","nameLocation":"934:14:45","nodeType":"FunctionDefinition","parameters":{"id":11099,"nodeType":"ParameterList","parameters":[],"src":"948:2:45"},"returnParameters":{"id":11103,"nodeType":"ParameterList","parameters":[],"src":"1061:0:45"},"scope":11106,"src":"925:138:45","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":11107,"src":"336:729:45","usedErrors":[13176]}],"src":"47:1019:45"},"id":45},"src/mocks/permission/condition/PermissionConditionMock.sol":{"ast":{"absolutePath":"src/mocks/permission/condition/PermissionConditionMock.sol","exportedSymbols":{"PermissionCondition":[13276],"PermissionConditionMock":[11148]},"id":11149,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":11108,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:46"},{"absolutePath":"src/permission/condition/PermissionCondition.sol","file":"../../../permission/condition/PermissionCondition.sol","id":11110,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":11149,"sourceUnit":13277,"src":"72:90:46","symbolAliases":[{"foreign":{"id":11109,"name":"PermissionCondition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13276,"src":"80:19:46","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":11112,"name":"PermissionCondition","nameLocations":["321:19:46"],"nodeType":"IdentifierPath","referencedDeclaration":13276,"src":"321:19:46"},"id":11113,"nodeType":"InheritanceSpecifier","src":"321:19:46"}],"canonicalName":"PermissionConditionMock","contractDependencies":[],"contractKind":"contract","documentation":{"id":11111,"nodeType":"StructuredDocumentation","src":"164:121:46","text":"@notice A mock permission condition that can be set to permit or deny every call.\n @dev DO NOT USE IN PRODUCTION!"},"fullyImplemented":true,"id":11148,"linearizedBaseContracts":[11148,13276,14766,14744,13229,9731,9743],"name":"PermissionConditionMock","nameLocation":"294:23:46","nodeType":"ContractDefinition","nodes":[{"constant":false,"functionSelector":"85bb7d69","id":11115,"mutability":"mutable","name":"answer","nameLocation":"359:6:46","nodeType":"VariableDeclaration","scope":11148,"src":"347:18:46","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":11114,"name":"bool","nodeType":"ElementaryTypeName","src":"347:4:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"public"},{"body":{"id":11124,"nodeType":"Block","src":"414:33:46","statements":[{"expression":{"id":11122,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11120,"name":"answer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11115,"src":"424:6:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":11121,"name":"_answer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11117,"src":"433:7:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"424:16:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11123,"nodeType":"ExpressionStatement","src":"424:16:46"}]},"functionSelector":"f01b7dd2","id":11125,"implemented":true,"kind":"function","modifiers":[],"name":"setAnswer","nameLocation":"381:9:46","nodeType":"FunctionDefinition","parameters":{"id":11118,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11117,"mutability":"mutable","name":"_answer","nameLocation":"396:7:46","nodeType":"VariableDeclaration","scope":11125,"src":"391:12:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":11116,"name":"bool","nodeType":"ElementaryTypeName","src":"391:4:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"390:14:46"},"returnParameters":{"id":11119,"nodeType":"ParameterList","parameters":[],"src":"414:0:46"},"scope":11148,"src":"372:75:46","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[13228],"body":{"id":11146,"nodeType":"Block","src":"612:76:46","statements":[{"expression":{"components":[{"id":11138,"name":"_where","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11127,"src":"623:6:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11139,"name":"_who","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11129,"src":"631:4:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11140,"name":"_permissionId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11131,"src":"637:13:46","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":11141,"name":"_data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11133,"src":"652:5:46","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":11142,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"622:36:46","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$","typeString":"tuple(address,address,bytes32,bytes memory)"}},"id":11143,"nodeType":"ExpressionStatement","src":"622:36:46"},{"expression":{"id":11144,"name":"answer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11115,"src":"675:6:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":11137,"id":11145,"nodeType":"Return","src":"668:13:46"}]},"functionSelector":"2675fdd0","id":11147,"implemented":true,"kind":"function","modifiers":[],"name":"isGranted","nameLocation":"462:9:46","nodeType":"FunctionDefinition","parameters":{"id":11134,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11127,"mutability":"mutable","name":"_where","nameLocation":"489:6:46","nodeType":"VariableDeclaration","scope":11147,"src":"481:14:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11126,"name":"address","nodeType":"ElementaryTypeName","src":"481:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11129,"mutability":"mutable","name":"_who","nameLocation":"513:4:46","nodeType":"VariableDeclaration","scope":11147,"src":"505:12:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11128,"name":"address","nodeType":"ElementaryTypeName","src":"505:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11131,"mutability":"mutable","name":"_permissionId","nameLocation":"535:13:46","nodeType":"VariableDeclaration","scope":11147,"src":"527:21:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":11130,"name":"bytes32","nodeType":"ElementaryTypeName","src":"527:7:46","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":11133,"mutability":"mutable","name":"_data","nameLocation":"571:5:46","nodeType":"VariableDeclaration","scope":11147,"src":"558:18:46","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":11132,"name":"bytes","nodeType":"ElementaryTypeName","src":"558:5:46","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"471:111:46"},"returnParameters":{"id":11137,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11136,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11147,"src":"606:4:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":11135,"name":"bool","nodeType":"ElementaryTypeName","src":"606:4:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"605:6:46"},"scope":11148,"src":"453:235:46","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":11149,"src":"285:405:46","usedErrors":[]}],"src":"47:644:46"},"id":46},"src/mocks/permission/condition/PermissionConditionUpgradeableMock.sol":{"ast":{"absolutePath":"src/mocks/permission/condition/PermissionConditionUpgradeableMock.sol","exportedSymbols":{"PermissionConditionUpgradeable":[13323],"PermissionConditionUpgradeableMock":[11190]},"id":11191,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":11150,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:47"},{"absolutePath":"src/permission/condition/PermissionConditionUpgradeable.sol","file":"../../../permission/condition/PermissionConditionUpgradeable.sol","id":11152,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":11191,"sourceUnit":13324,"src":"72:112:47","symbolAliases":[{"foreign":{"id":11151,"name":"PermissionConditionUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13323,"src":"80:30:47","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":11154,"name":"PermissionConditionUpgradeable","nameLocations":["382:30:47"],"nodeType":"IdentifierPath","referencedDeclaration":13323,"src":"382:30:47"},"id":11155,"nodeType":"InheritanceSpecifier","src":"382:30:47"}],"canonicalName":"PermissionConditionUpgradeableMock","contractDependencies":[],"contractKind":"contract","documentation":{"id":11153,"nodeType":"StructuredDocumentation","src":"186:149:47","text":"@notice A mock permission condition that can be set to permit or deny every call and be upgraded by everyone.\n @dev DO NOT USE IN PRODUCTION!"},"fullyImplemented":true,"id":11190,"linearizedBaseContracts":[11190,13323,14766,14744,13229,2822,2834,534],"name":"PermissionConditionUpgradeableMock","nameLocation":"344:34:47","nodeType":"ContractDefinition","nodes":[{"constant":false,"functionSelector":"85bb7d69","id":11157,"mutability":"mutable","name":"answer","nameLocation":"431:6:47","nodeType":"VariableDeclaration","scope":11190,"src":"419:18:47","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":11156,"name":"bool","nodeType":"ElementaryTypeName","src":"419:4:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"public"},{"body":{"id":11166,"nodeType":"Block","src":"486:33:47","statements":[{"expression":{"id":11164,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11162,"name":"answer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11157,"src":"496:6:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":11163,"name":"_answer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11159,"src":"505:7:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"496:16:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11165,"nodeType":"ExpressionStatement","src":"496:16:47"}]},"functionSelector":"f01b7dd2","id":11167,"implemented":true,"kind":"function","modifiers":[],"name":"setAnswer","nameLocation":"453:9:47","nodeType":"FunctionDefinition","parameters":{"id":11160,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11159,"mutability":"mutable","name":"_answer","nameLocation":"468:7:47","nodeType":"VariableDeclaration","scope":11167,"src":"463:12:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":11158,"name":"bool","nodeType":"ElementaryTypeName","src":"463:4:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"462:14:47"},"returnParameters":{"id":11161,"nodeType":"ParameterList","parameters":[],"src":"486:0:47"},"scope":11190,"src":"444:75:47","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[13228],"body":{"id":11188,"nodeType":"Block","src":"684:76:47","statements":[{"expression":{"components":[{"id":11180,"name":"_where","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11169,"src":"695:6:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11181,"name":"_who","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11171,"src":"703:4:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11182,"name":"_permissionId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11173,"src":"709:13:47","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":11183,"name":"_data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11175,"src":"724:5:47","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":11184,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"694:36:47","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$","typeString":"tuple(address,address,bytes32,bytes memory)"}},"id":11185,"nodeType":"ExpressionStatement","src":"694:36:47"},{"expression":{"id":11186,"name":"answer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11157,"src":"747:6:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":11179,"id":11187,"nodeType":"Return","src":"740:13:47"}]},"functionSelector":"2675fdd0","id":11189,"implemented":true,"kind":"function","modifiers":[],"name":"isGranted","nameLocation":"534:9:47","nodeType":"FunctionDefinition","parameters":{"id":11176,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11169,"mutability":"mutable","name":"_where","nameLocation":"561:6:47","nodeType":"VariableDeclaration","scope":11189,"src":"553:14:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11168,"name":"address","nodeType":"ElementaryTypeName","src":"553:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11171,"mutability":"mutable","name":"_who","nameLocation":"585:4:47","nodeType":"VariableDeclaration","scope":11189,"src":"577:12:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11170,"name":"address","nodeType":"ElementaryTypeName","src":"577:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11173,"mutability":"mutable","name":"_permissionId","nameLocation":"607:13:47","nodeType":"VariableDeclaration","scope":11189,"src":"599:21:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":11172,"name":"bytes32","nodeType":"ElementaryTypeName","src":"599:7:47","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":11175,"mutability":"mutable","name":"_data","nameLocation":"643:5:47","nodeType":"VariableDeclaration","scope":11189,"src":"630:18:47","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":11174,"name":"bytes","nodeType":"ElementaryTypeName","src":"630:5:47","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"543:111:47"},"returnParameters":{"id":11179,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11178,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11189,"src":"678:4:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":11177,"name":"bool","nodeType":"ElementaryTypeName","src":"678:4:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"677:6:47"},"scope":11190,"src":"525:235:47","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":11191,"src":"335:427:47","usedErrors":[]}],"src":"47:716:47"},"id":47},"src/mocks/plugin/PluginCloneableMock.sol":{"ast":{"absolutePath":"src/mocks/plugin/PluginCloneableMock.sol","exportedSymbols":{"IDAO":[10865],"PluginCloneable":[13501],"PluginCloneableMockBad":[11269],"PluginCloneableMockBuild1":[11219],"PluginCloneableMockBuild2":[11248]},"id":11270,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":11192,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"91:23:48"},{"absolutePath":"src/plugin/PluginCloneable.sol","file":"../../plugin/PluginCloneable.sol","id":11194,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":11270,"sourceUnit":13502,"src":"116:65:48","symbolAliases":[{"foreign":{"id":11193,"name":"PluginCloneable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13501,"src":"124:15:48","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/dao/IDAO.sol","file":"../../dao/IDAO.sol","id":11196,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":11270,"sourceUnit":10866,"src":"182:40:48","symbolAliases":[{"foreign":{"id":11195,"name":"IDAO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10865,"src":"190:4:48","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":11198,"name":"PluginCloneable","nameLocations":["409:15:48"],"nodeType":"IdentifierPath","referencedDeclaration":13501,"src":"409:15:48"},"id":11199,"nodeType":"InheritanceSpecifier","src":"409:15:48"}],"canonicalName":"PluginCloneableMockBuild1","contractDependencies":[],"contractKind":"contract","documentation":{"id":11197,"nodeType":"StructuredDocumentation","src":"224:147:48","text":"@notice A mock cloneable plugin to be deployed via the minimal proxy pattern.\n v1.1 (Release 1, Build 1)\n @dev DO NOT USE IN PRODUCTION!"},"fullyImplemented":true,"id":11219,"linearizedBaseContracts":[11219,13501,14766,14744,13161,2593,2822,2834,534,13338],"name":"PluginCloneableMockBuild1","nameLocation":"380:25:48","nodeType":"ContractDefinition","nodes":[{"constant":false,"functionSelector":"6accab8c","id":11201,"mutability":"mutable","name":"state1","nameLocation":"446:6:48","nodeType":"VariableDeclaration","scope":11219,"src":"431:21:48","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11200,"name":"uint256","nodeType":"ElementaryTypeName","src":"431:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"body":{"id":11217,"nodeType":"Block","src":"511:65:48","statements":[{"expression":{"arguments":[{"id":11210,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11204,"src":"544:4:48","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}],"id":11209,"name":"__PluginCloneable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13459,"src":"521:22:48","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IDAO_$10865_$returns$__$","typeString":"function (contract IDAO)"}},"id":11211,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"521:28:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11212,"nodeType":"ExpressionStatement","src":"521:28:48"},{"expression":{"id":11215,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11213,"name":"state1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11201,"src":"559:6:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"31","id":11214,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"568:1:48","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"559:10:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11216,"nodeType":"ExpressionStatement","src":"559:10:48"}]},"functionSelector":"c4d66de8","id":11218,"implemented":true,"kind":"function","modifiers":[{"id":11207,"kind":"modifierInvocation","modifierName":{"id":11206,"name":"initializer","nameLocations":["499:11:48"],"nodeType":"IdentifierPath","referencedDeclaration":436,"src":"499:11:48"},"nodeType":"ModifierInvocation","src":"499:11:48"}],"name":"initialize","nameLocation":"468:10:48","nodeType":"FunctionDefinition","parameters":{"id":11205,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11204,"mutability":"mutable","name":"_dao","nameLocation":"484:4:48","nodeType":"VariableDeclaration","scope":11218,"src":"479:9:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"},"typeName":{"id":11203,"nodeType":"UserDefinedTypeName","pathNode":{"id":11202,"name":"IDAO","nameLocations":["479:4:48"],"nodeType":"IdentifierPath","referencedDeclaration":10865,"src":"479:4:48"},"referencedDeclaration":10865,"src":"479:4:48","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}},"visibility":"internal"}],"src":"478:11:48"},"returnParameters":{"id":11208,"nodeType":"ParameterList","parameters":[],"src":"511:0:48"},"scope":11219,"src":"459:117:48","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":11270,"src":"371:207:48","usedErrors":[]},{"abstract":false,"baseContracts":[{"baseName":{"id":11221,"name":"PluginCloneable","nameLocations":["765:15:48"],"nodeType":"IdentifierPath","referencedDeclaration":13501,"src":"765:15:48"},"id":11222,"nodeType":"InheritanceSpecifier","src":"765:15:48"}],"canonicalName":"PluginCloneableMockBuild2","contractDependencies":[],"contractKind":"contract","documentation":{"id":11220,"nodeType":"StructuredDocumentation","src":"580:147:48","text":"@notice A mock cloneable plugin to be deployed via the minimal proxy pattern.\n v1.1 (Release 1, Build 2)\n @dev DO NOT USE IN PRODUCTION!"},"fullyImplemented":true,"id":11248,"linearizedBaseContracts":[11248,13501,14766,14744,13161,2593,2822,2834,534,13338],"name":"PluginCloneableMockBuild2","nameLocation":"736:25:48","nodeType":"ContractDefinition","nodes":[{"constant":false,"functionSelector":"6accab8c","id":11224,"mutability":"mutable","name":"state1","nameLocation":"802:6:48","nodeType":"VariableDeclaration","scope":11248,"src":"787:21:48","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11223,"name":"uint256","nodeType":"ElementaryTypeName","src":"787:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"constant":false,"functionSelector":"efe51cca","id":11226,"mutability":"mutable","name":"state2","nameLocation":"829:6:48","nodeType":"VariableDeclaration","scope":11248,"src":"814:21:48","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11225,"name":"uint256","nodeType":"ElementaryTypeName","src":"814:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"body":{"id":11246,"nodeType":"Block","src":"894:85:48","statements":[{"expression":{"arguments":[{"id":11235,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11229,"src":"927:4:48","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}],"id":11234,"name":"__PluginCloneable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13459,"src":"904:22:48","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IDAO_$10865_$returns$__$","typeString":"function (contract IDAO)"}},"id":11236,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"904:28:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11237,"nodeType":"ExpressionStatement","src":"904:28:48"},{"expression":{"id":11240,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11238,"name":"state1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11224,"src":"942:6:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"31","id":11239,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"951:1:48","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"942:10:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11241,"nodeType":"ExpressionStatement","src":"942:10:48"},{"expression":{"id":11244,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11242,"name":"state2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11226,"src":"962:6:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"32","id":11243,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"971:1:48","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"962:10:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11245,"nodeType":"ExpressionStatement","src":"962:10:48"}]},"functionSelector":"c4d66de8","id":11247,"implemented":true,"kind":"function","modifiers":[{"id":11232,"kind":"modifierInvocation","modifierName":{"id":11231,"name":"initializer","nameLocations":["882:11:48"],"nodeType":"IdentifierPath","referencedDeclaration":436,"src":"882:11:48"},"nodeType":"ModifierInvocation","src":"882:11:48"}],"name":"initialize","nameLocation":"851:10:48","nodeType":"FunctionDefinition","parameters":{"id":11230,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11229,"mutability":"mutable","name":"_dao","nameLocation":"867:4:48","nodeType":"VariableDeclaration","scope":11247,"src":"862:9:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"},"typeName":{"id":11228,"nodeType":"UserDefinedTypeName","pathNode":{"id":11227,"name":"IDAO","nameLocations":["862:4:48"],"nodeType":"IdentifierPath","referencedDeclaration":10865,"src":"862:4:48"},"referencedDeclaration":10865,"src":"862:4:48","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}},"visibility":"internal"}],"src":"861:11:48"},"returnParameters":{"id":11233,"nodeType":"ParameterList","parameters":[],"src":"894:0:48"},"scope":11248,"src":"842:137:48","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":11270,"src":"727:254:48","usedErrors":[]},{"abstract":false,"baseContracts":[{"baseName":{"id":11250,"name":"PluginCloneable","nameLocations":["1122:15:48"],"nodeType":"IdentifierPath","referencedDeclaration":13501,"src":"1122:15:48"},"id":11251,"nodeType":"InheritanceSpecifier","src":"1122:15:48"}],"canonicalName":"PluginCloneableMockBad","contractDependencies":[],"contractKind":"contract","documentation":{"id":11249,"nodeType":"StructuredDocumentation","src":"983:104:48","text":"@notice A mock cloneable plugin missing an initializer function.\n @dev DO NOT USE IN PRODUCTION!"},"fullyImplemented":true,"id":11269,"linearizedBaseContracts":[11269,13501,14766,14744,13161,2593,2822,2834,534,13338],"name":"PluginCloneableMockBad","nameLocation":"1096:22:48","nodeType":"ContractDefinition","nodes":[{"constant":false,"functionSelector":"6accab8c","id":11253,"mutability":"mutable","name":"state1","nameLocation":"1159:6:48","nodeType":"VariableDeclaration","scope":11269,"src":"1144:21:48","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11252,"name":"uint256","nodeType":"ElementaryTypeName","src":"1144:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"body":{"id":11267,"nodeType":"Block","src":"1218:65:48","statements":[{"expression":{"arguments":[{"id":11260,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11256,"src":"1251:4:48","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}],"id":11259,"name":"__PluginCloneable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13459,"src":"1228:22:48","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IDAO_$10865_$returns$__$","typeString":"function (contract IDAO)"}},"id":11261,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1228:28:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11262,"nodeType":"ExpressionStatement","src":"1228:28:48"},{"expression":{"id":11265,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11263,"name":"state1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11253,"src":"1266:6:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"31","id":11264,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1275:1:48","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1266:10:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11266,"nodeType":"ExpressionStatement","src":"1266:10:48"}]},"functionSelector":"8883bbd7","id":11268,"implemented":true,"kind":"function","modifiers":[],"name":"notAnInitializer","nameLocation":"1181:16:48","nodeType":"FunctionDefinition","parameters":{"id":11257,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11256,"mutability":"mutable","name":"_dao","nameLocation":"1203:4:48","nodeType":"VariableDeclaration","scope":11268,"src":"1198:9:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"},"typeName":{"id":11255,"nodeType":"UserDefinedTypeName","pathNode":{"id":11254,"name":"IDAO","nameLocations":["1198:4:48"],"nodeType":"IdentifierPath","referencedDeclaration":10865,"src":"1198:4:48"},"referencedDeclaration":10865,"src":"1198:4:48","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}},"visibility":"internal"}],"src":"1197:11:48"},"returnParameters":{"id":11258,"nodeType":"ParameterList","parameters":[],"src":"1218:0:48"},"scope":11269,"src":"1172:111:48","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":11270,"src":"1087:198:48","usedErrors":[]}],"src":"91:1195:48"},"id":48},"src/mocks/plugin/PluginCloneableSetupMock.sol":{"ast":{"absolutePath":"src/mocks/plugin/PluginCloneableSetupMock.sol","exportedSymbols":{"IDAO":[10865],"IPluginSetup":[14273],"PermissionLib":[13038],"PluginCloneableMockBuild1":[11219],"PluginCloneableMockBuild2":[11248],"PluginCloneableSetupMockBuild1":[11392],"PluginCloneableSetupMockBuild2":[11497],"PluginSetup":[14371],"ProxyLib":[14593],"mockHelpers":[11760],"mockPermissions":[11721]},"id":11498,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":11271,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"91:23:49"},{"absolutePath":"src/permission/PermissionLib.sol","file":"../../permission/PermissionLib.sol","id":11273,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":11498,"sourceUnit":13039,"src":"116:65:49","symbolAliases":[{"foreign":{"id":11272,"name":"PermissionLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13038,"src":"124:13:49","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/plugin/setup/IPluginSetup.sol","file":"../../plugin/setup/IPluginSetup.sol","id":11275,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":11498,"sourceUnit":14274,"src":"182:65:49","symbolAliases":[{"foreign":{"id":11274,"name":"IPluginSetup","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14273,"src":"190:12:49","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/plugin/setup/PluginSetup.sol","file":"../../plugin/setup/PluginSetup.sol","id":11277,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":11498,"sourceUnit":14372,"src":"248:63:49","symbolAliases":[{"foreign":{"id":11276,"name":"PluginSetup","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14371,"src":"256:11:49","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/utils/deployment/ProxyLib.sol","file":"../../utils/deployment/ProxyLib.sol","id":11279,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":11498,"sourceUnit":14594,"src":"312:61:49","symbolAliases":[{"foreign":{"id":11278,"name":"ProxyLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14593,"src":"320:8:49","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/dao/IDAO.sol","file":"../../dao/IDAO.sol","id":11281,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":11498,"sourceUnit":10866,"src":"374:40:49","symbolAliases":[{"foreign":{"id":11280,"name":"IDAO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10865,"src":"382:4:49","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/mocks/plugin/PluginSetupMockData.sol","file":"./PluginSetupMockData.sol","id":11284,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":11498,"sourceUnit":11761,"src":"415:71:49","symbolAliases":[{"foreign":{"id":11282,"name":"mockPermissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11721,"src":"423:15:49","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":11283,"name":"mockHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11760,"src":"440:11:49","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/mocks/plugin/PluginCloneableMock.sol","file":"./PluginCloneableMock.sol","id":11287,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":11498,"sourceUnit":11270,"src":"487:95:49","symbolAliases":[{"foreign":{"id":11285,"name":"PluginCloneableMockBuild1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11219,"src":"495:25:49","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":11286,"name":"PluginCloneableMockBuild2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11248,"src":"522:25:49","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":11289,"name":"PluginSetup","nameLocations":["792:11:49"],"nodeType":"IdentifierPath","referencedDeclaration":14371,"src":"792:11:49"},"id":11290,"nodeType":"InheritanceSpecifier","src":"792:11:49"}],"canonicalName":"PluginCloneableSetupMockBuild1","contractDependencies":[11219],"contractKind":"contract","documentation":{"id":11288,"nodeType":"StructuredDocumentation","src":"584:165:49","text":"@notice A mock plugin setup of a cloneable plugin to be deployed via the minimal proxy pattern.\n v1.1 (Release 1, Build 1)\n @dev DO NOT USE IN PRODUCTION!"},"fullyImplemented":true,"id":11392,"linearizedBaseContracts":[11392,14371,14766,14744,14273,9731,9743],"name":"PluginCloneableSetupMockBuild1","nameLocation":"758:30:49","nodeType":"ContractDefinition","nodes":[{"global":false,"id":11293,"libraryName":{"id":11291,"name":"ProxyLib","nameLocations":["816:8:49"],"nodeType":"IdentifierPath","referencedDeclaration":14593,"src":"816:8:49"},"nodeType":"UsingForDirective","src":"810:27:49","typeName":{"id":11292,"name":"address","nodeType":"ElementaryTypeName","src":"829:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},{"constant":true,"id":11296,"mutability":"constant","name":"THIS_BUILD","nameLocation":"868:10:49","nodeType":"VariableDeclaration","scope":11392,"src":"843:39:49","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":11294,"name":"uint16","nodeType":"ElementaryTypeName","src":"843:6:49","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"value":{"hexValue":"31","id":11295,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"881:1:49","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"visibility":"internal"},{"body":{"id":11308,"nodeType":"Block","src":"957:2:49","statements":[]},"id":11309,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":11303,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"NewExpression","src":"923:29:49","typeDescriptions":{"typeIdentifier":"t_function_creation_nonpayable$__$returns$_t_contract$_PluginCloneableMockBuild1_$11219_$","typeString":"function () returns (contract PluginCloneableMockBuild1)"},"typeName":{"id":11302,"nodeType":"UserDefinedTypeName","pathNode":{"id":11301,"name":"PluginCloneableMockBuild1","nameLocations":["927:25:49"],"nodeType":"IdentifierPath","referencedDeclaration":11219,"src":"927:25:49"},"referencedDeclaration":11219,"src":"927:25:49","typeDescriptions":{"typeIdentifier":"t_contract$_PluginCloneableMockBuild1_$11219","typeString":"contract PluginCloneableMockBuild1"}}},"id":11304,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"923:31:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_PluginCloneableMockBuild1_$11219","typeString":"contract PluginCloneableMockBuild1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_PluginCloneableMockBuild1_$11219","typeString":"contract PluginCloneableMockBuild1"}],"id":11300,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"915:7:49","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11299,"name":"address","nodeType":"ElementaryTypeName","src":"915:7:49","typeDescriptions":{}}},"id":11305,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"915:40:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":11306,"kind":"baseConstructorSpecifier","modifierName":{"id":11298,"name":"PluginSetup","nameLocations":["903:11:49"],"nodeType":"IdentifierPath","referencedDeclaration":14371,"src":"903:11:49"},"nodeType":"ModifierInvocation","src":"903:53:49"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":11297,"nodeType":"ParameterList","parameters":[],"src":"900:2:49"},"returnParameters":{"id":11307,"nodeType":"ParameterList","parameters":[],"src":"957:0:49"},"scope":11392,"src":"889:70:49","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[14237],"body":{"id":11362,"nodeType":"Block","src":"1155:381:49","statements":[{"assignments":[11323],"declarations":[{"constant":false,"id":11323,"mutability":"mutable","name":"initData","nameLocation":"1178:8:49","nodeType":"VariableDeclaration","scope":11362,"src":"1165:21:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":11322,"name":"bytes","nodeType":"ElementaryTypeName","src":"1165:5:49","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":11333,"initialValue":{"arguments":[{"expression":{"id":11326,"name":"PluginCloneableMockBuild1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11219,"src":"1204:25:49","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PluginCloneableMockBuild1_$11219_$","typeString":"type(contract PluginCloneableMockBuild1)"}},"id":11327,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1230:10:49","memberName":"initialize","nodeType":"MemberAccess","referencedDeclaration":11218,"src":"1204:36:49","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_contract$_IDAO_$10865_$returns$__$","typeString":"function PluginCloneableMockBuild1.initialize(contract IDAO)"}},{"components":[{"arguments":[{"id":11329,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11312,"src":"1248:4:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11328,"name":"IDAO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10865,"src":"1243:4:49","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IDAO_$10865_$","typeString":"type(contract IDAO)"}},"id":11330,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1243:10:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}}],"id":11331,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1242:12:49","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_nonpayable$_t_contract$_IDAO_$10865_$returns$__$","typeString":"function PluginCloneableMockBuild1.initialize(contract IDAO)"},{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}],"expression":{"id":11324,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967295,"src":"1189:3:49","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":11325,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1193:10:49","memberName":"encodeCall","nodeType":"MemberAccess","src":"1189:14:49","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":11332,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1189:66:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"1165:90:49"},{"expression":{"id":11340,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11334,"name":"plugin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11317,"src":"1265:6:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":11338,"name":"initData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11323,"src":"1310:8:49","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":11335,"name":"implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14370,"src":"1274:14:49","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":11336,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1274:16:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":11337,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1291:18:49","memberName":"deployMinimalProxy","nodeType":"MemberAccess","referencedDeclaration":14592,"src":"1274:35:49","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_address_$bound_to$_t_address_$","typeString":"function (address,bytes memory) returns (address)"}},"id":11339,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1274:45:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1265:54:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":11341,"nodeType":"ExpressionStatement","src":"1265:54:49"},{"expression":{"id":11348,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":11342,"name":"preparedSetupData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11320,"src":"1329:17:49","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$14216_memory_ptr","typeString":"struct IPluginSetup.PreparedSetupData memory"}},"id":11344,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1347:7:49","memberName":"helpers","nodeType":"MemberAccess","referencedDeclaration":14211,"src":"1329:25:49","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":11346,"name":"THIS_BUILD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11296,"src":"1369:10:49","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"}],"id":11345,"name":"mockHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11760,"src":"1357:11:49","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$returns$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"function (uint160) pure returns (address[] memory)"}},"id":11347,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1357:23:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"src":"1329:51:49","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":11349,"nodeType":"ExpressionStatement","src":"1329:51:49"},{"expression":{"id":11360,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":11350,"name":"preparedSetupData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11320,"src":"1390:17:49","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$14216_memory_ptr","typeString":"struct IPluginSetup.PreparedSetupData memory"}},"id":11352,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1408:11:49","memberName":"permissions","nodeType":"MemberAccess","referencedDeclaration":14215,"src":"1390:29:49","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"hexValue":"30","id":11354,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1451:1:49","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":11355,"name":"THIS_BUILD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11296,"src":"1466:10:49","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"expression":{"expression":{"id":11356,"name":"PermissionLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13038,"src":"1490:13:49","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PermissionLib_$13038_$","typeString":"type(library PermissionLib)"}},"id":11357,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1504:9:49","memberName":"Operation","nodeType":"MemberAccess","referencedDeclaration":13017,"src":"1490:23:49","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Operation_$13017_$","typeString":"type(enum PermissionLib.Operation)"}},"id":11358,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1514:5:49","memberName":"Grant","nodeType":"MemberAccess","referencedDeclaration":13014,"src":"1490:29:49","typeDescriptions":{"typeIdentifier":"t_enum$_Operation_$13017","typeString":"enum PermissionLib.Operation"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_enum$_Operation_$13017","typeString":"enum PermissionLib.Operation"}],"id":11353,"name":"mockPermissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11721,"src":"1422:15:49","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_enum$_Operation_$13017_$returns$_t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint160,uint160,enum PermissionLib.Operation) pure returns (struct PermissionLib.MultiTargetPermission memory[] memory)"}},"id":11359,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1422:107:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"src":"1390:139:49","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"id":11361,"nodeType":"ExpressionStatement","src":"1390:139:49"}]},"documentation":{"id":11310,"nodeType":"StructuredDocumentation","src":"965:28:49","text":"@inheritdoc IPluginSetup"},"functionSelector":"f10832f1","id":11363,"implemented":true,"kind":"function","modifiers":[],"name":"prepareInstallation","nameLocation":"1007:19:49","nodeType":"FunctionDefinition","parameters":{"id":11315,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11312,"mutability":"mutable","name":"_dao","nameLocation":"1044:4:49","nodeType":"VariableDeclaration","scope":11363,"src":"1036:12:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11311,"name":"address","nodeType":"ElementaryTypeName","src":"1036:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11314,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11363,"src":"1058:12:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":11313,"name":"bytes","nodeType":"ElementaryTypeName","src":"1058:5:49","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1026:50:49"},"returnParameters":{"id":11321,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11317,"mutability":"mutable","name":"plugin","nameLocation":"1103:6:49","nodeType":"VariableDeclaration","scope":11363,"src":"1095:14:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11316,"name":"address","nodeType":"ElementaryTypeName","src":"1095:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11320,"mutability":"mutable","name":"preparedSetupData","nameLocation":"1136:17:49","nodeType":"VariableDeclaration","scope":11363,"src":"1111:42:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$14216_memory_ptr","typeString":"struct IPluginSetup.PreparedSetupData"},"typeName":{"id":11319,"nodeType":"UserDefinedTypeName","pathNode":{"id":11318,"name":"PreparedSetupData","nameLocations":["1111:17:49"],"nodeType":"IdentifierPath","referencedDeclaration":14216,"src":"1111:17:49"},"referencedDeclaration":14216,"src":"1111:17:49","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$14216_storage_ptr","typeString":"struct IPluginSetup.PreparedSetupData"}},"visibility":"internal"}],"src":"1094:60:49"},"scope":11392,"src":"998:538:49","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[14266],"body":{"id":11390,"nodeType":"Block","src":"1755:119:49","statements":[{"expression":{"components":[{"id":11376,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11366,"src":"1766:4:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11377,"name":"_payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11369,"src":"1772:8:49","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$14224_calldata_ptr","typeString":"struct IPluginSetup.SetupPayload calldata"}}],"id":11378,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1765:16:49","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_struct$_SetupPayload_$14224_calldata_ptr_$","typeString":"tuple(address,struct IPluginSetup.SetupPayload calldata)"}},"id":11379,"nodeType":"ExpressionStatement","src":"1765:16:49"},{"expression":{"id":11388,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11380,"name":"permissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11374,"src":"1791:11:49","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"hexValue":"30","id":11382,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1821:1:49","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":11383,"name":"THIS_BUILD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11296,"src":"1824:10:49","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"expression":{"expression":{"id":11384,"name":"PermissionLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13038,"src":"1836:13:49","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PermissionLib_$13038_$","typeString":"type(library PermissionLib)"}},"id":11385,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1850:9:49","memberName":"Operation","nodeType":"MemberAccess","referencedDeclaration":13017,"src":"1836:23:49","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Operation_$13017_$","typeString":"type(enum PermissionLib.Operation)"}},"id":11386,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1860:6:49","memberName":"Revoke","nodeType":"MemberAccess","referencedDeclaration":13015,"src":"1836:30:49","typeDescriptions":{"typeIdentifier":"t_enum$_Operation_$13017","typeString":"enum PermissionLib.Operation"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_enum$_Operation_$13017","typeString":"enum PermissionLib.Operation"}],"id":11381,"name":"mockPermissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11721,"src":"1805:15:49","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_enum$_Operation_$13017_$returns$_t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint160,uint160,enum PermissionLib.Operation) pure returns (struct PermissionLib.MultiTargetPermission memory[] memory)"}},"id":11387,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1805:62:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"src":"1791:76:49","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"id":11389,"nodeType":"ExpressionStatement","src":"1791:76:49"}]},"documentation":{"id":11364,"nodeType":"StructuredDocumentation","src":"1542:28:49","text":"@inheritdoc IPluginSetup"},"functionSelector":"9cb0a124","id":11391,"implemented":true,"kind":"function","modifiers":[],"name":"prepareUninstallation","nameLocation":"1584:21:49","nodeType":"FunctionDefinition","parameters":{"id":11370,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11366,"mutability":"mutable","name":"_dao","nameLocation":"1623:4:49","nodeType":"VariableDeclaration","scope":11391,"src":"1615:12:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11365,"name":"address","nodeType":"ElementaryTypeName","src":"1615:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11369,"mutability":"mutable","name":"_payload","nameLocation":"1659:8:49","nodeType":"VariableDeclaration","scope":11391,"src":"1637:30:49","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$14224_calldata_ptr","typeString":"struct IPluginSetup.SetupPayload"},"typeName":{"id":11368,"nodeType":"UserDefinedTypeName","pathNode":{"id":11367,"name":"SetupPayload","nameLocations":["1637:12:49"],"nodeType":"IdentifierPath","referencedDeclaration":14224,"src":"1637:12:49"},"referencedDeclaration":14224,"src":"1637:12:49","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$14224_storage_ptr","typeString":"struct IPluginSetup.SetupPayload"}},"visibility":"internal"}],"src":"1605:68:49"},"returnParameters":{"id":11375,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11374,"mutability":"mutable","name":"permissions","nameLocation":"1742:11:49","nodeType":"VariableDeclaration","scope":11391,"src":"1697:56:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission[]"},"typeName":{"baseType":{"id":11372,"nodeType":"UserDefinedTypeName","pathNode":{"id":11371,"name":"PermissionLib.MultiTargetPermission","nameLocations":["1697:13:49","1711:21:49"],"nodeType":"IdentifierPath","referencedDeclaration":13037,"src":"1697:35:49"},"referencedDeclaration":13037,"src":"1697:35:49","typeDescriptions":{"typeIdentifier":"t_struct$_MultiTargetPermission_$13037_storage_ptr","typeString":"struct PermissionLib.MultiTargetPermission"}},"id":11373,"nodeType":"ArrayTypeName","src":"1697:37:49","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_storage_$dyn_storage_ptr","typeString":"struct PermissionLib.MultiTargetPermission[]"}},"visibility":"internal"}],"src":"1696:58:49"},"scope":11392,"src":"1575:299:49","stateMutability":"pure","virtual":false,"visibility":"external"}],"scope":11498,"src":"749:1127:49","usedErrors":[11651,14296]},{"abstract":false,"baseContracts":[{"baseName":{"id":11394,"name":"PluginSetup","nameLocations":["2086:11:49"],"nodeType":"IdentifierPath","referencedDeclaration":14371,"src":"2086:11:49"},"id":11395,"nodeType":"InheritanceSpecifier","src":"2086:11:49"}],"canonicalName":"PluginCloneableSetupMockBuild2","contractDependencies":[11248],"contractKind":"contract","documentation":{"id":11393,"nodeType":"StructuredDocumentation","src":"1878:165:49","text":"@notice A mock plugin setup of a cloneable plugin to be deployed via the minimal proxy pattern.\n v1.2 (Release 1, Build 2)\n @dev DO NOT USE IN PRODUCTION!"},"fullyImplemented":true,"id":11497,"linearizedBaseContracts":[11497,14371,14766,14744,14273,9731,9743],"name":"PluginCloneableSetupMockBuild2","nameLocation":"2052:30:49","nodeType":"ContractDefinition","nodes":[{"global":false,"id":11398,"libraryName":{"id":11396,"name":"ProxyLib","nameLocations":["2110:8:49"],"nodeType":"IdentifierPath","referencedDeclaration":14593,"src":"2110:8:49"},"nodeType":"UsingForDirective","src":"2104:27:49","typeName":{"id":11397,"name":"address","nodeType":"ElementaryTypeName","src":"2123:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},{"constant":true,"id":11401,"mutability":"constant","name":"THIS_BUILD","nameLocation":"2162:10:49","nodeType":"VariableDeclaration","scope":11497,"src":"2137:39:49","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":11399,"name":"uint16","nodeType":"ElementaryTypeName","src":"2137:6:49","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"value":{"hexValue":"32","id":11400,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2175:1:49","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"visibility":"internal"},{"body":{"id":11413,"nodeType":"Block","src":"2251:2:49","statements":[]},"id":11414,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":11408,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"NewExpression","src":"2217:29:49","typeDescriptions":{"typeIdentifier":"t_function_creation_nonpayable$__$returns$_t_contract$_PluginCloneableMockBuild2_$11248_$","typeString":"function () returns (contract PluginCloneableMockBuild2)"},"typeName":{"id":11407,"nodeType":"UserDefinedTypeName","pathNode":{"id":11406,"name":"PluginCloneableMockBuild2","nameLocations":["2221:25:49"],"nodeType":"IdentifierPath","referencedDeclaration":11248,"src":"2221:25:49"},"referencedDeclaration":11248,"src":"2221:25:49","typeDescriptions":{"typeIdentifier":"t_contract$_PluginCloneableMockBuild2_$11248","typeString":"contract PluginCloneableMockBuild2"}}},"id":11409,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2217:31:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_PluginCloneableMockBuild2_$11248","typeString":"contract PluginCloneableMockBuild2"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_PluginCloneableMockBuild2_$11248","typeString":"contract PluginCloneableMockBuild2"}],"id":11405,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2209:7:49","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11404,"name":"address","nodeType":"ElementaryTypeName","src":"2209:7:49","typeDescriptions":{}}},"id":11410,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2209:40:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":11411,"kind":"baseConstructorSpecifier","modifierName":{"id":11403,"name":"PluginSetup","nameLocations":["2197:11:49"],"nodeType":"IdentifierPath","referencedDeclaration":14371,"src":"2197:11:49"},"nodeType":"ModifierInvocation","src":"2197:53:49"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":11402,"nodeType":"ParameterList","parameters":[],"src":"2194:2:49"},"returnParameters":{"id":11412,"nodeType":"ParameterList","parameters":[],"src":"2251:0:49"},"scope":11497,"src":"2183:70:49","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[14237],"body":{"id":11467,"nodeType":"Block","src":"2449:381:49","statements":[{"assignments":[11428],"declarations":[{"constant":false,"id":11428,"mutability":"mutable","name":"initData","nameLocation":"2472:8:49","nodeType":"VariableDeclaration","scope":11467,"src":"2459:21:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":11427,"name":"bytes","nodeType":"ElementaryTypeName","src":"2459:5:49","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":11438,"initialValue":{"arguments":[{"expression":{"id":11431,"name":"PluginCloneableMockBuild2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11248,"src":"2498:25:49","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PluginCloneableMockBuild2_$11248_$","typeString":"type(contract PluginCloneableMockBuild2)"}},"id":11432,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2524:10:49","memberName":"initialize","nodeType":"MemberAccess","referencedDeclaration":11247,"src":"2498:36:49","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_contract$_IDAO_$10865_$returns$__$","typeString":"function PluginCloneableMockBuild2.initialize(contract IDAO)"}},{"components":[{"arguments":[{"id":11434,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11417,"src":"2542:4:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11433,"name":"IDAO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10865,"src":"2537:4:49","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IDAO_$10865_$","typeString":"type(contract IDAO)"}},"id":11435,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2537:10:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}}],"id":11436,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2536:12:49","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_nonpayable$_t_contract$_IDAO_$10865_$returns$__$","typeString":"function PluginCloneableMockBuild2.initialize(contract IDAO)"},{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}],"expression":{"id":11429,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967295,"src":"2483:3:49","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":11430,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2487:10:49","memberName":"encodeCall","nodeType":"MemberAccess","src":"2483:14:49","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":11437,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2483:66:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"2459:90:49"},{"expression":{"id":11445,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11439,"name":"plugin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11422,"src":"2559:6:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":11443,"name":"initData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11428,"src":"2604:8:49","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":11440,"name":"implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14370,"src":"2568:14:49","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":11441,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2568:16:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":11442,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2585:18:49","memberName":"deployMinimalProxy","nodeType":"MemberAccess","referencedDeclaration":14592,"src":"2568:35:49","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_address_$bound_to$_t_address_$","typeString":"function (address,bytes memory) returns (address)"}},"id":11444,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2568:45:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2559:54:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":11446,"nodeType":"ExpressionStatement","src":"2559:54:49"},{"expression":{"id":11453,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":11447,"name":"preparedSetupData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11425,"src":"2623:17:49","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$14216_memory_ptr","typeString":"struct IPluginSetup.PreparedSetupData memory"}},"id":11449,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"2641:7:49","memberName":"helpers","nodeType":"MemberAccess","referencedDeclaration":14211,"src":"2623:25:49","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":11451,"name":"THIS_BUILD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11401,"src":"2663:10:49","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"}],"id":11450,"name":"mockHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11760,"src":"2651:11:49","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$returns$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"function (uint160) pure returns (address[] memory)"}},"id":11452,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2651:23:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"src":"2623:51:49","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":11454,"nodeType":"ExpressionStatement","src":"2623:51:49"},{"expression":{"id":11465,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":11455,"name":"preparedSetupData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11425,"src":"2684:17:49","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$14216_memory_ptr","typeString":"struct IPluginSetup.PreparedSetupData memory"}},"id":11457,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"2702:11:49","memberName":"permissions","nodeType":"MemberAccess","referencedDeclaration":14215,"src":"2684:29:49","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"hexValue":"30","id":11459,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2745:1:49","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":11460,"name":"THIS_BUILD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11401,"src":"2760:10:49","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"expression":{"expression":{"id":11461,"name":"PermissionLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13038,"src":"2784:13:49","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PermissionLib_$13038_$","typeString":"type(library PermissionLib)"}},"id":11462,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2798:9:49","memberName":"Operation","nodeType":"MemberAccess","referencedDeclaration":13017,"src":"2784:23:49","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Operation_$13017_$","typeString":"type(enum PermissionLib.Operation)"}},"id":11463,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2808:5:49","memberName":"Grant","nodeType":"MemberAccess","referencedDeclaration":13014,"src":"2784:29:49","typeDescriptions":{"typeIdentifier":"t_enum$_Operation_$13017","typeString":"enum PermissionLib.Operation"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_enum$_Operation_$13017","typeString":"enum PermissionLib.Operation"}],"id":11458,"name":"mockPermissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11721,"src":"2716:15:49","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_enum$_Operation_$13017_$returns$_t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint160,uint160,enum PermissionLib.Operation) pure returns (struct PermissionLib.MultiTargetPermission memory[] memory)"}},"id":11464,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2716:107:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"src":"2684:139:49","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"id":11466,"nodeType":"ExpressionStatement","src":"2684:139:49"}]},"documentation":{"id":11415,"nodeType":"StructuredDocumentation","src":"2259:28:49","text":"@inheritdoc IPluginSetup"},"functionSelector":"f10832f1","id":11468,"implemented":true,"kind":"function","modifiers":[],"name":"prepareInstallation","nameLocation":"2301:19:49","nodeType":"FunctionDefinition","parameters":{"id":11420,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11417,"mutability":"mutable","name":"_dao","nameLocation":"2338:4:49","nodeType":"VariableDeclaration","scope":11468,"src":"2330:12:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11416,"name":"address","nodeType":"ElementaryTypeName","src":"2330:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11419,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11468,"src":"2352:12:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":11418,"name":"bytes","nodeType":"ElementaryTypeName","src":"2352:5:49","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2320:50:49"},"returnParameters":{"id":11426,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11422,"mutability":"mutable","name":"plugin","nameLocation":"2397:6:49","nodeType":"VariableDeclaration","scope":11468,"src":"2389:14:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11421,"name":"address","nodeType":"ElementaryTypeName","src":"2389:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11425,"mutability":"mutable","name":"preparedSetupData","nameLocation":"2430:17:49","nodeType":"VariableDeclaration","scope":11468,"src":"2405:42:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$14216_memory_ptr","typeString":"struct IPluginSetup.PreparedSetupData"},"typeName":{"id":11424,"nodeType":"UserDefinedTypeName","pathNode":{"id":11423,"name":"PreparedSetupData","nameLocations":["2405:17:49"],"nodeType":"IdentifierPath","referencedDeclaration":14216,"src":"2405:17:49"},"referencedDeclaration":14216,"src":"2405:17:49","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$14216_storage_ptr","typeString":"struct IPluginSetup.PreparedSetupData"}},"visibility":"internal"}],"src":"2388:60:49"},"scope":11497,"src":"2292:538:49","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[14266],"body":{"id":11495,"nodeType":"Block","src":"3049:119:49","statements":[{"expression":{"components":[{"id":11481,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11471,"src":"3060:4:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11482,"name":"_payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11474,"src":"3066:8:49","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$14224_calldata_ptr","typeString":"struct IPluginSetup.SetupPayload calldata"}}],"id":11483,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3059:16:49","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_struct$_SetupPayload_$14224_calldata_ptr_$","typeString":"tuple(address,struct IPluginSetup.SetupPayload calldata)"}},"id":11484,"nodeType":"ExpressionStatement","src":"3059:16:49"},{"expression":{"id":11493,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11485,"name":"permissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11479,"src":"3085:11:49","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"hexValue":"30","id":11487,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3115:1:49","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":11488,"name":"THIS_BUILD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11401,"src":"3118:10:49","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"expression":{"expression":{"id":11489,"name":"PermissionLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13038,"src":"3130:13:49","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PermissionLib_$13038_$","typeString":"type(library PermissionLib)"}},"id":11490,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3144:9:49","memberName":"Operation","nodeType":"MemberAccess","referencedDeclaration":13017,"src":"3130:23:49","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Operation_$13017_$","typeString":"type(enum PermissionLib.Operation)"}},"id":11491,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3154:6:49","memberName":"Revoke","nodeType":"MemberAccess","referencedDeclaration":13015,"src":"3130:30:49","typeDescriptions":{"typeIdentifier":"t_enum$_Operation_$13017","typeString":"enum PermissionLib.Operation"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_enum$_Operation_$13017","typeString":"enum PermissionLib.Operation"}],"id":11486,"name":"mockPermissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11721,"src":"3099:15:49","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_enum$_Operation_$13017_$returns$_t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint160,uint160,enum PermissionLib.Operation) pure returns (struct PermissionLib.MultiTargetPermission memory[] memory)"}},"id":11492,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3099:62:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"src":"3085:76:49","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"id":11494,"nodeType":"ExpressionStatement","src":"3085:76:49"}]},"documentation":{"id":11469,"nodeType":"StructuredDocumentation","src":"2836:28:49","text":"@inheritdoc IPluginSetup"},"functionSelector":"9cb0a124","id":11496,"implemented":true,"kind":"function","modifiers":[],"name":"prepareUninstallation","nameLocation":"2878:21:49","nodeType":"FunctionDefinition","parameters":{"id":11475,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11471,"mutability":"mutable","name":"_dao","nameLocation":"2917:4:49","nodeType":"VariableDeclaration","scope":11496,"src":"2909:12:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11470,"name":"address","nodeType":"ElementaryTypeName","src":"2909:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11474,"mutability":"mutable","name":"_payload","nameLocation":"2953:8:49","nodeType":"VariableDeclaration","scope":11496,"src":"2931:30:49","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$14224_calldata_ptr","typeString":"struct IPluginSetup.SetupPayload"},"typeName":{"id":11473,"nodeType":"UserDefinedTypeName","pathNode":{"id":11472,"name":"SetupPayload","nameLocations":["2931:12:49"],"nodeType":"IdentifierPath","referencedDeclaration":14224,"src":"2931:12:49"},"referencedDeclaration":14224,"src":"2931:12:49","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$14224_storage_ptr","typeString":"struct IPluginSetup.SetupPayload"}},"visibility":"internal"}],"src":"2899:68:49"},"returnParameters":{"id":11480,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11479,"mutability":"mutable","name":"permissions","nameLocation":"3036:11:49","nodeType":"VariableDeclaration","scope":11496,"src":"2991:56:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission[]"},"typeName":{"baseType":{"id":11477,"nodeType":"UserDefinedTypeName","pathNode":{"id":11476,"name":"PermissionLib.MultiTargetPermission","nameLocations":["2991:13:49","3005:21:49"],"nodeType":"IdentifierPath","referencedDeclaration":13037,"src":"2991:35:49"},"referencedDeclaration":13037,"src":"2991:35:49","typeDescriptions":{"typeIdentifier":"t_struct$_MultiTargetPermission_$13037_storage_ptr","typeString":"struct PermissionLib.MultiTargetPermission"}},"id":11478,"nodeType":"ArrayTypeName","src":"2991:37:49","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_storage_$dyn_storage_ptr","typeString":"struct PermissionLib.MultiTargetPermission[]"}},"visibility":"internal"}],"src":"2990:58:49"},"scope":11497,"src":"2869:299:49","stateMutability":"pure","virtual":false,"visibility":"external"}],"scope":11498,"src":"2043:1127:49","usedErrors":[11651,14296]}],"src":"91:3080:49"},"id":49},"src/mocks/plugin/PluginMock.sol":{"ast":{"absolutePath":"src/mocks/plugin/PluginMock.sol","exportedSymbols":{"IDAO":[10865],"Plugin":[13414],"PluginMockBuild1":[11523]},"id":11524,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":11499,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:50"},{"absolutePath":"src/plugin/Plugin.sol","file":"../../plugin/Plugin.sol","id":11501,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":11524,"sourceUnit":13415,"src":"72:47:50","symbolAliases":[{"foreign":{"id":11500,"name":"Plugin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13414,"src":"80:6:50","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/dao/IDAO.sol","file":"../../dao/IDAO.sol","id":11503,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":11524,"sourceUnit":10866,"src":"120:40:50","symbolAliases":[{"foreign":{"id":11502,"name":"IDAO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10865,"src":"128:4:50","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":11505,"name":"Plugin","nameLocations":["320:6:50"],"nodeType":"IdentifierPath","referencedDeclaration":13414,"src":"320:6:50"},"id":11506,"nodeType":"InheritanceSpecifier","src":"320:6:50"}],"canonicalName":"PluginMockBuild1","contractDependencies":[],"contractKind":"contract","documentation":{"id":11504,"nodeType":"StructuredDocumentation","src":"162:129:50","text":"@notice A mock plugin to be deployed via the `new` keyword.\n v1.1 (Release 1, Build 1)\n @dev DO NOT USE IN PRODUCTION!"},"fullyImplemented":true,"id":11523,"linearizedBaseContracts":[11523,13414,14766,14744,13096,9294,9731,9743,13338],"name":"PluginMockBuild1","nameLocation":"300:16:50","nodeType":"ContractDefinition","nodes":[{"constant":false,"functionSelector":"6accab8c","id":11508,"mutability":"mutable","name":"state1","nameLocation":"348:6:50","nodeType":"VariableDeclaration","scope":11523,"src":"333:21:50","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11507,"name":"uint256","nodeType":"ElementaryTypeName","src":"333:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"body":{"id":11521,"nodeType":"Block","src":"397:27:50","statements":[{"expression":{"id":11519,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11517,"name":"state1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11508,"src":"407:6:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"31","id":11518,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"416:1:50","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"407:10:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11520,"nodeType":"ExpressionStatement","src":"407:10:50"}]},"id":11522,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":11514,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11511,"src":"391:4:50","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}}],"id":11515,"kind":"baseConstructorSpecifier","modifierName":{"id":11513,"name":"Plugin","nameLocations":["384:6:50"],"nodeType":"IdentifierPath","referencedDeclaration":13414,"src":"384:6:50"},"nodeType":"ModifierInvocation","src":"384:12:50"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":11512,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11511,"mutability":"mutable","name":"_dao","nameLocation":"378:4:50","nodeType":"VariableDeclaration","scope":11522,"src":"373:9:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"},"typeName":{"id":11510,"nodeType":"UserDefinedTypeName","pathNode":{"id":11509,"name":"IDAO","nameLocations":["373:4:50"],"nodeType":"IdentifierPath","referencedDeclaration":10865,"src":"373:4:50"},"referencedDeclaration":10865,"src":"373:4:50","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}},"visibility":"internal"}],"src":"372:11:50"},"returnParameters":{"id":11516,"nodeType":"ParameterList","parameters":[],"src":"397:0:50"},"scope":11523,"src":"361:63:50","stateMutability":"nonpayable","virtual":false,"visibility":"public"}],"scope":11524,"src":"291:135:50","usedErrors":[]}],"src":"47:380:50"},"id":50},"src/mocks/plugin/PluginSetupMock.sol":{"ast":{"absolutePath":"src/mocks/plugin/PluginSetupMock.sol","exportedSymbols":{"IDAO":[10865],"IPluginSetup":[14273],"PermissionLib":[13038],"PluginMockBuild1":[11523],"PluginSetup":[14371],"PluginSetupMockBuild1":[11639],"mockHelpers":[11760],"mockPermissions":[11721]},"id":11640,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":11525,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"91:23:51"},{"absolutePath":"src/permission/PermissionLib.sol","file":"../../permission/PermissionLib.sol","id":11527,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":11640,"sourceUnit":13039,"src":"116:65:51","symbolAliases":[{"foreign":{"id":11526,"name":"PermissionLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13038,"src":"124:13:51","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/plugin/setup/IPluginSetup.sol","file":"../../plugin/setup/IPluginSetup.sol","id":11529,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":11640,"sourceUnit":14274,"src":"182:65:51","symbolAliases":[{"foreign":{"id":11528,"name":"IPluginSetup","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14273,"src":"190:12:51","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/plugin/setup/PluginSetup.sol","file":"../../plugin/setup/PluginSetup.sol","id":11531,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":11640,"sourceUnit":14372,"src":"248:63:51","symbolAliases":[{"foreign":{"id":11530,"name":"PluginSetup","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14371,"src":"256:11:51","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/dao/IDAO.sol","file":"../../dao/IDAO.sol","id":11533,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":11640,"sourceUnit":10866,"src":"312:40:51","symbolAliases":[{"foreign":{"id":11532,"name":"IDAO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10865,"src":"320:4:51","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/mocks/plugin/PluginSetupMockData.sol","file":"./PluginSetupMockData.sol","id":11536,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":11640,"sourceUnit":11761,"src":"353:71:51","symbolAliases":[{"foreign":{"id":11534,"name":"mockPermissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11721,"src":"361:15:51","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":11535,"name":"mockHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11760,"src":"378:11:51","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/mocks/plugin/PluginMock.sol","file":"./PluginMock.sol","id":11538,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":11640,"sourceUnit":11524,"src":"425:50:51","symbolAliases":[{"foreign":{"id":11537,"name":"PluginMockBuild1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11523,"src":"433:16:51","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":11540,"name":"PluginSetup","nameLocations":["658:11:51"],"nodeType":"IdentifierPath","referencedDeclaration":14371,"src":"658:11:51"},"id":11541,"nodeType":"InheritanceSpecifier","src":"658:11:51"}],"canonicalName":"PluginSetupMockBuild1","contractDependencies":[11523],"contractKind":"contract","documentation":{"id":11539,"nodeType":"StructuredDocumentation","src":"477:147:51","text":"@notice A mock plugin setup of a plugin to be deployed via the `new` keyword.\n v1.1 (Release 1, Build 1)\n @dev DO NOT USE IN PRODUCTION!"},"fullyImplemented":true,"id":11639,"linearizedBaseContracts":[11639,14371,14766,14744,14273,9731,9743],"name":"PluginSetupMockBuild1","nameLocation":"633:21:51","nodeType":"ContractDefinition","nodes":[{"body":{"id":11559,"nodeType":"Block","src":"751:2:51","statements":[]},"id":11560,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"hexValue":"30","id":11552,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"744:1:51","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":11551,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"736:7:51","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11550,"name":"address","nodeType":"ElementaryTypeName","src":"736:7:51","typeDescriptions":{}}},"id":11553,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"736:10:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11549,"name":"IDAO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10865,"src":"731:4:51","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IDAO_$10865_$","typeString":"type(contract IDAO)"}},"id":11554,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"731:16:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}],"id":11548,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"NewExpression","src":"710:20:51","typeDescriptions":{"typeIdentifier":"t_function_creation_nonpayable$_t_contract$_IDAO_$10865_$returns$_t_contract$_PluginMockBuild1_$11523_$","typeString":"function (contract IDAO) returns (contract PluginMockBuild1)"},"typeName":{"id":11547,"nodeType":"UserDefinedTypeName","pathNode":{"id":11546,"name":"PluginMockBuild1","nameLocations":["714:16:51"],"nodeType":"IdentifierPath","referencedDeclaration":11523,"src":"714:16:51"},"referencedDeclaration":11523,"src":"714:16:51","typeDescriptions":{"typeIdentifier":"t_contract$_PluginMockBuild1_$11523","typeString":"contract PluginMockBuild1"}}},"id":11555,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"710:38:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_PluginMockBuild1_$11523","typeString":"contract PluginMockBuild1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_PluginMockBuild1_$11523","typeString":"contract PluginMockBuild1"}],"id":11545,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"702:7:51","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11544,"name":"address","nodeType":"ElementaryTypeName","src":"702:7:51","typeDescriptions":{}}},"id":11556,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"702:47:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":11557,"kind":"baseConstructorSpecifier","modifierName":{"id":11543,"name":"PluginSetup","nameLocations":["690:11:51"],"nodeType":"IdentifierPath","referencedDeclaration":14371,"src":"690:11:51"},"nodeType":"ModifierInvocation","src":"690:60:51"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":11542,"nodeType":"ParameterList","parameters":[],"src":"687:2:51"},"returnParameters":{"id":11558,"nodeType":"ParameterList","parameters":[],"src":"751:0:51"},"scope":11639,"src":"676:77:51","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[14237],"body":{"id":11609,"nodeType":"Block","src":"955:230:51","statements":[{"expression":{"components":[{"id":11573,"name":"_data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11565,"src":"966:5:51","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":11574,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"965:7:51","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":11575,"nodeType":"ExpressionStatement","src":"965:7:51"},{"expression":{"id":11587,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11576,"name":"plugin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11568,"src":"982:6:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"arguments":[{"id":11583,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11563,"src":"1025:4:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11582,"name":"IDAO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10865,"src":"1020:4:51","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IDAO_$10865_$","typeString":"type(contract IDAO)"}},"id":11584,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1020:10:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}],"id":11581,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"NewExpression","src":"999:20:51","typeDescriptions":{"typeIdentifier":"t_function_creation_nonpayable$_t_contract$_IDAO_$10865_$returns$_t_contract$_PluginMockBuild1_$11523_$","typeString":"function (contract IDAO) returns (contract PluginMockBuild1)"},"typeName":{"id":11580,"nodeType":"UserDefinedTypeName","pathNode":{"id":11579,"name":"PluginMockBuild1","nameLocations":["1003:16:51"],"nodeType":"IdentifierPath","referencedDeclaration":11523,"src":"1003:16:51"},"referencedDeclaration":11523,"src":"1003:16:51","typeDescriptions":{"typeIdentifier":"t_contract$_PluginMockBuild1_$11523","typeString":"contract PluginMockBuild1"}}},"id":11585,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"999:32:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_PluginMockBuild1_$11523","typeString":"contract PluginMockBuild1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_PluginMockBuild1_$11523","typeString":"contract PluginMockBuild1"}],"id":11578,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"991:7:51","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11577,"name":"address","nodeType":"ElementaryTypeName","src":"991:7:51","typeDescriptions":{}}},"id":11586,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"991:41:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"982:50:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":11588,"nodeType":"ExpressionStatement","src":"982:50:51"},{"expression":{"id":11595,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":11589,"name":"preparedSetupData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11571,"src":"1042:17:51","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$14216_memory_ptr","typeString":"struct IPluginSetup.PreparedSetupData memory"}},"id":11591,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1060:7:51","memberName":"helpers","nodeType":"MemberAccess","referencedDeclaration":14211,"src":"1042:25:51","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"hexValue":"31","id":11593,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1082:1:51","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":11592,"name":"mockHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11760,"src":"1070:11:51","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$returns$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"function (uint160) pure returns (address[] memory)"}},"id":11594,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1070:14:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"src":"1042:42:51","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":11596,"nodeType":"ExpressionStatement","src":"1042:42:51"},{"expression":{"id":11607,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":11597,"name":"preparedSetupData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11571,"src":"1094:17:51","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$14216_memory_ptr","typeString":"struct IPluginSetup.PreparedSetupData memory"}},"id":11599,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1112:11:51","memberName":"permissions","nodeType":"MemberAccess","referencedDeclaration":14215,"src":"1094:29:51","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"hexValue":"30","id":11601,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1142:1:51","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"31","id":11602,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1145:1:51","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},{"expression":{"expression":{"id":11603,"name":"PermissionLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13038,"src":"1148:13:51","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PermissionLib_$13038_$","typeString":"type(library PermissionLib)"}},"id":11604,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1162:9:51","memberName":"Operation","nodeType":"MemberAccess","referencedDeclaration":13017,"src":"1148:23:51","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Operation_$13017_$","typeString":"type(enum PermissionLib.Operation)"}},"id":11605,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1172:5:51","memberName":"Grant","nodeType":"MemberAccess","referencedDeclaration":13014,"src":"1148:29:51","typeDescriptions":{"typeIdentifier":"t_enum$_Operation_$13017","typeString":"enum PermissionLib.Operation"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},{"typeIdentifier":"t_enum$_Operation_$13017","typeString":"enum PermissionLib.Operation"}],"id":11600,"name":"mockPermissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11721,"src":"1126:15:51","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_enum$_Operation_$13017_$returns$_t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint160,uint160,enum PermissionLib.Operation) pure returns (struct PermissionLib.MultiTargetPermission memory[] memory)"}},"id":11606,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1126:52:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"src":"1094:84:51","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"id":11608,"nodeType":"ExpressionStatement","src":"1094:84:51"}]},"documentation":{"id":11561,"nodeType":"StructuredDocumentation","src":"759:28:51","text":"@inheritdoc IPluginSetup"},"functionSelector":"f10832f1","id":11610,"implemented":true,"kind":"function","modifiers":[],"name":"prepareInstallation","nameLocation":"801:19:51","nodeType":"FunctionDefinition","parameters":{"id":11566,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11563,"mutability":"mutable","name":"_dao","nameLocation":"838:4:51","nodeType":"VariableDeclaration","scope":11610,"src":"830:12:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11562,"name":"address","nodeType":"ElementaryTypeName","src":"830:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11565,"mutability":"mutable","name":"_data","nameLocation":"865:5:51","nodeType":"VariableDeclaration","scope":11610,"src":"852:18:51","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":11564,"name":"bytes","nodeType":"ElementaryTypeName","src":"852:5:51","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"820:56:51"},"returnParameters":{"id":11572,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11568,"mutability":"mutable","name":"plugin","nameLocation":"903:6:51","nodeType":"VariableDeclaration","scope":11610,"src":"895:14:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11567,"name":"address","nodeType":"ElementaryTypeName","src":"895:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11571,"mutability":"mutable","name":"preparedSetupData","nameLocation":"936:17:51","nodeType":"VariableDeclaration","scope":11610,"src":"911:42:51","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$14216_memory_ptr","typeString":"struct IPluginSetup.PreparedSetupData"},"typeName":{"id":11570,"nodeType":"UserDefinedTypeName","pathNode":{"id":11569,"name":"PreparedSetupData","nameLocations":["911:17:51"],"nodeType":"IdentifierPath","referencedDeclaration":14216,"src":"911:17:51"},"referencedDeclaration":14216,"src":"911:17:51","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$14216_storage_ptr","typeString":"struct IPluginSetup.PreparedSetupData"}},"visibility":"internal"}],"src":"894:60:51"},"scope":11639,"src":"792:393:51","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[14266],"body":{"id":11637,"nodeType":"Block","src":"1404:110:51","statements":[{"expression":{"components":[{"id":11623,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11613,"src":"1415:4:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11624,"name":"_payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11616,"src":"1421:8:51","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$14224_calldata_ptr","typeString":"struct IPluginSetup.SetupPayload calldata"}}],"id":11625,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1414:16:51","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_struct$_SetupPayload_$14224_calldata_ptr_$","typeString":"tuple(address,struct IPluginSetup.SetupPayload calldata)"}},"id":11626,"nodeType":"ExpressionStatement","src":"1414:16:51"},{"expression":{"id":11635,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11627,"name":"permissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11621,"src":"1440:11:51","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"hexValue":"30","id":11629,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1470:1:51","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"31","id":11630,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1473:1:51","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},{"expression":{"expression":{"id":11631,"name":"PermissionLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13038,"src":"1476:13:51","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PermissionLib_$13038_$","typeString":"type(library PermissionLib)"}},"id":11632,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1490:9:51","memberName":"Operation","nodeType":"MemberAccess","referencedDeclaration":13017,"src":"1476:23:51","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Operation_$13017_$","typeString":"type(enum PermissionLib.Operation)"}},"id":11633,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1500:6:51","memberName":"Revoke","nodeType":"MemberAccess","referencedDeclaration":13015,"src":"1476:30:51","typeDescriptions":{"typeIdentifier":"t_enum$_Operation_$13017","typeString":"enum PermissionLib.Operation"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},{"typeIdentifier":"t_enum$_Operation_$13017","typeString":"enum PermissionLib.Operation"}],"id":11628,"name":"mockPermissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11721,"src":"1454:15:51","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_enum$_Operation_$13017_$returns$_t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint160,uint160,enum PermissionLib.Operation) pure returns (struct PermissionLib.MultiTargetPermission memory[] memory)"}},"id":11634,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1454:53:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"src":"1440:67:51","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"id":11636,"nodeType":"ExpressionStatement","src":"1440:67:51"}]},"documentation":{"id":11611,"nodeType":"StructuredDocumentation","src":"1191:28:51","text":"@inheritdoc IPluginSetup"},"functionSelector":"9cb0a124","id":11638,"implemented":true,"kind":"function","modifiers":[],"name":"prepareUninstallation","nameLocation":"1233:21:51","nodeType":"FunctionDefinition","parameters":{"id":11617,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11613,"mutability":"mutable","name":"_dao","nameLocation":"1272:4:51","nodeType":"VariableDeclaration","scope":11638,"src":"1264:12:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11612,"name":"address","nodeType":"ElementaryTypeName","src":"1264:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11616,"mutability":"mutable","name":"_payload","nameLocation":"1308:8:51","nodeType":"VariableDeclaration","scope":11638,"src":"1286:30:51","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$14224_calldata_ptr","typeString":"struct IPluginSetup.SetupPayload"},"typeName":{"id":11615,"nodeType":"UserDefinedTypeName","pathNode":{"id":11614,"name":"SetupPayload","nameLocations":["1286:12:51"],"nodeType":"IdentifierPath","referencedDeclaration":14224,"src":"1286:12:51"},"referencedDeclaration":14224,"src":"1286:12:51","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$14224_storage_ptr","typeString":"struct IPluginSetup.SetupPayload"}},"visibility":"internal"}],"src":"1254:68:51"},"returnParameters":{"id":11622,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11621,"mutability":"mutable","name":"permissions","nameLocation":"1391:11:51","nodeType":"VariableDeclaration","scope":11638,"src":"1346:56:51","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission[]"},"typeName":{"baseType":{"id":11619,"nodeType":"UserDefinedTypeName","pathNode":{"id":11618,"name":"PermissionLib.MultiTargetPermission","nameLocations":["1346:13:51","1360:21:51"],"nodeType":"IdentifierPath","referencedDeclaration":13037,"src":"1346:35:51"},"referencedDeclaration":13037,"src":"1346:35:51","typeDescriptions":{"typeIdentifier":"t_struct$_MultiTargetPermission_$13037_storage_ptr","typeString":"struct PermissionLib.MultiTargetPermission"}},"id":11620,"nodeType":"ArrayTypeName","src":"1346:37:51","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_storage_$dyn_storage_ptr","typeString":"struct PermissionLib.MultiTargetPermission[]"}},"visibility":"internal"}],"src":"1345:58:51"},"scope":11639,"src":"1224:290:51","stateMutability":"pure","virtual":false,"visibility":"external"}],"scope":11640,"src":"624:892:51","usedErrors":[11651,14296]}],"src":"91:1426:51"},"id":51},"src/mocks/plugin/PluginSetupMockData.sol":{"ast":{"absolutePath":"src/mocks/plugin/PluginSetupMockData.sol","exportedSymbols":{"ConflictingValues":[11651],"NO_CONDITION":[11649],"PermissionLib":[13038],"mockHelpers":[11760],"mockPermissions":[11721]},"id":11761,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":11641,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:52"},{"absolutePath":"src/permission/PermissionLib.sol","file":"../../permission/PermissionLib.sol","id":11643,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":11761,"sourceUnit":13039,"src":"72:65:52","symbolAliases":[{"foreign":{"id":11642,"name":"PermissionLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13038,"src":"80:13:52","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"constant":true,"id":11649,"mutability":"constant","name":"NO_CONDITION","nameLocation":"156:12:52","nodeType":"VariableDeclaration","scope":11761,"src":"139:42:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11644,"name":"address","nodeType":"ElementaryTypeName","src":"139:7:52","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":{"arguments":[{"hexValue":"30","id":11647,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"179:1:52","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":11646,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"171:7:52","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11645,"name":"address","nodeType":"ElementaryTypeName","src":"171:7:52","typeDescriptions":{}}},"id":11648,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"171:10:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"errorSelector":"e9004f34","id":11651,"name":"ConflictingValues","nameLocation":"190:17:52","nodeType":"ErrorDefinition","parameters":{"id":11650,"nodeType":"ParameterList","parameters":[],"src":"207:2:52"},"src":"184:26:52"},{"body":{"id":11720,"nodeType":"Block","src":"757:489:52","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":11668,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11666,"name":"rangeStart","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11654,"src":"767:10:52","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":11667,"name":"rangeEnd","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11656,"src":"780:8:52","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"767:21:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11672,"nodeType":"IfStatement","src":"763:53:52","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":11669,"name":"ConflictingValues","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11651,"src":"797:17:52","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":11670,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"797:19:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11671,"nodeType":"RevertStatement","src":"790:26:52"}},{"expression":{"id":11682,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11673,"name":"permissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11664,"src":"823:11:52","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":11680,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11678,"name":"rangeEnd","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11656,"src":"879:8:52","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":11679,"name":"rangeStart","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11654,"src":"890:10:52","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"879:21:52","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":11677,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"837:41:52","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (struct PermissionLib.MultiTargetPermission memory[] memory)"},"typeName":{"baseType":{"id":11675,"nodeType":"UserDefinedTypeName","pathNode":{"id":11674,"name":"PermissionLib.MultiTargetPermission","nameLocations":["841:13:52","855:21:52"],"nodeType":"IdentifierPath","referencedDeclaration":13037,"src":"841:35:52"},"referencedDeclaration":13037,"src":"841:35:52","typeDescriptions":{"typeIdentifier":"t_struct$_MultiTargetPermission_$13037_storage_ptr","typeString":"struct PermissionLib.MultiTargetPermission"}},"id":11676,"nodeType":"ArrayTypeName","src":"841:37:52","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_storage_$dyn_storage_ptr","typeString":"struct PermissionLib.MultiTargetPermission[]"}}},"id":11681,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"837:64:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"src":"823:78:52","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"id":11683,"nodeType":"ExpressionStatement","src":"823:78:52"},{"body":{"id":11718,"nodeType":"Block","src":"956:288:52","statements":[{"expression":{"id":11716,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":11694,"name":"permissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11664,"src":"966:11:52","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"id":11698,"indexExpression":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":11697,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11695,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11685,"src":"978:1:52","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":11696,"name":"rangeStart","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11654,"src":"982:10:52","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"978:14:52","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"966:27:52","typeDescriptions":{"typeIdentifier":"t_struct$_MultiTargetPermission_$13037_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":11701,"name":"op","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11659,"src":"1057:2:52","typeDescriptions":{"typeIdentifier":"t_enum$_Operation_$13017","typeString":"enum PermissionLib.Operation"}},{"arguments":[{"id":11704,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11685,"src":"1088:1:52","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":11703,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1080:7:52","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11702,"name":"address","nodeType":"ElementaryTypeName","src":"1080:7:52","typeDescriptions":{}}},"id":11705,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1080:10:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":11708,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11685,"src":"1117:1:52","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":11707,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1109:7:52","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11706,"name":"address","nodeType":"ElementaryTypeName","src":"1109:7:52","typeDescriptions":{}}},"id":11709,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1109:10:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":11710,"name":"PermissionLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13038,"src":"1144:13:52","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PermissionLib_$13038_$","typeString":"type(library PermissionLib)"}},"id":11711,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1158:12:52","memberName":"NO_CONDITION","nodeType":"MemberAccess","referencedDeclaration":13013,"src":"1144:26:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"4d4f434b5f5045524d495353494f4e","id":11713,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1208:17:52","typeDescriptions":{"typeIdentifier":"t_stringliteral_a280eec51ab8e1bc4b6b0c1b7f1bde785761b787a49db404e3e9338ed9b016ef","typeString":"literal_string \"MOCK_PERMISSION\""},"value":"MOCK_PERMISSION"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_a280eec51ab8e1bc4b6b0c1b7f1bde785761b787a49db404e3e9338ed9b016ef","typeString":"literal_string \"MOCK_PERMISSION\""}],"id":11712,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967288,"src":"1198:9:52","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":11714,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1198:28:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Operation_$13017","typeString":"enum PermissionLib.Operation"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":11699,"name":"PermissionLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13038,"src":"996:13:52","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PermissionLib_$13038_$","typeString":"type(library PermissionLib)"}},"id":11700,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1010:21:52","memberName":"MultiTargetPermission","nodeType":"MemberAccess","referencedDeclaration":13037,"src":"996:35:52","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_MultiTargetPermission_$13037_storage_ptr_$","typeString":"type(struct PermissionLib.MultiTargetPermission storage pointer)"}},"id":11715,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["1046:9:52","1073:5:52","1104:3:52","1133:9:52","1184:12:52"],"names":["operation","where","who","condition","permissionId"],"nodeType":"FunctionCall","src":"996:241:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_MultiTargetPermission_$13037_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory"}},"src":"966:271:52","typeDescriptions":{"typeIdentifier":"t_struct$_MultiTargetPermission_$13037_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory"}},"id":11717,"nodeType":"ExpressionStatement","src":"966:271:52"}]},"condition":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":11690,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11688,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11685,"src":"937:1:52","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":11689,"name":"rangeEnd","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11656,"src":"941:8:52","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"937:12:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11719,"initializationExpression":{"assignments":[11685],"declarations":[{"constant":false,"id":11685,"mutability":"mutable","name":"i","nameLocation":"921:1:52","nodeType":"VariableDeclaration","scope":11719,"src":"913:9:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":11684,"name":"uint160","nodeType":"ElementaryTypeName","src":"913:7:52","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"id":11687,"initialValue":{"id":11686,"name":"rangeStart","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11654,"src":"925:10:52","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"VariableDeclarationStatement","src":"913:22:52"},"loopExpression":{"expression":{"id":11692,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"951:3:52","subExpression":{"id":11691,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11685,"src":"951:1:52","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"id":11693,"nodeType":"ExpressionStatement","src":"951:3:52"},"nodeType":"ForStatement","src":"908:336:52"}]},"documentation":{"id":11652,"nodeType":"StructuredDocumentation","src":"212:368:52","text":"@notice Creates a mock `MultiTargetPermission` array by converting a range of `uint160` values into `address` values.\n @param rangeStart The start of the range.\n @param rangeEnd The end of the range (that is not included).\n @param op The permission operation type.\n @return permissions The mock array of permissions.\n @dev DO NOT USE IN PRODUCTION!"},"id":11721,"implemented":true,"kind":"freeFunction","modifiers":[],"name":"mockPermissions","nameLocation":"589:15:52","nodeType":"FunctionDefinition","parameters":{"id":11660,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11654,"mutability":"mutable","name":"rangeStart","nameLocation":"618:10:52","nodeType":"VariableDeclaration","scope":11721,"src":"610:18:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":11653,"name":"uint160","nodeType":"ElementaryTypeName","src":"610:7:52","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":11656,"mutability":"mutable","name":"rangeEnd","nameLocation":"642:8:52","nodeType":"VariableDeclaration","scope":11721,"src":"634:16:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":11655,"name":"uint160","nodeType":"ElementaryTypeName","src":"634:7:52","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":11659,"mutability":"mutable","name":"op","nameLocation":"680:2:52","nodeType":"VariableDeclaration","scope":11721,"src":"656:26:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Operation_$13017","typeString":"enum PermissionLib.Operation"},"typeName":{"id":11658,"nodeType":"UserDefinedTypeName","pathNode":{"id":11657,"name":"PermissionLib.Operation","nameLocations":["656:13:52","670:9:52"],"nodeType":"IdentifierPath","referencedDeclaration":13017,"src":"656:23:52"},"referencedDeclaration":13017,"src":"656:23:52","typeDescriptions":{"typeIdentifier":"t_enum$_Operation_$13017","typeString":"enum PermissionLib.Operation"}},"visibility":"internal"}],"src":"604:80:52"},"returnParameters":{"id":11665,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11664,"mutability":"mutable","name":"permissions","nameLocation":"744:11:52","nodeType":"VariableDeclaration","scope":11721,"src":"699:56:52","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission[]"},"typeName":{"baseType":{"id":11662,"nodeType":"UserDefinedTypeName","pathNode":{"id":11661,"name":"PermissionLib.MultiTargetPermission","nameLocations":["699:13:52","713:21:52"],"nodeType":"IdentifierPath","referencedDeclaration":13037,"src":"699:35:52"},"referencedDeclaration":13037,"src":"699:35:52","typeDescriptions":{"typeIdentifier":"t_struct$_MultiTargetPermission_$13037_storage_ptr","typeString":"struct PermissionLib.MultiTargetPermission"}},"id":11663,"nodeType":"ArrayTypeName","src":"699:37:52","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_storage_$dyn_storage_ptr","typeString":"struct PermissionLib.MultiTargetPermission[]"}},"visibility":"internal"}],"src":"698:58:52"},"scope":11761,"src":"580:666:52","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":11759,"nodeType":"Block","src":"1603:117:52","statements":[{"expression":{"id":11736,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11730,"name":"helpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11728,"src":"1609:7:52","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":11734,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11724,"src":"1633:3:52","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":11733,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"1619:13:52","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (address[] memory)"},"typeName":{"baseType":{"id":11731,"name":"address","nodeType":"ElementaryTypeName","src":"1623:7:52","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":11732,"nodeType":"ArrayTypeName","src":"1623:9:52","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}}},"id":11735,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1619:18:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"src":"1609:28:52","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":11737,"nodeType":"ExpressionStatement","src":"1609:28:52"},{"body":{"id":11757,"nodeType":"Block","src":"1678:40:52","statements":[{"expression":{"id":11755,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":11748,"name":"helpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11728,"src":"1688:7:52","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":11750,"indexExpression":{"id":11749,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11739,"src":"1696:1:52","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1688:10:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":11753,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11739,"src":"1709:1:52","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":11752,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1701:7:52","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11751,"name":"address","nodeType":"ElementaryTypeName","src":"1701:7:52","typeDescriptions":{}}},"id":11754,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1701:10:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1688:23:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":11756,"nodeType":"ExpressionStatement","src":"1688:23:52"}]},"condition":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":11744,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11742,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11739,"src":"1664:1:52","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":11743,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11724,"src":"1668:3:52","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"1664:7:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11758,"initializationExpression":{"assignments":[11739],"declarations":[{"constant":false,"id":11739,"mutability":"mutable","name":"i","nameLocation":"1657:1:52","nodeType":"VariableDeclaration","scope":11758,"src":"1649:9:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":11738,"name":"uint160","nodeType":"ElementaryTypeName","src":"1649:7:52","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"id":11741,"initialValue":{"hexValue":"30","id":11740,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1661:1:52","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"1649:13:52"},"loopExpression":{"expression":{"id":11746,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"1673:3:52","subExpression":{"id":11745,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11739,"src":"1673:1:52","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"id":11747,"nodeType":"ExpressionStatement","src":"1673:3:52"},"nodeType":"ForStatement","src":"1644:74:52"}]},"documentation":{"id":11722,"nodeType":"StructuredDocumentation","src":"1248:281:52","text":"@notice Creates a mock array of helper addresses of specified length by converting `uint160` values starting from 0 into `address` values.\n @param len The length of the helper array.\n @return helpers The mock array of helper addresses.\n @dev DO NOT USE IN PRODUCTION!"},"id":11760,"implemented":true,"kind":"freeFunction","modifiers":[],"name":"mockHelpers","nameLocation":"1538:11:52","nodeType":"FunctionDefinition","parameters":{"id":11725,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11724,"mutability":"mutable","name":"len","nameLocation":"1558:3:52","nodeType":"VariableDeclaration","scope":11760,"src":"1550:11:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":11723,"name":"uint160","nodeType":"ElementaryTypeName","src":"1550:7:52","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"1549:13:52"},"returnParameters":{"id":11729,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11728,"mutability":"mutable","name":"helpers","nameLocation":"1594:7:52","nodeType":"VariableDeclaration","scope":11760,"src":"1577:24:52","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":11726,"name":"address","nodeType":"ElementaryTypeName","src":"1577:7:52","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":11727,"nodeType":"ArrayTypeName","src":"1577:9:52","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"1576:26:52"},"scope":11761,"src":"1529:191:52","stateMutability":"pure","virtual":false,"visibility":"internal"}],"src":"47:1674:52"},"id":52},"src/mocks/plugin/PluginUUPSUpgradeableMock.sol":{"ast":{"absolutePath":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol","exportedSymbols":{"IDAO":[10865],"PluginUUPSUpgradeable":[13633],"PluginUUPSUpgradeableMockBad":[11921],"PluginUUPSUpgradeableMockBuild1":[11789],"PluginUUPSUpgradeableMockBuild2":[11837],"PluginUUPSUpgradeableMockBuild3":[11900]},"id":11922,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":11762,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"91:23:53"},{"absolutePath":"src/plugin/PluginUUPSUpgradeable.sol","file":"../../plugin/PluginUUPSUpgradeable.sol","id":11764,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":11922,"sourceUnit":13634,"src":"116:77:53","symbolAliases":[{"foreign":{"id":11763,"name":"PluginUUPSUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13633,"src":"124:21:53","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/dao/IDAO.sol","file":"../../dao/IDAO.sol","id":11766,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":11922,"sourceUnit":10866,"src":"194:40:53","symbolAliases":[{"foreign":{"id":11765,"name":"IDAO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10865,"src":"202:4:53","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":11768,"name":"PluginUUPSUpgradeable","nameLocations":["426:21:53"],"nodeType":"IdentifierPath","referencedDeclaration":13633,"src":"426:21:53"},"id":11769,"nodeType":"InheritanceSpecifier","src":"426:21:53"}],"canonicalName":"PluginUUPSUpgradeableMockBuild1","contractDependencies":[],"contractKind":"contract","documentation":{"id":11767,"nodeType":"StructuredDocumentation","src":"236:146:53","text":"@notice A mock upgradeable plugin to be deployed via the UUPS proxy pattern.\n v1.1 (Release 1, Build 1)\n @dev DO NOT USE IN PRODUCTION!"},"fullyImplemented":true,"id":11789,"linearizedBaseContracts":[11789,13633,14766,14744,13161,2593,671,355,20,30,2822,2834,534,13338],"name":"PluginUUPSUpgradeableMockBuild1","nameLocation":"391:31:53","nodeType":"ContractDefinition","nodes":[{"constant":false,"functionSelector":"6accab8c","id":11771,"mutability":"mutable","name":"state1","nameLocation":"469:6:53","nodeType":"VariableDeclaration","scope":11789,"src":"454:21:53","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11770,"name":"uint256","nodeType":"ElementaryTypeName","src":"454:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"body":{"id":11787,"nodeType":"Block","src":"534:71:53","statements":[{"expression":{"arguments":[{"id":11780,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11774,"src":"573:4:53","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}],"id":11779,"name":"__PluginUUPSUpgradeable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13570,"src":"544:28:53","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IDAO_$10865_$returns$__$","typeString":"function (contract IDAO)"}},"id":11781,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"544:34:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11782,"nodeType":"ExpressionStatement","src":"544:34:53"},{"expression":{"id":11785,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11783,"name":"state1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11771,"src":"588:6:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"31","id":11784,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"597:1:53","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"588:10:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11786,"nodeType":"ExpressionStatement","src":"588:10:53"}]},"functionSelector":"c4d66de8","id":11788,"implemented":true,"kind":"function","modifiers":[{"id":11777,"kind":"modifierInvocation","modifierName":{"id":11776,"name":"initializer","nameLocations":["522:11:53"],"nodeType":"IdentifierPath","referencedDeclaration":436,"src":"522:11:53"},"nodeType":"ModifierInvocation","src":"522:11:53"}],"name":"initialize","nameLocation":"491:10:53","nodeType":"FunctionDefinition","parameters":{"id":11775,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11774,"mutability":"mutable","name":"_dao","nameLocation":"507:4:53","nodeType":"VariableDeclaration","scope":11788,"src":"502:9:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"},"typeName":{"id":11773,"nodeType":"UserDefinedTypeName","pathNode":{"id":11772,"name":"IDAO","nameLocations":["502:4:53"],"nodeType":"IdentifierPath","referencedDeclaration":10865,"src":"502:4:53"},"referencedDeclaration":10865,"src":"502:4:53","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}},"visibility":"internal"}],"src":"501:11:53"},"returnParameters":{"id":11778,"nodeType":"ParameterList","parameters":[],"src":"534:0:53"},"scope":11789,"src":"482:123:53","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":11922,"src":"382:225:53","usedErrors":[13176]},{"abstract":false,"baseContracts":[{"baseName":{"id":11791,"name":"PluginUUPSUpgradeable","nameLocations":["799:21:53"],"nodeType":"IdentifierPath","referencedDeclaration":13633,"src":"799:21:53"},"id":11792,"nodeType":"InheritanceSpecifier","src":"799:21:53"}],"canonicalName":"PluginUUPSUpgradeableMockBuild2","contractDependencies":[],"contractKind":"contract","documentation":{"id":11790,"nodeType":"StructuredDocumentation","src":"609:146:53","text":"@notice A mock upgradeable plugin to be deployed via the UUPS proxy pattern.\n v1.1 (Release 1, Build 2)\n @dev DO NOT USE IN PRODUCTION!"},"fullyImplemented":true,"id":11837,"linearizedBaseContracts":[11837,13633,14766,14744,13161,2593,671,355,20,30,2822,2834,534,13338],"name":"PluginUUPSUpgradeableMockBuild2","nameLocation":"764:31:53","nodeType":"ContractDefinition","nodes":[{"constant":false,"functionSelector":"6accab8c","id":11794,"mutability":"mutable","name":"state1","nameLocation":"842:6:53","nodeType":"VariableDeclaration","scope":11837,"src":"827:21:53","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11793,"name":"uint256","nodeType":"ElementaryTypeName","src":"827:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"constant":false,"functionSelector":"efe51cca","id":11796,"mutability":"mutable","name":"state2","nameLocation":"869:6:53","nodeType":"VariableDeclaration","scope":11837,"src":"854:21:53","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11795,"name":"uint256","nodeType":"ElementaryTypeName","src":"854:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"body":{"id":11817,"nodeType":"Block","src":"939:91:53","statements":[{"expression":{"arguments":[{"id":11806,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11799,"src":"978:4:53","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}],"id":11805,"name":"__PluginUUPSUpgradeable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13570,"src":"949:28:53","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IDAO_$10865_$returns$__$","typeString":"function (contract IDAO)"}},"id":11807,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"949:34:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11808,"nodeType":"ExpressionStatement","src":"949:34:53"},{"expression":{"id":11811,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11809,"name":"state1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11794,"src":"993:6:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"31","id":11810,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1002:1:53","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"993:10:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11812,"nodeType":"ExpressionStatement","src":"993:10:53"},{"expression":{"id":11815,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11813,"name":"state2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11796,"src":"1013:6:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"32","id":11814,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1022:1:53","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"1013:10:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11816,"nodeType":"ExpressionStatement","src":"1013:10:53"}]},"functionSelector":"c4d66de8","id":11818,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"hexValue":"32","id":11802,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"936:1:53","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"}],"id":11803,"kind":"modifierInvocation","modifierName":{"id":11801,"name":"reinitializer","nameLocations":["922:13:53"],"nodeType":"IdentifierPath","referencedDeclaration":469,"src":"922:13:53"},"nodeType":"ModifierInvocation","src":"922:16:53"}],"name":"initialize","nameLocation":"891:10:53","nodeType":"FunctionDefinition","parameters":{"id":11800,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11799,"mutability":"mutable","name":"_dao","nameLocation":"907:4:53","nodeType":"VariableDeclaration","scope":11818,"src":"902:9:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"},"typeName":{"id":11798,"nodeType":"UserDefinedTypeName","pathNode":{"id":11797,"name":"IDAO","nameLocations":["902:4:53"],"nodeType":"IdentifierPath","referencedDeclaration":10865,"src":"902:4:53"},"referencedDeclaration":10865,"src":"902:4:53","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}},"visibility":"internal"}],"src":"901:11:53"},"returnParameters":{"id":11804,"nodeType":"ParameterList","parameters":[],"src":"939:0:53"},"scope":11837,"src":"882:148:53","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":11835,"nodeType":"Block","src":"1109:75:53","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"id":11828,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11826,"name":"_previousBuild","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11820,"src":"1123:14:53","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"32","id":11827,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1140:1:53","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"1123:18:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11834,"nodeType":"IfStatement","src":"1119:59:53","trueBody":{"id":11833,"nodeType":"Block","src":"1143:35:53","statements":[{"expression":{"id":11831,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11829,"name":"state2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11796,"src":"1157:6:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"32","id":11830,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1166:1:53","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"1157:10:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11832,"nodeType":"ExpressionStatement","src":"1157:10:53"}]}}]},"functionSelector":"039a8c50","id":11836,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"hexValue":"32","id":11823,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1106:1:53","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"}],"id":11824,"kind":"modifierInvocation","modifierName":{"id":11822,"name":"reinitializer","nameLocations":["1092:13:53"],"nodeType":"IdentifierPath","referencedDeclaration":469,"src":"1092:13:53"},"nodeType":"ModifierInvocation","src":"1092:16:53"}],"name":"initializeFrom","nameLocation":"1045:14:53","nodeType":"FunctionDefinition","parameters":{"id":11821,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11820,"mutability":"mutable","name":"_previousBuild","nameLocation":"1067:14:53","nodeType":"VariableDeclaration","scope":11836,"src":"1060:21:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":11819,"name":"uint16","nodeType":"ElementaryTypeName","src":"1060:6:53","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"1059:23:53"},"returnParameters":{"id":11825,"nodeType":"ParameterList","parameters":[],"src":"1109:0:53"},"scope":11837,"src":"1036:148:53","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":11922,"src":"755:431:53","usedErrors":[13176]},{"abstract":false,"baseContracts":[{"baseName":{"id":11839,"name":"PluginUUPSUpgradeable","nameLocations":["1378:21:53"],"nodeType":"IdentifierPath","referencedDeclaration":13633,"src":"1378:21:53"},"id":11840,"nodeType":"InheritanceSpecifier","src":"1378:21:53"}],"canonicalName":"PluginUUPSUpgradeableMockBuild3","contractDependencies":[],"contractKind":"contract","documentation":{"id":11838,"nodeType":"StructuredDocumentation","src":"1188:146:53","text":"@notice A mock upgradeable plugin to be deployed via the UUPS proxy pattern.\n v1.1 (Release 1, Build 3)\n @dev DO NOT USE IN PRODUCTION!"},"fullyImplemented":true,"id":11900,"linearizedBaseContracts":[11900,13633,14766,14744,13161,2593,671,355,20,30,2822,2834,534,13338],"name":"PluginUUPSUpgradeableMockBuild3","nameLocation":"1343:31:53","nodeType":"ContractDefinition","nodes":[{"constant":false,"functionSelector":"6accab8c","id":11842,"mutability":"mutable","name":"state1","nameLocation":"1421:6:53","nodeType":"VariableDeclaration","scope":11900,"src":"1406:21:53","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11841,"name":"uint256","nodeType":"ElementaryTypeName","src":"1406:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"constant":false,"functionSelector":"efe51cca","id":11844,"mutability":"mutable","name":"state2","nameLocation":"1448:6:53","nodeType":"VariableDeclaration","scope":11900,"src":"1433:21:53","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11843,"name":"uint256","nodeType":"ElementaryTypeName","src":"1433:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"constant":false,"functionSelector":"2491118d","id":11846,"mutability":"mutable","name":"state3","nameLocation":"1475:6:53","nodeType":"VariableDeclaration","scope":11900,"src":"1460:21:53","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11845,"name":"uint256","nodeType":"ElementaryTypeName","src":"1460:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"body":{"id":11871,"nodeType":"Block","src":"1545:111:53","statements":[{"expression":{"arguments":[{"id":11856,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11849,"src":"1584:4:53","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}],"id":11855,"name":"__PluginUUPSUpgradeable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13570,"src":"1555:28:53","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IDAO_$10865_$returns$__$","typeString":"function (contract IDAO)"}},"id":11857,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1555:34:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11858,"nodeType":"ExpressionStatement","src":"1555:34:53"},{"expression":{"id":11861,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11859,"name":"state1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11842,"src":"1599:6:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"31","id":11860,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1608:1:53","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1599:10:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11862,"nodeType":"ExpressionStatement","src":"1599:10:53"},{"expression":{"id":11865,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11863,"name":"state2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11844,"src":"1619:6:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"32","id":11864,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1628:1:53","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"1619:10:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11866,"nodeType":"ExpressionStatement","src":"1619:10:53"},{"expression":{"id":11869,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11867,"name":"state3","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11846,"src":"1639:6:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"33","id":11868,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1648:1:53","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"1639:10:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11870,"nodeType":"ExpressionStatement","src":"1639:10:53"}]},"functionSelector":"c4d66de8","id":11872,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"hexValue":"33","id":11852,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1542:1:53","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"}],"id":11853,"kind":"modifierInvocation","modifierName":{"id":11851,"name":"reinitializer","nameLocations":["1528:13:53"],"nodeType":"IdentifierPath","referencedDeclaration":469,"src":"1528:13:53"},"nodeType":"ModifierInvocation","src":"1528:16:53"}],"name":"initialize","nameLocation":"1497:10:53","nodeType":"FunctionDefinition","parameters":{"id":11850,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11849,"mutability":"mutable","name":"_dao","nameLocation":"1513:4:53","nodeType":"VariableDeclaration","scope":11872,"src":"1508:9:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"},"typeName":{"id":11848,"nodeType":"UserDefinedTypeName","pathNode":{"id":11847,"name":"IDAO","nameLocations":["1508:4:53"],"nodeType":"IdentifierPath","referencedDeclaration":10865,"src":"1508:4:53"},"referencedDeclaration":10865,"src":"1508:4:53","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}},"visibility":"internal"}],"src":"1507:11:53"},"returnParameters":{"id":11854,"nodeType":"ParameterList","parameters":[],"src":"1545:0:53"},"scope":11900,"src":"1488:168:53","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":11898,"nodeType":"Block","src":"1735:143:53","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"id":11882,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11880,"name":"_previousBuild","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11874,"src":"1749:14:53","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"32","id":11881,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1766:1:53","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"1749:18:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11888,"nodeType":"IfStatement","src":"1745:59:53","trueBody":{"id":11887,"nodeType":"Block","src":"1769:35:53","statements":[{"expression":{"id":11885,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11883,"name":"state2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11844,"src":"1783:6:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"32","id":11884,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1792:1:53","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"1783:10:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11886,"nodeType":"ExpressionStatement","src":"1783:10:53"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"id":11891,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11889,"name":"_previousBuild","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11874,"src":"1817:14:53","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"33","id":11890,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1834:1:53","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"1817:18:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11897,"nodeType":"IfStatement","src":"1813:59:53","trueBody":{"id":11896,"nodeType":"Block","src":"1837:35:53","statements":[{"expression":{"id":11894,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11892,"name":"state3","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11846,"src":"1851:6:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"33","id":11893,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1860:1:53","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"1851:10:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11895,"nodeType":"ExpressionStatement","src":"1851:10:53"}]}}]},"functionSelector":"039a8c50","id":11899,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"hexValue":"33","id":11877,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1732:1:53","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"}],"id":11878,"kind":"modifierInvocation","modifierName":{"id":11876,"name":"reinitializer","nameLocations":["1718:13:53"],"nodeType":"IdentifierPath","referencedDeclaration":469,"src":"1718:13:53"},"nodeType":"ModifierInvocation","src":"1718:16:53"}],"name":"initializeFrom","nameLocation":"1671:14:53","nodeType":"FunctionDefinition","parameters":{"id":11875,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11874,"mutability":"mutable","name":"_previousBuild","nameLocation":"1693:14:53","nodeType":"VariableDeclaration","scope":11899,"src":"1686:21:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":11873,"name":"uint16","nodeType":"ElementaryTypeName","src":"1686:6:53","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"1685:23:53"},"returnParameters":{"id":11879,"nodeType":"ParameterList","parameters":[],"src":"1735:0:53"},"scope":11900,"src":"1662:216:53","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":11922,"src":"1334:546:53","usedErrors":[13176]},{"abstract":false,"baseContracts":[{"baseName":{"id":11902,"name":"PluginUUPSUpgradeable","nameLocations":["2029:21:53"],"nodeType":"IdentifierPath","referencedDeclaration":13633,"src":"2029:21:53"},"id":11903,"nodeType":"InheritanceSpecifier","src":"2029:21:53"}],"canonicalName":"PluginUUPSUpgradeableMockBad","contractDependencies":[],"contractKind":"contract","documentation":{"id":11901,"nodeType":"StructuredDocumentation","src":"1882:106:53","text":"@notice A mock upgradeable plugin missing an initializer function.\n @dev DO NOT USE IN PRODUCTION!"},"fullyImplemented":true,"id":11921,"linearizedBaseContracts":[11921,13633,14766,14744,13161,2593,671,355,20,30,2822,2834,534,13338],"name":"PluginUUPSUpgradeableMockBad","nameLocation":"1997:28:53","nodeType":"ContractDefinition","nodes":[{"constant":false,"functionSelector":"6accab8c","id":11905,"mutability":"mutable","name":"state1","nameLocation":"2072:6:53","nodeType":"VariableDeclaration","scope":11921,"src":"2057:21:53","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11904,"name":"uint256","nodeType":"ElementaryTypeName","src":"2057:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"body":{"id":11919,"nodeType":"Block","src":"2131:71:53","statements":[{"expression":{"arguments":[{"id":11912,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11908,"src":"2170:4:53","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}],"id":11911,"name":"__PluginUUPSUpgradeable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13570,"src":"2141:28:53","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IDAO_$10865_$returns$__$","typeString":"function (contract IDAO)"}},"id":11913,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2141:34:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11914,"nodeType":"ExpressionStatement","src":"2141:34:53"},{"expression":{"id":11917,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11915,"name":"state1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11905,"src":"2185:6:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"31","id":11916,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2194:1:53","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2185:10:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11918,"nodeType":"ExpressionStatement","src":"2185:10:53"}]},"functionSelector":"8883bbd7","id":11920,"implemented":true,"kind":"function","modifiers":[],"name":"notAnInitializer","nameLocation":"2094:16:53","nodeType":"FunctionDefinition","parameters":{"id":11909,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11908,"mutability":"mutable","name":"_dao","nameLocation":"2116:4:53","nodeType":"VariableDeclaration","scope":11920,"src":"2111:9:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"},"typeName":{"id":11907,"nodeType":"UserDefinedTypeName","pathNode":{"id":11906,"name":"IDAO","nameLocations":["2111:4:53"],"nodeType":"IdentifierPath","referencedDeclaration":10865,"src":"2111:4:53"},"referencedDeclaration":10865,"src":"2111:4:53","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}},"visibility":"internal"}],"src":"2110:11:53"},"returnParameters":{"id":11910,"nodeType":"ParameterList","parameters":[],"src":"2131:0:53"},"scope":11921,"src":"2085:117:53","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":11922,"src":"1988:216:53","usedErrors":[13176]}],"src":"91:2114:53"},"id":53},"src/mocks/plugin/PluginUUPSUpgradeableSetupMock.sol":{"ast":{"absolutePath":"src/mocks/plugin/PluginUUPSUpgradeableSetupMock.sol","exportedSymbols":{"IDAO":[10865],"IPluginSetup":[14273],"PermissionLib":[13038],"PluginUUPSUpgradeableMockBuild1":[11789],"PluginUUPSUpgradeableMockBuild2":[11837],"PluginUUPSUpgradeableMockBuild3":[11900],"PluginUUPSUpgradeableSetupMockBuild1":[12072],"PluginUUPSUpgradeableSetupMockBuild2":[12234],"PluginUUPSUpgradeableSetupMockBuild3":[12431],"PluginUpgradeableSetup":[14448],"ProxyLib":[14593],"mockHelpers":[11760],"mockPermissions":[11721]},"id":12432,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":11923,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"91:23:54"},{"absolutePath":"src/permission/PermissionLib.sol","file":"../../permission/PermissionLib.sol","id":11925,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":12432,"sourceUnit":13039,"src":"116:65:54","symbolAliases":[{"foreign":{"id":11924,"name":"PermissionLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13038,"src":"124:13:54","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/plugin/setup/IPluginSetup.sol","file":"../../plugin/setup/IPluginSetup.sol","id":11927,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":12432,"sourceUnit":14274,"src":"182:65:54","symbolAliases":[{"foreign":{"id":11926,"name":"IPluginSetup","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14273,"src":"190:12:54","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/plugin/setup/PluginUpgradeableSetup.sol","file":"../../plugin/setup/PluginUpgradeableSetup.sol","id":11929,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":12432,"sourceUnit":14449,"src":"248:85:54","symbolAliases":[{"foreign":{"id":11928,"name":"PluginUpgradeableSetup","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14448,"src":"256:22:54","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/utils/deployment/ProxyLib.sol","file":"../../utils/deployment/ProxyLib.sol","id":11931,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":12432,"sourceUnit":14594,"src":"334:61:54","symbolAliases":[{"foreign":{"id":11930,"name":"ProxyLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14593,"src":"342:8:54","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/dao/IDAO.sol","file":"../../dao/IDAO.sol","id":11933,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":12432,"sourceUnit":10866,"src":"396:40:54","symbolAliases":[{"foreign":{"id":11932,"name":"IDAO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10865,"src":"404:4:54","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/mocks/plugin/PluginSetupMockData.sol","file":"./PluginSetupMockData.sol","id":11936,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":12432,"sourceUnit":11761,"src":"437:71:54","symbolAliases":[{"foreign":{"id":11934,"name":"mockPermissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11721,"src":"445:15:54","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":11935,"name":"mockHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11760,"src":"462:11:54","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol","file":"./PluginUUPSUpgradeableMock.sol","id":11940,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":12432,"sourceUnit":11922,"src":"509:146:54","symbolAliases":[{"foreign":{"id":11937,"name":"PluginUUPSUpgradeableMockBuild1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11789,"src":"517:31:54","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":11938,"name":"PluginUUPSUpgradeableMockBuild2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11837,"src":"550:31:54","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":11939,"name":"PluginUUPSUpgradeableMockBuild3","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11900,"src":"583:31:54","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":11942,"name":"PluginUpgradeableSetup","nameLocations":["865:22:54"],"nodeType":"IdentifierPath","referencedDeclaration":14448,"src":"865:22:54"},"id":11943,"nodeType":"InheritanceSpecifier","src":"865:22:54"}],"canonicalName":"PluginUUPSUpgradeableSetupMockBuild1","contractDependencies":[5389,11789],"contractKind":"contract","documentation":{"id":11941,"nodeType":"StructuredDocumentation","src":"657:159:54","text":"@notice A mock plugin setup of an upgradeable plugin to be deployed via the UUPS pattern.\n v1.1 (Release 1, Build 1)\n @dev DO NOT USE IN PRODUCTION!"},"fullyImplemented":true,"id":12072,"linearizedBaseContracts":[12072,14448,14766,14744,14273,9731,9743],"name":"PluginUUPSUpgradeableSetupMockBuild1","nameLocation":"825:36:54","nodeType":"ContractDefinition","nodes":[{"global":false,"id":11946,"libraryName":{"id":11944,"name":"ProxyLib","nameLocations":["900:8:54"],"nodeType":"IdentifierPath","referencedDeclaration":14593,"src":"900:8:54"},"nodeType":"UsingForDirective","src":"894:27:54","typeName":{"id":11945,"name":"address","nodeType":"ElementaryTypeName","src":"913:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},{"constant":true,"id":11949,"mutability":"constant","name":"THIS_BUILD","nameLocation":"952:10:54","nodeType":"VariableDeclaration","scope":12072,"src":"927:39:54","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":11947,"name":"uint16","nodeType":"ElementaryTypeName","src":"927:6:54","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"value":{"hexValue":"31","id":11948,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"965:1:54","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"visibility":"internal"},{"body":{"id":11961,"nodeType":"Block","src":"1058:2:54","statements":[]},"id":11962,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":11956,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"NewExpression","src":"1018:35:54","typeDescriptions":{"typeIdentifier":"t_function_creation_nonpayable$__$returns$_t_contract$_PluginUUPSUpgradeableMockBuild1_$11789_$","typeString":"function () returns (contract PluginUUPSUpgradeableMockBuild1)"},"typeName":{"id":11955,"nodeType":"UserDefinedTypeName","pathNode":{"id":11954,"name":"PluginUUPSUpgradeableMockBuild1","nameLocations":["1022:31:54"],"nodeType":"IdentifierPath","referencedDeclaration":11789,"src":"1022:31:54"},"referencedDeclaration":11789,"src":"1022:31:54","typeDescriptions":{"typeIdentifier":"t_contract$_PluginUUPSUpgradeableMockBuild1_$11789","typeString":"contract PluginUUPSUpgradeableMockBuild1"}}},"id":11957,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1018:37:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_PluginUUPSUpgradeableMockBuild1_$11789","typeString":"contract PluginUUPSUpgradeableMockBuild1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_PluginUUPSUpgradeableMockBuild1_$11789","typeString":"contract PluginUUPSUpgradeableMockBuild1"}],"id":11953,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1010:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11952,"name":"address","nodeType":"ElementaryTypeName","src":"1010:7:54","typeDescriptions":{}}},"id":11958,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1010:46:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":11959,"kind":"baseConstructorSpecifier","modifierName":{"id":11951,"name":"PluginUpgradeableSetup","nameLocations":["987:22:54"],"nodeType":"IdentifierPath","referencedDeclaration":14448,"src":"987:22:54"},"nodeType":"ModifierInvocation","src":"987:70:54"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":11950,"nodeType":"ParameterList","parameters":[],"src":"984:2:54"},"returnParameters":{"id":11960,"nodeType":"ParameterList","parameters":[],"src":"1058:0:54"},"scope":12072,"src":"973:87:54","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[14237],"body":{"id":12015,"nodeType":"Block","src":"1254:354:54","statements":[{"assignments":[11976],"declarations":[{"constant":false,"id":11976,"mutability":"mutable","name":"initData","nameLocation":"1277:8:54","nodeType":"VariableDeclaration","scope":12015,"src":"1264:21:54","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":11975,"name":"bytes","nodeType":"ElementaryTypeName","src":"1264:5:54","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":11986,"initialValue":{"arguments":[{"expression":{"id":11979,"name":"PluginUUPSUpgradeableMockBuild1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11789,"src":"1316:31:54","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PluginUUPSUpgradeableMockBuild1_$11789_$","typeString":"type(contract PluginUUPSUpgradeableMockBuild1)"}},"id":11980,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1348:10:54","memberName":"initialize","nodeType":"MemberAccess","referencedDeclaration":11788,"src":"1316:42:54","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_contract$_IDAO_$10865_$returns$__$","typeString":"function PluginUUPSUpgradeableMockBuild1.initialize(contract IDAO)"}},{"components":[{"arguments":[{"id":11982,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11965,"src":"1378:4:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11981,"name":"IDAO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10865,"src":"1373:4:54","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IDAO_$10865_$","typeString":"type(contract IDAO)"}},"id":11983,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1373:10:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}}],"id":11984,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1372:12:54","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_nonpayable$_t_contract$_IDAO_$10865_$returns$__$","typeString":"function PluginUUPSUpgradeableMockBuild1.initialize(contract IDAO)"},{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}],"expression":{"id":11977,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967295,"src":"1288:3:54","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":11978,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1292:10:54","memberName":"encodeCall","nodeType":"MemberAccess","src":"1288:14:54","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":11985,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1288:106:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"1264:130:54"},{"expression":{"id":11993,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11987,"name":"plugin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11970,"src":"1404:6:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":11991,"name":"initData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11976,"src":"1446:8:54","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":11988,"name":"implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14447,"src":"1413:14:54","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":11989,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1413:16:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":11990,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1430:15:54","memberName":"deployUUPSProxy","nodeType":"MemberAccess","referencedDeclaration":14563,"src":"1413:32:54","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_address_$bound_to$_t_address_$","typeString":"function (address,bytes memory) returns (address)"}},"id":11992,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1413:42:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1404:51:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":11994,"nodeType":"ExpressionStatement","src":"1404:51:54"},{"expression":{"id":12001,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":11995,"name":"preparedSetupData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11973,"src":"1465:17:54","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$14216_memory_ptr","typeString":"struct IPluginSetup.PreparedSetupData memory"}},"id":11997,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1483:7:54","memberName":"helpers","nodeType":"MemberAccess","referencedDeclaration":14211,"src":"1465:25:54","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"hexValue":"31","id":11999,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1505:1:54","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":11998,"name":"mockHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11760,"src":"1493:11:54","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$returns$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"function (uint160) pure returns (address[] memory)"}},"id":12000,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1493:14:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"src":"1465:42:54","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":12002,"nodeType":"ExpressionStatement","src":"1465:42:54"},{"expression":{"id":12013,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":12003,"name":"preparedSetupData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11973,"src":"1517:17:54","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$14216_memory_ptr","typeString":"struct IPluginSetup.PreparedSetupData memory"}},"id":12005,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1535:11:54","memberName":"permissions","nodeType":"MemberAccess","referencedDeclaration":14215,"src":"1517:29:54","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"hexValue":"30","id":12007,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1565:1:54","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"31","id":12008,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1568:1:54","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},{"expression":{"expression":{"id":12009,"name":"PermissionLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13038,"src":"1571:13:54","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PermissionLib_$13038_$","typeString":"type(library PermissionLib)"}},"id":12010,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1585:9:54","memberName":"Operation","nodeType":"MemberAccess","referencedDeclaration":13017,"src":"1571:23:54","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Operation_$13017_$","typeString":"type(enum PermissionLib.Operation)"}},"id":12011,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1595:5:54","memberName":"Grant","nodeType":"MemberAccess","referencedDeclaration":13014,"src":"1571:29:54","typeDescriptions":{"typeIdentifier":"t_enum$_Operation_$13017","typeString":"enum PermissionLib.Operation"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},{"typeIdentifier":"t_enum$_Operation_$13017","typeString":"enum PermissionLib.Operation"}],"id":12006,"name":"mockPermissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11721,"src":"1549:15:54","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_enum$_Operation_$13017_$returns$_t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint160,uint160,enum PermissionLib.Operation) pure returns (struct PermissionLib.MultiTargetPermission memory[] memory)"}},"id":12012,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1549:52:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"src":"1517:84:54","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"id":12014,"nodeType":"ExpressionStatement","src":"1517:84:54"}]},"documentation":{"id":11963,"nodeType":"StructuredDocumentation","src":"1066:28:54","text":"@inheritdoc IPluginSetup"},"functionSelector":"f10832f1","id":12016,"implemented":true,"kind":"function","modifiers":[],"name":"prepareInstallation","nameLocation":"1108:19:54","nodeType":"FunctionDefinition","parameters":{"id":11968,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11965,"mutability":"mutable","name":"_dao","nameLocation":"1145:4:54","nodeType":"VariableDeclaration","scope":12016,"src":"1137:12:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11964,"name":"address","nodeType":"ElementaryTypeName","src":"1137:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11967,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12016,"src":"1159:12:54","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":11966,"name":"bytes","nodeType":"ElementaryTypeName","src":"1159:5:54","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1127:50:54"},"returnParameters":{"id":11974,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11970,"mutability":"mutable","name":"plugin","nameLocation":"1202:6:54","nodeType":"VariableDeclaration","scope":12016,"src":"1194:14:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11969,"name":"address","nodeType":"ElementaryTypeName","src":"1194:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11973,"mutability":"mutable","name":"preparedSetupData","nameLocation":"1235:17:54","nodeType":"VariableDeclaration","scope":12016,"src":"1210:42:54","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$14216_memory_ptr","typeString":"struct IPluginSetup.PreparedSetupData"},"typeName":{"id":11972,"nodeType":"UserDefinedTypeName","pathNode":{"id":11971,"name":"PreparedSetupData","nameLocations":["1210:17:54"],"nodeType":"IdentifierPath","referencedDeclaration":14216,"src":"1210:17:54"},"referencedDeclaration":14216,"src":"1210:17:54","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$14216_storage_ptr","typeString":"struct IPluginSetup.PreparedSetupData"}},"visibility":"internal"}],"src":"1193:60:54"},"scope":12072,"src":"1099:509:54","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[14253],"body":{"id":12042,"nodeType":"Block","src":"1946:118:54","statements":[{"expression":{"components":[{"id":12032,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12019,"src":"1957:4:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12033,"name":"_fromBuild","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12021,"src":"1963:10:54","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"id":12034,"name":"_payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12024,"src":"1975:8:54","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$14224_calldata_ptr","typeString":"struct IPluginSetup.SetupPayload calldata"}}],"id":12035,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1956:28:54","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint16_$_t_struct$_SetupPayload_$14224_calldata_ptr_$","typeString":"tuple(address,uint16,struct IPluginSetup.SetupPayload calldata)"}},"id":12036,"nodeType":"ExpressionStatement","src":"1956:28:54"},{"errorCall":{"arguments":[{"hexValue":"30","id":12038,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2031:1:54","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":12039,"name":"THIS_BUILD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11949,"src":"2045:10:54","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint16","typeString":"uint16"}],"id":12037,"name":"InvalidUpdatePath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14398,"src":"2001:17:54","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint16_$_t_uint16_$returns$__$","typeString":"function (uint16,uint16) pure"}},"id":12040,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":["2020:9:54","2034:9:54"],"names":["fromBuild","thisBuild"],"nodeType":"FunctionCall","src":"2001:56:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12041,"nodeType":"RevertStatement","src":"1994:63:54"}]},"documentation":{"id":12017,"nodeType":"StructuredDocumentation","src":"1614:138:54","text":"@inheritdoc IPluginSetup\n @dev The default implementation for the initial build 1 that reverts because no earlier build exists."},"functionSelector":"a8a9c29e","id":12043,"implemented":true,"kind":"function","modifiers":[],"name":"prepareUpdate","nameLocation":"1766:13:54","nodeType":"FunctionDefinition","parameters":{"id":12025,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12019,"mutability":"mutable","name":"_dao","nameLocation":"1797:4:54","nodeType":"VariableDeclaration","scope":12043,"src":"1789:12:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12018,"name":"address","nodeType":"ElementaryTypeName","src":"1789:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12021,"mutability":"mutable","name":"_fromBuild","nameLocation":"1818:10:54","nodeType":"VariableDeclaration","scope":12043,"src":"1811:17:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":12020,"name":"uint16","nodeType":"ElementaryTypeName","src":"1811:6:54","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":12024,"mutability":"mutable","name":"_payload","nameLocation":"1860:8:54","nodeType":"VariableDeclaration","scope":12043,"src":"1838:30:54","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$14224_calldata_ptr","typeString":"struct IPluginSetup.SetupPayload"},"typeName":{"id":12023,"nodeType":"UserDefinedTypeName","pathNode":{"id":12022,"name":"SetupPayload","nameLocations":["1838:12:54"],"nodeType":"IdentifierPath","referencedDeclaration":14224,"src":"1838:12:54"},"referencedDeclaration":14224,"src":"1838:12:54","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$14224_storage_ptr","typeString":"struct IPluginSetup.SetupPayload"}},"visibility":"internal"}],"src":"1779:95:54"},"returnParameters":{"id":12031,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12027,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12043,"src":"1906:12:54","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":12026,"name":"bytes","nodeType":"ElementaryTypeName","src":"1906:5:54","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":12030,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12043,"src":"1920:24:54","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$14216_memory_ptr","typeString":"struct IPluginSetup.PreparedSetupData"},"typeName":{"id":12029,"nodeType":"UserDefinedTypeName","pathNode":{"id":12028,"name":"PreparedSetupData","nameLocations":["1920:17:54"],"nodeType":"IdentifierPath","referencedDeclaration":14216,"src":"1920:17:54"},"referencedDeclaration":14216,"src":"1920:17:54","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$14216_storage_ptr","typeString":"struct IPluginSetup.PreparedSetupData"}},"visibility":"internal"}],"src":"1905:40:54"},"scope":12072,"src":"1757:307:54","stateMutability":"pure","virtual":true,"visibility":"external"},{"baseFunctions":[14266],"body":{"id":12070,"nodeType":"Block","src":"2283:119:54","statements":[{"expression":{"components":[{"id":12056,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12046,"src":"2294:4:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12057,"name":"_payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12049,"src":"2300:8:54","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$14224_calldata_ptr","typeString":"struct IPluginSetup.SetupPayload calldata"}}],"id":12058,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2293:16:54","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_struct$_SetupPayload_$14224_calldata_ptr_$","typeString":"tuple(address,struct IPluginSetup.SetupPayload calldata)"}},"id":12059,"nodeType":"ExpressionStatement","src":"2293:16:54"},{"expression":{"id":12068,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12060,"name":"permissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12054,"src":"2319:11:54","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"hexValue":"30","id":12062,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2349:1:54","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":12063,"name":"THIS_BUILD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11949,"src":"2352:10:54","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"expression":{"expression":{"id":12064,"name":"PermissionLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13038,"src":"2364:13:54","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PermissionLib_$13038_$","typeString":"type(library PermissionLib)"}},"id":12065,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2378:9:54","memberName":"Operation","nodeType":"MemberAccess","referencedDeclaration":13017,"src":"2364:23:54","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Operation_$13017_$","typeString":"type(enum PermissionLib.Operation)"}},"id":12066,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2388:6:54","memberName":"Revoke","nodeType":"MemberAccess","referencedDeclaration":13015,"src":"2364:30:54","typeDescriptions":{"typeIdentifier":"t_enum$_Operation_$13017","typeString":"enum PermissionLib.Operation"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_enum$_Operation_$13017","typeString":"enum PermissionLib.Operation"}],"id":12061,"name":"mockPermissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11721,"src":"2333:15:54","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_enum$_Operation_$13017_$returns$_t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint160,uint160,enum PermissionLib.Operation) pure returns (struct PermissionLib.MultiTargetPermission memory[] memory)"}},"id":12067,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2333:62:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"src":"2319:76:54","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"id":12069,"nodeType":"ExpressionStatement","src":"2319:76:54"}]},"documentation":{"id":12044,"nodeType":"StructuredDocumentation","src":"2070:28:54","text":"@inheritdoc IPluginSetup"},"functionSelector":"9cb0a124","id":12071,"implemented":true,"kind":"function","modifiers":[],"name":"prepareUninstallation","nameLocation":"2112:21:54","nodeType":"FunctionDefinition","parameters":{"id":12050,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12046,"mutability":"mutable","name":"_dao","nameLocation":"2151:4:54","nodeType":"VariableDeclaration","scope":12071,"src":"2143:12:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12045,"name":"address","nodeType":"ElementaryTypeName","src":"2143:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12049,"mutability":"mutable","name":"_payload","nameLocation":"2187:8:54","nodeType":"VariableDeclaration","scope":12071,"src":"2165:30:54","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$14224_calldata_ptr","typeString":"struct IPluginSetup.SetupPayload"},"typeName":{"id":12048,"nodeType":"UserDefinedTypeName","pathNode":{"id":12047,"name":"SetupPayload","nameLocations":["2165:12:54"],"nodeType":"IdentifierPath","referencedDeclaration":14224,"src":"2165:12:54"},"referencedDeclaration":14224,"src":"2165:12:54","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$14224_storage_ptr","typeString":"struct IPluginSetup.SetupPayload"}},"visibility":"internal"}],"src":"2133:68:54"},"returnParameters":{"id":12055,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12054,"mutability":"mutable","name":"permissions","nameLocation":"2270:11:54","nodeType":"VariableDeclaration","scope":12071,"src":"2225:56:54","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission[]"},"typeName":{"baseType":{"id":12052,"nodeType":"UserDefinedTypeName","pathNode":{"id":12051,"name":"PermissionLib.MultiTargetPermission","nameLocations":["2225:13:54","2239:21:54"],"nodeType":"IdentifierPath","referencedDeclaration":13037,"src":"2225:35:54"},"referencedDeclaration":13037,"src":"2225:35:54","typeDescriptions":{"typeIdentifier":"t_struct$_MultiTargetPermission_$13037_storage_ptr","typeString":"struct PermissionLib.MultiTargetPermission"}},"id":12053,"nodeType":"ArrayTypeName","src":"2225:37:54","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_storage_$dyn_storage_ptr","typeString":"struct PermissionLib.MultiTargetPermission[]"}},"visibility":"internal"}],"src":"2224:58:54"},"scope":12072,"src":"2103:299:54","stateMutability":"pure","virtual":false,"visibility":"external"}],"scope":12432,"src":"816:1588:54","usedErrors":[11651,14398]},{"abstract":false,"baseContracts":[{"baseName":{"id":12074,"name":"PluginUpgradeableSetup","nameLocations":["2614:22:54"],"nodeType":"IdentifierPath","referencedDeclaration":14448,"src":"2614:22:54"},"id":12075,"nodeType":"InheritanceSpecifier","src":"2614:22:54"}],"canonicalName":"PluginUUPSUpgradeableSetupMockBuild2","contractDependencies":[5389,11837],"contractKind":"contract","documentation":{"id":12073,"nodeType":"StructuredDocumentation","src":"2406:159:54","text":"@notice A mock plugin setup of an upgradeable plugin to be deployed via the UUPS pattern.\n v1.2 (Release 1, Build 2)\n @dev DO NOT USE IN PRODUCTION!"},"fullyImplemented":true,"id":12234,"linearizedBaseContracts":[12234,14448,14766,14744,14273,9731,9743],"name":"PluginUUPSUpgradeableSetupMockBuild2","nameLocation":"2574:36:54","nodeType":"ContractDefinition","nodes":[{"global":false,"id":12078,"libraryName":{"id":12076,"name":"ProxyLib","nameLocations":["2649:8:54"],"nodeType":"IdentifierPath","referencedDeclaration":14593,"src":"2649:8:54"},"nodeType":"UsingForDirective","src":"2643:27:54","typeName":{"id":12077,"name":"address","nodeType":"ElementaryTypeName","src":"2662:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},{"constant":true,"id":12081,"mutability":"constant","name":"THIS_BUILD","nameLocation":"2701:10:54","nodeType":"VariableDeclaration","scope":12234,"src":"2676:39:54","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":12079,"name":"uint16","nodeType":"ElementaryTypeName","src":"2676:6:54","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"value":{"hexValue":"32","id":12080,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2714:1:54","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"visibility":"internal"},{"body":{"id":12093,"nodeType":"Block","src":"2807:2:54","statements":[]},"id":12094,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":12088,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"NewExpression","src":"2767:35:54","typeDescriptions":{"typeIdentifier":"t_function_creation_nonpayable$__$returns$_t_contract$_PluginUUPSUpgradeableMockBuild2_$11837_$","typeString":"function () returns (contract PluginUUPSUpgradeableMockBuild2)"},"typeName":{"id":12087,"nodeType":"UserDefinedTypeName","pathNode":{"id":12086,"name":"PluginUUPSUpgradeableMockBuild2","nameLocations":["2771:31:54"],"nodeType":"IdentifierPath","referencedDeclaration":11837,"src":"2771:31:54"},"referencedDeclaration":11837,"src":"2771:31:54","typeDescriptions":{"typeIdentifier":"t_contract$_PluginUUPSUpgradeableMockBuild2_$11837","typeString":"contract PluginUUPSUpgradeableMockBuild2"}}},"id":12089,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2767:37:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_PluginUUPSUpgradeableMockBuild2_$11837","typeString":"contract PluginUUPSUpgradeableMockBuild2"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_PluginUUPSUpgradeableMockBuild2_$11837","typeString":"contract PluginUUPSUpgradeableMockBuild2"}],"id":12085,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2759:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12084,"name":"address","nodeType":"ElementaryTypeName","src":"2759:7:54","typeDescriptions":{}}},"id":12090,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2759:46:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":12091,"kind":"baseConstructorSpecifier","modifierName":{"id":12083,"name":"PluginUpgradeableSetup","nameLocations":["2736:22:54"],"nodeType":"IdentifierPath","referencedDeclaration":14448,"src":"2736:22:54"},"nodeType":"ModifierInvocation","src":"2736:70:54"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":12082,"nodeType":"ParameterList","parameters":[],"src":"2733:2:54"},"returnParameters":{"id":12092,"nodeType":"ParameterList","parameters":[],"src":"2807:0:54"},"scope":12234,"src":"2722:87:54","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[14237],"body":{"id":12147,"nodeType":"Block","src":"3005:418:54","statements":[{"assignments":[12108],"declarations":[{"constant":false,"id":12108,"mutability":"mutable","name":"initData","nameLocation":"3028:8:54","nodeType":"VariableDeclaration","scope":12147,"src":"3015:21:54","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":12107,"name":"bytes","nodeType":"ElementaryTypeName","src":"3015:5:54","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":12118,"initialValue":{"arguments":[{"expression":{"id":12111,"name":"PluginUUPSUpgradeableMockBuild2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11837,"src":"3067:31:54","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PluginUUPSUpgradeableMockBuild2_$11837_$","typeString":"type(contract PluginUUPSUpgradeableMockBuild2)"}},"id":12112,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3099:10:54","memberName":"initialize","nodeType":"MemberAccess","referencedDeclaration":11818,"src":"3067:42:54","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_contract$_IDAO_$10865_$returns$__$","typeString":"function PluginUUPSUpgradeableMockBuild2.initialize(contract IDAO)"}},{"components":[{"arguments":[{"id":12114,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12097,"src":"3129:4:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":12113,"name":"IDAO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10865,"src":"3124:4:54","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IDAO_$10865_$","typeString":"type(contract IDAO)"}},"id":12115,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3124:10:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}}],"id":12116,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3123:12:54","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_nonpayable$_t_contract$_IDAO_$10865_$returns$__$","typeString":"function PluginUUPSUpgradeableMockBuild2.initialize(contract IDAO)"},{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}],"expression":{"id":12109,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967295,"src":"3039:3:54","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":12110,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3043:10:54","memberName":"encodeCall","nodeType":"MemberAccess","src":"3039:14:54","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":12117,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3039:106:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"3015:130:54"},{"expression":{"id":12125,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12119,"name":"plugin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12102,"src":"3155:6:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":12123,"name":"initData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12108,"src":"3197:8:54","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12120,"name":"implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14447,"src":"3164:14:54","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":12121,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3164:16:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":12122,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3181:15:54","memberName":"deployUUPSProxy","nodeType":"MemberAccess","referencedDeclaration":14563,"src":"3164:32:54","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_address_$bound_to$_t_address_$","typeString":"function (address,bytes memory) returns (address)"}},"id":12124,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3164:42:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3155:51:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":12126,"nodeType":"ExpressionStatement","src":"3155:51:54"},{"expression":{"id":12133,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":12127,"name":"preparedSetupData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12105,"src":"3216:17:54","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$14216_memory_ptr","typeString":"struct IPluginSetup.PreparedSetupData memory"}},"id":12129,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"3234:7:54","memberName":"helpers","nodeType":"MemberAccess","referencedDeclaration":14211,"src":"3216:25:54","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":12131,"name":"THIS_BUILD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12081,"src":"3256:10:54","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"}],"id":12130,"name":"mockHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11760,"src":"3244:11:54","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$returns$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"function (uint160) pure returns (address[] memory)"}},"id":12132,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3244:23:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"src":"3216:51:54","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":12134,"nodeType":"ExpressionStatement","src":"3216:51:54"},{"expression":{"id":12145,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":12135,"name":"preparedSetupData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12105,"src":"3277:17:54","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$14216_memory_ptr","typeString":"struct IPluginSetup.PreparedSetupData memory"}},"id":12137,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"3295:11:54","memberName":"permissions","nodeType":"MemberAccess","referencedDeclaration":14215,"src":"3277:29:54","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"hexValue":"30","id":12139,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3338:1:54","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":12140,"name":"THIS_BUILD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12081,"src":"3353:10:54","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"expression":{"expression":{"id":12141,"name":"PermissionLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13038,"src":"3377:13:54","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PermissionLib_$13038_$","typeString":"type(library PermissionLib)"}},"id":12142,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3391:9:54","memberName":"Operation","nodeType":"MemberAccess","referencedDeclaration":13017,"src":"3377:23:54","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Operation_$13017_$","typeString":"type(enum PermissionLib.Operation)"}},"id":12143,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3401:5:54","memberName":"Grant","nodeType":"MemberAccess","referencedDeclaration":13014,"src":"3377:29:54","typeDescriptions":{"typeIdentifier":"t_enum$_Operation_$13017","typeString":"enum PermissionLib.Operation"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_enum$_Operation_$13017","typeString":"enum PermissionLib.Operation"}],"id":12138,"name":"mockPermissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11721,"src":"3309:15:54","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_enum$_Operation_$13017_$returns$_t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint160,uint160,enum PermissionLib.Operation) pure returns (struct PermissionLib.MultiTargetPermission memory[] memory)"}},"id":12144,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3309:107:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"src":"3277:139:54","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"id":12146,"nodeType":"ExpressionStatement","src":"3277:139:54"}]},"documentation":{"id":12095,"nodeType":"StructuredDocumentation","src":"2815:28:54","text":"@inheritdoc IPluginSetup"},"functionSelector":"f10832f1","id":12148,"implemented":true,"kind":"function","modifiers":[],"name":"prepareInstallation","nameLocation":"2857:19:54","nodeType":"FunctionDefinition","parameters":{"id":12100,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12097,"mutability":"mutable","name":"_dao","nameLocation":"2894:4:54","nodeType":"VariableDeclaration","scope":12148,"src":"2886:12:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12096,"name":"address","nodeType":"ElementaryTypeName","src":"2886:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12099,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12148,"src":"2908:12:54","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":12098,"name":"bytes","nodeType":"ElementaryTypeName","src":"2908:5:54","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2876:50:54"},"returnParameters":{"id":12106,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12102,"mutability":"mutable","name":"plugin","nameLocation":"2953:6:54","nodeType":"VariableDeclaration","scope":12148,"src":"2945:14:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12101,"name":"address","nodeType":"ElementaryTypeName","src":"2945:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12105,"mutability":"mutable","name":"preparedSetupData","nameLocation":"2986:17:54","nodeType":"VariableDeclaration","scope":12148,"src":"2961:42:54","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$14216_memory_ptr","typeString":"struct IPluginSetup.PreparedSetupData"},"typeName":{"id":12104,"nodeType":"UserDefinedTypeName","pathNode":{"id":12103,"name":"PreparedSetupData","nameLocations":["2961:17:54"],"nodeType":"IdentifierPath","referencedDeclaration":14216,"src":"2961:17:54"},"referencedDeclaration":14216,"src":"2961:17:54","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$14216_storage_ptr","typeString":"struct IPluginSetup.PreparedSetupData"}},"visibility":"internal"}],"src":"2944:60:54"},"scope":12234,"src":"2848:575:54","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[14253],"body":{"id":12204,"nodeType":"Block","src":"3715:450:54","statements":[{"expression":{"components":[{"id":12165,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12151,"src":"3726:4:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12166,"name":"_payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12156,"src":"3732:8:54","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$14224_calldata_ptr","typeString":"struct IPluginSetup.SetupPayload calldata"}}],"id":12167,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3725:16:54","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_struct$_SetupPayload_$14224_calldata_ptr_$","typeString":"tuple(address,struct IPluginSetup.SetupPayload calldata)"}},"id":12168,"nodeType":"ExpressionStatement","src":"3725:16:54"},{"condition":{"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"id":12171,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12169,"name":"_fromBuild","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12153,"src":"3787:10:54","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":12170,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3801:1:54","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3787:15:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12203,"nodeType":"IfStatement","src":"3783:376:54","trueBody":{"id":12202,"nodeType":"Block","src":"3804:355:54","statements":[{"expression":{"id":12178,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":12172,"name":"preparedSetupData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12163,"src":"3818:17:54","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$14216_memory_ptr","typeString":"struct IPluginSetup.PreparedSetupData memory"}},"id":12174,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"3836:7:54","memberName":"helpers","nodeType":"MemberAccess","referencedDeclaration":14211,"src":"3818:25:54","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":12176,"name":"THIS_BUILD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12081,"src":"3858:10:54","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"}],"id":12175,"name":"mockHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11760,"src":"3846:11:54","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$returns$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"function (uint160) pure returns (address[] memory)"}},"id":12177,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3846:23:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"src":"3818:51:54","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":12179,"nodeType":"ExpressionStatement","src":"3818:51:54"},{"expression":{"id":12188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12180,"name":"initData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12160,"src":"3883:8:54","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":12183,"name":"PluginUUPSUpgradeableMockBuild2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11837,"src":"3909:31:54","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PluginUUPSUpgradeableMockBuild2_$11837_$","typeString":"type(contract PluginUUPSUpgradeableMockBuild2)"}},"id":12184,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3941:14:54","memberName":"initializeFrom","nodeType":"MemberAccess","referencedDeclaration":11836,"src":"3909:46:54","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_uint16_$returns$__$","typeString":"function PluginUUPSUpgradeableMockBuild2.initializeFrom(uint16)"}},{"components":[{"id":12185,"name":"_fromBuild","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12153,"src":"3958:10:54","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"id":12186,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3957:12:54","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_nonpayable$_t_uint16_$returns$__$","typeString":"function PluginUUPSUpgradeableMockBuild2.initializeFrom(uint16)"},{"typeIdentifier":"t_uint16","typeString":"uint16"}],"expression":{"id":12181,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967295,"src":"3894:3:54","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":12182,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3898:10:54","memberName":"encodeCall","nodeType":"MemberAccess","src":"3894:14:54","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":12187,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3894:76:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"3883:87:54","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":12189,"nodeType":"ExpressionStatement","src":"3883:87:54"},{"expression":{"id":12200,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":12190,"name":"preparedSetupData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12163,"src":"3984:17:54","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$14216_memory_ptr","typeString":"struct IPluginSetup.PreparedSetupData memory"}},"id":12192,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4002:11:54","memberName":"permissions","nodeType":"MemberAccess","referencedDeclaration":14215,"src":"3984:29:54","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":12194,"name":"_fromBuild","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12153,"src":"4049:10:54","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"id":12195,"name":"THIS_BUILD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12081,"src":"4077:10:54","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"expression":{"expression":{"id":12196,"name":"PermissionLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13038,"src":"4105:13:54","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PermissionLib_$13038_$","typeString":"type(library PermissionLib)"}},"id":12197,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4119:9:54","memberName":"Operation","nodeType":"MemberAccess","referencedDeclaration":13017,"src":"4105:23:54","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Operation_$13017_$","typeString":"type(enum PermissionLib.Operation)"}},"id":12198,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4129:5:54","memberName":"Grant","nodeType":"MemberAccess","referencedDeclaration":13014,"src":"4105:29:54","typeDescriptions":{"typeIdentifier":"t_enum$_Operation_$13017","typeString":"enum PermissionLib.Operation"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_enum$_Operation_$13017","typeString":"enum PermissionLib.Operation"}],"id":12193,"name":"mockPermissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11721,"src":"4016:15:54","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_enum$_Operation_$13017_$returns$_t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint160,uint160,enum PermissionLib.Operation) pure returns (struct PermissionLib.MultiTargetPermission memory[] memory)"}},"id":12199,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4016:132:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"src":"3984:164:54","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"id":12201,"nodeType":"ExpressionStatement","src":"3984:164:54"}]}}]},"documentation":{"id":12149,"nodeType":"StructuredDocumentation","src":"3429:28:54","text":"@inheritdoc IPluginSetup"},"functionSelector":"a8a9c29e","id":12205,"implemented":true,"kind":"function","modifiers":[],"name":"prepareUpdate","nameLocation":"3471:13:54","nodeType":"FunctionDefinition","overrides":{"id":12158,"nodeType":"OverrideSpecifier","overrides":[],"src":"3618:8:54"},"parameters":{"id":12157,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12151,"mutability":"mutable","name":"_dao","nameLocation":"3502:4:54","nodeType":"VariableDeclaration","scope":12205,"src":"3494:12:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12150,"name":"address","nodeType":"ElementaryTypeName","src":"3494:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12153,"mutability":"mutable","name":"_fromBuild","nameLocation":"3523:10:54","nodeType":"VariableDeclaration","scope":12205,"src":"3516:17:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":12152,"name":"uint16","nodeType":"ElementaryTypeName","src":"3516:6:54","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":12156,"mutability":"mutable","name":"_payload","nameLocation":"3565:8:54","nodeType":"VariableDeclaration","scope":12205,"src":"3543:30:54","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$14224_calldata_ptr","typeString":"struct IPluginSetup.SetupPayload"},"typeName":{"id":12155,"nodeType":"UserDefinedTypeName","pathNode":{"id":12154,"name":"SetupPayload","nameLocations":["3543:12:54"],"nodeType":"IdentifierPath","referencedDeclaration":14224,"src":"3543:12:54"},"referencedDeclaration":14224,"src":"3543:12:54","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$14224_storage_ptr","typeString":"struct IPluginSetup.SetupPayload"}},"visibility":"internal"}],"src":"3484:95:54"},"returnParameters":{"id":12164,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12160,"mutability":"mutable","name":"initData","nameLocation":"3657:8:54","nodeType":"VariableDeclaration","scope":12205,"src":"3644:21:54","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":12159,"name":"bytes","nodeType":"ElementaryTypeName","src":"3644:5:54","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":12163,"mutability":"mutable","name":"preparedSetupData","nameLocation":"3692:17:54","nodeType":"VariableDeclaration","scope":12205,"src":"3667:42:54","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$14216_memory_ptr","typeString":"struct IPluginSetup.PreparedSetupData"},"typeName":{"id":12162,"nodeType":"UserDefinedTypeName","pathNode":{"id":12161,"name":"PreparedSetupData","nameLocations":["3667:17:54"],"nodeType":"IdentifierPath","referencedDeclaration":14216,"src":"3667:17:54"},"referencedDeclaration":14216,"src":"3667:17:54","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$14216_storage_ptr","typeString":"struct IPluginSetup.PreparedSetupData"}},"visibility":"internal"}],"src":"3643:67:54"},"scope":12234,"src":"3462:703:54","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[14266],"body":{"id":12232,"nodeType":"Block","src":"4384:119:54","statements":[{"expression":{"components":[{"id":12218,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12208,"src":"4395:4:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12219,"name":"_payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12211,"src":"4401:8:54","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$14224_calldata_ptr","typeString":"struct IPluginSetup.SetupPayload calldata"}}],"id":12220,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4394:16:54","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_struct$_SetupPayload_$14224_calldata_ptr_$","typeString":"tuple(address,struct IPluginSetup.SetupPayload calldata)"}},"id":12221,"nodeType":"ExpressionStatement","src":"4394:16:54"},{"expression":{"id":12230,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12222,"name":"permissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12216,"src":"4420:11:54","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"hexValue":"30","id":12224,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4450:1:54","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":12225,"name":"THIS_BUILD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12081,"src":"4453:10:54","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"expression":{"expression":{"id":12226,"name":"PermissionLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13038,"src":"4465:13:54","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PermissionLib_$13038_$","typeString":"type(library PermissionLib)"}},"id":12227,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4479:9:54","memberName":"Operation","nodeType":"MemberAccess","referencedDeclaration":13017,"src":"4465:23:54","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Operation_$13017_$","typeString":"type(enum PermissionLib.Operation)"}},"id":12228,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4489:6:54","memberName":"Revoke","nodeType":"MemberAccess","referencedDeclaration":13015,"src":"4465:30:54","typeDescriptions":{"typeIdentifier":"t_enum$_Operation_$13017","typeString":"enum PermissionLib.Operation"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_enum$_Operation_$13017","typeString":"enum PermissionLib.Operation"}],"id":12223,"name":"mockPermissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11721,"src":"4434:15:54","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_enum$_Operation_$13017_$returns$_t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint160,uint160,enum PermissionLib.Operation) pure returns (struct PermissionLib.MultiTargetPermission memory[] memory)"}},"id":12229,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4434:62:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"src":"4420:76:54","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"id":12231,"nodeType":"ExpressionStatement","src":"4420:76:54"}]},"documentation":{"id":12206,"nodeType":"StructuredDocumentation","src":"4171:28:54","text":"@inheritdoc IPluginSetup"},"functionSelector":"9cb0a124","id":12233,"implemented":true,"kind":"function","modifiers":[],"name":"prepareUninstallation","nameLocation":"4213:21:54","nodeType":"FunctionDefinition","parameters":{"id":12212,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12208,"mutability":"mutable","name":"_dao","nameLocation":"4252:4:54","nodeType":"VariableDeclaration","scope":12233,"src":"4244:12:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12207,"name":"address","nodeType":"ElementaryTypeName","src":"4244:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12211,"mutability":"mutable","name":"_payload","nameLocation":"4288:8:54","nodeType":"VariableDeclaration","scope":12233,"src":"4266:30:54","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$14224_calldata_ptr","typeString":"struct IPluginSetup.SetupPayload"},"typeName":{"id":12210,"nodeType":"UserDefinedTypeName","pathNode":{"id":12209,"name":"SetupPayload","nameLocations":["4266:12:54"],"nodeType":"IdentifierPath","referencedDeclaration":14224,"src":"4266:12:54"},"referencedDeclaration":14224,"src":"4266:12:54","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$14224_storage_ptr","typeString":"struct IPluginSetup.SetupPayload"}},"visibility":"internal"}],"src":"4234:68:54"},"returnParameters":{"id":12217,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12216,"mutability":"mutable","name":"permissions","nameLocation":"4371:11:54","nodeType":"VariableDeclaration","scope":12233,"src":"4326:56:54","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission[]"},"typeName":{"baseType":{"id":12214,"nodeType":"UserDefinedTypeName","pathNode":{"id":12213,"name":"PermissionLib.MultiTargetPermission","nameLocations":["4326:13:54","4340:21:54"],"nodeType":"IdentifierPath","referencedDeclaration":13037,"src":"4326:35:54"},"referencedDeclaration":13037,"src":"4326:35:54","typeDescriptions":{"typeIdentifier":"t_struct$_MultiTargetPermission_$13037_storage_ptr","typeString":"struct PermissionLib.MultiTargetPermission"}},"id":12215,"nodeType":"ArrayTypeName","src":"4326:37:54","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_storage_$dyn_storage_ptr","typeString":"struct PermissionLib.MultiTargetPermission[]"}},"visibility":"internal"}],"src":"4325:58:54"},"scope":12234,"src":"4204:299:54","stateMutability":"pure","virtual":false,"visibility":"external"}],"scope":12432,"src":"2565:1940:54","usedErrors":[11651,14398]},{"abstract":false,"baseContracts":[{"baseName":{"id":12236,"name":"PluginUpgradeableSetup","nameLocations":["4680:22:54"],"nodeType":"IdentifierPath","referencedDeclaration":14448,"src":"4680:22:54"},"id":12237,"nodeType":"InheritanceSpecifier","src":"4680:22:54"}],"canonicalName":"PluginUUPSUpgradeableSetupMockBuild3","contractDependencies":[5389,11900],"contractKind":"contract","documentation":{"id":12235,"nodeType":"StructuredDocumentation","src":"4507:124:54","text":"@notice A mock plugin setup of an upgradeable plugin to be deployed via the UUPS pattern.\n v1.3 (Release 1, Build 3)"},"fullyImplemented":true,"id":12431,"linearizedBaseContracts":[12431,14448,14766,14744,14273,9731,9743],"name":"PluginUUPSUpgradeableSetupMockBuild3","nameLocation":"4640:36:54","nodeType":"ContractDefinition","nodes":[{"global":false,"id":12240,"libraryName":{"id":12238,"name":"ProxyLib","nameLocations":["4715:8:54"],"nodeType":"IdentifierPath","referencedDeclaration":14593,"src":"4715:8:54"},"nodeType":"UsingForDirective","src":"4709:27:54","typeName":{"id":12239,"name":"address","nodeType":"ElementaryTypeName","src":"4728:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},{"constant":true,"id":12243,"mutability":"constant","name":"THIS_BUILD","nameLocation":"4767:10:54","nodeType":"VariableDeclaration","scope":12431,"src":"4742:39:54","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":12241,"name":"uint16","nodeType":"ElementaryTypeName","src":"4742:6:54","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"value":{"hexValue":"33","id":12242,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4780:1:54","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"visibility":"internal"},{"body":{"id":12255,"nodeType":"Block","src":"4873:2:54","statements":[]},"id":12256,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":12250,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"NewExpression","src":"4833:35:54","typeDescriptions":{"typeIdentifier":"t_function_creation_nonpayable$__$returns$_t_contract$_PluginUUPSUpgradeableMockBuild3_$11900_$","typeString":"function () returns (contract PluginUUPSUpgradeableMockBuild3)"},"typeName":{"id":12249,"nodeType":"UserDefinedTypeName","pathNode":{"id":12248,"name":"PluginUUPSUpgradeableMockBuild3","nameLocations":["4837:31:54"],"nodeType":"IdentifierPath","referencedDeclaration":11900,"src":"4837:31:54"},"referencedDeclaration":11900,"src":"4837:31:54","typeDescriptions":{"typeIdentifier":"t_contract$_PluginUUPSUpgradeableMockBuild3_$11900","typeString":"contract PluginUUPSUpgradeableMockBuild3"}}},"id":12251,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4833:37:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_PluginUUPSUpgradeableMockBuild3_$11900","typeString":"contract PluginUUPSUpgradeableMockBuild3"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_PluginUUPSUpgradeableMockBuild3_$11900","typeString":"contract PluginUUPSUpgradeableMockBuild3"}],"id":12247,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4825:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12246,"name":"address","nodeType":"ElementaryTypeName","src":"4825:7:54","typeDescriptions":{}}},"id":12252,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4825:46:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":12253,"kind":"baseConstructorSpecifier","modifierName":{"id":12245,"name":"PluginUpgradeableSetup","nameLocations":["4802:22:54"],"nodeType":"IdentifierPath","referencedDeclaration":14448,"src":"4802:22:54"},"nodeType":"ModifierInvocation","src":"4802:70:54"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":12244,"nodeType":"ParameterList","parameters":[],"src":"4799:2:54"},"returnParameters":{"id":12254,"nodeType":"ParameterList","parameters":[],"src":"4873:0:54"},"scope":12431,"src":"4788:87:54","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[14237],"body":{"id":12309,"nodeType":"Block","src":"5071:418:54","statements":[{"assignments":[12270],"declarations":[{"constant":false,"id":12270,"mutability":"mutable","name":"initData","nameLocation":"5094:8:54","nodeType":"VariableDeclaration","scope":12309,"src":"5081:21:54","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":12269,"name":"bytes","nodeType":"ElementaryTypeName","src":"5081:5:54","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":12280,"initialValue":{"arguments":[{"expression":{"id":12273,"name":"PluginUUPSUpgradeableMockBuild3","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11900,"src":"5133:31:54","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PluginUUPSUpgradeableMockBuild3_$11900_$","typeString":"type(contract PluginUUPSUpgradeableMockBuild3)"}},"id":12274,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5165:10:54","memberName":"initialize","nodeType":"MemberAccess","referencedDeclaration":11872,"src":"5133:42:54","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_contract$_IDAO_$10865_$returns$__$","typeString":"function PluginUUPSUpgradeableMockBuild3.initialize(contract IDAO)"}},{"components":[{"arguments":[{"id":12276,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12259,"src":"5195:4:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":12275,"name":"IDAO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10865,"src":"5190:4:54","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IDAO_$10865_$","typeString":"type(contract IDAO)"}},"id":12277,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5190:10:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}}],"id":12278,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5189:12:54","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_nonpayable$_t_contract$_IDAO_$10865_$returns$__$","typeString":"function PluginUUPSUpgradeableMockBuild3.initialize(contract IDAO)"},{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}],"expression":{"id":12271,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967295,"src":"5105:3:54","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":12272,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5109:10:54","memberName":"encodeCall","nodeType":"MemberAccess","src":"5105:14:54","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":12279,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5105:106:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"5081:130:54"},{"expression":{"id":12287,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12281,"name":"plugin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12264,"src":"5221:6:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":12285,"name":"initData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12270,"src":"5263:8:54","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12282,"name":"implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14447,"src":"5230:14:54","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":12283,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5230:16:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":12284,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5247:15:54","memberName":"deployUUPSProxy","nodeType":"MemberAccess","referencedDeclaration":14563,"src":"5230:32:54","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_address_$bound_to$_t_address_$","typeString":"function (address,bytes memory) returns (address)"}},"id":12286,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5230:42:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5221:51:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":12288,"nodeType":"ExpressionStatement","src":"5221:51:54"},{"expression":{"id":12295,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":12289,"name":"preparedSetupData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12267,"src":"5282:17:54","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$14216_memory_ptr","typeString":"struct IPluginSetup.PreparedSetupData memory"}},"id":12291,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5300:7:54","memberName":"helpers","nodeType":"MemberAccess","referencedDeclaration":14211,"src":"5282:25:54","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":12293,"name":"THIS_BUILD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12243,"src":"5322:10:54","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"}],"id":12292,"name":"mockHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11760,"src":"5310:11:54","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$returns$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"function (uint160) pure returns (address[] memory)"}},"id":12294,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5310:23:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"src":"5282:51:54","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":12296,"nodeType":"ExpressionStatement","src":"5282:51:54"},{"expression":{"id":12307,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":12297,"name":"preparedSetupData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12267,"src":"5343:17:54","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$14216_memory_ptr","typeString":"struct IPluginSetup.PreparedSetupData memory"}},"id":12299,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5361:11:54","memberName":"permissions","nodeType":"MemberAccess","referencedDeclaration":14215,"src":"5343:29:54","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"hexValue":"30","id":12301,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5404:1:54","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":12302,"name":"THIS_BUILD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12243,"src":"5419:10:54","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"expression":{"expression":{"id":12303,"name":"PermissionLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13038,"src":"5443:13:54","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PermissionLib_$13038_$","typeString":"type(library PermissionLib)"}},"id":12304,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5457:9:54","memberName":"Operation","nodeType":"MemberAccess","referencedDeclaration":13017,"src":"5443:23:54","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Operation_$13017_$","typeString":"type(enum PermissionLib.Operation)"}},"id":12305,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5467:5:54","memberName":"Grant","nodeType":"MemberAccess","referencedDeclaration":13014,"src":"5443:29:54","typeDescriptions":{"typeIdentifier":"t_enum$_Operation_$13017","typeString":"enum PermissionLib.Operation"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_enum$_Operation_$13017","typeString":"enum PermissionLib.Operation"}],"id":12300,"name":"mockPermissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11721,"src":"5375:15:54","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_enum$_Operation_$13017_$returns$_t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint160,uint160,enum PermissionLib.Operation) pure returns (struct PermissionLib.MultiTargetPermission memory[] memory)"}},"id":12306,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5375:107:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"src":"5343:139:54","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"id":12308,"nodeType":"ExpressionStatement","src":"5343:139:54"}]},"documentation":{"id":12257,"nodeType":"StructuredDocumentation","src":"4881:28:54","text":"@inheritdoc IPluginSetup"},"functionSelector":"f10832f1","id":12310,"implemented":true,"kind":"function","modifiers":[],"name":"prepareInstallation","nameLocation":"4923:19:54","nodeType":"FunctionDefinition","parameters":{"id":12262,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12259,"mutability":"mutable","name":"_dao","nameLocation":"4960:4:54","nodeType":"VariableDeclaration","scope":12310,"src":"4952:12:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12258,"name":"address","nodeType":"ElementaryTypeName","src":"4952:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12261,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12310,"src":"4974:12:54","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":12260,"name":"bytes","nodeType":"ElementaryTypeName","src":"4974:5:54","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4942:50:54"},"returnParameters":{"id":12268,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12264,"mutability":"mutable","name":"plugin","nameLocation":"5019:6:54","nodeType":"VariableDeclaration","scope":12310,"src":"5011:14:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12263,"name":"address","nodeType":"ElementaryTypeName","src":"5011:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12267,"mutability":"mutable","name":"preparedSetupData","nameLocation":"5052:17:54","nodeType":"VariableDeclaration","scope":12310,"src":"5027:42:54","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$14216_memory_ptr","typeString":"struct IPluginSetup.PreparedSetupData"},"typeName":{"id":12266,"nodeType":"UserDefinedTypeName","pathNode":{"id":12265,"name":"PreparedSetupData","nameLocations":["5027:17:54"],"nodeType":"IdentifierPath","referencedDeclaration":14216,"src":"5027:17:54"},"referencedDeclaration":14216,"src":"5027:17:54","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$14216_storage_ptr","typeString":"struct IPluginSetup.PreparedSetupData"}},"visibility":"internal"}],"src":"5010:60:54"},"scope":12431,"src":"4914:575:54","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[14253],"body":{"id":12401,"nodeType":"Block","src":"5781:1053:54","statements":[{"expression":{"components":[{"id":12327,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12313,"src":"5792:4:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12328,"name":"_payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12318,"src":"5798:8:54","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$14224_calldata_ptr","typeString":"struct IPluginSetup.SetupPayload calldata"}}],"id":12329,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5791:16:54","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_struct$_SetupPayload_$14224_calldata_ptr_$","typeString":"tuple(address,struct IPluginSetup.SetupPayload calldata)"}},"id":12330,"nodeType":"ExpressionStatement","src":"5791:16:54"},{"condition":{"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"id":12333,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12331,"name":"_fromBuild","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12315,"src":"5853:10:54","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":12332,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5867:1:54","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"5853:15:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12365,"nodeType":"IfStatement","src":"5849:562:54","trueBody":{"id":12364,"nodeType":"Block","src":"5870:541:54","statements":[{"expression":{"id":12340,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":12334,"name":"preparedSetupData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12325,"src":"5884:17:54","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$14216_memory_ptr","typeString":"struct IPluginSetup.PreparedSetupData memory"}},"id":12336,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5902:7:54","memberName":"helpers","nodeType":"MemberAccess","referencedDeclaration":14211,"src":"5884:25:54","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":12338,"name":"THIS_BUILD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12243,"src":"5924:10:54","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"}],"id":12337,"name":"mockHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11760,"src":"5912:11:54","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$returns$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"function (uint160) pure returns (address[] memory)"}},"id":12339,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5912:23:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"src":"5884:51:54","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":12341,"nodeType":"ExpressionStatement","src":"5884:51:54"},{"expression":{"id":12350,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12342,"name":"initData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12322,"src":"5949:8:54","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":12345,"name":"PluginUUPSUpgradeableMockBuild3","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11900,"src":"5975:31:54","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PluginUUPSUpgradeableMockBuild3_$11900_$","typeString":"type(contract PluginUUPSUpgradeableMockBuild3)"}},"id":12346,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6007:14:54","memberName":"initializeFrom","nodeType":"MemberAccess","referencedDeclaration":11899,"src":"5975:46:54","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_uint16_$returns$__$","typeString":"function PluginUUPSUpgradeableMockBuild3.initializeFrom(uint16)"}},{"components":[{"id":12347,"name":"_fromBuild","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12315,"src":"6024:10:54","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"id":12348,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6023:12:54","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_nonpayable$_t_uint16_$returns$__$","typeString":"function PluginUUPSUpgradeableMockBuild3.initializeFrom(uint16)"},{"typeIdentifier":"t_uint16","typeString":"uint16"}],"expression":{"id":12343,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967295,"src":"5960:3:54","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":12344,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5964:10:54","memberName":"encodeCall","nodeType":"MemberAccess","src":"5960:14:54","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":12349,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5960:76:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"5949:87:54","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":12351,"nodeType":"ExpressionStatement","src":"5949:87:54"},{"expression":{"id":12362,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":12352,"name":"preparedSetupData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12325,"src":"6050:17:54","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$14216_memory_ptr","typeString":"struct IPluginSetup.PreparedSetupData memory"}},"id":12354,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"6068:11:54","memberName":"permissions","nodeType":"MemberAccess","referencedDeclaration":14215,"src":"6050:29:54","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":12356,"name":"_fromBuild","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12315,"src":"6115:10:54","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"id":12357,"name":"THIS_BUILD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12243,"src":"6143:10:54","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"expression":{"expression":{"id":12358,"name":"PermissionLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13038,"src":"6171:13:54","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PermissionLib_$13038_$","typeString":"type(library PermissionLib)"}},"id":12359,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6185:9:54","memberName":"Operation","nodeType":"MemberAccess","referencedDeclaration":13017,"src":"6171:23:54","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Operation_$13017_$","typeString":"type(enum PermissionLib.Operation)"}},"id":12360,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6195:5:54","memberName":"Grant","nodeType":"MemberAccess","referencedDeclaration":13014,"src":"6171:29:54","typeDescriptions":{"typeIdentifier":"t_enum$_Operation_$13017","typeString":"enum PermissionLib.Operation"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_enum$_Operation_$13017","typeString":"enum PermissionLib.Operation"}],"id":12355,"name":"mockPermissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11721,"src":"6082:15:54","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_enum$_Operation_$13017_$returns$_t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint160,uint160,enum PermissionLib.Operation) pure returns (struct PermissionLib.MultiTargetPermission memory[] memory)"}},"id":12361,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6082:132:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"src":"6050:164:54","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"id":12363,"nodeType":"ExpressionStatement","src":"6050:164:54"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"id":12368,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12366,"name":"_fromBuild","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12315,"src":"6456:10:54","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"32","id":12367,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6470:1:54","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"6456:15:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12400,"nodeType":"IfStatement","src":"6452:376:54","trueBody":{"id":12399,"nodeType":"Block","src":"6473:355:54","statements":[{"expression":{"id":12375,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":12369,"name":"preparedSetupData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12325,"src":"6487:17:54","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$14216_memory_ptr","typeString":"struct IPluginSetup.PreparedSetupData memory"}},"id":12371,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"6505:7:54","memberName":"helpers","nodeType":"MemberAccess","referencedDeclaration":14211,"src":"6487:25:54","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":12373,"name":"THIS_BUILD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12243,"src":"6527:10:54","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"}],"id":12372,"name":"mockHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11760,"src":"6515:11:54","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$returns$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"function (uint160) pure returns (address[] memory)"}},"id":12374,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6515:23:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"src":"6487:51:54","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":12376,"nodeType":"ExpressionStatement","src":"6487:51:54"},{"expression":{"id":12385,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12377,"name":"initData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12322,"src":"6552:8:54","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":12380,"name":"PluginUUPSUpgradeableMockBuild3","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11900,"src":"6578:31:54","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PluginUUPSUpgradeableMockBuild3_$11900_$","typeString":"type(contract PluginUUPSUpgradeableMockBuild3)"}},"id":12381,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6610:14:54","memberName":"initializeFrom","nodeType":"MemberAccess","referencedDeclaration":11899,"src":"6578:46:54","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_uint16_$returns$__$","typeString":"function PluginUUPSUpgradeableMockBuild3.initializeFrom(uint16)"}},{"components":[{"id":12382,"name":"_fromBuild","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12315,"src":"6627:10:54","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"id":12383,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6626:12:54","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_nonpayable$_t_uint16_$returns$__$","typeString":"function PluginUUPSUpgradeableMockBuild3.initializeFrom(uint16)"},{"typeIdentifier":"t_uint16","typeString":"uint16"}],"expression":{"id":12378,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967295,"src":"6563:3:54","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":12379,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6567:10:54","memberName":"encodeCall","nodeType":"MemberAccess","src":"6563:14:54","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":12384,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6563:76:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"6552:87:54","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":12386,"nodeType":"ExpressionStatement","src":"6552:87:54"},{"expression":{"id":12397,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":12387,"name":"preparedSetupData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12325,"src":"6653:17:54","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$14216_memory_ptr","typeString":"struct IPluginSetup.PreparedSetupData memory"}},"id":12389,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"6671:11:54","memberName":"permissions","nodeType":"MemberAccess","referencedDeclaration":14215,"src":"6653:29:54","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":12391,"name":"_fromBuild","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12315,"src":"6718:10:54","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"id":12392,"name":"THIS_BUILD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12243,"src":"6746:10:54","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"expression":{"expression":{"id":12393,"name":"PermissionLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13038,"src":"6774:13:54","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PermissionLib_$13038_$","typeString":"type(library PermissionLib)"}},"id":12394,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6788:9:54","memberName":"Operation","nodeType":"MemberAccess","referencedDeclaration":13017,"src":"6774:23:54","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Operation_$13017_$","typeString":"type(enum PermissionLib.Operation)"}},"id":12395,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6798:5:54","memberName":"Grant","nodeType":"MemberAccess","referencedDeclaration":13014,"src":"6774:29:54","typeDescriptions":{"typeIdentifier":"t_enum$_Operation_$13017","typeString":"enum PermissionLib.Operation"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_enum$_Operation_$13017","typeString":"enum PermissionLib.Operation"}],"id":12390,"name":"mockPermissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11721,"src":"6685:15:54","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_enum$_Operation_$13017_$returns$_t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint160,uint160,enum PermissionLib.Operation) pure returns (struct PermissionLib.MultiTargetPermission memory[] memory)"}},"id":12396,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6685:132:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"src":"6653:164:54","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"id":12398,"nodeType":"ExpressionStatement","src":"6653:164:54"}]}}]},"documentation":{"id":12311,"nodeType":"StructuredDocumentation","src":"5495:28:54","text":"@inheritdoc IPluginSetup"},"functionSelector":"a8a9c29e","id":12402,"implemented":true,"kind":"function","modifiers":[],"name":"prepareUpdate","nameLocation":"5537:13:54","nodeType":"FunctionDefinition","overrides":{"id":12320,"nodeType":"OverrideSpecifier","overrides":[],"src":"5684:8:54"},"parameters":{"id":12319,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12313,"mutability":"mutable","name":"_dao","nameLocation":"5568:4:54","nodeType":"VariableDeclaration","scope":12402,"src":"5560:12:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12312,"name":"address","nodeType":"ElementaryTypeName","src":"5560:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12315,"mutability":"mutable","name":"_fromBuild","nameLocation":"5589:10:54","nodeType":"VariableDeclaration","scope":12402,"src":"5582:17:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":12314,"name":"uint16","nodeType":"ElementaryTypeName","src":"5582:6:54","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":12318,"mutability":"mutable","name":"_payload","nameLocation":"5631:8:54","nodeType":"VariableDeclaration","scope":12402,"src":"5609:30:54","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$14224_calldata_ptr","typeString":"struct IPluginSetup.SetupPayload"},"typeName":{"id":12317,"nodeType":"UserDefinedTypeName","pathNode":{"id":12316,"name":"SetupPayload","nameLocations":["5609:12:54"],"nodeType":"IdentifierPath","referencedDeclaration":14224,"src":"5609:12:54"},"referencedDeclaration":14224,"src":"5609:12:54","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$14224_storage_ptr","typeString":"struct IPluginSetup.SetupPayload"}},"visibility":"internal"}],"src":"5550:95:54"},"returnParameters":{"id":12326,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12322,"mutability":"mutable","name":"initData","nameLocation":"5723:8:54","nodeType":"VariableDeclaration","scope":12402,"src":"5710:21:54","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":12321,"name":"bytes","nodeType":"ElementaryTypeName","src":"5710:5:54","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":12325,"mutability":"mutable","name":"preparedSetupData","nameLocation":"5758:17:54","nodeType":"VariableDeclaration","scope":12402,"src":"5733:42:54","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$14216_memory_ptr","typeString":"struct IPluginSetup.PreparedSetupData"},"typeName":{"id":12324,"nodeType":"UserDefinedTypeName","pathNode":{"id":12323,"name":"PreparedSetupData","nameLocations":["5733:17:54"],"nodeType":"IdentifierPath","referencedDeclaration":14216,"src":"5733:17:54"},"referencedDeclaration":14216,"src":"5733:17:54","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$14216_storage_ptr","typeString":"struct IPluginSetup.PreparedSetupData"}},"visibility":"internal"}],"src":"5709:67:54"},"scope":12431,"src":"5528:1306:54","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[14266],"body":{"id":12429,"nodeType":"Block","src":"7053:119:54","statements":[{"expression":{"components":[{"id":12415,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12405,"src":"7064:4:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12416,"name":"_payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12408,"src":"7070:8:54","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$14224_calldata_ptr","typeString":"struct IPluginSetup.SetupPayload calldata"}}],"id":12417,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7063:16:54","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_struct$_SetupPayload_$14224_calldata_ptr_$","typeString":"tuple(address,struct IPluginSetup.SetupPayload calldata)"}},"id":12418,"nodeType":"ExpressionStatement","src":"7063:16:54"},{"expression":{"id":12427,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12419,"name":"permissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12413,"src":"7089:11:54","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"hexValue":"30","id":12421,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7119:1:54","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":12422,"name":"THIS_BUILD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12243,"src":"7122:10:54","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"expression":{"expression":{"id":12423,"name":"PermissionLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13038,"src":"7134:13:54","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PermissionLib_$13038_$","typeString":"type(library PermissionLib)"}},"id":12424,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7148:9:54","memberName":"Operation","nodeType":"MemberAccess","referencedDeclaration":13017,"src":"7134:23:54","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Operation_$13017_$","typeString":"type(enum PermissionLib.Operation)"}},"id":12425,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7158:6:54","memberName":"Revoke","nodeType":"MemberAccess","referencedDeclaration":13015,"src":"7134:30:54","typeDescriptions":{"typeIdentifier":"t_enum$_Operation_$13017","typeString":"enum PermissionLib.Operation"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_enum$_Operation_$13017","typeString":"enum PermissionLib.Operation"}],"id":12420,"name":"mockPermissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11721,"src":"7103:15:54","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_enum$_Operation_$13017_$returns$_t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint160,uint160,enum PermissionLib.Operation) pure returns (struct PermissionLib.MultiTargetPermission memory[] memory)"}},"id":12426,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7103:62:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"src":"7089:76:54","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"id":12428,"nodeType":"ExpressionStatement","src":"7089:76:54"}]},"documentation":{"id":12403,"nodeType":"StructuredDocumentation","src":"6840:28:54","text":"@inheritdoc IPluginSetup"},"functionSelector":"9cb0a124","id":12430,"implemented":true,"kind":"function","modifiers":[],"name":"prepareUninstallation","nameLocation":"6882:21:54","nodeType":"FunctionDefinition","parameters":{"id":12409,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12405,"mutability":"mutable","name":"_dao","nameLocation":"6921:4:54","nodeType":"VariableDeclaration","scope":12430,"src":"6913:12:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12404,"name":"address","nodeType":"ElementaryTypeName","src":"6913:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12408,"mutability":"mutable","name":"_payload","nameLocation":"6957:8:54","nodeType":"VariableDeclaration","scope":12430,"src":"6935:30:54","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$14224_calldata_ptr","typeString":"struct IPluginSetup.SetupPayload"},"typeName":{"id":12407,"nodeType":"UserDefinedTypeName","pathNode":{"id":12406,"name":"SetupPayload","nameLocations":["6935:12:54"],"nodeType":"IdentifierPath","referencedDeclaration":14224,"src":"6935:12:54"},"referencedDeclaration":14224,"src":"6935:12:54","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$14224_storage_ptr","typeString":"struct IPluginSetup.SetupPayload"}},"visibility":"internal"}],"src":"6903:68:54"},"returnParameters":{"id":12414,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12413,"mutability":"mutable","name":"permissions","nameLocation":"7040:11:54","nodeType":"VariableDeclaration","scope":12430,"src":"6995:56:54","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission[]"},"typeName":{"baseType":{"id":12411,"nodeType":"UserDefinedTypeName","pathNode":{"id":12410,"name":"PermissionLib.MultiTargetPermission","nameLocations":["6995:13:54","7009:21:54"],"nodeType":"IdentifierPath","referencedDeclaration":13037,"src":"6995:35:54"},"referencedDeclaration":13037,"src":"6995:35:54","typeDescriptions":{"typeIdentifier":"t_struct$_MultiTargetPermission_$13037_storage_ptr","typeString":"struct PermissionLib.MultiTargetPermission"}},"id":12412,"nodeType":"ArrayTypeName","src":"6995:37:54","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_storage_$dyn_storage_ptr","typeString":"struct PermissionLib.MultiTargetPermission[]"}},"visibility":"internal"}],"src":"6994:58:54"},"scope":12431,"src":"6873:299:54","stateMutability":"pure","virtual":false,"visibility":"external"}],"scope":12432,"src":"4631:2543:54","usedErrors":[11651,14398]}],"src":"91:7084:54"},"id":54},"src/mocks/plugin/extensions/governance/AddresslistMock.sol":{"ast":{"absolutePath":"src/mocks/plugin/extensions/governance/AddresslistMock.sol","exportedSymbols":{"Addresslist":[13831],"AddresslistMock":[12461]},"id":12462,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":12433,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:55"},{"absolutePath":"src/plugin/extensions/governance/Addresslist.sol","file":"../../../../plugin/extensions/governance/Addresslist.sol","id":12435,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":12462,"sourceUnit":13832,"src":"72:85:55","symbolAliases":[{"foreign":{"id":12434,"name":"Addresslist","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13831,"src":"80:11:55","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":12437,"name":"Addresslist","nameLocations":["323:11:55"],"nodeType":"IdentifierPath","referencedDeclaration":13831,"src":"323:11:55"},"id":12438,"nodeType":"InheritanceSpecifier","src":"323:11:55"}],"canonicalName":"AddresslistMock","contractDependencies":[],"contractKind":"contract","documentation":{"id":12436,"nodeType":"StructuredDocumentation","src":"159:136:55","text":"@notice A mock addresslist that everyone can add and remove addresses to and from, respectively.\n @dev DO NOT USE IN PRODUCTION!"},"fullyImplemented":true,"id":12461,"linearizedBaseContracts":[12461,13831],"name":"AddresslistMock","nameLocation":"304:15:55","nodeType":"ContractDefinition","nodes":[{"body":{"id":12448,"nodeType":"Block","src":"406:45:55","statements":[{"expression":{"arguments":[{"id":12445,"name":"_newAddresses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12441,"src":"430:13:55","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}],"id":12444,"name":"_addAddresses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13773,"src":"416:13:55","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_address_$dyn_calldata_ptr_$returns$__$","typeString":"function (address[] calldata)"}},"id":12446,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"416:28:55","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12447,"nodeType":"ExpressionStatement","src":"416:28:55"}]},"functionSelector":"3628731c","id":12449,"implemented":true,"kind":"function","modifiers":[],"name":"addAddresses","nameLocation":"350:12:55","nodeType":"FunctionDefinition","parameters":{"id":12442,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12441,"mutability":"mutable","name":"_newAddresses","nameLocation":"382:13:55","nodeType":"VariableDeclaration","scope":12449,"src":"363:32:55","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":12439,"name":"address","nodeType":"ElementaryTypeName","src":"363:7:55","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":12440,"nodeType":"ArrayTypeName","src":"363:9:55","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"362:34:55"},"returnParameters":{"id":12443,"nodeType":"ParameterList","parameters":[],"src":"406:0:55"},"scope":12461,"src":"341:110:55","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":12459,"nodeType":"Block","src":"529:52:55","statements":[{"expression":{"arguments":[{"id":12456,"name":"_exitingAddresses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12452,"src":"556:17:55","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}],"id":12455,"name":"_removeAddresses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13825,"src":"539:16:55","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_address_$dyn_calldata_ptr_$returns$__$","typeString":"function (address[] calldata)"}},"id":12457,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"539:35:55","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12458,"nodeType":"ExpressionStatement","src":"539:35:55"}]},"functionSelector":"a84eb999","id":12460,"implemented":true,"kind":"function","modifiers":[],"name":"removeAddresses","nameLocation":"466:15:55","nodeType":"FunctionDefinition","parameters":{"id":12453,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12452,"mutability":"mutable","name":"_exitingAddresses","nameLocation":"501:17:55","nodeType":"VariableDeclaration","scope":12460,"src":"482:36:55","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":12450,"name":"address","nodeType":"ElementaryTypeName","src":"482:7:55","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":12451,"nodeType":"ArrayTypeName","src":"482:9:55","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"481:38:55"},"returnParameters":{"id":12454,"nodeType":"ParameterList","parameters":[],"src":"529:0:55"},"scope":12461,"src":"457:124:55","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":12462,"src":"295:288:55","usedErrors":[13660]}],"src":"47:537:55"},"id":55},"src/mocks/plugin/extensions/proposal/ProposalMock.sol":{"ast":{"absolutePath":"src/mocks/plugin/extensions/proposal/ProposalMock.sol","exportedSymbols":{"IDAO":[10865],"Proposal":[14046],"ProposalMock":[12544]},"id":12545,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":12463,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:56"},{"absolutePath":"src/plugin/extensions/proposal/Proposal.sol","file":"../../../../plugin/extensions/proposal/Proposal.sol","id":12465,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":12545,"sourceUnit":14047,"src":"72:77:56","symbolAliases":[{"foreign":{"id":12464,"name":"Proposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14046,"src":"80:8:56","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/dao/IDAO.sol","file":"../../../../dao/IDAO.sol","id":12467,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":12545,"sourceUnit":10866,"src":"150:46:56","symbolAliases":[{"foreign":{"id":12466,"name":"IDAO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10865,"src":"158:4:56","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":12469,"name":"Proposal","nameLocations":["340:8:56"],"nodeType":"IdentifierPath","referencedDeclaration":14046,"src":"340:8:56"},"id":12470,"nodeType":"InheritanceSpecifier","src":"340:8:56"}],"canonicalName":"ProposalMock","contractDependencies":[],"contractKind":"contract","documentation":{"id":12468,"nodeType":"StructuredDocumentation","src":"198:117:56","text":"@notice A mock contract containing functions to create and execute proposals.\n @dev DO NOT USE IN PRODUCTION!"},"fullyImplemented":true,"id":12544,"linearizedBaseContracts":[12544,14046,9731,9743,13896],"name":"ProposalMock","nameLocation":"324:12:56","nodeType":"ContractDefinition","nodes":[{"body":{"id":12480,"nodeType":"Block","src":"421:49:56","statements":[{"expression":{"id":12478,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12475,"name":"proposalId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12473,"src":"431:10:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"id":12476,"name":"_createProposalId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13970,"src":"444:17:56","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$_t_uint256_$","typeString":"function () returns (uint256)"}},"id":12477,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"444:19:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"431:32:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12479,"nodeType":"ExpressionStatement","src":"431:32:56"}]},"functionSelector":"7b2bf56e","id":12481,"implemented":true,"kind":"function","modifiers":[],"name":"createProposalId","nameLocation":"364:16:56","nodeType":"FunctionDefinition","parameters":{"id":12471,"nodeType":"ParameterList","parameters":[],"src":"380:2:56"},"returnParameters":{"id":12474,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12473,"mutability":"mutable","name":"proposalId","nameLocation":"409:10:56","nodeType":"VariableDeclaration","scope":12481,"src":"401:18:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12472,"name":"uint256","nodeType":"ElementaryTypeName","src":"401:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"400:20:56"},"scope":12544,"src":"355:115:56","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":12511,"nodeType":"Block","src":"731:198:56","statements":[{"expression":{"id":12509,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12500,"name":"proposalId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12498,"src":"741:10:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":12502,"name":"_creator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12483,"src":"783:8:56","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12503,"name":"_metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12485,"src":"805:9:56","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":12504,"name":"_startDate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12487,"src":"828:10:56","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"id":12505,"name":"_endDate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12489,"src":"852:8:56","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"id":12506,"name":"_actions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12493,"src":"874:8:56","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Action_$10724_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IDAO.Action calldata[] calldata"}},{"id":12507,"name":"_allowFailureMap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12495,"src":"896:16:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint64","typeString":"uint64"},{"typeIdentifier":"t_uint64","typeString":"uint64"},{"typeIdentifier":"t_array$_t_struct$_Action_$10724_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IDAO.Action calldata[] calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12501,"name":"_createProposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14006,"src":"754:15:56","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_calldata_ptr_$_t_uint64_$_t_uint64_$_t_array$_t_struct$_Action_$10724_calldata_ptr_$dyn_calldata_ptr_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,bytes calldata,uint64,uint64,struct IDAO.Action calldata[] calldata,uint256) returns (uint256)"}},"id":12508,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"754:168:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"741:181:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12510,"nodeType":"ExpressionStatement","src":"741:181:56"}]},"functionSelector":"73e1166d","id":12512,"implemented":true,"kind":"function","modifiers":[],"name":"createProposal","nameLocation":"485:14:56","nodeType":"FunctionDefinition","parameters":{"id":12496,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12483,"mutability":"mutable","name":"_creator","nameLocation":"517:8:56","nodeType":"VariableDeclaration","scope":12512,"src":"509:16:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12482,"name":"address","nodeType":"ElementaryTypeName","src":"509:7:56","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12485,"mutability":"mutable","name":"_metadata","nameLocation":"550:9:56","nodeType":"VariableDeclaration","scope":12512,"src":"535:24:56","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":12484,"name":"bytes","nodeType":"ElementaryTypeName","src":"535:5:56","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":12487,"mutability":"mutable","name":"_startDate","nameLocation":"576:10:56","nodeType":"VariableDeclaration","scope":12512,"src":"569:17:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":12486,"name":"uint64","nodeType":"ElementaryTypeName","src":"569:6:56","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":12489,"mutability":"mutable","name":"_endDate","nameLocation":"603:8:56","nodeType":"VariableDeclaration","scope":12512,"src":"596:15:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":12488,"name":"uint64","nodeType":"ElementaryTypeName","src":"596:6:56","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":12493,"mutability":"mutable","name":"_actions","nameLocation":"644:8:56","nodeType":"VariableDeclaration","scope":12512,"src":"621:31:56","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Action_$10724_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IDAO.Action[]"},"typeName":{"baseType":{"id":12491,"nodeType":"UserDefinedTypeName","pathNode":{"id":12490,"name":"IDAO.Action","nameLocations":["621:4:56","626:6:56"],"nodeType":"IdentifierPath","referencedDeclaration":10724,"src":"621:11:56"},"referencedDeclaration":10724,"src":"621:11:56","typeDescriptions":{"typeIdentifier":"t_struct$_Action_$10724_storage_ptr","typeString":"struct IDAO.Action"}},"id":12492,"nodeType":"ArrayTypeName","src":"621:13:56","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Action_$10724_storage_$dyn_storage_ptr","typeString":"struct IDAO.Action[]"}},"visibility":"internal"},{"constant":false,"id":12495,"mutability":"mutable","name":"_allowFailureMap","nameLocation":"670:16:56","nodeType":"VariableDeclaration","scope":12512,"src":"662:24:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12494,"name":"uint256","nodeType":"ElementaryTypeName","src":"662:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"499:193:56"},"returnParameters":{"id":12499,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12498,"mutability":"mutable","name":"proposalId","nameLocation":"719:10:56","nodeType":"VariableDeclaration","scope":12512,"src":"711:18:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12497,"name":"uint256","nodeType":"ElementaryTypeName","src":"711:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"710:20:56"},"scope":12544,"src":"476:453:56","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":12542,"nodeType":"Block","src":"1153:108:56","statements":[{"expression":{"id":12540,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":12531,"name":"execResults","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12527,"src":"1164:11:56","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}},{"id":12532,"name":"failureMap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12529,"src":"1177:10:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":12533,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"1163:25:56","typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$_t_uint256_$","typeString":"tuple(bytes memory[] memory,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":12535,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12515,"src":"1208:4:56","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}},{"id":12536,"name":"_proposalId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12517,"src":"1214:11:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":12537,"name":"_actions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12521,"src":"1227:8:56","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Action_$10724_memory_ptr_$dyn_memory_ptr","typeString":"struct IDAO.Action memory[] memory"}},{"id":12538,"name":"_allowFailureMap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12523,"src":"1237:16:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_array$_t_struct$_Action_$10724_memory_ptr_$dyn_memory_ptr","typeString":"struct IDAO.Action memory[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12534,"name":"_executeProposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14045,"src":"1191:16:56","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IDAO_$10865_$_t_uint256_$_t_array$_t_struct$_Action_$10724_memory_ptr_$dyn_memory_ptr_$_t_uint256_$returns$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$_t_uint256_$","typeString":"function (contract IDAO,uint256,struct IDAO.Action memory[] memory,uint256) returns (bytes memory[] memory,uint256)"}},"id":12539,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1191:63:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$_t_uint256_$","typeString":"tuple(bytes memory[] memory,uint256)"}},"src":"1163:91:56","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12541,"nodeType":"ExpressionStatement","src":"1163:91:56"}]},"functionSelector":"634a9a88","id":12543,"implemented":true,"kind":"function","modifiers":[],"name":"executeProposal","nameLocation":"944:15:56","nodeType":"FunctionDefinition","parameters":{"id":12524,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12515,"mutability":"mutable","name":"_dao","nameLocation":"974:4:56","nodeType":"VariableDeclaration","scope":12543,"src":"969:9:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"},"typeName":{"id":12514,"nodeType":"UserDefinedTypeName","pathNode":{"id":12513,"name":"IDAO","nameLocations":["969:4:56"],"nodeType":"IdentifierPath","referencedDeclaration":10865,"src":"969:4:56"},"referencedDeclaration":10865,"src":"969:4:56","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}},"visibility":"internal"},{"constant":false,"id":12517,"mutability":"mutable","name":"_proposalId","nameLocation":"996:11:56","nodeType":"VariableDeclaration","scope":12543,"src":"988:19:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12516,"name":"uint256","nodeType":"ElementaryTypeName","src":"988:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12521,"mutability":"mutable","name":"_actions","nameLocation":"1038:8:56","nodeType":"VariableDeclaration","scope":12543,"src":"1017:29:56","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Action_$10724_memory_ptr_$dyn_memory_ptr","typeString":"struct IDAO.Action[]"},"typeName":{"baseType":{"id":12519,"nodeType":"UserDefinedTypeName","pathNode":{"id":12518,"name":"IDAO.Action","nameLocations":["1017:4:56","1022:6:56"],"nodeType":"IdentifierPath","referencedDeclaration":10724,"src":"1017:11:56"},"referencedDeclaration":10724,"src":"1017:11:56","typeDescriptions":{"typeIdentifier":"t_struct$_Action_$10724_storage_ptr","typeString":"struct IDAO.Action"}},"id":12520,"nodeType":"ArrayTypeName","src":"1017:13:56","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Action_$10724_storage_$dyn_storage_ptr","typeString":"struct IDAO.Action[]"}},"visibility":"internal"},{"constant":false,"id":12523,"mutability":"mutable","name":"_allowFailureMap","nameLocation":"1064:16:56","nodeType":"VariableDeclaration","scope":12543,"src":"1056:24:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12522,"name":"uint256","nodeType":"ElementaryTypeName","src":"1056:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"959:127:56"},"returnParameters":{"id":12530,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12527,"mutability":"mutable","name":"execResults","nameLocation":"1120:11:56","nodeType":"VariableDeclaration","scope":12543,"src":"1105:26:56","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":12525,"name":"bytes","nodeType":"ElementaryTypeName","src":"1105:5:56","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":12526,"nodeType":"ArrayTypeName","src":"1105:7:56","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"},{"constant":false,"id":12529,"mutability":"mutable","name":"failureMap","nameLocation":"1141:10:56","nodeType":"VariableDeclaration","scope":12543,"src":"1133:18:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12528,"name":"uint256","nodeType":"ElementaryTypeName","src":"1133:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1104:48:56"},"scope":12544,"src":"935:326:56","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":12545,"src":"315:948:56","usedErrors":[]}],"src":"47:1217:56"},"id":56},"src/mocks/plugin/extensions/proposal/ProposalUpgradeableMock.sol":{"ast":{"absolutePath":"src/mocks/plugin/extensions/proposal/ProposalUpgradeableMock.sol","exportedSymbols":{"IDAO":[10865],"ProposalUpgradeable":[14201],"ProposalUpgradeableMock":[12627]},"id":12628,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":12546,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:57"},{"absolutePath":"src/plugin/extensions/proposal/ProposalUpgradeable.sol","file":"../../../../plugin/extensions/proposal/ProposalUpgradeable.sol","id":12548,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":12628,"sourceUnit":14202,"src":"72:99:57","symbolAliases":[{"foreign":{"id":12547,"name":"ProposalUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14201,"src":"80:19:57","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/dao/IDAO.sol","file":"../../../../dao/IDAO.sol","id":12550,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":12628,"sourceUnit":10866,"src":"172:46:57","symbolAliases":[{"foreign":{"id":12549,"name":"IDAO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10865,"src":"180:4:57","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":12552,"name":"ProposalUpgradeable","nameLocations":["461:19:57"],"nodeType":"IdentifierPath","referencedDeclaration":14201,"src":"461:19:57"},"id":12553,"nodeType":"InheritanceSpecifier","src":"461:19:57"}],"canonicalName":"ProposalUpgradeableMock","contractDependencies":[],"contractKind":"contract","documentation":{"id":12551,"nodeType":"StructuredDocumentation","src":"220:205:57","text":"@notice A mock contract containing functions to create and execute proposals as well as storage gaps in inherited contracts to be used in UUPS upgradeable contracts.\n @dev DO NOT USE IN PRODUCTION!"},"fullyImplemented":true,"id":12627,"linearizedBaseContracts":[12627,14201,2822,2834,534,13896],"name":"ProposalUpgradeableMock","nameLocation":"434:23:57","nodeType":"ContractDefinition","nodes":[{"body":{"id":12563,"nodeType":"Block","src":"553:49:57","statements":[{"expression":{"id":12561,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12558,"name":"proposalId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12556,"src":"563:10:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"id":12559,"name":"_createProposalId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14120,"src":"576:17:57","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$_t_uint256_$","typeString":"function () returns (uint256)"}},"id":12560,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"576:19:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"563:32:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12562,"nodeType":"ExpressionStatement","src":"563:32:57"}]},"functionSelector":"7b2bf56e","id":12564,"implemented":true,"kind":"function","modifiers":[],"name":"createProposalId","nameLocation":"496:16:57","nodeType":"FunctionDefinition","parameters":{"id":12554,"nodeType":"ParameterList","parameters":[],"src":"512:2:57"},"returnParameters":{"id":12557,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12556,"mutability":"mutable","name":"proposalId","nameLocation":"541:10:57","nodeType":"VariableDeclaration","scope":12564,"src":"533:18:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12555,"name":"uint256","nodeType":"ElementaryTypeName","src":"533:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"532:20:57"},"scope":12627,"src":"487:115:57","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":12594,"nodeType":"Block","src":"863:198:57","statements":[{"expression":{"id":12592,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12583,"name":"proposalId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12581,"src":"873:10:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":12585,"name":"_creator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12566,"src":"915:8:57","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12586,"name":"_metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12568,"src":"937:9:57","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":12587,"name":"_startDate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12570,"src":"960:10:57","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"id":12588,"name":"_endDate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12572,"src":"984:8:57","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"id":12589,"name":"_actions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12576,"src":"1006:8:57","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Action_$10724_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IDAO.Action calldata[] calldata"}},{"id":12590,"name":"_allowFailureMap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12578,"src":"1028:16:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint64","typeString":"uint64"},{"typeIdentifier":"t_uint64","typeString":"uint64"},{"typeIdentifier":"t_array$_t_struct$_Action_$10724_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IDAO.Action calldata[] calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12584,"name":"_createProposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14156,"src":"886:15:57","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_calldata_ptr_$_t_uint64_$_t_uint64_$_t_array$_t_struct$_Action_$10724_calldata_ptr_$dyn_calldata_ptr_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,bytes calldata,uint64,uint64,struct IDAO.Action calldata[] calldata,uint256) returns (uint256)"}},"id":12591,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"886:168:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"873:181:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12593,"nodeType":"ExpressionStatement","src":"873:181:57"}]},"functionSelector":"73e1166d","id":12595,"implemented":true,"kind":"function","modifiers":[],"name":"createProposal","nameLocation":"617:14:57","nodeType":"FunctionDefinition","parameters":{"id":12579,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12566,"mutability":"mutable","name":"_creator","nameLocation":"649:8:57","nodeType":"VariableDeclaration","scope":12595,"src":"641:16:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12565,"name":"address","nodeType":"ElementaryTypeName","src":"641:7:57","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12568,"mutability":"mutable","name":"_metadata","nameLocation":"682:9:57","nodeType":"VariableDeclaration","scope":12595,"src":"667:24:57","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":12567,"name":"bytes","nodeType":"ElementaryTypeName","src":"667:5:57","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":12570,"mutability":"mutable","name":"_startDate","nameLocation":"708:10:57","nodeType":"VariableDeclaration","scope":12595,"src":"701:17:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":12569,"name":"uint64","nodeType":"ElementaryTypeName","src":"701:6:57","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":12572,"mutability":"mutable","name":"_endDate","nameLocation":"735:8:57","nodeType":"VariableDeclaration","scope":12595,"src":"728:15:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":12571,"name":"uint64","nodeType":"ElementaryTypeName","src":"728:6:57","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":12576,"mutability":"mutable","name":"_actions","nameLocation":"776:8:57","nodeType":"VariableDeclaration","scope":12595,"src":"753:31:57","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Action_$10724_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IDAO.Action[]"},"typeName":{"baseType":{"id":12574,"nodeType":"UserDefinedTypeName","pathNode":{"id":12573,"name":"IDAO.Action","nameLocations":["753:4:57","758:6:57"],"nodeType":"IdentifierPath","referencedDeclaration":10724,"src":"753:11:57"},"referencedDeclaration":10724,"src":"753:11:57","typeDescriptions":{"typeIdentifier":"t_struct$_Action_$10724_storage_ptr","typeString":"struct IDAO.Action"}},"id":12575,"nodeType":"ArrayTypeName","src":"753:13:57","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Action_$10724_storage_$dyn_storage_ptr","typeString":"struct IDAO.Action[]"}},"visibility":"internal"},{"constant":false,"id":12578,"mutability":"mutable","name":"_allowFailureMap","nameLocation":"802:16:57","nodeType":"VariableDeclaration","scope":12595,"src":"794:24:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12577,"name":"uint256","nodeType":"ElementaryTypeName","src":"794:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"631:193:57"},"returnParameters":{"id":12582,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12581,"mutability":"mutable","name":"proposalId","nameLocation":"851:10:57","nodeType":"VariableDeclaration","scope":12595,"src":"843:18:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12580,"name":"uint256","nodeType":"ElementaryTypeName","src":"843:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"842:20:57"},"scope":12627,"src":"608:453:57","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":12625,"nodeType":"Block","src":"1285:108:57","statements":[{"expression":{"id":12623,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":12614,"name":"execResults","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12610,"src":"1296:11:57","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}},{"id":12615,"name":"failureMap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12612,"src":"1309:10:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":12616,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"1295:25:57","typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$_t_uint256_$","typeString":"tuple(bytes memory[] memory,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":12618,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12598,"src":"1340:4:57","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}},{"id":12619,"name":"_proposalId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12600,"src":"1346:11:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":12620,"name":"_actions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12604,"src":"1359:8:57","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Action_$10724_memory_ptr_$dyn_memory_ptr","typeString":"struct IDAO.Action memory[] memory"}},{"id":12621,"name":"_allowFailureMap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12606,"src":"1369:16:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_array$_t_struct$_Action_$10724_memory_ptr_$dyn_memory_ptr","typeString":"struct IDAO.Action memory[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12617,"name":"_executeProposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14195,"src":"1323:16:57","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IDAO_$10865_$_t_uint256_$_t_array$_t_struct$_Action_$10724_memory_ptr_$dyn_memory_ptr_$_t_uint256_$returns$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$_t_uint256_$","typeString":"function (contract IDAO,uint256,struct IDAO.Action memory[] memory,uint256) returns (bytes memory[] memory,uint256)"}},"id":12622,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1323:63:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$_t_uint256_$","typeString":"tuple(bytes memory[] memory,uint256)"}},"src":"1295:91:57","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12624,"nodeType":"ExpressionStatement","src":"1295:91:57"}]},"functionSelector":"634a9a88","id":12626,"implemented":true,"kind":"function","modifiers":[],"name":"executeProposal","nameLocation":"1076:15:57","nodeType":"FunctionDefinition","parameters":{"id":12607,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12598,"mutability":"mutable","name":"_dao","nameLocation":"1106:4:57","nodeType":"VariableDeclaration","scope":12626,"src":"1101:9:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"},"typeName":{"id":12597,"nodeType":"UserDefinedTypeName","pathNode":{"id":12596,"name":"IDAO","nameLocations":["1101:4:57"],"nodeType":"IdentifierPath","referencedDeclaration":10865,"src":"1101:4:57"},"referencedDeclaration":10865,"src":"1101:4:57","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}},"visibility":"internal"},{"constant":false,"id":12600,"mutability":"mutable","name":"_proposalId","nameLocation":"1128:11:57","nodeType":"VariableDeclaration","scope":12626,"src":"1120:19:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12599,"name":"uint256","nodeType":"ElementaryTypeName","src":"1120:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12604,"mutability":"mutable","name":"_actions","nameLocation":"1170:8:57","nodeType":"VariableDeclaration","scope":12626,"src":"1149:29:57","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Action_$10724_memory_ptr_$dyn_memory_ptr","typeString":"struct IDAO.Action[]"},"typeName":{"baseType":{"id":12602,"nodeType":"UserDefinedTypeName","pathNode":{"id":12601,"name":"IDAO.Action","nameLocations":["1149:4:57","1154:6:57"],"nodeType":"IdentifierPath","referencedDeclaration":10724,"src":"1149:11:57"},"referencedDeclaration":10724,"src":"1149:11:57","typeDescriptions":{"typeIdentifier":"t_struct$_Action_$10724_storage_ptr","typeString":"struct IDAO.Action"}},"id":12603,"nodeType":"ArrayTypeName","src":"1149:13:57","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Action_$10724_storage_$dyn_storage_ptr","typeString":"struct IDAO.Action[]"}},"visibility":"internal"},{"constant":false,"id":12606,"mutability":"mutable","name":"_allowFailureMap","nameLocation":"1196:16:57","nodeType":"VariableDeclaration","scope":12626,"src":"1188:24:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12605,"name":"uint256","nodeType":"ElementaryTypeName","src":"1188:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1091:127:57"},"returnParameters":{"id":12613,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12610,"mutability":"mutable","name":"execResults","nameLocation":"1252:11:57","nodeType":"VariableDeclaration","scope":12626,"src":"1237:26:57","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":12608,"name":"bytes","nodeType":"ElementaryTypeName","src":"1237:5:57","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":12609,"nodeType":"ArrayTypeName","src":"1237:7:57","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"},{"constant":false,"id":12612,"mutability":"mutable","name":"failureMap","nameLocation":"1273:10:57","nodeType":"VariableDeclaration","scope":12626,"src":"1265:18:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12611,"name":"uint256","nodeType":"ElementaryTypeName","src":"1265:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1236:48:57"},"scope":12627,"src":"1067:326:57","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":12628,"src":"425:970:57","usedErrors":[]}],"src":"47:1349:57"},"id":57},"src/mocks/token/ERC1155Mock.sol":{"ast":{"absolutePath":"src/mocks/token/ERC1155Mock.sol","exportedSymbols":{"ERC1155":[6978],"ERC1155Mock":[12680]},"id":12681,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":12629,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:58"},{"absolutePath":"@openzeppelin/contracts/token/ERC1155/ERC1155.sol","file":"@openzeppelin/contracts/token/ERC1155/ERC1155.sol","id":12631,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":12681,"sourceUnit":6979,"src":"72:74:58","symbolAliases":[{"foreign":{"id":12630,"name":"ERC1155","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6978,"src":"80:7:58","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":12633,"name":"ERC1155","nameLocations":["327:7:58"],"nodeType":"IdentifierPath","referencedDeclaration":6978,"src":"327:7:58"},"id":12634,"nodeType":"InheritanceSpecifier","src":"327:7:58"}],"canonicalName":"ERC1155Mock","contractDependencies":[],"contractKind":"contract","documentation":{"id":12632,"nodeType":"StructuredDocumentation","src":"148:155:58","text":"@notice A mock [ERC-1155](https://eips.ethereum.org/EIPS/eip-1155) token that can be minted and burned by everyone.\n @dev DO NOT USE IN PRODUCTION!"},"fullyImplemented":true,"id":12680,"linearizedBaseContracts":[12680,6978,7156,7100,9731,9743,9294],"name":"ERC1155Mock","nameLocation":"312:11:58","nodeType":"ContractDefinition","nodes":[{"body":{"id":12642,"nodeType":"Block","src":"387:2:58","statements":[]},"id":12643,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":12639,"name":"_uri","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12636,"src":"381:4:58","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"id":12640,"kind":"baseConstructorSpecifier","modifierName":{"id":12638,"name":"ERC1155","nameLocations":["373:7:58"],"nodeType":"IdentifierPath","referencedDeclaration":6978,"src":"373:7:58"},"nodeType":"ModifierInvocation","src":"373:13:58"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":12637,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12636,"mutability":"mutable","name":"_uri","nameLocation":"367:4:58","nodeType":"VariableDeclaration","scope":12643,"src":"353:18:58","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":12635,"name":"string","nodeType":"ElementaryTypeName","src":"353:6:58","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"352:20:58"},"returnParameters":{"id":12641,"nodeType":"ParameterList","parameters":[],"src":"387:0:58"},"scope":12680,"src":"341:48:58","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":12662,"nodeType":"Block","src":"466:59:58","statements":[{"expression":{"arguments":[{"id":12653,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12645,"src":"482:7:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12654,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12647,"src":"491:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":12655,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12649,"src":"500:6:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"","id":12658,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"514:2:58","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":12657,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"508:5:58","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":12656,"name":"bytes","nodeType":"ElementaryTypeName","src":"508:5:58","typeDescriptions":{}}},"id":12659,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"508:9:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":12652,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6412,"src":"476:5:58","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,uint256,uint256,bytes memory)"}},"id":12660,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"476:42:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12661,"nodeType":"ExpressionStatement","src":"476:42:58"}]},"functionSelector":"156e29f6","id":12663,"implemented":true,"kind":"function","modifiers":[],"name":"mint","nameLocation":"404:4:58","nodeType":"FunctionDefinition","parameters":{"id":12650,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12645,"mutability":"mutable","name":"account","nameLocation":"417:7:58","nodeType":"VariableDeclaration","scope":12663,"src":"409:15:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12644,"name":"address","nodeType":"ElementaryTypeName","src":"409:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12647,"mutability":"mutable","name":"tokenId","nameLocation":"434:7:58","nodeType":"VariableDeclaration","scope":12663,"src":"426:15:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12646,"name":"uint256","nodeType":"ElementaryTypeName","src":"426:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12649,"mutability":"mutable","name":"amount","nameLocation":"451:6:58","nodeType":"VariableDeclaration","scope":12663,"src":"443:14:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12648,"name":"uint256","nodeType":"ElementaryTypeName","src":"443:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"408:50:58"},"returnParameters":{"id":12651,"nodeType":"ParameterList","parameters":[],"src":"466:0:58"},"scope":12680,"src":"395:130:58","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":12678,"nodeType":"Block","src":"602:48:58","statements":[{"expression":{"arguments":[{"id":12673,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12665,"src":"618:7:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12674,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12667,"src":"627:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":12675,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12669,"src":"636:6:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12672,"name":"_burn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6628,"src":"612:5:58","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,uint256,uint256)"}},"id":12676,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"612:31:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12677,"nodeType":"ExpressionStatement","src":"612:31:58"}]},"functionSelector":"f5298aca","id":12679,"implemented":true,"kind":"function","modifiers":[],"name":"burn","nameLocation":"540:4:58","nodeType":"FunctionDefinition","parameters":{"id":12670,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12665,"mutability":"mutable","name":"account","nameLocation":"553:7:58","nodeType":"VariableDeclaration","scope":12679,"src":"545:15:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12664,"name":"address","nodeType":"ElementaryTypeName","src":"545:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12667,"mutability":"mutable","name":"tokenId","nameLocation":"570:7:58","nodeType":"VariableDeclaration","scope":12679,"src":"562:15:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12666,"name":"uint256","nodeType":"ElementaryTypeName","src":"562:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12669,"mutability":"mutable","name":"amount","nameLocation":"587:6:58","nodeType":"VariableDeclaration","scope":12679,"src":"579:14:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12668,"name":"uint256","nodeType":"ElementaryTypeName","src":"579:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"544:50:58"},"returnParameters":{"id":12671,"nodeType":"ParameterList","parameters":[],"src":"602:0:58"},"scope":12680,"src":"531:119:58","stateMutability":"nonpayable","virtual":false,"visibility":"public"}],"scope":12681,"src":"303:349:58","usedErrors":[]}],"src":"47:606:58"},"id":58},"src/mocks/token/ERC20Mock.sol":{"ast":{"absolutePath":"src/mocks/token/ERC20Mock.sol","exportedSymbols":{"ERC20":[7743],"ERC20Mock":[12760]},"id":12761,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":12682,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:59"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/ERC20.sol","file":"@openzeppelin/contracts/token/ERC20/ERC20.sol","id":12684,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":12761,"sourceUnit":7744,"src":"72:68:59","symbolAliases":[{"foreign":{"id":12683,"name":"ERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7743,"src":"80:5:59","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":12686,"name":"ERC20","nameLocations":["315:5:59"],"nodeType":"IdentifierPath","referencedDeclaration":7743,"src":"315:5:59"},"id":12687,"nodeType":"InheritanceSpecifier","src":"315:5:59"}],"canonicalName":"ERC20Mock","contractDependencies":[],"contractKind":"contract","documentation":{"id":12685,"nodeType":"StructuredDocumentation","src":"142:151:59","text":"@notice A mock [ERC-20](https://eips.ethereum.org/EIPS/eip-20) token that can be minted and burned by everyone.\n @dev DO NOT USE IN PRODUCTION!"},"fullyImplemented":true,"id":12760,"linearizedBaseContracts":[12760,7743,7846,7821,9294],"name":"ERC20Mock","nameLocation":"302:9:59","nodeType":"ContractDefinition","nodes":[{"constant":false,"functionSelector":"f785ef72","id":12690,"mutability":"mutable","name":"decimals_","nameLocation":"340:9:59","nodeType":"VariableDeclaration","scope":12760,"src":"327:27:59","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":12688,"name":"uint8","nodeType":"ElementaryTypeName","src":"327:5:59","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"3138","id":12689,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"352:2:59","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"},"visibility":"public"},{"body":{"id":12701,"nodeType":"Block","src":"439:2:59","statements":[]},"id":12702,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":12697,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12692,"src":"423:5:59","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":12698,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12694,"src":"430:7:59","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"id":12699,"kind":"baseConstructorSpecifier","modifierName":{"id":12696,"name":"ERC20","nameLocations":["417:5:59"],"nodeType":"IdentifierPath","referencedDeclaration":7743,"src":"417:5:59"},"nodeType":"ModifierInvocation","src":"417:21:59"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":12695,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12692,"mutability":"mutable","name":"_name","nameLocation":"387:5:59","nodeType":"VariableDeclaration","scope":12702,"src":"373:19:59","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":12691,"name":"string","nodeType":"ElementaryTypeName","src":"373:6:59","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":12694,"mutability":"mutable","name":"_symbol","nameLocation":"408:7:59","nodeType":"VariableDeclaration","scope":12702,"src":"394:21:59","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":12693,"name":"string","nodeType":"ElementaryTypeName","src":"394:6:59","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"372:44:59"},"returnParameters":{"id":12700,"nodeType":"ParameterList","parameters":[],"src":"439:0:59"},"scope":12760,"src":"361:80:59","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":12711,"nodeType":"Block","src":"492:38:59","statements":[{"expression":{"id":12709,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12707,"name":"decimals_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12690,"src":"502:9:59","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":12708,"name":"_decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12704,"src":"514:9:59","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"502:21:59","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":12710,"nodeType":"ExpressionStatement","src":"502:21:59"}]},"functionSelector":"7a1395aa","id":12712,"implemented":true,"kind":"function","modifiers":[],"name":"setDecimals","nameLocation":"456:11:59","nodeType":"FunctionDefinition","parameters":{"id":12705,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12704,"mutability":"mutable","name":"_decimals","nameLocation":"474:9:59","nodeType":"VariableDeclaration","scope":12712,"src":"468:15:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":12703,"name":"uint8","nodeType":"ElementaryTypeName","src":"468:5:59","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"467:17:59"},"returnParameters":{"id":12706,"nodeType":"ParameterList","parameters":[],"src":"492:0:59"},"scope":12760,"src":"447:83:59","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[7231],"body":{"id":12720,"nodeType":"Block","src":"593:33:59","statements":[{"expression":{"id":12718,"name":"decimals_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12690,"src":"610:9:59","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"functionReturnParameters":12717,"id":12719,"nodeType":"Return","src":"603:16:59"}]},"functionSelector":"313ce567","id":12721,"implemented":true,"kind":"function","modifiers":[],"name":"decimals","nameLocation":"545:8:59","nodeType":"FunctionDefinition","overrides":{"id":12714,"nodeType":"OverrideSpecifier","overrides":[],"src":"568:8:59"},"parameters":{"id":12713,"nodeType":"ParameterList","parameters":[],"src":"553:2:59"},"returnParameters":{"id":12717,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12716,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12721,"src":"586:5:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":12715,"name":"uint8","nodeType":"ElementaryTypeName","src":"586:5:59","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"585:7:59"},"scope":12760,"src":"536:90:59","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":12758,"nodeType":"Block","src":"794:191:59","statements":[{"assignments":[12729],"declarations":[{"constant":false,"id":12729,"mutability":"mutable","name":"old","nameLocation":"812:3:59","nodeType":"VariableDeclaration","scope":12758,"src":"804:11:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12728,"name":"uint256","nodeType":"ElementaryTypeName","src":"804:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12733,"initialValue":{"arguments":[{"id":12731,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12723,"src":"828:2:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":12730,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7255,"src":"818:9:59","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":12732,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"818:13:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"804:27:59"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12736,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12734,"name":"old","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12729,"src":"845:3:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":12735,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12725,"src":"851:6:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"845:12:59","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12747,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12745,"name":"old","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12729,"src":"917:3:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":12746,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12725,"src":"923:6:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"917:12:59","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12756,"nodeType":"IfStatement","src":"913:66:59","trueBody":{"id":12755,"nodeType":"Block","src":"931:48:59","statements":[{"expression":{"arguments":[{"id":12749,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12723,"src":"951:2:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12752,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12750,"name":"old","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12729,"src":"955:3:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":12751,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12725,"src":"961:6:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"955:12:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12748,"name":"_burn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7632,"src":"945:5:59","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":12753,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"945:23:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12754,"nodeType":"ExpressionStatement","src":"945:23:59"}]}},"id":12757,"nodeType":"IfStatement","src":"841:138:59","trueBody":{"id":12744,"nodeType":"Block","src":"859:48:59","statements":[{"expression":{"arguments":[{"id":12738,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12723,"src":"879:2:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12741,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12739,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12725,"src":"883:6:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":12740,"name":"old","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12729,"src":"892:3:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"883:12:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12737,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7560,"src":"873:5:59","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":12742,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"873:23:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12743,"nodeType":"ExpressionStatement","src":"873:23:59"}]}}]},"functionSelector":"e30443bc","id":12759,"implemented":true,"kind":"function","modifiers":[],"name":"setBalance","nameLocation":"748:10:59","nodeType":"FunctionDefinition","parameters":{"id":12726,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12723,"mutability":"mutable","name":"to","nameLocation":"767:2:59","nodeType":"VariableDeclaration","scope":12759,"src":"759:10:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12722,"name":"address","nodeType":"ElementaryTypeName","src":"759:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12725,"mutability":"mutable","name":"amount","nameLocation":"779:6:59","nodeType":"VariableDeclaration","scope":12759,"src":"771:14:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12724,"name":"uint256","nodeType":"ElementaryTypeName","src":"771:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"758:28:59"},"returnParameters":{"id":12727,"nodeType":"ParameterList","parameters":[],"src":"794:0:59"},"scope":12760,"src":"739:246:59","stateMutability":"nonpayable","virtual":false,"visibility":"public"}],"scope":12761,"src":"293:694:59","usedErrors":[]}],"src":"47:941:59"},"id":59},"src/mocks/token/ERC721Mock.sol":{"ast":{"absolutePath":"src/mocks/token/ERC721Mock.sol","exportedSymbols":{"ERC721":[8773],"ERC721Mock":[12803]},"id":12804,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":12762,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:60"},{"absolutePath":"@openzeppelin/contracts/token/ERC721/ERC721.sol","file":"@openzeppelin/contracts/token/ERC721/ERC721.sol","id":12764,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":12804,"sourceUnit":8774,"src":"72:71:60","symbolAliases":[{"foreign":{"id":12763,"name":"ERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8773,"src":"80:6:60","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":12766,"name":"ERC721","nameLocations":["321:6:60"],"nodeType":"IdentifierPath","referencedDeclaration":8773,"src":"321:6:60"},"id":12767,"nodeType":"InheritanceSpecifier","src":"321:6:60"}],"canonicalName":"ERC721Mock","contractDependencies":[],"contractKind":"contract","documentation":{"id":12765,"nodeType":"StructuredDocumentation","src":"145:153:60","text":"@notice A mock [ERC-721](https://eips.ethereum.org/EIPS/eip-721) token that can be minted and burned by everyone.\n @dev DO NOT USE IN PRODUCTION!"},"fullyImplemented":true,"id":12803,"linearizedBaseContracts":[12803,8773,8934,8889,9731,9743,9294],"name":"ERC721Mock","nameLocation":"307:10:60","nodeType":"ContractDefinition","nodes":[{"body":{"id":12778,"nodeType":"Block","src":"413:2:60","statements":[]},"id":12779,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":12774,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12769,"src":"397:5:60","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":12775,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12771,"src":"404:7:60","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"id":12776,"kind":"baseConstructorSpecifier","modifierName":{"id":12773,"name":"ERC721","nameLocations":["390:6:60"],"nodeType":"IdentifierPath","referencedDeclaration":8773,"src":"390:6:60"},"nodeType":"ModifierInvocation","src":"390:22:60"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":12772,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12769,"mutability":"mutable","name":"name_","nameLocation":"360:5:60","nodeType":"VariableDeclaration","scope":12779,"src":"346:19:60","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":12768,"name":"string","nodeType":"ElementaryTypeName","src":"346:6:60","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":12771,"mutability":"mutable","name":"symbol_","nameLocation":"381:7:60","nodeType":"VariableDeclaration","scope":12779,"src":"367:21:60","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":12770,"name":"string","nodeType":"ElementaryTypeName","src":"367:6:60","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"345:44:60"},"returnParameters":{"id":12777,"nodeType":"ParameterList","parameters":[],"src":"413:0:60"},"scope":12803,"src":"334:81:60","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":12791,"nodeType":"Block","src":"476:40:60","statements":[{"expression":{"arguments":[{"id":12787,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12781,"src":"492:7:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12788,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12783,"src":"501:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12786,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8447,"src":"486:5:60","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":12789,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"486:23:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12790,"nodeType":"ExpressionStatement","src":"486:23:60"}]},"functionSelector":"40c10f19","id":12792,"implemented":true,"kind":"function","modifiers":[],"name":"mint","nameLocation":"430:4:60","nodeType":"FunctionDefinition","parameters":{"id":12784,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12781,"mutability":"mutable","name":"account","nameLocation":"443:7:60","nodeType":"VariableDeclaration","scope":12792,"src":"435:15:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12780,"name":"address","nodeType":"ElementaryTypeName","src":"435:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12783,"mutability":"mutable","name":"tokenId","nameLocation":"460:7:60","nodeType":"VariableDeclaration","scope":12792,"src":"452:15:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12782,"name":"uint256","nodeType":"ElementaryTypeName","src":"452:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"434:34:60"},"returnParameters":{"id":12785,"nodeType":"ParameterList","parameters":[],"src":"476:0:60"},"scope":12803,"src":"421:95:60","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":12801,"nodeType":"Block","src":"560:31:60","statements":[{"expression":{"arguments":[{"id":12798,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12794,"src":"576:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12797,"name":"_burn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8514,"src":"570:5:60","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":12799,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"570:14:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12800,"nodeType":"ExpressionStatement","src":"570:14:60"}]},"functionSelector":"42966c68","id":12802,"implemented":true,"kind":"function","modifiers":[],"name":"burn","nameLocation":"531:4:60","nodeType":"FunctionDefinition","parameters":{"id":12795,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12794,"mutability":"mutable","name":"tokenId","nameLocation":"544:7:60","nodeType":"VariableDeclaration","scope":12802,"src":"536:15:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12793,"name":"uint256","nodeType":"ElementaryTypeName","src":"536:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"535:17:60"},"returnParameters":{"id":12796,"nodeType":"ParameterList","parameters":[],"src":"560:0:60"},"scope":12803,"src":"522:69:60","stateMutability":"nonpayable","virtual":false,"visibility":"public"}],"scope":12804,"src":"298:295:60","usedErrors":[]}],"src":"47:547:60"},"id":60},"src/mocks/utils/math/BitmapMock.sol":{"ast":{"absolutePath":"src/mocks/utils/math/BitmapMock.sol","exportedSymbols":{"BitmapMock":[12840],"_flipBit":[14637],"_hasBit":[14619]},"id":12841,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":12805,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:61"},{"absolutePath":"src/utils/math/BitMap.sol","file":"../../../utils/math/BitMap.sol","id":12808,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":12841,"sourceUnit":14638,"src":"72:86:61","symbolAliases":[{"foreign":{"id":12806,"name":"hasBit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14619,"src":"80:6:61","typeDescriptions":{}},"local":"_hasBit","nameLocation":"-1:-1:-1"},{"foreign":{"id":12807,"name":"flipBit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14637,"src":"99:7:61","typeDescriptions":{}},"local":"_flipBit","nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"BitmapMock","contractDependencies":[],"contractKind":"contract","documentation":{"id":12809,"nodeType":"StructuredDocumentation","src":"160:106:61","text":"@notice A mock contract containing functions manipulating bitmaps.\n @dev DO NOT USE IN PRODUCTION!"},"fullyImplemented":true,"id":12840,"linearizedBaseContracts":[12840],"name":"BitmapMock","nameLocation":"275:10:61","nodeType":"ContractDefinition","nodes":[{"body":{"id":12823,"nodeType":"Block","src":"366:48:61","statements":[{"expression":{"arguments":[{"id":12819,"name":"_bitmap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12811,"src":"391:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":12820,"name":"_index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12813,"src":"400:6:61","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":12818,"name":"_hasBit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14619,"src":"383:7:61","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint8_$returns$_t_bool_$","typeString":"function (uint256,uint8) pure returns (bool)"}},"id":12821,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"383:24:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":12817,"id":12822,"nodeType":"Return","src":"376:31:61"}]},"functionSelector":"30c869ef","id":12824,"implemented":true,"kind":"function","modifiers":[],"name":"hasBit","nameLocation":"301:6:61","nodeType":"FunctionDefinition","parameters":{"id":12814,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12811,"mutability":"mutable","name":"_bitmap","nameLocation":"316:7:61","nodeType":"VariableDeclaration","scope":12824,"src":"308:15:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12810,"name":"uint256","nodeType":"ElementaryTypeName","src":"308:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12813,"mutability":"mutable","name":"_index","nameLocation":"331:6:61","nodeType":"VariableDeclaration","scope":12824,"src":"325:12:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":12812,"name":"uint8","nodeType":"ElementaryTypeName","src":"325:5:61","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"307:31:61"},"returnParameters":{"id":12817,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12816,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12824,"src":"360:4:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":12815,"name":"bool","nodeType":"ElementaryTypeName","src":"360:4:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"359:6:61"},"scope":12840,"src":"292:122:61","stateMutability":"pure","virtual":false,"visibility":"public"},{"body":{"id":12838,"nodeType":"Block","src":"498:49:61","statements":[{"expression":{"arguments":[{"id":12834,"name":"_bitmap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12826,"src":"524:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":12835,"name":"_index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12828,"src":"533:6:61","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":12833,"name":"_flipBit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14637,"src":"515:8:61","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint8_$returns$_t_uint256_$","typeString":"function (uint256,uint8) pure returns (uint256)"}},"id":12836,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"515:25:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":12832,"id":12837,"nodeType":"Return","src":"508:32:61"}]},"functionSelector":"7a3a1485","id":12839,"implemented":true,"kind":"function","modifiers":[],"name":"flipBit","nameLocation":"429:7:61","nodeType":"FunctionDefinition","parameters":{"id":12829,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12826,"mutability":"mutable","name":"_bitmap","nameLocation":"445:7:61","nodeType":"VariableDeclaration","scope":12839,"src":"437:15:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12825,"name":"uint256","nodeType":"ElementaryTypeName","src":"437:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12828,"mutability":"mutable","name":"_index","nameLocation":"460:6:61","nodeType":"VariableDeclaration","scope":12839,"src":"454:12:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":12827,"name":"uint8","nodeType":"ElementaryTypeName","src":"454:5:61","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"436:31:61"},"returnParameters":{"id":12832,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12831,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12839,"src":"489:7:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12830,"name":"uint256","nodeType":"ElementaryTypeName","src":"489:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"488:9:61"},"scope":12840,"src":"420:127:61","stateMutability":"pure","virtual":false,"visibility":"public"}],"scope":12841,"src":"266:283:61","usedErrors":[]}],"src":"47:503:61"},"id":61},"src/mocks/utils/math/RatioMock.sol":{"ast":{"absolutePath":"src/mocks/utils/math/RatioMock.sol","exportedSymbols":{"RATIO_BASE":[14644],"RatioMock":[12870],"_applyRatioCeiled":[14698]},"id":12871,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":12842,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:62"},{"absolutePath":"src/utils/math/Ratio.sol","file":"../../../utils/math/Ratio.sol","id":12845,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":12871,"sourceUnit":14699,"src":"72:76:62","symbolAliases":[{"foreign":{"id":12843,"name":"RATIO_BASE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14644,"src":"80:10:62","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":12844,"name":"_applyRatioCeiled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14698,"src":"92:17:62","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"RatioMock","contractDependencies":[],"contractKind":"contract","documentation":{"id":12846,"nodeType":"StructuredDocumentation","src":"150:106:62","text":"@notice A mock contract containing functions manipulating bitmaps.\n @dev DO NOT USE IN PRODUCTION!"},"fullyImplemented":true,"id":12870,"linearizedBaseContracts":[12870],"name":"RatioMock","nameLocation":"265:9:62","nodeType":"ContractDefinition","nodes":[{"body":{"id":12853,"nodeType":"Block","src":"335:34:62","statements":[{"expression":{"id":12851,"name":"RATIO_BASE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14644,"src":"352:10:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":12850,"id":12852,"nodeType":"Return","src":"345:17:62"}]},"functionSelector":"3d9de670","id":12854,"implemented":true,"kind":"function","modifiers":[],"name":"getRatioBase","nameLocation":"290:12:62","nodeType":"FunctionDefinition","parameters":{"id":12847,"nodeType":"ParameterList","parameters":[],"src":"302:2:62"},"returnParameters":{"id":12850,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12849,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12854,"src":"326:7:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12848,"name":"uint256","nodeType":"ElementaryTypeName","src":"326:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"325:9:62"},"scope":12870,"src":"281:88:62","stateMutability":"pure","virtual":false,"visibility":"public"},{"body":{"id":12868,"nodeType":"Block","src":"463:57:62","statements":[{"expression":{"arguments":[{"id":12864,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12856,"src":"498:6:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":12865,"name":"_ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12858,"src":"506:6:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12863,"name":"_applyRatioCeiled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14698,"src":"480:17:62","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":12866,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"480:33:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":12862,"id":12867,"nodeType":"Return","src":"473:40:62"}]},"functionSelector":"a0275620","id":12869,"implemented":true,"kind":"function","modifiers":[],"name":"applyRatioCeiled","nameLocation":"384:16:62","nodeType":"FunctionDefinition","parameters":{"id":12859,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12856,"mutability":"mutable","name":"_value","nameLocation":"409:6:62","nodeType":"VariableDeclaration","scope":12869,"src":"401:14:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12855,"name":"uint256","nodeType":"ElementaryTypeName","src":"401:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12858,"mutability":"mutable","name":"_ratio","nameLocation":"425:6:62","nodeType":"VariableDeclaration","scope":12869,"src":"417:14:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12857,"name":"uint256","nodeType":"ElementaryTypeName","src":"417:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"400:32:62"},"returnParameters":{"id":12862,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12861,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12869,"src":"454:7:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12860,"name":"uint256","nodeType":"ElementaryTypeName","src":"454:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"453:9:62"},"scope":12870,"src":"375:145:62","stateMutability":"pure","virtual":false,"visibility":"public"}],"scope":12871,"src":"256:266:62","usedErrors":[14651]}],"src":"47:476:62"},"id":62},"src/mocks/utils/versioning/ProtocolVersionMock.sol":{"ast":{"absolutePath":"src/mocks/utils/versioning/ProtocolVersionMock.sol","exportedSymbols":{"ProtocolVersion":[14766],"ProtocolVersionMock":[12878]},"id":12879,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":12872,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:63"},{"absolutePath":"src/utils/versioning/ProtocolVersion.sol","file":"../../../utils/versioning/ProtocolVersion.sol","id":12874,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":12879,"sourceUnit":14767,"src":"72:78:63","symbolAliases":[{"foreign":{"id":12873,"name":"ProtocolVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14766,"src":"80:15:63","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":12876,"name":"ProtocolVersion","nameLocations":["335:15:63"],"nodeType":"IdentifierPath","referencedDeclaration":14766,"src":"335:15:63"},"id":12877,"nodeType":"InheritanceSpecifier","src":"335:15:63"}],"canonicalName":"ProtocolVersionMock","contractDependencies":[],"contractKind":"contract","documentation":{"id":12875,"nodeType":"StructuredDocumentation","src":"152:106:63","text":"@notice A mock contract returning the OSx protocol version number.\n @dev DO NOT USE IN PRODUCTION!"},"fullyImplemented":true,"id":12878,"linearizedBaseContracts":[12878,14766,14744],"name":"ProtocolVersionMock","nameLocation":"312:19:63","nodeType":"ContractDefinition","nodes":[],"scope":12879,"src":"303:52:63","usedErrors":[]}],"src":"47:309:63"},"id":63},"src/mocks/utils/versioning/VersionComparisonLibMock.sol":{"ast":{"absolutePath":"src/mocks/utils/versioning/VersionComparisonLibMock.sol","exportedSymbols":{"VersionComparisonLib":[15132],"VersionComparisonLibMock":[13003]},"id":13004,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":12880,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:64"},{"absolutePath":"src/utils/versioning/VersionComparisonLib.sol","file":"../../../utils/versioning/VersionComparisonLib.sol","id":12882,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13004,"sourceUnit":15133,"src":"72:88:64","symbolAliases":[{"foreign":{"id":12881,"name":"VersionComparisonLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15132,"src":"80:20:64","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"VersionComparisonLibMock","contractDependencies":[],"contractKind":"contract","documentation":{"id":12883,"nodeType":"StructuredDocumentation","src":"162:121:64","text":"@notice A mock contract containing functions to compare semantic version numbers.\n @dev DO NOT USE IN PRODUCTION!"},"fullyImplemented":true,"id":13003,"linearizedBaseContracts":[13003],"name":"VersionComparisonLibMock","nameLocation":"292:24:64","nodeType":"ContractDefinition","nodes":[{"global":false,"id":12888,"libraryName":{"id":12884,"name":"VersionComparisonLib","nameLocations":["329:20:64"],"nodeType":"IdentifierPath","referencedDeclaration":15132,"src":"329:20:64"},"nodeType":"UsingForDirective","src":"323:40:64","typeName":{"baseType":{"id":12885,"name":"uint8","nodeType":"ElementaryTypeName","src":"354:5:64","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":12887,"length":{"hexValue":"33","id":12886,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"360:1:64","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"ArrayTypeName","src":"354:8:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_storage_ptr","typeString":"uint8[3]"}}},{"body":{"id":12906,"nodeType":"Block","src":"450:35:64","statements":[{"expression":{"arguments":[{"id":12903,"name":"rhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12896,"src":"474:3:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}],"expression":{"id":12901,"name":"lhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12892,"src":"467:3:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}},"id":12902,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"471:2:64","memberName":"eq","nodeType":"MemberAccess","referencedDeclaration":14816,"src":"467:6:64","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_uint8_$3_memory_ptr_$_t_array$_t_uint8_$3_memory_ptr_$returns$_t_bool_$bound_to$_t_array$_t_uint8_$3_memory_ptr_$","typeString":"function (uint8[3] memory,uint8[3] memory) pure returns (bool)"}},"id":12904,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"467:11:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":12900,"id":12905,"nodeType":"Return","src":"460:18:64"}]},"functionSelector":"f92e9bb1","id":12907,"implemented":true,"kind":"function","modifiers":[],"name":"eq","nameLocation":"378:2:64","nodeType":"FunctionDefinition","parameters":{"id":12897,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12892,"mutability":"mutable","name":"lhs","nameLocation":"397:3:64","nodeType":"VariableDeclaration","scope":12907,"src":"381:19:64","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3]"},"typeName":{"baseType":{"id":12889,"name":"uint8","nodeType":"ElementaryTypeName","src":"381:5:64","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":12891,"length":{"hexValue":"33","id":12890,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"387:1:64","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"ArrayTypeName","src":"381:8:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_storage_ptr","typeString":"uint8[3]"}},"visibility":"internal"},{"constant":false,"id":12896,"mutability":"mutable","name":"rhs","nameLocation":"418:3:64","nodeType":"VariableDeclaration","scope":12907,"src":"402:19:64","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3]"},"typeName":{"baseType":{"id":12893,"name":"uint8","nodeType":"ElementaryTypeName","src":"402:5:64","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":12895,"length":{"hexValue":"33","id":12894,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"408:1:64","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"ArrayTypeName","src":"402:8:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_storage_ptr","typeString":"uint8[3]"}},"visibility":"internal"}],"src":"380:42:64"},"returnParameters":{"id":12900,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12899,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12907,"src":"444:4:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":12898,"name":"bool","nodeType":"ElementaryTypeName","src":"444:4:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"443:6:64"},"scope":13003,"src":"369:116:64","stateMutability":"pure","virtual":false,"visibility":"public"},{"body":{"id":12925,"nodeType":"Block","src":"573:36:64","statements":[{"expression":{"arguments":[{"id":12922,"name":"rhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12915,"src":"598:3:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}],"expression":{"id":12920,"name":"lhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12911,"src":"590:3:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}},"id":12921,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"594:3:64","memberName":"neq","nodeType":"MemberAccess","referencedDeclaration":14863,"src":"590:7:64","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_uint8_$3_memory_ptr_$_t_array$_t_uint8_$3_memory_ptr_$returns$_t_bool_$bound_to$_t_array$_t_uint8_$3_memory_ptr_$","typeString":"function (uint8[3] memory,uint8[3] memory) pure returns (bool)"}},"id":12923,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"590:12:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":12919,"id":12924,"nodeType":"Return","src":"583:19:64"}]},"functionSelector":"d343ec1b","id":12926,"implemented":true,"kind":"function","modifiers":[],"name":"neq","nameLocation":"500:3:64","nodeType":"FunctionDefinition","parameters":{"id":12916,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12911,"mutability":"mutable","name":"lhs","nameLocation":"520:3:64","nodeType":"VariableDeclaration","scope":12926,"src":"504:19:64","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3]"},"typeName":{"baseType":{"id":12908,"name":"uint8","nodeType":"ElementaryTypeName","src":"504:5:64","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":12910,"length":{"hexValue":"33","id":12909,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"510:1:64","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"ArrayTypeName","src":"504:8:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_storage_ptr","typeString":"uint8[3]"}},"visibility":"internal"},{"constant":false,"id":12915,"mutability":"mutable","name":"rhs","nameLocation":"541:3:64","nodeType":"VariableDeclaration","scope":12926,"src":"525:19:64","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3]"},"typeName":{"baseType":{"id":12912,"name":"uint8","nodeType":"ElementaryTypeName","src":"525:5:64","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":12914,"length":{"hexValue":"33","id":12913,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"531:1:64","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"ArrayTypeName","src":"525:8:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_storage_ptr","typeString":"uint8[3]"}},"visibility":"internal"}],"src":"503:42:64"},"returnParameters":{"id":12919,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12918,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12926,"src":"567:4:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":12917,"name":"bool","nodeType":"ElementaryTypeName","src":"567:4:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"566:6:64"},"scope":13003,"src":"491:118:64","stateMutability":"pure","virtual":false,"visibility":"public"},{"body":{"id":12944,"nodeType":"Block","src":"696:35:64","statements":[{"expression":{"arguments":[{"id":12941,"name":"rhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12934,"src":"720:3:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}],"expression":{"id":12939,"name":"lhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12930,"src":"713:3:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}},"id":12940,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"717:2:64","memberName":"lt","nodeType":"MemberAccess","referencedDeclaration":14930,"src":"713:6:64","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_uint8_$3_memory_ptr_$_t_array$_t_uint8_$3_memory_ptr_$returns$_t_bool_$bound_to$_t_array$_t_uint8_$3_memory_ptr_$","typeString":"function (uint8[3] memory,uint8[3] memory) pure returns (bool)"}},"id":12942,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"713:11:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":12938,"id":12943,"nodeType":"Return","src":"706:18:64"}]},"functionSelector":"668a90f6","id":12945,"implemented":true,"kind":"function","modifiers":[],"name":"lt","nameLocation":"624:2:64","nodeType":"FunctionDefinition","parameters":{"id":12935,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12930,"mutability":"mutable","name":"lhs","nameLocation":"643:3:64","nodeType":"VariableDeclaration","scope":12945,"src":"627:19:64","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3]"},"typeName":{"baseType":{"id":12927,"name":"uint8","nodeType":"ElementaryTypeName","src":"627:5:64","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":12929,"length":{"hexValue":"33","id":12928,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"633:1:64","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"ArrayTypeName","src":"627:8:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_storage_ptr","typeString":"uint8[3]"}},"visibility":"internal"},{"constant":false,"id":12934,"mutability":"mutable","name":"rhs","nameLocation":"664:3:64","nodeType":"VariableDeclaration","scope":12945,"src":"648:19:64","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3]"},"typeName":{"baseType":{"id":12931,"name":"uint8","nodeType":"ElementaryTypeName","src":"648:5:64","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":12933,"length":{"hexValue":"33","id":12932,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"654:1:64","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"ArrayTypeName","src":"648:8:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_storage_ptr","typeString":"uint8[3]"}},"visibility":"internal"}],"src":"626:42:64"},"returnParameters":{"id":12938,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12937,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12945,"src":"690:4:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":12936,"name":"bool","nodeType":"ElementaryTypeName","src":"690:4:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"689:6:64"},"scope":13003,"src":"615:116:64","stateMutability":"pure","virtual":false,"visibility":"public"},{"body":{"id":12963,"nodeType":"Block","src":"819:36:64","statements":[{"expression":{"arguments":[{"id":12960,"name":"rhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12953,"src":"844:3:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}],"expression":{"id":12958,"name":"lhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12949,"src":"836:3:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}},"id":12959,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"840:3:64","memberName":"lte","nodeType":"MemberAccess","referencedDeclaration":14997,"src":"836:7:64","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_uint8_$3_memory_ptr_$_t_array$_t_uint8_$3_memory_ptr_$returns$_t_bool_$bound_to$_t_array$_t_uint8_$3_memory_ptr_$","typeString":"function (uint8[3] memory,uint8[3] memory) pure returns (bool)"}},"id":12961,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"836:12:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":12957,"id":12962,"nodeType":"Return","src":"829:19:64"}]},"functionSelector":"2198ac8d","id":12964,"implemented":true,"kind":"function","modifiers":[],"name":"lte","nameLocation":"746:3:64","nodeType":"FunctionDefinition","parameters":{"id":12954,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12949,"mutability":"mutable","name":"lhs","nameLocation":"766:3:64","nodeType":"VariableDeclaration","scope":12964,"src":"750:19:64","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3]"},"typeName":{"baseType":{"id":12946,"name":"uint8","nodeType":"ElementaryTypeName","src":"750:5:64","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":12948,"length":{"hexValue":"33","id":12947,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"756:1:64","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"ArrayTypeName","src":"750:8:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_storage_ptr","typeString":"uint8[3]"}},"visibility":"internal"},{"constant":false,"id":12953,"mutability":"mutable","name":"rhs","nameLocation":"787:3:64","nodeType":"VariableDeclaration","scope":12964,"src":"771:19:64","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3]"},"typeName":{"baseType":{"id":12950,"name":"uint8","nodeType":"ElementaryTypeName","src":"771:5:64","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":12952,"length":{"hexValue":"33","id":12951,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"777:1:64","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"ArrayTypeName","src":"771:8:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_storage_ptr","typeString":"uint8[3]"}},"visibility":"internal"}],"src":"749:42:64"},"returnParameters":{"id":12957,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12956,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12964,"src":"813:4:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":12955,"name":"bool","nodeType":"ElementaryTypeName","src":"813:4:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"812:6:64"},"scope":13003,"src":"737:118:64","stateMutability":"pure","virtual":false,"visibility":"public"},{"body":{"id":12982,"nodeType":"Block","src":"942:35:64","statements":[{"expression":{"arguments":[{"id":12979,"name":"rhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12972,"src":"966:3:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}],"expression":{"id":12977,"name":"lhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12968,"src":"959:3:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}},"id":12978,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"963:2:64","memberName":"gt","nodeType":"MemberAccess","referencedDeclaration":15064,"src":"959:6:64","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_uint8_$3_memory_ptr_$_t_array$_t_uint8_$3_memory_ptr_$returns$_t_bool_$bound_to$_t_array$_t_uint8_$3_memory_ptr_$","typeString":"function (uint8[3] memory,uint8[3] memory) pure returns (bool)"}},"id":12980,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"959:11:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":12976,"id":12981,"nodeType":"Return","src":"952:18:64"}]},"functionSelector":"96b38697","id":12983,"implemented":true,"kind":"function","modifiers":[],"name":"gt","nameLocation":"870:2:64","nodeType":"FunctionDefinition","parameters":{"id":12973,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12968,"mutability":"mutable","name":"lhs","nameLocation":"889:3:64","nodeType":"VariableDeclaration","scope":12983,"src":"873:19:64","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3]"},"typeName":{"baseType":{"id":12965,"name":"uint8","nodeType":"ElementaryTypeName","src":"873:5:64","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":12967,"length":{"hexValue":"33","id":12966,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"879:1:64","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"ArrayTypeName","src":"873:8:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_storage_ptr","typeString":"uint8[3]"}},"visibility":"internal"},{"constant":false,"id":12972,"mutability":"mutable","name":"rhs","nameLocation":"910:3:64","nodeType":"VariableDeclaration","scope":12983,"src":"894:19:64","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3]"},"typeName":{"baseType":{"id":12969,"name":"uint8","nodeType":"ElementaryTypeName","src":"894:5:64","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":12971,"length":{"hexValue":"33","id":12970,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"900:1:64","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"ArrayTypeName","src":"894:8:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_storage_ptr","typeString":"uint8[3]"}},"visibility":"internal"}],"src":"872:42:64"},"returnParameters":{"id":12976,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12975,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12983,"src":"936:4:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":12974,"name":"bool","nodeType":"ElementaryTypeName","src":"936:4:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"935:6:64"},"scope":13003,"src":"861:116:64","stateMutability":"pure","virtual":false,"visibility":"public"},{"body":{"id":13001,"nodeType":"Block","src":"1065:36:64","statements":[{"expression":{"arguments":[{"id":12998,"name":"rhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12991,"src":"1090:3:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}],"expression":{"id":12996,"name":"lhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12987,"src":"1082:3:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}},"id":12997,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1086:3:64","memberName":"gte","nodeType":"MemberAccess","referencedDeclaration":15131,"src":"1082:7:64","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_uint8_$3_memory_ptr_$_t_array$_t_uint8_$3_memory_ptr_$returns$_t_bool_$bound_to$_t_array$_t_uint8_$3_memory_ptr_$","typeString":"function (uint8[3] memory,uint8[3] memory) pure returns (bool)"}},"id":12999,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1082:12:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":12995,"id":13000,"nodeType":"Return","src":"1075:19:64"}]},"functionSelector":"9fdb5746","id":13002,"implemented":true,"kind":"function","modifiers":[],"name":"gte","nameLocation":"992:3:64","nodeType":"FunctionDefinition","parameters":{"id":12992,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12987,"mutability":"mutable","name":"lhs","nameLocation":"1012:3:64","nodeType":"VariableDeclaration","scope":13002,"src":"996:19:64","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3]"},"typeName":{"baseType":{"id":12984,"name":"uint8","nodeType":"ElementaryTypeName","src":"996:5:64","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":12986,"length":{"hexValue":"33","id":12985,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1002:1:64","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"ArrayTypeName","src":"996:8:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_storage_ptr","typeString":"uint8[3]"}},"visibility":"internal"},{"constant":false,"id":12991,"mutability":"mutable","name":"rhs","nameLocation":"1033:3:64","nodeType":"VariableDeclaration","scope":13002,"src":"1017:19:64","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3]"},"typeName":{"baseType":{"id":12988,"name":"uint8","nodeType":"ElementaryTypeName","src":"1017:5:64","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":12990,"length":{"hexValue":"33","id":12989,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1023:1:64","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"ArrayTypeName","src":"1017:8:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_storage_ptr","typeString":"uint8[3]"}},"visibility":"internal"}],"src":"995:42:64"},"returnParameters":{"id":12995,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12994,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13002,"src":"1059:4:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":12993,"name":"bool","nodeType":"ElementaryTypeName","src":"1059:4:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1058:6:64"},"scope":13003,"src":"983:118:64","stateMutability":"pure","virtual":false,"visibility":"public"}],"scope":13004,"src":"283:820:64","usedErrors":[]}],"src":"47:1057:64"},"id":64},"src/permission/PermissionLib.sol":{"ast":{"absolutePath":"src/permission/PermissionLib.sol","exportedSymbols":{"PermissionLib":[13038]},"id":13039,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":13005,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:65"},{"abstract":false,"baseContracts":[],"canonicalName":"PermissionLib","contractDependencies":[],"contractKind":"library","documentation":{"id":13006,"nodeType":"StructuredDocumentation","src":"72:171:65","text":"@title PermissionLib\n @author Aragon X - 2021-2023\n @notice A library containing objects for permission processing.\n @custom:security-contact sirt@aragon.org"},"fullyImplemented":true,"id":13038,"linearizedBaseContracts":[13038],"name":"PermissionLib","nameLocation":"251:13:65","nodeType":"ContractDefinition","nodes":[{"constant":true,"documentation":{"id":13007,"nodeType":"StructuredDocumentation","src":"271:79:65","text":"@notice A constant expressing that no condition is applied to a permission."},"functionSelector":"6dd02a5b","id":13013,"mutability":"constant","name":"NO_CONDITION","nameLocation":"379:12:65","nodeType":"VariableDeclaration","scope":13038,"src":"355:49:65","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13008,"name":"address","nodeType":"ElementaryTypeName","src":"355:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":{"arguments":[{"hexValue":"30","id":13011,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"402:1:65","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":13010,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"394:7:65","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":13009,"name":"address","nodeType":"ElementaryTypeName","src":"394:7:65","typeDescriptions":{}}},"id":13012,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"394:10:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"canonicalName":"PermissionLib.Operation","id":13017,"members":[{"id":13014,"name":"Grant","nameLocation":"814:5:65","nodeType":"EnumValue","src":"814:5:65"},{"id":13015,"name":"Revoke","nameLocation":"829:6:65","nodeType":"EnumValue","src":"829:6:65"},{"id":13016,"name":"GrantWithCondition","nameLocation":"845:18:65","nodeType":"EnumValue","src":"845:18:65"}],"name":"Operation","nameLocation":"794:9:65","nodeType":"EnumDefinition","src":"789:80:65"},{"canonicalName":"PermissionLib.SingleTargetPermission","id":13025,"members":[{"constant":false,"id":13020,"mutability":"mutable","name":"operation","nameLocation":"1243:9:65","nodeType":"VariableDeclaration","scope":13025,"src":"1233:19:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Operation_$13017","typeString":"enum PermissionLib.Operation"},"typeName":{"id":13019,"nodeType":"UserDefinedTypeName","pathNode":{"id":13018,"name":"Operation","nameLocations":["1233:9:65"],"nodeType":"IdentifierPath","referencedDeclaration":13017,"src":"1233:9:65"},"referencedDeclaration":13017,"src":"1233:9:65","typeDescriptions":{"typeIdentifier":"t_enum$_Operation_$13017","typeString":"enum PermissionLib.Operation"}},"visibility":"internal"},{"constant":false,"id":13022,"mutability":"mutable","name":"who","nameLocation":"1270:3:65","nodeType":"VariableDeclaration","scope":13025,"src":"1262:11:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13021,"name":"address","nodeType":"ElementaryTypeName","src":"1262:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13024,"mutability":"mutable","name":"permissionId","nameLocation":"1291:12:65","nodeType":"VariableDeclaration","scope":13025,"src":"1283:20:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":13023,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1283:7:65","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"name":"SingleTargetPermission","nameLocation":"1200:22:65","nodeType":"StructDefinition","scope":13038,"src":"1193:117:65","visibility":"public"},{"canonicalName":"PermissionLib.MultiTargetPermission","id":13037,"members":[{"constant":false,"id":13028,"mutability":"mutable","name":"operation","nameLocation":"1934:9:65","nodeType":"VariableDeclaration","scope":13037,"src":"1924:19:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Operation_$13017","typeString":"enum PermissionLib.Operation"},"typeName":{"id":13027,"nodeType":"UserDefinedTypeName","pathNode":{"id":13026,"name":"Operation","nameLocations":["1924:9:65"],"nodeType":"IdentifierPath","referencedDeclaration":13017,"src":"1924:9:65"},"referencedDeclaration":13017,"src":"1924:9:65","typeDescriptions":{"typeIdentifier":"t_enum$_Operation_$13017","typeString":"enum PermissionLib.Operation"}},"visibility":"internal"},{"constant":false,"id":13030,"mutability":"mutable","name":"where","nameLocation":"1961:5:65","nodeType":"VariableDeclaration","scope":13037,"src":"1953:13:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13029,"name":"address","nodeType":"ElementaryTypeName","src":"1953:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13032,"mutability":"mutable","name":"who","nameLocation":"1984:3:65","nodeType":"VariableDeclaration","scope":13037,"src":"1976:11:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13031,"name":"address","nodeType":"ElementaryTypeName","src":"1976:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13034,"mutability":"mutable","name":"condition","nameLocation":"2005:9:65","nodeType":"VariableDeclaration","scope":13037,"src":"1997:17:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13033,"name":"address","nodeType":"ElementaryTypeName","src":"1997:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13036,"mutability":"mutable","name":"permissionId","nameLocation":"2032:12:65","nodeType":"VariableDeclaration","scope":13037,"src":"2024:20:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":13035,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2024:7:65","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"name":"MultiTargetPermission","nameLocation":"1892:21:65","nodeType":"StructDefinition","scope":13038,"src":"1885:166:65","visibility":"public"}],"scope":13039,"src":"243:1810:65","usedErrors":[]}],"src":"47:2007:65"},"id":65},"src/permission/auth/DaoAuthorizable.sol":{"ast":{"absolutePath":"src/permission/auth/DaoAuthorizable.sol","exportedSymbols":{"Context":[9294],"DaoAuthorizable":[13096],"IDAO":[10865],"_auth":[13211]},"id":13097,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":13040,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:66"},{"absolutePath":"@openzeppelin/contracts/utils/Context.sol","file":"@openzeppelin/contracts/utils/Context.sol","id":13042,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13097,"sourceUnit":9295,"src":"72:66:66","symbolAliases":[{"foreign":{"id":13041,"name":"Context","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9294,"src":"80:7:66","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/dao/IDAO.sol","file":"../../dao/IDAO.sol","id":13044,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13097,"sourceUnit":10866,"src":"140:40:66","symbolAliases":[{"foreign":{"id":13043,"name":"IDAO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10865,"src":"148:4:66","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/permission/auth/auth.sol","file":"./auth.sol","id":13046,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13097,"sourceUnit":13212,"src":"181:33:66","symbolAliases":[{"foreign":{"id":13045,"name":"_auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13211,"src":"189:5:66","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":13048,"name":"Context","nameLocations":["560:7:66"],"nodeType":"IdentifierPath","referencedDeclaration":9294,"src":"560:7:66"},"id":13049,"nodeType":"InheritanceSpecifier","src":"560:7:66"}],"canonicalName":"DaoAuthorizable","contractDependencies":[],"contractKind":"contract","documentation":{"id":13047,"nodeType":"StructuredDocumentation","src":"216:307:66","text":"@title DaoAuthorizable\n @author Aragon X - 2022-2023\n @notice An abstract contract providing a meta-transaction compatible modifier for non-upgradeable contracts instantiated via the `new` keyword to authorize function calls through an associated DAO.\n @custom:security-contact sirt@aragon.org"},"fullyImplemented":true,"id":13096,"linearizedBaseContracts":[13096,9294],"name":"DaoAuthorizable","nameLocation":"541:15:66","nodeType":"ContractDefinition","nodes":[{"constant":false,"documentation":{"id":13050,"nodeType":"StructuredDocumentation","src":"574:80:66","text":"@notice The associated DAO managing the permissions of inheriting contracts."},"id":13053,"mutability":"immutable","name":"DAO","nameLocation":"682:3:66","nodeType":"VariableDeclaration","scope":13096,"src":"659:26:66","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"},"typeName":{"id":13052,"nodeType":"UserDefinedTypeName","pathNode":{"id":13051,"name":"IDAO","nameLocations":["659:4:66"],"nodeType":"IdentifierPath","referencedDeclaration":10865,"src":"659:4:66"},"referencedDeclaration":10865,"src":"659:4:66","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}},"visibility":"private"},{"body":{"id":13064,"nodeType":"Block","src":"834:27:66","statements":[{"expression":{"id":13062,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13060,"name":"DAO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13053,"src":"844:3:66","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":13061,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13057,"src":"850:4:66","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}},"src":"844:10:66","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}},"id":13063,"nodeType":"ExpressionStatement","src":"844:10:66"}]},"documentation":{"id":13054,"nodeType":"StructuredDocumentation","src":"692:114:66","text":"@notice Constructs the contract by setting the associated DAO.\n @param _dao The associated DAO address."},"id":13065,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":13058,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13057,"mutability":"mutable","name":"_dao","nameLocation":"828:4:66","nodeType":"VariableDeclaration","scope":13065,"src":"823:9:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"},"typeName":{"id":13056,"nodeType":"UserDefinedTypeName","pathNode":{"id":13055,"name":"IDAO","nameLocations":["823:4:66"],"nodeType":"IdentifierPath","referencedDeclaration":10865,"src":"823:4:66"},"referencedDeclaration":10865,"src":"823:4:66","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}},"visibility":"internal"}],"src":"822:11:66"},"returnParameters":{"id":13059,"nodeType":"ParameterList","parameters":[],"src":"834:0:66"},"scope":13096,"src":"811:50:66","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":13074,"nodeType":"Block","src":"985:27:66","statements":[{"expression":{"id":13072,"name":"DAO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13053,"src":"1002:3:66","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}},"functionReturnParameters":13071,"id":13073,"nodeType":"Return","src":"995:10:66"}]},"documentation":{"id":13066,"nodeType":"StructuredDocumentation","src":"867:71:66","text":"@notice Returns the DAO contract.\n @return The DAO contract."},"functionSelector":"4162169f","id":13075,"implemented":true,"kind":"function","modifiers":[],"name":"dao","nameLocation":"952:3:66","nodeType":"FunctionDefinition","parameters":{"id":13067,"nodeType":"ParameterList","parameters":[],"src":"955:2:66"},"returnParameters":{"id":13071,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13070,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13075,"src":"979:4:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"},"typeName":{"id":13069,"nodeType":"UserDefinedTypeName","pathNode":{"id":13068,"name":"IDAO","nameLocations":["979:4:66"],"nodeType":"IdentifierPath","referencedDeclaration":10865,"src":"979:4:66"},"referencedDeclaration":10865,"src":"979:4:66","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}},"visibility":"internal"}],"src":"978:6:66"},"scope":13096,"src":"943:69:66","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":13094,"nodeType":"Block","src":"1342:94:66","statements":[{"expression":{"arguments":[{"id":13081,"name":"DAO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13053,"src":"1358:3:66","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}},{"arguments":[{"id":13084,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967268,"src":"1371:4:66","typeDescriptions":{"typeIdentifier":"t_contract$_DaoAuthorizable_$13096","typeString":"contract DaoAuthorizable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_DaoAuthorizable_$13096","typeString":"contract DaoAuthorizable"}],"id":13083,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1363:7:66","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":13082,"name":"address","nodeType":"ElementaryTypeName","src":"1363:7:66","typeDescriptions":{}}},"id":13085,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1363:13:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[],"expression":{"argumentTypes":[],"id":13086,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9276,"src":"1378:10:66","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":13087,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1378:12:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13088,"name":"_permissionId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13078,"src":"1392:13:66","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[],"expression":{"argumentTypes":[],"id":13089,"name":"_msgData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9285,"src":"1407:8:66","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bytes_calldata_ptr_$","typeString":"function () view returns (bytes calldata)"}},"id":13090,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1407:10:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":13080,"name":"_auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13211,"src":"1352:5:66","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_IDAO_$10865_$_t_address_$_t_address_$_t_bytes32_$_t_bytes_calldata_ptr_$returns$__$","typeString":"function (contract IDAO,address,address,bytes32,bytes calldata) view"}},"id":13091,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1352:66:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13092,"nodeType":"ExpressionStatement","src":"1352:66:66"},{"id":13093,"nodeType":"PlaceholderStatement","src":"1428:1:66"}]},"documentation":{"id":13076,"nodeType":"StructuredDocumentation","src":"1018:282:66","text":"@notice A modifier to make functions on inheriting contracts authorized. Permissions to call the function are checked through the associated DAO's permission manager.\n @param _permissionId The permission identifier required to call the method this modifier is applied to."},"id":13095,"name":"auth","nameLocation":"1314:4:66","nodeType":"ModifierDefinition","parameters":{"id":13079,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13078,"mutability":"mutable","name":"_permissionId","nameLocation":"1327:13:66","nodeType":"VariableDeclaration","scope":13095,"src":"1319:21:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":13077,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1319:7:66","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1318:23:66"},"src":"1305:131:66","virtual":false,"visibility":"internal"}],"scope":13097,"src":"523:915:66","usedErrors":[]}],"src":"47:1392:66"},"id":66},"src/permission/auth/DaoAuthorizableUpgradeable.sol":{"ast":{"absolutePath":"src/permission/auth/DaoAuthorizableUpgradeable.sol","exportedSymbols":{"ContextUpgradeable":[2593],"DaoAuthorizableUpgradeable":[13161],"IDAO":[10865],"_auth":[13211]},"id":13162,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":13098,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:67"},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol","id":13100,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13162,"sourceUnit":2594,"src":"72:100:67","symbolAliases":[{"foreign":{"id":13099,"name":"ContextUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2593,"src":"80:18:67","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/dao/IDAO.sol","file":"../../dao/IDAO.sol","id":13102,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13162,"sourceUnit":10866,"src":"174:40:67","symbolAliases":[{"foreign":{"id":13101,"name":"IDAO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10865,"src":"182:4:67","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/permission/auth/auth.sol","file":"./auth.sol","id":13104,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13162,"sourceUnit":13212,"src":"215:33:67","symbolAliases":[{"foreign":{"id":13103,"name":"_auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13211,"src":"223:5:67","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":13106,"name":"ContextUpgradeable","nameLocations":["703:18:67"],"nodeType":"IdentifierPath","referencedDeclaration":2593,"src":"703:18:67"},"id":13107,"nodeType":"InheritanceSpecifier","src":"703:18:67"}],"canonicalName":"DaoAuthorizableUpgradeable","contractDependencies":[],"contractKind":"contract","documentation":{"id":13105,"nodeType":"StructuredDocumentation","src":"250:405:67","text":"@title DaoAuthorizableUpgradeable\n @author Aragon X - 2022-2023\n @notice An abstract contract providing a meta-transaction compatible modifier for upgradeable or cloneable contracts to authorize function calls through an associated DAO.\n @dev Make sure to call `__DaoAuthorizableUpgradeable_init` during initialization of the inheriting contract.\n @custom:security-contact sirt@aragon.org"},"fullyImplemented":true,"id":13161,"linearizedBaseContracts":[13161,2593,534],"name":"DaoAuthorizableUpgradeable","nameLocation":"673:26:67","nodeType":"ContractDefinition","nodes":[{"constant":false,"documentation":{"id":13108,"nodeType":"StructuredDocumentation","src":"728:80:67","text":"@notice The associated DAO managing the permissions of inheriting contracts."},"id":13111,"mutability":"mutable","name":"dao_","nameLocation":"826:4:67","nodeType":"VariableDeclaration","scope":13161,"src":"813:17:67","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"},"typeName":{"id":13110,"nodeType":"UserDefinedTypeName","pathNode":{"id":13109,"name":"IDAO","nameLocations":["813:4:67"],"nodeType":"IdentifierPath","referencedDeclaration":10865,"src":"813:4:67"},"referencedDeclaration":10865,"src":"813:4:67","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}},"visibility":"private"},{"body":{"id":13124,"nodeType":"Block","src":"1090:28:67","statements":[{"expression":{"id":13122,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13120,"name":"dao_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13111,"src":"1100:4:67","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":13121,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13115,"src":"1107:4:67","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}},"src":"1100:11:67","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}},"id":13123,"nodeType":"ExpressionStatement","src":"1100:11:67"}]},"documentation":{"id":13112,"nodeType":"StructuredDocumentation","src":"837:115:67","text":"@notice Initializes the contract by setting the associated DAO.\n @param _dao The associated DAO address."},"id":13125,"implemented":true,"kind":"function","modifiers":[{"id":13118,"kind":"modifierInvocation","modifierName":{"id":13117,"name":"onlyInitializing","nameLocations":["1073:16:67"],"nodeType":"IdentifierPath","referencedDeclaration":479,"src":"1073:16:67"},"nodeType":"ModifierInvocation","src":"1073:16:67"}],"name":"__DaoAuthorizableUpgradeable_init","nameLocation":"1019:33:67","nodeType":"FunctionDefinition","parameters":{"id":13116,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13115,"mutability":"mutable","name":"_dao","nameLocation":"1058:4:67","nodeType":"VariableDeclaration","scope":13125,"src":"1053:9:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"},"typeName":{"id":13114,"nodeType":"UserDefinedTypeName","pathNode":{"id":13113,"name":"IDAO","nameLocations":["1053:4:67"],"nodeType":"IdentifierPath","referencedDeclaration":10865,"src":"1053:4:67"},"referencedDeclaration":10865,"src":"1053:4:67","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}},"visibility":"internal"}],"src":"1052:11:67"},"returnParameters":{"id":13119,"nodeType":"ParameterList","parameters":[],"src":"1090:0:67"},"scope":13161,"src":"1010:108:67","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":13134,"nodeType":"Block","src":"1242:28:67","statements":[{"expression":{"id":13132,"name":"dao_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13111,"src":"1259:4:67","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}},"functionReturnParameters":13131,"id":13133,"nodeType":"Return","src":"1252:11:67"}]},"documentation":{"id":13126,"nodeType":"StructuredDocumentation","src":"1124:71:67","text":"@notice Returns the DAO contract.\n @return The DAO contract."},"functionSelector":"4162169f","id":13135,"implemented":true,"kind":"function","modifiers":[],"name":"dao","nameLocation":"1209:3:67","nodeType":"FunctionDefinition","parameters":{"id":13127,"nodeType":"ParameterList","parameters":[],"src":"1212:2:67"},"returnParameters":{"id":13131,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13130,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13135,"src":"1236:4:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"},"typeName":{"id":13129,"nodeType":"UserDefinedTypeName","pathNode":{"id":13128,"name":"IDAO","nameLocations":["1236:4:67"],"nodeType":"IdentifierPath","referencedDeclaration":10865,"src":"1236:4:67"},"referencedDeclaration":10865,"src":"1236:4:67","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}},"visibility":"internal"}],"src":"1235:6:67"},"scope":13161,"src":"1200:70:67","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":13154,"nodeType":"Block","src":"1600:95:67","statements":[{"expression":{"arguments":[{"id":13141,"name":"dao_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13111,"src":"1616:4:67","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}},{"arguments":[{"id":13144,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967268,"src":"1630:4:67","typeDescriptions":{"typeIdentifier":"t_contract$_DaoAuthorizableUpgradeable_$13161","typeString":"contract DaoAuthorizableUpgradeable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_DaoAuthorizableUpgradeable_$13161","typeString":"contract DaoAuthorizableUpgradeable"}],"id":13143,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1622:7:67","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":13142,"name":"address","nodeType":"ElementaryTypeName","src":"1622:7:67","typeDescriptions":{}}},"id":13145,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1622:13:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[],"expression":{"argumentTypes":[],"id":13146,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2570,"src":"1637:10:67","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":13147,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1637:12:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13148,"name":"_permissionId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13138,"src":"1651:13:67","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[],"expression":{"argumentTypes":[],"id":13149,"name":"_msgData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2579,"src":"1666:8:67","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bytes_calldata_ptr_$","typeString":"function () view returns (bytes calldata)"}},"id":13150,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1666:10:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":13140,"name":"_auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13211,"src":"1610:5:67","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_IDAO_$10865_$_t_address_$_t_address_$_t_bytes32_$_t_bytes_calldata_ptr_$returns$__$","typeString":"function (contract IDAO,address,address,bytes32,bytes calldata) view"}},"id":13151,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1610:67:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13152,"nodeType":"ExpressionStatement","src":"1610:67:67"},{"id":13153,"nodeType":"PlaceholderStatement","src":"1687:1:67"}]},"documentation":{"id":13136,"nodeType":"StructuredDocumentation","src":"1276:282:67","text":"@notice A modifier to make functions on inheriting contracts authorized. Permissions to call the function are checked through the associated DAO's permission manager.\n @param _permissionId The permission identifier required to call the method this modifier is applied to."},"id":13155,"name":"auth","nameLocation":"1572:4:67","nodeType":"ModifierDefinition","parameters":{"id":13139,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13138,"mutability":"mutable","name":"_permissionId","nameLocation":"1585:13:67","nodeType":"VariableDeclaration","scope":13155,"src":"1577:21:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":13137,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1577:7:67","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1576:23:67"},"src":"1563:132:67","virtual":false,"visibility":"internal"},{"constant":false,"documentation":{"id":13156,"nodeType":"StructuredDocumentation","src":"1701:273:67","text":"@notice This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain (see [OpenZeppelin's guide about storage gaps](https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps))."},"id":13160,"mutability":"mutable","name":"__gap","nameLocation":"1999:5:67","nodeType":"VariableDeclaration","scope":13161,"src":"1979:25:67","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$49_storage","typeString":"uint256[49]"},"typeName":{"baseType":{"id":13157,"name":"uint256","nodeType":"ElementaryTypeName","src":"1979:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13159,"length":{"hexValue":"3439","id":13158,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1987:2:67","typeDescriptions":{"typeIdentifier":"t_rational_49_by_1","typeString":"int_const 49"},"value":"49"},"nodeType":"ArrayTypeName","src":"1979:11:67","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$49_storage_ptr","typeString":"uint256[49]"}},"visibility":"private"}],"scope":13162,"src":"655:1352:67","usedErrors":[]}],"src":"47:1961:67"},"id":67},"src/permission/auth/auth.sol":{"ast":{"absolutePath":"src/permission/auth/auth.sol","exportedSymbols":{"DaoUnauthorized":[13176],"IDAO":[10865],"_auth":[13211]},"id":13212,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":13163,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:68"},{"absolutePath":"src/dao/IDAO.sol","file":"../../dao/IDAO.sol","id":13165,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13212,"sourceUnit":10866,"src":"72:40:68","symbolAliases":[{"foreign":{"id":13164,"name":"IDAO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10865,"src":"80:4:68","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"documentation":{"id":13166,"nodeType":"StructuredDocumentation","src":"114:289:68","text":"@notice Thrown if a call is unauthorized in the associated DAO.\n @param dao The associated DAO.\n @param where The context in which the authorization reverted.\n @param who The address (EOA or contract) missing the permission.\n @param permissionId The permission identifier."},"errorSelector":"32dbe3b4","id":13176,"name":"DaoUnauthorized","nameLocation":"409:15:68","nodeType":"ErrorDefinition","parameters":{"id":13175,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13168,"mutability":"mutable","name":"dao","nameLocation":"433:3:68","nodeType":"VariableDeclaration","scope":13176,"src":"425:11:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13167,"name":"address","nodeType":"ElementaryTypeName","src":"425:7:68","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13170,"mutability":"mutable","name":"where","nameLocation":"446:5:68","nodeType":"VariableDeclaration","scope":13176,"src":"438:13:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13169,"name":"address","nodeType":"ElementaryTypeName","src":"438:7:68","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13172,"mutability":"mutable","name":"who","nameLocation":"461:3:68","nodeType":"VariableDeclaration","scope":13176,"src":"453:11:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13171,"name":"address","nodeType":"ElementaryTypeName","src":"453:7:68","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13174,"mutability":"mutable","name":"permissionId","nameLocation":"474:12:68","nodeType":"VariableDeclaration","scope":13176,"src":"466:20:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":13173,"name":"bytes32","nodeType":"ElementaryTypeName","src":"466:7:68","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"424:63:68"},"src":"403:85:68"},{"body":{"id":13210,"nodeType":"Block","src":"1169:235:68","statements":[{"condition":{"id":13198,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"1179:55:68","subExpression":{"arguments":[{"id":13193,"name":"_where","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13182,"src":"1199:6:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13194,"name":"_who","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13184,"src":"1207:4:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13195,"name":"_permissionId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13186,"src":"1213:13:68","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":13196,"name":"_data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13188,"src":"1228:5:68","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"id":13191,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13180,"src":"1180:4:68","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}},"id":13192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1185:13:68","memberName":"hasPermission","nodeType":"MemberAccess","referencedDeclaration":10738,"src":"1180:18:68","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (address,address,bytes32,bytes memory) view external returns (bool)"}},"id":13197,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1180:54:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13209,"nodeType":"IfStatement","src":"1175:226:68","trueBody":{"errorCall":{"arguments":[{"arguments":[{"id":13202,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13180,"src":"1294:4:68","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}],"id":13201,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1286:7:68","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":13200,"name":"address","nodeType":"ElementaryTypeName","src":"1286:7:68","typeDescriptions":{}}},"id":13203,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1286:13:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13204,"name":"_where","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13182,"src":"1320:6:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13205,"name":"_who","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13184,"src":"1345:4:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13206,"name":"_permissionId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13186,"src":"1377:13:68","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":13199,"name":"DaoUnauthorized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13176,"src":"1251:15:68","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_address_$_t_address_$_t_bytes32_$returns$__$","typeString":"function (address,address,address,bytes32) pure"}},"id":13207,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":["1281:3:68","1313:5:68","1340:3:68","1363:12:68"],"names":["dao","where","who","permissionId"],"nodeType":"FunctionCall","src":"1251:150:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13208,"nodeType":"RevertStatement","src":"1244:157:68"}}]},"documentation":{"id":13177,"nodeType":"StructuredDocumentation","src":"490:551:68","text":"@notice A free function checking if a caller is granted permissions on a target contract via a permission identifier that redirects the approval to a `PermissionCondition` if this was specified in the setup.\n @param _where The address of the target contract for which `who` receives permission.\n @param _who The address (EOA or contract) owning the permission.\n @param _permissionId The permission identifier.\n @param _data The optional data passed to the `PermissionCondition` registered.\n @custom:security-contact sirt@aragon.org"},"id":13211,"implemented":true,"kind":"freeFunction","modifiers":[],"name":"_auth","nameLocation":"1050:5:68","nodeType":"FunctionDefinition","parameters":{"id":13189,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13180,"mutability":"mutable","name":"_dao","nameLocation":"1066:4:68","nodeType":"VariableDeclaration","scope":13211,"src":"1061:9:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"},"typeName":{"id":13179,"nodeType":"UserDefinedTypeName","pathNode":{"id":13178,"name":"IDAO","nameLocations":["1061:4:68"],"nodeType":"IdentifierPath","referencedDeclaration":10865,"src":"1061:4:68"},"referencedDeclaration":10865,"src":"1061:4:68","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}},"visibility":"internal"},{"constant":false,"id":13182,"mutability":"mutable","name":"_where","nameLocation":"1084:6:68","nodeType":"VariableDeclaration","scope":13211,"src":"1076:14:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13181,"name":"address","nodeType":"ElementaryTypeName","src":"1076:7:68","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13184,"mutability":"mutable","name":"_who","nameLocation":"1104:4:68","nodeType":"VariableDeclaration","scope":13211,"src":"1096:12:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13183,"name":"address","nodeType":"ElementaryTypeName","src":"1096:7:68","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13186,"mutability":"mutable","name":"_permissionId","nameLocation":"1122:13:68","nodeType":"VariableDeclaration","scope":13211,"src":"1114:21:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":13185,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1114:7:68","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":13188,"mutability":"mutable","name":"_data","nameLocation":"1156:5:68","nodeType":"VariableDeclaration","scope":13211,"src":"1141:20:68","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":13187,"name":"bytes","nodeType":"ElementaryTypeName","src":"1141:5:68","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1055:108:68"},"returnParameters":{"id":13190,"nodeType":"ParameterList","parameters":[],"src":"1169:0:68"},"scope":13212,"src":"1041:363:68","stateMutability":"view","virtual":false,"visibility":"internal"}],"src":"47:1358:68"},"id":68},"src/permission/condition/IPermissionCondition.sol":{"ast":{"absolutePath":"src/permission/condition/IPermissionCondition.sol","exportedSymbols":{"IPermissionCondition":[13229]},"id":13230,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":13213,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:69"},{"abstract":false,"baseContracts":[],"canonicalName":"IPermissionCondition","contractDependencies":[],"contractKind":"interface","documentation":{"id":13214,"nodeType":"StructuredDocumentation","src":"72:364:69","text":"@title IPermissionCondition\n @author Aragon X - 2021-2023\n @notice An interface to be implemented to support custom permission logic.\n @dev To attach a condition to a permission, the `grantWithCondition` function must be used and refer to the implementing contract's address with the `condition` argument.\n @custom:security-contact sirt@aragon.org"},"fullyImplemented":false,"id":13229,"linearizedBaseContracts":[13229],"name":"IPermissionCondition","nameLocation":"446:20:69","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":13215,"nodeType":"StructuredDocumentation","src":"473:399:69","text":"@notice Checks if a call is permitted.\n @param _where The address of the target contract.\n @param _who The address (EOA or contract) for which the permissions are checked.\n @param _permissionId The permission identifier.\n @param _data Optional data passed to the `PermissionCondition` implementation.\n @return isPermitted Returns true if the call is permitted."},"functionSelector":"2675fdd0","id":13228,"implemented":false,"kind":"function","modifiers":[],"name":"isGranted","nameLocation":"886:9:69","nodeType":"FunctionDefinition","parameters":{"id":13224,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13217,"mutability":"mutable","name":"_where","nameLocation":"913:6:69","nodeType":"VariableDeclaration","scope":13228,"src":"905:14:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13216,"name":"address","nodeType":"ElementaryTypeName","src":"905:7:69","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13219,"mutability":"mutable","name":"_who","nameLocation":"937:4:69","nodeType":"VariableDeclaration","scope":13228,"src":"929:12:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13218,"name":"address","nodeType":"ElementaryTypeName","src":"929:7:69","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13221,"mutability":"mutable","name":"_permissionId","nameLocation":"959:13:69","nodeType":"VariableDeclaration","scope":13228,"src":"951:21:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":13220,"name":"bytes32","nodeType":"ElementaryTypeName","src":"951:7:69","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":13223,"mutability":"mutable","name":"_data","nameLocation":"997:5:69","nodeType":"VariableDeclaration","scope":13228,"src":"982:20:69","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":13222,"name":"bytes","nodeType":"ElementaryTypeName","src":"982:5:69","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"895:113:69"},"returnParameters":{"id":13227,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13226,"mutability":"mutable","name":"isPermitted","nameLocation":"1037:11:69","nodeType":"VariableDeclaration","scope":13228,"src":"1032:16:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":13225,"name":"bool","nodeType":"ElementaryTypeName","src":"1032:4:69","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1031:18:69"},"scope":13229,"src":"877:173:69","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":13230,"src":"436:616:69","usedErrors":[]}],"src":"47:1006:69"},"id":69},"src/permission/condition/PermissionCondition.sol":{"ast":{"absolutePath":"src/permission/condition/PermissionCondition.sol","exportedSymbols":{"ERC165":[9731],"IPermissionCondition":[13229],"IProtocolVersion":[14744],"PermissionCondition":[13276],"ProtocolVersion":[14766]},"id":13277,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":13231,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:70"},{"absolutePath":"@openzeppelin/contracts/utils/introspection/ERC165.sol","file":"@openzeppelin/contracts/utils/introspection/ERC165.sol","id":13233,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13277,"sourceUnit":9732,"src":"72:78:70","symbolAliases":[{"foreign":{"id":13232,"name":"ERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9731,"src":"80:6:70","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/utils/versioning/IProtocolVersion.sol","file":"../../utils/versioning/IProtocolVersion.sol","id":13235,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13277,"sourceUnit":14745,"src":"152:77:70","symbolAliases":[{"foreign":{"id":13234,"name":"IProtocolVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14744,"src":"160:16:70","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/utils/versioning/ProtocolVersion.sol","file":"../../utils/versioning/ProtocolVersion.sol","id":13237,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13277,"sourceUnit":14767,"src":"230:75:70","symbolAliases":[{"foreign":{"id":13236,"name":"ProtocolVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14766,"src":"238:15:70","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/permission/condition/IPermissionCondition.sol","file":"./IPermissionCondition.sol","id":13239,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13277,"sourceUnit":13230,"src":"306:64:70","symbolAliases":[{"foreign":{"id":13238,"name":"IPermissionCondition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13229,"src":"314:20:70","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":13241,"name":"ERC165","nameLocations":["704:6:70"],"nodeType":"IdentifierPath","referencedDeclaration":9731,"src":"704:6:70"},"id":13242,"nodeType":"InheritanceSpecifier","src":"704:6:70"},{"baseName":{"id":13243,"name":"IPermissionCondition","nameLocations":["712:20:70"],"nodeType":"IdentifierPath","referencedDeclaration":13229,"src":"712:20:70"},"id":13244,"nodeType":"InheritanceSpecifier","src":"712:20:70"},{"baseName":{"id":13245,"name":"ProtocolVersion","nameLocations":["734:15:70"],"nodeType":"IdentifierPath","referencedDeclaration":14766,"src":"734:15:70"},"id":13246,"nodeType":"InheritanceSpecifier","src":"734:15:70"}],"canonicalName":"PermissionCondition","contractDependencies":[],"contractKind":"contract","documentation":{"id":13240,"nodeType":"StructuredDocumentation","src":"372:291:70","text":"@title PermissionCondition\n @author Aragon X - 2023\n @notice An abstract contract for non-upgradeable contracts instantiated via the `new` keyword to inherit from to support customary permissions depending on arbitrary on-chain state.\n @custom:security-contact sirt@aragon.org"},"fullyImplemented":false,"id":13276,"linearizedBaseContracts":[13276,14766,14744,13229,9731,9743],"name":"PermissionCondition","nameLocation":"681:19:70","nodeType":"ContractDefinition","nodes":[{"baseFunctions":[9730],"body":{"id":13274,"nodeType":"Block","src":"1047:209:70","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":13272,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":13267,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":13260,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13255,"name":"_interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13249,"src":"1076:12:70","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":13257,"name":"IPermissionCondition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13229,"src":"1097:20:70","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IPermissionCondition_$13229_$","typeString":"type(contract IPermissionCondition)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IPermissionCondition_$13229_$","typeString":"type(contract IPermissionCondition)"}],"id":13256,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"1092:4:70","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":13258,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1092:26:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IPermissionCondition_$13229","typeString":"type(contract IPermissionCondition)"}},"id":13259,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1119:11:70","memberName":"interfaceId","nodeType":"MemberAccess","src":"1092:38:70","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"1076:54:70","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":13266,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13261,"name":"_interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13249,"src":"1146:12:70","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":13263,"name":"IProtocolVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14744,"src":"1167:16:70","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IProtocolVersion_$14744_$","typeString":"type(contract IProtocolVersion)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IProtocolVersion_$14744_$","typeString":"type(contract IProtocolVersion)"}],"id":13262,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"1162:4:70","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":13264,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1162:22:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IProtocolVersion_$14744","typeString":"type(contract IProtocolVersion)"}},"id":13265,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1185:11:70","memberName":"interfaceId","nodeType":"MemberAccess","src":"1162:34:70","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"1146:50:70","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1076:120:70","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":13270,"name":"_interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13249,"src":"1236:12:70","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":13268,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967271,"src":"1212:5:70","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_PermissionCondition_$13276_$","typeString":"type(contract super PermissionCondition)"}},"id":13269,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1218:17:70","memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":9730,"src":"1212:23:70","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bool_$","typeString":"function (bytes4) view returns (bool)"}},"id":13271,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1212:37:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1076:173:70","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":13254,"id":13273,"nodeType":"Return","src":"1057:192:70"}]},"documentation":{"id":13247,"nodeType":"StructuredDocumentation","src":"756:194:70","text":"@notice Checks if an interface is supported by this or its parent contract.\n @param _interfaceId The ID of the interface.\n @return Returns `true` if the interface is supported."},"functionSelector":"01ffc9a7","id":13275,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"964:17:70","nodeType":"FunctionDefinition","overrides":{"id":13251,"nodeType":"OverrideSpecifier","overrides":[],"src":"1023:8:70"},"parameters":{"id":13250,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13249,"mutability":"mutable","name":"_interfaceId","nameLocation":"989:12:70","nodeType":"VariableDeclaration","scope":13275,"src":"982:19:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":13248,"name":"bytes4","nodeType":"ElementaryTypeName","src":"982:6:70","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"981:21:70"},"returnParameters":{"id":13254,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13253,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13275,"src":"1041:4:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":13252,"name":"bool","nodeType":"ElementaryTypeName","src":"1041:4:70","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1040:6:70"},"scope":13276,"src":"955:301:70","stateMutability":"view","virtual":true,"visibility":"public"}],"scope":13277,"src":"663:595:70","usedErrors":[]}],"src":"47:1212:70"},"id":70},"src/permission/condition/PermissionConditionUpgradeable.sol":{"ast":{"absolutePath":"src/permission/condition/PermissionConditionUpgradeable.sol","exportedSymbols":{"ERC165Upgradeable":[2822],"IPermissionCondition":[13229],"IProtocolVersion":[14744],"PermissionConditionUpgradeable":[13323],"ProtocolVersion":[14766]},"id":13324,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":13278,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:71"},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol","file":"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol","id":13280,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13324,"sourceUnit":2823,"src":"72:112:71","symbolAliases":[{"foreign":{"id":13279,"name":"ERC165Upgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2822,"src":"80:17:71","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/utils/versioning/IProtocolVersion.sol","file":"../../utils/versioning/IProtocolVersion.sol","id":13282,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13324,"sourceUnit":14745,"src":"186:77:71","symbolAliases":[{"foreign":{"id":13281,"name":"IProtocolVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14744,"src":"194:16:71","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/utils/versioning/ProtocolVersion.sol","file":"../../utils/versioning/ProtocolVersion.sol","id":13284,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13324,"sourceUnit":14767,"src":"264:75:71","symbolAliases":[{"foreign":{"id":13283,"name":"ProtocolVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14766,"src":"272:15:71","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/permission/condition/IPermissionCondition.sol","file":"./IPermissionCondition.sol","id":13286,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13324,"sourceUnit":13230,"src":"340:64:71","symbolAliases":[{"foreign":{"id":13285,"name":"IPermissionCondition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13229,"src":"348:20:71","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":13288,"name":"ERC165Upgradeable","nameLocations":["741:17:71"],"nodeType":"IdentifierPath","referencedDeclaration":2822,"src":"741:17:71"},"id":13289,"nodeType":"InheritanceSpecifier","src":"741:17:71"},{"baseName":{"id":13290,"name":"IPermissionCondition","nameLocations":["764:20:71"],"nodeType":"IdentifierPath","referencedDeclaration":13229,"src":"764:20:71"},"id":13291,"nodeType":"InheritanceSpecifier","src":"764:20:71"},{"baseName":{"id":13292,"name":"ProtocolVersion","nameLocations":["790:15:71"],"nodeType":"IdentifierPath","referencedDeclaration":14766,"src":"790:15:71"},"id":13293,"nodeType":"InheritanceSpecifier","src":"790:15:71"}],"canonicalName":"PermissionConditionUpgradeable","contractDependencies":[],"contractKind":"contract","documentation":{"id":13287,"nodeType":"StructuredDocumentation","src":"406:279:71","text":"@title PermissionConditionUpgradeable\n @author Aragon X - 2023\n @notice An abstract contract for upgradeable or cloneable contracts to inherit from and to support customary permissions depending on arbitrary on-chain state.\n @custom:security-contact sirt@aragon.org"},"fullyImplemented":false,"id":13323,"linearizedBaseContracts":[13323,14766,14744,13229,2822,2834,534],"name":"PermissionConditionUpgradeable","nameLocation":"703:30:71","nodeType":"ContractDefinition","nodes":[{"baseFunctions":[2816],"body":{"id":13321,"nodeType":"Block","src":"1103:209:71","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":13319,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":13314,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":13307,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13302,"name":"_interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13296,"src":"1132:12:71","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":13304,"name":"IPermissionCondition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13229,"src":"1153:20:71","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IPermissionCondition_$13229_$","typeString":"type(contract IPermissionCondition)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IPermissionCondition_$13229_$","typeString":"type(contract IPermissionCondition)"}],"id":13303,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"1148:4:71","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":13305,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1148:26:71","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IPermissionCondition_$13229","typeString":"type(contract IPermissionCondition)"}},"id":13306,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1175:11:71","memberName":"interfaceId","nodeType":"MemberAccess","src":"1148:38:71","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"1132:54:71","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":13313,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13308,"name":"_interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13296,"src":"1202:12:71","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":13310,"name":"IProtocolVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14744,"src":"1223:16:71","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IProtocolVersion_$14744_$","typeString":"type(contract IProtocolVersion)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IProtocolVersion_$14744_$","typeString":"type(contract IProtocolVersion)"}],"id":13309,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"1218:4:71","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":13311,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1218:22:71","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IProtocolVersion_$14744","typeString":"type(contract IProtocolVersion)"}},"id":13312,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1241:11:71","memberName":"interfaceId","nodeType":"MemberAccess","src":"1218:34:71","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"1202:50:71","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1132:120:71","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":13317,"name":"_interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13296,"src":"1292:12:71","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":13315,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967271,"src":"1268:5:71","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_PermissionConditionUpgradeable_$13323_$","typeString":"type(contract super PermissionConditionUpgradeable)"}},"id":13316,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1274:17:71","memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":2816,"src":"1268:23:71","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bool_$","typeString":"function (bytes4) view returns (bool)"}},"id":13318,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1268:37:71","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1132:173:71","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":13301,"id":13320,"nodeType":"Return","src":"1113:192:71"}]},"documentation":{"id":13294,"nodeType":"StructuredDocumentation","src":"812:194:71","text":"@notice Checks if an interface is supported by this or its parent contract.\n @param _interfaceId The ID of the interface.\n @return Returns `true` if the interface is supported."},"functionSelector":"01ffc9a7","id":13322,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"1020:17:71","nodeType":"FunctionDefinition","overrides":{"id":13298,"nodeType":"OverrideSpecifier","overrides":[],"src":"1079:8:71"},"parameters":{"id":13297,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13296,"mutability":"mutable","name":"_interfaceId","nameLocation":"1045:12:71","nodeType":"VariableDeclaration","scope":13322,"src":"1038:19:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":13295,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1038:6:71","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"1037:21:71"},"returnParameters":{"id":13301,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13300,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13322,"src":"1097:4:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":13299,"name":"bool","nodeType":"ElementaryTypeName","src":"1097:4:71","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1096:6:71"},"scope":13323,"src":"1011:301:71","stateMutability":"view","virtual":true,"visibility":"public"}],"scope":13324,"src":"685:629:71","usedErrors":[]}],"src":"47:1268:71"},"id":71},"src/plugin/IPlugin.sol":{"ast":{"absolutePath":"src/plugin/IPlugin.sol","exportedSymbols":{"IPlugin":[13338]},"id":13339,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":13325,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:72"},{"abstract":false,"baseContracts":[],"canonicalName":"IPlugin","contractDependencies":[],"contractKind":"interface","documentation":{"id":13326,"nodeType":"StructuredDocumentation","src":"72:155:72","text":"@title IPlugin\n @author Aragon X - 2022-2023\n @notice An interface defining the traits of a plugin.\n @custom:security-contact sirt@aragon.org"},"fullyImplemented":false,"id":13338,"linearizedBaseContracts":[13338],"name":"IPlugin","nameLocation":"237:7:72","nodeType":"ContractDefinition","nodes":[{"canonicalName":"IPlugin.PluginType","id":13330,"members":[{"id":13327,"name":"UUPS","nameLocation":"277:4:72","nodeType":"EnumValue","src":"277:4:72"},{"id":13328,"name":"Cloneable","nameLocation":"291:9:72","nodeType":"EnumValue","src":"291:9:72"},{"id":13329,"name":"Constructable","nameLocation":"310:13:72","nodeType":"EnumValue","src":"310:13:72"}],"name":"PluginType","nameLocation":"256:10:72","nodeType":"EnumDefinition","src":"251:78:72"},{"documentation":{"id":13331,"nodeType":"StructuredDocumentation","src":"335:37:72","text":"@notice Returns the plugin's type"},"functionSelector":"41de6830","id":13337,"implemented":false,"kind":"function","modifiers":[],"name":"pluginType","nameLocation":"386:10:72","nodeType":"FunctionDefinition","parameters":{"id":13332,"nodeType":"ParameterList","parameters":[],"src":"396:2:72"},"returnParameters":{"id":13336,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13335,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13337,"src":"422:10:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_PluginType_$13330","typeString":"enum IPlugin.PluginType"},"typeName":{"id":13334,"nodeType":"UserDefinedTypeName","pathNode":{"id":13333,"name":"PluginType","nameLocations":["422:10:72"],"nodeType":"IdentifierPath","referencedDeclaration":13330,"src":"422:10:72"},"referencedDeclaration":13330,"src":"422:10:72","typeDescriptions":{"typeIdentifier":"t_enum$_PluginType_$13330","typeString":"enum IPlugin.PluginType"}},"visibility":"internal"}],"src":"421:12:72"},"scope":13338,"src":"377:57:72","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":13339,"src":"227:209:72","usedErrors":[]}],"src":"47:390:72"},"id":72},"src/plugin/Plugin.sol":{"ast":{"absolutePath":"src/plugin/Plugin.sol","exportedSymbols":{"DaoAuthorizable":[13096],"ERC165":[9731],"IDAO":[10865],"IPlugin":[13338],"IProtocolVersion":[14744],"Plugin":[13414],"ProtocolVersion":[14766]},"id":13415,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":13340,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:73"},{"absolutePath":"@openzeppelin/contracts/utils/introspection/ERC165.sol","file":"@openzeppelin/contracts/utils/introspection/ERC165.sol","id":13342,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13415,"sourceUnit":9732,"src":"72:78:73","symbolAliases":[{"foreign":{"id":13341,"name":"ERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9731,"src":"80:6:73","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/utils/versioning/IProtocolVersion.sol","file":"../utils/versioning/IProtocolVersion.sol","id":13344,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13415,"sourceUnit":14745,"src":"152:74:73","symbolAliases":[{"foreign":{"id":13343,"name":"IProtocolVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14744,"src":"160:16:73","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/utils/versioning/ProtocolVersion.sol","file":"../utils/versioning/ProtocolVersion.sol","id":13346,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13415,"sourceUnit":14767,"src":"227:72:73","symbolAliases":[{"foreign":{"id":13345,"name":"ProtocolVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14766,"src":"235:15:73","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/permission/auth/DaoAuthorizable.sol","file":"../permission/auth/DaoAuthorizable.sol","id":13348,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13415,"sourceUnit":13097,"src":"300:71:73","symbolAliases":[{"foreign":{"id":13347,"name":"DaoAuthorizable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13096,"src":"308:15:73","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/dao/IDAO.sol","file":"../dao/IDAO.sol","id":13350,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13415,"sourceUnit":10866,"src":"372:37:73","symbolAliases":[{"foreign":{"id":13349,"name":"IDAO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10865,"src":"380:4:73","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/plugin/IPlugin.sol","file":"./IPlugin.sol","id":13352,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13415,"sourceUnit":13339,"src":"410:38:73","symbolAliases":[{"foreign":{"id":13351,"name":"IPlugin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13338,"src":"418:7:73","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":13354,"name":"IPlugin","nameLocations":["701:7:73"],"nodeType":"IdentifierPath","referencedDeclaration":13338,"src":"701:7:73"},"id":13355,"nodeType":"InheritanceSpecifier","src":"701:7:73"},{"baseName":{"id":13356,"name":"ERC165","nameLocations":["710:6:73"],"nodeType":"IdentifierPath","referencedDeclaration":9731,"src":"710:6:73"},"id":13357,"nodeType":"InheritanceSpecifier","src":"710:6:73"},{"baseName":{"id":13358,"name":"DaoAuthorizable","nameLocations":["718:15:73"],"nodeType":"IdentifierPath","referencedDeclaration":13096,"src":"718:15:73"},"id":13359,"nodeType":"InheritanceSpecifier","src":"718:15:73"},{"baseName":{"id":13360,"name":"ProtocolVersion","nameLocations":["735:15:73"],"nodeType":"IdentifierPath","referencedDeclaration":14766,"src":"735:15:73"},"id":13361,"nodeType":"InheritanceSpecifier","src":"735:15:73"}],"canonicalName":"Plugin","contractDependencies":[],"contractKind":"contract","documentation":{"id":13353,"nodeType":"StructuredDocumentation","src":"450:223:73","text":"@title Plugin\n @author Aragon X - 2022-2023\n @notice An abstract, non-upgradeable contract to inherit from when creating a plugin being deployed via the `new` keyword.\n @custom:security-contact sirt@aragon.org"},"fullyImplemented":true,"id":13414,"linearizedBaseContracts":[13414,14766,14744,13096,9294,9731,9743,13338],"name":"Plugin","nameLocation":"691:6:73","nodeType":"ContractDefinition","nodes":[{"body":{"id":13371,"nodeType":"Block","src":"909:2:73","statements":[]},"documentation":{"id":13362,"nodeType":"StructuredDocumentation","src":"757:102:73","text":"@notice Constructs the plugin by storing the associated DAO.\n @param _dao The DAO contract."},"id":13372,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":13368,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13365,"src":"903:4:73","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}}],"id":13369,"kind":"baseConstructorSpecifier","modifierName":{"id":13367,"name":"DaoAuthorizable","nameLocations":["887:15:73"],"nodeType":"IdentifierPath","referencedDeclaration":13096,"src":"887:15:73"},"nodeType":"ModifierInvocation","src":"887:21:73"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":13366,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13365,"mutability":"mutable","name":"_dao","nameLocation":"881:4:73","nodeType":"VariableDeclaration","scope":13372,"src":"876:9:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"},"typeName":{"id":13364,"nodeType":"UserDefinedTypeName","pathNode":{"id":13363,"name":"IDAO","nameLocations":["876:4:73"],"nodeType":"IdentifierPath","referencedDeclaration":10865,"src":"876:4:73"},"referencedDeclaration":10865,"src":"876:4:73","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}},"visibility":"internal"}],"src":"875:11:73"},"returnParameters":{"id":13370,"nodeType":"ParameterList","parameters":[],"src":"909:0:73"},"scope":13414,"src":"864:47:73","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[13337],"body":{"id":13383,"nodeType":"Block","src":"1009:48:73","statements":[{"expression":{"expression":{"id":13380,"name":"PluginType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13330,"src":"1026:10:73","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_PluginType_$13330_$","typeString":"type(enum IPlugin.PluginType)"}},"id":13381,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1037:13:73","memberName":"Constructable","nodeType":"MemberAccess","referencedDeclaration":13329,"src":"1026:24:73","typeDescriptions":{"typeIdentifier":"t_enum$_PluginType_$13330","typeString":"enum IPlugin.PluginType"}},"functionReturnParameters":13379,"id":13382,"nodeType":"Return","src":"1019:31:73"}]},"documentation":{"id":13373,"nodeType":"StructuredDocumentation","src":"917:23:73","text":"@inheritdoc IPlugin"},"functionSelector":"41de6830","id":13384,"implemented":true,"kind":"function","modifiers":[],"name":"pluginType","nameLocation":"954:10:73","nodeType":"FunctionDefinition","overrides":{"id":13375,"nodeType":"OverrideSpecifier","overrides":[],"src":"979:8:73"},"parameters":{"id":13374,"nodeType":"ParameterList","parameters":[],"src":"964:2:73"},"returnParameters":{"id":13379,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13378,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13384,"src":"997:10:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_PluginType_$13330","typeString":"enum IPlugin.PluginType"},"typeName":{"id":13377,"nodeType":"UserDefinedTypeName","pathNode":{"id":13376,"name":"PluginType","nameLocations":["997:10:73"],"nodeType":"IdentifierPath","referencedDeclaration":13330,"src":"997:10:73"},"referencedDeclaration":13330,"src":"997:10:73","typeDescriptions":{"typeIdentifier":"t_enum$_PluginType_$13330","typeString":"enum IPlugin.PluginType"}},"visibility":"internal"}],"src":"996:12:73"},"scope":13414,"src":"945:112:73","stateMutability":"pure","virtual":false,"visibility":"public"},{"baseFunctions":[9730],"body":{"id":13412,"nodeType":"Block","src":"1357:196:73","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":13410,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":13405,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":13398,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13393,"name":"_interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13387,"src":"1386:12:73","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":13395,"name":"IPlugin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13338,"src":"1407:7:73","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IPlugin_$13338_$","typeString":"type(contract IPlugin)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IPlugin_$13338_$","typeString":"type(contract IPlugin)"}],"id":13394,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"1402:4:73","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":13396,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1402:13:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IPlugin_$13338","typeString":"type(contract IPlugin)"}},"id":13397,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1416:11:73","memberName":"interfaceId","nodeType":"MemberAccess","src":"1402:25:73","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"1386:41:73","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":13404,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13399,"name":"_interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13387,"src":"1443:12:73","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":13401,"name":"IProtocolVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14744,"src":"1464:16:73","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IProtocolVersion_$14744_$","typeString":"type(contract IProtocolVersion)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IProtocolVersion_$14744_$","typeString":"type(contract IProtocolVersion)"}],"id":13400,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"1459:4:73","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":13402,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1459:22:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IProtocolVersion_$14744","typeString":"type(contract IProtocolVersion)"}},"id":13403,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1482:11:73","memberName":"interfaceId","nodeType":"MemberAccess","src":"1459:34:73","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"1443:50:73","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1386:107:73","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":13408,"name":"_interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13387,"src":"1533:12:73","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":13406,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967271,"src":"1509:5:73","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_Plugin_$13414_$","typeString":"type(contract super Plugin)"}},"id":13407,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1515:17:73","memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":9730,"src":"1509:23:73","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bool_$","typeString":"function (bytes4) view returns (bool)"}},"id":13409,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1509:37:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1386:160:73","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":13392,"id":13411,"nodeType":"Return","src":"1367:179:73"}]},"documentation":{"id":13385,"nodeType":"StructuredDocumentation","src":"1063:197:73","text":"@notice Checks if this or the parent contract supports an interface by its ID.\n @param _interfaceId The ID of the interface.\n @return Returns `true` if the interface is supported."},"functionSelector":"01ffc9a7","id":13413,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"1274:17:73","nodeType":"FunctionDefinition","overrides":{"id":13389,"nodeType":"OverrideSpecifier","overrides":[],"src":"1333:8:73"},"parameters":{"id":13388,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13387,"mutability":"mutable","name":"_interfaceId","nameLocation":"1299:12:73","nodeType":"VariableDeclaration","scope":13413,"src":"1292:19:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":13386,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1292:6:73","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"1291:21:73"},"returnParameters":{"id":13392,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13391,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13413,"src":"1351:4:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":13390,"name":"bool","nodeType":"ElementaryTypeName","src":"1351:4:73","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1350:6:73"},"scope":13414,"src":"1265:288:73","stateMutability":"view","virtual":true,"visibility":"public"}],"scope":13415,"src":"673:882:73","usedErrors":[]}],"src":"47:1509:73"},"id":73},"src/plugin/PluginCloneable.sol":{"ast":{"absolutePath":"src/plugin/PluginCloneable.sol","exportedSymbols":{"DaoAuthorizableUpgradeable":[13161],"ERC165Upgradeable":[2822],"IDAO":[10865],"IPlugin":[13338],"IProtocolVersion":[14744],"PluginCloneable":[13501],"ProtocolVersion":[14766]},"id":13502,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":13416,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:74"},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol","file":"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol","id":13418,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13502,"sourceUnit":2823,"src":"72:112:74","symbolAliases":[{"foreign":{"id":13417,"name":"ERC165Upgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2822,"src":"80:17:74","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/utils/versioning/IProtocolVersion.sol","file":"../utils/versioning/IProtocolVersion.sol","id":13420,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13502,"sourceUnit":14745,"src":"186:74:74","symbolAliases":[{"foreign":{"id":13419,"name":"IProtocolVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14744,"src":"194:16:74","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/utils/versioning/ProtocolVersion.sol","file":"../utils/versioning/ProtocolVersion.sol","id":13422,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13502,"sourceUnit":14767,"src":"261:72:74","symbolAliases":[{"foreign":{"id":13421,"name":"ProtocolVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14766,"src":"269:15:74","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/permission/auth/DaoAuthorizableUpgradeable.sol","file":"../permission/auth/DaoAuthorizableUpgradeable.sol","id":13424,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13502,"sourceUnit":13162,"src":"334:93:74","symbolAliases":[{"foreign":{"id":13423,"name":"DaoAuthorizableUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13161,"src":"342:26:74","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/dao/IDAO.sol","file":"../dao/IDAO.sol","id":13426,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13502,"sourceUnit":10866,"src":"428:37:74","symbolAliases":[{"foreign":{"id":13425,"name":"IDAO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10865,"src":"436:4:74","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/plugin/IPlugin.sol","file":"./IPlugin.sol","id":13428,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13502,"sourceUnit":13339,"src":"466:38:74","symbolAliases":[{"foreign":{"id":13427,"name":"IPlugin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13338,"src":"474:7:74","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":13430,"name":"IPlugin","nameLocations":["846:7:74"],"nodeType":"IdentifierPath","referencedDeclaration":13338,"src":"846:7:74"},"id":13431,"nodeType":"InheritanceSpecifier","src":"846:7:74"},{"baseName":{"id":13432,"name":"ERC165Upgradeable","nameLocations":["859:17:74"],"nodeType":"IdentifierPath","referencedDeclaration":2822,"src":"859:17:74"},"id":13433,"nodeType":"InheritanceSpecifier","src":"859:17:74"},{"baseName":{"id":13434,"name":"DaoAuthorizableUpgradeable","nameLocations":["882:26:74"],"nodeType":"IdentifierPath","referencedDeclaration":13161,"src":"882:26:74"},"id":13435,"nodeType":"InheritanceSpecifier","src":"882:26:74"},{"baseName":{"id":13436,"name":"ProtocolVersion","nameLocations":["914:15:74"],"nodeType":"IdentifierPath","referencedDeclaration":14766,"src":"914:15:74"},"id":13437,"nodeType":"InheritanceSpecifier","src":"914:15:74"}],"canonicalName":"PluginCloneable","contractDependencies":[],"contractKind":"contract","documentation":{"id":13429,"nodeType":"StructuredDocumentation","src":"506:299:74","text":"@title PluginCloneable\n @author Aragon X - 2022-2023\n @notice An abstract, non-upgradeable contract to inherit from when creating a plugin being deployed via the minimal clones pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)).\n @custom:security-contact sirt@aragon.org"},"fullyImplemented":true,"id":13501,"linearizedBaseContracts":[13501,14766,14744,13161,2593,2822,2834,534,13338],"name":"PluginCloneable","nameLocation":"823:15:74","nodeType":"ContractDefinition","nodes":[{"body":{"id":13444,"nodeType":"Block","src":"1121:39:74","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":13441,"name":"_disableInitializers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":515,"src":"1131:20:74","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":13442,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1131:22:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13443,"nodeType":"ExpressionStatement","src":"1131:22:74"}]},"documentation":{"id":13438,"nodeType":"StructuredDocumentation","src":"936:166:74","text":"@notice Disables the initializers on the implementation contract to prevent it from being left uninitialized.\n @custom:oz-upgrades-unsafe-allow constructor"},"id":13445,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":13439,"nodeType":"ParameterList","parameters":[],"src":"1118:2:74"},"returnParameters":{"id":13440,"nodeType":"ParameterList","parameters":[],"src":"1121:0:74"},"scope":13501,"src":"1107:53:74","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":13458,"nodeType":"Block","src":"1404:56:74","statements":[{"expression":{"arguments":[{"id":13455,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13449,"src":"1448:4:74","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}],"id":13454,"name":"__DaoAuthorizableUpgradeable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13125,"src":"1414:33:74","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IDAO_$10865_$returns$__$","typeString":"function (contract IDAO)"}},"id":13456,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1414:39:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13457,"nodeType":"ExpressionStatement","src":"1414:39:74"}]},"documentation":{"id":13446,"nodeType":"StructuredDocumentation","src":"1166:103:74","text":"@notice Initializes the plugin by storing the associated DAO.\n @param _dao The DAO contract."},"id":13459,"implemented":true,"kind":"function","modifiers":[{"id":13452,"kind":"modifierInvocation","modifierName":{"id":13451,"name":"onlyInitializing","nameLocations":["1387:16:74"],"nodeType":"IdentifierPath","referencedDeclaration":479,"src":"1387:16:74"},"nodeType":"ModifierInvocation","src":"1387:16:74"}],"name":"__PluginCloneable_init","nameLocation":"1336:22:74","nodeType":"FunctionDefinition","parameters":{"id":13450,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13449,"mutability":"mutable","name":"_dao","nameLocation":"1364:4:74","nodeType":"VariableDeclaration","scope":13459,"src":"1359:9:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"},"typeName":{"id":13448,"nodeType":"UserDefinedTypeName","pathNode":{"id":13447,"name":"IDAO","nameLocations":["1359:4:74"],"nodeType":"IdentifierPath","referencedDeclaration":10865,"src":"1359:4:74"},"referencedDeclaration":10865,"src":"1359:4:74","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}},"visibility":"internal"}],"src":"1358:11:74"},"returnParameters":{"id":13453,"nodeType":"ParameterList","parameters":[],"src":"1404:0:74"},"scope":13501,"src":"1327:133:74","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"baseFunctions":[13337],"body":{"id":13470,"nodeType":"Block","src":"1558:44:74","statements":[{"expression":{"expression":{"id":13467,"name":"PluginType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13330,"src":"1575:10:74","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_PluginType_$13330_$","typeString":"type(enum IPlugin.PluginType)"}},"id":13468,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1586:9:74","memberName":"Cloneable","nodeType":"MemberAccess","referencedDeclaration":13328,"src":"1575:20:74","typeDescriptions":{"typeIdentifier":"t_enum$_PluginType_$13330","typeString":"enum IPlugin.PluginType"}},"functionReturnParameters":13466,"id":13469,"nodeType":"Return","src":"1568:27:74"}]},"documentation":{"id":13460,"nodeType":"StructuredDocumentation","src":"1466:23:74","text":"@inheritdoc IPlugin"},"functionSelector":"41de6830","id":13471,"implemented":true,"kind":"function","modifiers":[],"name":"pluginType","nameLocation":"1503:10:74","nodeType":"FunctionDefinition","overrides":{"id":13462,"nodeType":"OverrideSpecifier","overrides":[],"src":"1528:8:74"},"parameters":{"id":13461,"nodeType":"ParameterList","parameters":[],"src":"1513:2:74"},"returnParameters":{"id":13466,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13465,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13471,"src":"1546:10:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_PluginType_$13330","typeString":"enum IPlugin.PluginType"},"typeName":{"id":13464,"nodeType":"UserDefinedTypeName","pathNode":{"id":13463,"name":"PluginType","nameLocations":["1546:10:74"],"nodeType":"IdentifierPath","referencedDeclaration":13330,"src":"1546:10:74"},"referencedDeclaration":13330,"src":"1546:10:74","typeDescriptions":{"typeIdentifier":"t_enum$_PluginType_$13330","typeString":"enum IPlugin.PluginType"}},"visibility":"internal"}],"src":"1545:12:74"},"scope":13501,"src":"1494:108:74","stateMutability":"pure","virtual":false,"visibility":"public"},{"baseFunctions":[2816],"body":{"id":13499,"nodeType":"Block","src":"1902:196:74","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":13497,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":13492,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":13485,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13480,"name":"_interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13474,"src":"1931:12:74","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":13482,"name":"IPlugin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13338,"src":"1952:7:74","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IPlugin_$13338_$","typeString":"type(contract IPlugin)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IPlugin_$13338_$","typeString":"type(contract IPlugin)"}],"id":13481,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"1947:4:74","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":13483,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1947:13:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IPlugin_$13338","typeString":"type(contract IPlugin)"}},"id":13484,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1961:11:74","memberName":"interfaceId","nodeType":"MemberAccess","src":"1947:25:74","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"1931:41:74","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":13491,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13486,"name":"_interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13474,"src":"1988:12:74","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":13488,"name":"IProtocolVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14744,"src":"2009:16:74","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IProtocolVersion_$14744_$","typeString":"type(contract IProtocolVersion)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IProtocolVersion_$14744_$","typeString":"type(contract IProtocolVersion)"}],"id":13487,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"2004:4:74","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":13489,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2004:22:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IProtocolVersion_$14744","typeString":"type(contract IProtocolVersion)"}},"id":13490,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2027:11:74","memberName":"interfaceId","nodeType":"MemberAccess","src":"2004:34:74","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"1988:50:74","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1931:107:74","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":13495,"name":"_interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13474,"src":"2078:12:74","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":13493,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967271,"src":"2054:5:74","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_PluginCloneable_$13501_$","typeString":"type(contract super PluginCloneable)"}},"id":13494,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2060:17:74","memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":2816,"src":"2054:23:74","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bool_$","typeString":"function (bytes4) view returns (bool)"}},"id":13496,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2054:37:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1931:160:74","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":13479,"id":13498,"nodeType":"Return","src":"1912:179:74"}]},"documentation":{"id":13472,"nodeType":"StructuredDocumentation","src":"1608:197:74","text":"@notice Checks if this or the parent contract supports an interface by its ID.\n @param _interfaceId The ID of the interface.\n @return Returns `true` if the interface is supported."},"functionSelector":"01ffc9a7","id":13500,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"1819:17:74","nodeType":"FunctionDefinition","overrides":{"id":13476,"nodeType":"OverrideSpecifier","overrides":[],"src":"1878:8:74"},"parameters":{"id":13475,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13474,"mutability":"mutable","name":"_interfaceId","nameLocation":"1844:12:74","nodeType":"VariableDeclaration","scope":13500,"src":"1837:19:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":13473,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1837:6:74","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"1836:21:74"},"returnParameters":{"id":13479,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13478,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13500,"src":"1896:4:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":13477,"name":"bool","nodeType":"ElementaryTypeName","src":"1896:4:74","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1895:6:74"},"scope":13501,"src":"1810:288:74","stateMutability":"view","virtual":true,"visibility":"public"}],"scope":13502,"src":"805:1295:74","usedErrors":[]}],"src":"47:2054:74"},"id":74},"src/plugin/PluginUUPSUpgradeable.sol":{"ast":{"absolutePath":"src/plugin/PluginUUPSUpgradeable.sol","exportedSymbols":{"DaoAuthorizableUpgradeable":[13161],"ERC165Upgradeable":[2822],"IDAO":[10865],"IERC1822ProxiableUpgradeable":[30],"IPlugin":[13338],"IProtocolVersion":[14744],"PluginUUPSUpgradeable":[13633],"ProtocolVersion":[14766],"UUPSUpgradeable":[671]},"id":13634,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":13503,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:75"},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol","id":13505,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13634,"sourceUnit":672,"src":"72:100:75","symbolAliases":[{"foreign":{"id":13504,"name":"UUPSUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":671,"src":"80:15:75","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol","file":"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol","id":13507,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13634,"sourceUnit":31,"src":"173:122:75","symbolAliases":[{"foreign":{"id":13506,"name":"IERC1822ProxiableUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30,"src":"181:28:75","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol","file":"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol","id":13509,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13634,"sourceUnit":2823,"src":"296:112:75","symbolAliases":[{"foreign":{"id":13508,"name":"ERC165Upgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2822,"src":"304:17:75","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/utils/versioning/IProtocolVersion.sol","file":"../utils/versioning/IProtocolVersion.sol","id":13511,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13634,"sourceUnit":14745,"src":"410:74:75","symbolAliases":[{"foreign":{"id":13510,"name":"IProtocolVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14744,"src":"418:16:75","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/utils/versioning/ProtocolVersion.sol","file":"../utils/versioning/ProtocolVersion.sol","id":13513,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13634,"sourceUnit":14767,"src":"485:72:75","symbolAliases":[{"foreign":{"id":13512,"name":"ProtocolVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14766,"src":"493:15:75","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/permission/auth/DaoAuthorizableUpgradeable.sol","file":"../permission/auth/DaoAuthorizableUpgradeable.sol","id":13515,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13634,"sourceUnit":13162,"src":"558:93:75","symbolAliases":[{"foreign":{"id":13514,"name":"DaoAuthorizableUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13161,"src":"566:26:75","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/dao/IDAO.sol","file":"../dao/IDAO.sol","id":13517,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13634,"sourceUnit":10866,"src":"652:37:75","symbolAliases":[{"foreign":{"id":13516,"name":"IDAO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10865,"src":"660:4:75","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/plugin/IPlugin.sol","file":"./IPlugin.sol","id":13519,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13634,"sourceUnit":13339,"src":"690:38:75","symbolAliases":[{"foreign":{"id":13518,"name":"IPlugin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13338,"src":"698:7:75","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":13521,"name":"IPlugin","nameLocations":["1068:7:75"],"nodeType":"IdentifierPath","referencedDeclaration":13338,"src":"1068:7:75"},"id":13522,"nodeType":"InheritanceSpecifier","src":"1068:7:75"},{"baseName":{"id":13523,"name":"ERC165Upgradeable","nameLocations":["1081:17:75"],"nodeType":"IdentifierPath","referencedDeclaration":2822,"src":"1081:17:75"},"id":13524,"nodeType":"InheritanceSpecifier","src":"1081:17:75"},{"baseName":{"id":13525,"name":"UUPSUpgradeable","nameLocations":["1104:15:75"],"nodeType":"IdentifierPath","referencedDeclaration":671,"src":"1104:15:75"},"id":13526,"nodeType":"InheritanceSpecifier","src":"1104:15:75"},{"baseName":{"id":13527,"name":"DaoAuthorizableUpgradeable","nameLocations":["1125:26:75"],"nodeType":"IdentifierPath","referencedDeclaration":13161,"src":"1125:26:75"},"id":13528,"nodeType":"InheritanceSpecifier","src":"1125:26:75"},{"baseName":{"id":13529,"name":"ProtocolVersion","nameLocations":["1157:15:75"],"nodeType":"IdentifierPath","referencedDeclaration":14766,"src":"1157:15:75"},"id":13530,"nodeType":"InheritanceSpecifier","src":"1157:15:75"}],"canonicalName":"PluginUUPSUpgradeable","contractDependencies":[],"contractKind":"contract","documentation":{"id":13520,"nodeType":"StructuredDocumentation","src":"730:291:75","text":"@title PluginUUPSUpgradeable\n @author Aragon X - 2022-2023\n @notice An abstract, upgradeable contract to inherit from when creating a plugin being deployed via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\n @custom:security-contact sirt@aragon.org"},"fullyImplemented":true,"id":13633,"linearizedBaseContracts":[13633,14766,14744,13161,2593,671,355,20,30,2822,2834,534,13338],"name":"PluginUUPSUpgradeable","nameLocation":"1039:21:75","nodeType":"ContractDefinition","nodes":[{"body":{"id":13537,"nodeType":"Block","src":"1479:39:75","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":13534,"name":"_disableInitializers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":515,"src":"1489:20:75","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":13535,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1489:22:75","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13536,"nodeType":"ExpressionStatement","src":"1489:22:75"}]},"documentation":{"id":13531,"nodeType":"StructuredDocumentation","src":"1294:166:75","text":"@notice Disables the initializers on the implementation contract to prevent it from being left uninitialized.\n @custom:oz-upgrades-unsafe-allow constructor"},"id":13538,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":13532,"nodeType":"ParameterList","parameters":[],"src":"1476:2:75"},"returnParameters":{"id":13533,"nodeType":"ParameterList","parameters":[],"src":"1479:0:75"},"scope":13633,"src":"1465:53:75","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[13337],"body":{"id":13549,"nodeType":"Block","src":"1616:39:75","statements":[{"expression":{"expression":{"id":13546,"name":"PluginType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13330,"src":"1633:10:75","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_PluginType_$13330_$","typeString":"type(enum IPlugin.PluginType)"}},"id":13547,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1644:4:75","memberName":"UUPS","nodeType":"MemberAccess","referencedDeclaration":13327,"src":"1633:15:75","typeDescriptions":{"typeIdentifier":"t_enum$_PluginType_$13330","typeString":"enum IPlugin.PluginType"}},"functionReturnParameters":13545,"id":13548,"nodeType":"Return","src":"1626:22:75"}]},"documentation":{"id":13539,"nodeType":"StructuredDocumentation","src":"1524:23:75","text":"@inheritdoc IPlugin"},"functionSelector":"41de6830","id":13550,"implemented":true,"kind":"function","modifiers":[],"name":"pluginType","nameLocation":"1561:10:75","nodeType":"FunctionDefinition","overrides":{"id":13541,"nodeType":"OverrideSpecifier","overrides":[],"src":"1586:8:75"},"parameters":{"id":13540,"nodeType":"ParameterList","parameters":[],"src":"1571:2:75"},"returnParameters":{"id":13545,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13544,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13550,"src":"1604:10:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_PluginType_$13330","typeString":"enum IPlugin.PluginType"},"typeName":{"id":13543,"nodeType":"UserDefinedTypeName","pathNode":{"id":13542,"name":"PluginType","nameLocations":["1604:10:75"],"nodeType":"IdentifierPath","referencedDeclaration":13330,"src":"1604:10:75"},"referencedDeclaration":13330,"src":"1604:10:75","typeDescriptions":{"typeIdentifier":"t_enum$_PluginType_$13330","typeString":"enum IPlugin.PluginType"}},"visibility":"internal"}],"src":"1603:12:75"},"scope":13633,"src":"1552:103:75","stateMutability":"pure","virtual":false,"visibility":"public"},{"constant":true,"documentation":{"id":13551,"nodeType":"StructuredDocumentation","src":"1661:87:75","text":"@notice The ID of the permission required to call the `_authorizeUpgrade` function."},"functionSelector":"c9c4bfca","id":13556,"mutability":"constant","name":"UPGRADE_PLUGIN_PERMISSION_ID","nameLocation":"1777:28:75","nodeType":"VariableDeclaration","scope":13633,"src":"1753:93:75","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":13552,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1753:7:75","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"555047524144455f504c5547494e5f5045524d495353494f4e","id":13554,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1818:27:75","typeDescriptions":{"typeIdentifier":"t_stringliteral_821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f5","typeString":"literal_string \"UPGRADE_PLUGIN_PERMISSION\""},"value":"UPGRADE_PLUGIN_PERMISSION"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f5","typeString":"literal_string \"UPGRADE_PLUGIN_PERMISSION\""}],"id":13553,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967288,"src":"1808:9:75","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":13555,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1808:38:75","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"public"},{"body":{"id":13569,"nodeType":"Block","src":"2097:56:75","statements":[{"expression":{"arguments":[{"id":13566,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13560,"src":"2141:4:75","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}],"id":13565,"name":"__DaoAuthorizableUpgradeable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13125,"src":"2107:33:75","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IDAO_$10865_$returns$__$","typeString":"function (contract IDAO)"}},"id":13567,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2107:39:75","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13568,"nodeType":"ExpressionStatement","src":"2107:39:75"}]},"documentation":{"id":13557,"nodeType":"StructuredDocumentation","src":"1853:103:75","text":"@notice Initializes the plugin by storing the associated DAO.\n @param _dao The DAO contract."},"id":13570,"implemented":true,"kind":"function","modifiers":[{"id":13563,"kind":"modifierInvocation","modifierName":{"id":13562,"name":"onlyInitializing","nameLocations":["2080:16:75"],"nodeType":"IdentifierPath","referencedDeclaration":479,"src":"2080:16:75"},"nodeType":"ModifierInvocation","src":"2080:16:75"}],"name":"__PluginUUPSUpgradeable_init","nameLocation":"2023:28:75","nodeType":"FunctionDefinition","parameters":{"id":13561,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13560,"mutability":"mutable","name":"_dao","nameLocation":"2057:4:75","nodeType":"VariableDeclaration","scope":13570,"src":"2052:9:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"},"typeName":{"id":13559,"nodeType":"UserDefinedTypeName","pathNode":{"id":13558,"name":"IDAO","nameLocations":["2052:4:75"],"nodeType":"IdentifierPath","referencedDeclaration":10865,"src":"2052:4:75"},"referencedDeclaration":10865,"src":"2052:4:75","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}},"visibility":"internal"}],"src":"2051:11:75"},"returnParameters":{"id":13564,"nodeType":"ParameterList","parameters":[],"src":"2097:0:75"},"scope":13633,"src":"2014:139:75","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"baseFunctions":[2816],"body":{"id":13605,"nodeType":"Block","src":"2450:274:75","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":13603,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":13598,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":13591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":13584,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13579,"name":"_interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13573,"src":"2479:12:75","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":13581,"name":"IPlugin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13338,"src":"2500:7:75","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IPlugin_$13338_$","typeString":"type(contract IPlugin)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IPlugin_$13338_$","typeString":"type(contract IPlugin)"}],"id":13580,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"2495:4:75","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":13582,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2495:13:75","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IPlugin_$13338","typeString":"type(contract IPlugin)"}},"id":13583,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2509:11:75","memberName":"interfaceId","nodeType":"MemberAccess","src":"2495:25:75","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"2479:41:75","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":13590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13585,"name":"_interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13573,"src":"2536:12:75","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":13587,"name":"IProtocolVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14744,"src":"2557:16:75","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IProtocolVersion_$14744_$","typeString":"type(contract IProtocolVersion)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IProtocolVersion_$14744_$","typeString":"type(contract IProtocolVersion)"}],"id":13586,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"2552:4:75","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":13588,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2552:22:75","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IProtocolVersion_$14744","typeString":"type(contract IProtocolVersion)"}},"id":13589,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2575:11:75","memberName":"interfaceId","nodeType":"MemberAccess","src":"2552:34:75","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"2536:50:75","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2479:107:75","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":13597,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13592,"name":"_interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13573,"src":"2602:12:75","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":13594,"name":"IERC1822ProxiableUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30,"src":"2623:28:75","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC1822ProxiableUpgradeable_$30_$","typeString":"type(contract IERC1822ProxiableUpgradeable)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC1822ProxiableUpgradeable_$30_$","typeString":"type(contract IERC1822ProxiableUpgradeable)"}],"id":13593,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"2618:4:75","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":13595,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2618:34:75","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC1822ProxiableUpgradeable_$30","typeString":"type(contract IERC1822ProxiableUpgradeable)"}},"id":13596,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2653:11:75","memberName":"interfaceId","nodeType":"MemberAccess","src":"2618:46:75","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"2602:62:75","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2479:185:75","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":13601,"name":"_interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13573,"src":"2704:12:75","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":13599,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967271,"src":"2680:5:75","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_PluginUUPSUpgradeable_$13633_$","typeString":"type(contract super PluginUUPSUpgradeable)"}},"id":13600,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2686:17:75","memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":2816,"src":"2680:23:75","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bool_$","typeString":"function (bytes4) view returns (bool)"}},"id":13602,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2680:37:75","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2479:238:75","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":13578,"id":13604,"nodeType":"Return","src":"2460:257:75"}]},"documentation":{"id":13571,"nodeType":"StructuredDocumentation","src":"2159:194:75","text":"@notice Checks if an interface is supported by this or its parent contract.\n @param _interfaceId The ID of the interface.\n @return Returns `true` if the interface is supported."},"functionSelector":"01ffc9a7","id":13606,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"2367:17:75","nodeType":"FunctionDefinition","overrides":{"id":13575,"nodeType":"OverrideSpecifier","overrides":[],"src":"2426:8:75"},"parameters":{"id":13574,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13573,"mutability":"mutable","name":"_interfaceId","nameLocation":"2392:12:75","nodeType":"VariableDeclaration","scope":13606,"src":"2385:19:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":13572,"name":"bytes4","nodeType":"ElementaryTypeName","src":"2385:6:75","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"2384:21:75"},"returnParameters":{"id":13578,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13577,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13606,"src":"2444:4:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":13576,"name":"bool","nodeType":"ElementaryTypeName","src":"2444:4:75","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2443:6:75"},"scope":13633,"src":"2358:366:75","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":13615,"nodeType":"Block","src":"3061:44:75","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":13612,"name":"_getImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76,"src":"3078:18:75","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":13613,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3078:20:75","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":13611,"id":13614,"nodeType":"Return","src":"3071:27:75"}]},"documentation":{"id":13607,"nodeType":"StructuredDocumentation","src":"2730:270:75","text":"@notice Returns the address of the implementation contract in the [proxy storage slot](https://eips.ethereum.org/EIPS/eip-1967) slot the [UUPS proxy](https://eips.ethereum.org/EIPS/eip-1822) is pointing to.\n @return The address of the implementation contract."},"functionSelector":"5c60da1b","id":13616,"implemented":true,"kind":"function","modifiers":[],"name":"implementation","nameLocation":"3014:14:75","nodeType":"FunctionDefinition","parameters":{"id":13608,"nodeType":"ParameterList","parameters":[],"src":"3028:2:75"},"returnParameters":{"id":13611,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13610,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13616,"src":"3052:7:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13609,"name":"address","nodeType":"ElementaryTypeName","src":"3052:7:75","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3051:9:75"},"scope":13633,"src":"3005:100:75","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[665],"body":{"id":13626,"nodeType":"Block","src":"3642:8:75","statements":[]},"documentation":{"id":13617,"nodeType":"StructuredDocumentation","src":"3111:330:75","text":"@notice Internal method authorizing the upgrade of the contract via the [upgradeability mechanism for UUPS proxies](https://docs.openzeppelin.com/contracts/4.x/api/proxy#UUPSUpgradeable) (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\n @dev The caller must have the `UPGRADE_PLUGIN_PERMISSION_ID` permission."},"id":13627,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":13623,"name":"UPGRADE_PLUGIN_PERMISSION_ID","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13556,"src":"3559:28:75","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":13624,"kind":"modifierInvocation","modifierName":{"id":13622,"name":"auth","nameLocations":["3554:4:75"],"nodeType":"IdentifierPath","referencedDeclaration":13155,"src":"3554:4:75"},"nodeType":"ModifierInvocation","src":"3554:34:75"}],"name":"_authorizeUpgrade","nameLocation":"3455:17:75","nodeType":"FunctionDefinition","overrides":{"id":13621,"nodeType":"OverrideSpecifier","overrides":[],"src":"3537:8:75"},"parameters":{"id":13620,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13619,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13627,"src":"3482:7:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13618,"name":"address","nodeType":"ElementaryTypeName","src":"3482:7:75","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3472:23:75"},"returnParameters":{"id":13625,"nodeType":"ParameterList","parameters":[],"src":"3642:0:75"},"scope":13633,"src":"3446:204:75","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"constant":false,"documentation":{"id":13628,"nodeType":"StructuredDocumentation","src":"3656:273:75","text":"@notice This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain (see [OpenZeppelin's guide about storage gaps](https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps))."},"id":13632,"mutability":"mutable","name":"__gap","nameLocation":"3954:5:75","nodeType":"VariableDeclaration","scope":13633,"src":"3934:25:75","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$50_storage","typeString":"uint256[50]"},"typeName":{"baseType":{"id":13629,"name":"uint256","nodeType":"ElementaryTypeName","src":"3934:7:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13631,"length":{"hexValue":"3530","id":13630,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3942:2:75","typeDescriptions":{"typeIdentifier":"t_rational_50_by_1","typeString":"int_const 50"},"value":"50"},"nodeType":"ArrayTypeName","src":"3934:11:75","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$50_storage_ptr","typeString":"uint256[50]"}},"visibility":"private"}],"scope":13634,"src":"1021:2941:75","usedErrors":[13176]}],"src":"47:3916:75"},"id":75},"src/plugin/extensions/governance/Addresslist.sol":{"ast":{"absolutePath":"src/plugin/extensions/governance/Addresslist.sol","exportedSymbols":{"Addresslist":[13831],"CheckpointsUpgradeable":[2542],"_uncheckedAdd":[14716],"_uncheckedSub":[14732]},"id":13832,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":13635,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:76"},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/CheckpointsUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/utils/CheckpointsUpgradeable.sol","id":13637,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13832,"sourceUnit":2543,"src":"72:108:76","symbolAliases":[{"foreign":{"id":13636,"name":"CheckpointsUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2542,"src":"80:22:76","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/utils/math/UncheckedMath.sol","file":"../../../utils/math/UncheckedMath.sol","id":13640,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13832,"sourceUnit":14733,"src":"182:83:76","symbolAliases":[{"foreign":{"id":13638,"name":"_uncheckedAdd","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14716,"src":"190:13:76","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":13639,"name":"_uncheckedSub","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14732,"src":"205:13:76","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[],"canonicalName":"Addresslist","contractDependencies":[],"contractKind":"contract","documentation":{"id":13641,"nodeType":"StructuredDocumentation","src":"267:288:76","text":"@title Addresslist\n @author Aragon X - 2021-2023\n @notice The majority voting implementation using a list of member addresses.\n @dev This contract inherits from `MajorityVotingBase` and implements the `IMajorityVoting` interface.\n @custom:security-contact sirt@aragon.org"},"fullyImplemented":true,"id":13831,"linearizedBaseContracts":[13831],"name":"Addresslist","nameLocation":"573:11:76","nodeType":"ContractDefinition","nodes":[{"global":false,"id":13645,"libraryName":{"id":13642,"name":"CheckpointsUpgradeable","nameLocations":["597:22:76"],"nodeType":"IdentifierPath","referencedDeclaration":2542,"src":"597:22:76"},"nodeType":"UsingForDirective","src":"591:64:76","typeName":{"id":13644,"nodeType":"UserDefinedTypeName","pathNode":{"id":13643,"name":"CheckpointsUpgradeable.History","nameLocations":["624:22:76","647:7:76"],"nodeType":"IdentifierPath","referencedDeclaration":1011,"src":"624:30:76"},"referencedDeclaration":1011,"src":"624:30:76","typeDescriptions":{"typeIdentifier":"t_struct$_History_$1011_storage_ptr","typeString":"struct CheckpointsUpgradeable.History"}}},{"constant":false,"documentation":{"id":13646,"nodeType":"StructuredDocumentation","src":"661:80:76","text":"@notice The mapping containing the checkpointed history of the address list."},"id":13651,"mutability":"mutable","name":"_addresslistCheckpoints","nameLocation":"863:23:76","nodeType":"VariableDeclaration","scope":13831,"src":"804:82:76","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_History_$1011_storage_$","typeString":"mapping(address => struct CheckpointsUpgradeable.History)"},"typeName":{"id":13650,"keyType":{"id":13647,"name":"address","nodeType":"ElementaryTypeName","src":"812:7:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"804:50:76","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_History_$1011_storage_$","typeString":"mapping(address => struct CheckpointsUpgradeable.History)"},"valueType":{"id":13649,"nodeType":"UserDefinedTypeName","pathNode":{"id":13648,"name":"CheckpointsUpgradeable.History","nameLocations":["823:22:76","846:7:76"],"nodeType":"IdentifierPath","referencedDeclaration":1011,"src":"823:30:76"},"referencedDeclaration":1011,"src":"823:30:76","typeDescriptions":{"typeIdentifier":"t_struct$_History_$1011_storage_ptr","typeString":"struct CheckpointsUpgradeable.History"}}},"visibility":"private"},{"constant":false,"documentation":{"id":13652,"nodeType":"StructuredDocumentation","src":"893:71:76","text":"@notice The checkpointed history of the length of the address list."},"id":13655,"mutability":"mutable","name":"_addresslistLengthCheckpoints","nameLocation":"1008:29:76","nodeType":"VariableDeclaration","scope":13831,"src":"969:68:76","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_History_$1011_storage","typeString":"struct CheckpointsUpgradeable.History"},"typeName":{"id":13654,"nodeType":"UserDefinedTypeName","pathNode":{"id":13653,"name":"CheckpointsUpgradeable.History","nameLocations":["969:22:76","992:7:76"],"nodeType":"IdentifierPath","referencedDeclaration":1011,"src":"969:30:76"},"referencedDeclaration":1011,"src":"969:30:76","typeDescriptions":{"typeIdentifier":"t_struct$_History_$1011_storage_ptr","typeString":"struct CheckpointsUpgradeable.History"}},"visibility":"private"},{"documentation":{"id":13656,"nodeType":"StructuredDocumentation","src":"1044:230:76","text":"@notice Thrown when the address list update is invalid, which can be caused by the addition of an existing member or removal of a non-existing member.\n @param member The array of member addresses to be added or removed."},"errorSelector":"c0b7477d","id":13660,"name":"InvalidAddresslistUpdate","nameLocation":"1285:24:76","nodeType":"ErrorDefinition","parameters":{"id":13659,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13658,"mutability":"mutable","name":"member","nameLocation":"1318:6:76","nodeType":"VariableDeclaration","scope":13660,"src":"1310:14:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13657,"name":"address","nodeType":"ElementaryTypeName","src":"1310:7:76","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1309:16:76"},"src":"1279:47:76"},{"body":{"id":13679,"nodeType":"Block","src":"1724:87:76","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13677,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":13674,"name":"_blockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13665,"src":"1786:12:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"id":13670,"name":"_addresslistCheckpoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13651,"src":"1741:23:76","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_History_$1011_storage_$","typeString":"mapping(address => struct CheckpointsUpgradeable.History storage ref)"}},"id":13672,"indexExpression":{"id":13671,"name":"_account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13663,"src":"1765:8:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1741:33:76","typeDescriptions":{"typeIdentifier":"t_struct$_History_$1011_storage","typeString":"struct CheckpointsUpgradeable.History storage ref"}},"id":13673,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1775:10:76","memberName":"getAtBlock","nodeType":"MemberAccess","referencedDeclaration":1073,"src":"1741:44:76","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_History_$1011_storage_ptr_$_t_uint256_$returns$_t_uint256_$bound_to$_t_struct$_History_$1011_storage_ptr_$","typeString":"function (struct CheckpointsUpgradeable.History storage pointer,uint256) view returns (uint256)"}},"id":13675,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1741:58:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":13676,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1803:1:76","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1741:63:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":13669,"id":13678,"nodeType":"Return","src":"1734:70:76"}]},"documentation":{"id":13661,"nodeType":"StructuredDocumentation","src":"1332:265:76","text":"@notice Checks if an account is on the address list at a specific block number.\n @param _account The account address being checked.\n @param _blockNumber The block number.\n @return Whether the account is listed at the specified block number."},"functionSelector":"b1bb8d26","id":13680,"implemented":true,"kind":"function","modifiers":[],"name":"isListedAtBlock","nameLocation":"1611:15:76","nodeType":"FunctionDefinition","parameters":{"id":13666,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13663,"mutability":"mutable","name":"_account","nameLocation":"1644:8:76","nodeType":"VariableDeclaration","scope":13680,"src":"1636:16:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13662,"name":"address","nodeType":"ElementaryTypeName","src":"1636:7:76","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13665,"mutability":"mutable","name":"_blockNumber","nameLocation":"1670:12:76","nodeType":"VariableDeclaration","scope":13680,"src":"1662:20:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13664,"name":"uint256","nodeType":"ElementaryTypeName","src":"1662:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1626:62:76"},"returnParameters":{"id":13669,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13668,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13680,"src":"1718:4:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":13667,"name":"bool","nodeType":"ElementaryTypeName","src":"1718:4:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1717:6:76"},"scope":13831,"src":"1602:209:76","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":13696,"nodeType":"Block","src":"2075:71:76","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint224","typeString":"uint224"},"id":13694,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"baseExpression":{"id":13688,"name":"_addresslistCheckpoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13651,"src":"2092:23:76","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_History_$1011_storage_$","typeString":"mapping(address => struct CheckpointsUpgradeable.History storage ref)"}},"id":13690,"indexExpression":{"id":13689,"name":"_account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13683,"src":"2116:8:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2092:33:76","typeDescriptions":{"typeIdentifier":"t_struct$_History_$1011_storage","typeString":"struct CheckpointsUpgradeable.History storage ref"}},"id":13691,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2126:6:76","memberName":"latest","nodeType":"MemberAccess","referencedDeclaration":1265,"src":"2092:40:76","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_History_$1011_storage_ptr_$returns$_t_uint224_$bound_to$_t_struct$_History_$1011_storage_ptr_$","typeString":"function (struct CheckpointsUpgradeable.History storage pointer) view returns (uint224)"}},"id":13692,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2092:42:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":13693,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2138:1:76","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2092:47:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":13687,"id":13695,"nodeType":"Return","src":"2085:54:76"}]},"documentation":{"id":13681,"nodeType":"StructuredDocumentation","src":"1817:182:76","text":"@notice Checks if an account is currently on the address list.\n @param _account The account address being checked.\n @return Whether the account is currently listed."},"functionSelector":"f794062e","id":13697,"implemented":true,"kind":"function","modifiers":[],"name":"isListed","nameLocation":"2013:8:76","nodeType":"FunctionDefinition","parameters":{"id":13684,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13683,"mutability":"mutable","name":"_account","nameLocation":"2030:8:76","nodeType":"VariableDeclaration","scope":13697,"src":"2022:16:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13682,"name":"address","nodeType":"ElementaryTypeName","src":"2022:7:76","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2021:18:76"},"returnParameters":{"id":13687,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13686,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13697,"src":"2069:4:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":13685,"name":"bool","nodeType":"ElementaryTypeName","src":"2069:4:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2068:6:76"},"scope":13831,"src":"2004:142:76","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":13710,"nodeType":"Block","src":"2524:78:76","statements":[{"expression":{"arguments":[{"id":13707,"name":"_blockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13700,"src":"2582:12:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":13705,"name":"_addresslistLengthCheckpoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13655,"src":"2541:29:76","typeDescriptions":{"typeIdentifier":"t_struct$_History_$1011_storage","typeString":"struct CheckpointsUpgradeable.History storage ref"}},"id":13706,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2571:10:76","memberName":"getAtBlock","nodeType":"MemberAccess","referencedDeclaration":1073,"src":"2541:40:76","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_History_$1011_storage_ptr_$_t_uint256_$returns$_t_uint256_$bound_to$_t_struct$_History_$1011_storage_ptr_$","typeString":"function (struct CheckpointsUpgradeable.History storage pointer,uint256) view returns (uint256)"}},"id":13708,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2541:54:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":13704,"id":13709,"nodeType":"Return","src":"2534:61:76"}]},"documentation":{"id":13698,"nodeType":"StructuredDocumentation","src":"2152:273:76","text":"@notice Returns the length of the address list at a specific block number.\n @param _blockNumber The specific block to get the count from. If `0`, then the latest checkpoint value is returned.\n @return The address list length at the specified block number."},"functionSelector":"6a6b2d86","id":13711,"implemented":true,"kind":"function","modifiers":[],"name":"addresslistLengthAtBlock","nameLocation":"2439:24:76","nodeType":"FunctionDefinition","parameters":{"id":13701,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13700,"mutability":"mutable","name":"_blockNumber","nameLocation":"2472:12:76","nodeType":"VariableDeclaration","scope":13711,"src":"2464:20:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13699,"name":"uint256","nodeType":"ElementaryTypeName","src":"2464:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2463:22:76"},"returnParameters":{"id":13704,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13703,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13711,"src":"2515:7:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13702,"name":"uint256","nodeType":"ElementaryTypeName","src":"2515:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2514:9:76"},"scope":13831,"src":"2430:172:76","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":13721,"nodeType":"Block","src":"2788:62:76","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":13717,"name":"_addresslistLengthCheckpoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13655,"src":"2805:29:76","typeDescriptions":{"typeIdentifier":"t_struct$_History_$1011_storage","typeString":"struct CheckpointsUpgradeable.History storage ref"}},"id":13718,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2835:6:76","memberName":"latest","nodeType":"MemberAccess","referencedDeclaration":1265,"src":"2805:36:76","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_History_$1011_storage_ptr_$returns$_t_uint224_$bound_to$_t_struct$_History_$1011_storage_ptr_$","typeString":"function (struct CheckpointsUpgradeable.History storage pointer) view returns (uint224)"}},"id":13719,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2805:38:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"functionReturnParameters":13716,"id":13720,"nodeType":"Return","src":"2798:45:76"}]},"documentation":{"id":13712,"nodeType":"StructuredDocumentation","src":"2608:108:76","text":"@notice Returns the current length of the address list.\n @return The current address list length."},"functionSelector":"27f1608d","id":13722,"implemented":true,"kind":"function","modifiers":[],"name":"addresslistLength","nameLocation":"2730:17:76","nodeType":"FunctionDefinition","parameters":{"id":13713,"nodeType":"ParameterList","parameters":[],"src":"2747:2:76"},"returnParameters":{"id":13716,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13715,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13722,"src":"2779:7:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13714,"name":"uint256","nodeType":"ElementaryTypeName","src":"2779:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2778:9:76"},"scope":13831,"src":"2721:129:76","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":13772,"nodeType":"Block","src":"3066:445:76","statements":[{"body":{"id":13762,"nodeType":"Block","src":"3120:304:76","statements":[{"condition":{"arguments":[{"baseExpression":{"id":13737,"name":"_newAddresses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13726,"src":"3147:13:76","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":13739,"indexExpression":{"id":13738,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13730,"src":"3161:1:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3147:16:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":13736,"name":"isListed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13697,"src":"3138:8:76","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":13740,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3138:26:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13748,"nodeType":"IfStatement","src":"3134:114:76","trueBody":{"id":13747,"nodeType":"Block","src":"3166:82:76","statements":[{"errorCall":{"arguments":[{"baseExpression":{"id":13742,"name":"_newAddresses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13726,"src":"3216:13:76","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":13744,"indexExpression":{"id":13743,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13730,"src":"3230:1:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3216:16:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":13741,"name":"InvalidAddresslistUpdate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13660,"src":"3191:24:76","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":13745,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3191:42:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13746,"nodeType":"RevertStatement","src":"3184:49:76"}]}},{"expression":{"arguments":[{"hexValue":"31","id":13755,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3351:1:76","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"expression":{"baseExpression":{"id":13749,"name":"_addresslistCheckpoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13651,"src":"3304:23:76","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_History_$1011_storage_$","typeString":"mapping(address => struct CheckpointsUpgradeable.History storage ref)"}},"id":13753,"indexExpression":{"baseExpression":{"id":13750,"name":"_newAddresses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13726,"src":"3328:13:76","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":13752,"indexExpression":{"id":13751,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13730,"src":"3342:1:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3328:16:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3304:41:76","typeDescriptions":{"typeIdentifier":"t_struct$_History_$1011_storage","typeString":"struct CheckpointsUpgradeable.History storage ref"}},"id":13754,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3346:4:76","memberName":"push","nodeType":"MemberAccess","referencedDeclaration":1201,"src":"3304:46:76","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_History_$1011_storage_ptr_$_t_uint256_$returns$_t_uint256_$_t_uint256_$bound_to$_t_struct$_History_$1011_storage_ptr_$","typeString":"function (struct CheckpointsUpgradeable.History storage pointer,uint256) returns (uint256,uint256)"}},"id":13756,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3304:49:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"id":13757,"nodeType":"ExpressionStatement","src":"3304:49:76"},{"id":13761,"nodeType":"UncheckedBlock","src":"3368:46:76","statements":[{"expression":{"id":13759,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"3396:3:76","subExpression":{"id":13758,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13730,"src":"3398:1:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13760,"nodeType":"ExpressionStatement","src":"3396:3:76"}]}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13735,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13732,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13730,"src":"3092:1:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":13733,"name":"_newAddresses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13726,"src":"3096:13:76","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":13734,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3110:6:76","memberName":"length","nodeType":"MemberAccess","src":"3096:20:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3092:24:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13763,"initializationExpression":{"assignments":[13730],"declarations":[{"constant":false,"id":13730,"mutability":"mutable","name":"i","nameLocation":"3089:1:76","nodeType":"VariableDeclaration","scope":13763,"src":"3081:9:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13729,"name":"uint256","nodeType":"ElementaryTypeName","src":"3081:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13731,"nodeType":"VariableDeclarationStatement","src":"3081:9:76"},"nodeType":"ForStatement","src":"3076:348:76"},{"expression":{"arguments":[{"id":13767,"name":"_uncheckedAdd","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14716,"src":"3468:13:76","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},{"expression":{"id":13768,"name":"_newAddresses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13726,"src":"3483:13:76","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":13769,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3497:6:76","memberName":"length","nodeType":"MemberAccess","src":"3483:20:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":13764,"name":"_addresslistLengthCheckpoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13655,"src":"3433:29:76","typeDescriptions":{"typeIdentifier":"t_struct$_History_$1011_storage","typeString":"struct CheckpointsUpgradeable.History storage ref"}},"id":13766,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3463:4:76","memberName":"push","nodeType":"MemberAccess","referencedDeclaration":1235,"src":"3433:34:76","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_History_$1011_storage_ptr_$_t_function_internal_view$_t_uint256_$_t_uint256_$returns$_t_uint256_$_$_t_uint256_$returns$_t_uint256_$_t_uint256_$bound_to$_t_struct$_History_$1011_storage_ptr_$","typeString":"function (struct CheckpointsUpgradeable.History storage pointer,function (uint256,uint256) view returns (uint256),uint256) returns (uint256,uint256)"}},"id":13770,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3433:71:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"id":13771,"nodeType":"ExpressionStatement","src":"3433:71:76"}]},"documentation":{"id":13723,"nodeType":"StructuredDocumentation","src":"2856:131:76","text":"@notice Internal function to add new addresses to the address list.\n @param _newAddresses The new addresses to be added."},"id":13773,"implemented":true,"kind":"function","modifiers":[],"name":"_addAddresses","nameLocation":"3001:13:76","nodeType":"FunctionDefinition","parameters":{"id":13727,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13726,"mutability":"mutable","name":"_newAddresses","nameLocation":"3034:13:76","nodeType":"VariableDeclaration","scope":13773,"src":"3015:32:76","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":13724,"name":"address","nodeType":"ElementaryTypeName","src":"3015:7:76","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":13725,"nodeType":"ArrayTypeName","src":"3015:9:76","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"3014:34:76"},"returnParameters":{"id":13728,"nodeType":"ParameterList","parameters":[],"src":"3066:0:76"},"scope":13831,"src":"2992:519:76","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":13824,"nodeType":"Block","src":"3755:470:76","statements":[{"body":{"id":13814,"nodeType":"Block","src":"3813:321:76","statements":[{"condition":{"id":13792,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"3831:31:76","subExpression":{"arguments":[{"baseExpression":{"id":13788,"name":"_exitingAddresses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13777,"src":"3841:17:76","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":13790,"indexExpression":{"id":13789,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13781,"src":"3859:1:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3841:20:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":13787,"name":"isListed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13697,"src":"3832:8:76","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":13791,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3832:30:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13800,"nodeType":"IfStatement","src":"3827:123:76","trueBody":{"id":13799,"nodeType":"Block","src":"3864:86:76","statements":[{"errorCall":{"arguments":[{"baseExpression":{"id":13794,"name":"_exitingAddresses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13777,"src":"3914:17:76","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":13796,"indexExpression":{"id":13795,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13781,"src":"3932:1:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3914:20:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":13793,"name":"InvalidAddresslistUpdate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13660,"src":"3889:24:76","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":13797,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3889:46:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13798,"nodeType":"RevertStatement","src":"3882:53:76"}]}},{"expression":{"arguments":[{"hexValue":"30","id":13807,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4061:1:76","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"expression":{"baseExpression":{"id":13801,"name":"_addresslistCheckpoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13651,"src":"4010:23:76","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_History_$1011_storage_$","typeString":"mapping(address => struct CheckpointsUpgradeable.History storage ref)"}},"id":13805,"indexExpression":{"baseExpression":{"id":13802,"name":"_exitingAddresses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13777,"src":"4034:17:76","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":13804,"indexExpression":{"id":13803,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13781,"src":"4052:1:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4034:20:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4010:45:76","typeDescriptions":{"typeIdentifier":"t_struct$_History_$1011_storage","typeString":"struct CheckpointsUpgradeable.History storage ref"}},"id":13806,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4056:4:76","memberName":"push","nodeType":"MemberAccess","referencedDeclaration":1201,"src":"4010:50:76","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_History_$1011_storage_ptr_$_t_uint256_$returns$_t_uint256_$_t_uint256_$bound_to$_t_struct$_History_$1011_storage_ptr_$","typeString":"function (struct CheckpointsUpgradeable.History storage pointer,uint256) returns (uint256,uint256)"}},"id":13808,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4010:53:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"id":13809,"nodeType":"ExpressionStatement","src":"4010:53:76"},{"id":13813,"nodeType":"UncheckedBlock","src":"4078:46:76","statements":[{"expression":{"id":13811,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"4106:3:76","subExpression":{"id":13810,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13781,"src":"4108:1:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13812,"nodeType":"ExpressionStatement","src":"4106:3:76"}]}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13786,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13783,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13781,"src":"3781:1:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":13784,"name":"_exitingAddresses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13777,"src":"3785:17:76","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":13785,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3803:6:76","memberName":"length","nodeType":"MemberAccess","src":"3785:24:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3781:28:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13815,"initializationExpression":{"assignments":[13781],"declarations":[{"constant":false,"id":13781,"mutability":"mutable","name":"i","nameLocation":"3778:1:76","nodeType":"VariableDeclaration","scope":13815,"src":"3770:9:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13780,"name":"uint256","nodeType":"ElementaryTypeName","src":"3770:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13782,"nodeType":"VariableDeclarationStatement","src":"3770:9:76"},"nodeType":"ForStatement","src":"3765:369:76"},{"expression":{"arguments":[{"id":13819,"name":"_uncheckedSub","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14732,"src":"4178:13:76","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},{"expression":{"id":13820,"name":"_exitingAddresses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13777,"src":"4193:17:76","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":13821,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4211:6:76","memberName":"length","nodeType":"MemberAccess","src":"4193:24:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":13816,"name":"_addresslistLengthCheckpoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13655,"src":"4143:29:76","typeDescriptions":{"typeIdentifier":"t_struct$_History_$1011_storage","typeString":"struct CheckpointsUpgradeable.History storage ref"}},"id":13818,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4173:4:76","memberName":"push","nodeType":"MemberAccess","referencedDeclaration":1235,"src":"4143:34:76","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_History_$1011_storage_ptr_$_t_function_internal_view$_t_uint256_$_t_uint256_$returns$_t_uint256_$_$_t_uint256_$returns$_t_uint256_$_t_uint256_$bound_to$_t_struct$_History_$1011_storage_ptr_$","typeString":"function (struct CheckpointsUpgradeable.History storage pointer,function (uint256,uint256) view returns (uint256),uint256) returns (uint256,uint256)"}},"id":13822,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4143:75:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"id":13823,"nodeType":"ExpressionStatement","src":"4143:75:76"}]},"documentation":{"id":13774,"nodeType":"StructuredDocumentation","src":"3517:152:76","text":"@notice Internal function to remove existing addresses from the address list.\n @param _exitingAddresses The existing addresses to be removed."},"id":13825,"implemented":true,"kind":"function","modifiers":[],"name":"_removeAddresses","nameLocation":"3683:16:76","nodeType":"FunctionDefinition","parameters":{"id":13778,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13777,"mutability":"mutable","name":"_exitingAddresses","nameLocation":"3719:17:76","nodeType":"VariableDeclaration","scope":13825,"src":"3700:36:76","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":13775,"name":"address","nodeType":"ElementaryTypeName","src":"3700:7:76","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":13776,"nodeType":"ArrayTypeName","src":"3700:9:76","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"3699:38:76"},"returnParameters":{"id":13779,"nodeType":"ParameterList","parameters":[],"src":"3755:0:76"},"scope":13831,"src":"3674:551:76","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"constant":false,"documentation":{"id":13826,"nodeType":"StructuredDocumentation","src":"4231:237:76","text":"@dev This empty reserved space is put in place to allow future versions to add new\n variables without shifting down storage in the inheritance chain.\n https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"},"id":13830,"mutability":"mutable","name":"__gap","nameLocation":"4493:5:76","nodeType":"VariableDeclaration","scope":13831,"src":"4473:25:76","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$48_storage","typeString":"uint256[48]"},"typeName":{"baseType":{"id":13827,"name":"uint256","nodeType":"ElementaryTypeName","src":"4473:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13829,"length":{"hexValue":"3438","id":13828,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4481:2:76","typeDescriptions":{"typeIdentifier":"t_rational_48_by_1","typeString":"int_const 48"},"value":"48"},"nodeType":"ArrayTypeName","src":"4473:11:76","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$48_storage_ptr","typeString":"uint256[48]"}},"visibility":"private"}],"scope":13832,"src":"555:3946:76","usedErrors":[13660]}],"src":"47:4455:76"},"id":76},"src/plugin/extensions/membership/IMembership.sol":{"ast":{"absolutePath":"src/plugin/extensions/membership/IMembership.sol","exportedSymbols":{"IMembership":[13860]},"id":13861,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":13833,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:77"},{"abstract":false,"baseContracts":[],"canonicalName":"IMembership","contractDependencies":[],"contractKind":"interface","documentation":{"id":13834,"nodeType":"StructuredDocumentation","src":"72:183:77","text":"@title IMembership\n @author Aragon X - 2022-2023\n @notice An interface to be implemented by DAO plugins that define membership.\n @custom:security-contact sirt@aragon.org"},"fullyImplemented":false,"id":13860,"linearizedBaseContracts":[13860],"name":"IMembership","nameLocation":"265:11:77","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":13835,"nodeType":"StructuredDocumentation","src":"283:121:77","text":"@notice Emitted when members are added to the DAO plugin.\n @param members The list of new members being added."},"eventSelector":"11ba20e083ffba533caf1d501ce171aa2acdc05a5601e4e473e449460b0718d8","id":13840,"name":"MembersAdded","nameLocation":"415:12:77","nodeType":"EventDefinition","parameters":{"id":13839,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13838,"indexed":false,"mutability":"mutable","name":"members","nameLocation":"438:7:77","nodeType":"VariableDeclaration","scope":13840,"src":"428:17:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":13836,"name":"address","nodeType":"ElementaryTypeName","src":"428:7:77","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":13837,"nodeType":"ArrayTypeName","src":"428:9:77","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"427:19:77"},"src":"409:38:77"},{"anonymous":false,"documentation":{"id":13841,"nodeType":"StructuredDocumentation","src":"453:132:77","text":"@notice Emitted when members are removed from the DAO plugin.\n @param members The list of existing members being removed."},"eventSelector":"0ba413f7646035cae0a4ee999d676078fc8a763d1a36a8ef25e4c10f67d8615d","id":13846,"name":"MembersRemoved","nameLocation":"596:14:77","nodeType":"EventDefinition","parameters":{"id":13845,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13844,"indexed":false,"mutability":"mutable","name":"members","nameLocation":"621:7:77","nodeType":"VariableDeclaration","scope":13846,"src":"611:17:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":13842,"name":"address","nodeType":"ElementaryTypeName","src":"611:7:77","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":13843,"nodeType":"ArrayTypeName","src":"611:9:77","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"610:19:77"},"src":"590:40:77"},{"anonymous":false,"documentation":{"id":13847,"nodeType":"StructuredDocumentation","src":"636:145:77","text":"@notice Emitted to announce the membership being defined by a contract.\n @param definingContract The contract defining the membership."},"eventSelector":"3f1ec22954d444cb99f80a1989ac8f631616b8a575a89379e514c0f7f748c933","id":13851,"name":"MembershipContractAnnounced","nameLocation":"792:27:77","nodeType":"EventDefinition","parameters":{"id":13850,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13849,"indexed":true,"mutability":"mutable","name":"definingContract","nameLocation":"836:16:77","nodeType":"VariableDeclaration","scope":13851,"src":"820:32:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13848,"name":"address","nodeType":"ElementaryTypeName","src":"820:7:77","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"819:34:77"},"src":"786:68:77"},{"documentation":{"id":13852,"nodeType":"StructuredDocumentation","src":"860:288:77","text":"@notice Checks if an account is a member of the DAO.\n @param _account The address of the account to be checked.\n @return Whether the account is a member or not.\n @dev This function must be implemented in the plugin contract that introduces the members to the DAO."},"functionSelector":"a230c524","id":13859,"implemented":false,"kind":"function","modifiers":[],"name":"isMember","nameLocation":"1162:8:77","nodeType":"FunctionDefinition","parameters":{"id":13855,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13854,"mutability":"mutable","name":"_account","nameLocation":"1179:8:77","nodeType":"VariableDeclaration","scope":13859,"src":"1171:16:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13853,"name":"address","nodeType":"ElementaryTypeName","src":"1171:7:77","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1170:18:77"},"returnParameters":{"id":13858,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13857,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13859,"src":"1212:4:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":13856,"name":"bool","nodeType":"ElementaryTypeName","src":"1212:4:77","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1211:6:77"},"scope":13860,"src":"1153:65:77","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":13861,"src":"255:965:77","usedErrors":[]}],"src":"47:1174:77"},"id":77},"src/plugin/extensions/proposal/IProposal.sol":{"ast":{"absolutePath":"src/plugin/extensions/proposal/IProposal.sol","exportedSymbols":{"IDAO":[10865],"IProposal":[13896]},"id":13897,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":13862,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:78"},{"absolutePath":"src/dao/IDAO.sol","file":"../../../dao/IDAO.sol","id":13864,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13897,"sourceUnit":10866,"src":"72:43:78","symbolAliases":[{"foreign":{"id":13863,"name":"IDAO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10865,"src":"80:4:78","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"IProposal","contractDependencies":[],"contractKind":"interface","documentation":{"id":13865,"nodeType":"StructuredDocumentation","src":"117:192:78","text":"@title IProposal\n @author Aragon X - 2022-2023\n @notice An interface to be implemented by DAO plugins that create and execute proposals.\n @custom:security-contact sirt@aragon.org"},"fullyImplemented":false,"id":13896,"linearizedBaseContracts":[13896],"name":"IProposal","nameLocation":"319:9:78","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":13866,"nodeType":"StructuredDocumentation","src":"335:680:78","text":"@notice Emitted when a proposal is created.\n @param proposalId The ID of the proposal.\n @param creator The creator of the proposal.\n @param startDate The start date of the proposal in seconds.\n @param endDate The end date of the proposal in seconds.\n @param metadata The metadata of the proposal.\n @param actions The actions that will be executed if the proposal passes.\n @param allowFailureMap A bitmap allowing the proposal to succeed, even if individual actions might revert. If the bit at index `i` is 1, the proposal succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert."},"eventSelector":"a6c1f8f4276dc3f243459e13b557c84e8f4e90b2e09070bad5f6909cee687c92","id":13884,"name":"ProposalCreated","nameLocation":"1026:15:78","nodeType":"EventDefinition","parameters":{"id":13883,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13868,"indexed":true,"mutability":"mutable","name":"proposalId","nameLocation":"1067:10:78","nodeType":"VariableDeclaration","scope":13884,"src":"1051:26:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13867,"name":"uint256","nodeType":"ElementaryTypeName","src":"1051:7:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13870,"indexed":true,"mutability":"mutable","name":"creator","nameLocation":"1103:7:78","nodeType":"VariableDeclaration","scope":13884,"src":"1087:23:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13869,"name":"address","nodeType":"ElementaryTypeName","src":"1087:7:78","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13872,"indexed":false,"mutability":"mutable","name":"startDate","nameLocation":"1127:9:78","nodeType":"VariableDeclaration","scope":13884,"src":"1120:16:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":13871,"name":"uint64","nodeType":"ElementaryTypeName","src":"1120:6:78","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":13874,"indexed":false,"mutability":"mutable","name":"endDate","nameLocation":"1153:7:78","nodeType":"VariableDeclaration","scope":13884,"src":"1146:14:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":13873,"name":"uint64","nodeType":"ElementaryTypeName","src":"1146:6:78","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":13876,"indexed":false,"mutability":"mutable","name":"metadata","nameLocation":"1176:8:78","nodeType":"VariableDeclaration","scope":13884,"src":"1170:14:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":13875,"name":"bytes","nodeType":"ElementaryTypeName","src":"1170:5:78","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":13880,"indexed":false,"mutability":"mutable","name":"actions","nameLocation":"1208:7:78","nodeType":"VariableDeclaration","scope":13884,"src":"1194:21:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Action_$10724_memory_ptr_$dyn_memory_ptr","typeString":"struct IDAO.Action[]"},"typeName":{"baseType":{"id":13878,"nodeType":"UserDefinedTypeName","pathNode":{"id":13877,"name":"IDAO.Action","nameLocations":["1194:4:78","1199:6:78"],"nodeType":"IdentifierPath","referencedDeclaration":10724,"src":"1194:11:78"},"referencedDeclaration":10724,"src":"1194:11:78","typeDescriptions":{"typeIdentifier":"t_struct$_Action_$10724_storage_ptr","typeString":"struct IDAO.Action"}},"id":13879,"nodeType":"ArrayTypeName","src":"1194:13:78","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Action_$10724_storage_$dyn_storage_ptr","typeString":"struct IDAO.Action[]"}},"visibility":"internal"},{"constant":false,"id":13882,"indexed":false,"mutability":"mutable","name":"allowFailureMap","nameLocation":"1233:15:78","nodeType":"VariableDeclaration","scope":13884,"src":"1225:23:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13881,"name":"uint256","nodeType":"ElementaryTypeName","src":"1225:7:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1041:213:78"},"src":"1020:235:78"},{"anonymous":false,"documentation":{"id":13885,"nodeType":"StructuredDocumentation","src":"1261:98:78","text":"@notice Emitted when a proposal is executed.\n @param proposalId The ID of the proposal."},"eventSelector":"712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f","id":13889,"name":"ProposalExecuted","nameLocation":"1370:16:78","nodeType":"EventDefinition","parameters":{"id":13888,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13887,"indexed":true,"mutability":"mutable","name":"proposalId","nameLocation":"1403:10:78","nodeType":"VariableDeclaration","scope":13889,"src":"1387:26:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13886,"name":"uint256","nodeType":"ElementaryTypeName","src":"1387:7:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1386:28:78"},"src":"1364:51:78"},{"documentation":{"id":13890,"nodeType":"StructuredDocumentation","src":"1421:108:78","text":"@notice Returns the proposal count determining the next proposal ID.\n @return The proposal count."},"functionSelector":"da35c664","id":13895,"implemented":false,"kind":"function","modifiers":[],"name":"proposalCount","nameLocation":"1543:13:78","nodeType":"FunctionDefinition","parameters":{"id":13891,"nodeType":"ParameterList","parameters":[],"src":"1556:2:78"},"returnParameters":{"id":13894,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13893,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13895,"src":"1582:7:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13892,"name":"uint256","nodeType":"ElementaryTypeName","src":"1582:7:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1581:9:78"},"scope":13896,"src":"1534:57:78","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":13897,"src":"309:1284:78","usedErrors":[]}],"src":"47:1547:78"},"id":78},"src/plugin/extensions/proposal/Proposal.sol":{"ast":{"absolutePath":"src/plugin/extensions/proposal/Proposal.sol","exportedSymbols":{"Counters":[9368],"ERC165":[9731],"IDAO":[10865],"IProposal":[13896],"Proposal":[14046]},"id":14047,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":13898,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:79"},{"absolutePath":"@openzeppelin/contracts/utils/Counters.sol","file":"@openzeppelin/contracts/utils/Counters.sol","id":13900,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":14047,"sourceUnit":9369,"src":"72:68:79","symbolAliases":[{"foreign":{"id":13899,"name":"Counters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9368,"src":"80:8:79","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/introspection/ERC165.sol","file":"@openzeppelin/contracts/utils/introspection/ERC165.sol","id":13902,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":14047,"sourceUnit":9732,"src":"141:78:79","symbolAliases":[{"foreign":{"id":13901,"name":"ERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9731,"src":"149:6:79","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/dao/IDAO.sol","file":"../../../dao/IDAO.sol","id":13904,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":14047,"sourceUnit":10866,"src":"221:43:79","symbolAliases":[{"foreign":{"id":13903,"name":"IDAO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10865,"src":"229:4:79","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/plugin/extensions/proposal/IProposal.sol","file":"./IProposal.sol","id":13906,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":14047,"sourceUnit":13897,"src":"265:42:79","symbolAliases":[{"foreign":{"id":13905,"name":"IProposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13896,"src":"273:9:79","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":13908,"name":"IProposal","nameLocations":["605:9:79"],"nodeType":"IdentifierPath","referencedDeclaration":13896,"src":"605:9:79"},"id":13909,"nodeType":"InheritanceSpecifier","src":"605:9:79"},{"baseName":{"id":13910,"name":"ERC165","nameLocations":["616:6:79"],"nodeType":"IdentifierPath","referencedDeclaration":9731,"src":"616:6:79"},"id":13911,"nodeType":"InheritanceSpecifier","src":"616:6:79"}],"canonicalName":"Proposal","contractDependencies":[],"contractKind":"contract","documentation":{"id":13907,"nodeType":"StructuredDocumentation","src":"309:266:79","text":"@title Proposal\n @author Aragon X - 2022-2023\n @notice An abstract contract containing the traits and internal functionality to create and execute proposals that can be inherited by non-upgradeable DAO plugins.\n @custom:security-contact sirt@aragon.org"},"fullyImplemented":true,"id":14046,"linearizedBaseContracts":[14046,9731,9743,13896],"name":"Proposal","nameLocation":"593:8:79","nodeType":"ContractDefinition","nodes":[{"global":false,"id":13915,"libraryName":{"id":13912,"name":"Counters","nameLocations":["635:8:79"],"nodeType":"IdentifierPath","referencedDeclaration":9368,"src":"635:8:79"},"nodeType":"UsingForDirective","src":"629:36:79","typeName":{"id":13914,"nodeType":"UserDefinedTypeName","pathNode":{"id":13913,"name":"Counters.Counter","nameLocations":["648:8:79","657:7:79"],"nodeType":"IdentifierPath","referencedDeclaration":9300,"src":"648:16:79"},"referencedDeclaration":9300,"src":"648:16:79","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$9300_storage_ptr","typeString":"struct Counters.Counter"}}},{"constant":false,"documentation":{"id":13916,"nodeType":"StructuredDocumentation","src":"671:60:79","text":"@notice The incremental ID for proposals and executions."},"id":13919,"mutability":"mutable","name":"proposalCounter","nameLocation":"761:15:79","nodeType":"VariableDeclaration","scope":14046,"src":"736:40:79","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$9300_storage","typeString":"struct Counters.Counter"},"typeName":{"id":13918,"nodeType":"UserDefinedTypeName","pathNode":{"id":13917,"name":"Counters.Counter","nameLocations":["736:8:79","745:7:79"],"nodeType":"IdentifierPath","referencedDeclaration":9300,"src":"736:16:79"},"referencedDeclaration":9300,"src":"736:16:79","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$9300_storage_ptr","typeString":"struct Counters.Counter"}},"visibility":"private"},{"baseFunctions":[13895],"body":{"id":13930,"nodeType":"Block","src":"877:49:79","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":13926,"name":"proposalCounter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13919,"src":"894:15:79","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$9300_storage","typeString":"struct Counters.Counter storage ref"}},"id":13927,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"910:7:79","memberName":"current","nodeType":"MemberAccess","referencedDeclaration":9312,"src":"894:23:79","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Counter_$9300_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Counter_$9300_storage_ptr_$","typeString":"function (struct Counters.Counter storage pointer) view returns (uint256)"}},"id":13928,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"894:25:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":13925,"id":13929,"nodeType":"Return","src":"887:32:79"}]},"documentation":{"id":13920,"nodeType":"StructuredDocumentation","src":"783:25:79","text":"@inheritdoc IProposal"},"functionSelector":"da35c664","id":13931,"implemented":true,"kind":"function","modifiers":[],"name":"proposalCount","nameLocation":"822:13:79","nodeType":"FunctionDefinition","overrides":{"id":13922,"nodeType":"OverrideSpecifier","overrides":[],"src":"850:8:79"},"parameters":{"id":13921,"nodeType":"ParameterList","parameters":[],"src":"835:2:79"},"returnParameters":{"id":13925,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13924,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13931,"src":"868:7:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13923,"name":"uint256","nodeType":"ElementaryTypeName","src":"868:7:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"867:9:79"},"scope":14046,"src":"813:113:79","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[9730],"body":{"id":13952,"nodeType":"Block","src":"1226:108:79","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":13950,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":13945,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13940,"name":"_interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13934,"src":"1243:12:79","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":13942,"name":"IProposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13896,"src":"1264:9:79","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IProposal_$13896_$","typeString":"type(contract IProposal)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IProposal_$13896_$","typeString":"type(contract IProposal)"}],"id":13941,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"1259:4:79","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":13943,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1259:15:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IProposal_$13896","typeString":"type(contract IProposal)"}},"id":13944,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1275:11:79","memberName":"interfaceId","nodeType":"MemberAccess","src":"1259:27:79","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"1243:43:79","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":13948,"name":"_interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13934,"src":"1314:12:79","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":13946,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967271,"src":"1290:5:79","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_Proposal_$14046_$","typeString":"type(contract super Proposal)"}},"id":13947,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1296:17:79","memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":9730,"src":"1290:23:79","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bool_$","typeString":"function (bytes4) view returns (bool)"}},"id":13949,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1290:37:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1243:84:79","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":13939,"id":13951,"nodeType":"Return","src":"1236:91:79"}]},"documentation":{"id":13932,"nodeType":"StructuredDocumentation","src":"932:197:79","text":"@notice Checks if this or the parent contract supports an interface by its ID.\n @param _interfaceId The ID of the interface.\n @return Returns `true` if the interface is supported."},"functionSelector":"01ffc9a7","id":13953,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"1143:17:79","nodeType":"FunctionDefinition","overrides":{"id":13936,"nodeType":"OverrideSpecifier","overrides":[],"src":"1202:8:79"},"parameters":{"id":13935,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13934,"mutability":"mutable","name":"_interfaceId","nameLocation":"1168:12:79","nodeType":"VariableDeclaration","scope":13953,"src":"1161:19:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":13933,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1161:6:79","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"1160:21:79"},"returnParameters":{"id":13939,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13938,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13953,"src":"1220:4:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":13937,"name":"bool","nodeType":"ElementaryTypeName","src":"1220:4:79","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1219:6:79"},"scope":14046,"src":"1134:200:79","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":13969,"nodeType":"Block","src":"1490:82:79","statements":[{"expression":{"id":13962,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13959,"name":"proposalId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13957,"src":"1500:10:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"id":13960,"name":"proposalCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13931,"src":"1513:13:79","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":13961,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1513:15:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1500:28:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13963,"nodeType":"ExpressionStatement","src":"1500:28:79"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":13964,"name":"proposalCounter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13919,"src":"1538:15:79","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$9300_storage","typeString":"struct Counters.Counter storage ref"}},"id":13966,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1554:9:79","memberName":"increment","nodeType":"MemberAccess","referencedDeclaration":9326,"src":"1538:25:79","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Counter_$9300_storage_ptr_$returns$__$bound_to$_t_struct$_Counter_$9300_storage_ptr_$","typeString":"function (struct Counters.Counter storage pointer)"}},"id":13967,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1538:27:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13968,"nodeType":"ExpressionStatement","src":"1538:27:79"}]},"documentation":{"id":13954,"nodeType":"StructuredDocumentation","src":"1340:78:79","text":"@notice Creates a proposal ID.\n @return proposalId The proposal ID."},"id":13970,"implemented":true,"kind":"function","modifiers":[],"name":"_createProposalId","nameLocation":"1432:17:79","nodeType":"FunctionDefinition","parameters":{"id":13955,"nodeType":"ParameterList","parameters":[],"src":"1449:2:79"},"returnParameters":{"id":13958,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13957,"mutability":"mutable","name":"proposalId","nameLocation":"1478:10:79","nodeType":"VariableDeclaration","scope":13970,"src":"1470:18:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13956,"name":"uint256","nodeType":"ElementaryTypeName","src":"1470:7:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1469:20:79"},"scope":14046,"src":"1423:149:79","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":14005,"nodeType":"Block","src":"2480:336:79","statements":[{"expression":{"id":13993,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13990,"name":"proposalId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13988,"src":"2490:10:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"id":13991,"name":"_createProposalId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13970,"src":"2503:17:79","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$_t_uint256_$","typeString":"function () returns (uint256)"}},"id":13992,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2503:19:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2490:32:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13994,"nodeType":"ExpressionStatement","src":"2490:32:79"},{"eventCall":{"arguments":[{"id":13996,"name":"proposalId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13988,"src":"2580:10:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":13997,"name":"_creator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13973,"src":"2613:8:79","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13998,"name":"_metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13975,"src":"2645:9:79","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":13999,"name":"_startDate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13977,"src":"2679:10:79","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"id":14000,"name":"_endDate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13979,"src":"2712:8:79","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"id":14001,"name":"_actions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13983,"src":"2743:8:79","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Action_$10724_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IDAO.Action calldata[] calldata"}},{"id":14002,"name":"_allowFailureMap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13985,"src":"2782:16:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint64","typeString":"uint64"},{"typeIdentifier":"t_uint64","typeString":"uint64"},{"typeIdentifier":"t_array$_t_struct$_Action_$10724_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IDAO.Action calldata[] calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13995,"name":"ProposalCreated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13884,"src":"2538:15:79","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_address_$_t_uint64_$_t_uint64_$_t_bytes_memory_ptr_$_t_array$_t_struct$_Action_$10724_memory_ptr_$dyn_memory_ptr_$_t_uint256_$returns$__$","typeString":"function (uint256,address,uint64,uint64,bytes memory,struct IDAO.Action memory[] memory,uint256)"}},"id":14003,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":["2568:10:79","2604:7:79","2635:8:79","2668:9:79","2703:7:79","2734:7:79","2765:15:79"],"names":["proposalId","creator","metadata","startDate","endDate","actions","allowFailureMap"],"nodeType":"FunctionCall","src":"2538:271:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14004,"nodeType":"EmitStatement","src":"2533:276:79"}]},"documentation":{"id":13971,"nodeType":"StructuredDocumentation","src":"1578:633:79","text":"@notice Internal function to create a proposal.\n @param _metadata The proposal metadata.\n @param _startDate The start date of the proposal in seconds.\n @param _endDate The end date of the proposal in seconds.\n @param _allowFailureMap A bitmap allowing the proposal to succeed, even if individual actions might revert. If the bit at index `i` is 1, the proposal succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\n @param _actions The actions that will be executed after the proposal passes.\n @return proposalId The ID of the proposal."},"id":14006,"implemented":true,"kind":"function","modifiers":[],"name":"_createProposal","nameLocation":"2225:15:79","nodeType":"FunctionDefinition","parameters":{"id":13986,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13973,"mutability":"mutable","name":"_creator","nameLocation":"2258:8:79","nodeType":"VariableDeclaration","scope":14006,"src":"2250:16:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13972,"name":"address","nodeType":"ElementaryTypeName","src":"2250:7:79","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13975,"mutability":"mutable","name":"_metadata","nameLocation":"2291:9:79","nodeType":"VariableDeclaration","scope":14006,"src":"2276:24:79","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":13974,"name":"bytes","nodeType":"ElementaryTypeName","src":"2276:5:79","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":13977,"mutability":"mutable","name":"_startDate","nameLocation":"2317:10:79","nodeType":"VariableDeclaration","scope":14006,"src":"2310:17:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":13976,"name":"uint64","nodeType":"ElementaryTypeName","src":"2310:6:79","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":13979,"mutability":"mutable","name":"_endDate","nameLocation":"2344:8:79","nodeType":"VariableDeclaration","scope":14006,"src":"2337:15:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":13978,"name":"uint64","nodeType":"ElementaryTypeName","src":"2337:6:79","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":13983,"mutability":"mutable","name":"_actions","nameLocation":"2385:8:79","nodeType":"VariableDeclaration","scope":14006,"src":"2362:31:79","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Action_$10724_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IDAO.Action[]"},"typeName":{"baseType":{"id":13981,"nodeType":"UserDefinedTypeName","pathNode":{"id":13980,"name":"IDAO.Action","nameLocations":["2362:4:79","2367:6:79"],"nodeType":"IdentifierPath","referencedDeclaration":10724,"src":"2362:11:79"},"referencedDeclaration":10724,"src":"2362:11:79","typeDescriptions":{"typeIdentifier":"t_struct$_Action_$10724_storage_ptr","typeString":"struct IDAO.Action"}},"id":13982,"nodeType":"ArrayTypeName","src":"2362:13:79","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Action_$10724_storage_$dyn_storage_ptr","typeString":"struct IDAO.Action[]"}},"visibility":"internal"},{"constant":false,"id":13985,"mutability":"mutable","name":"_allowFailureMap","nameLocation":"2411:16:79","nodeType":"VariableDeclaration","scope":14006,"src":"2403:24:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13984,"name":"uint256","nodeType":"ElementaryTypeName","src":"2403:7:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2240:193:79"},"returnParameters":{"id":13989,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13988,"mutability":"mutable","name":"proposalId","nameLocation":"2468:10:79","nodeType":"VariableDeclaration","scope":14006,"src":"2460:18:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13987,"name":"uint256","nodeType":"ElementaryTypeName","src":"2460:7:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2459:20:79"},"scope":14046,"src":"2216:600:79","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":14044,"nodeType":"Block","src":"3656:165:79","statements":[{"expression":{"id":14038,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":14026,"name":"execResults","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14022,"src":"3667:11:79","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}},{"id":14027,"name":"failureMap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14024,"src":"3680:10:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":14028,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"3666:25:79","typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$_t_uint256_$","typeString":"tuple(bytes memory[] memory,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":14033,"name":"_proposalId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14012,"src":"3715:11:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14032,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3707:7:79","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":14031,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3707:7:79","typeDescriptions":{}}},"id":14034,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3707:20:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":14035,"name":"_actions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14016,"src":"3729:8:79","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Action_$10724_memory_ptr_$dyn_memory_ptr","typeString":"struct IDAO.Action memory[] memory"}},{"id":14036,"name":"_allowFailureMap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14018,"src":"3739:16:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_array$_t_struct$_Action_$10724_memory_ptr_$dyn_memory_ptr","typeString":"struct IDAO.Action memory[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":14029,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14010,"src":"3694:4:79","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}},"id":14030,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3699:7:79","memberName":"execute","nodeType":"MemberAccess","referencedDeclaration":10766,"src":"3694:12:79","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes32_$_t_array$_t_struct$_Action_$10724_memory_ptr_$dyn_memory_ptr_$_t_uint256_$returns$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$_t_uint256_$","typeString":"function (bytes32,struct IDAO.Action memory[] memory,uint256) external returns (bytes memory[] memory,uint256)"}},"id":14037,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3694:62:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$_t_uint256_$","typeString":"tuple(bytes memory[] memory,uint256)"}},"src":"3666:90:79","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14039,"nodeType":"ExpressionStatement","src":"3666:90:79"},{"eventCall":{"arguments":[{"id":14041,"name":"_proposalId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14012,"src":"3801:11:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14040,"name":"ProposalExecuted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13889,"src":"3771:16:79","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":14042,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":["3789:10:79"],"names":["proposalId"],"nodeType":"FunctionCall","src":"3771:43:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14043,"nodeType":"EmitStatement","src":"3766:48:79"}]},"documentation":{"id":14007,"nodeType":"StructuredDocumentation","src":"2822:602:79","text":"@notice Internal function to execute a proposal.\n @param _proposalId The ID of the proposal to be executed.\n @param _actions The array of actions to be executed.\n @param _allowFailureMap A bitmap allowing the proposal to succeed, even if individual actions might revert. If the bit at index `i` is 1, the proposal succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\n @return execResults The array with the results of the executed actions.\n @return failureMap The failure map encoding which actions have failed."},"id":14045,"implemented":true,"kind":"function","modifiers":[],"name":"_executeProposal","nameLocation":"3438:16:79","nodeType":"FunctionDefinition","parameters":{"id":14019,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14010,"mutability":"mutable","name":"_dao","nameLocation":"3469:4:79","nodeType":"VariableDeclaration","scope":14045,"src":"3464:9:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"},"typeName":{"id":14009,"nodeType":"UserDefinedTypeName","pathNode":{"id":14008,"name":"IDAO","nameLocations":["3464:4:79"],"nodeType":"IdentifierPath","referencedDeclaration":10865,"src":"3464:4:79"},"referencedDeclaration":10865,"src":"3464:4:79","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}},"visibility":"internal"},{"constant":false,"id":14012,"mutability":"mutable","name":"_proposalId","nameLocation":"3491:11:79","nodeType":"VariableDeclaration","scope":14045,"src":"3483:19:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14011,"name":"uint256","nodeType":"ElementaryTypeName","src":"3483:7:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14016,"mutability":"mutable","name":"_actions","nameLocation":"3533:8:79","nodeType":"VariableDeclaration","scope":14045,"src":"3512:29:79","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Action_$10724_memory_ptr_$dyn_memory_ptr","typeString":"struct IDAO.Action[]"},"typeName":{"baseType":{"id":14014,"nodeType":"UserDefinedTypeName","pathNode":{"id":14013,"name":"IDAO.Action","nameLocations":["3512:4:79","3517:6:79"],"nodeType":"IdentifierPath","referencedDeclaration":10724,"src":"3512:11:79"},"referencedDeclaration":10724,"src":"3512:11:79","typeDescriptions":{"typeIdentifier":"t_struct$_Action_$10724_storage_ptr","typeString":"struct IDAO.Action"}},"id":14015,"nodeType":"ArrayTypeName","src":"3512:13:79","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Action_$10724_storage_$dyn_storage_ptr","typeString":"struct IDAO.Action[]"}},"visibility":"internal"},{"constant":false,"id":14018,"mutability":"mutable","name":"_allowFailureMap","nameLocation":"3559:16:79","nodeType":"VariableDeclaration","scope":14045,"src":"3551:24:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14017,"name":"uint256","nodeType":"ElementaryTypeName","src":"3551:7:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3454:127:79"},"returnParameters":{"id":14025,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14022,"mutability":"mutable","name":"execResults","nameLocation":"3623:11:79","nodeType":"VariableDeclaration","scope":14045,"src":"3608:26:79","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":14020,"name":"bytes","nodeType":"ElementaryTypeName","src":"3608:5:79","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":14021,"nodeType":"ArrayTypeName","src":"3608:7:79","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"},{"constant":false,"id":14024,"mutability":"mutable","name":"failureMap","nameLocation":"3644:10:79","nodeType":"VariableDeclaration","scope":14045,"src":"3636:18:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14023,"name":"uint256","nodeType":"ElementaryTypeName","src":"3636:7:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3607:48:79"},"scope":14046,"src":"3429:392:79","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":14047,"src":"575:3248:79","usedErrors":[]}],"src":"47:3777:79"},"id":79},"src/plugin/extensions/proposal/ProposalUpgradeable.sol":{"ast":{"absolutePath":"src/plugin/extensions/proposal/ProposalUpgradeable.sol","exportedSymbols":{"CountersUpgradeable":[2667],"ERC165Upgradeable":[2822],"IDAO":[10865],"IProposal":[13896],"ProposalUpgradeable":[14201]},"id":14202,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":14048,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:80"},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol","id":14050,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":14202,"sourceUnit":2668,"src":"72:102:80","symbolAliases":[{"foreign":{"id":14049,"name":"CountersUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2667,"src":"80:19:80","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol","file":"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol","id":14052,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":14202,"sourceUnit":2823,"src":"175:112:80","symbolAliases":[{"foreign":{"id":14051,"name":"ERC165Upgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2822,"src":"183:17:80","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/dao/IDAO.sol","file":"../../../dao/IDAO.sol","id":14054,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":14202,"sourceUnit":10866,"src":"289:43:80","symbolAliases":[{"foreign":{"id":14053,"name":"IDAO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10865,"src":"297:4:80","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/plugin/extensions/proposal/IProposal.sol","file":"./IProposal.sol","id":14056,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":14202,"sourceUnit":13897,"src":"333:42:80","symbolAliases":[{"foreign":{"id":14055,"name":"IProposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13896,"src":"341:9:80","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":14058,"name":"IProposal","nameLocations":["691:9:80"],"nodeType":"IdentifierPath","referencedDeclaration":13896,"src":"691:9:80"},"id":14059,"nodeType":"InheritanceSpecifier","src":"691:9:80"},{"baseName":{"id":14060,"name":"ERC165Upgradeable","nameLocations":["702:17:80"],"nodeType":"IdentifierPath","referencedDeclaration":2822,"src":"702:17:80"},"id":14061,"nodeType":"InheritanceSpecifier","src":"702:17:80"}],"canonicalName":"ProposalUpgradeable","contractDependencies":[],"contractKind":"contract","documentation":{"id":14057,"nodeType":"StructuredDocumentation","src":"377:273:80","text":"@title ProposalUpgradeable\n @author Aragon X - 2022-2023\n @notice An abstract contract containing the traits and internal functionality to create and execute proposals that can be inherited by upgradeable DAO plugins.\n @custom:security-contact sirt@aragon.org"},"fullyImplemented":true,"id":14201,"linearizedBaseContracts":[14201,2822,2834,534,13896],"name":"ProposalUpgradeable","nameLocation":"668:19:80","nodeType":"ContractDefinition","nodes":[{"global":false,"id":14065,"libraryName":{"id":14062,"name":"CountersUpgradeable","nameLocations":["732:19:80"],"nodeType":"IdentifierPath","referencedDeclaration":2667,"src":"732:19:80"},"nodeType":"UsingForDirective","src":"726:58:80","typeName":{"id":14064,"nodeType":"UserDefinedTypeName","pathNode":{"id":14063,"name":"CountersUpgradeable.Counter","nameLocations":["756:19:80","776:7:80"],"nodeType":"IdentifierPath","referencedDeclaration":2599,"src":"756:27:80"},"referencedDeclaration":2599,"src":"756:27:80","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$2599_storage_ptr","typeString":"struct CountersUpgradeable.Counter"}}},{"constant":false,"documentation":{"id":14066,"nodeType":"StructuredDocumentation","src":"790:60:80","text":"@notice The incremental ID for proposals and executions."},"id":14069,"mutability":"mutable","name":"proposalCounter","nameLocation":"891:15:80","nodeType":"VariableDeclaration","scope":14201,"src":"855:51:80","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$2599_storage","typeString":"struct CountersUpgradeable.Counter"},"typeName":{"id":14068,"nodeType":"UserDefinedTypeName","pathNode":{"id":14067,"name":"CountersUpgradeable.Counter","nameLocations":["855:19:80","875:7:80"],"nodeType":"IdentifierPath","referencedDeclaration":2599,"src":"855:27:80"},"referencedDeclaration":2599,"src":"855:27:80","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$2599_storage_ptr","typeString":"struct CountersUpgradeable.Counter"}},"visibility":"private"},{"baseFunctions":[13895],"body":{"id":14080,"nodeType":"Block","src":"1007:49:80","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":14076,"name":"proposalCounter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14069,"src":"1024:15:80","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$2599_storage","typeString":"struct CountersUpgradeable.Counter storage ref"}},"id":14077,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1040:7:80","memberName":"current","nodeType":"MemberAccess","referencedDeclaration":2611,"src":"1024:23:80","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Counter_$2599_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Counter_$2599_storage_ptr_$","typeString":"function (struct CountersUpgradeable.Counter storage pointer) view returns (uint256)"}},"id":14078,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1024:25:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":14075,"id":14079,"nodeType":"Return","src":"1017:32:80"}]},"documentation":{"id":14070,"nodeType":"StructuredDocumentation","src":"913:25:80","text":"@inheritdoc IProposal"},"functionSelector":"da35c664","id":14081,"implemented":true,"kind":"function","modifiers":[],"name":"proposalCount","nameLocation":"952:13:80","nodeType":"FunctionDefinition","overrides":{"id":14072,"nodeType":"OverrideSpecifier","overrides":[],"src":"980:8:80"},"parameters":{"id":14071,"nodeType":"ParameterList","parameters":[],"src":"965:2:80"},"returnParameters":{"id":14075,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14074,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14081,"src":"998:7:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14073,"name":"uint256","nodeType":"ElementaryTypeName","src":"998:7:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"997:9:80"},"scope":14201,"src":"943:113:80","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[2816],"body":{"id":14102,"nodeType":"Block","src":"1356:108:80","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":14100,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":14095,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14090,"name":"_interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14084,"src":"1373:12:80","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":14092,"name":"IProposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13896,"src":"1394:9:80","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IProposal_$13896_$","typeString":"type(contract IProposal)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IProposal_$13896_$","typeString":"type(contract IProposal)"}],"id":14091,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"1389:4:80","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":14093,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1389:15:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IProposal_$13896","typeString":"type(contract IProposal)"}},"id":14094,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1405:11:80","memberName":"interfaceId","nodeType":"MemberAccess","src":"1389:27:80","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"1373:43:80","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":14098,"name":"_interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14084,"src":"1444:12:80","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":14096,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967271,"src":"1420:5:80","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_ProposalUpgradeable_$14201_$","typeString":"type(contract super ProposalUpgradeable)"}},"id":14097,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1426:17:80","memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":2816,"src":"1420:23:80","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bool_$","typeString":"function (bytes4) view returns (bool)"}},"id":14099,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1420:37:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1373:84:80","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":14089,"id":14101,"nodeType":"Return","src":"1366:91:80"}]},"documentation":{"id":14082,"nodeType":"StructuredDocumentation","src":"1062:197:80","text":"@notice Checks if this or the parent contract supports an interface by its ID.\n @param _interfaceId The ID of the interface.\n @return Returns `true` if the interface is supported."},"functionSelector":"01ffc9a7","id":14103,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"1273:17:80","nodeType":"FunctionDefinition","overrides":{"id":14086,"nodeType":"OverrideSpecifier","overrides":[],"src":"1332:8:80"},"parameters":{"id":14085,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14084,"mutability":"mutable","name":"_interfaceId","nameLocation":"1298:12:80","nodeType":"VariableDeclaration","scope":14103,"src":"1291:19:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":14083,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1291:6:80","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"1290:21:80"},"returnParameters":{"id":14089,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14088,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14103,"src":"1350:4:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":14087,"name":"bool","nodeType":"ElementaryTypeName","src":"1350:4:80","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1349:6:80"},"scope":14201,"src":"1264:200:80","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":14119,"nodeType":"Block","src":"1620:82:80","statements":[{"expression":{"id":14112,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14109,"name":"proposalId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14107,"src":"1630:10:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"id":14110,"name":"proposalCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14081,"src":"1643:13:80","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":14111,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1643:15:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1630:28:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14113,"nodeType":"ExpressionStatement","src":"1630:28:80"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":14114,"name":"proposalCounter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14069,"src":"1668:15:80","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$2599_storage","typeString":"struct CountersUpgradeable.Counter storage ref"}},"id":14116,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1684:9:80","memberName":"increment","nodeType":"MemberAccess","referencedDeclaration":2625,"src":"1668:25:80","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Counter_$2599_storage_ptr_$returns$__$bound_to$_t_struct$_Counter_$2599_storage_ptr_$","typeString":"function (struct CountersUpgradeable.Counter storage pointer)"}},"id":14117,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1668:27:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14118,"nodeType":"ExpressionStatement","src":"1668:27:80"}]},"documentation":{"id":14104,"nodeType":"StructuredDocumentation","src":"1470:78:80","text":"@notice Creates a proposal ID.\n @return proposalId The proposal ID."},"id":14120,"implemented":true,"kind":"function","modifiers":[],"name":"_createProposalId","nameLocation":"1562:17:80","nodeType":"FunctionDefinition","parameters":{"id":14105,"nodeType":"ParameterList","parameters":[],"src":"1579:2:80"},"returnParameters":{"id":14108,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14107,"mutability":"mutable","name":"proposalId","nameLocation":"1608:10:80","nodeType":"VariableDeclaration","scope":14120,"src":"1600:18:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14106,"name":"uint256","nodeType":"ElementaryTypeName","src":"1600:7:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1599:20:80"},"scope":14201,"src":"1553:149:80","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":14155,"nodeType":"Block","src":"2610:336:80","statements":[{"expression":{"id":14143,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14140,"name":"proposalId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14138,"src":"2620:10:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"id":14141,"name":"_createProposalId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14120,"src":"2633:17:80","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$_t_uint256_$","typeString":"function () returns (uint256)"}},"id":14142,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2633:19:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2620:32:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14144,"nodeType":"ExpressionStatement","src":"2620:32:80"},{"eventCall":{"arguments":[{"id":14146,"name":"proposalId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14138,"src":"2710:10:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":14147,"name":"_creator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14123,"src":"2743:8:80","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":14148,"name":"_metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14125,"src":"2775:9:80","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":14149,"name":"_startDate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14127,"src":"2809:10:80","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"id":14150,"name":"_endDate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14129,"src":"2842:8:80","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"id":14151,"name":"_actions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14133,"src":"2873:8:80","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Action_$10724_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IDAO.Action calldata[] calldata"}},{"id":14152,"name":"_allowFailureMap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14135,"src":"2912:16:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint64","typeString":"uint64"},{"typeIdentifier":"t_uint64","typeString":"uint64"},{"typeIdentifier":"t_array$_t_struct$_Action_$10724_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IDAO.Action calldata[] calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14145,"name":"ProposalCreated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13884,"src":"2668:15:80","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_address_$_t_uint64_$_t_uint64_$_t_bytes_memory_ptr_$_t_array$_t_struct$_Action_$10724_memory_ptr_$dyn_memory_ptr_$_t_uint256_$returns$__$","typeString":"function (uint256,address,uint64,uint64,bytes memory,struct IDAO.Action memory[] memory,uint256)"}},"id":14153,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":["2698:10:80","2734:7:80","2765:8:80","2798:9:80","2833:7:80","2864:7:80","2895:15:80"],"names":["proposalId","creator","metadata","startDate","endDate","actions","allowFailureMap"],"nodeType":"FunctionCall","src":"2668:271:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14154,"nodeType":"EmitStatement","src":"2663:276:80"}]},"documentation":{"id":14121,"nodeType":"StructuredDocumentation","src":"1708:633:80","text":"@notice Internal function to create a proposal.\n @param _metadata The proposal metadata.\n @param _startDate The start date of the proposal in seconds.\n @param _endDate The end date of the proposal in seconds.\n @param _allowFailureMap A bitmap allowing the proposal to succeed, even if individual actions might revert. If the bit at index `i` is 1, the proposal succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\n @param _actions The actions that will be executed after the proposal passes.\n @return proposalId The ID of the proposal."},"id":14156,"implemented":true,"kind":"function","modifiers":[],"name":"_createProposal","nameLocation":"2355:15:80","nodeType":"FunctionDefinition","parameters":{"id":14136,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14123,"mutability":"mutable","name":"_creator","nameLocation":"2388:8:80","nodeType":"VariableDeclaration","scope":14156,"src":"2380:16:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14122,"name":"address","nodeType":"ElementaryTypeName","src":"2380:7:80","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14125,"mutability":"mutable","name":"_metadata","nameLocation":"2421:9:80","nodeType":"VariableDeclaration","scope":14156,"src":"2406:24:80","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":14124,"name":"bytes","nodeType":"ElementaryTypeName","src":"2406:5:80","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":14127,"mutability":"mutable","name":"_startDate","nameLocation":"2447:10:80","nodeType":"VariableDeclaration","scope":14156,"src":"2440:17:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":14126,"name":"uint64","nodeType":"ElementaryTypeName","src":"2440:6:80","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":14129,"mutability":"mutable","name":"_endDate","nameLocation":"2474:8:80","nodeType":"VariableDeclaration","scope":14156,"src":"2467:15:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":14128,"name":"uint64","nodeType":"ElementaryTypeName","src":"2467:6:80","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":14133,"mutability":"mutable","name":"_actions","nameLocation":"2515:8:80","nodeType":"VariableDeclaration","scope":14156,"src":"2492:31:80","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Action_$10724_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IDAO.Action[]"},"typeName":{"baseType":{"id":14131,"nodeType":"UserDefinedTypeName","pathNode":{"id":14130,"name":"IDAO.Action","nameLocations":["2492:4:80","2497:6:80"],"nodeType":"IdentifierPath","referencedDeclaration":10724,"src":"2492:11:80"},"referencedDeclaration":10724,"src":"2492:11:80","typeDescriptions":{"typeIdentifier":"t_struct$_Action_$10724_storage_ptr","typeString":"struct IDAO.Action"}},"id":14132,"nodeType":"ArrayTypeName","src":"2492:13:80","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Action_$10724_storage_$dyn_storage_ptr","typeString":"struct IDAO.Action[]"}},"visibility":"internal"},{"constant":false,"id":14135,"mutability":"mutable","name":"_allowFailureMap","nameLocation":"2541:16:80","nodeType":"VariableDeclaration","scope":14156,"src":"2533:24:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14134,"name":"uint256","nodeType":"ElementaryTypeName","src":"2533:7:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2370:193:80"},"returnParameters":{"id":14139,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14138,"mutability":"mutable","name":"proposalId","nameLocation":"2598:10:80","nodeType":"VariableDeclaration","scope":14156,"src":"2590:18:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14137,"name":"uint256","nodeType":"ElementaryTypeName","src":"2590:7:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2589:20:80"},"scope":14201,"src":"2346:600:80","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":14194,"nodeType":"Block","src":"3786:165:80","statements":[{"expression":{"id":14188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":14176,"name":"execResults","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14172,"src":"3797:11:80","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}},{"id":14177,"name":"failureMap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14174,"src":"3810:10:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":14178,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"3796:25:80","typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$_t_uint256_$","typeString":"tuple(bytes memory[] memory,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":14183,"name":"_proposalId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14162,"src":"3845:11:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14182,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3837:7:80","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":14181,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3837:7:80","typeDescriptions":{}}},"id":14184,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3837:20:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":14185,"name":"_actions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14166,"src":"3859:8:80","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Action_$10724_memory_ptr_$dyn_memory_ptr","typeString":"struct IDAO.Action memory[] memory"}},{"id":14186,"name":"_allowFailureMap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14168,"src":"3869:16:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_array$_t_struct$_Action_$10724_memory_ptr_$dyn_memory_ptr","typeString":"struct IDAO.Action memory[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":14179,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14160,"src":"3824:4:80","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}},"id":14180,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3829:7:80","memberName":"execute","nodeType":"MemberAccess","referencedDeclaration":10766,"src":"3824:12:80","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes32_$_t_array$_t_struct$_Action_$10724_memory_ptr_$dyn_memory_ptr_$_t_uint256_$returns$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$_t_uint256_$","typeString":"function (bytes32,struct IDAO.Action memory[] memory,uint256) external returns (bytes memory[] memory,uint256)"}},"id":14187,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3824:62:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$_t_uint256_$","typeString":"tuple(bytes memory[] memory,uint256)"}},"src":"3796:90:80","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14189,"nodeType":"ExpressionStatement","src":"3796:90:80"},{"eventCall":{"arguments":[{"id":14191,"name":"_proposalId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14162,"src":"3931:11:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14190,"name":"ProposalExecuted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13889,"src":"3901:16:80","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":14192,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":["3919:10:80"],"names":["proposalId"],"nodeType":"FunctionCall","src":"3901:43:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14193,"nodeType":"EmitStatement","src":"3896:48:80"}]},"documentation":{"id":14157,"nodeType":"StructuredDocumentation","src":"2952:602:80","text":"@notice Internal function to execute a proposal.\n @param _proposalId The ID of the proposal to be executed.\n @param _actions The array of actions to be executed.\n @param _allowFailureMap A bitmap allowing the proposal to succeed, even if individual actions might revert. If the bit at index `i` is 1, the proposal succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\n @return execResults The array with the results of the executed actions.\n @return failureMap The failure map encoding which actions have failed."},"id":14195,"implemented":true,"kind":"function","modifiers":[],"name":"_executeProposal","nameLocation":"3568:16:80","nodeType":"FunctionDefinition","parameters":{"id":14169,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14160,"mutability":"mutable","name":"_dao","nameLocation":"3599:4:80","nodeType":"VariableDeclaration","scope":14195,"src":"3594:9:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"},"typeName":{"id":14159,"nodeType":"UserDefinedTypeName","pathNode":{"id":14158,"name":"IDAO","nameLocations":["3594:4:80"],"nodeType":"IdentifierPath","referencedDeclaration":10865,"src":"3594:4:80"},"referencedDeclaration":10865,"src":"3594:4:80","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}},"visibility":"internal"},{"constant":false,"id":14162,"mutability":"mutable","name":"_proposalId","nameLocation":"3621:11:80","nodeType":"VariableDeclaration","scope":14195,"src":"3613:19:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14161,"name":"uint256","nodeType":"ElementaryTypeName","src":"3613:7:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14166,"mutability":"mutable","name":"_actions","nameLocation":"3663:8:80","nodeType":"VariableDeclaration","scope":14195,"src":"3642:29:80","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Action_$10724_memory_ptr_$dyn_memory_ptr","typeString":"struct IDAO.Action[]"},"typeName":{"baseType":{"id":14164,"nodeType":"UserDefinedTypeName","pathNode":{"id":14163,"name":"IDAO.Action","nameLocations":["3642:4:80","3647:6:80"],"nodeType":"IdentifierPath","referencedDeclaration":10724,"src":"3642:11:80"},"referencedDeclaration":10724,"src":"3642:11:80","typeDescriptions":{"typeIdentifier":"t_struct$_Action_$10724_storage_ptr","typeString":"struct IDAO.Action"}},"id":14165,"nodeType":"ArrayTypeName","src":"3642:13:80","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Action_$10724_storage_$dyn_storage_ptr","typeString":"struct IDAO.Action[]"}},"visibility":"internal"},{"constant":false,"id":14168,"mutability":"mutable","name":"_allowFailureMap","nameLocation":"3689:16:80","nodeType":"VariableDeclaration","scope":14195,"src":"3681:24:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14167,"name":"uint256","nodeType":"ElementaryTypeName","src":"3681:7:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3584:127:80"},"returnParameters":{"id":14175,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14172,"mutability":"mutable","name":"execResults","nameLocation":"3753:11:80","nodeType":"VariableDeclaration","scope":14195,"src":"3738:26:80","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":14170,"name":"bytes","nodeType":"ElementaryTypeName","src":"3738:5:80","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":14171,"nodeType":"ArrayTypeName","src":"3738:7:80","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"},{"constant":false,"id":14174,"mutability":"mutable","name":"failureMap","nameLocation":"3774:10:80","nodeType":"VariableDeclaration","scope":14195,"src":"3766:18:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14173,"name":"uint256","nodeType":"ElementaryTypeName","src":"3766:7:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3737:48:80"},"scope":14201,"src":"3559:392:80","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"constant":false,"documentation":{"id":14196,"nodeType":"StructuredDocumentation","src":"3957:273:80","text":"@notice This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain (see [OpenZeppelin's guide about storage gaps](https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps))."},"id":14200,"mutability":"mutable","name":"__gap","nameLocation":"4255:5:80","nodeType":"VariableDeclaration","scope":14201,"src":"4235:25:80","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$49_storage","typeString":"uint256[49]"},"typeName":{"baseType":{"id":14197,"name":"uint256","nodeType":"ElementaryTypeName","src":"4235:7:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14199,"length":{"hexValue":"3439","id":14198,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4243:2:80","typeDescriptions":{"typeIdentifier":"t_rational_49_by_1","typeString":"int_const 49"},"value":"49"},"nodeType":"ArrayTypeName","src":"4235:11:80","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$49_storage_ptr","typeString":"uint256[49]"}},"visibility":"private"}],"scope":14202,"src":"650:3613:80","usedErrors":[]}],"src":"47:4217:80"},"id":80},"src/plugin/setup/IPluginSetup.sol":{"ast":{"absolutePath":"src/plugin/setup/IPluginSetup.sol","exportedSymbols":{"IDAO":[10865],"IPluginSetup":[14273],"PermissionLib":[13038]},"id":14274,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":14203,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:81"},{"absolutePath":"src/permission/PermissionLib.sol","file":"../../permission/PermissionLib.sol","id":14205,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":14274,"sourceUnit":13039,"src":"72:65:81","symbolAliases":[{"foreign":{"id":14204,"name":"PermissionLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13038,"src":"80:13:81","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/dao/IDAO.sol","file":"../../dao/IDAO.sol","id":14207,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":14274,"sourceUnit":10866,"src":"185:40:81","symbolAliases":[{"foreign":{"id":14206,"name":"IDAO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10865,"src":"193:4:81","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"IPluginSetup","contractDependencies":[],"contractKind":"interface","documentation":{"id":14208,"nodeType":"StructuredDocumentation","src":"227:266:81","text":"@title IPluginSetup\n @author Aragon X - 2022-2023\n @notice The interface required for a plugin setup contract to be consumed by the `PluginSetupProcessor` for plugin installations, updates, and uninstallations.\n @custom:security-contact sirt@aragon.org"},"fullyImplemented":false,"id":14273,"linearizedBaseContracts":[14273],"name":"IPluginSetup","nameLocation":"503:12:81","nodeType":"ContractDefinition","nodes":[{"canonicalName":"IPluginSetup.PreparedSetupData","id":14216,"members":[{"constant":false,"id":14211,"mutability":"mutable","name":"helpers","nameLocation":"924:7:81","nodeType":"VariableDeclaration","scope":14216,"src":"914:17:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":14209,"name":"address","nodeType":"ElementaryTypeName","src":"914:7:81","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":14210,"nodeType":"ArrayTypeName","src":"914:9:81","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":14215,"mutability":"mutable","name":"permissions","nameLocation":"979:11:81","nodeType":"VariableDeclaration","scope":14216,"src":"941:49:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_storage_$dyn_storage_ptr","typeString":"struct PermissionLib.MultiTargetPermission[]"},"typeName":{"baseType":{"id":14213,"nodeType":"UserDefinedTypeName","pathNode":{"id":14212,"name":"PermissionLib.MultiTargetPermission","nameLocations":["941:13:81","955:21:81"],"nodeType":"IdentifierPath","referencedDeclaration":13037,"src":"941:35:81"},"referencedDeclaration":13037,"src":"941:35:81","typeDescriptions":{"typeIdentifier":"t_struct$_MultiTargetPermission_$13037_storage_ptr","typeString":"struct PermissionLib.MultiTargetPermission"}},"id":14214,"nodeType":"ArrayTypeName","src":"941:37:81","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_storage_$dyn_storage_ptr","typeString":"struct PermissionLib.MultiTargetPermission[]"}},"visibility":"internal"}],"name":"PreparedSetupData","nameLocation":"886:17:81","nodeType":"StructDefinition","scope":14273,"src":"879:118:81","visibility":"public"},{"canonicalName":"IPluginSetup.SetupPayload","id":14224,"members":[{"constant":false,"id":14218,"mutability":"mutable","name":"plugin","nameLocation":"1568:6:81","nodeType":"VariableDeclaration","scope":14224,"src":"1560:14:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14217,"name":"address","nodeType":"ElementaryTypeName","src":"1560:7:81","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14221,"mutability":"mutable","name":"currentHelpers","nameLocation":"1594:14:81","nodeType":"VariableDeclaration","scope":14224,"src":"1584:24:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":14219,"name":"address","nodeType":"ElementaryTypeName","src":"1584:7:81","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":14220,"nodeType":"ArrayTypeName","src":"1584:9:81","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":14223,"mutability":"mutable","name":"data","nameLocation":"1624:4:81","nodeType":"VariableDeclaration","scope":14224,"src":"1618:10:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":14222,"name":"bytes","nodeType":"ElementaryTypeName","src":"1618:5:81","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"name":"SetupPayload","nameLocation":"1537:12:81","nodeType":"StructDefinition","scope":14273,"src":"1530:105:81","visibility":"public"},{"documentation":{"id":14225,"nodeType":"StructuredDocumentation","src":"1641:463:81","text":"@notice Prepares the installation of a plugin.\n @param _dao The address of the installing DAO.\n @param _data The bytes-encoded data containing the input parameters for the installation as specified in the plugin's build metadata JSON file.\n @return plugin The address of the `Plugin` contract being prepared for installation.\n @return preparedSetupData The deployed plugin's relevant data which consists of helpers and permissions."},"functionSelector":"f10832f1","id":14237,"implemented":false,"kind":"function","modifiers":[],"name":"prepareInstallation","nameLocation":"2118:19:81","nodeType":"FunctionDefinition","parameters":{"id":14230,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14227,"mutability":"mutable","name":"_dao","nameLocation":"2155:4:81","nodeType":"VariableDeclaration","scope":14237,"src":"2147:12:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14226,"name":"address","nodeType":"ElementaryTypeName","src":"2147:7:81","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14229,"mutability":"mutable","name":"_data","nameLocation":"2184:5:81","nodeType":"VariableDeclaration","scope":14237,"src":"2169:20:81","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":14228,"name":"bytes","nodeType":"ElementaryTypeName","src":"2169:5:81","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2137:58:81"},"returnParameters":{"id":14236,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14232,"mutability":"mutable","name":"plugin","nameLocation":"2222:6:81","nodeType":"VariableDeclaration","scope":14237,"src":"2214:14:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14231,"name":"address","nodeType":"ElementaryTypeName","src":"2214:7:81","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14235,"mutability":"mutable","name":"preparedSetupData","nameLocation":"2255:17:81","nodeType":"VariableDeclaration","scope":14237,"src":"2230:42:81","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$14216_memory_ptr","typeString":"struct IPluginSetup.PreparedSetupData"},"typeName":{"id":14234,"nodeType":"UserDefinedTypeName","pathNode":{"id":14233,"name":"PreparedSetupData","nameLocations":["2230:17:81"],"nodeType":"IdentifierPath","referencedDeclaration":14216,"src":"2230:17:81"},"referencedDeclaration":14216,"src":"2230:17:81","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$14216_storage_ptr","typeString":"struct IPluginSetup.PreparedSetupData"}},"visibility":"internal"}],"src":"2213:60:81"},"scope":14273,"src":"2109:165:81","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":14238,"nodeType":"StructuredDocumentation","src":"2280:516:81","text":"@notice Prepares the update of a plugin.\n @param _dao The address of the updating DAO.\n @param _fromBuild The build number of the plugin to update from.\n @param _payload The relevant data necessary for the `prepareUpdate`. See above.\n @return initData The initialization data to be passed to upgradeable contracts when the update is applied in the `PluginSetupProcessor`.\n @return preparedSetupData The deployed plugin's relevant data which consists of helpers and permissions."},"functionSelector":"a8a9c29e","id":14253,"implemented":false,"kind":"function","modifiers":[],"name":"prepareUpdate","nameLocation":"2810:13:81","nodeType":"FunctionDefinition","parameters":{"id":14246,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14240,"mutability":"mutable","name":"_dao","nameLocation":"2841:4:81","nodeType":"VariableDeclaration","scope":14253,"src":"2833:12:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14239,"name":"address","nodeType":"ElementaryTypeName","src":"2833:7:81","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14242,"mutability":"mutable","name":"_fromBuild","nameLocation":"2862:10:81","nodeType":"VariableDeclaration","scope":14253,"src":"2855:17:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":14241,"name":"uint16","nodeType":"ElementaryTypeName","src":"2855:6:81","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":14245,"mutability":"mutable","name":"_payload","nameLocation":"2904:8:81","nodeType":"VariableDeclaration","scope":14253,"src":"2882:30:81","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$14224_calldata_ptr","typeString":"struct IPluginSetup.SetupPayload"},"typeName":{"id":14244,"nodeType":"UserDefinedTypeName","pathNode":{"id":14243,"name":"SetupPayload","nameLocations":["2882:12:81"],"nodeType":"IdentifierPath","referencedDeclaration":14224,"src":"2882:12:81"},"referencedDeclaration":14224,"src":"2882:12:81","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$14224_storage_ptr","typeString":"struct IPluginSetup.SetupPayload"}},"visibility":"internal"}],"src":"2823:95:81"},"returnParameters":{"id":14252,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14248,"mutability":"mutable","name":"initData","nameLocation":"2950:8:81","nodeType":"VariableDeclaration","scope":14253,"src":"2937:21:81","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":14247,"name":"bytes","nodeType":"ElementaryTypeName","src":"2937:5:81","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":14251,"mutability":"mutable","name":"preparedSetupData","nameLocation":"2985:17:81","nodeType":"VariableDeclaration","scope":14253,"src":"2960:42:81","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$14216_memory_ptr","typeString":"struct IPluginSetup.PreparedSetupData"},"typeName":{"id":14250,"nodeType":"UserDefinedTypeName","pathNode":{"id":14249,"name":"PreparedSetupData","nameLocations":["2960:17:81"],"nodeType":"IdentifierPath","referencedDeclaration":14216,"src":"2960:17:81"},"referencedDeclaration":14216,"src":"2960:17:81","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$14216_storage_ptr","typeString":"struct IPluginSetup.PreparedSetupData"}},"visibility":"internal"}],"src":"2936:67:81"},"scope":14273,"src":"2801:203:81","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":14254,"nodeType":"StructuredDocumentation","src":"3010:352:81","text":"@notice Prepares the uninstallation of a plugin.\n @param _dao The address of the uninstalling DAO.\n @param _payload The relevant data necessary for the `prepareUninstallation`. See above.\n @return permissions The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the uninstalling DAO."},"functionSelector":"9cb0a124","id":14266,"implemented":false,"kind":"function","modifiers":[],"name":"prepareUninstallation","nameLocation":"3376:21:81","nodeType":"FunctionDefinition","parameters":{"id":14260,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14256,"mutability":"mutable","name":"_dao","nameLocation":"3415:4:81","nodeType":"VariableDeclaration","scope":14266,"src":"3407:12:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14255,"name":"address","nodeType":"ElementaryTypeName","src":"3407:7:81","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14259,"mutability":"mutable","name":"_payload","nameLocation":"3451:8:81","nodeType":"VariableDeclaration","scope":14266,"src":"3429:30:81","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$14224_calldata_ptr","typeString":"struct IPluginSetup.SetupPayload"},"typeName":{"id":14258,"nodeType":"UserDefinedTypeName","pathNode":{"id":14257,"name":"SetupPayload","nameLocations":["3429:12:81"],"nodeType":"IdentifierPath","referencedDeclaration":14224,"src":"3429:12:81"},"referencedDeclaration":14224,"src":"3429:12:81","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$14224_storage_ptr","typeString":"struct IPluginSetup.SetupPayload"}},"visibility":"internal"}],"src":"3397:68:81"},"returnParameters":{"id":14265,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14264,"mutability":"mutable","name":"permissions","nameLocation":"3529:11:81","nodeType":"VariableDeclaration","scope":14266,"src":"3484:56:81","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission[]"},"typeName":{"baseType":{"id":14262,"nodeType":"UserDefinedTypeName","pathNode":{"id":14261,"name":"PermissionLib.MultiTargetPermission","nameLocations":["3484:13:81","3498:21:81"],"nodeType":"IdentifierPath","referencedDeclaration":13037,"src":"3484:35:81"},"referencedDeclaration":13037,"src":"3484:35:81","typeDescriptions":{"typeIdentifier":"t_struct$_MultiTargetPermission_$13037_storage_ptr","typeString":"struct PermissionLib.MultiTargetPermission"}},"id":14263,"nodeType":"ArrayTypeName","src":"3484:37:81","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_storage_$dyn_storage_ptr","typeString":"struct PermissionLib.MultiTargetPermission[]"}},"visibility":"internal"}],"src":"3483:58:81"},"scope":14273,"src":"3367:175:81","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":14267,"nodeType":"StructuredDocumentation","src":"3548:389:81","text":"@notice Returns the plugin implementation address.\n @return The address of the plugin implementation contract.\n @dev The implementation can be instantiated via the `new` keyword, cloned via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)), or proxied via the UUPS proxy pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822))."},"functionSelector":"5c60da1b","id":14272,"implemented":false,"kind":"function","modifiers":[],"name":"implementation","nameLocation":"3951:14:81","nodeType":"FunctionDefinition","parameters":{"id":14268,"nodeType":"ParameterList","parameters":[],"src":"3965:2:81"},"returnParameters":{"id":14271,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14270,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14272,"src":"3991:7:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14269,"name":"address","nodeType":"ElementaryTypeName","src":"3991:7:81","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3990:9:81"},"scope":14273,"src":"3942:58:81","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":14274,"src":"493:3509:81","usedErrors":[]}],"src":"47:3956:81"},"id":81},"src/plugin/setup/PluginSetup.sol":{"ast":{"absolutePath":"src/plugin/setup/PluginSetup.sol","exportedSymbols":{"ERC165":[9731],"IPluginSetup":[14273],"IProtocolVersion":[14744],"PluginSetup":[14371],"ProtocolVersion":[14766]},"id":14372,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":14275,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:82"},{"absolutePath":"@openzeppelin/contracts/utils/introspection/ERC165.sol","file":"@openzeppelin/contracts/utils/introspection/ERC165.sol","id":14277,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":14372,"sourceUnit":9732,"src":"72:78:82","symbolAliases":[{"foreign":{"id":14276,"name":"ERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9731,"src":"80:6:82","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/utils/versioning/IProtocolVersion.sol","file":"../../utils/versioning/IProtocolVersion.sol","id":14279,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":14372,"sourceUnit":14745,"src":"152:77:82","symbolAliases":[{"foreign":{"id":14278,"name":"IProtocolVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14744,"src":"160:16:82","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/utils/versioning/ProtocolVersion.sol","file":"../../utils/versioning/ProtocolVersion.sol","id":14281,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":14372,"sourceUnit":14767,"src":"230:75:82","symbolAliases":[{"foreign":{"id":14280,"name":"ProtocolVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14766,"src":"238:15:82","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/plugin/setup/IPluginSetup.sol","file":"./IPluginSetup.sol","id":14283,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":14372,"sourceUnit":14274,"src":"306:48:82","symbolAliases":[{"foreign":{"id":14282,"name":"IPluginSetup","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14273,"src":"314:12:82","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":14285,"name":"ERC165","nameLocations":["783:6:82"],"nodeType":"IdentifierPath","referencedDeclaration":9731,"src":"783:6:82"},"id":14286,"nodeType":"InheritanceSpecifier","src":"783:6:82"},{"baseName":{"id":14287,"name":"IPluginSetup","nameLocations":["791:12:82"],"nodeType":"IdentifierPath","referencedDeclaration":14273,"src":"791:12:82"},"id":14288,"nodeType":"InheritanceSpecifier","src":"791:12:82"},{"baseName":{"id":14289,"name":"ProtocolVersion","nameLocations":["805:15:82"],"nodeType":"IdentifierPath","referencedDeclaration":14766,"src":"805:15:82"},"id":14290,"nodeType":"InheritanceSpecifier","src":"805:15:82"}],"canonicalName":"PluginSetup","contractDependencies":[],"contractKind":"contract","documentation":{"id":14284,"nodeType":"StructuredDocumentation","src":"356:394:82","text":"@title PluginSetup\n @author Aragon X - 2022-2024\n @notice An abstract contract to inherit from to implement the plugin setup for non-upgradeable plugins, i.e,\n - `Plugin` being deployed via the `new` keyword\n - `PluginCloneable` being deployed via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)).\n @custom:security-contact sirt@aragon.org"},"fullyImplemented":false,"id":14371,"linearizedBaseContracts":[14371,14766,14744,14273,9731,9743],"name":"PluginSetup","nameLocation":"768:11:82","nodeType":"ContractDefinition","nodes":[{"constant":false,"documentation":{"id":14291,"nodeType":"StructuredDocumentation","src":"827:230:82","text":"@notice The address of the plugin implementation contract for initial block explorer verification and, in the case of `PluginClonable` implementations, to create [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167) clones from."},"id":14293,"mutability":"immutable","name":"IMPLEMENTATION","nameLocation":"1089:14:82","nodeType":"VariableDeclaration","scope":14371,"src":"1062:41:82","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14292,"name":"address","nodeType":"ElementaryTypeName","src":"1062:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"documentation":{"id":14294,"nodeType":"StructuredDocumentation","src":"1110:84:82","text":"@notice Thrown when attempting to prepare an update on a non-upgradeable plugin."},"errorSelector":"a1128101","id":14296,"name":"NonUpgradeablePlugin","nameLocation":"1205:20:82","nodeType":"ErrorDefinition","parameters":{"id":14295,"nodeType":"ParameterList","parameters":[],"src":"1225:2:82"},"src":"1199:29:82"},{"body":{"id":14306,"nodeType":"Block","src":"1444:49:82","statements":[{"expression":{"id":14304,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14302,"name":"IMPLEMENTATION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14293,"src":"1454:14:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":14303,"name":"_implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14299,"src":"1471:15:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1454:32:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":14305,"nodeType":"ExpressionStatement","src":"1454:32:82"}]},"documentation":{"id":14297,"nodeType":"StructuredDocumentation","src":"1234:168:82","text":"@notice The contract constructor, that setting the plugin implementation contract.\n @param _implementation The address of the plugin implementation contract."},"id":14307,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":14300,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14299,"mutability":"mutable","name":"_implementation","nameLocation":"1427:15:82","nodeType":"VariableDeclaration","scope":14307,"src":"1419:23:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14298,"name":"address","nodeType":"ElementaryTypeName","src":"1419:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1418:25:82"},"returnParameters":{"id":14301,"nodeType":"ParameterList","parameters":[],"src":"1444:0:82"},"scope":14371,"src":"1407:86:82","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[14253],"body":{"id":14331,"nodeType":"Block","src":"1820:84:82","statements":[{"expression":{"components":[{"id":14323,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14310,"src":"1831:4:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":14324,"name":"_fromBuild","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14312,"src":"1837:10:82","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"id":14325,"name":"_payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14315,"src":"1849:8:82","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$14224_calldata_ptr","typeString":"struct IPluginSetup.SetupPayload calldata"}}],"id":14326,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1830:28:82","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint16_$_t_struct$_SetupPayload_$14224_calldata_ptr_$","typeString":"tuple(address,uint16,struct IPluginSetup.SetupPayload calldata)"}},"id":14327,"nodeType":"ExpressionStatement","src":"1830:28:82"},{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":14328,"name":"NonUpgradeablePlugin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14296,"src":"1875:20:82","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":14329,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1875:22:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14330,"nodeType":"RevertStatement","src":"1868:29:82"}]},"documentation":{"id":14308,"nodeType":"StructuredDocumentation","src":"1499:135:82","text":"@inheritdoc IPluginSetup\n @dev Since the underlying plugin is non-upgradeable, this non-virtual function must always revert."},"functionSelector":"a8a9c29e","id":14332,"implemented":true,"kind":"function","modifiers":[],"name":"prepareUpdate","nameLocation":"1648:13:82","nodeType":"FunctionDefinition","parameters":{"id":14316,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14310,"mutability":"mutable","name":"_dao","nameLocation":"1679:4:82","nodeType":"VariableDeclaration","scope":14332,"src":"1671:12:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14309,"name":"address","nodeType":"ElementaryTypeName","src":"1671:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14312,"mutability":"mutable","name":"_fromBuild","nameLocation":"1700:10:82","nodeType":"VariableDeclaration","scope":14332,"src":"1693:17:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":14311,"name":"uint16","nodeType":"ElementaryTypeName","src":"1693:6:82","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":14315,"mutability":"mutable","name":"_payload","nameLocation":"1742:8:82","nodeType":"VariableDeclaration","scope":14332,"src":"1720:30:82","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$14224_calldata_ptr","typeString":"struct IPluginSetup.SetupPayload"},"typeName":{"id":14314,"nodeType":"UserDefinedTypeName","pathNode":{"id":14313,"name":"SetupPayload","nameLocations":["1720:12:82"],"nodeType":"IdentifierPath","referencedDeclaration":14224,"src":"1720:12:82"},"referencedDeclaration":14224,"src":"1720:12:82","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$14224_storage_ptr","typeString":"struct IPluginSetup.SetupPayload"}},"visibility":"internal"}],"src":"1661:95:82"},"returnParameters":{"id":14322,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14318,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14332,"src":"1780:12:82","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":14317,"name":"bytes","nodeType":"ElementaryTypeName","src":"1780:5:82","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":14321,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14332,"src":"1794:24:82","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$14216_memory_ptr","typeString":"struct IPluginSetup.PreparedSetupData"},"typeName":{"id":14320,"nodeType":"UserDefinedTypeName","pathNode":{"id":14319,"name":"PreparedSetupData","nameLocations":["1794:17:82"],"nodeType":"IdentifierPath","referencedDeclaration":14216,"src":"1794:17:82"},"referencedDeclaration":14216,"src":"1794:17:82","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$14216_storage_ptr","typeString":"struct IPluginSetup.PreparedSetupData"}},"visibility":"internal"}],"src":"1779:40:82"},"scope":14371,"src":"1639:265:82","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[9730],"body":{"id":14360,"nodeType":"Block","src":"2204:201:82","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":14358,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":14353,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":14346,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14341,"name":"_interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14335,"src":"2233:12:82","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":14343,"name":"IPluginSetup","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14273,"src":"2254:12:82","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IPluginSetup_$14273_$","typeString":"type(contract IPluginSetup)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IPluginSetup_$14273_$","typeString":"type(contract IPluginSetup)"}],"id":14342,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"2249:4:82","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":14344,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2249:18:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IPluginSetup_$14273","typeString":"type(contract IPluginSetup)"}},"id":14345,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2268:11:82","memberName":"interfaceId","nodeType":"MemberAccess","src":"2249:30:82","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"2233:46:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":14352,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14347,"name":"_interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14335,"src":"2295:12:82","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":14349,"name":"IProtocolVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14744,"src":"2316:16:82","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IProtocolVersion_$14744_$","typeString":"type(contract IProtocolVersion)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IProtocolVersion_$14744_$","typeString":"type(contract IProtocolVersion)"}],"id":14348,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"2311:4:82","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":14350,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2311:22:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IProtocolVersion_$14744","typeString":"type(contract IProtocolVersion)"}},"id":14351,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2334:11:82","memberName":"interfaceId","nodeType":"MemberAccess","src":"2311:34:82","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"2295:50:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2233:112:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":14356,"name":"_interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14335,"src":"2385:12:82","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":14354,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967271,"src":"2361:5:82","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_PluginSetup_$14371_$","typeString":"type(contract super PluginSetup)"}},"id":14355,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2367:17:82","memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":9730,"src":"2361:23:82","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bool_$","typeString":"function (bytes4) view returns (bool)"}},"id":14357,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2361:37:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2233:165:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":14340,"id":14359,"nodeType":"Return","src":"2214:184:82"}]},"documentation":{"id":14333,"nodeType":"StructuredDocumentation","src":"1910:197:82","text":"@notice Checks if this or the parent contract supports an interface by its ID.\n @param _interfaceId The ID of the interface.\n @return Returns `true` if the interface is supported."},"functionSelector":"01ffc9a7","id":14361,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"2121:17:82","nodeType":"FunctionDefinition","overrides":{"id":14337,"nodeType":"OverrideSpecifier","overrides":[],"src":"2180:8:82"},"parameters":{"id":14336,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14335,"mutability":"mutable","name":"_interfaceId","nameLocation":"2146:12:82","nodeType":"VariableDeclaration","scope":14361,"src":"2139:19:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":14334,"name":"bytes4","nodeType":"ElementaryTypeName","src":"2139:6:82","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"2138:21:82"},"returnParameters":{"id":14340,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14339,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14361,"src":"2198:4:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":14338,"name":"bool","nodeType":"ElementaryTypeName","src":"2198:4:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2197:6:82"},"scope":14371,"src":"2112:293:82","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[14272],"body":{"id":14369,"nodeType":"Block","src":"2500:38:82","statements":[{"expression":{"id":14367,"name":"IMPLEMENTATION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14293,"src":"2517:14:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":14366,"id":14368,"nodeType":"Return","src":"2510:21:82"}]},"documentation":{"id":14362,"nodeType":"StructuredDocumentation","src":"2411:28:82","text":"@inheritdoc IPluginSetup"},"functionSelector":"5c60da1b","id":14370,"implemented":true,"kind":"function","modifiers":[],"name":"implementation","nameLocation":"2453:14:82","nodeType":"FunctionDefinition","parameters":{"id":14363,"nodeType":"ParameterList","parameters":[],"src":"2467:2:82"},"returnParameters":{"id":14366,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14365,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14370,"src":"2491:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14364,"name":"address","nodeType":"ElementaryTypeName","src":"2491:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2490:9:82"},"scope":14371,"src":"2444:94:82","stateMutability":"view","virtual":false,"visibility":"public"}],"scope":14372,"src":"750:1790:82","usedErrors":[14296]}],"src":"47:2494:82"},"id":82},"src/plugin/setup/PluginUpgradeableSetup.sol":{"ast":{"absolutePath":"src/plugin/setup/PluginUpgradeableSetup.sol","exportedSymbols":{"ERC165":[9731],"IPluginSetup":[14273],"IProtocolVersion":[14744],"PluginUpgradeableSetup":[14448],"ProtocolVersion":[14766]},"id":14449,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":14373,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:83"},{"absolutePath":"@openzeppelin/contracts/utils/introspection/ERC165.sol","file":"@openzeppelin/contracts/utils/introspection/ERC165.sol","id":14375,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":14449,"sourceUnit":9732,"src":"72:78:83","symbolAliases":[{"foreign":{"id":14374,"name":"ERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9731,"src":"80:6:83","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/utils/versioning/IProtocolVersion.sol","file":"../../utils/versioning/IProtocolVersion.sol","id":14377,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":14449,"sourceUnit":14745,"src":"152:77:83","symbolAliases":[{"foreign":{"id":14376,"name":"IProtocolVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14744,"src":"160:16:83","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/utils/versioning/ProtocolVersion.sol","file":"../../utils/versioning/ProtocolVersion.sol","id":14379,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":14449,"sourceUnit":14767,"src":"230:75:83","symbolAliases":[{"foreign":{"id":14378,"name":"ProtocolVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14766,"src":"238:15:83","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/plugin/setup/IPluginSetup.sol","file":"./IPluginSetup.sol","id":14381,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":14449,"sourceUnit":14274,"src":"306:48:83","symbolAliases":[{"foreign":{"id":14380,"name":"IPluginSetup","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14273,"src":"314:12:83","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":14383,"name":"ERC165","nameLocations":["796:6:83"],"nodeType":"IdentifierPath","referencedDeclaration":9731,"src":"796:6:83"},"id":14384,"nodeType":"InheritanceSpecifier","src":"796:6:83"},{"baseName":{"id":14385,"name":"IPluginSetup","nameLocations":["804:12:83"],"nodeType":"IdentifierPath","referencedDeclaration":14273,"src":"804:12:83"},"id":14386,"nodeType":"InheritanceSpecifier","src":"804:12:83"},{"baseName":{"id":14387,"name":"ProtocolVersion","nameLocations":["818:15:83"],"nodeType":"IdentifierPath","referencedDeclaration":14766,"src":"818:15:83"},"id":14388,"nodeType":"InheritanceSpecifier","src":"818:15:83"}],"canonicalName":"PluginUpgradeableSetup","contractDependencies":[],"contractKind":"contract","documentation":{"id":14382,"nodeType":"StructuredDocumentation","src":"356:396:83","text":"@title PluginUpgradeableSetup\n @author Aragon X - 2022-2024\n @notice An abstract contract to inherit from to implement the plugin setup for upgradeable plugins, i.e, `PluginUUPSUpgradeable` being deployed via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822) and [ERC-1967](https://eips.ethereum.org/EIPS/eip-1967)).\n @custom:security-contact sirt@aragon.org"},"fullyImplemented":false,"id":14448,"linearizedBaseContracts":[14448,14766,14744,14273,9731,9743],"name":"PluginUpgradeableSetup","nameLocation":"770:22:83","nodeType":"ContractDefinition","nodes":[{"constant":false,"documentation":{"id":14389,"nodeType":"StructuredDocumentation","src":"840:194:83","text":"@notice The address of the plugin implementation contract for initial block explorer verification\n and to create [ERC-1967](https://eips.ethereum.org/EIPS/eip-1967) UUPS proxies from."},"id":14391,"mutability":"immutable","name":"IMPLEMENTATION","nameLocation":"1066:14:83","nodeType":"VariableDeclaration","scope":14448,"src":"1039:41:83","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14390,"name":"address","nodeType":"ElementaryTypeName","src":"1039:7:83","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"documentation":{"id":14392,"nodeType":"StructuredDocumentation","src":"1087:227:83","text":"@notice Thrown when an update path is not available, for example, if this is the initial build.\n @param fromBuild The build number to update from.\n @param thisBuild The build number of this setup to update to."},"errorSelector":"1313218a","id":14398,"name":"InvalidUpdatePath","nameLocation":"1325:17:83","nodeType":"ErrorDefinition","parameters":{"id":14397,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14394,"mutability":"mutable","name":"fromBuild","nameLocation":"1350:9:83","nodeType":"VariableDeclaration","scope":14398,"src":"1343:16:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":14393,"name":"uint16","nodeType":"ElementaryTypeName","src":"1343:6:83","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":14396,"mutability":"mutable","name":"thisBuild","nameLocation":"1368:9:83","nodeType":"VariableDeclaration","scope":14398,"src":"1361:16:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":14395,"name":"uint16","nodeType":"ElementaryTypeName","src":"1361:6:83","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"1342:36:83"},"src":"1319:60:83"},{"body":{"id":14408,"nodeType":"Block","src":"1595:49:83","statements":[{"expression":{"id":14406,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14404,"name":"IMPLEMENTATION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14391,"src":"1605:14:83","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":14405,"name":"_implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14401,"src":"1622:15:83","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1605:32:83","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":14407,"nodeType":"ExpressionStatement","src":"1605:32:83"}]},"documentation":{"id":14399,"nodeType":"StructuredDocumentation","src":"1385:168:83","text":"@notice The contract constructor, that setting the plugin implementation contract.\n @param _implementation The address of the plugin implementation contract."},"id":14409,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":14402,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14401,"mutability":"mutable","name":"_implementation","nameLocation":"1578:15:83","nodeType":"VariableDeclaration","scope":14409,"src":"1570:23:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14400,"name":"address","nodeType":"ElementaryTypeName","src":"1570:7:83","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1569:25:83"},"returnParameters":{"id":14403,"nodeType":"ParameterList","parameters":[],"src":"1595:0:83"},"scope":14448,"src":"1558:86:83","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[9730],"body":{"id":14437,"nodeType":"Block","src":"1944:201:83","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":14435,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":14430,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":14423,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14418,"name":"_interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14412,"src":"1973:12:83","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":14420,"name":"IPluginSetup","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14273,"src":"1994:12:83","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IPluginSetup_$14273_$","typeString":"type(contract IPluginSetup)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IPluginSetup_$14273_$","typeString":"type(contract IPluginSetup)"}],"id":14419,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"1989:4:83","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":14421,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1989:18:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IPluginSetup_$14273","typeString":"type(contract IPluginSetup)"}},"id":14422,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2008:11:83","memberName":"interfaceId","nodeType":"MemberAccess","src":"1989:30:83","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"1973:46:83","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":14429,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14424,"name":"_interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14412,"src":"2035:12:83","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":14426,"name":"IProtocolVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14744,"src":"2056:16:83","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IProtocolVersion_$14744_$","typeString":"type(contract IProtocolVersion)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IProtocolVersion_$14744_$","typeString":"type(contract IProtocolVersion)"}],"id":14425,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"2051:4:83","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":14427,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2051:22:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IProtocolVersion_$14744","typeString":"type(contract IProtocolVersion)"}},"id":14428,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2074:11:83","memberName":"interfaceId","nodeType":"MemberAccess","src":"2051:34:83","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"2035:50:83","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1973:112:83","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":14433,"name":"_interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14412,"src":"2125:12:83","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":14431,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967271,"src":"2101:5:83","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_PluginUpgradeableSetup_$14448_$","typeString":"type(contract super PluginUpgradeableSetup)"}},"id":14432,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2107:17:83","memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":9730,"src":"2101:23:83","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bool_$","typeString":"function (bytes4) view returns (bool)"}},"id":14434,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2101:37:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1973:165:83","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":14417,"id":14436,"nodeType":"Return","src":"1954:184:83"}]},"documentation":{"id":14410,"nodeType":"StructuredDocumentation","src":"1650:197:83","text":"@notice Checks if this or the parent contract supports an interface by its ID.\n @param _interfaceId The ID of the interface.\n @return Returns `true` if the interface is supported."},"functionSelector":"01ffc9a7","id":14438,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"1861:17:83","nodeType":"FunctionDefinition","overrides":{"id":14414,"nodeType":"OverrideSpecifier","overrides":[],"src":"1920:8:83"},"parameters":{"id":14413,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14412,"mutability":"mutable","name":"_interfaceId","nameLocation":"1886:12:83","nodeType":"VariableDeclaration","scope":14438,"src":"1879:19:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":14411,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1879:6:83","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"1878:21:83"},"returnParameters":{"id":14417,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14416,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14438,"src":"1938:4:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":14415,"name":"bool","nodeType":"ElementaryTypeName","src":"1938:4:83","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1937:6:83"},"scope":14448,"src":"1852:293:83","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[14272],"body":{"id":14446,"nodeType":"Block","src":"2240:38:83","statements":[{"expression":{"id":14444,"name":"IMPLEMENTATION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14391,"src":"2257:14:83","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":14443,"id":14445,"nodeType":"Return","src":"2250:21:83"}]},"documentation":{"id":14439,"nodeType":"StructuredDocumentation","src":"2151:28:83","text":"@inheritdoc IPluginSetup"},"functionSelector":"5c60da1b","id":14447,"implemented":true,"kind":"function","modifiers":[],"name":"implementation","nameLocation":"2193:14:83","nodeType":"FunctionDefinition","parameters":{"id":14440,"nodeType":"ParameterList","parameters":[],"src":"2207:2:83"},"returnParameters":{"id":14443,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14442,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14447,"src":"2231:7:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14441,"name":"address","nodeType":"ElementaryTypeName","src":"2231:7:83","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2230:9:83"},"scope":14448,"src":"2184:94:83","stateMutability":"view","virtual":false,"visibility":"public"}],"scope":14449,"src":"752:1528:83","usedErrors":[14398]}],"src":"47:2234:83"},"id":83},"src/utils/deployment/ProxyFactory.sol":{"ast":{"absolutePath":"src/utils/deployment/ProxyFactory.sol","exportedSymbols":{"ProxyFactory":[14525],"ProxyLib":[14593]},"id":14526,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":14450,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:84"},{"absolutePath":"src/utils/deployment/ProxyLib.sol","file":"./ProxyLib.sol","id":14452,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":14526,"sourceUnit":14594,"src":"72:40:84","symbolAliases":[{"foreign":{"id":14451,"name":"ProxyLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14593,"src":"80:8:84","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"ProxyFactory","contractDependencies":[5389],"contractKind":"contract","documentation":{"id":14453,"nodeType":"StructuredDocumentation","src":"114:301:84","text":"@title ProxyFactory\n @author Aragon X - 2024\n @notice A factory to deploy proxies via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)) and minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)).\n @custom:security-contact sirt@aragon.org"},"fullyImplemented":true,"id":14525,"linearizedBaseContracts":[14525],"name":"ProxyFactory","nameLocation":"424:12:84","nodeType":"ContractDefinition","nodes":[{"global":false,"id":14456,"libraryName":{"id":14454,"name":"ProxyLib","nameLocations":["449:8:84"],"nodeType":"IdentifierPath","referencedDeclaration":14593,"src":"449:8:84"},"nodeType":"UsingForDirective","src":"443:27:84","typeName":{"id":14455,"name":"address","nodeType":"ElementaryTypeName","src":"462:7:84","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},{"constant":false,"documentation":{"id":14457,"nodeType":"StructuredDocumentation","src":"475:49:84","text":"@notice The immutable logic contract address."},"id":14459,"mutability":"immutable","name":"IMPLEMENTATION","nameLocation":"556:14:84","nodeType":"VariableDeclaration","scope":14525,"src":"529:41:84","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14458,"name":"address","nodeType":"ElementaryTypeName","src":"529:7:84","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"anonymous":false,"documentation":{"id":14460,"nodeType":"StructuredDocumentation","src":"577:94:84","text":"@notice Emitted when an proxy contract is created.\n @param proxy The proxy address."},"eventSelector":"00fffc2da0b561cae30d9826d37709e9421c4725faebc226cbbb7ef5fc5e7349","id":14464,"name":"ProxyCreated","nameLocation":"682:12:84","nodeType":"EventDefinition","parameters":{"id":14463,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14462,"indexed":false,"mutability":"mutable","name":"proxy","nameLocation":"703:5:84","nodeType":"VariableDeclaration","scope":14464,"src":"695:13:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14461,"name":"address","nodeType":"ElementaryTypeName","src":"695:7:84","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"694:15:84"},"src":"676:34:84"},{"body":{"id":14474,"nodeType":"Block","src":"884:49:84","statements":[{"expression":{"id":14472,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14470,"name":"IMPLEMENTATION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14459,"src":"894:14:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":14471,"name":"_implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14467,"src":"911:15:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"894:32:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":14473,"nodeType":"ExpressionStatement","src":"894:32:84"}]},"documentation":{"id":14465,"nodeType":"StructuredDocumentation","src":"716:126:84","text":"@notice Initializes the contract with a logic contract address.\n @param _implementation The logic contract address."},"id":14475,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":14468,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14467,"mutability":"mutable","name":"_implementation","nameLocation":"867:15:84","nodeType":"VariableDeclaration","scope":14475,"src":"859:23:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14466,"name":"address","nodeType":"ElementaryTypeName","src":"859:7:84","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"858:25:84"},"returnParameters":{"id":14469,"nodeType":"ParameterList","parameters":[],"src":"884:0:84"},"scope":14525,"src":"847:86:84","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":14494,"nodeType":"Block","src":"1596:105:84","statements":[{"expression":{"id":14488,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14483,"name":"proxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14481,"src":"1606:5:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":14486,"name":"_data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14478,"src":"1645:5:84","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":14484,"name":"IMPLEMENTATION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14459,"src":"1614:14:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":14485,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1629:15:84","memberName":"deployUUPSProxy","nodeType":"MemberAccess","referencedDeclaration":14563,"src":"1614:30:84","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_address_$bound_to$_t_address_$","typeString":"function (address,bytes memory) returns (address)"}},"id":14487,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1614:37:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1606:45:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":14489,"nodeType":"ExpressionStatement","src":"1606:45:84"},{"eventCall":{"arguments":[{"id":14491,"name":"proxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14481,"src":"1687:5:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":14490,"name":"ProxyCreated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14464,"src":"1666:12:84","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":14492,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":["1680:5:84"],"names":["proxy"],"nodeType":"FunctionCall","src":"1666:28:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14493,"nodeType":"EmitStatement","src":"1661:33:84"}]},"documentation":{"id":14476,"nodeType":"StructuredDocumentation","src":"939:574:84","text":"@notice Creates an [ERC-1967](https://eips.ethereum.org/EIPS/eip-1967) proxy contract pointing to the pre-set logic contract.\n @param _data The initialization data for this contract.\n @return proxy The address of the proxy contract created.\n @dev If `_data` is non-empty, it is used in a delegate call to the `_implementation` contract. This will typically be an encoded function call initializing the proxy (see [OpenZeppelin ERC1967Proxy-constructor](https://docs.openzeppelin.com/contracts/4.x/api/proxy#ERC1967Proxy-constructor-address-bytes-))."},"functionSelector":"5c5c278b","id":14495,"implemented":true,"kind":"function","modifiers":[],"name":"deployUUPSProxy","nameLocation":"1527:15:84","nodeType":"FunctionDefinition","parameters":{"id":14479,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14478,"mutability":"mutable","name":"_data","nameLocation":"1556:5:84","nodeType":"VariableDeclaration","scope":14495,"src":"1543:18:84","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":14477,"name":"bytes","nodeType":"ElementaryTypeName","src":"1543:5:84","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1542:20:84"},"returnParameters":{"id":14482,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14481,"mutability":"mutable","name":"proxy","nameLocation":"1589:5:84","nodeType":"VariableDeclaration","scope":14495,"src":"1581:13:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14480,"name":"address","nodeType":"ElementaryTypeName","src":"1581:7:84","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1580:15:84"},"scope":14525,"src":"1518:183:84","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":14514,"nodeType":"Block","src":"2231:108:84","statements":[{"expression":{"id":14508,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14503,"name":"proxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14501,"src":"2241:5:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":14506,"name":"_data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14498,"src":"2283:5:84","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":14504,"name":"IMPLEMENTATION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14459,"src":"2249:14:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":14505,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2264:18:84","memberName":"deployMinimalProxy","nodeType":"MemberAccess","referencedDeclaration":14592,"src":"2249:33:84","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_address_$bound_to$_t_address_$","typeString":"function (address,bytes memory) returns (address)"}},"id":14507,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2249:40:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2241:48:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":14509,"nodeType":"ExpressionStatement","src":"2241:48:84"},{"eventCall":{"arguments":[{"id":14511,"name":"proxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14501,"src":"2325:5:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":14510,"name":"ProxyCreated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14464,"src":"2304:12:84","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":14512,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":["2318:5:84"],"names":["proxy"],"nodeType":"FunctionCall","src":"2304:28:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14513,"nodeType":"EmitStatement","src":"2299:33:84"}]},"documentation":{"id":14496,"nodeType":"StructuredDocumentation","src":"1707:438:84","text":"@notice Creates an [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167) minimal proxy contract pointing to the pre-set logic contract.\n @param _data The initialization data for this contract.\n @return proxy The address of the proxy contract created.\n @dev If `_data` is non-empty, it is used in a call to the clone contract. This will typically be an encoded function call initializing the storage of the contract."},"functionSelector":"93042ea3","id":14515,"implemented":true,"kind":"function","modifiers":[],"name":"deployMinimalProxy","nameLocation":"2159:18:84","nodeType":"FunctionDefinition","parameters":{"id":14499,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14498,"mutability":"mutable","name":"_data","nameLocation":"2191:5:84","nodeType":"VariableDeclaration","scope":14515,"src":"2178:18:84","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":14497,"name":"bytes","nodeType":"ElementaryTypeName","src":"2178:5:84","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2177:20:84"},"returnParameters":{"id":14502,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14501,"mutability":"mutable","name":"proxy","nameLocation":"2224:5:84","nodeType":"VariableDeclaration","scope":14515,"src":"2216:13:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14500,"name":"address","nodeType":"ElementaryTypeName","src":"2216:7:84","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2215:15:84"},"scope":14525,"src":"2150:189:84","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":14523,"nodeType":"Block","src":"2754:38:84","statements":[{"expression":{"id":14521,"name":"IMPLEMENTATION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14459,"src":"2771:14:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":14520,"id":14522,"nodeType":"Return","src":"2764:21:84"}]},"documentation":{"id":14516,"nodeType":"StructuredDocumentation","src":"2345:348:84","text":"@notice Returns the implementation contract address.\n @return The address of the implementation contract.\n @dev The implementation can be cloned via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)), or proxied via the UUPS proxy pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822))."},"functionSelector":"5c60da1b","id":14524,"implemented":true,"kind":"function","modifiers":[],"name":"implementation","nameLocation":"2707:14:84","nodeType":"FunctionDefinition","parameters":{"id":14517,"nodeType":"ParameterList","parameters":[],"src":"2721:2:84"},"returnParameters":{"id":14520,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14519,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14524,"src":"2745:7:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14518,"name":"address","nodeType":"ElementaryTypeName","src":"2745:7:84","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2744:9:84"},"scope":14525,"src":"2698:94:84","stateMutability":"view","virtual":false,"visibility":"public"}],"scope":14526,"src":"415:2379:84","usedErrors":[]}],"src":"47:2748:84"},"id":84},"src/utils/deployment/ProxyLib.sol":{"ast":{"absolutePath":"src/utils/deployment/ProxyLib.sol","exportedSymbols":{"Address":[9264],"Clones":[5352],"ERC1967Proxy":[5389],"ProxyLib":[14593]},"id":14594,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":14527,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:85"},{"absolutePath":"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol","file":"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol","id":14529,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":14594,"sourceUnit":5390,"src":"72:84:85","symbolAliases":[{"foreign":{"id":14528,"name":"ERC1967Proxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5389,"src":"80:12:85","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/proxy/Clones.sol","file":"@openzeppelin/contracts/proxy/Clones.sol","id":14531,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":14594,"sourceUnit":5353,"src":"157:64:85","symbolAliases":[{"foreign":{"id":14530,"name":"Clones","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5352,"src":"165:6:85","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Address.sol","file":"@openzeppelin/contracts/utils/Address.sol","id":14533,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":14594,"sourceUnit":9265,"src":"222:66:85","symbolAliases":[{"foreign":{"id":14532,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9264,"src":"230:7:85","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"ProxyLib","contractDependencies":[],"contractKind":"library","documentation":{"id":14534,"nodeType":"StructuredDocumentation","src":"290:328:85","text":"@title ProxyLib\n @author Aragon X - 2024\n @notice A library containing methods for the deployment of proxies via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)) and minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)).\n @custom:security-contact sirt@aragon.org"},"fullyImplemented":true,"id":14593,"linearizedBaseContracts":[14593],"name":"ProxyLib","nameLocation":"626:8:85","nodeType":"ContractDefinition","nodes":[{"global":false,"id":14537,"libraryName":{"id":14535,"name":"Address","nameLocations":["647:7:85"],"nodeType":"IdentifierPath","referencedDeclaration":9264,"src":"647:7:85"},"nodeType":"UsingForDirective","src":"641:26:85","typeName":{"id":14536,"name":"address","nodeType":"ElementaryTypeName","src":"659:7:85","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},{"global":false,"id":14540,"libraryName":{"id":14538,"name":"Clones","nameLocations":["678:6:85"],"nodeType":"IdentifierPath","referencedDeclaration":5352,"src":"678:6:85"},"nodeType":"UsingForDirective","src":"672:25:85","typeName":{"id":14539,"name":"address","nodeType":"ElementaryTypeName","src":"689:7:85","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},{"body":{"id":14562,"nodeType":"Block","src":"1543:94:85","statements":[{"expression":{"id":14560,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14550,"name":"uupsProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14548,"src":"1553:9:85","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":14556,"name":"_logic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14543,"src":"1599:6:85","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":14557,"name":"_initCalldata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14545,"src":"1614:13:85","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":14555,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"NewExpression","src":"1573:16:85","typeDescriptions":{"typeIdentifier":"t_function_creation_payable$_t_address_$_t_bytes_memory_ptr_$returns$_t_contract$_ERC1967Proxy_$5389_$","typeString":"function (address,bytes memory) payable returns (contract ERC1967Proxy)"},"typeName":{"id":14554,"nodeType":"UserDefinedTypeName","pathNode":{"id":14553,"name":"ERC1967Proxy","nameLocations":["1577:12:85"],"nodeType":"IdentifierPath","referencedDeclaration":5389,"src":"1577:12:85"},"referencedDeclaration":5389,"src":"1577:12:85","typeDescriptions":{"typeIdentifier":"t_contract$_ERC1967Proxy_$5389","typeString":"contract ERC1967Proxy"}}},"id":14558,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":["1591:6:85","1607:5:85"],"names":["_logic","_data"],"nodeType":"FunctionCall","src":"1573:56:85","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ERC1967Proxy_$5389","typeString":"contract ERC1967Proxy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC1967Proxy_$5389","typeString":"contract ERC1967Proxy"}],"id":14552,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1565:7:85","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":14551,"name":"address","nodeType":"ElementaryTypeName","src":"1565:7:85","typeDescriptions":{}}},"id":14559,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1565:65:85","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1553:77:85","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":14561,"nodeType":"ExpressionStatement","src":"1553:77:85"}]},"documentation":{"id":14541,"nodeType":"StructuredDocumentation","src":"703:707:85","text":"@notice Creates an [ERC-1967](https://eips.ethereum.org/EIPS/eip-1967) UUPS proxy contract pointing to a logic contract and allows to immediately initialize it.\n @param _logic The logic contract the proxy is pointing to.\n @param _initCalldata The initialization data for this contract.\n @return uupsProxy The address of the UUPS proxy contract created.\n @dev If `_initCalldata` is non-empty, it is used in a delegate call to the `_logic` contract. This will typically be an encoded function call initializing the storage of the proxy (see [OpenZeppelin ERC1967Proxy-constructor](https://docs.openzeppelin.com/contracts/4.x/api/proxy#ERC1967Proxy-constructor-address-bytes-))."},"id":14563,"implemented":true,"kind":"function","modifiers":[],"name":"deployUUPSProxy","nameLocation":"1424:15:85","nodeType":"FunctionDefinition","parameters":{"id":14546,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14543,"mutability":"mutable","name":"_logic","nameLocation":"1457:6:85","nodeType":"VariableDeclaration","scope":14563,"src":"1449:14:85","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14542,"name":"address","nodeType":"ElementaryTypeName","src":"1449:7:85","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14545,"mutability":"mutable","name":"_initCalldata","nameLocation":"1486:13:85","nodeType":"VariableDeclaration","scope":14563,"src":"1473:26:85","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":14544,"name":"bytes","nodeType":"ElementaryTypeName","src":"1473:5:85","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1439:66:85"},"returnParameters":{"id":14549,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14548,"mutability":"mutable","name":"uupsProxy","nameLocation":"1532:9:85","nodeType":"VariableDeclaration","scope":14563,"src":"1524:17:85","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14547,"name":"address","nodeType":"ElementaryTypeName","src":"1524:7:85","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1523:19:85"},"scope":14593,"src":"1415:222:85","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":14591,"nodeType":"Block","src":"2371:158:85","statements":[{"expression":{"id":14577,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14573,"name":"minimalProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14571,"src":"2381:12:85","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":14574,"name":"_logic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14566,"src":"2396:6:85","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":14575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2403:5:85","memberName":"clone","nodeType":"MemberAccess","referencedDeclaration":5295,"src":"2396:12:85","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$_t_address_$bound_to$_t_address_$","typeString":"function (address) returns (address)"}},"id":14576,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2396:14:85","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2381:29:85","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":14578,"nodeType":"ExpressionStatement","src":"2381:29:85"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14582,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":14579,"name":"_initCalldata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14568,"src":"2424:13:85","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":14580,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2438:6:85","memberName":"length","nodeType":"MemberAccess","src":"2424:20:85","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":14581,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2447:1:85","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2424:24:85","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14590,"nodeType":"IfStatement","src":"2420:103:85","trueBody":{"id":14589,"nodeType":"Block","src":"2450:73:85","statements":[{"expression":{"arguments":[{"id":14586,"name":"_initCalldata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14568,"src":"2497:13:85","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":14583,"name":"minimalProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14571,"src":"2464:12:85","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":14585,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2477:12:85","memberName":"functionCall","nodeType":"MemberAccess","referencedDeclaration":9004,"src":"2464:25:85","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$bound_to$_t_address_$","typeString":"function (address,bytes memory) returns (bytes memory)"}},"id":14587,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":["2491:4:85"],"names":["data"],"nodeType":"FunctionCall","src":"2464:48:85","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":14588,"nodeType":"ExpressionStatement","src":"2464:48:85"}]}}]},"documentation":{"id":14564,"nodeType":"StructuredDocumentation","src":"1643:589:85","text":"@notice Creates an [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167) minimal proxy contract, also known as clones, pointing to a logic contract and allows to immediately initialize it.\n @param _logic The logic contract the proxy is pointing to.\n @param _initCalldata The initialization data for this contract.\n @return minimalProxy The address of the minimal proxy contract created.\n @dev If `_initCalldata` is non-empty, it is used in a call to the clone contract. This will typically be an encoded function call initializing the storage of the contract."},"id":14592,"implemented":true,"kind":"function","modifiers":[],"name":"deployMinimalProxy","nameLocation":"2246:18:85","nodeType":"FunctionDefinition","parameters":{"id":14569,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14566,"mutability":"mutable","name":"_logic","nameLocation":"2282:6:85","nodeType":"VariableDeclaration","scope":14592,"src":"2274:14:85","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14565,"name":"address","nodeType":"ElementaryTypeName","src":"2274:7:85","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14568,"mutability":"mutable","name":"_initCalldata","nameLocation":"2311:13:85","nodeType":"VariableDeclaration","scope":14592,"src":"2298:26:85","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":14567,"name":"bytes","nodeType":"ElementaryTypeName","src":"2298:5:85","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2264:66:85"},"returnParameters":{"id":14572,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14571,"mutability":"mutable","name":"minimalProxy","nameLocation":"2357:12:85","nodeType":"VariableDeclaration","scope":14592,"src":"2349:20:85","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14570,"name":"address","nodeType":"ElementaryTypeName","src":"2349:7:85","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2348:22:85"},"scope":14593,"src":"2237:292:85","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":14594,"src":"618:1913:85","usedErrors":[]}],"src":"47:2485:85"},"id":85},"src/utils/math/BitMap.sol":{"ast":{"absolutePath":"src/utils/math/BitMap.sol","exportedSymbols":{"flipBit":[14637],"hasBit":[14619]},"id":14638,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":14595,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:86"},{"body":{"id":14618,"nodeType":"Block","src":"373:74:86","statements":[{"assignments":[14606],"declarations":[{"constant":false,"id":14606,"mutability":"mutable","name":"bitValue","nameLocation":"387:8:86","nodeType":"VariableDeclaration","scope":14618,"src":"379:16:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14605,"name":"uint256","nodeType":"ElementaryTypeName","src":"379:7:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":14613,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14612,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14607,"name":"bitmap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14598,"src":"398:6:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14610,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":14608,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"408:1:86","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":14609,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14600,"src":"413:5:86","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"408:10:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":14611,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"407:12:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"398:21:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"379:40:86"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14616,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14614,"name":"bitValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14606,"src":"432:8:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":14615,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"443:1:86","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"432:12:86","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":14604,"id":14617,"nodeType":"Return","src":"425:19:86"}]},"documentation":{"id":14596,"nodeType":"StructuredDocumentation","src":"72:236:86","text":"@param bitmap The `uint256` representation of bits.\n @param index The index number to check whether 1 or 0 is set.\n @return Returns `true` if the bit is set at `index` on `bitmap`.\n @custom:security-contact sirt@aragon.org"},"id":14619,"implemented":true,"kind":"freeFunction","modifiers":[],"name":"hasBit","nameLocation":"317:6:86","nodeType":"FunctionDefinition","parameters":{"id":14601,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14598,"mutability":"mutable","name":"bitmap","nameLocation":"332:6:86","nodeType":"VariableDeclaration","scope":14619,"src":"324:14:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14597,"name":"uint256","nodeType":"ElementaryTypeName","src":"324:7:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14600,"mutability":"mutable","name":"index","nameLocation":"346:5:86","nodeType":"VariableDeclaration","scope":14619,"src":"340:11:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":14599,"name":"uint8","nodeType":"ElementaryTypeName","src":"340:5:86","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"323:29:86"},"returnParameters":{"id":14604,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14603,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14619,"src":"367:4:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":14602,"name":"bool","nodeType":"ElementaryTypeName","src":"367:4:86","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"366:6:86"},"scope":14638,"src":"308:139:86","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":14636,"nodeType":"Block","src":"738:37:86","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14634,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14629,"name":"bitmap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14622,"src":"751:6:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14632,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":14630,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"761:1:86","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":14631,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14624,"src":"766:5:86","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"761:10:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":14633,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"760:12:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"751:21:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":14628,"id":14635,"nodeType":"Return","src":"744:28:86"}]},"documentation":{"id":14620,"nodeType":"StructuredDocumentation","src":"449:220:86","text":"@param bitmap The `uint256` representation of bits.\n @param index The index number to set the bit.\n @return Returns a new number in which the bit is set at `index`.\n @custom:security-contact sirt@aragon.org"},"id":14637,"implemented":true,"kind":"freeFunction","modifiers":[],"name":"flipBit","nameLocation":"678:7:86","nodeType":"FunctionDefinition","parameters":{"id":14625,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14622,"mutability":"mutable","name":"bitmap","nameLocation":"694:6:86","nodeType":"VariableDeclaration","scope":14637,"src":"686:14:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14621,"name":"uint256","nodeType":"ElementaryTypeName","src":"686:7:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14624,"mutability":"mutable","name":"index","nameLocation":"708:5:86","nodeType":"VariableDeclaration","scope":14637,"src":"702:11:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":14623,"name":"uint8","nodeType":"ElementaryTypeName","src":"702:5:86","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"685:29:86"},"returnParameters":{"id":14628,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14627,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14637,"src":"729:7:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14626,"name":"uint256","nodeType":"ElementaryTypeName","src":"729:7:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"728:9:86"},"scope":14638,"src":"669:106:86","stateMutability":"pure","virtual":false,"visibility":"internal"}],"src":"47:729:86"},"id":86},"src/utils/math/Ratio.sol":{"ast":{"absolutePath":"src/utils/math/Ratio.sol","exportedSymbols":{"RATIO_BASE":[14644],"RatioOutOfBounds":[14651],"_applyRatioCeiled":[14698]},"id":14699,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":14639,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:87"},{"constant":true,"id":14644,"mutability":"constant","name":"RATIO_BASE","nameLocation":"202:10:87","nodeType":"VariableDeclaration","scope":14699,"src":"185:37:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14640,"name":"uint256","nodeType":"ElementaryTypeName","src":"185:7:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"commonType":{"typeIdentifier":"t_rational_1000000_by_1","typeString":"int_const 1000000"},"id":14643,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":14641,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"215:2:87","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"36","id":14642,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"221:1:87","typeDescriptions":{"typeIdentifier":"t_rational_6_by_1","typeString":"int_const 6"},"value":"6"},"src":"215:7:87","typeDescriptions":{"typeIdentifier":"t_rational_1000000_by_1","typeString":"int_const 1000000"}},"visibility":"internal"},{"documentation":{"id":14645,"nodeType":"StructuredDocumentation","src":"225:146:87","text":"@notice Thrown if a ratio value exceeds the maximal value of `10**6`.\n @param limit The maximal value.\n @param actual The actual value."},"errorSelector":"cc80c195","id":14651,"name":"RatioOutOfBounds","nameLocation":"377:16:87","nodeType":"ErrorDefinition","parameters":{"id":14650,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14647,"mutability":"mutable","name":"limit","nameLocation":"402:5:87","nodeType":"VariableDeclaration","scope":14651,"src":"394:13:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14646,"name":"uint256","nodeType":"ElementaryTypeName","src":"394:7:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14649,"mutability":"mutable","name":"actual","nameLocation":"417:6:87","nodeType":"VariableDeclaration","scope":14651,"src":"409:14:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14648,"name":"uint256","nodeType":"ElementaryTypeName","src":"409:7:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"393:31:87"},"src":"371:54:87"},{"body":{"id":14697,"nodeType":"Block","src":"795:305:87","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14663,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14661,"name":"_ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14656,"src":"805:6:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":14662,"name":"RATIO_BASE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14644,"src":"814:10:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"805:19:87","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14670,"nodeType":"IfStatement","src":"801:102:87","trueBody":{"id":14669,"nodeType":"Block","src":"826:77:87","statements":[{"errorCall":{"arguments":[{"id":14665,"name":"RATIO_BASE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14644,"src":"868:10:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":14666,"name":"_ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14656,"src":"888:6:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14664,"name":"RatioOutOfBounds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14651,"src":"843:16:87","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256) pure"}},"id":14667,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":["861:5:87","880:6:87"],"names":["limit","actual"],"nodeType":"FunctionCall","src":"843:53:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14668,"nodeType":"RevertStatement","src":"836:60:87"}]}},{"expression":{"id":14675,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14671,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14654,"src":"909:6:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14674,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14672,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14654,"src":"918:6:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":14673,"name":"_ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14656,"src":"927:6:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"918:15:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"909:24:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14676,"nodeType":"ExpressionStatement","src":"909:24:87"},{"assignments":[14678],"declarations":[{"constant":false,"id":14678,"mutability":"mutable","name":"remainder","nameLocation":"947:9:87","nodeType":"VariableDeclaration","scope":14697,"src":"939:17:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14677,"name":"uint256","nodeType":"ElementaryTypeName","src":"939:7:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":14682,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14681,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14679,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14654,"src":"959:6:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"id":14680,"name":"RATIO_BASE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14644,"src":"968:10:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"959:19:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"939:39:87"},{"expression":{"id":14687,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14683,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14659,"src":"984:6:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14686,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14684,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14654,"src":"993:6:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":14685,"name":"RATIO_BASE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14644,"src":"1002:10:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"993:19:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"984:28:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14688,"nodeType":"ExpressionStatement","src":"984:28:87"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14691,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14689,"name":"remainder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14678,"src":"1057:9:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":14690,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1070:1:87","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1057:14:87","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14696,"nodeType":"IfStatement","src":"1053:45:87","trueBody":{"id":14695,"nodeType":"Block","src":"1073:25:87","statements":[{"expression":{"id":14693,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"1083:8:87","subExpression":{"id":14692,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14659,"src":"1085:6:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14694,"nodeType":"ExpressionStatement","src":"1083:8:87"}]}}]},"documentation":{"id":14652,"nodeType":"StructuredDocumentation","src":"427:279:87","text":"@notice Applies a ratio to a value and ceils the remainder.\n @param _value The value to which the ratio is applied.\n @param _ratio The ratio that must be in the interval `[0, 10**6]`.\n @return result The resulting value.\n @custom:security-contact sirt@aragon.org"},"id":14698,"implemented":true,"kind":"freeFunction","modifiers":[],"name":"_applyRatioCeiled","nameLocation":"715:17:87","nodeType":"FunctionDefinition","parameters":{"id":14657,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14654,"mutability":"mutable","name":"_value","nameLocation":"741:6:87","nodeType":"VariableDeclaration","scope":14698,"src":"733:14:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14653,"name":"uint256","nodeType":"ElementaryTypeName","src":"733:7:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14656,"mutability":"mutable","name":"_ratio","nameLocation":"757:6:87","nodeType":"VariableDeclaration","scope":14698,"src":"749:14:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14655,"name":"uint256","nodeType":"ElementaryTypeName","src":"749:7:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"732:32:87"},"returnParameters":{"id":14660,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14659,"mutability":"mutable","name":"result","nameLocation":"787:6:87","nodeType":"VariableDeclaration","scope":14698,"src":"779:14:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14658,"name":"uint256","nodeType":"ElementaryTypeName","src":"779:7:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"778:16:87"},"scope":14699,"src":"706:394:87","stateMutability":"pure","virtual":false,"visibility":"internal"}],"src":"47:1054:87"},"id":87},"src/utils/math/UncheckedMath.sol":{"ast":{"absolutePath":"src/utils/math/UncheckedMath.sol","exportedSymbols":{"_uncheckedAdd":[14716],"_uncheckedSub":[14732]},"id":14733,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":14700,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:88"},{"body":{"id":14715,"nodeType":"Block","src":"377:47:88","statements":[{"id":14714,"nodeType":"UncheckedBlock","src":"383:39:88","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14712,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14710,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14703,"src":"410:1:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":14711,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14705,"src":"414:1:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"410:5:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":14709,"id":14713,"nodeType":"Return","src":"403:12:88"}]}]},"documentation":{"id":14701,"nodeType":"StructuredDocumentation","src":"72:237:88","text":"@notice Adds two unsigned integers without checking the result for overflow errors (using safe math).\n @param a The first summand.\n @param b The second summand.\n @return The sum.\n @custom:security-contact sirt@aragon.org"},"id":14716,"implemented":true,"kind":"freeFunction","modifiers":[],"name":"_uncheckedAdd","nameLocation":"318:13:88","nodeType":"FunctionDefinition","parameters":{"id":14706,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14703,"mutability":"mutable","name":"a","nameLocation":"340:1:88","nodeType":"VariableDeclaration","scope":14716,"src":"332:9:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14702,"name":"uint256","nodeType":"ElementaryTypeName","src":"332:7:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14705,"mutability":"mutable","name":"b","nameLocation":"351:1:88","nodeType":"VariableDeclaration","scope":14716,"src":"343:9:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14704,"name":"uint256","nodeType":"ElementaryTypeName","src":"343:7:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"331:22:88"},"returnParameters":{"id":14709,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14708,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14716,"src":"368:7:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14707,"name":"uint256","nodeType":"ElementaryTypeName","src":"368:7:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"367:9:88"},"scope":14733,"src":"309:115:88","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":14731,"nodeType":"Block","src":"733:47:88","statements":[{"id":14730,"nodeType":"UncheckedBlock","src":"739:39:88","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14728,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14726,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14719,"src":"766:1:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":14727,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14721,"src":"770:1:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"766:5:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":14725,"id":14729,"nodeType":"Return","src":"759:12:88"}]}]},"documentation":{"id":14717,"nodeType":"StructuredDocumentation","src":"426:239:88","text":"@notice Subtracts two unsigned integers without checking the result for overflow errors (using safe math).\n @param a The minuend.\n @param b The subtrahend.\n @return The difference.\n @custom:security-contact sirt@aragon.org"},"id":14732,"implemented":true,"kind":"freeFunction","modifiers":[],"name":"_uncheckedSub","nameLocation":"674:13:88","nodeType":"FunctionDefinition","parameters":{"id":14722,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14719,"mutability":"mutable","name":"a","nameLocation":"696:1:88","nodeType":"VariableDeclaration","scope":14732,"src":"688:9:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14718,"name":"uint256","nodeType":"ElementaryTypeName","src":"688:7:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14721,"mutability":"mutable","name":"b","nameLocation":"707:1:88","nodeType":"VariableDeclaration","scope":14732,"src":"699:9:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14720,"name":"uint256","nodeType":"ElementaryTypeName","src":"699:7:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"687:22:88"},"returnParameters":{"id":14725,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14724,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14732,"src":"724:7:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14723,"name":"uint256","nodeType":"ElementaryTypeName","src":"724:7:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"723:9:88"},"scope":14733,"src":"665:115:88","stateMutability":"pure","virtual":false,"visibility":"internal"}],"src":"47:734:88"},"id":88},"src/utils/versioning/IProtocolVersion.sol":{"ast":{"absolutePath":"src/utils/versioning/IProtocolVersion.sol","exportedSymbols":{"IProtocolVersion":[14744]},"id":14745,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":14734,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:89"},{"abstract":false,"baseContracts":[],"canonicalName":"IProtocolVersion","contractDependencies":[],"contractKind":"interface","documentation":{"id":14735,"nodeType":"StructuredDocumentation","src":"72:189:89","text":"@title IProtocolVersion\n @author Aragon X - 2022-2023\n @notice An interface defining the semantic Aragon OSx protocol version number.\n @custom:security-contact sirt@aragon.org"},"fullyImplemented":false,"id":14744,"linearizedBaseContracts":[14744],"name":"IProtocolVersion","nameLocation":"271:16:89","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":14736,"nodeType":"StructuredDocumentation","src":"294:444:89","text":"@notice Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\n @return _version Returns the semantic Aragon OSx protocol version number.\n @dev This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts."},"functionSelector":"2ae9c600","id":14743,"implemented":false,"kind":"function","modifiers":[],"name":"protocolVersion","nameLocation":"752:15:89","nodeType":"FunctionDefinition","parameters":{"id":14737,"nodeType":"ParameterList","parameters":[],"src":"767:2:89"},"returnParameters":{"id":14742,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14741,"mutability":"mutable","name":"_version","nameLocation":"809:8:89","nodeType":"VariableDeclaration","scope":14743,"src":"793:24:89","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3]"},"typeName":{"baseType":{"id":14738,"name":"uint8","nodeType":"ElementaryTypeName","src":"793:5:89","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":14740,"length":{"hexValue":"33","id":14739,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"799:1:89","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"ArrayTypeName","src":"793:8:89","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_storage_ptr","typeString":"uint8[3]"}},"visibility":"internal"}],"src":"792:26:89"},"scope":14744,"src":"743:76:89","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":14745,"src":"261:560:89","usedErrors":[]}],"src":"47:775:89"},"id":89},"src/utils/versioning/ProtocolVersion.sol":{"ast":{"absolutePath":"src/utils/versioning/ProtocolVersion.sol","exportedSymbols":{"IProtocolVersion":[14744],"ProtocolVersion":[14766]},"id":14767,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":14746,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:90"},{"absolutePath":"src/utils/versioning/IProtocolVersion.sol","file":"./IProtocolVersion.sol","id":14748,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":14767,"sourceUnit":14745,"src":"72:56:90","symbolAliases":[{"foreign":{"id":14747,"name":"IProtocolVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14744,"src":"80:16:90","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":14750,"name":"IProtocolVersion","nameLocations":["497:16:90"],"nodeType":"IdentifierPath","referencedDeclaration":14744,"src":"497:16:90"},"id":14751,"nodeType":"InheritanceSpecifier","src":"497:16:90"}],"canonicalName":"ProtocolVersion","contractDependencies":[],"contractKind":"contract","documentation":{"id":14749,"nodeType":"StructuredDocumentation","src":"130:330:90","text":"@title ProtocolVersion\n @author Aragon X - 2023\n @notice An abstract, stateless, non-upgradeable contract providing the current Aragon OSx protocol version number.\n @dev Do not add any new variables to this contract that would shift down storage in the inheritance chain.\n @custom:security-contact sirt@aragon.org"},"fullyImplemented":true,"id":14766,"linearizedBaseContracts":[14766,14744],"name":"ProtocolVersion","nameLocation":"478:15:90","nodeType":"ContractDefinition","nodes":[{"baseFunctions":[14743],"body":{"id":14764,"nodeType":"Block","src":"696:33:90","statements":[{"expression":{"components":[{"hexValue":"31","id":14759,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"714:1:90","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},{"hexValue":"34","id":14760,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"717:1:90","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},{"hexValue":"30","id":14761,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"720:1:90","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":14762,"isConstant":false,"isInlineArray":true,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"713:9:90","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}},"functionReturnParameters":14758,"id":14763,"nodeType":"Return","src":"706:16:90"}]},"documentation":{"id":14752,"nodeType":"StructuredDocumentation","src":"594:32:90","text":"@inheritdoc IProtocolVersion"},"functionSelector":"2ae9c600","id":14765,"implemented":true,"kind":"function","modifiers":[],"name":"protocolVersion","nameLocation":"640:15:90","nodeType":"FunctionDefinition","parameters":{"id":14753,"nodeType":"ParameterList","parameters":[],"src":"655:2:90"},"returnParameters":{"id":14758,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14757,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14765,"src":"679:15:90","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3]"},"typeName":{"baseType":{"id":14754,"name":"uint8","nodeType":"ElementaryTypeName","src":"679:5:90","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":14756,"length":{"hexValue":"33","id":14755,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"685:1:90","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"ArrayTypeName","src":"679:8:90","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_storage_ptr","typeString":"uint8[3]"}},"visibility":"internal"}],"src":"678:17:90"},"scope":14766,"src":"631:98:90","stateMutability":"pure","virtual":false,"visibility":"public"}],"scope":14767,"src":"460:271:90","usedErrors":[]}],"src":"47:685:90"},"id":90},"src/utils/versioning/VersionComparisonLib.sol":{"ast":{"absolutePath":"src/utils/versioning/VersionComparisonLib.sol","exportedSymbols":{"VersionComparisonLib":[15132]},"id":15133,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":14768,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:91"},{"abstract":false,"baseContracts":[],"canonicalName":"VersionComparisonLib","contractDependencies":[],"contractKind":"library","documentation":{"id":14769,"nodeType":"StructuredDocumentation","src":"72:225:91","text":"@title VersionComparisonLib\n @author Aragon X - 2023\n @notice A library containing methods for [semantic version number](https://semver.org/spec/v2.0.0.html) comparison.\n @custom:security-contact sirt@aragon.org"},"fullyImplemented":true,"id":15132,"linearizedBaseContracts":[15132],"name":"VersionComparisonLib","nameLocation":"305:20:91","nodeType":"ContractDefinition","nodes":[{"body":{"id":14815,"nodeType":"Block","src":"670:163:91","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":14789,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":14783,"name":"lhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14774,"src":"684:3:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}},"id":14785,"indexExpression":{"hexValue":"30","id":14784,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"688:1:91","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"684:6:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"baseExpression":{"id":14786,"name":"rhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14778,"src":"694:3:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}},"id":14788,"indexExpression":{"hexValue":"30","id":14787,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"698:1:91","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"694:6:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"684:16:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14792,"nodeType":"IfStatement","src":"680:34:91","trueBody":{"expression":{"hexValue":"66616c7365","id":14790,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"709:5:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":14782,"id":14791,"nodeType":"Return","src":"702:12:91"}},{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":14799,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":14793,"name":"lhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14774,"src":"729:3:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}},"id":14795,"indexExpression":{"hexValue":"31","id":14794,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"733:1:91","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"729:6:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"baseExpression":{"id":14796,"name":"rhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14778,"src":"739:3:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}},"id":14798,"indexExpression":{"hexValue":"31","id":14797,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"743:1:91","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"739:6:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"729:16:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14802,"nodeType":"IfStatement","src":"725:34:91","trueBody":{"expression":{"hexValue":"66616c7365","id":14800,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"754:5:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":14782,"id":14801,"nodeType":"Return","src":"747:12:91"}},{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":14809,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":14803,"name":"lhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14774,"src":"774:3:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}},"id":14805,"indexExpression":{"hexValue":"32","id":14804,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"778:1:91","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"774:6:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"baseExpression":{"id":14806,"name":"rhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14778,"src":"784:3:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}},"id":14808,"indexExpression":{"hexValue":"32","id":14807,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"788:1:91","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"784:6:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"774:16:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14812,"nodeType":"IfStatement","src":"770:34:91","trueBody":{"expression":{"hexValue":"66616c7365","id":14810,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"799:5:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":14782,"id":14811,"nodeType":"Return","src":"792:12:91"}},{"expression":{"hexValue":"74727565","id":14813,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"822:4:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":14782,"id":14814,"nodeType":"Return","src":"815:11:91"}]},"documentation":{"id":14770,"nodeType":"StructuredDocumentation","src":"332:250:91","text":"@notice Equality comparator for two semantic version numbers.\n @param lhs The left-hand side semantic version number.\n @param rhs The right-hand side semantic version number.\n @return Whether the two numbers are equal or not."},"id":14816,"implemented":true,"kind":"function","modifiers":[],"name":"eq","nameLocation":"596:2:91","nodeType":"FunctionDefinition","parameters":{"id":14779,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14774,"mutability":"mutable","name":"lhs","nameLocation":"615:3:91","nodeType":"VariableDeclaration","scope":14816,"src":"599:19:91","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3]"},"typeName":{"baseType":{"id":14771,"name":"uint8","nodeType":"ElementaryTypeName","src":"599:5:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":14773,"length":{"hexValue":"33","id":14772,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"605:1:91","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"ArrayTypeName","src":"599:8:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_storage_ptr","typeString":"uint8[3]"}},"visibility":"internal"},{"constant":false,"id":14778,"mutability":"mutable","name":"rhs","nameLocation":"636:3:91","nodeType":"VariableDeclaration","scope":14816,"src":"620:19:91","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3]"},"typeName":{"baseType":{"id":14775,"name":"uint8","nodeType":"ElementaryTypeName","src":"620:5:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":14777,"length":{"hexValue":"33","id":14776,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"626:1:91","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"ArrayTypeName","src":"620:8:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_storage_ptr","typeString":"uint8[3]"}},"visibility":"internal"}],"src":"598:42:91"},"returnParameters":{"id":14782,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14781,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14816,"src":"664:4:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":14780,"name":"bool","nodeType":"ElementaryTypeName","src":"664:4:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"663:6:91"},"scope":15132,"src":"587:246:91","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":14862,"nodeType":"Block","src":"1182:161:91","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":14836,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":14830,"name":"lhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14821,"src":"1196:3:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}},"id":14832,"indexExpression":{"hexValue":"30","id":14831,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1200:1:91","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1196:6:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"baseExpression":{"id":14833,"name":"rhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14825,"src":"1206:3:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}},"id":14835,"indexExpression":{"hexValue":"30","id":14834,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1210:1:91","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1206:6:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"1196:16:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14839,"nodeType":"IfStatement","src":"1192:33:91","trueBody":{"expression":{"hexValue":"74727565","id":14837,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1221:4:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":14829,"id":14838,"nodeType":"Return","src":"1214:11:91"}},{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":14846,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":14840,"name":"lhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14821,"src":"1240:3:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}},"id":14842,"indexExpression":{"hexValue":"31","id":14841,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1244:1:91","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1240:6:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"baseExpression":{"id":14843,"name":"rhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14825,"src":"1250:3:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}},"id":14845,"indexExpression":{"hexValue":"31","id":14844,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1254:1:91","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1250:6:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"1240:16:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14849,"nodeType":"IfStatement","src":"1236:33:91","trueBody":{"expression":{"hexValue":"74727565","id":14847,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1265:4:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":14829,"id":14848,"nodeType":"Return","src":"1258:11:91"}},{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":14856,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":14850,"name":"lhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14821,"src":"1284:3:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}},"id":14852,"indexExpression":{"hexValue":"32","id":14851,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1288:1:91","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1284:6:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"baseExpression":{"id":14853,"name":"rhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14825,"src":"1294:3:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}},"id":14855,"indexExpression":{"hexValue":"32","id":14854,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1298:1:91","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1294:6:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"1284:16:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14859,"nodeType":"IfStatement","src":"1280:33:91","trueBody":{"expression":{"hexValue":"74727565","id":14857,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1309:4:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":14829,"id":14858,"nodeType":"Return","src":"1302:11:91"}},{"expression":{"hexValue":"66616c7365","id":14860,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1331:5:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":14829,"id":14861,"nodeType":"Return","src":"1324:12:91"}]},"documentation":{"id":14817,"nodeType":"StructuredDocumentation","src":"839:254:91","text":"@notice Inequality comparator for two semantic version numbers.\n @param lhs The left-hand side semantic version number.\n @param rhs The right-hand side semantic version number.\n @return Whether the two numbers are inequal or not."},"id":14863,"implemented":true,"kind":"function","modifiers":[],"name":"neq","nameLocation":"1107:3:91","nodeType":"FunctionDefinition","parameters":{"id":14826,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14821,"mutability":"mutable","name":"lhs","nameLocation":"1127:3:91","nodeType":"VariableDeclaration","scope":14863,"src":"1111:19:91","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3]"},"typeName":{"baseType":{"id":14818,"name":"uint8","nodeType":"ElementaryTypeName","src":"1111:5:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":14820,"length":{"hexValue":"33","id":14819,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1117:1:91","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"ArrayTypeName","src":"1111:8:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_storage_ptr","typeString":"uint8[3]"}},"visibility":"internal"},{"constant":false,"id":14825,"mutability":"mutable","name":"rhs","nameLocation":"1148:3:91","nodeType":"VariableDeclaration","scope":14863,"src":"1132:19:91","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3]"},"typeName":{"baseType":{"id":14822,"name":"uint8","nodeType":"ElementaryTypeName","src":"1132:5:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":14824,"length":{"hexValue":"33","id":14823,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1138:1:91","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"ArrayTypeName","src":"1132:8:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_storage_ptr","typeString":"uint8[3]"}},"visibility":"internal"}],"src":"1110:42:91"},"returnParameters":{"id":14829,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14828,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14863,"src":"1176:4:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":14827,"name":"bool","nodeType":"ElementaryTypeName","src":"1176:4:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1175:6:91"},"scope":15132,"src":"1098:245:91","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":14929,"nodeType":"Block","src":"1710:244:91","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":14883,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":14877,"name":"lhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14868,"src":"1724:3:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}},"id":14879,"indexExpression":{"hexValue":"30","id":14878,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1728:1:91","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1724:6:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"baseExpression":{"id":14880,"name":"rhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14872,"src":"1733:3:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}},"id":14882,"indexExpression":{"hexValue":"30","id":14881,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1737:1:91","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1733:6:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"1724:15:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14886,"nodeType":"IfStatement","src":"1720:32:91","trueBody":{"expression":{"hexValue":"74727565","id":14884,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1748:4:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":14876,"id":14885,"nodeType":"Return","src":"1741:11:91"}},{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":14893,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":14887,"name":"lhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14868,"src":"1766:3:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}},"id":14889,"indexExpression":{"hexValue":"30","id":14888,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1770:1:91","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1766:6:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"baseExpression":{"id":14890,"name":"rhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14872,"src":"1775:3:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}},"id":14892,"indexExpression":{"hexValue":"30","id":14891,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1779:1:91","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1775:6:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"1766:15:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14896,"nodeType":"IfStatement","src":"1762:33:91","trueBody":{"expression":{"hexValue":"66616c7365","id":14894,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1790:5:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":14876,"id":14895,"nodeType":"Return","src":"1783:12:91"}},{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":14903,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":14897,"name":"lhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14868,"src":"1810:3:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}},"id":14899,"indexExpression":{"hexValue":"31","id":14898,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1814:1:91","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1810:6:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"baseExpression":{"id":14900,"name":"rhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14872,"src":"1819:3:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}},"id":14902,"indexExpression":{"hexValue":"31","id":14901,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1823:1:91","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1819:6:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"1810:15:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14906,"nodeType":"IfStatement","src":"1806:32:91","trueBody":{"expression":{"hexValue":"74727565","id":14904,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1834:4:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":14876,"id":14905,"nodeType":"Return","src":"1827:11:91"}},{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":14913,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":14907,"name":"lhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14868,"src":"1852:3:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}},"id":14909,"indexExpression":{"hexValue":"31","id":14908,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1856:1:91","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1852:6:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"baseExpression":{"id":14910,"name":"rhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14872,"src":"1861:3:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}},"id":14912,"indexExpression":{"hexValue":"31","id":14911,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1865:1:91","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1861:6:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"1852:15:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14916,"nodeType":"IfStatement","src":"1848:33:91","trueBody":{"expression":{"hexValue":"66616c7365","id":14914,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1876:5:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":14876,"id":14915,"nodeType":"Return","src":"1869:12:91"}},{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":14923,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":14917,"name":"lhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14868,"src":"1896:3:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}},"id":14919,"indexExpression":{"hexValue":"32","id":14918,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1900:1:91","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1896:6:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"baseExpression":{"id":14920,"name":"rhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14872,"src":"1905:3:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}},"id":14922,"indexExpression":{"hexValue":"32","id":14921,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1909:1:91","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1905:6:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"1896:15:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14926,"nodeType":"IfStatement","src":"1892:32:91","trueBody":{"expression":{"hexValue":"74727565","id":14924,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1920:4:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":14876,"id":14925,"nodeType":"Return","src":"1913:11:91"}},{"expression":{"hexValue":"66616c7365","id":14927,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1942:5:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":14876,"id":14928,"nodeType":"Return","src":"1935:12:91"}]},"documentation":{"id":14864,"nodeType":"StructuredDocumentation","src":"1349:273:91","text":"@notice Less than comparator for two semantic version numbers.\n @param lhs The left-hand side semantic version number.\n @param rhs The right-hand side semantic version number.\n @return Whether the first number is less than the second number or not."},"id":14930,"implemented":true,"kind":"function","modifiers":[],"name":"lt","nameLocation":"1636:2:91","nodeType":"FunctionDefinition","parameters":{"id":14873,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14868,"mutability":"mutable","name":"lhs","nameLocation":"1655:3:91","nodeType":"VariableDeclaration","scope":14930,"src":"1639:19:91","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3]"},"typeName":{"baseType":{"id":14865,"name":"uint8","nodeType":"ElementaryTypeName","src":"1639:5:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":14867,"length":{"hexValue":"33","id":14866,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1645:1:91","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"ArrayTypeName","src":"1639:8:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_storage_ptr","typeString":"uint8[3]"}},"visibility":"internal"},{"constant":false,"id":14872,"mutability":"mutable","name":"rhs","nameLocation":"1676:3:91","nodeType":"VariableDeclaration","scope":14930,"src":"1660:19:91","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3]"},"typeName":{"baseType":{"id":14869,"name":"uint8","nodeType":"ElementaryTypeName","src":"1660:5:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":14871,"length":{"hexValue":"33","id":14870,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1666:1:91","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"ArrayTypeName","src":"1660:8:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_storage_ptr","typeString":"uint8[3]"}},"visibility":"internal"}],"src":"1638:42:91"},"returnParameters":{"id":14876,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14875,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14930,"src":"1704:4:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":14874,"name":"bool","nodeType":"ElementaryTypeName","src":"1704:4:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1703:6:91"},"scope":15132,"src":"1627:327:91","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":14996,"nodeType":"Block","src":"2346:245:91","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":14950,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":14944,"name":"lhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14935,"src":"2360:3:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}},"id":14946,"indexExpression":{"hexValue":"30","id":14945,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2364:1:91","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2360:6:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"baseExpression":{"id":14947,"name":"rhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14939,"src":"2369:3:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}},"id":14949,"indexExpression":{"hexValue":"30","id":14948,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2373:1:91","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2369:6:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"2360:15:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14953,"nodeType":"IfStatement","src":"2356:32:91","trueBody":{"expression":{"hexValue":"74727565","id":14951,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2384:4:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":14943,"id":14952,"nodeType":"Return","src":"2377:11:91"}},{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":14960,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":14954,"name":"lhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14935,"src":"2402:3:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}},"id":14956,"indexExpression":{"hexValue":"30","id":14955,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2406:1:91","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2402:6:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"baseExpression":{"id":14957,"name":"rhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14939,"src":"2411:3:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}},"id":14959,"indexExpression":{"hexValue":"30","id":14958,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2415:1:91","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2411:6:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"2402:15:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14963,"nodeType":"IfStatement","src":"2398:33:91","trueBody":{"expression":{"hexValue":"66616c7365","id":14961,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2426:5:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":14943,"id":14962,"nodeType":"Return","src":"2419:12:91"}},{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":14970,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":14964,"name":"lhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14935,"src":"2446:3:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}},"id":14966,"indexExpression":{"hexValue":"31","id":14965,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2450:1:91","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2446:6:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"baseExpression":{"id":14967,"name":"rhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14939,"src":"2455:3:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}},"id":14969,"indexExpression":{"hexValue":"31","id":14968,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2459:1:91","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2455:6:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"2446:15:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14973,"nodeType":"IfStatement","src":"2442:32:91","trueBody":{"expression":{"hexValue":"74727565","id":14971,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2470:4:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":14943,"id":14972,"nodeType":"Return","src":"2463:11:91"}},{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":14980,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":14974,"name":"lhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14935,"src":"2488:3:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}},"id":14976,"indexExpression":{"hexValue":"31","id":14975,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2492:1:91","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2488:6:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"baseExpression":{"id":14977,"name":"rhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14939,"src":"2497:3:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}},"id":14979,"indexExpression":{"hexValue":"31","id":14978,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2501:1:91","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2497:6:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"2488:15:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14983,"nodeType":"IfStatement","src":"2484:33:91","trueBody":{"expression":{"hexValue":"66616c7365","id":14981,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2512:5:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":14943,"id":14982,"nodeType":"Return","src":"2505:12:91"}},{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":14990,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":14984,"name":"lhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14935,"src":"2532:3:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}},"id":14986,"indexExpression":{"hexValue":"32","id":14985,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2536:1:91","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2532:6:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"baseExpression":{"id":14987,"name":"rhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14939,"src":"2542:3:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}},"id":14989,"indexExpression":{"hexValue":"32","id":14988,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2546:1:91","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2542:6:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"2532:16:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14993,"nodeType":"IfStatement","src":"2528:33:91","trueBody":{"expression":{"hexValue":"74727565","id":14991,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2557:4:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":14943,"id":14992,"nodeType":"Return","src":"2550:11:91"}},{"expression":{"hexValue":"66616c7365","id":14994,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2579:5:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":14943,"id":14995,"nodeType":"Return","src":"2572:12:91"}]},"documentation":{"id":14931,"nodeType":"StructuredDocumentation","src":"1960:297:91","text":"@notice Less than or equal to comparator for two semantic version numbers.\n @param lhs The left-hand side semantic version number.\n @param rhs The right-hand side semantic version number.\n @return Whether the first number is less than or equal to the second number or not."},"id":14997,"implemented":true,"kind":"function","modifiers":[],"name":"lte","nameLocation":"2271:3:91","nodeType":"FunctionDefinition","parameters":{"id":14940,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14935,"mutability":"mutable","name":"lhs","nameLocation":"2291:3:91","nodeType":"VariableDeclaration","scope":14997,"src":"2275:19:91","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3]"},"typeName":{"baseType":{"id":14932,"name":"uint8","nodeType":"ElementaryTypeName","src":"2275:5:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":14934,"length":{"hexValue":"33","id":14933,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2281:1:91","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"ArrayTypeName","src":"2275:8:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_storage_ptr","typeString":"uint8[3]"}},"visibility":"internal"},{"constant":false,"id":14939,"mutability":"mutable","name":"rhs","nameLocation":"2312:3:91","nodeType":"VariableDeclaration","scope":14997,"src":"2296:19:91","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3]"},"typeName":{"baseType":{"id":14936,"name":"uint8","nodeType":"ElementaryTypeName","src":"2296:5:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":14938,"length":{"hexValue":"33","id":14937,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2302:1:91","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"ArrayTypeName","src":"2296:8:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_storage_ptr","typeString":"uint8[3]"}},"visibility":"internal"}],"src":"2274:42:91"},"returnParameters":{"id":14943,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14942,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14997,"src":"2340:4:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":14941,"name":"bool","nodeType":"ElementaryTypeName","src":"2340:4:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2339:6:91"},"scope":15132,"src":"2262:329:91","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":15063,"nodeType":"Block","src":"2964:244:91","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":15017,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":15011,"name":"lhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15002,"src":"2978:3:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}},"id":15013,"indexExpression":{"hexValue":"30","id":15012,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2982:1:91","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2978:6:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"baseExpression":{"id":15014,"name":"rhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15006,"src":"2987:3:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}},"id":15016,"indexExpression":{"hexValue":"30","id":15015,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2991:1:91","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2987:6:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"2978:15:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15020,"nodeType":"IfStatement","src":"2974:32:91","trueBody":{"expression":{"hexValue":"74727565","id":15018,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3002:4:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":15010,"id":15019,"nodeType":"Return","src":"2995:11:91"}},{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":15027,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":15021,"name":"lhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15002,"src":"3020:3:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}},"id":15023,"indexExpression":{"hexValue":"30","id":15022,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3024:1:91","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3020:6:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"baseExpression":{"id":15024,"name":"rhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15006,"src":"3029:3:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}},"id":15026,"indexExpression":{"hexValue":"30","id":15025,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3033:1:91","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3029:6:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"3020:15:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15030,"nodeType":"IfStatement","src":"3016:33:91","trueBody":{"expression":{"hexValue":"66616c7365","id":15028,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3044:5:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":15010,"id":15029,"nodeType":"Return","src":"3037:12:91"}},{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":15037,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":15031,"name":"lhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15002,"src":"3064:3:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}},"id":15033,"indexExpression":{"hexValue":"31","id":15032,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3068:1:91","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3064:6:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"baseExpression":{"id":15034,"name":"rhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15006,"src":"3073:3:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}},"id":15036,"indexExpression":{"hexValue":"31","id":15035,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3077:1:91","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3073:6:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"3064:15:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15040,"nodeType":"IfStatement","src":"3060:32:91","trueBody":{"expression":{"hexValue":"74727565","id":15038,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3088:4:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":15010,"id":15039,"nodeType":"Return","src":"3081:11:91"}},{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":15047,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":15041,"name":"lhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15002,"src":"3106:3:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}},"id":15043,"indexExpression":{"hexValue":"31","id":15042,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3110:1:91","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3106:6:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"baseExpression":{"id":15044,"name":"rhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15006,"src":"3115:3:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}},"id":15046,"indexExpression":{"hexValue":"31","id":15045,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3119:1:91","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3115:6:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"3106:15:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15050,"nodeType":"IfStatement","src":"3102:33:91","trueBody":{"expression":{"hexValue":"66616c7365","id":15048,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3130:5:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":15010,"id":15049,"nodeType":"Return","src":"3123:12:91"}},{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":15057,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":15051,"name":"lhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15002,"src":"3150:3:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}},"id":15053,"indexExpression":{"hexValue":"32","id":15052,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3154:1:91","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3150:6:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"baseExpression":{"id":15054,"name":"rhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15006,"src":"3159:3:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}},"id":15056,"indexExpression":{"hexValue":"32","id":15055,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3163:1:91","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3159:6:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"3150:15:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15060,"nodeType":"IfStatement","src":"3146:32:91","trueBody":{"expression":{"hexValue":"74727565","id":15058,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3174:4:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":15010,"id":15059,"nodeType":"Return","src":"3167:11:91"}},{"expression":{"hexValue":"66616c7365","id":15061,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3196:5:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":15010,"id":15062,"nodeType":"Return","src":"3189:12:91"}]},"documentation":{"id":14998,"nodeType":"StructuredDocumentation","src":"2597:279:91","text":"@notice Greater than comparator for two semantic version numbers.\n @param lhs The left-hand side semantic version number.\n @param rhs The right-hand side semantic version number.\n @return Whether the first number is greater than the second number or not."},"id":15064,"implemented":true,"kind":"function","modifiers":[],"name":"gt","nameLocation":"2890:2:91","nodeType":"FunctionDefinition","parameters":{"id":15007,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15002,"mutability":"mutable","name":"lhs","nameLocation":"2909:3:91","nodeType":"VariableDeclaration","scope":15064,"src":"2893:19:91","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3]"},"typeName":{"baseType":{"id":14999,"name":"uint8","nodeType":"ElementaryTypeName","src":"2893:5:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":15001,"length":{"hexValue":"33","id":15000,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2899:1:91","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"ArrayTypeName","src":"2893:8:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_storage_ptr","typeString":"uint8[3]"}},"visibility":"internal"},{"constant":false,"id":15006,"mutability":"mutable","name":"rhs","nameLocation":"2930:3:91","nodeType":"VariableDeclaration","scope":15064,"src":"2914:19:91","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3]"},"typeName":{"baseType":{"id":15003,"name":"uint8","nodeType":"ElementaryTypeName","src":"2914:5:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":15005,"length":{"hexValue":"33","id":15004,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2920:1:91","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"ArrayTypeName","src":"2914:8:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_storage_ptr","typeString":"uint8[3]"}},"visibility":"internal"}],"src":"2892:42:91"},"returnParameters":{"id":15010,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15009,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":15064,"src":"2958:4:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":15008,"name":"bool","nodeType":"ElementaryTypeName","src":"2958:4:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2957:6:91"},"scope":15132,"src":"2881:327:91","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":15130,"nodeType":"Block","src":"3606:245:91","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":15084,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":15078,"name":"lhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15069,"src":"3620:3:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}},"id":15080,"indexExpression":{"hexValue":"30","id":15079,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3624:1:91","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3620:6:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"baseExpression":{"id":15081,"name":"rhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15073,"src":"3629:3:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}},"id":15083,"indexExpression":{"hexValue":"30","id":15082,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3633:1:91","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3629:6:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"3620:15:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15087,"nodeType":"IfStatement","src":"3616:32:91","trueBody":{"expression":{"hexValue":"74727565","id":15085,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3644:4:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":15077,"id":15086,"nodeType":"Return","src":"3637:11:91"}},{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":15094,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":15088,"name":"lhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15069,"src":"3662:3:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}},"id":15090,"indexExpression":{"hexValue":"30","id":15089,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3666:1:91","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3662:6:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"baseExpression":{"id":15091,"name":"rhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15073,"src":"3671:3:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}},"id":15093,"indexExpression":{"hexValue":"30","id":15092,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3675:1:91","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3671:6:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"3662:15:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15097,"nodeType":"IfStatement","src":"3658:33:91","trueBody":{"expression":{"hexValue":"66616c7365","id":15095,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3686:5:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":15077,"id":15096,"nodeType":"Return","src":"3679:12:91"}},{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":15104,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":15098,"name":"lhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15069,"src":"3706:3:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}},"id":15100,"indexExpression":{"hexValue":"31","id":15099,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3710:1:91","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3706:6:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"baseExpression":{"id":15101,"name":"rhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15073,"src":"3715:3:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}},"id":15103,"indexExpression":{"hexValue":"31","id":15102,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3719:1:91","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3715:6:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"3706:15:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15107,"nodeType":"IfStatement","src":"3702:32:91","trueBody":{"expression":{"hexValue":"74727565","id":15105,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3730:4:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":15077,"id":15106,"nodeType":"Return","src":"3723:11:91"}},{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":15114,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":15108,"name":"lhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15069,"src":"3748:3:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}},"id":15110,"indexExpression":{"hexValue":"31","id":15109,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3752:1:91","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3748:6:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"baseExpression":{"id":15111,"name":"rhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15073,"src":"3757:3:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}},"id":15113,"indexExpression":{"hexValue":"31","id":15112,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3761:1:91","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3757:6:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"3748:15:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15117,"nodeType":"IfStatement","src":"3744:33:91","trueBody":{"expression":{"hexValue":"66616c7365","id":15115,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3772:5:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":15077,"id":15116,"nodeType":"Return","src":"3765:12:91"}},{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":15124,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":15118,"name":"lhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15069,"src":"3792:3:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}},"id":15120,"indexExpression":{"hexValue":"32","id":15119,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3796:1:91","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3792:6:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"baseExpression":{"id":15121,"name":"rhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15073,"src":"3802:3:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}},"id":15123,"indexExpression":{"hexValue":"32","id":15122,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3806:1:91","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3802:6:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"3792:16:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15127,"nodeType":"IfStatement","src":"3788:33:91","trueBody":{"expression":{"hexValue":"74727565","id":15125,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3817:4:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":15077,"id":15126,"nodeType":"Return","src":"3810:11:91"}},{"expression":{"hexValue":"66616c7365","id":15128,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3839:5:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":15077,"id":15129,"nodeType":"Return","src":"3832:12:91"}]},"documentation":{"id":15065,"nodeType":"StructuredDocumentation","src":"3214:303:91","text":"@notice Greater than or equal to comparator for two semantic version numbers.\n @param lhs The left-hand side semantic version number.\n @param rhs The right-hand side semantic version number.\n @return Whether the first number is greater than or equal to the second number or not."},"id":15131,"implemented":true,"kind":"function","modifiers":[],"name":"gte","nameLocation":"3531:3:91","nodeType":"FunctionDefinition","parameters":{"id":15074,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15069,"mutability":"mutable","name":"lhs","nameLocation":"3551:3:91","nodeType":"VariableDeclaration","scope":15131,"src":"3535:19:91","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3]"},"typeName":{"baseType":{"id":15066,"name":"uint8","nodeType":"ElementaryTypeName","src":"3535:5:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":15068,"length":{"hexValue":"33","id":15067,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3541:1:91","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"ArrayTypeName","src":"3535:8:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_storage_ptr","typeString":"uint8[3]"}},"visibility":"internal"},{"constant":false,"id":15073,"mutability":"mutable","name":"rhs","nameLocation":"3572:3:91","nodeType":"VariableDeclaration","scope":15131,"src":"3556:19:91","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3]"},"typeName":{"baseType":{"id":15070,"name":"uint8","nodeType":"ElementaryTypeName","src":"3556:5:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":15072,"length":{"hexValue":"33","id":15071,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3562:1:91","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"ArrayTypeName","src":"3556:8:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_storage_ptr","typeString":"uint8[3]"}},"visibility":"internal"}],"src":"3534:42:91"},"returnParameters":{"id":15077,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15076,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":15131,"src":"3600:4:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":15075,"name":"bool","nodeType":"ElementaryTypeName","src":"3600:4:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3599:6:91"},"scope":15132,"src":"3522:329:91","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":15133,"src":"297:3556:91","usedErrors":[]}],"src":"47:3807:91"},"id":91}},"contracts":{"@openzeppelin/contracts-upgradeable/interfaces/IERC1967Upgradeable.sol":{"IERC1967Upgradeable":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"beacon","type":"address"}],"name":"BeaconUpgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"}],"devdoc":{"details":"ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC. _Available since v4.8.3._","events":{"AdminChanged(address,address)":{"details":"Emitted when the admin account has changed."},"BeaconUpgraded(address)":{"details":"Emitted when the beacon is changed."},"Upgraded(address)":{"details":"Emitted when the implementation is upgraded."}},"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"}],\"devdoc\":{\"details\":\"ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC. _Available since v4.8.3._\",\"events\":{\"AdminChanged(address,address)\":{\"details\":\"Emitted when the admin account has changed.\"},\"BeaconUpgraded(address)\":{\"details\":\"Emitted when the beacon is changed.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/interfaces/IERC1967Upgradeable.sol\":\"IERC1967Upgradeable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/interfaces/IERC1967Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (interfaces/IERC1967.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\\n *\\n * _Available since v4.8.3._\\n */\\ninterface IERC1967Upgradeable {\\n /**\\n * @dev Emitted when the implementation is upgraded.\\n */\\n event Upgraded(address indexed implementation);\\n\\n /**\\n * @dev Emitted when the admin account has changed.\\n */\\n event AdminChanged(address previousAdmin, address newAdmin);\\n\\n /**\\n * @dev Emitted when the beacon is changed.\\n */\\n event BeaconUpgraded(address indexed beacon);\\n}\\n\",\"keccak256\":\"0x47d6e06872b12e72c79d1b5eb55842f860b5fb1207b2317c2358d2766b950a7b\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol":{"IERC1822ProxiableUpgradeable":{"abi":[{"inputs":[],"name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified proxy whose upgrades are fully controlled by the current implementation.","kind":"dev","methods":{"proxiableUUID()":{"details":"Returns the storage slot that the proxiable contract assumes is being used to store the implementation address. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"proxiableUUID()":"52d1902d"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified proxy whose upgrades are fully controlled by the current implementation.\",\"kind\":\"dev\",\"methods\":{\"proxiableUUID()\":{\"details\":\"Returns the storage slot that the proxiable contract assumes is being used to store the implementation address. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol\":\"IERC1822ProxiableUpgradeable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822ProxiableUpgradeable {\\n /**\\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n * address.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy.\\n */\\n function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol":{"ERC1967UpgradeUpgradeable":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"beacon","type":"address"}],"name":"BeaconUpgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"}],"devdoc":{"details":"This abstract contract provides getters and event emitting update functions for https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots. _Available since v4.1._","kind":"dev","methods":{},"stateVariables":{"_ADMIN_SLOT":{"details":"Storage slot with the admin of the contract. This is the keccak-256 hash of \"eip1967.proxy.admin\" subtracted by 1, and is validated in the constructor."},"_BEACON_SLOT":{"details":"The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy. This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor."},"_IMPLEMENTATION_SLOT":{"details":"Storage slot with the address of the current implementation. This is the keccak-256 hash of \"eip1967.proxy.implementation\" subtracted by 1, and is validated in the constructor."},"__gap":{"details":"This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain. See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"}],\"devdoc\":{\"details\":\"This abstract contract provides getters and event emitting update functions for https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots. _Available since v4.1._\",\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"_ADMIN_SLOT\":{\"details\":\"Storage slot with the admin of the contract. This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is validated in the constructor.\"},\"_BEACON_SLOT\":{\"details\":\"The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy. This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\"},\"_IMPLEMENTATION_SLOT\":{\"details\":\"Storage slot with the address of the current implementation. This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is validated in the constructor.\"},\"__gap\":{\"details\":\"This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain. See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol\":\"ERC1967UpgradeUpgradeable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/interfaces/IERC1967Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (interfaces/IERC1967.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\\n *\\n * _Available since v4.8.3._\\n */\\ninterface IERC1967Upgradeable {\\n /**\\n * @dev Emitted when the implementation is upgraded.\\n */\\n event Upgraded(address indexed implementation);\\n\\n /**\\n * @dev Emitted when the admin account has changed.\\n */\\n event AdminChanged(address previousAdmin, address newAdmin);\\n\\n /**\\n * @dev Emitted when the beacon is changed.\\n */\\n event BeaconUpgraded(address indexed beacon);\\n}\\n\",\"keccak256\":\"0x47d6e06872b12e72c79d1b5eb55842f860b5fb1207b2317c2358d2766b950a7b\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822ProxiableUpgradeable {\\n /**\\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n * address.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy.\\n */\\n function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../beacon/IBeaconUpgradeable.sol\\\";\\nimport \\\"../../interfaces/IERC1967Upgradeable.sol\\\";\\nimport \\\"../../interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\nimport \\\"../../utils/StorageSlotUpgradeable.sol\\\";\\nimport {Initializable} from \\\"../utils/Initializable.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n */\\nabstract contract ERC1967UpgradeUpgradeable is Initializable, IERC1967Upgradeable {\\n // This is the keccak-256 hash of \\\"eip1967.proxy.rollback\\\" subtracted by 1\\n bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n /**\\n * @dev Storage slot with the address of the current implementation.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n function __ERC1967Upgrade_init() internal onlyInitializing {\\n }\\n\\n function __ERC1967Upgrade_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _getImplementation() internal view returns (address) {\\n return StorageSlotUpgradeable.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 implementation slot.\\n */\\n function _setImplementation(address newImplementation) private {\\n require(AddressUpgradeable.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n StorageSlotUpgradeable.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n }\\n\\n /**\\n * @dev Perform implementation upgrade\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeTo(address newImplementation) internal {\\n _setImplementation(newImplementation);\\n emit Upgraded(newImplementation);\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCall(address newImplementation, bytes memory data, bool forceCall) internal {\\n _upgradeTo(newImplementation);\\n if (data.length > 0 || forceCall) {\\n AddressUpgradeable.functionDelegateCall(newImplementation, data);\\n }\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCallUUPS(address newImplementation, bytes memory data, bool forceCall) internal {\\n // Upgrades from old implementations will perform a rollback test. This test requires the new\\n // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n // this special case will break upgrade paths from old UUPS implementation to new ones.\\n if (StorageSlotUpgradeable.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n _setImplementation(newImplementation);\\n } else {\\n try IERC1822ProxiableUpgradeable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n require(slot == _IMPLEMENTATION_SLOT, \\\"ERC1967Upgrade: unsupported proxiableUUID\\\");\\n } catch {\\n revert(\\\"ERC1967Upgrade: new implementation is not UUPS\\\");\\n }\\n _upgradeToAndCall(newImplementation, data, forceCall);\\n }\\n }\\n\\n /**\\n * @dev Storage slot with the admin of the contract.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _getAdmin() internal view returns (address) {\\n return StorageSlotUpgradeable.getAddressSlot(_ADMIN_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 admin slot.\\n */\\n function _setAdmin(address newAdmin) private {\\n require(newAdmin != address(0), \\\"ERC1967: new admin is the zero address\\\");\\n StorageSlotUpgradeable.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n */\\n function _changeAdmin(address newAdmin) internal {\\n emit AdminChanged(_getAdmin(), newAdmin);\\n _setAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\\n */\\n bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n /**\\n * @dev Returns the current beacon.\\n */\\n function _getBeacon() internal view returns (address) {\\n return StorageSlotUpgradeable.getAddressSlot(_BEACON_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new beacon in the EIP1967 beacon slot.\\n */\\n function _setBeacon(address newBeacon) private {\\n require(AddressUpgradeable.isContract(newBeacon), \\\"ERC1967: new beacon is not a contract\\\");\\n require(\\n AddressUpgradeable.isContract(IBeaconUpgradeable(newBeacon).implementation()),\\n \\\"ERC1967: beacon implementation is not a contract\\\"\\n );\\n StorageSlotUpgradeable.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n }\\n\\n /**\\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n *\\n * Emits a {BeaconUpgraded} event.\\n */\\n function _upgradeBeaconToAndCall(address newBeacon, bytes memory data, bool forceCall) internal {\\n _setBeacon(newBeacon);\\n emit BeaconUpgraded(newBeacon);\\n if (data.length > 0 || forceCall) {\\n AddressUpgradeable.functionDelegateCall(IBeaconUpgradeable(newBeacon).implementation(), data);\\n }\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x7795808e3899c805254e3ae58074b20f799b466e3f43e057e47bedee5fb771f8\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeaconUpgradeable {\\n /**\\n * @dev Must return an address that can be used as a delegate call target.\\n *\\n * {BeaconProxy} will check that this address is a contract.\\n */\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/StorageSlot.sol)\\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```solidity\\n * contract ERC1967 {\\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n * function _getImplementation() internal view returns (address) {\\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n * }\\n *\\n * function _setImplementation(address newImplementation) internal {\\n * require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n * }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._\\n * _Available since v4.9 for `string`, `bytes`._\\n */\\nlibrary StorageSlotUpgradeable {\\n struct AddressSlot {\\n address value;\\n }\\n\\n struct BooleanSlot {\\n bool value;\\n }\\n\\n struct Bytes32Slot {\\n bytes32 value;\\n }\\n\\n struct Uint256Slot {\\n uint256 value;\\n }\\n\\n struct StringSlot {\\n string value;\\n }\\n\\n struct BytesSlot {\\n bytes value;\\n }\\n\\n /**\\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n */\\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n */\\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n */\\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n */\\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` with member `value` located at `slot`.\\n */\\n function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\\n */\\n function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` with member `value` located at `slot`.\\n */\\n function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\\n */\\n function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n}\\n\",\"keccak256\":\"0x07ac95acad040f1fb1f6120dd0aa5f702db69446e95f82613721879d30de0908\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":372,"contract":"@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:ERC1967UpgradeUpgradeable","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":375,"contract":"@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:ERC1967UpgradeUpgradeable","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":354,"contract":"@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:ERC1967UpgradeUpgradeable","label":"__gap","offset":0,"slot":"1","type":"t_array(t_uint256)50_storage"}],"types":{"t_array(t_uint256)50_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[50]","numberOfBytes":"1600"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.sol":{"IBeaconUpgradeable":{"abi":[{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"This is the interface that {BeaconProxy} expects of its beacon.","kind":"dev","methods":{"implementation()":{"details":"Must return an address that can be used as a delegate call target. {BeaconProxy} will check that this address is a contract."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"implementation()":"5c60da1b"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"This is the interface that {BeaconProxy} expects of its beacon.\",\"kind\":\"dev\",\"methods\":{\"implementation()\":{\"details\":\"Must return an address that can be used as a delegate call target. {BeaconProxy} will check that this address is a contract.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.sol\":\"IBeaconUpgradeable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeaconUpgradeable {\\n /**\\n * @dev Must return an address that can be used as a delegate call target.\\n *\\n * {BeaconProxy} will check that this address is a contract.\\n */\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol":{"Initializable":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"}],"devdoc":{"custom:oz-upgrades-unsafe-allow":"constructor constructor() { _disableInitializers(); } ``` ====","details":"This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer function so it can only be called once. The {initializer} modifier provided by this contract will have this effect. The initialization functions use a version number. Once a version number is used, it is consumed and cannot be reused. This mechanism prevents re-execution of each \"step\" but allows the creation of new initialization steps in case an upgrade adds a module that needs to be initialized. For example: [.hljs-theme-light.nopadding] ```solidity contract MyToken is ERC20Upgradeable { function initialize() initializer public { __ERC20_init(\"MyToken\", \"MTK\"); } } contract MyTokenV2 is MyToken, ERC20PermitUpgradeable { function initializeV2() reinitializer(2) public { __ERC20Permit_init(\"MyToken\"); } } ``` TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}. CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure that all initializers are idempotent. This is not verified automatically as constructors are by Solidity. [CAUTION] ==== Avoid leaving a contract uninitialized. An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke the {_disableInitializers} function in the constructor to automatically lock it when it is deployed: [.hljs-theme-light.nopadding] ```","events":{"Initialized(uint8)":{"details":"Triggered when the contract has been initialized or reinitialized."}},"kind":"dev","methods":{},"stateVariables":{"_initialized":{"custom:oz-retyped-from":"bool","details":"Indicates that the contract has been initialized."},"_initializing":{"details":"Indicates that the contract is in the process of being initialized."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"}],\"devdoc\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor constructor() { _disableInitializers(); } ``` ====\",\"details\":\"This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer function so it can only be called once. The {initializer} modifier provided by this contract will have this effect. The initialization functions use a version number. Once a version number is used, it is consumed and cannot be reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in case an upgrade adds a module that needs to be initialized. For example: [.hljs-theme-light.nopadding] ```solidity contract MyToken is ERC20Upgradeable { function initialize() initializer public { __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\"); } } contract MyTokenV2 is MyToken, ERC20PermitUpgradeable { function initializeV2() reinitializer(2) public { __ERC20Permit_init(\\\"MyToken\\\"); } } ``` TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}. CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure that all initializers are idempotent. This is not verified automatically as constructors are by Solidity. [CAUTION] ==== Avoid leaving a contract uninitialized. An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke the {_disableInitializers} function in the constructor to automatically lock it when it is deployed: [.hljs-theme-light.nopadding] ```\",\"events\":{\"Initialized(uint8)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"_initialized\":{\"custom:oz-retyped-from\":\"bool\",\"details\":\"Indicates that the contract has been initialized.\"},\"_initializing\":{\"details\":\"Indicates that the contract is in the process of being initialized.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":\"Initializable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":372,"contract":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":375,"contract":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable","label":"_initializing","offset":1,"slot":"0","type":"t_bool"}],"types":{"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol":{"UUPSUpgradeable":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"beacon","type":"address"}],"name":"BeaconUpgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"inputs":[],"name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"}],"name":"upgradeTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"}],"devdoc":{"details":"An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy. A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing `UUPSUpgradeable` with a custom implementation of upgrades. The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism. _Available since v4.1._","kind":"dev","methods":{"proxiableUUID()":{"details":"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier."},"upgradeTo(address)":{"custom:oz-upgrades-unsafe-allow-reachable":"delegatecall","details":"Upgrade the implementation of the proxy to `newImplementation`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."},"upgradeToAndCall(address,bytes)":{"custom:oz-upgrades-unsafe-allow-reachable":"delegatecall","details":"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."}},"stateVariables":{"__gap":{"details":"This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain. See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"},"__self":{"custom:oz-upgrades-unsafe-allow":"state-variable-immutable state-variable-assignment"}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"proxiableUUID()":"52d1902d","upgradeTo(address)":"3659cfe6","upgradeToAndCall(address,bytes)":"4f1ef286"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"upgradeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy. A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing `UUPSUpgradeable` with a custom implementation of upgrades. The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism. _Available since v4.1._\",\"kind\":\"dev\",\"methods\":{\"proxiableUUID()\":{\"details\":\"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"upgradeTo(address)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"},\"upgradeToAndCall(address,bytes)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"}},\"stateVariables\":{\"__gap\":{\"details\":\"This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain. See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\"},\"__self\":{\"custom:oz-upgrades-unsafe-allow\":\"state-variable-immutable state-variable-assignment\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":\"UUPSUpgradeable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/interfaces/IERC1967Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (interfaces/IERC1967.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\\n *\\n * _Available since v4.8.3._\\n */\\ninterface IERC1967Upgradeable {\\n /**\\n * @dev Emitted when the implementation is upgraded.\\n */\\n event Upgraded(address indexed implementation);\\n\\n /**\\n * @dev Emitted when the admin account has changed.\\n */\\n event AdminChanged(address previousAdmin, address newAdmin);\\n\\n /**\\n * @dev Emitted when the beacon is changed.\\n */\\n event BeaconUpgraded(address indexed beacon);\\n}\\n\",\"keccak256\":\"0x47d6e06872b12e72c79d1b5eb55842f860b5fb1207b2317c2358d2766b950a7b\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822ProxiableUpgradeable {\\n /**\\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n * address.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy.\\n */\\n function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../beacon/IBeaconUpgradeable.sol\\\";\\nimport \\\"../../interfaces/IERC1967Upgradeable.sol\\\";\\nimport \\\"../../interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\nimport \\\"../../utils/StorageSlotUpgradeable.sol\\\";\\nimport {Initializable} from \\\"../utils/Initializable.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n */\\nabstract contract ERC1967UpgradeUpgradeable is Initializable, IERC1967Upgradeable {\\n // This is the keccak-256 hash of \\\"eip1967.proxy.rollback\\\" subtracted by 1\\n bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n /**\\n * @dev Storage slot with the address of the current implementation.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n function __ERC1967Upgrade_init() internal onlyInitializing {\\n }\\n\\n function __ERC1967Upgrade_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _getImplementation() internal view returns (address) {\\n return StorageSlotUpgradeable.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 implementation slot.\\n */\\n function _setImplementation(address newImplementation) private {\\n require(AddressUpgradeable.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n StorageSlotUpgradeable.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n }\\n\\n /**\\n * @dev Perform implementation upgrade\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeTo(address newImplementation) internal {\\n _setImplementation(newImplementation);\\n emit Upgraded(newImplementation);\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCall(address newImplementation, bytes memory data, bool forceCall) internal {\\n _upgradeTo(newImplementation);\\n if (data.length > 0 || forceCall) {\\n AddressUpgradeable.functionDelegateCall(newImplementation, data);\\n }\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCallUUPS(address newImplementation, bytes memory data, bool forceCall) internal {\\n // Upgrades from old implementations will perform a rollback test. This test requires the new\\n // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n // this special case will break upgrade paths from old UUPS implementation to new ones.\\n if (StorageSlotUpgradeable.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n _setImplementation(newImplementation);\\n } else {\\n try IERC1822ProxiableUpgradeable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n require(slot == _IMPLEMENTATION_SLOT, \\\"ERC1967Upgrade: unsupported proxiableUUID\\\");\\n } catch {\\n revert(\\\"ERC1967Upgrade: new implementation is not UUPS\\\");\\n }\\n _upgradeToAndCall(newImplementation, data, forceCall);\\n }\\n }\\n\\n /**\\n * @dev Storage slot with the admin of the contract.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _getAdmin() internal view returns (address) {\\n return StorageSlotUpgradeable.getAddressSlot(_ADMIN_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 admin slot.\\n */\\n function _setAdmin(address newAdmin) private {\\n require(newAdmin != address(0), \\\"ERC1967: new admin is the zero address\\\");\\n StorageSlotUpgradeable.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n */\\n function _changeAdmin(address newAdmin) internal {\\n emit AdminChanged(_getAdmin(), newAdmin);\\n _setAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\\n */\\n bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n /**\\n * @dev Returns the current beacon.\\n */\\n function _getBeacon() internal view returns (address) {\\n return StorageSlotUpgradeable.getAddressSlot(_BEACON_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new beacon in the EIP1967 beacon slot.\\n */\\n function _setBeacon(address newBeacon) private {\\n require(AddressUpgradeable.isContract(newBeacon), \\\"ERC1967: new beacon is not a contract\\\");\\n require(\\n AddressUpgradeable.isContract(IBeaconUpgradeable(newBeacon).implementation()),\\n \\\"ERC1967: beacon implementation is not a contract\\\"\\n );\\n StorageSlotUpgradeable.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n }\\n\\n /**\\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n *\\n * Emits a {BeaconUpgraded} event.\\n */\\n function _upgradeBeaconToAndCall(address newBeacon, bytes memory data, bool forceCall) internal {\\n _setBeacon(newBeacon);\\n emit BeaconUpgraded(newBeacon);\\n if (data.length > 0 || forceCall) {\\n AddressUpgradeable.functionDelegateCall(IBeaconUpgradeable(newBeacon).implementation(), data);\\n }\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x7795808e3899c805254e3ae58074b20f799b466e3f43e057e47bedee5fb771f8\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeaconUpgradeable {\\n /**\\n * @dev Must return an address that can be used as a delegate call target.\\n *\\n * {BeaconProxy} will check that this address is a contract.\\n */\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/UUPSUpgradeable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport \\\"../ERC1967/ERC1967UpgradeUpgradeable.sol\\\";\\nimport {Initializable} from \\\"./Initializable.sol\\\";\\n\\n/**\\n * @dev An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an\\n * {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy.\\n *\\n * A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is\\n * reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing\\n * `UUPSUpgradeable` with a custom implementation of upgrades.\\n *\\n * The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism.\\n *\\n * _Available since v4.1._\\n */\\nabstract contract UUPSUpgradeable is Initializable, IERC1822ProxiableUpgradeable, ERC1967UpgradeUpgradeable {\\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable state-variable-assignment\\n address private immutable __self = address(this);\\n\\n /**\\n * @dev Check that the execution is being performed through a delegatecall call and that the execution context is\\n * a proxy contract with an implementation (as defined in ERC1967) pointing to self. This should only be the case\\n * for UUPS and transparent proxies that are using the current contract as their implementation. Execution of a\\n * function through ERC1167 minimal proxies (clones) would not normally pass this test, but is not guaranteed to\\n * fail.\\n */\\n modifier onlyProxy() {\\n require(address(this) != __self, \\\"Function must be called through delegatecall\\\");\\n require(_getImplementation() == __self, \\\"Function must be called through active proxy\\\");\\n _;\\n }\\n\\n /**\\n * @dev Check that the execution is not being performed through a delegate call. This allows a function to be\\n * callable on the implementing contract but not through proxies.\\n */\\n modifier notDelegated() {\\n require(address(this) == __self, \\\"UUPSUpgradeable: must not be called through delegatecall\\\");\\n _;\\n }\\n\\n function __UUPSUpgradeable_init() internal onlyInitializing {\\n }\\n\\n function __UUPSUpgradeable_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the\\n * implementation. It is used to validate the implementation's compatibility when performing an upgrade.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\\n */\\n function proxiableUUID() external view virtual override notDelegated returns (bytes32) {\\n return _IMPLEMENTATION_SLOT;\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy to `newImplementation`.\\n *\\n * Calls {_authorizeUpgrade}.\\n *\\n * Emits an {Upgraded} event.\\n *\\n * @custom:oz-upgrades-unsafe-allow-reachable delegatecall\\n */\\n function upgradeTo(address newImplementation) public virtual onlyProxy {\\n _authorizeUpgrade(newImplementation);\\n _upgradeToAndCallUUPS(newImplementation, new bytes(0), false);\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call\\n * encoded in `data`.\\n *\\n * Calls {_authorizeUpgrade}.\\n *\\n * Emits an {Upgraded} event.\\n *\\n * @custom:oz-upgrades-unsafe-allow-reachable delegatecall\\n */\\n function upgradeToAndCall(address newImplementation, bytes memory data) public payable virtual onlyProxy {\\n _authorizeUpgrade(newImplementation);\\n _upgradeToAndCallUUPS(newImplementation, data, true);\\n }\\n\\n /**\\n * @dev Function that should revert when `msg.sender` is not authorized to upgrade the contract. Called by\\n * {upgradeTo} and {upgradeToAndCall}.\\n *\\n * Normally, this function will use an xref:access.adoc[access control] modifier such as {Ownable-onlyOwner}.\\n *\\n * ```solidity\\n * function _authorizeUpgrade(address) internal override onlyOwner {}\\n * ```\\n */\\n function _authorizeUpgrade(address newImplementation) internal virtual;\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0xefb41f5c1a00249b7a99f0782f8c557865605426a3fb6e5fe9ae334293ae4f33\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/StorageSlot.sol)\\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```solidity\\n * contract ERC1967 {\\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n * function _getImplementation() internal view returns (address) {\\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n * }\\n *\\n * function _setImplementation(address newImplementation) internal {\\n * require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n * }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._\\n * _Available since v4.9 for `string`, `bytes`._\\n */\\nlibrary StorageSlotUpgradeable {\\n struct AddressSlot {\\n address value;\\n }\\n\\n struct BooleanSlot {\\n bool value;\\n }\\n\\n struct Bytes32Slot {\\n bytes32 value;\\n }\\n\\n struct Uint256Slot {\\n uint256 value;\\n }\\n\\n struct StringSlot {\\n string value;\\n }\\n\\n struct BytesSlot {\\n bytes value;\\n }\\n\\n /**\\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n */\\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n */\\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n */\\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n */\\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` with member `value` located at `slot`.\\n */\\n function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\\n */\\n function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` with member `value` located at `slot`.\\n */\\n function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\\n */\\n function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n}\\n\",\"keccak256\":\"0x07ac95acad040f1fb1f6120dd0aa5f702db69446e95f82613721879d30de0908\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":372,"contract":"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:UUPSUpgradeable","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":375,"contract":"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:UUPSUpgradeable","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":354,"contract":"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:UUPSUpgradeable","label":"__gap","offset":0,"slot":"1","type":"t_array(t_uint256)50_storage"},{"astId":670,"contract":"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:UUPSUpgradeable","label":"__gap","offset":0,"slot":"51","type":"t_array(t_uint256)50_storage"}],"types":{"t_array(t_uint256)50_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[50]","numberOfBytes":"1600"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol":{"AddressUpgradeable":{"abi":[],"devdoc":{"details":"Collection of functions related to the address type","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"602d6037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a","opcodes":"PUSH1 0x2D PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"194:9180:6:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;194:9180:6;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"194:9180:6:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"9000","executionCost":"94","totalCost":"9094"},"internal":{"_revert(bytes memory,string memory)":"infinite","functionCall(address,bytes memory)":"infinite","functionCall(address,bytes memory,string memory)":"infinite","functionCallWithValue(address,bytes memory,uint256)":"infinite","functionCallWithValue(address,bytes memory,uint256,string memory)":"infinite","functionDelegateCall(address,bytes memory)":"infinite","functionDelegateCall(address,bytes memory,string memory)":"infinite","functionStaticCall(address,bytes memory)":"infinite","functionStaticCall(address,bytes memory,string memory)":"infinite","isContract(address)":"infinite","sendValue(address payable,uint256)":"infinite","verifyCallResult(bool,bytes memory,string memory)":"infinite","verifyCallResultFromTarget(address,bool,bytes memory,string memory)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Collection of functions related to the address type\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":\"AddressUpgradeable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/utils/CheckpointsUpgradeable.sol":{"CheckpointsUpgradeable":{"abi":[],"devdoc":{"details":"This library defines the `History` struct, for checkpointing values as they change at different points in time, and later looking up past values by block number. See {Votes} as an example. To create a history of checkpoints define a variable type `Checkpoints.History` in your contract, and store a new checkpoint for the current transaction block using the {push} function. _Available since v4.5._","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"602d6037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a","opcodes":"PUSH1 0x2D PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"730:19886:7:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;730:19886:7;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"730:19886:7:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"9000","executionCost":"94","totalCost":"9094"},"internal":{"_insert(struct CheckpointsUpgradeable.Checkpoint storage ref[] storage pointer,uint32,uint224)":"infinite","_insert(struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage pointer,uint96,uint160)":"infinite","_insert(struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage pointer,uint32,uint224)":"infinite","_lowerBinaryLookup(struct CheckpointsUpgradeable.Checkpoint storage ref[] storage pointer,uint32,uint256,uint256)":"infinite","_lowerBinaryLookup(struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage pointer,uint96,uint256,uint256)":"infinite","_lowerBinaryLookup(struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage pointer,uint32,uint256,uint256)":"infinite","_unsafeAccess(struct CheckpointsUpgradeable.Checkpoint storage ref[] storage pointer,uint256)":"infinite","_unsafeAccess(struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage pointer,uint256)":"infinite","_unsafeAccess(struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage pointer,uint256)":"infinite","_upperBinaryLookup(struct CheckpointsUpgradeable.Checkpoint storage ref[] storage pointer,uint32,uint256,uint256)":"infinite","_upperBinaryLookup(struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage pointer,uint96,uint256,uint256)":"infinite","_upperBinaryLookup(struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage pointer,uint32,uint256,uint256)":"infinite","getAtBlock(struct CheckpointsUpgradeable.History storage pointer,uint256)":"infinite","getAtProbablyRecentBlock(struct CheckpointsUpgradeable.History storage pointer,uint256)":"infinite","latest(struct CheckpointsUpgradeable.History storage pointer)":"infinite","latest(struct CheckpointsUpgradeable.Trace160 storage pointer)":"infinite","latest(struct CheckpointsUpgradeable.Trace224 storage pointer)":"infinite","latestCheckpoint(struct CheckpointsUpgradeable.History storage pointer)":"infinite","latestCheckpoint(struct CheckpointsUpgradeable.Trace160 storage pointer)":"infinite","latestCheckpoint(struct CheckpointsUpgradeable.Trace224 storage pointer)":"infinite","length(struct CheckpointsUpgradeable.History storage pointer)":"infinite","length(struct CheckpointsUpgradeable.Trace160 storage pointer)":"infinite","length(struct CheckpointsUpgradeable.Trace224 storage pointer)":"infinite","lowerLookup(struct CheckpointsUpgradeable.Trace160 storage pointer,uint96)":"infinite","lowerLookup(struct CheckpointsUpgradeable.Trace224 storage pointer,uint32)":"infinite","push(struct CheckpointsUpgradeable.History storage pointer,function (uint256,uint256) view returns (uint256),uint256)":"infinite","push(struct CheckpointsUpgradeable.History storage pointer,uint256)":"infinite","push(struct CheckpointsUpgradeable.Trace160 storage pointer,uint96,uint160)":"infinite","push(struct CheckpointsUpgradeable.Trace224 storage pointer,uint32,uint224)":"infinite","upperLookup(struct CheckpointsUpgradeable.Trace160 storage pointer,uint96)":"infinite","upperLookup(struct CheckpointsUpgradeable.Trace224 storage pointer,uint32)":"infinite","upperLookupRecent(struct CheckpointsUpgradeable.Trace160 storage pointer,uint96)":"infinite","upperLookupRecent(struct CheckpointsUpgradeable.Trace224 storage pointer,uint32)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"This library defines the `History` struct, for checkpointing values as they change at different points in time, and later looking up past values by block number. See {Votes} as an example. To create a history of checkpoints define a variable type `Checkpoints.History` in your contract, and store a new checkpoint for the current transaction block using the {push} function. _Available since v4.5._\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/utils/CheckpointsUpgradeable.sol\":\"CheckpointsUpgradeable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/utils/CheckpointsUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Checkpoints.sol)\\n// This file was procedurally generated from scripts/generate/templates/Checkpoints.js.\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./math/MathUpgradeable.sol\\\";\\nimport \\\"./math/SafeCastUpgradeable.sol\\\";\\n\\n/**\\n * @dev This library defines the `History` struct, for checkpointing values as they change at different points in\\n * time, and later looking up past values by block number. See {Votes} as an example.\\n *\\n * To create a history of checkpoints define a variable type `Checkpoints.History` in your contract, and store a new\\n * checkpoint for the current transaction block using the {push} function.\\n *\\n * _Available since v4.5._\\n */\\nlibrary CheckpointsUpgradeable {\\n struct History {\\n Checkpoint[] _checkpoints;\\n }\\n\\n struct Checkpoint {\\n uint32 _blockNumber;\\n uint224 _value;\\n }\\n\\n /**\\n * @dev Returns the value at a given block number. If a checkpoint is not available at that block, the closest one\\n * before it is returned, or zero otherwise. Because the number returned corresponds to that at the end of the\\n * block, the requested block number must be in the past, excluding the current block.\\n */\\n function getAtBlock(History storage self, uint256 blockNumber) internal view returns (uint256) {\\n require(blockNumber < block.number, \\\"Checkpoints: block not yet mined\\\");\\n uint32 key = SafeCastUpgradeable.toUint32(blockNumber);\\n\\n uint256 len = self._checkpoints.length;\\n uint256 pos = _upperBinaryLookup(self._checkpoints, key, 0, len);\\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\\n }\\n\\n /**\\n * @dev Returns the value at a given block number. If a checkpoint is not available at that block, the closest one\\n * before it is returned, or zero otherwise. Similar to {upperLookup} but optimized for the case when the searched\\n * checkpoint is probably \\\"recent\\\", defined as being among the last sqrt(N) checkpoints where N is the number of\\n * checkpoints.\\n */\\n function getAtProbablyRecentBlock(History storage self, uint256 blockNumber) internal view returns (uint256) {\\n require(blockNumber < block.number, \\\"Checkpoints: block not yet mined\\\");\\n uint32 key = SafeCastUpgradeable.toUint32(blockNumber);\\n\\n uint256 len = self._checkpoints.length;\\n\\n uint256 low = 0;\\n uint256 high = len;\\n\\n if (len > 5) {\\n uint256 mid = len - MathUpgradeable.sqrt(len);\\n if (key < _unsafeAccess(self._checkpoints, mid)._blockNumber) {\\n high = mid;\\n } else {\\n low = mid + 1;\\n }\\n }\\n\\n uint256 pos = _upperBinaryLookup(self._checkpoints, key, low, high);\\n\\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\\n }\\n\\n /**\\n * @dev Pushes a value onto a History so that it is stored as the checkpoint for the current block.\\n *\\n * Returns previous value and new value.\\n */\\n function push(History storage self, uint256 value) internal returns (uint256, uint256) {\\n return _insert(self._checkpoints, SafeCastUpgradeable.toUint32(block.number), SafeCastUpgradeable.toUint224(value));\\n }\\n\\n /**\\n * @dev Pushes a value onto a History, by updating the latest value using binary operation `op`. The new value will\\n * be set to `op(latest, delta)`.\\n *\\n * Returns previous value and new value.\\n */\\n function push(\\n History storage self,\\n function(uint256, uint256) view returns (uint256) op,\\n uint256 delta\\n ) internal returns (uint256, uint256) {\\n return push(self, op(latest(self), delta));\\n }\\n\\n /**\\n * @dev Returns the value in the most recent checkpoint, or zero if there are no checkpoints.\\n */\\n function latest(History storage self) internal view returns (uint224) {\\n uint256 pos = self._checkpoints.length;\\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\\n }\\n\\n /**\\n * @dev Returns whether there is a checkpoint in the structure (i.e. it is not empty), and if so the key and value\\n * in the most recent checkpoint.\\n */\\n function latestCheckpoint(\\n History storage self\\n ) internal view returns (bool exists, uint32 _blockNumber, uint224 _value) {\\n uint256 pos = self._checkpoints.length;\\n if (pos == 0) {\\n return (false, 0, 0);\\n } else {\\n Checkpoint memory ckpt = _unsafeAccess(self._checkpoints, pos - 1);\\n return (true, ckpt._blockNumber, ckpt._value);\\n }\\n }\\n\\n /**\\n * @dev Returns the number of checkpoint.\\n */\\n function length(History storage self) internal view returns (uint256) {\\n return self._checkpoints.length;\\n }\\n\\n /**\\n * @dev Pushes a (`key`, `value`) pair into an ordered list of checkpoints, either by inserting a new checkpoint,\\n * or by updating the last one.\\n */\\n function _insert(Checkpoint[] storage self, uint32 key, uint224 value) private returns (uint224, uint224) {\\n uint256 pos = self.length;\\n\\n if (pos > 0) {\\n // Copying to memory is important here.\\n Checkpoint memory last = _unsafeAccess(self, pos - 1);\\n\\n // Checkpoint keys must be non-decreasing.\\n require(last._blockNumber <= key, \\\"Checkpoint: decreasing keys\\\");\\n\\n // Update or push new checkpoint\\n if (last._blockNumber == key) {\\n _unsafeAccess(self, pos - 1)._value = value;\\n } else {\\n self.push(Checkpoint({_blockNumber: key, _value: value}));\\n }\\n return (last._value, value);\\n } else {\\n self.push(Checkpoint({_blockNumber: key, _value: value}));\\n return (0, value);\\n }\\n }\\n\\n /**\\n * @dev Return the index of the last (most recent) checkpoint with key lower or equal than the search key, or `high` if there is none.\\n * `low` and `high` define a section where to do the search, with inclusive `low` and exclusive `high`.\\n *\\n * WARNING: `high` should not be greater than the array's length.\\n */\\n function _upperBinaryLookup(\\n Checkpoint[] storage self,\\n uint32 key,\\n uint256 low,\\n uint256 high\\n ) private view returns (uint256) {\\n while (low < high) {\\n uint256 mid = MathUpgradeable.average(low, high);\\n if (_unsafeAccess(self, mid)._blockNumber > key) {\\n high = mid;\\n } else {\\n low = mid + 1;\\n }\\n }\\n return high;\\n }\\n\\n /**\\n * @dev Return the index of the first (oldest) checkpoint with key is greater or equal than the search key, or `high` if there is none.\\n * `low` and `high` define a section where to do the search, with inclusive `low` and exclusive `high`.\\n *\\n * WARNING: `high` should not be greater than the array's length.\\n */\\n function _lowerBinaryLookup(\\n Checkpoint[] storage self,\\n uint32 key,\\n uint256 low,\\n uint256 high\\n ) private view returns (uint256) {\\n while (low < high) {\\n uint256 mid = MathUpgradeable.average(low, high);\\n if (_unsafeAccess(self, mid)._blockNumber < key) {\\n low = mid + 1;\\n } else {\\n high = mid;\\n }\\n }\\n return high;\\n }\\n\\n /**\\n * @dev Access an element of the array without performing bounds check. The position is assumed to be within bounds.\\n */\\n function _unsafeAccess(Checkpoint[] storage self, uint256 pos) private pure returns (Checkpoint storage result) {\\n assembly {\\n mstore(0, self.slot)\\n result.slot := add(keccak256(0, 0x20), pos)\\n }\\n }\\n\\n struct Trace224 {\\n Checkpoint224[] _checkpoints;\\n }\\n\\n struct Checkpoint224 {\\n uint32 _key;\\n uint224 _value;\\n }\\n\\n /**\\n * @dev Pushes a (`key`, `value`) pair into a Trace224 so that it is stored as the checkpoint.\\n *\\n * Returns previous value and new value.\\n */\\n function push(Trace224 storage self, uint32 key, uint224 value) internal returns (uint224, uint224) {\\n return _insert(self._checkpoints, key, value);\\n }\\n\\n /**\\n * @dev Returns the value in the first (oldest) checkpoint with key greater or equal than the search key, or zero if there is none.\\n */\\n function lowerLookup(Trace224 storage self, uint32 key) internal view returns (uint224) {\\n uint256 len = self._checkpoints.length;\\n uint256 pos = _lowerBinaryLookup(self._checkpoints, key, 0, len);\\n return pos == len ? 0 : _unsafeAccess(self._checkpoints, pos)._value;\\n }\\n\\n /**\\n * @dev Returns the value in the last (most recent) checkpoint with key lower or equal than the search key, or zero if there is none.\\n */\\n function upperLookup(Trace224 storage self, uint32 key) internal view returns (uint224) {\\n uint256 len = self._checkpoints.length;\\n uint256 pos = _upperBinaryLookup(self._checkpoints, key, 0, len);\\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\\n }\\n\\n /**\\n * @dev Returns the value in the last (most recent) checkpoint with key lower or equal than the search key, or zero if there is none.\\n *\\n * NOTE: This is a variant of {upperLookup} that is optimised to find \\\"recent\\\" checkpoint (checkpoints with high keys).\\n */\\n function upperLookupRecent(Trace224 storage self, uint32 key) internal view returns (uint224) {\\n uint256 len = self._checkpoints.length;\\n\\n uint256 low = 0;\\n uint256 high = len;\\n\\n if (len > 5) {\\n uint256 mid = len - MathUpgradeable.sqrt(len);\\n if (key < _unsafeAccess(self._checkpoints, mid)._key) {\\n high = mid;\\n } else {\\n low = mid + 1;\\n }\\n }\\n\\n uint256 pos = _upperBinaryLookup(self._checkpoints, key, low, high);\\n\\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\\n }\\n\\n /**\\n * @dev Returns the value in the most recent checkpoint, or zero if there are no checkpoints.\\n */\\n function latest(Trace224 storage self) internal view returns (uint224) {\\n uint256 pos = self._checkpoints.length;\\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\\n }\\n\\n /**\\n * @dev Returns whether there is a checkpoint in the structure (i.e. it is not empty), and if so the key and value\\n * in the most recent checkpoint.\\n */\\n function latestCheckpoint(Trace224 storage self) internal view returns (bool exists, uint32 _key, uint224 _value) {\\n uint256 pos = self._checkpoints.length;\\n if (pos == 0) {\\n return (false, 0, 0);\\n } else {\\n Checkpoint224 memory ckpt = _unsafeAccess(self._checkpoints, pos - 1);\\n return (true, ckpt._key, ckpt._value);\\n }\\n }\\n\\n /**\\n * @dev Returns the number of checkpoint.\\n */\\n function length(Trace224 storage self) internal view returns (uint256) {\\n return self._checkpoints.length;\\n }\\n\\n /**\\n * @dev Pushes a (`key`, `value`) pair into an ordered list of checkpoints, either by inserting a new checkpoint,\\n * or by updating the last one.\\n */\\n function _insert(Checkpoint224[] storage self, uint32 key, uint224 value) private returns (uint224, uint224) {\\n uint256 pos = self.length;\\n\\n if (pos > 0) {\\n // Copying to memory is important here.\\n Checkpoint224 memory last = _unsafeAccess(self, pos - 1);\\n\\n // Checkpoint keys must be non-decreasing.\\n require(last._key <= key, \\\"Checkpoint: decreasing keys\\\");\\n\\n // Update or push new checkpoint\\n if (last._key == key) {\\n _unsafeAccess(self, pos - 1)._value = value;\\n } else {\\n self.push(Checkpoint224({_key: key, _value: value}));\\n }\\n return (last._value, value);\\n } else {\\n self.push(Checkpoint224({_key: key, _value: value}));\\n return (0, value);\\n }\\n }\\n\\n /**\\n * @dev Return the index of the last (most recent) checkpoint with key lower or equal than the search key, or `high` if there is none.\\n * `low` and `high` define a section where to do the search, with inclusive `low` and exclusive `high`.\\n *\\n * WARNING: `high` should not be greater than the array's length.\\n */\\n function _upperBinaryLookup(\\n Checkpoint224[] storage self,\\n uint32 key,\\n uint256 low,\\n uint256 high\\n ) private view returns (uint256) {\\n while (low < high) {\\n uint256 mid = MathUpgradeable.average(low, high);\\n if (_unsafeAccess(self, mid)._key > key) {\\n high = mid;\\n } else {\\n low = mid + 1;\\n }\\n }\\n return high;\\n }\\n\\n /**\\n * @dev Return the index of the first (oldest) checkpoint with key is greater or equal than the search key, or `high` if there is none.\\n * `low` and `high` define a section where to do the search, with inclusive `low` and exclusive `high`.\\n *\\n * WARNING: `high` should not be greater than the array's length.\\n */\\n function _lowerBinaryLookup(\\n Checkpoint224[] storage self,\\n uint32 key,\\n uint256 low,\\n uint256 high\\n ) private view returns (uint256) {\\n while (low < high) {\\n uint256 mid = MathUpgradeable.average(low, high);\\n if (_unsafeAccess(self, mid)._key < key) {\\n low = mid + 1;\\n } else {\\n high = mid;\\n }\\n }\\n return high;\\n }\\n\\n /**\\n * @dev Access an element of the array without performing bounds check. The position is assumed to be within bounds.\\n */\\n function _unsafeAccess(\\n Checkpoint224[] storage self,\\n uint256 pos\\n ) private pure returns (Checkpoint224 storage result) {\\n assembly {\\n mstore(0, self.slot)\\n result.slot := add(keccak256(0, 0x20), pos)\\n }\\n }\\n\\n struct Trace160 {\\n Checkpoint160[] _checkpoints;\\n }\\n\\n struct Checkpoint160 {\\n uint96 _key;\\n uint160 _value;\\n }\\n\\n /**\\n * @dev Pushes a (`key`, `value`) pair into a Trace160 so that it is stored as the checkpoint.\\n *\\n * Returns previous value and new value.\\n */\\n function push(Trace160 storage self, uint96 key, uint160 value) internal returns (uint160, uint160) {\\n return _insert(self._checkpoints, key, value);\\n }\\n\\n /**\\n * @dev Returns the value in the first (oldest) checkpoint with key greater or equal than the search key, or zero if there is none.\\n */\\n function lowerLookup(Trace160 storage self, uint96 key) internal view returns (uint160) {\\n uint256 len = self._checkpoints.length;\\n uint256 pos = _lowerBinaryLookup(self._checkpoints, key, 0, len);\\n return pos == len ? 0 : _unsafeAccess(self._checkpoints, pos)._value;\\n }\\n\\n /**\\n * @dev Returns the value in the last (most recent) checkpoint with key lower or equal than the search key, or zero if there is none.\\n */\\n function upperLookup(Trace160 storage self, uint96 key) internal view returns (uint160) {\\n uint256 len = self._checkpoints.length;\\n uint256 pos = _upperBinaryLookup(self._checkpoints, key, 0, len);\\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\\n }\\n\\n /**\\n * @dev Returns the value in the last (most recent) checkpoint with key lower or equal than the search key, or zero if there is none.\\n *\\n * NOTE: This is a variant of {upperLookup} that is optimised to find \\\"recent\\\" checkpoint (checkpoints with high keys).\\n */\\n function upperLookupRecent(Trace160 storage self, uint96 key) internal view returns (uint160) {\\n uint256 len = self._checkpoints.length;\\n\\n uint256 low = 0;\\n uint256 high = len;\\n\\n if (len > 5) {\\n uint256 mid = len - MathUpgradeable.sqrt(len);\\n if (key < _unsafeAccess(self._checkpoints, mid)._key) {\\n high = mid;\\n } else {\\n low = mid + 1;\\n }\\n }\\n\\n uint256 pos = _upperBinaryLookup(self._checkpoints, key, low, high);\\n\\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\\n }\\n\\n /**\\n * @dev Returns the value in the most recent checkpoint, or zero if there are no checkpoints.\\n */\\n function latest(Trace160 storage self) internal view returns (uint160) {\\n uint256 pos = self._checkpoints.length;\\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\\n }\\n\\n /**\\n * @dev Returns whether there is a checkpoint in the structure (i.e. it is not empty), and if so the key and value\\n * in the most recent checkpoint.\\n */\\n function latestCheckpoint(Trace160 storage self) internal view returns (bool exists, uint96 _key, uint160 _value) {\\n uint256 pos = self._checkpoints.length;\\n if (pos == 0) {\\n return (false, 0, 0);\\n } else {\\n Checkpoint160 memory ckpt = _unsafeAccess(self._checkpoints, pos - 1);\\n return (true, ckpt._key, ckpt._value);\\n }\\n }\\n\\n /**\\n * @dev Returns the number of checkpoint.\\n */\\n function length(Trace160 storage self) internal view returns (uint256) {\\n return self._checkpoints.length;\\n }\\n\\n /**\\n * @dev Pushes a (`key`, `value`) pair into an ordered list of checkpoints, either by inserting a new checkpoint,\\n * or by updating the last one.\\n */\\n function _insert(Checkpoint160[] storage self, uint96 key, uint160 value) private returns (uint160, uint160) {\\n uint256 pos = self.length;\\n\\n if (pos > 0) {\\n // Copying to memory is important here.\\n Checkpoint160 memory last = _unsafeAccess(self, pos - 1);\\n\\n // Checkpoint keys must be non-decreasing.\\n require(last._key <= key, \\\"Checkpoint: decreasing keys\\\");\\n\\n // Update or push new checkpoint\\n if (last._key == key) {\\n _unsafeAccess(self, pos - 1)._value = value;\\n } else {\\n self.push(Checkpoint160({_key: key, _value: value}));\\n }\\n return (last._value, value);\\n } else {\\n self.push(Checkpoint160({_key: key, _value: value}));\\n return (0, value);\\n }\\n }\\n\\n /**\\n * @dev Return the index of the last (most recent) checkpoint with key lower or equal than the search key, or `high` if there is none.\\n * `low` and `high` define a section where to do the search, with inclusive `low` and exclusive `high`.\\n *\\n * WARNING: `high` should not be greater than the array's length.\\n */\\n function _upperBinaryLookup(\\n Checkpoint160[] storage self,\\n uint96 key,\\n uint256 low,\\n uint256 high\\n ) private view returns (uint256) {\\n while (low < high) {\\n uint256 mid = MathUpgradeable.average(low, high);\\n if (_unsafeAccess(self, mid)._key > key) {\\n high = mid;\\n } else {\\n low = mid + 1;\\n }\\n }\\n return high;\\n }\\n\\n /**\\n * @dev Return the index of the first (oldest) checkpoint with key is greater or equal than the search key, or `high` if there is none.\\n * `low` and `high` define a section where to do the search, with inclusive `low` and exclusive `high`.\\n *\\n * WARNING: `high` should not be greater than the array's length.\\n */\\n function _lowerBinaryLookup(\\n Checkpoint160[] storage self,\\n uint96 key,\\n uint256 low,\\n uint256 high\\n ) private view returns (uint256) {\\n while (low < high) {\\n uint256 mid = MathUpgradeable.average(low, high);\\n if (_unsafeAccess(self, mid)._key < key) {\\n low = mid + 1;\\n } else {\\n high = mid;\\n }\\n }\\n return high;\\n }\\n\\n /**\\n * @dev Access an element of the array without performing bounds check. The position is assumed to be within bounds.\\n */\\n function _unsafeAccess(\\n Checkpoint160[] storage self,\\n uint256 pos\\n ) private pure returns (Checkpoint160 storage result) {\\n assembly {\\n mstore(0, self.slot)\\n result.slot := add(keccak256(0, 0x20), pos)\\n }\\n }\\n}\\n\",\"keccak256\":\"0x51ea916844ee2c53874c6895ce37acbca0250977b49b48909d75ad439f38f211\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/math/MathUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/math/Math.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard math utilities missing in the Solidity language.\\n */\\nlibrary MathUpgradeable {\\n enum Rounding {\\n Down, // Toward negative infinity\\n Up, // Toward infinity\\n Zero // Toward zero\\n }\\n\\n /**\\n * @dev Returns the largest of two numbers.\\n */\\n function max(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two numbers.\\n */\\n function min(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two numbers. The result is rounded towards\\n * zero.\\n */\\n function average(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b) / 2 can overflow.\\n return (a & b) + (a ^ b) / 2;\\n }\\n\\n /**\\n * @dev Returns the ceiling of the division of two numbers.\\n *\\n * This differs from standard division with `/` in that it rounds up instead\\n * of rounding down.\\n */\\n function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b - 1) / b can overflow on addition, so we distribute.\\n return a == 0 ? 0 : (a - 1) / b + 1;\\n }\\n\\n /**\\n * @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\\n * @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)\\n * with further edits by Uniswap Labs also under MIT license.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator) internal pure returns (uint256 result) {\\n unchecked {\\n // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use\\n // use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\\n // variables such that product = prod1 * 2^256 + prod0.\\n uint256 prod0; // Least significant 256 bits of the product\\n uint256 prod1; // Most significant 256 bits of the product\\n assembly {\\n let mm := mulmod(x, y, not(0))\\n prod0 := mul(x, y)\\n prod1 := sub(sub(mm, prod0), lt(mm, prod0))\\n }\\n\\n // Handle non-overflow cases, 256 by 256 division.\\n if (prod1 == 0) {\\n // Solidity will revert if denominator == 0, unlike the div opcode on its own.\\n // The surrounding unchecked block does not change this fact.\\n // See https://docs.soliditylang.org/en/latest/control-structures.html#checked-or-unchecked-arithmetic.\\n return prod0 / denominator;\\n }\\n\\n // Make sure the result is less than 2^256. Also prevents denominator == 0.\\n require(denominator > prod1, \\\"Math: mulDiv overflow\\\");\\n\\n ///////////////////////////////////////////////\\n // 512 by 256 division.\\n ///////////////////////////////////////////////\\n\\n // Make division exact by subtracting the remainder from [prod1 prod0].\\n uint256 remainder;\\n assembly {\\n // Compute remainder using mulmod.\\n remainder := mulmod(x, y, denominator)\\n\\n // Subtract 256 bit number from 512 bit number.\\n prod1 := sub(prod1, gt(remainder, prod0))\\n prod0 := sub(prod0, remainder)\\n }\\n\\n // Factor powers of two out of denominator and compute largest power of two divisor of denominator. Always >= 1.\\n // See https://cs.stackexchange.com/q/138556/92363.\\n\\n // Does not overflow because the denominator cannot be zero at this stage in the function.\\n uint256 twos = denominator & (~denominator + 1);\\n assembly {\\n // Divide denominator by twos.\\n denominator := div(denominator, twos)\\n\\n // Divide [prod1 prod0] by twos.\\n prod0 := div(prod0, twos)\\n\\n // Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one.\\n twos := add(div(sub(0, twos), twos), 1)\\n }\\n\\n // Shift in bits from prod1 into prod0.\\n prod0 |= prod1 * twos;\\n\\n // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such\\n // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for\\n // four bits. That is, denominator * inv = 1 mod 2^4.\\n uint256 inverse = (3 * denominator) ^ 2;\\n\\n // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also works\\n // in modular arithmetic, doubling the correct bits in each step.\\n inverse *= 2 - denominator * inverse; // inverse mod 2^8\\n inverse *= 2 - denominator * inverse; // inverse mod 2^16\\n inverse *= 2 - denominator * inverse; // inverse mod 2^32\\n inverse *= 2 - denominator * inverse; // inverse mod 2^64\\n inverse *= 2 - denominator * inverse; // inverse mod 2^128\\n inverse *= 2 - denominator * inverse; // inverse mod 2^256\\n\\n // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\\n // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is\\n // less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1\\n // is no longer required.\\n result = prod0 * inverse;\\n return result;\\n }\\n }\\n\\n /**\\n * @notice Calculates x * y / denominator with full precision, following the selected rounding direction.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator, Rounding rounding) internal pure returns (uint256) {\\n uint256 result = mulDiv(x, y, denominator);\\n if (rounding == Rounding.Up && mulmod(x, y, denominator) > 0) {\\n result += 1;\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down.\\n *\\n * Inspired by Henry S. Warren, Jr.'s \\\"Hacker's Delight\\\" (Chapter 11).\\n */\\n function sqrt(uint256 a) internal pure returns (uint256) {\\n if (a == 0) {\\n return 0;\\n }\\n\\n // For our first guess, we get the biggest power of 2 which is smaller than the square root of the target.\\n //\\n // We know that the \\\"msb\\\" (most significant bit) of our target number `a` is a power of 2 such that we have\\n // `msb(a) <= a < 2*msb(a)`. This value can be written `msb(a)=2**k` with `k=log2(a)`.\\n //\\n // This can be rewritten `2**log2(a) <= a < 2**(log2(a) + 1)`\\n // \\u2192 `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))`\\n // \\u2192 `2**(k/2) <= sqrt(a) < 2**((k+1)/2) <= 2**(k/2 + 1)`\\n //\\n // Consequently, `2**(log2(a) / 2)` is a good first approximation of `sqrt(a)` with at least 1 correct bit.\\n uint256 result = 1 << (log2(a) >> 1);\\n\\n // At this point `result` is an estimation with one bit of precision. We know the true value is a uint128,\\n // since it is the square root of a uint256. Newton's method converges quadratically (precision doubles at\\n // every iteration). We thus need at most 7 iteration to turn our partial result with one bit of precision\\n // into the expected uint128 result.\\n unchecked {\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n return min(result, a / result);\\n }\\n }\\n\\n /**\\n * @notice Calculates sqrt(a), following the selected rounding direction.\\n */\\n function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = sqrt(a);\\n return result + (rounding == Rounding.Up && result * result < a ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 2, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 128;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 64;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 32;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 16;\\n }\\n if (value >> 8 > 0) {\\n value >>= 8;\\n result += 8;\\n }\\n if (value >> 4 > 0) {\\n value >>= 4;\\n result += 4;\\n }\\n if (value >> 2 > 0) {\\n value >>= 2;\\n result += 2;\\n }\\n if (value >> 1 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 2, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log2(value);\\n return result + (rounding == Rounding.Up && 1 << result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 10, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >= 10 ** 64) {\\n value /= 10 ** 64;\\n result += 64;\\n }\\n if (value >= 10 ** 32) {\\n value /= 10 ** 32;\\n result += 32;\\n }\\n if (value >= 10 ** 16) {\\n value /= 10 ** 16;\\n result += 16;\\n }\\n if (value >= 10 ** 8) {\\n value /= 10 ** 8;\\n result += 8;\\n }\\n if (value >= 10 ** 4) {\\n value /= 10 ** 4;\\n result += 4;\\n }\\n if (value >= 10 ** 2) {\\n value /= 10 ** 2;\\n result += 2;\\n }\\n if (value >= 10 ** 1) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log10(value);\\n return result + (rounding == Rounding.Up && 10 ** result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 256, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n *\\n * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.\\n */\\n function log256(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 16;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 8;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 4;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 2;\\n }\\n if (value >> 8 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 256, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log256(value);\\n return result + (rounding == Rounding.Up && 1 << (result << 3) < value ? 1 : 0);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x2bc0007987c229ae7624eb29be6a9b84f6a6a5872f76248b15208b131ea41c4e\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/SafeCast.sol)\\n// This file was procedurally generated from scripts/generate/templates/SafeCast.js.\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Wrappers over Solidity's uintXX/intXX casting operators with added overflow\\n * checks.\\n *\\n * Downcasting from uint256/int256 in Solidity does not revert on overflow. This can\\n * easily result in undesired exploitation or bugs, since developers usually\\n * assume that overflows raise errors. `SafeCast` restores this intuition by\\n * reverting the transaction when such an operation overflows.\\n *\\n * Using this library instead of the unchecked operations eliminates an entire\\n * class of bugs, so it's recommended to use it always.\\n *\\n * Can be combined with {SafeMath} and {SignedSafeMath} to extend it to smaller types, by performing\\n * all math on `uint256` and `int256` and then downcasting.\\n */\\nlibrary SafeCastUpgradeable {\\n /**\\n * @dev Returns the downcasted uint248 from uint256, reverting on\\n * overflow (when the input is greater than largest uint248).\\n *\\n * Counterpart to Solidity's `uint248` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 248 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint248(uint256 value) internal pure returns (uint248) {\\n require(value <= type(uint248).max, \\\"SafeCast: value doesn't fit in 248 bits\\\");\\n return uint248(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint240 from uint256, reverting on\\n * overflow (when the input is greater than largest uint240).\\n *\\n * Counterpart to Solidity's `uint240` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 240 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint240(uint256 value) internal pure returns (uint240) {\\n require(value <= type(uint240).max, \\\"SafeCast: value doesn't fit in 240 bits\\\");\\n return uint240(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint232 from uint256, reverting on\\n * overflow (when the input is greater than largest uint232).\\n *\\n * Counterpart to Solidity's `uint232` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 232 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint232(uint256 value) internal pure returns (uint232) {\\n require(value <= type(uint232).max, \\\"SafeCast: value doesn't fit in 232 bits\\\");\\n return uint232(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint224 from uint256, reverting on\\n * overflow (when the input is greater than largest uint224).\\n *\\n * Counterpart to Solidity's `uint224` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 224 bits\\n *\\n * _Available since v4.2._\\n */\\n function toUint224(uint256 value) internal pure returns (uint224) {\\n require(value <= type(uint224).max, \\\"SafeCast: value doesn't fit in 224 bits\\\");\\n return uint224(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint216 from uint256, reverting on\\n * overflow (when the input is greater than largest uint216).\\n *\\n * Counterpart to Solidity's `uint216` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 216 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint216(uint256 value) internal pure returns (uint216) {\\n require(value <= type(uint216).max, \\\"SafeCast: value doesn't fit in 216 bits\\\");\\n return uint216(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint208 from uint256, reverting on\\n * overflow (when the input is greater than largest uint208).\\n *\\n * Counterpart to Solidity's `uint208` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 208 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint208(uint256 value) internal pure returns (uint208) {\\n require(value <= type(uint208).max, \\\"SafeCast: value doesn't fit in 208 bits\\\");\\n return uint208(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint200 from uint256, reverting on\\n * overflow (when the input is greater than largest uint200).\\n *\\n * Counterpart to Solidity's `uint200` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 200 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint200(uint256 value) internal pure returns (uint200) {\\n require(value <= type(uint200).max, \\\"SafeCast: value doesn't fit in 200 bits\\\");\\n return uint200(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint192 from uint256, reverting on\\n * overflow (when the input is greater than largest uint192).\\n *\\n * Counterpart to Solidity's `uint192` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 192 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint192(uint256 value) internal pure returns (uint192) {\\n require(value <= type(uint192).max, \\\"SafeCast: value doesn't fit in 192 bits\\\");\\n return uint192(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint184 from uint256, reverting on\\n * overflow (when the input is greater than largest uint184).\\n *\\n * Counterpart to Solidity's `uint184` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 184 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint184(uint256 value) internal pure returns (uint184) {\\n require(value <= type(uint184).max, \\\"SafeCast: value doesn't fit in 184 bits\\\");\\n return uint184(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint176 from uint256, reverting on\\n * overflow (when the input is greater than largest uint176).\\n *\\n * Counterpart to Solidity's `uint176` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 176 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint176(uint256 value) internal pure returns (uint176) {\\n require(value <= type(uint176).max, \\\"SafeCast: value doesn't fit in 176 bits\\\");\\n return uint176(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint168 from uint256, reverting on\\n * overflow (when the input is greater than largest uint168).\\n *\\n * Counterpart to Solidity's `uint168` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 168 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint168(uint256 value) internal pure returns (uint168) {\\n require(value <= type(uint168).max, \\\"SafeCast: value doesn't fit in 168 bits\\\");\\n return uint168(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint160 from uint256, reverting on\\n * overflow (when the input is greater than largest uint160).\\n *\\n * Counterpart to Solidity's `uint160` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 160 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint160(uint256 value) internal pure returns (uint160) {\\n require(value <= type(uint160).max, \\\"SafeCast: value doesn't fit in 160 bits\\\");\\n return uint160(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint152 from uint256, reverting on\\n * overflow (when the input is greater than largest uint152).\\n *\\n * Counterpart to Solidity's `uint152` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 152 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint152(uint256 value) internal pure returns (uint152) {\\n require(value <= type(uint152).max, \\\"SafeCast: value doesn't fit in 152 bits\\\");\\n return uint152(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint144 from uint256, reverting on\\n * overflow (when the input is greater than largest uint144).\\n *\\n * Counterpart to Solidity's `uint144` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 144 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint144(uint256 value) internal pure returns (uint144) {\\n require(value <= type(uint144).max, \\\"SafeCast: value doesn't fit in 144 bits\\\");\\n return uint144(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint136 from uint256, reverting on\\n * overflow (when the input is greater than largest uint136).\\n *\\n * Counterpart to Solidity's `uint136` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 136 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint136(uint256 value) internal pure returns (uint136) {\\n require(value <= type(uint136).max, \\\"SafeCast: value doesn't fit in 136 bits\\\");\\n return uint136(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint128 from uint256, reverting on\\n * overflow (when the input is greater than largest uint128).\\n *\\n * Counterpart to Solidity's `uint128` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 128 bits\\n *\\n * _Available since v2.5._\\n */\\n function toUint128(uint256 value) internal pure returns (uint128) {\\n require(value <= type(uint128).max, \\\"SafeCast: value doesn't fit in 128 bits\\\");\\n return uint128(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint120 from uint256, reverting on\\n * overflow (when the input is greater than largest uint120).\\n *\\n * Counterpart to Solidity's `uint120` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 120 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint120(uint256 value) internal pure returns (uint120) {\\n require(value <= type(uint120).max, \\\"SafeCast: value doesn't fit in 120 bits\\\");\\n return uint120(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint112 from uint256, reverting on\\n * overflow (when the input is greater than largest uint112).\\n *\\n * Counterpart to Solidity's `uint112` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 112 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint112(uint256 value) internal pure returns (uint112) {\\n require(value <= type(uint112).max, \\\"SafeCast: value doesn't fit in 112 bits\\\");\\n return uint112(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint104 from uint256, reverting on\\n * overflow (when the input is greater than largest uint104).\\n *\\n * Counterpart to Solidity's `uint104` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 104 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint104(uint256 value) internal pure returns (uint104) {\\n require(value <= type(uint104).max, \\\"SafeCast: value doesn't fit in 104 bits\\\");\\n return uint104(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint96 from uint256, reverting on\\n * overflow (when the input is greater than largest uint96).\\n *\\n * Counterpart to Solidity's `uint96` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 96 bits\\n *\\n * _Available since v4.2._\\n */\\n function toUint96(uint256 value) internal pure returns (uint96) {\\n require(value <= type(uint96).max, \\\"SafeCast: value doesn't fit in 96 bits\\\");\\n return uint96(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint88 from uint256, reverting on\\n * overflow (when the input is greater than largest uint88).\\n *\\n * Counterpart to Solidity's `uint88` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 88 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint88(uint256 value) internal pure returns (uint88) {\\n require(value <= type(uint88).max, \\\"SafeCast: value doesn't fit in 88 bits\\\");\\n return uint88(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint80 from uint256, reverting on\\n * overflow (when the input is greater than largest uint80).\\n *\\n * Counterpart to Solidity's `uint80` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 80 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint80(uint256 value) internal pure returns (uint80) {\\n require(value <= type(uint80).max, \\\"SafeCast: value doesn't fit in 80 bits\\\");\\n return uint80(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint72 from uint256, reverting on\\n * overflow (when the input is greater than largest uint72).\\n *\\n * Counterpart to Solidity's `uint72` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 72 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint72(uint256 value) internal pure returns (uint72) {\\n require(value <= type(uint72).max, \\\"SafeCast: value doesn't fit in 72 bits\\\");\\n return uint72(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint64 from uint256, reverting on\\n * overflow (when the input is greater than largest uint64).\\n *\\n * Counterpart to Solidity's `uint64` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 64 bits\\n *\\n * _Available since v2.5._\\n */\\n function toUint64(uint256 value) internal pure returns (uint64) {\\n require(value <= type(uint64).max, \\\"SafeCast: value doesn't fit in 64 bits\\\");\\n return uint64(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint56 from uint256, reverting on\\n * overflow (when the input is greater than largest uint56).\\n *\\n * Counterpart to Solidity's `uint56` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 56 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint56(uint256 value) internal pure returns (uint56) {\\n require(value <= type(uint56).max, \\\"SafeCast: value doesn't fit in 56 bits\\\");\\n return uint56(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint48 from uint256, reverting on\\n * overflow (when the input is greater than largest uint48).\\n *\\n * Counterpart to Solidity's `uint48` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 48 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint48(uint256 value) internal pure returns (uint48) {\\n require(value <= type(uint48).max, \\\"SafeCast: value doesn't fit in 48 bits\\\");\\n return uint48(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint40 from uint256, reverting on\\n * overflow (when the input is greater than largest uint40).\\n *\\n * Counterpart to Solidity's `uint40` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 40 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint40(uint256 value) internal pure returns (uint40) {\\n require(value <= type(uint40).max, \\\"SafeCast: value doesn't fit in 40 bits\\\");\\n return uint40(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint32 from uint256, reverting on\\n * overflow (when the input is greater than largest uint32).\\n *\\n * Counterpart to Solidity's `uint32` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 32 bits\\n *\\n * _Available since v2.5._\\n */\\n function toUint32(uint256 value) internal pure returns (uint32) {\\n require(value <= type(uint32).max, \\\"SafeCast: value doesn't fit in 32 bits\\\");\\n return uint32(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint24 from uint256, reverting on\\n * overflow (when the input is greater than largest uint24).\\n *\\n * Counterpart to Solidity's `uint24` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 24 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint24(uint256 value) internal pure returns (uint24) {\\n require(value <= type(uint24).max, \\\"SafeCast: value doesn't fit in 24 bits\\\");\\n return uint24(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint16 from uint256, reverting on\\n * overflow (when the input is greater than largest uint16).\\n *\\n * Counterpart to Solidity's `uint16` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 16 bits\\n *\\n * _Available since v2.5._\\n */\\n function toUint16(uint256 value) internal pure returns (uint16) {\\n require(value <= type(uint16).max, \\\"SafeCast: value doesn't fit in 16 bits\\\");\\n return uint16(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint8 from uint256, reverting on\\n * overflow (when the input is greater than largest uint8).\\n *\\n * Counterpart to Solidity's `uint8` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 8 bits\\n *\\n * _Available since v2.5._\\n */\\n function toUint8(uint256 value) internal pure returns (uint8) {\\n require(value <= type(uint8).max, \\\"SafeCast: value doesn't fit in 8 bits\\\");\\n return uint8(value);\\n }\\n\\n /**\\n * @dev Converts a signed int256 into an unsigned uint256.\\n *\\n * Requirements:\\n *\\n * - input must be greater than or equal to 0.\\n *\\n * _Available since v3.0._\\n */\\n function toUint256(int256 value) internal pure returns (uint256) {\\n require(value >= 0, \\\"SafeCast: value must be positive\\\");\\n return uint256(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted int248 from int256, reverting on\\n * overflow (when the input is less than smallest int248 or\\n * greater than largest int248).\\n *\\n * Counterpart to Solidity's `int248` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 248 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt248(int256 value) internal pure returns (int248 downcasted) {\\n downcasted = int248(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 248 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int240 from int256, reverting on\\n * overflow (when the input is less than smallest int240 or\\n * greater than largest int240).\\n *\\n * Counterpart to Solidity's `int240` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 240 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt240(int256 value) internal pure returns (int240 downcasted) {\\n downcasted = int240(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 240 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int232 from int256, reverting on\\n * overflow (when the input is less than smallest int232 or\\n * greater than largest int232).\\n *\\n * Counterpart to Solidity's `int232` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 232 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt232(int256 value) internal pure returns (int232 downcasted) {\\n downcasted = int232(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 232 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int224 from int256, reverting on\\n * overflow (when the input is less than smallest int224 or\\n * greater than largest int224).\\n *\\n * Counterpart to Solidity's `int224` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 224 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt224(int256 value) internal pure returns (int224 downcasted) {\\n downcasted = int224(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 224 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int216 from int256, reverting on\\n * overflow (when the input is less than smallest int216 or\\n * greater than largest int216).\\n *\\n * Counterpart to Solidity's `int216` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 216 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt216(int256 value) internal pure returns (int216 downcasted) {\\n downcasted = int216(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 216 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int208 from int256, reverting on\\n * overflow (when the input is less than smallest int208 or\\n * greater than largest int208).\\n *\\n * Counterpart to Solidity's `int208` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 208 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt208(int256 value) internal pure returns (int208 downcasted) {\\n downcasted = int208(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 208 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int200 from int256, reverting on\\n * overflow (when the input is less than smallest int200 or\\n * greater than largest int200).\\n *\\n * Counterpart to Solidity's `int200` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 200 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt200(int256 value) internal pure returns (int200 downcasted) {\\n downcasted = int200(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 200 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int192 from int256, reverting on\\n * overflow (when the input is less than smallest int192 or\\n * greater than largest int192).\\n *\\n * Counterpart to Solidity's `int192` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 192 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt192(int256 value) internal pure returns (int192 downcasted) {\\n downcasted = int192(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 192 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int184 from int256, reverting on\\n * overflow (when the input is less than smallest int184 or\\n * greater than largest int184).\\n *\\n * Counterpart to Solidity's `int184` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 184 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt184(int256 value) internal pure returns (int184 downcasted) {\\n downcasted = int184(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 184 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int176 from int256, reverting on\\n * overflow (when the input is less than smallest int176 or\\n * greater than largest int176).\\n *\\n * Counterpart to Solidity's `int176` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 176 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt176(int256 value) internal pure returns (int176 downcasted) {\\n downcasted = int176(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 176 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int168 from int256, reverting on\\n * overflow (when the input is less than smallest int168 or\\n * greater than largest int168).\\n *\\n * Counterpart to Solidity's `int168` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 168 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt168(int256 value) internal pure returns (int168 downcasted) {\\n downcasted = int168(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 168 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int160 from int256, reverting on\\n * overflow (when the input is less than smallest int160 or\\n * greater than largest int160).\\n *\\n * Counterpart to Solidity's `int160` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 160 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt160(int256 value) internal pure returns (int160 downcasted) {\\n downcasted = int160(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 160 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int152 from int256, reverting on\\n * overflow (when the input is less than smallest int152 or\\n * greater than largest int152).\\n *\\n * Counterpart to Solidity's `int152` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 152 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt152(int256 value) internal pure returns (int152 downcasted) {\\n downcasted = int152(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 152 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int144 from int256, reverting on\\n * overflow (when the input is less than smallest int144 or\\n * greater than largest int144).\\n *\\n * Counterpart to Solidity's `int144` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 144 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt144(int256 value) internal pure returns (int144 downcasted) {\\n downcasted = int144(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 144 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int136 from int256, reverting on\\n * overflow (when the input is less than smallest int136 or\\n * greater than largest int136).\\n *\\n * Counterpart to Solidity's `int136` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 136 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt136(int256 value) internal pure returns (int136 downcasted) {\\n downcasted = int136(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 136 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int128 from int256, reverting on\\n * overflow (when the input is less than smallest int128 or\\n * greater than largest int128).\\n *\\n * Counterpart to Solidity's `int128` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 128 bits\\n *\\n * _Available since v3.1._\\n */\\n function toInt128(int256 value) internal pure returns (int128 downcasted) {\\n downcasted = int128(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 128 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int120 from int256, reverting on\\n * overflow (when the input is less than smallest int120 or\\n * greater than largest int120).\\n *\\n * Counterpart to Solidity's `int120` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 120 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt120(int256 value) internal pure returns (int120 downcasted) {\\n downcasted = int120(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 120 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int112 from int256, reverting on\\n * overflow (when the input is less than smallest int112 or\\n * greater than largest int112).\\n *\\n * Counterpart to Solidity's `int112` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 112 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt112(int256 value) internal pure returns (int112 downcasted) {\\n downcasted = int112(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 112 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int104 from int256, reverting on\\n * overflow (when the input is less than smallest int104 or\\n * greater than largest int104).\\n *\\n * Counterpart to Solidity's `int104` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 104 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt104(int256 value) internal pure returns (int104 downcasted) {\\n downcasted = int104(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 104 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int96 from int256, reverting on\\n * overflow (when the input is less than smallest int96 or\\n * greater than largest int96).\\n *\\n * Counterpart to Solidity's `int96` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 96 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt96(int256 value) internal pure returns (int96 downcasted) {\\n downcasted = int96(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 96 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int88 from int256, reverting on\\n * overflow (when the input is less than smallest int88 or\\n * greater than largest int88).\\n *\\n * Counterpart to Solidity's `int88` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 88 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt88(int256 value) internal pure returns (int88 downcasted) {\\n downcasted = int88(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 88 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int80 from int256, reverting on\\n * overflow (when the input is less than smallest int80 or\\n * greater than largest int80).\\n *\\n * Counterpart to Solidity's `int80` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 80 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt80(int256 value) internal pure returns (int80 downcasted) {\\n downcasted = int80(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 80 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int72 from int256, reverting on\\n * overflow (when the input is less than smallest int72 or\\n * greater than largest int72).\\n *\\n * Counterpart to Solidity's `int72` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 72 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt72(int256 value) internal pure returns (int72 downcasted) {\\n downcasted = int72(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 72 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int64 from int256, reverting on\\n * overflow (when the input is less than smallest int64 or\\n * greater than largest int64).\\n *\\n * Counterpart to Solidity's `int64` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 64 bits\\n *\\n * _Available since v3.1._\\n */\\n function toInt64(int256 value) internal pure returns (int64 downcasted) {\\n downcasted = int64(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 64 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int56 from int256, reverting on\\n * overflow (when the input is less than smallest int56 or\\n * greater than largest int56).\\n *\\n * Counterpart to Solidity's `int56` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 56 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt56(int256 value) internal pure returns (int56 downcasted) {\\n downcasted = int56(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 56 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int48 from int256, reverting on\\n * overflow (when the input is less than smallest int48 or\\n * greater than largest int48).\\n *\\n * Counterpart to Solidity's `int48` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 48 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt48(int256 value) internal pure returns (int48 downcasted) {\\n downcasted = int48(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 48 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int40 from int256, reverting on\\n * overflow (when the input is less than smallest int40 or\\n * greater than largest int40).\\n *\\n * Counterpart to Solidity's `int40` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 40 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt40(int256 value) internal pure returns (int40 downcasted) {\\n downcasted = int40(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 40 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int32 from int256, reverting on\\n * overflow (when the input is less than smallest int32 or\\n * greater than largest int32).\\n *\\n * Counterpart to Solidity's `int32` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 32 bits\\n *\\n * _Available since v3.1._\\n */\\n function toInt32(int256 value) internal pure returns (int32 downcasted) {\\n downcasted = int32(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 32 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int24 from int256, reverting on\\n * overflow (when the input is less than smallest int24 or\\n * greater than largest int24).\\n *\\n * Counterpart to Solidity's `int24` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 24 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt24(int256 value) internal pure returns (int24 downcasted) {\\n downcasted = int24(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 24 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int16 from int256, reverting on\\n * overflow (when the input is less than smallest int16 or\\n * greater than largest int16).\\n *\\n * Counterpart to Solidity's `int16` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 16 bits\\n *\\n * _Available since v3.1._\\n */\\n function toInt16(int256 value) internal pure returns (int16 downcasted) {\\n downcasted = int16(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 16 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int8 from int256, reverting on\\n * overflow (when the input is less than smallest int8 or\\n * greater than largest int8).\\n *\\n * Counterpart to Solidity's `int8` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 8 bits\\n *\\n * _Available since v3.1._\\n */\\n function toInt8(int256 value) internal pure returns (int8 downcasted) {\\n downcasted = int8(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 8 bits\\\");\\n }\\n\\n /**\\n * @dev Converts an unsigned uint256 into a signed int256.\\n *\\n * Requirements:\\n *\\n * - input must be less than or equal to maxInt256.\\n *\\n * _Available since v3.0._\\n */\\n function toInt256(uint256 value) internal pure returns (int256) {\\n // Note: Unsafe cast below is okay because `type(int256).max` is guaranteed to be positive\\n require(value <= uint256(type(int256).max), \\\"SafeCast: value doesn't fit in an int256\\\");\\n return int256(value);\\n }\\n}\\n\",\"keccak256\":\"0xcef50f95b43b038aa40aed25b62fc45906c681a5c1d504a4fdcf3bc6330a8d4b\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol":{"ContextUpgradeable":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"}],"devdoc":{"details":"Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.","kind":"dev","methods":{},"stateVariables":{"__gap":{"details":"This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain. See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"}],\"devdoc\":{\"details\":\"Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.\",\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"__gap\":{\"details\":\"This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain. See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":\"ContextUpgradeable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n function __Context_init() internal onlyInitializing {\\n }\\n\\n function __Context_init_unchained() internal onlyInitializing {\\n }\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n function _contextSuffixLength() internal view virtual returns (uint256) {\\n return 0;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x75097e35253e7fb282ee4d7f27a80eaacfa759923185bf17302a89cbc059c5ef\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":372,"contract":"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":375,"contract":"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":2592,"contract":"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable","label":"__gap","offset":0,"slot":"1","type":"t_array(t_uint256)50_storage"}],"types":{"t_array(t_uint256)50_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[50]","numberOfBytes":"1600"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol":{"CountersUpgradeable":{"abi":[],"devdoc":{"author":"Matt Condon (@shrugs)","details":"Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number of elements in a mapping, issuing ERC721 ids, or counting request ids. Include with `using Counters for Counters.Counter;`","kind":"dev","methods":{},"title":"Counters","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"602d6037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a","opcodes":"PUSH1 0x2D PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"424:982:9:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;424:982:9;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"424:982:9:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"9000","executionCost":"94","totalCost":"9094"},"internal":{"current(struct CountersUpgradeable.Counter storage pointer)":"infinite","decrement(struct CountersUpgradeable.Counter storage pointer)":"infinite","increment(struct CountersUpgradeable.Counter storage pointer)":"infinite","reset(struct CountersUpgradeable.Counter storage pointer)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"author\":\"Matt Condon (@shrugs)\",\"details\":\"Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number of elements in a mapping, issuing ERC721 ids, or counting request ids. Include with `using Counters for Counters.Counter;`\",\"kind\":\"dev\",\"methods\":{},\"title\":\"Counters\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol\":\"CountersUpgradeable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Counters.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title Counters\\n * @author Matt Condon (@shrugs)\\n * @dev Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number\\n * of elements in a mapping, issuing ERC721 ids, or counting request ids.\\n *\\n * Include with `using Counters for Counters.Counter;`\\n */\\nlibrary CountersUpgradeable {\\n struct Counter {\\n // This variable should never be directly accessed by users of the library: interactions must be restricted to\\n // the library's function. As of Solidity v0.5.2, this cannot be enforced, though there is a proposal to add\\n // this feature: see https://github.com/ethereum/solidity/issues/4637\\n uint256 _value; // default: 0\\n }\\n\\n function current(Counter storage counter) internal view returns (uint256) {\\n return counter._value;\\n }\\n\\n function increment(Counter storage counter) internal {\\n unchecked {\\n counter._value += 1;\\n }\\n }\\n\\n function decrement(Counter storage counter) internal {\\n uint256 value = counter._value;\\n require(value > 0, \\\"Counter: decrement overflow\\\");\\n unchecked {\\n counter._value = value - 1;\\n }\\n }\\n\\n function reset(Counter storage counter) internal {\\n counter._value = 0;\\n }\\n}\\n\",\"keccak256\":\"0x798741e231b22b81e2dd2eddaaf8832dee4baf5cd8e2dbaa5c1dd12a1c053c4d\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol":{"StorageSlotUpgradeable":{"abi":[],"devdoc":{"details":"Library for reading and writing primitive types to specific storage slots. Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts. This library helps with reading and writing to such slots without the need for inline assembly. The functions in this library return Slot structs that contain a `value` member that can be used to read or write. Example usage to set ERC1967 implementation slot: ```solidity contract ERC1967 { bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc; function _getImplementation() internal view returns (address) { return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value; } function _setImplementation(address newImplementation) internal { require(Address.isContract(newImplementation), \"ERC1967: new implementation is not a contract\"); StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation; } } ``` _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._ _Available since v4.9 for `string`, `bytes`._","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"602d6037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a","opcodes":"PUSH1 0x2D PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"1420:2696:10:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;1420:2696:10;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"1420:2696:10:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"9000","executionCost":"94","totalCost":"9094"},"internal":{"getAddressSlot(bytes32)":"infinite","getBooleanSlot(bytes32)":"infinite","getBytes32Slot(bytes32)":"infinite","getBytesSlot(bytes storage pointer)":"infinite","getBytesSlot(bytes32)":"infinite","getStringSlot(bytes32)":"infinite","getStringSlot(string storage pointer)":"infinite","getUint256Slot(bytes32)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Library for reading and writing primitive types to specific storage slots. Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts. This library helps with reading and writing to such slots without the need for inline assembly. The functions in this library return Slot structs that contain a `value` member that can be used to read or write. Example usage to set ERC1967 implementation slot: ```solidity contract ERC1967 { bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc; function _getImplementation() internal view returns (address) { return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value; } function _setImplementation(address newImplementation) internal { require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\"); StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation; } } ``` _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._ _Available since v4.9 for `string`, `bytes`._\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol\":\"StorageSlotUpgradeable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/StorageSlot.sol)\\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```solidity\\n * contract ERC1967 {\\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n * function _getImplementation() internal view returns (address) {\\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n * }\\n *\\n * function _setImplementation(address newImplementation) internal {\\n * require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n * }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._\\n * _Available since v4.9 for `string`, `bytes`._\\n */\\nlibrary StorageSlotUpgradeable {\\n struct AddressSlot {\\n address value;\\n }\\n\\n struct BooleanSlot {\\n bool value;\\n }\\n\\n struct Bytes32Slot {\\n bytes32 value;\\n }\\n\\n struct Uint256Slot {\\n uint256 value;\\n }\\n\\n struct StringSlot {\\n string value;\\n }\\n\\n struct BytesSlot {\\n bytes value;\\n }\\n\\n /**\\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n */\\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n */\\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n */\\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n */\\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` with member `value` located at `slot`.\\n */\\n function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\\n */\\n function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` with member `value` located at `slot`.\\n */\\n function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\\n */\\n function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n}\\n\",\"keccak256\":\"0x07ac95acad040f1fb1f6120dd0aa5f702db69446e95f82613721879d30de0908\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol":{"ERC165Upgradeable":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"Implementation of the {IERC165} interface. Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check for the additional interface id that will be supported. For example: ```solidity function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); } ``` Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.","kind":"dev","methods":{"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."}},"stateVariables":{"__gap":{"details":"This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain. See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of the {IERC165} interface. Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check for the additional interface id that will be supported. For example: ```solidity function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); } ``` Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\",\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"}},\"stateVariables\":{\"__gap\":{\"details\":\"This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain. See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":\"ERC165Upgradeable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165Upgradeable.sol\\\";\\nimport {Initializable} from \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165Upgradeable is Initializable, IERC165Upgradeable {\\n function __ERC165_init() internal onlyInitializing {\\n }\\n\\n function __ERC165_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165Upgradeable).interfaceId;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0xd90d7723512df65ae417adaf0801042940f0dabd60039ceeaffe34aa5b238da1\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165Upgradeable {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":372,"contract":"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":375,"contract":"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":2821,"contract":"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable","label":"__gap","offset":0,"slot":"1","type":"t_array(t_uint256)50_storage"}],"types":{"t_array(t_uint256)50_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[50]","numberOfBytes":"1600"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol":{"IERC165Upgradeable":{"abi":[{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"Interface of the ERC165 standard, as defined in the https://eips.ethereum.org/EIPS/eip-165[EIP]. Implementers can declare support of contract interfaces, which can then be queried by others ({ERC165Checker}). For an implementation, see {ERC165}.","kind":"dev","methods":{"supportsInterface(bytes4)":{"details":"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC165 standard, as defined in the https://eips.ethereum.org/EIPS/eip-165[EIP]. Implementers can declare support of contract interfaces, which can then be queried by others ({ERC165Checker}). For an implementation, see {ERC165}.\",\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":\"IERC165Upgradeable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165Upgradeable {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/utils/math/MathUpgradeable.sol":{"MathUpgradeable":{"abi":[],"devdoc":{"details":"Standard math utilities missing in the Solidity language.","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"602d6037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a","opcodes":"PUSH1 0x2D PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"202:12593:13:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;202:12593:13;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"202:12593:13:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"9000","executionCost":"94","totalCost":"9094"},"internal":{"average(uint256,uint256)":"infinite","ceilDiv(uint256,uint256)":"infinite","log10(uint256)":"infinite","log10(uint256,enum MathUpgradeable.Rounding)":"infinite","log2(uint256)":"infinite","log2(uint256,enum MathUpgradeable.Rounding)":"infinite","log256(uint256)":"infinite","log256(uint256,enum MathUpgradeable.Rounding)":"infinite","max(uint256,uint256)":"infinite","min(uint256,uint256)":"infinite","mulDiv(uint256,uint256,uint256)":"infinite","mulDiv(uint256,uint256,uint256,enum MathUpgradeable.Rounding)":"infinite","sqrt(uint256)":"infinite","sqrt(uint256,enum MathUpgradeable.Rounding)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Standard math utilities missing in the Solidity language.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/utils/math/MathUpgradeable.sol\":\"MathUpgradeable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/utils/math/MathUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/math/Math.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard math utilities missing in the Solidity language.\\n */\\nlibrary MathUpgradeable {\\n enum Rounding {\\n Down, // Toward negative infinity\\n Up, // Toward infinity\\n Zero // Toward zero\\n }\\n\\n /**\\n * @dev Returns the largest of two numbers.\\n */\\n function max(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two numbers.\\n */\\n function min(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two numbers. The result is rounded towards\\n * zero.\\n */\\n function average(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b) / 2 can overflow.\\n return (a & b) + (a ^ b) / 2;\\n }\\n\\n /**\\n * @dev Returns the ceiling of the division of two numbers.\\n *\\n * This differs from standard division with `/` in that it rounds up instead\\n * of rounding down.\\n */\\n function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b - 1) / b can overflow on addition, so we distribute.\\n return a == 0 ? 0 : (a - 1) / b + 1;\\n }\\n\\n /**\\n * @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\\n * @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)\\n * with further edits by Uniswap Labs also under MIT license.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator) internal pure returns (uint256 result) {\\n unchecked {\\n // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use\\n // use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\\n // variables such that product = prod1 * 2^256 + prod0.\\n uint256 prod0; // Least significant 256 bits of the product\\n uint256 prod1; // Most significant 256 bits of the product\\n assembly {\\n let mm := mulmod(x, y, not(0))\\n prod0 := mul(x, y)\\n prod1 := sub(sub(mm, prod0), lt(mm, prod0))\\n }\\n\\n // Handle non-overflow cases, 256 by 256 division.\\n if (prod1 == 0) {\\n // Solidity will revert if denominator == 0, unlike the div opcode on its own.\\n // The surrounding unchecked block does not change this fact.\\n // See https://docs.soliditylang.org/en/latest/control-structures.html#checked-or-unchecked-arithmetic.\\n return prod0 / denominator;\\n }\\n\\n // Make sure the result is less than 2^256. Also prevents denominator == 0.\\n require(denominator > prod1, \\\"Math: mulDiv overflow\\\");\\n\\n ///////////////////////////////////////////////\\n // 512 by 256 division.\\n ///////////////////////////////////////////////\\n\\n // Make division exact by subtracting the remainder from [prod1 prod0].\\n uint256 remainder;\\n assembly {\\n // Compute remainder using mulmod.\\n remainder := mulmod(x, y, denominator)\\n\\n // Subtract 256 bit number from 512 bit number.\\n prod1 := sub(prod1, gt(remainder, prod0))\\n prod0 := sub(prod0, remainder)\\n }\\n\\n // Factor powers of two out of denominator and compute largest power of two divisor of denominator. Always >= 1.\\n // See https://cs.stackexchange.com/q/138556/92363.\\n\\n // Does not overflow because the denominator cannot be zero at this stage in the function.\\n uint256 twos = denominator & (~denominator + 1);\\n assembly {\\n // Divide denominator by twos.\\n denominator := div(denominator, twos)\\n\\n // Divide [prod1 prod0] by twos.\\n prod0 := div(prod0, twos)\\n\\n // Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one.\\n twos := add(div(sub(0, twos), twos), 1)\\n }\\n\\n // Shift in bits from prod1 into prod0.\\n prod0 |= prod1 * twos;\\n\\n // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such\\n // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for\\n // four bits. That is, denominator * inv = 1 mod 2^4.\\n uint256 inverse = (3 * denominator) ^ 2;\\n\\n // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also works\\n // in modular arithmetic, doubling the correct bits in each step.\\n inverse *= 2 - denominator * inverse; // inverse mod 2^8\\n inverse *= 2 - denominator * inverse; // inverse mod 2^16\\n inverse *= 2 - denominator * inverse; // inverse mod 2^32\\n inverse *= 2 - denominator * inverse; // inverse mod 2^64\\n inverse *= 2 - denominator * inverse; // inverse mod 2^128\\n inverse *= 2 - denominator * inverse; // inverse mod 2^256\\n\\n // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\\n // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is\\n // less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1\\n // is no longer required.\\n result = prod0 * inverse;\\n return result;\\n }\\n }\\n\\n /**\\n * @notice Calculates x * y / denominator with full precision, following the selected rounding direction.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator, Rounding rounding) internal pure returns (uint256) {\\n uint256 result = mulDiv(x, y, denominator);\\n if (rounding == Rounding.Up && mulmod(x, y, denominator) > 0) {\\n result += 1;\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down.\\n *\\n * Inspired by Henry S. Warren, Jr.'s \\\"Hacker's Delight\\\" (Chapter 11).\\n */\\n function sqrt(uint256 a) internal pure returns (uint256) {\\n if (a == 0) {\\n return 0;\\n }\\n\\n // For our first guess, we get the biggest power of 2 which is smaller than the square root of the target.\\n //\\n // We know that the \\\"msb\\\" (most significant bit) of our target number `a` is a power of 2 such that we have\\n // `msb(a) <= a < 2*msb(a)`. This value can be written `msb(a)=2**k` with `k=log2(a)`.\\n //\\n // This can be rewritten `2**log2(a) <= a < 2**(log2(a) + 1)`\\n // \\u2192 `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))`\\n // \\u2192 `2**(k/2) <= sqrt(a) < 2**((k+1)/2) <= 2**(k/2 + 1)`\\n //\\n // Consequently, `2**(log2(a) / 2)` is a good first approximation of `sqrt(a)` with at least 1 correct bit.\\n uint256 result = 1 << (log2(a) >> 1);\\n\\n // At this point `result` is an estimation with one bit of precision. We know the true value is a uint128,\\n // since it is the square root of a uint256. Newton's method converges quadratically (precision doubles at\\n // every iteration). We thus need at most 7 iteration to turn our partial result with one bit of precision\\n // into the expected uint128 result.\\n unchecked {\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n return min(result, a / result);\\n }\\n }\\n\\n /**\\n * @notice Calculates sqrt(a), following the selected rounding direction.\\n */\\n function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = sqrt(a);\\n return result + (rounding == Rounding.Up && result * result < a ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 2, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 128;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 64;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 32;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 16;\\n }\\n if (value >> 8 > 0) {\\n value >>= 8;\\n result += 8;\\n }\\n if (value >> 4 > 0) {\\n value >>= 4;\\n result += 4;\\n }\\n if (value >> 2 > 0) {\\n value >>= 2;\\n result += 2;\\n }\\n if (value >> 1 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 2, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log2(value);\\n return result + (rounding == Rounding.Up && 1 << result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 10, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >= 10 ** 64) {\\n value /= 10 ** 64;\\n result += 64;\\n }\\n if (value >= 10 ** 32) {\\n value /= 10 ** 32;\\n result += 32;\\n }\\n if (value >= 10 ** 16) {\\n value /= 10 ** 16;\\n result += 16;\\n }\\n if (value >= 10 ** 8) {\\n value /= 10 ** 8;\\n result += 8;\\n }\\n if (value >= 10 ** 4) {\\n value /= 10 ** 4;\\n result += 4;\\n }\\n if (value >= 10 ** 2) {\\n value /= 10 ** 2;\\n result += 2;\\n }\\n if (value >= 10 ** 1) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log10(value);\\n return result + (rounding == Rounding.Up && 10 ** result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 256, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n *\\n * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.\\n */\\n function log256(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 16;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 8;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 4;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 2;\\n }\\n if (value >> 8 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 256, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log256(value);\\n return result + (rounding == Rounding.Up && 1 << (result << 3) < value ? 1 : 0);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x2bc0007987c229ae7624eb29be6a9b84f6a6a5872f76248b15208b131ea41c4e\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol":{"SafeCastUpgradeable":{"abi":[],"devdoc":{"details":"Wrappers over Solidity's uintXX/intXX casting operators with added overflow checks. Downcasting from uint256/int256 in Solidity does not revert on overflow. This can easily result in undesired exploitation or bugs, since developers usually assume that overflows raise errors. `SafeCast` restores this intuition by reverting the transaction when such an operation overflows. Using this library instead of the unchecked operations eliminates an entire class of bugs, so it's recommended to use it always. Can be combined with {SafeMath} and {SignedSafeMath} to extend it to smaller types, by performing all math on `uint256` and `int256` and then downcasting.","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"602d6037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a","opcodes":"PUSH1 0x2D PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"927:34164:14:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;927:34164:14;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"927:34164:14:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"9000","executionCost":"94","totalCost":"9094"},"internal":{"toInt104(int256)":"infinite","toInt112(int256)":"infinite","toInt120(int256)":"infinite","toInt128(int256)":"infinite","toInt136(int256)":"infinite","toInt144(int256)":"infinite","toInt152(int256)":"infinite","toInt16(int256)":"infinite","toInt160(int256)":"infinite","toInt168(int256)":"infinite","toInt176(int256)":"infinite","toInt184(int256)":"infinite","toInt192(int256)":"infinite","toInt200(int256)":"infinite","toInt208(int256)":"infinite","toInt216(int256)":"infinite","toInt224(int256)":"infinite","toInt232(int256)":"infinite","toInt24(int256)":"infinite","toInt240(int256)":"infinite","toInt248(int256)":"infinite","toInt256(uint256)":"infinite","toInt32(int256)":"infinite","toInt40(int256)":"infinite","toInt48(int256)":"infinite","toInt56(int256)":"infinite","toInt64(int256)":"infinite","toInt72(int256)":"infinite","toInt8(int256)":"infinite","toInt80(int256)":"infinite","toInt88(int256)":"infinite","toInt96(int256)":"infinite","toUint104(uint256)":"infinite","toUint112(uint256)":"infinite","toUint120(uint256)":"infinite","toUint128(uint256)":"infinite","toUint136(uint256)":"infinite","toUint144(uint256)":"infinite","toUint152(uint256)":"infinite","toUint16(uint256)":"infinite","toUint160(uint256)":"infinite","toUint168(uint256)":"infinite","toUint176(uint256)":"infinite","toUint184(uint256)":"infinite","toUint192(uint256)":"infinite","toUint200(uint256)":"infinite","toUint208(uint256)":"infinite","toUint216(uint256)":"infinite","toUint224(uint256)":"infinite","toUint232(uint256)":"infinite","toUint24(uint256)":"infinite","toUint240(uint256)":"infinite","toUint248(uint256)":"infinite","toUint256(int256)":"infinite","toUint32(uint256)":"infinite","toUint40(uint256)":"infinite","toUint48(uint256)":"infinite","toUint56(uint256)":"infinite","toUint64(uint256)":"infinite","toUint72(uint256)":"infinite","toUint8(uint256)":"infinite","toUint80(uint256)":"infinite","toUint88(uint256)":"infinite","toUint96(uint256)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Wrappers over Solidity's uintXX/intXX casting operators with added overflow checks. Downcasting from uint256/int256 in Solidity does not revert on overflow. This can easily result in undesired exploitation or bugs, since developers usually assume that overflows raise errors. `SafeCast` restores this intuition by reverting the transaction when such an operation overflows. Using this library instead of the unchecked operations eliminates an entire class of bugs, so it's recommended to use it always. Can be combined with {SafeMath} and {SignedSafeMath} to extend it to smaller types, by performing all math on `uint256` and `int256` and then downcasting.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol\":\"SafeCastUpgradeable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/SafeCast.sol)\\n// This file was procedurally generated from scripts/generate/templates/SafeCast.js.\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Wrappers over Solidity's uintXX/intXX casting operators with added overflow\\n * checks.\\n *\\n * Downcasting from uint256/int256 in Solidity does not revert on overflow. This can\\n * easily result in undesired exploitation or bugs, since developers usually\\n * assume that overflows raise errors. `SafeCast` restores this intuition by\\n * reverting the transaction when such an operation overflows.\\n *\\n * Using this library instead of the unchecked operations eliminates an entire\\n * class of bugs, so it's recommended to use it always.\\n *\\n * Can be combined with {SafeMath} and {SignedSafeMath} to extend it to smaller types, by performing\\n * all math on `uint256` and `int256` and then downcasting.\\n */\\nlibrary SafeCastUpgradeable {\\n /**\\n * @dev Returns the downcasted uint248 from uint256, reverting on\\n * overflow (when the input is greater than largest uint248).\\n *\\n * Counterpart to Solidity's `uint248` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 248 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint248(uint256 value) internal pure returns (uint248) {\\n require(value <= type(uint248).max, \\\"SafeCast: value doesn't fit in 248 bits\\\");\\n return uint248(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint240 from uint256, reverting on\\n * overflow (when the input is greater than largest uint240).\\n *\\n * Counterpart to Solidity's `uint240` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 240 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint240(uint256 value) internal pure returns (uint240) {\\n require(value <= type(uint240).max, \\\"SafeCast: value doesn't fit in 240 bits\\\");\\n return uint240(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint232 from uint256, reverting on\\n * overflow (when the input is greater than largest uint232).\\n *\\n * Counterpart to Solidity's `uint232` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 232 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint232(uint256 value) internal pure returns (uint232) {\\n require(value <= type(uint232).max, \\\"SafeCast: value doesn't fit in 232 bits\\\");\\n return uint232(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint224 from uint256, reverting on\\n * overflow (when the input is greater than largest uint224).\\n *\\n * Counterpart to Solidity's `uint224` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 224 bits\\n *\\n * _Available since v4.2._\\n */\\n function toUint224(uint256 value) internal pure returns (uint224) {\\n require(value <= type(uint224).max, \\\"SafeCast: value doesn't fit in 224 bits\\\");\\n return uint224(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint216 from uint256, reverting on\\n * overflow (when the input is greater than largest uint216).\\n *\\n * Counterpart to Solidity's `uint216` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 216 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint216(uint256 value) internal pure returns (uint216) {\\n require(value <= type(uint216).max, \\\"SafeCast: value doesn't fit in 216 bits\\\");\\n return uint216(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint208 from uint256, reverting on\\n * overflow (when the input is greater than largest uint208).\\n *\\n * Counterpart to Solidity's `uint208` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 208 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint208(uint256 value) internal pure returns (uint208) {\\n require(value <= type(uint208).max, \\\"SafeCast: value doesn't fit in 208 bits\\\");\\n return uint208(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint200 from uint256, reverting on\\n * overflow (when the input is greater than largest uint200).\\n *\\n * Counterpart to Solidity's `uint200` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 200 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint200(uint256 value) internal pure returns (uint200) {\\n require(value <= type(uint200).max, \\\"SafeCast: value doesn't fit in 200 bits\\\");\\n return uint200(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint192 from uint256, reverting on\\n * overflow (when the input is greater than largest uint192).\\n *\\n * Counterpart to Solidity's `uint192` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 192 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint192(uint256 value) internal pure returns (uint192) {\\n require(value <= type(uint192).max, \\\"SafeCast: value doesn't fit in 192 bits\\\");\\n return uint192(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint184 from uint256, reverting on\\n * overflow (when the input is greater than largest uint184).\\n *\\n * Counterpart to Solidity's `uint184` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 184 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint184(uint256 value) internal pure returns (uint184) {\\n require(value <= type(uint184).max, \\\"SafeCast: value doesn't fit in 184 bits\\\");\\n return uint184(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint176 from uint256, reverting on\\n * overflow (when the input is greater than largest uint176).\\n *\\n * Counterpart to Solidity's `uint176` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 176 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint176(uint256 value) internal pure returns (uint176) {\\n require(value <= type(uint176).max, \\\"SafeCast: value doesn't fit in 176 bits\\\");\\n return uint176(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint168 from uint256, reverting on\\n * overflow (when the input is greater than largest uint168).\\n *\\n * Counterpart to Solidity's `uint168` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 168 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint168(uint256 value) internal pure returns (uint168) {\\n require(value <= type(uint168).max, \\\"SafeCast: value doesn't fit in 168 bits\\\");\\n return uint168(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint160 from uint256, reverting on\\n * overflow (when the input is greater than largest uint160).\\n *\\n * Counterpart to Solidity's `uint160` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 160 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint160(uint256 value) internal pure returns (uint160) {\\n require(value <= type(uint160).max, \\\"SafeCast: value doesn't fit in 160 bits\\\");\\n return uint160(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint152 from uint256, reverting on\\n * overflow (when the input is greater than largest uint152).\\n *\\n * Counterpart to Solidity's `uint152` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 152 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint152(uint256 value) internal pure returns (uint152) {\\n require(value <= type(uint152).max, \\\"SafeCast: value doesn't fit in 152 bits\\\");\\n return uint152(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint144 from uint256, reverting on\\n * overflow (when the input is greater than largest uint144).\\n *\\n * Counterpart to Solidity's `uint144` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 144 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint144(uint256 value) internal pure returns (uint144) {\\n require(value <= type(uint144).max, \\\"SafeCast: value doesn't fit in 144 bits\\\");\\n return uint144(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint136 from uint256, reverting on\\n * overflow (when the input is greater than largest uint136).\\n *\\n * Counterpart to Solidity's `uint136` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 136 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint136(uint256 value) internal pure returns (uint136) {\\n require(value <= type(uint136).max, \\\"SafeCast: value doesn't fit in 136 bits\\\");\\n return uint136(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint128 from uint256, reverting on\\n * overflow (when the input is greater than largest uint128).\\n *\\n * Counterpart to Solidity's `uint128` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 128 bits\\n *\\n * _Available since v2.5._\\n */\\n function toUint128(uint256 value) internal pure returns (uint128) {\\n require(value <= type(uint128).max, \\\"SafeCast: value doesn't fit in 128 bits\\\");\\n return uint128(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint120 from uint256, reverting on\\n * overflow (when the input is greater than largest uint120).\\n *\\n * Counterpart to Solidity's `uint120` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 120 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint120(uint256 value) internal pure returns (uint120) {\\n require(value <= type(uint120).max, \\\"SafeCast: value doesn't fit in 120 bits\\\");\\n return uint120(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint112 from uint256, reverting on\\n * overflow (when the input is greater than largest uint112).\\n *\\n * Counterpart to Solidity's `uint112` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 112 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint112(uint256 value) internal pure returns (uint112) {\\n require(value <= type(uint112).max, \\\"SafeCast: value doesn't fit in 112 bits\\\");\\n return uint112(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint104 from uint256, reverting on\\n * overflow (when the input is greater than largest uint104).\\n *\\n * Counterpart to Solidity's `uint104` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 104 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint104(uint256 value) internal pure returns (uint104) {\\n require(value <= type(uint104).max, \\\"SafeCast: value doesn't fit in 104 bits\\\");\\n return uint104(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint96 from uint256, reverting on\\n * overflow (when the input is greater than largest uint96).\\n *\\n * Counterpart to Solidity's `uint96` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 96 bits\\n *\\n * _Available since v4.2._\\n */\\n function toUint96(uint256 value) internal pure returns (uint96) {\\n require(value <= type(uint96).max, \\\"SafeCast: value doesn't fit in 96 bits\\\");\\n return uint96(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint88 from uint256, reverting on\\n * overflow (when the input is greater than largest uint88).\\n *\\n * Counterpart to Solidity's `uint88` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 88 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint88(uint256 value) internal pure returns (uint88) {\\n require(value <= type(uint88).max, \\\"SafeCast: value doesn't fit in 88 bits\\\");\\n return uint88(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint80 from uint256, reverting on\\n * overflow (when the input is greater than largest uint80).\\n *\\n * Counterpart to Solidity's `uint80` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 80 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint80(uint256 value) internal pure returns (uint80) {\\n require(value <= type(uint80).max, \\\"SafeCast: value doesn't fit in 80 bits\\\");\\n return uint80(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint72 from uint256, reverting on\\n * overflow (when the input is greater than largest uint72).\\n *\\n * Counterpart to Solidity's `uint72` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 72 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint72(uint256 value) internal pure returns (uint72) {\\n require(value <= type(uint72).max, \\\"SafeCast: value doesn't fit in 72 bits\\\");\\n return uint72(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint64 from uint256, reverting on\\n * overflow (when the input is greater than largest uint64).\\n *\\n * Counterpart to Solidity's `uint64` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 64 bits\\n *\\n * _Available since v2.5._\\n */\\n function toUint64(uint256 value) internal pure returns (uint64) {\\n require(value <= type(uint64).max, \\\"SafeCast: value doesn't fit in 64 bits\\\");\\n return uint64(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint56 from uint256, reverting on\\n * overflow (when the input is greater than largest uint56).\\n *\\n * Counterpart to Solidity's `uint56` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 56 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint56(uint256 value) internal pure returns (uint56) {\\n require(value <= type(uint56).max, \\\"SafeCast: value doesn't fit in 56 bits\\\");\\n return uint56(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint48 from uint256, reverting on\\n * overflow (when the input is greater than largest uint48).\\n *\\n * Counterpart to Solidity's `uint48` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 48 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint48(uint256 value) internal pure returns (uint48) {\\n require(value <= type(uint48).max, \\\"SafeCast: value doesn't fit in 48 bits\\\");\\n return uint48(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint40 from uint256, reverting on\\n * overflow (when the input is greater than largest uint40).\\n *\\n * Counterpart to Solidity's `uint40` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 40 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint40(uint256 value) internal pure returns (uint40) {\\n require(value <= type(uint40).max, \\\"SafeCast: value doesn't fit in 40 bits\\\");\\n return uint40(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint32 from uint256, reverting on\\n * overflow (when the input is greater than largest uint32).\\n *\\n * Counterpart to Solidity's `uint32` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 32 bits\\n *\\n * _Available since v2.5._\\n */\\n function toUint32(uint256 value) internal pure returns (uint32) {\\n require(value <= type(uint32).max, \\\"SafeCast: value doesn't fit in 32 bits\\\");\\n return uint32(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint24 from uint256, reverting on\\n * overflow (when the input is greater than largest uint24).\\n *\\n * Counterpart to Solidity's `uint24` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 24 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint24(uint256 value) internal pure returns (uint24) {\\n require(value <= type(uint24).max, \\\"SafeCast: value doesn't fit in 24 bits\\\");\\n return uint24(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint16 from uint256, reverting on\\n * overflow (when the input is greater than largest uint16).\\n *\\n * Counterpart to Solidity's `uint16` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 16 bits\\n *\\n * _Available since v2.5._\\n */\\n function toUint16(uint256 value) internal pure returns (uint16) {\\n require(value <= type(uint16).max, \\\"SafeCast: value doesn't fit in 16 bits\\\");\\n return uint16(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint8 from uint256, reverting on\\n * overflow (when the input is greater than largest uint8).\\n *\\n * Counterpart to Solidity's `uint8` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 8 bits\\n *\\n * _Available since v2.5._\\n */\\n function toUint8(uint256 value) internal pure returns (uint8) {\\n require(value <= type(uint8).max, \\\"SafeCast: value doesn't fit in 8 bits\\\");\\n return uint8(value);\\n }\\n\\n /**\\n * @dev Converts a signed int256 into an unsigned uint256.\\n *\\n * Requirements:\\n *\\n * - input must be greater than or equal to 0.\\n *\\n * _Available since v3.0._\\n */\\n function toUint256(int256 value) internal pure returns (uint256) {\\n require(value >= 0, \\\"SafeCast: value must be positive\\\");\\n return uint256(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted int248 from int256, reverting on\\n * overflow (when the input is less than smallest int248 or\\n * greater than largest int248).\\n *\\n * Counterpart to Solidity's `int248` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 248 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt248(int256 value) internal pure returns (int248 downcasted) {\\n downcasted = int248(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 248 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int240 from int256, reverting on\\n * overflow (when the input is less than smallest int240 or\\n * greater than largest int240).\\n *\\n * Counterpart to Solidity's `int240` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 240 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt240(int256 value) internal pure returns (int240 downcasted) {\\n downcasted = int240(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 240 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int232 from int256, reverting on\\n * overflow (when the input is less than smallest int232 or\\n * greater than largest int232).\\n *\\n * Counterpart to Solidity's `int232` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 232 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt232(int256 value) internal pure returns (int232 downcasted) {\\n downcasted = int232(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 232 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int224 from int256, reverting on\\n * overflow (when the input is less than smallest int224 or\\n * greater than largest int224).\\n *\\n * Counterpart to Solidity's `int224` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 224 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt224(int256 value) internal pure returns (int224 downcasted) {\\n downcasted = int224(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 224 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int216 from int256, reverting on\\n * overflow (when the input is less than smallest int216 or\\n * greater than largest int216).\\n *\\n * Counterpart to Solidity's `int216` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 216 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt216(int256 value) internal pure returns (int216 downcasted) {\\n downcasted = int216(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 216 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int208 from int256, reverting on\\n * overflow (when the input is less than smallest int208 or\\n * greater than largest int208).\\n *\\n * Counterpart to Solidity's `int208` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 208 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt208(int256 value) internal pure returns (int208 downcasted) {\\n downcasted = int208(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 208 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int200 from int256, reverting on\\n * overflow (when the input is less than smallest int200 or\\n * greater than largest int200).\\n *\\n * Counterpart to Solidity's `int200` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 200 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt200(int256 value) internal pure returns (int200 downcasted) {\\n downcasted = int200(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 200 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int192 from int256, reverting on\\n * overflow (when the input is less than smallest int192 or\\n * greater than largest int192).\\n *\\n * Counterpart to Solidity's `int192` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 192 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt192(int256 value) internal pure returns (int192 downcasted) {\\n downcasted = int192(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 192 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int184 from int256, reverting on\\n * overflow (when the input is less than smallest int184 or\\n * greater than largest int184).\\n *\\n * Counterpart to Solidity's `int184` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 184 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt184(int256 value) internal pure returns (int184 downcasted) {\\n downcasted = int184(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 184 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int176 from int256, reverting on\\n * overflow (when the input is less than smallest int176 or\\n * greater than largest int176).\\n *\\n * Counterpart to Solidity's `int176` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 176 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt176(int256 value) internal pure returns (int176 downcasted) {\\n downcasted = int176(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 176 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int168 from int256, reverting on\\n * overflow (when the input is less than smallest int168 or\\n * greater than largest int168).\\n *\\n * Counterpart to Solidity's `int168` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 168 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt168(int256 value) internal pure returns (int168 downcasted) {\\n downcasted = int168(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 168 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int160 from int256, reverting on\\n * overflow (when the input is less than smallest int160 or\\n * greater than largest int160).\\n *\\n * Counterpart to Solidity's `int160` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 160 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt160(int256 value) internal pure returns (int160 downcasted) {\\n downcasted = int160(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 160 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int152 from int256, reverting on\\n * overflow (when the input is less than smallest int152 or\\n * greater than largest int152).\\n *\\n * Counterpart to Solidity's `int152` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 152 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt152(int256 value) internal pure returns (int152 downcasted) {\\n downcasted = int152(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 152 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int144 from int256, reverting on\\n * overflow (when the input is less than smallest int144 or\\n * greater than largest int144).\\n *\\n * Counterpart to Solidity's `int144` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 144 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt144(int256 value) internal pure returns (int144 downcasted) {\\n downcasted = int144(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 144 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int136 from int256, reverting on\\n * overflow (when the input is less than smallest int136 or\\n * greater than largest int136).\\n *\\n * Counterpart to Solidity's `int136` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 136 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt136(int256 value) internal pure returns (int136 downcasted) {\\n downcasted = int136(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 136 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int128 from int256, reverting on\\n * overflow (when the input is less than smallest int128 or\\n * greater than largest int128).\\n *\\n * Counterpart to Solidity's `int128` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 128 bits\\n *\\n * _Available since v3.1._\\n */\\n function toInt128(int256 value) internal pure returns (int128 downcasted) {\\n downcasted = int128(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 128 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int120 from int256, reverting on\\n * overflow (when the input is less than smallest int120 or\\n * greater than largest int120).\\n *\\n * Counterpart to Solidity's `int120` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 120 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt120(int256 value) internal pure returns (int120 downcasted) {\\n downcasted = int120(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 120 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int112 from int256, reverting on\\n * overflow (when the input is less than smallest int112 or\\n * greater than largest int112).\\n *\\n * Counterpart to Solidity's `int112` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 112 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt112(int256 value) internal pure returns (int112 downcasted) {\\n downcasted = int112(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 112 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int104 from int256, reverting on\\n * overflow (when the input is less than smallest int104 or\\n * greater than largest int104).\\n *\\n * Counterpart to Solidity's `int104` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 104 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt104(int256 value) internal pure returns (int104 downcasted) {\\n downcasted = int104(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 104 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int96 from int256, reverting on\\n * overflow (when the input is less than smallest int96 or\\n * greater than largest int96).\\n *\\n * Counterpart to Solidity's `int96` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 96 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt96(int256 value) internal pure returns (int96 downcasted) {\\n downcasted = int96(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 96 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int88 from int256, reverting on\\n * overflow (when the input is less than smallest int88 or\\n * greater than largest int88).\\n *\\n * Counterpart to Solidity's `int88` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 88 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt88(int256 value) internal pure returns (int88 downcasted) {\\n downcasted = int88(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 88 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int80 from int256, reverting on\\n * overflow (when the input is less than smallest int80 or\\n * greater than largest int80).\\n *\\n * Counterpart to Solidity's `int80` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 80 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt80(int256 value) internal pure returns (int80 downcasted) {\\n downcasted = int80(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 80 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int72 from int256, reverting on\\n * overflow (when the input is less than smallest int72 or\\n * greater than largest int72).\\n *\\n * Counterpart to Solidity's `int72` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 72 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt72(int256 value) internal pure returns (int72 downcasted) {\\n downcasted = int72(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 72 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int64 from int256, reverting on\\n * overflow (when the input is less than smallest int64 or\\n * greater than largest int64).\\n *\\n * Counterpart to Solidity's `int64` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 64 bits\\n *\\n * _Available since v3.1._\\n */\\n function toInt64(int256 value) internal pure returns (int64 downcasted) {\\n downcasted = int64(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 64 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int56 from int256, reverting on\\n * overflow (when the input is less than smallest int56 or\\n * greater than largest int56).\\n *\\n * Counterpart to Solidity's `int56` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 56 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt56(int256 value) internal pure returns (int56 downcasted) {\\n downcasted = int56(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 56 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int48 from int256, reverting on\\n * overflow (when the input is less than smallest int48 or\\n * greater than largest int48).\\n *\\n * Counterpart to Solidity's `int48` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 48 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt48(int256 value) internal pure returns (int48 downcasted) {\\n downcasted = int48(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 48 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int40 from int256, reverting on\\n * overflow (when the input is less than smallest int40 or\\n * greater than largest int40).\\n *\\n * Counterpart to Solidity's `int40` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 40 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt40(int256 value) internal pure returns (int40 downcasted) {\\n downcasted = int40(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 40 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int32 from int256, reverting on\\n * overflow (when the input is less than smallest int32 or\\n * greater than largest int32).\\n *\\n * Counterpart to Solidity's `int32` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 32 bits\\n *\\n * _Available since v3.1._\\n */\\n function toInt32(int256 value) internal pure returns (int32 downcasted) {\\n downcasted = int32(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 32 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int24 from int256, reverting on\\n * overflow (when the input is less than smallest int24 or\\n * greater than largest int24).\\n *\\n * Counterpart to Solidity's `int24` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 24 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt24(int256 value) internal pure returns (int24 downcasted) {\\n downcasted = int24(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 24 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int16 from int256, reverting on\\n * overflow (when the input is less than smallest int16 or\\n * greater than largest int16).\\n *\\n * Counterpart to Solidity's `int16` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 16 bits\\n *\\n * _Available since v3.1._\\n */\\n function toInt16(int256 value) internal pure returns (int16 downcasted) {\\n downcasted = int16(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 16 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int8 from int256, reverting on\\n * overflow (when the input is less than smallest int8 or\\n * greater than largest int8).\\n *\\n * Counterpart to Solidity's `int8` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 8 bits\\n *\\n * _Available since v3.1._\\n */\\n function toInt8(int256 value) internal pure returns (int8 downcasted) {\\n downcasted = int8(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 8 bits\\\");\\n }\\n\\n /**\\n * @dev Converts an unsigned uint256 into a signed int256.\\n *\\n * Requirements:\\n *\\n * - input must be less than or equal to maxInt256.\\n *\\n * _Available since v3.0._\\n */\\n function toInt256(uint256 value) internal pure returns (int256) {\\n // Note: Unsafe cast below is okay because `type(int256).max` is guaranteed to be positive\\n require(value <= uint256(type(int256).max), \\\"SafeCast: value doesn't fit in an int256\\\");\\n return int256(value);\\n }\\n}\\n\",\"keccak256\":\"0xcef50f95b43b038aa40aed25b62fc45906c681a5c1d504a4fdcf3bc6330a8d4b\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/interfaces/IERC1967.sol":{"IERC1967":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"beacon","type":"address"}],"name":"BeaconUpgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"}],"devdoc":{"details":"ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC. _Available since v4.8.3._","events":{"AdminChanged(address,address)":{"details":"Emitted when the admin account has changed."},"BeaconUpgraded(address)":{"details":"Emitted when the beacon is changed."},"Upgraded(address)":{"details":"Emitted when the implementation is upgraded."}},"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"}],\"devdoc\":{\"details\":\"ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC. _Available since v4.8.3._\",\"events\":{\"AdminChanged(address,address)\":{\"details\":\"Emitted when the admin account has changed.\"},\"BeaconUpgraded(address)\":{\"details\":\"Emitted when the beacon is changed.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/interfaces/IERC1967.sol\":\"IERC1967\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/IERC1967.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (interfaces/IERC1967.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\\n *\\n * _Available since v4.8.3._\\n */\\ninterface IERC1967 {\\n /**\\n * @dev Emitted when the implementation is upgraded.\\n */\\n event Upgraded(address indexed implementation);\\n\\n /**\\n * @dev Emitted when the admin account has changed.\\n */\\n event AdminChanged(address previousAdmin, address newAdmin);\\n\\n /**\\n * @dev Emitted when the beacon is changed.\\n */\\n event BeaconUpgraded(address indexed beacon);\\n}\\n\",\"keccak256\":\"0x3cbef5ebc24b415252e2f8c0c9254555d30d9f085603b4b80d9b5ed20ab87e90\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/interfaces/draft-IERC1822.sol":{"IERC1822Proxiable":{"abi":[{"inputs":[],"name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified proxy whose upgrades are fully controlled by the current implementation.","kind":"dev","methods":{"proxiableUUID()":{"details":"Returns the storage slot that the proxiable contract assumes is being used to store the implementation address. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"proxiableUUID()":"52d1902d"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified proxy whose upgrades are fully controlled by the current implementation.\",\"kind\":\"dev\",\"methods\":{\"proxiableUUID()\":{\"details\":\"Returns the storage slot that the proxiable contract assumes is being used to store the implementation address. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":\"IERC1822Proxiable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822Proxiable {\\n /**\\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n * address.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy.\\n */\\n function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/proxy/Clones.sol":{"Clones":{"abi":[],"devdoc":{"details":"https://eips.ethereum.org/EIPS/eip-1167[EIP 1167] is a standard for deploying minimal proxy contracts, also known as \"clones\". > To simply and cheaply clone contract functionality in an immutable way, this standard specifies > a minimal bytecode implementation that delegates all calls to a known, fixed address. The library includes functions to deploy a proxy using either `create` (traditional deployment) or `create2` (salted deterministic deployment). It also includes functions to predict the addresses of clones deployed using the deterministic method. _Available since v3.4._","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"602d6037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a","opcodes":"PUSH1 0x2D PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"755:3275:17:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;755:3275:17;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"755:3275:17:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"9000","executionCost":"94","totalCost":"9094"},"internal":{"clone(address)":"infinite","cloneDeterministic(address,bytes32)":"infinite","predictDeterministicAddress(address,bytes32)":"infinite","predictDeterministicAddress(address,bytes32,address)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"https://eips.ethereum.org/EIPS/eip-1167[EIP 1167] is a standard for deploying minimal proxy contracts, also known as \\\"clones\\\". > To simply and cheaply clone contract functionality in an immutable way, this standard specifies > a minimal bytecode implementation that delegates all calls to a known, fixed address. The library includes functions to deploy a proxy using either `create` (traditional deployment) or `create2` (salted deterministic deployment). It also includes functions to predict the addresses of clones deployed using the deterministic method. _Available since v3.4._\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/proxy/Clones.sol\":\"Clones\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/proxy/Clones.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/Clones.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev https://eips.ethereum.org/EIPS/eip-1167[EIP 1167] is a standard for\\n * deploying minimal proxy contracts, also known as \\\"clones\\\".\\n *\\n * > To simply and cheaply clone contract functionality in an immutable way, this standard specifies\\n * > a minimal bytecode implementation that delegates all calls to a known, fixed address.\\n *\\n * The library includes functions to deploy a proxy using either `create` (traditional deployment) or `create2`\\n * (salted deterministic deployment). It also includes functions to predict the addresses of clones deployed using the\\n * deterministic method.\\n *\\n * _Available since v3.4._\\n */\\nlibrary Clones {\\n /**\\n * @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`.\\n *\\n * This function uses the create opcode, which should never revert.\\n */\\n function clone(address implementation) internal returns (address instance) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n // Cleans the upper 96 bits of the `implementation` word, then packs the first 3 bytes\\n // of the `implementation` address with the bytecode before the address.\\n mstore(0x00, or(shr(0xe8, shl(0x60, implementation)), 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000))\\n // Packs the remaining 17 bytes of `implementation` with the bytecode after the address.\\n mstore(0x20, or(shl(0x78, implementation), 0x5af43d82803e903d91602b57fd5bf3))\\n instance := create(0, 0x09, 0x37)\\n }\\n require(instance != address(0), \\\"ERC1167: create failed\\\");\\n }\\n\\n /**\\n * @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`.\\n *\\n * This function uses the create2 opcode and a `salt` to deterministically deploy\\n * the clone. Using the same `implementation` and `salt` multiple time will revert, since\\n * the clones cannot be deployed twice at the same address.\\n */\\n function cloneDeterministic(address implementation, bytes32 salt) internal returns (address instance) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n // Cleans the upper 96 bits of the `implementation` word, then packs the first 3 bytes\\n // of the `implementation` address with the bytecode before the address.\\n mstore(0x00, or(shr(0xe8, shl(0x60, implementation)), 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000))\\n // Packs the remaining 17 bytes of `implementation` with the bytecode after the address.\\n mstore(0x20, or(shl(0x78, implementation), 0x5af43d82803e903d91602b57fd5bf3))\\n instance := create2(0, 0x09, 0x37, salt)\\n }\\n require(instance != address(0), \\\"ERC1167: create2 failed\\\");\\n }\\n\\n /**\\n * @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}.\\n */\\n function predictDeterministicAddress(\\n address implementation,\\n bytes32 salt,\\n address deployer\\n ) internal pure returns (address predicted) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n let ptr := mload(0x40)\\n mstore(add(ptr, 0x38), deployer)\\n mstore(add(ptr, 0x24), 0x5af43d82803e903d91602b57fd5bf3ff)\\n mstore(add(ptr, 0x14), implementation)\\n mstore(ptr, 0x3d602d80600a3d3981f3363d3d373d3d3d363d73)\\n mstore(add(ptr, 0x58), salt)\\n mstore(add(ptr, 0x78), keccak256(add(ptr, 0x0c), 0x37))\\n predicted := keccak256(add(ptr, 0x43), 0x55)\\n }\\n }\\n\\n /**\\n * @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}.\\n */\\n function predictDeterministicAddress(\\n address implementation,\\n bytes32 salt\\n ) internal view returns (address predicted) {\\n return predictDeterministicAddress(implementation, salt, address(this));\\n }\\n}\\n\",\"keccak256\":\"0x01f055f5c26ba25d7f83e9aa9ba877fbea4d0bf22227de046ea67494bc932999\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol":{"ERC1967Proxy":{"abi":[{"inputs":[{"internalType":"address","name":"_logic","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"}],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"beacon","type":"address"}],"name":"BeaconUpgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"stateMutability":"payable","type":"fallback"},{"stateMutability":"payable","type":"receive"}],"devdoc":{"details":"This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an implementation address that can be changed. This address is stored in storage in the location specified by https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the implementation behind the proxy.","kind":"dev","methods":{"constructor":{"details":"Initializes the upgradeable proxy with an initial implementation specified by `_logic`. If `_data` is nonempty, it's used as data in a delegate call to `_logic`. This will typically be an encoded function call, and allows initializing the storage of the proxy like a Solidity constructor."}},"version":1},"evm":{"bytecode":{"functionDebugData":{"@_5376":{"entryPoint":null,"id":5376,"parameterSlots":2,"returnSlots":0},"@_revert_9263":{"entryPoint":693,"id":9263,"parameterSlots":2,"returnSlots":0},"@_setImplementation_5443":{"entryPoint":215,"id":5443,"parameterSlots":1,"returnSlots":0},"@_upgradeToAndCall_5488":{"entryPoint":53,"id":5488,"parameterSlots":3,"returnSlots":0},"@_upgradeTo_5458":{"entryPoint":107,"id":5458,"parameterSlots":1,"returnSlots":0},"@functionDelegateCall_9151":{"entryPoint":171,"id":9151,"parameterSlots":2,"returnSlots":1},"@functionDelegateCall_9180":{"entryPoint":425,"id":9180,"parameterSlots":3,"returnSlots":1},"@getAddressSlot_9400":{"entryPoint":561,"id":9400,"parameterSlots":1,"returnSlots":1},"@isContract_8952":{"entryPoint":546,"id":8952,"parameterSlots":1,"returnSlots":1},"@verifyCallResultFromTarget_9219":{"entryPoint":564,"id":9219,"parameterSlots":4,"returnSlots":1},"abi_decode_tuple_t_addresst_bytes_memory_ptr_fromMemory":{"entryPoint":793,"id":null,"parameterSlots":2,"returnSlots":2},"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":999,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":1027,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"copy_memory_to_memory_with_cleanup":{"entryPoint":757,"id":null,"parameterSlots":3,"returnSlots":0},"panic_error_0x41":{"entryPoint":735,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:2931:92","statements":[{"nodeType":"YulBlock","src":"6:3:92","statements":[]},{"body":{"nodeType":"YulBlock","src":"46:95:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"63:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"70:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"75:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"66:3:92"},"nodeType":"YulFunctionCall","src":"66:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"56:6:92"},"nodeType":"YulFunctionCall","src":"56:31:92"},"nodeType":"YulExpressionStatement","src":"56:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"103:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"106:4:92","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"96:6:92"},"nodeType":"YulFunctionCall","src":"96:15:92"},"nodeType":"YulExpressionStatement","src":"96:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"127:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"130:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"120:6:92"},"nodeType":"YulFunctionCall","src":"120:15:92"},"nodeType":"YulExpressionStatement","src":"120:15:92"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"14:127:92"},{"body":{"nodeType":"YulBlock","src":"212:184:92","statements":[{"nodeType":"YulVariableDeclaration","src":"222:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"231:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"226:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"291:63:92","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"316:3:92"},{"name":"i","nodeType":"YulIdentifier","src":"321:1:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"312:3:92"},"nodeType":"YulFunctionCall","src":"312:11:92"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"335:3:92"},{"name":"i","nodeType":"YulIdentifier","src":"340:1:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"331:3:92"},"nodeType":"YulFunctionCall","src":"331:11:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"325:5:92"},"nodeType":"YulFunctionCall","src":"325:18:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"305:6:92"},"nodeType":"YulFunctionCall","src":"305:39:92"},"nodeType":"YulExpressionStatement","src":"305:39:92"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"252:1:92"},{"name":"length","nodeType":"YulIdentifier","src":"255:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"249:2:92"},"nodeType":"YulFunctionCall","src":"249:13:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"263:19:92","statements":[{"nodeType":"YulAssignment","src":"265:15:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"274:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"277:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"270:3:92"},"nodeType":"YulFunctionCall","src":"270:10:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"265:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"245:3:92","statements":[]},"src":"241:113:92"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"374:3:92"},{"name":"length","nodeType":"YulIdentifier","src":"379:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"370:3:92"},"nodeType":"YulFunctionCall","src":"370:16:92"},{"kind":"number","nodeType":"YulLiteral","src":"388:1:92","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"363:6:92"},"nodeType":"YulFunctionCall","src":"363:27:92"},"nodeType":"YulExpressionStatement","src":"363:27:92"}]},"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"190:3:92","type":""},{"name":"dst","nodeType":"YulTypedName","src":"195:3:92","type":""},{"name":"length","nodeType":"YulTypedName","src":"200:6:92","type":""}],"src":"146:250:92"},{"body":{"nodeType":"YulBlock","src":"508:956:92","statements":[{"body":{"nodeType":"YulBlock","src":"554:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"563:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"566:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"556:6:92"},"nodeType":"YulFunctionCall","src":"556:12:92"},"nodeType":"YulExpressionStatement","src":"556:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"529:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"538:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"525:3:92"},"nodeType":"YulFunctionCall","src":"525:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"550:2:92","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"521:3:92"},"nodeType":"YulFunctionCall","src":"521:32:92"},"nodeType":"YulIf","src":"518:52:92"},{"nodeType":"YulVariableDeclaration","src":"579:29:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"598:9:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"592:5:92"},"nodeType":"YulFunctionCall","src":"592:16:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"583:5:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"671:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"680:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"683:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"673:6:92"},"nodeType":"YulFunctionCall","src":"673:12:92"},"nodeType":"YulExpressionStatement","src":"673:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"630:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"641:5:92"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"656:3:92","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"661:1:92","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"652:3:92"},"nodeType":"YulFunctionCall","src":"652:11:92"},{"kind":"number","nodeType":"YulLiteral","src":"665:1:92","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"648:3:92"},"nodeType":"YulFunctionCall","src":"648:19:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"637:3:92"},"nodeType":"YulFunctionCall","src":"637:31:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"627:2:92"},"nodeType":"YulFunctionCall","src":"627:42:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"620:6:92"},"nodeType":"YulFunctionCall","src":"620:50:92"},"nodeType":"YulIf","src":"617:70:92"},{"nodeType":"YulAssignment","src":"696:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"706:5:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"696:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"720:39:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"744:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"755:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"740:3:92"},"nodeType":"YulFunctionCall","src":"740:18:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"734:5:92"},"nodeType":"YulFunctionCall","src":"734:25:92"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"724:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"768:28:92","value":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"786:2:92","type":"","value":"64"},{"kind":"number","nodeType":"YulLiteral","src":"790:1:92","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"782:3:92"},"nodeType":"YulFunctionCall","src":"782:10:92"},{"kind":"number","nodeType":"YulLiteral","src":"794:1:92","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"778:3:92"},"nodeType":"YulFunctionCall","src":"778:18:92"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"772:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"823:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"832:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"835:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"825:6:92"},"nodeType":"YulFunctionCall","src":"825:12:92"},"nodeType":"YulExpressionStatement","src":"825:12:92"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"811:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"819:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"808:2:92"},"nodeType":"YulFunctionCall","src":"808:14:92"},"nodeType":"YulIf","src":"805:34:92"},{"nodeType":"YulVariableDeclaration","src":"848:32:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"862:9:92"},{"name":"offset","nodeType":"YulIdentifier","src":"873:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"858:3:92"},"nodeType":"YulFunctionCall","src":"858:22:92"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"852:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"928:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"937:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"940:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"930:6:92"},"nodeType":"YulFunctionCall","src":"930:12:92"},"nodeType":"YulExpressionStatement","src":"930:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"907:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"911:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"903:3:92"},"nodeType":"YulFunctionCall","src":"903:13:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"918:7:92"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"899:3:92"},"nodeType":"YulFunctionCall","src":"899:27:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"892:6:92"},"nodeType":"YulFunctionCall","src":"892:35:92"},"nodeType":"YulIf","src":"889:55:92"},{"nodeType":"YulVariableDeclaration","src":"953:19:92","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"969:2:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"963:5:92"},"nodeType":"YulFunctionCall","src":"963:9:92"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"957:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"995:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"997:16:92"},"nodeType":"YulFunctionCall","src":"997:18:92"},"nodeType":"YulExpressionStatement","src":"997:18:92"}]},"condition":{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"987:2:92"},{"name":"_1","nodeType":"YulIdentifier","src":"991:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"984:2:92"},"nodeType":"YulFunctionCall","src":"984:10:92"},"nodeType":"YulIf","src":"981:36:92"},{"nodeType":"YulVariableDeclaration","src":"1026:17:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1040:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"1036:3:92"},"nodeType":"YulFunctionCall","src":"1036:7:92"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"1030:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"1052:23:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1072:2:92","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1066:5:92"},"nodeType":"YulFunctionCall","src":"1066:9:92"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"1056:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"1084:71:92","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1106:6:92"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"1130:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"1134:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1126:3:92"},"nodeType":"YulFunctionCall","src":"1126:13:92"},{"name":"_4","nodeType":"YulIdentifier","src":"1141:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1122:3:92"},"nodeType":"YulFunctionCall","src":"1122:22:92"},{"kind":"number","nodeType":"YulLiteral","src":"1146:2:92","type":"","value":"63"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1118:3:92"},"nodeType":"YulFunctionCall","src":"1118:31:92"},{"name":"_4","nodeType":"YulIdentifier","src":"1151:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1114:3:92"},"nodeType":"YulFunctionCall","src":"1114:40:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1102:3:92"},"nodeType":"YulFunctionCall","src":"1102:53:92"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"1088:10:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"1214:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"1216:16:92"},"nodeType":"YulFunctionCall","src":"1216:18:92"},"nodeType":"YulExpressionStatement","src":"1216:18:92"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"1173:10:92"},{"name":"_1","nodeType":"YulIdentifier","src":"1185:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1170:2:92"},"nodeType":"YulFunctionCall","src":"1170:18:92"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"1193:10:92"},{"name":"memPtr","nodeType":"YulIdentifier","src":"1205:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"1190:2:92"},"nodeType":"YulFunctionCall","src":"1190:22:92"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"1167:2:92"},"nodeType":"YulFunctionCall","src":"1167:46:92"},"nodeType":"YulIf","src":"1164:72:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1252:2:92","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"1256:10:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1245:6:92"},"nodeType":"YulFunctionCall","src":"1245:22:92"},"nodeType":"YulExpressionStatement","src":"1245:22:92"},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1283:6:92"},{"name":"_3","nodeType":"YulIdentifier","src":"1291:2:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1276:6:92"},"nodeType":"YulFunctionCall","src":"1276:18:92"},"nodeType":"YulExpressionStatement","src":"1276:18:92"},{"body":{"nodeType":"YulBlock","src":"1340:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1349:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1352:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1342:6:92"},"nodeType":"YulFunctionCall","src":"1342:12:92"},"nodeType":"YulExpressionStatement","src":"1342:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"1317:2:92"},{"name":"_3","nodeType":"YulIdentifier","src":"1321:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1313:3:92"},"nodeType":"YulFunctionCall","src":"1313:11:92"},{"kind":"number","nodeType":"YulLiteral","src":"1326:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1309:3:92"},"nodeType":"YulFunctionCall","src":"1309:20:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1331:7:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1306:2:92"},"nodeType":"YulFunctionCall","src":"1306:33:92"},"nodeType":"YulIf","src":"1303:53:92"},{"expression":{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"1404:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"1408:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1400:3:92"},"nodeType":"YulFunctionCall","src":"1400:11:92"},{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1417:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"1425:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1413:3:92"},"nodeType":"YulFunctionCall","src":"1413:15:92"},{"name":"_3","nodeType":"YulIdentifier","src":"1430:2:92"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"1365:34:92"},"nodeType":"YulFunctionCall","src":"1365:68:92"},"nodeType":"YulExpressionStatement","src":"1365:68:92"},{"nodeType":"YulAssignment","src":"1442:16:92","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"1452:6:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1442:6:92"}]}]},"name":"abi_decode_tuple_t_addresst_bytes_memory_ptr_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"466:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"477:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"489:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"497:6:92","type":""}],"src":"401:1063:92"},{"body":{"nodeType":"YulBlock","src":"1643:235:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1660:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1671:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1653:6:92"},"nodeType":"YulFunctionCall","src":"1653:21:92"},"nodeType":"YulExpressionStatement","src":"1653:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1694:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1705:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1690:3:92"},"nodeType":"YulFunctionCall","src":"1690:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"1710:2:92","type":"","value":"45"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1683:6:92"},"nodeType":"YulFunctionCall","src":"1683:30:92"},"nodeType":"YulExpressionStatement","src":"1683:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1733:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1744:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1729:3:92"},"nodeType":"YulFunctionCall","src":"1729:18:92"},{"hexValue":"455243313936373a206e657720696d706c656d656e746174696f6e206973206e","kind":"string","nodeType":"YulLiteral","src":"1749:34:92","type":"","value":"ERC1967: new implementation is n"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1722:6:92"},"nodeType":"YulFunctionCall","src":"1722:62:92"},"nodeType":"YulExpressionStatement","src":"1722:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1804:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1815:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1800:3:92"},"nodeType":"YulFunctionCall","src":"1800:18:92"},{"hexValue":"6f74206120636f6e7472616374","kind":"string","nodeType":"YulLiteral","src":"1820:15:92","type":"","value":"ot a contract"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1793:6:92"},"nodeType":"YulFunctionCall","src":"1793:43:92"},"nodeType":"YulExpressionStatement","src":"1793:43:92"},{"nodeType":"YulAssignment","src":"1845:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1857:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1868:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1853:3:92"},"nodeType":"YulFunctionCall","src":"1853:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1845:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1620:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1634:4:92","type":""}],"src":"1469:409:92"},{"body":{"nodeType":"YulBlock","src":"2020:150:92","statements":[{"nodeType":"YulVariableDeclaration","src":"2030:27:92","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2050:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2044:5:92"},"nodeType":"YulFunctionCall","src":"2044:13:92"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"2034:6:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2105:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"2113:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2101:3:92"},"nodeType":"YulFunctionCall","src":"2101:17:92"},{"name":"pos","nodeType":"YulIdentifier","src":"2120:3:92"},{"name":"length","nodeType":"YulIdentifier","src":"2125:6:92"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"2066:34:92"},"nodeType":"YulFunctionCall","src":"2066:66:92"},"nodeType":"YulExpressionStatement","src":"2066:66:92"},{"nodeType":"YulAssignment","src":"2141:23:92","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2152:3:92"},{"name":"length","nodeType":"YulIdentifier","src":"2157:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2148:3:92"},"nodeType":"YulFunctionCall","src":"2148:16:92"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"2141:3:92"}]}]},"name":"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1996:3:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"2001:6:92","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"2012:3:92","type":""}],"src":"1883:287:92"},{"body":{"nodeType":"YulBlock","src":"2349:179:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2366:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2377:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2359:6:92"},"nodeType":"YulFunctionCall","src":"2359:21:92"},"nodeType":"YulExpressionStatement","src":"2359:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2400:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2411:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2396:3:92"},"nodeType":"YulFunctionCall","src":"2396:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"2416:2:92","type":"","value":"29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2389:6:92"},"nodeType":"YulFunctionCall","src":"2389:30:92"},"nodeType":"YulExpressionStatement","src":"2389:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2439:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2450:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2435:3:92"},"nodeType":"YulFunctionCall","src":"2435:18:92"},{"hexValue":"416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374","kind":"string","nodeType":"YulLiteral","src":"2455:31:92","type":"","value":"Address: call to non-contract"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2428:6:92"},"nodeType":"YulFunctionCall","src":"2428:59:92"},"nodeType":"YulExpressionStatement","src":"2428:59:92"},{"nodeType":"YulAssignment","src":"2496:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2508:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2519:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2504:3:92"},"nodeType":"YulFunctionCall","src":"2504:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2496:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2326:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2340:4:92","type":""}],"src":"2175:353:92"},{"body":{"nodeType":"YulBlock","src":"2654:275:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2671:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2682:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2664:6:92"},"nodeType":"YulFunctionCall","src":"2664:21:92"},"nodeType":"YulExpressionStatement","src":"2664:21:92"},{"nodeType":"YulVariableDeclaration","src":"2694:27:92","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2714:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2708:5:92"},"nodeType":"YulFunctionCall","src":"2708:13:92"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"2698:6:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2741:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2752:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2737:3:92"},"nodeType":"YulFunctionCall","src":"2737:18:92"},{"name":"length","nodeType":"YulIdentifier","src":"2757:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2730:6:92"},"nodeType":"YulFunctionCall","src":"2730:34:92"},"nodeType":"YulExpressionStatement","src":"2730:34:92"},{"expression":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2812:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"2820:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2808:3:92"},"nodeType":"YulFunctionCall","src":"2808:15:92"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2829:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2840:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2825:3:92"},"nodeType":"YulFunctionCall","src":"2825:18:92"},{"name":"length","nodeType":"YulIdentifier","src":"2845:6:92"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"2773:34:92"},"nodeType":"YulFunctionCall","src":"2773:79:92"},"nodeType":"YulExpressionStatement","src":"2773:79:92"},{"nodeType":"YulAssignment","src":"2861:62:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2877:9:92"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"2896:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"2904:2:92","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2892:3:92"},"nodeType":"YulFunctionCall","src":"2892:15:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2913:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"2909:3:92"},"nodeType":"YulFunctionCall","src":"2909:7:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2888:3:92"},"nodeType":"YulFunctionCall","src":"2888:29:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2873:3:92"},"nodeType":"YulFunctionCall","src":"2873:45:92"},{"kind":"number","nodeType":"YulLiteral","src":"2920:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2869:3:92"},"nodeType":"YulFunctionCall","src":"2869:54:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2861:4:92"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2623:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"2634:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2645:4:92","type":""}],"src":"2533:396:92"}]},"contents":"{\n { }\n function panic_error_0x41()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function copy_memory_to_memory_with_cleanup(src, dst, length)\n {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n mstore(add(dst, length), 0)\n }\n function abi_decode_tuple_t_addresst_bytes_memory_ptr_fromMemory(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n let value := mload(headStart)\n if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n value0 := value\n let offset := mload(add(headStart, 32))\n let _1 := sub(shl(64, 1), 1)\n if gt(offset, _1) { revert(0, 0) }\n let _2 := add(headStart, offset)\n if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n let _3 := mload(_2)\n if gt(_3, _1) { panic_error_0x41() }\n let _4 := not(31)\n let memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n mstore(memPtr, _3)\n if gt(add(add(_2, _3), 32), dataEnd) { revert(0, 0) }\n copy_memory_to_memory_with_cleanup(add(_2, 32), add(memPtr, 32), _3)\n value1 := memPtr\n }\n function abi_encode_tuple_t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 45)\n mstore(add(headStart, 64), \"ERC1967: new implementation is n\")\n mstore(add(headStart, 96), \"ot a contract\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n {\n let length := mload(value0)\n copy_memory_to_memory_with_cleanup(add(value0, 0x20), pos, length)\n end := add(pos, length)\n }\n function abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 29)\n mstore(add(headStart, 64), \"Address: call to non-contract\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n mstore(headStart, 32)\n let length := mload(value0)\n mstore(add(headStart, 32), length)\n copy_memory_to_memory_with_cleanup(add(value0, 32), add(headStart, 64), length)\n tail := add(add(headStart, and(add(length, 31), not(31))), 64)\n }\n}","id":92,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60806040526040516106fe3803806106fe83398101604081905261002291610319565b61002e82826000610035565b5050610436565b61003e8361006b565b60008251118061004b5750805b156100665761006483836100ab60201b6100291760201c565b505b505050565b610074816100d7565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606100d083836040518060600160405280602781526020016106d7602791396101a9565b9392505050565b6100ea8161022260201b6100551760201c565b6101515760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b806101887f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61023160201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6060600080856001600160a01b0316856040516101c691906103e7565b600060405180830381855af49150503d8060008114610201576040519150601f19603f3d011682016040523d82523d6000602084013e610206565b606091505b50909250905061021886838387610234565b9695505050505050565b6001600160a01b03163b151590565b90565b606083156102a357825160000361029c576001600160a01b0385163b61029c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610148565b50816102ad565b6102ad83836102b5565b949350505050565b8151156102c55781518083602001fd5b8060405162461bcd60e51b81526004016101489190610403565b634e487b7160e01b600052604160045260246000fd5b60005b838110156103105781810151838201526020016102f8565b50506000910152565b6000806040838503121561032c57600080fd5b82516001600160a01b038116811461034357600080fd5b60208401519092506001600160401b038082111561036057600080fd5b818501915085601f83011261037457600080fd5b815181811115610386576103866102df565b604051601f8201601f19908116603f011681019083821181831017156103ae576103ae6102df565b816040528281528860208487010111156103c757600080fd5b6103d88360208301602088016102f5565b80955050505050509250929050565b600082516103f98184602087016102f5565b9190910192915050565b60208152600082518060208401526104228160408501602087016102f5565b601f01601f19169190910160400192915050565b610292806104456000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b61009f565b565b606061004e838360405180606001604052806027815260200161025f602791396100c3565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e8080156100be573d6000f35b3d6000fd5b6060600080856001600160a01b0316856040516100e0919061020f565b600060405180830381855af49150503d806000811461011b576040519150601f19603f3d011682016040523d82523d6000602084013e610120565b606091505b50915091506101318683838761013b565b9695505050505050565b606083156101af5782516000036101a8576001600160a01b0385163b6101a85760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b50816101b9565b6101b983836101c1565b949350505050565b8151156101d15781518083602001fd5b8060405162461bcd60e51b815260040161019f919061022b565b60005b838110156102065781810151838201526020016101ee565b50506000910152565b600082516102218184602087016101eb565b9190910192915050565b602081526000825180602084015261024a8160408501602087016101eb565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH2 0x6FE CODESIZE SUB DUP1 PUSH2 0x6FE DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x22 SWAP2 PUSH2 0x319 JUMP JUMPDEST PUSH2 0x2E DUP3 DUP3 PUSH1 0x0 PUSH2 0x35 JUMP JUMPDEST POP POP PUSH2 0x436 JUMP JUMPDEST PUSH2 0x3E DUP4 PUSH2 0x6B JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD GT DUP1 PUSH2 0x4B JUMPI POP DUP1 JUMPDEST ISZERO PUSH2 0x66 JUMPI PUSH2 0x64 DUP4 DUP4 PUSH2 0xAB PUSH1 0x20 SHL PUSH2 0x29 OR PUSH1 0x20 SHR JUMP JUMPDEST POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x74 DUP2 PUSH2 0xD7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xD0 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x6D7 PUSH1 0x27 SWAP2 CODECOPY PUSH2 0x1A9 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xEA DUP2 PUSH2 0x222 PUSH1 0x20 SHL PUSH2 0x55 OR PUSH1 0x20 SHR JUMP JUMPDEST PUSH2 0x151 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313936373A206E657720696D706C656D656E746174696F6E206973206E PUSH1 0x44 DUP3 ADD MSTORE PUSH13 0x1BDD08184818DBDB9D1C9858DD PUSH1 0x9A SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH2 0x188 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC PUSH1 0x0 SHL PUSH2 0x231 PUSH1 0x20 SHL PUSH2 0x64 OR PUSH1 0x20 SHR JUMP JUMPDEST DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0x1C6 SWAP2 SWAP1 PUSH2 0x3E7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x201 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x206 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x218 DUP7 DUP4 DUP4 DUP8 PUSH2 0x234 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x2A3 JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0x29C JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0x29C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x148 JUMP JUMPDEST POP DUP2 PUSH2 0x2AD JUMP JUMPDEST PUSH2 0x2AD DUP4 DUP4 PUSH2 0x2B5 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x2C5 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x148 SWAP2 SWAP1 PUSH2 0x403 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x310 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2F8 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x32C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x343 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x360 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x374 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x386 JUMPI PUSH2 0x386 PUSH2 0x2DF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x3AE JUMPI PUSH2 0x3AE PUSH2 0x2DF JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x3C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3D8 DUP4 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x2F5 JUMP JUMPDEST DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x3F9 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x2F5 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x422 DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x2F5 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x292 DUP1 PUSH2 0x445 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLDATASIZE PUSH2 0x13 JUMPI PUSH2 0x11 PUSH2 0x17 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x11 JUMPDEST PUSH2 0x27 PUSH2 0x22 PUSH2 0x67 JUMP JUMPDEST PUSH2 0x9F JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x60 PUSH2 0x4E DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x25F PUSH1 0x27 SWAP2 CODECOPY PUSH2 0xC3 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9A PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 DUP1 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE PUSH1 0x0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH2 0xBE JUMPI RETURNDATASIZE PUSH1 0x0 RETURN JUMPDEST RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0xE0 SWAP2 SWAP1 PUSH2 0x20F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x11B JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x120 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x131 DUP7 DUP4 DUP4 DUP8 PUSH2 0x13B JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x1AF JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0x1A8 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0x1A8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP DUP2 PUSH2 0x1B9 JUMP JUMPDEST PUSH2 0x1B9 DUP4 DUP4 PUSH2 0x1C1 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x1D1 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x19F SWAP2 SWAP1 PUSH2 0x22B JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x206 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1EE JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x221 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x1EB JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x24A DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x1EB JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A164 PUSH20 0x6F6C6343000811000A416464726573733A206C6F PUSH24 0x2D6C6576656C2064656C65676174652063616C6C20666169 PUSH13 0x65640000000000000000000000 ","sourceMap":"567:723:18:-:0;;;958:112;;;;;;;;;;;;;;;;;;:::i;:::-;1024:39;1042:6;1050:5;1057;1024:17;:39::i;:::-;958:112;;567:723;;2057:265:19;2165:29;2176:17;2165:10;:29::i;:::-;2222:1;2208:4;:11;:15;:28;;;;2227:9;2208:28;2204:112;;;2252:53;2281:17;2300:4;2252:28;;;;;:53;;:::i;:::-;;2204:112;2057:265;;;:::o;1771:152::-;1837:37;1856:17;1837:18;:37::i;:::-;1889:27;;-1:-1:-1;;;;;1889:27:19;;;;;;;;1771:152;:::o;6674:198:33:-;6757:12;6788:77;6809:6;6817:4;6788:77;;;;;;;;;;;;;;;;;:20;:77::i;:::-;6781:84;6674:198;-1:-1:-1;;;6674:198:33:o;1406:259:19:-;1487:37;1506:17;1487:18;;;;;:37;;:::i;:::-;1479:95;;;;-1:-1:-1;;;1479:95:19;;1671:2:92;1479:95:19;;;1653:21:92;1710:2;1690:18;;;1683:30;1749:34;1729:18;;;1722:62;-1:-1:-1;;;1800:18:92;;;1793:43;1853:19;;1479:95:19;;;;;;;;;1641:17;1584:48;1030:66;1611:20;;1584:26;;;;;:48;;:::i;:::-;:74;;-1:-1:-1;;;;;;1584:74:19;-1:-1:-1;;;;;1584:74:19;;;;;;;;;;-1:-1:-1;1406:259:19:o;7058:325:33:-;7199:12;7224;7238:23;7265:6;-1:-1:-1;;;;;7265:19:33;7285:4;7265:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7223:67:33;;-1:-1:-1;7223:67:33;-1:-1:-1;7307:69:33;7334:6;7223:67;;7363:12;7307:26;:69::i;:::-;7300:76;7058:325;-1:-1:-1;;;;;;7058:325:33:o;1412:320::-;-1:-1:-1;;;;;1702:19:33;;:23;;;1412:320::o;1859:190:36:-;2029:4;1859:190::o;7671:628:33:-;7851:12;7879:7;7875:418;;;7906:10;:17;7927:1;7906:22;7902:286;;-1:-1:-1;;;;;1702:19:33;;;8113:60;;;;-1:-1:-1;;;8113:60:33;;2377:2:92;8113:60:33;;;2359:21:92;2416:2;2396:18;;;2389:30;2455:31;2435:18;;;2428:59;2504:18;;8113:60:33;2175:353:92;8113:60:33;-1:-1:-1;8208:10:33;8201:17;;7875:418;8249:33;8257:10;8269:12;8249:7;:33::i;:::-;7671:628;;;;;;:::o;8821:540::-;8980:17;;:21;8976:379;;9208:10;9202:17;9264:15;9251:10;9247:2;9243:19;9236:44;8976:379;9331:12;9324:20;;-1:-1:-1;;;9324:20:33;;;;;;;;:::i;14:127:92:-;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:250;231:1;241:113;255:6;252:1;249:13;241:113;;;331:11;;;325:18;312:11;;;305:39;277:2;270:10;241:113;;;-1:-1:-1;;388:1:92;370:16;;363:27;146:250::o;401:1063::-;489:6;497;550:2;538:9;529:7;525:23;521:32;518:52;;;566:1;563;556:12;518:52;592:16;;-1:-1:-1;;;;;637:31:92;;627:42;;617:70;;683:1;680;673:12;617:70;755:2;740:18;;734:25;706:5;;-1:-1:-1;;;;;;808:14:92;;;805:34;;;835:1;832;825:12;805:34;873:6;862:9;858:22;848:32;;918:7;911:4;907:2;903:13;899:27;889:55;;940:1;937;930:12;889:55;969:2;963:9;991:2;987;984:10;981:36;;;997:18;;:::i;:::-;1072:2;1066:9;1040:2;1126:13;;-1:-1:-1;;1122:22:92;;;1146:2;1118:31;1114:40;1102:53;;;1170:18;;;1190:22;;;1167:46;1164:72;;;1216:18;;:::i;:::-;1256:10;1252:2;1245:22;1291:2;1283:6;1276:18;1331:7;1326:2;1321;1317;1313:11;1309:20;1306:33;1303:53;;;1352:1;1349;1342:12;1303:53;1365:68;1430:2;1425;1417:6;1413:15;1408:2;1404;1400:11;1365:68;:::i;:::-;1452:6;1442:16;;;;;;;401:1063;;;;;:::o;1883:287::-;2012:3;2050:6;2044:13;2066:66;2125:6;2120:3;2113:4;2105:6;2101:17;2066:66;:::i;:::-;2148:16;;;;;1883:287;-1:-1:-1;;1883:287:92:o;2533:396::-;2682:2;2671:9;2664:21;2645:4;2714:6;2708:13;2757:6;2752:2;2741:9;2737:18;2730:34;2773:79;2845:6;2840:2;2829:9;2825:18;2820:2;2812:6;2808:15;2773:79;:::i;:::-;2913:2;2892:15;-1:-1:-1;;2888:29:92;2873:45;;;;2920:2;2869:54;;2533:396;-1:-1:-1;;2533:396:92:o;:::-;567:723:18;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_5731":{"entryPoint":null,"id":5731,"parameterSlots":0,"returnSlots":0},"@_5739":{"entryPoint":null,"id":5739,"parameterSlots":0,"returnSlots":0},"@_beforeFallback_5744":{"entryPoint":null,"id":5744,"parameterSlots":0,"returnSlots":0},"@_delegate_5704":{"entryPoint":159,"id":5704,"parameterSlots":1,"returnSlots":0},"@_fallback_5723":{"entryPoint":23,"id":5723,"parameterSlots":0,"returnSlots":0},"@_getImplementation_5419":{"entryPoint":null,"id":5419,"parameterSlots":0,"returnSlots":1},"@_implementation_5388":{"entryPoint":103,"id":5388,"parameterSlots":0,"returnSlots":1},"@_revert_9263":{"entryPoint":449,"id":9263,"parameterSlots":2,"returnSlots":0},"@functionDelegateCall_9151":{"entryPoint":41,"id":9151,"parameterSlots":2,"returnSlots":1},"@functionDelegateCall_9180":{"entryPoint":195,"id":9180,"parameterSlots":3,"returnSlots":1},"@getAddressSlot_9400":{"entryPoint":100,"id":9400,"parameterSlots":1,"returnSlots":1},"@isContract_8952":{"entryPoint":85,"id":8952,"parameterSlots":1,"returnSlots":1},"@verifyCallResultFromTarget_9219":{"entryPoint":315,"id":9219,"parameterSlots":4,"returnSlots":1},"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":527,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":555,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"copy_memory_to_memory_with_cleanup":{"entryPoint":491,"id":null,"parameterSlots":3,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:1317:92","statements":[{"nodeType":"YulBlock","src":"6:3:92","statements":[]},{"body":{"nodeType":"YulBlock","src":"80:184:92","statements":[{"nodeType":"YulVariableDeclaration","src":"90:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"99:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"94:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"159:63:92","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"184:3:92"},{"name":"i","nodeType":"YulIdentifier","src":"189:1:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"180:3:92"},"nodeType":"YulFunctionCall","src":"180:11:92"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"203:3:92"},{"name":"i","nodeType":"YulIdentifier","src":"208:1:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"199:3:92"},"nodeType":"YulFunctionCall","src":"199:11:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"193:5:92"},"nodeType":"YulFunctionCall","src":"193:18:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"173:6:92"},"nodeType":"YulFunctionCall","src":"173:39:92"},"nodeType":"YulExpressionStatement","src":"173:39:92"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"120:1:92"},{"name":"length","nodeType":"YulIdentifier","src":"123:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"117:2:92"},"nodeType":"YulFunctionCall","src":"117:13:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"131:19:92","statements":[{"nodeType":"YulAssignment","src":"133:15:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"142:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"145:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"138:3:92"},"nodeType":"YulFunctionCall","src":"138:10:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"133:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"113:3:92","statements":[]},"src":"109:113:92"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"242:3:92"},{"name":"length","nodeType":"YulIdentifier","src":"247:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"238:3:92"},"nodeType":"YulFunctionCall","src":"238:16:92"},{"kind":"number","nodeType":"YulLiteral","src":"256:1:92","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"231:6:92"},"nodeType":"YulFunctionCall","src":"231:27:92"},"nodeType":"YulExpressionStatement","src":"231:27:92"}]},"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"58:3:92","type":""},{"name":"dst","nodeType":"YulTypedName","src":"63:3:92","type":""},{"name":"length","nodeType":"YulTypedName","src":"68:6:92","type":""}],"src":"14:250:92"},{"body":{"nodeType":"YulBlock","src":"406:150:92","statements":[{"nodeType":"YulVariableDeclaration","src":"416:27:92","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"436:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"430:5:92"},"nodeType":"YulFunctionCall","src":"430:13:92"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"420:6:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"491:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"499:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"487:3:92"},"nodeType":"YulFunctionCall","src":"487:17:92"},{"name":"pos","nodeType":"YulIdentifier","src":"506:3:92"},{"name":"length","nodeType":"YulIdentifier","src":"511:6:92"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"452:34:92"},"nodeType":"YulFunctionCall","src":"452:66:92"},"nodeType":"YulExpressionStatement","src":"452:66:92"},{"nodeType":"YulAssignment","src":"527:23:92","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"538:3:92"},{"name":"length","nodeType":"YulIdentifier","src":"543:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"534:3:92"},"nodeType":"YulFunctionCall","src":"534:16:92"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"527:3:92"}]}]},"name":"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"382:3:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"387:6:92","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"398:3:92","type":""}],"src":"269:287:92"},{"body":{"nodeType":"YulBlock","src":"735:179:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"752:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"763:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"745:6:92"},"nodeType":"YulFunctionCall","src":"745:21:92"},"nodeType":"YulExpressionStatement","src":"745:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"786:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"797:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"782:3:92"},"nodeType":"YulFunctionCall","src":"782:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"802:2:92","type":"","value":"29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"775:6:92"},"nodeType":"YulFunctionCall","src":"775:30:92"},"nodeType":"YulExpressionStatement","src":"775:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"825:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"836:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"821:3:92"},"nodeType":"YulFunctionCall","src":"821:18:92"},{"hexValue":"416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374","kind":"string","nodeType":"YulLiteral","src":"841:31:92","type":"","value":"Address: call to non-contract"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"814:6:92"},"nodeType":"YulFunctionCall","src":"814:59:92"},"nodeType":"YulExpressionStatement","src":"814:59:92"},{"nodeType":"YulAssignment","src":"882:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"894:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"905:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"890:3:92"},"nodeType":"YulFunctionCall","src":"890:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"882:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"712:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"726:4:92","type":""}],"src":"561:353:92"},{"body":{"nodeType":"YulBlock","src":"1040:275:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1057:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1068:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1050:6:92"},"nodeType":"YulFunctionCall","src":"1050:21:92"},"nodeType":"YulExpressionStatement","src":"1050:21:92"},{"nodeType":"YulVariableDeclaration","src":"1080:27:92","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1100:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1094:5:92"},"nodeType":"YulFunctionCall","src":"1094:13:92"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"1084:6:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1127:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1138:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1123:3:92"},"nodeType":"YulFunctionCall","src":"1123:18:92"},{"name":"length","nodeType":"YulIdentifier","src":"1143:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1116:6:92"},"nodeType":"YulFunctionCall","src":"1116:34:92"},"nodeType":"YulExpressionStatement","src":"1116:34:92"},{"expression":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1198:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"1206:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1194:3:92"},"nodeType":"YulFunctionCall","src":"1194:15:92"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1215:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1226:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1211:3:92"},"nodeType":"YulFunctionCall","src":"1211:18:92"},{"name":"length","nodeType":"YulIdentifier","src":"1231:6:92"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"1159:34:92"},"nodeType":"YulFunctionCall","src":"1159:79:92"},"nodeType":"YulExpressionStatement","src":"1159:79:92"},{"nodeType":"YulAssignment","src":"1247:62:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1263:9:92"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"1282:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"1290:2:92","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1278:3:92"},"nodeType":"YulFunctionCall","src":"1278:15:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1299:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"1295:3:92"},"nodeType":"YulFunctionCall","src":"1295:7:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1274:3:92"},"nodeType":"YulFunctionCall","src":"1274:29:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1259:3:92"},"nodeType":"YulFunctionCall","src":"1259:45:92"},{"kind":"number","nodeType":"YulLiteral","src":"1306:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1255:3:92"},"nodeType":"YulFunctionCall","src":"1255:54:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1247:4:92"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1009:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1020:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1031:4:92","type":""}],"src":"919:396:92"}]},"contents":"{\n { }\n function copy_memory_to_memory_with_cleanup(src, dst, length)\n {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n mstore(add(dst, length), 0)\n }\n function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n {\n let length := mload(value0)\n copy_memory_to_memory_with_cleanup(add(value0, 0x20), pos, length)\n end := add(pos, length)\n }\n function abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 29)\n mstore(add(headStart, 64), \"Address: call to non-contract\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n mstore(headStart, 32)\n let length := mload(value0)\n mstore(add(headStart, 32), length)\n copy_memory_to_memory_with_cleanup(add(value0, 32), add(headStart, 64), length)\n tail := add(add(headStart, and(add(length, 31), not(31))), 64)\n }\n}","id":92,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"60806040523661001357610011610017565b005b6100115b610027610022610067565b61009f565b565b606061004e838360405180606001604052806027815260200161025f602791396100c3565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e8080156100be573d6000f35b3d6000fd5b6060600080856001600160a01b0316856040516100e0919061020f565b600060405180830381855af49150503d806000811461011b576040519150601f19603f3d011682016040523d82523d6000602084013e610120565b606091505b50915091506101318683838761013b565b9695505050505050565b606083156101af5782516000036101a8576001600160a01b0385163b6101a85760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b50816101b9565b6101b983836101c1565b949350505050565b8151156101d15781518083602001fd5b8060405162461bcd60e51b815260040161019f919061022b565b60005b838110156102065781810151838201526020016101ee565b50506000910152565b600082516102218184602087016101eb565b9190910192915050565b602081526000825180602084015261024a8160408501602087016101eb565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLDATASIZE PUSH2 0x13 JUMPI PUSH2 0x11 PUSH2 0x17 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x11 JUMPDEST PUSH2 0x27 PUSH2 0x22 PUSH2 0x67 JUMP JUMPDEST PUSH2 0x9F JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x60 PUSH2 0x4E DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x25F PUSH1 0x27 SWAP2 CODECOPY PUSH2 0xC3 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9A PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 DUP1 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE PUSH1 0x0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH2 0xBE JUMPI RETURNDATASIZE PUSH1 0x0 RETURN JUMPDEST RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0xE0 SWAP2 SWAP1 PUSH2 0x20F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x11B JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x120 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x131 DUP7 DUP4 DUP4 DUP8 PUSH2 0x13B JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x1AF JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0x1A8 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0x1A8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP DUP2 PUSH2 0x1B9 JUMP JUMPDEST PUSH2 0x1B9 DUP4 DUP4 PUSH2 0x1C1 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x1D1 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x19F SWAP2 SWAP1 PUSH2 0x22B JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x206 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1EE JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x221 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x1EB JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x24A DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x1EB JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A164 PUSH20 0x6F6C6343000811000A0000000000000000000000 ","sourceMap":"567:723:18:-:0;;;;;;2898:11:20;:9;:11::i;:::-;567:723:18;;2675:11:20;2322:110;2397:28;2407:17;:15;:17::i;:::-;2397:9;:28::i;:::-;2322:110::o;6674:198:33:-;6757:12;6788:77;6809:6;6817:4;6788:77;;;;;;;;;;;;;;;;;:20;:77::i;:::-;6781:84;6674:198;-1:-1:-1;;;6674:198:33:o;1412:320::-;-1:-1:-1;;;;;1702:19:33;;:23;;;1412:320::o;1859:190:36:-;2029:4;1859:190::o;1148:140:18:-;1215:12;1246:35;1030:66:19;1254:54;-1:-1:-1;;;;;1254:54:19;;1175:140;1246:35:18;1239:42;;1148:140;:::o;948:895:20:-;1286:14;1283:1;1280;1267:34;1500:1;1497;1481:14;1478:1;1462:14;1455:5;1442:60;1576:16;1573:1;1570;1555:38;1614:6;1681:66;;;;1796:16;1793:1;1786:27;1681:66;1716:16;1713:1;1706:27;7058:325:33;7199:12;7224;7238:23;7265:6;-1:-1:-1;;;;;7265:19:33;7285:4;7265:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7223:67;;;;7307:69;7334:6;7342:7;7351:10;7363:12;7307:26;:69::i;:::-;7300:76;7058:325;-1:-1:-1;;;;;;7058:325:33:o;7671:628::-;7851:12;7879:7;7875:418;;;7906:10;:17;7927:1;7906:22;7902:286;;-1:-1:-1;;;;;1702:19:33;;;8113:60;;;;-1:-1:-1;;;8113:60:33;;763:2:92;8113:60:33;;;745:21:92;802:2;782:18;;;775:30;841:31;821:18;;;814:59;890:18;;8113:60:33;;;;;;;;;-1:-1:-1;8208:10:33;8201:17;;7875:418;8249:33;8257:10;8269:12;8249:7;:33::i;:::-;7671:628;;;;;;:::o;8821:540::-;8980:17;;:21;8976:379;;9208:10;9202:17;9264:15;9251:10;9247:2;9243:19;9236:44;8976:379;9331:12;9324:20;;-1:-1:-1;;;9324:20:33;;;;;;;;:::i;14:250:92:-;99:1;109:113;123:6;120:1;117:13;109:113;;;199:11;;;193:18;180:11;;;173:39;145:2;138:10;109:113;;;-1:-1:-1;;256:1:92;238:16;;231:27;14:250::o;269:287::-;398:3;436:6;430:13;452:66;511:6;506:3;499:4;491:6;487:17;452:66;:::i;:::-;534:16;;;;;269:287;-1:-1:-1;;269:287:92:o;919:396::-;1068:2;1057:9;1050:21;1031:4;1100:6;1094:13;1143:6;1138:2;1127:9;1123:18;1116:34;1159:79;1231:6;1226:2;1215:9;1211:18;1206:2;1198:6;1194:15;1159:79;:::i;:::-;1299:2;1278:15;-1:-1:-1;;1274:29:92;1259:45;;;;1306:2;1255:54;;919:396;-1:-1:-1;;919:396:92:o"},"gasEstimates":{"creation":{"codeDepositCost":"131600","executionCost":"infinite","totalCost":"infinite"},"external":{"":"infinite"},"internal":{"_implementation()":"2156"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_logic\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"details\":\"This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an implementation address that can be changed. This address is stored in storage in the location specified by https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the implementation behind the proxy.\",\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Initializes the upgradeable proxy with an initial implementation specified by `_logic`. If `_data` is nonempty, it's used as data in a delegate call to `_logic`. This will typically be an encoded function call, and allows initializing the storage of the proxy like a Solidity constructor.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol\":\"ERC1967Proxy\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/IERC1967.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (interfaces/IERC1967.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\\n *\\n * _Available since v4.8.3._\\n */\\ninterface IERC1967 {\\n /**\\n * @dev Emitted when the implementation is upgraded.\\n */\\n event Upgraded(address indexed implementation);\\n\\n /**\\n * @dev Emitted when the admin account has changed.\\n */\\n event AdminChanged(address previousAdmin, address newAdmin);\\n\\n /**\\n * @dev Emitted when the beacon is changed.\\n */\\n event BeaconUpgraded(address indexed beacon);\\n}\\n\",\"keccak256\":\"0x3cbef5ebc24b415252e2f8c0c9254555d30d9f085603b4b80d9b5ed20ab87e90\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822Proxiable {\\n /**\\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n * address.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy.\\n */\\n function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (proxy/ERC1967/ERC1967Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../Proxy.sol\\\";\\nimport \\\"./ERC1967Upgrade.sol\\\";\\n\\n/**\\n * @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an\\n * implementation address that can be changed. This address is stored in storage in the location specified by\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the\\n * implementation behind the proxy.\\n */\\ncontract ERC1967Proxy is Proxy, ERC1967Upgrade {\\n /**\\n * @dev Initializes the upgradeable proxy with an initial implementation specified by `_logic`.\\n *\\n * If `_data` is nonempty, it's used as data in a delegate call to `_logic`. This will typically be an encoded\\n * function call, and allows initializing the storage of the proxy like a Solidity constructor.\\n */\\n constructor(address _logic, bytes memory _data) payable {\\n _upgradeToAndCall(_logic, _data, false);\\n }\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _implementation() internal view virtual override returns (address impl) {\\n return ERC1967Upgrade._getImplementation();\\n }\\n}\\n\",\"keccak256\":\"0xa2b22da3032e50b55f95ec1d13336102d675f341167aa76db571ef7f8bb7975d\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../beacon/IBeacon.sol\\\";\\nimport \\\"../../interfaces/IERC1967.sol\\\";\\nimport \\\"../../interfaces/draft-IERC1822.sol\\\";\\nimport \\\"../../utils/Address.sol\\\";\\nimport \\\"../../utils/StorageSlot.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n */\\nabstract contract ERC1967Upgrade is IERC1967 {\\n // This is the keccak-256 hash of \\\"eip1967.proxy.rollback\\\" subtracted by 1\\n bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n /**\\n * @dev Storage slot with the address of the current implementation.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _getImplementation() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 implementation slot.\\n */\\n function _setImplementation(address newImplementation) private {\\n require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n }\\n\\n /**\\n * @dev Perform implementation upgrade\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeTo(address newImplementation) internal {\\n _setImplementation(newImplementation);\\n emit Upgraded(newImplementation);\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCall(address newImplementation, bytes memory data, bool forceCall) internal {\\n _upgradeTo(newImplementation);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(newImplementation, data);\\n }\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCallUUPS(address newImplementation, bytes memory data, bool forceCall) internal {\\n // Upgrades from old implementations will perform a rollback test. This test requires the new\\n // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n // this special case will break upgrade paths from old UUPS implementation to new ones.\\n if (StorageSlot.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n _setImplementation(newImplementation);\\n } else {\\n try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n require(slot == _IMPLEMENTATION_SLOT, \\\"ERC1967Upgrade: unsupported proxiableUUID\\\");\\n } catch {\\n revert(\\\"ERC1967Upgrade: new implementation is not UUPS\\\");\\n }\\n _upgradeToAndCall(newImplementation, data, forceCall);\\n }\\n }\\n\\n /**\\n * @dev Storage slot with the admin of the contract.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _getAdmin() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_ADMIN_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 admin slot.\\n */\\n function _setAdmin(address newAdmin) private {\\n require(newAdmin != address(0), \\\"ERC1967: new admin is the zero address\\\");\\n StorageSlot.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n */\\n function _changeAdmin(address newAdmin) internal {\\n emit AdminChanged(_getAdmin(), newAdmin);\\n _setAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\\n */\\n bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n /**\\n * @dev Returns the current beacon.\\n */\\n function _getBeacon() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_BEACON_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new beacon in the EIP1967 beacon slot.\\n */\\n function _setBeacon(address newBeacon) private {\\n require(Address.isContract(newBeacon), \\\"ERC1967: new beacon is not a contract\\\");\\n require(\\n Address.isContract(IBeacon(newBeacon).implementation()),\\n \\\"ERC1967: beacon implementation is not a contract\\\"\\n );\\n StorageSlot.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n }\\n\\n /**\\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n *\\n * Emits a {BeaconUpgraded} event.\\n */\\n function _upgradeBeaconToAndCall(address newBeacon, bytes memory data, bool forceCall) internal {\\n _setBeacon(newBeacon);\\n emit BeaconUpgraded(newBeacon);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x3b21ae06bf5957f73fa16754b0669c77b7abd8ba6c072d35c3281d446fdb86c2\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (proxy/Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\\n * be specified by overriding the virtual {_implementation} function.\\n *\\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\\n * different contract through the {_delegate} function.\\n *\\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\\n */\\nabstract contract Proxy {\\n /**\\n * @dev Delegates the current call to `implementation`.\\n *\\n * This function does not return to its internal call site, it will return directly to the external caller.\\n */\\n function _delegate(address implementation) internal virtual {\\n assembly {\\n // Copy msg.data. We take full control of memory in this inline assembly\\n // block because it will not return to Solidity code. We overwrite the\\n // Solidity scratch pad at memory position 0.\\n calldatacopy(0, 0, calldatasize())\\n\\n // Call the implementation.\\n // out and outsize are 0 because we don't know the size yet.\\n let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)\\n\\n // Copy the returned data.\\n returndatacopy(0, 0, returndatasize())\\n\\n switch result\\n // delegatecall returns 0 on error.\\n case 0 {\\n revert(0, returndatasize())\\n }\\n default {\\n return(0, returndatasize())\\n }\\n }\\n }\\n\\n /**\\n * @dev This is a virtual function that should be overridden so it returns the address to which the fallback function\\n * and {_fallback} should delegate.\\n */\\n function _implementation() internal view virtual returns (address);\\n\\n /**\\n * @dev Delegates the current call to the address returned by `_implementation()`.\\n *\\n * This function does not return to its internal call site, it will return directly to the external caller.\\n */\\n function _fallback() internal virtual {\\n _beforeFallback();\\n _delegate(_implementation());\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\\n * function in the contract matches the call data.\\n */\\n fallback() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data\\n * is empty.\\n */\\n receive() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`\\n * call, or as part of the Solidity `fallback` or `receive` functions.\\n *\\n * If overridden should call `super._beforeFallback()`.\\n */\\n function _beforeFallback() internal virtual {}\\n}\\n\",\"keccak256\":\"0xc130fe33f1b2132158531a87734153293f6d07bc263ff4ac90e85da9c82c0e27\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeacon {\\n /**\\n * @dev Must return an address that can be used as a delegate call target.\\n *\\n * {BeaconProxy} will check that this address is a contract.\\n */\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/StorageSlot.sol)\\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```solidity\\n * contract ERC1967 {\\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n * function _getImplementation() internal view returns (address) {\\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n * }\\n *\\n * function _setImplementation(address newImplementation) internal {\\n * require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n * }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._\\n * _Available since v4.9 for `string`, `bytes`._\\n */\\nlibrary StorageSlot {\\n struct AddressSlot {\\n address value;\\n }\\n\\n struct BooleanSlot {\\n bool value;\\n }\\n\\n struct Bytes32Slot {\\n bytes32 value;\\n }\\n\\n struct Uint256Slot {\\n uint256 value;\\n }\\n\\n struct StringSlot {\\n string value;\\n }\\n\\n struct BytesSlot {\\n bytes value;\\n }\\n\\n /**\\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n */\\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n */\\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n */\\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n */\\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` with member `value` located at `slot`.\\n */\\n function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\\n */\\n function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` with member `value` located at `slot`.\\n */\\n function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\\n */\\n function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n}\\n\",\"keccak256\":\"0xf09e68aa0dc6722a25bc46490e8d48ed864466d17313b8a0b254c36b54e49899\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol":{"ERC1967Upgrade":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"beacon","type":"address"}],"name":"BeaconUpgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"}],"devdoc":{"details":"This abstract contract provides getters and event emitting update functions for https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots. _Available since v4.1._","kind":"dev","methods":{},"stateVariables":{"_ADMIN_SLOT":{"details":"Storage slot with the admin of the contract. This is the keccak-256 hash of \"eip1967.proxy.admin\" subtracted by 1, and is validated in the constructor."},"_BEACON_SLOT":{"details":"The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy. This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor."},"_IMPLEMENTATION_SLOT":{"details":"Storage slot with the address of the current implementation. This is the keccak-256 hash of \"eip1967.proxy.implementation\" subtracted by 1, and is validated in the constructor."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"}],\"devdoc\":{\"details\":\"This abstract contract provides getters and event emitting update functions for https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots. _Available since v4.1._\",\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"_ADMIN_SLOT\":{\"details\":\"Storage slot with the admin of the contract. This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is validated in the constructor.\"},\"_BEACON_SLOT\":{\"details\":\"The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy. This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\"},\"_IMPLEMENTATION_SLOT\":{\"details\":\"Storage slot with the address of the current implementation. This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is validated in the constructor.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol\":\"ERC1967Upgrade\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/IERC1967.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (interfaces/IERC1967.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\\n *\\n * _Available since v4.8.3._\\n */\\ninterface IERC1967 {\\n /**\\n * @dev Emitted when the implementation is upgraded.\\n */\\n event Upgraded(address indexed implementation);\\n\\n /**\\n * @dev Emitted when the admin account has changed.\\n */\\n event AdminChanged(address previousAdmin, address newAdmin);\\n\\n /**\\n * @dev Emitted when the beacon is changed.\\n */\\n event BeaconUpgraded(address indexed beacon);\\n}\\n\",\"keccak256\":\"0x3cbef5ebc24b415252e2f8c0c9254555d30d9f085603b4b80d9b5ed20ab87e90\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822Proxiable {\\n /**\\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n * address.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy.\\n */\\n function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../beacon/IBeacon.sol\\\";\\nimport \\\"../../interfaces/IERC1967.sol\\\";\\nimport \\\"../../interfaces/draft-IERC1822.sol\\\";\\nimport \\\"../../utils/Address.sol\\\";\\nimport \\\"../../utils/StorageSlot.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n */\\nabstract contract ERC1967Upgrade is IERC1967 {\\n // This is the keccak-256 hash of \\\"eip1967.proxy.rollback\\\" subtracted by 1\\n bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n /**\\n * @dev Storage slot with the address of the current implementation.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _getImplementation() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 implementation slot.\\n */\\n function _setImplementation(address newImplementation) private {\\n require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n }\\n\\n /**\\n * @dev Perform implementation upgrade\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeTo(address newImplementation) internal {\\n _setImplementation(newImplementation);\\n emit Upgraded(newImplementation);\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCall(address newImplementation, bytes memory data, bool forceCall) internal {\\n _upgradeTo(newImplementation);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(newImplementation, data);\\n }\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCallUUPS(address newImplementation, bytes memory data, bool forceCall) internal {\\n // Upgrades from old implementations will perform a rollback test. This test requires the new\\n // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n // this special case will break upgrade paths from old UUPS implementation to new ones.\\n if (StorageSlot.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n _setImplementation(newImplementation);\\n } else {\\n try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n require(slot == _IMPLEMENTATION_SLOT, \\\"ERC1967Upgrade: unsupported proxiableUUID\\\");\\n } catch {\\n revert(\\\"ERC1967Upgrade: new implementation is not UUPS\\\");\\n }\\n _upgradeToAndCall(newImplementation, data, forceCall);\\n }\\n }\\n\\n /**\\n * @dev Storage slot with the admin of the contract.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _getAdmin() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_ADMIN_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 admin slot.\\n */\\n function _setAdmin(address newAdmin) private {\\n require(newAdmin != address(0), \\\"ERC1967: new admin is the zero address\\\");\\n StorageSlot.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n */\\n function _changeAdmin(address newAdmin) internal {\\n emit AdminChanged(_getAdmin(), newAdmin);\\n _setAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\\n */\\n bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n /**\\n * @dev Returns the current beacon.\\n */\\n function _getBeacon() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_BEACON_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new beacon in the EIP1967 beacon slot.\\n */\\n function _setBeacon(address newBeacon) private {\\n require(Address.isContract(newBeacon), \\\"ERC1967: new beacon is not a contract\\\");\\n require(\\n Address.isContract(IBeacon(newBeacon).implementation()),\\n \\\"ERC1967: beacon implementation is not a contract\\\"\\n );\\n StorageSlot.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n }\\n\\n /**\\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n *\\n * Emits a {BeaconUpgraded} event.\\n */\\n function _upgradeBeaconToAndCall(address newBeacon, bytes memory data, bool forceCall) internal {\\n _setBeacon(newBeacon);\\n emit BeaconUpgraded(newBeacon);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x3b21ae06bf5957f73fa16754b0669c77b7abd8ba6c072d35c3281d446fdb86c2\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeacon {\\n /**\\n * @dev Must return an address that can be used as a delegate call target.\\n *\\n * {BeaconProxy} will check that this address is a contract.\\n */\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/StorageSlot.sol)\\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```solidity\\n * contract ERC1967 {\\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n * function _getImplementation() internal view returns (address) {\\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n * }\\n *\\n * function _setImplementation(address newImplementation) internal {\\n * require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n * }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._\\n * _Available since v4.9 for `string`, `bytes`._\\n */\\nlibrary StorageSlot {\\n struct AddressSlot {\\n address value;\\n }\\n\\n struct BooleanSlot {\\n bool value;\\n }\\n\\n struct Bytes32Slot {\\n bytes32 value;\\n }\\n\\n struct Uint256Slot {\\n uint256 value;\\n }\\n\\n struct StringSlot {\\n string value;\\n }\\n\\n struct BytesSlot {\\n bytes value;\\n }\\n\\n /**\\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n */\\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n */\\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n */\\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n */\\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` with member `value` located at `slot`.\\n */\\n function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\\n */\\n function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` with member `value` located at `slot`.\\n */\\n function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\\n */\\n function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n}\\n\",\"keccak256\":\"0xf09e68aa0dc6722a25bc46490e8d48ed864466d17313b8a0b254c36b54e49899\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/proxy/Proxy.sol":{"Proxy":{"abi":[{"stateMutability":"payable","type":"fallback"},{"stateMutability":"payable","type":"receive"}],"devdoc":{"details":"This abstract contract provides a fallback function that delegates all calls to another contract using the EVM instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to be specified by overriding the virtual {_implementation} function. Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a different contract through the {_delegate} function. The success and return data of the delegated call will be returned back to the caller of the proxy.","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"details\":\"This abstract contract provides a fallback function that delegates all calls to another contract using the EVM instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to be specified by overriding the virtual {_implementation} function. Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a different contract through the {_delegate} function. The success and return data of the delegated call will be returned back to the caller of the proxy.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/proxy/Proxy.sol\":\"Proxy\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/proxy/Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (proxy/Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\\n * be specified by overriding the virtual {_implementation} function.\\n *\\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\\n * different contract through the {_delegate} function.\\n *\\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\\n */\\nabstract contract Proxy {\\n /**\\n * @dev Delegates the current call to `implementation`.\\n *\\n * This function does not return to its internal call site, it will return directly to the external caller.\\n */\\n function _delegate(address implementation) internal virtual {\\n assembly {\\n // Copy msg.data. We take full control of memory in this inline assembly\\n // block because it will not return to Solidity code. We overwrite the\\n // Solidity scratch pad at memory position 0.\\n calldatacopy(0, 0, calldatasize())\\n\\n // Call the implementation.\\n // out and outsize are 0 because we don't know the size yet.\\n let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)\\n\\n // Copy the returned data.\\n returndatacopy(0, 0, returndatasize())\\n\\n switch result\\n // delegatecall returns 0 on error.\\n case 0 {\\n revert(0, returndatasize())\\n }\\n default {\\n return(0, returndatasize())\\n }\\n }\\n }\\n\\n /**\\n * @dev This is a virtual function that should be overridden so it returns the address to which the fallback function\\n * and {_fallback} should delegate.\\n */\\n function _implementation() internal view virtual returns (address);\\n\\n /**\\n * @dev Delegates the current call to the address returned by `_implementation()`.\\n *\\n * This function does not return to its internal call site, it will return directly to the external caller.\\n */\\n function _fallback() internal virtual {\\n _beforeFallback();\\n _delegate(_implementation());\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\\n * function in the contract matches the call data.\\n */\\n fallback() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data\\n * is empty.\\n */\\n receive() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`\\n * call, or as part of the Solidity `fallback` or `receive` functions.\\n *\\n * If overridden should call `super._beforeFallback()`.\\n */\\n function _beforeFallback() internal virtual {}\\n}\\n\",\"keccak256\":\"0xc130fe33f1b2132158531a87734153293f6d07bc263ff4ac90e85da9c82c0e27\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/proxy/beacon/IBeacon.sol":{"IBeacon":{"abi":[{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"This is the interface that {BeaconProxy} expects of its beacon.","kind":"dev","methods":{"implementation()":{"details":"Must return an address that can be used as a delegate call target. {BeaconProxy} will check that this address is a contract."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"implementation()":"5c60da1b"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"This is the interface that {BeaconProxy} expects of its beacon.\",\"kind\":\"dev\",\"methods\":{\"implementation()\":{\"details\":\"Must return an address that can be used as a delegate call target. {BeaconProxy} will check that this address is a contract.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":\"IBeacon\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeacon {\\n /**\\n * @dev Must return an address that can be used as a delegate call target.\\n *\\n * {BeaconProxy} will check that this address is a contract.\\n */\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/token/ERC1155/ERC1155.sol":{"ERC1155":{"abi":[{"inputs":[{"internalType":"string","name":"uri_","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"TransferSingle","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"value","type":"string"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"URI","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeBatchTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"Implementation of the basic standard multi-token. See https://eips.ethereum.org/EIPS/eip-1155 Originally based on code by Enjin: https://github.com/enjin/erc-1155 _Available since v3.1._","kind":"dev","methods":{"balanceOf(address,uint256)":{"details":"See {IERC1155-balanceOf}. Requirements: - `account` cannot be the zero address."},"balanceOfBatch(address[],uint256[])":{"details":"See {IERC1155-balanceOfBatch}. Requirements: - `accounts` and `ids` must have the same length."},"constructor":{"details":"See {_setURI}."},"isApprovedForAll(address,address)":{"details":"See {IERC1155-isApprovedForAll}."},"safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)":{"details":"See {IERC1155-safeBatchTransferFrom}."},"safeTransferFrom(address,address,uint256,uint256,bytes)":{"details":"See {IERC1155-safeTransferFrom}."},"setApprovalForAll(address,bool)":{"details":"See {IERC1155-setApprovalForAll}."},"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."},"uri(uint256)":{"details":"See {IERC1155MetadataURI-uri}. This implementation returns the same URI for *all* token types. It relies on the token type ID substitution mechanism https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP]. Clients calling this function must replace the `\\{id\\}` substring with the actual token type ID."}},"version":1},"evm":{"bytecode":{"functionDebugData":{"@_5800":{"entryPoint":null,"id":5800,"parameterSlots":1,"returnSlots":0},"@_setURI_6311":{"entryPoint":70,"id":6311,"parameterSlots":1,"returnSlots":0},"abi_decode_tuple_t_string_memory_ptr_fromMemory":{"entryPoint":110,"id":null,"parameterSlots":2,"returnSlots":1},"array_dataslot_string_storage":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"clean_up_bytearray_end_slots_string_storage":{"entryPoint":383,"id":null,"parameterSlots":3,"returnSlots":0},"copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage":{"entryPoint":466,"id":null,"parameterSlots":2,"returnSlots":0},"extract_byte_array_length":{"entryPoint":323,"id":null,"parameterSlots":1,"returnSlots":1},"extract_used_part_and_set_length_of_short_byte_array":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"panic_error_0x41":{"entryPoint":88,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:3779:92","statements":[{"nodeType":"YulBlock","src":"6:3:92","statements":[]},{"body":{"nodeType":"YulBlock","src":"46:95:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"63:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"70:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"75:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"66:3:92"},"nodeType":"YulFunctionCall","src":"66:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"56:6:92"},"nodeType":"YulFunctionCall","src":"56:31:92"},"nodeType":"YulExpressionStatement","src":"56:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"103:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"106:4:92","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"96:6:92"},"nodeType":"YulFunctionCall","src":"96:15:92"},"nodeType":"YulExpressionStatement","src":"96:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"127:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"130:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"120:6:92"},"nodeType":"YulFunctionCall","src":"120:15:92"},"nodeType":"YulExpressionStatement","src":"120:15:92"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"14:127:92"},{"body":{"nodeType":"YulBlock","src":"237:951:92","statements":[{"nodeType":"YulVariableDeclaration","src":"247:12:92","value":{"kind":"number","nodeType":"YulLiteral","src":"257:2:92","type":"","value":"32"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"251:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"304:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"313:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"316:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"306:6:92"},"nodeType":"YulFunctionCall","src":"306:12:92"},"nodeType":"YulExpressionStatement","src":"306:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"279:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"288:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"275:3:92"},"nodeType":"YulFunctionCall","src":"275:23:92"},{"name":"_1","nodeType":"YulIdentifier","src":"300:2:92"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"271:3:92"},"nodeType":"YulFunctionCall","src":"271:32:92"},"nodeType":"YulIf","src":"268:52:92"},{"nodeType":"YulVariableDeclaration","src":"329:30:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"349:9:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"343:5:92"},"nodeType":"YulFunctionCall","src":"343:16:92"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"333:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"368:28:92","value":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"386:2:92","type":"","value":"64"},{"kind":"number","nodeType":"YulLiteral","src":"390:1:92","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"382:3:92"},"nodeType":"YulFunctionCall","src":"382:10:92"},{"kind":"number","nodeType":"YulLiteral","src":"394:1:92","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"378:3:92"},"nodeType":"YulFunctionCall","src":"378:18:92"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"372:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"423:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"432:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"435:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"425:6:92"},"nodeType":"YulFunctionCall","src":"425:12:92"},"nodeType":"YulExpressionStatement","src":"425:12:92"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"411:6:92"},{"name":"_2","nodeType":"YulIdentifier","src":"419:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"408:2:92"},"nodeType":"YulFunctionCall","src":"408:14:92"},"nodeType":"YulIf","src":"405:34:92"},{"nodeType":"YulVariableDeclaration","src":"448:32:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"462:9:92"},{"name":"offset","nodeType":"YulIdentifier","src":"473:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"458:3:92"},"nodeType":"YulFunctionCall","src":"458:22:92"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"452:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"528:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"537:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"540:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"530:6:92"},"nodeType":"YulFunctionCall","src":"530:12:92"},"nodeType":"YulExpressionStatement","src":"530:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"507:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"511:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"503:3:92"},"nodeType":"YulFunctionCall","src":"503:13:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"518:7:92"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"499:3:92"},"nodeType":"YulFunctionCall","src":"499:27:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"492:6:92"},"nodeType":"YulFunctionCall","src":"492:35:92"},"nodeType":"YulIf","src":"489:55:92"},{"nodeType":"YulVariableDeclaration","src":"553:19:92","value":{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"569:2:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"563:5:92"},"nodeType":"YulFunctionCall","src":"563:9:92"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"557:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"595:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"597:16:92"},"nodeType":"YulFunctionCall","src":"597:18:92"},"nodeType":"YulExpressionStatement","src":"597:18:92"}]},"condition":{"arguments":[{"name":"_4","nodeType":"YulIdentifier","src":"587:2:92"},{"name":"_2","nodeType":"YulIdentifier","src":"591:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"584:2:92"},"nodeType":"YulFunctionCall","src":"584:10:92"},"nodeType":"YulIf","src":"581:36:92"},{"nodeType":"YulVariableDeclaration","src":"626:17:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"640:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"636:3:92"},"nodeType":"YulFunctionCall","src":"636:7:92"},"variables":[{"name":"_5","nodeType":"YulTypedName","src":"630:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"652:23:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"672:2:92","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"666:5:92"},"nodeType":"YulFunctionCall","src":"666:9:92"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"656:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"684:71:92","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"706:6:92"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"_4","nodeType":"YulIdentifier","src":"730:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"734:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"726:3:92"},"nodeType":"YulFunctionCall","src":"726:13:92"},{"name":"_5","nodeType":"YulIdentifier","src":"741:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"722:3:92"},"nodeType":"YulFunctionCall","src":"722:22:92"},{"kind":"number","nodeType":"YulLiteral","src":"746:2:92","type":"","value":"63"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"718:3:92"},"nodeType":"YulFunctionCall","src":"718:31:92"},{"name":"_5","nodeType":"YulIdentifier","src":"751:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"714:3:92"},"nodeType":"YulFunctionCall","src":"714:40:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"702:3:92"},"nodeType":"YulFunctionCall","src":"702:53:92"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"688:10:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"814:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"816:16:92"},"nodeType":"YulFunctionCall","src":"816:18:92"},"nodeType":"YulExpressionStatement","src":"816:18:92"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"773:10:92"},{"name":"_2","nodeType":"YulIdentifier","src":"785:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"770:2:92"},"nodeType":"YulFunctionCall","src":"770:18:92"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"793:10:92"},{"name":"memPtr","nodeType":"YulIdentifier","src":"805:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"790:2:92"},"nodeType":"YulFunctionCall","src":"790:22:92"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"767:2:92"},"nodeType":"YulFunctionCall","src":"767:46:92"},"nodeType":"YulIf","src":"764:72:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"852:2:92","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"856:10:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"845:6:92"},"nodeType":"YulFunctionCall","src":"845:22:92"},"nodeType":"YulExpressionStatement","src":"845:22:92"},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"883:6:92"},{"name":"_4","nodeType":"YulIdentifier","src":"891:2:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"876:6:92"},"nodeType":"YulFunctionCall","src":"876:18:92"},"nodeType":"YulExpressionStatement","src":"876:18:92"},{"body":{"nodeType":"YulBlock","src":"940:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"949:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"952:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"942:6:92"},"nodeType":"YulFunctionCall","src":"942:12:92"},"nodeType":"YulExpressionStatement","src":"942:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"917:2:92"},{"name":"_4","nodeType":"YulIdentifier","src":"921:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"913:3:92"},"nodeType":"YulFunctionCall","src":"913:11:92"},{"name":"_1","nodeType":"YulIdentifier","src":"926:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"909:3:92"},"nodeType":"YulFunctionCall","src":"909:20:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"931:7:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"906:2:92"},"nodeType":"YulFunctionCall","src":"906:33:92"},"nodeType":"YulIf","src":"903:53:92"},{"nodeType":"YulVariableDeclaration","src":"965:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"974:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"969:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"1030:83:92","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1059:6:92"},{"name":"i","nodeType":"YulIdentifier","src":"1067:1:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1055:3:92"},"nodeType":"YulFunctionCall","src":"1055:14:92"},{"name":"_1","nodeType":"YulIdentifier","src":"1071:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1051:3:92"},"nodeType":"YulFunctionCall","src":"1051:23:92"},{"arguments":[{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"1090:2:92"},{"name":"i","nodeType":"YulIdentifier","src":"1094:1:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1086:3:92"},"nodeType":"YulFunctionCall","src":"1086:10:92"},{"name":"_1","nodeType":"YulIdentifier","src":"1098:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1082:3:92"},"nodeType":"YulFunctionCall","src":"1082:19:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1076:5:92"},"nodeType":"YulFunctionCall","src":"1076:26:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1044:6:92"},"nodeType":"YulFunctionCall","src":"1044:59:92"},"nodeType":"YulExpressionStatement","src":"1044:59:92"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"995:1:92"},{"name":"_4","nodeType":"YulIdentifier","src":"998:2:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"992:2:92"},"nodeType":"YulFunctionCall","src":"992:9:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"1002:19:92","statements":[{"nodeType":"YulAssignment","src":"1004:15:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"1013:1:92"},{"name":"_1","nodeType":"YulIdentifier","src":"1016:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1009:3:92"},"nodeType":"YulFunctionCall","src":"1009:10:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"1004:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"988:3:92","statements":[]},"src":"984:129:92"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1137:6:92"},{"name":"_4","nodeType":"YulIdentifier","src":"1145:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1133:3:92"},"nodeType":"YulFunctionCall","src":"1133:15:92"},{"name":"_1","nodeType":"YulIdentifier","src":"1150:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1129:3:92"},"nodeType":"YulFunctionCall","src":"1129:24:92"},{"kind":"number","nodeType":"YulLiteral","src":"1155:1:92","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1122:6:92"},"nodeType":"YulFunctionCall","src":"1122:35:92"},"nodeType":"YulExpressionStatement","src":"1122:35:92"},{"nodeType":"YulAssignment","src":"1166:16:92","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"1176:6:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1166:6:92"}]}]},"name":"abi_decode_tuple_t_string_memory_ptr_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"203:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"214:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"226:6:92","type":""}],"src":"146:1042:92"},{"body":{"nodeType":"YulBlock","src":"1248:325:92","statements":[{"nodeType":"YulAssignment","src":"1258:22:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1272:1:92","type":"","value":"1"},{"name":"data","nodeType":"YulIdentifier","src":"1275:4:92"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"1268:3:92"},"nodeType":"YulFunctionCall","src":"1268:12:92"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"1258:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"1289:38:92","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"1319:4:92"},{"kind":"number","nodeType":"YulLiteral","src":"1325:1:92","type":"","value":"1"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1315:3:92"},"nodeType":"YulFunctionCall","src":"1315:12:92"},"variables":[{"name":"outOfPlaceEncoding","nodeType":"YulTypedName","src":"1293:18:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"1366:31:92","statements":[{"nodeType":"YulAssignment","src":"1368:27:92","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"1382:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"1390:4:92","type":"","value":"0x7f"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1378:3:92"},"nodeType":"YulFunctionCall","src":"1378:17:92"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"1368:6:92"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"1346:18:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1339:6:92"},"nodeType":"YulFunctionCall","src":"1339:26:92"},"nodeType":"YulIf","src":"1336:61:92"},{"body":{"nodeType":"YulBlock","src":"1456:111:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1477:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1484:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"1489:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1480:3:92"},"nodeType":"YulFunctionCall","src":"1480:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1470:6:92"},"nodeType":"YulFunctionCall","src":"1470:31:92"},"nodeType":"YulExpressionStatement","src":"1470:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1521:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"1524:4:92","type":"","value":"0x22"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1514:6:92"},"nodeType":"YulFunctionCall","src":"1514:15:92"},"nodeType":"YulExpressionStatement","src":"1514:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1549:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1552:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1542:6:92"},"nodeType":"YulFunctionCall","src":"1542:15:92"},"nodeType":"YulExpressionStatement","src":"1542:15:92"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"1412:18:92"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"1435:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"1443:2:92","type":"","value":"32"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"1432:2:92"},"nodeType":"YulFunctionCall","src":"1432:14:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1409:2:92"},"nodeType":"YulFunctionCall","src":"1409:38:92"},"nodeType":"YulIf","src":"1406:161:92"}]},"name":"extract_byte_array_length","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"1228:4:92","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"1237:6:92","type":""}],"src":"1193:380:92"},{"body":{"nodeType":"YulBlock","src":"1634:65:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1651:1:92","type":"","value":"0"},{"name":"ptr","nodeType":"YulIdentifier","src":"1654:3:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1644:6:92"},"nodeType":"YulFunctionCall","src":"1644:14:92"},"nodeType":"YulExpressionStatement","src":"1644:14:92"},{"nodeType":"YulAssignment","src":"1667:26:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1685:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1688:4:92","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nodeType":"YulIdentifier","src":"1675:9:92"},"nodeType":"YulFunctionCall","src":"1675:18:92"},"variableNames":[{"name":"data","nodeType":"YulIdentifier","src":"1667:4:92"}]}]},"name":"array_dataslot_string_storage","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nodeType":"YulTypedName","src":"1617:3:92","type":""}],"returnVariables":[{"name":"data","nodeType":"YulTypedName","src":"1625:4:92","type":""}],"src":"1578:121:92"},{"body":{"nodeType":"YulBlock","src":"1785:464:92","statements":[{"body":{"nodeType":"YulBlock","src":"1818:425:92","statements":[{"nodeType":"YulVariableDeclaration","src":"1832:11:92","value":{"kind":"number","nodeType":"YulLiteral","src":"1842:1:92","type":"","value":"0"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"1836:2:92","type":""}]},{"expression":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"1863:2:92"},{"name":"array","nodeType":"YulIdentifier","src":"1867:5:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1856:6:92"},"nodeType":"YulFunctionCall","src":"1856:17:92"},"nodeType":"YulExpressionStatement","src":"1856:17:92"},{"nodeType":"YulVariableDeclaration","src":"1886:31:92","value":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"1908:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"1912:4:92","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nodeType":"YulIdentifier","src":"1898:9:92"},"nodeType":"YulFunctionCall","src":"1898:19:92"},"variables":[{"name":"data","nodeType":"YulTypedName","src":"1890:4:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"1930:57:92","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"1953:4:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1963:1:92","type":"","value":"5"},{"arguments":[{"name":"startIndex","nodeType":"YulIdentifier","src":"1970:10:92"},{"kind":"number","nodeType":"YulLiteral","src":"1982:2:92","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1966:3:92"},"nodeType":"YulFunctionCall","src":"1966:19:92"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"1959:3:92"},"nodeType":"YulFunctionCall","src":"1959:27:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1949:3:92"},"nodeType":"YulFunctionCall","src":"1949:38:92"},"variables":[{"name":"deleteStart","nodeType":"YulTypedName","src":"1934:11:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"2024:23:92","statements":[{"nodeType":"YulAssignment","src":"2026:19:92","value":{"name":"data","nodeType":"YulIdentifier","src":"2041:4:92"},"variableNames":[{"name":"deleteStart","nodeType":"YulIdentifier","src":"2026:11:92"}]}]},"condition":{"arguments":[{"name":"startIndex","nodeType":"YulIdentifier","src":"2006:10:92"},{"kind":"number","nodeType":"YulLiteral","src":"2018:4:92","type":"","value":"0x20"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2003:2:92"},"nodeType":"YulFunctionCall","src":"2003:20:92"},"nodeType":"YulIf","src":"2000:47:92"},{"nodeType":"YulVariableDeclaration","src":"2060:41:92","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"2074:4:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2084:1:92","type":"","value":"5"},{"arguments":[{"name":"len","nodeType":"YulIdentifier","src":"2091:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"2096:2:92","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2087:3:92"},"nodeType":"YulFunctionCall","src":"2087:12:92"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"2080:3:92"},"nodeType":"YulFunctionCall","src":"2080:20:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2070:3:92"},"nodeType":"YulFunctionCall","src":"2070:31:92"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"2064:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2114:24:92","value":{"name":"deleteStart","nodeType":"YulIdentifier","src":"2127:11:92"},"variables":[{"name":"start","nodeType":"YulTypedName","src":"2118:5:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"2212:21:92","statements":[{"expression":{"arguments":[{"name":"start","nodeType":"YulIdentifier","src":"2221:5:92"},{"name":"_1","nodeType":"YulIdentifier","src":"2228:2:92"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"2214:6:92"},"nodeType":"YulFunctionCall","src":"2214:17:92"},"nodeType":"YulExpressionStatement","src":"2214:17:92"}]},"condition":{"arguments":[{"name":"start","nodeType":"YulIdentifier","src":"2162:5:92"},{"name":"_2","nodeType":"YulIdentifier","src":"2169:2:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2159:2:92"},"nodeType":"YulFunctionCall","src":"2159:13:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"2173:26:92","statements":[{"nodeType":"YulAssignment","src":"2175:22:92","value":{"arguments":[{"name":"start","nodeType":"YulIdentifier","src":"2188:5:92"},{"kind":"number","nodeType":"YulLiteral","src":"2195:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2184:3:92"},"nodeType":"YulFunctionCall","src":"2184:13:92"},"variableNames":[{"name":"start","nodeType":"YulIdentifier","src":"2175:5:92"}]}]},"pre":{"nodeType":"YulBlock","src":"2155:3:92","statements":[]},"src":"2151:82:92"}]},"condition":{"arguments":[{"name":"len","nodeType":"YulIdentifier","src":"1801:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"1806:2:92","type":"","value":"31"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1798:2:92"},"nodeType":"YulFunctionCall","src":"1798:11:92"},"nodeType":"YulIf","src":"1795:448:92"}]},"name":"clean_up_bytearray_end_slots_string_storage","nodeType":"YulFunctionDefinition","parameters":[{"name":"array","nodeType":"YulTypedName","src":"1757:5:92","type":""},{"name":"len","nodeType":"YulTypedName","src":"1764:3:92","type":""},{"name":"startIndex","nodeType":"YulTypedName","src":"1769:10:92","type":""}],"src":"1704:545:92"},{"body":{"nodeType":"YulBlock","src":"2339:81:92","statements":[{"nodeType":"YulAssignment","src":"2349:65:92","value":{"arguments":[{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"2364:4:92"},{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2382:1:92","type":"","value":"3"},{"name":"len","nodeType":"YulIdentifier","src":"2385:3:92"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2378:3:92"},"nodeType":"YulFunctionCall","src":"2378:11:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2395:1:92","type":"","value":"0"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"2391:3:92"},"nodeType":"YulFunctionCall","src":"2391:6:92"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"2374:3:92"},"nodeType":"YulFunctionCall","src":"2374:24:92"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"2370:3:92"},"nodeType":"YulFunctionCall","src":"2370:29:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2360:3:92"},"nodeType":"YulFunctionCall","src":"2360:40:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2406:1:92","type":"","value":"1"},{"name":"len","nodeType":"YulIdentifier","src":"2409:3:92"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2402:3:92"},"nodeType":"YulFunctionCall","src":"2402:11:92"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"2357:2:92"},"nodeType":"YulFunctionCall","src":"2357:57:92"},"variableNames":[{"name":"used","nodeType":"YulIdentifier","src":"2349:4:92"}]}]},"name":"extract_used_part_and_set_length_of_short_byte_array","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"2316:4:92","type":""},{"name":"len","nodeType":"YulTypedName","src":"2322:3:92","type":""}],"returnVariables":[{"name":"used","nodeType":"YulTypedName","src":"2330:4:92","type":""}],"src":"2254:166:92"},{"body":{"nodeType":"YulBlock","src":"2521:1256:92","statements":[{"nodeType":"YulVariableDeclaration","src":"2531:24:92","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"2551:3:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2545:5:92"},"nodeType":"YulFunctionCall","src":"2545:10:92"},"variables":[{"name":"newLen","nodeType":"YulTypedName","src":"2535:6:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"2598:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"2600:16:92"},"nodeType":"YulFunctionCall","src":"2600:18:92"},"nodeType":"YulExpressionStatement","src":"2600:18:92"}]},"condition":{"arguments":[{"name":"newLen","nodeType":"YulIdentifier","src":"2570:6:92"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2586:2:92","type":"","value":"64"},{"kind":"number","nodeType":"YulLiteral","src":"2590:1:92","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2582:3:92"},"nodeType":"YulFunctionCall","src":"2582:10:92"},{"kind":"number","nodeType":"YulLiteral","src":"2594:1:92","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2578:3:92"},"nodeType":"YulFunctionCall","src":"2578:18:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2567:2:92"},"nodeType":"YulFunctionCall","src":"2567:30:92"},"nodeType":"YulIf","src":"2564:56:92"},{"expression":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"2673:4:92"},{"arguments":[{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"2711:4:92"}],"functionName":{"name":"sload","nodeType":"YulIdentifier","src":"2705:5:92"},"nodeType":"YulFunctionCall","src":"2705:11:92"}],"functionName":{"name":"extract_byte_array_length","nodeType":"YulIdentifier","src":"2679:25:92"},"nodeType":"YulFunctionCall","src":"2679:38:92"},{"name":"newLen","nodeType":"YulIdentifier","src":"2719:6:92"}],"functionName":{"name":"clean_up_bytearray_end_slots_string_storage","nodeType":"YulIdentifier","src":"2629:43:92"},"nodeType":"YulFunctionCall","src":"2629:97:92"},"nodeType":"YulExpressionStatement","src":"2629:97:92"},{"nodeType":"YulVariableDeclaration","src":"2735:18:92","value":{"kind":"number","nodeType":"YulLiteral","src":"2752:1:92","type":"","value":"0"},"variables":[{"name":"srcOffset","nodeType":"YulTypedName","src":"2739:9:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2762:23:92","value":{"kind":"number","nodeType":"YulLiteral","src":"2781:4:92","type":"","value":"0x20"},"variables":[{"name":"srcOffset_1","nodeType":"YulTypedName","src":"2766:11:92","type":""}]},{"nodeType":"YulAssignment","src":"2794:24:92","value":{"name":"srcOffset_1","nodeType":"YulIdentifier","src":"2807:11:92"},"variableNames":[{"name":"srcOffset","nodeType":"YulIdentifier","src":"2794:9:92"}]},{"cases":[{"body":{"nodeType":"YulBlock","src":"2864:656:92","statements":[{"nodeType":"YulVariableDeclaration","src":"2878:35:92","value":{"arguments":[{"name":"newLen","nodeType":"YulIdentifier","src":"2897:6:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2909:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"2905:3:92"},"nodeType":"YulFunctionCall","src":"2905:7:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2893:3:92"},"nodeType":"YulFunctionCall","src":"2893:20:92"},"variables":[{"name":"loopEnd","nodeType":"YulTypedName","src":"2882:7:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2926:49:92","value":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"2970:4:92"}],"functionName":{"name":"array_dataslot_string_storage","nodeType":"YulIdentifier","src":"2940:29:92"},"nodeType":"YulFunctionCall","src":"2940:35:92"},"variables":[{"name":"dstPtr","nodeType":"YulTypedName","src":"2930:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2988:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"2997:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"2992:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"3075:172:92","statements":[{"expression":{"arguments":[{"name":"dstPtr","nodeType":"YulIdentifier","src":"3100:6:92"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"3118:3:92"},{"name":"srcOffset","nodeType":"YulIdentifier","src":"3123:9:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3114:3:92"},"nodeType":"YulFunctionCall","src":"3114:19:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3108:5:92"},"nodeType":"YulFunctionCall","src":"3108:26:92"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"3093:6:92"},"nodeType":"YulFunctionCall","src":"3093:42:92"},"nodeType":"YulExpressionStatement","src":"3093:42:92"},{"nodeType":"YulAssignment","src":"3152:24:92","value":{"arguments":[{"name":"dstPtr","nodeType":"YulIdentifier","src":"3166:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"3174:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3162:3:92"},"nodeType":"YulFunctionCall","src":"3162:14:92"},"variableNames":[{"name":"dstPtr","nodeType":"YulIdentifier","src":"3152:6:92"}]},{"nodeType":"YulAssignment","src":"3193:40:92","value":{"arguments":[{"name":"srcOffset","nodeType":"YulIdentifier","src":"3210:9:92"},{"name":"srcOffset_1","nodeType":"YulIdentifier","src":"3221:11:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3206:3:92"},"nodeType":"YulFunctionCall","src":"3206:27:92"},"variableNames":[{"name":"srcOffset","nodeType":"YulIdentifier","src":"3193:9:92"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3022:1:92"},{"name":"loopEnd","nodeType":"YulIdentifier","src":"3025:7:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"3019:2:92"},"nodeType":"YulFunctionCall","src":"3019:14:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"3034:28:92","statements":[{"nodeType":"YulAssignment","src":"3036:24:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3045:1:92"},{"name":"srcOffset_1","nodeType":"YulIdentifier","src":"3048:11:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3041:3:92"},"nodeType":"YulFunctionCall","src":"3041:19:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"3036:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"3015:3:92","statements":[]},"src":"3011:236:92"},{"body":{"nodeType":"YulBlock","src":"3295:166:92","statements":[{"nodeType":"YulVariableDeclaration","src":"3313:43:92","value":{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"3340:3:92"},{"name":"srcOffset","nodeType":"YulIdentifier","src":"3345:9:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3336:3:92"},"nodeType":"YulFunctionCall","src":"3336:19:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3330:5:92"},"nodeType":"YulFunctionCall","src":"3330:26:92"},"variables":[{"name":"lastValue","nodeType":"YulTypedName","src":"3317:9:92","type":""}]},{"expression":{"arguments":[{"name":"dstPtr","nodeType":"YulIdentifier","src":"3380:6:92"},{"arguments":[{"name":"lastValue","nodeType":"YulIdentifier","src":"3392:9:92"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3419:1:92","type":"","value":"3"},{"name":"newLen","nodeType":"YulIdentifier","src":"3422:6:92"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"3415:3:92"},"nodeType":"YulFunctionCall","src":"3415:14:92"},{"kind":"number","nodeType":"YulLiteral","src":"3431:3:92","type":"","value":"248"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3411:3:92"},"nodeType":"YulFunctionCall","src":"3411:24:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3441:1:92","type":"","value":"0"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"3437:3:92"},"nodeType":"YulFunctionCall","src":"3437:6:92"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"3407:3:92"},"nodeType":"YulFunctionCall","src":"3407:37:92"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"3403:3:92"},"nodeType":"YulFunctionCall","src":"3403:42:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3388:3:92"},"nodeType":"YulFunctionCall","src":"3388:58:92"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"3373:6:92"},"nodeType":"YulFunctionCall","src":"3373:74:92"},"nodeType":"YulExpressionStatement","src":"3373:74:92"}]},"condition":{"arguments":[{"name":"loopEnd","nodeType":"YulIdentifier","src":"3266:7:92"},{"name":"newLen","nodeType":"YulIdentifier","src":"3275:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"3263:2:92"},"nodeType":"YulFunctionCall","src":"3263:19:92"},"nodeType":"YulIf","src":"3260:201:92"},{"expression":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"3481:4:92"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3495:1:92","type":"","value":"1"},{"name":"newLen","nodeType":"YulIdentifier","src":"3498:6:92"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"3491:3:92"},"nodeType":"YulFunctionCall","src":"3491:14:92"},{"kind":"number","nodeType":"YulLiteral","src":"3507:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3487:3:92"},"nodeType":"YulFunctionCall","src":"3487:22:92"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"3474:6:92"},"nodeType":"YulFunctionCall","src":"3474:36:92"},"nodeType":"YulExpressionStatement","src":"3474:36:92"}]},"nodeType":"YulCase","src":"2857:663:92","value":{"kind":"number","nodeType":"YulLiteral","src":"2862:1:92","type":"","value":"1"}},{"body":{"nodeType":"YulBlock","src":"3537:234:92","statements":[{"nodeType":"YulVariableDeclaration","src":"3551:14:92","value":{"kind":"number","nodeType":"YulLiteral","src":"3564:1:92","type":"","value":"0"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"3555:5:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"3600:67:92","statements":[{"nodeType":"YulAssignment","src":"3618:35:92","value":{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"3637:3:92"},{"name":"srcOffset","nodeType":"YulIdentifier","src":"3642:9:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3633:3:92"},"nodeType":"YulFunctionCall","src":"3633:19:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3627:5:92"},"nodeType":"YulFunctionCall","src":"3627:26:92"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"3618:5:92"}]}]},"condition":{"name":"newLen","nodeType":"YulIdentifier","src":"3581:6:92"},"nodeType":"YulIf","src":"3578:89:92"},{"expression":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"3687:4:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3746:5:92"},{"name":"newLen","nodeType":"YulIdentifier","src":"3753:6:92"}],"functionName":{"name":"extract_used_part_and_set_length_of_short_byte_array","nodeType":"YulIdentifier","src":"3693:52:92"},"nodeType":"YulFunctionCall","src":"3693:67:92"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"3680:6:92"},"nodeType":"YulFunctionCall","src":"3680:81:92"},"nodeType":"YulExpressionStatement","src":"3680:81:92"}]},"nodeType":"YulCase","src":"3529:242:92","value":"default"}],"expression":{"arguments":[{"name":"newLen","nodeType":"YulIdentifier","src":"2837:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"2845:2:92","type":"","value":"31"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2834:2:92"},"nodeType":"YulFunctionCall","src":"2834:14:92"},"nodeType":"YulSwitch","src":"2827:944:92"}]},"name":"copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage","nodeType":"YulFunctionDefinition","parameters":[{"name":"slot","nodeType":"YulTypedName","src":"2506:4:92","type":""},{"name":"src","nodeType":"YulTypedName","src":"2512:3:92","type":""}],"src":"2425:1352:92"}]},"contents":"{\n { }\n function panic_error_0x41()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function abi_decode_tuple_t_string_memory_ptr_fromMemory(headStart, dataEnd) -> value0\n {\n let _1 := 32\n if slt(sub(dataEnd, headStart), _1) { revert(0, 0) }\n let offset := mload(headStart)\n let _2 := sub(shl(64, 1), 1)\n if gt(offset, _2) { revert(0, 0) }\n let _3 := add(headStart, offset)\n if iszero(slt(add(_3, 0x1f), dataEnd)) { revert(0, 0) }\n let _4 := mload(_3)\n if gt(_4, _2) { panic_error_0x41() }\n let _5 := not(31)\n let memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(and(add(_4, 0x1f), _5), 63), _5))\n if or(gt(newFreePtr, _2), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n mstore(memPtr, _4)\n if gt(add(add(_3, _4), _1), dataEnd) { revert(0, 0) }\n let i := 0\n for { } lt(i, _4) { i := add(i, _1) }\n {\n mstore(add(add(memPtr, i), _1), mload(add(add(_3, i), _1)))\n }\n mstore(add(add(memPtr, _4), _1), 0)\n value0 := memPtr\n }\n function extract_byte_array_length(data) -> length\n {\n length := shr(1, data)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n if eq(outOfPlaceEncoding, lt(length, 32))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n }\n function array_dataslot_string_storage(ptr) -> data\n {\n mstore(0, ptr)\n data := keccak256(0, 0x20)\n }\n function clean_up_bytearray_end_slots_string_storage(array, len, startIndex)\n {\n if gt(len, 31)\n {\n let _1 := 0\n mstore(_1, array)\n let data := keccak256(_1, 0x20)\n let deleteStart := add(data, shr(5, add(startIndex, 31)))\n if lt(startIndex, 0x20) { deleteStart := data }\n let _2 := add(data, shr(5, add(len, 31)))\n let start := deleteStart\n for { } lt(start, _2) { start := add(start, 1) }\n { sstore(start, _1) }\n }\n }\n function extract_used_part_and_set_length_of_short_byte_array(data, len) -> used\n {\n used := or(and(data, not(shr(shl(3, len), not(0)))), shl(1, len))\n }\n function copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage(slot, src)\n {\n let newLen := mload(src)\n if gt(newLen, sub(shl(64, 1), 1)) { panic_error_0x41() }\n clean_up_bytearray_end_slots_string_storage(slot, extract_byte_array_length(sload(slot)), newLen)\n let srcOffset := 0\n let srcOffset_1 := 0x20\n srcOffset := srcOffset_1\n switch gt(newLen, 31)\n case 1 {\n let loopEnd := and(newLen, not(31))\n let dstPtr := array_dataslot_string_storage(slot)\n let i := 0\n for { } lt(i, loopEnd) { i := add(i, srcOffset_1) }\n {\n sstore(dstPtr, mload(add(src, srcOffset)))\n dstPtr := add(dstPtr, 1)\n srcOffset := add(srcOffset, srcOffset_1)\n }\n if lt(loopEnd, newLen)\n {\n let lastValue := mload(add(src, srcOffset))\n sstore(dstPtr, and(lastValue, not(shr(and(shl(3, newLen), 248), not(0)))))\n }\n sstore(slot, add(shl(1, newLen), 1))\n }\n default {\n let value := 0\n if newLen\n {\n value := mload(add(src, srcOffset))\n }\n sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, newLen))\n }\n }\n}","id":92,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60806040523480156200001157600080fd5b50604051620017463803806200174683398101604081905262000034916200006e565b6200003f8162000046565b506200029e565b6002620000548282620001d2565b5050565b634e487b7160e01b600052604160045260246000fd5b600060208083850312156200008257600080fd5b82516001600160401b03808211156200009a57600080fd5b818501915085601f830112620000af57600080fd5b815181811115620000c457620000c462000058565b604051601f8201601f19908116603f01168101908382118183101715620000ef57620000ef62000058565b8160405282815288868487010111156200010857600080fd5b600093505b828410156200012c57848401860151818501870152928501926200010d565b600086848301015280965050505050505092915050565b600181811c908216806200015857607f821691505b6020821081036200017957634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620001cd57600081815260208120601f850160051c81016020861015620001a85750805b601f850160051c820191505b81811015620001c957828155600101620001b4565b5050505b505050565b81516001600160401b03811115620001ee57620001ee62000058565b6200020681620001ff845462000143565b846200017f565b602080601f8311600181146200023e5760008415620002255750858301515b600019600386901b1c1916600185901b178555620001c9565b600085815260208120601f198616915b828110156200026f578886015182559484019460019091019084016200024e565b50858210156200028e5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61149880620002ae6000396000f3fe608060405234801561001057600080fd5b50600436106100875760003560e01c80634e1273f41161005b5780634e1273f41461010a578063a22cb4651461012a578063e985e9c51461013d578063f242432a1461017957600080fd5b8062fdd58e1461008c57806301ffc9a7146100b25780630e89341c146100d55780632eb2c2d6146100f5575b600080fd5b61009f61009a366004610dab565b61018c565b6040519081526020015b60405180910390f35b6100c56100c0366004610dee565b610238565b60405190151581526020016100a9565b6100e86100e3366004610e12565b610288565b6040516100a99190610e71565b610108610103366004610fd0565b61031c565b005b61011d61011836600461107a565b6103af565b6040516100a99190611180565b610108610138366004611193565b6104ed565b6100c561014b3660046111cf565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205460ff1690565b610108610187366004611202565b6104fc565b60006001600160a01b03831661020f5760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201527f616c6964206f776e65720000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b506000818152602081815260408083206001600160a01b03861684529091529020545b92915050565b60006001600160e01b03198216636cdb3d1360e11b148061026957506001600160e01b031982166303a24d0760e21b145b8061023257506301ffc9a760e01b6001600160e01b0319831614610232565b60606002805461029790611267565b80601f01602080910402602001604051908101604052809291908181526020018280546102c390611267565b80156103105780601f106102e557610100808354040283529160200191610310565b820191906000526020600020905b8154815290600101906020018083116102f357829003601f168201915b50505050509050919050565b6001600160a01b0385163314806103385750610338853361014b565b61039b5760405162461bcd60e51b815260206004820152602e60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201526d195c881bdc88185c1c1c9bdd995960921b6064820152608401610206565b6103a88585858585610588565b5050505050565b606081518351146104285760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e67746860448201527f206d69736d6174636800000000000000000000000000000000000000000000006064820152608401610206565b6000835167ffffffffffffffff81111561044457610444610e84565b60405190808252806020026020018201604052801561046d578160200160208202803683370190505b50905060005b84518110156104e5576104b8858281518110610491576104916112a1565b60200260200101518583815181106104ab576104ab6112a1565b602002602001015161018c565b8282815181106104ca576104ca6112a1565b60209081029190910101526104de816112cd565b9050610473565b509392505050565b6104f83383836107fb565b5050565b6001600160a01b0385163314806105185750610518853361014b565b61057b5760405162461bcd60e51b815260206004820152602e60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201526d195c881bdc88185c1c1c9bdd995960921b6064820152608401610206565b6103a885858585856108ef565b81518351146105ff5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060448201527f6d69736d617463680000000000000000000000000000000000000000000000006064820152608401610206565b6001600160a01b0384166106635760405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b6064820152608401610206565b3360005b845181101561078d576000858281518110610684576106846112a1565b6020026020010151905060008583815181106106a2576106a26112a1565b602090810291909101810151600084815280835260408082206001600160a01b038e1683529093529190912054909150818110156107355760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201526939103a3930b739b332b960b11b6064820152608401610206565b6000838152602081815260408083206001600160a01b038e8116855292528083208585039055908b168252812080548492906107729084906112e6565b9250508190555050505080610786906112cd565b9050610667565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb87876040516107dd9291906112f9565b60405180910390a46107f3818787878787610a9a565b505050505050565b816001600160a01b0316836001600160a01b0316036108825760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c2073746174757360448201527f20666f722073656c6600000000000000000000000000000000000000000000006064820152608401610206565b6001600160a01b03838116600081815260016020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0384166109535760405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b6064820152608401610206565b33600061095f85610c48565b9050600061096c85610c48565b90506000868152602081815260408083206001600160a01b038c168452909152902054858110156109f25760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201526939103a3930b739b332b960b11b6064820152608401610206565b6000878152602081815260408083206001600160a01b038d8116855292528083208985039055908a16825281208054889290610a2f9084906112e6565b909155505060408051888152602081018890526001600160a01b03808b16928c821692918816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4610a8f848a8a8a8a8a610c93565b505050505050505050565b6001600160a01b0384163b156107f35760405163bc197c8160e01b81526001600160a01b0385169063bc197c8190610ade9089908990889088908890600401611327565b6020604051808303816000875af1925050508015610b19575060408051601f3d908101601f19168201909252610b1691810190611385565b60015b610bce57610b256113a2565b806308c379a003610b5e5750610b396113be565b80610b445750610b60565b8060405162461bcd60e51b81526004016102069190610e71565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e2d4552433131353560448201527f526563656976657220696d706c656d656e7465720000000000000000000000006064820152608401610206565b6001600160e01b0319811663bc197c8160e01b14610c3f5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a656374656044820152676420746f6b656e7360c01b6064820152608401610206565b50505050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110610c8257610c826112a1565b602090810291909101015292915050565b6001600160a01b0384163b156107f35760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e6190610cd79089908990889088908890600401611448565b6020604051808303816000875af1925050508015610d12575060408051601f3d908101601f19168201909252610d0f91810190611385565b60015b610d1e57610b256113a2565b6001600160e01b0319811663f23a6e6160e01b14610c3f5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a656374656044820152676420746f6b656e7360c01b6064820152608401610206565b80356001600160a01b0381168114610da657600080fd5b919050565b60008060408385031215610dbe57600080fd5b610dc783610d8f565b946020939093013593505050565b6001600160e01b031981168114610deb57600080fd5b50565b600060208284031215610e0057600080fd5b8135610e0b81610dd5565b9392505050565b600060208284031215610e2457600080fd5b5035919050565b6000815180845260005b81811015610e5157602081850181015186830182015201610e35565b506000602082860101526020601f19601f83011685010191505092915050565b602081526000610e0b6020830184610e2b565b634e487b7160e01b600052604160045260246000fd5b601f8201601f1916810167ffffffffffffffff81118282101715610ec057610ec0610e84565b6040525050565b600067ffffffffffffffff821115610ee157610ee1610e84565b5060051b60200190565b600082601f830112610efc57600080fd5b81356020610f0982610ec7565b604051610f168282610e9a565b83815260059390931b8501820192828101915086841115610f3657600080fd5b8286015b84811015610f515780358352918301918301610f3a565b509695505050505050565b600082601f830112610f6d57600080fd5b813567ffffffffffffffff811115610f8757610f87610e84565b604051610f9e601f8301601f191660200182610e9a565b818152846020838601011115610fb357600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a08688031215610fe857600080fd5b610ff186610d8f565b9450610fff60208701610d8f565b9350604086013567ffffffffffffffff8082111561101c57600080fd5b61102889838a01610eeb565b9450606088013591508082111561103e57600080fd5b61104a89838a01610eeb565b9350608088013591508082111561106057600080fd5b5061106d88828901610f5c565b9150509295509295909350565b6000806040838503121561108d57600080fd5b823567ffffffffffffffff808211156110a557600080fd5b818501915085601f8301126110b957600080fd5b813560206110c682610ec7565b6040516110d38282610e9a565b83815260059390931b85018201928281019150898411156110f357600080fd5b948201945b838610156111185761110986610d8f565b825294820194908201906110f8565b9650508601359250508082111561112e57600080fd5b5061113b85828601610eeb565b9150509250929050565b600081518084526020808501945080840160005b8381101561117557815187529582019590820190600101611159565b509495945050505050565b602081526000610e0b6020830184611145565b600080604083850312156111a657600080fd5b6111af83610d8f565b9150602083013580151581146111c457600080fd5b809150509250929050565b600080604083850312156111e257600080fd5b6111eb83610d8f565b91506111f960208401610d8f565b90509250929050565b600080600080600060a0868803121561121a57600080fd5b61122386610d8f565b945061123160208701610d8f565b93506040860135925060608601359150608086013567ffffffffffffffff81111561125b57600080fd5b61106d88828901610f5c565b600181811c9082168061127b57607f821691505b60208210810361129b57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016112df576112df6112b7565b5060010190565b80820180821115610232576102326112b7565b60408152600061130c6040830185611145565b828103602084015261131e8185611145565b95945050505050565b60006001600160a01b03808816835280871660208401525060a0604083015261135360a0830186611145565b82810360608401526113658186611145565b905082810360808401526113798185610e2b565b98975050505050505050565b60006020828403121561139757600080fd5b8151610e0b81610dd5565b600060033d11156113bb5760046000803e5060005160e01c5b90565b600060443d10156113cc5790565b6040516003193d81016004833e81513d67ffffffffffffffff81602484011181841117156113fc57505050505090565b82850191508151818111156114145750505050505090565b843d870101602082850101111561142e5750505050505090565b61143d60208286010187610e9a565b509095945050505050565b60006001600160a01b03808816835280871660208401525084604083015283606083015260a0608083015261148060a0830184610e2b565b97965050505050505056fea164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x1746 CODESIZE SUB DUP1 PUSH3 0x1746 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x34 SWAP2 PUSH3 0x6E JUMP JUMPDEST PUSH3 0x3F DUP2 PUSH3 0x46 JUMP JUMPDEST POP PUSH3 0x29E JUMP JUMPDEST PUSH1 0x2 PUSH3 0x54 DUP3 DUP3 PUSH3 0x1D2 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x82 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH3 0x9A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH3 0xAF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH3 0xC4 JUMPI PUSH3 0xC4 PUSH3 0x58 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH3 0xEF JUMPI PUSH3 0xEF PUSH3 0x58 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 DUP7 DUP5 DUP8 ADD ADD GT ISZERO PUSH3 0x108 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP4 POP JUMPDEST DUP3 DUP5 LT ISZERO PUSH3 0x12C JUMPI DUP5 DUP5 ADD DUP7 ADD MLOAD DUP2 DUP6 ADD DUP8 ADD MSTORE SWAP3 DUP6 ADD SWAP3 PUSH3 0x10D JUMP JUMPDEST PUSH1 0x0 DUP7 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP7 POP POP POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH3 0x158 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH3 0x179 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH3 0x1CD JUMPI PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP7 LT ISZERO PUSH3 0x1A8 JUMPI POP DUP1 JUMPDEST PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x1C9 JUMPI DUP3 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x1B4 JUMP JUMPDEST POP POP POP JUMPDEST POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH3 0x1EE JUMPI PUSH3 0x1EE PUSH3 0x58 JUMP JUMPDEST PUSH3 0x206 DUP2 PUSH3 0x1FF DUP5 SLOAD PUSH3 0x143 JUMP JUMPDEST DUP5 PUSH3 0x17F JUMP JUMPDEST PUSH1 0x20 DUP1 PUSH1 0x1F DUP4 GT PUSH1 0x1 DUP2 EQ PUSH3 0x23E JUMPI PUSH1 0x0 DUP5 ISZERO PUSH3 0x225 JUMPI POP DUP6 DUP4 ADD MLOAD JUMPDEST PUSH1 0x0 NOT PUSH1 0x3 DUP7 SWAP1 SHL SHR NOT AND PUSH1 0x1 DUP6 SWAP1 SHL OR DUP6 SSTORE PUSH3 0x1C9 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F NOT DUP7 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH3 0x26F JUMPI DUP9 DUP7 ADD MLOAD DUP3 SSTORE SWAP5 DUP5 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 DUP5 ADD PUSH3 0x24E JUMP JUMPDEST POP DUP6 DUP3 LT ISZERO PUSH3 0x28E JUMPI DUP8 DUP6 ADD MLOAD PUSH1 0x0 NOT PUSH1 0x3 DUP9 SWAP1 SHL PUSH1 0xF8 AND SHR NOT AND DUP2 SSTORE JUMPDEST POP POP POP POP POP PUSH1 0x1 SWAP1 DUP2 SHL ADD SWAP1 SSTORE POP JUMP JUMPDEST PUSH2 0x1498 DUP1 PUSH3 0x2AE PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x87 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x4E1273F4 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x4E1273F4 EQ PUSH2 0x10A JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x12A JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x13D JUMPI DUP1 PUSH4 0xF242432A EQ PUSH2 0x179 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH3 0xFDD58E EQ PUSH2 0x8C JUMPI DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xB2 JUMPI DUP1 PUSH4 0xE89341C EQ PUSH2 0xD5 JUMPI DUP1 PUSH4 0x2EB2C2D6 EQ PUSH2 0xF5 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9F PUSH2 0x9A CALLDATASIZE PUSH1 0x4 PUSH2 0xDAB JUMP JUMPDEST PUSH2 0x18C JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xC5 PUSH2 0xC0 CALLDATASIZE PUSH1 0x4 PUSH2 0xDEE JUMP JUMPDEST PUSH2 0x238 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xA9 JUMP JUMPDEST PUSH2 0xE8 PUSH2 0xE3 CALLDATASIZE PUSH1 0x4 PUSH2 0xE12 JUMP JUMPDEST PUSH2 0x288 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA9 SWAP2 SWAP1 PUSH2 0xE71 JUMP JUMPDEST PUSH2 0x108 PUSH2 0x103 CALLDATASIZE PUSH1 0x4 PUSH2 0xFD0 JUMP JUMPDEST PUSH2 0x31C JUMP JUMPDEST STOP JUMPDEST PUSH2 0x11D PUSH2 0x118 CALLDATASIZE PUSH1 0x4 PUSH2 0x107A JUMP JUMPDEST PUSH2 0x3AF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA9 SWAP2 SWAP1 PUSH2 0x1180 JUMP JUMPDEST PUSH2 0x108 PUSH2 0x138 CALLDATASIZE PUSH1 0x4 PUSH2 0x1193 JUMP JUMPDEST PUSH2 0x4ED JUMP JUMPDEST PUSH2 0xC5 PUSH2 0x14B CALLDATASIZE PUSH1 0x4 PUSH2 0x11CF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x108 PUSH2 0x187 CALLDATASIZE PUSH1 0x4 PUSH2 0x1202 JUMP JUMPDEST PUSH2 0x4FC JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x20F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A2061646472657373207A65726F206973206E6F7420612076 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x616C6964206F776E657200000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x6CDB3D13 PUSH1 0xE1 SHL EQ DUP1 PUSH2 0x269 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x3A24D07 PUSH1 0xE2 SHL EQ JUMPDEST DUP1 PUSH2 0x232 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ PUSH2 0x232 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x2 DUP1 SLOAD PUSH2 0x297 SWAP1 PUSH2 0x1267 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x2C3 SWAP1 PUSH2 0x1267 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x310 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x2E5 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x310 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x2F3 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND CALLER EQ DUP1 PUSH2 0x338 JUMPI POP PUSH2 0x338 DUP6 CALLER PUSH2 0x14B JUMP JUMPDEST PUSH2 0x39B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A2063616C6C6572206973206E6F7420746F6B656E206F776E PUSH1 0x44 DUP3 ADD MSTORE PUSH14 0x195C881BDC88185C1C1C9BDD9959 PUSH1 0x92 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x206 JUMP JUMPDEST PUSH2 0x3A8 DUP6 DUP6 DUP6 DUP6 DUP6 PUSH2 0x588 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 MLOAD DUP4 MLOAD EQ PUSH2 0x428 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A206163636F756E747320616E6420696473206C656E677468 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x206D69736D617463680000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x206 JUMP JUMPDEST PUSH1 0x0 DUP4 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x444 JUMPI PUSH2 0x444 PUSH2 0xE84 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x46D JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x4E5 JUMPI PUSH2 0x4B8 DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x491 JUMPI PUSH2 0x491 PUSH2 0x12A1 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x4AB JUMPI PUSH2 0x4AB PUSH2 0x12A1 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x18C JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x4CA JUMPI PUSH2 0x4CA PUSH2 0x12A1 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH2 0x4DE DUP2 PUSH2 0x12CD JUMP JUMPDEST SWAP1 POP PUSH2 0x473 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x4F8 CALLER DUP4 DUP4 PUSH2 0x7FB JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND CALLER EQ DUP1 PUSH2 0x518 JUMPI POP PUSH2 0x518 DUP6 CALLER PUSH2 0x14B JUMP JUMPDEST PUSH2 0x57B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A2063616C6C6572206973206E6F7420746F6B656E206F776E PUSH1 0x44 DUP3 ADD MSTORE PUSH14 0x195C881BDC88185C1C1C9BDD9959 PUSH1 0x92 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x206 JUMP JUMPDEST PUSH2 0x3A8 DUP6 DUP6 DUP6 DUP6 DUP6 PUSH2 0x8EF JUMP JUMPDEST DUP2 MLOAD DUP4 MLOAD EQ PUSH2 0x5FF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x28 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A2069647320616E6420616D6F756E7473206C656E67746820 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6D69736D61746368000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x206 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x663 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A207472616E7366657220746F20746865207A65726F206164 PUSH1 0x44 DUP3 ADD MSTORE PUSH5 0x6472657373 PUSH1 0xD8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x206 JUMP JUMPDEST CALLER PUSH1 0x0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x78D JUMPI PUSH1 0x0 DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x684 JUMPI PUSH2 0x684 PUSH2 0x12A1 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x6A2 JUMPI PUSH2 0x6A2 PUSH2 0x12A1 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD PUSH1 0x0 DUP5 DUP2 MSTORE DUP1 DUP4 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP15 AND DUP4 MSTORE SWAP1 SWAP4 MSTORE SWAP2 SWAP1 SWAP2 KECCAK256 SLOAD SWAP1 SWAP2 POP DUP2 DUP2 LT ISZERO PUSH2 0x735 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A20696E73756666696369656E742062616C616E636520666F PUSH1 0x44 DUP3 ADD MSTORE PUSH10 0x39103A3930B739B332B9 PUSH1 0xB1 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x206 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP15 DUP2 AND DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 DUP6 DUP6 SUB SWAP1 SSTORE SWAP1 DUP12 AND DUP3 MSTORE DUP2 KECCAK256 DUP1 SLOAD DUP5 SWAP3 SWAP1 PUSH2 0x772 SWAP1 DUP5 SWAP1 PUSH2 0x12E6 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP POP POP POP DUP1 PUSH2 0x786 SWAP1 PUSH2 0x12CD JUMP JUMPDEST SWAP1 POP PUSH2 0x667 JUMP JUMPDEST POP DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB DUP8 DUP8 PUSH1 0x40 MLOAD PUSH2 0x7DD SWAP3 SWAP2 SWAP1 PUSH2 0x12F9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x7F3 DUP2 DUP8 DUP8 DUP8 DUP8 DUP8 PUSH2 0xA9A JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x882 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A2073657474696E6720617070726F76616C20737461747573 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x20666F722073656C660000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x206 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND DUP7 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP2 MLOAD SWAP2 DUP3 MSTORE PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x953 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A207472616E7366657220746F20746865207A65726F206164 PUSH1 0x44 DUP3 ADD MSTORE PUSH5 0x6472657373 PUSH1 0xD8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x206 JUMP JUMPDEST CALLER PUSH1 0x0 PUSH2 0x95F DUP6 PUSH2 0xC48 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x96C DUP6 PUSH2 0xC48 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD DUP6 DUP2 LT ISZERO PUSH2 0x9F2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A20696E73756666696369656E742062616C616E636520666F PUSH1 0x44 DUP3 ADD MSTORE PUSH10 0x39103A3930B739B332B9 PUSH1 0xB1 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x206 JUMP JUMPDEST PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP14 DUP2 AND DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 DUP10 DUP6 SUB SWAP1 SSTORE SWAP1 DUP11 AND DUP3 MSTORE DUP2 KECCAK256 DUP1 SLOAD DUP9 SWAP3 SWAP1 PUSH2 0xA2F SWAP1 DUP5 SWAP1 PUSH2 0x12E6 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x40 DUP1 MLOAD DUP9 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP9 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP12 AND SWAP3 DUP13 DUP3 AND SWAP3 SWAP2 DUP9 AND SWAP2 PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0xA8F DUP5 DUP11 DUP11 DUP11 DUP11 DUP11 PUSH2 0xC93 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO PUSH2 0x7F3 JUMPI PUSH1 0x40 MLOAD PUSH4 0xBC197C81 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0xBC197C81 SWAP1 PUSH2 0xADE SWAP1 DUP10 SWAP1 DUP10 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x1327 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0xB19 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0xB16 SWAP2 DUP2 ADD SWAP1 PUSH2 0x1385 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0xBCE JUMPI PUSH2 0xB25 PUSH2 0x13A2 JUMP JUMPDEST DUP1 PUSH4 0x8C379A0 SUB PUSH2 0xB5E JUMPI POP PUSH2 0xB39 PUSH2 0x13BE JUMP JUMPDEST DUP1 PUSH2 0xB44 JUMPI POP PUSH2 0xB60 JUMP JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x206 SWAP2 SWAP1 PUSH2 0xE71 JUMP JUMPDEST POP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x34 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A207472616E7366657220746F206E6F6E2D45524331313535 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x526563656976657220696D706C656D656E746572000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x206 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH4 0xBC197C81 PUSH1 0xE0 SHL EQ PUSH2 0xC3F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x28 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A204552433131353552656365697665722072656A65637465 PUSH1 0x44 DUP3 ADD MSTORE PUSH8 0x6420746F6B656E73 PUSH1 0xC0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x206 JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 PUSH1 0x0 SWAP2 SWAP1 PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP3 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xC82 JUMPI PUSH2 0xC82 PUSH2 0x12A1 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO PUSH2 0x7F3 JUMPI PUSH1 0x40 MLOAD PUSH4 0xF23A6E61 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0xF23A6E61 SWAP1 PUSH2 0xCD7 SWAP1 DUP10 SWAP1 DUP10 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x1448 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0xD12 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0xD0F SWAP2 DUP2 ADD SWAP1 PUSH2 0x1385 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0xD1E JUMPI PUSH2 0xB25 PUSH2 0x13A2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH4 0xF23A6E61 PUSH1 0xE0 SHL EQ PUSH2 0xC3F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x28 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A204552433131353552656365697665722072656A65637465 PUSH1 0x44 DUP3 ADD MSTORE PUSH8 0x6420746F6B656E73 PUSH1 0xC0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x206 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xDA6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xDBE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xDC7 DUP4 PUSH2 0xD8F JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0xDEB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xE00 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xE0B DUP2 PUSH2 0xDD5 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xE24 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xE51 JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD DUP3 ADD MSTORE ADD PUSH2 0xE35 JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x20 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x20 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0xE0B PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0xE2B JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0xEC0 JUMPI PUSH2 0xEC0 PUSH2 0xE84 JUMP JUMPDEST PUSH1 0x40 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0xEE1 JUMPI PUSH2 0xEE1 PUSH2 0xE84 JUMP JUMPDEST POP PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xEFC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x20 PUSH2 0xF09 DUP3 PUSH2 0xEC7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xF16 DUP3 DUP3 PUSH2 0xE9A JUMP JUMPDEST DUP4 DUP2 MSTORE PUSH1 0x5 SWAP4 SWAP1 SWAP4 SHL DUP6 ADD DUP3 ADD SWAP3 DUP3 DUP2 ADD SWAP2 POP DUP7 DUP5 GT ISZERO PUSH2 0xF36 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 DUP7 ADD JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0xF51 JUMPI DUP1 CALLDATALOAD DUP4 MSTORE SWAP2 DUP4 ADD SWAP2 DUP4 ADD PUSH2 0xF3A JUMP JUMPDEST POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xF6D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xF87 JUMPI PUSH2 0xF87 PUSH2 0xE84 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xF9E PUSH1 0x1F DUP4 ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 PUSH2 0xE9A JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 PUSH1 0x20 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0xFB3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP6 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 SWAP2 DUP2 ADD PUSH1 0x20 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0xFE8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xFF1 DUP7 PUSH2 0xD8F JUMP JUMPDEST SWAP5 POP PUSH2 0xFFF PUSH1 0x20 DUP8 ADD PUSH2 0xD8F JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x101C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1028 DUP10 DUP4 DUP11 ADD PUSH2 0xEEB JUMP JUMPDEST SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x103E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x104A DUP10 DUP4 DUP11 ADD PUSH2 0xEEB JUMP JUMPDEST SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x1060 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x106D DUP9 DUP3 DUP10 ADD PUSH2 0xF5C JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x108D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x10A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x10B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x20 PUSH2 0x10C6 DUP3 PUSH2 0xEC7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x10D3 DUP3 DUP3 PUSH2 0xE9A JUMP JUMPDEST DUP4 DUP2 MSTORE PUSH1 0x5 SWAP4 SWAP1 SWAP4 SHL DUP6 ADD DUP3 ADD SWAP3 DUP3 DUP2 ADD SWAP2 POP DUP10 DUP5 GT ISZERO PUSH2 0x10F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP5 DUP3 ADD SWAP5 JUMPDEST DUP4 DUP7 LT ISZERO PUSH2 0x1118 JUMPI PUSH2 0x1109 DUP7 PUSH2 0xD8F JUMP JUMPDEST DUP3 MSTORE SWAP5 DUP3 ADD SWAP5 SWAP1 DUP3 ADD SWAP1 PUSH2 0x10F8 JUMP JUMPDEST SWAP7 POP POP DUP7 ADD CALLDATALOAD SWAP3 POP POP DUP1 DUP3 GT ISZERO PUSH2 0x112E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x113B DUP6 DUP3 DUP7 ADD PUSH2 0xEEB JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP1 DUP5 ADD PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1175 JUMPI DUP2 MLOAD DUP8 MSTORE SWAP6 DUP3 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x1159 JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0xE0B PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x1145 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x11A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x11AF DUP4 PUSH2 0xD8F JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x11C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x11E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x11EB DUP4 PUSH2 0xD8F JUMP JUMPDEST SWAP2 POP PUSH2 0x11F9 PUSH1 0x20 DUP5 ADD PUSH2 0xD8F JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x121A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1223 DUP7 PUSH2 0xD8F JUMP JUMPDEST SWAP5 POP PUSH2 0x1231 PUSH1 0x20 DUP8 ADD PUSH2 0xD8F JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD SWAP2 POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x125B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x106D DUP9 DUP3 DUP10 ADD PUSH2 0xF5C JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x127B JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x129B JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 ADD PUSH2 0x12DF JUMPI PUSH2 0x12DF PUSH2 0x12B7 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x232 JUMPI PUSH2 0x232 PUSH2 0x12B7 JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 PUSH2 0x130C PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x1145 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x131E DUP2 DUP6 PUSH2 0x1145 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND DUP4 MSTORE DUP1 DUP8 AND PUSH1 0x20 DUP5 ADD MSTORE POP PUSH1 0xA0 PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x1353 PUSH1 0xA0 DUP4 ADD DUP7 PUSH2 0x1145 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x60 DUP5 ADD MSTORE PUSH2 0x1365 DUP2 DUP7 PUSH2 0x1145 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 SUB PUSH1 0x80 DUP5 ADD MSTORE PUSH2 0x1379 DUP2 DUP6 PUSH2 0xE2B JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1397 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xE0B DUP2 PUSH2 0xDD5 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x3 RETURNDATASIZE GT ISZERO PUSH2 0x13BB JUMPI PUSH1 0x4 PUSH1 0x0 DUP1 RETURNDATACOPY POP PUSH1 0x0 MLOAD PUSH1 0xE0 SHR JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x44 RETURNDATASIZE LT ISZERO PUSH2 0x13CC JUMPI SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x3 NOT RETURNDATASIZE DUP2 ADD PUSH1 0x4 DUP4 RETURNDATACOPY DUP2 MLOAD RETURNDATASIZE PUSH8 0xFFFFFFFFFFFFFFFF DUP2 PUSH1 0x24 DUP5 ADD GT DUP2 DUP5 GT OR ISZERO PUSH2 0x13FC JUMPI POP POP POP POP POP SWAP1 JUMP JUMPDEST DUP3 DUP6 ADD SWAP2 POP DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x1414 JUMPI POP POP POP POP POP POP SWAP1 JUMP JUMPDEST DUP5 RETURNDATASIZE DUP8 ADD ADD PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x142E JUMPI POP POP POP POP POP POP SWAP1 JUMP JUMPDEST PUSH2 0x143D PUSH1 0x20 DUP3 DUP7 ADD ADD DUP8 PUSH2 0xE9A JUMP JUMPDEST POP SWAP1 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND DUP4 MSTORE DUP1 DUP8 AND PUSH1 0x20 DUP5 ADD MSTORE POP DUP5 PUSH1 0x40 DUP4 ADD MSTORE DUP4 PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0xA0 PUSH1 0x80 DUP4 ADD MSTORE PUSH2 0x1480 PUSH1 0xA0 DUP4 ADD DUP5 PUSH2 0xE2B JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"570:16539:22:-:0;;;1107:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1149:13;1157:4;1149:7;:13::i;:::-;1107:62;570:16539;;8149:86;8215:4;:13;8222:6;8215:4;:13;:::i;:::-;;8149:86;:::o;14:127:92:-;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:1042;226:6;257:2;300;288:9;279:7;275:23;271:32;268:52;;;316:1;313;306:12;268:52;343:16;;-1:-1:-1;;;;;408:14:92;;;405:34;;;435:1;432;425:12;405:34;473:6;462:9;458:22;448:32;;518:7;511:4;507:2;503:13;499:27;489:55;;540:1;537;530:12;489:55;569:2;563:9;591:2;587;584:10;581:36;;;597:18;;:::i;:::-;672:2;666:9;640:2;726:13;;-1:-1:-1;;722:22:92;;;746:2;718:31;714:40;702:53;;;770:18;;;790:22;;;767:46;764:72;;;816:18;;:::i;:::-;856:10;852:2;845:22;891:2;883:6;876:18;931:7;926:2;921;917;913:11;909:20;906:33;903:53;;;952:1;949;942:12;903:53;974:1;965:10;;984:129;998:2;995:1;992:9;984:129;;;1086:10;;;1082:19;;1076:26;1055:14;;;1051:23;;1044:59;1009:10;;;;984:129;;;1155:1;1150:2;1145;1137:6;1133:15;1129:24;1122:35;1176:6;1166:16;;;;;;;;146:1042;;;;:::o;1193:380::-;1272:1;1268:12;;;;1315;;;1336:61;;1390:4;1382:6;1378:17;1368:27;;1336:61;1443:2;1435:6;1432:14;1412:18;1409:38;1406:161;;1489:10;1484:3;1480:20;1477:1;1470:31;1524:4;1521:1;1514:15;1552:4;1549:1;1542:15;1406:161;;1193:380;;;:::o;1704:545::-;1806:2;1801:3;1798:11;1795:448;;;1842:1;1867:5;1863:2;1856:17;1912:4;1908:2;1898:19;1982:2;1970:10;1966:19;1963:1;1959:27;1953:4;1949:38;2018:4;2006:10;2003:20;2000:47;;;-1:-1:-1;2041:4:92;2000:47;2096:2;2091:3;2087:12;2084:1;2080:20;2074:4;2070:31;2060:41;;2151:82;2169:2;2162:5;2159:13;2151:82;;;2214:17;;;2195:1;2184:13;2151:82;;;2155:3;;;1795:448;1704:545;;;:::o;2425:1352::-;2545:10;;-1:-1:-1;;;;;2567:30:92;;2564:56;;;2600:18;;:::i;:::-;2629:97;2719:6;2679:38;2711:4;2705:11;2679:38;:::i;:::-;2673:4;2629:97;:::i;:::-;2781:4;;2845:2;2834:14;;2862:1;2857:663;;;;3564:1;3581:6;3578:89;;;-1:-1:-1;3633:19:92;;;3627:26;3578:89;-1:-1:-1;;2382:1:92;2378:11;;;2374:24;2370:29;2360:40;2406:1;2402:11;;;2357:57;3680:81;;2827:944;;2857:663;1651:1;1644:14;;;1688:4;1675:18;;-1:-1:-1;;2893:20:92;;;3011:236;3025:7;3022:1;3019:14;3011:236;;;3114:19;;;3108:26;3093:42;;3206:27;;;;3174:1;3162:14;;;;3041:19;;3011:236;;;3015:3;3275:6;3266:7;3263:19;3260:201;;;3336:19;;;3330:26;-1:-1:-1;;3419:1:92;3415:14;;;3431:3;3411:24;3407:37;3403:42;3388:58;3373:74;;3260:201;-1:-1:-1;;;;;3507:1:92;3491:14;;;3487:22;3474:36;;-1:-1:-1;2425:1352:92:o;:::-;570:16539:22;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_afterTokenTransfer_6821":{"entryPoint":null,"id":6821,"parameterSlots":6,"returnSlots":0},"@_asSingletonArray_6977":{"entryPoint":3144,"id":6977,"parameterSlots":1,"returnSlots":1},"@_beforeTokenTransfer_6802":{"entryPoint":null,"id":6802,"parameterSlots":6,"returnSlots":0},"@_doSafeBatchTransferAcceptanceCheck_6949":{"entryPoint":2714,"id":6949,"parameterSlots":6,"returnSlots":0},"@_doSafeTransferAcceptanceCheck_6884":{"entryPoint":3219,"id":6884,"parameterSlots":6,"returnSlots":0},"@_msgSender_9276":{"entryPoint":null,"id":9276,"parameterSlots":0,"returnSlots":1},"@_safeBatchTransferFrom_6300":{"entryPoint":1416,"id":6300,"parameterSlots":5,"returnSlots":0},"@_safeTransferFrom_6165":{"entryPoint":2287,"id":6165,"parameterSlots":5,"returnSlots":0},"@_setApprovalForAll_6783":{"entryPoint":2043,"id":6783,"parameterSlots":3,"returnSlots":0},"@balanceOfBatch_5935":{"entryPoint":943,"id":5935,"parameterSlots":2,"returnSlots":1},"@balanceOf_5871":{"entryPoint":396,"id":5871,"parameterSlots":2,"returnSlots":1},"@isApprovedForAll_5970":{"entryPoint":null,"id":5970,"parameterSlots":2,"returnSlots":1},"@isContract_8952":{"entryPoint":null,"id":8952,"parameterSlots":1,"returnSlots":1},"@safeBatchTransferFrom_6048":{"entryPoint":796,"id":6048,"parameterSlots":5,"returnSlots":0},"@safeTransferFrom_6008":{"entryPoint":1276,"id":6008,"parameterSlots":5,"returnSlots":0},"@setApprovalForAll_5952":{"entryPoint":1261,"id":5952,"parameterSlots":2,"returnSlots":0},"@supportsInterface_5831":{"entryPoint":568,"id":5831,"parameterSlots":1,"returnSlots":1},"@supportsInterface_9730":{"entryPoint":null,"id":9730,"parameterSlots":1,"returnSlots":1},"@uri_5843":{"entryPoint":648,"id":5843,"parameterSlots":1,"returnSlots":1},"abi_decode_address":{"entryPoint":3471,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_array_uint256_dyn":{"entryPoint":3819,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_bytes":{"entryPoint":3932,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_address":{"entryPoint":4559,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_addresst_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptrt_bytes_memory_ptr":{"entryPoint":4048,"id":null,"parameterSlots":2,"returnSlots":5},"abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_bytes_memory_ptr":{"entryPoint":4610,"id":null,"parameterSlots":2,"returnSlots":5},"abi_decode_tuple_t_addresst_bool":{"entryPoint":4499,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_uint256":{"entryPoint":3499,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_array$_t_address_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptr":{"entryPoint":4218,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_bytes4":{"entryPoint":3566,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes4_fromMemory":{"entryPoint":4997,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256":{"entryPoint":3602,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_array_uint256_dyn":{"entryPoint":4421,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_string":{"entryPoint":3627,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr_t_bytes_memory_ptr__to_t_address_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":4903,"id":null,"parameterSlots":6,"returnSlots":1},"abi_encode_tuple_t_address_t_address_t_uint256_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_uint256_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":5192,"id":null,"parameterSlots":6,"returnSlots":1},"abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed":{"entryPoint":4480,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed":{"entryPoint":4857,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":3697,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_0587cccad73a80a7f013db13c596f4febc1968dc77e1d3589d5e7a509a3d6503__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_415a1b99e1fd4a18cf87c08995f5a9130182e8d76e9c17c497bfebaaef9265ad__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_47c72b42072ed6c647dec3a0a5c88bec44d3e901c64659bff94ecce0a0323156__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_6faf1c67f278b07c6771dcf4c315a89c21c0eaed11d9ab3d51774da1cfef545d__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_8ac7e9556b567c1c94bb4daaa3c3a65be5ac686579615210cb910fb8cb8d65bf__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_df9806c6dc743de602e49918a67b580590d69ab768bdb59f977c0a884a91a7c2__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_e155f5d69798c6205436a388a4f3a5fd42f54147b40f4d63a2c8071ff8a9fee5__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_e909e0c9a8f96b4f9af03b716811ece20beb070be416893ed1d50619b5930807__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_f591f7b75ffc499e05f8b34c3364b2eceff651378d9549db1d5d67c0d8255c5d__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"array_allocation_size_array_uint256_dyn":{"entryPoint":3783,"id":null,"parameterSlots":1,"returnSlots":1},"checked_add_t_uint256":{"entryPoint":4838,"id":null,"parameterSlots":2,"returnSlots":1},"extract_byte_array_length":{"entryPoint":4711,"id":null,"parameterSlots":1,"returnSlots":1},"finalize_allocation":{"entryPoint":3738,"id":null,"parameterSlots":2,"returnSlots":0},"increment_t_uint256":{"entryPoint":4813,"id":null,"parameterSlots":1,"returnSlots":1},"panic_error_0x11":{"entryPoint":4791,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x32":{"entryPoint":4769,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":3716,"id":null,"parameterSlots":0,"returnSlots":0},"return_data_selector":{"entryPoint":5026,"id":null,"parameterSlots":0,"returnSlots":1},"try_decode_error_message":{"entryPoint":5054,"id":null,"parameterSlots":0,"returnSlots":1},"validator_revert_bytes4":{"entryPoint":3541,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:15929:92","statements":[{"nodeType":"YulBlock","src":"6:3:92","statements":[]},{"body":{"nodeType":"YulBlock","src":"63:147:92","statements":[{"nodeType":"YulAssignment","src":"73:29:92","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"95:6:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"82:12:92"},"nodeType":"YulFunctionCall","src":"82:20:92"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"73:5:92"}]},{"body":{"nodeType":"YulBlock","src":"188:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"197:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"200:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"190:6:92"},"nodeType":"YulFunctionCall","src":"190:12:92"},"nodeType":"YulExpressionStatement","src":"190:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"124:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"135:5:92"},{"kind":"number","nodeType":"YulLiteral","src":"142:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"131:3:92"},"nodeType":"YulFunctionCall","src":"131:54:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"121:2:92"},"nodeType":"YulFunctionCall","src":"121:65:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"114:6:92"},"nodeType":"YulFunctionCall","src":"114:73:92"},"nodeType":"YulIf","src":"111:93:92"}]},"name":"abi_decode_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"42:6:92","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"53:5:92","type":""}],"src":"14:196:92"},{"body":{"nodeType":"YulBlock","src":"302:167:92","statements":[{"body":{"nodeType":"YulBlock","src":"348:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"357:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"360:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"350:6:92"},"nodeType":"YulFunctionCall","src":"350:12:92"},"nodeType":"YulExpressionStatement","src":"350:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"323:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"332:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"319:3:92"},"nodeType":"YulFunctionCall","src":"319:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"344:2:92","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"315:3:92"},"nodeType":"YulFunctionCall","src":"315:32:92"},"nodeType":"YulIf","src":"312:52:92"},{"nodeType":"YulAssignment","src":"373:39:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"402:9:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"383:18:92"},"nodeType":"YulFunctionCall","src":"383:29:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"373:6:92"}]},{"nodeType":"YulAssignment","src":"421:42:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"448:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"459:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"444:3:92"},"nodeType":"YulFunctionCall","src":"444:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"431:12:92"},"nodeType":"YulFunctionCall","src":"431:32:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"421:6:92"}]}]},"name":"abi_decode_tuple_t_addresst_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"260:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"271:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"283:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"291:6:92","type":""}],"src":"215:254:92"},{"body":{"nodeType":"YulBlock","src":"575:76:92","statements":[{"nodeType":"YulAssignment","src":"585:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"597:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"608:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"593:3:92"},"nodeType":"YulFunctionCall","src":"593:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"585:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"627:9:92"},{"name":"value0","nodeType":"YulIdentifier","src":"638:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"620:6:92"},"nodeType":"YulFunctionCall","src":"620:25:92"},"nodeType":"YulExpressionStatement","src":"620:25:92"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"544:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"555:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"566:4:92","type":""}],"src":"474:177:92"},{"body":{"nodeType":"YulBlock","src":"700:87:92","statements":[{"body":{"nodeType":"YulBlock","src":"765:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"774:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"777:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"767:6:92"},"nodeType":"YulFunctionCall","src":"767:12:92"},"nodeType":"YulExpressionStatement","src":"767:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"723:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"734:5:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"745:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"750:10:92","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"741:3:92"},"nodeType":"YulFunctionCall","src":"741:20:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"730:3:92"},"nodeType":"YulFunctionCall","src":"730:32:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"720:2:92"},"nodeType":"YulFunctionCall","src":"720:43:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"713:6:92"},"nodeType":"YulFunctionCall","src":"713:51:92"},"nodeType":"YulIf","src":"710:71:92"}]},"name":"validator_revert_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"689:5:92","type":""}],"src":"656:131:92"},{"body":{"nodeType":"YulBlock","src":"861:176:92","statements":[{"body":{"nodeType":"YulBlock","src":"907:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"916:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"919:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"909:6:92"},"nodeType":"YulFunctionCall","src":"909:12:92"},"nodeType":"YulExpressionStatement","src":"909:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"882:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"891:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"878:3:92"},"nodeType":"YulFunctionCall","src":"878:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"903:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"874:3:92"},"nodeType":"YulFunctionCall","src":"874:32:92"},"nodeType":"YulIf","src":"871:52:92"},{"nodeType":"YulVariableDeclaration","src":"932:36:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"958:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"945:12:92"},"nodeType":"YulFunctionCall","src":"945:23:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"936:5:92","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1001:5:92"}],"functionName":{"name":"validator_revert_bytes4","nodeType":"YulIdentifier","src":"977:23:92"},"nodeType":"YulFunctionCall","src":"977:30:92"},"nodeType":"YulExpressionStatement","src":"977:30:92"},{"nodeType":"YulAssignment","src":"1016:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"1026:5:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1016:6:92"}]}]},"name":"abi_decode_tuple_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"827:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"838:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"850:6:92","type":""}],"src":"792:245:92"},{"body":{"nodeType":"YulBlock","src":"1137:92:92","statements":[{"nodeType":"YulAssignment","src":"1147:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1159:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1170:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1155:3:92"},"nodeType":"YulFunctionCall","src":"1155:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1147:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1189:9:92"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1214:6:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1207:6:92"},"nodeType":"YulFunctionCall","src":"1207:14:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1200:6:92"},"nodeType":"YulFunctionCall","src":"1200:22:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1182:6:92"},"nodeType":"YulFunctionCall","src":"1182:41:92"},"nodeType":"YulExpressionStatement","src":"1182:41:92"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1106:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1117:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1128:4:92","type":""}],"src":"1042:187:92"},{"body":{"nodeType":"YulBlock","src":"1304:110:92","statements":[{"body":{"nodeType":"YulBlock","src":"1350:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1359:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1362:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1352:6:92"},"nodeType":"YulFunctionCall","src":"1352:12:92"},"nodeType":"YulExpressionStatement","src":"1352:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1325:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"1334:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1321:3:92"},"nodeType":"YulFunctionCall","src":"1321:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"1346:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1317:3:92"},"nodeType":"YulFunctionCall","src":"1317:32:92"},"nodeType":"YulIf","src":"1314:52:92"},{"nodeType":"YulAssignment","src":"1375:33:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1398:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1385:12:92"},"nodeType":"YulFunctionCall","src":"1385:23:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1375:6:92"}]}]},"name":"abi_decode_tuple_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1270:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1281:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1293:6:92","type":""}],"src":"1234:180:92"},{"body":{"nodeType":"YulBlock","src":"1469:373:92","statements":[{"nodeType":"YulVariableDeclaration","src":"1479:26:92","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1499:5:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1493:5:92"},"nodeType":"YulFunctionCall","src":"1493:12:92"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"1483:6:92","type":""}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1521:3:92"},{"name":"length","nodeType":"YulIdentifier","src":"1526:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1514:6:92"},"nodeType":"YulFunctionCall","src":"1514:19:92"},"nodeType":"YulExpressionStatement","src":"1514:19:92"},{"nodeType":"YulVariableDeclaration","src":"1542:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"1551:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"1546:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"1613:110:92","statements":[{"nodeType":"YulVariableDeclaration","src":"1627:14:92","value":{"kind":"number","nodeType":"YulLiteral","src":"1637:4:92","type":"","value":"0x20"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"1631:2:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1669:3:92"},{"name":"i","nodeType":"YulIdentifier","src":"1674:1:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1665:3:92"},"nodeType":"YulFunctionCall","src":"1665:11:92"},{"name":"_1","nodeType":"YulIdentifier","src":"1678:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1661:3:92"},"nodeType":"YulFunctionCall","src":"1661:20:92"},{"arguments":[{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1697:5:92"},{"name":"i","nodeType":"YulIdentifier","src":"1704:1:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1693:3:92"},"nodeType":"YulFunctionCall","src":"1693:13:92"},{"name":"_1","nodeType":"YulIdentifier","src":"1708:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1689:3:92"},"nodeType":"YulFunctionCall","src":"1689:22:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1683:5:92"},"nodeType":"YulFunctionCall","src":"1683:29:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1654:6:92"},"nodeType":"YulFunctionCall","src":"1654:59:92"},"nodeType":"YulExpressionStatement","src":"1654:59:92"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"1572:1:92"},{"name":"length","nodeType":"YulIdentifier","src":"1575:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"1569:2:92"},"nodeType":"YulFunctionCall","src":"1569:13:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"1583:21:92","statements":[{"nodeType":"YulAssignment","src":"1585:17:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"1594:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"1597:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1590:3:92"},"nodeType":"YulFunctionCall","src":"1590:12:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"1585:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"1565:3:92","statements":[]},"src":"1561:162:92"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1747:3:92"},{"name":"length","nodeType":"YulIdentifier","src":"1752:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1743:3:92"},"nodeType":"YulFunctionCall","src":"1743:16:92"},{"kind":"number","nodeType":"YulLiteral","src":"1761:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1739:3:92"},"nodeType":"YulFunctionCall","src":"1739:27:92"},{"kind":"number","nodeType":"YulLiteral","src":"1768:1:92","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1732:6:92"},"nodeType":"YulFunctionCall","src":"1732:38:92"},"nodeType":"YulExpressionStatement","src":"1732:38:92"},{"nodeType":"YulAssignment","src":"1779:57:92","value":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1794:3:92"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"1807:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"1815:2:92","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1803:3:92"},"nodeType":"YulFunctionCall","src":"1803:15:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1824:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"1820:3:92"},"nodeType":"YulFunctionCall","src":"1820:7:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1799:3:92"},"nodeType":"YulFunctionCall","src":"1799:29:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1790:3:92"},"nodeType":"YulFunctionCall","src":"1790:39:92"},{"kind":"number","nodeType":"YulLiteral","src":"1831:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1786:3:92"},"nodeType":"YulFunctionCall","src":"1786:50:92"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1779:3:92"}]}]},"name":"abi_encode_string","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1446:5:92","type":""},{"name":"pos","nodeType":"YulTypedName","src":"1453:3:92","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1461:3:92","type":""}],"src":"1419:423:92"},{"body":{"nodeType":"YulBlock","src":"1968:99:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1985:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1996:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1978:6:92"},"nodeType":"YulFunctionCall","src":"1978:21:92"},"nodeType":"YulExpressionStatement","src":"1978:21:92"},{"nodeType":"YulAssignment","src":"2008:53:92","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2034:6:92"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2046:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2057:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2042:3:92"},"nodeType":"YulFunctionCall","src":"2042:18:92"}],"functionName":{"name":"abi_encode_string","nodeType":"YulIdentifier","src":"2016:17:92"},"nodeType":"YulFunctionCall","src":"2016:45:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2008:4:92"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1937:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1948:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1959:4:92","type":""}],"src":"1847:220:92"},{"body":{"nodeType":"YulBlock","src":"2104:95:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2121:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2128:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"2133:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2124:3:92"},"nodeType":"YulFunctionCall","src":"2124:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2114:6:92"},"nodeType":"YulFunctionCall","src":"2114:31:92"},"nodeType":"YulExpressionStatement","src":"2114:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2161:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"2164:4:92","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2154:6:92"},"nodeType":"YulFunctionCall","src":"2154:15:92"},"nodeType":"YulExpressionStatement","src":"2154:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2185:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2188:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2178:6:92"},"nodeType":"YulFunctionCall","src":"2178:15:92"},"nodeType":"YulExpressionStatement","src":"2178:15:92"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"2072:127:92"},{"body":{"nodeType":"YulBlock","src":"2251:202:92","statements":[{"nodeType":"YulVariableDeclaration","src":"2261:58:92","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"2283:6:92"},{"arguments":[{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"2299:4:92"},{"kind":"number","nodeType":"YulLiteral","src":"2305:2:92","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2295:3:92"},"nodeType":"YulFunctionCall","src":"2295:13:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2314:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"2310:3:92"},"nodeType":"YulFunctionCall","src":"2310:7:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2291:3:92"},"nodeType":"YulFunctionCall","src":"2291:27:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2279:3:92"},"nodeType":"YulFunctionCall","src":"2279:40:92"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"2265:10:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"2394:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"2396:16:92"},"nodeType":"YulFunctionCall","src":"2396:18:92"},"nodeType":"YulExpressionStatement","src":"2396:18:92"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"2337:10:92"},{"kind":"number","nodeType":"YulLiteral","src":"2349:18:92","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2334:2:92"},"nodeType":"YulFunctionCall","src":"2334:34:92"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"2373:10:92"},{"name":"memPtr","nodeType":"YulIdentifier","src":"2385:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2370:2:92"},"nodeType":"YulFunctionCall","src":"2370:22:92"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"2331:2:92"},"nodeType":"YulFunctionCall","src":"2331:62:92"},"nodeType":"YulIf","src":"2328:88:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2432:2:92","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"2436:10:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2425:6:92"},"nodeType":"YulFunctionCall","src":"2425:22:92"},"nodeType":"YulExpressionStatement","src":"2425:22:92"}]},"name":"finalize_allocation","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"2233:6:92","type":""},{"name":"size","nodeType":"YulTypedName","src":"2241:4:92","type":""}],"src":"2204:249:92"},{"body":{"nodeType":"YulBlock","src":"2527:114:92","statements":[{"body":{"nodeType":"YulBlock","src":"2571:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"2573:16:92"},"nodeType":"YulFunctionCall","src":"2573:18:92"},"nodeType":"YulExpressionStatement","src":"2573:18:92"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"2543:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"2551:18:92","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2540:2:92"},"nodeType":"YulFunctionCall","src":"2540:30:92"},"nodeType":"YulIf","src":"2537:56:92"},{"nodeType":"YulAssignment","src":"2602:33:92","value":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2618:1:92","type":"","value":"5"},{"name":"length","nodeType":"YulIdentifier","src":"2621:6:92"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2614:3:92"},"nodeType":"YulFunctionCall","src":"2614:14:92"},{"kind":"number","nodeType":"YulLiteral","src":"2630:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2610:3:92"},"nodeType":"YulFunctionCall","src":"2610:25:92"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"2602:4:92"}]}]},"name":"array_allocation_size_array_uint256_dyn","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nodeType":"YulTypedName","src":"2507:6:92","type":""}],"returnVariables":[{"name":"size","nodeType":"YulTypedName","src":"2518:4:92","type":""}],"src":"2458:183:92"},{"body":{"nodeType":"YulBlock","src":"2710:660:92","statements":[{"body":{"nodeType":"YulBlock","src":"2759:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2768:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2771:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2761:6:92"},"nodeType":"YulFunctionCall","src":"2761:12:92"},"nodeType":"YulExpressionStatement","src":"2761:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"2738:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"2746:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2734:3:92"},"nodeType":"YulFunctionCall","src":"2734:17:92"},{"name":"end","nodeType":"YulIdentifier","src":"2753:3:92"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2730:3:92"},"nodeType":"YulFunctionCall","src":"2730:27:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2723:6:92"},"nodeType":"YulFunctionCall","src":"2723:35:92"},"nodeType":"YulIf","src":"2720:55:92"},{"nodeType":"YulVariableDeclaration","src":"2784:30:92","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"2807:6:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2794:12:92"},"nodeType":"YulFunctionCall","src":"2794:20:92"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"2788:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2823:14:92","value":{"kind":"number","nodeType":"YulLiteral","src":"2833:4:92","type":"","value":"0x20"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"2827:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2846:53:92","value":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"2896:2:92"}],"functionName":{"name":"array_allocation_size_array_uint256_dyn","nodeType":"YulIdentifier","src":"2856:39:92"},"nodeType":"YulFunctionCall","src":"2856:43:92"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"2850:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2908:23:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2928:2:92","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2922:5:92"},"nodeType":"YulFunctionCall","src":"2922:9:92"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"2912:6:92","type":""}]},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"2960:6:92"},{"name":"_3","nodeType":"YulIdentifier","src":"2968:2:92"}],"functionName":{"name":"finalize_allocation","nodeType":"YulIdentifier","src":"2940:19:92"},"nodeType":"YulFunctionCall","src":"2940:31:92"},"nodeType":"YulExpressionStatement","src":"2940:31:92"},{"nodeType":"YulVariableDeclaration","src":"2980:17:92","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"2991:6:92"},"variables":[{"name":"dst","nodeType":"YulTypedName","src":"2984:3:92","type":""}]},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"3013:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"3021:2:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3006:6:92"},"nodeType":"YulFunctionCall","src":"3006:18:92"},"nodeType":"YulExpressionStatement","src":"3006:18:92"},{"nodeType":"YulAssignment","src":"3033:22:92","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"3044:6:92"},{"name":"_2","nodeType":"YulIdentifier","src":"3052:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3040:3:92"},"nodeType":"YulFunctionCall","src":"3040:15:92"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"3033:3:92"}]},{"nodeType":"YulVariableDeclaration","src":"3064:46:92","value":{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"3086:6:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3098:1:92","type":"","value":"5"},{"name":"_1","nodeType":"YulIdentifier","src":"3101:2:92"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"3094:3:92"},"nodeType":"YulFunctionCall","src":"3094:10:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3082:3:92"},"nodeType":"YulFunctionCall","src":"3082:23:92"},{"name":"_2","nodeType":"YulIdentifier","src":"3107:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3078:3:92"},"nodeType":"YulFunctionCall","src":"3078:32:92"},"variables":[{"name":"srcEnd","nodeType":"YulTypedName","src":"3068:6:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"3138:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3147:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3150:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3140:6:92"},"nodeType":"YulFunctionCall","src":"3140:12:92"},"nodeType":"YulExpressionStatement","src":"3140:12:92"}]},"condition":{"arguments":[{"name":"srcEnd","nodeType":"YulIdentifier","src":"3125:6:92"},{"name":"end","nodeType":"YulIdentifier","src":"3133:3:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3122:2:92"},"nodeType":"YulFunctionCall","src":"3122:15:92"},"nodeType":"YulIf","src":"3119:35:92"},{"nodeType":"YulVariableDeclaration","src":"3163:26:92","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"3178:6:92"},{"name":"_2","nodeType":"YulIdentifier","src":"3186:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3174:3:92"},"nodeType":"YulFunctionCall","src":"3174:15:92"},"variables":[{"name":"src","nodeType":"YulTypedName","src":"3167:3:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"3254:86:92","statements":[{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"3275:3:92"},{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"3293:3:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3280:12:92"},"nodeType":"YulFunctionCall","src":"3280:17:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3268:6:92"},"nodeType":"YulFunctionCall","src":"3268:30:92"},"nodeType":"YulExpressionStatement","src":"3268:30:92"},{"nodeType":"YulAssignment","src":"3311:19:92","value":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"3322:3:92"},{"name":"_2","nodeType":"YulIdentifier","src":"3327:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3318:3:92"},"nodeType":"YulFunctionCall","src":"3318:12:92"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"3311:3:92"}]}]},"condition":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"3209:3:92"},{"name":"srcEnd","nodeType":"YulIdentifier","src":"3214:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"3206:2:92"},"nodeType":"YulFunctionCall","src":"3206:15:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"3222:23:92","statements":[{"nodeType":"YulAssignment","src":"3224:19:92","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"3235:3:92"},{"name":"_2","nodeType":"YulIdentifier","src":"3240:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3231:3:92"},"nodeType":"YulFunctionCall","src":"3231:12:92"},"variableNames":[{"name":"src","nodeType":"YulIdentifier","src":"3224:3:92"}]}]},"pre":{"nodeType":"YulBlock","src":"3202:3:92","statements":[]},"src":"3198:142:92"},{"nodeType":"YulAssignment","src":"3349:15:92","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"3358:6:92"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"3349:5:92"}]}]},"name":"abi_decode_array_uint256_dyn","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"2684:6:92","type":""},{"name":"end","nodeType":"YulTypedName","src":"2692:3:92","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"2700:5:92","type":""}],"src":"2646:724:92"},{"body":{"nodeType":"YulBlock","src":"3427:503:92","statements":[{"body":{"nodeType":"YulBlock","src":"3476:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3485:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3488:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3478:6:92"},"nodeType":"YulFunctionCall","src":"3478:12:92"},"nodeType":"YulExpressionStatement","src":"3478:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"3455:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"3463:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3451:3:92"},"nodeType":"YulFunctionCall","src":"3451:17:92"},{"name":"end","nodeType":"YulIdentifier","src":"3470:3:92"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3447:3:92"},"nodeType":"YulFunctionCall","src":"3447:27:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3440:6:92"},"nodeType":"YulFunctionCall","src":"3440:35:92"},"nodeType":"YulIf","src":"3437:55:92"},{"nodeType":"YulVariableDeclaration","src":"3501:30:92","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"3524:6:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3511:12:92"},"nodeType":"YulFunctionCall","src":"3511:20:92"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"3505:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"3570:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"3572:16:92"},"nodeType":"YulFunctionCall","src":"3572:18:92"},"nodeType":"YulExpressionStatement","src":"3572:18:92"}]},"condition":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"3546:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"3550:18:92","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3543:2:92"},"nodeType":"YulFunctionCall","src":"3543:26:92"},"nodeType":"YulIf","src":"3540:52:92"},{"nodeType":"YulVariableDeclaration","src":"3601:23:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3621:2:92","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3615:5:92"},"nodeType":"YulFunctionCall","src":"3615:9:92"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"3605:6:92","type":""}]},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"3653:6:92"},{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"3673:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"3677:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3669:3:92"},"nodeType":"YulFunctionCall","src":"3669:13:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3688:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"3684:3:92"},"nodeType":"YulFunctionCall","src":"3684:7:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3665:3:92"},"nodeType":"YulFunctionCall","src":"3665:27:92"},{"kind":"number","nodeType":"YulLiteral","src":"3694:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3661:3:92"},"nodeType":"YulFunctionCall","src":"3661:38:92"}],"functionName":{"name":"finalize_allocation","nodeType":"YulIdentifier","src":"3633:19:92"},"nodeType":"YulFunctionCall","src":"3633:67:92"},"nodeType":"YulExpressionStatement","src":"3633:67:92"},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"3716:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"3724:2:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3709:6:92"},"nodeType":"YulFunctionCall","src":"3709:18:92"},"nodeType":"YulExpressionStatement","src":"3709:18:92"},{"body":{"nodeType":"YulBlock","src":"3775:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3784:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3787:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3777:6:92"},"nodeType":"YulFunctionCall","src":"3777:12:92"},"nodeType":"YulExpressionStatement","src":"3777:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"3750:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"3758:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3746:3:92"},"nodeType":"YulFunctionCall","src":"3746:15:92"},{"kind":"number","nodeType":"YulLiteral","src":"3763:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3742:3:92"},"nodeType":"YulFunctionCall","src":"3742:26:92"},{"name":"end","nodeType":"YulIdentifier","src":"3770:3:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3739:2:92"},"nodeType":"YulFunctionCall","src":"3739:35:92"},"nodeType":"YulIf","src":"3736:55:92"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"3817:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"3825:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3813:3:92"},"nodeType":"YulFunctionCall","src":"3813:17:92"},{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"3836:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"3844:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3832:3:92"},"nodeType":"YulFunctionCall","src":"3832:17:92"},{"name":"_1","nodeType":"YulIdentifier","src":"3851:2:92"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"3800:12:92"},"nodeType":"YulFunctionCall","src":"3800:54:92"},"nodeType":"YulExpressionStatement","src":"3800:54:92"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"3878:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"3886:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3874:3:92"},"nodeType":"YulFunctionCall","src":"3874:15:92"},{"kind":"number","nodeType":"YulLiteral","src":"3891:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3870:3:92"},"nodeType":"YulFunctionCall","src":"3870:26:92"},{"kind":"number","nodeType":"YulLiteral","src":"3898:1:92","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3863:6:92"},"nodeType":"YulFunctionCall","src":"3863:37:92"},"nodeType":"YulExpressionStatement","src":"3863:37:92"},{"nodeType":"YulAssignment","src":"3909:15:92","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"3918:6:92"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"3909:5:92"}]}]},"name":"abi_decode_bytes","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"3401:6:92","type":""},{"name":"end","nodeType":"YulTypedName","src":"3409:3:92","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"3417:5:92","type":""}],"src":"3375:555:92"},{"body":{"nodeType":"YulBlock","src":"4132:746:92","statements":[{"body":{"nodeType":"YulBlock","src":"4179:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4188:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4191:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4181:6:92"},"nodeType":"YulFunctionCall","src":"4181:12:92"},"nodeType":"YulExpressionStatement","src":"4181:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"4153:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"4162:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4149:3:92"},"nodeType":"YulFunctionCall","src":"4149:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"4174:3:92","type":"","value":"160"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4145:3:92"},"nodeType":"YulFunctionCall","src":"4145:33:92"},"nodeType":"YulIf","src":"4142:53:92"},{"nodeType":"YulAssignment","src":"4204:39:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4233:9:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"4214:18:92"},"nodeType":"YulFunctionCall","src":"4214:29:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"4204:6:92"}]},{"nodeType":"YulAssignment","src":"4252:48:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4285:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4296:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4281:3:92"},"nodeType":"YulFunctionCall","src":"4281:18:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"4262:18:92"},"nodeType":"YulFunctionCall","src":"4262:38:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"4252:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"4309:46:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4340:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4351:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4336:3:92"},"nodeType":"YulFunctionCall","src":"4336:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4323:12:92"},"nodeType":"YulFunctionCall","src":"4323:32:92"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4313:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4364:28:92","value":{"kind":"number","nodeType":"YulLiteral","src":"4374:18:92","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"4368:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"4419:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4428:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4431:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4421:6:92"},"nodeType":"YulFunctionCall","src":"4421:12:92"},"nodeType":"YulExpressionStatement","src":"4421:12:92"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"4407:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"4415:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4404:2:92"},"nodeType":"YulFunctionCall","src":"4404:14:92"},"nodeType":"YulIf","src":"4401:34:92"},{"nodeType":"YulAssignment","src":"4444:71:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4487:9:92"},{"name":"offset","nodeType":"YulIdentifier","src":"4498:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4483:3:92"},"nodeType":"YulFunctionCall","src":"4483:22:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4507:7:92"}],"functionName":{"name":"abi_decode_array_uint256_dyn","nodeType":"YulIdentifier","src":"4454:28:92"},"nodeType":"YulFunctionCall","src":"4454:61:92"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"4444:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"4524:48:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4557:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4568:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4553:3:92"},"nodeType":"YulFunctionCall","src":"4553:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4540:12:92"},"nodeType":"YulFunctionCall","src":"4540:32:92"},"variables":[{"name":"offset_1","nodeType":"YulTypedName","src":"4528:8:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"4601:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4610:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4613:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4603:6:92"},"nodeType":"YulFunctionCall","src":"4603:12:92"},"nodeType":"YulExpressionStatement","src":"4603:12:92"}]},"condition":{"arguments":[{"name":"offset_1","nodeType":"YulIdentifier","src":"4587:8:92"},{"name":"_1","nodeType":"YulIdentifier","src":"4597:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4584:2:92"},"nodeType":"YulFunctionCall","src":"4584:16:92"},"nodeType":"YulIf","src":"4581:36:92"},{"nodeType":"YulAssignment","src":"4626:73:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4669:9:92"},{"name":"offset_1","nodeType":"YulIdentifier","src":"4680:8:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4665:3:92"},"nodeType":"YulFunctionCall","src":"4665:24:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4691:7:92"}],"functionName":{"name":"abi_decode_array_uint256_dyn","nodeType":"YulIdentifier","src":"4636:28:92"},"nodeType":"YulFunctionCall","src":"4636:63:92"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"4626:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"4708:49:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4741:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4752:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4737:3:92"},"nodeType":"YulFunctionCall","src":"4737:19:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4724:12:92"},"nodeType":"YulFunctionCall","src":"4724:33:92"},"variables":[{"name":"offset_2","nodeType":"YulTypedName","src":"4712:8:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"4786:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4795:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4798:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4788:6:92"},"nodeType":"YulFunctionCall","src":"4788:12:92"},"nodeType":"YulExpressionStatement","src":"4788:12:92"}]},"condition":{"arguments":[{"name":"offset_2","nodeType":"YulIdentifier","src":"4772:8:92"},{"name":"_1","nodeType":"YulIdentifier","src":"4782:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4769:2:92"},"nodeType":"YulFunctionCall","src":"4769:16:92"},"nodeType":"YulIf","src":"4766:36:92"},{"nodeType":"YulAssignment","src":"4811:61:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4842:9:92"},{"name":"offset_2","nodeType":"YulIdentifier","src":"4853:8:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4838:3:92"},"nodeType":"YulFunctionCall","src":"4838:24:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4864:7:92"}],"functionName":{"name":"abi_decode_bytes","nodeType":"YulIdentifier","src":"4821:16:92"},"nodeType":"YulFunctionCall","src":"4821:51:92"},"variableNames":[{"name":"value4","nodeType":"YulIdentifier","src":"4811:6:92"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptrt_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4066:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"4077:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"4089:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"4097:6:92","type":""},{"name":"value2","nodeType":"YulTypedName","src":"4105:6:92","type":""},{"name":"value3","nodeType":"YulTypedName","src":"4113:6:92","type":""},{"name":"value4","nodeType":"YulTypedName","src":"4121:6:92","type":""}],"src":"3935:943:92"},{"body":{"nodeType":"YulBlock","src":"5020:1071:92","statements":[{"body":{"nodeType":"YulBlock","src":"5066:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5075:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5078:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5068:6:92"},"nodeType":"YulFunctionCall","src":"5068:12:92"},"nodeType":"YulExpressionStatement","src":"5068:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"5041:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"5050:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5037:3:92"},"nodeType":"YulFunctionCall","src":"5037:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"5062:2:92","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"5033:3:92"},"nodeType":"YulFunctionCall","src":"5033:32:92"},"nodeType":"YulIf","src":"5030:52:92"},{"nodeType":"YulVariableDeclaration","src":"5091:37:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5118:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"5105:12:92"},"nodeType":"YulFunctionCall","src":"5105:23:92"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"5095:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5137:28:92","value":{"kind":"number","nodeType":"YulLiteral","src":"5147:18:92","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"5141:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"5192:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5201:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5204:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5194:6:92"},"nodeType":"YulFunctionCall","src":"5194:12:92"},"nodeType":"YulExpressionStatement","src":"5194:12:92"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"5180:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"5188:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5177:2:92"},"nodeType":"YulFunctionCall","src":"5177:14:92"},"nodeType":"YulIf","src":"5174:34:92"},{"nodeType":"YulVariableDeclaration","src":"5217:32:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5231:9:92"},{"name":"offset","nodeType":"YulIdentifier","src":"5242:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5227:3:92"},"nodeType":"YulFunctionCall","src":"5227:22:92"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"5221:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"5297:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5306:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5309:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5299:6:92"},"nodeType":"YulFunctionCall","src":"5299:12:92"},"nodeType":"YulExpressionStatement","src":"5299:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"5276:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"5280:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5272:3:92"},"nodeType":"YulFunctionCall","src":"5272:13:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"5287:7:92"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"5268:3:92"},"nodeType":"YulFunctionCall","src":"5268:27:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"5261:6:92"},"nodeType":"YulFunctionCall","src":"5261:35:92"},"nodeType":"YulIf","src":"5258:55:92"},{"nodeType":"YulVariableDeclaration","src":"5322:26:92","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"5345:2:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"5332:12:92"},"nodeType":"YulFunctionCall","src":"5332:16:92"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"5326:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5357:14:92","value":{"kind":"number","nodeType":"YulLiteral","src":"5367:4:92","type":"","value":"0x20"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"5361:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5380:53:92","value":{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"5430:2:92"}],"functionName":{"name":"array_allocation_size_array_uint256_dyn","nodeType":"YulIdentifier","src":"5390:39:92"},"nodeType":"YulFunctionCall","src":"5390:43:92"},"variables":[{"name":"_5","nodeType":"YulTypedName","src":"5384:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5442:23:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5462:2:92","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5456:5:92"},"nodeType":"YulFunctionCall","src":"5456:9:92"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"5446:6:92","type":""}]},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"5494:6:92"},{"name":"_5","nodeType":"YulIdentifier","src":"5502:2:92"}],"functionName":{"name":"finalize_allocation","nodeType":"YulIdentifier","src":"5474:19:92"},"nodeType":"YulFunctionCall","src":"5474:31:92"},"nodeType":"YulExpressionStatement","src":"5474:31:92"},{"nodeType":"YulVariableDeclaration","src":"5514:17:92","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"5525:6:92"},"variables":[{"name":"dst","nodeType":"YulTypedName","src":"5518:3:92","type":""}]},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"5547:6:92"},{"name":"_3","nodeType":"YulIdentifier","src":"5555:2:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5540:6:92"},"nodeType":"YulFunctionCall","src":"5540:18:92"},"nodeType":"YulExpressionStatement","src":"5540:18:92"},{"nodeType":"YulAssignment","src":"5567:22:92","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"5578:6:92"},{"name":"_4","nodeType":"YulIdentifier","src":"5586:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5574:3:92"},"nodeType":"YulFunctionCall","src":"5574:15:92"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"5567:3:92"}]},{"nodeType":"YulVariableDeclaration","src":"5598:42:92","value":{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"5620:2:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5628:1:92","type":"","value":"5"},{"name":"_3","nodeType":"YulIdentifier","src":"5631:2:92"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"5624:3:92"},"nodeType":"YulFunctionCall","src":"5624:10:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5616:3:92"},"nodeType":"YulFunctionCall","src":"5616:19:92"},{"name":"_4","nodeType":"YulIdentifier","src":"5637:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5612:3:92"},"nodeType":"YulFunctionCall","src":"5612:28:92"},"variables":[{"name":"srcEnd","nodeType":"YulTypedName","src":"5602:6:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"5672:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5681:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5684:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5674:6:92"},"nodeType":"YulFunctionCall","src":"5674:12:92"},"nodeType":"YulExpressionStatement","src":"5674:12:92"}]},"condition":{"arguments":[{"name":"srcEnd","nodeType":"YulIdentifier","src":"5655:6:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"5663:7:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5652:2:92"},"nodeType":"YulFunctionCall","src":"5652:19:92"},"nodeType":"YulIf","src":"5649:39:92"},{"nodeType":"YulVariableDeclaration","src":"5697:22:92","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"5712:2:92"},{"name":"_4","nodeType":"YulIdentifier","src":"5716:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5708:3:92"},"nodeType":"YulFunctionCall","src":"5708:11:92"},"variables":[{"name":"src","nodeType":"YulTypedName","src":"5701:3:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"5784:92:92","statements":[{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"5805:3:92"},{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"5829:3:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"5810:18:92"},"nodeType":"YulFunctionCall","src":"5810:23:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5798:6:92"},"nodeType":"YulFunctionCall","src":"5798:36:92"},"nodeType":"YulExpressionStatement","src":"5798:36:92"},{"nodeType":"YulAssignment","src":"5847:19:92","value":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"5858:3:92"},{"name":"_4","nodeType":"YulIdentifier","src":"5863:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5854:3:92"},"nodeType":"YulFunctionCall","src":"5854:12:92"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"5847:3:92"}]}]},"condition":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"5739:3:92"},{"name":"srcEnd","nodeType":"YulIdentifier","src":"5744:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"5736:2:92"},"nodeType":"YulFunctionCall","src":"5736:15:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"5752:23:92","statements":[{"nodeType":"YulAssignment","src":"5754:19:92","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"5765:3:92"},{"name":"_4","nodeType":"YulIdentifier","src":"5770:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5761:3:92"},"nodeType":"YulFunctionCall","src":"5761:12:92"},"variableNames":[{"name":"src","nodeType":"YulIdentifier","src":"5754:3:92"}]}]},"pre":{"nodeType":"YulBlock","src":"5732:3:92","statements":[]},"src":"5728:148:92"},{"nodeType":"YulAssignment","src":"5885:16:92","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"5895:6:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"5885:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"5910:48:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5943:9:92"},{"name":"_4","nodeType":"YulIdentifier","src":"5954:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5939:3:92"},"nodeType":"YulFunctionCall","src":"5939:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"5926:12:92"},"nodeType":"YulFunctionCall","src":"5926:32:92"},"variables":[{"name":"offset_1","nodeType":"YulTypedName","src":"5914:8:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"5987:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5996:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5999:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5989:6:92"},"nodeType":"YulFunctionCall","src":"5989:12:92"},"nodeType":"YulExpressionStatement","src":"5989:12:92"}]},"condition":{"arguments":[{"name":"offset_1","nodeType":"YulIdentifier","src":"5973:8:92"},{"name":"_1","nodeType":"YulIdentifier","src":"5983:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5970:2:92"},"nodeType":"YulFunctionCall","src":"5970:16:92"},"nodeType":"YulIf","src":"5967:36:92"},{"nodeType":"YulAssignment","src":"6012:73:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6055:9:92"},{"name":"offset_1","nodeType":"YulIdentifier","src":"6066:8:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6051:3:92"},"nodeType":"YulFunctionCall","src":"6051:24:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"6077:7:92"}],"functionName":{"name":"abi_decode_array_uint256_dyn","nodeType":"YulIdentifier","src":"6022:28:92"},"nodeType":"YulFunctionCall","src":"6022:63:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"6012:6:92"}]}]},"name":"abi_decode_tuple_t_array$_t_address_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4978:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"4989:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"5001:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"5009:6:92","type":""}],"src":"4883:1208:92"},{"body":{"nodeType":"YulBlock","src":"6157:374:92","statements":[{"nodeType":"YulVariableDeclaration","src":"6167:26:92","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6187:5:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6181:5:92"},"nodeType":"YulFunctionCall","src":"6181:12:92"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"6171:6:92","type":""}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6209:3:92"},{"name":"length","nodeType":"YulIdentifier","src":"6214:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6202:6:92"},"nodeType":"YulFunctionCall","src":"6202:19:92"},"nodeType":"YulExpressionStatement","src":"6202:19:92"},{"nodeType":"YulVariableDeclaration","src":"6230:14:92","value":{"kind":"number","nodeType":"YulLiteral","src":"6240:4:92","type":"","value":"0x20"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"6234:2:92","type":""}]},{"nodeType":"YulAssignment","src":"6253:19:92","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6264:3:92"},{"name":"_1","nodeType":"YulIdentifier","src":"6269:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6260:3:92"},"nodeType":"YulFunctionCall","src":"6260:12:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"6253:3:92"}]},{"nodeType":"YulVariableDeclaration","src":"6281:28:92","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6299:5:92"},{"name":"_1","nodeType":"YulIdentifier","src":"6306:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6295:3:92"},"nodeType":"YulFunctionCall","src":"6295:14:92"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"6285:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"6318:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"6327:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"6322:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"6386:120:92","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6407:3:92"},{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"6418:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6412:5:92"},"nodeType":"YulFunctionCall","src":"6412:13:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6400:6:92"},"nodeType":"YulFunctionCall","src":"6400:26:92"},"nodeType":"YulExpressionStatement","src":"6400:26:92"},{"nodeType":"YulAssignment","src":"6439:19:92","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6450:3:92"},{"name":"_1","nodeType":"YulIdentifier","src":"6455:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6446:3:92"},"nodeType":"YulFunctionCall","src":"6446:12:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"6439:3:92"}]},{"nodeType":"YulAssignment","src":"6471:25:92","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"6485:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"6493:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6481:3:92"},"nodeType":"YulFunctionCall","src":"6481:15:92"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"6471:6:92"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"6348:1:92"},{"name":"length","nodeType":"YulIdentifier","src":"6351:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"6345:2:92"},"nodeType":"YulFunctionCall","src":"6345:13:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"6359:18:92","statements":[{"nodeType":"YulAssignment","src":"6361:14:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"6370:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"6373:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6366:3:92"},"nodeType":"YulFunctionCall","src":"6366:9:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"6361:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"6341:3:92","statements":[]},"src":"6337:169:92"},{"nodeType":"YulAssignment","src":"6515:10:92","value":{"name":"pos","nodeType":"YulIdentifier","src":"6522:3:92"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"6515:3:92"}]}]},"name":"abi_encode_array_uint256_dyn","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"6134:5:92","type":""},{"name":"pos","nodeType":"YulTypedName","src":"6141:3:92","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"6149:3:92","type":""}],"src":"6096:435:92"},{"body":{"nodeType":"YulBlock","src":"6687:110:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6704:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6715:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6697:6:92"},"nodeType":"YulFunctionCall","src":"6697:21:92"},"nodeType":"YulExpressionStatement","src":"6697:21:92"},{"nodeType":"YulAssignment","src":"6727:64:92","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6764:6:92"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6776:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6787:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6772:3:92"},"nodeType":"YulFunctionCall","src":"6772:18:92"}],"functionName":{"name":"abi_encode_array_uint256_dyn","nodeType":"YulIdentifier","src":"6735:28:92"},"nodeType":"YulFunctionCall","src":"6735:56:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6727:4:92"}]}]},"name":"abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6656:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"6667:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6678:4:92","type":""}],"src":"6536:261:92"},{"body":{"nodeType":"YulBlock","src":"6886:263:92","statements":[{"body":{"nodeType":"YulBlock","src":"6932:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6941:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6944:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6934:6:92"},"nodeType":"YulFunctionCall","src":"6934:12:92"},"nodeType":"YulExpressionStatement","src":"6934:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"6907:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"6916:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6903:3:92"},"nodeType":"YulFunctionCall","src":"6903:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"6928:2:92","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6899:3:92"},"nodeType":"YulFunctionCall","src":"6899:32:92"},"nodeType":"YulIf","src":"6896:52:92"},{"nodeType":"YulAssignment","src":"6957:39:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6986:9:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"6967:18:92"},"nodeType":"YulFunctionCall","src":"6967:29:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"6957:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"7005:45:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7035:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7046:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7031:3:92"},"nodeType":"YulFunctionCall","src":"7031:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"7018:12:92"},"nodeType":"YulFunctionCall","src":"7018:32:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"7009:5:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"7103:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7112:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7115:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7105:6:92"},"nodeType":"YulFunctionCall","src":"7105:12:92"},"nodeType":"YulExpressionStatement","src":"7105:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7072:5:92"},{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7093:5:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"7086:6:92"},"nodeType":"YulFunctionCall","src":"7086:13:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"7079:6:92"},"nodeType":"YulFunctionCall","src":"7079:21:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"7069:2:92"},"nodeType":"YulFunctionCall","src":"7069:32:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"7062:6:92"},"nodeType":"YulFunctionCall","src":"7062:40:92"},"nodeType":"YulIf","src":"7059:60:92"},{"nodeType":"YulAssignment","src":"7128:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"7138:5:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"7128:6:92"}]}]},"name":"abi_decode_tuple_t_addresst_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6844:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"6855:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"6867:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"6875:6:92","type":""}],"src":"6802:347:92"},{"body":{"nodeType":"YulBlock","src":"7241:173:92","statements":[{"body":{"nodeType":"YulBlock","src":"7287:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7296:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7299:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7289:6:92"},"nodeType":"YulFunctionCall","src":"7289:12:92"},"nodeType":"YulExpressionStatement","src":"7289:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"7262:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"7271:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"7258:3:92"},"nodeType":"YulFunctionCall","src":"7258:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"7283:2:92","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"7254:3:92"},"nodeType":"YulFunctionCall","src":"7254:32:92"},"nodeType":"YulIf","src":"7251:52:92"},{"nodeType":"YulAssignment","src":"7312:39:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7341:9:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"7322:18:92"},"nodeType":"YulFunctionCall","src":"7322:29:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"7312:6:92"}]},{"nodeType":"YulAssignment","src":"7360:48:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7393:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7404:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7389:3:92"},"nodeType":"YulFunctionCall","src":"7389:18:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"7370:18:92"},"nodeType":"YulFunctionCall","src":"7370:38:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"7360:6:92"}]}]},"name":"abi_decode_tuple_t_addresst_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7199:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"7210:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"7222:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"7230:6:92","type":""}],"src":"7154:260:92"},{"body":{"nodeType":"YulBlock","src":"7566:459:92","statements":[{"body":{"nodeType":"YulBlock","src":"7613:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7622:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7625:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7615:6:92"},"nodeType":"YulFunctionCall","src":"7615:12:92"},"nodeType":"YulExpressionStatement","src":"7615:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"7587:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"7596:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"7583:3:92"},"nodeType":"YulFunctionCall","src":"7583:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"7608:3:92","type":"","value":"160"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"7579:3:92"},"nodeType":"YulFunctionCall","src":"7579:33:92"},"nodeType":"YulIf","src":"7576:53:92"},{"nodeType":"YulAssignment","src":"7638:39:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7667:9:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"7648:18:92"},"nodeType":"YulFunctionCall","src":"7648:29:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"7638:6:92"}]},{"nodeType":"YulAssignment","src":"7686:48:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7719:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7730:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7715:3:92"},"nodeType":"YulFunctionCall","src":"7715:18:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"7696:18:92"},"nodeType":"YulFunctionCall","src":"7696:38:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"7686:6:92"}]},{"nodeType":"YulAssignment","src":"7743:42:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7770:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7781:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7766:3:92"},"nodeType":"YulFunctionCall","src":"7766:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"7753:12:92"},"nodeType":"YulFunctionCall","src":"7753:32:92"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"7743:6:92"}]},{"nodeType":"YulAssignment","src":"7794:42:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7821:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7832:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7817:3:92"},"nodeType":"YulFunctionCall","src":"7817:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"7804:12:92"},"nodeType":"YulFunctionCall","src":"7804:32:92"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"7794:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"7845:47:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7876:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7887:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7872:3:92"},"nodeType":"YulFunctionCall","src":"7872:19:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"7859:12:92"},"nodeType":"YulFunctionCall","src":"7859:33:92"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"7849:6:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"7935:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7944:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7947:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7937:6:92"},"nodeType":"YulFunctionCall","src":"7937:12:92"},"nodeType":"YulExpressionStatement","src":"7937:12:92"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"7907:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"7915:18:92","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"7904:2:92"},"nodeType":"YulFunctionCall","src":"7904:30:92"},"nodeType":"YulIf","src":"7901:50:92"},{"nodeType":"YulAssignment","src":"7960:59:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7991:9:92"},{"name":"offset","nodeType":"YulIdentifier","src":"8002:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7987:3:92"},"nodeType":"YulFunctionCall","src":"7987:22:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"8011:7:92"}],"functionName":{"name":"abi_decode_bytes","nodeType":"YulIdentifier","src":"7970:16:92"},"nodeType":"YulFunctionCall","src":"7970:49:92"},"variableNames":[{"name":"value4","nodeType":"YulIdentifier","src":"7960:6:92"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7500:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"7511:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"7523:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"7531:6:92","type":""},{"name":"value2","nodeType":"YulTypedName","src":"7539:6:92","type":""},{"name":"value3","nodeType":"YulTypedName","src":"7547:6:92","type":""},{"name":"value4","nodeType":"YulTypedName","src":"7555:6:92","type":""}],"src":"7419:606:92"},{"body":{"nodeType":"YulBlock","src":"8204:232:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8221:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8232:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8214:6:92"},"nodeType":"YulFunctionCall","src":"8214:21:92"},"nodeType":"YulExpressionStatement","src":"8214:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8255:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8266:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8251:3:92"},"nodeType":"YulFunctionCall","src":"8251:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"8271:2:92","type":"","value":"42"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8244:6:92"},"nodeType":"YulFunctionCall","src":"8244:30:92"},"nodeType":"YulExpressionStatement","src":"8244:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8294:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8305:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8290:3:92"},"nodeType":"YulFunctionCall","src":"8290:18:92"},{"hexValue":"455243313135353a2061646472657373207a65726f206973206e6f7420612076","kind":"string","nodeType":"YulLiteral","src":"8310:34:92","type":"","value":"ERC1155: address zero is not a v"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8283:6:92"},"nodeType":"YulFunctionCall","src":"8283:62:92"},"nodeType":"YulExpressionStatement","src":"8283:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8365:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8376:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8361:3:92"},"nodeType":"YulFunctionCall","src":"8361:18:92"},{"hexValue":"616c6964206f776e6572","kind":"string","nodeType":"YulLiteral","src":"8381:12:92","type":"","value":"alid owner"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8354:6:92"},"nodeType":"YulFunctionCall","src":"8354:40:92"},"nodeType":"YulExpressionStatement","src":"8354:40:92"},{"nodeType":"YulAssignment","src":"8403:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8415:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8426:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8411:3:92"},"nodeType":"YulFunctionCall","src":"8411:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"8403:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_415a1b99e1fd4a18cf87c08995f5a9130182e8d76e9c17c497bfebaaef9265ad__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8181:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"8195:4:92","type":""}],"src":"8030:406:92"},{"body":{"nodeType":"YulBlock","src":"8496:325:92","statements":[{"nodeType":"YulAssignment","src":"8506:22:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8520:1:92","type":"","value":"1"},{"name":"data","nodeType":"YulIdentifier","src":"8523:4:92"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"8516:3:92"},"nodeType":"YulFunctionCall","src":"8516:12:92"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"8506:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"8537:38:92","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"8567:4:92"},{"kind":"number","nodeType":"YulLiteral","src":"8573:1:92","type":"","value":"1"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8563:3:92"},"nodeType":"YulFunctionCall","src":"8563:12:92"},"variables":[{"name":"outOfPlaceEncoding","nodeType":"YulTypedName","src":"8541:18:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"8614:31:92","statements":[{"nodeType":"YulAssignment","src":"8616:27:92","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"8630:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"8638:4:92","type":"","value":"0x7f"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8626:3:92"},"nodeType":"YulFunctionCall","src":"8626:17:92"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"8616:6:92"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"8594:18:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"8587:6:92"},"nodeType":"YulFunctionCall","src":"8587:26:92"},"nodeType":"YulIf","src":"8584:61:92"},{"body":{"nodeType":"YulBlock","src":"8704:111:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8725:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8732:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"8737:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"8728:3:92"},"nodeType":"YulFunctionCall","src":"8728:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8718:6:92"},"nodeType":"YulFunctionCall","src":"8718:31:92"},"nodeType":"YulExpressionStatement","src":"8718:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8769:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"8772:4:92","type":"","value":"0x22"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8762:6:92"},"nodeType":"YulFunctionCall","src":"8762:15:92"},"nodeType":"YulExpressionStatement","src":"8762:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8797:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8800:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8790:6:92"},"nodeType":"YulFunctionCall","src":"8790:15:92"},"nodeType":"YulExpressionStatement","src":"8790:15:92"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"8660:18:92"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"8683:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"8691:2:92","type":"","value":"32"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"8680:2:92"},"nodeType":"YulFunctionCall","src":"8680:14:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"8657:2:92"},"nodeType":"YulFunctionCall","src":"8657:38:92"},"nodeType":"YulIf","src":"8654:161:92"}]},"name":"extract_byte_array_length","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"8476:4:92","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"8485:6:92","type":""}],"src":"8441:380:92"},{"body":{"nodeType":"YulBlock","src":"9000:236:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9017:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9028:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9010:6:92"},"nodeType":"YulFunctionCall","src":"9010:21:92"},"nodeType":"YulExpressionStatement","src":"9010:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9051:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9062:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9047:3:92"},"nodeType":"YulFunctionCall","src":"9047:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"9067:2:92","type":"","value":"46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9040:6:92"},"nodeType":"YulFunctionCall","src":"9040:30:92"},"nodeType":"YulExpressionStatement","src":"9040:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9090:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9101:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9086:3:92"},"nodeType":"YulFunctionCall","src":"9086:18:92"},{"hexValue":"455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e","kind":"string","nodeType":"YulLiteral","src":"9106:34:92","type":"","value":"ERC1155: caller is not token own"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9079:6:92"},"nodeType":"YulFunctionCall","src":"9079:62:92"},"nodeType":"YulExpressionStatement","src":"9079:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9161:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9172:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9157:3:92"},"nodeType":"YulFunctionCall","src":"9157:18:92"},{"hexValue":"6572206f7220617070726f766564","kind":"string","nodeType":"YulLiteral","src":"9177:16:92","type":"","value":"er or approved"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9150:6:92"},"nodeType":"YulFunctionCall","src":"9150:44:92"},"nodeType":"YulExpressionStatement","src":"9150:44:92"},{"nodeType":"YulAssignment","src":"9203:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9215:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9226:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9211:3:92"},"nodeType":"YulFunctionCall","src":"9211:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"9203:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_47c72b42072ed6c647dec3a0a5c88bec44d3e901c64659bff94ecce0a0323156__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8977:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"8991:4:92","type":""}],"src":"8826:410:92"},{"body":{"nodeType":"YulBlock","src":"9415:231:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9432:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9443:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9425:6:92"},"nodeType":"YulFunctionCall","src":"9425:21:92"},"nodeType":"YulExpressionStatement","src":"9425:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9466:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9477:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9462:3:92"},"nodeType":"YulFunctionCall","src":"9462:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"9482:2:92","type":"","value":"41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9455:6:92"},"nodeType":"YulFunctionCall","src":"9455:30:92"},"nodeType":"YulExpressionStatement","src":"9455:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9505:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9516:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9501:3:92"},"nodeType":"YulFunctionCall","src":"9501:18:92"},{"hexValue":"455243313135353a206163636f756e747320616e6420696473206c656e677468","kind":"string","nodeType":"YulLiteral","src":"9521:34:92","type":"","value":"ERC1155: accounts and ids length"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9494:6:92"},"nodeType":"YulFunctionCall","src":"9494:62:92"},"nodeType":"YulExpressionStatement","src":"9494:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9576:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9587:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9572:3:92"},"nodeType":"YulFunctionCall","src":"9572:18:92"},{"hexValue":"206d69736d61746368","kind":"string","nodeType":"YulLiteral","src":"9592:11:92","type":"","value":" mismatch"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9565:6:92"},"nodeType":"YulFunctionCall","src":"9565:39:92"},"nodeType":"YulExpressionStatement","src":"9565:39:92"},{"nodeType":"YulAssignment","src":"9613:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9625:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9636:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9621:3:92"},"nodeType":"YulFunctionCall","src":"9621:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"9613:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_e155f5d69798c6205436a388a4f3a5fd42f54147b40f4d63a2c8071ff8a9fee5__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9392:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"9406:4:92","type":""}],"src":"9241:405:92"},{"body":{"nodeType":"YulBlock","src":"9683:95:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9700:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9707:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"9712:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"9703:3:92"},"nodeType":"YulFunctionCall","src":"9703:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9693:6:92"},"nodeType":"YulFunctionCall","src":"9693:31:92"},"nodeType":"YulExpressionStatement","src":"9693:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9740:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"9743:4:92","type":"","value":"0x32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9733:6:92"},"nodeType":"YulFunctionCall","src":"9733:15:92"},"nodeType":"YulExpressionStatement","src":"9733:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9764:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"9767:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9757:6:92"},"nodeType":"YulFunctionCall","src":"9757:15:92"},"nodeType":"YulExpressionStatement","src":"9757:15:92"}]},"name":"panic_error_0x32","nodeType":"YulFunctionDefinition","src":"9651:127:92"},{"body":{"nodeType":"YulBlock","src":"9815:95:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9832:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9839:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"9844:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"9835:3:92"},"nodeType":"YulFunctionCall","src":"9835:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9825:6:92"},"nodeType":"YulFunctionCall","src":"9825:31:92"},"nodeType":"YulExpressionStatement","src":"9825:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9872:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"9875:4:92","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9865:6:92"},"nodeType":"YulFunctionCall","src":"9865:15:92"},"nodeType":"YulExpressionStatement","src":"9865:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9896:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"9899:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9889:6:92"},"nodeType":"YulFunctionCall","src":"9889:15:92"},"nodeType":"YulExpressionStatement","src":"9889:15:92"}]},"name":"panic_error_0x11","nodeType":"YulFunctionDefinition","src":"9783:127:92"},{"body":{"nodeType":"YulBlock","src":"9962:88:92","statements":[{"body":{"nodeType":"YulBlock","src":"9993:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"9995:16:92"},"nodeType":"YulFunctionCall","src":"9995:18:92"},"nodeType":"YulExpressionStatement","src":"9995:18:92"}]},"condition":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9978:5:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9989:1:92","type":"","value":"0"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"9985:3:92"},"nodeType":"YulFunctionCall","src":"9985:6:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"9975:2:92"},"nodeType":"YulFunctionCall","src":"9975:17:92"},"nodeType":"YulIf","src":"9972:43:92"},{"nodeType":"YulAssignment","src":"10024:20:92","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"10035:5:92"},{"kind":"number","nodeType":"YulLiteral","src":"10042:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10031:3:92"},"nodeType":"YulFunctionCall","src":"10031:13:92"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"10024:3:92"}]}]},"name":"increment_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"9944:5:92","type":""}],"returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"9954:3:92","type":""}],"src":"9915:135:92"},{"body":{"nodeType":"YulBlock","src":"10229:230:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10246:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"10257:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10239:6:92"},"nodeType":"YulFunctionCall","src":"10239:21:92"},"nodeType":"YulExpressionStatement","src":"10239:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10280:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"10291:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10276:3:92"},"nodeType":"YulFunctionCall","src":"10276:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"10296:2:92","type":"","value":"40"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10269:6:92"},"nodeType":"YulFunctionCall","src":"10269:30:92"},"nodeType":"YulExpressionStatement","src":"10269:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10319:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"10330:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10315:3:92"},"nodeType":"YulFunctionCall","src":"10315:18:92"},{"hexValue":"455243313135353a2069647320616e6420616d6f756e7473206c656e67746820","kind":"string","nodeType":"YulLiteral","src":"10335:34:92","type":"","value":"ERC1155: ids and amounts length "}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10308:6:92"},"nodeType":"YulFunctionCall","src":"10308:62:92"},"nodeType":"YulExpressionStatement","src":"10308:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10390:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"10401:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10386:3:92"},"nodeType":"YulFunctionCall","src":"10386:18:92"},{"hexValue":"6d69736d61746368","kind":"string","nodeType":"YulLiteral","src":"10406:10:92","type":"","value":"mismatch"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10379:6:92"},"nodeType":"YulFunctionCall","src":"10379:38:92"},"nodeType":"YulExpressionStatement","src":"10379:38:92"},{"nodeType":"YulAssignment","src":"10426:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10438:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"10449:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10434:3:92"},"nodeType":"YulFunctionCall","src":"10434:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"10426:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_e909e0c9a8f96b4f9af03b716811ece20beb070be416893ed1d50619b5930807__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"10206:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"10220:4:92","type":""}],"src":"10055:404:92"},{"body":{"nodeType":"YulBlock","src":"10638:227:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10655:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"10666:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10648:6:92"},"nodeType":"YulFunctionCall","src":"10648:21:92"},"nodeType":"YulExpressionStatement","src":"10648:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10689:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"10700:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10685:3:92"},"nodeType":"YulFunctionCall","src":"10685:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"10705:2:92","type":"","value":"37"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10678:6:92"},"nodeType":"YulFunctionCall","src":"10678:30:92"},"nodeType":"YulExpressionStatement","src":"10678:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10728:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"10739:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10724:3:92"},"nodeType":"YulFunctionCall","src":"10724:18:92"},{"hexValue":"455243313135353a207472616e7366657220746f20746865207a65726f206164","kind":"string","nodeType":"YulLiteral","src":"10744:34:92","type":"","value":"ERC1155: transfer to the zero ad"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10717:6:92"},"nodeType":"YulFunctionCall","src":"10717:62:92"},"nodeType":"YulExpressionStatement","src":"10717:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10799:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"10810:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10795:3:92"},"nodeType":"YulFunctionCall","src":"10795:18:92"},{"hexValue":"6472657373","kind":"string","nodeType":"YulLiteral","src":"10815:7:92","type":"","value":"dress"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10788:6:92"},"nodeType":"YulFunctionCall","src":"10788:35:92"},"nodeType":"YulExpressionStatement","src":"10788:35:92"},{"nodeType":"YulAssignment","src":"10832:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10844:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"10855:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10840:3:92"},"nodeType":"YulFunctionCall","src":"10840:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"10832:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_6faf1c67f278b07c6771dcf4c315a89c21c0eaed11d9ab3d51774da1cfef545d__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"10615:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"10629:4:92","type":""}],"src":"10464:401:92"},{"body":{"nodeType":"YulBlock","src":"11044:232:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11061:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"11072:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11054:6:92"},"nodeType":"YulFunctionCall","src":"11054:21:92"},"nodeType":"YulExpressionStatement","src":"11054:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11095:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"11106:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11091:3:92"},"nodeType":"YulFunctionCall","src":"11091:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"11111:2:92","type":"","value":"42"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11084:6:92"},"nodeType":"YulFunctionCall","src":"11084:30:92"},"nodeType":"YulExpressionStatement","src":"11084:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11134:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"11145:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11130:3:92"},"nodeType":"YulFunctionCall","src":"11130:18:92"},{"hexValue":"455243313135353a20696e73756666696369656e742062616c616e636520666f","kind":"string","nodeType":"YulLiteral","src":"11150:34:92","type":"","value":"ERC1155: insufficient balance fo"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11123:6:92"},"nodeType":"YulFunctionCall","src":"11123:62:92"},"nodeType":"YulExpressionStatement","src":"11123:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11205:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"11216:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11201:3:92"},"nodeType":"YulFunctionCall","src":"11201:18:92"},{"hexValue":"72207472616e73666572","kind":"string","nodeType":"YulLiteral","src":"11221:12:92","type":"","value":"r transfer"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11194:6:92"},"nodeType":"YulFunctionCall","src":"11194:40:92"},"nodeType":"YulExpressionStatement","src":"11194:40:92"},{"nodeType":"YulAssignment","src":"11243:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11255:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"11266:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11251:3:92"},"nodeType":"YulFunctionCall","src":"11251:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"11243:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_8ac7e9556b567c1c94bb4daaa3c3a65be5ac686579615210cb910fb8cb8d65bf__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"11021:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"11035:4:92","type":""}],"src":"10870:406:92"},{"body":{"nodeType":"YulBlock","src":"11329:77:92","statements":[{"nodeType":"YulAssignment","src":"11339:16:92","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"11350:1:92"},{"name":"y","nodeType":"YulIdentifier","src":"11353:1:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11346:3:92"},"nodeType":"YulFunctionCall","src":"11346:9:92"},"variableNames":[{"name":"sum","nodeType":"YulIdentifier","src":"11339:3:92"}]},{"body":{"nodeType":"YulBlock","src":"11378:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"11380:16:92"},"nodeType":"YulFunctionCall","src":"11380:18:92"},"nodeType":"YulExpressionStatement","src":"11380:18:92"}]},"condition":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"11370:1:92"},{"name":"sum","nodeType":"YulIdentifier","src":"11373:3:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"11367:2:92"},"nodeType":"YulFunctionCall","src":"11367:10:92"},"nodeType":"YulIf","src":"11364:36:92"}]},"name":"checked_add_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"11312:1:92","type":""},{"name":"y","nodeType":"YulTypedName","src":"11315:1:92","type":""}],"returnVariables":[{"name":"sum","nodeType":"YulTypedName","src":"11321:3:92","type":""}],"src":"11281:125:92"},{"body":{"nodeType":"YulBlock","src":"11640:236:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11657:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"11668:2:92","type":"","value":"64"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11650:6:92"},"nodeType":"YulFunctionCall","src":"11650:21:92"},"nodeType":"YulExpressionStatement","src":"11650:21:92"},{"nodeType":"YulVariableDeclaration","src":"11680:70:92","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"11723:6:92"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11735:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"11746:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11731:3:92"},"nodeType":"YulFunctionCall","src":"11731:18:92"}],"functionName":{"name":"abi_encode_array_uint256_dyn","nodeType":"YulIdentifier","src":"11694:28:92"},"nodeType":"YulFunctionCall","src":"11694:56:92"},"variables":[{"name":"tail_1","nodeType":"YulTypedName","src":"11684:6:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11770:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"11781:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11766:3:92"},"nodeType":"YulFunctionCall","src":"11766:18:92"},{"arguments":[{"name":"tail_1","nodeType":"YulIdentifier","src":"11790:6:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"11798:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"11786:3:92"},"nodeType":"YulFunctionCall","src":"11786:22:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11759:6:92"},"nodeType":"YulFunctionCall","src":"11759:50:92"},"nodeType":"YulExpressionStatement","src":"11759:50:92"},{"nodeType":"YulAssignment","src":"11818:52:92","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"11855:6:92"},{"name":"tail_1","nodeType":"YulIdentifier","src":"11863:6:92"}],"functionName":{"name":"abi_encode_array_uint256_dyn","nodeType":"YulIdentifier","src":"11826:28:92"},"nodeType":"YulFunctionCall","src":"11826:44:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"11818:4:92"}]}]},"name":"abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"11601:9:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"11612:6:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"11620:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"11631:4:92","type":""}],"src":"11411:465:92"},{"body":{"nodeType":"YulBlock","src":"12055:231:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12072:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"12083:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12065:6:92"},"nodeType":"YulFunctionCall","src":"12065:21:92"},"nodeType":"YulExpressionStatement","src":"12065:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12106:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"12117:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12102:3:92"},"nodeType":"YulFunctionCall","src":"12102:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"12122:2:92","type":"","value":"41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12095:6:92"},"nodeType":"YulFunctionCall","src":"12095:30:92"},"nodeType":"YulExpressionStatement","src":"12095:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12145:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"12156:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12141:3:92"},"nodeType":"YulFunctionCall","src":"12141:18:92"},{"hexValue":"455243313135353a2073657474696e6720617070726f76616c20737461747573","kind":"string","nodeType":"YulLiteral","src":"12161:34:92","type":"","value":"ERC1155: setting approval status"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12134:6:92"},"nodeType":"YulFunctionCall","src":"12134:62:92"},"nodeType":"YulExpressionStatement","src":"12134:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12216:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"12227:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12212:3:92"},"nodeType":"YulFunctionCall","src":"12212:18:92"},{"hexValue":"20666f722073656c66","kind":"string","nodeType":"YulLiteral","src":"12232:11:92","type":"","value":" for self"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12205:6:92"},"nodeType":"YulFunctionCall","src":"12205:39:92"},"nodeType":"YulExpressionStatement","src":"12205:39:92"},{"nodeType":"YulAssignment","src":"12253:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12265:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"12276:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12261:3:92"},"nodeType":"YulFunctionCall","src":"12261:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"12253:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_df9806c6dc743de602e49918a67b580590d69ab768bdb59f977c0a884a91a7c2__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"12032:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"12046:4:92","type":""}],"src":"11881:405:92"},{"body":{"nodeType":"YulBlock","src":"12420:119:92","statements":[{"nodeType":"YulAssignment","src":"12430:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12442:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"12453:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12438:3:92"},"nodeType":"YulFunctionCall","src":"12438:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"12430:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12472:9:92"},{"name":"value0","nodeType":"YulIdentifier","src":"12483:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12465:6:92"},"nodeType":"YulFunctionCall","src":"12465:25:92"},"nodeType":"YulExpressionStatement","src":"12465:25:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12510:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"12521:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12506:3:92"},"nodeType":"YulFunctionCall","src":"12506:18:92"},{"name":"value1","nodeType":"YulIdentifier","src":"12526:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12499:6:92"},"nodeType":"YulFunctionCall","src":"12499:34:92"},"nodeType":"YulExpressionStatement","src":"12499:34:92"}]},"name":"abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"12381:9:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"12392:6:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"12400:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"12411:4:92","type":""}],"src":"12291:248:92"},{"body":{"nodeType":"YulBlock","src":"12875:519:92","statements":[{"nodeType":"YulVariableDeclaration","src":"12885:52:92","value":{"kind":"number","nodeType":"YulLiteral","src":"12895:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"12889:2:92","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12953:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"12968:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"12976:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"12964:3:92"},"nodeType":"YulFunctionCall","src":"12964:15:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12946:6:92"},"nodeType":"YulFunctionCall","src":"12946:34:92"},"nodeType":"YulExpressionStatement","src":"12946:34:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13000:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"13011:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12996:3:92"},"nodeType":"YulFunctionCall","src":"12996:18:92"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"13020:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"13028:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"13016:3:92"},"nodeType":"YulFunctionCall","src":"13016:15:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12989:6:92"},"nodeType":"YulFunctionCall","src":"12989:43:92"},"nodeType":"YulExpressionStatement","src":"12989:43:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13052:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"13063:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13048:3:92"},"nodeType":"YulFunctionCall","src":"13048:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"13068:3:92","type":"","value":"160"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13041:6:92"},"nodeType":"YulFunctionCall","src":"13041:31:92"},"nodeType":"YulExpressionStatement","src":"13041:31:92"},{"nodeType":"YulVariableDeclaration","src":"13081:71:92","value":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"13124:6:92"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13136:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"13147:3:92","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13132:3:92"},"nodeType":"YulFunctionCall","src":"13132:19:92"}],"functionName":{"name":"abi_encode_array_uint256_dyn","nodeType":"YulIdentifier","src":"13095:28:92"},"nodeType":"YulFunctionCall","src":"13095:57:92"},"variables":[{"name":"tail_1","nodeType":"YulTypedName","src":"13085:6:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13172:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"13183:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13168:3:92"},"nodeType":"YulFunctionCall","src":"13168:18:92"},{"arguments":[{"name":"tail_1","nodeType":"YulIdentifier","src":"13192:6:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"13200:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"13188:3:92"},"nodeType":"YulFunctionCall","src":"13188:22:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13161:6:92"},"nodeType":"YulFunctionCall","src":"13161:50:92"},"nodeType":"YulExpressionStatement","src":"13161:50:92"},{"nodeType":"YulVariableDeclaration","src":"13220:58:92","value":{"arguments":[{"name":"value3","nodeType":"YulIdentifier","src":"13263:6:92"},{"name":"tail_1","nodeType":"YulIdentifier","src":"13271:6:92"}],"functionName":{"name":"abi_encode_array_uint256_dyn","nodeType":"YulIdentifier","src":"13234:28:92"},"nodeType":"YulFunctionCall","src":"13234:44:92"},"variables":[{"name":"tail_2","nodeType":"YulTypedName","src":"13224:6:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13298:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"13309:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13294:3:92"},"nodeType":"YulFunctionCall","src":"13294:19:92"},{"arguments":[{"name":"tail_2","nodeType":"YulIdentifier","src":"13319:6:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"13327:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"13315:3:92"},"nodeType":"YulFunctionCall","src":"13315:22:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13287:6:92"},"nodeType":"YulFunctionCall","src":"13287:51:92"},"nodeType":"YulExpressionStatement","src":"13287:51:92"},{"nodeType":"YulAssignment","src":"13347:41:92","value":{"arguments":[{"name":"value4","nodeType":"YulIdentifier","src":"13373:6:92"},{"name":"tail_2","nodeType":"YulIdentifier","src":"13381:6:92"}],"functionName":{"name":"abi_encode_string","nodeType":"YulIdentifier","src":"13355:17:92"},"nodeType":"YulFunctionCall","src":"13355:33:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"13347:4:92"}]}]},"name":"abi_encode_tuple_t_address_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr_t_bytes_memory_ptr__to_t_address_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr_t_bytes_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"12812:9:92","type":""},{"name":"value4","nodeType":"YulTypedName","src":"12823:6:92","type":""},{"name":"value3","nodeType":"YulTypedName","src":"12831:6:92","type":""},{"name":"value2","nodeType":"YulTypedName","src":"12839:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"12847:6:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"12855:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"12866:4:92","type":""}],"src":"12544:850:92"},{"body":{"nodeType":"YulBlock","src":"13479:169:92","statements":[{"body":{"nodeType":"YulBlock","src":"13525:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"13534:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"13537:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"13527:6:92"},"nodeType":"YulFunctionCall","src":"13527:12:92"},"nodeType":"YulExpressionStatement","src":"13527:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"13500:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"13509:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"13496:3:92"},"nodeType":"YulFunctionCall","src":"13496:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"13521:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"13492:3:92"},"nodeType":"YulFunctionCall","src":"13492:32:92"},"nodeType":"YulIf","src":"13489:52:92"},{"nodeType":"YulVariableDeclaration","src":"13550:29:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13569:9:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"13563:5:92"},"nodeType":"YulFunctionCall","src":"13563:16:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"13554:5:92","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"13612:5:92"}],"functionName":{"name":"validator_revert_bytes4","nodeType":"YulIdentifier","src":"13588:23:92"},"nodeType":"YulFunctionCall","src":"13588:30:92"},"nodeType":"YulExpressionStatement","src":"13588:30:92"},{"nodeType":"YulAssignment","src":"13627:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"13637:5:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"13627:6:92"}]}]},"name":"abi_decode_tuple_t_bytes4_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"13445:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"13456:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"13468:6:92","type":""}],"src":"13399:249:92"},{"body":{"nodeType":"YulBlock","src":"13696:136:92","statements":[{"body":{"nodeType":"YulBlock","src":"13741:85:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"13770:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"13773:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"13776:1:92","type":"","value":"4"}],"functionName":{"name":"returndatacopy","nodeType":"YulIdentifier","src":"13755:14:92"},"nodeType":"YulFunctionCall","src":"13755:23:92"},"nodeType":"YulExpressionStatement","src":"13755:23:92"},{"nodeType":"YulAssignment","src":"13791:25:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"13802:3:92","type":"","value":"224"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"13813:1:92","type":"","value":"0"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"13807:5:92"},"nodeType":"YulFunctionCall","src":"13807:8:92"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"13798:3:92"},"nodeType":"YulFunctionCall","src":"13798:18:92"},"variableNames":[{"name":"sig","nodeType":"YulIdentifier","src":"13791:3:92"}]}]},"condition":{"arguments":[{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"13712:14:92"},"nodeType":"YulFunctionCall","src":"13712:16:92"},{"kind":"number","nodeType":"YulLiteral","src":"13730:1:92","type":"","value":"3"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"13709:2:92"},"nodeType":"YulFunctionCall","src":"13709:23:92"},"nodeType":"YulIf","src":"13706:120:92"}]},"name":"return_data_selector","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"sig","nodeType":"YulTypedName","src":"13688:3:92","type":""}],"src":"13653:179:92"},{"body":{"nodeType":"YulBlock","src":"13884:624:92","statements":[{"body":{"nodeType":"YulBlock","src":"13924:9:92","statements":[{"nodeType":"YulLeave","src":"13926:5:92"}]},"condition":{"arguments":[{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"13900:14:92"},"nodeType":"YulFunctionCall","src":"13900:16:92"},{"kind":"number","nodeType":"YulLiteral","src":"13918:4:92","type":"","value":"0x44"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"13897:2:92"},"nodeType":"YulFunctionCall","src":"13897:26:92"},"nodeType":"YulIf","src":"13894:39:92"},{"nodeType":"YulVariableDeclaration","src":"13942:21:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"13960:2:92","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"13954:5:92"},"nodeType":"YulFunctionCall","src":"13954:9:92"},"variables":[{"name":"data","nodeType":"YulTypedName","src":"13946:4:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"13972:16:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"13986:1:92","type":"","value":"3"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"13982:3:92"},"nodeType":"YulFunctionCall","src":"13982:6:92"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"13976:2:92","type":""}]},{"expression":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"14012:4:92"},{"kind":"number","nodeType":"YulLiteral","src":"14018:1:92","type":"","value":"4"},{"arguments":[{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"14025:14:92"},"nodeType":"YulFunctionCall","src":"14025:16:92"},{"name":"_1","nodeType":"YulIdentifier","src":"14043:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14021:3:92"},"nodeType":"YulFunctionCall","src":"14021:25:92"}],"functionName":{"name":"returndatacopy","nodeType":"YulIdentifier","src":"13997:14:92"},"nodeType":"YulFunctionCall","src":"13997:50:92"},"nodeType":"YulExpressionStatement","src":"13997:50:92"},{"nodeType":"YulVariableDeclaration","src":"14056:25:92","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"14076:4:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"14070:5:92"},"nodeType":"YulFunctionCall","src":"14070:11:92"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"14060:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"14090:26:92","value":{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"14100:14:92"},"nodeType":"YulFunctionCall","src":"14100:16:92"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"14094:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"14125:28:92","value":{"kind":"number","nodeType":"YulLiteral","src":"14135:18:92","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"14129:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"14211:9:92","statements":[{"nodeType":"YulLeave","src":"14213:5:92"}]},"condition":{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"14171:6:92"},{"name":"_3","nodeType":"YulIdentifier","src":"14179:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"14168:2:92"},"nodeType":"YulFunctionCall","src":"14168:14:92"},{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"14191:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"14199:4:92","type":"","value":"0x24"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14187:3:92"},"nodeType":"YulFunctionCall","src":"14187:17:92"},{"name":"_2","nodeType":"YulIdentifier","src":"14206:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"14184:2:92"},"nodeType":"YulFunctionCall","src":"14184:25:92"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"14165:2:92"},"nodeType":"YulFunctionCall","src":"14165:45:92"},"nodeType":"YulIf","src":"14162:58:92"},{"nodeType":"YulVariableDeclaration","src":"14229:28:92","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"14244:4:92"},{"name":"offset","nodeType":"YulIdentifier","src":"14250:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14240:3:92"},"nodeType":"YulFunctionCall","src":"14240:17:92"},"variables":[{"name":"msg","nodeType":"YulTypedName","src":"14233:3:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"14266:24:92","value":{"arguments":[{"name":"msg","nodeType":"YulIdentifier","src":"14286:3:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"14280:5:92"},"nodeType":"YulFunctionCall","src":"14280:10:92"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"14270:6:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"14317:9:92","statements":[{"nodeType":"YulLeave","src":"14319:5:92"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"14305:6:92"},{"name":"_3","nodeType":"YulIdentifier","src":"14313:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"14302:2:92"},"nodeType":"YulFunctionCall","src":"14302:14:92"},"nodeType":"YulIf","src":"14299:27:92"},{"body":{"nodeType":"YulBlock","src":"14408:9:92","statements":[{"nodeType":"YulLeave","src":"14410:5:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"msg","nodeType":"YulIdentifier","src":"14349:3:92"},{"name":"length","nodeType":"YulIdentifier","src":"14354:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14345:3:92"},"nodeType":"YulFunctionCall","src":"14345:16:92"},{"kind":"number","nodeType":"YulLiteral","src":"14363:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14341:3:92"},"nodeType":"YulFunctionCall","src":"14341:27:92"},{"arguments":[{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"14378:4:92"},{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"14384:14:92"},"nodeType":"YulFunctionCall","src":"14384:16:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14374:3:92"},"nodeType":"YulFunctionCall","src":"14374:27:92"},{"name":"_1","nodeType":"YulIdentifier","src":"14403:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14370:3:92"},"nodeType":"YulFunctionCall","src":"14370:36:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"14338:2:92"},"nodeType":"YulFunctionCall","src":"14338:69:92"},"nodeType":"YulIf","src":"14335:82:92"},{"expression":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"14446:4:92"},{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"14460:6:92"},{"name":"length","nodeType":"YulIdentifier","src":"14468:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14456:3:92"},"nodeType":"YulFunctionCall","src":"14456:19:92"},{"kind":"number","nodeType":"YulLiteral","src":"14477:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14452:3:92"},"nodeType":"YulFunctionCall","src":"14452:30:92"}],"functionName":{"name":"finalize_allocation","nodeType":"YulIdentifier","src":"14426:19:92"},"nodeType":"YulFunctionCall","src":"14426:57:92"},"nodeType":"YulExpressionStatement","src":"14426:57:92"},{"nodeType":"YulAssignment","src":"14492:10:92","value":{"name":"msg","nodeType":"YulIdentifier","src":"14499:3:92"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"14492:3:92"}]}]},"name":"try_decode_error_message","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"13876:3:92","type":""}],"src":"13837:671:92"},{"body":{"nodeType":"YulBlock","src":"14687:242:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14704:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"14715:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"14697:6:92"},"nodeType":"YulFunctionCall","src":"14697:21:92"},"nodeType":"YulExpressionStatement","src":"14697:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14738:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"14749:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14734:3:92"},"nodeType":"YulFunctionCall","src":"14734:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"14754:2:92","type":"","value":"52"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"14727:6:92"},"nodeType":"YulFunctionCall","src":"14727:30:92"},"nodeType":"YulExpressionStatement","src":"14727:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14777:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"14788:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14773:3:92"},"nodeType":"YulFunctionCall","src":"14773:18:92"},{"hexValue":"455243313135353a207472616e7366657220746f206e6f6e2d45524331313535","kind":"string","nodeType":"YulLiteral","src":"14793:34:92","type":"","value":"ERC1155: transfer to non-ERC1155"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"14766:6:92"},"nodeType":"YulFunctionCall","src":"14766:62:92"},"nodeType":"YulExpressionStatement","src":"14766:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14848:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"14859:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14844:3:92"},"nodeType":"YulFunctionCall","src":"14844:18:92"},{"hexValue":"526563656976657220696d706c656d656e746572","kind":"string","nodeType":"YulLiteral","src":"14864:22:92","type":"","value":"Receiver implementer"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"14837:6:92"},"nodeType":"YulFunctionCall","src":"14837:50:92"},"nodeType":"YulExpressionStatement","src":"14837:50:92"},{"nodeType":"YulAssignment","src":"14896:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14908:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"14919:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14904:3:92"},"nodeType":"YulFunctionCall","src":"14904:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"14896:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_f591f7b75ffc499e05f8b34c3364b2eceff651378d9549db1d5d67c0d8255c5d__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"14664:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"14678:4:92","type":""}],"src":"14513:416:92"},{"body":{"nodeType":"YulBlock","src":"15108:230:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15125:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"15136:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15118:6:92"},"nodeType":"YulFunctionCall","src":"15118:21:92"},"nodeType":"YulExpressionStatement","src":"15118:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15159:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"15170:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15155:3:92"},"nodeType":"YulFunctionCall","src":"15155:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"15175:2:92","type":"","value":"40"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15148:6:92"},"nodeType":"YulFunctionCall","src":"15148:30:92"},"nodeType":"YulExpressionStatement","src":"15148:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15198:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"15209:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15194:3:92"},"nodeType":"YulFunctionCall","src":"15194:18:92"},{"hexValue":"455243313135353a204552433131353552656365697665722072656a65637465","kind":"string","nodeType":"YulLiteral","src":"15214:34:92","type":"","value":"ERC1155: ERC1155Receiver rejecte"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15187:6:92"},"nodeType":"YulFunctionCall","src":"15187:62:92"},"nodeType":"YulExpressionStatement","src":"15187:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15269:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"15280:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15265:3:92"},"nodeType":"YulFunctionCall","src":"15265:18:92"},{"hexValue":"6420746f6b656e73","kind":"string","nodeType":"YulLiteral","src":"15285:10:92","type":"","value":"d tokens"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15258:6:92"},"nodeType":"YulFunctionCall","src":"15258:38:92"},"nodeType":"YulExpressionStatement","src":"15258:38:92"},{"nodeType":"YulAssignment","src":"15305:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15317:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"15328:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15313:3:92"},"nodeType":"YulFunctionCall","src":"15313:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"15305:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_0587cccad73a80a7f013db13c596f4febc1968dc77e1d3589d5e7a509a3d6503__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"15085:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"15099:4:92","type":""}],"src":"14934:404:92"},{"body":{"nodeType":"YulBlock","src":"15574:353:92","statements":[{"nodeType":"YulVariableDeclaration","src":"15584:52:92","value":{"kind":"number","nodeType":"YulLiteral","src":"15594:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"15588:2:92","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15652:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"15667:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"15675:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"15663:3:92"},"nodeType":"YulFunctionCall","src":"15663:15:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15645:6:92"},"nodeType":"YulFunctionCall","src":"15645:34:92"},"nodeType":"YulExpressionStatement","src":"15645:34:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15699:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"15710:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15695:3:92"},"nodeType":"YulFunctionCall","src":"15695:18:92"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"15719:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"15727:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"15715:3:92"},"nodeType":"YulFunctionCall","src":"15715:15:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15688:6:92"},"nodeType":"YulFunctionCall","src":"15688:43:92"},"nodeType":"YulExpressionStatement","src":"15688:43:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15751:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"15762:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15747:3:92"},"nodeType":"YulFunctionCall","src":"15747:18:92"},{"name":"value2","nodeType":"YulIdentifier","src":"15767:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15740:6:92"},"nodeType":"YulFunctionCall","src":"15740:34:92"},"nodeType":"YulExpressionStatement","src":"15740:34:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15794:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"15805:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15790:3:92"},"nodeType":"YulFunctionCall","src":"15790:18:92"},{"name":"value3","nodeType":"YulIdentifier","src":"15810:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15783:6:92"},"nodeType":"YulFunctionCall","src":"15783:34:92"},"nodeType":"YulExpressionStatement","src":"15783:34:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15837:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"15848:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15833:3:92"},"nodeType":"YulFunctionCall","src":"15833:19:92"},{"kind":"number","nodeType":"YulLiteral","src":"15854:3:92","type":"","value":"160"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15826:6:92"},"nodeType":"YulFunctionCall","src":"15826:32:92"},"nodeType":"YulExpressionStatement","src":"15826:32:92"},{"nodeType":"YulAssignment","src":"15867:54:92","value":{"arguments":[{"name":"value4","nodeType":"YulIdentifier","src":"15893:6:92"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15905:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"15916:3:92","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15901:3:92"},"nodeType":"YulFunctionCall","src":"15901:19:92"}],"functionName":{"name":"abi_encode_string","nodeType":"YulIdentifier","src":"15875:17:92"},"nodeType":"YulFunctionCall","src":"15875:46:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"15867:4:92"}]}]},"name":"abi_encode_tuple_t_address_t_address_t_uint256_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_uint256_t_bytes_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"15511:9:92","type":""},{"name":"value4","nodeType":"YulTypedName","src":"15522:6:92","type":""},{"name":"value3","nodeType":"YulTypedName","src":"15530:6:92","type":""},{"name":"value2","nodeType":"YulTypedName","src":"15538:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"15546:6:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"15554:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"15565:4:92","type":""}],"src":"15343:584:92"}]},"contents":"{\n { }\n function abi_decode_address(offset) -> value\n {\n value := calldataload(offset)\n if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := calldataload(add(headStart, 32))\n }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function validator_revert_bytes4(value)\n {\n if iszero(eq(value, and(value, shl(224, 0xffffffff)))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_bytes4(value)\n value0 := value\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := calldataload(headStart)\n }\n function abi_encode_string(value, pos) -> end\n {\n let length := mload(value)\n mstore(pos, length)\n let i := 0\n for { } lt(i, length) { i := add(i, 0x20) }\n {\n let _1 := 0x20\n mstore(add(add(pos, i), _1), mload(add(add(value, i), _1)))\n }\n mstore(add(add(pos, length), 0x20), 0)\n end := add(add(pos, and(add(length, 31), not(31))), 0x20)\n }\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n mstore(headStart, 32)\n tail := abi_encode_string(value0, add(headStart, 32))\n }\n function panic_error_0x41()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function finalize_allocation(memPtr, size)\n {\n let newFreePtr := add(memPtr, and(add(size, 31), not(31)))\n if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n }\n function array_allocation_size_array_uint256_dyn(length) -> size\n {\n if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n size := add(shl(5, length), 0x20)\n }\n function abi_decode_array_uint256_dyn(offset, end) -> array\n {\n if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n let _1 := calldataload(offset)\n let _2 := 0x20\n let _3 := array_allocation_size_array_uint256_dyn(_1)\n let memPtr := mload(64)\n finalize_allocation(memPtr, _3)\n let dst := memPtr\n mstore(memPtr, _1)\n dst := add(memPtr, _2)\n let srcEnd := add(add(offset, shl(5, _1)), _2)\n if gt(srcEnd, end) { revert(0, 0) }\n let src := add(offset, _2)\n for { } lt(src, srcEnd) { src := add(src, _2) }\n {\n mstore(dst, calldataload(src))\n dst := add(dst, _2)\n }\n array := memPtr\n }\n function abi_decode_bytes(offset, end) -> array\n {\n if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n let _1 := calldataload(offset)\n if gt(_1, 0xffffffffffffffff) { panic_error_0x41() }\n let memPtr := mload(64)\n finalize_allocation(memPtr, add(and(add(_1, 0x1f), not(31)), 0x20))\n mstore(memPtr, _1)\n if gt(add(add(offset, _1), 0x20), end) { revert(0, 0) }\n calldatacopy(add(memPtr, 0x20), add(offset, 0x20), _1)\n mstore(add(add(memPtr, _1), 0x20), 0)\n array := memPtr\n }\n function abi_decode_tuple_t_addresst_addresst_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptrt_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4\n {\n if slt(sub(dataEnd, headStart), 160) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := abi_decode_address(add(headStart, 32))\n let offset := calldataload(add(headStart, 64))\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n value2 := abi_decode_array_uint256_dyn(add(headStart, offset), dataEnd)\n let offset_1 := calldataload(add(headStart, 96))\n if gt(offset_1, _1) { revert(0, 0) }\n value3 := abi_decode_array_uint256_dyn(add(headStart, offset_1), dataEnd)\n let offset_2 := calldataload(add(headStart, 128))\n if gt(offset_2, _1) { revert(0, 0) }\n value4 := abi_decode_bytes(add(headStart, offset_2), dataEnd)\n }\n function abi_decode_tuple_t_array$_t_address_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptr(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n let offset := calldataload(headStart)\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n let _2 := add(headStart, offset)\n if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n let _3 := calldataload(_2)\n let _4 := 0x20\n let _5 := array_allocation_size_array_uint256_dyn(_3)\n let memPtr := mload(64)\n finalize_allocation(memPtr, _5)\n let dst := memPtr\n mstore(memPtr, _3)\n dst := add(memPtr, _4)\n let srcEnd := add(add(_2, shl(5, _3)), _4)\n if gt(srcEnd, dataEnd) { revert(0, 0) }\n let src := add(_2, _4)\n for { } lt(src, srcEnd) { src := add(src, _4) }\n {\n mstore(dst, abi_decode_address(src))\n dst := add(dst, _4)\n }\n value0 := memPtr\n let offset_1 := calldataload(add(headStart, _4))\n if gt(offset_1, _1) { revert(0, 0) }\n value1 := abi_decode_array_uint256_dyn(add(headStart, offset_1), dataEnd)\n }\n function abi_encode_array_uint256_dyn(value, pos) -> end\n {\n let length := mload(value)\n mstore(pos, length)\n let _1 := 0x20\n pos := add(pos, _1)\n let srcPtr := add(value, _1)\n let i := 0\n for { } lt(i, length) { i := add(i, 1) }\n {\n mstore(pos, mload(srcPtr))\n pos := add(pos, _1)\n srcPtr := add(srcPtr, _1)\n }\n end := pos\n }\n function abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n mstore(headStart, 32)\n tail := abi_encode_array_uint256_dyn(value0, add(headStart, 32))\n }\n function abi_decode_tuple_t_addresst_bool(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n let value := calldataload(add(headStart, 32))\n if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n value1 := value\n }\n function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := abi_decode_address(add(headStart, 32))\n }\n function abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4\n {\n if slt(sub(dataEnd, headStart), 160) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := abi_decode_address(add(headStart, 32))\n value2 := calldataload(add(headStart, 64))\n value3 := calldataload(add(headStart, 96))\n let offset := calldataload(add(headStart, 128))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n value4 := abi_decode_bytes(add(headStart, offset), dataEnd)\n }\n function abi_encode_tuple_t_stringliteral_415a1b99e1fd4a18cf87c08995f5a9130182e8d76e9c17c497bfebaaef9265ad__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 42)\n mstore(add(headStart, 64), \"ERC1155: address zero is not a v\")\n mstore(add(headStart, 96), \"alid owner\")\n tail := add(headStart, 128)\n }\n function extract_byte_array_length(data) -> length\n {\n length := shr(1, data)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n if eq(outOfPlaceEncoding, lt(length, 32))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n }\n function abi_encode_tuple_t_stringliteral_47c72b42072ed6c647dec3a0a5c88bec44d3e901c64659bff94ecce0a0323156__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 46)\n mstore(add(headStart, 64), \"ERC1155: caller is not token own\")\n mstore(add(headStart, 96), \"er or approved\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_e155f5d69798c6205436a388a4f3a5fd42f54147b40f4d63a2c8071ff8a9fee5__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 41)\n mstore(add(headStart, 64), \"ERC1155: accounts and ids length\")\n mstore(add(headStart, 96), \" mismatch\")\n tail := add(headStart, 128)\n }\n function panic_error_0x32()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n function panic_error_0x11()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n function increment_t_uint256(value) -> ret\n {\n if eq(value, not(0)) { panic_error_0x11() }\n ret := add(value, 1)\n }\n function abi_encode_tuple_t_stringliteral_e909e0c9a8f96b4f9af03b716811ece20beb070be416893ed1d50619b5930807__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 40)\n mstore(add(headStart, 64), \"ERC1155: ids and amounts length \")\n mstore(add(headStart, 96), \"mismatch\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_6faf1c67f278b07c6771dcf4c315a89c21c0eaed11d9ab3d51774da1cfef545d__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 37)\n mstore(add(headStart, 64), \"ERC1155: transfer to the zero ad\")\n mstore(add(headStart, 96), \"dress\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_8ac7e9556b567c1c94bb4daaa3c3a65be5ac686579615210cb910fb8cb8d65bf__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 42)\n mstore(add(headStart, 64), \"ERC1155: insufficient balance fo\")\n mstore(add(headStart, 96), \"r transfer\")\n tail := add(headStart, 128)\n }\n function checked_add_t_uint256(x, y) -> sum\n {\n sum := add(x, y)\n if gt(x, sum) { panic_error_0x11() }\n }\n function abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n {\n mstore(headStart, 64)\n let tail_1 := abi_encode_array_uint256_dyn(value0, add(headStart, 64))\n mstore(add(headStart, 32), sub(tail_1, headStart))\n tail := abi_encode_array_uint256_dyn(value1, tail_1)\n }\n function abi_encode_tuple_t_stringliteral_df9806c6dc743de602e49918a67b580590d69ab768bdb59f977c0a884a91a7c2__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 41)\n mstore(add(headStart, 64), \"ERC1155: setting approval status\")\n mstore(add(headStart, 96), \" for self\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n mstore(headStart, value0)\n mstore(add(headStart, 32), value1)\n }\n function abi_encode_tuple_t_address_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr_t_bytes_memory_ptr__to_t_address_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr_t_bytes_memory_ptr__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n {\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n mstore(add(headStart, 64), 160)\n let tail_1 := abi_encode_array_uint256_dyn(value2, add(headStart, 160))\n mstore(add(headStart, 96), sub(tail_1, headStart))\n let tail_2 := abi_encode_array_uint256_dyn(value3, tail_1)\n mstore(add(headStart, 128), sub(tail_2, headStart))\n tail := abi_encode_string(value4, tail_2)\n }\n function abi_decode_tuple_t_bytes4_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := mload(headStart)\n validator_revert_bytes4(value)\n value0 := value\n }\n function return_data_selector() -> sig\n {\n if gt(returndatasize(), 3)\n {\n returndatacopy(0, 0, 4)\n sig := shr(224, mload(0))\n }\n }\n function try_decode_error_message() -> ret\n {\n if lt(returndatasize(), 0x44) { leave }\n let data := mload(64)\n let _1 := not(3)\n returndatacopy(data, 4, add(returndatasize(), _1))\n let offset := mload(data)\n let _2 := returndatasize()\n let _3 := 0xffffffffffffffff\n if or(gt(offset, _3), gt(add(offset, 0x24), _2)) { leave }\n let msg := add(data, offset)\n let length := mload(msg)\n if gt(length, _3) { leave }\n if gt(add(add(msg, length), 0x20), add(add(data, returndatasize()), _1)) { leave }\n finalize_allocation(data, add(add(offset, length), 0x20))\n ret := msg\n }\n function abi_encode_tuple_t_stringliteral_f591f7b75ffc499e05f8b34c3364b2eceff651378d9549db1d5d67c0d8255c5d__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 52)\n mstore(add(headStart, 64), \"ERC1155: transfer to non-ERC1155\")\n mstore(add(headStart, 96), \"Receiver implementer\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_0587cccad73a80a7f013db13c596f4febc1968dc77e1d3589d5e7a509a3d6503__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 40)\n mstore(add(headStart, 64), \"ERC1155: ERC1155Receiver rejecte\")\n mstore(add(headStart, 96), \"d tokens\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_address_t_address_t_uint256_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_uint256_t_bytes_memory_ptr__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n {\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n mstore(add(headStart, 64), value2)\n mstore(add(headStart, 96), value3)\n mstore(add(headStart, 128), 160)\n tail := abi_encode_string(value4, add(headStart, 160))\n }\n}","id":92,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100875760003560e01c80634e1273f41161005b5780634e1273f41461010a578063a22cb4651461012a578063e985e9c51461013d578063f242432a1461017957600080fd5b8062fdd58e1461008c57806301ffc9a7146100b25780630e89341c146100d55780632eb2c2d6146100f5575b600080fd5b61009f61009a366004610dab565b61018c565b6040519081526020015b60405180910390f35b6100c56100c0366004610dee565b610238565b60405190151581526020016100a9565b6100e86100e3366004610e12565b610288565b6040516100a99190610e71565b610108610103366004610fd0565b61031c565b005b61011d61011836600461107a565b6103af565b6040516100a99190611180565b610108610138366004611193565b6104ed565b6100c561014b3660046111cf565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205460ff1690565b610108610187366004611202565b6104fc565b60006001600160a01b03831661020f5760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201527f616c6964206f776e65720000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b506000818152602081815260408083206001600160a01b03861684529091529020545b92915050565b60006001600160e01b03198216636cdb3d1360e11b148061026957506001600160e01b031982166303a24d0760e21b145b8061023257506301ffc9a760e01b6001600160e01b0319831614610232565b60606002805461029790611267565b80601f01602080910402602001604051908101604052809291908181526020018280546102c390611267565b80156103105780601f106102e557610100808354040283529160200191610310565b820191906000526020600020905b8154815290600101906020018083116102f357829003601f168201915b50505050509050919050565b6001600160a01b0385163314806103385750610338853361014b565b61039b5760405162461bcd60e51b815260206004820152602e60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201526d195c881bdc88185c1c1c9bdd995960921b6064820152608401610206565b6103a88585858585610588565b5050505050565b606081518351146104285760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e67746860448201527f206d69736d6174636800000000000000000000000000000000000000000000006064820152608401610206565b6000835167ffffffffffffffff81111561044457610444610e84565b60405190808252806020026020018201604052801561046d578160200160208202803683370190505b50905060005b84518110156104e5576104b8858281518110610491576104916112a1565b60200260200101518583815181106104ab576104ab6112a1565b602002602001015161018c565b8282815181106104ca576104ca6112a1565b60209081029190910101526104de816112cd565b9050610473565b509392505050565b6104f83383836107fb565b5050565b6001600160a01b0385163314806105185750610518853361014b565b61057b5760405162461bcd60e51b815260206004820152602e60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201526d195c881bdc88185c1c1c9bdd995960921b6064820152608401610206565b6103a885858585856108ef565b81518351146105ff5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060448201527f6d69736d617463680000000000000000000000000000000000000000000000006064820152608401610206565b6001600160a01b0384166106635760405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b6064820152608401610206565b3360005b845181101561078d576000858281518110610684576106846112a1565b6020026020010151905060008583815181106106a2576106a26112a1565b602090810291909101810151600084815280835260408082206001600160a01b038e1683529093529190912054909150818110156107355760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201526939103a3930b739b332b960b11b6064820152608401610206565b6000838152602081815260408083206001600160a01b038e8116855292528083208585039055908b168252812080548492906107729084906112e6565b9250508190555050505080610786906112cd565b9050610667565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb87876040516107dd9291906112f9565b60405180910390a46107f3818787878787610a9a565b505050505050565b816001600160a01b0316836001600160a01b0316036108825760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c2073746174757360448201527f20666f722073656c6600000000000000000000000000000000000000000000006064820152608401610206565b6001600160a01b03838116600081815260016020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0384166109535760405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b6064820152608401610206565b33600061095f85610c48565b9050600061096c85610c48565b90506000868152602081815260408083206001600160a01b038c168452909152902054858110156109f25760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201526939103a3930b739b332b960b11b6064820152608401610206565b6000878152602081815260408083206001600160a01b038d8116855292528083208985039055908a16825281208054889290610a2f9084906112e6565b909155505060408051888152602081018890526001600160a01b03808b16928c821692918816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4610a8f848a8a8a8a8a610c93565b505050505050505050565b6001600160a01b0384163b156107f35760405163bc197c8160e01b81526001600160a01b0385169063bc197c8190610ade9089908990889088908890600401611327565b6020604051808303816000875af1925050508015610b19575060408051601f3d908101601f19168201909252610b1691810190611385565b60015b610bce57610b256113a2565b806308c379a003610b5e5750610b396113be565b80610b445750610b60565b8060405162461bcd60e51b81526004016102069190610e71565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e2d4552433131353560448201527f526563656976657220696d706c656d656e7465720000000000000000000000006064820152608401610206565b6001600160e01b0319811663bc197c8160e01b14610c3f5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a656374656044820152676420746f6b656e7360c01b6064820152608401610206565b50505050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110610c8257610c826112a1565b602090810291909101015292915050565b6001600160a01b0384163b156107f35760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e6190610cd79089908990889088908890600401611448565b6020604051808303816000875af1925050508015610d12575060408051601f3d908101601f19168201909252610d0f91810190611385565b60015b610d1e57610b256113a2565b6001600160e01b0319811663f23a6e6160e01b14610c3f5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a656374656044820152676420746f6b656e7360c01b6064820152608401610206565b80356001600160a01b0381168114610da657600080fd5b919050565b60008060408385031215610dbe57600080fd5b610dc783610d8f565b946020939093013593505050565b6001600160e01b031981168114610deb57600080fd5b50565b600060208284031215610e0057600080fd5b8135610e0b81610dd5565b9392505050565b600060208284031215610e2457600080fd5b5035919050565b6000815180845260005b81811015610e5157602081850181015186830182015201610e35565b506000602082860101526020601f19601f83011685010191505092915050565b602081526000610e0b6020830184610e2b565b634e487b7160e01b600052604160045260246000fd5b601f8201601f1916810167ffffffffffffffff81118282101715610ec057610ec0610e84565b6040525050565b600067ffffffffffffffff821115610ee157610ee1610e84565b5060051b60200190565b600082601f830112610efc57600080fd5b81356020610f0982610ec7565b604051610f168282610e9a565b83815260059390931b8501820192828101915086841115610f3657600080fd5b8286015b84811015610f515780358352918301918301610f3a565b509695505050505050565b600082601f830112610f6d57600080fd5b813567ffffffffffffffff811115610f8757610f87610e84565b604051610f9e601f8301601f191660200182610e9a565b818152846020838601011115610fb357600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a08688031215610fe857600080fd5b610ff186610d8f565b9450610fff60208701610d8f565b9350604086013567ffffffffffffffff8082111561101c57600080fd5b61102889838a01610eeb565b9450606088013591508082111561103e57600080fd5b61104a89838a01610eeb565b9350608088013591508082111561106057600080fd5b5061106d88828901610f5c565b9150509295509295909350565b6000806040838503121561108d57600080fd5b823567ffffffffffffffff808211156110a557600080fd5b818501915085601f8301126110b957600080fd5b813560206110c682610ec7565b6040516110d38282610e9a565b83815260059390931b85018201928281019150898411156110f357600080fd5b948201945b838610156111185761110986610d8f565b825294820194908201906110f8565b9650508601359250508082111561112e57600080fd5b5061113b85828601610eeb565b9150509250929050565b600081518084526020808501945080840160005b8381101561117557815187529582019590820190600101611159565b509495945050505050565b602081526000610e0b6020830184611145565b600080604083850312156111a657600080fd5b6111af83610d8f565b9150602083013580151581146111c457600080fd5b809150509250929050565b600080604083850312156111e257600080fd5b6111eb83610d8f565b91506111f960208401610d8f565b90509250929050565b600080600080600060a0868803121561121a57600080fd5b61122386610d8f565b945061123160208701610d8f565b93506040860135925060608601359150608086013567ffffffffffffffff81111561125b57600080fd5b61106d88828901610f5c565b600181811c9082168061127b57607f821691505b60208210810361129b57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016112df576112df6112b7565b5060010190565b80820180821115610232576102326112b7565b60408152600061130c6040830185611145565b828103602084015261131e8185611145565b95945050505050565b60006001600160a01b03808816835280871660208401525060a0604083015261135360a0830186611145565b82810360608401526113658186611145565b905082810360808401526113798185610e2b565b98975050505050505050565b60006020828403121561139757600080fd5b8151610e0b81610dd5565b600060033d11156113bb5760046000803e5060005160e01c5b90565b600060443d10156113cc5790565b6040516003193d81016004833e81513d67ffffffffffffffff81602484011181841117156113fc57505050505090565b82850191508151818111156114145750505050505090565b843d870101602082850101111561142e5750505050505090565b61143d60208286010187610e9a565b509095945050505050565b60006001600160a01b03808816835280871660208401525084604083015283606083015260a0608083015261148060a0830184610e2b565b97965050505050505056fea164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x87 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x4E1273F4 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x4E1273F4 EQ PUSH2 0x10A JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x12A JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x13D JUMPI DUP1 PUSH4 0xF242432A EQ PUSH2 0x179 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH3 0xFDD58E EQ PUSH2 0x8C JUMPI DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xB2 JUMPI DUP1 PUSH4 0xE89341C EQ PUSH2 0xD5 JUMPI DUP1 PUSH4 0x2EB2C2D6 EQ PUSH2 0xF5 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9F PUSH2 0x9A CALLDATASIZE PUSH1 0x4 PUSH2 0xDAB JUMP JUMPDEST PUSH2 0x18C JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xC5 PUSH2 0xC0 CALLDATASIZE PUSH1 0x4 PUSH2 0xDEE JUMP JUMPDEST PUSH2 0x238 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xA9 JUMP JUMPDEST PUSH2 0xE8 PUSH2 0xE3 CALLDATASIZE PUSH1 0x4 PUSH2 0xE12 JUMP JUMPDEST PUSH2 0x288 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA9 SWAP2 SWAP1 PUSH2 0xE71 JUMP JUMPDEST PUSH2 0x108 PUSH2 0x103 CALLDATASIZE PUSH1 0x4 PUSH2 0xFD0 JUMP JUMPDEST PUSH2 0x31C JUMP JUMPDEST STOP JUMPDEST PUSH2 0x11D PUSH2 0x118 CALLDATASIZE PUSH1 0x4 PUSH2 0x107A JUMP JUMPDEST PUSH2 0x3AF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA9 SWAP2 SWAP1 PUSH2 0x1180 JUMP JUMPDEST PUSH2 0x108 PUSH2 0x138 CALLDATASIZE PUSH1 0x4 PUSH2 0x1193 JUMP JUMPDEST PUSH2 0x4ED JUMP JUMPDEST PUSH2 0xC5 PUSH2 0x14B CALLDATASIZE PUSH1 0x4 PUSH2 0x11CF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x108 PUSH2 0x187 CALLDATASIZE PUSH1 0x4 PUSH2 0x1202 JUMP JUMPDEST PUSH2 0x4FC JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x20F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A2061646472657373207A65726F206973206E6F7420612076 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x616C6964206F776E657200000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x6CDB3D13 PUSH1 0xE1 SHL EQ DUP1 PUSH2 0x269 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x3A24D07 PUSH1 0xE2 SHL EQ JUMPDEST DUP1 PUSH2 0x232 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ PUSH2 0x232 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x2 DUP1 SLOAD PUSH2 0x297 SWAP1 PUSH2 0x1267 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x2C3 SWAP1 PUSH2 0x1267 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x310 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x2E5 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x310 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x2F3 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND CALLER EQ DUP1 PUSH2 0x338 JUMPI POP PUSH2 0x338 DUP6 CALLER PUSH2 0x14B JUMP JUMPDEST PUSH2 0x39B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A2063616C6C6572206973206E6F7420746F6B656E206F776E PUSH1 0x44 DUP3 ADD MSTORE PUSH14 0x195C881BDC88185C1C1C9BDD9959 PUSH1 0x92 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x206 JUMP JUMPDEST PUSH2 0x3A8 DUP6 DUP6 DUP6 DUP6 DUP6 PUSH2 0x588 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 MLOAD DUP4 MLOAD EQ PUSH2 0x428 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A206163636F756E747320616E6420696473206C656E677468 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x206D69736D617463680000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x206 JUMP JUMPDEST PUSH1 0x0 DUP4 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x444 JUMPI PUSH2 0x444 PUSH2 0xE84 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x46D JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x4E5 JUMPI PUSH2 0x4B8 DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x491 JUMPI PUSH2 0x491 PUSH2 0x12A1 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x4AB JUMPI PUSH2 0x4AB PUSH2 0x12A1 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x18C JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x4CA JUMPI PUSH2 0x4CA PUSH2 0x12A1 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH2 0x4DE DUP2 PUSH2 0x12CD JUMP JUMPDEST SWAP1 POP PUSH2 0x473 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x4F8 CALLER DUP4 DUP4 PUSH2 0x7FB JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND CALLER EQ DUP1 PUSH2 0x518 JUMPI POP PUSH2 0x518 DUP6 CALLER PUSH2 0x14B JUMP JUMPDEST PUSH2 0x57B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A2063616C6C6572206973206E6F7420746F6B656E206F776E PUSH1 0x44 DUP3 ADD MSTORE PUSH14 0x195C881BDC88185C1C1C9BDD9959 PUSH1 0x92 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x206 JUMP JUMPDEST PUSH2 0x3A8 DUP6 DUP6 DUP6 DUP6 DUP6 PUSH2 0x8EF JUMP JUMPDEST DUP2 MLOAD DUP4 MLOAD EQ PUSH2 0x5FF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x28 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A2069647320616E6420616D6F756E7473206C656E67746820 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6D69736D61746368000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x206 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x663 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A207472616E7366657220746F20746865207A65726F206164 PUSH1 0x44 DUP3 ADD MSTORE PUSH5 0x6472657373 PUSH1 0xD8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x206 JUMP JUMPDEST CALLER PUSH1 0x0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x78D JUMPI PUSH1 0x0 DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x684 JUMPI PUSH2 0x684 PUSH2 0x12A1 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x6A2 JUMPI PUSH2 0x6A2 PUSH2 0x12A1 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD PUSH1 0x0 DUP5 DUP2 MSTORE DUP1 DUP4 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP15 AND DUP4 MSTORE SWAP1 SWAP4 MSTORE SWAP2 SWAP1 SWAP2 KECCAK256 SLOAD SWAP1 SWAP2 POP DUP2 DUP2 LT ISZERO PUSH2 0x735 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A20696E73756666696369656E742062616C616E636520666F PUSH1 0x44 DUP3 ADD MSTORE PUSH10 0x39103A3930B739B332B9 PUSH1 0xB1 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x206 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP15 DUP2 AND DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 DUP6 DUP6 SUB SWAP1 SSTORE SWAP1 DUP12 AND DUP3 MSTORE DUP2 KECCAK256 DUP1 SLOAD DUP5 SWAP3 SWAP1 PUSH2 0x772 SWAP1 DUP5 SWAP1 PUSH2 0x12E6 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP POP POP POP DUP1 PUSH2 0x786 SWAP1 PUSH2 0x12CD JUMP JUMPDEST SWAP1 POP PUSH2 0x667 JUMP JUMPDEST POP DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB DUP8 DUP8 PUSH1 0x40 MLOAD PUSH2 0x7DD SWAP3 SWAP2 SWAP1 PUSH2 0x12F9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x7F3 DUP2 DUP8 DUP8 DUP8 DUP8 DUP8 PUSH2 0xA9A JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x882 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A2073657474696E6720617070726F76616C20737461747573 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x20666F722073656C660000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x206 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND DUP7 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP2 MLOAD SWAP2 DUP3 MSTORE PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x953 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A207472616E7366657220746F20746865207A65726F206164 PUSH1 0x44 DUP3 ADD MSTORE PUSH5 0x6472657373 PUSH1 0xD8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x206 JUMP JUMPDEST CALLER PUSH1 0x0 PUSH2 0x95F DUP6 PUSH2 0xC48 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x96C DUP6 PUSH2 0xC48 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD DUP6 DUP2 LT ISZERO PUSH2 0x9F2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A20696E73756666696369656E742062616C616E636520666F PUSH1 0x44 DUP3 ADD MSTORE PUSH10 0x39103A3930B739B332B9 PUSH1 0xB1 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x206 JUMP JUMPDEST PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP14 DUP2 AND DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 DUP10 DUP6 SUB SWAP1 SSTORE SWAP1 DUP11 AND DUP3 MSTORE DUP2 KECCAK256 DUP1 SLOAD DUP9 SWAP3 SWAP1 PUSH2 0xA2F SWAP1 DUP5 SWAP1 PUSH2 0x12E6 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x40 DUP1 MLOAD DUP9 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP9 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP12 AND SWAP3 DUP13 DUP3 AND SWAP3 SWAP2 DUP9 AND SWAP2 PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0xA8F DUP5 DUP11 DUP11 DUP11 DUP11 DUP11 PUSH2 0xC93 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO PUSH2 0x7F3 JUMPI PUSH1 0x40 MLOAD PUSH4 0xBC197C81 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0xBC197C81 SWAP1 PUSH2 0xADE SWAP1 DUP10 SWAP1 DUP10 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x1327 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0xB19 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0xB16 SWAP2 DUP2 ADD SWAP1 PUSH2 0x1385 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0xBCE JUMPI PUSH2 0xB25 PUSH2 0x13A2 JUMP JUMPDEST DUP1 PUSH4 0x8C379A0 SUB PUSH2 0xB5E JUMPI POP PUSH2 0xB39 PUSH2 0x13BE JUMP JUMPDEST DUP1 PUSH2 0xB44 JUMPI POP PUSH2 0xB60 JUMP JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x206 SWAP2 SWAP1 PUSH2 0xE71 JUMP JUMPDEST POP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x34 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A207472616E7366657220746F206E6F6E2D45524331313535 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x526563656976657220696D706C656D656E746572000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x206 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH4 0xBC197C81 PUSH1 0xE0 SHL EQ PUSH2 0xC3F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x28 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A204552433131353552656365697665722072656A65637465 PUSH1 0x44 DUP3 ADD MSTORE PUSH8 0x6420746F6B656E73 PUSH1 0xC0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x206 JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 PUSH1 0x0 SWAP2 SWAP1 PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP3 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xC82 JUMPI PUSH2 0xC82 PUSH2 0x12A1 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO PUSH2 0x7F3 JUMPI PUSH1 0x40 MLOAD PUSH4 0xF23A6E61 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0xF23A6E61 SWAP1 PUSH2 0xCD7 SWAP1 DUP10 SWAP1 DUP10 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x1448 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0xD12 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0xD0F SWAP2 DUP2 ADD SWAP1 PUSH2 0x1385 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0xD1E JUMPI PUSH2 0xB25 PUSH2 0x13A2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH4 0xF23A6E61 PUSH1 0xE0 SHL EQ PUSH2 0xC3F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x28 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A204552433131353552656365697665722072656A65637465 PUSH1 0x44 DUP3 ADD MSTORE PUSH8 0x6420746F6B656E73 PUSH1 0xC0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x206 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xDA6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xDBE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xDC7 DUP4 PUSH2 0xD8F JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0xDEB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xE00 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xE0B DUP2 PUSH2 0xDD5 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xE24 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xE51 JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD DUP3 ADD MSTORE ADD PUSH2 0xE35 JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x20 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x20 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0xE0B PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0xE2B JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0xEC0 JUMPI PUSH2 0xEC0 PUSH2 0xE84 JUMP JUMPDEST PUSH1 0x40 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0xEE1 JUMPI PUSH2 0xEE1 PUSH2 0xE84 JUMP JUMPDEST POP PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xEFC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x20 PUSH2 0xF09 DUP3 PUSH2 0xEC7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xF16 DUP3 DUP3 PUSH2 0xE9A JUMP JUMPDEST DUP4 DUP2 MSTORE PUSH1 0x5 SWAP4 SWAP1 SWAP4 SHL DUP6 ADD DUP3 ADD SWAP3 DUP3 DUP2 ADD SWAP2 POP DUP7 DUP5 GT ISZERO PUSH2 0xF36 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 DUP7 ADD JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0xF51 JUMPI DUP1 CALLDATALOAD DUP4 MSTORE SWAP2 DUP4 ADD SWAP2 DUP4 ADD PUSH2 0xF3A JUMP JUMPDEST POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xF6D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xF87 JUMPI PUSH2 0xF87 PUSH2 0xE84 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xF9E PUSH1 0x1F DUP4 ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 PUSH2 0xE9A JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 PUSH1 0x20 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0xFB3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP6 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 SWAP2 DUP2 ADD PUSH1 0x20 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0xFE8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xFF1 DUP7 PUSH2 0xD8F JUMP JUMPDEST SWAP5 POP PUSH2 0xFFF PUSH1 0x20 DUP8 ADD PUSH2 0xD8F JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x101C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1028 DUP10 DUP4 DUP11 ADD PUSH2 0xEEB JUMP JUMPDEST SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x103E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x104A DUP10 DUP4 DUP11 ADD PUSH2 0xEEB JUMP JUMPDEST SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x1060 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x106D DUP9 DUP3 DUP10 ADD PUSH2 0xF5C JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x108D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x10A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x10B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x20 PUSH2 0x10C6 DUP3 PUSH2 0xEC7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x10D3 DUP3 DUP3 PUSH2 0xE9A JUMP JUMPDEST DUP4 DUP2 MSTORE PUSH1 0x5 SWAP4 SWAP1 SWAP4 SHL DUP6 ADD DUP3 ADD SWAP3 DUP3 DUP2 ADD SWAP2 POP DUP10 DUP5 GT ISZERO PUSH2 0x10F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP5 DUP3 ADD SWAP5 JUMPDEST DUP4 DUP7 LT ISZERO PUSH2 0x1118 JUMPI PUSH2 0x1109 DUP7 PUSH2 0xD8F JUMP JUMPDEST DUP3 MSTORE SWAP5 DUP3 ADD SWAP5 SWAP1 DUP3 ADD SWAP1 PUSH2 0x10F8 JUMP JUMPDEST SWAP7 POP POP DUP7 ADD CALLDATALOAD SWAP3 POP POP DUP1 DUP3 GT ISZERO PUSH2 0x112E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x113B DUP6 DUP3 DUP7 ADD PUSH2 0xEEB JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP1 DUP5 ADD PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1175 JUMPI DUP2 MLOAD DUP8 MSTORE SWAP6 DUP3 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x1159 JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0xE0B PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x1145 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x11A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x11AF DUP4 PUSH2 0xD8F JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x11C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x11E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x11EB DUP4 PUSH2 0xD8F JUMP JUMPDEST SWAP2 POP PUSH2 0x11F9 PUSH1 0x20 DUP5 ADD PUSH2 0xD8F JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x121A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1223 DUP7 PUSH2 0xD8F JUMP JUMPDEST SWAP5 POP PUSH2 0x1231 PUSH1 0x20 DUP8 ADD PUSH2 0xD8F JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD SWAP2 POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x125B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x106D DUP9 DUP3 DUP10 ADD PUSH2 0xF5C JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x127B JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x129B JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 ADD PUSH2 0x12DF JUMPI PUSH2 0x12DF PUSH2 0x12B7 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x232 JUMPI PUSH2 0x232 PUSH2 0x12B7 JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 PUSH2 0x130C PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x1145 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x131E DUP2 DUP6 PUSH2 0x1145 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND DUP4 MSTORE DUP1 DUP8 AND PUSH1 0x20 DUP5 ADD MSTORE POP PUSH1 0xA0 PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x1353 PUSH1 0xA0 DUP4 ADD DUP7 PUSH2 0x1145 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x60 DUP5 ADD MSTORE PUSH2 0x1365 DUP2 DUP7 PUSH2 0x1145 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 SUB PUSH1 0x80 DUP5 ADD MSTORE PUSH2 0x1379 DUP2 DUP6 PUSH2 0xE2B JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1397 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xE0B DUP2 PUSH2 0xDD5 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x3 RETURNDATASIZE GT ISZERO PUSH2 0x13BB JUMPI PUSH1 0x4 PUSH1 0x0 DUP1 RETURNDATACOPY POP PUSH1 0x0 MLOAD PUSH1 0xE0 SHR JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x44 RETURNDATASIZE LT ISZERO PUSH2 0x13CC JUMPI SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x3 NOT RETURNDATASIZE DUP2 ADD PUSH1 0x4 DUP4 RETURNDATACOPY DUP2 MLOAD RETURNDATASIZE PUSH8 0xFFFFFFFFFFFFFFFF DUP2 PUSH1 0x24 DUP5 ADD GT DUP2 DUP5 GT OR ISZERO PUSH2 0x13FC JUMPI POP POP POP POP POP SWAP1 JUMP JUMPDEST DUP3 DUP6 ADD SWAP2 POP DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x1414 JUMPI POP POP POP POP POP POP SWAP1 JUMP JUMPDEST DUP5 RETURNDATASIZE DUP8 ADD ADD PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x142E JUMPI POP POP POP POP POP POP SWAP1 JUMP JUMPDEST PUSH2 0x143D PUSH1 0x20 DUP3 DUP7 ADD ADD DUP8 PUSH2 0xE9A JUMP JUMPDEST POP SWAP1 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND DUP4 MSTORE DUP1 DUP8 AND PUSH1 0x20 DUP5 ADD MSTORE POP DUP5 PUSH1 0x40 DUP4 ADD MSTORE DUP4 PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0xA0 PUSH1 0x80 DUP4 ADD MSTORE PUSH2 0x1480 PUSH1 0xA0 DUP4 ADD DUP5 PUSH2 0xE2B JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"570:16539:22:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2185:227;;;;;;:::i;:::-;;:::i;:::-;;;620:25:92;;;608:2;593:18;2185:227:22;;;;;;;;1236:305;;;;;;:::i;:::-;;:::i;:::-;;;1207:14:92;;1200:22;1182:41;;1170:2;1155:18;1236:305:22;1042:187:92;1940:103:22;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;4042:426::-;;;;;;:::i;:::-;;:::i;:::-;;2569:486;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;3123:153::-;;;;;;:::i;:::-;;:::i;3343:166::-;;;;;;:::i;:::-;-1:-1:-1;;;;;3465:27:22;;;3442:4;3465:27;;;:18;:27;;;;;;;;:37;;;;;;;;;;;;;;;3343:166;3576:394;;;;;;:::i;:::-;;:::i;2185:227::-;2271:7;-1:-1:-1;;;;;2298:21:22;;2290:76;;;;-1:-1:-1;;;2290:76:22;;8232:2:92;2290:76:22;;;8214:21:92;8271:2;8251:18;;;8244:30;8310:34;8290:18;;;8283:62;8381:12;8361:18;;;8354:40;8411:19;;2290:76:22;;;;;;;;;-1:-1:-1;2383:9:22;:13;;;;;;;;;;;-1:-1:-1;;;;;2383:22:22;;;;;;;;;;2185:227;;;;;:::o;1236:305::-;1338:4;-1:-1:-1;;;;;;1373:41:22;;-1:-1:-1;;;1373:41:22;;:109;;-1:-1:-1;;;;;;;1430:52:22;;-1:-1:-1;;;1430:52:22;1373:109;:161;;;-1:-1:-1;;;;;;;;;;937:40:38;;;1498:36:22;829:155:38;1940:103:22;2000:13;2032:4;2025:11;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1940:103;;;:::o;4042:426::-;-1:-1:-1;;;;;4267:20:22;;734:10:34;4267:20:22;;:60;;-1:-1:-1;4291:36:22;4308:4;734:10:34;3343:166:22;:::i;4291:36::-;4246:153;;;;-1:-1:-1;;;4246:153:22;;9028:2:92;4246:153:22;;;9010:21:92;9067:2;9047:18;;;9040:30;9106:34;9086:18;;;9079:62;-1:-1:-1;;;9157:18:92;;;9150:44;9211:19;;4246:153:22;8826:410:92;4246:153:22;4409:52;4432:4;4438:2;4442:3;4447:7;4456:4;4409:22;:52::i;:::-;4042:426;;;;;:::o;2569:486::-;2702:16;2757:3;:10;2738:8;:15;:29;2730:83;;;;-1:-1:-1;;;2730:83:22;;9443:2:92;2730:83:22;;;9425:21:92;9482:2;9462:18;;;9455:30;9521:34;9501:18;;;9494:62;9592:11;9572:18;;;9565:39;9621:19;;2730:83:22;9241:405:92;2730:83:22;2824:30;2871:8;:15;2857:30;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2857:30:22;;2824:63;;2903:9;2898:120;2922:8;:15;2918:1;:19;2898:120;;;2977:30;2987:8;2996:1;2987:11;;;;;;;;:::i;:::-;;;;;;;3000:3;3004:1;3000:6;;;;;;;;:::i;:::-;;;;;;;2977:9;:30::i;:::-;2958:13;2972:1;2958:16;;;;;;;;:::i;:::-;;;;;;;;;;:49;2939:3;;;:::i;:::-;;;2898:120;;;-1:-1:-1;3035:13:22;2569:486;-1:-1:-1;;;2569:486:22:o;3123:153::-;3217:52;734:10:34;3250:8:22;3260;3217:18;:52::i;:::-;3123:153;;:::o;3576:394::-;-1:-1:-1;;;;;3776:20:22;;734:10:34;3776:20:22;;:60;;-1:-1:-1;3800:36:22;3817:4;734:10:34;3343:166:22;:::i;3800:36::-;3755:153;;;;-1:-1:-1;;;3755:153:22;;9028:2:92;3755:153:22;;;9010:21:92;9067:2;9047:18;;;9040:30;9106:34;9086:18;;;9079:62;-1:-1:-1;;;9157:18:92;;;9150:44;9211:19;;3755:153:22;8826:410:92;3755:153:22;3918:45;3936:4;3942:2;3946;3950:6;3958:4;3918:17;:45::i;6211:1115::-;6431:7;:14;6417:3;:10;:28;6409:81;;;;-1:-1:-1;;;6409:81:22;;10257:2:92;6409:81:22;;;10239:21:92;10296:2;10276:18;;;10269:30;10335:34;10315:18;;;10308:62;10406:10;10386:18;;;10379:38;10434:19;;6409:81:22;10055:404:92;6409:81:22;-1:-1:-1;;;;;6508:16:22;;6500:66;;;;-1:-1:-1;;;6500:66:22;;10666:2:92;6500:66:22;;;10648:21:92;10705:2;10685:18;;;10678:30;10744:34;10724:18;;;10717:62;-1:-1:-1;;;10795:18:92;;;10788:35;10840:19;;6500:66:22;10464:401:92;6500:66:22;734:10:34;6577:16:22;6690:411;6714:3;:10;6710:1;:14;6690:411;;;6745:10;6758:3;6762:1;6758:6;;;;;;;;:::i;:::-;;;;;;;6745:19;;6778:14;6795:7;6803:1;6795:10;;;;;;;;:::i;:::-;;;;;;;;;;;;6820:19;6842:13;;;;;;;;;;-1:-1:-1;;;;;6842:19:22;;;;;;;;;;;;6795:10;;-1:-1:-1;6883:21:22;;;;6875:76;;;;-1:-1:-1;;;6875:76:22;;11072:2:92;6875:76:22;;;11054:21:92;11111:2;11091:18;;;11084:30;11150:34;11130:18;;;11123:62;-1:-1:-1;;;11201:18:92;;;11194:40;11251:19;;6875:76:22;10870:406:92;6875:76:22;6993:9;:13;;;;;;;;;;;-1:-1:-1;;;;;6993:19:22;;;;;;;;;;7015:20;;;6993:42;;7063:17;;;;;;;:27;;7015:20;;6993:9;7063:27;;7015:20;;7063:27;:::i;:::-;;;;;;;;6731:370;;;6726:3;;;;:::i;:::-;;;6690:411;;;;7146:2;-1:-1:-1;;;;;7116:47:22;7140:4;-1:-1:-1;;;;;7116:47:22;7130:8;-1:-1:-1;;;;;7116:47:22;;7150:3;7155:7;7116:47;;;;;;;:::i;:::-;;;;;;;;7244:75;7280:8;7290:4;7296:2;7300:3;7305:7;7314:4;7244:35;:75::i;:::-;6399:927;6211:1115;;;;;:::o;12790:293::-;12910:8;-1:-1:-1;;;;;12901:17:22;:5;-1:-1:-1;;;;;12901:17:22;;12893:71;;;;-1:-1:-1;;;12893:71:22;;12083:2:92;12893:71:22;;;12065:21:92;12122:2;12102:18;;;12095:30;12161:34;12141:18;;;12134:62;12232:11;12212:18;;;12205:39;12261:19;;12893:71:22;11881:405:92;12893:71:22;-1:-1:-1;;;;;12974:25:22;;;;;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;:46;;-1:-1:-1;;12974:46:22;;;;;;;;;;13035:41;;1182::92;;;13035::22;;1155:18:92;13035:41:22;;;;;;;12790:293;;;:::o;4918:947::-;-1:-1:-1;;;;;5099:16:22;;5091:66;;;;-1:-1:-1;;;5091:66:22;;10666:2:92;5091:66:22;;;10648:21:92;10705:2;10685:18;;;10678:30;10744:34;10724:18;;;10717:62;-1:-1:-1;;;10795:18:92;;;10788:35;10840:19;;5091:66:22;10464:401:92;5091:66:22;734:10:34;5168:16:22;5232:21;5250:2;5232:17;:21::i;:::-;5209:44;;5263:24;5290:25;5308:6;5290:17;:25::i;:::-;5263:52;;5397:19;5419:13;;;;;;;;;;;-1:-1:-1;;;;;5419:19:22;;;;;;;;;;5456:21;;;;5448:76;;;;-1:-1:-1;;;5448:76:22;;11072:2:92;5448:76:22;;;11054:21:92;11111:2;11091:18;;;11084:30;11150:34;11130:18;;;11123:62;-1:-1:-1;;;11201:18:92;;;11194:40;11251:19;;5448:76:22;10870:406:92;5448:76:22;5558:9;:13;;;;;;;;;;;-1:-1:-1;;;;;5558:19:22;;;;;;;;;;5580:20;;;5558:42;;5620:17;;;;;;;:27;;5580:20;;5558:9;5620:27;;5580:20;;5620:27;:::i;:::-;;;;-1:-1:-1;;5663:46:22;;;12465:25:92;;;12521:2;12506:18;;12499:34;;;-1:-1:-1;;;;;5663:46:22;;;;;;;;;;;;;;12438:18:92;5663:46:22;;;;;;;5790:68;5821:8;5831:4;5837:2;5841;5845:6;5853:4;5790:30;:68::i;:::-;5081:784;;;;4918:947;;;;;:::o;16116:792::-;-1:-1:-1;;;;;16348:13:22;;1702:19:33;:23;16344:558:22;;16383:79;;-1:-1:-1;;;16383:79:22;;-1:-1:-1;;;;;16383:43:22;;;;;:79;;16427:8;;16437:4;;16443:3;;16448:7;;16457:4;;16383:79;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16383:79:22;;;;;;;;-1:-1:-1;;16383:79:22;;;;;;;;;;;;:::i;:::-;;;16379:513;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;16768:6;16761:14;;-1:-1:-1;;;16761:14:22;;;;;;;;:::i;16379:513::-;;;16815:62;;-1:-1:-1;;;16815:62:22;;14715:2:92;16815:62:22;;;14697:21:92;14754:2;14734:18;;;14727:30;14793:34;14773:18;;;14766:62;14864:22;14844:18;;;14837:50;14904:19;;16815:62:22;14513:416:92;16379:513:22;-1:-1:-1;;;;;;16541:60:22;;-1:-1:-1;;;16541:60:22;16537:157;;16625:50;;-1:-1:-1;;;16625:50:22;;15136:2:92;16625:50:22;;;15118:21:92;15175:2;15155:18;;;15148:30;15214:34;15194:18;;;15187:62;-1:-1:-1;;;15265:18:92;;;15258:38;15313:19;;16625:50:22;14934:404:92;16537:157:22;16463:245;16116:792;;;;;;:::o;16914:193::-;17033:16;;;17047:1;17033:16;;;;;;;;;16980;;17008:22;;17033:16;;;;;;;;;;;;-1:-1:-1;17033:16:22;17008:41;;17070:7;17059:5;17065:1;17059:8;;;;;;;;:::i;:::-;;;;;;;;;;:18;17095:5;16914:193;-1:-1:-1;;16914:193:22:o;15385:725::-;-1:-1:-1;;;;;15592:13:22;;1702:19:33;:23;15588:516:22;;15627:72;;-1:-1:-1;;;15627:72:22;;-1:-1:-1;;;;;15627:38:22;;;;;:72;;15666:8;;15676:4;;15682:2;;15686:6;;15694:4;;15627:72;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15627:72:22;;;;;;;;-1:-1:-1;;15627:72:22;;;;;;;;;;;;:::i;:::-;;;15623:471;;;;:::i;:::-;-1:-1:-1;;;;;;15748:55:22;;-1:-1:-1;;;15748:55:22;15744:152;;15827:50;;-1:-1:-1;;;15827:50:22;;15136:2:92;15827:50:22;;;15118:21:92;15175:2;15155:18;;;15148:30;15214:34;15194:18;;;15187:62;-1:-1:-1;;;15265:18:92;;;15258:38;15313:19;;15827:50:22;14934:404:92;14:196;82:20;;-1:-1:-1;;;;;131:54:92;;121:65;;111:93;;200:1;197;190:12;111:93;14:196;;;:::o;215:254::-;283:6;291;344:2;332:9;323:7;319:23;315:32;312:52;;;360:1;357;350:12;312:52;383:29;402:9;383:29;:::i;:::-;373:39;459:2;444:18;;;;431:32;;-1:-1:-1;;;215:254:92:o;656:131::-;-1:-1:-1;;;;;;730:32:92;;720:43;;710:71;;777:1;774;767:12;710:71;656:131;:::o;792:245::-;850:6;903:2;891:9;882:7;878:23;874:32;871:52;;;919:1;916;909:12;871:52;958:9;945:23;977:30;1001:5;977:30;:::i;:::-;1026:5;792:245;-1:-1:-1;;;792:245:92:o;1234:180::-;1293:6;1346:2;1334:9;1325:7;1321:23;1317:32;1314:52;;;1362:1;1359;1352:12;1314:52;-1:-1:-1;1385:23:92;;1234:180;-1:-1:-1;1234:180:92:o;1419:423::-;1461:3;1499:5;1493:12;1526:6;1521:3;1514:19;1551:1;1561:162;1575:6;1572:1;1569:13;1561:162;;;1637:4;1693:13;;;1689:22;;1683:29;1665:11;;;1661:20;;1654:59;1590:12;1561:162;;;1565:3;1768:1;1761:4;1752:6;1747:3;1743:16;1739:27;1732:38;1831:4;1824:2;1820:7;1815:2;1807:6;1803:15;1799:29;1794:3;1790:39;1786:50;1779:57;;;1419:423;;;;:::o;1847:220::-;1996:2;1985:9;1978:21;1959:4;2016:45;2057:2;2046:9;2042:18;2034:6;2016:45;:::i;2072:127::-;2133:10;2128:3;2124:20;2121:1;2114:31;2164:4;2161:1;2154:15;2188:4;2185:1;2178:15;2204:249;2314:2;2295:13;;-1:-1:-1;;2291:27:92;2279:40;;2349:18;2334:34;;2370:22;;;2331:62;2328:88;;;2396:18;;:::i;:::-;2432:2;2425:22;-1:-1:-1;;2204:249:92:o;2458:183::-;2518:4;2551:18;2543:6;2540:30;2537:56;;;2573:18;;:::i;:::-;-1:-1:-1;2618:1:92;2614:14;2630:4;2610:25;;2458:183::o;2646:724::-;2700:5;2753:3;2746:4;2738:6;2734:17;2730:27;2720:55;;2771:1;2768;2761:12;2720:55;2807:6;2794:20;2833:4;2856:43;2896:2;2856:43;:::i;:::-;2928:2;2922:9;2940:31;2968:2;2960:6;2940:31;:::i;:::-;3006:18;;;3098:1;3094:10;;;;3082:23;;3078:32;;;3040:15;;;;-1:-1:-1;3122:15:92;;;3119:35;;;3150:1;3147;3140:12;3119:35;3186:2;3178:6;3174:15;3198:142;3214:6;3209:3;3206:15;3198:142;;;3280:17;;3268:30;;3318:12;;;;3231;;3198:142;;;-1:-1:-1;3358:6:92;2646:724;-1:-1:-1;;;;;;2646:724:92:o;3375:555::-;3417:5;3470:3;3463:4;3455:6;3451:17;3447:27;3437:55;;3488:1;3485;3478:12;3437:55;3524:6;3511:20;3550:18;3546:2;3543:26;3540:52;;;3572:18;;:::i;:::-;3621:2;3615:9;3633:67;3688:2;3669:13;;-1:-1:-1;;3665:27:92;3694:4;3661:38;3615:9;3633:67;:::i;:::-;3724:2;3716:6;3709:18;3770:3;3763:4;3758:2;3750:6;3746:15;3742:26;3739:35;3736:55;;;3787:1;3784;3777:12;3736:55;3851:2;3844:4;3836:6;3832:17;3825:4;3817:6;3813:17;3800:54;3898:1;3874:15;;;3891:4;3870:26;3863:37;;;;3878:6;3375:555;-1:-1:-1;;;3375:555:92:o;3935:943::-;4089:6;4097;4105;4113;4121;4174:3;4162:9;4153:7;4149:23;4145:33;4142:53;;;4191:1;4188;4181:12;4142:53;4214:29;4233:9;4214:29;:::i;:::-;4204:39;;4262:38;4296:2;4285:9;4281:18;4262:38;:::i;:::-;4252:48;;4351:2;4340:9;4336:18;4323:32;4374:18;4415:2;4407:6;4404:14;4401:34;;;4431:1;4428;4421:12;4401:34;4454:61;4507:7;4498:6;4487:9;4483:22;4454:61;:::i;:::-;4444:71;;4568:2;4557:9;4553:18;4540:32;4524:48;;4597:2;4587:8;4584:16;4581:36;;;4613:1;4610;4603:12;4581:36;4636:63;4691:7;4680:8;4669:9;4665:24;4636:63;:::i;:::-;4626:73;;4752:3;4741:9;4737:19;4724:33;4708:49;;4782:2;4772:8;4769:16;4766:36;;;4798:1;4795;4788:12;4766:36;;4821:51;4864:7;4853:8;4842:9;4838:24;4821:51;:::i;:::-;4811:61;;;3935:943;;;;;;;;:::o;4883:1208::-;5001:6;5009;5062:2;5050:9;5041:7;5037:23;5033:32;5030:52;;;5078:1;5075;5068:12;5030:52;5118:9;5105:23;5147:18;5188:2;5180:6;5177:14;5174:34;;;5204:1;5201;5194:12;5174:34;5242:6;5231:9;5227:22;5217:32;;5287:7;5280:4;5276:2;5272:13;5268:27;5258:55;;5309:1;5306;5299:12;5258:55;5345:2;5332:16;5367:4;5390:43;5430:2;5390:43;:::i;:::-;5462:2;5456:9;5474:31;5502:2;5494:6;5474:31;:::i;:::-;5540:18;;;5628:1;5624:10;;;;5616:19;;5612:28;;;5574:15;;;;-1:-1:-1;5652:19:92;;;5649:39;;;5684:1;5681;5674:12;5649:39;5708:11;;;;5728:148;5744:6;5739:3;5736:15;5728:148;;;5810:23;5829:3;5810:23;:::i;:::-;5798:36;;5761:12;;;;5854;;;;5728:148;;;5895:6;-1:-1:-1;;5939:18:92;;5926:32;;-1:-1:-1;;5970:16:92;;;5967:36;;;5999:1;5996;5989:12;5967:36;;6022:63;6077:7;6066:8;6055:9;6051:24;6022:63;:::i;:::-;6012:73;;;4883:1208;;;;;:::o;6096:435::-;6149:3;6187:5;6181:12;6214:6;6209:3;6202:19;6240:4;6269:2;6264:3;6260:12;6253:19;;6306:2;6299:5;6295:14;6327:1;6337:169;6351:6;6348:1;6345:13;6337:169;;;6412:13;;6400:26;;6446:12;;;;6481:15;;;;6373:1;6366:9;6337:169;;;-1:-1:-1;6522:3:92;;6096:435;-1:-1:-1;;;;;6096:435:92:o;6536:261::-;6715:2;6704:9;6697:21;6678:4;6735:56;6787:2;6776:9;6772:18;6764:6;6735:56;:::i;6802:347::-;6867:6;6875;6928:2;6916:9;6907:7;6903:23;6899:32;6896:52;;;6944:1;6941;6934:12;6896:52;6967:29;6986:9;6967:29;:::i;:::-;6957:39;;7046:2;7035:9;7031:18;7018:32;7093:5;7086:13;7079:21;7072:5;7069:32;7059:60;;7115:1;7112;7105:12;7059:60;7138:5;7128:15;;;6802:347;;;;;:::o;7154:260::-;7222:6;7230;7283:2;7271:9;7262:7;7258:23;7254:32;7251:52;;;7299:1;7296;7289:12;7251:52;7322:29;7341:9;7322:29;:::i;:::-;7312:39;;7370:38;7404:2;7393:9;7389:18;7370:38;:::i;:::-;7360:48;;7154:260;;;;;:::o;7419:606::-;7523:6;7531;7539;7547;7555;7608:3;7596:9;7587:7;7583:23;7579:33;7576:53;;;7625:1;7622;7615:12;7576:53;7648:29;7667:9;7648:29;:::i;:::-;7638:39;;7696:38;7730:2;7719:9;7715:18;7696:38;:::i;:::-;7686:48;;7781:2;7770:9;7766:18;7753:32;7743:42;;7832:2;7821:9;7817:18;7804:32;7794:42;;7887:3;7876:9;7872:19;7859:33;7915:18;7907:6;7904:30;7901:50;;;7947:1;7944;7937:12;7901:50;7970:49;8011:7;8002:6;7991:9;7987:22;7970:49;:::i;8441:380::-;8520:1;8516:12;;;;8563;;;8584:61;;8638:4;8630:6;8626:17;8616:27;;8584:61;8691:2;8683:6;8680:14;8660:18;8657:38;8654:161;;8737:10;8732:3;8728:20;8725:1;8718:31;8772:4;8769:1;8762:15;8800:4;8797:1;8790:15;8654:161;;8441:380;;;:::o;9651:127::-;9712:10;9707:3;9703:20;9700:1;9693:31;9743:4;9740:1;9733:15;9767:4;9764:1;9757:15;9783:127;9844:10;9839:3;9835:20;9832:1;9825:31;9875:4;9872:1;9865:15;9899:4;9896:1;9889:15;9915:135;9954:3;9975:17;;;9972:43;;9995:18;;:::i;:::-;-1:-1:-1;10042:1:92;10031:13;;9915:135::o;11281:125::-;11346:9;;;11367:10;;;11364:36;;;11380:18;;:::i;11411:465::-;11668:2;11657:9;11650:21;11631:4;11694:56;11746:2;11735:9;11731:18;11723:6;11694:56;:::i;:::-;11798:9;11790:6;11786:22;11781:2;11770:9;11766:18;11759:50;11826:44;11863:6;11855;11826:44;:::i;:::-;11818:52;11411:465;-1:-1:-1;;;;;11411:465:92:o;12544:850::-;12866:4;-1:-1:-1;;;;;12976:2:92;12968:6;12964:15;12953:9;12946:34;13028:2;13020:6;13016:15;13011:2;13000:9;12996:18;12989:43;;13068:3;13063:2;13052:9;13048:18;13041:31;13095:57;13147:3;13136:9;13132:19;13124:6;13095:57;:::i;:::-;13200:9;13192:6;13188:22;13183:2;13172:9;13168:18;13161:50;13234:44;13271:6;13263;13234:44;:::i;:::-;13220:58;;13327:9;13319:6;13315:22;13309:3;13298:9;13294:19;13287:51;13355:33;13381:6;13373;13355:33;:::i;:::-;13347:41;12544:850;-1:-1:-1;;;;;;;;12544:850:92:o;13399:249::-;13468:6;13521:2;13509:9;13500:7;13496:23;13492:32;13489:52;;;13537:1;13534;13527:12;13489:52;13569:9;13563:16;13588:30;13612:5;13588:30;:::i;13653:179::-;13688:3;13730:1;13712:16;13709:23;13706:120;;;13776:1;13773;13770;13755:23;-1:-1:-1;13813:1:92;13807:8;13802:3;13798:18;13706:120;13653:179;:::o;13837:671::-;13876:3;13918:4;13900:16;13897:26;13894:39;;;13837:671;:::o;13894:39::-;13960:2;13954:9;-1:-1:-1;;14025:16:92;14021:25;;14018:1;13954:9;13997:50;14076:4;14070:11;14100:16;14135:18;14206:2;14199:4;14191:6;14187:17;14184:25;14179:2;14171:6;14168:14;14165:45;14162:58;;;14213:5;;;;;13837:671;:::o;14162:58::-;14250:6;14244:4;14240:17;14229:28;;14286:3;14280:10;14313:2;14305:6;14302:14;14299:27;;;14319:5;;;;;;13837:671;:::o;14299:27::-;14403:2;14384:16;14378:4;14374:27;14370:36;14363:4;14354:6;14349:3;14345:16;14341:27;14338:69;14335:82;;;14410:5;;;;;;13837:671;:::o;14335:82::-;14426:57;14477:4;14468:6;14460;14456:19;14452:30;14446:4;14426:57;:::i;:::-;-1:-1:-1;14499:3:92;;13837:671;-1:-1:-1;;;;;13837:671:92:o;15343:584::-;15565:4;-1:-1:-1;;;;;15675:2:92;15667:6;15663:15;15652:9;15645:34;15727:2;15719:6;15715:15;15710:2;15699:9;15695:18;15688:43;;15767:6;15762:2;15751:9;15747:18;15740:34;15810:6;15805:2;15794:9;15790:18;15783:34;15854:3;15848;15837:9;15833:19;15826:32;15875:46;15916:3;15905:9;15901:19;15893:6;15875:46;:::i;:::-;15867:54;15343:584;-1:-1:-1;;;;;;;15343:584:92:o"},"gasEstimates":{"creation":{"codeDepositCost":"1054400","executionCost":"infinite","totalCost":"infinite"},"external":{"balanceOf(address,uint256)":"2677","balanceOfBatch(address[],uint256[])":"infinite","isApprovedForAll(address,address)":"infinite","safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)":"infinite","safeTransferFrom(address,address,uint256,uint256,bytes)":"infinite","setApprovalForAll(address,bool)":"26705","supportsInterface(bytes4)":"555","uri(uint256)":"infinite"},"internal":{"_afterTokenTransfer(address,address,address,uint256[] memory,uint256[] memory,bytes memory)":"infinite","_asSingletonArray(uint256)":"infinite","_beforeTokenTransfer(address,address,address,uint256[] memory,uint256[] memory,bytes memory)":"infinite","_burn(address,uint256,uint256)":"infinite","_burnBatch(address,uint256[] memory,uint256[] memory)":"infinite","_doSafeBatchTransferAcceptanceCheck(address,address,address,uint256[] memory,uint256[] memory,bytes memory)":"infinite","_doSafeTransferAcceptanceCheck(address,address,address,uint256,uint256,bytes memory)":"infinite","_mint(address,uint256,uint256,bytes memory)":"infinite","_mintBatch(address,uint256[] memory,uint256[] memory,bytes memory)":"infinite","_safeBatchTransferFrom(address,address,uint256[] memory,uint256[] memory,bytes memory)":"infinite","_safeTransferFrom(address,address,uint256,uint256,bytes memory)":"infinite","_setApprovalForAll(address,address,bool)":"infinite","_setURI(string memory)":"infinite"}},"methodIdentifiers":{"balanceOf(address,uint256)":"00fdd58e","balanceOfBatch(address[],uint256[])":"4e1273f4","isApprovedForAll(address,address)":"e985e9c5","safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)":"2eb2c2d6","safeTransferFrom(address,address,uint256,uint256,bytes)":"f242432a","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","uri(uint256)":"0e89341c"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"uri_\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"}],\"name\":\"TransferBatch\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"TransferSingle\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"URI\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"accounts\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"}],\"name\":\"balanceOfBatch\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeBatchTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"uri\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of the basic standard multi-token. See https://eips.ethereum.org/EIPS/eip-1155 Originally based on code by Enjin: https://github.com/enjin/erc-1155 _Available since v3.1._\",\"kind\":\"dev\",\"methods\":{\"balanceOf(address,uint256)\":{\"details\":\"See {IERC1155-balanceOf}. Requirements: - `account` cannot be the zero address.\"},\"balanceOfBatch(address[],uint256[])\":{\"details\":\"See {IERC1155-balanceOfBatch}. Requirements: - `accounts` and `ids` must have the same length.\"},\"constructor\":{\"details\":\"See {_setURI}.\"},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC1155-isApprovedForAll}.\"},\"safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)\":{\"details\":\"See {IERC1155-safeBatchTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,uint256,bytes)\":{\"details\":\"See {IERC1155-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC1155-setApprovalForAll}.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"uri(uint256)\":{\"details\":\"See {IERC1155MetadataURI-uri}. This implementation returns the same URI for *all* token types. It relies on the token type ID substitution mechanism https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP]. Clients calling this function must replace the `\\\\{id\\\\}` substring with the actual token type ID.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC1155/ERC1155.sol\":\"ERC1155\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC1155/ERC1155.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC1155/ERC1155.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC1155.sol\\\";\\nimport \\\"./IERC1155Receiver.sol\\\";\\nimport \\\"./extensions/IERC1155MetadataURI.sol\\\";\\nimport \\\"../../utils/Address.sol\\\";\\nimport \\\"../../utils/Context.sol\\\";\\nimport \\\"../../utils/introspection/ERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the basic standard multi-token.\\n * See https://eips.ethereum.org/EIPS/eip-1155\\n * Originally based on code by Enjin: https://github.com/enjin/erc-1155\\n *\\n * _Available since v3.1._\\n */\\ncontract ERC1155 is Context, ERC165, IERC1155, IERC1155MetadataURI {\\n using Address for address;\\n\\n // Mapping from token ID to account balances\\n mapping(uint256 => mapping(address => uint256)) private _balances;\\n\\n // Mapping from account to operator approvals\\n mapping(address => mapping(address => bool)) private _operatorApprovals;\\n\\n // Used as the URI for all token types by relying on ID substitution, e.g. https://token-cdn-domain/{id}.json\\n string private _uri;\\n\\n /**\\n * @dev See {_setURI}.\\n */\\n constructor(string memory uri_) {\\n _setURI(uri_);\\n }\\n\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) {\\n return\\n interfaceId == type(IERC1155).interfaceId ||\\n interfaceId == type(IERC1155MetadataURI).interfaceId ||\\n super.supportsInterface(interfaceId);\\n }\\n\\n /**\\n * @dev See {IERC1155MetadataURI-uri}.\\n *\\n * This implementation returns the same URI for *all* token types. It relies\\n * on the token type ID substitution mechanism\\n * https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP].\\n *\\n * Clients calling this function must replace the `\\\\{id\\\\}` substring with the\\n * actual token type ID.\\n */\\n function uri(uint256) public view virtual override returns (string memory) {\\n return _uri;\\n }\\n\\n /**\\n * @dev See {IERC1155-balanceOf}.\\n *\\n * Requirements:\\n *\\n * - `account` cannot be the zero address.\\n */\\n function balanceOf(address account, uint256 id) public view virtual override returns (uint256) {\\n require(account != address(0), \\\"ERC1155: address zero is not a valid owner\\\");\\n return _balances[id][account];\\n }\\n\\n /**\\n * @dev See {IERC1155-balanceOfBatch}.\\n *\\n * Requirements:\\n *\\n * - `accounts` and `ids` must have the same length.\\n */\\n function balanceOfBatch(\\n address[] memory accounts,\\n uint256[] memory ids\\n ) public view virtual override returns (uint256[] memory) {\\n require(accounts.length == ids.length, \\\"ERC1155: accounts and ids length mismatch\\\");\\n\\n uint256[] memory batchBalances = new uint256[](accounts.length);\\n\\n for (uint256 i = 0; i < accounts.length; ++i) {\\n batchBalances[i] = balanceOf(accounts[i], ids[i]);\\n }\\n\\n return batchBalances;\\n }\\n\\n /**\\n * @dev See {IERC1155-setApprovalForAll}.\\n */\\n function setApprovalForAll(address operator, bool approved) public virtual override {\\n _setApprovalForAll(_msgSender(), operator, approved);\\n }\\n\\n /**\\n * @dev See {IERC1155-isApprovedForAll}.\\n */\\n function isApprovedForAll(address account, address operator) public view virtual override returns (bool) {\\n return _operatorApprovals[account][operator];\\n }\\n\\n /**\\n * @dev See {IERC1155-safeTransferFrom}.\\n */\\n function safeTransferFrom(\\n address from,\\n address to,\\n uint256 id,\\n uint256 amount,\\n bytes memory data\\n ) public virtual override {\\n require(\\n from == _msgSender() || isApprovedForAll(from, _msgSender()),\\n \\\"ERC1155: caller is not token owner or approved\\\"\\n );\\n _safeTransferFrom(from, to, id, amount, data);\\n }\\n\\n /**\\n * @dev See {IERC1155-safeBatchTransferFrom}.\\n */\\n function safeBatchTransferFrom(\\n address from,\\n address to,\\n uint256[] memory ids,\\n uint256[] memory amounts,\\n bytes memory data\\n ) public virtual override {\\n require(\\n from == _msgSender() || isApprovedForAll(from, _msgSender()),\\n \\\"ERC1155: caller is not token owner or approved\\\"\\n );\\n _safeBatchTransferFrom(from, to, ids, amounts, data);\\n }\\n\\n /**\\n * @dev Transfers `amount` tokens of token type `id` from `from` to `to`.\\n *\\n * Emits a {TransferSingle} event.\\n *\\n * Requirements:\\n *\\n * - `to` cannot be the zero address.\\n * - `from` must have a balance of tokens of type `id` of at least `amount`.\\n * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the\\n * acceptance magic value.\\n */\\n function _safeTransferFrom(\\n address from,\\n address to,\\n uint256 id,\\n uint256 amount,\\n bytes memory data\\n ) internal virtual {\\n require(to != address(0), \\\"ERC1155: transfer to the zero address\\\");\\n\\n address operator = _msgSender();\\n uint256[] memory ids = _asSingletonArray(id);\\n uint256[] memory amounts = _asSingletonArray(amount);\\n\\n _beforeTokenTransfer(operator, from, to, ids, amounts, data);\\n\\n uint256 fromBalance = _balances[id][from];\\n require(fromBalance >= amount, \\\"ERC1155: insufficient balance for transfer\\\");\\n unchecked {\\n _balances[id][from] = fromBalance - amount;\\n }\\n _balances[id][to] += amount;\\n\\n emit TransferSingle(operator, from, to, id, amount);\\n\\n _afterTokenTransfer(operator, from, to, ids, amounts, data);\\n\\n _doSafeTransferAcceptanceCheck(operator, from, to, id, amount, data);\\n }\\n\\n /**\\n * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_safeTransferFrom}.\\n *\\n * Emits a {TransferBatch} event.\\n *\\n * Requirements:\\n *\\n * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the\\n * acceptance magic value.\\n */\\n function _safeBatchTransferFrom(\\n address from,\\n address to,\\n uint256[] memory ids,\\n uint256[] memory amounts,\\n bytes memory data\\n ) internal virtual {\\n require(ids.length == amounts.length, \\\"ERC1155: ids and amounts length mismatch\\\");\\n require(to != address(0), \\\"ERC1155: transfer to the zero address\\\");\\n\\n address operator = _msgSender();\\n\\n _beforeTokenTransfer(operator, from, to, ids, amounts, data);\\n\\n for (uint256 i = 0; i < ids.length; ++i) {\\n uint256 id = ids[i];\\n uint256 amount = amounts[i];\\n\\n uint256 fromBalance = _balances[id][from];\\n require(fromBalance >= amount, \\\"ERC1155: insufficient balance for transfer\\\");\\n unchecked {\\n _balances[id][from] = fromBalance - amount;\\n }\\n _balances[id][to] += amount;\\n }\\n\\n emit TransferBatch(operator, from, to, ids, amounts);\\n\\n _afterTokenTransfer(operator, from, to, ids, amounts, data);\\n\\n _doSafeBatchTransferAcceptanceCheck(operator, from, to, ids, amounts, data);\\n }\\n\\n /**\\n * @dev Sets a new URI for all token types, by relying on the token type ID\\n * substitution mechanism\\n * https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP].\\n *\\n * By this mechanism, any occurrence of the `\\\\{id\\\\}` substring in either the\\n * URI or any of the amounts in the JSON file at said URI will be replaced by\\n * clients with the token type ID.\\n *\\n * For example, the `https://token-cdn-domain/\\\\{id\\\\}.json` URI would be\\n * interpreted by clients as\\n * `https://token-cdn-domain/000000000000000000000000000000000000000000000000000000000004cce0.json`\\n * for token type ID 0x4cce0.\\n *\\n * See {uri}.\\n *\\n * Because these URIs cannot be meaningfully represented by the {URI} event,\\n * this function emits no events.\\n */\\n function _setURI(string memory newuri) internal virtual {\\n _uri = newuri;\\n }\\n\\n /**\\n * @dev Creates `amount` tokens of token type `id`, and assigns them to `to`.\\n *\\n * Emits a {TransferSingle} event.\\n *\\n * Requirements:\\n *\\n * - `to` cannot be the zero address.\\n * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the\\n * acceptance magic value.\\n */\\n function _mint(address to, uint256 id, uint256 amount, bytes memory data) internal virtual {\\n require(to != address(0), \\\"ERC1155: mint to the zero address\\\");\\n\\n address operator = _msgSender();\\n uint256[] memory ids = _asSingletonArray(id);\\n uint256[] memory amounts = _asSingletonArray(amount);\\n\\n _beforeTokenTransfer(operator, address(0), to, ids, amounts, data);\\n\\n _balances[id][to] += amount;\\n emit TransferSingle(operator, address(0), to, id, amount);\\n\\n _afterTokenTransfer(operator, address(0), to, ids, amounts, data);\\n\\n _doSafeTransferAcceptanceCheck(operator, address(0), to, id, amount, data);\\n }\\n\\n /**\\n * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_mint}.\\n *\\n * Emits a {TransferBatch} event.\\n *\\n * Requirements:\\n *\\n * - `ids` and `amounts` must have the same length.\\n * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the\\n * acceptance magic value.\\n */\\n function _mintBatch(\\n address to,\\n uint256[] memory ids,\\n uint256[] memory amounts,\\n bytes memory data\\n ) internal virtual {\\n require(to != address(0), \\\"ERC1155: mint to the zero address\\\");\\n require(ids.length == amounts.length, \\\"ERC1155: ids and amounts length mismatch\\\");\\n\\n address operator = _msgSender();\\n\\n _beforeTokenTransfer(operator, address(0), to, ids, amounts, data);\\n\\n for (uint256 i = 0; i < ids.length; i++) {\\n _balances[ids[i]][to] += amounts[i];\\n }\\n\\n emit TransferBatch(operator, address(0), to, ids, amounts);\\n\\n _afterTokenTransfer(operator, address(0), to, ids, amounts, data);\\n\\n _doSafeBatchTransferAcceptanceCheck(operator, address(0), to, ids, amounts, data);\\n }\\n\\n /**\\n * @dev Destroys `amount` tokens of token type `id` from `from`\\n *\\n * Emits a {TransferSingle} event.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `from` must have at least `amount` tokens of token type `id`.\\n */\\n function _burn(address from, uint256 id, uint256 amount) internal virtual {\\n require(from != address(0), \\\"ERC1155: burn from the zero address\\\");\\n\\n address operator = _msgSender();\\n uint256[] memory ids = _asSingletonArray(id);\\n uint256[] memory amounts = _asSingletonArray(amount);\\n\\n _beforeTokenTransfer(operator, from, address(0), ids, amounts, \\\"\\\");\\n\\n uint256 fromBalance = _balances[id][from];\\n require(fromBalance >= amount, \\\"ERC1155: burn amount exceeds balance\\\");\\n unchecked {\\n _balances[id][from] = fromBalance - amount;\\n }\\n\\n emit TransferSingle(operator, from, address(0), id, amount);\\n\\n _afterTokenTransfer(operator, from, address(0), ids, amounts, \\\"\\\");\\n }\\n\\n /**\\n * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_burn}.\\n *\\n * Emits a {TransferBatch} event.\\n *\\n * Requirements:\\n *\\n * - `ids` and `amounts` must have the same length.\\n */\\n function _burnBatch(address from, uint256[] memory ids, uint256[] memory amounts) internal virtual {\\n require(from != address(0), \\\"ERC1155: burn from the zero address\\\");\\n require(ids.length == amounts.length, \\\"ERC1155: ids and amounts length mismatch\\\");\\n\\n address operator = _msgSender();\\n\\n _beforeTokenTransfer(operator, from, address(0), ids, amounts, \\\"\\\");\\n\\n for (uint256 i = 0; i < ids.length; i++) {\\n uint256 id = ids[i];\\n uint256 amount = amounts[i];\\n\\n uint256 fromBalance = _balances[id][from];\\n require(fromBalance >= amount, \\\"ERC1155: burn amount exceeds balance\\\");\\n unchecked {\\n _balances[id][from] = fromBalance - amount;\\n }\\n }\\n\\n emit TransferBatch(operator, from, address(0), ids, amounts);\\n\\n _afterTokenTransfer(operator, from, address(0), ids, amounts, \\\"\\\");\\n }\\n\\n /**\\n * @dev Approve `operator` to operate on all of `owner` tokens\\n *\\n * Emits an {ApprovalForAll} event.\\n */\\n function _setApprovalForAll(address owner, address operator, bool approved) internal virtual {\\n require(owner != operator, \\\"ERC1155: setting approval status for self\\\");\\n _operatorApprovals[owner][operator] = approved;\\n emit ApprovalForAll(owner, operator, approved);\\n }\\n\\n /**\\n * @dev Hook that is called before any token transfer. This includes minting\\n * and burning, as well as batched variants.\\n *\\n * The same hook is called on both single and batched variants. For single\\n * transfers, the length of the `ids` and `amounts` arrays will be 1.\\n *\\n * Calling conditions (for each `id` and `amount` pair):\\n *\\n * - When `from` and `to` are both non-zero, `amount` of ``from``'s tokens\\n * of token type `id` will be transferred to `to`.\\n * - When `from` is zero, `amount` tokens of token type `id` will be minted\\n * for `to`.\\n * - when `to` is zero, `amount` of ``from``'s tokens of token type `id`\\n * will be burned.\\n * - `from` and `to` are never both zero.\\n * - `ids` and `amounts` have the same, non-zero length.\\n *\\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n */\\n function _beforeTokenTransfer(\\n address operator,\\n address from,\\n address to,\\n uint256[] memory ids,\\n uint256[] memory amounts,\\n bytes memory data\\n ) internal virtual {}\\n\\n /**\\n * @dev Hook that is called after any token transfer. This includes minting\\n * and burning, as well as batched variants.\\n *\\n * The same hook is called on both single and batched variants. For single\\n * transfers, the length of the `id` and `amount` arrays will be 1.\\n *\\n * Calling conditions (for each `id` and `amount` pair):\\n *\\n * - When `from` and `to` are both non-zero, `amount` of ``from``'s tokens\\n * of token type `id` will be transferred to `to`.\\n * - When `from` is zero, `amount` tokens of token type `id` will be minted\\n * for `to`.\\n * - when `to` is zero, `amount` of ``from``'s tokens of token type `id`\\n * will be burned.\\n * - `from` and `to` are never both zero.\\n * - `ids` and `amounts` have the same, non-zero length.\\n *\\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n */\\n function _afterTokenTransfer(\\n address operator,\\n address from,\\n address to,\\n uint256[] memory ids,\\n uint256[] memory amounts,\\n bytes memory data\\n ) internal virtual {}\\n\\n function _doSafeTransferAcceptanceCheck(\\n address operator,\\n address from,\\n address to,\\n uint256 id,\\n uint256 amount,\\n bytes memory data\\n ) private {\\n if (to.isContract()) {\\n try IERC1155Receiver(to).onERC1155Received(operator, from, id, amount, data) returns (bytes4 response) {\\n if (response != IERC1155Receiver.onERC1155Received.selector) {\\n revert(\\\"ERC1155: ERC1155Receiver rejected tokens\\\");\\n }\\n } catch Error(string memory reason) {\\n revert(reason);\\n } catch {\\n revert(\\\"ERC1155: transfer to non-ERC1155Receiver implementer\\\");\\n }\\n }\\n }\\n\\n function _doSafeBatchTransferAcceptanceCheck(\\n address operator,\\n address from,\\n address to,\\n uint256[] memory ids,\\n uint256[] memory amounts,\\n bytes memory data\\n ) private {\\n if (to.isContract()) {\\n try IERC1155Receiver(to).onERC1155BatchReceived(operator, from, ids, amounts, data) returns (\\n bytes4 response\\n ) {\\n if (response != IERC1155Receiver.onERC1155BatchReceived.selector) {\\n revert(\\\"ERC1155: ERC1155Receiver rejected tokens\\\");\\n }\\n } catch Error(string memory reason) {\\n revert(reason);\\n } catch {\\n revert(\\\"ERC1155: transfer to non-ERC1155Receiver implementer\\\");\\n }\\n }\\n }\\n\\n function _asSingletonArray(uint256 element) private pure returns (uint256[] memory) {\\n uint256[] memory array = new uint256[](1);\\n array[0] = element;\\n\\n return array;\\n }\\n}\\n\",\"keccak256\":\"0x81149353c99ccf8ff18af7701bc3f38665c7a97e344cdc0d27f927f03d22af0e\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC1155/IERC1155.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC1155/IERC1155.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC1155 compliant contract, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-1155[EIP].\\n *\\n * _Available since v3.1._\\n */\\ninterface IERC1155 is IERC165 {\\n /**\\n * @dev Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`.\\n */\\n event TransferSingle(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value);\\n\\n /**\\n * @dev Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all\\n * transfers.\\n */\\n event TransferBatch(\\n address indexed operator,\\n address indexed from,\\n address indexed to,\\n uint256[] ids,\\n uint256[] values\\n );\\n\\n /**\\n * @dev Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to\\n * `approved`.\\n */\\n event ApprovalForAll(address indexed account, address indexed operator, bool approved);\\n\\n /**\\n * @dev Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI.\\n *\\n * If an {URI} event was emitted for `id`, the standard\\n * https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value\\n * returned by {IERC1155MetadataURI-uri}.\\n */\\n event URI(string value, uint256 indexed id);\\n\\n /**\\n * @dev Returns the amount of tokens of token type `id` owned by `account`.\\n *\\n * Requirements:\\n *\\n * - `account` cannot be the zero address.\\n */\\n function balanceOf(address account, uint256 id) external view returns (uint256);\\n\\n /**\\n * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}.\\n *\\n * Requirements:\\n *\\n * - `accounts` and `ids` must have the same length.\\n */\\n function balanceOfBatch(\\n address[] calldata accounts,\\n uint256[] calldata ids\\n ) external view returns (uint256[] memory);\\n\\n /**\\n * @dev Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`,\\n *\\n * Emits an {ApprovalForAll} event.\\n *\\n * Requirements:\\n *\\n * - `operator` cannot be the caller.\\n */\\n function setApprovalForAll(address operator, bool approved) external;\\n\\n /**\\n * @dev Returns true if `operator` is approved to transfer ``account``'s tokens.\\n *\\n * See {setApprovalForAll}.\\n */\\n function isApprovedForAll(address account, address operator) external view returns (bool);\\n\\n /**\\n * @dev Transfers `amount` tokens of token type `id` from `from` to `to`.\\n *\\n * Emits a {TransferSingle} event.\\n *\\n * Requirements:\\n *\\n * - `to` cannot be the zero address.\\n * - If the caller is not `from`, it must have been approved to spend ``from``'s tokens via {setApprovalForAll}.\\n * - `from` must have a balance of tokens of type `id` of at least `amount`.\\n * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the\\n * acceptance magic value.\\n */\\n function safeTransferFrom(address from, address to, uint256 id, uint256 amount, bytes calldata data) external;\\n\\n /**\\n * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}.\\n *\\n * Emits a {TransferBatch} event.\\n *\\n * Requirements:\\n *\\n * - `ids` and `amounts` must have the same length.\\n * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the\\n * acceptance magic value.\\n */\\n function safeBatchTransferFrom(\\n address from,\\n address to,\\n uint256[] calldata ids,\\n uint256[] calldata amounts,\\n bytes calldata data\\n ) external;\\n}\\n\",\"keccak256\":\"0xcab667ddad478ff0d39c2053ca77fac778af8483c18ab07d810277b4216fd582\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC1155/IERC1155Receiver.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev _Available since v3.1._\\n */\\ninterface IERC1155Receiver is IERC165 {\\n /**\\n * @dev Handles the receipt of a single ERC1155 token type. This function is\\n * called at the end of a `safeTransferFrom` after the balance has been updated.\\n *\\n * NOTE: To accept the transfer, this must return\\n * `bytes4(keccak256(\\\"onERC1155Received(address,address,uint256,uint256,bytes)\\\"))`\\n * (i.e. 0xf23a6e61, or its own function selector).\\n *\\n * @param operator The address which initiated the transfer (i.e. msg.sender)\\n * @param from The address which previously owned the token\\n * @param id The ID of the token being transferred\\n * @param value The amount of tokens being transferred\\n * @param data Additional data with no specified format\\n * @return `bytes4(keccak256(\\\"onERC1155Received(address,address,uint256,uint256,bytes)\\\"))` if transfer is allowed\\n */\\n function onERC1155Received(\\n address operator,\\n address from,\\n uint256 id,\\n uint256 value,\\n bytes calldata data\\n ) external returns (bytes4);\\n\\n /**\\n * @dev Handles the receipt of a multiple ERC1155 token types. This function\\n * is called at the end of a `safeBatchTransferFrom` after the balances have\\n * been updated.\\n *\\n * NOTE: To accept the transfer(s), this must return\\n * `bytes4(keccak256(\\\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\\\"))`\\n * (i.e. 0xbc197c81, or its own function selector).\\n *\\n * @param operator The address which initiated the batch transfer (i.e. msg.sender)\\n * @param from The address which previously owned the token\\n * @param ids An array containing ids of each token being transferred (order and length must match values array)\\n * @param values An array containing amounts of each token being transferred (order and length must match ids array)\\n * @param data Additional data with no specified format\\n * @return `bytes4(keccak256(\\\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\\\"))` if transfer is allowed\\n */\\n function onERC1155BatchReceived(\\n address operator,\\n address from,\\n uint256[] calldata ids,\\n uint256[] calldata values,\\n bytes calldata data\\n ) external returns (bytes4);\\n}\\n\",\"keccak256\":\"0xeb373f1fdc7b755c6a750123a9b9e3a8a02c1470042fd6505d875000a80bde0b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC1155/extensions/IERC1155MetadataURI.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC1155.sol\\\";\\n\\n/**\\n * @dev Interface of the optional ERC1155MetadataExtension interface, as defined\\n * in the https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[EIP].\\n *\\n * _Available since v3.1._\\n */\\ninterface IERC1155MetadataURI is IERC1155 {\\n /**\\n * @dev Returns the URI for token type `id`.\\n *\\n * If the `\\\\{id\\\\}` substring is present in the URI, it must be replaced by\\n * clients with the actual token type ID.\\n */\\n function uri(uint256 id) external view returns (string memory);\\n}\\n\",\"keccak256\":\"0xa66d18b9a85458d28fc3304717964502ae36f7f8a2ff35bc83f6f85d74b03574\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n function _contextSuffixLength() internal view virtual returns (uint256) {\\n return 0;\\n }\\n}\\n\",\"keccak256\":\"0xa92e4fa126feb6907daa0513ddd816b2eb91f30a808de54f63c17d0e162c3439\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165 is IERC165 {\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165).interfaceId;\\n }\\n}\\n\",\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":5781,"contract":"@openzeppelin/contracts/token/ERC1155/ERC1155.sol:ERC1155","label":"_balances","offset":0,"slot":"0","type":"t_mapping(t_uint256,t_mapping(t_address,t_uint256))"},{"astId":5787,"contract":"@openzeppelin/contracts/token/ERC1155/ERC1155.sol:ERC1155","label":"_operatorApprovals","offset":0,"slot":"1","type":"t_mapping(t_address,t_mapping(t_address,t_bool))"},{"astId":5789,"contract":"@openzeppelin/contracts/token/ERC1155/ERC1155.sol:ERC1155","label":"_uri","offset":0,"slot":"2","type":"t_string_storage"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_mapping(t_address,t_bool)":{"encoding":"mapping","key":"t_address","label":"mapping(address => bool)","numberOfBytes":"32","value":"t_bool"},"t_mapping(t_address,t_mapping(t_address,t_bool))":{"encoding":"mapping","key":"t_address","label":"mapping(address => mapping(address => bool))","numberOfBytes":"32","value":"t_mapping(t_address,t_bool)"},"t_mapping(t_address,t_uint256)":{"encoding":"mapping","key":"t_address","label":"mapping(address => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_mapping(t_uint256,t_mapping(t_address,t_uint256))":{"encoding":"mapping","key":"t_uint256","label":"mapping(uint256 => mapping(address => uint256))","numberOfBytes":"32","value":"t_mapping(t_address,t_uint256)"},"t_string_storage":{"encoding":"bytes","label":"string","numberOfBytes":"32"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/token/ERC1155/IERC1155.sol":{"IERC1155":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"TransferSingle","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"value","type":"string"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"URI","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeBatchTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"Required interface of an ERC1155 compliant contract, as defined in the https://eips.ethereum.org/EIPS/eip-1155[EIP]. _Available since v3.1._","events":{"ApprovalForAll(address,address,bool)":{"details":"Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to `approved`."},"TransferBatch(address,address,address,uint256[],uint256[])":{"details":"Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all transfers."},"TransferSingle(address,address,address,uint256,uint256)":{"details":"Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`."},"URI(string,uint256)":{"details":"Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI. If an {URI} event was emitted for `id`, the standard https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value returned by {IERC1155MetadataURI-uri}."}},"kind":"dev","methods":{"balanceOf(address,uint256)":{"details":"Returns the amount of tokens of token type `id` owned by `account`. Requirements: - `account` cannot be the zero address."},"balanceOfBatch(address[],uint256[])":{"details":"xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}. Requirements: - `accounts` and `ids` must have the same length."},"isApprovedForAll(address,address)":{"details":"Returns true if `operator` is approved to transfer ``account``'s tokens. See {setApprovalForAll}."},"safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)":{"details":"xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}. Emits a {TransferBatch} event. Requirements: - `ids` and `amounts` must have the same length. - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the acceptance magic value."},"safeTransferFrom(address,address,uint256,uint256,bytes)":{"details":"Transfers `amount` tokens of token type `id` from `from` to `to`. Emits a {TransferSingle} event. Requirements: - `to` cannot be the zero address. - If the caller is not `from`, it must have been approved to spend ``from``'s tokens via {setApprovalForAll}. - `from` must have a balance of tokens of type `id` of at least `amount`. - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the acceptance magic value."},"setApprovalForAll(address,bool)":{"details":"Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`, Emits an {ApprovalForAll} event. Requirements: - `operator` cannot be the caller."},"supportsInterface(bytes4)":{"details":"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"balanceOf(address,uint256)":"00fdd58e","balanceOfBatch(address[],uint256[])":"4e1273f4","isApprovedForAll(address,address)":"e985e9c5","safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)":"2eb2c2d6","safeTransferFrom(address,address,uint256,uint256,bytes)":"f242432a","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"}],\"name\":\"TransferBatch\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"TransferSingle\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"URI\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"accounts\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"}],\"name\":\"balanceOfBatch\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeBatchTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Required interface of an ERC1155 compliant contract, as defined in the https://eips.ethereum.org/EIPS/eip-1155[EIP]. _Available since v3.1._\",\"events\":{\"ApprovalForAll(address,address,bool)\":{\"details\":\"Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to `approved`.\"},\"TransferBatch(address,address,address,uint256[],uint256[])\":{\"details\":\"Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all transfers.\"},\"TransferSingle(address,address,address,uint256,uint256)\":{\"details\":\"Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`.\"},\"URI(string,uint256)\":{\"details\":\"Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI. If an {URI} event was emitted for `id`, the standard https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value returned by {IERC1155MetadataURI-uri}.\"}},\"kind\":\"dev\",\"methods\":{\"balanceOf(address,uint256)\":{\"details\":\"Returns the amount of tokens of token type `id` owned by `account`. Requirements: - `account` cannot be the zero address.\"},\"balanceOfBatch(address[],uint256[])\":{\"details\":\"xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}. Requirements: - `accounts` and `ids` must have the same length.\"},\"isApprovedForAll(address,address)\":{\"details\":\"Returns true if `operator` is approved to transfer ``account``'s tokens. See {setApprovalForAll}.\"},\"safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)\":{\"details\":\"xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}. Emits a {TransferBatch} event. Requirements: - `ids` and `amounts` must have the same length. - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the acceptance magic value.\"},\"safeTransferFrom(address,address,uint256,uint256,bytes)\":{\"details\":\"Transfers `amount` tokens of token type `id` from `from` to `to`. Emits a {TransferSingle} event. Requirements: - `to` cannot be the zero address. - If the caller is not `from`, it must have been approved to spend ``from``'s tokens via {setApprovalForAll}. - `from` must have a balance of tokens of type `id` of at least `amount`. - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the acceptance magic value.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`, Emits an {ApprovalForAll} event. Requirements: - `operator` cannot be the caller.\"},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC1155/IERC1155.sol\":\"IERC1155\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC1155/IERC1155.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC1155/IERC1155.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC1155 compliant contract, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-1155[EIP].\\n *\\n * _Available since v3.1._\\n */\\ninterface IERC1155 is IERC165 {\\n /**\\n * @dev Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`.\\n */\\n event TransferSingle(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value);\\n\\n /**\\n * @dev Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all\\n * transfers.\\n */\\n event TransferBatch(\\n address indexed operator,\\n address indexed from,\\n address indexed to,\\n uint256[] ids,\\n uint256[] values\\n );\\n\\n /**\\n * @dev Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to\\n * `approved`.\\n */\\n event ApprovalForAll(address indexed account, address indexed operator, bool approved);\\n\\n /**\\n * @dev Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI.\\n *\\n * If an {URI} event was emitted for `id`, the standard\\n * https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value\\n * returned by {IERC1155MetadataURI-uri}.\\n */\\n event URI(string value, uint256 indexed id);\\n\\n /**\\n * @dev Returns the amount of tokens of token type `id` owned by `account`.\\n *\\n * Requirements:\\n *\\n * - `account` cannot be the zero address.\\n */\\n function balanceOf(address account, uint256 id) external view returns (uint256);\\n\\n /**\\n * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}.\\n *\\n * Requirements:\\n *\\n * - `accounts` and `ids` must have the same length.\\n */\\n function balanceOfBatch(\\n address[] calldata accounts,\\n uint256[] calldata ids\\n ) external view returns (uint256[] memory);\\n\\n /**\\n * @dev Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`,\\n *\\n * Emits an {ApprovalForAll} event.\\n *\\n * Requirements:\\n *\\n * - `operator` cannot be the caller.\\n */\\n function setApprovalForAll(address operator, bool approved) external;\\n\\n /**\\n * @dev Returns true if `operator` is approved to transfer ``account``'s tokens.\\n *\\n * See {setApprovalForAll}.\\n */\\n function isApprovedForAll(address account, address operator) external view returns (bool);\\n\\n /**\\n * @dev Transfers `amount` tokens of token type `id` from `from` to `to`.\\n *\\n * Emits a {TransferSingle} event.\\n *\\n * Requirements:\\n *\\n * - `to` cannot be the zero address.\\n * - If the caller is not `from`, it must have been approved to spend ``from``'s tokens via {setApprovalForAll}.\\n * - `from` must have a balance of tokens of type `id` of at least `amount`.\\n * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the\\n * acceptance magic value.\\n */\\n function safeTransferFrom(address from, address to, uint256 id, uint256 amount, bytes calldata data) external;\\n\\n /**\\n * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}.\\n *\\n * Emits a {TransferBatch} event.\\n *\\n * Requirements:\\n *\\n * - `ids` and `amounts` must have the same length.\\n * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the\\n * acceptance magic value.\\n */\\n function safeBatchTransferFrom(\\n address from,\\n address to,\\n uint256[] calldata ids,\\n uint256[] calldata amounts,\\n bytes calldata data\\n ) external;\\n}\\n\",\"keccak256\":\"0xcab667ddad478ff0d39c2053ca77fac778af8483c18ab07d810277b4216fd582\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol":{"IERC1155Receiver":{"abi":[{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"onERC1155BatchReceived","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"onERC1155Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"_Available since v3.1._","kind":"dev","methods":{"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)":{"details":"Handles the receipt of a multiple ERC1155 token types. This function is called at the end of a `safeBatchTransferFrom` after the balances have been updated. NOTE: To accept the transfer(s), this must return `bytes4(keccak256(\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\"))` (i.e. 0xbc197c81, or its own function selector).","params":{"data":"Additional data with no specified format","from":"The address which previously owned the token","ids":"An array containing ids of each token being transferred (order and length must match values array)","operator":"The address which initiated the batch transfer (i.e. msg.sender)","values":"An array containing amounts of each token being transferred (order and length must match ids array)"},"returns":{"_0":"`bytes4(keccak256(\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\"))` if transfer is allowed"}},"onERC1155Received(address,address,uint256,uint256,bytes)":{"details":"Handles the receipt of a single ERC1155 token type. This function is called at the end of a `safeTransferFrom` after the balance has been updated. NOTE: To accept the transfer, this must return `bytes4(keccak256(\"onERC1155Received(address,address,uint256,uint256,bytes)\"))` (i.e. 0xf23a6e61, or its own function selector).","params":{"data":"Additional data with no specified format","from":"The address which previously owned the token","id":"The ID of the token being transferred","operator":"The address which initiated the transfer (i.e. msg.sender)","value":"The amount of tokens being transferred"},"returns":{"_0":"`bytes4(keccak256(\"onERC1155Received(address,address,uint256,uint256,bytes)\"))` if transfer is allowed"}},"supportsInterface(bytes4)":{"details":"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)":"bc197c81","onERC1155Received(address,address,uint256,uint256,bytes)":"f23a6e61","supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onERC1155BatchReceived\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onERC1155Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"_Available since v3.1._\",\"kind\":\"dev\",\"methods\":{\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\":{\"details\":\"Handles the receipt of a multiple ERC1155 token types. This function is called at the end of a `safeBatchTransferFrom` after the balances have been updated. NOTE: To accept the transfer(s), this must return `bytes4(keccak256(\\\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\\\"))` (i.e. 0xbc197c81, or its own function selector).\",\"params\":{\"data\":\"Additional data with no specified format\",\"from\":\"The address which previously owned the token\",\"ids\":\"An array containing ids of each token being transferred (order and length must match values array)\",\"operator\":\"The address which initiated the batch transfer (i.e. msg.sender)\",\"values\":\"An array containing amounts of each token being transferred (order and length must match ids array)\"},\"returns\":{\"_0\":\"`bytes4(keccak256(\\\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\\\"))` if transfer is allowed\"}},\"onERC1155Received(address,address,uint256,uint256,bytes)\":{\"details\":\"Handles the receipt of a single ERC1155 token type. This function is called at the end of a `safeTransferFrom` after the balance has been updated. NOTE: To accept the transfer, this must return `bytes4(keccak256(\\\"onERC1155Received(address,address,uint256,uint256,bytes)\\\"))` (i.e. 0xf23a6e61, or its own function selector).\",\"params\":{\"data\":\"Additional data with no specified format\",\"from\":\"The address which previously owned the token\",\"id\":\"The ID of the token being transferred\",\"operator\":\"The address which initiated the transfer (i.e. msg.sender)\",\"value\":\"The amount of tokens being transferred\"},\"returns\":{\"_0\":\"`bytes4(keccak256(\\\"onERC1155Received(address,address,uint256,uint256,bytes)\\\"))` if transfer is allowed\"}},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol\":\"IERC1155Receiver\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC1155/IERC1155Receiver.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev _Available since v3.1._\\n */\\ninterface IERC1155Receiver is IERC165 {\\n /**\\n * @dev Handles the receipt of a single ERC1155 token type. This function is\\n * called at the end of a `safeTransferFrom` after the balance has been updated.\\n *\\n * NOTE: To accept the transfer, this must return\\n * `bytes4(keccak256(\\\"onERC1155Received(address,address,uint256,uint256,bytes)\\\"))`\\n * (i.e. 0xf23a6e61, or its own function selector).\\n *\\n * @param operator The address which initiated the transfer (i.e. msg.sender)\\n * @param from The address which previously owned the token\\n * @param id The ID of the token being transferred\\n * @param value The amount of tokens being transferred\\n * @param data Additional data with no specified format\\n * @return `bytes4(keccak256(\\\"onERC1155Received(address,address,uint256,uint256,bytes)\\\"))` if transfer is allowed\\n */\\n function onERC1155Received(\\n address operator,\\n address from,\\n uint256 id,\\n uint256 value,\\n bytes calldata data\\n ) external returns (bytes4);\\n\\n /**\\n * @dev Handles the receipt of a multiple ERC1155 token types. This function\\n * is called at the end of a `safeBatchTransferFrom` after the balances have\\n * been updated.\\n *\\n * NOTE: To accept the transfer(s), this must return\\n * `bytes4(keccak256(\\\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\\\"))`\\n * (i.e. 0xbc197c81, or its own function selector).\\n *\\n * @param operator The address which initiated the batch transfer (i.e. msg.sender)\\n * @param from The address which previously owned the token\\n * @param ids An array containing ids of each token being transferred (order and length must match values array)\\n * @param values An array containing amounts of each token being transferred (order and length must match ids array)\\n * @param data Additional data with no specified format\\n * @return `bytes4(keccak256(\\\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\\\"))` if transfer is allowed\\n */\\n function onERC1155BatchReceived(\\n address operator,\\n address from,\\n uint256[] calldata ids,\\n uint256[] calldata values,\\n bytes calldata data\\n ) external returns (bytes4);\\n}\\n\",\"keccak256\":\"0xeb373f1fdc7b755c6a750123a9b9e3a8a02c1470042fd6505d875000a80bde0b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol":{"IERC1155MetadataURI":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"TransferSingle","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"value","type":"string"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"URI","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeBatchTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"Interface of the optional ERC1155MetadataExtension interface, as defined in the https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[EIP]. _Available since v3.1._","kind":"dev","methods":{"balanceOf(address,uint256)":{"details":"Returns the amount of tokens of token type `id` owned by `account`. Requirements: - `account` cannot be the zero address."},"balanceOfBatch(address[],uint256[])":{"details":"xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}. Requirements: - `accounts` and `ids` must have the same length."},"isApprovedForAll(address,address)":{"details":"Returns true if `operator` is approved to transfer ``account``'s tokens. See {setApprovalForAll}."},"safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)":{"details":"xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}. Emits a {TransferBatch} event. Requirements: - `ids` and `amounts` must have the same length. - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the acceptance magic value."},"safeTransferFrom(address,address,uint256,uint256,bytes)":{"details":"Transfers `amount` tokens of token type `id` from `from` to `to`. Emits a {TransferSingle} event. Requirements: - `to` cannot be the zero address. - If the caller is not `from`, it must have been approved to spend ``from``'s tokens via {setApprovalForAll}. - `from` must have a balance of tokens of type `id` of at least `amount`. - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the acceptance magic value."},"setApprovalForAll(address,bool)":{"details":"Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`, Emits an {ApprovalForAll} event. Requirements: - `operator` cannot be the caller."},"supportsInterface(bytes4)":{"details":"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas."},"uri(uint256)":{"details":"Returns the URI for token type `id`. If the `\\{id\\}` substring is present in the URI, it must be replaced by clients with the actual token type ID."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"balanceOf(address,uint256)":"00fdd58e","balanceOfBatch(address[],uint256[])":"4e1273f4","isApprovedForAll(address,address)":"e985e9c5","safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)":"2eb2c2d6","safeTransferFrom(address,address,uint256,uint256,bytes)":"f242432a","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","uri(uint256)":"0e89341c"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"}],\"name\":\"TransferBatch\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"TransferSingle\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"URI\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"accounts\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"}],\"name\":\"balanceOfBatch\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeBatchTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"uri\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the optional ERC1155MetadataExtension interface, as defined in the https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[EIP]. _Available since v3.1._\",\"kind\":\"dev\",\"methods\":{\"balanceOf(address,uint256)\":{\"details\":\"Returns the amount of tokens of token type `id` owned by `account`. Requirements: - `account` cannot be the zero address.\"},\"balanceOfBatch(address[],uint256[])\":{\"details\":\"xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}. Requirements: - `accounts` and `ids` must have the same length.\"},\"isApprovedForAll(address,address)\":{\"details\":\"Returns true if `operator` is approved to transfer ``account``'s tokens. See {setApprovalForAll}.\"},\"safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)\":{\"details\":\"xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}. Emits a {TransferBatch} event. Requirements: - `ids` and `amounts` must have the same length. - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the acceptance magic value.\"},\"safeTransferFrom(address,address,uint256,uint256,bytes)\":{\"details\":\"Transfers `amount` tokens of token type `id` from `from` to `to`. Emits a {TransferSingle} event. Requirements: - `to` cannot be the zero address. - If the caller is not `from`, it must have been approved to spend ``from``'s tokens via {setApprovalForAll}. - `from` must have a balance of tokens of type `id` of at least `amount`. - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the acceptance magic value.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`, Emits an {ApprovalForAll} event. Requirements: - `operator` cannot be the caller.\"},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"},\"uri(uint256)\":{\"details\":\"Returns the URI for token type `id`. If the `\\\\{id\\\\}` substring is present in the URI, it must be replaced by clients with the actual token type ID.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol\":\"IERC1155MetadataURI\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC1155/IERC1155.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC1155/IERC1155.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC1155 compliant contract, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-1155[EIP].\\n *\\n * _Available since v3.1._\\n */\\ninterface IERC1155 is IERC165 {\\n /**\\n * @dev Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`.\\n */\\n event TransferSingle(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value);\\n\\n /**\\n * @dev Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all\\n * transfers.\\n */\\n event TransferBatch(\\n address indexed operator,\\n address indexed from,\\n address indexed to,\\n uint256[] ids,\\n uint256[] values\\n );\\n\\n /**\\n * @dev Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to\\n * `approved`.\\n */\\n event ApprovalForAll(address indexed account, address indexed operator, bool approved);\\n\\n /**\\n * @dev Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI.\\n *\\n * If an {URI} event was emitted for `id`, the standard\\n * https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value\\n * returned by {IERC1155MetadataURI-uri}.\\n */\\n event URI(string value, uint256 indexed id);\\n\\n /**\\n * @dev Returns the amount of tokens of token type `id` owned by `account`.\\n *\\n * Requirements:\\n *\\n * - `account` cannot be the zero address.\\n */\\n function balanceOf(address account, uint256 id) external view returns (uint256);\\n\\n /**\\n * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}.\\n *\\n * Requirements:\\n *\\n * - `accounts` and `ids` must have the same length.\\n */\\n function balanceOfBatch(\\n address[] calldata accounts,\\n uint256[] calldata ids\\n ) external view returns (uint256[] memory);\\n\\n /**\\n * @dev Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`,\\n *\\n * Emits an {ApprovalForAll} event.\\n *\\n * Requirements:\\n *\\n * - `operator` cannot be the caller.\\n */\\n function setApprovalForAll(address operator, bool approved) external;\\n\\n /**\\n * @dev Returns true if `operator` is approved to transfer ``account``'s tokens.\\n *\\n * See {setApprovalForAll}.\\n */\\n function isApprovedForAll(address account, address operator) external view returns (bool);\\n\\n /**\\n * @dev Transfers `amount` tokens of token type `id` from `from` to `to`.\\n *\\n * Emits a {TransferSingle} event.\\n *\\n * Requirements:\\n *\\n * - `to` cannot be the zero address.\\n * - If the caller is not `from`, it must have been approved to spend ``from``'s tokens via {setApprovalForAll}.\\n * - `from` must have a balance of tokens of type `id` of at least `amount`.\\n * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the\\n * acceptance magic value.\\n */\\n function safeTransferFrom(address from, address to, uint256 id, uint256 amount, bytes calldata data) external;\\n\\n /**\\n * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}.\\n *\\n * Emits a {TransferBatch} event.\\n *\\n * Requirements:\\n *\\n * - `ids` and `amounts` must have the same length.\\n * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the\\n * acceptance magic value.\\n */\\n function safeBatchTransferFrom(\\n address from,\\n address to,\\n uint256[] calldata ids,\\n uint256[] calldata amounts,\\n bytes calldata data\\n ) external;\\n}\\n\",\"keccak256\":\"0xcab667ddad478ff0d39c2053ca77fac778af8483c18ab07d810277b4216fd582\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC1155/extensions/IERC1155MetadataURI.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC1155.sol\\\";\\n\\n/**\\n * @dev Interface of the optional ERC1155MetadataExtension interface, as defined\\n * in the https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[EIP].\\n *\\n * _Available since v3.1._\\n */\\ninterface IERC1155MetadataURI is IERC1155 {\\n /**\\n * @dev Returns the URI for token type `id`.\\n *\\n * If the `\\\\{id\\\\}` substring is present in the URI, it must be replaced by\\n * clients with the actual token type ID.\\n */\\n function uri(uint256 id) external view returns (string memory);\\n}\\n\",\"keccak256\":\"0xa66d18b9a85458d28fc3304717964502ae36f7f8a2ff35bc83f6f85d74b03574\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/token/ERC20/ERC20.sol":{"ERC20":{"abi":[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"Implementation of the {IERC20} interface. This implementation is agnostic to the way tokens are created. This means that a supply mechanism has to be added in a derived contract using {_mint}. For a generic mechanism see {ERC20PresetMinterPauser}. TIP: For a detailed writeup see our guide https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How to implement supply mechanisms]. The default value of {decimals} is 18. To change this, you should override this function so it returns a different value. We have followed general OpenZeppelin Contracts guidelines: functions revert instead returning `false` on failure. This behavior is nonetheless conventional and does not conflict with the expectations of ERC20 applications. Additionally, an {Approval} event is emitted on calls to {transferFrom}. This allows applications to reconstruct the allowance for all accounts just by listening to said events. Other implementations of the EIP may not emit these events, as it isn't required by the specification. Finally, the non-standard {decreaseAllowance} and {increaseAllowance} functions have been added to mitigate the well-known issues around setting allowances. See {IERC20-approve}.","kind":"dev","methods":{"allowance(address,address)":{"details":"See {IERC20-allowance}."},"approve(address,uint256)":{"details":"See {IERC20-approve}. NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address."},"balanceOf(address)":{"details":"See {IERC20-balanceOf}."},"constructor":{"details":"Sets the values for {name} and {symbol}. All two of these values are immutable: they can only be set once during construction."},"decimals()":{"details":"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}."},"decreaseAllowance(address,uint256)":{"details":"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`."},"increaseAllowance(address,uint256)":{"details":"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address."},"name()":{"details":"Returns the name of the token."},"symbol()":{"details":"Returns the symbol of the token, usually a shorter version of the name."},"totalSupply()":{"details":"See {IERC20-totalSupply}."},"transfer(address,uint256)":{"details":"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `amount`."},"transferFrom(address,address,uint256)":{"details":"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `amount`. - the caller must have allowance for ``from``'s tokens of at least `amount`."}},"version":1},"evm":{"bytecode":{"functionDebugData":{"@_7201":{"entryPoint":null,"id":7201,"parameterSlots":2,"returnSlots":0},"abi_decode_string_fromMemory":{"entryPoint":112,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr_fromMemory":{"entryPoint":287,"id":null,"parameterSlots":2,"returnSlots":2},"array_dataslot_string_storage":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"clean_up_bytearray_end_slots_string_storage":{"entryPoint":453,"id":null,"parameterSlots":3,"returnSlots":0},"copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage":{"entryPoint":536,"id":null,"parameterSlots":2,"returnSlots":0},"extract_byte_array_length":{"entryPoint":393,"id":null,"parameterSlots":1,"returnSlots":1},"extract_used_part_and_set_length_of_short_byte_array":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"panic_error_0x41":{"entryPoint":90,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:4144:92","statements":[{"nodeType":"YulBlock","src":"6:3:92","statements":[]},{"body":{"nodeType":"YulBlock","src":"46:95:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"63:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"70:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"75:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"66:3:92"},"nodeType":"YulFunctionCall","src":"66:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"56:6:92"},"nodeType":"YulFunctionCall","src":"56:31:92"},"nodeType":"YulExpressionStatement","src":"56:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"103:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"106:4:92","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"96:6:92"},"nodeType":"YulFunctionCall","src":"96:15:92"},"nodeType":"YulExpressionStatement","src":"96:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"127:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"130:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"120:6:92"},"nodeType":"YulFunctionCall","src":"120:15:92"},"nodeType":"YulExpressionStatement","src":"120:15:92"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"14:127:92"},{"body":{"nodeType":"YulBlock","src":"210:776:92","statements":[{"body":{"nodeType":"YulBlock","src":"259:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"268:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"271:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"261:6:92"},"nodeType":"YulFunctionCall","src":"261:12:92"},"nodeType":"YulExpressionStatement","src":"261:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"238:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"246:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"234:3:92"},"nodeType":"YulFunctionCall","src":"234:17:92"},{"name":"end","nodeType":"YulIdentifier","src":"253:3:92"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"230:3:92"},"nodeType":"YulFunctionCall","src":"230:27:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"223:6:92"},"nodeType":"YulFunctionCall","src":"223:35:92"},"nodeType":"YulIf","src":"220:55:92"},{"nodeType":"YulVariableDeclaration","src":"284:23:92","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"300:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"294:5:92"},"nodeType":"YulFunctionCall","src":"294:13:92"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"288:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"316:28:92","value":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"334:2:92","type":"","value":"64"},{"kind":"number","nodeType":"YulLiteral","src":"338:1:92","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"330:3:92"},"nodeType":"YulFunctionCall","src":"330:10:92"},{"kind":"number","nodeType":"YulLiteral","src":"342:1:92","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"326:3:92"},"nodeType":"YulFunctionCall","src":"326:18:92"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"320:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"367:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"369:16:92"},"nodeType":"YulFunctionCall","src":"369:18:92"},"nodeType":"YulExpressionStatement","src":"369:18:92"}]},"condition":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"359:2:92"},{"name":"_2","nodeType":"YulIdentifier","src":"363:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"356:2:92"},"nodeType":"YulFunctionCall","src":"356:10:92"},"nodeType":"YulIf","src":"353:36:92"},{"nodeType":"YulVariableDeclaration","src":"398:17:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"412:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"408:3:92"},"nodeType":"YulFunctionCall","src":"408:7:92"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"402:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"424:23:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"444:2:92","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"438:5:92"},"nodeType":"YulFunctionCall","src":"438:9:92"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"428:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"456:71:92","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"478:6:92"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"502:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"506:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"498:3:92"},"nodeType":"YulFunctionCall","src":"498:13:92"},{"name":"_3","nodeType":"YulIdentifier","src":"513:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"494:3:92"},"nodeType":"YulFunctionCall","src":"494:22:92"},{"kind":"number","nodeType":"YulLiteral","src":"518:2:92","type":"","value":"63"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"490:3:92"},"nodeType":"YulFunctionCall","src":"490:31:92"},{"name":"_3","nodeType":"YulIdentifier","src":"523:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"486:3:92"},"nodeType":"YulFunctionCall","src":"486:40:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"474:3:92"},"nodeType":"YulFunctionCall","src":"474:53:92"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"460:10:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"586:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"588:16:92"},"nodeType":"YulFunctionCall","src":"588:18:92"},"nodeType":"YulExpressionStatement","src":"588:18:92"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"545:10:92"},{"name":"_2","nodeType":"YulIdentifier","src":"557:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"542:2:92"},"nodeType":"YulFunctionCall","src":"542:18:92"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"565:10:92"},{"name":"memPtr","nodeType":"YulIdentifier","src":"577:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"562:2:92"},"nodeType":"YulFunctionCall","src":"562:22:92"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"539:2:92"},"nodeType":"YulFunctionCall","src":"539:46:92"},"nodeType":"YulIf","src":"536:72:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"624:2:92","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"628:10:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"617:6:92"},"nodeType":"YulFunctionCall","src":"617:22:92"},"nodeType":"YulExpressionStatement","src":"617:22:92"},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"655:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"663:2:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"648:6:92"},"nodeType":"YulFunctionCall","src":"648:18:92"},"nodeType":"YulExpressionStatement","src":"648:18:92"},{"nodeType":"YulVariableDeclaration","src":"675:14:92","value":{"kind":"number","nodeType":"YulLiteral","src":"685:4:92","type":"","value":"0x20"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"679:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"735:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"744:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"747:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"737:6:92"},"nodeType":"YulFunctionCall","src":"737:12:92"},"nodeType":"YulExpressionStatement","src":"737:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"712:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"720:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"708:3:92"},"nodeType":"YulFunctionCall","src":"708:15:92"},{"name":"_4","nodeType":"YulIdentifier","src":"725:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"704:3:92"},"nodeType":"YulFunctionCall","src":"704:24:92"},{"name":"end","nodeType":"YulIdentifier","src":"730:3:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"701:2:92"},"nodeType":"YulFunctionCall","src":"701:33:92"},"nodeType":"YulIf","src":"698:53:92"},{"nodeType":"YulVariableDeclaration","src":"760:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"769:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"764:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"825:87:92","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"854:6:92"},{"name":"i","nodeType":"YulIdentifier","src":"862:1:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"850:3:92"},"nodeType":"YulFunctionCall","src":"850:14:92"},{"name":"_4","nodeType":"YulIdentifier","src":"866:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"846:3:92"},"nodeType":"YulFunctionCall","src":"846:23:92"},{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"885:6:92"},{"name":"i","nodeType":"YulIdentifier","src":"893:1:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"881:3:92"},"nodeType":"YulFunctionCall","src":"881:14:92"},{"name":"_4","nodeType":"YulIdentifier","src":"897:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"877:3:92"},"nodeType":"YulFunctionCall","src":"877:23:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"871:5:92"},"nodeType":"YulFunctionCall","src":"871:30:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"839:6:92"},"nodeType":"YulFunctionCall","src":"839:63:92"},"nodeType":"YulExpressionStatement","src":"839:63:92"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"790:1:92"},{"name":"_1","nodeType":"YulIdentifier","src":"793:2:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"787:2:92"},"nodeType":"YulFunctionCall","src":"787:9:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"797:19:92","statements":[{"nodeType":"YulAssignment","src":"799:15:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"808:1:92"},{"name":"_4","nodeType":"YulIdentifier","src":"811:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"804:3:92"},"nodeType":"YulFunctionCall","src":"804:10:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"799:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"783:3:92","statements":[]},"src":"779:133:92"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"936:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"944:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"932:3:92"},"nodeType":"YulFunctionCall","src":"932:15:92"},{"name":"_4","nodeType":"YulIdentifier","src":"949:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"928:3:92"},"nodeType":"YulFunctionCall","src":"928:24:92"},{"kind":"number","nodeType":"YulLiteral","src":"954:1:92","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"921:6:92"},"nodeType":"YulFunctionCall","src":"921:35:92"},"nodeType":"YulExpressionStatement","src":"921:35:92"},{"nodeType":"YulAssignment","src":"965:15:92","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"974:6:92"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"965:5:92"}]}]},"name":"abi_decode_string_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"184:6:92","type":""},{"name":"end","nodeType":"YulTypedName","src":"192:3:92","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"200:5:92","type":""}],"src":"146:840:92"},{"body":{"nodeType":"YulBlock","src":"1109:444:92","statements":[{"body":{"nodeType":"YulBlock","src":"1155:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1164:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1167:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1157:6:92"},"nodeType":"YulFunctionCall","src":"1157:12:92"},"nodeType":"YulExpressionStatement","src":"1157:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1130:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"1139:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1126:3:92"},"nodeType":"YulFunctionCall","src":"1126:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"1151:2:92","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1122:3:92"},"nodeType":"YulFunctionCall","src":"1122:32:92"},"nodeType":"YulIf","src":"1119:52:92"},{"nodeType":"YulVariableDeclaration","src":"1180:30:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1200:9:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1194:5:92"},"nodeType":"YulFunctionCall","src":"1194:16:92"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1184:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"1219:28:92","value":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1237:2:92","type":"","value":"64"},{"kind":"number","nodeType":"YulLiteral","src":"1241:1:92","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1233:3:92"},"nodeType":"YulFunctionCall","src":"1233:10:92"},{"kind":"number","nodeType":"YulLiteral","src":"1245:1:92","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1229:3:92"},"nodeType":"YulFunctionCall","src":"1229:18:92"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"1223:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"1274:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1283:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1286:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1276:6:92"},"nodeType":"YulFunctionCall","src":"1276:12:92"},"nodeType":"YulExpressionStatement","src":"1276:12:92"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1262:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"1270:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1259:2:92"},"nodeType":"YulFunctionCall","src":"1259:14:92"},"nodeType":"YulIf","src":"1256:34:92"},{"nodeType":"YulAssignment","src":"1299:71:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1342:9:92"},{"name":"offset","nodeType":"YulIdentifier","src":"1353:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1338:3:92"},"nodeType":"YulFunctionCall","src":"1338:22:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1362:7:92"}],"functionName":{"name":"abi_decode_string_fromMemory","nodeType":"YulIdentifier","src":"1309:28:92"},"nodeType":"YulFunctionCall","src":"1309:61:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1299:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"1379:41:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1405:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1416:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1401:3:92"},"nodeType":"YulFunctionCall","src":"1401:18:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1395:5:92"},"nodeType":"YulFunctionCall","src":"1395:25:92"},"variables":[{"name":"offset_1","nodeType":"YulTypedName","src":"1383:8:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"1449:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1458:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1461:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1451:6:92"},"nodeType":"YulFunctionCall","src":"1451:12:92"},"nodeType":"YulExpressionStatement","src":"1451:12:92"}]},"condition":{"arguments":[{"name":"offset_1","nodeType":"YulIdentifier","src":"1435:8:92"},{"name":"_1","nodeType":"YulIdentifier","src":"1445:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1432:2:92"},"nodeType":"YulFunctionCall","src":"1432:16:92"},"nodeType":"YulIf","src":"1429:36:92"},{"nodeType":"YulAssignment","src":"1474:73:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1517:9:92"},{"name":"offset_1","nodeType":"YulIdentifier","src":"1528:8:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1513:3:92"},"nodeType":"YulFunctionCall","src":"1513:24:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1539:7:92"}],"functionName":{"name":"abi_decode_string_fromMemory","nodeType":"YulIdentifier","src":"1484:28:92"},"nodeType":"YulFunctionCall","src":"1484:63:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1474:6:92"}]}]},"name":"abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1067:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1078:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1090:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1098:6:92","type":""}],"src":"991:562:92"},{"body":{"nodeType":"YulBlock","src":"1613:325:92","statements":[{"nodeType":"YulAssignment","src":"1623:22:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1637:1:92","type":"","value":"1"},{"name":"data","nodeType":"YulIdentifier","src":"1640:4:92"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"1633:3:92"},"nodeType":"YulFunctionCall","src":"1633:12:92"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"1623:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"1654:38:92","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"1684:4:92"},{"kind":"number","nodeType":"YulLiteral","src":"1690:1:92","type":"","value":"1"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1680:3:92"},"nodeType":"YulFunctionCall","src":"1680:12:92"},"variables":[{"name":"outOfPlaceEncoding","nodeType":"YulTypedName","src":"1658:18:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"1731:31:92","statements":[{"nodeType":"YulAssignment","src":"1733:27:92","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"1747:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"1755:4:92","type":"","value":"0x7f"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1743:3:92"},"nodeType":"YulFunctionCall","src":"1743:17:92"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"1733:6:92"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"1711:18:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1704:6:92"},"nodeType":"YulFunctionCall","src":"1704:26:92"},"nodeType":"YulIf","src":"1701:61:92"},{"body":{"nodeType":"YulBlock","src":"1821:111:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1842:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1849:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"1854:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1845:3:92"},"nodeType":"YulFunctionCall","src":"1845:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1835:6:92"},"nodeType":"YulFunctionCall","src":"1835:31:92"},"nodeType":"YulExpressionStatement","src":"1835:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1886:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"1889:4:92","type":"","value":"0x22"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1879:6:92"},"nodeType":"YulFunctionCall","src":"1879:15:92"},"nodeType":"YulExpressionStatement","src":"1879:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1914:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1917:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1907:6:92"},"nodeType":"YulFunctionCall","src":"1907:15:92"},"nodeType":"YulExpressionStatement","src":"1907:15:92"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"1777:18:92"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"1800:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"1808:2:92","type":"","value":"32"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"1797:2:92"},"nodeType":"YulFunctionCall","src":"1797:14:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1774:2:92"},"nodeType":"YulFunctionCall","src":"1774:38:92"},"nodeType":"YulIf","src":"1771:161:92"}]},"name":"extract_byte_array_length","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"1593:4:92","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"1602:6:92","type":""}],"src":"1558:380:92"},{"body":{"nodeType":"YulBlock","src":"1999:65:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2016:1:92","type":"","value":"0"},{"name":"ptr","nodeType":"YulIdentifier","src":"2019:3:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2009:6:92"},"nodeType":"YulFunctionCall","src":"2009:14:92"},"nodeType":"YulExpressionStatement","src":"2009:14:92"},{"nodeType":"YulAssignment","src":"2032:26:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2050:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2053:4:92","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nodeType":"YulIdentifier","src":"2040:9:92"},"nodeType":"YulFunctionCall","src":"2040:18:92"},"variableNames":[{"name":"data","nodeType":"YulIdentifier","src":"2032:4:92"}]}]},"name":"array_dataslot_string_storage","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nodeType":"YulTypedName","src":"1982:3:92","type":""}],"returnVariables":[{"name":"data","nodeType":"YulTypedName","src":"1990:4:92","type":""}],"src":"1943:121:92"},{"body":{"nodeType":"YulBlock","src":"2150:464:92","statements":[{"body":{"nodeType":"YulBlock","src":"2183:425:92","statements":[{"nodeType":"YulVariableDeclaration","src":"2197:11:92","value":{"kind":"number","nodeType":"YulLiteral","src":"2207:1:92","type":"","value":"0"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"2201:2:92","type":""}]},{"expression":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"2228:2:92"},{"name":"array","nodeType":"YulIdentifier","src":"2232:5:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2221:6:92"},"nodeType":"YulFunctionCall","src":"2221:17:92"},"nodeType":"YulExpressionStatement","src":"2221:17:92"},{"nodeType":"YulVariableDeclaration","src":"2251:31:92","value":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"2273:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"2277:4:92","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nodeType":"YulIdentifier","src":"2263:9:92"},"nodeType":"YulFunctionCall","src":"2263:19:92"},"variables":[{"name":"data","nodeType":"YulTypedName","src":"2255:4:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2295:57:92","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"2318:4:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2328:1:92","type":"","value":"5"},{"arguments":[{"name":"startIndex","nodeType":"YulIdentifier","src":"2335:10:92"},{"kind":"number","nodeType":"YulLiteral","src":"2347:2:92","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2331:3:92"},"nodeType":"YulFunctionCall","src":"2331:19:92"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"2324:3:92"},"nodeType":"YulFunctionCall","src":"2324:27:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2314:3:92"},"nodeType":"YulFunctionCall","src":"2314:38:92"},"variables":[{"name":"deleteStart","nodeType":"YulTypedName","src":"2299:11:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"2389:23:92","statements":[{"nodeType":"YulAssignment","src":"2391:19:92","value":{"name":"data","nodeType":"YulIdentifier","src":"2406:4:92"},"variableNames":[{"name":"deleteStart","nodeType":"YulIdentifier","src":"2391:11:92"}]}]},"condition":{"arguments":[{"name":"startIndex","nodeType":"YulIdentifier","src":"2371:10:92"},{"kind":"number","nodeType":"YulLiteral","src":"2383:4:92","type":"","value":"0x20"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2368:2:92"},"nodeType":"YulFunctionCall","src":"2368:20:92"},"nodeType":"YulIf","src":"2365:47:92"},{"nodeType":"YulVariableDeclaration","src":"2425:41:92","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"2439:4:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2449:1:92","type":"","value":"5"},{"arguments":[{"name":"len","nodeType":"YulIdentifier","src":"2456:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"2461:2:92","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2452:3:92"},"nodeType":"YulFunctionCall","src":"2452:12:92"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"2445:3:92"},"nodeType":"YulFunctionCall","src":"2445:20:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2435:3:92"},"nodeType":"YulFunctionCall","src":"2435:31:92"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"2429:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2479:24:92","value":{"name":"deleteStart","nodeType":"YulIdentifier","src":"2492:11:92"},"variables":[{"name":"start","nodeType":"YulTypedName","src":"2483:5:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"2577:21:92","statements":[{"expression":{"arguments":[{"name":"start","nodeType":"YulIdentifier","src":"2586:5:92"},{"name":"_1","nodeType":"YulIdentifier","src":"2593:2:92"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"2579:6:92"},"nodeType":"YulFunctionCall","src":"2579:17:92"},"nodeType":"YulExpressionStatement","src":"2579:17:92"}]},"condition":{"arguments":[{"name":"start","nodeType":"YulIdentifier","src":"2527:5:92"},{"name":"_2","nodeType":"YulIdentifier","src":"2534:2:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2524:2:92"},"nodeType":"YulFunctionCall","src":"2524:13:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"2538:26:92","statements":[{"nodeType":"YulAssignment","src":"2540:22:92","value":{"arguments":[{"name":"start","nodeType":"YulIdentifier","src":"2553:5:92"},{"kind":"number","nodeType":"YulLiteral","src":"2560:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2549:3:92"},"nodeType":"YulFunctionCall","src":"2549:13:92"},"variableNames":[{"name":"start","nodeType":"YulIdentifier","src":"2540:5:92"}]}]},"pre":{"nodeType":"YulBlock","src":"2520:3:92","statements":[]},"src":"2516:82:92"}]},"condition":{"arguments":[{"name":"len","nodeType":"YulIdentifier","src":"2166:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"2171:2:92","type":"","value":"31"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2163:2:92"},"nodeType":"YulFunctionCall","src":"2163:11:92"},"nodeType":"YulIf","src":"2160:448:92"}]},"name":"clean_up_bytearray_end_slots_string_storage","nodeType":"YulFunctionDefinition","parameters":[{"name":"array","nodeType":"YulTypedName","src":"2122:5:92","type":""},{"name":"len","nodeType":"YulTypedName","src":"2129:3:92","type":""},{"name":"startIndex","nodeType":"YulTypedName","src":"2134:10:92","type":""}],"src":"2069:545:92"},{"body":{"nodeType":"YulBlock","src":"2704:81:92","statements":[{"nodeType":"YulAssignment","src":"2714:65:92","value":{"arguments":[{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"2729:4:92"},{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2747:1:92","type":"","value":"3"},{"name":"len","nodeType":"YulIdentifier","src":"2750:3:92"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2743:3:92"},"nodeType":"YulFunctionCall","src":"2743:11:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2760:1:92","type":"","value":"0"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"2756:3:92"},"nodeType":"YulFunctionCall","src":"2756:6:92"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"2739:3:92"},"nodeType":"YulFunctionCall","src":"2739:24:92"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"2735:3:92"},"nodeType":"YulFunctionCall","src":"2735:29:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2725:3:92"},"nodeType":"YulFunctionCall","src":"2725:40:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2771:1:92","type":"","value":"1"},{"name":"len","nodeType":"YulIdentifier","src":"2774:3:92"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2767:3:92"},"nodeType":"YulFunctionCall","src":"2767:11:92"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"2722:2:92"},"nodeType":"YulFunctionCall","src":"2722:57:92"},"variableNames":[{"name":"used","nodeType":"YulIdentifier","src":"2714:4:92"}]}]},"name":"extract_used_part_and_set_length_of_short_byte_array","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"2681:4:92","type":""},{"name":"len","nodeType":"YulTypedName","src":"2687:3:92","type":""}],"returnVariables":[{"name":"used","nodeType":"YulTypedName","src":"2695:4:92","type":""}],"src":"2619:166:92"},{"body":{"nodeType":"YulBlock","src":"2886:1256:92","statements":[{"nodeType":"YulVariableDeclaration","src":"2896:24:92","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"2916:3:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2910:5:92"},"nodeType":"YulFunctionCall","src":"2910:10:92"},"variables":[{"name":"newLen","nodeType":"YulTypedName","src":"2900:6:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"2963:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"2965:16:92"},"nodeType":"YulFunctionCall","src":"2965:18:92"},"nodeType":"YulExpressionStatement","src":"2965:18:92"}]},"condition":{"arguments":[{"name":"newLen","nodeType":"YulIdentifier","src":"2935:6:92"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2951:2:92","type":"","value":"64"},{"kind":"number","nodeType":"YulLiteral","src":"2955:1:92","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2947:3:92"},"nodeType":"YulFunctionCall","src":"2947:10:92"},{"kind":"number","nodeType":"YulLiteral","src":"2959:1:92","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2943:3:92"},"nodeType":"YulFunctionCall","src":"2943:18:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2932:2:92"},"nodeType":"YulFunctionCall","src":"2932:30:92"},"nodeType":"YulIf","src":"2929:56:92"},{"expression":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"3038:4:92"},{"arguments":[{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"3076:4:92"}],"functionName":{"name":"sload","nodeType":"YulIdentifier","src":"3070:5:92"},"nodeType":"YulFunctionCall","src":"3070:11:92"}],"functionName":{"name":"extract_byte_array_length","nodeType":"YulIdentifier","src":"3044:25:92"},"nodeType":"YulFunctionCall","src":"3044:38:92"},{"name":"newLen","nodeType":"YulIdentifier","src":"3084:6:92"}],"functionName":{"name":"clean_up_bytearray_end_slots_string_storage","nodeType":"YulIdentifier","src":"2994:43:92"},"nodeType":"YulFunctionCall","src":"2994:97:92"},"nodeType":"YulExpressionStatement","src":"2994:97:92"},{"nodeType":"YulVariableDeclaration","src":"3100:18:92","value":{"kind":"number","nodeType":"YulLiteral","src":"3117:1:92","type":"","value":"0"},"variables":[{"name":"srcOffset","nodeType":"YulTypedName","src":"3104:9:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3127:23:92","value":{"kind":"number","nodeType":"YulLiteral","src":"3146:4:92","type":"","value":"0x20"},"variables":[{"name":"srcOffset_1","nodeType":"YulTypedName","src":"3131:11:92","type":""}]},{"nodeType":"YulAssignment","src":"3159:24:92","value":{"name":"srcOffset_1","nodeType":"YulIdentifier","src":"3172:11:92"},"variableNames":[{"name":"srcOffset","nodeType":"YulIdentifier","src":"3159:9:92"}]},{"cases":[{"body":{"nodeType":"YulBlock","src":"3229:656:92","statements":[{"nodeType":"YulVariableDeclaration","src":"3243:35:92","value":{"arguments":[{"name":"newLen","nodeType":"YulIdentifier","src":"3262:6:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3274:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"3270:3:92"},"nodeType":"YulFunctionCall","src":"3270:7:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3258:3:92"},"nodeType":"YulFunctionCall","src":"3258:20:92"},"variables":[{"name":"loopEnd","nodeType":"YulTypedName","src":"3247:7:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3291:49:92","value":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"3335:4:92"}],"functionName":{"name":"array_dataslot_string_storage","nodeType":"YulIdentifier","src":"3305:29:92"},"nodeType":"YulFunctionCall","src":"3305:35:92"},"variables":[{"name":"dstPtr","nodeType":"YulTypedName","src":"3295:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3353:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"3362:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"3357:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"3440:172:92","statements":[{"expression":{"arguments":[{"name":"dstPtr","nodeType":"YulIdentifier","src":"3465:6:92"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"3483:3:92"},{"name":"srcOffset","nodeType":"YulIdentifier","src":"3488:9:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3479:3:92"},"nodeType":"YulFunctionCall","src":"3479:19:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3473:5:92"},"nodeType":"YulFunctionCall","src":"3473:26:92"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"3458:6:92"},"nodeType":"YulFunctionCall","src":"3458:42:92"},"nodeType":"YulExpressionStatement","src":"3458:42:92"},{"nodeType":"YulAssignment","src":"3517:24:92","value":{"arguments":[{"name":"dstPtr","nodeType":"YulIdentifier","src":"3531:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"3539:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3527:3:92"},"nodeType":"YulFunctionCall","src":"3527:14:92"},"variableNames":[{"name":"dstPtr","nodeType":"YulIdentifier","src":"3517:6:92"}]},{"nodeType":"YulAssignment","src":"3558:40:92","value":{"arguments":[{"name":"srcOffset","nodeType":"YulIdentifier","src":"3575:9:92"},{"name":"srcOffset_1","nodeType":"YulIdentifier","src":"3586:11:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3571:3:92"},"nodeType":"YulFunctionCall","src":"3571:27:92"},"variableNames":[{"name":"srcOffset","nodeType":"YulIdentifier","src":"3558:9:92"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3387:1:92"},{"name":"loopEnd","nodeType":"YulIdentifier","src":"3390:7:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"3384:2:92"},"nodeType":"YulFunctionCall","src":"3384:14:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"3399:28:92","statements":[{"nodeType":"YulAssignment","src":"3401:24:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3410:1:92"},{"name":"srcOffset_1","nodeType":"YulIdentifier","src":"3413:11:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3406:3:92"},"nodeType":"YulFunctionCall","src":"3406:19:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"3401:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"3380:3:92","statements":[]},"src":"3376:236:92"},{"body":{"nodeType":"YulBlock","src":"3660:166:92","statements":[{"nodeType":"YulVariableDeclaration","src":"3678:43:92","value":{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"3705:3:92"},{"name":"srcOffset","nodeType":"YulIdentifier","src":"3710:9:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3701:3:92"},"nodeType":"YulFunctionCall","src":"3701:19:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3695:5:92"},"nodeType":"YulFunctionCall","src":"3695:26:92"},"variables":[{"name":"lastValue","nodeType":"YulTypedName","src":"3682:9:92","type":""}]},{"expression":{"arguments":[{"name":"dstPtr","nodeType":"YulIdentifier","src":"3745:6:92"},{"arguments":[{"name":"lastValue","nodeType":"YulIdentifier","src":"3757:9:92"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3784:1:92","type":"","value":"3"},{"name":"newLen","nodeType":"YulIdentifier","src":"3787:6:92"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"3780:3:92"},"nodeType":"YulFunctionCall","src":"3780:14:92"},{"kind":"number","nodeType":"YulLiteral","src":"3796:3:92","type":"","value":"248"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3776:3:92"},"nodeType":"YulFunctionCall","src":"3776:24:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3806:1:92","type":"","value":"0"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"3802:3:92"},"nodeType":"YulFunctionCall","src":"3802:6:92"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"3772:3:92"},"nodeType":"YulFunctionCall","src":"3772:37:92"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"3768:3:92"},"nodeType":"YulFunctionCall","src":"3768:42:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3753:3:92"},"nodeType":"YulFunctionCall","src":"3753:58:92"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"3738:6:92"},"nodeType":"YulFunctionCall","src":"3738:74:92"},"nodeType":"YulExpressionStatement","src":"3738:74:92"}]},"condition":{"arguments":[{"name":"loopEnd","nodeType":"YulIdentifier","src":"3631:7:92"},{"name":"newLen","nodeType":"YulIdentifier","src":"3640:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"3628:2:92"},"nodeType":"YulFunctionCall","src":"3628:19:92"},"nodeType":"YulIf","src":"3625:201:92"},{"expression":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"3846:4:92"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3860:1:92","type":"","value":"1"},{"name":"newLen","nodeType":"YulIdentifier","src":"3863:6:92"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"3856:3:92"},"nodeType":"YulFunctionCall","src":"3856:14:92"},{"kind":"number","nodeType":"YulLiteral","src":"3872:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3852:3:92"},"nodeType":"YulFunctionCall","src":"3852:22:92"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"3839:6:92"},"nodeType":"YulFunctionCall","src":"3839:36:92"},"nodeType":"YulExpressionStatement","src":"3839:36:92"}]},"nodeType":"YulCase","src":"3222:663:92","value":{"kind":"number","nodeType":"YulLiteral","src":"3227:1:92","type":"","value":"1"}},{"body":{"nodeType":"YulBlock","src":"3902:234:92","statements":[{"nodeType":"YulVariableDeclaration","src":"3916:14:92","value":{"kind":"number","nodeType":"YulLiteral","src":"3929:1:92","type":"","value":"0"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"3920:5:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"3965:67:92","statements":[{"nodeType":"YulAssignment","src":"3983:35:92","value":{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"4002:3:92"},{"name":"srcOffset","nodeType":"YulIdentifier","src":"4007:9:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3998:3:92"},"nodeType":"YulFunctionCall","src":"3998:19:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3992:5:92"},"nodeType":"YulFunctionCall","src":"3992:26:92"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"3983:5:92"}]}]},"condition":{"name":"newLen","nodeType":"YulIdentifier","src":"3946:6:92"},"nodeType":"YulIf","src":"3943:89:92"},{"expression":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"4052:4:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4111:5:92"},{"name":"newLen","nodeType":"YulIdentifier","src":"4118:6:92"}],"functionName":{"name":"extract_used_part_and_set_length_of_short_byte_array","nodeType":"YulIdentifier","src":"4058:52:92"},"nodeType":"YulFunctionCall","src":"4058:67:92"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"4045:6:92"},"nodeType":"YulFunctionCall","src":"4045:81:92"},"nodeType":"YulExpressionStatement","src":"4045:81:92"}]},"nodeType":"YulCase","src":"3894:242:92","value":"default"}],"expression":{"arguments":[{"name":"newLen","nodeType":"YulIdentifier","src":"3202:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"3210:2:92","type":"","value":"31"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3199:2:92"},"nodeType":"YulFunctionCall","src":"3199:14:92"},"nodeType":"YulSwitch","src":"3192:944:92"}]},"name":"copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage","nodeType":"YulFunctionDefinition","parameters":[{"name":"slot","nodeType":"YulTypedName","src":"2871:4:92","type":""},{"name":"src","nodeType":"YulTypedName","src":"2877:3:92","type":""}],"src":"2790:1352:92"}]},"contents":"{\n { }\n function panic_error_0x41()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function abi_decode_string_fromMemory(offset, end) -> array\n {\n if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n let _1 := mload(offset)\n let _2 := sub(shl(64, 1), 1)\n if gt(_1, _2) { panic_error_0x41() }\n let _3 := not(31)\n let memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(and(add(_1, 0x1f), _3), 63), _3))\n if or(gt(newFreePtr, _2), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n mstore(memPtr, _1)\n let _4 := 0x20\n if gt(add(add(offset, _1), _4), end) { revert(0, 0) }\n let i := 0\n for { } lt(i, _1) { i := add(i, _4) }\n {\n mstore(add(add(memPtr, i), _4), mload(add(add(offset, i), _4)))\n }\n mstore(add(add(memPtr, _1), _4), 0)\n array := memPtr\n }\n function abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr_fromMemory(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n let offset := mload(headStart)\n let _1 := sub(shl(64, 1), 1)\n if gt(offset, _1) { revert(0, 0) }\n value0 := abi_decode_string_fromMemory(add(headStart, offset), dataEnd)\n let offset_1 := mload(add(headStart, 32))\n if gt(offset_1, _1) { revert(0, 0) }\n value1 := abi_decode_string_fromMemory(add(headStart, offset_1), dataEnd)\n }\n function extract_byte_array_length(data) -> length\n {\n length := shr(1, data)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n if eq(outOfPlaceEncoding, lt(length, 32))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n }\n function array_dataslot_string_storage(ptr) -> data\n {\n mstore(0, ptr)\n data := keccak256(0, 0x20)\n }\n function clean_up_bytearray_end_slots_string_storage(array, len, startIndex)\n {\n if gt(len, 31)\n {\n let _1 := 0\n mstore(_1, array)\n let data := keccak256(_1, 0x20)\n let deleteStart := add(data, shr(5, add(startIndex, 31)))\n if lt(startIndex, 0x20) { deleteStart := data }\n let _2 := add(data, shr(5, add(len, 31)))\n let start := deleteStart\n for { } lt(start, _2) { start := add(start, 1) }\n { sstore(start, _1) }\n }\n }\n function extract_used_part_and_set_length_of_short_byte_array(data, len) -> used\n {\n used := or(and(data, not(shr(shl(3, len), not(0)))), shl(1, len))\n }\n function copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage(slot, src)\n {\n let newLen := mload(src)\n if gt(newLen, sub(shl(64, 1), 1)) { panic_error_0x41() }\n clean_up_bytearray_end_slots_string_storage(slot, extract_byte_array_length(sload(slot)), newLen)\n let srcOffset := 0\n let srcOffset_1 := 0x20\n srcOffset := srcOffset_1\n switch gt(newLen, 31)\n case 1 {\n let loopEnd := and(newLen, not(31))\n let dstPtr := array_dataslot_string_storage(slot)\n let i := 0\n for { } lt(i, loopEnd) { i := add(i, srcOffset_1) }\n {\n sstore(dstPtr, mload(add(src, srcOffset)))\n dstPtr := add(dstPtr, 1)\n srcOffset := add(srcOffset, srcOffset_1)\n }\n if lt(loopEnd, newLen)\n {\n let lastValue := mload(add(src, srcOffset))\n sstore(dstPtr, and(lastValue, not(shr(and(shl(3, newLen), 248), not(0)))))\n }\n sstore(slot, add(shl(1, newLen), 1))\n }\n default {\n let value := 0\n if newLen\n {\n value := mload(add(src, srcOffset))\n }\n sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, newLen))\n }\n }\n}","id":92,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60806040523480156200001157600080fd5b5060405162000bcb38038062000bcb83398101604081905262000034916200011f565b600362000042838262000218565b50600462000051828262000218565b505050620002e4565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200008257600080fd5b81516001600160401b03808211156200009f576200009f6200005a565b604051601f8301601f19908116603f01168101908282118183101715620000ca57620000ca6200005a565b81604052838152602092508683858801011115620000e757600080fd5b600091505b838210156200010b5785820183015181830184015290820190620000ec565b600093810190920192909252949350505050565b600080604083850312156200013357600080fd5b82516001600160401b03808211156200014b57600080fd5b620001598683870162000070565b935060208501519150808211156200017057600080fd5b506200017f8582860162000070565b9150509250929050565b600181811c908216806200019e57607f821691505b602082108103620001bf57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200021357600081815260208120601f850160051c81016020861015620001ee5750805b601f850160051c820191505b818110156200020f57828155600101620001fa565b5050505b505050565b81516001600160401b038111156200023457620002346200005a565b6200024c8162000245845462000189565b84620001c5565b602080601f8311600181146200028457600084156200026b5750858301515b600019600386901b1c1916600185901b1785556200020f565b600085815260208120601f198616915b82811015620002b55788860151825594840194600190910190840162000294565b5085821015620002d45787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6108d780620002f46000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c80633950935111610081578063a457c2d71161005b578063a457c2d714610187578063a9059cbb1461019a578063dd62ed3e146101ad57600080fd5b8063395093511461014357806370a082311461015657806395d89b411461017f57600080fd5b806318160ddd116100b257806318160ddd1461010f57806323b872dd14610121578063313ce5671461013457600080fd5b806306fdde03146100ce578063095ea7b3146100ec575b600080fd5b6100d66101e6565b6040516100e3919061074a565b60405180910390f35b6100ff6100fa3660046107b4565b610278565b60405190151581526020016100e3565b6002545b6040519081526020016100e3565b6100ff61012f3660046107de565b610292565b604051601281526020016100e3565b6100ff6101513660046107b4565b6102b6565b61011361016436600461081a565b6001600160a01b031660009081526020819052604090205490565b6100d66102f5565b6100ff6101953660046107b4565b610304565b6100ff6101a83660046107b4565b6103b3565b6101136101bb36600461083c565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f59061086f565b80601f01602080910402602001604051908101604052809291908181526020018280546102219061086f565b801561026e5780601f106102435761010080835404028352916020019161026e565b820191906000526020600020905b81548152906001019060200180831161025157829003601f168201915b5050505050905090565b6000336102868185856103c1565b60019150505b92915050565b6000336102a08582856104e5565b6102ab858585610577565b506001949350505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490919061028690829086906102f09087906108a9565b6103c1565b6060600480546101f59061086f565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909190838110156103a65760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6102ab82868684036103c1565b600033610286818585610577565b6001600160a01b0383166104235760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161039d565b6001600160a01b0382166104845760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161039d565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03838116600090815260016020908152604080832093861683529290522054600019811461057157818110156105645760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161039d565b61057184848484036103c1565b50505050565b6001600160a01b0383166105f35760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f6472657373000000000000000000000000000000000000000000000000000000606482015260840161039d565b6001600160a01b0382166106555760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161039d565b6001600160a01b038316600090815260208190526040902054818110156106e45760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e63650000000000000000000000000000000000000000000000000000606482015260840161039d565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610571565b600060208083528351808285015260005b818110156107775785810183015185820160400152820161075b565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146107af57600080fd5b919050565b600080604083850312156107c757600080fd5b6107d083610798565b946020939093013593505050565b6000806000606084860312156107f357600080fd5b6107fc84610798565b925061080a60208501610798565b9150604084013590509250925092565b60006020828403121561082c57600080fd5b61083582610798565b9392505050565b6000806040838503121561084f57600080fd5b61085883610798565b915061086660208401610798565b90509250929050565b600181811c9082168061088357607f821691505b6020821081036108a357634e487b7160e01b600052602260045260246000fd5b50919050565b8082018082111561028c57634e487b7160e01b600052601160045260246000fdfea164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0xBCB CODESIZE SUB DUP1 PUSH3 0xBCB DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x34 SWAP2 PUSH3 0x11F JUMP JUMPDEST PUSH1 0x3 PUSH3 0x42 DUP4 DUP3 PUSH3 0x218 JUMP JUMPDEST POP PUSH1 0x4 PUSH3 0x51 DUP3 DUP3 PUSH3 0x218 JUMP JUMPDEST POP POP POP PUSH3 0x2E4 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x82 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH3 0x9F JUMPI PUSH3 0x9F PUSH3 0x5A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP4 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP3 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH3 0xCA JUMPI PUSH3 0xCA PUSH3 0x5A JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP4 DUP2 MSTORE PUSH1 0x20 SWAP3 POP DUP7 DUP4 DUP6 DUP9 ADD ADD GT ISZERO PUSH3 0xE7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP2 POP JUMPDEST DUP4 DUP3 LT ISZERO PUSH3 0x10B JUMPI DUP6 DUP3 ADD DUP4 ADD MLOAD DUP2 DUP4 ADD DUP5 ADD MSTORE SWAP1 DUP3 ADD SWAP1 PUSH3 0xEC JUMP JUMPDEST PUSH1 0x0 SWAP4 DUP2 ADD SWAP1 SWAP3 ADD SWAP3 SWAP1 SWAP3 MSTORE SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x133 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH3 0x14B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x159 DUP7 DUP4 DUP8 ADD PUSH3 0x70 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD MLOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH3 0x170 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x17F DUP6 DUP3 DUP7 ADD PUSH3 0x70 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH3 0x19E JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH3 0x1BF JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH3 0x213 JUMPI PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP7 LT ISZERO PUSH3 0x1EE JUMPI POP DUP1 JUMPDEST PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x20F JUMPI DUP3 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x1FA JUMP JUMPDEST POP POP POP JUMPDEST POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH3 0x234 JUMPI PUSH3 0x234 PUSH3 0x5A JUMP JUMPDEST PUSH3 0x24C DUP2 PUSH3 0x245 DUP5 SLOAD PUSH3 0x189 JUMP JUMPDEST DUP5 PUSH3 0x1C5 JUMP JUMPDEST PUSH1 0x20 DUP1 PUSH1 0x1F DUP4 GT PUSH1 0x1 DUP2 EQ PUSH3 0x284 JUMPI PUSH1 0x0 DUP5 ISZERO PUSH3 0x26B JUMPI POP DUP6 DUP4 ADD MLOAD JUMPDEST PUSH1 0x0 NOT PUSH1 0x3 DUP7 SWAP1 SHL SHR NOT AND PUSH1 0x1 DUP6 SWAP1 SHL OR DUP6 SSTORE PUSH3 0x20F JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F NOT DUP7 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH3 0x2B5 JUMPI DUP9 DUP7 ADD MLOAD DUP3 SSTORE SWAP5 DUP5 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 DUP5 ADD PUSH3 0x294 JUMP JUMPDEST POP DUP6 DUP3 LT ISZERO PUSH3 0x2D4 JUMPI DUP8 DUP6 ADD MLOAD PUSH1 0x0 NOT PUSH1 0x3 DUP9 SWAP1 SHL PUSH1 0xF8 AND SHR NOT AND DUP2 SSTORE JUMPDEST POP POP POP POP POP PUSH1 0x1 SWAP1 DUP2 SHL ADD SWAP1 SSTORE POP JUMP JUMPDEST PUSH2 0x8D7 DUP1 PUSH3 0x2F4 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xC9 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x39509351 GT PUSH2 0x81 JUMPI DUP1 PUSH4 0xA457C2D7 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x187 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x19A JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x1AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x39509351 EQ PUSH2 0x143 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x156 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x17F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x18160DDD GT PUSH2 0xB2 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x10F JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x121 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x134 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xCE JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0xEC JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD6 PUSH2 0x1E6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xE3 SWAP2 SWAP1 PUSH2 0x74A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xFF PUSH2 0xFA CALLDATASIZE PUSH1 0x4 PUSH2 0x7B4 JUMP JUMPDEST PUSH2 0x278 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xE3 JUMP JUMPDEST PUSH1 0x2 SLOAD JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xE3 JUMP JUMPDEST PUSH2 0xFF PUSH2 0x12F CALLDATASIZE PUSH1 0x4 PUSH2 0x7DE JUMP JUMPDEST PUSH2 0x292 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x12 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xE3 JUMP JUMPDEST PUSH2 0xFF PUSH2 0x151 CALLDATASIZE PUSH1 0x4 PUSH2 0x7B4 JUMP JUMPDEST PUSH2 0x2B6 JUMP JUMPDEST PUSH2 0x113 PUSH2 0x164 CALLDATASIZE PUSH1 0x4 PUSH2 0x81A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0xD6 PUSH2 0x2F5 JUMP JUMPDEST PUSH2 0xFF PUSH2 0x195 CALLDATASIZE PUSH1 0x4 PUSH2 0x7B4 JUMP JUMPDEST PUSH2 0x304 JUMP JUMPDEST PUSH2 0xFF PUSH2 0x1A8 CALLDATASIZE PUSH1 0x4 PUSH2 0x7B4 JUMP JUMPDEST PUSH2 0x3B3 JUMP JUMPDEST PUSH2 0x113 PUSH2 0x1BB CALLDATASIZE PUSH1 0x4 PUSH2 0x83C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x3 DUP1 SLOAD PUSH2 0x1F5 SWAP1 PUSH2 0x86F JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x221 SWAP1 PUSH2 0x86F JUMP JUMPDEST DUP1 ISZERO PUSH2 0x26E JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x243 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x26E JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x251 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0x286 DUP2 DUP6 DUP6 PUSH2 0x3C1 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0x2A0 DUP6 DUP3 DUP6 PUSH2 0x4E5 JUMP JUMPDEST PUSH2 0x2AB DUP6 DUP6 DUP6 PUSH2 0x577 JUMP JUMPDEST POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 SWAP1 PUSH2 0x286 SWAP1 DUP3 SWAP1 DUP7 SWAP1 PUSH2 0x2F0 SWAP1 DUP8 SWAP1 PUSH2 0x8A9 JUMP JUMPDEST PUSH2 0x3C1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x4 DUP1 SLOAD PUSH2 0x1F5 SWAP1 PUSH2 0x86F JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 SWAP1 DUP4 DUP2 LT ISZERO PUSH2 0x3A6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A2064656372656173656420616C6C6F77616E63652062656C6F77 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x207A65726F000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2AB DUP3 DUP7 DUP7 DUP5 SUB PUSH2 0x3C1 JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0x286 DUP2 DUP6 DUP6 PUSH2 0x577 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x423 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x45524332303A20617070726F76652066726F6D20746865207A65726F20616464 PUSH1 0x44 DUP3 ADD MSTORE PUSH4 0x72657373 PUSH1 0xE0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x39D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x484 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20617070726F766520746F20746865207A65726F206164647265 PUSH1 0x44 DUP3 ADD MSTORE PUSH2 0x7373 PUSH1 0xF0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x39D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE SWAP1 MLOAD DUP5 DUP2 MSTORE PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP7 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0x0 NOT DUP2 EQ PUSH2 0x571 JUMPI DUP2 DUP2 LT ISZERO PUSH2 0x564 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E73756666696369656E7420616C6C6F77616E6365000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x39D JUMP JUMPDEST PUSH2 0x571 DUP5 DUP5 DUP5 DUP5 SUB PUSH2 0x3C1 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x5F3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E736665722066726F6D20746865207A65726F206164 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6472657373000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x39D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x655 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x23 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E7366657220746F20746865207A65726F2061646472 PUSH1 0x44 DUP3 ADD MSTORE PUSH3 0x657373 PUSH1 0xE8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x39D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 DUP2 LT ISZERO PUSH2 0x6E4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E7366657220616D6F756E7420657863656564732062 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x616C616E63650000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x39D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP8 SUB SWAP1 SSTORE SWAP4 DUP8 AND DUP1 DUP4 MSTORE SWAP2 DUP5 SWAP1 KECCAK256 DUP1 SLOAD DUP8 ADD SWAP1 SSTORE SWAP3 MLOAD DUP6 DUP2 MSTORE SWAP1 SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH2 0x571 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x777 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0x75B JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x40 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x40 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP3 POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x7AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x7C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7D0 DUP4 PUSH2 0x798 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x7F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7FC DUP5 PUSH2 0x798 JUMP JUMPDEST SWAP3 POP PUSH2 0x80A PUSH1 0x20 DUP6 ADD PUSH2 0x798 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x82C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x835 DUP3 PUSH2 0x798 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x84F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x858 DUP4 PUSH2 0x798 JUMP JUMPDEST SWAP2 POP PUSH2 0x866 PUSH1 0x20 DUP5 ADD PUSH2 0x798 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x883 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x8A3 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x28C JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"1532:11312:26:-:0;;;1980:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2046:5;:13;2054:5;2046;:13;:::i;:::-;-1:-1:-1;2069:7:26;:17;2079:7;2069;:17;:::i;:::-;;1980:113;;1532:11312;;14:127:92;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:840;200:5;253:3;246:4;238:6;234:17;230:27;220:55;;271:1;268;261:12;220:55;294:13;;-1:-1:-1;;;;;356:10:92;;;353:36;;;369:18;;:::i;:::-;444:2;438:9;412:2;498:13;;-1:-1:-1;;494:22:92;;;518:2;490:31;486:40;474:53;;;542:18;;;562:22;;;539:46;536:72;;;588:18;;:::i;:::-;628:10;624:2;617:22;663:2;655:6;648:18;685:4;675:14;;730:3;725:2;720;712:6;708:15;704:24;701:33;698:53;;;747:1;744;737:12;698:53;769:1;760:10;;779:133;793:2;790:1;787:9;779:133;;;881:14;;;877:23;;871:30;850:14;;;846:23;;839:63;804:10;;;;779:133;;;954:1;932:15;;;928:24;;;921:35;;;;936:6;146:840;-1:-1:-1;;;;146:840:92:o;991:562::-;1090:6;1098;1151:2;1139:9;1130:7;1126:23;1122:32;1119:52;;;1167:1;1164;1157:12;1119:52;1194:16;;-1:-1:-1;;;;;1259:14:92;;;1256:34;;;1286:1;1283;1276:12;1256:34;1309:61;1362:7;1353:6;1342:9;1338:22;1309:61;:::i;:::-;1299:71;;1416:2;1405:9;1401:18;1395:25;1379:41;;1445:2;1435:8;1432:16;1429:36;;;1461:1;1458;1451:12;1429:36;;1484:63;1539:7;1528:8;1517:9;1513:24;1484:63;:::i;:::-;1474:73;;;991:562;;;;;:::o;1558:380::-;1637:1;1633:12;;;;1680;;;1701:61;;1755:4;1747:6;1743:17;1733:27;;1701:61;1808:2;1800:6;1797:14;1777:18;1774:38;1771:161;;1854:10;1849:3;1845:20;1842:1;1835:31;1889:4;1886:1;1879:15;1917:4;1914:1;1907:15;1771:161;;1558:380;;;:::o;2069:545::-;2171:2;2166:3;2163:11;2160:448;;;2207:1;2232:5;2228:2;2221:17;2277:4;2273:2;2263:19;2347:2;2335:10;2331:19;2328:1;2324:27;2318:4;2314:38;2383:4;2371:10;2368:20;2365:47;;;-1:-1:-1;2406:4:92;2365:47;2461:2;2456:3;2452:12;2449:1;2445:20;2439:4;2435:31;2425:41;;2516:82;2534:2;2527:5;2524:13;2516:82;;;2579:17;;;2560:1;2549:13;2516:82;;;2520:3;;;2160:448;2069:545;;;:::o;2790:1352::-;2910:10;;-1:-1:-1;;;;;2932:30:92;;2929:56;;;2965:18;;:::i;:::-;2994:97;3084:6;3044:38;3076:4;3070:11;3044:38;:::i;:::-;3038:4;2994:97;:::i;:::-;3146:4;;3210:2;3199:14;;3227:1;3222:663;;;;3929:1;3946:6;3943:89;;;-1:-1:-1;3998:19:92;;;3992:26;3943:89;-1:-1:-1;;2747:1:92;2743:11;;;2739:24;2735:29;2725:40;2771:1;2767:11;;;2722:57;4045:81;;3192:944;;3222:663;2016:1;2009:14;;;2053:4;2040:18;;-1:-1:-1;;3258:20:92;;;3376:236;3390:7;3387:1;3384:14;3376:236;;;3479:19;;;3473:26;3458:42;;3571:27;;;;3539:1;3527:14;;;;3406:19;;3376:236;;;3380:3;3640:6;3631:7;3628:19;3625:201;;;3701:19;;;3695:26;-1:-1:-1;;3784:1:92;3780:14;;;3796:3;3776:24;3772:37;3768:42;3753:58;3738:74;;3625:201;-1:-1:-1;;;;;3872:1:92;3856:14;;;3852:22;3839:36;;-1:-1:-1;2790:1352:92:o;:::-;1532:11312:26;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_afterTokenTransfer_7742":{"entryPoint":null,"id":7742,"parameterSlots":3,"returnSlots":0},"@_approve_7677":{"entryPoint":961,"id":7677,"parameterSlots":3,"returnSlots":0},"@_beforeTokenTransfer_7731":{"entryPoint":null,"id":7731,"parameterSlots":3,"returnSlots":0},"@_msgSender_9276":{"entryPoint":null,"id":9276,"parameterSlots":0,"returnSlots":1},"@_spendAllowance_7720":{"entryPoint":1253,"id":7720,"parameterSlots":3,"returnSlots":0},"@_transfer_7503":{"entryPoint":1399,"id":7503,"parameterSlots":3,"returnSlots":0},"@allowance_7298":{"entryPoint":null,"id":7298,"parameterSlots":2,"returnSlots":1},"@approve_7323":{"entryPoint":632,"id":7323,"parameterSlots":2,"returnSlots":1},"@balanceOf_7255":{"entryPoint":null,"id":7255,"parameterSlots":1,"returnSlots":1},"@decimals_7231":{"entryPoint":null,"id":7231,"parameterSlots":0,"returnSlots":1},"@decreaseAllowance_7426":{"entryPoint":772,"id":7426,"parameterSlots":2,"returnSlots":1},"@increaseAllowance_7385":{"entryPoint":694,"id":7385,"parameterSlots":2,"returnSlots":1},"@name_7211":{"entryPoint":486,"id":7211,"parameterSlots":0,"returnSlots":1},"@symbol_7221":{"entryPoint":757,"id":7221,"parameterSlots":0,"returnSlots":1},"@totalSupply_7241":{"entryPoint":null,"id":7241,"parameterSlots":0,"returnSlots":1},"@transferFrom_7356":{"entryPoint":658,"id":7356,"parameterSlots":3,"returnSlots":1},"@transfer_7280":{"entryPoint":947,"id":7280,"parameterSlots":2,"returnSlots":1},"abi_decode_address":{"entryPoint":1944,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_tuple_t_address":{"entryPoint":2074,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_address":{"entryPoint":2108,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_addresst_uint256":{"entryPoint":2014,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_addresst_uint256":{"entryPoint":1972,"id":null,"parameterSlots":2,"returnSlots":2},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":1866,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_3b6607e091cba9325f958656d2b5e0622ab7dc0eac71a26ac788cb25bc19f4fe__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"checked_add_t_uint256":{"entryPoint":2217,"id":null,"parameterSlots":2,"returnSlots":1},"extract_byte_array_length":{"entryPoint":2159,"id":null,"parameterSlots":1,"returnSlots":1}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:5777:92","statements":[{"nodeType":"YulBlock","src":"6:3:92","statements":[]},{"body":{"nodeType":"YulBlock","src":"135:427:92","statements":[{"nodeType":"YulVariableDeclaration","src":"145:12:92","value":{"kind":"number","nodeType":"YulLiteral","src":"155:2:92","type":"","value":"32"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"149:2:92","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"173:9:92"},{"name":"_1","nodeType":"YulIdentifier","src":"184:2:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"166:6:92"},"nodeType":"YulFunctionCall","src":"166:21:92"},"nodeType":"YulExpressionStatement","src":"166:21:92"},{"nodeType":"YulVariableDeclaration","src":"196:27:92","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"216:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"210:5:92"},"nodeType":"YulFunctionCall","src":"210:13:92"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"200:6:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"243:9:92"},{"name":"_1","nodeType":"YulIdentifier","src":"254:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"239:3:92"},"nodeType":"YulFunctionCall","src":"239:18:92"},{"name":"length","nodeType":"YulIdentifier","src":"259:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"232:6:92"},"nodeType":"YulFunctionCall","src":"232:34:92"},"nodeType":"YulExpressionStatement","src":"232:34:92"},{"nodeType":"YulVariableDeclaration","src":"275:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"284:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"279:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"344:90:92","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"373:9:92"},{"name":"i","nodeType":"YulIdentifier","src":"384:1:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"369:3:92"},"nodeType":"YulFunctionCall","src":"369:17:92"},{"kind":"number","nodeType":"YulLiteral","src":"388:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"365:3:92"},"nodeType":"YulFunctionCall","src":"365:26:92"},{"arguments":[{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"407:6:92"},{"name":"i","nodeType":"YulIdentifier","src":"415:1:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"403:3:92"},"nodeType":"YulFunctionCall","src":"403:14:92"},{"name":"_1","nodeType":"YulIdentifier","src":"419:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"399:3:92"},"nodeType":"YulFunctionCall","src":"399:23:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"393:5:92"},"nodeType":"YulFunctionCall","src":"393:30:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"358:6:92"},"nodeType":"YulFunctionCall","src":"358:66:92"},"nodeType":"YulExpressionStatement","src":"358:66:92"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"305:1:92"},{"name":"length","nodeType":"YulIdentifier","src":"308:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"302:2:92"},"nodeType":"YulFunctionCall","src":"302:13:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"316:19:92","statements":[{"nodeType":"YulAssignment","src":"318:15:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"327:1:92"},{"name":"_1","nodeType":"YulIdentifier","src":"330:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"323:3:92"},"nodeType":"YulFunctionCall","src":"323:10:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"318:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"298:3:92","statements":[]},"src":"294:140:92"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"458:9:92"},{"name":"length","nodeType":"YulIdentifier","src":"469:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"454:3:92"},"nodeType":"YulFunctionCall","src":"454:22:92"},{"kind":"number","nodeType":"YulLiteral","src":"478:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"450:3:92"},"nodeType":"YulFunctionCall","src":"450:31:92"},{"kind":"number","nodeType":"YulLiteral","src":"483:1:92","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"443:6:92"},"nodeType":"YulFunctionCall","src":"443:42:92"},"nodeType":"YulExpressionStatement","src":"443:42:92"},{"nodeType":"YulAssignment","src":"494:62:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"510:9:92"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"529:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"537:2:92","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"525:3:92"},"nodeType":"YulFunctionCall","src":"525:15:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"546:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"542:3:92"},"nodeType":"YulFunctionCall","src":"542:7:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"521:3:92"},"nodeType":"YulFunctionCall","src":"521:29:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"506:3:92"},"nodeType":"YulFunctionCall","src":"506:45:92"},{"kind":"number","nodeType":"YulLiteral","src":"553:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"502:3:92"},"nodeType":"YulFunctionCall","src":"502:54:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"494:4:92"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"104:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"115:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"126:4:92","type":""}],"src":"14:548:92"},{"body":{"nodeType":"YulBlock","src":"616:147:92","statements":[{"nodeType":"YulAssignment","src":"626:29:92","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"648:6:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"635:12:92"},"nodeType":"YulFunctionCall","src":"635:20:92"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"626:5:92"}]},{"body":{"nodeType":"YulBlock","src":"741:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"750:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"753:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"743:6:92"},"nodeType":"YulFunctionCall","src":"743:12:92"},"nodeType":"YulExpressionStatement","src":"743:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"677:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"688:5:92"},{"kind":"number","nodeType":"YulLiteral","src":"695:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"684:3:92"},"nodeType":"YulFunctionCall","src":"684:54:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"674:2:92"},"nodeType":"YulFunctionCall","src":"674:65:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"667:6:92"},"nodeType":"YulFunctionCall","src":"667:73:92"},"nodeType":"YulIf","src":"664:93:92"}]},"name":"abi_decode_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"595:6:92","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"606:5:92","type":""}],"src":"567:196:92"},{"body":{"nodeType":"YulBlock","src":"855:167:92","statements":[{"body":{"nodeType":"YulBlock","src":"901:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"910:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"913:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"903:6:92"},"nodeType":"YulFunctionCall","src":"903:12:92"},"nodeType":"YulExpressionStatement","src":"903:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"876:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"885:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"872:3:92"},"nodeType":"YulFunctionCall","src":"872:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"897:2:92","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"868:3:92"},"nodeType":"YulFunctionCall","src":"868:32:92"},"nodeType":"YulIf","src":"865:52:92"},{"nodeType":"YulAssignment","src":"926:39:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"955:9:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"936:18:92"},"nodeType":"YulFunctionCall","src":"936:29:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"926:6:92"}]},{"nodeType":"YulAssignment","src":"974:42:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1001:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1012:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"997:3:92"},"nodeType":"YulFunctionCall","src":"997:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"984:12:92"},"nodeType":"YulFunctionCall","src":"984:32:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"974:6:92"}]}]},"name":"abi_decode_tuple_t_addresst_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"813:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"824:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"836:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"844:6:92","type":""}],"src":"768:254:92"},{"body":{"nodeType":"YulBlock","src":"1122:92:92","statements":[{"nodeType":"YulAssignment","src":"1132:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1144:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1155:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1140:3:92"},"nodeType":"YulFunctionCall","src":"1140:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1132:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1174:9:92"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1199:6:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1192:6:92"},"nodeType":"YulFunctionCall","src":"1192:14:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1185:6:92"},"nodeType":"YulFunctionCall","src":"1185:22:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1167:6:92"},"nodeType":"YulFunctionCall","src":"1167:41:92"},"nodeType":"YulExpressionStatement","src":"1167:41:92"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1091:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1102:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1113:4:92","type":""}],"src":"1027:187:92"},{"body":{"nodeType":"YulBlock","src":"1320:76:92","statements":[{"nodeType":"YulAssignment","src":"1330:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1342:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1353:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1338:3:92"},"nodeType":"YulFunctionCall","src":"1338:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1330:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1372:9:92"},{"name":"value0","nodeType":"YulIdentifier","src":"1383:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1365:6:92"},"nodeType":"YulFunctionCall","src":"1365:25:92"},"nodeType":"YulExpressionStatement","src":"1365:25:92"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1289:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1300:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1311:4:92","type":""}],"src":"1219:177:92"},{"body":{"nodeType":"YulBlock","src":"1505:224:92","statements":[{"body":{"nodeType":"YulBlock","src":"1551:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1560:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1563:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1553:6:92"},"nodeType":"YulFunctionCall","src":"1553:12:92"},"nodeType":"YulExpressionStatement","src":"1553:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1526:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"1535:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1522:3:92"},"nodeType":"YulFunctionCall","src":"1522:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"1547:2:92","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1518:3:92"},"nodeType":"YulFunctionCall","src":"1518:32:92"},"nodeType":"YulIf","src":"1515:52:92"},{"nodeType":"YulAssignment","src":"1576:39:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1605:9:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"1586:18:92"},"nodeType":"YulFunctionCall","src":"1586:29:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1576:6:92"}]},{"nodeType":"YulAssignment","src":"1624:48:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1657:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1668:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1653:3:92"},"nodeType":"YulFunctionCall","src":"1653:18:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"1634:18:92"},"nodeType":"YulFunctionCall","src":"1634:38:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1624:6:92"}]},{"nodeType":"YulAssignment","src":"1681:42:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1708:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1719:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1704:3:92"},"nodeType":"YulFunctionCall","src":"1704:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1691:12:92"},"nodeType":"YulFunctionCall","src":"1691:32:92"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"1681:6:92"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1455:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1466:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1478:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1486:6:92","type":""},{"name":"value2","nodeType":"YulTypedName","src":"1494:6:92","type":""}],"src":"1401:328:92"},{"body":{"nodeType":"YulBlock","src":"1831:87:92","statements":[{"nodeType":"YulAssignment","src":"1841:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1853:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1864:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1849:3:92"},"nodeType":"YulFunctionCall","src":"1849:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1841:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1883:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1898:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"1906:4:92","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1894:3:92"},"nodeType":"YulFunctionCall","src":"1894:17:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1876:6:92"},"nodeType":"YulFunctionCall","src":"1876:36:92"},"nodeType":"YulExpressionStatement","src":"1876:36:92"}]},"name":"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1800:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1811:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1822:4:92","type":""}],"src":"1734:184:92"},{"body":{"nodeType":"YulBlock","src":"1993:116:92","statements":[{"body":{"nodeType":"YulBlock","src":"2039:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2048:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2051:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2041:6:92"},"nodeType":"YulFunctionCall","src":"2041:12:92"},"nodeType":"YulExpressionStatement","src":"2041:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2014:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"2023:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2010:3:92"},"nodeType":"YulFunctionCall","src":"2010:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"2035:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2006:3:92"},"nodeType":"YulFunctionCall","src":"2006:32:92"},"nodeType":"YulIf","src":"2003:52:92"},{"nodeType":"YulAssignment","src":"2064:39:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2093:9:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"2074:18:92"},"nodeType":"YulFunctionCall","src":"2074:29:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2064:6:92"}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1959:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1970:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1982:6:92","type":""}],"src":"1923:186:92"},{"body":{"nodeType":"YulBlock","src":"2201:173:92","statements":[{"body":{"nodeType":"YulBlock","src":"2247:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2256:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2259:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2249:6:92"},"nodeType":"YulFunctionCall","src":"2249:12:92"},"nodeType":"YulExpressionStatement","src":"2249:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2222:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"2231:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2218:3:92"},"nodeType":"YulFunctionCall","src":"2218:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"2243:2:92","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2214:3:92"},"nodeType":"YulFunctionCall","src":"2214:32:92"},"nodeType":"YulIf","src":"2211:52:92"},{"nodeType":"YulAssignment","src":"2272:39:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2301:9:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"2282:18:92"},"nodeType":"YulFunctionCall","src":"2282:29:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2272:6:92"}]},{"nodeType":"YulAssignment","src":"2320:48:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2353:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2364:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2349:3:92"},"nodeType":"YulFunctionCall","src":"2349:18:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"2330:18:92"},"nodeType":"YulFunctionCall","src":"2330:38:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"2320:6:92"}]}]},"name":"abi_decode_tuple_t_addresst_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2159:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2170:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2182:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2190:6:92","type":""}],"src":"2114:260:92"},{"body":{"nodeType":"YulBlock","src":"2434:325:92","statements":[{"nodeType":"YulAssignment","src":"2444:22:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2458:1:92","type":"","value":"1"},{"name":"data","nodeType":"YulIdentifier","src":"2461:4:92"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"2454:3:92"},"nodeType":"YulFunctionCall","src":"2454:12:92"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"2444:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"2475:38:92","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"2505:4:92"},{"kind":"number","nodeType":"YulLiteral","src":"2511:1:92","type":"","value":"1"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2501:3:92"},"nodeType":"YulFunctionCall","src":"2501:12:92"},"variables":[{"name":"outOfPlaceEncoding","nodeType":"YulTypedName","src":"2479:18:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"2552:31:92","statements":[{"nodeType":"YulAssignment","src":"2554:27:92","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"2568:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"2576:4:92","type":"","value":"0x7f"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2564:3:92"},"nodeType":"YulFunctionCall","src":"2564:17:92"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"2554:6:92"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"2532:18:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2525:6:92"},"nodeType":"YulFunctionCall","src":"2525:26:92"},"nodeType":"YulIf","src":"2522:61:92"},{"body":{"nodeType":"YulBlock","src":"2642:111:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2663:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2670:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"2675:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2666:3:92"},"nodeType":"YulFunctionCall","src":"2666:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2656:6:92"},"nodeType":"YulFunctionCall","src":"2656:31:92"},"nodeType":"YulExpressionStatement","src":"2656:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2707:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"2710:4:92","type":"","value":"0x22"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2700:6:92"},"nodeType":"YulFunctionCall","src":"2700:15:92"},"nodeType":"YulExpressionStatement","src":"2700:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2735:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2738:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2728:6:92"},"nodeType":"YulFunctionCall","src":"2728:15:92"},"nodeType":"YulExpressionStatement","src":"2728:15:92"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"2598:18:92"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"2621:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"2629:2:92","type":"","value":"32"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2618:2:92"},"nodeType":"YulFunctionCall","src":"2618:14:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"2595:2:92"},"nodeType":"YulFunctionCall","src":"2595:38:92"},"nodeType":"YulIf","src":"2592:161:92"}]},"name":"extract_byte_array_length","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"2414:4:92","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"2423:6:92","type":""}],"src":"2379:380:92"},{"body":{"nodeType":"YulBlock","src":"2812:174:92","statements":[{"nodeType":"YulAssignment","src":"2822:16:92","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"2833:1:92"},{"name":"y","nodeType":"YulIdentifier","src":"2836:1:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2829:3:92"},"nodeType":"YulFunctionCall","src":"2829:9:92"},"variableNames":[{"name":"sum","nodeType":"YulIdentifier","src":"2822:3:92"}]},{"body":{"nodeType":"YulBlock","src":"2869:111:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2890:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2897:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"2902:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2893:3:92"},"nodeType":"YulFunctionCall","src":"2893:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2883:6:92"},"nodeType":"YulFunctionCall","src":"2883:31:92"},"nodeType":"YulExpressionStatement","src":"2883:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2934:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"2937:4:92","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2927:6:92"},"nodeType":"YulFunctionCall","src":"2927:15:92"},"nodeType":"YulExpressionStatement","src":"2927:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2962:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2965:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2955:6:92"},"nodeType":"YulFunctionCall","src":"2955:15:92"},"nodeType":"YulExpressionStatement","src":"2955:15:92"}]},"condition":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"2853:1:92"},{"name":"sum","nodeType":"YulIdentifier","src":"2856:3:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2850:2:92"},"nodeType":"YulFunctionCall","src":"2850:10:92"},"nodeType":"YulIf","src":"2847:133:92"}]},"name":"checked_add_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"2795:1:92","type":""},{"name":"y","nodeType":"YulTypedName","src":"2798:1:92","type":""}],"returnVariables":[{"name":"sum","nodeType":"YulTypedName","src":"2804:3:92","type":""}],"src":"2764:222:92"},{"body":{"nodeType":"YulBlock","src":"3165:227:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3182:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3193:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3175:6:92"},"nodeType":"YulFunctionCall","src":"3175:21:92"},"nodeType":"YulExpressionStatement","src":"3175:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3216:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3227:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3212:3:92"},"nodeType":"YulFunctionCall","src":"3212:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"3232:2:92","type":"","value":"37"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3205:6:92"},"nodeType":"YulFunctionCall","src":"3205:30:92"},"nodeType":"YulExpressionStatement","src":"3205:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3255:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3266:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3251:3:92"},"nodeType":"YulFunctionCall","src":"3251:18:92"},{"hexValue":"45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77","kind":"string","nodeType":"YulLiteral","src":"3271:34:92","type":"","value":"ERC20: decreased allowance below"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3244:6:92"},"nodeType":"YulFunctionCall","src":"3244:62:92"},"nodeType":"YulExpressionStatement","src":"3244:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3326:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3337:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3322:3:92"},"nodeType":"YulFunctionCall","src":"3322:18:92"},{"hexValue":"207a65726f","kind":"string","nodeType":"YulLiteral","src":"3342:7:92","type":"","value":" zero"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3315:6:92"},"nodeType":"YulFunctionCall","src":"3315:35:92"},"nodeType":"YulExpressionStatement","src":"3315:35:92"},{"nodeType":"YulAssignment","src":"3359:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3371:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3382:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3367:3:92"},"nodeType":"YulFunctionCall","src":"3367:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3359:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3142:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3156:4:92","type":""}],"src":"2991:401:92"},{"body":{"nodeType":"YulBlock","src":"3571:226:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3588:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3599:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3581:6:92"},"nodeType":"YulFunctionCall","src":"3581:21:92"},"nodeType":"YulExpressionStatement","src":"3581:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3622:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3633:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3618:3:92"},"nodeType":"YulFunctionCall","src":"3618:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"3638:2:92","type":"","value":"36"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3611:6:92"},"nodeType":"YulFunctionCall","src":"3611:30:92"},"nodeType":"YulExpressionStatement","src":"3611:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3661:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3672:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3657:3:92"},"nodeType":"YulFunctionCall","src":"3657:18:92"},{"hexValue":"45524332303a20617070726f76652066726f6d20746865207a65726f20616464","kind":"string","nodeType":"YulLiteral","src":"3677:34:92","type":"","value":"ERC20: approve from the zero add"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3650:6:92"},"nodeType":"YulFunctionCall","src":"3650:62:92"},"nodeType":"YulExpressionStatement","src":"3650:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3732:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3743:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3728:3:92"},"nodeType":"YulFunctionCall","src":"3728:18:92"},{"hexValue":"72657373","kind":"string","nodeType":"YulLiteral","src":"3748:6:92","type":"","value":"ress"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3721:6:92"},"nodeType":"YulFunctionCall","src":"3721:34:92"},"nodeType":"YulExpressionStatement","src":"3721:34:92"},{"nodeType":"YulAssignment","src":"3764:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3776:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3787:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3772:3:92"},"nodeType":"YulFunctionCall","src":"3772:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3764:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3548:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3562:4:92","type":""}],"src":"3397:400:92"},{"body":{"nodeType":"YulBlock","src":"3976:224:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3993:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4004:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3986:6:92"},"nodeType":"YulFunctionCall","src":"3986:21:92"},"nodeType":"YulExpressionStatement","src":"3986:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4027:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4038:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4023:3:92"},"nodeType":"YulFunctionCall","src":"4023:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"4043:2:92","type":"","value":"34"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4016:6:92"},"nodeType":"YulFunctionCall","src":"4016:30:92"},"nodeType":"YulExpressionStatement","src":"4016:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4066:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4077:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4062:3:92"},"nodeType":"YulFunctionCall","src":"4062:18:92"},{"hexValue":"45524332303a20617070726f766520746f20746865207a65726f206164647265","kind":"string","nodeType":"YulLiteral","src":"4082:34:92","type":"","value":"ERC20: approve to the zero addre"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4055:6:92"},"nodeType":"YulFunctionCall","src":"4055:62:92"},"nodeType":"YulExpressionStatement","src":"4055:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4137:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4148:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4133:3:92"},"nodeType":"YulFunctionCall","src":"4133:18:92"},{"hexValue":"7373","kind":"string","nodeType":"YulLiteral","src":"4153:4:92","type":"","value":"ss"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4126:6:92"},"nodeType":"YulFunctionCall","src":"4126:32:92"},"nodeType":"YulExpressionStatement","src":"4126:32:92"},{"nodeType":"YulAssignment","src":"4167:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4179:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4190:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4175:3:92"},"nodeType":"YulFunctionCall","src":"4175:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4167:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3953:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3967:4:92","type":""}],"src":"3802:398:92"},{"body":{"nodeType":"YulBlock","src":"4379:179:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4396:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4407:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4389:6:92"},"nodeType":"YulFunctionCall","src":"4389:21:92"},"nodeType":"YulExpressionStatement","src":"4389:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4430:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4441:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4426:3:92"},"nodeType":"YulFunctionCall","src":"4426:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"4446:2:92","type":"","value":"29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4419:6:92"},"nodeType":"YulFunctionCall","src":"4419:30:92"},"nodeType":"YulExpressionStatement","src":"4419:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4469:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4480:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4465:3:92"},"nodeType":"YulFunctionCall","src":"4465:18:92"},{"hexValue":"45524332303a20696e73756666696369656e7420616c6c6f77616e6365","kind":"string","nodeType":"YulLiteral","src":"4485:31:92","type":"","value":"ERC20: insufficient allowance"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4458:6:92"},"nodeType":"YulFunctionCall","src":"4458:59:92"},"nodeType":"YulExpressionStatement","src":"4458:59:92"},{"nodeType":"YulAssignment","src":"4526:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4538:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4549:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4534:3:92"},"nodeType":"YulFunctionCall","src":"4534:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4526:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_3b6607e091cba9325f958656d2b5e0622ab7dc0eac71a26ac788cb25bc19f4fe__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4356:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4370:4:92","type":""}],"src":"4205:353:92"},{"body":{"nodeType":"YulBlock","src":"4737:227:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4754:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4765:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4747:6:92"},"nodeType":"YulFunctionCall","src":"4747:21:92"},"nodeType":"YulExpressionStatement","src":"4747:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4788:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4799:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4784:3:92"},"nodeType":"YulFunctionCall","src":"4784:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"4804:2:92","type":"","value":"37"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4777:6:92"},"nodeType":"YulFunctionCall","src":"4777:30:92"},"nodeType":"YulExpressionStatement","src":"4777:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4827:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4838:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4823:3:92"},"nodeType":"YulFunctionCall","src":"4823:18:92"},{"hexValue":"45524332303a207472616e736665722066726f6d20746865207a65726f206164","kind":"string","nodeType":"YulLiteral","src":"4843:34:92","type":"","value":"ERC20: transfer from the zero ad"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4816:6:92"},"nodeType":"YulFunctionCall","src":"4816:62:92"},"nodeType":"YulExpressionStatement","src":"4816:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4898:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4909:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4894:3:92"},"nodeType":"YulFunctionCall","src":"4894:18:92"},{"hexValue":"6472657373","kind":"string","nodeType":"YulLiteral","src":"4914:7:92","type":"","value":"dress"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4887:6:92"},"nodeType":"YulFunctionCall","src":"4887:35:92"},"nodeType":"YulExpressionStatement","src":"4887:35:92"},{"nodeType":"YulAssignment","src":"4931:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4943:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4954:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4939:3:92"},"nodeType":"YulFunctionCall","src":"4939:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4931:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4714:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4728:4:92","type":""}],"src":"4563:401:92"},{"body":{"nodeType":"YulBlock","src":"5143:225:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5160:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5171:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5153:6:92"},"nodeType":"YulFunctionCall","src":"5153:21:92"},"nodeType":"YulExpressionStatement","src":"5153:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5194:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5205:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5190:3:92"},"nodeType":"YulFunctionCall","src":"5190:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"5210:2:92","type":"","value":"35"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5183:6:92"},"nodeType":"YulFunctionCall","src":"5183:30:92"},"nodeType":"YulExpressionStatement","src":"5183:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5233:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5244:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5229:3:92"},"nodeType":"YulFunctionCall","src":"5229:18:92"},{"hexValue":"45524332303a207472616e7366657220746f20746865207a65726f2061646472","kind":"string","nodeType":"YulLiteral","src":"5249:34:92","type":"","value":"ERC20: transfer to the zero addr"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5222:6:92"},"nodeType":"YulFunctionCall","src":"5222:62:92"},"nodeType":"YulExpressionStatement","src":"5222:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5304:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5315:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5300:3:92"},"nodeType":"YulFunctionCall","src":"5300:18:92"},{"hexValue":"657373","kind":"string","nodeType":"YulLiteral","src":"5320:5:92","type":"","value":"ess"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5293:6:92"},"nodeType":"YulFunctionCall","src":"5293:33:92"},"nodeType":"YulExpressionStatement","src":"5293:33:92"},{"nodeType":"YulAssignment","src":"5335:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5347:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5358:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5343:3:92"},"nodeType":"YulFunctionCall","src":"5343:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5335:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5120:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5134:4:92","type":""}],"src":"4969:399:92"},{"body":{"nodeType":"YulBlock","src":"5547:228:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5564:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5575:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5557:6:92"},"nodeType":"YulFunctionCall","src":"5557:21:92"},"nodeType":"YulExpressionStatement","src":"5557:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5598:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5609:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5594:3:92"},"nodeType":"YulFunctionCall","src":"5594:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"5614:2:92","type":"","value":"38"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5587:6:92"},"nodeType":"YulFunctionCall","src":"5587:30:92"},"nodeType":"YulExpressionStatement","src":"5587:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5637:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5648:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5633:3:92"},"nodeType":"YulFunctionCall","src":"5633:18:92"},{"hexValue":"45524332303a207472616e7366657220616d6f756e7420657863656564732062","kind":"string","nodeType":"YulLiteral","src":"5653:34:92","type":"","value":"ERC20: transfer amount exceeds b"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5626:6:92"},"nodeType":"YulFunctionCall","src":"5626:62:92"},"nodeType":"YulExpressionStatement","src":"5626:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5708:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5719:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5704:3:92"},"nodeType":"YulFunctionCall","src":"5704:18:92"},{"hexValue":"616c616e6365","kind":"string","nodeType":"YulLiteral","src":"5724:8:92","type":"","value":"alance"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5697:6:92"},"nodeType":"YulFunctionCall","src":"5697:36:92"},"nodeType":"YulExpressionStatement","src":"5697:36:92"},{"nodeType":"YulAssignment","src":"5742:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5754:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5765:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5750:3:92"},"nodeType":"YulFunctionCall","src":"5750:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5742:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5524:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5538:4:92","type":""}],"src":"5373:402:92"}]},"contents":"{\n { }\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n let _1 := 32\n mstore(headStart, _1)\n let length := mload(value0)\n mstore(add(headStart, _1), length)\n let i := 0\n for { } lt(i, length) { i := add(i, _1) }\n {\n mstore(add(add(headStart, i), 64), mload(add(add(value0, i), _1)))\n }\n mstore(add(add(headStart, length), 64), 0)\n tail := add(add(headStart, and(add(length, 31), not(31))), 64)\n }\n function abi_decode_address(offset) -> value\n {\n value := calldataload(offset)\n if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := calldataload(add(headStart, 32))\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := abi_decode_address(add(headStart, 32))\n value2 := calldataload(add(headStart, 64))\n }\n function abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xff))\n }\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n }\n function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := abi_decode_address(add(headStart, 32))\n }\n function extract_byte_array_length(data) -> length\n {\n length := shr(1, data)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n if eq(outOfPlaceEncoding, lt(length, 32))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n }\n function checked_add_t_uint256(x, y) -> sum\n {\n sum := add(x, y)\n if gt(x, sum)\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n }\n function abi_encode_tuple_t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 37)\n mstore(add(headStart, 64), \"ERC20: decreased allowance below\")\n mstore(add(headStart, 96), \" zero\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 36)\n mstore(add(headStart, 64), \"ERC20: approve from the zero add\")\n mstore(add(headStart, 96), \"ress\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 34)\n mstore(add(headStart, 64), \"ERC20: approve to the zero addre\")\n mstore(add(headStart, 96), \"ss\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_3b6607e091cba9325f958656d2b5e0622ab7dc0eac71a26ac788cb25bc19f4fe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 29)\n mstore(add(headStart, 64), \"ERC20: insufficient allowance\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 37)\n mstore(add(headStart, 64), \"ERC20: transfer from the zero ad\")\n mstore(add(headStart, 96), \"dress\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 35)\n mstore(add(headStart, 64), \"ERC20: transfer to the zero addr\")\n mstore(add(headStart, 96), \"ess\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 38)\n mstore(add(headStart, 64), \"ERC20: transfer amount exceeds b\")\n mstore(add(headStart, 96), \"alance\")\n tail := add(headStart, 128)\n }\n}","id":92,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100c95760003560e01c80633950935111610081578063a457c2d71161005b578063a457c2d714610187578063a9059cbb1461019a578063dd62ed3e146101ad57600080fd5b8063395093511461014357806370a082311461015657806395d89b411461017f57600080fd5b806318160ddd116100b257806318160ddd1461010f57806323b872dd14610121578063313ce5671461013457600080fd5b806306fdde03146100ce578063095ea7b3146100ec575b600080fd5b6100d66101e6565b6040516100e3919061074a565b60405180910390f35b6100ff6100fa3660046107b4565b610278565b60405190151581526020016100e3565b6002545b6040519081526020016100e3565b6100ff61012f3660046107de565b610292565b604051601281526020016100e3565b6100ff6101513660046107b4565b6102b6565b61011361016436600461081a565b6001600160a01b031660009081526020819052604090205490565b6100d66102f5565b6100ff6101953660046107b4565b610304565b6100ff6101a83660046107b4565b6103b3565b6101136101bb36600461083c565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f59061086f565b80601f01602080910402602001604051908101604052809291908181526020018280546102219061086f565b801561026e5780601f106102435761010080835404028352916020019161026e565b820191906000526020600020905b81548152906001019060200180831161025157829003601f168201915b5050505050905090565b6000336102868185856103c1565b60019150505b92915050565b6000336102a08582856104e5565b6102ab858585610577565b506001949350505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490919061028690829086906102f09087906108a9565b6103c1565b6060600480546101f59061086f565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909190838110156103a65760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6102ab82868684036103c1565b600033610286818585610577565b6001600160a01b0383166104235760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161039d565b6001600160a01b0382166104845760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161039d565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03838116600090815260016020908152604080832093861683529290522054600019811461057157818110156105645760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161039d565b61057184848484036103c1565b50505050565b6001600160a01b0383166105f35760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f6472657373000000000000000000000000000000000000000000000000000000606482015260840161039d565b6001600160a01b0382166106555760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161039d565b6001600160a01b038316600090815260208190526040902054818110156106e45760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e63650000000000000000000000000000000000000000000000000000606482015260840161039d565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610571565b600060208083528351808285015260005b818110156107775785810183015185820160400152820161075b565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146107af57600080fd5b919050565b600080604083850312156107c757600080fd5b6107d083610798565b946020939093013593505050565b6000806000606084860312156107f357600080fd5b6107fc84610798565b925061080a60208501610798565b9150604084013590509250925092565b60006020828403121561082c57600080fd5b61083582610798565b9392505050565b6000806040838503121561084f57600080fd5b61085883610798565b915061086660208401610798565b90509250929050565b600181811c9082168061088357607f821691505b6020821081036108a357634e487b7160e01b600052602260045260246000fd5b50919050565b8082018082111561028c57634e487b7160e01b600052601160045260246000fdfea164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xC9 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x39509351 GT PUSH2 0x81 JUMPI DUP1 PUSH4 0xA457C2D7 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x187 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x19A JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x1AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x39509351 EQ PUSH2 0x143 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x156 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x17F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x18160DDD GT PUSH2 0xB2 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x10F JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x121 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x134 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xCE JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0xEC JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD6 PUSH2 0x1E6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xE3 SWAP2 SWAP1 PUSH2 0x74A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xFF PUSH2 0xFA CALLDATASIZE PUSH1 0x4 PUSH2 0x7B4 JUMP JUMPDEST PUSH2 0x278 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xE3 JUMP JUMPDEST PUSH1 0x2 SLOAD JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xE3 JUMP JUMPDEST PUSH2 0xFF PUSH2 0x12F CALLDATASIZE PUSH1 0x4 PUSH2 0x7DE JUMP JUMPDEST PUSH2 0x292 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x12 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xE3 JUMP JUMPDEST PUSH2 0xFF PUSH2 0x151 CALLDATASIZE PUSH1 0x4 PUSH2 0x7B4 JUMP JUMPDEST PUSH2 0x2B6 JUMP JUMPDEST PUSH2 0x113 PUSH2 0x164 CALLDATASIZE PUSH1 0x4 PUSH2 0x81A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0xD6 PUSH2 0x2F5 JUMP JUMPDEST PUSH2 0xFF PUSH2 0x195 CALLDATASIZE PUSH1 0x4 PUSH2 0x7B4 JUMP JUMPDEST PUSH2 0x304 JUMP JUMPDEST PUSH2 0xFF PUSH2 0x1A8 CALLDATASIZE PUSH1 0x4 PUSH2 0x7B4 JUMP JUMPDEST PUSH2 0x3B3 JUMP JUMPDEST PUSH2 0x113 PUSH2 0x1BB CALLDATASIZE PUSH1 0x4 PUSH2 0x83C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x3 DUP1 SLOAD PUSH2 0x1F5 SWAP1 PUSH2 0x86F JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x221 SWAP1 PUSH2 0x86F JUMP JUMPDEST DUP1 ISZERO PUSH2 0x26E JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x243 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x26E JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x251 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0x286 DUP2 DUP6 DUP6 PUSH2 0x3C1 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0x2A0 DUP6 DUP3 DUP6 PUSH2 0x4E5 JUMP JUMPDEST PUSH2 0x2AB DUP6 DUP6 DUP6 PUSH2 0x577 JUMP JUMPDEST POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 SWAP1 PUSH2 0x286 SWAP1 DUP3 SWAP1 DUP7 SWAP1 PUSH2 0x2F0 SWAP1 DUP8 SWAP1 PUSH2 0x8A9 JUMP JUMPDEST PUSH2 0x3C1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x4 DUP1 SLOAD PUSH2 0x1F5 SWAP1 PUSH2 0x86F JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 SWAP1 DUP4 DUP2 LT ISZERO PUSH2 0x3A6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A2064656372656173656420616C6C6F77616E63652062656C6F77 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x207A65726F000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2AB DUP3 DUP7 DUP7 DUP5 SUB PUSH2 0x3C1 JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0x286 DUP2 DUP6 DUP6 PUSH2 0x577 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x423 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x45524332303A20617070726F76652066726F6D20746865207A65726F20616464 PUSH1 0x44 DUP3 ADD MSTORE PUSH4 0x72657373 PUSH1 0xE0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x39D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x484 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20617070726F766520746F20746865207A65726F206164647265 PUSH1 0x44 DUP3 ADD MSTORE PUSH2 0x7373 PUSH1 0xF0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x39D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE SWAP1 MLOAD DUP5 DUP2 MSTORE PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP7 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0x0 NOT DUP2 EQ PUSH2 0x571 JUMPI DUP2 DUP2 LT ISZERO PUSH2 0x564 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E73756666696369656E7420616C6C6F77616E6365000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x39D JUMP JUMPDEST PUSH2 0x571 DUP5 DUP5 DUP5 DUP5 SUB PUSH2 0x3C1 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x5F3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E736665722066726F6D20746865207A65726F206164 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6472657373000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x39D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x655 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x23 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E7366657220746F20746865207A65726F2061646472 PUSH1 0x44 DUP3 ADD MSTORE PUSH3 0x657373 PUSH1 0xE8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x39D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 DUP2 LT ISZERO PUSH2 0x6E4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E7366657220616D6F756E7420657863656564732062 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x616C616E63650000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x39D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP8 SUB SWAP1 SSTORE SWAP4 DUP8 AND DUP1 DUP4 MSTORE SWAP2 DUP5 SWAP1 KECCAK256 DUP1 SLOAD DUP8 ADD SWAP1 SSTORE SWAP3 MLOAD DUP6 DUP2 MSTORE SWAP1 SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH2 0x571 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x777 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0x75B JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x40 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x40 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP3 POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x7AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x7C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7D0 DUP4 PUSH2 0x798 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x7F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7FC DUP5 PUSH2 0x798 JUMP JUMPDEST SWAP3 POP PUSH2 0x80A PUSH1 0x20 DUP6 ADD PUSH2 0x798 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x82C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x835 DUP3 PUSH2 0x798 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x84F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x858 DUP4 PUSH2 0x798 JUMP JUMPDEST SWAP2 POP PUSH2 0x866 PUSH1 0x20 DUP5 ADD PUSH2 0x798 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x883 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x8A3 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x28C JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"1532:11312:26:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2158:98;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4444:197;;;;;;:::i;:::-;;:::i;:::-;;;1192:14:92;;1185:22;1167:41;;1155:2;1140:18;4444:197:26;1027:187:92;3255:106:26;3342:12;;3255:106;;;1365:25:92;;;1353:2;1338:18;3255:106:26;1219:177:92;5203:256:26;;;;;;:::i;:::-;;:::i;3104:91::-;;;3186:2;1876:36:92;;1864:2;1849:18;3104:91:26;1734:184:92;5854:234:26;;;;;;:::i;:::-;;:::i;3419:125::-;;;;;;:::i;:::-;-1:-1:-1;;;;;3519:18:26;3493:7;3519:18;;;;;;;;;;;;3419:125;2369:102;;;:::i;6575:427::-;;;;;;:::i;:::-;;:::i;3740:189::-;;;;;;:::i;:::-;;:::i;3987:149::-;;;;;;:::i;:::-;-1:-1:-1;;;;;4102:18:26;;;4076:7;4102:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3987:149;2158:98;2212:13;2244:5;2237:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2158:98;:::o;4444:197::-;4527:4;734:10:34;4581:32:26;734:10:34;4597:7:26;4606:6;4581:8;:32::i;:::-;4630:4;4623:11;;;4444:197;;;;;:::o;5203:256::-;5300:4;734:10:34;5356:38:26;5372:4;734:10:34;5387:6:26;5356:15;:38::i;:::-;5404:27;5414:4;5420:2;5424:6;5404:9;:27::i;:::-;-1:-1:-1;5448:4:26;;5203:256;-1:-1:-1;;;;5203:256:26:o;5854:234::-;734:10:34;5942:4:26;4102:18;;;:11;:18;;;;;;;;-1:-1:-1;;;;;4102:27:26;;;;;;;;;;5942:4;;734:10:34;5996:64:26;;734:10:34;;4102:27:26;;6021:38;;6049:10;;6021:38;:::i;:::-;5996:8;:64::i;2369:102::-;2425:13;2457:7;2450:14;;;;;:::i;6575:427::-;734:10:34;6668:4:26;4102:18;;;:11;:18;;;;;;;;-1:-1:-1;;;;;4102:27:26;;;;;;;;;;6668:4;;734:10:34;6812:15:26;6792:16;:35;;6784:85;;;;-1:-1:-1;;;6784:85:26;;3193:2:92;6784:85:26;;;3175:21:92;3232:2;3212:18;;;3205:30;3271:34;3251:18;;;3244:62;3342:7;3322:18;;;3315:35;3367:19;;6784:85:26;;;;;;;;;6903:60;6912:5;6919:7;6947:15;6928:16;:34;6903:8;:60::i;3740:189::-;3819:4;734:10:34;3873:28:26;734:10:34;3890:2:26;3894:6;3873:9;:28::i;10457:340::-;-1:-1:-1;;;;;10558:19:26;;10550:68;;;;-1:-1:-1;;;10550:68:26;;3599:2:92;10550:68:26;;;3581:21:92;3638:2;3618:18;;;3611:30;3677:34;3657:18;;;3650:62;-1:-1:-1;;;3728:18:92;;;3721:34;3772:19;;10550:68:26;3397:400:92;10550:68:26;-1:-1:-1;;;;;10636:21:26;;10628:68;;;;-1:-1:-1;;;10628:68:26;;4004:2:92;10628:68:26;;;3986:21:92;4043:2;4023:18;;;4016:30;4082:34;4062:18;;;4055:62;-1:-1:-1;;;4133:18:92;;;4126:32;4175:19;;10628:68:26;3802:398:92;10628:68:26;-1:-1:-1;;;;;10707:18:26;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;10758:32;;1365:25:92;;;10758:32:26;;1338:18:92;10758:32:26;;;;;;;10457:340;;;:::o;11078:411::-;-1:-1:-1;;;;;4102:18:26;;;11178:24;4102:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;-1:-1:-1;;11244:37:26;;11240:243;;11325:6;11305:16;:26;;11297:68;;;;-1:-1:-1;;;11297:68:26;;4407:2:92;11297:68:26;;;4389:21:92;4446:2;4426:18;;;4419:30;4485:31;4465:18;;;4458:59;4534:18;;11297:68:26;4205:353:92;11297:68:26;11407:51;11416:5;11423:7;11451:6;11432:16;:25;11407:8;:51::i;:::-;11168:321;11078:411;;;:::o;7456:788::-;-1:-1:-1;;;;;7552:18:26;;7544:68;;;;-1:-1:-1;;;7544:68:26;;4765:2:92;7544:68:26;;;4747:21:92;4804:2;4784:18;;;4777:30;4843:34;4823:18;;;4816:62;4914:7;4894:18;;;4887:35;4939:19;;7544:68:26;4563:401:92;7544:68:26;-1:-1:-1;;;;;7630:16:26;;7622:64;;;;-1:-1:-1;;;7622:64:26;;5171:2:92;7622:64:26;;;5153:21:92;5210:2;5190:18;;;5183:30;5249:34;5229:18;;;5222:62;-1:-1:-1;;;5300:18:92;;;5293:33;5343:19;;7622:64:26;4969:399:92;7622:64:26;-1:-1:-1;;;;;7768:15:26;;7746:19;7768:15;;;;;;;;;;;7801:21;;;;7793:72;;;;-1:-1:-1;;;7793:72:26;;5575:2:92;7793:72:26;;;5557:21:92;5614:2;5594:18;;;5587:30;5653:34;5633:18;;;5626:62;5724:8;5704:18;;;5697:36;5750:19;;7793:72:26;5373:402:92;7793:72:26;-1:-1:-1;;;;;7899:15:26;;;:9;:15;;;;;;;;;;;7917:20;;;7899:38;;8114:13;;;;;;;;;;:23;;;;;;8163:26;;1365:25:92;;;8114:13:26;;8163:26;;1338:18:92;8163:26:26;;;;;;;8200:37;12073:91;14:548:92;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:196::-;635:20;;-1:-1:-1;;;;;684:54:92;;674:65;;664:93;;753:1;750;743:12;664:93;567:196;;;:::o;768:254::-;836:6;844;897:2;885:9;876:7;872:23;868:32;865:52;;;913:1;910;903:12;865:52;936:29;955:9;936:29;:::i;:::-;926:39;1012:2;997:18;;;;984:32;;-1:-1:-1;;;768:254:92:o;1401:328::-;1478:6;1486;1494;1547:2;1535:9;1526:7;1522:23;1518:32;1515:52;;;1563:1;1560;1553:12;1515:52;1586:29;1605:9;1586:29;:::i;:::-;1576:39;;1634:38;1668:2;1657:9;1653:18;1634:38;:::i;:::-;1624:48;;1719:2;1708:9;1704:18;1691:32;1681:42;;1401:328;;;;;:::o;1923:186::-;1982:6;2035:2;2023:9;2014:7;2010:23;2006:32;2003:52;;;2051:1;2048;2041:12;2003:52;2074:29;2093:9;2074:29;:::i;:::-;2064:39;1923:186;-1:-1:-1;;;1923:186:92:o;2114:260::-;2182:6;2190;2243:2;2231:9;2222:7;2218:23;2214:32;2211:52;;;2259:1;2256;2249:12;2211:52;2282:29;2301:9;2282:29;:::i;:::-;2272:39;;2330:38;2364:2;2353:9;2349:18;2330:38;:::i;:::-;2320:48;;2114:260;;;;;:::o;2379:380::-;2458:1;2454:12;;;;2501;;;2522:61;;2576:4;2568:6;2564:17;2554:27;;2522:61;2629:2;2621:6;2618:14;2598:18;2595:38;2592:161;;2675:10;2670:3;2666:20;2663:1;2656:31;2710:4;2707:1;2700:15;2738:4;2735:1;2728:15;2592:161;;2379:380;;;:::o;2764:222::-;2829:9;;;2850:10;;;2847:133;;;2902:10;2897:3;2893:20;2890:1;2883:31;2937:4;2934:1;2927:15;2965:4;2962:1;2955:15"},"gasEstimates":{"creation":{"codeDepositCost":"452600","executionCost":"infinite","totalCost":"infinite"},"external":{"allowance(address,address)":"infinite","approve(address,uint256)":"24651","balanceOf(address)":"2585","decimals()":"244","decreaseAllowance(address,uint256)":"26922","increaseAllowance(address,uint256)":"infinite","name()":"infinite","symbol()":"infinite","totalSupply()":"2304","transfer(address,uint256)":"51094","transferFrom(address,address,uint256)":"infinite"},"internal":{"_afterTokenTransfer(address,address,uint256)":"infinite","_approve(address,address,uint256)":"infinite","_beforeTokenTransfer(address,address,uint256)":"infinite","_burn(address,uint256)":"infinite","_mint(address,uint256)":"infinite","_spendAllowance(address,address,uint256)":"infinite","_transfer(address,address,uint256)":"infinite"}},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","decreaseAllowance(address,uint256)":"a457c2d7","increaseAllowance(address,uint256)":"39509351","name()":"06fdde03","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of the {IERC20} interface. This implementation is agnostic to the way tokens are created. This means that a supply mechanism has to be added in a derived contract using {_mint}. For a generic mechanism see {ERC20PresetMinterPauser}. TIP: For a detailed writeup see our guide https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How to implement supply mechanisms]. The default value of {decimals} is 18. To change this, you should override this function so it returns a different value. We have followed general OpenZeppelin Contracts guidelines: functions revert instead returning `false` on failure. This behavior is nonetheless conventional and does not conflict with the expectations of ERC20 applications. Additionally, an {Approval} event is emitted on calls to {transferFrom}. This allows applications to reconstruct the allowance for all accounts just by listening to said events. Other implementations of the EIP may not emit these events, as it isn't required by the specification. Finally, the non-standard {decreaseAllowance} and {increaseAllowance} functions have been added to mitigate the well-known issues around setting allowances. See {IERC20-approve}.\",\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"constructor\":{\"details\":\"Sets the values for {name} and {symbol}. All two of these values are immutable: they can only be set once during construction.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `amount`. - the caller must have allowance for ``from``'s tokens of at least `amount`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":\"ERC20\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/ERC20.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC20.sol\\\";\\nimport \\\"./extensions/IERC20Metadata.sol\\\";\\nimport \\\"../../utils/Context.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC20} interface.\\n *\\n * This implementation is agnostic to the way tokens are created. This means\\n * that a supply mechanism has to be added in a derived contract using {_mint}.\\n * For a generic mechanism see {ERC20PresetMinterPauser}.\\n *\\n * TIP: For a detailed writeup see our guide\\n * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How\\n * to implement supply mechanisms].\\n *\\n * The default value of {decimals} is 18. To change this, you should override\\n * this function so it returns a different value.\\n *\\n * We have followed general OpenZeppelin Contracts guidelines: functions revert\\n * instead returning `false` on failure. This behavior is nonetheless\\n * conventional and does not conflict with the expectations of ERC20\\n * applications.\\n *\\n * Additionally, an {Approval} event is emitted on calls to {transferFrom}.\\n * This allows applications to reconstruct the allowance for all accounts just\\n * by listening to said events. Other implementations of the EIP may not emit\\n * these events, as it isn't required by the specification.\\n *\\n * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}\\n * functions have been added to mitigate the well-known issues around setting\\n * allowances. See {IERC20-approve}.\\n */\\ncontract ERC20 is Context, IERC20, IERC20Metadata {\\n mapping(address => uint256) private _balances;\\n\\n mapping(address => mapping(address => uint256)) private _allowances;\\n\\n uint256 private _totalSupply;\\n\\n string private _name;\\n string private _symbol;\\n\\n /**\\n * @dev Sets the values for {name} and {symbol}.\\n *\\n * All two of these values are immutable: they can only be set once during\\n * construction.\\n */\\n constructor(string memory name_, string memory symbol_) {\\n _name = name_;\\n _symbol = symbol_;\\n }\\n\\n /**\\n * @dev Returns the name of the token.\\n */\\n function name() public view virtual override returns (string memory) {\\n return _name;\\n }\\n\\n /**\\n * @dev Returns the symbol of the token, usually a shorter version of the\\n * name.\\n */\\n function symbol() public view virtual override returns (string memory) {\\n return _symbol;\\n }\\n\\n /**\\n * @dev Returns the number of decimals used to get its user representation.\\n * For example, if `decimals` equals `2`, a balance of `505` tokens should\\n * be displayed to a user as `5.05` (`505 / 10 ** 2`).\\n *\\n * Tokens usually opt for a value of 18, imitating the relationship between\\n * Ether and Wei. This is the default value returned by this function, unless\\n * it's overridden.\\n *\\n * NOTE: This information is only used for _display_ purposes: it in\\n * no way affects any of the arithmetic of the contract, including\\n * {IERC20-balanceOf} and {IERC20-transfer}.\\n */\\n function decimals() public view virtual override returns (uint8) {\\n return 18;\\n }\\n\\n /**\\n * @dev See {IERC20-totalSupply}.\\n */\\n function totalSupply() public view virtual override returns (uint256) {\\n return _totalSupply;\\n }\\n\\n /**\\n * @dev See {IERC20-balanceOf}.\\n */\\n function balanceOf(address account) public view virtual override returns (uint256) {\\n return _balances[account];\\n }\\n\\n /**\\n * @dev See {IERC20-transfer}.\\n *\\n * Requirements:\\n *\\n * - `to` cannot be the zero address.\\n * - the caller must have a balance of at least `amount`.\\n */\\n function transfer(address to, uint256 amount) public virtual override returns (bool) {\\n address owner = _msgSender();\\n _transfer(owner, to, amount);\\n return true;\\n }\\n\\n /**\\n * @dev See {IERC20-allowance}.\\n */\\n function allowance(address owner, address spender) public view virtual override returns (uint256) {\\n return _allowances[owner][spender];\\n }\\n\\n /**\\n * @dev See {IERC20-approve}.\\n *\\n * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on\\n * `transferFrom`. This is semantically equivalent to an infinite approval.\\n *\\n * Requirements:\\n *\\n * - `spender` cannot be the zero address.\\n */\\n function approve(address spender, uint256 amount) public virtual override returns (bool) {\\n address owner = _msgSender();\\n _approve(owner, spender, amount);\\n return true;\\n }\\n\\n /**\\n * @dev See {IERC20-transferFrom}.\\n *\\n * Emits an {Approval} event indicating the updated allowance. This is not\\n * required by the EIP. See the note at the beginning of {ERC20}.\\n *\\n * NOTE: Does not update the allowance if the current allowance\\n * is the maximum `uint256`.\\n *\\n * Requirements:\\n *\\n * - `from` and `to` cannot be the zero address.\\n * - `from` must have a balance of at least `amount`.\\n * - the caller must have allowance for ``from``'s tokens of at least\\n * `amount`.\\n */\\n function transferFrom(address from, address to, uint256 amount) public virtual override returns (bool) {\\n address spender = _msgSender();\\n _spendAllowance(from, spender, amount);\\n _transfer(from, to, amount);\\n return true;\\n }\\n\\n /**\\n * @dev Atomically increases the allowance granted to `spender` by the caller.\\n *\\n * This is an alternative to {approve} that can be used as a mitigation for\\n * problems described in {IERC20-approve}.\\n *\\n * Emits an {Approval} event indicating the updated allowance.\\n *\\n * Requirements:\\n *\\n * - `spender` cannot be the zero address.\\n */\\n function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {\\n address owner = _msgSender();\\n _approve(owner, spender, allowance(owner, spender) + addedValue);\\n return true;\\n }\\n\\n /**\\n * @dev Atomically decreases the allowance granted to `spender` by the caller.\\n *\\n * This is an alternative to {approve} that can be used as a mitigation for\\n * problems described in {IERC20-approve}.\\n *\\n * Emits an {Approval} event indicating the updated allowance.\\n *\\n * Requirements:\\n *\\n * - `spender` cannot be the zero address.\\n * - `spender` must have allowance for the caller of at least\\n * `subtractedValue`.\\n */\\n function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {\\n address owner = _msgSender();\\n uint256 currentAllowance = allowance(owner, spender);\\n require(currentAllowance >= subtractedValue, \\\"ERC20: decreased allowance below zero\\\");\\n unchecked {\\n _approve(owner, spender, currentAllowance - subtractedValue);\\n }\\n\\n return true;\\n }\\n\\n /**\\n * @dev Moves `amount` of tokens from `from` to `to`.\\n *\\n * This internal function is equivalent to {transfer}, and can be used to\\n * e.g. implement automatic token fees, slashing mechanisms, etc.\\n *\\n * Emits a {Transfer} event.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `to` cannot be the zero address.\\n * - `from` must have a balance of at least `amount`.\\n */\\n function _transfer(address from, address to, uint256 amount) internal virtual {\\n require(from != address(0), \\\"ERC20: transfer from the zero address\\\");\\n require(to != address(0), \\\"ERC20: transfer to the zero address\\\");\\n\\n _beforeTokenTransfer(from, to, amount);\\n\\n uint256 fromBalance = _balances[from];\\n require(fromBalance >= amount, \\\"ERC20: transfer amount exceeds balance\\\");\\n unchecked {\\n _balances[from] = fromBalance - amount;\\n // Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by\\n // decrementing then incrementing.\\n _balances[to] += amount;\\n }\\n\\n emit Transfer(from, to, amount);\\n\\n _afterTokenTransfer(from, to, amount);\\n }\\n\\n /** @dev Creates `amount` tokens and assigns them to `account`, increasing\\n * the total supply.\\n *\\n * Emits a {Transfer} event with `from` set to the zero address.\\n *\\n * Requirements:\\n *\\n * - `account` cannot be the zero address.\\n */\\n function _mint(address account, uint256 amount) internal virtual {\\n require(account != address(0), \\\"ERC20: mint to the zero address\\\");\\n\\n _beforeTokenTransfer(address(0), account, amount);\\n\\n _totalSupply += amount;\\n unchecked {\\n // Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above.\\n _balances[account] += amount;\\n }\\n emit Transfer(address(0), account, amount);\\n\\n _afterTokenTransfer(address(0), account, amount);\\n }\\n\\n /**\\n * @dev Destroys `amount` tokens from `account`, reducing the\\n * total supply.\\n *\\n * Emits a {Transfer} event with `to` set to the zero address.\\n *\\n * Requirements:\\n *\\n * - `account` cannot be the zero address.\\n * - `account` must have at least `amount` tokens.\\n */\\n function _burn(address account, uint256 amount) internal virtual {\\n require(account != address(0), \\\"ERC20: burn from the zero address\\\");\\n\\n _beforeTokenTransfer(account, address(0), amount);\\n\\n uint256 accountBalance = _balances[account];\\n require(accountBalance >= amount, \\\"ERC20: burn amount exceeds balance\\\");\\n unchecked {\\n _balances[account] = accountBalance - amount;\\n // Overflow not possible: amount <= accountBalance <= totalSupply.\\n _totalSupply -= amount;\\n }\\n\\n emit Transfer(account, address(0), amount);\\n\\n _afterTokenTransfer(account, address(0), amount);\\n }\\n\\n /**\\n * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.\\n *\\n * This internal function is equivalent to `approve`, and can be used to\\n * e.g. set automatic allowances for certain subsystems, etc.\\n *\\n * Emits an {Approval} event.\\n *\\n * Requirements:\\n *\\n * - `owner` cannot be the zero address.\\n * - `spender` cannot be the zero address.\\n */\\n function _approve(address owner, address spender, uint256 amount) internal virtual {\\n require(owner != address(0), \\\"ERC20: approve from the zero address\\\");\\n require(spender != address(0), \\\"ERC20: approve to the zero address\\\");\\n\\n _allowances[owner][spender] = amount;\\n emit Approval(owner, spender, amount);\\n }\\n\\n /**\\n * @dev Updates `owner` s allowance for `spender` based on spent `amount`.\\n *\\n * Does not update the allowance amount in case of infinite allowance.\\n * Revert if not enough allowance is available.\\n *\\n * Might emit an {Approval} event.\\n */\\n function _spendAllowance(address owner, address spender, uint256 amount) internal virtual {\\n uint256 currentAllowance = allowance(owner, spender);\\n if (currentAllowance != type(uint256).max) {\\n require(currentAllowance >= amount, \\\"ERC20: insufficient allowance\\\");\\n unchecked {\\n _approve(owner, spender, currentAllowance - amount);\\n }\\n }\\n }\\n\\n /**\\n * @dev Hook that is called before any transfer of tokens. This includes\\n * minting and burning.\\n *\\n * Calling conditions:\\n *\\n * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\\n * will be transferred to `to`.\\n * - when `from` is zero, `amount` tokens will be minted for `to`.\\n * - when `to` is zero, `amount` of ``from``'s tokens will be burned.\\n * - `from` and `to` are never both zero.\\n *\\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n */\\n function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual {}\\n\\n /**\\n * @dev Hook that is called after any transfer of tokens. This includes\\n * minting and burning.\\n *\\n * Calling conditions:\\n *\\n * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\\n * has been transferred to `to`.\\n * - when `from` is zero, `amount` tokens have been minted for `to`.\\n * - when `to` is zero, `amount` of ``from``'s tokens have been burned.\\n * - `from` and `to` are never both zero.\\n *\\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n */\\n function _afterTokenTransfer(address from, address to, uint256 amount) internal virtual {}\\n}\\n\",\"keccak256\":\"0xa56ca923f70c1748830700250b19c61b70db9a683516dc5e216694a50445d99c\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n /**\\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n * another (`to`).\\n *\\n * Note that `value` may be zero.\\n */\\n event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n /**\\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n * a call to {approve}. `value` is the new allowance.\\n */\\n event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n /**\\n * @dev Returns the amount of tokens in existence.\\n */\\n function totalSupply() external view returns (uint256);\\n\\n /**\\n * @dev Returns the amount of tokens owned by `account`.\\n */\\n function balanceOf(address account) external view returns (uint256);\\n\\n /**\\n * @dev Moves `amount` tokens from the caller's account to `to`.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transfer(address to, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Returns the remaining number of tokens that `spender` will be\\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n * zero by default.\\n *\\n * This value changes when {approve} or {transferFrom} are called.\\n */\\n function allowance(address owner, address spender) external view returns (uint256);\\n\\n /**\\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n * that someone may use both the old and the new allowance by unfortunate\\n * transaction ordering. One possible solution to mitigate this race\\n * condition is to first reduce the spender's allowance to 0 and set the\\n * desired value afterwards:\\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n *\\n * Emits an {Approval} event.\\n */\\n function approve(address spender, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Moves `amount` tokens from `from` to `to` using the\\n * allowance mechanism. `amount` is then deducted from the caller's\\n * allowance.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transferFrom(address from, address to, uint256 amount) external returns (bool);\\n}\\n\",\"keccak256\":\"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC20.sol\\\";\\n\\n/**\\n * @dev Interface for the optional metadata functions from the ERC20 standard.\\n *\\n * _Available since v4.1._\\n */\\ninterface IERC20Metadata is IERC20 {\\n /**\\n * @dev Returns the name of the token.\\n */\\n function name() external view returns (string memory);\\n\\n /**\\n * @dev Returns the symbol of the token.\\n */\\n function symbol() external view returns (string memory);\\n\\n /**\\n * @dev Returns the decimals places of the token.\\n */\\n function decimals() external view returns (uint8);\\n}\\n\",\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n function _contextSuffixLength() internal view virtual returns (uint256) {\\n return 0;\\n }\\n}\\n\",\"keccak256\":\"0xa92e4fa126feb6907daa0513ddd816b2eb91f30a808de54f63c17d0e162c3439\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":7172,"contract":"@openzeppelin/contracts/token/ERC20/ERC20.sol:ERC20","label":"_balances","offset":0,"slot":"0","type":"t_mapping(t_address,t_uint256)"},{"astId":7178,"contract":"@openzeppelin/contracts/token/ERC20/ERC20.sol:ERC20","label":"_allowances","offset":0,"slot":"1","type":"t_mapping(t_address,t_mapping(t_address,t_uint256))"},{"astId":7180,"contract":"@openzeppelin/contracts/token/ERC20/ERC20.sol:ERC20","label":"_totalSupply","offset":0,"slot":"2","type":"t_uint256"},{"astId":7182,"contract":"@openzeppelin/contracts/token/ERC20/ERC20.sol:ERC20","label":"_name","offset":0,"slot":"3","type":"t_string_storage"},{"astId":7184,"contract":"@openzeppelin/contracts/token/ERC20/ERC20.sol:ERC20","label":"_symbol","offset":0,"slot":"4","type":"t_string_storage"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_mapping(t_address,t_mapping(t_address,t_uint256))":{"encoding":"mapping","key":"t_address","label":"mapping(address => mapping(address => uint256))","numberOfBytes":"32","value":"t_mapping(t_address,t_uint256)"},"t_mapping(t_address,t_uint256)":{"encoding":"mapping","key":"t_address","label":"mapping(address => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_string_storage":{"encoding":"bytes","label":"string","numberOfBytes":"32"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/token/ERC20/IERC20.sol":{"IERC20":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"Interface of the ERC20 standard as defined in the EIP.","events":{"Approval(address,address,uint256)":{"details":"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance."},"Transfer(address,address,uint256)":{"details":"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero."}},"kind":"dev","methods":{"allowance(address,address)":{"details":"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called."},"approve(address,uint256)":{"details":"Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event."},"balanceOf(address)":{"details":"Returns the amount of tokens owned by `account`."},"totalSupply()":{"details":"Returns the amount of tokens in existence."},"transfer(address,uint256)":{"details":"Moves `amount` tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."},"transferFrom(address,address,uint256)":{"details":"Moves `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC20 standard as defined in the EIP.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the amount of tokens owned by `account`.\"},\"totalSupply()\":{\"details\":\"Returns the amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves `amount` tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":\"IERC20\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n /**\\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n * another (`to`).\\n *\\n * Note that `value` may be zero.\\n */\\n event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n /**\\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n * a call to {approve}. `value` is the new allowance.\\n */\\n event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n /**\\n * @dev Returns the amount of tokens in existence.\\n */\\n function totalSupply() external view returns (uint256);\\n\\n /**\\n * @dev Returns the amount of tokens owned by `account`.\\n */\\n function balanceOf(address account) external view returns (uint256);\\n\\n /**\\n * @dev Moves `amount` tokens from the caller's account to `to`.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transfer(address to, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Returns the remaining number of tokens that `spender` will be\\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n * zero by default.\\n *\\n * This value changes when {approve} or {transferFrom} are called.\\n */\\n function allowance(address owner, address spender) external view returns (uint256);\\n\\n /**\\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n * that someone may use both the old and the new allowance by unfortunate\\n * transaction ordering. One possible solution to mitigate this race\\n * condition is to first reduce the spender's allowance to 0 and set the\\n * desired value afterwards:\\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n *\\n * Emits an {Approval} event.\\n */\\n function approve(address spender, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Moves `amount` tokens from `from` to `to` using the\\n * allowance mechanism. `amount` is then deducted from the caller's\\n * allowance.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transferFrom(address from, address to, uint256 amount) external returns (bool);\\n}\\n\",\"keccak256\":\"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"IERC20Metadata":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"Interface for the optional metadata functions from the ERC20 standard. _Available since v4.1._","kind":"dev","methods":{"allowance(address,address)":{"details":"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called."},"approve(address,uint256)":{"details":"Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event."},"balanceOf(address)":{"details":"Returns the amount of tokens owned by `account`."},"decimals()":{"details":"Returns the decimals places of the token."},"name()":{"details":"Returns the name of the token."},"symbol()":{"details":"Returns the symbol of the token."},"totalSupply()":{"details":"Returns the amount of tokens in existence."},"transfer(address,uint256)":{"details":"Moves `amount` tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."},"transferFrom(address,address,uint256)":{"details":"Moves `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","name()":"06fdde03","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface for the optional metadata functions from the ERC20 standard. _Available since v4.1._\",\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the amount of tokens owned by `account`.\"},\"decimals()\":{\"details\":\"Returns the decimals places of the token.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token.\"},\"totalSupply()\":{\"details\":\"Returns the amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves `amount` tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":\"IERC20Metadata\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n /**\\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n * another (`to`).\\n *\\n * Note that `value` may be zero.\\n */\\n event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n /**\\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n * a call to {approve}. `value` is the new allowance.\\n */\\n event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n /**\\n * @dev Returns the amount of tokens in existence.\\n */\\n function totalSupply() external view returns (uint256);\\n\\n /**\\n * @dev Returns the amount of tokens owned by `account`.\\n */\\n function balanceOf(address account) external view returns (uint256);\\n\\n /**\\n * @dev Moves `amount` tokens from the caller's account to `to`.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transfer(address to, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Returns the remaining number of tokens that `spender` will be\\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n * zero by default.\\n *\\n * This value changes when {approve} or {transferFrom} are called.\\n */\\n function allowance(address owner, address spender) external view returns (uint256);\\n\\n /**\\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n * that someone may use both the old and the new allowance by unfortunate\\n * transaction ordering. One possible solution to mitigate this race\\n * condition is to first reduce the spender's allowance to 0 and set the\\n * desired value afterwards:\\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n *\\n * Emits an {Approval} event.\\n */\\n function approve(address spender, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Moves `amount` tokens from `from` to `to` using the\\n * allowance mechanism. `amount` is then deducted from the caller's\\n * allowance.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transferFrom(address from, address to, uint256 amount) external returns (bool);\\n}\\n\",\"keccak256\":\"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC20.sol\\\";\\n\\n/**\\n * @dev Interface for the optional metadata functions from the ERC20 standard.\\n *\\n * _Available since v4.1._\\n */\\ninterface IERC20Metadata is IERC20 {\\n /**\\n * @dev Returns the name of the token.\\n */\\n function name() external view returns (string memory);\\n\\n /**\\n * @dev Returns the symbol of the token.\\n */\\n function symbol() external view returns (string memory);\\n\\n /**\\n * @dev Returns the decimals places of the token.\\n */\\n function decimals() external view returns (uint8);\\n}\\n\",\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/token/ERC721/ERC721.sol":{"ERC721":{"abi":[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including the Metadata extension, but not including the Enumerable extension, which is available separately as {ERC721Enumerable}.","kind":"dev","methods":{"approve(address,uint256)":{"details":"See {IERC721-approve}."},"balanceOf(address)":{"details":"See {IERC721-balanceOf}."},"constructor":{"details":"Initializes the contract by setting a `name` and a `symbol` to the token collection."},"getApproved(uint256)":{"details":"See {IERC721-getApproved}."},"isApprovedForAll(address,address)":{"details":"See {IERC721-isApprovedForAll}."},"name()":{"details":"See {IERC721Metadata-name}."},"ownerOf(uint256)":{"details":"See {IERC721-ownerOf}."},"safeTransferFrom(address,address,uint256)":{"details":"See {IERC721-safeTransferFrom}."},"safeTransferFrom(address,address,uint256,bytes)":{"details":"See {IERC721-safeTransferFrom}."},"setApprovalForAll(address,bool)":{"details":"See {IERC721-setApprovalForAll}."},"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."},"symbol()":{"details":"See {IERC721Metadata-symbol}."},"tokenURI(uint256)":{"details":"See {IERC721Metadata-tokenURI}."},"transferFrom(address,address,uint256)":{"details":"See {IERC721-transferFrom}."}},"version":1},"evm":{"bytecode":{"functionDebugData":{"@_7909":{"entryPoint":null,"id":7909,"parameterSlots":2,"returnSlots":0},"abi_decode_string_fromMemory":{"entryPoint":112,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr_fromMemory":{"entryPoint":287,"id":null,"parameterSlots":2,"returnSlots":2},"array_dataslot_string_storage":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"clean_up_bytearray_end_slots_string_storage":{"entryPoint":453,"id":null,"parameterSlots":3,"returnSlots":0},"copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage":{"entryPoint":536,"id":null,"parameterSlots":2,"returnSlots":0},"extract_byte_array_length":{"entryPoint":393,"id":null,"parameterSlots":1,"returnSlots":1},"extract_used_part_and_set_length_of_short_byte_array":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"panic_error_0x41":{"entryPoint":90,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:4144:92","statements":[{"nodeType":"YulBlock","src":"6:3:92","statements":[]},{"body":{"nodeType":"YulBlock","src":"46:95:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"63:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"70:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"75:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"66:3:92"},"nodeType":"YulFunctionCall","src":"66:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"56:6:92"},"nodeType":"YulFunctionCall","src":"56:31:92"},"nodeType":"YulExpressionStatement","src":"56:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"103:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"106:4:92","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"96:6:92"},"nodeType":"YulFunctionCall","src":"96:15:92"},"nodeType":"YulExpressionStatement","src":"96:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"127:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"130:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"120:6:92"},"nodeType":"YulFunctionCall","src":"120:15:92"},"nodeType":"YulExpressionStatement","src":"120:15:92"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"14:127:92"},{"body":{"nodeType":"YulBlock","src":"210:776:92","statements":[{"body":{"nodeType":"YulBlock","src":"259:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"268:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"271:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"261:6:92"},"nodeType":"YulFunctionCall","src":"261:12:92"},"nodeType":"YulExpressionStatement","src":"261:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"238:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"246:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"234:3:92"},"nodeType":"YulFunctionCall","src":"234:17:92"},{"name":"end","nodeType":"YulIdentifier","src":"253:3:92"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"230:3:92"},"nodeType":"YulFunctionCall","src":"230:27:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"223:6:92"},"nodeType":"YulFunctionCall","src":"223:35:92"},"nodeType":"YulIf","src":"220:55:92"},{"nodeType":"YulVariableDeclaration","src":"284:23:92","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"300:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"294:5:92"},"nodeType":"YulFunctionCall","src":"294:13:92"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"288:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"316:28:92","value":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"334:2:92","type":"","value":"64"},{"kind":"number","nodeType":"YulLiteral","src":"338:1:92","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"330:3:92"},"nodeType":"YulFunctionCall","src":"330:10:92"},{"kind":"number","nodeType":"YulLiteral","src":"342:1:92","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"326:3:92"},"nodeType":"YulFunctionCall","src":"326:18:92"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"320:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"367:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"369:16:92"},"nodeType":"YulFunctionCall","src":"369:18:92"},"nodeType":"YulExpressionStatement","src":"369:18:92"}]},"condition":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"359:2:92"},{"name":"_2","nodeType":"YulIdentifier","src":"363:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"356:2:92"},"nodeType":"YulFunctionCall","src":"356:10:92"},"nodeType":"YulIf","src":"353:36:92"},{"nodeType":"YulVariableDeclaration","src":"398:17:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"412:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"408:3:92"},"nodeType":"YulFunctionCall","src":"408:7:92"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"402:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"424:23:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"444:2:92","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"438:5:92"},"nodeType":"YulFunctionCall","src":"438:9:92"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"428:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"456:71:92","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"478:6:92"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"502:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"506:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"498:3:92"},"nodeType":"YulFunctionCall","src":"498:13:92"},{"name":"_3","nodeType":"YulIdentifier","src":"513:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"494:3:92"},"nodeType":"YulFunctionCall","src":"494:22:92"},{"kind":"number","nodeType":"YulLiteral","src":"518:2:92","type":"","value":"63"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"490:3:92"},"nodeType":"YulFunctionCall","src":"490:31:92"},{"name":"_3","nodeType":"YulIdentifier","src":"523:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"486:3:92"},"nodeType":"YulFunctionCall","src":"486:40:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"474:3:92"},"nodeType":"YulFunctionCall","src":"474:53:92"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"460:10:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"586:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"588:16:92"},"nodeType":"YulFunctionCall","src":"588:18:92"},"nodeType":"YulExpressionStatement","src":"588:18:92"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"545:10:92"},{"name":"_2","nodeType":"YulIdentifier","src":"557:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"542:2:92"},"nodeType":"YulFunctionCall","src":"542:18:92"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"565:10:92"},{"name":"memPtr","nodeType":"YulIdentifier","src":"577:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"562:2:92"},"nodeType":"YulFunctionCall","src":"562:22:92"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"539:2:92"},"nodeType":"YulFunctionCall","src":"539:46:92"},"nodeType":"YulIf","src":"536:72:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"624:2:92","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"628:10:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"617:6:92"},"nodeType":"YulFunctionCall","src":"617:22:92"},"nodeType":"YulExpressionStatement","src":"617:22:92"},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"655:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"663:2:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"648:6:92"},"nodeType":"YulFunctionCall","src":"648:18:92"},"nodeType":"YulExpressionStatement","src":"648:18:92"},{"nodeType":"YulVariableDeclaration","src":"675:14:92","value":{"kind":"number","nodeType":"YulLiteral","src":"685:4:92","type":"","value":"0x20"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"679:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"735:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"744:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"747:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"737:6:92"},"nodeType":"YulFunctionCall","src":"737:12:92"},"nodeType":"YulExpressionStatement","src":"737:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"712:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"720:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"708:3:92"},"nodeType":"YulFunctionCall","src":"708:15:92"},{"name":"_4","nodeType":"YulIdentifier","src":"725:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"704:3:92"},"nodeType":"YulFunctionCall","src":"704:24:92"},{"name":"end","nodeType":"YulIdentifier","src":"730:3:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"701:2:92"},"nodeType":"YulFunctionCall","src":"701:33:92"},"nodeType":"YulIf","src":"698:53:92"},{"nodeType":"YulVariableDeclaration","src":"760:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"769:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"764:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"825:87:92","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"854:6:92"},{"name":"i","nodeType":"YulIdentifier","src":"862:1:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"850:3:92"},"nodeType":"YulFunctionCall","src":"850:14:92"},{"name":"_4","nodeType":"YulIdentifier","src":"866:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"846:3:92"},"nodeType":"YulFunctionCall","src":"846:23:92"},{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"885:6:92"},{"name":"i","nodeType":"YulIdentifier","src":"893:1:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"881:3:92"},"nodeType":"YulFunctionCall","src":"881:14:92"},{"name":"_4","nodeType":"YulIdentifier","src":"897:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"877:3:92"},"nodeType":"YulFunctionCall","src":"877:23:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"871:5:92"},"nodeType":"YulFunctionCall","src":"871:30:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"839:6:92"},"nodeType":"YulFunctionCall","src":"839:63:92"},"nodeType":"YulExpressionStatement","src":"839:63:92"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"790:1:92"},{"name":"_1","nodeType":"YulIdentifier","src":"793:2:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"787:2:92"},"nodeType":"YulFunctionCall","src":"787:9:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"797:19:92","statements":[{"nodeType":"YulAssignment","src":"799:15:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"808:1:92"},{"name":"_4","nodeType":"YulIdentifier","src":"811:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"804:3:92"},"nodeType":"YulFunctionCall","src":"804:10:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"799:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"783:3:92","statements":[]},"src":"779:133:92"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"936:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"944:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"932:3:92"},"nodeType":"YulFunctionCall","src":"932:15:92"},{"name":"_4","nodeType":"YulIdentifier","src":"949:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"928:3:92"},"nodeType":"YulFunctionCall","src":"928:24:92"},{"kind":"number","nodeType":"YulLiteral","src":"954:1:92","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"921:6:92"},"nodeType":"YulFunctionCall","src":"921:35:92"},"nodeType":"YulExpressionStatement","src":"921:35:92"},{"nodeType":"YulAssignment","src":"965:15:92","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"974:6:92"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"965:5:92"}]}]},"name":"abi_decode_string_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"184:6:92","type":""},{"name":"end","nodeType":"YulTypedName","src":"192:3:92","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"200:5:92","type":""}],"src":"146:840:92"},{"body":{"nodeType":"YulBlock","src":"1109:444:92","statements":[{"body":{"nodeType":"YulBlock","src":"1155:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1164:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1167:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1157:6:92"},"nodeType":"YulFunctionCall","src":"1157:12:92"},"nodeType":"YulExpressionStatement","src":"1157:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1130:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"1139:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1126:3:92"},"nodeType":"YulFunctionCall","src":"1126:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"1151:2:92","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1122:3:92"},"nodeType":"YulFunctionCall","src":"1122:32:92"},"nodeType":"YulIf","src":"1119:52:92"},{"nodeType":"YulVariableDeclaration","src":"1180:30:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1200:9:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1194:5:92"},"nodeType":"YulFunctionCall","src":"1194:16:92"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1184:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"1219:28:92","value":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1237:2:92","type":"","value":"64"},{"kind":"number","nodeType":"YulLiteral","src":"1241:1:92","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1233:3:92"},"nodeType":"YulFunctionCall","src":"1233:10:92"},{"kind":"number","nodeType":"YulLiteral","src":"1245:1:92","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1229:3:92"},"nodeType":"YulFunctionCall","src":"1229:18:92"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"1223:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"1274:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1283:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1286:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1276:6:92"},"nodeType":"YulFunctionCall","src":"1276:12:92"},"nodeType":"YulExpressionStatement","src":"1276:12:92"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1262:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"1270:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1259:2:92"},"nodeType":"YulFunctionCall","src":"1259:14:92"},"nodeType":"YulIf","src":"1256:34:92"},{"nodeType":"YulAssignment","src":"1299:71:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1342:9:92"},{"name":"offset","nodeType":"YulIdentifier","src":"1353:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1338:3:92"},"nodeType":"YulFunctionCall","src":"1338:22:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1362:7:92"}],"functionName":{"name":"abi_decode_string_fromMemory","nodeType":"YulIdentifier","src":"1309:28:92"},"nodeType":"YulFunctionCall","src":"1309:61:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1299:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"1379:41:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1405:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1416:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1401:3:92"},"nodeType":"YulFunctionCall","src":"1401:18:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1395:5:92"},"nodeType":"YulFunctionCall","src":"1395:25:92"},"variables":[{"name":"offset_1","nodeType":"YulTypedName","src":"1383:8:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"1449:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1458:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1461:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1451:6:92"},"nodeType":"YulFunctionCall","src":"1451:12:92"},"nodeType":"YulExpressionStatement","src":"1451:12:92"}]},"condition":{"arguments":[{"name":"offset_1","nodeType":"YulIdentifier","src":"1435:8:92"},{"name":"_1","nodeType":"YulIdentifier","src":"1445:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1432:2:92"},"nodeType":"YulFunctionCall","src":"1432:16:92"},"nodeType":"YulIf","src":"1429:36:92"},{"nodeType":"YulAssignment","src":"1474:73:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1517:9:92"},{"name":"offset_1","nodeType":"YulIdentifier","src":"1528:8:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1513:3:92"},"nodeType":"YulFunctionCall","src":"1513:24:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1539:7:92"}],"functionName":{"name":"abi_decode_string_fromMemory","nodeType":"YulIdentifier","src":"1484:28:92"},"nodeType":"YulFunctionCall","src":"1484:63:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1474:6:92"}]}]},"name":"abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1067:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1078:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1090:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1098:6:92","type":""}],"src":"991:562:92"},{"body":{"nodeType":"YulBlock","src":"1613:325:92","statements":[{"nodeType":"YulAssignment","src":"1623:22:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1637:1:92","type":"","value":"1"},{"name":"data","nodeType":"YulIdentifier","src":"1640:4:92"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"1633:3:92"},"nodeType":"YulFunctionCall","src":"1633:12:92"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"1623:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"1654:38:92","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"1684:4:92"},{"kind":"number","nodeType":"YulLiteral","src":"1690:1:92","type":"","value":"1"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1680:3:92"},"nodeType":"YulFunctionCall","src":"1680:12:92"},"variables":[{"name":"outOfPlaceEncoding","nodeType":"YulTypedName","src":"1658:18:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"1731:31:92","statements":[{"nodeType":"YulAssignment","src":"1733:27:92","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"1747:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"1755:4:92","type":"","value":"0x7f"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1743:3:92"},"nodeType":"YulFunctionCall","src":"1743:17:92"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"1733:6:92"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"1711:18:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1704:6:92"},"nodeType":"YulFunctionCall","src":"1704:26:92"},"nodeType":"YulIf","src":"1701:61:92"},{"body":{"nodeType":"YulBlock","src":"1821:111:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1842:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1849:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"1854:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1845:3:92"},"nodeType":"YulFunctionCall","src":"1845:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1835:6:92"},"nodeType":"YulFunctionCall","src":"1835:31:92"},"nodeType":"YulExpressionStatement","src":"1835:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1886:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"1889:4:92","type":"","value":"0x22"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1879:6:92"},"nodeType":"YulFunctionCall","src":"1879:15:92"},"nodeType":"YulExpressionStatement","src":"1879:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1914:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1917:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1907:6:92"},"nodeType":"YulFunctionCall","src":"1907:15:92"},"nodeType":"YulExpressionStatement","src":"1907:15:92"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"1777:18:92"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"1800:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"1808:2:92","type":"","value":"32"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"1797:2:92"},"nodeType":"YulFunctionCall","src":"1797:14:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1774:2:92"},"nodeType":"YulFunctionCall","src":"1774:38:92"},"nodeType":"YulIf","src":"1771:161:92"}]},"name":"extract_byte_array_length","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"1593:4:92","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"1602:6:92","type":""}],"src":"1558:380:92"},{"body":{"nodeType":"YulBlock","src":"1999:65:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2016:1:92","type":"","value":"0"},{"name":"ptr","nodeType":"YulIdentifier","src":"2019:3:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2009:6:92"},"nodeType":"YulFunctionCall","src":"2009:14:92"},"nodeType":"YulExpressionStatement","src":"2009:14:92"},{"nodeType":"YulAssignment","src":"2032:26:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2050:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2053:4:92","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nodeType":"YulIdentifier","src":"2040:9:92"},"nodeType":"YulFunctionCall","src":"2040:18:92"},"variableNames":[{"name":"data","nodeType":"YulIdentifier","src":"2032:4:92"}]}]},"name":"array_dataslot_string_storage","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nodeType":"YulTypedName","src":"1982:3:92","type":""}],"returnVariables":[{"name":"data","nodeType":"YulTypedName","src":"1990:4:92","type":""}],"src":"1943:121:92"},{"body":{"nodeType":"YulBlock","src":"2150:464:92","statements":[{"body":{"nodeType":"YulBlock","src":"2183:425:92","statements":[{"nodeType":"YulVariableDeclaration","src":"2197:11:92","value":{"kind":"number","nodeType":"YulLiteral","src":"2207:1:92","type":"","value":"0"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"2201:2:92","type":""}]},{"expression":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"2228:2:92"},{"name":"array","nodeType":"YulIdentifier","src":"2232:5:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2221:6:92"},"nodeType":"YulFunctionCall","src":"2221:17:92"},"nodeType":"YulExpressionStatement","src":"2221:17:92"},{"nodeType":"YulVariableDeclaration","src":"2251:31:92","value":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"2273:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"2277:4:92","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nodeType":"YulIdentifier","src":"2263:9:92"},"nodeType":"YulFunctionCall","src":"2263:19:92"},"variables":[{"name":"data","nodeType":"YulTypedName","src":"2255:4:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2295:57:92","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"2318:4:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2328:1:92","type":"","value":"5"},{"arguments":[{"name":"startIndex","nodeType":"YulIdentifier","src":"2335:10:92"},{"kind":"number","nodeType":"YulLiteral","src":"2347:2:92","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2331:3:92"},"nodeType":"YulFunctionCall","src":"2331:19:92"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"2324:3:92"},"nodeType":"YulFunctionCall","src":"2324:27:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2314:3:92"},"nodeType":"YulFunctionCall","src":"2314:38:92"},"variables":[{"name":"deleteStart","nodeType":"YulTypedName","src":"2299:11:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"2389:23:92","statements":[{"nodeType":"YulAssignment","src":"2391:19:92","value":{"name":"data","nodeType":"YulIdentifier","src":"2406:4:92"},"variableNames":[{"name":"deleteStart","nodeType":"YulIdentifier","src":"2391:11:92"}]}]},"condition":{"arguments":[{"name":"startIndex","nodeType":"YulIdentifier","src":"2371:10:92"},{"kind":"number","nodeType":"YulLiteral","src":"2383:4:92","type":"","value":"0x20"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2368:2:92"},"nodeType":"YulFunctionCall","src":"2368:20:92"},"nodeType":"YulIf","src":"2365:47:92"},{"nodeType":"YulVariableDeclaration","src":"2425:41:92","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"2439:4:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2449:1:92","type":"","value":"5"},{"arguments":[{"name":"len","nodeType":"YulIdentifier","src":"2456:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"2461:2:92","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2452:3:92"},"nodeType":"YulFunctionCall","src":"2452:12:92"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"2445:3:92"},"nodeType":"YulFunctionCall","src":"2445:20:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2435:3:92"},"nodeType":"YulFunctionCall","src":"2435:31:92"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"2429:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2479:24:92","value":{"name":"deleteStart","nodeType":"YulIdentifier","src":"2492:11:92"},"variables":[{"name":"start","nodeType":"YulTypedName","src":"2483:5:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"2577:21:92","statements":[{"expression":{"arguments":[{"name":"start","nodeType":"YulIdentifier","src":"2586:5:92"},{"name":"_1","nodeType":"YulIdentifier","src":"2593:2:92"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"2579:6:92"},"nodeType":"YulFunctionCall","src":"2579:17:92"},"nodeType":"YulExpressionStatement","src":"2579:17:92"}]},"condition":{"arguments":[{"name":"start","nodeType":"YulIdentifier","src":"2527:5:92"},{"name":"_2","nodeType":"YulIdentifier","src":"2534:2:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2524:2:92"},"nodeType":"YulFunctionCall","src":"2524:13:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"2538:26:92","statements":[{"nodeType":"YulAssignment","src":"2540:22:92","value":{"arguments":[{"name":"start","nodeType":"YulIdentifier","src":"2553:5:92"},{"kind":"number","nodeType":"YulLiteral","src":"2560:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2549:3:92"},"nodeType":"YulFunctionCall","src":"2549:13:92"},"variableNames":[{"name":"start","nodeType":"YulIdentifier","src":"2540:5:92"}]}]},"pre":{"nodeType":"YulBlock","src":"2520:3:92","statements":[]},"src":"2516:82:92"}]},"condition":{"arguments":[{"name":"len","nodeType":"YulIdentifier","src":"2166:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"2171:2:92","type":"","value":"31"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2163:2:92"},"nodeType":"YulFunctionCall","src":"2163:11:92"},"nodeType":"YulIf","src":"2160:448:92"}]},"name":"clean_up_bytearray_end_slots_string_storage","nodeType":"YulFunctionDefinition","parameters":[{"name":"array","nodeType":"YulTypedName","src":"2122:5:92","type":""},{"name":"len","nodeType":"YulTypedName","src":"2129:3:92","type":""},{"name":"startIndex","nodeType":"YulTypedName","src":"2134:10:92","type":""}],"src":"2069:545:92"},{"body":{"nodeType":"YulBlock","src":"2704:81:92","statements":[{"nodeType":"YulAssignment","src":"2714:65:92","value":{"arguments":[{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"2729:4:92"},{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2747:1:92","type":"","value":"3"},{"name":"len","nodeType":"YulIdentifier","src":"2750:3:92"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2743:3:92"},"nodeType":"YulFunctionCall","src":"2743:11:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2760:1:92","type":"","value":"0"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"2756:3:92"},"nodeType":"YulFunctionCall","src":"2756:6:92"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"2739:3:92"},"nodeType":"YulFunctionCall","src":"2739:24:92"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"2735:3:92"},"nodeType":"YulFunctionCall","src":"2735:29:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2725:3:92"},"nodeType":"YulFunctionCall","src":"2725:40:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2771:1:92","type":"","value":"1"},{"name":"len","nodeType":"YulIdentifier","src":"2774:3:92"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2767:3:92"},"nodeType":"YulFunctionCall","src":"2767:11:92"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"2722:2:92"},"nodeType":"YulFunctionCall","src":"2722:57:92"},"variableNames":[{"name":"used","nodeType":"YulIdentifier","src":"2714:4:92"}]}]},"name":"extract_used_part_and_set_length_of_short_byte_array","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"2681:4:92","type":""},{"name":"len","nodeType":"YulTypedName","src":"2687:3:92","type":""}],"returnVariables":[{"name":"used","nodeType":"YulTypedName","src":"2695:4:92","type":""}],"src":"2619:166:92"},{"body":{"nodeType":"YulBlock","src":"2886:1256:92","statements":[{"nodeType":"YulVariableDeclaration","src":"2896:24:92","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"2916:3:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2910:5:92"},"nodeType":"YulFunctionCall","src":"2910:10:92"},"variables":[{"name":"newLen","nodeType":"YulTypedName","src":"2900:6:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"2963:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"2965:16:92"},"nodeType":"YulFunctionCall","src":"2965:18:92"},"nodeType":"YulExpressionStatement","src":"2965:18:92"}]},"condition":{"arguments":[{"name":"newLen","nodeType":"YulIdentifier","src":"2935:6:92"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2951:2:92","type":"","value":"64"},{"kind":"number","nodeType":"YulLiteral","src":"2955:1:92","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2947:3:92"},"nodeType":"YulFunctionCall","src":"2947:10:92"},{"kind":"number","nodeType":"YulLiteral","src":"2959:1:92","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2943:3:92"},"nodeType":"YulFunctionCall","src":"2943:18:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2932:2:92"},"nodeType":"YulFunctionCall","src":"2932:30:92"},"nodeType":"YulIf","src":"2929:56:92"},{"expression":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"3038:4:92"},{"arguments":[{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"3076:4:92"}],"functionName":{"name":"sload","nodeType":"YulIdentifier","src":"3070:5:92"},"nodeType":"YulFunctionCall","src":"3070:11:92"}],"functionName":{"name":"extract_byte_array_length","nodeType":"YulIdentifier","src":"3044:25:92"},"nodeType":"YulFunctionCall","src":"3044:38:92"},{"name":"newLen","nodeType":"YulIdentifier","src":"3084:6:92"}],"functionName":{"name":"clean_up_bytearray_end_slots_string_storage","nodeType":"YulIdentifier","src":"2994:43:92"},"nodeType":"YulFunctionCall","src":"2994:97:92"},"nodeType":"YulExpressionStatement","src":"2994:97:92"},{"nodeType":"YulVariableDeclaration","src":"3100:18:92","value":{"kind":"number","nodeType":"YulLiteral","src":"3117:1:92","type":"","value":"0"},"variables":[{"name":"srcOffset","nodeType":"YulTypedName","src":"3104:9:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3127:23:92","value":{"kind":"number","nodeType":"YulLiteral","src":"3146:4:92","type":"","value":"0x20"},"variables":[{"name":"srcOffset_1","nodeType":"YulTypedName","src":"3131:11:92","type":""}]},{"nodeType":"YulAssignment","src":"3159:24:92","value":{"name":"srcOffset_1","nodeType":"YulIdentifier","src":"3172:11:92"},"variableNames":[{"name":"srcOffset","nodeType":"YulIdentifier","src":"3159:9:92"}]},{"cases":[{"body":{"nodeType":"YulBlock","src":"3229:656:92","statements":[{"nodeType":"YulVariableDeclaration","src":"3243:35:92","value":{"arguments":[{"name":"newLen","nodeType":"YulIdentifier","src":"3262:6:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3274:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"3270:3:92"},"nodeType":"YulFunctionCall","src":"3270:7:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3258:3:92"},"nodeType":"YulFunctionCall","src":"3258:20:92"},"variables":[{"name":"loopEnd","nodeType":"YulTypedName","src":"3247:7:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3291:49:92","value":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"3335:4:92"}],"functionName":{"name":"array_dataslot_string_storage","nodeType":"YulIdentifier","src":"3305:29:92"},"nodeType":"YulFunctionCall","src":"3305:35:92"},"variables":[{"name":"dstPtr","nodeType":"YulTypedName","src":"3295:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3353:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"3362:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"3357:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"3440:172:92","statements":[{"expression":{"arguments":[{"name":"dstPtr","nodeType":"YulIdentifier","src":"3465:6:92"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"3483:3:92"},{"name":"srcOffset","nodeType":"YulIdentifier","src":"3488:9:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3479:3:92"},"nodeType":"YulFunctionCall","src":"3479:19:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3473:5:92"},"nodeType":"YulFunctionCall","src":"3473:26:92"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"3458:6:92"},"nodeType":"YulFunctionCall","src":"3458:42:92"},"nodeType":"YulExpressionStatement","src":"3458:42:92"},{"nodeType":"YulAssignment","src":"3517:24:92","value":{"arguments":[{"name":"dstPtr","nodeType":"YulIdentifier","src":"3531:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"3539:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3527:3:92"},"nodeType":"YulFunctionCall","src":"3527:14:92"},"variableNames":[{"name":"dstPtr","nodeType":"YulIdentifier","src":"3517:6:92"}]},{"nodeType":"YulAssignment","src":"3558:40:92","value":{"arguments":[{"name":"srcOffset","nodeType":"YulIdentifier","src":"3575:9:92"},{"name":"srcOffset_1","nodeType":"YulIdentifier","src":"3586:11:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3571:3:92"},"nodeType":"YulFunctionCall","src":"3571:27:92"},"variableNames":[{"name":"srcOffset","nodeType":"YulIdentifier","src":"3558:9:92"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3387:1:92"},{"name":"loopEnd","nodeType":"YulIdentifier","src":"3390:7:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"3384:2:92"},"nodeType":"YulFunctionCall","src":"3384:14:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"3399:28:92","statements":[{"nodeType":"YulAssignment","src":"3401:24:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3410:1:92"},{"name":"srcOffset_1","nodeType":"YulIdentifier","src":"3413:11:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3406:3:92"},"nodeType":"YulFunctionCall","src":"3406:19:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"3401:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"3380:3:92","statements":[]},"src":"3376:236:92"},{"body":{"nodeType":"YulBlock","src":"3660:166:92","statements":[{"nodeType":"YulVariableDeclaration","src":"3678:43:92","value":{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"3705:3:92"},{"name":"srcOffset","nodeType":"YulIdentifier","src":"3710:9:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3701:3:92"},"nodeType":"YulFunctionCall","src":"3701:19:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3695:5:92"},"nodeType":"YulFunctionCall","src":"3695:26:92"},"variables":[{"name":"lastValue","nodeType":"YulTypedName","src":"3682:9:92","type":""}]},{"expression":{"arguments":[{"name":"dstPtr","nodeType":"YulIdentifier","src":"3745:6:92"},{"arguments":[{"name":"lastValue","nodeType":"YulIdentifier","src":"3757:9:92"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3784:1:92","type":"","value":"3"},{"name":"newLen","nodeType":"YulIdentifier","src":"3787:6:92"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"3780:3:92"},"nodeType":"YulFunctionCall","src":"3780:14:92"},{"kind":"number","nodeType":"YulLiteral","src":"3796:3:92","type":"","value":"248"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3776:3:92"},"nodeType":"YulFunctionCall","src":"3776:24:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3806:1:92","type":"","value":"0"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"3802:3:92"},"nodeType":"YulFunctionCall","src":"3802:6:92"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"3772:3:92"},"nodeType":"YulFunctionCall","src":"3772:37:92"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"3768:3:92"},"nodeType":"YulFunctionCall","src":"3768:42:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3753:3:92"},"nodeType":"YulFunctionCall","src":"3753:58:92"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"3738:6:92"},"nodeType":"YulFunctionCall","src":"3738:74:92"},"nodeType":"YulExpressionStatement","src":"3738:74:92"}]},"condition":{"arguments":[{"name":"loopEnd","nodeType":"YulIdentifier","src":"3631:7:92"},{"name":"newLen","nodeType":"YulIdentifier","src":"3640:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"3628:2:92"},"nodeType":"YulFunctionCall","src":"3628:19:92"},"nodeType":"YulIf","src":"3625:201:92"},{"expression":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"3846:4:92"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3860:1:92","type":"","value":"1"},{"name":"newLen","nodeType":"YulIdentifier","src":"3863:6:92"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"3856:3:92"},"nodeType":"YulFunctionCall","src":"3856:14:92"},{"kind":"number","nodeType":"YulLiteral","src":"3872:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3852:3:92"},"nodeType":"YulFunctionCall","src":"3852:22:92"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"3839:6:92"},"nodeType":"YulFunctionCall","src":"3839:36:92"},"nodeType":"YulExpressionStatement","src":"3839:36:92"}]},"nodeType":"YulCase","src":"3222:663:92","value":{"kind":"number","nodeType":"YulLiteral","src":"3227:1:92","type":"","value":"1"}},{"body":{"nodeType":"YulBlock","src":"3902:234:92","statements":[{"nodeType":"YulVariableDeclaration","src":"3916:14:92","value":{"kind":"number","nodeType":"YulLiteral","src":"3929:1:92","type":"","value":"0"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"3920:5:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"3965:67:92","statements":[{"nodeType":"YulAssignment","src":"3983:35:92","value":{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"4002:3:92"},{"name":"srcOffset","nodeType":"YulIdentifier","src":"4007:9:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3998:3:92"},"nodeType":"YulFunctionCall","src":"3998:19:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3992:5:92"},"nodeType":"YulFunctionCall","src":"3992:26:92"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"3983:5:92"}]}]},"condition":{"name":"newLen","nodeType":"YulIdentifier","src":"3946:6:92"},"nodeType":"YulIf","src":"3943:89:92"},{"expression":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"4052:4:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4111:5:92"},{"name":"newLen","nodeType":"YulIdentifier","src":"4118:6:92"}],"functionName":{"name":"extract_used_part_and_set_length_of_short_byte_array","nodeType":"YulIdentifier","src":"4058:52:92"},"nodeType":"YulFunctionCall","src":"4058:67:92"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"4045:6:92"},"nodeType":"YulFunctionCall","src":"4045:81:92"},"nodeType":"YulExpressionStatement","src":"4045:81:92"}]},"nodeType":"YulCase","src":"3894:242:92","value":"default"}],"expression":{"arguments":[{"name":"newLen","nodeType":"YulIdentifier","src":"3202:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"3210:2:92","type":"","value":"31"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3199:2:92"},"nodeType":"YulFunctionCall","src":"3199:14:92"},"nodeType":"YulSwitch","src":"3192:944:92"}]},"name":"copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage","nodeType":"YulFunctionDefinition","parameters":[{"name":"slot","nodeType":"YulTypedName","src":"2871:4:92","type":""},{"name":"src","nodeType":"YulTypedName","src":"2877:3:92","type":""}],"src":"2790:1352:92"}]},"contents":"{\n { }\n function panic_error_0x41()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function abi_decode_string_fromMemory(offset, end) -> array\n {\n if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n let _1 := mload(offset)\n let _2 := sub(shl(64, 1), 1)\n if gt(_1, _2) { panic_error_0x41() }\n let _3 := not(31)\n let memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(and(add(_1, 0x1f), _3), 63), _3))\n if or(gt(newFreePtr, _2), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n mstore(memPtr, _1)\n let _4 := 0x20\n if gt(add(add(offset, _1), _4), end) { revert(0, 0) }\n let i := 0\n for { } lt(i, _1) { i := add(i, _4) }\n {\n mstore(add(add(memPtr, i), _4), mload(add(add(offset, i), _4)))\n }\n mstore(add(add(memPtr, _1), _4), 0)\n array := memPtr\n }\n function abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr_fromMemory(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n let offset := mload(headStart)\n let _1 := sub(shl(64, 1), 1)\n if gt(offset, _1) { revert(0, 0) }\n value0 := abi_decode_string_fromMemory(add(headStart, offset), dataEnd)\n let offset_1 := mload(add(headStart, 32))\n if gt(offset_1, _1) { revert(0, 0) }\n value1 := abi_decode_string_fromMemory(add(headStart, offset_1), dataEnd)\n }\n function extract_byte_array_length(data) -> length\n {\n length := shr(1, data)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n if eq(outOfPlaceEncoding, lt(length, 32))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n }\n function array_dataslot_string_storage(ptr) -> data\n {\n mstore(0, ptr)\n data := keccak256(0, 0x20)\n }\n function clean_up_bytearray_end_slots_string_storage(array, len, startIndex)\n {\n if gt(len, 31)\n {\n let _1 := 0\n mstore(_1, array)\n let data := keccak256(_1, 0x20)\n let deleteStart := add(data, shr(5, add(startIndex, 31)))\n if lt(startIndex, 0x20) { deleteStart := data }\n let _2 := add(data, shr(5, add(len, 31)))\n let start := deleteStart\n for { } lt(start, _2) { start := add(start, 1) }\n { sstore(start, _1) }\n }\n }\n function extract_used_part_and_set_length_of_short_byte_array(data, len) -> used\n {\n used := or(and(data, not(shr(shl(3, len), not(0)))), shl(1, len))\n }\n function copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage(slot, src)\n {\n let newLen := mload(src)\n if gt(newLen, sub(shl(64, 1), 1)) { panic_error_0x41() }\n clean_up_bytearray_end_slots_string_storage(slot, extract_byte_array_length(sload(slot)), newLen)\n let srcOffset := 0\n let srcOffset_1 := 0x20\n srcOffset := srcOffset_1\n switch gt(newLen, 31)\n case 1 {\n let loopEnd := and(newLen, not(31))\n let dstPtr := array_dataslot_string_storage(slot)\n let i := 0\n for { } lt(i, loopEnd) { i := add(i, srcOffset_1) }\n {\n sstore(dstPtr, mload(add(src, srcOffset)))\n dstPtr := add(dstPtr, 1)\n srcOffset := add(srcOffset, srcOffset_1)\n }\n if lt(loopEnd, newLen)\n {\n let lastValue := mload(add(src, srcOffset))\n sstore(dstPtr, and(lastValue, not(shr(and(shl(3, newLen), 248), not(0)))))\n }\n sstore(slot, add(shl(1, newLen), 1))\n }\n default {\n let value := 0\n if newLen\n {\n value := mload(add(src, srcOffset))\n }\n sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, newLen))\n }\n }\n}","id":92,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60806040523480156200001157600080fd5b50604051620014ec380380620014ec83398101604081905262000034916200011f565b600062000042838262000218565b50600162000051828262000218565b505050620002e4565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200008257600080fd5b81516001600160401b03808211156200009f576200009f6200005a565b604051601f8301601f19908116603f01168101908282118183101715620000ca57620000ca6200005a565b81604052838152602092508683858801011115620000e757600080fd5b600091505b838210156200010b5785820183015181830184015290820190620000ec565b600093810190920192909252949350505050565b600080604083850312156200013357600080fd5b82516001600160401b03808211156200014b57600080fd5b620001598683870162000070565b935060208501519150808211156200017057600080fd5b506200017f8582860162000070565b9150509250929050565b600181811c908216806200019e57607f821691505b602082108103620001bf57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200021357600081815260208120601f850160051c81016020861015620001ee5750805b601f850160051c820191505b818110156200020f57828155600101620001fa565b5050505b505050565b81516001600160401b038111156200023457620002346200005a565b6200024c8162000245845462000189565b84620001c5565b602080601f8311600181146200028457600084156200026b5750858301515b600019600386901b1c1916600185901b1785556200020f565b600085815260208120601f198616915b82811015620002b55788860151825594840194600190910190840162000294565b5085821015620002d45787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6111f880620002f46000396000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c80636352211e1161008c578063a22cb46511610066578063a22cb465146101c3578063b88d4fde146101d6578063c87b56dd146101e9578063e985e9c5146101fc57600080fd5b80636352211e1461018757806370a082311461019a57806395d89b41146101bb57600080fd5b8063095ea7b3116100bd578063095ea7b31461014c57806323b872dd1461016157806342842e0e1461017457600080fd5b806301ffc9a7146100e457806306fdde031461010c578063081812fc14610121575b600080fd5b6100f76100f2366004610e92565b610238565b60405190151581526020015b60405180910390f35b61011461028a565b6040516101039190610eff565b61013461012f366004610f12565b61031c565b6040516001600160a01b039091168152602001610103565b61015f61015a366004610f47565b610343565b005b61015f61016f366004610f71565b61045d565b61015f610182366004610f71565b6104d4565b610134610195366004610f12565b6104ef565b6101ad6101a8366004610fad565b610554565b604051908152602001610103565b6101146105ee565b61015f6101d1366004610fc8565b6105fd565b61015f6101e436600461101a565b61060c565b6101146101f7366004610f12565b61068a565b6100f761020a3660046110f6565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b60006001600160e01b031982166380ac58cd60e01b148061026957506001600160e01b03198216635b5e139f60e01b145b8061028457506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606000805461029990611129565b80601f01602080910402602001604051908101604052809291908181526020018280546102c590611129565b80156103125780601f106102e757610100808354040283529160200191610312565b820191906000526020600020905b8154815290600101906020018083116102f557829003601f168201915b5050505050905090565b6000610327826106fe565b506000908152600460205260409020546001600160a01b031690565b600061034e826104ef565b9050806001600160a01b0316836001600160a01b0316036103c05760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b03821614806103dc57506103dc813361020a565b61044e5760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c00000060648201526084016103b7565b6104588383610765565b505050565b61046733826107e0565b6104c95760405162461bcd60e51b815260206004820152602d60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201526c1c881bdc88185c1c1c9bdd9959609a1b60648201526084016103b7565b61045883838361085f565b6104588383836040518060200160405280600081525061060c565b6000818152600260205260408120546001600160a01b0316806102845760405162461bcd60e51b815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e204944000000000000000060448201526064016103b7565b60006001600160a01b0382166105d25760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f74206120766160448201527f6c6964206f776e6572000000000000000000000000000000000000000000000060648201526084016103b7565b506001600160a01b031660009081526003602052604090205490565b60606001805461029990611129565b610608338383610a4c565b5050565b61061633836107e0565b6106785760405162461bcd60e51b815260206004820152602d60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201526c1c881bdc88185c1c1c9bdd9959609a1b60648201526084016103b7565b61068484848484610b1a565b50505050565b6060610695826106fe565b60006106ac60408051602081019091526000815290565b905060008151116106cc57604051806020016040528060008152506106f7565b806106d684610ba3565b6040516020016106e7929190611163565b6040516020818303038152906040525b9392505050565b6000818152600260205260409020546001600160a01b03166107625760405162461bcd60e51b815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e204944000000000000000060448201526064016103b7565b50565b6000818152600460205260409020805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03841690811790915581906107a7826104ef565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000806107ec836104ef565b9050806001600160a01b0316846001600160a01b0316148061083357506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b806108575750836001600160a01b031661084c8461031c565b6001600160a01b0316145b949350505050565b826001600160a01b0316610872826104ef565b6001600160a01b0316146108d65760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016103b7565b6001600160a01b0382166109385760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016103b7565b826001600160a01b031661094b826104ef565b6001600160a01b0316146109af5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016103b7565b6000818152600460209081526040808320805473ffffffffffffffffffffffffffffffffffffffff199081169091556001600160a01b0387811680865260038552838620805460001901905590871680865283862080546001019055868652600290945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b816001600160a01b0316836001600160a01b031603610aad5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016103b7565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b610b2584848461085f565b610b3184848484610c43565b6106845760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e746572000000000000000000000000000060648201526084016103b7565b60606000610bb083610d9a565b600101905060008167ffffffffffffffff811115610bd057610bd0611004565b6040519080825280601f01601f191660200182016040528015610bfa576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084610c0457509392505050565b60006001600160a01b0384163b15610d8f57604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290610c87903390899088908890600401611192565b6020604051808303816000875af1925050508015610cc2575060408051601f3d908101601f19168201909252610cbf918101906111ce565b60015b610d75573d808015610cf0576040519150601f19603f3d011682016040523d82523d6000602084013e610cf5565b606091505b508051600003610d6d5760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e746572000000000000000000000000000060648201526084016103b7565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050610857565b506001949350505050565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310610de3577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310610e0f576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310610e2d57662386f26fc10000830492506010015b6305f5e1008310610e45576305f5e100830492506008015b6127108310610e5957612710830492506004015b60648310610e6b576064830492506002015b600a83106102845760010192915050565b6001600160e01b03198116811461076257600080fd5b600060208284031215610ea457600080fd5b81356106f781610e7c565b60005b83811015610eca578181015183820152602001610eb2565b50506000910152565b60008151808452610eeb816020860160208601610eaf565b601f01601f19169290920160200192915050565b6020815260006106f76020830184610ed3565b600060208284031215610f2457600080fd5b5035919050565b80356001600160a01b0381168114610f4257600080fd5b919050565b60008060408385031215610f5a57600080fd5b610f6383610f2b565b946020939093013593505050565b600080600060608486031215610f8657600080fd5b610f8f84610f2b565b9250610f9d60208501610f2b565b9150604084013590509250925092565b600060208284031215610fbf57600080fd5b6106f782610f2b565b60008060408385031215610fdb57600080fd5b610fe483610f2b565b915060208301358015158114610ff957600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b6000806000806080858703121561103057600080fd5b61103985610f2b565b935061104760208601610f2b565b925060408501359150606085013567ffffffffffffffff8082111561106b57600080fd5b818701915087601f83011261107f57600080fd5b81358181111561109157611091611004565b604051601f8201601f19908116603f011681019083821181831017156110b9576110b9611004565b816040528281528a60208487010111156110d257600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b6000806040838503121561110957600080fd5b61111283610f2b565b915061112060208401610f2b565b90509250929050565b600181811c9082168061113d57607f821691505b60208210810361115d57634e487b7160e01b600052602260045260246000fd5b50919050565b60008351611175818460208801610eaf565b835190830190611189818360208801610eaf565b01949350505050565b60006001600160a01b038087168352808616602084015250836040830152608060608301526111c46080830184610ed3565b9695505050505050565b6000602082840312156111e057600080fd5b81516106f781610e7c56fea164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x14EC CODESIZE SUB DUP1 PUSH3 0x14EC DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x34 SWAP2 PUSH3 0x11F JUMP JUMPDEST PUSH1 0x0 PUSH3 0x42 DUP4 DUP3 PUSH3 0x218 JUMP JUMPDEST POP PUSH1 0x1 PUSH3 0x51 DUP3 DUP3 PUSH3 0x218 JUMP JUMPDEST POP POP POP PUSH3 0x2E4 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x82 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH3 0x9F JUMPI PUSH3 0x9F PUSH3 0x5A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP4 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP3 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH3 0xCA JUMPI PUSH3 0xCA PUSH3 0x5A JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP4 DUP2 MSTORE PUSH1 0x20 SWAP3 POP DUP7 DUP4 DUP6 DUP9 ADD ADD GT ISZERO PUSH3 0xE7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP2 POP JUMPDEST DUP4 DUP3 LT ISZERO PUSH3 0x10B JUMPI DUP6 DUP3 ADD DUP4 ADD MLOAD DUP2 DUP4 ADD DUP5 ADD MSTORE SWAP1 DUP3 ADD SWAP1 PUSH3 0xEC JUMP JUMPDEST PUSH1 0x0 SWAP4 DUP2 ADD SWAP1 SWAP3 ADD SWAP3 SWAP1 SWAP3 MSTORE SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x133 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH3 0x14B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x159 DUP7 DUP4 DUP8 ADD PUSH3 0x70 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD MLOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH3 0x170 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x17F DUP6 DUP3 DUP7 ADD PUSH3 0x70 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH3 0x19E JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH3 0x1BF JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH3 0x213 JUMPI PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP7 LT ISZERO PUSH3 0x1EE JUMPI POP DUP1 JUMPDEST PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x20F JUMPI DUP3 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x1FA JUMP JUMPDEST POP POP POP JUMPDEST POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH3 0x234 JUMPI PUSH3 0x234 PUSH3 0x5A JUMP JUMPDEST PUSH3 0x24C DUP2 PUSH3 0x245 DUP5 SLOAD PUSH3 0x189 JUMP JUMPDEST DUP5 PUSH3 0x1C5 JUMP JUMPDEST PUSH1 0x20 DUP1 PUSH1 0x1F DUP4 GT PUSH1 0x1 DUP2 EQ PUSH3 0x284 JUMPI PUSH1 0x0 DUP5 ISZERO PUSH3 0x26B JUMPI POP DUP6 DUP4 ADD MLOAD JUMPDEST PUSH1 0x0 NOT PUSH1 0x3 DUP7 SWAP1 SHL SHR NOT AND PUSH1 0x1 DUP6 SWAP1 SHL OR DUP6 SSTORE PUSH3 0x20F JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F NOT DUP7 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH3 0x2B5 JUMPI DUP9 DUP7 ADD MLOAD DUP3 SSTORE SWAP5 DUP5 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 DUP5 ADD PUSH3 0x294 JUMP JUMPDEST POP DUP6 DUP3 LT ISZERO PUSH3 0x2D4 JUMPI DUP8 DUP6 ADD MLOAD PUSH1 0x0 NOT PUSH1 0x3 DUP9 SWAP1 SHL PUSH1 0xF8 AND SHR NOT AND DUP2 SSTORE JUMPDEST POP POP POP POP POP PUSH1 0x1 SWAP1 DUP2 SHL ADD SWAP1 SSTORE POP JUMP JUMPDEST PUSH2 0x11F8 DUP1 PUSH3 0x2F4 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xDF JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6352211E GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xA22CB465 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x1C3 JUMPI DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0x1D6 JUMPI DUP1 PUSH4 0xC87B56DD EQ PUSH2 0x1E9 JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x1FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6352211E EQ PUSH2 0x187 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x19A JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x1BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x95EA7B3 GT PUSH2 0xBD JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x14C JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x161 JUMPI DUP1 PUSH4 0x42842E0E EQ PUSH2 0x174 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xE4 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x10C JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x121 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF7 PUSH2 0xF2 CALLDATASIZE PUSH1 0x4 PUSH2 0xE92 JUMP JUMPDEST PUSH2 0x238 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x114 PUSH2 0x28A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x103 SWAP2 SWAP1 PUSH2 0xEFF JUMP JUMPDEST PUSH2 0x134 PUSH2 0x12F CALLDATASIZE PUSH1 0x4 PUSH2 0xF12 JUMP JUMPDEST PUSH2 0x31C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x103 JUMP JUMPDEST PUSH2 0x15F PUSH2 0x15A CALLDATASIZE PUSH1 0x4 PUSH2 0xF47 JUMP JUMPDEST PUSH2 0x343 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x15F PUSH2 0x16F CALLDATASIZE PUSH1 0x4 PUSH2 0xF71 JUMP JUMPDEST PUSH2 0x45D JUMP JUMPDEST PUSH2 0x15F PUSH2 0x182 CALLDATASIZE PUSH1 0x4 PUSH2 0xF71 JUMP JUMPDEST PUSH2 0x4D4 JUMP JUMPDEST PUSH2 0x134 PUSH2 0x195 CALLDATASIZE PUSH1 0x4 PUSH2 0xF12 JUMP JUMPDEST PUSH2 0x4EF JUMP JUMPDEST PUSH2 0x1AD PUSH2 0x1A8 CALLDATASIZE PUSH1 0x4 PUSH2 0xFAD JUMP JUMPDEST PUSH2 0x554 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x103 JUMP JUMPDEST PUSH2 0x114 PUSH2 0x5EE JUMP JUMPDEST PUSH2 0x15F PUSH2 0x1D1 CALLDATASIZE PUSH1 0x4 PUSH2 0xFC8 JUMP JUMPDEST PUSH2 0x5FD JUMP JUMPDEST PUSH2 0x15F PUSH2 0x1E4 CALLDATASIZE PUSH1 0x4 PUSH2 0x101A JUMP JUMPDEST PUSH2 0x60C JUMP JUMPDEST PUSH2 0x114 PUSH2 0x1F7 CALLDATASIZE PUSH1 0x4 PUSH2 0xF12 JUMP JUMPDEST PUSH2 0x68A JUMP JUMPDEST PUSH2 0xF7 PUSH2 0x20A CALLDATASIZE PUSH1 0x4 PUSH2 0x10F6 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x80AC58CD PUSH1 0xE0 SHL EQ DUP1 PUSH2 0x269 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x5B5E139F PUSH1 0xE0 SHL EQ JUMPDEST DUP1 PUSH2 0x284 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 SLOAD PUSH2 0x299 SWAP1 PUSH2 0x1129 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x2C5 SWAP1 PUSH2 0x1129 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x312 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x2E7 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x312 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x2F5 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x327 DUP3 PUSH2 0x6FE JUMP JUMPDEST POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x34E DUP3 PUSH2 0x4EF JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x3C0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F76616C20746F2063757272656E74206F776E65 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x39 PUSH1 0xF9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND EQ DUP1 PUSH2 0x3DC JUMPI POP PUSH2 0x3DC DUP2 CALLER PUSH2 0x20A JUMP JUMPDEST PUSH2 0x44E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F76652063616C6C6572206973206E6F7420746F PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6B656E206F776E6572206F7220617070726F76656420666F7220616C6C000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B7 JUMP JUMPDEST PUSH2 0x458 DUP4 DUP4 PUSH2 0x765 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x467 CALLER DUP3 PUSH2 0x7E0 JUMP JUMPDEST PUSH2 0x4C9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A2063616C6C6572206973206E6F7420746F6B656E206F776E65 PUSH1 0x44 DUP3 ADD MSTORE PUSH13 0x1C881BDC88185C1C1C9BDD9959 PUSH1 0x9A SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B7 JUMP JUMPDEST PUSH2 0x458 DUP4 DUP4 DUP4 PUSH2 0x85F JUMP JUMPDEST PUSH2 0x458 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x60C JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP1 PUSH2 0x284 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20696E76616C696420746F6B656E2049440000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3B7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x5D2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A2061646472657373207A65726F206973206E6F742061207661 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6C6964206F776E65720000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B7 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 DUP1 SLOAD PUSH2 0x299 SWAP1 PUSH2 0x1129 JUMP JUMPDEST PUSH2 0x608 CALLER DUP4 DUP4 PUSH2 0xA4C JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x616 CALLER DUP4 PUSH2 0x7E0 JUMP JUMPDEST PUSH2 0x678 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A2063616C6C6572206973206E6F7420746F6B656E206F776E65 PUSH1 0x44 DUP3 ADD MSTORE PUSH13 0x1C881BDC88185C1C1C9BDD9959 PUSH1 0x9A SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B7 JUMP JUMPDEST PUSH2 0x684 DUP5 DUP5 DUP5 DUP5 PUSH2 0xB1A JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x695 DUP3 PUSH2 0x6FE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6AC PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE SWAP1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 MLOAD GT PUSH2 0x6CC JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x6F7 JUMP JUMPDEST DUP1 PUSH2 0x6D6 DUP5 PUSH2 0xBA3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x6E7 SWAP3 SWAP2 SWAP1 PUSH2 0x1163 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x762 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20696E76616C696420746F6B656E2049440000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3B7 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP2 SWAP1 PUSH2 0x7A7 DUP3 PUSH2 0x4EF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x7EC DUP4 PUSH2 0x4EF JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x833 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP9 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST DUP1 PUSH2 0x857 JUMPI POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x84C DUP5 PUSH2 0x31C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x872 DUP3 PUSH2 0x4EF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x8D6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E736665722066726F6D20696E636F727265637420 PUSH1 0x44 DUP3 ADD MSTORE PUSH5 0x37BBB732B9 PUSH1 0xD9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x938 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F20746865207A65726F20616464 PUSH1 0x44 DUP3 ADD MSTORE PUSH4 0x72657373 PUSH1 0xE0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B7 JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x94B DUP3 PUSH2 0x4EF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x9AF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E736665722066726F6D20696E636F727265637420 PUSH1 0x44 DUP3 ADD MSTORE PUSH5 0x37BBB732B9 PUSH1 0xD9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B7 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT SWAP1 DUP2 AND SWAP1 SWAP2 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND DUP1 DUP7 MSTORE PUSH1 0x3 DUP6 MSTORE DUP4 DUP7 KECCAK256 DUP1 SLOAD PUSH1 0x0 NOT ADD SWAP1 SSTORE SWAP1 DUP8 AND DUP1 DUP7 MSTORE DUP4 DUP7 KECCAK256 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE DUP7 DUP7 MSTORE PUSH1 0x2 SWAP1 SWAP5 MSTORE DUP3 DUP6 KECCAK256 DUP1 SLOAD SWAP1 SWAP3 AND DUP5 OR SWAP1 SWAP2 SSTORE SWAP1 MLOAD DUP5 SWAP4 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 LOG4 POP POP POP JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0xAAD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F766520746F2063616C6C657200000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3B7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND DUP7 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP2 MLOAD SWAP2 DUP3 MSTORE PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0xB25 DUP5 DUP5 DUP5 PUSH2 0x85F JUMP JUMPDEST PUSH2 0xB31 DUP5 DUP5 DUP5 DUP5 PUSH2 0xC43 JUMP JUMPDEST PUSH2 0x684 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x32 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F206E6F6E204552433732315265 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x63656976657220696D706C656D656E7465720000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B7 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0xBB0 DUP4 PUSH2 0xD9A JUMP JUMPDEST PUSH1 0x1 ADD SWAP1 POP PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xBD0 JUMPI PUSH2 0xBD0 PUSH2 0x1004 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xBFA JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP DUP2 DUP2 ADD PUSH1 0x20 ADD JUMPDEST PUSH1 0x0 NOT ADD PUSH32 0x3031323334353637383961626364656600000000000000000000000000000000 PUSH1 0xA DUP7 MOD BYTE DUP2 MSTORE8 PUSH1 0xA DUP6 DIV SWAP5 POP DUP5 PUSH2 0xC04 JUMPI POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO PUSH2 0xD8F JUMPI PUSH1 0x40 MLOAD PUSH4 0xA85BD01 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0x150B7A02 SWAP1 PUSH2 0xC87 SWAP1 CALLER SWAP1 DUP10 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x1192 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0xCC2 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0xCBF SWAP2 DUP2 ADD SWAP1 PUSH2 0x11CE JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0xD75 JUMPI RETURNDATASIZE DUP1 DUP1 ISZERO PUSH2 0xCF0 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xCF5 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP DUP1 MLOAD PUSH1 0x0 SUB PUSH2 0xD6D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x32 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F206E6F6E204552433732315265 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x63656976657220696D706C656D656E7465720000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B7 JUMP JUMPDEST DUP1 MLOAD DUP2 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH4 0xA85BD01 PUSH1 0xE1 SHL EQ SWAP1 POP PUSH2 0x857 JUMP JUMPDEST POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH27 0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F010000000000000000 DUP4 LT PUSH2 0xDE3 JUMPI PUSH27 0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F010000000000000000 DUP4 DIV SWAP3 POP PUSH1 0x40 ADD JUMPDEST PUSH14 0x4EE2D6D415B85ACEF8100000000 DUP4 LT PUSH2 0xE0F JUMPI PUSH14 0x4EE2D6D415B85ACEF8100000000 DUP4 DIV SWAP3 POP PUSH1 0x20 ADD JUMPDEST PUSH7 0x2386F26FC10000 DUP4 LT PUSH2 0xE2D JUMPI PUSH7 0x2386F26FC10000 DUP4 DIV SWAP3 POP PUSH1 0x10 ADD JUMPDEST PUSH4 0x5F5E100 DUP4 LT PUSH2 0xE45 JUMPI PUSH4 0x5F5E100 DUP4 DIV SWAP3 POP PUSH1 0x8 ADD JUMPDEST PUSH2 0x2710 DUP4 LT PUSH2 0xE59 JUMPI PUSH2 0x2710 DUP4 DIV SWAP3 POP PUSH1 0x4 ADD JUMPDEST PUSH1 0x64 DUP4 LT PUSH2 0xE6B JUMPI PUSH1 0x64 DUP4 DIV SWAP3 POP PUSH1 0x2 ADD JUMPDEST PUSH1 0xA DUP4 LT PUSH2 0x284 JUMPI PUSH1 0x1 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x762 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xEA4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x6F7 DUP2 PUSH2 0xE7C JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xECA JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xEB2 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0xEEB DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0xEAF JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x6F7 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0xED3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xF24 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xF42 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xF5A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF63 DUP4 PUSH2 0xF2B JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xF86 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF8F DUP5 PUSH2 0xF2B JUMP JUMPDEST SWAP3 POP PUSH2 0xF9D PUSH1 0x20 DUP6 ADD PUSH2 0xF2B JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xFBF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x6F7 DUP3 PUSH2 0xF2B JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xFDB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xFE4 DUP4 PUSH2 0xF2B JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xFF9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x1030 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1039 DUP6 PUSH2 0xF2B JUMP JUMPDEST SWAP4 POP PUSH2 0x1047 PUSH1 0x20 DUP7 ADD PUSH2 0xF2B JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x106B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x107F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x1091 JUMPI PUSH2 0x1091 PUSH2 0x1004 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x10B9 JUMPI PUSH2 0x10B9 PUSH2 0x1004 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP11 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x10D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1109 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1112 DUP4 PUSH2 0xF2B JUMP JUMPDEST SWAP2 POP PUSH2 0x1120 PUSH1 0x20 DUP5 ADD PUSH2 0xF2B JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x113D JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x115D JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP4 MLOAD PUSH2 0x1175 DUP2 DUP5 PUSH1 0x20 DUP9 ADD PUSH2 0xEAF JUMP JUMPDEST DUP4 MLOAD SWAP1 DUP4 ADD SWAP1 PUSH2 0x1189 DUP2 DUP4 PUSH1 0x20 DUP9 ADD PUSH2 0xEAF JUMP JUMPDEST ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND DUP4 MSTORE DUP1 DUP7 AND PUSH1 0x20 DUP5 ADD MSTORE POP DUP4 PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x80 PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x11C4 PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0xED3 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x11E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x6F7 DUP2 PUSH2 0xE7C JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"628:16377:29:-:0;;;1390:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1456:5;:13;1464:5;1456;:13;:::i;:::-;-1:-1:-1;1479:7:29;:17;1489:7;1479;:17;:::i;:::-;;1390:113;;628:16377;;14:127:92;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:840;200:5;253:3;246:4;238:6;234:17;230:27;220:55;;271:1;268;261:12;220:55;294:13;;-1:-1:-1;;;;;356:10:92;;;353:36;;;369:18;;:::i;:::-;444:2;438:9;412:2;498:13;;-1:-1:-1;;494:22:92;;;518:2;490:31;486:40;474:53;;;542:18;;;562:22;;;539:46;536:72;;;588:18;;:::i;:::-;628:10;624:2;617:22;663:2;655:6;648:18;685:4;675:14;;730:3;725:2;720;712:6;708:15;704:24;701:33;698:53;;;747:1;744;737:12;698:53;769:1;760:10;;779:133;793:2;790:1;787:9;779:133;;;881:14;;;877:23;;871:30;850:14;;;846:23;;839:63;804:10;;;;779:133;;;954:1;932:15;;;928:24;;;921:35;;;;936:6;146:840;-1:-1:-1;;;;146:840:92:o;991:562::-;1090:6;1098;1151:2;1139:9;1130:7;1126:23;1122:32;1119:52;;;1167:1;1164;1157:12;1119:52;1194:16;;-1:-1:-1;;;;;1259:14:92;;;1256:34;;;1286:1;1283;1276:12;1256:34;1309:61;1362:7;1353:6;1342:9;1338:22;1309:61;:::i;:::-;1299:71;;1416:2;1405:9;1401:18;1395:25;1379:41;;1445:2;1435:8;1432:16;1429:36;;;1461:1;1458;1451:12;1429:36;;1484:63;1539:7;1528:8;1517:9;1513:24;1484:63;:::i;:::-;1474:73;;;991:562;;;;;:::o;1558:380::-;1637:1;1633:12;;;;1680;;;1701:61;;1755:4;1747:6;1743:17;1733:27;;1701:61;1808:2;1800:6;1797:14;1777:18;1774:38;1771:161;;1854:10;1849:3;1845:20;1842:1;1835:31;1889:4;1886:1;1879:15;1917:4;1914:1;1907:15;1771:161;;1558:380;;;:::o;2069:545::-;2171:2;2166:3;2163:11;2160:448;;;2207:1;2232:5;2228:2;2221:17;2277:4;2273:2;2263:19;2347:2;2335:10;2331:19;2328:1;2324:27;2318:4;2314:38;2383:4;2371:10;2368:20;2365:47;;;-1:-1:-1;2406:4:92;2365:47;2461:2;2456:3;2452:12;2449:1;2445:20;2439:4;2435:31;2425:41;;2516:82;2534:2;2527:5;2524:13;2516:82;;;2579:17;;;2560:1;2549:13;2516:82;;;2520:3;;;2160:448;2069:545;;;:::o;2790:1352::-;2910:10;;-1:-1:-1;;;;;2932:30:92;;2929:56;;;2965:18;;:::i;:::-;2994:97;3084:6;3044:38;3076:4;3070:11;3044:38;:::i;:::-;3038:4;2994:97;:::i;:::-;3146:4;;3210:2;3199:14;;3227:1;3222:663;;;;3929:1;3946:6;3943:89;;;-1:-1:-1;3998:19:92;;;3992:26;3943:89;-1:-1:-1;;2747:1:92;2743:11;;;2739:24;2735:29;2725:40;2771:1;2767:11;;;2722:57;4045:81;;3192:944;;3222:663;2016:1;2009:14;;;2053:4;2040:18;;-1:-1:-1;;3258:20:92;;;3376:236;3390:7;3387:1;3384:14;3376:236;;;3479:19;;;3473:26;3458:42;;3571:27;;;;3539:1;3527:14;;;;3406:19;;3376:236;;;3380:3;3640:6;3631:7;3628:19;3625:201;;;3701:19;;;3695:26;-1:-1:-1;;3784:1:92;3780:14;;;3796:3;3776:24;3772:37;3768:42;3753:58;3738:74;;3625:201;-1:-1:-1;;;;;3872:1:92;3856:14;;;3852:22;3839:36;;-1:-1:-1;2790:1352:92:o;:::-;628:16377:29;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_afterTokenTransfer_8757":{"entryPoint":null,"id":8757,"parameterSlots":4,"returnSlots":0},"@_approve_8623":{"entryPoint":1893,"id":8623,"parameterSlots":2,"returnSlots":0},"@_baseURI_8060":{"entryPoint":null,"id":8060,"parameterSlots":0,"returnSlots":1},"@_beforeTokenTransfer_8744":{"entryPoint":null,"id":8744,"parameterSlots":4,"returnSlots":0},"@_checkOnERC721Received_8731":{"entryPoint":3139,"id":8731,"parameterSlots":4,"returnSlots":1},"@_exists_8292":{"entryPoint":null,"id":8292,"parameterSlots":1,"returnSlots":1},"@_isApprovedOrOwner_8326":{"entryPoint":2016,"id":8326,"parameterSlots":2,"returnSlots":1},"@_msgSender_9276":{"entryPoint":null,"id":9276,"parameterSlots":0,"returnSlots":1},"@_ownerOf_8274":{"entryPoint":null,"id":8274,"parameterSlots":1,"returnSlots":1},"@_requireMinted_8669":{"entryPoint":1790,"id":8669,"parameterSlots":1,"returnSlots":0},"@_safeTransfer_8261":{"entryPoint":2842,"id":8261,"parameterSlots":4,"returnSlots":0},"@_setApprovalForAll_8655":{"entryPoint":2636,"id":8655,"parameterSlots":3,"returnSlots":0},"@_transfer_8599":{"entryPoint":2143,"id":8599,"parameterSlots":3,"returnSlots":0},"@approve_8103":{"entryPoint":835,"id":8103,"parameterSlots":2,"returnSlots":0},"@balanceOf_7964":{"entryPoint":1364,"id":7964,"parameterSlots":1,"returnSlots":1},"@getApproved_8121":{"entryPoint":796,"id":8121,"parameterSlots":1,"returnSlots":1},"@isApprovedForAll_8156":{"entryPoint":null,"id":8156,"parameterSlots":2,"returnSlots":1},"@isContract_8952":{"entryPoint":null,"id":8952,"parameterSlots":1,"returnSlots":1},"@log10_10446":{"entryPoint":3482,"id":10446,"parameterSlots":1,"returnSlots":1},"@name_8002":{"entryPoint":650,"id":8002,"parameterSlots":0,"returnSlots":1},"@ownerOf_7992":{"entryPoint":1263,"id":7992,"parameterSlots":1,"returnSlots":1},"@safeTransferFrom_8202":{"entryPoint":1236,"id":8202,"parameterSlots":3,"returnSlots":0},"@safeTransferFrom_8232":{"entryPoint":1548,"id":8232,"parameterSlots":4,"returnSlots":0},"@setApprovalForAll_8138":{"entryPoint":1533,"id":8138,"parameterSlots":2,"returnSlots":0},"@supportsInterface_7940":{"entryPoint":568,"id":7940,"parameterSlots":1,"returnSlots":1},"@supportsInterface_9730":{"entryPoint":null,"id":9730,"parameterSlots":1,"returnSlots":1},"@symbol_8012":{"entryPoint":1518,"id":8012,"parameterSlots":0,"returnSlots":1},"@toString_9537":{"entryPoint":2979,"id":9537,"parameterSlots":1,"returnSlots":1},"@tokenURI_8051":{"entryPoint":1674,"id":8051,"parameterSlots":1,"returnSlots":1},"@transferFrom_8183":{"entryPoint":1117,"id":8183,"parameterSlots":3,"returnSlots":0},"abi_decode_address":{"entryPoint":3883,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_tuple_t_address":{"entryPoint":4013,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_address":{"entryPoint":4342,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_addresst_uint256":{"entryPoint":3953,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr":{"entryPoint":4122,"id":null,"parameterSlots":2,"returnSlots":4},"abi_decode_tuple_t_addresst_bool":{"entryPoint":4040,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_uint256":{"entryPoint":3911,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_bytes4":{"entryPoint":3730,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes4_fromMemory":{"entryPoint":4558,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256":{"entryPoint":3858,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_string":{"entryPoint":3795,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_packed_t_string_memory_ptr_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":4451,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address_t_address_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":4498,"id":null,"parameterSlots":5,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":3839,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_12a8e5623d251e191fe4a291d9a59bcc01a4db7a1f5c20fc8de44358c18308af__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_c6e14a63ffb144eeef7cce6988e5dce07c60a7e0a7b1ef25dbe18c61483e0a83__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"copy_memory_to_memory_with_cleanup":{"entryPoint":3759,"id":null,"parameterSlots":3,"returnSlots":0},"extract_byte_array_length":{"entryPoint":4393,"id":null,"parameterSlots":1,"returnSlots":1},"panic_error_0x12":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":4100,"id":null,"parameterSlots":0,"returnSlots":0},"validator_revert_bytes4":{"entryPoint":3708,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:10201:92","statements":[{"nodeType":"YulBlock","src":"6:3:92","statements":[]},{"body":{"nodeType":"YulBlock","src":"58:87:92","statements":[{"body":{"nodeType":"YulBlock","src":"123:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"132:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"135:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"125:6:92"},"nodeType":"YulFunctionCall","src":"125:12:92"},"nodeType":"YulExpressionStatement","src":"125:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"81:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"92:5:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"103:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"108:10:92","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"99:3:92"},"nodeType":"YulFunctionCall","src":"99:20:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"88:3:92"},"nodeType":"YulFunctionCall","src":"88:32:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"78:2:92"},"nodeType":"YulFunctionCall","src":"78:43:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"71:6:92"},"nodeType":"YulFunctionCall","src":"71:51:92"},"nodeType":"YulIf","src":"68:71:92"}]},"name":"validator_revert_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"47:5:92","type":""}],"src":"14:131:92"},{"body":{"nodeType":"YulBlock","src":"219:176:92","statements":[{"body":{"nodeType":"YulBlock","src":"265:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"274:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"277:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"267:6:92"},"nodeType":"YulFunctionCall","src":"267:12:92"},"nodeType":"YulExpressionStatement","src":"267:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"240:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"249:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"236:3:92"},"nodeType":"YulFunctionCall","src":"236:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"261:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"232:3:92"},"nodeType":"YulFunctionCall","src":"232:32:92"},"nodeType":"YulIf","src":"229:52:92"},{"nodeType":"YulVariableDeclaration","src":"290:36:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"316:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"303:12:92"},"nodeType":"YulFunctionCall","src":"303:23:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"294:5:92","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"359:5:92"}],"functionName":{"name":"validator_revert_bytes4","nodeType":"YulIdentifier","src":"335:23:92"},"nodeType":"YulFunctionCall","src":"335:30:92"},"nodeType":"YulExpressionStatement","src":"335:30:92"},{"nodeType":"YulAssignment","src":"374:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"384:5:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"374:6:92"}]}]},"name":"abi_decode_tuple_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"185:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"196:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"208:6:92","type":""}],"src":"150:245:92"},{"body":{"nodeType":"YulBlock","src":"495:92:92","statements":[{"nodeType":"YulAssignment","src":"505:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"517:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"528:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"513:3:92"},"nodeType":"YulFunctionCall","src":"513:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"505:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"547:9:92"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"572:6:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"565:6:92"},"nodeType":"YulFunctionCall","src":"565:14:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"558:6:92"},"nodeType":"YulFunctionCall","src":"558:22:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"540:6:92"},"nodeType":"YulFunctionCall","src":"540:41:92"},"nodeType":"YulExpressionStatement","src":"540:41:92"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"464:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"475:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"486:4:92","type":""}],"src":"400:187:92"},{"body":{"nodeType":"YulBlock","src":"658:184:92","statements":[{"nodeType":"YulVariableDeclaration","src":"668:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"677:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"672:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"737:63:92","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"762:3:92"},{"name":"i","nodeType":"YulIdentifier","src":"767:1:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"758:3:92"},"nodeType":"YulFunctionCall","src":"758:11:92"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"781:3:92"},{"name":"i","nodeType":"YulIdentifier","src":"786:1:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"777:3:92"},"nodeType":"YulFunctionCall","src":"777:11:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"771:5:92"},"nodeType":"YulFunctionCall","src":"771:18:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"751:6:92"},"nodeType":"YulFunctionCall","src":"751:39:92"},"nodeType":"YulExpressionStatement","src":"751:39:92"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"698:1:92"},{"name":"length","nodeType":"YulIdentifier","src":"701:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"695:2:92"},"nodeType":"YulFunctionCall","src":"695:13:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"709:19:92","statements":[{"nodeType":"YulAssignment","src":"711:15:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"720:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"723:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"716:3:92"},"nodeType":"YulFunctionCall","src":"716:10:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"711:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"691:3:92","statements":[]},"src":"687:113:92"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"820:3:92"},{"name":"length","nodeType":"YulIdentifier","src":"825:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"816:3:92"},"nodeType":"YulFunctionCall","src":"816:16:92"},{"kind":"number","nodeType":"YulLiteral","src":"834:1:92","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"809:6:92"},"nodeType":"YulFunctionCall","src":"809:27:92"},"nodeType":"YulExpressionStatement","src":"809:27:92"}]},"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"636:3:92","type":""},{"name":"dst","nodeType":"YulTypedName","src":"641:3:92","type":""},{"name":"length","nodeType":"YulTypedName","src":"646:6:92","type":""}],"src":"592:250:92"},{"body":{"nodeType":"YulBlock","src":"897:221:92","statements":[{"nodeType":"YulVariableDeclaration","src":"907:26:92","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"927:5:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"921:5:92"},"nodeType":"YulFunctionCall","src":"921:12:92"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"911:6:92","type":""}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"949:3:92"},{"name":"length","nodeType":"YulIdentifier","src":"954:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"942:6:92"},"nodeType":"YulFunctionCall","src":"942:19:92"},"nodeType":"YulExpressionStatement","src":"942:19:92"},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1009:5:92"},{"kind":"number","nodeType":"YulLiteral","src":"1016:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1005:3:92"},"nodeType":"YulFunctionCall","src":"1005:16:92"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1027:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"1032:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1023:3:92"},"nodeType":"YulFunctionCall","src":"1023:14:92"},{"name":"length","nodeType":"YulIdentifier","src":"1039:6:92"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"970:34:92"},"nodeType":"YulFunctionCall","src":"970:76:92"},"nodeType":"YulExpressionStatement","src":"970:76:92"},{"nodeType":"YulAssignment","src":"1055:57:92","value":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1070:3:92"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"1083:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"1091:2:92","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1079:3:92"},"nodeType":"YulFunctionCall","src":"1079:15:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1100:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"1096:3:92"},"nodeType":"YulFunctionCall","src":"1096:7:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1075:3:92"},"nodeType":"YulFunctionCall","src":"1075:29:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1066:3:92"},"nodeType":"YulFunctionCall","src":"1066:39:92"},{"kind":"number","nodeType":"YulLiteral","src":"1107:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1062:3:92"},"nodeType":"YulFunctionCall","src":"1062:50:92"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1055:3:92"}]}]},"name":"abi_encode_string","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"874:5:92","type":""},{"name":"pos","nodeType":"YulTypedName","src":"881:3:92","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"889:3:92","type":""}],"src":"847:271:92"},{"body":{"nodeType":"YulBlock","src":"1244:99:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1261:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1272:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1254:6:92"},"nodeType":"YulFunctionCall","src":"1254:21:92"},"nodeType":"YulExpressionStatement","src":"1254:21:92"},{"nodeType":"YulAssignment","src":"1284:53:92","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1310:6:92"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1322:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1333:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1318:3:92"},"nodeType":"YulFunctionCall","src":"1318:18:92"}],"functionName":{"name":"abi_encode_string","nodeType":"YulIdentifier","src":"1292:17:92"},"nodeType":"YulFunctionCall","src":"1292:45:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1284:4:92"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1213:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1224:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1235:4:92","type":""}],"src":"1123:220:92"},{"body":{"nodeType":"YulBlock","src":"1418:110:92","statements":[{"body":{"nodeType":"YulBlock","src":"1464:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1473:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1476:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1466:6:92"},"nodeType":"YulFunctionCall","src":"1466:12:92"},"nodeType":"YulExpressionStatement","src":"1466:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1439:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"1448:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1435:3:92"},"nodeType":"YulFunctionCall","src":"1435:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"1460:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1431:3:92"},"nodeType":"YulFunctionCall","src":"1431:32:92"},"nodeType":"YulIf","src":"1428:52:92"},{"nodeType":"YulAssignment","src":"1489:33:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1512:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1499:12:92"},"nodeType":"YulFunctionCall","src":"1499:23:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1489:6:92"}]}]},"name":"abi_decode_tuple_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1384:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1395:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1407:6:92","type":""}],"src":"1348:180:92"},{"body":{"nodeType":"YulBlock","src":"1634:125:92","statements":[{"nodeType":"YulAssignment","src":"1644:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1656:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1667:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1652:3:92"},"nodeType":"YulFunctionCall","src":"1652:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1644:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1686:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1701:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"1709:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1697:3:92"},"nodeType":"YulFunctionCall","src":"1697:55:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1679:6:92"},"nodeType":"YulFunctionCall","src":"1679:74:92"},"nodeType":"YulExpressionStatement","src":"1679:74:92"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1603:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1614:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1625:4:92","type":""}],"src":"1533:226:92"},{"body":{"nodeType":"YulBlock","src":"1813:147:92","statements":[{"nodeType":"YulAssignment","src":"1823:29:92","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1845:6:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1832:12:92"},"nodeType":"YulFunctionCall","src":"1832:20:92"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"1823:5:92"}]},{"body":{"nodeType":"YulBlock","src":"1938:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1947:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1950:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1940:6:92"},"nodeType":"YulFunctionCall","src":"1940:12:92"},"nodeType":"YulExpressionStatement","src":"1940:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1874:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1885:5:92"},{"kind":"number","nodeType":"YulLiteral","src":"1892:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1881:3:92"},"nodeType":"YulFunctionCall","src":"1881:54:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1871:2:92"},"nodeType":"YulFunctionCall","src":"1871:65:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1864:6:92"},"nodeType":"YulFunctionCall","src":"1864:73:92"},"nodeType":"YulIf","src":"1861:93:92"}]},"name":"abi_decode_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"1792:6:92","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"1803:5:92","type":""}],"src":"1764:196:92"},{"body":{"nodeType":"YulBlock","src":"2052:167:92","statements":[{"body":{"nodeType":"YulBlock","src":"2098:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2107:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2110:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2100:6:92"},"nodeType":"YulFunctionCall","src":"2100:12:92"},"nodeType":"YulExpressionStatement","src":"2100:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2073:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"2082:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2069:3:92"},"nodeType":"YulFunctionCall","src":"2069:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"2094:2:92","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2065:3:92"},"nodeType":"YulFunctionCall","src":"2065:32:92"},"nodeType":"YulIf","src":"2062:52:92"},{"nodeType":"YulAssignment","src":"2123:39:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2152:9:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"2133:18:92"},"nodeType":"YulFunctionCall","src":"2133:29:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2123:6:92"}]},{"nodeType":"YulAssignment","src":"2171:42:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2198:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2209:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2194:3:92"},"nodeType":"YulFunctionCall","src":"2194:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2181:12:92"},"nodeType":"YulFunctionCall","src":"2181:32:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"2171:6:92"}]}]},"name":"abi_decode_tuple_t_addresst_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2010:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2021:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2033:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2041:6:92","type":""}],"src":"1965:254:92"},{"body":{"nodeType":"YulBlock","src":"2328:224:92","statements":[{"body":{"nodeType":"YulBlock","src":"2374:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2383:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2386:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2376:6:92"},"nodeType":"YulFunctionCall","src":"2376:12:92"},"nodeType":"YulExpressionStatement","src":"2376:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2349:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"2358:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2345:3:92"},"nodeType":"YulFunctionCall","src":"2345:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"2370:2:92","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2341:3:92"},"nodeType":"YulFunctionCall","src":"2341:32:92"},"nodeType":"YulIf","src":"2338:52:92"},{"nodeType":"YulAssignment","src":"2399:39:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2428:9:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"2409:18:92"},"nodeType":"YulFunctionCall","src":"2409:29:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2399:6:92"}]},{"nodeType":"YulAssignment","src":"2447:48:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2480:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2491:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2476:3:92"},"nodeType":"YulFunctionCall","src":"2476:18:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"2457:18:92"},"nodeType":"YulFunctionCall","src":"2457:38:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"2447:6:92"}]},{"nodeType":"YulAssignment","src":"2504:42:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2531:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2542:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2527:3:92"},"nodeType":"YulFunctionCall","src":"2527:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2514:12:92"},"nodeType":"YulFunctionCall","src":"2514:32:92"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"2504:6:92"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2278:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2289:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2301:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2309:6:92","type":""},{"name":"value2","nodeType":"YulTypedName","src":"2317:6:92","type":""}],"src":"2224:328:92"},{"body":{"nodeType":"YulBlock","src":"2627:116:92","statements":[{"body":{"nodeType":"YulBlock","src":"2673:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2682:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2685:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2675:6:92"},"nodeType":"YulFunctionCall","src":"2675:12:92"},"nodeType":"YulExpressionStatement","src":"2675:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2648:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"2657:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2644:3:92"},"nodeType":"YulFunctionCall","src":"2644:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"2669:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2640:3:92"},"nodeType":"YulFunctionCall","src":"2640:32:92"},"nodeType":"YulIf","src":"2637:52:92"},{"nodeType":"YulAssignment","src":"2698:39:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2727:9:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"2708:18:92"},"nodeType":"YulFunctionCall","src":"2708:29:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2698:6:92"}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2593:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2604:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2616:6:92","type":""}],"src":"2557:186:92"},{"body":{"nodeType":"YulBlock","src":"2849:76:92","statements":[{"nodeType":"YulAssignment","src":"2859:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2871:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2882:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2867:3:92"},"nodeType":"YulFunctionCall","src":"2867:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2859:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2901:9:92"},{"name":"value0","nodeType":"YulIdentifier","src":"2912:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2894:6:92"},"nodeType":"YulFunctionCall","src":"2894:25:92"},"nodeType":"YulExpressionStatement","src":"2894:25:92"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2818:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"2829:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2840:4:92","type":""}],"src":"2748:177:92"},{"body":{"nodeType":"YulBlock","src":"3014:263:92","statements":[{"body":{"nodeType":"YulBlock","src":"3060:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3069:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3072:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3062:6:92"},"nodeType":"YulFunctionCall","src":"3062:12:92"},"nodeType":"YulExpressionStatement","src":"3062:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3035:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"3044:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3031:3:92"},"nodeType":"YulFunctionCall","src":"3031:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"3056:2:92","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3027:3:92"},"nodeType":"YulFunctionCall","src":"3027:32:92"},"nodeType":"YulIf","src":"3024:52:92"},{"nodeType":"YulAssignment","src":"3085:39:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3114:9:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"3095:18:92"},"nodeType":"YulFunctionCall","src":"3095:29:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3085:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"3133:45:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3163:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3174:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3159:3:92"},"nodeType":"YulFunctionCall","src":"3159:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3146:12:92"},"nodeType":"YulFunctionCall","src":"3146:32:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"3137:5:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"3231:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3240:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3243:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3233:6:92"},"nodeType":"YulFunctionCall","src":"3233:12:92"},"nodeType":"YulExpressionStatement","src":"3233:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3200:5:92"},{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3221:5:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3214:6:92"},"nodeType":"YulFunctionCall","src":"3214:13:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3207:6:92"},"nodeType":"YulFunctionCall","src":"3207:21:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"3197:2:92"},"nodeType":"YulFunctionCall","src":"3197:32:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3190:6:92"},"nodeType":"YulFunctionCall","src":"3190:40:92"},"nodeType":"YulIf","src":"3187:60:92"},{"nodeType":"YulAssignment","src":"3256:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"3266:5:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"3256:6:92"}]}]},"name":"abi_decode_tuple_t_addresst_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2972:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2983:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2995:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"3003:6:92","type":""}],"src":"2930:347:92"},{"body":{"nodeType":"YulBlock","src":"3314:95:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3331:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3338:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"3343:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"3334:3:92"},"nodeType":"YulFunctionCall","src":"3334:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3324:6:92"},"nodeType":"YulFunctionCall","src":"3324:31:92"},"nodeType":"YulExpressionStatement","src":"3324:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3371:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"3374:4:92","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3364:6:92"},"nodeType":"YulFunctionCall","src":"3364:15:92"},"nodeType":"YulExpressionStatement","src":"3364:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3395:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3398:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3388:6:92"},"nodeType":"YulFunctionCall","src":"3388:15:92"},"nodeType":"YulExpressionStatement","src":"3388:15:92"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"3282:127:92"},{"body":{"nodeType":"YulBlock","src":"3544:1008:92","statements":[{"body":{"nodeType":"YulBlock","src":"3591:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3600:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3603:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3593:6:92"},"nodeType":"YulFunctionCall","src":"3593:12:92"},"nodeType":"YulExpressionStatement","src":"3593:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3565:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"3574:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3561:3:92"},"nodeType":"YulFunctionCall","src":"3561:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"3586:3:92","type":"","value":"128"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3557:3:92"},"nodeType":"YulFunctionCall","src":"3557:33:92"},"nodeType":"YulIf","src":"3554:53:92"},{"nodeType":"YulAssignment","src":"3616:39:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3645:9:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"3626:18:92"},"nodeType":"YulFunctionCall","src":"3626:29:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3616:6:92"}]},{"nodeType":"YulAssignment","src":"3664:48:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3697:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3708:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3693:3:92"},"nodeType":"YulFunctionCall","src":"3693:18:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"3674:18:92"},"nodeType":"YulFunctionCall","src":"3674:38:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"3664:6:92"}]},{"nodeType":"YulAssignment","src":"3721:42:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3748:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3759:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3744:3:92"},"nodeType":"YulFunctionCall","src":"3744:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3731:12:92"},"nodeType":"YulFunctionCall","src":"3731:32:92"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"3721:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"3772:46:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3803:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3814:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3799:3:92"},"nodeType":"YulFunctionCall","src":"3799:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3786:12:92"},"nodeType":"YulFunctionCall","src":"3786:32:92"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"3776:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3827:28:92","value":{"kind":"number","nodeType":"YulLiteral","src":"3837:18:92","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"3831:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"3882:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3891:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3894:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3884:6:92"},"nodeType":"YulFunctionCall","src":"3884:12:92"},"nodeType":"YulExpressionStatement","src":"3884:12:92"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"3870:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"3878:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3867:2:92"},"nodeType":"YulFunctionCall","src":"3867:14:92"},"nodeType":"YulIf","src":"3864:34:92"},{"nodeType":"YulVariableDeclaration","src":"3907:32:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3921:9:92"},{"name":"offset","nodeType":"YulIdentifier","src":"3932:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3917:3:92"},"nodeType":"YulFunctionCall","src":"3917:22:92"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"3911:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"3987:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3996:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3999:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3989:6:92"},"nodeType":"YulFunctionCall","src":"3989:12:92"},"nodeType":"YulExpressionStatement","src":"3989:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"3966:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"3970:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3962:3:92"},"nodeType":"YulFunctionCall","src":"3962:13:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3977:7:92"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3958:3:92"},"nodeType":"YulFunctionCall","src":"3958:27:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3951:6:92"},"nodeType":"YulFunctionCall","src":"3951:35:92"},"nodeType":"YulIf","src":"3948:55:92"},{"nodeType":"YulVariableDeclaration","src":"4012:26:92","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"4035:2:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4022:12:92"},"nodeType":"YulFunctionCall","src":"4022:16:92"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"4016:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"4061:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"4063:16:92"},"nodeType":"YulFunctionCall","src":"4063:18:92"},"nodeType":"YulExpressionStatement","src":"4063:18:92"}]},"condition":{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"4053:2:92"},{"name":"_1","nodeType":"YulIdentifier","src":"4057:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4050:2:92"},"nodeType":"YulFunctionCall","src":"4050:10:92"},"nodeType":"YulIf","src":"4047:36:92"},{"nodeType":"YulVariableDeclaration","src":"4092:17:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4106:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"4102:3:92"},"nodeType":"YulFunctionCall","src":"4102:7:92"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"4096:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4118:23:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4138:2:92","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4132:5:92"},"nodeType":"YulFunctionCall","src":"4132:9:92"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"4122:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4150:71:92","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"4172:6:92"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"4196:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"4200:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4192:3:92"},"nodeType":"YulFunctionCall","src":"4192:13:92"},{"name":"_4","nodeType":"YulIdentifier","src":"4207:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4188:3:92"},"nodeType":"YulFunctionCall","src":"4188:22:92"},{"kind":"number","nodeType":"YulLiteral","src":"4212:2:92","type":"","value":"63"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4184:3:92"},"nodeType":"YulFunctionCall","src":"4184:31:92"},{"name":"_4","nodeType":"YulIdentifier","src":"4217:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4180:3:92"},"nodeType":"YulFunctionCall","src":"4180:40:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4168:3:92"},"nodeType":"YulFunctionCall","src":"4168:53:92"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"4154:10:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"4280:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"4282:16:92"},"nodeType":"YulFunctionCall","src":"4282:18:92"},"nodeType":"YulExpressionStatement","src":"4282:18:92"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"4239:10:92"},{"name":"_1","nodeType":"YulIdentifier","src":"4251:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4236:2:92"},"nodeType":"YulFunctionCall","src":"4236:18:92"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"4259:10:92"},{"name":"memPtr","nodeType":"YulIdentifier","src":"4271:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"4256:2:92"},"nodeType":"YulFunctionCall","src":"4256:22:92"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"4233:2:92"},"nodeType":"YulFunctionCall","src":"4233:46:92"},"nodeType":"YulIf","src":"4230:72:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4318:2:92","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"4322:10:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4311:6:92"},"nodeType":"YulFunctionCall","src":"4311:22:92"},"nodeType":"YulExpressionStatement","src":"4311:22:92"},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"4349:6:92"},{"name":"_3","nodeType":"YulIdentifier","src":"4357:2:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4342:6:92"},"nodeType":"YulFunctionCall","src":"4342:18:92"},"nodeType":"YulExpressionStatement","src":"4342:18:92"},{"body":{"nodeType":"YulBlock","src":"4406:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4415:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4418:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4408:6:92"},"nodeType":"YulFunctionCall","src":"4408:12:92"},"nodeType":"YulExpressionStatement","src":"4408:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"4383:2:92"},{"name":"_3","nodeType":"YulIdentifier","src":"4387:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4379:3:92"},"nodeType":"YulFunctionCall","src":"4379:11:92"},{"kind":"number","nodeType":"YulLiteral","src":"4392:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4375:3:92"},"nodeType":"YulFunctionCall","src":"4375:20:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4397:7:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4372:2:92"},"nodeType":"YulFunctionCall","src":"4372:33:92"},"nodeType":"YulIf","src":"4369:53:92"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"4448:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"4456:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4444:3:92"},"nodeType":"YulFunctionCall","src":"4444:15:92"},{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"4465:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"4469:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4461:3:92"},"nodeType":"YulFunctionCall","src":"4461:11:92"},{"name":"_3","nodeType":"YulIdentifier","src":"4474:2:92"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"4431:12:92"},"nodeType":"YulFunctionCall","src":"4431:46:92"},"nodeType":"YulExpressionStatement","src":"4431:46:92"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"4501:6:92"},{"name":"_3","nodeType":"YulIdentifier","src":"4509:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4497:3:92"},"nodeType":"YulFunctionCall","src":"4497:15:92"},{"kind":"number","nodeType":"YulLiteral","src":"4514:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4493:3:92"},"nodeType":"YulFunctionCall","src":"4493:24:92"},{"kind":"number","nodeType":"YulLiteral","src":"4519:1:92","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4486:6:92"},"nodeType":"YulFunctionCall","src":"4486:35:92"},"nodeType":"YulExpressionStatement","src":"4486:35:92"},{"nodeType":"YulAssignment","src":"4530:16:92","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"4540:6:92"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"4530:6:92"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3486:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3497:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3509:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"3517:6:92","type":""},{"name":"value2","nodeType":"YulTypedName","src":"3525:6:92","type":""},{"name":"value3","nodeType":"YulTypedName","src":"3533:6:92","type":""}],"src":"3414:1138:92"},{"body":{"nodeType":"YulBlock","src":"4644:173:92","statements":[{"body":{"nodeType":"YulBlock","src":"4690:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4699:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4702:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4692:6:92"},"nodeType":"YulFunctionCall","src":"4692:12:92"},"nodeType":"YulExpressionStatement","src":"4692:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"4665:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"4674:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4661:3:92"},"nodeType":"YulFunctionCall","src":"4661:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"4686:2:92","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4657:3:92"},"nodeType":"YulFunctionCall","src":"4657:32:92"},"nodeType":"YulIf","src":"4654:52:92"},{"nodeType":"YulAssignment","src":"4715:39:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4744:9:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"4725:18:92"},"nodeType":"YulFunctionCall","src":"4725:29:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"4715:6:92"}]},{"nodeType":"YulAssignment","src":"4763:48:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4796:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4807:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4792:3:92"},"nodeType":"YulFunctionCall","src":"4792:18:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"4773:18:92"},"nodeType":"YulFunctionCall","src":"4773:38:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"4763:6:92"}]}]},"name":"abi_decode_tuple_t_addresst_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4602:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"4613:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"4625:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"4633:6:92","type":""}],"src":"4557:260:92"},{"body":{"nodeType":"YulBlock","src":"4877:325:92","statements":[{"nodeType":"YulAssignment","src":"4887:22:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4901:1:92","type":"","value":"1"},{"name":"data","nodeType":"YulIdentifier","src":"4904:4:92"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"4897:3:92"},"nodeType":"YulFunctionCall","src":"4897:12:92"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"4887:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"4918:38:92","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"4948:4:92"},{"kind":"number","nodeType":"YulLiteral","src":"4954:1:92","type":"","value":"1"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4944:3:92"},"nodeType":"YulFunctionCall","src":"4944:12:92"},"variables":[{"name":"outOfPlaceEncoding","nodeType":"YulTypedName","src":"4922:18:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"4995:31:92","statements":[{"nodeType":"YulAssignment","src":"4997:27:92","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"5011:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"5019:4:92","type":"","value":"0x7f"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5007:3:92"},"nodeType":"YulFunctionCall","src":"5007:17:92"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"4997:6:92"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"4975:18:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"4968:6:92"},"nodeType":"YulFunctionCall","src":"4968:26:92"},"nodeType":"YulIf","src":"4965:61:92"},{"body":{"nodeType":"YulBlock","src":"5085:111:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5106:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5113:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"5118:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"5109:3:92"},"nodeType":"YulFunctionCall","src":"5109:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5099:6:92"},"nodeType":"YulFunctionCall","src":"5099:31:92"},"nodeType":"YulExpressionStatement","src":"5099:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5150:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"5153:4:92","type":"","value":"0x22"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5143:6:92"},"nodeType":"YulFunctionCall","src":"5143:15:92"},"nodeType":"YulExpressionStatement","src":"5143:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5178:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5181:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5171:6:92"},"nodeType":"YulFunctionCall","src":"5171:15:92"},"nodeType":"YulExpressionStatement","src":"5171:15:92"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"5041:18:92"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"5064:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"5072:2:92","type":"","value":"32"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"5061:2:92"},"nodeType":"YulFunctionCall","src":"5061:14:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"5038:2:92"},"nodeType":"YulFunctionCall","src":"5038:38:92"},"nodeType":"YulIf","src":"5035:161:92"}]},"name":"extract_byte_array_length","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"4857:4:92","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"4866:6:92","type":""}],"src":"4822:380:92"},{"body":{"nodeType":"YulBlock","src":"5381:223:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5398:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5409:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5391:6:92"},"nodeType":"YulFunctionCall","src":"5391:21:92"},"nodeType":"YulExpressionStatement","src":"5391:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5432:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5443:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5428:3:92"},"nodeType":"YulFunctionCall","src":"5428:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"5448:2:92","type":"","value":"33"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5421:6:92"},"nodeType":"YulFunctionCall","src":"5421:30:92"},"nodeType":"YulExpressionStatement","src":"5421:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5471:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5482:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5467:3:92"},"nodeType":"YulFunctionCall","src":"5467:18:92"},{"hexValue":"4552433732313a20617070726f76616c20746f2063757272656e74206f776e65","kind":"string","nodeType":"YulLiteral","src":"5487:34:92","type":"","value":"ERC721: approval to current owne"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5460:6:92"},"nodeType":"YulFunctionCall","src":"5460:62:92"},"nodeType":"YulExpressionStatement","src":"5460:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5542:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5553:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5538:3:92"},"nodeType":"YulFunctionCall","src":"5538:18:92"},{"hexValue":"72","kind":"string","nodeType":"YulLiteral","src":"5558:3:92","type":"","value":"r"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5531:6:92"},"nodeType":"YulFunctionCall","src":"5531:31:92"},"nodeType":"YulExpressionStatement","src":"5531:31:92"},{"nodeType":"YulAssignment","src":"5571:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5583:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5594:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5579:3:92"},"nodeType":"YulFunctionCall","src":"5579:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5571:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5358:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5372:4:92","type":""}],"src":"5207:397:92"},{"body":{"nodeType":"YulBlock","src":"5783:251:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5800:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5811:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5793:6:92"},"nodeType":"YulFunctionCall","src":"5793:21:92"},"nodeType":"YulExpressionStatement","src":"5793:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5834:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5845:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5830:3:92"},"nodeType":"YulFunctionCall","src":"5830:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"5850:2:92","type":"","value":"61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5823:6:92"},"nodeType":"YulFunctionCall","src":"5823:30:92"},"nodeType":"YulExpressionStatement","src":"5823:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5873:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5884:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5869:3:92"},"nodeType":"YulFunctionCall","src":"5869:18:92"},{"hexValue":"4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f","kind":"string","nodeType":"YulLiteral","src":"5889:34:92","type":"","value":"ERC721: approve caller is not to"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5862:6:92"},"nodeType":"YulFunctionCall","src":"5862:62:92"},"nodeType":"YulExpressionStatement","src":"5862:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5944:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5955:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5940:3:92"},"nodeType":"YulFunctionCall","src":"5940:18:92"},{"hexValue":"6b656e206f776e6572206f7220617070726f76656420666f7220616c6c","kind":"string","nodeType":"YulLiteral","src":"5960:31:92","type":"","value":"ken owner or approved for all"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5933:6:92"},"nodeType":"YulFunctionCall","src":"5933:59:92"},"nodeType":"YulExpressionStatement","src":"5933:59:92"},{"nodeType":"YulAssignment","src":"6001:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6013:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6024:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6009:3:92"},"nodeType":"YulFunctionCall","src":"6009:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6001:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_c6e14a63ffb144eeef7cce6988e5dce07c60a7e0a7b1ef25dbe18c61483e0a83__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5760:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5774:4:92","type":""}],"src":"5609:425:92"},{"body":{"nodeType":"YulBlock","src":"6213:235:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6230:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6241:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6223:6:92"},"nodeType":"YulFunctionCall","src":"6223:21:92"},"nodeType":"YulExpressionStatement","src":"6223:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6264:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6275:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6260:3:92"},"nodeType":"YulFunctionCall","src":"6260:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"6280:2:92","type":"","value":"45"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6253:6:92"},"nodeType":"YulFunctionCall","src":"6253:30:92"},"nodeType":"YulExpressionStatement","src":"6253:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6303:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6314:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6299:3:92"},"nodeType":"YulFunctionCall","src":"6299:18:92"},{"hexValue":"4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e65","kind":"string","nodeType":"YulLiteral","src":"6319:34:92","type":"","value":"ERC721: caller is not token owne"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6292:6:92"},"nodeType":"YulFunctionCall","src":"6292:62:92"},"nodeType":"YulExpressionStatement","src":"6292:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6374:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6385:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6370:3:92"},"nodeType":"YulFunctionCall","src":"6370:18:92"},{"hexValue":"72206f7220617070726f766564","kind":"string","nodeType":"YulLiteral","src":"6390:15:92","type":"","value":"r or approved"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6363:6:92"},"nodeType":"YulFunctionCall","src":"6363:43:92"},"nodeType":"YulExpressionStatement","src":"6363:43:92"},{"nodeType":"YulAssignment","src":"6415:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6427:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6438:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6423:3:92"},"nodeType":"YulFunctionCall","src":"6423:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6415:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_12a8e5623d251e191fe4a291d9a59bcc01a4db7a1f5c20fc8de44358c18308af__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6190:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6204:4:92","type":""}],"src":"6039:409:92"},{"body":{"nodeType":"YulBlock","src":"6627:174:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6644:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6655:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6637:6:92"},"nodeType":"YulFunctionCall","src":"6637:21:92"},"nodeType":"YulExpressionStatement","src":"6637:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6678:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6689:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6674:3:92"},"nodeType":"YulFunctionCall","src":"6674:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"6694:2:92","type":"","value":"24"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6667:6:92"},"nodeType":"YulFunctionCall","src":"6667:30:92"},"nodeType":"YulExpressionStatement","src":"6667:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6717:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6728:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6713:3:92"},"nodeType":"YulFunctionCall","src":"6713:18:92"},{"hexValue":"4552433732313a20696e76616c696420746f6b656e204944","kind":"string","nodeType":"YulLiteral","src":"6733:26:92","type":"","value":"ERC721: invalid token ID"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6706:6:92"},"nodeType":"YulFunctionCall","src":"6706:54:92"},"nodeType":"YulExpressionStatement","src":"6706:54:92"},{"nodeType":"YulAssignment","src":"6769:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6781:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6792:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6777:3:92"},"nodeType":"YulFunctionCall","src":"6777:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6769:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6604:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6618:4:92","type":""}],"src":"6453:348:92"},{"body":{"nodeType":"YulBlock","src":"6980:231:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6997:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7008:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6990:6:92"},"nodeType":"YulFunctionCall","src":"6990:21:92"},"nodeType":"YulExpressionStatement","src":"6990:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7031:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7042:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7027:3:92"},"nodeType":"YulFunctionCall","src":"7027:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"7047:2:92","type":"","value":"41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7020:6:92"},"nodeType":"YulFunctionCall","src":"7020:30:92"},"nodeType":"YulExpressionStatement","src":"7020:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7070:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7081:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7066:3:92"},"nodeType":"YulFunctionCall","src":"7066:18:92"},{"hexValue":"4552433732313a2061646472657373207a65726f206973206e6f742061207661","kind":"string","nodeType":"YulLiteral","src":"7086:34:92","type":"","value":"ERC721: address zero is not a va"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7059:6:92"},"nodeType":"YulFunctionCall","src":"7059:62:92"},"nodeType":"YulExpressionStatement","src":"7059:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7141:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7152:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7137:3:92"},"nodeType":"YulFunctionCall","src":"7137:18:92"},{"hexValue":"6c6964206f776e6572","kind":"string","nodeType":"YulLiteral","src":"7157:11:92","type":"","value":"lid owner"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7130:6:92"},"nodeType":"YulFunctionCall","src":"7130:39:92"},"nodeType":"YulExpressionStatement","src":"7130:39:92"},{"nodeType":"YulAssignment","src":"7178:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7190:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7201:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7186:3:92"},"nodeType":"YulFunctionCall","src":"7186:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7178:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6957:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6971:4:92","type":""}],"src":"6806:405:92"},{"body":{"nodeType":"YulBlock","src":"7403:309:92","statements":[{"nodeType":"YulVariableDeclaration","src":"7413:27:92","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7433:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"7427:5:92"},"nodeType":"YulFunctionCall","src":"7427:13:92"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"7417:6:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7488:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"7496:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7484:3:92"},"nodeType":"YulFunctionCall","src":"7484:17:92"},{"name":"pos","nodeType":"YulIdentifier","src":"7503:3:92"},{"name":"length","nodeType":"YulIdentifier","src":"7508:6:92"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"7449:34:92"},"nodeType":"YulFunctionCall","src":"7449:66:92"},"nodeType":"YulExpressionStatement","src":"7449:66:92"},{"nodeType":"YulVariableDeclaration","src":"7524:29:92","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"7541:3:92"},{"name":"length","nodeType":"YulIdentifier","src":"7546:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7537:3:92"},"nodeType":"YulFunctionCall","src":"7537:16:92"},"variables":[{"name":"end_1","nodeType":"YulTypedName","src":"7528:5:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"7562:29:92","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"7584:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"7578:5:92"},"nodeType":"YulFunctionCall","src":"7578:13:92"},"variables":[{"name":"length_1","nodeType":"YulTypedName","src":"7566:8:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"7639:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"7647:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7635:3:92"},"nodeType":"YulFunctionCall","src":"7635:17:92"},{"name":"end_1","nodeType":"YulIdentifier","src":"7654:5:92"},{"name":"length_1","nodeType":"YulIdentifier","src":"7661:8:92"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"7600:34:92"},"nodeType":"YulFunctionCall","src":"7600:70:92"},"nodeType":"YulExpressionStatement","src":"7600:70:92"},{"nodeType":"YulAssignment","src":"7679:27:92","value":{"arguments":[{"name":"end_1","nodeType":"YulIdentifier","src":"7690:5:92"},{"name":"length_1","nodeType":"YulIdentifier","src":"7697:8:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7686:3:92"},"nodeType":"YulFunctionCall","src":"7686:20:92"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"7679:3:92"}]}]},"name":"abi_encode_tuple_packed_t_string_memory_ptr_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"7371:3:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"7376:6:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"7384:6:92","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"7395:3:92","type":""}],"src":"7216:496:92"},{"body":{"nodeType":"YulBlock","src":"7891:227:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7908:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7919:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7901:6:92"},"nodeType":"YulFunctionCall","src":"7901:21:92"},"nodeType":"YulExpressionStatement","src":"7901:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7942:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7953:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7938:3:92"},"nodeType":"YulFunctionCall","src":"7938:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"7958:2:92","type":"","value":"37"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7931:6:92"},"nodeType":"YulFunctionCall","src":"7931:30:92"},"nodeType":"YulExpressionStatement","src":"7931:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7981:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7992:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7977:3:92"},"nodeType":"YulFunctionCall","src":"7977:18:92"},{"hexValue":"4552433732313a207472616e736665722066726f6d20696e636f727265637420","kind":"string","nodeType":"YulLiteral","src":"7997:34:92","type":"","value":"ERC721: transfer from incorrect "}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7970:6:92"},"nodeType":"YulFunctionCall","src":"7970:62:92"},"nodeType":"YulExpressionStatement","src":"7970:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8052:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8063:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8048:3:92"},"nodeType":"YulFunctionCall","src":"8048:18:92"},{"hexValue":"6f776e6572","kind":"string","nodeType":"YulLiteral","src":"8068:7:92","type":"","value":"owner"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8041:6:92"},"nodeType":"YulFunctionCall","src":"8041:35:92"},"nodeType":"YulExpressionStatement","src":"8041:35:92"},{"nodeType":"YulAssignment","src":"8085:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8097:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8108:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8093:3:92"},"nodeType":"YulFunctionCall","src":"8093:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"8085:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7868:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7882:4:92","type":""}],"src":"7717:401:92"},{"body":{"nodeType":"YulBlock","src":"8297:226:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8314:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8325:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8307:6:92"},"nodeType":"YulFunctionCall","src":"8307:21:92"},"nodeType":"YulExpressionStatement","src":"8307:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8348:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8359:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8344:3:92"},"nodeType":"YulFunctionCall","src":"8344:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"8364:2:92","type":"","value":"36"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8337:6:92"},"nodeType":"YulFunctionCall","src":"8337:30:92"},"nodeType":"YulExpressionStatement","src":"8337:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8387:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8398:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8383:3:92"},"nodeType":"YulFunctionCall","src":"8383:18:92"},{"hexValue":"4552433732313a207472616e7366657220746f20746865207a65726f20616464","kind":"string","nodeType":"YulLiteral","src":"8403:34:92","type":"","value":"ERC721: transfer to the zero add"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8376:6:92"},"nodeType":"YulFunctionCall","src":"8376:62:92"},"nodeType":"YulExpressionStatement","src":"8376:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8458:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8469:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8454:3:92"},"nodeType":"YulFunctionCall","src":"8454:18:92"},{"hexValue":"72657373","kind":"string","nodeType":"YulLiteral","src":"8474:6:92","type":"","value":"ress"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8447:6:92"},"nodeType":"YulFunctionCall","src":"8447:34:92"},"nodeType":"YulExpressionStatement","src":"8447:34:92"},{"nodeType":"YulAssignment","src":"8490:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8502:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8513:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8498:3:92"},"nodeType":"YulFunctionCall","src":"8498:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"8490:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8274:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"8288:4:92","type":""}],"src":"8123:400:92"},{"body":{"nodeType":"YulBlock","src":"8702:175:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8719:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8730:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8712:6:92"},"nodeType":"YulFunctionCall","src":"8712:21:92"},"nodeType":"YulExpressionStatement","src":"8712:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8753:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8764:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8749:3:92"},"nodeType":"YulFunctionCall","src":"8749:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"8769:2:92","type":"","value":"25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8742:6:92"},"nodeType":"YulFunctionCall","src":"8742:30:92"},"nodeType":"YulExpressionStatement","src":"8742:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8792:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8803:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8788:3:92"},"nodeType":"YulFunctionCall","src":"8788:18:92"},{"hexValue":"4552433732313a20617070726f766520746f2063616c6c6572","kind":"string","nodeType":"YulLiteral","src":"8808:27:92","type":"","value":"ERC721: approve to caller"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8781:6:92"},"nodeType":"YulFunctionCall","src":"8781:55:92"},"nodeType":"YulExpressionStatement","src":"8781:55:92"},{"nodeType":"YulAssignment","src":"8845:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8857:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8868:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8853:3:92"},"nodeType":"YulFunctionCall","src":"8853:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"8845:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8679:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"8693:4:92","type":""}],"src":"8528:349:92"},{"body":{"nodeType":"YulBlock","src":"9056:240:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9073:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9084:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9066:6:92"},"nodeType":"YulFunctionCall","src":"9066:21:92"},"nodeType":"YulExpressionStatement","src":"9066:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9107:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9118:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9103:3:92"},"nodeType":"YulFunctionCall","src":"9103:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"9123:2:92","type":"","value":"50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9096:6:92"},"nodeType":"YulFunctionCall","src":"9096:30:92"},"nodeType":"YulExpressionStatement","src":"9096:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9146:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9157:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9142:3:92"},"nodeType":"YulFunctionCall","src":"9142:18:92"},{"hexValue":"4552433732313a207472616e7366657220746f206e6f6e204552433732315265","kind":"string","nodeType":"YulLiteral","src":"9162:34:92","type":"","value":"ERC721: transfer to non ERC721Re"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9135:6:92"},"nodeType":"YulFunctionCall","src":"9135:62:92"},"nodeType":"YulExpressionStatement","src":"9135:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9217:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9228:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9213:3:92"},"nodeType":"YulFunctionCall","src":"9213:18:92"},{"hexValue":"63656976657220696d706c656d656e746572","kind":"string","nodeType":"YulLiteral","src":"9233:20:92","type":"","value":"ceiver implementer"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9206:6:92"},"nodeType":"YulFunctionCall","src":"9206:48:92"},"nodeType":"YulExpressionStatement","src":"9206:48:92"},{"nodeType":"YulAssignment","src":"9263:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9275:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9286:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9271:3:92"},"nodeType":"YulFunctionCall","src":"9271:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"9263:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9033:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"9047:4:92","type":""}],"src":"8882:414:92"},{"body":{"nodeType":"YulBlock","src":"9333:95:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9350:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9357:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"9362:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"9353:3:92"},"nodeType":"YulFunctionCall","src":"9353:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9343:6:92"},"nodeType":"YulFunctionCall","src":"9343:31:92"},"nodeType":"YulExpressionStatement","src":"9343:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9390:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"9393:4:92","type":"","value":"0x12"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9383:6:92"},"nodeType":"YulFunctionCall","src":"9383:15:92"},"nodeType":"YulExpressionStatement","src":"9383:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9414:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"9417:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9407:6:92"},"nodeType":"YulFunctionCall","src":"9407:15:92"},"nodeType":"YulExpressionStatement","src":"9407:15:92"}]},"name":"panic_error_0x12","nodeType":"YulFunctionDefinition","src":"9301:127:92"},{"body":{"nodeType":"YulBlock","src":"9636:309:92","statements":[{"nodeType":"YulVariableDeclaration","src":"9646:52:92","value":{"kind":"number","nodeType":"YulLiteral","src":"9656:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"9650:2:92","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9714:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"9729:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"9737:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"9725:3:92"},"nodeType":"YulFunctionCall","src":"9725:15:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9707:6:92"},"nodeType":"YulFunctionCall","src":"9707:34:92"},"nodeType":"YulExpressionStatement","src":"9707:34:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9761:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9772:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9757:3:92"},"nodeType":"YulFunctionCall","src":"9757:18:92"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"9781:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"9789:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"9777:3:92"},"nodeType":"YulFunctionCall","src":"9777:15:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9750:6:92"},"nodeType":"YulFunctionCall","src":"9750:43:92"},"nodeType":"YulExpressionStatement","src":"9750:43:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9813:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9824:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9809:3:92"},"nodeType":"YulFunctionCall","src":"9809:18:92"},{"name":"value2","nodeType":"YulIdentifier","src":"9829:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9802:6:92"},"nodeType":"YulFunctionCall","src":"9802:34:92"},"nodeType":"YulExpressionStatement","src":"9802:34:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9856:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9867:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9852:3:92"},"nodeType":"YulFunctionCall","src":"9852:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"9872:3:92","type":"","value":"128"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9845:6:92"},"nodeType":"YulFunctionCall","src":"9845:31:92"},"nodeType":"YulExpressionStatement","src":"9845:31:92"},{"nodeType":"YulAssignment","src":"9885:54:92","value":{"arguments":[{"name":"value3","nodeType":"YulIdentifier","src":"9911:6:92"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9923:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9934:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9919:3:92"},"nodeType":"YulFunctionCall","src":"9919:19:92"}],"functionName":{"name":"abi_encode_string","nodeType":"YulIdentifier","src":"9893:17:92"},"nodeType":"YulFunctionCall","src":"9893:46:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"9885:4:92"}]}]},"name":"abi_encode_tuple_t_address_t_address_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9581:9:92","type":""},{"name":"value3","nodeType":"YulTypedName","src":"9592:6:92","type":""},{"name":"value2","nodeType":"YulTypedName","src":"9600:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"9608:6:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"9616:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"9627:4:92","type":""}],"src":"9433:512:92"},{"body":{"nodeType":"YulBlock","src":"10030:169:92","statements":[{"body":{"nodeType":"YulBlock","src":"10076:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10085:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"10088:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"10078:6:92"},"nodeType":"YulFunctionCall","src":"10078:12:92"},"nodeType":"YulExpressionStatement","src":"10078:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"10051:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"10060:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"10047:3:92"},"nodeType":"YulFunctionCall","src":"10047:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"10072:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"10043:3:92"},"nodeType":"YulFunctionCall","src":"10043:32:92"},"nodeType":"YulIf","src":"10040:52:92"},{"nodeType":"YulVariableDeclaration","src":"10101:29:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10120:9:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"10114:5:92"},"nodeType":"YulFunctionCall","src":"10114:16:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"10105:5:92","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"10163:5:92"}],"functionName":{"name":"validator_revert_bytes4","nodeType":"YulIdentifier","src":"10139:23:92"},"nodeType":"YulFunctionCall","src":"10139:30:92"},"nodeType":"YulExpressionStatement","src":"10139:30:92"},{"nodeType":"YulAssignment","src":"10178:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"10188:5:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"10178:6:92"}]}]},"name":"abi_decode_tuple_t_bytes4_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9996:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"10007:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"10019:6:92","type":""}],"src":"9950:249:92"}]},"contents":"{\n { }\n function validator_revert_bytes4(value)\n {\n if iszero(eq(value, and(value, shl(224, 0xffffffff)))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_bytes4(value)\n value0 := value\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function copy_memory_to_memory_with_cleanup(src, dst, length)\n {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n mstore(add(dst, length), 0)\n }\n function abi_encode_string(value, pos) -> end\n {\n let length := mload(value)\n mstore(pos, length)\n copy_memory_to_memory_with_cleanup(add(value, 0x20), add(pos, 0x20), length)\n end := add(add(pos, and(add(length, 31), not(31))), 0x20)\n }\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n mstore(headStart, 32)\n tail := abi_encode_string(value0, add(headStart, 32))\n }\n function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := calldataload(headStart)\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_decode_address(offset) -> value\n {\n value := calldataload(offset)\n if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := calldataload(add(headStart, 32))\n }\n function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := abi_decode_address(add(headStart, 32))\n value2 := calldataload(add(headStart, 64))\n }\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_decode_tuple_t_addresst_bool(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n let value := calldataload(add(headStart, 32))\n if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n value1 := value\n }\n function panic_error_0x41()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n {\n if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := abi_decode_address(add(headStart, 32))\n value2 := calldataload(add(headStart, 64))\n let offset := calldataload(add(headStart, 96))\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n let _2 := add(headStart, offset)\n if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n let _3 := calldataload(_2)\n if gt(_3, _1) { panic_error_0x41() }\n let _4 := not(31)\n let memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n mstore(memPtr, _3)\n if gt(add(add(_2, _3), 32), dataEnd) { revert(0, 0) }\n calldatacopy(add(memPtr, 32), add(_2, 32), _3)\n mstore(add(add(memPtr, _3), 32), 0)\n value3 := memPtr\n }\n function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := abi_decode_address(add(headStart, 32))\n }\n function extract_byte_array_length(data) -> length\n {\n length := shr(1, data)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n if eq(outOfPlaceEncoding, lt(length, 32))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n }\n function abi_encode_tuple_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 33)\n mstore(add(headStart, 64), \"ERC721: approval to current owne\")\n mstore(add(headStart, 96), \"r\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_c6e14a63ffb144eeef7cce6988e5dce07c60a7e0a7b1ef25dbe18c61483e0a83__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 61)\n mstore(add(headStart, 64), \"ERC721: approve caller is not to\")\n mstore(add(headStart, 96), \"ken owner or approved for all\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_12a8e5623d251e191fe4a291d9a59bcc01a4db7a1f5c20fc8de44358c18308af__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 45)\n mstore(add(headStart, 64), \"ERC721: caller is not token owne\")\n mstore(add(headStart, 96), \"r or approved\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 24)\n mstore(add(headStart, 64), \"ERC721: invalid token ID\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 41)\n mstore(add(headStart, 64), \"ERC721: address zero is not a va\")\n mstore(add(headStart, 96), \"lid owner\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_packed_t_string_memory_ptr_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n {\n let length := mload(value0)\n copy_memory_to_memory_with_cleanup(add(value0, 0x20), pos, length)\n let end_1 := add(pos, length)\n let length_1 := mload(value1)\n copy_memory_to_memory_with_cleanup(add(value1, 0x20), end_1, length_1)\n end := add(end_1, length_1)\n }\n function abi_encode_tuple_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 37)\n mstore(add(headStart, 64), \"ERC721: transfer from incorrect \")\n mstore(add(headStart, 96), \"owner\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 36)\n mstore(add(headStart, 64), \"ERC721: transfer to the zero add\")\n mstore(add(headStart, 96), \"ress\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 25)\n mstore(add(headStart, 64), \"ERC721: approve to caller\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 50)\n mstore(add(headStart, 64), \"ERC721: transfer to non ERC721Re\")\n mstore(add(headStart, 96), \"ceiver implementer\")\n tail := add(headStart, 128)\n }\n function panic_error_0x12()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x12)\n revert(0, 0x24)\n }\n function abi_encode_tuple_t_address_t_address_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n {\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n mstore(add(headStart, 64), value2)\n mstore(add(headStart, 96), 128)\n tail := abi_encode_string(value3, add(headStart, 128))\n }\n function abi_decode_tuple_t_bytes4_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := mload(headStart)\n validator_revert_bytes4(value)\n value0 := value\n }\n}","id":92,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100df5760003560e01c80636352211e1161008c578063a22cb46511610066578063a22cb465146101c3578063b88d4fde146101d6578063c87b56dd146101e9578063e985e9c5146101fc57600080fd5b80636352211e1461018757806370a082311461019a57806395d89b41146101bb57600080fd5b8063095ea7b3116100bd578063095ea7b31461014c57806323b872dd1461016157806342842e0e1461017457600080fd5b806301ffc9a7146100e457806306fdde031461010c578063081812fc14610121575b600080fd5b6100f76100f2366004610e92565b610238565b60405190151581526020015b60405180910390f35b61011461028a565b6040516101039190610eff565b61013461012f366004610f12565b61031c565b6040516001600160a01b039091168152602001610103565b61015f61015a366004610f47565b610343565b005b61015f61016f366004610f71565b61045d565b61015f610182366004610f71565b6104d4565b610134610195366004610f12565b6104ef565b6101ad6101a8366004610fad565b610554565b604051908152602001610103565b6101146105ee565b61015f6101d1366004610fc8565b6105fd565b61015f6101e436600461101a565b61060c565b6101146101f7366004610f12565b61068a565b6100f761020a3660046110f6565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b60006001600160e01b031982166380ac58cd60e01b148061026957506001600160e01b03198216635b5e139f60e01b145b8061028457506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606000805461029990611129565b80601f01602080910402602001604051908101604052809291908181526020018280546102c590611129565b80156103125780601f106102e757610100808354040283529160200191610312565b820191906000526020600020905b8154815290600101906020018083116102f557829003601f168201915b5050505050905090565b6000610327826106fe565b506000908152600460205260409020546001600160a01b031690565b600061034e826104ef565b9050806001600160a01b0316836001600160a01b0316036103c05760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b03821614806103dc57506103dc813361020a565b61044e5760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c00000060648201526084016103b7565b6104588383610765565b505050565b61046733826107e0565b6104c95760405162461bcd60e51b815260206004820152602d60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201526c1c881bdc88185c1c1c9bdd9959609a1b60648201526084016103b7565b61045883838361085f565b6104588383836040518060200160405280600081525061060c565b6000818152600260205260408120546001600160a01b0316806102845760405162461bcd60e51b815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e204944000000000000000060448201526064016103b7565b60006001600160a01b0382166105d25760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f74206120766160448201527f6c6964206f776e6572000000000000000000000000000000000000000000000060648201526084016103b7565b506001600160a01b031660009081526003602052604090205490565b60606001805461029990611129565b610608338383610a4c565b5050565b61061633836107e0565b6106785760405162461bcd60e51b815260206004820152602d60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201526c1c881bdc88185c1c1c9bdd9959609a1b60648201526084016103b7565b61068484848484610b1a565b50505050565b6060610695826106fe565b60006106ac60408051602081019091526000815290565b905060008151116106cc57604051806020016040528060008152506106f7565b806106d684610ba3565b6040516020016106e7929190611163565b6040516020818303038152906040525b9392505050565b6000818152600260205260409020546001600160a01b03166107625760405162461bcd60e51b815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e204944000000000000000060448201526064016103b7565b50565b6000818152600460205260409020805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03841690811790915581906107a7826104ef565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000806107ec836104ef565b9050806001600160a01b0316846001600160a01b0316148061083357506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b806108575750836001600160a01b031661084c8461031c565b6001600160a01b0316145b949350505050565b826001600160a01b0316610872826104ef565b6001600160a01b0316146108d65760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016103b7565b6001600160a01b0382166109385760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016103b7565b826001600160a01b031661094b826104ef565b6001600160a01b0316146109af5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016103b7565b6000818152600460209081526040808320805473ffffffffffffffffffffffffffffffffffffffff199081169091556001600160a01b0387811680865260038552838620805460001901905590871680865283862080546001019055868652600290945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b816001600160a01b0316836001600160a01b031603610aad5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016103b7565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b610b2584848461085f565b610b3184848484610c43565b6106845760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e746572000000000000000000000000000060648201526084016103b7565b60606000610bb083610d9a565b600101905060008167ffffffffffffffff811115610bd057610bd0611004565b6040519080825280601f01601f191660200182016040528015610bfa576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084610c0457509392505050565b60006001600160a01b0384163b15610d8f57604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290610c87903390899088908890600401611192565b6020604051808303816000875af1925050508015610cc2575060408051601f3d908101601f19168201909252610cbf918101906111ce565b60015b610d75573d808015610cf0576040519150601f19603f3d011682016040523d82523d6000602084013e610cf5565b606091505b508051600003610d6d5760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e746572000000000000000000000000000060648201526084016103b7565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050610857565b506001949350505050565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310610de3577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310610e0f576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310610e2d57662386f26fc10000830492506010015b6305f5e1008310610e45576305f5e100830492506008015b6127108310610e5957612710830492506004015b60648310610e6b576064830492506002015b600a83106102845760010192915050565b6001600160e01b03198116811461076257600080fd5b600060208284031215610ea457600080fd5b81356106f781610e7c565b60005b83811015610eca578181015183820152602001610eb2565b50506000910152565b60008151808452610eeb816020860160208601610eaf565b601f01601f19169290920160200192915050565b6020815260006106f76020830184610ed3565b600060208284031215610f2457600080fd5b5035919050565b80356001600160a01b0381168114610f4257600080fd5b919050565b60008060408385031215610f5a57600080fd5b610f6383610f2b565b946020939093013593505050565b600080600060608486031215610f8657600080fd5b610f8f84610f2b565b9250610f9d60208501610f2b565b9150604084013590509250925092565b600060208284031215610fbf57600080fd5b6106f782610f2b565b60008060408385031215610fdb57600080fd5b610fe483610f2b565b915060208301358015158114610ff957600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b6000806000806080858703121561103057600080fd5b61103985610f2b565b935061104760208601610f2b565b925060408501359150606085013567ffffffffffffffff8082111561106b57600080fd5b818701915087601f83011261107f57600080fd5b81358181111561109157611091611004565b604051601f8201601f19908116603f011681019083821181831017156110b9576110b9611004565b816040528281528a60208487010111156110d257600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b6000806040838503121561110957600080fd5b61111283610f2b565b915061112060208401610f2b565b90509250929050565b600181811c9082168061113d57607f821691505b60208210810361115d57634e487b7160e01b600052602260045260246000fd5b50919050565b60008351611175818460208801610eaf565b835190830190611189818360208801610eaf565b01949350505050565b60006001600160a01b038087168352808616602084015250836040830152608060608301526111c46080830184610ed3565b9695505050505050565b6000602082840312156111e057600080fd5b81516106f781610e7c56fea164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xDF JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6352211E GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xA22CB465 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x1C3 JUMPI DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0x1D6 JUMPI DUP1 PUSH4 0xC87B56DD EQ PUSH2 0x1E9 JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x1FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6352211E EQ PUSH2 0x187 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x19A JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x1BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x95EA7B3 GT PUSH2 0xBD JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x14C JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x161 JUMPI DUP1 PUSH4 0x42842E0E EQ PUSH2 0x174 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xE4 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x10C JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x121 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF7 PUSH2 0xF2 CALLDATASIZE PUSH1 0x4 PUSH2 0xE92 JUMP JUMPDEST PUSH2 0x238 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x114 PUSH2 0x28A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x103 SWAP2 SWAP1 PUSH2 0xEFF JUMP JUMPDEST PUSH2 0x134 PUSH2 0x12F CALLDATASIZE PUSH1 0x4 PUSH2 0xF12 JUMP JUMPDEST PUSH2 0x31C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x103 JUMP JUMPDEST PUSH2 0x15F PUSH2 0x15A CALLDATASIZE PUSH1 0x4 PUSH2 0xF47 JUMP JUMPDEST PUSH2 0x343 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x15F PUSH2 0x16F CALLDATASIZE PUSH1 0x4 PUSH2 0xF71 JUMP JUMPDEST PUSH2 0x45D JUMP JUMPDEST PUSH2 0x15F PUSH2 0x182 CALLDATASIZE PUSH1 0x4 PUSH2 0xF71 JUMP JUMPDEST PUSH2 0x4D4 JUMP JUMPDEST PUSH2 0x134 PUSH2 0x195 CALLDATASIZE PUSH1 0x4 PUSH2 0xF12 JUMP JUMPDEST PUSH2 0x4EF JUMP JUMPDEST PUSH2 0x1AD PUSH2 0x1A8 CALLDATASIZE PUSH1 0x4 PUSH2 0xFAD JUMP JUMPDEST PUSH2 0x554 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x103 JUMP JUMPDEST PUSH2 0x114 PUSH2 0x5EE JUMP JUMPDEST PUSH2 0x15F PUSH2 0x1D1 CALLDATASIZE PUSH1 0x4 PUSH2 0xFC8 JUMP JUMPDEST PUSH2 0x5FD JUMP JUMPDEST PUSH2 0x15F PUSH2 0x1E4 CALLDATASIZE PUSH1 0x4 PUSH2 0x101A JUMP JUMPDEST PUSH2 0x60C JUMP JUMPDEST PUSH2 0x114 PUSH2 0x1F7 CALLDATASIZE PUSH1 0x4 PUSH2 0xF12 JUMP JUMPDEST PUSH2 0x68A JUMP JUMPDEST PUSH2 0xF7 PUSH2 0x20A CALLDATASIZE PUSH1 0x4 PUSH2 0x10F6 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x80AC58CD PUSH1 0xE0 SHL EQ DUP1 PUSH2 0x269 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x5B5E139F PUSH1 0xE0 SHL EQ JUMPDEST DUP1 PUSH2 0x284 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 SLOAD PUSH2 0x299 SWAP1 PUSH2 0x1129 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x2C5 SWAP1 PUSH2 0x1129 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x312 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x2E7 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x312 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x2F5 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x327 DUP3 PUSH2 0x6FE JUMP JUMPDEST POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x34E DUP3 PUSH2 0x4EF JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x3C0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F76616C20746F2063757272656E74206F776E65 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x39 PUSH1 0xF9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND EQ DUP1 PUSH2 0x3DC JUMPI POP PUSH2 0x3DC DUP2 CALLER PUSH2 0x20A JUMP JUMPDEST PUSH2 0x44E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F76652063616C6C6572206973206E6F7420746F PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6B656E206F776E6572206F7220617070726F76656420666F7220616C6C000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B7 JUMP JUMPDEST PUSH2 0x458 DUP4 DUP4 PUSH2 0x765 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x467 CALLER DUP3 PUSH2 0x7E0 JUMP JUMPDEST PUSH2 0x4C9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A2063616C6C6572206973206E6F7420746F6B656E206F776E65 PUSH1 0x44 DUP3 ADD MSTORE PUSH13 0x1C881BDC88185C1C1C9BDD9959 PUSH1 0x9A SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B7 JUMP JUMPDEST PUSH2 0x458 DUP4 DUP4 DUP4 PUSH2 0x85F JUMP JUMPDEST PUSH2 0x458 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x60C JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP1 PUSH2 0x284 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20696E76616C696420746F6B656E2049440000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3B7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x5D2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A2061646472657373207A65726F206973206E6F742061207661 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6C6964206F776E65720000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B7 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 DUP1 SLOAD PUSH2 0x299 SWAP1 PUSH2 0x1129 JUMP JUMPDEST PUSH2 0x608 CALLER DUP4 DUP4 PUSH2 0xA4C JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x616 CALLER DUP4 PUSH2 0x7E0 JUMP JUMPDEST PUSH2 0x678 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A2063616C6C6572206973206E6F7420746F6B656E206F776E65 PUSH1 0x44 DUP3 ADD MSTORE PUSH13 0x1C881BDC88185C1C1C9BDD9959 PUSH1 0x9A SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B7 JUMP JUMPDEST PUSH2 0x684 DUP5 DUP5 DUP5 DUP5 PUSH2 0xB1A JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x695 DUP3 PUSH2 0x6FE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6AC PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE SWAP1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 MLOAD GT PUSH2 0x6CC JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x6F7 JUMP JUMPDEST DUP1 PUSH2 0x6D6 DUP5 PUSH2 0xBA3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x6E7 SWAP3 SWAP2 SWAP1 PUSH2 0x1163 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x762 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20696E76616C696420746F6B656E2049440000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3B7 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP2 SWAP1 PUSH2 0x7A7 DUP3 PUSH2 0x4EF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x7EC DUP4 PUSH2 0x4EF JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x833 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP9 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST DUP1 PUSH2 0x857 JUMPI POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x84C DUP5 PUSH2 0x31C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x872 DUP3 PUSH2 0x4EF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x8D6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E736665722066726F6D20696E636F727265637420 PUSH1 0x44 DUP3 ADD MSTORE PUSH5 0x37BBB732B9 PUSH1 0xD9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x938 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F20746865207A65726F20616464 PUSH1 0x44 DUP3 ADD MSTORE PUSH4 0x72657373 PUSH1 0xE0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B7 JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x94B DUP3 PUSH2 0x4EF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x9AF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E736665722066726F6D20696E636F727265637420 PUSH1 0x44 DUP3 ADD MSTORE PUSH5 0x37BBB732B9 PUSH1 0xD9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B7 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT SWAP1 DUP2 AND SWAP1 SWAP2 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND DUP1 DUP7 MSTORE PUSH1 0x3 DUP6 MSTORE DUP4 DUP7 KECCAK256 DUP1 SLOAD PUSH1 0x0 NOT ADD SWAP1 SSTORE SWAP1 DUP8 AND DUP1 DUP7 MSTORE DUP4 DUP7 KECCAK256 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE DUP7 DUP7 MSTORE PUSH1 0x2 SWAP1 SWAP5 MSTORE DUP3 DUP6 KECCAK256 DUP1 SLOAD SWAP1 SWAP3 AND DUP5 OR SWAP1 SWAP2 SSTORE SWAP1 MLOAD DUP5 SWAP4 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 LOG4 POP POP POP JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0xAAD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F766520746F2063616C6C657200000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3B7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND DUP7 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP2 MLOAD SWAP2 DUP3 MSTORE PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0xB25 DUP5 DUP5 DUP5 PUSH2 0x85F JUMP JUMPDEST PUSH2 0xB31 DUP5 DUP5 DUP5 DUP5 PUSH2 0xC43 JUMP JUMPDEST PUSH2 0x684 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x32 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F206E6F6E204552433732315265 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x63656976657220696D706C656D656E7465720000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B7 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0xBB0 DUP4 PUSH2 0xD9A JUMP JUMPDEST PUSH1 0x1 ADD SWAP1 POP PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xBD0 JUMPI PUSH2 0xBD0 PUSH2 0x1004 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xBFA JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP DUP2 DUP2 ADD PUSH1 0x20 ADD JUMPDEST PUSH1 0x0 NOT ADD PUSH32 0x3031323334353637383961626364656600000000000000000000000000000000 PUSH1 0xA DUP7 MOD BYTE DUP2 MSTORE8 PUSH1 0xA DUP6 DIV SWAP5 POP DUP5 PUSH2 0xC04 JUMPI POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO PUSH2 0xD8F JUMPI PUSH1 0x40 MLOAD PUSH4 0xA85BD01 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0x150B7A02 SWAP1 PUSH2 0xC87 SWAP1 CALLER SWAP1 DUP10 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x1192 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0xCC2 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0xCBF SWAP2 DUP2 ADD SWAP1 PUSH2 0x11CE JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0xD75 JUMPI RETURNDATASIZE DUP1 DUP1 ISZERO PUSH2 0xCF0 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xCF5 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP DUP1 MLOAD PUSH1 0x0 SUB PUSH2 0xD6D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x32 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F206E6F6E204552433732315265 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x63656976657220696D706C656D656E7465720000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B7 JUMP JUMPDEST DUP1 MLOAD DUP2 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH4 0xA85BD01 PUSH1 0xE1 SHL EQ SWAP1 POP PUSH2 0x857 JUMP JUMPDEST POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH27 0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F010000000000000000 DUP4 LT PUSH2 0xDE3 JUMPI PUSH27 0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F010000000000000000 DUP4 DIV SWAP3 POP PUSH1 0x40 ADD JUMPDEST PUSH14 0x4EE2D6D415B85ACEF8100000000 DUP4 LT PUSH2 0xE0F JUMPI PUSH14 0x4EE2D6D415B85ACEF8100000000 DUP4 DIV SWAP3 POP PUSH1 0x20 ADD JUMPDEST PUSH7 0x2386F26FC10000 DUP4 LT PUSH2 0xE2D JUMPI PUSH7 0x2386F26FC10000 DUP4 DIV SWAP3 POP PUSH1 0x10 ADD JUMPDEST PUSH4 0x5F5E100 DUP4 LT PUSH2 0xE45 JUMPI PUSH4 0x5F5E100 DUP4 DIV SWAP3 POP PUSH1 0x8 ADD JUMPDEST PUSH2 0x2710 DUP4 LT PUSH2 0xE59 JUMPI PUSH2 0x2710 DUP4 DIV SWAP3 POP PUSH1 0x4 ADD JUMPDEST PUSH1 0x64 DUP4 LT PUSH2 0xE6B JUMPI PUSH1 0x64 DUP4 DIV SWAP3 POP PUSH1 0x2 ADD JUMPDEST PUSH1 0xA DUP4 LT PUSH2 0x284 JUMPI PUSH1 0x1 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x762 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xEA4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x6F7 DUP2 PUSH2 0xE7C JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xECA JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xEB2 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0xEEB DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0xEAF JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x6F7 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0xED3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xF24 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xF42 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xF5A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF63 DUP4 PUSH2 0xF2B JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xF86 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF8F DUP5 PUSH2 0xF2B JUMP JUMPDEST SWAP3 POP PUSH2 0xF9D PUSH1 0x20 DUP6 ADD PUSH2 0xF2B JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xFBF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x6F7 DUP3 PUSH2 0xF2B JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xFDB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xFE4 DUP4 PUSH2 0xF2B JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xFF9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x1030 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1039 DUP6 PUSH2 0xF2B JUMP JUMPDEST SWAP4 POP PUSH2 0x1047 PUSH1 0x20 DUP7 ADD PUSH2 0xF2B JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x106B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x107F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x1091 JUMPI PUSH2 0x1091 PUSH2 0x1004 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x10B9 JUMPI PUSH2 0x10B9 PUSH2 0x1004 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP11 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x10D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1109 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1112 DUP4 PUSH2 0xF2B JUMP JUMPDEST SWAP2 POP PUSH2 0x1120 PUSH1 0x20 DUP5 ADD PUSH2 0xF2B JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x113D JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x115D JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP4 MLOAD PUSH2 0x1175 DUP2 DUP5 PUSH1 0x20 DUP9 ADD PUSH2 0xEAF JUMP JUMPDEST DUP4 MLOAD SWAP1 DUP4 ADD SWAP1 PUSH2 0x1189 DUP2 DUP4 PUSH1 0x20 DUP9 ADD PUSH2 0xEAF JUMP JUMPDEST ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND DUP4 MSTORE DUP1 DUP7 AND PUSH1 0x20 DUP5 ADD MSTORE POP DUP4 PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x80 PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x11C4 PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0xED3 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x11E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x6F7 DUP2 PUSH2 0xE7C JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"628:16377:29:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1570:300;;;;;;:::i;:::-;;:::i;:::-;;;565:14:92;;558:22;540:41;;528:2;513:18;1570:300:29;;;;;;;;2471:98;;;:::i;:::-;;;;;;;:::i;3935:167::-;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;1697:55:92;;;1679:74;;1667:2;1652:18;3935:167:29;1533:226:92;3468:406:29;;;;;;:::i;:::-;;:::i;:::-;;4612:296;;;;;;:::i;:::-;;:::i;4974:149::-;;;;;;:::i;:::-;;:::i;2190:219::-;;;;;;:::i;:::-;;:::i;1929:204::-;;;;;;:::i;:::-;;:::i;:::-;;;2894:25:92;;;2882:2;2867:18;1929:204:29;2748:177:92;2633:102:29;;;:::i;4169:153::-;;;;;;:::i;:::-;;:::i;5189:276::-;;;;;;:::i;:::-;;:::i;2801:::-;;;;;;:::i;:::-;;:::i;4388:162::-;;;;;;:::i;:::-;-1:-1:-1;;;;;4508:25:29;;;4485:4;4508:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;4388:162;1570:300;1672:4;-1:-1:-1;;;;;;1707:40:29;;-1:-1:-1;;;1707:40:29;;:104;;-1:-1:-1;;;;;;;1763:48:29;;-1:-1:-1;;;1763:48:29;1707:104;:156;;;-1:-1:-1;;;;;;;;;;937:40:38;;;1827:36:29;1688:175;1570:300;-1:-1:-1;;1570:300:29:o;2471:98::-;2525:13;2557:5;2550:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2471:98;:::o;3935:167::-;4011:7;4030:23;4045:7;4030:14;:23::i;:::-;-1:-1:-1;4071:24:29;;;;:15;:24;;;;;;-1:-1:-1;;;;;4071:24:29;;3935:167::o;3468:406::-;3548:13;3564:23;3579:7;3564:14;:23::i;:::-;3548:39;;3611:5;-1:-1:-1;;;;;3605:11:29;:2;-1:-1:-1;;;;;3605:11:29;;3597:57;;;;-1:-1:-1;;;3597:57:29;;5409:2:92;3597:57:29;;;5391:21:92;5448:2;5428:18;;;5421:30;5487:34;5467:18;;;5460:62;-1:-1:-1;;;5538:18:92;;;5531:31;5579:19;;3597:57:29;;;;;;;;;734:10:34;-1:-1:-1;;;;;3686:21:29;;;;:62;;-1:-1:-1;3711:37:29;3728:5;734:10:34;4388:162:29;:::i;3711:37::-;3665:170;;;;-1:-1:-1;;;3665:170:29;;5811:2:92;3665:170:29;;;5793:21:92;5850:2;5830:18;;;5823:30;5889:34;5869:18;;;5862:62;5960:31;5940:18;;;5933:59;6009:19;;3665:170:29;5609:425:92;3665:170:29;3846:21;3855:2;3859:7;3846:8;:21::i;:::-;3538:336;3468:406;;:::o;4612:296::-;4771:41;734:10:34;4804:7:29;4771:18;:41::i;:::-;4763:99;;;;-1:-1:-1;;;4763:99:29;;6241:2:92;4763:99:29;;;6223:21:92;6280:2;6260:18;;;6253:30;6319:34;6299:18;;;6292:62;-1:-1:-1;;;6370:18:92;;;6363:43;6423:19;;4763:99:29;6039:409:92;4763:99:29;4873:28;4883:4;4889:2;4893:7;4873:9;:28::i;4974:149::-;5077:39;5094:4;5100:2;5104:7;5077:39;;;;;;;;;;;;:16;:39::i;2190:219::-;2262:7;6794:16;;;:7;:16;;;;;;-1:-1:-1;;;;;6794:16:29;;2324:56;;;;-1:-1:-1;;;2324:56:29;;6655:2:92;2324:56:29;;;6637:21:92;6694:2;6674:18;;;6667:30;6733:26;6713:18;;;6706:54;6777:18;;2324:56:29;6453:348:92;1929:204:29;2001:7;-1:-1:-1;;;;;2028:19:29;;2020:73;;;;-1:-1:-1;;;2020:73:29;;7008:2:92;2020:73:29;;;6990:21:92;7047:2;7027:18;;;7020:30;7086:34;7066:18;;;7059:62;7157:11;7137:18;;;7130:39;7186:19;;2020:73:29;6806:405:92;2020:73:29;-1:-1:-1;;;;;;2110:16:29;;;;;:9;:16;;;;;;;1929:204::o;2633:102::-;2689:13;2721:7;2714:14;;;;;:::i;4169:153::-;4263:52;734:10:34;4296:8:29;4306;4263:18;:52::i;:::-;4169:153;;:::o;5189:276::-;5319:41;734:10:34;5352:7:29;5319:18;:41::i;:::-;5311:99;;;;-1:-1:-1;;;5311:99:29;;6241:2:92;5311:99:29;;;6223:21:92;6280:2;6260:18;;;6253:30;6319:34;6299:18;;;6292:62;-1:-1:-1;;;6370:18:92;;;6363:43;6423:19;;5311:99:29;6039:409:92;5311:99:29;5420:38;5434:4;5440:2;5444:7;5453:4;5420:13;:38::i;:::-;5189:276;;;;:::o;2801:::-;2874:13;2899:23;2914:7;2899:14;:23::i;:::-;2933:21;2957:10;3395:9;;;;;;;;;-1:-1:-1;3395:9:29;;;3319:92;2957:10;2933:34;;3008:1;2990:7;2984:21;:25;:86;;;;;;;;;;;;;;;;;3036:7;3045:18;:7;:16;:18::i;:::-;3019:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2984:86;2977:93;2801:276;-1:-1:-1;;;2801:276:29:o;13240:133::-;7185:4;6794:16;;;:7;:16;;;;;;-1:-1:-1;;;;;6794:16:29;13313:53;;;;-1:-1:-1;;;13313:53:29;;6655:2:92;13313:53:29;;;6637:21:92;6694:2;6674:18;;;6667:30;6733:26;6713:18;;;6706:54;6777:18;;13313:53:29;6453:348:92;13313:53:29;13240:133;:::o;12572:171::-;12646:24;;;;:15;:24;;;;;:29;;-1:-1:-1;;12646:29:29;-1:-1:-1;;;;;12646:29:29;;;;;;;;:24;;12699:23;12646:24;12699:14;:23::i;:::-;-1:-1:-1;;;;;12690:46:29;;;;;;;;;;;12572:171;;:::o;7404:261::-;7497:4;7513:13;7529:23;7544:7;7529:14;:23::i;:::-;7513:39;;7581:5;-1:-1:-1;;;;;7570:16:29;:7;-1:-1:-1;;;;;7570:16:29;;:52;;;-1:-1:-1;;;;;;4508:25:29;;;4485:4;4508:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;7590:32;7570:87;;;;7650:7;-1:-1:-1;;;;;7626:31:29;:20;7638:7;7626:11;:20::i;:::-;-1:-1:-1;;;;;7626:31:29;;7570:87;7562:96;7404:261;-1:-1:-1;;;;7404:261:29:o;11257:1203::-;11381:4;-1:-1:-1;;;;;11354:31:29;:23;11369:7;11354:14;:23::i;:::-;-1:-1:-1;;;;;11354:31:29;;11346:81;;;;-1:-1:-1;;;11346:81:29;;7919:2:92;11346:81:29;;;7901:21:92;7958:2;7938:18;;;7931:30;7997:34;7977:18;;;7970:62;-1:-1:-1;;;8048:18:92;;;8041:35;8093:19;;11346:81:29;7717:401:92;11346:81:29;-1:-1:-1;;;;;11445:16:29;;11437:65;;;;-1:-1:-1;;;11437:65:29;;8325:2:92;11437:65:29;;;8307:21:92;8364:2;8344:18;;;8337:30;8403:34;8383:18;;;8376:62;-1:-1:-1;;;8454:18:92;;;8447:34;8498:19;;11437:65:29;8123:400:92;11437:65:29;11682:4;-1:-1:-1;;;;;11655:31:29;:23;11670:7;11655:14;:23::i;:::-;-1:-1:-1;;;;;11655:31:29;;11647:81;;;;-1:-1:-1;;;11647:81:29;;7919:2:92;11647:81:29;;;7901:21:92;7958:2;7938:18;;;7931:30;7997:34;7977:18;;;7970:62;-1:-1:-1;;;8048:18:92;;;8041:35;8093:19;;11647:81:29;7717:401:92;11647:81:29;11797:24;;;;:15;:24;;;;;;;;11790:31;;-1:-1:-1;;11790:31:29;;;;;;-1:-1:-1;;;;;12265:15:29;;;;;;:9;:15;;;;;:20;;-1:-1:-1;;12265:20:29;;;12299:13;;;;;;;;;:18;;11790:31;12299:18;;;12337:16;;;:7;:16;;;;;;:21;;;;;;;;;;12374:27;;11813:7;;12374:27;;;3538:336;3468:406;;:::o;12879:277::-;12999:8;-1:-1:-1;;;;;12990:17:29;:5;-1:-1:-1;;;;;12990:17:29;;12982:55;;;;-1:-1:-1;;;12982:55:29;;8730:2:92;12982:55:29;;;8712:21:92;8769:2;8749:18;;;8742:30;8808:27;8788:18;;;8781:55;8853:18;;12982:55:29;8528:349:92;12982:55:29;-1:-1:-1;;;;;13047:25:29;;;;;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;:46;;-1:-1:-1;;13047:46:29;;;;;;;;;;13108:41;;540::92;;;13108::29;;513:18:92;13108:41:29;;;;;;;12879:277;;;:::o;6326:267::-;6438:28;6448:4;6454:2;6458:7;6438:9;:28::i;:::-;6484:47;6507:4;6513:2;6517:7;6526:4;6484:22;:47::i;:::-;6476:110;;;;-1:-1:-1;;;6476:110:29;;9084:2:92;6476:110:29;;;9066:21:92;9123:2;9103:18;;;9096:30;9162:34;9142:18;;;9135:62;9233:20;9213:18;;;9206:48;9271:19;;6476:110:29;8882:414:92;447:696:37;503:13;552:14;569:17;580:5;569:10;:17::i;:::-;589:1;569:21;552:38;;604:20;638:6;627:18;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;627:18:37;-1:-1:-1;604:41:37;-1:-1:-1;765:28:37;;;781:2;765:28;820:280;-1:-1:-1;;851:5:37;990:8;985:2;974:14;;969:30;851:5;956:44;1044:2;1035:11;;;-1:-1:-1;1064:21:37;820:280;1064:21;-1:-1:-1;1120:6:37;447:696;-1:-1:-1;;;447:696:37:o;13925:831:29:-;14074:4;-1:-1:-1;;;;;14094:13:29;;1702:19:33;:23;14090:660:29;;14129:71;;-1:-1:-1;;;14129:71:29;;-1:-1:-1;;;;;14129:36:29;;;;;:71;;734:10:34;;14180:4:29;;14186:7;;14195:4;;14129:71;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14129:71:29;;;;;;;;-1:-1:-1;;14129:71:29;;;;;;;;;;;;:::i;:::-;;;14125:573;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14367:6;:13;14384:1;14367:18;14363:321;;14409:60;;-1:-1:-1;;;14409:60:29;;9084:2:92;14409:60:29;;;9066:21:92;9123:2;9103:18;;;9096:30;9162:34;9142:18;;;9135:62;9233:20;9213:18;;;9206:48;9271:19;;14409:60:29;8882:414:92;14363:321:29;14636:6;14630:13;14621:6;14617:2;14613:15;14606:38;14125:573;-1:-1:-1;;;;;;14250:51:29;-1:-1:-1;;;14250:51:29;;-1:-1:-1;14243:58:29;;14090:660;-1:-1:-1;14735:4:29;13925:831;;;;;;:::o;10139:916:40:-;10192:7;;10276:8;10267:17;;10263:103;;10313:8;10304:17;;;-1:-1:-1;10349:2:40;10339:12;10263:103;10392:8;10383:5;:17;10379:103;;10429:8;10420:17;;;-1:-1:-1;10465:2:40;10455:12;10379:103;10508:8;10499:5;:17;10495:103;;10545:8;10536:17;;;-1:-1:-1;10581:2:40;10571:12;10495:103;10624:7;10615:5;:16;10611:100;;10660:7;10651:16;;;-1:-1:-1;10695:1:40;10685:11;10611:100;10737:7;10728:5;:16;10724:100;;10773:7;10764:16;;;-1:-1:-1;10808:1:40;10798:11;10724:100;10850:7;10841:5;:16;10837:100;;10886:7;10877:16;;;-1:-1:-1;10921:1:40;10911:11;10837:100;10963:7;10954:5;:16;10950:66;;11000:1;10990:11;11042:6;10139:916;-1:-1:-1;;10139:916:40:o;14:131:92:-;-1:-1:-1;;;;;;88:32:92;;78:43;;68:71;;135:1;132;125:12;150:245;208:6;261:2;249:9;240:7;236:23;232:32;229:52;;;277:1;274;267:12;229:52;316:9;303:23;335:30;359:5;335:30;:::i;592:250::-;677:1;687:113;701:6;698:1;695:13;687:113;;;777:11;;;771:18;758:11;;;751:39;723:2;716:10;687:113;;;-1:-1:-1;;834:1:92;816:16;;809:27;592:250::o;847:271::-;889:3;927:5;921:12;954:6;949:3;942:19;970:76;1039:6;1032:4;1027:3;1023:14;1016:4;1009:5;1005:16;970:76;:::i;:::-;1100:2;1079:15;-1:-1:-1;;1075:29:92;1066:39;;;;1107:4;1062:50;;847:271;-1:-1:-1;;847:271:92:o;1123:220::-;1272:2;1261:9;1254:21;1235:4;1292:45;1333:2;1322:9;1318:18;1310:6;1292:45;:::i;1348:180::-;1407:6;1460:2;1448:9;1439:7;1435:23;1431:32;1428:52;;;1476:1;1473;1466:12;1428:52;-1:-1:-1;1499:23:92;;1348:180;-1:-1:-1;1348:180:92:o;1764:196::-;1832:20;;-1:-1:-1;;;;;1881:54:92;;1871:65;;1861:93;;1950:1;1947;1940:12;1861:93;1764:196;;;:::o;1965:254::-;2033:6;2041;2094:2;2082:9;2073:7;2069:23;2065:32;2062:52;;;2110:1;2107;2100:12;2062:52;2133:29;2152:9;2133:29;:::i;:::-;2123:39;2209:2;2194:18;;;;2181:32;;-1:-1:-1;;;1965:254:92:o;2224:328::-;2301:6;2309;2317;2370:2;2358:9;2349:7;2345:23;2341:32;2338:52;;;2386:1;2383;2376:12;2338:52;2409:29;2428:9;2409:29;:::i;:::-;2399:39;;2457:38;2491:2;2480:9;2476:18;2457:38;:::i;:::-;2447:48;;2542:2;2531:9;2527:18;2514:32;2504:42;;2224:328;;;;;:::o;2557:186::-;2616:6;2669:2;2657:9;2648:7;2644:23;2640:32;2637:52;;;2685:1;2682;2675:12;2637:52;2708:29;2727:9;2708:29;:::i;2930:347::-;2995:6;3003;3056:2;3044:9;3035:7;3031:23;3027:32;3024:52;;;3072:1;3069;3062:12;3024:52;3095:29;3114:9;3095:29;:::i;:::-;3085:39;;3174:2;3163:9;3159:18;3146:32;3221:5;3214:13;3207:21;3200:5;3197:32;3187:60;;3243:1;3240;3233:12;3187:60;3266:5;3256:15;;;2930:347;;;;;:::o;3282:127::-;3343:10;3338:3;3334:20;3331:1;3324:31;3374:4;3371:1;3364:15;3398:4;3395:1;3388:15;3414:1138;3509:6;3517;3525;3533;3586:3;3574:9;3565:7;3561:23;3557:33;3554:53;;;3603:1;3600;3593:12;3554:53;3626:29;3645:9;3626:29;:::i;:::-;3616:39;;3674:38;3708:2;3697:9;3693:18;3674:38;:::i;:::-;3664:48;;3759:2;3748:9;3744:18;3731:32;3721:42;;3814:2;3803:9;3799:18;3786:32;3837:18;3878:2;3870:6;3867:14;3864:34;;;3894:1;3891;3884:12;3864:34;3932:6;3921:9;3917:22;3907:32;;3977:7;3970:4;3966:2;3962:13;3958:27;3948:55;;3999:1;3996;3989:12;3948:55;4035:2;4022:16;4057:2;4053;4050:10;4047:36;;;4063:18;;:::i;:::-;4138:2;4132:9;4106:2;4192:13;;-1:-1:-1;;4188:22:92;;;4212:2;4184:31;4180:40;4168:53;;;4236:18;;;4256:22;;;4233:46;4230:72;;;4282:18;;:::i;:::-;4322:10;4318:2;4311:22;4357:2;4349:6;4342:18;4397:7;4392:2;4387;4383;4379:11;4375:20;4372:33;4369:53;;;4418:1;4415;4408:12;4369:53;4474:2;4469;4465;4461:11;4456:2;4448:6;4444:15;4431:46;4519:1;4514:2;4509;4501:6;4497:15;4493:24;4486:35;4540:6;4530:16;;;;;;;3414:1138;;;;;;;:::o;4557:260::-;4625:6;4633;4686:2;4674:9;4665:7;4661:23;4657:32;4654:52;;;4702:1;4699;4692:12;4654:52;4725:29;4744:9;4725:29;:::i;:::-;4715:39;;4773:38;4807:2;4796:9;4792:18;4773:38;:::i;:::-;4763:48;;4557:260;;;;;:::o;4822:380::-;4901:1;4897:12;;;;4944;;;4965:61;;5019:4;5011:6;5007:17;4997:27;;4965:61;5072:2;5064:6;5061:14;5041:18;5038:38;5035:161;;5118:10;5113:3;5109:20;5106:1;5099:31;5153:4;5150:1;5143:15;5181:4;5178:1;5171:15;5035:161;;4822:380;;;:::o;7216:496::-;7395:3;7433:6;7427:13;7449:66;7508:6;7503:3;7496:4;7488:6;7484:17;7449:66;:::i;:::-;7578:13;;7537:16;;;;7600:70;7578:13;7537:16;7647:4;7635:17;;7600:70;:::i;:::-;7686:20;;7216:496;-1:-1:-1;;;;7216:496:92:o;9433:512::-;9627:4;-1:-1:-1;;;;;9737:2:92;9729:6;9725:15;9714:9;9707:34;9789:2;9781:6;9777:15;9772:2;9761:9;9757:18;9750:43;;9829:6;9824:2;9813:9;9809:18;9802:34;9872:3;9867:2;9856:9;9852:18;9845:31;9893:46;9934:3;9923:9;9919:19;9911:6;9893:46;:::i;:::-;9885:54;9433:512;-1:-1:-1;;;;;;9433:512:92:o;9950:249::-;10019:6;10072:2;10060:9;10051:7;10047:23;10043:32;10040:52;;;10088:1;10085;10078:12;10040:52;10120:9;10114:16;10139:30;10163:5;10139:30;:::i"},"gasEstimates":{"creation":{"codeDepositCost":"920000","executionCost":"infinite","totalCost":"infinite"},"external":{"approve(address,uint256)":"infinite","balanceOf(address)":"2634","getApproved(uint256)":"4792","isApprovedForAll(address,address)":"infinite","name()":"infinite","ownerOf(uint256)":"2555","safeTransferFrom(address,address,uint256)":"infinite","safeTransferFrom(address,address,uint256,bytes)":"infinite","setApprovalForAll(address,bool)":"26705","supportsInterface(bytes4)":"534","symbol()":"infinite","tokenURI(uint256)":"infinite","transferFrom(address,address,uint256)":"infinite"},"internal":{"__unsafe_increaseBalance(address,uint256)":"infinite","_afterTokenTransfer(address,address,uint256,uint256)":"infinite","_approve(address,uint256)":"infinite","_baseURI()":"infinite","_beforeTokenTransfer(address,address,uint256,uint256)":"infinite","_burn(uint256)":"infinite","_checkOnERC721Received(address,address,uint256,bytes memory)":"infinite","_exists(uint256)":"infinite","_isApprovedOrOwner(address,uint256)":"infinite","_mint(address,uint256)":"infinite","_ownerOf(uint256)":"infinite","_requireMinted(uint256)":"infinite","_safeMint(address,uint256)":"infinite","_safeMint(address,uint256,bytes memory)":"infinite","_safeTransfer(address,address,uint256,bytes memory)":"infinite","_setApprovalForAll(address,address,bool)":"infinite","_transfer(address,address,uint256)":"infinite"}},"methodIdentifiers":{"approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","getApproved(uint256)":"081812fc","isApprovedForAll(address,address)":"e985e9c5","name()":"06fdde03","ownerOf(uint256)":"6352211e","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","tokenURI(uint256)":"c87b56dd","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including the Metadata extension, but not including the Enumerable extension, which is available separately as {ERC721Enumerable}.\",\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"See {IERC721-approve}.\"},\"balanceOf(address)\":{\"details\":\"See {IERC721-balanceOf}.\"},\"constructor\":{\"details\":\"Initializes the contract by setting a `name` and a `symbol` to the token collection.\"},\"getApproved(uint256)\":{\"details\":\"See {IERC721-getApproved}.\"},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC721-isApprovedForAll}.\"},\"name()\":{\"details\":\"See {IERC721Metadata-name}.\"},\"ownerOf(uint256)\":{\"details\":\"See {IERC721-ownerOf}.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC721-setApprovalForAll}.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"symbol()\":{\"details\":\"See {IERC721Metadata-symbol}.\"},\"tokenURI(uint256)\":{\"details\":\"See {IERC721Metadata-tokenURI}.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-transferFrom}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC721/ERC721.sol\":\"ERC721\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC721/ERC721.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC721/ERC721.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC721.sol\\\";\\nimport \\\"./IERC721Receiver.sol\\\";\\nimport \\\"./extensions/IERC721Metadata.sol\\\";\\nimport \\\"../../utils/Address.sol\\\";\\nimport \\\"../../utils/Context.sol\\\";\\nimport \\\"../../utils/Strings.sol\\\";\\nimport \\\"../../utils/introspection/ERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including\\n * the Metadata extension, but not including the Enumerable extension, which is available separately as\\n * {ERC721Enumerable}.\\n */\\ncontract ERC721 is Context, ERC165, IERC721, IERC721Metadata {\\n using Address for address;\\n using Strings for uint256;\\n\\n // Token name\\n string private _name;\\n\\n // Token symbol\\n string private _symbol;\\n\\n // Mapping from token ID to owner address\\n mapping(uint256 => address) private _owners;\\n\\n // Mapping owner address to token count\\n mapping(address => uint256) private _balances;\\n\\n // Mapping from token ID to approved address\\n mapping(uint256 => address) private _tokenApprovals;\\n\\n // Mapping from owner to operator approvals\\n mapping(address => mapping(address => bool)) private _operatorApprovals;\\n\\n /**\\n * @dev Initializes the contract by setting a `name` and a `symbol` to the token collection.\\n */\\n constructor(string memory name_, string memory symbol_) {\\n _name = name_;\\n _symbol = symbol_;\\n }\\n\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) {\\n return\\n interfaceId == type(IERC721).interfaceId ||\\n interfaceId == type(IERC721Metadata).interfaceId ||\\n super.supportsInterface(interfaceId);\\n }\\n\\n /**\\n * @dev See {IERC721-balanceOf}.\\n */\\n function balanceOf(address owner) public view virtual override returns (uint256) {\\n require(owner != address(0), \\\"ERC721: address zero is not a valid owner\\\");\\n return _balances[owner];\\n }\\n\\n /**\\n * @dev See {IERC721-ownerOf}.\\n */\\n function ownerOf(uint256 tokenId) public view virtual override returns (address) {\\n address owner = _ownerOf(tokenId);\\n require(owner != address(0), \\\"ERC721: invalid token ID\\\");\\n return owner;\\n }\\n\\n /**\\n * @dev See {IERC721Metadata-name}.\\n */\\n function name() public view virtual override returns (string memory) {\\n return _name;\\n }\\n\\n /**\\n * @dev See {IERC721Metadata-symbol}.\\n */\\n function symbol() public view virtual override returns (string memory) {\\n return _symbol;\\n }\\n\\n /**\\n * @dev See {IERC721Metadata-tokenURI}.\\n */\\n function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {\\n _requireMinted(tokenId);\\n\\n string memory baseURI = _baseURI();\\n return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : \\\"\\\";\\n }\\n\\n /**\\n * @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\\n * token will be the concatenation of the `baseURI` and the `tokenId`. Empty\\n * by default, can be overridden in child contracts.\\n */\\n function _baseURI() internal view virtual returns (string memory) {\\n return \\\"\\\";\\n }\\n\\n /**\\n * @dev See {IERC721-approve}.\\n */\\n function approve(address to, uint256 tokenId) public virtual override {\\n address owner = ERC721.ownerOf(tokenId);\\n require(to != owner, \\\"ERC721: approval to current owner\\\");\\n\\n require(\\n _msgSender() == owner || isApprovedForAll(owner, _msgSender()),\\n \\\"ERC721: approve caller is not token owner or approved for all\\\"\\n );\\n\\n _approve(to, tokenId);\\n }\\n\\n /**\\n * @dev See {IERC721-getApproved}.\\n */\\n function getApproved(uint256 tokenId) public view virtual override returns (address) {\\n _requireMinted(tokenId);\\n\\n return _tokenApprovals[tokenId];\\n }\\n\\n /**\\n * @dev See {IERC721-setApprovalForAll}.\\n */\\n function setApprovalForAll(address operator, bool approved) public virtual override {\\n _setApprovalForAll(_msgSender(), operator, approved);\\n }\\n\\n /**\\n * @dev See {IERC721-isApprovedForAll}.\\n */\\n function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) {\\n return _operatorApprovals[owner][operator];\\n }\\n\\n /**\\n * @dev See {IERC721-transferFrom}.\\n */\\n function transferFrom(address from, address to, uint256 tokenId) public virtual override {\\n //solhint-disable-next-line max-line-length\\n require(_isApprovedOrOwner(_msgSender(), tokenId), \\\"ERC721: caller is not token owner or approved\\\");\\n\\n _transfer(from, to, tokenId);\\n }\\n\\n /**\\n * @dev See {IERC721-safeTransferFrom}.\\n */\\n function safeTransferFrom(address from, address to, uint256 tokenId) public virtual override {\\n safeTransferFrom(from, to, tokenId, \\\"\\\");\\n }\\n\\n /**\\n * @dev See {IERC721-safeTransferFrom}.\\n */\\n function safeTransferFrom(address from, address to, uint256 tokenId, bytes memory data) public virtual override {\\n require(_isApprovedOrOwner(_msgSender(), tokenId), \\\"ERC721: caller is not token owner or approved\\\");\\n _safeTransfer(from, to, tokenId, data);\\n }\\n\\n /**\\n * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\\n * are aware of the ERC721 protocol to prevent tokens from being forever locked.\\n *\\n * `data` is additional data, it has no specified format and it is sent in call to `to`.\\n *\\n * This internal function is equivalent to {safeTransferFrom}, and can be used to e.g.\\n * implement alternative mechanisms to perform token transfer, such as signature-based.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must exist and be owned by `from`.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n *\\n * Emits a {Transfer} event.\\n */\\n function _safeTransfer(address from, address to, uint256 tokenId, bytes memory data) internal virtual {\\n _transfer(from, to, tokenId);\\n require(_checkOnERC721Received(from, to, tokenId, data), \\\"ERC721: transfer to non ERC721Receiver implementer\\\");\\n }\\n\\n /**\\n * @dev Returns the owner of the `tokenId`. Does NOT revert if token doesn't exist\\n */\\n function _ownerOf(uint256 tokenId) internal view virtual returns (address) {\\n return _owners[tokenId];\\n }\\n\\n /**\\n * @dev Returns whether `tokenId` exists.\\n *\\n * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}.\\n *\\n * Tokens start existing when they are minted (`_mint`),\\n * and stop existing when they are burned (`_burn`).\\n */\\n function _exists(uint256 tokenId) internal view virtual returns (bool) {\\n return _ownerOf(tokenId) != address(0);\\n }\\n\\n /**\\n * @dev Returns whether `spender` is allowed to manage `tokenId`.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must exist.\\n */\\n function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) {\\n address owner = ERC721.ownerOf(tokenId);\\n return (spender == owner || isApprovedForAll(owner, spender) || getApproved(tokenId) == spender);\\n }\\n\\n /**\\n * @dev Safely mints `tokenId` and transfers it to `to`.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must not exist.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n *\\n * Emits a {Transfer} event.\\n */\\n function _safeMint(address to, uint256 tokenId) internal virtual {\\n _safeMint(to, tokenId, \\\"\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\\n * forwarded in {IERC721Receiver-onERC721Received} to contract recipients.\\n */\\n function _safeMint(address to, uint256 tokenId, bytes memory data) internal virtual {\\n _mint(to, tokenId);\\n require(\\n _checkOnERC721Received(address(0), to, tokenId, data),\\n \\\"ERC721: transfer to non ERC721Receiver implementer\\\"\\n );\\n }\\n\\n /**\\n * @dev Mints `tokenId` and transfers it to `to`.\\n *\\n * WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\\n *\\n * Requirements:\\n *\\n * - `tokenId` must not exist.\\n * - `to` cannot be the zero address.\\n *\\n * Emits a {Transfer} event.\\n */\\n function _mint(address to, uint256 tokenId) internal virtual {\\n require(to != address(0), \\\"ERC721: mint to the zero address\\\");\\n require(!_exists(tokenId), \\\"ERC721: token already minted\\\");\\n\\n _beforeTokenTransfer(address(0), to, tokenId, 1);\\n\\n // Check that tokenId was not minted by `_beforeTokenTransfer` hook\\n require(!_exists(tokenId), \\\"ERC721: token already minted\\\");\\n\\n unchecked {\\n // Will not overflow unless all 2**256 token ids are minted to the same owner.\\n // Given that tokens are minted one by one, it is impossible in practice that\\n // this ever happens. Might change if we allow batch minting.\\n // The ERC fails to describe this case.\\n _balances[to] += 1;\\n }\\n\\n _owners[tokenId] = to;\\n\\n emit Transfer(address(0), to, tokenId);\\n\\n _afterTokenTransfer(address(0), to, tokenId, 1);\\n }\\n\\n /**\\n * @dev Destroys `tokenId`.\\n * The approval is cleared when the token is burned.\\n * This is an internal function that does not check if the sender is authorized to operate on the token.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must exist.\\n *\\n * Emits a {Transfer} event.\\n */\\n function _burn(uint256 tokenId) internal virtual {\\n address owner = ERC721.ownerOf(tokenId);\\n\\n _beforeTokenTransfer(owner, address(0), tokenId, 1);\\n\\n // Update ownership in case tokenId was transferred by `_beforeTokenTransfer` hook\\n owner = ERC721.ownerOf(tokenId);\\n\\n // Clear approvals\\n delete _tokenApprovals[tokenId];\\n\\n unchecked {\\n // Cannot overflow, as that would require more tokens to be burned/transferred\\n // out than the owner initially received through minting and transferring in.\\n _balances[owner] -= 1;\\n }\\n delete _owners[tokenId];\\n\\n emit Transfer(owner, address(0), tokenId);\\n\\n _afterTokenTransfer(owner, address(0), tokenId, 1);\\n }\\n\\n /**\\n * @dev Transfers `tokenId` from `from` to `to`.\\n * As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\\n *\\n * Requirements:\\n *\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must be owned by `from`.\\n *\\n * Emits a {Transfer} event.\\n */\\n function _transfer(address from, address to, uint256 tokenId) internal virtual {\\n require(ERC721.ownerOf(tokenId) == from, \\\"ERC721: transfer from incorrect owner\\\");\\n require(to != address(0), \\\"ERC721: transfer to the zero address\\\");\\n\\n _beforeTokenTransfer(from, to, tokenId, 1);\\n\\n // Check that tokenId was not transferred by `_beforeTokenTransfer` hook\\n require(ERC721.ownerOf(tokenId) == from, \\\"ERC721: transfer from incorrect owner\\\");\\n\\n // Clear approvals from the previous owner\\n delete _tokenApprovals[tokenId];\\n\\n unchecked {\\n // `_balances[from]` cannot overflow for the same reason as described in `_burn`:\\n // `from`'s balance is the number of token held, which is at least one before the current\\n // transfer.\\n // `_balances[to]` could overflow in the conditions described in `_mint`. That would require\\n // all 2**256 token ids to be minted, which in practice is impossible.\\n _balances[from] -= 1;\\n _balances[to] += 1;\\n }\\n _owners[tokenId] = to;\\n\\n emit Transfer(from, to, tokenId);\\n\\n _afterTokenTransfer(from, to, tokenId, 1);\\n }\\n\\n /**\\n * @dev Approve `to` to operate on `tokenId`\\n *\\n * Emits an {Approval} event.\\n */\\n function _approve(address to, uint256 tokenId) internal virtual {\\n _tokenApprovals[tokenId] = to;\\n emit Approval(ERC721.ownerOf(tokenId), to, tokenId);\\n }\\n\\n /**\\n * @dev Approve `operator` to operate on all of `owner` tokens\\n *\\n * Emits an {ApprovalForAll} event.\\n */\\n function _setApprovalForAll(address owner, address operator, bool approved) internal virtual {\\n require(owner != operator, \\\"ERC721: approve to caller\\\");\\n _operatorApprovals[owner][operator] = approved;\\n emit ApprovalForAll(owner, operator, approved);\\n }\\n\\n /**\\n * @dev Reverts if the `tokenId` has not been minted yet.\\n */\\n function _requireMinted(uint256 tokenId) internal view virtual {\\n require(_exists(tokenId), \\\"ERC721: invalid token ID\\\");\\n }\\n\\n /**\\n * @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address.\\n * The call is not executed if the target address is not a contract.\\n *\\n * @param from address representing the previous owner of the given token ID\\n * @param to target address that will receive the tokens\\n * @param tokenId uint256 ID of the token to be transferred\\n * @param data bytes optional data to send along with the call\\n * @return bool whether the call correctly returned the expected magic value\\n */\\n function _checkOnERC721Received(\\n address from,\\n address to,\\n uint256 tokenId,\\n bytes memory data\\n ) private returns (bool) {\\n if (to.isContract()) {\\n try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, data) returns (bytes4 retval) {\\n return retval == IERC721Receiver.onERC721Received.selector;\\n } catch (bytes memory reason) {\\n if (reason.length == 0) {\\n revert(\\\"ERC721: transfer to non ERC721Receiver implementer\\\");\\n } else {\\n /// @solidity memory-safe-assembly\\n assembly {\\n revert(add(32, reason), mload(reason))\\n }\\n }\\n }\\n } else {\\n return true;\\n }\\n }\\n\\n /**\\n * @dev Hook that is called before any token transfer. This includes minting and burning. If {ERC721Consecutive} is\\n * used, the hook may be called as part of a consecutive (batch) mint, as indicated by `batchSize` greater than 1.\\n *\\n * Calling conditions:\\n *\\n * - When `from` and `to` are both non-zero, ``from``'s tokens will be transferred to `to`.\\n * - When `from` is zero, the tokens will be minted for `to`.\\n * - When `to` is zero, ``from``'s tokens will be burned.\\n * - `from` and `to` are never both zero.\\n * - `batchSize` is non-zero.\\n *\\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n */\\n function _beforeTokenTransfer(address from, address to, uint256 firstTokenId, uint256 batchSize) internal virtual {}\\n\\n /**\\n * @dev Hook that is called after any token transfer. This includes minting and burning. If {ERC721Consecutive} is\\n * used, the hook may be called as part of a consecutive (batch) mint, as indicated by `batchSize` greater than 1.\\n *\\n * Calling conditions:\\n *\\n * - When `from` and `to` are both non-zero, ``from``'s tokens were transferred to `to`.\\n * - When `from` is zero, the tokens were minted for `to`.\\n * - When `to` is zero, ``from``'s tokens were burned.\\n * - `from` and `to` are never both zero.\\n * - `batchSize` is non-zero.\\n *\\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n */\\n function _afterTokenTransfer(address from, address to, uint256 firstTokenId, uint256 batchSize) internal virtual {}\\n\\n /**\\n * @dev Unsafe write access to the balances, used by extensions that \\\"mint\\\" tokens using an {ownerOf} override.\\n *\\n * WARNING: Anyone calling this MUST ensure that the balances remain consistent with the ownership. The invariant\\n * being that for any address `a` the value returned by `balanceOf(a)` must be equal to the number of tokens such\\n * that `ownerOf(tokenId)` is `a`.\\n */\\n // solhint-disable-next-line func-name-mixedcase\\n function __unsafe_increaseBalance(address account, uint256 amount) internal {\\n _balances[account] += amount;\\n }\\n}\\n\",\"keccak256\":\"0x2c309e7df9e05e6ce15bedfe74f3c61b467fc37e0fae9eab496acf5ea0bbd7ff\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC721/IERC721.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC721 compliant contract.\\n */\\ninterface IERC721 is IERC165 {\\n /**\\n * @dev Emitted when `tokenId` token is transferred from `from` to `to`.\\n */\\n event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);\\n\\n /**\\n * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.\\n */\\n event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);\\n\\n /**\\n * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\\n */\\n event ApprovalForAll(address indexed owner, address indexed operator, bool approved);\\n\\n /**\\n * @dev Returns the number of tokens in ``owner``'s account.\\n */\\n function balanceOf(address owner) external view returns (uint256 balance);\\n\\n /**\\n * @dev Returns the owner of the `tokenId` token.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must exist.\\n */\\n function ownerOf(uint256 tokenId) external view returns (address owner);\\n\\n /**\\n * @dev Safely transfers `tokenId` token from `from` to `to`.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must exist and be owned by `from`.\\n * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n *\\n * Emits a {Transfer} event.\\n */\\n function safeTransferFrom(address from, address to, uint256 tokenId, bytes calldata data) external;\\n\\n /**\\n * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\\n * are aware of the ERC721 protocol to prevent tokens from being forever locked.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must exist and be owned by `from`.\\n * - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n *\\n * Emits a {Transfer} event.\\n */\\n function safeTransferFrom(address from, address to, uint256 tokenId) external;\\n\\n /**\\n * @dev Transfers `tokenId` token from `from` to `to`.\\n *\\n * WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721\\n * or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must\\n * understand this adds an external call which potentially creates a reentrancy vulnerability.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must be owned by `from`.\\n * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transferFrom(address from, address to, uint256 tokenId) external;\\n\\n /**\\n * @dev Gives permission to `to` to transfer `tokenId` token to another account.\\n * The approval is cleared when the token is transferred.\\n *\\n * Only a single account can be approved at a time, so approving the zero address clears previous approvals.\\n *\\n * Requirements:\\n *\\n * - The caller must own the token or be an approved operator.\\n * - `tokenId` must exist.\\n *\\n * Emits an {Approval} event.\\n */\\n function approve(address to, uint256 tokenId) external;\\n\\n /**\\n * @dev Approve or remove `operator` as an operator for the caller.\\n * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\\n *\\n * Requirements:\\n *\\n * - The `operator` cannot be the caller.\\n *\\n * Emits an {ApprovalForAll} event.\\n */\\n function setApprovalForAll(address operator, bool approved) external;\\n\\n /**\\n * @dev Returns the account approved for `tokenId` token.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must exist.\\n */\\n function getApproved(uint256 tokenId) external view returns (address operator);\\n\\n /**\\n * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\\n *\\n * See {setApprovalForAll}\\n */\\n function isApprovedForAll(address owner, address operator) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x5bce51e11f7d194b79ea59fe00c9e8de9fa2c5530124960f29a24d4c740a3266\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC721/IERC721Receiver.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title ERC721 token receiver interface\\n * @dev Interface for any contract that wants to support safeTransfers\\n * from ERC721 asset contracts.\\n */\\ninterface IERC721Receiver {\\n /**\\n * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}\\n * by `operator` from `from`, this function is called.\\n *\\n * It must return its Solidity selector to confirm the token transfer.\\n * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted.\\n *\\n * The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`.\\n */\\n function onERC721Received(\\n address operator,\\n address from,\\n uint256 tokenId,\\n bytes calldata data\\n ) external returns (bytes4);\\n}\\n\",\"keccak256\":\"0xa82b58eca1ee256be466e536706850163d2ec7821945abd6b4778cfb3bee37da\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Metadata.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC721.sol\\\";\\n\\n/**\\n * @title ERC-721 Non-Fungible Token Standard, optional metadata extension\\n * @dev See https://eips.ethereum.org/EIPS/eip-721\\n */\\ninterface IERC721Metadata is IERC721 {\\n /**\\n * @dev Returns the token collection name.\\n */\\n function name() external view returns (string memory);\\n\\n /**\\n * @dev Returns the token collection symbol.\\n */\\n function symbol() external view returns (string memory);\\n\\n /**\\n * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.\\n */\\n function tokenURI(uint256 tokenId) external view returns (string memory);\\n}\\n\",\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n function _contextSuffixLength() internal view virtual returns (uint256) {\\n return 0;\\n }\\n}\\n\",\"keccak256\":\"0xa92e4fa126feb6907daa0513ddd816b2eb91f30a808de54f63c17d0e162c3439\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Strings.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Strings.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./math/Math.sol\\\";\\nimport \\\"./math/SignedMath.sol\\\";\\n\\n/**\\n * @dev String operations.\\n */\\nlibrary Strings {\\n bytes16 private constant _SYMBOLS = \\\"0123456789abcdef\\\";\\n uint8 private constant _ADDRESS_LENGTH = 20;\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` decimal representation.\\n */\\n function toString(uint256 value) internal pure returns (string memory) {\\n unchecked {\\n uint256 length = Math.log10(value) + 1;\\n string memory buffer = new string(length);\\n uint256 ptr;\\n /// @solidity memory-safe-assembly\\n assembly {\\n ptr := add(buffer, add(32, length))\\n }\\n while (true) {\\n ptr--;\\n /// @solidity memory-safe-assembly\\n assembly {\\n mstore8(ptr, byte(mod(value, 10), _SYMBOLS))\\n }\\n value /= 10;\\n if (value == 0) break;\\n }\\n return buffer;\\n }\\n }\\n\\n /**\\n * @dev Converts a `int256` to its ASCII `string` decimal representation.\\n */\\n function toString(int256 value) internal pure returns (string memory) {\\n return string(abi.encodePacked(value < 0 ? \\\"-\\\" : \\\"\\\", toString(SignedMath.abs(value))));\\n }\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\\n */\\n function toHexString(uint256 value) internal pure returns (string memory) {\\n unchecked {\\n return toHexString(value, Math.log256(value) + 1);\\n }\\n }\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\\n */\\n function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\\n bytes memory buffer = new bytes(2 * length + 2);\\n buffer[0] = \\\"0\\\";\\n buffer[1] = \\\"x\\\";\\n for (uint256 i = 2 * length + 1; i > 1; --i) {\\n buffer[i] = _SYMBOLS[value & 0xf];\\n value >>= 4;\\n }\\n require(value == 0, \\\"Strings: hex length insufficient\\\");\\n return string(buffer);\\n }\\n\\n /**\\n * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.\\n */\\n function toHexString(address addr) internal pure returns (string memory) {\\n return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);\\n }\\n\\n /**\\n * @dev Returns true if the two strings are equal.\\n */\\n function equal(string memory a, string memory b) internal pure returns (bool) {\\n return keccak256(bytes(a)) == keccak256(bytes(b));\\n }\\n}\\n\",\"keccak256\":\"0x3088eb2868e8d13d89d16670b5f8612c4ab9ff8956272837d8e90106c59c14a0\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165 is IERC165 {\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165).interfaceId;\\n }\\n}\\n\",\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/math/Math.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard math utilities missing in the Solidity language.\\n */\\nlibrary Math {\\n enum Rounding {\\n Down, // Toward negative infinity\\n Up, // Toward infinity\\n Zero // Toward zero\\n }\\n\\n /**\\n * @dev Returns the largest of two numbers.\\n */\\n function max(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two numbers.\\n */\\n function min(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two numbers. The result is rounded towards\\n * zero.\\n */\\n function average(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b) / 2 can overflow.\\n return (a & b) + (a ^ b) / 2;\\n }\\n\\n /**\\n * @dev Returns the ceiling of the division of two numbers.\\n *\\n * This differs from standard division with `/` in that it rounds up instead\\n * of rounding down.\\n */\\n function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b - 1) / b can overflow on addition, so we distribute.\\n return a == 0 ? 0 : (a - 1) / b + 1;\\n }\\n\\n /**\\n * @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\\n * @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)\\n * with further edits by Uniswap Labs also under MIT license.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator) internal pure returns (uint256 result) {\\n unchecked {\\n // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use\\n // use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\\n // variables such that product = prod1 * 2^256 + prod0.\\n uint256 prod0; // Least significant 256 bits of the product\\n uint256 prod1; // Most significant 256 bits of the product\\n assembly {\\n let mm := mulmod(x, y, not(0))\\n prod0 := mul(x, y)\\n prod1 := sub(sub(mm, prod0), lt(mm, prod0))\\n }\\n\\n // Handle non-overflow cases, 256 by 256 division.\\n if (prod1 == 0) {\\n // Solidity will revert if denominator == 0, unlike the div opcode on its own.\\n // The surrounding unchecked block does not change this fact.\\n // See https://docs.soliditylang.org/en/latest/control-structures.html#checked-or-unchecked-arithmetic.\\n return prod0 / denominator;\\n }\\n\\n // Make sure the result is less than 2^256. Also prevents denominator == 0.\\n require(denominator > prod1, \\\"Math: mulDiv overflow\\\");\\n\\n ///////////////////////////////////////////////\\n // 512 by 256 division.\\n ///////////////////////////////////////////////\\n\\n // Make division exact by subtracting the remainder from [prod1 prod0].\\n uint256 remainder;\\n assembly {\\n // Compute remainder using mulmod.\\n remainder := mulmod(x, y, denominator)\\n\\n // Subtract 256 bit number from 512 bit number.\\n prod1 := sub(prod1, gt(remainder, prod0))\\n prod0 := sub(prod0, remainder)\\n }\\n\\n // Factor powers of two out of denominator and compute largest power of two divisor of denominator. Always >= 1.\\n // See https://cs.stackexchange.com/q/138556/92363.\\n\\n // Does not overflow because the denominator cannot be zero at this stage in the function.\\n uint256 twos = denominator & (~denominator + 1);\\n assembly {\\n // Divide denominator by twos.\\n denominator := div(denominator, twos)\\n\\n // Divide [prod1 prod0] by twos.\\n prod0 := div(prod0, twos)\\n\\n // Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one.\\n twos := add(div(sub(0, twos), twos), 1)\\n }\\n\\n // Shift in bits from prod1 into prod0.\\n prod0 |= prod1 * twos;\\n\\n // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such\\n // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for\\n // four bits. That is, denominator * inv = 1 mod 2^4.\\n uint256 inverse = (3 * denominator) ^ 2;\\n\\n // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also works\\n // in modular arithmetic, doubling the correct bits in each step.\\n inverse *= 2 - denominator * inverse; // inverse mod 2^8\\n inverse *= 2 - denominator * inverse; // inverse mod 2^16\\n inverse *= 2 - denominator * inverse; // inverse mod 2^32\\n inverse *= 2 - denominator * inverse; // inverse mod 2^64\\n inverse *= 2 - denominator * inverse; // inverse mod 2^128\\n inverse *= 2 - denominator * inverse; // inverse mod 2^256\\n\\n // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\\n // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is\\n // less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1\\n // is no longer required.\\n result = prod0 * inverse;\\n return result;\\n }\\n }\\n\\n /**\\n * @notice Calculates x * y / denominator with full precision, following the selected rounding direction.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator, Rounding rounding) internal pure returns (uint256) {\\n uint256 result = mulDiv(x, y, denominator);\\n if (rounding == Rounding.Up && mulmod(x, y, denominator) > 0) {\\n result += 1;\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down.\\n *\\n * Inspired by Henry S. Warren, Jr.'s \\\"Hacker's Delight\\\" (Chapter 11).\\n */\\n function sqrt(uint256 a) internal pure returns (uint256) {\\n if (a == 0) {\\n return 0;\\n }\\n\\n // For our first guess, we get the biggest power of 2 which is smaller than the square root of the target.\\n //\\n // We know that the \\\"msb\\\" (most significant bit) of our target number `a` is a power of 2 such that we have\\n // `msb(a) <= a < 2*msb(a)`. This value can be written `msb(a)=2**k` with `k=log2(a)`.\\n //\\n // This can be rewritten `2**log2(a) <= a < 2**(log2(a) + 1)`\\n // \\u2192 `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))`\\n // \\u2192 `2**(k/2) <= sqrt(a) < 2**((k+1)/2) <= 2**(k/2 + 1)`\\n //\\n // Consequently, `2**(log2(a) / 2)` is a good first approximation of `sqrt(a)` with at least 1 correct bit.\\n uint256 result = 1 << (log2(a) >> 1);\\n\\n // At this point `result` is an estimation with one bit of precision. We know the true value is a uint128,\\n // since it is the square root of a uint256. Newton's method converges quadratically (precision doubles at\\n // every iteration). We thus need at most 7 iteration to turn our partial result with one bit of precision\\n // into the expected uint128 result.\\n unchecked {\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n return min(result, a / result);\\n }\\n }\\n\\n /**\\n * @notice Calculates sqrt(a), following the selected rounding direction.\\n */\\n function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = sqrt(a);\\n return result + (rounding == Rounding.Up && result * result < a ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 2, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 128;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 64;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 32;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 16;\\n }\\n if (value >> 8 > 0) {\\n value >>= 8;\\n result += 8;\\n }\\n if (value >> 4 > 0) {\\n value >>= 4;\\n result += 4;\\n }\\n if (value >> 2 > 0) {\\n value >>= 2;\\n result += 2;\\n }\\n if (value >> 1 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 2, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log2(value);\\n return result + (rounding == Rounding.Up && 1 << result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 10, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >= 10 ** 64) {\\n value /= 10 ** 64;\\n result += 64;\\n }\\n if (value >= 10 ** 32) {\\n value /= 10 ** 32;\\n result += 32;\\n }\\n if (value >= 10 ** 16) {\\n value /= 10 ** 16;\\n result += 16;\\n }\\n if (value >= 10 ** 8) {\\n value /= 10 ** 8;\\n result += 8;\\n }\\n if (value >= 10 ** 4) {\\n value /= 10 ** 4;\\n result += 4;\\n }\\n if (value >= 10 ** 2) {\\n value /= 10 ** 2;\\n result += 2;\\n }\\n if (value >= 10 ** 1) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log10(value);\\n return result + (rounding == Rounding.Up && 10 ** result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 256, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n *\\n * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.\\n */\\n function log256(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 16;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 8;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 4;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 2;\\n }\\n if (value >> 8 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 256, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log256(value);\\n return result + (rounding == Rounding.Up && 1 << (result << 3) < value ? 1 : 0);\\n }\\n }\\n}\\n\",\"keccak256\":\"0xe4455ac1eb7fc497bb7402579e7b4d64d928b846fce7d2b6fde06d366f21c2b3\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/SignedMath.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard signed math utilities missing in the Solidity language.\\n */\\nlibrary SignedMath {\\n /**\\n * @dev Returns the largest of two signed numbers.\\n */\\n function max(int256 a, int256 b) internal pure returns (int256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two signed numbers.\\n */\\n function min(int256 a, int256 b) internal pure returns (int256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two signed numbers without overflow.\\n * The result is rounded towards zero.\\n */\\n function average(int256 a, int256 b) internal pure returns (int256) {\\n // Formula from the book \\\"Hacker's Delight\\\"\\n int256 x = (a & b) + ((a ^ b) >> 1);\\n return x + (int256(uint256(x) >> 255) & (a ^ b));\\n }\\n\\n /**\\n * @dev Returns the absolute unsigned value of a signed value.\\n */\\n function abs(int256 n) internal pure returns (uint256) {\\n unchecked {\\n // must be unchecked in order to support `n = type(int256).min`\\n return uint256(n >= 0 ? n : -n);\\n }\\n }\\n}\\n\",\"keccak256\":\"0xf92515413956f529d95977adc9b0567d583c6203fc31ab1c23824c35187e3ddc\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":7872,"contract":"@openzeppelin/contracts/token/ERC721/ERC721.sol:ERC721","label":"_name","offset":0,"slot":"0","type":"t_string_storage"},{"astId":7874,"contract":"@openzeppelin/contracts/token/ERC721/ERC721.sol:ERC721","label":"_symbol","offset":0,"slot":"1","type":"t_string_storage"},{"astId":7878,"contract":"@openzeppelin/contracts/token/ERC721/ERC721.sol:ERC721","label":"_owners","offset":0,"slot":"2","type":"t_mapping(t_uint256,t_address)"},{"astId":7882,"contract":"@openzeppelin/contracts/token/ERC721/ERC721.sol:ERC721","label":"_balances","offset":0,"slot":"3","type":"t_mapping(t_address,t_uint256)"},{"astId":7886,"contract":"@openzeppelin/contracts/token/ERC721/ERC721.sol:ERC721","label":"_tokenApprovals","offset":0,"slot":"4","type":"t_mapping(t_uint256,t_address)"},{"astId":7892,"contract":"@openzeppelin/contracts/token/ERC721/ERC721.sol:ERC721","label":"_operatorApprovals","offset":0,"slot":"5","type":"t_mapping(t_address,t_mapping(t_address,t_bool))"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_mapping(t_address,t_bool)":{"encoding":"mapping","key":"t_address","label":"mapping(address => bool)","numberOfBytes":"32","value":"t_bool"},"t_mapping(t_address,t_mapping(t_address,t_bool))":{"encoding":"mapping","key":"t_address","label":"mapping(address => mapping(address => bool))","numberOfBytes":"32","value":"t_mapping(t_address,t_bool)"},"t_mapping(t_address,t_uint256)":{"encoding":"mapping","key":"t_address","label":"mapping(address => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_mapping(t_uint256,t_address)":{"encoding":"mapping","key":"t_uint256","label":"mapping(uint256 => address)","numberOfBytes":"32","value":"t_address"},"t_string_storage":{"encoding":"bytes","label":"string","numberOfBytes":"32"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/token/ERC721/IERC721.sol":{"IERC721":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"Required interface of an ERC721 compliant contract.","events":{"Approval(address,address,uint256)":{"details":"Emitted when `owner` enables `approved` to manage the `tokenId` token."},"ApprovalForAll(address,address,bool)":{"details":"Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets."},"Transfer(address,address,uint256)":{"details":"Emitted when `tokenId` token is transferred from `from` to `to`."}},"kind":"dev","methods":{"approve(address,uint256)":{"details":"Gives permission to `to` to transfer `tokenId` token to another account. The approval is cleared when the token is transferred. Only a single account can be approved at a time, so approving the zero address clears previous approvals. Requirements: - The caller must own the token or be an approved operator. - `tokenId` must exist. Emits an {Approval} event."},"balanceOf(address)":{"details":"Returns the number of tokens in ``owner``'s account."},"getApproved(uint256)":{"details":"Returns the account approved for `tokenId` token. Requirements: - `tokenId` must exist."},"isApprovedForAll(address,address)":{"details":"Returns if the `operator` is allowed to manage all of the assets of `owner`. See {setApprovalForAll}"},"ownerOf(uint256)":{"details":"Returns the owner of the `tokenId` token. Requirements: - `tokenId` must exist."},"safeTransferFrom(address,address,uint256)":{"details":"Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients are aware of the ERC721 protocol to prevent tokens from being forever locked. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event."},"safeTransferFrom(address,address,uint256,bytes)":{"details":"Safely transfers `tokenId` token from `from` to `to`. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event."},"setApprovalForAll(address,bool)":{"details":"Approve or remove `operator` as an operator for the caller. Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. Requirements: - The `operator` cannot be the caller. Emits an {ApprovalForAll} event."},"supportsInterface(bytes4)":{"details":"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas."},"transferFrom(address,address,uint256)":{"details":"Transfers `tokenId` token from `from` to `to`. WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721 or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must understand this adds an external call which potentially creates a reentrancy vulnerability. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. Emits a {Transfer} event."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","getApproved(uint256)":"081812fc","isApprovedForAll(address,address)":"e985e9c5","ownerOf(uint256)":"6352211e","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Required interface of an ERC721 compliant contract.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when `owner` enables `approved` to manage the `tokenId` token.\"},\"ApprovalForAll(address,address,bool)\":{\"details\":\"Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `tokenId` token is transferred from `from` to `to`.\"}},\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"Gives permission to `to` to transfer `tokenId` token to another account. The approval is cleared when the token is transferred. Only a single account can be approved at a time, so approving the zero address clears previous approvals. Requirements: - The caller must own the token or be an approved operator. - `tokenId` must exist. Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the number of tokens in ``owner``'s account.\"},\"getApproved(uint256)\":{\"details\":\"Returns the account approved for `tokenId` token. Requirements: - `tokenId` must exist.\"},\"isApprovedForAll(address,address)\":{\"details\":\"Returns if the `operator` is allowed to manage all of the assets of `owner`. See {setApprovalForAll}\"},\"ownerOf(uint256)\":{\"details\":\"Returns the owner of the `tokenId` token. Requirements: - `tokenId` must exist.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients are aware of the ERC721 protocol to prevent tokens from being forever locked. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"Approve or remove `operator` as an operator for the caller. Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. Requirements: - The `operator` cannot be the caller. Emits an {ApprovalForAll} event.\"},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Transfers `tokenId` token from `from` to `to`. WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721 or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must understand this adds an external call which potentially creates a reentrancy vulnerability. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":\"IERC721\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC721/IERC721.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC721 compliant contract.\\n */\\ninterface IERC721 is IERC165 {\\n /**\\n * @dev Emitted when `tokenId` token is transferred from `from` to `to`.\\n */\\n event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);\\n\\n /**\\n * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.\\n */\\n event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);\\n\\n /**\\n * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\\n */\\n event ApprovalForAll(address indexed owner, address indexed operator, bool approved);\\n\\n /**\\n * @dev Returns the number of tokens in ``owner``'s account.\\n */\\n function balanceOf(address owner) external view returns (uint256 balance);\\n\\n /**\\n * @dev Returns the owner of the `tokenId` token.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must exist.\\n */\\n function ownerOf(uint256 tokenId) external view returns (address owner);\\n\\n /**\\n * @dev Safely transfers `tokenId` token from `from` to `to`.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must exist and be owned by `from`.\\n * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n *\\n * Emits a {Transfer} event.\\n */\\n function safeTransferFrom(address from, address to, uint256 tokenId, bytes calldata data) external;\\n\\n /**\\n * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\\n * are aware of the ERC721 protocol to prevent tokens from being forever locked.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must exist and be owned by `from`.\\n * - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n *\\n * Emits a {Transfer} event.\\n */\\n function safeTransferFrom(address from, address to, uint256 tokenId) external;\\n\\n /**\\n * @dev Transfers `tokenId` token from `from` to `to`.\\n *\\n * WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721\\n * or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must\\n * understand this adds an external call which potentially creates a reentrancy vulnerability.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must be owned by `from`.\\n * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transferFrom(address from, address to, uint256 tokenId) external;\\n\\n /**\\n * @dev Gives permission to `to` to transfer `tokenId` token to another account.\\n * The approval is cleared when the token is transferred.\\n *\\n * Only a single account can be approved at a time, so approving the zero address clears previous approvals.\\n *\\n * Requirements:\\n *\\n * - The caller must own the token or be an approved operator.\\n * - `tokenId` must exist.\\n *\\n * Emits an {Approval} event.\\n */\\n function approve(address to, uint256 tokenId) external;\\n\\n /**\\n * @dev Approve or remove `operator` as an operator for the caller.\\n * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\\n *\\n * Requirements:\\n *\\n * - The `operator` cannot be the caller.\\n *\\n * Emits an {ApprovalForAll} event.\\n */\\n function setApprovalForAll(address operator, bool approved) external;\\n\\n /**\\n * @dev Returns the account approved for `tokenId` token.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must exist.\\n */\\n function getApproved(uint256 tokenId) external view returns (address operator);\\n\\n /**\\n * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\\n *\\n * See {setApprovalForAll}\\n */\\n function isApprovedForAll(address owner, address operator) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x5bce51e11f7d194b79ea59fe00c9e8de9fa2c5530124960f29a24d4c740a3266\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol":{"IERC721Receiver":{"abi":[{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"Interface for any contract that wants to support safeTransfers from ERC721 asset contracts.","kind":"dev","methods":{"onERC721Received(address,address,uint256,bytes)":{"details":"Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom} by `operator` from `from`, this function is called. It must return its Solidity selector to confirm the token transfer. If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted. The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`."}},"title":"ERC721 token receiver interface","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"onERC721Received(address,address,uint256,bytes)":"150b7a02"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onERC721Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface for any contract that wants to support safeTransfers from ERC721 asset contracts.\",\"kind\":\"dev\",\"methods\":{\"onERC721Received(address,address,uint256,bytes)\":{\"details\":\"Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom} by `operator` from `from`, this function is called. It must return its Solidity selector to confirm the token transfer. If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted. The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`.\"}},\"title\":\"ERC721 token receiver interface\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":\"IERC721Receiver\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC721/IERC721Receiver.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title ERC721 token receiver interface\\n * @dev Interface for any contract that wants to support safeTransfers\\n * from ERC721 asset contracts.\\n */\\ninterface IERC721Receiver {\\n /**\\n * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}\\n * by `operator` from `from`, this function is called.\\n *\\n * It must return its Solidity selector to confirm the token transfer.\\n * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted.\\n *\\n * The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`.\\n */\\n function onERC721Received(\\n address operator,\\n address from,\\n uint256 tokenId,\\n bytes calldata data\\n ) external returns (bytes4);\\n}\\n\",\"keccak256\":\"0xa82b58eca1ee256be466e536706850163d2ec7821945abd6b4778cfb3bee37da\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol":{"IERC721Metadata":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"See https://eips.ethereum.org/EIPS/eip-721","kind":"dev","methods":{"approve(address,uint256)":{"details":"Gives permission to `to` to transfer `tokenId` token to another account. The approval is cleared when the token is transferred. Only a single account can be approved at a time, so approving the zero address clears previous approvals. Requirements: - The caller must own the token or be an approved operator. - `tokenId` must exist. Emits an {Approval} event."},"balanceOf(address)":{"details":"Returns the number of tokens in ``owner``'s account."},"getApproved(uint256)":{"details":"Returns the account approved for `tokenId` token. Requirements: - `tokenId` must exist."},"isApprovedForAll(address,address)":{"details":"Returns if the `operator` is allowed to manage all of the assets of `owner`. See {setApprovalForAll}"},"name()":{"details":"Returns the token collection name."},"ownerOf(uint256)":{"details":"Returns the owner of the `tokenId` token. Requirements: - `tokenId` must exist."},"safeTransferFrom(address,address,uint256)":{"details":"Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients are aware of the ERC721 protocol to prevent tokens from being forever locked. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event."},"safeTransferFrom(address,address,uint256,bytes)":{"details":"Safely transfers `tokenId` token from `from` to `to`. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event."},"setApprovalForAll(address,bool)":{"details":"Approve or remove `operator` as an operator for the caller. Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. Requirements: - The `operator` cannot be the caller. Emits an {ApprovalForAll} event."},"supportsInterface(bytes4)":{"details":"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas."},"symbol()":{"details":"Returns the token collection symbol."},"tokenURI(uint256)":{"details":"Returns the Uniform Resource Identifier (URI) for `tokenId` token."},"transferFrom(address,address,uint256)":{"details":"Transfers `tokenId` token from `from` to `to`. WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721 or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must understand this adds an external call which potentially creates a reentrancy vulnerability. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. Emits a {Transfer} event."}},"title":"ERC-721 Non-Fungible Token Standard, optional metadata extension","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","getApproved(uint256)":"081812fc","isApprovedForAll(address,address)":"e985e9c5","name()":"06fdde03","ownerOf(uint256)":"6352211e","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","tokenURI(uint256)":"c87b56dd","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"See https://eips.ethereum.org/EIPS/eip-721\",\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"Gives permission to `to` to transfer `tokenId` token to another account. The approval is cleared when the token is transferred. Only a single account can be approved at a time, so approving the zero address clears previous approvals. Requirements: - The caller must own the token or be an approved operator. - `tokenId` must exist. Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the number of tokens in ``owner``'s account.\"},\"getApproved(uint256)\":{\"details\":\"Returns the account approved for `tokenId` token. Requirements: - `tokenId` must exist.\"},\"isApprovedForAll(address,address)\":{\"details\":\"Returns if the `operator` is allowed to manage all of the assets of `owner`. See {setApprovalForAll}\"},\"name()\":{\"details\":\"Returns the token collection name.\"},\"ownerOf(uint256)\":{\"details\":\"Returns the owner of the `tokenId` token. Requirements: - `tokenId` must exist.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients are aware of the ERC721 protocol to prevent tokens from being forever locked. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"Approve or remove `operator` as an operator for the caller. Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. Requirements: - The `operator` cannot be the caller. Emits an {ApprovalForAll} event.\"},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"},\"symbol()\":{\"details\":\"Returns the token collection symbol.\"},\"tokenURI(uint256)\":{\"details\":\"Returns the Uniform Resource Identifier (URI) for `tokenId` token.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Transfers `tokenId` token from `from` to `to`. WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721 or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must understand this adds an external call which potentially creates a reentrancy vulnerability. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. Emits a {Transfer} event.\"}},\"title\":\"ERC-721 Non-Fungible Token Standard, optional metadata extension\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":\"IERC721Metadata\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC721/IERC721.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC721 compliant contract.\\n */\\ninterface IERC721 is IERC165 {\\n /**\\n * @dev Emitted when `tokenId` token is transferred from `from` to `to`.\\n */\\n event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);\\n\\n /**\\n * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.\\n */\\n event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);\\n\\n /**\\n * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\\n */\\n event ApprovalForAll(address indexed owner, address indexed operator, bool approved);\\n\\n /**\\n * @dev Returns the number of tokens in ``owner``'s account.\\n */\\n function balanceOf(address owner) external view returns (uint256 balance);\\n\\n /**\\n * @dev Returns the owner of the `tokenId` token.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must exist.\\n */\\n function ownerOf(uint256 tokenId) external view returns (address owner);\\n\\n /**\\n * @dev Safely transfers `tokenId` token from `from` to `to`.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must exist and be owned by `from`.\\n * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n *\\n * Emits a {Transfer} event.\\n */\\n function safeTransferFrom(address from, address to, uint256 tokenId, bytes calldata data) external;\\n\\n /**\\n * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\\n * are aware of the ERC721 protocol to prevent tokens from being forever locked.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must exist and be owned by `from`.\\n * - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n *\\n * Emits a {Transfer} event.\\n */\\n function safeTransferFrom(address from, address to, uint256 tokenId) external;\\n\\n /**\\n * @dev Transfers `tokenId` token from `from` to `to`.\\n *\\n * WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721\\n * or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must\\n * understand this adds an external call which potentially creates a reentrancy vulnerability.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must be owned by `from`.\\n * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transferFrom(address from, address to, uint256 tokenId) external;\\n\\n /**\\n * @dev Gives permission to `to` to transfer `tokenId` token to another account.\\n * The approval is cleared when the token is transferred.\\n *\\n * Only a single account can be approved at a time, so approving the zero address clears previous approvals.\\n *\\n * Requirements:\\n *\\n * - The caller must own the token or be an approved operator.\\n * - `tokenId` must exist.\\n *\\n * Emits an {Approval} event.\\n */\\n function approve(address to, uint256 tokenId) external;\\n\\n /**\\n * @dev Approve or remove `operator` as an operator for the caller.\\n * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\\n *\\n * Requirements:\\n *\\n * - The `operator` cannot be the caller.\\n *\\n * Emits an {ApprovalForAll} event.\\n */\\n function setApprovalForAll(address operator, bool approved) external;\\n\\n /**\\n * @dev Returns the account approved for `tokenId` token.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must exist.\\n */\\n function getApproved(uint256 tokenId) external view returns (address operator);\\n\\n /**\\n * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\\n *\\n * See {setApprovalForAll}\\n */\\n function isApprovedForAll(address owner, address operator) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x5bce51e11f7d194b79ea59fe00c9e8de9fa2c5530124960f29a24d4c740a3266\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Metadata.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC721.sol\\\";\\n\\n/**\\n * @title ERC-721 Non-Fungible Token Standard, optional metadata extension\\n * @dev See https://eips.ethereum.org/EIPS/eip-721\\n */\\ninterface IERC721Metadata is IERC721 {\\n /**\\n * @dev Returns the token collection name.\\n */\\n function name() external view returns (string memory);\\n\\n /**\\n * @dev Returns the token collection symbol.\\n */\\n function symbol() external view returns (string memory);\\n\\n /**\\n * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.\\n */\\n function tokenURI(uint256 tokenId) external view returns (string memory);\\n}\\n\",\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/utils/Address.sol":{"Address":{"abi":[],"devdoc":{"details":"Collection of functions related to the address type","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"602d6037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a","opcodes":"PUSH1 0x2D PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"194:9169:33:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;194:9169:33;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"194:9169:33:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"9000","executionCost":"94","totalCost":"9094"},"internal":{"_revert(bytes memory,string memory)":"infinite","functionCall(address,bytes memory)":"infinite","functionCall(address,bytes memory,string memory)":"infinite","functionCallWithValue(address,bytes memory,uint256)":"infinite","functionCallWithValue(address,bytes memory,uint256,string memory)":"infinite","functionDelegateCall(address,bytes memory)":"infinite","functionDelegateCall(address,bytes memory,string memory)":"infinite","functionStaticCall(address,bytes memory)":"infinite","functionStaticCall(address,bytes memory,string memory)":"infinite","isContract(address)":"infinite","sendValue(address payable,uint256)":"infinite","verifyCallResult(bool,bytes memory,string memory)":"infinite","verifyCallResultFromTarget(address,bool,bytes memory,string memory)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Collection of functions related to the address type\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Address.sol\":\"Address\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/utils/Context.sol":{"Context":{"abi":[],"devdoc":{"details":"Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Context.sol\":\"Context\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n function _contextSuffixLength() internal view virtual returns (uint256) {\\n return 0;\\n }\\n}\\n\",\"keccak256\":\"0xa92e4fa126feb6907daa0513ddd816b2eb91f30a808de54f63c17d0e162c3439\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/utils/Counters.sol":{"Counters":{"abi":[],"devdoc":{"author":"Matt Condon (@shrugs)","details":"Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number of elements in a mapping, issuing ERC721 ids, or counting request ids. Include with `using Counters for Counters.Counter;`","kind":"dev","methods":{},"title":"Counters","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"602d6037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a","opcodes":"PUSH1 0x2D PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"424:971:35:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;424:971:35;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"424:971:35:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"9000","executionCost":"94","totalCost":"9094"},"internal":{"current(struct Counters.Counter storage pointer)":"infinite","decrement(struct Counters.Counter storage pointer)":"infinite","increment(struct Counters.Counter storage pointer)":"infinite","reset(struct Counters.Counter storage pointer)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"author\":\"Matt Condon (@shrugs)\",\"details\":\"Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number of elements in a mapping, issuing ERC721 ids, or counting request ids. Include with `using Counters for Counters.Counter;`\",\"kind\":\"dev\",\"methods\":{},\"title\":\"Counters\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Counters.sol\":\"Counters\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Counters.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Counters.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title Counters\\n * @author Matt Condon (@shrugs)\\n * @dev Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number\\n * of elements in a mapping, issuing ERC721 ids, or counting request ids.\\n *\\n * Include with `using Counters for Counters.Counter;`\\n */\\nlibrary Counters {\\n struct Counter {\\n // This variable should never be directly accessed by users of the library: interactions must be restricted to\\n // the library's function. As of Solidity v0.5.2, this cannot be enforced, though there is a proposal to add\\n // this feature: see https://github.com/ethereum/solidity/issues/4637\\n uint256 _value; // default: 0\\n }\\n\\n function current(Counter storage counter) internal view returns (uint256) {\\n return counter._value;\\n }\\n\\n function increment(Counter storage counter) internal {\\n unchecked {\\n counter._value += 1;\\n }\\n }\\n\\n function decrement(Counter storage counter) internal {\\n uint256 value = counter._value;\\n require(value > 0, \\\"Counter: decrement overflow\\\");\\n unchecked {\\n counter._value = value - 1;\\n }\\n }\\n\\n function reset(Counter storage counter) internal {\\n counter._value = 0;\\n }\\n}\\n\",\"keccak256\":\"0xf0018c2440fbe238dd3a8732fa8e17a0f9dce84d31451dc8a32f6d62b349c9f1\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/utils/StorageSlot.sol":{"StorageSlot":{"abi":[],"devdoc":{"details":"Library for reading and writing primitive types to specific storage slots. Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts. This library helps with reading and writing to such slots without the need for inline assembly. The functions in this library return Slot structs that contain a `value` member that can be used to read or write. Example usage to set ERC1967 implementation slot: ```solidity contract ERC1967 { bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc; function _getImplementation() internal view returns (address) { return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value; } function _setImplementation(address newImplementation) internal { require(Address.isContract(newImplementation), \"ERC1967: new implementation is not a contract\"); StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation; } } ``` _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._ _Available since v4.9 for `string`, `bytes`._","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"602d6037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a","opcodes":"PUSH1 0x2D PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"1420:2685:36:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;1420:2685:36;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"1420:2685:36:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"9000","executionCost":"94","totalCost":"9094"},"internal":{"getAddressSlot(bytes32)":"infinite","getBooleanSlot(bytes32)":"infinite","getBytes32Slot(bytes32)":"infinite","getBytesSlot(bytes storage pointer)":"infinite","getBytesSlot(bytes32)":"infinite","getStringSlot(bytes32)":"infinite","getStringSlot(string storage pointer)":"infinite","getUint256Slot(bytes32)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Library for reading and writing primitive types to specific storage slots. Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts. This library helps with reading and writing to such slots without the need for inline assembly. The functions in this library return Slot structs that contain a `value` member that can be used to read or write. Example usage to set ERC1967 implementation slot: ```solidity contract ERC1967 { bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc; function _getImplementation() internal view returns (address) { return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value; } function _setImplementation(address newImplementation) internal { require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\"); StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation; } } ``` _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._ _Available since v4.9 for `string`, `bytes`._\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/StorageSlot.sol\":\"StorageSlot\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/StorageSlot.sol)\\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```solidity\\n * contract ERC1967 {\\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n * function _getImplementation() internal view returns (address) {\\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n * }\\n *\\n * function _setImplementation(address newImplementation) internal {\\n * require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n * }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._\\n * _Available since v4.9 for `string`, `bytes`._\\n */\\nlibrary StorageSlot {\\n struct AddressSlot {\\n address value;\\n }\\n\\n struct BooleanSlot {\\n bool value;\\n }\\n\\n struct Bytes32Slot {\\n bytes32 value;\\n }\\n\\n struct Uint256Slot {\\n uint256 value;\\n }\\n\\n struct StringSlot {\\n string value;\\n }\\n\\n struct BytesSlot {\\n bytes value;\\n }\\n\\n /**\\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n */\\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n */\\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n */\\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n */\\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` with member `value` located at `slot`.\\n */\\n function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\\n */\\n function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` with member `value` located at `slot`.\\n */\\n function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\\n */\\n function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n}\\n\",\"keccak256\":\"0xf09e68aa0dc6722a25bc46490e8d48ed864466d17313b8a0b254c36b54e49899\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/utils/Strings.sol":{"Strings":{"abi":[],"devdoc":{"details":"String operations.","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"602d6037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a","opcodes":"PUSH1 0x2D PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"220:2559:37:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;220:2559:37;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"220:2559:37:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"9000","executionCost":"94","totalCost":"9094"},"internal":{"equal(string memory,string memory)":"infinite","toHexString(address)":"infinite","toHexString(uint256)":"infinite","toHexString(uint256,uint256)":"infinite","toString(int256)":"infinite","toString(uint256)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"String operations.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Strings.sol\":\"Strings\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Strings.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Strings.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./math/Math.sol\\\";\\nimport \\\"./math/SignedMath.sol\\\";\\n\\n/**\\n * @dev String operations.\\n */\\nlibrary Strings {\\n bytes16 private constant _SYMBOLS = \\\"0123456789abcdef\\\";\\n uint8 private constant _ADDRESS_LENGTH = 20;\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` decimal representation.\\n */\\n function toString(uint256 value) internal pure returns (string memory) {\\n unchecked {\\n uint256 length = Math.log10(value) + 1;\\n string memory buffer = new string(length);\\n uint256 ptr;\\n /// @solidity memory-safe-assembly\\n assembly {\\n ptr := add(buffer, add(32, length))\\n }\\n while (true) {\\n ptr--;\\n /// @solidity memory-safe-assembly\\n assembly {\\n mstore8(ptr, byte(mod(value, 10), _SYMBOLS))\\n }\\n value /= 10;\\n if (value == 0) break;\\n }\\n return buffer;\\n }\\n }\\n\\n /**\\n * @dev Converts a `int256` to its ASCII `string` decimal representation.\\n */\\n function toString(int256 value) internal pure returns (string memory) {\\n return string(abi.encodePacked(value < 0 ? \\\"-\\\" : \\\"\\\", toString(SignedMath.abs(value))));\\n }\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\\n */\\n function toHexString(uint256 value) internal pure returns (string memory) {\\n unchecked {\\n return toHexString(value, Math.log256(value) + 1);\\n }\\n }\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\\n */\\n function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\\n bytes memory buffer = new bytes(2 * length + 2);\\n buffer[0] = \\\"0\\\";\\n buffer[1] = \\\"x\\\";\\n for (uint256 i = 2 * length + 1; i > 1; --i) {\\n buffer[i] = _SYMBOLS[value & 0xf];\\n value >>= 4;\\n }\\n require(value == 0, \\\"Strings: hex length insufficient\\\");\\n return string(buffer);\\n }\\n\\n /**\\n * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.\\n */\\n function toHexString(address addr) internal pure returns (string memory) {\\n return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);\\n }\\n\\n /**\\n * @dev Returns true if the two strings are equal.\\n */\\n function equal(string memory a, string memory b) internal pure returns (bool) {\\n return keccak256(bytes(a)) == keccak256(bytes(b));\\n }\\n}\\n\",\"keccak256\":\"0x3088eb2868e8d13d89d16670b5f8612c4ab9ff8956272837d8e90106c59c14a0\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/math/Math.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard math utilities missing in the Solidity language.\\n */\\nlibrary Math {\\n enum Rounding {\\n Down, // Toward negative infinity\\n Up, // Toward infinity\\n Zero // Toward zero\\n }\\n\\n /**\\n * @dev Returns the largest of two numbers.\\n */\\n function max(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two numbers.\\n */\\n function min(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two numbers. The result is rounded towards\\n * zero.\\n */\\n function average(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b) / 2 can overflow.\\n return (a & b) + (a ^ b) / 2;\\n }\\n\\n /**\\n * @dev Returns the ceiling of the division of two numbers.\\n *\\n * This differs from standard division with `/` in that it rounds up instead\\n * of rounding down.\\n */\\n function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b - 1) / b can overflow on addition, so we distribute.\\n return a == 0 ? 0 : (a - 1) / b + 1;\\n }\\n\\n /**\\n * @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\\n * @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)\\n * with further edits by Uniswap Labs also under MIT license.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator) internal pure returns (uint256 result) {\\n unchecked {\\n // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use\\n // use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\\n // variables such that product = prod1 * 2^256 + prod0.\\n uint256 prod0; // Least significant 256 bits of the product\\n uint256 prod1; // Most significant 256 bits of the product\\n assembly {\\n let mm := mulmod(x, y, not(0))\\n prod0 := mul(x, y)\\n prod1 := sub(sub(mm, prod0), lt(mm, prod0))\\n }\\n\\n // Handle non-overflow cases, 256 by 256 division.\\n if (prod1 == 0) {\\n // Solidity will revert if denominator == 0, unlike the div opcode on its own.\\n // The surrounding unchecked block does not change this fact.\\n // See https://docs.soliditylang.org/en/latest/control-structures.html#checked-or-unchecked-arithmetic.\\n return prod0 / denominator;\\n }\\n\\n // Make sure the result is less than 2^256. Also prevents denominator == 0.\\n require(denominator > prod1, \\\"Math: mulDiv overflow\\\");\\n\\n ///////////////////////////////////////////////\\n // 512 by 256 division.\\n ///////////////////////////////////////////////\\n\\n // Make division exact by subtracting the remainder from [prod1 prod0].\\n uint256 remainder;\\n assembly {\\n // Compute remainder using mulmod.\\n remainder := mulmod(x, y, denominator)\\n\\n // Subtract 256 bit number from 512 bit number.\\n prod1 := sub(prod1, gt(remainder, prod0))\\n prod0 := sub(prod0, remainder)\\n }\\n\\n // Factor powers of two out of denominator and compute largest power of two divisor of denominator. Always >= 1.\\n // See https://cs.stackexchange.com/q/138556/92363.\\n\\n // Does not overflow because the denominator cannot be zero at this stage in the function.\\n uint256 twos = denominator & (~denominator + 1);\\n assembly {\\n // Divide denominator by twos.\\n denominator := div(denominator, twos)\\n\\n // Divide [prod1 prod0] by twos.\\n prod0 := div(prod0, twos)\\n\\n // Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one.\\n twos := add(div(sub(0, twos), twos), 1)\\n }\\n\\n // Shift in bits from prod1 into prod0.\\n prod0 |= prod1 * twos;\\n\\n // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such\\n // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for\\n // four bits. That is, denominator * inv = 1 mod 2^4.\\n uint256 inverse = (3 * denominator) ^ 2;\\n\\n // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also works\\n // in modular arithmetic, doubling the correct bits in each step.\\n inverse *= 2 - denominator * inverse; // inverse mod 2^8\\n inverse *= 2 - denominator * inverse; // inverse mod 2^16\\n inverse *= 2 - denominator * inverse; // inverse mod 2^32\\n inverse *= 2 - denominator * inverse; // inverse mod 2^64\\n inverse *= 2 - denominator * inverse; // inverse mod 2^128\\n inverse *= 2 - denominator * inverse; // inverse mod 2^256\\n\\n // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\\n // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is\\n // less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1\\n // is no longer required.\\n result = prod0 * inverse;\\n return result;\\n }\\n }\\n\\n /**\\n * @notice Calculates x * y / denominator with full precision, following the selected rounding direction.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator, Rounding rounding) internal pure returns (uint256) {\\n uint256 result = mulDiv(x, y, denominator);\\n if (rounding == Rounding.Up && mulmod(x, y, denominator) > 0) {\\n result += 1;\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down.\\n *\\n * Inspired by Henry S. Warren, Jr.'s \\\"Hacker's Delight\\\" (Chapter 11).\\n */\\n function sqrt(uint256 a) internal pure returns (uint256) {\\n if (a == 0) {\\n return 0;\\n }\\n\\n // For our first guess, we get the biggest power of 2 which is smaller than the square root of the target.\\n //\\n // We know that the \\\"msb\\\" (most significant bit) of our target number `a` is a power of 2 such that we have\\n // `msb(a) <= a < 2*msb(a)`. This value can be written `msb(a)=2**k` with `k=log2(a)`.\\n //\\n // This can be rewritten `2**log2(a) <= a < 2**(log2(a) + 1)`\\n // \\u2192 `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))`\\n // \\u2192 `2**(k/2) <= sqrt(a) < 2**((k+1)/2) <= 2**(k/2 + 1)`\\n //\\n // Consequently, `2**(log2(a) / 2)` is a good first approximation of `sqrt(a)` with at least 1 correct bit.\\n uint256 result = 1 << (log2(a) >> 1);\\n\\n // At this point `result` is an estimation with one bit of precision. We know the true value is a uint128,\\n // since it is the square root of a uint256. Newton's method converges quadratically (precision doubles at\\n // every iteration). We thus need at most 7 iteration to turn our partial result with one bit of precision\\n // into the expected uint128 result.\\n unchecked {\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n return min(result, a / result);\\n }\\n }\\n\\n /**\\n * @notice Calculates sqrt(a), following the selected rounding direction.\\n */\\n function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = sqrt(a);\\n return result + (rounding == Rounding.Up && result * result < a ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 2, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 128;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 64;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 32;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 16;\\n }\\n if (value >> 8 > 0) {\\n value >>= 8;\\n result += 8;\\n }\\n if (value >> 4 > 0) {\\n value >>= 4;\\n result += 4;\\n }\\n if (value >> 2 > 0) {\\n value >>= 2;\\n result += 2;\\n }\\n if (value >> 1 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 2, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log2(value);\\n return result + (rounding == Rounding.Up && 1 << result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 10, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >= 10 ** 64) {\\n value /= 10 ** 64;\\n result += 64;\\n }\\n if (value >= 10 ** 32) {\\n value /= 10 ** 32;\\n result += 32;\\n }\\n if (value >= 10 ** 16) {\\n value /= 10 ** 16;\\n result += 16;\\n }\\n if (value >= 10 ** 8) {\\n value /= 10 ** 8;\\n result += 8;\\n }\\n if (value >= 10 ** 4) {\\n value /= 10 ** 4;\\n result += 4;\\n }\\n if (value >= 10 ** 2) {\\n value /= 10 ** 2;\\n result += 2;\\n }\\n if (value >= 10 ** 1) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log10(value);\\n return result + (rounding == Rounding.Up && 10 ** result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 256, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n *\\n * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.\\n */\\n function log256(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 16;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 8;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 4;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 2;\\n }\\n if (value >> 8 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 256, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log256(value);\\n return result + (rounding == Rounding.Up && 1 << (result << 3) < value ? 1 : 0);\\n }\\n }\\n}\\n\",\"keccak256\":\"0xe4455ac1eb7fc497bb7402579e7b4d64d928b846fce7d2b6fde06d366f21c2b3\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/SignedMath.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard signed math utilities missing in the Solidity language.\\n */\\nlibrary SignedMath {\\n /**\\n * @dev Returns the largest of two signed numbers.\\n */\\n function max(int256 a, int256 b) internal pure returns (int256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two signed numbers.\\n */\\n function min(int256 a, int256 b) internal pure returns (int256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two signed numbers without overflow.\\n * The result is rounded towards zero.\\n */\\n function average(int256 a, int256 b) internal pure returns (int256) {\\n // Formula from the book \\\"Hacker's Delight\\\"\\n int256 x = (a & b) + ((a ^ b) >> 1);\\n return x + (int256(uint256(x) >> 255) & (a ^ b));\\n }\\n\\n /**\\n * @dev Returns the absolute unsigned value of a signed value.\\n */\\n function abs(int256 n) internal pure returns (uint256) {\\n unchecked {\\n // must be unchecked in order to support `n = type(int256).min`\\n return uint256(n >= 0 ? n : -n);\\n }\\n }\\n}\\n\",\"keccak256\":\"0xf92515413956f529d95977adc9b0567d583c6203fc31ab1c23824c35187e3ddc\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/utils/introspection/ERC165.sol":{"ERC165":{"abi":[{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"Implementation of the {IERC165} interface. Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check for the additional interface id that will be supported. For example: ```solidity function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); } ``` Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.","kind":"dev","methods":{"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of the {IERC165} interface. Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check for the additional interface id that will be supported. For example: ```solidity function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); } ``` Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\",\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":\"ERC165\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165 is IERC165 {\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165).interfaceId;\\n }\\n}\\n\",\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/utils/introspection/IERC165.sol":{"IERC165":{"abi":[{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"Interface of the ERC165 standard, as defined in the https://eips.ethereum.org/EIPS/eip-165[EIP]. Implementers can declare support of contract interfaces, which can then be queried by others ({ERC165Checker}). For an implementation, see {ERC165}.","kind":"dev","methods":{"supportsInterface(bytes4)":{"details":"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC165 standard, as defined in the https://eips.ethereum.org/EIPS/eip-165[EIP]. Implementers can declare support of contract interfaces, which can then be queried by others ({ERC165Checker}). For an implementation, see {ERC165}.\",\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":\"IERC165\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/utils/math/Math.sol":{"Math":{"abi":[],"devdoc":{"details":"Standard math utilities missing in the Solidity language.","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"602d6037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a","opcodes":"PUSH1 0x2D PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"202:12582:40:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;202:12582:40;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"202:12582:40:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"9000","executionCost":"94","totalCost":"9094"},"internal":{"average(uint256,uint256)":"infinite","ceilDiv(uint256,uint256)":"infinite","log10(uint256)":"infinite","log10(uint256,enum Math.Rounding)":"infinite","log2(uint256)":"infinite","log2(uint256,enum Math.Rounding)":"infinite","log256(uint256)":"infinite","log256(uint256,enum Math.Rounding)":"infinite","max(uint256,uint256)":"infinite","min(uint256,uint256)":"infinite","mulDiv(uint256,uint256,uint256)":"infinite","mulDiv(uint256,uint256,uint256,enum Math.Rounding)":"infinite","sqrt(uint256)":"infinite","sqrt(uint256,enum Math.Rounding)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Standard math utilities missing in the Solidity language.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/math/Math.sol\":\"Math\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/math/Math.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/math/Math.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard math utilities missing in the Solidity language.\\n */\\nlibrary Math {\\n enum Rounding {\\n Down, // Toward negative infinity\\n Up, // Toward infinity\\n Zero // Toward zero\\n }\\n\\n /**\\n * @dev Returns the largest of two numbers.\\n */\\n function max(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two numbers.\\n */\\n function min(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two numbers. The result is rounded towards\\n * zero.\\n */\\n function average(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b) / 2 can overflow.\\n return (a & b) + (a ^ b) / 2;\\n }\\n\\n /**\\n * @dev Returns the ceiling of the division of two numbers.\\n *\\n * This differs from standard division with `/` in that it rounds up instead\\n * of rounding down.\\n */\\n function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b - 1) / b can overflow on addition, so we distribute.\\n return a == 0 ? 0 : (a - 1) / b + 1;\\n }\\n\\n /**\\n * @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\\n * @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)\\n * with further edits by Uniswap Labs also under MIT license.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator) internal pure returns (uint256 result) {\\n unchecked {\\n // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use\\n // use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\\n // variables such that product = prod1 * 2^256 + prod0.\\n uint256 prod0; // Least significant 256 bits of the product\\n uint256 prod1; // Most significant 256 bits of the product\\n assembly {\\n let mm := mulmod(x, y, not(0))\\n prod0 := mul(x, y)\\n prod1 := sub(sub(mm, prod0), lt(mm, prod0))\\n }\\n\\n // Handle non-overflow cases, 256 by 256 division.\\n if (prod1 == 0) {\\n // Solidity will revert if denominator == 0, unlike the div opcode on its own.\\n // The surrounding unchecked block does not change this fact.\\n // See https://docs.soliditylang.org/en/latest/control-structures.html#checked-or-unchecked-arithmetic.\\n return prod0 / denominator;\\n }\\n\\n // Make sure the result is less than 2^256. Also prevents denominator == 0.\\n require(denominator > prod1, \\\"Math: mulDiv overflow\\\");\\n\\n ///////////////////////////////////////////////\\n // 512 by 256 division.\\n ///////////////////////////////////////////////\\n\\n // Make division exact by subtracting the remainder from [prod1 prod0].\\n uint256 remainder;\\n assembly {\\n // Compute remainder using mulmod.\\n remainder := mulmod(x, y, denominator)\\n\\n // Subtract 256 bit number from 512 bit number.\\n prod1 := sub(prod1, gt(remainder, prod0))\\n prod0 := sub(prod0, remainder)\\n }\\n\\n // Factor powers of two out of denominator and compute largest power of two divisor of denominator. Always >= 1.\\n // See https://cs.stackexchange.com/q/138556/92363.\\n\\n // Does not overflow because the denominator cannot be zero at this stage in the function.\\n uint256 twos = denominator & (~denominator + 1);\\n assembly {\\n // Divide denominator by twos.\\n denominator := div(denominator, twos)\\n\\n // Divide [prod1 prod0] by twos.\\n prod0 := div(prod0, twos)\\n\\n // Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one.\\n twos := add(div(sub(0, twos), twos), 1)\\n }\\n\\n // Shift in bits from prod1 into prod0.\\n prod0 |= prod1 * twos;\\n\\n // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such\\n // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for\\n // four bits. That is, denominator * inv = 1 mod 2^4.\\n uint256 inverse = (3 * denominator) ^ 2;\\n\\n // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also works\\n // in modular arithmetic, doubling the correct bits in each step.\\n inverse *= 2 - denominator * inverse; // inverse mod 2^8\\n inverse *= 2 - denominator * inverse; // inverse mod 2^16\\n inverse *= 2 - denominator * inverse; // inverse mod 2^32\\n inverse *= 2 - denominator * inverse; // inverse mod 2^64\\n inverse *= 2 - denominator * inverse; // inverse mod 2^128\\n inverse *= 2 - denominator * inverse; // inverse mod 2^256\\n\\n // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\\n // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is\\n // less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1\\n // is no longer required.\\n result = prod0 * inverse;\\n return result;\\n }\\n }\\n\\n /**\\n * @notice Calculates x * y / denominator with full precision, following the selected rounding direction.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator, Rounding rounding) internal pure returns (uint256) {\\n uint256 result = mulDiv(x, y, denominator);\\n if (rounding == Rounding.Up && mulmod(x, y, denominator) > 0) {\\n result += 1;\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down.\\n *\\n * Inspired by Henry S. Warren, Jr.'s \\\"Hacker's Delight\\\" (Chapter 11).\\n */\\n function sqrt(uint256 a) internal pure returns (uint256) {\\n if (a == 0) {\\n return 0;\\n }\\n\\n // For our first guess, we get the biggest power of 2 which is smaller than the square root of the target.\\n //\\n // We know that the \\\"msb\\\" (most significant bit) of our target number `a` is a power of 2 such that we have\\n // `msb(a) <= a < 2*msb(a)`. This value can be written `msb(a)=2**k` with `k=log2(a)`.\\n //\\n // This can be rewritten `2**log2(a) <= a < 2**(log2(a) + 1)`\\n // \\u2192 `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))`\\n // \\u2192 `2**(k/2) <= sqrt(a) < 2**((k+1)/2) <= 2**(k/2 + 1)`\\n //\\n // Consequently, `2**(log2(a) / 2)` is a good first approximation of `sqrt(a)` with at least 1 correct bit.\\n uint256 result = 1 << (log2(a) >> 1);\\n\\n // At this point `result` is an estimation with one bit of precision. We know the true value is a uint128,\\n // since it is the square root of a uint256. Newton's method converges quadratically (precision doubles at\\n // every iteration). We thus need at most 7 iteration to turn our partial result with one bit of precision\\n // into the expected uint128 result.\\n unchecked {\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n return min(result, a / result);\\n }\\n }\\n\\n /**\\n * @notice Calculates sqrt(a), following the selected rounding direction.\\n */\\n function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = sqrt(a);\\n return result + (rounding == Rounding.Up && result * result < a ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 2, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 128;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 64;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 32;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 16;\\n }\\n if (value >> 8 > 0) {\\n value >>= 8;\\n result += 8;\\n }\\n if (value >> 4 > 0) {\\n value >>= 4;\\n result += 4;\\n }\\n if (value >> 2 > 0) {\\n value >>= 2;\\n result += 2;\\n }\\n if (value >> 1 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 2, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log2(value);\\n return result + (rounding == Rounding.Up && 1 << result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 10, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >= 10 ** 64) {\\n value /= 10 ** 64;\\n result += 64;\\n }\\n if (value >= 10 ** 32) {\\n value /= 10 ** 32;\\n result += 32;\\n }\\n if (value >= 10 ** 16) {\\n value /= 10 ** 16;\\n result += 16;\\n }\\n if (value >= 10 ** 8) {\\n value /= 10 ** 8;\\n result += 8;\\n }\\n if (value >= 10 ** 4) {\\n value /= 10 ** 4;\\n result += 4;\\n }\\n if (value >= 10 ** 2) {\\n value /= 10 ** 2;\\n result += 2;\\n }\\n if (value >= 10 ** 1) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log10(value);\\n return result + (rounding == Rounding.Up && 10 ** result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 256, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n *\\n * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.\\n */\\n function log256(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 16;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 8;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 4;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 2;\\n }\\n if (value >> 8 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 256, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log256(value);\\n return result + (rounding == Rounding.Up && 1 << (result << 3) < value ? 1 : 0);\\n }\\n }\\n}\\n\",\"keccak256\":\"0xe4455ac1eb7fc497bb7402579e7b4d64d928b846fce7d2b6fde06d366f21c2b3\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/utils/math/SignedMath.sol":{"SignedMath":{"abi":[],"devdoc":{"details":"Standard signed math utilities missing in the Solidity language.","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"602d6037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a","opcodes":"PUSH1 0x2D PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"215:1047:41:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;215:1047:41;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"215:1047:41:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"9000","executionCost":"94","totalCost":"9094"},"internal":{"abs(int256)":"infinite","average(int256,int256)":"infinite","max(int256,int256)":"infinite","min(int256,int256)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Standard signed math utilities missing in the Solidity language.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/math/SignedMath.sol\":\"SignedMath\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/SignedMath.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard signed math utilities missing in the Solidity language.\\n */\\nlibrary SignedMath {\\n /**\\n * @dev Returns the largest of two signed numbers.\\n */\\n function max(int256 a, int256 b) internal pure returns (int256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two signed numbers.\\n */\\n function min(int256 a, int256 b) internal pure returns (int256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two signed numbers without overflow.\\n * The result is rounded towards zero.\\n */\\n function average(int256 a, int256 b) internal pure returns (int256) {\\n // Formula from the book \\\"Hacker's Delight\\\"\\n int256 x = (a & b) + ((a ^ b) >> 1);\\n return x + (int256(uint256(x) >> 255) & (a ^ b));\\n }\\n\\n /**\\n * @dev Returns the absolute unsigned value of a signed value.\\n */\\n function abs(int256 n) internal pure returns (uint256) {\\n unchecked {\\n // must be unchecked in order to support `n = type(int256).min`\\n return uint256(n >= 0 ? n : -n);\\n }\\n }\\n}\\n\",\"keccak256\":\"0xf92515413956f529d95977adc9b0567d583c6203fc31ab1c23824c35187e3ddc\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"src/dao/IDAO.sol":{"IDAO":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"string","name":"_reference","type":"string"}],"name":"Deposited","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"actor","type":"address"},{"indexed":false,"internalType":"bytes32","name":"callId","type":"bytes32"},{"components":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"indexed":false,"internalType":"struct IDAO.Action[]","name":"actions","type":"tuple[]"},{"indexed":false,"internalType":"uint256","name":"allowFailureMap","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"failureMap","type":"uint256"},{"indexed":false,"internalType":"bytes[]","name":"execResults","type":"bytes[]"}],"name":"Executed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes","name":"metadata","type":"bytes"}],"name":"MetadataSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"NativeTokenDeposited","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes4","name":"interfaceId","type":"bytes4"},{"indexed":false,"internalType":"bytes4","name":"callbackSelector","type":"bytes4"},{"indexed":false,"internalType":"bytes4","name":"magicNumber","type":"bytes4"}],"name":"StandardCallbackRegistered","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"forwarder","type":"address"}],"name":"TrustedForwarderSet","type":"event"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"string","name":"_reference","type":"string"}],"name":"deposit","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_callId","type":"bytes32"},{"components":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct IDAO.Action[]","name":"_actions","type":"tuple[]"},{"internalType":"uint256","name":"_allowFailureMap","type":"uint256"}],"name":"execute","outputs":[{"internalType":"bytes[]","name":"","type":"bytes[]"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getTrustedForwarder","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_where","type":"address"},{"internalType":"address","name":"_who","type":"address"},{"internalType":"bytes32","name":"_permissionId","type":"bytes32"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"hasPermission","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_hash","type":"bytes32"},{"internalType":"bytes","name":"_signature","type":"bytes"}],"name":"isValidSignature","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_interfaceId","type":"bytes4"},{"internalType":"bytes4","name":"_callbackSelector","type":"bytes4"},{"internalType":"bytes4","name":"_magicNumber","type":"bytes4"}],"name":"registerStandardCallback","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"_metadata","type":"bytes"}],"name":"setMetadata","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"setSignatureValidator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_trustedForwarder","type":"address"}],"name":"setTrustedForwarder","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"author":"Aragon X - 2022-2023","custom:security-contact":"sirt@aragon.org","events":{"Deposited(address,address,uint256,string)":{"params":{"_reference":"The reference describing the deposit reason.","amount":"The amount of tokens deposited.","sender":"The address of the sender.","token":"The address of the deposited token."}},"Executed(address,bytes32,(address,uint256,bytes)[],uint256,uint256,bytes[])":{"details":"The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce.","params":{"actions":"The array of actions executed.","actor":"The address of the caller.","allowFailureMap":"The allow failure map encoding which actions are allowed to fail.","callId":"The ID of the call.","execResults":"The array with the results of the executed actions.","failureMap":"The failure map encoding which actions have failed."}},"MetadataSet(bytes)":{"params":{"metadata":"The IPFS hash of the new metadata object."}},"NativeTokenDeposited(address,uint256)":{"details":"This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).","params":{"amount":"The amount of native tokens deposited.","sender":"The address of the sender."}},"StandardCallbackRegistered(bytes4,bytes4,bytes4)":{"params":{"callbackSelector":"The selector of the callback function.","interfaceId":"The ID of the interface.","magicNumber":"The magic number to be registered for the callback function selector."}},"TrustedForwarderSet(address)":{"params":{"forwarder":"the new forwarder address."}}},"kind":"dev","methods":{"deposit(address,uint256,string)":{"params":{"_amount":"The amount of tokens to deposit.","_reference":"The reference describing the deposit reason.","_token":"The address of the token or address(0) in case of the native token."}},"execute(bytes32,(address,uint256,bytes)[],uint256)":{"params":{"_actions":"The array of actions.","_allowFailureMap":"A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.","_callId":"The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce."},"returns":{"_0":"The array of results obtained from the executed actions in `bytes`.","_1":"The resulting failure map containing the actions have actually failed."}},"getTrustedForwarder()":{"returns":{"_0":"The trusted forwarder address."}},"hasPermission(address,address,bytes32,bytes)":{"params":{"_data":"The optional data passed to the `PermissionCondition` registered.","_permissionId":"The permission identifier.","_where":"The address of the contract.","_who":"The address of a EOA or contract to give the permissions."},"returns":{"_0":"Returns true if the address has permission, false if not."}},"isValidSignature(bytes32,bytes)":{"params":{"_hash":"The hash of the data to be signed.","_signature":"The signature byte array associated with `_hash`."},"returns":{"_0":"Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not."}},"registerStandardCallback(bytes4,bytes4,bytes4)":{"params":{"_callbackSelector":"The selector of the callback function.","_interfaceId":"The ID of the interface.","_magicNumber":"The magic number to be registered for the function signature."}},"setMetadata(bytes)":{"params":{"_metadata":"The IPFS hash of the new metadata object."}},"setSignatureValidator(address)":{"details":"Introduced in v1.0.0. Removed in v1.4.0."},"setTrustedForwarder(address)":{"params":{"_trustedForwarder":"The trusted forwarder address."}}},"title":"IDAO","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"deposit(address,uint256,string)":"bfe07da6","execute(bytes32,(address,uint256,bytes)[],uint256)":"c71bf324","getTrustedForwarder()":"ce1b815f","hasPermission(address,address,bytes32,bytes)":"fdef9106","isValidSignature(bytes32,bytes)":"1626ba7e","registerStandardCallback(bytes4,bytes4,bytes4)":"c4a50145","setMetadata(bytes)":"ee57e36f","setSignatureValidator(address)":"3e2ab0d9","setTrustedForwarder(address)":"da742228"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"_reference\",\"type\":\"string\"}],\"name\":\"Deposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"actor\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"callId\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"struct IDAO.Action[]\",\"name\":\"actions\",\"type\":\"tuple[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"allowFailureMap\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"failureMap\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes[]\",\"name\":\"execResults\",\"type\":\"bytes[]\"}],\"name\":\"Executed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"name\":\"MetadataSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"NativeTokenDeposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"callbackSelector\",\"type\":\"bytes4\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"magicNumber\",\"type\":\"bytes4\"}],\"name\":\"StandardCallbackRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"forwarder\",\"type\":\"address\"}],\"name\":\"TrustedForwarderSet\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"_reference\",\"type\":\"string\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_callId\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IDAO.Action[]\",\"name\":\"_actions\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"_allowFailureMap\",\"type\":\"uint256\"}],\"name\":\"execute\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"\",\"type\":\"bytes[]\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTrustedForwarder\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_who\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_permissionId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"hasPermission\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"isValidSignature\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"},{\"internalType\":\"bytes4\",\"name\":\"_callbackSelector\",\"type\":\"bytes4\"},{\"internalType\":\"bytes4\",\"name\":\"_magicNumber\",\"type\":\"bytes4\"}],\"name\":\"registerStandardCallback\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_metadata\",\"type\":\"bytes\"}],\"name\":\"setMetadata\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"setSignatureValidator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_trustedForwarder\",\"type\":\"address\"}],\"name\":\"setTrustedForwarder\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Aragon X - 2022-2023\",\"custom:security-contact\":\"sirt@aragon.org\",\"events\":{\"Deposited(address,address,uint256,string)\":{\"params\":{\"_reference\":\"The reference describing the deposit reason.\",\"amount\":\"The amount of tokens deposited.\",\"sender\":\"The address of the sender.\",\"token\":\"The address of the deposited token.\"}},\"Executed(address,bytes32,(address,uint256,bytes)[],uint256,uint256,bytes[])\":{\"details\":\"The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce.\",\"params\":{\"actions\":\"The array of actions executed.\",\"actor\":\"The address of the caller.\",\"allowFailureMap\":\"The allow failure map encoding which actions are allowed to fail.\",\"callId\":\"The ID of the call.\",\"execResults\":\"The array with the results of the executed actions.\",\"failureMap\":\"The failure map encoding which actions have failed.\"}},\"MetadataSet(bytes)\":{\"params\":{\"metadata\":\"The IPFS hash of the new metadata object.\"}},\"NativeTokenDeposited(address,uint256)\":{\"details\":\"This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).\",\"params\":{\"amount\":\"The amount of native tokens deposited.\",\"sender\":\"The address of the sender.\"}},\"StandardCallbackRegistered(bytes4,bytes4,bytes4)\":{\"params\":{\"callbackSelector\":\"The selector of the callback function.\",\"interfaceId\":\"The ID of the interface.\",\"magicNumber\":\"The magic number to be registered for the callback function selector.\"}},\"TrustedForwarderSet(address)\":{\"params\":{\"forwarder\":\"the new forwarder address.\"}}},\"kind\":\"dev\",\"methods\":{\"deposit(address,uint256,string)\":{\"params\":{\"_amount\":\"The amount of tokens to deposit.\",\"_reference\":\"The reference describing the deposit reason.\",\"_token\":\"The address of the token or address(0) in case of the native token.\"}},\"execute(bytes32,(address,uint256,bytes)[],uint256)\":{\"params\":{\"_actions\":\"The array of actions.\",\"_allowFailureMap\":\"A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\",\"_callId\":\"The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce.\"},\"returns\":{\"_0\":\"The array of results obtained from the executed actions in `bytes`.\",\"_1\":\"The resulting failure map containing the actions have actually failed.\"}},\"getTrustedForwarder()\":{\"returns\":{\"_0\":\"The trusted forwarder address.\"}},\"hasPermission(address,address,bytes32,bytes)\":{\"params\":{\"_data\":\"The optional data passed to the `PermissionCondition` registered.\",\"_permissionId\":\"The permission identifier.\",\"_where\":\"The address of the contract.\",\"_who\":\"The address of a EOA or contract to give the permissions.\"},\"returns\":{\"_0\":\"Returns true if the address has permission, false if not.\"}},\"isValidSignature(bytes32,bytes)\":{\"params\":{\"_hash\":\"The hash of the data to be signed.\",\"_signature\":\"The signature byte array associated with `_hash`.\"},\"returns\":{\"_0\":\"Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not.\"}},\"registerStandardCallback(bytes4,bytes4,bytes4)\":{\"params\":{\"_callbackSelector\":\"The selector of the callback function.\",\"_interfaceId\":\"The ID of the interface.\",\"_magicNumber\":\"The magic number to be registered for the function signature.\"}},\"setMetadata(bytes)\":{\"params\":{\"_metadata\":\"The IPFS hash of the new metadata object.\"}},\"setSignatureValidator(address)\":{\"details\":\"Introduced in v1.0.0. Removed in v1.4.0.\"},\"setTrustedForwarder(address)\":{\"params\":{\"_trustedForwarder\":\"The trusted forwarder address.\"}}},\"title\":\"IDAO\",\"version\":1},\"userdoc\":{\"events\":{\"Deposited(address,address,uint256,string)\":{\"notice\":\"Emitted when a token deposit has been made to the DAO.\"},\"Executed(address,bytes32,(address,uint256,bytes)[],uint256,uint256,bytes[])\":{\"notice\":\"Emitted when a proposal is executed.\"},\"MetadataSet(bytes)\":{\"notice\":\"Emitted when the DAO metadata is updated.\"},\"NativeTokenDeposited(address,uint256)\":{\"notice\":\"Emitted when a native token deposit has been made to the DAO.\"},\"StandardCallbackRegistered(bytes4,bytes4,bytes4)\":{\"notice\":\"Emitted when a standard callback is registered.\"},\"TrustedForwarderSet(address)\":{\"notice\":\"Emitted when a new TrustedForwarder is set on the DAO.\"}},\"kind\":\"user\",\"methods\":{\"deposit(address,uint256,string)\":{\"notice\":\"Deposits (native) tokens to the DAO contract with a reference string.\"},\"execute(bytes32,(address,uint256,bytes)[],uint256)\":{\"notice\":\"Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted.\"},\"getTrustedForwarder()\":{\"notice\":\"Getter for the trusted forwarder verifying the meta transaction.\"},\"hasPermission(address,address,bytes32,bytes)\":{\"notice\":\"Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\"},\"isValidSignature(bytes32,bytes)\":{\"notice\":\"Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\"},\"registerStandardCallback(bytes4,bytes4,bytes4)\":{\"notice\":\"Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\"},\"setMetadata(bytes)\":{\"notice\":\"Updates the DAO metadata (e.g., an IPFS hash).\"},\"setSignatureValidator(address)\":{\"notice\":\"Removed function being left here to not corrupt the IDAO interface ID. Any call will revert.\"},\"setTrustedForwarder(address)\":{\"notice\":\"Setter for the trusted forwarder verifying the meta transaction.\"}},\"notice\":\"The interface required for DAOs within the Aragon App DAO framework.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/dao/IDAO.sol\":\"IDAO\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"src/dao/IDAO.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IDAO\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for DAOs within the Aragon App DAO framework.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IDAO {\\n /// @notice The action struct to be consumed by the DAO's `execute` function resulting in an external call.\\n /// @param to The address to call.\\n /// @param value The native token value to be sent with the call.\\n /// @param data The bytes-encoded function selector and calldata for the call.\\n struct Action {\\n address to;\\n uint256 value;\\n bytes data;\\n }\\n\\n /// @notice Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\\n /// @param _where The address of the contract.\\n /// @param _who The address of a EOA or contract to give the permissions.\\n /// @param _permissionId The permission identifier.\\n /// @param _data The optional data passed to the `PermissionCondition` registered.\\n /// @return Returns true if the address has permission, false if not.\\n function hasPermission(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes memory _data\\n ) external view returns (bool);\\n\\n /// @notice Updates the DAO metadata (e.g., an IPFS hash).\\n /// @param _metadata The IPFS hash of the new metadata object.\\n function setMetadata(bytes calldata _metadata) external;\\n\\n /// @notice Emitted when the DAO metadata is updated.\\n /// @param metadata The IPFS hash of the new metadata object.\\n event MetadataSet(bytes metadata);\\n\\n /// @notice Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted.\\n /// @param _callId The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce.\\n /// @param _actions The array of actions.\\n /// @param _allowFailureMap A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @return The array of results obtained from the executed actions in `bytes`.\\n /// @return The resulting failure map containing the actions have actually failed.\\n function execute(\\n bytes32 _callId,\\n Action[] memory _actions,\\n uint256 _allowFailureMap\\n ) external returns (bytes[] memory, uint256);\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param actor The address of the caller.\\n /// @param callId The ID of the call.\\n /// @param actions The array of actions executed.\\n /// @param allowFailureMap The allow failure map encoding which actions are allowed to fail.\\n /// @param failureMap The failure map encoding which actions have failed.\\n /// @param execResults The array with the results of the executed actions.\\n /// @dev The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce.\\n event Executed(\\n address indexed actor,\\n bytes32 callId,\\n Action[] actions,\\n uint256 allowFailureMap,\\n uint256 failureMap,\\n bytes[] execResults\\n );\\n\\n /// @notice Emitted when a standard callback is registered.\\n /// @param interfaceId The ID of the interface.\\n /// @param callbackSelector The selector of the callback function.\\n /// @param magicNumber The magic number to be registered for the callback function selector.\\n event StandardCallbackRegistered(\\n bytes4 interfaceId,\\n bytes4 callbackSelector,\\n bytes4 magicNumber\\n );\\n\\n /// @notice Deposits (native) tokens to the DAO contract with a reference string.\\n /// @param _token The address of the token or address(0) in case of the native token.\\n /// @param _amount The amount of tokens to deposit.\\n /// @param _reference The reference describing the deposit reason.\\n function deposit(address _token, uint256 _amount, string calldata _reference) external payable;\\n\\n /// @notice Emitted when a token deposit has been made to the DAO.\\n /// @param sender The address of the sender.\\n /// @param token The address of the deposited token.\\n /// @param amount The amount of tokens deposited.\\n /// @param _reference The reference describing the deposit reason.\\n event Deposited(\\n address indexed sender,\\n address indexed token,\\n uint256 amount,\\n string _reference\\n );\\n\\n /// @notice Emitted when a native token deposit has been made to the DAO.\\n /// @dev This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).\\n /// @param sender The address of the sender.\\n /// @param amount The amount of native tokens deposited.\\n event NativeTokenDeposited(address sender, uint256 amount);\\n\\n /// @notice Setter for the trusted forwarder verifying the meta transaction.\\n /// @param _trustedForwarder The trusted forwarder address.\\n function setTrustedForwarder(address _trustedForwarder) external;\\n\\n /// @notice Getter for the trusted forwarder verifying the meta transaction.\\n /// @return The trusted forwarder address.\\n function getTrustedForwarder() external view returns (address);\\n\\n /// @notice Emitted when a new TrustedForwarder is set on the DAO.\\n /// @param forwarder the new forwarder address.\\n event TrustedForwarderSet(address forwarder);\\n\\n /// @notice Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\\n /// @param _hash The hash of the data to be signed.\\n /// @param _signature The signature byte array associated with `_hash`.\\n /// @return Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not.\\n function isValidSignature(bytes32 _hash, bytes memory _signature) external returns (bytes4);\\n\\n /// @notice Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\\n /// @param _interfaceId The ID of the interface.\\n /// @param _callbackSelector The selector of the callback function.\\n /// @param _magicNumber The magic number to be registered for the function signature.\\n function registerStandardCallback(\\n bytes4 _interfaceId,\\n bytes4 _callbackSelector,\\n bytes4 _magicNumber\\n ) external;\\n\\n /// @notice Removed function being left here to not corrupt the IDAO interface ID. Any call will revert.\\n /// @dev Introduced in v1.0.0. Removed in v1.4.0.\\n function setSignatureValidator(address) external;\\n}\\n\",\"keccak256\":\"0xb7f615523c26de042edce98731c658f44a1edb2464387ac1b642c4c69f57128e\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"events":{"Deposited(address,address,uint256,string)":{"notice":"Emitted when a token deposit has been made to the DAO."},"Executed(address,bytes32,(address,uint256,bytes)[],uint256,uint256,bytes[])":{"notice":"Emitted when a proposal is executed."},"MetadataSet(bytes)":{"notice":"Emitted when the DAO metadata is updated."},"NativeTokenDeposited(address,uint256)":{"notice":"Emitted when a native token deposit has been made to the DAO."},"StandardCallbackRegistered(bytes4,bytes4,bytes4)":{"notice":"Emitted when a standard callback is registered."},"TrustedForwarderSet(address)":{"notice":"Emitted when a new TrustedForwarder is set on the DAO."}},"kind":"user","methods":{"deposit(address,uint256,string)":{"notice":"Deposits (native) tokens to the DAO contract with a reference string."},"execute(bytes32,(address,uint256,bytes)[],uint256)":{"notice":"Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted."},"getTrustedForwarder()":{"notice":"Getter for the trusted forwarder verifying the meta transaction."},"hasPermission(address,address,bytes32,bytes)":{"notice":"Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process."},"isValidSignature(bytes32,bytes)":{"notice":"Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271)."},"registerStandardCallback(bytes4,bytes4,bytes4)":{"notice":"Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature."},"setMetadata(bytes)":{"notice":"Updates the DAO metadata (e.g., an IPFS hash)."},"setSignatureValidator(address)":{"notice":"Removed function being left here to not corrupt the IDAO interface ID. Any call will revert."},"setTrustedForwarder(address)":{"notice":"Setter for the trusted forwarder verifying the meta transaction."}},"notice":"The interface required for DAOs within the Aragon App DAO framework.","version":1}}},"src/mocks/dao/DAOMock.sol":{"DAOMock":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"string","name":"_reference","type":"string"}],"name":"Deposited","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"actor","type":"address"},{"indexed":false,"internalType":"bytes32","name":"callId","type":"bytes32"},{"components":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"indexed":false,"internalType":"struct IDAO.Action[]","name":"actions","type":"tuple[]"},{"indexed":false,"internalType":"uint256","name":"allowFailureMap","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"failureMap","type":"uint256"},{"indexed":false,"internalType":"bytes[]","name":"execResults","type":"bytes[]"}],"name":"Executed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes","name":"metadata","type":"bytes"}],"name":"MetadataSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"NativeTokenDeposited","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes4","name":"interfaceId","type":"bytes4"},{"indexed":false,"internalType":"bytes4","name":"callbackSelector","type":"bytes4"},{"indexed":false,"internalType":"bytes4","name":"magicNumber","type":"bytes4"}],"name":"StandardCallbackRegistered","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"forwarder","type":"address"}],"name":"TrustedForwarderSet","type":"event"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"string","name":"_reference","type":"string"}],"name":"deposit","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"callId","type":"bytes32"},{"components":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct IDAO.Action[]","name":"_actions","type":"tuple[]"},{"internalType":"uint256","name":"allowFailureMap","type":"uint256"}],"name":"execute","outputs":[{"internalType":"bytes[]","name":"execResults","type":"bytes[]"},{"internalType":"uint256","name":"failureMap","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getTrustedForwarder","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_where","type":"address"},{"internalType":"address","name":"_who","type":"address"},{"internalType":"bytes32","name":"_permissionId","type":"bytes32"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"hasPermission","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hasPermissionReturnValueMock","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_hash","type":"bytes32"},{"internalType":"bytes","name":"_signature","type":"bytes"}],"name":"isValidSignature","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_interfaceId","type":"bytes4"},{"internalType":"bytes4","name":"_callbackSelector","type":"bytes4"},{"internalType":"bytes4","name":"_magicNumber","type":"bytes4"}],"name":"registerStandardCallback","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_hasPermissionReturnValueMock","type":"bool"}],"name":"setHasPermissionReturnValueMock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"_metadata","type":"bytes"}],"name":"setMetadata","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_signatureValidator","type":"address"}],"name":"setSignatureValidator","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_trustedForwarder","type":"address"}],"name":"setTrustedForwarder","outputs":[],"stateMutability":"pure","type":"function"}],"devdoc":{"details":"DO NOT USE IN PRODUCTION!","kind":"dev","methods":{"deposit(address,uint256,string)":{"params":{"_amount":"The amount of tokens to deposit.","_reference":"The reference describing the deposit reason.","_token":"The address of the token or address(0) in case of the native token."}},"getTrustedForwarder()":{"returns":{"_0":"The trusted forwarder address."}},"hasPermission(address,address,bytes32,bytes)":{"params":{"_data":"The optional data passed to the `PermissionCondition` registered.","_permissionId":"The permission identifier.","_where":"The address of the contract.","_who":"The address of a EOA or contract to give the permissions."},"returns":{"_0":"Returns true if the address has permission, false if not."}},"isValidSignature(bytes32,bytes)":{"params":{"_hash":"The hash of the data to be signed.","_signature":"The signature byte array associated with `_hash`."},"returns":{"_0":"Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not."}},"registerStandardCallback(bytes4,bytes4,bytes4)":{"params":{"_callbackSelector":"The selector of the callback function.","_interfaceId":"The ID of the interface.","_magicNumber":"The magic number to be registered for the function signature."}},"setMetadata(bytes)":{"params":{"_metadata":"The IPFS hash of the new metadata object."}},"setTrustedForwarder(address)":{"params":{"_trustedForwarder":"The trusted forwarder address."}}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b506108bc806100206000396000f3fe6080604052600436106100bc5760003560e01c8063c4a5014511610074578063da7422281161004e578063da74222814610144578063ee57e36f14610210578063fdef91061461022f57600080fd5b8063c4a50145146101a6578063c71bf324146101c6578063ce1b815f146101f457600080fd5b80633e2ab0d9116100a55780633e2ab0d91461014457806380e4cbe114610164578063bfe07da61461019257600080fd5b80630a1f41ca146100c15780631626ba7e146100f0575b600080fd5b3480156100cd57600080fd5b506000546100db9060ff1681565b60405190151581526020015b60405180910390f35b3480156100fc57600080fd5b5061011361010b36600461039a565b600092915050565b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020016100e7565b34801561015057600080fd5b5061016261015f36600461040a565b50565b005b34801561017057600080fd5b5061016261017f36600461042c565b6000805460ff1916911515919091179055565b6101626101a0366004610497565b50505050565b3480156101b257600080fd5b506101626101c1366004610521565b505050565b3480156101d257600080fd5b506101e66101e1366004610564565b610258565b6040516100e7929190610722565b34801561020057600080fd5b50604051600081526020016100e7565b34801561021c57600080fd5b5061016261022b366004610744565b5050565b34801561023b57600080fd5b506100db61024a366004610786565b60005460ff16949350505050565b606060003373ffffffffffffffffffffffffffffffffffffffff167fd4e57c2049f004fb297ef78591cd409503ceb6b2c722d7ffed032fc99e5f3b5886868685876040516102aa9594939291906107ee565b60405180910390a2935093915050565b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff811182821017156102f3576102f36102ba565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715610322576103226102ba565b604052919050565b600082601f83011261033b57600080fd5b813567ffffffffffffffff811115610355576103556102ba565b610368601f8201601f19166020016102f9565b81815284602083860101111561037d57600080fd5b816020850160208301376000918101602001919091529392505050565b600080604083850312156103ad57600080fd5b82359150602083013567ffffffffffffffff8111156103cb57600080fd5b6103d78582860161032a565b9150509250929050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461040557600080fd5b919050565b60006020828403121561041c57600080fd5b610425826103e1565b9392505050565b60006020828403121561043e57600080fd5b8135801515811461042557600080fd5b60008083601f84011261046057600080fd5b50813567ffffffffffffffff81111561047857600080fd5b60208301915083602082850101111561049057600080fd5b9250929050565b600080600080606085870312156104ad57600080fd5b6104b6856103e1565b935060208501359250604085013567ffffffffffffffff8111156104d957600080fd5b6104e58782880161044e565b95989497509550505050565b80357fffffffff000000000000000000000000000000000000000000000000000000008116811461040557600080fd5b60008060006060848603121561053657600080fd5b61053f846104f1565b925061054d602085016104f1565b915061055b604085016104f1565b90509250925092565b60008060006060848603121561057957600080fd5b8335925060208085013567ffffffffffffffff8082111561059957600080fd5b818701915087601f8301126105ad57600080fd5b8135818111156105bf576105bf6102ba565b8060051b6105ce8582016102f9565b918252838101850191858101908b8411156105e857600080fd5b86860192505b838310156106705782358581111561060557600080fd5b86016060818e03601f1901121561061b57600080fd5b6106236102d0565b61062e8983016103e1565b815260408201358982015260608201358781111561064c5760008081fd5b61065a8f8b8386010161032a565b60408301525083525091860191908601906105ee565b989b989a5050505060409690960135955050505050565b6000815180845260005b818110156106ad57602081850181015186830182015201610691565b506000602082860101526020601f19601f83011685010191505092915050565b600081518084526020808501808196508360051b8101915082860160005b85811015610715578284038952610703848351610687565b988501989350908401906001016106eb565b5091979650505050505050565b60408152600061073560408301856106cd565b90508260208301529392505050565b6000806020838503121561075757600080fd5b823567ffffffffffffffff81111561076e57600080fd5b61077a8582860161044e565b90969095509350505050565b6000806000806080858703121561079c57600080fd5b6107a5856103e1565b93506107b3602086016103e1565b925060408501359150606085013567ffffffffffffffff8111156107d657600080fd5b6107e28782880161032a565b91505092959194509250565b600060a08201878352602060a08185015281885180845260c08601915060c08160051b8701019350828a0160005b828110156108805787860360bf190184528151805173ffffffffffffffffffffffffffffffffffffffff168752858101518688015260409081015160609188018290529061086c81890183610687565b97505050928401929084019060010161081c565b505050505085604084015284606084015282810360808401526108a381856106cd565b9897505050505050505056fea164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x8BC DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xBC JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xC4A50145 GT PUSH2 0x74 JUMPI DUP1 PUSH4 0xDA742228 GT PUSH2 0x4E JUMPI DUP1 PUSH4 0xDA742228 EQ PUSH2 0x144 JUMPI DUP1 PUSH4 0xEE57E36F EQ PUSH2 0x210 JUMPI DUP1 PUSH4 0xFDEF9106 EQ PUSH2 0x22F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xC4A50145 EQ PUSH2 0x1A6 JUMPI DUP1 PUSH4 0xC71BF324 EQ PUSH2 0x1C6 JUMPI DUP1 PUSH4 0xCE1B815F EQ PUSH2 0x1F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x3E2AB0D9 GT PUSH2 0xA5 JUMPI DUP1 PUSH4 0x3E2AB0D9 EQ PUSH2 0x144 JUMPI DUP1 PUSH4 0x80E4CBE1 EQ PUSH2 0x164 JUMPI DUP1 PUSH4 0xBFE07DA6 EQ PUSH2 0x192 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xA1F41CA EQ PUSH2 0xC1 JUMPI DUP1 PUSH4 0x1626BA7E EQ PUSH2 0xF0 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xCD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 SLOAD PUSH2 0xDB SWAP1 PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xFC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x113 PUSH2 0x10B CALLDATASIZE PUSH1 0x4 PUSH2 0x39A JUMP JUMPDEST PUSH1 0x0 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xE7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x150 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x162 PUSH2 0x15F CALLDATASIZE PUSH1 0x4 PUSH2 0x40A JUMP JUMPDEST POP JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x170 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x162 PUSH2 0x17F CALLDATASIZE PUSH1 0x4 PUSH2 0x42C JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x162 PUSH2 0x1A0 CALLDATASIZE PUSH1 0x4 PUSH2 0x497 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x162 PUSH2 0x1C1 CALLDATASIZE PUSH1 0x4 PUSH2 0x521 JUMP JUMPDEST POP POP POP JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1E6 PUSH2 0x1E1 CALLDATASIZE PUSH1 0x4 PUSH2 0x564 JUMP JUMPDEST PUSH2 0x258 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xE7 SWAP3 SWAP2 SWAP1 PUSH2 0x722 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x200 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xE7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x21C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x162 PUSH2 0x22B CALLDATASIZE PUSH1 0x4 PUSH2 0x744 JUMP JUMPDEST POP POP JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x23B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xDB PUSH2 0x24A CALLDATASIZE PUSH1 0x4 PUSH2 0x786 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xFF AND SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xD4E57C2049F004FB297EF78591CD409503CEB6B2C722D7FFED032FC99E5F3B58 DUP7 DUP7 DUP7 DUP6 DUP8 PUSH1 0x40 MLOAD PUSH2 0x2AA SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x7EE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x60 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x2F3 JUMPI PUSH2 0x2F3 PUSH2 0x2BA JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x322 JUMPI PUSH2 0x322 PUSH2 0x2BA JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x33B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x355 JUMPI PUSH2 0x355 PUSH2 0x2BA JUMP JUMPDEST PUSH2 0x368 PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD PUSH2 0x2F9 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 PUSH1 0x20 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0x37D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP6 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 SWAP2 DUP2 ADD PUSH1 0x20 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3D7 DUP6 DUP3 DUP7 ADD PUSH2 0x32A JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x405 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x41C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x425 DUP3 PUSH2 0x3E1 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x43E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x425 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x460 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x478 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x490 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x60 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x4AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4B6 DUP6 PUSH2 0x3E1 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x4D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4E5 DUP8 DUP3 DUP9 ADD PUSH2 0x44E JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP6 POP POP POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x405 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x536 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x53F DUP5 PUSH2 0x4F1 JUMP JUMPDEST SWAP3 POP PUSH2 0x54D PUSH1 0x20 DUP6 ADD PUSH2 0x4F1 JUMP JUMPDEST SWAP2 POP PUSH2 0x55B PUSH1 0x40 DUP6 ADD PUSH2 0x4F1 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x579 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP1 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x599 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x5AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x5BF JUMPI PUSH2 0x5BF PUSH2 0x2BA JUMP JUMPDEST DUP1 PUSH1 0x5 SHL PUSH2 0x5CE DUP6 DUP3 ADD PUSH2 0x2F9 JUMP JUMPDEST SWAP2 DUP3 MSTORE DUP4 DUP2 ADD DUP6 ADD SWAP2 DUP6 DUP2 ADD SWAP1 DUP12 DUP5 GT ISZERO PUSH2 0x5E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 DUP7 ADD SWAP3 POP JUMPDEST DUP4 DUP4 LT ISZERO PUSH2 0x670 JUMPI DUP3 CALLDATALOAD DUP6 DUP2 GT ISZERO PUSH2 0x605 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 ADD PUSH1 0x60 DUP2 DUP15 SUB PUSH1 0x1F NOT ADD SLT ISZERO PUSH2 0x61B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x623 PUSH2 0x2D0 JUMP JUMPDEST PUSH2 0x62E DUP10 DUP4 ADD PUSH2 0x3E1 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x40 DUP3 ADD CALLDATALOAD DUP10 DUP3 ADD MSTORE PUSH1 0x60 DUP3 ADD CALLDATALOAD DUP8 DUP2 GT ISZERO PUSH2 0x64C JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST PUSH2 0x65A DUP16 DUP12 DUP4 DUP7 ADD ADD PUSH2 0x32A JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP DUP4 MSTORE POP SWAP2 DUP7 ADD SWAP2 SWAP1 DUP7 ADD SWAP1 PUSH2 0x5EE JUMP JUMPDEST SWAP9 SWAP12 SWAP9 SWAP11 POP POP POP POP PUSH1 0x40 SWAP7 SWAP1 SWAP7 ADD CALLDATALOAD SWAP6 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x6AD JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD DUP3 ADD MSTORE ADD PUSH2 0x691 JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x20 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x20 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD DUP1 DUP2 SWAP7 POP DUP4 PUSH1 0x5 SHL DUP2 ADD SWAP2 POP DUP3 DUP7 ADD PUSH1 0x0 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x715 JUMPI DUP3 DUP5 SUB DUP10 MSTORE PUSH2 0x703 DUP5 DUP4 MLOAD PUSH2 0x687 JUMP JUMPDEST SWAP9 DUP6 ADD SWAP9 SWAP4 POP SWAP1 DUP5 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x6EB JUMP JUMPDEST POP SWAP2 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 PUSH2 0x735 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x6CD JUMP JUMPDEST SWAP1 POP DUP3 PUSH1 0x20 DUP4 ADD MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x757 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x76E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x77A DUP6 DUP3 DUP7 ADD PUSH2 0x44E JUMP JUMPDEST SWAP1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x79C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7A5 DUP6 PUSH2 0x3E1 JUMP JUMPDEST SWAP4 POP PUSH2 0x7B3 PUSH1 0x20 DUP7 ADD PUSH2 0x3E1 JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x7D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7E2 DUP8 DUP3 DUP9 ADD PUSH2 0x32A JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA0 DUP3 ADD DUP8 DUP4 MSTORE PUSH1 0x20 PUSH1 0xA0 DUP2 DUP6 ADD MSTORE DUP2 DUP9 MLOAD DUP1 DUP5 MSTORE PUSH1 0xC0 DUP7 ADD SWAP2 POP PUSH1 0xC0 DUP2 PUSH1 0x5 SHL DUP8 ADD ADD SWAP4 POP DUP3 DUP11 ADD PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x880 JUMPI DUP8 DUP7 SUB PUSH1 0xBF NOT ADD DUP5 MSTORE DUP2 MLOAD DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP8 MSTORE DUP6 DUP2 ADD MLOAD DUP7 DUP9 ADD MSTORE PUSH1 0x40 SWAP1 DUP2 ADD MLOAD PUSH1 0x60 SWAP2 DUP9 ADD DUP3 SWAP1 MSTORE SWAP1 PUSH2 0x86C DUP2 DUP10 ADD DUP4 PUSH2 0x687 JUMP JUMPDEST SWAP8 POP POP POP SWAP3 DUP5 ADD SWAP3 SWAP1 DUP5 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x81C JUMP JUMPDEST POP POP POP POP POP DUP6 PUSH1 0x40 DUP5 ADD MSTORE DUP5 PUSH1 0x60 DUP5 ADD MSTORE DUP3 DUP2 SUB PUSH1 0x80 DUP5 ADD MSTORE PUSH2 0x8A3 DUP2 DUP6 PUSH2 0x6CD JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"208:1879:43:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@deposit_10983":{"entryPoint":null,"id":10983,"parameterSlots":4,"returnSlots":0},"@execute_10967":{"entryPoint":600,"id":10967,"parameterSlots":3,"returnSlots":2},"@getTrustedForwarder_10919":{"entryPoint":null,"id":10919,"parameterSlots":0,"returnSlots":1},"@hasPermissionReturnValueMock_10874":{"entryPoint":null,"id":10874,"parameterSlots":0,"returnSlots":0},"@hasPermission_10907":{"entryPoint":null,"id":10907,"parameterSlots":4,"returnSlots":1},"@isValidSignature_11010":{"entryPoint":null,"id":11010,"parameterSlots":2,"returnSlots":1},"@registerStandardCallback_11026":{"entryPoint":null,"id":11026,"parameterSlots":3,"returnSlots":0},"@setHasPermissionReturnValueMock_10884":{"entryPoint":null,"id":10884,"parameterSlots":1,"returnSlots":0},"@setMetadata_10939":{"entryPoint":null,"id":10939,"parameterSlots":2,"returnSlots":0},"@setSignatureValidator_10993":{"entryPoint":null,"id":10993,"parameterSlots":1,"returnSlots":0},"@setTrustedForwarder_10929":{"entryPoint":null,"id":10929,"parameterSlots":1,"returnSlots":0},"abi_decode_address":{"entryPoint":993,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_bytes":{"entryPoint":810,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_bytes4":{"entryPoint":1265,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_string_calldata":{"entryPoint":1102,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_address":{"entryPoint":1034,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_addresst_bytes32t_bytes_memory_ptr":{"entryPoint":1926,"id":null,"parameterSlots":2,"returnSlots":4},"abi_decode_tuple_t_addresst_uint256t_string_calldata_ptr":{"entryPoint":1175,"id":null,"parameterSlots":2,"returnSlots":4},"abi_decode_tuple_t_bool":{"entryPoint":1068,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes32t_array$_t_struct$_Action_$10724_memory_ptr_$dyn_memory_ptrt_uint256":{"entryPoint":1380,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_bytes32t_bytes_memory_ptr":{"entryPoint":922,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_bytes4t_bytes4t_bytes4":{"entryPoint":1313,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_bytes_calldata_ptr":{"entryPoint":1860,"id":null,"parameterSlots":2,"returnSlots":2},"abi_encode_array_bytes_dyn":{"entryPoint":1741,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_bytes":{"entryPoint":1671,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_t_uint256__to_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_t_uint256__fromStack_reversed":{"entryPoint":1826,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bytes32_t_array$_t_struct$_Action_$10724_memory_ptr_$dyn_memory_ptr_t_uint256_t_uint256_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__to_t_bytes32_t_array$_t_struct$_Action_$10724_memory_ptr_$dyn_memory_ptr_t_uint256_t_uint256_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__fromStack_reversed":{"entryPoint":2030,"id":null,"parameterSlots":6,"returnSlots":1},"abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"allocate_memory":{"entryPoint":761,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_memory_1655":{"entryPoint":720,"id":null,"parameterSlots":0,"returnSlots":1},"panic_error_0x41":{"entryPoint":698,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:10016:92","statements":[{"nodeType":"YulBlock","src":"6:3:92","statements":[]},{"body":{"nodeType":"YulBlock","src":"109:92:92","statements":[{"nodeType":"YulAssignment","src":"119:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"131:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"142:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"127:3:92"},"nodeType":"YulFunctionCall","src":"127:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"119:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"161:9:92"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"186:6:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"179:6:92"},"nodeType":"YulFunctionCall","src":"179:14:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"172:6:92"},"nodeType":"YulFunctionCall","src":"172:22:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"154:6:92"},"nodeType":"YulFunctionCall","src":"154:41:92"},"nodeType":"YulExpressionStatement","src":"154:41:92"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"78:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"89:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"100:4:92","type":""}],"src":"14:187:92"},{"body":{"nodeType":"YulBlock","src":"238:95:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"255:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"262:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"267:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"258:3:92"},"nodeType":"YulFunctionCall","src":"258:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"248:6:92"},"nodeType":"YulFunctionCall","src":"248:31:92"},"nodeType":"YulExpressionStatement","src":"248:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"295:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"298:4:92","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"288:6:92"},"nodeType":"YulFunctionCall","src":"288:15:92"},"nodeType":"YulExpressionStatement","src":"288:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"319:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"322:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"312:6:92"},"nodeType":"YulFunctionCall","src":"312:15:92"},"nodeType":"YulExpressionStatement","src":"312:15:92"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"206:127:92"},{"body":{"nodeType":"YulBlock","src":"384:205:92","statements":[{"nodeType":"YulAssignment","src":"394:19:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"410:2:92","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"404:5:92"},"nodeType":"YulFunctionCall","src":"404:9:92"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"394:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"422:33:92","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"444:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"452:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"440:3:92"},"nodeType":"YulFunctionCall","src":"440:15:92"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"426:10:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"530:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"532:16:92"},"nodeType":"YulFunctionCall","src":"532:18:92"},"nodeType":"YulExpressionStatement","src":"532:18:92"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"473:10:92"},{"kind":"number","nodeType":"YulLiteral","src":"485:18:92","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"470:2:92"},"nodeType":"YulFunctionCall","src":"470:34:92"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"509:10:92"},{"name":"memPtr","nodeType":"YulIdentifier","src":"521:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"506:2:92"},"nodeType":"YulFunctionCall","src":"506:22:92"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"467:2:92"},"nodeType":"YulFunctionCall","src":"467:62:92"},"nodeType":"YulIf","src":"464:88:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"568:2:92","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"572:10:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"561:6:92"},"nodeType":"YulFunctionCall","src":"561:22:92"},"nodeType":"YulExpressionStatement","src":"561:22:92"}]},"name":"allocate_memory_1655","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"373:6:92","type":""}],"src":"338:251:92"},{"body":{"nodeType":"YulBlock","src":"639:230:92","statements":[{"nodeType":"YulAssignment","src":"649:19:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"665:2:92","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"659:5:92"},"nodeType":"YulFunctionCall","src":"659:9:92"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"649:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"677:58:92","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"699:6:92"},{"arguments":[{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"715:4:92"},{"kind":"number","nodeType":"YulLiteral","src":"721:2:92","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"711:3:92"},"nodeType":"YulFunctionCall","src":"711:13:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"730:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"726:3:92"},"nodeType":"YulFunctionCall","src":"726:7:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"707:3:92"},"nodeType":"YulFunctionCall","src":"707:27:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"695:3:92"},"nodeType":"YulFunctionCall","src":"695:40:92"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"681:10:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"810:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"812:16:92"},"nodeType":"YulFunctionCall","src":"812:18:92"},"nodeType":"YulExpressionStatement","src":"812:18:92"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"753:10:92"},{"kind":"number","nodeType":"YulLiteral","src":"765:18:92","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"750:2:92"},"nodeType":"YulFunctionCall","src":"750:34:92"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"789:10:92"},{"name":"memPtr","nodeType":"YulIdentifier","src":"801:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"786:2:92"},"nodeType":"YulFunctionCall","src":"786:22:92"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"747:2:92"},"nodeType":"YulFunctionCall","src":"747:62:92"},"nodeType":"YulIf","src":"744:88:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"848:2:92","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"852:10:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"841:6:92"},"nodeType":"YulFunctionCall","src":"841:22:92"},"nodeType":"YulExpressionStatement","src":"841:22:92"}]},"name":"allocate_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"size","nodeType":"YulTypedName","src":"619:4:92","type":""}],"returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"628:6:92","type":""}],"src":"594:275:92"},{"body":{"nodeType":"YulBlock","src":"926:478:92","statements":[{"body":{"nodeType":"YulBlock","src":"975:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"984:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"987:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"977:6:92"},"nodeType":"YulFunctionCall","src":"977:12:92"},"nodeType":"YulExpressionStatement","src":"977:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"954:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"962:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"950:3:92"},"nodeType":"YulFunctionCall","src":"950:17:92"},{"name":"end","nodeType":"YulIdentifier","src":"969:3:92"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"946:3:92"},"nodeType":"YulFunctionCall","src":"946:27:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"939:6:92"},"nodeType":"YulFunctionCall","src":"939:35:92"},"nodeType":"YulIf","src":"936:55:92"},{"nodeType":"YulVariableDeclaration","src":"1000:30:92","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1023:6:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1010:12:92"},"nodeType":"YulFunctionCall","src":"1010:20:92"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"1004:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"1069:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"1071:16:92"},"nodeType":"YulFunctionCall","src":"1071:18:92"},"nodeType":"YulExpressionStatement","src":"1071:18:92"}]},"condition":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"1045:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"1049:18:92","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1042:2:92"},"nodeType":"YulFunctionCall","src":"1042:26:92"},"nodeType":"YulIf","src":"1039:52:92"},{"nodeType":"YulVariableDeclaration","src":"1100:70:92","value":{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"1143:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"1147:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1139:3:92"},"nodeType":"YulFunctionCall","src":"1139:13:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1158:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"1154:3:92"},"nodeType":"YulFunctionCall","src":"1154:7:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1135:3:92"},"nodeType":"YulFunctionCall","src":"1135:27:92"},{"kind":"number","nodeType":"YulLiteral","src":"1164:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1131:3:92"},"nodeType":"YulFunctionCall","src":"1131:38:92"}],"functionName":{"name":"allocate_memory","nodeType":"YulIdentifier","src":"1115:15:92"},"nodeType":"YulFunctionCall","src":"1115:55:92"},"variables":[{"name":"array_1","nodeType":"YulTypedName","src":"1104:7:92","type":""}]},{"expression":{"arguments":[{"name":"array_1","nodeType":"YulIdentifier","src":"1186:7:92"},{"name":"_1","nodeType":"YulIdentifier","src":"1195:2:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1179:6:92"},"nodeType":"YulFunctionCall","src":"1179:19:92"},"nodeType":"YulExpressionStatement","src":"1179:19:92"},{"body":{"nodeType":"YulBlock","src":"1246:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1255:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1258:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1248:6:92"},"nodeType":"YulFunctionCall","src":"1248:12:92"},"nodeType":"YulExpressionStatement","src":"1248:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1221:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"1229:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1217:3:92"},"nodeType":"YulFunctionCall","src":"1217:15:92"},{"kind":"number","nodeType":"YulLiteral","src":"1234:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1213:3:92"},"nodeType":"YulFunctionCall","src":"1213:26:92"},{"name":"end","nodeType":"YulIdentifier","src":"1241:3:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1210:2:92"},"nodeType":"YulFunctionCall","src":"1210:35:92"},"nodeType":"YulIf","src":"1207:55:92"},{"expression":{"arguments":[{"arguments":[{"name":"array_1","nodeType":"YulIdentifier","src":"1288:7:92"},{"kind":"number","nodeType":"YulLiteral","src":"1297:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1284:3:92"},"nodeType":"YulFunctionCall","src":"1284:18:92"},{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1308:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"1316:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1304:3:92"},"nodeType":"YulFunctionCall","src":"1304:17:92"},{"name":"_1","nodeType":"YulIdentifier","src":"1323:2:92"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"1271:12:92"},"nodeType":"YulFunctionCall","src":"1271:55:92"},"nodeType":"YulExpressionStatement","src":"1271:55:92"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"array_1","nodeType":"YulIdentifier","src":"1350:7:92"},{"name":"_1","nodeType":"YulIdentifier","src":"1359:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1346:3:92"},"nodeType":"YulFunctionCall","src":"1346:16:92"},{"kind":"number","nodeType":"YulLiteral","src":"1364:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1342:3:92"},"nodeType":"YulFunctionCall","src":"1342:27:92"},{"kind":"number","nodeType":"YulLiteral","src":"1371:1:92","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1335:6:92"},"nodeType":"YulFunctionCall","src":"1335:38:92"},"nodeType":"YulExpressionStatement","src":"1335:38:92"},{"nodeType":"YulAssignment","src":"1382:16:92","value":{"name":"array_1","nodeType":"YulIdentifier","src":"1391:7:92"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"1382:5:92"}]}]},"name":"abi_decode_bytes","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"900:6:92","type":""},{"name":"end","nodeType":"YulTypedName","src":"908:3:92","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"916:5:92","type":""}],"src":"874:530:92"},{"body":{"nodeType":"YulBlock","src":"1505:292:92","statements":[{"body":{"nodeType":"YulBlock","src":"1551:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1560:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1563:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1553:6:92"},"nodeType":"YulFunctionCall","src":"1553:12:92"},"nodeType":"YulExpressionStatement","src":"1553:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1526:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"1535:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1522:3:92"},"nodeType":"YulFunctionCall","src":"1522:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"1547:2:92","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1518:3:92"},"nodeType":"YulFunctionCall","src":"1518:32:92"},"nodeType":"YulIf","src":"1515:52:92"},{"nodeType":"YulAssignment","src":"1576:33:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1599:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1586:12:92"},"nodeType":"YulFunctionCall","src":"1586:23:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1576:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"1618:46:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1649:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1660:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1645:3:92"},"nodeType":"YulFunctionCall","src":"1645:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1632:12:92"},"nodeType":"YulFunctionCall","src":"1632:32:92"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1622:6:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"1707:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1716:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1719:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1709:6:92"},"nodeType":"YulFunctionCall","src":"1709:12:92"},"nodeType":"YulExpressionStatement","src":"1709:12:92"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1679:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"1687:18:92","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1676:2:92"},"nodeType":"YulFunctionCall","src":"1676:30:92"},"nodeType":"YulIf","src":"1673:50:92"},{"nodeType":"YulAssignment","src":"1732:59:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1763:9:92"},{"name":"offset","nodeType":"YulIdentifier","src":"1774:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1759:3:92"},"nodeType":"YulFunctionCall","src":"1759:22:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1783:7:92"}],"functionName":{"name":"abi_decode_bytes","nodeType":"YulIdentifier","src":"1742:16:92"},"nodeType":"YulFunctionCall","src":"1742:49:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1732:6:92"}]}]},"name":"abi_decode_tuple_t_bytes32t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1463:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1474:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1486:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1494:6:92","type":""}],"src":"1409:388:92"},{"body":{"nodeType":"YulBlock","src":"1901:103:92","statements":[{"nodeType":"YulAssignment","src":"1911:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1923:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1934:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1919:3:92"},"nodeType":"YulFunctionCall","src":"1919:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1911:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1953:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1968:6:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1980:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"1985:10:92","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1976:3:92"},"nodeType":"YulFunctionCall","src":"1976:20:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1964:3:92"},"nodeType":"YulFunctionCall","src":"1964:33:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1946:6:92"},"nodeType":"YulFunctionCall","src":"1946:52:92"},"nodeType":"YulExpressionStatement","src":"1946:52:92"}]},"name":"abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1870:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1881:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1892:4:92","type":""}],"src":"1802:202:92"},{"body":{"nodeType":"YulBlock","src":"2058:147:92","statements":[{"nodeType":"YulAssignment","src":"2068:29:92","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"2090:6:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2077:12:92"},"nodeType":"YulFunctionCall","src":"2077:20:92"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"2068:5:92"}]},{"body":{"nodeType":"YulBlock","src":"2183:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2192:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2195:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2185:6:92"},"nodeType":"YulFunctionCall","src":"2185:12:92"},"nodeType":"YulExpressionStatement","src":"2185:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2119:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2130:5:92"},{"kind":"number","nodeType":"YulLiteral","src":"2137:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2126:3:92"},"nodeType":"YulFunctionCall","src":"2126:54:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"2116:2:92"},"nodeType":"YulFunctionCall","src":"2116:65:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2109:6:92"},"nodeType":"YulFunctionCall","src":"2109:73:92"},"nodeType":"YulIf","src":"2106:93:92"}]},"name":"abi_decode_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"2037:6:92","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"2048:5:92","type":""}],"src":"2009:196:92"},{"body":{"nodeType":"YulBlock","src":"2280:116:92","statements":[{"body":{"nodeType":"YulBlock","src":"2326:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2335:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2338:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2328:6:92"},"nodeType":"YulFunctionCall","src":"2328:12:92"},"nodeType":"YulExpressionStatement","src":"2328:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2301:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"2310:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2297:3:92"},"nodeType":"YulFunctionCall","src":"2297:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"2322:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2293:3:92"},"nodeType":"YulFunctionCall","src":"2293:32:92"},"nodeType":"YulIf","src":"2290:52:92"},{"nodeType":"YulAssignment","src":"2351:39:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2380:9:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"2361:18:92"},"nodeType":"YulFunctionCall","src":"2361:29:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2351:6:92"}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2246:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2257:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2269:6:92","type":""}],"src":"2210:186:92"},{"body":{"nodeType":"YulBlock","src":"2468:206:92","statements":[{"body":{"nodeType":"YulBlock","src":"2514:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2523:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2526:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2516:6:92"},"nodeType":"YulFunctionCall","src":"2516:12:92"},"nodeType":"YulExpressionStatement","src":"2516:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2489:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"2498:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2485:3:92"},"nodeType":"YulFunctionCall","src":"2485:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"2510:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2481:3:92"},"nodeType":"YulFunctionCall","src":"2481:32:92"},"nodeType":"YulIf","src":"2478:52:92"},{"nodeType":"YulVariableDeclaration","src":"2539:36:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2565:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2552:12:92"},"nodeType":"YulFunctionCall","src":"2552:23:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"2543:5:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"2628:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2637:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2640:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2630:6:92"},"nodeType":"YulFunctionCall","src":"2630:12:92"},"nodeType":"YulExpressionStatement","src":"2630:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2597:5:92"},{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2618:5:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2611:6:92"},"nodeType":"YulFunctionCall","src":"2611:13:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2604:6:92"},"nodeType":"YulFunctionCall","src":"2604:21:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"2594:2:92"},"nodeType":"YulFunctionCall","src":"2594:32:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2587:6:92"},"nodeType":"YulFunctionCall","src":"2587:40:92"},"nodeType":"YulIf","src":"2584:60:92"},{"nodeType":"YulAssignment","src":"2653:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"2663:5:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2653:6:92"}]}]},"name":"abi_decode_tuple_t_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2434:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2445:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2457:6:92","type":""}],"src":"2401:273:92"},{"body":{"nodeType":"YulBlock","src":"2752:275:92","statements":[{"body":{"nodeType":"YulBlock","src":"2801:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2810:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2813:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2803:6:92"},"nodeType":"YulFunctionCall","src":"2803:12:92"},"nodeType":"YulExpressionStatement","src":"2803:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"2780:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"2788:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2776:3:92"},"nodeType":"YulFunctionCall","src":"2776:17:92"},{"name":"end","nodeType":"YulIdentifier","src":"2795:3:92"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2772:3:92"},"nodeType":"YulFunctionCall","src":"2772:27:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2765:6:92"},"nodeType":"YulFunctionCall","src":"2765:35:92"},"nodeType":"YulIf","src":"2762:55:92"},{"nodeType":"YulAssignment","src":"2826:30:92","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"2849:6:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2836:12:92"},"nodeType":"YulFunctionCall","src":"2836:20:92"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"2826:6:92"}]},{"body":{"nodeType":"YulBlock","src":"2899:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2908:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2911:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2901:6:92"},"nodeType":"YulFunctionCall","src":"2901:12:92"},"nodeType":"YulExpressionStatement","src":"2901:12:92"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"2871:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"2879:18:92","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2868:2:92"},"nodeType":"YulFunctionCall","src":"2868:30:92"},"nodeType":"YulIf","src":"2865:50:92"},{"nodeType":"YulAssignment","src":"2924:29:92","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"2940:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"2948:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2936:3:92"},"nodeType":"YulFunctionCall","src":"2936:17:92"},"variableNames":[{"name":"arrayPos","nodeType":"YulIdentifier","src":"2924:8:92"}]},{"body":{"nodeType":"YulBlock","src":"3005:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3014:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3017:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3007:6:92"},"nodeType":"YulFunctionCall","src":"3007:12:92"},"nodeType":"YulExpressionStatement","src":"3007:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"2976:6:92"},{"name":"length","nodeType":"YulIdentifier","src":"2984:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2972:3:92"},"nodeType":"YulFunctionCall","src":"2972:19:92"},{"kind":"number","nodeType":"YulLiteral","src":"2993:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2968:3:92"},"nodeType":"YulFunctionCall","src":"2968:30:92"},{"name":"end","nodeType":"YulIdentifier","src":"3000:3:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2965:2:92"},"nodeType":"YulFunctionCall","src":"2965:39:92"},"nodeType":"YulIf","src":"2962:59:92"}]},"name":"abi_decode_string_calldata","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"2715:6:92","type":""},{"name":"end","nodeType":"YulTypedName","src":"2723:3:92","type":""}],"returnVariables":[{"name":"arrayPos","nodeType":"YulTypedName","src":"2731:8:92","type":""},{"name":"length","nodeType":"YulTypedName","src":"2741:6:92","type":""}],"src":"2679:348:92"},{"body":{"nodeType":"YulBlock","src":"3156:429:92","statements":[{"body":{"nodeType":"YulBlock","src":"3202:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3211:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3214:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3204:6:92"},"nodeType":"YulFunctionCall","src":"3204:12:92"},"nodeType":"YulExpressionStatement","src":"3204:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3177:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"3186:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3173:3:92"},"nodeType":"YulFunctionCall","src":"3173:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"3198:2:92","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3169:3:92"},"nodeType":"YulFunctionCall","src":"3169:32:92"},"nodeType":"YulIf","src":"3166:52:92"},{"nodeType":"YulAssignment","src":"3227:39:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3256:9:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"3237:18:92"},"nodeType":"YulFunctionCall","src":"3237:29:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3227:6:92"}]},{"nodeType":"YulAssignment","src":"3275:42:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3302:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3313:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3298:3:92"},"nodeType":"YulFunctionCall","src":"3298:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3285:12:92"},"nodeType":"YulFunctionCall","src":"3285:32:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"3275:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"3326:46:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3357:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3368:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3353:3:92"},"nodeType":"YulFunctionCall","src":"3353:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3340:12:92"},"nodeType":"YulFunctionCall","src":"3340:32:92"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"3330:6:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"3415:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3424:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3427:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3417:6:92"},"nodeType":"YulFunctionCall","src":"3417:12:92"},"nodeType":"YulExpressionStatement","src":"3417:12:92"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"3387:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"3395:18:92","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3384:2:92"},"nodeType":"YulFunctionCall","src":"3384:30:92"},"nodeType":"YulIf","src":"3381:50:92"},{"nodeType":"YulVariableDeclaration","src":"3440:85:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3497:9:92"},{"name":"offset","nodeType":"YulIdentifier","src":"3508:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3493:3:92"},"nodeType":"YulFunctionCall","src":"3493:22:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3517:7:92"}],"functionName":{"name":"abi_decode_string_calldata","nodeType":"YulIdentifier","src":"3466:26:92"},"nodeType":"YulFunctionCall","src":"3466:59:92"},"variables":[{"name":"value2_1","nodeType":"YulTypedName","src":"3444:8:92","type":""},{"name":"value3_1","nodeType":"YulTypedName","src":"3454:8:92","type":""}]},{"nodeType":"YulAssignment","src":"3534:18:92","value":{"name":"value2_1","nodeType":"YulIdentifier","src":"3544:8:92"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"3534:6:92"}]},{"nodeType":"YulAssignment","src":"3561:18:92","value":{"name":"value3_1","nodeType":"YulIdentifier","src":"3571:8:92"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"3561:6:92"}]}]},"name":"abi_decode_tuple_t_addresst_uint256t_string_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3098:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3109:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3121:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"3129:6:92","type":""},{"name":"value2","nodeType":"YulTypedName","src":"3137:6:92","type":""},{"name":"value3","nodeType":"YulTypedName","src":"3145:6:92","type":""}],"src":"3032:553:92"},{"body":{"nodeType":"YulBlock","src":"3638:125:92","statements":[{"nodeType":"YulAssignment","src":"3648:29:92","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"3670:6:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3657:12:92"},"nodeType":"YulFunctionCall","src":"3657:20:92"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"3648:5:92"}]},{"body":{"nodeType":"YulBlock","src":"3741:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3750:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3753:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3743:6:92"},"nodeType":"YulFunctionCall","src":"3743:12:92"},"nodeType":"YulExpressionStatement","src":"3743:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3699:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3710:5:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3721:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"3726:10:92","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"3717:3:92"},"nodeType":"YulFunctionCall","src":"3717:20:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3706:3:92"},"nodeType":"YulFunctionCall","src":"3706:32:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"3696:2:92"},"nodeType":"YulFunctionCall","src":"3696:43:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3689:6:92"},"nodeType":"YulFunctionCall","src":"3689:51:92"},"nodeType":"YulIf","src":"3686:71:92"}]},"name":"abi_decode_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"3617:6:92","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"3628:5:92","type":""}],"src":"3590:173:92"},{"body":{"nodeType":"YulBlock","src":"3869:227:92","statements":[{"body":{"nodeType":"YulBlock","src":"3915:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3924:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3927:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3917:6:92"},"nodeType":"YulFunctionCall","src":"3917:12:92"},"nodeType":"YulExpressionStatement","src":"3917:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3890:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"3899:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3886:3:92"},"nodeType":"YulFunctionCall","src":"3886:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"3911:2:92","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3882:3:92"},"nodeType":"YulFunctionCall","src":"3882:32:92"},"nodeType":"YulIf","src":"3879:52:92"},{"nodeType":"YulAssignment","src":"3940:38:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3968:9:92"}],"functionName":{"name":"abi_decode_bytes4","nodeType":"YulIdentifier","src":"3950:17:92"},"nodeType":"YulFunctionCall","src":"3950:28:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3940:6:92"}]},{"nodeType":"YulAssignment","src":"3987:47:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4019:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4030:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4015:3:92"},"nodeType":"YulFunctionCall","src":"4015:18:92"}],"functionName":{"name":"abi_decode_bytes4","nodeType":"YulIdentifier","src":"3997:17:92"},"nodeType":"YulFunctionCall","src":"3997:37:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"3987:6:92"}]},{"nodeType":"YulAssignment","src":"4043:47:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4075:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4086:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4071:3:92"},"nodeType":"YulFunctionCall","src":"4071:18:92"}],"functionName":{"name":"abi_decode_bytes4","nodeType":"YulIdentifier","src":"4053:17:92"},"nodeType":"YulFunctionCall","src":"4053:37:92"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"4043:6:92"}]}]},"name":"abi_decode_tuple_t_bytes4t_bytes4t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3819:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3830:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3842:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"3850:6:92","type":""},{"name":"value2","nodeType":"YulTypedName","src":"3858:6:92","type":""}],"src":"3768:328:92"},{"body":{"nodeType":"YulBlock","src":"4255:1589:92","statements":[{"body":{"nodeType":"YulBlock","src":"4301:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4310:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4313:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4303:6:92"},"nodeType":"YulFunctionCall","src":"4303:12:92"},"nodeType":"YulExpressionStatement","src":"4303:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"4276:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"4285:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4272:3:92"},"nodeType":"YulFunctionCall","src":"4272:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"4297:2:92","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4268:3:92"},"nodeType":"YulFunctionCall","src":"4268:32:92"},"nodeType":"YulIf","src":"4265:52:92"},{"nodeType":"YulAssignment","src":"4326:33:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4349:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4336:12:92"},"nodeType":"YulFunctionCall","src":"4336:23:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"4326:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"4368:12:92","value":{"kind":"number","nodeType":"YulLiteral","src":"4378:2:92","type":"","value":"32"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"4372:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4389:46:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4420:9:92"},{"name":"_1","nodeType":"YulIdentifier","src":"4431:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4416:3:92"},"nodeType":"YulFunctionCall","src":"4416:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4403:12:92"},"nodeType":"YulFunctionCall","src":"4403:32:92"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4393:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4444:28:92","value":{"kind":"number","nodeType":"YulLiteral","src":"4454:18:92","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"4448:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"4499:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4508:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4511:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4501:6:92"},"nodeType":"YulFunctionCall","src":"4501:12:92"},"nodeType":"YulExpressionStatement","src":"4501:12:92"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"4487:6:92"},{"name":"_2","nodeType":"YulIdentifier","src":"4495:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4484:2:92"},"nodeType":"YulFunctionCall","src":"4484:14:92"},"nodeType":"YulIf","src":"4481:34:92"},{"nodeType":"YulVariableDeclaration","src":"4524:32:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4538:9:92"},{"name":"offset","nodeType":"YulIdentifier","src":"4549:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4534:3:92"},"nodeType":"YulFunctionCall","src":"4534:22:92"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"4528:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"4604:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4613:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4616:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4606:6:92"},"nodeType":"YulFunctionCall","src":"4606:12:92"},"nodeType":"YulExpressionStatement","src":"4606:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"4583:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"4587:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4579:3:92"},"nodeType":"YulFunctionCall","src":"4579:13:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4594:7:92"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4575:3:92"},"nodeType":"YulFunctionCall","src":"4575:27:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"4568:6:92"},"nodeType":"YulFunctionCall","src":"4568:35:92"},"nodeType":"YulIf","src":"4565:55:92"},{"nodeType":"YulVariableDeclaration","src":"4629:26:92","value":{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"4652:2:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4639:12:92"},"nodeType":"YulFunctionCall","src":"4639:16:92"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"4633:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"4678:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"4680:16:92"},"nodeType":"YulFunctionCall","src":"4680:18:92"},"nodeType":"YulExpressionStatement","src":"4680:18:92"}]},"condition":{"arguments":[{"name":"_4","nodeType":"YulIdentifier","src":"4670:2:92"},{"name":"_2","nodeType":"YulIdentifier","src":"4674:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4667:2:92"},"nodeType":"YulFunctionCall","src":"4667:10:92"},"nodeType":"YulIf","src":"4664:36:92"},{"nodeType":"YulVariableDeclaration","src":"4709:20:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4723:1:92","type":"","value":"5"},{"name":"_4","nodeType":"YulIdentifier","src":"4726:2:92"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"4719:3:92"},"nodeType":"YulFunctionCall","src":"4719:10:92"},"variables":[{"name":"_5","nodeType":"YulTypedName","src":"4713:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4738:39:92","value":{"arguments":[{"arguments":[{"name":"_5","nodeType":"YulIdentifier","src":"4769:2:92"},{"name":"_1","nodeType":"YulIdentifier","src":"4773:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4765:3:92"},"nodeType":"YulFunctionCall","src":"4765:11:92"}],"functionName":{"name":"allocate_memory","nodeType":"YulIdentifier","src":"4749:15:92"},"nodeType":"YulFunctionCall","src":"4749:28:92"},"variables":[{"name":"dst","nodeType":"YulTypedName","src":"4742:3:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4786:16:92","value":{"name":"dst","nodeType":"YulIdentifier","src":"4799:3:92"},"variables":[{"name":"dst_1","nodeType":"YulTypedName","src":"4790:5:92","type":""}]},{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"4818:3:92"},{"name":"_4","nodeType":"YulIdentifier","src":"4823:2:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4811:6:92"},"nodeType":"YulFunctionCall","src":"4811:15:92"},"nodeType":"YulExpressionStatement","src":"4811:15:92"},{"nodeType":"YulAssignment","src":"4835:19:92","value":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"4846:3:92"},{"name":"_1","nodeType":"YulIdentifier","src":"4851:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4842:3:92"},"nodeType":"YulFunctionCall","src":"4842:12:92"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"4835:3:92"}]},{"nodeType":"YulVariableDeclaration","src":"4863:34:92","value":{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"4885:2:92"},{"name":"_5","nodeType":"YulIdentifier","src":"4889:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4881:3:92"},"nodeType":"YulFunctionCall","src":"4881:11:92"},{"name":"_1","nodeType":"YulIdentifier","src":"4894:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4877:3:92"},"nodeType":"YulFunctionCall","src":"4877:20:92"},"variables":[{"name":"srcEnd","nodeType":"YulTypedName","src":"4867:6:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"4929:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4938:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4941:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4931:6:92"},"nodeType":"YulFunctionCall","src":"4931:12:92"},"nodeType":"YulExpressionStatement","src":"4931:12:92"}]},"condition":{"arguments":[{"name":"srcEnd","nodeType":"YulIdentifier","src":"4912:6:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4920:7:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4909:2:92"},"nodeType":"YulFunctionCall","src":"4909:19:92"},"nodeType":"YulIf","src":"4906:39:92"},{"nodeType":"YulVariableDeclaration","src":"4954:22:92","value":{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"4969:2:92"},{"name":"_1","nodeType":"YulIdentifier","src":"4973:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4965:3:92"},"nodeType":"YulFunctionCall","src":"4965:11:92"},"variables":[{"name":"src","nodeType":"YulTypedName","src":"4958:3:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"5041:722:92","statements":[{"nodeType":"YulVariableDeclaration","src":"5055:36:92","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"5087:3:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"5074:12:92"},"nodeType":"YulFunctionCall","src":"5074:17:92"},"variables":[{"name":"innerOffset","nodeType":"YulTypedName","src":"5059:11:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"5127:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5136:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5139:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5129:6:92"},"nodeType":"YulFunctionCall","src":"5129:12:92"},"nodeType":"YulExpressionStatement","src":"5129:12:92"}]},"condition":{"arguments":[{"name":"innerOffset","nodeType":"YulIdentifier","src":"5110:11:92"},{"name":"_2","nodeType":"YulIdentifier","src":"5123:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5107:2:92"},"nodeType":"YulFunctionCall","src":"5107:19:92"},"nodeType":"YulIf","src":"5104:39:92"},{"nodeType":"YulVariableDeclaration","src":"5156:30:92","value":{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"5170:2:92"},{"name":"innerOffset","nodeType":"YulIdentifier","src":"5174:11:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5166:3:92"},"nodeType":"YulFunctionCall","src":"5166:20:92"},"variables":[{"name":"_6","nodeType":"YulTypedName","src":"5160:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"5242:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5251:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5254:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5244:6:92"},"nodeType":"YulFunctionCall","src":"5244:12:92"},"nodeType":"YulExpressionStatement","src":"5244:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"5214:7:92"},{"name":"_6","nodeType":"YulIdentifier","src":"5223:2:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5210:3:92"},"nodeType":"YulFunctionCall","src":"5210:16:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5232:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"5228:3:92"},"nodeType":"YulFunctionCall","src":"5228:7:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5206:3:92"},"nodeType":"YulFunctionCall","src":"5206:30:92"},{"kind":"number","nodeType":"YulLiteral","src":"5238:2:92","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"5202:3:92"},"nodeType":"YulFunctionCall","src":"5202:39:92"},"nodeType":"YulIf","src":"5199:59:92"},{"nodeType":"YulVariableDeclaration","src":"5271:35:92","value":{"arguments":[],"functionName":{"name":"allocate_memory_1655","nodeType":"YulIdentifier","src":"5284:20:92"},"nodeType":"YulFunctionCall","src":"5284:22:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"5275:5:92","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5326:5:92"},{"arguments":[{"arguments":[{"name":"_6","nodeType":"YulIdentifier","src":"5356:2:92"},{"name":"_1","nodeType":"YulIdentifier","src":"5360:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5352:3:92"},"nodeType":"YulFunctionCall","src":"5352:11:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"5333:18:92"},"nodeType":"YulFunctionCall","src":"5333:31:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5319:6:92"},"nodeType":"YulFunctionCall","src":"5319:46:92"},"nodeType":"YulExpressionStatement","src":"5319:46:92"},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5389:5:92"},{"name":"_1","nodeType":"YulIdentifier","src":"5396:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5385:3:92"},"nodeType":"YulFunctionCall","src":"5385:14:92"},{"arguments":[{"arguments":[{"name":"_6","nodeType":"YulIdentifier","src":"5418:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"5422:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5414:3:92"},"nodeType":"YulFunctionCall","src":"5414:11:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"5401:12:92"},"nodeType":"YulFunctionCall","src":"5401:25:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5378:6:92"},"nodeType":"YulFunctionCall","src":"5378:49:92"},"nodeType":"YulExpressionStatement","src":"5378:49:92"},{"nodeType":"YulVariableDeclaration","src":"5440:41:92","value":{"arguments":[{"arguments":[{"name":"_6","nodeType":"YulIdentifier","src":"5473:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"5477:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5469:3:92"},"nodeType":"YulFunctionCall","src":"5469:11:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"5456:12:92"},"nodeType":"YulFunctionCall","src":"5456:25:92"},"variables":[{"name":"offset_1","nodeType":"YulTypedName","src":"5444:8:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"5526:74:92","statements":[{"nodeType":"YulVariableDeclaration","src":"5544:11:92","value":{"kind":"number","nodeType":"YulLiteral","src":"5554:1:92","type":"","value":"0"},"variables":[{"name":"_7","nodeType":"YulTypedName","src":"5548:2:92","type":""}]},{"expression":{"arguments":[{"name":"_7","nodeType":"YulIdentifier","src":"5579:2:92"},{"name":"_7","nodeType":"YulIdentifier","src":"5583:2:92"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5572:6:92"},"nodeType":"YulFunctionCall","src":"5572:14:92"},"nodeType":"YulExpressionStatement","src":"5572:14:92"}]},"condition":{"arguments":[{"name":"offset_1","nodeType":"YulIdentifier","src":"5500:8:92"},{"name":"_2","nodeType":"YulIdentifier","src":"5510:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5497:2:92"},"nodeType":"YulFunctionCall","src":"5497:16:92"},"nodeType":"YulIf","src":"5494:106:92"},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5624:5:92"},{"kind":"number","nodeType":"YulLiteral","src":"5631:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5620:3:92"},"nodeType":"YulFunctionCall","src":"5620:14:92"},{"arguments":[{"arguments":[{"arguments":[{"name":"_6","nodeType":"YulIdentifier","src":"5661:2:92"},{"name":"offset_1","nodeType":"YulIdentifier","src":"5665:8:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5657:3:92"},"nodeType":"YulFunctionCall","src":"5657:17:92"},{"name":"_1","nodeType":"YulIdentifier","src":"5676:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5653:3:92"},"nodeType":"YulFunctionCall","src":"5653:26:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"5681:7:92"}],"functionName":{"name":"abi_decode_bytes","nodeType":"YulIdentifier","src":"5636:16:92"},"nodeType":"YulFunctionCall","src":"5636:53:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5613:6:92"},"nodeType":"YulFunctionCall","src":"5613:77:92"},"nodeType":"YulExpressionStatement","src":"5613:77:92"},{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"5710:3:92"},{"name":"value","nodeType":"YulIdentifier","src":"5715:5:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5703:6:92"},"nodeType":"YulFunctionCall","src":"5703:18:92"},"nodeType":"YulExpressionStatement","src":"5703:18:92"},{"nodeType":"YulAssignment","src":"5734:19:92","value":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"5745:3:92"},{"name":"_1","nodeType":"YulIdentifier","src":"5750:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5741:3:92"},"nodeType":"YulFunctionCall","src":"5741:12:92"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"5734:3:92"}]}]},"condition":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"4996:3:92"},{"name":"srcEnd","nodeType":"YulIdentifier","src":"5001:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"4993:2:92"},"nodeType":"YulFunctionCall","src":"4993:15:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"5009:23:92","statements":[{"nodeType":"YulAssignment","src":"5011:19:92","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"5022:3:92"},{"name":"_1","nodeType":"YulIdentifier","src":"5027:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5018:3:92"},"nodeType":"YulFunctionCall","src":"5018:12:92"},"variableNames":[{"name":"src","nodeType":"YulIdentifier","src":"5011:3:92"}]}]},"pre":{"nodeType":"YulBlock","src":"4989:3:92","statements":[]},"src":"4985:778:92"},{"nodeType":"YulAssignment","src":"5772:15:92","value":{"name":"dst_1","nodeType":"YulIdentifier","src":"5782:5:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"5772:6:92"}]},{"nodeType":"YulAssignment","src":"5796:42:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5823:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5834:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5819:3:92"},"nodeType":"YulFunctionCall","src":"5819:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"5806:12:92"},"nodeType":"YulFunctionCall","src":"5806:32:92"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"5796:6:92"}]}]},"name":"abi_decode_tuple_t_bytes32t_array$_t_struct$_Action_$10724_memory_ptr_$dyn_memory_ptrt_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4205:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"4216:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"4228:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"4236:6:92","type":""},{"name":"value2","nodeType":"YulTypedName","src":"4244:6:92","type":""}],"src":"4101:1743:92"},{"body":{"nodeType":"YulBlock","src":"5898:373:92","statements":[{"nodeType":"YulVariableDeclaration","src":"5908:26:92","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5928:5:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5922:5:92"},"nodeType":"YulFunctionCall","src":"5922:12:92"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"5912:6:92","type":""}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5950:3:92"},{"name":"length","nodeType":"YulIdentifier","src":"5955:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5943:6:92"},"nodeType":"YulFunctionCall","src":"5943:19:92"},"nodeType":"YulExpressionStatement","src":"5943:19:92"},{"nodeType":"YulVariableDeclaration","src":"5971:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"5980:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"5975:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"6042:110:92","statements":[{"nodeType":"YulVariableDeclaration","src":"6056:14:92","value":{"kind":"number","nodeType":"YulLiteral","src":"6066:4:92","type":"","value":"0x20"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"6060:2:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6098:3:92"},{"name":"i","nodeType":"YulIdentifier","src":"6103:1:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6094:3:92"},"nodeType":"YulFunctionCall","src":"6094:11:92"},{"name":"_1","nodeType":"YulIdentifier","src":"6107:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6090:3:92"},"nodeType":"YulFunctionCall","src":"6090:20:92"},{"arguments":[{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6126:5:92"},{"name":"i","nodeType":"YulIdentifier","src":"6133:1:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6122:3:92"},"nodeType":"YulFunctionCall","src":"6122:13:92"},{"name":"_1","nodeType":"YulIdentifier","src":"6137:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6118:3:92"},"nodeType":"YulFunctionCall","src":"6118:22:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6112:5:92"},"nodeType":"YulFunctionCall","src":"6112:29:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6083:6:92"},"nodeType":"YulFunctionCall","src":"6083:59:92"},"nodeType":"YulExpressionStatement","src":"6083:59:92"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"6001:1:92"},{"name":"length","nodeType":"YulIdentifier","src":"6004:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"5998:2:92"},"nodeType":"YulFunctionCall","src":"5998:13:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"6012:21:92","statements":[{"nodeType":"YulAssignment","src":"6014:17:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"6023:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"6026:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6019:3:92"},"nodeType":"YulFunctionCall","src":"6019:12:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"6014:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"5994:3:92","statements":[]},"src":"5990:162:92"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6176:3:92"},{"name":"length","nodeType":"YulIdentifier","src":"6181:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6172:3:92"},"nodeType":"YulFunctionCall","src":"6172:16:92"},{"kind":"number","nodeType":"YulLiteral","src":"6190:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6168:3:92"},"nodeType":"YulFunctionCall","src":"6168:27:92"},{"kind":"number","nodeType":"YulLiteral","src":"6197:1:92","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6161:6:92"},"nodeType":"YulFunctionCall","src":"6161:38:92"},"nodeType":"YulExpressionStatement","src":"6161:38:92"},{"nodeType":"YulAssignment","src":"6208:57:92","value":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6223:3:92"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"6236:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"6244:2:92","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6232:3:92"},"nodeType":"YulFunctionCall","src":"6232:15:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6253:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"6249:3:92"},"nodeType":"YulFunctionCall","src":"6249:7:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"6228:3:92"},"nodeType":"YulFunctionCall","src":"6228:29:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6219:3:92"},"nodeType":"YulFunctionCall","src":"6219:39:92"},{"kind":"number","nodeType":"YulLiteral","src":"6260:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6215:3:92"},"nodeType":"YulFunctionCall","src":"6215:50:92"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"6208:3:92"}]}]},"name":"abi_encode_bytes","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"5875:5:92","type":""},{"name":"pos","nodeType":"YulTypedName","src":"5882:3:92","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"5890:3:92","type":""}],"src":"5849:422:92"},{"body":{"nodeType":"YulBlock","src":"6335:555:92","statements":[{"nodeType":"YulVariableDeclaration","src":"6345:26:92","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6365:5:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6359:5:92"},"nodeType":"YulFunctionCall","src":"6359:12:92"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"6349:6:92","type":""}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6387:3:92"},{"name":"length","nodeType":"YulIdentifier","src":"6392:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6380:6:92"},"nodeType":"YulFunctionCall","src":"6380:19:92"},"nodeType":"YulExpressionStatement","src":"6380:19:92"},{"nodeType":"YulVariableDeclaration","src":"6408:14:92","value":{"kind":"number","nodeType":"YulLiteral","src":"6418:4:92","type":"","value":"0x20"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"6412:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"6431:31:92","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6454:3:92"},{"name":"_1","nodeType":"YulIdentifier","src":"6459:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6450:3:92"},"nodeType":"YulFunctionCall","src":"6450:12:92"},"variables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"6435:11:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"6471:24:92","value":{"name":"updated_pos","nodeType":"YulIdentifier","src":"6484:11:92"},"variables":[{"name":"pos_1","nodeType":"YulTypedName","src":"6475:5:92","type":""}]},{"nodeType":"YulAssignment","src":"6504:18:92","value":{"name":"updated_pos","nodeType":"YulIdentifier","src":"6511:11:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"6504:3:92"}]},{"nodeType":"YulVariableDeclaration","src":"6531:38:92","value":{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"6547:5:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6558:1:92","type":"","value":"5"},{"name":"length","nodeType":"YulIdentifier","src":"6561:6:92"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"6554:3:92"},"nodeType":"YulFunctionCall","src":"6554:14:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6543:3:92"},"nodeType":"YulFunctionCall","src":"6543:26:92"},"variables":[{"name":"tail","nodeType":"YulTypedName","src":"6535:4:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"6578:28:92","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6596:5:92"},{"name":"_1","nodeType":"YulIdentifier","src":"6603:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6592:3:92"},"nodeType":"YulFunctionCall","src":"6592:14:92"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"6582:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"6615:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"6624:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"6619:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"6683:181:92","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6704:3:92"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"6713:4:92"},{"name":"pos_1","nodeType":"YulIdentifier","src":"6719:5:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6709:3:92"},"nodeType":"YulFunctionCall","src":"6709:16:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6697:6:92"},"nodeType":"YulFunctionCall","src":"6697:29:92"},"nodeType":"YulExpressionStatement","src":"6697:29:92"},{"nodeType":"YulAssignment","src":"6739:45:92","value":{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"6770:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6764:5:92"},"nodeType":"YulFunctionCall","src":"6764:13:92"},{"name":"tail","nodeType":"YulIdentifier","src":"6779:4:92"}],"functionName":{"name":"abi_encode_bytes","nodeType":"YulIdentifier","src":"6747:16:92"},"nodeType":"YulFunctionCall","src":"6747:37:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6739:4:92"}]},{"nodeType":"YulAssignment","src":"6797:25:92","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"6811:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"6819:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6807:3:92"},"nodeType":"YulFunctionCall","src":"6807:15:92"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"6797:6:92"}]},{"nodeType":"YulAssignment","src":"6835:19:92","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6846:3:92"},{"name":"_1","nodeType":"YulIdentifier","src":"6851:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6842:3:92"},"nodeType":"YulFunctionCall","src":"6842:12:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"6835:3:92"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"6645:1:92"},{"name":"length","nodeType":"YulIdentifier","src":"6648:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"6642:2:92"},"nodeType":"YulFunctionCall","src":"6642:13:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"6656:18:92","statements":[{"nodeType":"YulAssignment","src":"6658:14:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"6667:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"6670:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6663:3:92"},"nodeType":"YulFunctionCall","src":"6663:9:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"6658:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"6638:3:92","statements":[]},"src":"6634:230:92"},{"nodeType":"YulAssignment","src":"6873:11:92","value":{"name":"tail","nodeType":"YulIdentifier","src":"6880:4:92"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"6873:3:92"}]}]},"name":"abi_encode_array_bytes_dyn","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"6312:5:92","type":""},{"name":"pos","nodeType":"YulTypedName","src":"6319:3:92","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"6327:3:92","type":""}],"src":"6276:614:92"},{"body":{"nodeType":"YulBlock","src":"7092:151:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7109:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7120:2:92","type":"","value":"64"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7102:6:92"},"nodeType":"YulFunctionCall","src":"7102:21:92"},"nodeType":"YulExpressionStatement","src":"7102:21:92"},{"nodeType":"YulAssignment","src":"7132:62:92","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7167:6:92"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7179:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7190:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7175:3:92"},"nodeType":"YulFunctionCall","src":"7175:18:92"}],"functionName":{"name":"abi_encode_array_bytes_dyn","nodeType":"YulIdentifier","src":"7140:26:92"},"nodeType":"YulFunctionCall","src":"7140:54:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7132:4:92"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7214:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7225:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7210:3:92"},"nodeType":"YulFunctionCall","src":"7210:18:92"},{"name":"value1","nodeType":"YulIdentifier","src":"7230:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7203:6:92"},"nodeType":"YulFunctionCall","src":"7203:34:92"},"nodeType":"YulExpressionStatement","src":"7203:34:92"}]},"name":"abi_encode_tuple_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_t_uint256__to_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7053:9:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"7064:6:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"7072:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7083:4:92","type":""}],"src":"6895:348:92"},{"body":{"nodeType":"YulBlock","src":"7349:125:92","statements":[{"nodeType":"YulAssignment","src":"7359:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7371:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7382:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7367:3:92"},"nodeType":"YulFunctionCall","src":"7367:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7359:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7401:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7416:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"7424:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7412:3:92"},"nodeType":"YulFunctionCall","src":"7412:55:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7394:6:92"},"nodeType":"YulFunctionCall","src":"7394:74:92"},"nodeType":"YulExpressionStatement","src":"7394:74:92"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7318:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"7329:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7340:4:92","type":""}],"src":"7248:226:92"},{"body":{"nodeType":"YulBlock","src":"7568:321:92","statements":[{"body":{"nodeType":"YulBlock","src":"7614:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7623:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7626:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7616:6:92"},"nodeType":"YulFunctionCall","src":"7616:12:92"},"nodeType":"YulExpressionStatement","src":"7616:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"7589:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"7598:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"7585:3:92"},"nodeType":"YulFunctionCall","src":"7585:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"7610:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"7581:3:92"},"nodeType":"YulFunctionCall","src":"7581:32:92"},"nodeType":"YulIf","src":"7578:52:92"},{"nodeType":"YulVariableDeclaration","src":"7639:37:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7666:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"7653:12:92"},"nodeType":"YulFunctionCall","src":"7653:23:92"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"7643:6:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"7719:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7728:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7731:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7721:6:92"},"nodeType":"YulFunctionCall","src":"7721:12:92"},"nodeType":"YulExpressionStatement","src":"7721:12:92"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"7691:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"7699:18:92","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"7688:2:92"},"nodeType":"YulFunctionCall","src":"7688:30:92"},"nodeType":"YulIf","src":"7685:50:92"},{"nodeType":"YulVariableDeclaration","src":"7744:85:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7801:9:92"},{"name":"offset","nodeType":"YulIdentifier","src":"7812:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7797:3:92"},"nodeType":"YulFunctionCall","src":"7797:22:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"7821:7:92"}],"functionName":{"name":"abi_decode_string_calldata","nodeType":"YulIdentifier","src":"7770:26:92"},"nodeType":"YulFunctionCall","src":"7770:59:92"},"variables":[{"name":"value0_1","nodeType":"YulTypedName","src":"7748:8:92","type":""},{"name":"value1_1","nodeType":"YulTypedName","src":"7758:8:92","type":""}]},{"nodeType":"YulAssignment","src":"7838:18:92","value":{"name":"value0_1","nodeType":"YulIdentifier","src":"7848:8:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"7838:6:92"}]},{"nodeType":"YulAssignment","src":"7865:18:92","value":{"name":"value1_1","nodeType":"YulIdentifier","src":"7875:8:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"7865:6:92"}]}]},"name":"abi_decode_tuple_t_bytes_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7526:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"7537:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"7549:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"7557:6:92","type":""}],"src":"7479:410:92"},{"body":{"nodeType":"YulBlock","src":"8024:407:92","statements":[{"body":{"nodeType":"YulBlock","src":"8071:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8080:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8083:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8073:6:92"},"nodeType":"YulFunctionCall","src":"8073:12:92"},"nodeType":"YulExpressionStatement","src":"8073:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"8045:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"8054:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"8041:3:92"},"nodeType":"YulFunctionCall","src":"8041:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"8066:3:92","type":"","value":"128"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"8037:3:92"},"nodeType":"YulFunctionCall","src":"8037:33:92"},"nodeType":"YulIf","src":"8034:53:92"},{"nodeType":"YulAssignment","src":"8096:39:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8125:9:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"8106:18:92"},"nodeType":"YulFunctionCall","src":"8106:29:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"8096:6:92"}]},{"nodeType":"YulAssignment","src":"8144:48:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8177:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8188:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8173:3:92"},"nodeType":"YulFunctionCall","src":"8173:18:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"8154:18:92"},"nodeType":"YulFunctionCall","src":"8154:38:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"8144:6:92"}]},{"nodeType":"YulAssignment","src":"8201:42:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8228:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8239:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8224:3:92"},"nodeType":"YulFunctionCall","src":"8224:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"8211:12:92"},"nodeType":"YulFunctionCall","src":"8211:32:92"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"8201:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"8252:46:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8283:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8294:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8279:3:92"},"nodeType":"YulFunctionCall","src":"8279:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"8266:12:92"},"nodeType":"YulFunctionCall","src":"8266:32:92"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"8256:6:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"8341:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8350:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8353:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8343:6:92"},"nodeType":"YulFunctionCall","src":"8343:12:92"},"nodeType":"YulExpressionStatement","src":"8343:12:92"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"8313:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"8321:18:92","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"8310:2:92"},"nodeType":"YulFunctionCall","src":"8310:30:92"},"nodeType":"YulIf","src":"8307:50:92"},{"nodeType":"YulAssignment","src":"8366:59:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8397:9:92"},{"name":"offset","nodeType":"YulIdentifier","src":"8408:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8393:3:92"},"nodeType":"YulFunctionCall","src":"8393:22:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"8417:7:92"}],"functionName":{"name":"abi_decode_bytes","nodeType":"YulIdentifier","src":"8376:16:92"},"nodeType":"YulFunctionCall","src":"8376:49:92"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"8366:6:92"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_bytes32t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7966:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"7977:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"7989:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"7997:6:92","type":""},{"name":"value2","nodeType":"YulTypedName","src":"8005:6:92","type":""},{"name":"value3","nodeType":"YulTypedName","src":"8013:6:92","type":""}],"src":"7894:537:92"},{"body":{"nodeType":"YulBlock","src":"8817:1197:92","statements":[{"nodeType":"YulVariableDeclaration","src":"8827:33:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8845:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8856:3:92","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8841:3:92"},"nodeType":"YulFunctionCall","src":"8841:19:92"},"variables":[{"name":"tail_1","nodeType":"YulTypedName","src":"8831:6:92","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8876:9:92"},{"name":"value0","nodeType":"YulIdentifier","src":"8887:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8869:6:92"},"nodeType":"YulFunctionCall","src":"8869:25:92"},"nodeType":"YulExpressionStatement","src":"8869:25:92"},{"nodeType":"YulVariableDeclaration","src":"8903:12:92","value":{"kind":"number","nodeType":"YulLiteral","src":"8913:2:92","type":"","value":"32"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"8907:2:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8935:9:92"},{"name":"_1","nodeType":"YulIdentifier","src":"8946:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8931:3:92"},"nodeType":"YulFunctionCall","src":"8931:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"8951:3:92","type":"","value":"160"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8924:6:92"},"nodeType":"YulFunctionCall","src":"8924:31:92"},"nodeType":"YulExpressionStatement","src":"8924:31:92"},{"nodeType":"YulVariableDeclaration","src":"8964:17:92","value":{"name":"tail_1","nodeType":"YulIdentifier","src":"8975:6:92"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"8968:3:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"8990:27:92","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"9010:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"9004:5:92"},"nodeType":"YulFunctionCall","src":"9004:13:92"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"8994:6:92","type":""}]},{"expression":{"arguments":[{"name":"tail_1","nodeType":"YulIdentifier","src":"9033:6:92"},{"name":"length","nodeType":"YulIdentifier","src":"9041:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9026:6:92"},"nodeType":"YulFunctionCall","src":"9026:22:92"},"nodeType":"YulExpressionStatement","src":"9026:22:92"},{"nodeType":"YulAssignment","src":"9057:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9068:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9079:3:92","type":"","value":"192"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9064:3:92"},"nodeType":"YulFunctionCall","src":"9064:19:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"9057:3:92"}]},{"nodeType":"YulVariableDeclaration","src":"9092:54:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9114:9:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9129:1:92","type":"","value":"5"},{"name":"length","nodeType":"YulIdentifier","src":"9132:6:92"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"9125:3:92"},"nodeType":"YulFunctionCall","src":"9125:14:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9110:3:92"},"nodeType":"YulFunctionCall","src":"9110:30:92"},{"kind":"number","nodeType":"YulLiteral","src":"9142:3:92","type":"","value":"192"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9106:3:92"},"nodeType":"YulFunctionCall","src":"9106:40:92"},"variables":[{"name":"tail_2","nodeType":"YulTypedName","src":"9096:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"9155:29:92","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"9173:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"9181:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9169:3:92"},"nodeType":"YulFunctionCall","src":"9169:15:92"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"9159:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"9193:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"9202:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"9197:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"9261:538:92","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"9282:3:92"},{"arguments":[{"arguments":[{"name":"tail_2","nodeType":"YulIdentifier","src":"9295:6:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"9303:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"9291:3:92"},"nodeType":"YulFunctionCall","src":"9291:22:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9319:3:92","type":"","value":"191"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"9315:3:92"},"nodeType":"YulFunctionCall","src":"9315:8:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9287:3:92"},"nodeType":"YulFunctionCall","src":"9287:37:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9275:6:92"},"nodeType":"YulFunctionCall","src":"9275:50:92"},"nodeType":"YulExpressionStatement","src":"9275:50:92"},{"nodeType":"YulVariableDeclaration","src":"9338:23:92","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"9354:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"9348:5:92"},"nodeType":"YulFunctionCall","src":"9348:13:92"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"9342:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"9374:14:92","value":{"kind":"number","nodeType":"YulLiteral","src":"9384:4:92","type":"","value":"0x60"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"9378:2:92","type":""}]},{"expression":{"arguments":[{"name":"tail_2","nodeType":"YulIdentifier","src":"9408:6:92"},{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"9426:2:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"9420:5:92"},"nodeType":"YulFunctionCall","src":"9420:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9431:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"9416:3:92"},"nodeType":"YulFunctionCall","src":"9416:58:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9401:6:92"},"nodeType":"YulFunctionCall","src":"9401:74:92"},"nodeType":"YulExpressionStatement","src":"9401:74:92"},{"expression":{"arguments":[{"arguments":[{"name":"tail_2","nodeType":"YulIdentifier","src":"9499:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"9507:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9495:3:92"},"nodeType":"YulFunctionCall","src":"9495:15:92"},{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"9522:2:92"},{"name":"_1","nodeType":"YulIdentifier","src":"9526:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9518:3:92"},"nodeType":"YulFunctionCall","src":"9518:11:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"9512:5:92"},"nodeType":"YulFunctionCall","src":"9512:18:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9488:6:92"},"nodeType":"YulFunctionCall","src":"9488:43:92"},"nodeType":"YulExpressionStatement","src":"9488:43:92"},{"nodeType":"YulVariableDeclaration","src":"9544:14:92","value":{"kind":"number","nodeType":"YulLiteral","src":"9554:4:92","type":"","value":"0x40"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"9548:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"9571:38:92","value":{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"9601:2:92"},{"name":"_4","nodeType":"YulIdentifier","src":"9605:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9597:3:92"},"nodeType":"YulFunctionCall","src":"9597:11:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"9591:5:92"},"nodeType":"YulFunctionCall","src":"9591:18:92"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"9575:12:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"tail_2","nodeType":"YulIdentifier","src":"9633:6:92"},{"name":"_4","nodeType":"YulIdentifier","src":"9641:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9629:3:92"},"nodeType":"YulFunctionCall","src":"9629:15:92"},{"name":"_3","nodeType":"YulIdentifier","src":"9646:2:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9622:6:92"},"nodeType":"YulFunctionCall","src":"9622:27:92"},"nodeType":"YulExpressionStatement","src":"9622:27:92"},{"nodeType":"YulAssignment","src":"9662:57:92","value":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"9689:12:92"},{"arguments":[{"name":"tail_2","nodeType":"YulIdentifier","src":"9707:6:92"},{"name":"_3","nodeType":"YulIdentifier","src":"9715:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9703:3:92"},"nodeType":"YulFunctionCall","src":"9703:15:92"}],"functionName":{"name":"abi_encode_bytes","nodeType":"YulIdentifier","src":"9672:16:92"},"nodeType":"YulFunctionCall","src":"9672:47:92"},"variableNames":[{"name":"tail_2","nodeType":"YulIdentifier","src":"9662:6:92"}]},{"nodeType":"YulAssignment","src":"9732:25:92","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"9746:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"9754:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9742:3:92"},"nodeType":"YulFunctionCall","src":"9742:15:92"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"9732:6:92"}]},{"nodeType":"YulAssignment","src":"9770:19:92","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"9781:3:92"},{"name":"_1","nodeType":"YulIdentifier","src":"9786:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9777:3:92"},"nodeType":"YulFunctionCall","src":"9777:12:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"9770:3:92"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"9223:1:92"},{"name":"length","nodeType":"YulIdentifier","src":"9226:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"9220:2:92"},"nodeType":"YulFunctionCall","src":"9220:13:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"9234:18:92","statements":[{"nodeType":"YulAssignment","src":"9236:14:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"9245:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"9248:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9241:3:92"},"nodeType":"YulFunctionCall","src":"9241:9:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"9236:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"9216:3:92","statements":[]},"src":"9212:587:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9819:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9830:4:92","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9815:3:92"},"nodeType":"YulFunctionCall","src":"9815:20:92"},{"name":"value2","nodeType":"YulIdentifier","src":"9837:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9808:6:92"},"nodeType":"YulFunctionCall","src":"9808:36:92"},"nodeType":"YulExpressionStatement","src":"9808:36:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9864:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9875:4:92","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9860:3:92"},"nodeType":"YulFunctionCall","src":"9860:20:92"},{"name":"value3","nodeType":"YulIdentifier","src":"9882:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9853:6:92"},"nodeType":"YulFunctionCall","src":"9853:36:92"},"nodeType":"YulExpressionStatement","src":"9853:36:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9909:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9920:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9905:3:92"},"nodeType":"YulFunctionCall","src":"9905:19:92"},{"arguments":[{"name":"tail_2","nodeType":"YulIdentifier","src":"9930:6:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"9938:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"9926:3:92"},"nodeType":"YulFunctionCall","src":"9926:22:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9898:6:92"},"nodeType":"YulFunctionCall","src":"9898:51:92"},"nodeType":"YulExpressionStatement","src":"9898:51:92"},{"nodeType":"YulAssignment","src":"9958:50:92","value":{"arguments":[{"name":"value4","nodeType":"YulIdentifier","src":"9993:6:92"},{"name":"tail_2","nodeType":"YulIdentifier","src":"10001:6:92"}],"functionName":{"name":"abi_encode_array_bytes_dyn","nodeType":"YulIdentifier","src":"9966:26:92"},"nodeType":"YulFunctionCall","src":"9966:42:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"9958:4:92"}]}]},"name":"abi_encode_tuple_t_bytes32_t_array$_t_struct$_Action_$10724_memory_ptr_$dyn_memory_ptr_t_uint256_t_uint256_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__to_t_bytes32_t_array$_t_struct$_Action_$10724_memory_ptr_$dyn_memory_ptr_t_uint256_t_uint256_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8754:9:92","type":""},{"name":"value4","nodeType":"YulTypedName","src":"8765:6:92","type":""},{"name":"value3","nodeType":"YulTypedName","src":"8773:6:92","type":""},{"name":"value2","nodeType":"YulTypedName","src":"8781:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"8789:6:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"8797:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"8808:4:92","type":""}],"src":"8436:1578:92"}]},"contents":"{\n { }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function panic_error_0x41()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function allocate_memory_1655() -> memPtr\n {\n memPtr := mload(64)\n let newFreePtr := add(memPtr, 96)\n if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n }\n function allocate_memory(size) -> memPtr\n {\n memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(size, 31), not(31)))\n if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n }\n function abi_decode_bytes(offset, end) -> array\n {\n if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n let _1 := calldataload(offset)\n if gt(_1, 0xffffffffffffffff) { panic_error_0x41() }\n let array_1 := allocate_memory(add(and(add(_1, 0x1f), not(31)), 0x20))\n mstore(array_1, _1)\n if gt(add(add(offset, _1), 0x20), end) { revert(0, 0) }\n calldatacopy(add(array_1, 0x20), add(offset, 0x20), _1)\n mstore(add(add(array_1, _1), 0x20), 0)\n array := array_1\n }\n function abi_decode_tuple_t_bytes32t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := calldataload(headStart)\n let offset := calldataload(add(headStart, 32))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n value1 := abi_decode_bytes(add(headStart, offset), dataEnd)\n }\n function abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, shl(224, 0xffffffff)))\n }\n function abi_decode_address(offset) -> value\n {\n value := calldataload(offset)\n if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n }\n function abi_decode_tuple_t_bool(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n value0 := value\n }\n function abi_decode_string_calldata(offset, end) -> arrayPos, length\n {\n if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n length := calldataload(offset)\n if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n arrayPos := add(offset, 0x20)\n if gt(add(add(offset, length), 0x20), end) { revert(0, 0) }\n }\n function abi_decode_tuple_t_addresst_uint256t_string_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := calldataload(add(headStart, 32))\n let offset := calldataload(add(headStart, 64))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n let value2_1, value3_1 := abi_decode_string_calldata(add(headStart, offset), dataEnd)\n value2 := value2_1\n value3 := value3_1\n }\n function abi_decode_bytes4(offset) -> value\n {\n value := calldataload(offset)\n if iszero(eq(value, and(value, shl(224, 0xffffffff)))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_bytes4t_bytes4t_bytes4(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n value0 := abi_decode_bytes4(headStart)\n value1 := abi_decode_bytes4(add(headStart, 32))\n value2 := abi_decode_bytes4(add(headStart, 64))\n }\n function abi_decode_tuple_t_bytes32t_array$_t_struct$_Action_$10724_memory_ptr_$dyn_memory_ptrt_uint256(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n value0 := calldataload(headStart)\n let _1 := 32\n let offset := calldataload(add(headStart, _1))\n let _2 := 0xffffffffffffffff\n if gt(offset, _2) { revert(0, 0) }\n let _3 := add(headStart, offset)\n if iszero(slt(add(_3, 0x1f), dataEnd)) { revert(0, 0) }\n let _4 := calldataload(_3)\n if gt(_4, _2) { panic_error_0x41() }\n let _5 := shl(5, _4)\n let dst := allocate_memory(add(_5, _1))\n let dst_1 := dst\n mstore(dst, _4)\n dst := add(dst, _1)\n let srcEnd := add(add(_3, _5), _1)\n if gt(srcEnd, dataEnd) { revert(0, 0) }\n let src := add(_3, _1)\n for { } lt(src, srcEnd) { src := add(src, _1) }\n {\n let innerOffset := calldataload(src)\n if gt(innerOffset, _2) { revert(0, 0) }\n let _6 := add(_3, innerOffset)\n if slt(add(sub(dataEnd, _6), not(31)), 96) { revert(0, 0) }\n let value := allocate_memory_1655()\n mstore(value, abi_decode_address(add(_6, _1)))\n mstore(add(value, _1), calldataload(add(_6, 64)))\n let offset_1 := calldataload(add(_6, 96))\n if gt(offset_1, _2)\n {\n let _7 := 0\n revert(_7, _7)\n }\n mstore(add(value, 64), abi_decode_bytes(add(add(_6, offset_1), _1), dataEnd))\n mstore(dst, value)\n dst := add(dst, _1)\n }\n value1 := dst_1\n value2 := calldataload(add(headStart, 64))\n }\n function abi_encode_bytes(value, pos) -> end\n {\n let length := mload(value)\n mstore(pos, length)\n let i := 0\n for { } lt(i, length) { i := add(i, 0x20) }\n {\n let _1 := 0x20\n mstore(add(add(pos, i), _1), mload(add(add(value, i), _1)))\n }\n mstore(add(add(pos, length), 0x20), 0)\n end := add(add(pos, and(add(length, 31), not(31))), 0x20)\n }\n function abi_encode_array_bytes_dyn(value, pos) -> end\n {\n let length := mload(value)\n mstore(pos, length)\n let _1 := 0x20\n let updated_pos := add(pos, _1)\n let pos_1 := updated_pos\n pos := updated_pos\n let tail := add(pos_1, shl(5, length))\n let srcPtr := add(value, _1)\n let i := 0\n for { } lt(i, length) { i := add(i, 1) }\n {\n mstore(pos, sub(tail, pos_1))\n tail := abi_encode_bytes(mload(srcPtr), tail)\n srcPtr := add(srcPtr, _1)\n pos := add(pos, _1)\n }\n end := tail\n }\n function abi_encode_tuple_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_t_uint256__to_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n {\n mstore(headStart, 64)\n tail := abi_encode_array_bytes_dyn(value0, add(headStart, 64))\n mstore(add(headStart, 32), value1)\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_decode_tuple_t_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let offset := calldataload(headStart)\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n let value0_1, value1_1 := abi_decode_string_calldata(add(headStart, offset), dataEnd)\n value0 := value0_1\n value1 := value1_1\n }\n function abi_decode_tuple_t_addresst_addresst_bytes32t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n {\n if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := abi_decode_address(add(headStart, 32))\n value2 := calldataload(add(headStart, 64))\n let offset := calldataload(add(headStart, 96))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n value3 := abi_decode_bytes(add(headStart, offset), dataEnd)\n }\n function abi_encode_tuple_t_bytes32_t_array$_t_struct$_Action_$10724_memory_ptr_$dyn_memory_ptr_t_uint256_t_uint256_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__to_t_bytes32_t_array$_t_struct$_Action_$10724_memory_ptr_$dyn_memory_ptr_t_uint256_t_uint256_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n {\n let tail_1 := add(headStart, 160)\n mstore(headStart, value0)\n let _1 := 32\n mstore(add(headStart, _1), 160)\n let pos := tail_1\n let length := mload(value1)\n mstore(tail_1, length)\n pos := add(headStart, 192)\n let tail_2 := add(add(headStart, shl(5, length)), 192)\n let srcPtr := add(value1, _1)\n let i := 0\n for { } lt(i, length) { i := add(i, 1) }\n {\n mstore(pos, add(sub(tail_2, headStart), not(191)))\n let _2 := mload(srcPtr)\n let _3 := 0x60\n mstore(tail_2, and(mload(_2), 0xffffffffffffffffffffffffffffffffffffffff))\n mstore(add(tail_2, _1), mload(add(_2, _1)))\n let _4 := 0x40\n let memberValue0 := mload(add(_2, _4))\n mstore(add(tail_2, _4), _3)\n tail_2 := abi_encode_bytes(memberValue0, add(tail_2, _3))\n srcPtr := add(srcPtr, _1)\n pos := add(pos, _1)\n }\n mstore(add(headStart, 0x40), value2)\n mstore(add(headStart, 0x60), value3)\n mstore(add(headStart, 128), sub(tail_2, headStart))\n tail := abi_encode_array_bytes_dyn(value4, tail_2)\n }\n}","id":92,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"6080604052600436106100bc5760003560e01c8063c4a5014511610074578063da7422281161004e578063da74222814610144578063ee57e36f14610210578063fdef91061461022f57600080fd5b8063c4a50145146101a6578063c71bf324146101c6578063ce1b815f146101f457600080fd5b80633e2ab0d9116100a55780633e2ab0d91461014457806380e4cbe114610164578063bfe07da61461019257600080fd5b80630a1f41ca146100c15780631626ba7e146100f0575b600080fd5b3480156100cd57600080fd5b506000546100db9060ff1681565b60405190151581526020015b60405180910390f35b3480156100fc57600080fd5b5061011361010b36600461039a565b600092915050565b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020016100e7565b34801561015057600080fd5b5061016261015f36600461040a565b50565b005b34801561017057600080fd5b5061016261017f36600461042c565b6000805460ff1916911515919091179055565b6101626101a0366004610497565b50505050565b3480156101b257600080fd5b506101626101c1366004610521565b505050565b3480156101d257600080fd5b506101e66101e1366004610564565b610258565b6040516100e7929190610722565b34801561020057600080fd5b50604051600081526020016100e7565b34801561021c57600080fd5b5061016261022b366004610744565b5050565b34801561023b57600080fd5b506100db61024a366004610786565b60005460ff16949350505050565b606060003373ffffffffffffffffffffffffffffffffffffffff167fd4e57c2049f004fb297ef78591cd409503ceb6b2c722d7ffed032fc99e5f3b5886868685876040516102aa9594939291906107ee565b60405180910390a2935093915050565b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff811182821017156102f3576102f36102ba565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715610322576103226102ba565b604052919050565b600082601f83011261033b57600080fd5b813567ffffffffffffffff811115610355576103556102ba565b610368601f8201601f19166020016102f9565b81815284602083860101111561037d57600080fd5b816020850160208301376000918101602001919091529392505050565b600080604083850312156103ad57600080fd5b82359150602083013567ffffffffffffffff8111156103cb57600080fd5b6103d78582860161032a565b9150509250929050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461040557600080fd5b919050565b60006020828403121561041c57600080fd5b610425826103e1565b9392505050565b60006020828403121561043e57600080fd5b8135801515811461042557600080fd5b60008083601f84011261046057600080fd5b50813567ffffffffffffffff81111561047857600080fd5b60208301915083602082850101111561049057600080fd5b9250929050565b600080600080606085870312156104ad57600080fd5b6104b6856103e1565b935060208501359250604085013567ffffffffffffffff8111156104d957600080fd5b6104e58782880161044e565b95989497509550505050565b80357fffffffff000000000000000000000000000000000000000000000000000000008116811461040557600080fd5b60008060006060848603121561053657600080fd5b61053f846104f1565b925061054d602085016104f1565b915061055b604085016104f1565b90509250925092565b60008060006060848603121561057957600080fd5b8335925060208085013567ffffffffffffffff8082111561059957600080fd5b818701915087601f8301126105ad57600080fd5b8135818111156105bf576105bf6102ba565b8060051b6105ce8582016102f9565b918252838101850191858101908b8411156105e857600080fd5b86860192505b838310156106705782358581111561060557600080fd5b86016060818e03601f1901121561061b57600080fd5b6106236102d0565b61062e8983016103e1565b815260408201358982015260608201358781111561064c5760008081fd5b61065a8f8b8386010161032a565b60408301525083525091860191908601906105ee565b989b989a5050505060409690960135955050505050565b6000815180845260005b818110156106ad57602081850181015186830182015201610691565b506000602082860101526020601f19601f83011685010191505092915050565b600081518084526020808501808196508360051b8101915082860160005b85811015610715578284038952610703848351610687565b988501989350908401906001016106eb565b5091979650505050505050565b60408152600061073560408301856106cd565b90508260208301529392505050565b6000806020838503121561075757600080fd5b823567ffffffffffffffff81111561076e57600080fd5b61077a8582860161044e565b90969095509350505050565b6000806000806080858703121561079c57600080fd5b6107a5856103e1565b93506107b3602086016103e1565b925060408501359150606085013567ffffffffffffffff8111156107d657600080fd5b6107e28782880161032a565b91505092959194509250565b600060a08201878352602060a08185015281885180845260c08601915060c08160051b8701019350828a0160005b828110156108805787860360bf190184528151805173ffffffffffffffffffffffffffffffffffffffff168752858101518688015260409081015160609188018290529061086c81890183610687565b97505050928401929084019060010161081c565b505050505085604084015284606084015282810360808401526108a381856106cd565b9897505050505050505056fea164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xBC JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xC4A50145 GT PUSH2 0x74 JUMPI DUP1 PUSH4 0xDA742228 GT PUSH2 0x4E JUMPI DUP1 PUSH4 0xDA742228 EQ PUSH2 0x144 JUMPI DUP1 PUSH4 0xEE57E36F EQ PUSH2 0x210 JUMPI DUP1 PUSH4 0xFDEF9106 EQ PUSH2 0x22F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xC4A50145 EQ PUSH2 0x1A6 JUMPI DUP1 PUSH4 0xC71BF324 EQ PUSH2 0x1C6 JUMPI DUP1 PUSH4 0xCE1B815F EQ PUSH2 0x1F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x3E2AB0D9 GT PUSH2 0xA5 JUMPI DUP1 PUSH4 0x3E2AB0D9 EQ PUSH2 0x144 JUMPI DUP1 PUSH4 0x80E4CBE1 EQ PUSH2 0x164 JUMPI DUP1 PUSH4 0xBFE07DA6 EQ PUSH2 0x192 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xA1F41CA EQ PUSH2 0xC1 JUMPI DUP1 PUSH4 0x1626BA7E EQ PUSH2 0xF0 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xCD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 SLOAD PUSH2 0xDB SWAP1 PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xFC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x113 PUSH2 0x10B CALLDATASIZE PUSH1 0x4 PUSH2 0x39A JUMP JUMPDEST PUSH1 0x0 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xE7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x150 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x162 PUSH2 0x15F CALLDATASIZE PUSH1 0x4 PUSH2 0x40A JUMP JUMPDEST POP JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x170 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x162 PUSH2 0x17F CALLDATASIZE PUSH1 0x4 PUSH2 0x42C JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x162 PUSH2 0x1A0 CALLDATASIZE PUSH1 0x4 PUSH2 0x497 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x162 PUSH2 0x1C1 CALLDATASIZE PUSH1 0x4 PUSH2 0x521 JUMP JUMPDEST POP POP POP JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1E6 PUSH2 0x1E1 CALLDATASIZE PUSH1 0x4 PUSH2 0x564 JUMP JUMPDEST PUSH2 0x258 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xE7 SWAP3 SWAP2 SWAP1 PUSH2 0x722 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x200 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xE7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x21C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x162 PUSH2 0x22B CALLDATASIZE PUSH1 0x4 PUSH2 0x744 JUMP JUMPDEST POP POP JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x23B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xDB PUSH2 0x24A CALLDATASIZE PUSH1 0x4 PUSH2 0x786 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xFF AND SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xD4E57C2049F004FB297EF78591CD409503CEB6B2C722D7FFED032FC99E5F3B58 DUP7 DUP7 DUP7 DUP6 DUP8 PUSH1 0x40 MLOAD PUSH2 0x2AA SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x7EE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x60 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x2F3 JUMPI PUSH2 0x2F3 PUSH2 0x2BA JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x322 JUMPI PUSH2 0x322 PUSH2 0x2BA JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x33B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x355 JUMPI PUSH2 0x355 PUSH2 0x2BA JUMP JUMPDEST PUSH2 0x368 PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD PUSH2 0x2F9 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 PUSH1 0x20 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0x37D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP6 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 SWAP2 DUP2 ADD PUSH1 0x20 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3D7 DUP6 DUP3 DUP7 ADD PUSH2 0x32A JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x405 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x41C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x425 DUP3 PUSH2 0x3E1 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x43E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x425 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x460 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x478 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x490 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x60 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x4AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4B6 DUP6 PUSH2 0x3E1 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x4D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4E5 DUP8 DUP3 DUP9 ADD PUSH2 0x44E JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP6 POP POP POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x405 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x536 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x53F DUP5 PUSH2 0x4F1 JUMP JUMPDEST SWAP3 POP PUSH2 0x54D PUSH1 0x20 DUP6 ADD PUSH2 0x4F1 JUMP JUMPDEST SWAP2 POP PUSH2 0x55B PUSH1 0x40 DUP6 ADD PUSH2 0x4F1 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x579 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP1 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x599 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x5AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x5BF JUMPI PUSH2 0x5BF PUSH2 0x2BA JUMP JUMPDEST DUP1 PUSH1 0x5 SHL PUSH2 0x5CE DUP6 DUP3 ADD PUSH2 0x2F9 JUMP JUMPDEST SWAP2 DUP3 MSTORE DUP4 DUP2 ADD DUP6 ADD SWAP2 DUP6 DUP2 ADD SWAP1 DUP12 DUP5 GT ISZERO PUSH2 0x5E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 DUP7 ADD SWAP3 POP JUMPDEST DUP4 DUP4 LT ISZERO PUSH2 0x670 JUMPI DUP3 CALLDATALOAD DUP6 DUP2 GT ISZERO PUSH2 0x605 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 ADD PUSH1 0x60 DUP2 DUP15 SUB PUSH1 0x1F NOT ADD SLT ISZERO PUSH2 0x61B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x623 PUSH2 0x2D0 JUMP JUMPDEST PUSH2 0x62E DUP10 DUP4 ADD PUSH2 0x3E1 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x40 DUP3 ADD CALLDATALOAD DUP10 DUP3 ADD MSTORE PUSH1 0x60 DUP3 ADD CALLDATALOAD DUP8 DUP2 GT ISZERO PUSH2 0x64C JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST PUSH2 0x65A DUP16 DUP12 DUP4 DUP7 ADD ADD PUSH2 0x32A JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP DUP4 MSTORE POP SWAP2 DUP7 ADD SWAP2 SWAP1 DUP7 ADD SWAP1 PUSH2 0x5EE JUMP JUMPDEST SWAP9 SWAP12 SWAP9 SWAP11 POP POP POP POP PUSH1 0x40 SWAP7 SWAP1 SWAP7 ADD CALLDATALOAD SWAP6 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x6AD JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD DUP3 ADD MSTORE ADD PUSH2 0x691 JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x20 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x20 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD DUP1 DUP2 SWAP7 POP DUP4 PUSH1 0x5 SHL DUP2 ADD SWAP2 POP DUP3 DUP7 ADD PUSH1 0x0 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x715 JUMPI DUP3 DUP5 SUB DUP10 MSTORE PUSH2 0x703 DUP5 DUP4 MLOAD PUSH2 0x687 JUMP JUMPDEST SWAP9 DUP6 ADD SWAP9 SWAP4 POP SWAP1 DUP5 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x6EB JUMP JUMPDEST POP SWAP2 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 PUSH2 0x735 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x6CD JUMP JUMPDEST SWAP1 POP DUP3 PUSH1 0x20 DUP4 ADD MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x757 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x76E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x77A DUP6 DUP3 DUP7 ADD PUSH2 0x44E JUMP JUMPDEST SWAP1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x79C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7A5 DUP6 PUSH2 0x3E1 JUMP JUMPDEST SWAP4 POP PUSH2 0x7B3 PUSH1 0x20 DUP7 ADD PUSH2 0x3E1 JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x7D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7E2 DUP8 DUP3 DUP9 ADD PUSH2 0x32A JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA0 DUP3 ADD DUP8 DUP4 MSTORE PUSH1 0x20 PUSH1 0xA0 DUP2 DUP6 ADD MSTORE DUP2 DUP9 MLOAD DUP1 DUP5 MSTORE PUSH1 0xC0 DUP7 ADD SWAP2 POP PUSH1 0xC0 DUP2 PUSH1 0x5 SHL DUP8 ADD ADD SWAP4 POP DUP3 DUP11 ADD PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x880 JUMPI DUP8 DUP7 SUB PUSH1 0xBF NOT ADD DUP5 MSTORE DUP2 MLOAD DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP8 MSTORE DUP6 DUP2 ADD MLOAD DUP7 DUP9 ADD MSTORE PUSH1 0x40 SWAP1 DUP2 ADD MLOAD PUSH1 0x60 SWAP2 DUP9 ADD DUP3 SWAP1 MSTORE SWAP1 PUSH2 0x86C DUP2 DUP10 ADD DUP4 PUSH2 0x687 JUMP JUMPDEST SWAP8 POP POP POP SWAP3 DUP5 ADD SWAP3 SWAP1 DUP5 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x81C JUMP JUMPDEST POP POP POP POP POP DUP6 PUSH1 0x40 DUP5 ADD MSTORE DUP5 PUSH1 0x60 DUP5 ADD MSTORE DUP3 DUP2 SUB PUSH1 0x80 DUP5 ADD MSTORE PUSH2 0x8A3 DUP2 DUP6 PUSH2 0x6CD JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"208:1879:43:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;239:40;;;;;;;;;;-1:-1:-1;239:40:43;;;;;;;;;;;179:14:92;;172:22;154:41;;142:2;127:18;239:40:43;;;;;;;;1676:184;;;;;;;;;;-1:-1:-1;1676:184:43;;;;;:::i;:::-;1796:6;1676:184;;;;;;;;1976:20:92;1964:33;;;1946:52;;1934:2;1919:18;1676:184:43;1802:202:92;1549:121:43;;;;;;;;;;-1:-1:-1;1549:121:43;;;;;:::i;:::-;;;;;286:163;;;;;;;;;;-1:-1:-1;286:163:43;;;;;:::i;:::-;382:28;:60;;-1:-1:-1;;382:60:43;;;;;;;;;;286:163;1363:180;;;;;;:::i;:::-;;;;;;1866:219;;;;;;;;;;-1:-1:-1;1866:219:43;;;;;:::i;:::-;;;;;1066:291;;;;;;;;;;-1:-1:-1;1066:291:43;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;731:104::-;;;;;;;;;;-1:-1:-1;731:104:43;;792:7;7394:74:92;;7382:2;7367:18;731:104:43;7248:226:92;962:98:43;;;;;;;;;;-1:-1:-1;962:98:43;;;;;:::i;:::-;;;;455:270;;;;;;;;;;-1:-1:-1;455:270:43;;;;;:::i;:::-;621:4;690:28;;;455:270;;;;;;;1066:291;1207:26;1235:18;1279:10;1270:80;;;1291:6;1299:8;1309:15;1326:10;1338:11;1270:80;;;;;;;;;;:::i;:::-;;;;;;;;1066:291;;;;;;:::o;206:127:92:-;267:10;262:3;258:20;255:1;248:31;298:4;295:1;288:15;322:4;319:1;312:15;338:251;410:2;404:9;452:2;440:15;;485:18;470:34;;506:22;;;467:62;464:88;;;532:18;;:::i;:::-;568:2;561:22;338:251;:::o;594:275::-;665:2;659:9;730:2;711:13;;-1:-1:-1;;707:27:92;695:40;;765:18;750:34;;786:22;;;747:62;744:88;;;812:18;;:::i;:::-;848:2;841:22;594:275;;-1:-1:-1;594:275:92:o;874:530::-;916:5;969:3;962:4;954:6;950:17;946:27;936:55;;987:1;984;977:12;936:55;1023:6;1010:20;1049:18;1045:2;1042:26;1039:52;;;1071:18;;:::i;:::-;1115:55;1158:2;1139:13;;-1:-1:-1;;1135:27:92;1164:4;1131:38;1115:55;:::i;:::-;1195:2;1186:7;1179:19;1241:3;1234:4;1229:2;1221:6;1217:15;1213:26;1210:35;1207:55;;;1258:1;1255;1248:12;1207:55;1323:2;1316:4;1308:6;1304:17;1297:4;1288:7;1284:18;1271:55;1371:1;1346:16;;;1364:4;1342:27;1335:38;;;;1350:7;874:530;-1:-1:-1;;;874:530:92:o;1409:388::-;1486:6;1494;1547:2;1535:9;1526:7;1522:23;1518:32;1515:52;;;1563:1;1560;1553:12;1515:52;1599:9;1586:23;1576:33;;1660:2;1649:9;1645:18;1632:32;1687:18;1679:6;1676:30;1673:50;;;1719:1;1716;1709:12;1673:50;1742:49;1783:7;1774:6;1763:9;1759:22;1742:49;:::i;:::-;1732:59;;;1409:388;;;;;:::o;2009:196::-;2077:20;;2137:42;2126:54;;2116:65;;2106:93;;2195:1;2192;2185:12;2106:93;2009:196;;;:::o;2210:186::-;2269:6;2322:2;2310:9;2301:7;2297:23;2293:32;2290:52;;;2338:1;2335;2328:12;2290:52;2361:29;2380:9;2361:29;:::i;:::-;2351:39;2210:186;-1:-1:-1;;;2210:186:92:o;2401:273::-;2457:6;2510:2;2498:9;2489:7;2485:23;2481:32;2478:52;;;2526:1;2523;2516:12;2478:52;2565:9;2552:23;2618:5;2611:13;2604:21;2597:5;2594:32;2584:60;;2640:1;2637;2630:12;2679:348;2731:8;2741:6;2795:3;2788:4;2780:6;2776:17;2772:27;2762:55;;2813:1;2810;2803:12;2762:55;-1:-1:-1;2836:20:92;;2879:18;2868:30;;2865:50;;;2911:1;2908;2901:12;2865:50;2948:4;2940:6;2936:17;2924:29;;3000:3;2993:4;2984:6;2976;2972:19;2968:30;2965:39;2962:59;;;3017:1;3014;3007:12;2962:59;2679:348;;;;;:::o;3032:553::-;3121:6;3129;3137;3145;3198:2;3186:9;3177:7;3173:23;3169:32;3166:52;;;3214:1;3211;3204:12;3166:52;3237:29;3256:9;3237:29;:::i;:::-;3227:39;;3313:2;3302:9;3298:18;3285:32;3275:42;;3368:2;3357:9;3353:18;3340:32;3395:18;3387:6;3384:30;3381:50;;;3427:1;3424;3417:12;3381:50;3466:59;3517:7;3508:6;3497:9;3493:22;3466:59;:::i;:::-;3032:553;;;;-1:-1:-1;3544:8:92;-1:-1:-1;;;;3032:553:92:o;3590:173::-;3657:20;;3717;3706:32;;3696:43;;3686:71;;3753:1;3750;3743:12;3768:328;3842:6;3850;3858;3911:2;3899:9;3890:7;3886:23;3882:32;3879:52;;;3927:1;3924;3917:12;3879:52;3950:28;3968:9;3950:28;:::i;:::-;3940:38;;3997:37;4030:2;4019:9;4015:18;3997:37;:::i;:::-;3987:47;;4053:37;4086:2;4075:9;4071:18;4053:37;:::i;:::-;4043:47;;3768:328;;;;;:::o;4101:1743::-;4228:6;4236;4244;4297:2;4285:9;4276:7;4272:23;4268:32;4265:52;;;4313:1;4310;4303:12;4265:52;4349:9;4336:23;4326:33;;4378:2;4431;4420:9;4416:18;4403:32;4454:18;4495:2;4487:6;4484:14;4481:34;;;4511:1;4508;4501:12;4481:34;4549:6;4538:9;4534:22;4524:32;;4594:7;4587:4;4583:2;4579:13;4575:27;4565:55;;4616:1;4613;4606:12;4565:55;4652:2;4639:16;4674:2;4670;4667:10;4664:36;;;4680:18;;:::i;:::-;4726:2;4723:1;4719:10;4749:28;4773:2;4769;4765:11;4749:28;:::i;:::-;4811:15;;;4881:11;;;4877:20;;;4842:12;;;;4909:19;;;4906:39;;;4941:1;4938;4931:12;4906:39;4973:2;4969;4965:11;4954:22;;4985:778;5001:6;4996:3;4993:15;4985:778;;;5087:3;5074:17;5123:2;5110:11;5107:19;5104:39;;;5139:1;5136;5129:12;5104:39;5166:20;;5238:2;5210:16;;;-1:-1:-1;;5206:30:92;5202:39;5199:59;;;5254:1;5251;5244:12;5199:59;5284:22;;:::i;:::-;5333:31;5360:2;5356;5352:11;5333:31;:::i;:::-;5326:5;5319:46;5422:2;5418;5414:11;5401:25;5396:2;5389:5;5385:14;5378:49;5477:2;5473;5469:11;5456:25;5510:2;5500:8;5497:16;5494:106;;;5554:1;5583:2;5579;5572:14;5494:106;5636:53;5681:7;5676:2;5665:8;5661:2;5657:17;5653:26;5636:53;:::i;:::-;5631:2;5620:14;;5613:77;-1:-1:-1;5703:18:92;;-1:-1:-1;5018:12:92;;;;5741;;;;4985:778;;;4101:1743;;5782:5;;-1:-1:-1;;;;5834:2:92;5819:18;;;;5806:32;;-1:-1:-1;;;;;4101:1743:92:o;5849:422::-;5890:3;5928:5;5922:12;5955:6;5950:3;5943:19;5980:1;5990:162;6004:6;6001:1;5998:13;5990:162;;;6066:4;6122:13;;;6118:22;;6112:29;6094:11;;;6090:20;;6083:59;6019:12;5990:162;;;5994:3;6197:1;6190:4;6181:6;6176:3;6172:16;6168:27;6161:38;6260:4;6253:2;6249:7;6244:2;6236:6;6232:15;6228:29;6223:3;6219:39;6215:50;6208:57;;;5849:422;;;;:::o;6276:614::-;6327:3;6365:5;6359:12;6392:6;6387:3;6380:19;6418:4;6459:2;6454:3;6450:12;6484:11;6511;6504:18;;6561:6;6558:1;6554:14;6547:5;6543:26;6531:38;;6603:2;6596:5;6592:14;6624:1;6634:230;6648:6;6645:1;6642:13;6634:230;;;6719:5;6713:4;6709:16;6704:3;6697:29;6747:37;6779:4;6770:6;6764:13;6747:37;:::i;:::-;6842:12;;;;6739:45;-1:-1:-1;6807:15:92;;;;6670:1;6663:9;6634:230;;;-1:-1:-1;6880:4:92;;6276:614;-1:-1:-1;;;;;;;6276:614:92:o;6895:348::-;7120:2;7109:9;7102:21;7083:4;7140:54;7190:2;7179:9;7175:18;7167:6;7140:54;:::i;:::-;7132:62;;7230:6;7225:2;7214:9;7210:18;7203:34;6895:348;;;;;:::o;7479:410::-;7549:6;7557;7610:2;7598:9;7589:7;7585:23;7581:32;7578:52;;;7626:1;7623;7616:12;7578:52;7666:9;7653:23;7699:18;7691:6;7688:30;7685:50;;;7731:1;7728;7721:12;7685:50;7770:59;7821:7;7812:6;7801:9;7797:22;7770:59;:::i;:::-;7848:8;;7744:85;;-1:-1:-1;7479:410:92;-1:-1:-1;;;;7479:410:92:o;7894:537::-;7989:6;7997;8005;8013;8066:3;8054:9;8045:7;8041:23;8037:33;8034:53;;;8083:1;8080;8073:12;8034:53;8106:29;8125:9;8106:29;:::i;:::-;8096:39;;8154:38;8188:2;8177:9;8173:18;8154:38;:::i;:::-;8144:48;;8239:2;8228:9;8224:18;8211:32;8201:42;;8294:2;8283:9;8279:18;8266:32;8321:18;8313:6;8310:30;8307:50;;;8353:1;8350;8343:12;8307:50;8376:49;8417:7;8408:6;8397:9;8393:22;8376:49;:::i;:::-;8366:59;;;7894:537;;;;;;;:::o;8436:1578::-;8808:4;8856:3;8845:9;8841:19;8887:6;8876:9;8869:25;8913:2;8951:3;8946:2;8935:9;8931:18;8924:31;8975:6;9010;9004:13;9041:6;9033;9026:22;9079:3;9068:9;9064:19;9057:26;;9142:3;9132:6;9129:1;9125:14;9114:9;9110:30;9106:40;9092:54;;9181:2;9173:6;9169:15;9202:1;9212:587;9226:6;9223:1;9220:13;9212:587;;;9291:22;;;-1:-1:-1;;9287:37:92;9275:50;;9348:13;;9420:9;;9431:42;9416:58;9401:74;;9518:11;;;9512:18;9495:15;;;9488:43;9554:4;9597:11;;;9591:18;9384:4;9629:15;;;9622:27;;;9591:18;9672:47;9703:15;;;9591:18;9672:47;:::i;:::-;9662:57;-1:-1:-1;;;9777:12:92;;;;9742:15;;;;9248:1;9241:9;9212:587;;;9216:3;;;;;9837:6;9830:4;9819:9;9815:20;9808:36;9882:6;9875:4;9864:9;9860:20;9853:36;9938:9;9930:6;9926:22;9920:3;9909:9;9905:19;9898:51;9966:42;10001:6;9993;9966:42;:::i;:::-;9958:50;8436:1578;-1:-1:-1;;;;;;;;8436:1578:92:o"},"gasEstimates":{"creation":{"codeDepositCost":"447200","executionCost":"480","totalCost":"447680"},"external":{"deposit(address,uint256,string)":"581","execute(bytes32,(address,uint256,bytes)[],uint256)":"infinite","getTrustedForwarder()":"244","hasPermission(address,address,bytes32,bytes)":"infinite","hasPermissionReturnValueMock()":"2323","isValidSignature(bytes32,bytes)":"infinite","registerStandardCallback(bytes4,bytes4,bytes4)":"infinite","setHasPermissionReturnValueMock(bool)":"24527","setMetadata(bytes)":"474","setSignatureValidator(address)":"303","setTrustedForwarder(address)":"302"}},"methodIdentifiers":{"deposit(address,uint256,string)":"bfe07da6","execute(bytes32,(address,uint256,bytes)[],uint256)":"c71bf324","getTrustedForwarder()":"ce1b815f","hasPermission(address,address,bytes32,bytes)":"fdef9106","hasPermissionReturnValueMock()":"0a1f41ca","isValidSignature(bytes32,bytes)":"1626ba7e","registerStandardCallback(bytes4,bytes4,bytes4)":"c4a50145","setHasPermissionReturnValueMock(bool)":"80e4cbe1","setMetadata(bytes)":"ee57e36f","setSignatureValidator(address)":"3e2ab0d9","setTrustedForwarder(address)":"da742228"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"_reference\",\"type\":\"string\"}],\"name\":\"Deposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"actor\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"callId\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"struct IDAO.Action[]\",\"name\":\"actions\",\"type\":\"tuple[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"allowFailureMap\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"failureMap\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes[]\",\"name\":\"execResults\",\"type\":\"bytes[]\"}],\"name\":\"Executed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"name\":\"MetadataSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"NativeTokenDeposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"callbackSelector\",\"type\":\"bytes4\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"magicNumber\",\"type\":\"bytes4\"}],\"name\":\"StandardCallbackRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"forwarder\",\"type\":\"address\"}],\"name\":\"TrustedForwarderSet\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"_reference\",\"type\":\"string\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"callId\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IDAO.Action[]\",\"name\":\"_actions\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"allowFailureMap\",\"type\":\"uint256\"}],\"name\":\"execute\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"execResults\",\"type\":\"bytes[]\"},{\"internalType\":\"uint256\",\"name\":\"failureMap\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTrustedForwarder\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_who\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_permissionId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"hasPermission\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"hasPermissionReturnValueMock\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"isValidSignature\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"},{\"internalType\":\"bytes4\",\"name\":\"_callbackSelector\",\"type\":\"bytes4\"},{\"internalType\":\"bytes4\",\"name\":\"_magicNumber\",\"type\":\"bytes4\"}],\"name\":\"registerStandardCallback\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"_hasPermissionReturnValueMock\",\"type\":\"bool\"}],\"name\":\"setHasPermissionReturnValueMock\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_metadata\",\"type\":\"bytes\"}],\"name\":\"setMetadata\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_signatureValidator\",\"type\":\"address\"}],\"name\":\"setSignatureValidator\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_trustedForwarder\",\"type\":\"address\"}],\"name\":\"setTrustedForwarder\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"DO NOT USE IN PRODUCTION!\",\"kind\":\"dev\",\"methods\":{\"deposit(address,uint256,string)\":{\"params\":{\"_amount\":\"The amount of tokens to deposit.\",\"_reference\":\"The reference describing the deposit reason.\",\"_token\":\"The address of the token or address(0) in case of the native token.\"}},\"getTrustedForwarder()\":{\"returns\":{\"_0\":\"The trusted forwarder address.\"}},\"hasPermission(address,address,bytes32,bytes)\":{\"params\":{\"_data\":\"The optional data passed to the `PermissionCondition` registered.\",\"_permissionId\":\"The permission identifier.\",\"_where\":\"The address of the contract.\",\"_who\":\"The address of a EOA or contract to give the permissions.\"},\"returns\":{\"_0\":\"Returns true if the address has permission, false if not.\"}},\"isValidSignature(bytes32,bytes)\":{\"params\":{\"_hash\":\"The hash of the data to be signed.\",\"_signature\":\"The signature byte array associated with `_hash`.\"},\"returns\":{\"_0\":\"Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not.\"}},\"registerStandardCallback(bytes4,bytes4,bytes4)\":{\"params\":{\"_callbackSelector\":\"The selector of the callback function.\",\"_interfaceId\":\"The ID of the interface.\",\"_magicNumber\":\"The magic number to be registered for the function signature.\"}},\"setMetadata(bytes)\":{\"params\":{\"_metadata\":\"The IPFS hash of the new metadata object.\"}},\"setTrustedForwarder(address)\":{\"params\":{\"_trustedForwarder\":\"The trusted forwarder address.\"}}},\"version\":1},\"userdoc\":{\"events\":{\"Deposited(address,address,uint256,string)\":{\"notice\":\"Emitted when a token deposit has been made to the DAO.\"},\"Executed(address,bytes32,(address,uint256,bytes)[],uint256,uint256,bytes[])\":{\"notice\":\"Emitted when a proposal is executed.\"},\"MetadataSet(bytes)\":{\"notice\":\"Emitted when the DAO metadata is updated.\"},\"NativeTokenDeposited(address,uint256)\":{\"notice\":\"Emitted when a native token deposit has been made to the DAO.\"},\"StandardCallbackRegistered(bytes4,bytes4,bytes4)\":{\"notice\":\"Emitted when a standard callback is registered.\"},\"TrustedForwarderSet(address)\":{\"notice\":\"Emitted when a new TrustedForwarder is set on the DAO.\"}},\"kind\":\"user\",\"methods\":{\"deposit(address,uint256,string)\":{\"notice\":\"Deposits (native) tokens to the DAO contract with a reference string.\"},\"getTrustedForwarder()\":{\"notice\":\"Getter for the trusted forwarder verifying the meta transaction.\"},\"hasPermission(address,address,bytes32,bytes)\":{\"notice\":\"Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\"},\"isValidSignature(bytes32,bytes)\":{\"notice\":\"Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\"},\"registerStandardCallback(bytes4,bytes4,bytes4)\":{\"notice\":\"Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\"},\"setMetadata(bytes)\":{\"notice\":\"Updates the DAO metadata (e.g., an IPFS hash).\"},\"setTrustedForwarder(address)\":{\"notice\":\"Setter for the trusted forwarder verifying the meta transaction.\"}},\"notice\":\"A mock DAO that anyone can set permissions in.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/mocks/dao/DAOMock.sol\":\"DAOMock\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"src/dao/IDAO.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IDAO\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for DAOs within the Aragon App DAO framework.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IDAO {\\n /// @notice The action struct to be consumed by the DAO's `execute` function resulting in an external call.\\n /// @param to The address to call.\\n /// @param value The native token value to be sent with the call.\\n /// @param data The bytes-encoded function selector and calldata for the call.\\n struct Action {\\n address to;\\n uint256 value;\\n bytes data;\\n }\\n\\n /// @notice Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\\n /// @param _where The address of the contract.\\n /// @param _who The address of a EOA or contract to give the permissions.\\n /// @param _permissionId The permission identifier.\\n /// @param _data The optional data passed to the `PermissionCondition` registered.\\n /// @return Returns true if the address has permission, false if not.\\n function hasPermission(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes memory _data\\n ) external view returns (bool);\\n\\n /// @notice Updates the DAO metadata (e.g., an IPFS hash).\\n /// @param _metadata The IPFS hash of the new metadata object.\\n function setMetadata(bytes calldata _metadata) external;\\n\\n /// @notice Emitted when the DAO metadata is updated.\\n /// @param metadata The IPFS hash of the new metadata object.\\n event MetadataSet(bytes metadata);\\n\\n /// @notice Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted.\\n /// @param _callId The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce.\\n /// @param _actions The array of actions.\\n /// @param _allowFailureMap A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @return The array of results obtained from the executed actions in `bytes`.\\n /// @return The resulting failure map containing the actions have actually failed.\\n function execute(\\n bytes32 _callId,\\n Action[] memory _actions,\\n uint256 _allowFailureMap\\n ) external returns (bytes[] memory, uint256);\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param actor The address of the caller.\\n /// @param callId The ID of the call.\\n /// @param actions The array of actions executed.\\n /// @param allowFailureMap The allow failure map encoding which actions are allowed to fail.\\n /// @param failureMap The failure map encoding which actions have failed.\\n /// @param execResults The array with the results of the executed actions.\\n /// @dev The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce.\\n event Executed(\\n address indexed actor,\\n bytes32 callId,\\n Action[] actions,\\n uint256 allowFailureMap,\\n uint256 failureMap,\\n bytes[] execResults\\n );\\n\\n /// @notice Emitted when a standard callback is registered.\\n /// @param interfaceId The ID of the interface.\\n /// @param callbackSelector The selector of the callback function.\\n /// @param magicNumber The magic number to be registered for the callback function selector.\\n event StandardCallbackRegistered(\\n bytes4 interfaceId,\\n bytes4 callbackSelector,\\n bytes4 magicNumber\\n );\\n\\n /// @notice Deposits (native) tokens to the DAO contract with a reference string.\\n /// @param _token The address of the token or address(0) in case of the native token.\\n /// @param _amount The amount of tokens to deposit.\\n /// @param _reference The reference describing the deposit reason.\\n function deposit(address _token, uint256 _amount, string calldata _reference) external payable;\\n\\n /// @notice Emitted when a token deposit has been made to the DAO.\\n /// @param sender The address of the sender.\\n /// @param token The address of the deposited token.\\n /// @param amount The amount of tokens deposited.\\n /// @param _reference The reference describing the deposit reason.\\n event Deposited(\\n address indexed sender,\\n address indexed token,\\n uint256 amount,\\n string _reference\\n );\\n\\n /// @notice Emitted when a native token deposit has been made to the DAO.\\n /// @dev This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).\\n /// @param sender The address of the sender.\\n /// @param amount The amount of native tokens deposited.\\n event NativeTokenDeposited(address sender, uint256 amount);\\n\\n /// @notice Setter for the trusted forwarder verifying the meta transaction.\\n /// @param _trustedForwarder The trusted forwarder address.\\n function setTrustedForwarder(address _trustedForwarder) external;\\n\\n /// @notice Getter for the trusted forwarder verifying the meta transaction.\\n /// @return The trusted forwarder address.\\n function getTrustedForwarder() external view returns (address);\\n\\n /// @notice Emitted when a new TrustedForwarder is set on the DAO.\\n /// @param forwarder the new forwarder address.\\n event TrustedForwarderSet(address forwarder);\\n\\n /// @notice Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\\n /// @param _hash The hash of the data to be signed.\\n /// @param _signature The signature byte array associated with `_hash`.\\n /// @return Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not.\\n function isValidSignature(bytes32 _hash, bytes memory _signature) external returns (bytes4);\\n\\n /// @notice Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\\n /// @param _interfaceId The ID of the interface.\\n /// @param _callbackSelector The selector of the callback function.\\n /// @param _magicNumber The magic number to be registered for the function signature.\\n function registerStandardCallback(\\n bytes4 _interfaceId,\\n bytes4 _callbackSelector,\\n bytes4 _magicNumber\\n ) external;\\n\\n /// @notice Removed function being left here to not corrupt the IDAO interface ID. Any call will revert.\\n /// @dev Introduced in v1.0.0. Removed in v1.4.0.\\n function setSignatureValidator(address) external;\\n}\\n\",\"keccak256\":\"0xb7f615523c26de042edce98731c658f44a1edb2464387ac1b642c4c69f57128e\",\"license\":\"AGPL-3.0-or-later\"},\"src/mocks/dao/DAOMock.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice A mock DAO that anyone can set permissions in.\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract DAOMock is IDAO {\\n bool public hasPermissionReturnValueMock;\\n\\n function setHasPermissionReturnValueMock(bool _hasPermissionReturnValueMock) external {\\n hasPermissionReturnValueMock = _hasPermissionReturnValueMock;\\n }\\n\\n function hasPermission(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes memory _data\\n ) external view override returns (bool) {\\n (_where, _who, _permissionId, _data);\\n return hasPermissionReturnValueMock;\\n }\\n\\n function getTrustedForwarder() public pure override returns (address) {\\n return address(0);\\n }\\n\\n function setTrustedForwarder(address _trustedForwarder) external pure override {\\n (_trustedForwarder);\\n }\\n\\n function setMetadata(bytes calldata _metadata) external pure override {\\n (_metadata);\\n }\\n\\n function execute(\\n bytes32 callId,\\n Action[] memory _actions,\\n uint256 allowFailureMap\\n ) external override returns (bytes[] memory execResults, uint256 failureMap) {\\n emit Executed(msg.sender, callId, _actions, allowFailureMap, failureMap, execResults);\\n }\\n\\n function deposit(\\n address _token,\\n uint256 _amount,\\n string calldata _reference\\n ) external payable override {\\n (_token, _amount, _reference);\\n }\\n\\n function setSignatureValidator(address _signatureValidator) external pure override {\\n (_signatureValidator);\\n }\\n\\n function isValidSignature(\\n bytes32 _hash,\\n bytes memory _signature\\n ) external pure override returns (bytes4) {\\n (_hash, _signature);\\n return 0x0;\\n }\\n\\n function registerStandardCallback(\\n bytes4 _interfaceId,\\n bytes4 _callbackSelector,\\n bytes4 _magicNumber\\n ) external pure override {\\n (_interfaceId, _callbackSelector, _magicNumber);\\n }\\n}\\n\",\"keccak256\":\"0xe401a8e836f72beb710c46ec4aa49f2691d62643bfb7de85c68dae4272bc24b6\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[{"astId":10874,"contract":"src/mocks/dao/DAOMock.sol:DAOMock","label":"hasPermissionReturnValueMock","offset":0,"slot":"0","type":"t_bool"}],"types":{"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"}}},"userdoc":{"events":{"Deposited(address,address,uint256,string)":{"notice":"Emitted when a token deposit has been made to the DAO."},"Executed(address,bytes32,(address,uint256,bytes)[],uint256,uint256,bytes[])":{"notice":"Emitted when a proposal is executed."},"MetadataSet(bytes)":{"notice":"Emitted when the DAO metadata is updated."},"NativeTokenDeposited(address,uint256)":{"notice":"Emitted when a native token deposit has been made to the DAO."},"StandardCallbackRegistered(bytes4,bytes4,bytes4)":{"notice":"Emitted when a standard callback is registered."},"TrustedForwarderSet(address)":{"notice":"Emitted when a new TrustedForwarder is set on the DAO."}},"kind":"user","methods":{"deposit(address,uint256,string)":{"notice":"Deposits (native) tokens to the DAO contract with a reference string."},"getTrustedForwarder()":{"notice":"Getter for the trusted forwarder verifying the meta transaction."},"hasPermission(address,address,bytes32,bytes)":{"notice":"Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process."},"isValidSignature(bytes32,bytes)":{"notice":"Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271)."},"registerStandardCallback(bytes4,bytes4,bytes4)":{"notice":"Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature."},"setMetadata(bytes)":{"notice":"Updates the DAO metadata (e.g., an IPFS hash)."},"setTrustedForwarder(address)":{"notice":"Setter for the trusted forwarder verifying the meta transaction."}},"notice":"A mock DAO that anyone can set permissions in.","version":1}}},"src/mocks/permission/auth/DaoAuthorizableMock.sol":{"DaoAuthorizableMock":{"abi":[{"inputs":[{"internalType":"contract IDAO","name":"_dao","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"dao","type":"address"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"name":"DaoUnauthorized","type":"error"},{"inputs":[],"name":"AUTHORIZED_FUNC_PERMISSION_ID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"authorizedFunc","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dao","outputs":[{"internalType":"contract IDAO","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"DO NOT USE IN PRODUCTION!","errors":{"DaoUnauthorized(address,address,address,bytes32)":[{"params":{"dao":"The associated DAO.","permissionId":"The permission identifier.","where":"The context in which the authorization reverted.","who":"The address (EOA or contract) missing the permission."}}]},"kind":"dev","methods":{"dao()":{"returns":{"_0":"The DAO contract."}}},"version":1},"evm":{"bytecode":{"functionDebugData":{"@_11051":{"entryPoint":null,"id":11051,"parameterSlots":1,"returnSlots":0},"@_13065":{"entryPoint":null,"id":13065,"parameterSlots":1,"returnSlots":0},"abi_decode_tuple_t_contract$_IDAO_$10865_fromMemory":{"entryPoint":64,"id":null,"parameterSlots":2,"returnSlots":1}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:320:92","statements":[{"nodeType":"YulBlock","src":"6:3:92","statements":[]},{"body":{"nodeType":"YulBlock","src":"109:209:92","statements":[{"body":{"nodeType":"YulBlock","src":"155:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"164:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"167:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"157:6:92"},"nodeType":"YulFunctionCall","src":"157:12:92"},"nodeType":"YulExpressionStatement","src":"157:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"130:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"139:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"126:3:92"},"nodeType":"YulFunctionCall","src":"126:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"151:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"122:3:92"},"nodeType":"YulFunctionCall","src":"122:32:92"},"nodeType":"YulIf","src":"119:52:92"},{"nodeType":"YulVariableDeclaration","src":"180:29:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"199:9:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"193:5:92"},"nodeType":"YulFunctionCall","src":"193:16:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"184:5:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"272:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"281:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"284:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"274:6:92"},"nodeType":"YulFunctionCall","src":"274:12:92"},"nodeType":"YulExpressionStatement","src":"274:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"231:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"242:5:92"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"257:3:92","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"262:1:92","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"253:3:92"},"nodeType":"YulFunctionCall","src":"253:11:92"},{"kind":"number","nodeType":"YulLiteral","src":"266:1:92","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"249:3:92"},"nodeType":"YulFunctionCall","src":"249:19:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"238:3:92"},"nodeType":"YulFunctionCall","src":"238:31:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"228:2:92"},"nodeType":"YulFunctionCall","src":"228:42:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"221:6:92"},"nodeType":"YulFunctionCall","src":"221:50:92"},"nodeType":"YulIf","src":"218:70:92"},{"nodeType":"YulAssignment","src":"297:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"307:5:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"297:6:92"}]}]},"name":"abi_decode_tuple_t_contract$_IDAO_$10865_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"75:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"86:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"98:6:92","type":""}],"src":"14:304:92"}]},"contents":"{\n { }\n function abi_decode_tuple_t_contract$_IDAO_$10865_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := mload(headStart)\n if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n value0 := value\n }\n}","id":92,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60a060405234801561001057600080fd5b506040516102ee3803806102ee83398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b60805161025e61009060003960008181608d015260e7015261025e6000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c8063403f8575146100465780634162169f14610080578063f09e1623146100b7575b600080fd5b61006d7f6c28b2d088260f42eed051af4616ddda00554ec1880b580a4a9fbf40a70b09eb81565b6040519081526020015b60405180910390f35b6040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152602001610077565b6100bf6100c1565b005b7f6c28b2d088260f42eed051af4616ddda00554ec1880b580a4a9fbf40a70b09eb6101117f0000000000000000000000000000000000000000000000000000000000000000303384600036610114565b50565b604051637ef7c88360e11b81526001600160a01b0387169063fdef91069061014890889088908890889088906004016101d4565b602060405180830381865afa158015610165573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101899190610228565b6101cc57604051630cb6f8ed60e21b81526001600160a01b0380881660048301528087166024830152851660448201526064810184905260840160405180910390fd5b505050505050565b60006001600160a01b03808816835280871660208401525084604083015260806060830152826080830152828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b60006020828403121561023a57600080fd5b8151801515811461024a57600080fd5b939250505056fea164736f6c6343000811000a","opcodes":"PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x2EE CODESIZE SUB DUP1 PUSH2 0x2EE DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0x40 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x80 MSTORE PUSH2 0x70 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x52 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x69 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH2 0x25E PUSH2 0x90 PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH1 0x8D ADD MSTORE PUSH1 0xE7 ADD MSTORE PUSH2 0x25E PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x41 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x403F8575 EQ PUSH2 0x46 JUMPI DUP1 PUSH4 0x4162169F EQ PUSH2 0x80 JUMPI DUP1 PUSH4 0xF09E1623 EQ PUSH2 0xB7 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x6D PUSH32 0x6C28B2D088260F42EED051AF4616DDDA00554EC1880B580A4A9FBF40A70B09EB DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x77 JUMP JUMPDEST PUSH2 0xBF PUSH2 0xC1 JUMP JUMPDEST STOP JUMPDEST PUSH32 0x6C28B2D088260F42EED051AF4616DDDA00554EC1880B580A4A9FBF40A70B09EB PUSH2 0x111 PUSH32 0x0 ADDRESS CALLER DUP5 PUSH1 0x0 CALLDATASIZE PUSH2 0x114 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x7EF7C883 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0xFDEF9106 SWAP1 PUSH2 0x148 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x1D4 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x165 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x189 SWAP2 SWAP1 PUSH2 0x228 JUMP JUMPDEST PUSH2 0x1CC JUMPI PUSH1 0x40 MLOAD PUSH4 0xCB6F8ED PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND PUSH1 0x4 DUP4 ADD MSTORE DUP1 DUP8 AND PUSH1 0x24 DUP4 ADD MSTORE DUP6 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x84 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND DUP4 MSTORE DUP1 DUP8 AND PUSH1 0x20 DUP5 ADD MSTORE POP DUP5 PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x80 PUSH1 0x60 DUP4 ADD MSTORE DUP3 PUSH1 0x80 DUP4 ADD MSTORE DUP3 DUP5 PUSH1 0xA0 DUP5 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0xA0 DUP5 DUP5 ADD ADD MSTORE PUSH1 0xA0 PUSH1 0x1F NOT PUSH1 0x1F DUP6 ADD AND DUP4 ADD ADD SWAP1 POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x23A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x24A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"314:359:44:-:0;;;470:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;844:10:66;;;314:359:44;;14:304:92;98:6;151:2;139:9;130:7;126:23;122:32;119:52;;;167:1;164;157:12;119:52;193:16;;-1:-1:-1;;;;;238:31:92;;228:42;;218:70;;284:1;281;274:12;218:70;307:5;14:304;-1:-1:-1;;;14:304:92:o;:::-;314:359:44;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@AUTHORIZED_FUNC_PERMISSION_ID_11041":{"entryPoint":null,"id":11041,"parameterSlots":0,"returnSlots":0},"@_auth_13211":{"entryPoint":276,"id":13211,"parameterSlots":6,"returnSlots":0},"@_msgData_9285":{"entryPoint":null,"id":9285,"parameterSlots":0,"returnSlots":2},"@_msgSender_9276":{"entryPoint":null,"id":9276,"parameterSlots":0,"returnSlots":1},"@authorizedFunc_11058":{"entryPoint":193,"id":11058,"parameterSlots":0,"returnSlots":0},"@dao_13075":{"entryPoint":null,"id":13075,"parameterSlots":0,"returnSlots":1},"abi_decode_tuple_t_bool_fromMemory":{"entryPoint":552,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address_t_address_t_address_t_bytes32__to_t_address_t_address_t_address_t_bytes32__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":5,"returnSlots":1},"abi_encode_tuple_t_address_t_address_t_bytes32_t_bytes_calldata_ptr__to_t_address_t_address_t_bytes32_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":468,"id":null,"parameterSlots":6,"returnSlots":1},"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_contract$_IDAO_$10865__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:1894:92","statements":[{"nodeType":"YulBlock","src":"6:3:92","statements":[]},{"body":{"nodeType":"YulBlock","src":"115:76:92","statements":[{"nodeType":"YulAssignment","src":"125:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"137:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"148:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"133:3:92"},"nodeType":"YulFunctionCall","src":"133:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"125:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"167:9:92"},{"name":"value0","nodeType":"YulIdentifier","src":"178:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"160:6:92"},"nodeType":"YulFunctionCall","src":"160:25:92"},"nodeType":"YulExpressionStatement","src":"160:25:92"}]},"name":"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"84:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"95:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"106:4:92","type":""}],"src":"14:177:92"},{"body":{"nodeType":"YulBlock","src":"311:125:92","statements":[{"nodeType":"YulAssignment","src":"321:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"333:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"344:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"329:3:92"},"nodeType":"YulFunctionCall","src":"329:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"321:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"363:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"378:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"386:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"374:3:92"},"nodeType":"YulFunctionCall","src":"374:55:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"356:6:92"},"nodeType":"YulFunctionCall","src":"356:74:92"},"nodeType":"YulExpressionStatement","src":"356:74:92"}]},"name":"abi_encode_tuple_t_contract$_IDAO_$10865__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"280:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"291:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"302:4:92","type":""}],"src":"196:240:92"},{"body":{"nodeType":"YulBlock","src":"654:472:92","statements":[{"nodeType":"YulVariableDeclaration","src":"664:52:92","value":{"kind":"number","nodeType":"YulLiteral","src":"674:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"668:2:92","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"732:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"747:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"755:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"743:3:92"},"nodeType":"YulFunctionCall","src":"743:15:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"725:6:92"},"nodeType":"YulFunctionCall","src":"725:34:92"},"nodeType":"YulExpressionStatement","src":"725:34:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"779:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"790:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"775:3:92"},"nodeType":"YulFunctionCall","src":"775:18:92"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"799:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"807:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"795:3:92"},"nodeType":"YulFunctionCall","src":"795:15:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"768:6:92"},"nodeType":"YulFunctionCall","src":"768:43:92"},"nodeType":"YulExpressionStatement","src":"768:43:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"831:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"842:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"827:3:92"},"nodeType":"YulFunctionCall","src":"827:18:92"},{"name":"value2","nodeType":"YulIdentifier","src":"847:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"820:6:92"},"nodeType":"YulFunctionCall","src":"820:34:92"},"nodeType":"YulExpressionStatement","src":"820:34:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"874:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"885:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"870:3:92"},"nodeType":"YulFunctionCall","src":"870:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"890:3:92","type":"","value":"128"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"863:6:92"},"nodeType":"YulFunctionCall","src":"863:31:92"},"nodeType":"YulExpressionStatement","src":"863:31:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"914:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"925:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"910:3:92"},"nodeType":"YulFunctionCall","src":"910:19:92"},{"name":"value4","nodeType":"YulIdentifier","src":"931:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"903:6:92"},"nodeType":"YulFunctionCall","src":"903:35:92"},"nodeType":"YulExpressionStatement","src":"903:35:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"964:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"975:3:92","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"960:3:92"},"nodeType":"YulFunctionCall","src":"960:19:92"},{"name":"value3","nodeType":"YulIdentifier","src":"981:6:92"},{"name":"value4","nodeType":"YulIdentifier","src":"989:6:92"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"947:12:92"},"nodeType":"YulFunctionCall","src":"947:49:92"},"nodeType":"YulExpressionStatement","src":"947:49:92"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1020:9:92"},{"name":"value4","nodeType":"YulIdentifier","src":"1031:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1016:3:92"},"nodeType":"YulFunctionCall","src":"1016:22:92"},{"kind":"number","nodeType":"YulLiteral","src":"1040:3:92","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1012:3:92"},"nodeType":"YulFunctionCall","src":"1012:32:92"},{"kind":"number","nodeType":"YulLiteral","src":"1046:1:92","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1005:6:92"},"nodeType":"YulFunctionCall","src":"1005:43:92"},"nodeType":"YulExpressionStatement","src":"1005:43:92"},{"nodeType":"YulAssignment","src":"1057:63:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1073:9:92"},{"arguments":[{"arguments":[{"name":"value4","nodeType":"YulIdentifier","src":"1092:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"1100:2:92","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1088:3:92"},"nodeType":"YulFunctionCall","src":"1088:15:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1109:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"1105:3:92"},"nodeType":"YulFunctionCall","src":"1105:7:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1084:3:92"},"nodeType":"YulFunctionCall","src":"1084:29:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1069:3:92"},"nodeType":"YulFunctionCall","src":"1069:45:92"},{"kind":"number","nodeType":"YulLiteral","src":"1116:3:92","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1065:3:92"},"nodeType":"YulFunctionCall","src":"1065:55:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1057:4:92"}]}]},"name":"abi_encode_tuple_t_address_t_address_t_bytes32_t_bytes_calldata_ptr__to_t_address_t_address_t_bytes32_t_bytes_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"591:9:92","type":""},{"name":"value4","nodeType":"YulTypedName","src":"602:6:92","type":""},{"name":"value3","nodeType":"YulTypedName","src":"610:6:92","type":""},{"name":"value2","nodeType":"YulTypedName","src":"618:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"626:6:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"634:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"645:4:92","type":""}],"src":"441:685:92"},{"body":{"nodeType":"YulBlock","src":"1209:199:92","statements":[{"body":{"nodeType":"YulBlock","src":"1255:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1264:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1267:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1257:6:92"},"nodeType":"YulFunctionCall","src":"1257:12:92"},"nodeType":"YulExpressionStatement","src":"1257:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1230:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"1239:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1226:3:92"},"nodeType":"YulFunctionCall","src":"1226:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"1251:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1222:3:92"},"nodeType":"YulFunctionCall","src":"1222:32:92"},"nodeType":"YulIf","src":"1219:52:92"},{"nodeType":"YulVariableDeclaration","src":"1280:29:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1299:9:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1293:5:92"},"nodeType":"YulFunctionCall","src":"1293:16:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"1284:5:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"1362:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1371:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1374:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1364:6:92"},"nodeType":"YulFunctionCall","src":"1364:12:92"},"nodeType":"YulExpressionStatement","src":"1364:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1331:5:92"},{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1352:5:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1345:6:92"},"nodeType":"YulFunctionCall","src":"1345:13:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1338:6:92"},"nodeType":"YulFunctionCall","src":"1338:21:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1328:2:92"},"nodeType":"YulFunctionCall","src":"1328:32:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1321:6:92"},"nodeType":"YulFunctionCall","src":"1321:40:92"},"nodeType":"YulIf","src":"1318:60:92"},{"nodeType":"YulAssignment","src":"1387:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"1397:5:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1387:6:92"}]}]},"name":"abi_decode_tuple_t_bool_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1175:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1186:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1198:6:92","type":""}],"src":"1131:277:92"},{"body":{"nodeType":"YulBlock","src":"1598:294:92","statements":[{"nodeType":"YulAssignment","src":"1608:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1620:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1631:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1616:3:92"},"nodeType":"YulFunctionCall","src":"1616:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1608:4:92"}]},{"nodeType":"YulVariableDeclaration","src":"1644:52:92","value":{"kind":"number","nodeType":"YulLiteral","src":"1654:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"1648:2:92","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1712:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1727:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"1735:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1723:3:92"},"nodeType":"YulFunctionCall","src":"1723:15:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1705:6:92"},"nodeType":"YulFunctionCall","src":"1705:34:92"},"nodeType":"YulExpressionStatement","src":"1705:34:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1759:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1770:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1755:3:92"},"nodeType":"YulFunctionCall","src":"1755:18:92"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"1779:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"1787:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1775:3:92"},"nodeType":"YulFunctionCall","src":"1775:15:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1748:6:92"},"nodeType":"YulFunctionCall","src":"1748:43:92"},"nodeType":"YulExpressionStatement","src":"1748:43:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1811:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1822:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1807:3:92"},"nodeType":"YulFunctionCall","src":"1807:18:92"},{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"1831:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"1839:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1827:3:92"},"nodeType":"YulFunctionCall","src":"1827:15:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1800:6:92"},"nodeType":"YulFunctionCall","src":"1800:43:92"},"nodeType":"YulExpressionStatement","src":"1800:43:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1863:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1874:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1859:3:92"},"nodeType":"YulFunctionCall","src":"1859:18:92"},{"name":"value3","nodeType":"YulIdentifier","src":"1879:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1852:6:92"},"nodeType":"YulFunctionCall","src":"1852:34:92"},"nodeType":"YulExpressionStatement","src":"1852:34:92"}]},"name":"abi_encode_tuple_t_address_t_address_t_address_t_bytes32__to_t_address_t_address_t_address_t_bytes32__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1543:9:92","type":""},{"name":"value3","nodeType":"YulTypedName","src":"1554:6:92","type":""},{"name":"value2","nodeType":"YulTypedName","src":"1562:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1570:6:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1578:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1589:4:92","type":""}],"src":"1413:479:92"}]},"contents":"{\n { }\n function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_encode_tuple_t_contract$_IDAO_$10865__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_encode_tuple_t_address_t_address_t_bytes32_t_bytes_calldata_ptr__to_t_address_t_address_t_bytes32_t_bytes_memory_ptr__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n {\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n mstore(add(headStart, 64), value2)\n mstore(add(headStart, 96), 128)\n mstore(add(headStart, 128), value4)\n calldatacopy(add(headStart, 160), value3, value4)\n mstore(add(add(headStart, value4), 160), 0)\n tail := add(add(headStart, and(add(value4, 31), not(31))), 160)\n }\n function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := mload(headStart)\n if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_address_t_address_t_address_t_bytes32__to_t_address_t_address_t_address_t_bytes32__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n {\n tail := add(headStart, 128)\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n mstore(add(headStart, 64), and(value2, _1))\n mstore(add(headStart, 96), value3)\n }\n}","id":92,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{"13053":[{"length":32,"start":141},{"length":32,"start":231}]},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100415760003560e01c8063403f8575146100465780634162169f14610080578063f09e1623146100b7575b600080fd5b61006d7f6c28b2d088260f42eed051af4616ddda00554ec1880b580a4a9fbf40a70b09eb81565b6040519081526020015b60405180910390f35b6040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152602001610077565b6100bf6100c1565b005b7f6c28b2d088260f42eed051af4616ddda00554ec1880b580a4a9fbf40a70b09eb6101117f0000000000000000000000000000000000000000000000000000000000000000303384600036610114565b50565b604051637ef7c88360e11b81526001600160a01b0387169063fdef91069061014890889088908890889088906004016101d4565b602060405180830381865afa158015610165573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101899190610228565b6101cc57604051630cb6f8ed60e21b81526001600160a01b0380881660048301528087166024830152851660448201526064810184905260840160405180910390fd5b505050505050565b60006001600160a01b03808816835280871660208401525084604083015260806060830152826080830152828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b60006020828403121561023a57600080fd5b8151801515811461024a57600080fd5b939250505056fea164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x41 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x403F8575 EQ PUSH2 0x46 JUMPI DUP1 PUSH4 0x4162169F EQ PUSH2 0x80 JUMPI DUP1 PUSH4 0xF09E1623 EQ PUSH2 0xB7 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x6D PUSH32 0x6C28B2D088260F42EED051AF4616DDDA00554EC1880B580A4A9FBF40A70B09EB DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x77 JUMP JUMPDEST PUSH2 0xBF PUSH2 0xC1 JUMP JUMPDEST STOP JUMPDEST PUSH32 0x6C28B2D088260F42EED051AF4616DDDA00554EC1880B580A4A9FBF40A70B09EB PUSH2 0x111 PUSH32 0x0 ADDRESS CALLER DUP5 PUSH1 0x0 CALLDATASIZE PUSH2 0x114 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x7EF7C883 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0xFDEF9106 SWAP1 PUSH2 0x148 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x1D4 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x165 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x189 SWAP2 SWAP1 PUSH2 0x228 JUMP JUMPDEST PUSH2 0x1CC JUMPI PUSH1 0x40 MLOAD PUSH4 0xCB6F8ED PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND PUSH1 0x4 DUP4 ADD MSTORE DUP1 DUP8 AND PUSH1 0x24 DUP4 ADD MSTORE DUP6 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x84 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND DUP4 MSTORE DUP1 DUP8 AND PUSH1 0x20 DUP5 ADD MSTORE POP DUP5 PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x80 PUSH1 0x60 DUP4 ADD MSTORE DUP3 PUSH1 0x80 DUP4 ADD MSTORE DUP3 DUP5 PUSH1 0xA0 DUP5 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0xA0 DUP5 DUP5 ADD ADD MSTORE PUSH1 0xA0 PUSH1 0x1F NOT PUSH1 0x1F DUP6 ADD AND DUP4 ADD ADD SWAP1 POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x23A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x24A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"314:359:44:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;368:95;;424:39;368:95;;;;;160:25:92;;;148:2;133:18;368:95:44;;;;;;;;943:69:66;;;-1:-1:-1;;;;;1002:3:66;374:55:92;356:74;;344:2;329:18;943:69:66;196:240:92;523:148:44;;;:::i;:::-;;;424:39;1352:66:66;1358:3;1371:4;734:10:34;1392:13:66;808:14:34;;1352:5:66;:66::i;:::-;523:148:44;:::o;1041:363:68:-;1180:54;;-1:-1:-1;;;1180:54:68;;-1:-1:-1;;;;;1180:18:68;;;;;:54;;1199:6;;1207:4;;1213:13;;1228:5;;;;1180:54;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1175:226;;1251:150;;-1:-1:-1;;;1251:150:68;;-1:-1:-1;;;;;1723:15:92;;;1251:150:68;;;1705:34:92;1775:15;;;1755:18;;;1748:43;1827:15;;1807:18;;;1800:43;1859:18;;;1852:34;;;1616:19;;1251:150:68;;;;;;;1175:226;1041:363;;;;;;:::o;441:685:92:-;645:4;-1:-1:-1;;;;;755:2:92;747:6;743:15;732:9;725:34;807:2;799:6;795:15;790:2;779:9;775:18;768:43;;847:6;842:2;831:9;827:18;820:34;890:3;885:2;874:9;870:18;863:31;931:6;925:3;914:9;910:19;903:35;989:6;981;975:3;964:9;960:19;947:49;1046:1;1040:3;1031:6;1020:9;1016:22;1012:32;1005:43;1116:3;1109:2;1105:7;1100:2;1092:6;1088:15;1084:29;1073:9;1069:45;1065:55;1057:63;;441:685;;;;;;;;:::o;1131:277::-;1198:6;1251:2;1239:9;1230:7;1226:23;1222:32;1219:52;;;1267:1;1264;1257:12;1219:52;1299:9;1293:16;1352:5;1345:13;1338:21;1331:5;1328:32;1318:60;;1374:1;1371;1364:12;1318:60;1397:5;1131:277;-1:-1:-1;;;1131:277:92:o"},"gasEstimates":{"creation":{"codeDepositCost":"121200","executionCost":"infinite","totalCost":"infinite"},"external":{"AUTHORIZED_FUNC_PERMISSION_ID()":"162","authorizedFunc()":"infinite","dao()":"infinite"}},"methodIdentifiers":{"AUTHORIZED_FUNC_PERMISSION_ID()":"403f8575","authorizedFunc()":"f09e1623","dao()":"4162169f"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IDAO\",\"name\":\"_dao\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"dao\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"name\":\"DaoUnauthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AUTHORIZED_FUNC_PERMISSION_ID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"authorizedFunc\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"dao\",\"outputs\":[{\"internalType\":\"contract IDAO\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"DO NOT USE IN PRODUCTION!\",\"errors\":{\"DaoUnauthorized(address,address,address,bytes32)\":[{\"params\":{\"dao\":\"The associated DAO.\",\"permissionId\":\"The permission identifier.\",\"where\":\"The context in which the authorization reverted.\",\"who\":\"The address (EOA or contract) missing the permission.\"}}]},\"kind\":\"dev\",\"methods\":{\"dao()\":{\"returns\":{\"_0\":\"The DAO contract.\"}}},\"version\":1},\"userdoc\":{\"errors\":{\"DaoUnauthorized(address,address,address,bytes32)\":[{\"notice\":\"Thrown if a call is unauthorized in the associated DAO.\"}]},\"kind\":\"user\",\"methods\":{\"dao()\":{\"notice\":\"Returns the DAO contract.\"}},\"notice\":\"A mock contract containing a function protected by the `auth` modifier.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/mocks/permission/auth/DaoAuthorizableMock.sol\":\"DaoAuthorizableMock\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n function _contextSuffixLength() internal view virtual returns (uint256) {\\n return 0;\\n }\\n}\\n\",\"keccak256\":\"0xa92e4fa126feb6907daa0513ddd816b2eb91f30a808de54f63c17d0e162c3439\",\"license\":\"MIT\"},\"src/dao/IDAO.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IDAO\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for DAOs within the Aragon App DAO framework.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IDAO {\\n /// @notice The action struct to be consumed by the DAO's `execute` function resulting in an external call.\\n /// @param to The address to call.\\n /// @param value The native token value to be sent with the call.\\n /// @param data The bytes-encoded function selector and calldata for the call.\\n struct Action {\\n address to;\\n uint256 value;\\n bytes data;\\n }\\n\\n /// @notice Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\\n /// @param _where The address of the contract.\\n /// @param _who The address of a EOA or contract to give the permissions.\\n /// @param _permissionId The permission identifier.\\n /// @param _data The optional data passed to the `PermissionCondition` registered.\\n /// @return Returns true if the address has permission, false if not.\\n function hasPermission(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes memory _data\\n ) external view returns (bool);\\n\\n /// @notice Updates the DAO metadata (e.g., an IPFS hash).\\n /// @param _metadata The IPFS hash of the new metadata object.\\n function setMetadata(bytes calldata _metadata) external;\\n\\n /// @notice Emitted when the DAO metadata is updated.\\n /// @param metadata The IPFS hash of the new metadata object.\\n event MetadataSet(bytes metadata);\\n\\n /// @notice Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted.\\n /// @param _callId The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce.\\n /// @param _actions The array of actions.\\n /// @param _allowFailureMap A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @return The array of results obtained from the executed actions in `bytes`.\\n /// @return The resulting failure map containing the actions have actually failed.\\n function execute(\\n bytes32 _callId,\\n Action[] memory _actions,\\n uint256 _allowFailureMap\\n ) external returns (bytes[] memory, uint256);\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param actor The address of the caller.\\n /// @param callId The ID of the call.\\n /// @param actions The array of actions executed.\\n /// @param allowFailureMap The allow failure map encoding which actions are allowed to fail.\\n /// @param failureMap The failure map encoding which actions have failed.\\n /// @param execResults The array with the results of the executed actions.\\n /// @dev The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce.\\n event Executed(\\n address indexed actor,\\n bytes32 callId,\\n Action[] actions,\\n uint256 allowFailureMap,\\n uint256 failureMap,\\n bytes[] execResults\\n );\\n\\n /// @notice Emitted when a standard callback is registered.\\n /// @param interfaceId The ID of the interface.\\n /// @param callbackSelector The selector of the callback function.\\n /// @param magicNumber The magic number to be registered for the callback function selector.\\n event StandardCallbackRegistered(\\n bytes4 interfaceId,\\n bytes4 callbackSelector,\\n bytes4 magicNumber\\n );\\n\\n /// @notice Deposits (native) tokens to the DAO contract with a reference string.\\n /// @param _token The address of the token or address(0) in case of the native token.\\n /// @param _amount The amount of tokens to deposit.\\n /// @param _reference The reference describing the deposit reason.\\n function deposit(address _token, uint256 _amount, string calldata _reference) external payable;\\n\\n /// @notice Emitted when a token deposit has been made to the DAO.\\n /// @param sender The address of the sender.\\n /// @param token The address of the deposited token.\\n /// @param amount The amount of tokens deposited.\\n /// @param _reference The reference describing the deposit reason.\\n event Deposited(\\n address indexed sender,\\n address indexed token,\\n uint256 amount,\\n string _reference\\n );\\n\\n /// @notice Emitted when a native token deposit has been made to the DAO.\\n /// @dev This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).\\n /// @param sender The address of the sender.\\n /// @param amount The amount of native tokens deposited.\\n event NativeTokenDeposited(address sender, uint256 amount);\\n\\n /// @notice Setter for the trusted forwarder verifying the meta transaction.\\n /// @param _trustedForwarder The trusted forwarder address.\\n function setTrustedForwarder(address _trustedForwarder) external;\\n\\n /// @notice Getter for the trusted forwarder verifying the meta transaction.\\n /// @return The trusted forwarder address.\\n function getTrustedForwarder() external view returns (address);\\n\\n /// @notice Emitted when a new TrustedForwarder is set on the DAO.\\n /// @param forwarder the new forwarder address.\\n event TrustedForwarderSet(address forwarder);\\n\\n /// @notice Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\\n /// @param _hash The hash of the data to be signed.\\n /// @param _signature The signature byte array associated with `_hash`.\\n /// @return Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not.\\n function isValidSignature(bytes32 _hash, bytes memory _signature) external returns (bytes4);\\n\\n /// @notice Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\\n /// @param _interfaceId The ID of the interface.\\n /// @param _callbackSelector The selector of the callback function.\\n /// @param _magicNumber The magic number to be registered for the function signature.\\n function registerStandardCallback(\\n bytes4 _interfaceId,\\n bytes4 _callbackSelector,\\n bytes4 _magicNumber\\n ) external;\\n\\n /// @notice Removed function being left here to not corrupt the IDAO interface ID. Any call will revert.\\n /// @dev Introduced in v1.0.0. Removed in v1.4.0.\\n function setSignatureValidator(address) external;\\n}\\n\",\"keccak256\":\"0xb7f615523c26de042edce98731c658f44a1edb2464387ac1b642c4c69f57128e\",\"license\":\"AGPL-3.0-or-later\"},\"src/mocks/permission/auth/DaoAuthorizableMock.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {DaoAuthorizable} from \\\"../../../permission/auth/DaoAuthorizable.sol\\\";\\nimport {IDAO} from \\\"../../../dao/IDAO.sol\\\";\\n\\n/// @notice A mock contract containing a function protected by the `auth` modifier.\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract DaoAuthorizableMock is DaoAuthorizable {\\n bytes32 public constant AUTHORIZED_FUNC_PERMISSION_ID = keccak256(\\\"AUTHORIZED_FUNC_PERMISSION\\\");\\n\\n constructor(IDAO _dao) DaoAuthorizable(_dao) {}\\n\\n function authorizedFunc()\\n external\\n auth(AUTHORIZED_FUNC_PERMISSION_ID)\\n // solhint-disable-next-line no-empty-blocks\\n {\\n\\n }\\n}\\n\",\"keccak256\":\"0xfb5d33e2cebb0033e5287c949dbd229867234305b88f739c4c00cef64c4e2766\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/DaoAuthorizable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {Context} from \\\"@openzeppelin/contracts/utils/Context.sol\\\";\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\nimport {_auth} from \\\"./auth.sol\\\";\\n\\n/// @title DaoAuthorizable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract contract providing a meta-transaction compatible modifier for non-upgradeable contracts instantiated via the `new` keyword to authorize function calls through an associated DAO.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract DaoAuthorizable is Context {\\n /// @notice The associated DAO managing the permissions of inheriting contracts.\\n IDAO private immutable DAO;\\n\\n /// @notice Constructs the contract by setting the associated DAO.\\n /// @param _dao The associated DAO address.\\n constructor(IDAO _dao) {\\n DAO = _dao;\\n }\\n\\n /// @notice Returns the DAO contract.\\n /// @return The DAO contract.\\n function dao() public view returns (IDAO) {\\n return DAO;\\n }\\n\\n /// @notice A modifier to make functions on inheriting contracts authorized. Permissions to call the function are checked through the associated DAO's permission manager.\\n /// @param _permissionId The permission identifier required to call the method this modifier is applied to.\\n modifier auth(bytes32 _permissionId) {\\n _auth(DAO, address(this), _msgSender(), _permissionId, _msgData());\\n _;\\n }\\n}\\n\",\"keccak256\":\"0x3d0be91b4f5854ed2d2c51b53fe7ffba58cc968e972015cf60eb3ea100543e64\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/auth.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice Thrown if a call is unauthorized in the associated DAO.\\n/// @param dao The associated DAO.\\n/// @param where The context in which the authorization reverted.\\n/// @param who The address (EOA or contract) missing the permission.\\n/// @param permissionId The permission identifier.\\nerror DaoUnauthorized(address dao, address where, address who, bytes32 permissionId);\\n\\n/// @notice A free function checking if a caller is granted permissions on a target contract via a permission identifier that redirects the approval to a `PermissionCondition` if this was specified in the setup.\\n/// @param _where The address of the target contract for which `who` receives permission.\\n/// @param _who The address (EOA or contract) owning the permission.\\n/// @param _permissionId The permission identifier.\\n/// @param _data The optional data passed to the `PermissionCondition` registered.\\n/// @custom:security-contact sirt@aragon.org\\nfunction _auth(\\n IDAO _dao,\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes calldata _data\\n) view {\\n if (!_dao.hasPermission(_where, _who, _permissionId, _data))\\n revert DaoUnauthorized({\\n dao: address(_dao),\\n where: _where,\\n who: _who,\\n permissionId: _permissionId\\n });\\n}\\n\",\"keccak256\":\"0x878764b4f87fe0651fb3798fb9cb87c952f8c6caf6ae79c7f09de84df6c00298\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"errors":{"DaoUnauthorized(address,address,address,bytes32)":[{"notice":"Thrown if a call is unauthorized in the associated DAO."}]},"kind":"user","methods":{"dao()":{"notice":"Returns the DAO contract."}},"notice":"A mock contract containing a function protected by the `auth` modifier.","version":1}}},"src/mocks/permission/auth/DaoAuthorizableUpgradeableMock.sol":{"DaoAuthorizableUpgradeableMock":{"abi":[{"inputs":[{"internalType":"address","name":"dao","type":"address"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"name":"DaoUnauthorized","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"inputs":[],"name":"AUTHORIZED_FUNC_PERMISSION_ID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"authorizedFunc","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dao","outputs":[{"internalType":"contract IDAO","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IDAO","name":"_dao","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IDAO","name":"_dao","type":"address"}],"name":"notAnInitializer","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"DO NOT USE IN PRODUCTION!","errors":{"DaoUnauthorized(address,address,address,bytes32)":[{"params":{"dao":"The associated DAO.","permissionId":"The permission identifier.","where":"The context in which the authorization reverted.","who":"The address (EOA or contract) missing the permission."}}]},"kind":"dev","methods":{"dao()":{"returns":{"_0":"The DAO contract."}}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b50610487806100206000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80638883bbd7116100505780638883bbd7146100c1578063c4d66de8146100d6578063f09e1623146100e957600080fd5b8063403f85751461006c5780634162169f146100a6575b600080fd5b6100937f6c28b2d088260f42eed051af4616ddda00554ec1880b580a4a9fbf40a70b09eb81565b6040519081526020015b60405180910390f35b6033546040516001600160a01b03909116815260200161009d565b6100d46100cf3660046103d4565b6100f1565b005b6100d46100e43660046103d4565b6100fd565b6100d4610224565b6100fa81610261565b50565b600054610100900460ff161580801561011d5750600054600160ff909116105b806101375750303b158015610137575060005460ff166001145b6101ae5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b6000805460ff1916600117905580156101d1576000805461ff0019166101001790555b6101da82610261565b8015610220576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b6033547f6c28b2d088260f42eed051af4616ddda00554ec1880b580a4a9fbf40a70b09eb906100fa906001600160a01b0316303384600036610318565b600054610100900460ff166102de5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016101a5565b603380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b604051637ef7c88360e11b81526001600160a01b0387169063fdef91069061034c9088908890889088908890600401610404565b602060405180830381865afa158015610369573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061038d9190610458565b6103cc57604051630cb6f8ed60e21b81526001600160a01b038088166004830152808716602483015285166044820152606481018490526084016101a5565b505050505050565b6000602082840312156103e657600080fd5b81356001600160a01b03811681146103fd57600080fd5b9392505050565b60006001600160a01b03808816835280871660208401525084604083015260806060830152826080830152828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b60006020828403121561046a57600080fd5b815180151581146103fd57600080fdfea164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x487 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x67 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8883BBD7 GT PUSH2 0x50 JUMPI DUP1 PUSH4 0x8883BBD7 EQ PUSH2 0xC1 JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0xD6 JUMPI DUP1 PUSH4 0xF09E1623 EQ PUSH2 0xE9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x403F8575 EQ PUSH2 0x6C JUMPI DUP1 PUSH4 0x4162169F EQ PUSH2 0xA6 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x93 PUSH32 0x6C28B2D088260F42EED051AF4616DDDA00554EC1880B580A4A9FBF40A70B09EB DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x33 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x9D JUMP JUMPDEST PUSH2 0xD4 PUSH2 0xCF CALLDATASIZE PUSH1 0x4 PUSH2 0x3D4 JUMP JUMPDEST PUSH2 0xF1 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xD4 PUSH2 0xE4 CALLDATASIZE PUSH1 0x4 PUSH2 0x3D4 JUMP JUMPDEST PUSH2 0xFD JUMP JUMPDEST PUSH2 0xD4 PUSH2 0x224 JUMP JUMPDEST PUSH2 0xFA DUP2 PUSH2 0x261 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 DUP1 ISZERO PUSH2 0x11D JUMPI POP PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xFF SWAP1 SWAP2 AND LT JUMPDEST DUP1 PUSH2 0x137 JUMPI POP ADDRESS EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x137 JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF AND PUSH1 0x1 EQ JUMPDEST PUSH2 0x1AE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x647920696E697469616C697A6564000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE DUP1 ISZERO PUSH2 0x1D1 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND PUSH2 0x100 OR SWAP1 SSTORE JUMPDEST PUSH2 0x1DA DUP3 PUSH2 0x261 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x220 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x33 SLOAD PUSH32 0x6C28B2D088260F42EED051AF4616DDDA00554EC1880B580A4A9FBF40A70B09EB SWAP1 PUSH2 0xFA SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ADDRESS CALLER DUP5 PUSH1 0x0 CALLDATASIZE PUSH2 0x318 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x2DE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6E697469616C697A696E67000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x1A5 JUMP JUMPDEST PUSH1 0x33 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x7EF7C883 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0xFDEF9106 SWAP1 PUSH2 0x34C SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x404 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x369 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x38D SWAP2 SWAP1 PUSH2 0x458 JUMP JUMPDEST PUSH2 0x3CC JUMPI PUSH1 0x40 MLOAD PUSH4 0xCB6F8ED PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND PUSH1 0x4 DUP4 ADD MSTORE DUP1 DUP8 AND PUSH1 0x24 DUP4 ADD MSTORE DUP6 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x84 ADD PUSH2 0x1A5 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x3FD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND DUP4 MSTORE DUP1 DUP8 AND PUSH1 0x20 DUP5 ADD MSTORE POP DUP5 PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x80 PUSH1 0x60 DUP4 ADD MSTORE DUP3 PUSH1 0x80 DUP4 ADD MSTORE DUP3 DUP5 PUSH1 0xA0 DUP5 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0xA0 DUP5 DUP5 ADD ADD MSTORE PUSH1 0xA0 PUSH1 0x1F NOT PUSH1 0x1F DUP6 ADD AND DUP4 ADD ADD SWAP1 POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x46A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x3FD JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"336:729:45:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@AUTHORIZED_FUNC_PERMISSION_ID_11073":{"entryPoint":null,"id":11073,"parameterSlots":0,"returnSlots":0},"@__DaoAuthorizableUpgradeable_init_13125":{"entryPoint":609,"id":13125,"parameterSlots":1,"returnSlots":0},"@_auth_13211":{"entryPoint":792,"id":13211,"parameterSlots":6,"returnSlots":0},"@_msgData_2579":{"entryPoint":null,"id":2579,"parameterSlots":0,"returnSlots":2},"@_msgSender_2570":{"entryPoint":null,"id":2570,"parameterSlots":0,"returnSlots":1},"@authorizedFunc_11105":{"entryPoint":548,"id":11105,"parameterSlots":0,"returnSlots":0},"@dao_13135":{"entryPoint":null,"id":13135,"parameterSlots":0,"returnSlots":1},"@initialize_11086":{"entryPoint":253,"id":11086,"parameterSlots":1,"returnSlots":0},"@isContract_689":{"entryPoint":null,"id":689,"parameterSlots":1,"returnSlots":1},"@notAnInitializer_11098":{"entryPoint":241,"id":11098,"parameterSlots":1,"returnSlots":0},"abi_decode_tuple_t_bool_fromMemory":{"entryPoint":1112,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_contract$_IDAO_$10865":{"entryPoint":980,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address_t_address_t_address_t_bytes32__to_t_address_t_address_t_address_t_bytes32__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":5,"returnSlots":1},"abi_encode_tuple_t_address_t_address_t_bytes32_t_bytes_calldata_ptr__to_t_address_t_address_t_bytes32_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":1028,"id":null,"parameterSlots":6,"returnSlots":1},"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_contract$_IDAO_$10865__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_rational_1_by_1__to_t_uint8__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:3248:92","statements":[{"nodeType":"YulBlock","src":"6:3:92","statements":[]},{"body":{"nodeType":"YulBlock","src":"115:76:92","statements":[{"nodeType":"YulAssignment","src":"125:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"137:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"148:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"133:3:92"},"nodeType":"YulFunctionCall","src":"133:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"125:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"167:9:92"},{"name":"value0","nodeType":"YulIdentifier","src":"178:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"160:6:92"},"nodeType":"YulFunctionCall","src":"160:25:92"},"nodeType":"YulExpressionStatement","src":"160:25:92"}]},"name":"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"84:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"95:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"106:4:92","type":""}],"src":"14:177:92"},{"body":{"nodeType":"YulBlock","src":"311:125:92","statements":[{"nodeType":"YulAssignment","src":"321:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"333:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"344:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"329:3:92"},"nodeType":"YulFunctionCall","src":"329:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"321:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"363:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"378:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"386:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"374:3:92"},"nodeType":"YulFunctionCall","src":"374:55:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"356:6:92"},"nodeType":"YulFunctionCall","src":"356:74:92"},"nodeType":"YulExpressionStatement","src":"356:74:92"}]},"name":"abi_encode_tuple_t_contract$_IDAO_$10865__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"280:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"291:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"302:4:92","type":""}],"src":"196:240:92"},{"body":{"nodeType":"YulBlock","src":"525:239:92","statements":[{"body":{"nodeType":"YulBlock","src":"571:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"580:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"583:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"573:6:92"},"nodeType":"YulFunctionCall","src":"573:12:92"},"nodeType":"YulExpressionStatement","src":"573:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"546:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"555:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"542:3:92"},"nodeType":"YulFunctionCall","src":"542:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"567:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"538:3:92"},"nodeType":"YulFunctionCall","src":"538:32:92"},"nodeType":"YulIf","src":"535:52:92"},{"nodeType":"YulVariableDeclaration","src":"596:36:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"622:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"609:12:92"},"nodeType":"YulFunctionCall","src":"609:23:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"600:5:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"718:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"727:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"730:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"720:6:92"},"nodeType":"YulFunctionCall","src":"720:12:92"},"nodeType":"YulExpressionStatement","src":"720:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"654:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"665:5:92"},{"kind":"number","nodeType":"YulLiteral","src":"672:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"661:3:92"},"nodeType":"YulFunctionCall","src":"661:54:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"651:2:92"},"nodeType":"YulFunctionCall","src":"651:65:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"644:6:92"},"nodeType":"YulFunctionCall","src":"644:73:92"},"nodeType":"YulIf","src":"641:93:92"},{"nodeType":"YulAssignment","src":"743:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"753:5:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"743:6:92"}]}]},"name":"abi_decode_tuple_t_contract$_IDAO_$10865","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"491:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"502:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"514:6:92","type":""}],"src":"441:323:92"},{"body":{"nodeType":"YulBlock","src":"943:236:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"960:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"971:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"953:6:92"},"nodeType":"YulFunctionCall","src":"953:21:92"},"nodeType":"YulExpressionStatement","src":"953:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"994:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1005:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"990:3:92"},"nodeType":"YulFunctionCall","src":"990:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"1010:2:92","type":"","value":"46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"983:6:92"},"nodeType":"YulFunctionCall","src":"983:30:92"},"nodeType":"YulExpressionStatement","src":"983:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1033:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1044:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1029:3:92"},"nodeType":"YulFunctionCall","src":"1029:18:92"},{"hexValue":"496e697469616c697a61626c653a20636f6e747261637420697320616c726561","kind":"string","nodeType":"YulLiteral","src":"1049:34:92","type":"","value":"Initializable: contract is alrea"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1022:6:92"},"nodeType":"YulFunctionCall","src":"1022:62:92"},"nodeType":"YulExpressionStatement","src":"1022:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1104:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1115:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1100:3:92"},"nodeType":"YulFunctionCall","src":"1100:18:92"},{"hexValue":"647920696e697469616c697a6564","kind":"string","nodeType":"YulLiteral","src":"1120:16:92","type":"","value":"dy initialized"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1093:6:92"},"nodeType":"YulFunctionCall","src":"1093:44:92"},"nodeType":"YulExpressionStatement","src":"1093:44:92"},{"nodeType":"YulAssignment","src":"1146:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1158:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1169:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1154:3:92"},"nodeType":"YulFunctionCall","src":"1154:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1146:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"920:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"934:4:92","type":""}],"src":"769:410:92"},{"body":{"nodeType":"YulBlock","src":"1291:87:92","statements":[{"nodeType":"YulAssignment","src":"1301:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1313:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1324:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1309:3:92"},"nodeType":"YulFunctionCall","src":"1309:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1301:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1343:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1358:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"1366:4:92","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1354:3:92"},"nodeType":"YulFunctionCall","src":"1354:17:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1336:6:92"},"nodeType":"YulFunctionCall","src":"1336:36:92"},"nodeType":"YulExpressionStatement","src":"1336:36:92"}]},"name":"abi_encode_tuple_t_rational_1_by_1__to_t_uint8__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1260:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1271:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1282:4:92","type":""}],"src":"1184:194:92"},{"body":{"nodeType":"YulBlock","src":"1557:233:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1574:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1585:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1567:6:92"},"nodeType":"YulFunctionCall","src":"1567:21:92"},"nodeType":"YulExpressionStatement","src":"1567:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1608:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1619:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1604:3:92"},"nodeType":"YulFunctionCall","src":"1604:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"1624:2:92","type":"","value":"43"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1597:6:92"},"nodeType":"YulFunctionCall","src":"1597:30:92"},"nodeType":"YulExpressionStatement","src":"1597:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1647:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1658:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1643:3:92"},"nodeType":"YulFunctionCall","src":"1643:18:92"},{"hexValue":"496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069","kind":"string","nodeType":"YulLiteral","src":"1663:34:92","type":"","value":"Initializable: contract is not i"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1636:6:92"},"nodeType":"YulFunctionCall","src":"1636:62:92"},"nodeType":"YulExpressionStatement","src":"1636:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1718:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1729:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1714:3:92"},"nodeType":"YulFunctionCall","src":"1714:18:92"},{"hexValue":"6e697469616c697a696e67","kind":"string","nodeType":"YulLiteral","src":"1734:13:92","type":"","value":"nitializing"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1707:6:92"},"nodeType":"YulFunctionCall","src":"1707:41:92"},"nodeType":"YulExpressionStatement","src":"1707:41:92"},{"nodeType":"YulAssignment","src":"1757:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1769:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1780:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1765:3:92"},"nodeType":"YulFunctionCall","src":"1765:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1757:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1534:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1548:4:92","type":""}],"src":"1383:407:92"},{"body":{"nodeType":"YulBlock","src":"2008:472:92","statements":[{"nodeType":"YulVariableDeclaration","src":"2018:52:92","value":{"kind":"number","nodeType":"YulLiteral","src":"2028:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"2022:2:92","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2086:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2101:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"2109:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2097:3:92"},"nodeType":"YulFunctionCall","src":"2097:15:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2079:6:92"},"nodeType":"YulFunctionCall","src":"2079:34:92"},"nodeType":"YulExpressionStatement","src":"2079:34:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2133:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2144:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2129:3:92"},"nodeType":"YulFunctionCall","src":"2129:18:92"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"2153:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"2161:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2149:3:92"},"nodeType":"YulFunctionCall","src":"2149:15:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2122:6:92"},"nodeType":"YulFunctionCall","src":"2122:43:92"},"nodeType":"YulExpressionStatement","src":"2122:43:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2185:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2196:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2181:3:92"},"nodeType":"YulFunctionCall","src":"2181:18:92"},{"name":"value2","nodeType":"YulIdentifier","src":"2201:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2174:6:92"},"nodeType":"YulFunctionCall","src":"2174:34:92"},"nodeType":"YulExpressionStatement","src":"2174:34:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2228:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2239:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2224:3:92"},"nodeType":"YulFunctionCall","src":"2224:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"2244:3:92","type":"","value":"128"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2217:6:92"},"nodeType":"YulFunctionCall","src":"2217:31:92"},"nodeType":"YulExpressionStatement","src":"2217:31:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2268:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2279:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2264:3:92"},"nodeType":"YulFunctionCall","src":"2264:19:92"},{"name":"value4","nodeType":"YulIdentifier","src":"2285:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2257:6:92"},"nodeType":"YulFunctionCall","src":"2257:35:92"},"nodeType":"YulExpressionStatement","src":"2257:35:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2318:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2329:3:92","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2314:3:92"},"nodeType":"YulFunctionCall","src":"2314:19:92"},{"name":"value3","nodeType":"YulIdentifier","src":"2335:6:92"},{"name":"value4","nodeType":"YulIdentifier","src":"2343:6:92"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"2301:12:92"},"nodeType":"YulFunctionCall","src":"2301:49:92"},"nodeType":"YulExpressionStatement","src":"2301:49:92"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2374:9:92"},{"name":"value4","nodeType":"YulIdentifier","src":"2385:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2370:3:92"},"nodeType":"YulFunctionCall","src":"2370:22:92"},{"kind":"number","nodeType":"YulLiteral","src":"2394:3:92","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2366:3:92"},"nodeType":"YulFunctionCall","src":"2366:32:92"},{"kind":"number","nodeType":"YulLiteral","src":"2400:1:92","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2359:6:92"},"nodeType":"YulFunctionCall","src":"2359:43:92"},"nodeType":"YulExpressionStatement","src":"2359:43:92"},{"nodeType":"YulAssignment","src":"2411:63:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2427:9:92"},{"arguments":[{"arguments":[{"name":"value4","nodeType":"YulIdentifier","src":"2446:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"2454:2:92","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2442:3:92"},"nodeType":"YulFunctionCall","src":"2442:15:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2463:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"2459:3:92"},"nodeType":"YulFunctionCall","src":"2459:7:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2438:3:92"},"nodeType":"YulFunctionCall","src":"2438:29:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2423:3:92"},"nodeType":"YulFunctionCall","src":"2423:45:92"},{"kind":"number","nodeType":"YulLiteral","src":"2470:3:92","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2419:3:92"},"nodeType":"YulFunctionCall","src":"2419:55:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2411:4:92"}]}]},"name":"abi_encode_tuple_t_address_t_address_t_bytes32_t_bytes_calldata_ptr__to_t_address_t_address_t_bytes32_t_bytes_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1945:9:92","type":""},{"name":"value4","nodeType":"YulTypedName","src":"1956:6:92","type":""},{"name":"value3","nodeType":"YulTypedName","src":"1964:6:92","type":""},{"name":"value2","nodeType":"YulTypedName","src":"1972:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1980:6:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1988:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1999:4:92","type":""}],"src":"1795:685:92"},{"body":{"nodeType":"YulBlock","src":"2563:199:92","statements":[{"body":{"nodeType":"YulBlock","src":"2609:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2618:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2621:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2611:6:92"},"nodeType":"YulFunctionCall","src":"2611:12:92"},"nodeType":"YulExpressionStatement","src":"2611:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2584:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"2593:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2580:3:92"},"nodeType":"YulFunctionCall","src":"2580:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"2605:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2576:3:92"},"nodeType":"YulFunctionCall","src":"2576:32:92"},"nodeType":"YulIf","src":"2573:52:92"},{"nodeType":"YulVariableDeclaration","src":"2634:29:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2653:9:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2647:5:92"},"nodeType":"YulFunctionCall","src":"2647:16:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"2638:5:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"2716:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2725:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2728:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2718:6:92"},"nodeType":"YulFunctionCall","src":"2718:12:92"},"nodeType":"YulExpressionStatement","src":"2718:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2685:5:92"},{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2706:5:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2699:6:92"},"nodeType":"YulFunctionCall","src":"2699:13:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2692:6:92"},"nodeType":"YulFunctionCall","src":"2692:21:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"2682:2:92"},"nodeType":"YulFunctionCall","src":"2682:32:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2675:6:92"},"nodeType":"YulFunctionCall","src":"2675:40:92"},"nodeType":"YulIf","src":"2672:60:92"},{"nodeType":"YulAssignment","src":"2741:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"2751:5:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2741:6:92"}]}]},"name":"abi_decode_tuple_t_bool_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2529:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2540:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2552:6:92","type":""}],"src":"2485:277:92"},{"body":{"nodeType":"YulBlock","src":"2952:294:92","statements":[{"nodeType":"YulAssignment","src":"2962:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2974:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2985:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2970:3:92"},"nodeType":"YulFunctionCall","src":"2970:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2962:4:92"}]},{"nodeType":"YulVariableDeclaration","src":"2998:52:92","value":{"kind":"number","nodeType":"YulLiteral","src":"3008:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"3002:2:92","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3066:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3081:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"3089:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3077:3:92"},"nodeType":"YulFunctionCall","src":"3077:15:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3059:6:92"},"nodeType":"YulFunctionCall","src":"3059:34:92"},"nodeType":"YulExpressionStatement","src":"3059:34:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3113:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3124:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3109:3:92"},"nodeType":"YulFunctionCall","src":"3109:18:92"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"3133:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"3141:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3129:3:92"},"nodeType":"YulFunctionCall","src":"3129:15:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3102:6:92"},"nodeType":"YulFunctionCall","src":"3102:43:92"},"nodeType":"YulExpressionStatement","src":"3102:43:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3165:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3176:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3161:3:92"},"nodeType":"YulFunctionCall","src":"3161:18:92"},{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"3185:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"3193:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3181:3:92"},"nodeType":"YulFunctionCall","src":"3181:15:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3154:6:92"},"nodeType":"YulFunctionCall","src":"3154:43:92"},"nodeType":"YulExpressionStatement","src":"3154:43:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3217:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3228:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3213:3:92"},"nodeType":"YulFunctionCall","src":"3213:18:92"},{"name":"value3","nodeType":"YulIdentifier","src":"3233:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3206:6:92"},"nodeType":"YulFunctionCall","src":"3206:34:92"},"nodeType":"YulExpressionStatement","src":"3206:34:92"}]},"name":"abi_encode_tuple_t_address_t_address_t_address_t_bytes32__to_t_address_t_address_t_address_t_bytes32__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2897:9:92","type":""},{"name":"value3","nodeType":"YulTypedName","src":"2908:6:92","type":""},{"name":"value2","nodeType":"YulTypedName","src":"2916:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2924:6:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"2932:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2943:4:92","type":""}],"src":"2767:479:92"}]},"contents":"{\n { }\n function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_encode_tuple_t_contract$_IDAO_$10865__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_decode_tuple_t_contract$_IDAO_$10865(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 46)\n mstore(add(headStart, 64), \"Initializable: contract is alrea\")\n mstore(add(headStart, 96), \"dy initialized\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_rational_1_by_1__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xff))\n }\n function abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 43)\n mstore(add(headStart, 64), \"Initializable: contract is not i\")\n mstore(add(headStart, 96), \"nitializing\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_address_t_address_t_bytes32_t_bytes_calldata_ptr__to_t_address_t_address_t_bytes32_t_bytes_memory_ptr__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n {\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n mstore(add(headStart, 64), value2)\n mstore(add(headStart, 96), 128)\n mstore(add(headStart, 128), value4)\n calldatacopy(add(headStart, 160), value3, value4)\n mstore(add(add(headStart, value4), 160), 0)\n tail := add(add(headStart, and(add(value4, 31), not(31))), 160)\n }\n function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := mload(headStart)\n if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_address_t_address_t_address_t_bytes32__to_t_address_t_address_t_address_t_bytes32__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n {\n tail := add(headStart, 128)\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n mstore(add(headStart, 64), and(value2, _1))\n mstore(add(headStart, 96), value3)\n }\n}","id":92,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100675760003560e01c80638883bbd7116100505780638883bbd7146100c1578063c4d66de8146100d6578063f09e1623146100e957600080fd5b8063403f85751461006c5780634162169f146100a6575b600080fd5b6100937f6c28b2d088260f42eed051af4616ddda00554ec1880b580a4a9fbf40a70b09eb81565b6040519081526020015b60405180910390f35b6033546040516001600160a01b03909116815260200161009d565b6100d46100cf3660046103d4565b6100f1565b005b6100d46100e43660046103d4565b6100fd565b6100d4610224565b6100fa81610261565b50565b600054610100900460ff161580801561011d5750600054600160ff909116105b806101375750303b158015610137575060005460ff166001145b6101ae5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b6000805460ff1916600117905580156101d1576000805461ff0019166101001790555b6101da82610261565b8015610220576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b6033547f6c28b2d088260f42eed051af4616ddda00554ec1880b580a4a9fbf40a70b09eb906100fa906001600160a01b0316303384600036610318565b600054610100900460ff166102de5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016101a5565b603380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b604051637ef7c88360e11b81526001600160a01b0387169063fdef91069061034c9088908890889088908890600401610404565b602060405180830381865afa158015610369573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061038d9190610458565b6103cc57604051630cb6f8ed60e21b81526001600160a01b038088166004830152808716602483015285166044820152606481018490526084016101a5565b505050505050565b6000602082840312156103e657600080fd5b81356001600160a01b03811681146103fd57600080fd5b9392505050565b60006001600160a01b03808816835280871660208401525084604083015260806060830152826080830152828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b60006020828403121561046a57600080fd5b815180151581146103fd57600080fdfea164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x67 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8883BBD7 GT PUSH2 0x50 JUMPI DUP1 PUSH4 0x8883BBD7 EQ PUSH2 0xC1 JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0xD6 JUMPI DUP1 PUSH4 0xF09E1623 EQ PUSH2 0xE9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x403F8575 EQ PUSH2 0x6C JUMPI DUP1 PUSH4 0x4162169F EQ PUSH2 0xA6 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x93 PUSH32 0x6C28B2D088260F42EED051AF4616DDDA00554EC1880B580A4A9FBF40A70B09EB DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x33 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x9D JUMP JUMPDEST PUSH2 0xD4 PUSH2 0xCF CALLDATASIZE PUSH1 0x4 PUSH2 0x3D4 JUMP JUMPDEST PUSH2 0xF1 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xD4 PUSH2 0xE4 CALLDATASIZE PUSH1 0x4 PUSH2 0x3D4 JUMP JUMPDEST PUSH2 0xFD JUMP JUMPDEST PUSH2 0xD4 PUSH2 0x224 JUMP JUMPDEST PUSH2 0xFA DUP2 PUSH2 0x261 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 DUP1 ISZERO PUSH2 0x11D JUMPI POP PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xFF SWAP1 SWAP2 AND LT JUMPDEST DUP1 PUSH2 0x137 JUMPI POP ADDRESS EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x137 JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF AND PUSH1 0x1 EQ JUMPDEST PUSH2 0x1AE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x647920696E697469616C697A6564000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE DUP1 ISZERO PUSH2 0x1D1 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND PUSH2 0x100 OR SWAP1 SSTORE JUMPDEST PUSH2 0x1DA DUP3 PUSH2 0x261 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x220 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x33 SLOAD PUSH32 0x6C28B2D088260F42EED051AF4616DDDA00554EC1880B580A4A9FBF40A70B09EB SWAP1 PUSH2 0xFA SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ADDRESS CALLER DUP5 PUSH1 0x0 CALLDATASIZE PUSH2 0x318 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x2DE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6E697469616C697A696E67000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x1A5 JUMP JUMPDEST PUSH1 0x33 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x7EF7C883 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0xFDEF9106 SWAP1 PUSH2 0x34C SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x404 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x369 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x38D SWAP2 SWAP1 PUSH2 0x458 JUMP JUMPDEST PUSH2 0x3CC JUMPI PUSH1 0x40 MLOAD PUSH4 0xCB6F8ED PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND PUSH1 0x4 DUP4 ADD MSTORE DUP1 DUP8 AND PUSH1 0x24 DUP4 ADD MSTORE DUP6 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x84 ADD PUSH2 0x1A5 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x3FD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND DUP4 MSTORE DUP1 DUP8 AND PUSH1 0x20 DUP5 ADD MSTORE POP DUP5 PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x80 PUSH1 0x60 DUP4 ADD MSTORE DUP3 PUSH1 0x80 DUP4 ADD MSTORE DUP3 DUP5 PUSH1 0xA0 DUP5 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0xA0 DUP5 DUP5 ADD ADD MSTORE PUSH1 0xA0 PUSH1 0x1F NOT PUSH1 0x1F DUP6 ADD AND DUP4 ADD ADD SWAP1 POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x46A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x3FD JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"336:729:45:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;412:95;;468:39;412:95;;;;;160:25:92;;;148:2;133:18;412:95:45;;;;;;;;1200:70:67;1259:4;;1200:70;;-1:-1:-1;;;;;1259:4:67;;;356:74:92;;344:2;329:18;1200:70:67;196:240:92;817:102:45;;;;;;:::i;:::-;;:::i;:::-;;514:108;;;;;;:::i;:::-;;:::i;925:138::-;;;:::i;817:102::-;873:39;907:4;873:33;:39::i;:::-;817:102;:::o;514:108::-;3279:19:4;3302:13;;;;;;3301:14;;3347:34;;;;-1:-1:-1;3365:12:4;;3380:1;3365:12;;;;:16;3347:34;3346:108;;;-1:-1:-1;3426:4:4;1713:19:6;:23;;;3387:66:4;;-1:-1:-1;3436:12:4;;;;;:17;3387:66;3325:201;;;;-1:-1:-1;;;3325:201:4;;971:2:92;3325:201:4;;;953:21:92;1010:2;990:18;;;983:30;1049:34;1029:18;;;1022:62;1120:16;1100:18;;;1093:44;1154:19;;3325:201:4;;;;;;;;;3536:12;:16;;-1:-1:-1;;3536:16:4;3551:1;3536:16;;;3562:65;;;;3596:13;:20;;-1:-1:-1;;3596:20:4;;;;;3562:65;576:39:45::1;610:4;576:33;:39::i;:::-;3651:14:4::0;3647:99;;;3697:5;3681:21;;-1:-1:-1;;3681:21:4;;;3721:14;;-1:-1:-1;1336:36:92;;3721:14:4;;1324:2:92;1309:18;3721:14:4;;;;;;;3647:99;3269:483;514:108:45;:::o;925:138::-;1616:4:67;;468:39:45;;1610:67:67;;-1:-1:-1;;;;;1616:4:67;1630;965:10:8;1651:13:67;1039:14:8;;1610:5:67;:67::i;1010:108::-;5374:13:4;;;;;;;5366:69;;;;-1:-1:-1;;;5366:69:4;;1585:2:92;5366:69:4;;;1567:21:92;1624:2;1604:18;;;1597:30;1663:34;1643:18;;;1636:62;1734:13;1714:18;;;1707:41;1765:19;;5366:69:4;1383:407:92;5366:69:4;1100:4:67::1;:11:::0;;;::::1;-1:-1:-1::0;;;;;1100:11:67;;;::::1;::::0;;;::::1;::::0;;1010:108::o;1041:363:68:-;1180:54;;-1:-1:-1;;;1180:54:68;;-1:-1:-1;;;;;1180:18:68;;;;;:54;;1199:6;;1207:4;;1213:13;;1228:5;;;;1180:54;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1175:226;;1251:150;;-1:-1:-1;;;1251:150:68;;-1:-1:-1;;;;;3077:15:92;;;1251:150:68;;;3059:34:92;3129:15;;;3109:18;;;3102:43;3181:15;;3161:18;;;3154:43;3213:18;;;3206:34;;;2970:19;;1251:150:68;2767:479:92;1175:226:68;1041:363;;;;;;:::o;441:323:92:-;514:6;567:2;555:9;546:7;542:23;538:32;535:52;;;583:1;580;573:12;535:52;622:9;609:23;-1:-1:-1;;;;;665:5:92;661:54;654:5;651:65;641:93;;730:1;727;720:12;641:93;753:5;441:323;-1:-1:-1;;;441:323:92:o;1795:685::-;1999:4;-1:-1:-1;;;;;2109:2:92;2101:6;2097:15;2086:9;2079:34;2161:2;2153:6;2149:15;2144:2;2133:9;2129:18;2122:43;;2201:6;2196:2;2185:9;2181:18;2174:34;2244:3;2239:2;2228:9;2224:18;2217:31;2285:6;2279:3;2268:9;2264:19;2257:35;2343:6;2335;2329:3;2318:9;2314:19;2301:49;2400:1;2394:3;2385:6;2374:9;2370:22;2366:32;2359:43;2470:3;2463:2;2459:7;2454:2;2446:6;2442:15;2438:29;2427:9;2423:45;2419:55;2411:63;;1795:685;;;;;;;;:::o;2485:277::-;2552:6;2605:2;2593:9;2584:7;2580:23;2576:32;2573:52;;;2621:1;2618;2611:12;2573:52;2653:9;2647:16;2706:5;2699:13;2692:21;2685:5;2682:32;2672:60;;2728:1;2725;2718:12"},"gasEstimates":{"creation":{"codeDepositCost":"231800","executionCost":"275","totalCost":"232075"},"external":{"AUTHORIZED_FUNC_PERMISSION_ID()":"185","authorizedFunc()":"infinite","dao()":"2324","initialize(address)":"109514","notAnInitializer(address)":"26684"}},"methodIdentifiers":{"AUTHORIZED_FUNC_PERMISSION_ID()":"403f8575","authorizedFunc()":"f09e1623","dao()":"4162169f","initialize(address)":"c4d66de8","notAnInitializer(address)":"8883bbd7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"dao\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"name\":\"DaoUnauthorized\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"AUTHORIZED_FUNC_PERMISSION_ID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"authorizedFunc\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"dao\",\"outputs\":[{\"internalType\":\"contract IDAO\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IDAO\",\"name\":\"_dao\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IDAO\",\"name\":\"_dao\",\"type\":\"address\"}],\"name\":\"notAnInitializer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"DO NOT USE IN PRODUCTION!\",\"errors\":{\"DaoUnauthorized(address,address,address,bytes32)\":[{\"params\":{\"dao\":\"The associated DAO.\",\"permissionId\":\"The permission identifier.\",\"where\":\"The context in which the authorization reverted.\",\"who\":\"The address (EOA or contract) missing the permission.\"}}]},\"kind\":\"dev\",\"methods\":{\"dao()\":{\"returns\":{\"_0\":\"The DAO contract.\"}}},\"version\":1},\"userdoc\":{\"errors\":{\"DaoUnauthorized(address,address,address,bytes32)\":[{\"notice\":\"Thrown if a call is unauthorized in the associated DAO.\"}]},\"kind\":\"user\",\"methods\":{\"dao()\":{\"notice\":\"Returns the DAO contract.\"},\"notAnInitializer(address)\":{\"notice\":\"The following function intentionally misses the `initializer` modifier to validate that `__DaoAuthorizableUpgradeable_init` cannot be called outside initialization.\"}},\"notice\":\"A mock contract containing a function protected by the `auth` modifier.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/mocks/permission/auth/DaoAuthorizableUpgradeableMock.sol\":\"DaoAuthorizableUpgradeableMock\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n function __Context_init() internal onlyInitializing {\\n }\\n\\n function __Context_init_unchained() internal onlyInitializing {\\n }\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n function _contextSuffixLength() internal view virtual returns (uint256) {\\n return 0;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x75097e35253e7fb282ee4d7f27a80eaacfa759923185bf17302a89cbc059c5ef\",\"license\":\"MIT\"},\"src/dao/IDAO.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IDAO\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for DAOs within the Aragon App DAO framework.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IDAO {\\n /// @notice The action struct to be consumed by the DAO's `execute` function resulting in an external call.\\n /// @param to The address to call.\\n /// @param value The native token value to be sent with the call.\\n /// @param data The bytes-encoded function selector and calldata for the call.\\n struct Action {\\n address to;\\n uint256 value;\\n bytes data;\\n }\\n\\n /// @notice Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\\n /// @param _where The address of the contract.\\n /// @param _who The address of a EOA or contract to give the permissions.\\n /// @param _permissionId The permission identifier.\\n /// @param _data The optional data passed to the `PermissionCondition` registered.\\n /// @return Returns true if the address has permission, false if not.\\n function hasPermission(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes memory _data\\n ) external view returns (bool);\\n\\n /// @notice Updates the DAO metadata (e.g., an IPFS hash).\\n /// @param _metadata The IPFS hash of the new metadata object.\\n function setMetadata(bytes calldata _metadata) external;\\n\\n /// @notice Emitted when the DAO metadata is updated.\\n /// @param metadata The IPFS hash of the new metadata object.\\n event MetadataSet(bytes metadata);\\n\\n /// @notice Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted.\\n /// @param _callId The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce.\\n /// @param _actions The array of actions.\\n /// @param _allowFailureMap A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @return The array of results obtained from the executed actions in `bytes`.\\n /// @return The resulting failure map containing the actions have actually failed.\\n function execute(\\n bytes32 _callId,\\n Action[] memory _actions,\\n uint256 _allowFailureMap\\n ) external returns (bytes[] memory, uint256);\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param actor The address of the caller.\\n /// @param callId The ID of the call.\\n /// @param actions The array of actions executed.\\n /// @param allowFailureMap The allow failure map encoding which actions are allowed to fail.\\n /// @param failureMap The failure map encoding which actions have failed.\\n /// @param execResults The array with the results of the executed actions.\\n /// @dev The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce.\\n event Executed(\\n address indexed actor,\\n bytes32 callId,\\n Action[] actions,\\n uint256 allowFailureMap,\\n uint256 failureMap,\\n bytes[] execResults\\n );\\n\\n /// @notice Emitted when a standard callback is registered.\\n /// @param interfaceId The ID of the interface.\\n /// @param callbackSelector The selector of the callback function.\\n /// @param magicNumber The magic number to be registered for the callback function selector.\\n event StandardCallbackRegistered(\\n bytes4 interfaceId,\\n bytes4 callbackSelector,\\n bytes4 magicNumber\\n );\\n\\n /// @notice Deposits (native) tokens to the DAO contract with a reference string.\\n /// @param _token The address of the token or address(0) in case of the native token.\\n /// @param _amount The amount of tokens to deposit.\\n /// @param _reference The reference describing the deposit reason.\\n function deposit(address _token, uint256 _amount, string calldata _reference) external payable;\\n\\n /// @notice Emitted when a token deposit has been made to the DAO.\\n /// @param sender The address of the sender.\\n /// @param token The address of the deposited token.\\n /// @param amount The amount of tokens deposited.\\n /// @param _reference The reference describing the deposit reason.\\n event Deposited(\\n address indexed sender,\\n address indexed token,\\n uint256 amount,\\n string _reference\\n );\\n\\n /// @notice Emitted when a native token deposit has been made to the DAO.\\n /// @dev This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).\\n /// @param sender The address of the sender.\\n /// @param amount The amount of native tokens deposited.\\n event NativeTokenDeposited(address sender, uint256 amount);\\n\\n /// @notice Setter for the trusted forwarder verifying the meta transaction.\\n /// @param _trustedForwarder The trusted forwarder address.\\n function setTrustedForwarder(address _trustedForwarder) external;\\n\\n /// @notice Getter for the trusted forwarder verifying the meta transaction.\\n /// @return The trusted forwarder address.\\n function getTrustedForwarder() external view returns (address);\\n\\n /// @notice Emitted when a new TrustedForwarder is set on the DAO.\\n /// @param forwarder the new forwarder address.\\n event TrustedForwarderSet(address forwarder);\\n\\n /// @notice Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\\n /// @param _hash The hash of the data to be signed.\\n /// @param _signature The signature byte array associated with `_hash`.\\n /// @return Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not.\\n function isValidSignature(bytes32 _hash, bytes memory _signature) external returns (bytes4);\\n\\n /// @notice Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\\n /// @param _interfaceId The ID of the interface.\\n /// @param _callbackSelector The selector of the callback function.\\n /// @param _magicNumber The magic number to be registered for the function signature.\\n function registerStandardCallback(\\n bytes4 _interfaceId,\\n bytes4 _callbackSelector,\\n bytes4 _magicNumber\\n ) external;\\n\\n /// @notice Removed function being left here to not corrupt the IDAO interface ID. Any call will revert.\\n /// @dev Introduced in v1.0.0. Removed in v1.4.0.\\n function setSignatureValidator(address) external;\\n}\\n\",\"keccak256\":\"0xb7f615523c26de042edce98731c658f44a1edb2464387ac1b642c4c69f57128e\",\"license\":\"AGPL-3.0-or-later\"},\"src/mocks/permission/auth/DaoAuthorizableUpgradeableMock.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {DaoAuthorizableUpgradeable} from \\\"../../../permission/auth/DaoAuthorizableUpgradeable.sol\\\";\\nimport {IDAO} from \\\"../../../dao/IDAO.sol\\\";\\n\\n/// @notice A mock contract containing a function protected by the `auth` modifier.\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract DaoAuthorizableUpgradeableMock is DaoAuthorizableUpgradeable {\\n bytes32 public constant AUTHORIZED_FUNC_PERMISSION_ID = keccak256(\\\"AUTHORIZED_FUNC_PERMISSION\\\");\\n\\n function initialize(IDAO _dao) external initializer {\\n __DaoAuthorizableUpgradeable_init(_dao);\\n }\\n\\n /// @notice The following function intentionally misses the `initializer` modifier\\n /// to validate that `__DaoAuthorizableUpgradeable_init` cannot be called outside initialization.\\n function notAnInitializer(IDAO _dao) external {\\n __DaoAuthorizableUpgradeable_init(_dao);\\n }\\n\\n function authorizedFunc()\\n external\\n auth(AUTHORIZED_FUNC_PERMISSION_ID) // solhint-disable-next-line no-empty-blocks\\n {}\\n}\\n\",\"keccak256\":\"0xd3905e65c6dce2551491c73ea2c18e16bdab53807d8254d13c1d8d8ef4edaaf8\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/DaoAuthorizableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ContextUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\\\";\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\nimport {_auth} from \\\"./auth.sol\\\";\\n\\n/// @title DaoAuthorizableUpgradeable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract contract providing a meta-transaction compatible modifier for upgradeable or cloneable contracts to authorize function calls through an associated DAO.\\n/// @dev Make sure to call `__DaoAuthorizableUpgradeable_init` during initialization of the inheriting contract.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract DaoAuthorizableUpgradeable is ContextUpgradeable {\\n /// @notice The associated DAO managing the permissions of inheriting contracts.\\n IDAO private dao_;\\n\\n /// @notice Initializes the contract by setting the associated DAO.\\n /// @param _dao The associated DAO address.\\n // solhint-disable-next-line func-name-mixedcase\\n function __DaoAuthorizableUpgradeable_init(IDAO _dao) internal onlyInitializing {\\n dao_ = _dao;\\n }\\n\\n /// @notice Returns the DAO contract.\\n /// @return The DAO contract.\\n function dao() public view returns (IDAO) {\\n return dao_;\\n }\\n\\n /// @notice A modifier to make functions on inheriting contracts authorized. Permissions to call the function are checked through the associated DAO's permission manager.\\n /// @param _permissionId The permission identifier required to call the method this modifier is applied to.\\n modifier auth(bytes32 _permissionId) {\\n _auth(dao_, address(this), _msgSender(), _permissionId, _msgData());\\n _;\\n }\\n\\n /// @notice This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain (see [OpenZeppelin's guide about storage gaps](https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps)).\\n uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0x7fac6b01b037ba1cb9d6a22d3f43b0785037dcf496ffb672434d9bf7227d2585\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/auth.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice Thrown if a call is unauthorized in the associated DAO.\\n/// @param dao The associated DAO.\\n/// @param where The context in which the authorization reverted.\\n/// @param who The address (EOA or contract) missing the permission.\\n/// @param permissionId The permission identifier.\\nerror DaoUnauthorized(address dao, address where, address who, bytes32 permissionId);\\n\\n/// @notice A free function checking if a caller is granted permissions on a target contract via a permission identifier that redirects the approval to a `PermissionCondition` if this was specified in the setup.\\n/// @param _where The address of the target contract for which `who` receives permission.\\n/// @param _who The address (EOA or contract) owning the permission.\\n/// @param _permissionId The permission identifier.\\n/// @param _data The optional data passed to the `PermissionCondition` registered.\\n/// @custom:security-contact sirt@aragon.org\\nfunction _auth(\\n IDAO _dao,\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes calldata _data\\n) view {\\n if (!_dao.hasPermission(_where, _who, _permissionId, _data))\\n revert DaoUnauthorized({\\n dao: address(_dao),\\n where: _where,\\n who: _who,\\n permissionId: _permissionId\\n });\\n}\\n\",\"keccak256\":\"0x878764b4f87fe0651fb3798fb9cb87c952f8c6caf6ae79c7f09de84df6c00298\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[{"astId":372,"contract":"src/mocks/permission/auth/DaoAuthorizableUpgradeableMock.sol:DaoAuthorizableUpgradeableMock","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":375,"contract":"src/mocks/permission/auth/DaoAuthorizableUpgradeableMock.sol:DaoAuthorizableUpgradeableMock","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":2592,"contract":"src/mocks/permission/auth/DaoAuthorizableUpgradeableMock.sol:DaoAuthorizableUpgradeableMock","label":"__gap","offset":0,"slot":"1","type":"t_array(t_uint256)50_storage"},{"astId":13111,"contract":"src/mocks/permission/auth/DaoAuthorizableUpgradeableMock.sol:DaoAuthorizableUpgradeableMock","label":"dao_","offset":0,"slot":"51","type":"t_contract(IDAO)10865"},{"astId":13160,"contract":"src/mocks/permission/auth/DaoAuthorizableUpgradeableMock.sol:DaoAuthorizableUpgradeableMock","label":"__gap","offset":0,"slot":"52","type":"t_array(t_uint256)49_storage"}],"types":{"t_array(t_uint256)49_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[49]","numberOfBytes":"1568"},"t_array(t_uint256)50_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[50]","numberOfBytes":"1600"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_contract(IDAO)10865":{"encoding":"inplace","label":"contract IDAO","numberOfBytes":"20"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"errors":{"DaoUnauthorized(address,address,address,bytes32)":[{"notice":"Thrown if a call is unauthorized in the associated DAO."}]},"kind":"user","methods":{"dao()":{"notice":"Returns the DAO contract."},"notAnInitializer(address)":{"notice":"The following function intentionally misses the `initializer` modifier to validate that `__DaoAuthorizableUpgradeable_init` cannot be called outside initialization."}},"notice":"A mock contract containing a function protected by the `auth` modifier.","version":1}}},"src/mocks/permission/condition/PermissionConditionMock.sol":{"PermissionConditionMock":{"abi":[{"inputs":[],"name":"answer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_where","type":"address"},{"internalType":"address","name":"_who","type":"address"},{"internalType":"bytes32","name":"_permissionId","type":"bytes32"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"isGranted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"protocolVersion","outputs":[{"internalType":"uint8[3]","name":"","type":"uint8[3]"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_answer","type":"bool"}],"name":"setAnswer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"DO NOT USE IN PRODUCTION!","kind":"dev","methods":{"isGranted(address,address,bytes32,bytes)":{"params":{"_data":"Optional data passed to the `PermissionCondition` implementation.","_permissionId":"The permission identifier.","_where":"The address of the target contract.","_who":"The address (EOA or contract) for which the permissions are checked."},"returns":{"_0":"Returns true if the call is permitted."}},"protocolVersion()":{"details":"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.","returns":{"_0":"Returns the semantic Aragon OSx protocol version number."}},"supportsInterface(bytes4)":{"params":{"_interfaceId":"The ID of the interface."},"returns":{"_0":"Returns `true` if the interface is supported."}}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b5061033d806100206000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80632ae9c600116100505780632ae9c600146100b057806385bb7d69146100c5578063f01b7dd2146100d257600080fd5b806301ffc9a71461006c5780632675fdd014610094575b600080fd5b61007f61007a36600461018e565b6100f5565b60405190151581526020015b60405180910390f35b61007f6100a23660046101fe565b60005460ff16949350505050565b6100b8610146565b60405161008b91906102da565b60005461007f9060ff1681565b6100f36100e036600461030e565b6000805460ff1916911515919091179055565b005b60006001600160e01b031982166302675fdd60e41b148061012557506001600160e01b03198216621574e360e91b145b8061014057506301ffc9a760e01b6001600160e01b03198316145b92915050565b61014e610170565b5060408051606081018252600181526004602082015260009181019190915290565b60405180606001604052806003906020820280368337509192915050565b6000602082840312156101a057600080fd5b81356001600160e01b0319811681146101b857600080fd5b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146101e357600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b6000806000806080858703121561021457600080fd5b61021d856101bf565b935061022b602086016101bf565b925060408501359150606085013567ffffffffffffffff8082111561024f57600080fd5b818701915087601f83011261026357600080fd5b813581811115610275576102756101e8565b604051601f8201601f19908116603f0116810190838211818310171561029d5761029d6101e8565b816040528281528a60208487010111156102b657600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b60608101818360005b600381101561030557815160ff168352602092830192909101906001016102e3565b50505092915050565b60006020828403121561032057600080fd5b813580151581146101b857600080fdfea164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x33D DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x67 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x2AE9C600 GT PUSH2 0x50 JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0xB0 JUMPI DUP1 PUSH4 0x85BB7D69 EQ PUSH2 0xC5 JUMPI DUP1 PUSH4 0xF01B7DD2 EQ PUSH2 0xD2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x6C JUMPI DUP1 PUSH4 0x2675FDD0 EQ PUSH2 0x94 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7F PUSH2 0x7A CALLDATASIZE PUSH1 0x4 PUSH2 0x18E JUMP JUMPDEST PUSH2 0xF5 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x7F PUSH2 0xA2 CALLDATASIZE PUSH1 0x4 PUSH2 0x1FE JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xFF AND SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0xB8 PUSH2 0x146 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x8B SWAP2 SWAP1 PUSH2 0x2DA JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x7F SWAP1 PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0xF3 PUSH2 0xE0 CALLDATASIZE PUSH1 0x4 PUSH2 0x30E JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x2675FDD PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x125 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x140 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x14E PUSH2 0x170 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x1B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x1E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x214 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x21D DUP6 PUSH2 0x1BF JUMP JUMPDEST SWAP4 POP PUSH2 0x22B PUSH1 0x20 DUP7 ADD PUSH2 0x1BF JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x24F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x263 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x275 JUMPI PUSH2 0x275 PUSH2 0x1E8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x29D JUMPI PUSH2 0x29D PUSH2 0x1E8 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP11 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x2B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0x305 JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x2E3 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x320 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x1B8 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"285:405:46:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@answer_11115":{"entryPoint":null,"id":11115,"parameterSlots":0,"returnSlots":0},"@isGranted_11147":{"entryPoint":null,"id":11147,"parameterSlots":4,"returnSlots":1},"@protocolVersion_14765":{"entryPoint":326,"id":14765,"parameterSlots":0,"returnSlots":1},"@setAnswer_11125":{"entryPoint":null,"id":11125,"parameterSlots":1,"returnSlots":0},"@supportsInterface_13275":{"entryPoint":245,"id":13275,"parameterSlots":1,"returnSlots":1},"@supportsInterface_9730":{"entryPoint":null,"id":9730,"parameterSlots":1,"returnSlots":1},"abi_decode_address":{"entryPoint":447,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_tuple_t_addresst_addresst_bytes32t_bytes_memory_ptr":{"entryPoint":510,"id":null,"parameterSlots":2,"returnSlots":4},"abi_decode_tuple_t_bool":{"entryPoint":782,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes4":{"entryPoint":398,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed":{"entryPoint":730,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"panic_error_0x41":{"entryPoint":488,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:2754:92","statements":[{"nodeType":"YulBlock","src":"6:3:92","statements":[]},{"body":{"nodeType":"YulBlock","src":"83:217:92","statements":[{"body":{"nodeType":"YulBlock","src":"129:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"138:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"141:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"131:6:92"},"nodeType":"YulFunctionCall","src":"131:12:92"},"nodeType":"YulExpressionStatement","src":"131:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"104:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"113:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"100:3:92"},"nodeType":"YulFunctionCall","src":"100:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"125:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"96:3:92"},"nodeType":"YulFunctionCall","src":"96:32:92"},"nodeType":"YulIf","src":"93:52:92"},{"nodeType":"YulVariableDeclaration","src":"154:36:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"180:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"167:12:92"},"nodeType":"YulFunctionCall","src":"167:23:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"158:5:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"254:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"263:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"266:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"256:6:92"},"nodeType":"YulFunctionCall","src":"256:12:92"},"nodeType":"YulExpressionStatement","src":"256:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"212:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"223:5:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"234:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"239:10:92","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"230:3:92"},"nodeType":"YulFunctionCall","src":"230:20:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"219:3:92"},"nodeType":"YulFunctionCall","src":"219:32:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"209:2:92"},"nodeType":"YulFunctionCall","src":"209:43:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"202:6:92"},"nodeType":"YulFunctionCall","src":"202:51:92"},"nodeType":"YulIf","src":"199:71:92"},{"nodeType":"YulAssignment","src":"279:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"289:5:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"279:6:92"}]}]},"name":"abi_decode_tuple_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"49:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"60:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"72:6:92","type":""}],"src":"14:286:92"},{"body":{"nodeType":"YulBlock","src":"400:92:92","statements":[{"nodeType":"YulAssignment","src":"410:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"422:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"433:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"418:3:92"},"nodeType":"YulFunctionCall","src":"418:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"410:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"452:9:92"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"477:6:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"470:6:92"},"nodeType":"YulFunctionCall","src":"470:14:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"463:6:92"},"nodeType":"YulFunctionCall","src":"463:22:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"445:6:92"},"nodeType":"YulFunctionCall","src":"445:41:92"},"nodeType":"YulExpressionStatement","src":"445:41:92"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"369:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"380:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"391:4:92","type":""}],"src":"305:187:92"},{"body":{"nodeType":"YulBlock","src":"546:147:92","statements":[{"nodeType":"YulAssignment","src":"556:29:92","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"578:6:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"565:12:92"},"nodeType":"YulFunctionCall","src":"565:20:92"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"556:5:92"}]},{"body":{"nodeType":"YulBlock","src":"671:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"680:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"683:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"673:6:92"},"nodeType":"YulFunctionCall","src":"673:12:92"},"nodeType":"YulExpressionStatement","src":"673:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"607:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"618:5:92"},{"kind":"number","nodeType":"YulLiteral","src":"625:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"614:3:92"},"nodeType":"YulFunctionCall","src":"614:54:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"604:2:92"},"nodeType":"YulFunctionCall","src":"604:65:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"597:6:92"},"nodeType":"YulFunctionCall","src":"597:73:92"},"nodeType":"YulIf","src":"594:93:92"}]},"name":"abi_decode_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"525:6:92","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"536:5:92","type":""}],"src":"497:196:92"},{"body":{"nodeType":"YulBlock","src":"730:95:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"747:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"754:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"759:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"750:3:92"},"nodeType":"YulFunctionCall","src":"750:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"740:6:92"},"nodeType":"YulFunctionCall","src":"740:31:92"},"nodeType":"YulExpressionStatement","src":"740:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"787:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"790:4:92","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"780:6:92"},"nodeType":"YulFunctionCall","src":"780:15:92"},"nodeType":"YulExpressionStatement","src":"780:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"811:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"814:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"804:6:92"},"nodeType":"YulFunctionCall","src":"804:15:92"},"nodeType":"YulExpressionStatement","src":"804:15:92"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"698:127:92"},{"body":{"nodeType":"YulBlock","src":"960:1008:92","statements":[{"body":{"nodeType":"YulBlock","src":"1007:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1016:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1019:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1009:6:92"},"nodeType":"YulFunctionCall","src":"1009:12:92"},"nodeType":"YulExpressionStatement","src":"1009:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"981:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"990:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"977:3:92"},"nodeType":"YulFunctionCall","src":"977:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"1002:3:92","type":"","value":"128"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"973:3:92"},"nodeType":"YulFunctionCall","src":"973:33:92"},"nodeType":"YulIf","src":"970:53:92"},{"nodeType":"YulAssignment","src":"1032:39:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1061:9:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"1042:18:92"},"nodeType":"YulFunctionCall","src":"1042:29:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1032:6:92"}]},{"nodeType":"YulAssignment","src":"1080:48:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1113:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1124:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1109:3:92"},"nodeType":"YulFunctionCall","src":"1109:18:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"1090:18:92"},"nodeType":"YulFunctionCall","src":"1090:38:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1080:6:92"}]},{"nodeType":"YulAssignment","src":"1137:42:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1164:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1175:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1160:3:92"},"nodeType":"YulFunctionCall","src":"1160:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1147:12:92"},"nodeType":"YulFunctionCall","src":"1147:32:92"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"1137:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"1188:46:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1219:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1230:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1215:3:92"},"nodeType":"YulFunctionCall","src":"1215:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1202:12:92"},"nodeType":"YulFunctionCall","src":"1202:32:92"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1192:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"1243:28:92","value":{"kind":"number","nodeType":"YulLiteral","src":"1253:18:92","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"1247:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"1298:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1307:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1310:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1300:6:92"},"nodeType":"YulFunctionCall","src":"1300:12:92"},"nodeType":"YulExpressionStatement","src":"1300:12:92"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1286:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"1294:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1283:2:92"},"nodeType":"YulFunctionCall","src":"1283:14:92"},"nodeType":"YulIf","src":"1280:34:92"},{"nodeType":"YulVariableDeclaration","src":"1323:32:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1337:9:92"},{"name":"offset","nodeType":"YulIdentifier","src":"1348:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1333:3:92"},"nodeType":"YulFunctionCall","src":"1333:22:92"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"1327:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"1403:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1412:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1415:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1405:6:92"},"nodeType":"YulFunctionCall","src":"1405:12:92"},"nodeType":"YulExpressionStatement","src":"1405:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"1382:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"1386:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1378:3:92"},"nodeType":"YulFunctionCall","src":"1378:13:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1393:7:92"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1374:3:92"},"nodeType":"YulFunctionCall","src":"1374:27:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1367:6:92"},"nodeType":"YulFunctionCall","src":"1367:35:92"},"nodeType":"YulIf","src":"1364:55:92"},{"nodeType":"YulVariableDeclaration","src":"1428:26:92","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"1451:2:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1438:12:92"},"nodeType":"YulFunctionCall","src":"1438:16:92"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"1432:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"1477:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"1479:16:92"},"nodeType":"YulFunctionCall","src":"1479:18:92"},"nodeType":"YulExpressionStatement","src":"1479:18:92"}]},"condition":{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"1469:2:92"},{"name":"_1","nodeType":"YulIdentifier","src":"1473:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1466:2:92"},"nodeType":"YulFunctionCall","src":"1466:10:92"},"nodeType":"YulIf","src":"1463:36:92"},{"nodeType":"YulVariableDeclaration","src":"1508:17:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1522:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"1518:3:92"},"nodeType":"YulFunctionCall","src":"1518:7:92"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"1512:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"1534:23:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1554:2:92","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1548:5:92"},"nodeType":"YulFunctionCall","src":"1548:9:92"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"1538:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"1566:71:92","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1588:6:92"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"1612:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"1616:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1608:3:92"},"nodeType":"YulFunctionCall","src":"1608:13:92"},{"name":"_4","nodeType":"YulIdentifier","src":"1623:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1604:3:92"},"nodeType":"YulFunctionCall","src":"1604:22:92"},{"kind":"number","nodeType":"YulLiteral","src":"1628:2:92","type":"","value":"63"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1600:3:92"},"nodeType":"YulFunctionCall","src":"1600:31:92"},{"name":"_4","nodeType":"YulIdentifier","src":"1633:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1596:3:92"},"nodeType":"YulFunctionCall","src":"1596:40:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1584:3:92"},"nodeType":"YulFunctionCall","src":"1584:53:92"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"1570:10:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"1696:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"1698:16:92"},"nodeType":"YulFunctionCall","src":"1698:18:92"},"nodeType":"YulExpressionStatement","src":"1698:18:92"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"1655:10:92"},{"name":"_1","nodeType":"YulIdentifier","src":"1667:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1652:2:92"},"nodeType":"YulFunctionCall","src":"1652:18:92"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"1675:10:92"},{"name":"memPtr","nodeType":"YulIdentifier","src":"1687:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"1672:2:92"},"nodeType":"YulFunctionCall","src":"1672:22:92"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"1649:2:92"},"nodeType":"YulFunctionCall","src":"1649:46:92"},"nodeType":"YulIf","src":"1646:72:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1734:2:92","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"1738:10:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1727:6:92"},"nodeType":"YulFunctionCall","src":"1727:22:92"},"nodeType":"YulExpressionStatement","src":"1727:22:92"},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1765:6:92"},{"name":"_3","nodeType":"YulIdentifier","src":"1773:2:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1758:6:92"},"nodeType":"YulFunctionCall","src":"1758:18:92"},"nodeType":"YulExpressionStatement","src":"1758:18:92"},{"body":{"nodeType":"YulBlock","src":"1822:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1831:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1834:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1824:6:92"},"nodeType":"YulFunctionCall","src":"1824:12:92"},"nodeType":"YulExpressionStatement","src":"1824:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"1799:2:92"},{"name":"_3","nodeType":"YulIdentifier","src":"1803:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1795:3:92"},"nodeType":"YulFunctionCall","src":"1795:11:92"},{"kind":"number","nodeType":"YulLiteral","src":"1808:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1791:3:92"},"nodeType":"YulFunctionCall","src":"1791:20:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1813:7:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1788:2:92"},"nodeType":"YulFunctionCall","src":"1788:33:92"},"nodeType":"YulIf","src":"1785:53:92"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1864:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"1872:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1860:3:92"},"nodeType":"YulFunctionCall","src":"1860:15:92"},{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"1881:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"1885:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1877:3:92"},"nodeType":"YulFunctionCall","src":"1877:11:92"},{"name":"_3","nodeType":"YulIdentifier","src":"1890:2:92"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"1847:12:92"},"nodeType":"YulFunctionCall","src":"1847:46:92"},"nodeType":"YulExpressionStatement","src":"1847:46:92"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1917:6:92"},{"name":"_3","nodeType":"YulIdentifier","src":"1925:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1913:3:92"},"nodeType":"YulFunctionCall","src":"1913:15:92"},{"kind":"number","nodeType":"YulLiteral","src":"1930:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1909:3:92"},"nodeType":"YulFunctionCall","src":"1909:24:92"},{"kind":"number","nodeType":"YulLiteral","src":"1935:1:92","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1902:6:92"},"nodeType":"YulFunctionCall","src":"1902:35:92"},"nodeType":"YulExpressionStatement","src":"1902:35:92"},{"nodeType":"YulAssignment","src":"1946:16:92","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"1956:6:92"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"1946:6:92"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_bytes32t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"902:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"913:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"925:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"933:6:92","type":""},{"name":"value2","nodeType":"YulTypedName","src":"941:6:92","type":""},{"name":"value3","nodeType":"YulTypedName","src":"949:6:92","type":""}],"src":"830:1138:92"},{"body":{"nodeType":"YulBlock","src":"2116:358:92","statements":[{"nodeType":"YulAssignment","src":"2126:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2138:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2149:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2134:3:92"},"nodeType":"YulFunctionCall","src":"2134:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2126:4:92"}]},{"nodeType":"YulVariableDeclaration","src":"2161:20:92","value":{"name":"headStart","nodeType":"YulIdentifier","src":"2172:9:92"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"2165:3:92","type":""}]},{"nodeType":"YulAssignment","src":"2190:16:92","value":{"name":"headStart","nodeType":"YulIdentifier","src":"2197:9:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"2190:3:92"}]},{"nodeType":"YulVariableDeclaration","src":"2215:20:92","value":{"name":"value0","nodeType":"YulIdentifier","src":"2229:6:92"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"2219:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2244:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"2253:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"2248:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"2310:158:92","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2331:3:92"},{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"2346:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2340:5:92"},"nodeType":"YulFunctionCall","src":"2340:13:92"},{"kind":"number","nodeType":"YulLiteral","src":"2355:4:92","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2336:3:92"},"nodeType":"YulFunctionCall","src":"2336:24:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2324:6:92"},"nodeType":"YulFunctionCall","src":"2324:37:92"},"nodeType":"YulExpressionStatement","src":"2324:37:92"},{"nodeType":"YulVariableDeclaration","src":"2374:14:92","value":{"kind":"number","nodeType":"YulLiteral","src":"2384:4:92","type":"","value":"0x20"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"2378:2:92","type":""}]},{"nodeType":"YulAssignment","src":"2401:19:92","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2412:3:92"},{"name":"_1","nodeType":"YulIdentifier","src":"2417:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2408:3:92"},"nodeType":"YulFunctionCall","src":"2408:12:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"2401:3:92"}]},{"nodeType":"YulAssignment","src":"2433:25:92","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"2447:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"2455:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2443:3:92"},"nodeType":"YulFunctionCall","src":"2443:15:92"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"2433:6:92"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"2274:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"2277:4:92","type":"","value":"0x03"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2271:2:92"},"nodeType":"YulFunctionCall","src":"2271:11:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"2283:18:92","statements":[{"nodeType":"YulAssignment","src":"2285:14:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"2294:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"2297:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2290:3:92"},"nodeType":"YulFunctionCall","src":"2290:9:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"2285:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"2267:3:92","statements":[]},"src":"2263:205:92"}]},"name":"abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2085:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"2096:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2107:4:92","type":""}],"src":"1973:501:92"},{"body":{"nodeType":"YulBlock","src":"2546:206:92","statements":[{"body":{"nodeType":"YulBlock","src":"2592:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2601:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2604:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2594:6:92"},"nodeType":"YulFunctionCall","src":"2594:12:92"},"nodeType":"YulExpressionStatement","src":"2594:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2567:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"2576:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2563:3:92"},"nodeType":"YulFunctionCall","src":"2563:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"2588:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2559:3:92"},"nodeType":"YulFunctionCall","src":"2559:32:92"},"nodeType":"YulIf","src":"2556:52:92"},{"nodeType":"YulVariableDeclaration","src":"2617:36:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2643:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2630:12:92"},"nodeType":"YulFunctionCall","src":"2630:23:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"2621:5:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"2706:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2715:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2718:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2708:6:92"},"nodeType":"YulFunctionCall","src":"2708:12:92"},"nodeType":"YulExpressionStatement","src":"2708:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2675:5:92"},{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2696:5:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2689:6:92"},"nodeType":"YulFunctionCall","src":"2689:13:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2682:6:92"},"nodeType":"YulFunctionCall","src":"2682:21:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"2672:2:92"},"nodeType":"YulFunctionCall","src":"2672:32:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2665:6:92"},"nodeType":"YulFunctionCall","src":"2665:40:92"},"nodeType":"YulIf","src":"2662:60:92"},{"nodeType":"YulAssignment","src":"2731:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"2741:5:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2731:6:92"}]}]},"name":"abi_decode_tuple_t_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2512:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2523:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2535:6:92","type":""}],"src":"2479:273:92"}]},"contents":"{\n { }\n function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n if iszero(eq(value, and(value, shl(224, 0xffffffff)))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function abi_decode_address(offset) -> value\n {\n value := calldataload(offset)\n if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n }\n function panic_error_0x41()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function abi_decode_tuple_t_addresst_addresst_bytes32t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n {\n if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := abi_decode_address(add(headStart, 32))\n value2 := calldataload(add(headStart, 64))\n let offset := calldataload(add(headStart, 96))\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n let _2 := add(headStart, offset)\n if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n let _3 := calldataload(_2)\n if gt(_3, _1) { panic_error_0x41() }\n let _4 := not(31)\n let memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n mstore(memPtr, _3)\n if gt(add(add(_2, _3), 32), dataEnd) { revert(0, 0) }\n calldatacopy(add(memPtr, 32), add(_2, 32), _3)\n mstore(add(add(memPtr, _3), 32), 0)\n value3 := memPtr\n }\n function abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 96)\n let pos := headStart\n pos := headStart\n let srcPtr := value0\n let i := 0\n for { } lt(i, 0x03) { i := add(i, 1) }\n {\n mstore(pos, and(mload(srcPtr), 0xff))\n let _1 := 0x20\n pos := add(pos, _1)\n srcPtr := add(srcPtr, _1)\n }\n }\n function abi_decode_tuple_t_bool(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n value0 := value\n }\n}","id":92,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100675760003560e01c80632ae9c600116100505780632ae9c600146100b057806385bb7d69146100c5578063f01b7dd2146100d257600080fd5b806301ffc9a71461006c5780632675fdd014610094575b600080fd5b61007f61007a36600461018e565b6100f5565b60405190151581526020015b60405180910390f35b61007f6100a23660046101fe565b60005460ff16949350505050565b6100b8610146565b60405161008b91906102da565b60005461007f9060ff1681565b6100f36100e036600461030e565b6000805460ff1916911515919091179055565b005b60006001600160e01b031982166302675fdd60e41b148061012557506001600160e01b03198216621574e360e91b145b8061014057506301ffc9a760e01b6001600160e01b03198316145b92915050565b61014e610170565b5060408051606081018252600181526004602082015260009181019190915290565b60405180606001604052806003906020820280368337509192915050565b6000602082840312156101a057600080fd5b81356001600160e01b0319811681146101b857600080fd5b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146101e357600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b6000806000806080858703121561021457600080fd5b61021d856101bf565b935061022b602086016101bf565b925060408501359150606085013567ffffffffffffffff8082111561024f57600080fd5b818701915087601f83011261026357600080fd5b813581811115610275576102756101e8565b604051601f8201601f19908116603f0116810190838211818310171561029d5761029d6101e8565b816040528281528a60208487010111156102b657600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b60608101818360005b600381101561030557815160ff168352602092830192909101906001016102e3565b50505092915050565b60006020828403121561032057600080fd5b813580151581146101b857600080fdfea164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x67 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x2AE9C600 GT PUSH2 0x50 JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0xB0 JUMPI DUP1 PUSH4 0x85BB7D69 EQ PUSH2 0xC5 JUMPI DUP1 PUSH4 0xF01B7DD2 EQ PUSH2 0xD2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x6C JUMPI DUP1 PUSH4 0x2675FDD0 EQ PUSH2 0x94 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7F PUSH2 0x7A CALLDATASIZE PUSH1 0x4 PUSH2 0x18E JUMP JUMPDEST PUSH2 0xF5 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x7F PUSH2 0xA2 CALLDATASIZE PUSH1 0x4 PUSH2 0x1FE JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xFF AND SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0xB8 PUSH2 0x146 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x8B SWAP2 SWAP1 PUSH2 0x2DA JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x7F SWAP1 PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0xF3 PUSH2 0xE0 CALLDATASIZE PUSH1 0x4 PUSH2 0x30E JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x2675FDD PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x125 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x140 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x14E PUSH2 0x170 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x1B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x1E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x214 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x21D DUP6 PUSH2 0x1BF JUMP JUMPDEST SWAP4 POP PUSH2 0x22B PUSH1 0x20 DUP7 ADD PUSH2 0x1BF JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x24F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x263 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x275 JUMPI PUSH2 0x275 PUSH2 0x1E8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x29D JUMPI PUSH2 0x29D PUSH2 0x1E8 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP11 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x2B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0x305 JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x2E3 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x320 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x1B8 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"285:405:46:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;955:301:70;;;;;;:::i;:::-;;:::i;:::-;;;470:14:92;;463:22;445:41;;433:2;418:18;955:301:70;;;;;;;;453:235:46;;;;;;:::i;:::-;606:4;675:6;;;453:235;;;;;;;631:98:90;;;:::i;:::-;;;;;;;:::i;347:18:46:-;;;;;;;;;372:75;;;;;;:::i;:::-;424:6;:16;;-1:-1:-1;;424:16:46;;;;;;;;;;372:75;;;955:301:70;1041:4;-1:-1:-1;;;;;;1076:54:70;;-1:-1:-1;;;1076:54:70;;:120;;-1:-1:-1;;;;;;;1146:50:70;;-1:-1:-1;;;1146:50:70;1076:120;:173;;;-1:-1:-1;;;;;;;;;;937:40:38;;;1212:37:70;1057:192;955:301;-1:-1:-1;;955:301:70:o;631:98:90:-;679:15;;:::i;:::-;-1:-1:-1;706:16:90;;;;;;;;714:1;706:16;;717:1;706:16;;;;-1:-1:-1;706:16:90;;;;;;;;631:98::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:286:92:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:92;;209:43;;199:71;;266:1;263;256:12;199:71;289:5;14:286;-1:-1:-1;;;14:286:92:o;497:196::-;565:20;;625:42;614:54;;604:65;;594:93;;683:1;680;673:12;594:93;497:196;;;:::o;698:127::-;759:10;754:3;750:20;747:1;740:31;790:4;787:1;780:15;814:4;811:1;804:15;830:1138;925:6;933;941;949;1002:3;990:9;981:7;977:23;973:33;970:53;;;1019:1;1016;1009:12;970:53;1042:29;1061:9;1042:29;:::i;:::-;1032:39;;1090:38;1124:2;1113:9;1109:18;1090:38;:::i;:::-;1080:48;;1175:2;1164:9;1160:18;1147:32;1137:42;;1230:2;1219:9;1215:18;1202:32;1253:18;1294:2;1286:6;1283:14;1280:34;;;1310:1;1307;1300:12;1280:34;1348:6;1337:9;1333:22;1323:32;;1393:7;1386:4;1382:2;1378:13;1374:27;1364:55;;1415:1;1412;1405:12;1364:55;1451:2;1438:16;1473:2;1469;1466:10;1463:36;;;1479:18;;:::i;:::-;1554:2;1548:9;1522:2;1608:13;;-1:-1:-1;;1604:22:92;;;1628:2;1600:31;1596:40;1584:53;;;1652:18;;;1672:22;;;1649:46;1646:72;;;1698:18;;:::i;:::-;1738:10;1734:2;1727:22;1773:2;1765:6;1758:18;1813:7;1808:2;1803;1799;1795:11;1791:20;1788:33;1785:53;;;1834:1;1831;1824:12;1785:53;1890:2;1885;1881;1877:11;1872:2;1864:6;1860:15;1847:46;1935:1;1930:2;1925;1917:6;1913:15;1909:24;1902:35;1956:6;1946:16;;;;;;;830:1138;;;;;;;:::o;1973:501::-;2149:2;2134:18;;2138:9;2229:6;2107:4;2263:205;2277:4;2274:1;2271:11;2263:205;;;2340:13;;2355:4;2336:24;2324:37;;2384:4;2408:12;;;;2443:15;;;;2297:1;2290:9;2263:205;;;2267:3;;;1973:501;;;;:::o;2479:273::-;2535:6;2588:2;2576:9;2567:7;2563:23;2559:32;2556:52;;;2604:1;2601;2594:12;2556:52;2643:9;2630:23;2696:5;2689:13;2682:21;2675:5;2672:32;2662:60;;2718:1;2715;2708:12"},"gasEstimates":{"creation":{"codeDepositCost":"165800","executionCost":"208","totalCost":"166008"},"external":{"answer()":"2321","isGranted(address,address,bytes32,bytes)":"infinite","protocolVersion()":"infinite","setAnswer(bool)":"24526","supportsInterface(bytes4)":"482"}},"methodIdentifiers":{"answer()":"85bb7d69","isGranted(address,address,bytes32,bytes)":"2675fdd0","protocolVersion()":"2ae9c600","setAnswer(bool)":"f01b7dd2","supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"answer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_who\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_permissionId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"isGranted\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"protocolVersion\",\"outputs\":[{\"internalType\":\"uint8[3]\",\"name\":\"\",\"type\":\"uint8[3]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"_answer\",\"type\":\"bool\"}],\"name\":\"setAnswer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"DO NOT USE IN PRODUCTION!\",\"kind\":\"dev\",\"methods\":{\"isGranted(address,address,bytes32,bytes)\":{\"params\":{\"_data\":\"Optional data passed to the `PermissionCondition` implementation.\",\"_permissionId\":\"The permission identifier.\",\"_where\":\"The address of the target contract.\",\"_who\":\"The address (EOA or contract) for which the permissions are checked.\"},\"returns\":{\"_0\":\"Returns true if the call is permitted.\"}},\"protocolVersion()\":{\"details\":\"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\",\"returns\":{\"_0\":\"Returns the semantic Aragon OSx protocol version number.\"}},\"supportsInterface(bytes4)\":{\"params\":{\"_interfaceId\":\"The ID of the interface.\"},\"returns\":{\"_0\":\"Returns `true` if the interface is supported.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"isGranted(address,address,bytes32,bytes)\":{\"notice\":\"Checks if a call is permitted.\"},\"protocolVersion()\":{\"notice\":\"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Checks if an interface is supported by this or its parent contract.\"}},\"notice\":\"A mock permission condition that can be set to permit or deny every call.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/mocks/permission/condition/PermissionConditionMock.sol\":\"PermissionConditionMock\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165 is IERC165 {\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165).interfaceId;\\n }\\n}\\n\",\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"src/mocks/permission/condition/PermissionConditionMock.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {PermissionCondition} from \\\"../../../permission/condition/PermissionCondition.sol\\\";\\n\\n/// @notice A mock permission condition that can be set to permit or deny every call.\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PermissionConditionMock is PermissionCondition {\\n bool public answer;\\n\\n function setAnswer(bool _answer) external {\\n answer = _answer;\\n }\\n\\n function isGranted(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes memory _data\\n ) external view returns (bool) {\\n (_where, _who, _permissionId, _data);\\n return answer;\\n }\\n}\\n\",\"keccak256\":\"0xdd24723dcbdc7690785c75f0b9428a820c3805b9a74baf3434859e4a7989d2d8\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/condition/IPermissionCondition.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IPermissionCondition\\n/// @author Aragon X - 2021-2023\\n/// @notice An interface to be implemented to support custom permission logic.\\n/// @dev To attach a condition to a permission, the `grantWithCondition` function must be used and refer to the implementing contract's address with the `condition` argument.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IPermissionCondition {\\n /// @notice Checks if a call is permitted.\\n /// @param _where The address of the target contract.\\n /// @param _who The address (EOA or contract) for which the permissions are checked.\\n /// @param _permissionId The permission identifier.\\n /// @param _data Optional data passed to the `PermissionCondition` implementation.\\n /// @return isPermitted Returns true if the call is permitted.\\n function isGranted(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes calldata _data\\n ) external view returns (bool isPermitted);\\n}\\n\",\"keccak256\":\"0xc3280622bdb57856f0b20ded71537fc99b344d1e6a0430abfaca8304a9ece922\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/condition/PermissionCondition.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ERC165} from \\\"@openzeppelin/contracts/utils/introspection/ERC165.sol\\\";\\n\\nimport {IProtocolVersion} from \\\"../../utils/versioning/IProtocolVersion.sol\\\";\\nimport {ProtocolVersion} from \\\"../../utils/versioning/ProtocolVersion.sol\\\";\\nimport {IPermissionCondition} from \\\"./IPermissionCondition.sol\\\";\\n\\n/// @title PermissionCondition\\n/// @author Aragon X - 2023\\n/// @notice An abstract contract for non-upgradeable contracts instantiated via the `new` keyword to inherit from to support customary permissions depending on arbitrary on-chain state.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract PermissionCondition is ERC165, IPermissionCondition, ProtocolVersion {\\n /// @notice Checks if an interface is supported by this or its parent contract.\\n /// @param _interfaceId The ID of the interface.\\n /// @return Returns `true` if the interface is supported.\\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\\n return\\n _interfaceId == type(IPermissionCondition).interfaceId ||\\n _interfaceId == type(IProtocolVersion).interfaceId ||\\n super.supportsInterface(_interfaceId);\\n }\\n}\\n\",\"keccak256\":\"0xd952ceadfde4fdb7c26d1df7b7e401846e6134bee70364e91664504b7a9aa52a\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/IProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IProtocolVersion\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the semantic Aragon OSx protocol version number.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IProtocolVersion {\\n /// @notice Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\\n /// @return _version Returns the semantic Aragon OSx protocol version number.\\n /// @dev This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\\n function protocolVersion() external view returns (uint8[3] memory _version);\\n}\\n\",\"keccak256\":\"0x00a4da654d21dc1bdadbdc8bd54bb86c378c56f85e461ccc31303628ea621361\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/ProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IProtocolVersion} from \\\"./IProtocolVersion.sol\\\";\\n\\n/// @title ProtocolVersion\\n/// @author Aragon X - 2023\\n/// @notice An abstract, stateless, non-upgradeable contract providing the current Aragon OSx protocol version number.\\n/// @dev Do not add any new variables to this contract that would shift down storage in the inheritance chain.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract ProtocolVersion is IProtocolVersion {\\n // IMPORTANT: Do not add any storage variable, see the above notice.\\n\\n /// @inheritdoc IProtocolVersion\\n function protocolVersion() public pure returns (uint8[3] memory) {\\n return [1, 4, 0];\\n }\\n}\\n\",\"keccak256\":\"0x3975c937be935f687c6b6b8f379071232681e98cf04b175d72781b819ea52bdb\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[{"astId":11115,"contract":"src/mocks/permission/condition/PermissionConditionMock.sol:PermissionConditionMock","label":"answer","offset":0,"slot":"0","type":"t_bool"}],"types":{"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"}}},"userdoc":{"kind":"user","methods":{"isGranted(address,address,bytes32,bytes)":{"notice":"Checks if a call is permitted."},"protocolVersion()":{"notice":"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with."},"supportsInterface(bytes4)":{"notice":"Checks if an interface is supported by this or its parent contract."}},"notice":"A mock permission condition that can be set to permit or deny every call.","version":1}}},"src/mocks/permission/condition/PermissionConditionUpgradeableMock.sol":{"PermissionConditionUpgradeableMock":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"inputs":[],"name":"answer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_where","type":"address"},{"internalType":"address","name":"_who","type":"address"},{"internalType":"bytes32","name":"_permissionId","type":"bytes32"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"isGranted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"protocolVersion","outputs":[{"internalType":"uint8[3]","name":"","type":"uint8[3]"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_answer","type":"bool"}],"name":"setAnswer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"DO NOT USE IN PRODUCTION!","kind":"dev","methods":{"isGranted(address,address,bytes32,bytes)":{"params":{"_data":"Optional data passed to the `PermissionCondition` implementation.","_permissionId":"The permission identifier.","_where":"The address of the target contract.","_who":"The address (EOA or contract) for which the permissions are checked."},"returns":{"_0":"Returns true if the call is permitted."}},"protocolVersion()":{"details":"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.","returns":{"_0":"Returns the semantic Aragon OSx protocol version number."}},"supportsInterface(bytes4)":{"params":{"_interfaceId":"The ID of the interface."},"returns":{"_0":"Returns `true` if the interface is supported."}}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b5061033d806100206000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80632ae9c600116100505780632ae9c600146100b057806385bb7d69146100c5578063f01b7dd2146100d257600080fd5b806301ffc9a71461006c5780632675fdd014610094575b600080fd5b61007f61007a36600461018e565b6100f5565b60405190151581526020015b60405180910390f35b61007f6100a23660046101fe565b60335460ff16949350505050565b6100b8610146565b60405161008b91906102da565b60335461007f9060ff1681565b6100f36100e036600461030e565b6033805460ff1916911515919091179055565b005b60006001600160e01b031982166302675fdd60e41b148061012557506001600160e01b03198216621574e360e91b145b8061014057506301ffc9a760e01b6001600160e01b03198316145b92915050565b61014e610170565b5060408051606081018252600181526004602082015260009181019190915290565b60405180606001604052806003906020820280368337509192915050565b6000602082840312156101a057600080fd5b81356001600160e01b0319811681146101b857600080fd5b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146101e357600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b6000806000806080858703121561021457600080fd5b61021d856101bf565b935061022b602086016101bf565b925060408501359150606085013567ffffffffffffffff8082111561024f57600080fd5b818701915087601f83011261026357600080fd5b813581811115610275576102756101e8565b604051601f8201601f19908116603f0116810190838211818310171561029d5761029d6101e8565b816040528281528a60208487010111156102b657600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b60608101818360005b600381101561030557815160ff168352602092830192909101906001016102e3565b50505092915050565b60006020828403121561032057600080fd5b813580151581146101b857600080fdfea164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x33D DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x67 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x2AE9C600 GT PUSH2 0x50 JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0xB0 JUMPI DUP1 PUSH4 0x85BB7D69 EQ PUSH2 0xC5 JUMPI DUP1 PUSH4 0xF01B7DD2 EQ PUSH2 0xD2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x6C JUMPI DUP1 PUSH4 0x2675FDD0 EQ PUSH2 0x94 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7F PUSH2 0x7A CALLDATASIZE PUSH1 0x4 PUSH2 0x18E JUMP JUMPDEST PUSH2 0xF5 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x7F PUSH2 0xA2 CALLDATASIZE PUSH1 0x4 PUSH2 0x1FE JUMP JUMPDEST PUSH1 0x33 SLOAD PUSH1 0xFF AND SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0xB8 PUSH2 0x146 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x8B SWAP2 SWAP1 PUSH2 0x2DA JUMP JUMPDEST PUSH1 0x33 SLOAD PUSH2 0x7F SWAP1 PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0xF3 PUSH2 0xE0 CALLDATASIZE PUSH1 0x4 PUSH2 0x30E JUMP JUMPDEST PUSH1 0x33 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x2675FDD PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x125 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x140 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x14E PUSH2 0x170 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x1B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x1E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x214 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x21D DUP6 PUSH2 0x1BF JUMP JUMPDEST SWAP4 POP PUSH2 0x22B PUSH1 0x20 DUP7 ADD PUSH2 0x1BF JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x24F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x263 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x275 JUMPI PUSH2 0x275 PUSH2 0x1E8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x29D JUMPI PUSH2 0x29D PUSH2 0x1E8 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP11 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x2B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0x305 JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x2E3 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x320 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x1B8 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"335:427:47:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@answer_11157":{"entryPoint":null,"id":11157,"parameterSlots":0,"returnSlots":0},"@isGranted_11189":{"entryPoint":null,"id":11189,"parameterSlots":4,"returnSlots":1},"@protocolVersion_14765":{"entryPoint":326,"id":14765,"parameterSlots":0,"returnSlots":1},"@setAnswer_11167":{"entryPoint":null,"id":11167,"parameterSlots":1,"returnSlots":0},"@supportsInterface_13322":{"entryPoint":245,"id":13322,"parameterSlots":1,"returnSlots":1},"@supportsInterface_2816":{"entryPoint":null,"id":2816,"parameterSlots":1,"returnSlots":1},"abi_decode_address":{"entryPoint":447,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_tuple_t_addresst_addresst_bytes32t_bytes_memory_ptr":{"entryPoint":510,"id":null,"parameterSlots":2,"returnSlots":4},"abi_decode_tuple_t_bool":{"entryPoint":782,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes4":{"entryPoint":398,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed":{"entryPoint":730,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"panic_error_0x41":{"entryPoint":488,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:2754:92","statements":[{"nodeType":"YulBlock","src":"6:3:92","statements":[]},{"body":{"nodeType":"YulBlock","src":"83:217:92","statements":[{"body":{"nodeType":"YulBlock","src":"129:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"138:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"141:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"131:6:92"},"nodeType":"YulFunctionCall","src":"131:12:92"},"nodeType":"YulExpressionStatement","src":"131:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"104:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"113:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"100:3:92"},"nodeType":"YulFunctionCall","src":"100:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"125:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"96:3:92"},"nodeType":"YulFunctionCall","src":"96:32:92"},"nodeType":"YulIf","src":"93:52:92"},{"nodeType":"YulVariableDeclaration","src":"154:36:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"180:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"167:12:92"},"nodeType":"YulFunctionCall","src":"167:23:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"158:5:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"254:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"263:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"266:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"256:6:92"},"nodeType":"YulFunctionCall","src":"256:12:92"},"nodeType":"YulExpressionStatement","src":"256:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"212:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"223:5:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"234:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"239:10:92","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"230:3:92"},"nodeType":"YulFunctionCall","src":"230:20:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"219:3:92"},"nodeType":"YulFunctionCall","src":"219:32:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"209:2:92"},"nodeType":"YulFunctionCall","src":"209:43:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"202:6:92"},"nodeType":"YulFunctionCall","src":"202:51:92"},"nodeType":"YulIf","src":"199:71:92"},{"nodeType":"YulAssignment","src":"279:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"289:5:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"279:6:92"}]}]},"name":"abi_decode_tuple_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"49:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"60:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"72:6:92","type":""}],"src":"14:286:92"},{"body":{"nodeType":"YulBlock","src":"400:92:92","statements":[{"nodeType":"YulAssignment","src":"410:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"422:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"433:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"418:3:92"},"nodeType":"YulFunctionCall","src":"418:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"410:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"452:9:92"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"477:6:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"470:6:92"},"nodeType":"YulFunctionCall","src":"470:14:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"463:6:92"},"nodeType":"YulFunctionCall","src":"463:22:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"445:6:92"},"nodeType":"YulFunctionCall","src":"445:41:92"},"nodeType":"YulExpressionStatement","src":"445:41:92"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"369:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"380:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"391:4:92","type":""}],"src":"305:187:92"},{"body":{"nodeType":"YulBlock","src":"546:147:92","statements":[{"nodeType":"YulAssignment","src":"556:29:92","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"578:6:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"565:12:92"},"nodeType":"YulFunctionCall","src":"565:20:92"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"556:5:92"}]},{"body":{"nodeType":"YulBlock","src":"671:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"680:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"683:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"673:6:92"},"nodeType":"YulFunctionCall","src":"673:12:92"},"nodeType":"YulExpressionStatement","src":"673:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"607:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"618:5:92"},{"kind":"number","nodeType":"YulLiteral","src":"625:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"614:3:92"},"nodeType":"YulFunctionCall","src":"614:54:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"604:2:92"},"nodeType":"YulFunctionCall","src":"604:65:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"597:6:92"},"nodeType":"YulFunctionCall","src":"597:73:92"},"nodeType":"YulIf","src":"594:93:92"}]},"name":"abi_decode_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"525:6:92","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"536:5:92","type":""}],"src":"497:196:92"},{"body":{"nodeType":"YulBlock","src":"730:95:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"747:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"754:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"759:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"750:3:92"},"nodeType":"YulFunctionCall","src":"750:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"740:6:92"},"nodeType":"YulFunctionCall","src":"740:31:92"},"nodeType":"YulExpressionStatement","src":"740:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"787:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"790:4:92","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"780:6:92"},"nodeType":"YulFunctionCall","src":"780:15:92"},"nodeType":"YulExpressionStatement","src":"780:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"811:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"814:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"804:6:92"},"nodeType":"YulFunctionCall","src":"804:15:92"},"nodeType":"YulExpressionStatement","src":"804:15:92"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"698:127:92"},{"body":{"nodeType":"YulBlock","src":"960:1008:92","statements":[{"body":{"nodeType":"YulBlock","src":"1007:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1016:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1019:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1009:6:92"},"nodeType":"YulFunctionCall","src":"1009:12:92"},"nodeType":"YulExpressionStatement","src":"1009:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"981:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"990:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"977:3:92"},"nodeType":"YulFunctionCall","src":"977:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"1002:3:92","type":"","value":"128"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"973:3:92"},"nodeType":"YulFunctionCall","src":"973:33:92"},"nodeType":"YulIf","src":"970:53:92"},{"nodeType":"YulAssignment","src":"1032:39:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1061:9:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"1042:18:92"},"nodeType":"YulFunctionCall","src":"1042:29:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1032:6:92"}]},{"nodeType":"YulAssignment","src":"1080:48:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1113:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1124:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1109:3:92"},"nodeType":"YulFunctionCall","src":"1109:18:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"1090:18:92"},"nodeType":"YulFunctionCall","src":"1090:38:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1080:6:92"}]},{"nodeType":"YulAssignment","src":"1137:42:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1164:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1175:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1160:3:92"},"nodeType":"YulFunctionCall","src":"1160:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1147:12:92"},"nodeType":"YulFunctionCall","src":"1147:32:92"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"1137:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"1188:46:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1219:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1230:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1215:3:92"},"nodeType":"YulFunctionCall","src":"1215:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1202:12:92"},"nodeType":"YulFunctionCall","src":"1202:32:92"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1192:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"1243:28:92","value":{"kind":"number","nodeType":"YulLiteral","src":"1253:18:92","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"1247:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"1298:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1307:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1310:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1300:6:92"},"nodeType":"YulFunctionCall","src":"1300:12:92"},"nodeType":"YulExpressionStatement","src":"1300:12:92"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1286:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"1294:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1283:2:92"},"nodeType":"YulFunctionCall","src":"1283:14:92"},"nodeType":"YulIf","src":"1280:34:92"},{"nodeType":"YulVariableDeclaration","src":"1323:32:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1337:9:92"},{"name":"offset","nodeType":"YulIdentifier","src":"1348:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1333:3:92"},"nodeType":"YulFunctionCall","src":"1333:22:92"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"1327:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"1403:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1412:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1415:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1405:6:92"},"nodeType":"YulFunctionCall","src":"1405:12:92"},"nodeType":"YulExpressionStatement","src":"1405:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"1382:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"1386:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1378:3:92"},"nodeType":"YulFunctionCall","src":"1378:13:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1393:7:92"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1374:3:92"},"nodeType":"YulFunctionCall","src":"1374:27:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1367:6:92"},"nodeType":"YulFunctionCall","src":"1367:35:92"},"nodeType":"YulIf","src":"1364:55:92"},{"nodeType":"YulVariableDeclaration","src":"1428:26:92","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"1451:2:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1438:12:92"},"nodeType":"YulFunctionCall","src":"1438:16:92"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"1432:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"1477:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"1479:16:92"},"nodeType":"YulFunctionCall","src":"1479:18:92"},"nodeType":"YulExpressionStatement","src":"1479:18:92"}]},"condition":{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"1469:2:92"},{"name":"_1","nodeType":"YulIdentifier","src":"1473:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1466:2:92"},"nodeType":"YulFunctionCall","src":"1466:10:92"},"nodeType":"YulIf","src":"1463:36:92"},{"nodeType":"YulVariableDeclaration","src":"1508:17:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1522:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"1518:3:92"},"nodeType":"YulFunctionCall","src":"1518:7:92"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"1512:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"1534:23:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1554:2:92","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1548:5:92"},"nodeType":"YulFunctionCall","src":"1548:9:92"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"1538:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"1566:71:92","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1588:6:92"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"1612:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"1616:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1608:3:92"},"nodeType":"YulFunctionCall","src":"1608:13:92"},{"name":"_4","nodeType":"YulIdentifier","src":"1623:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1604:3:92"},"nodeType":"YulFunctionCall","src":"1604:22:92"},{"kind":"number","nodeType":"YulLiteral","src":"1628:2:92","type":"","value":"63"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1600:3:92"},"nodeType":"YulFunctionCall","src":"1600:31:92"},{"name":"_4","nodeType":"YulIdentifier","src":"1633:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1596:3:92"},"nodeType":"YulFunctionCall","src":"1596:40:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1584:3:92"},"nodeType":"YulFunctionCall","src":"1584:53:92"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"1570:10:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"1696:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"1698:16:92"},"nodeType":"YulFunctionCall","src":"1698:18:92"},"nodeType":"YulExpressionStatement","src":"1698:18:92"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"1655:10:92"},{"name":"_1","nodeType":"YulIdentifier","src":"1667:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1652:2:92"},"nodeType":"YulFunctionCall","src":"1652:18:92"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"1675:10:92"},{"name":"memPtr","nodeType":"YulIdentifier","src":"1687:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"1672:2:92"},"nodeType":"YulFunctionCall","src":"1672:22:92"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"1649:2:92"},"nodeType":"YulFunctionCall","src":"1649:46:92"},"nodeType":"YulIf","src":"1646:72:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1734:2:92","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"1738:10:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1727:6:92"},"nodeType":"YulFunctionCall","src":"1727:22:92"},"nodeType":"YulExpressionStatement","src":"1727:22:92"},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1765:6:92"},{"name":"_3","nodeType":"YulIdentifier","src":"1773:2:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1758:6:92"},"nodeType":"YulFunctionCall","src":"1758:18:92"},"nodeType":"YulExpressionStatement","src":"1758:18:92"},{"body":{"nodeType":"YulBlock","src":"1822:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1831:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1834:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1824:6:92"},"nodeType":"YulFunctionCall","src":"1824:12:92"},"nodeType":"YulExpressionStatement","src":"1824:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"1799:2:92"},{"name":"_3","nodeType":"YulIdentifier","src":"1803:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1795:3:92"},"nodeType":"YulFunctionCall","src":"1795:11:92"},{"kind":"number","nodeType":"YulLiteral","src":"1808:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1791:3:92"},"nodeType":"YulFunctionCall","src":"1791:20:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1813:7:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1788:2:92"},"nodeType":"YulFunctionCall","src":"1788:33:92"},"nodeType":"YulIf","src":"1785:53:92"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1864:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"1872:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1860:3:92"},"nodeType":"YulFunctionCall","src":"1860:15:92"},{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"1881:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"1885:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1877:3:92"},"nodeType":"YulFunctionCall","src":"1877:11:92"},{"name":"_3","nodeType":"YulIdentifier","src":"1890:2:92"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"1847:12:92"},"nodeType":"YulFunctionCall","src":"1847:46:92"},"nodeType":"YulExpressionStatement","src":"1847:46:92"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1917:6:92"},{"name":"_3","nodeType":"YulIdentifier","src":"1925:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1913:3:92"},"nodeType":"YulFunctionCall","src":"1913:15:92"},{"kind":"number","nodeType":"YulLiteral","src":"1930:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1909:3:92"},"nodeType":"YulFunctionCall","src":"1909:24:92"},{"kind":"number","nodeType":"YulLiteral","src":"1935:1:92","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1902:6:92"},"nodeType":"YulFunctionCall","src":"1902:35:92"},"nodeType":"YulExpressionStatement","src":"1902:35:92"},{"nodeType":"YulAssignment","src":"1946:16:92","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"1956:6:92"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"1946:6:92"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_bytes32t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"902:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"913:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"925:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"933:6:92","type":""},{"name":"value2","nodeType":"YulTypedName","src":"941:6:92","type":""},{"name":"value3","nodeType":"YulTypedName","src":"949:6:92","type":""}],"src":"830:1138:92"},{"body":{"nodeType":"YulBlock","src":"2116:358:92","statements":[{"nodeType":"YulAssignment","src":"2126:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2138:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2149:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2134:3:92"},"nodeType":"YulFunctionCall","src":"2134:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2126:4:92"}]},{"nodeType":"YulVariableDeclaration","src":"2161:20:92","value":{"name":"headStart","nodeType":"YulIdentifier","src":"2172:9:92"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"2165:3:92","type":""}]},{"nodeType":"YulAssignment","src":"2190:16:92","value":{"name":"headStart","nodeType":"YulIdentifier","src":"2197:9:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"2190:3:92"}]},{"nodeType":"YulVariableDeclaration","src":"2215:20:92","value":{"name":"value0","nodeType":"YulIdentifier","src":"2229:6:92"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"2219:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2244:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"2253:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"2248:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"2310:158:92","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2331:3:92"},{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"2346:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2340:5:92"},"nodeType":"YulFunctionCall","src":"2340:13:92"},{"kind":"number","nodeType":"YulLiteral","src":"2355:4:92","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2336:3:92"},"nodeType":"YulFunctionCall","src":"2336:24:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2324:6:92"},"nodeType":"YulFunctionCall","src":"2324:37:92"},"nodeType":"YulExpressionStatement","src":"2324:37:92"},{"nodeType":"YulVariableDeclaration","src":"2374:14:92","value":{"kind":"number","nodeType":"YulLiteral","src":"2384:4:92","type":"","value":"0x20"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"2378:2:92","type":""}]},{"nodeType":"YulAssignment","src":"2401:19:92","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2412:3:92"},{"name":"_1","nodeType":"YulIdentifier","src":"2417:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2408:3:92"},"nodeType":"YulFunctionCall","src":"2408:12:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"2401:3:92"}]},{"nodeType":"YulAssignment","src":"2433:25:92","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"2447:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"2455:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2443:3:92"},"nodeType":"YulFunctionCall","src":"2443:15:92"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"2433:6:92"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"2274:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"2277:4:92","type":"","value":"0x03"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2271:2:92"},"nodeType":"YulFunctionCall","src":"2271:11:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"2283:18:92","statements":[{"nodeType":"YulAssignment","src":"2285:14:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"2294:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"2297:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2290:3:92"},"nodeType":"YulFunctionCall","src":"2290:9:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"2285:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"2267:3:92","statements":[]},"src":"2263:205:92"}]},"name":"abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2085:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"2096:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2107:4:92","type":""}],"src":"1973:501:92"},{"body":{"nodeType":"YulBlock","src":"2546:206:92","statements":[{"body":{"nodeType":"YulBlock","src":"2592:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2601:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2604:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2594:6:92"},"nodeType":"YulFunctionCall","src":"2594:12:92"},"nodeType":"YulExpressionStatement","src":"2594:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2567:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"2576:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2563:3:92"},"nodeType":"YulFunctionCall","src":"2563:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"2588:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2559:3:92"},"nodeType":"YulFunctionCall","src":"2559:32:92"},"nodeType":"YulIf","src":"2556:52:92"},{"nodeType":"YulVariableDeclaration","src":"2617:36:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2643:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2630:12:92"},"nodeType":"YulFunctionCall","src":"2630:23:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"2621:5:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"2706:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2715:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2718:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2708:6:92"},"nodeType":"YulFunctionCall","src":"2708:12:92"},"nodeType":"YulExpressionStatement","src":"2708:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2675:5:92"},{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2696:5:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2689:6:92"},"nodeType":"YulFunctionCall","src":"2689:13:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2682:6:92"},"nodeType":"YulFunctionCall","src":"2682:21:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"2672:2:92"},"nodeType":"YulFunctionCall","src":"2672:32:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2665:6:92"},"nodeType":"YulFunctionCall","src":"2665:40:92"},"nodeType":"YulIf","src":"2662:60:92"},{"nodeType":"YulAssignment","src":"2731:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"2741:5:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2731:6:92"}]}]},"name":"abi_decode_tuple_t_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2512:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2523:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2535:6:92","type":""}],"src":"2479:273:92"}]},"contents":"{\n { }\n function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n if iszero(eq(value, and(value, shl(224, 0xffffffff)))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function abi_decode_address(offset) -> value\n {\n value := calldataload(offset)\n if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n }\n function panic_error_0x41()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function abi_decode_tuple_t_addresst_addresst_bytes32t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n {\n if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := abi_decode_address(add(headStart, 32))\n value2 := calldataload(add(headStart, 64))\n let offset := calldataload(add(headStart, 96))\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n let _2 := add(headStart, offset)\n if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n let _3 := calldataload(_2)\n if gt(_3, _1) { panic_error_0x41() }\n let _4 := not(31)\n let memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n mstore(memPtr, _3)\n if gt(add(add(_2, _3), 32), dataEnd) { revert(0, 0) }\n calldatacopy(add(memPtr, 32), add(_2, 32), _3)\n mstore(add(add(memPtr, _3), 32), 0)\n value3 := memPtr\n }\n function abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 96)\n let pos := headStart\n pos := headStart\n let srcPtr := value0\n let i := 0\n for { } lt(i, 0x03) { i := add(i, 1) }\n {\n mstore(pos, and(mload(srcPtr), 0xff))\n let _1 := 0x20\n pos := add(pos, _1)\n srcPtr := add(srcPtr, _1)\n }\n }\n function abi_decode_tuple_t_bool(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n value0 := value\n }\n}","id":92,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100675760003560e01c80632ae9c600116100505780632ae9c600146100b057806385bb7d69146100c5578063f01b7dd2146100d257600080fd5b806301ffc9a71461006c5780632675fdd014610094575b600080fd5b61007f61007a36600461018e565b6100f5565b60405190151581526020015b60405180910390f35b61007f6100a23660046101fe565b60335460ff16949350505050565b6100b8610146565b60405161008b91906102da565b60335461007f9060ff1681565b6100f36100e036600461030e565b6033805460ff1916911515919091179055565b005b60006001600160e01b031982166302675fdd60e41b148061012557506001600160e01b03198216621574e360e91b145b8061014057506301ffc9a760e01b6001600160e01b03198316145b92915050565b61014e610170565b5060408051606081018252600181526004602082015260009181019190915290565b60405180606001604052806003906020820280368337509192915050565b6000602082840312156101a057600080fd5b81356001600160e01b0319811681146101b857600080fd5b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146101e357600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b6000806000806080858703121561021457600080fd5b61021d856101bf565b935061022b602086016101bf565b925060408501359150606085013567ffffffffffffffff8082111561024f57600080fd5b818701915087601f83011261026357600080fd5b813581811115610275576102756101e8565b604051601f8201601f19908116603f0116810190838211818310171561029d5761029d6101e8565b816040528281528a60208487010111156102b657600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b60608101818360005b600381101561030557815160ff168352602092830192909101906001016102e3565b50505092915050565b60006020828403121561032057600080fd5b813580151581146101b857600080fdfea164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x67 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x2AE9C600 GT PUSH2 0x50 JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0xB0 JUMPI DUP1 PUSH4 0x85BB7D69 EQ PUSH2 0xC5 JUMPI DUP1 PUSH4 0xF01B7DD2 EQ PUSH2 0xD2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x6C JUMPI DUP1 PUSH4 0x2675FDD0 EQ PUSH2 0x94 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7F PUSH2 0x7A CALLDATASIZE PUSH1 0x4 PUSH2 0x18E JUMP JUMPDEST PUSH2 0xF5 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x7F PUSH2 0xA2 CALLDATASIZE PUSH1 0x4 PUSH2 0x1FE JUMP JUMPDEST PUSH1 0x33 SLOAD PUSH1 0xFF AND SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0xB8 PUSH2 0x146 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x8B SWAP2 SWAP1 PUSH2 0x2DA JUMP JUMPDEST PUSH1 0x33 SLOAD PUSH2 0x7F SWAP1 PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0xF3 PUSH2 0xE0 CALLDATASIZE PUSH1 0x4 PUSH2 0x30E JUMP JUMPDEST PUSH1 0x33 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x2675FDD PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x125 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x140 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x14E PUSH2 0x170 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x1B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x1E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x214 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x21D DUP6 PUSH2 0x1BF JUMP JUMPDEST SWAP4 POP PUSH2 0x22B PUSH1 0x20 DUP7 ADD PUSH2 0x1BF JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x24F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x263 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x275 JUMPI PUSH2 0x275 PUSH2 0x1E8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x29D JUMPI PUSH2 0x29D PUSH2 0x1E8 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP11 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x2B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0x305 JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x2E3 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x320 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x1B8 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"335:427:47:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1011:301:71;;;;;;:::i;:::-;;:::i;:::-;;;470:14:92;;463:22;445:41;;433:2;418:18;1011:301:71;;;;;;;;525:235:47;;;;;;:::i;:::-;747:6;;;;525:235;;;;;;;631:98:90;;;:::i;:::-;;;;;;;:::i;419:18:47:-;;;;;;;;;444:75;;;;;;:::i;:::-;496:6;:16;;-1:-1:-1;;496:16:47;;;;;;;;;;444:75;;;1011:301:71;1097:4;-1:-1:-1;;;;;;1132:54:71;;-1:-1:-1;;;1132:54:71;;:120;;-1:-1:-1;;;;;;;1202:50:71;;-1:-1:-1;;;1202:50:71;1132:120;:173;;;-1:-1:-1;;;;;;;;;;1189:51:11;;;1268:37:71;1113:192;1011:301;-1:-1:-1;;1011:301:71:o;631:98:90:-;679:15;;:::i;:::-;-1:-1:-1;706:16:90;;;;;;;;714:1;706:16;;717:1;706:16;;;;-1:-1:-1;706:16:90;;;;;;;;631:98::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:286:92:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:92;;209:43;;199:71;;266:1;263;256:12;199:71;289:5;14:286;-1:-1:-1;;;14:286:92:o;497:196::-;565:20;;625:42;614:54;;604:65;;594:93;;683:1;680;673:12;594:93;497:196;;;:::o;698:127::-;759:10;754:3;750:20;747:1;740:31;790:4;787:1;780:15;814:4;811:1;804:15;830:1138;925:6;933;941;949;1002:3;990:9;981:7;977:23;973:33;970:53;;;1019:1;1016;1009:12;970:53;1042:29;1061:9;1042:29;:::i;:::-;1032:39;;1090:38;1124:2;1113:9;1109:18;1090:38;:::i;:::-;1080:48;;1175:2;1164:9;1160:18;1147:32;1137:42;;1230:2;1219:9;1215:18;1202:32;1253:18;1294:2;1286:6;1283:14;1280:34;;;1310:1;1307;1300:12;1280:34;1348:6;1337:9;1333:22;1323:32;;1393:7;1386:4;1382:2;1378:13;1374:27;1364:55;;1415:1;1412;1405:12;1364:55;1451:2;1438:16;1473:2;1469;1466:10;1463:36;;;1479:18;;:::i;:::-;1554:2;1548:9;1522:2;1608:13;;-1:-1:-1;;1604:22:92;;;1628:2;1600:31;1596:40;1584:53;;;1652:18;;;1672:22;;;1649:46;1646:72;;;1698:18;;:::i;:::-;1738:10;1734:2;1727:22;1773:2;1765:6;1758:18;1813:7;1808:2;1803;1799;1795:11;1791:20;1788:33;1785:53;;;1834:1;1831;1824:12;1785:53;1890:2;1885;1881;1877:11;1872:2;1864:6;1860:15;1847:46;1935:1;1930:2;1925;1917:6;1913:15;1909:24;1902:35;1956:6;1946:16;;;;;;;830:1138;;;;;;;:::o;1973:501::-;2149:2;2134:18;;2138:9;2229:6;2107:4;2263:205;2277:4;2274:1;2271:11;2263:205;;;2340:13;;2355:4;2336:24;2324:37;;2384:4;2408:12;;;;2443:15;;;;2297:1;2290:9;2263:205;;;2267:3;;;1973:501;;;;:::o;2479:273::-;2535:6;2588:2;2576:9;2567:7;2563:23;2559:32;2556:52;;;2604:1;2601;2594:12;2556:52;2643:9;2630:23;2696:5;2689:13;2682:21;2675:5;2672:32;2662:60;;2718:1;2715;2708:12"},"gasEstimates":{"creation":{"codeDepositCost":"165800","executionCost":"208","totalCost":"166008"},"external":{"answer()":"2321","isGranted(address,address,bytes32,bytes)":"infinite","protocolVersion()":"infinite","setAnswer(bool)":"24526","supportsInterface(bytes4)":"482"}},"methodIdentifiers":{"answer()":"85bb7d69","isGranted(address,address,bytes32,bytes)":"2675fdd0","protocolVersion()":"2ae9c600","setAnswer(bool)":"f01b7dd2","supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"answer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_who\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_permissionId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"isGranted\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"protocolVersion\",\"outputs\":[{\"internalType\":\"uint8[3]\",\"name\":\"\",\"type\":\"uint8[3]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"_answer\",\"type\":\"bool\"}],\"name\":\"setAnswer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"DO NOT USE IN PRODUCTION!\",\"kind\":\"dev\",\"methods\":{\"isGranted(address,address,bytes32,bytes)\":{\"params\":{\"_data\":\"Optional data passed to the `PermissionCondition` implementation.\",\"_permissionId\":\"The permission identifier.\",\"_where\":\"The address of the target contract.\",\"_who\":\"The address (EOA or contract) for which the permissions are checked.\"},\"returns\":{\"_0\":\"Returns true if the call is permitted.\"}},\"protocolVersion()\":{\"details\":\"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\",\"returns\":{\"_0\":\"Returns the semantic Aragon OSx protocol version number.\"}},\"supportsInterface(bytes4)\":{\"params\":{\"_interfaceId\":\"The ID of the interface.\"},\"returns\":{\"_0\":\"Returns `true` if the interface is supported.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"isGranted(address,address,bytes32,bytes)\":{\"notice\":\"Checks if a call is permitted.\"},\"protocolVersion()\":{\"notice\":\"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Checks if an interface is supported by this or its parent contract.\"}},\"notice\":\"A mock permission condition that can be set to permit or deny every call and be upgraded by everyone.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/mocks/permission/condition/PermissionConditionUpgradeableMock.sol\":\"PermissionConditionUpgradeableMock\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165Upgradeable.sol\\\";\\nimport {Initializable} from \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165Upgradeable is Initializable, IERC165Upgradeable {\\n function __ERC165_init() internal onlyInitializing {\\n }\\n\\n function __ERC165_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165Upgradeable).interfaceId;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0xd90d7723512df65ae417adaf0801042940f0dabd60039ceeaffe34aa5b238da1\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165Upgradeable {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\"},\"src/mocks/permission/condition/PermissionConditionUpgradeableMock.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {PermissionConditionUpgradeable} from \\\"../../../permission/condition/PermissionConditionUpgradeable.sol\\\";\\n\\n/// @notice A mock permission condition that can be set to permit or deny every call and be upgraded by everyone.\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PermissionConditionUpgradeableMock is PermissionConditionUpgradeable {\\n bool public answer;\\n\\n function setAnswer(bool _answer) external {\\n answer = _answer;\\n }\\n\\n function isGranted(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes memory _data\\n ) external view returns (bool) {\\n (_where, _who, _permissionId, _data);\\n return answer;\\n }\\n}\\n\",\"keccak256\":\"0x3bae6e018864efee68050c29aea4770c492a5351db93aee7601680067a754cf0\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/condition/IPermissionCondition.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IPermissionCondition\\n/// @author Aragon X - 2021-2023\\n/// @notice An interface to be implemented to support custom permission logic.\\n/// @dev To attach a condition to a permission, the `grantWithCondition` function must be used and refer to the implementing contract's address with the `condition` argument.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IPermissionCondition {\\n /// @notice Checks if a call is permitted.\\n /// @param _where The address of the target contract.\\n /// @param _who The address (EOA or contract) for which the permissions are checked.\\n /// @param _permissionId The permission identifier.\\n /// @param _data Optional data passed to the `PermissionCondition` implementation.\\n /// @return isPermitted Returns true if the call is permitted.\\n function isGranted(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes calldata _data\\n ) external view returns (bool isPermitted);\\n}\\n\",\"keccak256\":\"0xc3280622bdb57856f0b20ded71537fc99b344d1e6a0430abfaca8304a9ece922\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/condition/PermissionConditionUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ERC165Upgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\\\";\\n\\nimport {IProtocolVersion} from \\\"../../utils/versioning/IProtocolVersion.sol\\\";\\nimport {ProtocolVersion} from \\\"../../utils/versioning/ProtocolVersion.sol\\\";\\nimport {IPermissionCondition} from \\\"./IPermissionCondition.sol\\\";\\n\\n/// @title PermissionConditionUpgradeable\\n/// @author Aragon X - 2023\\n/// @notice An abstract contract for upgradeable or cloneable contracts to inherit from and to support customary permissions depending on arbitrary on-chain state.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract PermissionConditionUpgradeable is\\n ERC165Upgradeable,\\n IPermissionCondition,\\n ProtocolVersion\\n{\\n /// @notice Checks if an interface is supported by this or its parent contract.\\n /// @param _interfaceId The ID of the interface.\\n /// @return Returns `true` if the interface is supported.\\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\\n return\\n _interfaceId == type(IPermissionCondition).interfaceId ||\\n _interfaceId == type(IProtocolVersion).interfaceId ||\\n super.supportsInterface(_interfaceId);\\n }\\n}\\n\",\"keccak256\":\"0x0d4eb8813760958455448f862015209d01904cc2a4fa15ccb5c85ca13548e275\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/IProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IProtocolVersion\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the semantic Aragon OSx protocol version number.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IProtocolVersion {\\n /// @notice Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\\n /// @return _version Returns the semantic Aragon OSx protocol version number.\\n /// @dev This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\\n function protocolVersion() external view returns (uint8[3] memory _version);\\n}\\n\",\"keccak256\":\"0x00a4da654d21dc1bdadbdc8bd54bb86c378c56f85e461ccc31303628ea621361\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/ProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IProtocolVersion} from \\\"./IProtocolVersion.sol\\\";\\n\\n/// @title ProtocolVersion\\n/// @author Aragon X - 2023\\n/// @notice An abstract, stateless, non-upgradeable contract providing the current Aragon OSx protocol version number.\\n/// @dev Do not add any new variables to this contract that would shift down storage in the inheritance chain.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract ProtocolVersion is IProtocolVersion {\\n // IMPORTANT: Do not add any storage variable, see the above notice.\\n\\n /// @inheritdoc IProtocolVersion\\n function protocolVersion() public pure returns (uint8[3] memory) {\\n return [1, 4, 0];\\n }\\n}\\n\",\"keccak256\":\"0x3975c937be935f687c6b6b8f379071232681e98cf04b175d72781b819ea52bdb\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[{"astId":372,"contract":"src/mocks/permission/condition/PermissionConditionUpgradeableMock.sol:PermissionConditionUpgradeableMock","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":375,"contract":"src/mocks/permission/condition/PermissionConditionUpgradeableMock.sol:PermissionConditionUpgradeableMock","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":2821,"contract":"src/mocks/permission/condition/PermissionConditionUpgradeableMock.sol:PermissionConditionUpgradeableMock","label":"__gap","offset":0,"slot":"1","type":"t_array(t_uint256)50_storage"},{"astId":11157,"contract":"src/mocks/permission/condition/PermissionConditionUpgradeableMock.sol:PermissionConditionUpgradeableMock","label":"answer","offset":0,"slot":"51","type":"t_bool"}],"types":{"t_array(t_uint256)50_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[50]","numberOfBytes":"1600"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"kind":"user","methods":{"isGranted(address,address,bytes32,bytes)":{"notice":"Checks if a call is permitted."},"protocolVersion()":{"notice":"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with."},"supportsInterface(bytes4)":{"notice":"Checks if an interface is supported by this or its parent contract."}},"notice":"A mock permission condition that can be set to permit or deny every call and be upgraded by everyone.","version":1}}},"src/mocks/plugin/PluginCloneableMock.sol":{"PluginCloneableMockBad":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"inputs":[],"name":"dao","outputs":[{"internalType":"contract IDAO","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IDAO","name":"_dao","type":"address"}],"name":"notAnInitializer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pluginType","outputs":[{"internalType":"enum IPlugin.PluginType","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"protocolVersion","outputs":[{"internalType":"uint8[3]","name":"","type":"uint8[3]"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"state1","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"DO NOT USE IN PRODUCTION!","kind":"dev","methods":{"dao()":{"returns":{"_0":"The DAO contract."}},"protocolVersion()":{"details":"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.","returns":{"_0":"Returns the semantic Aragon OSx protocol version number."}},"supportsInterface(bytes4)":{"params":{"_interfaceId":"The ID of the interface."},"returns":{"_0":"Returns `true` if the interface is supported."}}},"version":1},"evm":{"bytecode":{"functionDebugData":{"@_13445":{"entryPoint":null,"id":13445,"parameterSlots":0,"returnSlots":0},"@_disableInitializers_515":{"entryPoint":30,"id":515,"parameterSlots":0,"returnSlots":0},"abi_encode_tuple_t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:608:92","statements":[{"nodeType":"YulBlock","src":"6:3:92","statements":[]},{"body":{"nodeType":"YulBlock","src":"188:229:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"205:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"216:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"198:6:92"},"nodeType":"YulFunctionCall","src":"198:21:92"},"nodeType":"YulExpressionStatement","src":"198:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"239:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"250:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"235:3:92"},"nodeType":"YulFunctionCall","src":"235:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"255:2:92","type":"","value":"39"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"228:6:92"},"nodeType":"YulFunctionCall","src":"228:30:92"},"nodeType":"YulExpressionStatement","src":"228:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"278:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"289:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"274:3:92"},"nodeType":"YulFunctionCall","src":"274:18:92"},{"hexValue":"496e697469616c697a61626c653a20636f6e747261637420697320696e697469","kind":"string","nodeType":"YulLiteral","src":"294:34:92","type":"","value":"Initializable: contract is initi"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"267:6:92"},"nodeType":"YulFunctionCall","src":"267:62:92"},"nodeType":"YulExpressionStatement","src":"267:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"349:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"360:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"345:3:92"},"nodeType":"YulFunctionCall","src":"345:18:92"},{"hexValue":"616c697a696e67","kind":"string","nodeType":"YulLiteral","src":"365:9:92","type":"","value":"alizing"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"338:6:92"},"nodeType":"YulFunctionCall","src":"338:37:92"},"nodeType":"YulExpressionStatement","src":"338:37:92"},{"nodeType":"YulAssignment","src":"384:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"396:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"407:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"392:3:92"},"nodeType":"YulFunctionCall","src":"392:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"384:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"165:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"179:4:92","type":""}],"src":"14:403:92"},{"body":{"nodeType":"YulBlock","src":"519:87:92","statements":[{"nodeType":"YulAssignment","src":"529:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"541:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"552:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"537:3:92"},"nodeType":"YulFunctionCall","src":"537:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"529:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"571:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"586:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"594:4:92","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"582:3:92"},"nodeType":"YulFunctionCall","src":"582:17:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"564:6:92"},"nodeType":"YulFunctionCall","src":"564:36:92"},"nodeType":"YulExpressionStatement","src":"564:36:92"}]},"name":"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"488:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"499:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"510:4:92","type":""}],"src":"422:184:92"}]},"contents":"{\n { }\n function abi_encode_tuple_t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 39)\n mstore(add(headStart, 64), \"Initializable: contract is initi\")\n mstore(add(headStart, 96), \"alizing\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xff))\n }\n}","id":92,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"608060405234801561001057600080fd5b5061001961001e565b6100dd565b600054610100900460ff161561008a5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116146100db576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6103bf806100ec6000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c806341de68301161005057806341de6830146100dc5780636accab8c146100eb5780638883bbd71461010257600080fd5b806301ffc9a7146100775780632ae9c6001461009f5780634162169f146100b4575b600080fd5b61008a6100853660046102ef565b610117565b60405190151581526020015b60405180910390f35b6100a7610168565b6040516100969190610320565b60655460405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610096565b60016040516100969190610354565b6100f460975481565b604051908152602001610096565b61011561011036600461037c565b610192565b005b60006001600160e01b0319821663041de68360e41b148061014757506001600160e01b03198216621574e360e91b145b8061016257506301ffc9a760e01b6001600160e01b03198316145b92915050565b6101706102d1565b5060408051606081018252600181526004602082015260009181019190915290565b61019b816101a3565b506001609755565b600054610100900460ff166102135760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084015b60405180910390fd5b61021c8161021f565b50565b600054610100900460ff1661028a5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840161020a565b606580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60405180606001604052806003906020820280368337509192915050565b60006020828403121561030157600080fd5b81356001600160e01b03198116811461031957600080fd5b9392505050565b60608101818360005b600381101561034b57815160ff16835260209283019290910190600101610329565b50505092915050565b602081016003831061037657634e487b7160e01b600052602160045260246000fd5b91905290565b60006020828403121561038e57600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461031957600080fdfea164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x19 PUSH2 0x1E JUMP JUMPDEST PUSH2 0xDD JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x8A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x27 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320696E697469 PUSH1 0x44 DUP3 ADD MSTORE PUSH7 0x616C697A696E67 PUSH1 0xC8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xFF SWAP1 DUP2 AND EQ PUSH2 0xDB JUMPI PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST JUMP JUMPDEST PUSH2 0x3BF DUP1 PUSH2 0xEC PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x72 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x41DE6830 GT PUSH2 0x50 JUMPI DUP1 PUSH4 0x41DE6830 EQ PUSH2 0xDC JUMPI DUP1 PUSH4 0x6ACCAB8C EQ PUSH2 0xEB JUMPI DUP1 PUSH4 0x8883BBD7 EQ PUSH2 0x102 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x77 JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0x9F JUMPI DUP1 PUSH4 0x4162169F EQ PUSH2 0xB4 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8A PUSH2 0x85 CALLDATASIZE PUSH1 0x4 PUSH2 0x2EF JUMP JUMPDEST PUSH2 0x117 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xA7 PUSH2 0x168 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x96 SWAP2 SWAP1 PUSH2 0x320 JUMP JUMPDEST PUSH1 0x65 SLOAD PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x96 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x40 MLOAD PUSH2 0x96 SWAP2 SWAP1 PUSH2 0x354 JUMP JUMPDEST PUSH2 0xF4 PUSH1 0x97 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x96 JUMP JUMPDEST PUSH2 0x115 PUSH2 0x110 CALLDATASIZE PUSH1 0x4 PUSH2 0x37C JUMP JUMPDEST PUSH2 0x192 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x41DE683 PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x147 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x162 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x170 PUSH2 0x2D1 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH2 0x19B DUP2 PUSH2 0x1A3 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x97 SSTORE JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x213 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x21C DUP2 PUSH2 0x21F JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x28A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x20A JUMP JUMPDEST PUSH1 0x65 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x301 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x319 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0x34B JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x329 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH1 0x3 DUP4 LT PUSH2 0x376 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 SWAP1 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x38E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x319 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"1087:198:48:-:0;;;;;;;;;;;;-1:-1:-1;1131:22:74;:20;:22::i;:::-;1087:198:48;;5939:280:4;6007:13;;;;;;;6006:14;5998:66;;;;-1:-1:-1;;;5998:66:4;;216:2:92;5998:66:4;;;198:21:92;255:2;235:18;;;228:30;294:34;274:18;;;267:62;-1:-1:-1;;;345:18:92;;;338:37;392:19;;5998:66:4;;;;;;;;6078:12;;6094:15;6078:12;;;:31;6074:139;;6125:12;:30;;-1:-1:-1;;6125:30:4;6140:15;6125:30;;;;;;6174:28;;564:36:92;;;6174:28:4;;552:2:92;537:18;6174:28:4;;;;;;;6074:139;5939:280::o;422:184:92:-;1087:198:48;;;;;;"},"deployedBytecode":{"functionDebugData":{"@__DaoAuthorizableUpgradeable_init_13125":{"entryPoint":543,"id":13125,"parameterSlots":1,"returnSlots":0},"@__PluginCloneable_init_13459":{"entryPoint":419,"id":13459,"parameterSlots":1,"returnSlots":0},"@dao_13135":{"entryPoint":null,"id":13135,"parameterSlots":0,"returnSlots":1},"@notAnInitializer_11268":{"entryPoint":402,"id":11268,"parameterSlots":1,"returnSlots":0},"@pluginType_13471":{"entryPoint":null,"id":13471,"parameterSlots":0,"returnSlots":1},"@protocolVersion_14765":{"entryPoint":360,"id":14765,"parameterSlots":0,"returnSlots":1},"@state1_11253":{"entryPoint":null,"id":11253,"parameterSlots":0,"returnSlots":0},"@supportsInterface_13500":{"entryPoint":279,"id":13500,"parameterSlots":1,"returnSlots":1},"@supportsInterface_2816":{"entryPoint":null,"id":2816,"parameterSlots":1,"returnSlots":1},"abi_decode_tuple_t_bytes4":{"entryPoint":751,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_contract$_IDAO_$10865":{"entryPoint":892,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed":{"entryPoint":800,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_contract$_IDAO_$10865__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_enum$_PluginType_$13330__to_t_uint8__fromStack_reversed":{"entryPoint":852,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:2516:92","statements":[{"nodeType":"YulBlock","src":"6:3:92","statements":[]},{"body":{"nodeType":"YulBlock","src":"83:217:92","statements":[{"body":{"nodeType":"YulBlock","src":"129:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"138:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"141:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"131:6:92"},"nodeType":"YulFunctionCall","src":"131:12:92"},"nodeType":"YulExpressionStatement","src":"131:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"104:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"113:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"100:3:92"},"nodeType":"YulFunctionCall","src":"100:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"125:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"96:3:92"},"nodeType":"YulFunctionCall","src":"96:32:92"},"nodeType":"YulIf","src":"93:52:92"},{"nodeType":"YulVariableDeclaration","src":"154:36:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"180:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"167:12:92"},"nodeType":"YulFunctionCall","src":"167:23:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"158:5:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"254:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"263:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"266:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"256:6:92"},"nodeType":"YulFunctionCall","src":"256:12:92"},"nodeType":"YulExpressionStatement","src":"256:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"212:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"223:5:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"234:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"239:10:92","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"230:3:92"},"nodeType":"YulFunctionCall","src":"230:20:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"219:3:92"},"nodeType":"YulFunctionCall","src":"219:32:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"209:2:92"},"nodeType":"YulFunctionCall","src":"209:43:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"202:6:92"},"nodeType":"YulFunctionCall","src":"202:51:92"},"nodeType":"YulIf","src":"199:71:92"},{"nodeType":"YulAssignment","src":"279:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"289:5:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"279:6:92"}]}]},"name":"abi_decode_tuple_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"49:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"60:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"72:6:92","type":""}],"src":"14:286:92"},{"body":{"nodeType":"YulBlock","src":"400:92:92","statements":[{"nodeType":"YulAssignment","src":"410:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"422:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"433:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"418:3:92"},"nodeType":"YulFunctionCall","src":"418:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"410:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"452:9:92"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"477:6:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"470:6:92"},"nodeType":"YulFunctionCall","src":"470:14:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"463:6:92"},"nodeType":"YulFunctionCall","src":"463:22:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"445:6:92"},"nodeType":"YulFunctionCall","src":"445:41:92"},"nodeType":"YulExpressionStatement","src":"445:41:92"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"369:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"380:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"391:4:92","type":""}],"src":"305:187:92"},{"body":{"nodeType":"YulBlock","src":"640:358:92","statements":[{"nodeType":"YulAssignment","src":"650:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"662:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"673:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"658:3:92"},"nodeType":"YulFunctionCall","src":"658:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"650:4:92"}]},{"nodeType":"YulVariableDeclaration","src":"685:20:92","value":{"name":"headStart","nodeType":"YulIdentifier","src":"696:9:92"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"689:3:92","type":""}]},{"nodeType":"YulAssignment","src":"714:16:92","value":{"name":"headStart","nodeType":"YulIdentifier","src":"721:9:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"714:3:92"}]},{"nodeType":"YulVariableDeclaration","src":"739:20:92","value":{"name":"value0","nodeType":"YulIdentifier","src":"753:6:92"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"743:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"768:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"777:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"772:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"834:158:92","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"855:3:92"},{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"870:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"864:5:92"},"nodeType":"YulFunctionCall","src":"864:13:92"},{"kind":"number","nodeType":"YulLiteral","src":"879:4:92","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"860:3:92"},"nodeType":"YulFunctionCall","src":"860:24:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"848:6:92"},"nodeType":"YulFunctionCall","src":"848:37:92"},"nodeType":"YulExpressionStatement","src":"848:37:92"},{"nodeType":"YulVariableDeclaration","src":"898:14:92","value":{"kind":"number","nodeType":"YulLiteral","src":"908:4:92","type":"","value":"0x20"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"902:2:92","type":""}]},{"nodeType":"YulAssignment","src":"925:19:92","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"936:3:92"},{"name":"_1","nodeType":"YulIdentifier","src":"941:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"932:3:92"},"nodeType":"YulFunctionCall","src":"932:12:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"925:3:92"}]},{"nodeType":"YulAssignment","src":"957:25:92","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"971:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"979:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"967:3:92"},"nodeType":"YulFunctionCall","src":"967:15:92"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"957:6:92"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"798:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"801:4:92","type":"","value":"0x03"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"795:2:92"},"nodeType":"YulFunctionCall","src":"795:11:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"807:18:92","statements":[{"nodeType":"YulAssignment","src":"809:14:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"818:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"821:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"814:3:92"},"nodeType":"YulFunctionCall","src":"814:9:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"809:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"791:3:92","statements":[]},"src":"787:205:92"}]},"name":"abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"609:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"620:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"631:4:92","type":""}],"src":"497:501:92"},{"body":{"nodeType":"YulBlock","src":"1118:125:92","statements":[{"nodeType":"YulAssignment","src":"1128:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1140:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1151:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1136:3:92"},"nodeType":"YulFunctionCall","src":"1136:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1128:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1170:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1185:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"1193:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1181:3:92"},"nodeType":"YulFunctionCall","src":"1181:55:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1163:6:92"},"nodeType":"YulFunctionCall","src":"1163:74:92"},"nodeType":"YulExpressionStatement","src":"1163:74:92"}]},"name":"abi_encode_tuple_t_contract$_IDAO_$10865__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1087:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1098:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1109:4:92","type":""}],"src":"1003:240:92"},{"body":{"nodeType":"YulBlock","src":"1363:229:92","statements":[{"nodeType":"YulAssignment","src":"1373:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1385:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1396:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1381:3:92"},"nodeType":"YulFunctionCall","src":"1381:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1373:4:92"}]},{"body":{"nodeType":"YulBlock","src":"1441:111:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1462:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1469:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"1474:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1465:3:92"},"nodeType":"YulFunctionCall","src":"1465:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1455:6:92"},"nodeType":"YulFunctionCall","src":"1455:31:92"},"nodeType":"YulExpressionStatement","src":"1455:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1506:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"1509:4:92","type":"","value":"0x21"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1499:6:92"},"nodeType":"YulFunctionCall","src":"1499:15:92"},"nodeType":"YulExpressionStatement","src":"1499:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1534:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1537:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1527:6:92"},"nodeType":"YulFunctionCall","src":"1527:15:92"},"nodeType":"YulExpressionStatement","src":"1527:15:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1421:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"1429:1:92","type":"","value":"3"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"1418:2:92"},"nodeType":"YulFunctionCall","src":"1418:13:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1411:6:92"},"nodeType":"YulFunctionCall","src":"1411:21:92"},"nodeType":"YulIf","src":"1408:144:92"},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1568:9:92"},{"name":"value0","nodeType":"YulIdentifier","src":"1579:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1561:6:92"},"nodeType":"YulFunctionCall","src":"1561:25:92"},"nodeType":"YulExpressionStatement","src":"1561:25:92"}]},"name":"abi_encode_tuple_t_enum$_PluginType_$13330__to_t_uint8__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1332:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1343:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1354:4:92","type":""}],"src":"1248:344:92"},{"body":{"nodeType":"YulBlock","src":"1698:76:92","statements":[{"nodeType":"YulAssignment","src":"1708:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1720:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1731:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1716:3:92"},"nodeType":"YulFunctionCall","src":"1716:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1708:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1750:9:92"},{"name":"value0","nodeType":"YulIdentifier","src":"1761:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1743:6:92"},"nodeType":"YulFunctionCall","src":"1743:25:92"},"nodeType":"YulExpressionStatement","src":"1743:25:92"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1667:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1678:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1689:4:92","type":""}],"src":"1597:177:92"},{"body":{"nodeType":"YulBlock","src":"1863:239:92","statements":[{"body":{"nodeType":"YulBlock","src":"1909:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1918:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1921:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1911:6:92"},"nodeType":"YulFunctionCall","src":"1911:12:92"},"nodeType":"YulExpressionStatement","src":"1911:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1884:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"1893:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1880:3:92"},"nodeType":"YulFunctionCall","src":"1880:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"1905:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1876:3:92"},"nodeType":"YulFunctionCall","src":"1876:32:92"},"nodeType":"YulIf","src":"1873:52:92"},{"nodeType":"YulVariableDeclaration","src":"1934:36:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1960:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1947:12:92"},"nodeType":"YulFunctionCall","src":"1947:23:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"1938:5:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"2056:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2065:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2068:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2058:6:92"},"nodeType":"YulFunctionCall","src":"2058:12:92"},"nodeType":"YulExpressionStatement","src":"2058:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1992:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2003:5:92"},{"kind":"number","nodeType":"YulLiteral","src":"2010:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1999:3:92"},"nodeType":"YulFunctionCall","src":"1999:54:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1989:2:92"},"nodeType":"YulFunctionCall","src":"1989:65:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1982:6:92"},"nodeType":"YulFunctionCall","src":"1982:73:92"},"nodeType":"YulIf","src":"1979:93:92"},{"nodeType":"YulAssignment","src":"2081:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"2091:5:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2081:6:92"}]}]},"name":"abi_decode_tuple_t_contract$_IDAO_$10865","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1829:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1840:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1852:6:92","type":""}],"src":"1779:323:92"},{"body":{"nodeType":"YulBlock","src":"2281:233:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2298:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2309:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2291:6:92"},"nodeType":"YulFunctionCall","src":"2291:21:92"},"nodeType":"YulExpressionStatement","src":"2291:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2332:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2343:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2328:3:92"},"nodeType":"YulFunctionCall","src":"2328:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"2348:2:92","type":"","value":"43"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2321:6:92"},"nodeType":"YulFunctionCall","src":"2321:30:92"},"nodeType":"YulExpressionStatement","src":"2321:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2371:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2382:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2367:3:92"},"nodeType":"YulFunctionCall","src":"2367:18:92"},{"hexValue":"496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069","kind":"string","nodeType":"YulLiteral","src":"2387:34:92","type":"","value":"Initializable: contract is not i"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2360:6:92"},"nodeType":"YulFunctionCall","src":"2360:62:92"},"nodeType":"YulExpressionStatement","src":"2360:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2442:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2453:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2438:3:92"},"nodeType":"YulFunctionCall","src":"2438:18:92"},{"hexValue":"6e697469616c697a696e67","kind":"string","nodeType":"YulLiteral","src":"2458:13:92","type":"","value":"nitializing"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2431:6:92"},"nodeType":"YulFunctionCall","src":"2431:41:92"},"nodeType":"YulExpressionStatement","src":"2431:41:92"},{"nodeType":"YulAssignment","src":"2481:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2493:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2504:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2489:3:92"},"nodeType":"YulFunctionCall","src":"2489:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2481:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2258:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2272:4:92","type":""}],"src":"2107:407:92"}]},"contents":"{\n { }\n function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n if iszero(eq(value, and(value, shl(224, 0xffffffff)))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 96)\n let pos := headStart\n pos := headStart\n let srcPtr := value0\n let i := 0\n for { } lt(i, 0x03) { i := add(i, 1) }\n {\n mstore(pos, and(mload(srcPtr), 0xff))\n let _1 := 0x20\n pos := add(pos, _1)\n srcPtr := add(srcPtr, _1)\n }\n }\n function abi_encode_tuple_t_contract$_IDAO_$10865__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_encode_tuple_t_enum$_PluginType_$13330__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n if iszero(lt(value0, 3))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x21)\n revert(0, 0x24)\n }\n mstore(headStart, value0)\n }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_decode_tuple_t_contract$_IDAO_$10865(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 43)\n mstore(add(headStart, 64), \"Initializable: contract is not i\")\n mstore(add(headStart, 96), \"nitializing\")\n tail := add(headStart, 128)\n }\n}","id":92,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100725760003560e01c806341de68301161005057806341de6830146100dc5780636accab8c146100eb5780638883bbd71461010257600080fd5b806301ffc9a7146100775780632ae9c6001461009f5780634162169f146100b4575b600080fd5b61008a6100853660046102ef565b610117565b60405190151581526020015b60405180910390f35b6100a7610168565b6040516100969190610320565b60655460405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610096565b60016040516100969190610354565b6100f460975481565b604051908152602001610096565b61011561011036600461037c565b610192565b005b60006001600160e01b0319821663041de68360e41b148061014757506001600160e01b03198216621574e360e91b145b8061016257506301ffc9a760e01b6001600160e01b03198316145b92915050565b6101706102d1565b5060408051606081018252600181526004602082015260009181019190915290565b61019b816101a3565b506001609755565b600054610100900460ff166102135760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084015b60405180910390fd5b61021c8161021f565b50565b600054610100900460ff1661028a5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840161020a565b606580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60405180606001604052806003906020820280368337509192915050565b60006020828403121561030157600080fd5b81356001600160e01b03198116811461031957600080fd5b9392505050565b60608101818360005b600381101561034b57815160ff16835260209283019290910190600101610329565b50505092915050565b602081016003831061037657634e487b7160e01b600052602160045260246000fd5b91905290565b60006020828403121561038e57600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461031957600080fdfea164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x72 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x41DE6830 GT PUSH2 0x50 JUMPI DUP1 PUSH4 0x41DE6830 EQ PUSH2 0xDC JUMPI DUP1 PUSH4 0x6ACCAB8C EQ PUSH2 0xEB JUMPI DUP1 PUSH4 0x8883BBD7 EQ PUSH2 0x102 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x77 JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0x9F JUMPI DUP1 PUSH4 0x4162169F EQ PUSH2 0xB4 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8A PUSH2 0x85 CALLDATASIZE PUSH1 0x4 PUSH2 0x2EF JUMP JUMPDEST PUSH2 0x117 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xA7 PUSH2 0x168 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x96 SWAP2 SWAP1 PUSH2 0x320 JUMP JUMPDEST PUSH1 0x65 SLOAD PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x96 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x40 MLOAD PUSH2 0x96 SWAP2 SWAP1 PUSH2 0x354 JUMP JUMPDEST PUSH2 0xF4 PUSH1 0x97 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x96 JUMP JUMPDEST PUSH2 0x115 PUSH2 0x110 CALLDATASIZE PUSH1 0x4 PUSH2 0x37C JUMP JUMPDEST PUSH2 0x192 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x41DE683 PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x147 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x162 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x170 PUSH2 0x2D1 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH2 0x19B DUP2 PUSH2 0x1A3 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x97 SSTORE JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x213 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x21C DUP2 PUSH2 0x21F JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x28A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x20A JUMP JUMPDEST PUSH1 0x65 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x301 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x319 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0x34B JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x329 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH1 0x3 DUP4 LT PUSH2 0x376 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 SWAP1 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x38E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x319 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"1087:198:48:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1810:288:74;;;;;;:::i;:::-;;:::i;:::-;;;470:14:92;;463:22;445:41;;433:2;418:18;1810:288:74;;;;;;;;631:98:90;;;:::i;:::-;;;;;;;:::i;1200:70:67:-;1259:4;;1200:70;;1259:4;;;;1163:74:92;;1151:2;1136:18;1200:70:67;1003:240:92;1494:108:74;1575:20;1494:108;;;;;;:::i;1144:21:48:-;;;;;;;;;1743:25:92;;;1731:2;1716:18;1144:21:48;1597:177:92;1172:111:48;;;;;;:::i;:::-;;:::i;:::-;;1810:288:74;1896:4;-1:-1:-1;;;;;;1931:41:74;;-1:-1:-1;;;1931:41:74;;:107;;-1:-1:-1;;;;;;;1988:50:74;;-1:-1:-1;;;1988:50:74;1931:107;:160;;;-1:-1:-1;;;;;;;;;;1189:51:11;;;2054:37:74;1912:179;1810:288;-1:-1:-1;;1810:288:74:o;631:98:90:-;679:15;;:::i;:::-;-1:-1:-1;706:16:90;;;;;;;;714:1;706:16;;717:1;706:16;;;;-1:-1:-1;706:16:90;;;;;;;;631:98::o;1172:111:48:-;1228:28;1251:4;1228:22;:28::i;:::-;-1:-1:-1;1275:1:48;1266:6;:10;1172:111::o;1327:133:74:-;5374:13:4;;;;;;;5366:69;;;;-1:-1:-1;;;5366:69:4;;2309:2:92;5366:69:4;;;2291:21:92;2348:2;2328:18;;;2321:30;2387:34;2367:18;;;2360:62;-1:-1:-1;;;2438:18:92;;;2431:41;2489:19;;5366:69:4;;;;;;;;;1414:39:74::1;1448:4;1414:33;:39::i;:::-;1327:133:::0;:::o;1010:108:67:-;5374:13:4;;;;;;;5366:69;;;;-1:-1:-1;;;5366:69:4;;2309:2:92;5366:69:4;;;2291:21:92;2348:2;2328:18;;;2321:30;2387:34;2367:18;;;2360:62;-1:-1:-1;;;2438:18:92;;;2431:41;2489:19;;5366:69:4;2107:407:92;5366:69:4;1100:4:67::1;:11:::0;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;1010:108::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:286:92:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:92;;209:43;;199:71;;266:1;263;256:12;199:71;289:5;14:286;-1:-1:-1;;;14:286:92:o;497:501::-;673:2;658:18;;662:9;753:6;631:4;787:205;801:4;798:1;795:11;787:205;;;864:13;;879:4;860:24;848:37;;908:4;932:12;;;;967:15;;;;821:1;814:9;787:205;;;791:3;;;497:501;;;;:::o;1248:344::-;1396:2;1381:18;;1429:1;1418:13;;1408:144;;1474:10;1469:3;1465:20;1462:1;1455:31;1509:4;1506:1;1499:15;1537:4;1534:1;1527:15;1408:144;1561:25;;;1248:344;:::o;1779:323::-;1852:6;1905:2;1893:9;1884:7;1880:23;1876:32;1873:52;;;1921:1;1918;1911:12;1873:52;1960:9;1947:23;2010:42;2003:5;1999:54;1992:5;1989:65;1979:93;;2068:1;2065;2058:12"},"gasEstimates":{"creation":{"codeDepositCost":"191800","executionCost":"29821","totalCost":"221621"},"external":{"dao()":"2334","notAnInitializer(address)":"50973","pluginType()":"227","protocolVersion()":"infinite","state1()":"2317","supportsInterface(bytes4)":"482"}},"methodIdentifiers":{"dao()":"4162169f","notAnInitializer(address)":"8883bbd7","pluginType()":"41de6830","protocolVersion()":"2ae9c600","state1()":"6accab8c","supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"dao\",\"outputs\":[{\"internalType\":\"contract IDAO\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IDAO\",\"name\":\"_dao\",\"type\":\"address\"}],\"name\":\"notAnInitializer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pluginType\",\"outputs\":[{\"internalType\":\"enum IPlugin.PluginType\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"protocolVersion\",\"outputs\":[{\"internalType\":\"uint8[3]\",\"name\":\"\",\"type\":\"uint8[3]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"state1\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"DO NOT USE IN PRODUCTION!\",\"kind\":\"dev\",\"methods\":{\"dao()\":{\"returns\":{\"_0\":\"The DAO contract.\"}},\"protocolVersion()\":{\"details\":\"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\",\"returns\":{\"_0\":\"Returns the semantic Aragon OSx protocol version number.\"}},\"supportsInterface(bytes4)\":{\"params\":{\"_interfaceId\":\"The ID of the interface.\"},\"returns\":{\"_0\":\"Returns `true` if the interface is supported.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"dao()\":{\"notice\":\"Returns the DAO contract.\"},\"pluginType()\":{\"notice\":\"Returns the plugin's type\"},\"protocolVersion()\":{\"notice\":\"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Checks if this or the parent contract supports an interface by its ID.\"}},\"notice\":\"A mock cloneable plugin missing an initializer function.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/mocks/plugin/PluginCloneableMock.sol\":\"PluginCloneableMockBad\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n function __Context_init() internal onlyInitializing {\\n }\\n\\n function __Context_init_unchained() internal onlyInitializing {\\n }\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n function _contextSuffixLength() internal view virtual returns (uint256) {\\n return 0;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x75097e35253e7fb282ee4d7f27a80eaacfa759923185bf17302a89cbc059c5ef\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165Upgradeable.sol\\\";\\nimport {Initializable} from \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165Upgradeable is Initializable, IERC165Upgradeable {\\n function __ERC165_init() internal onlyInitializing {\\n }\\n\\n function __ERC165_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165Upgradeable).interfaceId;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0xd90d7723512df65ae417adaf0801042940f0dabd60039ceeaffe34aa5b238da1\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165Upgradeable {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\"},\"src/dao/IDAO.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IDAO\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for DAOs within the Aragon App DAO framework.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IDAO {\\n /// @notice The action struct to be consumed by the DAO's `execute` function resulting in an external call.\\n /// @param to The address to call.\\n /// @param value The native token value to be sent with the call.\\n /// @param data The bytes-encoded function selector and calldata for the call.\\n struct Action {\\n address to;\\n uint256 value;\\n bytes data;\\n }\\n\\n /// @notice Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\\n /// @param _where The address of the contract.\\n /// @param _who The address of a EOA or contract to give the permissions.\\n /// @param _permissionId The permission identifier.\\n /// @param _data The optional data passed to the `PermissionCondition` registered.\\n /// @return Returns true if the address has permission, false if not.\\n function hasPermission(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes memory _data\\n ) external view returns (bool);\\n\\n /// @notice Updates the DAO metadata (e.g., an IPFS hash).\\n /// @param _metadata The IPFS hash of the new metadata object.\\n function setMetadata(bytes calldata _metadata) external;\\n\\n /// @notice Emitted when the DAO metadata is updated.\\n /// @param metadata The IPFS hash of the new metadata object.\\n event MetadataSet(bytes metadata);\\n\\n /// @notice Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted.\\n /// @param _callId The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce.\\n /// @param _actions The array of actions.\\n /// @param _allowFailureMap A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @return The array of results obtained from the executed actions in `bytes`.\\n /// @return The resulting failure map containing the actions have actually failed.\\n function execute(\\n bytes32 _callId,\\n Action[] memory _actions,\\n uint256 _allowFailureMap\\n ) external returns (bytes[] memory, uint256);\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param actor The address of the caller.\\n /// @param callId The ID of the call.\\n /// @param actions The array of actions executed.\\n /// @param allowFailureMap The allow failure map encoding which actions are allowed to fail.\\n /// @param failureMap The failure map encoding which actions have failed.\\n /// @param execResults The array with the results of the executed actions.\\n /// @dev The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce.\\n event Executed(\\n address indexed actor,\\n bytes32 callId,\\n Action[] actions,\\n uint256 allowFailureMap,\\n uint256 failureMap,\\n bytes[] execResults\\n );\\n\\n /// @notice Emitted when a standard callback is registered.\\n /// @param interfaceId The ID of the interface.\\n /// @param callbackSelector The selector of the callback function.\\n /// @param magicNumber The magic number to be registered for the callback function selector.\\n event StandardCallbackRegistered(\\n bytes4 interfaceId,\\n bytes4 callbackSelector,\\n bytes4 magicNumber\\n );\\n\\n /// @notice Deposits (native) tokens to the DAO contract with a reference string.\\n /// @param _token The address of the token or address(0) in case of the native token.\\n /// @param _amount The amount of tokens to deposit.\\n /// @param _reference The reference describing the deposit reason.\\n function deposit(address _token, uint256 _amount, string calldata _reference) external payable;\\n\\n /// @notice Emitted when a token deposit has been made to the DAO.\\n /// @param sender The address of the sender.\\n /// @param token The address of the deposited token.\\n /// @param amount The amount of tokens deposited.\\n /// @param _reference The reference describing the deposit reason.\\n event Deposited(\\n address indexed sender,\\n address indexed token,\\n uint256 amount,\\n string _reference\\n );\\n\\n /// @notice Emitted when a native token deposit has been made to the DAO.\\n /// @dev This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).\\n /// @param sender The address of the sender.\\n /// @param amount The amount of native tokens deposited.\\n event NativeTokenDeposited(address sender, uint256 amount);\\n\\n /// @notice Setter for the trusted forwarder verifying the meta transaction.\\n /// @param _trustedForwarder The trusted forwarder address.\\n function setTrustedForwarder(address _trustedForwarder) external;\\n\\n /// @notice Getter for the trusted forwarder verifying the meta transaction.\\n /// @return The trusted forwarder address.\\n function getTrustedForwarder() external view returns (address);\\n\\n /// @notice Emitted when a new TrustedForwarder is set on the DAO.\\n /// @param forwarder the new forwarder address.\\n event TrustedForwarderSet(address forwarder);\\n\\n /// @notice Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\\n /// @param _hash The hash of the data to be signed.\\n /// @param _signature The signature byte array associated with `_hash`.\\n /// @return Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not.\\n function isValidSignature(bytes32 _hash, bytes memory _signature) external returns (bytes4);\\n\\n /// @notice Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\\n /// @param _interfaceId The ID of the interface.\\n /// @param _callbackSelector The selector of the callback function.\\n /// @param _magicNumber The magic number to be registered for the function signature.\\n function registerStandardCallback(\\n bytes4 _interfaceId,\\n bytes4 _callbackSelector,\\n bytes4 _magicNumber\\n ) external;\\n\\n /// @notice Removed function being left here to not corrupt the IDAO interface ID. Any call will revert.\\n /// @dev Introduced in v1.0.0. Removed in v1.4.0.\\n function setSignatureValidator(address) external;\\n}\\n\",\"keccak256\":\"0xb7f615523c26de042edce98731c658f44a1edb2464387ac1b642c4c69f57128e\",\"license\":\"AGPL-3.0-or-later\"},\"src/mocks/plugin/PluginCloneableMock.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\n/* solhint-disable one-contract-per-file */\\npragma solidity ^0.8.8;\\n\\nimport {PluginCloneable} from \\\"../../plugin/PluginCloneable.sol\\\";\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice A mock cloneable plugin to be deployed via the minimal proxy pattern.\\n/// v1.1 (Release 1, Build 1)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginCloneableMockBuild1 is PluginCloneable {\\n uint256 public state1;\\n\\n function initialize(IDAO _dao) external initializer {\\n __PluginCloneable_init(_dao);\\n state1 = 1;\\n }\\n}\\n\\n/// @notice A mock cloneable plugin to be deployed via the minimal proxy pattern.\\n/// v1.1 (Release 1, Build 2)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginCloneableMockBuild2 is PluginCloneable {\\n uint256 public state1;\\n uint256 public state2;\\n\\n function initialize(IDAO _dao) external initializer {\\n __PluginCloneable_init(_dao);\\n state1 = 1;\\n state2 = 2;\\n }\\n}\\n\\n/// @notice A mock cloneable plugin missing an initializer function.\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginCloneableMockBad is PluginCloneable {\\n uint256 public state1;\\n\\n function notAnInitializer(IDAO _dao) external {\\n __PluginCloneable_init(_dao);\\n state1 = 1;\\n }\\n}\\n\",\"keccak256\":\"0x1bb271f7b553040fad7907e97b860aa833aec9aefe7477e00ba7bdfd80d84e98\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/DaoAuthorizableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ContextUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\\\";\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\nimport {_auth} from \\\"./auth.sol\\\";\\n\\n/// @title DaoAuthorizableUpgradeable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract contract providing a meta-transaction compatible modifier for upgradeable or cloneable contracts to authorize function calls through an associated DAO.\\n/// @dev Make sure to call `__DaoAuthorizableUpgradeable_init` during initialization of the inheriting contract.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract DaoAuthorizableUpgradeable is ContextUpgradeable {\\n /// @notice The associated DAO managing the permissions of inheriting contracts.\\n IDAO private dao_;\\n\\n /// @notice Initializes the contract by setting the associated DAO.\\n /// @param _dao The associated DAO address.\\n // solhint-disable-next-line func-name-mixedcase\\n function __DaoAuthorizableUpgradeable_init(IDAO _dao) internal onlyInitializing {\\n dao_ = _dao;\\n }\\n\\n /// @notice Returns the DAO contract.\\n /// @return The DAO contract.\\n function dao() public view returns (IDAO) {\\n return dao_;\\n }\\n\\n /// @notice A modifier to make functions on inheriting contracts authorized. Permissions to call the function are checked through the associated DAO's permission manager.\\n /// @param _permissionId The permission identifier required to call the method this modifier is applied to.\\n modifier auth(bytes32 _permissionId) {\\n _auth(dao_, address(this), _msgSender(), _permissionId, _msgData());\\n _;\\n }\\n\\n /// @notice This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain (see [OpenZeppelin's guide about storage gaps](https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps)).\\n uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0x7fac6b01b037ba1cb9d6a22d3f43b0785037dcf496ffb672434d9bf7227d2585\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/auth.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice Thrown if a call is unauthorized in the associated DAO.\\n/// @param dao The associated DAO.\\n/// @param where The context in which the authorization reverted.\\n/// @param who The address (EOA or contract) missing the permission.\\n/// @param permissionId The permission identifier.\\nerror DaoUnauthorized(address dao, address where, address who, bytes32 permissionId);\\n\\n/// @notice A free function checking if a caller is granted permissions on a target contract via a permission identifier that redirects the approval to a `PermissionCondition` if this was specified in the setup.\\n/// @param _where The address of the target contract for which `who` receives permission.\\n/// @param _who The address (EOA or contract) owning the permission.\\n/// @param _permissionId The permission identifier.\\n/// @param _data The optional data passed to the `PermissionCondition` registered.\\n/// @custom:security-contact sirt@aragon.org\\nfunction _auth(\\n IDAO _dao,\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes calldata _data\\n) view {\\n if (!_dao.hasPermission(_where, _who, _permissionId, _data))\\n revert DaoUnauthorized({\\n dao: address(_dao),\\n where: _where,\\n who: _who,\\n permissionId: _permissionId\\n });\\n}\\n\",\"keccak256\":\"0x878764b4f87fe0651fb3798fb9cb87c952f8c6caf6ae79c7f09de84df6c00298\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/IPlugin.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IPlugin\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the traits of a plugin.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IPlugin {\\n enum PluginType {\\n UUPS,\\n Cloneable,\\n Constructable\\n }\\n\\n /// @notice Returns the plugin's type\\n function pluginType() external view returns (PluginType);\\n}\\n\",\"keccak256\":\"0xc57cd0d10b6380ab7f54c713a509e88fd8f4ad9288313a0e8e12b8887817ddfe\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/PluginCloneable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ERC165Upgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\\\";\\n\\nimport {IProtocolVersion} from \\\"../utils/versioning/IProtocolVersion.sol\\\";\\nimport {ProtocolVersion} from \\\"../utils/versioning/ProtocolVersion.sol\\\";\\nimport {DaoAuthorizableUpgradeable} from \\\"../permission/auth/DaoAuthorizableUpgradeable.sol\\\";\\nimport {IDAO} from \\\"../dao/IDAO.sol\\\";\\nimport {IPlugin} from \\\"./IPlugin.sol\\\";\\n\\n/// @title PluginCloneable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract, non-upgradeable contract to inherit from when creating a plugin being deployed via the minimal clones pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)).\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract PluginCloneable is\\n IPlugin,\\n ERC165Upgradeable,\\n DaoAuthorizableUpgradeable,\\n ProtocolVersion\\n{\\n /// @notice Disables the initializers on the implementation contract to prevent it from being left uninitialized.\\n /// @custom:oz-upgrades-unsafe-allow constructor\\n constructor() {\\n _disableInitializers();\\n }\\n\\n /// @notice Initializes the plugin by storing the associated DAO.\\n /// @param _dao The DAO contract.\\n // solhint-disable-next-line func-name-mixedcase\\n function __PluginCloneable_init(IDAO _dao) internal virtual onlyInitializing {\\n __DaoAuthorizableUpgradeable_init(_dao);\\n }\\n\\n /// @inheritdoc IPlugin\\n function pluginType() public pure override returns (PluginType) {\\n return PluginType.Cloneable;\\n }\\n\\n /// @notice Checks if this or the parent contract supports an interface by its ID.\\n /// @param _interfaceId The ID of the interface.\\n /// @return Returns `true` if the interface is supported.\\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\\n return\\n _interfaceId == type(IPlugin).interfaceId ||\\n _interfaceId == type(IProtocolVersion).interfaceId ||\\n super.supportsInterface(_interfaceId);\\n }\\n}\\n\",\"keccak256\":\"0x68e260b9b370d68252f0c707461d5e4c2188a7bfed42ed9192657b36330a1f7a\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/IProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IProtocolVersion\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the semantic Aragon OSx protocol version number.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IProtocolVersion {\\n /// @notice Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\\n /// @return _version Returns the semantic Aragon OSx protocol version number.\\n /// @dev This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\\n function protocolVersion() external view returns (uint8[3] memory _version);\\n}\\n\",\"keccak256\":\"0x00a4da654d21dc1bdadbdc8bd54bb86c378c56f85e461ccc31303628ea621361\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/ProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IProtocolVersion} from \\\"./IProtocolVersion.sol\\\";\\n\\n/// @title ProtocolVersion\\n/// @author Aragon X - 2023\\n/// @notice An abstract, stateless, non-upgradeable contract providing the current Aragon OSx protocol version number.\\n/// @dev Do not add any new variables to this contract that would shift down storage in the inheritance chain.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract ProtocolVersion is IProtocolVersion {\\n // IMPORTANT: Do not add any storage variable, see the above notice.\\n\\n /// @inheritdoc IProtocolVersion\\n function protocolVersion() public pure returns (uint8[3] memory) {\\n return [1, 4, 0];\\n }\\n}\\n\",\"keccak256\":\"0x3975c937be935f687c6b6b8f379071232681e98cf04b175d72781b819ea52bdb\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[{"astId":372,"contract":"src/mocks/plugin/PluginCloneableMock.sol:PluginCloneableMockBad","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":375,"contract":"src/mocks/plugin/PluginCloneableMock.sol:PluginCloneableMockBad","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":2821,"contract":"src/mocks/plugin/PluginCloneableMock.sol:PluginCloneableMockBad","label":"__gap","offset":0,"slot":"1","type":"t_array(t_uint256)50_storage"},{"astId":2592,"contract":"src/mocks/plugin/PluginCloneableMock.sol:PluginCloneableMockBad","label":"__gap","offset":0,"slot":"51","type":"t_array(t_uint256)50_storage"},{"astId":13111,"contract":"src/mocks/plugin/PluginCloneableMock.sol:PluginCloneableMockBad","label":"dao_","offset":0,"slot":"101","type":"t_contract(IDAO)10865"},{"astId":13160,"contract":"src/mocks/plugin/PluginCloneableMock.sol:PluginCloneableMockBad","label":"__gap","offset":0,"slot":"102","type":"t_array(t_uint256)49_storage"},{"astId":11253,"contract":"src/mocks/plugin/PluginCloneableMock.sol:PluginCloneableMockBad","label":"state1","offset":0,"slot":"151","type":"t_uint256"}],"types":{"t_array(t_uint256)49_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[49]","numberOfBytes":"1568"},"t_array(t_uint256)50_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[50]","numberOfBytes":"1600"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_contract(IDAO)10865":{"encoding":"inplace","label":"contract IDAO","numberOfBytes":"20"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"kind":"user","methods":{"dao()":{"notice":"Returns the DAO contract."},"pluginType()":{"notice":"Returns the plugin's type"},"protocolVersion()":{"notice":"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with."},"supportsInterface(bytes4)":{"notice":"Checks if this or the parent contract supports an interface by its ID."}},"notice":"A mock cloneable plugin missing an initializer function.","version":1}},"PluginCloneableMockBuild1":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"inputs":[],"name":"dao","outputs":[{"internalType":"contract IDAO","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IDAO","name":"_dao","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pluginType","outputs":[{"internalType":"enum IPlugin.PluginType","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"protocolVersion","outputs":[{"internalType":"uint8[3]","name":"","type":"uint8[3]"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"state1","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"DO NOT USE IN PRODUCTION!","kind":"dev","methods":{"dao()":{"returns":{"_0":"The DAO contract."}},"protocolVersion()":{"details":"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.","returns":{"_0":"Returns the semantic Aragon OSx protocol version number."}},"supportsInterface(bytes4)":{"params":{"_interfaceId":"The ID of the interface."},"returns":{"_0":"Returns `true` if the interface is supported."}}},"version":1},"evm":{"bytecode":{"functionDebugData":{"@_13445":{"entryPoint":null,"id":13445,"parameterSlots":0,"returnSlots":0},"@_disableInitializers_515":{"entryPoint":30,"id":515,"parameterSlots":0,"returnSlots":0},"abi_encode_tuple_t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:608:92","statements":[{"nodeType":"YulBlock","src":"6:3:92","statements":[]},{"body":{"nodeType":"YulBlock","src":"188:229:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"205:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"216:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"198:6:92"},"nodeType":"YulFunctionCall","src":"198:21:92"},"nodeType":"YulExpressionStatement","src":"198:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"239:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"250:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"235:3:92"},"nodeType":"YulFunctionCall","src":"235:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"255:2:92","type":"","value":"39"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"228:6:92"},"nodeType":"YulFunctionCall","src":"228:30:92"},"nodeType":"YulExpressionStatement","src":"228:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"278:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"289:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"274:3:92"},"nodeType":"YulFunctionCall","src":"274:18:92"},{"hexValue":"496e697469616c697a61626c653a20636f6e747261637420697320696e697469","kind":"string","nodeType":"YulLiteral","src":"294:34:92","type":"","value":"Initializable: contract is initi"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"267:6:92"},"nodeType":"YulFunctionCall","src":"267:62:92"},"nodeType":"YulExpressionStatement","src":"267:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"349:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"360:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"345:3:92"},"nodeType":"YulFunctionCall","src":"345:18:92"},{"hexValue":"616c697a696e67","kind":"string","nodeType":"YulLiteral","src":"365:9:92","type":"","value":"alizing"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"338:6:92"},"nodeType":"YulFunctionCall","src":"338:37:92"},"nodeType":"YulExpressionStatement","src":"338:37:92"},{"nodeType":"YulAssignment","src":"384:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"396:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"407:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"392:3:92"},"nodeType":"YulFunctionCall","src":"392:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"384:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"165:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"179:4:92","type":""}],"src":"14:403:92"},{"body":{"nodeType":"YulBlock","src":"519:87:92","statements":[{"nodeType":"YulAssignment","src":"529:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"541:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"552:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"537:3:92"},"nodeType":"YulFunctionCall","src":"537:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"529:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"571:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"586:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"594:4:92","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"582:3:92"},"nodeType":"YulFunctionCall","src":"582:17:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"564:6:92"},"nodeType":"YulFunctionCall","src":"564:36:92"},"nodeType":"YulExpressionStatement","src":"564:36:92"}]},"name":"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"488:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"499:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"510:4:92","type":""}],"src":"422:184:92"}]},"contents":"{\n { }\n function abi_encode_tuple_t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 39)\n mstore(add(headStart, 64), \"Initializable: contract is initi\")\n mstore(add(headStart, 96), \"alizing\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xff))\n }\n}","id":92,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"608060405234801561001057600080fd5b5061001961001e565b6100dd565b600054610100900460ff161561008a5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116146100db576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6104d5806100ec6000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c806341de68301161005057806341de6830146100dc5780636accab8c146100eb578063c4d66de81461010257600080fd5b806301ffc9a7146100775780632ae9c6001461009f5780634162169f146100b4575b600080fd5b61008a610085366004610405565b610117565b60405190151581526020015b60405180910390f35b6100a7610168565b6040516100969190610436565b60655460405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610096565b6001604051610096919061046a565b6100f460975481565b604051908152602001610096565b610115610110366004610492565b610192565b005b60006001600160e01b0319821663041de68360e41b148061014757506001600160e01b03198216621574e360e91b145b8061016257506301ffc9a760e01b6001600160e01b03198316145b92915050565b6101706103e7565b5060408051606081018252600181526004602082015260009181019190915290565b600054610100900460ff16158080156101b25750600054600160ff909116105b806101cc5750303b1580156101cc575060005460ff166001145b6102435760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b6000805460ff191660011790558015610266576000805461ff0019166101001790555b61026f826102be565b600160975580156102ba576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b600054610100900460ff166103295760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840161023a565b61033281610335565b50565b600054610100900460ff166103a05760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840161023a565b606580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60405180606001604052806003906020820280368337509192915050565b60006020828403121561041757600080fd5b81356001600160e01b03198116811461042f57600080fd5b9392505050565b60608101818360005b600381101561046157815160ff1683526020928301929091019060010161043f565b50505092915050565b602081016003831061048c57634e487b7160e01b600052602160045260246000fd5b91905290565b6000602082840312156104a457600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461042f57600080fdfea164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x19 PUSH2 0x1E JUMP JUMPDEST PUSH2 0xDD JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x8A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x27 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320696E697469 PUSH1 0x44 DUP3 ADD MSTORE PUSH7 0x616C697A696E67 PUSH1 0xC8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xFF SWAP1 DUP2 AND EQ PUSH2 0xDB JUMPI PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST JUMP JUMPDEST PUSH2 0x4D5 DUP1 PUSH2 0xEC PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x72 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x41DE6830 GT PUSH2 0x50 JUMPI DUP1 PUSH4 0x41DE6830 EQ PUSH2 0xDC JUMPI DUP1 PUSH4 0x6ACCAB8C EQ PUSH2 0xEB JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0x102 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x77 JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0x9F JUMPI DUP1 PUSH4 0x4162169F EQ PUSH2 0xB4 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8A PUSH2 0x85 CALLDATASIZE PUSH1 0x4 PUSH2 0x405 JUMP JUMPDEST PUSH2 0x117 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xA7 PUSH2 0x168 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x96 SWAP2 SWAP1 PUSH2 0x436 JUMP JUMPDEST PUSH1 0x65 SLOAD PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x96 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x40 MLOAD PUSH2 0x96 SWAP2 SWAP1 PUSH2 0x46A JUMP JUMPDEST PUSH2 0xF4 PUSH1 0x97 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x96 JUMP JUMPDEST PUSH2 0x115 PUSH2 0x110 CALLDATASIZE PUSH1 0x4 PUSH2 0x492 JUMP JUMPDEST PUSH2 0x192 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x41DE683 PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x147 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x162 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x170 PUSH2 0x3E7 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 DUP1 ISZERO PUSH2 0x1B2 JUMPI POP PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xFF SWAP1 SWAP2 AND LT JUMPDEST DUP1 PUSH2 0x1CC JUMPI POP ADDRESS EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1CC JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF AND PUSH1 0x1 EQ JUMPDEST PUSH2 0x243 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x647920696E697469616C697A6564000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE DUP1 ISZERO PUSH2 0x266 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND PUSH2 0x100 OR SWAP1 SSTORE JUMPDEST PUSH2 0x26F DUP3 PUSH2 0x2BE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x97 SSTORE DUP1 ISZERO PUSH2 0x2BA JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x329 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x23A JUMP JUMPDEST PUSH2 0x332 DUP2 PUSH2 0x335 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x3A0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x23A JUMP JUMPDEST PUSH1 0x65 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x417 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x42F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0x461 JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x43F JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH1 0x3 DUP4 LT PUSH2 0x48C JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 SWAP1 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x42F JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"371:207:48:-:0;;;;;;;;;;;;-1:-1:-1;1131:22:74;:20;:22::i;:::-;371:207:48;;5939:280:4;6007:13;;;;;;;6006:14;5998:66;;;;-1:-1:-1;;;5998:66:4;;216:2:92;5998:66:4;;;198:21:92;255:2;235:18;;;228:30;294:34;274:18;;;267:62;-1:-1:-1;;;345:18:92;;;338:37;392:19;;5998:66:4;;;;;;;;6078:12;;6094:15;6078:12;;;:31;6074:139;;6125:12;:30;;-1:-1:-1;;6125:30:4;6140:15;6125:30;;;;;;6174:28;;564:36:92;;;6174:28:4;;552:2:92;537:18;6174:28:4;;;;;;;6074:139;5939:280::o;422:184:92:-;371:207:48;;;;;;"},"deployedBytecode":{"functionDebugData":{"@__DaoAuthorizableUpgradeable_init_13125":{"entryPoint":821,"id":13125,"parameterSlots":1,"returnSlots":0},"@__PluginCloneable_init_13459":{"entryPoint":702,"id":13459,"parameterSlots":1,"returnSlots":0},"@dao_13135":{"entryPoint":null,"id":13135,"parameterSlots":0,"returnSlots":1},"@initialize_11218":{"entryPoint":402,"id":11218,"parameterSlots":1,"returnSlots":0},"@isContract_689":{"entryPoint":null,"id":689,"parameterSlots":1,"returnSlots":1},"@pluginType_13471":{"entryPoint":null,"id":13471,"parameterSlots":0,"returnSlots":1},"@protocolVersion_14765":{"entryPoint":360,"id":14765,"parameterSlots":0,"returnSlots":1},"@state1_11201":{"entryPoint":null,"id":11201,"parameterSlots":0,"returnSlots":0},"@supportsInterface_13500":{"entryPoint":279,"id":13500,"parameterSlots":1,"returnSlots":1},"@supportsInterface_2816":{"entryPoint":null,"id":2816,"parameterSlots":1,"returnSlots":1},"abi_decode_tuple_t_bytes4":{"entryPoint":1029,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_contract$_IDAO_$10865":{"entryPoint":1170,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed":{"entryPoint":1078,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_contract$_IDAO_$10865__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_enum$_PluginType_$13330__to_t_uint8__fromStack_reversed":{"entryPoint":1130,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_rational_1_by_1__to_t_uint8__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:3130:92","statements":[{"nodeType":"YulBlock","src":"6:3:92","statements":[]},{"body":{"nodeType":"YulBlock","src":"83:217:92","statements":[{"body":{"nodeType":"YulBlock","src":"129:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"138:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"141:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"131:6:92"},"nodeType":"YulFunctionCall","src":"131:12:92"},"nodeType":"YulExpressionStatement","src":"131:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"104:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"113:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"100:3:92"},"nodeType":"YulFunctionCall","src":"100:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"125:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"96:3:92"},"nodeType":"YulFunctionCall","src":"96:32:92"},"nodeType":"YulIf","src":"93:52:92"},{"nodeType":"YulVariableDeclaration","src":"154:36:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"180:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"167:12:92"},"nodeType":"YulFunctionCall","src":"167:23:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"158:5:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"254:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"263:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"266:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"256:6:92"},"nodeType":"YulFunctionCall","src":"256:12:92"},"nodeType":"YulExpressionStatement","src":"256:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"212:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"223:5:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"234:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"239:10:92","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"230:3:92"},"nodeType":"YulFunctionCall","src":"230:20:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"219:3:92"},"nodeType":"YulFunctionCall","src":"219:32:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"209:2:92"},"nodeType":"YulFunctionCall","src":"209:43:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"202:6:92"},"nodeType":"YulFunctionCall","src":"202:51:92"},"nodeType":"YulIf","src":"199:71:92"},{"nodeType":"YulAssignment","src":"279:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"289:5:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"279:6:92"}]}]},"name":"abi_decode_tuple_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"49:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"60:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"72:6:92","type":""}],"src":"14:286:92"},{"body":{"nodeType":"YulBlock","src":"400:92:92","statements":[{"nodeType":"YulAssignment","src":"410:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"422:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"433:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"418:3:92"},"nodeType":"YulFunctionCall","src":"418:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"410:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"452:9:92"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"477:6:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"470:6:92"},"nodeType":"YulFunctionCall","src":"470:14:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"463:6:92"},"nodeType":"YulFunctionCall","src":"463:22:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"445:6:92"},"nodeType":"YulFunctionCall","src":"445:41:92"},"nodeType":"YulExpressionStatement","src":"445:41:92"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"369:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"380:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"391:4:92","type":""}],"src":"305:187:92"},{"body":{"nodeType":"YulBlock","src":"640:358:92","statements":[{"nodeType":"YulAssignment","src":"650:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"662:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"673:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"658:3:92"},"nodeType":"YulFunctionCall","src":"658:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"650:4:92"}]},{"nodeType":"YulVariableDeclaration","src":"685:20:92","value":{"name":"headStart","nodeType":"YulIdentifier","src":"696:9:92"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"689:3:92","type":""}]},{"nodeType":"YulAssignment","src":"714:16:92","value":{"name":"headStart","nodeType":"YulIdentifier","src":"721:9:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"714:3:92"}]},{"nodeType":"YulVariableDeclaration","src":"739:20:92","value":{"name":"value0","nodeType":"YulIdentifier","src":"753:6:92"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"743:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"768:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"777:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"772:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"834:158:92","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"855:3:92"},{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"870:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"864:5:92"},"nodeType":"YulFunctionCall","src":"864:13:92"},{"kind":"number","nodeType":"YulLiteral","src":"879:4:92","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"860:3:92"},"nodeType":"YulFunctionCall","src":"860:24:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"848:6:92"},"nodeType":"YulFunctionCall","src":"848:37:92"},"nodeType":"YulExpressionStatement","src":"848:37:92"},{"nodeType":"YulVariableDeclaration","src":"898:14:92","value":{"kind":"number","nodeType":"YulLiteral","src":"908:4:92","type":"","value":"0x20"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"902:2:92","type":""}]},{"nodeType":"YulAssignment","src":"925:19:92","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"936:3:92"},{"name":"_1","nodeType":"YulIdentifier","src":"941:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"932:3:92"},"nodeType":"YulFunctionCall","src":"932:12:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"925:3:92"}]},{"nodeType":"YulAssignment","src":"957:25:92","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"971:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"979:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"967:3:92"},"nodeType":"YulFunctionCall","src":"967:15:92"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"957:6:92"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"798:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"801:4:92","type":"","value":"0x03"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"795:2:92"},"nodeType":"YulFunctionCall","src":"795:11:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"807:18:92","statements":[{"nodeType":"YulAssignment","src":"809:14:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"818:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"821:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"814:3:92"},"nodeType":"YulFunctionCall","src":"814:9:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"809:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"791:3:92","statements":[]},"src":"787:205:92"}]},"name":"abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"609:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"620:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"631:4:92","type":""}],"src":"497:501:92"},{"body":{"nodeType":"YulBlock","src":"1118:125:92","statements":[{"nodeType":"YulAssignment","src":"1128:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1140:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1151:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1136:3:92"},"nodeType":"YulFunctionCall","src":"1136:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1128:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1170:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1185:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"1193:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1181:3:92"},"nodeType":"YulFunctionCall","src":"1181:55:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1163:6:92"},"nodeType":"YulFunctionCall","src":"1163:74:92"},"nodeType":"YulExpressionStatement","src":"1163:74:92"}]},"name":"abi_encode_tuple_t_contract$_IDAO_$10865__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1087:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1098:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1109:4:92","type":""}],"src":"1003:240:92"},{"body":{"nodeType":"YulBlock","src":"1363:229:92","statements":[{"nodeType":"YulAssignment","src":"1373:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1385:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1396:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1381:3:92"},"nodeType":"YulFunctionCall","src":"1381:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1373:4:92"}]},{"body":{"nodeType":"YulBlock","src":"1441:111:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1462:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1469:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"1474:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1465:3:92"},"nodeType":"YulFunctionCall","src":"1465:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1455:6:92"},"nodeType":"YulFunctionCall","src":"1455:31:92"},"nodeType":"YulExpressionStatement","src":"1455:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1506:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"1509:4:92","type":"","value":"0x21"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1499:6:92"},"nodeType":"YulFunctionCall","src":"1499:15:92"},"nodeType":"YulExpressionStatement","src":"1499:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1534:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1537:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1527:6:92"},"nodeType":"YulFunctionCall","src":"1527:15:92"},"nodeType":"YulExpressionStatement","src":"1527:15:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1421:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"1429:1:92","type":"","value":"3"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"1418:2:92"},"nodeType":"YulFunctionCall","src":"1418:13:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1411:6:92"},"nodeType":"YulFunctionCall","src":"1411:21:92"},"nodeType":"YulIf","src":"1408:144:92"},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1568:9:92"},{"name":"value0","nodeType":"YulIdentifier","src":"1579:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1561:6:92"},"nodeType":"YulFunctionCall","src":"1561:25:92"},"nodeType":"YulExpressionStatement","src":"1561:25:92"}]},"name":"abi_encode_tuple_t_enum$_PluginType_$13330__to_t_uint8__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1332:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1343:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1354:4:92","type":""}],"src":"1248:344:92"},{"body":{"nodeType":"YulBlock","src":"1698:76:92","statements":[{"nodeType":"YulAssignment","src":"1708:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1720:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1731:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1716:3:92"},"nodeType":"YulFunctionCall","src":"1716:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1708:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1750:9:92"},{"name":"value0","nodeType":"YulIdentifier","src":"1761:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1743:6:92"},"nodeType":"YulFunctionCall","src":"1743:25:92"},"nodeType":"YulExpressionStatement","src":"1743:25:92"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1667:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1678:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1689:4:92","type":""}],"src":"1597:177:92"},{"body":{"nodeType":"YulBlock","src":"1863:239:92","statements":[{"body":{"nodeType":"YulBlock","src":"1909:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1918:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1921:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1911:6:92"},"nodeType":"YulFunctionCall","src":"1911:12:92"},"nodeType":"YulExpressionStatement","src":"1911:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1884:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"1893:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1880:3:92"},"nodeType":"YulFunctionCall","src":"1880:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"1905:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1876:3:92"},"nodeType":"YulFunctionCall","src":"1876:32:92"},"nodeType":"YulIf","src":"1873:52:92"},{"nodeType":"YulVariableDeclaration","src":"1934:36:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1960:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1947:12:92"},"nodeType":"YulFunctionCall","src":"1947:23:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"1938:5:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"2056:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2065:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2068:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2058:6:92"},"nodeType":"YulFunctionCall","src":"2058:12:92"},"nodeType":"YulExpressionStatement","src":"2058:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1992:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2003:5:92"},{"kind":"number","nodeType":"YulLiteral","src":"2010:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1999:3:92"},"nodeType":"YulFunctionCall","src":"1999:54:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1989:2:92"},"nodeType":"YulFunctionCall","src":"1989:65:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1982:6:92"},"nodeType":"YulFunctionCall","src":"1982:73:92"},"nodeType":"YulIf","src":"1979:93:92"},{"nodeType":"YulAssignment","src":"2081:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"2091:5:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2081:6:92"}]}]},"name":"abi_decode_tuple_t_contract$_IDAO_$10865","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1829:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1840:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1852:6:92","type":""}],"src":"1779:323:92"},{"body":{"nodeType":"YulBlock","src":"2281:236:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2298:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2309:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2291:6:92"},"nodeType":"YulFunctionCall","src":"2291:21:92"},"nodeType":"YulExpressionStatement","src":"2291:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2332:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2343:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2328:3:92"},"nodeType":"YulFunctionCall","src":"2328:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"2348:2:92","type":"","value":"46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2321:6:92"},"nodeType":"YulFunctionCall","src":"2321:30:92"},"nodeType":"YulExpressionStatement","src":"2321:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2371:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2382:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2367:3:92"},"nodeType":"YulFunctionCall","src":"2367:18:92"},{"hexValue":"496e697469616c697a61626c653a20636f6e747261637420697320616c726561","kind":"string","nodeType":"YulLiteral","src":"2387:34:92","type":"","value":"Initializable: contract is alrea"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2360:6:92"},"nodeType":"YulFunctionCall","src":"2360:62:92"},"nodeType":"YulExpressionStatement","src":"2360:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2442:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2453:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2438:3:92"},"nodeType":"YulFunctionCall","src":"2438:18:92"},{"hexValue":"647920696e697469616c697a6564","kind":"string","nodeType":"YulLiteral","src":"2458:16:92","type":"","value":"dy initialized"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2431:6:92"},"nodeType":"YulFunctionCall","src":"2431:44:92"},"nodeType":"YulExpressionStatement","src":"2431:44:92"},{"nodeType":"YulAssignment","src":"2484:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2496:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2507:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2492:3:92"},"nodeType":"YulFunctionCall","src":"2492:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2484:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2258:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2272:4:92","type":""}],"src":"2107:410:92"},{"body":{"nodeType":"YulBlock","src":"2629:87:92","statements":[{"nodeType":"YulAssignment","src":"2639:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2651:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2662:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2647:3:92"},"nodeType":"YulFunctionCall","src":"2647:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2639:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2681:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2696:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"2704:4:92","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2692:3:92"},"nodeType":"YulFunctionCall","src":"2692:17:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2674:6:92"},"nodeType":"YulFunctionCall","src":"2674:36:92"},"nodeType":"YulExpressionStatement","src":"2674:36:92"}]},"name":"abi_encode_tuple_t_rational_1_by_1__to_t_uint8__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2598:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"2609:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2620:4:92","type":""}],"src":"2522:194:92"},{"body":{"nodeType":"YulBlock","src":"2895:233:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2912:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2923:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2905:6:92"},"nodeType":"YulFunctionCall","src":"2905:21:92"},"nodeType":"YulExpressionStatement","src":"2905:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2946:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2957:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2942:3:92"},"nodeType":"YulFunctionCall","src":"2942:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"2962:2:92","type":"","value":"43"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2935:6:92"},"nodeType":"YulFunctionCall","src":"2935:30:92"},"nodeType":"YulExpressionStatement","src":"2935:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2985:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2996:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2981:3:92"},"nodeType":"YulFunctionCall","src":"2981:18:92"},{"hexValue":"496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069","kind":"string","nodeType":"YulLiteral","src":"3001:34:92","type":"","value":"Initializable: contract is not i"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2974:6:92"},"nodeType":"YulFunctionCall","src":"2974:62:92"},"nodeType":"YulExpressionStatement","src":"2974:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3056:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3067:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3052:3:92"},"nodeType":"YulFunctionCall","src":"3052:18:92"},{"hexValue":"6e697469616c697a696e67","kind":"string","nodeType":"YulLiteral","src":"3072:13:92","type":"","value":"nitializing"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3045:6:92"},"nodeType":"YulFunctionCall","src":"3045:41:92"},"nodeType":"YulExpressionStatement","src":"3045:41:92"},{"nodeType":"YulAssignment","src":"3095:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3107:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3118:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3103:3:92"},"nodeType":"YulFunctionCall","src":"3103:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3095:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2872:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2886:4:92","type":""}],"src":"2721:407:92"}]},"contents":"{\n { }\n function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n if iszero(eq(value, and(value, shl(224, 0xffffffff)))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 96)\n let pos := headStart\n pos := headStart\n let srcPtr := value0\n let i := 0\n for { } lt(i, 0x03) { i := add(i, 1) }\n {\n mstore(pos, and(mload(srcPtr), 0xff))\n let _1 := 0x20\n pos := add(pos, _1)\n srcPtr := add(srcPtr, _1)\n }\n }\n function abi_encode_tuple_t_contract$_IDAO_$10865__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_encode_tuple_t_enum$_PluginType_$13330__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n if iszero(lt(value0, 3))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x21)\n revert(0, 0x24)\n }\n mstore(headStart, value0)\n }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_decode_tuple_t_contract$_IDAO_$10865(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 46)\n mstore(add(headStart, 64), \"Initializable: contract is alrea\")\n mstore(add(headStart, 96), \"dy initialized\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_rational_1_by_1__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xff))\n }\n function abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 43)\n mstore(add(headStart, 64), \"Initializable: contract is not i\")\n mstore(add(headStart, 96), \"nitializing\")\n tail := add(headStart, 128)\n }\n}","id":92,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100725760003560e01c806341de68301161005057806341de6830146100dc5780636accab8c146100eb578063c4d66de81461010257600080fd5b806301ffc9a7146100775780632ae9c6001461009f5780634162169f146100b4575b600080fd5b61008a610085366004610405565b610117565b60405190151581526020015b60405180910390f35b6100a7610168565b6040516100969190610436565b60655460405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610096565b6001604051610096919061046a565b6100f460975481565b604051908152602001610096565b610115610110366004610492565b610192565b005b60006001600160e01b0319821663041de68360e41b148061014757506001600160e01b03198216621574e360e91b145b8061016257506301ffc9a760e01b6001600160e01b03198316145b92915050565b6101706103e7565b5060408051606081018252600181526004602082015260009181019190915290565b600054610100900460ff16158080156101b25750600054600160ff909116105b806101cc5750303b1580156101cc575060005460ff166001145b6102435760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b6000805460ff191660011790558015610266576000805461ff0019166101001790555b61026f826102be565b600160975580156102ba576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b600054610100900460ff166103295760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840161023a565b61033281610335565b50565b600054610100900460ff166103a05760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840161023a565b606580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60405180606001604052806003906020820280368337509192915050565b60006020828403121561041757600080fd5b81356001600160e01b03198116811461042f57600080fd5b9392505050565b60608101818360005b600381101561046157815160ff1683526020928301929091019060010161043f565b50505092915050565b602081016003831061048c57634e487b7160e01b600052602160045260246000fd5b91905290565b6000602082840312156104a457600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461042f57600080fdfea164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x72 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x41DE6830 GT PUSH2 0x50 JUMPI DUP1 PUSH4 0x41DE6830 EQ PUSH2 0xDC JUMPI DUP1 PUSH4 0x6ACCAB8C EQ PUSH2 0xEB JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0x102 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x77 JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0x9F JUMPI DUP1 PUSH4 0x4162169F EQ PUSH2 0xB4 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8A PUSH2 0x85 CALLDATASIZE PUSH1 0x4 PUSH2 0x405 JUMP JUMPDEST PUSH2 0x117 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xA7 PUSH2 0x168 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x96 SWAP2 SWAP1 PUSH2 0x436 JUMP JUMPDEST PUSH1 0x65 SLOAD PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x96 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x40 MLOAD PUSH2 0x96 SWAP2 SWAP1 PUSH2 0x46A JUMP JUMPDEST PUSH2 0xF4 PUSH1 0x97 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x96 JUMP JUMPDEST PUSH2 0x115 PUSH2 0x110 CALLDATASIZE PUSH1 0x4 PUSH2 0x492 JUMP JUMPDEST PUSH2 0x192 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x41DE683 PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x147 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x162 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x170 PUSH2 0x3E7 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 DUP1 ISZERO PUSH2 0x1B2 JUMPI POP PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xFF SWAP1 SWAP2 AND LT JUMPDEST DUP1 PUSH2 0x1CC JUMPI POP ADDRESS EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1CC JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF AND PUSH1 0x1 EQ JUMPDEST PUSH2 0x243 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x647920696E697469616C697A6564000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE DUP1 ISZERO PUSH2 0x266 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND PUSH2 0x100 OR SWAP1 SSTORE JUMPDEST PUSH2 0x26F DUP3 PUSH2 0x2BE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x97 SSTORE DUP1 ISZERO PUSH2 0x2BA JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x329 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x23A JUMP JUMPDEST PUSH2 0x332 DUP2 PUSH2 0x335 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x3A0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x23A JUMP JUMPDEST PUSH1 0x65 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x417 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x42F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0x461 JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x43F JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH1 0x3 DUP4 LT PUSH2 0x48C JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 SWAP1 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x42F JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"371:207:48:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1810:288:74;;;;;;:::i;:::-;;:::i;:::-;;;470:14:92;;463:22;445:41;;433:2;418:18;1810:288:74;;;;;;;;631:98:90;;;:::i;:::-;;;;;;;:::i;1200:70:67:-;1259:4;;1200:70;;1259:4;;;;1163:74:92;;1151:2;1136:18;1200:70:67;1003:240:92;1494:108:74;1575:20;1494:108;;;;;;:::i;431:21:48:-;;;;;;;;;1743:25:92;;;1731:2;1716:18;431:21:48;1597:177:92;459:117:48;;;;;;:::i;:::-;;:::i;:::-;;1810:288:74;1896:4;-1:-1:-1;;;;;;1931:41:74;;-1:-1:-1;;;1931:41:74;;:107;;-1:-1:-1;;;;;;;1988:50:74;;-1:-1:-1;;;1988:50:74;1931:107;:160;;;-1:-1:-1;;;;;;;;;;1189:51:11;;;2054:37:74;1912:179;1810:288;-1:-1:-1;;1810:288:74:o;631:98:90:-;679:15;;:::i;:::-;-1:-1:-1;706:16:90;;;;;;;;714:1;706:16;;717:1;706:16;;;;-1:-1:-1;706:16:90;;;;;;;;631:98::o;459:117:48:-;3279:19:4;3302:13;;;;;;3301:14;;3347:34;;;;-1:-1:-1;3365:12:4;;3380:1;3365:12;;;;:16;3347:34;3346:108;;;-1:-1:-1;3426:4:4;1713:19:6;:23;;;3387:66:4;;-1:-1:-1;3436:12:4;;;;;:17;3387:66;3325:201;;;;-1:-1:-1;;;3325:201:4;;2309:2:92;3325:201:4;;;2291:21:92;2348:2;2328:18;;;2321:30;2387:34;2367:18;;;2360:62;2458:16;2438:18;;;2431:44;2492:19;;3325:201:4;;;;;;;;;3536:12;:16;;-1:-1:-1;;3536:16:4;3551:1;3536:16;;;3562:65;;;;3596:13;:20;;-1:-1:-1;;3596:20:4;;;;;3562:65;521:28:48::1;544:4;521:22;:28::i;:::-;568:1;559:6;:10:::0;3647:99:4;;;;3697:5;3681:21;;-1:-1:-1;;3681:21:4;;;3721:14;;-1:-1:-1;2674:36:92;;3721:14:4;;2662:2:92;2647:18;3721:14:4;;;;;;;3647:99;3269:483;459:117:48;:::o;1327:133:74:-;5374:13:4;;;;;;;5366:69;;;;-1:-1:-1;;;5366:69:4;;2923:2:92;5366:69:4;;;2905:21:92;2962:2;2942:18;;;2935:30;3001:34;2981:18;;;2974:62;-1:-1:-1;;;3052:18:92;;;3045:41;3103:19;;5366:69:4;2721:407:92;5366:69:4;1414:39:74::1;1448:4;1414:33;:39::i;:::-;1327:133:::0;:::o;1010:108:67:-;5374:13:4;;;;;;;5366:69;;;;-1:-1:-1;;;5366:69:4;;2923:2:92;5366:69:4;;;2905:21:92;2962:2;2942:18;;;2935:30;3001:34;2981:18;;;2974:62;-1:-1:-1;;;3052:18:92;;;3045:41;3103:19;;5366:69:4;2721:407:92;5366:69:4;1100:4:67::1;:11:::0;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;1010:108::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:286:92:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:92;;209:43;;199:71;;266:1;263;256:12;199:71;289:5;14:286;-1:-1:-1;;;14:286:92:o;497:501::-;673:2;658:18;;662:9;753:6;631:4;787:205;801:4;798:1;795:11;787:205;;;864:13;;879:4;860:24;848:37;;908:4;932:12;;;;967:15;;;;821:1;814:9;787:205;;;791:3;;;497:501;;;;:::o;1248:344::-;1396:2;1381:18;;1429:1;1418:13;;1408:144;;1474:10;1469:3;1465:20;1462:1;1455:31;1509:4;1506:1;1499:15;1537:4;1534:1;1527:15;1408:144;1561:25;;;1248:344;:::o;1779:323::-;1852:6;1905:2;1893:9;1884:7;1880:23;1876:32;1873:52;;;1921:1;1918;1911:12;1873:52;1960:9;1947:23;2010:42;2003:5;1999:54;1992:5;1989:65;1979:93;;2068:1;2065;2058:12"},"gasEstimates":{"creation":{"codeDepositCost":"247400","executionCost":"29876","totalCost":"277276"},"external":{"dao()":"2334","initialize(address)":"133781","pluginType()":"227","protocolVersion()":"infinite","state1()":"2317","supportsInterface(bytes4)":"482"}},"methodIdentifiers":{"dao()":"4162169f","initialize(address)":"c4d66de8","pluginType()":"41de6830","protocolVersion()":"2ae9c600","state1()":"6accab8c","supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"dao\",\"outputs\":[{\"internalType\":\"contract IDAO\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IDAO\",\"name\":\"_dao\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pluginType\",\"outputs\":[{\"internalType\":\"enum IPlugin.PluginType\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"protocolVersion\",\"outputs\":[{\"internalType\":\"uint8[3]\",\"name\":\"\",\"type\":\"uint8[3]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"state1\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"DO NOT USE IN PRODUCTION!\",\"kind\":\"dev\",\"methods\":{\"dao()\":{\"returns\":{\"_0\":\"The DAO contract.\"}},\"protocolVersion()\":{\"details\":\"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\",\"returns\":{\"_0\":\"Returns the semantic Aragon OSx protocol version number.\"}},\"supportsInterface(bytes4)\":{\"params\":{\"_interfaceId\":\"The ID of the interface.\"},\"returns\":{\"_0\":\"Returns `true` if the interface is supported.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"dao()\":{\"notice\":\"Returns the DAO contract.\"},\"pluginType()\":{\"notice\":\"Returns the plugin's type\"},\"protocolVersion()\":{\"notice\":\"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Checks if this or the parent contract supports an interface by its ID.\"}},\"notice\":\"A mock cloneable plugin to be deployed via the minimal proxy pattern. v1.1 (Release 1, Build 1)\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/mocks/plugin/PluginCloneableMock.sol\":\"PluginCloneableMockBuild1\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n function __Context_init() internal onlyInitializing {\\n }\\n\\n function __Context_init_unchained() internal onlyInitializing {\\n }\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n function _contextSuffixLength() internal view virtual returns (uint256) {\\n return 0;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x75097e35253e7fb282ee4d7f27a80eaacfa759923185bf17302a89cbc059c5ef\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165Upgradeable.sol\\\";\\nimport {Initializable} from \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165Upgradeable is Initializable, IERC165Upgradeable {\\n function __ERC165_init() internal onlyInitializing {\\n }\\n\\n function __ERC165_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165Upgradeable).interfaceId;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0xd90d7723512df65ae417adaf0801042940f0dabd60039ceeaffe34aa5b238da1\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165Upgradeable {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\"},\"src/dao/IDAO.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IDAO\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for DAOs within the Aragon App DAO framework.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IDAO {\\n /// @notice The action struct to be consumed by the DAO's `execute` function resulting in an external call.\\n /// @param to The address to call.\\n /// @param value The native token value to be sent with the call.\\n /// @param data The bytes-encoded function selector and calldata for the call.\\n struct Action {\\n address to;\\n uint256 value;\\n bytes data;\\n }\\n\\n /// @notice Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\\n /// @param _where The address of the contract.\\n /// @param _who The address of a EOA or contract to give the permissions.\\n /// @param _permissionId The permission identifier.\\n /// @param _data The optional data passed to the `PermissionCondition` registered.\\n /// @return Returns true if the address has permission, false if not.\\n function hasPermission(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes memory _data\\n ) external view returns (bool);\\n\\n /// @notice Updates the DAO metadata (e.g., an IPFS hash).\\n /// @param _metadata The IPFS hash of the new metadata object.\\n function setMetadata(bytes calldata _metadata) external;\\n\\n /// @notice Emitted when the DAO metadata is updated.\\n /// @param metadata The IPFS hash of the new metadata object.\\n event MetadataSet(bytes metadata);\\n\\n /// @notice Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted.\\n /// @param _callId The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce.\\n /// @param _actions The array of actions.\\n /// @param _allowFailureMap A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @return The array of results obtained from the executed actions in `bytes`.\\n /// @return The resulting failure map containing the actions have actually failed.\\n function execute(\\n bytes32 _callId,\\n Action[] memory _actions,\\n uint256 _allowFailureMap\\n ) external returns (bytes[] memory, uint256);\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param actor The address of the caller.\\n /// @param callId The ID of the call.\\n /// @param actions The array of actions executed.\\n /// @param allowFailureMap The allow failure map encoding which actions are allowed to fail.\\n /// @param failureMap The failure map encoding which actions have failed.\\n /// @param execResults The array with the results of the executed actions.\\n /// @dev The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce.\\n event Executed(\\n address indexed actor,\\n bytes32 callId,\\n Action[] actions,\\n uint256 allowFailureMap,\\n uint256 failureMap,\\n bytes[] execResults\\n );\\n\\n /// @notice Emitted when a standard callback is registered.\\n /// @param interfaceId The ID of the interface.\\n /// @param callbackSelector The selector of the callback function.\\n /// @param magicNumber The magic number to be registered for the callback function selector.\\n event StandardCallbackRegistered(\\n bytes4 interfaceId,\\n bytes4 callbackSelector,\\n bytes4 magicNumber\\n );\\n\\n /// @notice Deposits (native) tokens to the DAO contract with a reference string.\\n /// @param _token The address of the token or address(0) in case of the native token.\\n /// @param _amount The amount of tokens to deposit.\\n /// @param _reference The reference describing the deposit reason.\\n function deposit(address _token, uint256 _amount, string calldata _reference) external payable;\\n\\n /// @notice Emitted when a token deposit has been made to the DAO.\\n /// @param sender The address of the sender.\\n /// @param token The address of the deposited token.\\n /// @param amount The amount of tokens deposited.\\n /// @param _reference The reference describing the deposit reason.\\n event Deposited(\\n address indexed sender,\\n address indexed token,\\n uint256 amount,\\n string _reference\\n );\\n\\n /// @notice Emitted when a native token deposit has been made to the DAO.\\n /// @dev This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).\\n /// @param sender The address of the sender.\\n /// @param amount The amount of native tokens deposited.\\n event NativeTokenDeposited(address sender, uint256 amount);\\n\\n /// @notice Setter for the trusted forwarder verifying the meta transaction.\\n /// @param _trustedForwarder The trusted forwarder address.\\n function setTrustedForwarder(address _trustedForwarder) external;\\n\\n /// @notice Getter for the trusted forwarder verifying the meta transaction.\\n /// @return The trusted forwarder address.\\n function getTrustedForwarder() external view returns (address);\\n\\n /// @notice Emitted when a new TrustedForwarder is set on the DAO.\\n /// @param forwarder the new forwarder address.\\n event TrustedForwarderSet(address forwarder);\\n\\n /// @notice Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\\n /// @param _hash The hash of the data to be signed.\\n /// @param _signature The signature byte array associated with `_hash`.\\n /// @return Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not.\\n function isValidSignature(bytes32 _hash, bytes memory _signature) external returns (bytes4);\\n\\n /// @notice Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\\n /// @param _interfaceId The ID of the interface.\\n /// @param _callbackSelector The selector of the callback function.\\n /// @param _magicNumber The magic number to be registered for the function signature.\\n function registerStandardCallback(\\n bytes4 _interfaceId,\\n bytes4 _callbackSelector,\\n bytes4 _magicNumber\\n ) external;\\n\\n /// @notice Removed function being left here to not corrupt the IDAO interface ID. Any call will revert.\\n /// @dev Introduced in v1.0.0. Removed in v1.4.0.\\n function setSignatureValidator(address) external;\\n}\\n\",\"keccak256\":\"0xb7f615523c26de042edce98731c658f44a1edb2464387ac1b642c4c69f57128e\",\"license\":\"AGPL-3.0-or-later\"},\"src/mocks/plugin/PluginCloneableMock.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\n/* solhint-disable one-contract-per-file */\\npragma solidity ^0.8.8;\\n\\nimport {PluginCloneable} from \\\"../../plugin/PluginCloneable.sol\\\";\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice A mock cloneable plugin to be deployed via the minimal proxy pattern.\\n/// v1.1 (Release 1, Build 1)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginCloneableMockBuild1 is PluginCloneable {\\n uint256 public state1;\\n\\n function initialize(IDAO _dao) external initializer {\\n __PluginCloneable_init(_dao);\\n state1 = 1;\\n }\\n}\\n\\n/// @notice A mock cloneable plugin to be deployed via the minimal proxy pattern.\\n/// v1.1 (Release 1, Build 2)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginCloneableMockBuild2 is PluginCloneable {\\n uint256 public state1;\\n uint256 public state2;\\n\\n function initialize(IDAO _dao) external initializer {\\n __PluginCloneable_init(_dao);\\n state1 = 1;\\n state2 = 2;\\n }\\n}\\n\\n/// @notice A mock cloneable plugin missing an initializer function.\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginCloneableMockBad is PluginCloneable {\\n uint256 public state1;\\n\\n function notAnInitializer(IDAO _dao) external {\\n __PluginCloneable_init(_dao);\\n state1 = 1;\\n }\\n}\\n\",\"keccak256\":\"0x1bb271f7b553040fad7907e97b860aa833aec9aefe7477e00ba7bdfd80d84e98\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/DaoAuthorizableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ContextUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\\\";\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\nimport {_auth} from \\\"./auth.sol\\\";\\n\\n/// @title DaoAuthorizableUpgradeable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract contract providing a meta-transaction compatible modifier for upgradeable or cloneable contracts to authorize function calls through an associated DAO.\\n/// @dev Make sure to call `__DaoAuthorizableUpgradeable_init` during initialization of the inheriting contract.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract DaoAuthorizableUpgradeable is ContextUpgradeable {\\n /// @notice The associated DAO managing the permissions of inheriting contracts.\\n IDAO private dao_;\\n\\n /// @notice Initializes the contract by setting the associated DAO.\\n /// @param _dao The associated DAO address.\\n // solhint-disable-next-line func-name-mixedcase\\n function __DaoAuthorizableUpgradeable_init(IDAO _dao) internal onlyInitializing {\\n dao_ = _dao;\\n }\\n\\n /// @notice Returns the DAO contract.\\n /// @return The DAO contract.\\n function dao() public view returns (IDAO) {\\n return dao_;\\n }\\n\\n /// @notice A modifier to make functions on inheriting contracts authorized. Permissions to call the function are checked through the associated DAO's permission manager.\\n /// @param _permissionId The permission identifier required to call the method this modifier is applied to.\\n modifier auth(bytes32 _permissionId) {\\n _auth(dao_, address(this), _msgSender(), _permissionId, _msgData());\\n _;\\n }\\n\\n /// @notice This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain (see [OpenZeppelin's guide about storage gaps](https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps)).\\n uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0x7fac6b01b037ba1cb9d6a22d3f43b0785037dcf496ffb672434d9bf7227d2585\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/auth.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice Thrown if a call is unauthorized in the associated DAO.\\n/// @param dao The associated DAO.\\n/// @param where The context in which the authorization reverted.\\n/// @param who The address (EOA or contract) missing the permission.\\n/// @param permissionId The permission identifier.\\nerror DaoUnauthorized(address dao, address where, address who, bytes32 permissionId);\\n\\n/// @notice A free function checking if a caller is granted permissions on a target contract via a permission identifier that redirects the approval to a `PermissionCondition` if this was specified in the setup.\\n/// @param _where The address of the target contract for which `who` receives permission.\\n/// @param _who The address (EOA or contract) owning the permission.\\n/// @param _permissionId The permission identifier.\\n/// @param _data The optional data passed to the `PermissionCondition` registered.\\n/// @custom:security-contact sirt@aragon.org\\nfunction _auth(\\n IDAO _dao,\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes calldata _data\\n) view {\\n if (!_dao.hasPermission(_where, _who, _permissionId, _data))\\n revert DaoUnauthorized({\\n dao: address(_dao),\\n where: _where,\\n who: _who,\\n permissionId: _permissionId\\n });\\n}\\n\",\"keccak256\":\"0x878764b4f87fe0651fb3798fb9cb87c952f8c6caf6ae79c7f09de84df6c00298\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/IPlugin.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IPlugin\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the traits of a plugin.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IPlugin {\\n enum PluginType {\\n UUPS,\\n Cloneable,\\n Constructable\\n }\\n\\n /// @notice Returns the plugin's type\\n function pluginType() external view returns (PluginType);\\n}\\n\",\"keccak256\":\"0xc57cd0d10b6380ab7f54c713a509e88fd8f4ad9288313a0e8e12b8887817ddfe\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/PluginCloneable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ERC165Upgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\\\";\\n\\nimport {IProtocolVersion} from \\\"../utils/versioning/IProtocolVersion.sol\\\";\\nimport {ProtocolVersion} from \\\"../utils/versioning/ProtocolVersion.sol\\\";\\nimport {DaoAuthorizableUpgradeable} from \\\"../permission/auth/DaoAuthorizableUpgradeable.sol\\\";\\nimport {IDAO} from \\\"../dao/IDAO.sol\\\";\\nimport {IPlugin} from \\\"./IPlugin.sol\\\";\\n\\n/// @title PluginCloneable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract, non-upgradeable contract to inherit from when creating a plugin being deployed via the minimal clones pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)).\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract PluginCloneable is\\n IPlugin,\\n ERC165Upgradeable,\\n DaoAuthorizableUpgradeable,\\n ProtocolVersion\\n{\\n /// @notice Disables the initializers on the implementation contract to prevent it from being left uninitialized.\\n /// @custom:oz-upgrades-unsafe-allow constructor\\n constructor() {\\n _disableInitializers();\\n }\\n\\n /// @notice Initializes the plugin by storing the associated DAO.\\n /// @param _dao The DAO contract.\\n // solhint-disable-next-line func-name-mixedcase\\n function __PluginCloneable_init(IDAO _dao) internal virtual onlyInitializing {\\n __DaoAuthorizableUpgradeable_init(_dao);\\n }\\n\\n /// @inheritdoc IPlugin\\n function pluginType() public pure override returns (PluginType) {\\n return PluginType.Cloneable;\\n }\\n\\n /// @notice Checks if this or the parent contract supports an interface by its ID.\\n /// @param _interfaceId The ID of the interface.\\n /// @return Returns `true` if the interface is supported.\\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\\n return\\n _interfaceId == type(IPlugin).interfaceId ||\\n _interfaceId == type(IProtocolVersion).interfaceId ||\\n super.supportsInterface(_interfaceId);\\n }\\n}\\n\",\"keccak256\":\"0x68e260b9b370d68252f0c707461d5e4c2188a7bfed42ed9192657b36330a1f7a\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/IProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IProtocolVersion\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the semantic Aragon OSx protocol version number.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IProtocolVersion {\\n /// @notice Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\\n /// @return _version Returns the semantic Aragon OSx protocol version number.\\n /// @dev This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\\n function protocolVersion() external view returns (uint8[3] memory _version);\\n}\\n\",\"keccak256\":\"0x00a4da654d21dc1bdadbdc8bd54bb86c378c56f85e461ccc31303628ea621361\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/ProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IProtocolVersion} from \\\"./IProtocolVersion.sol\\\";\\n\\n/// @title ProtocolVersion\\n/// @author Aragon X - 2023\\n/// @notice An abstract, stateless, non-upgradeable contract providing the current Aragon OSx protocol version number.\\n/// @dev Do not add any new variables to this contract that would shift down storage in the inheritance chain.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract ProtocolVersion is IProtocolVersion {\\n // IMPORTANT: Do not add any storage variable, see the above notice.\\n\\n /// @inheritdoc IProtocolVersion\\n function protocolVersion() public pure returns (uint8[3] memory) {\\n return [1, 4, 0];\\n }\\n}\\n\",\"keccak256\":\"0x3975c937be935f687c6b6b8f379071232681e98cf04b175d72781b819ea52bdb\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[{"astId":372,"contract":"src/mocks/plugin/PluginCloneableMock.sol:PluginCloneableMockBuild1","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":375,"contract":"src/mocks/plugin/PluginCloneableMock.sol:PluginCloneableMockBuild1","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":2821,"contract":"src/mocks/plugin/PluginCloneableMock.sol:PluginCloneableMockBuild1","label":"__gap","offset":0,"slot":"1","type":"t_array(t_uint256)50_storage"},{"astId":2592,"contract":"src/mocks/plugin/PluginCloneableMock.sol:PluginCloneableMockBuild1","label":"__gap","offset":0,"slot":"51","type":"t_array(t_uint256)50_storage"},{"astId":13111,"contract":"src/mocks/plugin/PluginCloneableMock.sol:PluginCloneableMockBuild1","label":"dao_","offset":0,"slot":"101","type":"t_contract(IDAO)10865"},{"astId":13160,"contract":"src/mocks/plugin/PluginCloneableMock.sol:PluginCloneableMockBuild1","label":"__gap","offset":0,"slot":"102","type":"t_array(t_uint256)49_storage"},{"astId":11201,"contract":"src/mocks/plugin/PluginCloneableMock.sol:PluginCloneableMockBuild1","label":"state1","offset":0,"slot":"151","type":"t_uint256"}],"types":{"t_array(t_uint256)49_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[49]","numberOfBytes":"1568"},"t_array(t_uint256)50_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[50]","numberOfBytes":"1600"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_contract(IDAO)10865":{"encoding":"inplace","label":"contract IDAO","numberOfBytes":"20"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"kind":"user","methods":{"dao()":{"notice":"Returns the DAO contract."},"pluginType()":{"notice":"Returns the plugin's type"},"protocolVersion()":{"notice":"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with."},"supportsInterface(bytes4)":{"notice":"Checks if this or the parent contract supports an interface by its ID."}},"notice":"A mock cloneable plugin to be deployed via the minimal proxy pattern. v1.1 (Release 1, Build 1)","version":1}},"PluginCloneableMockBuild2":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"inputs":[],"name":"dao","outputs":[{"internalType":"contract IDAO","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IDAO","name":"_dao","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pluginType","outputs":[{"internalType":"enum IPlugin.PluginType","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"protocolVersion","outputs":[{"internalType":"uint8[3]","name":"","type":"uint8[3]"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"state1","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"state2","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"DO NOT USE IN PRODUCTION!","kind":"dev","methods":{"dao()":{"returns":{"_0":"The DAO contract."}},"protocolVersion()":{"details":"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.","returns":{"_0":"Returns the semantic Aragon OSx protocol version number."}},"supportsInterface(bytes4)":{"params":{"_interfaceId":"The ID of the interface."},"returns":{"_0":"Returns `true` if the interface is supported."}}},"version":1},"evm":{"bytecode":{"functionDebugData":{"@_13445":{"entryPoint":null,"id":13445,"parameterSlots":0,"returnSlots":0},"@_disableInitializers_515":{"entryPoint":30,"id":515,"parameterSlots":0,"returnSlots":0},"abi_encode_tuple_t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:608:92","statements":[{"nodeType":"YulBlock","src":"6:3:92","statements":[]},{"body":{"nodeType":"YulBlock","src":"188:229:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"205:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"216:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"198:6:92"},"nodeType":"YulFunctionCall","src":"198:21:92"},"nodeType":"YulExpressionStatement","src":"198:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"239:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"250:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"235:3:92"},"nodeType":"YulFunctionCall","src":"235:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"255:2:92","type":"","value":"39"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"228:6:92"},"nodeType":"YulFunctionCall","src":"228:30:92"},"nodeType":"YulExpressionStatement","src":"228:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"278:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"289:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"274:3:92"},"nodeType":"YulFunctionCall","src":"274:18:92"},{"hexValue":"496e697469616c697a61626c653a20636f6e747261637420697320696e697469","kind":"string","nodeType":"YulLiteral","src":"294:34:92","type":"","value":"Initializable: contract is initi"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"267:6:92"},"nodeType":"YulFunctionCall","src":"267:62:92"},"nodeType":"YulExpressionStatement","src":"267:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"349:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"360:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"345:3:92"},"nodeType":"YulFunctionCall","src":"345:18:92"},{"hexValue":"616c697a696e67","kind":"string","nodeType":"YulLiteral","src":"365:9:92","type":"","value":"alizing"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"338:6:92"},"nodeType":"YulFunctionCall","src":"338:37:92"},"nodeType":"YulExpressionStatement","src":"338:37:92"},{"nodeType":"YulAssignment","src":"384:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"396:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"407:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"392:3:92"},"nodeType":"YulFunctionCall","src":"392:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"384:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"165:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"179:4:92","type":""}],"src":"14:403:92"},{"body":{"nodeType":"YulBlock","src":"519:87:92","statements":[{"nodeType":"YulAssignment","src":"529:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"541:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"552:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"537:3:92"},"nodeType":"YulFunctionCall","src":"537:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"529:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"571:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"586:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"594:4:92","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"582:3:92"},"nodeType":"YulFunctionCall","src":"582:17:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"564:6:92"},"nodeType":"YulFunctionCall","src":"564:36:92"},"nodeType":"YulExpressionStatement","src":"564:36:92"}]},"name":"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"488:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"499:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"510:4:92","type":""}],"src":"422:184:92"}]},"contents":"{\n { }\n function abi_encode_tuple_t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 39)\n mstore(add(headStart, 64), \"Initializable: contract is initi\")\n mstore(add(headStart, 96), \"alizing\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xff))\n }\n}","id":92,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"608060405234801561001057600080fd5b5061001961001e565b6100dd565b600054610100900460ff161561008a5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116146100db576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6104ee806100ec6000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806341de68301161005b57806341de6830146100e75780636accab8c146100f6578063c4d66de81461010d578063efe51cca1461012257600080fd5b806301ffc9a7146100825780632ae9c600146100aa5780634162169f146100bf575b600080fd5b61009561009036600461041e565b61012b565b60405190151581526020015b60405180910390f35b6100b261017c565b6040516100a1919061044f565b60655460405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100a1565b60016040516100a19190610483565b6100ff60975481565b6040519081526020016100a1565b61012061011b3660046104ab565b6101a6565b005b6100ff60985481565b60006001600160e01b0319821663041de68360e41b148061015b57506001600160e01b03198216621574e360e91b145b8061017657506301ffc9a760e01b6001600160e01b03198316145b92915050565b610184610400565b5060408051606081018252600181526004602082015260009181019190915290565b600054610100900460ff16158080156101c65750600054600160ff909116105b806101e05750303b1580156101e0575060005460ff166001145b6102575760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b6000805460ff19166001179055801561027a576000805461ff0019166101001790555b610283826102d7565b6001609755600260985580156102d3576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b600054610100900460ff166103425760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840161024e565b61034b8161034e565b50565b600054610100900460ff166103b95760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840161024e565b606580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60405180606001604052806003906020820280368337509192915050565b60006020828403121561043057600080fd5b81356001600160e01b03198116811461044857600080fd5b9392505050565b60608101818360005b600381101561047a57815160ff16835260209283019290910190600101610458565b50505092915050565b60208101600383106104a557634e487b7160e01b600052602160045260246000fd5b91905290565b6000602082840312156104bd57600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461044857600080fdfea164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x19 PUSH2 0x1E JUMP JUMPDEST PUSH2 0xDD JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x8A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x27 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320696E697469 PUSH1 0x44 DUP3 ADD MSTORE PUSH7 0x616C697A696E67 PUSH1 0xC8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xFF SWAP1 DUP2 AND EQ PUSH2 0xDB JUMPI PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST JUMP JUMPDEST PUSH2 0x4EE DUP1 PUSH2 0xEC PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x7D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x41DE6830 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x41DE6830 EQ PUSH2 0xE7 JUMPI DUP1 PUSH4 0x6ACCAB8C EQ PUSH2 0xF6 JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0x10D JUMPI DUP1 PUSH4 0xEFE51CCA EQ PUSH2 0x122 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x82 JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0xAA JUMPI DUP1 PUSH4 0x4162169F EQ PUSH2 0xBF JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x95 PUSH2 0x90 CALLDATASIZE PUSH1 0x4 PUSH2 0x41E JUMP JUMPDEST PUSH2 0x12B JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xB2 PUSH2 0x17C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA1 SWAP2 SWAP1 PUSH2 0x44F JUMP JUMPDEST PUSH1 0x65 SLOAD PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xA1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x40 MLOAD PUSH2 0xA1 SWAP2 SWAP1 PUSH2 0x483 JUMP JUMPDEST PUSH2 0xFF PUSH1 0x97 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xA1 JUMP JUMPDEST PUSH2 0x120 PUSH2 0x11B CALLDATASIZE PUSH1 0x4 PUSH2 0x4AB JUMP JUMPDEST PUSH2 0x1A6 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xFF PUSH1 0x98 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x41DE683 PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x15B JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x176 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x184 PUSH2 0x400 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 DUP1 ISZERO PUSH2 0x1C6 JUMPI POP PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xFF SWAP1 SWAP2 AND LT JUMPDEST DUP1 PUSH2 0x1E0 JUMPI POP ADDRESS EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1E0 JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF AND PUSH1 0x1 EQ JUMPDEST PUSH2 0x257 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x647920696E697469616C697A6564000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE DUP1 ISZERO PUSH2 0x27A JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND PUSH2 0x100 OR SWAP1 SSTORE JUMPDEST PUSH2 0x283 DUP3 PUSH2 0x2D7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x97 SSTORE PUSH1 0x2 PUSH1 0x98 SSTORE DUP1 ISZERO PUSH2 0x2D3 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x342 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x24E JUMP JUMPDEST PUSH2 0x34B DUP2 PUSH2 0x34E JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x3B9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x24E JUMP JUMPDEST PUSH1 0x65 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x430 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x448 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0x47A JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x458 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH1 0x3 DUP4 LT PUSH2 0x4A5 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 SWAP1 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x448 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"727:254:48:-:0;;;;;;;;;;;;-1:-1:-1;1131:22:74;:20;:22::i;:::-;727:254:48;;5939:280:4;6007:13;;;;;;;6006:14;5998:66;;;;-1:-1:-1;;;5998:66:4;;216:2:92;5998:66:4;;;198:21:92;255:2;235:18;;;228:30;294:34;274:18;;;267:62;-1:-1:-1;;;345:18:92;;;338:37;392:19;;5998:66:4;;;;;;;;6078:12;;6094:15;6078:12;;;:31;6074:139;;6125:12;:30;;-1:-1:-1;;6125:30:4;6140:15;6125:30;;;;;;6174:28;;564:36:92;;;6174:28:4;;552:2:92;537:18;6174:28:4;;;;;;;6074:139;5939:280::o;422:184:92:-;727:254:48;;;;;;"},"deployedBytecode":{"functionDebugData":{"@__DaoAuthorizableUpgradeable_init_13125":{"entryPoint":846,"id":13125,"parameterSlots":1,"returnSlots":0},"@__PluginCloneable_init_13459":{"entryPoint":727,"id":13459,"parameterSlots":1,"returnSlots":0},"@dao_13135":{"entryPoint":null,"id":13135,"parameterSlots":0,"returnSlots":1},"@initialize_11247":{"entryPoint":422,"id":11247,"parameterSlots":1,"returnSlots":0},"@isContract_689":{"entryPoint":null,"id":689,"parameterSlots":1,"returnSlots":1},"@pluginType_13471":{"entryPoint":null,"id":13471,"parameterSlots":0,"returnSlots":1},"@protocolVersion_14765":{"entryPoint":380,"id":14765,"parameterSlots":0,"returnSlots":1},"@state1_11224":{"entryPoint":null,"id":11224,"parameterSlots":0,"returnSlots":0},"@state2_11226":{"entryPoint":null,"id":11226,"parameterSlots":0,"returnSlots":0},"@supportsInterface_13500":{"entryPoint":299,"id":13500,"parameterSlots":1,"returnSlots":1},"@supportsInterface_2816":{"entryPoint":null,"id":2816,"parameterSlots":1,"returnSlots":1},"abi_decode_tuple_t_bytes4":{"entryPoint":1054,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_contract$_IDAO_$10865":{"entryPoint":1195,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed":{"entryPoint":1103,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_contract$_IDAO_$10865__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_enum$_PluginType_$13330__to_t_uint8__fromStack_reversed":{"entryPoint":1155,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_rational_1_by_1__to_t_uint8__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:3130:92","statements":[{"nodeType":"YulBlock","src":"6:3:92","statements":[]},{"body":{"nodeType":"YulBlock","src":"83:217:92","statements":[{"body":{"nodeType":"YulBlock","src":"129:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"138:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"141:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"131:6:92"},"nodeType":"YulFunctionCall","src":"131:12:92"},"nodeType":"YulExpressionStatement","src":"131:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"104:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"113:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"100:3:92"},"nodeType":"YulFunctionCall","src":"100:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"125:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"96:3:92"},"nodeType":"YulFunctionCall","src":"96:32:92"},"nodeType":"YulIf","src":"93:52:92"},{"nodeType":"YulVariableDeclaration","src":"154:36:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"180:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"167:12:92"},"nodeType":"YulFunctionCall","src":"167:23:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"158:5:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"254:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"263:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"266:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"256:6:92"},"nodeType":"YulFunctionCall","src":"256:12:92"},"nodeType":"YulExpressionStatement","src":"256:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"212:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"223:5:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"234:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"239:10:92","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"230:3:92"},"nodeType":"YulFunctionCall","src":"230:20:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"219:3:92"},"nodeType":"YulFunctionCall","src":"219:32:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"209:2:92"},"nodeType":"YulFunctionCall","src":"209:43:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"202:6:92"},"nodeType":"YulFunctionCall","src":"202:51:92"},"nodeType":"YulIf","src":"199:71:92"},{"nodeType":"YulAssignment","src":"279:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"289:5:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"279:6:92"}]}]},"name":"abi_decode_tuple_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"49:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"60:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"72:6:92","type":""}],"src":"14:286:92"},{"body":{"nodeType":"YulBlock","src":"400:92:92","statements":[{"nodeType":"YulAssignment","src":"410:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"422:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"433:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"418:3:92"},"nodeType":"YulFunctionCall","src":"418:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"410:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"452:9:92"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"477:6:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"470:6:92"},"nodeType":"YulFunctionCall","src":"470:14:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"463:6:92"},"nodeType":"YulFunctionCall","src":"463:22:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"445:6:92"},"nodeType":"YulFunctionCall","src":"445:41:92"},"nodeType":"YulExpressionStatement","src":"445:41:92"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"369:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"380:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"391:4:92","type":""}],"src":"305:187:92"},{"body":{"nodeType":"YulBlock","src":"640:358:92","statements":[{"nodeType":"YulAssignment","src":"650:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"662:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"673:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"658:3:92"},"nodeType":"YulFunctionCall","src":"658:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"650:4:92"}]},{"nodeType":"YulVariableDeclaration","src":"685:20:92","value":{"name":"headStart","nodeType":"YulIdentifier","src":"696:9:92"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"689:3:92","type":""}]},{"nodeType":"YulAssignment","src":"714:16:92","value":{"name":"headStart","nodeType":"YulIdentifier","src":"721:9:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"714:3:92"}]},{"nodeType":"YulVariableDeclaration","src":"739:20:92","value":{"name":"value0","nodeType":"YulIdentifier","src":"753:6:92"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"743:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"768:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"777:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"772:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"834:158:92","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"855:3:92"},{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"870:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"864:5:92"},"nodeType":"YulFunctionCall","src":"864:13:92"},{"kind":"number","nodeType":"YulLiteral","src":"879:4:92","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"860:3:92"},"nodeType":"YulFunctionCall","src":"860:24:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"848:6:92"},"nodeType":"YulFunctionCall","src":"848:37:92"},"nodeType":"YulExpressionStatement","src":"848:37:92"},{"nodeType":"YulVariableDeclaration","src":"898:14:92","value":{"kind":"number","nodeType":"YulLiteral","src":"908:4:92","type":"","value":"0x20"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"902:2:92","type":""}]},{"nodeType":"YulAssignment","src":"925:19:92","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"936:3:92"},{"name":"_1","nodeType":"YulIdentifier","src":"941:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"932:3:92"},"nodeType":"YulFunctionCall","src":"932:12:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"925:3:92"}]},{"nodeType":"YulAssignment","src":"957:25:92","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"971:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"979:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"967:3:92"},"nodeType":"YulFunctionCall","src":"967:15:92"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"957:6:92"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"798:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"801:4:92","type":"","value":"0x03"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"795:2:92"},"nodeType":"YulFunctionCall","src":"795:11:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"807:18:92","statements":[{"nodeType":"YulAssignment","src":"809:14:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"818:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"821:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"814:3:92"},"nodeType":"YulFunctionCall","src":"814:9:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"809:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"791:3:92","statements":[]},"src":"787:205:92"}]},"name":"abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"609:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"620:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"631:4:92","type":""}],"src":"497:501:92"},{"body":{"nodeType":"YulBlock","src":"1118:125:92","statements":[{"nodeType":"YulAssignment","src":"1128:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1140:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1151:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1136:3:92"},"nodeType":"YulFunctionCall","src":"1136:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1128:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1170:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1185:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"1193:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1181:3:92"},"nodeType":"YulFunctionCall","src":"1181:55:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1163:6:92"},"nodeType":"YulFunctionCall","src":"1163:74:92"},"nodeType":"YulExpressionStatement","src":"1163:74:92"}]},"name":"abi_encode_tuple_t_contract$_IDAO_$10865__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1087:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1098:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1109:4:92","type":""}],"src":"1003:240:92"},{"body":{"nodeType":"YulBlock","src":"1363:229:92","statements":[{"nodeType":"YulAssignment","src":"1373:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1385:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1396:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1381:3:92"},"nodeType":"YulFunctionCall","src":"1381:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1373:4:92"}]},{"body":{"nodeType":"YulBlock","src":"1441:111:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1462:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1469:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"1474:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1465:3:92"},"nodeType":"YulFunctionCall","src":"1465:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1455:6:92"},"nodeType":"YulFunctionCall","src":"1455:31:92"},"nodeType":"YulExpressionStatement","src":"1455:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1506:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"1509:4:92","type":"","value":"0x21"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1499:6:92"},"nodeType":"YulFunctionCall","src":"1499:15:92"},"nodeType":"YulExpressionStatement","src":"1499:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1534:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1537:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1527:6:92"},"nodeType":"YulFunctionCall","src":"1527:15:92"},"nodeType":"YulExpressionStatement","src":"1527:15:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1421:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"1429:1:92","type":"","value":"3"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"1418:2:92"},"nodeType":"YulFunctionCall","src":"1418:13:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1411:6:92"},"nodeType":"YulFunctionCall","src":"1411:21:92"},"nodeType":"YulIf","src":"1408:144:92"},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1568:9:92"},{"name":"value0","nodeType":"YulIdentifier","src":"1579:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1561:6:92"},"nodeType":"YulFunctionCall","src":"1561:25:92"},"nodeType":"YulExpressionStatement","src":"1561:25:92"}]},"name":"abi_encode_tuple_t_enum$_PluginType_$13330__to_t_uint8__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1332:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1343:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1354:4:92","type":""}],"src":"1248:344:92"},{"body":{"nodeType":"YulBlock","src":"1698:76:92","statements":[{"nodeType":"YulAssignment","src":"1708:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1720:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1731:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1716:3:92"},"nodeType":"YulFunctionCall","src":"1716:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1708:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1750:9:92"},{"name":"value0","nodeType":"YulIdentifier","src":"1761:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1743:6:92"},"nodeType":"YulFunctionCall","src":"1743:25:92"},"nodeType":"YulExpressionStatement","src":"1743:25:92"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1667:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1678:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1689:4:92","type":""}],"src":"1597:177:92"},{"body":{"nodeType":"YulBlock","src":"1863:239:92","statements":[{"body":{"nodeType":"YulBlock","src":"1909:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1918:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1921:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1911:6:92"},"nodeType":"YulFunctionCall","src":"1911:12:92"},"nodeType":"YulExpressionStatement","src":"1911:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1884:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"1893:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1880:3:92"},"nodeType":"YulFunctionCall","src":"1880:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"1905:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1876:3:92"},"nodeType":"YulFunctionCall","src":"1876:32:92"},"nodeType":"YulIf","src":"1873:52:92"},{"nodeType":"YulVariableDeclaration","src":"1934:36:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1960:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1947:12:92"},"nodeType":"YulFunctionCall","src":"1947:23:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"1938:5:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"2056:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2065:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2068:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2058:6:92"},"nodeType":"YulFunctionCall","src":"2058:12:92"},"nodeType":"YulExpressionStatement","src":"2058:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1992:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2003:5:92"},{"kind":"number","nodeType":"YulLiteral","src":"2010:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1999:3:92"},"nodeType":"YulFunctionCall","src":"1999:54:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1989:2:92"},"nodeType":"YulFunctionCall","src":"1989:65:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1982:6:92"},"nodeType":"YulFunctionCall","src":"1982:73:92"},"nodeType":"YulIf","src":"1979:93:92"},{"nodeType":"YulAssignment","src":"2081:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"2091:5:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2081:6:92"}]}]},"name":"abi_decode_tuple_t_contract$_IDAO_$10865","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1829:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1840:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1852:6:92","type":""}],"src":"1779:323:92"},{"body":{"nodeType":"YulBlock","src":"2281:236:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2298:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2309:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2291:6:92"},"nodeType":"YulFunctionCall","src":"2291:21:92"},"nodeType":"YulExpressionStatement","src":"2291:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2332:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2343:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2328:3:92"},"nodeType":"YulFunctionCall","src":"2328:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"2348:2:92","type":"","value":"46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2321:6:92"},"nodeType":"YulFunctionCall","src":"2321:30:92"},"nodeType":"YulExpressionStatement","src":"2321:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2371:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2382:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2367:3:92"},"nodeType":"YulFunctionCall","src":"2367:18:92"},{"hexValue":"496e697469616c697a61626c653a20636f6e747261637420697320616c726561","kind":"string","nodeType":"YulLiteral","src":"2387:34:92","type":"","value":"Initializable: contract is alrea"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2360:6:92"},"nodeType":"YulFunctionCall","src":"2360:62:92"},"nodeType":"YulExpressionStatement","src":"2360:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2442:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2453:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2438:3:92"},"nodeType":"YulFunctionCall","src":"2438:18:92"},{"hexValue":"647920696e697469616c697a6564","kind":"string","nodeType":"YulLiteral","src":"2458:16:92","type":"","value":"dy initialized"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2431:6:92"},"nodeType":"YulFunctionCall","src":"2431:44:92"},"nodeType":"YulExpressionStatement","src":"2431:44:92"},{"nodeType":"YulAssignment","src":"2484:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2496:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2507:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2492:3:92"},"nodeType":"YulFunctionCall","src":"2492:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2484:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2258:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2272:4:92","type":""}],"src":"2107:410:92"},{"body":{"nodeType":"YulBlock","src":"2629:87:92","statements":[{"nodeType":"YulAssignment","src":"2639:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2651:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2662:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2647:3:92"},"nodeType":"YulFunctionCall","src":"2647:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2639:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2681:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2696:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"2704:4:92","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2692:3:92"},"nodeType":"YulFunctionCall","src":"2692:17:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2674:6:92"},"nodeType":"YulFunctionCall","src":"2674:36:92"},"nodeType":"YulExpressionStatement","src":"2674:36:92"}]},"name":"abi_encode_tuple_t_rational_1_by_1__to_t_uint8__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2598:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"2609:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2620:4:92","type":""}],"src":"2522:194:92"},{"body":{"nodeType":"YulBlock","src":"2895:233:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2912:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2923:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2905:6:92"},"nodeType":"YulFunctionCall","src":"2905:21:92"},"nodeType":"YulExpressionStatement","src":"2905:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2946:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2957:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2942:3:92"},"nodeType":"YulFunctionCall","src":"2942:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"2962:2:92","type":"","value":"43"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2935:6:92"},"nodeType":"YulFunctionCall","src":"2935:30:92"},"nodeType":"YulExpressionStatement","src":"2935:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2985:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2996:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2981:3:92"},"nodeType":"YulFunctionCall","src":"2981:18:92"},{"hexValue":"496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069","kind":"string","nodeType":"YulLiteral","src":"3001:34:92","type":"","value":"Initializable: contract is not i"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2974:6:92"},"nodeType":"YulFunctionCall","src":"2974:62:92"},"nodeType":"YulExpressionStatement","src":"2974:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3056:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3067:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3052:3:92"},"nodeType":"YulFunctionCall","src":"3052:18:92"},{"hexValue":"6e697469616c697a696e67","kind":"string","nodeType":"YulLiteral","src":"3072:13:92","type":"","value":"nitializing"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3045:6:92"},"nodeType":"YulFunctionCall","src":"3045:41:92"},"nodeType":"YulExpressionStatement","src":"3045:41:92"},{"nodeType":"YulAssignment","src":"3095:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3107:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3118:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3103:3:92"},"nodeType":"YulFunctionCall","src":"3103:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3095:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2872:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2886:4:92","type":""}],"src":"2721:407:92"}]},"contents":"{\n { }\n function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n if iszero(eq(value, and(value, shl(224, 0xffffffff)))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 96)\n let pos := headStart\n pos := headStart\n let srcPtr := value0\n let i := 0\n for { } lt(i, 0x03) { i := add(i, 1) }\n {\n mstore(pos, and(mload(srcPtr), 0xff))\n let _1 := 0x20\n pos := add(pos, _1)\n srcPtr := add(srcPtr, _1)\n }\n }\n function abi_encode_tuple_t_contract$_IDAO_$10865__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_encode_tuple_t_enum$_PluginType_$13330__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n if iszero(lt(value0, 3))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x21)\n revert(0, 0x24)\n }\n mstore(headStart, value0)\n }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_decode_tuple_t_contract$_IDAO_$10865(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 46)\n mstore(add(headStart, 64), \"Initializable: contract is alrea\")\n mstore(add(headStart, 96), \"dy initialized\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_rational_1_by_1__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xff))\n }\n function abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 43)\n mstore(add(headStart, 64), \"Initializable: contract is not i\")\n mstore(add(headStart, 96), \"nitializing\")\n tail := add(headStart, 128)\n }\n}","id":92,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b506004361061007d5760003560e01c806341de68301161005b57806341de6830146100e75780636accab8c146100f6578063c4d66de81461010d578063efe51cca1461012257600080fd5b806301ffc9a7146100825780632ae9c600146100aa5780634162169f146100bf575b600080fd5b61009561009036600461041e565b61012b565b60405190151581526020015b60405180910390f35b6100b261017c565b6040516100a1919061044f565b60655460405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100a1565b60016040516100a19190610483565b6100ff60975481565b6040519081526020016100a1565b61012061011b3660046104ab565b6101a6565b005b6100ff60985481565b60006001600160e01b0319821663041de68360e41b148061015b57506001600160e01b03198216621574e360e91b145b8061017657506301ffc9a760e01b6001600160e01b03198316145b92915050565b610184610400565b5060408051606081018252600181526004602082015260009181019190915290565b600054610100900460ff16158080156101c65750600054600160ff909116105b806101e05750303b1580156101e0575060005460ff166001145b6102575760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b6000805460ff19166001179055801561027a576000805461ff0019166101001790555b610283826102d7565b6001609755600260985580156102d3576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b600054610100900460ff166103425760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840161024e565b61034b8161034e565b50565b600054610100900460ff166103b95760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840161024e565b606580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60405180606001604052806003906020820280368337509192915050565b60006020828403121561043057600080fd5b81356001600160e01b03198116811461044857600080fd5b9392505050565b60608101818360005b600381101561047a57815160ff16835260209283019290910190600101610458565b50505092915050565b60208101600383106104a557634e487b7160e01b600052602160045260246000fd5b91905290565b6000602082840312156104bd57600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461044857600080fdfea164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x7D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x41DE6830 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x41DE6830 EQ PUSH2 0xE7 JUMPI DUP1 PUSH4 0x6ACCAB8C EQ PUSH2 0xF6 JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0x10D JUMPI DUP1 PUSH4 0xEFE51CCA EQ PUSH2 0x122 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x82 JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0xAA JUMPI DUP1 PUSH4 0x4162169F EQ PUSH2 0xBF JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x95 PUSH2 0x90 CALLDATASIZE PUSH1 0x4 PUSH2 0x41E JUMP JUMPDEST PUSH2 0x12B JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xB2 PUSH2 0x17C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA1 SWAP2 SWAP1 PUSH2 0x44F JUMP JUMPDEST PUSH1 0x65 SLOAD PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xA1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x40 MLOAD PUSH2 0xA1 SWAP2 SWAP1 PUSH2 0x483 JUMP JUMPDEST PUSH2 0xFF PUSH1 0x97 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xA1 JUMP JUMPDEST PUSH2 0x120 PUSH2 0x11B CALLDATASIZE PUSH1 0x4 PUSH2 0x4AB JUMP JUMPDEST PUSH2 0x1A6 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xFF PUSH1 0x98 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x41DE683 PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x15B JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x176 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x184 PUSH2 0x400 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 DUP1 ISZERO PUSH2 0x1C6 JUMPI POP PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xFF SWAP1 SWAP2 AND LT JUMPDEST DUP1 PUSH2 0x1E0 JUMPI POP ADDRESS EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1E0 JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF AND PUSH1 0x1 EQ JUMPDEST PUSH2 0x257 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x647920696E697469616C697A6564000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE DUP1 ISZERO PUSH2 0x27A JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND PUSH2 0x100 OR SWAP1 SSTORE JUMPDEST PUSH2 0x283 DUP3 PUSH2 0x2D7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x97 SSTORE PUSH1 0x2 PUSH1 0x98 SSTORE DUP1 ISZERO PUSH2 0x2D3 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x342 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x24E JUMP JUMPDEST PUSH2 0x34B DUP2 PUSH2 0x34E JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x3B9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x24E JUMP JUMPDEST PUSH1 0x65 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x430 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x448 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0x47A JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x458 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH1 0x3 DUP4 LT PUSH2 0x4A5 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 SWAP1 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x448 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"727:254:48:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1810:288:74;;;;;;:::i;:::-;;:::i;:::-;;;470:14:92;;463:22;445:41;;433:2;418:18;1810:288:74;;;;;;;;631:98:90;;;:::i;:::-;;;;;;;:::i;1200:70:67:-;1259:4;;1200:70;;1259:4;;;;1163:74:92;;1151:2;1136:18;1200:70:67;1003:240:92;1494:108:74;1575:20;1494:108;;;;;;:::i;787:21:48:-;;;;;;;;;1743:25:92;;;1731:2;1716:18;787:21:48;1597:177:92;842:137:48;;;;;;:::i;:::-;;:::i;:::-;;814:21;;;;;;1810:288:74;1896:4;-1:-1:-1;;;;;;1931:41:74;;-1:-1:-1;;;1931:41:74;;:107;;-1:-1:-1;;;;;;;1988:50:74;;-1:-1:-1;;;1988:50:74;1931:107;:160;;;-1:-1:-1;;;;;;;;;;1189:51:11;;;2054:37:74;1912:179;1810:288;-1:-1:-1;;1810:288:74:o;631:98:90:-;679:15;;:::i;:::-;-1:-1:-1;706:16:90;;;;;;;;714:1;706:16;;717:1;706:16;;;;-1:-1:-1;706:16:90;;;;;;;;631:98::o;842:137:48:-;3279:19:4;3302:13;;;;;;3301:14;;3347:34;;;;-1:-1:-1;3365:12:4;;3380:1;3365:12;;;;:16;3347:34;3346:108;;;-1:-1:-1;3426:4:4;1713:19:6;:23;;;3387:66:4;;-1:-1:-1;3436:12:4;;;;;:17;3387:66;3325:201;;;;-1:-1:-1;;;3325:201:4;;2309:2:92;3325:201:4;;;2291:21:92;2348:2;2328:18;;;2321:30;2387:34;2367:18;;;2360:62;2458:16;2438:18;;;2431:44;2492:19;;3325:201:4;;;;;;;;;3536:12;:16;;-1:-1:-1;;3536:16:4;3551:1;3536:16;;;3562:65;;;;3596:13;:20;;-1:-1:-1;;3596:20:4;;;;;3562:65;904:28:48::1;927:4;904:22;:28::i;:::-;951:1;942:6;:10:::0;971:1:::1;962:6;:10:::0;3647:99:4;;;;3697:5;3681:21;;-1:-1:-1;;3681:21:4;;;3721:14;;-1:-1:-1;2674:36:92;;3721:14:4;;2662:2:92;2647:18;3721:14:4;;;;;;;3647:99;3269:483;842:137:48;:::o;1327:133:74:-;5374:13:4;;;;;;;5366:69;;;;-1:-1:-1;;;5366:69:4;;2923:2:92;5366:69:4;;;2905:21:92;2962:2;2942:18;;;2935:30;3001:34;2981:18;;;2974:62;-1:-1:-1;;;3052:18:92;;;3045:41;3103:19;;5366:69:4;2721:407:92;5366:69:4;1414:39:74::1;1448:4;1414:33;:39::i;:::-;1327:133:::0;:::o;1010:108:67:-;5374:13:4;;;;;;;5366:69;;;;-1:-1:-1;;;5366:69:4;;2923:2:92;5366:69:4;;;2905:21:92;2962:2;2942:18;;;2935:30;3001:34;2981:18;;;2974:62;-1:-1:-1;;;3052:18:92;;;3045:41;3103:19;;5366:69:4;2721:407:92;5366:69:4;1100:4:67::1;:11:::0;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;1010:108::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:286:92:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:92;;209:43;;199:71;;266:1;263;256:12;199:71;289:5;14:286;-1:-1:-1;;;14:286:92:o;497:501::-;673:2;658:18;;662:9;753:6;631:4;787:205;801:4;798:1;795:11;787:205;;;864:13;;879:4;860:24;848:37;;908:4;932:12;;;;967:15;;;;821:1;814:9;787:205;;;791:3;;;497:501;;;;:::o;1248:344::-;1396:2;1381:18;;1429:1;1418:13;;1408:144;;1474:10;1469:3;1465:20;1462:1;1455:31;1509:4;1506:1;1499:15;1537:4;1534:1;1527:15;1408:144;1561:25;;;1248:344;:::o;1779:323::-;1852:6;1905:2;1893:9;1884:7;1880:23;1876:32;1873:52;;;1921:1;1918;1911:12;1873:52;1960:9;1947:23;2010:42;2003:5;1999:54;1992:5;1989:65;1979:93;;2068:1;2065;2058:12"},"gasEstimates":{"creation":{"codeDepositCost":"252400","executionCost":"29883","totalCost":"282283"},"external":{"dao()":"2334","initialize(address)":"155887","pluginType()":"227","protocolVersion()":"infinite","state1()":"2317","state2()":"2361","supportsInterface(bytes4)":"482"}},"methodIdentifiers":{"dao()":"4162169f","initialize(address)":"c4d66de8","pluginType()":"41de6830","protocolVersion()":"2ae9c600","state1()":"6accab8c","state2()":"efe51cca","supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"dao\",\"outputs\":[{\"internalType\":\"contract IDAO\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IDAO\",\"name\":\"_dao\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pluginType\",\"outputs\":[{\"internalType\":\"enum IPlugin.PluginType\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"protocolVersion\",\"outputs\":[{\"internalType\":\"uint8[3]\",\"name\":\"\",\"type\":\"uint8[3]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"state1\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"state2\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"DO NOT USE IN PRODUCTION!\",\"kind\":\"dev\",\"methods\":{\"dao()\":{\"returns\":{\"_0\":\"The DAO contract.\"}},\"protocolVersion()\":{\"details\":\"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\",\"returns\":{\"_0\":\"Returns the semantic Aragon OSx protocol version number.\"}},\"supportsInterface(bytes4)\":{\"params\":{\"_interfaceId\":\"The ID of the interface.\"},\"returns\":{\"_0\":\"Returns `true` if the interface is supported.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"dao()\":{\"notice\":\"Returns the DAO contract.\"},\"pluginType()\":{\"notice\":\"Returns the plugin's type\"},\"protocolVersion()\":{\"notice\":\"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Checks if this or the parent contract supports an interface by its ID.\"}},\"notice\":\"A mock cloneable plugin to be deployed via the minimal proxy pattern. v1.1 (Release 1, Build 2)\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/mocks/plugin/PluginCloneableMock.sol\":\"PluginCloneableMockBuild2\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n function __Context_init() internal onlyInitializing {\\n }\\n\\n function __Context_init_unchained() internal onlyInitializing {\\n }\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n function _contextSuffixLength() internal view virtual returns (uint256) {\\n return 0;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x75097e35253e7fb282ee4d7f27a80eaacfa759923185bf17302a89cbc059c5ef\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165Upgradeable.sol\\\";\\nimport {Initializable} from \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165Upgradeable is Initializable, IERC165Upgradeable {\\n function __ERC165_init() internal onlyInitializing {\\n }\\n\\n function __ERC165_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165Upgradeable).interfaceId;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0xd90d7723512df65ae417adaf0801042940f0dabd60039ceeaffe34aa5b238da1\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165Upgradeable {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\"},\"src/dao/IDAO.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IDAO\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for DAOs within the Aragon App DAO framework.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IDAO {\\n /// @notice The action struct to be consumed by the DAO's `execute` function resulting in an external call.\\n /// @param to The address to call.\\n /// @param value The native token value to be sent with the call.\\n /// @param data The bytes-encoded function selector and calldata for the call.\\n struct Action {\\n address to;\\n uint256 value;\\n bytes data;\\n }\\n\\n /// @notice Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\\n /// @param _where The address of the contract.\\n /// @param _who The address of a EOA or contract to give the permissions.\\n /// @param _permissionId The permission identifier.\\n /// @param _data The optional data passed to the `PermissionCondition` registered.\\n /// @return Returns true if the address has permission, false if not.\\n function hasPermission(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes memory _data\\n ) external view returns (bool);\\n\\n /// @notice Updates the DAO metadata (e.g., an IPFS hash).\\n /// @param _metadata The IPFS hash of the new metadata object.\\n function setMetadata(bytes calldata _metadata) external;\\n\\n /// @notice Emitted when the DAO metadata is updated.\\n /// @param metadata The IPFS hash of the new metadata object.\\n event MetadataSet(bytes metadata);\\n\\n /// @notice Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted.\\n /// @param _callId The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce.\\n /// @param _actions The array of actions.\\n /// @param _allowFailureMap A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @return The array of results obtained from the executed actions in `bytes`.\\n /// @return The resulting failure map containing the actions have actually failed.\\n function execute(\\n bytes32 _callId,\\n Action[] memory _actions,\\n uint256 _allowFailureMap\\n ) external returns (bytes[] memory, uint256);\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param actor The address of the caller.\\n /// @param callId The ID of the call.\\n /// @param actions The array of actions executed.\\n /// @param allowFailureMap The allow failure map encoding which actions are allowed to fail.\\n /// @param failureMap The failure map encoding which actions have failed.\\n /// @param execResults The array with the results of the executed actions.\\n /// @dev The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce.\\n event Executed(\\n address indexed actor,\\n bytes32 callId,\\n Action[] actions,\\n uint256 allowFailureMap,\\n uint256 failureMap,\\n bytes[] execResults\\n );\\n\\n /// @notice Emitted when a standard callback is registered.\\n /// @param interfaceId The ID of the interface.\\n /// @param callbackSelector The selector of the callback function.\\n /// @param magicNumber The magic number to be registered for the callback function selector.\\n event StandardCallbackRegistered(\\n bytes4 interfaceId,\\n bytes4 callbackSelector,\\n bytes4 magicNumber\\n );\\n\\n /// @notice Deposits (native) tokens to the DAO contract with a reference string.\\n /// @param _token The address of the token or address(0) in case of the native token.\\n /// @param _amount The amount of tokens to deposit.\\n /// @param _reference The reference describing the deposit reason.\\n function deposit(address _token, uint256 _amount, string calldata _reference) external payable;\\n\\n /// @notice Emitted when a token deposit has been made to the DAO.\\n /// @param sender The address of the sender.\\n /// @param token The address of the deposited token.\\n /// @param amount The amount of tokens deposited.\\n /// @param _reference The reference describing the deposit reason.\\n event Deposited(\\n address indexed sender,\\n address indexed token,\\n uint256 amount,\\n string _reference\\n );\\n\\n /// @notice Emitted when a native token deposit has been made to the DAO.\\n /// @dev This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).\\n /// @param sender The address of the sender.\\n /// @param amount The amount of native tokens deposited.\\n event NativeTokenDeposited(address sender, uint256 amount);\\n\\n /// @notice Setter for the trusted forwarder verifying the meta transaction.\\n /// @param _trustedForwarder The trusted forwarder address.\\n function setTrustedForwarder(address _trustedForwarder) external;\\n\\n /// @notice Getter for the trusted forwarder verifying the meta transaction.\\n /// @return The trusted forwarder address.\\n function getTrustedForwarder() external view returns (address);\\n\\n /// @notice Emitted when a new TrustedForwarder is set on the DAO.\\n /// @param forwarder the new forwarder address.\\n event TrustedForwarderSet(address forwarder);\\n\\n /// @notice Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\\n /// @param _hash The hash of the data to be signed.\\n /// @param _signature The signature byte array associated with `_hash`.\\n /// @return Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not.\\n function isValidSignature(bytes32 _hash, bytes memory _signature) external returns (bytes4);\\n\\n /// @notice Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\\n /// @param _interfaceId The ID of the interface.\\n /// @param _callbackSelector The selector of the callback function.\\n /// @param _magicNumber The magic number to be registered for the function signature.\\n function registerStandardCallback(\\n bytes4 _interfaceId,\\n bytes4 _callbackSelector,\\n bytes4 _magicNumber\\n ) external;\\n\\n /// @notice Removed function being left here to not corrupt the IDAO interface ID. Any call will revert.\\n /// @dev Introduced in v1.0.0. Removed in v1.4.0.\\n function setSignatureValidator(address) external;\\n}\\n\",\"keccak256\":\"0xb7f615523c26de042edce98731c658f44a1edb2464387ac1b642c4c69f57128e\",\"license\":\"AGPL-3.0-or-later\"},\"src/mocks/plugin/PluginCloneableMock.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\n/* solhint-disable one-contract-per-file */\\npragma solidity ^0.8.8;\\n\\nimport {PluginCloneable} from \\\"../../plugin/PluginCloneable.sol\\\";\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice A mock cloneable plugin to be deployed via the minimal proxy pattern.\\n/// v1.1 (Release 1, Build 1)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginCloneableMockBuild1 is PluginCloneable {\\n uint256 public state1;\\n\\n function initialize(IDAO _dao) external initializer {\\n __PluginCloneable_init(_dao);\\n state1 = 1;\\n }\\n}\\n\\n/// @notice A mock cloneable plugin to be deployed via the minimal proxy pattern.\\n/// v1.1 (Release 1, Build 2)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginCloneableMockBuild2 is PluginCloneable {\\n uint256 public state1;\\n uint256 public state2;\\n\\n function initialize(IDAO _dao) external initializer {\\n __PluginCloneable_init(_dao);\\n state1 = 1;\\n state2 = 2;\\n }\\n}\\n\\n/// @notice A mock cloneable plugin missing an initializer function.\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginCloneableMockBad is PluginCloneable {\\n uint256 public state1;\\n\\n function notAnInitializer(IDAO _dao) external {\\n __PluginCloneable_init(_dao);\\n state1 = 1;\\n }\\n}\\n\",\"keccak256\":\"0x1bb271f7b553040fad7907e97b860aa833aec9aefe7477e00ba7bdfd80d84e98\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/DaoAuthorizableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ContextUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\\\";\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\nimport {_auth} from \\\"./auth.sol\\\";\\n\\n/// @title DaoAuthorizableUpgradeable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract contract providing a meta-transaction compatible modifier for upgradeable or cloneable contracts to authorize function calls through an associated DAO.\\n/// @dev Make sure to call `__DaoAuthorizableUpgradeable_init` during initialization of the inheriting contract.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract DaoAuthorizableUpgradeable is ContextUpgradeable {\\n /// @notice The associated DAO managing the permissions of inheriting contracts.\\n IDAO private dao_;\\n\\n /// @notice Initializes the contract by setting the associated DAO.\\n /// @param _dao The associated DAO address.\\n // solhint-disable-next-line func-name-mixedcase\\n function __DaoAuthorizableUpgradeable_init(IDAO _dao) internal onlyInitializing {\\n dao_ = _dao;\\n }\\n\\n /// @notice Returns the DAO contract.\\n /// @return The DAO contract.\\n function dao() public view returns (IDAO) {\\n return dao_;\\n }\\n\\n /// @notice A modifier to make functions on inheriting contracts authorized. Permissions to call the function are checked through the associated DAO's permission manager.\\n /// @param _permissionId The permission identifier required to call the method this modifier is applied to.\\n modifier auth(bytes32 _permissionId) {\\n _auth(dao_, address(this), _msgSender(), _permissionId, _msgData());\\n _;\\n }\\n\\n /// @notice This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain (see [OpenZeppelin's guide about storage gaps](https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps)).\\n uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0x7fac6b01b037ba1cb9d6a22d3f43b0785037dcf496ffb672434d9bf7227d2585\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/auth.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice Thrown if a call is unauthorized in the associated DAO.\\n/// @param dao The associated DAO.\\n/// @param where The context in which the authorization reverted.\\n/// @param who The address (EOA or contract) missing the permission.\\n/// @param permissionId The permission identifier.\\nerror DaoUnauthorized(address dao, address where, address who, bytes32 permissionId);\\n\\n/// @notice A free function checking if a caller is granted permissions on a target contract via a permission identifier that redirects the approval to a `PermissionCondition` if this was specified in the setup.\\n/// @param _where The address of the target contract for which `who` receives permission.\\n/// @param _who The address (EOA or contract) owning the permission.\\n/// @param _permissionId The permission identifier.\\n/// @param _data The optional data passed to the `PermissionCondition` registered.\\n/// @custom:security-contact sirt@aragon.org\\nfunction _auth(\\n IDAO _dao,\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes calldata _data\\n) view {\\n if (!_dao.hasPermission(_where, _who, _permissionId, _data))\\n revert DaoUnauthorized({\\n dao: address(_dao),\\n where: _where,\\n who: _who,\\n permissionId: _permissionId\\n });\\n}\\n\",\"keccak256\":\"0x878764b4f87fe0651fb3798fb9cb87c952f8c6caf6ae79c7f09de84df6c00298\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/IPlugin.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IPlugin\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the traits of a plugin.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IPlugin {\\n enum PluginType {\\n UUPS,\\n Cloneable,\\n Constructable\\n }\\n\\n /// @notice Returns the plugin's type\\n function pluginType() external view returns (PluginType);\\n}\\n\",\"keccak256\":\"0xc57cd0d10b6380ab7f54c713a509e88fd8f4ad9288313a0e8e12b8887817ddfe\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/PluginCloneable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ERC165Upgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\\\";\\n\\nimport {IProtocolVersion} from \\\"../utils/versioning/IProtocolVersion.sol\\\";\\nimport {ProtocolVersion} from \\\"../utils/versioning/ProtocolVersion.sol\\\";\\nimport {DaoAuthorizableUpgradeable} from \\\"../permission/auth/DaoAuthorizableUpgradeable.sol\\\";\\nimport {IDAO} from \\\"../dao/IDAO.sol\\\";\\nimport {IPlugin} from \\\"./IPlugin.sol\\\";\\n\\n/// @title PluginCloneable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract, non-upgradeable contract to inherit from when creating a plugin being deployed via the minimal clones pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)).\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract PluginCloneable is\\n IPlugin,\\n ERC165Upgradeable,\\n DaoAuthorizableUpgradeable,\\n ProtocolVersion\\n{\\n /// @notice Disables the initializers on the implementation contract to prevent it from being left uninitialized.\\n /// @custom:oz-upgrades-unsafe-allow constructor\\n constructor() {\\n _disableInitializers();\\n }\\n\\n /// @notice Initializes the plugin by storing the associated DAO.\\n /// @param _dao The DAO contract.\\n // solhint-disable-next-line func-name-mixedcase\\n function __PluginCloneable_init(IDAO _dao) internal virtual onlyInitializing {\\n __DaoAuthorizableUpgradeable_init(_dao);\\n }\\n\\n /// @inheritdoc IPlugin\\n function pluginType() public pure override returns (PluginType) {\\n return PluginType.Cloneable;\\n }\\n\\n /// @notice Checks if this or the parent contract supports an interface by its ID.\\n /// @param _interfaceId The ID of the interface.\\n /// @return Returns `true` if the interface is supported.\\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\\n return\\n _interfaceId == type(IPlugin).interfaceId ||\\n _interfaceId == type(IProtocolVersion).interfaceId ||\\n super.supportsInterface(_interfaceId);\\n }\\n}\\n\",\"keccak256\":\"0x68e260b9b370d68252f0c707461d5e4c2188a7bfed42ed9192657b36330a1f7a\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/IProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IProtocolVersion\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the semantic Aragon OSx protocol version number.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IProtocolVersion {\\n /// @notice Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\\n /// @return _version Returns the semantic Aragon OSx protocol version number.\\n /// @dev This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\\n function protocolVersion() external view returns (uint8[3] memory _version);\\n}\\n\",\"keccak256\":\"0x00a4da654d21dc1bdadbdc8bd54bb86c378c56f85e461ccc31303628ea621361\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/ProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IProtocolVersion} from \\\"./IProtocolVersion.sol\\\";\\n\\n/// @title ProtocolVersion\\n/// @author Aragon X - 2023\\n/// @notice An abstract, stateless, non-upgradeable contract providing the current Aragon OSx protocol version number.\\n/// @dev Do not add any new variables to this contract that would shift down storage in the inheritance chain.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract ProtocolVersion is IProtocolVersion {\\n // IMPORTANT: Do not add any storage variable, see the above notice.\\n\\n /// @inheritdoc IProtocolVersion\\n function protocolVersion() public pure returns (uint8[3] memory) {\\n return [1, 4, 0];\\n }\\n}\\n\",\"keccak256\":\"0x3975c937be935f687c6b6b8f379071232681e98cf04b175d72781b819ea52bdb\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[{"astId":372,"contract":"src/mocks/plugin/PluginCloneableMock.sol:PluginCloneableMockBuild2","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":375,"contract":"src/mocks/plugin/PluginCloneableMock.sol:PluginCloneableMockBuild2","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":2821,"contract":"src/mocks/plugin/PluginCloneableMock.sol:PluginCloneableMockBuild2","label":"__gap","offset":0,"slot":"1","type":"t_array(t_uint256)50_storage"},{"astId":2592,"contract":"src/mocks/plugin/PluginCloneableMock.sol:PluginCloneableMockBuild2","label":"__gap","offset":0,"slot":"51","type":"t_array(t_uint256)50_storage"},{"astId":13111,"contract":"src/mocks/plugin/PluginCloneableMock.sol:PluginCloneableMockBuild2","label":"dao_","offset":0,"slot":"101","type":"t_contract(IDAO)10865"},{"astId":13160,"contract":"src/mocks/plugin/PluginCloneableMock.sol:PluginCloneableMockBuild2","label":"__gap","offset":0,"slot":"102","type":"t_array(t_uint256)49_storage"},{"astId":11224,"contract":"src/mocks/plugin/PluginCloneableMock.sol:PluginCloneableMockBuild2","label":"state1","offset":0,"slot":"151","type":"t_uint256"},{"astId":11226,"contract":"src/mocks/plugin/PluginCloneableMock.sol:PluginCloneableMockBuild2","label":"state2","offset":0,"slot":"152","type":"t_uint256"}],"types":{"t_array(t_uint256)49_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[49]","numberOfBytes":"1568"},"t_array(t_uint256)50_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[50]","numberOfBytes":"1600"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_contract(IDAO)10865":{"encoding":"inplace","label":"contract IDAO","numberOfBytes":"20"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"kind":"user","methods":{"dao()":{"notice":"Returns the DAO contract."},"pluginType()":{"notice":"Returns the plugin's type"},"protocolVersion()":{"notice":"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with."},"supportsInterface(bytes4)":{"notice":"Checks if this or the parent contract supports an interface by its ID."}},"notice":"A mock cloneable plugin to be deployed via the minimal proxy pattern. v1.1 (Release 1, Build 2)","version":1}}},"src/mocks/plugin/PluginCloneableSetupMock.sol":{"PluginCloneableSetupMockBuild1":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"ConflictingValues","type":"error"},{"inputs":[],"name":"NonUpgradeablePlugin","type":"error"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_dao","type":"address"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"prepareInstallation","outputs":[{"internalType":"address","name":"plugin","type":"address"},{"components":[{"internalType":"address[]","name":"helpers","type":"address[]"},{"components":[{"internalType":"enum PermissionLib.Operation","name":"operation","type":"uint8"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"condition","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"internalType":"struct PermissionLib.MultiTargetPermission[]","name":"permissions","type":"tuple[]"}],"internalType":"struct IPluginSetup.PreparedSetupData","name":"preparedSetupData","type":"tuple"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_dao","type":"address"},{"components":[{"internalType":"address","name":"plugin","type":"address"},{"internalType":"address[]","name":"currentHelpers","type":"address[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct IPluginSetup.SetupPayload","name":"_payload","type":"tuple"}],"name":"prepareUninstallation","outputs":[{"components":[{"internalType":"enum PermissionLib.Operation","name":"operation","type":"uint8"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"condition","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"internalType":"struct PermissionLib.MultiTargetPermission[]","name":"permissions","type":"tuple[]"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_dao","type":"address"},{"internalType":"uint16","name":"_fromBuild","type":"uint16"},{"components":[{"internalType":"address","name":"plugin","type":"address"},{"internalType":"address[]","name":"currentHelpers","type":"address[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct IPluginSetup.SetupPayload","name":"_payload","type":"tuple"}],"name":"prepareUpdate","outputs":[{"internalType":"bytes","name":"","type":"bytes"},{"components":[{"internalType":"address[]","name":"helpers","type":"address[]"},{"components":[{"internalType":"enum PermissionLib.Operation","name":"operation","type":"uint8"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"condition","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"internalType":"struct PermissionLib.MultiTargetPermission[]","name":"permissions","type":"tuple[]"}],"internalType":"struct IPluginSetup.PreparedSetupData","name":"","type":"tuple"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"protocolVersion","outputs":[{"internalType":"uint8[3]","name":"","type":"uint8[3]"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"DO NOT USE IN PRODUCTION!","kind":"dev","methods":{"implementation()":{"details":"The implementation can be instantiated via the `new` keyword, cloned via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)), or proxied via the UUPS proxy pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).","returns":{"_0":"The address of the plugin implementation contract."}},"prepareInstallation(address,bytes)":{"params":{"_dao":"The address of the installing DAO.","_data":"The bytes-encoded data containing the input parameters for the installation as specified in the plugin's build metadata JSON file."},"returns":{"plugin":"The address of the `Plugin` contract being prepared for installation.","preparedSetupData":"The deployed plugin's relevant data which consists of helpers and permissions."}},"prepareUninstallation(address,(address,address[],bytes))":{"params":{"_dao":"The address of the uninstalling DAO.","_payload":"The relevant data necessary for the `prepareUninstallation`. See above."},"returns":{"permissions":"The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the uninstalling DAO."}},"prepareUpdate(address,uint16,(address,address[],bytes))":{"details":"Since the underlying plugin is non-upgradeable, this non-virtual function must always revert.","params":{"_dao":"The address of the updating DAO.","_fromBuild":"The build number of the plugin to update from.","_payload":"The relevant data necessary for the `prepareUpdate`. See above."},"returns":{"_0":"The initialization data to be passed to upgradeable contracts when the update is applied in the `PluginSetupProcessor`.","_1":"The deployed plugin's relevant data which consists of helpers and permissions."}},"protocolVersion()":{"details":"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.","returns":{"_0":"Returns the semantic Aragon OSx protocol version number."}},"supportsInterface(bytes4)":{"params":{"_interfaceId":"The ID of the interface."},"returns":{"_0":"Returns `true` if the interface is supported."}}},"version":1},"evm":{"bytecode":{"functionDebugData":{"@_11309":{"entryPoint":null,"id":11309,"parameterSlots":0,"returnSlots":0},"@_14307":{"entryPoint":null,"id":14307,"parameterSlots":1,"returnSlots":0}},"generatedSources":[],"linkReferences":{},"object":"60a060405234801561001057600080fd5b5060405161001d9061004b565b604051809103906000f080158015610039573d6000803e3d6000fd5b506001600160a01b0316608052610058565b6105c180610d3083390190565b608051610cb76100796000396000818160c101526102970152610cb76000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c80639cb0a124116100505780639cb0a124146100eb578063a8a9c29e1461010b578063f10832f11461012c57600080fd5b806301ffc9a7146100775780632ae9c6001461009f5780635c60da1b146100b4575b600080fd5b61008a6100853660046107fd565b61014d565b60405190151581526020015b60405180910390f35b6100a761019e565b6040516100969190610827565b6040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152602001610096565b6100fe6100f9366004610884565b6101c8565b604051610096919061094e565b61011e610119366004610997565b6101de565b604051610096929190610ae1565b61013f61013a366004610b25565b610216565b604051610096929190610be7565b60006001600160e01b0319821663099718b560e41b148061017d57506001600160e01b03198216621574e360e91b145b8061019857506301ffc9a760e01b6001600160e01b03198316145b92915050565b6101a66107df565b5060408051606081018252600181526004602082015260009181019190915290565b60606101d760006001806102f2565b9392505050565b60606101fd604051806040016040528060608152602001606081525090565b60405163a112810160e01b815260040160405180910390fd5b6000610235604051806040016040528060608152602001606081525090565b6040516001600160a01b038516602482015260009060440160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663189acdbd60e31b17905290506102c8816102b97f000000000000000000000000000000000000000000000000000000000000000090565b6001600160a01b031690610477565b92506102d460016104af565b82526102e360006001816102f2565b60208301525090939092509050565b6060826001600160a01b0316846001600160a01b0316111561032757604051633a4013cd60e21b815260040160405180910390fd5b6103318484610c1f565b6001600160a01b031667ffffffffffffffff81111561035257610352610b0f565b6040519080825280602002602001820160405280156103ab57816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282526000199092019101816103705790505b509050835b836001600160a01b0316816001600160a01b0316101561046f576040518060a001604052808460028111156103e7576103e76108d2565b81526001600160a01b038316602082018190526040820152600060608201527fa280eec51ab8e1bc4b6b0c1b7f1bde785761b787a49db404e3e9338ed9b016ef608090910152826104388784610c1f565b6001600160a01b03168151811061045157610451610c3f565b6020026020010181905250808061046790610c55565b9150506103b0565b509392505050565b600061048b836001600160a01b0316610568565b825190915015610198576104a86001600160a01b0382168361060e565b5092915050565b6060816001600160a01b031667ffffffffffffffff8111156104d3576104d3610b0f565b6040519080825280602002602001820160405280156104fc578160200160208202803683370190505b50905060005b826001600160a01b0316816001600160a01b03161015610562578082826001600160a01b03168151811061053857610538610c3f565b6001600160a01b03909216602092830291909101909101528061055a81610c55565b915050610502565b50919050565b6000763d602d80600a3d3981f3363d3d373d3d3d363d730000008260601b60e81c176000526e5af43d82803e903d91602b57fd5bf38260781b17602052603760096000f090506001600160a01b0381166106095760405162461bcd60e51b815260206004820152601660248201527f455243313136373a20637265617465206661696c65640000000000000000000060448201526064015b60405180910390fd5b919050565b60606101d7838360006040518060400160405280601e81526020017f416464726573733a206c6f772d6c6576656c2063616c6c206661696c656400008152506060824710156106c55760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610600565b600080866001600160a01b031685876040516106e19190610c7b565b60006040518083038185875af1925050503d806000811461071e576040519150601f19603f3d011682016040523d82523d6000602084013e610723565b606091505b509150915061073487838387610741565b925050505b949350505050565b606083156107b05782516000036107a9576001600160a01b0385163b6107a95760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610600565b5081610739565b61073983838151156107c55781518083602001fd5b8060405162461bcd60e51b81526004016106009190610c97565b60405180606001604052806003906020820280368337509192915050565b60006020828403121561080f57600080fd5b81356001600160e01b0319811681146101d757600080fd5b60608101818360005b600381101561085257815160ff16835260209283019290910190600101610830565b50505092915050565b80356001600160a01b038116811461060957600080fd5b60006060828403121561056257600080fd5b6000806040838503121561089757600080fd5b6108a08361085b565b9150602083013567ffffffffffffffff8111156108bc57600080fd5b6108c885828601610872565b9150509250929050565b634e487b7160e01b600052602160045260246000fd5b600081516003811061090a57634e487b7160e01b600052602160045260246000fd5b8352506020818101516001600160a01b0390811691840191909152604080830151821690840152606080830151909116908301526080908101519082015260a00190565b6020808252825182820181905260009190848201906040850190845b8181101561098b5761097d8385516108e8565b93850193925060010161096a565b50909695505050505050565b6000806000606084860312156109ac57600080fd5b6109b58461085b565b9250602084013561ffff811681146109cc57600080fd5b9150604084013567ffffffffffffffff8111156109e857600080fd5b6109f486828701610872565b9150509250925092565b60005b83811015610a19578181015183820152602001610a01565b50506000910152565b60008151808452610a3a8160208601602086016109fe565b601f01601f19169290920160200192915050565b805160408084528151908401819052600091602091908201906060860190845b81811015610a935783516001600160a01b031683529284019291840191600101610a6e565b50508483015186820387850152805180835290840192506000918401905b80831015610ad657610ac48285516108e8565b91508484019350600183019250610ab1565b509695505050505050565b604081526000610af46040830185610a22565b8281036020840152610b068185610a4e565b95945050505050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215610b3857600080fd5b610b418361085b565b9150602083013567ffffffffffffffff80821115610b5e57600080fd5b818501915085601f830112610b7257600080fd5b813581811115610b8457610b84610b0f565b604051601f8201601f19908116603f01168101908382118183101715610bac57610bac610b0f565b81604052828152886020848701011115610bc557600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6001600160a01b03831681526040602082015260006107396040830184610a4e565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b038281168282160390808211156104a8576104a8610c09565b634e487b7160e01b600052603260045260246000fd5b60006001600160a01b03808316818103610c7157610c71610c09565b6001019392505050565b60008251610c8d8184602087016109fe565b9190910192915050565b6020815260006101d76020830184610a2256fea164736f6c6343000811000a608060405234801561001057600080fd5b5061001961001e565b6100dd565b600054610100900460ff161561008a5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116146100db576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6104d5806100ec6000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c806341de68301161005057806341de6830146100dc5780636accab8c146100eb578063c4d66de81461010257600080fd5b806301ffc9a7146100775780632ae9c6001461009f5780634162169f146100b4575b600080fd5b61008a610085366004610405565b610117565b60405190151581526020015b60405180910390f35b6100a7610168565b6040516100969190610436565b60655460405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610096565b6001604051610096919061046a565b6100f460975481565b604051908152602001610096565b610115610110366004610492565b610192565b005b60006001600160e01b0319821663041de68360e41b148061014757506001600160e01b03198216621574e360e91b145b8061016257506301ffc9a760e01b6001600160e01b03198316145b92915050565b6101706103e7565b5060408051606081018252600181526004602082015260009181019190915290565b600054610100900460ff16158080156101b25750600054600160ff909116105b806101cc5750303b1580156101cc575060005460ff166001145b6102435760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b6000805460ff191660011790558015610266576000805461ff0019166101001790555b61026f826102be565b600160975580156102ba576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b600054610100900460ff166103295760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840161023a565b61033281610335565b50565b600054610100900460ff166103a05760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840161023a565b606580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60405180606001604052806003906020820280368337509192915050565b60006020828403121561041757600080fd5b81356001600160e01b03198116811461042f57600080fd5b9392505050565b60608101818360005b600381101561046157815160ff1683526020928301929091019060010161043f565b50505092915050565b602081016003831061048c57634e487b7160e01b600052602160045260246000fd5b91905290565b6000602082840312156104a457600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461042f57600080fdfea164736f6c6343000811000a","opcodes":"PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x1D SWAP1 PUSH2 0x4B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH2 0x39 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x80 MSTORE PUSH2 0x58 JUMP JUMPDEST PUSH2 0x5C1 DUP1 PUSH2 0xD30 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH2 0xCB7 PUSH2 0x79 PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH1 0xC1 ADD MSTORE PUSH2 0x297 ADD MSTORE PUSH2 0xCB7 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x72 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9CB0A124 GT PUSH2 0x50 JUMPI DUP1 PUSH4 0x9CB0A124 EQ PUSH2 0xEB JUMPI DUP1 PUSH4 0xA8A9C29E EQ PUSH2 0x10B JUMPI DUP1 PUSH4 0xF10832F1 EQ PUSH2 0x12C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x77 JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0x9F JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0xB4 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8A PUSH2 0x85 CALLDATASIZE PUSH1 0x4 PUSH2 0x7FD JUMP JUMPDEST PUSH2 0x14D JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xA7 PUSH2 0x19E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x96 SWAP2 SWAP1 PUSH2 0x827 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x96 JUMP JUMPDEST PUSH2 0xFE PUSH2 0xF9 CALLDATASIZE PUSH1 0x4 PUSH2 0x884 JUMP JUMPDEST PUSH2 0x1C8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x96 SWAP2 SWAP1 PUSH2 0x94E JUMP JUMPDEST PUSH2 0x11E PUSH2 0x119 CALLDATASIZE PUSH1 0x4 PUSH2 0x997 JUMP JUMPDEST PUSH2 0x1DE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x96 SWAP3 SWAP2 SWAP1 PUSH2 0xAE1 JUMP JUMPDEST PUSH2 0x13F PUSH2 0x13A CALLDATASIZE PUSH1 0x4 PUSH2 0xB25 JUMP JUMPDEST PUSH2 0x216 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x96 SWAP3 SWAP2 SWAP1 PUSH2 0xBE7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x99718B5 PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x17D JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x198 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1A6 PUSH2 0x7DF JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1D7 PUSH1 0x0 PUSH1 0x1 DUP1 PUSH2 0x2F2 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1FD PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xA1128101 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x235 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 PUSH1 0x44 ADD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x189ACDBD PUSH1 0xE3 SHL OR SWAP1 MSTORE SWAP1 POP PUSH2 0x2C8 DUP2 PUSH2 0x2B9 PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH2 0x477 JUMP JUMPDEST SWAP3 POP PUSH2 0x2D4 PUSH1 0x1 PUSH2 0x4AF JUMP JUMPDEST DUP3 MSTORE PUSH2 0x2E3 PUSH1 0x0 PUSH1 0x1 DUP2 PUSH2 0x2F2 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP SWAP1 SWAP4 SWAP1 SWAP3 POP SWAP1 POP JUMP JUMPDEST PUSH1 0x60 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH2 0x327 JUMPI PUSH1 0x40 MLOAD PUSH4 0x3A4013CD PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x331 DUP5 DUP5 PUSH2 0xC1F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x352 JUMPI PUSH2 0x352 PUSH2 0xB0F JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x3AB JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD DUP3 SWAP1 MSTORE SWAP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 DUP3 ADD MSTORE DUP3 MSTORE PUSH1 0x0 NOT SWAP1 SWAP3 ADD SWAP2 ADD DUP2 PUSH2 0x370 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP DUP4 JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT ISZERO PUSH2 0x46F JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 DUP5 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x3E7 JUMPI PUSH2 0x3E7 PUSH2 0x8D2 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x60 DUP3 ADD MSTORE PUSH32 0xA280EEC51AB8E1BC4B6B0C1B7F1BDE785761B787A49DB404E3E9338ED9B016EF PUSH1 0x80 SWAP1 SWAP2 ADD MSTORE DUP3 PUSH2 0x438 DUP8 DUP5 PUSH2 0xC1F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MLOAD DUP2 LT PUSH2 0x451 JUMPI PUSH2 0x451 PUSH2 0xC3F JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP DUP1 DUP1 PUSH2 0x467 SWAP1 PUSH2 0xC55 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x3B0 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x48B DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x568 JUMP JUMPDEST DUP3 MLOAD SWAP1 SWAP2 POP ISZERO PUSH2 0x198 JUMPI PUSH2 0x4A8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP4 PUSH2 0x60E JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x4D3 JUMPI PUSH2 0x4D3 PUSH2 0xB0F JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x4FC JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT ISZERO PUSH2 0x562 JUMPI DUP1 DUP3 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MLOAD DUP2 LT PUSH2 0x538 JUMPI PUSH2 0x538 PUSH2 0xC3F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE DUP1 PUSH2 0x55A DUP2 PUSH2 0xC55 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x502 JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH23 0x3D602D80600A3D3981F3363D3D373D3D3D363D73000000 DUP3 PUSH1 0x60 SHL PUSH1 0xE8 SHR OR PUSH1 0x0 MSTORE PUSH15 0x5AF43D82803E903D91602B57FD5BF3 DUP3 PUSH1 0x78 SHL OR PUSH1 0x20 MSTORE PUSH1 0x37 PUSH1 0x9 PUSH1 0x0 CREATE SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x609 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313136373A20637265617465206661696C656400000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1D7 DUP4 DUP4 PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x416464726573733A206C6F772D6C6576656C2063616C6C206661696C65640000 DUP2 MSTORE POP PUSH1 0x60 DUP3 SELFBALANCE LT ISZERO PUSH2 0x6C5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A20696E73756666696369656E742062616C616E636520666F PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x722063616C6C0000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x600 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP8 PUSH1 0x40 MLOAD PUSH2 0x6E1 SWAP2 SWAP1 PUSH2 0xC7B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x71E JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x723 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x734 DUP8 DUP4 DUP4 DUP8 PUSH2 0x741 JUMP JUMPDEST SWAP3 POP POP POP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x7B0 JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0x7A9 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0x7A9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x600 JUMP JUMPDEST POP DUP2 PUSH2 0x739 JUMP JUMPDEST PUSH2 0x739 DUP4 DUP4 DUP2 MLOAD ISZERO PUSH2 0x7C5 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x600 SWAP2 SWAP1 PUSH2 0xC97 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x80F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x1D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0x852 JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x830 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x609 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x562 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x897 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8A0 DUP4 PUSH2 0x85B JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x8BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8C8 DUP6 DUP3 DUP7 ADD PUSH2 0x872 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP2 MLOAD PUSH1 0x3 DUP2 LT PUSH2 0x90A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP4 MSTORE POP PUSH1 0x20 DUP2 DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP1 DUP4 ADD MLOAD DUP3 AND SWAP1 DUP5 ADD MSTORE PUSH1 0x60 DUP1 DUP4 ADD MLOAD SWAP1 SWAP2 AND SWAP1 DUP4 ADD MSTORE PUSH1 0x80 SWAP1 DUP2 ADD MLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x98B JUMPI PUSH2 0x97D DUP4 DUP6 MLOAD PUSH2 0x8E8 JUMP JUMPDEST SWAP4 DUP6 ADD SWAP4 SWAP3 POP PUSH1 0x1 ADD PUSH2 0x96A JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x9AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9B5 DUP5 PUSH2 0x85B JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH2 0x9CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x9E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9F4 DUP7 DUP3 DUP8 ADD PUSH2 0x872 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xA19 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xA01 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0xA3A DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x9FE JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x40 DUP1 DUP5 MSTORE DUP2 MLOAD SWAP1 DUP5 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x20 SWAP2 SWAP1 DUP3 ADD SWAP1 PUSH1 0x60 DUP7 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xA93 JUMPI DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0xA6E JUMP JUMPDEST POP POP DUP5 DUP4 ADD MLOAD DUP7 DUP3 SUB DUP8 DUP6 ADD MSTORE DUP1 MLOAD DUP1 DUP4 MSTORE SWAP1 DUP5 ADD SWAP3 POP PUSH1 0x0 SWAP2 DUP5 ADD SWAP1 JUMPDEST DUP1 DUP4 LT ISZERO PUSH2 0xAD6 JUMPI PUSH2 0xAC4 DUP3 DUP6 MLOAD PUSH2 0x8E8 JUMP JUMPDEST SWAP2 POP DUP5 DUP5 ADD SWAP4 POP PUSH1 0x1 DUP4 ADD SWAP3 POP PUSH2 0xAB1 JUMP JUMPDEST POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 PUSH2 0xAF4 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0xA22 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0xB06 DUP2 DUP6 PUSH2 0xA4E JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xB38 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB41 DUP4 PUSH2 0x85B JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xB5E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xB72 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0xB84 JUMPI PUSH2 0xB84 PUSH2 0xB0F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0xBAC JUMPI PUSH2 0xBAC PUSH2 0xB0F JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0xBC5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0x739 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0xA4E JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND DUP3 DUP3 AND SUB SWAP1 DUP1 DUP3 GT ISZERO PUSH2 0x4A8 JUMPI PUSH2 0x4A8 PUSH2 0xC09 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND DUP2 DUP2 SUB PUSH2 0xC71 JUMPI PUSH2 0xC71 PUSH2 0xC09 JUMP JUMPDEST PUSH1 0x1 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0xC8D DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x9FE JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x1D7 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0xA22 JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x19 PUSH2 0x1E JUMP JUMPDEST PUSH2 0xDD JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x8A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x27 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320696E697469 PUSH1 0x44 DUP3 ADD MSTORE PUSH7 0x616C697A696E67 PUSH1 0xC8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xFF SWAP1 DUP2 AND EQ PUSH2 0xDB JUMPI PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST JUMP JUMPDEST PUSH2 0x4D5 DUP1 PUSH2 0xEC PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x72 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x41DE6830 GT PUSH2 0x50 JUMPI DUP1 PUSH4 0x41DE6830 EQ PUSH2 0xDC JUMPI DUP1 PUSH4 0x6ACCAB8C EQ PUSH2 0xEB JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0x102 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x77 JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0x9F JUMPI DUP1 PUSH4 0x4162169F EQ PUSH2 0xB4 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8A PUSH2 0x85 CALLDATASIZE PUSH1 0x4 PUSH2 0x405 JUMP JUMPDEST PUSH2 0x117 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xA7 PUSH2 0x168 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x96 SWAP2 SWAP1 PUSH2 0x436 JUMP JUMPDEST PUSH1 0x65 SLOAD PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x96 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x40 MLOAD PUSH2 0x96 SWAP2 SWAP1 PUSH2 0x46A JUMP JUMPDEST PUSH2 0xF4 PUSH1 0x97 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x96 JUMP JUMPDEST PUSH2 0x115 PUSH2 0x110 CALLDATASIZE PUSH1 0x4 PUSH2 0x492 JUMP JUMPDEST PUSH2 0x192 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x41DE683 PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x147 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x162 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x170 PUSH2 0x3E7 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 DUP1 ISZERO PUSH2 0x1B2 JUMPI POP PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xFF SWAP1 SWAP2 AND LT JUMPDEST DUP1 PUSH2 0x1CC JUMPI POP ADDRESS EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1CC JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF AND PUSH1 0x1 EQ JUMPDEST PUSH2 0x243 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x647920696E697469616C697A6564000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE DUP1 ISZERO PUSH2 0x266 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND PUSH2 0x100 OR SWAP1 SSTORE JUMPDEST PUSH2 0x26F DUP3 PUSH2 0x2BE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x97 SSTORE DUP1 ISZERO PUSH2 0x2BA JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x329 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x23A JUMP JUMPDEST PUSH2 0x332 DUP2 PUSH2 0x335 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x3A0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x23A JUMP JUMPDEST PUSH1 0x65 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x417 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x42F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0x461 JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x43F JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH1 0x3 DUP4 LT PUSH2 0x48C JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 SWAP1 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x42F JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"749:1127:49:-:0;;;889:70;;;;;;;;;;923:31;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1454:32:82;;;749:1127:49;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_revert_9263":{"entryPoint":null,"id":9263,"parameterSlots":2,"returnSlots":0},"@clone_5295":{"entryPoint":1384,"id":5295,"parameterSlots":1,"returnSlots":1},"@deployMinimalProxy_14592":{"entryPoint":1143,"id":14592,"parameterSlots":2,"returnSlots":1},"@functionCallWithValue_9088":{"entryPoint":null,"id":9088,"parameterSlots":4,"returnSlots":1},"@functionCall_9004":{"entryPoint":1550,"id":9004,"parameterSlots":2,"returnSlots":1},"@implementation_14370":{"entryPoint":null,"id":14370,"parameterSlots":0,"returnSlots":1},"@isContract_8952":{"entryPoint":null,"id":8952,"parameterSlots":1,"returnSlots":1},"@mockHelpers_11760":{"entryPoint":1199,"id":11760,"parameterSlots":1,"returnSlots":1},"@mockPermissions_11721":{"entryPoint":754,"id":11721,"parameterSlots":3,"returnSlots":1},"@prepareInstallation_11363":{"entryPoint":534,"id":11363,"parameterSlots":2,"returnSlots":2},"@prepareUninstallation_11391":{"entryPoint":456,"id":11391,"parameterSlots":2,"returnSlots":1},"@prepareUpdate_14332":{"entryPoint":478,"id":14332,"parameterSlots":3,"returnSlots":2},"@protocolVersion_14765":{"entryPoint":414,"id":14765,"parameterSlots":0,"returnSlots":1},"@supportsInterface_14361":{"entryPoint":333,"id":14361,"parameterSlots":1,"returnSlots":1},"@supportsInterface_9730":{"entryPoint":null,"id":9730,"parameterSlots":1,"returnSlots":1},"@verifyCallResultFromTarget_9219":{"entryPoint":1857,"id":9219,"parameterSlots":4,"returnSlots":1},"abi_decode_address":{"entryPoint":2139,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_struct_SetupPayload_calldata":{"entryPoint":2162,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_bytes_memory_ptr":{"entryPoint":2853,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_struct$_SetupPayload_$14224_calldata_ptr":{"entryPoint":2180,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_uint16t_struct$_SetupPayload_$14224_calldata_ptr":{"entryPoint":2455,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_bytes4":{"entryPoint":2045,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encodeUpdatedPos_struct_MultiTargetPermission":{"entryPoint":2280,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_bytes":{"entryPoint":2594,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_struct_PreparedSetupData":{"entryPoint":2638,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":3195,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address_t_struct$_PreparedSetupData_$14216_memory_ptr__to_t_address_t_struct$_PreparedSetupData_$14216_memory_ptr__fromStack_reversed":{"entryPoint":3047,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr__fromStack_reversed":{"entryPoint":2382,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed":{"entryPoint":2087,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$14216_memory_ptr__to_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$14216_memory_ptr__fromStack_reversed":{"entryPoint":2785,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_contract$_IDAO_$10865__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":3223,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_68ca40b61460257f14e69f48b1a4dbc812e9afc6932f127ef8084544457b3335__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"checked_sub_t_uint160":{"entryPoint":3103,"id":null,"parameterSlots":2,"returnSlots":1},"copy_memory_to_memory_with_cleanup":{"entryPoint":2558,"id":null,"parameterSlots":3,"returnSlots":0},"increment_t_uint160":{"entryPoint":3157,"id":null,"parameterSlots":1,"returnSlots":1},"panic_error_0x11":{"entryPoint":3081,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x21":{"entryPoint":2258,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x32":{"entryPoint":3135,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":2831,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:10509:92","statements":[{"nodeType":"YulBlock","src":"6:3:92","statements":[]},{"body":{"nodeType":"YulBlock","src":"83:217:92","statements":[{"body":{"nodeType":"YulBlock","src":"129:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"138:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"141:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"131:6:92"},"nodeType":"YulFunctionCall","src":"131:12:92"},"nodeType":"YulExpressionStatement","src":"131:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"104:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"113:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"100:3:92"},"nodeType":"YulFunctionCall","src":"100:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"125:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"96:3:92"},"nodeType":"YulFunctionCall","src":"96:32:92"},"nodeType":"YulIf","src":"93:52:92"},{"nodeType":"YulVariableDeclaration","src":"154:36:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"180:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"167:12:92"},"nodeType":"YulFunctionCall","src":"167:23:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"158:5:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"254:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"263:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"266:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"256:6:92"},"nodeType":"YulFunctionCall","src":"256:12:92"},"nodeType":"YulExpressionStatement","src":"256:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"212:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"223:5:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"234:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"239:10:92","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"230:3:92"},"nodeType":"YulFunctionCall","src":"230:20:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"219:3:92"},"nodeType":"YulFunctionCall","src":"219:32:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"209:2:92"},"nodeType":"YulFunctionCall","src":"209:43:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"202:6:92"},"nodeType":"YulFunctionCall","src":"202:51:92"},"nodeType":"YulIf","src":"199:71:92"},{"nodeType":"YulAssignment","src":"279:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"289:5:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"279:6:92"}]}]},"name":"abi_decode_tuple_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"49:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"60:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"72:6:92","type":""}],"src":"14:286:92"},{"body":{"nodeType":"YulBlock","src":"400:92:92","statements":[{"nodeType":"YulAssignment","src":"410:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"422:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"433:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"418:3:92"},"nodeType":"YulFunctionCall","src":"418:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"410:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"452:9:92"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"477:6:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"470:6:92"},"nodeType":"YulFunctionCall","src":"470:14:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"463:6:92"},"nodeType":"YulFunctionCall","src":"463:22:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"445:6:92"},"nodeType":"YulFunctionCall","src":"445:41:92"},"nodeType":"YulExpressionStatement","src":"445:41:92"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"369:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"380:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"391:4:92","type":""}],"src":"305:187:92"},{"body":{"nodeType":"YulBlock","src":"640:358:92","statements":[{"nodeType":"YulAssignment","src":"650:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"662:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"673:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"658:3:92"},"nodeType":"YulFunctionCall","src":"658:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"650:4:92"}]},{"nodeType":"YulVariableDeclaration","src":"685:20:92","value":{"name":"headStart","nodeType":"YulIdentifier","src":"696:9:92"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"689:3:92","type":""}]},{"nodeType":"YulAssignment","src":"714:16:92","value":{"name":"headStart","nodeType":"YulIdentifier","src":"721:9:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"714:3:92"}]},{"nodeType":"YulVariableDeclaration","src":"739:20:92","value":{"name":"value0","nodeType":"YulIdentifier","src":"753:6:92"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"743:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"768:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"777:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"772:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"834:158:92","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"855:3:92"},{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"870:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"864:5:92"},"nodeType":"YulFunctionCall","src":"864:13:92"},{"kind":"number","nodeType":"YulLiteral","src":"879:4:92","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"860:3:92"},"nodeType":"YulFunctionCall","src":"860:24:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"848:6:92"},"nodeType":"YulFunctionCall","src":"848:37:92"},"nodeType":"YulExpressionStatement","src":"848:37:92"},{"nodeType":"YulVariableDeclaration","src":"898:14:92","value":{"kind":"number","nodeType":"YulLiteral","src":"908:4:92","type":"","value":"0x20"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"902:2:92","type":""}]},{"nodeType":"YulAssignment","src":"925:19:92","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"936:3:92"},{"name":"_1","nodeType":"YulIdentifier","src":"941:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"932:3:92"},"nodeType":"YulFunctionCall","src":"932:12:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"925:3:92"}]},{"nodeType":"YulAssignment","src":"957:25:92","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"971:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"979:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"967:3:92"},"nodeType":"YulFunctionCall","src":"967:15:92"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"957:6:92"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"798:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"801:4:92","type":"","value":"0x03"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"795:2:92"},"nodeType":"YulFunctionCall","src":"795:11:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"807:18:92","statements":[{"nodeType":"YulAssignment","src":"809:14:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"818:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"821:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"814:3:92"},"nodeType":"YulFunctionCall","src":"814:9:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"809:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"791:3:92","statements":[]},"src":"787:205:92"}]},"name":"abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"609:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"620:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"631:4:92","type":""}],"src":"497:501:92"},{"body":{"nodeType":"YulBlock","src":"1104:125:92","statements":[{"nodeType":"YulAssignment","src":"1114:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1126:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1137:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1122:3:92"},"nodeType":"YulFunctionCall","src":"1122:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1114:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1156:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1171:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"1179:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1167:3:92"},"nodeType":"YulFunctionCall","src":"1167:55:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1149:6:92"},"nodeType":"YulFunctionCall","src":"1149:74:92"},"nodeType":"YulExpressionStatement","src":"1149:74:92"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1073:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1084:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1095:4:92","type":""}],"src":"1003:226:92"},{"body":{"nodeType":"YulBlock","src":"1283:147:92","statements":[{"nodeType":"YulAssignment","src":"1293:29:92","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1315:6:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1302:12:92"},"nodeType":"YulFunctionCall","src":"1302:20:92"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"1293:5:92"}]},{"body":{"nodeType":"YulBlock","src":"1408:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1417:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1420:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1410:6:92"},"nodeType":"YulFunctionCall","src":"1410:12:92"},"nodeType":"YulExpressionStatement","src":"1410:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1344:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1355:5:92"},{"kind":"number","nodeType":"YulLiteral","src":"1362:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1351:3:92"},"nodeType":"YulFunctionCall","src":"1351:54:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1341:2:92"},"nodeType":"YulFunctionCall","src":"1341:65:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1334:6:92"},"nodeType":"YulFunctionCall","src":"1334:73:92"},"nodeType":"YulIf","src":"1331:93:92"}]},"name":"abi_decode_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"1262:6:92","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"1273:5:92","type":""}],"src":"1234:196:92"},{"body":{"nodeType":"YulBlock","src":"1510:85:92","statements":[{"body":{"nodeType":"YulBlock","src":"1549:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1558:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1561:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1551:6:92"},"nodeType":"YulFunctionCall","src":"1551:12:92"},"nodeType":"YulExpressionStatement","src":"1551:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"end","nodeType":"YulIdentifier","src":"1531:3:92"},{"name":"offset","nodeType":"YulIdentifier","src":"1536:6:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1527:3:92"},"nodeType":"YulFunctionCall","src":"1527:16:92"},{"kind":"number","nodeType":"YulLiteral","src":"1545:2:92","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1523:3:92"},"nodeType":"YulFunctionCall","src":"1523:25:92"},"nodeType":"YulIf","src":"1520:45:92"},{"nodeType":"YulAssignment","src":"1574:15:92","value":{"name":"offset","nodeType":"YulIdentifier","src":"1583:6:92"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"1574:5:92"}]}]},"name":"abi_decode_struct_SetupPayload_calldata","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"1484:6:92","type":""},{"name":"end","nodeType":"YulTypedName","src":"1492:3:92","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"1500:5:92","type":""}],"src":"1435:160:92"},{"body":{"nodeType":"YulBlock","src":"1720:321:92","statements":[{"body":{"nodeType":"YulBlock","src":"1766:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1775:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1778:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1768:6:92"},"nodeType":"YulFunctionCall","src":"1768:12:92"},"nodeType":"YulExpressionStatement","src":"1768:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1741:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"1750:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1737:3:92"},"nodeType":"YulFunctionCall","src":"1737:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"1762:2:92","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1733:3:92"},"nodeType":"YulFunctionCall","src":"1733:32:92"},"nodeType":"YulIf","src":"1730:52:92"},{"nodeType":"YulAssignment","src":"1791:39:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1820:9:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"1801:18:92"},"nodeType":"YulFunctionCall","src":"1801:29:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1791:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"1839:46:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1870:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1881:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1866:3:92"},"nodeType":"YulFunctionCall","src":"1866:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1853:12:92"},"nodeType":"YulFunctionCall","src":"1853:32:92"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1843:6:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"1928:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1937:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1940:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1930:6:92"},"nodeType":"YulFunctionCall","src":"1930:12:92"},"nodeType":"YulExpressionStatement","src":"1930:12:92"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1900:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"1908:18:92","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1897:2:92"},"nodeType":"YulFunctionCall","src":"1897:30:92"},"nodeType":"YulIf","src":"1894:50:92"},{"nodeType":"YulAssignment","src":"1953:82:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2007:9:92"},{"name":"offset","nodeType":"YulIdentifier","src":"2018:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2003:3:92"},"nodeType":"YulFunctionCall","src":"2003:22:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2027:7:92"}],"functionName":{"name":"abi_decode_struct_SetupPayload_calldata","nodeType":"YulIdentifier","src":"1963:39:92"},"nodeType":"YulFunctionCall","src":"1963:72:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1953:6:92"}]}]},"name":"abi_decode_tuple_t_addresst_struct$_SetupPayload_$14224_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1678:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1689:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1701:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1709:6:92","type":""}],"src":"1600:441:92"},{"body":{"nodeType":"YulBlock","src":"2078:95:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2095:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2102:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"2107:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2098:3:92"},"nodeType":"YulFunctionCall","src":"2098:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2088:6:92"},"nodeType":"YulFunctionCall","src":"2088:31:92"},"nodeType":"YulExpressionStatement","src":"2088:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2135:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"2138:4:92","type":"","value":"0x21"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2128:6:92"},"nodeType":"YulFunctionCall","src":"2128:15:92"},"nodeType":"YulExpressionStatement","src":"2128:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2159:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2162:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2152:6:92"},"nodeType":"YulFunctionCall","src":"2152:15:92"},"nodeType":"YulExpressionStatement","src":"2152:15:92"}]},"name":"panic_error_0x21","nodeType":"YulFunctionDefinition","src":"2046:127:92"},{"body":{"nodeType":"YulBlock","src":"2268:606:92","statements":[{"nodeType":"YulVariableDeclaration","src":"2278:23:92","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2294:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2288:5:92"},"nodeType":"YulFunctionCall","src":"2288:13:92"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"2282:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"2339:111:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2360:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2367:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"2372:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2363:3:92"},"nodeType":"YulFunctionCall","src":"2363:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2353:6:92"},"nodeType":"YulFunctionCall","src":"2353:31:92"},"nodeType":"YulExpressionStatement","src":"2353:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2404:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"2407:4:92","type":"","value":"0x21"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2397:6:92"},"nodeType":"YulFunctionCall","src":"2397:15:92"},"nodeType":"YulExpressionStatement","src":"2397:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2432:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2435:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2425:6:92"},"nodeType":"YulFunctionCall","src":"2425:15:92"},"nodeType":"YulExpressionStatement","src":"2425:15:92"}]},"condition":{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"2323:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"2327:1:92","type":"","value":"3"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2320:2:92"},"nodeType":"YulFunctionCall","src":"2320:9:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2313:6:92"},"nodeType":"YulFunctionCall","src":"2313:17:92"},"nodeType":"YulIf","src":"2310:140:92"},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2466:3:92"},{"name":"_1","nodeType":"YulIdentifier","src":"2471:2:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2459:6:92"},"nodeType":"YulFunctionCall","src":"2459:15:92"},"nodeType":"YulExpressionStatement","src":"2459:15:92"},{"nodeType":"YulVariableDeclaration","src":"2483:44:92","value":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2513:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"2521:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2509:3:92"},"nodeType":"YulFunctionCall","src":"2509:17:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2503:5:92"},"nodeType":"YulFunctionCall","src":"2503:24:92"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"2487:12:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2536:52:92","value":{"kind":"number","nodeType":"YulLiteral","src":"2546:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"2540:2:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2608:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"2613:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2604:3:92"},"nodeType":"YulFunctionCall","src":"2604:14:92"},{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"2624:12:92"},{"name":"_2","nodeType":"YulIdentifier","src":"2638:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2620:3:92"},"nodeType":"YulFunctionCall","src":"2620:21:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2597:6:92"},"nodeType":"YulFunctionCall","src":"2597:45:92"},"nodeType":"YulExpressionStatement","src":"2597:45:92"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2662:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"2667:4:92","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2658:3:92"},"nodeType":"YulFunctionCall","src":"2658:14:92"},{"arguments":[{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2688:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"2696:4:92","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2684:3:92"},"nodeType":"YulFunctionCall","src":"2684:17:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2678:5:92"},"nodeType":"YulFunctionCall","src":"2678:24:92"},{"name":"_2","nodeType":"YulIdentifier","src":"2704:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2674:3:92"},"nodeType":"YulFunctionCall","src":"2674:33:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2651:6:92"},"nodeType":"YulFunctionCall","src":"2651:57:92"},"nodeType":"YulExpressionStatement","src":"2651:57:92"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2728:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"2733:4:92","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2724:3:92"},"nodeType":"YulFunctionCall","src":"2724:14:92"},{"arguments":[{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2754:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"2762:4:92","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2750:3:92"},"nodeType":"YulFunctionCall","src":"2750:17:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2744:5:92"},"nodeType":"YulFunctionCall","src":"2744:24:92"},{"name":"_2","nodeType":"YulIdentifier","src":"2770:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2740:3:92"},"nodeType":"YulFunctionCall","src":"2740:33:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2717:6:92"},"nodeType":"YulFunctionCall","src":"2717:57:92"},"nodeType":"YulExpressionStatement","src":"2717:57:92"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2794:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"2799:4:92","type":"","value":"0x80"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2790:3:92"},"nodeType":"YulFunctionCall","src":"2790:14:92"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2816:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"2824:4:92","type":"","value":"0x80"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2812:3:92"},"nodeType":"YulFunctionCall","src":"2812:17:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2806:5:92"},"nodeType":"YulFunctionCall","src":"2806:24:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2783:6:92"},"nodeType":"YulFunctionCall","src":"2783:48:92"},"nodeType":"YulExpressionStatement","src":"2783:48:92"},{"nodeType":"YulAssignment","src":"2840:28:92","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2858:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"2863:4:92","type":"","value":"0xa0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2854:3:92"},"nodeType":"YulFunctionCall","src":"2854:14:92"},"variableNames":[{"name":"updatedPos","nodeType":"YulIdentifier","src":"2840:10:92"}]}]},"name":"abi_encodeUpdatedPos_struct_MultiTargetPermission","nodeType":"YulFunctionDefinition","parameters":[{"name":"value0","nodeType":"YulTypedName","src":"2237:6:92","type":""},{"name":"pos","nodeType":"YulTypedName","src":"2245:3:92","type":""}],"returnVariables":[{"name":"updatedPos","nodeType":"YulTypedName","src":"2253:10:92","type":""}],"src":"2178:696:92"},{"body":{"nodeType":"YulBlock","src":"3110:499:92","statements":[{"nodeType":"YulVariableDeclaration","src":"3120:12:92","value":{"kind":"number","nodeType":"YulLiteral","src":"3130:2:92","type":"","value":"32"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"3124:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3141:32:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3159:9:92"},{"name":"_1","nodeType":"YulIdentifier","src":"3170:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3155:3:92"},"nodeType":"YulFunctionCall","src":"3155:18:92"},"variables":[{"name":"tail_1","nodeType":"YulTypedName","src":"3145:6:92","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3189:9:92"},{"name":"_1","nodeType":"YulIdentifier","src":"3200:2:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3182:6:92"},"nodeType":"YulFunctionCall","src":"3182:21:92"},"nodeType":"YulExpressionStatement","src":"3182:21:92"},{"nodeType":"YulVariableDeclaration","src":"3212:17:92","value":{"name":"tail_1","nodeType":"YulIdentifier","src":"3223:6:92"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"3216:3:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3238:27:92","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3258:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3252:5:92"},"nodeType":"YulFunctionCall","src":"3252:13:92"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"3242:6:92","type":""}]},{"expression":{"arguments":[{"name":"tail_1","nodeType":"YulIdentifier","src":"3281:6:92"},{"name":"length","nodeType":"YulIdentifier","src":"3289:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3274:6:92"},"nodeType":"YulFunctionCall","src":"3274:22:92"},"nodeType":"YulExpressionStatement","src":"3274:22:92"},{"nodeType":"YulAssignment","src":"3305:25:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3316:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3327:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3312:3:92"},"nodeType":"YulFunctionCall","src":"3312:18:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"3305:3:92"}]},{"nodeType":"YulVariableDeclaration","src":"3339:29:92","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3357:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"3365:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3353:3:92"},"nodeType":"YulFunctionCall","src":"3353:15:92"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"3343:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3377:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"3386:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"3381:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"3445:138:92","statements":[{"nodeType":"YulAssignment","src":"3459:76:92","value":{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"3522:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3516:5:92"},"nodeType":"YulFunctionCall","src":"3516:13:92"},{"name":"pos","nodeType":"YulIdentifier","src":"3531:3:92"}],"functionName":{"name":"abi_encodeUpdatedPos_struct_MultiTargetPermission","nodeType":"YulIdentifier","src":"3466:49:92"},"nodeType":"YulFunctionCall","src":"3466:69:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"3459:3:92"}]},{"nodeType":"YulAssignment","src":"3548:25:92","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"3562:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"3570:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3558:3:92"},"nodeType":"YulFunctionCall","src":"3558:15:92"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"3548:6:92"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3407:1:92"},{"name":"length","nodeType":"YulIdentifier","src":"3410:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"3404:2:92"},"nodeType":"YulFunctionCall","src":"3404:13:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"3418:18:92","statements":[{"nodeType":"YulAssignment","src":"3420:14:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3429:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"3432:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3425:3:92"},"nodeType":"YulFunctionCall","src":"3425:9:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"3420:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"3400:3:92","statements":[]},"src":"3396:187:92"},{"nodeType":"YulAssignment","src":"3592:11:92","value":{"name":"pos","nodeType":"YulIdentifier","src":"3600:3:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3592:4:92"}]}]},"name":"abi_encode_tuple_t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3079:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3090:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3101:4:92","type":""}],"src":"2879:730:92"},{"body":{"nodeType":"YulBlock","src":"3750:465:92","statements":[{"body":{"nodeType":"YulBlock","src":"3796:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3805:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3808:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3798:6:92"},"nodeType":"YulFunctionCall","src":"3798:12:92"},"nodeType":"YulExpressionStatement","src":"3798:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3771:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"3780:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3767:3:92"},"nodeType":"YulFunctionCall","src":"3767:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"3792:2:92","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3763:3:92"},"nodeType":"YulFunctionCall","src":"3763:32:92"},"nodeType":"YulIf","src":"3760:52:92"},{"nodeType":"YulAssignment","src":"3821:39:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3850:9:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"3831:18:92"},"nodeType":"YulFunctionCall","src":"3831:29:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3821:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"3869:45:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3899:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3910:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3895:3:92"},"nodeType":"YulFunctionCall","src":"3895:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3882:12:92"},"nodeType":"YulFunctionCall","src":"3882:32:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"3873:5:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"3964:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3973:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3976:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3966:6:92"},"nodeType":"YulFunctionCall","src":"3966:12:92"},"nodeType":"YulExpressionStatement","src":"3966:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3936:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3947:5:92"},{"kind":"number","nodeType":"YulLiteral","src":"3954:6:92","type":"","value":"0xffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3943:3:92"},"nodeType":"YulFunctionCall","src":"3943:18:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"3933:2:92"},"nodeType":"YulFunctionCall","src":"3933:29:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3926:6:92"},"nodeType":"YulFunctionCall","src":"3926:37:92"},"nodeType":"YulIf","src":"3923:57:92"},{"nodeType":"YulAssignment","src":"3989:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"3999:5:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"3989:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"4013:46:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4044:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4055:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4040:3:92"},"nodeType":"YulFunctionCall","src":"4040:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4027:12:92"},"nodeType":"YulFunctionCall","src":"4027:32:92"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4017:6:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"4102:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4111:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4114:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4104:6:92"},"nodeType":"YulFunctionCall","src":"4104:12:92"},"nodeType":"YulExpressionStatement","src":"4104:12:92"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"4074:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"4082:18:92","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4071:2:92"},"nodeType":"YulFunctionCall","src":"4071:30:92"},"nodeType":"YulIf","src":"4068:50:92"},{"nodeType":"YulAssignment","src":"4127:82:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4181:9:92"},{"name":"offset","nodeType":"YulIdentifier","src":"4192:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4177:3:92"},"nodeType":"YulFunctionCall","src":"4177:22:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4201:7:92"}],"functionName":{"name":"abi_decode_struct_SetupPayload_calldata","nodeType":"YulIdentifier","src":"4137:39:92"},"nodeType":"YulFunctionCall","src":"4137:72:92"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"4127:6:92"}]}]},"name":"abi_decode_tuple_t_addresst_uint16t_struct$_SetupPayload_$14224_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3700:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3711:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3723:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"3731:6:92","type":""},{"name":"value2","nodeType":"YulTypedName","src":"3739:6:92","type":""}],"src":"3614:601:92"},{"body":{"nodeType":"YulBlock","src":"4286:184:92","statements":[{"nodeType":"YulVariableDeclaration","src":"4296:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"4305:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"4300:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"4365:63:92","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"4390:3:92"},{"name":"i","nodeType":"YulIdentifier","src":"4395:1:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4386:3:92"},"nodeType":"YulFunctionCall","src":"4386:11:92"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"4409:3:92"},{"name":"i","nodeType":"YulIdentifier","src":"4414:1:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4405:3:92"},"nodeType":"YulFunctionCall","src":"4405:11:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4399:5:92"},"nodeType":"YulFunctionCall","src":"4399:18:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4379:6:92"},"nodeType":"YulFunctionCall","src":"4379:39:92"},"nodeType":"YulExpressionStatement","src":"4379:39:92"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"4326:1:92"},{"name":"length","nodeType":"YulIdentifier","src":"4329:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"4323:2:92"},"nodeType":"YulFunctionCall","src":"4323:13:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"4337:19:92","statements":[{"nodeType":"YulAssignment","src":"4339:15:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"4348:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"4351:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4344:3:92"},"nodeType":"YulFunctionCall","src":"4344:10:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"4339:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"4319:3:92","statements":[]},"src":"4315:113:92"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"4448:3:92"},{"name":"length","nodeType":"YulIdentifier","src":"4453:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4444:3:92"},"nodeType":"YulFunctionCall","src":"4444:16:92"},{"kind":"number","nodeType":"YulLiteral","src":"4462:1:92","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4437:6:92"},"nodeType":"YulFunctionCall","src":"4437:27:92"},"nodeType":"YulExpressionStatement","src":"4437:27:92"}]},"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"4264:3:92","type":""},{"name":"dst","nodeType":"YulTypedName","src":"4269:3:92","type":""},{"name":"length","nodeType":"YulTypedName","src":"4274:6:92","type":""}],"src":"4220:250:92"},{"body":{"nodeType":"YulBlock","src":"4524:221:92","statements":[{"nodeType":"YulVariableDeclaration","src":"4534:26:92","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4554:5:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4548:5:92"},"nodeType":"YulFunctionCall","src":"4548:12:92"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"4538:6:92","type":""}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4576:3:92"},{"name":"length","nodeType":"YulIdentifier","src":"4581:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4569:6:92"},"nodeType":"YulFunctionCall","src":"4569:19:92"},"nodeType":"YulExpressionStatement","src":"4569:19:92"},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4636:5:92"},{"kind":"number","nodeType":"YulLiteral","src":"4643:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4632:3:92"},"nodeType":"YulFunctionCall","src":"4632:16:92"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4654:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"4659:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4650:3:92"},"nodeType":"YulFunctionCall","src":"4650:14:92"},{"name":"length","nodeType":"YulIdentifier","src":"4666:6:92"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"4597:34:92"},"nodeType":"YulFunctionCall","src":"4597:76:92"},"nodeType":"YulExpressionStatement","src":"4597:76:92"},{"nodeType":"YulAssignment","src":"4682:57:92","value":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4697:3:92"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"4710:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"4718:2:92","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4706:3:92"},"nodeType":"YulFunctionCall","src":"4706:15:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4727:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"4723:3:92"},"nodeType":"YulFunctionCall","src":"4723:7:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4702:3:92"},"nodeType":"YulFunctionCall","src":"4702:29:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4693:3:92"},"nodeType":"YulFunctionCall","src":"4693:39:92"},{"kind":"number","nodeType":"YulLiteral","src":"4734:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4689:3:92"},"nodeType":"YulFunctionCall","src":"4689:50:92"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"4682:3:92"}]}]},"name":"abi_encode_bytes","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"4501:5:92","type":""},{"name":"pos","nodeType":"YulTypedName","src":"4508:3:92","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"4516:3:92","type":""}],"src":"4475:270:92"},{"body":{"nodeType":"YulBlock","src":"4818:1094:92","statements":[{"nodeType":"YulVariableDeclaration","src":"4828:26:92","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4844:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"4849:4:92","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4840:3:92"},"nodeType":"YulFunctionCall","src":"4840:14:92"},"variables":[{"name":"tail","nodeType":"YulTypedName","src":"4832:4:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4863:32:92","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4889:5:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4883:5:92"},"nodeType":"YulFunctionCall","src":"4883:12:92"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"4867:12:92","type":""}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4911:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"4916:4:92","type":"","value":"0x40"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4904:6:92"},"nodeType":"YulFunctionCall","src":"4904:17:92"},"nodeType":"YulExpressionStatement","src":"4904:17:92"},{"nodeType":"YulVariableDeclaration","src":"4930:17:92","value":{"name":"tail","nodeType":"YulIdentifier","src":"4943:4:92"},"variables":[{"name":"pos_1","nodeType":"YulTypedName","src":"4934:5:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4956:33:92","value":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"4976:12:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4970:5:92"},"nodeType":"YulFunctionCall","src":"4970:19:92"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"4960:6:92","type":""}]},{"expression":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"5005:4:92"},{"name":"length","nodeType":"YulIdentifier","src":"5011:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4998:6:92"},"nodeType":"YulFunctionCall","src":"4998:20:92"},"nodeType":"YulExpressionStatement","src":"4998:20:92"},{"nodeType":"YulAssignment","src":"5027:21:92","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5040:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"5045:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5036:3:92"},"nodeType":"YulFunctionCall","src":"5036:12:92"},"variableNames":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5027:5:92"}]},{"nodeType":"YulVariableDeclaration","src":"5057:14:92","value":{"kind":"number","nodeType":"YulLiteral","src":"5067:4:92","type":"","value":"0x20"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"5061:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5080:35:92","value":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"5098:12:92"},{"name":"_1","nodeType":"YulIdentifier","src":"5112:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5094:3:92"},"nodeType":"YulFunctionCall","src":"5094:21:92"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"5084:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5124:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"5133:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"5128:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"5192:175:92","statements":[{"expression":{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5213:5:92"},{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"5230:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5224:5:92"},"nodeType":"YulFunctionCall","src":"5224:13:92"},{"kind":"number","nodeType":"YulLiteral","src":"5239:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5220:3:92"},"nodeType":"YulFunctionCall","src":"5220:62:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5206:6:92"},"nodeType":"YulFunctionCall","src":"5206:77:92"},"nodeType":"YulExpressionStatement","src":"5206:77:92"},{"nodeType":"YulAssignment","src":"5296:23:92","value":{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5309:5:92"},{"name":"_1","nodeType":"YulIdentifier","src":"5316:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5305:3:92"},"nodeType":"YulFunctionCall","src":"5305:14:92"},"variableNames":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5296:5:92"}]},{"nodeType":"YulAssignment","src":"5332:25:92","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"5346:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"5354:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5342:3:92"},"nodeType":"YulFunctionCall","src":"5342:15:92"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"5332:6:92"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"5154:1:92"},{"name":"length","nodeType":"YulIdentifier","src":"5157:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"5151:2:92"},"nodeType":"YulFunctionCall","src":"5151:13:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"5165:18:92","statements":[{"nodeType":"YulAssignment","src":"5167:14:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"5176:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"5179:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5172:3:92"},"nodeType":"YulFunctionCall","src":"5172:9:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"5167:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"5147:3:92","statements":[]},"src":"5143:224:92"},{"nodeType":"YulVariableDeclaration","src":"5376:43:92","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5408:5:92"},{"name":"_1","nodeType":"YulIdentifier","src":"5415:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5404:3:92"},"nodeType":"YulFunctionCall","src":"5404:14:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5398:5:92"},"nodeType":"YulFunctionCall","src":"5398:21:92"},"variables":[{"name":"memberValue0_1","nodeType":"YulTypedName","src":"5380:14:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5439:3:92"},{"name":"_1","nodeType":"YulIdentifier","src":"5444:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5435:3:92"},"nodeType":"YulFunctionCall","src":"5435:12:92"},{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5453:5:92"},{"name":"pos","nodeType":"YulIdentifier","src":"5460:3:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5449:3:92"},"nodeType":"YulFunctionCall","src":"5449:15:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5428:6:92"},"nodeType":"YulFunctionCall","src":"5428:37:92"},"nodeType":"YulExpressionStatement","src":"5428:37:92"},{"nodeType":"YulVariableDeclaration","src":"5474:18:92","value":{"name":"pos_1","nodeType":"YulIdentifier","src":"5487:5:92"},"variables":[{"name":"pos_2","nodeType":"YulTypedName","src":"5478:5:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5501:37:92","value":{"arguments":[{"name":"memberValue0_1","nodeType":"YulIdentifier","src":"5523:14:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5517:5:92"},"nodeType":"YulFunctionCall","src":"5517:21:92"},"variables":[{"name":"length_1","nodeType":"YulTypedName","src":"5505:8:92","type":""}]},{"expression":{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5554:5:92"},{"name":"length_1","nodeType":"YulIdentifier","src":"5561:8:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5547:6:92"},"nodeType":"YulFunctionCall","src":"5547:23:92"},"nodeType":"YulExpressionStatement","src":"5547:23:92"},{"nodeType":"YulAssignment","src":"5579:23:92","value":{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5592:5:92"},{"name":"_1","nodeType":"YulIdentifier","src":"5599:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5588:3:92"},"nodeType":"YulFunctionCall","src":"5588:14:92"},"variableNames":[{"name":"pos_2","nodeType":"YulIdentifier","src":"5579:5:92"}]},{"nodeType":"YulVariableDeclaration","src":"5611:39:92","value":{"arguments":[{"name":"memberValue0_1","nodeType":"YulIdentifier","src":"5631:14:92"},{"name":"_1","nodeType":"YulIdentifier","src":"5647:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5627:3:92"},"nodeType":"YulFunctionCall","src":"5627:23:92"},"variables":[{"name":"srcPtr_1","nodeType":"YulTypedName","src":"5615:8:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5659:12:92","value":{"kind":"number","nodeType":"YulLiteral","src":"5670:1:92","type":"","value":"0"},"variables":[{"name":"i_1","nodeType":"YulTypedName","src":"5663:3:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"5737:148:92","statements":[{"nodeType":"YulAssignment","src":"5751:82:92","value":{"arguments":[{"arguments":[{"name":"srcPtr_1","nodeType":"YulIdentifier","src":"5816:8:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5810:5:92"},"nodeType":"YulFunctionCall","src":"5810:15:92"},{"name":"pos_2","nodeType":"YulIdentifier","src":"5827:5:92"}],"functionName":{"name":"abi_encodeUpdatedPos_struct_MultiTargetPermission","nodeType":"YulIdentifier","src":"5760:49:92"},"nodeType":"YulFunctionCall","src":"5760:73:92"},"variableNames":[{"name":"pos_2","nodeType":"YulIdentifier","src":"5751:5:92"}]},{"nodeType":"YulAssignment","src":"5846:29:92","value":{"arguments":[{"name":"srcPtr_1","nodeType":"YulIdentifier","src":"5862:8:92"},{"name":"_1","nodeType":"YulIdentifier","src":"5872:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5858:3:92"},"nodeType":"YulFunctionCall","src":"5858:17:92"},"variableNames":[{"name":"srcPtr_1","nodeType":"YulIdentifier","src":"5846:8:92"}]}]},"condition":{"arguments":[{"name":"i_1","nodeType":"YulIdentifier","src":"5691:3:92"},{"name":"length_1","nodeType":"YulIdentifier","src":"5696:8:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"5688:2:92"},"nodeType":"YulFunctionCall","src":"5688:17:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"5706:22:92","statements":[{"nodeType":"YulAssignment","src":"5708:18:92","value":{"arguments":[{"name":"i_1","nodeType":"YulIdentifier","src":"5719:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"5724:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5715:3:92"},"nodeType":"YulFunctionCall","src":"5715:11:92"},"variableNames":[{"name":"i_1","nodeType":"YulIdentifier","src":"5708:3:92"}]}]},"pre":{"nodeType":"YulBlock","src":"5684:3:92","statements":[]},"src":"5680:205:92"},{"nodeType":"YulAssignment","src":"5894:12:92","value":{"name":"pos_2","nodeType":"YulIdentifier","src":"5901:5:92"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"5894:3:92"}]}]},"name":"abi_encode_struct_PreparedSetupData","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"4795:5:92","type":""},{"name":"pos","nodeType":"YulTypedName","src":"4802:3:92","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"4810:3:92","type":""}],"src":"4750:1162:92"},{"body":{"nodeType":"YulBlock","src":"6136:231:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6153:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6164:2:92","type":"","value":"64"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6146:6:92"},"nodeType":"YulFunctionCall","src":"6146:21:92"},"nodeType":"YulExpressionStatement","src":"6146:21:92"},{"nodeType":"YulVariableDeclaration","src":"6176:58:92","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6207:6:92"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6219:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6230:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6215:3:92"},"nodeType":"YulFunctionCall","src":"6215:18:92"}],"functionName":{"name":"abi_encode_bytes","nodeType":"YulIdentifier","src":"6190:16:92"},"nodeType":"YulFunctionCall","src":"6190:44:92"},"variables":[{"name":"tail_1","nodeType":"YulTypedName","src":"6180:6:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6254:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6265:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6250:3:92"},"nodeType":"YulFunctionCall","src":"6250:18:92"},{"arguments":[{"name":"tail_1","nodeType":"YulIdentifier","src":"6274:6:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"6282:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6270:3:92"},"nodeType":"YulFunctionCall","src":"6270:22:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6243:6:92"},"nodeType":"YulFunctionCall","src":"6243:50:92"},"nodeType":"YulExpressionStatement","src":"6243:50:92"},{"nodeType":"YulAssignment","src":"6302:59:92","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"6346:6:92"},{"name":"tail_1","nodeType":"YulIdentifier","src":"6354:6:92"}],"functionName":{"name":"abi_encode_struct_PreparedSetupData","nodeType":"YulIdentifier","src":"6310:35:92"},"nodeType":"YulFunctionCall","src":"6310:51:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6302:4:92"}]}]},"name":"abi_encode_tuple_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$14216_memory_ptr__to_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$14216_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6097:9:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"6108:6:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"6116:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6127:4:92","type":""}],"src":"5917:450:92"},{"body":{"nodeType":"YulBlock","src":"6404:95:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6421:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6428:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"6433:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"6424:3:92"},"nodeType":"YulFunctionCall","src":"6424:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6414:6:92"},"nodeType":"YulFunctionCall","src":"6414:31:92"},"nodeType":"YulExpressionStatement","src":"6414:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6461:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"6464:4:92","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6454:6:92"},"nodeType":"YulFunctionCall","src":"6454:15:92"},"nodeType":"YulExpressionStatement","src":"6454:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6485:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6488:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6478:6:92"},"nodeType":"YulFunctionCall","src":"6478:15:92"},"nodeType":"YulExpressionStatement","src":"6478:15:92"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"6372:127:92"},{"body":{"nodeType":"YulBlock","src":"6600:899:92","statements":[{"body":{"nodeType":"YulBlock","src":"6646:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6655:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6658:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6648:6:92"},"nodeType":"YulFunctionCall","src":"6648:12:92"},"nodeType":"YulExpressionStatement","src":"6648:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"6621:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"6630:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6617:3:92"},"nodeType":"YulFunctionCall","src":"6617:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"6642:2:92","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6613:3:92"},"nodeType":"YulFunctionCall","src":"6613:32:92"},"nodeType":"YulIf","src":"6610:52:92"},{"nodeType":"YulAssignment","src":"6671:39:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6700:9:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"6681:18:92"},"nodeType":"YulFunctionCall","src":"6681:29:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"6671:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"6719:46:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6750:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6761:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6746:3:92"},"nodeType":"YulFunctionCall","src":"6746:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6733:12:92"},"nodeType":"YulFunctionCall","src":"6733:32:92"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"6723:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"6774:28:92","value":{"kind":"number","nodeType":"YulLiteral","src":"6784:18:92","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"6778:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"6829:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6838:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6841:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6831:6:92"},"nodeType":"YulFunctionCall","src":"6831:12:92"},"nodeType":"YulExpressionStatement","src":"6831:12:92"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"6817:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"6825:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6814:2:92"},"nodeType":"YulFunctionCall","src":"6814:14:92"},"nodeType":"YulIf","src":"6811:34:92"},{"nodeType":"YulVariableDeclaration","src":"6854:32:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6868:9:92"},{"name":"offset","nodeType":"YulIdentifier","src":"6879:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6864:3:92"},"nodeType":"YulFunctionCall","src":"6864:22:92"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"6858:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"6934:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6943:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6946:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6936:6:92"},"nodeType":"YulFunctionCall","src":"6936:12:92"},"nodeType":"YulExpressionStatement","src":"6936:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"6913:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"6917:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6909:3:92"},"nodeType":"YulFunctionCall","src":"6909:13:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"6924:7:92"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6905:3:92"},"nodeType":"YulFunctionCall","src":"6905:27:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"6898:6:92"},"nodeType":"YulFunctionCall","src":"6898:35:92"},"nodeType":"YulIf","src":"6895:55:92"},{"nodeType":"YulVariableDeclaration","src":"6959:26:92","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"6982:2:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6969:12:92"},"nodeType":"YulFunctionCall","src":"6969:16:92"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"6963:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"7008:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"7010:16:92"},"nodeType":"YulFunctionCall","src":"7010:18:92"},"nodeType":"YulExpressionStatement","src":"7010:18:92"}]},"condition":{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"7000:2:92"},{"name":"_1","nodeType":"YulIdentifier","src":"7004:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6997:2:92"},"nodeType":"YulFunctionCall","src":"6997:10:92"},"nodeType":"YulIf","src":"6994:36:92"},{"nodeType":"YulVariableDeclaration","src":"7039:17:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7053:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"7049:3:92"},"nodeType":"YulFunctionCall","src":"7049:7:92"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"7043:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"7065:23:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7085:2:92","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"7079:5:92"},"nodeType":"YulFunctionCall","src":"7079:9:92"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"7069:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"7097:71:92","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7119:6:92"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"7143:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"7147:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7139:3:92"},"nodeType":"YulFunctionCall","src":"7139:13:92"},{"name":"_4","nodeType":"YulIdentifier","src":"7154:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7135:3:92"},"nodeType":"YulFunctionCall","src":"7135:22:92"},{"kind":"number","nodeType":"YulLiteral","src":"7159:2:92","type":"","value":"63"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7131:3:92"},"nodeType":"YulFunctionCall","src":"7131:31:92"},{"name":"_4","nodeType":"YulIdentifier","src":"7164:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7127:3:92"},"nodeType":"YulFunctionCall","src":"7127:40:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7115:3:92"},"nodeType":"YulFunctionCall","src":"7115:53:92"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"7101:10:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"7227:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"7229:16:92"},"nodeType":"YulFunctionCall","src":"7229:18:92"},"nodeType":"YulExpressionStatement","src":"7229:18:92"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"7186:10:92"},{"name":"_1","nodeType":"YulIdentifier","src":"7198:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"7183:2:92"},"nodeType":"YulFunctionCall","src":"7183:18:92"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"7206:10:92"},{"name":"memPtr","nodeType":"YulIdentifier","src":"7218:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"7203:2:92"},"nodeType":"YulFunctionCall","src":"7203:22:92"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"7180:2:92"},"nodeType":"YulFunctionCall","src":"7180:46:92"},"nodeType":"YulIf","src":"7177:72:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7265:2:92","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"7269:10:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7258:6:92"},"nodeType":"YulFunctionCall","src":"7258:22:92"},"nodeType":"YulExpressionStatement","src":"7258:22:92"},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7296:6:92"},{"name":"_3","nodeType":"YulIdentifier","src":"7304:2:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7289:6:92"},"nodeType":"YulFunctionCall","src":"7289:18:92"},"nodeType":"YulExpressionStatement","src":"7289:18:92"},{"body":{"nodeType":"YulBlock","src":"7353:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7362:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7365:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7355:6:92"},"nodeType":"YulFunctionCall","src":"7355:12:92"},"nodeType":"YulExpressionStatement","src":"7355:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"7330:2:92"},{"name":"_3","nodeType":"YulIdentifier","src":"7334:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7326:3:92"},"nodeType":"YulFunctionCall","src":"7326:11:92"},{"kind":"number","nodeType":"YulLiteral","src":"7339:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7322:3:92"},"nodeType":"YulFunctionCall","src":"7322:20:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"7344:7:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"7319:2:92"},"nodeType":"YulFunctionCall","src":"7319:33:92"},"nodeType":"YulIf","src":"7316:53:92"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7395:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"7403:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7391:3:92"},"nodeType":"YulFunctionCall","src":"7391:15:92"},{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"7412:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"7416:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7408:3:92"},"nodeType":"YulFunctionCall","src":"7408:11:92"},{"name":"_3","nodeType":"YulIdentifier","src":"7421:2:92"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"7378:12:92"},"nodeType":"YulFunctionCall","src":"7378:46:92"},"nodeType":"YulExpressionStatement","src":"7378:46:92"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7448:6:92"},{"name":"_3","nodeType":"YulIdentifier","src":"7456:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7444:3:92"},"nodeType":"YulFunctionCall","src":"7444:15:92"},{"kind":"number","nodeType":"YulLiteral","src":"7461:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7440:3:92"},"nodeType":"YulFunctionCall","src":"7440:24:92"},{"kind":"number","nodeType":"YulLiteral","src":"7466:1:92","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7433:6:92"},"nodeType":"YulFunctionCall","src":"7433:35:92"},"nodeType":"YulExpressionStatement","src":"7433:35:92"},{"nodeType":"YulAssignment","src":"7477:16:92","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"7487:6:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"7477:6:92"}]}]},"name":"abi_decode_tuple_t_addresst_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6558:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"6569:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"6581:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"6589:6:92","type":""}],"src":"6504:995:92"},{"body":{"nodeType":"YulBlock","src":"7705:209:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7722:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7737:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"7745:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7733:3:92"},"nodeType":"YulFunctionCall","src":"7733:55:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7715:6:92"},"nodeType":"YulFunctionCall","src":"7715:74:92"},"nodeType":"YulExpressionStatement","src":"7715:74:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7809:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7820:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7805:3:92"},"nodeType":"YulFunctionCall","src":"7805:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"7825:2:92","type":"","value":"64"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7798:6:92"},"nodeType":"YulFunctionCall","src":"7798:30:92"},"nodeType":"YulExpressionStatement","src":"7798:30:92"},{"nodeType":"YulAssignment","src":"7837:71:92","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"7881:6:92"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7893:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7904:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7889:3:92"},"nodeType":"YulFunctionCall","src":"7889:18:92"}],"functionName":{"name":"abi_encode_struct_PreparedSetupData","nodeType":"YulIdentifier","src":"7845:35:92"},"nodeType":"YulFunctionCall","src":"7845:63:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7837:4:92"}]}]},"name":"abi_encode_tuple_t_address_t_struct$_PreparedSetupData_$14216_memory_ptr__to_t_address_t_struct$_PreparedSetupData_$14216_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7666:9:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"7677:6:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"7685:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7696:4:92","type":""}],"src":"7504:410:92"},{"body":{"nodeType":"YulBlock","src":"8034:125:92","statements":[{"nodeType":"YulAssignment","src":"8044:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8056:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8067:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8052:3:92"},"nodeType":"YulFunctionCall","src":"8052:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"8044:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8086:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"8101:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"8109:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8097:3:92"},"nodeType":"YulFunctionCall","src":"8097:55:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8079:6:92"},"nodeType":"YulFunctionCall","src":"8079:74:92"},"nodeType":"YulExpressionStatement","src":"8079:74:92"}]},"name":"abi_encode_tuple_t_contract$_IDAO_$10865__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8003:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"8014:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"8025:4:92","type":""}],"src":"7919:240:92"},{"body":{"nodeType":"YulBlock","src":"8196:95:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8213:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8220:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"8225:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"8216:3:92"},"nodeType":"YulFunctionCall","src":"8216:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8206:6:92"},"nodeType":"YulFunctionCall","src":"8206:31:92"},"nodeType":"YulExpressionStatement","src":"8206:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8253:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"8256:4:92","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8246:6:92"},"nodeType":"YulFunctionCall","src":"8246:15:92"},"nodeType":"YulExpressionStatement","src":"8246:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8277:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8280:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8270:6:92"},"nodeType":"YulFunctionCall","src":"8270:15:92"},"nodeType":"YulExpressionStatement","src":"8270:15:92"}]},"name":"panic_error_0x11","nodeType":"YulFunctionDefinition","src":"8164:127:92"},{"body":{"nodeType":"YulBlock","src":"8345:159:92","statements":[{"nodeType":"YulVariableDeclaration","src":"8355:52:92","value":{"kind":"number","nodeType":"YulLiteral","src":"8365:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"8359:2:92","type":""}]},{"nodeType":"YulAssignment","src":"8416:35:92","value":{"arguments":[{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"8432:1:92"},{"name":"_1","nodeType":"YulIdentifier","src":"8435:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8428:3:92"},"nodeType":"YulFunctionCall","src":"8428:10:92"},{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"8444:1:92"},{"name":"_1","nodeType":"YulIdentifier","src":"8447:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8440:3:92"},"nodeType":"YulFunctionCall","src":"8440:10:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"8424:3:92"},"nodeType":"YulFunctionCall","src":"8424:27:92"},"variableNames":[{"name":"diff","nodeType":"YulIdentifier","src":"8416:4:92"}]},{"body":{"nodeType":"YulBlock","src":"8476:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"8478:16:92"},"nodeType":"YulFunctionCall","src":"8478:18:92"},"nodeType":"YulExpressionStatement","src":"8478:18:92"}]},"condition":{"arguments":[{"name":"diff","nodeType":"YulIdentifier","src":"8466:4:92"},{"name":"_1","nodeType":"YulIdentifier","src":"8472:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"8463:2:92"},"nodeType":"YulFunctionCall","src":"8463:12:92"},"nodeType":"YulIf","src":"8460:38:92"}]},"name":"checked_sub_t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"8327:1:92","type":""},{"name":"y","nodeType":"YulTypedName","src":"8330:1:92","type":""}],"returnVariables":[{"name":"diff","nodeType":"YulTypedName","src":"8336:4:92","type":""}],"src":"8296:208:92"},{"body":{"nodeType":"YulBlock","src":"8541:95:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8558:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8565:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"8570:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"8561:3:92"},"nodeType":"YulFunctionCall","src":"8561:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8551:6:92"},"nodeType":"YulFunctionCall","src":"8551:31:92"},"nodeType":"YulExpressionStatement","src":"8551:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8598:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"8601:4:92","type":"","value":"0x32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8591:6:92"},"nodeType":"YulFunctionCall","src":"8591:15:92"},"nodeType":"YulExpressionStatement","src":"8591:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8622:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8625:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8615:6:92"},"nodeType":"YulFunctionCall","src":"8615:15:92"},"nodeType":"YulExpressionStatement","src":"8615:15:92"}]},"name":"panic_error_0x32","nodeType":"YulFunctionDefinition","src":"8509:127:92"},{"body":{"nodeType":"YulBlock","src":"8688:187:92","statements":[{"nodeType":"YulVariableDeclaration","src":"8698:52:92","value":{"kind":"number","nodeType":"YulLiteral","src":"8708:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"8702:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"8759:29:92","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8778:5:92"},{"name":"_1","nodeType":"YulIdentifier","src":"8785:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8774:3:92"},"nodeType":"YulFunctionCall","src":"8774:14:92"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"8763:7:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"8816:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"8818:16:92"},"nodeType":"YulFunctionCall","src":"8818:18:92"},"nodeType":"YulExpressionStatement","src":"8818:18:92"}]},"condition":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"8803:7:92"},{"name":"_1","nodeType":"YulIdentifier","src":"8812:2:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"8800:2:92"},"nodeType":"YulFunctionCall","src":"8800:15:92"},"nodeType":"YulIf","src":"8797:41:92"},{"nodeType":"YulAssignment","src":"8847:22:92","value":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"8858:7:92"},{"kind":"number","nodeType":"YulLiteral","src":"8867:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8854:3:92"},"nodeType":"YulFunctionCall","src":"8854:15:92"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"8847:3:92"}]}]},"name":"increment_t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"8670:5:92","type":""}],"returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"8680:3:92","type":""}],"src":"8641:234:92"},{"body":{"nodeType":"YulBlock","src":"9054:172:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9071:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9082:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9064:6:92"},"nodeType":"YulFunctionCall","src":"9064:21:92"},"nodeType":"YulExpressionStatement","src":"9064:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9105:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9116:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9101:3:92"},"nodeType":"YulFunctionCall","src":"9101:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"9121:2:92","type":"","value":"22"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9094:6:92"},"nodeType":"YulFunctionCall","src":"9094:30:92"},"nodeType":"YulExpressionStatement","src":"9094:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9144:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9155:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9140:3:92"},"nodeType":"YulFunctionCall","src":"9140:18:92"},{"hexValue":"455243313136373a20637265617465206661696c6564","kind":"string","nodeType":"YulLiteral","src":"9160:24:92","type":"","value":"ERC1167: create failed"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9133:6:92"},"nodeType":"YulFunctionCall","src":"9133:52:92"},"nodeType":"YulExpressionStatement","src":"9133:52:92"},{"nodeType":"YulAssignment","src":"9194:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9206:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9217:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9202:3:92"},"nodeType":"YulFunctionCall","src":"9202:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"9194:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_68ca40b61460257f14e69f48b1a4dbc812e9afc6932f127ef8084544457b3335__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9031:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"9045:4:92","type":""}],"src":"8880:346:92"},{"body":{"nodeType":"YulBlock","src":"9405:228:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9422:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9433:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9415:6:92"},"nodeType":"YulFunctionCall","src":"9415:21:92"},"nodeType":"YulExpressionStatement","src":"9415:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9456:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9467:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9452:3:92"},"nodeType":"YulFunctionCall","src":"9452:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"9472:2:92","type":"","value":"38"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9445:6:92"},"nodeType":"YulFunctionCall","src":"9445:30:92"},"nodeType":"YulExpressionStatement","src":"9445:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9495:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9506:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9491:3:92"},"nodeType":"YulFunctionCall","src":"9491:18:92"},{"hexValue":"416464726573733a20696e73756666696369656e742062616c616e636520666f","kind":"string","nodeType":"YulLiteral","src":"9511:34:92","type":"","value":"Address: insufficient balance fo"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9484:6:92"},"nodeType":"YulFunctionCall","src":"9484:62:92"},"nodeType":"YulExpressionStatement","src":"9484:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9566:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9577:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9562:3:92"},"nodeType":"YulFunctionCall","src":"9562:18:92"},{"hexValue":"722063616c6c","kind":"string","nodeType":"YulLiteral","src":"9582:8:92","type":"","value":"r call"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9555:6:92"},"nodeType":"YulFunctionCall","src":"9555:36:92"},"nodeType":"YulExpressionStatement","src":"9555:36:92"},{"nodeType":"YulAssignment","src":"9600:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9612:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9623:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9608:3:92"},"nodeType":"YulFunctionCall","src":"9608:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"9600:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9382:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"9396:4:92","type":""}],"src":"9231:402:92"},{"body":{"nodeType":"YulBlock","src":"9775:150:92","statements":[{"nodeType":"YulVariableDeclaration","src":"9785:27:92","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"9805:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"9799:5:92"},"nodeType":"YulFunctionCall","src":"9799:13:92"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"9789:6:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"9860:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"9868:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9856:3:92"},"nodeType":"YulFunctionCall","src":"9856:17:92"},{"name":"pos","nodeType":"YulIdentifier","src":"9875:3:92"},{"name":"length","nodeType":"YulIdentifier","src":"9880:6:92"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"9821:34:92"},"nodeType":"YulFunctionCall","src":"9821:66:92"},"nodeType":"YulExpressionStatement","src":"9821:66:92"},{"nodeType":"YulAssignment","src":"9896:23:92","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"9907:3:92"},{"name":"length","nodeType":"YulIdentifier","src":"9912:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9903:3:92"},"nodeType":"YulFunctionCall","src":"9903:16:92"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"9896:3:92"}]}]},"name":"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"9751:3:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"9756:6:92","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"9767:3:92","type":""}],"src":"9638:287:92"},{"body":{"nodeType":"YulBlock","src":"10104:179:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10121:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"10132:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10114:6:92"},"nodeType":"YulFunctionCall","src":"10114:21:92"},"nodeType":"YulExpressionStatement","src":"10114:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10155:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"10166:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10151:3:92"},"nodeType":"YulFunctionCall","src":"10151:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"10171:2:92","type":"","value":"29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10144:6:92"},"nodeType":"YulFunctionCall","src":"10144:30:92"},"nodeType":"YulExpressionStatement","src":"10144:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10194:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"10205:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10190:3:92"},"nodeType":"YulFunctionCall","src":"10190:18:92"},{"hexValue":"416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374","kind":"string","nodeType":"YulLiteral","src":"10210:31:92","type":"","value":"Address: call to non-contract"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10183:6:92"},"nodeType":"YulFunctionCall","src":"10183:59:92"},"nodeType":"YulExpressionStatement","src":"10183:59:92"},{"nodeType":"YulAssignment","src":"10251:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10263:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"10274:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10259:3:92"},"nodeType":"YulFunctionCall","src":"10259:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"10251:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"10081:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"10095:4:92","type":""}],"src":"9930:353:92"},{"body":{"nodeType":"YulBlock","src":"10409:98:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10426:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"10437:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10419:6:92"},"nodeType":"YulFunctionCall","src":"10419:21:92"},"nodeType":"YulExpressionStatement","src":"10419:21:92"},{"nodeType":"YulAssignment","src":"10449:52:92","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"10474:6:92"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10486:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"10497:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10482:3:92"},"nodeType":"YulFunctionCall","src":"10482:18:92"}],"functionName":{"name":"abi_encode_bytes","nodeType":"YulIdentifier","src":"10457:16:92"},"nodeType":"YulFunctionCall","src":"10457:44:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"10449:4:92"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"10378:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"10389:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"10400:4:92","type":""}],"src":"10288:219:92"}]},"contents":"{\n { }\n function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n if iszero(eq(value, and(value, shl(224, 0xffffffff)))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 96)\n let pos := headStart\n pos := headStart\n let srcPtr := value0\n let i := 0\n for { } lt(i, 0x03) { i := add(i, 1) }\n {\n mstore(pos, and(mload(srcPtr), 0xff))\n let _1 := 0x20\n pos := add(pos, _1)\n srcPtr := add(srcPtr, _1)\n }\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_decode_address(offset) -> value\n {\n value := calldataload(offset)\n if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n }\n function abi_decode_struct_SetupPayload_calldata(offset, end) -> value\n {\n if slt(sub(end, offset), 96) { revert(0, 0) }\n value := offset\n }\n function abi_decode_tuple_t_addresst_struct$_SetupPayload_$14224_calldata_ptr(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n let offset := calldataload(add(headStart, 32))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n value1 := abi_decode_struct_SetupPayload_calldata(add(headStart, offset), dataEnd)\n }\n function panic_error_0x21()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x21)\n revert(0, 0x24)\n }\n function abi_encodeUpdatedPos_struct_MultiTargetPermission(value0, pos) -> updatedPos\n {\n let _1 := mload(value0)\n if iszero(lt(_1, 3))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x21)\n revert(0, 0x24)\n }\n mstore(pos, _1)\n let memberValue0 := mload(add(value0, 0x20))\n let _2 := 0xffffffffffffffffffffffffffffffffffffffff\n mstore(add(pos, 0x20), and(memberValue0, _2))\n mstore(add(pos, 0x40), and(mload(add(value0, 0x40)), _2))\n mstore(add(pos, 0x60), and(mload(add(value0, 0x60)), _2))\n mstore(add(pos, 0x80), mload(add(value0, 0x80)))\n updatedPos := add(pos, 0xa0)\n }\n function abi_encode_tuple_t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n let _1 := 32\n let tail_1 := add(headStart, _1)\n mstore(headStart, _1)\n let pos := tail_1\n let length := mload(value0)\n mstore(tail_1, length)\n pos := add(headStart, 64)\n let srcPtr := add(value0, _1)\n let i := 0\n for { } lt(i, length) { i := add(i, 1) }\n {\n pos := abi_encodeUpdatedPos_struct_MultiTargetPermission(mload(srcPtr), pos)\n srcPtr := add(srcPtr, _1)\n }\n tail := pos\n }\n function abi_decode_tuple_t_addresst_uint16t_struct$_SetupPayload_$14224_calldata_ptr(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n let value := calldataload(add(headStart, 32))\n if iszero(eq(value, and(value, 0xffff))) { revert(0, 0) }\n value1 := value\n let offset := calldataload(add(headStart, 64))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n value2 := abi_decode_struct_SetupPayload_calldata(add(headStart, offset), dataEnd)\n }\n function copy_memory_to_memory_with_cleanup(src, dst, length)\n {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n mstore(add(dst, length), 0)\n }\n function abi_encode_bytes(value, pos) -> end\n {\n let length := mload(value)\n mstore(pos, length)\n copy_memory_to_memory_with_cleanup(add(value, 0x20), add(pos, 0x20), length)\n end := add(add(pos, and(add(length, 31), not(31))), 0x20)\n }\n function abi_encode_struct_PreparedSetupData(value, pos) -> end\n {\n let tail := add(pos, 0x40)\n let memberValue0 := mload(value)\n mstore(pos, 0x40)\n let pos_1 := tail\n let length := mload(memberValue0)\n mstore(tail, length)\n pos_1 := add(pos, 96)\n let _1 := 0x20\n let srcPtr := add(memberValue0, _1)\n let i := 0\n for { } lt(i, length) { i := add(i, 1) }\n {\n mstore(pos_1, and(mload(srcPtr), 0xffffffffffffffffffffffffffffffffffffffff))\n pos_1 := add(pos_1, _1)\n srcPtr := add(srcPtr, _1)\n }\n let memberValue0_1 := mload(add(value, _1))\n mstore(add(pos, _1), sub(pos_1, pos))\n let pos_2 := pos_1\n let length_1 := mload(memberValue0_1)\n mstore(pos_1, length_1)\n pos_2 := add(pos_1, _1)\n let srcPtr_1 := add(memberValue0_1, _1)\n let i_1 := 0\n for { } lt(i_1, length_1) { i_1 := add(i_1, 1) }\n {\n pos_2 := abi_encodeUpdatedPos_struct_MultiTargetPermission(mload(srcPtr_1), pos_2)\n srcPtr_1 := add(srcPtr_1, _1)\n }\n end := pos_2\n }\n function abi_encode_tuple_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$14216_memory_ptr__to_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$14216_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n {\n mstore(headStart, 64)\n let tail_1 := abi_encode_bytes(value0, add(headStart, 64))\n mstore(add(headStart, 32), sub(tail_1, headStart))\n tail := abi_encode_struct_PreparedSetupData(value1, tail_1)\n }\n function panic_error_0x41()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function abi_decode_tuple_t_addresst_bytes_memory_ptr(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n let offset := calldataload(add(headStart, 32))\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n let _2 := add(headStart, offset)\n if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n let _3 := calldataload(_2)\n if gt(_3, _1) { panic_error_0x41() }\n let _4 := not(31)\n let memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n mstore(memPtr, _3)\n if gt(add(add(_2, _3), 32), dataEnd) { revert(0, 0) }\n calldatacopy(add(memPtr, 32), add(_2, 32), _3)\n mstore(add(add(memPtr, _3), 32), 0)\n value1 := memPtr\n }\n function abi_encode_tuple_t_address_t_struct$_PreparedSetupData_$14216_memory_ptr__to_t_address_t_struct$_PreparedSetupData_$14216_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n {\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n mstore(add(headStart, 32), 64)\n tail := abi_encode_struct_PreparedSetupData(value1, add(headStart, 64))\n }\n function abi_encode_tuple_t_contract$_IDAO_$10865__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function panic_error_0x11()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n function checked_sub_t_uint160(x, y) -> diff\n {\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n diff := sub(and(x, _1), and(y, _1))\n if gt(diff, _1) { panic_error_0x11() }\n }\n function panic_error_0x32()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n function increment_t_uint160(value) -> ret\n {\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n let value_1 := and(value, _1)\n if eq(value_1, _1) { panic_error_0x11() }\n ret := add(value_1, 1)\n }\n function abi_encode_tuple_t_stringliteral_68ca40b61460257f14e69f48b1a4dbc812e9afc6932f127ef8084544457b3335__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 22)\n mstore(add(headStart, 64), \"ERC1167: create failed\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 38)\n mstore(add(headStart, 64), \"Address: insufficient balance fo\")\n mstore(add(headStart, 96), \"r call\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n {\n let length := mload(value0)\n copy_memory_to_memory_with_cleanup(add(value0, 0x20), pos, length)\n end := add(pos, length)\n }\n function abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 29)\n mstore(add(headStart, 64), \"Address: call to non-contract\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n mstore(headStart, 32)\n tail := abi_encode_bytes(value0, add(headStart, 32))\n }\n}","id":92,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{"14293":[{"length":32,"start":193},{"length":32,"start":663}]},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100725760003560e01c80639cb0a124116100505780639cb0a124146100eb578063a8a9c29e1461010b578063f10832f11461012c57600080fd5b806301ffc9a7146100775780632ae9c6001461009f5780635c60da1b146100b4575b600080fd5b61008a6100853660046107fd565b61014d565b60405190151581526020015b60405180910390f35b6100a761019e565b6040516100969190610827565b6040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152602001610096565b6100fe6100f9366004610884565b6101c8565b604051610096919061094e565b61011e610119366004610997565b6101de565b604051610096929190610ae1565b61013f61013a366004610b25565b610216565b604051610096929190610be7565b60006001600160e01b0319821663099718b560e41b148061017d57506001600160e01b03198216621574e360e91b145b8061019857506301ffc9a760e01b6001600160e01b03198316145b92915050565b6101a66107df565b5060408051606081018252600181526004602082015260009181019190915290565b60606101d760006001806102f2565b9392505050565b60606101fd604051806040016040528060608152602001606081525090565b60405163a112810160e01b815260040160405180910390fd5b6000610235604051806040016040528060608152602001606081525090565b6040516001600160a01b038516602482015260009060440160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663189acdbd60e31b17905290506102c8816102b97f000000000000000000000000000000000000000000000000000000000000000090565b6001600160a01b031690610477565b92506102d460016104af565b82526102e360006001816102f2565b60208301525090939092509050565b6060826001600160a01b0316846001600160a01b0316111561032757604051633a4013cd60e21b815260040160405180910390fd5b6103318484610c1f565b6001600160a01b031667ffffffffffffffff81111561035257610352610b0f565b6040519080825280602002602001820160405280156103ab57816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282526000199092019101816103705790505b509050835b836001600160a01b0316816001600160a01b0316101561046f576040518060a001604052808460028111156103e7576103e76108d2565b81526001600160a01b038316602082018190526040820152600060608201527fa280eec51ab8e1bc4b6b0c1b7f1bde785761b787a49db404e3e9338ed9b016ef608090910152826104388784610c1f565b6001600160a01b03168151811061045157610451610c3f565b6020026020010181905250808061046790610c55565b9150506103b0565b509392505050565b600061048b836001600160a01b0316610568565b825190915015610198576104a86001600160a01b0382168361060e565b5092915050565b6060816001600160a01b031667ffffffffffffffff8111156104d3576104d3610b0f565b6040519080825280602002602001820160405280156104fc578160200160208202803683370190505b50905060005b826001600160a01b0316816001600160a01b03161015610562578082826001600160a01b03168151811061053857610538610c3f565b6001600160a01b03909216602092830291909101909101528061055a81610c55565b915050610502565b50919050565b6000763d602d80600a3d3981f3363d3d373d3d3d363d730000008260601b60e81c176000526e5af43d82803e903d91602b57fd5bf38260781b17602052603760096000f090506001600160a01b0381166106095760405162461bcd60e51b815260206004820152601660248201527f455243313136373a20637265617465206661696c65640000000000000000000060448201526064015b60405180910390fd5b919050565b60606101d7838360006040518060400160405280601e81526020017f416464726573733a206c6f772d6c6576656c2063616c6c206661696c656400008152506060824710156106c55760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610600565b600080866001600160a01b031685876040516106e19190610c7b565b60006040518083038185875af1925050503d806000811461071e576040519150601f19603f3d011682016040523d82523d6000602084013e610723565b606091505b509150915061073487838387610741565b925050505b949350505050565b606083156107b05782516000036107a9576001600160a01b0385163b6107a95760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610600565b5081610739565b61073983838151156107c55781518083602001fd5b8060405162461bcd60e51b81526004016106009190610c97565b60405180606001604052806003906020820280368337509192915050565b60006020828403121561080f57600080fd5b81356001600160e01b0319811681146101d757600080fd5b60608101818360005b600381101561085257815160ff16835260209283019290910190600101610830565b50505092915050565b80356001600160a01b038116811461060957600080fd5b60006060828403121561056257600080fd5b6000806040838503121561089757600080fd5b6108a08361085b565b9150602083013567ffffffffffffffff8111156108bc57600080fd5b6108c885828601610872565b9150509250929050565b634e487b7160e01b600052602160045260246000fd5b600081516003811061090a57634e487b7160e01b600052602160045260246000fd5b8352506020818101516001600160a01b0390811691840191909152604080830151821690840152606080830151909116908301526080908101519082015260a00190565b6020808252825182820181905260009190848201906040850190845b8181101561098b5761097d8385516108e8565b93850193925060010161096a565b50909695505050505050565b6000806000606084860312156109ac57600080fd5b6109b58461085b565b9250602084013561ffff811681146109cc57600080fd5b9150604084013567ffffffffffffffff8111156109e857600080fd5b6109f486828701610872565b9150509250925092565b60005b83811015610a19578181015183820152602001610a01565b50506000910152565b60008151808452610a3a8160208601602086016109fe565b601f01601f19169290920160200192915050565b805160408084528151908401819052600091602091908201906060860190845b81811015610a935783516001600160a01b031683529284019291840191600101610a6e565b50508483015186820387850152805180835290840192506000918401905b80831015610ad657610ac48285516108e8565b91508484019350600183019250610ab1565b509695505050505050565b604081526000610af46040830185610a22565b8281036020840152610b068185610a4e565b95945050505050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215610b3857600080fd5b610b418361085b565b9150602083013567ffffffffffffffff80821115610b5e57600080fd5b818501915085601f830112610b7257600080fd5b813581811115610b8457610b84610b0f565b604051601f8201601f19908116603f01168101908382118183101715610bac57610bac610b0f565b81604052828152886020848701011115610bc557600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6001600160a01b03831681526040602082015260006107396040830184610a4e565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b038281168282160390808211156104a8576104a8610c09565b634e487b7160e01b600052603260045260246000fd5b60006001600160a01b03808316818103610c7157610c71610c09565b6001019392505050565b60008251610c8d8184602087016109fe565b9190910192915050565b6020815260006101d76020830184610a2256fea164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x72 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9CB0A124 GT PUSH2 0x50 JUMPI DUP1 PUSH4 0x9CB0A124 EQ PUSH2 0xEB JUMPI DUP1 PUSH4 0xA8A9C29E EQ PUSH2 0x10B JUMPI DUP1 PUSH4 0xF10832F1 EQ PUSH2 0x12C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x77 JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0x9F JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0xB4 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8A PUSH2 0x85 CALLDATASIZE PUSH1 0x4 PUSH2 0x7FD JUMP JUMPDEST PUSH2 0x14D JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xA7 PUSH2 0x19E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x96 SWAP2 SWAP1 PUSH2 0x827 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x96 JUMP JUMPDEST PUSH2 0xFE PUSH2 0xF9 CALLDATASIZE PUSH1 0x4 PUSH2 0x884 JUMP JUMPDEST PUSH2 0x1C8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x96 SWAP2 SWAP1 PUSH2 0x94E JUMP JUMPDEST PUSH2 0x11E PUSH2 0x119 CALLDATASIZE PUSH1 0x4 PUSH2 0x997 JUMP JUMPDEST PUSH2 0x1DE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x96 SWAP3 SWAP2 SWAP1 PUSH2 0xAE1 JUMP JUMPDEST PUSH2 0x13F PUSH2 0x13A CALLDATASIZE PUSH1 0x4 PUSH2 0xB25 JUMP JUMPDEST PUSH2 0x216 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x96 SWAP3 SWAP2 SWAP1 PUSH2 0xBE7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x99718B5 PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x17D JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x198 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1A6 PUSH2 0x7DF JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1D7 PUSH1 0x0 PUSH1 0x1 DUP1 PUSH2 0x2F2 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1FD PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xA1128101 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x235 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 PUSH1 0x44 ADD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x189ACDBD PUSH1 0xE3 SHL OR SWAP1 MSTORE SWAP1 POP PUSH2 0x2C8 DUP2 PUSH2 0x2B9 PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH2 0x477 JUMP JUMPDEST SWAP3 POP PUSH2 0x2D4 PUSH1 0x1 PUSH2 0x4AF JUMP JUMPDEST DUP3 MSTORE PUSH2 0x2E3 PUSH1 0x0 PUSH1 0x1 DUP2 PUSH2 0x2F2 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP SWAP1 SWAP4 SWAP1 SWAP3 POP SWAP1 POP JUMP JUMPDEST PUSH1 0x60 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH2 0x327 JUMPI PUSH1 0x40 MLOAD PUSH4 0x3A4013CD PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x331 DUP5 DUP5 PUSH2 0xC1F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x352 JUMPI PUSH2 0x352 PUSH2 0xB0F JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x3AB JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD DUP3 SWAP1 MSTORE SWAP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 DUP3 ADD MSTORE DUP3 MSTORE PUSH1 0x0 NOT SWAP1 SWAP3 ADD SWAP2 ADD DUP2 PUSH2 0x370 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP DUP4 JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT ISZERO PUSH2 0x46F JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 DUP5 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x3E7 JUMPI PUSH2 0x3E7 PUSH2 0x8D2 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x60 DUP3 ADD MSTORE PUSH32 0xA280EEC51AB8E1BC4B6B0C1B7F1BDE785761B787A49DB404E3E9338ED9B016EF PUSH1 0x80 SWAP1 SWAP2 ADD MSTORE DUP3 PUSH2 0x438 DUP8 DUP5 PUSH2 0xC1F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MLOAD DUP2 LT PUSH2 0x451 JUMPI PUSH2 0x451 PUSH2 0xC3F JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP DUP1 DUP1 PUSH2 0x467 SWAP1 PUSH2 0xC55 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x3B0 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x48B DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x568 JUMP JUMPDEST DUP3 MLOAD SWAP1 SWAP2 POP ISZERO PUSH2 0x198 JUMPI PUSH2 0x4A8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP4 PUSH2 0x60E JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x4D3 JUMPI PUSH2 0x4D3 PUSH2 0xB0F JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x4FC JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT ISZERO PUSH2 0x562 JUMPI DUP1 DUP3 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MLOAD DUP2 LT PUSH2 0x538 JUMPI PUSH2 0x538 PUSH2 0xC3F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE DUP1 PUSH2 0x55A DUP2 PUSH2 0xC55 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x502 JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH23 0x3D602D80600A3D3981F3363D3D373D3D3D363D73000000 DUP3 PUSH1 0x60 SHL PUSH1 0xE8 SHR OR PUSH1 0x0 MSTORE PUSH15 0x5AF43D82803E903D91602B57FD5BF3 DUP3 PUSH1 0x78 SHL OR PUSH1 0x20 MSTORE PUSH1 0x37 PUSH1 0x9 PUSH1 0x0 CREATE SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x609 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313136373A20637265617465206661696C656400000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1D7 DUP4 DUP4 PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x416464726573733A206C6F772D6C6576656C2063616C6C206661696C65640000 DUP2 MSTORE POP PUSH1 0x60 DUP3 SELFBALANCE LT ISZERO PUSH2 0x6C5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A20696E73756666696369656E742062616C616E636520666F PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x722063616C6C0000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x600 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP8 PUSH1 0x40 MLOAD PUSH2 0x6E1 SWAP2 SWAP1 PUSH2 0xC7B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x71E JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x723 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x734 DUP8 DUP4 DUP4 DUP8 PUSH2 0x741 JUMP JUMPDEST SWAP3 POP POP POP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x7B0 JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0x7A9 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0x7A9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x600 JUMP JUMPDEST POP DUP2 PUSH2 0x739 JUMP JUMPDEST PUSH2 0x739 DUP4 DUP4 DUP2 MLOAD ISZERO PUSH2 0x7C5 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x600 SWAP2 SWAP1 PUSH2 0xC97 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x80F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x1D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0x852 JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x830 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x609 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x562 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x897 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8A0 DUP4 PUSH2 0x85B JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x8BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8C8 DUP6 DUP3 DUP7 ADD PUSH2 0x872 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP2 MLOAD PUSH1 0x3 DUP2 LT PUSH2 0x90A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP4 MSTORE POP PUSH1 0x20 DUP2 DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP1 DUP4 ADD MLOAD DUP3 AND SWAP1 DUP5 ADD MSTORE PUSH1 0x60 DUP1 DUP4 ADD MLOAD SWAP1 SWAP2 AND SWAP1 DUP4 ADD MSTORE PUSH1 0x80 SWAP1 DUP2 ADD MLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x98B JUMPI PUSH2 0x97D DUP4 DUP6 MLOAD PUSH2 0x8E8 JUMP JUMPDEST SWAP4 DUP6 ADD SWAP4 SWAP3 POP PUSH1 0x1 ADD PUSH2 0x96A JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x9AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9B5 DUP5 PUSH2 0x85B JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH2 0x9CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x9E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9F4 DUP7 DUP3 DUP8 ADD PUSH2 0x872 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xA19 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xA01 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0xA3A DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x9FE JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x40 DUP1 DUP5 MSTORE DUP2 MLOAD SWAP1 DUP5 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x20 SWAP2 SWAP1 DUP3 ADD SWAP1 PUSH1 0x60 DUP7 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xA93 JUMPI DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0xA6E JUMP JUMPDEST POP POP DUP5 DUP4 ADD MLOAD DUP7 DUP3 SUB DUP8 DUP6 ADD MSTORE DUP1 MLOAD DUP1 DUP4 MSTORE SWAP1 DUP5 ADD SWAP3 POP PUSH1 0x0 SWAP2 DUP5 ADD SWAP1 JUMPDEST DUP1 DUP4 LT ISZERO PUSH2 0xAD6 JUMPI PUSH2 0xAC4 DUP3 DUP6 MLOAD PUSH2 0x8E8 JUMP JUMPDEST SWAP2 POP DUP5 DUP5 ADD SWAP4 POP PUSH1 0x1 DUP4 ADD SWAP3 POP PUSH2 0xAB1 JUMP JUMPDEST POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 PUSH2 0xAF4 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0xA22 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0xB06 DUP2 DUP6 PUSH2 0xA4E JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xB38 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB41 DUP4 PUSH2 0x85B JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xB5E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xB72 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0xB84 JUMPI PUSH2 0xB84 PUSH2 0xB0F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0xBAC JUMPI PUSH2 0xBAC PUSH2 0xB0F JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0xBC5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0x739 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0xA4E JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND DUP3 DUP3 AND SUB SWAP1 DUP1 DUP3 GT ISZERO PUSH2 0x4A8 JUMPI PUSH2 0x4A8 PUSH2 0xC09 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND DUP2 DUP2 SUB PUSH2 0xC71 JUMPI PUSH2 0xC71 PUSH2 0xC09 JUMP JUMPDEST PUSH1 0x1 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0xC8D DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x9FE JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x1D7 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0xA22 JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"749:1127:49:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2112:293:82;;;;;;:::i;:::-;;:::i;:::-;;;470:14:92;;463:22;445:41;;433:2;418:18;2112:293:82;;;;;;;;631:98:90;;;:::i;:::-;;;;;;;:::i;2444:94:82:-;;;-1:-1:-1;;;;;2517:14:82;1167:55:92;1149:74;;1137:2;1122:18;2444:94:82;1003:226:92;1575:299:49;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1639:265:82:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;998:538:49:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;2112:293:82:-;2198:4;-1:-1:-1;;;;;;2233:46:82;;-1:-1:-1;;;2233:46:82;;:112;;-1:-1:-1;;;;;;;2295:50:82;;-1:-1:-1;;;2295:50:82;2233:112;:165;;;-1:-1:-1;;;;;;;;;;937:40:38;;;2361:37:82;2214:184;2112:293;-1:-1:-1;;2112:293:82:o;631:98:90:-;679:15;;:::i;:::-;-1:-1:-1;706:16:90;;;;;;;;714:1;706:16;;717:1;706:16;;;;-1:-1:-1;706:16:90;;;;;;;;631:98::o;1575:299:49:-;1697:56;1805:62;1821:1;881;;1805:15;:62::i;:::-;1791:76;1575:299;-1:-1:-1;;;1575:299:49:o;1639:265:82:-;1780:12;1794:24;-1:-1:-1;;;;;;;;;;;;;;;;;;;1794:24:82;1875:22;;-1:-1:-1;;;1875:22:82;;;;;;;;;;;998:538:49;1095:14;1111:42;-1:-1:-1;;;;;;;;;;;;;;;;;;;1111:42:49;1189:66;;-1:-1:-1;;;;;1167:55:92;;1189:66:49;;;1149:74:92;1165:21:49;;1122:18:92;;1189:66:49;;;-1:-1:-1;;1189:66:49;;;;;;;;;;;;;;;;-1:-1:-1;;;1189:66:49;;;;-1:-1:-1;1274:45:49;1189:66;1274:16;2517:14:82;;2444:94;1274:16:49;-1:-1:-1;;;;;1274:35:49;;;:45::i;:::-;1265:54;-1:-1:-1;1357:23:49;881:1;1357:11;:23::i;:::-;1329:51;;1422:107;1329:25;881:1;1329:25;1422:15;:107::i;:::-;1390:29;;;:139;-1:-1:-1;998:538:49;;1390:17;;-1:-1:-1;998:538:49;-1:-1:-1;998:538:49:o;580:666:52:-;699:56;780:8;-1:-1:-1;;;;;767:21:52;:10;-1:-1:-1;;;;;767:21:52;;763:53;;;797:19;;-1:-1:-1;;;797:19:52;;;;;;;;;;;763:53;879:21;890:10;879:8;:21;:::i;:::-;-1:-1:-1;;;;;837:64:52;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;837:64:52;;-1:-1:-1;;837:64:52;;;;;;;;;;;-1:-1:-1;823:78:52;-1:-1:-1;925:10:52;908:336;941:8;-1:-1:-1;;;;;937:12:52;:1;-1:-1:-1;;;;;937:12:52;;908:336;;;996:241;;;;;;;;1057:2;996:241;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;996:241:52;;;;;;;;;;;;-1:-1:-1;996:241:52;;;;1198:28;996:241;;;;;966:11;978:14;982:10;1088:1;978:14;:::i;:::-;-1:-1:-1;;;;;966:27:52;;;;;;;;;:::i;:::-;;;;;;:271;;;;951:3;;;;;:::i;:::-;;;;908:336;;;;580:666;;;;;:::o;2237:292:85:-;2349:20;2396:14;:6;-1:-1:-1;;;;;2396:12:85;;:14::i;:::-;2424:20;;2381:29;;-1:-1:-1;2424:24:85;2420:103;;2464:48;-1:-1:-1;;;;;2464:25:85;;2497:13;2464:25;:48::i;:::-;;2237:292;;;;:::o;1529:191:52:-;1577:24;1633:3;-1:-1:-1;;;;;1619:18:52;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1619:18:52;;1609:28;;1649:9;1644:74;1668:3;-1:-1:-1;;;;;1664:7:52;:1;-1:-1:-1;;;;;1664:7:52;;1644:74;;;1709:1;1688:7;1696:1;-1:-1:-1;;;;;1688:10:52;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1688:23:52;;;:10;;;;;;;;;;;:23;1673:3;;;;:::i;:::-;;;;1644:74;;;;1529:191;;;:::o;973:759:17:-;1030:16;1362:48;1344:14;1338:4;1334:25;1328:4;1324:36;1321:90;1315:4;1308:104;1569:32;1552:14;1546:4;1542:25;1539:63;1533:4;1526:77;1644:4;1638;1635:1;1628:21;1616:33;-1:-1:-1;;;;;;1676:22:17;;1668:57;;;;-1:-1:-1;;;1668:57:17;;9082:2:92;1668:57:17;;;9064:21:92;9121:2;9101:18;;;9094:30;9160:24;9140:18;;;9133:52;9202:18;;1668:57:17;;;;;;;;;973:759;;;:::o;3701:185:33:-;3776:12;3807:72;3829:6;3837:4;3843:1;3807:72;;;;;;;;;;;;;;;;;5330:12;5387:5;5362:21;:30;;5354:81;;;;-1:-1:-1;;;5354:81:33;;9433:2:92;5354:81:33;;;9415:21:92;9472:2;9452:18;;;9445:30;9511:34;9491:18;;;9484:62;9582:8;9562:18;;;9555:36;9608:19;;5354:81:33;9231:402:92;5354:81:33;5446:12;5460:23;5487:6;-1:-1:-1;;;;;5487:11:33;5506:5;5513:4;5487:31;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5445:73;;;;5535:69;5562:6;5570:7;5579:10;5591:12;5535:26;:69::i;:::-;5528:76;;;;5165:446;;;;;;;:::o;7671:628::-;7851:12;7879:7;7875:418;;;7906:10;:17;7927:1;7906:22;7902:286;;-1:-1:-1;;;;;1702:19:33;;;8113:60;;;;-1:-1:-1;;;8113:60:33;;10132:2:92;8113:60:33;;;10114:21:92;10171:2;10151:18;;;10144:30;10210:31;10190:18;;;10183:59;10259:18;;8113:60:33;9930:353:92;8113:60:33;-1:-1:-1;8208:10:33;8201:17;;7875:418;8249:33;8257:10;8269:12;8980:17;;:21;8976:379;;9208:10;9202:17;9264:15;9251:10;9247:2;9243:19;9236:44;8976:379;9331:12;9324:20;;-1:-1:-1;;;9324:20:33;;;;;;;;:::i;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:286:92:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:92;;209:43;;199:71;;266:1;263;256:12;497:501;673:2;658:18;;662:9;753:6;631:4;787:205;801:4;798:1;795:11;787:205;;;864:13;;879:4;860:24;848:37;;908:4;932:12;;;;967:15;;;;821:1;814:9;787:205;;;791:3;;;497:501;;;;:::o;1234:196::-;1302:20;;-1:-1:-1;;;;;1351:54:92;;1341:65;;1331:93;;1420:1;1417;1410:12;1435:160;1500:5;1545:2;1536:6;1531:3;1527:16;1523:25;1520:45;;;1561:1;1558;1551:12;1600:441;1701:6;1709;1762:2;1750:9;1741:7;1737:23;1733:32;1730:52;;;1778:1;1775;1768:12;1730:52;1801:29;1820:9;1801:29;:::i;:::-;1791:39;;1881:2;1870:9;1866:18;1853:32;1908:18;1900:6;1897:30;1894:50;;;1940:1;1937;1930:12;1894:50;1963:72;2027:7;2018:6;2007:9;2003:22;1963:72;:::i;:::-;1953:82;;;1600:441;;;;;:::o;2046:127::-;2107:10;2102:3;2098:20;2095:1;2088:31;2138:4;2135:1;2128:15;2162:4;2159:1;2152:15;2178:696;2253:10;2294:6;2288:13;2327:1;2323:2;2320:9;2310:140;;2372:10;2367:3;2363:20;2360:1;2353:31;2407:4;2404:1;2397:15;2435:4;2432:1;2425:15;2310:140;2459:15;;-1:-1:-1;2521:4:92;2509:17;;;2503:24;-1:-1:-1;;;;;2620:21:92;;;2604:14;;;2597:45;;;;2696:4;2684:17;;;2678:24;2674:33;;2658:14;;;2651:57;2762:4;2750:17;;;2744:24;2740:33;;;2724:14;;;2717:57;2824:4;2812:17;;;2806:24;2790:14;;;2783:48;2863:4;2854:14;;2178:696::o;2879:730::-;3130:2;3182:21;;;3252:13;;3155:18;;;3274:22;;;3101:4;;3130:2;3353:15;;;;3327:2;3312:18;;;3101:4;3396:187;3410:6;3407:1;3404:13;3396:187;;;3466:69;3531:3;3522:6;3516:13;3466:69;:::i;:::-;3558:15;;;;3459:76;-1:-1:-1;3432:1:92;3425:9;3396:187;;;-1:-1:-1;3600:3:92;;2879:730;-1:-1:-1;;;;;;2879:730:92:o;3614:601::-;3723:6;3731;3739;3792:2;3780:9;3771:7;3767:23;3763:32;3760:52;;;3808:1;3805;3798:12;3760:52;3831:29;3850:9;3831:29;:::i;:::-;3821:39;;3910:2;3899:9;3895:18;3882:32;3954:6;3947:5;3943:18;3936:5;3933:29;3923:57;;3976:1;3973;3966:12;3923:57;3999:5;-1:-1:-1;4055:2:92;4040:18;;4027:32;4082:18;4071:30;;4068:50;;;4114:1;4111;4104:12;4068:50;4137:72;4201:7;4192:6;4181:9;4177:22;4137:72;:::i;:::-;4127:82;;;3614:601;;;;;:::o;4220:250::-;4305:1;4315:113;4329:6;4326:1;4323:13;4315:113;;;4405:11;;;4399:18;4386:11;;;4379:39;4351:2;4344:10;4315:113;;;-1:-1:-1;;4462:1:92;4444:16;;4437:27;4220:250::o;4475:270::-;4516:3;4554:5;4548:12;4581:6;4576:3;4569:19;4597:76;4666:6;4659:4;4654:3;4650:14;4643:4;4636:5;4632:16;4597:76;:::i;:::-;4727:2;4706:15;-1:-1:-1;;4702:29:92;4693:39;;;;4734:4;4689:50;;4475:270;-1:-1:-1;;4475:270:92:o;4750:1162::-;4883:12;;4849:4;4904:17;;;4970:19;;4840:14;;;4998:20;;;4810:3;;5067:4;;5094:21;;;;5045:2;5036:12;;;4810:3;5143:224;5157:6;5154:1;5151:13;5143:224;;;5224:13;;-1:-1:-1;;;;;5220:62:92;5206:77;;5342:15;;;;5305:14;;;;5179:1;5172:9;5143:224;;;-1:-1:-1;;5404:14:92;;;5398:21;5449:15;;;5435:12;;;5428:37;5517:21;;5547:23;;;5627;;;;-1:-1:-1;5670:1:92;;5588:14;;;5680:205;5696:8;5691:3;5688:17;5680:205;;;5760:73;5827:5;5816:8;5810:15;5760:73;:::i;:::-;5751:82;;5872:2;5862:8;5858:17;5846:29;;5724:1;5719:3;5715:11;5708:18;;5680:205;;;-1:-1:-1;5901:5:92;4750:1162;-1:-1:-1;;;;;;4750:1162:92:o;5917:450::-;6164:2;6153:9;6146:21;6127:4;6190:44;6230:2;6219:9;6215:18;6207:6;6190:44;:::i;:::-;6282:9;6274:6;6270:22;6265:2;6254:9;6250:18;6243:50;6310:51;6354:6;6346;6310:51;:::i;:::-;6302:59;5917:450;-1:-1:-1;;;;;5917:450:92:o;6372:127::-;6433:10;6428:3;6424:20;6421:1;6414:31;6464:4;6461:1;6454:15;6488:4;6485:1;6478:15;6504:995;6581:6;6589;6642:2;6630:9;6621:7;6617:23;6613:32;6610:52;;;6658:1;6655;6648:12;6610:52;6681:29;6700:9;6681:29;:::i;:::-;6671:39;;6761:2;6750:9;6746:18;6733:32;6784:18;6825:2;6817:6;6814:14;6811:34;;;6841:1;6838;6831:12;6811:34;6879:6;6868:9;6864:22;6854:32;;6924:7;6917:4;6913:2;6909:13;6905:27;6895:55;;6946:1;6943;6936:12;6895:55;6982:2;6969:16;7004:2;7000;6997:10;6994:36;;;7010:18;;:::i;:::-;7085:2;7079:9;7053:2;7139:13;;-1:-1:-1;;7135:22:92;;;7159:2;7131:31;7127:40;7115:53;;;7183:18;;;7203:22;;;7180:46;7177:72;;;7229:18;;:::i;:::-;7269:10;7265:2;7258:22;7304:2;7296:6;7289:18;7344:7;7339:2;7334;7330;7326:11;7322:20;7319:33;7316:53;;;7365:1;7362;7355:12;7316:53;7421:2;7416;7412;7408:11;7403:2;7395:6;7391:15;7378:46;7466:1;7461:2;7456;7448:6;7444:15;7440:24;7433:35;7487:6;7477:16;;;;;;;6504:995;;;;;:::o;7504:410::-;-1:-1:-1;;;;;7737:6:92;7733:55;7722:9;7715:74;7825:2;7820;7809:9;7805:18;7798:30;7696:4;7845:63;7904:2;7893:9;7889:18;7881:6;7845:63;:::i;8164:127::-;8225:10;8220:3;8216:20;8213:1;8206:31;8256:4;8253:1;8246:15;8280:4;8277:1;8270:15;8296:208;-1:-1:-1;;;;;8440:10:92;;;8428;;;8424:27;;8463:12;;;8460:38;;;8478:18;;:::i;8509:127::-;8570:10;8565:3;8561:20;8558:1;8551:31;8601:4;8598:1;8591:15;8625:4;8622:1;8615:15;8641:234;8680:3;-1:-1:-1;;;;;8785:2:92;8778:5;8774:14;8812:2;8803:7;8800:15;8797:41;;8818:18;;:::i;:::-;8867:1;8854:15;;8641:234;-1:-1:-1;;;8641:234:92:o;9638:287::-;9767:3;9805:6;9799:13;9821:66;9880:6;9875:3;9868:4;9860:6;9856:17;9821:66;:::i;:::-;9903:16;;;;;9638:287;-1:-1:-1;;9638:287:92:o;10288:219::-;10437:2;10426:9;10419:21;10400:4;10457:44;10497:2;10486:9;10482:18;10474:6;10457:44;:::i"},"gasEstimates":{"creation":{"codeDepositCost":"651000","executionCost":"infinite","totalCost":"infinite"},"external":{"implementation()":"infinite","prepareInstallation(address,bytes)":"infinite","prepareUninstallation(address,(address,address[],bytes))":"infinite","prepareUpdate(address,uint16,(address,address[],bytes))":"624","protocolVersion()":"infinite","supportsInterface(bytes4)":"482"}},"methodIdentifiers":{"implementation()":"5c60da1b","prepareInstallation(address,bytes)":"f10832f1","prepareUninstallation(address,(address,address[],bytes))":"9cb0a124","prepareUpdate(address,uint16,(address,address[],bytes))":"a8a9c29e","protocolVersion()":"2ae9c600","supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ConflictingValues\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NonUpgradeablePlugin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_dao\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"prepareInstallation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"plugin\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address[]\",\"name\":\"helpers\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"enum PermissionLib.Operation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"condition\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PermissionLib.MultiTargetPermission[]\",\"name\":\"permissions\",\"type\":\"tuple[]\"}],\"internalType\":\"struct IPluginSetup.PreparedSetupData\",\"name\":\"preparedSetupData\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_dao\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"plugin\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"currentHelpers\",\"type\":\"address[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IPluginSetup.SetupPayload\",\"name\":\"_payload\",\"type\":\"tuple\"}],\"name\":\"prepareUninstallation\",\"outputs\":[{\"components\":[{\"internalType\":\"enum PermissionLib.Operation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"condition\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PermissionLib.MultiTargetPermission[]\",\"name\":\"permissions\",\"type\":\"tuple[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_dao\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"_fromBuild\",\"type\":\"uint16\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"plugin\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"currentHelpers\",\"type\":\"address[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IPluginSetup.SetupPayload\",\"name\":\"_payload\",\"type\":\"tuple\"}],\"name\":\"prepareUpdate\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address[]\",\"name\":\"helpers\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"enum PermissionLib.Operation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"condition\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PermissionLib.MultiTargetPermission[]\",\"name\":\"permissions\",\"type\":\"tuple[]\"}],\"internalType\":\"struct IPluginSetup.PreparedSetupData\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"protocolVersion\",\"outputs\":[{\"internalType\":\"uint8[3]\",\"name\":\"\",\"type\":\"uint8[3]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"DO NOT USE IN PRODUCTION!\",\"kind\":\"dev\",\"methods\":{\"implementation()\":{\"details\":\"The implementation can be instantiated via the `new` keyword, cloned via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)), or proxied via the UUPS proxy pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\",\"returns\":{\"_0\":\"The address of the plugin implementation contract.\"}},\"prepareInstallation(address,bytes)\":{\"params\":{\"_dao\":\"The address of the installing DAO.\",\"_data\":\"The bytes-encoded data containing the input parameters for the installation as specified in the plugin's build metadata JSON file.\"},\"returns\":{\"plugin\":\"The address of the `Plugin` contract being prepared for installation.\",\"preparedSetupData\":\"The deployed plugin's relevant data which consists of helpers and permissions.\"}},\"prepareUninstallation(address,(address,address[],bytes))\":{\"params\":{\"_dao\":\"The address of the uninstalling DAO.\",\"_payload\":\"The relevant data necessary for the `prepareUninstallation`. See above.\"},\"returns\":{\"permissions\":\"The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the uninstalling DAO.\"}},\"prepareUpdate(address,uint16,(address,address[],bytes))\":{\"details\":\"Since the underlying plugin is non-upgradeable, this non-virtual function must always revert.\",\"params\":{\"_dao\":\"The address of the updating DAO.\",\"_fromBuild\":\"The build number of the plugin to update from.\",\"_payload\":\"The relevant data necessary for the `prepareUpdate`. See above.\"},\"returns\":{\"_0\":\"The initialization data to be passed to upgradeable contracts when the update is applied in the `PluginSetupProcessor`.\",\"_1\":\"The deployed plugin's relevant data which consists of helpers and permissions.\"}},\"protocolVersion()\":{\"details\":\"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\",\"returns\":{\"_0\":\"Returns the semantic Aragon OSx protocol version number.\"}},\"supportsInterface(bytes4)\":{\"params\":{\"_interfaceId\":\"The ID of the interface.\"},\"returns\":{\"_0\":\"Returns `true` if the interface is supported.\"}}},\"version\":1},\"userdoc\":{\"errors\":{\"NonUpgradeablePlugin()\":[{\"notice\":\"Thrown when attempting to prepare an update on a non-upgradeable plugin.\"}]},\"kind\":\"user\",\"methods\":{\"implementation()\":{\"notice\":\"Returns the plugin implementation address.\"},\"prepareInstallation(address,bytes)\":{\"notice\":\"Prepares the installation of a plugin.\"},\"prepareUninstallation(address,(address,address[],bytes))\":{\"notice\":\"Prepares the uninstallation of a plugin.\"},\"prepareUpdate(address,uint16,(address,address[],bytes))\":{\"notice\":\"Prepares the update of a plugin.\"},\"protocolVersion()\":{\"notice\":\"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Checks if this or the parent contract supports an interface by its ID.\"}},\"notice\":\"A mock plugin setup of a cloneable plugin to be deployed via the minimal proxy pattern. v1.1 (Release 1, Build 1)\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/mocks/plugin/PluginCloneableSetupMock.sol\":\"PluginCloneableSetupMockBuild1\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n function __Context_init() internal onlyInitializing {\\n }\\n\\n function __Context_init_unchained() internal onlyInitializing {\\n }\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n function _contextSuffixLength() internal view virtual returns (uint256) {\\n return 0;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x75097e35253e7fb282ee4d7f27a80eaacfa759923185bf17302a89cbc059c5ef\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165Upgradeable.sol\\\";\\nimport {Initializable} from \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165Upgradeable is Initializable, IERC165Upgradeable {\\n function __ERC165_init() internal onlyInitializing {\\n }\\n\\n function __ERC165_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165Upgradeable).interfaceId;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0xd90d7723512df65ae417adaf0801042940f0dabd60039ceeaffe34aa5b238da1\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165Upgradeable {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/IERC1967.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (interfaces/IERC1967.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\\n *\\n * _Available since v4.8.3._\\n */\\ninterface IERC1967 {\\n /**\\n * @dev Emitted when the implementation is upgraded.\\n */\\n event Upgraded(address indexed implementation);\\n\\n /**\\n * @dev Emitted when the admin account has changed.\\n */\\n event AdminChanged(address previousAdmin, address newAdmin);\\n\\n /**\\n * @dev Emitted when the beacon is changed.\\n */\\n event BeaconUpgraded(address indexed beacon);\\n}\\n\",\"keccak256\":\"0x3cbef5ebc24b415252e2f8c0c9254555d30d9f085603b4b80d9b5ed20ab87e90\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822Proxiable {\\n /**\\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n * address.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy.\\n */\\n function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/Clones.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/Clones.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev https://eips.ethereum.org/EIPS/eip-1167[EIP 1167] is a standard for\\n * deploying minimal proxy contracts, also known as \\\"clones\\\".\\n *\\n * > To simply and cheaply clone contract functionality in an immutable way, this standard specifies\\n * > a minimal bytecode implementation that delegates all calls to a known, fixed address.\\n *\\n * The library includes functions to deploy a proxy using either `create` (traditional deployment) or `create2`\\n * (salted deterministic deployment). It also includes functions to predict the addresses of clones deployed using the\\n * deterministic method.\\n *\\n * _Available since v3.4._\\n */\\nlibrary Clones {\\n /**\\n * @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`.\\n *\\n * This function uses the create opcode, which should never revert.\\n */\\n function clone(address implementation) internal returns (address instance) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n // Cleans the upper 96 bits of the `implementation` word, then packs the first 3 bytes\\n // of the `implementation` address with the bytecode before the address.\\n mstore(0x00, or(shr(0xe8, shl(0x60, implementation)), 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000))\\n // Packs the remaining 17 bytes of `implementation` with the bytecode after the address.\\n mstore(0x20, or(shl(0x78, implementation), 0x5af43d82803e903d91602b57fd5bf3))\\n instance := create(0, 0x09, 0x37)\\n }\\n require(instance != address(0), \\\"ERC1167: create failed\\\");\\n }\\n\\n /**\\n * @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`.\\n *\\n * This function uses the create2 opcode and a `salt` to deterministically deploy\\n * the clone. Using the same `implementation` and `salt` multiple time will revert, since\\n * the clones cannot be deployed twice at the same address.\\n */\\n function cloneDeterministic(address implementation, bytes32 salt) internal returns (address instance) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n // Cleans the upper 96 bits of the `implementation` word, then packs the first 3 bytes\\n // of the `implementation` address with the bytecode before the address.\\n mstore(0x00, or(shr(0xe8, shl(0x60, implementation)), 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000))\\n // Packs the remaining 17 bytes of `implementation` with the bytecode after the address.\\n mstore(0x20, or(shl(0x78, implementation), 0x5af43d82803e903d91602b57fd5bf3))\\n instance := create2(0, 0x09, 0x37, salt)\\n }\\n require(instance != address(0), \\\"ERC1167: create2 failed\\\");\\n }\\n\\n /**\\n * @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}.\\n */\\n function predictDeterministicAddress(\\n address implementation,\\n bytes32 salt,\\n address deployer\\n ) internal pure returns (address predicted) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n let ptr := mload(0x40)\\n mstore(add(ptr, 0x38), deployer)\\n mstore(add(ptr, 0x24), 0x5af43d82803e903d91602b57fd5bf3ff)\\n mstore(add(ptr, 0x14), implementation)\\n mstore(ptr, 0x3d602d80600a3d3981f3363d3d373d3d3d363d73)\\n mstore(add(ptr, 0x58), salt)\\n mstore(add(ptr, 0x78), keccak256(add(ptr, 0x0c), 0x37))\\n predicted := keccak256(add(ptr, 0x43), 0x55)\\n }\\n }\\n\\n /**\\n * @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}.\\n */\\n function predictDeterministicAddress(\\n address implementation,\\n bytes32 salt\\n ) internal view returns (address predicted) {\\n return predictDeterministicAddress(implementation, salt, address(this));\\n }\\n}\\n\",\"keccak256\":\"0x01f055f5c26ba25d7f83e9aa9ba877fbea4d0bf22227de046ea67494bc932999\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (proxy/ERC1967/ERC1967Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../Proxy.sol\\\";\\nimport \\\"./ERC1967Upgrade.sol\\\";\\n\\n/**\\n * @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an\\n * implementation address that can be changed. This address is stored in storage in the location specified by\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the\\n * implementation behind the proxy.\\n */\\ncontract ERC1967Proxy is Proxy, ERC1967Upgrade {\\n /**\\n * @dev Initializes the upgradeable proxy with an initial implementation specified by `_logic`.\\n *\\n * If `_data` is nonempty, it's used as data in a delegate call to `_logic`. This will typically be an encoded\\n * function call, and allows initializing the storage of the proxy like a Solidity constructor.\\n */\\n constructor(address _logic, bytes memory _data) payable {\\n _upgradeToAndCall(_logic, _data, false);\\n }\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _implementation() internal view virtual override returns (address impl) {\\n return ERC1967Upgrade._getImplementation();\\n }\\n}\\n\",\"keccak256\":\"0xa2b22da3032e50b55f95ec1d13336102d675f341167aa76db571ef7f8bb7975d\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../beacon/IBeacon.sol\\\";\\nimport \\\"../../interfaces/IERC1967.sol\\\";\\nimport \\\"../../interfaces/draft-IERC1822.sol\\\";\\nimport \\\"../../utils/Address.sol\\\";\\nimport \\\"../../utils/StorageSlot.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n */\\nabstract contract ERC1967Upgrade is IERC1967 {\\n // This is the keccak-256 hash of \\\"eip1967.proxy.rollback\\\" subtracted by 1\\n bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n /**\\n * @dev Storage slot with the address of the current implementation.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _getImplementation() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 implementation slot.\\n */\\n function _setImplementation(address newImplementation) private {\\n require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n }\\n\\n /**\\n * @dev Perform implementation upgrade\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeTo(address newImplementation) internal {\\n _setImplementation(newImplementation);\\n emit Upgraded(newImplementation);\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCall(address newImplementation, bytes memory data, bool forceCall) internal {\\n _upgradeTo(newImplementation);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(newImplementation, data);\\n }\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCallUUPS(address newImplementation, bytes memory data, bool forceCall) internal {\\n // Upgrades from old implementations will perform a rollback test. This test requires the new\\n // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n // this special case will break upgrade paths from old UUPS implementation to new ones.\\n if (StorageSlot.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n _setImplementation(newImplementation);\\n } else {\\n try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n require(slot == _IMPLEMENTATION_SLOT, \\\"ERC1967Upgrade: unsupported proxiableUUID\\\");\\n } catch {\\n revert(\\\"ERC1967Upgrade: new implementation is not UUPS\\\");\\n }\\n _upgradeToAndCall(newImplementation, data, forceCall);\\n }\\n }\\n\\n /**\\n * @dev Storage slot with the admin of the contract.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _getAdmin() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_ADMIN_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 admin slot.\\n */\\n function _setAdmin(address newAdmin) private {\\n require(newAdmin != address(0), \\\"ERC1967: new admin is the zero address\\\");\\n StorageSlot.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n */\\n function _changeAdmin(address newAdmin) internal {\\n emit AdminChanged(_getAdmin(), newAdmin);\\n _setAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\\n */\\n bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n /**\\n * @dev Returns the current beacon.\\n */\\n function _getBeacon() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_BEACON_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new beacon in the EIP1967 beacon slot.\\n */\\n function _setBeacon(address newBeacon) private {\\n require(Address.isContract(newBeacon), \\\"ERC1967: new beacon is not a contract\\\");\\n require(\\n Address.isContract(IBeacon(newBeacon).implementation()),\\n \\\"ERC1967: beacon implementation is not a contract\\\"\\n );\\n StorageSlot.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n }\\n\\n /**\\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n *\\n * Emits a {BeaconUpgraded} event.\\n */\\n function _upgradeBeaconToAndCall(address newBeacon, bytes memory data, bool forceCall) internal {\\n _setBeacon(newBeacon);\\n emit BeaconUpgraded(newBeacon);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x3b21ae06bf5957f73fa16754b0669c77b7abd8ba6c072d35c3281d446fdb86c2\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (proxy/Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\\n * be specified by overriding the virtual {_implementation} function.\\n *\\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\\n * different contract through the {_delegate} function.\\n *\\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\\n */\\nabstract contract Proxy {\\n /**\\n * @dev Delegates the current call to `implementation`.\\n *\\n * This function does not return to its internal call site, it will return directly to the external caller.\\n */\\n function _delegate(address implementation) internal virtual {\\n assembly {\\n // Copy msg.data. We take full control of memory in this inline assembly\\n // block because it will not return to Solidity code. We overwrite the\\n // Solidity scratch pad at memory position 0.\\n calldatacopy(0, 0, calldatasize())\\n\\n // Call the implementation.\\n // out and outsize are 0 because we don't know the size yet.\\n let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)\\n\\n // Copy the returned data.\\n returndatacopy(0, 0, returndatasize())\\n\\n switch result\\n // delegatecall returns 0 on error.\\n case 0 {\\n revert(0, returndatasize())\\n }\\n default {\\n return(0, returndatasize())\\n }\\n }\\n }\\n\\n /**\\n * @dev This is a virtual function that should be overridden so it returns the address to which the fallback function\\n * and {_fallback} should delegate.\\n */\\n function _implementation() internal view virtual returns (address);\\n\\n /**\\n * @dev Delegates the current call to the address returned by `_implementation()`.\\n *\\n * This function does not return to its internal call site, it will return directly to the external caller.\\n */\\n function _fallback() internal virtual {\\n _beforeFallback();\\n _delegate(_implementation());\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\\n * function in the contract matches the call data.\\n */\\n fallback() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data\\n * is empty.\\n */\\n receive() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`\\n * call, or as part of the Solidity `fallback` or `receive` functions.\\n *\\n * If overridden should call `super._beforeFallback()`.\\n */\\n function _beforeFallback() internal virtual {}\\n}\\n\",\"keccak256\":\"0xc130fe33f1b2132158531a87734153293f6d07bc263ff4ac90e85da9c82c0e27\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeacon {\\n /**\\n * @dev Must return an address that can be used as a delegate call target.\\n *\\n * {BeaconProxy} will check that this address is a contract.\\n */\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/StorageSlot.sol)\\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```solidity\\n * contract ERC1967 {\\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n * function _getImplementation() internal view returns (address) {\\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n * }\\n *\\n * function _setImplementation(address newImplementation) internal {\\n * require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n * }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._\\n * _Available since v4.9 for `string`, `bytes`._\\n */\\nlibrary StorageSlot {\\n struct AddressSlot {\\n address value;\\n }\\n\\n struct BooleanSlot {\\n bool value;\\n }\\n\\n struct Bytes32Slot {\\n bytes32 value;\\n }\\n\\n struct Uint256Slot {\\n uint256 value;\\n }\\n\\n struct StringSlot {\\n string value;\\n }\\n\\n struct BytesSlot {\\n bytes value;\\n }\\n\\n /**\\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n */\\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n */\\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n */\\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n */\\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` with member `value` located at `slot`.\\n */\\n function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\\n */\\n function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` with member `value` located at `slot`.\\n */\\n function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\\n */\\n function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n}\\n\",\"keccak256\":\"0xf09e68aa0dc6722a25bc46490e8d48ed864466d17313b8a0b254c36b54e49899\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165 is IERC165 {\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165).interfaceId;\\n }\\n}\\n\",\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"src/dao/IDAO.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IDAO\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for DAOs within the Aragon App DAO framework.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IDAO {\\n /// @notice The action struct to be consumed by the DAO's `execute` function resulting in an external call.\\n /// @param to The address to call.\\n /// @param value The native token value to be sent with the call.\\n /// @param data The bytes-encoded function selector and calldata for the call.\\n struct Action {\\n address to;\\n uint256 value;\\n bytes data;\\n }\\n\\n /// @notice Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\\n /// @param _where The address of the contract.\\n /// @param _who The address of a EOA or contract to give the permissions.\\n /// @param _permissionId The permission identifier.\\n /// @param _data The optional data passed to the `PermissionCondition` registered.\\n /// @return Returns true if the address has permission, false if not.\\n function hasPermission(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes memory _data\\n ) external view returns (bool);\\n\\n /// @notice Updates the DAO metadata (e.g., an IPFS hash).\\n /// @param _metadata The IPFS hash of the new metadata object.\\n function setMetadata(bytes calldata _metadata) external;\\n\\n /// @notice Emitted when the DAO metadata is updated.\\n /// @param metadata The IPFS hash of the new metadata object.\\n event MetadataSet(bytes metadata);\\n\\n /// @notice Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted.\\n /// @param _callId The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce.\\n /// @param _actions The array of actions.\\n /// @param _allowFailureMap A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @return The array of results obtained from the executed actions in `bytes`.\\n /// @return The resulting failure map containing the actions have actually failed.\\n function execute(\\n bytes32 _callId,\\n Action[] memory _actions,\\n uint256 _allowFailureMap\\n ) external returns (bytes[] memory, uint256);\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param actor The address of the caller.\\n /// @param callId The ID of the call.\\n /// @param actions The array of actions executed.\\n /// @param allowFailureMap The allow failure map encoding which actions are allowed to fail.\\n /// @param failureMap The failure map encoding which actions have failed.\\n /// @param execResults The array with the results of the executed actions.\\n /// @dev The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce.\\n event Executed(\\n address indexed actor,\\n bytes32 callId,\\n Action[] actions,\\n uint256 allowFailureMap,\\n uint256 failureMap,\\n bytes[] execResults\\n );\\n\\n /// @notice Emitted when a standard callback is registered.\\n /// @param interfaceId The ID of the interface.\\n /// @param callbackSelector The selector of the callback function.\\n /// @param magicNumber The magic number to be registered for the callback function selector.\\n event StandardCallbackRegistered(\\n bytes4 interfaceId,\\n bytes4 callbackSelector,\\n bytes4 magicNumber\\n );\\n\\n /// @notice Deposits (native) tokens to the DAO contract with a reference string.\\n /// @param _token The address of the token or address(0) in case of the native token.\\n /// @param _amount The amount of tokens to deposit.\\n /// @param _reference The reference describing the deposit reason.\\n function deposit(address _token, uint256 _amount, string calldata _reference) external payable;\\n\\n /// @notice Emitted when a token deposit has been made to the DAO.\\n /// @param sender The address of the sender.\\n /// @param token The address of the deposited token.\\n /// @param amount The amount of tokens deposited.\\n /// @param _reference The reference describing the deposit reason.\\n event Deposited(\\n address indexed sender,\\n address indexed token,\\n uint256 amount,\\n string _reference\\n );\\n\\n /// @notice Emitted when a native token deposit has been made to the DAO.\\n /// @dev This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).\\n /// @param sender The address of the sender.\\n /// @param amount The amount of native tokens deposited.\\n event NativeTokenDeposited(address sender, uint256 amount);\\n\\n /// @notice Setter for the trusted forwarder verifying the meta transaction.\\n /// @param _trustedForwarder The trusted forwarder address.\\n function setTrustedForwarder(address _trustedForwarder) external;\\n\\n /// @notice Getter for the trusted forwarder verifying the meta transaction.\\n /// @return The trusted forwarder address.\\n function getTrustedForwarder() external view returns (address);\\n\\n /// @notice Emitted when a new TrustedForwarder is set on the DAO.\\n /// @param forwarder the new forwarder address.\\n event TrustedForwarderSet(address forwarder);\\n\\n /// @notice Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\\n /// @param _hash The hash of the data to be signed.\\n /// @param _signature The signature byte array associated with `_hash`.\\n /// @return Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not.\\n function isValidSignature(bytes32 _hash, bytes memory _signature) external returns (bytes4);\\n\\n /// @notice Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\\n /// @param _interfaceId The ID of the interface.\\n /// @param _callbackSelector The selector of the callback function.\\n /// @param _magicNumber The magic number to be registered for the function signature.\\n function registerStandardCallback(\\n bytes4 _interfaceId,\\n bytes4 _callbackSelector,\\n bytes4 _magicNumber\\n ) external;\\n\\n /// @notice Removed function being left here to not corrupt the IDAO interface ID. Any call will revert.\\n /// @dev Introduced in v1.0.0. Removed in v1.4.0.\\n function setSignatureValidator(address) external;\\n}\\n\",\"keccak256\":\"0xb7f615523c26de042edce98731c658f44a1edb2464387ac1b642c4c69f57128e\",\"license\":\"AGPL-3.0-or-later\"},\"src/mocks/plugin/PluginCloneableMock.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\n/* solhint-disable one-contract-per-file */\\npragma solidity ^0.8.8;\\n\\nimport {PluginCloneable} from \\\"../../plugin/PluginCloneable.sol\\\";\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice A mock cloneable plugin to be deployed via the minimal proxy pattern.\\n/// v1.1 (Release 1, Build 1)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginCloneableMockBuild1 is PluginCloneable {\\n uint256 public state1;\\n\\n function initialize(IDAO _dao) external initializer {\\n __PluginCloneable_init(_dao);\\n state1 = 1;\\n }\\n}\\n\\n/// @notice A mock cloneable plugin to be deployed via the minimal proxy pattern.\\n/// v1.1 (Release 1, Build 2)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginCloneableMockBuild2 is PluginCloneable {\\n uint256 public state1;\\n uint256 public state2;\\n\\n function initialize(IDAO _dao) external initializer {\\n __PluginCloneable_init(_dao);\\n state1 = 1;\\n state2 = 2;\\n }\\n}\\n\\n/// @notice A mock cloneable plugin missing an initializer function.\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginCloneableMockBad is PluginCloneable {\\n uint256 public state1;\\n\\n function notAnInitializer(IDAO _dao) external {\\n __PluginCloneable_init(_dao);\\n state1 = 1;\\n }\\n}\\n\",\"keccak256\":\"0x1bb271f7b553040fad7907e97b860aa833aec9aefe7477e00ba7bdfd80d84e98\",\"license\":\"AGPL-3.0-or-later\"},\"src/mocks/plugin/PluginCloneableSetupMock.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\n/* solhint-disable one-contract-per-file */\\npragma solidity ^0.8.8;\\n\\nimport {PermissionLib} from \\\"../../permission/PermissionLib.sol\\\";\\nimport {IPluginSetup} from \\\"../../plugin/setup/IPluginSetup.sol\\\";\\nimport {PluginSetup} from \\\"../../plugin/setup/PluginSetup.sol\\\";\\nimport {ProxyLib} from \\\"../../utils/deployment/ProxyLib.sol\\\";\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\nimport {mockPermissions, mockHelpers} from \\\"./PluginSetupMockData.sol\\\";\\nimport {PluginCloneableMockBuild1, PluginCloneableMockBuild2} from \\\"./PluginCloneableMock.sol\\\";\\n\\n/// @notice A mock plugin setup of a cloneable plugin to be deployed via the minimal proxy pattern.\\n/// v1.1 (Release 1, Build 1)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginCloneableSetupMockBuild1 is PluginSetup {\\n using ProxyLib for address;\\n\\n uint16 internal constant THIS_BUILD = 1;\\n\\n constructor() PluginSetup(address(new PluginCloneableMockBuild1())) {}\\n\\n /// @inheritdoc IPluginSetup\\n function prepareInstallation(\\n address _dao,\\n bytes memory\\n ) external returns (address plugin, PreparedSetupData memory preparedSetupData) {\\n bytes memory initData = abi.encodeCall(PluginCloneableMockBuild1.initialize, (IDAO(_dao)));\\n plugin = implementation().deployMinimalProxy(initData);\\n preparedSetupData.helpers = mockHelpers(THIS_BUILD);\\n preparedSetupData.permissions = mockPermissions(\\n 0,\\n THIS_BUILD,\\n PermissionLib.Operation.Grant\\n );\\n }\\n\\n /// @inheritdoc IPluginSetup\\n function prepareUninstallation(\\n address _dao,\\n SetupPayload calldata _payload\\n ) external pure returns (PermissionLib.MultiTargetPermission[] memory permissions) {\\n (_dao, _payload);\\n permissions = mockPermissions(0, THIS_BUILD, PermissionLib.Operation.Revoke);\\n }\\n}\\n\\n/// @notice A mock plugin setup of a cloneable plugin to be deployed via the minimal proxy pattern.\\n/// v1.2 (Release 1, Build 2)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginCloneableSetupMockBuild2 is PluginSetup {\\n using ProxyLib for address;\\n\\n uint16 internal constant THIS_BUILD = 2;\\n\\n constructor() PluginSetup(address(new PluginCloneableMockBuild2())) {}\\n\\n /// @inheritdoc IPluginSetup\\n function prepareInstallation(\\n address _dao,\\n bytes memory\\n ) external returns (address plugin, PreparedSetupData memory preparedSetupData) {\\n bytes memory initData = abi.encodeCall(PluginCloneableMockBuild2.initialize, (IDAO(_dao)));\\n plugin = implementation().deployMinimalProxy(initData);\\n preparedSetupData.helpers = mockHelpers(THIS_BUILD);\\n preparedSetupData.permissions = mockPermissions(\\n 0,\\n THIS_BUILD,\\n PermissionLib.Operation.Grant\\n );\\n }\\n\\n /// @inheritdoc IPluginSetup\\n function prepareUninstallation(\\n address _dao,\\n SetupPayload calldata _payload\\n ) external pure returns (PermissionLib.MultiTargetPermission[] memory permissions) {\\n (_dao, _payload);\\n permissions = mockPermissions(0, THIS_BUILD, PermissionLib.Operation.Revoke);\\n }\\n}\\n\",\"keccak256\":\"0xfac0ce75e9d665bc9e2900c5cfa3f2667e0ea73573c4f46147453c6582eac1de\",\"license\":\"AGPL-3.0-or-later\"},\"src/mocks/plugin/PluginSetupMockData.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {PermissionLib} from \\\"../../permission/PermissionLib.sol\\\";\\n\\naddress constant NO_CONDITION = address(0);\\n\\nerror ConflictingValues();\\n\\n/// @notice Creates a mock `MultiTargetPermission` array by converting a range of `uint160` values into `address` values.\\n/// @param rangeStart The start of the range.\\n/// @param rangeEnd The end of the range (that is not included).\\n/// @param op The permission operation type.\\n/// @return permissions The mock array of permissions.\\n/// @dev DO NOT USE IN PRODUCTION!\\nfunction mockPermissions(\\n uint160 rangeStart,\\n uint160 rangeEnd,\\n PermissionLib.Operation op\\n) pure returns (PermissionLib.MultiTargetPermission[] memory permissions) {\\n if (rangeStart > rangeEnd) revert ConflictingValues();\\n\\n permissions = new PermissionLib.MultiTargetPermission[](rangeEnd - rangeStart);\\n\\n for (uint160 i = rangeStart; i < rangeEnd; i++) {\\n permissions[i - rangeStart] = PermissionLib.MultiTargetPermission({\\n operation: op,\\n where: address(i),\\n who: address(i),\\n condition: PermissionLib.NO_CONDITION,\\n permissionId: keccak256(\\\"MOCK_PERMISSION\\\")\\n });\\n }\\n}\\n\\n/// @notice Creates a mock array of helper addresses of specified length by converting `uint160` values starting from 0 into `address` values.\\n/// @param len The length of the helper array.\\n/// @return helpers The mock array of helper addresses.\\n/// @dev DO NOT USE IN PRODUCTION!\\nfunction mockHelpers(uint160 len) pure returns (address[] memory helpers) {\\n helpers = new address[](len);\\n\\n for (uint160 i = 0; i < len; i++) {\\n helpers[i] = address(i);\\n }\\n}\\n\",\"keccak256\":\"0x529d1b7ea4c348fe18edf81a044792ca8aa1f6ad9a7d2edfd35e38bf8372abf9\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/PermissionLib.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title PermissionLib\\n/// @author Aragon X - 2021-2023\\n/// @notice A library containing objects for permission processing.\\n/// @custom:security-contact sirt@aragon.org\\nlibrary PermissionLib {\\n /// @notice A constant expressing that no condition is applied to a permission.\\n address public constant NO_CONDITION = address(0);\\n\\n /// @notice The types of permission operations available in the `PermissionManager`.\\n /// @param Grant The grant operation setting a permission without a condition.\\n /// @param Revoke The revoke operation removing a permission (that was granted with or without a condition).\\n /// @param GrantWithCondition The grant operation setting a permission with a condition.\\n enum Operation {\\n Grant,\\n Revoke,\\n GrantWithCondition\\n }\\n\\n /// @notice A struct containing the information for a permission to be applied on a single target contract without a condition.\\n /// @param operation The permission operation type.\\n /// @param who The address (EOA or contract) receiving the permission.\\n /// @param permissionId The permission identifier.\\n struct SingleTargetPermission {\\n Operation operation;\\n address who;\\n bytes32 permissionId;\\n }\\n\\n /// @notice A struct containing the information for a permission to be applied on multiple target contracts, optionally, with a condition.\\n /// @param operation The permission operation type.\\n /// @param where The address of the target contract for which `who` receives permission.\\n /// @param who The address (EOA or contract) receiving the permission.\\n /// @param condition The `PermissionCondition` that will be asked for authorization on calls connected to the specified permission identifier.\\n /// @param permissionId The permission identifier.\\n struct MultiTargetPermission {\\n Operation operation;\\n address where;\\n address who;\\n address condition;\\n bytes32 permissionId;\\n }\\n}\\n\",\"keccak256\":\"0x470faf3c4891ebc6420ef6cc09f6098917568ccc79268c90954d1478199b6097\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/DaoAuthorizableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ContextUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\\\";\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\nimport {_auth} from \\\"./auth.sol\\\";\\n\\n/// @title DaoAuthorizableUpgradeable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract contract providing a meta-transaction compatible modifier for upgradeable or cloneable contracts to authorize function calls through an associated DAO.\\n/// @dev Make sure to call `__DaoAuthorizableUpgradeable_init` during initialization of the inheriting contract.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract DaoAuthorizableUpgradeable is ContextUpgradeable {\\n /// @notice The associated DAO managing the permissions of inheriting contracts.\\n IDAO private dao_;\\n\\n /// @notice Initializes the contract by setting the associated DAO.\\n /// @param _dao The associated DAO address.\\n // solhint-disable-next-line func-name-mixedcase\\n function __DaoAuthorizableUpgradeable_init(IDAO _dao) internal onlyInitializing {\\n dao_ = _dao;\\n }\\n\\n /// @notice Returns the DAO contract.\\n /// @return The DAO contract.\\n function dao() public view returns (IDAO) {\\n return dao_;\\n }\\n\\n /// @notice A modifier to make functions on inheriting contracts authorized. Permissions to call the function are checked through the associated DAO's permission manager.\\n /// @param _permissionId The permission identifier required to call the method this modifier is applied to.\\n modifier auth(bytes32 _permissionId) {\\n _auth(dao_, address(this), _msgSender(), _permissionId, _msgData());\\n _;\\n }\\n\\n /// @notice This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain (see [OpenZeppelin's guide about storage gaps](https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps)).\\n uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0x7fac6b01b037ba1cb9d6a22d3f43b0785037dcf496ffb672434d9bf7227d2585\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/auth.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice Thrown if a call is unauthorized in the associated DAO.\\n/// @param dao The associated DAO.\\n/// @param where The context in which the authorization reverted.\\n/// @param who The address (EOA or contract) missing the permission.\\n/// @param permissionId The permission identifier.\\nerror DaoUnauthorized(address dao, address where, address who, bytes32 permissionId);\\n\\n/// @notice A free function checking if a caller is granted permissions on a target contract via a permission identifier that redirects the approval to a `PermissionCondition` if this was specified in the setup.\\n/// @param _where The address of the target contract for which `who` receives permission.\\n/// @param _who The address (EOA or contract) owning the permission.\\n/// @param _permissionId The permission identifier.\\n/// @param _data The optional data passed to the `PermissionCondition` registered.\\n/// @custom:security-contact sirt@aragon.org\\nfunction _auth(\\n IDAO _dao,\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes calldata _data\\n) view {\\n if (!_dao.hasPermission(_where, _who, _permissionId, _data))\\n revert DaoUnauthorized({\\n dao: address(_dao),\\n where: _where,\\n who: _who,\\n permissionId: _permissionId\\n });\\n}\\n\",\"keccak256\":\"0x878764b4f87fe0651fb3798fb9cb87c952f8c6caf6ae79c7f09de84df6c00298\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/IPlugin.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IPlugin\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the traits of a plugin.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IPlugin {\\n enum PluginType {\\n UUPS,\\n Cloneable,\\n Constructable\\n }\\n\\n /// @notice Returns the plugin's type\\n function pluginType() external view returns (PluginType);\\n}\\n\",\"keccak256\":\"0xc57cd0d10b6380ab7f54c713a509e88fd8f4ad9288313a0e8e12b8887817ddfe\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/PluginCloneable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ERC165Upgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\\\";\\n\\nimport {IProtocolVersion} from \\\"../utils/versioning/IProtocolVersion.sol\\\";\\nimport {ProtocolVersion} from \\\"../utils/versioning/ProtocolVersion.sol\\\";\\nimport {DaoAuthorizableUpgradeable} from \\\"../permission/auth/DaoAuthorizableUpgradeable.sol\\\";\\nimport {IDAO} from \\\"../dao/IDAO.sol\\\";\\nimport {IPlugin} from \\\"./IPlugin.sol\\\";\\n\\n/// @title PluginCloneable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract, non-upgradeable contract to inherit from when creating a plugin being deployed via the minimal clones pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)).\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract PluginCloneable is\\n IPlugin,\\n ERC165Upgradeable,\\n DaoAuthorizableUpgradeable,\\n ProtocolVersion\\n{\\n /// @notice Disables the initializers on the implementation contract to prevent it from being left uninitialized.\\n /// @custom:oz-upgrades-unsafe-allow constructor\\n constructor() {\\n _disableInitializers();\\n }\\n\\n /// @notice Initializes the plugin by storing the associated DAO.\\n /// @param _dao The DAO contract.\\n // solhint-disable-next-line func-name-mixedcase\\n function __PluginCloneable_init(IDAO _dao) internal virtual onlyInitializing {\\n __DaoAuthorizableUpgradeable_init(_dao);\\n }\\n\\n /// @inheritdoc IPlugin\\n function pluginType() public pure override returns (PluginType) {\\n return PluginType.Cloneable;\\n }\\n\\n /// @notice Checks if this or the parent contract supports an interface by its ID.\\n /// @param _interfaceId The ID of the interface.\\n /// @return Returns `true` if the interface is supported.\\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\\n return\\n _interfaceId == type(IPlugin).interfaceId ||\\n _interfaceId == type(IProtocolVersion).interfaceId ||\\n super.supportsInterface(_interfaceId);\\n }\\n}\\n\",\"keccak256\":\"0x68e260b9b370d68252f0c707461d5e4c2188a7bfed42ed9192657b36330a1f7a\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/setup/IPluginSetup.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {PermissionLib} from \\\"../../permission/PermissionLib.sol\\\";\\n\\n// solhint-disable-next-line no-unused-import\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @title IPluginSetup\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for a plugin setup contract to be consumed by the `PluginSetupProcessor` for plugin installations, updates, and uninstallations.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IPluginSetup {\\n /// @notice The data associated with a prepared setup.\\n /// @param helpers The address array of helpers (contracts or EOAs) associated with this plugin version after the installation or update.\\n /// @param permissions The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the installing or updating DAO.\\n struct PreparedSetupData {\\n address[] helpers;\\n PermissionLib.MultiTargetPermission[] permissions;\\n }\\n\\n /// @notice The payload for plugin updates and uninstallations containing the existing contracts as well as optional data to be consumed by the plugin setup.\\n /// @param plugin The address of the `Plugin`.\\n /// @param currentHelpers The address array of all current helpers (contracts or EOAs) associated with the plugin to update from.\\n /// @param data The bytes-encoded data containing the input parameters for the preparation of update/uninstall as specified in the corresponding ABI on the version's metadata.\\n struct SetupPayload {\\n address plugin;\\n address[] currentHelpers;\\n bytes data;\\n }\\n\\n /// @notice Prepares the installation of a plugin.\\n /// @param _dao The address of the installing DAO.\\n /// @param _data The bytes-encoded data containing the input parameters for the installation as specified in the plugin's build metadata JSON file.\\n /// @return plugin The address of the `Plugin` contract being prepared for installation.\\n /// @return preparedSetupData The deployed plugin's relevant data which consists of helpers and permissions.\\n function prepareInstallation(\\n address _dao,\\n bytes calldata _data\\n ) external returns (address plugin, PreparedSetupData memory preparedSetupData);\\n\\n /// @notice Prepares the update of a plugin.\\n /// @param _dao The address of the updating DAO.\\n /// @param _fromBuild The build number of the plugin to update from.\\n /// @param _payload The relevant data necessary for the `prepareUpdate`. See above.\\n /// @return initData The initialization data to be passed to upgradeable contracts when the update is applied in the `PluginSetupProcessor`.\\n /// @return preparedSetupData The deployed plugin's relevant data which consists of helpers and permissions.\\n function prepareUpdate(\\n address _dao,\\n uint16 _fromBuild,\\n SetupPayload calldata _payload\\n ) external returns (bytes memory initData, PreparedSetupData memory preparedSetupData);\\n\\n /// @notice Prepares the uninstallation of a plugin.\\n /// @param _dao The address of the uninstalling DAO.\\n /// @param _payload The relevant data necessary for the `prepareUninstallation`. See above.\\n /// @return permissions The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the uninstalling DAO.\\n function prepareUninstallation(\\n address _dao,\\n SetupPayload calldata _payload\\n ) external returns (PermissionLib.MultiTargetPermission[] memory permissions);\\n\\n /// @notice Returns the plugin implementation address.\\n /// @return The address of the plugin implementation contract.\\n /// @dev The implementation can be instantiated via the `new` keyword, cloned via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)), or proxied via the UUPS proxy pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0x21c99995208039ac6ace219b6f273243811dc2aa66399e8e499e43ec30b82fa9\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/setup/PluginSetup.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ERC165} from \\\"@openzeppelin/contracts/utils/introspection/ERC165.sol\\\";\\n\\nimport {IProtocolVersion} from \\\"../../utils/versioning/IProtocolVersion.sol\\\";\\nimport {ProtocolVersion} from \\\"../../utils/versioning/ProtocolVersion.sol\\\";\\nimport {IPluginSetup} from \\\"./IPluginSetup.sol\\\";\\n\\n/// @title PluginSetup\\n/// @author Aragon X - 2022-2024\\n/// @notice An abstract contract to inherit from to implement the plugin setup for non-upgradeable plugins, i.e,\\n/// - `Plugin` being deployed via the `new` keyword\\n/// - `PluginCloneable` being deployed via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)).\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract PluginSetup is ERC165, IPluginSetup, ProtocolVersion {\\n /// @notice The address of the plugin implementation contract for initial block explorer verification and, in the case of `PluginClonable` implementations, to create [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167) clones from.\\n address internal immutable IMPLEMENTATION;\\n\\n /// @notice Thrown when attempting to prepare an update on a non-upgradeable plugin.\\n error NonUpgradeablePlugin();\\n\\n /// @notice The contract constructor, that setting the plugin implementation contract.\\n /// @param _implementation The address of the plugin implementation contract.\\n constructor(address _implementation) {\\n IMPLEMENTATION = _implementation;\\n }\\n\\n /// @inheritdoc IPluginSetup\\n /// @dev Since the underlying plugin is non-upgradeable, this non-virtual function must always revert.\\n function prepareUpdate(\\n address _dao,\\n uint16 _fromBuild,\\n SetupPayload calldata _payload\\n ) external pure returns (bytes memory, PreparedSetupData memory) {\\n (_dao, _fromBuild, _payload);\\n revert NonUpgradeablePlugin();\\n }\\n\\n /// @notice Checks if this or the parent contract supports an interface by its ID.\\n /// @param _interfaceId The ID of the interface.\\n /// @return Returns `true` if the interface is supported.\\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\\n return\\n _interfaceId == type(IPluginSetup).interfaceId ||\\n _interfaceId == type(IProtocolVersion).interfaceId ||\\n super.supportsInterface(_interfaceId);\\n }\\n\\n /// @inheritdoc IPluginSetup\\n function implementation() public view returns (address) {\\n return IMPLEMENTATION;\\n }\\n}\\n\",\"keccak256\":\"0x93044f8080758c5cf8d621e3614b8150f55572a1770880106a49dfa53784a9d2\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/deployment/ProxyLib.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ERC1967Proxy} from \\\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol\\\";\\nimport {Clones} from \\\"@openzeppelin/contracts/proxy/Clones.sol\\\";\\nimport {Address} from \\\"@openzeppelin/contracts/utils/Address.sol\\\";\\n\\n/// @title ProxyLib\\n/// @author Aragon X - 2024\\n/// @notice A library containing methods for the deployment of proxies via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)) and minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)).\\n/// @custom:security-contact sirt@aragon.org\\nlibrary ProxyLib {\\n using Address for address;\\n using Clones for address;\\n\\n /// @notice Creates an [ERC-1967](https://eips.ethereum.org/EIPS/eip-1967) UUPS proxy contract pointing to a logic contract and allows to immediately initialize it.\\n /// @param _logic The logic contract the proxy is pointing to.\\n /// @param _initCalldata The initialization data for this contract.\\n /// @return uupsProxy The address of the UUPS proxy contract created.\\n /// @dev If `_initCalldata` is non-empty, it is used in a delegate call to the `_logic` contract. This will typically be an encoded function call initializing the storage of the proxy (see [OpenZeppelin ERC1967Proxy-constructor](https://docs.openzeppelin.com/contracts/4.x/api/proxy#ERC1967Proxy-constructor-address-bytes-)).\\n function deployUUPSProxy(\\n address _logic,\\n bytes memory _initCalldata\\n ) internal returns (address uupsProxy) {\\n uupsProxy = address(new ERC1967Proxy({_logic: _logic, _data: _initCalldata}));\\n }\\n\\n /// @notice Creates an [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167) minimal proxy contract, also known as clones, pointing to a logic contract and allows to immediately initialize it.\\n /// @param _logic The logic contract the proxy is pointing to.\\n /// @param _initCalldata The initialization data for this contract.\\n /// @return minimalProxy The address of the minimal proxy contract created.\\n /// @dev If `_initCalldata` is non-empty, it is used in a call to the clone contract. This will typically be an encoded function call initializing the storage of the contract.\\n function deployMinimalProxy(\\n address _logic,\\n bytes memory _initCalldata\\n ) internal returns (address minimalProxy) {\\n minimalProxy = _logic.clone();\\n if (_initCalldata.length > 0) {\\n minimalProxy.functionCall({data: _initCalldata});\\n }\\n }\\n}\\n\",\"keccak256\":\"0xef0d1790dfa026381c021daa2ec7267357497f58cd4a2fa5c64e72e0dea95acc\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/IProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IProtocolVersion\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the semantic Aragon OSx protocol version number.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IProtocolVersion {\\n /// @notice Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\\n /// @return _version Returns the semantic Aragon OSx protocol version number.\\n /// @dev This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\\n function protocolVersion() external view returns (uint8[3] memory _version);\\n}\\n\",\"keccak256\":\"0x00a4da654d21dc1bdadbdc8bd54bb86c378c56f85e461ccc31303628ea621361\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/ProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IProtocolVersion} from \\\"./IProtocolVersion.sol\\\";\\n\\n/// @title ProtocolVersion\\n/// @author Aragon X - 2023\\n/// @notice An abstract, stateless, non-upgradeable contract providing the current Aragon OSx protocol version number.\\n/// @dev Do not add any new variables to this contract that would shift down storage in the inheritance chain.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract ProtocolVersion is IProtocolVersion {\\n // IMPORTANT: Do not add any storage variable, see the above notice.\\n\\n /// @inheritdoc IProtocolVersion\\n function protocolVersion() public pure returns (uint8[3] memory) {\\n return [1, 4, 0];\\n }\\n}\\n\",\"keccak256\":\"0x3975c937be935f687c6b6b8f379071232681e98cf04b175d72781b819ea52bdb\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"errors":{"NonUpgradeablePlugin()":[{"notice":"Thrown when attempting to prepare an update on a non-upgradeable plugin."}]},"kind":"user","methods":{"implementation()":{"notice":"Returns the plugin implementation address."},"prepareInstallation(address,bytes)":{"notice":"Prepares the installation of a plugin."},"prepareUninstallation(address,(address,address[],bytes))":{"notice":"Prepares the uninstallation of a plugin."},"prepareUpdate(address,uint16,(address,address[],bytes))":{"notice":"Prepares the update of a plugin."},"protocolVersion()":{"notice":"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with."},"supportsInterface(bytes4)":{"notice":"Checks if this or the parent contract supports an interface by its ID."}},"notice":"A mock plugin setup of a cloneable plugin to be deployed via the minimal proxy pattern. v1.1 (Release 1, Build 1)","version":1}},"PluginCloneableSetupMockBuild2":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"ConflictingValues","type":"error"},{"inputs":[],"name":"NonUpgradeablePlugin","type":"error"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_dao","type":"address"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"prepareInstallation","outputs":[{"internalType":"address","name":"plugin","type":"address"},{"components":[{"internalType":"address[]","name":"helpers","type":"address[]"},{"components":[{"internalType":"enum PermissionLib.Operation","name":"operation","type":"uint8"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"condition","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"internalType":"struct PermissionLib.MultiTargetPermission[]","name":"permissions","type":"tuple[]"}],"internalType":"struct IPluginSetup.PreparedSetupData","name":"preparedSetupData","type":"tuple"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_dao","type":"address"},{"components":[{"internalType":"address","name":"plugin","type":"address"},{"internalType":"address[]","name":"currentHelpers","type":"address[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct IPluginSetup.SetupPayload","name":"_payload","type":"tuple"}],"name":"prepareUninstallation","outputs":[{"components":[{"internalType":"enum PermissionLib.Operation","name":"operation","type":"uint8"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"condition","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"internalType":"struct PermissionLib.MultiTargetPermission[]","name":"permissions","type":"tuple[]"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_dao","type":"address"},{"internalType":"uint16","name":"_fromBuild","type":"uint16"},{"components":[{"internalType":"address","name":"plugin","type":"address"},{"internalType":"address[]","name":"currentHelpers","type":"address[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct IPluginSetup.SetupPayload","name":"_payload","type":"tuple"}],"name":"prepareUpdate","outputs":[{"internalType":"bytes","name":"","type":"bytes"},{"components":[{"internalType":"address[]","name":"helpers","type":"address[]"},{"components":[{"internalType":"enum PermissionLib.Operation","name":"operation","type":"uint8"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"condition","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"internalType":"struct PermissionLib.MultiTargetPermission[]","name":"permissions","type":"tuple[]"}],"internalType":"struct IPluginSetup.PreparedSetupData","name":"","type":"tuple"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"protocolVersion","outputs":[{"internalType":"uint8[3]","name":"","type":"uint8[3]"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"DO NOT USE IN PRODUCTION!","kind":"dev","methods":{"implementation()":{"details":"The implementation can be instantiated via the `new` keyword, cloned via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)), or proxied via the UUPS proxy pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).","returns":{"_0":"The address of the plugin implementation contract."}},"prepareInstallation(address,bytes)":{"params":{"_dao":"The address of the installing DAO.","_data":"The bytes-encoded data containing the input parameters for the installation as specified in the plugin's build metadata JSON file."},"returns":{"plugin":"The address of the `Plugin` contract being prepared for installation.","preparedSetupData":"The deployed plugin's relevant data which consists of helpers and permissions."}},"prepareUninstallation(address,(address,address[],bytes))":{"params":{"_dao":"The address of the uninstalling DAO.","_payload":"The relevant data necessary for the `prepareUninstallation`. See above."},"returns":{"permissions":"The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the uninstalling DAO."}},"prepareUpdate(address,uint16,(address,address[],bytes))":{"details":"Since the underlying plugin is non-upgradeable, this non-virtual function must always revert.","params":{"_dao":"The address of the updating DAO.","_fromBuild":"The build number of the plugin to update from.","_payload":"The relevant data necessary for the `prepareUpdate`. See above."},"returns":{"_0":"The initialization data to be passed to upgradeable contracts when the update is applied in the `PluginSetupProcessor`.","_1":"The deployed plugin's relevant data which consists of helpers and permissions."}},"protocolVersion()":{"details":"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.","returns":{"_0":"Returns the semantic Aragon OSx protocol version number."}},"supportsInterface(bytes4)":{"params":{"_interfaceId":"The ID of the interface."},"returns":{"_0":"Returns `true` if the interface is supported."}}},"version":1},"evm":{"bytecode":{"functionDebugData":{"@_11414":{"entryPoint":null,"id":11414,"parameterSlots":0,"returnSlots":0},"@_14307":{"entryPoint":null,"id":14307,"parameterSlots":1,"returnSlots":0}},"generatedSources":[],"linkReferences":{},"object":"60a060405234801561001057600080fd5b5060405161001d9061004b565b604051809103906000f080158015610039573d6000803e3d6000fd5b506001600160a01b0316608052610058565b6105da80610d3183390190565b608051610cb86100796000396000818160c101526102980152610cb86000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c80639cb0a124116100505780639cb0a124146100eb578063a8a9c29e1461010b578063f10832f11461012c57600080fd5b806301ffc9a7146100775780632ae9c6001461009f5780635c60da1b146100b4575b600080fd5b61008a6100853660046107fe565b61014d565b60405190151581526020015b60405180910390f35b6100a761019e565b6040516100969190610828565b6040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152602001610096565b6100fe6100f9366004610885565b6101c8565b604051610096919061094f565b61011e610119366004610998565b6101df565b604051610096929190610ae2565b61013f61013a366004610b26565b610217565b604051610096929190610be8565b60006001600160e01b0319821663099718b560e41b148061017d57506001600160e01b03198216621574e360e91b145b8061019857506301ffc9a760e01b6001600160e01b03198316145b92915050565b6101a66107e0565b5060408051606081018252600181526004602082015260009181019190915290565b60606101d86000600260016102f3565b9392505050565b60606101fe604051806040016040528060608152602001606081525090565b60405163a112810160e01b815260040160405180910390fd5b6000610236604051806040016040528060608152602001606081525090565b6040516001600160a01b038516602482015260009060440160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663189acdbd60e31b17905290506102c9816102ba7f000000000000000000000000000000000000000000000000000000000000000090565b6001600160a01b031690610478565b92506102d560026104b0565b82526102e460006002816102f3565b60208301525090939092509050565b6060826001600160a01b0316846001600160a01b0316111561032857604051633a4013cd60e21b815260040160405180910390fd5b6103328484610c20565b6001600160a01b031667ffffffffffffffff81111561035357610353610b10565b6040519080825280602002602001820160405280156103ac57816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282526000199092019101816103715790505b509050835b836001600160a01b0316816001600160a01b03161015610470576040518060a001604052808460028111156103e8576103e86108d3565b81526001600160a01b038316602082018190526040820152600060608201527fa280eec51ab8e1bc4b6b0c1b7f1bde785761b787a49db404e3e9338ed9b016ef608090910152826104398784610c20565b6001600160a01b03168151811061045257610452610c40565b6020026020010181905250808061046890610c56565b9150506103b1565b509392505050565b600061048c836001600160a01b0316610569565b825190915015610198576104a96001600160a01b0382168361060f565b5092915050565b6060816001600160a01b031667ffffffffffffffff8111156104d4576104d4610b10565b6040519080825280602002602001820160405280156104fd578160200160208202803683370190505b50905060005b826001600160a01b0316816001600160a01b03161015610563578082826001600160a01b03168151811061053957610539610c40565b6001600160a01b03909216602092830291909101909101528061055b81610c56565b915050610503565b50919050565b6000763d602d80600a3d3981f3363d3d373d3d3d363d730000008260601b60e81c176000526e5af43d82803e903d91602b57fd5bf38260781b17602052603760096000f090506001600160a01b03811661060a5760405162461bcd60e51b815260206004820152601660248201527f455243313136373a20637265617465206661696c65640000000000000000000060448201526064015b60405180910390fd5b919050565b60606101d8838360006040518060400160405280601e81526020017f416464726573733a206c6f772d6c6576656c2063616c6c206661696c656400008152506060824710156106c65760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610601565b600080866001600160a01b031685876040516106e29190610c7c565b60006040518083038185875af1925050503d806000811461071f576040519150601f19603f3d011682016040523d82523d6000602084013e610724565b606091505b509150915061073587838387610742565b925050505b949350505050565b606083156107b15782516000036107aa576001600160a01b0385163b6107aa5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610601565b508161073a565b61073a83838151156107c65781518083602001fd5b8060405162461bcd60e51b81526004016106019190610c98565b60405180606001604052806003906020820280368337509192915050565b60006020828403121561081057600080fd5b81356001600160e01b0319811681146101d857600080fd5b60608101818360005b600381101561085357815160ff16835260209283019290910190600101610831565b50505092915050565b80356001600160a01b038116811461060a57600080fd5b60006060828403121561056357600080fd5b6000806040838503121561089857600080fd5b6108a18361085c565b9150602083013567ffffffffffffffff8111156108bd57600080fd5b6108c985828601610873565b9150509250929050565b634e487b7160e01b600052602160045260246000fd5b600081516003811061090b57634e487b7160e01b600052602160045260246000fd5b8352506020818101516001600160a01b0390811691840191909152604080830151821690840152606080830151909116908301526080908101519082015260a00190565b6020808252825182820181905260009190848201906040850190845b8181101561098c5761097e8385516108e9565b93850193925060010161096b565b50909695505050505050565b6000806000606084860312156109ad57600080fd5b6109b68461085c565b9250602084013561ffff811681146109cd57600080fd5b9150604084013567ffffffffffffffff8111156109e957600080fd5b6109f586828701610873565b9150509250925092565b60005b83811015610a1a578181015183820152602001610a02565b50506000910152565b60008151808452610a3b8160208601602086016109ff565b601f01601f19169290920160200192915050565b805160408084528151908401819052600091602091908201906060860190845b81811015610a945783516001600160a01b031683529284019291840191600101610a6f565b50508483015186820387850152805180835290840192506000918401905b80831015610ad757610ac58285516108e9565b91508484019350600183019250610ab2565b509695505050505050565b604081526000610af56040830185610a23565b8281036020840152610b078185610a4f565b95945050505050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215610b3957600080fd5b610b428361085c565b9150602083013567ffffffffffffffff80821115610b5f57600080fd5b818501915085601f830112610b7357600080fd5b813581811115610b8557610b85610b10565b604051601f8201601f19908116603f01168101908382118183101715610bad57610bad610b10565b81604052828152886020848701011115610bc657600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6001600160a01b038316815260406020820152600061073a6040830184610a4f565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b038281168282160390808211156104a9576104a9610c0a565b634e487b7160e01b600052603260045260246000fd5b60006001600160a01b03808316818103610c7257610c72610c0a565b6001019392505050565b60008251610c8e8184602087016109ff565b9190910192915050565b6020815260006101d86020830184610a2356fea164736f6c6343000811000a608060405234801561001057600080fd5b5061001961001e565b6100dd565b600054610100900460ff161561008a5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116146100db576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6104ee806100ec6000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806341de68301161005b57806341de6830146100e75780636accab8c146100f6578063c4d66de81461010d578063efe51cca1461012257600080fd5b806301ffc9a7146100825780632ae9c600146100aa5780634162169f146100bf575b600080fd5b61009561009036600461041e565b61012b565b60405190151581526020015b60405180910390f35b6100b261017c565b6040516100a1919061044f565b60655460405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100a1565b60016040516100a19190610483565b6100ff60975481565b6040519081526020016100a1565b61012061011b3660046104ab565b6101a6565b005b6100ff60985481565b60006001600160e01b0319821663041de68360e41b148061015b57506001600160e01b03198216621574e360e91b145b8061017657506301ffc9a760e01b6001600160e01b03198316145b92915050565b610184610400565b5060408051606081018252600181526004602082015260009181019190915290565b600054610100900460ff16158080156101c65750600054600160ff909116105b806101e05750303b1580156101e0575060005460ff166001145b6102575760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b6000805460ff19166001179055801561027a576000805461ff0019166101001790555b610283826102d7565b6001609755600260985580156102d3576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b600054610100900460ff166103425760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840161024e565b61034b8161034e565b50565b600054610100900460ff166103b95760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840161024e565b606580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60405180606001604052806003906020820280368337509192915050565b60006020828403121561043057600080fd5b81356001600160e01b03198116811461044857600080fd5b9392505050565b60608101818360005b600381101561047a57815160ff16835260209283019290910190600101610458565b50505092915050565b60208101600383106104a557634e487b7160e01b600052602160045260246000fd5b91905290565b6000602082840312156104bd57600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461044857600080fdfea164736f6c6343000811000a","opcodes":"PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x1D SWAP1 PUSH2 0x4B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH2 0x39 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x80 MSTORE PUSH2 0x58 JUMP JUMPDEST PUSH2 0x5DA DUP1 PUSH2 0xD31 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH2 0xCB8 PUSH2 0x79 PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH1 0xC1 ADD MSTORE PUSH2 0x298 ADD MSTORE PUSH2 0xCB8 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x72 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9CB0A124 GT PUSH2 0x50 JUMPI DUP1 PUSH4 0x9CB0A124 EQ PUSH2 0xEB JUMPI DUP1 PUSH4 0xA8A9C29E EQ PUSH2 0x10B JUMPI DUP1 PUSH4 0xF10832F1 EQ PUSH2 0x12C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x77 JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0x9F JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0xB4 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8A PUSH2 0x85 CALLDATASIZE PUSH1 0x4 PUSH2 0x7FE JUMP JUMPDEST PUSH2 0x14D JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xA7 PUSH2 0x19E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x96 SWAP2 SWAP1 PUSH2 0x828 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x96 JUMP JUMPDEST PUSH2 0xFE PUSH2 0xF9 CALLDATASIZE PUSH1 0x4 PUSH2 0x885 JUMP JUMPDEST PUSH2 0x1C8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x96 SWAP2 SWAP1 PUSH2 0x94F JUMP JUMPDEST PUSH2 0x11E PUSH2 0x119 CALLDATASIZE PUSH1 0x4 PUSH2 0x998 JUMP JUMPDEST PUSH2 0x1DF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x96 SWAP3 SWAP2 SWAP1 PUSH2 0xAE2 JUMP JUMPDEST PUSH2 0x13F PUSH2 0x13A CALLDATASIZE PUSH1 0x4 PUSH2 0xB26 JUMP JUMPDEST PUSH2 0x217 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x96 SWAP3 SWAP2 SWAP1 PUSH2 0xBE8 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x99718B5 PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x17D JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x198 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1A6 PUSH2 0x7E0 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1D8 PUSH1 0x0 PUSH1 0x2 PUSH1 0x1 PUSH2 0x2F3 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1FE PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xA1128101 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x236 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 PUSH1 0x44 ADD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x189ACDBD PUSH1 0xE3 SHL OR SWAP1 MSTORE SWAP1 POP PUSH2 0x2C9 DUP2 PUSH2 0x2BA PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH2 0x478 JUMP JUMPDEST SWAP3 POP PUSH2 0x2D5 PUSH1 0x2 PUSH2 0x4B0 JUMP JUMPDEST DUP3 MSTORE PUSH2 0x2E4 PUSH1 0x0 PUSH1 0x2 DUP2 PUSH2 0x2F3 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP SWAP1 SWAP4 SWAP1 SWAP3 POP SWAP1 POP JUMP JUMPDEST PUSH1 0x60 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH2 0x328 JUMPI PUSH1 0x40 MLOAD PUSH4 0x3A4013CD PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x332 DUP5 DUP5 PUSH2 0xC20 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x353 JUMPI PUSH2 0x353 PUSH2 0xB10 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x3AC JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD DUP3 SWAP1 MSTORE SWAP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 DUP3 ADD MSTORE DUP3 MSTORE PUSH1 0x0 NOT SWAP1 SWAP3 ADD SWAP2 ADD DUP2 PUSH2 0x371 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP DUP4 JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT ISZERO PUSH2 0x470 JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 DUP5 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x3E8 JUMPI PUSH2 0x3E8 PUSH2 0x8D3 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x60 DUP3 ADD MSTORE PUSH32 0xA280EEC51AB8E1BC4B6B0C1B7F1BDE785761B787A49DB404E3E9338ED9B016EF PUSH1 0x80 SWAP1 SWAP2 ADD MSTORE DUP3 PUSH2 0x439 DUP8 DUP5 PUSH2 0xC20 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MLOAD DUP2 LT PUSH2 0x452 JUMPI PUSH2 0x452 PUSH2 0xC40 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP DUP1 DUP1 PUSH2 0x468 SWAP1 PUSH2 0xC56 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x3B1 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x48C DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x569 JUMP JUMPDEST DUP3 MLOAD SWAP1 SWAP2 POP ISZERO PUSH2 0x198 JUMPI PUSH2 0x4A9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP4 PUSH2 0x60F JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x4D4 JUMPI PUSH2 0x4D4 PUSH2 0xB10 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x4FD JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT ISZERO PUSH2 0x563 JUMPI DUP1 DUP3 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MLOAD DUP2 LT PUSH2 0x539 JUMPI PUSH2 0x539 PUSH2 0xC40 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE DUP1 PUSH2 0x55B DUP2 PUSH2 0xC56 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x503 JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH23 0x3D602D80600A3D3981F3363D3D373D3D3D363D73000000 DUP3 PUSH1 0x60 SHL PUSH1 0xE8 SHR OR PUSH1 0x0 MSTORE PUSH15 0x5AF43D82803E903D91602B57FD5BF3 DUP3 PUSH1 0x78 SHL OR PUSH1 0x20 MSTORE PUSH1 0x37 PUSH1 0x9 PUSH1 0x0 CREATE SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x60A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313136373A20637265617465206661696C656400000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1D8 DUP4 DUP4 PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x416464726573733A206C6F772D6C6576656C2063616C6C206661696C65640000 DUP2 MSTORE POP PUSH1 0x60 DUP3 SELFBALANCE LT ISZERO PUSH2 0x6C6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A20696E73756666696369656E742062616C616E636520666F PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x722063616C6C0000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x601 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP8 PUSH1 0x40 MLOAD PUSH2 0x6E2 SWAP2 SWAP1 PUSH2 0xC7C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x71F JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x724 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x735 DUP8 DUP4 DUP4 DUP8 PUSH2 0x742 JUMP JUMPDEST SWAP3 POP POP POP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x7B1 JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0x7AA JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0x7AA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x601 JUMP JUMPDEST POP DUP2 PUSH2 0x73A JUMP JUMPDEST PUSH2 0x73A DUP4 DUP4 DUP2 MLOAD ISZERO PUSH2 0x7C6 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x601 SWAP2 SWAP1 PUSH2 0xC98 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x810 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x1D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0x853 JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x831 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x60A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x563 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x898 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8A1 DUP4 PUSH2 0x85C JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x8BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8C9 DUP6 DUP3 DUP7 ADD PUSH2 0x873 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP2 MLOAD PUSH1 0x3 DUP2 LT PUSH2 0x90B JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP4 MSTORE POP PUSH1 0x20 DUP2 DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP1 DUP4 ADD MLOAD DUP3 AND SWAP1 DUP5 ADD MSTORE PUSH1 0x60 DUP1 DUP4 ADD MLOAD SWAP1 SWAP2 AND SWAP1 DUP4 ADD MSTORE PUSH1 0x80 SWAP1 DUP2 ADD MLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x98C JUMPI PUSH2 0x97E DUP4 DUP6 MLOAD PUSH2 0x8E9 JUMP JUMPDEST SWAP4 DUP6 ADD SWAP4 SWAP3 POP PUSH1 0x1 ADD PUSH2 0x96B JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x9AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9B6 DUP5 PUSH2 0x85C JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH2 0x9CD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x9E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9F5 DUP7 DUP3 DUP8 ADD PUSH2 0x873 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xA1A JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xA02 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0xA3B DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x9FF JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x40 DUP1 DUP5 MSTORE DUP2 MLOAD SWAP1 DUP5 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x20 SWAP2 SWAP1 DUP3 ADD SWAP1 PUSH1 0x60 DUP7 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xA94 JUMPI DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0xA6F JUMP JUMPDEST POP POP DUP5 DUP4 ADD MLOAD DUP7 DUP3 SUB DUP8 DUP6 ADD MSTORE DUP1 MLOAD DUP1 DUP4 MSTORE SWAP1 DUP5 ADD SWAP3 POP PUSH1 0x0 SWAP2 DUP5 ADD SWAP1 JUMPDEST DUP1 DUP4 LT ISZERO PUSH2 0xAD7 JUMPI PUSH2 0xAC5 DUP3 DUP6 MLOAD PUSH2 0x8E9 JUMP JUMPDEST SWAP2 POP DUP5 DUP5 ADD SWAP4 POP PUSH1 0x1 DUP4 ADD SWAP3 POP PUSH2 0xAB2 JUMP JUMPDEST POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 PUSH2 0xAF5 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0xA23 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0xB07 DUP2 DUP6 PUSH2 0xA4F JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xB39 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB42 DUP4 PUSH2 0x85C JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xB5F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xB73 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0xB85 JUMPI PUSH2 0xB85 PUSH2 0xB10 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0xBAD JUMPI PUSH2 0xBAD PUSH2 0xB10 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0xBC6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0x73A PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0xA4F JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND DUP3 DUP3 AND SUB SWAP1 DUP1 DUP3 GT ISZERO PUSH2 0x4A9 JUMPI PUSH2 0x4A9 PUSH2 0xC0A JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND DUP2 DUP2 SUB PUSH2 0xC72 JUMPI PUSH2 0xC72 PUSH2 0xC0A JUMP JUMPDEST PUSH1 0x1 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0xC8E DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x9FF JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x1D8 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0xA23 JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x19 PUSH2 0x1E JUMP JUMPDEST PUSH2 0xDD JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x8A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x27 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320696E697469 PUSH1 0x44 DUP3 ADD MSTORE PUSH7 0x616C697A696E67 PUSH1 0xC8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xFF SWAP1 DUP2 AND EQ PUSH2 0xDB JUMPI PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST JUMP JUMPDEST PUSH2 0x4EE DUP1 PUSH2 0xEC PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x7D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x41DE6830 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x41DE6830 EQ PUSH2 0xE7 JUMPI DUP1 PUSH4 0x6ACCAB8C EQ PUSH2 0xF6 JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0x10D JUMPI DUP1 PUSH4 0xEFE51CCA EQ PUSH2 0x122 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x82 JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0xAA JUMPI DUP1 PUSH4 0x4162169F EQ PUSH2 0xBF JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x95 PUSH2 0x90 CALLDATASIZE PUSH1 0x4 PUSH2 0x41E JUMP JUMPDEST PUSH2 0x12B JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xB2 PUSH2 0x17C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA1 SWAP2 SWAP1 PUSH2 0x44F JUMP JUMPDEST PUSH1 0x65 SLOAD PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xA1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x40 MLOAD PUSH2 0xA1 SWAP2 SWAP1 PUSH2 0x483 JUMP JUMPDEST PUSH2 0xFF PUSH1 0x97 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xA1 JUMP JUMPDEST PUSH2 0x120 PUSH2 0x11B CALLDATASIZE PUSH1 0x4 PUSH2 0x4AB JUMP JUMPDEST PUSH2 0x1A6 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xFF PUSH1 0x98 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x41DE683 PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x15B JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x176 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x184 PUSH2 0x400 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 DUP1 ISZERO PUSH2 0x1C6 JUMPI POP PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xFF SWAP1 SWAP2 AND LT JUMPDEST DUP1 PUSH2 0x1E0 JUMPI POP ADDRESS EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1E0 JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF AND PUSH1 0x1 EQ JUMPDEST PUSH2 0x257 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x647920696E697469616C697A6564000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE DUP1 ISZERO PUSH2 0x27A JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND PUSH2 0x100 OR SWAP1 SSTORE JUMPDEST PUSH2 0x283 DUP3 PUSH2 0x2D7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x97 SSTORE PUSH1 0x2 PUSH1 0x98 SSTORE DUP1 ISZERO PUSH2 0x2D3 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x342 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x24E JUMP JUMPDEST PUSH2 0x34B DUP2 PUSH2 0x34E JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x3B9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x24E JUMP JUMPDEST PUSH1 0x65 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x430 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x448 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0x47A JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x458 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH1 0x3 DUP4 LT PUSH2 0x4A5 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 SWAP1 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x448 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"2043:1127:49:-:0;;;2183:70;;;;;;;;;;2217:31;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1454:32:82;;;2043:1127:49;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_revert_9263":{"entryPoint":null,"id":9263,"parameterSlots":2,"returnSlots":0},"@clone_5295":{"entryPoint":1385,"id":5295,"parameterSlots":1,"returnSlots":1},"@deployMinimalProxy_14592":{"entryPoint":1144,"id":14592,"parameterSlots":2,"returnSlots":1},"@functionCallWithValue_9088":{"entryPoint":null,"id":9088,"parameterSlots":4,"returnSlots":1},"@functionCall_9004":{"entryPoint":1551,"id":9004,"parameterSlots":2,"returnSlots":1},"@implementation_14370":{"entryPoint":null,"id":14370,"parameterSlots":0,"returnSlots":1},"@isContract_8952":{"entryPoint":null,"id":8952,"parameterSlots":1,"returnSlots":1},"@mockHelpers_11760":{"entryPoint":1200,"id":11760,"parameterSlots":1,"returnSlots":1},"@mockPermissions_11721":{"entryPoint":755,"id":11721,"parameterSlots":3,"returnSlots":1},"@prepareInstallation_11468":{"entryPoint":535,"id":11468,"parameterSlots":2,"returnSlots":2},"@prepareUninstallation_11496":{"entryPoint":456,"id":11496,"parameterSlots":2,"returnSlots":1},"@prepareUpdate_14332":{"entryPoint":479,"id":14332,"parameterSlots":3,"returnSlots":2},"@protocolVersion_14765":{"entryPoint":414,"id":14765,"parameterSlots":0,"returnSlots":1},"@supportsInterface_14361":{"entryPoint":333,"id":14361,"parameterSlots":1,"returnSlots":1},"@supportsInterface_9730":{"entryPoint":null,"id":9730,"parameterSlots":1,"returnSlots":1},"@verifyCallResultFromTarget_9219":{"entryPoint":1858,"id":9219,"parameterSlots":4,"returnSlots":1},"abi_decode_address":{"entryPoint":2140,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_struct_SetupPayload_calldata":{"entryPoint":2163,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_bytes_memory_ptr":{"entryPoint":2854,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_struct$_SetupPayload_$14224_calldata_ptr":{"entryPoint":2181,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_uint16t_struct$_SetupPayload_$14224_calldata_ptr":{"entryPoint":2456,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_bytes4":{"entryPoint":2046,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encodeUpdatedPos_struct_MultiTargetPermission":{"entryPoint":2281,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_bytes":{"entryPoint":2595,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_struct_PreparedSetupData":{"entryPoint":2639,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":3196,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address_t_struct$_PreparedSetupData_$14216_memory_ptr__to_t_address_t_struct$_PreparedSetupData_$14216_memory_ptr__fromStack_reversed":{"entryPoint":3048,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr__fromStack_reversed":{"entryPoint":2383,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed":{"entryPoint":2088,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$14216_memory_ptr__to_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$14216_memory_ptr__fromStack_reversed":{"entryPoint":2786,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_contract$_IDAO_$10865__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":3224,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_68ca40b61460257f14e69f48b1a4dbc812e9afc6932f127ef8084544457b3335__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"checked_sub_t_uint160":{"entryPoint":3104,"id":null,"parameterSlots":2,"returnSlots":1},"copy_memory_to_memory_with_cleanup":{"entryPoint":2559,"id":null,"parameterSlots":3,"returnSlots":0},"increment_t_uint160":{"entryPoint":3158,"id":null,"parameterSlots":1,"returnSlots":1},"panic_error_0x11":{"entryPoint":3082,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x21":{"entryPoint":2259,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x32":{"entryPoint":3136,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":2832,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:10509:92","statements":[{"nodeType":"YulBlock","src":"6:3:92","statements":[]},{"body":{"nodeType":"YulBlock","src":"83:217:92","statements":[{"body":{"nodeType":"YulBlock","src":"129:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"138:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"141:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"131:6:92"},"nodeType":"YulFunctionCall","src":"131:12:92"},"nodeType":"YulExpressionStatement","src":"131:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"104:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"113:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"100:3:92"},"nodeType":"YulFunctionCall","src":"100:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"125:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"96:3:92"},"nodeType":"YulFunctionCall","src":"96:32:92"},"nodeType":"YulIf","src":"93:52:92"},{"nodeType":"YulVariableDeclaration","src":"154:36:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"180:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"167:12:92"},"nodeType":"YulFunctionCall","src":"167:23:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"158:5:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"254:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"263:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"266:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"256:6:92"},"nodeType":"YulFunctionCall","src":"256:12:92"},"nodeType":"YulExpressionStatement","src":"256:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"212:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"223:5:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"234:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"239:10:92","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"230:3:92"},"nodeType":"YulFunctionCall","src":"230:20:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"219:3:92"},"nodeType":"YulFunctionCall","src":"219:32:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"209:2:92"},"nodeType":"YulFunctionCall","src":"209:43:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"202:6:92"},"nodeType":"YulFunctionCall","src":"202:51:92"},"nodeType":"YulIf","src":"199:71:92"},{"nodeType":"YulAssignment","src":"279:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"289:5:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"279:6:92"}]}]},"name":"abi_decode_tuple_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"49:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"60:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"72:6:92","type":""}],"src":"14:286:92"},{"body":{"nodeType":"YulBlock","src":"400:92:92","statements":[{"nodeType":"YulAssignment","src":"410:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"422:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"433:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"418:3:92"},"nodeType":"YulFunctionCall","src":"418:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"410:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"452:9:92"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"477:6:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"470:6:92"},"nodeType":"YulFunctionCall","src":"470:14:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"463:6:92"},"nodeType":"YulFunctionCall","src":"463:22:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"445:6:92"},"nodeType":"YulFunctionCall","src":"445:41:92"},"nodeType":"YulExpressionStatement","src":"445:41:92"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"369:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"380:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"391:4:92","type":""}],"src":"305:187:92"},{"body":{"nodeType":"YulBlock","src":"640:358:92","statements":[{"nodeType":"YulAssignment","src":"650:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"662:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"673:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"658:3:92"},"nodeType":"YulFunctionCall","src":"658:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"650:4:92"}]},{"nodeType":"YulVariableDeclaration","src":"685:20:92","value":{"name":"headStart","nodeType":"YulIdentifier","src":"696:9:92"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"689:3:92","type":""}]},{"nodeType":"YulAssignment","src":"714:16:92","value":{"name":"headStart","nodeType":"YulIdentifier","src":"721:9:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"714:3:92"}]},{"nodeType":"YulVariableDeclaration","src":"739:20:92","value":{"name":"value0","nodeType":"YulIdentifier","src":"753:6:92"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"743:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"768:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"777:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"772:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"834:158:92","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"855:3:92"},{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"870:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"864:5:92"},"nodeType":"YulFunctionCall","src":"864:13:92"},{"kind":"number","nodeType":"YulLiteral","src":"879:4:92","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"860:3:92"},"nodeType":"YulFunctionCall","src":"860:24:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"848:6:92"},"nodeType":"YulFunctionCall","src":"848:37:92"},"nodeType":"YulExpressionStatement","src":"848:37:92"},{"nodeType":"YulVariableDeclaration","src":"898:14:92","value":{"kind":"number","nodeType":"YulLiteral","src":"908:4:92","type":"","value":"0x20"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"902:2:92","type":""}]},{"nodeType":"YulAssignment","src":"925:19:92","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"936:3:92"},{"name":"_1","nodeType":"YulIdentifier","src":"941:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"932:3:92"},"nodeType":"YulFunctionCall","src":"932:12:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"925:3:92"}]},{"nodeType":"YulAssignment","src":"957:25:92","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"971:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"979:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"967:3:92"},"nodeType":"YulFunctionCall","src":"967:15:92"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"957:6:92"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"798:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"801:4:92","type":"","value":"0x03"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"795:2:92"},"nodeType":"YulFunctionCall","src":"795:11:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"807:18:92","statements":[{"nodeType":"YulAssignment","src":"809:14:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"818:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"821:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"814:3:92"},"nodeType":"YulFunctionCall","src":"814:9:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"809:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"791:3:92","statements":[]},"src":"787:205:92"}]},"name":"abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"609:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"620:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"631:4:92","type":""}],"src":"497:501:92"},{"body":{"nodeType":"YulBlock","src":"1104:125:92","statements":[{"nodeType":"YulAssignment","src":"1114:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1126:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1137:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1122:3:92"},"nodeType":"YulFunctionCall","src":"1122:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1114:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1156:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1171:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"1179:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1167:3:92"},"nodeType":"YulFunctionCall","src":"1167:55:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1149:6:92"},"nodeType":"YulFunctionCall","src":"1149:74:92"},"nodeType":"YulExpressionStatement","src":"1149:74:92"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1073:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1084:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1095:4:92","type":""}],"src":"1003:226:92"},{"body":{"nodeType":"YulBlock","src":"1283:147:92","statements":[{"nodeType":"YulAssignment","src":"1293:29:92","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1315:6:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1302:12:92"},"nodeType":"YulFunctionCall","src":"1302:20:92"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"1293:5:92"}]},{"body":{"nodeType":"YulBlock","src":"1408:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1417:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1420:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1410:6:92"},"nodeType":"YulFunctionCall","src":"1410:12:92"},"nodeType":"YulExpressionStatement","src":"1410:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1344:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1355:5:92"},{"kind":"number","nodeType":"YulLiteral","src":"1362:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1351:3:92"},"nodeType":"YulFunctionCall","src":"1351:54:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1341:2:92"},"nodeType":"YulFunctionCall","src":"1341:65:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1334:6:92"},"nodeType":"YulFunctionCall","src":"1334:73:92"},"nodeType":"YulIf","src":"1331:93:92"}]},"name":"abi_decode_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"1262:6:92","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"1273:5:92","type":""}],"src":"1234:196:92"},{"body":{"nodeType":"YulBlock","src":"1510:85:92","statements":[{"body":{"nodeType":"YulBlock","src":"1549:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1558:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1561:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1551:6:92"},"nodeType":"YulFunctionCall","src":"1551:12:92"},"nodeType":"YulExpressionStatement","src":"1551:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"end","nodeType":"YulIdentifier","src":"1531:3:92"},{"name":"offset","nodeType":"YulIdentifier","src":"1536:6:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1527:3:92"},"nodeType":"YulFunctionCall","src":"1527:16:92"},{"kind":"number","nodeType":"YulLiteral","src":"1545:2:92","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1523:3:92"},"nodeType":"YulFunctionCall","src":"1523:25:92"},"nodeType":"YulIf","src":"1520:45:92"},{"nodeType":"YulAssignment","src":"1574:15:92","value":{"name":"offset","nodeType":"YulIdentifier","src":"1583:6:92"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"1574:5:92"}]}]},"name":"abi_decode_struct_SetupPayload_calldata","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"1484:6:92","type":""},{"name":"end","nodeType":"YulTypedName","src":"1492:3:92","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"1500:5:92","type":""}],"src":"1435:160:92"},{"body":{"nodeType":"YulBlock","src":"1720:321:92","statements":[{"body":{"nodeType":"YulBlock","src":"1766:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1775:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1778:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1768:6:92"},"nodeType":"YulFunctionCall","src":"1768:12:92"},"nodeType":"YulExpressionStatement","src":"1768:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1741:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"1750:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1737:3:92"},"nodeType":"YulFunctionCall","src":"1737:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"1762:2:92","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1733:3:92"},"nodeType":"YulFunctionCall","src":"1733:32:92"},"nodeType":"YulIf","src":"1730:52:92"},{"nodeType":"YulAssignment","src":"1791:39:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1820:9:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"1801:18:92"},"nodeType":"YulFunctionCall","src":"1801:29:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1791:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"1839:46:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1870:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1881:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1866:3:92"},"nodeType":"YulFunctionCall","src":"1866:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1853:12:92"},"nodeType":"YulFunctionCall","src":"1853:32:92"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1843:6:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"1928:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1937:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1940:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1930:6:92"},"nodeType":"YulFunctionCall","src":"1930:12:92"},"nodeType":"YulExpressionStatement","src":"1930:12:92"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1900:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"1908:18:92","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1897:2:92"},"nodeType":"YulFunctionCall","src":"1897:30:92"},"nodeType":"YulIf","src":"1894:50:92"},{"nodeType":"YulAssignment","src":"1953:82:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2007:9:92"},{"name":"offset","nodeType":"YulIdentifier","src":"2018:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2003:3:92"},"nodeType":"YulFunctionCall","src":"2003:22:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2027:7:92"}],"functionName":{"name":"abi_decode_struct_SetupPayload_calldata","nodeType":"YulIdentifier","src":"1963:39:92"},"nodeType":"YulFunctionCall","src":"1963:72:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1953:6:92"}]}]},"name":"abi_decode_tuple_t_addresst_struct$_SetupPayload_$14224_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1678:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1689:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1701:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1709:6:92","type":""}],"src":"1600:441:92"},{"body":{"nodeType":"YulBlock","src":"2078:95:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2095:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2102:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"2107:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2098:3:92"},"nodeType":"YulFunctionCall","src":"2098:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2088:6:92"},"nodeType":"YulFunctionCall","src":"2088:31:92"},"nodeType":"YulExpressionStatement","src":"2088:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2135:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"2138:4:92","type":"","value":"0x21"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2128:6:92"},"nodeType":"YulFunctionCall","src":"2128:15:92"},"nodeType":"YulExpressionStatement","src":"2128:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2159:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2162:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2152:6:92"},"nodeType":"YulFunctionCall","src":"2152:15:92"},"nodeType":"YulExpressionStatement","src":"2152:15:92"}]},"name":"panic_error_0x21","nodeType":"YulFunctionDefinition","src":"2046:127:92"},{"body":{"nodeType":"YulBlock","src":"2268:606:92","statements":[{"nodeType":"YulVariableDeclaration","src":"2278:23:92","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2294:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2288:5:92"},"nodeType":"YulFunctionCall","src":"2288:13:92"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"2282:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"2339:111:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2360:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2367:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"2372:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2363:3:92"},"nodeType":"YulFunctionCall","src":"2363:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2353:6:92"},"nodeType":"YulFunctionCall","src":"2353:31:92"},"nodeType":"YulExpressionStatement","src":"2353:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2404:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"2407:4:92","type":"","value":"0x21"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2397:6:92"},"nodeType":"YulFunctionCall","src":"2397:15:92"},"nodeType":"YulExpressionStatement","src":"2397:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2432:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2435:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2425:6:92"},"nodeType":"YulFunctionCall","src":"2425:15:92"},"nodeType":"YulExpressionStatement","src":"2425:15:92"}]},"condition":{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"2323:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"2327:1:92","type":"","value":"3"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2320:2:92"},"nodeType":"YulFunctionCall","src":"2320:9:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2313:6:92"},"nodeType":"YulFunctionCall","src":"2313:17:92"},"nodeType":"YulIf","src":"2310:140:92"},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2466:3:92"},{"name":"_1","nodeType":"YulIdentifier","src":"2471:2:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2459:6:92"},"nodeType":"YulFunctionCall","src":"2459:15:92"},"nodeType":"YulExpressionStatement","src":"2459:15:92"},{"nodeType":"YulVariableDeclaration","src":"2483:44:92","value":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2513:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"2521:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2509:3:92"},"nodeType":"YulFunctionCall","src":"2509:17:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2503:5:92"},"nodeType":"YulFunctionCall","src":"2503:24:92"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"2487:12:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2536:52:92","value":{"kind":"number","nodeType":"YulLiteral","src":"2546:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"2540:2:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2608:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"2613:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2604:3:92"},"nodeType":"YulFunctionCall","src":"2604:14:92"},{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"2624:12:92"},{"name":"_2","nodeType":"YulIdentifier","src":"2638:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2620:3:92"},"nodeType":"YulFunctionCall","src":"2620:21:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2597:6:92"},"nodeType":"YulFunctionCall","src":"2597:45:92"},"nodeType":"YulExpressionStatement","src":"2597:45:92"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2662:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"2667:4:92","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2658:3:92"},"nodeType":"YulFunctionCall","src":"2658:14:92"},{"arguments":[{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2688:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"2696:4:92","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2684:3:92"},"nodeType":"YulFunctionCall","src":"2684:17:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2678:5:92"},"nodeType":"YulFunctionCall","src":"2678:24:92"},{"name":"_2","nodeType":"YulIdentifier","src":"2704:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2674:3:92"},"nodeType":"YulFunctionCall","src":"2674:33:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2651:6:92"},"nodeType":"YulFunctionCall","src":"2651:57:92"},"nodeType":"YulExpressionStatement","src":"2651:57:92"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2728:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"2733:4:92","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2724:3:92"},"nodeType":"YulFunctionCall","src":"2724:14:92"},{"arguments":[{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2754:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"2762:4:92","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2750:3:92"},"nodeType":"YulFunctionCall","src":"2750:17:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2744:5:92"},"nodeType":"YulFunctionCall","src":"2744:24:92"},{"name":"_2","nodeType":"YulIdentifier","src":"2770:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2740:3:92"},"nodeType":"YulFunctionCall","src":"2740:33:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2717:6:92"},"nodeType":"YulFunctionCall","src":"2717:57:92"},"nodeType":"YulExpressionStatement","src":"2717:57:92"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2794:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"2799:4:92","type":"","value":"0x80"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2790:3:92"},"nodeType":"YulFunctionCall","src":"2790:14:92"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2816:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"2824:4:92","type":"","value":"0x80"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2812:3:92"},"nodeType":"YulFunctionCall","src":"2812:17:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2806:5:92"},"nodeType":"YulFunctionCall","src":"2806:24:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2783:6:92"},"nodeType":"YulFunctionCall","src":"2783:48:92"},"nodeType":"YulExpressionStatement","src":"2783:48:92"},{"nodeType":"YulAssignment","src":"2840:28:92","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2858:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"2863:4:92","type":"","value":"0xa0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2854:3:92"},"nodeType":"YulFunctionCall","src":"2854:14:92"},"variableNames":[{"name":"updatedPos","nodeType":"YulIdentifier","src":"2840:10:92"}]}]},"name":"abi_encodeUpdatedPos_struct_MultiTargetPermission","nodeType":"YulFunctionDefinition","parameters":[{"name":"value0","nodeType":"YulTypedName","src":"2237:6:92","type":""},{"name":"pos","nodeType":"YulTypedName","src":"2245:3:92","type":""}],"returnVariables":[{"name":"updatedPos","nodeType":"YulTypedName","src":"2253:10:92","type":""}],"src":"2178:696:92"},{"body":{"nodeType":"YulBlock","src":"3110:499:92","statements":[{"nodeType":"YulVariableDeclaration","src":"3120:12:92","value":{"kind":"number","nodeType":"YulLiteral","src":"3130:2:92","type":"","value":"32"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"3124:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3141:32:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3159:9:92"},{"name":"_1","nodeType":"YulIdentifier","src":"3170:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3155:3:92"},"nodeType":"YulFunctionCall","src":"3155:18:92"},"variables":[{"name":"tail_1","nodeType":"YulTypedName","src":"3145:6:92","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3189:9:92"},{"name":"_1","nodeType":"YulIdentifier","src":"3200:2:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3182:6:92"},"nodeType":"YulFunctionCall","src":"3182:21:92"},"nodeType":"YulExpressionStatement","src":"3182:21:92"},{"nodeType":"YulVariableDeclaration","src":"3212:17:92","value":{"name":"tail_1","nodeType":"YulIdentifier","src":"3223:6:92"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"3216:3:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3238:27:92","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3258:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3252:5:92"},"nodeType":"YulFunctionCall","src":"3252:13:92"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"3242:6:92","type":""}]},{"expression":{"arguments":[{"name":"tail_1","nodeType":"YulIdentifier","src":"3281:6:92"},{"name":"length","nodeType":"YulIdentifier","src":"3289:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3274:6:92"},"nodeType":"YulFunctionCall","src":"3274:22:92"},"nodeType":"YulExpressionStatement","src":"3274:22:92"},{"nodeType":"YulAssignment","src":"3305:25:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3316:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3327:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3312:3:92"},"nodeType":"YulFunctionCall","src":"3312:18:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"3305:3:92"}]},{"nodeType":"YulVariableDeclaration","src":"3339:29:92","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3357:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"3365:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3353:3:92"},"nodeType":"YulFunctionCall","src":"3353:15:92"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"3343:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3377:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"3386:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"3381:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"3445:138:92","statements":[{"nodeType":"YulAssignment","src":"3459:76:92","value":{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"3522:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3516:5:92"},"nodeType":"YulFunctionCall","src":"3516:13:92"},{"name":"pos","nodeType":"YulIdentifier","src":"3531:3:92"}],"functionName":{"name":"abi_encodeUpdatedPos_struct_MultiTargetPermission","nodeType":"YulIdentifier","src":"3466:49:92"},"nodeType":"YulFunctionCall","src":"3466:69:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"3459:3:92"}]},{"nodeType":"YulAssignment","src":"3548:25:92","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"3562:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"3570:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3558:3:92"},"nodeType":"YulFunctionCall","src":"3558:15:92"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"3548:6:92"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3407:1:92"},{"name":"length","nodeType":"YulIdentifier","src":"3410:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"3404:2:92"},"nodeType":"YulFunctionCall","src":"3404:13:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"3418:18:92","statements":[{"nodeType":"YulAssignment","src":"3420:14:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3429:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"3432:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3425:3:92"},"nodeType":"YulFunctionCall","src":"3425:9:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"3420:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"3400:3:92","statements":[]},"src":"3396:187:92"},{"nodeType":"YulAssignment","src":"3592:11:92","value":{"name":"pos","nodeType":"YulIdentifier","src":"3600:3:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3592:4:92"}]}]},"name":"abi_encode_tuple_t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3079:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3090:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3101:4:92","type":""}],"src":"2879:730:92"},{"body":{"nodeType":"YulBlock","src":"3750:465:92","statements":[{"body":{"nodeType":"YulBlock","src":"3796:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3805:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3808:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3798:6:92"},"nodeType":"YulFunctionCall","src":"3798:12:92"},"nodeType":"YulExpressionStatement","src":"3798:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3771:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"3780:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3767:3:92"},"nodeType":"YulFunctionCall","src":"3767:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"3792:2:92","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3763:3:92"},"nodeType":"YulFunctionCall","src":"3763:32:92"},"nodeType":"YulIf","src":"3760:52:92"},{"nodeType":"YulAssignment","src":"3821:39:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3850:9:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"3831:18:92"},"nodeType":"YulFunctionCall","src":"3831:29:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3821:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"3869:45:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3899:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3910:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3895:3:92"},"nodeType":"YulFunctionCall","src":"3895:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3882:12:92"},"nodeType":"YulFunctionCall","src":"3882:32:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"3873:5:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"3964:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3973:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3976:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3966:6:92"},"nodeType":"YulFunctionCall","src":"3966:12:92"},"nodeType":"YulExpressionStatement","src":"3966:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3936:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3947:5:92"},{"kind":"number","nodeType":"YulLiteral","src":"3954:6:92","type":"","value":"0xffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3943:3:92"},"nodeType":"YulFunctionCall","src":"3943:18:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"3933:2:92"},"nodeType":"YulFunctionCall","src":"3933:29:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3926:6:92"},"nodeType":"YulFunctionCall","src":"3926:37:92"},"nodeType":"YulIf","src":"3923:57:92"},{"nodeType":"YulAssignment","src":"3989:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"3999:5:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"3989:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"4013:46:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4044:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4055:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4040:3:92"},"nodeType":"YulFunctionCall","src":"4040:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4027:12:92"},"nodeType":"YulFunctionCall","src":"4027:32:92"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4017:6:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"4102:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4111:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4114:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4104:6:92"},"nodeType":"YulFunctionCall","src":"4104:12:92"},"nodeType":"YulExpressionStatement","src":"4104:12:92"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"4074:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"4082:18:92","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4071:2:92"},"nodeType":"YulFunctionCall","src":"4071:30:92"},"nodeType":"YulIf","src":"4068:50:92"},{"nodeType":"YulAssignment","src":"4127:82:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4181:9:92"},{"name":"offset","nodeType":"YulIdentifier","src":"4192:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4177:3:92"},"nodeType":"YulFunctionCall","src":"4177:22:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4201:7:92"}],"functionName":{"name":"abi_decode_struct_SetupPayload_calldata","nodeType":"YulIdentifier","src":"4137:39:92"},"nodeType":"YulFunctionCall","src":"4137:72:92"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"4127:6:92"}]}]},"name":"abi_decode_tuple_t_addresst_uint16t_struct$_SetupPayload_$14224_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3700:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3711:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3723:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"3731:6:92","type":""},{"name":"value2","nodeType":"YulTypedName","src":"3739:6:92","type":""}],"src":"3614:601:92"},{"body":{"nodeType":"YulBlock","src":"4286:184:92","statements":[{"nodeType":"YulVariableDeclaration","src":"4296:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"4305:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"4300:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"4365:63:92","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"4390:3:92"},{"name":"i","nodeType":"YulIdentifier","src":"4395:1:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4386:3:92"},"nodeType":"YulFunctionCall","src":"4386:11:92"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"4409:3:92"},{"name":"i","nodeType":"YulIdentifier","src":"4414:1:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4405:3:92"},"nodeType":"YulFunctionCall","src":"4405:11:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4399:5:92"},"nodeType":"YulFunctionCall","src":"4399:18:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4379:6:92"},"nodeType":"YulFunctionCall","src":"4379:39:92"},"nodeType":"YulExpressionStatement","src":"4379:39:92"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"4326:1:92"},{"name":"length","nodeType":"YulIdentifier","src":"4329:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"4323:2:92"},"nodeType":"YulFunctionCall","src":"4323:13:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"4337:19:92","statements":[{"nodeType":"YulAssignment","src":"4339:15:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"4348:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"4351:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4344:3:92"},"nodeType":"YulFunctionCall","src":"4344:10:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"4339:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"4319:3:92","statements":[]},"src":"4315:113:92"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"4448:3:92"},{"name":"length","nodeType":"YulIdentifier","src":"4453:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4444:3:92"},"nodeType":"YulFunctionCall","src":"4444:16:92"},{"kind":"number","nodeType":"YulLiteral","src":"4462:1:92","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4437:6:92"},"nodeType":"YulFunctionCall","src":"4437:27:92"},"nodeType":"YulExpressionStatement","src":"4437:27:92"}]},"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"4264:3:92","type":""},{"name":"dst","nodeType":"YulTypedName","src":"4269:3:92","type":""},{"name":"length","nodeType":"YulTypedName","src":"4274:6:92","type":""}],"src":"4220:250:92"},{"body":{"nodeType":"YulBlock","src":"4524:221:92","statements":[{"nodeType":"YulVariableDeclaration","src":"4534:26:92","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4554:5:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4548:5:92"},"nodeType":"YulFunctionCall","src":"4548:12:92"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"4538:6:92","type":""}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4576:3:92"},{"name":"length","nodeType":"YulIdentifier","src":"4581:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4569:6:92"},"nodeType":"YulFunctionCall","src":"4569:19:92"},"nodeType":"YulExpressionStatement","src":"4569:19:92"},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4636:5:92"},{"kind":"number","nodeType":"YulLiteral","src":"4643:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4632:3:92"},"nodeType":"YulFunctionCall","src":"4632:16:92"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4654:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"4659:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4650:3:92"},"nodeType":"YulFunctionCall","src":"4650:14:92"},{"name":"length","nodeType":"YulIdentifier","src":"4666:6:92"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"4597:34:92"},"nodeType":"YulFunctionCall","src":"4597:76:92"},"nodeType":"YulExpressionStatement","src":"4597:76:92"},{"nodeType":"YulAssignment","src":"4682:57:92","value":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4697:3:92"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"4710:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"4718:2:92","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4706:3:92"},"nodeType":"YulFunctionCall","src":"4706:15:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4727:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"4723:3:92"},"nodeType":"YulFunctionCall","src":"4723:7:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4702:3:92"},"nodeType":"YulFunctionCall","src":"4702:29:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4693:3:92"},"nodeType":"YulFunctionCall","src":"4693:39:92"},{"kind":"number","nodeType":"YulLiteral","src":"4734:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4689:3:92"},"nodeType":"YulFunctionCall","src":"4689:50:92"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"4682:3:92"}]}]},"name":"abi_encode_bytes","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"4501:5:92","type":""},{"name":"pos","nodeType":"YulTypedName","src":"4508:3:92","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"4516:3:92","type":""}],"src":"4475:270:92"},{"body":{"nodeType":"YulBlock","src":"4818:1094:92","statements":[{"nodeType":"YulVariableDeclaration","src":"4828:26:92","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4844:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"4849:4:92","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4840:3:92"},"nodeType":"YulFunctionCall","src":"4840:14:92"},"variables":[{"name":"tail","nodeType":"YulTypedName","src":"4832:4:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4863:32:92","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4889:5:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4883:5:92"},"nodeType":"YulFunctionCall","src":"4883:12:92"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"4867:12:92","type":""}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4911:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"4916:4:92","type":"","value":"0x40"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4904:6:92"},"nodeType":"YulFunctionCall","src":"4904:17:92"},"nodeType":"YulExpressionStatement","src":"4904:17:92"},{"nodeType":"YulVariableDeclaration","src":"4930:17:92","value":{"name":"tail","nodeType":"YulIdentifier","src":"4943:4:92"},"variables":[{"name":"pos_1","nodeType":"YulTypedName","src":"4934:5:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4956:33:92","value":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"4976:12:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4970:5:92"},"nodeType":"YulFunctionCall","src":"4970:19:92"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"4960:6:92","type":""}]},{"expression":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"5005:4:92"},{"name":"length","nodeType":"YulIdentifier","src":"5011:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4998:6:92"},"nodeType":"YulFunctionCall","src":"4998:20:92"},"nodeType":"YulExpressionStatement","src":"4998:20:92"},{"nodeType":"YulAssignment","src":"5027:21:92","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5040:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"5045:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5036:3:92"},"nodeType":"YulFunctionCall","src":"5036:12:92"},"variableNames":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5027:5:92"}]},{"nodeType":"YulVariableDeclaration","src":"5057:14:92","value":{"kind":"number","nodeType":"YulLiteral","src":"5067:4:92","type":"","value":"0x20"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"5061:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5080:35:92","value":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"5098:12:92"},{"name":"_1","nodeType":"YulIdentifier","src":"5112:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5094:3:92"},"nodeType":"YulFunctionCall","src":"5094:21:92"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"5084:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5124:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"5133:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"5128:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"5192:175:92","statements":[{"expression":{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5213:5:92"},{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"5230:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5224:5:92"},"nodeType":"YulFunctionCall","src":"5224:13:92"},{"kind":"number","nodeType":"YulLiteral","src":"5239:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5220:3:92"},"nodeType":"YulFunctionCall","src":"5220:62:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5206:6:92"},"nodeType":"YulFunctionCall","src":"5206:77:92"},"nodeType":"YulExpressionStatement","src":"5206:77:92"},{"nodeType":"YulAssignment","src":"5296:23:92","value":{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5309:5:92"},{"name":"_1","nodeType":"YulIdentifier","src":"5316:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5305:3:92"},"nodeType":"YulFunctionCall","src":"5305:14:92"},"variableNames":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5296:5:92"}]},{"nodeType":"YulAssignment","src":"5332:25:92","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"5346:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"5354:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5342:3:92"},"nodeType":"YulFunctionCall","src":"5342:15:92"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"5332:6:92"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"5154:1:92"},{"name":"length","nodeType":"YulIdentifier","src":"5157:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"5151:2:92"},"nodeType":"YulFunctionCall","src":"5151:13:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"5165:18:92","statements":[{"nodeType":"YulAssignment","src":"5167:14:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"5176:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"5179:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5172:3:92"},"nodeType":"YulFunctionCall","src":"5172:9:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"5167:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"5147:3:92","statements":[]},"src":"5143:224:92"},{"nodeType":"YulVariableDeclaration","src":"5376:43:92","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5408:5:92"},{"name":"_1","nodeType":"YulIdentifier","src":"5415:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5404:3:92"},"nodeType":"YulFunctionCall","src":"5404:14:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5398:5:92"},"nodeType":"YulFunctionCall","src":"5398:21:92"},"variables":[{"name":"memberValue0_1","nodeType":"YulTypedName","src":"5380:14:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5439:3:92"},{"name":"_1","nodeType":"YulIdentifier","src":"5444:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5435:3:92"},"nodeType":"YulFunctionCall","src":"5435:12:92"},{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5453:5:92"},{"name":"pos","nodeType":"YulIdentifier","src":"5460:3:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5449:3:92"},"nodeType":"YulFunctionCall","src":"5449:15:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5428:6:92"},"nodeType":"YulFunctionCall","src":"5428:37:92"},"nodeType":"YulExpressionStatement","src":"5428:37:92"},{"nodeType":"YulVariableDeclaration","src":"5474:18:92","value":{"name":"pos_1","nodeType":"YulIdentifier","src":"5487:5:92"},"variables":[{"name":"pos_2","nodeType":"YulTypedName","src":"5478:5:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5501:37:92","value":{"arguments":[{"name":"memberValue0_1","nodeType":"YulIdentifier","src":"5523:14:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5517:5:92"},"nodeType":"YulFunctionCall","src":"5517:21:92"},"variables":[{"name":"length_1","nodeType":"YulTypedName","src":"5505:8:92","type":""}]},{"expression":{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5554:5:92"},{"name":"length_1","nodeType":"YulIdentifier","src":"5561:8:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5547:6:92"},"nodeType":"YulFunctionCall","src":"5547:23:92"},"nodeType":"YulExpressionStatement","src":"5547:23:92"},{"nodeType":"YulAssignment","src":"5579:23:92","value":{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5592:5:92"},{"name":"_1","nodeType":"YulIdentifier","src":"5599:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5588:3:92"},"nodeType":"YulFunctionCall","src":"5588:14:92"},"variableNames":[{"name":"pos_2","nodeType":"YulIdentifier","src":"5579:5:92"}]},{"nodeType":"YulVariableDeclaration","src":"5611:39:92","value":{"arguments":[{"name":"memberValue0_1","nodeType":"YulIdentifier","src":"5631:14:92"},{"name":"_1","nodeType":"YulIdentifier","src":"5647:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5627:3:92"},"nodeType":"YulFunctionCall","src":"5627:23:92"},"variables":[{"name":"srcPtr_1","nodeType":"YulTypedName","src":"5615:8:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5659:12:92","value":{"kind":"number","nodeType":"YulLiteral","src":"5670:1:92","type":"","value":"0"},"variables":[{"name":"i_1","nodeType":"YulTypedName","src":"5663:3:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"5737:148:92","statements":[{"nodeType":"YulAssignment","src":"5751:82:92","value":{"arguments":[{"arguments":[{"name":"srcPtr_1","nodeType":"YulIdentifier","src":"5816:8:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5810:5:92"},"nodeType":"YulFunctionCall","src":"5810:15:92"},{"name":"pos_2","nodeType":"YulIdentifier","src":"5827:5:92"}],"functionName":{"name":"abi_encodeUpdatedPos_struct_MultiTargetPermission","nodeType":"YulIdentifier","src":"5760:49:92"},"nodeType":"YulFunctionCall","src":"5760:73:92"},"variableNames":[{"name":"pos_2","nodeType":"YulIdentifier","src":"5751:5:92"}]},{"nodeType":"YulAssignment","src":"5846:29:92","value":{"arguments":[{"name":"srcPtr_1","nodeType":"YulIdentifier","src":"5862:8:92"},{"name":"_1","nodeType":"YulIdentifier","src":"5872:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5858:3:92"},"nodeType":"YulFunctionCall","src":"5858:17:92"},"variableNames":[{"name":"srcPtr_1","nodeType":"YulIdentifier","src":"5846:8:92"}]}]},"condition":{"arguments":[{"name":"i_1","nodeType":"YulIdentifier","src":"5691:3:92"},{"name":"length_1","nodeType":"YulIdentifier","src":"5696:8:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"5688:2:92"},"nodeType":"YulFunctionCall","src":"5688:17:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"5706:22:92","statements":[{"nodeType":"YulAssignment","src":"5708:18:92","value":{"arguments":[{"name":"i_1","nodeType":"YulIdentifier","src":"5719:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"5724:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5715:3:92"},"nodeType":"YulFunctionCall","src":"5715:11:92"},"variableNames":[{"name":"i_1","nodeType":"YulIdentifier","src":"5708:3:92"}]}]},"pre":{"nodeType":"YulBlock","src":"5684:3:92","statements":[]},"src":"5680:205:92"},{"nodeType":"YulAssignment","src":"5894:12:92","value":{"name":"pos_2","nodeType":"YulIdentifier","src":"5901:5:92"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"5894:3:92"}]}]},"name":"abi_encode_struct_PreparedSetupData","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"4795:5:92","type":""},{"name":"pos","nodeType":"YulTypedName","src":"4802:3:92","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"4810:3:92","type":""}],"src":"4750:1162:92"},{"body":{"nodeType":"YulBlock","src":"6136:231:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6153:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6164:2:92","type":"","value":"64"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6146:6:92"},"nodeType":"YulFunctionCall","src":"6146:21:92"},"nodeType":"YulExpressionStatement","src":"6146:21:92"},{"nodeType":"YulVariableDeclaration","src":"6176:58:92","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6207:6:92"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6219:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6230:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6215:3:92"},"nodeType":"YulFunctionCall","src":"6215:18:92"}],"functionName":{"name":"abi_encode_bytes","nodeType":"YulIdentifier","src":"6190:16:92"},"nodeType":"YulFunctionCall","src":"6190:44:92"},"variables":[{"name":"tail_1","nodeType":"YulTypedName","src":"6180:6:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6254:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6265:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6250:3:92"},"nodeType":"YulFunctionCall","src":"6250:18:92"},{"arguments":[{"name":"tail_1","nodeType":"YulIdentifier","src":"6274:6:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"6282:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6270:3:92"},"nodeType":"YulFunctionCall","src":"6270:22:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6243:6:92"},"nodeType":"YulFunctionCall","src":"6243:50:92"},"nodeType":"YulExpressionStatement","src":"6243:50:92"},{"nodeType":"YulAssignment","src":"6302:59:92","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"6346:6:92"},{"name":"tail_1","nodeType":"YulIdentifier","src":"6354:6:92"}],"functionName":{"name":"abi_encode_struct_PreparedSetupData","nodeType":"YulIdentifier","src":"6310:35:92"},"nodeType":"YulFunctionCall","src":"6310:51:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6302:4:92"}]}]},"name":"abi_encode_tuple_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$14216_memory_ptr__to_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$14216_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6097:9:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"6108:6:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"6116:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6127:4:92","type":""}],"src":"5917:450:92"},{"body":{"nodeType":"YulBlock","src":"6404:95:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6421:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6428:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"6433:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"6424:3:92"},"nodeType":"YulFunctionCall","src":"6424:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6414:6:92"},"nodeType":"YulFunctionCall","src":"6414:31:92"},"nodeType":"YulExpressionStatement","src":"6414:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6461:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"6464:4:92","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6454:6:92"},"nodeType":"YulFunctionCall","src":"6454:15:92"},"nodeType":"YulExpressionStatement","src":"6454:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6485:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6488:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6478:6:92"},"nodeType":"YulFunctionCall","src":"6478:15:92"},"nodeType":"YulExpressionStatement","src":"6478:15:92"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"6372:127:92"},{"body":{"nodeType":"YulBlock","src":"6600:899:92","statements":[{"body":{"nodeType":"YulBlock","src":"6646:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6655:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6658:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6648:6:92"},"nodeType":"YulFunctionCall","src":"6648:12:92"},"nodeType":"YulExpressionStatement","src":"6648:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"6621:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"6630:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6617:3:92"},"nodeType":"YulFunctionCall","src":"6617:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"6642:2:92","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6613:3:92"},"nodeType":"YulFunctionCall","src":"6613:32:92"},"nodeType":"YulIf","src":"6610:52:92"},{"nodeType":"YulAssignment","src":"6671:39:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6700:9:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"6681:18:92"},"nodeType":"YulFunctionCall","src":"6681:29:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"6671:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"6719:46:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6750:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6761:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6746:3:92"},"nodeType":"YulFunctionCall","src":"6746:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6733:12:92"},"nodeType":"YulFunctionCall","src":"6733:32:92"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"6723:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"6774:28:92","value":{"kind":"number","nodeType":"YulLiteral","src":"6784:18:92","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"6778:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"6829:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6838:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6841:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6831:6:92"},"nodeType":"YulFunctionCall","src":"6831:12:92"},"nodeType":"YulExpressionStatement","src":"6831:12:92"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"6817:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"6825:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6814:2:92"},"nodeType":"YulFunctionCall","src":"6814:14:92"},"nodeType":"YulIf","src":"6811:34:92"},{"nodeType":"YulVariableDeclaration","src":"6854:32:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6868:9:92"},{"name":"offset","nodeType":"YulIdentifier","src":"6879:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6864:3:92"},"nodeType":"YulFunctionCall","src":"6864:22:92"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"6858:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"6934:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6943:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6946:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6936:6:92"},"nodeType":"YulFunctionCall","src":"6936:12:92"},"nodeType":"YulExpressionStatement","src":"6936:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"6913:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"6917:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6909:3:92"},"nodeType":"YulFunctionCall","src":"6909:13:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"6924:7:92"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6905:3:92"},"nodeType":"YulFunctionCall","src":"6905:27:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"6898:6:92"},"nodeType":"YulFunctionCall","src":"6898:35:92"},"nodeType":"YulIf","src":"6895:55:92"},{"nodeType":"YulVariableDeclaration","src":"6959:26:92","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"6982:2:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6969:12:92"},"nodeType":"YulFunctionCall","src":"6969:16:92"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"6963:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"7008:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"7010:16:92"},"nodeType":"YulFunctionCall","src":"7010:18:92"},"nodeType":"YulExpressionStatement","src":"7010:18:92"}]},"condition":{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"7000:2:92"},{"name":"_1","nodeType":"YulIdentifier","src":"7004:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6997:2:92"},"nodeType":"YulFunctionCall","src":"6997:10:92"},"nodeType":"YulIf","src":"6994:36:92"},{"nodeType":"YulVariableDeclaration","src":"7039:17:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7053:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"7049:3:92"},"nodeType":"YulFunctionCall","src":"7049:7:92"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"7043:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"7065:23:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7085:2:92","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"7079:5:92"},"nodeType":"YulFunctionCall","src":"7079:9:92"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"7069:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"7097:71:92","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7119:6:92"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"7143:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"7147:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7139:3:92"},"nodeType":"YulFunctionCall","src":"7139:13:92"},{"name":"_4","nodeType":"YulIdentifier","src":"7154:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7135:3:92"},"nodeType":"YulFunctionCall","src":"7135:22:92"},{"kind":"number","nodeType":"YulLiteral","src":"7159:2:92","type":"","value":"63"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7131:3:92"},"nodeType":"YulFunctionCall","src":"7131:31:92"},{"name":"_4","nodeType":"YulIdentifier","src":"7164:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7127:3:92"},"nodeType":"YulFunctionCall","src":"7127:40:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7115:3:92"},"nodeType":"YulFunctionCall","src":"7115:53:92"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"7101:10:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"7227:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"7229:16:92"},"nodeType":"YulFunctionCall","src":"7229:18:92"},"nodeType":"YulExpressionStatement","src":"7229:18:92"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"7186:10:92"},{"name":"_1","nodeType":"YulIdentifier","src":"7198:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"7183:2:92"},"nodeType":"YulFunctionCall","src":"7183:18:92"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"7206:10:92"},{"name":"memPtr","nodeType":"YulIdentifier","src":"7218:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"7203:2:92"},"nodeType":"YulFunctionCall","src":"7203:22:92"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"7180:2:92"},"nodeType":"YulFunctionCall","src":"7180:46:92"},"nodeType":"YulIf","src":"7177:72:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7265:2:92","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"7269:10:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7258:6:92"},"nodeType":"YulFunctionCall","src":"7258:22:92"},"nodeType":"YulExpressionStatement","src":"7258:22:92"},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7296:6:92"},{"name":"_3","nodeType":"YulIdentifier","src":"7304:2:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7289:6:92"},"nodeType":"YulFunctionCall","src":"7289:18:92"},"nodeType":"YulExpressionStatement","src":"7289:18:92"},{"body":{"nodeType":"YulBlock","src":"7353:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7362:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7365:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7355:6:92"},"nodeType":"YulFunctionCall","src":"7355:12:92"},"nodeType":"YulExpressionStatement","src":"7355:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"7330:2:92"},{"name":"_3","nodeType":"YulIdentifier","src":"7334:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7326:3:92"},"nodeType":"YulFunctionCall","src":"7326:11:92"},{"kind":"number","nodeType":"YulLiteral","src":"7339:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7322:3:92"},"nodeType":"YulFunctionCall","src":"7322:20:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"7344:7:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"7319:2:92"},"nodeType":"YulFunctionCall","src":"7319:33:92"},"nodeType":"YulIf","src":"7316:53:92"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7395:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"7403:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7391:3:92"},"nodeType":"YulFunctionCall","src":"7391:15:92"},{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"7412:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"7416:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7408:3:92"},"nodeType":"YulFunctionCall","src":"7408:11:92"},{"name":"_3","nodeType":"YulIdentifier","src":"7421:2:92"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"7378:12:92"},"nodeType":"YulFunctionCall","src":"7378:46:92"},"nodeType":"YulExpressionStatement","src":"7378:46:92"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7448:6:92"},{"name":"_3","nodeType":"YulIdentifier","src":"7456:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7444:3:92"},"nodeType":"YulFunctionCall","src":"7444:15:92"},{"kind":"number","nodeType":"YulLiteral","src":"7461:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7440:3:92"},"nodeType":"YulFunctionCall","src":"7440:24:92"},{"kind":"number","nodeType":"YulLiteral","src":"7466:1:92","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7433:6:92"},"nodeType":"YulFunctionCall","src":"7433:35:92"},"nodeType":"YulExpressionStatement","src":"7433:35:92"},{"nodeType":"YulAssignment","src":"7477:16:92","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"7487:6:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"7477:6:92"}]}]},"name":"abi_decode_tuple_t_addresst_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6558:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"6569:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"6581:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"6589:6:92","type":""}],"src":"6504:995:92"},{"body":{"nodeType":"YulBlock","src":"7705:209:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7722:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7737:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"7745:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7733:3:92"},"nodeType":"YulFunctionCall","src":"7733:55:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7715:6:92"},"nodeType":"YulFunctionCall","src":"7715:74:92"},"nodeType":"YulExpressionStatement","src":"7715:74:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7809:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7820:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7805:3:92"},"nodeType":"YulFunctionCall","src":"7805:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"7825:2:92","type":"","value":"64"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7798:6:92"},"nodeType":"YulFunctionCall","src":"7798:30:92"},"nodeType":"YulExpressionStatement","src":"7798:30:92"},{"nodeType":"YulAssignment","src":"7837:71:92","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"7881:6:92"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7893:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7904:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7889:3:92"},"nodeType":"YulFunctionCall","src":"7889:18:92"}],"functionName":{"name":"abi_encode_struct_PreparedSetupData","nodeType":"YulIdentifier","src":"7845:35:92"},"nodeType":"YulFunctionCall","src":"7845:63:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7837:4:92"}]}]},"name":"abi_encode_tuple_t_address_t_struct$_PreparedSetupData_$14216_memory_ptr__to_t_address_t_struct$_PreparedSetupData_$14216_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7666:9:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"7677:6:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"7685:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7696:4:92","type":""}],"src":"7504:410:92"},{"body":{"nodeType":"YulBlock","src":"8034:125:92","statements":[{"nodeType":"YulAssignment","src":"8044:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8056:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8067:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8052:3:92"},"nodeType":"YulFunctionCall","src":"8052:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"8044:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8086:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"8101:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"8109:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8097:3:92"},"nodeType":"YulFunctionCall","src":"8097:55:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8079:6:92"},"nodeType":"YulFunctionCall","src":"8079:74:92"},"nodeType":"YulExpressionStatement","src":"8079:74:92"}]},"name":"abi_encode_tuple_t_contract$_IDAO_$10865__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8003:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"8014:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"8025:4:92","type":""}],"src":"7919:240:92"},{"body":{"nodeType":"YulBlock","src":"8196:95:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8213:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8220:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"8225:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"8216:3:92"},"nodeType":"YulFunctionCall","src":"8216:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8206:6:92"},"nodeType":"YulFunctionCall","src":"8206:31:92"},"nodeType":"YulExpressionStatement","src":"8206:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8253:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"8256:4:92","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8246:6:92"},"nodeType":"YulFunctionCall","src":"8246:15:92"},"nodeType":"YulExpressionStatement","src":"8246:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8277:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8280:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8270:6:92"},"nodeType":"YulFunctionCall","src":"8270:15:92"},"nodeType":"YulExpressionStatement","src":"8270:15:92"}]},"name":"panic_error_0x11","nodeType":"YulFunctionDefinition","src":"8164:127:92"},{"body":{"nodeType":"YulBlock","src":"8345:159:92","statements":[{"nodeType":"YulVariableDeclaration","src":"8355:52:92","value":{"kind":"number","nodeType":"YulLiteral","src":"8365:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"8359:2:92","type":""}]},{"nodeType":"YulAssignment","src":"8416:35:92","value":{"arguments":[{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"8432:1:92"},{"name":"_1","nodeType":"YulIdentifier","src":"8435:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8428:3:92"},"nodeType":"YulFunctionCall","src":"8428:10:92"},{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"8444:1:92"},{"name":"_1","nodeType":"YulIdentifier","src":"8447:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8440:3:92"},"nodeType":"YulFunctionCall","src":"8440:10:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"8424:3:92"},"nodeType":"YulFunctionCall","src":"8424:27:92"},"variableNames":[{"name":"diff","nodeType":"YulIdentifier","src":"8416:4:92"}]},{"body":{"nodeType":"YulBlock","src":"8476:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"8478:16:92"},"nodeType":"YulFunctionCall","src":"8478:18:92"},"nodeType":"YulExpressionStatement","src":"8478:18:92"}]},"condition":{"arguments":[{"name":"diff","nodeType":"YulIdentifier","src":"8466:4:92"},{"name":"_1","nodeType":"YulIdentifier","src":"8472:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"8463:2:92"},"nodeType":"YulFunctionCall","src":"8463:12:92"},"nodeType":"YulIf","src":"8460:38:92"}]},"name":"checked_sub_t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"8327:1:92","type":""},{"name":"y","nodeType":"YulTypedName","src":"8330:1:92","type":""}],"returnVariables":[{"name":"diff","nodeType":"YulTypedName","src":"8336:4:92","type":""}],"src":"8296:208:92"},{"body":{"nodeType":"YulBlock","src":"8541:95:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8558:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8565:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"8570:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"8561:3:92"},"nodeType":"YulFunctionCall","src":"8561:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8551:6:92"},"nodeType":"YulFunctionCall","src":"8551:31:92"},"nodeType":"YulExpressionStatement","src":"8551:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8598:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"8601:4:92","type":"","value":"0x32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8591:6:92"},"nodeType":"YulFunctionCall","src":"8591:15:92"},"nodeType":"YulExpressionStatement","src":"8591:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8622:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8625:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8615:6:92"},"nodeType":"YulFunctionCall","src":"8615:15:92"},"nodeType":"YulExpressionStatement","src":"8615:15:92"}]},"name":"panic_error_0x32","nodeType":"YulFunctionDefinition","src":"8509:127:92"},{"body":{"nodeType":"YulBlock","src":"8688:187:92","statements":[{"nodeType":"YulVariableDeclaration","src":"8698:52:92","value":{"kind":"number","nodeType":"YulLiteral","src":"8708:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"8702:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"8759:29:92","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8778:5:92"},{"name":"_1","nodeType":"YulIdentifier","src":"8785:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8774:3:92"},"nodeType":"YulFunctionCall","src":"8774:14:92"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"8763:7:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"8816:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"8818:16:92"},"nodeType":"YulFunctionCall","src":"8818:18:92"},"nodeType":"YulExpressionStatement","src":"8818:18:92"}]},"condition":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"8803:7:92"},{"name":"_1","nodeType":"YulIdentifier","src":"8812:2:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"8800:2:92"},"nodeType":"YulFunctionCall","src":"8800:15:92"},"nodeType":"YulIf","src":"8797:41:92"},{"nodeType":"YulAssignment","src":"8847:22:92","value":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"8858:7:92"},{"kind":"number","nodeType":"YulLiteral","src":"8867:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8854:3:92"},"nodeType":"YulFunctionCall","src":"8854:15:92"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"8847:3:92"}]}]},"name":"increment_t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"8670:5:92","type":""}],"returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"8680:3:92","type":""}],"src":"8641:234:92"},{"body":{"nodeType":"YulBlock","src":"9054:172:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9071:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9082:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9064:6:92"},"nodeType":"YulFunctionCall","src":"9064:21:92"},"nodeType":"YulExpressionStatement","src":"9064:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9105:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9116:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9101:3:92"},"nodeType":"YulFunctionCall","src":"9101:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"9121:2:92","type":"","value":"22"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9094:6:92"},"nodeType":"YulFunctionCall","src":"9094:30:92"},"nodeType":"YulExpressionStatement","src":"9094:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9144:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9155:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9140:3:92"},"nodeType":"YulFunctionCall","src":"9140:18:92"},{"hexValue":"455243313136373a20637265617465206661696c6564","kind":"string","nodeType":"YulLiteral","src":"9160:24:92","type":"","value":"ERC1167: create failed"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9133:6:92"},"nodeType":"YulFunctionCall","src":"9133:52:92"},"nodeType":"YulExpressionStatement","src":"9133:52:92"},{"nodeType":"YulAssignment","src":"9194:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9206:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9217:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9202:3:92"},"nodeType":"YulFunctionCall","src":"9202:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"9194:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_68ca40b61460257f14e69f48b1a4dbc812e9afc6932f127ef8084544457b3335__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9031:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"9045:4:92","type":""}],"src":"8880:346:92"},{"body":{"nodeType":"YulBlock","src":"9405:228:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9422:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9433:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9415:6:92"},"nodeType":"YulFunctionCall","src":"9415:21:92"},"nodeType":"YulExpressionStatement","src":"9415:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9456:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9467:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9452:3:92"},"nodeType":"YulFunctionCall","src":"9452:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"9472:2:92","type":"","value":"38"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9445:6:92"},"nodeType":"YulFunctionCall","src":"9445:30:92"},"nodeType":"YulExpressionStatement","src":"9445:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9495:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9506:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9491:3:92"},"nodeType":"YulFunctionCall","src":"9491:18:92"},{"hexValue":"416464726573733a20696e73756666696369656e742062616c616e636520666f","kind":"string","nodeType":"YulLiteral","src":"9511:34:92","type":"","value":"Address: insufficient balance fo"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9484:6:92"},"nodeType":"YulFunctionCall","src":"9484:62:92"},"nodeType":"YulExpressionStatement","src":"9484:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9566:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9577:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9562:3:92"},"nodeType":"YulFunctionCall","src":"9562:18:92"},{"hexValue":"722063616c6c","kind":"string","nodeType":"YulLiteral","src":"9582:8:92","type":"","value":"r call"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9555:6:92"},"nodeType":"YulFunctionCall","src":"9555:36:92"},"nodeType":"YulExpressionStatement","src":"9555:36:92"},{"nodeType":"YulAssignment","src":"9600:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9612:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9623:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9608:3:92"},"nodeType":"YulFunctionCall","src":"9608:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"9600:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9382:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"9396:4:92","type":""}],"src":"9231:402:92"},{"body":{"nodeType":"YulBlock","src":"9775:150:92","statements":[{"nodeType":"YulVariableDeclaration","src":"9785:27:92","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"9805:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"9799:5:92"},"nodeType":"YulFunctionCall","src":"9799:13:92"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"9789:6:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"9860:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"9868:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9856:3:92"},"nodeType":"YulFunctionCall","src":"9856:17:92"},{"name":"pos","nodeType":"YulIdentifier","src":"9875:3:92"},{"name":"length","nodeType":"YulIdentifier","src":"9880:6:92"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"9821:34:92"},"nodeType":"YulFunctionCall","src":"9821:66:92"},"nodeType":"YulExpressionStatement","src":"9821:66:92"},{"nodeType":"YulAssignment","src":"9896:23:92","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"9907:3:92"},{"name":"length","nodeType":"YulIdentifier","src":"9912:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9903:3:92"},"nodeType":"YulFunctionCall","src":"9903:16:92"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"9896:3:92"}]}]},"name":"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"9751:3:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"9756:6:92","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"9767:3:92","type":""}],"src":"9638:287:92"},{"body":{"nodeType":"YulBlock","src":"10104:179:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10121:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"10132:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10114:6:92"},"nodeType":"YulFunctionCall","src":"10114:21:92"},"nodeType":"YulExpressionStatement","src":"10114:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10155:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"10166:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10151:3:92"},"nodeType":"YulFunctionCall","src":"10151:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"10171:2:92","type":"","value":"29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10144:6:92"},"nodeType":"YulFunctionCall","src":"10144:30:92"},"nodeType":"YulExpressionStatement","src":"10144:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10194:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"10205:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10190:3:92"},"nodeType":"YulFunctionCall","src":"10190:18:92"},{"hexValue":"416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374","kind":"string","nodeType":"YulLiteral","src":"10210:31:92","type":"","value":"Address: call to non-contract"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10183:6:92"},"nodeType":"YulFunctionCall","src":"10183:59:92"},"nodeType":"YulExpressionStatement","src":"10183:59:92"},{"nodeType":"YulAssignment","src":"10251:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10263:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"10274:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10259:3:92"},"nodeType":"YulFunctionCall","src":"10259:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"10251:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"10081:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"10095:4:92","type":""}],"src":"9930:353:92"},{"body":{"nodeType":"YulBlock","src":"10409:98:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10426:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"10437:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10419:6:92"},"nodeType":"YulFunctionCall","src":"10419:21:92"},"nodeType":"YulExpressionStatement","src":"10419:21:92"},{"nodeType":"YulAssignment","src":"10449:52:92","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"10474:6:92"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10486:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"10497:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10482:3:92"},"nodeType":"YulFunctionCall","src":"10482:18:92"}],"functionName":{"name":"abi_encode_bytes","nodeType":"YulIdentifier","src":"10457:16:92"},"nodeType":"YulFunctionCall","src":"10457:44:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"10449:4:92"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"10378:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"10389:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"10400:4:92","type":""}],"src":"10288:219:92"}]},"contents":"{\n { }\n function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n if iszero(eq(value, and(value, shl(224, 0xffffffff)))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 96)\n let pos := headStart\n pos := headStart\n let srcPtr := value0\n let i := 0\n for { } lt(i, 0x03) { i := add(i, 1) }\n {\n mstore(pos, and(mload(srcPtr), 0xff))\n let _1 := 0x20\n pos := add(pos, _1)\n srcPtr := add(srcPtr, _1)\n }\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_decode_address(offset) -> value\n {\n value := calldataload(offset)\n if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n }\n function abi_decode_struct_SetupPayload_calldata(offset, end) -> value\n {\n if slt(sub(end, offset), 96) { revert(0, 0) }\n value := offset\n }\n function abi_decode_tuple_t_addresst_struct$_SetupPayload_$14224_calldata_ptr(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n let offset := calldataload(add(headStart, 32))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n value1 := abi_decode_struct_SetupPayload_calldata(add(headStart, offset), dataEnd)\n }\n function panic_error_0x21()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x21)\n revert(0, 0x24)\n }\n function abi_encodeUpdatedPos_struct_MultiTargetPermission(value0, pos) -> updatedPos\n {\n let _1 := mload(value0)\n if iszero(lt(_1, 3))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x21)\n revert(0, 0x24)\n }\n mstore(pos, _1)\n let memberValue0 := mload(add(value0, 0x20))\n let _2 := 0xffffffffffffffffffffffffffffffffffffffff\n mstore(add(pos, 0x20), and(memberValue0, _2))\n mstore(add(pos, 0x40), and(mload(add(value0, 0x40)), _2))\n mstore(add(pos, 0x60), and(mload(add(value0, 0x60)), _2))\n mstore(add(pos, 0x80), mload(add(value0, 0x80)))\n updatedPos := add(pos, 0xa0)\n }\n function abi_encode_tuple_t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n let _1 := 32\n let tail_1 := add(headStart, _1)\n mstore(headStart, _1)\n let pos := tail_1\n let length := mload(value0)\n mstore(tail_1, length)\n pos := add(headStart, 64)\n let srcPtr := add(value0, _1)\n let i := 0\n for { } lt(i, length) { i := add(i, 1) }\n {\n pos := abi_encodeUpdatedPos_struct_MultiTargetPermission(mload(srcPtr), pos)\n srcPtr := add(srcPtr, _1)\n }\n tail := pos\n }\n function abi_decode_tuple_t_addresst_uint16t_struct$_SetupPayload_$14224_calldata_ptr(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n let value := calldataload(add(headStart, 32))\n if iszero(eq(value, and(value, 0xffff))) { revert(0, 0) }\n value1 := value\n let offset := calldataload(add(headStart, 64))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n value2 := abi_decode_struct_SetupPayload_calldata(add(headStart, offset), dataEnd)\n }\n function copy_memory_to_memory_with_cleanup(src, dst, length)\n {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n mstore(add(dst, length), 0)\n }\n function abi_encode_bytes(value, pos) -> end\n {\n let length := mload(value)\n mstore(pos, length)\n copy_memory_to_memory_with_cleanup(add(value, 0x20), add(pos, 0x20), length)\n end := add(add(pos, and(add(length, 31), not(31))), 0x20)\n }\n function abi_encode_struct_PreparedSetupData(value, pos) -> end\n {\n let tail := add(pos, 0x40)\n let memberValue0 := mload(value)\n mstore(pos, 0x40)\n let pos_1 := tail\n let length := mload(memberValue0)\n mstore(tail, length)\n pos_1 := add(pos, 96)\n let _1 := 0x20\n let srcPtr := add(memberValue0, _1)\n let i := 0\n for { } lt(i, length) { i := add(i, 1) }\n {\n mstore(pos_1, and(mload(srcPtr), 0xffffffffffffffffffffffffffffffffffffffff))\n pos_1 := add(pos_1, _1)\n srcPtr := add(srcPtr, _1)\n }\n let memberValue0_1 := mload(add(value, _1))\n mstore(add(pos, _1), sub(pos_1, pos))\n let pos_2 := pos_1\n let length_1 := mload(memberValue0_1)\n mstore(pos_1, length_1)\n pos_2 := add(pos_1, _1)\n let srcPtr_1 := add(memberValue0_1, _1)\n let i_1 := 0\n for { } lt(i_1, length_1) { i_1 := add(i_1, 1) }\n {\n pos_2 := abi_encodeUpdatedPos_struct_MultiTargetPermission(mload(srcPtr_1), pos_2)\n srcPtr_1 := add(srcPtr_1, _1)\n }\n end := pos_2\n }\n function abi_encode_tuple_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$14216_memory_ptr__to_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$14216_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n {\n mstore(headStart, 64)\n let tail_1 := abi_encode_bytes(value0, add(headStart, 64))\n mstore(add(headStart, 32), sub(tail_1, headStart))\n tail := abi_encode_struct_PreparedSetupData(value1, tail_1)\n }\n function panic_error_0x41()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function abi_decode_tuple_t_addresst_bytes_memory_ptr(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n let offset := calldataload(add(headStart, 32))\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n let _2 := add(headStart, offset)\n if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n let _3 := calldataload(_2)\n if gt(_3, _1) { panic_error_0x41() }\n let _4 := not(31)\n let memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n mstore(memPtr, _3)\n if gt(add(add(_2, _3), 32), dataEnd) { revert(0, 0) }\n calldatacopy(add(memPtr, 32), add(_2, 32), _3)\n mstore(add(add(memPtr, _3), 32), 0)\n value1 := memPtr\n }\n function abi_encode_tuple_t_address_t_struct$_PreparedSetupData_$14216_memory_ptr__to_t_address_t_struct$_PreparedSetupData_$14216_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n {\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n mstore(add(headStart, 32), 64)\n tail := abi_encode_struct_PreparedSetupData(value1, add(headStart, 64))\n }\n function abi_encode_tuple_t_contract$_IDAO_$10865__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function panic_error_0x11()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n function checked_sub_t_uint160(x, y) -> diff\n {\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n diff := sub(and(x, _1), and(y, _1))\n if gt(diff, _1) { panic_error_0x11() }\n }\n function panic_error_0x32()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n function increment_t_uint160(value) -> ret\n {\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n let value_1 := and(value, _1)\n if eq(value_1, _1) { panic_error_0x11() }\n ret := add(value_1, 1)\n }\n function abi_encode_tuple_t_stringliteral_68ca40b61460257f14e69f48b1a4dbc812e9afc6932f127ef8084544457b3335__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 22)\n mstore(add(headStart, 64), \"ERC1167: create failed\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 38)\n mstore(add(headStart, 64), \"Address: insufficient balance fo\")\n mstore(add(headStart, 96), \"r call\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n {\n let length := mload(value0)\n copy_memory_to_memory_with_cleanup(add(value0, 0x20), pos, length)\n end := add(pos, length)\n }\n function abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 29)\n mstore(add(headStart, 64), \"Address: call to non-contract\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n mstore(headStart, 32)\n tail := abi_encode_bytes(value0, add(headStart, 32))\n }\n}","id":92,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{"14293":[{"length":32,"start":193},{"length":32,"start":664}]},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100725760003560e01c80639cb0a124116100505780639cb0a124146100eb578063a8a9c29e1461010b578063f10832f11461012c57600080fd5b806301ffc9a7146100775780632ae9c6001461009f5780635c60da1b146100b4575b600080fd5b61008a6100853660046107fe565b61014d565b60405190151581526020015b60405180910390f35b6100a761019e565b6040516100969190610828565b6040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152602001610096565b6100fe6100f9366004610885565b6101c8565b604051610096919061094f565b61011e610119366004610998565b6101df565b604051610096929190610ae2565b61013f61013a366004610b26565b610217565b604051610096929190610be8565b60006001600160e01b0319821663099718b560e41b148061017d57506001600160e01b03198216621574e360e91b145b8061019857506301ffc9a760e01b6001600160e01b03198316145b92915050565b6101a66107e0565b5060408051606081018252600181526004602082015260009181019190915290565b60606101d86000600260016102f3565b9392505050565b60606101fe604051806040016040528060608152602001606081525090565b60405163a112810160e01b815260040160405180910390fd5b6000610236604051806040016040528060608152602001606081525090565b6040516001600160a01b038516602482015260009060440160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663189acdbd60e31b17905290506102c9816102ba7f000000000000000000000000000000000000000000000000000000000000000090565b6001600160a01b031690610478565b92506102d560026104b0565b82526102e460006002816102f3565b60208301525090939092509050565b6060826001600160a01b0316846001600160a01b0316111561032857604051633a4013cd60e21b815260040160405180910390fd5b6103328484610c20565b6001600160a01b031667ffffffffffffffff81111561035357610353610b10565b6040519080825280602002602001820160405280156103ac57816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282526000199092019101816103715790505b509050835b836001600160a01b0316816001600160a01b03161015610470576040518060a001604052808460028111156103e8576103e86108d3565b81526001600160a01b038316602082018190526040820152600060608201527fa280eec51ab8e1bc4b6b0c1b7f1bde785761b787a49db404e3e9338ed9b016ef608090910152826104398784610c20565b6001600160a01b03168151811061045257610452610c40565b6020026020010181905250808061046890610c56565b9150506103b1565b509392505050565b600061048c836001600160a01b0316610569565b825190915015610198576104a96001600160a01b0382168361060f565b5092915050565b6060816001600160a01b031667ffffffffffffffff8111156104d4576104d4610b10565b6040519080825280602002602001820160405280156104fd578160200160208202803683370190505b50905060005b826001600160a01b0316816001600160a01b03161015610563578082826001600160a01b03168151811061053957610539610c40565b6001600160a01b03909216602092830291909101909101528061055b81610c56565b915050610503565b50919050565b6000763d602d80600a3d3981f3363d3d373d3d3d363d730000008260601b60e81c176000526e5af43d82803e903d91602b57fd5bf38260781b17602052603760096000f090506001600160a01b03811661060a5760405162461bcd60e51b815260206004820152601660248201527f455243313136373a20637265617465206661696c65640000000000000000000060448201526064015b60405180910390fd5b919050565b60606101d8838360006040518060400160405280601e81526020017f416464726573733a206c6f772d6c6576656c2063616c6c206661696c656400008152506060824710156106c65760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610601565b600080866001600160a01b031685876040516106e29190610c7c565b60006040518083038185875af1925050503d806000811461071f576040519150601f19603f3d011682016040523d82523d6000602084013e610724565b606091505b509150915061073587838387610742565b925050505b949350505050565b606083156107b15782516000036107aa576001600160a01b0385163b6107aa5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610601565b508161073a565b61073a83838151156107c65781518083602001fd5b8060405162461bcd60e51b81526004016106019190610c98565b60405180606001604052806003906020820280368337509192915050565b60006020828403121561081057600080fd5b81356001600160e01b0319811681146101d857600080fd5b60608101818360005b600381101561085357815160ff16835260209283019290910190600101610831565b50505092915050565b80356001600160a01b038116811461060a57600080fd5b60006060828403121561056357600080fd5b6000806040838503121561089857600080fd5b6108a18361085c565b9150602083013567ffffffffffffffff8111156108bd57600080fd5b6108c985828601610873565b9150509250929050565b634e487b7160e01b600052602160045260246000fd5b600081516003811061090b57634e487b7160e01b600052602160045260246000fd5b8352506020818101516001600160a01b0390811691840191909152604080830151821690840152606080830151909116908301526080908101519082015260a00190565b6020808252825182820181905260009190848201906040850190845b8181101561098c5761097e8385516108e9565b93850193925060010161096b565b50909695505050505050565b6000806000606084860312156109ad57600080fd5b6109b68461085c565b9250602084013561ffff811681146109cd57600080fd5b9150604084013567ffffffffffffffff8111156109e957600080fd5b6109f586828701610873565b9150509250925092565b60005b83811015610a1a578181015183820152602001610a02565b50506000910152565b60008151808452610a3b8160208601602086016109ff565b601f01601f19169290920160200192915050565b805160408084528151908401819052600091602091908201906060860190845b81811015610a945783516001600160a01b031683529284019291840191600101610a6f565b50508483015186820387850152805180835290840192506000918401905b80831015610ad757610ac58285516108e9565b91508484019350600183019250610ab2565b509695505050505050565b604081526000610af56040830185610a23565b8281036020840152610b078185610a4f565b95945050505050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215610b3957600080fd5b610b428361085c565b9150602083013567ffffffffffffffff80821115610b5f57600080fd5b818501915085601f830112610b7357600080fd5b813581811115610b8557610b85610b10565b604051601f8201601f19908116603f01168101908382118183101715610bad57610bad610b10565b81604052828152886020848701011115610bc657600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6001600160a01b038316815260406020820152600061073a6040830184610a4f565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b038281168282160390808211156104a9576104a9610c0a565b634e487b7160e01b600052603260045260246000fd5b60006001600160a01b03808316818103610c7257610c72610c0a565b6001019392505050565b60008251610c8e8184602087016109ff565b9190910192915050565b6020815260006101d86020830184610a2356fea164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x72 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9CB0A124 GT PUSH2 0x50 JUMPI DUP1 PUSH4 0x9CB0A124 EQ PUSH2 0xEB JUMPI DUP1 PUSH4 0xA8A9C29E EQ PUSH2 0x10B JUMPI DUP1 PUSH4 0xF10832F1 EQ PUSH2 0x12C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x77 JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0x9F JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0xB4 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8A PUSH2 0x85 CALLDATASIZE PUSH1 0x4 PUSH2 0x7FE JUMP JUMPDEST PUSH2 0x14D JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xA7 PUSH2 0x19E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x96 SWAP2 SWAP1 PUSH2 0x828 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x96 JUMP JUMPDEST PUSH2 0xFE PUSH2 0xF9 CALLDATASIZE PUSH1 0x4 PUSH2 0x885 JUMP JUMPDEST PUSH2 0x1C8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x96 SWAP2 SWAP1 PUSH2 0x94F JUMP JUMPDEST PUSH2 0x11E PUSH2 0x119 CALLDATASIZE PUSH1 0x4 PUSH2 0x998 JUMP JUMPDEST PUSH2 0x1DF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x96 SWAP3 SWAP2 SWAP1 PUSH2 0xAE2 JUMP JUMPDEST PUSH2 0x13F PUSH2 0x13A CALLDATASIZE PUSH1 0x4 PUSH2 0xB26 JUMP JUMPDEST PUSH2 0x217 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x96 SWAP3 SWAP2 SWAP1 PUSH2 0xBE8 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x99718B5 PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x17D JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x198 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1A6 PUSH2 0x7E0 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1D8 PUSH1 0x0 PUSH1 0x2 PUSH1 0x1 PUSH2 0x2F3 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1FE PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xA1128101 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x236 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 PUSH1 0x44 ADD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x189ACDBD PUSH1 0xE3 SHL OR SWAP1 MSTORE SWAP1 POP PUSH2 0x2C9 DUP2 PUSH2 0x2BA PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH2 0x478 JUMP JUMPDEST SWAP3 POP PUSH2 0x2D5 PUSH1 0x2 PUSH2 0x4B0 JUMP JUMPDEST DUP3 MSTORE PUSH2 0x2E4 PUSH1 0x0 PUSH1 0x2 DUP2 PUSH2 0x2F3 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP SWAP1 SWAP4 SWAP1 SWAP3 POP SWAP1 POP JUMP JUMPDEST PUSH1 0x60 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH2 0x328 JUMPI PUSH1 0x40 MLOAD PUSH4 0x3A4013CD PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x332 DUP5 DUP5 PUSH2 0xC20 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x353 JUMPI PUSH2 0x353 PUSH2 0xB10 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x3AC JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD DUP3 SWAP1 MSTORE SWAP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 DUP3 ADD MSTORE DUP3 MSTORE PUSH1 0x0 NOT SWAP1 SWAP3 ADD SWAP2 ADD DUP2 PUSH2 0x371 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP DUP4 JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT ISZERO PUSH2 0x470 JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 DUP5 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x3E8 JUMPI PUSH2 0x3E8 PUSH2 0x8D3 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x60 DUP3 ADD MSTORE PUSH32 0xA280EEC51AB8E1BC4B6B0C1B7F1BDE785761B787A49DB404E3E9338ED9B016EF PUSH1 0x80 SWAP1 SWAP2 ADD MSTORE DUP3 PUSH2 0x439 DUP8 DUP5 PUSH2 0xC20 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MLOAD DUP2 LT PUSH2 0x452 JUMPI PUSH2 0x452 PUSH2 0xC40 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP DUP1 DUP1 PUSH2 0x468 SWAP1 PUSH2 0xC56 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x3B1 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x48C DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x569 JUMP JUMPDEST DUP3 MLOAD SWAP1 SWAP2 POP ISZERO PUSH2 0x198 JUMPI PUSH2 0x4A9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP4 PUSH2 0x60F JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x4D4 JUMPI PUSH2 0x4D4 PUSH2 0xB10 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x4FD JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT ISZERO PUSH2 0x563 JUMPI DUP1 DUP3 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MLOAD DUP2 LT PUSH2 0x539 JUMPI PUSH2 0x539 PUSH2 0xC40 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE DUP1 PUSH2 0x55B DUP2 PUSH2 0xC56 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x503 JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH23 0x3D602D80600A3D3981F3363D3D373D3D3D363D73000000 DUP3 PUSH1 0x60 SHL PUSH1 0xE8 SHR OR PUSH1 0x0 MSTORE PUSH15 0x5AF43D82803E903D91602B57FD5BF3 DUP3 PUSH1 0x78 SHL OR PUSH1 0x20 MSTORE PUSH1 0x37 PUSH1 0x9 PUSH1 0x0 CREATE SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x60A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313136373A20637265617465206661696C656400000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1D8 DUP4 DUP4 PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x416464726573733A206C6F772D6C6576656C2063616C6C206661696C65640000 DUP2 MSTORE POP PUSH1 0x60 DUP3 SELFBALANCE LT ISZERO PUSH2 0x6C6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A20696E73756666696369656E742062616C616E636520666F PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x722063616C6C0000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x601 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP8 PUSH1 0x40 MLOAD PUSH2 0x6E2 SWAP2 SWAP1 PUSH2 0xC7C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x71F JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x724 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x735 DUP8 DUP4 DUP4 DUP8 PUSH2 0x742 JUMP JUMPDEST SWAP3 POP POP POP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x7B1 JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0x7AA JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0x7AA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x601 JUMP JUMPDEST POP DUP2 PUSH2 0x73A JUMP JUMPDEST PUSH2 0x73A DUP4 DUP4 DUP2 MLOAD ISZERO PUSH2 0x7C6 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x601 SWAP2 SWAP1 PUSH2 0xC98 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x810 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x1D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0x853 JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x831 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x60A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x563 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x898 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8A1 DUP4 PUSH2 0x85C JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x8BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8C9 DUP6 DUP3 DUP7 ADD PUSH2 0x873 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP2 MLOAD PUSH1 0x3 DUP2 LT PUSH2 0x90B JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP4 MSTORE POP PUSH1 0x20 DUP2 DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP1 DUP4 ADD MLOAD DUP3 AND SWAP1 DUP5 ADD MSTORE PUSH1 0x60 DUP1 DUP4 ADD MLOAD SWAP1 SWAP2 AND SWAP1 DUP4 ADD MSTORE PUSH1 0x80 SWAP1 DUP2 ADD MLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x98C JUMPI PUSH2 0x97E DUP4 DUP6 MLOAD PUSH2 0x8E9 JUMP JUMPDEST SWAP4 DUP6 ADD SWAP4 SWAP3 POP PUSH1 0x1 ADD PUSH2 0x96B JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x9AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9B6 DUP5 PUSH2 0x85C JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH2 0x9CD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x9E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9F5 DUP7 DUP3 DUP8 ADD PUSH2 0x873 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xA1A JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xA02 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0xA3B DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x9FF JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x40 DUP1 DUP5 MSTORE DUP2 MLOAD SWAP1 DUP5 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x20 SWAP2 SWAP1 DUP3 ADD SWAP1 PUSH1 0x60 DUP7 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xA94 JUMPI DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0xA6F JUMP JUMPDEST POP POP DUP5 DUP4 ADD MLOAD DUP7 DUP3 SUB DUP8 DUP6 ADD MSTORE DUP1 MLOAD DUP1 DUP4 MSTORE SWAP1 DUP5 ADD SWAP3 POP PUSH1 0x0 SWAP2 DUP5 ADD SWAP1 JUMPDEST DUP1 DUP4 LT ISZERO PUSH2 0xAD7 JUMPI PUSH2 0xAC5 DUP3 DUP6 MLOAD PUSH2 0x8E9 JUMP JUMPDEST SWAP2 POP DUP5 DUP5 ADD SWAP4 POP PUSH1 0x1 DUP4 ADD SWAP3 POP PUSH2 0xAB2 JUMP JUMPDEST POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 PUSH2 0xAF5 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0xA23 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0xB07 DUP2 DUP6 PUSH2 0xA4F JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xB39 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB42 DUP4 PUSH2 0x85C JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xB5F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xB73 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0xB85 JUMPI PUSH2 0xB85 PUSH2 0xB10 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0xBAD JUMPI PUSH2 0xBAD PUSH2 0xB10 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0xBC6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0x73A PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0xA4F JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND DUP3 DUP3 AND SUB SWAP1 DUP1 DUP3 GT ISZERO PUSH2 0x4A9 JUMPI PUSH2 0x4A9 PUSH2 0xC0A JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND DUP2 DUP2 SUB PUSH2 0xC72 JUMPI PUSH2 0xC72 PUSH2 0xC0A JUMP JUMPDEST PUSH1 0x1 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0xC8E DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x9FF JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x1D8 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0xA23 JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"2043:1127:49:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2112:293:82;;;;;;:::i;:::-;;:::i;:::-;;;470:14:92;;463:22;445:41;;433:2;418:18;2112:293:82;;;;;;;;631:98:90;;;:::i;:::-;;;;;;;:::i;2444:94:82:-;;;-1:-1:-1;;;;;2517:14:82;1167:55:92;1149:74;;1137:2;1122:18;2444:94:82;1003:226:92;2869:299:49;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1639:265:82:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;2292:538:49:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;2112:293:82:-;2198:4;-1:-1:-1;;;;;;2233:46:82;;-1:-1:-1;;;2233:46:82;;:112;;-1:-1:-1;;;;;;;2295:50:82;;-1:-1:-1;;;2295:50:82;2233:112;:165;;;-1:-1:-1;;;;;;;;;;937:40:38;;;2361:37:82;2214:184;2112:293;-1:-1:-1;;2112:293:82:o;631:98:90:-;679:15;;:::i;:::-;-1:-1:-1;706:16:90;;;;;;;;714:1;706:16;;717:1;706:16;;;;-1:-1:-1;706:16:90;;;;;;;;631:98::o;2869:299:49:-;2991:56;3099:62;3115:1;2175;3130:30;3099:15;:62::i;:::-;3085:76;2869:299;-1:-1:-1;;;2869:299:49:o;1639:265:82:-;1780:12;1794:24;-1:-1:-1;;;;;;;;;;;;;;;;;;;1794:24:82;1875:22;;-1:-1:-1;;;1875:22:82;;;;;;;;;;;2292:538:49;2389:14;2405:42;-1:-1:-1;;;;;;;;;;;;;;;;;;;2405:42:49;2483:66;;-1:-1:-1;;;;;1167:55:92;;2483:66:49;;;1149:74:92;2459:21:49;;1122:18:92;;2483:66:49;;;-1:-1:-1;;2483:66:49;;;;;;;;;;;;;;;;-1:-1:-1;;;2483:66:49;;;;-1:-1:-1;2568:45:49;2483:66;2568:16;2517:14:82;;2444:94;2568:16:49;-1:-1:-1;;;;;2568:35:49;;;:45::i;:::-;2559:54;-1:-1:-1;2651:23:49;2175:1;2651:11;:23::i;:::-;2623:51;;2716:107;2623:25;2175:1;2623:25;2716:15;:107::i;:::-;2684:29;;;:139;-1:-1:-1;2292:538:49;;2684:17;;-1:-1:-1;2292:538:49;-1:-1:-1;2292:538:49:o;580:666:52:-;699:56;780:8;-1:-1:-1;;;;;767:21:52;:10;-1:-1:-1;;;;;767:21:52;;763:53;;;797:19;;-1:-1:-1;;;797:19:52;;;;;;;;;;;763:53;879:21;890:10;879:8;:21;:::i;:::-;-1:-1:-1;;;;;837:64:52;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;837:64:52;;-1:-1:-1;;837:64:52;;;;;;;;;;;-1:-1:-1;823:78:52;-1:-1:-1;925:10:52;908:336;941:8;-1:-1:-1;;;;;937:12:52;:1;-1:-1:-1;;;;;937:12:52;;908:336;;;996:241;;;;;;;;1057:2;996:241;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;996:241:52;;;;;;;;;;;;-1:-1:-1;996:241:52;;;;1198:28;996:241;;;;;966:11;978:14;982:10;1088:1;978:14;:::i;:::-;-1:-1:-1;;;;;966:27:52;;;;;;;;;:::i;:::-;;;;;;:271;;;;951:3;;;;;:::i;:::-;;;;908:336;;;;580:666;;;;;:::o;2237:292:85:-;2349:20;2396:14;:6;-1:-1:-1;;;;;2396:12:85;;:14::i;:::-;2424:20;;2381:29;;-1:-1:-1;2424:24:85;2420:103;;2464:48;-1:-1:-1;;;;;2464:25:85;;2497:13;2464:25;:48::i;:::-;;2237:292;;;;:::o;1529:191:52:-;1577:24;1633:3;-1:-1:-1;;;;;1619:18:52;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1619:18:52;;1609:28;;1649:9;1644:74;1668:3;-1:-1:-1;;;;;1664:7:52;:1;-1:-1:-1;;;;;1664:7:52;;1644:74;;;1709:1;1688:7;1696:1;-1:-1:-1;;;;;1688:10:52;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1688:23:52;;;:10;;;;;;;;;;;:23;1673:3;;;;:::i;:::-;;;;1644:74;;;;1529:191;;;:::o;973:759:17:-;1030:16;1362:48;1344:14;1338:4;1334:25;1328:4;1324:36;1321:90;1315:4;1308:104;1569:32;1552:14;1546:4;1542:25;1539:63;1533:4;1526:77;1644:4;1638;1635:1;1628:21;1616:33;-1:-1:-1;;;;;;1676:22:17;;1668:57;;;;-1:-1:-1;;;1668:57:17;;9082:2:92;1668:57:17;;;9064:21:92;9121:2;9101:18;;;9094:30;9160:24;9140:18;;;9133:52;9202:18;;1668:57:17;;;;;;;;;973:759;;;:::o;3701:185:33:-;3776:12;3807:72;3829:6;3837:4;3843:1;3807:72;;;;;;;;;;;;;;;;;5330:12;5387:5;5362:21;:30;;5354:81;;;;-1:-1:-1;;;5354:81:33;;9433:2:92;5354:81:33;;;9415:21:92;9472:2;9452:18;;;9445:30;9511:34;9491:18;;;9484:62;9582:8;9562:18;;;9555:36;9608:19;;5354:81:33;9231:402:92;5354:81:33;5446:12;5460:23;5487:6;-1:-1:-1;;;;;5487:11:33;5506:5;5513:4;5487:31;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5445:73;;;;5535:69;5562:6;5570:7;5579:10;5591:12;5535:26;:69::i;:::-;5528:76;;;;5165:446;;;;;;;:::o;7671:628::-;7851:12;7879:7;7875:418;;;7906:10;:17;7927:1;7906:22;7902:286;;-1:-1:-1;;;;;1702:19:33;;;8113:60;;;;-1:-1:-1;;;8113:60:33;;10132:2:92;8113:60:33;;;10114:21:92;10171:2;10151:18;;;10144:30;10210:31;10190:18;;;10183:59;10259:18;;8113:60:33;9930:353:92;8113:60:33;-1:-1:-1;8208:10:33;8201:17;;7875:418;8249:33;8257:10;8269:12;8980:17;;:21;8976:379;;9208:10;9202:17;9264:15;9251:10;9247:2;9243:19;9236:44;8976:379;9331:12;9324:20;;-1:-1:-1;;;9324:20:33;;;;;;;;:::i;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:286:92:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:92;;209:43;;199:71;;266:1;263;256:12;497:501;673:2;658:18;;662:9;753:6;631:4;787:205;801:4;798:1;795:11;787:205;;;864:13;;879:4;860:24;848:37;;908:4;932:12;;;;967:15;;;;821:1;814:9;787:205;;;791:3;;;497:501;;;;:::o;1234:196::-;1302:20;;-1:-1:-1;;;;;1351:54:92;;1341:65;;1331:93;;1420:1;1417;1410:12;1435:160;1500:5;1545:2;1536:6;1531:3;1527:16;1523:25;1520:45;;;1561:1;1558;1551:12;1600:441;1701:6;1709;1762:2;1750:9;1741:7;1737:23;1733:32;1730:52;;;1778:1;1775;1768:12;1730:52;1801:29;1820:9;1801:29;:::i;:::-;1791:39;;1881:2;1870:9;1866:18;1853:32;1908:18;1900:6;1897:30;1894:50;;;1940:1;1937;1930:12;1894:50;1963:72;2027:7;2018:6;2007:9;2003:22;1963:72;:::i;:::-;1953:82;;;1600:441;;;;;:::o;2046:127::-;2107:10;2102:3;2098:20;2095:1;2088:31;2138:4;2135:1;2128:15;2162:4;2159:1;2152:15;2178:696;2253:10;2294:6;2288:13;2327:1;2323:2;2320:9;2310:140;;2372:10;2367:3;2363:20;2360:1;2353:31;2407:4;2404:1;2397:15;2435:4;2432:1;2425:15;2310:140;2459:15;;-1:-1:-1;2521:4:92;2509:17;;;2503:24;-1:-1:-1;;;;;2620:21:92;;;2604:14;;;2597:45;;;;2696:4;2684:17;;;2678:24;2674:33;;2658:14;;;2651:57;2762:4;2750:17;;;2744:24;2740:33;;;2724:14;;;2717:57;2824:4;2812:17;;;2806:24;2790:14;;;2783:48;2863:4;2854:14;;2178:696::o;2879:730::-;3130:2;3182:21;;;3252:13;;3155:18;;;3274:22;;;3101:4;;3130:2;3353:15;;;;3327:2;3312:18;;;3101:4;3396:187;3410:6;3407:1;3404:13;3396:187;;;3466:69;3531:3;3522:6;3516:13;3466:69;:::i;:::-;3558:15;;;;3459:76;-1:-1:-1;3432:1:92;3425:9;3396:187;;;-1:-1:-1;3600:3:92;;2879:730;-1:-1:-1;;;;;;2879:730:92:o;3614:601::-;3723:6;3731;3739;3792:2;3780:9;3771:7;3767:23;3763:32;3760:52;;;3808:1;3805;3798:12;3760:52;3831:29;3850:9;3831:29;:::i;:::-;3821:39;;3910:2;3899:9;3895:18;3882:32;3954:6;3947:5;3943:18;3936:5;3933:29;3923:57;;3976:1;3973;3966:12;3923:57;3999:5;-1:-1:-1;4055:2:92;4040:18;;4027:32;4082:18;4071:30;;4068:50;;;4114:1;4111;4104:12;4068:50;4137:72;4201:7;4192:6;4181:9;4177:22;4137:72;:::i;:::-;4127:82;;;3614:601;;;;;:::o;4220:250::-;4305:1;4315:113;4329:6;4326:1;4323:13;4315:113;;;4405:11;;;4399:18;4386:11;;;4379:39;4351:2;4344:10;4315:113;;;-1:-1:-1;;4462:1:92;4444:16;;4437:27;4220:250::o;4475:270::-;4516:3;4554:5;4548:12;4581:6;4576:3;4569:19;4597:76;4666:6;4659:4;4654:3;4650:14;4643:4;4636:5;4632:16;4597:76;:::i;:::-;4727:2;4706:15;-1:-1:-1;;4702:29:92;4693:39;;;;4734:4;4689:50;;4475:270;-1:-1:-1;;4475:270:92:o;4750:1162::-;4883:12;;4849:4;4904:17;;;4970:19;;4840:14;;;4998:20;;;4810:3;;5067:4;;5094:21;;;;5045:2;5036:12;;;4810:3;5143:224;5157:6;5154:1;5151:13;5143:224;;;5224:13;;-1:-1:-1;;;;;5220:62:92;5206:77;;5342:15;;;;5305:14;;;;5179:1;5172:9;5143:224;;;-1:-1:-1;;5404:14:92;;;5398:21;5449:15;;;5435:12;;;5428:37;5517:21;;5547:23;;;5627;;;;-1:-1:-1;5670:1:92;;5588:14;;;5680:205;5696:8;5691:3;5688:17;5680:205;;;5760:73;5827:5;5816:8;5810:15;5760:73;:::i;:::-;5751:82;;5872:2;5862:8;5858:17;5846:29;;5724:1;5719:3;5715:11;5708:18;;5680:205;;;-1:-1:-1;5901:5:92;4750:1162;-1:-1:-1;;;;;;4750:1162:92:o;5917:450::-;6164:2;6153:9;6146:21;6127:4;6190:44;6230:2;6219:9;6215:18;6207:6;6190:44;:::i;:::-;6282:9;6274:6;6270:22;6265:2;6254:9;6250:18;6243:50;6310:51;6354:6;6346;6310:51;:::i;:::-;6302:59;5917:450;-1:-1:-1;;;;;5917:450:92:o;6372:127::-;6433:10;6428:3;6424:20;6421:1;6414:31;6464:4;6461:1;6454:15;6488:4;6485:1;6478:15;6504:995;6581:6;6589;6642:2;6630:9;6621:7;6617:23;6613:32;6610:52;;;6658:1;6655;6648:12;6610:52;6681:29;6700:9;6681:29;:::i;:::-;6671:39;;6761:2;6750:9;6746:18;6733:32;6784:18;6825:2;6817:6;6814:14;6811:34;;;6841:1;6838;6831:12;6811:34;6879:6;6868:9;6864:22;6854:32;;6924:7;6917:4;6913:2;6909:13;6905:27;6895:55;;6946:1;6943;6936:12;6895:55;6982:2;6969:16;7004:2;7000;6997:10;6994:36;;;7010:18;;:::i;:::-;7085:2;7079:9;7053:2;7139:13;;-1:-1:-1;;7135:22:92;;;7159:2;7131:31;7127:40;7115:53;;;7183:18;;;7203:22;;;7180:46;7177:72;;;7229:18;;:::i;:::-;7269:10;7265:2;7258:22;7304:2;7296:6;7289:18;7344:7;7339:2;7334;7330;7326:11;7322:20;7319:33;7316:53;;;7365:1;7362;7355:12;7316:53;7421:2;7416;7412;7408:11;7403:2;7395:6;7391:15;7378:46;7466:1;7461:2;7456;7448:6;7444:15;7440:24;7433:35;7487:6;7477:16;;;;;;;6504:995;;;;;:::o;7504:410::-;-1:-1:-1;;;;;7737:6:92;7733:55;7722:9;7715:74;7825:2;7820;7809:9;7805:18;7798:30;7696:4;7845:63;7904:2;7893:9;7889:18;7881:6;7845:63;:::i;8164:127::-;8225:10;8220:3;8216:20;8213:1;8206:31;8256:4;8253:1;8246:15;8280:4;8277:1;8270:15;8296:208;-1:-1:-1;;;;;8440:10:92;;;8428;;;8424:27;;8463:12;;;8460:38;;;8478:18;;:::i;8509:127::-;8570:10;8565:3;8561:20;8558:1;8551:31;8601:4;8598:1;8591:15;8625:4;8622:1;8615:15;8641:234;8680:3;-1:-1:-1;;;;;8785:2:92;8778:5;8774:14;8812:2;8803:7;8800:15;8797:41;;8818:18;;:::i;:::-;8867:1;8854:15;;8641:234;-1:-1:-1;;;8641:234:92:o;9638:287::-;9767:3;9805:6;9799:13;9821:66;9880:6;9875:3;9868:4;9860:6;9856:17;9821:66;:::i;:::-;9903:16;;;;;9638:287;-1:-1:-1;;9638:287:92:o;10288:219::-;10437:2;10426:9;10419:21;10400:4;10457:44;10497:2;10486:9;10482:18;10474:6;10457:44;:::i"},"gasEstimates":{"creation":{"codeDepositCost":"651200","executionCost":"infinite","totalCost":"infinite"},"external":{"implementation()":"infinite","prepareInstallation(address,bytes)":"infinite","prepareUninstallation(address,(address,address[],bytes))":"infinite","prepareUpdate(address,uint16,(address,address[],bytes))":"624","protocolVersion()":"infinite","supportsInterface(bytes4)":"482"}},"methodIdentifiers":{"implementation()":"5c60da1b","prepareInstallation(address,bytes)":"f10832f1","prepareUninstallation(address,(address,address[],bytes))":"9cb0a124","prepareUpdate(address,uint16,(address,address[],bytes))":"a8a9c29e","protocolVersion()":"2ae9c600","supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ConflictingValues\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NonUpgradeablePlugin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_dao\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"prepareInstallation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"plugin\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address[]\",\"name\":\"helpers\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"enum PermissionLib.Operation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"condition\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PermissionLib.MultiTargetPermission[]\",\"name\":\"permissions\",\"type\":\"tuple[]\"}],\"internalType\":\"struct IPluginSetup.PreparedSetupData\",\"name\":\"preparedSetupData\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_dao\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"plugin\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"currentHelpers\",\"type\":\"address[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IPluginSetup.SetupPayload\",\"name\":\"_payload\",\"type\":\"tuple\"}],\"name\":\"prepareUninstallation\",\"outputs\":[{\"components\":[{\"internalType\":\"enum PermissionLib.Operation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"condition\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PermissionLib.MultiTargetPermission[]\",\"name\":\"permissions\",\"type\":\"tuple[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_dao\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"_fromBuild\",\"type\":\"uint16\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"plugin\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"currentHelpers\",\"type\":\"address[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IPluginSetup.SetupPayload\",\"name\":\"_payload\",\"type\":\"tuple\"}],\"name\":\"prepareUpdate\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address[]\",\"name\":\"helpers\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"enum PermissionLib.Operation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"condition\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PermissionLib.MultiTargetPermission[]\",\"name\":\"permissions\",\"type\":\"tuple[]\"}],\"internalType\":\"struct IPluginSetup.PreparedSetupData\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"protocolVersion\",\"outputs\":[{\"internalType\":\"uint8[3]\",\"name\":\"\",\"type\":\"uint8[3]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"DO NOT USE IN PRODUCTION!\",\"kind\":\"dev\",\"methods\":{\"implementation()\":{\"details\":\"The implementation can be instantiated via the `new` keyword, cloned via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)), or proxied via the UUPS proxy pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\",\"returns\":{\"_0\":\"The address of the plugin implementation contract.\"}},\"prepareInstallation(address,bytes)\":{\"params\":{\"_dao\":\"The address of the installing DAO.\",\"_data\":\"The bytes-encoded data containing the input parameters for the installation as specified in the plugin's build metadata JSON file.\"},\"returns\":{\"plugin\":\"The address of the `Plugin` contract being prepared for installation.\",\"preparedSetupData\":\"The deployed plugin's relevant data which consists of helpers and permissions.\"}},\"prepareUninstallation(address,(address,address[],bytes))\":{\"params\":{\"_dao\":\"The address of the uninstalling DAO.\",\"_payload\":\"The relevant data necessary for the `prepareUninstallation`. See above.\"},\"returns\":{\"permissions\":\"The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the uninstalling DAO.\"}},\"prepareUpdate(address,uint16,(address,address[],bytes))\":{\"details\":\"Since the underlying plugin is non-upgradeable, this non-virtual function must always revert.\",\"params\":{\"_dao\":\"The address of the updating DAO.\",\"_fromBuild\":\"The build number of the plugin to update from.\",\"_payload\":\"The relevant data necessary for the `prepareUpdate`. See above.\"},\"returns\":{\"_0\":\"The initialization data to be passed to upgradeable contracts when the update is applied in the `PluginSetupProcessor`.\",\"_1\":\"The deployed plugin's relevant data which consists of helpers and permissions.\"}},\"protocolVersion()\":{\"details\":\"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\",\"returns\":{\"_0\":\"Returns the semantic Aragon OSx protocol version number.\"}},\"supportsInterface(bytes4)\":{\"params\":{\"_interfaceId\":\"The ID of the interface.\"},\"returns\":{\"_0\":\"Returns `true` if the interface is supported.\"}}},\"version\":1},\"userdoc\":{\"errors\":{\"NonUpgradeablePlugin()\":[{\"notice\":\"Thrown when attempting to prepare an update on a non-upgradeable plugin.\"}]},\"kind\":\"user\",\"methods\":{\"implementation()\":{\"notice\":\"Returns the plugin implementation address.\"},\"prepareInstallation(address,bytes)\":{\"notice\":\"Prepares the installation of a plugin.\"},\"prepareUninstallation(address,(address,address[],bytes))\":{\"notice\":\"Prepares the uninstallation of a plugin.\"},\"prepareUpdate(address,uint16,(address,address[],bytes))\":{\"notice\":\"Prepares the update of a plugin.\"},\"protocolVersion()\":{\"notice\":\"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Checks if this or the parent contract supports an interface by its ID.\"}},\"notice\":\"A mock plugin setup of a cloneable plugin to be deployed via the minimal proxy pattern. v1.2 (Release 1, Build 2)\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/mocks/plugin/PluginCloneableSetupMock.sol\":\"PluginCloneableSetupMockBuild2\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n function __Context_init() internal onlyInitializing {\\n }\\n\\n function __Context_init_unchained() internal onlyInitializing {\\n }\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n function _contextSuffixLength() internal view virtual returns (uint256) {\\n return 0;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x75097e35253e7fb282ee4d7f27a80eaacfa759923185bf17302a89cbc059c5ef\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165Upgradeable.sol\\\";\\nimport {Initializable} from \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165Upgradeable is Initializable, IERC165Upgradeable {\\n function __ERC165_init() internal onlyInitializing {\\n }\\n\\n function __ERC165_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165Upgradeable).interfaceId;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0xd90d7723512df65ae417adaf0801042940f0dabd60039ceeaffe34aa5b238da1\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165Upgradeable {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/IERC1967.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (interfaces/IERC1967.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\\n *\\n * _Available since v4.8.3._\\n */\\ninterface IERC1967 {\\n /**\\n * @dev Emitted when the implementation is upgraded.\\n */\\n event Upgraded(address indexed implementation);\\n\\n /**\\n * @dev Emitted when the admin account has changed.\\n */\\n event AdminChanged(address previousAdmin, address newAdmin);\\n\\n /**\\n * @dev Emitted when the beacon is changed.\\n */\\n event BeaconUpgraded(address indexed beacon);\\n}\\n\",\"keccak256\":\"0x3cbef5ebc24b415252e2f8c0c9254555d30d9f085603b4b80d9b5ed20ab87e90\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822Proxiable {\\n /**\\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n * address.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy.\\n */\\n function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/Clones.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/Clones.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev https://eips.ethereum.org/EIPS/eip-1167[EIP 1167] is a standard for\\n * deploying minimal proxy contracts, also known as \\\"clones\\\".\\n *\\n * > To simply and cheaply clone contract functionality in an immutable way, this standard specifies\\n * > a minimal bytecode implementation that delegates all calls to a known, fixed address.\\n *\\n * The library includes functions to deploy a proxy using either `create` (traditional deployment) or `create2`\\n * (salted deterministic deployment). It also includes functions to predict the addresses of clones deployed using the\\n * deterministic method.\\n *\\n * _Available since v3.4._\\n */\\nlibrary Clones {\\n /**\\n * @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`.\\n *\\n * This function uses the create opcode, which should never revert.\\n */\\n function clone(address implementation) internal returns (address instance) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n // Cleans the upper 96 bits of the `implementation` word, then packs the first 3 bytes\\n // of the `implementation` address with the bytecode before the address.\\n mstore(0x00, or(shr(0xe8, shl(0x60, implementation)), 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000))\\n // Packs the remaining 17 bytes of `implementation` with the bytecode after the address.\\n mstore(0x20, or(shl(0x78, implementation), 0x5af43d82803e903d91602b57fd5bf3))\\n instance := create(0, 0x09, 0x37)\\n }\\n require(instance != address(0), \\\"ERC1167: create failed\\\");\\n }\\n\\n /**\\n * @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`.\\n *\\n * This function uses the create2 opcode and a `salt` to deterministically deploy\\n * the clone. Using the same `implementation` and `salt` multiple time will revert, since\\n * the clones cannot be deployed twice at the same address.\\n */\\n function cloneDeterministic(address implementation, bytes32 salt) internal returns (address instance) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n // Cleans the upper 96 bits of the `implementation` word, then packs the first 3 bytes\\n // of the `implementation` address with the bytecode before the address.\\n mstore(0x00, or(shr(0xe8, shl(0x60, implementation)), 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000))\\n // Packs the remaining 17 bytes of `implementation` with the bytecode after the address.\\n mstore(0x20, or(shl(0x78, implementation), 0x5af43d82803e903d91602b57fd5bf3))\\n instance := create2(0, 0x09, 0x37, salt)\\n }\\n require(instance != address(0), \\\"ERC1167: create2 failed\\\");\\n }\\n\\n /**\\n * @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}.\\n */\\n function predictDeterministicAddress(\\n address implementation,\\n bytes32 salt,\\n address deployer\\n ) internal pure returns (address predicted) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n let ptr := mload(0x40)\\n mstore(add(ptr, 0x38), deployer)\\n mstore(add(ptr, 0x24), 0x5af43d82803e903d91602b57fd5bf3ff)\\n mstore(add(ptr, 0x14), implementation)\\n mstore(ptr, 0x3d602d80600a3d3981f3363d3d373d3d3d363d73)\\n mstore(add(ptr, 0x58), salt)\\n mstore(add(ptr, 0x78), keccak256(add(ptr, 0x0c), 0x37))\\n predicted := keccak256(add(ptr, 0x43), 0x55)\\n }\\n }\\n\\n /**\\n * @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}.\\n */\\n function predictDeterministicAddress(\\n address implementation,\\n bytes32 salt\\n ) internal view returns (address predicted) {\\n return predictDeterministicAddress(implementation, salt, address(this));\\n }\\n}\\n\",\"keccak256\":\"0x01f055f5c26ba25d7f83e9aa9ba877fbea4d0bf22227de046ea67494bc932999\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (proxy/ERC1967/ERC1967Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../Proxy.sol\\\";\\nimport \\\"./ERC1967Upgrade.sol\\\";\\n\\n/**\\n * @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an\\n * implementation address that can be changed. This address is stored in storage in the location specified by\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the\\n * implementation behind the proxy.\\n */\\ncontract ERC1967Proxy is Proxy, ERC1967Upgrade {\\n /**\\n * @dev Initializes the upgradeable proxy with an initial implementation specified by `_logic`.\\n *\\n * If `_data` is nonempty, it's used as data in a delegate call to `_logic`. This will typically be an encoded\\n * function call, and allows initializing the storage of the proxy like a Solidity constructor.\\n */\\n constructor(address _logic, bytes memory _data) payable {\\n _upgradeToAndCall(_logic, _data, false);\\n }\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _implementation() internal view virtual override returns (address impl) {\\n return ERC1967Upgrade._getImplementation();\\n }\\n}\\n\",\"keccak256\":\"0xa2b22da3032e50b55f95ec1d13336102d675f341167aa76db571ef7f8bb7975d\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../beacon/IBeacon.sol\\\";\\nimport \\\"../../interfaces/IERC1967.sol\\\";\\nimport \\\"../../interfaces/draft-IERC1822.sol\\\";\\nimport \\\"../../utils/Address.sol\\\";\\nimport \\\"../../utils/StorageSlot.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n */\\nabstract contract ERC1967Upgrade is IERC1967 {\\n // This is the keccak-256 hash of \\\"eip1967.proxy.rollback\\\" subtracted by 1\\n bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n /**\\n * @dev Storage slot with the address of the current implementation.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _getImplementation() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 implementation slot.\\n */\\n function _setImplementation(address newImplementation) private {\\n require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n }\\n\\n /**\\n * @dev Perform implementation upgrade\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeTo(address newImplementation) internal {\\n _setImplementation(newImplementation);\\n emit Upgraded(newImplementation);\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCall(address newImplementation, bytes memory data, bool forceCall) internal {\\n _upgradeTo(newImplementation);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(newImplementation, data);\\n }\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCallUUPS(address newImplementation, bytes memory data, bool forceCall) internal {\\n // Upgrades from old implementations will perform a rollback test. This test requires the new\\n // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n // this special case will break upgrade paths from old UUPS implementation to new ones.\\n if (StorageSlot.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n _setImplementation(newImplementation);\\n } else {\\n try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n require(slot == _IMPLEMENTATION_SLOT, \\\"ERC1967Upgrade: unsupported proxiableUUID\\\");\\n } catch {\\n revert(\\\"ERC1967Upgrade: new implementation is not UUPS\\\");\\n }\\n _upgradeToAndCall(newImplementation, data, forceCall);\\n }\\n }\\n\\n /**\\n * @dev Storage slot with the admin of the contract.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _getAdmin() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_ADMIN_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 admin slot.\\n */\\n function _setAdmin(address newAdmin) private {\\n require(newAdmin != address(0), \\\"ERC1967: new admin is the zero address\\\");\\n StorageSlot.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n */\\n function _changeAdmin(address newAdmin) internal {\\n emit AdminChanged(_getAdmin(), newAdmin);\\n _setAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\\n */\\n bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n /**\\n * @dev Returns the current beacon.\\n */\\n function _getBeacon() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_BEACON_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new beacon in the EIP1967 beacon slot.\\n */\\n function _setBeacon(address newBeacon) private {\\n require(Address.isContract(newBeacon), \\\"ERC1967: new beacon is not a contract\\\");\\n require(\\n Address.isContract(IBeacon(newBeacon).implementation()),\\n \\\"ERC1967: beacon implementation is not a contract\\\"\\n );\\n StorageSlot.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n }\\n\\n /**\\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n *\\n * Emits a {BeaconUpgraded} event.\\n */\\n function _upgradeBeaconToAndCall(address newBeacon, bytes memory data, bool forceCall) internal {\\n _setBeacon(newBeacon);\\n emit BeaconUpgraded(newBeacon);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x3b21ae06bf5957f73fa16754b0669c77b7abd8ba6c072d35c3281d446fdb86c2\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (proxy/Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\\n * be specified by overriding the virtual {_implementation} function.\\n *\\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\\n * different contract through the {_delegate} function.\\n *\\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\\n */\\nabstract contract Proxy {\\n /**\\n * @dev Delegates the current call to `implementation`.\\n *\\n * This function does not return to its internal call site, it will return directly to the external caller.\\n */\\n function _delegate(address implementation) internal virtual {\\n assembly {\\n // Copy msg.data. We take full control of memory in this inline assembly\\n // block because it will not return to Solidity code. We overwrite the\\n // Solidity scratch pad at memory position 0.\\n calldatacopy(0, 0, calldatasize())\\n\\n // Call the implementation.\\n // out and outsize are 0 because we don't know the size yet.\\n let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)\\n\\n // Copy the returned data.\\n returndatacopy(0, 0, returndatasize())\\n\\n switch result\\n // delegatecall returns 0 on error.\\n case 0 {\\n revert(0, returndatasize())\\n }\\n default {\\n return(0, returndatasize())\\n }\\n }\\n }\\n\\n /**\\n * @dev This is a virtual function that should be overridden so it returns the address to which the fallback function\\n * and {_fallback} should delegate.\\n */\\n function _implementation() internal view virtual returns (address);\\n\\n /**\\n * @dev Delegates the current call to the address returned by `_implementation()`.\\n *\\n * This function does not return to its internal call site, it will return directly to the external caller.\\n */\\n function _fallback() internal virtual {\\n _beforeFallback();\\n _delegate(_implementation());\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\\n * function in the contract matches the call data.\\n */\\n fallback() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data\\n * is empty.\\n */\\n receive() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`\\n * call, or as part of the Solidity `fallback` or `receive` functions.\\n *\\n * If overridden should call `super._beforeFallback()`.\\n */\\n function _beforeFallback() internal virtual {}\\n}\\n\",\"keccak256\":\"0xc130fe33f1b2132158531a87734153293f6d07bc263ff4ac90e85da9c82c0e27\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeacon {\\n /**\\n * @dev Must return an address that can be used as a delegate call target.\\n *\\n * {BeaconProxy} will check that this address is a contract.\\n */\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/StorageSlot.sol)\\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```solidity\\n * contract ERC1967 {\\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n * function _getImplementation() internal view returns (address) {\\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n * }\\n *\\n * function _setImplementation(address newImplementation) internal {\\n * require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n * }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._\\n * _Available since v4.9 for `string`, `bytes`._\\n */\\nlibrary StorageSlot {\\n struct AddressSlot {\\n address value;\\n }\\n\\n struct BooleanSlot {\\n bool value;\\n }\\n\\n struct Bytes32Slot {\\n bytes32 value;\\n }\\n\\n struct Uint256Slot {\\n uint256 value;\\n }\\n\\n struct StringSlot {\\n string value;\\n }\\n\\n struct BytesSlot {\\n bytes value;\\n }\\n\\n /**\\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n */\\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n */\\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n */\\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n */\\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` with member `value` located at `slot`.\\n */\\n function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\\n */\\n function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` with member `value` located at `slot`.\\n */\\n function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\\n */\\n function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n}\\n\",\"keccak256\":\"0xf09e68aa0dc6722a25bc46490e8d48ed864466d17313b8a0b254c36b54e49899\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165 is IERC165 {\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165).interfaceId;\\n }\\n}\\n\",\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"src/dao/IDAO.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IDAO\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for DAOs within the Aragon App DAO framework.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IDAO {\\n /// @notice The action struct to be consumed by the DAO's `execute` function resulting in an external call.\\n /// @param to The address to call.\\n /// @param value The native token value to be sent with the call.\\n /// @param data The bytes-encoded function selector and calldata for the call.\\n struct Action {\\n address to;\\n uint256 value;\\n bytes data;\\n }\\n\\n /// @notice Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\\n /// @param _where The address of the contract.\\n /// @param _who The address of a EOA or contract to give the permissions.\\n /// @param _permissionId The permission identifier.\\n /// @param _data The optional data passed to the `PermissionCondition` registered.\\n /// @return Returns true if the address has permission, false if not.\\n function hasPermission(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes memory _data\\n ) external view returns (bool);\\n\\n /// @notice Updates the DAO metadata (e.g., an IPFS hash).\\n /// @param _metadata The IPFS hash of the new metadata object.\\n function setMetadata(bytes calldata _metadata) external;\\n\\n /// @notice Emitted when the DAO metadata is updated.\\n /// @param metadata The IPFS hash of the new metadata object.\\n event MetadataSet(bytes metadata);\\n\\n /// @notice Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted.\\n /// @param _callId The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce.\\n /// @param _actions The array of actions.\\n /// @param _allowFailureMap A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @return The array of results obtained from the executed actions in `bytes`.\\n /// @return The resulting failure map containing the actions have actually failed.\\n function execute(\\n bytes32 _callId,\\n Action[] memory _actions,\\n uint256 _allowFailureMap\\n ) external returns (bytes[] memory, uint256);\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param actor The address of the caller.\\n /// @param callId The ID of the call.\\n /// @param actions The array of actions executed.\\n /// @param allowFailureMap The allow failure map encoding which actions are allowed to fail.\\n /// @param failureMap The failure map encoding which actions have failed.\\n /// @param execResults The array with the results of the executed actions.\\n /// @dev The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce.\\n event Executed(\\n address indexed actor,\\n bytes32 callId,\\n Action[] actions,\\n uint256 allowFailureMap,\\n uint256 failureMap,\\n bytes[] execResults\\n );\\n\\n /// @notice Emitted when a standard callback is registered.\\n /// @param interfaceId The ID of the interface.\\n /// @param callbackSelector The selector of the callback function.\\n /// @param magicNumber The magic number to be registered for the callback function selector.\\n event StandardCallbackRegistered(\\n bytes4 interfaceId,\\n bytes4 callbackSelector,\\n bytes4 magicNumber\\n );\\n\\n /// @notice Deposits (native) tokens to the DAO contract with a reference string.\\n /// @param _token The address of the token or address(0) in case of the native token.\\n /// @param _amount The amount of tokens to deposit.\\n /// @param _reference The reference describing the deposit reason.\\n function deposit(address _token, uint256 _amount, string calldata _reference) external payable;\\n\\n /// @notice Emitted when a token deposit has been made to the DAO.\\n /// @param sender The address of the sender.\\n /// @param token The address of the deposited token.\\n /// @param amount The amount of tokens deposited.\\n /// @param _reference The reference describing the deposit reason.\\n event Deposited(\\n address indexed sender,\\n address indexed token,\\n uint256 amount,\\n string _reference\\n );\\n\\n /// @notice Emitted when a native token deposit has been made to the DAO.\\n /// @dev This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).\\n /// @param sender The address of the sender.\\n /// @param amount The amount of native tokens deposited.\\n event NativeTokenDeposited(address sender, uint256 amount);\\n\\n /// @notice Setter for the trusted forwarder verifying the meta transaction.\\n /// @param _trustedForwarder The trusted forwarder address.\\n function setTrustedForwarder(address _trustedForwarder) external;\\n\\n /// @notice Getter for the trusted forwarder verifying the meta transaction.\\n /// @return The trusted forwarder address.\\n function getTrustedForwarder() external view returns (address);\\n\\n /// @notice Emitted when a new TrustedForwarder is set on the DAO.\\n /// @param forwarder the new forwarder address.\\n event TrustedForwarderSet(address forwarder);\\n\\n /// @notice Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\\n /// @param _hash The hash of the data to be signed.\\n /// @param _signature The signature byte array associated with `_hash`.\\n /// @return Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not.\\n function isValidSignature(bytes32 _hash, bytes memory _signature) external returns (bytes4);\\n\\n /// @notice Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\\n /// @param _interfaceId The ID of the interface.\\n /// @param _callbackSelector The selector of the callback function.\\n /// @param _magicNumber The magic number to be registered for the function signature.\\n function registerStandardCallback(\\n bytes4 _interfaceId,\\n bytes4 _callbackSelector,\\n bytes4 _magicNumber\\n ) external;\\n\\n /// @notice Removed function being left here to not corrupt the IDAO interface ID. Any call will revert.\\n /// @dev Introduced in v1.0.0. Removed in v1.4.0.\\n function setSignatureValidator(address) external;\\n}\\n\",\"keccak256\":\"0xb7f615523c26de042edce98731c658f44a1edb2464387ac1b642c4c69f57128e\",\"license\":\"AGPL-3.0-or-later\"},\"src/mocks/plugin/PluginCloneableMock.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\n/* solhint-disable one-contract-per-file */\\npragma solidity ^0.8.8;\\n\\nimport {PluginCloneable} from \\\"../../plugin/PluginCloneable.sol\\\";\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice A mock cloneable plugin to be deployed via the minimal proxy pattern.\\n/// v1.1 (Release 1, Build 1)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginCloneableMockBuild1 is PluginCloneable {\\n uint256 public state1;\\n\\n function initialize(IDAO _dao) external initializer {\\n __PluginCloneable_init(_dao);\\n state1 = 1;\\n }\\n}\\n\\n/// @notice A mock cloneable plugin to be deployed via the minimal proxy pattern.\\n/// v1.1 (Release 1, Build 2)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginCloneableMockBuild2 is PluginCloneable {\\n uint256 public state1;\\n uint256 public state2;\\n\\n function initialize(IDAO _dao) external initializer {\\n __PluginCloneable_init(_dao);\\n state1 = 1;\\n state2 = 2;\\n }\\n}\\n\\n/// @notice A mock cloneable plugin missing an initializer function.\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginCloneableMockBad is PluginCloneable {\\n uint256 public state1;\\n\\n function notAnInitializer(IDAO _dao) external {\\n __PluginCloneable_init(_dao);\\n state1 = 1;\\n }\\n}\\n\",\"keccak256\":\"0x1bb271f7b553040fad7907e97b860aa833aec9aefe7477e00ba7bdfd80d84e98\",\"license\":\"AGPL-3.0-or-later\"},\"src/mocks/plugin/PluginCloneableSetupMock.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\n/* solhint-disable one-contract-per-file */\\npragma solidity ^0.8.8;\\n\\nimport {PermissionLib} from \\\"../../permission/PermissionLib.sol\\\";\\nimport {IPluginSetup} from \\\"../../plugin/setup/IPluginSetup.sol\\\";\\nimport {PluginSetup} from \\\"../../plugin/setup/PluginSetup.sol\\\";\\nimport {ProxyLib} from \\\"../../utils/deployment/ProxyLib.sol\\\";\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\nimport {mockPermissions, mockHelpers} from \\\"./PluginSetupMockData.sol\\\";\\nimport {PluginCloneableMockBuild1, PluginCloneableMockBuild2} from \\\"./PluginCloneableMock.sol\\\";\\n\\n/// @notice A mock plugin setup of a cloneable plugin to be deployed via the minimal proxy pattern.\\n/// v1.1 (Release 1, Build 1)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginCloneableSetupMockBuild1 is PluginSetup {\\n using ProxyLib for address;\\n\\n uint16 internal constant THIS_BUILD = 1;\\n\\n constructor() PluginSetup(address(new PluginCloneableMockBuild1())) {}\\n\\n /// @inheritdoc IPluginSetup\\n function prepareInstallation(\\n address _dao,\\n bytes memory\\n ) external returns (address plugin, PreparedSetupData memory preparedSetupData) {\\n bytes memory initData = abi.encodeCall(PluginCloneableMockBuild1.initialize, (IDAO(_dao)));\\n plugin = implementation().deployMinimalProxy(initData);\\n preparedSetupData.helpers = mockHelpers(THIS_BUILD);\\n preparedSetupData.permissions = mockPermissions(\\n 0,\\n THIS_BUILD,\\n PermissionLib.Operation.Grant\\n );\\n }\\n\\n /// @inheritdoc IPluginSetup\\n function prepareUninstallation(\\n address _dao,\\n SetupPayload calldata _payload\\n ) external pure returns (PermissionLib.MultiTargetPermission[] memory permissions) {\\n (_dao, _payload);\\n permissions = mockPermissions(0, THIS_BUILD, PermissionLib.Operation.Revoke);\\n }\\n}\\n\\n/// @notice A mock plugin setup of a cloneable plugin to be deployed via the minimal proxy pattern.\\n/// v1.2 (Release 1, Build 2)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginCloneableSetupMockBuild2 is PluginSetup {\\n using ProxyLib for address;\\n\\n uint16 internal constant THIS_BUILD = 2;\\n\\n constructor() PluginSetup(address(new PluginCloneableMockBuild2())) {}\\n\\n /// @inheritdoc IPluginSetup\\n function prepareInstallation(\\n address _dao,\\n bytes memory\\n ) external returns (address plugin, PreparedSetupData memory preparedSetupData) {\\n bytes memory initData = abi.encodeCall(PluginCloneableMockBuild2.initialize, (IDAO(_dao)));\\n plugin = implementation().deployMinimalProxy(initData);\\n preparedSetupData.helpers = mockHelpers(THIS_BUILD);\\n preparedSetupData.permissions = mockPermissions(\\n 0,\\n THIS_BUILD,\\n PermissionLib.Operation.Grant\\n );\\n }\\n\\n /// @inheritdoc IPluginSetup\\n function prepareUninstallation(\\n address _dao,\\n SetupPayload calldata _payload\\n ) external pure returns (PermissionLib.MultiTargetPermission[] memory permissions) {\\n (_dao, _payload);\\n permissions = mockPermissions(0, THIS_BUILD, PermissionLib.Operation.Revoke);\\n }\\n}\\n\",\"keccak256\":\"0xfac0ce75e9d665bc9e2900c5cfa3f2667e0ea73573c4f46147453c6582eac1de\",\"license\":\"AGPL-3.0-or-later\"},\"src/mocks/plugin/PluginSetupMockData.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {PermissionLib} from \\\"../../permission/PermissionLib.sol\\\";\\n\\naddress constant NO_CONDITION = address(0);\\n\\nerror ConflictingValues();\\n\\n/// @notice Creates a mock `MultiTargetPermission` array by converting a range of `uint160` values into `address` values.\\n/// @param rangeStart The start of the range.\\n/// @param rangeEnd The end of the range (that is not included).\\n/// @param op The permission operation type.\\n/// @return permissions The mock array of permissions.\\n/// @dev DO NOT USE IN PRODUCTION!\\nfunction mockPermissions(\\n uint160 rangeStart,\\n uint160 rangeEnd,\\n PermissionLib.Operation op\\n) pure returns (PermissionLib.MultiTargetPermission[] memory permissions) {\\n if (rangeStart > rangeEnd) revert ConflictingValues();\\n\\n permissions = new PermissionLib.MultiTargetPermission[](rangeEnd - rangeStart);\\n\\n for (uint160 i = rangeStart; i < rangeEnd; i++) {\\n permissions[i - rangeStart] = PermissionLib.MultiTargetPermission({\\n operation: op,\\n where: address(i),\\n who: address(i),\\n condition: PermissionLib.NO_CONDITION,\\n permissionId: keccak256(\\\"MOCK_PERMISSION\\\")\\n });\\n }\\n}\\n\\n/// @notice Creates a mock array of helper addresses of specified length by converting `uint160` values starting from 0 into `address` values.\\n/// @param len The length of the helper array.\\n/// @return helpers The mock array of helper addresses.\\n/// @dev DO NOT USE IN PRODUCTION!\\nfunction mockHelpers(uint160 len) pure returns (address[] memory helpers) {\\n helpers = new address[](len);\\n\\n for (uint160 i = 0; i < len; i++) {\\n helpers[i] = address(i);\\n }\\n}\\n\",\"keccak256\":\"0x529d1b7ea4c348fe18edf81a044792ca8aa1f6ad9a7d2edfd35e38bf8372abf9\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/PermissionLib.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title PermissionLib\\n/// @author Aragon X - 2021-2023\\n/// @notice A library containing objects for permission processing.\\n/// @custom:security-contact sirt@aragon.org\\nlibrary PermissionLib {\\n /// @notice A constant expressing that no condition is applied to a permission.\\n address public constant NO_CONDITION = address(0);\\n\\n /// @notice The types of permission operations available in the `PermissionManager`.\\n /// @param Grant The grant operation setting a permission without a condition.\\n /// @param Revoke The revoke operation removing a permission (that was granted with or without a condition).\\n /// @param GrantWithCondition The grant operation setting a permission with a condition.\\n enum Operation {\\n Grant,\\n Revoke,\\n GrantWithCondition\\n }\\n\\n /// @notice A struct containing the information for a permission to be applied on a single target contract without a condition.\\n /// @param operation The permission operation type.\\n /// @param who The address (EOA or contract) receiving the permission.\\n /// @param permissionId The permission identifier.\\n struct SingleTargetPermission {\\n Operation operation;\\n address who;\\n bytes32 permissionId;\\n }\\n\\n /// @notice A struct containing the information for a permission to be applied on multiple target contracts, optionally, with a condition.\\n /// @param operation The permission operation type.\\n /// @param where The address of the target contract for which `who` receives permission.\\n /// @param who The address (EOA or contract) receiving the permission.\\n /// @param condition The `PermissionCondition` that will be asked for authorization on calls connected to the specified permission identifier.\\n /// @param permissionId The permission identifier.\\n struct MultiTargetPermission {\\n Operation operation;\\n address where;\\n address who;\\n address condition;\\n bytes32 permissionId;\\n }\\n}\\n\",\"keccak256\":\"0x470faf3c4891ebc6420ef6cc09f6098917568ccc79268c90954d1478199b6097\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/DaoAuthorizableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ContextUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\\\";\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\nimport {_auth} from \\\"./auth.sol\\\";\\n\\n/// @title DaoAuthorizableUpgradeable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract contract providing a meta-transaction compatible modifier for upgradeable or cloneable contracts to authorize function calls through an associated DAO.\\n/// @dev Make sure to call `__DaoAuthorizableUpgradeable_init` during initialization of the inheriting contract.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract DaoAuthorizableUpgradeable is ContextUpgradeable {\\n /// @notice The associated DAO managing the permissions of inheriting contracts.\\n IDAO private dao_;\\n\\n /// @notice Initializes the contract by setting the associated DAO.\\n /// @param _dao The associated DAO address.\\n // solhint-disable-next-line func-name-mixedcase\\n function __DaoAuthorizableUpgradeable_init(IDAO _dao) internal onlyInitializing {\\n dao_ = _dao;\\n }\\n\\n /// @notice Returns the DAO contract.\\n /// @return The DAO contract.\\n function dao() public view returns (IDAO) {\\n return dao_;\\n }\\n\\n /// @notice A modifier to make functions on inheriting contracts authorized. Permissions to call the function are checked through the associated DAO's permission manager.\\n /// @param _permissionId The permission identifier required to call the method this modifier is applied to.\\n modifier auth(bytes32 _permissionId) {\\n _auth(dao_, address(this), _msgSender(), _permissionId, _msgData());\\n _;\\n }\\n\\n /// @notice This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain (see [OpenZeppelin's guide about storage gaps](https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps)).\\n uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0x7fac6b01b037ba1cb9d6a22d3f43b0785037dcf496ffb672434d9bf7227d2585\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/auth.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice Thrown if a call is unauthorized in the associated DAO.\\n/// @param dao The associated DAO.\\n/// @param where The context in which the authorization reverted.\\n/// @param who The address (EOA or contract) missing the permission.\\n/// @param permissionId The permission identifier.\\nerror DaoUnauthorized(address dao, address where, address who, bytes32 permissionId);\\n\\n/// @notice A free function checking if a caller is granted permissions on a target contract via a permission identifier that redirects the approval to a `PermissionCondition` if this was specified in the setup.\\n/// @param _where The address of the target contract for which `who` receives permission.\\n/// @param _who The address (EOA or contract) owning the permission.\\n/// @param _permissionId The permission identifier.\\n/// @param _data The optional data passed to the `PermissionCondition` registered.\\n/// @custom:security-contact sirt@aragon.org\\nfunction _auth(\\n IDAO _dao,\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes calldata _data\\n) view {\\n if (!_dao.hasPermission(_where, _who, _permissionId, _data))\\n revert DaoUnauthorized({\\n dao: address(_dao),\\n where: _where,\\n who: _who,\\n permissionId: _permissionId\\n });\\n}\\n\",\"keccak256\":\"0x878764b4f87fe0651fb3798fb9cb87c952f8c6caf6ae79c7f09de84df6c00298\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/IPlugin.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IPlugin\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the traits of a plugin.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IPlugin {\\n enum PluginType {\\n UUPS,\\n Cloneable,\\n Constructable\\n }\\n\\n /// @notice Returns the plugin's type\\n function pluginType() external view returns (PluginType);\\n}\\n\",\"keccak256\":\"0xc57cd0d10b6380ab7f54c713a509e88fd8f4ad9288313a0e8e12b8887817ddfe\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/PluginCloneable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ERC165Upgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\\\";\\n\\nimport {IProtocolVersion} from \\\"../utils/versioning/IProtocolVersion.sol\\\";\\nimport {ProtocolVersion} from \\\"../utils/versioning/ProtocolVersion.sol\\\";\\nimport {DaoAuthorizableUpgradeable} from \\\"../permission/auth/DaoAuthorizableUpgradeable.sol\\\";\\nimport {IDAO} from \\\"../dao/IDAO.sol\\\";\\nimport {IPlugin} from \\\"./IPlugin.sol\\\";\\n\\n/// @title PluginCloneable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract, non-upgradeable contract to inherit from when creating a plugin being deployed via the minimal clones pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)).\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract PluginCloneable is\\n IPlugin,\\n ERC165Upgradeable,\\n DaoAuthorizableUpgradeable,\\n ProtocolVersion\\n{\\n /// @notice Disables the initializers on the implementation contract to prevent it from being left uninitialized.\\n /// @custom:oz-upgrades-unsafe-allow constructor\\n constructor() {\\n _disableInitializers();\\n }\\n\\n /// @notice Initializes the plugin by storing the associated DAO.\\n /// @param _dao The DAO contract.\\n // solhint-disable-next-line func-name-mixedcase\\n function __PluginCloneable_init(IDAO _dao) internal virtual onlyInitializing {\\n __DaoAuthorizableUpgradeable_init(_dao);\\n }\\n\\n /// @inheritdoc IPlugin\\n function pluginType() public pure override returns (PluginType) {\\n return PluginType.Cloneable;\\n }\\n\\n /// @notice Checks if this or the parent contract supports an interface by its ID.\\n /// @param _interfaceId The ID of the interface.\\n /// @return Returns `true` if the interface is supported.\\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\\n return\\n _interfaceId == type(IPlugin).interfaceId ||\\n _interfaceId == type(IProtocolVersion).interfaceId ||\\n super.supportsInterface(_interfaceId);\\n }\\n}\\n\",\"keccak256\":\"0x68e260b9b370d68252f0c707461d5e4c2188a7bfed42ed9192657b36330a1f7a\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/setup/IPluginSetup.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {PermissionLib} from \\\"../../permission/PermissionLib.sol\\\";\\n\\n// solhint-disable-next-line no-unused-import\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @title IPluginSetup\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for a plugin setup contract to be consumed by the `PluginSetupProcessor` for plugin installations, updates, and uninstallations.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IPluginSetup {\\n /// @notice The data associated with a prepared setup.\\n /// @param helpers The address array of helpers (contracts or EOAs) associated with this plugin version after the installation or update.\\n /// @param permissions The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the installing or updating DAO.\\n struct PreparedSetupData {\\n address[] helpers;\\n PermissionLib.MultiTargetPermission[] permissions;\\n }\\n\\n /// @notice The payload for plugin updates and uninstallations containing the existing contracts as well as optional data to be consumed by the plugin setup.\\n /// @param plugin The address of the `Plugin`.\\n /// @param currentHelpers The address array of all current helpers (contracts or EOAs) associated with the plugin to update from.\\n /// @param data The bytes-encoded data containing the input parameters for the preparation of update/uninstall as specified in the corresponding ABI on the version's metadata.\\n struct SetupPayload {\\n address plugin;\\n address[] currentHelpers;\\n bytes data;\\n }\\n\\n /// @notice Prepares the installation of a plugin.\\n /// @param _dao The address of the installing DAO.\\n /// @param _data The bytes-encoded data containing the input parameters for the installation as specified in the plugin's build metadata JSON file.\\n /// @return plugin The address of the `Plugin` contract being prepared for installation.\\n /// @return preparedSetupData The deployed plugin's relevant data which consists of helpers and permissions.\\n function prepareInstallation(\\n address _dao,\\n bytes calldata _data\\n ) external returns (address plugin, PreparedSetupData memory preparedSetupData);\\n\\n /// @notice Prepares the update of a plugin.\\n /// @param _dao The address of the updating DAO.\\n /// @param _fromBuild The build number of the plugin to update from.\\n /// @param _payload The relevant data necessary for the `prepareUpdate`. See above.\\n /// @return initData The initialization data to be passed to upgradeable contracts when the update is applied in the `PluginSetupProcessor`.\\n /// @return preparedSetupData The deployed plugin's relevant data which consists of helpers and permissions.\\n function prepareUpdate(\\n address _dao,\\n uint16 _fromBuild,\\n SetupPayload calldata _payload\\n ) external returns (bytes memory initData, PreparedSetupData memory preparedSetupData);\\n\\n /// @notice Prepares the uninstallation of a plugin.\\n /// @param _dao The address of the uninstalling DAO.\\n /// @param _payload The relevant data necessary for the `prepareUninstallation`. See above.\\n /// @return permissions The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the uninstalling DAO.\\n function prepareUninstallation(\\n address _dao,\\n SetupPayload calldata _payload\\n ) external returns (PermissionLib.MultiTargetPermission[] memory permissions);\\n\\n /// @notice Returns the plugin implementation address.\\n /// @return The address of the plugin implementation contract.\\n /// @dev The implementation can be instantiated via the `new` keyword, cloned via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)), or proxied via the UUPS proxy pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0x21c99995208039ac6ace219b6f273243811dc2aa66399e8e499e43ec30b82fa9\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/setup/PluginSetup.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ERC165} from \\\"@openzeppelin/contracts/utils/introspection/ERC165.sol\\\";\\n\\nimport {IProtocolVersion} from \\\"../../utils/versioning/IProtocolVersion.sol\\\";\\nimport {ProtocolVersion} from \\\"../../utils/versioning/ProtocolVersion.sol\\\";\\nimport {IPluginSetup} from \\\"./IPluginSetup.sol\\\";\\n\\n/// @title PluginSetup\\n/// @author Aragon X - 2022-2024\\n/// @notice An abstract contract to inherit from to implement the plugin setup for non-upgradeable plugins, i.e,\\n/// - `Plugin` being deployed via the `new` keyword\\n/// - `PluginCloneable` being deployed via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)).\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract PluginSetup is ERC165, IPluginSetup, ProtocolVersion {\\n /// @notice The address of the plugin implementation contract for initial block explorer verification and, in the case of `PluginClonable` implementations, to create [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167) clones from.\\n address internal immutable IMPLEMENTATION;\\n\\n /// @notice Thrown when attempting to prepare an update on a non-upgradeable plugin.\\n error NonUpgradeablePlugin();\\n\\n /// @notice The contract constructor, that setting the plugin implementation contract.\\n /// @param _implementation The address of the plugin implementation contract.\\n constructor(address _implementation) {\\n IMPLEMENTATION = _implementation;\\n }\\n\\n /// @inheritdoc IPluginSetup\\n /// @dev Since the underlying plugin is non-upgradeable, this non-virtual function must always revert.\\n function prepareUpdate(\\n address _dao,\\n uint16 _fromBuild,\\n SetupPayload calldata _payload\\n ) external pure returns (bytes memory, PreparedSetupData memory) {\\n (_dao, _fromBuild, _payload);\\n revert NonUpgradeablePlugin();\\n }\\n\\n /// @notice Checks if this or the parent contract supports an interface by its ID.\\n /// @param _interfaceId The ID of the interface.\\n /// @return Returns `true` if the interface is supported.\\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\\n return\\n _interfaceId == type(IPluginSetup).interfaceId ||\\n _interfaceId == type(IProtocolVersion).interfaceId ||\\n super.supportsInterface(_interfaceId);\\n }\\n\\n /// @inheritdoc IPluginSetup\\n function implementation() public view returns (address) {\\n return IMPLEMENTATION;\\n }\\n}\\n\",\"keccak256\":\"0x93044f8080758c5cf8d621e3614b8150f55572a1770880106a49dfa53784a9d2\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/deployment/ProxyLib.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ERC1967Proxy} from \\\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol\\\";\\nimport {Clones} from \\\"@openzeppelin/contracts/proxy/Clones.sol\\\";\\nimport {Address} from \\\"@openzeppelin/contracts/utils/Address.sol\\\";\\n\\n/// @title ProxyLib\\n/// @author Aragon X - 2024\\n/// @notice A library containing methods for the deployment of proxies via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)) and minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)).\\n/// @custom:security-contact sirt@aragon.org\\nlibrary ProxyLib {\\n using Address for address;\\n using Clones for address;\\n\\n /// @notice Creates an [ERC-1967](https://eips.ethereum.org/EIPS/eip-1967) UUPS proxy contract pointing to a logic contract and allows to immediately initialize it.\\n /// @param _logic The logic contract the proxy is pointing to.\\n /// @param _initCalldata The initialization data for this contract.\\n /// @return uupsProxy The address of the UUPS proxy contract created.\\n /// @dev If `_initCalldata` is non-empty, it is used in a delegate call to the `_logic` contract. This will typically be an encoded function call initializing the storage of the proxy (see [OpenZeppelin ERC1967Proxy-constructor](https://docs.openzeppelin.com/contracts/4.x/api/proxy#ERC1967Proxy-constructor-address-bytes-)).\\n function deployUUPSProxy(\\n address _logic,\\n bytes memory _initCalldata\\n ) internal returns (address uupsProxy) {\\n uupsProxy = address(new ERC1967Proxy({_logic: _logic, _data: _initCalldata}));\\n }\\n\\n /// @notice Creates an [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167) minimal proxy contract, also known as clones, pointing to a logic contract and allows to immediately initialize it.\\n /// @param _logic The logic contract the proxy is pointing to.\\n /// @param _initCalldata The initialization data for this contract.\\n /// @return minimalProxy The address of the minimal proxy contract created.\\n /// @dev If `_initCalldata` is non-empty, it is used in a call to the clone contract. This will typically be an encoded function call initializing the storage of the contract.\\n function deployMinimalProxy(\\n address _logic,\\n bytes memory _initCalldata\\n ) internal returns (address minimalProxy) {\\n minimalProxy = _logic.clone();\\n if (_initCalldata.length > 0) {\\n minimalProxy.functionCall({data: _initCalldata});\\n }\\n }\\n}\\n\",\"keccak256\":\"0xef0d1790dfa026381c021daa2ec7267357497f58cd4a2fa5c64e72e0dea95acc\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/IProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IProtocolVersion\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the semantic Aragon OSx protocol version number.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IProtocolVersion {\\n /// @notice Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\\n /// @return _version Returns the semantic Aragon OSx protocol version number.\\n /// @dev This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\\n function protocolVersion() external view returns (uint8[3] memory _version);\\n}\\n\",\"keccak256\":\"0x00a4da654d21dc1bdadbdc8bd54bb86c378c56f85e461ccc31303628ea621361\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/ProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IProtocolVersion} from \\\"./IProtocolVersion.sol\\\";\\n\\n/// @title ProtocolVersion\\n/// @author Aragon X - 2023\\n/// @notice An abstract, stateless, non-upgradeable contract providing the current Aragon OSx protocol version number.\\n/// @dev Do not add any new variables to this contract that would shift down storage in the inheritance chain.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract ProtocolVersion is IProtocolVersion {\\n // IMPORTANT: Do not add any storage variable, see the above notice.\\n\\n /// @inheritdoc IProtocolVersion\\n function protocolVersion() public pure returns (uint8[3] memory) {\\n return [1, 4, 0];\\n }\\n}\\n\",\"keccak256\":\"0x3975c937be935f687c6b6b8f379071232681e98cf04b175d72781b819ea52bdb\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"errors":{"NonUpgradeablePlugin()":[{"notice":"Thrown when attempting to prepare an update on a non-upgradeable plugin."}]},"kind":"user","methods":{"implementation()":{"notice":"Returns the plugin implementation address."},"prepareInstallation(address,bytes)":{"notice":"Prepares the installation of a plugin."},"prepareUninstallation(address,(address,address[],bytes))":{"notice":"Prepares the uninstallation of a plugin."},"prepareUpdate(address,uint16,(address,address[],bytes))":{"notice":"Prepares the update of a plugin."},"protocolVersion()":{"notice":"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with."},"supportsInterface(bytes4)":{"notice":"Checks if this or the parent contract supports an interface by its ID."}},"notice":"A mock plugin setup of a cloneable plugin to be deployed via the minimal proxy pattern. v1.2 (Release 1, Build 2)","version":1}}},"src/mocks/plugin/PluginMock.sol":{"PluginMockBuild1":{"abi":[{"inputs":[{"internalType":"contract IDAO","name":"_dao","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"dao","outputs":[{"internalType":"contract IDAO","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pluginType","outputs":[{"internalType":"enum IPlugin.PluginType","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"protocolVersion","outputs":[{"internalType":"uint8[3]","name":"","type":"uint8[3]"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"state1","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"DO NOT USE IN PRODUCTION!","kind":"dev","methods":{"dao()":{"returns":{"_0":"The DAO contract."}},"protocolVersion()":{"details":"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.","returns":{"_0":"Returns the semantic Aragon OSx protocol version number."}},"supportsInterface(bytes4)":{"params":{"_interfaceId":"The ID of the interface."},"returns":{"_0":"Returns `true` if the interface is supported."}}},"version":1},"evm":{"bytecode":{"functionDebugData":{"@_11522":{"entryPoint":null,"id":11522,"parameterSlots":1,"returnSlots":0},"@_13065":{"entryPoint":null,"id":13065,"parameterSlots":1,"returnSlots":0},"@_13372":{"entryPoint":null,"id":13372,"parameterSlots":1,"returnSlots":0},"abi_decode_tuple_t_contract$_IDAO_$10865_fromMemory":{"entryPoint":69,"id":null,"parameterSlots":2,"returnSlots":1}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:320:92","statements":[{"nodeType":"YulBlock","src":"6:3:92","statements":[]},{"body":{"nodeType":"YulBlock","src":"109:209:92","statements":[{"body":{"nodeType":"YulBlock","src":"155:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"164:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"167:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"157:6:92"},"nodeType":"YulFunctionCall","src":"157:12:92"},"nodeType":"YulExpressionStatement","src":"157:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"130:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"139:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"126:3:92"},"nodeType":"YulFunctionCall","src":"126:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"151:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"122:3:92"},"nodeType":"YulFunctionCall","src":"122:32:92"},"nodeType":"YulIf","src":"119:52:92"},{"nodeType":"YulVariableDeclaration","src":"180:29:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"199:9:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"193:5:92"},"nodeType":"YulFunctionCall","src":"193:16:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"184:5:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"272:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"281:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"284:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"274:6:92"},"nodeType":"YulFunctionCall","src":"274:12:92"},"nodeType":"YulExpressionStatement","src":"274:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"231:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"242:5:92"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"257:3:92","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"262:1:92","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"253:3:92"},"nodeType":"YulFunctionCall","src":"253:11:92"},{"kind":"number","nodeType":"YulLiteral","src":"266:1:92","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"249:3:92"},"nodeType":"YulFunctionCall","src":"249:19:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"238:3:92"},"nodeType":"YulFunctionCall","src":"238:31:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"228:2:92"},"nodeType":"YulFunctionCall","src":"228:42:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"221:6:92"},"nodeType":"YulFunctionCall","src":"221:50:92"},"nodeType":"YulIf","src":"218:70:92"},{"nodeType":"YulAssignment","src":"297:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"307:5:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"297:6:92"}]}]},"name":"abi_decode_tuple_t_contract$_IDAO_$10865_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"75:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"86:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"98:6:92","type":""}],"src":"14:304:92"}]},"contents":"{\n { }\n function abi_decode_tuple_t_contract$_IDAO_$10865_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := mload(headStart)\n if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n value0 := value\n }\n}","id":92,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60a060405234801561001057600080fd5b506040516102d53803806102d583398101604081905261002f91610045565b6001600160a01b03166080526001600055610075565b60006020828403121561005757600080fd5b81516001600160a01b038116811461006e57600080fd5b9392505050565b60805161024661008f600039600060c301526102466000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80634162169f116100505780634162169f146100a957806341de6830146100ed5780636accab8c146100fc57600080fd5b806301ffc9a71461006c5780632ae9c60014610094575b600080fd5b61007f61007a3660046101ac565b610113565b60405190151581526020015b60405180910390f35b61009c610164565b60405161008b91906101dd565b60405173ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016815260200161008b565b600260405161008b9190610211565b61010560005481565b60405190815260200161008b565b60006001600160e01b0319821663041de68360e41b148061014357506001600160e01b03198216621574e360e91b145b8061015e57506301ffc9a760e01b6001600160e01b03198316145b92915050565b61016c61018e565b5060408051606081018252600181526004602082015260009181019190915290565b60405180606001604052806003906020820280368337509192915050565b6000602082840312156101be57600080fd5b81356001600160e01b0319811681146101d657600080fd5b9392505050565b60608101818360005b600381101561020857815160ff168352602092830192909101906001016101e6565b50505092915050565b602081016003831061023357634e487b7160e01b600052602160045260246000fd5b9190529056fea164736f6c6343000811000a","opcodes":"PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x2D5 CODESIZE SUB DUP1 PUSH2 0x2D5 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0x45 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x80 MSTORE PUSH1 0x1 PUSH1 0x0 SSTORE PUSH2 0x75 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x57 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x6E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH2 0x246 PUSH2 0x8F PUSH1 0x0 CODECOPY PUSH1 0x0 PUSH1 0xC3 ADD MSTORE PUSH2 0x246 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x67 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x4162169F GT PUSH2 0x50 JUMPI DUP1 PUSH4 0x4162169F EQ PUSH2 0xA9 JUMPI DUP1 PUSH4 0x41DE6830 EQ PUSH2 0xED JUMPI DUP1 PUSH4 0x6ACCAB8C EQ PUSH2 0xFC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x6C JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0x94 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7F PUSH2 0x7A CALLDATASIZE PUSH1 0x4 PUSH2 0x1AC JUMP JUMPDEST PUSH2 0x113 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x9C PUSH2 0x164 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x8B SWAP2 SWAP1 PUSH2 0x1DD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x8B JUMP JUMPDEST PUSH1 0x2 PUSH1 0x40 MLOAD PUSH2 0x8B SWAP2 SWAP1 PUSH2 0x211 JUMP JUMPDEST PUSH2 0x105 PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x8B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x41DE683 PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x143 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x15E JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x16C PUSH2 0x18E JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x1D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0x208 JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x1E6 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH1 0x3 DUP4 LT PUSH2 0x233 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 SWAP1 MSTORE SWAP1 JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"291:135:50:-:0;;;361:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;844:10:66;;;416:1:50::1;407:6;:10:::0;291:135;;14:304:92;98:6;151:2;139:9;130:7;126:23;122:32;119:52;;;167:1;164;157:12;119:52;193:16;;-1:-1:-1;;;;;238:31:92;;228:42;;218:70;;284:1;281;274:12;218:70;307:5;14:304;-1:-1:-1;;;14:304:92:o;:::-;291:135:50;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@dao_13075":{"entryPoint":null,"id":13075,"parameterSlots":0,"returnSlots":1},"@pluginType_13384":{"entryPoint":null,"id":13384,"parameterSlots":0,"returnSlots":1},"@protocolVersion_14765":{"entryPoint":356,"id":14765,"parameterSlots":0,"returnSlots":1},"@state1_11508":{"entryPoint":null,"id":11508,"parameterSlots":0,"returnSlots":0},"@supportsInterface_13413":{"entryPoint":275,"id":13413,"parameterSlots":1,"returnSlots":1},"@supportsInterface_9730":{"entryPoint":null,"id":9730,"parameterSlots":1,"returnSlots":1},"abi_decode_tuple_t_bytes4":{"entryPoint":428,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed":{"entryPoint":477,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_contract$_IDAO_$10865__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_enum$_PluginType_$13330__to_t_uint8__fromStack_reversed":{"entryPoint":529,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:1776:92","statements":[{"nodeType":"YulBlock","src":"6:3:92","statements":[]},{"body":{"nodeType":"YulBlock","src":"83:217:92","statements":[{"body":{"nodeType":"YulBlock","src":"129:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"138:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"141:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"131:6:92"},"nodeType":"YulFunctionCall","src":"131:12:92"},"nodeType":"YulExpressionStatement","src":"131:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"104:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"113:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"100:3:92"},"nodeType":"YulFunctionCall","src":"100:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"125:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"96:3:92"},"nodeType":"YulFunctionCall","src":"96:32:92"},"nodeType":"YulIf","src":"93:52:92"},{"nodeType":"YulVariableDeclaration","src":"154:36:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"180:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"167:12:92"},"nodeType":"YulFunctionCall","src":"167:23:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"158:5:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"254:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"263:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"266:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"256:6:92"},"nodeType":"YulFunctionCall","src":"256:12:92"},"nodeType":"YulExpressionStatement","src":"256:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"212:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"223:5:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"234:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"239:10:92","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"230:3:92"},"nodeType":"YulFunctionCall","src":"230:20:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"219:3:92"},"nodeType":"YulFunctionCall","src":"219:32:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"209:2:92"},"nodeType":"YulFunctionCall","src":"209:43:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"202:6:92"},"nodeType":"YulFunctionCall","src":"202:51:92"},"nodeType":"YulIf","src":"199:71:92"},{"nodeType":"YulAssignment","src":"279:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"289:5:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"279:6:92"}]}]},"name":"abi_decode_tuple_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"49:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"60:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"72:6:92","type":""}],"src":"14:286:92"},{"body":{"nodeType":"YulBlock","src":"400:92:92","statements":[{"nodeType":"YulAssignment","src":"410:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"422:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"433:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"418:3:92"},"nodeType":"YulFunctionCall","src":"418:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"410:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"452:9:92"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"477:6:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"470:6:92"},"nodeType":"YulFunctionCall","src":"470:14:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"463:6:92"},"nodeType":"YulFunctionCall","src":"463:22:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"445:6:92"},"nodeType":"YulFunctionCall","src":"445:41:92"},"nodeType":"YulExpressionStatement","src":"445:41:92"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"369:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"380:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"391:4:92","type":""}],"src":"305:187:92"},{"body":{"nodeType":"YulBlock","src":"640:358:92","statements":[{"nodeType":"YulAssignment","src":"650:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"662:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"673:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"658:3:92"},"nodeType":"YulFunctionCall","src":"658:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"650:4:92"}]},{"nodeType":"YulVariableDeclaration","src":"685:20:92","value":{"name":"headStart","nodeType":"YulIdentifier","src":"696:9:92"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"689:3:92","type":""}]},{"nodeType":"YulAssignment","src":"714:16:92","value":{"name":"headStart","nodeType":"YulIdentifier","src":"721:9:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"714:3:92"}]},{"nodeType":"YulVariableDeclaration","src":"739:20:92","value":{"name":"value0","nodeType":"YulIdentifier","src":"753:6:92"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"743:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"768:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"777:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"772:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"834:158:92","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"855:3:92"},{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"870:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"864:5:92"},"nodeType":"YulFunctionCall","src":"864:13:92"},{"kind":"number","nodeType":"YulLiteral","src":"879:4:92","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"860:3:92"},"nodeType":"YulFunctionCall","src":"860:24:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"848:6:92"},"nodeType":"YulFunctionCall","src":"848:37:92"},"nodeType":"YulExpressionStatement","src":"848:37:92"},{"nodeType":"YulVariableDeclaration","src":"898:14:92","value":{"kind":"number","nodeType":"YulLiteral","src":"908:4:92","type":"","value":"0x20"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"902:2:92","type":""}]},{"nodeType":"YulAssignment","src":"925:19:92","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"936:3:92"},{"name":"_1","nodeType":"YulIdentifier","src":"941:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"932:3:92"},"nodeType":"YulFunctionCall","src":"932:12:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"925:3:92"}]},{"nodeType":"YulAssignment","src":"957:25:92","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"971:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"979:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"967:3:92"},"nodeType":"YulFunctionCall","src":"967:15:92"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"957:6:92"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"798:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"801:4:92","type":"","value":"0x03"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"795:2:92"},"nodeType":"YulFunctionCall","src":"795:11:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"807:18:92","statements":[{"nodeType":"YulAssignment","src":"809:14:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"818:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"821:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"814:3:92"},"nodeType":"YulFunctionCall","src":"814:9:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"809:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"791:3:92","statements":[]},"src":"787:205:92"}]},"name":"abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"609:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"620:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"631:4:92","type":""}],"src":"497:501:92"},{"body":{"nodeType":"YulBlock","src":"1118:125:92","statements":[{"nodeType":"YulAssignment","src":"1128:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1140:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1151:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1136:3:92"},"nodeType":"YulFunctionCall","src":"1136:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1128:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1170:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1185:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"1193:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1181:3:92"},"nodeType":"YulFunctionCall","src":"1181:55:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1163:6:92"},"nodeType":"YulFunctionCall","src":"1163:74:92"},"nodeType":"YulExpressionStatement","src":"1163:74:92"}]},"name":"abi_encode_tuple_t_contract$_IDAO_$10865__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1087:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1098:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1109:4:92","type":""}],"src":"1003:240:92"},{"body":{"nodeType":"YulBlock","src":"1363:229:92","statements":[{"nodeType":"YulAssignment","src":"1373:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1385:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1396:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1381:3:92"},"nodeType":"YulFunctionCall","src":"1381:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1373:4:92"}]},{"body":{"nodeType":"YulBlock","src":"1441:111:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1462:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1469:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"1474:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1465:3:92"},"nodeType":"YulFunctionCall","src":"1465:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1455:6:92"},"nodeType":"YulFunctionCall","src":"1455:31:92"},"nodeType":"YulExpressionStatement","src":"1455:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1506:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"1509:4:92","type":"","value":"0x21"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1499:6:92"},"nodeType":"YulFunctionCall","src":"1499:15:92"},"nodeType":"YulExpressionStatement","src":"1499:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1534:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1537:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1527:6:92"},"nodeType":"YulFunctionCall","src":"1527:15:92"},"nodeType":"YulExpressionStatement","src":"1527:15:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1421:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"1429:1:92","type":"","value":"3"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"1418:2:92"},"nodeType":"YulFunctionCall","src":"1418:13:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1411:6:92"},"nodeType":"YulFunctionCall","src":"1411:21:92"},"nodeType":"YulIf","src":"1408:144:92"},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1568:9:92"},{"name":"value0","nodeType":"YulIdentifier","src":"1579:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1561:6:92"},"nodeType":"YulFunctionCall","src":"1561:25:92"},"nodeType":"YulExpressionStatement","src":"1561:25:92"}]},"name":"abi_encode_tuple_t_enum$_PluginType_$13330__to_t_uint8__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1332:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1343:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1354:4:92","type":""}],"src":"1248:344:92"},{"body":{"nodeType":"YulBlock","src":"1698:76:92","statements":[{"nodeType":"YulAssignment","src":"1708:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1720:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1731:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1716:3:92"},"nodeType":"YulFunctionCall","src":"1716:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1708:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1750:9:92"},{"name":"value0","nodeType":"YulIdentifier","src":"1761:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1743:6:92"},"nodeType":"YulFunctionCall","src":"1743:25:92"},"nodeType":"YulExpressionStatement","src":"1743:25:92"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1667:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1678:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1689:4:92","type":""}],"src":"1597:177:92"}]},"contents":"{\n { }\n function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n if iszero(eq(value, and(value, shl(224, 0xffffffff)))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 96)\n let pos := headStart\n pos := headStart\n let srcPtr := value0\n let i := 0\n for { } lt(i, 0x03) { i := add(i, 1) }\n {\n mstore(pos, and(mload(srcPtr), 0xff))\n let _1 := 0x20\n pos := add(pos, _1)\n srcPtr := add(srcPtr, _1)\n }\n }\n function abi_encode_tuple_t_contract$_IDAO_$10865__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_encode_tuple_t_enum$_PluginType_$13330__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n if iszero(lt(value0, 3))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x21)\n revert(0, 0x24)\n }\n mstore(headStart, value0)\n }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n}","id":92,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{"13053":[{"length":32,"start":195}]},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100675760003560e01c80634162169f116100505780634162169f146100a957806341de6830146100ed5780636accab8c146100fc57600080fd5b806301ffc9a71461006c5780632ae9c60014610094575b600080fd5b61007f61007a3660046101ac565b610113565b60405190151581526020015b60405180910390f35b61009c610164565b60405161008b91906101dd565b60405173ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016815260200161008b565b600260405161008b9190610211565b61010560005481565b60405190815260200161008b565b60006001600160e01b0319821663041de68360e41b148061014357506001600160e01b03198216621574e360e91b145b8061015e57506301ffc9a760e01b6001600160e01b03198316145b92915050565b61016c61018e565b5060408051606081018252600181526004602082015260009181019190915290565b60405180606001604052806003906020820280368337509192915050565b6000602082840312156101be57600080fd5b81356001600160e01b0319811681146101d657600080fd5b9392505050565b60608101818360005b600381101561020857815160ff168352602092830192909101906001016101e6565b50505092915050565b602081016003831061023357634e487b7160e01b600052602160045260246000fd5b9190529056fea164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x67 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x4162169F GT PUSH2 0x50 JUMPI DUP1 PUSH4 0x4162169F EQ PUSH2 0xA9 JUMPI DUP1 PUSH4 0x41DE6830 EQ PUSH2 0xED JUMPI DUP1 PUSH4 0x6ACCAB8C EQ PUSH2 0xFC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x6C JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0x94 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7F PUSH2 0x7A CALLDATASIZE PUSH1 0x4 PUSH2 0x1AC JUMP JUMPDEST PUSH2 0x113 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x9C PUSH2 0x164 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x8B SWAP2 SWAP1 PUSH2 0x1DD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x8B JUMP JUMPDEST PUSH1 0x2 PUSH1 0x40 MLOAD PUSH2 0x8B SWAP2 SWAP1 PUSH2 0x211 JUMP JUMPDEST PUSH2 0x105 PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x8B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x41DE683 PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x143 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x15E JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x16C PUSH2 0x18E JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x1D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0x208 JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x1E6 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH1 0x3 DUP4 LT PUSH2 0x233 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 SWAP1 MSTORE SWAP1 JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"291:135:50:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1265:288:73;;;;;;:::i;:::-;;:::i;:::-;;;470:14:92;;463:22;445:41;;433:2;418:18;1265:288:73;;;;;;;;631:98:90;;;:::i;:::-;;;;;;;:::i;943:69:66:-;;;1193:42:92;1002:3:66;1181:55:92;1163:74;;1151:2;1136:18;943:69:66;1003:240:92;945:112:73;1026:24;945:112;;;;;;:::i;333:21:50:-;;;;;;;;;1743:25:92;;;1731:2;1716:18;333:21:50;1597:177:92;1265:288:73;1351:4;-1:-1:-1;;;;;;1386:41:73;;-1:-1:-1;;;1386:41:73;;:107;;-1:-1:-1;;;;;;;1443:50:73;;-1:-1:-1;;;1443:50:73;1386:107;:160;;;-1:-1:-1;;;;;;;;;;937:40:38;;;1509:37:73;1367:179;1265:288;-1:-1:-1;;1265:288:73:o;631:98:90:-;679:15;;:::i;:::-;-1:-1:-1;706:16:90;;;;;;;;714:1;706:16;;717:1;706:16;;;;-1:-1:-1;706:16:90;;;;;;;;631:98::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:286:92:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:92;;209:43;;199:71;;266:1;263;256:12;199:71;289:5;14:286;-1:-1:-1;;;14:286:92:o;497:501::-;673:2;658:18;;662:9;753:6;631:4;787:205;801:4;798:1;795:11;787:205;;;864:13;;879:4;860:24;848:37;;908:4;932:12;;;;967:15;;;;821:1;814:9;787:205;;;791:3;;;497:501;;;;:::o;1248:344::-;1396:2;1381:18;;1429:1;1418:13;;1408:144;;1474:10;1469:3;1465:20;1462:1;1455:31;1509:4;1506:1;1499:15;1537:4;1534:1;1527:15;1408:144;1561:25;;;1248:344;:::o"},"gasEstimates":{"creation":{"codeDepositCost":"116400","executionCost":"infinite","totalCost":"infinite"},"external":{"dao()":"infinite","pluginType()":"249","protocolVersion()":"infinite","state1()":"2339","supportsInterface(bytes4)":"482"}},"methodIdentifiers":{"dao()":"4162169f","pluginType()":"41de6830","protocolVersion()":"2ae9c600","state1()":"6accab8c","supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IDAO\",\"name\":\"_dao\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"dao\",\"outputs\":[{\"internalType\":\"contract IDAO\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pluginType\",\"outputs\":[{\"internalType\":\"enum IPlugin.PluginType\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"protocolVersion\",\"outputs\":[{\"internalType\":\"uint8[3]\",\"name\":\"\",\"type\":\"uint8[3]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"state1\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"DO NOT USE IN PRODUCTION!\",\"kind\":\"dev\",\"methods\":{\"dao()\":{\"returns\":{\"_0\":\"The DAO contract.\"}},\"protocolVersion()\":{\"details\":\"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\",\"returns\":{\"_0\":\"Returns the semantic Aragon OSx protocol version number.\"}},\"supportsInterface(bytes4)\":{\"params\":{\"_interfaceId\":\"The ID of the interface.\"},\"returns\":{\"_0\":\"Returns `true` if the interface is supported.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"dao()\":{\"notice\":\"Returns the DAO contract.\"},\"pluginType()\":{\"notice\":\"Returns the plugin's type\"},\"protocolVersion()\":{\"notice\":\"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Checks if this or the parent contract supports an interface by its ID.\"}},\"notice\":\"A mock plugin to be deployed via the `new` keyword. v1.1 (Release 1, Build 1)\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/mocks/plugin/PluginMock.sol\":\"PluginMockBuild1\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n function _contextSuffixLength() internal view virtual returns (uint256) {\\n return 0;\\n }\\n}\\n\",\"keccak256\":\"0xa92e4fa126feb6907daa0513ddd816b2eb91f30a808de54f63c17d0e162c3439\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165 is IERC165 {\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165).interfaceId;\\n }\\n}\\n\",\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"src/dao/IDAO.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IDAO\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for DAOs within the Aragon App DAO framework.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IDAO {\\n /// @notice The action struct to be consumed by the DAO's `execute` function resulting in an external call.\\n /// @param to The address to call.\\n /// @param value The native token value to be sent with the call.\\n /// @param data The bytes-encoded function selector and calldata for the call.\\n struct Action {\\n address to;\\n uint256 value;\\n bytes data;\\n }\\n\\n /// @notice Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\\n /// @param _where The address of the contract.\\n /// @param _who The address of a EOA or contract to give the permissions.\\n /// @param _permissionId The permission identifier.\\n /// @param _data The optional data passed to the `PermissionCondition` registered.\\n /// @return Returns true if the address has permission, false if not.\\n function hasPermission(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes memory _data\\n ) external view returns (bool);\\n\\n /// @notice Updates the DAO metadata (e.g., an IPFS hash).\\n /// @param _metadata The IPFS hash of the new metadata object.\\n function setMetadata(bytes calldata _metadata) external;\\n\\n /// @notice Emitted when the DAO metadata is updated.\\n /// @param metadata The IPFS hash of the new metadata object.\\n event MetadataSet(bytes metadata);\\n\\n /// @notice Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted.\\n /// @param _callId The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce.\\n /// @param _actions The array of actions.\\n /// @param _allowFailureMap A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @return The array of results obtained from the executed actions in `bytes`.\\n /// @return The resulting failure map containing the actions have actually failed.\\n function execute(\\n bytes32 _callId,\\n Action[] memory _actions,\\n uint256 _allowFailureMap\\n ) external returns (bytes[] memory, uint256);\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param actor The address of the caller.\\n /// @param callId The ID of the call.\\n /// @param actions The array of actions executed.\\n /// @param allowFailureMap The allow failure map encoding which actions are allowed to fail.\\n /// @param failureMap The failure map encoding which actions have failed.\\n /// @param execResults The array with the results of the executed actions.\\n /// @dev The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce.\\n event Executed(\\n address indexed actor,\\n bytes32 callId,\\n Action[] actions,\\n uint256 allowFailureMap,\\n uint256 failureMap,\\n bytes[] execResults\\n );\\n\\n /// @notice Emitted when a standard callback is registered.\\n /// @param interfaceId The ID of the interface.\\n /// @param callbackSelector The selector of the callback function.\\n /// @param magicNumber The magic number to be registered for the callback function selector.\\n event StandardCallbackRegistered(\\n bytes4 interfaceId,\\n bytes4 callbackSelector,\\n bytes4 magicNumber\\n );\\n\\n /// @notice Deposits (native) tokens to the DAO contract with a reference string.\\n /// @param _token The address of the token or address(0) in case of the native token.\\n /// @param _amount The amount of tokens to deposit.\\n /// @param _reference The reference describing the deposit reason.\\n function deposit(address _token, uint256 _amount, string calldata _reference) external payable;\\n\\n /// @notice Emitted when a token deposit has been made to the DAO.\\n /// @param sender The address of the sender.\\n /// @param token The address of the deposited token.\\n /// @param amount The amount of tokens deposited.\\n /// @param _reference The reference describing the deposit reason.\\n event Deposited(\\n address indexed sender,\\n address indexed token,\\n uint256 amount,\\n string _reference\\n );\\n\\n /// @notice Emitted when a native token deposit has been made to the DAO.\\n /// @dev This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).\\n /// @param sender The address of the sender.\\n /// @param amount The amount of native tokens deposited.\\n event NativeTokenDeposited(address sender, uint256 amount);\\n\\n /// @notice Setter for the trusted forwarder verifying the meta transaction.\\n /// @param _trustedForwarder The trusted forwarder address.\\n function setTrustedForwarder(address _trustedForwarder) external;\\n\\n /// @notice Getter for the trusted forwarder verifying the meta transaction.\\n /// @return The trusted forwarder address.\\n function getTrustedForwarder() external view returns (address);\\n\\n /// @notice Emitted when a new TrustedForwarder is set on the DAO.\\n /// @param forwarder the new forwarder address.\\n event TrustedForwarderSet(address forwarder);\\n\\n /// @notice Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\\n /// @param _hash The hash of the data to be signed.\\n /// @param _signature The signature byte array associated with `_hash`.\\n /// @return Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not.\\n function isValidSignature(bytes32 _hash, bytes memory _signature) external returns (bytes4);\\n\\n /// @notice Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\\n /// @param _interfaceId The ID of the interface.\\n /// @param _callbackSelector The selector of the callback function.\\n /// @param _magicNumber The magic number to be registered for the function signature.\\n function registerStandardCallback(\\n bytes4 _interfaceId,\\n bytes4 _callbackSelector,\\n bytes4 _magicNumber\\n ) external;\\n\\n /// @notice Removed function being left here to not corrupt the IDAO interface ID. Any call will revert.\\n /// @dev Introduced in v1.0.0. Removed in v1.4.0.\\n function setSignatureValidator(address) external;\\n}\\n\",\"keccak256\":\"0xb7f615523c26de042edce98731c658f44a1edb2464387ac1b642c4c69f57128e\",\"license\":\"AGPL-3.0-or-later\"},\"src/mocks/plugin/PluginMock.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {Plugin} from \\\"../../plugin/Plugin.sol\\\";\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice A mock plugin to be deployed via the `new` keyword.\\n/// v1.1 (Release 1, Build 1)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginMockBuild1 is Plugin {\\n uint256 public state1;\\n\\n constructor(IDAO _dao) Plugin(_dao) {\\n state1 = 1;\\n }\\n}\\n\",\"keccak256\":\"0x9aca72aa9f93de6de6cc6a093aaaceb62649bea46fba7f07a01a067c145c35bd\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/DaoAuthorizable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {Context} from \\\"@openzeppelin/contracts/utils/Context.sol\\\";\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\nimport {_auth} from \\\"./auth.sol\\\";\\n\\n/// @title DaoAuthorizable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract contract providing a meta-transaction compatible modifier for non-upgradeable contracts instantiated via the `new` keyword to authorize function calls through an associated DAO.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract DaoAuthorizable is Context {\\n /// @notice The associated DAO managing the permissions of inheriting contracts.\\n IDAO private immutable DAO;\\n\\n /// @notice Constructs the contract by setting the associated DAO.\\n /// @param _dao The associated DAO address.\\n constructor(IDAO _dao) {\\n DAO = _dao;\\n }\\n\\n /// @notice Returns the DAO contract.\\n /// @return The DAO contract.\\n function dao() public view returns (IDAO) {\\n return DAO;\\n }\\n\\n /// @notice A modifier to make functions on inheriting contracts authorized. Permissions to call the function are checked through the associated DAO's permission manager.\\n /// @param _permissionId The permission identifier required to call the method this modifier is applied to.\\n modifier auth(bytes32 _permissionId) {\\n _auth(DAO, address(this), _msgSender(), _permissionId, _msgData());\\n _;\\n }\\n}\\n\",\"keccak256\":\"0x3d0be91b4f5854ed2d2c51b53fe7ffba58cc968e972015cf60eb3ea100543e64\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/auth.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice Thrown if a call is unauthorized in the associated DAO.\\n/// @param dao The associated DAO.\\n/// @param where The context in which the authorization reverted.\\n/// @param who The address (EOA or contract) missing the permission.\\n/// @param permissionId The permission identifier.\\nerror DaoUnauthorized(address dao, address where, address who, bytes32 permissionId);\\n\\n/// @notice A free function checking if a caller is granted permissions on a target contract via a permission identifier that redirects the approval to a `PermissionCondition` if this was specified in the setup.\\n/// @param _where The address of the target contract for which `who` receives permission.\\n/// @param _who The address (EOA or contract) owning the permission.\\n/// @param _permissionId The permission identifier.\\n/// @param _data The optional data passed to the `PermissionCondition` registered.\\n/// @custom:security-contact sirt@aragon.org\\nfunction _auth(\\n IDAO _dao,\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes calldata _data\\n) view {\\n if (!_dao.hasPermission(_where, _who, _permissionId, _data))\\n revert DaoUnauthorized({\\n dao: address(_dao),\\n where: _where,\\n who: _who,\\n permissionId: _permissionId\\n });\\n}\\n\",\"keccak256\":\"0x878764b4f87fe0651fb3798fb9cb87c952f8c6caf6ae79c7f09de84df6c00298\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/IPlugin.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IPlugin\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the traits of a plugin.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IPlugin {\\n enum PluginType {\\n UUPS,\\n Cloneable,\\n Constructable\\n }\\n\\n /// @notice Returns the plugin's type\\n function pluginType() external view returns (PluginType);\\n}\\n\",\"keccak256\":\"0xc57cd0d10b6380ab7f54c713a509e88fd8f4ad9288313a0e8e12b8887817ddfe\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/Plugin.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ERC165} from \\\"@openzeppelin/contracts/utils/introspection/ERC165.sol\\\";\\n\\nimport {IProtocolVersion} from \\\"../utils/versioning/IProtocolVersion.sol\\\";\\nimport {ProtocolVersion} from \\\"../utils/versioning/ProtocolVersion.sol\\\";\\nimport {DaoAuthorizable} from \\\"../permission/auth/DaoAuthorizable.sol\\\";\\nimport {IDAO} from \\\"../dao/IDAO.sol\\\";\\nimport {IPlugin} from \\\"./IPlugin.sol\\\";\\n\\n/// @title Plugin\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract, non-upgradeable contract to inherit from when creating a plugin being deployed via the `new` keyword.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract Plugin is IPlugin, ERC165, DaoAuthorizable, ProtocolVersion {\\n /// @notice Constructs the plugin by storing the associated DAO.\\n /// @param _dao The DAO contract.\\n constructor(IDAO _dao) DaoAuthorizable(_dao) {}\\n\\n /// @inheritdoc IPlugin\\n function pluginType() public pure override returns (PluginType) {\\n return PluginType.Constructable;\\n }\\n\\n /// @notice Checks if this or the parent contract supports an interface by its ID.\\n /// @param _interfaceId The ID of the interface.\\n /// @return Returns `true` if the interface is supported.\\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\\n return\\n _interfaceId == type(IPlugin).interfaceId ||\\n _interfaceId == type(IProtocolVersion).interfaceId ||\\n super.supportsInterface(_interfaceId);\\n }\\n}\\n\",\"keccak256\":\"0xdda9f39f3f06fa66dc1b0688576143db5bd0aafdb557de36563de0aa68829135\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/IProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IProtocolVersion\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the semantic Aragon OSx protocol version number.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IProtocolVersion {\\n /// @notice Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\\n /// @return _version Returns the semantic Aragon OSx protocol version number.\\n /// @dev This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\\n function protocolVersion() external view returns (uint8[3] memory _version);\\n}\\n\",\"keccak256\":\"0x00a4da654d21dc1bdadbdc8bd54bb86c378c56f85e461ccc31303628ea621361\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/ProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IProtocolVersion} from \\\"./IProtocolVersion.sol\\\";\\n\\n/// @title ProtocolVersion\\n/// @author Aragon X - 2023\\n/// @notice An abstract, stateless, non-upgradeable contract providing the current Aragon OSx protocol version number.\\n/// @dev Do not add any new variables to this contract that would shift down storage in the inheritance chain.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract ProtocolVersion is IProtocolVersion {\\n // IMPORTANT: Do not add any storage variable, see the above notice.\\n\\n /// @inheritdoc IProtocolVersion\\n function protocolVersion() public pure returns (uint8[3] memory) {\\n return [1, 4, 0];\\n }\\n}\\n\",\"keccak256\":\"0x3975c937be935f687c6b6b8f379071232681e98cf04b175d72781b819ea52bdb\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[{"astId":11508,"contract":"src/mocks/plugin/PluginMock.sol:PluginMockBuild1","label":"state1","offset":0,"slot":"0","type":"t_uint256"}],"types":{"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"userdoc":{"kind":"user","methods":{"dao()":{"notice":"Returns the DAO contract."},"pluginType()":{"notice":"Returns the plugin's type"},"protocolVersion()":{"notice":"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with."},"supportsInterface(bytes4)":{"notice":"Checks if this or the parent contract supports an interface by its ID."}},"notice":"A mock plugin to be deployed via the `new` keyword. v1.1 (Release 1, Build 1)","version":1}}},"src/mocks/plugin/PluginSetupMock.sol":{"PluginSetupMockBuild1":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"ConflictingValues","type":"error"},{"inputs":[],"name":"NonUpgradeablePlugin","type":"error"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_dao","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"prepareInstallation","outputs":[{"internalType":"address","name":"plugin","type":"address"},{"components":[{"internalType":"address[]","name":"helpers","type":"address[]"},{"components":[{"internalType":"enum PermissionLib.Operation","name":"operation","type":"uint8"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"condition","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"internalType":"struct PermissionLib.MultiTargetPermission[]","name":"permissions","type":"tuple[]"}],"internalType":"struct IPluginSetup.PreparedSetupData","name":"preparedSetupData","type":"tuple"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_dao","type":"address"},{"components":[{"internalType":"address","name":"plugin","type":"address"},{"internalType":"address[]","name":"currentHelpers","type":"address[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct IPluginSetup.SetupPayload","name":"_payload","type":"tuple"}],"name":"prepareUninstallation","outputs":[{"components":[{"internalType":"enum PermissionLib.Operation","name":"operation","type":"uint8"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"condition","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"internalType":"struct PermissionLib.MultiTargetPermission[]","name":"permissions","type":"tuple[]"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_dao","type":"address"},{"internalType":"uint16","name":"_fromBuild","type":"uint16"},{"components":[{"internalType":"address","name":"plugin","type":"address"},{"internalType":"address[]","name":"currentHelpers","type":"address[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct IPluginSetup.SetupPayload","name":"_payload","type":"tuple"}],"name":"prepareUpdate","outputs":[{"internalType":"bytes","name":"","type":"bytes"},{"components":[{"internalType":"address[]","name":"helpers","type":"address[]"},{"components":[{"internalType":"enum PermissionLib.Operation","name":"operation","type":"uint8"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"condition","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"internalType":"struct PermissionLib.MultiTargetPermission[]","name":"permissions","type":"tuple[]"}],"internalType":"struct IPluginSetup.PreparedSetupData","name":"","type":"tuple"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"protocolVersion","outputs":[{"internalType":"uint8[3]","name":"","type":"uint8[3]"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"DO NOT USE IN PRODUCTION!","kind":"dev","methods":{"implementation()":{"details":"The implementation can be instantiated via the `new` keyword, cloned via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)), or proxied via the UUPS proxy pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).","returns":{"_0":"The address of the plugin implementation contract."}},"prepareInstallation(address,bytes)":{"params":{"_dao":"The address of the installing DAO.","_data":"The bytes-encoded data containing the input parameters for the installation as specified in the plugin's build metadata JSON file."},"returns":{"plugin":"The address of the `Plugin` contract being prepared for installation.","preparedSetupData":"The deployed plugin's relevant data which consists of helpers and permissions."}},"prepareUninstallation(address,(address,address[],bytes))":{"params":{"_dao":"The address of the uninstalling DAO.","_payload":"The relevant data necessary for the `prepareUninstallation`. See above."},"returns":{"permissions":"The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the uninstalling DAO."}},"prepareUpdate(address,uint16,(address,address[],bytes))":{"details":"Since the underlying plugin is non-upgradeable, this non-virtual function must always revert.","params":{"_dao":"The address of the updating DAO.","_fromBuild":"The build number of the plugin to update from.","_payload":"The relevant data necessary for the `prepareUpdate`. See above."},"returns":{"_0":"The initialization data to be passed to upgradeable contracts when the update is applied in the `PluginSetupProcessor`.","_1":"The deployed plugin's relevant data which consists of helpers and permissions."}},"protocolVersion()":{"details":"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.","returns":{"_0":"Returns the semantic Aragon OSx protocol version number."}},"supportsInterface(bytes4)":{"params":{"_interfaceId":"The ID of the interface."},"returns":{"_0":"Returns `true` if the interface is supported."}}},"version":1},"evm":{"bytecode":{"functionDebugData":{"@_11560":{"entryPoint":null,"id":11560,"parameterSlots":0,"returnSlots":0},"@_14307":{"entryPoint":null,"id":14307,"parameterSlots":1,"returnSlots":0},"abi_encode_tuple_t_contract$_IDAO_$10865__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:233:92","statements":[{"nodeType":"YulBlock","src":"6:3:92","statements":[]},{"body":{"nodeType":"YulBlock","src":"129:102:92","statements":[{"nodeType":"YulAssignment","src":"139:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"151:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"162:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"147:3:92"},"nodeType":"YulFunctionCall","src":"147:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"139:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"181:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"196:6:92"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"212:3:92","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"217:1:92","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"208:3:92"},"nodeType":"YulFunctionCall","src":"208:11:92"},{"kind":"number","nodeType":"YulLiteral","src":"221:1:92","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"204:3:92"},"nodeType":"YulFunctionCall","src":"204:19:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"192:3:92"},"nodeType":"YulFunctionCall","src":"192:32:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"174:6:92"},"nodeType":"YulFunctionCall","src":"174:51:92"},"nodeType":"YulExpressionStatement","src":"174:51:92"}]},"name":"abi_encode_tuple_t_contract$_IDAO_$10865__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"98:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"109:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"120:4:92","type":""}],"src":"14:217:92"}]},"contents":"{\n { }\n function abi_encode_tuple_t_contract$_IDAO_$10865__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n }\n}","id":92,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60a060405234801561001057600080fd5b50600060405161001f9061005d565b6001600160a01b039091168152602001604051809103906000f08015801561004b573d6000803e3d6000fd5b506001600160a01b031660805261006a565b6102d580610ce083390190565b608051610c5c610084600039600060c10152610c5c6000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c80639cb0a124116100505780639cb0a124146100eb578063a8a9c29e1461010b578063f10832f11461012c57600080fd5b806301ffc9a7146100775780632ae9c6001461009f5780635c60da1b146100b4575b600080fd5b61008a610085366004610501565b61014d565b60405190151581526020015b60405180910390f35b6100a761019e565b604051610096919061052b565b6040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152602001610096565b6100fe6100f936600461058d565b6101c8565b6040516100969190610657565b61011e6101193660046106a0565b6101de565b60405161009692919061079a565b61013f61013a366004610815565b610216565b6040516100969291906108d7565b60006001600160e01b0319821663099718b560e41b148061017d57506001600160e01b03198216621574e360e91b145b8061019857506301ffc9a760e01b6001600160e01b03198316145b92915050565b6101a66104d6565b5060408051606081018252600181526004602082015260009181019190915290565b60606101d76000600180610298565b9392505050565b60606101fd604051806040016040528060608152602001606081525090565b60405163a112810160e01b815260040160405180910390fd5b6000610235604051806040016040528060608152602001606081525090565b83604051610242906104f4565b6001600160a01b039091168152602001604051809103906000f08015801561026e573d6000803e3d6000fd5b50915061027b600161041d565b815261028a6000600181610298565b602082015290939092509050565b6060826001600160a01b0316846001600160a01b031611156102cd57604051633a4013cd60e21b815260040160405180910390fd5b6102d78484610917565b6001600160a01b031667ffffffffffffffff8111156102f8576102f86107ff565b60405190808252806020026020018201604052801561035157816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282526000199092019101816103165790505b509050835b836001600160a01b0316816001600160a01b03161015610415576040518060a0016040528084600281111561038d5761038d6105db565b81526001600160a01b038316602082018190526040820152600060608201527fa280eec51ab8e1bc4b6b0c1b7f1bde785761b787a49db404e3e9338ed9b016ef608090910152826103de8784610917565b6001600160a01b0316815181106103f7576103f761093e565b6020026020010181905250808061040d90610954565b915050610356565b509392505050565b6060816001600160a01b031667ffffffffffffffff811115610441576104416107ff565b60405190808252806020026020018201604052801561046a578160200160208202803683370190505b50905060005b826001600160a01b0316816001600160a01b031610156104d0578082826001600160a01b0316815181106104a6576104a661093e565b6001600160a01b0390921660209283029190910190910152806104c881610954565b915050610470565b50919050565b60405180606001604052806003906020820280368337509192915050565b6102d58061097b83390190565b60006020828403121561051357600080fd5b81356001600160e01b0319811681146101d757600080fd5b60608101818360005b600381101561055657815160ff16835260209283019290910190600101610534565b50505092915050565b80356001600160a01b038116811461057657600080fd5b919050565b6000606082840312156104d057600080fd5b600080604083850312156105a057600080fd5b6105a98361055f565b9150602083013567ffffffffffffffff8111156105c557600080fd5b6105d18582860161057b565b9150509250929050565b634e487b7160e01b600052602160045260246000fd5b600081516003811061061357634e487b7160e01b600052602160045260246000fd5b8352506020818101516001600160a01b0390811691840191909152604080830151821690840152606080830151909116908301526080908101519082015260a00190565b6020808252825182820181905260009190848201906040850190845b81811015610694576106868385516105f1565b938501939250600101610673565b50909695505050505050565b6000806000606084860312156106b557600080fd5b6106be8461055f565b9250602084013561ffff811681146106d557600080fd5b9150604084013567ffffffffffffffff8111156106f157600080fd5b6106fd8682870161057b565b9150509250925092565b805160408084528151908401819052600091602091908201906060860190845b8181101561074c5783516001600160a01b031683529284019291840191600101610727565b50508483015186820387850152805180835290840192506000918401905b8083101561078f5761077d8285516105f1565b9150848401935060018301925061076a565b509695505050505050565b604081526000835180604084015260005b818110156107c857602081870181015160608684010152016107ab565b50600060608285010152601f19601f8201168301905060608382030160208401526107f66060820185610707565b95945050505050565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561082857600080fd5b6108318361055f565b9150602083013567ffffffffffffffff8082111561084e57600080fd5b818501915085601f83011261086257600080fd5b813581811115610874576108746107ff565b604051601f8201601f19908116603f0116810190838211818310171561089c5761089c6107ff565b816040528281528860208487010111156108b557600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6001600160a01b03831681526040602082015260006108f96040830184610707565b949350505050565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0382811682821603908082111561093757610937610901565b5092915050565b634e487b7160e01b600052603260045260246000fd5b60006001600160a01b0380831681810361097057610970610901565b600101939250505056fe60a060405234801561001057600080fd5b506040516102d53803806102d583398101604081905261002f91610045565b6001600160a01b03166080526001600055610075565b60006020828403121561005757600080fd5b81516001600160a01b038116811461006e57600080fd5b9392505050565b60805161024661008f600039600060c301526102466000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80634162169f116100505780634162169f146100a957806341de6830146100ed5780636accab8c146100fc57600080fd5b806301ffc9a71461006c5780632ae9c60014610094575b600080fd5b61007f61007a3660046101ac565b610113565b60405190151581526020015b60405180910390f35b61009c610164565b60405161008b91906101dd565b60405173ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016815260200161008b565b600260405161008b9190610211565b61010560005481565b60405190815260200161008b565b60006001600160e01b0319821663041de68360e41b148061014357506001600160e01b03198216621574e360e91b145b8061015e57506301ffc9a760e01b6001600160e01b03198316145b92915050565b61016c61018e565b5060408051606081018252600181526004602082015260009181019190915290565b60405180606001604052806003906020820280368337509192915050565b6000602082840312156101be57600080fd5b81356001600160e01b0319811681146101d657600080fd5b9392505050565b60608101818360005b600381101561020857815160ff168352602092830192909101906001016101e6565b50505092915050565b602081016003831061023357634e487b7160e01b600052602160045260246000fd5b9190529056fea164736f6c6343000811000aa164736f6c6343000811000a60a060405234801561001057600080fd5b506040516102d53803806102d583398101604081905261002f91610045565b6001600160a01b03166080526001600055610075565b60006020828403121561005757600080fd5b81516001600160a01b038116811461006e57600080fd5b9392505050565b60805161024661008f600039600060c301526102466000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80634162169f116100505780634162169f146100a957806341de6830146100ed5780636accab8c146100fc57600080fd5b806301ffc9a71461006c5780632ae9c60014610094575b600080fd5b61007f61007a3660046101ac565b610113565b60405190151581526020015b60405180910390f35b61009c610164565b60405161008b91906101dd565b60405173ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016815260200161008b565b600260405161008b9190610211565b61010560005481565b60405190815260200161008b565b60006001600160e01b0319821663041de68360e41b148061014357506001600160e01b03198216621574e360e91b145b8061015e57506301ffc9a760e01b6001600160e01b03198316145b92915050565b61016c61018e565b5060408051606081018252600181526004602082015260009181019190915290565b60405180606001604052806003906020820280368337509192915050565b6000602082840312156101be57600080fd5b81356001600160e01b0319811681146101d657600080fd5b9392505050565b60608101818360005b600381101561020857815160ff168352602092830192909101906001016101e6565b50505092915050565b602081016003831061023357634e487b7160e01b600052602160045260246000fd5b9190529056fea164736f6c6343000811000a","opcodes":"PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 PUSH1 0x40 MLOAD PUSH2 0x1F SWAP1 PUSH2 0x5D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH2 0x4B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x80 MSTORE PUSH2 0x6A JUMP JUMPDEST PUSH2 0x2D5 DUP1 PUSH2 0xCE0 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH2 0xC5C PUSH2 0x84 PUSH1 0x0 CODECOPY PUSH1 0x0 PUSH1 0xC1 ADD MSTORE PUSH2 0xC5C PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x72 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9CB0A124 GT PUSH2 0x50 JUMPI DUP1 PUSH4 0x9CB0A124 EQ PUSH2 0xEB JUMPI DUP1 PUSH4 0xA8A9C29E EQ PUSH2 0x10B JUMPI DUP1 PUSH4 0xF10832F1 EQ PUSH2 0x12C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x77 JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0x9F JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0xB4 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8A PUSH2 0x85 CALLDATASIZE PUSH1 0x4 PUSH2 0x501 JUMP JUMPDEST PUSH2 0x14D JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xA7 PUSH2 0x19E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x96 SWAP2 SWAP1 PUSH2 0x52B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x96 JUMP JUMPDEST PUSH2 0xFE PUSH2 0xF9 CALLDATASIZE PUSH1 0x4 PUSH2 0x58D JUMP JUMPDEST PUSH2 0x1C8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x96 SWAP2 SWAP1 PUSH2 0x657 JUMP JUMPDEST PUSH2 0x11E PUSH2 0x119 CALLDATASIZE PUSH1 0x4 PUSH2 0x6A0 JUMP JUMPDEST PUSH2 0x1DE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x96 SWAP3 SWAP2 SWAP1 PUSH2 0x79A JUMP JUMPDEST PUSH2 0x13F PUSH2 0x13A CALLDATASIZE PUSH1 0x4 PUSH2 0x815 JUMP JUMPDEST PUSH2 0x216 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x96 SWAP3 SWAP2 SWAP1 PUSH2 0x8D7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x99718B5 PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x17D JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x198 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1A6 PUSH2 0x4D6 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1D7 PUSH1 0x0 PUSH1 0x1 DUP1 PUSH2 0x298 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1FD PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xA1128101 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x235 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST DUP4 PUSH1 0x40 MLOAD PUSH2 0x242 SWAP1 PUSH2 0x4F4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH2 0x26E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP SWAP2 POP PUSH2 0x27B PUSH1 0x1 PUSH2 0x41D JUMP JUMPDEST DUP2 MSTORE PUSH2 0x28A PUSH1 0x0 PUSH1 0x1 DUP2 PUSH2 0x298 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE SWAP1 SWAP4 SWAP1 SWAP3 POP SWAP1 POP JUMP JUMPDEST PUSH1 0x60 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH2 0x2CD JUMPI PUSH1 0x40 MLOAD PUSH4 0x3A4013CD PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2D7 DUP5 DUP5 PUSH2 0x917 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2F8 JUMPI PUSH2 0x2F8 PUSH2 0x7FF JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x351 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD DUP3 SWAP1 MSTORE SWAP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 DUP3 ADD MSTORE DUP3 MSTORE PUSH1 0x0 NOT SWAP1 SWAP3 ADD SWAP2 ADD DUP2 PUSH2 0x316 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP DUP4 JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT ISZERO PUSH2 0x415 JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 DUP5 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x38D JUMPI PUSH2 0x38D PUSH2 0x5DB JUMP JUMPDEST DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x60 DUP3 ADD MSTORE PUSH32 0xA280EEC51AB8E1BC4B6B0C1B7F1BDE785761B787A49DB404E3E9338ED9B016EF PUSH1 0x80 SWAP1 SWAP2 ADD MSTORE DUP3 PUSH2 0x3DE DUP8 DUP5 PUSH2 0x917 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MLOAD DUP2 LT PUSH2 0x3F7 JUMPI PUSH2 0x3F7 PUSH2 0x93E JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP DUP1 DUP1 PUSH2 0x40D SWAP1 PUSH2 0x954 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x356 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x441 JUMPI PUSH2 0x441 PUSH2 0x7FF JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x46A JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT ISZERO PUSH2 0x4D0 JUMPI DUP1 DUP3 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MLOAD DUP2 LT PUSH2 0x4A6 JUMPI PUSH2 0x4A6 PUSH2 0x93E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE DUP1 PUSH2 0x4C8 DUP2 PUSH2 0x954 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x470 JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x2D5 DUP1 PUSH2 0x97B DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x513 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x1D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0x556 JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x534 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x576 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x5A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5A9 DUP4 PUSH2 0x55F JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x5C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5D1 DUP6 DUP3 DUP7 ADD PUSH2 0x57B JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP2 MLOAD PUSH1 0x3 DUP2 LT PUSH2 0x613 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP4 MSTORE POP PUSH1 0x20 DUP2 DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP1 DUP4 ADD MLOAD DUP3 AND SWAP1 DUP5 ADD MSTORE PUSH1 0x60 DUP1 DUP4 ADD MLOAD SWAP1 SWAP2 AND SWAP1 DUP4 ADD MSTORE PUSH1 0x80 SWAP1 DUP2 ADD MLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x694 JUMPI PUSH2 0x686 DUP4 DUP6 MLOAD PUSH2 0x5F1 JUMP JUMPDEST SWAP4 DUP6 ADD SWAP4 SWAP3 POP PUSH1 0x1 ADD PUSH2 0x673 JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x6B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x6BE DUP5 PUSH2 0x55F JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH2 0x6D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x6F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x6FD DUP7 DUP3 DUP8 ADD PUSH2 0x57B JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x40 DUP1 DUP5 MSTORE DUP2 MLOAD SWAP1 DUP5 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x20 SWAP2 SWAP1 DUP3 ADD SWAP1 PUSH1 0x60 DUP7 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x74C JUMPI DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x727 JUMP JUMPDEST POP POP DUP5 DUP4 ADD MLOAD DUP7 DUP3 SUB DUP8 DUP6 ADD MSTORE DUP1 MLOAD DUP1 DUP4 MSTORE SWAP1 DUP5 ADD SWAP3 POP PUSH1 0x0 SWAP2 DUP5 ADD SWAP1 JUMPDEST DUP1 DUP4 LT ISZERO PUSH2 0x78F JUMPI PUSH2 0x77D DUP3 DUP6 MLOAD PUSH2 0x5F1 JUMP JUMPDEST SWAP2 POP DUP5 DUP5 ADD SWAP4 POP PUSH1 0x1 DUP4 ADD SWAP3 POP PUSH2 0x76A JUMP JUMPDEST POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 DUP4 MLOAD DUP1 PUSH1 0x40 DUP5 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x7C8 JUMPI PUSH1 0x20 DUP2 DUP8 ADD DUP2 ADD MLOAD PUSH1 0x60 DUP7 DUP5 ADD ADD MSTORE ADD PUSH2 0x7AB JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x60 DUP3 DUP6 ADD ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP4 ADD SWAP1 POP PUSH1 0x60 DUP4 DUP3 SUB ADD PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x7F6 PUSH1 0x60 DUP3 ADD DUP6 PUSH2 0x707 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x828 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x831 DUP4 PUSH2 0x55F JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x84E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x862 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x874 JUMPI PUSH2 0x874 PUSH2 0x7FF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x89C JUMPI PUSH2 0x89C PUSH2 0x7FF JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x8B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0x8F9 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x707 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND DUP3 DUP3 AND SUB SWAP1 DUP1 DUP3 GT ISZERO PUSH2 0x937 JUMPI PUSH2 0x937 PUSH2 0x901 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND DUP2 DUP2 SUB PUSH2 0x970 JUMPI PUSH2 0x970 PUSH2 0x901 JUMP JUMPDEST PUSH1 0x1 ADD SWAP4 SWAP3 POP POP POP JUMP INVALID PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x2D5 CODESIZE SUB DUP1 PUSH2 0x2D5 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0x45 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x80 MSTORE PUSH1 0x1 PUSH1 0x0 SSTORE PUSH2 0x75 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x57 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x6E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH2 0x246 PUSH2 0x8F PUSH1 0x0 CODECOPY PUSH1 0x0 PUSH1 0xC3 ADD MSTORE PUSH2 0x246 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x67 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x4162169F GT PUSH2 0x50 JUMPI DUP1 PUSH4 0x4162169F EQ PUSH2 0xA9 JUMPI DUP1 PUSH4 0x41DE6830 EQ PUSH2 0xED JUMPI DUP1 PUSH4 0x6ACCAB8C EQ PUSH2 0xFC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x6C JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0x94 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7F PUSH2 0x7A CALLDATASIZE PUSH1 0x4 PUSH2 0x1AC JUMP JUMPDEST PUSH2 0x113 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x9C PUSH2 0x164 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x8B SWAP2 SWAP1 PUSH2 0x1DD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x8B JUMP JUMPDEST PUSH1 0x2 PUSH1 0x40 MLOAD PUSH2 0x8B SWAP2 SWAP1 PUSH2 0x211 JUMP JUMPDEST PUSH2 0x105 PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x8B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x41DE683 PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x143 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x15E JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x16C PUSH2 0x18E JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x1D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0x208 JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x1E6 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH1 0x3 DUP4 LT PUSH2 0x233 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 SWAP1 MSTORE SWAP1 JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x2D5 CODESIZE SUB DUP1 PUSH2 0x2D5 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0x45 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x80 MSTORE PUSH1 0x1 PUSH1 0x0 SSTORE PUSH2 0x75 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x57 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x6E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH2 0x246 PUSH2 0x8F PUSH1 0x0 CODECOPY PUSH1 0x0 PUSH1 0xC3 ADD MSTORE PUSH2 0x246 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x67 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x4162169F GT PUSH2 0x50 JUMPI DUP1 PUSH4 0x4162169F EQ PUSH2 0xA9 JUMPI DUP1 PUSH4 0x41DE6830 EQ PUSH2 0xED JUMPI DUP1 PUSH4 0x6ACCAB8C EQ PUSH2 0xFC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x6C JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0x94 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7F PUSH2 0x7A CALLDATASIZE PUSH1 0x4 PUSH2 0x1AC JUMP JUMPDEST PUSH2 0x113 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x9C PUSH2 0x164 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x8B SWAP2 SWAP1 PUSH2 0x1DD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x8B JUMP JUMPDEST PUSH1 0x2 PUSH1 0x40 MLOAD PUSH2 0x8B SWAP2 SWAP1 PUSH2 0x211 JUMP JUMPDEST PUSH2 0x105 PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x8B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x41DE683 PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x143 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x15E JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x16C PUSH2 0x18E JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x1D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0x208 JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x1E6 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH1 0x3 DUP4 LT PUSH2 0x233 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 SWAP1 MSTORE SWAP1 JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"624:892:51:-:0;;;676:77;;;;;;;;;;744:1;710:38;;;;;:::i;:::-;-1:-1:-1;;;;;192:32:92;;;174:51;;162:2;147:18;710:38:51;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1454:32:82;;;624:892:51;;;;;;;;;;:::o;14:217:92:-;624:892:51;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@implementation_14370":{"entryPoint":null,"id":14370,"parameterSlots":0,"returnSlots":1},"@mockHelpers_11760":{"entryPoint":1053,"id":11760,"parameterSlots":1,"returnSlots":1},"@mockPermissions_11721":{"entryPoint":664,"id":11721,"parameterSlots":3,"returnSlots":1},"@prepareInstallation_11610":{"entryPoint":534,"id":11610,"parameterSlots":2,"returnSlots":2},"@prepareUninstallation_11638":{"entryPoint":456,"id":11638,"parameterSlots":2,"returnSlots":1},"@prepareUpdate_14332":{"entryPoint":478,"id":14332,"parameterSlots":3,"returnSlots":2},"@protocolVersion_14765":{"entryPoint":414,"id":14765,"parameterSlots":0,"returnSlots":1},"@supportsInterface_14361":{"entryPoint":333,"id":14361,"parameterSlots":1,"returnSlots":1},"@supportsInterface_9730":{"entryPoint":null,"id":9730,"parameterSlots":1,"returnSlots":1},"abi_decode_address":{"entryPoint":1375,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_struct_SetupPayload_calldata":{"entryPoint":1403,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_bytes_memory_ptr":{"entryPoint":2069,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_struct$_SetupPayload_$14224_calldata_ptr":{"entryPoint":1421,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_uint16t_struct$_SetupPayload_$14224_calldata_ptr":{"entryPoint":1696,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_bytes4":{"entryPoint":1281,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encodeUpdatedPos_struct_MultiTargetPermission":{"entryPoint":1521,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_struct_PreparedSetupData":{"entryPoint":1799,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address_t_struct$_PreparedSetupData_$14216_memory_ptr__to_t_address_t_struct$_PreparedSetupData_$14216_memory_ptr__fromStack_reversed":{"entryPoint":2263,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr__fromStack_reversed":{"entryPoint":1623,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed":{"entryPoint":1323,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$14216_memory_ptr__to_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$14216_memory_ptr__fromStack_reversed":{"entryPoint":1946,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_contract$_IDAO_$10865__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_t_uint160":{"entryPoint":2327,"id":null,"parameterSlots":2,"returnSlots":1},"increment_t_uint160":{"entryPoint":2388,"id":null,"parameterSlots":1,"returnSlots":1},"panic_error_0x11":{"entryPoint":2305,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x21":{"entryPoint":1499,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x32":{"entryPoint":2366,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":2047,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:8658:92","statements":[{"nodeType":"YulBlock","src":"6:3:92","statements":[]},{"body":{"nodeType":"YulBlock","src":"83:217:92","statements":[{"body":{"nodeType":"YulBlock","src":"129:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"138:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"141:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"131:6:92"},"nodeType":"YulFunctionCall","src":"131:12:92"},"nodeType":"YulExpressionStatement","src":"131:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"104:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"113:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"100:3:92"},"nodeType":"YulFunctionCall","src":"100:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"125:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"96:3:92"},"nodeType":"YulFunctionCall","src":"96:32:92"},"nodeType":"YulIf","src":"93:52:92"},{"nodeType":"YulVariableDeclaration","src":"154:36:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"180:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"167:12:92"},"nodeType":"YulFunctionCall","src":"167:23:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"158:5:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"254:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"263:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"266:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"256:6:92"},"nodeType":"YulFunctionCall","src":"256:12:92"},"nodeType":"YulExpressionStatement","src":"256:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"212:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"223:5:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"234:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"239:10:92","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"230:3:92"},"nodeType":"YulFunctionCall","src":"230:20:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"219:3:92"},"nodeType":"YulFunctionCall","src":"219:32:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"209:2:92"},"nodeType":"YulFunctionCall","src":"209:43:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"202:6:92"},"nodeType":"YulFunctionCall","src":"202:51:92"},"nodeType":"YulIf","src":"199:71:92"},{"nodeType":"YulAssignment","src":"279:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"289:5:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"279:6:92"}]}]},"name":"abi_decode_tuple_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"49:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"60:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"72:6:92","type":""}],"src":"14:286:92"},{"body":{"nodeType":"YulBlock","src":"400:92:92","statements":[{"nodeType":"YulAssignment","src":"410:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"422:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"433:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"418:3:92"},"nodeType":"YulFunctionCall","src":"418:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"410:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"452:9:92"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"477:6:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"470:6:92"},"nodeType":"YulFunctionCall","src":"470:14:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"463:6:92"},"nodeType":"YulFunctionCall","src":"463:22:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"445:6:92"},"nodeType":"YulFunctionCall","src":"445:41:92"},"nodeType":"YulExpressionStatement","src":"445:41:92"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"369:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"380:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"391:4:92","type":""}],"src":"305:187:92"},{"body":{"nodeType":"YulBlock","src":"640:358:92","statements":[{"nodeType":"YulAssignment","src":"650:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"662:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"673:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"658:3:92"},"nodeType":"YulFunctionCall","src":"658:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"650:4:92"}]},{"nodeType":"YulVariableDeclaration","src":"685:20:92","value":{"name":"headStart","nodeType":"YulIdentifier","src":"696:9:92"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"689:3:92","type":""}]},{"nodeType":"YulAssignment","src":"714:16:92","value":{"name":"headStart","nodeType":"YulIdentifier","src":"721:9:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"714:3:92"}]},{"nodeType":"YulVariableDeclaration","src":"739:20:92","value":{"name":"value0","nodeType":"YulIdentifier","src":"753:6:92"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"743:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"768:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"777:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"772:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"834:158:92","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"855:3:92"},{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"870:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"864:5:92"},"nodeType":"YulFunctionCall","src":"864:13:92"},{"kind":"number","nodeType":"YulLiteral","src":"879:4:92","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"860:3:92"},"nodeType":"YulFunctionCall","src":"860:24:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"848:6:92"},"nodeType":"YulFunctionCall","src":"848:37:92"},"nodeType":"YulExpressionStatement","src":"848:37:92"},{"nodeType":"YulVariableDeclaration","src":"898:14:92","value":{"kind":"number","nodeType":"YulLiteral","src":"908:4:92","type":"","value":"0x20"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"902:2:92","type":""}]},{"nodeType":"YulAssignment","src":"925:19:92","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"936:3:92"},{"name":"_1","nodeType":"YulIdentifier","src":"941:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"932:3:92"},"nodeType":"YulFunctionCall","src":"932:12:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"925:3:92"}]},{"nodeType":"YulAssignment","src":"957:25:92","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"971:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"979:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"967:3:92"},"nodeType":"YulFunctionCall","src":"967:15:92"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"957:6:92"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"798:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"801:4:92","type":"","value":"0x03"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"795:2:92"},"nodeType":"YulFunctionCall","src":"795:11:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"807:18:92","statements":[{"nodeType":"YulAssignment","src":"809:14:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"818:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"821:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"814:3:92"},"nodeType":"YulFunctionCall","src":"814:9:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"809:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"791:3:92","statements":[]},"src":"787:205:92"}]},"name":"abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"609:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"620:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"631:4:92","type":""}],"src":"497:501:92"},{"body":{"nodeType":"YulBlock","src":"1104:125:92","statements":[{"nodeType":"YulAssignment","src":"1114:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1126:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1137:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1122:3:92"},"nodeType":"YulFunctionCall","src":"1122:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1114:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1156:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1171:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"1179:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1167:3:92"},"nodeType":"YulFunctionCall","src":"1167:55:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1149:6:92"},"nodeType":"YulFunctionCall","src":"1149:74:92"},"nodeType":"YulExpressionStatement","src":"1149:74:92"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1073:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1084:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1095:4:92","type":""}],"src":"1003:226:92"},{"body":{"nodeType":"YulBlock","src":"1283:147:92","statements":[{"nodeType":"YulAssignment","src":"1293:29:92","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1315:6:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1302:12:92"},"nodeType":"YulFunctionCall","src":"1302:20:92"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"1293:5:92"}]},{"body":{"nodeType":"YulBlock","src":"1408:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1417:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1420:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1410:6:92"},"nodeType":"YulFunctionCall","src":"1410:12:92"},"nodeType":"YulExpressionStatement","src":"1410:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1344:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1355:5:92"},{"kind":"number","nodeType":"YulLiteral","src":"1362:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1351:3:92"},"nodeType":"YulFunctionCall","src":"1351:54:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1341:2:92"},"nodeType":"YulFunctionCall","src":"1341:65:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1334:6:92"},"nodeType":"YulFunctionCall","src":"1334:73:92"},"nodeType":"YulIf","src":"1331:93:92"}]},"name":"abi_decode_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"1262:6:92","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"1273:5:92","type":""}],"src":"1234:196:92"},{"body":{"nodeType":"YulBlock","src":"1510:85:92","statements":[{"body":{"nodeType":"YulBlock","src":"1549:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1558:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1561:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1551:6:92"},"nodeType":"YulFunctionCall","src":"1551:12:92"},"nodeType":"YulExpressionStatement","src":"1551:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"end","nodeType":"YulIdentifier","src":"1531:3:92"},{"name":"offset","nodeType":"YulIdentifier","src":"1536:6:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1527:3:92"},"nodeType":"YulFunctionCall","src":"1527:16:92"},{"kind":"number","nodeType":"YulLiteral","src":"1545:2:92","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1523:3:92"},"nodeType":"YulFunctionCall","src":"1523:25:92"},"nodeType":"YulIf","src":"1520:45:92"},{"nodeType":"YulAssignment","src":"1574:15:92","value":{"name":"offset","nodeType":"YulIdentifier","src":"1583:6:92"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"1574:5:92"}]}]},"name":"abi_decode_struct_SetupPayload_calldata","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"1484:6:92","type":""},{"name":"end","nodeType":"YulTypedName","src":"1492:3:92","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"1500:5:92","type":""}],"src":"1435:160:92"},{"body":{"nodeType":"YulBlock","src":"1720:321:92","statements":[{"body":{"nodeType":"YulBlock","src":"1766:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1775:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1778:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1768:6:92"},"nodeType":"YulFunctionCall","src":"1768:12:92"},"nodeType":"YulExpressionStatement","src":"1768:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1741:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"1750:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1737:3:92"},"nodeType":"YulFunctionCall","src":"1737:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"1762:2:92","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1733:3:92"},"nodeType":"YulFunctionCall","src":"1733:32:92"},"nodeType":"YulIf","src":"1730:52:92"},{"nodeType":"YulAssignment","src":"1791:39:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1820:9:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"1801:18:92"},"nodeType":"YulFunctionCall","src":"1801:29:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1791:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"1839:46:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1870:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1881:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1866:3:92"},"nodeType":"YulFunctionCall","src":"1866:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1853:12:92"},"nodeType":"YulFunctionCall","src":"1853:32:92"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1843:6:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"1928:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1937:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1940:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1930:6:92"},"nodeType":"YulFunctionCall","src":"1930:12:92"},"nodeType":"YulExpressionStatement","src":"1930:12:92"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1900:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"1908:18:92","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1897:2:92"},"nodeType":"YulFunctionCall","src":"1897:30:92"},"nodeType":"YulIf","src":"1894:50:92"},{"nodeType":"YulAssignment","src":"1953:82:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2007:9:92"},{"name":"offset","nodeType":"YulIdentifier","src":"2018:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2003:3:92"},"nodeType":"YulFunctionCall","src":"2003:22:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2027:7:92"}],"functionName":{"name":"abi_decode_struct_SetupPayload_calldata","nodeType":"YulIdentifier","src":"1963:39:92"},"nodeType":"YulFunctionCall","src":"1963:72:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1953:6:92"}]}]},"name":"abi_decode_tuple_t_addresst_struct$_SetupPayload_$14224_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1678:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1689:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1701:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1709:6:92","type":""}],"src":"1600:441:92"},{"body":{"nodeType":"YulBlock","src":"2078:95:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2095:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2102:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"2107:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2098:3:92"},"nodeType":"YulFunctionCall","src":"2098:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2088:6:92"},"nodeType":"YulFunctionCall","src":"2088:31:92"},"nodeType":"YulExpressionStatement","src":"2088:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2135:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"2138:4:92","type":"","value":"0x21"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2128:6:92"},"nodeType":"YulFunctionCall","src":"2128:15:92"},"nodeType":"YulExpressionStatement","src":"2128:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2159:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2162:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2152:6:92"},"nodeType":"YulFunctionCall","src":"2152:15:92"},"nodeType":"YulExpressionStatement","src":"2152:15:92"}]},"name":"panic_error_0x21","nodeType":"YulFunctionDefinition","src":"2046:127:92"},{"body":{"nodeType":"YulBlock","src":"2268:606:92","statements":[{"nodeType":"YulVariableDeclaration","src":"2278:23:92","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2294:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2288:5:92"},"nodeType":"YulFunctionCall","src":"2288:13:92"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"2282:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"2339:111:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2360:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2367:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"2372:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2363:3:92"},"nodeType":"YulFunctionCall","src":"2363:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2353:6:92"},"nodeType":"YulFunctionCall","src":"2353:31:92"},"nodeType":"YulExpressionStatement","src":"2353:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2404:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"2407:4:92","type":"","value":"0x21"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2397:6:92"},"nodeType":"YulFunctionCall","src":"2397:15:92"},"nodeType":"YulExpressionStatement","src":"2397:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2432:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2435:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2425:6:92"},"nodeType":"YulFunctionCall","src":"2425:15:92"},"nodeType":"YulExpressionStatement","src":"2425:15:92"}]},"condition":{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"2323:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"2327:1:92","type":"","value":"3"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2320:2:92"},"nodeType":"YulFunctionCall","src":"2320:9:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2313:6:92"},"nodeType":"YulFunctionCall","src":"2313:17:92"},"nodeType":"YulIf","src":"2310:140:92"},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2466:3:92"},{"name":"_1","nodeType":"YulIdentifier","src":"2471:2:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2459:6:92"},"nodeType":"YulFunctionCall","src":"2459:15:92"},"nodeType":"YulExpressionStatement","src":"2459:15:92"},{"nodeType":"YulVariableDeclaration","src":"2483:44:92","value":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2513:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"2521:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2509:3:92"},"nodeType":"YulFunctionCall","src":"2509:17:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2503:5:92"},"nodeType":"YulFunctionCall","src":"2503:24:92"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"2487:12:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2536:52:92","value":{"kind":"number","nodeType":"YulLiteral","src":"2546:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"2540:2:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2608:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"2613:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2604:3:92"},"nodeType":"YulFunctionCall","src":"2604:14:92"},{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"2624:12:92"},{"name":"_2","nodeType":"YulIdentifier","src":"2638:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2620:3:92"},"nodeType":"YulFunctionCall","src":"2620:21:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2597:6:92"},"nodeType":"YulFunctionCall","src":"2597:45:92"},"nodeType":"YulExpressionStatement","src":"2597:45:92"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2662:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"2667:4:92","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2658:3:92"},"nodeType":"YulFunctionCall","src":"2658:14:92"},{"arguments":[{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2688:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"2696:4:92","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2684:3:92"},"nodeType":"YulFunctionCall","src":"2684:17:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2678:5:92"},"nodeType":"YulFunctionCall","src":"2678:24:92"},{"name":"_2","nodeType":"YulIdentifier","src":"2704:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2674:3:92"},"nodeType":"YulFunctionCall","src":"2674:33:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2651:6:92"},"nodeType":"YulFunctionCall","src":"2651:57:92"},"nodeType":"YulExpressionStatement","src":"2651:57:92"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2728:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"2733:4:92","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2724:3:92"},"nodeType":"YulFunctionCall","src":"2724:14:92"},{"arguments":[{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2754:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"2762:4:92","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2750:3:92"},"nodeType":"YulFunctionCall","src":"2750:17:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2744:5:92"},"nodeType":"YulFunctionCall","src":"2744:24:92"},{"name":"_2","nodeType":"YulIdentifier","src":"2770:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2740:3:92"},"nodeType":"YulFunctionCall","src":"2740:33:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2717:6:92"},"nodeType":"YulFunctionCall","src":"2717:57:92"},"nodeType":"YulExpressionStatement","src":"2717:57:92"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2794:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"2799:4:92","type":"","value":"0x80"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2790:3:92"},"nodeType":"YulFunctionCall","src":"2790:14:92"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2816:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"2824:4:92","type":"","value":"0x80"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2812:3:92"},"nodeType":"YulFunctionCall","src":"2812:17:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2806:5:92"},"nodeType":"YulFunctionCall","src":"2806:24:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2783:6:92"},"nodeType":"YulFunctionCall","src":"2783:48:92"},"nodeType":"YulExpressionStatement","src":"2783:48:92"},{"nodeType":"YulAssignment","src":"2840:28:92","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2858:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"2863:4:92","type":"","value":"0xa0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2854:3:92"},"nodeType":"YulFunctionCall","src":"2854:14:92"},"variableNames":[{"name":"updatedPos","nodeType":"YulIdentifier","src":"2840:10:92"}]}]},"name":"abi_encodeUpdatedPos_struct_MultiTargetPermission","nodeType":"YulFunctionDefinition","parameters":[{"name":"value0","nodeType":"YulTypedName","src":"2237:6:92","type":""},{"name":"pos","nodeType":"YulTypedName","src":"2245:3:92","type":""}],"returnVariables":[{"name":"updatedPos","nodeType":"YulTypedName","src":"2253:10:92","type":""}],"src":"2178:696:92"},{"body":{"nodeType":"YulBlock","src":"3110:499:92","statements":[{"nodeType":"YulVariableDeclaration","src":"3120:12:92","value":{"kind":"number","nodeType":"YulLiteral","src":"3130:2:92","type":"","value":"32"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"3124:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3141:32:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3159:9:92"},{"name":"_1","nodeType":"YulIdentifier","src":"3170:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3155:3:92"},"nodeType":"YulFunctionCall","src":"3155:18:92"},"variables":[{"name":"tail_1","nodeType":"YulTypedName","src":"3145:6:92","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3189:9:92"},{"name":"_1","nodeType":"YulIdentifier","src":"3200:2:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3182:6:92"},"nodeType":"YulFunctionCall","src":"3182:21:92"},"nodeType":"YulExpressionStatement","src":"3182:21:92"},{"nodeType":"YulVariableDeclaration","src":"3212:17:92","value":{"name":"tail_1","nodeType":"YulIdentifier","src":"3223:6:92"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"3216:3:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3238:27:92","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3258:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3252:5:92"},"nodeType":"YulFunctionCall","src":"3252:13:92"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"3242:6:92","type":""}]},{"expression":{"arguments":[{"name":"tail_1","nodeType":"YulIdentifier","src":"3281:6:92"},{"name":"length","nodeType":"YulIdentifier","src":"3289:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3274:6:92"},"nodeType":"YulFunctionCall","src":"3274:22:92"},"nodeType":"YulExpressionStatement","src":"3274:22:92"},{"nodeType":"YulAssignment","src":"3305:25:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3316:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3327:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3312:3:92"},"nodeType":"YulFunctionCall","src":"3312:18:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"3305:3:92"}]},{"nodeType":"YulVariableDeclaration","src":"3339:29:92","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3357:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"3365:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3353:3:92"},"nodeType":"YulFunctionCall","src":"3353:15:92"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"3343:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3377:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"3386:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"3381:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"3445:138:92","statements":[{"nodeType":"YulAssignment","src":"3459:76:92","value":{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"3522:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3516:5:92"},"nodeType":"YulFunctionCall","src":"3516:13:92"},{"name":"pos","nodeType":"YulIdentifier","src":"3531:3:92"}],"functionName":{"name":"abi_encodeUpdatedPos_struct_MultiTargetPermission","nodeType":"YulIdentifier","src":"3466:49:92"},"nodeType":"YulFunctionCall","src":"3466:69:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"3459:3:92"}]},{"nodeType":"YulAssignment","src":"3548:25:92","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"3562:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"3570:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3558:3:92"},"nodeType":"YulFunctionCall","src":"3558:15:92"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"3548:6:92"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3407:1:92"},{"name":"length","nodeType":"YulIdentifier","src":"3410:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"3404:2:92"},"nodeType":"YulFunctionCall","src":"3404:13:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"3418:18:92","statements":[{"nodeType":"YulAssignment","src":"3420:14:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3429:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"3432:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3425:3:92"},"nodeType":"YulFunctionCall","src":"3425:9:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"3420:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"3400:3:92","statements":[]},"src":"3396:187:92"},{"nodeType":"YulAssignment","src":"3592:11:92","value":{"name":"pos","nodeType":"YulIdentifier","src":"3600:3:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3592:4:92"}]}]},"name":"abi_encode_tuple_t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3079:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3090:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3101:4:92","type":""}],"src":"2879:730:92"},{"body":{"nodeType":"YulBlock","src":"3750:465:92","statements":[{"body":{"nodeType":"YulBlock","src":"3796:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3805:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3808:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3798:6:92"},"nodeType":"YulFunctionCall","src":"3798:12:92"},"nodeType":"YulExpressionStatement","src":"3798:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3771:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"3780:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3767:3:92"},"nodeType":"YulFunctionCall","src":"3767:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"3792:2:92","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3763:3:92"},"nodeType":"YulFunctionCall","src":"3763:32:92"},"nodeType":"YulIf","src":"3760:52:92"},{"nodeType":"YulAssignment","src":"3821:39:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3850:9:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"3831:18:92"},"nodeType":"YulFunctionCall","src":"3831:29:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3821:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"3869:45:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3899:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3910:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3895:3:92"},"nodeType":"YulFunctionCall","src":"3895:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3882:12:92"},"nodeType":"YulFunctionCall","src":"3882:32:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"3873:5:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"3964:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3973:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3976:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3966:6:92"},"nodeType":"YulFunctionCall","src":"3966:12:92"},"nodeType":"YulExpressionStatement","src":"3966:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3936:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3947:5:92"},{"kind":"number","nodeType":"YulLiteral","src":"3954:6:92","type":"","value":"0xffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3943:3:92"},"nodeType":"YulFunctionCall","src":"3943:18:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"3933:2:92"},"nodeType":"YulFunctionCall","src":"3933:29:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3926:6:92"},"nodeType":"YulFunctionCall","src":"3926:37:92"},"nodeType":"YulIf","src":"3923:57:92"},{"nodeType":"YulAssignment","src":"3989:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"3999:5:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"3989:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"4013:46:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4044:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4055:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4040:3:92"},"nodeType":"YulFunctionCall","src":"4040:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4027:12:92"},"nodeType":"YulFunctionCall","src":"4027:32:92"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4017:6:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"4102:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4111:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4114:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4104:6:92"},"nodeType":"YulFunctionCall","src":"4104:12:92"},"nodeType":"YulExpressionStatement","src":"4104:12:92"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"4074:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"4082:18:92","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4071:2:92"},"nodeType":"YulFunctionCall","src":"4071:30:92"},"nodeType":"YulIf","src":"4068:50:92"},{"nodeType":"YulAssignment","src":"4127:82:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4181:9:92"},{"name":"offset","nodeType":"YulIdentifier","src":"4192:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4177:3:92"},"nodeType":"YulFunctionCall","src":"4177:22:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4201:7:92"}],"functionName":{"name":"abi_decode_struct_SetupPayload_calldata","nodeType":"YulIdentifier","src":"4137:39:92"},"nodeType":"YulFunctionCall","src":"4137:72:92"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"4127:6:92"}]}]},"name":"abi_decode_tuple_t_addresst_uint16t_struct$_SetupPayload_$14224_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3700:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3711:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3723:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"3731:6:92","type":""},{"name":"value2","nodeType":"YulTypedName","src":"3739:6:92","type":""}],"src":"3614:601:92"},{"body":{"nodeType":"YulBlock","src":"4288:1094:92","statements":[{"nodeType":"YulVariableDeclaration","src":"4298:26:92","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4314:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"4319:4:92","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4310:3:92"},"nodeType":"YulFunctionCall","src":"4310:14:92"},"variables":[{"name":"tail","nodeType":"YulTypedName","src":"4302:4:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4333:32:92","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4359:5:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4353:5:92"},"nodeType":"YulFunctionCall","src":"4353:12:92"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"4337:12:92","type":""}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4381:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"4386:4:92","type":"","value":"0x40"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4374:6:92"},"nodeType":"YulFunctionCall","src":"4374:17:92"},"nodeType":"YulExpressionStatement","src":"4374:17:92"},{"nodeType":"YulVariableDeclaration","src":"4400:17:92","value":{"name":"tail","nodeType":"YulIdentifier","src":"4413:4:92"},"variables":[{"name":"pos_1","nodeType":"YulTypedName","src":"4404:5:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4426:33:92","value":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"4446:12:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4440:5:92"},"nodeType":"YulFunctionCall","src":"4440:19:92"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"4430:6:92","type":""}]},{"expression":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"4475:4:92"},{"name":"length","nodeType":"YulIdentifier","src":"4481:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4468:6:92"},"nodeType":"YulFunctionCall","src":"4468:20:92"},"nodeType":"YulExpressionStatement","src":"4468:20:92"},{"nodeType":"YulAssignment","src":"4497:21:92","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4510:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"4515:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4506:3:92"},"nodeType":"YulFunctionCall","src":"4506:12:92"},"variableNames":[{"name":"pos_1","nodeType":"YulIdentifier","src":"4497:5:92"}]},{"nodeType":"YulVariableDeclaration","src":"4527:14:92","value":{"kind":"number","nodeType":"YulLiteral","src":"4537:4:92","type":"","value":"0x20"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"4531:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4550:35:92","value":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"4568:12:92"},{"name":"_1","nodeType":"YulIdentifier","src":"4582:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4564:3:92"},"nodeType":"YulFunctionCall","src":"4564:21:92"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"4554:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4594:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"4603:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"4598:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"4662:175:92","statements":[{"expression":{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"4683:5:92"},{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"4700:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4694:5:92"},"nodeType":"YulFunctionCall","src":"4694:13:92"},{"kind":"number","nodeType":"YulLiteral","src":"4709:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4690:3:92"},"nodeType":"YulFunctionCall","src":"4690:62:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4676:6:92"},"nodeType":"YulFunctionCall","src":"4676:77:92"},"nodeType":"YulExpressionStatement","src":"4676:77:92"},{"nodeType":"YulAssignment","src":"4766:23:92","value":{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"4779:5:92"},{"name":"_1","nodeType":"YulIdentifier","src":"4786:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4775:3:92"},"nodeType":"YulFunctionCall","src":"4775:14:92"},"variableNames":[{"name":"pos_1","nodeType":"YulIdentifier","src":"4766:5:92"}]},{"nodeType":"YulAssignment","src":"4802:25:92","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"4816:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"4824:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4812:3:92"},"nodeType":"YulFunctionCall","src":"4812:15:92"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"4802:6:92"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"4624:1:92"},{"name":"length","nodeType":"YulIdentifier","src":"4627:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"4621:2:92"},"nodeType":"YulFunctionCall","src":"4621:13:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"4635:18:92","statements":[{"nodeType":"YulAssignment","src":"4637:14:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"4646:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"4649:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4642:3:92"},"nodeType":"YulFunctionCall","src":"4642:9:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"4637:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"4617:3:92","statements":[]},"src":"4613:224:92"},{"nodeType":"YulVariableDeclaration","src":"4846:43:92","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4878:5:92"},{"name":"_1","nodeType":"YulIdentifier","src":"4885:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4874:3:92"},"nodeType":"YulFunctionCall","src":"4874:14:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4868:5:92"},"nodeType":"YulFunctionCall","src":"4868:21:92"},"variables":[{"name":"memberValue0_1","nodeType":"YulTypedName","src":"4850:14:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4909:3:92"},{"name":"_1","nodeType":"YulIdentifier","src":"4914:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4905:3:92"},"nodeType":"YulFunctionCall","src":"4905:12:92"},{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"4923:5:92"},{"name":"pos","nodeType":"YulIdentifier","src":"4930:3:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4919:3:92"},"nodeType":"YulFunctionCall","src":"4919:15:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4898:6:92"},"nodeType":"YulFunctionCall","src":"4898:37:92"},"nodeType":"YulExpressionStatement","src":"4898:37:92"},{"nodeType":"YulVariableDeclaration","src":"4944:18:92","value":{"name":"pos_1","nodeType":"YulIdentifier","src":"4957:5:92"},"variables":[{"name":"pos_2","nodeType":"YulTypedName","src":"4948:5:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4971:37:92","value":{"arguments":[{"name":"memberValue0_1","nodeType":"YulIdentifier","src":"4993:14:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4987:5:92"},"nodeType":"YulFunctionCall","src":"4987:21:92"},"variables":[{"name":"length_1","nodeType":"YulTypedName","src":"4975:8:92","type":""}]},{"expression":{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5024:5:92"},{"name":"length_1","nodeType":"YulIdentifier","src":"5031:8:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5017:6:92"},"nodeType":"YulFunctionCall","src":"5017:23:92"},"nodeType":"YulExpressionStatement","src":"5017:23:92"},{"nodeType":"YulAssignment","src":"5049:23:92","value":{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5062:5:92"},{"name":"_1","nodeType":"YulIdentifier","src":"5069:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5058:3:92"},"nodeType":"YulFunctionCall","src":"5058:14:92"},"variableNames":[{"name":"pos_2","nodeType":"YulIdentifier","src":"5049:5:92"}]},{"nodeType":"YulVariableDeclaration","src":"5081:39:92","value":{"arguments":[{"name":"memberValue0_1","nodeType":"YulIdentifier","src":"5101:14:92"},{"name":"_1","nodeType":"YulIdentifier","src":"5117:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5097:3:92"},"nodeType":"YulFunctionCall","src":"5097:23:92"},"variables":[{"name":"srcPtr_1","nodeType":"YulTypedName","src":"5085:8:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5129:12:92","value":{"kind":"number","nodeType":"YulLiteral","src":"5140:1:92","type":"","value":"0"},"variables":[{"name":"i_1","nodeType":"YulTypedName","src":"5133:3:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"5207:148:92","statements":[{"nodeType":"YulAssignment","src":"5221:82:92","value":{"arguments":[{"arguments":[{"name":"srcPtr_1","nodeType":"YulIdentifier","src":"5286:8:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5280:5:92"},"nodeType":"YulFunctionCall","src":"5280:15:92"},{"name":"pos_2","nodeType":"YulIdentifier","src":"5297:5:92"}],"functionName":{"name":"abi_encodeUpdatedPos_struct_MultiTargetPermission","nodeType":"YulIdentifier","src":"5230:49:92"},"nodeType":"YulFunctionCall","src":"5230:73:92"},"variableNames":[{"name":"pos_2","nodeType":"YulIdentifier","src":"5221:5:92"}]},{"nodeType":"YulAssignment","src":"5316:29:92","value":{"arguments":[{"name":"srcPtr_1","nodeType":"YulIdentifier","src":"5332:8:92"},{"name":"_1","nodeType":"YulIdentifier","src":"5342:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5328:3:92"},"nodeType":"YulFunctionCall","src":"5328:17:92"},"variableNames":[{"name":"srcPtr_1","nodeType":"YulIdentifier","src":"5316:8:92"}]}]},"condition":{"arguments":[{"name":"i_1","nodeType":"YulIdentifier","src":"5161:3:92"},{"name":"length_1","nodeType":"YulIdentifier","src":"5166:8:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"5158:2:92"},"nodeType":"YulFunctionCall","src":"5158:17:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"5176:22:92","statements":[{"nodeType":"YulAssignment","src":"5178:18:92","value":{"arguments":[{"name":"i_1","nodeType":"YulIdentifier","src":"5189:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"5194:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5185:3:92"},"nodeType":"YulFunctionCall","src":"5185:11:92"},"variableNames":[{"name":"i_1","nodeType":"YulIdentifier","src":"5178:3:92"}]}]},"pre":{"nodeType":"YulBlock","src":"5154:3:92","statements":[]},"src":"5150:205:92"},{"nodeType":"YulAssignment","src":"5364:12:92","value":{"name":"pos_2","nodeType":"YulIdentifier","src":"5371:5:92"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"5364:3:92"}]}]},"name":"abi_encode_struct_PreparedSetupData","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"4265:5:92","type":""},{"name":"pos","nodeType":"YulTypedName","src":"4272:3:92","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"4280:3:92","type":""}],"src":"4220:1162:92"},{"body":{"nodeType":"YulBlock","src":"5606:542:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5623:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5634:2:92","type":"","value":"64"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5616:6:92"},"nodeType":"YulFunctionCall","src":"5616:21:92"},"nodeType":"YulExpressionStatement","src":"5616:21:92"},{"nodeType":"YulVariableDeclaration","src":"5646:27:92","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5666:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5660:5:92"},"nodeType":"YulFunctionCall","src":"5660:13:92"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"5650:6:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5693:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5704:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5689:3:92"},"nodeType":"YulFunctionCall","src":"5689:18:92"},{"name":"length","nodeType":"YulIdentifier","src":"5709:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5682:6:92"},"nodeType":"YulFunctionCall","src":"5682:34:92"},"nodeType":"YulExpressionStatement","src":"5682:34:92"},{"nodeType":"YulVariableDeclaration","src":"5725:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"5734:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"5729:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"5796:92:92","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5825:9:92"},{"name":"i","nodeType":"YulIdentifier","src":"5836:1:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5821:3:92"},"nodeType":"YulFunctionCall","src":"5821:17:92"},{"kind":"number","nodeType":"YulLiteral","src":"5840:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5817:3:92"},"nodeType":"YulFunctionCall","src":"5817:26:92"},{"arguments":[{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5859:6:92"},{"name":"i","nodeType":"YulIdentifier","src":"5867:1:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5855:3:92"},"nodeType":"YulFunctionCall","src":"5855:14:92"},{"kind":"number","nodeType":"YulLiteral","src":"5871:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5851:3:92"},"nodeType":"YulFunctionCall","src":"5851:25:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5845:5:92"},"nodeType":"YulFunctionCall","src":"5845:32:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5810:6:92"},"nodeType":"YulFunctionCall","src":"5810:68:92"},"nodeType":"YulExpressionStatement","src":"5810:68:92"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"5755:1:92"},{"name":"length","nodeType":"YulIdentifier","src":"5758:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"5752:2:92"},"nodeType":"YulFunctionCall","src":"5752:13:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"5766:21:92","statements":[{"nodeType":"YulAssignment","src":"5768:17:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"5777:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"5780:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5773:3:92"},"nodeType":"YulFunctionCall","src":"5773:12:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"5768:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"5748:3:92","statements":[]},"src":"5744:144:92"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5912:9:92"},{"name":"length","nodeType":"YulIdentifier","src":"5923:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5908:3:92"},"nodeType":"YulFunctionCall","src":"5908:22:92"},{"kind":"number","nodeType":"YulLiteral","src":"5932:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5904:3:92"},"nodeType":"YulFunctionCall","src":"5904:31:92"},{"kind":"number","nodeType":"YulLiteral","src":"5937:1:92","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5897:6:92"},"nodeType":"YulFunctionCall","src":"5897:42:92"},"nodeType":"YulExpressionStatement","src":"5897:42:92"},{"nodeType":"YulVariableDeclaration","src":"5948:55:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5962:9:92"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"5981:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"5989:2:92","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5977:3:92"},"nodeType":"YulFunctionCall","src":"5977:15:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5998:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"5994:3:92"},"nodeType":"YulFunctionCall","src":"5994:7:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5973:3:92"},"nodeType":"YulFunctionCall","src":"5973:29:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5958:3:92"},"nodeType":"YulFunctionCall","src":"5958:45:92"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"5952:2:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6023:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6034:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6019:3:92"},"nodeType":"YulFunctionCall","src":"6019:20:92"},{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"6049:2:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"6053:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6045:3:92"},"nodeType":"YulFunctionCall","src":"6045:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"6065:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6041:3:92"},"nodeType":"YulFunctionCall","src":"6041:27:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6012:6:92"},"nodeType":"YulFunctionCall","src":"6012:57:92"},"nodeType":"YulExpressionStatement","src":"6012:57:92"},{"nodeType":"YulAssignment","src":"6078:64:92","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"6122:6:92"},{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"6134:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"6138:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6130:3:92"},"nodeType":"YulFunctionCall","src":"6130:11:92"}],"functionName":{"name":"abi_encode_struct_PreparedSetupData","nodeType":"YulIdentifier","src":"6086:35:92"},"nodeType":"YulFunctionCall","src":"6086:56:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6078:4:92"}]}]},"name":"abi_encode_tuple_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$14216_memory_ptr__to_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$14216_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5567:9:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"5578:6:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"5586:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5597:4:92","type":""}],"src":"5387:761:92"},{"body":{"nodeType":"YulBlock","src":"6185:95:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6202:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6209:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"6214:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"6205:3:92"},"nodeType":"YulFunctionCall","src":"6205:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6195:6:92"},"nodeType":"YulFunctionCall","src":"6195:31:92"},"nodeType":"YulExpressionStatement","src":"6195:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6242:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"6245:4:92","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6235:6:92"},"nodeType":"YulFunctionCall","src":"6235:15:92"},"nodeType":"YulExpressionStatement","src":"6235:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6266:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6269:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6259:6:92"},"nodeType":"YulFunctionCall","src":"6259:15:92"},"nodeType":"YulExpressionStatement","src":"6259:15:92"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"6153:127:92"},{"body":{"nodeType":"YulBlock","src":"6381:899:92","statements":[{"body":{"nodeType":"YulBlock","src":"6427:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6436:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6439:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6429:6:92"},"nodeType":"YulFunctionCall","src":"6429:12:92"},"nodeType":"YulExpressionStatement","src":"6429:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"6402:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"6411:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6398:3:92"},"nodeType":"YulFunctionCall","src":"6398:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"6423:2:92","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6394:3:92"},"nodeType":"YulFunctionCall","src":"6394:32:92"},"nodeType":"YulIf","src":"6391:52:92"},{"nodeType":"YulAssignment","src":"6452:39:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6481:9:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"6462:18:92"},"nodeType":"YulFunctionCall","src":"6462:29:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"6452:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"6500:46:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6531:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6542:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6527:3:92"},"nodeType":"YulFunctionCall","src":"6527:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6514:12:92"},"nodeType":"YulFunctionCall","src":"6514:32:92"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"6504:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"6555:28:92","value":{"kind":"number","nodeType":"YulLiteral","src":"6565:18:92","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"6559:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"6610:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6619:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6622:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6612:6:92"},"nodeType":"YulFunctionCall","src":"6612:12:92"},"nodeType":"YulExpressionStatement","src":"6612:12:92"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"6598:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"6606:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6595:2:92"},"nodeType":"YulFunctionCall","src":"6595:14:92"},"nodeType":"YulIf","src":"6592:34:92"},{"nodeType":"YulVariableDeclaration","src":"6635:32:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6649:9:92"},{"name":"offset","nodeType":"YulIdentifier","src":"6660:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6645:3:92"},"nodeType":"YulFunctionCall","src":"6645:22:92"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"6639:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"6715:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6724:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6727:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6717:6:92"},"nodeType":"YulFunctionCall","src":"6717:12:92"},"nodeType":"YulExpressionStatement","src":"6717:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"6694:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"6698:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6690:3:92"},"nodeType":"YulFunctionCall","src":"6690:13:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"6705:7:92"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6686:3:92"},"nodeType":"YulFunctionCall","src":"6686:27:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"6679:6:92"},"nodeType":"YulFunctionCall","src":"6679:35:92"},"nodeType":"YulIf","src":"6676:55:92"},{"nodeType":"YulVariableDeclaration","src":"6740:26:92","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"6763:2:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6750:12:92"},"nodeType":"YulFunctionCall","src":"6750:16:92"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"6744:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"6789:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"6791:16:92"},"nodeType":"YulFunctionCall","src":"6791:18:92"},"nodeType":"YulExpressionStatement","src":"6791:18:92"}]},"condition":{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"6781:2:92"},{"name":"_1","nodeType":"YulIdentifier","src":"6785:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6778:2:92"},"nodeType":"YulFunctionCall","src":"6778:10:92"},"nodeType":"YulIf","src":"6775:36:92"},{"nodeType":"YulVariableDeclaration","src":"6820:17:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6834:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"6830:3:92"},"nodeType":"YulFunctionCall","src":"6830:7:92"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"6824:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"6846:23:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6866:2:92","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6860:5:92"},"nodeType":"YulFunctionCall","src":"6860:9:92"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"6850:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"6878:71:92","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"6900:6:92"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"6924:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"6928:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6920:3:92"},"nodeType":"YulFunctionCall","src":"6920:13:92"},{"name":"_4","nodeType":"YulIdentifier","src":"6935:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"6916:3:92"},"nodeType":"YulFunctionCall","src":"6916:22:92"},{"kind":"number","nodeType":"YulLiteral","src":"6940:2:92","type":"","value":"63"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6912:3:92"},"nodeType":"YulFunctionCall","src":"6912:31:92"},{"name":"_4","nodeType":"YulIdentifier","src":"6945:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"6908:3:92"},"nodeType":"YulFunctionCall","src":"6908:40:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6896:3:92"},"nodeType":"YulFunctionCall","src":"6896:53:92"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"6882:10:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"7008:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"7010:16:92"},"nodeType":"YulFunctionCall","src":"7010:18:92"},"nodeType":"YulExpressionStatement","src":"7010:18:92"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"6967:10:92"},{"name":"_1","nodeType":"YulIdentifier","src":"6979:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6964:2:92"},"nodeType":"YulFunctionCall","src":"6964:18:92"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"6987:10:92"},{"name":"memPtr","nodeType":"YulIdentifier","src":"6999:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"6984:2:92"},"nodeType":"YulFunctionCall","src":"6984:22:92"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"6961:2:92"},"nodeType":"YulFunctionCall","src":"6961:46:92"},"nodeType":"YulIf","src":"6958:72:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7046:2:92","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"7050:10:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7039:6:92"},"nodeType":"YulFunctionCall","src":"7039:22:92"},"nodeType":"YulExpressionStatement","src":"7039:22:92"},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7077:6:92"},{"name":"_3","nodeType":"YulIdentifier","src":"7085:2:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7070:6:92"},"nodeType":"YulFunctionCall","src":"7070:18:92"},"nodeType":"YulExpressionStatement","src":"7070:18:92"},{"body":{"nodeType":"YulBlock","src":"7134:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7143:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7146:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7136:6:92"},"nodeType":"YulFunctionCall","src":"7136:12:92"},"nodeType":"YulExpressionStatement","src":"7136:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"7111:2:92"},{"name":"_3","nodeType":"YulIdentifier","src":"7115:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7107:3:92"},"nodeType":"YulFunctionCall","src":"7107:11:92"},{"kind":"number","nodeType":"YulLiteral","src":"7120:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7103:3:92"},"nodeType":"YulFunctionCall","src":"7103:20:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"7125:7:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"7100:2:92"},"nodeType":"YulFunctionCall","src":"7100:33:92"},"nodeType":"YulIf","src":"7097:53:92"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7176:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"7184:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7172:3:92"},"nodeType":"YulFunctionCall","src":"7172:15:92"},{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"7193:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"7197:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7189:3:92"},"nodeType":"YulFunctionCall","src":"7189:11:92"},{"name":"_3","nodeType":"YulIdentifier","src":"7202:2:92"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"7159:12:92"},"nodeType":"YulFunctionCall","src":"7159:46:92"},"nodeType":"YulExpressionStatement","src":"7159:46:92"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7229:6:92"},{"name":"_3","nodeType":"YulIdentifier","src":"7237:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7225:3:92"},"nodeType":"YulFunctionCall","src":"7225:15:92"},{"kind":"number","nodeType":"YulLiteral","src":"7242:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7221:3:92"},"nodeType":"YulFunctionCall","src":"7221:24:92"},{"kind":"number","nodeType":"YulLiteral","src":"7247:1:92","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7214:6:92"},"nodeType":"YulFunctionCall","src":"7214:35:92"},"nodeType":"YulExpressionStatement","src":"7214:35:92"},{"nodeType":"YulAssignment","src":"7258:16:92","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"7268:6:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"7258:6:92"}]}]},"name":"abi_decode_tuple_t_addresst_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6339:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"6350:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"6362:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"6370:6:92","type":""}],"src":"6285:995:92"},{"body":{"nodeType":"YulBlock","src":"7486:209:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7503:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7518:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"7526:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7514:3:92"},"nodeType":"YulFunctionCall","src":"7514:55:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7496:6:92"},"nodeType":"YulFunctionCall","src":"7496:74:92"},"nodeType":"YulExpressionStatement","src":"7496:74:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7590:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7601:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7586:3:92"},"nodeType":"YulFunctionCall","src":"7586:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"7606:2:92","type":"","value":"64"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7579:6:92"},"nodeType":"YulFunctionCall","src":"7579:30:92"},"nodeType":"YulExpressionStatement","src":"7579:30:92"},{"nodeType":"YulAssignment","src":"7618:71:92","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"7662:6:92"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7674:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7685:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7670:3:92"},"nodeType":"YulFunctionCall","src":"7670:18:92"}],"functionName":{"name":"abi_encode_struct_PreparedSetupData","nodeType":"YulIdentifier","src":"7626:35:92"},"nodeType":"YulFunctionCall","src":"7626:63:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7618:4:92"}]}]},"name":"abi_encode_tuple_t_address_t_struct$_PreparedSetupData_$14216_memory_ptr__to_t_address_t_struct$_PreparedSetupData_$14216_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7447:9:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"7458:6:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"7466:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7477:4:92","type":""}],"src":"7285:410:92"},{"body":{"nodeType":"YulBlock","src":"7815:125:92","statements":[{"nodeType":"YulAssignment","src":"7825:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7837:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7848:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7833:3:92"},"nodeType":"YulFunctionCall","src":"7833:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7825:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7867:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7882:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"7890:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7878:3:92"},"nodeType":"YulFunctionCall","src":"7878:55:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7860:6:92"},"nodeType":"YulFunctionCall","src":"7860:74:92"},"nodeType":"YulExpressionStatement","src":"7860:74:92"}]},"name":"abi_encode_tuple_t_contract$_IDAO_$10865__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7784:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"7795:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7806:4:92","type":""}],"src":"7700:240:92"},{"body":{"nodeType":"YulBlock","src":"7977:95:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7994:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8001:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"8006:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"7997:3:92"},"nodeType":"YulFunctionCall","src":"7997:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7987:6:92"},"nodeType":"YulFunctionCall","src":"7987:31:92"},"nodeType":"YulExpressionStatement","src":"7987:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8034:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"8037:4:92","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8027:6:92"},"nodeType":"YulFunctionCall","src":"8027:15:92"},"nodeType":"YulExpressionStatement","src":"8027:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8058:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8061:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8051:6:92"},"nodeType":"YulFunctionCall","src":"8051:15:92"},"nodeType":"YulExpressionStatement","src":"8051:15:92"}]},"name":"panic_error_0x11","nodeType":"YulFunctionDefinition","src":"7945:127:92"},{"body":{"nodeType":"YulBlock","src":"8126:159:92","statements":[{"nodeType":"YulVariableDeclaration","src":"8136:52:92","value":{"kind":"number","nodeType":"YulLiteral","src":"8146:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"8140:2:92","type":""}]},{"nodeType":"YulAssignment","src":"8197:35:92","value":{"arguments":[{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"8213:1:92"},{"name":"_1","nodeType":"YulIdentifier","src":"8216:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8209:3:92"},"nodeType":"YulFunctionCall","src":"8209:10:92"},{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"8225:1:92"},{"name":"_1","nodeType":"YulIdentifier","src":"8228:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8221:3:92"},"nodeType":"YulFunctionCall","src":"8221:10:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"8205:3:92"},"nodeType":"YulFunctionCall","src":"8205:27:92"},"variableNames":[{"name":"diff","nodeType":"YulIdentifier","src":"8197:4:92"}]},{"body":{"nodeType":"YulBlock","src":"8257:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"8259:16:92"},"nodeType":"YulFunctionCall","src":"8259:18:92"},"nodeType":"YulExpressionStatement","src":"8259:18:92"}]},"condition":{"arguments":[{"name":"diff","nodeType":"YulIdentifier","src":"8247:4:92"},{"name":"_1","nodeType":"YulIdentifier","src":"8253:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"8244:2:92"},"nodeType":"YulFunctionCall","src":"8244:12:92"},"nodeType":"YulIf","src":"8241:38:92"}]},"name":"checked_sub_t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"8108:1:92","type":""},{"name":"y","nodeType":"YulTypedName","src":"8111:1:92","type":""}],"returnVariables":[{"name":"diff","nodeType":"YulTypedName","src":"8117:4:92","type":""}],"src":"8077:208:92"},{"body":{"nodeType":"YulBlock","src":"8322:95:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8339:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8346:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"8351:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"8342:3:92"},"nodeType":"YulFunctionCall","src":"8342:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8332:6:92"},"nodeType":"YulFunctionCall","src":"8332:31:92"},"nodeType":"YulExpressionStatement","src":"8332:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8379:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"8382:4:92","type":"","value":"0x32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8372:6:92"},"nodeType":"YulFunctionCall","src":"8372:15:92"},"nodeType":"YulExpressionStatement","src":"8372:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8403:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8406:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8396:6:92"},"nodeType":"YulFunctionCall","src":"8396:15:92"},"nodeType":"YulExpressionStatement","src":"8396:15:92"}]},"name":"panic_error_0x32","nodeType":"YulFunctionDefinition","src":"8290:127:92"},{"body":{"nodeType":"YulBlock","src":"8469:187:92","statements":[{"nodeType":"YulVariableDeclaration","src":"8479:52:92","value":{"kind":"number","nodeType":"YulLiteral","src":"8489:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"8483:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"8540:29:92","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8559:5:92"},{"name":"_1","nodeType":"YulIdentifier","src":"8566:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8555:3:92"},"nodeType":"YulFunctionCall","src":"8555:14:92"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"8544:7:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"8597:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"8599:16:92"},"nodeType":"YulFunctionCall","src":"8599:18:92"},"nodeType":"YulExpressionStatement","src":"8599:18:92"}]},"condition":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"8584:7:92"},{"name":"_1","nodeType":"YulIdentifier","src":"8593:2:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"8581:2:92"},"nodeType":"YulFunctionCall","src":"8581:15:92"},"nodeType":"YulIf","src":"8578:41:92"},{"nodeType":"YulAssignment","src":"8628:22:92","value":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"8639:7:92"},{"kind":"number","nodeType":"YulLiteral","src":"8648:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8635:3:92"},"nodeType":"YulFunctionCall","src":"8635:15:92"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"8628:3:92"}]}]},"name":"increment_t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"8451:5:92","type":""}],"returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"8461:3:92","type":""}],"src":"8422:234:92"}]},"contents":"{\n { }\n function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n if iszero(eq(value, and(value, shl(224, 0xffffffff)))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 96)\n let pos := headStart\n pos := headStart\n let srcPtr := value0\n let i := 0\n for { } lt(i, 0x03) { i := add(i, 1) }\n {\n mstore(pos, and(mload(srcPtr), 0xff))\n let _1 := 0x20\n pos := add(pos, _1)\n srcPtr := add(srcPtr, _1)\n }\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_decode_address(offset) -> value\n {\n value := calldataload(offset)\n if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n }\n function abi_decode_struct_SetupPayload_calldata(offset, end) -> value\n {\n if slt(sub(end, offset), 96) { revert(0, 0) }\n value := offset\n }\n function abi_decode_tuple_t_addresst_struct$_SetupPayload_$14224_calldata_ptr(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n let offset := calldataload(add(headStart, 32))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n value1 := abi_decode_struct_SetupPayload_calldata(add(headStart, offset), dataEnd)\n }\n function panic_error_0x21()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x21)\n revert(0, 0x24)\n }\n function abi_encodeUpdatedPos_struct_MultiTargetPermission(value0, pos) -> updatedPos\n {\n let _1 := mload(value0)\n if iszero(lt(_1, 3))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x21)\n revert(0, 0x24)\n }\n mstore(pos, _1)\n let memberValue0 := mload(add(value0, 0x20))\n let _2 := 0xffffffffffffffffffffffffffffffffffffffff\n mstore(add(pos, 0x20), and(memberValue0, _2))\n mstore(add(pos, 0x40), and(mload(add(value0, 0x40)), _2))\n mstore(add(pos, 0x60), and(mload(add(value0, 0x60)), _2))\n mstore(add(pos, 0x80), mload(add(value0, 0x80)))\n updatedPos := add(pos, 0xa0)\n }\n function abi_encode_tuple_t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n let _1 := 32\n let tail_1 := add(headStart, _1)\n mstore(headStart, _1)\n let pos := tail_1\n let length := mload(value0)\n mstore(tail_1, length)\n pos := add(headStart, 64)\n let srcPtr := add(value0, _1)\n let i := 0\n for { } lt(i, length) { i := add(i, 1) }\n {\n pos := abi_encodeUpdatedPos_struct_MultiTargetPermission(mload(srcPtr), pos)\n srcPtr := add(srcPtr, _1)\n }\n tail := pos\n }\n function abi_decode_tuple_t_addresst_uint16t_struct$_SetupPayload_$14224_calldata_ptr(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n let value := calldataload(add(headStart, 32))\n if iszero(eq(value, and(value, 0xffff))) { revert(0, 0) }\n value1 := value\n let offset := calldataload(add(headStart, 64))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n value2 := abi_decode_struct_SetupPayload_calldata(add(headStart, offset), dataEnd)\n }\n function abi_encode_struct_PreparedSetupData(value, pos) -> end\n {\n let tail := add(pos, 0x40)\n let memberValue0 := mload(value)\n mstore(pos, 0x40)\n let pos_1 := tail\n let length := mload(memberValue0)\n mstore(tail, length)\n pos_1 := add(pos, 96)\n let _1 := 0x20\n let srcPtr := add(memberValue0, _1)\n let i := 0\n for { } lt(i, length) { i := add(i, 1) }\n {\n mstore(pos_1, and(mload(srcPtr), 0xffffffffffffffffffffffffffffffffffffffff))\n pos_1 := add(pos_1, _1)\n srcPtr := add(srcPtr, _1)\n }\n let memberValue0_1 := mload(add(value, _1))\n mstore(add(pos, _1), sub(pos_1, pos))\n let pos_2 := pos_1\n let length_1 := mload(memberValue0_1)\n mstore(pos_1, length_1)\n pos_2 := add(pos_1, _1)\n let srcPtr_1 := add(memberValue0_1, _1)\n let i_1 := 0\n for { } lt(i_1, length_1) { i_1 := add(i_1, 1) }\n {\n pos_2 := abi_encodeUpdatedPos_struct_MultiTargetPermission(mload(srcPtr_1), pos_2)\n srcPtr_1 := add(srcPtr_1, _1)\n }\n end := pos_2\n }\n function abi_encode_tuple_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$14216_memory_ptr__to_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$14216_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n {\n mstore(headStart, 64)\n let length := mload(value0)\n mstore(add(headStart, 64), length)\n let i := 0\n for { } lt(i, length) { i := add(i, 0x20) }\n {\n mstore(add(add(headStart, i), 96), mload(add(add(value0, i), 0x20)))\n }\n mstore(add(add(headStart, length), 96), 0)\n let _1 := add(headStart, and(add(length, 31), not(31)))\n mstore(add(headStart, 0x20), add(sub(_1, headStart), 96))\n tail := abi_encode_struct_PreparedSetupData(value1, add(_1, 96))\n }\n function panic_error_0x41()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function abi_decode_tuple_t_addresst_bytes_memory_ptr(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n let offset := calldataload(add(headStart, 32))\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n let _2 := add(headStart, offset)\n if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n let _3 := calldataload(_2)\n if gt(_3, _1) { panic_error_0x41() }\n let _4 := not(31)\n let memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n mstore(memPtr, _3)\n if gt(add(add(_2, _3), 32), dataEnd) { revert(0, 0) }\n calldatacopy(add(memPtr, 32), add(_2, 32), _3)\n mstore(add(add(memPtr, _3), 32), 0)\n value1 := memPtr\n }\n function abi_encode_tuple_t_address_t_struct$_PreparedSetupData_$14216_memory_ptr__to_t_address_t_struct$_PreparedSetupData_$14216_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n {\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n mstore(add(headStart, 32), 64)\n tail := abi_encode_struct_PreparedSetupData(value1, add(headStart, 64))\n }\n function abi_encode_tuple_t_contract$_IDAO_$10865__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function panic_error_0x11()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n function checked_sub_t_uint160(x, y) -> diff\n {\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n diff := sub(and(x, _1), and(y, _1))\n if gt(diff, _1) { panic_error_0x11() }\n }\n function panic_error_0x32()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n function increment_t_uint160(value) -> ret\n {\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n let value_1 := and(value, _1)\n if eq(value_1, _1) { panic_error_0x11() }\n ret := add(value_1, 1)\n }\n}","id":92,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{"14293":[{"length":32,"start":193}]},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100725760003560e01c80639cb0a124116100505780639cb0a124146100eb578063a8a9c29e1461010b578063f10832f11461012c57600080fd5b806301ffc9a7146100775780632ae9c6001461009f5780635c60da1b146100b4575b600080fd5b61008a610085366004610501565b61014d565b60405190151581526020015b60405180910390f35b6100a761019e565b604051610096919061052b565b6040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152602001610096565b6100fe6100f936600461058d565b6101c8565b6040516100969190610657565b61011e6101193660046106a0565b6101de565b60405161009692919061079a565b61013f61013a366004610815565b610216565b6040516100969291906108d7565b60006001600160e01b0319821663099718b560e41b148061017d57506001600160e01b03198216621574e360e91b145b8061019857506301ffc9a760e01b6001600160e01b03198316145b92915050565b6101a66104d6565b5060408051606081018252600181526004602082015260009181019190915290565b60606101d76000600180610298565b9392505050565b60606101fd604051806040016040528060608152602001606081525090565b60405163a112810160e01b815260040160405180910390fd5b6000610235604051806040016040528060608152602001606081525090565b83604051610242906104f4565b6001600160a01b039091168152602001604051809103906000f08015801561026e573d6000803e3d6000fd5b50915061027b600161041d565b815261028a6000600181610298565b602082015290939092509050565b6060826001600160a01b0316846001600160a01b031611156102cd57604051633a4013cd60e21b815260040160405180910390fd5b6102d78484610917565b6001600160a01b031667ffffffffffffffff8111156102f8576102f86107ff565b60405190808252806020026020018201604052801561035157816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282526000199092019101816103165790505b509050835b836001600160a01b0316816001600160a01b03161015610415576040518060a0016040528084600281111561038d5761038d6105db565b81526001600160a01b038316602082018190526040820152600060608201527fa280eec51ab8e1bc4b6b0c1b7f1bde785761b787a49db404e3e9338ed9b016ef608090910152826103de8784610917565b6001600160a01b0316815181106103f7576103f761093e565b6020026020010181905250808061040d90610954565b915050610356565b509392505050565b6060816001600160a01b031667ffffffffffffffff811115610441576104416107ff565b60405190808252806020026020018201604052801561046a578160200160208202803683370190505b50905060005b826001600160a01b0316816001600160a01b031610156104d0578082826001600160a01b0316815181106104a6576104a661093e565b6001600160a01b0390921660209283029190910190910152806104c881610954565b915050610470565b50919050565b60405180606001604052806003906020820280368337509192915050565b6102d58061097b83390190565b60006020828403121561051357600080fd5b81356001600160e01b0319811681146101d757600080fd5b60608101818360005b600381101561055657815160ff16835260209283019290910190600101610534565b50505092915050565b80356001600160a01b038116811461057657600080fd5b919050565b6000606082840312156104d057600080fd5b600080604083850312156105a057600080fd5b6105a98361055f565b9150602083013567ffffffffffffffff8111156105c557600080fd5b6105d18582860161057b565b9150509250929050565b634e487b7160e01b600052602160045260246000fd5b600081516003811061061357634e487b7160e01b600052602160045260246000fd5b8352506020818101516001600160a01b0390811691840191909152604080830151821690840152606080830151909116908301526080908101519082015260a00190565b6020808252825182820181905260009190848201906040850190845b81811015610694576106868385516105f1565b938501939250600101610673565b50909695505050505050565b6000806000606084860312156106b557600080fd5b6106be8461055f565b9250602084013561ffff811681146106d557600080fd5b9150604084013567ffffffffffffffff8111156106f157600080fd5b6106fd8682870161057b565b9150509250925092565b805160408084528151908401819052600091602091908201906060860190845b8181101561074c5783516001600160a01b031683529284019291840191600101610727565b50508483015186820387850152805180835290840192506000918401905b8083101561078f5761077d8285516105f1565b9150848401935060018301925061076a565b509695505050505050565b604081526000835180604084015260005b818110156107c857602081870181015160608684010152016107ab565b50600060608285010152601f19601f8201168301905060608382030160208401526107f66060820185610707565b95945050505050565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561082857600080fd5b6108318361055f565b9150602083013567ffffffffffffffff8082111561084e57600080fd5b818501915085601f83011261086257600080fd5b813581811115610874576108746107ff565b604051601f8201601f19908116603f0116810190838211818310171561089c5761089c6107ff565b816040528281528860208487010111156108b557600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6001600160a01b03831681526040602082015260006108f96040830184610707565b949350505050565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0382811682821603908082111561093757610937610901565b5092915050565b634e487b7160e01b600052603260045260246000fd5b60006001600160a01b0380831681810361097057610970610901565b600101939250505056fe60a060405234801561001057600080fd5b506040516102d53803806102d583398101604081905261002f91610045565b6001600160a01b03166080526001600055610075565b60006020828403121561005757600080fd5b81516001600160a01b038116811461006e57600080fd5b9392505050565b60805161024661008f600039600060c301526102466000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80634162169f116100505780634162169f146100a957806341de6830146100ed5780636accab8c146100fc57600080fd5b806301ffc9a71461006c5780632ae9c60014610094575b600080fd5b61007f61007a3660046101ac565b610113565b60405190151581526020015b60405180910390f35b61009c610164565b60405161008b91906101dd565b60405173ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016815260200161008b565b600260405161008b9190610211565b61010560005481565b60405190815260200161008b565b60006001600160e01b0319821663041de68360e41b148061014357506001600160e01b03198216621574e360e91b145b8061015e57506301ffc9a760e01b6001600160e01b03198316145b92915050565b61016c61018e565b5060408051606081018252600181526004602082015260009181019190915290565b60405180606001604052806003906020820280368337509192915050565b6000602082840312156101be57600080fd5b81356001600160e01b0319811681146101d657600080fd5b9392505050565b60608101818360005b600381101561020857815160ff168352602092830192909101906001016101e6565b50505092915050565b602081016003831061023357634e487b7160e01b600052602160045260246000fd5b9190529056fea164736f6c6343000811000aa164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x72 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9CB0A124 GT PUSH2 0x50 JUMPI DUP1 PUSH4 0x9CB0A124 EQ PUSH2 0xEB JUMPI DUP1 PUSH4 0xA8A9C29E EQ PUSH2 0x10B JUMPI DUP1 PUSH4 0xF10832F1 EQ PUSH2 0x12C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x77 JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0x9F JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0xB4 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8A PUSH2 0x85 CALLDATASIZE PUSH1 0x4 PUSH2 0x501 JUMP JUMPDEST PUSH2 0x14D JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xA7 PUSH2 0x19E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x96 SWAP2 SWAP1 PUSH2 0x52B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x96 JUMP JUMPDEST PUSH2 0xFE PUSH2 0xF9 CALLDATASIZE PUSH1 0x4 PUSH2 0x58D JUMP JUMPDEST PUSH2 0x1C8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x96 SWAP2 SWAP1 PUSH2 0x657 JUMP JUMPDEST PUSH2 0x11E PUSH2 0x119 CALLDATASIZE PUSH1 0x4 PUSH2 0x6A0 JUMP JUMPDEST PUSH2 0x1DE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x96 SWAP3 SWAP2 SWAP1 PUSH2 0x79A JUMP JUMPDEST PUSH2 0x13F PUSH2 0x13A CALLDATASIZE PUSH1 0x4 PUSH2 0x815 JUMP JUMPDEST PUSH2 0x216 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x96 SWAP3 SWAP2 SWAP1 PUSH2 0x8D7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x99718B5 PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x17D JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x198 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1A6 PUSH2 0x4D6 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1D7 PUSH1 0x0 PUSH1 0x1 DUP1 PUSH2 0x298 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1FD PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xA1128101 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x235 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST DUP4 PUSH1 0x40 MLOAD PUSH2 0x242 SWAP1 PUSH2 0x4F4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH2 0x26E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP SWAP2 POP PUSH2 0x27B PUSH1 0x1 PUSH2 0x41D JUMP JUMPDEST DUP2 MSTORE PUSH2 0x28A PUSH1 0x0 PUSH1 0x1 DUP2 PUSH2 0x298 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE SWAP1 SWAP4 SWAP1 SWAP3 POP SWAP1 POP JUMP JUMPDEST PUSH1 0x60 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH2 0x2CD JUMPI PUSH1 0x40 MLOAD PUSH4 0x3A4013CD PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2D7 DUP5 DUP5 PUSH2 0x917 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2F8 JUMPI PUSH2 0x2F8 PUSH2 0x7FF JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x351 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD DUP3 SWAP1 MSTORE SWAP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 DUP3 ADD MSTORE DUP3 MSTORE PUSH1 0x0 NOT SWAP1 SWAP3 ADD SWAP2 ADD DUP2 PUSH2 0x316 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP DUP4 JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT ISZERO PUSH2 0x415 JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 DUP5 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x38D JUMPI PUSH2 0x38D PUSH2 0x5DB JUMP JUMPDEST DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x60 DUP3 ADD MSTORE PUSH32 0xA280EEC51AB8E1BC4B6B0C1B7F1BDE785761B787A49DB404E3E9338ED9B016EF PUSH1 0x80 SWAP1 SWAP2 ADD MSTORE DUP3 PUSH2 0x3DE DUP8 DUP5 PUSH2 0x917 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MLOAD DUP2 LT PUSH2 0x3F7 JUMPI PUSH2 0x3F7 PUSH2 0x93E JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP DUP1 DUP1 PUSH2 0x40D SWAP1 PUSH2 0x954 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x356 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x441 JUMPI PUSH2 0x441 PUSH2 0x7FF JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x46A JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT ISZERO PUSH2 0x4D0 JUMPI DUP1 DUP3 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MLOAD DUP2 LT PUSH2 0x4A6 JUMPI PUSH2 0x4A6 PUSH2 0x93E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE DUP1 PUSH2 0x4C8 DUP2 PUSH2 0x954 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x470 JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x2D5 DUP1 PUSH2 0x97B DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x513 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x1D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0x556 JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x534 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x576 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x5A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5A9 DUP4 PUSH2 0x55F JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x5C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5D1 DUP6 DUP3 DUP7 ADD PUSH2 0x57B JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP2 MLOAD PUSH1 0x3 DUP2 LT PUSH2 0x613 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP4 MSTORE POP PUSH1 0x20 DUP2 DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP1 DUP4 ADD MLOAD DUP3 AND SWAP1 DUP5 ADD MSTORE PUSH1 0x60 DUP1 DUP4 ADD MLOAD SWAP1 SWAP2 AND SWAP1 DUP4 ADD MSTORE PUSH1 0x80 SWAP1 DUP2 ADD MLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x694 JUMPI PUSH2 0x686 DUP4 DUP6 MLOAD PUSH2 0x5F1 JUMP JUMPDEST SWAP4 DUP6 ADD SWAP4 SWAP3 POP PUSH1 0x1 ADD PUSH2 0x673 JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x6B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x6BE DUP5 PUSH2 0x55F JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH2 0x6D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x6F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x6FD DUP7 DUP3 DUP8 ADD PUSH2 0x57B JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x40 DUP1 DUP5 MSTORE DUP2 MLOAD SWAP1 DUP5 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x20 SWAP2 SWAP1 DUP3 ADD SWAP1 PUSH1 0x60 DUP7 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x74C JUMPI DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x727 JUMP JUMPDEST POP POP DUP5 DUP4 ADD MLOAD DUP7 DUP3 SUB DUP8 DUP6 ADD MSTORE DUP1 MLOAD DUP1 DUP4 MSTORE SWAP1 DUP5 ADD SWAP3 POP PUSH1 0x0 SWAP2 DUP5 ADD SWAP1 JUMPDEST DUP1 DUP4 LT ISZERO PUSH2 0x78F JUMPI PUSH2 0x77D DUP3 DUP6 MLOAD PUSH2 0x5F1 JUMP JUMPDEST SWAP2 POP DUP5 DUP5 ADD SWAP4 POP PUSH1 0x1 DUP4 ADD SWAP3 POP PUSH2 0x76A JUMP JUMPDEST POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 DUP4 MLOAD DUP1 PUSH1 0x40 DUP5 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x7C8 JUMPI PUSH1 0x20 DUP2 DUP8 ADD DUP2 ADD MLOAD PUSH1 0x60 DUP7 DUP5 ADD ADD MSTORE ADD PUSH2 0x7AB JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x60 DUP3 DUP6 ADD ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP4 ADD SWAP1 POP PUSH1 0x60 DUP4 DUP3 SUB ADD PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x7F6 PUSH1 0x60 DUP3 ADD DUP6 PUSH2 0x707 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x828 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x831 DUP4 PUSH2 0x55F JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x84E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x862 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x874 JUMPI PUSH2 0x874 PUSH2 0x7FF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x89C JUMPI PUSH2 0x89C PUSH2 0x7FF JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x8B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0x8F9 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x707 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND DUP3 DUP3 AND SUB SWAP1 DUP1 DUP3 GT ISZERO PUSH2 0x937 JUMPI PUSH2 0x937 PUSH2 0x901 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND DUP2 DUP2 SUB PUSH2 0x970 JUMPI PUSH2 0x970 PUSH2 0x901 JUMP JUMPDEST PUSH1 0x1 ADD SWAP4 SWAP3 POP POP POP JUMP INVALID PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x2D5 CODESIZE SUB DUP1 PUSH2 0x2D5 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0x45 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x80 MSTORE PUSH1 0x1 PUSH1 0x0 SSTORE PUSH2 0x75 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x57 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x6E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH2 0x246 PUSH2 0x8F PUSH1 0x0 CODECOPY PUSH1 0x0 PUSH1 0xC3 ADD MSTORE PUSH2 0x246 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x67 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x4162169F GT PUSH2 0x50 JUMPI DUP1 PUSH4 0x4162169F EQ PUSH2 0xA9 JUMPI DUP1 PUSH4 0x41DE6830 EQ PUSH2 0xED JUMPI DUP1 PUSH4 0x6ACCAB8C EQ PUSH2 0xFC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x6C JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0x94 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7F PUSH2 0x7A CALLDATASIZE PUSH1 0x4 PUSH2 0x1AC JUMP JUMPDEST PUSH2 0x113 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x9C PUSH2 0x164 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x8B SWAP2 SWAP1 PUSH2 0x1DD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x8B JUMP JUMPDEST PUSH1 0x2 PUSH1 0x40 MLOAD PUSH2 0x8B SWAP2 SWAP1 PUSH2 0x211 JUMP JUMPDEST PUSH2 0x105 PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x8B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x41DE683 PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x143 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x15E JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x16C PUSH2 0x18E JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x1D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0x208 JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x1E6 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH1 0x3 DUP4 LT PUSH2 0x233 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 SWAP1 MSTORE SWAP1 JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"624:892:51:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2112:293:82;;;;;;:::i;:::-;;:::i;:::-;;;470:14:92;;463:22;445:41;;433:2;418:18;2112:293:82;;;;;;;;631:98:90;;;:::i;:::-;;;;;;;:::i;2444:94:82:-;;;-1:-1:-1;;;;;2517:14:82;1167:55:92;1149:74;;1137:2;1122:18;2444:94:82;1003:226:92;1224:290:51;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1639:265:82:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;792:393:51:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;2112:293:82:-;2198:4;-1:-1:-1;;;;;;2233:46:82;;-1:-1:-1;;;2233:46:82;;:112;;-1:-1:-1;;;;;;;2295:50:82;;-1:-1:-1;;;2295:50:82;2233:112;:165;;;-1:-1:-1;;;;;;;;;;937:40:38;;;2361:37:82;2214:184;2112:293;-1:-1:-1;;2112:293:82:o;631:98:90:-;679:15;;:::i;:::-;-1:-1:-1;706:16:90;;;;;;;;714:1;706:16;;717:1;706:16;;;;-1:-1:-1;706:16:90;;;;;;;;631:98::o;1224:290:51:-;1346:56;1454:53;1470:1;1473;1476:30;1454:15;:53::i;:::-;1440:67;1224:290;-1:-1:-1;;;1224:290:51:o;1639:265:82:-;1780:12;1794:24;-1:-1:-1;;;;;;;;;;;;;;;;;;;1794:24:82;1875:22;;-1:-1:-1;;;1875:22:82;;;;;;;;;;;792:393:51;895:14;911:42;-1:-1:-1;;;;;;;;;;;;;;;;;;;911:42:51;1025:4;999:32;;;;;:::i;:::-;-1:-1:-1;;;;;1167:55:92;;;1149:74;;1137:2;1122:18;999:32:51;;;;;;;;;;;;;;;;;;;;;;;982:50;;1070:14;1082:1;1070:11;:14::i;:::-;1042:42;;1126:52;1042:25;1145:1;1042:25;1126:15;:52::i;:::-;1094:29;;;:84;792:393;;1094:17;;-1:-1:-1;792:393:51;-1:-1:-1;792:393:51:o;580:666:52:-;699:56;780:8;-1:-1:-1;;;;;767:21:52;:10;-1:-1:-1;;;;;767:21:52;;763:53;;;797:19;;-1:-1:-1;;;797:19:52;;;;;;;;;;;763:53;879:21;890:10;879:8;:21;:::i;:::-;-1:-1:-1;;;;;837:64:52;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;837:64:52;;-1:-1:-1;;837:64:52;;;;;;;;;;;-1:-1:-1;823:78:52;-1:-1:-1;925:10:52;908:336;941:8;-1:-1:-1;;;;;937:12:52;:1;-1:-1:-1;;;;;937:12:52;;908:336;;;996:241;;;;;;;;1057:2;996:241;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;996:241:52;;;;;;;;;;;;-1:-1:-1;996:241:52;;;;1198:28;996:241;;;;;966:11;978:14;982:10;1088:1;978:14;:::i;:::-;-1:-1:-1;;;;;966:27:52;;;;;;;;;:::i;:::-;;;;;;:271;;;;951:3;;;;;:::i;:::-;;;;908:336;;;;580:666;;;;;:::o;1529:191::-;1577:24;1633:3;-1:-1:-1;;;;;1619:18:52;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1619:18:52;;1609:28;;1649:9;1644:74;1668:3;-1:-1:-1;;;;;1664:7:52;:1;-1:-1:-1;;;;;1664:7:52;;1644:74;;;1709:1;1688:7;1696:1;-1:-1:-1;;;;;1688:10:52;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1688:23:52;;;:10;;;;;;;;;;;:23;1673:3;;;;:::i;:::-;;;;1644:74;;;;1529:191;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::o;14:286:92:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:92;;209:43;;199:71;;266:1;263;256:12;497:501;673:2;658:18;;662:9;753:6;631:4;787:205;801:4;798:1;795:11;787:205;;;864:13;;879:4;860:24;848:37;;908:4;932:12;;;;967:15;;;;821:1;814:9;787:205;;;791:3;;;497:501;;;;:::o;1234:196::-;1302:20;;-1:-1:-1;;;;;1351:54:92;;1341:65;;1331:93;;1420:1;1417;1410:12;1331:93;1234:196;;;:::o;1435:160::-;1500:5;1545:2;1536:6;1531:3;1527:16;1523:25;1520:45;;;1561:1;1558;1551:12;1600:441;1701:6;1709;1762:2;1750:9;1741:7;1737:23;1733:32;1730:52;;;1778:1;1775;1768:12;1730:52;1801:29;1820:9;1801:29;:::i;:::-;1791:39;;1881:2;1870:9;1866:18;1853:32;1908:18;1900:6;1897:30;1894:50;;;1940:1;1937;1930:12;1894:50;1963:72;2027:7;2018:6;2007:9;2003:22;1963:72;:::i;:::-;1953:82;;;1600:441;;;;;:::o;2046:127::-;2107:10;2102:3;2098:20;2095:1;2088:31;2138:4;2135:1;2128:15;2162:4;2159:1;2152:15;2178:696;2253:10;2294:6;2288:13;2327:1;2323:2;2320:9;2310:140;;2372:10;2367:3;2363:20;2360:1;2353:31;2407:4;2404:1;2397:15;2435:4;2432:1;2425:15;2310:140;2459:15;;-1:-1:-1;2521:4:92;2509:17;;;2503:24;-1:-1:-1;;;;;2620:21:92;;;2604:14;;;2597:45;;;;2696:4;2684:17;;;2678:24;2674:33;;2658:14;;;2651:57;2762:4;2750:17;;;2744:24;2740:33;;;2724:14;;;2717:57;2824:4;2812:17;;;2806:24;2790:14;;;2783:48;2863:4;2854:14;;2178:696::o;2879:730::-;3130:2;3182:21;;;3252:13;;3155:18;;;3274:22;;;3101:4;;3130:2;3353:15;;;;3327:2;3312:18;;;3101:4;3396:187;3410:6;3407:1;3404:13;3396:187;;;3466:69;3531:3;3522:6;3516:13;3466:69;:::i;:::-;3558:15;;;;3459:76;-1:-1:-1;3432:1:92;3425:9;3396:187;;;-1:-1:-1;3600:3:92;;2879:730;-1:-1:-1;;;;;;2879:730:92:o;3614:601::-;3723:6;3731;3739;3792:2;3780:9;3771:7;3767:23;3763:32;3760:52;;;3808:1;3805;3798:12;3760:52;3831:29;3850:9;3831:29;:::i;:::-;3821:39;;3910:2;3899:9;3895:18;3882:32;3954:6;3947:5;3943:18;3936:5;3933:29;3923:57;;3976:1;3973;3966:12;3923:57;3999:5;-1:-1:-1;4055:2:92;4040:18;;4027:32;4082:18;4071:30;;4068:50;;;4114:1;4111;4104:12;4068:50;4137:72;4201:7;4192:6;4181:9;4177:22;4137:72;:::i;:::-;4127:82;;;3614:601;;;;;:::o;4220:1162::-;4353:12;;4319:4;4374:17;;;4440:19;;4310:14;;;4468:20;;;4280:3;;4537:4;;4564:21;;;;4515:2;4506:12;;;4280:3;4613:224;4627:6;4624:1;4621:13;4613:224;;;4694:13;;-1:-1:-1;;;;;4690:62:92;4676:77;;4812:15;;;;4775:14;;;;4649:1;4642:9;4613:224;;;-1:-1:-1;;4874:14:92;;;4868:21;4919:15;;;4905:12;;;4898:37;4987:21;;5017:23;;;5097;;;;-1:-1:-1;5140:1:92;;5058:14;;;5150:205;5166:8;5161:3;5158:17;5150:205;;;5230:73;5297:5;5286:8;5280:15;5230:73;:::i;:::-;5221:82;;5342:2;5332:8;5328:17;5316:29;;5194:1;5189:3;5185:11;5178:18;;5150:205;;;-1:-1:-1;5371:5:92;4220:1162;-1:-1:-1;;;;;;4220:1162:92:o;5387:761::-;5634:2;5623:9;5616:21;5597:4;5666:6;5660:13;5709:6;5704:2;5693:9;5689:18;5682:34;5734:1;5744:144;5758:6;5755:1;5752:13;5744:144;;;5871:4;5855:14;;;5851:25;;5845:32;5840:2;5821:17;;;5817:26;5810:68;5773:12;5744:144;;;5748:3;5937:1;5932:2;5923:6;5912:9;5908:22;5904:31;5897:42;5998:2;5994:7;5989:2;5981:6;5977:15;5973:29;5962:9;5958:45;5948:55;;6065:2;6053:9;6049:2;6045:18;6041:27;6034:4;6023:9;6019:20;6012:57;6086:56;6138:2;6134;6130:11;6122:6;6086:56;:::i;:::-;6078:64;5387:761;-1:-1:-1;;;;;5387:761:92:o;6153:127::-;6214:10;6209:3;6205:20;6202:1;6195:31;6245:4;6242:1;6235:15;6269:4;6266:1;6259:15;6285:995;6362:6;6370;6423:2;6411:9;6402:7;6398:23;6394:32;6391:52;;;6439:1;6436;6429:12;6391:52;6462:29;6481:9;6462:29;:::i;:::-;6452:39;;6542:2;6531:9;6527:18;6514:32;6565:18;6606:2;6598:6;6595:14;6592:34;;;6622:1;6619;6612:12;6592:34;6660:6;6649:9;6645:22;6635:32;;6705:7;6698:4;6694:2;6690:13;6686:27;6676:55;;6727:1;6724;6717:12;6676:55;6763:2;6750:16;6785:2;6781;6778:10;6775:36;;;6791:18;;:::i;:::-;6866:2;6860:9;6834:2;6920:13;;-1:-1:-1;;6916:22:92;;;6940:2;6912:31;6908:40;6896:53;;;6964:18;;;6984:22;;;6961:46;6958:72;;;7010:18;;:::i;:::-;7050:10;7046:2;7039:22;7085:2;7077:6;7070:18;7125:7;7120:2;7115;7111;7107:11;7103:20;7100:33;7097:53;;;7146:1;7143;7136:12;7097:53;7202:2;7197;7193;7189:11;7184:2;7176:6;7172:15;7159:46;7247:1;7242:2;7237;7229:6;7225:15;7221:24;7214:35;7268:6;7258:16;;;;;;;6285:995;;;;;:::o;7285:410::-;-1:-1:-1;;;;;7518:6:92;7514:55;7503:9;7496:74;7606:2;7601;7590:9;7586:18;7579:30;7477:4;7626:63;7685:2;7674:9;7670:18;7662:6;7626:63;:::i;:::-;7618:71;7285:410;-1:-1:-1;;;;7285:410:92:o;7945:127::-;8006:10;8001:3;7997:20;7994:1;7987:31;8037:4;8034:1;8027:15;8061:4;8058:1;8051:15;8077:208;-1:-1:-1;;;;;8221:10:92;;;8209;;;8205:27;;8244:12;;;8241:38;;;8259:18;;:::i;:::-;8241:38;8077:208;;;;:::o;8290:127::-;8351:10;8346:3;8342:20;8339:1;8332:31;8382:4;8379:1;8372:15;8406:4;8403:1;8396:15;8422:234;8461:3;-1:-1:-1;;;;;8566:2:92;8559:5;8555:14;8593:2;8584:7;8581:15;8578:41;;8599:18;;:::i;:::-;8648:1;8635:15;;8422:234;-1:-1:-1;;;8422:234:92:o"},"gasEstimates":{"creation":{"codeDepositCost":"632800","executionCost":"infinite","totalCost":"infinite"},"external":{"implementation()":"infinite","prepareInstallation(address,bytes)":"infinite","prepareUninstallation(address,(address,address[],bytes))":"infinite","prepareUpdate(address,uint16,(address,address[],bytes))":"624","protocolVersion()":"infinite","supportsInterface(bytes4)":"482"}},"methodIdentifiers":{"implementation()":"5c60da1b","prepareInstallation(address,bytes)":"f10832f1","prepareUninstallation(address,(address,address[],bytes))":"9cb0a124","prepareUpdate(address,uint16,(address,address[],bytes))":"a8a9c29e","protocolVersion()":"2ae9c600","supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ConflictingValues\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NonUpgradeablePlugin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_dao\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"prepareInstallation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"plugin\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address[]\",\"name\":\"helpers\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"enum PermissionLib.Operation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"condition\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PermissionLib.MultiTargetPermission[]\",\"name\":\"permissions\",\"type\":\"tuple[]\"}],\"internalType\":\"struct IPluginSetup.PreparedSetupData\",\"name\":\"preparedSetupData\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_dao\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"plugin\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"currentHelpers\",\"type\":\"address[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IPluginSetup.SetupPayload\",\"name\":\"_payload\",\"type\":\"tuple\"}],\"name\":\"prepareUninstallation\",\"outputs\":[{\"components\":[{\"internalType\":\"enum PermissionLib.Operation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"condition\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PermissionLib.MultiTargetPermission[]\",\"name\":\"permissions\",\"type\":\"tuple[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_dao\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"_fromBuild\",\"type\":\"uint16\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"plugin\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"currentHelpers\",\"type\":\"address[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IPluginSetup.SetupPayload\",\"name\":\"_payload\",\"type\":\"tuple\"}],\"name\":\"prepareUpdate\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address[]\",\"name\":\"helpers\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"enum PermissionLib.Operation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"condition\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PermissionLib.MultiTargetPermission[]\",\"name\":\"permissions\",\"type\":\"tuple[]\"}],\"internalType\":\"struct IPluginSetup.PreparedSetupData\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"protocolVersion\",\"outputs\":[{\"internalType\":\"uint8[3]\",\"name\":\"\",\"type\":\"uint8[3]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"DO NOT USE IN PRODUCTION!\",\"kind\":\"dev\",\"methods\":{\"implementation()\":{\"details\":\"The implementation can be instantiated via the `new` keyword, cloned via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)), or proxied via the UUPS proxy pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\",\"returns\":{\"_0\":\"The address of the plugin implementation contract.\"}},\"prepareInstallation(address,bytes)\":{\"params\":{\"_dao\":\"The address of the installing DAO.\",\"_data\":\"The bytes-encoded data containing the input parameters for the installation as specified in the plugin's build metadata JSON file.\"},\"returns\":{\"plugin\":\"The address of the `Plugin` contract being prepared for installation.\",\"preparedSetupData\":\"The deployed plugin's relevant data which consists of helpers and permissions.\"}},\"prepareUninstallation(address,(address,address[],bytes))\":{\"params\":{\"_dao\":\"The address of the uninstalling DAO.\",\"_payload\":\"The relevant data necessary for the `prepareUninstallation`. See above.\"},\"returns\":{\"permissions\":\"The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the uninstalling DAO.\"}},\"prepareUpdate(address,uint16,(address,address[],bytes))\":{\"details\":\"Since the underlying plugin is non-upgradeable, this non-virtual function must always revert.\",\"params\":{\"_dao\":\"The address of the updating DAO.\",\"_fromBuild\":\"The build number of the plugin to update from.\",\"_payload\":\"The relevant data necessary for the `prepareUpdate`. See above.\"},\"returns\":{\"_0\":\"The initialization data to be passed to upgradeable contracts when the update is applied in the `PluginSetupProcessor`.\",\"_1\":\"The deployed plugin's relevant data which consists of helpers and permissions.\"}},\"protocolVersion()\":{\"details\":\"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\",\"returns\":{\"_0\":\"Returns the semantic Aragon OSx protocol version number.\"}},\"supportsInterface(bytes4)\":{\"params\":{\"_interfaceId\":\"The ID of the interface.\"},\"returns\":{\"_0\":\"Returns `true` if the interface is supported.\"}}},\"version\":1},\"userdoc\":{\"errors\":{\"NonUpgradeablePlugin()\":[{\"notice\":\"Thrown when attempting to prepare an update on a non-upgradeable plugin.\"}]},\"kind\":\"user\",\"methods\":{\"implementation()\":{\"notice\":\"Returns the plugin implementation address.\"},\"prepareInstallation(address,bytes)\":{\"notice\":\"Prepares the installation of a plugin.\"},\"prepareUninstallation(address,(address,address[],bytes))\":{\"notice\":\"Prepares the uninstallation of a plugin.\"},\"prepareUpdate(address,uint16,(address,address[],bytes))\":{\"notice\":\"Prepares the update of a plugin.\"},\"protocolVersion()\":{\"notice\":\"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Checks if this or the parent contract supports an interface by its ID.\"}},\"notice\":\"A mock plugin setup of a plugin to be deployed via the `new` keyword. v1.1 (Release 1, Build 1)\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/mocks/plugin/PluginSetupMock.sol\":\"PluginSetupMockBuild1\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n function _contextSuffixLength() internal view virtual returns (uint256) {\\n return 0;\\n }\\n}\\n\",\"keccak256\":\"0xa92e4fa126feb6907daa0513ddd816b2eb91f30a808de54f63c17d0e162c3439\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165 is IERC165 {\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165).interfaceId;\\n }\\n}\\n\",\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"src/dao/IDAO.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IDAO\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for DAOs within the Aragon App DAO framework.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IDAO {\\n /// @notice The action struct to be consumed by the DAO's `execute` function resulting in an external call.\\n /// @param to The address to call.\\n /// @param value The native token value to be sent with the call.\\n /// @param data The bytes-encoded function selector and calldata for the call.\\n struct Action {\\n address to;\\n uint256 value;\\n bytes data;\\n }\\n\\n /// @notice Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\\n /// @param _where The address of the contract.\\n /// @param _who The address of a EOA or contract to give the permissions.\\n /// @param _permissionId The permission identifier.\\n /// @param _data The optional data passed to the `PermissionCondition` registered.\\n /// @return Returns true if the address has permission, false if not.\\n function hasPermission(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes memory _data\\n ) external view returns (bool);\\n\\n /// @notice Updates the DAO metadata (e.g., an IPFS hash).\\n /// @param _metadata The IPFS hash of the new metadata object.\\n function setMetadata(bytes calldata _metadata) external;\\n\\n /// @notice Emitted when the DAO metadata is updated.\\n /// @param metadata The IPFS hash of the new metadata object.\\n event MetadataSet(bytes metadata);\\n\\n /// @notice Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted.\\n /// @param _callId The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce.\\n /// @param _actions The array of actions.\\n /// @param _allowFailureMap A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @return The array of results obtained from the executed actions in `bytes`.\\n /// @return The resulting failure map containing the actions have actually failed.\\n function execute(\\n bytes32 _callId,\\n Action[] memory _actions,\\n uint256 _allowFailureMap\\n ) external returns (bytes[] memory, uint256);\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param actor The address of the caller.\\n /// @param callId The ID of the call.\\n /// @param actions The array of actions executed.\\n /// @param allowFailureMap The allow failure map encoding which actions are allowed to fail.\\n /// @param failureMap The failure map encoding which actions have failed.\\n /// @param execResults The array with the results of the executed actions.\\n /// @dev The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce.\\n event Executed(\\n address indexed actor,\\n bytes32 callId,\\n Action[] actions,\\n uint256 allowFailureMap,\\n uint256 failureMap,\\n bytes[] execResults\\n );\\n\\n /// @notice Emitted when a standard callback is registered.\\n /// @param interfaceId The ID of the interface.\\n /// @param callbackSelector The selector of the callback function.\\n /// @param magicNumber The magic number to be registered for the callback function selector.\\n event StandardCallbackRegistered(\\n bytes4 interfaceId,\\n bytes4 callbackSelector,\\n bytes4 magicNumber\\n );\\n\\n /// @notice Deposits (native) tokens to the DAO contract with a reference string.\\n /// @param _token The address of the token or address(0) in case of the native token.\\n /// @param _amount The amount of tokens to deposit.\\n /// @param _reference The reference describing the deposit reason.\\n function deposit(address _token, uint256 _amount, string calldata _reference) external payable;\\n\\n /// @notice Emitted when a token deposit has been made to the DAO.\\n /// @param sender The address of the sender.\\n /// @param token The address of the deposited token.\\n /// @param amount The amount of tokens deposited.\\n /// @param _reference The reference describing the deposit reason.\\n event Deposited(\\n address indexed sender,\\n address indexed token,\\n uint256 amount,\\n string _reference\\n );\\n\\n /// @notice Emitted when a native token deposit has been made to the DAO.\\n /// @dev This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).\\n /// @param sender The address of the sender.\\n /// @param amount The amount of native tokens deposited.\\n event NativeTokenDeposited(address sender, uint256 amount);\\n\\n /// @notice Setter for the trusted forwarder verifying the meta transaction.\\n /// @param _trustedForwarder The trusted forwarder address.\\n function setTrustedForwarder(address _trustedForwarder) external;\\n\\n /// @notice Getter for the trusted forwarder verifying the meta transaction.\\n /// @return The trusted forwarder address.\\n function getTrustedForwarder() external view returns (address);\\n\\n /// @notice Emitted when a new TrustedForwarder is set on the DAO.\\n /// @param forwarder the new forwarder address.\\n event TrustedForwarderSet(address forwarder);\\n\\n /// @notice Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\\n /// @param _hash The hash of the data to be signed.\\n /// @param _signature The signature byte array associated with `_hash`.\\n /// @return Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not.\\n function isValidSignature(bytes32 _hash, bytes memory _signature) external returns (bytes4);\\n\\n /// @notice Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\\n /// @param _interfaceId The ID of the interface.\\n /// @param _callbackSelector The selector of the callback function.\\n /// @param _magicNumber The magic number to be registered for the function signature.\\n function registerStandardCallback(\\n bytes4 _interfaceId,\\n bytes4 _callbackSelector,\\n bytes4 _magicNumber\\n ) external;\\n\\n /// @notice Removed function being left here to not corrupt the IDAO interface ID. Any call will revert.\\n /// @dev Introduced in v1.0.0. Removed in v1.4.0.\\n function setSignatureValidator(address) external;\\n}\\n\",\"keccak256\":\"0xb7f615523c26de042edce98731c658f44a1edb2464387ac1b642c4c69f57128e\",\"license\":\"AGPL-3.0-or-later\"},\"src/mocks/plugin/PluginMock.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {Plugin} from \\\"../../plugin/Plugin.sol\\\";\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice A mock plugin to be deployed via the `new` keyword.\\n/// v1.1 (Release 1, Build 1)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginMockBuild1 is Plugin {\\n uint256 public state1;\\n\\n constructor(IDAO _dao) Plugin(_dao) {\\n state1 = 1;\\n }\\n}\\n\",\"keccak256\":\"0x9aca72aa9f93de6de6cc6a093aaaceb62649bea46fba7f07a01a067c145c35bd\",\"license\":\"AGPL-3.0-or-later\"},\"src/mocks/plugin/PluginSetupMock.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\n/* solhint-disable one-contract-per-file */\\npragma solidity ^0.8.8;\\n\\nimport {PermissionLib} from \\\"../../permission/PermissionLib.sol\\\";\\nimport {IPluginSetup} from \\\"../../plugin/setup/IPluginSetup.sol\\\";\\nimport {PluginSetup} from \\\"../../plugin/setup/PluginSetup.sol\\\";\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\nimport {mockPermissions, mockHelpers} from \\\"./PluginSetupMockData.sol\\\";\\nimport {PluginMockBuild1} from \\\"./PluginMock.sol\\\";\\n\\n/// @notice A mock plugin setup of a plugin to be deployed via the `new` keyword.\\n/// v1.1 (Release 1, Build 1)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginSetupMockBuild1 is PluginSetup {\\n constructor() PluginSetup(address(new PluginMockBuild1(IDAO(address(0))))) {}\\n\\n /// @inheritdoc IPluginSetup\\n function prepareInstallation(\\n address _dao,\\n bytes memory _data\\n ) external returns (address plugin, PreparedSetupData memory preparedSetupData) {\\n (_data);\\n plugin = address(new PluginMockBuild1(IDAO(_dao)));\\n preparedSetupData.helpers = mockHelpers(1);\\n preparedSetupData.permissions = mockPermissions(0, 1, PermissionLib.Operation.Grant);\\n }\\n\\n /// @inheritdoc IPluginSetup\\n function prepareUninstallation(\\n address _dao,\\n SetupPayload calldata _payload\\n ) external pure returns (PermissionLib.MultiTargetPermission[] memory permissions) {\\n (_dao, _payload);\\n permissions = mockPermissions(0, 1, PermissionLib.Operation.Revoke);\\n }\\n}\\n\",\"keccak256\":\"0xa6f273174c0824bf16728b127487e2e98e70068951de6989dc9bb6aac633e597\",\"license\":\"AGPL-3.0-or-later\"},\"src/mocks/plugin/PluginSetupMockData.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {PermissionLib} from \\\"../../permission/PermissionLib.sol\\\";\\n\\naddress constant NO_CONDITION = address(0);\\n\\nerror ConflictingValues();\\n\\n/// @notice Creates a mock `MultiTargetPermission` array by converting a range of `uint160` values into `address` values.\\n/// @param rangeStart The start of the range.\\n/// @param rangeEnd The end of the range (that is not included).\\n/// @param op The permission operation type.\\n/// @return permissions The mock array of permissions.\\n/// @dev DO NOT USE IN PRODUCTION!\\nfunction mockPermissions(\\n uint160 rangeStart,\\n uint160 rangeEnd,\\n PermissionLib.Operation op\\n) pure returns (PermissionLib.MultiTargetPermission[] memory permissions) {\\n if (rangeStart > rangeEnd) revert ConflictingValues();\\n\\n permissions = new PermissionLib.MultiTargetPermission[](rangeEnd - rangeStart);\\n\\n for (uint160 i = rangeStart; i < rangeEnd; i++) {\\n permissions[i - rangeStart] = PermissionLib.MultiTargetPermission({\\n operation: op,\\n where: address(i),\\n who: address(i),\\n condition: PermissionLib.NO_CONDITION,\\n permissionId: keccak256(\\\"MOCK_PERMISSION\\\")\\n });\\n }\\n}\\n\\n/// @notice Creates a mock array of helper addresses of specified length by converting `uint160` values starting from 0 into `address` values.\\n/// @param len The length of the helper array.\\n/// @return helpers The mock array of helper addresses.\\n/// @dev DO NOT USE IN PRODUCTION!\\nfunction mockHelpers(uint160 len) pure returns (address[] memory helpers) {\\n helpers = new address[](len);\\n\\n for (uint160 i = 0; i < len; i++) {\\n helpers[i] = address(i);\\n }\\n}\\n\",\"keccak256\":\"0x529d1b7ea4c348fe18edf81a044792ca8aa1f6ad9a7d2edfd35e38bf8372abf9\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/PermissionLib.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title PermissionLib\\n/// @author Aragon X - 2021-2023\\n/// @notice A library containing objects for permission processing.\\n/// @custom:security-contact sirt@aragon.org\\nlibrary PermissionLib {\\n /// @notice A constant expressing that no condition is applied to a permission.\\n address public constant NO_CONDITION = address(0);\\n\\n /// @notice The types of permission operations available in the `PermissionManager`.\\n /// @param Grant The grant operation setting a permission without a condition.\\n /// @param Revoke The revoke operation removing a permission (that was granted with or without a condition).\\n /// @param GrantWithCondition The grant operation setting a permission with a condition.\\n enum Operation {\\n Grant,\\n Revoke,\\n GrantWithCondition\\n }\\n\\n /// @notice A struct containing the information for a permission to be applied on a single target contract without a condition.\\n /// @param operation The permission operation type.\\n /// @param who The address (EOA or contract) receiving the permission.\\n /// @param permissionId The permission identifier.\\n struct SingleTargetPermission {\\n Operation operation;\\n address who;\\n bytes32 permissionId;\\n }\\n\\n /// @notice A struct containing the information for a permission to be applied on multiple target contracts, optionally, with a condition.\\n /// @param operation The permission operation type.\\n /// @param where The address of the target contract for which `who` receives permission.\\n /// @param who The address (EOA or contract) receiving the permission.\\n /// @param condition The `PermissionCondition` that will be asked for authorization on calls connected to the specified permission identifier.\\n /// @param permissionId The permission identifier.\\n struct MultiTargetPermission {\\n Operation operation;\\n address where;\\n address who;\\n address condition;\\n bytes32 permissionId;\\n }\\n}\\n\",\"keccak256\":\"0x470faf3c4891ebc6420ef6cc09f6098917568ccc79268c90954d1478199b6097\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/DaoAuthorizable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {Context} from \\\"@openzeppelin/contracts/utils/Context.sol\\\";\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\nimport {_auth} from \\\"./auth.sol\\\";\\n\\n/// @title DaoAuthorizable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract contract providing a meta-transaction compatible modifier for non-upgradeable contracts instantiated via the `new` keyword to authorize function calls through an associated DAO.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract DaoAuthorizable is Context {\\n /// @notice The associated DAO managing the permissions of inheriting contracts.\\n IDAO private immutable DAO;\\n\\n /// @notice Constructs the contract by setting the associated DAO.\\n /// @param _dao The associated DAO address.\\n constructor(IDAO _dao) {\\n DAO = _dao;\\n }\\n\\n /// @notice Returns the DAO contract.\\n /// @return The DAO contract.\\n function dao() public view returns (IDAO) {\\n return DAO;\\n }\\n\\n /// @notice A modifier to make functions on inheriting contracts authorized. Permissions to call the function are checked through the associated DAO's permission manager.\\n /// @param _permissionId The permission identifier required to call the method this modifier is applied to.\\n modifier auth(bytes32 _permissionId) {\\n _auth(DAO, address(this), _msgSender(), _permissionId, _msgData());\\n _;\\n }\\n}\\n\",\"keccak256\":\"0x3d0be91b4f5854ed2d2c51b53fe7ffba58cc968e972015cf60eb3ea100543e64\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/auth.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice Thrown if a call is unauthorized in the associated DAO.\\n/// @param dao The associated DAO.\\n/// @param where The context in which the authorization reverted.\\n/// @param who The address (EOA or contract) missing the permission.\\n/// @param permissionId The permission identifier.\\nerror DaoUnauthorized(address dao, address where, address who, bytes32 permissionId);\\n\\n/// @notice A free function checking if a caller is granted permissions on a target contract via a permission identifier that redirects the approval to a `PermissionCondition` if this was specified in the setup.\\n/// @param _where The address of the target contract for which `who` receives permission.\\n/// @param _who The address (EOA or contract) owning the permission.\\n/// @param _permissionId The permission identifier.\\n/// @param _data The optional data passed to the `PermissionCondition` registered.\\n/// @custom:security-contact sirt@aragon.org\\nfunction _auth(\\n IDAO _dao,\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes calldata _data\\n) view {\\n if (!_dao.hasPermission(_where, _who, _permissionId, _data))\\n revert DaoUnauthorized({\\n dao: address(_dao),\\n where: _where,\\n who: _who,\\n permissionId: _permissionId\\n });\\n}\\n\",\"keccak256\":\"0x878764b4f87fe0651fb3798fb9cb87c952f8c6caf6ae79c7f09de84df6c00298\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/IPlugin.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IPlugin\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the traits of a plugin.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IPlugin {\\n enum PluginType {\\n UUPS,\\n Cloneable,\\n Constructable\\n }\\n\\n /// @notice Returns the plugin's type\\n function pluginType() external view returns (PluginType);\\n}\\n\",\"keccak256\":\"0xc57cd0d10b6380ab7f54c713a509e88fd8f4ad9288313a0e8e12b8887817ddfe\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/Plugin.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ERC165} from \\\"@openzeppelin/contracts/utils/introspection/ERC165.sol\\\";\\n\\nimport {IProtocolVersion} from \\\"../utils/versioning/IProtocolVersion.sol\\\";\\nimport {ProtocolVersion} from \\\"../utils/versioning/ProtocolVersion.sol\\\";\\nimport {DaoAuthorizable} from \\\"../permission/auth/DaoAuthorizable.sol\\\";\\nimport {IDAO} from \\\"../dao/IDAO.sol\\\";\\nimport {IPlugin} from \\\"./IPlugin.sol\\\";\\n\\n/// @title Plugin\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract, non-upgradeable contract to inherit from when creating a plugin being deployed via the `new` keyword.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract Plugin is IPlugin, ERC165, DaoAuthorizable, ProtocolVersion {\\n /// @notice Constructs the plugin by storing the associated DAO.\\n /// @param _dao The DAO contract.\\n constructor(IDAO _dao) DaoAuthorizable(_dao) {}\\n\\n /// @inheritdoc IPlugin\\n function pluginType() public pure override returns (PluginType) {\\n return PluginType.Constructable;\\n }\\n\\n /// @notice Checks if this or the parent contract supports an interface by its ID.\\n /// @param _interfaceId The ID of the interface.\\n /// @return Returns `true` if the interface is supported.\\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\\n return\\n _interfaceId == type(IPlugin).interfaceId ||\\n _interfaceId == type(IProtocolVersion).interfaceId ||\\n super.supportsInterface(_interfaceId);\\n }\\n}\\n\",\"keccak256\":\"0xdda9f39f3f06fa66dc1b0688576143db5bd0aafdb557de36563de0aa68829135\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/setup/IPluginSetup.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {PermissionLib} from \\\"../../permission/PermissionLib.sol\\\";\\n\\n// solhint-disable-next-line no-unused-import\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @title IPluginSetup\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for a plugin setup contract to be consumed by the `PluginSetupProcessor` for plugin installations, updates, and uninstallations.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IPluginSetup {\\n /// @notice The data associated with a prepared setup.\\n /// @param helpers The address array of helpers (contracts or EOAs) associated with this plugin version after the installation or update.\\n /// @param permissions The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the installing or updating DAO.\\n struct PreparedSetupData {\\n address[] helpers;\\n PermissionLib.MultiTargetPermission[] permissions;\\n }\\n\\n /// @notice The payload for plugin updates and uninstallations containing the existing contracts as well as optional data to be consumed by the plugin setup.\\n /// @param plugin The address of the `Plugin`.\\n /// @param currentHelpers The address array of all current helpers (contracts or EOAs) associated with the plugin to update from.\\n /// @param data The bytes-encoded data containing the input parameters for the preparation of update/uninstall as specified in the corresponding ABI on the version's metadata.\\n struct SetupPayload {\\n address plugin;\\n address[] currentHelpers;\\n bytes data;\\n }\\n\\n /// @notice Prepares the installation of a plugin.\\n /// @param _dao The address of the installing DAO.\\n /// @param _data The bytes-encoded data containing the input parameters for the installation as specified in the plugin's build metadata JSON file.\\n /// @return plugin The address of the `Plugin` contract being prepared for installation.\\n /// @return preparedSetupData The deployed plugin's relevant data which consists of helpers and permissions.\\n function prepareInstallation(\\n address _dao,\\n bytes calldata _data\\n ) external returns (address plugin, PreparedSetupData memory preparedSetupData);\\n\\n /// @notice Prepares the update of a plugin.\\n /// @param _dao The address of the updating DAO.\\n /// @param _fromBuild The build number of the plugin to update from.\\n /// @param _payload The relevant data necessary for the `prepareUpdate`. See above.\\n /// @return initData The initialization data to be passed to upgradeable contracts when the update is applied in the `PluginSetupProcessor`.\\n /// @return preparedSetupData The deployed plugin's relevant data which consists of helpers and permissions.\\n function prepareUpdate(\\n address _dao,\\n uint16 _fromBuild,\\n SetupPayload calldata _payload\\n ) external returns (bytes memory initData, PreparedSetupData memory preparedSetupData);\\n\\n /// @notice Prepares the uninstallation of a plugin.\\n /// @param _dao The address of the uninstalling DAO.\\n /// @param _payload The relevant data necessary for the `prepareUninstallation`. See above.\\n /// @return permissions The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the uninstalling DAO.\\n function prepareUninstallation(\\n address _dao,\\n SetupPayload calldata _payload\\n ) external returns (PermissionLib.MultiTargetPermission[] memory permissions);\\n\\n /// @notice Returns the plugin implementation address.\\n /// @return The address of the plugin implementation contract.\\n /// @dev The implementation can be instantiated via the `new` keyword, cloned via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)), or proxied via the UUPS proxy pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0x21c99995208039ac6ace219b6f273243811dc2aa66399e8e499e43ec30b82fa9\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/setup/PluginSetup.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ERC165} from \\\"@openzeppelin/contracts/utils/introspection/ERC165.sol\\\";\\n\\nimport {IProtocolVersion} from \\\"../../utils/versioning/IProtocolVersion.sol\\\";\\nimport {ProtocolVersion} from \\\"../../utils/versioning/ProtocolVersion.sol\\\";\\nimport {IPluginSetup} from \\\"./IPluginSetup.sol\\\";\\n\\n/// @title PluginSetup\\n/// @author Aragon X - 2022-2024\\n/// @notice An abstract contract to inherit from to implement the plugin setup for non-upgradeable plugins, i.e,\\n/// - `Plugin` being deployed via the `new` keyword\\n/// - `PluginCloneable` being deployed via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)).\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract PluginSetup is ERC165, IPluginSetup, ProtocolVersion {\\n /// @notice The address of the plugin implementation contract for initial block explorer verification and, in the case of `PluginClonable` implementations, to create [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167) clones from.\\n address internal immutable IMPLEMENTATION;\\n\\n /// @notice Thrown when attempting to prepare an update on a non-upgradeable plugin.\\n error NonUpgradeablePlugin();\\n\\n /// @notice The contract constructor, that setting the plugin implementation contract.\\n /// @param _implementation The address of the plugin implementation contract.\\n constructor(address _implementation) {\\n IMPLEMENTATION = _implementation;\\n }\\n\\n /// @inheritdoc IPluginSetup\\n /// @dev Since the underlying plugin is non-upgradeable, this non-virtual function must always revert.\\n function prepareUpdate(\\n address _dao,\\n uint16 _fromBuild,\\n SetupPayload calldata _payload\\n ) external pure returns (bytes memory, PreparedSetupData memory) {\\n (_dao, _fromBuild, _payload);\\n revert NonUpgradeablePlugin();\\n }\\n\\n /// @notice Checks if this or the parent contract supports an interface by its ID.\\n /// @param _interfaceId The ID of the interface.\\n /// @return Returns `true` if the interface is supported.\\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\\n return\\n _interfaceId == type(IPluginSetup).interfaceId ||\\n _interfaceId == type(IProtocolVersion).interfaceId ||\\n super.supportsInterface(_interfaceId);\\n }\\n\\n /// @inheritdoc IPluginSetup\\n function implementation() public view returns (address) {\\n return IMPLEMENTATION;\\n }\\n}\\n\",\"keccak256\":\"0x93044f8080758c5cf8d621e3614b8150f55572a1770880106a49dfa53784a9d2\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/IProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IProtocolVersion\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the semantic Aragon OSx protocol version number.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IProtocolVersion {\\n /// @notice Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\\n /// @return _version Returns the semantic Aragon OSx protocol version number.\\n /// @dev This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\\n function protocolVersion() external view returns (uint8[3] memory _version);\\n}\\n\",\"keccak256\":\"0x00a4da654d21dc1bdadbdc8bd54bb86c378c56f85e461ccc31303628ea621361\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/ProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IProtocolVersion} from \\\"./IProtocolVersion.sol\\\";\\n\\n/// @title ProtocolVersion\\n/// @author Aragon X - 2023\\n/// @notice An abstract, stateless, non-upgradeable contract providing the current Aragon OSx protocol version number.\\n/// @dev Do not add any new variables to this contract that would shift down storage in the inheritance chain.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract ProtocolVersion is IProtocolVersion {\\n // IMPORTANT: Do not add any storage variable, see the above notice.\\n\\n /// @inheritdoc IProtocolVersion\\n function protocolVersion() public pure returns (uint8[3] memory) {\\n return [1, 4, 0];\\n }\\n}\\n\",\"keccak256\":\"0x3975c937be935f687c6b6b8f379071232681e98cf04b175d72781b819ea52bdb\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"errors":{"NonUpgradeablePlugin()":[{"notice":"Thrown when attempting to prepare an update on a non-upgradeable plugin."}]},"kind":"user","methods":{"implementation()":{"notice":"Returns the plugin implementation address."},"prepareInstallation(address,bytes)":{"notice":"Prepares the installation of a plugin."},"prepareUninstallation(address,(address,address[],bytes))":{"notice":"Prepares the uninstallation of a plugin."},"prepareUpdate(address,uint16,(address,address[],bytes))":{"notice":"Prepares the update of a plugin."},"protocolVersion()":{"notice":"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with."},"supportsInterface(bytes4)":{"notice":"Checks if this or the parent contract supports an interface by its ID."}},"notice":"A mock plugin setup of a plugin to be deployed via the `new` keyword. v1.1 (Release 1, Build 1)","version":1}}},"src/mocks/plugin/PluginUUPSUpgradeableMock.sol":{"PluginUUPSUpgradeableMockBad":{"abi":[{"inputs":[{"internalType":"address","name":"dao","type":"address"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"name":"DaoUnauthorized","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"beacon","type":"address"}],"name":"BeaconUpgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"inputs":[],"name":"UPGRADE_PLUGIN_PERMISSION_ID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dao","outputs":[{"internalType":"contract IDAO","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IDAO","name":"_dao","type":"address"}],"name":"notAnInitializer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pluginType","outputs":[{"internalType":"enum IPlugin.PluginType","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"protocolVersion","outputs":[{"internalType":"uint8[3]","name":"","type":"uint8[3]"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"state1","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"}],"name":"upgradeTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"}],"devdoc":{"details":"DO NOT USE IN PRODUCTION!","errors":{"DaoUnauthorized(address,address,address,bytes32)":[{"params":{"dao":"The associated DAO.","permissionId":"The permission identifier.","where":"The context in which the authorization reverted.","who":"The address (EOA or contract) missing the permission."}}]},"kind":"dev","methods":{"dao()":{"returns":{"_0":"The DAO contract."}},"implementation()":{"returns":{"_0":"The address of the implementation contract."}},"protocolVersion()":{"details":"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.","returns":{"_0":"Returns the semantic Aragon OSx protocol version number."}},"proxiableUUID()":{"details":"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier."},"supportsInterface(bytes4)":{"params":{"_interfaceId":"The ID of the interface."},"returns":{"_0":"Returns `true` if the interface is supported."}},"upgradeTo(address)":{"custom:oz-upgrades-unsafe-allow-reachable":"delegatecall","details":"Upgrade the implementation of the proxy to `newImplementation`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."},"upgradeToAndCall(address,bytes)":{"custom:oz-upgrades-unsafe-allow-reachable":"delegatecall","details":"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."}},"version":1},"evm":{"bytecode":{"functionDebugData":{"@_13538":{"entryPoint":null,"id":13538,"parameterSlots":0,"returnSlots":0},"@_disableInitializers_515":{"entryPoint":34,"id":515,"parameterSlots":0,"returnSlots":0},"abi_encode_tuple_t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:608:92","statements":[{"nodeType":"YulBlock","src":"6:3:92","statements":[]},{"body":{"nodeType":"YulBlock","src":"188:229:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"205:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"216:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"198:6:92"},"nodeType":"YulFunctionCall","src":"198:21:92"},"nodeType":"YulExpressionStatement","src":"198:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"239:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"250:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"235:3:92"},"nodeType":"YulFunctionCall","src":"235:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"255:2:92","type":"","value":"39"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"228:6:92"},"nodeType":"YulFunctionCall","src":"228:30:92"},"nodeType":"YulExpressionStatement","src":"228:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"278:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"289:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"274:3:92"},"nodeType":"YulFunctionCall","src":"274:18:92"},{"hexValue":"496e697469616c697a61626c653a20636f6e747261637420697320696e697469","kind":"string","nodeType":"YulLiteral","src":"294:34:92","type":"","value":"Initializable: contract is initi"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"267:6:92"},"nodeType":"YulFunctionCall","src":"267:62:92"},"nodeType":"YulExpressionStatement","src":"267:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"349:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"360:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"345:3:92"},"nodeType":"YulFunctionCall","src":"345:18:92"},{"hexValue":"616c697a696e67","kind":"string","nodeType":"YulLiteral","src":"365:9:92","type":"","value":"alizing"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"338:6:92"},"nodeType":"YulFunctionCall","src":"338:37:92"},"nodeType":"YulExpressionStatement","src":"338:37:92"},{"nodeType":"YulAssignment","src":"384:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"396:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"407:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"392:3:92"},"nodeType":"YulFunctionCall","src":"392:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"384:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"165:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"179:4:92","type":""}],"src":"14:403:92"},{"body":{"nodeType":"YulBlock","src":"519:87:92","statements":[{"nodeType":"YulAssignment","src":"529:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"541:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"552:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"537:3:92"},"nodeType":"YulFunctionCall","src":"537:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"529:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"571:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"586:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"594:4:92","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"582:3:92"},"nodeType":"YulFunctionCall","src":"582:17:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"564:6:92"},"nodeType":"YulFunctionCall","src":"564:36:92"},"nodeType":"YulExpressionStatement","src":"564:36:92"}]},"name":"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"488:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"499:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"510:4:92","type":""}],"src":"422:184:92"}]},"contents":"{\n { }\n function abi_encode_tuple_t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 39)\n mstore(add(headStart, 64), \"Initializable: contract is initi\")\n mstore(add(headStart, 96), \"alizing\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xff))\n }\n}","id":92,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60a06040523060805234801561001457600080fd5b5061001d610022565b6100e1565b600054610100900460ff161561008e5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116146100df576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b608051610fe6610118600039600081816102de015281816103680152818161045e015281816104e301526105cd0152610fe66000f3fe6080604052600436106100bc5760003560e01c80634f1ef286116100745780636accab8c1161004e5780636accab8c146101d35780638883bbd7146101ea578063c9c4bfca1461020a57600080fd5b80634f1ef2861461018857806352d1902d1461019b5780635c60da1b146101be57600080fd5b80633659cfe6116100a55780633659cfe6146101185780634162169f1461013a57806341de68301461016c57600080fd5b806301ffc9a7146100c15780632ae9c600146100f6575b600080fd5b3480156100cd57600080fd5b506100e16100dc366004610d1e565b61023e565b60405190151581526020015b60405180910390f35b34801561010257600080fd5b5061010b6102aa565b6040516100ed9190610d48565b34801561012457600080fd5b50610138610133366004610d91565b6102d4565b005b34801561014657600080fd5b5060c9546001600160a01b03165b6040516001600160a01b0390911681526020016100ed565b34801561017857600080fd5b5060006040516100ed9190610dae565b610138610196366004610dec565b610454565b3480156101a757600080fd5b506101b06105c0565b6040519081526020016100ed565b3480156101ca57600080fd5b50610154610685565b3480156101df57600080fd5b506101b061012d5481565b3480156101f657600080fd5b50610138610205366004610d91565b6106bd565b34801561021657600080fd5b506101b07f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f581565b60006001600160e01b0319821663041de68360e41b148061026e57506001600160e01b03198216621574e360e91b145b8061028957506001600160e01b031982166352d1902d60e01b145b806102a457506301ffc9a760e01b6001600160e01b03198316145b92915050565b6102b2610d00565b5060408051606081018252600181526004602082015260009181019190915290565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036103665760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b60648201526084015b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166103c17f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b03161461042c5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b606482015260840161035d565b610435816106cf565b604080516000808252602082019092526104519183919061070c565b50565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036104e15760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b606482015260840161035d565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661053c7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b0316146105a75760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b606482015260840161035d565b6105b0826106cf565b6105bc8282600161070c565b5050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106605760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000606482015260840161035d565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b60006106b87f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b6106c6816108b1565b50600161012d55565b60c9547f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f5906105bc906001600160a01b0316303384600036610925565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156107445761073f836109e1565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561079e575060408051601f3d908101601f1916820190925261079b91810190610eb0565b60015b6108105760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201527f6f6e206973206e6f742055555053000000000000000000000000000000000000606482015260840161035d565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146108a55760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f7860448201527f6961626c65555549440000000000000000000000000000000000000000000000606482015260840161035d565b5061073f838383610aac565b600054610100900460ff1661091c5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840161035d565b61045181610ad7565b604051637ef7c88360e11b81526001600160a01b0387169063fdef9106906109599088908890889088908890600401610ec9565b602060405180830381865afa158015610976573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061099a9190610f1d565b6109d957604051630cb6f8ed60e21b81526001600160a01b0380881660048301528087166024830152851660448201526064810184905260840161035d565b505050505050565b6001600160a01b0381163b610a5e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e747261637400000000000000000000000000000000000000606482015260840161035d565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610ab583610b71565b600082511180610ac25750805b1561073f57610ad18383610bb1565b50505050565b600054610100900460ff16610b425760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840161035d565b60c9805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610b7a816109e1565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060610bd68383604051806060016040528060278152602001610fb360279139610bdd565b9392505050565b6060600080856001600160a01b031685604051610bfa9190610f63565b600060405180830381855af49150503d8060008114610c35576040519150601f19603f3d011682016040523d82523d6000602084013e610c3a565b606091505b5091509150610c4b86838387610c55565b9695505050505050565b60608315610cc4578251600003610cbd576001600160a01b0385163b610cbd5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161035d565b5081610cce565b610cce8383610cd6565b949350505050565b815115610ce65781518083602001fd5b8060405162461bcd60e51b815260040161035d9190610f7f565b60405180606001604052806003906020820280368337509192915050565b600060208284031215610d3057600080fd5b81356001600160e01b031981168114610bd657600080fd5b60608101818360005b6003811015610d7357815160ff16835260209283019290910190600101610d51565b50505092915050565b6001600160a01b038116811461045157600080fd5b600060208284031215610da357600080fd5b8135610bd681610d7c565b6020810160038310610dd057634e487b7160e01b600052602160045260246000fd5b91905290565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215610dff57600080fd5b8235610e0a81610d7c565b9150602083013567ffffffffffffffff80821115610e2757600080fd5b818501915085601f830112610e3b57600080fd5b813581811115610e4d57610e4d610dd6565b604051601f8201601f19908116603f01168101908382118183101715610e7557610e75610dd6565b81604052828152886020848701011115610e8e57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b600060208284031215610ec257600080fd5b5051919050565b60006001600160a01b03808816835280871660208401525084604083015260806060830152826080830152828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b600060208284031215610f2f57600080fd5b81518015158114610bd657600080fd5b60005b83811015610f5a578181015183820152602001610f42565b50506000910152565b60008251610f75818460208701610f3f565b9190910192915050565b6020815260008251806020840152610f9e816040850160208701610f3f565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a","opcodes":"PUSH1 0xA0 PUSH1 0x40 MSTORE ADDRESS PUSH1 0x80 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x14 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1D PUSH2 0x22 JUMP JUMPDEST PUSH2 0xE1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x8E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x27 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320696E697469 PUSH1 0x44 DUP3 ADD MSTORE PUSH7 0x616C697A696E67 PUSH1 0xC8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xFF SWAP1 DUP2 AND EQ PUSH2 0xDF JUMPI PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH2 0xFE6 PUSH2 0x118 PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH2 0x2DE ADD MSTORE DUP2 DUP2 PUSH2 0x368 ADD MSTORE DUP2 DUP2 PUSH2 0x45E ADD MSTORE DUP2 DUP2 PUSH2 0x4E3 ADD MSTORE PUSH2 0x5CD ADD MSTORE PUSH2 0xFE6 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xBC JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x4F1EF286 GT PUSH2 0x74 JUMPI DUP1 PUSH4 0x6ACCAB8C GT PUSH2 0x4E JUMPI DUP1 PUSH4 0x6ACCAB8C EQ PUSH2 0x1D3 JUMPI DUP1 PUSH4 0x8883BBD7 EQ PUSH2 0x1EA JUMPI DUP1 PUSH4 0xC9C4BFCA EQ PUSH2 0x20A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x188 JUMPI DUP1 PUSH4 0x52D1902D EQ PUSH2 0x19B JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0x1BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x3659CFE6 GT PUSH2 0xA5 JUMPI DUP1 PUSH4 0x3659CFE6 EQ PUSH2 0x118 JUMPI DUP1 PUSH4 0x4162169F EQ PUSH2 0x13A JUMPI DUP1 PUSH4 0x41DE6830 EQ PUSH2 0x16C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xC1 JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0xF6 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xCD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xE1 PUSH2 0xDC CALLDATASIZE PUSH1 0x4 PUSH2 0xD1E JUMP JUMPDEST PUSH2 0x23E JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x102 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x10B PUSH2 0x2AA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xED SWAP2 SWAP1 PUSH2 0xD48 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x124 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x138 PUSH2 0x133 CALLDATASIZE PUSH1 0x4 PUSH2 0xD91 JUMP JUMPDEST PUSH2 0x2D4 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x146 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xC9 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xED JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x178 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 PUSH1 0x40 MLOAD PUSH2 0xED SWAP2 SWAP1 PUSH2 0xDAE JUMP JUMPDEST PUSH2 0x138 PUSH2 0x196 CALLDATASIZE PUSH1 0x4 PUSH2 0xDEC JUMP JUMPDEST PUSH2 0x454 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1B0 PUSH2 0x5C0 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xED JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x154 PUSH2 0x685 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1B0 PUSH2 0x12D SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x138 PUSH2 0x205 CALLDATASIZE PUSH1 0x4 PUSH2 0xD91 JUMP JUMPDEST PUSH2 0x6BD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x216 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1B0 PUSH32 0x821B6E3A557148015A918C89E5D092E878A69854A2D1A410635F771BD5A8A3F5 DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x41DE683 PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x26E JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x289 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x52D1902D PUSH1 0xE0 SHL EQ JUMPDEST DUP1 PUSH2 0x2A4 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x2B2 PUSH2 0xD00 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x366 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x19195B1959D85D1958D85B1B PUSH1 0xA2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3C1 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x42C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x6163746976652070726F7879 PUSH1 0xA0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x35D JUMP JUMPDEST PUSH2 0x435 DUP2 PUSH2 0x6CF JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x451 SWAP2 DUP4 SWAP2 SWAP1 PUSH2 0x70C JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x4E1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x19195B1959D85D1958D85B1B PUSH1 0xA2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x35D JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x53C PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x5A7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x6163746976652070726F7879 PUSH1 0xA0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x35D JUMP JUMPDEST PUSH2 0x5B0 DUP3 PUSH2 0x6CF JUMP JUMPDEST PUSH2 0x5BC DUP3 DUP3 PUSH1 0x1 PUSH2 0x70C JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x660 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x38 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x555550535570677261646561626C653A206D757374206E6F742062652063616C PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6C6564207468726F7567682064656C656761746563616C6C0000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x35D JUMP JUMPDEST POP PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6B8 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x6C6 DUP2 PUSH2 0x8B1 JUMP JUMPDEST POP PUSH1 0x1 PUSH2 0x12D SSTORE JUMP JUMPDEST PUSH1 0xC9 SLOAD PUSH32 0x821B6E3A557148015A918C89E5D092E878A69854A2D1A410635F771BD5A8A3F5 SWAP1 PUSH2 0x5BC SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ADDRESS CALLER DUP5 PUSH1 0x0 CALLDATASIZE PUSH2 0x925 JUMP JUMPDEST PUSH32 0x4910FDFA16FED3260ED0E7147F7CC6DA11A60208B5B9406D12A635614FFD9143 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x744 JUMPI PUSH2 0x73F DUP4 PUSH2 0x9E1 JUMP JUMPDEST POP POP POP JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x52D1902D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x79E JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x79B SWAP2 DUP2 ADD SWAP1 PUSH2 0xEB0 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x810 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524331393637557067726164653A206E657720696D706C656D656E74617469 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F6E206973206E6F742055555053000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x35D JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC DUP2 EQ PUSH2 0x8A5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524331393637557067726164653A20756E737570706F727465642070726F78 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6961626C65555549440000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x35D JUMP JUMPDEST POP PUSH2 0x73F DUP4 DUP4 DUP4 PUSH2 0xAAC JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x91C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x35D JUMP JUMPDEST PUSH2 0x451 DUP2 PUSH2 0xAD7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x7EF7C883 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0xFDEF9106 SWAP1 PUSH2 0x959 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0xEC9 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x976 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x99A SWAP2 SWAP1 PUSH2 0xF1D JUMP JUMPDEST PUSH2 0x9D9 JUMPI PUSH1 0x40 MLOAD PUSH4 0xCB6F8ED PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND PUSH1 0x4 DUP4 ADD MSTORE DUP1 DUP8 AND PUSH1 0x24 DUP4 ADD MSTORE DUP6 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x84 ADD PUSH2 0x35D JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND EXTCODESIZE PUSH2 0xA5E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313936373A206E657720696D706C656D656E746174696F6E206973206E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F74206120636F6E747261637400000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x35D JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xAB5 DUP4 PUSH2 0xB71 JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD GT DUP1 PUSH2 0xAC2 JUMPI POP DUP1 JUMPDEST ISZERO PUSH2 0x73F JUMPI PUSH2 0xAD1 DUP4 DUP4 PUSH2 0xBB1 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0xB42 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x35D JUMP JUMPDEST PUSH1 0xC9 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xB7A DUP2 PUSH2 0x9E1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xBD6 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xFB3 PUSH1 0x27 SWAP2 CODECOPY PUSH2 0xBDD JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0xBFA SWAP2 SWAP1 PUSH2 0xF63 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xC35 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xC3A JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0xC4B DUP7 DUP4 DUP4 DUP8 PUSH2 0xC55 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0xCC4 JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0xCBD JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0xCBD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x35D JUMP JUMPDEST POP DUP2 PUSH2 0xCCE JUMP JUMPDEST PUSH2 0xCCE DUP4 DUP4 PUSH2 0xCD6 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0xCE6 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x35D SWAP2 SWAP1 PUSH2 0xF7F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xD30 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0xBD6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0xD73 JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0xD51 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x451 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xDA3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xBD6 DUP2 PUSH2 0xD7C JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH1 0x3 DUP4 LT PUSH2 0xDD0 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 SWAP1 MSTORE SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xDFF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0xE0A DUP2 PUSH2 0xD7C JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xE27 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xE3B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0xE4D JUMPI PUSH2 0xE4D PUSH2 0xDD6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0xE75 JUMPI PUSH2 0xE75 PUSH2 0xDD6 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0xE8E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xEC2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND DUP4 MSTORE DUP1 DUP8 AND PUSH1 0x20 DUP5 ADD MSTORE POP DUP5 PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x80 PUSH1 0x60 DUP4 ADD MSTORE DUP3 PUSH1 0x80 DUP4 ADD MSTORE DUP3 DUP5 PUSH1 0xA0 DUP5 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0xA0 DUP5 DUP5 ADD ADD MSTORE PUSH1 0xA0 PUSH1 0x1F NOT PUSH1 0x1F DUP6 ADD AND DUP4 ADD ADD SWAP1 POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xF2F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xBD6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xF5A JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xF42 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0xF75 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0xF3F JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0xF9E DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0xF3F JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A164 PUSH20 0x6F6C6343000811000A0000000000000000000000 ","sourceMap":"1988:216:53:-:0;;;1198:4:5;1155:48;;1988:216:53;;;;;;;;;-1:-1:-1;1489:22:75;:20;:22::i;:::-;1988:216:53;;5939:280:4;6007:13;;;;;;;6006:14;5998:66;;;;-1:-1:-1;;;5998:66:4;;216:2:92;5998:66:4;;;198:21:92;255:2;235:18;;;228:30;294:34;274:18;;;267:62;-1:-1:-1;;;345:18:92;;;338:37;392:19;;5998:66:4;;;;;;;;6078:12;;6094:15;6078:12;;;:31;6074:139;;6125:12;:30;;-1:-1:-1;;6125:30:4;6140:15;6125:30;;;;;;6174:28;;564:36:92;;;6174:28:4;;552:2:92;537:18;6174:28:4;;;;;;;6074:139;5939:280::o;422:184:92:-;1988:216:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@UPGRADE_PLUGIN_PERMISSION_ID_13556":{"entryPoint":null,"id":13556,"parameterSlots":0,"returnSlots":0},"@__DaoAuthorizableUpgradeable_init_13125":{"entryPoint":2775,"id":13125,"parameterSlots":1,"returnSlots":0},"@__PluginUUPSUpgradeable_init_13570":{"entryPoint":2225,"id":13570,"parameterSlots":1,"returnSlots":0},"@_auth_13211":{"entryPoint":2341,"id":13211,"parameterSlots":6,"returnSlots":0},"@_authorizeUpgrade_13627":{"entryPoint":1743,"id":13627,"parameterSlots":1,"returnSlots":0},"@_getImplementation_76":{"entryPoint":null,"id":76,"parameterSlots":0,"returnSlots":1},"@_msgData_2579":{"entryPoint":null,"id":2579,"parameterSlots":0,"returnSlots":2},"@_msgSender_2570":{"entryPoint":null,"id":2570,"parameterSlots":0,"returnSlots":1},"@_revert_1000":{"entryPoint":3286,"id":1000,"parameterSlots":2,"returnSlots":0},"@_setImplementation_100":{"entryPoint":2529,"id":100,"parameterSlots":1,"returnSlots":0},"@_upgradeToAndCallUUPS_198":{"entryPoint":1804,"id":198,"parameterSlots":3,"returnSlots":0},"@_upgradeToAndCall_145":{"entryPoint":2732,"id":145,"parameterSlots":3,"returnSlots":0},"@_upgradeTo_115":{"entryPoint":2929,"id":115,"parameterSlots":1,"returnSlots":0},"@dao_13135":{"entryPoint":null,"id":13135,"parameterSlots":0,"returnSlots":1},"@functionDelegateCall_888":{"entryPoint":2993,"id":888,"parameterSlots":2,"returnSlots":1},"@functionDelegateCall_917":{"entryPoint":3037,"id":917,"parameterSlots":3,"returnSlots":1},"@getAddressSlot_2699":{"entryPoint":null,"id":2699,"parameterSlots":1,"returnSlots":1},"@getBooleanSlot_2710":{"entryPoint":null,"id":2710,"parameterSlots":1,"returnSlots":1},"@implementation_13616":{"entryPoint":1669,"id":13616,"parameterSlots":0,"returnSlots":1},"@isContract_689":{"entryPoint":null,"id":689,"parameterSlots":1,"returnSlots":1},"@notAnInitializer_11920":{"entryPoint":1725,"id":11920,"parameterSlots":1,"returnSlots":0},"@pluginType_13550":{"entryPoint":null,"id":13550,"parameterSlots":0,"returnSlots":1},"@protocolVersion_14765":{"entryPoint":682,"id":14765,"parameterSlots":0,"returnSlots":1},"@proxiableUUID_616":{"entryPoint":1472,"id":616,"parameterSlots":0,"returnSlots":1},"@state1_11905":{"entryPoint":null,"id":11905,"parameterSlots":0,"returnSlots":0},"@supportsInterface_13606":{"entryPoint":574,"id":13606,"parameterSlots":1,"returnSlots":1},"@supportsInterface_2816":{"entryPoint":null,"id":2816,"parameterSlots":1,"returnSlots":1},"@upgradeToAndCall_659":{"entryPoint":1108,"id":659,"parameterSlots":2,"returnSlots":0},"@upgradeTo_638":{"entryPoint":724,"id":638,"parameterSlots":1,"returnSlots":0},"@verifyCallResultFromTarget_956":{"entryPoint":3157,"id":956,"parameterSlots":4,"returnSlots":1},"abi_decode_tuple_t_address":{"entryPoint":3473,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_bytes_memory_ptr":{"entryPoint":3564,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_bool_fromMemory":{"entryPoint":3869,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes32_fromMemory":{"entryPoint":3760,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes4":{"entryPoint":3358,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_contract$_IDAO_$10865":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":3939,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address_t_address_t_address_t_bytes32__to_t_address_t_address_t_address_t_bytes32__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":5,"returnSlots":1},"abi_encode_tuple_t_address_t_address_t_bytes32_t_bytes_calldata_ptr__to_t_address_t_address_t_bytes32_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":3785,"id":null,"parameterSlots":6,"returnSlots":1},"abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed":{"entryPoint":3400,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_contract$_IDAO_$10865__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_enum$_PluginType_$13330__to_t_uint8__fromStack_reversed":{"entryPoint":3502,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":3967,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_36e108fa7a809b52ab1951dd91c117a7bc9ac5250bdf1aa162d4e104f7edf9eb__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_52f1ead4d9653e13afbd2e90ef2587c30187cd50b2e97d784e3f7a7541247434__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_67f0151b4ad1dcfa0e3302a0cd6019f51582ef1807b37dceb00bd852a514f7f4__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_76b6b6debfc5febf101145a79ecf0b0d2e89e397dfdab2bca99888370411152c__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_8e8e2fbcb586f700b5b14e2c4a650c8d83b9773c31c5fe8962070ea544e11f24__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"copy_memory_to_memory_with_cleanup":{"entryPoint":3903,"id":null,"parameterSlots":3,"returnSlots":0},"panic_error_0x41":{"entryPoint":3542,"id":null,"parameterSlots":0,"returnSlots":0},"validator_revert_address":{"entryPoint":3452,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:9912:92","statements":[{"nodeType":"YulBlock","src":"6:3:92","statements":[]},{"body":{"nodeType":"YulBlock","src":"83:217:92","statements":[{"body":{"nodeType":"YulBlock","src":"129:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"138:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"141:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"131:6:92"},"nodeType":"YulFunctionCall","src":"131:12:92"},"nodeType":"YulExpressionStatement","src":"131:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"104:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"113:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"100:3:92"},"nodeType":"YulFunctionCall","src":"100:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"125:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"96:3:92"},"nodeType":"YulFunctionCall","src":"96:32:92"},"nodeType":"YulIf","src":"93:52:92"},{"nodeType":"YulVariableDeclaration","src":"154:36:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"180:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"167:12:92"},"nodeType":"YulFunctionCall","src":"167:23:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"158:5:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"254:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"263:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"266:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"256:6:92"},"nodeType":"YulFunctionCall","src":"256:12:92"},"nodeType":"YulExpressionStatement","src":"256:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"212:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"223:5:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"234:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"239:10:92","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"230:3:92"},"nodeType":"YulFunctionCall","src":"230:20:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"219:3:92"},"nodeType":"YulFunctionCall","src":"219:32:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"209:2:92"},"nodeType":"YulFunctionCall","src":"209:43:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"202:6:92"},"nodeType":"YulFunctionCall","src":"202:51:92"},"nodeType":"YulIf","src":"199:71:92"},{"nodeType":"YulAssignment","src":"279:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"289:5:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"279:6:92"}]}]},"name":"abi_decode_tuple_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"49:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"60:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"72:6:92","type":""}],"src":"14:286:92"},{"body":{"nodeType":"YulBlock","src":"400:92:92","statements":[{"nodeType":"YulAssignment","src":"410:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"422:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"433:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"418:3:92"},"nodeType":"YulFunctionCall","src":"418:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"410:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"452:9:92"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"477:6:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"470:6:92"},"nodeType":"YulFunctionCall","src":"470:14:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"463:6:92"},"nodeType":"YulFunctionCall","src":"463:22:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"445:6:92"},"nodeType":"YulFunctionCall","src":"445:41:92"},"nodeType":"YulExpressionStatement","src":"445:41:92"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"369:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"380:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"391:4:92","type":""}],"src":"305:187:92"},{"body":{"nodeType":"YulBlock","src":"640:358:92","statements":[{"nodeType":"YulAssignment","src":"650:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"662:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"673:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"658:3:92"},"nodeType":"YulFunctionCall","src":"658:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"650:4:92"}]},{"nodeType":"YulVariableDeclaration","src":"685:20:92","value":{"name":"headStart","nodeType":"YulIdentifier","src":"696:9:92"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"689:3:92","type":""}]},{"nodeType":"YulAssignment","src":"714:16:92","value":{"name":"headStart","nodeType":"YulIdentifier","src":"721:9:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"714:3:92"}]},{"nodeType":"YulVariableDeclaration","src":"739:20:92","value":{"name":"value0","nodeType":"YulIdentifier","src":"753:6:92"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"743:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"768:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"777:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"772:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"834:158:92","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"855:3:92"},{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"870:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"864:5:92"},"nodeType":"YulFunctionCall","src":"864:13:92"},{"kind":"number","nodeType":"YulLiteral","src":"879:4:92","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"860:3:92"},"nodeType":"YulFunctionCall","src":"860:24:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"848:6:92"},"nodeType":"YulFunctionCall","src":"848:37:92"},"nodeType":"YulExpressionStatement","src":"848:37:92"},{"nodeType":"YulVariableDeclaration","src":"898:14:92","value":{"kind":"number","nodeType":"YulLiteral","src":"908:4:92","type":"","value":"0x20"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"902:2:92","type":""}]},{"nodeType":"YulAssignment","src":"925:19:92","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"936:3:92"},{"name":"_1","nodeType":"YulIdentifier","src":"941:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"932:3:92"},"nodeType":"YulFunctionCall","src":"932:12:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"925:3:92"}]},{"nodeType":"YulAssignment","src":"957:25:92","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"971:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"979:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"967:3:92"},"nodeType":"YulFunctionCall","src":"967:15:92"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"957:6:92"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"798:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"801:4:92","type":"","value":"0x03"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"795:2:92"},"nodeType":"YulFunctionCall","src":"795:11:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"807:18:92","statements":[{"nodeType":"YulAssignment","src":"809:14:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"818:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"821:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"814:3:92"},"nodeType":"YulFunctionCall","src":"814:9:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"809:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"791:3:92","statements":[]},"src":"787:205:92"}]},"name":"abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"609:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"620:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"631:4:92","type":""}],"src":"497:501:92"},{"body":{"nodeType":"YulBlock","src":"1048:109:92","statements":[{"body":{"nodeType":"YulBlock","src":"1135:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1144:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1147:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1137:6:92"},"nodeType":"YulFunctionCall","src":"1137:12:92"},"nodeType":"YulExpressionStatement","src":"1137:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1071:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1082:5:92"},{"kind":"number","nodeType":"YulLiteral","src":"1089:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1078:3:92"},"nodeType":"YulFunctionCall","src":"1078:54:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1068:2:92"},"nodeType":"YulFunctionCall","src":"1068:65:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1061:6:92"},"nodeType":"YulFunctionCall","src":"1061:73:92"},"nodeType":"YulIf","src":"1058:93:92"}]},"name":"validator_revert_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1037:5:92","type":""}],"src":"1003:154:92"},{"body":{"nodeType":"YulBlock","src":"1232:177:92","statements":[{"body":{"nodeType":"YulBlock","src":"1278:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1287:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1290:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1280:6:92"},"nodeType":"YulFunctionCall","src":"1280:12:92"},"nodeType":"YulExpressionStatement","src":"1280:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1253:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"1262:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1249:3:92"},"nodeType":"YulFunctionCall","src":"1249:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"1274:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1245:3:92"},"nodeType":"YulFunctionCall","src":"1245:32:92"},"nodeType":"YulIf","src":"1242:52:92"},{"nodeType":"YulVariableDeclaration","src":"1303:36:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1329:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1316:12:92"},"nodeType":"YulFunctionCall","src":"1316:23:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"1307:5:92","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1373:5:92"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"1348:24:92"},"nodeType":"YulFunctionCall","src":"1348:31:92"},"nodeType":"YulExpressionStatement","src":"1348:31:92"},{"nodeType":"YulAssignment","src":"1388:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"1398:5:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1388:6:92"}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1198:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1209:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1221:6:92","type":""}],"src":"1162:247:92"},{"body":{"nodeType":"YulBlock","src":"1529:125:92","statements":[{"nodeType":"YulAssignment","src":"1539:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1551:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1562:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1547:3:92"},"nodeType":"YulFunctionCall","src":"1547:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1539:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1581:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1596:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"1604:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1592:3:92"},"nodeType":"YulFunctionCall","src":"1592:55:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1574:6:92"},"nodeType":"YulFunctionCall","src":"1574:74:92"},"nodeType":"YulExpressionStatement","src":"1574:74:92"}]},"name":"abi_encode_tuple_t_contract$_IDAO_$10865__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1498:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1509:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1520:4:92","type":""}],"src":"1414:240:92"},{"body":{"nodeType":"YulBlock","src":"1774:229:92","statements":[{"nodeType":"YulAssignment","src":"1784:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1796:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1807:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1792:3:92"},"nodeType":"YulFunctionCall","src":"1792:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1784:4:92"}]},{"body":{"nodeType":"YulBlock","src":"1852:111:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1873:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1880:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"1885:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1876:3:92"},"nodeType":"YulFunctionCall","src":"1876:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1866:6:92"},"nodeType":"YulFunctionCall","src":"1866:31:92"},"nodeType":"YulExpressionStatement","src":"1866:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1917:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"1920:4:92","type":"","value":"0x21"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1910:6:92"},"nodeType":"YulFunctionCall","src":"1910:15:92"},"nodeType":"YulExpressionStatement","src":"1910:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1945:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1948:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1938:6:92"},"nodeType":"YulFunctionCall","src":"1938:15:92"},"nodeType":"YulExpressionStatement","src":"1938:15:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1832:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"1840:1:92","type":"","value":"3"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"1829:2:92"},"nodeType":"YulFunctionCall","src":"1829:13:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1822:6:92"},"nodeType":"YulFunctionCall","src":"1822:21:92"},"nodeType":"YulIf","src":"1819:144:92"},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1979:9:92"},{"name":"value0","nodeType":"YulIdentifier","src":"1990:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1972:6:92"},"nodeType":"YulFunctionCall","src":"1972:25:92"},"nodeType":"YulExpressionStatement","src":"1972:25:92"}]},"name":"abi_encode_tuple_t_enum$_PluginType_$13330__to_t_uint8__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1743:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1754:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1765:4:92","type":""}],"src":"1659:344:92"},{"body":{"nodeType":"YulBlock","src":"2040:95:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2057:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2064:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"2069:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2060:3:92"},"nodeType":"YulFunctionCall","src":"2060:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2050:6:92"},"nodeType":"YulFunctionCall","src":"2050:31:92"},"nodeType":"YulExpressionStatement","src":"2050:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2097:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"2100:4:92","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2090:6:92"},"nodeType":"YulFunctionCall","src":"2090:15:92"},"nodeType":"YulExpressionStatement","src":"2090:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2121:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2124:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2114:6:92"},"nodeType":"YulFunctionCall","src":"2114:15:92"},"nodeType":"YulExpressionStatement","src":"2114:15:92"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"2008:127:92"},{"body":{"nodeType":"YulBlock","src":"2236:960:92","statements":[{"body":{"nodeType":"YulBlock","src":"2282:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2291:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2294:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2284:6:92"},"nodeType":"YulFunctionCall","src":"2284:12:92"},"nodeType":"YulExpressionStatement","src":"2284:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2257:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"2266:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2253:3:92"},"nodeType":"YulFunctionCall","src":"2253:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"2278:2:92","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2249:3:92"},"nodeType":"YulFunctionCall","src":"2249:32:92"},"nodeType":"YulIf","src":"2246:52:92"},{"nodeType":"YulVariableDeclaration","src":"2307:36:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2333:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2320:12:92"},"nodeType":"YulFunctionCall","src":"2320:23:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"2311:5:92","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2377:5:92"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"2352:24:92"},"nodeType":"YulFunctionCall","src":"2352:31:92"},"nodeType":"YulExpressionStatement","src":"2352:31:92"},{"nodeType":"YulAssignment","src":"2392:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"2402:5:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2392:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"2416:46:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2447:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2458:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2443:3:92"},"nodeType":"YulFunctionCall","src":"2443:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2430:12:92"},"nodeType":"YulFunctionCall","src":"2430:32:92"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"2420:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2471:28:92","value":{"kind":"number","nodeType":"YulLiteral","src":"2481:18:92","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"2475:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"2526:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2535:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2538:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2528:6:92"},"nodeType":"YulFunctionCall","src":"2528:12:92"},"nodeType":"YulExpressionStatement","src":"2528:12:92"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"2514:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"2522:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2511:2:92"},"nodeType":"YulFunctionCall","src":"2511:14:92"},"nodeType":"YulIf","src":"2508:34:92"},{"nodeType":"YulVariableDeclaration","src":"2551:32:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2565:9:92"},{"name":"offset","nodeType":"YulIdentifier","src":"2576:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2561:3:92"},"nodeType":"YulFunctionCall","src":"2561:22:92"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"2555:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"2631:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2640:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2643:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2633:6:92"},"nodeType":"YulFunctionCall","src":"2633:12:92"},"nodeType":"YulExpressionStatement","src":"2633:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"2610:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"2614:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2606:3:92"},"nodeType":"YulFunctionCall","src":"2606:13:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2621:7:92"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2602:3:92"},"nodeType":"YulFunctionCall","src":"2602:27:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2595:6:92"},"nodeType":"YulFunctionCall","src":"2595:35:92"},"nodeType":"YulIf","src":"2592:55:92"},{"nodeType":"YulVariableDeclaration","src":"2656:26:92","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"2679:2:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2666:12:92"},"nodeType":"YulFunctionCall","src":"2666:16:92"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"2660:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"2705:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"2707:16:92"},"nodeType":"YulFunctionCall","src":"2707:18:92"},"nodeType":"YulExpressionStatement","src":"2707:18:92"}]},"condition":{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"2697:2:92"},{"name":"_1","nodeType":"YulIdentifier","src":"2701:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2694:2:92"},"nodeType":"YulFunctionCall","src":"2694:10:92"},"nodeType":"YulIf","src":"2691:36:92"},{"nodeType":"YulVariableDeclaration","src":"2736:17:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2750:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"2746:3:92"},"nodeType":"YulFunctionCall","src":"2746:7:92"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"2740:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2762:23:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2782:2:92","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2776:5:92"},"nodeType":"YulFunctionCall","src":"2776:9:92"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"2766:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2794:71:92","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"2816:6:92"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"2840:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"2844:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2836:3:92"},"nodeType":"YulFunctionCall","src":"2836:13:92"},{"name":"_4","nodeType":"YulIdentifier","src":"2851:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2832:3:92"},"nodeType":"YulFunctionCall","src":"2832:22:92"},{"kind":"number","nodeType":"YulLiteral","src":"2856:2:92","type":"","value":"63"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2828:3:92"},"nodeType":"YulFunctionCall","src":"2828:31:92"},{"name":"_4","nodeType":"YulIdentifier","src":"2861:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2824:3:92"},"nodeType":"YulFunctionCall","src":"2824:40:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2812:3:92"},"nodeType":"YulFunctionCall","src":"2812:53:92"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"2798:10:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"2924:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"2926:16:92"},"nodeType":"YulFunctionCall","src":"2926:18:92"},"nodeType":"YulExpressionStatement","src":"2926:18:92"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"2883:10:92"},{"name":"_1","nodeType":"YulIdentifier","src":"2895:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2880:2:92"},"nodeType":"YulFunctionCall","src":"2880:18:92"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"2903:10:92"},{"name":"memPtr","nodeType":"YulIdentifier","src":"2915:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2900:2:92"},"nodeType":"YulFunctionCall","src":"2900:22:92"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"2877:2:92"},"nodeType":"YulFunctionCall","src":"2877:46:92"},"nodeType":"YulIf","src":"2874:72:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2962:2:92","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"2966:10:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2955:6:92"},"nodeType":"YulFunctionCall","src":"2955:22:92"},"nodeType":"YulExpressionStatement","src":"2955:22:92"},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"2993:6:92"},{"name":"_3","nodeType":"YulIdentifier","src":"3001:2:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2986:6:92"},"nodeType":"YulFunctionCall","src":"2986:18:92"},"nodeType":"YulExpressionStatement","src":"2986:18:92"},{"body":{"nodeType":"YulBlock","src":"3050:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3059:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3062:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3052:6:92"},"nodeType":"YulFunctionCall","src":"3052:12:92"},"nodeType":"YulExpressionStatement","src":"3052:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"3027:2:92"},{"name":"_3","nodeType":"YulIdentifier","src":"3031:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3023:3:92"},"nodeType":"YulFunctionCall","src":"3023:11:92"},{"kind":"number","nodeType":"YulLiteral","src":"3036:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3019:3:92"},"nodeType":"YulFunctionCall","src":"3019:20:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3041:7:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3016:2:92"},"nodeType":"YulFunctionCall","src":"3016:33:92"},"nodeType":"YulIf","src":"3013:53:92"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"3092:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"3100:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3088:3:92"},"nodeType":"YulFunctionCall","src":"3088:15:92"},{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"3109:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"3113:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3105:3:92"},"nodeType":"YulFunctionCall","src":"3105:11:92"},{"name":"_3","nodeType":"YulIdentifier","src":"3118:2:92"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"3075:12:92"},"nodeType":"YulFunctionCall","src":"3075:46:92"},"nodeType":"YulExpressionStatement","src":"3075:46:92"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"3145:6:92"},{"name":"_3","nodeType":"YulIdentifier","src":"3153:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3141:3:92"},"nodeType":"YulFunctionCall","src":"3141:15:92"},{"kind":"number","nodeType":"YulLiteral","src":"3158:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3137:3:92"},"nodeType":"YulFunctionCall","src":"3137:24:92"},{"kind":"number","nodeType":"YulLiteral","src":"3163:1:92","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3130:6:92"},"nodeType":"YulFunctionCall","src":"3130:35:92"},"nodeType":"YulExpressionStatement","src":"3130:35:92"},{"nodeType":"YulAssignment","src":"3174:16:92","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"3184:6:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"3174:6:92"}]}]},"name":"abi_decode_tuple_t_addresst_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2194:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2205:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2217:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2225:6:92","type":""}],"src":"2140:1056:92"},{"body":{"nodeType":"YulBlock","src":"3302:76:92","statements":[{"nodeType":"YulAssignment","src":"3312:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3324:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3335:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3320:3:92"},"nodeType":"YulFunctionCall","src":"3320:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3312:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3354:9:92"},{"name":"value0","nodeType":"YulIdentifier","src":"3365:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3347:6:92"},"nodeType":"YulFunctionCall","src":"3347:25:92"},"nodeType":"YulExpressionStatement","src":"3347:25:92"}]},"name":"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3271:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3282:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3293:4:92","type":""}],"src":"3201:177:92"},{"body":{"nodeType":"YulBlock","src":"3484:125:92","statements":[{"nodeType":"YulAssignment","src":"3494:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3506:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3517:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3502:3:92"},"nodeType":"YulFunctionCall","src":"3502:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3494:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3536:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3551:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"3559:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3547:3:92"},"nodeType":"YulFunctionCall","src":"3547:55:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3529:6:92"},"nodeType":"YulFunctionCall","src":"3529:74:92"},"nodeType":"YulExpressionStatement","src":"3529:74:92"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3453:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3464:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3475:4:92","type":""}],"src":"3383:226:92"},{"body":{"nodeType":"YulBlock","src":"3715:76:92","statements":[{"nodeType":"YulAssignment","src":"3725:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3737:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3748:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3733:3:92"},"nodeType":"YulFunctionCall","src":"3733:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3725:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3767:9:92"},{"name":"value0","nodeType":"YulIdentifier","src":"3778:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3760:6:92"},"nodeType":"YulFunctionCall","src":"3760:25:92"},"nodeType":"YulExpressionStatement","src":"3760:25:92"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3684:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3695:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3706:4:92","type":""}],"src":"3614:177:92"},{"body":{"nodeType":"YulBlock","src":"3880:177:92","statements":[{"body":{"nodeType":"YulBlock","src":"3926:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3935:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3938:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3928:6:92"},"nodeType":"YulFunctionCall","src":"3928:12:92"},"nodeType":"YulExpressionStatement","src":"3928:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3901:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"3910:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3897:3:92"},"nodeType":"YulFunctionCall","src":"3897:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"3922:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3893:3:92"},"nodeType":"YulFunctionCall","src":"3893:32:92"},"nodeType":"YulIf","src":"3890:52:92"},{"nodeType":"YulVariableDeclaration","src":"3951:36:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3977:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3964:12:92"},"nodeType":"YulFunctionCall","src":"3964:23:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"3955:5:92","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4021:5:92"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"3996:24:92"},"nodeType":"YulFunctionCall","src":"3996:31:92"},"nodeType":"YulExpressionStatement","src":"3996:31:92"},{"nodeType":"YulAssignment","src":"4036:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"4046:5:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"4036:6:92"}]}]},"name":"abi_decode_tuple_t_contract$_IDAO_$10865","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3846:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3857:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3869:6:92","type":""}],"src":"3796:261:92"},{"body":{"nodeType":"YulBlock","src":"4236:234:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4253:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4264:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4246:6:92"},"nodeType":"YulFunctionCall","src":"4246:21:92"},"nodeType":"YulExpressionStatement","src":"4246:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4287:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4298:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4283:3:92"},"nodeType":"YulFunctionCall","src":"4283:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"4303:2:92","type":"","value":"44"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4276:6:92"},"nodeType":"YulFunctionCall","src":"4276:30:92"},"nodeType":"YulExpressionStatement","src":"4276:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4326:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4337:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4322:3:92"},"nodeType":"YulFunctionCall","src":"4322:18:92"},{"hexValue":"46756e6374696f6e206d7573742062652063616c6c6564207468726f75676820","kind":"string","nodeType":"YulLiteral","src":"4342:34:92","type":"","value":"Function must be called through "}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4315:6:92"},"nodeType":"YulFunctionCall","src":"4315:62:92"},"nodeType":"YulExpressionStatement","src":"4315:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4397:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4408:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4393:3:92"},"nodeType":"YulFunctionCall","src":"4393:18:92"},{"hexValue":"64656c656761746563616c6c","kind":"string","nodeType":"YulLiteral","src":"4413:14:92","type":"","value":"delegatecall"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4386:6:92"},"nodeType":"YulFunctionCall","src":"4386:42:92"},"nodeType":"YulExpressionStatement","src":"4386:42:92"},{"nodeType":"YulAssignment","src":"4437:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4449:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4460:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4445:3:92"},"nodeType":"YulFunctionCall","src":"4445:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4437:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_36e108fa7a809b52ab1951dd91c117a7bc9ac5250bdf1aa162d4e104f7edf9eb__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4213:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4227:4:92","type":""}],"src":"4062:408:92"},{"body":{"nodeType":"YulBlock","src":"4649:234:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4666:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4677:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4659:6:92"},"nodeType":"YulFunctionCall","src":"4659:21:92"},"nodeType":"YulExpressionStatement","src":"4659:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4700:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4711:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4696:3:92"},"nodeType":"YulFunctionCall","src":"4696:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"4716:2:92","type":"","value":"44"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4689:6:92"},"nodeType":"YulFunctionCall","src":"4689:30:92"},"nodeType":"YulExpressionStatement","src":"4689:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4739:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4750:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4735:3:92"},"nodeType":"YulFunctionCall","src":"4735:18:92"},{"hexValue":"46756e6374696f6e206d7573742062652063616c6c6564207468726f75676820","kind":"string","nodeType":"YulLiteral","src":"4755:34:92","type":"","value":"Function must be called through "}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4728:6:92"},"nodeType":"YulFunctionCall","src":"4728:62:92"},"nodeType":"YulExpressionStatement","src":"4728:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4810:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4821:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4806:3:92"},"nodeType":"YulFunctionCall","src":"4806:18:92"},{"hexValue":"6163746976652070726f7879","kind":"string","nodeType":"YulLiteral","src":"4826:14:92","type":"","value":"active proxy"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4799:6:92"},"nodeType":"YulFunctionCall","src":"4799:42:92"},"nodeType":"YulExpressionStatement","src":"4799:42:92"},{"nodeType":"YulAssignment","src":"4850:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4862:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4873:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4858:3:92"},"nodeType":"YulFunctionCall","src":"4858:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4850:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_52f1ead4d9653e13afbd2e90ef2587c30187cd50b2e97d784e3f7a7541247434__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4626:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4640:4:92","type":""}],"src":"4475:408:92"},{"body":{"nodeType":"YulBlock","src":"5062:246:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5079:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5090:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5072:6:92"},"nodeType":"YulFunctionCall","src":"5072:21:92"},"nodeType":"YulExpressionStatement","src":"5072:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5113:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5124:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5109:3:92"},"nodeType":"YulFunctionCall","src":"5109:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"5129:2:92","type":"","value":"56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5102:6:92"},"nodeType":"YulFunctionCall","src":"5102:30:92"},"nodeType":"YulExpressionStatement","src":"5102:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5152:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5163:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5148:3:92"},"nodeType":"YulFunctionCall","src":"5148:18:92"},{"hexValue":"555550535570677261646561626c653a206d757374206e6f742062652063616c","kind":"string","nodeType":"YulLiteral","src":"5168:34:92","type":"","value":"UUPSUpgradeable: must not be cal"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5141:6:92"},"nodeType":"YulFunctionCall","src":"5141:62:92"},"nodeType":"YulExpressionStatement","src":"5141:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5223:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5234:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5219:3:92"},"nodeType":"YulFunctionCall","src":"5219:18:92"},{"hexValue":"6c6564207468726f7567682064656c656761746563616c6c","kind":"string","nodeType":"YulLiteral","src":"5239:26:92","type":"","value":"led through delegatecall"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5212:6:92"},"nodeType":"YulFunctionCall","src":"5212:54:92"},"nodeType":"YulExpressionStatement","src":"5212:54:92"},{"nodeType":"YulAssignment","src":"5275:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5287:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5298:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5283:3:92"},"nodeType":"YulFunctionCall","src":"5283:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5275:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_67f0151b4ad1dcfa0e3302a0cd6019f51582ef1807b37dceb00bd852a514f7f4__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5039:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5053:4:92","type":""}],"src":"4888:420:92"},{"body":{"nodeType":"YulBlock","src":"5394:103:92","statements":[{"body":{"nodeType":"YulBlock","src":"5440:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5449:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5452:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5442:6:92"},"nodeType":"YulFunctionCall","src":"5442:12:92"},"nodeType":"YulExpressionStatement","src":"5442:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"5415:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"5424:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5411:3:92"},"nodeType":"YulFunctionCall","src":"5411:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"5436:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"5407:3:92"},"nodeType":"YulFunctionCall","src":"5407:32:92"},"nodeType":"YulIf","src":"5404:52:92"},{"nodeType":"YulAssignment","src":"5465:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5481:9:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5475:5:92"},"nodeType":"YulFunctionCall","src":"5475:16:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"5465:6:92"}]}]},"name":"abi_decode_tuple_t_bytes32_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5360:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"5371:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"5383:6:92","type":""}],"src":"5313:184:92"},{"body":{"nodeType":"YulBlock","src":"5676:236:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5693:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5704:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5686:6:92"},"nodeType":"YulFunctionCall","src":"5686:21:92"},"nodeType":"YulExpressionStatement","src":"5686:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5727:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5738:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5723:3:92"},"nodeType":"YulFunctionCall","src":"5723:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"5743:2:92","type":"","value":"46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5716:6:92"},"nodeType":"YulFunctionCall","src":"5716:30:92"},"nodeType":"YulExpressionStatement","src":"5716:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5766:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5777:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5762:3:92"},"nodeType":"YulFunctionCall","src":"5762:18:92"},{"hexValue":"45524331393637557067726164653a206e657720696d706c656d656e74617469","kind":"string","nodeType":"YulLiteral","src":"5782:34:92","type":"","value":"ERC1967Upgrade: new implementati"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5755:6:92"},"nodeType":"YulFunctionCall","src":"5755:62:92"},"nodeType":"YulExpressionStatement","src":"5755:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5837:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5848:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5833:3:92"},"nodeType":"YulFunctionCall","src":"5833:18:92"},{"hexValue":"6f6e206973206e6f742055555053","kind":"string","nodeType":"YulLiteral","src":"5853:16:92","type":"","value":"on is not UUPS"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5826:6:92"},"nodeType":"YulFunctionCall","src":"5826:44:92"},"nodeType":"YulExpressionStatement","src":"5826:44:92"},{"nodeType":"YulAssignment","src":"5879:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5891:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5902:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5887:3:92"},"nodeType":"YulFunctionCall","src":"5887:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5879:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_8e8e2fbcb586f700b5b14e2c4a650c8d83b9773c31c5fe8962070ea544e11f24__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5653:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5667:4:92","type":""}],"src":"5502:410:92"},{"body":{"nodeType":"YulBlock","src":"6091:231:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6108:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6119:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6101:6:92"},"nodeType":"YulFunctionCall","src":"6101:21:92"},"nodeType":"YulExpressionStatement","src":"6101:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6142:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6153:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6138:3:92"},"nodeType":"YulFunctionCall","src":"6138:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"6158:2:92","type":"","value":"41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6131:6:92"},"nodeType":"YulFunctionCall","src":"6131:30:92"},"nodeType":"YulExpressionStatement","src":"6131:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6181:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6192:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6177:3:92"},"nodeType":"YulFunctionCall","src":"6177:18:92"},{"hexValue":"45524331393637557067726164653a20756e737570706f727465642070726f78","kind":"string","nodeType":"YulLiteral","src":"6197:34:92","type":"","value":"ERC1967Upgrade: unsupported prox"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6170:6:92"},"nodeType":"YulFunctionCall","src":"6170:62:92"},"nodeType":"YulExpressionStatement","src":"6170:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6252:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6263:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6248:3:92"},"nodeType":"YulFunctionCall","src":"6248:18:92"},{"hexValue":"6961626c6555554944","kind":"string","nodeType":"YulLiteral","src":"6268:11:92","type":"","value":"iableUUID"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6241:6:92"},"nodeType":"YulFunctionCall","src":"6241:39:92"},"nodeType":"YulExpressionStatement","src":"6241:39:92"},{"nodeType":"YulAssignment","src":"6289:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6301:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6312:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6297:3:92"},"nodeType":"YulFunctionCall","src":"6297:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6289:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_76b6b6debfc5febf101145a79ecf0b0d2e89e397dfdab2bca99888370411152c__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6068:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6082:4:92","type":""}],"src":"5917:405:92"},{"body":{"nodeType":"YulBlock","src":"6501:233:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6518:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6529:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6511:6:92"},"nodeType":"YulFunctionCall","src":"6511:21:92"},"nodeType":"YulExpressionStatement","src":"6511:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6552:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6563:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6548:3:92"},"nodeType":"YulFunctionCall","src":"6548:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"6568:2:92","type":"","value":"43"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6541:6:92"},"nodeType":"YulFunctionCall","src":"6541:30:92"},"nodeType":"YulExpressionStatement","src":"6541:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6591:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6602:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6587:3:92"},"nodeType":"YulFunctionCall","src":"6587:18:92"},{"hexValue":"496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069","kind":"string","nodeType":"YulLiteral","src":"6607:34:92","type":"","value":"Initializable: contract is not i"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6580:6:92"},"nodeType":"YulFunctionCall","src":"6580:62:92"},"nodeType":"YulExpressionStatement","src":"6580:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6662:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6673:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6658:3:92"},"nodeType":"YulFunctionCall","src":"6658:18:92"},{"hexValue":"6e697469616c697a696e67","kind":"string","nodeType":"YulLiteral","src":"6678:13:92","type":"","value":"nitializing"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6651:6:92"},"nodeType":"YulFunctionCall","src":"6651:41:92"},"nodeType":"YulExpressionStatement","src":"6651:41:92"},{"nodeType":"YulAssignment","src":"6701:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6713:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6724:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6709:3:92"},"nodeType":"YulFunctionCall","src":"6709:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6701:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6478:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6492:4:92","type":""}],"src":"6327:407:92"},{"body":{"nodeType":"YulBlock","src":"6952:472:92","statements":[{"nodeType":"YulVariableDeclaration","src":"6962:52:92","value":{"kind":"number","nodeType":"YulLiteral","src":"6972:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"6966:2:92","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7030:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7045:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"7053:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7041:3:92"},"nodeType":"YulFunctionCall","src":"7041:15:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7023:6:92"},"nodeType":"YulFunctionCall","src":"7023:34:92"},"nodeType":"YulExpressionStatement","src":"7023:34:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7077:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7088:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7073:3:92"},"nodeType":"YulFunctionCall","src":"7073:18:92"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"7097:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"7105:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7093:3:92"},"nodeType":"YulFunctionCall","src":"7093:15:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7066:6:92"},"nodeType":"YulFunctionCall","src":"7066:43:92"},"nodeType":"YulExpressionStatement","src":"7066:43:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7129:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7140:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7125:3:92"},"nodeType":"YulFunctionCall","src":"7125:18:92"},{"name":"value2","nodeType":"YulIdentifier","src":"7145:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7118:6:92"},"nodeType":"YulFunctionCall","src":"7118:34:92"},"nodeType":"YulExpressionStatement","src":"7118:34:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7172:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7183:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7168:3:92"},"nodeType":"YulFunctionCall","src":"7168:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"7188:3:92","type":"","value":"128"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7161:6:92"},"nodeType":"YulFunctionCall","src":"7161:31:92"},"nodeType":"YulExpressionStatement","src":"7161:31:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7212:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7223:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7208:3:92"},"nodeType":"YulFunctionCall","src":"7208:19:92"},{"name":"value4","nodeType":"YulIdentifier","src":"7229:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7201:6:92"},"nodeType":"YulFunctionCall","src":"7201:35:92"},"nodeType":"YulExpressionStatement","src":"7201:35:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7262:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7273:3:92","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7258:3:92"},"nodeType":"YulFunctionCall","src":"7258:19:92"},{"name":"value3","nodeType":"YulIdentifier","src":"7279:6:92"},{"name":"value4","nodeType":"YulIdentifier","src":"7287:6:92"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"7245:12:92"},"nodeType":"YulFunctionCall","src":"7245:49:92"},"nodeType":"YulExpressionStatement","src":"7245:49:92"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7318:9:92"},{"name":"value4","nodeType":"YulIdentifier","src":"7329:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7314:3:92"},"nodeType":"YulFunctionCall","src":"7314:22:92"},{"kind":"number","nodeType":"YulLiteral","src":"7338:3:92","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7310:3:92"},"nodeType":"YulFunctionCall","src":"7310:32:92"},{"kind":"number","nodeType":"YulLiteral","src":"7344:1:92","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7303:6:92"},"nodeType":"YulFunctionCall","src":"7303:43:92"},"nodeType":"YulExpressionStatement","src":"7303:43:92"},{"nodeType":"YulAssignment","src":"7355:63:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7371:9:92"},{"arguments":[{"arguments":[{"name":"value4","nodeType":"YulIdentifier","src":"7390:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"7398:2:92","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7386:3:92"},"nodeType":"YulFunctionCall","src":"7386:15:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7407:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"7403:3:92"},"nodeType":"YulFunctionCall","src":"7403:7:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7382:3:92"},"nodeType":"YulFunctionCall","src":"7382:29:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7367:3:92"},"nodeType":"YulFunctionCall","src":"7367:45:92"},{"kind":"number","nodeType":"YulLiteral","src":"7414:3:92","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7363:3:92"},"nodeType":"YulFunctionCall","src":"7363:55:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7355:4:92"}]}]},"name":"abi_encode_tuple_t_address_t_address_t_bytes32_t_bytes_calldata_ptr__to_t_address_t_address_t_bytes32_t_bytes_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6889:9:92","type":""},{"name":"value4","nodeType":"YulTypedName","src":"6900:6:92","type":""},{"name":"value3","nodeType":"YulTypedName","src":"6908:6:92","type":""},{"name":"value2","nodeType":"YulTypedName","src":"6916:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"6924:6:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"6932:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6943:4:92","type":""}],"src":"6739:685:92"},{"body":{"nodeType":"YulBlock","src":"7507:199:92","statements":[{"body":{"nodeType":"YulBlock","src":"7553:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7562:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7565:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7555:6:92"},"nodeType":"YulFunctionCall","src":"7555:12:92"},"nodeType":"YulExpressionStatement","src":"7555:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"7528:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"7537:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"7524:3:92"},"nodeType":"YulFunctionCall","src":"7524:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"7549:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"7520:3:92"},"nodeType":"YulFunctionCall","src":"7520:32:92"},"nodeType":"YulIf","src":"7517:52:92"},{"nodeType":"YulVariableDeclaration","src":"7578:29:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7597:9:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"7591:5:92"},"nodeType":"YulFunctionCall","src":"7591:16:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"7582:5:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"7660:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7669:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7672:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7662:6:92"},"nodeType":"YulFunctionCall","src":"7662:12:92"},"nodeType":"YulExpressionStatement","src":"7662:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7629:5:92"},{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7650:5:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"7643:6:92"},"nodeType":"YulFunctionCall","src":"7643:13:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"7636:6:92"},"nodeType":"YulFunctionCall","src":"7636:21:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"7626:2:92"},"nodeType":"YulFunctionCall","src":"7626:32:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"7619:6:92"},"nodeType":"YulFunctionCall","src":"7619:40:92"},"nodeType":"YulIf","src":"7616:60:92"},{"nodeType":"YulAssignment","src":"7685:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"7695:5:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"7685:6:92"}]}]},"name":"abi_decode_tuple_t_bool_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7473:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"7484:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"7496:6:92","type":""}],"src":"7429:277:92"},{"body":{"nodeType":"YulBlock","src":"7896:294:92","statements":[{"nodeType":"YulAssignment","src":"7906:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7918:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7929:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7914:3:92"},"nodeType":"YulFunctionCall","src":"7914:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7906:4:92"}]},{"nodeType":"YulVariableDeclaration","src":"7942:52:92","value":{"kind":"number","nodeType":"YulLiteral","src":"7952:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"7946:2:92","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8010:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"8025:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"8033:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8021:3:92"},"nodeType":"YulFunctionCall","src":"8021:15:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8003:6:92"},"nodeType":"YulFunctionCall","src":"8003:34:92"},"nodeType":"YulExpressionStatement","src":"8003:34:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8057:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8068:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8053:3:92"},"nodeType":"YulFunctionCall","src":"8053:18:92"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"8077:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"8085:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8073:3:92"},"nodeType":"YulFunctionCall","src":"8073:15:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8046:6:92"},"nodeType":"YulFunctionCall","src":"8046:43:92"},"nodeType":"YulExpressionStatement","src":"8046:43:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8109:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8120:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8105:3:92"},"nodeType":"YulFunctionCall","src":"8105:18:92"},{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"8129:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"8137:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8125:3:92"},"nodeType":"YulFunctionCall","src":"8125:15:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8098:6:92"},"nodeType":"YulFunctionCall","src":"8098:43:92"},"nodeType":"YulExpressionStatement","src":"8098:43:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8161:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8172:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8157:3:92"},"nodeType":"YulFunctionCall","src":"8157:18:92"},{"name":"value3","nodeType":"YulIdentifier","src":"8177:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8150:6:92"},"nodeType":"YulFunctionCall","src":"8150:34:92"},"nodeType":"YulExpressionStatement","src":"8150:34:92"}]},"name":"abi_encode_tuple_t_address_t_address_t_address_t_bytes32__to_t_address_t_address_t_address_t_bytes32__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7841:9:92","type":""},{"name":"value3","nodeType":"YulTypedName","src":"7852:6:92","type":""},{"name":"value2","nodeType":"YulTypedName","src":"7860:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"7868:6:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"7876:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7887:4:92","type":""}],"src":"7711:479:92"},{"body":{"nodeType":"YulBlock","src":"8369:235:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8386:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8397:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8379:6:92"},"nodeType":"YulFunctionCall","src":"8379:21:92"},"nodeType":"YulExpressionStatement","src":"8379:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8420:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8431:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8416:3:92"},"nodeType":"YulFunctionCall","src":"8416:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"8436:2:92","type":"","value":"45"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8409:6:92"},"nodeType":"YulFunctionCall","src":"8409:30:92"},"nodeType":"YulExpressionStatement","src":"8409:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8459:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8470:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8455:3:92"},"nodeType":"YulFunctionCall","src":"8455:18:92"},{"hexValue":"455243313936373a206e657720696d706c656d656e746174696f6e206973206e","kind":"string","nodeType":"YulLiteral","src":"8475:34:92","type":"","value":"ERC1967: new implementation is n"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8448:6:92"},"nodeType":"YulFunctionCall","src":"8448:62:92"},"nodeType":"YulExpressionStatement","src":"8448:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8530:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8541:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8526:3:92"},"nodeType":"YulFunctionCall","src":"8526:18:92"},{"hexValue":"6f74206120636f6e7472616374","kind":"string","nodeType":"YulLiteral","src":"8546:15:92","type":"","value":"ot a contract"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8519:6:92"},"nodeType":"YulFunctionCall","src":"8519:43:92"},"nodeType":"YulExpressionStatement","src":"8519:43:92"},{"nodeType":"YulAssignment","src":"8571:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8583:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8594:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8579:3:92"},"nodeType":"YulFunctionCall","src":"8579:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"8571:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8346:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"8360:4:92","type":""}],"src":"8195:409:92"},{"body":{"nodeType":"YulBlock","src":"8675:184:92","statements":[{"nodeType":"YulVariableDeclaration","src":"8685:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"8694:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"8689:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"8754:63:92","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"8779:3:92"},{"name":"i","nodeType":"YulIdentifier","src":"8784:1:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8775:3:92"},"nodeType":"YulFunctionCall","src":"8775:11:92"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"8798:3:92"},{"name":"i","nodeType":"YulIdentifier","src":"8803:1:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8794:3:92"},"nodeType":"YulFunctionCall","src":"8794:11:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"8788:5:92"},"nodeType":"YulFunctionCall","src":"8788:18:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8768:6:92"},"nodeType":"YulFunctionCall","src":"8768:39:92"},"nodeType":"YulExpressionStatement","src":"8768:39:92"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"8715:1:92"},{"name":"length","nodeType":"YulIdentifier","src":"8718:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"8712:2:92"},"nodeType":"YulFunctionCall","src":"8712:13:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"8726:19:92","statements":[{"nodeType":"YulAssignment","src":"8728:15:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"8737:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"8740:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8733:3:92"},"nodeType":"YulFunctionCall","src":"8733:10:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"8728:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"8708:3:92","statements":[]},"src":"8704:113:92"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"8837:3:92"},{"name":"length","nodeType":"YulIdentifier","src":"8842:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8833:3:92"},"nodeType":"YulFunctionCall","src":"8833:16:92"},{"kind":"number","nodeType":"YulLiteral","src":"8851:1:92","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8826:6:92"},"nodeType":"YulFunctionCall","src":"8826:27:92"},"nodeType":"YulExpressionStatement","src":"8826:27:92"}]},"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"8653:3:92","type":""},{"name":"dst","nodeType":"YulTypedName","src":"8658:3:92","type":""},{"name":"length","nodeType":"YulTypedName","src":"8663:6:92","type":""}],"src":"8609:250:92"},{"body":{"nodeType":"YulBlock","src":"9001:150:92","statements":[{"nodeType":"YulVariableDeclaration","src":"9011:27:92","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"9031:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"9025:5:92"},"nodeType":"YulFunctionCall","src":"9025:13:92"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"9015:6:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"9086:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"9094:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9082:3:92"},"nodeType":"YulFunctionCall","src":"9082:17:92"},{"name":"pos","nodeType":"YulIdentifier","src":"9101:3:92"},{"name":"length","nodeType":"YulIdentifier","src":"9106:6:92"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"9047:34:92"},"nodeType":"YulFunctionCall","src":"9047:66:92"},"nodeType":"YulExpressionStatement","src":"9047:66:92"},{"nodeType":"YulAssignment","src":"9122:23:92","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"9133:3:92"},{"name":"length","nodeType":"YulIdentifier","src":"9138:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9129:3:92"},"nodeType":"YulFunctionCall","src":"9129:16:92"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"9122:3:92"}]}]},"name":"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"8977:3:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"8982:6:92","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"8993:3:92","type":""}],"src":"8864:287:92"},{"body":{"nodeType":"YulBlock","src":"9330:179:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9347:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9358:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9340:6:92"},"nodeType":"YulFunctionCall","src":"9340:21:92"},"nodeType":"YulExpressionStatement","src":"9340:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9381:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9392:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9377:3:92"},"nodeType":"YulFunctionCall","src":"9377:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"9397:2:92","type":"","value":"29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9370:6:92"},"nodeType":"YulFunctionCall","src":"9370:30:92"},"nodeType":"YulExpressionStatement","src":"9370:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9420:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9431:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9416:3:92"},"nodeType":"YulFunctionCall","src":"9416:18:92"},{"hexValue":"416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374","kind":"string","nodeType":"YulLiteral","src":"9436:31:92","type":"","value":"Address: call to non-contract"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9409:6:92"},"nodeType":"YulFunctionCall","src":"9409:59:92"},"nodeType":"YulExpressionStatement","src":"9409:59:92"},{"nodeType":"YulAssignment","src":"9477:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9489:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9500:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9485:3:92"},"nodeType":"YulFunctionCall","src":"9485:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"9477:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9307:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"9321:4:92","type":""}],"src":"9156:353:92"},{"body":{"nodeType":"YulBlock","src":"9635:275:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9652:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9663:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9645:6:92"},"nodeType":"YulFunctionCall","src":"9645:21:92"},"nodeType":"YulExpressionStatement","src":"9645:21:92"},{"nodeType":"YulVariableDeclaration","src":"9675:27:92","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"9695:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"9689:5:92"},"nodeType":"YulFunctionCall","src":"9689:13:92"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"9679:6:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9722:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9733:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9718:3:92"},"nodeType":"YulFunctionCall","src":"9718:18:92"},{"name":"length","nodeType":"YulIdentifier","src":"9738:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9711:6:92"},"nodeType":"YulFunctionCall","src":"9711:34:92"},"nodeType":"YulExpressionStatement","src":"9711:34:92"},{"expression":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"9793:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"9801:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9789:3:92"},"nodeType":"YulFunctionCall","src":"9789:15:92"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9810:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9821:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9806:3:92"},"nodeType":"YulFunctionCall","src":"9806:18:92"},{"name":"length","nodeType":"YulIdentifier","src":"9826:6:92"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"9754:34:92"},"nodeType":"YulFunctionCall","src":"9754:79:92"},"nodeType":"YulExpressionStatement","src":"9754:79:92"},{"nodeType":"YulAssignment","src":"9842:62:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9858:9:92"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"9877:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"9885:2:92","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9873:3:92"},"nodeType":"YulFunctionCall","src":"9873:15:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9894:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"9890:3:92"},"nodeType":"YulFunctionCall","src":"9890:7:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"9869:3:92"},"nodeType":"YulFunctionCall","src":"9869:29:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9854:3:92"},"nodeType":"YulFunctionCall","src":"9854:45:92"},{"kind":"number","nodeType":"YulLiteral","src":"9901:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9850:3:92"},"nodeType":"YulFunctionCall","src":"9850:54:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"9842:4:92"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9604:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"9615:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"9626:4:92","type":""}],"src":"9514:396:92"}]},"contents":"{\n { }\n function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n if iszero(eq(value, and(value, shl(224, 0xffffffff)))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 96)\n let pos := headStart\n pos := headStart\n let srcPtr := value0\n let i := 0\n for { } lt(i, 0x03) { i := add(i, 1) }\n {\n mstore(pos, and(mload(srcPtr), 0xff))\n let _1 := 0x20\n pos := add(pos, _1)\n srcPtr := add(srcPtr, _1)\n }\n }\n function validator_revert_address(value)\n {\n if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n }\n function abi_encode_tuple_t_contract$_IDAO_$10865__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_encode_tuple_t_enum$_PluginType_$13330__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n if iszero(lt(value0, 3))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x21)\n revert(0, 0x24)\n }\n mstore(headStart, value0)\n }\n function panic_error_0x41()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function abi_decode_tuple_t_addresst_bytes_memory_ptr(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n let offset := calldataload(add(headStart, 32))\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n let _2 := add(headStart, offset)\n if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n let _3 := calldataload(_2)\n if gt(_3, _1) { panic_error_0x41() }\n let _4 := not(31)\n let memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n mstore(memPtr, _3)\n if gt(add(add(_2, _3), 32), dataEnd) { revert(0, 0) }\n calldatacopy(add(memPtr, 32), add(_2, 32), _3)\n mstore(add(add(memPtr, _3), 32), 0)\n value1 := memPtr\n }\n function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_decode_tuple_t_contract$_IDAO_$10865(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n }\n function abi_encode_tuple_t_stringliteral_36e108fa7a809b52ab1951dd91c117a7bc9ac5250bdf1aa162d4e104f7edf9eb__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 44)\n mstore(add(headStart, 64), \"Function must be called through \")\n mstore(add(headStart, 96), \"delegatecall\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_52f1ead4d9653e13afbd2e90ef2587c30187cd50b2e97d784e3f7a7541247434__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 44)\n mstore(add(headStart, 64), \"Function must be called through \")\n mstore(add(headStart, 96), \"active proxy\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_67f0151b4ad1dcfa0e3302a0cd6019f51582ef1807b37dceb00bd852a514f7f4__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 56)\n mstore(add(headStart, 64), \"UUPSUpgradeable: must not be cal\")\n mstore(add(headStart, 96), \"led through delegatecall\")\n tail := add(headStart, 128)\n }\n function abi_decode_tuple_t_bytes32_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := mload(headStart)\n }\n function abi_encode_tuple_t_stringliteral_8e8e2fbcb586f700b5b14e2c4a650c8d83b9773c31c5fe8962070ea544e11f24__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 46)\n mstore(add(headStart, 64), \"ERC1967Upgrade: new implementati\")\n mstore(add(headStart, 96), \"on is not UUPS\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_76b6b6debfc5febf101145a79ecf0b0d2e89e397dfdab2bca99888370411152c__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 41)\n mstore(add(headStart, 64), \"ERC1967Upgrade: unsupported prox\")\n mstore(add(headStart, 96), \"iableUUID\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 43)\n mstore(add(headStart, 64), \"Initializable: contract is not i\")\n mstore(add(headStart, 96), \"nitializing\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_address_t_address_t_bytes32_t_bytes_calldata_ptr__to_t_address_t_address_t_bytes32_t_bytes_memory_ptr__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n {\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n mstore(add(headStart, 64), value2)\n mstore(add(headStart, 96), 128)\n mstore(add(headStart, 128), value4)\n calldatacopy(add(headStart, 160), value3, value4)\n mstore(add(add(headStart, value4), 160), 0)\n tail := add(add(headStart, and(add(value4, 31), not(31))), 160)\n }\n function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := mload(headStart)\n if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_address_t_address_t_address_t_bytes32__to_t_address_t_address_t_address_t_bytes32__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n {\n tail := add(headStart, 128)\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n mstore(add(headStart, 64), and(value2, _1))\n mstore(add(headStart, 96), value3)\n }\n function abi_encode_tuple_t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 45)\n mstore(add(headStart, 64), \"ERC1967: new implementation is n\")\n mstore(add(headStart, 96), \"ot a contract\")\n tail := add(headStart, 128)\n }\n function copy_memory_to_memory_with_cleanup(src, dst, length)\n {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n mstore(add(dst, length), 0)\n }\n function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n {\n let length := mload(value0)\n copy_memory_to_memory_with_cleanup(add(value0, 0x20), pos, length)\n end := add(pos, length)\n }\n function abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 29)\n mstore(add(headStart, 64), \"Address: call to non-contract\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n mstore(headStart, 32)\n let length := mload(value0)\n mstore(add(headStart, 32), length)\n copy_memory_to_memory_with_cleanup(add(value0, 32), add(headStart, 64), length)\n tail := add(add(headStart, and(add(length, 31), not(31))), 64)\n }\n}","id":92,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{"554":[{"length":32,"start":734},{"length":32,"start":872},{"length":32,"start":1118},{"length":32,"start":1251},{"length":32,"start":1485}]},"linkReferences":{},"object":"6080604052600436106100bc5760003560e01c80634f1ef286116100745780636accab8c1161004e5780636accab8c146101d35780638883bbd7146101ea578063c9c4bfca1461020a57600080fd5b80634f1ef2861461018857806352d1902d1461019b5780635c60da1b146101be57600080fd5b80633659cfe6116100a55780633659cfe6146101185780634162169f1461013a57806341de68301461016c57600080fd5b806301ffc9a7146100c15780632ae9c600146100f6575b600080fd5b3480156100cd57600080fd5b506100e16100dc366004610d1e565b61023e565b60405190151581526020015b60405180910390f35b34801561010257600080fd5b5061010b6102aa565b6040516100ed9190610d48565b34801561012457600080fd5b50610138610133366004610d91565b6102d4565b005b34801561014657600080fd5b5060c9546001600160a01b03165b6040516001600160a01b0390911681526020016100ed565b34801561017857600080fd5b5060006040516100ed9190610dae565b610138610196366004610dec565b610454565b3480156101a757600080fd5b506101b06105c0565b6040519081526020016100ed565b3480156101ca57600080fd5b50610154610685565b3480156101df57600080fd5b506101b061012d5481565b3480156101f657600080fd5b50610138610205366004610d91565b6106bd565b34801561021657600080fd5b506101b07f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f581565b60006001600160e01b0319821663041de68360e41b148061026e57506001600160e01b03198216621574e360e91b145b8061028957506001600160e01b031982166352d1902d60e01b145b806102a457506301ffc9a760e01b6001600160e01b03198316145b92915050565b6102b2610d00565b5060408051606081018252600181526004602082015260009181019190915290565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036103665760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b60648201526084015b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166103c17f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b03161461042c5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b606482015260840161035d565b610435816106cf565b604080516000808252602082019092526104519183919061070c565b50565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036104e15760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b606482015260840161035d565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661053c7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b0316146105a75760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b606482015260840161035d565b6105b0826106cf565b6105bc8282600161070c565b5050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106605760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000606482015260840161035d565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b60006106b87f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b6106c6816108b1565b50600161012d55565b60c9547f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f5906105bc906001600160a01b0316303384600036610925565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156107445761073f836109e1565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561079e575060408051601f3d908101601f1916820190925261079b91810190610eb0565b60015b6108105760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201527f6f6e206973206e6f742055555053000000000000000000000000000000000000606482015260840161035d565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146108a55760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f7860448201527f6961626c65555549440000000000000000000000000000000000000000000000606482015260840161035d565b5061073f838383610aac565b600054610100900460ff1661091c5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840161035d565b61045181610ad7565b604051637ef7c88360e11b81526001600160a01b0387169063fdef9106906109599088908890889088908890600401610ec9565b602060405180830381865afa158015610976573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061099a9190610f1d565b6109d957604051630cb6f8ed60e21b81526001600160a01b0380881660048301528087166024830152851660448201526064810184905260840161035d565b505050505050565b6001600160a01b0381163b610a5e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e747261637400000000000000000000000000000000000000606482015260840161035d565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610ab583610b71565b600082511180610ac25750805b1561073f57610ad18383610bb1565b50505050565b600054610100900460ff16610b425760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840161035d565b60c9805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610b7a816109e1565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060610bd68383604051806060016040528060278152602001610fb360279139610bdd565b9392505050565b6060600080856001600160a01b031685604051610bfa9190610f63565b600060405180830381855af49150503d8060008114610c35576040519150601f19603f3d011682016040523d82523d6000602084013e610c3a565b606091505b5091509150610c4b86838387610c55565b9695505050505050565b60608315610cc4578251600003610cbd576001600160a01b0385163b610cbd5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161035d565b5081610cce565b610cce8383610cd6565b949350505050565b815115610ce65781518083602001fd5b8060405162461bcd60e51b815260040161035d9190610f7f565b60405180606001604052806003906020820280368337509192915050565b600060208284031215610d3057600080fd5b81356001600160e01b031981168114610bd657600080fd5b60608101818360005b6003811015610d7357815160ff16835260209283019290910190600101610d51565b50505092915050565b6001600160a01b038116811461045157600080fd5b600060208284031215610da357600080fd5b8135610bd681610d7c565b6020810160038310610dd057634e487b7160e01b600052602160045260246000fd5b91905290565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215610dff57600080fd5b8235610e0a81610d7c565b9150602083013567ffffffffffffffff80821115610e2757600080fd5b818501915085601f830112610e3b57600080fd5b813581811115610e4d57610e4d610dd6565b604051601f8201601f19908116603f01168101908382118183101715610e7557610e75610dd6565b81604052828152886020848701011115610e8e57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b600060208284031215610ec257600080fd5b5051919050565b60006001600160a01b03808816835280871660208401525084604083015260806060830152826080830152828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b600060208284031215610f2f57600080fd5b81518015158114610bd657600080fd5b60005b83811015610f5a578181015183820152602001610f42565b50506000910152565b60008251610f75818460208701610f3f565b9190910192915050565b6020815260008251806020840152610f9e816040850160208701610f3f565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xBC JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x4F1EF286 GT PUSH2 0x74 JUMPI DUP1 PUSH4 0x6ACCAB8C GT PUSH2 0x4E JUMPI DUP1 PUSH4 0x6ACCAB8C EQ PUSH2 0x1D3 JUMPI DUP1 PUSH4 0x8883BBD7 EQ PUSH2 0x1EA JUMPI DUP1 PUSH4 0xC9C4BFCA EQ PUSH2 0x20A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x188 JUMPI DUP1 PUSH4 0x52D1902D EQ PUSH2 0x19B JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0x1BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x3659CFE6 GT PUSH2 0xA5 JUMPI DUP1 PUSH4 0x3659CFE6 EQ PUSH2 0x118 JUMPI DUP1 PUSH4 0x4162169F EQ PUSH2 0x13A JUMPI DUP1 PUSH4 0x41DE6830 EQ PUSH2 0x16C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xC1 JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0xF6 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xCD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xE1 PUSH2 0xDC CALLDATASIZE PUSH1 0x4 PUSH2 0xD1E JUMP JUMPDEST PUSH2 0x23E JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x102 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x10B PUSH2 0x2AA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xED SWAP2 SWAP1 PUSH2 0xD48 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x124 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x138 PUSH2 0x133 CALLDATASIZE PUSH1 0x4 PUSH2 0xD91 JUMP JUMPDEST PUSH2 0x2D4 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x146 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xC9 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xED JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x178 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 PUSH1 0x40 MLOAD PUSH2 0xED SWAP2 SWAP1 PUSH2 0xDAE JUMP JUMPDEST PUSH2 0x138 PUSH2 0x196 CALLDATASIZE PUSH1 0x4 PUSH2 0xDEC JUMP JUMPDEST PUSH2 0x454 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1B0 PUSH2 0x5C0 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xED JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x154 PUSH2 0x685 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1B0 PUSH2 0x12D SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x138 PUSH2 0x205 CALLDATASIZE PUSH1 0x4 PUSH2 0xD91 JUMP JUMPDEST PUSH2 0x6BD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x216 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1B0 PUSH32 0x821B6E3A557148015A918C89E5D092E878A69854A2D1A410635F771BD5A8A3F5 DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x41DE683 PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x26E JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x289 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x52D1902D PUSH1 0xE0 SHL EQ JUMPDEST DUP1 PUSH2 0x2A4 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x2B2 PUSH2 0xD00 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x366 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x19195B1959D85D1958D85B1B PUSH1 0xA2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3C1 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x42C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x6163746976652070726F7879 PUSH1 0xA0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x35D JUMP JUMPDEST PUSH2 0x435 DUP2 PUSH2 0x6CF JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x451 SWAP2 DUP4 SWAP2 SWAP1 PUSH2 0x70C JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x4E1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x19195B1959D85D1958D85B1B PUSH1 0xA2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x35D JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x53C PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x5A7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x6163746976652070726F7879 PUSH1 0xA0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x35D JUMP JUMPDEST PUSH2 0x5B0 DUP3 PUSH2 0x6CF JUMP JUMPDEST PUSH2 0x5BC DUP3 DUP3 PUSH1 0x1 PUSH2 0x70C JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x660 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x38 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x555550535570677261646561626C653A206D757374206E6F742062652063616C PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6C6564207468726F7567682064656C656761746563616C6C0000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x35D JUMP JUMPDEST POP PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6B8 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x6C6 DUP2 PUSH2 0x8B1 JUMP JUMPDEST POP PUSH1 0x1 PUSH2 0x12D SSTORE JUMP JUMPDEST PUSH1 0xC9 SLOAD PUSH32 0x821B6E3A557148015A918C89E5D092E878A69854A2D1A410635F771BD5A8A3F5 SWAP1 PUSH2 0x5BC SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ADDRESS CALLER DUP5 PUSH1 0x0 CALLDATASIZE PUSH2 0x925 JUMP JUMPDEST PUSH32 0x4910FDFA16FED3260ED0E7147F7CC6DA11A60208B5B9406D12A635614FFD9143 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x744 JUMPI PUSH2 0x73F DUP4 PUSH2 0x9E1 JUMP JUMPDEST POP POP POP JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x52D1902D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x79E JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x79B SWAP2 DUP2 ADD SWAP1 PUSH2 0xEB0 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x810 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524331393637557067726164653A206E657720696D706C656D656E74617469 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F6E206973206E6F742055555053000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x35D JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC DUP2 EQ PUSH2 0x8A5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524331393637557067726164653A20756E737570706F727465642070726F78 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6961626C65555549440000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x35D JUMP JUMPDEST POP PUSH2 0x73F DUP4 DUP4 DUP4 PUSH2 0xAAC JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x91C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x35D JUMP JUMPDEST PUSH2 0x451 DUP2 PUSH2 0xAD7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x7EF7C883 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0xFDEF9106 SWAP1 PUSH2 0x959 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0xEC9 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x976 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x99A SWAP2 SWAP1 PUSH2 0xF1D JUMP JUMPDEST PUSH2 0x9D9 JUMPI PUSH1 0x40 MLOAD PUSH4 0xCB6F8ED PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND PUSH1 0x4 DUP4 ADD MSTORE DUP1 DUP8 AND PUSH1 0x24 DUP4 ADD MSTORE DUP6 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x84 ADD PUSH2 0x35D JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND EXTCODESIZE PUSH2 0xA5E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313936373A206E657720696D706C656D656E746174696F6E206973206E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F74206120636F6E747261637400000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x35D JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xAB5 DUP4 PUSH2 0xB71 JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD GT DUP1 PUSH2 0xAC2 JUMPI POP DUP1 JUMPDEST ISZERO PUSH2 0x73F JUMPI PUSH2 0xAD1 DUP4 DUP4 PUSH2 0xBB1 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0xB42 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x35D JUMP JUMPDEST PUSH1 0xC9 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xB7A DUP2 PUSH2 0x9E1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xBD6 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xFB3 PUSH1 0x27 SWAP2 CODECOPY PUSH2 0xBDD JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0xBFA SWAP2 SWAP1 PUSH2 0xF63 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xC35 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xC3A JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0xC4B DUP7 DUP4 DUP4 DUP8 PUSH2 0xC55 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0xCC4 JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0xCBD JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0xCBD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x35D JUMP JUMPDEST POP DUP2 PUSH2 0xCCE JUMP JUMPDEST PUSH2 0xCCE DUP4 DUP4 PUSH2 0xCD6 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0xCE6 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x35D SWAP2 SWAP1 PUSH2 0xF7F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xD30 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0xBD6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0xD73 JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0xD51 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x451 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xDA3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xBD6 DUP2 PUSH2 0xD7C JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH1 0x3 DUP4 LT PUSH2 0xDD0 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 SWAP1 MSTORE SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xDFF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0xE0A DUP2 PUSH2 0xD7C JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xE27 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xE3B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0xE4D JUMPI PUSH2 0xE4D PUSH2 0xDD6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0xE75 JUMPI PUSH2 0xE75 PUSH2 0xDD6 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0xE8E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xEC2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND DUP4 MSTORE DUP1 DUP8 AND PUSH1 0x20 DUP5 ADD MSTORE POP DUP5 PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x80 PUSH1 0x60 DUP4 ADD MSTORE DUP3 PUSH1 0x80 DUP4 ADD MSTORE DUP3 DUP5 PUSH1 0xA0 DUP5 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0xA0 DUP5 DUP5 ADD ADD MSTORE PUSH1 0xA0 PUSH1 0x1F NOT PUSH1 0x1F DUP6 ADD AND DUP4 ADD ADD SWAP1 POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xF2F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xBD6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xF5A JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xF42 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0xF75 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0xF3F JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0xF9E DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0xF3F JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A164 PUSH20 0x6F6C6343000811000A0000000000000000000000 ","sourceMap":"1988:216:53:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2358:366:75;;;;;;;;;;-1:-1:-1;2358:366:75;;;;;:::i;:::-;;:::i;:::-;;;470:14:92;;463:22;445:41;;433:2;418:18;2358:366:75;;;;;;;;631:98:90;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;3408:195:5:-;;;;;;;;;;-1:-1:-1;3408:195:5;;;;;:::i;:::-;;:::i;:::-;;1200:70:67;;;;;;;;;;-1:-1:-1;1259:4:67;;-1:-1:-1;;;;;1259:4:67;1200:70;;;-1:-1:-1;;;;;1592:55:92;;;1574:74;;1562:2;1547:18;1200:70:67;1414:240:92;1552:103:75;;;;;;;;;;-1:-1:-1;1604:10:75;1552:103;;;;;;:::i;3922:220:5:-;;;;;;:::i;:::-;;:::i;3027:131::-;;;;;;;;;;;;;:::i;:::-;;;3347:25:92;;;3335:2;3320:18;3027:131:5;3201:177:92;3005:100:75;;;;;;;;;;;;;:::i;2057:21:53:-;;;;;;;;;;;;;;;;2085:117;;;;;;;;;;-1:-1:-1;2085:117:53;;;;;:::i;:::-;;:::i;1753:93:75:-;;;;;;;;;;;;1808:38;1753:93;;2358:366;2444:4;-1:-1:-1;;;;;;2479:41:75;;-1:-1:-1;;;2479:41:75;;:107;;-1:-1:-1;;;;;;;2536:50:75;;-1:-1:-1;;;2536:50:75;2479:107;:185;;;-1:-1:-1;;;;;;;2602:62:75;;-1:-1:-1;;;2602:62:75;2479:185;:238;;;-1:-1:-1;;;;;;;;;;1189:51:11;;;2680:37:75;2460:257;2358:366;-1:-1:-1;;2358:366:75:o;631:98:90:-;679:15;;:::i;:::-;-1:-1:-1;706:16:90;;;;;;;;714:1;706:16;;717:1;706:16;;;;-1:-1:-1;706:16:90;;;;;;;;631:98::o;3408:195:5:-;-1:-1:-1;;;;;1764:6:5;1747:23;1755:4;1747:23;1739:80;;;;-1:-1:-1;;;1739:80:5;;4264:2:92;1739:80:5;;;4246:21:92;4303:2;4283:18;;;4276:30;4342:34;4322:18;;;4315:62;-1:-1:-1;;;4393:18:92;;;4386:42;4445:19;;1739:80:5;;;;;;;;;1861:6;-1:-1:-1;;;;;1837:30:5;:20;1180:66:2;1557:65;-1:-1:-1;;;;;1557:65:2;;1478:151;1837:20:5;-1:-1:-1;;;;;1837:30:5;;1829:87;;;;-1:-1:-1;;;1829:87:5;;4677:2:92;1829:87:5;;;4659:21:92;4716:2;4696:18;;;4689:30;4755:34;4735:18;;;4728:62;-1:-1:-1;;;4806:18:92;;;4799:42;4858:19;;1829:87:5;4475:408:92;1829:87:5;3489:36:::1;3507:17;3489;:36::i;:::-;3576:12;::::0;;3586:1:::1;3576:12:::0;;;::::1;::::0;::::1;::::0;;;3535:61:::1;::::0;3557:17;;3576:12;3535:21:::1;:61::i;:::-;3408:195:::0;:::o;3922:220::-;-1:-1:-1;;;;;1764:6:5;1747:23;1755:4;1747:23;1739:80;;;;-1:-1:-1;;;1739:80:5;;4264:2:92;1739:80:5;;;4246:21:92;4303:2;4283:18;;;4276:30;4342:34;4322:18;;;4315:62;-1:-1:-1;;;4393:18:92;;;4386:42;4445:19;;1739:80:5;4062:408:92;1739:80:5;1861:6;-1:-1:-1;;;;;1837:30:5;:20;1180:66:2;1557:65;-1:-1:-1;;;;;1557:65:2;;1478:151;1837:20:5;-1:-1:-1;;;;;1837:30:5;;1829:87;;;;-1:-1:-1;;;1829:87:5;;4677:2:92;1829:87:5;;;4659:21:92;4716:2;4696:18;;;4689:30;4755:34;4735:18;;;4728:62;-1:-1:-1;;;4806:18:92;;;4799:42;4858:19;;1829:87:5;4475:408:92;1829:87:5;4037:36:::1;4055:17;4037;:36::i;:::-;4083:52;4105:17;4124:4;4130;4083:21;:52::i;:::-;3922:220:::0;;:::o;3027:131::-;3105:7;2190:4;-1:-1:-1;;;;;2199:6:5;2182:23;;2174:92;;;;-1:-1:-1;;;2174:92:5;;5090:2:92;2174:92:5;;;5072:21:92;5129:2;5109:18;;;5102:30;5168:34;5148:18;;;5141:62;5239:26;5219:18;;;5212:54;5283:19;;2174:92:5;4888:420:92;2174:92:5;-1:-1:-1;1180:66:2::1;3027:131:5::0;:::o;3005:100:75:-;3052:7;3078:20;1180:66:2;1557:65;-1:-1:-1;;;;;1557:65:2;;1478:151;3078:20:75;3071:27;;3005:100;:::o;2085:117:53:-;2141:34;2170:4;2141:28;:34::i;:::-;-1:-1:-1;2194:1:53;2185:6;:10;2085:117::o;3446:204:75:-;1616:4:67;;1808:38:75;;1610:67:67;;-1:-1:-1;;;;;1616:4:67;1630;965:10:8;1651:13:67;1039:14:8;;1610:5:67;:67::i;2841:944:2:-;839:66;3257:59;;;3253:526;;;3332:37;3351:17;3332:18;:37::i;:::-;2841:944;;;:::o;3253:526::-;3433:17;-1:-1:-1;;;;;3404:61:2;;:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3404:63:2;;;;;;;;-1:-1:-1;;3404:63:2;;;;;;;;;;;;:::i;:::-;;;3400:302;;3631:56;;-1:-1:-1;;;3631:56:2;;5704:2:92;3631:56:2;;;5686:21:92;5743:2;5723:18;;;5716:30;5782:34;5762:18;;;5755:62;5853:16;5833:18;;;5826:44;5887:19;;3631:56:2;5502:410:92;3400:302:2;1180:66;3517:28;;3509:82;;;;-1:-1:-1;;;3509:82:2;;6119:2:92;3509:82:2;;;6101:21:92;6158:2;6138:18;;;6131:30;6197:34;6177:18;;;6170:62;6268:11;6248:18;;;6241:39;6297:19;;3509:82:2;5917:405:92;3509:82:2;3468:138;3715:53;3733:17;3752:4;3758:9;3715:17;:53::i;2014:139:75:-;5374:13:4;;;;;;;5366:69;;;;-1:-1:-1;;;5366:69:4;;6529:2:92;5366:69:4;;;6511:21:92;6568:2;6548:18;;;6541:30;6607:34;6587:18;;;6580:62;-1:-1:-1;;;6658:18:92;;;6651:41;6709:19;;5366:69:4;6327:407:92;5366:69:4;2107:39:75::1;2141:4;2107:33;:39::i;1041:363:68:-:0;1180:54;;-1:-1:-1;;;1180:54:68;;-1:-1:-1;;;;;1180:18:68;;;;;:54;;1199:6;;1207:4;;1213:13;;1228:5;;;;1180:54;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1175:226;;1251:150;;-1:-1:-1;;;1251:150:68;;-1:-1:-1;;;;;8021:15:92;;;1251:150:68;;;8003:34:92;8073:15;;;8053:18;;;8046:43;8125:15;;8105:18;;;8098:43;8157:18;;;8150:34;;;7914:19;;1251:150:68;7711:479:92;1175:226:68;1041:363;;;;;;:::o;1720:281:2:-;-1:-1:-1;;;;;1713:19:6;;;1793:106:2;;;;-1:-1:-1;;;1793:106:2;;8397:2:92;1793:106:2;;;8379:21:92;8436:2;8416:18;;;8409:30;8475:34;8455:18;;;8448:62;8546:15;8526:18;;;8519:43;8579:19;;1793:106:2;8195:409:92;1793:106:2;1180:66;1909:85;;-1:-1:-1;;1909:85:2;-1:-1:-1;;;;;1909:85:2;;;;;;;;;;1720:281::o;2393:276::-;2501:29;2512:17;2501:10;:29::i;:::-;2558:1;2544:4;:11;:15;:28;;;;2563:9;2544:28;2540:123;;;2588:64;2628:17;2647:4;2588:39;:64::i;:::-;;2393:276;;;:::o;1010:108:67:-;5374:13:4;;;;;;;5366:69;;;;-1:-1:-1;;;5366:69:4;;6529:2:92;5366:69:4;;;6511:21:92;6568:2;6548:18;;;6541:30;6607:34;6587:18;;;6580:62;-1:-1:-1;;;6658:18:92;;;6651:41;6709:19;;5366:69:4;6327:407:92;5366:69:4;1100:4:67::1;:11:::0;;-1:-1:-1;;1100:11:67::1;-1:-1:-1::0;;;;;1100:11:67;;;::::1;::::0;;;::::1;::::0;;1010:108::o;2107:152:2:-;2173:37;2192:17;2173:18;:37::i;:::-;2225:27;;-1:-1:-1;;;;;2225:27:2;;;;;;;;2107:152;:::o;6685:198:6:-;6768:12;6799:77;6820:6;6828:4;6799:77;;;;;;;;;;;;;;;;;:20;:77::i;:::-;6792:84;6685:198;-1:-1:-1;;;6685:198:6:o;7069:325::-;7210:12;7235;7249:23;7276:6;-1:-1:-1;;;;;7276:19:6;7296:4;7276:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7234:67;;;;7318:69;7345:6;7353:7;7362:10;7374:12;7318:26;:69::i;:::-;7311:76;7069:325;-1:-1:-1;;;;;;7069:325:6:o;7682:628::-;7862:12;7890:7;7886:418;;;7917:10;:17;7938:1;7917:22;7913:286;;-1:-1:-1;;;;;1713:19:6;;;8124:60;;;;-1:-1:-1;;;8124:60:6;;9358:2:92;8124:60:6;;;9340:21:92;9397:2;9377:18;;;9370:30;9436:31;9416:18;;;9409:59;9485:18;;8124:60:6;9156:353:92;8124:60:6;-1:-1:-1;8219:10:6;8212:17;;7886:418;8260:33;8268:10;8280:12;8260:7;:33::i;:::-;7682:628;;;;;;:::o;8832:540::-;8991:17;;:21;8987:379;;9219:10;9213:17;9275:15;9262:10;9258:2;9254:19;9247:44;8987:379;9342:12;9335:20;;-1:-1:-1;;;9335:20:6;;;;;;;;:::i;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:286:92:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:92;;209:43;;199:71;;266:1;263;256:12;497:501;673:2;658:18;;662:9;753:6;631:4;787:205;801:4;798:1;795:11;787:205;;;864:13;;879:4;860:24;848:37;;908:4;932:12;;;;967:15;;;;821:1;814:9;787:205;;;791:3;;;497:501;;;;:::o;1003:154::-;-1:-1:-1;;;;;1082:5:92;1078:54;1071:5;1068:65;1058:93;;1147:1;1144;1137:12;1162:247;1221:6;1274:2;1262:9;1253:7;1249:23;1245:32;1242:52;;;1290:1;1287;1280:12;1242:52;1329:9;1316:23;1348:31;1373:5;1348:31;:::i;1659:344::-;1807:2;1792:18;;1840:1;1829:13;;1819:144;;1885:10;1880:3;1876:20;1873:1;1866:31;1920:4;1917:1;1910:15;1948:4;1945:1;1938:15;1819:144;1972:25;;;1659:344;:::o;2008:127::-;2069:10;2064:3;2060:20;2057:1;2050:31;2100:4;2097:1;2090:15;2124:4;2121:1;2114:15;2140:1056;2217:6;2225;2278:2;2266:9;2257:7;2253:23;2249:32;2246:52;;;2294:1;2291;2284:12;2246:52;2333:9;2320:23;2352:31;2377:5;2352:31;:::i;:::-;2402:5;-1:-1:-1;2458:2:92;2443:18;;2430:32;2481:18;2511:14;;;2508:34;;;2538:1;2535;2528:12;2508:34;2576:6;2565:9;2561:22;2551:32;;2621:7;2614:4;2610:2;2606:13;2602:27;2592:55;;2643:1;2640;2633:12;2592:55;2679:2;2666:16;2701:2;2697;2694:10;2691:36;;;2707:18;;:::i;:::-;2782:2;2776:9;2750:2;2836:13;;-1:-1:-1;;2832:22:92;;;2856:2;2828:31;2824:40;2812:53;;;2880:18;;;2900:22;;;2877:46;2874:72;;;2926:18;;:::i;:::-;2966:10;2962:2;2955:22;3001:2;2993:6;2986:18;3041:7;3036:2;3031;3027;3023:11;3019:20;3016:33;3013:53;;;3062:1;3059;3052:12;3013:53;3118:2;3113;3109;3105:11;3100:2;3092:6;3088:15;3075:46;3163:1;3158:2;3153;3145:6;3141:15;3137:24;3130:35;3184:6;3174:16;;;;;;;2140:1056;;;;;:::o;5313:184::-;5383:6;5436:2;5424:9;5415:7;5411:23;5407:32;5404:52;;;5452:1;5449;5442:12;5404:52;-1:-1:-1;5475:16:92;;5313:184;-1:-1:-1;5313:184:92:o;6739:685::-;6943:4;-1:-1:-1;;;;;7053:2:92;7045:6;7041:15;7030:9;7023:34;7105:2;7097:6;7093:15;7088:2;7077:9;7073:18;7066:43;;7145:6;7140:2;7129:9;7125:18;7118:34;7188:3;7183:2;7172:9;7168:18;7161:31;7229:6;7223:3;7212:9;7208:19;7201:35;7287:6;7279;7273:3;7262:9;7258:19;7245:49;7344:1;7338:3;7329:6;7318:9;7314:22;7310:32;7303:43;7414:3;7407:2;7403:7;7398:2;7390:6;7386:15;7382:29;7371:9;7367:45;7363:55;7355:63;;6739:685;;;;;;;;:::o;7429:277::-;7496:6;7549:2;7537:9;7528:7;7524:23;7520:32;7517:52;;;7565:1;7562;7555:12;7517:52;7597:9;7591:16;7650:5;7643:13;7636:21;7629:5;7626:32;7616:60;;7672:1;7669;7662:12;8609:250;8694:1;8704:113;8718:6;8715:1;8712:13;8704:113;;;8794:11;;;8788:18;8775:11;;;8768:39;8740:2;8733:10;8704:113;;;-1:-1:-1;;8851:1:92;8833:16;;8826:27;8609:250::o;8864:287::-;8993:3;9031:6;9025:13;9047:66;9106:6;9101:3;9094:4;9086:6;9082:17;9047:66;:::i;:::-;9129:16;;;;;8864:287;-1:-1:-1;;8864:287:92:o;9514:396::-;9663:2;9652:9;9645:21;9626:4;9695:6;9689:13;9738:6;9733:2;9722:9;9718:18;9711:34;9754:79;9826:6;9821:2;9810:9;9806:18;9801:2;9793:6;9789:15;9754:79;:::i;:::-;9894:2;9873:15;-1:-1:-1;;9869:29:92;9854:45;;;;9901:2;9850:54;;9514:396;-1:-1:-1;;9514:396:92:o"},"gasEstimates":{"creation":{"codeDepositCost":"814000","executionCost":"infinite","totalCost":"infinite"},"external":{"UPGRADE_PLUGIN_PERMISSION_ID()":"261","dao()":"2365","implementation()":"2436","notAnInitializer(address)":"infinite","pluginType()":"294","protocolVersion()":"infinite","proxiableUUID()":"infinite","state1()":"2317","supportsInterface(bytes4)":"560","upgradeTo(address)":"infinite","upgradeToAndCall(address,bytes)":"infinite"}},"methodIdentifiers":{"UPGRADE_PLUGIN_PERMISSION_ID()":"c9c4bfca","dao()":"4162169f","implementation()":"5c60da1b","notAnInitializer(address)":"8883bbd7","pluginType()":"41de6830","protocolVersion()":"2ae9c600","proxiableUUID()":"52d1902d","state1()":"6accab8c","supportsInterface(bytes4)":"01ffc9a7","upgradeTo(address)":"3659cfe6","upgradeToAndCall(address,bytes)":"4f1ef286"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"dao\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"name\":\"DaoUnauthorized\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"UPGRADE_PLUGIN_PERMISSION_ID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"dao\",\"outputs\":[{\"internalType\":\"contract IDAO\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IDAO\",\"name\":\"_dao\",\"type\":\"address\"}],\"name\":\"notAnInitializer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pluginType\",\"outputs\":[{\"internalType\":\"enum IPlugin.PluginType\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"protocolVersion\",\"outputs\":[{\"internalType\":\"uint8[3]\",\"name\":\"\",\"type\":\"uint8[3]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"state1\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"upgradeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"DO NOT USE IN PRODUCTION!\",\"errors\":{\"DaoUnauthorized(address,address,address,bytes32)\":[{\"params\":{\"dao\":\"The associated DAO.\",\"permissionId\":\"The permission identifier.\",\"where\":\"The context in which the authorization reverted.\",\"who\":\"The address (EOA or contract) missing the permission.\"}}]},\"kind\":\"dev\",\"methods\":{\"dao()\":{\"returns\":{\"_0\":\"The DAO contract.\"}},\"implementation()\":{\"returns\":{\"_0\":\"The address of the implementation contract.\"}},\"protocolVersion()\":{\"details\":\"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\",\"returns\":{\"_0\":\"Returns the semantic Aragon OSx protocol version number.\"}},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"supportsInterface(bytes4)\":{\"params\":{\"_interfaceId\":\"The ID of the interface.\"},\"returns\":{\"_0\":\"Returns `true` if the interface is supported.\"}},\"upgradeTo(address)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"},\"upgradeToAndCall(address,bytes)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"}},\"version\":1},\"userdoc\":{\"errors\":{\"DaoUnauthorized(address,address,address,bytes32)\":[{\"notice\":\"Thrown if a call is unauthorized in the associated DAO.\"}]},\"kind\":\"user\",\"methods\":{\"UPGRADE_PLUGIN_PERMISSION_ID()\":{\"notice\":\"The ID of the permission required to call the `_authorizeUpgrade` function.\"},\"dao()\":{\"notice\":\"Returns the DAO contract.\"},\"implementation()\":{\"notice\":\"Returns the address of the implementation contract in the [proxy storage slot](https://eips.ethereum.org/EIPS/eip-1967) slot the [UUPS proxy](https://eips.ethereum.org/EIPS/eip-1822) is pointing to.\"},\"pluginType()\":{\"notice\":\"Returns the plugin's type\"},\"protocolVersion()\":{\"notice\":\"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Checks if an interface is supported by this or its parent contract.\"}},\"notice\":\"A mock upgradeable plugin missing an initializer function.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/mocks/plugin/PluginUUPSUpgradeableMock.sol\":\"PluginUUPSUpgradeableMockBad\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/interfaces/IERC1967Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (interfaces/IERC1967.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\\n *\\n * _Available since v4.8.3._\\n */\\ninterface IERC1967Upgradeable {\\n /**\\n * @dev Emitted when the implementation is upgraded.\\n */\\n event Upgraded(address indexed implementation);\\n\\n /**\\n * @dev Emitted when the admin account has changed.\\n */\\n event AdminChanged(address previousAdmin, address newAdmin);\\n\\n /**\\n * @dev Emitted when the beacon is changed.\\n */\\n event BeaconUpgraded(address indexed beacon);\\n}\\n\",\"keccak256\":\"0x47d6e06872b12e72c79d1b5eb55842f860b5fb1207b2317c2358d2766b950a7b\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822ProxiableUpgradeable {\\n /**\\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n * address.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy.\\n */\\n function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../beacon/IBeaconUpgradeable.sol\\\";\\nimport \\\"../../interfaces/IERC1967Upgradeable.sol\\\";\\nimport \\\"../../interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\nimport \\\"../../utils/StorageSlotUpgradeable.sol\\\";\\nimport {Initializable} from \\\"../utils/Initializable.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n */\\nabstract contract ERC1967UpgradeUpgradeable is Initializable, IERC1967Upgradeable {\\n // This is the keccak-256 hash of \\\"eip1967.proxy.rollback\\\" subtracted by 1\\n bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n /**\\n * @dev Storage slot with the address of the current implementation.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n function __ERC1967Upgrade_init() internal onlyInitializing {\\n }\\n\\n function __ERC1967Upgrade_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _getImplementation() internal view returns (address) {\\n return StorageSlotUpgradeable.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 implementation slot.\\n */\\n function _setImplementation(address newImplementation) private {\\n require(AddressUpgradeable.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n StorageSlotUpgradeable.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n }\\n\\n /**\\n * @dev Perform implementation upgrade\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeTo(address newImplementation) internal {\\n _setImplementation(newImplementation);\\n emit Upgraded(newImplementation);\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCall(address newImplementation, bytes memory data, bool forceCall) internal {\\n _upgradeTo(newImplementation);\\n if (data.length > 0 || forceCall) {\\n AddressUpgradeable.functionDelegateCall(newImplementation, data);\\n }\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCallUUPS(address newImplementation, bytes memory data, bool forceCall) internal {\\n // Upgrades from old implementations will perform a rollback test. This test requires the new\\n // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n // this special case will break upgrade paths from old UUPS implementation to new ones.\\n if (StorageSlotUpgradeable.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n _setImplementation(newImplementation);\\n } else {\\n try IERC1822ProxiableUpgradeable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n require(slot == _IMPLEMENTATION_SLOT, \\\"ERC1967Upgrade: unsupported proxiableUUID\\\");\\n } catch {\\n revert(\\\"ERC1967Upgrade: new implementation is not UUPS\\\");\\n }\\n _upgradeToAndCall(newImplementation, data, forceCall);\\n }\\n }\\n\\n /**\\n * @dev Storage slot with the admin of the contract.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _getAdmin() internal view returns (address) {\\n return StorageSlotUpgradeable.getAddressSlot(_ADMIN_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 admin slot.\\n */\\n function _setAdmin(address newAdmin) private {\\n require(newAdmin != address(0), \\\"ERC1967: new admin is the zero address\\\");\\n StorageSlotUpgradeable.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n */\\n function _changeAdmin(address newAdmin) internal {\\n emit AdminChanged(_getAdmin(), newAdmin);\\n _setAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\\n */\\n bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n /**\\n * @dev Returns the current beacon.\\n */\\n function _getBeacon() internal view returns (address) {\\n return StorageSlotUpgradeable.getAddressSlot(_BEACON_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new beacon in the EIP1967 beacon slot.\\n */\\n function _setBeacon(address newBeacon) private {\\n require(AddressUpgradeable.isContract(newBeacon), \\\"ERC1967: new beacon is not a contract\\\");\\n require(\\n AddressUpgradeable.isContract(IBeaconUpgradeable(newBeacon).implementation()),\\n \\\"ERC1967: beacon implementation is not a contract\\\"\\n );\\n StorageSlotUpgradeable.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n }\\n\\n /**\\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n *\\n * Emits a {BeaconUpgraded} event.\\n */\\n function _upgradeBeaconToAndCall(address newBeacon, bytes memory data, bool forceCall) internal {\\n _setBeacon(newBeacon);\\n emit BeaconUpgraded(newBeacon);\\n if (data.length > 0 || forceCall) {\\n AddressUpgradeable.functionDelegateCall(IBeaconUpgradeable(newBeacon).implementation(), data);\\n }\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x7795808e3899c805254e3ae58074b20f799b466e3f43e057e47bedee5fb771f8\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeaconUpgradeable {\\n /**\\n * @dev Must return an address that can be used as a delegate call target.\\n *\\n * {BeaconProxy} will check that this address is a contract.\\n */\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/UUPSUpgradeable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport \\\"../ERC1967/ERC1967UpgradeUpgradeable.sol\\\";\\nimport {Initializable} from \\\"./Initializable.sol\\\";\\n\\n/**\\n * @dev An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an\\n * {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy.\\n *\\n * A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is\\n * reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing\\n * `UUPSUpgradeable` with a custom implementation of upgrades.\\n *\\n * The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism.\\n *\\n * _Available since v4.1._\\n */\\nabstract contract UUPSUpgradeable is Initializable, IERC1822ProxiableUpgradeable, ERC1967UpgradeUpgradeable {\\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable state-variable-assignment\\n address private immutable __self = address(this);\\n\\n /**\\n * @dev Check that the execution is being performed through a delegatecall call and that the execution context is\\n * a proxy contract with an implementation (as defined in ERC1967) pointing to self. This should only be the case\\n * for UUPS and transparent proxies that are using the current contract as their implementation. Execution of a\\n * function through ERC1167 minimal proxies (clones) would not normally pass this test, but is not guaranteed to\\n * fail.\\n */\\n modifier onlyProxy() {\\n require(address(this) != __self, \\\"Function must be called through delegatecall\\\");\\n require(_getImplementation() == __self, \\\"Function must be called through active proxy\\\");\\n _;\\n }\\n\\n /**\\n * @dev Check that the execution is not being performed through a delegate call. This allows a function to be\\n * callable on the implementing contract but not through proxies.\\n */\\n modifier notDelegated() {\\n require(address(this) == __self, \\\"UUPSUpgradeable: must not be called through delegatecall\\\");\\n _;\\n }\\n\\n function __UUPSUpgradeable_init() internal onlyInitializing {\\n }\\n\\n function __UUPSUpgradeable_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the\\n * implementation. It is used to validate the implementation's compatibility when performing an upgrade.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\\n */\\n function proxiableUUID() external view virtual override notDelegated returns (bytes32) {\\n return _IMPLEMENTATION_SLOT;\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy to `newImplementation`.\\n *\\n * Calls {_authorizeUpgrade}.\\n *\\n * Emits an {Upgraded} event.\\n *\\n * @custom:oz-upgrades-unsafe-allow-reachable delegatecall\\n */\\n function upgradeTo(address newImplementation) public virtual onlyProxy {\\n _authorizeUpgrade(newImplementation);\\n _upgradeToAndCallUUPS(newImplementation, new bytes(0), false);\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call\\n * encoded in `data`.\\n *\\n * Calls {_authorizeUpgrade}.\\n *\\n * Emits an {Upgraded} event.\\n *\\n * @custom:oz-upgrades-unsafe-allow-reachable delegatecall\\n */\\n function upgradeToAndCall(address newImplementation, bytes memory data) public payable virtual onlyProxy {\\n _authorizeUpgrade(newImplementation);\\n _upgradeToAndCallUUPS(newImplementation, data, true);\\n }\\n\\n /**\\n * @dev Function that should revert when `msg.sender` is not authorized to upgrade the contract. Called by\\n * {upgradeTo} and {upgradeToAndCall}.\\n *\\n * Normally, this function will use an xref:access.adoc[access control] modifier such as {Ownable-onlyOwner}.\\n *\\n * ```solidity\\n * function _authorizeUpgrade(address) internal override onlyOwner {}\\n * ```\\n */\\n function _authorizeUpgrade(address newImplementation) internal virtual;\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0xefb41f5c1a00249b7a99f0782f8c557865605426a3fb6e5fe9ae334293ae4f33\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n function __Context_init() internal onlyInitializing {\\n }\\n\\n function __Context_init_unchained() internal onlyInitializing {\\n }\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n function _contextSuffixLength() internal view virtual returns (uint256) {\\n return 0;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x75097e35253e7fb282ee4d7f27a80eaacfa759923185bf17302a89cbc059c5ef\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/StorageSlot.sol)\\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```solidity\\n * contract ERC1967 {\\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n * function _getImplementation() internal view returns (address) {\\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n * }\\n *\\n * function _setImplementation(address newImplementation) internal {\\n * require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n * }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._\\n * _Available since v4.9 for `string`, `bytes`._\\n */\\nlibrary StorageSlotUpgradeable {\\n struct AddressSlot {\\n address value;\\n }\\n\\n struct BooleanSlot {\\n bool value;\\n }\\n\\n struct Bytes32Slot {\\n bytes32 value;\\n }\\n\\n struct Uint256Slot {\\n uint256 value;\\n }\\n\\n struct StringSlot {\\n string value;\\n }\\n\\n struct BytesSlot {\\n bytes value;\\n }\\n\\n /**\\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n */\\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n */\\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n */\\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n */\\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` with member `value` located at `slot`.\\n */\\n function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\\n */\\n function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` with member `value` located at `slot`.\\n */\\n function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\\n */\\n function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n}\\n\",\"keccak256\":\"0x07ac95acad040f1fb1f6120dd0aa5f702db69446e95f82613721879d30de0908\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165Upgradeable.sol\\\";\\nimport {Initializable} from \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165Upgradeable is Initializable, IERC165Upgradeable {\\n function __ERC165_init() internal onlyInitializing {\\n }\\n\\n function __ERC165_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165Upgradeable).interfaceId;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0xd90d7723512df65ae417adaf0801042940f0dabd60039ceeaffe34aa5b238da1\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165Upgradeable {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\"},\"src/dao/IDAO.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IDAO\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for DAOs within the Aragon App DAO framework.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IDAO {\\n /// @notice The action struct to be consumed by the DAO's `execute` function resulting in an external call.\\n /// @param to The address to call.\\n /// @param value The native token value to be sent with the call.\\n /// @param data The bytes-encoded function selector and calldata for the call.\\n struct Action {\\n address to;\\n uint256 value;\\n bytes data;\\n }\\n\\n /// @notice Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\\n /// @param _where The address of the contract.\\n /// @param _who The address of a EOA or contract to give the permissions.\\n /// @param _permissionId The permission identifier.\\n /// @param _data The optional data passed to the `PermissionCondition` registered.\\n /// @return Returns true if the address has permission, false if not.\\n function hasPermission(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes memory _data\\n ) external view returns (bool);\\n\\n /// @notice Updates the DAO metadata (e.g., an IPFS hash).\\n /// @param _metadata The IPFS hash of the new metadata object.\\n function setMetadata(bytes calldata _metadata) external;\\n\\n /// @notice Emitted when the DAO metadata is updated.\\n /// @param metadata The IPFS hash of the new metadata object.\\n event MetadataSet(bytes metadata);\\n\\n /// @notice Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted.\\n /// @param _callId The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce.\\n /// @param _actions The array of actions.\\n /// @param _allowFailureMap A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @return The array of results obtained from the executed actions in `bytes`.\\n /// @return The resulting failure map containing the actions have actually failed.\\n function execute(\\n bytes32 _callId,\\n Action[] memory _actions,\\n uint256 _allowFailureMap\\n ) external returns (bytes[] memory, uint256);\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param actor The address of the caller.\\n /// @param callId The ID of the call.\\n /// @param actions The array of actions executed.\\n /// @param allowFailureMap The allow failure map encoding which actions are allowed to fail.\\n /// @param failureMap The failure map encoding which actions have failed.\\n /// @param execResults The array with the results of the executed actions.\\n /// @dev The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce.\\n event Executed(\\n address indexed actor,\\n bytes32 callId,\\n Action[] actions,\\n uint256 allowFailureMap,\\n uint256 failureMap,\\n bytes[] execResults\\n );\\n\\n /// @notice Emitted when a standard callback is registered.\\n /// @param interfaceId The ID of the interface.\\n /// @param callbackSelector The selector of the callback function.\\n /// @param magicNumber The magic number to be registered for the callback function selector.\\n event StandardCallbackRegistered(\\n bytes4 interfaceId,\\n bytes4 callbackSelector,\\n bytes4 magicNumber\\n );\\n\\n /// @notice Deposits (native) tokens to the DAO contract with a reference string.\\n /// @param _token The address of the token or address(0) in case of the native token.\\n /// @param _amount The amount of tokens to deposit.\\n /// @param _reference The reference describing the deposit reason.\\n function deposit(address _token, uint256 _amount, string calldata _reference) external payable;\\n\\n /// @notice Emitted when a token deposit has been made to the DAO.\\n /// @param sender The address of the sender.\\n /// @param token The address of the deposited token.\\n /// @param amount The amount of tokens deposited.\\n /// @param _reference The reference describing the deposit reason.\\n event Deposited(\\n address indexed sender,\\n address indexed token,\\n uint256 amount,\\n string _reference\\n );\\n\\n /// @notice Emitted when a native token deposit has been made to the DAO.\\n /// @dev This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).\\n /// @param sender The address of the sender.\\n /// @param amount The amount of native tokens deposited.\\n event NativeTokenDeposited(address sender, uint256 amount);\\n\\n /// @notice Setter for the trusted forwarder verifying the meta transaction.\\n /// @param _trustedForwarder The trusted forwarder address.\\n function setTrustedForwarder(address _trustedForwarder) external;\\n\\n /// @notice Getter for the trusted forwarder verifying the meta transaction.\\n /// @return The trusted forwarder address.\\n function getTrustedForwarder() external view returns (address);\\n\\n /// @notice Emitted when a new TrustedForwarder is set on the DAO.\\n /// @param forwarder the new forwarder address.\\n event TrustedForwarderSet(address forwarder);\\n\\n /// @notice Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\\n /// @param _hash The hash of the data to be signed.\\n /// @param _signature The signature byte array associated with `_hash`.\\n /// @return Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not.\\n function isValidSignature(bytes32 _hash, bytes memory _signature) external returns (bytes4);\\n\\n /// @notice Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\\n /// @param _interfaceId The ID of the interface.\\n /// @param _callbackSelector The selector of the callback function.\\n /// @param _magicNumber The magic number to be registered for the function signature.\\n function registerStandardCallback(\\n bytes4 _interfaceId,\\n bytes4 _callbackSelector,\\n bytes4 _magicNumber\\n ) external;\\n\\n /// @notice Removed function being left here to not corrupt the IDAO interface ID. Any call will revert.\\n /// @dev Introduced in v1.0.0. Removed in v1.4.0.\\n function setSignatureValidator(address) external;\\n}\\n\",\"keccak256\":\"0xb7f615523c26de042edce98731c658f44a1edb2464387ac1b642c4c69f57128e\",\"license\":\"AGPL-3.0-or-later\"},\"src/mocks/plugin/PluginUUPSUpgradeableMock.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\n/* solhint-disable one-contract-per-file */\\npragma solidity ^0.8.8;\\n\\nimport {PluginUUPSUpgradeable} from \\\"../../plugin/PluginUUPSUpgradeable.sol\\\";\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice A mock upgradeable plugin to be deployed via the UUPS proxy pattern.\\n/// v1.1 (Release 1, Build 1)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableMockBuild1 is PluginUUPSUpgradeable {\\n uint256 public state1;\\n\\n function initialize(IDAO _dao) external initializer {\\n __PluginUUPSUpgradeable_init(_dao);\\n state1 = 1;\\n }\\n}\\n\\n/// @notice A mock upgradeable plugin to be deployed via the UUPS proxy pattern.\\n/// v1.1 (Release 1, Build 2)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableMockBuild2 is PluginUUPSUpgradeable {\\n uint256 public state1;\\n uint256 public state2;\\n\\n function initialize(IDAO _dao) external reinitializer(2) {\\n __PluginUUPSUpgradeable_init(_dao);\\n state1 = 1;\\n state2 = 2;\\n }\\n\\n function initializeFrom(uint16 _previousBuild) external reinitializer(2) {\\n if (_previousBuild < 2) {\\n state2 = 2;\\n }\\n }\\n}\\n\\n/// @notice A mock upgradeable plugin to be deployed via the UUPS proxy pattern.\\n/// v1.1 (Release 1, Build 3)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableMockBuild3 is PluginUUPSUpgradeable {\\n uint256 public state1;\\n uint256 public state2;\\n uint256 public state3;\\n\\n function initialize(IDAO _dao) external reinitializer(3) {\\n __PluginUUPSUpgradeable_init(_dao);\\n state1 = 1;\\n state2 = 2;\\n state3 = 3;\\n }\\n\\n function initializeFrom(uint16 _previousBuild) external reinitializer(3) {\\n if (_previousBuild < 2) {\\n state2 = 2;\\n }\\n if (_previousBuild < 3) {\\n state3 = 3;\\n }\\n }\\n}\\n\\n/// @notice A mock upgradeable plugin missing an initializer function.\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableMockBad is PluginUUPSUpgradeable {\\n uint256 public state1;\\n\\n function notAnInitializer(IDAO _dao) external {\\n __PluginUUPSUpgradeable_init(_dao);\\n state1 = 1;\\n }\\n}\\n\",\"keccak256\":\"0x2917df3b1da0de27f58cf531afeaa4e6c4285717247cbdd9ecc7880ae5cb9cb0\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/DaoAuthorizableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ContextUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\\\";\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\nimport {_auth} from \\\"./auth.sol\\\";\\n\\n/// @title DaoAuthorizableUpgradeable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract contract providing a meta-transaction compatible modifier for upgradeable or cloneable contracts to authorize function calls through an associated DAO.\\n/// @dev Make sure to call `__DaoAuthorizableUpgradeable_init` during initialization of the inheriting contract.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract DaoAuthorizableUpgradeable is ContextUpgradeable {\\n /// @notice The associated DAO managing the permissions of inheriting contracts.\\n IDAO private dao_;\\n\\n /// @notice Initializes the contract by setting the associated DAO.\\n /// @param _dao The associated DAO address.\\n // solhint-disable-next-line func-name-mixedcase\\n function __DaoAuthorizableUpgradeable_init(IDAO _dao) internal onlyInitializing {\\n dao_ = _dao;\\n }\\n\\n /// @notice Returns the DAO contract.\\n /// @return The DAO contract.\\n function dao() public view returns (IDAO) {\\n return dao_;\\n }\\n\\n /// @notice A modifier to make functions on inheriting contracts authorized. Permissions to call the function are checked through the associated DAO's permission manager.\\n /// @param _permissionId The permission identifier required to call the method this modifier is applied to.\\n modifier auth(bytes32 _permissionId) {\\n _auth(dao_, address(this), _msgSender(), _permissionId, _msgData());\\n _;\\n }\\n\\n /// @notice This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain (see [OpenZeppelin's guide about storage gaps](https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps)).\\n uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0x7fac6b01b037ba1cb9d6a22d3f43b0785037dcf496ffb672434d9bf7227d2585\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/auth.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice Thrown if a call is unauthorized in the associated DAO.\\n/// @param dao The associated DAO.\\n/// @param where The context in which the authorization reverted.\\n/// @param who The address (EOA or contract) missing the permission.\\n/// @param permissionId The permission identifier.\\nerror DaoUnauthorized(address dao, address where, address who, bytes32 permissionId);\\n\\n/// @notice A free function checking if a caller is granted permissions on a target contract via a permission identifier that redirects the approval to a `PermissionCondition` if this was specified in the setup.\\n/// @param _where The address of the target contract for which `who` receives permission.\\n/// @param _who The address (EOA or contract) owning the permission.\\n/// @param _permissionId The permission identifier.\\n/// @param _data The optional data passed to the `PermissionCondition` registered.\\n/// @custom:security-contact sirt@aragon.org\\nfunction _auth(\\n IDAO _dao,\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes calldata _data\\n) view {\\n if (!_dao.hasPermission(_where, _who, _permissionId, _data))\\n revert DaoUnauthorized({\\n dao: address(_dao),\\n where: _where,\\n who: _who,\\n permissionId: _permissionId\\n });\\n}\\n\",\"keccak256\":\"0x878764b4f87fe0651fb3798fb9cb87c952f8c6caf6ae79c7f09de84df6c00298\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/IPlugin.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IPlugin\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the traits of a plugin.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IPlugin {\\n enum PluginType {\\n UUPS,\\n Cloneable,\\n Constructable\\n }\\n\\n /// @notice Returns the plugin's type\\n function pluginType() external view returns (PluginType);\\n}\\n\",\"keccak256\":\"0xc57cd0d10b6380ab7f54c713a509e88fd8f4ad9288313a0e8e12b8887817ddfe\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/PluginUUPSUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {UUPSUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\\\";\\nimport {IERC1822ProxiableUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport {ERC165Upgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\\\";\\n\\nimport {IProtocolVersion} from \\\"../utils/versioning/IProtocolVersion.sol\\\";\\nimport {ProtocolVersion} from \\\"../utils/versioning/ProtocolVersion.sol\\\";\\nimport {DaoAuthorizableUpgradeable} from \\\"../permission/auth/DaoAuthorizableUpgradeable.sol\\\";\\nimport {IDAO} from \\\"../dao/IDAO.sol\\\";\\nimport {IPlugin} from \\\"./IPlugin.sol\\\";\\n\\n/// @title PluginUUPSUpgradeable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract, upgradeable contract to inherit from when creating a plugin being deployed via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract PluginUUPSUpgradeable is\\n IPlugin,\\n ERC165Upgradeable,\\n UUPSUpgradeable,\\n DaoAuthorizableUpgradeable,\\n ProtocolVersion\\n{\\n // NOTE: When adding new state variables to the contract, the size of `_gap` has to be adapted below as well.\\n\\n /// @notice Disables the initializers on the implementation contract to prevent it from being left uninitialized.\\n /// @custom:oz-upgrades-unsafe-allow constructor\\n constructor() {\\n _disableInitializers();\\n }\\n\\n /// @inheritdoc IPlugin\\n function pluginType() public pure override returns (PluginType) {\\n return PluginType.UUPS;\\n }\\n\\n /// @notice The ID of the permission required to call the `_authorizeUpgrade` function.\\n bytes32 public constant UPGRADE_PLUGIN_PERMISSION_ID = keccak256(\\\"UPGRADE_PLUGIN_PERMISSION\\\");\\n\\n /// @notice Initializes the plugin by storing the associated DAO.\\n /// @param _dao The DAO contract.\\n // solhint-disable-next-line func-name-mixedcase\\n function __PluginUUPSUpgradeable_init(IDAO _dao) internal virtual onlyInitializing {\\n __DaoAuthorizableUpgradeable_init(_dao);\\n }\\n\\n /// @notice Checks if an interface is supported by this or its parent contract.\\n /// @param _interfaceId The ID of the interface.\\n /// @return Returns `true` if the interface is supported.\\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\\n return\\n _interfaceId == type(IPlugin).interfaceId ||\\n _interfaceId == type(IProtocolVersion).interfaceId ||\\n _interfaceId == type(IERC1822ProxiableUpgradeable).interfaceId ||\\n super.supportsInterface(_interfaceId);\\n }\\n\\n /// @notice Returns the address of the implementation contract in the [proxy storage slot](https://eips.ethereum.org/EIPS/eip-1967) slot the [UUPS proxy](https://eips.ethereum.org/EIPS/eip-1822) is pointing to.\\n /// @return The address of the implementation contract.\\n function implementation() public view returns (address) {\\n return _getImplementation();\\n }\\n\\n /// @notice Internal method authorizing the upgrade of the contract via the [upgradeability mechanism for UUPS proxies](https://docs.openzeppelin.com/contracts/4.x/api/proxy#UUPSUpgradeable) (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\\n /// @dev The caller must have the `UPGRADE_PLUGIN_PERMISSION_ID` permission.\\n function _authorizeUpgrade(\\n address\\n )\\n internal\\n virtual\\n override\\n auth(UPGRADE_PLUGIN_PERMISSION_ID)\\n // solhint-disable-next-line no-empty-blocks\\n {\\n\\n }\\n\\n /// @notice This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain (see [OpenZeppelin's guide about storage gaps](https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps)).\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x127e7c4f839cb8c8486070990b78e22313f1ff089ffe6a4ff23ae358e48f0037\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/IProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IProtocolVersion\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the semantic Aragon OSx protocol version number.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IProtocolVersion {\\n /// @notice Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\\n /// @return _version Returns the semantic Aragon OSx protocol version number.\\n /// @dev This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\\n function protocolVersion() external view returns (uint8[3] memory _version);\\n}\\n\",\"keccak256\":\"0x00a4da654d21dc1bdadbdc8bd54bb86c378c56f85e461ccc31303628ea621361\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/ProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IProtocolVersion} from \\\"./IProtocolVersion.sol\\\";\\n\\n/// @title ProtocolVersion\\n/// @author Aragon X - 2023\\n/// @notice An abstract, stateless, non-upgradeable contract providing the current Aragon OSx protocol version number.\\n/// @dev Do not add any new variables to this contract that would shift down storage in the inheritance chain.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract ProtocolVersion is IProtocolVersion {\\n // IMPORTANT: Do not add any storage variable, see the above notice.\\n\\n /// @inheritdoc IProtocolVersion\\n function protocolVersion() public pure returns (uint8[3] memory) {\\n return [1, 4, 0];\\n }\\n}\\n\",\"keccak256\":\"0x3975c937be935f687c6b6b8f379071232681e98cf04b175d72781b819ea52bdb\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[{"astId":372,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBad","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":375,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBad","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":2821,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBad","label":"__gap","offset":0,"slot":"1","type":"t_array(t_uint256)50_storage"},{"astId":354,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBad","label":"__gap","offset":0,"slot":"51","type":"t_array(t_uint256)50_storage"},{"astId":670,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBad","label":"__gap","offset":0,"slot":"101","type":"t_array(t_uint256)50_storage"},{"astId":2592,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBad","label":"__gap","offset":0,"slot":"151","type":"t_array(t_uint256)50_storage"},{"astId":13111,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBad","label":"dao_","offset":0,"slot":"201","type":"t_contract(IDAO)10865"},{"astId":13160,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBad","label":"__gap","offset":0,"slot":"202","type":"t_array(t_uint256)49_storage"},{"astId":13632,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBad","label":"__gap","offset":0,"slot":"251","type":"t_array(t_uint256)50_storage"},{"astId":11905,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBad","label":"state1","offset":0,"slot":"301","type":"t_uint256"}],"types":{"t_array(t_uint256)49_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[49]","numberOfBytes":"1568"},"t_array(t_uint256)50_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[50]","numberOfBytes":"1600"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_contract(IDAO)10865":{"encoding":"inplace","label":"contract IDAO","numberOfBytes":"20"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"errors":{"DaoUnauthorized(address,address,address,bytes32)":[{"notice":"Thrown if a call is unauthorized in the associated DAO."}]},"kind":"user","methods":{"UPGRADE_PLUGIN_PERMISSION_ID()":{"notice":"The ID of the permission required to call the `_authorizeUpgrade` function."},"dao()":{"notice":"Returns the DAO contract."},"implementation()":{"notice":"Returns the address of the implementation contract in the [proxy storage slot](https://eips.ethereum.org/EIPS/eip-1967) slot the [UUPS proxy](https://eips.ethereum.org/EIPS/eip-1822) is pointing to."},"pluginType()":{"notice":"Returns the plugin's type"},"protocolVersion()":{"notice":"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with."},"supportsInterface(bytes4)":{"notice":"Checks if an interface is supported by this or its parent contract."}},"notice":"A mock upgradeable plugin missing an initializer function.","version":1}},"PluginUUPSUpgradeableMockBuild1":{"abi":[{"inputs":[{"internalType":"address","name":"dao","type":"address"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"name":"DaoUnauthorized","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"beacon","type":"address"}],"name":"BeaconUpgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"inputs":[],"name":"UPGRADE_PLUGIN_PERMISSION_ID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dao","outputs":[{"internalType":"contract IDAO","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IDAO","name":"_dao","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pluginType","outputs":[{"internalType":"enum IPlugin.PluginType","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"protocolVersion","outputs":[{"internalType":"uint8[3]","name":"","type":"uint8[3]"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"state1","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"}],"name":"upgradeTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"}],"devdoc":{"details":"DO NOT USE IN PRODUCTION!","errors":{"DaoUnauthorized(address,address,address,bytes32)":[{"params":{"dao":"The associated DAO.","permissionId":"The permission identifier.","where":"The context in which the authorization reverted.","who":"The address (EOA or contract) missing the permission."}}]},"kind":"dev","methods":{"dao()":{"returns":{"_0":"The DAO contract."}},"implementation()":{"returns":{"_0":"The address of the implementation contract."}},"protocolVersion()":{"details":"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.","returns":{"_0":"Returns the semantic Aragon OSx protocol version number."}},"proxiableUUID()":{"details":"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier."},"supportsInterface(bytes4)":{"params":{"_interfaceId":"The ID of the interface."},"returns":{"_0":"Returns `true` if the interface is supported."}},"upgradeTo(address)":{"custom:oz-upgrades-unsafe-allow-reachable":"delegatecall","details":"Upgrade the implementation of the proxy to `newImplementation`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."},"upgradeToAndCall(address,bytes)":{"custom:oz-upgrades-unsafe-allow-reachable":"delegatecall","details":"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."}},"version":1},"evm":{"bytecode":{"functionDebugData":{"@_13538":{"entryPoint":null,"id":13538,"parameterSlots":0,"returnSlots":0},"@_disableInitializers_515":{"entryPoint":34,"id":515,"parameterSlots":0,"returnSlots":0},"abi_encode_tuple_t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:608:92","statements":[{"nodeType":"YulBlock","src":"6:3:92","statements":[]},{"body":{"nodeType":"YulBlock","src":"188:229:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"205:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"216:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"198:6:92"},"nodeType":"YulFunctionCall","src":"198:21:92"},"nodeType":"YulExpressionStatement","src":"198:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"239:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"250:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"235:3:92"},"nodeType":"YulFunctionCall","src":"235:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"255:2:92","type":"","value":"39"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"228:6:92"},"nodeType":"YulFunctionCall","src":"228:30:92"},"nodeType":"YulExpressionStatement","src":"228:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"278:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"289:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"274:3:92"},"nodeType":"YulFunctionCall","src":"274:18:92"},{"hexValue":"496e697469616c697a61626c653a20636f6e747261637420697320696e697469","kind":"string","nodeType":"YulLiteral","src":"294:34:92","type":"","value":"Initializable: contract is initi"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"267:6:92"},"nodeType":"YulFunctionCall","src":"267:62:92"},"nodeType":"YulExpressionStatement","src":"267:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"349:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"360:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"345:3:92"},"nodeType":"YulFunctionCall","src":"345:18:92"},{"hexValue":"616c697a696e67","kind":"string","nodeType":"YulLiteral","src":"365:9:92","type":"","value":"alizing"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"338:6:92"},"nodeType":"YulFunctionCall","src":"338:37:92"},"nodeType":"YulExpressionStatement","src":"338:37:92"},{"nodeType":"YulAssignment","src":"384:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"396:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"407:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"392:3:92"},"nodeType":"YulFunctionCall","src":"392:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"384:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"165:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"179:4:92","type":""}],"src":"14:403:92"},{"body":{"nodeType":"YulBlock","src":"519:87:92","statements":[{"nodeType":"YulAssignment","src":"529:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"541:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"552:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"537:3:92"},"nodeType":"YulFunctionCall","src":"537:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"529:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"571:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"586:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"594:4:92","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"582:3:92"},"nodeType":"YulFunctionCall","src":"582:17:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"564:6:92"},"nodeType":"YulFunctionCall","src":"564:36:92"},"nodeType":"YulExpressionStatement","src":"564:36:92"}]},"name":"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"488:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"499:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"510:4:92","type":""}],"src":"422:184:92"}]},"contents":"{\n { }\n function abi_encode_tuple_t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 39)\n mstore(add(headStart, 64), \"Initializable: contract is initi\")\n mstore(add(headStart, 96), \"alizing\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xff))\n }\n}","id":92,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60a06040523060805234801561001457600080fd5b5061001d610022565b6100e1565b600054610100900460ff161561008e5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116146100df576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6080516110fb610118600039600081816102de015281816103680152818161045e015281816104e301526105cd01526110fb6000f3fe6080604052600436106100bc5760003560e01c80634f1ef286116100745780636accab8c1161004e5780636accab8c146101d3578063c4d66de8146101ea578063c9c4bfca1461020a57600080fd5b80634f1ef2861461018857806352d1902d1461019b5780635c60da1b146101be57600080fd5b80633659cfe6116100a55780633659cfe6146101185780634162169f1461013a57806341de68301461016c57600080fd5b806301ffc9a7146100c15780632ae9c600146100f6575b600080fd5b3480156100cd57600080fd5b506100e16100dc366004610e33565b61023e565b60405190151581526020015b60405180910390f35b34801561010257600080fd5b5061010b6102aa565b6040516100ed9190610e5d565b34801561012457600080fd5b50610138610133366004610ea6565b6102d4565b005b34801561014657600080fd5b5060c9546001600160a01b03165b6040516001600160a01b0390911681526020016100ed565b34801561017857600080fd5b5060006040516100ed9190610ec3565b610138610196366004610f01565b610454565b3480156101a757600080fd5b506101b06105c0565b6040519081526020016100ed565b3480156101ca57600080fd5b50610154610685565b3480156101df57600080fd5b506101b061012d5481565b3480156101f657600080fd5b50610138610205366004610ea6565b6106bd565b34801561021657600080fd5b506101b07f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f581565b60006001600160e01b0319821663041de68360e41b148061026e57506001600160e01b03198216621574e360e91b145b8061028957506001600160e01b031982166352d1902d60e01b145b806102a457506301ffc9a760e01b6001600160e01b03198316145b92915050565b6102b2610e15565b5060408051606081018252600181526004602082015260009181019190915290565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036103665760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b60648201526084015b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166103c17f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b03161461042c5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b606482015260840161035d565b610435816107e4565b6040805160008082526020820190925261045191839190610821565b50565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036104e15760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b606482015260840161035d565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661053c7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b0316146105a75760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b606482015260840161035d565b6105b0826107e4565b6105bc82826001610821565b5050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106605760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000606482015260840161035d565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b60006106b87f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b600054610100900460ff16158080156106dd5750600054600160ff909116105b806106f75750303b1580156106f7575060005460ff166001145b6107695760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161035d565b6000805460ff19166001179055801561078c576000805461ff0019166101001790555b610795826109c6565b600161012d5580156105bc576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b60c9547f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f5906105bc906001600160a01b0316303384600036610a3a565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156108595761085483610af6565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156108b3575060408051601f3d908101601f191682019092526108b091810190610fc5565b60015b6109255760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201527f6f6e206973206e6f742055555053000000000000000000000000000000000000606482015260840161035d565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146109ba5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f7860448201527f6961626c65555549440000000000000000000000000000000000000000000000606482015260840161035d565b50610854838383610bc1565b600054610100900460ff16610a315760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840161035d565b61045181610bec565b604051637ef7c88360e11b81526001600160a01b0387169063fdef910690610a6e9088908890889088908890600401610fde565b602060405180830381865afa158015610a8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aaf9190611032565b610aee57604051630cb6f8ed60e21b81526001600160a01b0380881660048301528087166024830152851660448201526064810184905260840161035d565b505050505050565b6001600160a01b0381163b610b735760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e747261637400000000000000000000000000000000000000606482015260840161035d565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610bca83610c86565b600082511180610bd75750805b1561085457610be68383610cc6565b50505050565b600054610100900460ff16610c575760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840161035d565b60c9805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610c8f81610af6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060610ceb83836040518060600160405280602781526020016110c860279139610cf2565b9392505050565b6060600080856001600160a01b031685604051610d0f9190611078565b600060405180830381855af49150503d8060008114610d4a576040519150601f19603f3d011682016040523d82523d6000602084013e610d4f565b606091505b5091509150610d6086838387610d6a565b9695505050505050565b60608315610dd9578251600003610dd2576001600160a01b0385163b610dd25760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161035d565b5081610de3565b610de38383610deb565b949350505050565b815115610dfb5781518083602001fd5b8060405162461bcd60e51b815260040161035d9190611094565b60405180606001604052806003906020820280368337509192915050565b600060208284031215610e4557600080fd5b81356001600160e01b031981168114610ceb57600080fd5b60608101818360005b6003811015610e8857815160ff16835260209283019290910190600101610e66565b50505092915050565b6001600160a01b038116811461045157600080fd5b600060208284031215610eb857600080fd5b8135610ceb81610e91565b6020810160038310610ee557634e487b7160e01b600052602160045260246000fd5b91905290565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215610f1457600080fd5b8235610f1f81610e91565b9150602083013567ffffffffffffffff80821115610f3c57600080fd5b818501915085601f830112610f5057600080fd5b813581811115610f6257610f62610eeb565b604051601f8201601f19908116603f01168101908382118183101715610f8a57610f8a610eeb565b81604052828152886020848701011115610fa357600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b600060208284031215610fd757600080fd5b5051919050565b60006001600160a01b03808816835280871660208401525084604083015260806060830152826080830152828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b60006020828403121561104457600080fd5b81518015158114610ceb57600080fd5b60005b8381101561106f578181015183820152602001611057565b50506000910152565b6000825161108a818460208701611054565b9190910192915050565b60208152600082518060208401526110b3816040850160208701611054565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a","opcodes":"PUSH1 0xA0 PUSH1 0x40 MSTORE ADDRESS PUSH1 0x80 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x14 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1D PUSH2 0x22 JUMP JUMPDEST PUSH2 0xE1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x8E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x27 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320696E697469 PUSH1 0x44 DUP3 ADD MSTORE PUSH7 0x616C697A696E67 PUSH1 0xC8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xFF SWAP1 DUP2 AND EQ PUSH2 0xDF JUMPI PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH2 0x10FB PUSH2 0x118 PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH2 0x2DE ADD MSTORE DUP2 DUP2 PUSH2 0x368 ADD MSTORE DUP2 DUP2 PUSH2 0x45E ADD MSTORE DUP2 DUP2 PUSH2 0x4E3 ADD MSTORE PUSH2 0x5CD ADD MSTORE PUSH2 0x10FB PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xBC JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x4F1EF286 GT PUSH2 0x74 JUMPI DUP1 PUSH4 0x6ACCAB8C GT PUSH2 0x4E JUMPI DUP1 PUSH4 0x6ACCAB8C EQ PUSH2 0x1D3 JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0x1EA JUMPI DUP1 PUSH4 0xC9C4BFCA EQ PUSH2 0x20A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x188 JUMPI DUP1 PUSH4 0x52D1902D EQ PUSH2 0x19B JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0x1BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x3659CFE6 GT PUSH2 0xA5 JUMPI DUP1 PUSH4 0x3659CFE6 EQ PUSH2 0x118 JUMPI DUP1 PUSH4 0x4162169F EQ PUSH2 0x13A JUMPI DUP1 PUSH4 0x41DE6830 EQ PUSH2 0x16C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xC1 JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0xF6 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xCD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xE1 PUSH2 0xDC CALLDATASIZE PUSH1 0x4 PUSH2 0xE33 JUMP JUMPDEST PUSH2 0x23E JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x102 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x10B PUSH2 0x2AA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xED SWAP2 SWAP1 PUSH2 0xE5D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x124 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x138 PUSH2 0x133 CALLDATASIZE PUSH1 0x4 PUSH2 0xEA6 JUMP JUMPDEST PUSH2 0x2D4 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x146 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xC9 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xED JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x178 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 PUSH1 0x40 MLOAD PUSH2 0xED SWAP2 SWAP1 PUSH2 0xEC3 JUMP JUMPDEST PUSH2 0x138 PUSH2 0x196 CALLDATASIZE PUSH1 0x4 PUSH2 0xF01 JUMP JUMPDEST PUSH2 0x454 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1B0 PUSH2 0x5C0 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xED JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x154 PUSH2 0x685 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1B0 PUSH2 0x12D SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x138 PUSH2 0x205 CALLDATASIZE PUSH1 0x4 PUSH2 0xEA6 JUMP JUMPDEST PUSH2 0x6BD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x216 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1B0 PUSH32 0x821B6E3A557148015A918C89E5D092E878A69854A2D1A410635F771BD5A8A3F5 DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x41DE683 PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x26E JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x289 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x52D1902D PUSH1 0xE0 SHL EQ JUMPDEST DUP1 PUSH2 0x2A4 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x2B2 PUSH2 0xE15 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x366 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x19195B1959D85D1958D85B1B PUSH1 0xA2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3C1 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x42C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x6163746976652070726F7879 PUSH1 0xA0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x35D JUMP JUMPDEST PUSH2 0x435 DUP2 PUSH2 0x7E4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x451 SWAP2 DUP4 SWAP2 SWAP1 PUSH2 0x821 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x4E1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x19195B1959D85D1958D85B1B PUSH1 0xA2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x35D JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x53C PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x5A7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x6163746976652070726F7879 PUSH1 0xA0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x35D JUMP JUMPDEST PUSH2 0x5B0 DUP3 PUSH2 0x7E4 JUMP JUMPDEST PUSH2 0x5BC DUP3 DUP3 PUSH1 0x1 PUSH2 0x821 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x660 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x38 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x555550535570677261646561626C653A206D757374206E6F742062652063616C PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6C6564207468726F7567682064656C656761746563616C6C0000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x35D JUMP JUMPDEST POP PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6B8 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 DUP1 ISZERO PUSH2 0x6DD JUMPI POP PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xFF SWAP1 SWAP2 AND LT JUMPDEST DUP1 PUSH2 0x6F7 JUMPI POP ADDRESS EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x6F7 JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF AND PUSH1 0x1 EQ JUMPDEST PUSH2 0x769 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x647920696E697469616C697A6564000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x35D JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE DUP1 ISZERO PUSH2 0x78C JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND PUSH2 0x100 OR SWAP1 SSTORE JUMPDEST PUSH2 0x795 DUP3 PUSH2 0x9C6 JUMP JUMPDEST PUSH1 0x1 PUSH2 0x12D SSTORE DUP1 ISZERO PUSH2 0x5BC JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0xC9 SLOAD PUSH32 0x821B6E3A557148015A918C89E5D092E878A69854A2D1A410635F771BD5A8A3F5 SWAP1 PUSH2 0x5BC SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ADDRESS CALLER DUP5 PUSH1 0x0 CALLDATASIZE PUSH2 0xA3A JUMP JUMPDEST PUSH32 0x4910FDFA16FED3260ED0E7147F7CC6DA11A60208B5B9406D12A635614FFD9143 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x859 JUMPI PUSH2 0x854 DUP4 PUSH2 0xAF6 JUMP JUMPDEST POP POP POP JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x52D1902D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x8B3 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x8B0 SWAP2 DUP2 ADD SWAP1 PUSH2 0xFC5 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x925 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524331393637557067726164653A206E657720696D706C656D656E74617469 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F6E206973206E6F742055555053000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x35D JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC DUP2 EQ PUSH2 0x9BA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524331393637557067726164653A20756E737570706F727465642070726F78 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6961626C65555549440000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x35D JUMP JUMPDEST POP PUSH2 0x854 DUP4 DUP4 DUP4 PUSH2 0xBC1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0xA31 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x35D JUMP JUMPDEST PUSH2 0x451 DUP2 PUSH2 0xBEC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x7EF7C883 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0xFDEF9106 SWAP1 PUSH2 0xA6E SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0xFDE JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xA8B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xAAF SWAP2 SWAP1 PUSH2 0x1032 JUMP JUMPDEST PUSH2 0xAEE JUMPI PUSH1 0x40 MLOAD PUSH4 0xCB6F8ED PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND PUSH1 0x4 DUP4 ADD MSTORE DUP1 DUP8 AND PUSH1 0x24 DUP4 ADD MSTORE DUP6 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x84 ADD PUSH2 0x35D JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND EXTCODESIZE PUSH2 0xB73 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313936373A206E657720696D706C656D656E746174696F6E206973206E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F74206120636F6E747261637400000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x35D JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xBCA DUP4 PUSH2 0xC86 JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD GT DUP1 PUSH2 0xBD7 JUMPI POP DUP1 JUMPDEST ISZERO PUSH2 0x854 JUMPI PUSH2 0xBE6 DUP4 DUP4 PUSH2 0xCC6 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0xC57 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x35D JUMP JUMPDEST PUSH1 0xC9 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xC8F DUP2 PUSH2 0xAF6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xCEB DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x10C8 PUSH1 0x27 SWAP2 CODECOPY PUSH2 0xCF2 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0xD0F SWAP2 SWAP1 PUSH2 0x1078 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xD4A JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xD4F JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0xD60 DUP7 DUP4 DUP4 DUP8 PUSH2 0xD6A JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0xDD9 JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0xDD2 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0xDD2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x35D JUMP JUMPDEST POP DUP2 PUSH2 0xDE3 JUMP JUMPDEST PUSH2 0xDE3 DUP4 DUP4 PUSH2 0xDEB JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0xDFB JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x35D SWAP2 SWAP1 PUSH2 0x1094 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xE45 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0xCEB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0xE88 JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0xE66 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x451 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xEB8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xCEB DUP2 PUSH2 0xE91 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH1 0x3 DUP4 LT PUSH2 0xEE5 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 SWAP1 MSTORE SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xF14 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0xF1F DUP2 PUSH2 0xE91 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xF3C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xF50 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0xF62 JUMPI PUSH2 0xF62 PUSH2 0xEEB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0xF8A JUMPI PUSH2 0xF8A PUSH2 0xEEB JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0xFA3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xFD7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND DUP4 MSTORE DUP1 DUP8 AND PUSH1 0x20 DUP5 ADD MSTORE POP DUP5 PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x80 PUSH1 0x60 DUP4 ADD MSTORE DUP3 PUSH1 0x80 DUP4 ADD MSTORE DUP3 DUP5 PUSH1 0xA0 DUP5 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0xA0 DUP5 DUP5 ADD ADD MSTORE PUSH1 0xA0 PUSH1 0x1F NOT PUSH1 0x1F DUP6 ADD AND DUP4 ADD ADD SWAP1 POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1044 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xCEB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x106F JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1057 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x108A DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x1054 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x10B3 DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x1054 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A164 PUSH20 0x6F6C6343000811000A0000000000000000000000 ","sourceMap":"382:225:53:-:0;;;1198:4:5;1155:48;;382:225:53;;;;;;;;;-1:-1:-1;1489:22:75;:20;:22::i;:::-;382:225:53;;5939:280:4;6007:13;;;;;;;6006:14;5998:66;;;;-1:-1:-1;;;5998:66:4;;216:2:92;5998:66:4;;;198:21:92;255:2;235:18;;;228:30;294:34;274:18;;;267:62;-1:-1:-1;;;345:18:92;;;338:37;392:19;;5998:66:4;;;;;;;;6078:12;;6094:15;6078:12;;;:31;6074:139;;6125:12;:30;;-1:-1:-1;;6125:30:4;6140:15;6125:30;;;;;;6174:28;;564:36:92;;;6174:28:4;;552:2:92;537:18;6174:28:4;;;;;;;6074:139;5939:280::o;422:184:92:-;382:225:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@UPGRADE_PLUGIN_PERMISSION_ID_13556":{"entryPoint":null,"id":13556,"parameterSlots":0,"returnSlots":0},"@__DaoAuthorizableUpgradeable_init_13125":{"entryPoint":3052,"id":13125,"parameterSlots":1,"returnSlots":0},"@__PluginUUPSUpgradeable_init_13570":{"entryPoint":2502,"id":13570,"parameterSlots":1,"returnSlots":0},"@_auth_13211":{"entryPoint":2618,"id":13211,"parameterSlots":6,"returnSlots":0},"@_authorizeUpgrade_13627":{"entryPoint":2020,"id":13627,"parameterSlots":1,"returnSlots":0},"@_getImplementation_76":{"entryPoint":null,"id":76,"parameterSlots":0,"returnSlots":1},"@_msgData_2579":{"entryPoint":null,"id":2579,"parameterSlots":0,"returnSlots":2},"@_msgSender_2570":{"entryPoint":null,"id":2570,"parameterSlots":0,"returnSlots":1},"@_revert_1000":{"entryPoint":3563,"id":1000,"parameterSlots":2,"returnSlots":0},"@_setImplementation_100":{"entryPoint":2806,"id":100,"parameterSlots":1,"returnSlots":0},"@_upgradeToAndCallUUPS_198":{"entryPoint":2081,"id":198,"parameterSlots":3,"returnSlots":0},"@_upgradeToAndCall_145":{"entryPoint":3009,"id":145,"parameterSlots":3,"returnSlots":0},"@_upgradeTo_115":{"entryPoint":3206,"id":115,"parameterSlots":1,"returnSlots":0},"@dao_13135":{"entryPoint":null,"id":13135,"parameterSlots":0,"returnSlots":1},"@functionDelegateCall_888":{"entryPoint":3270,"id":888,"parameterSlots":2,"returnSlots":1},"@functionDelegateCall_917":{"entryPoint":3314,"id":917,"parameterSlots":3,"returnSlots":1},"@getAddressSlot_2699":{"entryPoint":null,"id":2699,"parameterSlots":1,"returnSlots":1},"@getBooleanSlot_2710":{"entryPoint":null,"id":2710,"parameterSlots":1,"returnSlots":1},"@implementation_13616":{"entryPoint":1669,"id":13616,"parameterSlots":0,"returnSlots":1},"@initialize_11788":{"entryPoint":1725,"id":11788,"parameterSlots":1,"returnSlots":0},"@isContract_689":{"entryPoint":null,"id":689,"parameterSlots":1,"returnSlots":1},"@pluginType_13550":{"entryPoint":null,"id":13550,"parameterSlots":0,"returnSlots":1},"@protocolVersion_14765":{"entryPoint":682,"id":14765,"parameterSlots":0,"returnSlots":1},"@proxiableUUID_616":{"entryPoint":1472,"id":616,"parameterSlots":0,"returnSlots":1},"@state1_11771":{"entryPoint":null,"id":11771,"parameterSlots":0,"returnSlots":0},"@supportsInterface_13606":{"entryPoint":574,"id":13606,"parameterSlots":1,"returnSlots":1},"@supportsInterface_2816":{"entryPoint":null,"id":2816,"parameterSlots":1,"returnSlots":1},"@upgradeToAndCall_659":{"entryPoint":1108,"id":659,"parameterSlots":2,"returnSlots":0},"@upgradeTo_638":{"entryPoint":724,"id":638,"parameterSlots":1,"returnSlots":0},"@verifyCallResultFromTarget_956":{"entryPoint":3434,"id":956,"parameterSlots":4,"returnSlots":1},"abi_decode_tuple_t_address":{"entryPoint":3750,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_bytes_memory_ptr":{"entryPoint":3841,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_bool_fromMemory":{"entryPoint":4146,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes32_fromMemory":{"entryPoint":4037,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes4":{"entryPoint":3635,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_contract$_IDAO_$10865":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":4216,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address_t_address_t_address_t_bytes32__to_t_address_t_address_t_address_t_bytes32__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":5,"returnSlots":1},"abi_encode_tuple_t_address_t_address_t_bytes32_t_bytes_calldata_ptr__to_t_address_t_address_t_bytes32_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":4062,"id":null,"parameterSlots":6,"returnSlots":1},"abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed":{"entryPoint":3677,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_contract$_IDAO_$10865__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_enum$_PluginType_$13330__to_t_uint8__fromStack_reversed":{"entryPoint":3779,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_rational_1_by_1__to_t_uint8__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":4244,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_36e108fa7a809b52ab1951dd91c117a7bc9ac5250bdf1aa162d4e104f7edf9eb__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_52f1ead4d9653e13afbd2e90ef2587c30187cd50b2e97d784e3f7a7541247434__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_67f0151b4ad1dcfa0e3302a0cd6019f51582ef1807b37dceb00bd852a514f7f4__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_76b6b6debfc5febf101145a79ecf0b0d2e89e397dfdab2bca99888370411152c__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_8e8e2fbcb586f700b5b14e2c4a650c8d83b9773c31c5fe8962070ea544e11f24__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"copy_memory_to_memory_with_cleanup":{"entryPoint":4180,"id":null,"parameterSlots":3,"returnSlots":0},"panic_error_0x41":{"entryPoint":3819,"id":null,"parameterSlots":0,"returnSlots":0},"validator_revert_address":{"entryPoint":3729,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:10526:92","statements":[{"nodeType":"YulBlock","src":"6:3:92","statements":[]},{"body":{"nodeType":"YulBlock","src":"83:217:92","statements":[{"body":{"nodeType":"YulBlock","src":"129:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"138:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"141:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"131:6:92"},"nodeType":"YulFunctionCall","src":"131:12:92"},"nodeType":"YulExpressionStatement","src":"131:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"104:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"113:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"100:3:92"},"nodeType":"YulFunctionCall","src":"100:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"125:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"96:3:92"},"nodeType":"YulFunctionCall","src":"96:32:92"},"nodeType":"YulIf","src":"93:52:92"},{"nodeType":"YulVariableDeclaration","src":"154:36:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"180:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"167:12:92"},"nodeType":"YulFunctionCall","src":"167:23:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"158:5:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"254:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"263:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"266:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"256:6:92"},"nodeType":"YulFunctionCall","src":"256:12:92"},"nodeType":"YulExpressionStatement","src":"256:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"212:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"223:5:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"234:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"239:10:92","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"230:3:92"},"nodeType":"YulFunctionCall","src":"230:20:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"219:3:92"},"nodeType":"YulFunctionCall","src":"219:32:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"209:2:92"},"nodeType":"YulFunctionCall","src":"209:43:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"202:6:92"},"nodeType":"YulFunctionCall","src":"202:51:92"},"nodeType":"YulIf","src":"199:71:92"},{"nodeType":"YulAssignment","src":"279:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"289:5:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"279:6:92"}]}]},"name":"abi_decode_tuple_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"49:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"60:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"72:6:92","type":""}],"src":"14:286:92"},{"body":{"nodeType":"YulBlock","src":"400:92:92","statements":[{"nodeType":"YulAssignment","src":"410:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"422:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"433:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"418:3:92"},"nodeType":"YulFunctionCall","src":"418:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"410:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"452:9:92"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"477:6:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"470:6:92"},"nodeType":"YulFunctionCall","src":"470:14:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"463:6:92"},"nodeType":"YulFunctionCall","src":"463:22:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"445:6:92"},"nodeType":"YulFunctionCall","src":"445:41:92"},"nodeType":"YulExpressionStatement","src":"445:41:92"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"369:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"380:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"391:4:92","type":""}],"src":"305:187:92"},{"body":{"nodeType":"YulBlock","src":"640:358:92","statements":[{"nodeType":"YulAssignment","src":"650:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"662:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"673:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"658:3:92"},"nodeType":"YulFunctionCall","src":"658:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"650:4:92"}]},{"nodeType":"YulVariableDeclaration","src":"685:20:92","value":{"name":"headStart","nodeType":"YulIdentifier","src":"696:9:92"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"689:3:92","type":""}]},{"nodeType":"YulAssignment","src":"714:16:92","value":{"name":"headStart","nodeType":"YulIdentifier","src":"721:9:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"714:3:92"}]},{"nodeType":"YulVariableDeclaration","src":"739:20:92","value":{"name":"value0","nodeType":"YulIdentifier","src":"753:6:92"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"743:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"768:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"777:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"772:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"834:158:92","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"855:3:92"},{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"870:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"864:5:92"},"nodeType":"YulFunctionCall","src":"864:13:92"},{"kind":"number","nodeType":"YulLiteral","src":"879:4:92","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"860:3:92"},"nodeType":"YulFunctionCall","src":"860:24:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"848:6:92"},"nodeType":"YulFunctionCall","src":"848:37:92"},"nodeType":"YulExpressionStatement","src":"848:37:92"},{"nodeType":"YulVariableDeclaration","src":"898:14:92","value":{"kind":"number","nodeType":"YulLiteral","src":"908:4:92","type":"","value":"0x20"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"902:2:92","type":""}]},{"nodeType":"YulAssignment","src":"925:19:92","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"936:3:92"},{"name":"_1","nodeType":"YulIdentifier","src":"941:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"932:3:92"},"nodeType":"YulFunctionCall","src":"932:12:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"925:3:92"}]},{"nodeType":"YulAssignment","src":"957:25:92","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"971:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"979:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"967:3:92"},"nodeType":"YulFunctionCall","src":"967:15:92"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"957:6:92"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"798:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"801:4:92","type":"","value":"0x03"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"795:2:92"},"nodeType":"YulFunctionCall","src":"795:11:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"807:18:92","statements":[{"nodeType":"YulAssignment","src":"809:14:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"818:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"821:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"814:3:92"},"nodeType":"YulFunctionCall","src":"814:9:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"809:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"791:3:92","statements":[]},"src":"787:205:92"}]},"name":"abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"609:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"620:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"631:4:92","type":""}],"src":"497:501:92"},{"body":{"nodeType":"YulBlock","src":"1048:109:92","statements":[{"body":{"nodeType":"YulBlock","src":"1135:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1144:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1147:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1137:6:92"},"nodeType":"YulFunctionCall","src":"1137:12:92"},"nodeType":"YulExpressionStatement","src":"1137:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1071:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1082:5:92"},{"kind":"number","nodeType":"YulLiteral","src":"1089:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1078:3:92"},"nodeType":"YulFunctionCall","src":"1078:54:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1068:2:92"},"nodeType":"YulFunctionCall","src":"1068:65:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1061:6:92"},"nodeType":"YulFunctionCall","src":"1061:73:92"},"nodeType":"YulIf","src":"1058:93:92"}]},"name":"validator_revert_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1037:5:92","type":""}],"src":"1003:154:92"},{"body":{"nodeType":"YulBlock","src":"1232:177:92","statements":[{"body":{"nodeType":"YulBlock","src":"1278:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1287:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1290:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1280:6:92"},"nodeType":"YulFunctionCall","src":"1280:12:92"},"nodeType":"YulExpressionStatement","src":"1280:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1253:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"1262:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1249:3:92"},"nodeType":"YulFunctionCall","src":"1249:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"1274:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1245:3:92"},"nodeType":"YulFunctionCall","src":"1245:32:92"},"nodeType":"YulIf","src":"1242:52:92"},{"nodeType":"YulVariableDeclaration","src":"1303:36:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1329:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1316:12:92"},"nodeType":"YulFunctionCall","src":"1316:23:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"1307:5:92","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1373:5:92"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"1348:24:92"},"nodeType":"YulFunctionCall","src":"1348:31:92"},"nodeType":"YulExpressionStatement","src":"1348:31:92"},{"nodeType":"YulAssignment","src":"1388:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"1398:5:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1388:6:92"}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1198:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1209:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1221:6:92","type":""}],"src":"1162:247:92"},{"body":{"nodeType":"YulBlock","src":"1529:125:92","statements":[{"nodeType":"YulAssignment","src":"1539:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1551:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1562:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1547:3:92"},"nodeType":"YulFunctionCall","src":"1547:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1539:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1581:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1596:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"1604:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1592:3:92"},"nodeType":"YulFunctionCall","src":"1592:55:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1574:6:92"},"nodeType":"YulFunctionCall","src":"1574:74:92"},"nodeType":"YulExpressionStatement","src":"1574:74:92"}]},"name":"abi_encode_tuple_t_contract$_IDAO_$10865__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1498:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1509:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1520:4:92","type":""}],"src":"1414:240:92"},{"body":{"nodeType":"YulBlock","src":"1774:229:92","statements":[{"nodeType":"YulAssignment","src":"1784:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1796:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1807:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1792:3:92"},"nodeType":"YulFunctionCall","src":"1792:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1784:4:92"}]},{"body":{"nodeType":"YulBlock","src":"1852:111:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1873:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1880:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"1885:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1876:3:92"},"nodeType":"YulFunctionCall","src":"1876:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1866:6:92"},"nodeType":"YulFunctionCall","src":"1866:31:92"},"nodeType":"YulExpressionStatement","src":"1866:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1917:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"1920:4:92","type":"","value":"0x21"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1910:6:92"},"nodeType":"YulFunctionCall","src":"1910:15:92"},"nodeType":"YulExpressionStatement","src":"1910:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1945:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1948:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1938:6:92"},"nodeType":"YulFunctionCall","src":"1938:15:92"},"nodeType":"YulExpressionStatement","src":"1938:15:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1832:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"1840:1:92","type":"","value":"3"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"1829:2:92"},"nodeType":"YulFunctionCall","src":"1829:13:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1822:6:92"},"nodeType":"YulFunctionCall","src":"1822:21:92"},"nodeType":"YulIf","src":"1819:144:92"},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1979:9:92"},{"name":"value0","nodeType":"YulIdentifier","src":"1990:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1972:6:92"},"nodeType":"YulFunctionCall","src":"1972:25:92"},"nodeType":"YulExpressionStatement","src":"1972:25:92"}]},"name":"abi_encode_tuple_t_enum$_PluginType_$13330__to_t_uint8__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1743:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1754:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1765:4:92","type":""}],"src":"1659:344:92"},{"body":{"nodeType":"YulBlock","src":"2040:95:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2057:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2064:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"2069:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2060:3:92"},"nodeType":"YulFunctionCall","src":"2060:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2050:6:92"},"nodeType":"YulFunctionCall","src":"2050:31:92"},"nodeType":"YulExpressionStatement","src":"2050:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2097:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"2100:4:92","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2090:6:92"},"nodeType":"YulFunctionCall","src":"2090:15:92"},"nodeType":"YulExpressionStatement","src":"2090:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2121:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2124:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2114:6:92"},"nodeType":"YulFunctionCall","src":"2114:15:92"},"nodeType":"YulExpressionStatement","src":"2114:15:92"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"2008:127:92"},{"body":{"nodeType":"YulBlock","src":"2236:960:92","statements":[{"body":{"nodeType":"YulBlock","src":"2282:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2291:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2294:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2284:6:92"},"nodeType":"YulFunctionCall","src":"2284:12:92"},"nodeType":"YulExpressionStatement","src":"2284:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2257:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"2266:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2253:3:92"},"nodeType":"YulFunctionCall","src":"2253:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"2278:2:92","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2249:3:92"},"nodeType":"YulFunctionCall","src":"2249:32:92"},"nodeType":"YulIf","src":"2246:52:92"},{"nodeType":"YulVariableDeclaration","src":"2307:36:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2333:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2320:12:92"},"nodeType":"YulFunctionCall","src":"2320:23:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"2311:5:92","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2377:5:92"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"2352:24:92"},"nodeType":"YulFunctionCall","src":"2352:31:92"},"nodeType":"YulExpressionStatement","src":"2352:31:92"},{"nodeType":"YulAssignment","src":"2392:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"2402:5:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2392:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"2416:46:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2447:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2458:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2443:3:92"},"nodeType":"YulFunctionCall","src":"2443:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2430:12:92"},"nodeType":"YulFunctionCall","src":"2430:32:92"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"2420:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2471:28:92","value":{"kind":"number","nodeType":"YulLiteral","src":"2481:18:92","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"2475:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"2526:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2535:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2538:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2528:6:92"},"nodeType":"YulFunctionCall","src":"2528:12:92"},"nodeType":"YulExpressionStatement","src":"2528:12:92"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"2514:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"2522:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2511:2:92"},"nodeType":"YulFunctionCall","src":"2511:14:92"},"nodeType":"YulIf","src":"2508:34:92"},{"nodeType":"YulVariableDeclaration","src":"2551:32:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2565:9:92"},{"name":"offset","nodeType":"YulIdentifier","src":"2576:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2561:3:92"},"nodeType":"YulFunctionCall","src":"2561:22:92"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"2555:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"2631:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2640:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2643:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2633:6:92"},"nodeType":"YulFunctionCall","src":"2633:12:92"},"nodeType":"YulExpressionStatement","src":"2633:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"2610:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"2614:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2606:3:92"},"nodeType":"YulFunctionCall","src":"2606:13:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2621:7:92"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2602:3:92"},"nodeType":"YulFunctionCall","src":"2602:27:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2595:6:92"},"nodeType":"YulFunctionCall","src":"2595:35:92"},"nodeType":"YulIf","src":"2592:55:92"},{"nodeType":"YulVariableDeclaration","src":"2656:26:92","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"2679:2:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2666:12:92"},"nodeType":"YulFunctionCall","src":"2666:16:92"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"2660:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"2705:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"2707:16:92"},"nodeType":"YulFunctionCall","src":"2707:18:92"},"nodeType":"YulExpressionStatement","src":"2707:18:92"}]},"condition":{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"2697:2:92"},{"name":"_1","nodeType":"YulIdentifier","src":"2701:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2694:2:92"},"nodeType":"YulFunctionCall","src":"2694:10:92"},"nodeType":"YulIf","src":"2691:36:92"},{"nodeType":"YulVariableDeclaration","src":"2736:17:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2750:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"2746:3:92"},"nodeType":"YulFunctionCall","src":"2746:7:92"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"2740:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2762:23:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2782:2:92","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2776:5:92"},"nodeType":"YulFunctionCall","src":"2776:9:92"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"2766:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2794:71:92","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"2816:6:92"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"2840:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"2844:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2836:3:92"},"nodeType":"YulFunctionCall","src":"2836:13:92"},{"name":"_4","nodeType":"YulIdentifier","src":"2851:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2832:3:92"},"nodeType":"YulFunctionCall","src":"2832:22:92"},{"kind":"number","nodeType":"YulLiteral","src":"2856:2:92","type":"","value":"63"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2828:3:92"},"nodeType":"YulFunctionCall","src":"2828:31:92"},{"name":"_4","nodeType":"YulIdentifier","src":"2861:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2824:3:92"},"nodeType":"YulFunctionCall","src":"2824:40:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2812:3:92"},"nodeType":"YulFunctionCall","src":"2812:53:92"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"2798:10:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"2924:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"2926:16:92"},"nodeType":"YulFunctionCall","src":"2926:18:92"},"nodeType":"YulExpressionStatement","src":"2926:18:92"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"2883:10:92"},{"name":"_1","nodeType":"YulIdentifier","src":"2895:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2880:2:92"},"nodeType":"YulFunctionCall","src":"2880:18:92"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"2903:10:92"},{"name":"memPtr","nodeType":"YulIdentifier","src":"2915:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2900:2:92"},"nodeType":"YulFunctionCall","src":"2900:22:92"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"2877:2:92"},"nodeType":"YulFunctionCall","src":"2877:46:92"},"nodeType":"YulIf","src":"2874:72:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2962:2:92","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"2966:10:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2955:6:92"},"nodeType":"YulFunctionCall","src":"2955:22:92"},"nodeType":"YulExpressionStatement","src":"2955:22:92"},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"2993:6:92"},{"name":"_3","nodeType":"YulIdentifier","src":"3001:2:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2986:6:92"},"nodeType":"YulFunctionCall","src":"2986:18:92"},"nodeType":"YulExpressionStatement","src":"2986:18:92"},{"body":{"nodeType":"YulBlock","src":"3050:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3059:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3062:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3052:6:92"},"nodeType":"YulFunctionCall","src":"3052:12:92"},"nodeType":"YulExpressionStatement","src":"3052:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"3027:2:92"},{"name":"_3","nodeType":"YulIdentifier","src":"3031:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3023:3:92"},"nodeType":"YulFunctionCall","src":"3023:11:92"},{"kind":"number","nodeType":"YulLiteral","src":"3036:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3019:3:92"},"nodeType":"YulFunctionCall","src":"3019:20:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3041:7:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3016:2:92"},"nodeType":"YulFunctionCall","src":"3016:33:92"},"nodeType":"YulIf","src":"3013:53:92"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"3092:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"3100:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3088:3:92"},"nodeType":"YulFunctionCall","src":"3088:15:92"},{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"3109:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"3113:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3105:3:92"},"nodeType":"YulFunctionCall","src":"3105:11:92"},{"name":"_3","nodeType":"YulIdentifier","src":"3118:2:92"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"3075:12:92"},"nodeType":"YulFunctionCall","src":"3075:46:92"},"nodeType":"YulExpressionStatement","src":"3075:46:92"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"3145:6:92"},{"name":"_3","nodeType":"YulIdentifier","src":"3153:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3141:3:92"},"nodeType":"YulFunctionCall","src":"3141:15:92"},{"kind":"number","nodeType":"YulLiteral","src":"3158:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3137:3:92"},"nodeType":"YulFunctionCall","src":"3137:24:92"},{"kind":"number","nodeType":"YulLiteral","src":"3163:1:92","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3130:6:92"},"nodeType":"YulFunctionCall","src":"3130:35:92"},"nodeType":"YulExpressionStatement","src":"3130:35:92"},{"nodeType":"YulAssignment","src":"3174:16:92","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"3184:6:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"3174:6:92"}]}]},"name":"abi_decode_tuple_t_addresst_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2194:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2205:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2217:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2225:6:92","type":""}],"src":"2140:1056:92"},{"body":{"nodeType":"YulBlock","src":"3302:76:92","statements":[{"nodeType":"YulAssignment","src":"3312:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3324:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3335:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3320:3:92"},"nodeType":"YulFunctionCall","src":"3320:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3312:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3354:9:92"},{"name":"value0","nodeType":"YulIdentifier","src":"3365:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3347:6:92"},"nodeType":"YulFunctionCall","src":"3347:25:92"},"nodeType":"YulExpressionStatement","src":"3347:25:92"}]},"name":"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3271:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3282:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3293:4:92","type":""}],"src":"3201:177:92"},{"body":{"nodeType":"YulBlock","src":"3484:125:92","statements":[{"nodeType":"YulAssignment","src":"3494:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3506:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3517:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3502:3:92"},"nodeType":"YulFunctionCall","src":"3502:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3494:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3536:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3551:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"3559:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3547:3:92"},"nodeType":"YulFunctionCall","src":"3547:55:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3529:6:92"},"nodeType":"YulFunctionCall","src":"3529:74:92"},"nodeType":"YulExpressionStatement","src":"3529:74:92"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3453:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3464:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3475:4:92","type":""}],"src":"3383:226:92"},{"body":{"nodeType":"YulBlock","src":"3715:76:92","statements":[{"nodeType":"YulAssignment","src":"3725:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3737:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3748:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3733:3:92"},"nodeType":"YulFunctionCall","src":"3733:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3725:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3767:9:92"},{"name":"value0","nodeType":"YulIdentifier","src":"3778:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3760:6:92"},"nodeType":"YulFunctionCall","src":"3760:25:92"},"nodeType":"YulExpressionStatement","src":"3760:25:92"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3684:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3695:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3706:4:92","type":""}],"src":"3614:177:92"},{"body":{"nodeType":"YulBlock","src":"3880:177:92","statements":[{"body":{"nodeType":"YulBlock","src":"3926:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3935:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3938:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3928:6:92"},"nodeType":"YulFunctionCall","src":"3928:12:92"},"nodeType":"YulExpressionStatement","src":"3928:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3901:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"3910:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3897:3:92"},"nodeType":"YulFunctionCall","src":"3897:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"3922:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3893:3:92"},"nodeType":"YulFunctionCall","src":"3893:32:92"},"nodeType":"YulIf","src":"3890:52:92"},{"nodeType":"YulVariableDeclaration","src":"3951:36:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3977:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3964:12:92"},"nodeType":"YulFunctionCall","src":"3964:23:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"3955:5:92","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4021:5:92"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"3996:24:92"},"nodeType":"YulFunctionCall","src":"3996:31:92"},"nodeType":"YulExpressionStatement","src":"3996:31:92"},{"nodeType":"YulAssignment","src":"4036:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"4046:5:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"4036:6:92"}]}]},"name":"abi_decode_tuple_t_contract$_IDAO_$10865","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3846:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3857:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3869:6:92","type":""}],"src":"3796:261:92"},{"body":{"nodeType":"YulBlock","src":"4236:234:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4253:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4264:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4246:6:92"},"nodeType":"YulFunctionCall","src":"4246:21:92"},"nodeType":"YulExpressionStatement","src":"4246:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4287:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4298:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4283:3:92"},"nodeType":"YulFunctionCall","src":"4283:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"4303:2:92","type":"","value":"44"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4276:6:92"},"nodeType":"YulFunctionCall","src":"4276:30:92"},"nodeType":"YulExpressionStatement","src":"4276:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4326:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4337:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4322:3:92"},"nodeType":"YulFunctionCall","src":"4322:18:92"},{"hexValue":"46756e6374696f6e206d7573742062652063616c6c6564207468726f75676820","kind":"string","nodeType":"YulLiteral","src":"4342:34:92","type":"","value":"Function must be called through "}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4315:6:92"},"nodeType":"YulFunctionCall","src":"4315:62:92"},"nodeType":"YulExpressionStatement","src":"4315:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4397:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4408:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4393:3:92"},"nodeType":"YulFunctionCall","src":"4393:18:92"},{"hexValue":"64656c656761746563616c6c","kind":"string","nodeType":"YulLiteral","src":"4413:14:92","type":"","value":"delegatecall"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4386:6:92"},"nodeType":"YulFunctionCall","src":"4386:42:92"},"nodeType":"YulExpressionStatement","src":"4386:42:92"},{"nodeType":"YulAssignment","src":"4437:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4449:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4460:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4445:3:92"},"nodeType":"YulFunctionCall","src":"4445:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4437:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_36e108fa7a809b52ab1951dd91c117a7bc9ac5250bdf1aa162d4e104f7edf9eb__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4213:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4227:4:92","type":""}],"src":"4062:408:92"},{"body":{"nodeType":"YulBlock","src":"4649:234:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4666:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4677:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4659:6:92"},"nodeType":"YulFunctionCall","src":"4659:21:92"},"nodeType":"YulExpressionStatement","src":"4659:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4700:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4711:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4696:3:92"},"nodeType":"YulFunctionCall","src":"4696:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"4716:2:92","type":"","value":"44"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4689:6:92"},"nodeType":"YulFunctionCall","src":"4689:30:92"},"nodeType":"YulExpressionStatement","src":"4689:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4739:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4750:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4735:3:92"},"nodeType":"YulFunctionCall","src":"4735:18:92"},{"hexValue":"46756e6374696f6e206d7573742062652063616c6c6564207468726f75676820","kind":"string","nodeType":"YulLiteral","src":"4755:34:92","type":"","value":"Function must be called through "}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4728:6:92"},"nodeType":"YulFunctionCall","src":"4728:62:92"},"nodeType":"YulExpressionStatement","src":"4728:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4810:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4821:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4806:3:92"},"nodeType":"YulFunctionCall","src":"4806:18:92"},{"hexValue":"6163746976652070726f7879","kind":"string","nodeType":"YulLiteral","src":"4826:14:92","type":"","value":"active proxy"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4799:6:92"},"nodeType":"YulFunctionCall","src":"4799:42:92"},"nodeType":"YulExpressionStatement","src":"4799:42:92"},{"nodeType":"YulAssignment","src":"4850:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4862:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4873:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4858:3:92"},"nodeType":"YulFunctionCall","src":"4858:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4850:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_52f1ead4d9653e13afbd2e90ef2587c30187cd50b2e97d784e3f7a7541247434__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4626:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4640:4:92","type":""}],"src":"4475:408:92"},{"body":{"nodeType":"YulBlock","src":"5062:246:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5079:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5090:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5072:6:92"},"nodeType":"YulFunctionCall","src":"5072:21:92"},"nodeType":"YulExpressionStatement","src":"5072:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5113:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5124:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5109:3:92"},"nodeType":"YulFunctionCall","src":"5109:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"5129:2:92","type":"","value":"56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5102:6:92"},"nodeType":"YulFunctionCall","src":"5102:30:92"},"nodeType":"YulExpressionStatement","src":"5102:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5152:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5163:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5148:3:92"},"nodeType":"YulFunctionCall","src":"5148:18:92"},{"hexValue":"555550535570677261646561626c653a206d757374206e6f742062652063616c","kind":"string","nodeType":"YulLiteral","src":"5168:34:92","type":"","value":"UUPSUpgradeable: must not be cal"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5141:6:92"},"nodeType":"YulFunctionCall","src":"5141:62:92"},"nodeType":"YulExpressionStatement","src":"5141:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5223:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5234:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5219:3:92"},"nodeType":"YulFunctionCall","src":"5219:18:92"},{"hexValue":"6c6564207468726f7567682064656c656761746563616c6c","kind":"string","nodeType":"YulLiteral","src":"5239:26:92","type":"","value":"led through delegatecall"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5212:6:92"},"nodeType":"YulFunctionCall","src":"5212:54:92"},"nodeType":"YulExpressionStatement","src":"5212:54:92"},{"nodeType":"YulAssignment","src":"5275:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5287:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5298:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5283:3:92"},"nodeType":"YulFunctionCall","src":"5283:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5275:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_67f0151b4ad1dcfa0e3302a0cd6019f51582ef1807b37dceb00bd852a514f7f4__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5039:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5053:4:92","type":""}],"src":"4888:420:92"},{"body":{"nodeType":"YulBlock","src":"5487:236:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5504:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5515:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5497:6:92"},"nodeType":"YulFunctionCall","src":"5497:21:92"},"nodeType":"YulExpressionStatement","src":"5497:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5538:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5549:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5534:3:92"},"nodeType":"YulFunctionCall","src":"5534:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"5554:2:92","type":"","value":"46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5527:6:92"},"nodeType":"YulFunctionCall","src":"5527:30:92"},"nodeType":"YulExpressionStatement","src":"5527:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5577:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5588:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5573:3:92"},"nodeType":"YulFunctionCall","src":"5573:18:92"},{"hexValue":"496e697469616c697a61626c653a20636f6e747261637420697320616c726561","kind":"string","nodeType":"YulLiteral","src":"5593:34:92","type":"","value":"Initializable: contract is alrea"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5566:6:92"},"nodeType":"YulFunctionCall","src":"5566:62:92"},"nodeType":"YulExpressionStatement","src":"5566:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5648:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5659:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5644:3:92"},"nodeType":"YulFunctionCall","src":"5644:18:92"},{"hexValue":"647920696e697469616c697a6564","kind":"string","nodeType":"YulLiteral","src":"5664:16:92","type":"","value":"dy initialized"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5637:6:92"},"nodeType":"YulFunctionCall","src":"5637:44:92"},"nodeType":"YulExpressionStatement","src":"5637:44:92"},{"nodeType":"YulAssignment","src":"5690:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5702:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5713:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5698:3:92"},"nodeType":"YulFunctionCall","src":"5698:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5690:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5464:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5478:4:92","type":""}],"src":"5313:410:92"},{"body":{"nodeType":"YulBlock","src":"5835:87:92","statements":[{"nodeType":"YulAssignment","src":"5845:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5857:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5868:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5853:3:92"},"nodeType":"YulFunctionCall","src":"5853:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5845:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5887:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5902:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"5910:4:92","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5898:3:92"},"nodeType":"YulFunctionCall","src":"5898:17:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5880:6:92"},"nodeType":"YulFunctionCall","src":"5880:36:92"},"nodeType":"YulExpressionStatement","src":"5880:36:92"}]},"name":"abi_encode_tuple_t_rational_1_by_1__to_t_uint8__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5804:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"5815:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5826:4:92","type":""}],"src":"5728:194:92"},{"body":{"nodeType":"YulBlock","src":"6008:103:92","statements":[{"body":{"nodeType":"YulBlock","src":"6054:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6063:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6066:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6056:6:92"},"nodeType":"YulFunctionCall","src":"6056:12:92"},"nodeType":"YulExpressionStatement","src":"6056:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"6029:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"6038:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6025:3:92"},"nodeType":"YulFunctionCall","src":"6025:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"6050:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6021:3:92"},"nodeType":"YulFunctionCall","src":"6021:32:92"},"nodeType":"YulIf","src":"6018:52:92"},{"nodeType":"YulAssignment","src":"6079:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6095:9:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6089:5:92"},"nodeType":"YulFunctionCall","src":"6089:16:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"6079:6:92"}]}]},"name":"abi_decode_tuple_t_bytes32_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5974:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"5985:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"5997:6:92","type":""}],"src":"5927:184:92"},{"body":{"nodeType":"YulBlock","src":"6290:236:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6307:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6318:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6300:6:92"},"nodeType":"YulFunctionCall","src":"6300:21:92"},"nodeType":"YulExpressionStatement","src":"6300:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6341:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6352:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6337:3:92"},"nodeType":"YulFunctionCall","src":"6337:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"6357:2:92","type":"","value":"46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6330:6:92"},"nodeType":"YulFunctionCall","src":"6330:30:92"},"nodeType":"YulExpressionStatement","src":"6330:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6380:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6391:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6376:3:92"},"nodeType":"YulFunctionCall","src":"6376:18:92"},{"hexValue":"45524331393637557067726164653a206e657720696d706c656d656e74617469","kind":"string","nodeType":"YulLiteral","src":"6396:34:92","type":"","value":"ERC1967Upgrade: new implementati"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6369:6:92"},"nodeType":"YulFunctionCall","src":"6369:62:92"},"nodeType":"YulExpressionStatement","src":"6369:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6451:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6462:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6447:3:92"},"nodeType":"YulFunctionCall","src":"6447:18:92"},{"hexValue":"6f6e206973206e6f742055555053","kind":"string","nodeType":"YulLiteral","src":"6467:16:92","type":"","value":"on is not UUPS"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6440:6:92"},"nodeType":"YulFunctionCall","src":"6440:44:92"},"nodeType":"YulExpressionStatement","src":"6440:44:92"},{"nodeType":"YulAssignment","src":"6493:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6505:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6516:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6501:3:92"},"nodeType":"YulFunctionCall","src":"6501:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6493:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_8e8e2fbcb586f700b5b14e2c4a650c8d83b9773c31c5fe8962070ea544e11f24__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6267:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6281:4:92","type":""}],"src":"6116:410:92"},{"body":{"nodeType":"YulBlock","src":"6705:231:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6722:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6733:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6715:6:92"},"nodeType":"YulFunctionCall","src":"6715:21:92"},"nodeType":"YulExpressionStatement","src":"6715:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6756:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6767:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6752:3:92"},"nodeType":"YulFunctionCall","src":"6752:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"6772:2:92","type":"","value":"41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6745:6:92"},"nodeType":"YulFunctionCall","src":"6745:30:92"},"nodeType":"YulExpressionStatement","src":"6745:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6795:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6806:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6791:3:92"},"nodeType":"YulFunctionCall","src":"6791:18:92"},{"hexValue":"45524331393637557067726164653a20756e737570706f727465642070726f78","kind":"string","nodeType":"YulLiteral","src":"6811:34:92","type":"","value":"ERC1967Upgrade: unsupported prox"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6784:6:92"},"nodeType":"YulFunctionCall","src":"6784:62:92"},"nodeType":"YulExpressionStatement","src":"6784:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6866:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6877:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6862:3:92"},"nodeType":"YulFunctionCall","src":"6862:18:92"},{"hexValue":"6961626c6555554944","kind":"string","nodeType":"YulLiteral","src":"6882:11:92","type":"","value":"iableUUID"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6855:6:92"},"nodeType":"YulFunctionCall","src":"6855:39:92"},"nodeType":"YulExpressionStatement","src":"6855:39:92"},{"nodeType":"YulAssignment","src":"6903:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6915:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6926:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6911:3:92"},"nodeType":"YulFunctionCall","src":"6911:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6903:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_76b6b6debfc5febf101145a79ecf0b0d2e89e397dfdab2bca99888370411152c__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6682:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6696:4:92","type":""}],"src":"6531:405:92"},{"body":{"nodeType":"YulBlock","src":"7115:233:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7132:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7143:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7125:6:92"},"nodeType":"YulFunctionCall","src":"7125:21:92"},"nodeType":"YulExpressionStatement","src":"7125:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7166:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7177:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7162:3:92"},"nodeType":"YulFunctionCall","src":"7162:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"7182:2:92","type":"","value":"43"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7155:6:92"},"nodeType":"YulFunctionCall","src":"7155:30:92"},"nodeType":"YulExpressionStatement","src":"7155:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7205:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7216:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7201:3:92"},"nodeType":"YulFunctionCall","src":"7201:18:92"},{"hexValue":"496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069","kind":"string","nodeType":"YulLiteral","src":"7221:34:92","type":"","value":"Initializable: contract is not i"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7194:6:92"},"nodeType":"YulFunctionCall","src":"7194:62:92"},"nodeType":"YulExpressionStatement","src":"7194:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7276:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7287:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7272:3:92"},"nodeType":"YulFunctionCall","src":"7272:18:92"},{"hexValue":"6e697469616c697a696e67","kind":"string","nodeType":"YulLiteral","src":"7292:13:92","type":"","value":"nitializing"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7265:6:92"},"nodeType":"YulFunctionCall","src":"7265:41:92"},"nodeType":"YulExpressionStatement","src":"7265:41:92"},{"nodeType":"YulAssignment","src":"7315:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7327:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7338:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7323:3:92"},"nodeType":"YulFunctionCall","src":"7323:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7315:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7092:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7106:4:92","type":""}],"src":"6941:407:92"},{"body":{"nodeType":"YulBlock","src":"7566:472:92","statements":[{"nodeType":"YulVariableDeclaration","src":"7576:52:92","value":{"kind":"number","nodeType":"YulLiteral","src":"7586:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"7580:2:92","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7644:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7659:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"7667:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7655:3:92"},"nodeType":"YulFunctionCall","src":"7655:15:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7637:6:92"},"nodeType":"YulFunctionCall","src":"7637:34:92"},"nodeType":"YulExpressionStatement","src":"7637:34:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7691:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7702:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7687:3:92"},"nodeType":"YulFunctionCall","src":"7687:18:92"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"7711:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"7719:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7707:3:92"},"nodeType":"YulFunctionCall","src":"7707:15:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7680:6:92"},"nodeType":"YulFunctionCall","src":"7680:43:92"},"nodeType":"YulExpressionStatement","src":"7680:43:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7743:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7754:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7739:3:92"},"nodeType":"YulFunctionCall","src":"7739:18:92"},{"name":"value2","nodeType":"YulIdentifier","src":"7759:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7732:6:92"},"nodeType":"YulFunctionCall","src":"7732:34:92"},"nodeType":"YulExpressionStatement","src":"7732:34:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7786:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7797:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7782:3:92"},"nodeType":"YulFunctionCall","src":"7782:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"7802:3:92","type":"","value":"128"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7775:6:92"},"nodeType":"YulFunctionCall","src":"7775:31:92"},"nodeType":"YulExpressionStatement","src":"7775:31:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7826:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7837:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7822:3:92"},"nodeType":"YulFunctionCall","src":"7822:19:92"},{"name":"value4","nodeType":"YulIdentifier","src":"7843:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7815:6:92"},"nodeType":"YulFunctionCall","src":"7815:35:92"},"nodeType":"YulExpressionStatement","src":"7815:35:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7876:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7887:3:92","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7872:3:92"},"nodeType":"YulFunctionCall","src":"7872:19:92"},{"name":"value3","nodeType":"YulIdentifier","src":"7893:6:92"},{"name":"value4","nodeType":"YulIdentifier","src":"7901:6:92"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"7859:12:92"},"nodeType":"YulFunctionCall","src":"7859:49:92"},"nodeType":"YulExpressionStatement","src":"7859:49:92"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7932:9:92"},{"name":"value4","nodeType":"YulIdentifier","src":"7943:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7928:3:92"},"nodeType":"YulFunctionCall","src":"7928:22:92"},{"kind":"number","nodeType":"YulLiteral","src":"7952:3:92","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7924:3:92"},"nodeType":"YulFunctionCall","src":"7924:32:92"},{"kind":"number","nodeType":"YulLiteral","src":"7958:1:92","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7917:6:92"},"nodeType":"YulFunctionCall","src":"7917:43:92"},"nodeType":"YulExpressionStatement","src":"7917:43:92"},{"nodeType":"YulAssignment","src":"7969:63:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7985:9:92"},{"arguments":[{"arguments":[{"name":"value4","nodeType":"YulIdentifier","src":"8004:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"8012:2:92","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8000:3:92"},"nodeType":"YulFunctionCall","src":"8000:15:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8021:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"8017:3:92"},"nodeType":"YulFunctionCall","src":"8017:7:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7996:3:92"},"nodeType":"YulFunctionCall","src":"7996:29:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7981:3:92"},"nodeType":"YulFunctionCall","src":"7981:45:92"},{"kind":"number","nodeType":"YulLiteral","src":"8028:3:92","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7977:3:92"},"nodeType":"YulFunctionCall","src":"7977:55:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7969:4:92"}]}]},"name":"abi_encode_tuple_t_address_t_address_t_bytes32_t_bytes_calldata_ptr__to_t_address_t_address_t_bytes32_t_bytes_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7503:9:92","type":""},{"name":"value4","nodeType":"YulTypedName","src":"7514:6:92","type":""},{"name":"value3","nodeType":"YulTypedName","src":"7522:6:92","type":""},{"name":"value2","nodeType":"YulTypedName","src":"7530:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"7538:6:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"7546:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7557:4:92","type":""}],"src":"7353:685:92"},{"body":{"nodeType":"YulBlock","src":"8121:199:92","statements":[{"body":{"nodeType":"YulBlock","src":"8167:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8176:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8179:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8169:6:92"},"nodeType":"YulFunctionCall","src":"8169:12:92"},"nodeType":"YulExpressionStatement","src":"8169:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"8142:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"8151:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"8138:3:92"},"nodeType":"YulFunctionCall","src":"8138:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"8163:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"8134:3:92"},"nodeType":"YulFunctionCall","src":"8134:32:92"},"nodeType":"YulIf","src":"8131:52:92"},{"nodeType":"YulVariableDeclaration","src":"8192:29:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8211:9:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"8205:5:92"},"nodeType":"YulFunctionCall","src":"8205:16:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"8196:5:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"8274:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8283:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8286:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8276:6:92"},"nodeType":"YulFunctionCall","src":"8276:12:92"},"nodeType":"YulExpressionStatement","src":"8276:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8243:5:92"},{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8264:5:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"8257:6:92"},"nodeType":"YulFunctionCall","src":"8257:13:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"8250:6:92"},"nodeType":"YulFunctionCall","src":"8250:21:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"8240:2:92"},"nodeType":"YulFunctionCall","src":"8240:32:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"8233:6:92"},"nodeType":"YulFunctionCall","src":"8233:40:92"},"nodeType":"YulIf","src":"8230:60:92"},{"nodeType":"YulAssignment","src":"8299:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"8309:5:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"8299:6:92"}]}]},"name":"abi_decode_tuple_t_bool_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8087:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"8098:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"8110:6:92","type":""}],"src":"8043:277:92"},{"body":{"nodeType":"YulBlock","src":"8510:294:92","statements":[{"nodeType":"YulAssignment","src":"8520:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8532:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8543:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8528:3:92"},"nodeType":"YulFunctionCall","src":"8528:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"8520:4:92"}]},{"nodeType":"YulVariableDeclaration","src":"8556:52:92","value":{"kind":"number","nodeType":"YulLiteral","src":"8566:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"8560:2:92","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8624:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"8639:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"8647:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8635:3:92"},"nodeType":"YulFunctionCall","src":"8635:15:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8617:6:92"},"nodeType":"YulFunctionCall","src":"8617:34:92"},"nodeType":"YulExpressionStatement","src":"8617:34:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8671:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8682:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8667:3:92"},"nodeType":"YulFunctionCall","src":"8667:18:92"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"8691:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"8699:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8687:3:92"},"nodeType":"YulFunctionCall","src":"8687:15:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8660:6:92"},"nodeType":"YulFunctionCall","src":"8660:43:92"},"nodeType":"YulExpressionStatement","src":"8660:43:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8723:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8734:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8719:3:92"},"nodeType":"YulFunctionCall","src":"8719:18:92"},{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"8743:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"8751:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8739:3:92"},"nodeType":"YulFunctionCall","src":"8739:15:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8712:6:92"},"nodeType":"YulFunctionCall","src":"8712:43:92"},"nodeType":"YulExpressionStatement","src":"8712:43:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8775:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8786:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8771:3:92"},"nodeType":"YulFunctionCall","src":"8771:18:92"},{"name":"value3","nodeType":"YulIdentifier","src":"8791:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8764:6:92"},"nodeType":"YulFunctionCall","src":"8764:34:92"},"nodeType":"YulExpressionStatement","src":"8764:34:92"}]},"name":"abi_encode_tuple_t_address_t_address_t_address_t_bytes32__to_t_address_t_address_t_address_t_bytes32__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8455:9:92","type":""},{"name":"value3","nodeType":"YulTypedName","src":"8466:6:92","type":""},{"name":"value2","nodeType":"YulTypedName","src":"8474:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"8482:6:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"8490:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"8501:4:92","type":""}],"src":"8325:479:92"},{"body":{"nodeType":"YulBlock","src":"8983:235:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9000:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9011:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8993:6:92"},"nodeType":"YulFunctionCall","src":"8993:21:92"},"nodeType":"YulExpressionStatement","src":"8993:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9034:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9045:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9030:3:92"},"nodeType":"YulFunctionCall","src":"9030:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"9050:2:92","type":"","value":"45"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9023:6:92"},"nodeType":"YulFunctionCall","src":"9023:30:92"},"nodeType":"YulExpressionStatement","src":"9023:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9073:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9084:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9069:3:92"},"nodeType":"YulFunctionCall","src":"9069:18:92"},{"hexValue":"455243313936373a206e657720696d706c656d656e746174696f6e206973206e","kind":"string","nodeType":"YulLiteral","src":"9089:34:92","type":"","value":"ERC1967: new implementation is n"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9062:6:92"},"nodeType":"YulFunctionCall","src":"9062:62:92"},"nodeType":"YulExpressionStatement","src":"9062:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9144:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9155:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9140:3:92"},"nodeType":"YulFunctionCall","src":"9140:18:92"},{"hexValue":"6f74206120636f6e7472616374","kind":"string","nodeType":"YulLiteral","src":"9160:15:92","type":"","value":"ot a contract"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9133:6:92"},"nodeType":"YulFunctionCall","src":"9133:43:92"},"nodeType":"YulExpressionStatement","src":"9133:43:92"},{"nodeType":"YulAssignment","src":"9185:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9197:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9208:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9193:3:92"},"nodeType":"YulFunctionCall","src":"9193:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"9185:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8960:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"8974:4:92","type":""}],"src":"8809:409:92"},{"body":{"nodeType":"YulBlock","src":"9289:184:92","statements":[{"nodeType":"YulVariableDeclaration","src":"9299:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"9308:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"9303:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"9368:63:92","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"9393:3:92"},{"name":"i","nodeType":"YulIdentifier","src":"9398:1:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9389:3:92"},"nodeType":"YulFunctionCall","src":"9389:11:92"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"9412:3:92"},{"name":"i","nodeType":"YulIdentifier","src":"9417:1:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9408:3:92"},"nodeType":"YulFunctionCall","src":"9408:11:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"9402:5:92"},"nodeType":"YulFunctionCall","src":"9402:18:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9382:6:92"},"nodeType":"YulFunctionCall","src":"9382:39:92"},"nodeType":"YulExpressionStatement","src":"9382:39:92"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"9329:1:92"},{"name":"length","nodeType":"YulIdentifier","src":"9332:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"9326:2:92"},"nodeType":"YulFunctionCall","src":"9326:13:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"9340:19:92","statements":[{"nodeType":"YulAssignment","src":"9342:15:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"9351:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"9354:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9347:3:92"},"nodeType":"YulFunctionCall","src":"9347:10:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"9342:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"9322:3:92","statements":[]},"src":"9318:113:92"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"9451:3:92"},{"name":"length","nodeType":"YulIdentifier","src":"9456:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9447:3:92"},"nodeType":"YulFunctionCall","src":"9447:16:92"},{"kind":"number","nodeType":"YulLiteral","src":"9465:1:92","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9440:6:92"},"nodeType":"YulFunctionCall","src":"9440:27:92"},"nodeType":"YulExpressionStatement","src":"9440:27:92"}]},"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"9267:3:92","type":""},{"name":"dst","nodeType":"YulTypedName","src":"9272:3:92","type":""},{"name":"length","nodeType":"YulTypedName","src":"9277:6:92","type":""}],"src":"9223:250:92"},{"body":{"nodeType":"YulBlock","src":"9615:150:92","statements":[{"nodeType":"YulVariableDeclaration","src":"9625:27:92","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"9645:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"9639:5:92"},"nodeType":"YulFunctionCall","src":"9639:13:92"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"9629:6:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"9700:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"9708:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9696:3:92"},"nodeType":"YulFunctionCall","src":"9696:17:92"},{"name":"pos","nodeType":"YulIdentifier","src":"9715:3:92"},{"name":"length","nodeType":"YulIdentifier","src":"9720:6:92"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"9661:34:92"},"nodeType":"YulFunctionCall","src":"9661:66:92"},"nodeType":"YulExpressionStatement","src":"9661:66:92"},{"nodeType":"YulAssignment","src":"9736:23:92","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"9747:3:92"},{"name":"length","nodeType":"YulIdentifier","src":"9752:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9743:3:92"},"nodeType":"YulFunctionCall","src":"9743:16:92"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"9736:3:92"}]}]},"name":"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"9591:3:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"9596:6:92","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"9607:3:92","type":""}],"src":"9478:287:92"},{"body":{"nodeType":"YulBlock","src":"9944:179:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9961:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9972:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9954:6:92"},"nodeType":"YulFunctionCall","src":"9954:21:92"},"nodeType":"YulExpressionStatement","src":"9954:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9995:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"10006:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9991:3:92"},"nodeType":"YulFunctionCall","src":"9991:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"10011:2:92","type":"","value":"29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9984:6:92"},"nodeType":"YulFunctionCall","src":"9984:30:92"},"nodeType":"YulExpressionStatement","src":"9984:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10034:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"10045:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10030:3:92"},"nodeType":"YulFunctionCall","src":"10030:18:92"},{"hexValue":"416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374","kind":"string","nodeType":"YulLiteral","src":"10050:31:92","type":"","value":"Address: call to non-contract"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10023:6:92"},"nodeType":"YulFunctionCall","src":"10023:59:92"},"nodeType":"YulExpressionStatement","src":"10023:59:92"},{"nodeType":"YulAssignment","src":"10091:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10103:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"10114:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10099:3:92"},"nodeType":"YulFunctionCall","src":"10099:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"10091:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9921:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"9935:4:92","type":""}],"src":"9770:353:92"},{"body":{"nodeType":"YulBlock","src":"10249:275:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10266:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"10277:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10259:6:92"},"nodeType":"YulFunctionCall","src":"10259:21:92"},"nodeType":"YulExpressionStatement","src":"10259:21:92"},{"nodeType":"YulVariableDeclaration","src":"10289:27:92","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"10309:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"10303:5:92"},"nodeType":"YulFunctionCall","src":"10303:13:92"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"10293:6:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10336:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"10347:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10332:3:92"},"nodeType":"YulFunctionCall","src":"10332:18:92"},{"name":"length","nodeType":"YulIdentifier","src":"10352:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10325:6:92"},"nodeType":"YulFunctionCall","src":"10325:34:92"},"nodeType":"YulExpressionStatement","src":"10325:34:92"},{"expression":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"10407:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"10415:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10403:3:92"},"nodeType":"YulFunctionCall","src":"10403:15:92"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10424:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"10435:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10420:3:92"},"nodeType":"YulFunctionCall","src":"10420:18:92"},{"name":"length","nodeType":"YulIdentifier","src":"10440:6:92"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"10368:34:92"},"nodeType":"YulFunctionCall","src":"10368:79:92"},"nodeType":"YulExpressionStatement","src":"10368:79:92"},{"nodeType":"YulAssignment","src":"10456:62:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10472:9:92"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"10491:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"10499:2:92","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10487:3:92"},"nodeType":"YulFunctionCall","src":"10487:15:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10508:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"10504:3:92"},"nodeType":"YulFunctionCall","src":"10504:7:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"10483:3:92"},"nodeType":"YulFunctionCall","src":"10483:29:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10468:3:92"},"nodeType":"YulFunctionCall","src":"10468:45:92"},{"kind":"number","nodeType":"YulLiteral","src":"10515:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10464:3:92"},"nodeType":"YulFunctionCall","src":"10464:54:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"10456:4:92"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"10218:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"10229:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"10240:4:92","type":""}],"src":"10128:396:92"}]},"contents":"{\n { }\n function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n if iszero(eq(value, and(value, shl(224, 0xffffffff)))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 96)\n let pos := headStart\n pos := headStart\n let srcPtr := value0\n let i := 0\n for { } lt(i, 0x03) { i := add(i, 1) }\n {\n mstore(pos, and(mload(srcPtr), 0xff))\n let _1 := 0x20\n pos := add(pos, _1)\n srcPtr := add(srcPtr, _1)\n }\n }\n function validator_revert_address(value)\n {\n if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n }\n function abi_encode_tuple_t_contract$_IDAO_$10865__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_encode_tuple_t_enum$_PluginType_$13330__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n if iszero(lt(value0, 3))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x21)\n revert(0, 0x24)\n }\n mstore(headStart, value0)\n }\n function panic_error_0x41()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function abi_decode_tuple_t_addresst_bytes_memory_ptr(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n let offset := calldataload(add(headStart, 32))\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n let _2 := add(headStart, offset)\n if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n let _3 := calldataload(_2)\n if gt(_3, _1) { panic_error_0x41() }\n let _4 := not(31)\n let memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n mstore(memPtr, _3)\n if gt(add(add(_2, _3), 32), dataEnd) { revert(0, 0) }\n calldatacopy(add(memPtr, 32), add(_2, 32), _3)\n mstore(add(add(memPtr, _3), 32), 0)\n value1 := memPtr\n }\n function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_decode_tuple_t_contract$_IDAO_$10865(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n }\n function abi_encode_tuple_t_stringliteral_36e108fa7a809b52ab1951dd91c117a7bc9ac5250bdf1aa162d4e104f7edf9eb__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 44)\n mstore(add(headStart, 64), \"Function must be called through \")\n mstore(add(headStart, 96), \"delegatecall\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_52f1ead4d9653e13afbd2e90ef2587c30187cd50b2e97d784e3f7a7541247434__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 44)\n mstore(add(headStart, 64), \"Function must be called through \")\n mstore(add(headStart, 96), \"active proxy\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_67f0151b4ad1dcfa0e3302a0cd6019f51582ef1807b37dceb00bd852a514f7f4__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 56)\n mstore(add(headStart, 64), \"UUPSUpgradeable: must not be cal\")\n mstore(add(headStart, 96), \"led through delegatecall\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 46)\n mstore(add(headStart, 64), \"Initializable: contract is alrea\")\n mstore(add(headStart, 96), \"dy initialized\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_rational_1_by_1__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xff))\n }\n function abi_decode_tuple_t_bytes32_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := mload(headStart)\n }\n function abi_encode_tuple_t_stringliteral_8e8e2fbcb586f700b5b14e2c4a650c8d83b9773c31c5fe8962070ea544e11f24__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 46)\n mstore(add(headStart, 64), \"ERC1967Upgrade: new implementati\")\n mstore(add(headStart, 96), \"on is not UUPS\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_76b6b6debfc5febf101145a79ecf0b0d2e89e397dfdab2bca99888370411152c__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 41)\n mstore(add(headStart, 64), \"ERC1967Upgrade: unsupported prox\")\n mstore(add(headStart, 96), \"iableUUID\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 43)\n mstore(add(headStart, 64), \"Initializable: contract is not i\")\n mstore(add(headStart, 96), \"nitializing\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_address_t_address_t_bytes32_t_bytes_calldata_ptr__to_t_address_t_address_t_bytes32_t_bytes_memory_ptr__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n {\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n mstore(add(headStart, 64), value2)\n mstore(add(headStart, 96), 128)\n mstore(add(headStart, 128), value4)\n calldatacopy(add(headStart, 160), value3, value4)\n mstore(add(add(headStart, value4), 160), 0)\n tail := add(add(headStart, and(add(value4, 31), not(31))), 160)\n }\n function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := mload(headStart)\n if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_address_t_address_t_address_t_bytes32__to_t_address_t_address_t_address_t_bytes32__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n {\n tail := add(headStart, 128)\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n mstore(add(headStart, 64), and(value2, _1))\n mstore(add(headStart, 96), value3)\n }\n function abi_encode_tuple_t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 45)\n mstore(add(headStart, 64), \"ERC1967: new implementation is n\")\n mstore(add(headStart, 96), \"ot a contract\")\n tail := add(headStart, 128)\n }\n function copy_memory_to_memory_with_cleanup(src, dst, length)\n {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n mstore(add(dst, length), 0)\n }\n function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n {\n let length := mload(value0)\n copy_memory_to_memory_with_cleanup(add(value0, 0x20), pos, length)\n end := add(pos, length)\n }\n function abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 29)\n mstore(add(headStart, 64), \"Address: call to non-contract\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n mstore(headStart, 32)\n let length := mload(value0)\n mstore(add(headStart, 32), length)\n copy_memory_to_memory_with_cleanup(add(value0, 32), add(headStart, 64), length)\n tail := add(add(headStart, and(add(length, 31), not(31))), 64)\n }\n}","id":92,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{"554":[{"length":32,"start":734},{"length":32,"start":872},{"length":32,"start":1118},{"length":32,"start":1251},{"length":32,"start":1485}]},"linkReferences":{},"object":"6080604052600436106100bc5760003560e01c80634f1ef286116100745780636accab8c1161004e5780636accab8c146101d3578063c4d66de8146101ea578063c9c4bfca1461020a57600080fd5b80634f1ef2861461018857806352d1902d1461019b5780635c60da1b146101be57600080fd5b80633659cfe6116100a55780633659cfe6146101185780634162169f1461013a57806341de68301461016c57600080fd5b806301ffc9a7146100c15780632ae9c600146100f6575b600080fd5b3480156100cd57600080fd5b506100e16100dc366004610e33565b61023e565b60405190151581526020015b60405180910390f35b34801561010257600080fd5b5061010b6102aa565b6040516100ed9190610e5d565b34801561012457600080fd5b50610138610133366004610ea6565b6102d4565b005b34801561014657600080fd5b5060c9546001600160a01b03165b6040516001600160a01b0390911681526020016100ed565b34801561017857600080fd5b5060006040516100ed9190610ec3565b610138610196366004610f01565b610454565b3480156101a757600080fd5b506101b06105c0565b6040519081526020016100ed565b3480156101ca57600080fd5b50610154610685565b3480156101df57600080fd5b506101b061012d5481565b3480156101f657600080fd5b50610138610205366004610ea6565b6106bd565b34801561021657600080fd5b506101b07f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f581565b60006001600160e01b0319821663041de68360e41b148061026e57506001600160e01b03198216621574e360e91b145b8061028957506001600160e01b031982166352d1902d60e01b145b806102a457506301ffc9a760e01b6001600160e01b03198316145b92915050565b6102b2610e15565b5060408051606081018252600181526004602082015260009181019190915290565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036103665760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b60648201526084015b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166103c17f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b03161461042c5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b606482015260840161035d565b610435816107e4565b6040805160008082526020820190925261045191839190610821565b50565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036104e15760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b606482015260840161035d565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661053c7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b0316146105a75760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b606482015260840161035d565b6105b0826107e4565b6105bc82826001610821565b5050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106605760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000606482015260840161035d565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b60006106b87f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b600054610100900460ff16158080156106dd5750600054600160ff909116105b806106f75750303b1580156106f7575060005460ff166001145b6107695760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161035d565b6000805460ff19166001179055801561078c576000805461ff0019166101001790555b610795826109c6565b600161012d5580156105bc576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b60c9547f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f5906105bc906001600160a01b0316303384600036610a3a565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156108595761085483610af6565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156108b3575060408051601f3d908101601f191682019092526108b091810190610fc5565b60015b6109255760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201527f6f6e206973206e6f742055555053000000000000000000000000000000000000606482015260840161035d565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146109ba5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f7860448201527f6961626c65555549440000000000000000000000000000000000000000000000606482015260840161035d565b50610854838383610bc1565b600054610100900460ff16610a315760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840161035d565b61045181610bec565b604051637ef7c88360e11b81526001600160a01b0387169063fdef910690610a6e9088908890889088908890600401610fde565b602060405180830381865afa158015610a8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aaf9190611032565b610aee57604051630cb6f8ed60e21b81526001600160a01b0380881660048301528087166024830152851660448201526064810184905260840161035d565b505050505050565b6001600160a01b0381163b610b735760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e747261637400000000000000000000000000000000000000606482015260840161035d565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610bca83610c86565b600082511180610bd75750805b1561085457610be68383610cc6565b50505050565b600054610100900460ff16610c575760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840161035d565b60c9805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610c8f81610af6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060610ceb83836040518060600160405280602781526020016110c860279139610cf2565b9392505050565b6060600080856001600160a01b031685604051610d0f9190611078565b600060405180830381855af49150503d8060008114610d4a576040519150601f19603f3d011682016040523d82523d6000602084013e610d4f565b606091505b5091509150610d6086838387610d6a565b9695505050505050565b60608315610dd9578251600003610dd2576001600160a01b0385163b610dd25760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161035d565b5081610de3565b610de38383610deb565b949350505050565b815115610dfb5781518083602001fd5b8060405162461bcd60e51b815260040161035d9190611094565b60405180606001604052806003906020820280368337509192915050565b600060208284031215610e4557600080fd5b81356001600160e01b031981168114610ceb57600080fd5b60608101818360005b6003811015610e8857815160ff16835260209283019290910190600101610e66565b50505092915050565b6001600160a01b038116811461045157600080fd5b600060208284031215610eb857600080fd5b8135610ceb81610e91565b6020810160038310610ee557634e487b7160e01b600052602160045260246000fd5b91905290565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215610f1457600080fd5b8235610f1f81610e91565b9150602083013567ffffffffffffffff80821115610f3c57600080fd5b818501915085601f830112610f5057600080fd5b813581811115610f6257610f62610eeb565b604051601f8201601f19908116603f01168101908382118183101715610f8a57610f8a610eeb565b81604052828152886020848701011115610fa357600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b600060208284031215610fd757600080fd5b5051919050565b60006001600160a01b03808816835280871660208401525084604083015260806060830152826080830152828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b60006020828403121561104457600080fd5b81518015158114610ceb57600080fd5b60005b8381101561106f578181015183820152602001611057565b50506000910152565b6000825161108a818460208701611054565b9190910192915050565b60208152600082518060208401526110b3816040850160208701611054565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xBC JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x4F1EF286 GT PUSH2 0x74 JUMPI DUP1 PUSH4 0x6ACCAB8C GT PUSH2 0x4E JUMPI DUP1 PUSH4 0x6ACCAB8C EQ PUSH2 0x1D3 JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0x1EA JUMPI DUP1 PUSH4 0xC9C4BFCA EQ PUSH2 0x20A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x188 JUMPI DUP1 PUSH4 0x52D1902D EQ PUSH2 0x19B JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0x1BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x3659CFE6 GT PUSH2 0xA5 JUMPI DUP1 PUSH4 0x3659CFE6 EQ PUSH2 0x118 JUMPI DUP1 PUSH4 0x4162169F EQ PUSH2 0x13A JUMPI DUP1 PUSH4 0x41DE6830 EQ PUSH2 0x16C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xC1 JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0xF6 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xCD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xE1 PUSH2 0xDC CALLDATASIZE PUSH1 0x4 PUSH2 0xE33 JUMP JUMPDEST PUSH2 0x23E JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x102 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x10B PUSH2 0x2AA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xED SWAP2 SWAP1 PUSH2 0xE5D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x124 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x138 PUSH2 0x133 CALLDATASIZE PUSH1 0x4 PUSH2 0xEA6 JUMP JUMPDEST PUSH2 0x2D4 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x146 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xC9 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xED JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x178 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 PUSH1 0x40 MLOAD PUSH2 0xED SWAP2 SWAP1 PUSH2 0xEC3 JUMP JUMPDEST PUSH2 0x138 PUSH2 0x196 CALLDATASIZE PUSH1 0x4 PUSH2 0xF01 JUMP JUMPDEST PUSH2 0x454 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1B0 PUSH2 0x5C0 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xED JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x154 PUSH2 0x685 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1B0 PUSH2 0x12D SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x138 PUSH2 0x205 CALLDATASIZE PUSH1 0x4 PUSH2 0xEA6 JUMP JUMPDEST PUSH2 0x6BD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x216 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1B0 PUSH32 0x821B6E3A557148015A918C89E5D092E878A69854A2D1A410635F771BD5A8A3F5 DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x41DE683 PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x26E JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x289 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x52D1902D PUSH1 0xE0 SHL EQ JUMPDEST DUP1 PUSH2 0x2A4 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x2B2 PUSH2 0xE15 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x366 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x19195B1959D85D1958D85B1B PUSH1 0xA2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3C1 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x42C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x6163746976652070726F7879 PUSH1 0xA0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x35D JUMP JUMPDEST PUSH2 0x435 DUP2 PUSH2 0x7E4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x451 SWAP2 DUP4 SWAP2 SWAP1 PUSH2 0x821 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x4E1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x19195B1959D85D1958D85B1B PUSH1 0xA2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x35D JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x53C PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x5A7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x6163746976652070726F7879 PUSH1 0xA0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x35D JUMP JUMPDEST PUSH2 0x5B0 DUP3 PUSH2 0x7E4 JUMP JUMPDEST PUSH2 0x5BC DUP3 DUP3 PUSH1 0x1 PUSH2 0x821 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x660 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x38 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x555550535570677261646561626C653A206D757374206E6F742062652063616C PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6C6564207468726F7567682064656C656761746563616C6C0000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x35D JUMP JUMPDEST POP PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6B8 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 DUP1 ISZERO PUSH2 0x6DD JUMPI POP PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xFF SWAP1 SWAP2 AND LT JUMPDEST DUP1 PUSH2 0x6F7 JUMPI POP ADDRESS EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x6F7 JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF AND PUSH1 0x1 EQ JUMPDEST PUSH2 0x769 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x647920696E697469616C697A6564000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x35D JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE DUP1 ISZERO PUSH2 0x78C JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND PUSH2 0x100 OR SWAP1 SSTORE JUMPDEST PUSH2 0x795 DUP3 PUSH2 0x9C6 JUMP JUMPDEST PUSH1 0x1 PUSH2 0x12D SSTORE DUP1 ISZERO PUSH2 0x5BC JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0xC9 SLOAD PUSH32 0x821B6E3A557148015A918C89E5D092E878A69854A2D1A410635F771BD5A8A3F5 SWAP1 PUSH2 0x5BC SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ADDRESS CALLER DUP5 PUSH1 0x0 CALLDATASIZE PUSH2 0xA3A JUMP JUMPDEST PUSH32 0x4910FDFA16FED3260ED0E7147F7CC6DA11A60208B5B9406D12A635614FFD9143 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x859 JUMPI PUSH2 0x854 DUP4 PUSH2 0xAF6 JUMP JUMPDEST POP POP POP JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x52D1902D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x8B3 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x8B0 SWAP2 DUP2 ADD SWAP1 PUSH2 0xFC5 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x925 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524331393637557067726164653A206E657720696D706C656D656E74617469 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F6E206973206E6F742055555053000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x35D JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC DUP2 EQ PUSH2 0x9BA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524331393637557067726164653A20756E737570706F727465642070726F78 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6961626C65555549440000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x35D JUMP JUMPDEST POP PUSH2 0x854 DUP4 DUP4 DUP4 PUSH2 0xBC1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0xA31 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x35D JUMP JUMPDEST PUSH2 0x451 DUP2 PUSH2 0xBEC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x7EF7C883 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0xFDEF9106 SWAP1 PUSH2 0xA6E SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0xFDE JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xA8B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xAAF SWAP2 SWAP1 PUSH2 0x1032 JUMP JUMPDEST PUSH2 0xAEE JUMPI PUSH1 0x40 MLOAD PUSH4 0xCB6F8ED PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND PUSH1 0x4 DUP4 ADD MSTORE DUP1 DUP8 AND PUSH1 0x24 DUP4 ADD MSTORE DUP6 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x84 ADD PUSH2 0x35D JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND EXTCODESIZE PUSH2 0xB73 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313936373A206E657720696D706C656D656E746174696F6E206973206E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F74206120636F6E747261637400000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x35D JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xBCA DUP4 PUSH2 0xC86 JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD GT DUP1 PUSH2 0xBD7 JUMPI POP DUP1 JUMPDEST ISZERO PUSH2 0x854 JUMPI PUSH2 0xBE6 DUP4 DUP4 PUSH2 0xCC6 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0xC57 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x35D JUMP JUMPDEST PUSH1 0xC9 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xC8F DUP2 PUSH2 0xAF6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xCEB DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x10C8 PUSH1 0x27 SWAP2 CODECOPY PUSH2 0xCF2 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0xD0F SWAP2 SWAP1 PUSH2 0x1078 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xD4A JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xD4F JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0xD60 DUP7 DUP4 DUP4 DUP8 PUSH2 0xD6A JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0xDD9 JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0xDD2 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0xDD2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x35D JUMP JUMPDEST POP DUP2 PUSH2 0xDE3 JUMP JUMPDEST PUSH2 0xDE3 DUP4 DUP4 PUSH2 0xDEB JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0xDFB JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x35D SWAP2 SWAP1 PUSH2 0x1094 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xE45 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0xCEB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0xE88 JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0xE66 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x451 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xEB8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xCEB DUP2 PUSH2 0xE91 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH1 0x3 DUP4 LT PUSH2 0xEE5 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 SWAP1 MSTORE SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xF14 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0xF1F DUP2 PUSH2 0xE91 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xF3C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xF50 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0xF62 JUMPI PUSH2 0xF62 PUSH2 0xEEB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0xF8A JUMPI PUSH2 0xF8A PUSH2 0xEEB JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0xFA3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xFD7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND DUP4 MSTORE DUP1 DUP8 AND PUSH1 0x20 DUP5 ADD MSTORE POP DUP5 PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x80 PUSH1 0x60 DUP4 ADD MSTORE DUP3 PUSH1 0x80 DUP4 ADD MSTORE DUP3 DUP5 PUSH1 0xA0 DUP5 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0xA0 DUP5 DUP5 ADD ADD MSTORE PUSH1 0xA0 PUSH1 0x1F NOT PUSH1 0x1F DUP6 ADD AND DUP4 ADD ADD SWAP1 POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1044 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xCEB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x106F JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1057 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x108A DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x1054 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x10B3 DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x1054 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A164 PUSH20 0x6F6C6343000811000A0000000000000000000000 ","sourceMap":"382:225:53:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2358:366:75;;;;;;;;;;-1:-1:-1;2358:366:75;;;;;:::i;:::-;;:::i;:::-;;;470:14:92;;463:22;445:41;;433:2;418:18;2358:366:75;;;;;;;;631:98:90;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;3408:195:5:-;;;;;;;;;;-1:-1:-1;3408:195:5;;;;;:::i;:::-;;:::i;:::-;;1200:70:67;;;;;;;;;;-1:-1:-1;1259:4:67;;-1:-1:-1;;;;;1259:4:67;1200:70;;;-1:-1:-1;;;;;1592:55:92;;;1574:74;;1562:2;1547:18;1200:70:67;1414:240:92;1552:103:75;;;;;;;;;;-1:-1:-1;1604:10:75;1552:103;;;;;;:::i;3922:220:5:-;;;;;;:::i;:::-;;:::i;3027:131::-;;;;;;;;;;;;;:::i;:::-;;;3347:25:92;;;3335:2;3320:18;3027:131:5;3201:177:92;3005:100:75;;;;;;;;;;;;;:::i;454:21:53:-;;;;;;;;;;;;;;;;482:123;;;;;;;;;;-1:-1:-1;482:123:53;;;;;:::i;:::-;;:::i;1753:93:75:-;;;;;;;;;;;;1808:38;1753:93;;2358:366;2444:4;-1:-1:-1;;;;;;2479:41:75;;-1:-1:-1;;;2479:41:75;;:107;;-1:-1:-1;;;;;;;2536:50:75;;-1:-1:-1;;;2536:50:75;2479:107;:185;;;-1:-1:-1;;;;;;;2602:62:75;;-1:-1:-1;;;2602:62:75;2479:185;:238;;;-1:-1:-1;;;;;;;;;;1189:51:11;;;2680:37:75;2460:257;2358:366;-1:-1:-1;;2358:366:75:o;631:98:90:-;679:15;;:::i;:::-;-1:-1:-1;706:16:90;;;;;;;;714:1;706:16;;717:1;706:16;;;;-1:-1:-1;706:16:90;;;;;;;;631:98::o;3408:195:5:-;-1:-1:-1;;;;;1764:6:5;1747:23;1755:4;1747:23;1739:80;;;;-1:-1:-1;;;1739:80:5;;4264:2:92;1739:80:5;;;4246:21:92;4303:2;4283:18;;;4276:30;4342:34;4322:18;;;4315:62;-1:-1:-1;;;4393:18:92;;;4386:42;4445:19;;1739:80:5;;;;;;;;;1861:6;-1:-1:-1;;;;;1837:30:5;:20;1180:66:2;1557:65;-1:-1:-1;;;;;1557:65:2;;1478:151;1837:20:5;-1:-1:-1;;;;;1837:30:5;;1829:87;;;;-1:-1:-1;;;1829:87:5;;4677:2:92;1829:87:5;;;4659:21:92;4716:2;4696:18;;;4689:30;4755:34;4735:18;;;4728:62;-1:-1:-1;;;4806:18:92;;;4799:42;4858:19;;1829:87:5;4475:408:92;1829:87:5;3489:36:::1;3507:17;3489;:36::i;:::-;3576:12;::::0;;3586:1:::1;3576:12:::0;;;::::1;::::0;::::1;::::0;;;3535:61:::1;::::0;3557:17;;3576:12;3535:21:::1;:61::i;:::-;3408:195:::0;:::o;3922:220::-;-1:-1:-1;;;;;1764:6:5;1747:23;1755:4;1747:23;1739:80;;;;-1:-1:-1;;;1739:80:5;;4264:2:92;1739:80:5;;;4246:21:92;4303:2;4283:18;;;4276:30;4342:34;4322:18;;;4315:62;-1:-1:-1;;;4393:18:92;;;4386:42;4445:19;;1739:80:5;4062:408:92;1739:80:5;1861:6;-1:-1:-1;;;;;1837:30:5;:20;1180:66:2;1557:65;-1:-1:-1;;;;;1557:65:2;;1478:151;1837:20:5;-1:-1:-1;;;;;1837:30:5;;1829:87;;;;-1:-1:-1;;;1829:87:5;;4677:2:92;1829:87:5;;;4659:21:92;4716:2;4696:18;;;4689:30;4755:34;4735:18;;;4728:62;-1:-1:-1;;;4806:18:92;;;4799:42;4858:19;;1829:87:5;4475:408:92;1829:87:5;4037:36:::1;4055:17;4037;:36::i;:::-;4083:52;4105:17;4124:4;4130;4083:21;:52::i;:::-;3922:220:::0;;:::o;3027:131::-;3105:7;2190:4;-1:-1:-1;;;;;2199:6:5;2182:23;;2174:92;;;;-1:-1:-1;;;2174:92:5;;5090:2:92;2174:92:5;;;5072:21:92;5129:2;5109:18;;;5102:30;5168:34;5148:18;;;5141:62;5239:26;5219:18;;;5212:54;5283:19;;2174:92:5;4888:420:92;2174:92:5;-1:-1:-1;1180:66:2::1;3027:131:5::0;:::o;3005:100:75:-;3052:7;3078:20;1180:66:2;1557:65;-1:-1:-1;;;;;1557:65:2;;1478:151;3078:20:75;3071:27;;3005:100;:::o;482:123:53:-;3279:19:4;3302:13;;;;;;3301:14;;3347:34;;;;-1:-1:-1;3365:12:4;;3380:1;3365:12;;;;:16;3347:34;3346:108;;;-1:-1:-1;3426:4:4;1713:19:6;:23;;;3387:66:4;;-1:-1:-1;3436:12:4;;;;;:17;3387:66;3325:201;;;;-1:-1:-1;;;3325:201:4;;5515:2:92;3325:201:4;;;5497:21:92;5554:2;5534:18;;;5527:30;5593:34;5573:18;;;5566:62;5664:16;5644:18;;;5637:44;5698:19;;3325:201:4;5313:410:92;3325:201:4;3536:12;:16;;-1:-1:-1;;3536:16:4;3551:1;3536:16;;;3562:65;;;;3596:13;:20;;-1:-1:-1;;3596:20:4;;;;;3562:65;544:34:53::1;573:4;544:28;:34::i;:::-;597:1;588:6;:10:::0;3647:99:4;;;;3697:5;3681:21;;-1:-1:-1;;3681:21:4;;;3721:14;;-1:-1:-1;5880:36:92;;3721:14:4;;5868:2:92;5853:18;3721:14:4;;;;;;;3269:483;482:123:53;:::o;3446:204:75:-;1616:4:67;;1808:38:75;;1610:67:67;;-1:-1:-1;;;;;1616:4:67;1630;965:10:8;1651:13:67;1039:14:8;;1610:5:67;:67::i;2841:944:2:-;839:66;3257:59;;;3253:526;;;3332:37;3351:17;3332:18;:37::i;:::-;2841:944;;;:::o;3253:526::-;3433:17;-1:-1:-1;;;;;3404:61:2;;:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3404:63:2;;;;;;;;-1:-1:-1;;3404:63:2;;;;;;;;;;;;:::i;:::-;;;3400:302;;3631:56;;-1:-1:-1;;;3631:56:2;;6318:2:92;3631:56:2;;;6300:21:92;6357:2;6337:18;;;6330:30;6396:34;6376:18;;;6369:62;6467:16;6447:18;;;6440:44;6501:19;;3631:56:2;6116:410:92;3400:302:2;1180:66;3517:28;;3509:82;;;;-1:-1:-1;;;3509:82:2;;6733:2:92;3509:82:2;;;6715:21:92;6772:2;6752:18;;;6745:30;6811:34;6791:18;;;6784:62;6882:11;6862:18;;;6855:39;6911:19;;3509:82:2;6531:405:92;3509:82:2;3468:138;3715:53;3733:17;3752:4;3758:9;3715:17;:53::i;2014:139:75:-;5374:13:4;;;;;;;5366:69;;;;-1:-1:-1;;;5366:69:4;;7143:2:92;5366:69:4;;;7125:21:92;7182:2;7162:18;;;7155:30;7221:34;7201:18;;;7194:62;-1:-1:-1;;;7272:18:92;;;7265:41;7323:19;;5366:69:4;6941:407:92;5366:69:4;2107:39:75::1;2141:4;2107:33;:39::i;1041:363:68:-:0;1180:54;;-1:-1:-1;;;1180:54:68;;-1:-1:-1;;;;;1180:18:68;;;;;:54;;1199:6;;1207:4;;1213:13;;1228:5;;;;1180:54;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1175:226;;1251:150;;-1:-1:-1;;;1251:150:68;;-1:-1:-1;;;;;8635:15:92;;;1251:150:68;;;8617:34:92;8687:15;;;8667:18;;;8660:43;8739:15;;8719:18;;;8712:43;8771:18;;;8764:34;;;8528:19;;1251:150:68;8325:479:92;1175:226:68;1041:363;;;;;;:::o;1720:281:2:-;-1:-1:-1;;;;;1713:19:6;;;1793:106:2;;;;-1:-1:-1;;;1793:106:2;;9011:2:92;1793:106:2;;;8993:21:92;9050:2;9030:18;;;9023:30;9089:34;9069:18;;;9062:62;9160:15;9140:18;;;9133:43;9193:19;;1793:106:2;8809:409:92;1793:106:2;1180:66;1909:85;;-1:-1:-1;;1909:85:2;-1:-1:-1;;;;;1909:85:2;;;;;;;;;;1720:281::o;2393:276::-;2501:29;2512:17;2501:10;:29::i;:::-;2558:1;2544:4;:11;:15;:28;;;;2563:9;2544:28;2540:123;;;2588:64;2628:17;2647:4;2588:39;:64::i;:::-;;2393:276;;;:::o;1010:108:67:-;5374:13:4;;;;;;;5366:69;;;;-1:-1:-1;;;5366:69:4;;7143:2:92;5366:69:4;;;7125:21:92;7182:2;7162:18;;;7155:30;7221:34;7201:18;;;7194:62;-1:-1:-1;;;7272:18:92;;;7265:41;7323:19;;5366:69:4;6941:407:92;5366:69:4;1100:4:67::1;:11:::0;;-1:-1:-1;;1100:11:67::1;-1:-1:-1::0;;;;;1100:11:67;;;::::1;::::0;;;::::1;::::0;;1010:108::o;2107:152:2:-;2173:37;2192:17;2173:18;:37::i;:::-;2225:27;;-1:-1:-1;;;;;2225:27:2;;;;;;;;2107:152;:::o;6685:198:6:-;6768:12;6799:77;6820:6;6828:4;6799:77;;;;;;;;;;;;;;;;;:20;:77::i;:::-;6792:84;6685:198;-1:-1:-1;;;6685:198:6:o;7069:325::-;7210:12;7235;7249:23;7276:6;-1:-1:-1;;;;;7276:19:6;7296:4;7276:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7234:67;;;;7318:69;7345:6;7353:7;7362:10;7374:12;7318:26;:69::i;:::-;7311:76;7069:325;-1:-1:-1;;;;;;7069:325:6:o;7682:628::-;7862:12;7890:7;7886:418;;;7917:10;:17;7938:1;7917:22;7913:286;;-1:-1:-1;;;;;1713:19:6;;;8124:60;;;;-1:-1:-1;;;8124:60:6;;9972:2:92;8124:60:6;;;9954:21:92;10011:2;9991:18;;;9984:30;10050:31;10030:18;;;10023:59;10099:18;;8124:60:6;9770:353:92;8124:60:6;-1:-1:-1;8219:10:6;8212:17;;7886:418;8260:33;8268:10;8280:12;8260:7;:33::i;:::-;7682:628;;;;;;:::o;8832:540::-;8991:17;;:21;8987:379;;9219:10;9213:17;9275:15;9262:10;9258:2;9254:19;9247:44;8987:379;9342:12;9335:20;;-1:-1:-1;;;9335:20:6;;;;;;;;:::i;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:286:92:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:92;;209:43;;199:71;;266:1;263;256:12;497:501;673:2;658:18;;662:9;753:6;631:4;787:205;801:4;798:1;795:11;787:205;;;864:13;;879:4;860:24;848:37;;908:4;932:12;;;;967:15;;;;821:1;814:9;787:205;;;791:3;;;497:501;;;;:::o;1003:154::-;-1:-1:-1;;;;;1082:5:92;1078:54;1071:5;1068:65;1058:93;;1147:1;1144;1137:12;1162:247;1221:6;1274:2;1262:9;1253:7;1249:23;1245:32;1242:52;;;1290:1;1287;1280:12;1242:52;1329:9;1316:23;1348:31;1373:5;1348:31;:::i;1659:344::-;1807:2;1792:18;;1840:1;1829:13;;1819:144;;1885:10;1880:3;1876:20;1873:1;1866:31;1920:4;1917:1;1910:15;1948:4;1945:1;1938:15;1819:144;1972:25;;;1659:344;:::o;2008:127::-;2069:10;2064:3;2060:20;2057:1;2050:31;2100:4;2097:1;2090:15;2124:4;2121:1;2114:15;2140:1056;2217:6;2225;2278:2;2266:9;2257:7;2253:23;2249:32;2246:52;;;2294:1;2291;2284:12;2246:52;2333:9;2320:23;2352:31;2377:5;2352:31;:::i;:::-;2402:5;-1:-1:-1;2458:2:92;2443:18;;2430:32;2481:18;2511:14;;;2508:34;;;2538:1;2535;2528:12;2508:34;2576:6;2565:9;2561:22;2551:32;;2621:7;2614:4;2610:2;2606:13;2602:27;2592:55;;2643:1;2640;2633:12;2592:55;2679:2;2666:16;2701:2;2697;2694:10;2691:36;;;2707:18;;:::i;:::-;2782:2;2776:9;2750:2;2836:13;;-1:-1:-1;;2832:22:92;;;2856:2;2828:31;2824:40;2812:53;;;2880:18;;;2900:22;;;2877:46;2874:72;;;2926:18;;:::i;:::-;2966:10;2962:2;2955:22;3001:2;2993:6;2986:18;3041:7;3036:2;3031;3027;3023:11;3019:20;3016:33;3013:53;;;3062:1;3059;3052:12;3013:53;3118:2;3113;3109;3105:11;3100:2;3092:6;3088:15;3075:46;3163:1;3158:2;3153;3145:6;3141:15;3137:24;3130:35;3184:6;3174:16;;;;;;;2140:1056;;;;;:::o;5927:184::-;5997:6;6050:2;6038:9;6029:7;6025:23;6021:32;6018:52;;;6066:1;6063;6056:12;6018:52;-1:-1:-1;6089:16:92;;5927:184;-1:-1:-1;5927:184:92:o;7353:685::-;7557:4;-1:-1:-1;;;;;7667:2:92;7659:6;7655:15;7644:9;7637:34;7719:2;7711:6;7707:15;7702:2;7691:9;7687:18;7680:43;;7759:6;7754:2;7743:9;7739:18;7732:34;7802:3;7797:2;7786:9;7782:18;7775:31;7843:6;7837:3;7826:9;7822:19;7815:35;7901:6;7893;7887:3;7876:9;7872:19;7859:49;7958:1;7952:3;7943:6;7932:9;7928:22;7924:32;7917:43;8028:3;8021:2;8017:7;8012:2;8004:6;8000:15;7996:29;7985:9;7981:45;7977:55;7969:63;;7353:685;;;;;;;;:::o;8043:277::-;8110:6;8163:2;8151:9;8142:7;8138:23;8134:32;8131:52;;;8179:1;8176;8169:12;8131:52;8211:9;8205:16;8264:5;8257:13;8250:21;8243:5;8240:32;8230:60;;8286:1;8283;8276:12;9223:250;9308:1;9318:113;9332:6;9329:1;9326:13;9318:113;;;9408:11;;;9402:18;9389:11;;;9382:39;9354:2;9347:10;9318:113;;;-1:-1:-1;;9465:1:92;9447:16;;9440:27;9223:250::o;9478:287::-;9607:3;9645:6;9639:13;9661:66;9720:6;9715:3;9708:4;9700:6;9696:17;9661:66;:::i;:::-;9743:16;;;;;9478:287;-1:-1:-1;;9478:287:92:o;10128:396::-;10277:2;10266:9;10259:21;10240:4;10309:6;10303:13;10352:6;10347:2;10336:9;10332:18;10325:34;10368:79;10440:6;10435:2;10424:9;10420:18;10415:2;10407:6;10403:15;10368:79;:::i;:::-;10508:2;10487:15;-1:-1:-1;;10483:29:92;10468:45;;;;10515:2;10464:54;;10128:396;-1:-1:-1;;10128:396:92:o"},"gasEstimates":{"creation":{"codeDepositCost":"869400","executionCost":"infinite","totalCost":"infinite"},"external":{"UPGRADE_PLUGIN_PERMISSION_ID()":"261","dao()":"2365","implementation()":"2436","initialize(address)":"infinite","pluginType()":"294","protocolVersion()":"infinite","proxiableUUID()":"infinite","state1()":"2317","supportsInterface(bytes4)":"560","upgradeTo(address)":"infinite","upgradeToAndCall(address,bytes)":"infinite"}},"methodIdentifiers":{"UPGRADE_PLUGIN_PERMISSION_ID()":"c9c4bfca","dao()":"4162169f","implementation()":"5c60da1b","initialize(address)":"c4d66de8","pluginType()":"41de6830","protocolVersion()":"2ae9c600","proxiableUUID()":"52d1902d","state1()":"6accab8c","supportsInterface(bytes4)":"01ffc9a7","upgradeTo(address)":"3659cfe6","upgradeToAndCall(address,bytes)":"4f1ef286"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"dao\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"name\":\"DaoUnauthorized\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"UPGRADE_PLUGIN_PERMISSION_ID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"dao\",\"outputs\":[{\"internalType\":\"contract IDAO\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IDAO\",\"name\":\"_dao\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pluginType\",\"outputs\":[{\"internalType\":\"enum IPlugin.PluginType\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"protocolVersion\",\"outputs\":[{\"internalType\":\"uint8[3]\",\"name\":\"\",\"type\":\"uint8[3]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"state1\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"upgradeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"DO NOT USE IN PRODUCTION!\",\"errors\":{\"DaoUnauthorized(address,address,address,bytes32)\":[{\"params\":{\"dao\":\"The associated DAO.\",\"permissionId\":\"The permission identifier.\",\"where\":\"The context in which the authorization reverted.\",\"who\":\"The address (EOA or contract) missing the permission.\"}}]},\"kind\":\"dev\",\"methods\":{\"dao()\":{\"returns\":{\"_0\":\"The DAO contract.\"}},\"implementation()\":{\"returns\":{\"_0\":\"The address of the implementation contract.\"}},\"protocolVersion()\":{\"details\":\"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\",\"returns\":{\"_0\":\"Returns the semantic Aragon OSx protocol version number.\"}},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"supportsInterface(bytes4)\":{\"params\":{\"_interfaceId\":\"The ID of the interface.\"},\"returns\":{\"_0\":\"Returns `true` if the interface is supported.\"}},\"upgradeTo(address)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"},\"upgradeToAndCall(address,bytes)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"}},\"version\":1},\"userdoc\":{\"errors\":{\"DaoUnauthorized(address,address,address,bytes32)\":[{\"notice\":\"Thrown if a call is unauthorized in the associated DAO.\"}]},\"kind\":\"user\",\"methods\":{\"UPGRADE_PLUGIN_PERMISSION_ID()\":{\"notice\":\"The ID of the permission required to call the `_authorizeUpgrade` function.\"},\"dao()\":{\"notice\":\"Returns the DAO contract.\"},\"implementation()\":{\"notice\":\"Returns the address of the implementation contract in the [proxy storage slot](https://eips.ethereum.org/EIPS/eip-1967) slot the [UUPS proxy](https://eips.ethereum.org/EIPS/eip-1822) is pointing to.\"},\"pluginType()\":{\"notice\":\"Returns the plugin's type\"},\"protocolVersion()\":{\"notice\":\"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Checks if an interface is supported by this or its parent contract.\"}},\"notice\":\"A mock upgradeable plugin to be deployed via the UUPS proxy pattern. v1.1 (Release 1, Build 1)\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/mocks/plugin/PluginUUPSUpgradeableMock.sol\":\"PluginUUPSUpgradeableMockBuild1\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/interfaces/IERC1967Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (interfaces/IERC1967.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\\n *\\n * _Available since v4.8.3._\\n */\\ninterface IERC1967Upgradeable {\\n /**\\n * @dev Emitted when the implementation is upgraded.\\n */\\n event Upgraded(address indexed implementation);\\n\\n /**\\n * @dev Emitted when the admin account has changed.\\n */\\n event AdminChanged(address previousAdmin, address newAdmin);\\n\\n /**\\n * @dev Emitted when the beacon is changed.\\n */\\n event BeaconUpgraded(address indexed beacon);\\n}\\n\",\"keccak256\":\"0x47d6e06872b12e72c79d1b5eb55842f860b5fb1207b2317c2358d2766b950a7b\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822ProxiableUpgradeable {\\n /**\\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n * address.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy.\\n */\\n function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../beacon/IBeaconUpgradeable.sol\\\";\\nimport \\\"../../interfaces/IERC1967Upgradeable.sol\\\";\\nimport \\\"../../interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\nimport \\\"../../utils/StorageSlotUpgradeable.sol\\\";\\nimport {Initializable} from \\\"../utils/Initializable.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n */\\nabstract contract ERC1967UpgradeUpgradeable is Initializable, IERC1967Upgradeable {\\n // This is the keccak-256 hash of \\\"eip1967.proxy.rollback\\\" subtracted by 1\\n bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n /**\\n * @dev Storage slot with the address of the current implementation.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n function __ERC1967Upgrade_init() internal onlyInitializing {\\n }\\n\\n function __ERC1967Upgrade_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _getImplementation() internal view returns (address) {\\n return StorageSlotUpgradeable.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 implementation slot.\\n */\\n function _setImplementation(address newImplementation) private {\\n require(AddressUpgradeable.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n StorageSlotUpgradeable.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n }\\n\\n /**\\n * @dev Perform implementation upgrade\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeTo(address newImplementation) internal {\\n _setImplementation(newImplementation);\\n emit Upgraded(newImplementation);\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCall(address newImplementation, bytes memory data, bool forceCall) internal {\\n _upgradeTo(newImplementation);\\n if (data.length > 0 || forceCall) {\\n AddressUpgradeable.functionDelegateCall(newImplementation, data);\\n }\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCallUUPS(address newImplementation, bytes memory data, bool forceCall) internal {\\n // Upgrades from old implementations will perform a rollback test. This test requires the new\\n // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n // this special case will break upgrade paths from old UUPS implementation to new ones.\\n if (StorageSlotUpgradeable.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n _setImplementation(newImplementation);\\n } else {\\n try IERC1822ProxiableUpgradeable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n require(slot == _IMPLEMENTATION_SLOT, \\\"ERC1967Upgrade: unsupported proxiableUUID\\\");\\n } catch {\\n revert(\\\"ERC1967Upgrade: new implementation is not UUPS\\\");\\n }\\n _upgradeToAndCall(newImplementation, data, forceCall);\\n }\\n }\\n\\n /**\\n * @dev Storage slot with the admin of the contract.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _getAdmin() internal view returns (address) {\\n return StorageSlotUpgradeable.getAddressSlot(_ADMIN_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 admin slot.\\n */\\n function _setAdmin(address newAdmin) private {\\n require(newAdmin != address(0), \\\"ERC1967: new admin is the zero address\\\");\\n StorageSlotUpgradeable.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n */\\n function _changeAdmin(address newAdmin) internal {\\n emit AdminChanged(_getAdmin(), newAdmin);\\n _setAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\\n */\\n bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n /**\\n * @dev Returns the current beacon.\\n */\\n function _getBeacon() internal view returns (address) {\\n return StorageSlotUpgradeable.getAddressSlot(_BEACON_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new beacon in the EIP1967 beacon slot.\\n */\\n function _setBeacon(address newBeacon) private {\\n require(AddressUpgradeable.isContract(newBeacon), \\\"ERC1967: new beacon is not a contract\\\");\\n require(\\n AddressUpgradeable.isContract(IBeaconUpgradeable(newBeacon).implementation()),\\n \\\"ERC1967: beacon implementation is not a contract\\\"\\n );\\n StorageSlotUpgradeable.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n }\\n\\n /**\\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n *\\n * Emits a {BeaconUpgraded} event.\\n */\\n function _upgradeBeaconToAndCall(address newBeacon, bytes memory data, bool forceCall) internal {\\n _setBeacon(newBeacon);\\n emit BeaconUpgraded(newBeacon);\\n if (data.length > 0 || forceCall) {\\n AddressUpgradeable.functionDelegateCall(IBeaconUpgradeable(newBeacon).implementation(), data);\\n }\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x7795808e3899c805254e3ae58074b20f799b466e3f43e057e47bedee5fb771f8\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeaconUpgradeable {\\n /**\\n * @dev Must return an address that can be used as a delegate call target.\\n *\\n * {BeaconProxy} will check that this address is a contract.\\n */\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/UUPSUpgradeable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport \\\"../ERC1967/ERC1967UpgradeUpgradeable.sol\\\";\\nimport {Initializable} from \\\"./Initializable.sol\\\";\\n\\n/**\\n * @dev An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an\\n * {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy.\\n *\\n * A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is\\n * reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing\\n * `UUPSUpgradeable` with a custom implementation of upgrades.\\n *\\n * The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism.\\n *\\n * _Available since v4.1._\\n */\\nabstract contract UUPSUpgradeable is Initializable, IERC1822ProxiableUpgradeable, ERC1967UpgradeUpgradeable {\\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable state-variable-assignment\\n address private immutable __self = address(this);\\n\\n /**\\n * @dev Check that the execution is being performed through a delegatecall call and that the execution context is\\n * a proxy contract with an implementation (as defined in ERC1967) pointing to self. This should only be the case\\n * for UUPS and transparent proxies that are using the current contract as their implementation. Execution of a\\n * function through ERC1167 minimal proxies (clones) would not normally pass this test, but is not guaranteed to\\n * fail.\\n */\\n modifier onlyProxy() {\\n require(address(this) != __self, \\\"Function must be called through delegatecall\\\");\\n require(_getImplementation() == __self, \\\"Function must be called through active proxy\\\");\\n _;\\n }\\n\\n /**\\n * @dev Check that the execution is not being performed through a delegate call. This allows a function to be\\n * callable on the implementing contract but not through proxies.\\n */\\n modifier notDelegated() {\\n require(address(this) == __self, \\\"UUPSUpgradeable: must not be called through delegatecall\\\");\\n _;\\n }\\n\\n function __UUPSUpgradeable_init() internal onlyInitializing {\\n }\\n\\n function __UUPSUpgradeable_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the\\n * implementation. It is used to validate the implementation's compatibility when performing an upgrade.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\\n */\\n function proxiableUUID() external view virtual override notDelegated returns (bytes32) {\\n return _IMPLEMENTATION_SLOT;\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy to `newImplementation`.\\n *\\n * Calls {_authorizeUpgrade}.\\n *\\n * Emits an {Upgraded} event.\\n *\\n * @custom:oz-upgrades-unsafe-allow-reachable delegatecall\\n */\\n function upgradeTo(address newImplementation) public virtual onlyProxy {\\n _authorizeUpgrade(newImplementation);\\n _upgradeToAndCallUUPS(newImplementation, new bytes(0), false);\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call\\n * encoded in `data`.\\n *\\n * Calls {_authorizeUpgrade}.\\n *\\n * Emits an {Upgraded} event.\\n *\\n * @custom:oz-upgrades-unsafe-allow-reachable delegatecall\\n */\\n function upgradeToAndCall(address newImplementation, bytes memory data) public payable virtual onlyProxy {\\n _authorizeUpgrade(newImplementation);\\n _upgradeToAndCallUUPS(newImplementation, data, true);\\n }\\n\\n /**\\n * @dev Function that should revert when `msg.sender` is not authorized to upgrade the contract. Called by\\n * {upgradeTo} and {upgradeToAndCall}.\\n *\\n * Normally, this function will use an xref:access.adoc[access control] modifier such as {Ownable-onlyOwner}.\\n *\\n * ```solidity\\n * function _authorizeUpgrade(address) internal override onlyOwner {}\\n * ```\\n */\\n function _authorizeUpgrade(address newImplementation) internal virtual;\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0xefb41f5c1a00249b7a99f0782f8c557865605426a3fb6e5fe9ae334293ae4f33\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n function __Context_init() internal onlyInitializing {\\n }\\n\\n function __Context_init_unchained() internal onlyInitializing {\\n }\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n function _contextSuffixLength() internal view virtual returns (uint256) {\\n return 0;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x75097e35253e7fb282ee4d7f27a80eaacfa759923185bf17302a89cbc059c5ef\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/StorageSlot.sol)\\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```solidity\\n * contract ERC1967 {\\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n * function _getImplementation() internal view returns (address) {\\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n * }\\n *\\n * function _setImplementation(address newImplementation) internal {\\n * require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n * }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._\\n * _Available since v4.9 for `string`, `bytes`._\\n */\\nlibrary StorageSlotUpgradeable {\\n struct AddressSlot {\\n address value;\\n }\\n\\n struct BooleanSlot {\\n bool value;\\n }\\n\\n struct Bytes32Slot {\\n bytes32 value;\\n }\\n\\n struct Uint256Slot {\\n uint256 value;\\n }\\n\\n struct StringSlot {\\n string value;\\n }\\n\\n struct BytesSlot {\\n bytes value;\\n }\\n\\n /**\\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n */\\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n */\\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n */\\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n */\\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` with member `value` located at `slot`.\\n */\\n function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\\n */\\n function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` with member `value` located at `slot`.\\n */\\n function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\\n */\\n function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n}\\n\",\"keccak256\":\"0x07ac95acad040f1fb1f6120dd0aa5f702db69446e95f82613721879d30de0908\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165Upgradeable.sol\\\";\\nimport {Initializable} from \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165Upgradeable is Initializable, IERC165Upgradeable {\\n function __ERC165_init() internal onlyInitializing {\\n }\\n\\n function __ERC165_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165Upgradeable).interfaceId;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0xd90d7723512df65ae417adaf0801042940f0dabd60039ceeaffe34aa5b238da1\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165Upgradeable {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\"},\"src/dao/IDAO.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IDAO\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for DAOs within the Aragon App DAO framework.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IDAO {\\n /// @notice The action struct to be consumed by the DAO's `execute` function resulting in an external call.\\n /// @param to The address to call.\\n /// @param value The native token value to be sent with the call.\\n /// @param data The bytes-encoded function selector and calldata for the call.\\n struct Action {\\n address to;\\n uint256 value;\\n bytes data;\\n }\\n\\n /// @notice Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\\n /// @param _where The address of the contract.\\n /// @param _who The address of a EOA or contract to give the permissions.\\n /// @param _permissionId The permission identifier.\\n /// @param _data The optional data passed to the `PermissionCondition` registered.\\n /// @return Returns true if the address has permission, false if not.\\n function hasPermission(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes memory _data\\n ) external view returns (bool);\\n\\n /// @notice Updates the DAO metadata (e.g., an IPFS hash).\\n /// @param _metadata The IPFS hash of the new metadata object.\\n function setMetadata(bytes calldata _metadata) external;\\n\\n /// @notice Emitted when the DAO metadata is updated.\\n /// @param metadata The IPFS hash of the new metadata object.\\n event MetadataSet(bytes metadata);\\n\\n /// @notice Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted.\\n /// @param _callId The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce.\\n /// @param _actions The array of actions.\\n /// @param _allowFailureMap A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @return The array of results obtained from the executed actions in `bytes`.\\n /// @return The resulting failure map containing the actions have actually failed.\\n function execute(\\n bytes32 _callId,\\n Action[] memory _actions,\\n uint256 _allowFailureMap\\n ) external returns (bytes[] memory, uint256);\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param actor The address of the caller.\\n /// @param callId The ID of the call.\\n /// @param actions The array of actions executed.\\n /// @param allowFailureMap The allow failure map encoding which actions are allowed to fail.\\n /// @param failureMap The failure map encoding which actions have failed.\\n /// @param execResults The array with the results of the executed actions.\\n /// @dev The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce.\\n event Executed(\\n address indexed actor,\\n bytes32 callId,\\n Action[] actions,\\n uint256 allowFailureMap,\\n uint256 failureMap,\\n bytes[] execResults\\n );\\n\\n /// @notice Emitted when a standard callback is registered.\\n /// @param interfaceId The ID of the interface.\\n /// @param callbackSelector The selector of the callback function.\\n /// @param magicNumber The magic number to be registered for the callback function selector.\\n event StandardCallbackRegistered(\\n bytes4 interfaceId,\\n bytes4 callbackSelector,\\n bytes4 magicNumber\\n );\\n\\n /// @notice Deposits (native) tokens to the DAO contract with a reference string.\\n /// @param _token The address of the token or address(0) in case of the native token.\\n /// @param _amount The amount of tokens to deposit.\\n /// @param _reference The reference describing the deposit reason.\\n function deposit(address _token, uint256 _amount, string calldata _reference) external payable;\\n\\n /// @notice Emitted when a token deposit has been made to the DAO.\\n /// @param sender The address of the sender.\\n /// @param token The address of the deposited token.\\n /// @param amount The amount of tokens deposited.\\n /// @param _reference The reference describing the deposit reason.\\n event Deposited(\\n address indexed sender,\\n address indexed token,\\n uint256 amount,\\n string _reference\\n );\\n\\n /// @notice Emitted when a native token deposit has been made to the DAO.\\n /// @dev This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).\\n /// @param sender The address of the sender.\\n /// @param amount The amount of native tokens deposited.\\n event NativeTokenDeposited(address sender, uint256 amount);\\n\\n /// @notice Setter for the trusted forwarder verifying the meta transaction.\\n /// @param _trustedForwarder The trusted forwarder address.\\n function setTrustedForwarder(address _trustedForwarder) external;\\n\\n /// @notice Getter for the trusted forwarder verifying the meta transaction.\\n /// @return The trusted forwarder address.\\n function getTrustedForwarder() external view returns (address);\\n\\n /// @notice Emitted when a new TrustedForwarder is set on the DAO.\\n /// @param forwarder the new forwarder address.\\n event TrustedForwarderSet(address forwarder);\\n\\n /// @notice Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\\n /// @param _hash The hash of the data to be signed.\\n /// @param _signature The signature byte array associated with `_hash`.\\n /// @return Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not.\\n function isValidSignature(bytes32 _hash, bytes memory _signature) external returns (bytes4);\\n\\n /// @notice Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\\n /// @param _interfaceId The ID of the interface.\\n /// @param _callbackSelector The selector of the callback function.\\n /// @param _magicNumber The magic number to be registered for the function signature.\\n function registerStandardCallback(\\n bytes4 _interfaceId,\\n bytes4 _callbackSelector,\\n bytes4 _magicNumber\\n ) external;\\n\\n /// @notice Removed function being left here to not corrupt the IDAO interface ID. Any call will revert.\\n /// @dev Introduced in v1.0.0. Removed in v1.4.0.\\n function setSignatureValidator(address) external;\\n}\\n\",\"keccak256\":\"0xb7f615523c26de042edce98731c658f44a1edb2464387ac1b642c4c69f57128e\",\"license\":\"AGPL-3.0-or-later\"},\"src/mocks/plugin/PluginUUPSUpgradeableMock.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\n/* solhint-disable one-contract-per-file */\\npragma solidity ^0.8.8;\\n\\nimport {PluginUUPSUpgradeable} from \\\"../../plugin/PluginUUPSUpgradeable.sol\\\";\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice A mock upgradeable plugin to be deployed via the UUPS proxy pattern.\\n/// v1.1 (Release 1, Build 1)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableMockBuild1 is PluginUUPSUpgradeable {\\n uint256 public state1;\\n\\n function initialize(IDAO _dao) external initializer {\\n __PluginUUPSUpgradeable_init(_dao);\\n state1 = 1;\\n }\\n}\\n\\n/// @notice A mock upgradeable plugin to be deployed via the UUPS proxy pattern.\\n/// v1.1 (Release 1, Build 2)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableMockBuild2 is PluginUUPSUpgradeable {\\n uint256 public state1;\\n uint256 public state2;\\n\\n function initialize(IDAO _dao) external reinitializer(2) {\\n __PluginUUPSUpgradeable_init(_dao);\\n state1 = 1;\\n state2 = 2;\\n }\\n\\n function initializeFrom(uint16 _previousBuild) external reinitializer(2) {\\n if (_previousBuild < 2) {\\n state2 = 2;\\n }\\n }\\n}\\n\\n/// @notice A mock upgradeable plugin to be deployed via the UUPS proxy pattern.\\n/// v1.1 (Release 1, Build 3)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableMockBuild3 is PluginUUPSUpgradeable {\\n uint256 public state1;\\n uint256 public state2;\\n uint256 public state3;\\n\\n function initialize(IDAO _dao) external reinitializer(3) {\\n __PluginUUPSUpgradeable_init(_dao);\\n state1 = 1;\\n state2 = 2;\\n state3 = 3;\\n }\\n\\n function initializeFrom(uint16 _previousBuild) external reinitializer(3) {\\n if (_previousBuild < 2) {\\n state2 = 2;\\n }\\n if (_previousBuild < 3) {\\n state3 = 3;\\n }\\n }\\n}\\n\\n/// @notice A mock upgradeable plugin missing an initializer function.\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableMockBad is PluginUUPSUpgradeable {\\n uint256 public state1;\\n\\n function notAnInitializer(IDAO _dao) external {\\n __PluginUUPSUpgradeable_init(_dao);\\n state1 = 1;\\n }\\n}\\n\",\"keccak256\":\"0x2917df3b1da0de27f58cf531afeaa4e6c4285717247cbdd9ecc7880ae5cb9cb0\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/DaoAuthorizableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ContextUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\\\";\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\nimport {_auth} from \\\"./auth.sol\\\";\\n\\n/// @title DaoAuthorizableUpgradeable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract contract providing a meta-transaction compatible modifier for upgradeable or cloneable contracts to authorize function calls through an associated DAO.\\n/// @dev Make sure to call `__DaoAuthorizableUpgradeable_init` during initialization of the inheriting contract.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract DaoAuthorizableUpgradeable is ContextUpgradeable {\\n /// @notice The associated DAO managing the permissions of inheriting contracts.\\n IDAO private dao_;\\n\\n /// @notice Initializes the contract by setting the associated DAO.\\n /// @param _dao The associated DAO address.\\n // solhint-disable-next-line func-name-mixedcase\\n function __DaoAuthorizableUpgradeable_init(IDAO _dao) internal onlyInitializing {\\n dao_ = _dao;\\n }\\n\\n /// @notice Returns the DAO contract.\\n /// @return The DAO contract.\\n function dao() public view returns (IDAO) {\\n return dao_;\\n }\\n\\n /// @notice A modifier to make functions on inheriting contracts authorized. Permissions to call the function are checked through the associated DAO's permission manager.\\n /// @param _permissionId The permission identifier required to call the method this modifier is applied to.\\n modifier auth(bytes32 _permissionId) {\\n _auth(dao_, address(this), _msgSender(), _permissionId, _msgData());\\n _;\\n }\\n\\n /// @notice This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain (see [OpenZeppelin's guide about storage gaps](https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps)).\\n uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0x7fac6b01b037ba1cb9d6a22d3f43b0785037dcf496ffb672434d9bf7227d2585\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/auth.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice Thrown if a call is unauthorized in the associated DAO.\\n/// @param dao The associated DAO.\\n/// @param where The context in which the authorization reverted.\\n/// @param who The address (EOA or contract) missing the permission.\\n/// @param permissionId The permission identifier.\\nerror DaoUnauthorized(address dao, address where, address who, bytes32 permissionId);\\n\\n/// @notice A free function checking if a caller is granted permissions on a target contract via a permission identifier that redirects the approval to a `PermissionCondition` if this was specified in the setup.\\n/// @param _where The address of the target contract for which `who` receives permission.\\n/// @param _who The address (EOA or contract) owning the permission.\\n/// @param _permissionId The permission identifier.\\n/// @param _data The optional data passed to the `PermissionCondition` registered.\\n/// @custom:security-contact sirt@aragon.org\\nfunction _auth(\\n IDAO _dao,\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes calldata _data\\n) view {\\n if (!_dao.hasPermission(_where, _who, _permissionId, _data))\\n revert DaoUnauthorized({\\n dao: address(_dao),\\n where: _where,\\n who: _who,\\n permissionId: _permissionId\\n });\\n}\\n\",\"keccak256\":\"0x878764b4f87fe0651fb3798fb9cb87c952f8c6caf6ae79c7f09de84df6c00298\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/IPlugin.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IPlugin\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the traits of a plugin.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IPlugin {\\n enum PluginType {\\n UUPS,\\n Cloneable,\\n Constructable\\n }\\n\\n /// @notice Returns the plugin's type\\n function pluginType() external view returns (PluginType);\\n}\\n\",\"keccak256\":\"0xc57cd0d10b6380ab7f54c713a509e88fd8f4ad9288313a0e8e12b8887817ddfe\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/PluginUUPSUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {UUPSUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\\\";\\nimport {IERC1822ProxiableUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport {ERC165Upgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\\\";\\n\\nimport {IProtocolVersion} from \\\"../utils/versioning/IProtocolVersion.sol\\\";\\nimport {ProtocolVersion} from \\\"../utils/versioning/ProtocolVersion.sol\\\";\\nimport {DaoAuthorizableUpgradeable} from \\\"../permission/auth/DaoAuthorizableUpgradeable.sol\\\";\\nimport {IDAO} from \\\"../dao/IDAO.sol\\\";\\nimport {IPlugin} from \\\"./IPlugin.sol\\\";\\n\\n/// @title PluginUUPSUpgradeable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract, upgradeable contract to inherit from when creating a plugin being deployed via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract PluginUUPSUpgradeable is\\n IPlugin,\\n ERC165Upgradeable,\\n UUPSUpgradeable,\\n DaoAuthorizableUpgradeable,\\n ProtocolVersion\\n{\\n // NOTE: When adding new state variables to the contract, the size of `_gap` has to be adapted below as well.\\n\\n /// @notice Disables the initializers on the implementation contract to prevent it from being left uninitialized.\\n /// @custom:oz-upgrades-unsafe-allow constructor\\n constructor() {\\n _disableInitializers();\\n }\\n\\n /// @inheritdoc IPlugin\\n function pluginType() public pure override returns (PluginType) {\\n return PluginType.UUPS;\\n }\\n\\n /// @notice The ID of the permission required to call the `_authorizeUpgrade` function.\\n bytes32 public constant UPGRADE_PLUGIN_PERMISSION_ID = keccak256(\\\"UPGRADE_PLUGIN_PERMISSION\\\");\\n\\n /// @notice Initializes the plugin by storing the associated DAO.\\n /// @param _dao The DAO contract.\\n // solhint-disable-next-line func-name-mixedcase\\n function __PluginUUPSUpgradeable_init(IDAO _dao) internal virtual onlyInitializing {\\n __DaoAuthorizableUpgradeable_init(_dao);\\n }\\n\\n /// @notice Checks if an interface is supported by this or its parent contract.\\n /// @param _interfaceId The ID of the interface.\\n /// @return Returns `true` if the interface is supported.\\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\\n return\\n _interfaceId == type(IPlugin).interfaceId ||\\n _interfaceId == type(IProtocolVersion).interfaceId ||\\n _interfaceId == type(IERC1822ProxiableUpgradeable).interfaceId ||\\n super.supportsInterface(_interfaceId);\\n }\\n\\n /// @notice Returns the address of the implementation contract in the [proxy storage slot](https://eips.ethereum.org/EIPS/eip-1967) slot the [UUPS proxy](https://eips.ethereum.org/EIPS/eip-1822) is pointing to.\\n /// @return The address of the implementation contract.\\n function implementation() public view returns (address) {\\n return _getImplementation();\\n }\\n\\n /// @notice Internal method authorizing the upgrade of the contract via the [upgradeability mechanism for UUPS proxies](https://docs.openzeppelin.com/contracts/4.x/api/proxy#UUPSUpgradeable) (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\\n /// @dev The caller must have the `UPGRADE_PLUGIN_PERMISSION_ID` permission.\\n function _authorizeUpgrade(\\n address\\n )\\n internal\\n virtual\\n override\\n auth(UPGRADE_PLUGIN_PERMISSION_ID)\\n // solhint-disable-next-line no-empty-blocks\\n {\\n\\n }\\n\\n /// @notice This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain (see [OpenZeppelin's guide about storage gaps](https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps)).\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x127e7c4f839cb8c8486070990b78e22313f1ff089ffe6a4ff23ae358e48f0037\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/IProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IProtocolVersion\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the semantic Aragon OSx protocol version number.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IProtocolVersion {\\n /// @notice Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\\n /// @return _version Returns the semantic Aragon OSx protocol version number.\\n /// @dev This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\\n function protocolVersion() external view returns (uint8[3] memory _version);\\n}\\n\",\"keccak256\":\"0x00a4da654d21dc1bdadbdc8bd54bb86c378c56f85e461ccc31303628ea621361\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/ProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IProtocolVersion} from \\\"./IProtocolVersion.sol\\\";\\n\\n/// @title ProtocolVersion\\n/// @author Aragon X - 2023\\n/// @notice An abstract, stateless, non-upgradeable contract providing the current Aragon OSx protocol version number.\\n/// @dev Do not add any new variables to this contract that would shift down storage in the inheritance chain.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract ProtocolVersion is IProtocolVersion {\\n // IMPORTANT: Do not add any storage variable, see the above notice.\\n\\n /// @inheritdoc IProtocolVersion\\n function protocolVersion() public pure returns (uint8[3] memory) {\\n return [1, 4, 0];\\n }\\n}\\n\",\"keccak256\":\"0x3975c937be935f687c6b6b8f379071232681e98cf04b175d72781b819ea52bdb\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[{"astId":372,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild1","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":375,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild1","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":2821,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild1","label":"__gap","offset":0,"slot":"1","type":"t_array(t_uint256)50_storage"},{"astId":354,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild1","label":"__gap","offset":0,"slot":"51","type":"t_array(t_uint256)50_storage"},{"astId":670,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild1","label":"__gap","offset":0,"slot":"101","type":"t_array(t_uint256)50_storage"},{"astId":2592,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild1","label":"__gap","offset":0,"slot":"151","type":"t_array(t_uint256)50_storage"},{"astId":13111,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild1","label":"dao_","offset":0,"slot":"201","type":"t_contract(IDAO)10865"},{"astId":13160,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild1","label":"__gap","offset":0,"slot":"202","type":"t_array(t_uint256)49_storage"},{"astId":13632,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild1","label":"__gap","offset":0,"slot":"251","type":"t_array(t_uint256)50_storage"},{"astId":11771,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild1","label":"state1","offset":0,"slot":"301","type":"t_uint256"}],"types":{"t_array(t_uint256)49_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[49]","numberOfBytes":"1568"},"t_array(t_uint256)50_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[50]","numberOfBytes":"1600"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_contract(IDAO)10865":{"encoding":"inplace","label":"contract IDAO","numberOfBytes":"20"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"errors":{"DaoUnauthorized(address,address,address,bytes32)":[{"notice":"Thrown if a call is unauthorized in the associated DAO."}]},"kind":"user","methods":{"UPGRADE_PLUGIN_PERMISSION_ID()":{"notice":"The ID of the permission required to call the `_authorizeUpgrade` function."},"dao()":{"notice":"Returns the DAO contract."},"implementation()":{"notice":"Returns the address of the implementation contract in the [proxy storage slot](https://eips.ethereum.org/EIPS/eip-1967) slot the [UUPS proxy](https://eips.ethereum.org/EIPS/eip-1822) is pointing to."},"pluginType()":{"notice":"Returns the plugin's type"},"protocolVersion()":{"notice":"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with."},"supportsInterface(bytes4)":{"notice":"Checks if an interface is supported by this or its parent contract."}},"notice":"A mock upgradeable plugin to be deployed via the UUPS proxy pattern. v1.1 (Release 1, Build 1)","version":1}},"PluginUUPSUpgradeableMockBuild2":{"abi":[{"inputs":[{"internalType":"address","name":"dao","type":"address"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"name":"DaoUnauthorized","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"beacon","type":"address"}],"name":"BeaconUpgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"inputs":[],"name":"UPGRADE_PLUGIN_PERMISSION_ID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dao","outputs":[{"internalType":"contract IDAO","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IDAO","name":"_dao","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"_previousBuild","type":"uint16"}],"name":"initializeFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pluginType","outputs":[{"internalType":"enum IPlugin.PluginType","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"protocolVersion","outputs":[{"internalType":"uint8[3]","name":"","type":"uint8[3]"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"state1","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"state2","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"}],"name":"upgradeTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"}],"devdoc":{"details":"DO NOT USE IN PRODUCTION!","errors":{"DaoUnauthorized(address,address,address,bytes32)":[{"params":{"dao":"The associated DAO.","permissionId":"The permission identifier.","where":"The context in which the authorization reverted.","who":"The address (EOA or contract) missing the permission."}}]},"kind":"dev","methods":{"dao()":{"returns":{"_0":"The DAO contract."}},"implementation()":{"returns":{"_0":"The address of the implementation contract."}},"protocolVersion()":{"details":"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.","returns":{"_0":"Returns the semantic Aragon OSx protocol version number."}},"proxiableUUID()":{"details":"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier."},"supportsInterface(bytes4)":{"params":{"_interfaceId":"The ID of the interface."},"returns":{"_0":"Returns `true` if the interface is supported."}},"upgradeTo(address)":{"custom:oz-upgrades-unsafe-allow-reachable":"delegatecall","details":"Upgrade the implementation of the proxy to `newImplementation`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."},"upgradeToAndCall(address,bytes)":{"custom:oz-upgrades-unsafe-allow-reachable":"delegatecall","details":"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."}},"version":1},"evm":{"bytecode":{"functionDebugData":{"@_13538":{"entryPoint":null,"id":13538,"parameterSlots":0,"returnSlots":0},"@_disableInitializers_515":{"entryPoint":34,"id":515,"parameterSlots":0,"returnSlots":0},"abi_encode_tuple_t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:608:92","statements":[{"nodeType":"YulBlock","src":"6:3:92","statements":[]},{"body":{"nodeType":"YulBlock","src":"188:229:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"205:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"216:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"198:6:92"},"nodeType":"YulFunctionCall","src":"198:21:92"},"nodeType":"YulExpressionStatement","src":"198:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"239:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"250:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"235:3:92"},"nodeType":"YulFunctionCall","src":"235:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"255:2:92","type":"","value":"39"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"228:6:92"},"nodeType":"YulFunctionCall","src":"228:30:92"},"nodeType":"YulExpressionStatement","src":"228:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"278:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"289:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"274:3:92"},"nodeType":"YulFunctionCall","src":"274:18:92"},{"hexValue":"496e697469616c697a61626c653a20636f6e747261637420697320696e697469","kind":"string","nodeType":"YulLiteral","src":"294:34:92","type":"","value":"Initializable: contract is initi"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"267:6:92"},"nodeType":"YulFunctionCall","src":"267:62:92"},"nodeType":"YulExpressionStatement","src":"267:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"349:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"360:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"345:3:92"},"nodeType":"YulFunctionCall","src":"345:18:92"},{"hexValue":"616c697a696e67","kind":"string","nodeType":"YulLiteral","src":"365:9:92","type":"","value":"alizing"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"338:6:92"},"nodeType":"YulFunctionCall","src":"338:37:92"},"nodeType":"YulExpressionStatement","src":"338:37:92"},{"nodeType":"YulAssignment","src":"384:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"396:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"407:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"392:3:92"},"nodeType":"YulFunctionCall","src":"392:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"384:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"165:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"179:4:92","type":""}],"src":"14:403:92"},{"body":{"nodeType":"YulBlock","src":"519:87:92","statements":[{"nodeType":"YulAssignment","src":"529:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"541:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"552:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"537:3:92"},"nodeType":"YulFunctionCall","src":"537:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"529:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"571:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"586:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"594:4:92","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"582:3:92"},"nodeType":"YulFunctionCall","src":"582:17:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"564:6:92"},"nodeType":"YulFunctionCall","src":"564:36:92"},"nodeType":"YulExpressionStatement","src":"564:36:92"}]},"name":"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"488:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"499:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"510:4:92","type":""}],"src":"422:184:92"}]},"contents":"{\n { }\n function abi_encode_tuple_t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 39)\n mstore(add(headStart, 64), \"Initializable: contract is initi\")\n mstore(add(headStart, 96), \"alizing\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xff))\n }\n}","id":92,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60a06040523060805234801561001457600080fd5b5061001d610022565b6100e1565b600054610100900460ff161561008e5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116146100df576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b60805161122461011860003960008181610423015281816104a80152818161059e01528181610623015261070d01526112246000f3fe6080604052600436106100d25760003560e01c80634f1ef2861161007f5780636accab8c116100595780636accab8c14610209578063c4d66de814610220578063c9c4bfca14610240578063efe51cca1461027457600080fd5b80634f1ef286146101be57806352d1902d146101d15780635c60da1b146101f457600080fd5b80633659cfe6116100b05780633659cfe6146101505780634162169f1461017057806341de6830146101a257600080fd5b806301ffc9a7146100d7578063039a8c501461010c5780632ae9c6001461012e575b600080fd5b3480156100e357600080fd5b506100f76100f2366004610f38565b61028b565b60405190151581526020015b60405180910390f35b34801561011857600080fd5b5061012c610127366004610f62565b6102f7565b005b34801561013a57600080fd5b506101436103ef565b6040516101039190610f86565b34801561015c57600080fd5b5061012c61016b366004610fcf565b610419565b34801561017c57600080fd5b5060c9546001600160a01b03165b6040516001600160a01b039091168152602001610103565b3480156101ae57600080fd5b5060006040516101039190610fec565b61012c6101cc36600461102a565b610594565b3480156101dd57600080fd5b506101e6610700565b604051908152602001610103565b34801561020057600080fd5b5061018a6107c5565b34801561021557600080fd5b506101e661012d5481565b34801561022c57600080fd5b5061012c61023b366004610fcf565b6107fd565b34801561024c57600080fd5b506101e67f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f581565b34801561028057600080fd5b506101e661012e5481565b60006001600160e01b0319821663041de68360e41b14806102bb57506001600160e01b03198216621574e360e91b145b806102d657506001600160e01b031982166352d1902d60e01b145b806102f157506301ffc9a760e01b6001600160e01b03198316145b92915050565b600054600290610100900460ff16158015610319575060005460ff8083169116105b6103815760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805461ffff191660ff831617610100179055600261ffff831610156103a957600261012e555b6000805461ff001916905560405160ff821681527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b6103f7610f1a565b5060408051606081018252600181526004602082015260009181019190915290565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036104a65760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b6064820152608401610378565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166105017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b03161461056c5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b6064820152608401610378565b610575816108e9565b6040805160008082526020820190925261059191839190610926565b50565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036106215760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b6064820152608401610378565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661067c7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b0316146106e75760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b6064820152608401610378565b6106f0826108e9565b6106fc82826001610926565b5050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146107a05760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610378565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b60006107f87f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b600054600290610100900460ff1615801561081f575060005460ff8083169116105b6108825760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610378565b6000805461ffff191660ff83161761010017905561089f82610acb565b600161012d55600261012e556000805461ff001916905560405160ff821681527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020016103e3565b60c9547f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f5906106fc906001600160a01b0316303384600036610b3f565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561095e5761095983610bfb565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156109b8575060408051601f3d908101601f191682019092526109b5918101906110ee565b60015b610a2a5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201527f6f6e206973206e6f7420555550530000000000000000000000000000000000006064820152608401610378565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114610abf5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f7860448201527f6961626c655555494400000000000000000000000000000000000000000000006064820152608401610378565b50610959838383610cc6565b600054610100900460ff16610b365760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610378565b61059181610cf1565b604051637ef7c88360e11b81526001600160a01b0387169063fdef910690610b739088908890889088908890600401611107565b602060405180830381865afa158015610b90573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bb4919061115b565b610bf357604051630cb6f8ed60e21b81526001600160a01b03808816600483015280871660248301528516604482015260648101849052608401610378565b505050505050565b6001600160a01b0381163b610c785760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e7472616374000000000000000000000000000000000000006064820152608401610378565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610ccf83610d8b565b600082511180610cdc5750805b1561095957610ceb8383610dcb565b50505050565b600054610100900460ff16610d5c5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610378565b60c9805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610d9481610bfb565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060610df083836040518060600160405280602781526020016111f160279139610df7565b9392505050565b6060600080856001600160a01b031685604051610e1491906111a1565b600060405180830381855af49150503d8060008114610e4f576040519150601f19603f3d011682016040523d82523d6000602084013e610e54565b606091505b5091509150610e6586838387610e6f565b9695505050505050565b60608315610ede578251600003610ed7576001600160a01b0385163b610ed75760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610378565b5081610ee8565b610ee88383610ef0565b949350505050565b815115610f005781518083602001fd5b8060405162461bcd60e51b815260040161037891906111bd565b60405180606001604052806003906020820280368337509192915050565b600060208284031215610f4a57600080fd5b81356001600160e01b031981168114610df057600080fd5b600060208284031215610f7457600080fd5b813561ffff81168114610df057600080fd5b60608101818360005b6003811015610fb157815160ff16835260209283019290910190600101610f8f565b50505092915050565b6001600160a01b038116811461059157600080fd5b600060208284031215610fe157600080fd5b8135610df081610fba565b602081016003831061100e57634e487b7160e01b600052602160045260246000fd5b91905290565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561103d57600080fd5b823561104881610fba565b9150602083013567ffffffffffffffff8082111561106557600080fd5b818501915085601f83011261107957600080fd5b81358181111561108b5761108b611014565b604051601f8201601f19908116603f011681019083821181831017156110b3576110b3611014565b816040528281528860208487010111156110cc57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60006020828403121561110057600080fd5b5051919050565b60006001600160a01b03808816835280871660208401525084604083015260806060830152826080830152828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b60006020828403121561116d57600080fd5b81518015158114610df057600080fd5b60005b83811015611198578181015183820152602001611180565b50506000910152565b600082516111b381846020870161117d565b9190910192915050565b60208152600082518060208401526111dc81604085016020870161117d565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a","opcodes":"PUSH1 0xA0 PUSH1 0x40 MSTORE ADDRESS PUSH1 0x80 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x14 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1D PUSH2 0x22 JUMP JUMPDEST PUSH2 0xE1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x8E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x27 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320696E697469 PUSH1 0x44 DUP3 ADD MSTORE PUSH7 0x616C697A696E67 PUSH1 0xC8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xFF SWAP1 DUP2 AND EQ PUSH2 0xDF JUMPI PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH2 0x1224 PUSH2 0x118 PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH2 0x423 ADD MSTORE DUP2 DUP2 PUSH2 0x4A8 ADD MSTORE DUP2 DUP2 PUSH2 0x59E ADD MSTORE DUP2 DUP2 PUSH2 0x623 ADD MSTORE PUSH2 0x70D ADD MSTORE PUSH2 0x1224 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xD2 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x4F1EF286 GT PUSH2 0x7F JUMPI DUP1 PUSH4 0x6ACCAB8C GT PUSH2 0x59 JUMPI DUP1 PUSH4 0x6ACCAB8C EQ PUSH2 0x209 JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0x220 JUMPI DUP1 PUSH4 0xC9C4BFCA EQ PUSH2 0x240 JUMPI DUP1 PUSH4 0xEFE51CCA EQ PUSH2 0x274 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x1BE JUMPI DUP1 PUSH4 0x52D1902D EQ PUSH2 0x1D1 JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0x1F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x3659CFE6 GT PUSH2 0xB0 JUMPI DUP1 PUSH4 0x3659CFE6 EQ PUSH2 0x150 JUMPI DUP1 PUSH4 0x4162169F EQ PUSH2 0x170 JUMPI DUP1 PUSH4 0x41DE6830 EQ PUSH2 0x1A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xD7 JUMPI DUP1 PUSH4 0x39A8C50 EQ PUSH2 0x10C JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0x12E JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xE3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF7 PUSH2 0xF2 CALLDATASIZE PUSH1 0x4 PUSH2 0xF38 JUMP JUMPDEST PUSH2 0x28B JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x118 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x12C PUSH2 0x127 CALLDATASIZE PUSH1 0x4 PUSH2 0xF62 JUMP JUMPDEST PUSH2 0x2F7 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x13A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x143 PUSH2 0x3EF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x103 SWAP2 SWAP1 PUSH2 0xF86 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x15C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x12C PUSH2 0x16B CALLDATASIZE PUSH1 0x4 PUSH2 0xFCF JUMP JUMPDEST PUSH2 0x419 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x17C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xC9 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x103 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 PUSH1 0x40 MLOAD PUSH2 0x103 SWAP2 SWAP1 PUSH2 0xFEC JUMP JUMPDEST PUSH2 0x12C PUSH2 0x1CC CALLDATASIZE PUSH1 0x4 PUSH2 0x102A JUMP JUMPDEST PUSH2 0x594 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1E6 PUSH2 0x700 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x103 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x200 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x18A PUSH2 0x7C5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x215 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1E6 PUSH2 0x12D SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x22C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x12C PUSH2 0x23B CALLDATASIZE PUSH1 0x4 PUSH2 0xFCF JUMP JUMPDEST PUSH2 0x7FD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x24C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1E6 PUSH32 0x821B6E3A557148015A918C89E5D092E878A69854A2D1A410635F771BD5A8A3F5 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x280 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1E6 PUSH2 0x12E SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x41DE683 PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x2BB JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x2D6 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x52D1902D PUSH1 0xE0 SHL EQ JUMPDEST DUP1 PUSH2 0x2F1 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x2 SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH2 0x319 JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF DUP1 DUP4 AND SWAP2 AND LT JUMPDEST PUSH2 0x381 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x44 DUP3 ADD MSTORE PUSH14 0x191E481A5B9A5D1A585B1A5E9959 PUSH1 0x92 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH2 0xFFFF NOT AND PUSH1 0xFF DUP4 AND OR PUSH2 0x100 OR SWAP1 SSTORE PUSH1 0x2 PUSH2 0xFFFF DUP4 AND LT ISZERO PUSH2 0x3A9 JUMPI PUSH1 0x2 PUSH2 0x12E SSTORE JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH1 0xFF DUP3 AND DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH2 0x3F7 PUSH2 0xF1A JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x4A6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x19195B1959D85D1958D85B1B PUSH1 0xA2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x378 JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x501 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x56C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x6163746976652070726F7879 PUSH1 0xA0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x378 JUMP JUMPDEST PUSH2 0x575 DUP2 PUSH2 0x8E9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x591 SWAP2 DUP4 SWAP2 SWAP1 PUSH2 0x926 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x621 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x19195B1959D85D1958D85B1B PUSH1 0xA2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x378 JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x67C PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x6E7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x6163746976652070726F7879 PUSH1 0xA0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x378 JUMP JUMPDEST PUSH2 0x6F0 DUP3 PUSH2 0x8E9 JUMP JUMPDEST PUSH2 0x6FC DUP3 DUP3 PUSH1 0x1 PUSH2 0x926 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x7A0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x38 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x555550535570677261646561626C653A206D757374206E6F742062652063616C PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6C6564207468726F7567682064656C656761746563616C6C0000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x378 JUMP JUMPDEST POP PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7F8 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x2 SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH2 0x81F JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF DUP1 DUP4 AND SWAP2 AND LT JUMPDEST PUSH2 0x882 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x44 DUP3 ADD MSTORE PUSH14 0x191E481A5B9A5D1A585B1A5E9959 PUSH1 0x92 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x378 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH2 0xFFFF NOT AND PUSH1 0xFF DUP4 AND OR PUSH2 0x100 OR SWAP1 SSTORE PUSH2 0x89F DUP3 PUSH2 0xACB JUMP JUMPDEST PUSH1 0x1 PUSH2 0x12D SSTORE PUSH1 0x2 PUSH2 0x12E SSTORE PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH1 0xFF DUP3 AND DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH2 0x3E3 JUMP JUMPDEST PUSH1 0xC9 SLOAD PUSH32 0x821B6E3A557148015A918C89E5D092E878A69854A2D1A410635F771BD5A8A3F5 SWAP1 PUSH2 0x6FC SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ADDRESS CALLER DUP5 PUSH1 0x0 CALLDATASIZE PUSH2 0xB3F JUMP JUMPDEST PUSH32 0x4910FDFA16FED3260ED0E7147F7CC6DA11A60208B5B9406D12A635614FFD9143 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x95E JUMPI PUSH2 0x959 DUP4 PUSH2 0xBFB JUMP JUMPDEST POP POP POP JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x52D1902D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x9B8 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x9B5 SWAP2 DUP2 ADD SWAP1 PUSH2 0x10EE JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0xA2A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524331393637557067726164653A206E657720696D706C656D656E74617469 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F6E206973206E6F742055555053000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x378 JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC DUP2 EQ PUSH2 0xABF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524331393637557067726164653A20756E737570706F727465642070726F78 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6961626C65555549440000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x378 JUMP JUMPDEST POP PUSH2 0x959 DUP4 DUP4 DUP4 PUSH2 0xCC6 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0xB36 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x378 JUMP JUMPDEST PUSH2 0x591 DUP2 PUSH2 0xCF1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x7EF7C883 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0xFDEF9106 SWAP1 PUSH2 0xB73 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x1107 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xB90 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xBB4 SWAP2 SWAP1 PUSH2 0x115B JUMP JUMPDEST PUSH2 0xBF3 JUMPI PUSH1 0x40 MLOAD PUSH4 0xCB6F8ED PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND PUSH1 0x4 DUP4 ADD MSTORE DUP1 DUP8 AND PUSH1 0x24 DUP4 ADD MSTORE DUP6 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x84 ADD PUSH2 0x378 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND EXTCODESIZE PUSH2 0xC78 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313936373A206E657720696D706C656D656E746174696F6E206973206E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F74206120636F6E747261637400000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x378 JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xCCF DUP4 PUSH2 0xD8B JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD GT DUP1 PUSH2 0xCDC JUMPI POP DUP1 JUMPDEST ISZERO PUSH2 0x959 JUMPI PUSH2 0xCEB DUP4 DUP4 PUSH2 0xDCB JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0xD5C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x378 JUMP JUMPDEST PUSH1 0xC9 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xD94 DUP2 PUSH2 0xBFB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xDF0 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x11F1 PUSH1 0x27 SWAP2 CODECOPY PUSH2 0xDF7 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0xE14 SWAP2 SWAP1 PUSH2 0x11A1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xE4F JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xE54 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0xE65 DUP7 DUP4 DUP4 DUP8 PUSH2 0xE6F JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0xEDE JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0xED7 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0xED7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x378 JUMP JUMPDEST POP DUP2 PUSH2 0xEE8 JUMP JUMPDEST PUSH2 0xEE8 DUP4 DUP4 PUSH2 0xEF0 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0xF00 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x378 SWAP2 SWAP1 PUSH2 0x11BD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xF4A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0xDF0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xF74 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH2 0xDF0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0xFB1 JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0xF8F JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x591 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xFE1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xDF0 DUP2 PUSH2 0xFBA JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH1 0x3 DUP4 LT PUSH2 0x100E JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 SWAP1 MSTORE SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x103D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x1048 DUP2 PUSH2 0xFBA JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1065 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1079 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x108B JUMPI PUSH2 0x108B PUSH2 0x1014 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x10B3 JUMPI PUSH2 0x10B3 PUSH2 0x1014 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x10CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1100 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND DUP4 MSTORE DUP1 DUP8 AND PUSH1 0x20 DUP5 ADD MSTORE POP DUP5 PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x80 PUSH1 0x60 DUP4 ADD MSTORE DUP3 PUSH1 0x80 DUP4 ADD MSTORE DUP3 DUP5 PUSH1 0xA0 DUP5 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0xA0 DUP5 DUP5 ADD ADD MSTORE PUSH1 0xA0 PUSH1 0x1F NOT PUSH1 0x1F DUP6 ADD AND DUP4 ADD ADD SWAP1 POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x116D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xDF0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1198 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1180 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x11B3 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x117D JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x11DC DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x117D JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A164 PUSH20 0x6F6C6343000811000A0000000000000000000000 ","sourceMap":"755:431:53:-:0;;;1198:4:5;1155:48;;755:431:53;;;;;;;;;-1:-1:-1;1489:22:75;:20;:22::i;:::-;755:431:53;;5939:280:4;6007:13;;;;;;;6006:14;5998:66;;;;-1:-1:-1;;;5998:66:4;;216:2:92;5998:66:4;;;198:21:92;255:2;235:18;;;228:30;294:34;274:18;;;267:62;-1:-1:-1;;;345:18:92;;;338:37;392:19;;5998:66:4;;;;;;;;6078:12;;6094:15;6078:12;;;:31;6074:139;;6125:12;:30;;-1:-1:-1;;6125:30:4;6140:15;6125:30;;;;;;6174:28;;564:36:92;;;6174:28:4;;552:2:92;537:18;6174:28:4;;;;;;;6074:139;5939:280::o;422:184:92:-;755:431:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@UPGRADE_PLUGIN_PERMISSION_ID_13556":{"entryPoint":null,"id":13556,"parameterSlots":0,"returnSlots":0},"@__DaoAuthorizableUpgradeable_init_13125":{"entryPoint":3313,"id":13125,"parameterSlots":1,"returnSlots":0},"@__PluginUUPSUpgradeable_init_13570":{"entryPoint":2763,"id":13570,"parameterSlots":1,"returnSlots":0},"@_auth_13211":{"entryPoint":2879,"id":13211,"parameterSlots":6,"returnSlots":0},"@_authorizeUpgrade_13627":{"entryPoint":2281,"id":13627,"parameterSlots":1,"returnSlots":0},"@_getImplementation_76":{"entryPoint":null,"id":76,"parameterSlots":0,"returnSlots":1},"@_msgData_2579":{"entryPoint":null,"id":2579,"parameterSlots":0,"returnSlots":2},"@_msgSender_2570":{"entryPoint":null,"id":2570,"parameterSlots":0,"returnSlots":1},"@_revert_1000":{"entryPoint":3824,"id":1000,"parameterSlots":2,"returnSlots":0},"@_setImplementation_100":{"entryPoint":3067,"id":100,"parameterSlots":1,"returnSlots":0},"@_upgradeToAndCallUUPS_198":{"entryPoint":2342,"id":198,"parameterSlots":3,"returnSlots":0},"@_upgradeToAndCall_145":{"entryPoint":3270,"id":145,"parameterSlots":3,"returnSlots":0},"@_upgradeTo_115":{"entryPoint":3467,"id":115,"parameterSlots":1,"returnSlots":0},"@dao_13135":{"entryPoint":null,"id":13135,"parameterSlots":0,"returnSlots":1},"@functionDelegateCall_888":{"entryPoint":3531,"id":888,"parameterSlots":2,"returnSlots":1},"@functionDelegateCall_917":{"entryPoint":3575,"id":917,"parameterSlots":3,"returnSlots":1},"@getAddressSlot_2699":{"entryPoint":null,"id":2699,"parameterSlots":1,"returnSlots":1},"@getBooleanSlot_2710":{"entryPoint":null,"id":2710,"parameterSlots":1,"returnSlots":1},"@implementation_13616":{"entryPoint":1989,"id":13616,"parameterSlots":0,"returnSlots":1},"@initializeFrom_11836":{"entryPoint":759,"id":11836,"parameterSlots":1,"returnSlots":0},"@initialize_11818":{"entryPoint":2045,"id":11818,"parameterSlots":1,"returnSlots":0},"@isContract_689":{"entryPoint":null,"id":689,"parameterSlots":1,"returnSlots":1},"@pluginType_13550":{"entryPoint":null,"id":13550,"parameterSlots":0,"returnSlots":1},"@protocolVersion_14765":{"entryPoint":1007,"id":14765,"parameterSlots":0,"returnSlots":1},"@proxiableUUID_616":{"entryPoint":1792,"id":616,"parameterSlots":0,"returnSlots":1},"@state1_11794":{"entryPoint":null,"id":11794,"parameterSlots":0,"returnSlots":0},"@state2_11796":{"entryPoint":null,"id":11796,"parameterSlots":0,"returnSlots":0},"@supportsInterface_13606":{"entryPoint":651,"id":13606,"parameterSlots":1,"returnSlots":1},"@supportsInterface_2816":{"entryPoint":null,"id":2816,"parameterSlots":1,"returnSlots":1},"@upgradeToAndCall_659":{"entryPoint":1428,"id":659,"parameterSlots":2,"returnSlots":0},"@upgradeTo_638":{"entryPoint":1049,"id":638,"parameterSlots":1,"returnSlots":0},"@verifyCallResultFromTarget_956":{"entryPoint":3695,"id":956,"parameterSlots":4,"returnSlots":1},"abi_decode_tuple_t_address":{"entryPoint":4047,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_bytes_memory_ptr":{"entryPoint":4138,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_bool_fromMemory":{"entryPoint":4443,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes32_fromMemory":{"entryPoint":4334,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes4":{"entryPoint":3896,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_contract$_IDAO_$10865":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint16":{"entryPoint":3938,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":4513,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address_t_address_t_address_t_bytes32__to_t_address_t_address_t_address_t_bytes32__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":5,"returnSlots":1},"abi_encode_tuple_t_address_t_address_t_bytes32_t_bytes_calldata_ptr__to_t_address_t_address_t_bytes32_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":4359,"id":null,"parameterSlots":6,"returnSlots":1},"abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed":{"entryPoint":3974,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_contract$_IDAO_$10865__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_enum$_PluginType_$13330__to_t_uint8__fromStack_reversed":{"entryPoint":4076,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":4541,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_36e108fa7a809b52ab1951dd91c117a7bc9ac5250bdf1aa162d4e104f7edf9eb__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_52f1ead4d9653e13afbd2e90ef2587c30187cd50b2e97d784e3f7a7541247434__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_67f0151b4ad1dcfa0e3302a0cd6019f51582ef1807b37dceb00bd852a514f7f4__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_76b6b6debfc5febf101145a79ecf0b0d2e89e397dfdab2bca99888370411152c__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_8e8e2fbcb586f700b5b14e2c4a650c8d83b9773c31c5fe8962070ea544e11f24__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"copy_memory_to_memory_with_cleanup":{"entryPoint":4477,"id":null,"parameterSlots":3,"returnSlots":0},"panic_error_0x41":{"entryPoint":4116,"id":null,"parameterSlots":0,"returnSlots":0},"validator_revert_address":{"entryPoint":4026,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:10793:92","statements":[{"nodeType":"YulBlock","src":"6:3:92","statements":[]},{"body":{"nodeType":"YulBlock","src":"83:217:92","statements":[{"body":{"nodeType":"YulBlock","src":"129:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"138:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"141:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"131:6:92"},"nodeType":"YulFunctionCall","src":"131:12:92"},"nodeType":"YulExpressionStatement","src":"131:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"104:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"113:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"100:3:92"},"nodeType":"YulFunctionCall","src":"100:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"125:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"96:3:92"},"nodeType":"YulFunctionCall","src":"96:32:92"},"nodeType":"YulIf","src":"93:52:92"},{"nodeType":"YulVariableDeclaration","src":"154:36:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"180:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"167:12:92"},"nodeType":"YulFunctionCall","src":"167:23:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"158:5:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"254:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"263:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"266:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"256:6:92"},"nodeType":"YulFunctionCall","src":"256:12:92"},"nodeType":"YulExpressionStatement","src":"256:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"212:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"223:5:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"234:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"239:10:92","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"230:3:92"},"nodeType":"YulFunctionCall","src":"230:20:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"219:3:92"},"nodeType":"YulFunctionCall","src":"219:32:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"209:2:92"},"nodeType":"YulFunctionCall","src":"209:43:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"202:6:92"},"nodeType":"YulFunctionCall","src":"202:51:92"},"nodeType":"YulIf","src":"199:71:92"},{"nodeType":"YulAssignment","src":"279:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"289:5:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"279:6:92"}]}]},"name":"abi_decode_tuple_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"49:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"60:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"72:6:92","type":""}],"src":"14:286:92"},{"body":{"nodeType":"YulBlock","src":"400:92:92","statements":[{"nodeType":"YulAssignment","src":"410:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"422:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"433:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"418:3:92"},"nodeType":"YulFunctionCall","src":"418:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"410:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"452:9:92"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"477:6:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"470:6:92"},"nodeType":"YulFunctionCall","src":"470:14:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"463:6:92"},"nodeType":"YulFunctionCall","src":"463:22:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"445:6:92"},"nodeType":"YulFunctionCall","src":"445:41:92"},"nodeType":"YulExpressionStatement","src":"445:41:92"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"369:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"380:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"391:4:92","type":""}],"src":"305:187:92"},{"body":{"nodeType":"YulBlock","src":"566:203:92","statements":[{"body":{"nodeType":"YulBlock","src":"612:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"621:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"624:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"614:6:92"},"nodeType":"YulFunctionCall","src":"614:12:92"},"nodeType":"YulExpressionStatement","src":"614:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"587:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"596:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"583:3:92"},"nodeType":"YulFunctionCall","src":"583:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"608:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"579:3:92"},"nodeType":"YulFunctionCall","src":"579:32:92"},"nodeType":"YulIf","src":"576:52:92"},{"nodeType":"YulVariableDeclaration","src":"637:36:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"663:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"650:12:92"},"nodeType":"YulFunctionCall","src":"650:23:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"641:5:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"723:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"732:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"735:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"725:6:92"},"nodeType":"YulFunctionCall","src":"725:12:92"},"nodeType":"YulExpressionStatement","src":"725:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"695:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"706:5:92"},{"kind":"number","nodeType":"YulLiteral","src":"713:6:92","type":"","value":"0xffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"702:3:92"},"nodeType":"YulFunctionCall","src":"702:18:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"692:2:92"},"nodeType":"YulFunctionCall","src":"692:29:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"685:6:92"},"nodeType":"YulFunctionCall","src":"685:37:92"},"nodeType":"YulIf","src":"682:57:92"},{"nodeType":"YulAssignment","src":"748:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"758:5:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"748:6:92"}]}]},"name":"abi_decode_tuple_t_uint16","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"532:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"543:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"555:6:92","type":""}],"src":"497:272:92"},{"body":{"nodeType":"YulBlock","src":"917:358:92","statements":[{"nodeType":"YulAssignment","src":"927:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"939:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"950:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"935:3:92"},"nodeType":"YulFunctionCall","src":"935:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"927:4:92"}]},{"nodeType":"YulVariableDeclaration","src":"962:20:92","value":{"name":"headStart","nodeType":"YulIdentifier","src":"973:9:92"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"966:3:92","type":""}]},{"nodeType":"YulAssignment","src":"991:16:92","value":{"name":"headStart","nodeType":"YulIdentifier","src":"998:9:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"991:3:92"}]},{"nodeType":"YulVariableDeclaration","src":"1016:20:92","value":{"name":"value0","nodeType":"YulIdentifier","src":"1030:6:92"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"1020:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"1045:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"1054:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"1049:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"1111:158:92","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1132:3:92"},{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"1147:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1141:5:92"},"nodeType":"YulFunctionCall","src":"1141:13:92"},{"kind":"number","nodeType":"YulLiteral","src":"1156:4:92","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1137:3:92"},"nodeType":"YulFunctionCall","src":"1137:24:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1125:6:92"},"nodeType":"YulFunctionCall","src":"1125:37:92"},"nodeType":"YulExpressionStatement","src":"1125:37:92"},{"nodeType":"YulVariableDeclaration","src":"1175:14:92","value":{"kind":"number","nodeType":"YulLiteral","src":"1185:4:92","type":"","value":"0x20"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"1179:2:92","type":""}]},{"nodeType":"YulAssignment","src":"1202:19:92","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1213:3:92"},{"name":"_1","nodeType":"YulIdentifier","src":"1218:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1209:3:92"},"nodeType":"YulFunctionCall","src":"1209:12:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"1202:3:92"}]},{"nodeType":"YulAssignment","src":"1234:25:92","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"1248:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"1256:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1244:3:92"},"nodeType":"YulFunctionCall","src":"1244:15:92"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"1234:6:92"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"1075:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"1078:4:92","type":"","value":"0x03"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"1072:2:92"},"nodeType":"YulFunctionCall","src":"1072:11:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"1084:18:92","statements":[{"nodeType":"YulAssignment","src":"1086:14:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"1095:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"1098:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1091:3:92"},"nodeType":"YulFunctionCall","src":"1091:9:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"1086:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"1068:3:92","statements":[]},"src":"1064:205:92"}]},"name":"abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"886:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"897:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"908:4:92","type":""}],"src":"774:501:92"},{"body":{"nodeType":"YulBlock","src":"1325:109:92","statements":[{"body":{"nodeType":"YulBlock","src":"1412:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1421:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1424:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1414:6:92"},"nodeType":"YulFunctionCall","src":"1414:12:92"},"nodeType":"YulExpressionStatement","src":"1414:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1348:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1359:5:92"},{"kind":"number","nodeType":"YulLiteral","src":"1366:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1355:3:92"},"nodeType":"YulFunctionCall","src":"1355:54:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1345:2:92"},"nodeType":"YulFunctionCall","src":"1345:65:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1338:6:92"},"nodeType":"YulFunctionCall","src":"1338:73:92"},"nodeType":"YulIf","src":"1335:93:92"}]},"name":"validator_revert_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1314:5:92","type":""}],"src":"1280:154:92"},{"body":{"nodeType":"YulBlock","src":"1509:177:92","statements":[{"body":{"nodeType":"YulBlock","src":"1555:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1564:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1567:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1557:6:92"},"nodeType":"YulFunctionCall","src":"1557:12:92"},"nodeType":"YulExpressionStatement","src":"1557:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1530:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"1539:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1526:3:92"},"nodeType":"YulFunctionCall","src":"1526:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"1551:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1522:3:92"},"nodeType":"YulFunctionCall","src":"1522:32:92"},"nodeType":"YulIf","src":"1519:52:92"},{"nodeType":"YulVariableDeclaration","src":"1580:36:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1606:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1593:12:92"},"nodeType":"YulFunctionCall","src":"1593:23:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"1584:5:92","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1650:5:92"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"1625:24:92"},"nodeType":"YulFunctionCall","src":"1625:31:92"},"nodeType":"YulExpressionStatement","src":"1625:31:92"},{"nodeType":"YulAssignment","src":"1665:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"1675:5:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1665:6:92"}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1475:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1486:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1498:6:92","type":""}],"src":"1439:247:92"},{"body":{"nodeType":"YulBlock","src":"1806:125:92","statements":[{"nodeType":"YulAssignment","src":"1816:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1828:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1839:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1824:3:92"},"nodeType":"YulFunctionCall","src":"1824:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1816:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1858:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1873:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"1881:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1869:3:92"},"nodeType":"YulFunctionCall","src":"1869:55:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1851:6:92"},"nodeType":"YulFunctionCall","src":"1851:74:92"},"nodeType":"YulExpressionStatement","src":"1851:74:92"}]},"name":"abi_encode_tuple_t_contract$_IDAO_$10865__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1775:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1786:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1797:4:92","type":""}],"src":"1691:240:92"},{"body":{"nodeType":"YulBlock","src":"2051:229:92","statements":[{"nodeType":"YulAssignment","src":"2061:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2073:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2084:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2069:3:92"},"nodeType":"YulFunctionCall","src":"2069:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2061:4:92"}]},{"body":{"nodeType":"YulBlock","src":"2129:111:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2150:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2157:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"2162:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2153:3:92"},"nodeType":"YulFunctionCall","src":"2153:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2143:6:92"},"nodeType":"YulFunctionCall","src":"2143:31:92"},"nodeType":"YulExpressionStatement","src":"2143:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2194:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"2197:4:92","type":"","value":"0x21"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2187:6:92"},"nodeType":"YulFunctionCall","src":"2187:15:92"},"nodeType":"YulExpressionStatement","src":"2187:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2222:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2225:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2215:6:92"},"nodeType":"YulFunctionCall","src":"2215:15:92"},"nodeType":"YulExpressionStatement","src":"2215:15:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2109:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"2117:1:92","type":"","value":"3"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2106:2:92"},"nodeType":"YulFunctionCall","src":"2106:13:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2099:6:92"},"nodeType":"YulFunctionCall","src":"2099:21:92"},"nodeType":"YulIf","src":"2096:144:92"},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2256:9:92"},{"name":"value0","nodeType":"YulIdentifier","src":"2267:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2249:6:92"},"nodeType":"YulFunctionCall","src":"2249:25:92"},"nodeType":"YulExpressionStatement","src":"2249:25:92"}]},"name":"abi_encode_tuple_t_enum$_PluginType_$13330__to_t_uint8__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2020:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"2031:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2042:4:92","type":""}],"src":"1936:344:92"},{"body":{"nodeType":"YulBlock","src":"2317:95:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2334:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2341:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"2346:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2337:3:92"},"nodeType":"YulFunctionCall","src":"2337:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2327:6:92"},"nodeType":"YulFunctionCall","src":"2327:31:92"},"nodeType":"YulExpressionStatement","src":"2327:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2374:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"2377:4:92","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2367:6:92"},"nodeType":"YulFunctionCall","src":"2367:15:92"},"nodeType":"YulExpressionStatement","src":"2367:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2398:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2401:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2391:6:92"},"nodeType":"YulFunctionCall","src":"2391:15:92"},"nodeType":"YulExpressionStatement","src":"2391:15:92"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"2285:127:92"},{"body":{"nodeType":"YulBlock","src":"2513:960:92","statements":[{"body":{"nodeType":"YulBlock","src":"2559:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2568:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2571:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2561:6:92"},"nodeType":"YulFunctionCall","src":"2561:12:92"},"nodeType":"YulExpressionStatement","src":"2561:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2534:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"2543:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2530:3:92"},"nodeType":"YulFunctionCall","src":"2530:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"2555:2:92","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2526:3:92"},"nodeType":"YulFunctionCall","src":"2526:32:92"},"nodeType":"YulIf","src":"2523:52:92"},{"nodeType":"YulVariableDeclaration","src":"2584:36:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2610:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2597:12:92"},"nodeType":"YulFunctionCall","src":"2597:23:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"2588:5:92","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2654:5:92"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"2629:24:92"},"nodeType":"YulFunctionCall","src":"2629:31:92"},"nodeType":"YulExpressionStatement","src":"2629:31:92"},{"nodeType":"YulAssignment","src":"2669:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"2679:5:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2669:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"2693:46:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2724:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2735:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2720:3:92"},"nodeType":"YulFunctionCall","src":"2720:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2707:12:92"},"nodeType":"YulFunctionCall","src":"2707:32:92"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"2697:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2748:28:92","value":{"kind":"number","nodeType":"YulLiteral","src":"2758:18:92","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"2752:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"2803:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2812:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2815:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2805:6:92"},"nodeType":"YulFunctionCall","src":"2805:12:92"},"nodeType":"YulExpressionStatement","src":"2805:12:92"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"2791:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"2799:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2788:2:92"},"nodeType":"YulFunctionCall","src":"2788:14:92"},"nodeType":"YulIf","src":"2785:34:92"},{"nodeType":"YulVariableDeclaration","src":"2828:32:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2842:9:92"},{"name":"offset","nodeType":"YulIdentifier","src":"2853:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2838:3:92"},"nodeType":"YulFunctionCall","src":"2838:22:92"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"2832:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"2908:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2917:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2920:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2910:6:92"},"nodeType":"YulFunctionCall","src":"2910:12:92"},"nodeType":"YulExpressionStatement","src":"2910:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"2887:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"2891:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2883:3:92"},"nodeType":"YulFunctionCall","src":"2883:13:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2898:7:92"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2879:3:92"},"nodeType":"YulFunctionCall","src":"2879:27:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2872:6:92"},"nodeType":"YulFunctionCall","src":"2872:35:92"},"nodeType":"YulIf","src":"2869:55:92"},{"nodeType":"YulVariableDeclaration","src":"2933:26:92","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"2956:2:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2943:12:92"},"nodeType":"YulFunctionCall","src":"2943:16:92"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"2937:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"2982:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"2984:16:92"},"nodeType":"YulFunctionCall","src":"2984:18:92"},"nodeType":"YulExpressionStatement","src":"2984:18:92"}]},"condition":{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"2974:2:92"},{"name":"_1","nodeType":"YulIdentifier","src":"2978:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2971:2:92"},"nodeType":"YulFunctionCall","src":"2971:10:92"},"nodeType":"YulIf","src":"2968:36:92"},{"nodeType":"YulVariableDeclaration","src":"3013:17:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3027:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"3023:3:92"},"nodeType":"YulFunctionCall","src":"3023:7:92"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"3017:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3039:23:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3059:2:92","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3053:5:92"},"nodeType":"YulFunctionCall","src":"3053:9:92"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"3043:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3071:71:92","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"3093:6:92"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"3117:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"3121:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3113:3:92"},"nodeType":"YulFunctionCall","src":"3113:13:92"},{"name":"_4","nodeType":"YulIdentifier","src":"3128:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3109:3:92"},"nodeType":"YulFunctionCall","src":"3109:22:92"},{"kind":"number","nodeType":"YulLiteral","src":"3133:2:92","type":"","value":"63"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3105:3:92"},"nodeType":"YulFunctionCall","src":"3105:31:92"},{"name":"_4","nodeType":"YulIdentifier","src":"3138:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3101:3:92"},"nodeType":"YulFunctionCall","src":"3101:40:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3089:3:92"},"nodeType":"YulFunctionCall","src":"3089:53:92"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"3075:10:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"3201:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"3203:16:92"},"nodeType":"YulFunctionCall","src":"3203:18:92"},"nodeType":"YulExpressionStatement","src":"3203:18:92"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"3160:10:92"},{"name":"_1","nodeType":"YulIdentifier","src":"3172:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3157:2:92"},"nodeType":"YulFunctionCall","src":"3157:18:92"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"3180:10:92"},{"name":"memPtr","nodeType":"YulIdentifier","src":"3192:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"3177:2:92"},"nodeType":"YulFunctionCall","src":"3177:22:92"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"3154:2:92"},"nodeType":"YulFunctionCall","src":"3154:46:92"},"nodeType":"YulIf","src":"3151:72:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3239:2:92","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"3243:10:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3232:6:92"},"nodeType":"YulFunctionCall","src":"3232:22:92"},"nodeType":"YulExpressionStatement","src":"3232:22:92"},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"3270:6:92"},{"name":"_3","nodeType":"YulIdentifier","src":"3278:2:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3263:6:92"},"nodeType":"YulFunctionCall","src":"3263:18:92"},"nodeType":"YulExpressionStatement","src":"3263:18:92"},{"body":{"nodeType":"YulBlock","src":"3327:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3336:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3339:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3329:6:92"},"nodeType":"YulFunctionCall","src":"3329:12:92"},"nodeType":"YulExpressionStatement","src":"3329:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"3304:2:92"},{"name":"_3","nodeType":"YulIdentifier","src":"3308:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3300:3:92"},"nodeType":"YulFunctionCall","src":"3300:11:92"},{"kind":"number","nodeType":"YulLiteral","src":"3313:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3296:3:92"},"nodeType":"YulFunctionCall","src":"3296:20:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3318:7:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3293:2:92"},"nodeType":"YulFunctionCall","src":"3293:33:92"},"nodeType":"YulIf","src":"3290:53:92"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"3369:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"3377:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3365:3:92"},"nodeType":"YulFunctionCall","src":"3365:15:92"},{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"3386:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"3390:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3382:3:92"},"nodeType":"YulFunctionCall","src":"3382:11:92"},{"name":"_3","nodeType":"YulIdentifier","src":"3395:2:92"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"3352:12:92"},"nodeType":"YulFunctionCall","src":"3352:46:92"},"nodeType":"YulExpressionStatement","src":"3352:46:92"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"3422:6:92"},{"name":"_3","nodeType":"YulIdentifier","src":"3430:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3418:3:92"},"nodeType":"YulFunctionCall","src":"3418:15:92"},{"kind":"number","nodeType":"YulLiteral","src":"3435:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3414:3:92"},"nodeType":"YulFunctionCall","src":"3414:24:92"},{"kind":"number","nodeType":"YulLiteral","src":"3440:1:92","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3407:6:92"},"nodeType":"YulFunctionCall","src":"3407:35:92"},"nodeType":"YulExpressionStatement","src":"3407:35:92"},{"nodeType":"YulAssignment","src":"3451:16:92","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"3461:6:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"3451:6:92"}]}]},"name":"abi_decode_tuple_t_addresst_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2471:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2482:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2494:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2502:6:92","type":""}],"src":"2417:1056:92"},{"body":{"nodeType":"YulBlock","src":"3579:76:92","statements":[{"nodeType":"YulAssignment","src":"3589:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3601:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3612:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3597:3:92"},"nodeType":"YulFunctionCall","src":"3597:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3589:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3631:9:92"},{"name":"value0","nodeType":"YulIdentifier","src":"3642:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3624:6:92"},"nodeType":"YulFunctionCall","src":"3624:25:92"},"nodeType":"YulExpressionStatement","src":"3624:25:92"}]},"name":"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3548:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3559:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3570:4:92","type":""}],"src":"3478:177:92"},{"body":{"nodeType":"YulBlock","src":"3761:125:92","statements":[{"nodeType":"YulAssignment","src":"3771:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3783:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3794:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3779:3:92"},"nodeType":"YulFunctionCall","src":"3779:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3771:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3813:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3828:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"3836:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3824:3:92"},"nodeType":"YulFunctionCall","src":"3824:55:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3806:6:92"},"nodeType":"YulFunctionCall","src":"3806:74:92"},"nodeType":"YulExpressionStatement","src":"3806:74:92"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3730:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3741:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3752:4:92","type":""}],"src":"3660:226:92"},{"body":{"nodeType":"YulBlock","src":"3992:76:92","statements":[{"nodeType":"YulAssignment","src":"4002:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4014:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4025:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4010:3:92"},"nodeType":"YulFunctionCall","src":"4010:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4002:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4044:9:92"},{"name":"value0","nodeType":"YulIdentifier","src":"4055:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4037:6:92"},"nodeType":"YulFunctionCall","src":"4037:25:92"},"nodeType":"YulExpressionStatement","src":"4037:25:92"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3961:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3972:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3983:4:92","type":""}],"src":"3891:177:92"},{"body":{"nodeType":"YulBlock","src":"4157:177:92","statements":[{"body":{"nodeType":"YulBlock","src":"4203:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4212:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4215:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4205:6:92"},"nodeType":"YulFunctionCall","src":"4205:12:92"},"nodeType":"YulExpressionStatement","src":"4205:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"4178:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"4187:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4174:3:92"},"nodeType":"YulFunctionCall","src":"4174:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"4199:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4170:3:92"},"nodeType":"YulFunctionCall","src":"4170:32:92"},"nodeType":"YulIf","src":"4167:52:92"},{"nodeType":"YulVariableDeclaration","src":"4228:36:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4254:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4241:12:92"},"nodeType":"YulFunctionCall","src":"4241:23:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"4232:5:92","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4298:5:92"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"4273:24:92"},"nodeType":"YulFunctionCall","src":"4273:31:92"},"nodeType":"YulExpressionStatement","src":"4273:31:92"},{"nodeType":"YulAssignment","src":"4313:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"4323:5:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"4313:6:92"}]}]},"name":"abi_decode_tuple_t_contract$_IDAO_$10865","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4123:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"4134:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"4146:6:92","type":""}],"src":"4073:261:92"},{"body":{"nodeType":"YulBlock","src":"4513:236:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4530:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4541:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4523:6:92"},"nodeType":"YulFunctionCall","src":"4523:21:92"},"nodeType":"YulExpressionStatement","src":"4523:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4564:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4575:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4560:3:92"},"nodeType":"YulFunctionCall","src":"4560:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"4580:2:92","type":"","value":"46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4553:6:92"},"nodeType":"YulFunctionCall","src":"4553:30:92"},"nodeType":"YulExpressionStatement","src":"4553:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4603:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4614:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4599:3:92"},"nodeType":"YulFunctionCall","src":"4599:18:92"},{"hexValue":"496e697469616c697a61626c653a20636f6e747261637420697320616c726561","kind":"string","nodeType":"YulLiteral","src":"4619:34:92","type":"","value":"Initializable: contract is alrea"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4592:6:92"},"nodeType":"YulFunctionCall","src":"4592:62:92"},"nodeType":"YulExpressionStatement","src":"4592:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4674:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4685:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4670:3:92"},"nodeType":"YulFunctionCall","src":"4670:18:92"},{"hexValue":"647920696e697469616c697a6564","kind":"string","nodeType":"YulLiteral","src":"4690:16:92","type":"","value":"dy initialized"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4663:6:92"},"nodeType":"YulFunctionCall","src":"4663:44:92"},"nodeType":"YulExpressionStatement","src":"4663:44:92"},{"nodeType":"YulAssignment","src":"4716:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4728:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4739:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4724:3:92"},"nodeType":"YulFunctionCall","src":"4724:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4716:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4490:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4504:4:92","type":""}],"src":"4339:410:92"},{"body":{"nodeType":"YulBlock","src":"4851:87:92","statements":[{"nodeType":"YulAssignment","src":"4861:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4873:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4884:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4869:3:92"},"nodeType":"YulFunctionCall","src":"4869:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4861:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4903:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4918:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"4926:4:92","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4914:3:92"},"nodeType":"YulFunctionCall","src":"4914:17:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4896:6:92"},"nodeType":"YulFunctionCall","src":"4896:36:92"},"nodeType":"YulExpressionStatement","src":"4896:36:92"}]},"name":"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4820:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"4831:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4842:4:92","type":""}],"src":"4754:184:92"},{"body":{"nodeType":"YulBlock","src":"5117:234:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5134:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5145:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5127:6:92"},"nodeType":"YulFunctionCall","src":"5127:21:92"},"nodeType":"YulExpressionStatement","src":"5127:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5168:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5179:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5164:3:92"},"nodeType":"YulFunctionCall","src":"5164:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"5184:2:92","type":"","value":"44"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5157:6:92"},"nodeType":"YulFunctionCall","src":"5157:30:92"},"nodeType":"YulExpressionStatement","src":"5157:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5207:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5218:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5203:3:92"},"nodeType":"YulFunctionCall","src":"5203:18:92"},{"hexValue":"46756e6374696f6e206d7573742062652063616c6c6564207468726f75676820","kind":"string","nodeType":"YulLiteral","src":"5223:34:92","type":"","value":"Function must be called through "}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5196:6:92"},"nodeType":"YulFunctionCall","src":"5196:62:92"},"nodeType":"YulExpressionStatement","src":"5196:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5278:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5289:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5274:3:92"},"nodeType":"YulFunctionCall","src":"5274:18:92"},{"hexValue":"64656c656761746563616c6c","kind":"string","nodeType":"YulLiteral","src":"5294:14:92","type":"","value":"delegatecall"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5267:6:92"},"nodeType":"YulFunctionCall","src":"5267:42:92"},"nodeType":"YulExpressionStatement","src":"5267:42:92"},{"nodeType":"YulAssignment","src":"5318:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5330:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5341:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5326:3:92"},"nodeType":"YulFunctionCall","src":"5326:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5318:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_36e108fa7a809b52ab1951dd91c117a7bc9ac5250bdf1aa162d4e104f7edf9eb__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5094:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5108:4:92","type":""}],"src":"4943:408:92"},{"body":{"nodeType":"YulBlock","src":"5530:234:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5547:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5558:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5540:6:92"},"nodeType":"YulFunctionCall","src":"5540:21:92"},"nodeType":"YulExpressionStatement","src":"5540:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5581:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5592:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5577:3:92"},"nodeType":"YulFunctionCall","src":"5577:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"5597:2:92","type":"","value":"44"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5570:6:92"},"nodeType":"YulFunctionCall","src":"5570:30:92"},"nodeType":"YulExpressionStatement","src":"5570:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5620:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5631:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5616:3:92"},"nodeType":"YulFunctionCall","src":"5616:18:92"},{"hexValue":"46756e6374696f6e206d7573742062652063616c6c6564207468726f75676820","kind":"string","nodeType":"YulLiteral","src":"5636:34:92","type":"","value":"Function must be called through "}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5609:6:92"},"nodeType":"YulFunctionCall","src":"5609:62:92"},"nodeType":"YulExpressionStatement","src":"5609:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5691:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5702:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5687:3:92"},"nodeType":"YulFunctionCall","src":"5687:18:92"},{"hexValue":"6163746976652070726f7879","kind":"string","nodeType":"YulLiteral","src":"5707:14:92","type":"","value":"active proxy"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5680:6:92"},"nodeType":"YulFunctionCall","src":"5680:42:92"},"nodeType":"YulExpressionStatement","src":"5680:42:92"},{"nodeType":"YulAssignment","src":"5731:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5743:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5754:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5739:3:92"},"nodeType":"YulFunctionCall","src":"5739:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5731:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_52f1ead4d9653e13afbd2e90ef2587c30187cd50b2e97d784e3f7a7541247434__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5507:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5521:4:92","type":""}],"src":"5356:408:92"},{"body":{"nodeType":"YulBlock","src":"5943:246:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5960:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5971:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5953:6:92"},"nodeType":"YulFunctionCall","src":"5953:21:92"},"nodeType":"YulExpressionStatement","src":"5953:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5994:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6005:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5990:3:92"},"nodeType":"YulFunctionCall","src":"5990:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"6010:2:92","type":"","value":"56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5983:6:92"},"nodeType":"YulFunctionCall","src":"5983:30:92"},"nodeType":"YulExpressionStatement","src":"5983:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6033:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6044:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6029:3:92"},"nodeType":"YulFunctionCall","src":"6029:18:92"},{"hexValue":"555550535570677261646561626c653a206d757374206e6f742062652063616c","kind":"string","nodeType":"YulLiteral","src":"6049:34:92","type":"","value":"UUPSUpgradeable: must not be cal"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6022:6:92"},"nodeType":"YulFunctionCall","src":"6022:62:92"},"nodeType":"YulExpressionStatement","src":"6022:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6104:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6115:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6100:3:92"},"nodeType":"YulFunctionCall","src":"6100:18:92"},{"hexValue":"6c6564207468726f7567682064656c656761746563616c6c","kind":"string","nodeType":"YulLiteral","src":"6120:26:92","type":"","value":"led through delegatecall"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6093:6:92"},"nodeType":"YulFunctionCall","src":"6093:54:92"},"nodeType":"YulExpressionStatement","src":"6093:54:92"},{"nodeType":"YulAssignment","src":"6156:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6168:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6179:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6164:3:92"},"nodeType":"YulFunctionCall","src":"6164:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6156:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_67f0151b4ad1dcfa0e3302a0cd6019f51582ef1807b37dceb00bd852a514f7f4__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5920:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5934:4:92","type":""}],"src":"5769:420:92"},{"body":{"nodeType":"YulBlock","src":"6275:103:92","statements":[{"body":{"nodeType":"YulBlock","src":"6321:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6330:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6333:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6323:6:92"},"nodeType":"YulFunctionCall","src":"6323:12:92"},"nodeType":"YulExpressionStatement","src":"6323:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"6296:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"6305:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6292:3:92"},"nodeType":"YulFunctionCall","src":"6292:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"6317:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6288:3:92"},"nodeType":"YulFunctionCall","src":"6288:32:92"},"nodeType":"YulIf","src":"6285:52:92"},{"nodeType":"YulAssignment","src":"6346:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6362:9:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6356:5:92"},"nodeType":"YulFunctionCall","src":"6356:16:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"6346:6:92"}]}]},"name":"abi_decode_tuple_t_bytes32_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6241:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"6252:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"6264:6:92","type":""}],"src":"6194:184:92"},{"body":{"nodeType":"YulBlock","src":"6557:236:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6574:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6585:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6567:6:92"},"nodeType":"YulFunctionCall","src":"6567:21:92"},"nodeType":"YulExpressionStatement","src":"6567:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6608:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6619:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6604:3:92"},"nodeType":"YulFunctionCall","src":"6604:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"6624:2:92","type":"","value":"46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6597:6:92"},"nodeType":"YulFunctionCall","src":"6597:30:92"},"nodeType":"YulExpressionStatement","src":"6597:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6647:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6658:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6643:3:92"},"nodeType":"YulFunctionCall","src":"6643:18:92"},{"hexValue":"45524331393637557067726164653a206e657720696d706c656d656e74617469","kind":"string","nodeType":"YulLiteral","src":"6663:34:92","type":"","value":"ERC1967Upgrade: new implementati"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6636:6:92"},"nodeType":"YulFunctionCall","src":"6636:62:92"},"nodeType":"YulExpressionStatement","src":"6636:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6718:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6729:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6714:3:92"},"nodeType":"YulFunctionCall","src":"6714:18:92"},{"hexValue":"6f6e206973206e6f742055555053","kind":"string","nodeType":"YulLiteral","src":"6734:16:92","type":"","value":"on is not UUPS"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6707:6:92"},"nodeType":"YulFunctionCall","src":"6707:44:92"},"nodeType":"YulExpressionStatement","src":"6707:44:92"},{"nodeType":"YulAssignment","src":"6760:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6772:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6783:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6768:3:92"},"nodeType":"YulFunctionCall","src":"6768:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6760:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_8e8e2fbcb586f700b5b14e2c4a650c8d83b9773c31c5fe8962070ea544e11f24__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6534:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6548:4:92","type":""}],"src":"6383:410:92"},{"body":{"nodeType":"YulBlock","src":"6972:231:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6989:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7000:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6982:6:92"},"nodeType":"YulFunctionCall","src":"6982:21:92"},"nodeType":"YulExpressionStatement","src":"6982:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7023:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7034:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7019:3:92"},"nodeType":"YulFunctionCall","src":"7019:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"7039:2:92","type":"","value":"41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7012:6:92"},"nodeType":"YulFunctionCall","src":"7012:30:92"},"nodeType":"YulExpressionStatement","src":"7012:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7062:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7073:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7058:3:92"},"nodeType":"YulFunctionCall","src":"7058:18:92"},{"hexValue":"45524331393637557067726164653a20756e737570706f727465642070726f78","kind":"string","nodeType":"YulLiteral","src":"7078:34:92","type":"","value":"ERC1967Upgrade: unsupported prox"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7051:6:92"},"nodeType":"YulFunctionCall","src":"7051:62:92"},"nodeType":"YulExpressionStatement","src":"7051:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7133:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7144:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7129:3:92"},"nodeType":"YulFunctionCall","src":"7129:18:92"},{"hexValue":"6961626c6555554944","kind":"string","nodeType":"YulLiteral","src":"7149:11:92","type":"","value":"iableUUID"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7122:6:92"},"nodeType":"YulFunctionCall","src":"7122:39:92"},"nodeType":"YulExpressionStatement","src":"7122:39:92"},{"nodeType":"YulAssignment","src":"7170:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7182:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7193:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7178:3:92"},"nodeType":"YulFunctionCall","src":"7178:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7170:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_76b6b6debfc5febf101145a79ecf0b0d2e89e397dfdab2bca99888370411152c__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6949:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6963:4:92","type":""}],"src":"6798:405:92"},{"body":{"nodeType":"YulBlock","src":"7382:233:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7399:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7410:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7392:6:92"},"nodeType":"YulFunctionCall","src":"7392:21:92"},"nodeType":"YulExpressionStatement","src":"7392:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7433:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7444:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7429:3:92"},"nodeType":"YulFunctionCall","src":"7429:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"7449:2:92","type":"","value":"43"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7422:6:92"},"nodeType":"YulFunctionCall","src":"7422:30:92"},"nodeType":"YulExpressionStatement","src":"7422:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7472:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7483:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7468:3:92"},"nodeType":"YulFunctionCall","src":"7468:18:92"},{"hexValue":"496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069","kind":"string","nodeType":"YulLiteral","src":"7488:34:92","type":"","value":"Initializable: contract is not i"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7461:6:92"},"nodeType":"YulFunctionCall","src":"7461:62:92"},"nodeType":"YulExpressionStatement","src":"7461:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7543:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7554:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7539:3:92"},"nodeType":"YulFunctionCall","src":"7539:18:92"},{"hexValue":"6e697469616c697a696e67","kind":"string","nodeType":"YulLiteral","src":"7559:13:92","type":"","value":"nitializing"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7532:6:92"},"nodeType":"YulFunctionCall","src":"7532:41:92"},"nodeType":"YulExpressionStatement","src":"7532:41:92"},{"nodeType":"YulAssignment","src":"7582:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7594:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7605:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7590:3:92"},"nodeType":"YulFunctionCall","src":"7590:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7582:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7359:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7373:4:92","type":""}],"src":"7208:407:92"},{"body":{"nodeType":"YulBlock","src":"7833:472:92","statements":[{"nodeType":"YulVariableDeclaration","src":"7843:52:92","value":{"kind":"number","nodeType":"YulLiteral","src":"7853:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"7847:2:92","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7911:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7926:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"7934:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7922:3:92"},"nodeType":"YulFunctionCall","src":"7922:15:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7904:6:92"},"nodeType":"YulFunctionCall","src":"7904:34:92"},"nodeType":"YulExpressionStatement","src":"7904:34:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7958:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7969:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7954:3:92"},"nodeType":"YulFunctionCall","src":"7954:18:92"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"7978:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"7986:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7974:3:92"},"nodeType":"YulFunctionCall","src":"7974:15:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7947:6:92"},"nodeType":"YulFunctionCall","src":"7947:43:92"},"nodeType":"YulExpressionStatement","src":"7947:43:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8010:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8021:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8006:3:92"},"nodeType":"YulFunctionCall","src":"8006:18:92"},{"name":"value2","nodeType":"YulIdentifier","src":"8026:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7999:6:92"},"nodeType":"YulFunctionCall","src":"7999:34:92"},"nodeType":"YulExpressionStatement","src":"7999:34:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8053:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8064:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8049:3:92"},"nodeType":"YulFunctionCall","src":"8049:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"8069:3:92","type":"","value":"128"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8042:6:92"},"nodeType":"YulFunctionCall","src":"8042:31:92"},"nodeType":"YulExpressionStatement","src":"8042:31:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8093:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8104:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8089:3:92"},"nodeType":"YulFunctionCall","src":"8089:19:92"},{"name":"value4","nodeType":"YulIdentifier","src":"8110:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8082:6:92"},"nodeType":"YulFunctionCall","src":"8082:35:92"},"nodeType":"YulExpressionStatement","src":"8082:35:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8143:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8154:3:92","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8139:3:92"},"nodeType":"YulFunctionCall","src":"8139:19:92"},{"name":"value3","nodeType":"YulIdentifier","src":"8160:6:92"},{"name":"value4","nodeType":"YulIdentifier","src":"8168:6:92"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"8126:12:92"},"nodeType":"YulFunctionCall","src":"8126:49:92"},"nodeType":"YulExpressionStatement","src":"8126:49:92"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8199:9:92"},{"name":"value4","nodeType":"YulIdentifier","src":"8210:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8195:3:92"},"nodeType":"YulFunctionCall","src":"8195:22:92"},{"kind":"number","nodeType":"YulLiteral","src":"8219:3:92","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8191:3:92"},"nodeType":"YulFunctionCall","src":"8191:32:92"},{"kind":"number","nodeType":"YulLiteral","src":"8225:1:92","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8184:6:92"},"nodeType":"YulFunctionCall","src":"8184:43:92"},"nodeType":"YulExpressionStatement","src":"8184:43:92"},{"nodeType":"YulAssignment","src":"8236:63:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8252:9:92"},{"arguments":[{"arguments":[{"name":"value4","nodeType":"YulIdentifier","src":"8271:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"8279:2:92","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8267:3:92"},"nodeType":"YulFunctionCall","src":"8267:15:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8288:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"8284:3:92"},"nodeType":"YulFunctionCall","src":"8284:7:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8263:3:92"},"nodeType":"YulFunctionCall","src":"8263:29:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8248:3:92"},"nodeType":"YulFunctionCall","src":"8248:45:92"},{"kind":"number","nodeType":"YulLiteral","src":"8295:3:92","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8244:3:92"},"nodeType":"YulFunctionCall","src":"8244:55:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"8236:4:92"}]}]},"name":"abi_encode_tuple_t_address_t_address_t_bytes32_t_bytes_calldata_ptr__to_t_address_t_address_t_bytes32_t_bytes_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7770:9:92","type":""},{"name":"value4","nodeType":"YulTypedName","src":"7781:6:92","type":""},{"name":"value3","nodeType":"YulTypedName","src":"7789:6:92","type":""},{"name":"value2","nodeType":"YulTypedName","src":"7797:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"7805:6:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"7813:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7824:4:92","type":""}],"src":"7620:685:92"},{"body":{"nodeType":"YulBlock","src":"8388:199:92","statements":[{"body":{"nodeType":"YulBlock","src":"8434:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8443:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8446:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8436:6:92"},"nodeType":"YulFunctionCall","src":"8436:12:92"},"nodeType":"YulExpressionStatement","src":"8436:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"8409:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"8418:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"8405:3:92"},"nodeType":"YulFunctionCall","src":"8405:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"8430:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"8401:3:92"},"nodeType":"YulFunctionCall","src":"8401:32:92"},"nodeType":"YulIf","src":"8398:52:92"},{"nodeType":"YulVariableDeclaration","src":"8459:29:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8478:9:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"8472:5:92"},"nodeType":"YulFunctionCall","src":"8472:16:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"8463:5:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"8541:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8550:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8553:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8543:6:92"},"nodeType":"YulFunctionCall","src":"8543:12:92"},"nodeType":"YulExpressionStatement","src":"8543:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8510:5:92"},{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8531:5:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"8524:6:92"},"nodeType":"YulFunctionCall","src":"8524:13:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"8517:6:92"},"nodeType":"YulFunctionCall","src":"8517:21:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"8507:2:92"},"nodeType":"YulFunctionCall","src":"8507:32:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"8500:6:92"},"nodeType":"YulFunctionCall","src":"8500:40:92"},"nodeType":"YulIf","src":"8497:60:92"},{"nodeType":"YulAssignment","src":"8566:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"8576:5:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"8566:6:92"}]}]},"name":"abi_decode_tuple_t_bool_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8354:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"8365:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"8377:6:92","type":""}],"src":"8310:277:92"},{"body":{"nodeType":"YulBlock","src":"8777:294:92","statements":[{"nodeType":"YulAssignment","src":"8787:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8799:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8810:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8795:3:92"},"nodeType":"YulFunctionCall","src":"8795:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"8787:4:92"}]},{"nodeType":"YulVariableDeclaration","src":"8823:52:92","value":{"kind":"number","nodeType":"YulLiteral","src":"8833:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"8827:2:92","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8891:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"8906:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"8914:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8902:3:92"},"nodeType":"YulFunctionCall","src":"8902:15:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8884:6:92"},"nodeType":"YulFunctionCall","src":"8884:34:92"},"nodeType":"YulExpressionStatement","src":"8884:34:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8938:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8949:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8934:3:92"},"nodeType":"YulFunctionCall","src":"8934:18:92"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"8958:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"8966:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8954:3:92"},"nodeType":"YulFunctionCall","src":"8954:15:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8927:6:92"},"nodeType":"YulFunctionCall","src":"8927:43:92"},"nodeType":"YulExpressionStatement","src":"8927:43:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8990:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9001:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8986:3:92"},"nodeType":"YulFunctionCall","src":"8986:18:92"},{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"9010:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"9018:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"9006:3:92"},"nodeType":"YulFunctionCall","src":"9006:15:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8979:6:92"},"nodeType":"YulFunctionCall","src":"8979:43:92"},"nodeType":"YulExpressionStatement","src":"8979:43:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9042:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9053:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9038:3:92"},"nodeType":"YulFunctionCall","src":"9038:18:92"},{"name":"value3","nodeType":"YulIdentifier","src":"9058:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9031:6:92"},"nodeType":"YulFunctionCall","src":"9031:34:92"},"nodeType":"YulExpressionStatement","src":"9031:34:92"}]},"name":"abi_encode_tuple_t_address_t_address_t_address_t_bytes32__to_t_address_t_address_t_address_t_bytes32__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8722:9:92","type":""},{"name":"value3","nodeType":"YulTypedName","src":"8733:6:92","type":""},{"name":"value2","nodeType":"YulTypedName","src":"8741:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"8749:6:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"8757:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"8768:4:92","type":""}],"src":"8592:479:92"},{"body":{"nodeType":"YulBlock","src":"9250:235:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9267:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9278:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9260:6:92"},"nodeType":"YulFunctionCall","src":"9260:21:92"},"nodeType":"YulExpressionStatement","src":"9260:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9301:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9312:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9297:3:92"},"nodeType":"YulFunctionCall","src":"9297:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"9317:2:92","type":"","value":"45"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9290:6:92"},"nodeType":"YulFunctionCall","src":"9290:30:92"},"nodeType":"YulExpressionStatement","src":"9290:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9340:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9351:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9336:3:92"},"nodeType":"YulFunctionCall","src":"9336:18:92"},{"hexValue":"455243313936373a206e657720696d706c656d656e746174696f6e206973206e","kind":"string","nodeType":"YulLiteral","src":"9356:34:92","type":"","value":"ERC1967: new implementation is n"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9329:6:92"},"nodeType":"YulFunctionCall","src":"9329:62:92"},"nodeType":"YulExpressionStatement","src":"9329:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9411:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9422:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9407:3:92"},"nodeType":"YulFunctionCall","src":"9407:18:92"},{"hexValue":"6f74206120636f6e7472616374","kind":"string","nodeType":"YulLiteral","src":"9427:15:92","type":"","value":"ot a contract"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9400:6:92"},"nodeType":"YulFunctionCall","src":"9400:43:92"},"nodeType":"YulExpressionStatement","src":"9400:43:92"},{"nodeType":"YulAssignment","src":"9452:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9464:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9475:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9460:3:92"},"nodeType":"YulFunctionCall","src":"9460:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"9452:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9227:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"9241:4:92","type":""}],"src":"9076:409:92"},{"body":{"nodeType":"YulBlock","src":"9556:184:92","statements":[{"nodeType":"YulVariableDeclaration","src":"9566:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"9575:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"9570:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"9635:63:92","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"9660:3:92"},{"name":"i","nodeType":"YulIdentifier","src":"9665:1:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9656:3:92"},"nodeType":"YulFunctionCall","src":"9656:11:92"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"9679:3:92"},{"name":"i","nodeType":"YulIdentifier","src":"9684:1:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9675:3:92"},"nodeType":"YulFunctionCall","src":"9675:11:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"9669:5:92"},"nodeType":"YulFunctionCall","src":"9669:18:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9649:6:92"},"nodeType":"YulFunctionCall","src":"9649:39:92"},"nodeType":"YulExpressionStatement","src":"9649:39:92"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"9596:1:92"},{"name":"length","nodeType":"YulIdentifier","src":"9599:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"9593:2:92"},"nodeType":"YulFunctionCall","src":"9593:13:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"9607:19:92","statements":[{"nodeType":"YulAssignment","src":"9609:15:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"9618:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"9621:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9614:3:92"},"nodeType":"YulFunctionCall","src":"9614:10:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"9609:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"9589:3:92","statements":[]},"src":"9585:113:92"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"9718:3:92"},{"name":"length","nodeType":"YulIdentifier","src":"9723:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9714:3:92"},"nodeType":"YulFunctionCall","src":"9714:16:92"},{"kind":"number","nodeType":"YulLiteral","src":"9732:1:92","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9707:6:92"},"nodeType":"YulFunctionCall","src":"9707:27:92"},"nodeType":"YulExpressionStatement","src":"9707:27:92"}]},"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"9534:3:92","type":""},{"name":"dst","nodeType":"YulTypedName","src":"9539:3:92","type":""},{"name":"length","nodeType":"YulTypedName","src":"9544:6:92","type":""}],"src":"9490:250:92"},{"body":{"nodeType":"YulBlock","src":"9882:150:92","statements":[{"nodeType":"YulVariableDeclaration","src":"9892:27:92","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"9912:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"9906:5:92"},"nodeType":"YulFunctionCall","src":"9906:13:92"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"9896:6:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"9967:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"9975:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9963:3:92"},"nodeType":"YulFunctionCall","src":"9963:17:92"},{"name":"pos","nodeType":"YulIdentifier","src":"9982:3:92"},{"name":"length","nodeType":"YulIdentifier","src":"9987:6:92"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"9928:34:92"},"nodeType":"YulFunctionCall","src":"9928:66:92"},"nodeType":"YulExpressionStatement","src":"9928:66:92"},{"nodeType":"YulAssignment","src":"10003:23:92","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"10014:3:92"},{"name":"length","nodeType":"YulIdentifier","src":"10019:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10010:3:92"},"nodeType":"YulFunctionCall","src":"10010:16:92"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"10003:3:92"}]}]},"name":"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"9858:3:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"9863:6:92","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"9874:3:92","type":""}],"src":"9745:287:92"},{"body":{"nodeType":"YulBlock","src":"10211:179:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10228:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"10239:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10221:6:92"},"nodeType":"YulFunctionCall","src":"10221:21:92"},"nodeType":"YulExpressionStatement","src":"10221:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10262:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"10273:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10258:3:92"},"nodeType":"YulFunctionCall","src":"10258:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"10278:2:92","type":"","value":"29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10251:6:92"},"nodeType":"YulFunctionCall","src":"10251:30:92"},"nodeType":"YulExpressionStatement","src":"10251:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10301:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"10312:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10297:3:92"},"nodeType":"YulFunctionCall","src":"10297:18:92"},{"hexValue":"416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374","kind":"string","nodeType":"YulLiteral","src":"10317:31:92","type":"","value":"Address: call to non-contract"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10290:6:92"},"nodeType":"YulFunctionCall","src":"10290:59:92"},"nodeType":"YulExpressionStatement","src":"10290:59:92"},{"nodeType":"YulAssignment","src":"10358:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10370:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"10381:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10366:3:92"},"nodeType":"YulFunctionCall","src":"10366:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"10358:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"10188:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"10202:4:92","type":""}],"src":"10037:353:92"},{"body":{"nodeType":"YulBlock","src":"10516:275:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10533:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"10544:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10526:6:92"},"nodeType":"YulFunctionCall","src":"10526:21:92"},"nodeType":"YulExpressionStatement","src":"10526:21:92"},{"nodeType":"YulVariableDeclaration","src":"10556:27:92","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"10576:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"10570:5:92"},"nodeType":"YulFunctionCall","src":"10570:13:92"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"10560:6:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10603:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"10614:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10599:3:92"},"nodeType":"YulFunctionCall","src":"10599:18:92"},{"name":"length","nodeType":"YulIdentifier","src":"10619:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10592:6:92"},"nodeType":"YulFunctionCall","src":"10592:34:92"},"nodeType":"YulExpressionStatement","src":"10592:34:92"},{"expression":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"10674:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"10682:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10670:3:92"},"nodeType":"YulFunctionCall","src":"10670:15:92"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10691:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"10702:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10687:3:92"},"nodeType":"YulFunctionCall","src":"10687:18:92"},{"name":"length","nodeType":"YulIdentifier","src":"10707:6:92"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"10635:34:92"},"nodeType":"YulFunctionCall","src":"10635:79:92"},"nodeType":"YulExpressionStatement","src":"10635:79:92"},{"nodeType":"YulAssignment","src":"10723:62:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10739:9:92"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"10758:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"10766:2:92","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10754:3:92"},"nodeType":"YulFunctionCall","src":"10754:15:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10775:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"10771:3:92"},"nodeType":"YulFunctionCall","src":"10771:7:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"10750:3:92"},"nodeType":"YulFunctionCall","src":"10750:29:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10735:3:92"},"nodeType":"YulFunctionCall","src":"10735:45:92"},{"kind":"number","nodeType":"YulLiteral","src":"10782:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10731:3:92"},"nodeType":"YulFunctionCall","src":"10731:54:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"10723:4:92"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"10485:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"10496:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"10507:4:92","type":""}],"src":"10395:396:92"}]},"contents":"{\n { }\n function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n if iszero(eq(value, and(value, shl(224, 0xffffffff)))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function abi_decode_tuple_t_uint16(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n if iszero(eq(value, and(value, 0xffff))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 96)\n let pos := headStart\n pos := headStart\n let srcPtr := value0\n let i := 0\n for { } lt(i, 0x03) { i := add(i, 1) }\n {\n mstore(pos, and(mload(srcPtr), 0xff))\n let _1 := 0x20\n pos := add(pos, _1)\n srcPtr := add(srcPtr, _1)\n }\n }\n function validator_revert_address(value)\n {\n if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n }\n function abi_encode_tuple_t_contract$_IDAO_$10865__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_encode_tuple_t_enum$_PluginType_$13330__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n if iszero(lt(value0, 3))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x21)\n revert(0, 0x24)\n }\n mstore(headStart, value0)\n }\n function panic_error_0x41()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function abi_decode_tuple_t_addresst_bytes_memory_ptr(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n let offset := calldataload(add(headStart, 32))\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n let _2 := add(headStart, offset)\n if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n let _3 := calldataload(_2)\n if gt(_3, _1) { panic_error_0x41() }\n let _4 := not(31)\n let memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n mstore(memPtr, _3)\n if gt(add(add(_2, _3), 32), dataEnd) { revert(0, 0) }\n calldatacopy(add(memPtr, 32), add(_2, 32), _3)\n mstore(add(add(memPtr, _3), 32), 0)\n value1 := memPtr\n }\n function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_decode_tuple_t_contract$_IDAO_$10865(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n }\n function abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 46)\n mstore(add(headStart, 64), \"Initializable: contract is alrea\")\n mstore(add(headStart, 96), \"dy initialized\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xff))\n }\n function abi_encode_tuple_t_stringliteral_36e108fa7a809b52ab1951dd91c117a7bc9ac5250bdf1aa162d4e104f7edf9eb__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 44)\n mstore(add(headStart, 64), \"Function must be called through \")\n mstore(add(headStart, 96), \"delegatecall\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_52f1ead4d9653e13afbd2e90ef2587c30187cd50b2e97d784e3f7a7541247434__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 44)\n mstore(add(headStart, 64), \"Function must be called through \")\n mstore(add(headStart, 96), \"active proxy\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_67f0151b4ad1dcfa0e3302a0cd6019f51582ef1807b37dceb00bd852a514f7f4__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 56)\n mstore(add(headStart, 64), \"UUPSUpgradeable: must not be cal\")\n mstore(add(headStart, 96), \"led through delegatecall\")\n tail := add(headStart, 128)\n }\n function abi_decode_tuple_t_bytes32_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := mload(headStart)\n }\n function abi_encode_tuple_t_stringliteral_8e8e2fbcb586f700b5b14e2c4a650c8d83b9773c31c5fe8962070ea544e11f24__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 46)\n mstore(add(headStart, 64), \"ERC1967Upgrade: new implementati\")\n mstore(add(headStart, 96), \"on is not UUPS\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_76b6b6debfc5febf101145a79ecf0b0d2e89e397dfdab2bca99888370411152c__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 41)\n mstore(add(headStart, 64), \"ERC1967Upgrade: unsupported prox\")\n mstore(add(headStart, 96), \"iableUUID\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 43)\n mstore(add(headStart, 64), \"Initializable: contract is not i\")\n mstore(add(headStart, 96), \"nitializing\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_address_t_address_t_bytes32_t_bytes_calldata_ptr__to_t_address_t_address_t_bytes32_t_bytes_memory_ptr__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n {\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n mstore(add(headStart, 64), value2)\n mstore(add(headStart, 96), 128)\n mstore(add(headStart, 128), value4)\n calldatacopy(add(headStart, 160), value3, value4)\n mstore(add(add(headStart, value4), 160), 0)\n tail := add(add(headStart, and(add(value4, 31), not(31))), 160)\n }\n function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := mload(headStart)\n if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_address_t_address_t_address_t_bytes32__to_t_address_t_address_t_address_t_bytes32__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n {\n tail := add(headStart, 128)\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n mstore(add(headStart, 64), and(value2, _1))\n mstore(add(headStart, 96), value3)\n }\n function abi_encode_tuple_t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 45)\n mstore(add(headStart, 64), \"ERC1967: new implementation is n\")\n mstore(add(headStart, 96), \"ot a contract\")\n tail := add(headStart, 128)\n }\n function copy_memory_to_memory_with_cleanup(src, dst, length)\n {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n mstore(add(dst, length), 0)\n }\n function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n {\n let length := mload(value0)\n copy_memory_to_memory_with_cleanup(add(value0, 0x20), pos, length)\n end := add(pos, length)\n }\n function abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 29)\n mstore(add(headStart, 64), \"Address: call to non-contract\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n mstore(headStart, 32)\n let length := mload(value0)\n mstore(add(headStart, 32), length)\n copy_memory_to_memory_with_cleanup(add(value0, 32), add(headStart, 64), length)\n tail := add(add(headStart, and(add(length, 31), not(31))), 64)\n }\n}","id":92,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{"554":[{"length":32,"start":1059},{"length":32,"start":1192},{"length":32,"start":1438},{"length":32,"start":1571},{"length":32,"start":1805}]},"linkReferences":{},"object":"6080604052600436106100d25760003560e01c80634f1ef2861161007f5780636accab8c116100595780636accab8c14610209578063c4d66de814610220578063c9c4bfca14610240578063efe51cca1461027457600080fd5b80634f1ef286146101be57806352d1902d146101d15780635c60da1b146101f457600080fd5b80633659cfe6116100b05780633659cfe6146101505780634162169f1461017057806341de6830146101a257600080fd5b806301ffc9a7146100d7578063039a8c501461010c5780632ae9c6001461012e575b600080fd5b3480156100e357600080fd5b506100f76100f2366004610f38565b61028b565b60405190151581526020015b60405180910390f35b34801561011857600080fd5b5061012c610127366004610f62565b6102f7565b005b34801561013a57600080fd5b506101436103ef565b6040516101039190610f86565b34801561015c57600080fd5b5061012c61016b366004610fcf565b610419565b34801561017c57600080fd5b5060c9546001600160a01b03165b6040516001600160a01b039091168152602001610103565b3480156101ae57600080fd5b5060006040516101039190610fec565b61012c6101cc36600461102a565b610594565b3480156101dd57600080fd5b506101e6610700565b604051908152602001610103565b34801561020057600080fd5b5061018a6107c5565b34801561021557600080fd5b506101e661012d5481565b34801561022c57600080fd5b5061012c61023b366004610fcf565b6107fd565b34801561024c57600080fd5b506101e67f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f581565b34801561028057600080fd5b506101e661012e5481565b60006001600160e01b0319821663041de68360e41b14806102bb57506001600160e01b03198216621574e360e91b145b806102d657506001600160e01b031982166352d1902d60e01b145b806102f157506301ffc9a760e01b6001600160e01b03198316145b92915050565b600054600290610100900460ff16158015610319575060005460ff8083169116105b6103815760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805461ffff191660ff831617610100179055600261ffff831610156103a957600261012e555b6000805461ff001916905560405160ff821681527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b6103f7610f1a565b5060408051606081018252600181526004602082015260009181019190915290565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036104a65760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b6064820152608401610378565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166105017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b03161461056c5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b6064820152608401610378565b610575816108e9565b6040805160008082526020820190925261059191839190610926565b50565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036106215760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b6064820152608401610378565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661067c7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b0316146106e75760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b6064820152608401610378565b6106f0826108e9565b6106fc82826001610926565b5050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146107a05760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610378565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b60006107f87f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b600054600290610100900460ff1615801561081f575060005460ff8083169116105b6108825760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610378565b6000805461ffff191660ff83161761010017905561089f82610acb565b600161012d55600261012e556000805461ff001916905560405160ff821681527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020016103e3565b60c9547f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f5906106fc906001600160a01b0316303384600036610b3f565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561095e5761095983610bfb565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156109b8575060408051601f3d908101601f191682019092526109b5918101906110ee565b60015b610a2a5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201527f6f6e206973206e6f7420555550530000000000000000000000000000000000006064820152608401610378565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114610abf5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f7860448201527f6961626c655555494400000000000000000000000000000000000000000000006064820152608401610378565b50610959838383610cc6565b600054610100900460ff16610b365760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610378565b61059181610cf1565b604051637ef7c88360e11b81526001600160a01b0387169063fdef910690610b739088908890889088908890600401611107565b602060405180830381865afa158015610b90573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bb4919061115b565b610bf357604051630cb6f8ed60e21b81526001600160a01b03808816600483015280871660248301528516604482015260648101849052608401610378565b505050505050565b6001600160a01b0381163b610c785760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e7472616374000000000000000000000000000000000000006064820152608401610378565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610ccf83610d8b565b600082511180610cdc5750805b1561095957610ceb8383610dcb565b50505050565b600054610100900460ff16610d5c5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610378565b60c9805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610d9481610bfb565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060610df083836040518060600160405280602781526020016111f160279139610df7565b9392505050565b6060600080856001600160a01b031685604051610e1491906111a1565b600060405180830381855af49150503d8060008114610e4f576040519150601f19603f3d011682016040523d82523d6000602084013e610e54565b606091505b5091509150610e6586838387610e6f565b9695505050505050565b60608315610ede578251600003610ed7576001600160a01b0385163b610ed75760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610378565b5081610ee8565b610ee88383610ef0565b949350505050565b815115610f005781518083602001fd5b8060405162461bcd60e51b815260040161037891906111bd565b60405180606001604052806003906020820280368337509192915050565b600060208284031215610f4a57600080fd5b81356001600160e01b031981168114610df057600080fd5b600060208284031215610f7457600080fd5b813561ffff81168114610df057600080fd5b60608101818360005b6003811015610fb157815160ff16835260209283019290910190600101610f8f565b50505092915050565b6001600160a01b038116811461059157600080fd5b600060208284031215610fe157600080fd5b8135610df081610fba565b602081016003831061100e57634e487b7160e01b600052602160045260246000fd5b91905290565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561103d57600080fd5b823561104881610fba565b9150602083013567ffffffffffffffff8082111561106557600080fd5b818501915085601f83011261107957600080fd5b81358181111561108b5761108b611014565b604051601f8201601f19908116603f011681019083821181831017156110b3576110b3611014565b816040528281528860208487010111156110cc57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60006020828403121561110057600080fd5b5051919050565b60006001600160a01b03808816835280871660208401525084604083015260806060830152826080830152828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b60006020828403121561116d57600080fd5b81518015158114610df057600080fd5b60005b83811015611198578181015183820152602001611180565b50506000910152565b600082516111b381846020870161117d565b9190910192915050565b60208152600082518060208401526111dc81604085016020870161117d565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xD2 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x4F1EF286 GT PUSH2 0x7F JUMPI DUP1 PUSH4 0x6ACCAB8C GT PUSH2 0x59 JUMPI DUP1 PUSH4 0x6ACCAB8C EQ PUSH2 0x209 JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0x220 JUMPI DUP1 PUSH4 0xC9C4BFCA EQ PUSH2 0x240 JUMPI DUP1 PUSH4 0xEFE51CCA EQ PUSH2 0x274 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x1BE JUMPI DUP1 PUSH4 0x52D1902D EQ PUSH2 0x1D1 JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0x1F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x3659CFE6 GT PUSH2 0xB0 JUMPI DUP1 PUSH4 0x3659CFE6 EQ PUSH2 0x150 JUMPI DUP1 PUSH4 0x4162169F EQ PUSH2 0x170 JUMPI DUP1 PUSH4 0x41DE6830 EQ PUSH2 0x1A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xD7 JUMPI DUP1 PUSH4 0x39A8C50 EQ PUSH2 0x10C JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0x12E JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xE3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF7 PUSH2 0xF2 CALLDATASIZE PUSH1 0x4 PUSH2 0xF38 JUMP JUMPDEST PUSH2 0x28B JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x118 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x12C PUSH2 0x127 CALLDATASIZE PUSH1 0x4 PUSH2 0xF62 JUMP JUMPDEST PUSH2 0x2F7 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x13A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x143 PUSH2 0x3EF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x103 SWAP2 SWAP1 PUSH2 0xF86 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x15C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x12C PUSH2 0x16B CALLDATASIZE PUSH1 0x4 PUSH2 0xFCF JUMP JUMPDEST PUSH2 0x419 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x17C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xC9 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x103 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 PUSH1 0x40 MLOAD PUSH2 0x103 SWAP2 SWAP1 PUSH2 0xFEC JUMP JUMPDEST PUSH2 0x12C PUSH2 0x1CC CALLDATASIZE PUSH1 0x4 PUSH2 0x102A JUMP JUMPDEST PUSH2 0x594 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1E6 PUSH2 0x700 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x103 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x200 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x18A PUSH2 0x7C5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x215 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1E6 PUSH2 0x12D SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x22C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x12C PUSH2 0x23B CALLDATASIZE PUSH1 0x4 PUSH2 0xFCF JUMP JUMPDEST PUSH2 0x7FD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x24C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1E6 PUSH32 0x821B6E3A557148015A918C89E5D092E878A69854A2D1A410635F771BD5A8A3F5 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x280 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1E6 PUSH2 0x12E SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x41DE683 PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x2BB JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x2D6 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x52D1902D PUSH1 0xE0 SHL EQ JUMPDEST DUP1 PUSH2 0x2F1 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x2 SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH2 0x319 JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF DUP1 DUP4 AND SWAP2 AND LT JUMPDEST PUSH2 0x381 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x44 DUP3 ADD MSTORE PUSH14 0x191E481A5B9A5D1A585B1A5E9959 PUSH1 0x92 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH2 0xFFFF NOT AND PUSH1 0xFF DUP4 AND OR PUSH2 0x100 OR SWAP1 SSTORE PUSH1 0x2 PUSH2 0xFFFF DUP4 AND LT ISZERO PUSH2 0x3A9 JUMPI PUSH1 0x2 PUSH2 0x12E SSTORE JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH1 0xFF DUP3 AND DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH2 0x3F7 PUSH2 0xF1A JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x4A6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x19195B1959D85D1958D85B1B PUSH1 0xA2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x378 JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x501 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x56C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x6163746976652070726F7879 PUSH1 0xA0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x378 JUMP JUMPDEST PUSH2 0x575 DUP2 PUSH2 0x8E9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x591 SWAP2 DUP4 SWAP2 SWAP1 PUSH2 0x926 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x621 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x19195B1959D85D1958D85B1B PUSH1 0xA2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x378 JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x67C PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x6E7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x6163746976652070726F7879 PUSH1 0xA0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x378 JUMP JUMPDEST PUSH2 0x6F0 DUP3 PUSH2 0x8E9 JUMP JUMPDEST PUSH2 0x6FC DUP3 DUP3 PUSH1 0x1 PUSH2 0x926 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x7A0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x38 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x555550535570677261646561626C653A206D757374206E6F742062652063616C PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6C6564207468726F7567682064656C656761746563616C6C0000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x378 JUMP JUMPDEST POP PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7F8 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x2 SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH2 0x81F JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF DUP1 DUP4 AND SWAP2 AND LT JUMPDEST PUSH2 0x882 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x44 DUP3 ADD MSTORE PUSH14 0x191E481A5B9A5D1A585B1A5E9959 PUSH1 0x92 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x378 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH2 0xFFFF NOT AND PUSH1 0xFF DUP4 AND OR PUSH2 0x100 OR SWAP1 SSTORE PUSH2 0x89F DUP3 PUSH2 0xACB JUMP JUMPDEST PUSH1 0x1 PUSH2 0x12D SSTORE PUSH1 0x2 PUSH2 0x12E SSTORE PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH1 0xFF DUP3 AND DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH2 0x3E3 JUMP JUMPDEST PUSH1 0xC9 SLOAD PUSH32 0x821B6E3A557148015A918C89E5D092E878A69854A2D1A410635F771BD5A8A3F5 SWAP1 PUSH2 0x6FC SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ADDRESS CALLER DUP5 PUSH1 0x0 CALLDATASIZE PUSH2 0xB3F JUMP JUMPDEST PUSH32 0x4910FDFA16FED3260ED0E7147F7CC6DA11A60208B5B9406D12A635614FFD9143 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x95E JUMPI PUSH2 0x959 DUP4 PUSH2 0xBFB JUMP JUMPDEST POP POP POP JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x52D1902D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x9B8 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x9B5 SWAP2 DUP2 ADD SWAP1 PUSH2 0x10EE JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0xA2A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524331393637557067726164653A206E657720696D706C656D656E74617469 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F6E206973206E6F742055555053000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x378 JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC DUP2 EQ PUSH2 0xABF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524331393637557067726164653A20756E737570706F727465642070726F78 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6961626C65555549440000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x378 JUMP JUMPDEST POP PUSH2 0x959 DUP4 DUP4 DUP4 PUSH2 0xCC6 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0xB36 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x378 JUMP JUMPDEST PUSH2 0x591 DUP2 PUSH2 0xCF1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x7EF7C883 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0xFDEF9106 SWAP1 PUSH2 0xB73 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x1107 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xB90 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xBB4 SWAP2 SWAP1 PUSH2 0x115B JUMP JUMPDEST PUSH2 0xBF3 JUMPI PUSH1 0x40 MLOAD PUSH4 0xCB6F8ED PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND PUSH1 0x4 DUP4 ADD MSTORE DUP1 DUP8 AND PUSH1 0x24 DUP4 ADD MSTORE DUP6 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x84 ADD PUSH2 0x378 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND EXTCODESIZE PUSH2 0xC78 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313936373A206E657720696D706C656D656E746174696F6E206973206E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F74206120636F6E747261637400000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x378 JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xCCF DUP4 PUSH2 0xD8B JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD GT DUP1 PUSH2 0xCDC JUMPI POP DUP1 JUMPDEST ISZERO PUSH2 0x959 JUMPI PUSH2 0xCEB DUP4 DUP4 PUSH2 0xDCB JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0xD5C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x378 JUMP JUMPDEST PUSH1 0xC9 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xD94 DUP2 PUSH2 0xBFB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xDF0 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x11F1 PUSH1 0x27 SWAP2 CODECOPY PUSH2 0xDF7 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0xE14 SWAP2 SWAP1 PUSH2 0x11A1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xE4F JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xE54 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0xE65 DUP7 DUP4 DUP4 DUP8 PUSH2 0xE6F JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0xEDE JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0xED7 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0xED7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x378 JUMP JUMPDEST POP DUP2 PUSH2 0xEE8 JUMP JUMPDEST PUSH2 0xEE8 DUP4 DUP4 PUSH2 0xEF0 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0xF00 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x378 SWAP2 SWAP1 PUSH2 0x11BD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xF4A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0xDF0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xF74 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH2 0xDF0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0xFB1 JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0xF8F JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x591 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xFE1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xDF0 DUP2 PUSH2 0xFBA JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH1 0x3 DUP4 LT PUSH2 0x100E JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 SWAP1 MSTORE SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x103D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x1048 DUP2 PUSH2 0xFBA JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1065 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1079 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x108B JUMPI PUSH2 0x108B PUSH2 0x1014 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x10B3 JUMPI PUSH2 0x10B3 PUSH2 0x1014 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x10CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1100 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND DUP4 MSTORE DUP1 DUP8 AND PUSH1 0x20 DUP5 ADD MSTORE POP DUP5 PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x80 PUSH1 0x60 DUP4 ADD MSTORE DUP3 PUSH1 0x80 DUP4 ADD MSTORE DUP3 DUP5 PUSH1 0xA0 DUP5 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0xA0 DUP5 DUP5 ADD ADD MSTORE PUSH1 0xA0 PUSH1 0x1F NOT PUSH1 0x1F DUP6 ADD AND DUP4 ADD ADD SWAP1 POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x116D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xDF0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1198 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1180 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x11B3 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x117D JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x11DC DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x117D JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A164 PUSH20 0x6F6C6343000811000A0000000000000000000000 ","sourceMap":"755:431:53:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2358:366:75;;;;;;;;;;-1:-1:-1;2358:366:75;;;;;:::i;:::-;;:::i;:::-;;;470:14:92;;463:22;445:41;;433:2;418:18;2358:366:75;;;;;;;;1036:148:53;;;;;;;;;;-1:-1:-1;1036:148:53;;;;;:::i;:::-;;:::i;:::-;;631:98:90;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;3408:195:5:-;;;;;;;;;;-1:-1:-1;3408:195:5;;;;;:::i;:::-;;:::i;1200:70:67:-;;;;;;;;;;-1:-1:-1;1259:4:67;;-1:-1:-1;;;;;1259:4:67;1200:70;;;-1:-1:-1;;;;;1869:55:92;;;1851:74;;1839:2;1824:18;1200:70:67;1691:240:92;1552:103:75;;;;;;;;;;-1:-1:-1;1604:10:75;1552:103;;;;;;:::i;3922:220:5:-;;;;;;:::i;:::-;;:::i;3027:131::-;;;;;;;;;;;;;:::i;:::-;;;3624:25:92;;;3612:2;3597:18;3027:131:5;3478:177:92;3005:100:75;;;;;;;;;;;;;:::i;827:21:53:-;;;;;;;;;;;;;;;;882:148;;;;;;;;;;-1:-1:-1;882:148:53;;;;;:::i;:::-;;:::i;1753:93:75:-;;;;;;;;;;;;1808:38;1753:93;;854:21:53;;;;;;;;;;;;;;;;2358:366:75;2444:4;-1:-1:-1;;;;;;2479:41:75;;-1:-1:-1;;;2479:41:75;;:107;;-1:-1:-1;;;;;;;2536:50:75;;-1:-1:-1;;;2536:50:75;2479:107;:185;;;-1:-1:-1;;;;;;;2602:62:75;;-1:-1:-1;;;2602:62:75;2479:185;:238;;;-1:-1:-1;;;;;;;;;;1189:51:11;;;2680:37:75;2460:257;2358:366;-1:-1:-1;;2358:366:75:o;1036:148:53:-;4882:13:4;;1106:1:53;;4882:13:4;;;;;4881:14;:40;;;;-1:-1:-1;4899:12:4;;:22;;;;:12;;:22;4881:40;4873:99;;;;-1:-1:-1;;;4873:99:4;;4541:2:92;4873:99:4;;;4523:21:92;4580:2;4560:18;;;4553:30;4619:34;4599:18;;;4592:62;-1:-1:-1;;;4670:18:92;;;4663:44;4724:19;;4873:99:4;;;;;;;;;4982:12;:22;;-1:-1:-1;;5014:20:4;4982:22;;;5014:20;4982:22;5014:20;;;1140:1:53::1;1123:18;::::0;::::1;;1119:59;;;1166:1;1157:6;:10:::0;1119:59:::1;5071:5:4::0;5055:21;;-1:-1:-1;;5055:21:4;;;5091:20;;4926:4:92;4914:17;;4896:36;;5091:20:4;;4884:2:92;4869:18;5091:20:4;;;;;;;;1036:148:53;;:::o;631:98:90:-;679:15;;:::i;:::-;-1:-1:-1;706:16:90;;;;;;;;714:1;706:16;;717:1;706:16;;;;-1:-1:-1;706:16:90;;;;;;;;631:98::o;3408:195:5:-;-1:-1:-1;;;;;1764:6:5;1747:23;1755:4;1747:23;1739:80;;;;-1:-1:-1;;;1739:80:5;;5145:2:92;1739:80:5;;;5127:21:92;5184:2;5164:18;;;5157:30;5223:34;5203:18;;;5196:62;-1:-1:-1;;;5274:18:92;;;5267:42;5326:19;;1739:80:5;4943:408:92;1739:80:5;1861:6;-1:-1:-1;;;;;1837:30:5;:20;1180:66:2;1557:65;-1:-1:-1;;;;;1557:65:2;;1478:151;1837:20:5;-1:-1:-1;;;;;1837:30:5;;1829:87;;;;-1:-1:-1;;;1829:87:5;;5558:2:92;1829:87:5;;;5540:21:92;5597:2;5577:18;;;5570:30;5636:34;5616:18;;;5609:62;-1:-1:-1;;;5687:18:92;;;5680:42;5739:19;;1829:87:5;5356:408:92;1829:87:5;3489:36:::1;3507:17;3489;:36::i;:::-;3576:12;::::0;;3586:1:::1;3576:12:::0;;;::::1;::::0;::::1;::::0;;;3535:61:::1;::::0;3557:17;;3576:12;3535:21:::1;:61::i;:::-;3408:195:::0;:::o;3922:220::-;-1:-1:-1;;;;;1764:6:5;1747:23;1755:4;1747:23;1739:80;;;;-1:-1:-1;;;1739:80:5;;5145:2:92;1739:80:5;;;5127:21:92;5184:2;5164:18;;;5157:30;5223:34;5203:18;;;5196:62;-1:-1:-1;;;5274:18:92;;;5267:42;5326:19;;1739:80:5;4943:408:92;1739:80:5;1861:6;-1:-1:-1;;;;;1837:30:5;:20;1180:66:2;1557:65;-1:-1:-1;;;;;1557:65:2;;1478:151;1837:20:5;-1:-1:-1;;;;;1837:30:5;;1829:87;;;;-1:-1:-1;;;1829:87:5;;5558:2:92;1829:87:5;;;5540:21:92;5597:2;5577:18;;;5570:30;5636:34;5616:18;;;5609:62;-1:-1:-1;;;5687:18:92;;;5680:42;5739:19;;1829:87:5;5356:408:92;1829:87:5;4037:36:::1;4055:17;4037;:36::i;:::-;4083:52;4105:17;4124:4;4130;4083:21;:52::i;:::-;3922:220:::0;;:::o;3027:131::-;3105:7;2190:4;-1:-1:-1;;;;;2199:6:5;2182:23;;2174:92;;;;-1:-1:-1;;;2174:92:5;;5971:2:92;2174:92:5;;;5953:21:92;6010:2;5990:18;;;5983:30;6049:34;6029:18;;;6022:62;6120:26;6100:18;;;6093:54;6164:19;;2174:92:5;5769:420:92;2174:92:5;-1:-1:-1;1180:66:2::1;3027:131:5::0;:::o;3005:100:75:-;3052:7;3078:20;1180:66:2;1557:65;-1:-1:-1;;;;;1557:65:2;;1478:151;3078:20:75;3071:27;;3005:100;:::o;882:148:53:-;4882:13:4;;936:1:53;;4882:13:4;;;;;4881:14;:40;;;;-1:-1:-1;4899:12:4;;:22;;;;:12;;:22;4881:40;4873:99;;;;-1:-1:-1;;;4873:99:4;;4541:2:92;4873:99:4;;;4523:21:92;4580:2;4560:18;;;4553:30;4619:34;4599:18;;;4592:62;-1:-1:-1;;;4670:18:92;;;4663:44;4724:19;;4873:99:4;4339:410:92;4873:99:4;4982:12;:22;;-1:-1:-1;;5014:20:4;4982:22;;;5014:20;4982:22;5014:20;;;949:34:53::1;978:4:::0;949:28:::1;:34::i;:::-;1002:1;993:6;:10:::0;1022:1:::1;1013:6;:10:::0;-1:-1:-1;5055:21:4;;-1:-1:-1;;5055:21:4;;;5091:20;;4926:4:92;4914:17;;4896:36;;5091:20:4;;4884:2:92;4869:18;5091:20:4;4754:184:92;3446:204:75;1616:4:67;;1808:38:75;;1610:67:67;;-1:-1:-1;;;;;1616:4:67;1630;965:10:8;1651:13:67;1039:14:8;;1610:5:67;:67::i;2841:944:2:-;839:66;3257:59;;;3253:526;;;3332:37;3351:17;3332:18;:37::i;:::-;2841:944;;;:::o;3253:526::-;3433:17;-1:-1:-1;;;;;3404:61:2;;:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3404:63:2;;;;;;;;-1:-1:-1;;3404:63:2;;;;;;;;;;;;:::i;:::-;;;3400:302;;3631:56;;-1:-1:-1;;;3631:56:2;;6585:2:92;3631:56:2;;;6567:21:92;6624:2;6604:18;;;6597:30;6663:34;6643:18;;;6636:62;6734:16;6714:18;;;6707:44;6768:19;;3631:56:2;6383:410:92;3400:302:2;1180:66;3517:28;;3509:82;;;;-1:-1:-1;;;3509:82:2;;7000:2:92;3509:82:2;;;6982:21:92;7039:2;7019:18;;;7012:30;7078:34;7058:18;;;7051:62;7149:11;7129:18;;;7122:39;7178:19;;3509:82:2;6798:405:92;3509:82:2;3468:138;3715:53;3733:17;3752:4;3758:9;3715:17;:53::i;2014:139:75:-;5374:13:4;;;;;;;5366:69;;;;-1:-1:-1;;;5366:69:4;;7410:2:92;5366:69:4;;;7392:21:92;7449:2;7429:18;;;7422:30;7488:34;7468:18;;;7461:62;-1:-1:-1;;;7539:18:92;;;7532:41;7590:19;;5366:69:4;7208:407:92;5366:69:4;2107:39:75::1;2141:4;2107:33;:39::i;1041:363:68:-:0;1180:54;;-1:-1:-1;;;1180:54:68;;-1:-1:-1;;;;;1180:18:68;;;;;:54;;1199:6;;1207:4;;1213:13;;1228:5;;;;1180:54;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1175:226;;1251:150;;-1:-1:-1;;;1251:150:68;;-1:-1:-1;;;;;8902:15:92;;;1251:150:68;;;8884:34:92;8954:15;;;8934:18;;;8927:43;9006:15;;8986:18;;;8979:43;9038:18;;;9031:34;;;8795:19;;1251:150:68;8592:479:92;1175:226:68;1041:363;;;;;;:::o;1720:281:2:-;-1:-1:-1;;;;;1713:19:6;;;1793:106:2;;;;-1:-1:-1;;;1793:106:2;;9278:2:92;1793:106:2;;;9260:21:92;9317:2;9297:18;;;9290:30;9356:34;9336:18;;;9329:62;9427:15;9407:18;;;9400:43;9460:19;;1793:106:2;9076:409:92;1793:106:2;1180:66;1909:85;;-1:-1:-1;;1909:85:2;-1:-1:-1;;;;;1909:85:2;;;;;;;;;;1720:281::o;2393:276::-;2501:29;2512:17;2501:10;:29::i;:::-;2558:1;2544:4;:11;:15;:28;;;;2563:9;2544:28;2540:123;;;2588:64;2628:17;2647:4;2588:39;:64::i;:::-;;2393:276;;;:::o;1010:108:67:-;5374:13:4;;;;;;;5366:69;;;;-1:-1:-1;;;5366:69:4;;7410:2:92;5366:69:4;;;7392:21:92;7449:2;7429:18;;;7422:30;7488:34;7468:18;;;7461:62;-1:-1:-1;;;7539:18:92;;;7532:41;7590:19;;5366:69:4;7208:407:92;5366:69:4;1100:4:67::1;:11:::0;;-1:-1:-1;;1100:11:67::1;-1:-1:-1::0;;;;;1100:11:67;;;::::1;::::0;;;::::1;::::0;;1010:108::o;2107:152:2:-;2173:37;2192:17;2173:18;:37::i;:::-;2225:27;;-1:-1:-1;;;;;2225:27:2;;;;;;;;2107:152;:::o;6685:198:6:-;6768:12;6799:77;6820:6;6828:4;6799:77;;;;;;;;;;;;;;;;;:20;:77::i;:::-;6792:84;6685:198;-1:-1:-1;;;6685:198:6:o;7069:325::-;7210:12;7235;7249:23;7276:6;-1:-1:-1;;;;;7276:19:6;7296:4;7276:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7234:67;;;;7318:69;7345:6;7353:7;7362:10;7374:12;7318:26;:69::i;:::-;7311:76;7069:325;-1:-1:-1;;;;;;7069:325:6:o;7682:628::-;7862:12;7890:7;7886:418;;;7917:10;:17;7938:1;7917:22;7913:286;;-1:-1:-1;;;;;1713:19:6;;;8124:60;;;;-1:-1:-1;;;8124:60:6;;10239:2:92;8124:60:6;;;10221:21:92;10278:2;10258:18;;;10251:30;10317:31;10297:18;;;10290:59;10366:18;;8124:60:6;10037:353:92;8124:60:6;-1:-1:-1;8219:10:6;8212:17;;7886:418;8260:33;8268:10;8280:12;8260:7;:33::i;:::-;7682:628;;;;;;:::o;8832:540::-;8991:17;;:21;8987:379;;9219:10;9213:17;9275:15;9262:10;9258:2;9254:19;9247:44;8987:379;9342:12;9335:20;;-1:-1:-1;;;9335:20:6;;;;;;;;:::i;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:286:92:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:92;;209:43;;199:71;;266:1;263;256:12;497:272;555:6;608:2;596:9;587:7;583:23;579:32;576:52;;;624:1;621;614:12;576:52;663:9;650:23;713:6;706:5;702:18;695:5;692:29;682:57;;735:1;732;725:12;774:501;950:2;935:18;;939:9;1030:6;908:4;1064:205;1078:4;1075:1;1072:11;1064:205;;;1141:13;;1156:4;1137:24;1125:37;;1185:4;1209:12;;;;1244:15;;;;1098:1;1091:9;1064:205;;;1068:3;;;774:501;;;;:::o;1280:154::-;-1:-1:-1;;;;;1359:5:92;1355:54;1348:5;1345:65;1335:93;;1424:1;1421;1414:12;1439:247;1498:6;1551:2;1539:9;1530:7;1526:23;1522:32;1519:52;;;1567:1;1564;1557:12;1519:52;1606:9;1593:23;1625:31;1650:5;1625:31;:::i;1936:344::-;2084:2;2069:18;;2117:1;2106:13;;2096:144;;2162:10;2157:3;2153:20;2150:1;2143:31;2197:4;2194:1;2187:15;2225:4;2222:1;2215:15;2096:144;2249:25;;;1936:344;:::o;2285:127::-;2346:10;2341:3;2337:20;2334:1;2327:31;2377:4;2374:1;2367:15;2401:4;2398:1;2391:15;2417:1056;2494:6;2502;2555:2;2543:9;2534:7;2530:23;2526:32;2523:52;;;2571:1;2568;2561:12;2523:52;2610:9;2597:23;2629:31;2654:5;2629:31;:::i;:::-;2679:5;-1:-1:-1;2735:2:92;2720:18;;2707:32;2758:18;2788:14;;;2785:34;;;2815:1;2812;2805:12;2785:34;2853:6;2842:9;2838:22;2828:32;;2898:7;2891:4;2887:2;2883:13;2879:27;2869:55;;2920:1;2917;2910:12;2869:55;2956:2;2943:16;2978:2;2974;2971:10;2968:36;;;2984:18;;:::i;:::-;3059:2;3053:9;3027:2;3113:13;;-1:-1:-1;;3109:22:92;;;3133:2;3105:31;3101:40;3089:53;;;3157:18;;;3177:22;;;3154:46;3151:72;;;3203:18;;:::i;:::-;3243:10;3239:2;3232:22;3278:2;3270:6;3263:18;3318:7;3313:2;3308;3304;3300:11;3296:20;3293:33;3290:53;;;3339:1;3336;3329:12;3290:53;3395:2;3390;3386;3382:11;3377:2;3369:6;3365:15;3352:46;3440:1;3435:2;3430;3422:6;3418:15;3414:24;3407:35;3461:6;3451:16;;;;;;;2417:1056;;;;;:::o;6194:184::-;6264:6;6317:2;6305:9;6296:7;6292:23;6288:32;6285:52;;;6333:1;6330;6323:12;6285:52;-1:-1:-1;6356:16:92;;6194:184;-1:-1:-1;6194:184:92:o;7620:685::-;7824:4;-1:-1:-1;;;;;7934:2:92;7926:6;7922:15;7911:9;7904:34;7986:2;7978:6;7974:15;7969:2;7958:9;7954:18;7947:43;;8026:6;8021:2;8010:9;8006:18;7999:34;8069:3;8064:2;8053:9;8049:18;8042:31;8110:6;8104:3;8093:9;8089:19;8082:35;8168:6;8160;8154:3;8143:9;8139:19;8126:49;8225:1;8219:3;8210:6;8199:9;8195:22;8191:32;8184:43;8295:3;8288:2;8284:7;8279:2;8271:6;8267:15;8263:29;8252:9;8248:45;8244:55;8236:63;;7620:685;;;;;;;;:::o;8310:277::-;8377:6;8430:2;8418:9;8409:7;8405:23;8401:32;8398:52;;;8446:1;8443;8436:12;8398:52;8478:9;8472:16;8531:5;8524:13;8517:21;8510:5;8507:32;8497:60;;8553:1;8550;8543:12;9490:250;9575:1;9585:113;9599:6;9596:1;9593:13;9585:113;;;9675:11;;;9669:18;9656:11;;;9649:39;9621:2;9614:10;9585:113;;;-1:-1:-1;;9732:1:92;9714:16;;9707:27;9490:250::o;9745:287::-;9874:3;9912:6;9906:13;9928:66;9987:6;9982:3;9975:4;9967:6;9963:17;9928:66;:::i;:::-;10010:16;;;;;9745:287;-1:-1:-1;;9745:287:92:o;10395:396::-;10544:2;10533:9;10526:21;10507:4;10576:6;10570:13;10619:6;10614:2;10603:9;10599:18;10592:34;10635:79;10707:6;10702:2;10691:9;10687:18;10682:2;10674:6;10670:15;10635:79;:::i;:::-;10775:2;10754:15;-1:-1:-1;;10750:29:92;10735:45;;;;10782:2;10731:54;;10395:396;-1:-1:-1;;10395:396:92:o"},"gasEstimates":{"creation":{"codeDepositCost":"928800","executionCost":"infinite","totalCost":"infinite"},"external":{"UPGRADE_PLUGIN_PERMISSION_ID()":"261","dao()":"2365","implementation()":"2436","initialize(address)":"infinite","initializeFrom(uint16)":"76250","pluginType()":"294","protocolVersion()":"infinite","proxiableUUID()":"infinite","state1()":"2317","state2()":"2383","supportsInterface(bytes4)":"560","upgradeTo(address)":"infinite","upgradeToAndCall(address,bytes)":"infinite"}},"methodIdentifiers":{"UPGRADE_PLUGIN_PERMISSION_ID()":"c9c4bfca","dao()":"4162169f","implementation()":"5c60da1b","initialize(address)":"c4d66de8","initializeFrom(uint16)":"039a8c50","pluginType()":"41de6830","protocolVersion()":"2ae9c600","proxiableUUID()":"52d1902d","state1()":"6accab8c","state2()":"efe51cca","supportsInterface(bytes4)":"01ffc9a7","upgradeTo(address)":"3659cfe6","upgradeToAndCall(address,bytes)":"4f1ef286"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"dao\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"name\":\"DaoUnauthorized\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"UPGRADE_PLUGIN_PERMISSION_ID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"dao\",\"outputs\":[{\"internalType\":\"contract IDAO\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IDAO\",\"name\":\"_dao\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"_previousBuild\",\"type\":\"uint16\"}],\"name\":\"initializeFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pluginType\",\"outputs\":[{\"internalType\":\"enum IPlugin.PluginType\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"protocolVersion\",\"outputs\":[{\"internalType\":\"uint8[3]\",\"name\":\"\",\"type\":\"uint8[3]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"state1\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"state2\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"upgradeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"DO NOT USE IN PRODUCTION!\",\"errors\":{\"DaoUnauthorized(address,address,address,bytes32)\":[{\"params\":{\"dao\":\"The associated DAO.\",\"permissionId\":\"The permission identifier.\",\"where\":\"The context in which the authorization reverted.\",\"who\":\"The address (EOA or contract) missing the permission.\"}}]},\"kind\":\"dev\",\"methods\":{\"dao()\":{\"returns\":{\"_0\":\"The DAO contract.\"}},\"implementation()\":{\"returns\":{\"_0\":\"The address of the implementation contract.\"}},\"protocolVersion()\":{\"details\":\"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\",\"returns\":{\"_0\":\"Returns the semantic Aragon OSx protocol version number.\"}},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"supportsInterface(bytes4)\":{\"params\":{\"_interfaceId\":\"The ID of the interface.\"},\"returns\":{\"_0\":\"Returns `true` if the interface is supported.\"}},\"upgradeTo(address)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"},\"upgradeToAndCall(address,bytes)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"}},\"version\":1},\"userdoc\":{\"errors\":{\"DaoUnauthorized(address,address,address,bytes32)\":[{\"notice\":\"Thrown if a call is unauthorized in the associated DAO.\"}]},\"kind\":\"user\",\"methods\":{\"UPGRADE_PLUGIN_PERMISSION_ID()\":{\"notice\":\"The ID of the permission required to call the `_authorizeUpgrade` function.\"},\"dao()\":{\"notice\":\"Returns the DAO contract.\"},\"implementation()\":{\"notice\":\"Returns the address of the implementation contract in the [proxy storage slot](https://eips.ethereum.org/EIPS/eip-1967) slot the [UUPS proxy](https://eips.ethereum.org/EIPS/eip-1822) is pointing to.\"},\"pluginType()\":{\"notice\":\"Returns the plugin's type\"},\"protocolVersion()\":{\"notice\":\"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Checks if an interface is supported by this or its parent contract.\"}},\"notice\":\"A mock upgradeable plugin to be deployed via the UUPS proxy pattern. v1.1 (Release 1, Build 2)\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/mocks/plugin/PluginUUPSUpgradeableMock.sol\":\"PluginUUPSUpgradeableMockBuild2\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/interfaces/IERC1967Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (interfaces/IERC1967.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\\n *\\n * _Available since v4.8.3._\\n */\\ninterface IERC1967Upgradeable {\\n /**\\n * @dev Emitted when the implementation is upgraded.\\n */\\n event Upgraded(address indexed implementation);\\n\\n /**\\n * @dev Emitted when the admin account has changed.\\n */\\n event AdminChanged(address previousAdmin, address newAdmin);\\n\\n /**\\n * @dev Emitted when the beacon is changed.\\n */\\n event BeaconUpgraded(address indexed beacon);\\n}\\n\",\"keccak256\":\"0x47d6e06872b12e72c79d1b5eb55842f860b5fb1207b2317c2358d2766b950a7b\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822ProxiableUpgradeable {\\n /**\\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n * address.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy.\\n */\\n function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../beacon/IBeaconUpgradeable.sol\\\";\\nimport \\\"../../interfaces/IERC1967Upgradeable.sol\\\";\\nimport \\\"../../interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\nimport \\\"../../utils/StorageSlotUpgradeable.sol\\\";\\nimport {Initializable} from \\\"../utils/Initializable.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n */\\nabstract contract ERC1967UpgradeUpgradeable is Initializable, IERC1967Upgradeable {\\n // This is the keccak-256 hash of \\\"eip1967.proxy.rollback\\\" subtracted by 1\\n bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n /**\\n * @dev Storage slot with the address of the current implementation.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n function __ERC1967Upgrade_init() internal onlyInitializing {\\n }\\n\\n function __ERC1967Upgrade_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _getImplementation() internal view returns (address) {\\n return StorageSlotUpgradeable.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 implementation slot.\\n */\\n function _setImplementation(address newImplementation) private {\\n require(AddressUpgradeable.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n StorageSlotUpgradeable.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n }\\n\\n /**\\n * @dev Perform implementation upgrade\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeTo(address newImplementation) internal {\\n _setImplementation(newImplementation);\\n emit Upgraded(newImplementation);\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCall(address newImplementation, bytes memory data, bool forceCall) internal {\\n _upgradeTo(newImplementation);\\n if (data.length > 0 || forceCall) {\\n AddressUpgradeable.functionDelegateCall(newImplementation, data);\\n }\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCallUUPS(address newImplementation, bytes memory data, bool forceCall) internal {\\n // Upgrades from old implementations will perform a rollback test. This test requires the new\\n // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n // this special case will break upgrade paths from old UUPS implementation to new ones.\\n if (StorageSlotUpgradeable.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n _setImplementation(newImplementation);\\n } else {\\n try IERC1822ProxiableUpgradeable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n require(slot == _IMPLEMENTATION_SLOT, \\\"ERC1967Upgrade: unsupported proxiableUUID\\\");\\n } catch {\\n revert(\\\"ERC1967Upgrade: new implementation is not UUPS\\\");\\n }\\n _upgradeToAndCall(newImplementation, data, forceCall);\\n }\\n }\\n\\n /**\\n * @dev Storage slot with the admin of the contract.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _getAdmin() internal view returns (address) {\\n return StorageSlotUpgradeable.getAddressSlot(_ADMIN_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 admin slot.\\n */\\n function _setAdmin(address newAdmin) private {\\n require(newAdmin != address(0), \\\"ERC1967: new admin is the zero address\\\");\\n StorageSlotUpgradeable.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n */\\n function _changeAdmin(address newAdmin) internal {\\n emit AdminChanged(_getAdmin(), newAdmin);\\n _setAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\\n */\\n bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n /**\\n * @dev Returns the current beacon.\\n */\\n function _getBeacon() internal view returns (address) {\\n return StorageSlotUpgradeable.getAddressSlot(_BEACON_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new beacon in the EIP1967 beacon slot.\\n */\\n function _setBeacon(address newBeacon) private {\\n require(AddressUpgradeable.isContract(newBeacon), \\\"ERC1967: new beacon is not a contract\\\");\\n require(\\n AddressUpgradeable.isContract(IBeaconUpgradeable(newBeacon).implementation()),\\n \\\"ERC1967: beacon implementation is not a contract\\\"\\n );\\n StorageSlotUpgradeable.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n }\\n\\n /**\\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n *\\n * Emits a {BeaconUpgraded} event.\\n */\\n function _upgradeBeaconToAndCall(address newBeacon, bytes memory data, bool forceCall) internal {\\n _setBeacon(newBeacon);\\n emit BeaconUpgraded(newBeacon);\\n if (data.length > 0 || forceCall) {\\n AddressUpgradeable.functionDelegateCall(IBeaconUpgradeable(newBeacon).implementation(), data);\\n }\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x7795808e3899c805254e3ae58074b20f799b466e3f43e057e47bedee5fb771f8\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeaconUpgradeable {\\n /**\\n * @dev Must return an address that can be used as a delegate call target.\\n *\\n * {BeaconProxy} will check that this address is a contract.\\n */\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/UUPSUpgradeable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport \\\"../ERC1967/ERC1967UpgradeUpgradeable.sol\\\";\\nimport {Initializable} from \\\"./Initializable.sol\\\";\\n\\n/**\\n * @dev An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an\\n * {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy.\\n *\\n * A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is\\n * reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing\\n * `UUPSUpgradeable` with a custom implementation of upgrades.\\n *\\n * The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism.\\n *\\n * _Available since v4.1._\\n */\\nabstract contract UUPSUpgradeable is Initializable, IERC1822ProxiableUpgradeable, ERC1967UpgradeUpgradeable {\\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable state-variable-assignment\\n address private immutable __self = address(this);\\n\\n /**\\n * @dev Check that the execution is being performed through a delegatecall call and that the execution context is\\n * a proxy contract with an implementation (as defined in ERC1967) pointing to self. This should only be the case\\n * for UUPS and transparent proxies that are using the current contract as their implementation. Execution of a\\n * function through ERC1167 minimal proxies (clones) would not normally pass this test, but is not guaranteed to\\n * fail.\\n */\\n modifier onlyProxy() {\\n require(address(this) != __self, \\\"Function must be called through delegatecall\\\");\\n require(_getImplementation() == __self, \\\"Function must be called through active proxy\\\");\\n _;\\n }\\n\\n /**\\n * @dev Check that the execution is not being performed through a delegate call. This allows a function to be\\n * callable on the implementing contract but not through proxies.\\n */\\n modifier notDelegated() {\\n require(address(this) == __self, \\\"UUPSUpgradeable: must not be called through delegatecall\\\");\\n _;\\n }\\n\\n function __UUPSUpgradeable_init() internal onlyInitializing {\\n }\\n\\n function __UUPSUpgradeable_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the\\n * implementation. It is used to validate the implementation's compatibility when performing an upgrade.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\\n */\\n function proxiableUUID() external view virtual override notDelegated returns (bytes32) {\\n return _IMPLEMENTATION_SLOT;\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy to `newImplementation`.\\n *\\n * Calls {_authorizeUpgrade}.\\n *\\n * Emits an {Upgraded} event.\\n *\\n * @custom:oz-upgrades-unsafe-allow-reachable delegatecall\\n */\\n function upgradeTo(address newImplementation) public virtual onlyProxy {\\n _authorizeUpgrade(newImplementation);\\n _upgradeToAndCallUUPS(newImplementation, new bytes(0), false);\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call\\n * encoded in `data`.\\n *\\n * Calls {_authorizeUpgrade}.\\n *\\n * Emits an {Upgraded} event.\\n *\\n * @custom:oz-upgrades-unsafe-allow-reachable delegatecall\\n */\\n function upgradeToAndCall(address newImplementation, bytes memory data) public payable virtual onlyProxy {\\n _authorizeUpgrade(newImplementation);\\n _upgradeToAndCallUUPS(newImplementation, data, true);\\n }\\n\\n /**\\n * @dev Function that should revert when `msg.sender` is not authorized to upgrade the contract. Called by\\n * {upgradeTo} and {upgradeToAndCall}.\\n *\\n * Normally, this function will use an xref:access.adoc[access control] modifier such as {Ownable-onlyOwner}.\\n *\\n * ```solidity\\n * function _authorizeUpgrade(address) internal override onlyOwner {}\\n * ```\\n */\\n function _authorizeUpgrade(address newImplementation) internal virtual;\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0xefb41f5c1a00249b7a99f0782f8c557865605426a3fb6e5fe9ae334293ae4f33\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n function __Context_init() internal onlyInitializing {\\n }\\n\\n function __Context_init_unchained() internal onlyInitializing {\\n }\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n function _contextSuffixLength() internal view virtual returns (uint256) {\\n return 0;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x75097e35253e7fb282ee4d7f27a80eaacfa759923185bf17302a89cbc059c5ef\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/StorageSlot.sol)\\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```solidity\\n * contract ERC1967 {\\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n * function _getImplementation() internal view returns (address) {\\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n * }\\n *\\n * function _setImplementation(address newImplementation) internal {\\n * require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n * }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._\\n * _Available since v4.9 for `string`, `bytes`._\\n */\\nlibrary StorageSlotUpgradeable {\\n struct AddressSlot {\\n address value;\\n }\\n\\n struct BooleanSlot {\\n bool value;\\n }\\n\\n struct Bytes32Slot {\\n bytes32 value;\\n }\\n\\n struct Uint256Slot {\\n uint256 value;\\n }\\n\\n struct StringSlot {\\n string value;\\n }\\n\\n struct BytesSlot {\\n bytes value;\\n }\\n\\n /**\\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n */\\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n */\\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n */\\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n */\\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` with member `value` located at `slot`.\\n */\\n function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\\n */\\n function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` with member `value` located at `slot`.\\n */\\n function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\\n */\\n function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n}\\n\",\"keccak256\":\"0x07ac95acad040f1fb1f6120dd0aa5f702db69446e95f82613721879d30de0908\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165Upgradeable.sol\\\";\\nimport {Initializable} from \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165Upgradeable is Initializable, IERC165Upgradeable {\\n function __ERC165_init() internal onlyInitializing {\\n }\\n\\n function __ERC165_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165Upgradeable).interfaceId;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0xd90d7723512df65ae417adaf0801042940f0dabd60039ceeaffe34aa5b238da1\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165Upgradeable {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\"},\"src/dao/IDAO.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IDAO\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for DAOs within the Aragon App DAO framework.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IDAO {\\n /// @notice The action struct to be consumed by the DAO's `execute` function resulting in an external call.\\n /// @param to The address to call.\\n /// @param value The native token value to be sent with the call.\\n /// @param data The bytes-encoded function selector and calldata for the call.\\n struct Action {\\n address to;\\n uint256 value;\\n bytes data;\\n }\\n\\n /// @notice Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\\n /// @param _where The address of the contract.\\n /// @param _who The address of a EOA or contract to give the permissions.\\n /// @param _permissionId The permission identifier.\\n /// @param _data The optional data passed to the `PermissionCondition` registered.\\n /// @return Returns true if the address has permission, false if not.\\n function hasPermission(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes memory _data\\n ) external view returns (bool);\\n\\n /// @notice Updates the DAO metadata (e.g., an IPFS hash).\\n /// @param _metadata The IPFS hash of the new metadata object.\\n function setMetadata(bytes calldata _metadata) external;\\n\\n /// @notice Emitted when the DAO metadata is updated.\\n /// @param metadata The IPFS hash of the new metadata object.\\n event MetadataSet(bytes metadata);\\n\\n /// @notice Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted.\\n /// @param _callId The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce.\\n /// @param _actions The array of actions.\\n /// @param _allowFailureMap A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @return The array of results obtained from the executed actions in `bytes`.\\n /// @return The resulting failure map containing the actions have actually failed.\\n function execute(\\n bytes32 _callId,\\n Action[] memory _actions,\\n uint256 _allowFailureMap\\n ) external returns (bytes[] memory, uint256);\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param actor The address of the caller.\\n /// @param callId The ID of the call.\\n /// @param actions The array of actions executed.\\n /// @param allowFailureMap The allow failure map encoding which actions are allowed to fail.\\n /// @param failureMap The failure map encoding which actions have failed.\\n /// @param execResults The array with the results of the executed actions.\\n /// @dev The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce.\\n event Executed(\\n address indexed actor,\\n bytes32 callId,\\n Action[] actions,\\n uint256 allowFailureMap,\\n uint256 failureMap,\\n bytes[] execResults\\n );\\n\\n /// @notice Emitted when a standard callback is registered.\\n /// @param interfaceId The ID of the interface.\\n /// @param callbackSelector The selector of the callback function.\\n /// @param magicNumber The magic number to be registered for the callback function selector.\\n event StandardCallbackRegistered(\\n bytes4 interfaceId,\\n bytes4 callbackSelector,\\n bytes4 magicNumber\\n );\\n\\n /// @notice Deposits (native) tokens to the DAO contract with a reference string.\\n /// @param _token The address of the token or address(0) in case of the native token.\\n /// @param _amount The amount of tokens to deposit.\\n /// @param _reference The reference describing the deposit reason.\\n function deposit(address _token, uint256 _amount, string calldata _reference) external payable;\\n\\n /// @notice Emitted when a token deposit has been made to the DAO.\\n /// @param sender The address of the sender.\\n /// @param token The address of the deposited token.\\n /// @param amount The amount of tokens deposited.\\n /// @param _reference The reference describing the deposit reason.\\n event Deposited(\\n address indexed sender,\\n address indexed token,\\n uint256 amount,\\n string _reference\\n );\\n\\n /// @notice Emitted when a native token deposit has been made to the DAO.\\n /// @dev This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).\\n /// @param sender The address of the sender.\\n /// @param amount The amount of native tokens deposited.\\n event NativeTokenDeposited(address sender, uint256 amount);\\n\\n /// @notice Setter for the trusted forwarder verifying the meta transaction.\\n /// @param _trustedForwarder The trusted forwarder address.\\n function setTrustedForwarder(address _trustedForwarder) external;\\n\\n /// @notice Getter for the trusted forwarder verifying the meta transaction.\\n /// @return The trusted forwarder address.\\n function getTrustedForwarder() external view returns (address);\\n\\n /// @notice Emitted when a new TrustedForwarder is set on the DAO.\\n /// @param forwarder the new forwarder address.\\n event TrustedForwarderSet(address forwarder);\\n\\n /// @notice Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\\n /// @param _hash The hash of the data to be signed.\\n /// @param _signature The signature byte array associated with `_hash`.\\n /// @return Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not.\\n function isValidSignature(bytes32 _hash, bytes memory _signature) external returns (bytes4);\\n\\n /// @notice Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\\n /// @param _interfaceId The ID of the interface.\\n /// @param _callbackSelector The selector of the callback function.\\n /// @param _magicNumber The magic number to be registered for the function signature.\\n function registerStandardCallback(\\n bytes4 _interfaceId,\\n bytes4 _callbackSelector,\\n bytes4 _magicNumber\\n ) external;\\n\\n /// @notice Removed function being left here to not corrupt the IDAO interface ID. Any call will revert.\\n /// @dev Introduced in v1.0.0. Removed in v1.4.0.\\n function setSignatureValidator(address) external;\\n}\\n\",\"keccak256\":\"0xb7f615523c26de042edce98731c658f44a1edb2464387ac1b642c4c69f57128e\",\"license\":\"AGPL-3.0-or-later\"},\"src/mocks/plugin/PluginUUPSUpgradeableMock.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\n/* solhint-disable one-contract-per-file */\\npragma solidity ^0.8.8;\\n\\nimport {PluginUUPSUpgradeable} from \\\"../../plugin/PluginUUPSUpgradeable.sol\\\";\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice A mock upgradeable plugin to be deployed via the UUPS proxy pattern.\\n/// v1.1 (Release 1, Build 1)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableMockBuild1 is PluginUUPSUpgradeable {\\n uint256 public state1;\\n\\n function initialize(IDAO _dao) external initializer {\\n __PluginUUPSUpgradeable_init(_dao);\\n state1 = 1;\\n }\\n}\\n\\n/// @notice A mock upgradeable plugin to be deployed via the UUPS proxy pattern.\\n/// v1.1 (Release 1, Build 2)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableMockBuild2 is PluginUUPSUpgradeable {\\n uint256 public state1;\\n uint256 public state2;\\n\\n function initialize(IDAO _dao) external reinitializer(2) {\\n __PluginUUPSUpgradeable_init(_dao);\\n state1 = 1;\\n state2 = 2;\\n }\\n\\n function initializeFrom(uint16 _previousBuild) external reinitializer(2) {\\n if (_previousBuild < 2) {\\n state2 = 2;\\n }\\n }\\n}\\n\\n/// @notice A mock upgradeable plugin to be deployed via the UUPS proxy pattern.\\n/// v1.1 (Release 1, Build 3)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableMockBuild3 is PluginUUPSUpgradeable {\\n uint256 public state1;\\n uint256 public state2;\\n uint256 public state3;\\n\\n function initialize(IDAO _dao) external reinitializer(3) {\\n __PluginUUPSUpgradeable_init(_dao);\\n state1 = 1;\\n state2 = 2;\\n state3 = 3;\\n }\\n\\n function initializeFrom(uint16 _previousBuild) external reinitializer(3) {\\n if (_previousBuild < 2) {\\n state2 = 2;\\n }\\n if (_previousBuild < 3) {\\n state3 = 3;\\n }\\n }\\n}\\n\\n/// @notice A mock upgradeable plugin missing an initializer function.\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableMockBad is PluginUUPSUpgradeable {\\n uint256 public state1;\\n\\n function notAnInitializer(IDAO _dao) external {\\n __PluginUUPSUpgradeable_init(_dao);\\n state1 = 1;\\n }\\n}\\n\",\"keccak256\":\"0x2917df3b1da0de27f58cf531afeaa4e6c4285717247cbdd9ecc7880ae5cb9cb0\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/DaoAuthorizableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ContextUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\\\";\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\nimport {_auth} from \\\"./auth.sol\\\";\\n\\n/// @title DaoAuthorizableUpgradeable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract contract providing a meta-transaction compatible modifier for upgradeable or cloneable contracts to authorize function calls through an associated DAO.\\n/// @dev Make sure to call `__DaoAuthorizableUpgradeable_init` during initialization of the inheriting contract.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract DaoAuthorizableUpgradeable is ContextUpgradeable {\\n /// @notice The associated DAO managing the permissions of inheriting contracts.\\n IDAO private dao_;\\n\\n /// @notice Initializes the contract by setting the associated DAO.\\n /// @param _dao The associated DAO address.\\n // solhint-disable-next-line func-name-mixedcase\\n function __DaoAuthorizableUpgradeable_init(IDAO _dao) internal onlyInitializing {\\n dao_ = _dao;\\n }\\n\\n /// @notice Returns the DAO contract.\\n /// @return The DAO contract.\\n function dao() public view returns (IDAO) {\\n return dao_;\\n }\\n\\n /// @notice A modifier to make functions on inheriting contracts authorized. Permissions to call the function are checked through the associated DAO's permission manager.\\n /// @param _permissionId The permission identifier required to call the method this modifier is applied to.\\n modifier auth(bytes32 _permissionId) {\\n _auth(dao_, address(this), _msgSender(), _permissionId, _msgData());\\n _;\\n }\\n\\n /// @notice This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain (see [OpenZeppelin's guide about storage gaps](https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps)).\\n uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0x7fac6b01b037ba1cb9d6a22d3f43b0785037dcf496ffb672434d9bf7227d2585\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/auth.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice Thrown if a call is unauthorized in the associated DAO.\\n/// @param dao The associated DAO.\\n/// @param where The context in which the authorization reverted.\\n/// @param who The address (EOA or contract) missing the permission.\\n/// @param permissionId The permission identifier.\\nerror DaoUnauthorized(address dao, address where, address who, bytes32 permissionId);\\n\\n/// @notice A free function checking if a caller is granted permissions on a target contract via a permission identifier that redirects the approval to a `PermissionCondition` if this was specified in the setup.\\n/// @param _where The address of the target contract for which `who` receives permission.\\n/// @param _who The address (EOA or contract) owning the permission.\\n/// @param _permissionId The permission identifier.\\n/// @param _data The optional data passed to the `PermissionCondition` registered.\\n/// @custom:security-contact sirt@aragon.org\\nfunction _auth(\\n IDAO _dao,\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes calldata _data\\n) view {\\n if (!_dao.hasPermission(_where, _who, _permissionId, _data))\\n revert DaoUnauthorized({\\n dao: address(_dao),\\n where: _where,\\n who: _who,\\n permissionId: _permissionId\\n });\\n}\\n\",\"keccak256\":\"0x878764b4f87fe0651fb3798fb9cb87c952f8c6caf6ae79c7f09de84df6c00298\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/IPlugin.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IPlugin\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the traits of a plugin.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IPlugin {\\n enum PluginType {\\n UUPS,\\n Cloneable,\\n Constructable\\n }\\n\\n /// @notice Returns the plugin's type\\n function pluginType() external view returns (PluginType);\\n}\\n\",\"keccak256\":\"0xc57cd0d10b6380ab7f54c713a509e88fd8f4ad9288313a0e8e12b8887817ddfe\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/PluginUUPSUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {UUPSUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\\\";\\nimport {IERC1822ProxiableUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport {ERC165Upgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\\\";\\n\\nimport {IProtocolVersion} from \\\"../utils/versioning/IProtocolVersion.sol\\\";\\nimport {ProtocolVersion} from \\\"../utils/versioning/ProtocolVersion.sol\\\";\\nimport {DaoAuthorizableUpgradeable} from \\\"../permission/auth/DaoAuthorizableUpgradeable.sol\\\";\\nimport {IDAO} from \\\"../dao/IDAO.sol\\\";\\nimport {IPlugin} from \\\"./IPlugin.sol\\\";\\n\\n/// @title PluginUUPSUpgradeable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract, upgradeable contract to inherit from when creating a plugin being deployed via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract PluginUUPSUpgradeable is\\n IPlugin,\\n ERC165Upgradeable,\\n UUPSUpgradeable,\\n DaoAuthorizableUpgradeable,\\n ProtocolVersion\\n{\\n // NOTE: When adding new state variables to the contract, the size of `_gap` has to be adapted below as well.\\n\\n /// @notice Disables the initializers on the implementation contract to prevent it from being left uninitialized.\\n /// @custom:oz-upgrades-unsafe-allow constructor\\n constructor() {\\n _disableInitializers();\\n }\\n\\n /// @inheritdoc IPlugin\\n function pluginType() public pure override returns (PluginType) {\\n return PluginType.UUPS;\\n }\\n\\n /// @notice The ID of the permission required to call the `_authorizeUpgrade` function.\\n bytes32 public constant UPGRADE_PLUGIN_PERMISSION_ID = keccak256(\\\"UPGRADE_PLUGIN_PERMISSION\\\");\\n\\n /// @notice Initializes the plugin by storing the associated DAO.\\n /// @param _dao The DAO contract.\\n // solhint-disable-next-line func-name-mixedcase\\n function __PluginUUPSUpgradeable_init(IDAO _dao) internal virtual onlyInitializing {\\n __DaoAuthorizableUpgradeable_init(_dao);\\n }\\n\\n /// @notice Checks if an interface is supported by this or its parent contract.\\n /// @param _interfaceId The ID of the interface.\\n /// @return Returns `true` if the interface is supported.\\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\\n return\\n _interfaceId == type(IPlugin).interfaceId ||\\n _interfaceId == type(IProtocolVersion).interfaceId ||\\n _interfaceId == type(IERC1822ProxiableUpgradeable).interfaceId ||\\n super.supportsInterface(_interfaceId);\\n }\\n\\n /// @notice Returns the address of the implementation contract in the [proxy storage slot](https://eips.ethereum.org/EIPS/eip-1967) slot the [UUPS proxy](https://eips.ethereum.org/EIPS/eip-1822) is pointing to.\\n /// @return The address of the implementation contract.\\n function implementation() public view returns (address) {\\n return _getImplementation();\\n }\\n\\n /// @notice Internal method authorizing the upgrade of the contract via the [upgradeability mechanism for UUPS proxies](https://docs.openzeppelin.com/contracts/4.x/api/proxy#UUPSUpgradeable) (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\\n /// @dev The caller must have the `UPGRADE_PLUGIN_PERMISSION_ID` permission.\\n function _authorizeUpgrade(\\n address\\n )\\n internal\\n virtual\\n override\\n auth(UPGRADE_PLUGIN_PERMISSION_ID)\\n // solhint-disable-next-line no-empty-blocks\\n {\\n\\n }\\n\\n /// @notice This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain (see [OpenZeppelin's guide about storage gaps](https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps)).\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x127e7c4f839cb8c8486070990b78e22313f1ff089ffe6a4ff23ae358e48f0037\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/IProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IProtocolVersion\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the semantic Aragon OSx protocol version number.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IProtocolVersion {\\n /// @notice Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\\n /// @return _version Returns the semantic Aragon OSx protocol version number.\\n /// @dev This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\\n function protocolVersion() external view returns (uint8[3] memory _version);\\n}\\n\",\"keccak256\":\"0x00a4da654d21dc1bdadbdc8bd54bb86c378c56f85e461ccc31303628ea621361\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/ProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IProtocolVersion} from \\\"./IProtocolVersion.sol\\\";\\n\\n/// @title ProtocolVersion\\n/// @author Aragon X - 2023\\n/// @notice An abstract, stateless, non-upgradeable contract providing the current Aragon OSx protocol version number.\\n/// @dev Do not add any new variables to this contract that would shift down storage in the inheritance chain.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract ProtocolVersion is IProtocolVersion {\\n // IMPORTANT: Do not add any storage variable, see the above notice.\\n\\n /// @inheritdoc IProtocolVersion\\n function protocolVersion() public pure returns (uint8[3] memory) {\\n return [1, 4, 0];\\n }\\n}\\n\",\"keccak256\":\"0x3975c937be935f687c6b6b8f379071232681e98cf04b175d72781b819ea52bdb\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[{"astId":372,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild2","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":375,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild2","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":2821,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild2","label":"__gap","offset":0,"slot":"1","type":"t_array(t_uint256)50_storage"},{"astId":354,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild2","label":"__gap","offset":0,"slot":"51","type":"t_array(t_uint256)50_storage"},{"astId":670,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild2","label":"__gap","offset":0,"slot":"101","type":"t_array(t_uint256)50_storage"},{"astId":2592,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild2","label":"__gap","offset":0,"slot":"151","type":"t_array(t_uint256)50_storage"},{"astId":13111,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild2","label":"dao_","offset":0,"slot":"201","type":"t_contract(IDAO)10865"},{"astId":13160,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild2","label":"__gap","offset":0,"slot":"202","type":"t_array(t_uint256)49_storage"},{"astId":13632,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild2","label":"__gap","offset":0,"slot":"251","type":"t_array(t_uint256)50_storage"},{"astId":11794,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild2","label":"state1","offset":0,"slot":"301","type":"t_uint256"},{"astId":11796,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild2","label":"state2","offset":0,"slot":"302","type":"t_uint256"}],"types":{"t_array(t_uint256)49_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[49]","numberOfBytes":"1568"},"t_array(t_uint256)50_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[50]","numberOfBytes":"1600"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_contract(IDAO)10865":{"encoding":"inplace","label":"contract IDAO","numberOfBytes":"20"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"errors":{"DaoUnauthorized(address,address,address,bytes32)":[{"notice":"Thrown if a call is unauthorized in the associated DAO."}]},"kind":"user","methods":{"UPGRADE_PLUGIN_PERMISSION_ID()":{"notice":"The ID of the permission required to call the `_authorizeUpgrade` function."},"dao()":{"notice":"Returns the DAO contract."},"implementation()":{"notice":"Returns the address of the implementation contract in the [proxy storage slot](https://eips.ethereum.org/EIPS/eip-1967) slot the [UUPS proxy](https://eips.ethereum.org/EIPS/eip-1822) is pointing to."},"pluginType()":{"notice":"Returns the plugin's type"},"protocolVersion()":{"notice":"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with."},"supportsInterface(bytes4)":{"notice":"Checks if an interface is supported by this or its parent contract."}},"notice":"A mock upgradeable plugin to be deployed via the UUPS proxy pattern. v1.1 (Release 1, Build 2)","version":1}},"PluginUUPSUpgradeableMockBuild3":{"abi":[{"inputs":[{"internalType":"address","name":"dao","type":"address"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"name":"DaoUnauthorized","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"beacon","type":"address"}],"name":"BeaconUpgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"inputs":[],"name":"UPGRADE_PLUGIN_PERMISSION_ID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dao","outputs":[{"internalType":"contract IDAO","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IDAO","name":"_dao","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"_previousBuild","type":"uint16"}],"name":"initializeFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pluginType","outputs":[{"internalType":"enum IPlugin.PluginType","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"protocolVersion","outputs":[{"internalType":"uint8[3]","name":"","type":"uint8[3]"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"state1","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"state2","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"state3","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"}],"name":"upgradeTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"}],"devdoc":{"details":"DO NOT USE IN PRODUCTION!","errors":{"DaoUnauthorized(address,address,address,bytes32)":[{"params":{"dao":"The associated DAO.","permissionId":"The permission identifier.","where":"The context in which the authorization reverted.","who":"The address (EOA or contract) missing the permission."}}]},"kind":"dev","methods":{"dao()":{"returns":{"_0":"The DAO contract."}},"implementation()":{"returns":{"_0":"The address of the implementation contract."}},"protocolVersion()":{"details":"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.","returns":{"_0":"Returns the semantic Aragon OSx protocol version number."}},"proxiableUUID()":{"details":"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier."},"supportsInterface(bytes4)":{"params":{"_interfaceId":"The ID of the interface."},"returns":{"_0":"Returns `true` if the interface is supported."}},"upgradeTo(address)":{"custom:oz-upgrades-unsafe-allow-reachable":"delegatecall","details":"Upgrade the implementation of the proxy to `newImplementation`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."},"upgradeToAndCall(address,bytes)":{"custom:oz-upgrades-unsafe-allow-reachable":"delegatecall","details":"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."}},"version":1},"evm":{"bytecode":{"functionDebugData":{"@_13538":{"entryPoint":null,"id":13538,"parameterSlots":0,"returnSlots":0},"@_disableInitializers_515":{"entryPoint":34,"id":515,"parameterSlots":0,"returnSlots":0},"abi_encode_tuple_t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:608:92","statements":[{"nodeType":"YulBlock","src":"6:3:92","statements":[]},{"body":{"nodeType":"YulBlock","src":"188:229:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"205:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"216:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"198:6:92"},"nodeType":"YulFunctionCall","src":"198:21:92"},"nodeType":"YulExpressionStatement","src":"198:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"239:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"250:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"235:3:92"},"nodeType":"YulFunctionCall","src":"235:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"255:2:92","type":"","value":"39"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"228:6:92"},"nodeType":"YulFunctionCall","src":"228:30:92"},"nodeType":"YulExpressionStatement","src":"228:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"278:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"289:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"274:3:92"},"nodeType":"YulFunctionCall","src":"274:18:92"},{"hexValue":"496e697469616c697a61626c653a20636f6e747261637420697320696e697469","kind":"string","nodeType":"YulLiteral","src":"294:34:92","type":"","value":"Initializable: contract is initi"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"267:6:92"},"nodeType":"YulFunctionCall","src":"267:62:92"},"nodeType":"YulExpressionStatement","src":"267:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"349:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"360:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"345:3:92"},"nodeType":"YulFunctionCall","src":"345:18:92"},{"hexValue":"616c697a696e67","kind":"string","nodeType":"YulLiteral","src":"365:9:92","type":"","value":"alizing"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"338:6:92"},"nodeType":"YulFunctionCall","src":"338:37:92"},"nodeType":"YulExpressionStatement","src":"338:37:92"},{"nodeType":"YulAssignment","src":"384:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"396:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"407:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"392:3:92"},"nodeType":"YulFunctionCall","src":"392:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"384:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"165:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"179:4:92","type":""}],"src":"14:403:92"},{"body":{"nodeType":"YulBlock","src":"519:87:92","statements":[{"nodeType":"YulAssignment","src":"529:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"541:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"552:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"537:3:92"},"nodeType":"YulFunctionCall","src":"537:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"529:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"571:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"586:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"594:4:92","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"582:3:92"},"nodeType":"YulFunctionCall","src":"582:17:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"564:6:92"},"nodeType":"YulFunctionCall","src":"564:36:92"},"nodeType":"YulExpressionStatement","src":"564:36:92"}]},"name":"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"488:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"499:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"510:4:92","type":""}],"src":"422:184:92"}]},"contents":"{\n { }\n function abi_encode_tuple_t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 39)\n mstore(add(headStart, 64), \"Initializable: contract is initi\")\n mstore(add(headStart, 96), \"alizing\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xff))\n }\n}","id":92,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60a06040523060805234801561001457600080fd5b5061001d610022565b6100e1565b600054610100900460ff161561008e5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116146100df576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b60805161126061011860003960008181610459015281816104de015281816105d401528181610659015261074301526112606000f3fe6080604052600436106100dd5760003560e01c80634f1ef2861161007f5780636accab8c116100595780636accab8c1461022b578063c4d66de814610242578063c9c4bfca14610262578063efe51cca1461029657600080fd5b80634f1ef286146101ee57806352d1902d146102015780635c60da1b1461021657600080fd5b80632ae9c600116100bb5780632ae9c6001461015e5780633659cfe6146101805780634162169f146101a057806341de6830146101d257600080fd5b806301ffc9a7146100e2578063039a8c50146101175780632491118d14610139575b600080fd5b3480156100ee57600080fd5b506101026100fd366004610f74565b6102ad565b60405190151581526020015b60405180910390f35b34801561012357600080fd5b50610137610132366004610f9e565b610319565b005b34801561014557600080fd5b5061015061012f5481565b60405190815260200161010e565b34801561016a57600080fd5b50610173610425565b60405161010e9190610fc2565b34801561018c57600080fd5b5061013761019b36600461100b565b61044f565b3480156101ac57600080fd5b5060c9546001600160a01b03165b6040516001600160a01b03909116815260200161010e565b3480156101de57600080fd5b50600060405161010e9190611028565b6101376101fc366004611066565b6105ca565b34801561020d57600080fd5b50610150610736565b34801561022257600080fd5b506101ba6107fb565b34801561023757600080fd5b5061015061012d5481565b34801561024e57600080fd5b5061013761025d36600461100b565b610833565b34801561026e57600080fd5b506101507f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f581565b3480156102a257600080fd5b5061015061012e5481565b60006001600160e01b0319821663041de68360e41b14806102dd57506001600160e01b03198216621574e360e91b145b806102f857506001600160e01b031982166352d1902d60e01b145b8061031357506301ffc9a760e01b6001600160e01b03198316145b92915050565b600054600390610100900460ff1615801561033b575060005460ff8083169116105b6103a35760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805461ffff191660ff831617610100179055600261ffff831610156103cb57600261012e555b60038261ffff1610156103df57600361012f555b6000805461ff001916905560405160ff821681527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b61042d610f56565b5060408051606081018252600181526004602082015260009181019190915290565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036104dc5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b606482015260840161039a565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166105377f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b0316146105a25760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b606482015260840161039a565b6105ab81610925565b604080516000808252602082019092526105c791839190610962565b50565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036106575760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b606482015260840161039a565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166106b27f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b03161461071d5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b606482015260840161039a565b61072682610925565b61073282826001610962565b5050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146107d65760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000606482015260840161039a565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b600061082e7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b600054600390610100900460ff16158015610855575060005460ff8083169116105b6108b85760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161039a565b6000805461ffff191660ff8316176101001790556108d582610b07565b600161012d55600261012e55600361012f556000805461ff001916905560405160ff821681527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602001610419565b60c9547f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f590610732906001600160a01b0316303384600036610b7b565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561099a5761099583610c37565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156109f4575060408051601f3d908101601f191682019092526109f19181019061112a565b60015b610a665760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201527f6f6e206973206e6f742055555053000000000000000000000000000000000000606482015260840161039a565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114610afb5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f7860448201527f6961626c65555549440000000000000000000000000000000000000000000000606482015260840161039a565b50610995838383610d02565b600054610100900460ff16610b725760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840161039a565b6105c781610d2d565b604051637ef7c88360e11b81526001600160a01b0387169063fdef910690610baf9088908890889088908890600401611143565b602060405180830381865afa158015610bcc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bf09190611197565b610c2f57604051630cb6f8ed60e21b81526001600160a01b0380881660048301528087166024830152851660448201526064810184905260840161039a565b505050505050565b6001600160a01b0381163b610cb45760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e747261637400000000000000000000000000000000000000606482015260840161039a565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610d0b83610dc7565b600082511180610d185750805b1561099557610d278383610e07565b50505050565b600054610100900460ff16610d985760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840161039a565b60c9805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610dd081610c37565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060610e2c838360405180606001604052806027815260200161122d60279139610e33565b9392505050565b6060600080856001600160a01b031685604051610e5091906111dd565b600060405180830381855af49150503d8060008114610e8b576040519150601f19603f3d011682016040523d82523d6000602084013e610e90565b606091505b5091509150610ea186838387610eab565b9695505050505050565b60608315610f1a578251600003610f13576001600160a01b0385163b610f135760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161039a565b5081610f24565b610f248383610f2c565b949350505050565b815115610f3c5781518083602001fd5b8060405162461bcd60e51b815260040161039a91906111f9565b60405180606001604052806003906020820280368337509192915050565b600060208284031215610f8657600080fd5b81356001600160e01b031981168114610e2c57600080fd5b600060208284031215610fb057600080fd5b813561ffff81168114610e2c57600080fd5b60608101818360005b6003811015610fed57815160ff16835260209283019290910190600101610fcb565b50505092915050565b6001600160a01b03811681146105c757600080fd5b60006020828403121561101d57600080fd5b8135610e2c81610ff6565b602081016003831061104a57634e487b7160e01b600052602160045260246000fd5b91905290565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561107957600080fd5b823561108481610ff6565b9150602083013567ffffffffffffffff808211156110a157600080fd5b818501915085601f8301126110b557600080fd5b8135818111156110c7576110c7611050565b604051601f8201601f19908116603f011681019083821181831017156110ef576110ef611050565b8160405282815288602084870101111561110857600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60006020828403121561113c57600080fd5b5051919050565b60006001600160a01b03808816835280871660208401525084604083015260806060830152826080830152828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b6000602082840312156111a957600080fd5b81518015158114610e2c57600080fd5b60005b838110156111d45781810151838201526020016111bc565b50506000910152565b600082516111ef8184602087016111b9565b9190910192915050565b60208152600082518060208401526112188160408501602087016111b9565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a","opcodes":"PUSH1 0xA0 PUSH1 0x40 MSTORE ADDRESS PUSH1 0x80 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x14 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1D PUSH2 0x22 JUMP JUMPDEST PUSH2 0xE1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x8E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x27 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320696E697469 PUSH1 0x44 DUP3 ADD MSTORE PUSH7 0x616C697A696E67 PUSH1 0xC8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xFF SWAP1 DUP2 AND EQ PUSH2 0xDF JUMPI PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH2 0x1260 PUSH2 0x118 PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH2 0x459 ADD MSTORE DUP2 DUP2 PUSH2 0x4DE ADD MSTORE DUP2 DUP2 PUSH2 0x5D4 ADD MSTORE DUP2 DUP2 PUSH2 0x659 ADD MSTORE PUSH2 0x743 ADD MSTORE PUSH2 0x1260 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xDD JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x4F1EF286 GT PUSH2 0x7F JUMPI DUP1 PUSH4 0x6ACCAB8C GT PUSH2 0x59 JUMPI DUP1 PUSH4 0x6ACCAB8C EQ PUSH2 0x22B JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0x242 JUMPI DUP1 PUSH4 0xC9C4BFCA EQ PUSH2 0x262 JUMPI DUP1 PUSH4 0xEFE51CCA EQ PUSH2 0x296 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x1EE JUMPI DUP1 PUSH4 0x52D1902D EQ PUSH2 0x201 JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0x216 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x2AE9C600 GT PUSH2 0xBB JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0x15E JUMPI DUP1 PUSH4 0x3659CFE6 EQ PUSH2 0x180 JUMPI DUP1 PUSH4 0x4162169F EQ PUSH2 0x1A0 JUMPI DUP1 PUSH4 0x41DE6830 EQ PUSH2 0x1D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xE2 JUMPI DUP1 PUSH4 0x39A8C50 EQ PUSH2 0x117 JUMPI DUP1 PUSH4 0x2491118D EQ PUSH2 0x139 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xEE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x102 PUSH2 0xFD CALLDATASIZE PUSH1 0x4 PUSH2 0xF74 JUMP JUMPDEST PUSH2 0x2AD JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x123 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x137 PUSH2 0x132 CALLDATASIZE PUSH1 0x4 PUSH2 0xF9E JUMP JUMPDEST PUSH2 0x319 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x145 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x150 PUSH2 0x12F SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x10E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x16A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x173 PUSH2 0x425 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x10E SWAP2 SWAP1 PUSH2 0xFC2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x18C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x137 PUSH2 0x19B CALLDATASIZE PUSH1 0x4 PUSH2 0x100B JUMP JUMPDEST PUSH2 0x44F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xC9 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x10E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 PUSH1 0x40 MLOAD PUSH2 0x10E SWAP2 SWAP1 PUSH2 0x1028 JUMP JUMPDEST PUSH2 0x137 PUSH2 0x1FC CALLDATASIZE PUSH1 0x4 PUSH2 0x1066 JUMP JUMPDEST PUSH2 0x5CA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x20D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x150 PUSH2 0x736 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x222 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1BA PUSH2 0x7FB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x237 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x150 PUSH2 0x12D SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x24E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x137 PUSH2 0x25D CALLDATASIZE PUSH1 0x4 PUSH2 0x100B JUMP JUMPDEST PUSH2 0x833 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x26E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x150 PUSH32 0x821B6E3A557148015A918C89E5D092E878A69854A2D1A410635F771BD5A8A3F5 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x150 PUSH2 0x12E SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x41DE683 PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x2DD JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x2F8 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x52D1902D PUSH1 0xE0 SHL EQ JUMPDEST DUP1 PUSH2 0x313 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x3 SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH2 0x33B JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF DUP1 DUP4 AND SWAP2 AND LT JUMPDEST PUSH2 0x3A3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x44 DUP3 ADD MSTORE PUSH14 0x191E481A5B9A5D1A585B1A5E9959 PUSH1 0x92 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH2 0xFFFF NOT AND PUSH1 0xFF DUP4 AND OR PUSH2 0x100 OR SWAP1 SSTORE PUSH1 0x2 PUSH2 0xFFFF DUP4 AND LT ISZERO PUSH2 0x3CB JUMPI PUSH1 0x2 PUSH2 0x12E SSTORE JUMPDEST PUSH1 0x3 DUP3 PUSH2 0xFFFF AND LT ISZERO PUSH2 0x3DF JUMPI PUSH1 0x3 PUSH2 0x12F SSTORE JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH1 0xFF DUP3 AND DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH2 0x42D PUSH2 0xF56 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x4DC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x19195B1959D85D1958D85B1B PUSH1 0xA2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x39A JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x537 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x5A2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x6163746976652070726F7879 PUSH1 0xA0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x39A JUMP JUMPDEST PUSH2 0x5AB DUP2 PUSH2 0x925 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x5C7 SWAP2 DUP4 SWAP2 SWAP1 PUSH2 0x962 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x657 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x19195B1959D85D1958D85B1B PUSH1 0xA2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x39A JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x6B2 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x71D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x6163746976652070726F7879 PUSH1 0xA0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x39A JUMP JUMPDEST PUSH2 0x726 DUP3 PUSH2 0x925 JUMP JUMPDEST PUSH2 0x732 DUP3 DUP3 PUSH1 0x1 PUSH2 0x962 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x7D6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x38 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x555550535570677261646561626C653A206D757374206E6F742062652063616C PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6C6564207468726F7567682064656C656761746563616C6C0000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x39A JUMP JUMPDEST POP PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x82E PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x3 SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH2 0x855 JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF DUP1 DUP4 AND SWAP2 AND LT JUMPDEST PUSH2 0x8B8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x44 DUP3 ADD MSTORE PUSH14 0x191E481A5B9A5D1A585B1A5E9959 PUSH1 0x92 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x39A JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH2 0xFFFF NOT AND PUSH1 0xFF DUP4 AND OR PUSH2 0x100 OR SWAP1 SSTORE PUSH2 0x8D5 DUP3 PUSH2 0xB07 JUMP JUMPDEST PUSH1 0x1 PUSH2 0x12D SSTORE PUSH1 0x2 PUSH2 0x12E SSTORE PUSH1 0x3 PUSH2 0x12F SSTORE PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH1 0xFF DUP3 AND DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH2 0x419 JUMP JUMPDEST PUSH1 0xC9 SLOAD PUSH32 0x821B6E3A557148015A918C89E5D092E878A69854A2D1A410635F771BD5A8A3F5 SWAP1 PUSH2 0x732 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ADDRESS CALLER DUP5 PUSH1 0x0 CALLDATASIZE PUSH2 0xB7B JUMP JUMPDEST PUSH32 0x4910FDFA16FED3260ED0E7147F7CC6DA11A60208B5B9406D12A635614FFD9143 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x99A JUMPI PUSH2 0x995 DUP4 PUSH2 0xC37 JUMP JUMPDEST POP POP POP JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x52D1902D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x9F4 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x9F1 SWAP2 DUP2 ADD SWAP1 PUSH2 0x112A JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0xA66 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524331393637557067726164653A206E657720696D706C656D656E74617469 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F6E206973206E6F742055555053000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x39A JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC DUP2 EQ PUSH2 0xAFB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524331393637557067726164653A20756E737570706F727465642070726F78 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6961626C65555549440000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x39A JUMP JUMPDEST POP PUSH2 0x995 DUP4 DUP4 DUP4 PUSH2 0xD02 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0xB72 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x39A JUMP JUMPDEST PUSH2 0x5C7 DUP2 PUSH2 0xD2D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x7EF7C883 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0xFDEF9106 SWAP1 PUSH2 0xBAF SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x1143 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xBCC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xBF0 SWAP2 SWAP1 PUSH2 0x1197 JUMP JUMPDEST PUSH2 0xC2F JUMPI PUSH1 0x40 MLOAD PUSH4 0xCB6F8ED PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND PUSH1 0x4 DUP4 ADD MSTORE DUP1 DUP8 AND PUSH1 0x24 DUP4 ADD MSTORE DUP6 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x84 ADD PUSH2 0x39A JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND EXTCODESIZE PUSH2 0xCB4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313936373A206E657720696D706C656D656E746174696F6E206973206E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F74206120636F6E747261637400000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x39A JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xD0B DUP4 PUSH2 0xDC7 JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD GT DUP1 PUSH2 0xD18 JUMPI POP DUP1 JUMPDEST ISZERO PUSH2 0x995 JUMPI PUSH2 0xD27 DUP4 DUP4 PUSH2 0xE07 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0xD98 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x39A JUMP JUMPDEST PUSH1 0xC9 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xDD0 DUP2 PUSH2 0xC37 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xE2C DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x122D PUSH1 0x27 SWAP2 CODECOPY PUSH2 0xE33 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0xE50 SWAP2 SWAP1 PUSH2 0x11DD JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xE8B JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xE90 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0xEA1 DUP7 DUP4 DUP4 DUP8 PUSH2 0xEAB JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0xF1A JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0xF13 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0xF13 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x39A JUMP JUMPDEST POP DUP2 PUSH2 0xF24 JUMP JUMPDEST PUSH2 0xF24 DUP4 DUP4 PUSH2 0xF2C JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0xF3C JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x39A SWAP2 SWAP1 PUSH2 0x11F9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xF86 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0xE2C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xFB0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH2 0xE2C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0xFED JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0xFCB JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x5C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x101D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xE2C DUP2 PUSH2 0xFF6 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH1 0x3 DUP4 LT PUSH2 0x104A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 SWAP1 MSTORE SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1079 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x1084 DUP2 PUSH2 0xFF6 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x10A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x10B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x10C7 JUMPI PUSH2 0x10C7 PUSH2 0x1050 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x10EF JUMPI PUSH2 0x10EF PUSH2 0x1050 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x1108 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x113C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND DUP4 MSTORE DUP1 DUP8 AND PUSH1 0x20 DUP5 ADD MSTORE POP DUP5 PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x80 PUSH1 0x60 DUP4 ADD MSTORE DUP3 PUSH1 0x80 DUP4 ADD MSTORE DUP3 DUP5 PUSH1 0xA0 DUP5 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0xA0 DUP5 DUP5 ADD ADD MSTORE PUSH1 0xA0 PUSH1 0x1F NOT PUSH1 0x1F DUP6 ADD AND DUP4 ADD ADD SWAP1 POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x11A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xE2C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x11D4 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x11BC JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x11EF DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x11B9 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x1218 DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x11B9 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A164 PUSH20 0x6F6C6343000811000A0000000000000000000000 ","sourceMap":"1334:546:53:-:0;;;1198:4:5;1155:48;;1334:546:53;;;;;;;;;-1:-1:-1;1489:22:75;:20;:22::i;:::-;1334:546:53;;5939:280:4;6007:13;;;;;;;6006:14;5998:66;;;;-1:-1:-1;;;5998:66:4;;216:2:92;5998:66:4;;;198:21:92;255:2;235:18;;;228:30;294:34;274:18;;;267:62;-1:-1:-1;;;345:18:92;;;338:37;392:19;;5998:66:4;;;;;;;;6078:12;;6094:15;6078:12;;;:31;6074:139;;6125:12;:30;;-1:-1:-1;;6125:30:4;6140:15;6125:30;;;;;;6174:28;;564:36:92;;;6174:28:4;;552:2:92;537:18;6174:28:4;;;;;;;6074:139;5939:280::o;422:184:92:-;1334:546:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@UPGRADE_PLUGIN_PERMISSION_ID_13556":{"entryPoint":null,"id":13556,"parameterSlots":0,"returnSlots":0},"@__DaoAuthorizableUpgradeable_init_13125":{"entryPoint":3373,"id":13125,"parameterSlots":1,"returnSlots":0},"@__PluginUUPSUpgradeable_init_13570":{"entryPoint":2823,"id":13570,"parameterSlots":1,"returnSlots":0},"@_auth_13211":{"entryPoint":2939,"id":13211,"parameterSlots":6,"returnSlots":0},"@_authorizeUpgrade_13627":{"entryPoint":2341,"id":13627,"parameterSlots":1,"returnSlots":0},"@_getImplementation_76":{"entryPoint":null,"id":76,"parameterSlots":0,"returnSlots":1},"@_msgData_2579":{"entryPoint":null,"id":2579,"parameterSlots":0,"returnSlots":2},"@_msgSender_2570":{"entryPoint":null,"id":2570,"parameterSlots":0,"returnSlots":1},"@_revert_1000":{"entryPoint":3884,"id":1000,"parameterSlots":2,"returnSlots":0},"@_setImplementation_100":{"entryPoint":3127,"id":100,"parameterSlots":1,"returnSlots":0},"@_upgradeToAndCallUUPS_198":{"entryPoint":2402,"id":198,"parameterSlots":3,"returnSlots":0},"@_upgradeToAndCall_145":{"entryPoint":3330,"id":145,"parameterSlots":3,"returnSlots":0},"@_upgradeTo_115":{"entryPoint":3527,"id":115,"parameterSlots":1,"returnSlots":0},"@dao_13135":{"entryPoint":null,"id":13135,"parameterSlots":0,"returnSlots":1},"@functionDelegateCall_888":{"entryPoint":3591,"id":888,"parameterSlots":2,"returnSlots":1},"@functionDelegateCall_917":{"entryPoint":3635,"id":917,"parameterSlots":3,"returnSlots":1},"@getAddressSlot_2699":{"entryPoint":null,"id":2699,"parameterSlots":1,"returnSlots":1},"@getBooleanSlot_2710":{"entryPoint":null,"id":2710,"parameterSlots":1,"returnSlots":1},"@implementation_13616":{"entryPoint":2043,"id":13616,"parameterSlots":0,"returnSlots":1},"@initializeFrom_11899":{"entryPoint":793,"id":11899,"parameterSlots":1,"returnSlots":0},"@initialize_11872":{"entryPoint":2099,"id":11872,"parameterSlots":1,"returnSlots":0},"@isContract_689":{"entryPoint":null,"id":689,"parameterSlots":1,"returnSlots":1},"@pluginType_13550":{"entryPoint":null,"id":13550,"parameterSlots":0,"returnSlots":1},"@protocolVersion_14765":{"entryPoint":1061,"id":14765,"parameterSlots":0,"returnSlots":1},"@proxiableUUID_616":{"entryPoint":1846,"id":616,"parameterSlots":0,"returnSlots":1},"@state1_11842":{"entryPoint":null,"id":11842,"parameterSlots":0,"returnSlots":0},"@state2_11844":{"entryPoint":null,"id":11844,"parameterSlots":0,"returnSlots":0},"@state3_11846":{"entryPoint":null,"id":11846,"parameterSlots":0,"returnSlots":0},"@supportsInterface_13606":{"entryPoint":685,"id":13606,"parameterSlots":1,"returnSlots":1},"@supportsInterface_2816":{"entryPoint":null,"id":2816,"parameterSlots":1,"returnSlots":1},"@upgradeToAndCall_659":{"entryPoint":1482,"id":659,"parameterSlots":2,"returnSlots":0},"@upgradeTo_638":{"entryPoint":1103,"id":638,"parameterSlots":1,"returnSlots":0},"@verifyCallResultFromTarget_956":{"entryPoint":3755,"id":956,"parameterSlots":4,"returnSlots":1},"abi_decode_tuple_t_address":{"entryPoint":4107,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_bytes_memory_ptr":{"entryPoint":4198,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_bool_fromMemory":{"entryPoint":4503,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes32_fromMemory":{"entryPoint":4394,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes4":{"entryPoint":3956,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_contract$_IDAO_$10865":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint16":{"entryPoint":3998,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":4573,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address_t_address_t_address_t_bytes32__to_t_address_t_address_t_address_t_bytes32__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":5,"returnSlots":1},"abi_encode_tuple_t_address_t_address_t_bytes32_t_bytes_calldata_ptr__to_t_address_t_address_t_bytes32_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":4419,"id":null,"parameterSlots":6,"returnSlots":1},"abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed":{"entryPoint":4034,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_contract$_IDAO_$10865__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_enum$_PluginType_$13330__to_t_uint8__fromStack_reversed":{"entryPoint":4136,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":4601,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_36e108fa7a809b52ab1951dd91c117a7bc9ac5250bdf1aa162d4e104f7edf9eb__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_52f1ead4d9653e13afbd2e90ef2587c30187cd50b2e97d784e3f7a7541247434__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_67f0151b4ad1dcfa0e3302a0cd6019f51582ef1807b37dceb00bd852a514f7f4__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_76b6b6debfc5febf101145a79ecf0b0d2e89e397dfdab2bca99888370411152c__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_8e8e2fbcb586f700b5b14e2c4a650c8d83b9773c31c5fe8962070ea544e11f24__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"copy_memory_to_memory_with_cleanup":{"entryPoint":4537,"id":null,"parameterSlots":3,"returnSlots":0},"panic_error_0x41":{"entryPoint":4176,"id":null,"parameterSlots":0,"returnSlots":0},"validator_revert_address":{"entryPoint":4086,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:10793:92","statements":[{"nodeType":"YulBlock","src":"6:3:92","statements":[]},{"body":{"nodeType":"YulBlock","src":"83:217:92","statements":[{"body":{"nodeType":"YulBlock","src":"129:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"138:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"141:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"131:6:92"},"nodeType":"YulFunctionCall","src":"131:12:92"},"nodeType":"YulExpressionStatement","src":"131:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"104:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"113:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"100:3:92"},"nodeType":"YulFunctionCall","src":"100:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"125:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"96:3:92"},"nodeType":"YulFunctionCall","src":"96:32:92"},"nodeType":"YulIf","src":"93:52:92"},{"nodeType":"YulVariableDeclaration","src":"154:36:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"180:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"167:12:92"},"nodeType":"YulFunctionCall","src":"167:23:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"158:5:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"254:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"263:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"266:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"256:6:92"},"nodeType":"YulFunctionCall","src":"256:12:92"},"nodeType":"YulExpressionStatement","src":"256:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"212:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"223:5:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"234:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"239:10:92","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"230:3:92"},"nodeType":"YulFunctionCall","src":"230:20:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"219:3:92"},"nodeType":"YulFunctionCall","src":"219:32:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"209:2:92"},"nodeType":"YulFunctionCall","src":"209:43:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"202:6:92"},"nodeType":"YulFunctionCall","src":"202:51:92"},"nodeType":"YulIf","src":"199:71:92"},{"nodeType":"YulAssignment","src":"279:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"289:5:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"279:6:92"}]}]},"name":"abi_decode_tuple_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"49:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"60:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"72:6:92","type":""}],"src":"14:286:92"},{"body":{"nodeType":"YulBlock","src":"400:92:92","statements":[{"nodeType":"YulAssignment","src":"410:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"422:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"433:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"418:3:92"},"nodeType":"YulFunctionCall","src":"418:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"410:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"452:9:92"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"477:6:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"470:6:92"},"nodeType":"YulFunctionCall","src":"470:14:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"463:6:92"},"nodeType":"YulFunctionCall","src":"463:22:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"445:6:92"},"nodeType":"YulFunctionCall","src":"445:41:92"},"nodeType":"YulExpressionStatement","src":"445:41:92"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"369:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"380:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"391:4:92","type":""}],"src":"305:187:92"},{"body":{"nodeType":"YulBlock","src":"566:203:92","statements":[{"body":{"nodeType":"YulBlock","src":"612:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"621:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"624:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"614:6:92"},"nodeType":"YulFunctionCall","src":"614:12:92"},"nodeType":"YulExpressionStatement","src":"614:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"587:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"596:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"583:3:92"},"nodeType":"YulFunctionCall","src":"583:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"608:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"579:3:92"},"nodeType":"YulFunctionCall","src":"579:32:92"},"nodeType":"YulIf","src":"576:52:92"},{"nodeType":"YulVariableDeclaration","src":"637:36:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"663:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"650:12:92"},"nodeType":"YulFunctionCall","src":"650:23:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"641:5:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"723:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"732:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"735:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"725:6:92"},"nodeType":"YulFunctionCall","src":"725:12:92"},"nodeType":"YulExpressionStatement","src":"725:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"695:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"706:5:92"},{"kind":"number","nodeType":"YulLiteral","src":"713:6:92","type":"","value":"0xffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"702:3:92"},"nodeType":"YulFunctionCall","src":"702:18:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"692:2:92"},"nodeType":"YulFunctionCall","src":"692:29:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"685:6:92"},"nodeType":"YulFunctionCall","src":"685:37:92"},"nodeType":"YulIf","src":"682:57:92"},{"nodeType":"YulAssignment","src":"748:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"758:5:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"748:6:92"}]}]},"name":"abi_decode_tuple_t_uint16","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"532:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"543:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"555:6:92","type":""}],"src":"497:272:92"},{"body":{"nodeType":"YulBlock","src":"875:76:92","statements":[{"nodeType":"YulAssignment","src":"885:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"897:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"908:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"893:3:92"},"nodeType":"YulFunctionCall","src":"893:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"885:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"927:9:92"},{"name":"value0","nodeType":"YulIdentifier","src":"938:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"920:6:92"},"nodeType":"YulFunctionCall","src":"920:25:92"},"nodeType":"YulExpressionStatement","src":"920:25:92"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"844:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"855:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"866:4:92","type":""}],"src":"774:177:92"},{"body":{"nodeType":"YulBlock","src":"1099:358:92","statements":[{"nodeType":"YulAssignment","src":"1109:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1121:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1132:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1117:3:92"},"nodeType":"YulFunctionCall","src":"1117:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1109:4:92"}]},{"nodeType":"YulVariableDeclaration","src":"1144:20:92","value":{"name":"headStart","nodeType":"YulIdentifier","src":"1155:9:92"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"1148:3:92","type":""}]},{"nodeType":"YulAssignment","src":"1173:16:92","value":{"name":"headStart","nodeType":"YulIdentifier","src":"1180:9:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"1173:3:92"}]},{"nodeType":"YulVariableDeclaration","src":"1198:20:92","value":{"name":"value0","nodeType":"YulIdentifier","src":"1212:6:92"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"1202:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"1227:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"1236:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"1231:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"1293:158:92","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1314:3:92"},{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"1329:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1323:5:92"},"nodeType":"YulFunctionCall","src":"1323:13:92"},{"kind":"number","nodeType":"YulLiteral","src":"1338:4:92","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1319:3:92"},"nodeType":"YulFunctionCall","src":"1319:24:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1307:6:92"},"nodeType":"YulFunctionCall","src":"1307:37:92"},"nodeType":"YulExpressionStatement","src":"1307:37:92"},{"nodeType":"YulVariableDeclaration","src":"1357:14:92","value":{"kind":"number","nodeType":"YulLiteral","src":"1367:4:92","type":"","value":"0x20"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"1361:2:92","type":""}]},{"nodeType":"YulAssignment","src":"1384:19:92","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1395:3:92"},{"name":"_1","nodeType":"YulIdentifier","src":"1400:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1391:3:92"},"nodeType":"YulFunctionCall","src":"1391:12:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"1384:3:92"}]},{"nodeType":"YulAssignment","src":"1416:25:92","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"1430:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"1438:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1426:3:92"},"nodeType":"YulFunctionCall","src":"1426:15:92"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"1416:6:92"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"1257:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"1260:4:92","type":"","value":"0x03"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"1254:2:92"},"nodeType":"YulFunctionCall","src":"1254:11:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"1266:18:92","statements":[{"nodeType":"YulAssignment","src":"1268:14:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"1277:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"1280:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1273:3:92"},"nodeType":"YulFunctionCall","src":"1273:9:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"1268:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"1250:3:92","statements":[]},"src":"1246:205:92"}]},"name":"abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1068:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1079:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1090:4:92","type":""}],"src":"956:501:92"},{"body":{"nodeType":"YulBlock","src":"1507:109:92","statements":[{"body":{"nodeType":"YulBlock","src":"1594:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1603:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1606:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1596:6:92"},"nodeType":"YulFunctionCall","src":"1596:12:92"},"nodeType":"YulExpressionStatement","src":"1596:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1530:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1541:5:92"},{"kind":"number","nodeType":"YulLiteral","src":"1548:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1537:3:92"},"nodeType":"YulFunctionCall","src":"1537:54:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1527:2:92"},"nodeType":"YulFunctionCall","src":"1527:65:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1520:6:92"},"nodeType":"YulFunctionCall","src":"1520:73:92"},"nodeType":"YulIf","src":"1517:93:92"}]},"name":"validator_revert_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1496:5:92","type":""}],"src":"1462:154:92"},{"body":{"nodeType":"YulBlock","src":"1691:177:92","statements":[{"body":{"nodeType":"YulBlock","src":"1737:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1746:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1749:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1739:6:92"},"nodeType":"YulFunctionCall","src":"1739:12:92"},"nodeType":"YulExpressionStatement","src":"1739:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1712:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"1721:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1708:3:92"},"nodeType":"YulFunctionCall","src":"1708:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"1733:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1704:3:92"},"nodeType":"YulFunctionCall","src":"1704:32:92"},"nodeType":"YulIf","src":"1701:52:92"},{"nodeType":"YulVariableDeclaration","src":"1762:36:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1788:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1775:12:92"},"nodeType":"YulFunctionCall","src":"1775:23:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"1766:5:92","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1832:5:92"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"1807:24:92"},"nodeType":"YulFunctionCall","src":"1807:31:92"},"nodeType":"YulExpressionStatement","src":"1807:31:92"},{"nodeType":"YulAssignment","src":"1847:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"1857:5:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1847:6:92"}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1657:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1668:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1680:6:92","type":""}],"src":"1621:247:92"},{"body":{"nodeType":"YulBlock","src":"1988:125:92","statements":[{"nodeType":"YulAssignment","src":"1998:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2010:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2021:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2006:3:92"},"nodeType":"YulFunctionCall","src":"2006:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1998:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2040:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2055:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"2063:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2051:3:92"},"nodeType":"YulFunctionCall","src":"2051:55:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2033:6:92"},"nodeType":"YulFunctionCall","src":"2033:74:92"},"nodeType":"YulExpressionStatement","src":"2033:74:92"}]},"name":"abi_encode_tuple_t_contract$_IDAO_$10865__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1957:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1968:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1979:4:92","type":""}],"src":"1873:240:92"},{"body":{"nodeType":"YulBlock","src":"2233:229:92","statements":[{"nodeType":"YulAssignment","src":"2243:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2255:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2266:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2251:3:92"},"nodeType":"YulFunctionCall","src":"2251:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2243:4:92"}]},{"body":{"nodeType":"YulBlock","src":"2311:111:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2332:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2339:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"2344:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2335:3:92"},"nodeType":"YulFunctionCall","src":"2335:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2325:6:92"},"nodeType":"YulFunctionCall","src":"2325:31:92"},"nodeType":"YulExpressionStatement","src":"2325:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2376:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"2379:4:92","type":"","value":"0x21"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2369:6:92"},"nodeType":"YulFunctionCall","src":"2369:15:92"},"nodeType":"YulExpressionStatement","src":"2369:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2404:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2407:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2397:6:92"},"nodeType":"YulFunctionCall","src":"2397:15:92"},"nodeType":"YulExpressionStatement","src":"2397:15:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2291:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"2299:1:92","type":"","value":"3"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2288:2:92"},"nodeType":"YulFunctionCall","src":"2288:13:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2281:6:92"},"nodeType":"YulFunctionCall","src":"2281:21:92"},"nodeType":"YulIf","src":"2278:144:92"},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2438:9:92"},{"name":"value0","nodeType":"YulIdentifier","src":"2449:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2431:6:92"},"nodeType":"YulFunctionCall","src":"2431:25:92"},"nodeType":"YulExpressionStatement","src":"2431:25:92"}]},"name":"abi_encode_tuple_t_enum$_PluginType_$13330__to_t_uint8__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2202:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"2213:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2224:4:92","type":""}],"src":"2118:344:92"},{"body":{"nodeType":"YulBlock","src":"2499:95:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2516:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2523:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"2528:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2519:3:92"},"nodeType":"YulFunctionCall","src":"2519:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2509:6:92"},"nodeType":"YulFunctionCall","src":"2509:31:92"},"nodeType":"YulExpressionStatement","src":"2509:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2556:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"2559:4:92","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2549:6:92"},"nodeType":"YulFunctionCall","src":"2549:15:92"},"nodeType":"YulExpressionStatement","src":"2549:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2580:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2583:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2573:6:92"},"nodeType":"YulFunctionCall","src":"2573:15:92"},"nodeType":"YulExpressionStatement","src":"2573:15:92"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"2467:127:92"},{"body":{"nodeType":"YulBlock","src":"2695:960:92","statements":[{"body":{"nodeType":"YulBlock","src":"2741:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2750:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2753:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2743:6:92"},"nodeType":"YulFunctionCall","src":"2743:12:92"},"nodeType":"YulExpressionStatement","src":"2743:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2716:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"2725:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2712:3:92"},"nodeType":"YulFunctionCall","src":"2712:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"2737:2:92","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2708:3:92"},"nodeType":"YulFunctionCall","src":"2708:32:92"},"nodeType":"YulIf","src":"2705:52:92"},{"nodeType":"YulVariableDeclaration","src":"2766:36:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2792:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2779:12:92"},"nodeType":"YulFunctionCall","src":"2779:23:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"2770:5:92","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2836:5:92"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"2811:24:92"},"nodeType":"YulFunctionCall","src":"2811:31:92"},"nodeType":"YulExpressionStatement","src":"2811:31:92"},{"nodeType":"YulAssignment","src":"2851:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"2861:5:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2851:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"2875:46:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2906:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2917:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2902:3:92"},"nodeType":"YulFunctionCall","src":"2902:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2889:12:92"},"nodeType":"YulFunctionCall","src":"2889:32:92"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"2879:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2930:28:92","value":{"kind":"number","nodeType":"YulLiteral","src":"2940:18:92","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"2934:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"2985:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2994:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2997:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2987:6:92"},"nodeType":"YulFunctionCall","src":"2987:12:92"},"nodeType":"YulExpressionStatement","src":"2987:12:92"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"2973:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"2981:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2970:2:92"},"nodeType":"YulFunctionCall","src":"2970:14:92"},"nodeType":"YulIf","src":"2967:34:92"},{"nodeType":"YulVariableDeclaration","src":"3010:32:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3024:9:92"},{"name":"offset","nodeType":"YulIdentifier","src":"3035:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3020:3:92"},"nodeType":"YulFunctionCall","src":"3020:22:92"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"3014:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"3090:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3099:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3102:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3092:6:92"},"nodeType":"YulFunctionCall","src":"3092:12:92"},"nodeType":"YulExpressionStatement","src":"3092:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"3069:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"3073:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3065:3:92"},"nodeType":"YulFunctionCall","src":"3065:13:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3080:7:92"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3061:3:92"},"nodeType":"YulFunctionCall","src":"3061:27:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3054:6:92"},"nodeType":"YulFunctionCall","src":"3054:35:92"},"nodeType":"YulIf","src":"3051:55:92"},{"nodeType":"YulVariableDeclaration","src":"3115:26:92","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"3138:2:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3125:12:92"},"nodeType":"YulFunctionCall","src":"3125:16:92"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"3119:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"3164:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"3166:16:92"},"nodeType":"YulFunctionCall","src":"3166:18:92"},"nodeType":"YulExpressionStatement","src":"3166:18:92"}]},"condition":{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"3156:2:92"},{"name":"_1","nodeType":"YulIdentifier","src":"3160:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3153:2:92"},"nodeType":"YulFunctionCall","src":"3153:10:92"},"nodeType":"YulIf","src":"3150:36:92"},{"nodeType":"YulVariableDeclaration","src":"3195:17:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3209:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"3205:3:92"},"nodeType":"YulFunctionCall","src":"3205:7:92"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"3199:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3221:23:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3241:2:92","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3235:5:92"},"nodeType":"YulFunctionCall","src":"3235:9:92"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"3225:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3253:71:92","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"3275:6:92"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"3299:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"3303:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3295:3:92"},"nodeType":"YulFunctionCall","src":"3295:13:92"},{"name":"_4","nodeType":"YulIdentifier","src":"3310:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3291:3:92"},"nodeType":"YulFunctionCall","src":"3291:22:92"},{"kind":"number","nodeType":"YulLiteral","src":"3315:2:92","type":"","value":"63"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3287:3:92"},"nodeType":"YulFunctionCall","src":"3287:31:92"},{"name":"_4","nodeType":"YulIdentifier","src":"3320:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3283:3:92"},"nodeType":"YulFunctionCall","src":"3283:40:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3271:3:92"},"nodeType":"YulFunctionCall","src":"3271:53:92"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"3257:10:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"3383:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"3385:16:92"},"nodeType":"YulFunctionCall","src":"3385:18:92"},"nodeType":"YulExpressionStatement","src":"3385:18:92"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"3342:10:92"},{"name":"_1","nodeType":"YulIdentifier","src":"3354:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3339:2:92"},"nodeType":"YulFunctionCall","src":"3339:18:92"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"3362:10:92"},{"name":"memPtr","nodeType":"YulIdentifier","src":"3374:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"3359:2:92"},"nodeType":"YulFunctionCall","src":"3359:22:92"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"3336:2:92"},"nodeType":"YulFunctionCall","src":"3336:46:92"},"nodeType":"YulIf","src":"3333:72:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3421:2:92","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"3425:10:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3414:6:92"},"nodeType":"YulFunctionCall","src":"3414:22:92"},"nodeType":"YulExpressionStatement","src":"3414:22:92"},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"3452:6:92"},{"name":"_3","nodeType":"YulIdentifier","src":"3460:2:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3445:6:92"},"nodeType":"YulFunctionCall","src":"3445:18:92"},"nodeType":"YulExpressionStatement","src":"3445:18:92"},{"body":{"nodeType":"YulBlock","src":"3509:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3518:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3521:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3511:6:92"},"nodeType":"YulFunctionCall","src":"3511:12:92"},"nodeType":"YulExpressionStatement","src":"3511:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"3486:2:92"},{"name":"_3","nodeType":"YulIdentifier","src":"3490:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3482:3:92"},"nodeType":"YulFunctionCall","src":"3482:11:92"},{"kind":"number","nodeType":"YulLiteral","src":"3495:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3478:3:92"},"nodeType":"YulFunctionCall","src":"3478:20:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3500:7:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3475:2:92"},"nodeType":"YulFunctionCall","src":"3475:33:92"},"nodeType":"YulIf","src":"3472:53:92"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"3551:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"3559:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3547:3:92"},"nodeType":"YulFunctionCall","src":"3547:15:92"},{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"3568:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"3572:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3564:3:92"},"nodeType":"YulFunctionCall","src":"3564:11:92"},{"name":"_3","nodeType":"YulIdentifier","src":"3577:2:92"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"3534:12:92"},"nodeType":"YulFunctionCall","src":"3534:46:92"},"nodeType":"YulExpressionStatement","src":"3534:46:92"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"3604:6:92"},{"name":"_3","nodeType":"YulIdentifier","src":"3612:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3600:3:92"},"nodeType":"YulFunctionCall","src":"3600:15:92"},{"kind":"number","nodeType":"YulLiteral","src":"3617:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3596:3:92"},"nodeType":"YulFunctionCall","src":"3596:24:92"},{"kind":"number","nodeType":"YulLiteral","src":"3622:1:92","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3589:6:92"},"nodeType":"YulFunctionCall","src":"3589:35:92"},"nodeType":"YulExpressionStatement","src":"3589:35:92"},{"nodeType":"YulAssignment","src":"3633:16:92","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"3643:6:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"3633:6:92"}]}]},"name":"abi_decode_tuple_t_addresst_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2653:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2664:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2676:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2684:6:92","type":""}],"src":"2599:1056:92"},{"body":{"nodeType":"YulBlock","src":"3761:76:92","statements":[{"nodeType":"YulAssignment","src":"3771:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3783:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3794:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3779:3:92"},"nodeType":"YulFunctionCall","src":"3779:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3771:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3813:9:92"},{"name":"value0","nodeType":"YulIdentifier","src":"3824:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3806:6:92"},"nodeType":"YulFunctionCall","src":"3806:25:92"},"nodeType":"YulExpressionStatement","src":"3806:25:92"}]},"name":"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3730:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3741:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3752:4:92","type":""}],"src":"3660:177:92"},{"body":{"nodeType":"YulBlock","src":"3943:125:92","statements":[{"nodeType":"YulAssignment","src":"3953:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3965:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3976:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3961:3:92"},"nodeType":"YulFunctionCall","src":"3961:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3953:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3995:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4010:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"4018:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4006:3:92"},"nodeType":"YulFunctionCall","src":"4006:55:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3988:6:92"},"nodeType":"YulFunctionCall","src":"3988:74:92"},"nodeType":"YulExpressionStatement","src":"3988:74:92"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3912:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3923:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3934:4:92","type":""}],"src":"3842:226:92"},{"body":{"nodeType":"YulBlock","src":"4157:177:92","statements":[{"body":{"nodeType":"YulBlock","src":"4203:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4212:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4215:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4205:6:92"},"nodeType":"YulFunctionCall","src":"4205:12:92"},"nodeType":"YulExpressionStatement","src":"4205:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"4178:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"4187:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4174:3:92"},"nodeType":"YulFunctionCall","src":"4174:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"4199:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4170:3:92"},"nodeType":"YulFunctionCall","src":"4170:32:92"},"nodeType":"YulIf","src":"4167:52:92"},{"nodeType":"YulVariableDeclaration","src":"4228:36:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4254:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4241:12:92"},"nodeType":"YulFunctionCall","src":"4241:23:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"4232:5:92","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4298:5:92"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"4273:24:92"},"nodeType":"YulFunctionCall","src":"4273:31:92"},"nodeType":"YulExpressionStatement","src":"4273:31:92"},{"nodeType":"YulAssignment","src":"4313:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"4323:5:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"4313:6:92"}]}]},"name":"abi_decode_tuple_t_contract$_IDAO_$10865","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4123:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"4134:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"4146:6:92","type":""}],"src":"4073:261:92"},{"body":{"nodeType":"YulBlock","src":"4513:236:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4530:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4541:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4523:6:92"},"nodeType":"YulFunctionCall","src":"4523:21:92"},"nodeType":"YulExpressionStatement","src":"4523:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4564:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4575:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4560:3:92"},"nodeType":"YulFunctionCall","src":"4560:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"4580:2:92","type":"","value":"46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4553:6:92"},"nodeType":"YulFunctionCall","src":"4553:30:92"},"nodeType":"YulExpressionStatement","src":"4553:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4603:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4614:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4599:3:92"},"nodeType":"YulFunctionCall","src":"4599:18:92"},{"hexValue":"496e697469616c697a61626c653a20636f6e747261637420697320616c726561","kind":"string","nodeType":"YulLiteral","src":"4619:34:92","type":"","value":"Initializable: contract is alrea"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4592:6:92"},"nodeType":"YulFunctionCall","src":"4592:62:92"},"nodeType":"YulExpressionStatement","src":"4592:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4674:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4685:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4670:3:92"},"nodeType":"YulFunctionCall","src":"4670:18:92"},{"hexValue":"647920696e697469616c697a6564","kind":"string","nodeType":"YulLiteral","src":"4690:16:92","type":"","value":"dy initialized"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4663:6:92"},"nodeType":"YulFunctionCall","src":"4663:44:92"},"nodeType":"YulExpressionStatement","src":"4663:44:92"},{"nodeType":"YulAssignment","src":"4716:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4728:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4739:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4724:3:92"},"nodeType":"YulFunctionCall","src":"4724:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4716:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4490:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4504:4:92","type":""}],"src":"4339:410:92"},{"body":{"nodeType":"YulBlock","src":"4851:87:92","statements":[{"nodeType":"YulAssignment","src":"4861:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4873:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4884:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4869:3:92"},"nodeType":"YulFunctionCall","src":"4869:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4861:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4903:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4918:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"4926:4:92","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4914:3:92"},"nodeType":"YulFunctionCall","src":"4914:17:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4896:6:92"},"nodeType":"YulFunctionCall","src":"4896:36:92"},"nodeType":"YulExpressionStatement","src":"4896:36:92"}]},"name":"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4820:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"4831:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4842:4:92","type":""}],"src":"4754:184:92"},{"body":{"nodeType":"YulBlock","src":"5117:234:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5134:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5145:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5127:6:92"},"nodeType":"YulFunctionCall","src":"5127:21:92"},"nodeType":"YulExpressionStatement","src":"5127:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5168:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5179:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5164:3:92"},"nodeType":"YulFunctionCall","src":"5164:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"5184:2:92","type":"","value":"44"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5157:6:92"},"nodeType":"YulFunctionCall","src":"5157:30:92"},"nodeType":"YulExpressionStatement","src":"5157:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5207:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5218:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5203:3:92"},"nodeType":"YulFunctionCall","src":"5203:18:92"},{"hexValue":"46756e6374696f6e206d7573742062652063616c6c6564207468726f75676820","kind":"string","nodeType":"YulLiteral","src":"5223:34:92","type":"","value":"Function must be called through "}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5196:6:92"},"nodeType":"YulFunctionCall","src":"5196:62:92"},"nodeType":"YulExpressionStatement","src":"5196:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5278:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5289:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5274:3:92"},"nodeType":"YulFunctionCall","src":"5274:18:92"},{"hexValue":"64656c656761746563616c6c","kind":"string","nodeType":"YulLiteral","src":"5294:14:92","type":"","value":"delegatecall"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5267:6:92"},"nodeType":"YulFunctionCall","src":"5267:42:92"},"nodeType":"YulExpressionStatement","src":"5267:42:92"},{"nodeType":"YulAssignment","src":"5318:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5330:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5341:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5326:3:92"},"nodeType":"YulFunctionCall","src":"5326:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5318:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_36e108fa7a809b52ab1951dd91c117a7bc9ac5250bdf1aa162d4e104f7edf9eb__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5094:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5108:4:92","type":""}],"src":"4943:408:92"},{"body":{"nodeType":"YulBlock","src":"5530:234:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5547:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5558:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5540:6:92"},"nodeType":"YulFunctionCall","src":"5540:21:92"},"nodeType":"YulExpressionStatement","src":"5540:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5581:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5592:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5577:3:92"},"nodeType":"YulFunctionCall","src":"5577:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"5597:2:92","type":"","value":"44"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5570:6:92"},"nodeType":"YulFunctionCall","src":"5570:30:92"},"nodeType":"YulExpressionStatement","src":"5570:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5620:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5631:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5616:3:92"},"nodeType":"YulFunctionCall","src":"5616:18:92"},{"hexValue":"46756e6374696f6e206d7573742062652063616c6c6564207468726f75676820","kind":"string","nodeType":"YulLiteral","src":"5636:34:92","type":"","value":"Function must be called through "}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5609:6:92"},"nodeType":"YulFunctionCall","src":"5609:62:92"},"nodeType":"YulExpressionStatement","src":"5609:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5691:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5702:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5687:3:92"},"nodeType":"YulFunctionCall","src":"5687:18:92"},{"hexValue":"6163746976652070726f7879","kind":"string","nodeType":"YulLiteral","src":"5707:14:92","type":"","value":"active proxy"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5680:6:92"},"nodeType":"YulFunctionCall","src":"5680:42:92"},"nodeType":"YulExpressionStatement","src":"5680:42:92"},{"nodeType":"YulAssignment","src":"5731:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5743:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5754:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5739:3:92"},"nodeType":"YulFunctionCall","src":"5739:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5731:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_52f1ead4d9653e13afbd2e90ef2587c30187cd50b2e97d784e3f7a7541247434__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5507:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5521:4:92","type":""}],"src":"5356:408:92"},{"body":{"nodeType":"YulBlock","src":"5943:246:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5960:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5971:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5953:6:92"},"nodeType":"YulFunctionCall","src":"5953:21:92"},"nodeType":"YulExpressionStatement","src":"5953:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5994:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6005:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5990:3:92"},"nodeType":"YulFunctionCall","src":"5990:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"6010:2:92","type":"","value":"56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5983:6:92"},"nodeType":"YulFunctionCall","src":"5983:30:92"},"nodeType":"YulExpressionStatement","src":"5983:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6033:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6044:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6029:3:92"},"nodeType":"YulFunctionCall","src":"6029:18:92"},{"hexValue":"555550535570677261646561626c653a206d757374206e6f742062652063616c","kind":"string","nodeType":"YulLiteral","src":"6049:34:92","type":"","value":"UUPSUpgradeable: must not be cal"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6022:6:92"},"nodeType":"YulFunctionCall","src":"6022:62:92"},"nodeType":"YulExpressionStatement","src":"6022:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6104:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6115:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6100:3:92"},"nodeType":"YulFunctionCall","src":"6100:18:92"},{"hexValue":"6c6564207468726f7567682064656c656761746563616c6c","kind":"string","nodeType":"YulLiteral","src":"6120:26:92","type":"","value":"led through delegatecall"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6093:6:92"},"nodeType":"YulFunctionCall","src":"6093:54:92"},"nodeType":"YulExpressionStatement","src":"6093:54:92"},{"nodeType":"YulAssignment","src":"6156:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6168:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6179:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6164:3:92"},"nodeType":"YulFunctionCall","src":"6164:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6156:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_67f0151b4ad1dcfa0e3302a0cd6019f51582ef1807b37dceb00bd852a514f7f4__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5920:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5934:4:92","type":""}],"src":"5769:420:92"},{"body":{"nodeType":"YulBlock","src":"6275:103:92","statements":[{"body":{"nodeType":"YulBlock","src":"6321:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6330:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6333:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6323:6:92"},"nodeType":"YulFunctionCall","src":"6323:12:92"},"nodeType":"YulExpressionStatement","src":"6323:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"6296:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"6305:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6292:3:92"},"nodeType":"YulFunctionCall","src":"6292:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"6317:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6288:3:92"},"nodeType":"YulFunctionCall","src":"6288:32:92"},"nodeType":"YulIf","src":"6285:52:92"},{"nodeType":"YulAssignment","src":"6346:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6362:9:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6356:5:92"},"nodeType":"YulFunctionCall","src":"6356:16:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"6346:6:92"}]}]},"name":"abi_decode_tuple_t_bytes32_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6241:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"6252:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"6264:6:92","type":""}],"src":"6194:184:92"},{"body":{"nodeType":"YulBlock","src":"6557:236:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6574:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6585:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6567:6:92"},"nodeType":"YulFunctionCall","src":"6567:21:92"},"nodeType":"YulExpressionStatement","src":"6567:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6608:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6619:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6604:3:92"},"nodeType":"YulFunctionCall","src":"6604:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"6624:2:92","type":"","value":"46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6597:6:92"},"nodeType":"YulFunctionCall","src":"6597:30:92"},"nodeType":"YulExpressionStatement","src":"6597:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6647:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6658:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6643:3:92"},"nodeType":"YulFunctionCall","src":"6643:18:92"},{"hexValue":"45524331393637557067726164653a206e657720696d706c656d656e74617469","kind":"string","nodeType":"YulLiteral","src":"6663:34:92","type":"","value":"ERC1967Upgrade: new implementati"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6636:6:92"},"nodeType":"YulFunctionCall","src":"6636:62:92"},"nodeType":"YulExpressionStatement","src":"6636:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6718:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6729:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6714:3:92"},"nodeType":"YulFunctionCall","src":"6714:18:92"},{"hexValue":"6f6e206973206e6f742055555053","kind":"string","nodeType":"YulLiteral","src":"6734:16:92","type":"","value":"on is not UUPS"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6707:6:92"},"nodeType":"YulFunctionCall","src":"6707:44:92"},"nodeType":"YulExpressionStatement","src":"6707:44:92"},{"nodeType":"YulAssignment","src":"6760:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6772:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6783:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6768:3:92"},"nodeType":"YulFunctionCall","src":"6768:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6760:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_8e8e2fbcb586f700b5b14e2c4a650c8d83b9773c31c5fe8962070ea544e11f24__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6534:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6548:4:92","type":""}],"src":"6383:410:92"},{"body":{"nodeType":"YulBlock","src":"6972:231:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6989:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7000:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6982:6:92"},"nodeType":"YulFunctionCall","src":"6982:21:92"},"nodeType":"YulExpressionStatement","src":"6982:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7023:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7034:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7019:3:92"},"nodeType":"YulFunctionCall","src":"7019:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"7039:2:92","type":"","value":"41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7012:6:92"},"nodeType":"YulFunctionCall","src":"7012:30:92"},"nodeType":"YulExpressionStatement","src":"7012:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7062:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7073:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7058:3:92"},"nodeType":"YulFunctionCall","src":"7058:18:92"},{"hexValue":"45524331393637557067726164653a20756e737570706f727465642070726f78","kind":"string","nodeType":"YulLiteral","src":"7078:34:92","type":"","value":"ERC1967Upgrade: unsupported prox"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7051:6:92"},"nodeType":"YulFunctionCall","src":"7051:62:92"},"nodeType":"YulExpressionStatement","src":"7051:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7133:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7144:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7129:3:92"},"nodeType":"YulFunctionCall","src":"7129:18:92"},{"hexValue":"6961626c6555554944","kind":"string","nodeType":"YulLiteral","src":"7149:11:92","type":"","value":"iableUUID"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7122:6:92"},"nodeType":"YulFunctionCall","src":"7122:39:92"},"nodeType":"YulExpressionStatement","src":"7122:39:92"},{"nodeType":"YulAssignment","src":"7170:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7182:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7193:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7178:3:92"},"nodeType":"YulFunctionCall","src":"7178:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7170:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_76b6b6debfc5febf101145a79ecf0b0d2e89e397dfdab2bca99888370411152c__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6949:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6963:4:92","type":""}],"src":"6798:405:92"},{"body":{"nodeType":"YulBlock","src":"7382:233:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7399:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7410:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7392:6:92"},"nodeType":"YulFunctionCall","src":"7392:21:92"},"nodeType":"YulExpressionStatement","src":"7392:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7433:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7444:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7429:3:92"},"nodeType":"YulFunctionCall","src":"7429:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"7449:2:92","type":"","value":"43"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7422:6:92"},"nodeType":"YulFunctionCall","src":"7422:30:92"},"nodeType":"YulExpressionStatement","src":"7422:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7472:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7483:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7468:3:92"},"nodeType":"YulFunctionCall","src":"7468:18:92"},{"hexValue":"496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069","kind":"string","nodeType":"YulLiteral","src":"7488:34:92","type":"","value":"Initializable: contract is not i"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7461:6:92"},"nodeType":"YulFunctionCall","src":"7461:62:92"},"nodeType":"YulExpressionStatement","src":"7461:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7543:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7554:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7539:3:92"},"nodeType":"YulFunctionCall","src":"7539:18:92"},{"hexValue":"6e697469616c697a696e67","kind":"string","nodeType":"YulLiteral","src":"7559:13:92","type":"","value":"nitializing"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7532:6:92"},"nodeType":"YulFunctionCall","src":"7532:41:92"},"nodeType":"YulExpressionStatement","src":"7532:41:92"},{"nodeType":"YulAssignment","src":"7582:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7594:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7605:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7590:3:92"},"nodeType":"YulFunctionCall","src":"7590:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7582:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7359:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7373:4:92","type":""}],"src":"7208:407:92"},{"body":{"nodeType":"YulBlock","src":"7833:472:92","statements":[{"nodeType":"YulVariableDeclaration","src":"7843:52:92","value":{"kind":"number","nodeType":"YulLiteral","src":"7853:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"7847:2:92","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7911:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7926:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"7934:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7922:3:92"},"nodeType":"YulFunctionCall","src":"7922:15:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7904:6:92"},"nodeType":"YulFunctionCall","src":"7904:34:92"},"nodeType":"YulExpressionStatement","src":"7904:34:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7958:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7969:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7954:3:92"},"nodeType":"YulFunctionCall","src":"7954:18:92"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"7978:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"7986:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7974:3:92"},"nodeType":"YulFunctionCall","src":"7974:15:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7947:6:92"},"nodeType":"YulFunctionCall","src":"7947:43:92"},"nodeType":"YulExpressionStatement","src":"7947:43:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8010:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8021:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8006:3:92"},"nodeType":"YulFunctionCall","src":"8006:18:92"},{"name":"value2","nodeType":"YulIdentifier","src":"8026:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7999:6:92"},"nodeType":"YulFunctionCall","src":"7999:34:92"},"nodeType":"YulExpressionStatement","src":"7999:34:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8053:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8064:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8049:3:92"},"nodeType":"YulFunctionCall","src":"8049:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"8069:3:92","type":"","value":"128"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8042:6:92"},"nodeType":"YulFunctionCall","src":"8042:31:92"},"nodeType":"YulExpressionStatement","src":"8042:31:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8093:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8104:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8089:3:92"},"nodeType":"YulFunctionCall","src":"8089:19:92"},{"name":"value4","nodeType":"YulIdentifier","src":"8110:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8082:6:92"},"nodeType":"YulFunctionCall","src":"8082:35:92"},"nodeType":"YulExpressionStatement","src":"8082:35:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8143:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8154:3:92","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8139:3:92"},"nodeType":"YulFunctionCall","src":"8139:19:92"},{"name":"value3","nodeType":"YulIdentifier","src":"8160:6:92"},{"name":"value4","nodeType":"YulIdentifier","src":"8168:6:92"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"8126:12:92"},"nodeType":"YulFunctionCall","src":"8126:49:92"},"nodeType":"YulExpressionStatement","src":"8126:49:92"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8199:9:92"},{"name":"value4","nodeType":"YulIdentifier","src":"8210:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8195:3:92"},"nodeType":"YulFunctionCall","src":"8195:22:92"},{"kind":"number","nodeType":"YulLiteral","src":"8219:3:92","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8191:3:92"},"nodeType":"YulFunctionCall","src":"8191:32:92"},{"kind":"number","nodeType":"YulLiteral","src":"8225:1:92","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8184:6:92"},"nodeType":"YulFunctionCall","src":"8184:43:92"},"nodeType":"YulExpressionStatement","src":"8184:43:92"},{"nodeType":"YulAssignment","src":"8236:63:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8252:9:92"},{"arguments":[{"arguments":[{"name":"value4","nodeType":"YulIdentifier","src":"8271:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"8279:2:92","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8267:3:92"},"nodeType":"YulFunctionCall","src":"8267:15:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8288:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"8284:3:92"},"nodeType":"YulFunctionCall","src":"8284:7:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8263:3:92"},"nodeType":"YulFunctionCall","src":"8263:29:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8248:3:92"},"nodeType":"YulFunctionCall","src":"8248:45:92"},{"kind":"number","nodeType":"YulLiteral","src":"8295:3:92","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8244:3:92"},"nodeType":"YulFunctionCall","src":"8244:55:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"8236:4:92"}]}]},"name":"abi_encode_tuple_t_address_t_address_t_bytes32_t_bytes_calldata_ptr__to_t_address_t_address_t_bytes32_t_bytes_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7770:9:92","type":""},{"name":"value4","nodeType":"YulTypedName","src":"7781:6:92","type":""},{"name":"value3","nodeType":"YulTypedName","src":"7789:6:92","type":""},{"name":"value2","nodeType":"YulTypedName","src":"7797:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"7805:6:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"7813:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7824:4:92","type":""}],"src":"7620:685:92"},{"body":{"nodeType":"YulBlock","src":"8388:199:92","statements":[{"body":{"nodeType":"YulBlock","src":"8434:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8443:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8446:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8436:6:92"},"nodeType":"YulFunctionCall","src":"8436:12:92"},"nodeType":"YulExpressionStatement","src":"8436:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"8409:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"8418:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"8405:3:92"},"nodeType":"YulFunctionCall","src":"8405:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"8430:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"8401:3:92"},"nodeType":"YulFunctionCall","src":"8401:32:92"},"nodeType":"YulIf","src":"8398:52:92"},{"nodeType":"YulVariableDeclaration","src":"8459:29:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8478:9:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"8472:5:92"},"nodeType":"YulFunctionCall","src":"8472:16:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"8463:5:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"8541:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8550:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8553:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8543:6:92"},"nodeType":"YulFunctionCall","src":"8543:12:92"},"nodeType":"YulExpressionStatement","src":"8543:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8510:5:92"},{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8531:5:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"8524:6:92"},"nodeType":"YulFunctionCall","src":"8524:13:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"8517:6:92"},"nodeType":"YulFunctionCall","src":"8517:21:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"8507:2:92"},"nodeType":"YulFunctionCall","src":"8507:32:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"8500:6:92"},"nodeType":"YulFunctionCall","src":"8500:40:92"},"nodeType":"YulIf","src":"8497:60:92"},{"nodeType":"YulAssignment","src":"8566:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"8576:5:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"8566:6:92"}]}]},"name":"abi_decode_tuple_t_bool_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8354:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"8365:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"8377:6:92","type":""}],"src":"8310:277:92"},{"body":{"nodeType":"YulBlock","src":"8777:294:92","statements":[{"nodeType":"YulAssignment","src":"8787:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8799:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8810:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8795:3:92"},"nodeType":"YulFunctionCall","src":"8795:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"8787:4:92"}]},{"nodeType":"YulVariableDeclaration","src":"8823:52:92","value":{"kind":"number","nodeType":"YulLiteral","src":"8833:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"8827:2:92","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8891:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"8906:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"8914:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8902:3:92"},"nodeType":"YulFunctionCall","src":"8902:15:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8884:6:92"},"nodeType":"YulFunctionCall","src":"8884:34:92"},"nodeType":"YulExpressionStatement","src":"8884:34:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8938:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8949:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8934:3:92"},"nodeType":"YulFunctionCall","src":"8934:18:92"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"8958:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"8966:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8954:3:92"},"nodeType":"YulFunctionCall","src":"8954:15:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8927:6:92"},"nodeType":"YulFunctionCall","src":"8927:43:92"},"nodeType":"YulExpressionStatement","src":"8927:43:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8990:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9001:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8986:3:92"},"nodeType":"YulFunctionCall","src":"8986:18:92"},{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"9010:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"9018:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"9006:3:92"},"nodeType":"YulFunctionCall","src":"9006:15:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8979:6:92"},"nodeType":"YulFunctionCall","src":"8979:43:92"},"nodeType":"YulExpressionStatement","src":"8979:43:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9042:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9053:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9038:3:92"},"nodeType":"YulFunctionCall","src":"9038:18:92"},{"name":"value3","nodeType":"YulIdentifier","src":"9058:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9031:6:92"},"nodeType":"YulFunctionCall","src":"9031:34:92"},"nodeType":"YulExpressionStatement","src":"9031:34:92"}]},"name":"abi_encode_tuple_t_address_t_address_t_address_t_bytes32__to_t_address_t_address_t_address_t_bytes32__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8722:9:92","type":""},{"name":"value3","nodeType":"YulTypedName","src":"8733:6:92","type":""},{"name":"value2","nodeType":"YulTypedName","src":"8741:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"8749:6:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"8757:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"8768:4:92","type":""}],"src":"8592:479:92"},{"body":{"nodeType":"YulBlock","src":"9250:235:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9267:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9278:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9260:6:92"},"nodeType":"YulFunctionCall","src":"9260:21:92"},"nodeType":"YulExpressionStatement","src":"9260:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9301:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9312:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9297:3:92"},"nodeType":"YulFunctionCall","src":"9297:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"9317:2:92","type":"","value":"45"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9290:6:92"},"nodeType":"YulFunctionCall","src":"9290:30:92"},"nodeType":"YulExpressionStatement","src":"9290:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9340:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9351:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9336:3:92"},"nodeType":"YulFunctionCall","src":"9336:18:92"},{"hexValue":"455243313936373a206e657720696d706c656d656e746174696f6e206973206e","kind":"string","nodeType":"YulLiteral","src":"9356:34:92","type":"","value":"ERC1967: new implementation is n"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9329:6:92"},"nodeType":"YulFunctionCall","src":"9329:62:92"},"nodeType":"YulExpressionStatement","src":"9329:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9411:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9422:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9407:3:92"},"nodeType":"YulFunctionCall","src":"9407:18:92"},{"hexValue":"6f74206120636f6e7472616374","kind":"string","nodeType":"YulLiteral","src":"9427:15:92","type":"","value":"ot a contract"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9400:6:92"},"nodeType":"YulFunctionCall","src":"9400:43:92"},"nodeType":"YulExpressionStatement","src":"9400:43:92"},{"nodeType":"YulAssignment","src":"9452:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9464:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9475:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9460:3:92"},"nodeType":"YulFunctionCall","src":"9460:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"9452:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9227:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"9241:4:92","type":""}],"src":"9076:409:92"},{"body":{"nodeType":"YulBlock","src":"9556:184:92","statements":[{"nodeType":"YulVariableDeclaration","src":"9566:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"9575:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"9570:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"9635:63:92","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"9660:3:92"},{"name":"i","nodeType":"YulIdentifier","src":"9665:1:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9656:3:92"},"nodeType":"YulFunctionCall","src":"9656:11:92"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"9679:3:92"},{"name":"i","nodeType":"YulIdentifier","src":"9684:1:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9675:3:92"},"nodeType":"YulFunctionCall","src":"9675:11:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"9669:5:92"},"nodeType":"YulFunctionCall","src":"9669:18:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9649:6:92"},"nodeType":"YulFunctionCall","src":"9649:39:92"},"nodeType":"YulExpressionStatement","src":"9649:39:92"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"9596:1:92"},{"name":"length","nodeType":"YulIdentifier","src":"9599:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"9593:2:92"},"nodeType":"YulFunctionCall","src":"9593:13:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"9607:19:92","statements":[{"nodeType":"YulAssignment","src":"9609:15:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"9618:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"9621:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9614:3:92"},"nodeType":"YulFunctionCall","src":"9614:10:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"9609:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"9589:3:92","statements":[]},"src":"9585:113:92"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"9718:3:92"},{"name":"length","nodeType":"YulIdentifier","src":"9723:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9714:3:92"},"nodeType":"YulFunctionCall","src":"9714:16:92"},{"kind":"number","nodeType":"YulLiteral","src":"9732:1:92","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9707:6:92"},"nodeType":"YulFunctionCall","src":"9707:27:92"},"nodeType":"YulExpressionStatement","src":"9707:27:92"}]},"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"9534:3:92","type":""},{"name":"dst","nodeType":"YulTypedName","src":"9539:3:92","type":""},{"name":"length","nodeType":"YulTypedName","src":"9544:6:92","type":""}],"src":"9490:250:92"},{"body":{"nodeType":"YulBlock","src":"9882:150:92","statements":[{"nodeType":"YulVariableDeclaration","src":"9892:27:92","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"9912:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"9906:5:92"},"nodeType":"YulFunctionCall","src":"9906:13:92"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"9896:6:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"9967:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"9975:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9963:3:92"},"nodeType":"YulFunctionCall","src":"9963:17:92"},{"name":"pos","nodeType":"YulIdentifier","src":"9982:3:92"},{"name":"length","nodeType":"YulIdentifier","src":"9987:6:92"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"9928:34:92"},"nodeType":"YulFunctionCall","src":"9928:66:92"},"nodeType":"YulExpressionStatement","src":"9928:66:92"},{"nodeType":"YulAssignment","src":"10003:23:92","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"10014:3:92"},{"name":"length","nodeType":"YulIdentifier","src":"10019:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10010:3:92"},"nodeType":"YulFunctionCall","src":"10010:16:92"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"10003:3:92"}]}]},"name":"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"9858:3:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"9863:6:92","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"9874:3:92","type":""}],"src":"9745:287:92"},{"body":{"nodeType":"YulBlock","src":"10211:179:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10228:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"10239:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10221:6:92"},"nodeType":"YulFunctionCall","src":"10221:21:92"},"nodeType":"YulExpressionStatement","src":"10221:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10262:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"10273:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10258:3:92"},"nodeType":"YulFunctionCall","src":"10258:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"10278:2:92","type":"","value":"29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10251:6:92"},"nodeType":"YulFunctionCall","src":"10251:30:92"},"nodeType":"YulExpressionStatement","src":"10251:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10301:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"10312:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10297:3:92"},"nodeType":"YulFunctionCall","src":"10297:18:92"},{"hexValue":"416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374","kind":"string","nodeType":"YulLiteral","src":"10317:31:92","type":"","value":"Address: call to non-contract"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10290:6:92"},"nodeType":"YulFunctionCall","src":"10290:59:92"},"nodeType":"YulExpressionStatement","src":"10290:59:92"},{"nodeType":"YulAssignment","src":"10358:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10370:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"10381:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10366:3:92"},"nodeType":"YulFunctionCall","src":"10366:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"10358:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"10188:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"10202:4:92","type":""}],"src":"10037:353:92"},{"body":{"nodeType":"YulBlock","src":"10516:275:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10533:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"10544:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10526:6:92"},"nodeType":"YulFunctionCall","src":"10526:21:92"},"nodeType":"YulExpressionStatement","src":"10526:21:92"},{"nodeType":"YulVariableDeclaration","src":"10556:27:92","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"10576:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"10570:5:92"},"nodeType":"YulFunctionCall","src":"10570:13:92"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"10560:6:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10603:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"10614:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10599:3:92"},"nodeType":"YulFunctionCall","src":"10599:18:92"},{"name":"length","nodeType":"YulIdentifier","src":"10619:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10592:6:92"},"nodeType":"YulFunctionCall","src":"10592:34:92"},"nodeType":"YulExpressionStatement","src":"10592:34:92"},{"expression":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"10674:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"10682:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10670:3:92"},"nodeType":"YulFunctionCall","src":"10670:15:92"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10691:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"10702:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10687:3:92"},"nodeType":"YulFunctionCall","src":"10687:18:92"},{"name":"length","nodeType":"YulIdentifier","src":"10707:6:92"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"10635:34:92"},"nodeType":"YulFunctionCall","src":"10635:79:92"},"nodeType":"YulExpressionStatement","src":"10635:79:92"},{"nodeType":"YulAssignment","src":"10723:62:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10739:9:92"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"10758:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"10766:2:92","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10754:3:92"},"nodeType":"YulFunctionCall","src":"10754:15:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10775:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"10771:3:92"},"nodeType":"YulFunctionCall","src":"10771:7:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"10750:3:92"},"nodeType":"YulFunctionCall","src":"10750:29:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10735:3:92"},"nodeType":"YulFunctionCall","src":"10735:45:92"},{"kind":"number","nodeType":"YulLiteral","src":"10782:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10731:3:92"},"nodeType":"YulFunctionCall","src":"10731:54:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"10723:4:92"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"10485:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"10496:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"10507:4:92","type":""}],"src":"10395:396:92"}]},"contents":"{\n { }\n function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n if iszero(eq(value, and(value, shl(224, 0xffffffff)))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function abi_decode_tuple_t_uint16(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n if iszero(eq(value, and(value, 0xffff))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 96)\n let pos := headStart\n pos := headStart\n let srcPtr := value0\n let i := 0\n for { } lt(i, 0x03) { i := add(i, 1) }\n {\n mstore(pos, and(mload(srcPtr), 0xff))\n let _1 := 0x20\n pos := add(pos, _1)\n srcPtr := add(srcPtr, _1)\n }\n }\n function validator_revert_address(value)\n {\n if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n }\n function abi_encode_tuple_t_contract$_IDAO_$10865__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_encode_tuple_t_enum$_PluginType_$13330__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n if iszero(lt(value0, 3))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x21)\n revert(0, 0x24)\n }\n mstore(headStart, value0)\n }\n function panic_error_0x41()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function abi_decode_tuple_t_addresst_bytes_memory_ptr(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n let offset := calldataload(add(headStart, 32))\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n let _2 := add(headStart, offset)\n if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n let _3 := calldataload(_2)\n if gt(_3, _1) { panic_error_0x41() }\n let _4 := not(31)\n let memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n mstore(memPtr, _3)\n if gt(add(add(_2, _3), 32), dataEnd) { revert(0, 0) }\n calldatacopy(add(memPtr, 32), add(_2, 32), _3)\n mstore(add(add(memPtr, _3), 32), 0)\n value1 := memPtr\n }\n function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_decode_tuple_t_contract$_IDAO_$10865(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n }\n function abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 46)\n mstore(add(headStart, 64), \"Initializable: contract is alrea\")\n mstore(add(headStart, 96), \"dy initialized\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xff))\n }\n function abi_encode_tuple_t_stringliteral_36e108fa7a809b52ab1951dd91c117a7bc9ac5250bdf1aa162d4e104f7edf9eb__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 44)\n mstore(add(headStart, 64), \"Function must be called through \")\n mstore(add(headStart, 96), \"delegatecall\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_52f1ead4d9653e13afbd2e90ef2587c30187cd50b2e97d784e3f7a7541247434__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 44)\n mstore(add(headStart, 64), \"Function must be called through \")\n mstore(add(headStart, 96), \"active proxy\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_67f0151b4ad1dcfa0e3302a0cd6019f51582ef1807b37dceb00bd852a514f7f4__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 56)\n mstore(add(headStart, 64), \"UUPSUpgradeable: must not be cal\")\n mstore(add(headStart, 96), \"led through delegatecall\")\n tail := add(headStart, 128)\n }\n function abi_decode_tuple_t_bytes32_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := mload(headStart)\n }\n function abi_encode_tuple_t_stringliteral_8e8e2fbcb586f700b5b14e2c4a650c8d83b9773c31c5fe8962070ea544e11f24__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 46)\n mstore(add(headStart, 64), \"ERC1967Upgrade: new implementati\")\n mstore(add(headStart, 96), \"on is not UUPS\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_76b6b6debfc5febf101145a79ecf0b0d2e89e397dfdab2bca99888370411152c__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 41)\n mstore(add(headStart, 64), \"ERC1967Upgrade: unsupported prox\")\n mstore(add(headStart, 96), \"iableUUID\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 43)\n mstore(add(headStart, 64), \"Initializable: contract is not i\")\n mstore(add(headStart, 96), \"nitializing\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_address_t_address_t_bytes32_t_bytes_calldata_ptr__to_t_address_t_address_t_bytes32_t_bytes_memory_ptr__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n {\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n mstore(add(headStart, 64), value2)\n mstore(add(headStart, 96), 128)\n mstore(add(headStart, 128), value4)\n calldatacopy(add(headStart, 160), value3, value4)\n mstore(add(add(headStart, value4), 160), 0)\n tail := add(add(headStart, and(add(value4, 31), not(31))), 160)\n }\n function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := mload(headStart)\n if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_address_t_address_t_address_t_bytes32__to_t_address_t_address_t_address_t_bytes32__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n {\n tail := add(headStart, 128)\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n mstore(add(headStart, 64), and(value2, _1))\n mstore(add(headStart, 96), value3)\n }\n function abi_encode_tuple_t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 45)\n mstore(add(headStart, 64), \"ERC1967: new implementation is n\")\n mstore(add(headStart, 96), \"ot a contract\")\n tail := add(headStart, 128)\n }\n function copy_memory_to_memory_with_cleanup(src, dst, length)\n {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n mstore(add(dst, length), 0)\n }\n function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n {\n let length := mload(value0)\n copy_memory_to_memory_with_cleanup(add(value0, 0x20), pos, length)\n end := add(pos, length)\n }\n function abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 29)\n mstore(add(headStart, 64), \"Address: call to non-contract\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n mstore(headStart, 32)\n let length := mload(value0)\n mstore(add(headStart, 32), length)\n copy_memory_to_memory_with_cleanup(add(value0, 32), add(headStart, 64), length)\n tail := add(add(headStart, and(add(length, 31), not(31))), 64)\n }\n}","id":92,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{"554":[{"length":32,"start":1113},{"length":32,"start":1246},{"length":32,"start":1492},{"length":32,"start":1625},{"length":32,"start":1859}]},"linkReferences":{},"object":"6080604052600436106100dd5760003560e01c80634f1ef2861161007f5780636accab8c116100595780636accab8c1461022b578063c4d66de814610242578063c9c4bfca14610262578063efe51cca1461029657600080fd5b80634f1ef286146101ee57806352d1902d146102015780635c60da1b1461021657600080fd5b80632ae9c600116100bb5780632ae9c6001461015e5780633659cfe6146101805780634162169f146101a057806341de6830146101d257600080fd5b806301ffc9a7146100e2578063039a8c50146101175780632491118d14610139575b600080fd5b3480156100ee57600080fd5b506101026100fd366004610f74565b6102ad565b60405190151581526020015b60405180910390f35b34801561012357600080fd5b50610137610132366004610f9e565b610319565b005b34801561014557600080fd5b5061015061012f5481565b60405190815260200161010e565b34801561016a57600080fd5b50610173610425565b60405161010e9190610fc2565b34801561018c57600080fd5b5061013761019b36600461100b565b61044f565b3480156101ac57600080fd5b5060c9546001600160a01b03165b6040516001600160a01b03909116815260200161010e565b3480156101de57600080fd5b50600060405161010e9190611028565b6101376101fc366004611066565b6105ca565b34801561020d57600080fd5b50610150610736565b34801561022257600080fd5b506101ba6107fb565b34801561023757600080fd5b5061015061012d5481565b34801561024e57600080fd5b5061013761025d36600461100b565b610833565b34801561026e57600080fd5b506101507f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f581565b3480156102a257600080fd5b5061015061012e5481565b60006001600160e01b0319821663041de68360e41b14806102dd57506001600160e01b03198216621574e360e91b145b806102f857506001600160e01b031982166352d1902d60e01b145b8061031357506301ffc9a760e01b6001600160e01b03198316145b92915050565b600054600390610100900460ff1615801561033b575060005460ff8083169116105b6103a35760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805461ffff191660ff831617610100179055600261ffff831610156103cb57600261012e555b60038261ffff1610156103df57600361012f555b6000805461ff001916905560405160ff821681527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b61042d610f56565b5060408051606081018252600181526004602082015260009181019190915290565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036104dc5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b606482015260840161039a565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166105377f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b0316146105a25760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b606482015260840161039a565b6105ab81610925565b604080516000808252602082019092526105c791839190610962565b50565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036106575760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b606482015260840161039a565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166106b27f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b03161461071d5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b606482015260840161039a565b61072682610925565b61073282826001610962565b5050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146107d65760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000606482015260840161039a565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b600061082e7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b600054600390610100900460ff16158015610855575060005460ff8083169116105b6108b85760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161039a565b6000805461ffff191660ff8316176101001790556108d582610b07565b600161012d55600261012e55600361012f556000805461ff001916905560405160ff821681527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602001610419565b60c9547f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f590610732906001600160a01b0316303384600036610b7b565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561099a5761099583610c37565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156109f4575060408051601f3d908101601f191682019092526109f19181019061112a565b60015b610a665760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201527f6f6e206973206e6f742055555053000000000000000000000000000000000000606482015260840161039a565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114610afb5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f7860448201527f6961626c65555549440000000000000000000000000000000000000000000000606482015260840161039a565b50610995838383610d02565b600054610100900460ff16610b725760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840161039a565b6105c781610d2d565b604051637ef7c88360e11b81526001600160a01b0387169063fdef910690610baf9088908890889088908890600401611143565b602060405180830381865afa158015610bcc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bf09190611197565b610c2f57604051630cb6f8ed60e21b81526001600160a01b0380881660048301528087166024830152851660448201526064810184905260840161039a565b505050505050565b6001600160a01b0381163b610cb45760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e747261637400000000000000000000000000000000000000606482015260840161039a565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610d0b83610dc7565b600082511180610d185750805b1561099557610d278383610e07565b50505050565b600054610100900460ff16610d985760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840161039a565b60c9805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610dd081610c37565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060610e2c838360405180606001604052806027815260200161122d60279139610e33565b9392505050565b6060600080856001600160a01b031685604051610e5091906111dd565b600060405180830381855af49150503d8060008114610e8b576040519150601f19603f3d011682016040523d82523d6000602084013e610e90565b606091505b5091509150610ea186838387610eab565b9695505050505050565b60608315610f1a578251600003610f13576001600160a01b0385163b610f135760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161039a565b5081610f24565b610f248383610f2c565b949350505050565b815115610f3c5781518083602001fd5b8060405162461bcd60e51b815260040161039a91906111f9565b60405180606001604052806003906020820280368337509192915050565b600060208284031215610f8657600080fd5b81356001600160e01b031981168114610e2c57600080fd5b600060208284031215610fb057600080fd5b813561ffff81168114610e2c57600080fd5b60608101818360005b6003811015610fed57815160ff16835260209283019290910190600101610fcb565b50505092915050565b6001600160a01b03811681146105c757600080fd5b60006020828403121561101d57600080fd5b8135610e2c81610ff6565b602081016003831061104a57634e487b7160e01b600052602160045260246000fd5b91905290565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561107957600080fd5b823561108481610ff6565b9150602083013567ffffffffffffffff808211156110a157600080fd5b818501915085601f8301126110b557600080fd5b8135818111156110c7576110c7611050565b604051601f8201601f19908116603f011681019083821181831017156110ef576110ef611050565b8160405282815288602084870101111561110857600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60006020828403121561113c57600080fd5b5051919050565b60006001600160a01b03808816835280871660208401525084604083015260806060830152826080830152828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b6000602082840312156111a957600080fd5b81518015158114610e2c57600080fd5b60005b838110156111d45781810151838201526020016111bc565b50506000910152565b600082516111ef8184602087016111b9565b9190910192915050565b60208152600082518060208401526112188160408501602087016111b9565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xDD JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x4F1EF286 GT PUSH2 0x7F JUMPI DUP1 PUSH4 0x6ACCAB8C GT PUSH2 0x59 JUMPI DUP1 PUSH4 0x6ACCAB8C EQ PUSH2 0x22B JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0x242 JUMPI DUP1 PUSH4 0xC9C4BFCA EQ PUSH2 0x262 JUMPI DUP1 PUSH4 0xEFE51CCA EQ PUSH2 0x296 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x1EE JUMPI DUP1 PUSH4 0x52D1902D EQ PUSH2 0x201 JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0x216 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x2AE9C600 GT PUSH2 0xBB JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0x15E JUMPI DUP1 PUSH4 0x3659CFE6 EQ PUSH2 0x180 JUMPI DUP1 PUSH4 0x4162169F EQ PUSH2 0x1A0 JUMPI DUP1 PUSH4 0x41DE6830 EQ PUSH2 0x1D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xE2 JUMPI DUP1 PUSH4 0x39A8C50 EQ PUSH2 0x117 JUMPI DUP1 PUSH4 0x2491118D EQ PUSH2 0x139 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xEE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x102 PUSH2 0xFD CALLDATASIZE PUSH1 0x4 PUSH2 0xF74 JUMP JUMPDEST PUSH2 0x2AD JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x123 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x137 PUSH2 0x132 CALLDATASIZE PUSH1 0x4 PUSH2 0xF9E JUMP JUMPDEST PUSH2 0x319 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x145 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x150 PUSH2 0x12F SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x10E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x16A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x173 PUSH2 0x425 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x10E SWAP2 SWAP1 PUSH2 0xFC2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x18C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x137 PUSH2 0x19B CALLDATASIZE PUSH1 0x4 PUSH2 0x100B JUMP JUMPDEST PUSH2 0x44F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xC9 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x10E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 PUSH1 0x40 MLOAD PUSH2 0x10E SWAP2 SWAP1 PUSH2 0x1028 JUMP JUMPDEST PUSH2 0x137 PUSH2 0x1FC CALLDATASIZE PUSH1 0x4 PUSH2 0x1066 JUMP JUMPDEST PUSH2 0x5CA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x20D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x150 PUSH2 0x736 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x222 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1BA PUSH2 0x7FB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x237 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x150 PUSH2 0x12D SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x24E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x137 PUSH2 0x25D CALLDATASIZE PUSH1 0x4 PUSH2 0x100B JUMP JUMPDEST PUSH2 0x833 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x26E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x150 PUSH32 0x821B6E3A557148015A918C89E5D092E878A69854A2D1A410635F771BD5A8A3F5 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x150 PUSH2 0x12E SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x41DE683 PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x2DD JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x2F8 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x52D1902D PUSH1 0xE0 SHL EQ JUMPDEST DUP1 PUSH2 0x313 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x3 SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH2 0x33B JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF DUP1 DUP4 AND SWAP2 AND LT JUMPDEST PUSH2 0x3A3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x44 DUP3 ADD MSTORE PUSH14 0x191E481A5B9A5D1A585B1A5E9959 PUSH1 0x92 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH2 0xFFFF NOT AND PUSH1 0xFF DUP4 AND OR PUSH2 0x100 OR SWAP1 SSTORE PUSH1 0x2 PUSH2 0xFFFF DUP4 AND LT ISZERO PUSH2 0x3CB JUMPI PUSH1 0x2 PUSH2 0x12E SSTORE JUMPDEST PUSH1 0x3 DUP3 PUSH2 0xFFFF AND LT ISZERO PUSH2 0x3DF JUMPI PUSH1 0x3 PUSH2 0x12F SSTORE JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH1 0xFF DUP3 AND DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH2 0x42D PUSH2 0xF56 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x4DC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x19195B1959D85D1958D85B1B PUSH1 0xA2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x39A JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x537 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x5A2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x6163746976652070726F7879 PUSH1 0xA0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x39A JUMP JUMPDEST PUSH2 0x5AB DUP2 PUSH2 0x925 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x5C7 SWAP2 DUP4 SWAP2 SWAP1 PUSH2 0x962 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x657 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x19195B1959D85D1958D85B1B PUSH1 0xA2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x39A JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x6B2 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x71D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x6163746976652070726F7879 PUSH1 0xA0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x39A JUMP JUMPDEST PUSH2 0x726 DUP3 PUSH2 0x925 JUMP JUMPDEST PUSH2 0x732 DUP3 DUP3 PUSH1 0x1 PUSH2 0x962 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x7D6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x38 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x555550535570677261646561626C653A206D757374206E6F742062652063616C PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6C6564207468726F7567682064656C656761746563616C6C0000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x39A JUMP JUMPDEST POP PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x82E PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x3 SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH2 0x855 JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF DUP1 DUP4 AND SWAP2 AND LT JUMPDEST PUSH2 0x8B8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x44 DUP3 ADD MSTORE PUSH14 0x191E481A5B9A5D1A585B1A5E9959 PUSH1 0x92 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x39A JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH2 0xFFFF NOT AND PUSH1 0xFF DUP4 AND OR PUSH2 0x100 OR SWAP1 SSTORE PUSH2 0x8D5 DUP3 PUSH2 0xB07 JUMP JUMPDEST PUSH1 0x1 PUSH2 0x12D SSTORE PUSH1 0x2 PUSH2 0x12E SSTORE PUSH1 0x3 PUSH2 0x12F SSTORE PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH1 0xFF DUP3 AND DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH2 0x419 JUMP JUMPDEST PUSH1 0xC9 SLOAD PUSH32 0x821B6E3A557148015A918C89E5D092E878A69854A2D1A410635F771BD5A8A3F5 SWAP1 PUSH2 0x732 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ADDRESS CALLER DUP5 PUSH1 0x0 CALLDATASIZE PUSH2 0xB7B JUMP JUMPDEST PUSH32 0x4910FDFA16FED3260ED0E7147F7CC6DA11A60208B5B9406D12A635614FFD9143 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x99A JUMPI PUSH2 0x995 DUP4 PUSH2 0xC37 JUMP JUMPDEST POP POP POP JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x52D1902D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x9F4 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x9F1 SWAP2 DUP2 ADD SWAP1 PUSH2 0x112A JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0xA66 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524331393637557067726164653A206E657720696D706C656D656E74617469 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F6E206973206E6F742055555053000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x39A JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC DUP2 EQ PUSH2 0xAFB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524331393637557067726164653A20756E737570706F727465642070726F78 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6961626C65555549440000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x39A JUMP JUMPDEST POP PUSH2 0x995 DUP4 DUP4 DUP4 PUSH2 0xD02 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0xB72 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x39A JUMP JUMPDEST PUSH2 0x5C7 DUP2 PUSH2 0xD2D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x7EF7C883 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0xFDEF9106 SWAP1 PUSH2 0xBAF SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x1143 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xBCC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xBF0 SWAP2 SWAP1 PUSH2 0x1197 JUMP JUMPDEST PUSH2 0xC2F JUMPI PUSH1 0x40 MLOAD PUSH4 0xCB6F8ED PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND PUSH1 0x4 DUP4 ADD MSTORE DUP1 DUP8 AND PUSH1 0x24 DUP4 ADD MSTORE DUP6 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x84 ADD PUSH2 0x39A JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND EXTCODESIZE PUSH2 0xCB4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313936373A206E657720696D706C656D656E746174696F6E206973206E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F74206120636F6E747261637400000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x39A JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xD0B DUP4 PUSH2 0xDC7 JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD GT DUP1 PUSH2 0xD18 JUMPI POP DUP1 JUMPDEST ISZERO PUSH2 0x995 JUMPI PUSH2 0xD27 DUP4 DUP4 PUSH2 0xE07 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0xD98 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x39A JUMP JUMPDEST PUSH1 0xC9 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xDD0 DUP2 PUSH2 0xC37 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xE2C DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x122D PUSH1 0x27 SWAP2 CODECOPY PUSH2 0xE33 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0xE50 SWAP2 SWAP1 PUSH2 0x11DD JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xE8B JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xE90 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0xEA1 DUP7 DUP4 DUP4 DUP8 PUSH2 0xEAB JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0xF1A JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0xF13 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0xF13 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x39A JUMP JUMPDEST POP DUP2 PUSH2 0xF24 JUMP JUMPDEST PUSH2 0xF24 DUP4 DUP4 PUSH2 0xF2C JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0xF3C JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x39A SWAP2 SWAP1 PUSH2 0x11F9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xF86 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0xE2C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xFB0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH2 0xE2C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0xFED JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0xFCB JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x5C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x101D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xE2C DUP2 PUSH2 0xFF6 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH1 0x3 DUP4 LT PUSH2 0x104A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 SWAP1 MSTORE SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1079 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x1084 DUP2 PUSH2 0xFF6 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x10A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x10B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x10C7 JUMPI PUSH2 0x10C7 PUSH2 0x1050 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x10EF JUMPI PUSH2 0x10EF PUSH2 0x1050 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x1108 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x113C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND DUP4 MSTORE DUP1 DUP8 AND PUSH1 0x20 DUP5 ADD MSTORE POP DUP5 PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x80 PUSH1 0x60 DUP4 ADD MSTORE DUP3 PUSH1 0x80 DUP4 ADD MSTORE DUP3 DUP5 PUSH1 0xA0 DUP5 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0xA0 DUP5 DUP5 ADD ADD MSTORE PUSH1 0xA0 PUSH1 0x1F NOT PUSH1 0x1F DUP6 ADD AND DUP4 ADD ADD SWAP1 POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x11A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xE2C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x11D4 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x11BC JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x11EF DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x11B9 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x1218 DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x11B9 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A164 PUSH20 0x6F6C6343000811000A0000000000000000000000 ","sourceMap":"1334:546:53:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2358:366:75;;;;;;;;;;-1:-1:-1;2358:366:75;;;;;:::i;:::-;;:::i;:::-;;;470:14:92;;463:22;445:41;;433:2;418:18;2358:366:75;;;;;;;;1662:216:53;;;;;;;;;;-1:-1:-1;1662:216:53;;;;;:::i;:::-;;:::i;:::-;;1460:21;;;;;;;;;;;;;;;;;;;920:25:92;;;908:2;893:18;1460:21:53;774:177:92;631:98:90;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;3408:195:5:-;;;;;;;;;;-1:-1:-1;3408:195:5;;;;;:::i;:::-;;:::i;1200:70:67:-;;;;;;;;;;-1:-1:-1;1259:4:67;;-1:-1:-1;;;;;1259:4:67;1200:70;;;-1:-1:-1;;;;;2051:55:92;;;2033:74;;2021:2;2006:18;1200:70:67;1873:240:92;1552:103:75;;;;;;;;;;-1:-1:-1;1604:10:75;1552:103;;;;;;:::i;3922:220:5:-;;;;;;:::i;:::-;;:::i;3027:131::-;;;;;;;;;;;;;:::i;3005:100:75:-;;;;;;;;;;;;;:::i;1406:21:53:-;;;;;;;;;;;;;;;;1488:168;;;;;;;;;;-1:-1:-1;1488:168:53;;;;;:::i;:::-;;:::i;1753:93:75:-;;;;;;;;;;;;1808:38;1753:93;;1433:21:53;;;;;;;;;;;;;;;;2358:366:75;2444:4;-1:-1:-1;;;;;;2479:41:75;;-1:-1:-1;;;2479:41:75;;:107;;-1:-1:-1;;;;;;;2536:50:75;;-1:-1:-1;;;2536:50:75;2479:107;:185;;;-1:-1:-1;;;;;;;2602:62:75;;-1:-1:-1;;;2602:62:75;2479:185;:238;;;-1:-1:-1;;;;;;;;;;1189:51:11;;;2680:37:75;2460:257;2358:366;-1:-1:-1;;2358:366:75:o;1662:216:53:-;4882:13:4;;1732:1:53;;4882:13:4;;;;;4881:14;:40;;;;-1:-1:-1;4899:12:4;;:22;;;;:12;;:22;4881:40;4873:99;;;;-1:-1:-1;;;4873:99:4;;4541:2:92;4873:99:4;;;4523:21:92;4580:2;4560:18;;;4553:30;4619:34;4599:18;;;4592:62;-1:-1:-1;;;4670:18:92;;;4663:44;4724:19;;4873:99:4;;;;;;;;;4982:12;:22;;-1:-1:-1;;5014:20:4;4982:22;;;5014:20;4982:22;5014:20;;;1766:1:53::1;1749:18;::::0;::::1;;1745:59;;;1792:1;1783:6;:10:::0;1745:59:::1;1834:1;1817:14;:18;;;1813:59;;;1860:1;1851:6;:10:::0;1813:59:::1;5071:5:4::0;5055:21;;-1:-1:-1;;5055:21:4;;;5091:20;;4926:4:92;4914:17;;4896:36;;5091:20:4;;4884:2:92;4869:18;5091:20:4;;;;;;;;1662:216:53;;:::o;631:98:90:-;679:15;;:::i;:::-;-1:-1:-1;706:16:90;;;;;;;;714:1;706:16;;717:1;706:16;;;;-1:-1:-1;706:16:90;;;;;;;;631:98::o;3408:195:5:-;-1:-1:-1;;;;;1764:6:5;1747:23;1755:4;1747:23;1739:80;;;;-1:-1:-1;;;1739:80:5;;5145:2:92;1739:80:5;;;5127:21:92;5184:2;5164:18;;;5157:30;5223:34;5203:18;;;5196:62;-1:-1:-1;;;5274:18:92;;;5267:42;5326:19;;1739:80:5;4943:408:92;1739:80:5;1861:6;-1:-1:-1;;;;;1837:30:5;:20;1180:66:2;1557:65;-1:-1:-1;;;;;1557:65:2;;1478:151;1837:20:5;-1:-1:-1;;;;;1837:30:5;;1829:87;;;;-1:-1:-1;;;1829:87:5;;5558:2:92;1829:87:5;;;5540:21:92;5597:2;5577:18;;;5570:30;5636:34;5616:18;;;5609:62;-1:-1:-1;;;5687:18:92;;;5680:42;5739:19;;1829:87:5;5356:408:92;1829:87:5;3489:36:::1;3507:17;3489;:36::i;:::-;3576:12;::::0;;3586:1:::1;3576:12:::0;;;::::1;::::0;::::1;::::0;;;3535:61:::1;::::0;3557:17;;3576:12;3535:21:::1;:61::i;:::-;3408:195:::0;:::o;3922:220::-;-1:-1:-1;;;;;1764:6:5;1747:23;1755:4;1747:23;1739:80;;;;-1:-1:-1;;;1739:80:5;;5145:2:92;1739:80:5;;;5127:21:92;5184:2;5164:18;;;5157:30;5223:34;5203:18;;;5196:62;-1:-1:-1;;;5274:18:92;;;5267:42;5326:19;;1739:80:5;4943:408:92;1739:80:5;1861:6;-1:-1:-1;;;;;1837:30:5;:20;1180:66:2;1557:65;-1:-1:-1;;;;;1557:65:2;;1478:151;1837:20:5;-1:-1:-1;;;;;1837:30:5;;1829:87;;;;-1:-1:-1;;;1829:87:5;;5558:2:92;1829:87:5;;;5540:21:92;5597:2;5577:18;;;5570:30;5636:34;5616:18;;;5609:62;-1:-1:-1;;;5687:18:92;;;5680:42;5739:19;;1829:87:5;5356:408:92;1829:87:5;4037:36:::1;4055:17;4037;:36::i;:::-;4083:52;4105:17;4124:4;4130;4083:21;:52::i;:::-;3922:220:::0;;:::o;3027:131::-;3105:7;2190:4;-1:-1:-1;;;;;2199:6:5;2182:23;;2174:92;;;;-1:-1:-1;;;2174:92:5;;5971:2:92;2174:92:5;;;5953:21:92;6010:2;5990:18;;;5983:30;6049:34;6029:18;;;6022:62;6120:26;6100:18;;;6093:54;6164:19;;2174:92:5;5769:420:92;2174:92:5;-1:-1:-1;1180:66:2::1;3027:131:5::0;:::o;3005:100:75:-;3052:7;3078:20;1180:66:2;1557:65;-1:-1:-1;;;;;1557:65:2;;1478:151;3078:20:75;3071:27;;3005:100;:::o;1488:168:53:-;4882:13:4;;1542:1:53;;4882:13:4;;;;;4881:14;:40;;;;-1:-1:-1;4899:12:4;;:22;;;;:12;;:22;4881:40;4873:99;;;;-1:-1:-1;;;4873:99:4;;4541:2:92;4873:99:4;;;4523:21:92;4580:2;4560:18;;;4553:30;4619:34;4599:18;;;4592:62;-1:-1:-1;;;4670:18:92;;;4663:44;4724:19;;4873:99:4;4339:410:92;4873:99:4;4982:12;:22;;-1:-1:-1;;5014:20:4;4982:22;;;5014:20;4982:22;5014:20;;;1555:34:53::1;1584:4:::0;1555:28:::1;:34::i;:::-;1608:1;1599:6;:10:::0;1628:1:::1;1619:6;:10:::0;1648:1:::1;1639:6;:10:::0;-1:-1:-1;5055:21:4;;-1:-1:-1;;5055:21:4;;;5091:20;;4926:4:92;4914:17;;4896:36;;5091:20:4;;4884:2:92;4869:18;5091:20:4;4754:184:92;3446:204:75;1616:4:67;;1808:38:75;;1610:67:67;;-1:-1:-1;;;;;1616:4:67;1630;965:10:8;1651:13:67;1039:14:8;;1610:5:67;:67::i;2841:944:2:-;839:66;3257:59;;;3253:526;;;3332:37;3351:17;3332:18;:37::i;:::-;2841:944;;;:::o;3253:526::-;3433:17;-1:-1:-1;;;;;3404:61:2;;:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3404:63:2;;;;;;;;-1:-1:-1;;3404:63:2;;;;;;;;;;;;:::i;:::-;;;3400:302;;3631:56;;-1:-1:-1;;;3631:56:2;;6585:2:92;3631:56:2;;;6567:21:92;6624:2;6604:18;;;6597:30;6663:34;6643:18;;;6636:62;6734:16;6714:18;;;6707:44;6768:19;;3631:56:2;6383:410:92;3400:302:2;1180:66;3517:28;;3509:82;;;;-1:-1:-1;;;3509:82:2;;7000:2:92;3509:82:2;;;6982:21:92;7039:2;7019:18;;;7012:30;7078:34;7058:18;;;7051:62;7149:11;7129:18;;;7122:39;7178:19;;3509:82:2;6798:405:92;3509:82:2;3468:138;3715:53;3733:17;3752:4;3758:9;3715:17;:53::i;2014:139:75:-;5374:13:4;;;;;;;5366:69;;;;-1:-1:-1;;;5366:69:4;;7410:2:92;5366:69:4;;;7392:21:92;7449:2;7429:18;;;7422:30;7488:34;7468:18;;;7461:62;-1:-1:-1;;;7539:18:92;;;7532:41;7590:19;;5366:69:4;7208:407:92;5366:69:4;2107:39:75::1;2141:4;2107:33;:39::i;1041:363:68:-:0;1180:54;;-1:-1:-1;;;1180:54:68;;-1:-1:-1;;;;;1180:18:68;;;;;:54;;1199:6;;1207:4;;1213:13;;1228:5;;;;1180:54;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1175:226;;1251:150;;-1:-1:-1;;;1251:150:68;;-1:-1:-1;;;;;8902:15:92;;;1251:150:68;;;8884:34:92;8954:15;;;8934:18;;;8927:43;9006:15;;8986:18;;;8979:43;9038:18;;;9031:34;;;8795:19;;1251:150:68;8592:479:92;1175:226:68;1041:363;;;;;;:::o;1720:281:2:-;-1:-1:-1;;;;;1713:19:6;;;1793:106:2;;;;-1:-1:-1;;;1793:106:2;;9278:2:92;1793:106:2;;;9260:21:92;9317:2;9297:18;;;9290:30;9356:34;9336:18;;;9329:62;9427:15;9407:18;;;9400:43;9460:19;;1793:106:2;9076:409:92;1793:106:2;1180:66;1909:85;;-1:-1:-1;;1909:85:2;-1:-1:-1;;;;;1909:85:2;;;;;;;;;;1720:281::o;2393:276::-;2501:29;2512:17;2501:10;:29::i;:::-;2558:1;2544:4;:11;:15;:28;;;;2563:9;2544:28;2540:123;;;2588:64;2628:17;2647:4;2588:39;:64::i;:::-;;2393:276;;;:::o;1010:108:67:-;5374:13:4;;;;;;;5366:69;;;;-1:-1:-1;;;5366:69:4;;7410:2:92;5366:69:4;;;7392:21:92;7449:2;7429:18;;;7422:30;7488:34;7468:18;;;7461:62;-1:-1:-1;;;7539:18:92;;;7532:41;7590:19;;5366:69:4;7208:407:92;5366:69:4;1100:4:67::1;:11:::0;;-1:-1:-1;;1100:11:67::1;-1:-1:-1::0;;;;;1100:11:67;;;::::1;::::0;;;::::1;::::0;;1010:108::o;2107:152:2:-;2173:37;2192:17;2173:18;:37::i;:::-;2225:27;;-1:-1:-1;;;;;2225:27:2;;;;;;;;2107:152;:::o;6685:198:6:-;6768:12;6799:77;6820:6;6828:4;6799:77;;;;;;;;;;;;;;;;;:20;:77::i;:::-;6792:84;6685:198;-1:-1:-1;;;6685:198:6:o;7069:325::-;7210:12;7235;7249:23;7276:6;-1:-1:-1;;;;;7276:19:6;7296:4;7276:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7234:67;;;;7318:69;7345:6;7353:7;7362:10;7374:12;7318:26;:69::i;:::-;7311:76;7069:325;-1:-1:-1;;;;;;7069:325:6:o;7682:628::-;7862:12;7890:7;7886:418;;;7917:10;:17;7938:1;7917:22;7913:286;;-1:-1:-1;;;;;1713:19:6;;;8124:60;;;;-1:-1:-1;;;8124:60:6;;10239:2:92;8124:60:6;;;10221:21:92;10278:2;10258:18;;;10251:30;10317:31;10297:18;;;10290:59;10366:18;;8124:60:6;10037:353:92;8124:60:6;-1:-1:-1;8219:10:6;8212:17;;7886:418;8260:33;8268:10;8280:12;8260:7;:33::i;:::-;7682:628;;;;;;:::o;8832:540::-;8991:17;;:21;8987:379;;9219:10;9213:17;9275:15;9262:10;9258:2;9254:19;9247:44;8987:379;9342:12;9335:20;;-1:-1:-1;;;9335:20:6;;;;;;;;:::i;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:286:92:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:92;;209:43;;199:71;;266:1;263;256:12;497:272;555:6;608:2;596:9;587:7;583:23;579:32;576:52;;;624:1;621;614:12;576:52;663:9;650:23;713:6;706:5;702:18;695:5;692:29;682:57;;735:1;732;725:12;956:501;1132:2;1117:18;;1121:9;1212:6;1090:4;1246:205;1260:4;1257:1;1254:11;1246:205;;;1323:13;;1338:4;1319:24;1307:37;;1367:4;1391:12;;;;1426:15;;;;1280:1;1273:9;1246:205;;;1250:3;;;956:501;;;;:::o;1462:154::-;-1:-1:-1;;;;;1541:5:92;1537:54;1530:5;1527:65;1517:93;;1606:1;1603;1596:12;1621:247;1680:6;1733:2;1721:9;1712:7;1708:23;1704:32;1701:52;;;1749:1;1746;1739:12;1701:52;1788:9;1775:23;1807:31;1832:5;1807:31;:::i;2118:344::-;2266:2;2251:18;;2299:1;2288:13;;2278:144;;2344:10;2339:3;2335:20;2332:1;2325:31;2379:4;2376:1;2369:15;2407:4;2404:1;2397:15;2278:144;2431:25;;;2118:344;:::o;2467:127::-;2528:10;2523:3;2519:20;2516:1;2509:31;2559:4;2556:1;2549:15;2583:4;2580:1;2573:15;2599:1056;2676:6;2684;2737:2;2725:9;2716:7;2712:23;2708:32;2705:52;;;2753:1;2750;2743:12;2705:52;2792:9;2779:23;2811:31;2836:5;2811:31;:::i;:::-;2861:5;-1:-1:-1;2917:2:92;2902:18;;2889:32;2940:18;2970:14;;;2967:34;;;2997:1;2994;2987:12;2967:34;3035:6;3024:9;3020:22;3010:32;;3080:7;3073:4;3069:2;3065:13;3061:27;3051:55;;3102:1;3099;3092:12;3051:55;3138:2;3125:16;3160:2;3156;3153:10;3150:36;;;3166:18;;:::i;:::-;3241:2;3235:9;3209:2;3295:13;;-1:-1:-1;;3291:22:92;;;3315:2;3287:31;3283:40;3271:53;;;3339:18;;;3359:22;;;3336:46;3333:72;;;3385:18;;:::i;:::-;3425:10;3421:2;3414:22;3460:2;3452:6;3445:18;3500:7;3495:2;3490;3486;3482:11;3478:20;3475:33;3472:53;;;3521:1;3518;3511:12;3472:53;3577:2;3572;3568;3564:11;3559:2;3551:6;3547:15;3534:46;3622:1;3617:2;3612;3604:6;3600:15;3596:24;3589:35;3643:6;3633:16;;;;;;;2599:1056;;;;;:::o;6194:184::-;6264:6;6317:2;6305:9;6296:7;6292:23;6288:32;6285:52;;;6333:1;6330;6323:12;6285:52;-1:-1:-1;6356:16:92;;6194:184;-1:-1:-1;6194:184:92:o;7620:685::-;7824:4;-1:-1:-1;;;;;7934:2:92;7926:6;7922:15;7911:9;7904:34;7986:2;7978:6;7974:15;7969:2;7958:9;7954:18;7947:43;;8026:6;8021:2;8010:9;8006:18;7999:34;8069:3;8064:2;8053:9;8049:18;8042:31;8110:6;8104:3;8093:9;8089:19;8082:35;8168:6;8160;8154:3;8143:9;8139:19;8126:49;8225:1;8219:3;8210:6;8199:9;8195:22;8191:32;8184:43;8295:3;8288:2;8284:7;8279:2;8271:6;8267:15;8263:29;8252:9;8248:45;8244:55;8236:63;;7620:685;;;;;;;;:::o;8310:277::-;8377:6;8430:2;8418:9;8409:7;8405:23;8401:32;8398:52;;;8446:1;8443;8436:12;8398:52;8478:9;8472:16;8531:5;8524:13;8517:21;8510:5;8507:32;8497:60;;8553:1;8550;8543:12;9490:250;9575:1;9585:113;9599:6;9596:1;9593:13;9585:113;;;9675:11;;;9669:18;9656:11;;;9649:39;9621:2;9614:10;9585:113;;;-1:-1:-1;;9732:1:92;9714:16;;9707:27;9490:250::o;9745:287::-;9874:3;9912:6;9906:13;9928:66;9987:6;9982:3;9975:4;9967:6;9963:17;9928:66;:::i;:::-;10010:16;;;;;9745:287;-1:-1:-1;;9745:287:92:o;10395:396::-;10544:2;10533:9;10526:21;10507:4;10576:6;10570:13;10619:6;10614:2;10603:9;10599:18;10592:34;10635:79;10707:6;10702:2;10691:9;10687:18;10682:2;10674:6;10670:15;10635:79;:::i;:::-;10775:2;10754:15;-1:-1:-1;;10750:29:92;10735:45;;;;10782:2;10731:54;;10395:396;-1:-1:-1;;10395:396:92:o"},"gasEstimates":{"creation":{"codeDepositCost":"940800","executionCost":"infinite","totalCost":"infinite"},"external":{"UPGRADE_PLUGIN_PERMISSION_ID()":"261","dao()":"2387","implementation()":"2436","initialize(address)":"infinite","initializeFrom(uint16)":"98388","pluginType()":"316","protocolVersion()":"infinite","proxiableUUID()":"infinite","state1()":"2317","state2()":"2383","state3()":"2363","supportsInterface(bytes4)":"560","upgradeTo(address)":"infinite","upgradeToAndCall(address,bytes)":"infinite"}},"methodIdentifiers":{"UPGRADE_PLUGIN_PERMISSION_ID()":"c9c4bfca","dao()":"4162169f","implementation()":"5c60da1b","initialize(address)":"c4d66de8","initializeFrom(uint16)":"039a8c50","pluginType()":"41de6830","protocolVersion()":"2ae9c600","proxiableUUID()":"52d1902d","state1()":"6accab8c","state2()":"efe51cca","state3()":"2491118d","supportsInterface(bytes4)":"01ffc9a7","upgradeTo(address)":"3659cfe6","upgradeToAndCall(address,bytes)":"4f1ef286"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"dao\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"name\":\"DaoUnauthorized\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"UPGRADE_PLUGIN_PERMISSION_ID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"dao\",\"outputs\":[{\"internalType\":\"contract IDAO\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IDAO\",\"name\":\"_dao\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"_previousBuild\",\"type\":\"uint16\"}],\"name\":\"initializeFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pluginType\",\"outputs\":[{\"internalType\":\"enum IPlugin.PluginType\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"protocolVersion\",\"outputs\":[{\"internalType\":\"uint8[3]\",\"name\":\"\",\"type\":\"uint8[3]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"state1\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"state2\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"state3\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"upgradeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"DO NOT USE IN PRODUCTION!\",\"errors\":{\"DaoUnauthorized(address,address,address,bytes32)\":[{\"params\":{\"dao\":\"The associated DAO.\",\"permissionId\":\"The permission identifier.\",\"where\":\"The context in which the authorization reverted.\",\"who\":\"The address (EOA or contract) missing the permission.\"}}]},\"kind\":\"dev\",\"methods\":{\"dao()\":{\"returns\":{\"_0\":\"The DAO contract.\"}},\"implementation()\":{\"returns\":{\"_0\":\"The address of the implementation contract.\"}},\"protocolVersion()\":{\"details\":\"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\",\"returns\":{\"_0\":\"Returns the semantic Aragon OSx protocol version number.\"}},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"supportsInterface(bytes4)\":{\"params\":{\"_interfaceId\":\"The ID of the interface.\"},\"returns\":{\"_0\":\"Returns `true` if the interface is supported.\"}},\"upgradeTo(address)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"},\"upgradeToAndCall(address,bytes)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"}},\"version\":1},\"userdoc\":{\"errors\":{\"DaoUnauthorized(address,address,address,bytes32)\":[{\"notice\":\"Thrown if a call is unauthorized in the associated DAO.\"}]},\"kind\":\"user\",\"methods\":{\"UPGRADE_PLUGIN_PERMISSION_ID()\":{\"notice\":\"The ID of the permission required to call the `_authorizeUpgrade` function.\"},\"dao()\":{\"notice\":\"Returns the DAO contract.\"},\"implementation()\":{\"notice\":\"Returns the address of the implementation contract in the [proxy storage slot](https://eips.ethereum.org/EIPS/eip-1967) slot the [UUPS proxy](https://eips.ethereum.org/EIPS/eip-1822) is pointing to.\"},\"pluginType()\":{\"notice\":\"Returns the plugin's type\"},\"protocolVersion()\":{\"notice\":\"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Checks if an interface is supported by this or its parent contract.\"}},\"notice\":\"A mock upgradeable plugin to be deployed via the UUPS proxy pattern. v1.1 (Release 1, Build 3)\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/mocks/plugin/PluginUUPSUpgradeableMock.sol\":\"PluginUUPSUpgradeableMockBuild3\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/interfaces/IERC1967Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (interfaces/IERC1967.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\\n *\\n * _Available since v4.8.3._\\n */\\ninterface IERC1967Upgradeable {\\n /**\\n * @dev Emitted when the implementation is upgraded.\\n */\\n event Upgraded(address indexed implementation);\\n\\n /**\\n * @dev Emitted when the admin account has changed.\\n */\\n event AdminChanged(address previousAdmin, address newAdmin);\\n\\n /**\\n * @dev Emitted when the beacon is changed.\\n */\\n event BeaconUpgraded(address indexed beacon);\\n}\\n\",\"keccak256\":\"0x47d6e06872b12e72c79d1b5eb55842f860b5fb1207b2317c2358d2766b950a7b\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822ProxiableUpgradeable {\\n /**\\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n * address.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy.\\n */\\n function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../beacon/IBeaconUpgradeable.sol\\\";\\nimport \\\"../../interfaces/IERC1967Upgradeable.sol\\\";\\nimport \\\"../../interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\nimport \\\"../../utils/StorageSlotUpgradeable.sol\\\";\\nimport {Initializable} from \\\"../utils/Initializable.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n */\\nabstract contract ERC1967UpgradeUpgradeable is Initializable, IERC1967Upgradeable {\\n // This is the keccak-256 hash of \\\"eip1967.proxy.rollback\\\" subtracted by 1\\n bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n /**\\n * @dev Storage slot with the address of the current implementation.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n function __ERC1967Upgrade_init() internal onlyInitializing {\\n }\\n\\n function __ERC1967Upgrade_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _getImplementation() internal view returns (address) {\\n return StorageSlotUpgradeable.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 implementation slot.\\n */\\n function _setImplementation(address newImplementation) private {\\n require(AddressUpgradeable.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n StorageSlotUpgradeable.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n }\\n\\n /**\\n * @dev Perform implementation upgrade\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeTo(address newImplementation) internal {\\n _setImplementation(newImplementation);\\n emit Upgraded(newImplementation);\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCall(address newImplementation, bytes memory data, bool forceCall) internal {\\n _upgradeTo(newImplementation);\\n if (data.length > 0 || forceCall) {\\n AddressUpgradeable.functionDelegateCall(newImplementation, data);\\n }\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCallUUPS(address newImplementation, bytes memory data, bool forceCall) internal {\\n // Upgrades from old implementations will perform a rollback test. This test requires the new\\n // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n // this special case will break upgrade paths from old UUPS implementation to new ones.\\n if (StorageSlotUpgradeable.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n _setImplementation(newImplementation);\\n } else {\\n try IERC1822ProxiableUpgradeable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n require(slot == _IMPLEMENTATION_SLOT, \\\"ERC1967Upgrade: unsupported proxiableUUID\\\");\\n } catch {\\n revert(\\\"ERC1967Upgrade: new implementation is not UUPS\\\");\\n }\\n _upgradeToAndCall(newImplementation, data, forceCall);\\n }\\n }\\n\\n /**\\n * @dev Storage slot with the admin of the contract.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _getAdmin() internal view returns (address) {\\n return StorageSlotUpgradeable.getAddressSlot(_ADMIN_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 admin slot.\\n */\\n function _setAdmin(address newAdmin) private {\\n require(newAdmin != address(0), \\\"ERC1967: new admin is the zero address\\\");\\n StorageSlotUpgradeable.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n */\\n function _changeAdmin(address newAdmin) internal {\\n emit AdminChanged(_getAdmin(), newAdmin);\\n _setAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\\n */\\n bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n /**\\n * @dev Returns the current beacon.\\n */\\n function _getBeacon() internal view returns (address) {\\n return StorageSlotUpgradeable.getAddressSlot(_BEACON_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new beacon in the EIP1967 beacon slot.\\n */\\n function _setBeacon(address newBeacon) private {\\n require(AddressUpgradeable.isContract(newBeacon), \\\"ERC1967: new beacon is not a contract\\\");\\n require(\\n AddressUpgradeable.isContract(IBeaconUpgradeable(newBeacon).implementation()),\\n \\\"ERC1967: beacon implementation is not a contract\\\"\\n );\\n StorageSlotUpgradeable.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n }\\n\\n /**\\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n *\\n * Emits a {BeaconUpgraded} event.\\n */\\n function _upgradeBeaconToAndCall(address newBeacon, bytes memory data, bool forceCall) internal {\\n _setBeacon(newBeacon);\\n emit BeaconUpgraded(newBeacon);\\n if (data.length > 0 || forceCall) {\\n AddressUpgradeable.functionDelegateCall(IBeaconUpgradeable(newBeacon).implementation(), data);\\n }\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x7795808e3899c805254e3ae58074b20f799b466e3f43e057e47bedee5fb771f8\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeaconUpgradeable {\\n /**\\n * @dev Must return an address that can be used as a delegate call target.\\n *\\n * {BeaconProxy} will check that this address is a contract.\\n */\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/UUPSUpgradeable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport \\\"../ERC1967/ERC1967UpgradeUpgradeable.sol\\\";\\nimport {Initializable} from \\\"./Initializable.sol\\\";\\n\\n/**\\n * @dev An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an\\n * {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy.\\n *\\n * A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is\\n * reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing\\n * `UUPSUpgradeable` with a custom implementation of upgrades.\\n *\\n * The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism.\\n *\\n * _Available since v4.1._\\n */\\nabstract contract UUPSUpgradeable is Initializable, IERC1822ProxiableUpgradeable, ERC1967UpgradeUpgradeable {\\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable state-variable-assignment\\n address private immutable __self = address(this);\\n\\n /**\\n * @dev Check that the execution is being performed through a delegatecall call and that the execution context is\\n * a proxy contract with an implementation (as defined in ERC1967) pointing to self. This should only be the case\\n * for UUPS and transparent proxies that are using the current contract as their implementation. Execution of a\\n * function through ERC1167 minimal proxies (clones) would not normally pass this test, but is not guaranteed to\\n * fail.\\n */\\n modifier onlyProxy() {\\n require(address(this) != __self, \\\"Function must be called through delegatecall\\\");\\n require(_getImplementation() == __self, \\\"Function must be called through active proxy\\\");\\n _;\\n }\\n\\n /**\\n * @dev Check that the execution is not being performed through a delegate call. This allows a function to be\\n * callable on the implementing contract but not through proxies.\\n */\\n modifier notDelegated() {\\n require(address(this) == __self, \\\"UUPSUpgradeable: must not be called through delegatecall\\\");\\n _;\\n }\\n\\n function __UUPSUpgradeable_init() internal onlyInitializing {\\n }\\n\\n function __UUPSUpgradeable_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the\\n * implementation. It is used to validate the implementation's compatibility when performing an upgrade.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\\n */\\n function proxiableUUID() external view virtual override notDelegated returns (bytes32) {\\n return _IMPLEMENTATION_SLOT;\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy to `newImplementation`.\\n *\\n * Calls {_authorizeUpgrade}.\\n *\\n * Emits an {Upgraded} event.\\n *\\n * @custom:oz-upgrades-unsafe-allow-reachable delegatecall\\n */\\n function upgradeTo(address newImplementation) public virtual onlyProxy {\\n _authorizeUpgrade(newImplementation);\\n _upgradeToAndCallUUPS(newImplementation, new bytes(0), false);\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call\\n * encoded in `data`.\\n *\\n * Calls {_authorizeUpgrade}.\\n *\\n * Emits an {Upgraded} event.\\n *\\n * @custom:oz-upgrades-unsafe-allow-reachable delegatecall\\n */\\n function upgradeToAndCall(address newImplementation, bytes memory data) public payable virtual onlyProxy {\\n _authorizeUpgrade(newImplementation);\\n _upgradeToAndCallUUPS(newImplementation, data, true);\\n }\\n\\n /**\\n * @dev Function that should revert when `msg.sender` is not authorized to upgrade the contract. Called by\\n * {upgradeTo} and {upgradeToAndCall}.\\n *\\n * Normally, this function will use an xref:access.adoc[access control] modifier such as {Ownable-onlyOwner}.\\n *\\n * ```solidity\\n * function _authorizeUpgrade(address) internal override onlyOwner {}\\n * ```\\n */\\n function _authorizeUpgrade(address newImplementation) internal virtual;\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0xefb41f5c1a00249b7a99f0782f8c557865605426a3fb6e5fe9ae334293ae4f33\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n function __Context_init() internal onlyInitializing {\\n }\\n\\n function __Context_init_unchained() internal onlyInitializing {\\n }\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n function _contextSuffixLength() internal view virtual returns (uint256) {\\n return 0;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x75097e35253e7fb282ee4d7f27a80eaacfa759923185bf17302a89cbc059c5ef\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/StorageSlot.sol)\\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```solidity\\n * contract ERC1967 {\\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n * function _getImplementation() internal view returns (address) {\\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n * }\\n *\\n * function _setImplementation(address newImplementation) internal {\\n * require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n * }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._\\n * _Available since v4.9 for `string`, `bytes`._\\n */\\nlibrary StorageSlotUpgradeable {\\n struct AddressSlot {\\n address value;\\n }\\n\\n struct BooleanSlot {\\n bool value;\\n }\\n\\n struct Bytes32Slot {\\n bytes32 value;\\n }\\n\\n struct Uint256Slot {\\n uint256 value;\\n }\\n\\n struct StringSlot {\\n string value;\\n }\\n\\n struct BytesSlot {\\n bytes value;\\n }\\n\\n /**\\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n */\\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n */\\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n */\\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n */\\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` with member `value` located at `slot`.\\n */\\n function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\\n */\\n function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` with member `value` located at `slot`.\\n */\\n function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\\n */\\n function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n}\\n\",\"keccak256\":\"0x07ac95acad040f1fb1f6120dd0aa5f702db69446e95f82613721879d30de0908\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165Upgradeable.sol\\\";\\nimport {Initializable} from \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165Upgradeable is Initializable, IERC165Upgradeable {\\n function __ERC165_init() internal onlyInitializing {\\n }\\n\\n function __ERC165_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165Upgradeable).interfaceId;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0xd90d7723512df65ae417adaf0801042940f0dabd60039ceeaffe34aa5b238da1\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165Upgradeable {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\"},\"src/dao/IDAO.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IDAO\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for DAOs within the Aragon App DAO framework.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IDAO {\\n /// @notice The action struct to be consumed by the DAO's `execute` function resulting in an external call.\\n /// @param to The address to call.\\n /// @param value The native token value to be sent with the call.\\n /// @param data The bytes-encoded function selector and calldata for the call.\\n struct Action {\\n address to;\\n uint256 value;\\n bytes data;\\n }\\n\\n /// @notice Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\\n /// @param _where The address of the contract.\\n /// @param _who The address of a EOA or contract to give the permissions.\\n /// @param _permissionId The permission identifier.\\n /// @param _data The optional data passed to the `PermissionCondition` registered.\\n /// @return Returns true if the address has permission, false if not.\\n function hasPermission(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes memory _data\\n ) external view returns (bool);\\n\\n /// @notice Updates the DAO metadata (e.g., an IPFS hash).\\n /// @param _metadata The IPFS hash of the new metadata object.\\n function setMetadata(bytes calldata _metadata) external;\\n\\n /// @notice Emitted when the DAO metadata is updated.\\n /// @param metadata The IPFS hash of the new metadata object.\\n event MetadataSet(bytes metadata);\\n\\n /// @notice Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted.\\n /// @param _callId The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce.\\n /// @param _actions The array of actions.\\n /// @param _allowFailureMap A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @return The array of results obtained from the executed actions in `bytes`.\\n /// @return The resulting failure map containing the actions have actually failed.\\n function execute(\\n bytes32 _callId,\\n Action[] memory _actions,\\n uint256 _allowFailureMap\\n ) external returns (bytes[] memory, uint256);\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param actor The address of the caller.\\n /// @param callId The ID of the call.\\n /// @param actions The array of actions executed.\\n /// @param allowFailureMap The allow failure map encoding which actions are allowed to fail.\\n /// @param failureMap The failure map encoding which actions have failed.\\n /// @param execResults The array with the results of the executed actions.\\n /// @dev The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce.\\n event Executed(\\n address indexed actor,\\n bytes32 callId,\\n Action[] actions,\\n uint256 allowFailureMap,\\n uint256 failureMap,\\n bytes[] execResults\\n );\\n\\n /// @notice Emitted when a standard callback is registered.\\n /// @param interfaceId The ID of the interface.\\n /// @param callbackSelector The selector of the callback function.\\n /// @param magicNumber The magic number to be registered for the callback function selector.\\n event StandardCallbackRegistered(\\n bytes4 interfaceId,\\n bytes4 callbackSelector,\\n bytes4 magicNumber\\n );\\n\\n /// @notice Deposits (native) tokens to the DAO contract with a reference string.\\n /// @param _token The address of the token or address(0) in case of the native token.\\n /// @param _amount The amount of tokens to deposit.\\n /// @param _reference The reference describing the deposit reason.\\n function deposit(address _token, uint256 _amount, string calldata _reference) external payable;\\n\\n /// @notice Emitted when a token deposit has been made to the DAO.\\n /// @param sender The address of the sender.\\n /// @param token The address of the deposited token.\\n /// @param amount The amount of tokens deposited.\\n /// @param _reference The reference describing the deposit reason.\\n event Deposited(\\n address indexed sender,\\n address indexed token,\\n uint256 amount,\\n string _reference\\n );\\n\\n /// @notice Emitted when a native token deposit has been made to the DAO.\\n /// @dev This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).\\n /// @param sender The address of the sender.\\n /// @param amount The amount of native tokens deposited.\\n event NativeTokenDeposited(address sender, uint256 amount);\\n\\n /// @notice Setter for the trusted forwarder verifying the meta transaction.\\n /// @param _trustedForwarder The trusted forwarder address.\\n function setTrustedForwarder(address _trustedForwarder) external;\\n\\n /// @notice Getter for the trusted forwarder verifying the meta transaction.\\n /// @return The trusted forwarder address.\\n function getTrustedForwarder() external view returns (address);\\n\\n /// @notice Emitted when a new TrustedForwarder is set on the DAO.\\n /// @param forwarder the new forwarder address.\\n event TrustedForwarderSet(address forwarder);\\n\\n /// @notice Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\\n /// @param _hash The hash of the data to be signed.\\n /// @param _signature The signature byte array associated with `_hash`.\\n /// @return Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not.\\n function isValidSignature(bytes32 _hash, bytes memory _signature) external returns (bytes4);\\n\\n /// @notice Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\\n /// @param _interfaceId The ID of the interface.\\n /// @param _callbackSelector The selector of the callback function.\\n /// @param _magicNumber The magic number to be registered for the function signature.\\n function registerStandardCallback(\\n bytes4 _interfaceId,\\n bytes4 _callbackSelector,\\n bytes4 _magicNumber\\n ) external;\\n\\n /// @notice Removed function being left here to not corrupt the IDAO interface ID. Any call will revert.\\n /// @dev Introduced in v1.0.0. Removed in v1.4.0.\\n function setSignatureValidator(address) external;\\n}\\n\",\"keccak256\":\"0xb7f615523c26de042edce98731c658f44a1edb2464387ac1b642c4c69f57128e\",\"license\":\"AGPL-3.0-or-later\"},\"src/mocks/plugin/PluginUUPSUpgradeableMock.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\n/* solhint-disable one-contract-per-file */\\npragma solidity ^0.8.8;\\n\\nimport {PluginUUPSUpgradeable} from \\\"../../plugin/PluginUUPSUpgradeable.sol\\\";\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice A mock upgradeable plugin to be deployed via the UUPS proxy pattern.\\n/// v1.1 (Release 1, Build 1)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableMockBuild1 is PluginUUPSUpgradeable {\\n uint256 public state1;\\n\\n function initialize(IDAO _dao) external initializer {\\n __PluginUUPSUpgradeable_init(_dao);\\n state1 = 1;\\n }\\n}\\n\\n/// @notice A mock upgradeable plugin to be deployed via the UUPS proxy pattern.\\n/// v1.1 (Release 1, Build 2)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableMockBuild2 is PluginUUPSUpgradeable {\\n uint256 public state1;\\n uint256 public state2;\\n\\n function initialize(IDAO _dao) external reinitializer(2) {\\n __PluginUUPSUpgradeable_init(_dao);\\n state1 = 1;\\n state2 = 2;\\n }\\n\\n function initializeFrom(uint16 _previousBuild) external reinitializer(2) {\\n if (_previousBuild < 2) {\\n state2 = 2;\\n }\\n }\\n}\\n\\n/// @notice A mock upgradeable plugin to be deployed via the UUPS proxy pattern.\\n/// v1.1 (Release 1, Build 3)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableMockBuild3 is PluginUUPSUpgradeable {\\n uint256 public state1;\\n uint256 public state2;\\n uint256 public state3;\\n\\n function initialize(IDAO _dao) external reinitializer(3) {\\n __PluginUUPSUpgradeable_init(_dao);\\n state1 = 1;\\n state2 = 2;\\n state3 = 3;\\n }\\n\\n function initializeFrom(uint16 _previousBuild) external reinitializer(3) {\\n if (_previousBuild < 2) {\\n state2 = 2;\\n }\\n if (_previousBuild < 3) {\\n state3 = 3;\\n }\\n }\\n}\\n\\n/// @notice A mock upgradeable plugin missing an initializer function.\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableMockBad is PluginUUPSUpgradeable {\\n uint256 public state1;\\n\\n function notAnInitializer(IDAO _dao) external {\\n __PluginUUPSUpgradeable_init(_dao);\\n state1 = 1;\\n }\\n}\\n\",\"keccak256\":\"0x2917df3b1da0de27f58cf531afeaa4e6c4285717247cbdd9ecc7880ae5cb9cb0\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/DaoAuthorizableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ContextUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\\\";\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\nimport {_auth} from \\\"./auth.sol\\\";\\n\\n/// @title DaoAuthorizableUpgradeable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract contract providing a meta-transaction compatible modifier for upgradeable or cloneable contracts to authorize function calls through an associated DAO.\\n/// @dev Make sure to call `__DaoAuthorizableUpgradeable_init` during initialization of the inheriting contract.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract DaoAuthorizableUpgradeable is ContextUpgradeable {\\n /// @notice The associated DAO managing the permissions of inheriting contracts.\\n IDAO private dao_;\\n\\n /// @notice Initializes the contract by setting the associated DAO.\\n /// @param _dao The associated DAO address.\\n // solhint-disable-next-line func-name-mixedcase\\n function __DaoAuthorizableUpgradeable_init(IDAO _dao) internal onlyInitializing {\\n dao_ = _dao;\\n }\\n\\n /// @notice Returns the DAO contract.\\n /// @return The DAO contract.\\n function dao() public view returns (IDAO) {\\n return dao_;\\n }\\n\\n /// @notice A modifier to make functions on inheriting contracts authorized. Permissions to call the function are checked through the associated DAO's permission manager.\\n /// @param _permissionId The permission identifier required to call the method this modifier is applied to.\\n modifier auth(bytes32 _permissionId) {\\n _auth(dao_, address(this), _msgSender(), _permissionId, _msgData());\\n _;\\n }\\n\\n /// @notice This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain (see [OpenZeppelin's guide about storage gaps](https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps)).\\n uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0x7fac6b01b037ba1cb9d6a22d3f43b0785037dcf496ffb672434d9bf7227d2585\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/auth.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice Thrown if a call is unauthorized in the associated DAO.\\n/// @param dao The associated DAO.\\n/// @param where The context in which the authorization reverted.\\n/// @param who The address (EOA or contract) missing the permission.\\n/// @param permissionId The permission identifier.\\nerror DaoUnauthorized(address dao, address where, address who, bytes32 permissionId);\\n\\n/// @notice A free function checking if a caller is granted permissions on a target contract via a permission identifier that redirects the approval to a `PermissionCondition` if this was specified in the setup.\\n/// @param _where The address of the target contract for which `who` receives permission.\\n/// @param _who The address (EOA or contract) owning the permission.\\n/// @param _permissionId The permission identifier.\\n/// @param _data The optional data passed to the `PermissionCondition` registered.\\n/// @custom:security-contact sirt@aragon.org\\nfunction _auth(\\n IDAO _dao,\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes calldata _data\\n) view {\\n if (!_dao.hasPermission(_where, _who, _permissionId, _data))\\n revert DaoUnauthorized({\\n dao: address(_dao),\\n where: _where,\\n who: _who,\\n permissionId: _permissionId\\n });\\n}\\n\",\"keccak256\":\"0x878764b4f87fe0651fb3798fb9cb87c952f8c6caf6ae79c7f09de84df6c00298\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/IPlugin.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IPlugin\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the traits of a plugin.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IPlugin {\\n enum PluginType {\\n UUPS,\\n Cloneable,\\n Constructable\\n }\\n\\n /// @notice Returns the plugin's type\\n function pluginType() external view returns (PluginType);\\n}\\n\",\"keccak256\":\"0xc57cd0d10b6380ab7f54c713a509e88fd8f4ad9288313a0e8e12b8887817ddfe\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/PluginUUPSUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {UUPSUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\\\";\\nimport {IERC1822ProxiableUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport {ERC165Upgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\\\";\\n\\nimport {IProtocolVersion} from \\\"../utils/versioning/IProtocolVersion.sol\\\";\\nimport {ProtocolVersion} from \\\"../utils/versioning/ProtocolVersion.sol\\\";\\nimport {DaoAuthorizableUpgradeable} from \\\"../permission/auth/DaoAuthorizableUpgradeable.sol\\\";\\nimport {IDAO} from \\\"../dao/IDAO.sol\\\";\\nimport {IPlugin} from \\\"./IPlugin.sol\\\";\\n\\n/// @title PluginUUPSUpgradeable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract, upgradeable contract to inherit from when creating a plugin being deployed via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract PluginUUPSUpgradeable is\\n IPlugin,\\n ERC165Upgradeable,\\n UUPSUpgradeable,\\n DaoAuthorizableUpgradeable,\\n ProtocolVersion\\n{\\n // NOTE: When adding new state variables to the contract, the size of `_gap` has to be adapted below as well.\\n\\n /// @notice Disables the initializers on the implementation contract to prevent it from being left uninitialized.\\n /// @custom:oz-upgrades-unsafe-allow constructor\\n constructor() {\\n _disableInitializers();\\n }\\n\\n /// @inheritdoc IPlugin\\n function pluginType() public pure override returns (PluginType) {\\n return PluginType.UUPS;\\n }\\n\\n /// @notice The ID of the permission required to call the `_authorizeUpgrade` function.\\n bytes32 public constant UPGRADE_PLUGIN_PERMISSION_ID = keccak256(\\\"UPGRADE_PLUGIN_PERMISSION\\\");\\n\\n /// @notice Initializes the plugin by storing the associated DAO.\\n /// @param _dao The DAO contract.\\n // solhint-disable-next-line func-name-mixedcase\\n function __PluginUUPSUpgradeable_init(IDAO _dao) internal virtual onlyInitializing {\\n __DaoAuthorizableUpgradeable_init(_dao);\\n }\\n\\n /// @notice Checks if an interface is supported by this or its parent contract.\\n /// @param _interfaceId The ID of the interface.\\n /// @return Returns `true` if the interface is supported.\\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\\n return\\n _interfaceId == type(IPlugin).interfaceId ||\\n _interfaceId == type(IProtocolVersion).interfaceId ||\\n _interfaceId == type(IERC1822ProxiableUpgradeable).interfaceId ||\\n super.supportsInterface(_interfaceId);\\n }\\n\\n /// @notice Returns the address of the implementation contract in the [proxy storage slot](https://eips.ethereum.org/EIPS/eip-1967) slot the [UUPS proxy](https://eips.ethereum.org/EIPS/eip-1822) is pointing to.\\n /// @return The address of the implementation contract.\\n function implementation() public view returns (address) {\\n return _getImplementation();\\n }\\n\\n /// @notice Internal method authorizing the upgrade of the contract via the [upgradeability mechanism for UUPS proxies](https://docs.openzeppelin.com/contracts/4.x/api/proxy#UUPSUpgradeable) (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\\n /// @dev The caller must have the `UPGRADE_PLUGIN_PERMISSION_ID` permission.\\n function _authorizeUpgrade(\\n address\\n )\\n internal\\n virtual\\n override\\n auth(UPGRADE_PLUGIN_PERMISSION_ID)\\n // solhint-disable-next-line no-empty-blocks\\n {\\n\\n }\\n\\n /// @notice This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain (see [OpenZeppelin's guide about storage gaps](https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps)).\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x127e7c4f839cb8c8486070990b78e22313f1ff089ffe6a4ff23ae358e48f0037\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/IProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IProtocolVersion\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the semantic Aragon OSx protocol version number.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IProtocolVersion {\\n /// @notice Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\\n /// @return _version Returns the semantic Aragon OSx protocol version number.\\n /// @dev This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\\n function protocolVersion() external view returns (uint8[3] memory _version);\\n}\\n\",\"keccak256\":\"0x00a4da654d21dc1bdadbdc8bd54bb86c378c56f85e461ccc31303628ea621361\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/ProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IProtocolVersion} from \\\"./IProtocolVersion.sol\\\";\\n\\n/// @title ProtocolVersion\\n/// @author Aragon X - 2023\\n/// @notice An abstract, stateless, non-upgradeable contract providing the current Aragon OSx protocol version number.\\n/// @dev Do not add any new variables to this contract that would shift down storage in the inheritance chain.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract ProtocolVersion is IProtocolVersion {\\n // IMPORTANT: Do not add any storage variable, see the above notice.\\n\\n /// @inheritdoc IProtocolVersion\\n function protocolVersion() public pure returns (uint8[3] memory) {\\n return [1, 4, 0];\\n }\\n}\\n\",\"keccak256\":\"0x3975c937be935f687c6b6b8f379071232681e98cf04b175d72781b819ea52bdb\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[{"astId":372,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild3","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":375,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild3","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":2821,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild3","label":"__gap","offset":0,"slot":"1","type":"t_array(t_uint256)50_storage"},{"astId":354,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild3","label":"__gap","offset":0,"slot":"51","type":"t_array(t_uint256)50_storage"},{"astId":670,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild3","label":"__gap","offset":0,"slot":"101","type":"t_array(t_uint256)50_storage"},{"astId":2592,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild3","label":"__gap","offset":0,"slot":"151","type":"t_array(t_uint256)50_storage"},{"astId":13111,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild3","label":"dao_","offset":0,"slot":"201","type":"t_contract(IDAO)10865"},{"astId":13160,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild3","label":"__gap","offset":0,"slot":"202","type":"t_array(t_uint256)49_storage"},{"astId":13632,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild3","label":"__gap","offset":0,"slot":"251","type":"t_array(t_uint256)50_storage"},{"astId":11842,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild3","label":"state1","offset":0,"slot":"301","type":"t_uint256"},{"astId":11844,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild3","label":"state2","offset":0,"slot":"302","type":"t_uint256"},{"astId":11846,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild3","label":"state3","offset":0,"slot":"303","type":"t_uint256"}],"types":{"t_array(t_uint256)49_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[49]","numberOfBytes":"1568"},"t_array(t_uint256)50_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[50]","numberOfBytes":"1600"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_contract(IDAO)10865":{"encoding":"inplace","label":"contract IDAO","numberOfBytes":"20"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"errors":{"DaoUnauthorized(address,address,address,bytes32)":[{"notice":"Thrown if a call is unauthorized in the associated DAO."}]},"kind":"user","methods":{"UPGRADE_PLUGIN_PERMISSION_ID()":{"notice":"The ID of the permission required to call the `_authorizeUpgrade` function."},"dao()":{"notice":"Returns the DAO contract."},"implementation()":{"notice":"Returns the address of the implementation contract in the [proxy storage slot](https://eips.ethereum.org/EIPS/eip-1967) slot the [UUPS proxy](https://eips.ethereum.org/EIPS/eip-1822) is pointing to."},"pluginType()":{"notice":"Returns the plugin's type"},"protocolVersion()":{"notice":"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with."},"supportsInterface(bytes4)":{"notice":"Checks if an interface is supported by this or its parent contract."}},"notice":"A mock upgradeable plugin to be deployed via the UUPS proxy pattern. v1.1 (Release 1, Build 3)","version":1}}},"src/mocks/plugin/PluginUUPSUpgradeableSetupMock.sol":{"PluginUUPSUpgradeableSetupMockBuild1":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"ConflictingValues","type":"error"},{"inputs":[{"internalType":"uint16","name":"fromBuild","type":"uint16"},{"internalType":"uint16","name":"thisBuild","type":"uint16"}],"name":"InvalidUpdatePath","type":"error"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_dao","type":"address"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"prepareInstallation","outputs":[{"internalType":"address","name":"plugin","type":"address"},{"components":[{"internalType":"address[]","name":"helpers","type":"address[]"},{"components":[{"internalType":"enum PermissionLib.Operation","name":"operation","type":"uint8"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"condition","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"internalType":"struct PermissionLib.MultiTargetPermission[]","name":"permissions","type":"tuple[]"}],"internalType":"struct IPluginSetup.PreparedSetupData","name":"preparedSetupData","type":"tuple"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_dao","type":"address"},{"components":[{"internalType":"address","name":"plugin","type":"address"},{"internalType":"address[]","name":"currentHelpers","type":"address[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct IPluginSetup.SetupPayload","name":"_payload","type":"tuple"}],"name":"prepareUninstallation","outputs":[{"components":[{"internalType":"enum PermissionLib.Operation","name":"operation","type":"uint8"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"condition","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"internalType":"struct PermissionLib.MultiTargetPermission[]","name":"permissions","type":"tuple[]"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_dao","type":"address"},{"internalType":"uint16","name":"_fromBuild","type":"uint16"},{"components":[{"internalType":"address","name":"plugin","type":"address"},{"internalType":"address[]","name":"currentHelpers","type":"address[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct IPluginSetup.SetupPayload","name":"_payload","type":"tuple"}],"name":"prepareUpdate","outputs":[{"internalType":"bytes","name":"","type":"bytes"},{"components":[{"internalType":"address[]","name":"helpers","type":"address[]"},{"components":[{"internalType":"enum PermissionLib.Operation","name":"operation","type":"uint8"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"condition","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"internalType":"struct PermissionLib.MultiTargetPermission[]","name":"permissions","type":"tuple[]"}],"internalType":"struct IPluginSetup.PreparedSetupData","name":"","type":"tuple"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"protocolVersion","outputs":[{"internalType":"uint8[3]","name":"","type":"uint8[3]"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"DO NOT USE IN PRODUCTION!","errors":{"InvalidUpdatePath(uint16,uint16)":[{"params":{"fromBuild":"The build number to update from.","thisBuild":"The build number of this setup to update to."}}]},"kind":"dev","methods":{"implementation()":{"details":"The implementation can be instantiated via the `new` keyword, cloned via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)), or proxied via the UUPS proxy pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).","returns":{"_0":"The address of the plugin implementation contract."}},"prepareInstallation(address,bytes)":{"params":{"_dao":"The address of the installing DAO.","_data":"The bytes-encoded data containing the input parameters for the installation as specified in the plugin's build metadata JSON file."},"returns":{"plugin":"The address of the `Plugin` contract being prepared for installation.","preparedSetupData":"The deployed plugin's relevant data which consists of helpers and permissions."}},"prepareUninstallation(address,(address,address[],bytes))":{"params":{"_dao":"The address of the uninstalling DAO.","_payload":"The relevant data necessary for the `prepareUninstallation`. See above."},"returns":{"permissions":"The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the uninstalling DAO."}},"prepareUpdate(address,uint16,(address,address[],bytes))":{"details":"The default implementation for the initial build 1 that reverts because no earlier build exists.","params":{"_dao":"The address of the updating DAO.","_fromBuild":"The build number of the plugin to update from.","_payload":"The relevant data necessary for the `prepareUpdate`. See above."},"returns":{"_0":"The initialization data to be passed to upgradeable contracts when the update is applied in the `PluginSetupProcessor`.","_1":"The deployed plugin's relevant data which consists of helpers and permissions."}},"protocolVersion()":{"details":"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.","returns":{"_0":"Returns the semantic Aragon OSx protocol version number."}},"supportsInterface(bytes4)":{"params":{"_interfaceId":"The ID of the interface."},"returns":{"_0":"Returns `true` if the interface is supported."}}},"version":1},"evm":{"bytecode":{"functionDebugData":{"@_11962":{"entryPoint":null,"id":11962,"parameterSlots":0,"returnSlots":0},"@_14409":{"entryPoint":null,"id":14409,"parameterSlots":1,"returnSlots":0}},"generatedSources":[],"linkReferences":{},"object":"60a060405234801561001057600080fd5b5060405161001d9061004b565b604051809103906000f080158015610039573d6000803e3d6000fd5b506001600160a01b0316608052610058565b6112138061126083390190565b6080516111e76100796000396000818160d201526102d301526111e76000f3fe60806040523480156200001157600080fd5b50600436106200007b5760003560e01c80639cb0a12411620000565780639cb0a12414620000fd578063a8a9c29e1462000123578063f10832f1146200014a57600080fd5b806301ffc9a714620000805780632ae9c60014620000ac5780635c60da1b14620000c5575b600080fd5b6200009762000091366004620005f8565b62000171565b60405190151581526020015b60405180910390f35b620000b6620001c4565b604051620000a3919062000624565b6040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152602001620000a3565b620001146200010e3660046200068a565b620001f0565b604051620000a391906200075b565b6200013a62000134366004620007a8565b62000208565b604051620000a3929190620008f7565b620001616200015b3660046200093f565b6200024f565b604051620000a392919062000a0d565b60006001600160e01b0319821663099718b560e41b1480620001a257506001600160e01b03198216621574e360e91b145b80620001be57506301ffc9a760e01b6001600160e01b03198316145b92915050565b620001ce620005cc565b5060408051606081018252600181526004602082015260009181019190915290565b606062000201600060018062000333565b9392505050565b606062000228604051806040016040528060608152602001606081525090565b60405163098990c560e11b8152600060048201526001602482015260440160405180910390fd5b60006200026f604051806040016040528060608152602001606081525090565b6040516001600160a01b038516602482015260009060440160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663189acdbd60e31b17905290506200030581620002f57f000000000000000000000000000000000000000000000000000000000000000090565b6001600160a01b031690620004cc565b925062000313600162000508565b825262000324600060018162000333565b60208301525090939092509050565b6060826001600160a01b0316846001600160a01b031611156200036957604051633a4013cd60e21b815260040160405180910390fd5b62000375848462000a4f565b6001600160a01b031667ffffffffffffffff81111562000399576200039962000929565b604051908082528060200260200182016040528015620003f457816020015b6040805160a081018252600080825260208083018290529282018190526060820181905260808201528252600019909201910181620003b85790505b509050835b836001600160a01b0316816001600160a01b03161015620004c4576040518060a00160405280846002811115620004345762000434620006de565b81526001600160a01b038316602082018190526040820152600060608201527fa280eec51ab8e1bc4b6b0c1b7f1bde785761b787a49db404e3e9338ed9b016ef6080909101528262000487878462000a4f565b6001600160a01b031681518110620004a357620004a362000a79565b60200260200101819052508080620004bb9062000a8f565b915050620003f9565b509392505050565b60008282604051620004de90620005ea565b620004eb92919062000ab8565b604051809103906000f080158015620004c4573d6000803e3d6000fd5b6060816001600160a01b031667ffffffffffffffff8111156200052f576200052f62000929565b60405190808252806020026020018201604052801562000559578160200160208202803683370190505b50905060005b826001600160a01b0316816001600160a01b03161015620005c6578082826001600160a01b03168151811062000599576200059962000a79565b6001600160a01b039092166020928302919091019091015280620005bd8162000a8f565b9150506200055f565b50919050565b60405180606001604052806003906020820280368337509192915050565b6106fe8062000add83390190565b6000602082840312156200060b57600080fd5b81356001600160e01b0319811681146200020157600080fd5b60608101818360005b60038110156200065157815160ff168352602092830192909101906001016200062d565b50505092915050565b80356001600160a01b03811681146200067257600080fd5b919050565b600060608284031215620005c657600080fd5b600080604083850312156200069e57600080fd5b620006a9836200065a565b9150602083013567ffffffffffffffff811115620006c657600080fd5b620006d48582860162000677565b9150509250929050565b634e487b7160e01b600052602160045260246000fd5b60008151600381106200071757634e487b7160e01b600052602160045260246000fd5b8352506020818101516001600160a01b0390811691840191909152604080830151821690840152606080830151909116908301526080908101519082015260a00190565b6020808252825182820181905260009190848201906040850190845b818110156200079c576200078d838551620006f4565b93850193925060010162000777565b50909695505050505050565b600080600060608486031215620007be57600080fd5b620007c9846200065a565b9250602084013561ffff81168114620007e157600080fd5b9150604084013567ffffffffffffffff811115620007fe57600080fd5b6200080c8682870162000677565b9150509250925092565b6000815180845260005b818110156200083e5760208185018101518683018201520162000820565b506000602082860101526020601f19601f83011685010191505092915050565b805160408084528151908401819052600091602091908201906060860190845b81811015620008a55783516001600160a01b0316835292840192918401916001016200087e565b50508483015186820387850152805180835290840192506000918401905b80831015620008ec57620008d9828551620006f4565b91508484019350600183019250620008c3565b509695505050505050565b6040815260006200090c604083018562000816565b82810360208401526200092081856200085e565b95945050505050565b634e487b7160e01b600052604160045260246000fd5b600080604083850312156200095357600080fd5b6200095e836200065a565b9150602083013567ffffffffffffffff808211156200097c57600080fd5b818501915085601f8301126200099157600080fd5b813581811115620009a657620009a662000929565b604051601f8201601f19908116603f01168101908382118183101715620009d157620009d162000929565b81604052828152886020848701011115620009eb57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6001600160a01b038316815260406020820152600062000a3160408301846200085e565b949350505050565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0382811682821603908082111562000a725762000a7262000a39565b5092915050565b634e487b7160e01b600052603260045260246000fd5b60006001600160a01b0380831681810362000aae5762000aae62000a39565b6001019392505050565b6001600160a01b038316815260406020820152600062000a3160408301846200081656fe60806040526040516106fe3803806106fe83398101604081905261002291610319565b61002e82826000610035565b5050610436565b61003e8361006b565b60008251118061004b5750805b156100665761006483836100ab60201b6100291760201c565b505b505050565b610074816100d7565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606100d083836040518060600160405280602781526020016106d7602791396101a9565b9392505050565b6100ea8161022260201b6100551760201c565b6101515760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b806101887f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61023160201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6060600080856001600160a01b0316856040516101c691906103e7565b600060405180830381855af49150503d8060008114610201576040519150601f19603f3d011682016040523d82523d6000602084013e610206565b606091505b50909250905061021886838387610234565b9695505050505050565b6001600160a01b03163b151590565b90565b606083156102a357825160000361029c576001600160a01b0385163b61029c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610148565b50816102ad565b6102ad83836102b5565b949350505050565b8151156102c55781518083602001fd5b8060405162461bcd60e51b81526004016101489190610403565b634e487b7160e01b600052604160045260246000fd5b60005b838110156103105781810151838201526020016102f8565b50506000910152565b6000806040838503121561032c57600080fd5b82516001600160a01b038116811461034357600080fd5b60208401519092506001600160401b038082111561036057600080fd5b818501915085601f83011261037457600080fd5b815181811115610386576103866102df565b604051601f8201601f19908116603f011681019083821181831017156103ae576103ae6102df565b816040528281528860208487010111156103c757600080fd5b6103d88360208301602088016102f5565b80955050505050509250929050565b600082516103f98184602087016102f5565b9190910192915050565b60208152600082518060208401526104228160408501602087016102f5565b601f01601f19169190910160400192915050565b610292806104456000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b61009f565b565b606061004e838360405180606001604052806027815260200161025f602791396100c3565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e8080156100be573d6000f35b3d6000fd5b6060600080856001600160a01b0316856040516100e0919061020f565b600060405180830381855af49150503d806000811461011b576040519150601f19603f3d011682016040523d82523d6000602084013e610120565b606091505b50915091506101318683838761013b565b9695505050505050565b606083156101af5782516000036101a8576001600160a01b0385163b6101a85760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b50816101b9565b6101b983836101c1565b949350505050565b8151156101d15781518083602001fd5b8060405162461bcd60e51b815260040161019f919061022b565b60005b838110156102065781810151838201526020016101ee565b50506000910152565b600082516102218184602087016101eb565b9190910192915050565b602081526000825180602084015261024a8160408501602087016101eb565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a60a06040523060805234801561001457600080fd5b5061001d610022565b6100e1565b600054610100900460ff161561008e5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116146100df576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6080516110fb610118600039600081816102de015281816103680152818161045e015281816104e301526105cd01526110fb6000f3fe6080604052600436106100bc5760003560e01c80634f1ef286116100745780636accab8c1161004e5780636accab8c146101d3578063c4d66de8146101ea578063c9c4bfca1461020a57600080fd5b80634f1ef2861461018857806352d1902d1461019b5780635c60da1b146101be57600080fd5b80633659cfe6116100a55780633659cfe6146101185780634162169f1461013a57806341de68301461016c57600080fd5b806301ffc9a7146100c15780632ae9c600146100f6575b600080fd5b3480156100cd57600080fd5b506100e16100dc366004610e33565b61023e565b60405190151581526020015b60405180910390f35b34801561010257600080fd5b5061010b6102aa565b6040516100ed9190610e5d565b34801561012457600080fd5b50610138610133366004610ea6565b6102d4565b005b34801561014657600080fd5b5060c9546001600160a01b03165b6040516001600160a01b0390911681526020016100ed565b34801561017857600080fd5b5060006040516100ed9190610ec3565b610138610196366004610f01565b610454565b3480156101a757600080fd5b506101b06105c0565b6040519081526020016100ed565b3480156101ca57600080fd5b50610154610685565b3480156101df57600080fd5b506101b061012d5481565b3480156101f657600080fd5b50610138610205366004610ea6565b6106bd565b34801561021657600080fd5b506101b07f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f581565b60006001600160e01b0319821663041de68360e41b148061026e57506001600160e01b03198216621574e360e91b145b8061028957506001600160e01b031982166352d1902d60e01b145b806102a457506301ffc9a760e01b6001600160e01b03198316145b92915050565b6102b2610e15565b5060408051606081018252600181526004602082015260009181019190915290565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036103665760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b60648201526084015b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166103c17f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b03161461042c5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b606482015260840161035d565b610435816107e4565b6040805160008082526020820190925261045191839190610821565b50565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036104e15760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b606482015260840161035d565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661053c7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b0316146105a75760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b606482015260840161035d565b6105b0826107e4565b6105bc82826001610821565b5050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106605760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000606482015260840161035d565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b60006106b87f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b600054610100900460ff16158080156106dd5750600054600160ff909116105b806106f75750303b1580156106f7575060005460ff166001145b6107695760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161035d565b6000805460ff19166001179055801561078c576000805461ff0019166101001790555b610795826109c6565b600161012d5580156105bc576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b60c9547f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f5906105bc906001600160a01b0316303384600036610a3a565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156108595761085483610af6565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156108b3575060408051601f3d908101601f191682019092526108b091810190610fc5565b60015b6109255760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201527f6f6e206973206e6f742055555053000000000000000000000000000000000000606482015260840161035d565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146109ba5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f7860448201527f6961626c65555549440000000000000000000000000000000000000000000000606482015260840161035d565b50610854838383610bc1565b600054610100900460ff16610a315760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840161035d565b61045181610bec565b604051637ef7c88360e11b81526001600160a01b0387169063fdef910690610a6e9088908890889088908890600401610fde565b602060405180830381865afa158015610a8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aaf9190611032565b610aee57604051630cb6f8ed60e21b81526001600160a01b0380881660048301528087166024830152851660448201526064810184905260840161035d565b505050505050565b6001600160a01b0381163b610b735760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e747261637400000000000000000000000000000000000000606482015260840161035d565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610bca83610c86565b600082511180610bd75750805b1561085457610be68383610cc6565b50505050565b600054610100900460ff16610c575760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840161035d565b60c9805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610c8f81610af6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060610ceb83836040518060600160405280602781526020016110c860279139610cf2565b9392505050565b6060600080856001600160a01b031685604051610d0f9190611078565b600060405180830381855af49150503d8060008114610d4a576040519150601f19603f3d011682016040523d82523d6000602084013e610d4f565b606091505b5091509150610d6086838387610d6a565b9695505050505050565b60608315610dd9578251600003610dd2576001600160a01b0385163b610dd25760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161035d565b5081610de3565b610de38383610deb565b949350505050565b815115610dfb5781518083602001fd5b8060405162461bcd60e51b815260040161035d9190611094565b60405180606001604052806003906020820280368337509192915050565b600060208284031215610e4557600080fd5b81356001600160e01b031981168114610ceb57600080fd5b60608101818360005b6003811015610e8857815160ff16835260209283019290910190600101610e66565b50505092915050565b6001600160a01b038116811461045157600080fd5b600060208284031215610eb857600080fd5b8135610ceb81610e91565b6020810160038310610ee557634e487b7160e01b600052602160045260246000fd5b91905290565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215610f1457600080fd5b8235610f1f81610e91565b9150602083013567ffffffffffffffff80821115610f3c57600080fd5b818501915085601f830112610f5057600080fd5b813581811115610f6257610f62610eeb565b604051601f8201601f19908116603f01168101908382118183101715610f8a57610f8a610eeb565b81604052828152886020848701011115610fa357600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b600060208284031215610fd757600080fd5b5051919050565b60006001600160a01b03808816835280871660208401525084604083015260806060830152826080830152828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b60006020828403121561104457600080fd5b81518015158114610ceb57600080fd5b60005b8381101561106f578181015183820152602001611057565b50506000910152565b6000825161108a818460208701611054565b9190910192915050565b60208152600082518060208401526110b3816040850160208701611054565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a","opcodes":"PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x1D SWAP1 PUSH2 0x4B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH2 0x39 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x80 MSTORE PUSH2 0x58 JUMP JUMPDEST PUSH2 0x1213 DUP1 PUSH2 0x1260 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH2 0x11E7 PUSH2 0x79 PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH1 0xD2 ADD MSTORE PUSH2 0x2D3 ADD MSTORE PUSH2 0x11E7 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH3 0x7B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9CB0A124 GT PUSH3 0x56 JUMPI DUP1 PUSH4 0x9CB0A124 EQ PUSH3 0xFD JUMPI DUP1 PUSH4 0xA8A9C29E EQ PUSH3 0x123 JUMPI DUP1 PUSH4 0xF10832F1 EQ PUSH3 0x14A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH3 0x80 JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH3 0xAC JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH3 0xC5 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x97 PUSH3 0x91 CALLDATASIZE PUSH1 0x4 PUSH3 0x5F8 JUMP JUMPDEST PUSH3 0x171 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0xB6 PUSH3 0x1C4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0xA3 SWAP2 SWAP1 PUSH3 0x624 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH3 0xA3 JUMP JUMPDEST PUSH3 0x114 PUSH3 0x10E CALLDATASIZE PUSH1 0x4 PUSH3 0x68A JUMP JUMPDEST PUSH3 0x1F0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0xA3 SWAP2 SWAP1 PUSH3 0x75B JUMP JUMPDEST PUSH3 0x13A PUSH3 0x134 CALLDATASIZE PUSH1 0x4 PUSH3 0x7A8 JUMP JUMPDEST PUSH3 0x208 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0xA3 SWAP3 SWAP2 SWAP1 PUSH3 0x8F7 JUMP JUMPDEST PUSH3 0x161 PUSH3 0x15B CALLDATASIZE PUSH1 0x4 PUSH3 0x93F JUMP JUMPDEST PUSH3 0x24F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0xA3 SWAP3 SWAP2 SWAP1 PUSH3 0xA0D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x99718B5 PUSH1 0xE4 SHL EQ DUP1 PUSH3 0x1A2 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH3 0x1BE JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH3 0x1CE PUSH3 0x5CC JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH3 0x201 PUSH1 0x0 PUSH1 0x1 DUP1 PUSH3 0x333 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH3 0x228 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x98990C5 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH3 0x26F PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 PUSH1 0x44 ADD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x189ACDBD PUSH1 0xE3 SHL OR SWAP1 MSTORE SWAP1 POP PUSH3 0x305 DUP2 PUSH3 0x2F5 PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH3 0x4CC JUMP JUMPDEST SWAP3 POP PUSH3 0x313 PUSH1 0x1 PUSH3 0x508 JUMP JUMPDEST DUP3 MSTORE PUSH3 0x324 PUSH1 0x0 PUSH1 0x1 DUP2 PUSH3 0x333 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP SWAP1 SWAP4 SWAP1 SWAP3 POP SWAP1 POP JUMP JUMPDEST PUSH1 0x60 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH3 0x369 JUMPI PUSH1 0x40 MLOAD PUSH4 0x3A4013CD PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0x375 DUP5 DUP5 PUSH3 0xA4F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x399 JUMPI PUSH3 0x399 PUSH3 0x929 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH3 0x3F4 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD DUP3 SWAP1 MSTORE SWAP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 DUP3 ADD MSTORE DUP3 MSTORE PUSH1 0x0 NOT SWAP1 SWAP3 ADD SWAP2 ADD DUP2 PUSH3 0x3B8 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP DUP4 JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT ISZERO PUSH3 0x4C4 JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 DUP5 PUSH1 0x2 DUP2 GT ISZERO PUSH3 0x434 JUMPI PUSH3 0x434 PUSH3 0x6DE JUMP JUMPDEST DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x60 DUP3 ADD MSTORE PUSH32 0xA280EEC51AB8E1BC4B6B0C1B7F1BDE785761B787A49DB404E3E9338ED9B016EF PUSH1 0x80 SWAP1 SWAP2 ADD MSTORE DUP3 PUSH3 0x487 DUP8 DUP5 PUSH3 0xA4F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MLOAD DUP2 LT PUSH3 0x4A3 JUMPI PUSH3 0x4A3 PUSH3 0xA79 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP DUP1 DUP1 PUSH3 0x4BB SWAP1 PUSH3 0xA8F JUMP JUMPDEST SWAP2 POP POP PUSH3 0x3F9 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH3 0x4DE SWAP1 PUSH3 0x5EA JUMP JUMPDEST PUSH3 0x4EB SWAP3 SWAP2 SWAP1 PUSH3 0xAB8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH3 0x4C4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x60 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x52F JUMPI PUSH3 0x52F PUSH3 0x929 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH3 0x559 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT ISZERO PUSH3 0x5C6 JUMPI DUP1 DUP3 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MLOAD DUP2 LT PUSH3 0x599 JUMPI PUSH3 0x599 PUSH3 0xA79 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE DUP1 PUSH3 0x5BD DUP2 PUSH3 0xA8F JUMP JUMPDEST SWAP2 POP POP PUSH3 0x55F JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x6FE DUP1 PUSH3 0xADD DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x60B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH3 0x201 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH3 0x651 JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH3 0x62D JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x672 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x5C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x69E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x6A9 DUP4 PUSH3 0x65A JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x6C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x6D4 DUP6 DUP3 DUP7 ADD PUSH3 0x677 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP2 MLOAD PUSH1 0x3 DUP2 LT PUSH3 0x717 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP4 MSTORE POP PUSH1 0x20 DUP2 DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP1 DUP4 ADD MLOAD DUP3 AND SWAP1 DUP5 ADD MSTORE PUSH1 0x60 DUP1 DUP4 ADD MLOAD SWAP1 SWAP2 AND SWAP1 DUP4 ADD MSTORE PUSH1 0x80 SWAP1 DUP2 ADD MLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x79C JUMPI PUSH3 0x78D DUP4 DUP6 MLOAD PUSH3 0x6F4 JUMP JUMPDEST SWAP4 DUP6 ADD SWAP4 SWAP3 POP PUSH1 0x1 ADD PUSH3 0x777 JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH3 0x7BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x7C9 DUP5 PUSH3 0x65A JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH3 0x7E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x7FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x80C DUP7 DUP3 DUP8 ADD PUSH3 0x677 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x83E JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD DUP3 ADD MSTORE ADD PUSH3 0x820 JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x20 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x20 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x40 DUP1 DUP5 MSTORE DUP2 MLOAD SWAP1 DUP5 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x20 SWAP2 SWAP1 DUP3 ADD SWAP1 PUSH1 0x60 DUP7 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x8A5 JUMPI DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH3 0x87E JUMP JUMPDEST POP POP DUP5 DUP4 ADD MLOAD DUP7 DUP3 SUB DUP8 DUP6 ADD MSTORE DUP1 MLOAD DUP1 DUP4 MSTORE SWAP1 DUP5 ADD SWAP3 POP PUSH1 0x0 SWAP2 DUP5 ADD SWAP1 JUMPDEST DUP1 DUP4 LT ISZERO PUSH3 0x8EC JUMPI PUSH3 0x8D9 DUP3 DUP6 MLOAD PUSH3 0x6F4 JUMP JUMPDEST SWAP2 POP DUP5 DUP5 ADD SWAP4 POP PUSH1 0x1 DUP4 ADD SWAP3 POP PUSH3 0x8C3 JUMP JUMPDEST POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 PUSH3 0x90C PUSH1 0x40 DUP4 ADD DUP6 PUSH3 0x816 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 ADD MSTORE PUSH3 0x920 DUP2 DUP6 PUSH3 0x85E JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x953 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x95E DUP4 PUSH3 0x65A JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH3 0x97C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x991 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH3 0x9A6 JUMPI PUSH3 0x9A6 PUSH3 0x929 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH3 0x9D1 JUMPI PUSH3 0x9D1 PUSH3 0x929 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH3 0x9EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH3 0xA31 PUSH1 0x40 DUP4 ADD DUP5 PUSH3 0x85E JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND DUP3 DUP3 AND SUB SWAP1 DUP1 DUP3 GT ISZERO PUSH3 0xA72 JUMPI PUSH3 0xA72 PUSH3 0xA39 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND DUP2 DUP2 SUB PUSH3 0xAAE JUMPI PUSH3 0xAAE PUSH3 0xA39 JUMP JUMPDEST PUSH1 0x1 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH3 0xA31 PUSH1 0x40 DUP4 ADD DUP5 PUSH3 0x816 JUMP INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH2 0x6FE CODESIZE SUB DUP1 PUSH2 0x6FE DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x22 SWAP2 PUSH2 0x319 JUMP JUMPDEST PUSH2 0x2E DUP3 DUP3 PUSH1 0x0 PUSH2 0x35 JUMP JUMPDEST POP POP PUSH2 0x436 JUMP JUMPDEST PUSH2 0x3E DUP4 PUSH2 0x6B JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD GT DUP1 PUSH2 0x4B JUMPI POP DUP1 JUMPDEST ISZERO PUSH2 0x66 JUMPI PUSH2 0x64 DUP4 DUP4 PUSH2 0xAB PUSH1 0x20 SHL PUSH2 0x29 OR PUSH1 0x20 SHR JUMP JUMPDEST POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x74 DUP2 PUSH2 0xD7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xD0 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x6D7 PUSH1 0x27 SWAP2 CODECOPY PUSH2 0x1A9 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xEA DUP2 PUSH2 0x222 PUSH1 0x20 SHL PUSH2 0x55 OR PUSH1 0x20 SHR JUMP JUMPDEST PUSH2 0x151 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313936373A206E657720696D706C656D656E746174696F6E206973206E PUSH1 0x44 DUP3 ADD MSTORE PUSH13 0x1BDD08184818DBDB9D1C9858DD PUSH1 0x9A SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH2 0x188 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC PUSH1 0x0 SHL PUSH2 0x231 PUSH1 0x20 SHL PUSH2 0x64 OR PUSH1 0x20 SHR JUMP JUMPDEST DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0x1C6 SWAP2 SWAP1 PUSH2 0x3E7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x201 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x206 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x218 DUP7 DUP4 DUP4 DUP8 PUSH2 0x234 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x2A3 JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0x29C JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0x29C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x148 JUMP JUMPDEST POP DUP2 PUSH2 0x2AD JUMP JUMPDEST PUSH2 0x2AD DUP4 DUP4 PUSH2 0x2B5 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x2C5 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x148 SWAP2 SWAP1 PUSH2 0x403 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x310 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2F8 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x32C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x343 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x360 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x374 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x386 JUMPI PUSH2 0x386 PUSH2 0x2DF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x3AE JUMPI PUSH2 0x3AE PUSH2 0x2DF JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x3C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3D8 DUP4 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x2F5 JUMP JUMPDEST DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x3F9 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x2F5 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x422 DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x2F5 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x292 DUP1 PUSH2 0x445 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLDATASIZE PUSH2 0x13 JUMPI PUSH2 0x11 PUSH2 0x17 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x11 JUMPDEST PUSH2 0x27 PUSH2 0x22 PUSH2 0x67 JUMP JUMPDEST PUSH2 0x9F JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x60 PUSH2 0x4E DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x25F PUSH1 0x27 SWAP2 CODECOPY PUSH2 0xC3 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9A PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 DUP1 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE PUSH1 0x0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH2 0xBE JUMPI RETURNDATASIZE PUSH1 0x0 RETURN JUMPDEST RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0xE0 SWAP2 SWAP1 PUSH2 0x20F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x11B JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x120 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x131 DUP7 DUP4 DUP4 DUP8 PUSH2 0x13B JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x1AF JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0x1A8 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0x1A8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP DUP2 PUSH2 0x1B9 JUMP JUMPDEST PUSH2 0x1B9 DUP4 DUP4 PUSH2 0x1C1 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x1D1 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x19F SWAP2 SWAP1 PUSH2 0x22B JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x206 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1EE JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x221 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x1EB JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x24A DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x1EB JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A164 PUSH20 0x6F6C6343000811000A416464726573733A206C6F PUSH24 0x2D6C6576656C2064656C65676174652063616C6C20666169 PUSH13 0x6564A164736F6C634300081100 EXP PUSH1 0xA0 PUSH1 0x40 MSTORE ADDRESS PUSH1 0x80 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x14 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1D PUSH2 0x22 JUMP JUMPDEST PUSH2 0xE1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x8E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x27 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320696E697469 PUSH1 0x44 DUP3 ADD MSTORE PUSH7 0x616C697A696E67 PUSH1 0xC8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xFF SWAP1 DUP2 AND EQ PUSH2 0xDF JUMPI PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH2 0x10FB PUSH2 0x118 PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH2 0x2DE ADD MSTORE DUP2 DUP2 PUSH2 0x368 ADD MSTORE DUP2 DUP2 PUSH2 0x45E ADD MSTORE DUP2 DUP2 PUSH2 0x4E3 ADD MSTORE PUSH2 0x5CD ADD MSTORE PUSH2 0x10FB PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xBC JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x4F1EF286 GT PUSH2 0x74 JUMPI DUP1 PUSH4 0x6ACCAB8C GT PUSH2 0x4E JUMPI DUP1 PUSH4 0x6ACCAB8C EQ PUSH2 0x1D3 JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0x1EA JUMPI DUP1 PUSH4 0xC9C4BFCA EQ PUSH2 0x20A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x188 JUMPI DUP1 PUSH4 0x52D1902D EQ PUSH2 0x19B JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0x1BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x3659CFE6 GT PUSH2 0xA5 JUMPI DUP1 PUSH4 0x3659CFE6 EQ PUSH2 0x118 JUMPI DUP1 PUSH4 0x4162169F EQ PUSH2 0x13A JUMPI DUP1 PUSH4 0x41DE6830 EQ PUSH2 0x16C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xC1 JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0xF6 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xCD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xE1 PUSH2 0xDC CALLDATASIZE PUSH1 0x4 PUSH2 0xE33 JUMP JUMPDEST PUSH2 0x23E JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x102 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x10B PUSH2 0x2AA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xED SWAP2 SWAP1 PUSH2 0xE5D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x124 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x138 PUSH2 0x133 CALLDATASIZE PUSH1 0x4 PUSH2 0xEA6 JUMP JUMPDEST PUSH2 0x2D4 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x146 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xC9 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xED JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x178 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 PUSH1 0x40 MLOAD PUSH2 0xED SWAP2 SWAP1 PUSH2 0xEC3 JUMP JUMPDEST PUSH2 0x138 PUSH2 0x196 CALLDATASIZE PUSH1 0x4 PUSH2 0xF01 JUMP JUMPDEST PUSH2 0x454 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1B0 PUSH2 0x5C0 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xED JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x154 PUSH2 0x685 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1B0 PUSH2 0x12D SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x138 PUSH2 0x205 CALLDATASIZE PUSH1 0x4 PUSH2 0xEA6 JUMP JUMPDEST PUSH2 0x6BD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x216 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1B0 PUSH32 0x821B6E3A557148015A918C89E5D092E878A69854A2D1A410635F771BD5A8A3F5 DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x41DE683 PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x26E JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x289 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x52D1902D PUSH1 0xE0 SHL EQ JUMPDEST DUP1 PUSH2 0x2A4 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x2B2 PUSH2 0xE15 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x366 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x19195B1959D85D1958D85B1B PUSH1 0xA2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3C1 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x42C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x6163746976652070726F7879 PUSH1 0xA0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x35D JUMP JUMPDEST PUSH2 0x435 DUP2 PUSH2 0x7E4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x451 SWAP2 DUP4 SWAP2 SWAP1 PUSH2 0x821 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x4E1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x19195B1959D85D1958D85B1B PUSH1 0xA2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x35D JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x53C PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x5A7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x6163746976652070726F7879 PUSH1 0xA0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x35D JUMP JUMPDEST PUSH2 0x5B0 DUP3 PUSH2 0x7E4 JUMP JUMPDEST PUSH2 0x5BC DUP3 DUP3 PUSH1 0x1 PUSH2 0x821 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x660 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x38 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x555550535570677261646561626C653A206D757374206E6F742062652063616C PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6C6564207468726F7567682064656C656761746563616C6C0000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x35D JUMP JUMPDEST POP PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6B8 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 DUP1 ISZERO PUSH2 0x6DD JUMPI POP PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xFF SWAP1 SWAP2 AND LT JUMPDEST DUP1 PUSH2 0x6F7 JUMPI POP ADDRESS EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x6F7 JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF AND PUSH1 0x1 EQ JUMPDEST PUSH2 0x769 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x647920696E697469616C697A6564000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x35D JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE DUP1 ISZERO PUSH2 0x78C JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND PUSH2 0x100 OR SWAP1 SSTORE JUMPDEST PUSH2 0x795 DUP3 PUSH2 0x9C6 JUMP JUMPDEST PUSH1 0x1 PUSH2 0x12D SSTORE DUP1 ISZERO PUSH2 0x5BC JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0xC9 SLOAD PUSH32 0x821B6E3A557148015A918C89E5D092E878A69854A2D1A410635F771BD5A8A3F5 SWAP1 PUSH2 0x5BC SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ADDRESS CALLER DUP5 PUSH1 0x0 CALLDATASIZE PUSH2 0xA3A JUMP JUMPDEST PUSH32 0x4910FDFA16FED3260ED0E7147F7CC6DA11A60208B5B9406D12A635614FFD9143 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x859 JUMPI PUSH2 0x854 DUP4 PUSH2 0xAF6 JUMP JUMPDEST POP POP POP JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x52D1902D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x8B3 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x8B0 SWAP2 DUP2 ADD SWAP1 PUSH2 0xFC5 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x925 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524331393637557067726164653A206E657720696D706C656D656E74617469 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F6E206973206E6F742055555053000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x35D JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC DUP2 EQ PUSH2 0x9BA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524331393637557067726164653A20756E737570706F727465642070726F78 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6961626C65555549440000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x35D JUMP JUMPDEST POP PUSH2 0x854 DUP4 DUP4 DUP4 PUSH2 0xBC1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0xA31 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x35D JUMP JUMPDEST PUSH2 0x451 DUP2 PUSH2 0xBEC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x7EF7C883 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0xFDEF9106 SWAP1 PUSH2 0xA6E SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0xFDE JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xA8B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xAAF SWAP2 SWAP1 PUSH2 0x1032 JUMP JUMPDEST PUSH2 0xAEE JUMPI PUSH1 0x40 MLOAD PUSH4 0xCB6F8ED PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND PUSH1 0x4 DUP4 ADD MSTORE DUP1 DUP8 AND PUSH1 0x24 DUP4 ADD MSTORE DUP6 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x84 ADD PUSH2 0x35D JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND EXTCODESIZE PUSH2 0xB73 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313936373A206E657720696D706C656D656E746174696F6E206973206E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F74206120636F6E747261637400000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x35D JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xBCA DUP4 PUSH2 0xC86 JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD GT DUP1 PUSH2 0xBD7 JUMPI POP DUP1 JUMPDEST ISZERO PUSH2 0x854 JUMPI PUSH2 0xBE6 DUP4 DUP4 PUSH2 0xCC6 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0xC57 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x35D JUMP JUMPDEST PUSH1 0xC9 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xC8F DUP2 PUSH2 0xAF6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xCEB DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x10C8 PUSH1 0x27 SWAP2 CODECOPY PUSH2 0xCF2 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0xD0F SWAP2 SWAP1 PUSH2 0x1078 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xD4A JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xD4F JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0xD60 DUP7 DUP4 DUP4 DUP8 PUSH2 0xD6A JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0xDD9 JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0xDD2 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0xDD2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x35D JUMP JUMPDEST POP DUP2 PUSH2 0xDE3 JUMP JUMPDEST PUSH2 0xDE3 DUP4 DUP4 PUSH2 0xDEB JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0xDFB JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x35D SWAP2 SWAP1 PUSH2 0x1094 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xE45 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0xCEB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0xE88 JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0xE66 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x451 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xEB8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xCEB DUP2 PUSH2 0xE91 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH1 0x3 DUP4 LT PUSH2 0xEE5 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 SWAP1 MSTORE SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xF14 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0xF1F DUP2 PUSH2 0xE91 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xF3C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xF50 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0xF62 JUMPI PUSH2 0xF62 PUSH2 0xEEB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0xF8A JUMPI PUSH2 0xF8A PUSH2 0xEEB JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0xFA3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xFD7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND DUP4 MSTORE DUP1 DUP8 AND PUSH1 0x20 DUP5 ADD MSTORE POP DUP5 PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x80 PUSH1 0x60 DUP4 ADD MSTORE DUP3 PUSH1 0x80 DUP4 ADD MSTORE DUP3 DUP5 PUSH1 0xA0 DUP5 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0xA0 DUP5 DUP5 ADD ADD MSTORE PUSH1 0xA0 PUSH1 0x1F NOT PUSH1 0x1F DUP6 ADD AND DUP4 ADD ADD SWAP1 POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1044 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xCEB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x106F JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1057 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x108A DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x1054 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x10B3 DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x1054 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A164 PUSH20 0x6F6C6343000811000A0000000000000000000000 ","sourceMap":"816:1588:54:-:0;;;973:87;;;;;;;;;;1018:37;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1605:32:83;;;816:1588:54;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@deployUUPSProxy_14563":{"entryPoint":1228,"id":14563,"parameterSlots":2,"returnSlots":1},"@implementation_14447":{"entryPoint":null,"id":14447,"parameterSlots":0,"returnSlots":1},"@mockHelpers_11760":{"entryPoint":1288,"id":11760,"parameterSlots":1,"returnSlots":1},"@mockPermissions_11721":{"entryPoint":819,"id":11721,"parameterSlots":3,"returnSlots":1},"@prepareInstallation_12016":{"entryPoint":591,"id":12016,"parameterSlots":2,"returnSlots":2},"@prepareUninstallation_12071":{"entryPoint":496,"id":12071,"parameterSlots":2,"returnSlots":1},"@prepareUpdate_12043":{"entryPoint":520,"id":12043,"parameterSlots":3,"returnSlots":2},"@protocolVersion_14765":{"entryPoint":452,"id":14765,"parameterSlots":0,"returnSlots":1},"@supportsInterface_14438":{"entryPoint":369,"id":14438,"parameterSlots":1,"returnSlots":1},"@supportsInterface_9730":{"entryPoint":null,"id":9730,"parameterSlots":1,"returnSlots":1},"abi_decode_address":{"entryPoint":1626,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_struct_SetupPayload_calldata":{"entryPoint":1655,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_bytes_memory_ptr":{"entryPoint":2367,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_struct$_SetupPayload_$14224_calldata_ptr":{"entryPoint":1674,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_uint16t_struct$_SetupPayload_$14224_calldata_ptr":{"entryPoint":1960,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_bytes4":{"entryPoint":1528,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encodeUpdatedPos_struct_MultiTargetPermission":{"entryPoint":1780,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_bytes":{"entryPoint":2070,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_struct_PreparedSetupData":{"entryPoint":2142,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address_t_bytes_memory_ptr__to_t_address_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":2744,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_address_t_struct$_PreparedSetupData_$14216_memory_ptr__to_t_address_t_struct$_PreparedSetupData_$14216_memory_ptr__fromStack_reversed":{"entryPoint":2573,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr__fromStack_reversed":{"entryPoint":1883,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed":{"entryPoint":1572,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$14216_memory_ptr__to_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$14216_memory_ptr__fromStack_reversed":{"entryPoint":2295,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_contract$_IDAO_$10865__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_rational_0_by_1_t_uint16__to_t_uint16_t_uint16__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"checked_sub_t_uint160":{"entryPoint":2639,"id":null,"parameterSlots":2,"returnSlots":1},"increment_t_uint160":{"entryPoint":2703,"id":null,"parameterSlots":1,"returnSlots":1},"panic_error_0x11":{"entryPoint":2617,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x21":{"entryPoint":1758,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x32":{"entryPoint":2681,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":2345,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:9417:92","statements":[{"nodeType":"YulBlock","src":"6:3:92","statements":[]},{"body":{"nodeType":"YulBlock","src":"83:217:92","statements":[{"body":{"nodeType":"YulBlock","src":"129:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"138:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"141:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"131:6:92"},"nodeType":"YulFunctionCall","src":"131:12:92"},"nodeType":"YulExpressionStatement","src":"131:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"104:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"113:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"100:3:92"},"nodeType":"YulFunctionCall","src":"100:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"125:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"96:3:92"},"nodeType":"YulFunctionCall","src":"96:32:92"},"nodeType":"YulIf","src":"93:52:92"},{"nodeType":"YulVariableDeclaration","src":"154:36:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"180:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"167:12:92"},"nodeType":"YulFunctionCall","src":"167:23:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"158:5:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"254:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"263:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"266:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"256:6:92"},"nodeType":"YulFunctionCall","src":"256:12:92"},"nodeType":"YulExpressionStatement","src":"256:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"212:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"223:5:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"234:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"239:10:92","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"230:3:92"},"nodeType":"YulFunctionCall","src":"230:20:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"219:3:92"},"nodeType":"YulFunctionCall","src":"219:32:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"209:2:92"},"nodeType":"YulFunctionCall","src":"209:43:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"202:6:92"},"nodeType":"YulFunctionCall","src":"202:51:92"},"nodeType":"YulIf","src":"199:71:92"},{"nodeType":"YulAssignment","src":"279:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"289:5:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"279:6:92"}]}]},"name":"abi_decode_tuple_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"49:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"60:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"72:6:92","type":""}],"src":"14:286:92"},{"body":{"nodeType":"YulBlock","src":"400:92:92","statements":[{"nodeType":"YulAssignment","src":"410:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"422:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"433:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"418:3:92"},"nodeType":"YulFunctionCall","src":"418:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"410:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"452:9:92"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"477:6:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"470:6:92"},"nodeType":"YulFunctionCall","src":"470:14:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"463:6:92"},"nodeType":"YulFunctionCall","src":"463:22:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"445:6:92"},"nodeType":"YulFunctionCall","src":"445:41:92"},"nodeType":"YulExpressionStatement","src":"445:41:92"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"369:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"380:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"391:4:92","type":""}],"src":"305:187:92"},{"body":{"nodeType":"YulBlock","src":"640:358:92","statements":[{"nodeType":"YulAssignment","src":"650:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"662:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"673:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"658:3:92"},"nodeType":"YulFunctionCall","src":"658:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"650:4:92"}]},{"nodeType":"YulVariableDeclaration","src":"685:20:92","value":{"name":"headStart","nodeType":"YulIdentifier","src":"696:9:92"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"689:3:92","type":""}]},{"nodeType":"YulAssignment","src":"714:16:92","value":{"name":"headStart","nodeType":"YulIdentifier","src":"721:9:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"714:3:92"}]},{"nodeType":"YulVariableDeclaration","src":"739:20:92","value":{"name":"value0","nodeType":"YulIdentifier","src":"753:6:92"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"743:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"768:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"777:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"772:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"834:158:92","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"855:3:92"},{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"870:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"864:5:92"},"nodeType":"YulFunctionCall","src":"864:13:92"},{"kind":"number","nodeType":"YulLiteral","src":"879:4:92","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"860:3:92"},"nodeType":"YulFunctionCall","src":"860:24:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"848:6:92"},"nodeType":"YulFunctionCall","src":"848:37:92"},"nodeType":"YulExpressionStatement","src":"848:37:92"},{"nodeType":"YulVariableDeclaration","src":"898:14:92","value":{"kind":"number","nodeType":"YulLiteral","src":"908:4:92","type":"","value":"0x20"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"902:2:92","type":""}]},{"nodeType":"YulAssignment","src":"925:19:92","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"936:3:92"},{"name":"_1","nodeType":"YulIdentifier","src":"941:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"932:3:92"},"nodeType":"YulFunctionCall","src":"932:12:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"925:3:92"}]},{"nodeType":"YulAssignment","src":"957:25:92","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"971:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"979:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"967:3:92"},"nodeType":"YulFunctionCall","src":"967:15:92"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"957:6:92"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"798:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"801:4:92","type":"","value":"0x03"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"795:2:92"},"nodeType":"YulFunctionCall","src":"795:11:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"807:18:92","statements":[{"nodeType":"YulAssignment","src":"809:14:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"818:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"821:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"814:3:92"},"nodeType":"YulFunctionCall","src":"814:9:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"809:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"791:3:92","statements":[]},"src":"787:205:92"}]},"name":"abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"609:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"620:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"631:4:92","type":""}],"src":"497:501:92"},{"body":{"nodeType":"YulBlock","src":"1104:125:92","statements":[{"nodeType":"YulAssignment","src":"1114:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1126:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1137:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1122:3:92"},"nodeType":"YulFunctionCall","src":"1122:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1114:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1156:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1171:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"1179:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1167:3:92"},"nodeType":"YulFunctionCall","src":"1167:55:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1149:6:92"},"nodeType":"YulFunctionCall","src":"1149:74:92"},"nodeType":"YulExpressionStatement","src":"1149:74:92"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1073:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1084:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1095:4:92","type":""}],"src":"1003:226:92"},{"body":{"nodeType":"YulBlock","src":"1283:147:92","statements":[{"nodeType":"YulAssignment","src":"1293:29:92","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1315:6:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1302:12:92"},"nodeType":"YulFunctionCall","src":"1302:20:92"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"1293:5:92"}]},{"body":{"nodeType":"YulBlock","src":"1408:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1417:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1420:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1410:6:92"},"nodeType":"YulFunctionCall","src":"1410:12:92"},"nodeType":"YulExpressionStatement","src":"1410:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1344:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1355:5:92"},{"kind":"number","nodeType":"YulLiteral","src":"1362:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1351:3:92"},"nodeType":"YulFunctionCall","src":"1351:54:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1341:2:92"},"nodeType":"YulFunctionCall","src":"1341:65:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1334:6:92"},"nodeType":"YulFunctionCall","src":"1334:73:92"},"nodeType":"YulIf","src":"1331:93:92"}]},"name":"abi_decode_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"1262:6:92","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"1273:5:92","type":""}],"src":"1234:196:92"},{"body":{"nodeType":"YulBlock","src":"1510:85:92","statements":[{"body":{"nodeType":"YulBlock","src":"1549:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1558:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1561:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1551:6:92"},"nodeType":"YulFunctionCall","src":"1551:12:92"},"nodeType":"YulExpressionStatement","src":"1551:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"end","nodeType":"YulIdentifier","src":"1531:3:92"},{"name":"offset","nodeType":"YulIdentifier","src":"1536:6:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1527:3:92"},"nodeType":"YulFunctionCall","src":"1527:16:92"},{"kind":"number","nodeType":"YulLiteral","src":"1545:2:92","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1523:3:92"},"nodeType":"YulFunctionCall","src":"1523:25:92"},"nodeType":"YulIf","src":"1520:45:92"},{"nodeType":"YulAssignment","src":"1574:15:92","value":{"name":"offset","nodeType":"YulIdentifier","src":"1583:6:92"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"1574:5:92"}]}]},"name":"abi_decode_struct_SetupPayload_calldata","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"1484:6:92","type":""},{"name":"end","nodeType":"YulTypedName","src":"1492:3:92","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"1500:5:92","type":""}],"src":"1435:160:92"},{"body":{"nodeType":"YulBlock","src":"1720:321:92","statements":[{"body":{"nodeType":"YulBlock","src":"1766:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1775:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1778:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1768:6:92"},"nodeType":"YulFunctionCall","src":"1768:12:92"},"nodeType":"YulExpressionStatement","src":"1768:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1741:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"1750:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1737:3:92"},"nodeType":"YulFunctionCall","src":"1737:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"1762:2:92","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1733:3:92"},"nodeType":"YulFunctionCall","src":"1733:32:92"},"nodeType":"YulIf","src":"1730:52:92"},{"nodeType":"YulAssignment","src":"1791:39:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1820:9:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"1801:18:92"},"nodeType":"YulFunctionCall","src":"1801:29:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1791:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"1839:46:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1870:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1881:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1866:3:92"},"nodeType":"YulFunctionCall","src":"1866:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1853:12:92"},"nodeType":"YulFunctionCall","src":"1853:32:92"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1843:6:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"1928:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1937:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1940:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1930:6:92"},"nodeType":"YulFunctionCall","src":"1930:12:92"},"nodeType":"YulExpressionStatement","src":"1930:12:92"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1900:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"1908:18:92","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1897:2:92"},"nodeType":"YulFunctionCall","src":"1897:30:92"},"nodeType":"YulIf","src":"1894:50:92"},{"nodeType":"YulAssignment","src":"1953:82:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2007:9:92"},{"name":"offset","nodeType":"YulIdentifier","src":"2018:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2003:3:92"},"nodeType":"YulFunctionCall","src":"2003:22:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2027:7:92"}],"functionName":{"name":"abi_decode_struct_SetupPayload_calldata","nodeType":"YulIdentifier","src":"1963:39:92"},"nodeType":"YulFunctionCall","src":"1963:72:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1953:6:92"}]}]},"name":"abi_decode_tuple_t_addresst_struct$_SetupPayload_$14224_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1678:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1689:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1701:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1709:6:92","type":""}],"src":"1600:441:92"},{"body":{"nodeType":"YulBlock","src":"2078:95:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2095:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2102:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"2107:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2098:3:92"},"nodeType":"YulFunctionCall","src":"2098:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2088:6:92"},"nodeType":"YulFunctionCall","src":"2088:31:92"},"nodeType":"YulExpressionStatement","src":"2088:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2135:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"2138:4:92","type":"","value":"0x21"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2128:6:92"},"nodeType":"YulFunctionCall","src":"2128:15:92"},"nodeType":"YulExpressionStatement","src":"2128:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2159:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2162:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2152:6:92"},"nodeType":"YulFunctionCall","src":"2152:15:92"},"nodeType":"YulExpressionStatement","src":"2152:15:92"}]},"name":"panic_error_0x21","nodeType":"YulFunctionDefinition","src":"2046:127:92"},{"body":{"nodeType":"YulBlock","src":"2268:606:92","statements":[{"nodeType":"YulVariableDeclaration","src":"2278:23:92","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2294:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2288:5:92"},"nodeType":"YulFunctionCall","src":"2288:13:92"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"2282:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"2339:111:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2360:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2367:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"2372:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2363:3:92"},"nodeType":"YulFunctionCall","src":"2363:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2353:6:92"},"nodeType":"YulFunctionCall","src":"2353:31:92"},"nodeType":"YulExpressionStatement","src":"2353:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2404:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"2407:4:92","type":"","value":"0x21"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2397:6:92"},"nodeType":"YulFunctionCall","src":"2397:15:92"},"nodeType":"YulExpressionStatement","src":"2397:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2432:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2435:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2425:6:92"},"nodeType":"YulFunctionCall","src":"2425:15:92"},"nodeType":"YulExpressionStatement","src":"2425:15:92"}]},"condition":{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"2323:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"2327:1:92","type":"","value":"3"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2320:2:92"},"nodeType":"YulFunctionCall","src":"2320:9:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2313:6:92"},"nodeType":"YulFunctionCall","src":"2313:17:92"},"nodeType":"YulIf","src":"2310:140:92"},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2466:3:92"},{"name":"_1","nodeType":"YulIdentifier","src":"2471:2:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2459:6:92"},"nodeType":"YulFunctionCall","src":"2459:15:92"},"nodeType":"YulExpressionStatement","src":"2459:15:92"},{"nodeType":"YulVariableDeclaration","src":"2483:44:92","value":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2513:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"2521:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2509:3:92"},"nodeType":"YulFunctionCall","src":"2509:17:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2503:5:92"},"nodeType":"YulFunctionCall","src":"2503:24:92"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"2487:12:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2536:52:92","value":{"kind":"number","nodeType":"YulLiteral","src":"2546:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"2540:2:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2608:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"2613:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2604:3:92"},"nodeType":"YulFunctionCall","src":"2604:14:92"},{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"2624:12:92"},{"name":"_2","nodeType":"YulIdentifier","src":"2638:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2620:3:92"},"nodeType":"YulFunctionCall","src":"2620:21:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2597:6:92"},"nodeType":"YulFunctionCall","src":"2597:45:92"},"nodeType":"YulExpressionStatement","src":"2597:45:92"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2662:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"2667:4:92","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2658:3:92"},"nodeType":"YulFunctionCall","src":"2658:14:92"},{"arguments":[{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2688:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"2696:4:92","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2684:3:92"},"nodeType":"YulFunctionCall","src":"2684:17:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2678:5:92"},"nodeType":"YulFunctionCall","src":"2678:24:92"},{"name":"_2","nodeType":"YulIdentifier","src":"2704:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2674:3:92"},"nodeType":"YulFunctionCall","src":"2674:33:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2651:6:92"},"nodeType":"YulFunctionCall","src":"2651:57:92"},"nodeType":"YulExpressionStatement","src":"2651:57:92"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2728:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"2733:4:92","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2724:3:92"},"nodeType":"YulFunctionCall","src":"2724:14:92"},{"arguments":[{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2754:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"2762:4:92","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2750:3:92"},"nodeType":"YulFunctionCall","src":"2750:17:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2744:5:92"},"nodeType":"YulFunctionCall","src":"2744:24:92"},{"name":"_2","nodeType":"YulIdentifier","src":"2770:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2740:3:92"},"nodeType":"YulFunctionCall","src":"2740:33:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2717:6:92"},"nodeType":"YulFunctionCall","src":"2717:57:92"},"nodeType":"YulExpressionStatement","src":"2717:57:92"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2794:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"2799:4:92","type":"","value":"0x80"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2790:3:92"},"nodeType":"YulFunctionCall","src":"2790:14:92"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2816:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"2824:4:92","type":"","value":"0x80"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2812:3:92"},"nodeType":"YulFunctionCall","src":"2812:17:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2806:5:92"},"nodeType":"YulFunctionCall","src":"2806:24:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2783:6:92"},"nodeType":"YulFunctionCall","src":"2783:48:92"},"nodeType":"YulExpressionStatement","src":"2783:48:92"},{"nodeType":"YulAssignment","src":"2840:28:92","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2858:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"2863:4:92","type":"","value":"0xa0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2854:3:92"},"nodeType":"YulFunctionCall","src":"2854:14:92"},"variableNames":[{"name":"updatedPos","nodeType":"YulIdentifier","src":"2840:10:92"}]}]},"name":"abi_encodeUpdatedPos_struct_MultiTargetPermission","nodeType":"YulFunctionDefinition","parameters":[{"name":"value0","nodeType":"YulTypedName","src":"2237:6:92","type":""},{"name":"pos","nodeType":"YulTypedName","src":"2245:3:92","type":""}],"returnVariables":[{"name":"updatedPos","nodeType":"YulTypedName","src":"2253:10:92","type":""}],"src":"2178:696:92"},{"body":{"nodeType":"YulBlock","src":"3110:499:92","statements":[{"nodeType":"YulVariableDeclaration","src":"3120:12:92","value":{"kind":"number","nodeType":"YulLiteral","src":"3130:2:92","type":"","value":"32"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"3124:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3141:32:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3159:9:92"},{"name":"_1","nodeType":"YulIdentifier","src":"3170:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3155:3:92"},"nodeType":"YulFunctionCall","src":"3155:18:92"},"variables":[{"name":"tail_1","nodeType":"YulTypedName","src":"3145:6:92","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3189:9:92"},{"name":"_1","nodeType":"YulIdentifier","src":"3200:2:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3182:6:92"},"nodeType":"YulFunctionCall","src":"3182:21:92"},"nodeType":"YulExpressionStatement","src":"3182:21:92"},{"nodeType":"YulVariableDeclaration","src":"3212:17:92","value":{"name":"tail_1","nodeType":"YulIdentifier","src":"3223:6:92"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"3216:3:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3238:27:92","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3258:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3252:5:92"},"nodeType":"YulFunctionCall","src":"3252:13:92"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"3242:6:92","type":""}]},{"expression":{"arguments":[{"name":"tail_1","nodeType":"YulIdentifier","src":"3281:6:92"},{"name":"length","nodeType":"YulIdentifier","src":"3289:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3274:6:92"},"nodeType":"YulFunctionCall","src":"3274:22:92"},"nodeType":"YulExpressionStatement","src":"3274:22:92"},{"nodeType":"YulAssignment","src":"3305:25:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3316:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3327:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3312:3:92"},"nodeType":"YulFunctionCall","src":"3312:18:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"3305:3:92"}]},{"nodeType":"YulVariableDeclaration","src":"3339:29:92","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3357:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"3365:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3353:3:92"},"nodeType":"YulFunctionCall","src":"3353:15:92"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"3343:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3377:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"3386:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"3381:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"3445:138:92","statements":[{"nodeType":"YulAssignment","src":"3459:76:92","value":{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"3522:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3516:5:92"},"nodeType":"YulFunctionCall","src":"3516:13:92"},{"name":"pos","nodeType":"YulIdentifier","src":"3531:3:92"}],"functionName":{"name":"abi_encodeUpdatedPos_struct_MultiTargetPermission","nodeType":"YulIdentifier","src":"3466:49:92"},"nodeType":"YulFunctionCall","src":"3466:69:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"3459:3:92"}]},{"nodeType":"YulAssignment","src":"3548:25:92","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"3562:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"3570:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3558:3:92"},"nodeType":"YulFunctionCall","src":"3558:15:92"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"3548:6:92"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3407:1:92"},{"name":"length","nodeType":"YulIdentifier","src":"3410:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"3404:2:92"},"nodeType":"YulFunctionCall","src":"3404:13:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"3418:18:92","statements":[{"nodeType":"YulAssignment","src":"3420:14:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3429:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"3432:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3425:3:92"},"nodeType":"YulFunctionCall","src":"3425:9:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"3420:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"3400:3:92","statements":[]},"src":"3396:187:92"},{"nodeType":"YulAssignment","src":"3592:11:92","value":{"name":"pos","nodeType":"YulIdentifier","src":"3600:3:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3592:4:92"}]}]},"name":"abi_encode_tuple_t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3079:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3090:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3101:4:92","type":""}],"src":"2879:730:92"},{"body":{"nodeType":"YulBlock","src":"3750:465:92","statements":[{"body":{"nodeType":"YulBlock","src":"3796:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3805:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3808:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3798:6:92"},"nodeType":"YulFunctionCall","src":"3798:12:92"},"nodeType":"YulExpressionStatement","src":"3798:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3771:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"3780:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3767:3:92"},"nodeType":"YulFunctionCall","src":"3767:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"3792:2:92","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3763:3:92"},"nodeType":"YulFunctionCall","src":"3763:32:92"},"nodeType":"YulIf","src":"3760:52:92"},{"nodeType":"YulAssignment","src":"3821:39:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3850:9:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"3831:18:92"},"nodeType":"YulFunctionCall","src":"3831:29:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3821:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"3869:45:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3899:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3910:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3895:3:92"},"nodeType":"YulFunctionCall","src":"3895:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3882:12:92"},"nodeType":"YulFunctionCall","src":"3882:32:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"3873:5:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"3964:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3973:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3976:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3966:6:92"},"nodeType":"YulFunctionCall","src":"3966:12:92"},"nodeType":"YulExpressionStatement","src":"3966:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3936:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3947:5:92"},{"kind":"number","nodeType":"YulLiteral","src":"3954:6:92","type":"","value":"0xffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3943:3:92"},"nodeType":"YulFunctionCall","src":"3943:18:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"3933:2:92"},"nodeType":"YulFunctionCall","src":"3933:29:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3926:6:92"},"nodeType":"YulFunctionCall","src":"3926:37:92"},"nodeType":"YulIf","src":"3923:57:92"},{"nodeType":"YulAssignment","src":"3989:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"3999:5:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"3989:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"4013:46:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4044:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4055:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4040:3:92"},"nodeType":"YulFunctionCall","src":"4040:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4027:12:92"},"nodeType":"YulFunctionCall","src":"4027:32:92"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4017:6:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"4102:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4111:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4114:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4104:6:92"},"nodeType":"YulFunctionCall","src":"4104:12:92"},"nodeType":"YulExpressionStatement","src":"4104:12:92"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"4074:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"4082:18:92","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4071:2:92"},"nodeType":"YulFunctionCall","src":"4071:30:92"},"nodeType":"YulIf","src":"4068:50:92"},{"nodeType":"YulAssignment","src":"4127:82:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4181:9:92"},{"name":"offset","nodeType":"YulIdentifier","src":"4192:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4177:3:92"},"nodeType":"YulFunctionCall","src":"4177:22:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4201:7:92"}],"functionName":{"name":"abi_decode_struct_SetupPayload_calldata","nodeType":"YulIdentifier","src":"4137:39:92"},"nodeType":"YulFunctionCall","src":"4137:72:92"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"4127:6:92"}]}]},"name":"abi_decode_tuple_t_addresst_uint16t_struct$_SetupPayload_$14224_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3700:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3711:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3723:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"3731:6:92","type":""},{"name":"value2","nodeType":"YulTypedName","src":"3739:6:92","type":""}],"src":"3614:601:92"},{"body":{"nodeType":"YulBlock","src":"4269:373:92","statements":[{"nodeType":"YulVariableDeclaration","src":"4279:26:92","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4299:5:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4293:5:92"},"nodeType":"YulFunctionCall","src":"4293:12:92"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"4283:6:92","type":""}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4321:3:92"},{"name":"length","nodeType":"YulIdentifier","src":"4326:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4314:6:92"},"nodeType":"YulFunctionCall","src":"4314:19:92"},"nodeType":"YulExpressionStatement","src":"4314:19:92"},{"nodeType":"YulVariableDeclaration","src":"4342:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"4351:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"4346:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"4413:110:92","statements":[{"nodeType":"YulVariableDeclaration","src":"4427:14:92","value":{"kind":"number","nodeType":"YulLiteral","src":"4437:4:92","type":"","value":"0x20"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"4431:2:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4469:3:92"},{"name":"i","nodeType":"YulIdentifier","src":"4474:1:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4465:3:92"},"nodeType":"YulFunctionCall","src":"4465:11:92"},{"name":"_1","nodeType":"YulIdentifier","src":"4478:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4461:3:92"},"nodeType":"YulFunctionCall","src":"4461:20:92"},{"arguments":[{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4497:5:92"},{"name":"i","nodeType":"YulIdentifier","src":"4504:1:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4493:3:92"},"nodeType":"YulFunctionCall","src":"4493:13:92"},{"name":"_1","nodeType":"YulIdentifier","src":"4508:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4489:3:92"},"nodeType":"YulFunctionCall","src":"4489:22:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4483:5:92"},"nodeType":"YulFunctionCall","src":"4483:29:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4454:6:92"},"nodeType":"YulFunctionCall","src":"4454:59:92"},"nodeType":"YulExpressionStatement","src":"4454:59:92"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"4372:1:92"},{"name":"length","nodeType":"YulIdentifier","src":"4375:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"4369:2:92"},"nodeType":"YulFunctionCall","src":"4369:13:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"4383:21:92","statements":[{"nodeType":"YulAssignment","src":"4385:17:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"4394:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"4397:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4390:3:92"},"nodeType":"YulFunctionCall","src":"4390:12:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"4385:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"4365:3:92","statements":[]},"src":"4361:162:92"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4547:3:92"},{"name":"length","nodeType":"YulIdentifier","src":"4552:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4543:3:92"},"nodeType":"YulFunctionCall","src":"4543:16:92"},{"kind":"number","nodeType":"YulLiteral","src":"4561:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4539:3:92"},"nodeType":"YulFunctionCall","src":"4539:27:92"},{"kind":"number","nodeType":"YulLiteral","src":"4568:1:92","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4532:6:92"},"nodeType":"YulFunctionCall","src":"4532:38:92"},"nodeType":"YulExpressionStatement","src":"4532:38:92"},{"nodeType":"YulAssignment","src":"4579:57:92","value":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4594:3:92"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"4607:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"4615:2:92","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4603:3:92"},"nodeType":"YulFunctionCall","src":"4603:15:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4624:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"4620:3:92"},"nodeType":"YulFunctionCall","src":"4620:7:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4599:3:92"},"nodeType":"YulFunctionCall","src":"4599:29:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4590:3:92"},"nodeType":"YulFunctionCall","src":"4590:39:92"},{"kind":"number","nodeType":"YulLiteral","src":"4631:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4586:3:92"},"nodeType":"YulFunctionCall","src":"4586:50:92"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"4579:3:92"}]}]},"name":"abi_encode_bytes","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"4246:5:92","type":""},{"name":"pos","nodeType":"YulTypedName","src":"4253:3:92","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"4261:3:92","type":""}],"src":"4220:422:92"},{"body":{"nodeType":"YulBlock","src":"4715:1094:92","statements":[{"nodeType":"YulVariableDeclaration","src":"4725:26:92","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4741:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"4746:4:92","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4737:3:92"},"nodeType":"YulFunctionCall","src":"4737:14:92"},"variables":[{"name":"tail","nodeType":"YulTypedName","src":"4729:4:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4760:32:92","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4786:5:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4780:5:92"},"nodeType":"YulFunctionCall","src":"4780:12:92"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"4764:12:92","type":""}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4808:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"4813:4:92","type":"","value":"0x40"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4801:6:92"},"nodeType":"YulFunctionCall","src":"4801:17:92"},"nodeType":"YulExpressionStatement","src":"4801:17:92"},{"nodeType":"YulVariableDeclaration","src":"4827:17:92","value":{"name":"tail","nodeType":"YulIdentifier","src":"4840:4:92"},"variables":[{"name":"pos_1","nodeType":"YulTypedName","src":"4831:5:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4853:33:92","value":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"4873:12:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4867:5:92"},"nodeType":"YulFunctionCall","src":"4867:19:92"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"4857:6:92","type":""}]},{"expression":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"4902:4:92"},{"name":"length","nodeType":"YulIdentifier","src":"4908:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4895:6:92"},"nodeType":"YulFunctionCall","src":"4895:20:92"},"nodeType":"YulExpressionStatement","src":"4895:20:92"},{"nodeType":"YulAssignment","src":"4924:21:92","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4937:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"4942:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4933:3:92"},"nodeType":"YulFunctionCall","src":"4933:12:92"},"variableNames":[{"name":"pos_1","nodeType":"YulIdentifier","src":"4924:5:92"}]},{"nodeType":"YulVariableDeclaration","src":"4954:14:92","value":{"kind":"number","nodeType":"YulLiteral","src":"4964:4:92","type":"","value":"0x20"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"4958:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4977:35:92","value":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"4995:12:92"},{"name":"_1","nodeType":"YulIdentifier","src":"5009:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4991:3:92"},"nodeType":"YulFunctionCall","src":"4991:21:92"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"4981:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5021:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"5030:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"5025:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"5089:175:92","statements":[{"expression":{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5110:5:92"},{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"5127:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5121:5:92"},"nodeType":"YulFunctionCall","src":"5121:13:92"},{"kind":"number","nodeType":"YulLiteral","src":"5136:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5117:3:92"},"nodeType":"YulFunctionCall","src":"5117:62:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5103:6:92"},"nodeType":"YulFunctionCall","src":"5103:77:92"},"nodeType":"YulExpressionStatement","src":"5103:77:92"},{"nodeType":"YulAssignment","src":"5193:23:92","value":{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5206:5:92"},{"name":"_1","nodeType":"YulIdentifier","src":"5213:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5202:3:92"},"nodeType":"YulFunctionCall","src":"5202:14:92"},"variableNames":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5193:5:92"}]},{"nodeType":"YulAssignment","src":"5229:25:92","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"5243:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"5251:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5239:3:92"},"nodeType":"YulFunctionCall","src":"5239:15:92"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"5229:6:92"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"5051:1:92"},{"name":"length","nodeType":"YulIdentifier","src":"5054:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"5048:2:92"},"nodeType":"YulFunctionCall","src":"5048:13:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"5062:18:92","statements":[{"nodeType":"YulAssignment","src":"5064:14:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"5073:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"5076:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5069:3:92"},"nodeType":"YulFunctionCall","src":"5069:9:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"5064:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"5044:3:92","statements":[]},"src":"5040:224:92"},{"nodeType":"YulVariableDeclaration","src":"5273:43:92","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5305:5:92"},{"name":"_1","nodeType":"YulIdentifier","src":"5312:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5301:3:92"},"nodeType":"YulFunctionCall","src":"5301:14:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5295:5:92"},"nodeType":"YulFunctionCall","src":"5295:21:92"},"variables":[{"name":"memberValue0_1","nodeType":"YulTypedName","src":"5277:14:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5336:3:92"},{"name":"_1","nodeType":"YulIdentifier","src":"5341:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5332:3:92"},"nodeType":"YulFunctionCall","src":"5332:12:92"},{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5350:5:92"},{"name":"pos","nodeType":"YulIdentifier","src":"5357:3:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5346:3:92"},"nodeType":"YulFunctionCall","src":"5346:15:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5325:6:92"},"nodeType":"YulFunctionCall","src":"5325:37:92"},"nodeType":"YulExpressionStatement","src":"5325:37:92"},{"nodeType":"YulVariableDeclaration","src":"5371:18:92","value":{"name":"pos_1","nodeType":"YulIdentifier","src":"5384:5:92"},"variables":[{"name":"pos_2","nodeType":"YulTypedName","src":"5375:5:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5398:37:92","value":{"arguments":[{"name":"memberValue0_1","nodeType":"YulIdentifier","src":"5420:14:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5414:5:92"},"nodeType":"YulFunctionCall","src":"5414:21:92"},"variables":[{"name":"length_1","nodeType":"YulTypedName","src":"5402:8:92","type":""}]},{"expression":{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5451:5:92"},{"name":"length_1","nodeType":"YulIdentifier","src":"5458:8:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5444:6:92"},"nodeType":"YulFunctionCall","src":"5444:23:92"},"nodeType":"YulExpressionStatement","src":"5444:23:92"},{"nodeType":"YulAssignment","src":"5476:23:92","value":{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5489:5:92"},{"name":"_1","nodeType":"YulIdentifier","src":"5496:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5485:3:92"},"nodeType":"YulFunctionCall","src":"5485:14:92"},"variableNames":[{"name":"pos_2","nodeType":"YulIdentifier","src":"5476:5:92"}]},{"nodeType":"YulVariableDeclaration","src":"5508:39:92","value":{"arguments":[{"name":"memberValue0_1","nodeType":"YulIdentifier","src":"5528:14:92"},{"name":"_1","nodeType":"YulIdentifier","src":"5544:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5524:3:92"},"nodeType":"YulFunctionCall","src":"5524:23:92"},"variables":[{"name":"srcPtr_1","nodeType":"YulTypedName","src":"5512:8:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5556:12:92","value":{"kind":"number","nodeType":"YulLiteral","src":"5567:1:92","type":"","value":"0"},"variables":[{"name":"i_1","nodeType":"YulTypedName","src":"5560:3:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"5634:148:92","statements":[{"nodeType":"YulAssignment","src":"5648:82:92","value":{"arguments":[{"arguments":[{"name":"srcPtr_1","nodeType":"YulIdentifier","src":"5713:8:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5707:5:92"},"nodeType":"YulFunctionCall","src":"5707:15:92"},{"name":"pos_2","nodeType":"YulIdentifier","src":"5724:5:92"}],"functionName":{"name":"abi_encodeUpdatedPos_struct_MultiTargetPermission","nodeType":"YulIdentifier","src":"5657:49:92"},"nodeType":"YulFunctionCall","src":"5657:73:92"},"variableNames":[{"name":"pos_2","nodeType":"YulIdentifier","src":"5648:5:92"}]},{"nodeType":"YulAssignment","src":"5743:29:92","value":{"arguments":[{"name":"srcPtr_1","nodeType":"YulIdentifier","src":"5759:8:92"},{"name":"_1","nodeType":"YulIdentifier","src":"5769:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5755:3:92"},"nodeType":"YulFunctionCall","src":"5755:17:92"},"variableNames":[{"name":"srcPtr_1","nodeType":"YulIdentifier","src":"5743:8:92"}]}]},"condition":{"arguments":[{"name":"i_1","nodeType":"YulIdentifier","src":"5588:3:92"},{"name":"length_1","nodeType":"YulIdentifier","src":"5593:8:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"5585:2:92"},"nodeType":"YulFunctionCall","src":"5585:17:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"5603:22:92","statements":[{"nodeType":"YulAssignment","src":"5605:18:92","value":{"arguments":[{"name":"i_1","nodeType":"YulIdentifier","src":"5616:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"5621:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5612:3:92"},"nodeType":"YulFunctionCall","src":"5612:11:92"},"variableNames":[{"name":"i_1","nodeType":"YulIdentifier","src":"5605:3:92"}]}]},"pre":{"nodeType":"YulBlock","src":"5581:3:92","statements":[]},"src":"5577:205:92"},{"nodeType":"YulAssignment","src":"5791:12:92","value":{"name":"pos_2","nodeType":"YulIdentifier","src":"5798:5:92"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"5791:3:92"}]}]},"name":"abi_encode_struct_PreparedSetupData","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"4692:5:92","type":""},{"name":"pos","nodeType":"YulTypedName","src":"4699:3:92","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"4707:3:92","type":""}],"src":"4647:1162:92"},{"body":{"nodeType":"YulBlock","src":"6033:231:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6050:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6061:2:92","type":"","value":"64"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6043:6:92"},"nodeType":"YulFunctionCall","src":"6043:21:92"},"nodeType":"YulExpressionStatement","src":"6043:21:92"},{"nodeType":"YulVariableDeclaration","src":"6073:58:92","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6104:6:92"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6116:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6127:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6112:3:92"},"nodeType":"YulFunctionCall","src":"6112:18:92"}],"functionName":{"name":"abi_encode_bytes","nodeType":"YulIdentifier","src":"6087:16:92"},"nodeType":"YulFunctionCall","src":"6087:44:92"},"variables":[{"name":"tail_1","nodeType":"YulTypedName","src":"6077:6:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6151:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6162:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6147:3:92"},"nodeType":"YulFunctionCall","src":"6147:18:92"},{"arguments":[{"name":"tail_1","nodeType":"YulIdentifier","src":"6171:6:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"6179:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6167:3:92"},"nodeType":"YulFunctionCall","src":"6167:22:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6140:6:92"},"nodeType":"YulFunctionCall","src":"6140:50:92"},"nodeType":"YulExpressionStatement","src":"6140:50:92"},{"nodeType":"YulAssignment","src":"6199:59:92","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"6243:6:92"},{"name":"tail_1","nodeType":"YulIdentifier","src":"6251:6:92"}],"functionName":{"name":"abi_encode_struct_PreparedSetupData","nodeType":"YulIdentifier","src":"6207:35:92"},"nodeType":"YulFunctionCall","src":"6207:51:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6199:4:92"}]}]},"name":"abi_encode_tuple_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$14216_memory_ptr__to_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$14216_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5994:9:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"6005:6:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"6013:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6024:4:92","type":""}],"src":"5814:450:92"},{"body":{"nodeType":"YulBlock","src":"6301:95:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6318:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6325:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"6330:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"6321:3:92"},"nodeType":"YulFunctionCall","src":"6321:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6311:6:92"},"nodeType":"YulFunctionCall","src":"6311:31:92"},"nodeType":"YulExpressionStatement","src":"6311:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6358:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"6361:4:92","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6351:6:92"},"nodeType":"YulFunctionCall","src":"6351:15:92"},"nodeType":"YulExpressionStatement","src":"6351:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6382:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6385:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6375:6:92"},"nodeType":"YulFunctionCall","src":"6375:15:92"},"nodeType":"YulExpressionStatement","src":"6375:15:92"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"6269:127:92"},{"body":{"nodeType":"YulBlock","src":"6497:899:92","statements":[{"body":{"nodeType":"YulBlock","src":"6543:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6552:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6555:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6545:6:92"},"nodeType":"YulFunctionCall","src":"6545:12:92"},"nodeType":"YulExpressionStatement","src":"6545:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"6518:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"6527:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6514:3:92"},"nodeType":"YulFunctionCall","src":"6514:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"6539:2:92","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6510:3:92"},"nodeType":"YulFunctionCall","src":"6510:32:92"},"nodeType":"YulIf","src":"6507:52:92"},{"nodeType":"YulAssignment","src":"6568:39:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6597:9:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"6578:18:92"},"nodeType":"YulFunctionCall","src":"6578:29:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"6568:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"6616:46:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6647:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6658:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6643:3:92"},"nodeType":"YulFunctionCall","src":"6643:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6630:12:92"},"nodeType":"YulFunctionCall","src":"6630:32:92"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"6620:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"6671:28:92","value":{"kind":"number","nodeType":"YulLiteral","src":"6681:18:92","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"6675:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"6726:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6735:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6738:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6728:6:92"},"nodeType":"YulFunctionCall","src":"6728:12:92"},"nodeType":"YulExpressionStatement","src":"6728:12:92"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"6714:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"6722:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6711:2:92"},"nodeType":"YulFunctionCall","src":"6711:14:92"},"nodeType":"YulIf","src":"6708:34:92"},{"nodeType":"YulVariableDeclaration","src":"6751:32:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6765:9:92"},{"name":"offset","nodeType":"YulIdentifier","src":"6776:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6761:3:92"},"nodeType":"YulFunctionCall","src":"6761:22:92"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"6755:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"6831:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6840:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6843:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6833:6:92"},"nodeType":"YulFunctionCall","src":"6833:12:92"},"nodeType":"YulExpressionStatement","src":"6833:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"6810:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"6814:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6806:3:92"},"nodeType":"YulFunctionCall","src":"6806:13:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"6821:7:92"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6802:3:92"},"nodeType":"YulFunctionCall","src":"6802:27:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"6795:6:92"},"nodeType":"YulFunctionCall","src":"6795:35:92"},"nodeType":"YulIf","src":"6792:55:92"},{"nodeType":"YulVariableDeclaration","src":"6856:26:92","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"6879:2:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6866:12:92"},"nodeType":"YulFunctionCall","src":"6866:16:92"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"6860:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"6905:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"6907:16:92"},"nodeType":"YulFunctionCall","src":"6907:18:92"},"nodeType":"YulExpressionStatement","src":"6907:18:92"}]},"condition":{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"6897:2:92"},{"name":"_1","nodeType":"YulIdentifier","src":"6901:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6894:2:92"},"nodeType":"YulFunctionCall","src":"6894:10:92"},"nodeType":"YulIf","src":"6891:36:92"},{"nodeType":"YulVariableDeclaration","src":"6936:17:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6950:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"6946:3:92"},"nodeType":"YulFunctionCall","src":"6946:7:92"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"6940:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"6962:23:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6982:2:92","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6976:5:92"},"nodeType":"YulFunctionCall","src":"6976:9:92"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"6966:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"6994:71:92","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7016:6:92"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"7040:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"7044:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7036:3:92"},"nodeType":"YulFunctionCall","src":"7036:13:92"},{"name":"_4","nodeType":"YulIdentifier","src":"7051:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7032:3:92"},"nodeType":"YulFunctionCall","src":"7032:22:92"},{"kind":"number","nodeType":"YulLiteral","src":"7056:2:92","type":"","value":"63"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7028:3:92"},"nodeType":"YulFunctionCall","src":"7028:31:92"},{"name":"_4","nodeType":"YulIdentifier","src":"7061:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7024:3:92"},"nodeType":"YulFunctionCall","src":"7024:40:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7012:3:92"},"nodeType":"YulFunctionCall","src":"7012:53:92"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"6998:10:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"7124:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"7126:16:92"},"nodeType":"YulFunctionCall","src":"7126:18:92"},"nodeType":"YulExpressionStatement","src":"7126:18:92"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"7083:10:92"},{"name":"_1","nodeType":"YulIdentifier","src":"7095:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"7080:2:92"},"nodeType":"YulFunctionCall","src":"7080:18:92"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"7103:10:92"},{"name":"memPtr","nodeType":"YulIdentifier","src":"7115:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"7100:2:92"},"nodeType":"YulFunctionCall","src":"7100:22:92"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"7077:2:92"},"nodeType":"YulFunctionCall","src":"7077:46:92"},"nodeType":"YulIf","src":"7074:72:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7162:2:92","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"7166:10:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7155:6:92"},"nodeType":"YulFunctionCall","src":"7155:22:92"},"nodeType":"YulExpressionStatement","src":"7155:22:92"},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7193:6:92"},{"name":"_3","nodeType":"YulIdentifier","src":"7201:2:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7186:6:92"},"nodeType":"YulFunctionCall","src":"7186:18:92"},"nodeType":"YulExpressionStatement","src":"7186:18:92"},{"body":{"nodeType":"YulBlock","src":"7250:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7259:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7262:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7252:6:92"},"nodeType":"YulFunctionCall","src":"7252:12:92"},"nodeType":"YulExpressionStatement","src":"7252:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"7227:2:92"},{"name":"_3","nodeType":"YulIdentifier","src":"7231:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7223:3:92"},"nodeType":"YulFunctionCall","src":"7223:11:92"},{"kind":"number","nodeType":"YulLiteral","src":"7236:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7219:3:92"},"nodeType":"YulFunctionCall","src":"7219:20:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"7241:7:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"7216:2:92"},"nodeType":"YulFunctionCall","src":"7216:33:92"},"nodeType":"YulIf","src":"7213:53:92"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7292:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"7300:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7288:3:92"},"nodeType":"YulFunctionCall","src":"7288:15:92"},{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"7309:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"7313:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7305:3:92"},"nodeType":"YulFunctionCall","src":"7305:11:92"},{"name":"_3","nodeType":"YulIdentifier","src":"7318:2:92"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"7275:12:92"},"nodeType":"YulFunctionCall","src":"7275:46:92"},"nodeType":"YulExpressionStatement","src":"7275:46:92"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7345:6:92"},{"name":"_3","nodeType":"YulIdentifier","src":"7353:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7341:3:92"},"nodeType":"YulFunctionCall","src":"7341:15:92"},{"kind":"number","nodeType":"YulLiteral","src":"7358:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7337:3:92"},"nodeType":"YulFunctionCall","src":"7337:24:92"},{"kind":"number","nodeType":"YulLiteral","src":"7363:1:92","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7330:6:92"},"nodeType":"YulFunctionCall","src":"7330:35:92"},"nodeType":"YulExpressionStatement","src":"7330:35:92"},{"nodeType":"YulAssignment","src":"7374:16:92","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"7384:6:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"7374:6:92"}]}]},"name":"abi_decode_tuple_t_addresst_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6455:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"6466:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"6478:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"6486:6:92","type":""}],"src":"6401:995:92"},{"body":{"nodeType":"YulBlock","src":"7602:209:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7619:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7634:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"7642:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7630:3:92"},"nodeType":"YulFunctionCall","src":"7630:55:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7612:6:92"},"nodeType":"YulFunctionCall","src":"7612:74:92"},"nodeType":"YulExpressionStatement","src":"7612:74:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7706:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7717:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7702:3:92"},"nodeType":"YulFunctionCall","src":"7702:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"7722:2:92","type":"","value":"64"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7695:6:92"},"nodeType":"YulFunctionCall","src":"7695:30:92"},"nodeType":"YulExpressionStatement","src":"7695:30:92"},{"nodeType":"YulAssignment","src":"7734:71:92","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"7778:6:92"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7790:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7801:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7786:3:92"},"nodeType":"YulFunctionCall","src":"7786:18:92"}],"functionName":{"name":"abi_encode_struct_PreparedSetupData","nodeType":"YulIdentifier","src":"7742:35:92"},"nodeType":"YulFunctionCall","src":"7742:63:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7734:4:92"}]}]},"name":"abi_encode_tuple_t_address_t_struct$_PreparedSetupData_$14216_memory_ptr__to_t_address_t_struct$_PreparedSetupData_$14216_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7563:9:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"7574:6:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"7582:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7593:4:92","type":""}],"src":"7401:410:92"},{"body":{"nodeType":"YulBlock","src":"7950:162:92","statements":[{"nodeType":"YulAssignment","src":"7960:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7972:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7983:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7968:3:92"},"nodeType":"YulFunctionCall","src":"7968:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7960:4:92"}]},{"nodeType":"YulVariableDeclaration","src":"7995:16:92","value":{"kind":"number","nodeType":"YulLiteral","src":"8005:6:92","type":"","value":"0xffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"7999:2:92","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8027:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"8042:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"8050:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8038:3:92"},"nodeType":"YulFunctionCall","src":"8038:15:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8020:6:92"},"nodeType":"YulFunctionCall","src":"8020:34:92"},"nodeType":"YulExpressionStatement","src":"8020:34:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8074:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8085:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8070:3:92"},"nodeType":"YulFunctionCall","src":"8070:18:92"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"8094:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"8102:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8090:3:92"},"nodeType":"YulFunctionCall","src":"8090:15:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8063:6:92"},"nodeType":"YulFunctionCall","src":"8063:43:92"},"nodeType":"YulExpressionStatement","src":"8063:43:92"}]},"name":"abi_encode_tuple_t_rational_0_by_1_t_uint16__to_t_uint16_t_uint16__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7911:9:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"7922:6:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"7930:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7941:4:92","type":""}],"src":"7816:296:92"},{"body":{"nodeType":"YulBlock","src":"8232:125:92","statements":[{"nodeType":"YulAssignment","src":"8242:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8254:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8265:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8250:3:92"},"nodeType":"YulFunctionCall","src":"8250:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"8242:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8284:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"8299:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"8307:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8295:3:92"},"nodeType":"YulFunctionCall","src":"8295:55:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8277:6:92"},"nodeType":"YulFunctionCall","src":"8277:74:92"},"nodeType":"YulExpressionStatement","src":"8277:74:92"}]},"name":"abi_encode_tuple_t_contract$_IDAO_$10865__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8201:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"8212:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"8223:4:92","type":""}],"src":"8117:240:92"},{"body":{"nodeType":"YulBlock","src":"8394:95:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8411:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8418:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"8423:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"8414:3:92"},"nodeType":"YulFunctionCall","src":"8414:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8404:6:92"},"nodeType":"YulFunctionCall","src":"8404:31:92"},"nodeType":"YulExpressionStatement","src":"8404:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8451:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"8454:4:92","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8444:6:92"},"nodeType":"YulFunctionCall","src":"8444:15:92"},"nodeType":"YulExpressionStatement","src":"8444:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8475:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8478:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8468:6:92"},"nodeType":"YulFunctionCall","src":"8468:15:92"},"nodeType":"YulExpressionStatement","src":"8468:15:92"}]},"name":"panic_error_0x11","nodeType":"YulFunctionDefinition","src":"8362:127:92"},{"body":{"nodeType":"YulBlock","src":"8543:159:92","statements":[{"nodeType":"YulVariableDeclaration","src":"8553:52:92","value":{"kind":"number","nodeType":"YulLiteral","src":"8563:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"8557:2:92","type":""}]},{"nodeType":"YulAssignment","src":"8614:35:92","value":{"arguments":[{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"8630:1:92"},{"name":"_1","nodeType":"YulIdentifier","src":"8633:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8626:3:92"},"nodeType":"YulFunctionCall","src":"8626:10:92"},{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"8642:1:92"},{"name":"_1","nodeType":"YulIdentifier","src":"8645:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8638:3:92"},"nodeType":"YulFunctionCall","src":"8638:10:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"8622:3:92"},"nodeType":"YulFunctionCall","src":"8622:27:92"},"variableNames":[{"name":"diff","nodeType":"YulIdentifier","src":"8614:4:92"}]},{"body":{"nodeType":"YulBlock","src":"8674:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"8676:16:92"},"nodeType":"YulFunctionCall","src":"8676:18:92"},"nodeType":"YulExpressionStatement","src":"8676:18:92"}]},"condition":{"arguments":[{"name":"diff","nodeType":"YulIdentifier","src":"8664:4:92"},{"name":"_1","nodeType":"YulIdentifier","src":"8670:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"8661:2:92"},"nodeType":"YulFunctionCall","src":"8661:12:92"},"nodeType":"YulIf","src":"8658:38:92"}]},"name":"checked_sub_t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"8525:1:92","type":""},{"name":"y","nodeType":"YulTypedName","src":"8528:1:92","type":""}],"returnVariables":[{"name":"diff","nodeType":"YulTypedName","src":"8534:4:92","type":""}],"src":"8494:208:92"},{"body":{"nodeType":"YulBlock","src":"8739:95:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8756:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8763:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"8768:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"8759:3:92"},"nodeType":"YulFunctionCall","src":"8759:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8749:6:92"},"nodeType":"YulFunctionCall","src":"8749:31:92"},"nodeType":"YulExpressionStatement","src":"8749:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8796:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"8799:4:92","type":"","value":"0x32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8789:6:92"},"nodeType":"YulFunctionCall","src":"8789:15:92"},"nodeType":"YulExpressionStatement","src":"8789:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8820:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8823:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8813:6:92"},"nodeType":"YulFunctionCall","src":"8813:15:92"},"nodeType":"YulExpressionStatement","src":"8813:15:92"}]},"name":"panic_error_0x32","nodeType":"YulFunctionDefinition","src":"8707:127:92"},{"body":{"nodeType":"YulBlock","src":"8886:187:92","statements":[{"nodeType":"YulVariableDeclaration","src":"8896:52:92","value":{"kind":"number","nodeType":"YulLiteral","src":"8906:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"8900:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"8957:29:92","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8976:5:92"},{"name":"_1","nodeType":"YulIdentifier","src":"8983:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8972:3:92"},"nodeType":"YulFunctionCall","src":"8972:14:92"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"8961:7:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"9014:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"9016:16:92"},"nodeType":"YulFunctionCall","src":"9016:18:92"},"nodeType":"YulExpressionStatement","src":"9016:18:92"}]},"condition":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"9001:7:92"},{"name":"_1","nodeType":"YulIdentifier","src":"9010:2:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"8998:2:92"},"nodeType":"YulFunctionCall","src":"8998:15:92"},"nodeType":"YulIf","src":"8995:41:92"},{"nodeType":"YulAssignment","src":"9045:22:92","value":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"9056:7:92"},{"kind":"number","nodeType":"YulLiteral","src":"9065:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9052:3:92"},"nodeType":"YulFunctionCall","src":"9052:15:92"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"9045:3:92"}]}]},"name":"increment_t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"8868:5:92","type":""}],"returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"8878:3:92","type":""}],"src":"8839:234:92"},{"body":{"nodeType":"YulBlock","src":"9225:190:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9242:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"9257:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"9265:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"9253:3:92"},"nodeType":"YulFunctionCall","src":"9253:55:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9235:6:92"},"nodeType":"YulFunctionCall","src":"9235:74:92"},"nodeType":"YulExpressionStatement","src":"9235:74:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9329:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9340:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9325:3:92"},"nodeType":"YulFunctionCall","src":"9325:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"9345:2:92","type":"","value":"64"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9318:6:92"},"nodeType":"YulFunctionCall","src":"9318:30:92"},"nodeType":"YulExpressionStatement","src":"9318:30:92"},{"nodeType":"YulAssignment","src":"9357:52:92","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"9382:6:92"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9394:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9405:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9390:3:92"},"nodeType":"YulFunctionCall","src":"9390:18:92"}],"functionName":{"name":"abi_encode_bytes","nodeType":"YulIdentifier","src":"9365:16:92"},"nodeType":"YulFunctionCall","src":"9365:44:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"9357:4:92"}]}]},"name":"abi_encode_tuple_t_address_t_bytes_memory_ptr__to_t_address_t_bytes_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9186:9:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"9197:6:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"9205:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"9216:4:92","type":""}],"src":"9078:337:92"}]},"contents":"{\n { }\n function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n if iszero(eq(value, and(value, shl(224, 0xffffffff)))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 96)\n let pos := headStart\n pos := headStart\n let srcPtr := value0\n let i := 0\n for { } lt(i, 0x03) { i := add(i, 1) }\n {\n mstore(pos, and(mload(srcPtr), 0xff))\n let _1 := 0x20\n pos := add(pos, _1)\n srcPtr := add(srcPtr, _1)\n }\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_decode_address(offset) -> value\n {\n value := calldataload(offset)\n if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n }\n function abi_decode_struct_SetupPayload_calldata(offset, end) -> value\n {\n if slt(sub(end, offset), 96) { revert(0, 0) }\n value := offset\n }\n function abi_decode_tuple_t_addresst_struct$_SetupPayload_$14224_calldata_ptr(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n let offset := calldataload(add(headStart, 32))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n value1 := abi_decode_struct_SetupPayload_calldata(add(headStart, offset), dataEnd)\n }\n function panic_error_0x21()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x21)\n revert(0, 0x24)\n }\n function abi_encodeUpdatedPos_struct_MultiTargetPermission(value0, pos) -> updatedPos\n {\n let _1 := mload(value0)\n if iszero(lt(_1, 3))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x21)\n revert(0, 0x24)\n }\n mstore(pos, _1)\n let memberValue0 := mload(add(value0, 0x20))\n let _2 := 0xffffffffffffffffffffffffffffffffffffffff\n mstore(add(pos, 0x20), and(memberValue0, _2))\n mstore(add(pos, 0x40), and(mload(add(value0, 0x40)), _2))\n mstore(add(pos, 0x60), and(mload(add(value0, 0x60)), _2))\n mstore(add(pos, 0x80), mload(add(value0, 0x80)))\n updatedPos := add(pos, 0xa0)\n }\n function abi_encode_tuple_t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n let _1 := 32\n let tail_1 := add(headStart, _1)\n mstore(headStart, _1)\n let pos := tail_1\n let length := mload(value0)\n mstore(tail_1, length)\n pos := add(headStart, 64)\n let srcPtr := add(value0, _1)\n let i := 0\n for { } lt(i, length) { i := add(i, 1) }\n {\n pos := abi_encodeUpdatedPos_struct_MultiTargetPermission(mload(srcPtr), pos)\n srcPtr := add(srcPtr, _1)\n }\n tail := pos\n }\n function abi_decode_tuple_t_addresst_uint16t_struct$_SetupPayload_$14224_calldata_ptr(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n let value := calldataload(add(headStart, 32))\n if iszero(eq(value, and(value, 0xffff))) { revert(0, 0) }\n value1 := value\n let offset := calldataload(add(headStart, 64))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n value2 := abi_decode_struct_SetupPayload_calldata(add(headStart, offset), dataEnd)\n }\n function abi_encode_bytes(value, pos) -> end\n {\n let length := mload(value)\n mstore(pos, length)\n let i := 0\n for { } lt(i, length) { i := add(i, 0x20) }\n {\n let _1 := 0x20\n mstore(add(add(pos, i), _1), mload(add(add(value, i), _1)))\n }\n mstore(add(add(pos, length), 0x20), 0)\n end := add(add(pos, and(add(length, 31), not(31))), 0x20)\n }\n function abi_encode_struct_PreparedSetupData(value, pos) -> end\n {\n let tail := add(pos, 0x40)\n let memberValue0 := mload(value)\n mstore(pos, 0x40)\n let pos_1 := tail\n let length := mload(memberValue0)\n mstore(tail, length)\n pos_1 := add(pos, 96)\n let _1 := 0x20\n let srcPtr := add(memberValue0, _1)\n let i := 0\n for { } lt(i, length) { i := add(i, 1) }\n {\n mstore(pos_1, and(mload(srcPtr), 0xffffffffffffffffffffffffffffffffffffffff))\n pos_1 := add(pos_1, _1)\n srcPtr := add(srcPtr, _1)\n }\n let memberValue0_1 := mload(add(value, _1))\n mstore(add(pos, _1), sub(pos_1, pos))\n let pos_2 := pos_1\n let length_1 := mload(memberValue0_1)\n mstore(pos_1, length_1)\n pos_2 := add(pos_1, _1)\n let srcPtr_1 := add(memberValue0_1, _1)\n let i_1 := 0\n for { } lt(i_1, length_1) { i_1 := add(i_1, 1) }\n {\n pos_2 := abi_encodeUpdatedPos_struct_MultiTargetPermission(mload(srcPtr_1), pos_2)\n srcPtr_1 := add(srcPtr_1, _1)\n }\n end := pos_2\n }\n function abi_encode_tuple_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$14216_memory_ptr__to_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$14216_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n {\n mstore(headStart, 64)\n let tail_1 := abi_encode_bytes(value0, add(headStart, 64))\n mstore(add(headStart, 32), sub(tail_1, headStart))\n tail := abi_encode_struct_PreparedSetupData(value1, tail_1)\n }\n function panic_error_0x41()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function abi_decode_tuple_t_addresst_bytes_memory_ptr(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n let offset := calldataload(add(headStart, 32))\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n let _2 := add(headStart, offset)\n if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n let _3 := calldataload(_2)\n if gt(_3, _1) { panic_error_0x41() }\n let _4 := not(31)\n let memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n mstore(memPtr, _3)\n if gt(add(add(_2, _3), 32), dataEnd) { revert(0, 0) }\n calldatacopy(add(memPtr, 32), add(_2, 32), _3)\n mstore(add(add(memPtr, _3), 32), 0)\n value1 := memPtr\n }\n function abi_encode_tuple_t_address_t_struct$_PreparedSetupData_$14216_memory_ptr__to_t_address_t_struct$_PreparedSetupData_$14216_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n {\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n mstore(add(headStart, 32), 64)\n tail := abi_encode_struct_PreparedSetupData(value1, add(headStart, 64))\n }\n function abi_encode_tuple_t_rational_0_by_1_t_uint16__to_t_uint16_t_uint16__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n let _1 := 0xffff\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n }\n function abi_encode_tuple_t_contract$_IDAO_$10865__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function panic_error_0x11()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n function checked_sub_t_uint160(x, y) -> diff\n {\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n diff := sub(and(x, _1), and(y, _1))\n if gt(diff, _1) { panic_error_0x11() }\n }\n function panic_error_0x32()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n function increment_t_uint160(value) -> ret\n {\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n let value_1 := and(value, _1)\n if eq(value_1, _1) { panic_error_0x11() }\n ret := add(value_1, 1)\n }\n function abi_encode_tuple_t_address_t_bytes_memory_ptr__to_t_address_t_bytes_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n {\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n mstore(add(headStart, 32), 64)\n tail := abi_encode_bytes(value1, add(headStart, 64))\n }\n}","id":92,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{"14391":[{"length":32,"start":210},{"length":32,"start":723}]},"linkReferences":{},"object":"60806040523480156200001157600080fd5b50600436106200007b5760003560e01c80639cb0a12411620000565780639cb0a12414620000fd578063a8a9c29e1462000123578063f10832f1146200014a57600080fd5b806301ffc9a714620000805780632ae9c60014620000ac5780635c60da1b14620000c5575b600080fd5b6200009762000091366004620005f8565b62000171565b60405190151581526020015b60405180910390f35b620000b6620001c4565b604051620000a3919062000624565b6040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152602001620000a3565b620001146200010e3660046200068a565b620001f0565b604051620000a391906200075b565b6200013a62000134366004620007a8565b62000208565b604051620000a3929190620008f7565b620001616200015b3660046200093f565b6200024f565b604051620000a392919062000a0d565b60006001600160e01b0319821663099718b560e41b1480620001a257506001600160e01b03198216621574e360e91b145b80620001be57506301ffc9a760e01b6001600160e01b03198316145b92915050565b620001ce620005cc565b5060408051606081018252600181526004602082015260009181019190915290565b606062000201600060018062000333565b9392505050565b606062000228604051806040016040528060608152602001606081525090565b60405163098990c560e11b8152600060048201526001602482015260440160405180910390fd5b60006200026f604051806040016040528060608152602001606081525090565b6040516001600160a01b038516602482015260009060440160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663189acdbd60e31b17905290506200030581620002f57f000000000000000000000000000000000000000000000000000000000000000090565b6001600160a01b031690620004cc565b925062000313600162000508565b825262000324600060018162000333565b60208301525090939092509050565b6060826001600160a01b0316846001600160a01b031611156200036957604051633a4013cd60e21b815260040160405180910390fd5b62000375848462000a4f565b6001600160a01b031667ffffffffffffffff81111562000399576200039962000929565b604051908082528060200260200182016040528015620003f457816020015b6040805160a081018252600080825260208083018290529282018190526060820181905260808201528252600019909201910181620003b85790505b509050835b836001600160a01b0316816001600160a01b03161015620004c4576040518060a00160405280846002811115620004345762000434620006de565b81526001600160a01b038316602082018190526040820152600060608201527fa280eec51ab8e1bc4b6b0c1b7f1bde785761b787a49db404e3e9338ed9b016ef6080909101528262000487878462000a4f565b6001600160a01b031681518110620004a357620004a362000a79565b60200260200101819052508080620004bb9062000a8f565b915050620003f9565b509392505050565b60008282604051620004de90620005ea565b620004eb92919062000ab8565b604051809103906000f080158015620004c4573d6000803e3d6000fd5b6060816001600160a01b031667ffffffffffffffff8111156200052f576200052f62000929565b60405190808252806020026020018201604052801562000559578160200160208202803683370190505b50905060005b826001600160a01b0316816001600160a01b03161015620005c6578082826001600160a01b03168151811062000599576200059962000a79565b6001600160a01b039092166020928302919091019091015280620005bd8162000a8f565b9150506200055f565b50919050565b60405180606001604052806003906020820280368337509192915050565b6106fe8062000add83390190565b6000602082840312156200060b57600080fd5b81356001600160e01b0319811681146200020157600080fd5b60608101818360005b60038110156200065157815160ff168352602092830192909101906001016200062d565b50505092915050565b80356001600160a01b03811681146200067257600080fd5b919050565b600060608284031215620005c657600080fd5b600080604083850312156200069e57600080fd5b620006a9836200065a565b9150602083013567ffffffffffffffff811115620006c657600080fd5b620006d48582860162000677565b9150509250929050565b634e487b7160e01b600052602160045260246000fd5b60008151600381106200071757634e487b7160e01b600052602160045260246000fd5b8352506020818101516001600160a01b0390811691840191909152604080830151821690840152606080830151909116908301526080908101519082015260a00190565b6020808252825182820181905260009190848201906040850190845b818110156200079c576200078d838551620006f4565b93850193925060010162000777565b50909695505050505050565b600080600060608486031215620007be57600080fd5b620007c9846200065a565b9250602084013561ffff81168114620007e157600080fd5b9150604084013567ffffffffffffffff811115620007fe57600080fd5b6200080c8682870162000677565b9150509250925092565b6000815180845260005b818110156200083e5760208185018101518683018201520162000820565b506000602082860101526020601f19601f83011685010191505092915050565b805160408084528151908401819052600091602091908201906060860190845b81811015620008a55783516001600160a01b0316835292840192918401916001016200087e565b50508483015186820387850152805180835290840192506000918401905b80831015620008ec57620008d9828551620006f4565b91508484019350600183019250620008c3565b509695505050505050565b6040815260006200090c604083018562000816565b82810360208401526200092081856200085e565b95945050505050565b634e487b7160e01b600052604160045260246000fd5b600080604083850312156200095357600080fd5b6200095e836200065a565b9150602083013567ffffffffffffffff808211156200097c57600080fd5b818501915085601f8301126200099157600080fd5b813581811115620009a657620009a662000929565b604051601f8201601f19908116603f01168101908382118183101715620009d157620009d162000929565b81604052828152886020848701011115620009eb57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6001600160a01b038316815260406020820152600062000a3160408301846200085e565b949350505050565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0382811682821603908082111562000a725762000a7262000a39565b5092915050565b634e487b7160e01b600052603260045260246000fd5b60006001600160a01b0380831681810362000aae5762000aae62000a39565b6001019392505050565b6001600160a01b038316815260406020820152600062000a3160408301846200081656fe60806040526040516106fe3803806106fe83398101604081905261002291610319565b61002e82826000610035565b5050610436565b61003e8361006b565b60008251118061004b5750805b156100665761006483836100ab60201b6100291760201c565b505b505050565b610074816100d7565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606100d083836040518060600160405280602781526020016106d7602791396101a9565b9392505050565b6100ea8161022260201b6100551760201c565b6101515760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b806101887f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61023160201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6060600080856001600160a01b0316856040516101c691906103e7565b600060405180830381855af49150503d8060008114610201576040519150601f19603f3d011682016040523d82523d6000602084013e610206565b606091505b50909250905061021886838387610234565b9695505050505050565b6001600160a01b03163b151590565b90565b606083156102a357825160000361029c576001600160a01b0385163b61029c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610148565b50816102ad565b6102ad83836102b5565b949350505050565b8151156102c55781518083602001fd5b8060405162461bcd60e51b81526004016101489190610403565b634e487b7160e01b600052604160045260246000fd5b60005b838110156103105781810151838201526020016102f8565b50506000910152565b6000806040838503121561032c57600080fd5b82516001600160a01b038116811461034357600080fd5b60208401519092506001600160401b038082111561036057600080fd5b818501915085601f83011261037457600080fd5b815181811115610386576103866102df565b604051601f8201601f19908116603f011681019083821181831017156103ae576103ae6102df565b816040528281528860208487010111156103c757600080fd5b6103d88360208301602088016102f5565b80955050505050509250929050565b600082516103f98184602087016102f5565b9190910192915050565b60208152600082518060208401526104228160408501602087016102f5565b601f01601f19169190910160400192915050565b610292806104456000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b61009f565b565b606061004e838360405180606001604052806027815260200161025f602791396100c3565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e8080156100be573d6000f35b3d6000fd5b6060600080856001600160a01b0316856040516100e0919061020f565b600060405180830381855af49150503d806000811461011b576040519150601f19603f3d011682016040523d82523d6000602084013e610120565b606091505b50915091506101318683838761013b565b9695505050505050565b606083156101af5782516000036101a8576001600160a01b0385163b6101a85760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b50816101b9565b6101b983836101c1565b949350505050565b8151156101d15781518083602001fd5b8060405162461bcd60e51b815260040161019f919061022b565b60005b838110156102065781810151838201526020016101ee565b50506000910152565b600082516102218184602087016101eb565b9190910192915050565b602081526000825180602084015261024a8160408501602087016101eb565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH3 0x7B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9CB0A124 GT PUSH3 0x56 JUMPI DUP1 PUSH4 0x9CB0A124 EQ PUSH3 0xFD JUMPI DUP1 PUSH4 0xA8A9C29E EQ PUSH3 0x123 JUMPI DUP1 PUSH4 0xF10832F1 EQ PUSH3 0x14A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH3 0x80 JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH3 0xAC JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH3 0xC5 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x97 PUSH3 0x91 CALLDATASIZE PUSH1 0x4 PUSH3 0x5F8 JUMP JUMPDEST PUSH3 0x171 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0xB6 PUSH3 0x1C4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0xA3 SWAP2 SWAP1 PUSH3 0x624 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH3 0xA3 JUMP JUMPDEST PUSH3 0x114 PUSH3 0x10E CALLDATASIZE PUSH1 0x4 PUSH3 0x68A JUMP JUMPDEST PUSH3 0x1F0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0xA3 SWAP2 SWAP1 PUSH3 0x75B JUMP JUMPDEST PUSH3 0x13A PUSH3 0x134 CALLDATASIZE PUSH1 0x4 PUSH3 0x7A8 JUMP JUMPDEST PUSH3 0x208 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0xA3 SWAP3 SWAP2 SWAP1 PUSH3 0x8F7 JUMP JUMPDEST PUSH3 0x161 PUSH3 0x15B CALLDATASIZE PUSH1 0x4 PUSH3 0x93F JUMP JUMPDEST PUSH3 0x24F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0xA3 SWAP3 SWAP2 SWAP1 PUSH3 0xA0D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x99718B5 PUSH1 0xE4 SHL EQ DUP1 PUSH3 0x1A2 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH3 0x1BE JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH3 0x1CE PUSH3 0x5CC JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH3 0x201 PUSH1 0x0 PUSH1 0x1 DUP1 PUSH3 0x333 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH3 0x228 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x98990C5 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH3 0x26F PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 PUSH1 0x44 ADD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x189ACDBD PUSH1 0xE3 SHL OR SWAP1 MSTORE SWAP1 POP PUSH3 0x305 DUP2 PUSH3 0x2F5 PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH3 0x4CC JUMP JUMPDEST SWAP3 POP PUSH3 0x313 PUSH1 0x1 PUSH3 0x508 JUMP JUMPDEST DUP3 MSTORE PUSH3 0x324 PUSH1 0x0 PUSH1 0x1 DUP2 PUSH3 0x333 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP SWAP1 SWAP4 SWAP1 SWAP3 POP SWAP1 POP JUMP JUMPDEST PUSH1 0x60 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH3 0x369 JUMPI PUSH1 0x40 MLOAD PUSH4 0x3A4013CD PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0x375 DUP5 DUP5 PUSH3 0xA4F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x399 JUMPI PUSH3 0x399 PUSH3 0x929 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH3 0x3F4 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD DUP3 SWAP1 MSTORE SWAP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 DUP3 ADD MSTORE DUP3 MSTORE PUSH1 0x0 NOT SWAP1 SWAP3 ADD SWAP2 ADD DUP2 PUSH3 0x3B8 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP DUP4 JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT ISZERO PUSH3 0x4C4 JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 DUP5 PUSH1 0x2 DUP2 GT ISZERO PUSH3 0x434 JUMPI PUSH3 0x434 PUSH3 0x6DE JUMP JUMPDEST DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x60 DUP3 ADD MSTORE PUSH32 0xA280EEC51AB8E1BC4B6B0C1B7F1BDE785761B787A49DB404E3E9338ED9B016EF PUSH1 0x80 SWAP1 SWAP2 ADD MSTORE DUP3 PUSH3 0x487 DUP8 DUP5 PUSH3 0xA4F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MLOAD DUP2 LT PUSH3 0x4A3 JUMPI PUSH3 0x4A3 PUSH3 0xA79 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP DUP1 DUP1 PUSH3 0x4BB SWAP1 PUSH3 0xA8F JUMP JUMPDEST SWAP2 POP POP PUSH3 0x3F9 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH3 0x4DE SWAP1 PUSH3 0x5EA JUMP JUMPDEST PUSH3 0x4EB SWAP3 SWAP2 SWAP1 PUSH3 0xAB8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH3 0x4C4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x60 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x52F JUMPI PUSH3 0x52F PUSH3 0x929 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH3 0x559 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT ISZERO PUSH3 0x5C6 JUMPI DUP1 DUP3 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MLOAD DUP2 LT PUSH3 0x599 JUMPI PUSH3 0x599 PUSH3 0xA79 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE DUP1 PUSH3 0x5BD DUP2 PUSH3 0xA8F JUMP JUMPDEST SWAP2 POP POP PUSH3 0x55F JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x6FE DUP1 PUSH3 0xADD DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x60B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH3 0x201 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH3 0x651 JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH3 0x62D JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x672 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x5C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x69E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x6A9 DUP4 PUSH3 0x65A JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x6C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x6D4 DUP6 DUP3 DUP7 ADD PUSH3 0x677 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP2 MLOAD PUSH1 0x3 DUP2 LT PUSH3 0x717 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP4 MSTORE POP PUSH1 0x20 DUP2 DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP1 DUP4 ADD MLOAD DUP3 AND SWAP1 DUP5 ADD MSTORE PUSH1 0x60 DUP1 DUP4 ADD MLOAD SWAP1 SWAP2 AND SWAP1 DUP4 ADD MSTORE PUSH1 0x80 SWAP1 DUP2 ADD MLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x79C JUMPI PUSH3 0x78D DUP4 DUP6 MLOAD PUSH3 0x6F4 JUMP JUMPDEST SWAP4 DUP6 ADD SWAP4 SWAP3 POP PUSH1 0x1 ADD PUSH3 0x777 JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH3 0x7BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x7C9 DUP5 PUSH3 0x65A JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH3 0x7E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x7FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x80C DUP7 DUP3 DUP8 ADD PUSH3 0x677 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x83E JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD DUP3 ADD MSTORE ADD PUSH3 0x820 JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x20 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x20 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x40 DUP1 DUP5 MSTORE DUP2 MLOAD SWAP1 DUP5 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x20 SWAP2 SWAP1 DUP3 ADD SWAP1 PUSH1 0x60 DUP7 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x8A5 JUMPI DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH3 0x87E JUMP JUMPDEST POP POP DUP5 DUP4 ADD MLOAD DUP7 DUP3 SUB DUP8 DUP6 ADD MSTORE DUP1 MLOAD DUP1 DUP4 MSTORE SWAP1 DUP5 ADD SWAP3 POP PUSH1 0x0 SWAP2 DUP5 ADD SWAP1 JUMPDEST DUP1 DUP4 LT ISZERO PUSH3 0x8EC JUMPI PUSH3 0x8D9 DUP3 DUP6 MLOAD PUSH3 0x6F4 JUMP JUMPDEST SWAP2 POP DUP5 DUP5 ADD SWAP4 POP PUSH1 0x1 DUP4 ADD SWAP3 POP PUSH3 0x8C3 JUMP JUMPDEST POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 PUSH3 0x90C PUSH1 0x40 DUP4 ADD DUP6 PUSH3 0x816 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 ADD MSTORE PUSH3 0x920 DUP2 DUP6 PUSH3 0x85E JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x953 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x95E DUP4 PUSH3 0x65A JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH3 0x97C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x991 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH3 0x9A6 JUMPI PUSH3 0x9A6 PUSH3 0x929 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH3 0x9D1 JUMPI PUSH3 0x9D1 PUSH3 0x929 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH3 0x9EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH3 0xA31 PUSH1 0x40 DUP4 ADD DUP5 PUSH3 0x85E JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND DUP3 DUP3 AND SUB SWAP1 DUP1 DUP3 GT ISZERO PUSH3 0xA72 JUMPI PUSH3 0xA72 PUSH3 0xA39 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND DUP2 DUP2 SUB PUSH3 0xAAE JUMPI PUSH3 0xAAE PUSH3 0xA39 JUMP JUMPDEST PUSH1 0x1 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH3 0xA31 PUSH1 0x40 DUP4 ADD DUP5 PUSH3 0x816 JUMP INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH2 0x6FE CODESIZE SUB DUP1 PUSH2 0x6FE DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x22 SWAP2 PUSH2 0x319 JUMP JUMPDEST PUSH2 0x2E DUP3 DUP3 PUSH1 0x0 PUSH2 0x35 JUMP JUMPDEST POP POP PUSH2 0x436 JUMP JUMPDEST PUSH2 0x3E DUP4 PUSH2 0x6B JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD GT DUP1 PUSH2 0x4B JUMPI POP DUP1 JUMPDEST ISZERO PUSH2 0x66 JUMPI PUSH2 0x64 DUP4 DUP4 PUSH2 0xAB PUSH1 0x20 SHL PUSH2 0x29 OR PUSH1 0x20 SHR JUMP JUMPDEST POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x74 DUP2 PUSH2 0xD7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xD0 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x6D7 PUSH1 0x27 SWAP2 CODECOPY PUSH2 0x1A9 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xEA DUP2 PUSH2 0x222 PUSH1 0x20 SHL PUSH2 0x55 OR PUSH1 0x20 SHR JUMP JUMPDEST PUSH2 0x151 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313936373A206E657720696D706C656D656E746174696F6E206973206E PUSH1 0x44 DUP3 ADD MSTORE PUSH13 0x1BDD08184818DBDB9D1C9858DD PUSH1 0x9A SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH2 0x188 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC PUSH1 0x0 SHL PUSH2 0x231 PUSH1 0x20 SHL PUSH2 0x64 OR PUSH1 0x20 SHR JUMP JUMPDEST DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0x1C6 SWAP2 SWAP1 PUSH2 0x3E7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x201 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x206 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x218 DUP7 DUP4 DUP4 DUP8 PUSH2 0x234 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x2A3 JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0x29C JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0x29C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x148 JUMP JUMPDEST POP DUP2 PUSH2 0x2AD JUMP JUMPDEST PUSH2 0x2AD DUP4 DUP4 PUSH2 0x2B5 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x2C5 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x148 SWAP2 SWAP1 PUSH2 0x403 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x310 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2F8 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x32C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x343 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x360 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x374 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x386 JUMPI PUSH2 0x386 PUSH2 0x2DF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x3AE JUMPI PUSH2 0x3AE PUSH2 0x2DF JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x3C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3D8 DUP4 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x2F5 JUMP JUMPDEST DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x3F9 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x2F5 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x422 DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x2F5 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x292 DUP1 PUSH2 0x445 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLDATASIZE PUSH2 0x13 JUMPI PUSH2 0x11 PUSH2 0x17 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x11 JUMPDEST PUSH2 0x27 PUSH2 0x22 PUSH2 0x67 JUMP JUMPDEST PUSH2 0x9F JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x60 PUSH2 0x4E DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x25F PUSH1 0x27 SWAP2 CODECOPY PUSH2 0xC3 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9A PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 DUP1 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE PUSH1 0x0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH2 0xBE JUMPI RETURNDATASIZE PUSH1 0x0 RETURN JUMPDEST RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0xE0 SWAP2 SWAP1 PUSH2 0x20F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x11B JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x120 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x131 DUP7 DUP4 DUP4 DUP8 PUSH2 0x13B JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x1AF JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0x1A8 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0x1A8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP DUP2 PUSH2 0x1B9 JUMP JUMPDEST PUSH2 0x1B9 DUP4 DUP4 PUSH2 0x1C1 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x1D1 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x19F SWAP2 SWAP1 PUSH2 0x22B JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x206 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1EE JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x221 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x1EB JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x24A DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x1EB JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A164 PUSH20 0x6F6C6343000811000A416464726573733A206C6F PUSH24 0x2D6C6576656C2064656C65676174652063616C6C20666169 PUSH13 0x6564A164736F6C634300081100 EXP ","sourceMap":"816:1588:54:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1852:293:83;;;;;;:::i;:::-;;:::i;:::-;;;470:14:92;;463:22;445:41;;433:2;418:18;1852:293:83;;;;;;;;631:98:90;;;:::i;:::-;;;;;;;:::i;2184:94:83:-;;;-1:-1:-1;;;;;2257:14:83;1167:55:92;1149:74;;1137:2;1122:18;2184:94:83;1003:226:92;2103:299:54;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1757:307::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;1099:509::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;1852:293:83:-;1938:4;-1:-1:-1;;;;;;1973:46:83;;-1:-1:-1;;;1973:46:83;;:112;;-1:-1:-1;;;;;;;2035:50:83;;-1:-1:-1;;;2035:50:83;1973:112;:165;;;-1:-1:-1;;;;;;;;;;937:40:38;;;2101:37:83;1954:184;1852:293;-1:-1:-1;;1852:293:83:o;631:98:90:-;679:15;;:::i;:::-;-1:-1:-1;706:16:90;;;;;;;;714:1;706:16;;717:1;706:16;;;;-1:-1:-1;706:16:90;;;;;;;;631:98::o;2103:299:54:-;2225:56;2333:62;2349:1;965;;2333:15;:62::i;:::-;2319:76;2103:299;-1:-1:-1;;;2103:299:54:o;1757:307::-;1906:12;1920:24;-1:-1:-1;;;;;;;;;;;;;;;;;;;1920:24:54;2001:56;;-1:-1:-1;;;2001:56:54;;2031:1;2001:56;;;8020:34:92;965:1:54;8070:18:92;;;8063:43;7968:18;;2001:56:54;;;;;;;1099:509;1194:14;1210:42;-1:-1:-1;;;;;;;;;;;;;;;;;;;1210:42:54;1288:106;;-1:-1:-1;;;;;1167:55:92;;1288:106:54;;;1149:74:92;1264:21:54;;1122:18:92;;1288:106:54;;;-1:-1:-1;;1288:106:54;;;;;;;;;;;;;;;;-1:-1:-1;;;1288:106:54;;;;-1:-1:-1;1413:42:54;1288:106;1413:16;2257:14:83;;2184:94;1413:16:54;-1:-1:-1;;;;;1413:32:54;;;:42::i;:::-;1404:51;;1493:14;1505:1;1493:11;:14::i;:::-;1465:42;;1549:52;1465:25;1568:1;1465:25;1549:15;:52::i;:::-;1517:29;;;:84;-1:-1:-1;1099:509:54;;1517:17;;-1:-1:-1;1099:509:54;-1:-1:-1;1099:509:54:o;580:666:52:-;699:56;780:8;-1:-1:-1;;;;;767:21:52;:10;-1:-1:-1;;;;;767:21:52;;763:53;;;797:19;;-1:-1:-1;;;797:19:52;;;;;;;;;;;763:53;879:21;890:10;879:8;:21;:::i;:::-;-1:-1:-1;;;;;837:64:52;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;837:64:52;;-1:-1:-1;;837:64:52;;;;;;;;;;;-1:-1:-1;823:78:52;-1:-1:-1;925:10:52;908:336;941:8;-1:-1:-1;;;;;937:12:52;:1;-1:-1:-1;;;;;937:12:52;;908:336;;;996:241;;;;;;;;1057:2;996:241;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;996:241:52;;;;;;;;;;;;-1:-1:-1;996:241:52;;;;1198:28;996:241;;;;;966:11;978:14;982:10;1088:1;978:14;:::i;:::-;-1:-1:-1;;;;;966:27:52;;;;;;;;;:::i;:::-;;;;;;:271;;;;951:3;;;;;:::i;:::-;;;;908:336;;;;580:666;;;;;:::o;1415:222:85:-;1524:17;1599:6;1614:13;1573:56;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;1529:191:52;1577:24;1633:3;-1:-1:-1;;;;;1619:18:52;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1619:18:52;;1609:28;;1649:9;1644:74;1668:3;-1:-1:-1;;;;;1664:7:52;:1;-1:-1:-1;;;;;1664:7:52;;1644:74;;;1709:1;1688:7;1696:1;-1:-1:-1;;;;;1688:10:52;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1688:23:52;;;:10;;;;;;;;;;;:23;1673:3;;;;:::i;:::-;;;;1644:74;;;;1529:191;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::o;14:286:92:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:92;;209:43;;199:71;;266:1;263;256:12;497:501;673:2;658:18;;662:9;753:6;631:4;787:205;801:4;798:1;795:11;787:205;;;864:13;;879:4;860:24;848:37;;908:4;932:12;;;;967:15;;;;821:1;814:9;787:205;;;791:3;;;497:501;;;;:::o;1234:196::-;1302:20;;-1:-1:-1;;;;;1351:54:92;;1341:65;;1331:93;;1420:1;1417;1410:12;1331:93;1234:196;;;:::o;1435:160::-;1500:5;1545:2;1536:6;1531:3;1527:16;1523:25;1520:45;;;1561:1;1558;1551:12;1600:441;1701:6;1709;1762:2;1750:9;1741:7;1737:23;1733:32;1730:52;;;1778:1;1775;1768:12;1730:52;1801:29;1820:9;1801:29;:::i;:::-;1791:39;;1881:2;1870:9;1866:18;1853:32;1908:18;1900:6;1897:30;1894:50;;;1940:1;1937;1930:12;1894:50;1963:72;2027:7;2018:6;2007:9;2003:22;1963:72;:::i;:::-;1953:82;;;1600:441;;;;;:::o;2046:127::-;2107:10;2102:3;2098:20;2095:1;2088:31;2138:4;2135:1;2128:15;2162:4;2159:1;2152:15;2178:696;2253:10;2294:6;2288:13;2327:1;2323:2;2320:9;2310:140;;2372:10;2367:3;2363:20;2360:1;2353:31;2407:4;2404:1;2397:15;2435:4;2432:1;2425:15;2310:140;2459:15;;-1:-1:-1;2521:4:92;2509:17;;;2503:24;-1:-1:-1;;;;;2620:21:92;;;2604:14;;;2597:45;;;;2696:4;2684:17;;;2678:24;2674:33;;2658:14;;;2651:57;2762:4;2750:17;;;2744:24;2740:33;;;2724:14;;;2717:57;2824:4;2812:17;;;2806:24;2790:14;;;2783:48;2863:4;2854:14;;2178:696::o;2879:730::-;3130:2;3182:21;;;3252:13;;3155:18;;;3274:22;;;3101:4;;3130:2;3353:15;;;;3327:2;3312:18;;;3101:4;3396:187;3410:6;3407:1;3404:13;3396:187;;;3466:69;3531:3;3522:6;3516:13;3466:69;:::i;:::-;3558:15;;;;3459:76;-1:-1:-1;3432:1:92;3425:9;3396:187;;;-1:-1:-1;3600:3:92;;2879:730;-1:-1:-1;;;;;;2879:730:92:o;3614:601::-;3723:6;3731;3739;3792:2;3780:9;3771:7;3767:23;3763:32;3760:52;;;3808:1;3805;3798:12;3760:52;3831:29;3850:9;3831:29;:::i;:::-;3821:39;;3910:2;3899:9;3895:18;3882:32;3954:6;3947:5;3943:18;3936:5;3933:29;3923:57;;3976:1;3973;3966:12;3923:57;3999:5;-1:-1:-1;4055:2:92;4040:18;;4027:32;4082:18;4071:30;;4068:50;;;4114:1;4111;4104:12;4068:50;4137:72;4201:7;4192:6;4181:9;4177:22;4137:72;:::i;:::-;4127:82;;;3614:601;;;;;:::o;4220:422::-;4261:3;4299:5;4293:12;4326:6;4321:3;4314:19;4351:1;4361:162;4375:6;4372:1;4369:13;4361:162;;;4437:4;4493:13;;;4489:22;;4483:29;4465:11;;;4461:20;;4454:59;4390:12;4361:162;;;4365:3;4568:1;4561:4;4552:6;4547:3;4543:16;4539:27;4532:38;4631:4;4624:2;4620:7;4615:2;4607:6;4603:15;4599:29;4594:3;4590:39;4586:50;4579:57;;;4220:422;;;;:::o;4647:1162::-;4780:12;;4746:4;4801:17;;;4867:19;;4737:14;;;4895:20;;;4707:3;;4964:4;;4991:21;;;;4942:2;4933:12;;;4707:3;5040:224;5054:6;5051:1;5048:13;5040:224;;;5121:13;;-1:-1:-1;;;;;5117:62:92;5103:77;;5239:15;;;;5202:14;;;;5076:1;5069:9;5040:224;;;-1:-1:-1;;5301:14:92;;;5295:21;5346:15;;;5332:12;;;5325:37;5414:21;;5444:23;;;5524;;;;-1:-1:-1;5567:1:92;;5485:14;;;5577:205;5593:8;5588:3;5585:17;5577:205;;;5657:73;5724:5;5713:8;5707:15;5657:73;:::i;:::-;5648:82;;5769:2;5759:8;5755:17;5743:29;;5621:1;5616:3;5612:11;5605:18;;5577:205;;;-1:-1:-1;5798:5:92;4647:1162;-1:-1:-1;;;;;;4647:1162:92:o;5814:450::-;6061:2;6050:9;6043:21;6024:4;6087:44;6127:2;6116:9;6112:18;6104:6;6087:44;:::i;:::-;6179:9;6171:6;6167:22;6162:2;6151:9;6147:18;6140:50;6207:51;6251:6;6243;6207:51;:::i;:::-;6199:59;5814:450;-1:-1:-1;;;;;5814:450:92:o;6269:127::-;6330:10;6325:3;6321:20;6318:1;6311:31;6361:4;6358:1;6351:15;6385:4;6382:1;6375:15;6401:995;6478:6;6486;6539:2;6527:9;6518:7;6514:23;6510:32;6507:52;;;6555:1;6552;6545:12;6507:52;6578:29;6597:9;6578:29;:::i;:::-;6568:39;;6658:2;6647:9;6643:18;6630:32;6681:18;6722:2;6714:6;6711:14;6708:34;;;6738:1;6735;6728:12;6708:34;6776:6;6765:9;6761:22;6751:32;;6821:7;6814:4;6810:2;6806:13;6802:27;6792:55;;6843:1;6840;6833:12;6792:55;6879:2;6866:16;6901:2;6897;6894:10;6891:36;;;6907:18;;:::i;:::-;6982:2;6976:9;6950:2;7036:13;;-1:-1:-1;;7032:22:92;;;7056:2;7028:31;7024:40;7012:53;;;7080:18;;;7100:22;;;7077:46;7074:72;;;7126:18;;:::i;:::-;7166:10;7162:2;7155:22;7201:2;7193:6;7186:18;7241:7;7236:2;7231;7227;7223:11;7219:20;7216:33;7213:53;;;7262:1;7259;7252:12;7213:53;7318:2;7313;7309;7305:11;7300:2;7292:6;7288:15;7275:46;7363:1;7358:2;7353;7345:6;7341:15;7337:24;7330:35;7384:6;7374:16;;;;;;;6401:995;;;;;:::o;7401:410::-;-1:-1:-1;;;;;7634:6:92;7630:55;7619:9;7612:74;7722:2;7717;7706:9;7702:18;7695:30;7593:4;7742:63;7801:2;7790:9;7786:18;7778:6;7742:63;:::i;:::-;7734:71;7401:410;-1:-1:-1;;;;7401:410:92:o;8362:127::-;8423:10;8418:3;8414:20;8411:1;8404:31;8454:4;8451:1;8444:15;8478:4;8475:1;8468:15;8494:208;-1:-1:-1;;;;;8638:10:92;;;8626;;;8622:27;;8661:12;;;8658:38;;;8676:18;;:::i;:::-;8658:38;8494:208;;;;:::o;8707:127::-;8768:10;8763:3;8759:20;8756:1;8749:31;8799:4;8796:1;8789:15;8823:4;8820:1;8813:15;8839:234;8878:3;-1:-1:-1;;;;;8983:2:92;8976:5;8972:14;9010:2;9001:7;8998:15;8995:41;;9016:18;;:::i;:::-;9065:1;9052:15;;8839:234;-1:-1:-1;;;8839:234:92:o;9078:337::-;-1:-1:-1;;;;;9257:6:92;9253:55;9242:9;9235:74;9345:2;9340;9329:9;9325:18;9318:30;9216:4;9365:44;9405:2;9394:9;9390:18;9382:6;9365:44;:::i"},"gasEstimates":{"creation":{"codeDepositCost":"916600","executionCost":"infinite","totalCost":"infinite"},"external":{"implementation()":"infinite","prepareInstallation(address,bytes)":"infinite","prepareUninstallation(address,(address,address[],bytes))":"infinite","prepareUpdate(address,uint16,(address,address[],bytes))":"660","protocolVersion()":"infinite","supportsInterface(bytes4)":"482"}},"methodIdentifiers":{"implementation()":"5c60da1b","prepareInstallation(address,bytes)":"f10832f1","prepareUninstallation(address,(address,address[],bytes))":"9cb0a124","prepareUpdate(address,uint16,(address,address[],bytes))":"a8a9c29e","protocolVersion()":"2ae9c600","supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ConflictingValues\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"fromBuild\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"thisBuild\",\"type\":\"uint16\"}],\"name\":\"InvalidUpdatePath\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_dao\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"prepareInstallation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"plugin\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address[]\",\"name\":\"helpers\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"enum PermissionLib.Operation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"condition\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PermissionLib.MultiTargetPermission[]\",\"name\":\"permissions\",\"type\":\"tuple[]\"}],\"internalType\":\"struct IPluginSetup.PreparedSetupData\",\"name\":\"preparedSetupData\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_dao\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"plugin\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"currentHelpers\",\"type\":\"address[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IPluginSetup.SetupPayload\",\"name\":\"_payload\",\"type\":\"tuple\"}],\"name\":\"prepareUninstallation\",\"outputs\":[{\"components\":[{\"internalType\":\"enum PermissionLib.Operation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"condition\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PermissionLib.MultiTargetPermission[]\",\"name\":\"permissions\",\"type\":\"tuple[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_dao\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"_fromBuild\",\"type\":\"uint16\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"plugin\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"currentHelpers\",\"type\":\"address[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IPluginSetup.SetupPayload\",\"name\":\"_payload\",\"type\":\"tuple\"}],\"name\":\"prepareUpdate\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address[]\",\"name\":\"helpers\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"enum PermissionLib.Operation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"condition\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PermissionLib.MultiTargetPermission[]\",\"name\":\"permissions\",\"type\":\"tuple[]\"}],\"internalType\":\"struct IPluginSetup.PreparedSetupData\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"protocolVersion\",\"outputs\":[{\"internalType\":\"uint8[3]\",\"name\":\"\",\"type\":\"uint8[3]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"DO NOT USE IN PRODUCTION!\",\"errors\":{\"InvalidUpdatePath(uint16,uint16)\":[{\"params\":{\"fromBuild\":\"The build number to update from.\",\"thisBuild\":\"The build number of this setup to update to.\"}}]},\"kind\":\"dev\",\"methods\":{\"implementation()\":{\"details\":\"The implementation can be instantiated via the `new` keyword, cloned via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)), or proxied via the UUPS proxy pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\",\"returns\":{\"_0\":\"The address of the plugin implementation contract.\"}},\"prepareInstallation(address,bytes)\":{\"params\":{\"_dao\":\"The address of the installing DAO.\",\"_data\":\"The bytes-encoded data containing the input parameters for the installation as specified in the plugin's build metadata JSON file.\"},\"returns\":{\"plugin\":\"The address of the `Plugin` contract being prepared for installation.\",\"preparedSetupData\":\"The deployed plugin's relevant data which consists of helpers and permissions.\"}},\"prepareUninstallation(address,(address,address[],bytes))\":{\"params\":{\"_dao\":\"The address of the uninstalling DAO.\",\"_payload\":\"The relevant data necessary for the `prepareUninstallation`. See above.\"},\"returns\":{\"permissions\":\"The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the uninstalling DAO.\"}},\"prepareUpdate(address,uint16,(address,address[],bytes))\":{\"details\":\"The default implementation for the initial build 1 that reverts because no earlier build exists.\",\"params\":{\"_dao\":\"The address of the updating DAO.\",\"_fromBuild\":\"The build number of the plugin to update from.\",\"_payload\":\"The relevant data necessary for the `prepareUpdate`. See above.\"},\"returns\":{\"_0\":\"The initialization data to be passed to upgradeable contracts when the update is applied in the `PluginSetupProcessor`.\",\"_1\":\"The deployed plugin's relevant data which consists of helpers and permissions.\"}},\"protocolVersion()\":{\"details\":\"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\",\"returns\":{\"_0\":\"Returns the semantic Aragon OSx protocol version number.\"}},\"supportsInterface(bytes4)\":{\"params\":{\"_interfaceId\":\"The ID of the interface.\"},\"returns\":{\"_0\":\"Returns `true` if the interface is supported.\"}}},\"version\":1},\"userdoc\":{\"errors\":{\"InvalidUpdatePath(uint16,uint16)\":[{\"notice\":\"Thrown when an update path is not available, for example, if this is the initial build.\"}]},\"kind\":\"user\",\"methods\":{\"implementation()\":{\"notice\":\"Returns the plugin implementation address.\"},\"prepareInstallation(address,bytes)\":{\"notice\":\"Prepares the installation of a plugin.\"},\"prepareUninstallation(address,(address,address[],bytes))\":{\"notice\":\"Prepares the uninstallation of a plugin.\"},\"prepareUpdate(address,uint16,(address,address[],bytes))\":{\"notice\":\"Prepares the update of a plugin.\"},\"protocolVersion()\":{\"notice\":\"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Checks if this or the parent contract supports an interface by its ID.\"}},\"notice\":\"A mock plugin setup of an upgradeable plugin to be deployed via the UUPS pattern. v1.1 (Release 1, Build 1)\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/mocks/plugin/PluginUUPSUpgradeableSetupMock.sol\":\"PluginUUPSUpgradeableSetupMockBuild1\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/interfaces/IERC1967Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (interfaces/IERC1967.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\\n *\\n * _Available since v4.8.3._\\n */\\ninterface IERC1967Upgradeable {\\n /**\\n * @dev Emitted when the implementation is upgraded.\\n */\\n event Upgraded(address indexed implementation);\\n\\n /**\\n * @dev Emitted when the admin account has changed.\\n */\\n event AdminChanged(address previousAdmin, address newAdmin);\\n\\n /**\\n * @dev Emitted when the beacon is changed.\\n */\\n event BeaconUpgraded(address indexed beacon);\\n}\\n\",\"keccak256\":\"0x47d6e06872b12e72c79d1b5eb55842f860b5fb1207b2317c2358d2766b950a7b\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822ProxiableUpgradeable {\\n /**\\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n * address.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy.\\n */\\n function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../beacon/IBeaconUpgradeable.sol\\\";\\nimport \\\"../../interfaces/IERC1967Upgradeable.sol\\\";\\nimport \\\"../../interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\nimport \\\"../../utils/StorageSlotUpgradeable.sol\\\";\\nimport {Initializable} from \\\"../utils/Initializable.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n */\\nabstract contract ERC1967UpgradeUpgradeable is Initializable, IERC1967Upgradeable {\\n // This is the keccak-256 hash of \\\"eip1967.proxy.rollback\\\" subtracted by 1\\n bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n /**\\n * @dev Storage slot with the address of the current implementation.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n function __ERC1967Upgrade_init() internal onlyInitializing {\\n }\\n\\n function __ERC1967Upgrade_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _getImplementation() internal view returns (address) {\\n return StorageSlotUpgradeable.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 implementation slot.\\n */\\n function _setImplementation(address newImplementation) private {\\n require(AddressUpgradeable.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n StorageSlotUpgradeable.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n }\\n\\n /**\\n * @dev Perform implementation upgrade\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeTo(address newImplementation) internal {\\n _setImplementation(newImplementation);\\n emit Upgraded(newImplementation);\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCall(address newImplementation, bytes memory data, bool forceCall) internal {\\n _upgradeTo(newImplementation);\\n if (data.length > 0 || forceCall) {\\n AddressUpgradeable.functionDelegateCall(newImplementation, data);\\n }\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCallUUPS(address newImplementation, bytes memory data, bool forceCall) internal {\\n // Upgrades from old implementations will perform a rollback test. This test requires the new\\n // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n // this special case will break upgrade paths from old UUPS implementation to new ones.\\n if (StorageSlotUpgradeable.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n _setImplementation(newImplementation);\\n } else {\\n try IERC1822ProxiableUpgradeable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n require(slot == _IMPLEMENTATION_SLOT, \\\"ERC1967Upgrade: unsupported proxiableUUID\\\");\\n } catch {\\n revert(\\\"ERC1967Upgrade: new implementation is not UUPS\\\");\\n }\\n _upgradeToAndCall(newImplementation, data, forceCall);\\n }\\n }\\n\\n /**\\n * @dev Storage slot with the admin of the contract.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _getAdmin() internal view returns (address) {\\n return StorageSlotUpgradeable.getAddressSlot(_ADMIN_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 admin slot.\\n */\\n function _setAdmin(address newAdmin) private {\\n require(newAdmin != address(0), \\\"ERC1967: new admin is the zero address\\\");\\n StorageSlotUpgradeable.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n */\\n function _changeAdmin(address newAdmin) internal {\\n emit AdminChanged(_getAdmin(), newAdmin);\\n _setAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\\n */\\n bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n /**\\n * @dev Returns the current beacon.\\n */\\n function _getBeacon() internal view returns (address) {\\n return StorageSlotUpgradeable.getAddressSlot(_BEACON_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new beacon in the EIP1967 beacon slot.\\n */\\n function _setBeacon(address newBeacon) private {\\n require(AddressUpgradeable.isContract(newBeacon), \\\"ERC1967: new beacon is not a contract\\\");\\n require(\\n AddressUpgradeable.isContract(IBeaconUpgradeable(newBeacon).implementation()),\\n \\\"ERC1967: beacon implementation is not a contract\\\"\\n );\\n StorageSlotUpgradeable.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n }\\n\\n /**\\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n *\\n * Emits a {BeaconUpgraded} event.\\n */\\n function _upgradeBeaconToAndCall(address newBeacon, bytes memory data, bool forceCall) internal {\\n _setBeacon(newBeacon);\\n emit BeaconUpgraded(newBeacon);\\n if (data.length > 0 || forceCall) {\\n AddressUpgradeable.functionDelegateCall(IBeaconUpgradeable(newBeacon).implementation(), data);\\n }\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x7795808e3899c805254e3ae58074b20f799b466e3f43e057e47bedee5fb771f8\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeaconUpgradeable {\\n /**\\n * @dev Must return an address that can be used as a delegate call target.\\n *\\n * {BeaconProxy} will check that this address is a contract.\\n */\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/UUPSUpgradeable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport \\\"../ERC1967/ERC1967UpgradeUpgradeable.sol\\\";\\nimport {Initializable} from \\\"./Initializable.sol\\\";\\n\\n/**\\n * @dev An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an\\n * {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy.\\n *\\n * A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is\\n * reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing\\n * `UUPSUpgradeable` with a custom implementation of upgrades.\\n *\\n * The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism.\\n *\\n * _Available since v4.1._\\n */\\nabstract contract UUPSUpgradeable is Initializable, IERC1822ProxiableUpgradeable, ERC1967UpgradeUpgradeable {\\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable state-variable-assignment\\n address private immutable __self = address(this);\\n\\n /**\\n * @dev Check that the execution is being performed through a delegatecall call and that the execution context is\\n * a proxy contract with an implementation (as defined in ERC1967) pointing to self. This should only be the case\\n * for UUPS and transparent proxies that are using the current contract as their implementation. Execution of a\\n * function through ERC1167 minimal proxies (clones) would not normally pass this test, but is not guaranteed to\\n * fail.\\n */\\n modifier onlyProxy() {\\n require(address(this) != __self, \\\"Function must be called through delegatecall\\\");\\n require(_getImplementation() == __self, \\\"Function must be called through active proxy\\\");\\n _;\\n }\\n\\n /**\\n * @dev Check that the execution is not being performed through a delegate call. This allows a function to be\\n * callable on the implementing contract but not through proxies.\\n */\\n modifier notDelegated() {\\n require(address(this) == __self, \\\"UUPSUpgradeable: must not be called through delegatecall\\\");\\n _;\\n }\\n\\n function __UUPSUpgradeable_init() internal onlyInitializing {\\n }\\n\\n function __UUPSUpgradeable_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the\\n * implementation. It is used to validate the implementation's compatibility when performing an upgrade.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\\n */\\n function proxiableUUID() external view virtual override notDelegated returns (bytes32) {\\n return _IMPLEMENTATION_SLOT;\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy to `newImplementation`.\\n *\\n * Calls {_authorizeUpgrade}.\\n *\\n * Emits an {Upgraded} event.\\n *\\n * @custom:oz-upgrades-unsafe-allow-reachable delegatecall\\n */\\n function upgradeTo(address newImplementation) public virtual onlyProxy {\\n _authorizeUpgrade(newImplementation);\\n _upgradeToAndCallUUPS(newImplementation, new bytes(0), false);\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call\\n * encoded in `data`.\\n *\\n * Calls {_authorizeUpgrade}.\\n *\\n * Emits an {Upgraded} event.\\n *\\n * @custom:oz-upgrades-unsafe-allow-reachable delegatecall\\n */\\n function upgradeToAndCall(address newImplementation, bytes memory data) public payable virtual onlyProxy {\\n _authorizeUpgrade(newImplementation);\\n _upgradeToAndCallUUPS(newImplementation, data, true);\\n }\\n\\n /**\\n * @dev Function that should revert when `msg.sender` is not authorized to upgrade the contract. Called by\\n * {upgradeTo} and {upgradeToAndCall}.\\n *\\n * Normally, this function will use an xref:access.adoc[access control] modifier such as {Ownable-onlyOwner}.\\n *\\n * ```solidity\\n * function _authorizeUpgrade(address) internal override onlyOwner {}\\n * ```\\n */\\n function _authorizeUpgrade(address newImplementation) internal virtual;\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0xefb41f5c1a00249b7a99f0782f8c557865605426a3fb6e5fe9ae334293ae4f33\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n function __Context_init() internal onlyInitializing {\\n }\\n\\n function __Context_init_unchained() internal onlyInitializing {\\n }\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n function _contextSuffixLength() internal view virtual returns (uint256) {\\n return 0;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x75097e35253e7fb282ee4d7f27a80eaacfa759923185bf17302a89cbc059c5ef\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/StorageSlot.sol)\\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```solidity\\n * contract ERC1967 {\\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n * function _getImplementation() internal view returns (address) {\\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n * }\\n *\\n * function _setImplementation(address newImplementation) internal {\\n * require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n * }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._\\n * _Available since v4.9 for `string`, `bytes`._\\n */\\nlibrary StorageSlotUpgradeable {\\n struct AddressSlot {\\n address value;\\n }\\n\\n struct BooleanSlot {\\n bool value;\\n }\\n\\n struct Bytes32Slot {\\n bytes32 value;\\n }\\n\\n struct Uint256Slot {\\n uint256 value;\\n }\\n\\n struct StringSlot {\\n string value;\\n }\\n\\n struct BytesSlot {\\n bytes value;\\n }\\n\\n /**\\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n */\\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n */\\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n */\\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n */\\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` with member `value` located at `slot`.\\n */\\n function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\\n */\\n function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` with member `value` located at `slot`.\\n */\\n function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\\n */\\n function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n}\\n\",\"keccak256\":\"0x07ac95acad040f1fb1f6120dd0aa5f702db69446e95f82613721879d30de0908\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165Upgradeable.sol\\\";\\nimport {Initializable} from \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165Upgradeable is Initializable, IERC165Upgradeable {\\n function __ERC165_init() internal onlyInitializing {\\n }\\n\\n function __ERC165_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165Upgradeable).interfaceId;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0xd90d7723512df65ae417adaf0801042940f0dabd60039ceeaffe34aa5b238da1\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165Upgradeable {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/IERC1967.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (interfaces/IERC1967.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\\n *\\n * _Available since v4.8.3._\\n */\\ninterface IERC1967 {\\n /**\\n * @dev Emitted when the implementation is upgraded.\\n */\\n event Upgraded(address indexed implementation);\\n\\n /**\\n * @dev Emitted when the admin account has changed.\\n */\\n event AdminChanged(address previousAdmin, address newAdmin);\\n\\n /**\\n * @dev Emitted when the beacon is changed.\\n */\\n event BeaconUpgraded(address indexed beacon);\\n}\\n\",\"keccak256\":\"0x3cbef5ebc24b415252e2f8c0c9254555d30d9f085603b4b80d9b5ed20ab87e90\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822Proxiable {\\n /**\\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n * address.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy.\\n */\\n function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/Clones.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/Clones.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev https://eips.ethereum.org/EIPS/eip-1167[EIP 1167] is a standard for\\n * deploying minimal proxy contracts, also known as \\\"clones\\\".\\n *\\n * > To simply and cheaply clone contract functionality in an immutable way, this standard specifies\\n * > a minimal bytecode implementation that delegates all calls to a known, fixed address.\\n *\\n * The library includes functions to deploy a proxy using either `create` (traditional deployment) or `create2`\\n * (salted deterministic deployment). It also includes functions to predict the addresses of clones deployed using the\\n * deterministic method.\\n *\\n * _Available since v3.4._\\n */\\nlibrary Clones {\\n /**\\n * @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`.\\n *\\n * This function uses the create opcode, which should never revert.\\n */\\n function clone(address implementation) internal returns (address instance) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n // Cleans the upper 96 bits of the `implementation` word, then packs the first 3 bytes\\n // of the `implementation` address with the bytecode before the address.\\n mstore(0x00, or(shr(0xe8, shl(0x60, implementation)), 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000))\\n // Packs the remaining 17 bytes of `implementation` with the bytecode after the address.\\n mstore(0x20, or(shl(0x78, implementation), 0x5af43d82803e903d91602b57fd5bf3))\\n instance := create(0, 0x09, 0x37)\\n }\\n require(instance != address(0), \\\"ERC1167: create failed\\\");\\n }\\n\\n /**\\n * @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`.\\n *\\n * This function uses the create2 opcode and a `salt` to deterministically deploy\\n * the clone. Using the same `implementation` and `salt` multiple time will revert, since\\n * the clones cannot be deployed twice at the same address.\\n */\\n function cloneDeterministic(address implementation, bytes32 salt) internal returns (address instance) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n // Cleans the upper 96 bits of the `implementation` word, then packs the first 3 bytes\\n // of the `implementation` address with the bytecode before the address.\\n mstore(0x00, or(shr(0xe8, shl(0x60, implementation)), 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000))\\n // Packs the remaining 17 bytes of `implementation` with the bytecode after the address.\\n mstore(0x20, or(shl(0x78, implementation), 0x5af43d82803e903d91602b57fd5bf3))\\n instance := create2(0, 0x09, 0x37, salt)\\n }\\n require(instance != address(0), \\\"ERC1167: create2 failed\\\");\\n }\\n\\n /**\\n * @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}.\\n */\\n function predictDeterministicAddress(\\n address implementation,\\n bytes32 salt,\\n address deployer\\n ) internal pure returns (address predicted) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n let ptr := mload(0x40)\\n mstore(add(ptr, 0x38), deployer)\\n mstore(add(ptr, 0x24), 0x5af43d82803e903d91602b57fd5bf3ff)\\n mstore(add(ptr, 0x14), implementation)\\n mstore(ptr, 0x3d602d80600a3d3981f3363d3d373d3d3d363d73)\\n mstore(add(ptr, 0x58), salt)\\n mstore(add(ptr, 0x78), keccak256(add(ptr, 0x0c), 0x37))\\n predicted := keccak256(add(ptr, 0x43), 0x55)\\n }\\n }\\n\\n /**\\n * @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}.\\n */\\n function predictDeterministicAddress(\\n address implementation,\\n bytes32 salt\\n ) internal view returns (address predicted) {\\n return predictDeterministicAddress(implementation, salt, address(this));\\n }\\n}\\n\",\"keccak256\":\"0x01f055f5c26ba25d7f83e9aa9ba877fbea4d0bf22227de046ea67494bc932999\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (proxy/ERC1967/ERC1967Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../Proxy.sol\\\";\\nimport \\\"./ERC1967Upgrade.sol\\\";\\n\\n/**\\n * @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an\\n * implementation address that can be changed. This address is stored in storage in the location specified by\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the\\n * implementation behind the proxy.\\n */\\ncontract ERC1967Proxy is Proxy, ERC1967Upgrade {\\n /**\\n * @dev Initializes the upgradeable proxy with an initial implementation specified by `_logic`.\\n *\\n * If `_data` is nonempty, it's used as data in a delegate call to `_logic`. This will typically be an encoded\\n * function call, and allows initializing the storage of the proxy like a Solidity constructor.\\n */\\n constructor(address _logic, bytes memory _data) payable {\\n _upgradeToAndCall(_logic, _data, false);\\n }\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _implementation() internal view virtual override returns (address impl) {\\n return ERC1967Upgrade._getImplementation();\\n }\\n}\\n\",\"keccak256\":\"0xa2b22da3032e50b55f95ec1d13336102d675f341167aa76db571ef7f8bb7975d\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../beacon/IBeacon.sol\\\";\\nimport \\\"../../interfaces/IERC1967.sol\\\";\\nimport \\\"../../interfaces/draft-IERC1822.sol\\\";\\nimport \\\"../../utils/Address.sol\\\";\\nimport \\\"../../utils/StorageSlot.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n */\\nabstract contract ERC1967Upgrade is IERC1967 {\\n // This is the keccak-256 hash of \\\"eip1967.proxy.rollback\\\" subtracted by 1\\n bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n /**\\n * @dev Storage slot with the address of the current implementation.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _getImplementation() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 implementation slot.\\n */\\n function _setImplementation(address newImplementation) private {\\n require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n }\\n\\n /**\\n * @dev Perform implementation upgrade\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeTo(address newImplementation) internal {\\n _setImplementation(newImplementation);\\n emit Upgraded(newImplementation);\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCall(address newImplementation, bytes memory data, bool forceCall) internal {\\n _upgradeTo(newImplementation);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(newImplementation, data);\\n }\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCallUUPS(address newImplementation, bytes memory data, bool forceCall) internal {\\n // Upgrades from old implementations will perform a rollback test. This test requires the new\\n // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n // this special case will break upgrade paths from old UUPS implementation to new ones.\\n if (StorageSlot.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n _setImplementation(newImplementation);\\n } else {\\n try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n require(slot == _IMPLEMENTATION_SLOT, \\\"ERC1967Upgrade: unsupported proxiableUUID\\\");\\n } catch {\\n revert(\\\"ERC1967Upgrade: new implementation is not UUPS\\\");\\n }\\n _upgradeToAndCall(newImplementation, data, forceCall);\\n }\\n }\\n\\n /**\\n * @dev Storage slot with the admin of the contract.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _getAdmin() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_ADMIN_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 admin slot.\\n */\\n function _setAdmin(address newAdmin) private {\\n require(newAdmin != address(0), \\\"ERC1967: new admin is the zero address\\\");\\n StorageSlot.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n */\\n function _changeAdmin(address newAdmin) internal {\\n emit AdminChanged(_getAdmin(), newAdmin);\\n _setAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\\n */\\n bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n /**\\n * @dev Returns the current beacon.\\n */\\n function _getBeacon() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_BEACON_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new beacon in the EIP1967 beacon slot.\\n */\\n function _setBeacon(address newBeacon) private {\\n require(Address.isContract(newBeacon), \\\"ERC1967: new beacon is not a contract\\\");\\n require(\\n Address.isContract(IBeacon(newBeacon).implementation()),\\n \\\"ERC1967: beacon implementation is not a contract\\\"\\n );\\n StorageSlot.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n }\\n\\n /**\\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n *\\n * Emits a {BeaconUpgraded} event.\\n */\\n function _upgradeBeaconToAndCall(address newBeacon, bytes memory data, bool forceCall) internal {\\n _setBeacon(newBeacon);\\n emit BeaconUpgraded(newBeacon);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x3b21ae06bf5957f73fa16754b0669c77b7abd8ba6c072d35c3281d446fdb86c2\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (proxy/Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\\n * be specified by overriding the virtual {_implementation} function.\\n *\\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\\n * different contract through the {_delegate} function.\\n *\\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\\n */\\nabstract contract Proxy {\\n /**\\n * @dev Delegates the current call to `implementation`.\\n *\\n * This function does not return to its internal call site, it will return directly to the external caller.\\n */\\n function _delegate(address implementation) internal virtual {\\n assembly {\\n // Copy msg.data. We take full control of memory in this inline assembly\\n // block because it will not return to Solidity code. We overwrite the\\n // Solidity scratch pad at memory position 0.\\n calldatacopy(0, 0, calldatasize())\\n\\n // Call the implementation.\\n // out and outsize are 0 because we don't know the size yet.\\n let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)\\n\\n // Copy the returned data.\\n returndatacopy(0, 0, returndatasize())\\n\\n switch result\\n // delegatecall returns 0 on error.\\n case 0 {\\n revert(0, returndatasize())\\n }\\n default {\\n return(0, returndatasize())\\n }\\n }\\n }\\n\\n /**\\n * @dev This is a virtual function that should be overridden so it returns the address to which the fallback function\\n * and {_fallback} should delegate.\\n */\\n function _implementation() internal view virtual returns (address);\\n\\n /**\\n * @dev Delegates the current call to the address returned by `_implementation()`.\\n *\\n * This function does not return to its internal call site, it will return directly to the external caller.\\n */\\n function _fallback() internal virtual {\\n _beforeFallback();\\n _delegate(_implementation());\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\\n * function in the contract matches the call data.\\n */\\n fallback() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data\\n * is empty.\\n */\\n receive() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`\\n * call, or as part of the Solidity `fallback` or `receive` functions.\\n *\\n * If overridden should call `super._beforeFallback()`.\\n */\\n function _beforeFallback() internal virtual {}\\n}\\n\",\"keccak256\":\"0xc130fe33f1b2132158531a87734153293f6d07bc263ff4ac90e85da9c82c0e27\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeacon {\\n /**\\n * @dev Must return an address that can be used as a delegate call target.\\n *\\n * {BeaconProxy} will check that this address is a contract.\\n */\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/StorageSlot.sol)\\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```solidity\\n * contract ERC1967 {\\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n * function _getImplementation() internal view returns (address) {\\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n * }\\n *\\n * function _setImplementation(address newImplementation) internal {\\n * require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n * }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._\\n * _Available since v4.9 for `string`, `bytes`._\\n */\\nlibrary StorageSlot {\\n struct AddressSlot {\\n address value;\\n }\\n\\n struct BooleanSlot {\\n bool value;\\n }\\n\\n struct Bytes32Slot {\\n bytes32 value;\\n }\\n\\n struct Uint256Slot {\\n uint256 value;\\n }\\n\\n struct StringSlot {\\n string value;\\n }\\n\\n struct BytesSlot {\\n bytes value;\\n }\\n\\n /**\\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n */\\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n */\\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n */\\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n */\\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` with member `value` located at `slot`.\\n */\\n function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\\n */\\n function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` with member `value` located at `slot`.\\n */\\n function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\\n */\\n function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n}\\n\",\"keccak256\":\"0xf09e68aa0dc6722a25bc46490e8d48ed864466d17313b8a0b254c36b54e49899\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165 is IERC165 {\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165).interfaceId;\\n }\\n}\\n\",\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"src/dao/IDAO.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IDAO\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for DAOs within the Aragon App DAO framework.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IDAO {\\n /// @notice The action struct to be consumed by the DAO's `execute` function resulting in an external call.\\n /// @param to The address to call.\\n /// @param value The native token value to be sent with the call.\\n /// @param data The bytes-encoded function selector and calldata for the call.\\n struct Action {\\n address to;\\n uint256 value;\\n bytes data;\\n }\\n\\n /// @notice Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\\n /// @param _where The address of the contract.\\n /// @param _who The address of a EOA or contract to give the permissions.\\n /// @param _permissionId The permission identifier.\\n /// @param _data The optional data passed to the `PermissionCondition` registered.\\n /// @return Returns true if the address has permission, false if not.\\n function hasPermission(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes memory _data\\n ) external view returns (bool);\\n\\n /// @notice Updates the DAO metadata (e.g., an IPFS hash).\\n /// @param _metadata The IPFS hash of the new metadata object.\\n function setMetadata(bytes calldata _metadata) external;\\n\\n /// @notice Emitted when the DAO metadata is updated.\\n /// @param metadata The IPFS hash of the new metadata object.\\n event MetadataSet(bytes metadata);\\n\\n /// @notice Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted.\\n /// @param _callId The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce.\\n /// @param _actions The array of actions.\\n /// @param _allowFailureMap A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @return The array of results obtained from the executed actions in `bytes`.\\n /// @return The resulting failure map containing the actions have actually failed.\\n function execute(\\n bytes32 _callId,\\n Action[] memory _actions,\\n uint256 _allowFailureMap\\n ) external returns (bytes[] memory, uint256);\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param actor The address of the caller.\\n /// @param callId The ID of the call.\\n /// @param actions The array of actions executed.\\n /// @param allowFailureMap The allow failure map encoding which actions are allowed to fail.\\n /// @param failureMap The failure map encoding which actions have failed.\\n /// @param execResults The array with the results of the executed actions.\\n /// @dev The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce.\\n event Executed(\\n address indexed actor,\\n bytes32 callId,\\n Action[] actions,\\n uint256 allowFailureMap,\\n uint256 failureMap,\\n bytes[] execResults\\n );\\n\\n /// @notice Emitted when a standard callback is registered.\\n /// @param interfaceId The ID of the interface.\\n /// @param callbackSelector The selector of the callback function.\\n /// @param magicNumber The magic number to be registered for the callback function selector.\\n event StandardCallbackRegistered(\\n bytes4 interfaceId,\\n bytes4 callbackSelector,\\n bytes4 magicNumber\\n );\\n\\n /// @notice Deposits (native) tokens to the DAO contract with a reference string.\\n /// @param _token The address of the token or address(0) in case of the native token.\\n /// @param _amount The amount of tokens to deposit.\\n /// @param _reference The reference describing the deposit reason.\\n function deposit(address _token, uint256 _amount, string calldata _reference) external payable;\\n\\n /// @notice Emitted when a token deposit has been made to the DAO.\\n /// @param sender The address of the sender.\\n /// @param token The address of the deposited token.\\n /// @param amount The amount of tokens deposited.\\n /// @param _reference The reference describing the deposit reason.\\n event Deposited(\\n address indexed sender,\\n address indexed token,\\n uint256 amount,\\n string _reference\\n );\\n\\n /// @notice Emitted when a native token deposit has been made to the DAO.\\n /// @dev This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).\\n /// @param sender The address of the sender.\\n /// @param amount The amount of native tokens deposited.\\n event NativeTokenDeposited(address sender, uint256 amount);\\n\\n /// @notice Setter for the trusted forwarder verifying the meta transaction.\\n /// @param _trustedForwarder The trusted forwarder address.\\n function setTrustedForwarder(address _trustedForwarder) external;\\n\\n /// @notice Getter for the trusted forwarder verifying the meta transaction.\\n /// @return The trusted forwarder address.\\n function getTrustedForwarder() external view returns (address);\\n\\n /// @notice Emitted when a new TrustedForwarder is set on the DAO.\\n /// @param forwarder the new forwarder address.\\n event TrustedForwarderSet(address forwarder);\\n\\n /// @notice Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\\n /// @param _hash The hash of the data to be signed.\\n /// @param _signature The signature byte array associated with `_hash`.\\n /// @return Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not.\\n function isValidSignature(bytes32 _hash, bytes memory _signature) external returns (bytes4);\\n\\n /// @notice Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\\n /// @param _interfaceId The ID of the interface.\\n /// @param _callbackSelector The selector of the callback function.\\n /// @param _magicNumber The magic number to be registered for the function signature.\\n function registerStandardCallback(\\n bytes4 _interfaceId,\\n bytes4 _callbackSelector,\\n bytes4 _magicNumber\\n ) external;\\n\\n /// @notice Removed function being left here to not corrupt the IDAO interface ID. Any call will revert.\\n /// @dev Introduced in v1.0.0. Removed in v1.4.0.\\n function setSignatureValidator(address) external;\\n}\\n\",\"keccak256\":\"0xb7f615523c26de042edce98731c658f44a1edb2464387ac1b642c4c69f57128e\",\"license\":\"AGPL-3.0-or-later\"},\"src/mocks/plugin/PluginSetupMockData.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {PermissionLib} from \\\"../../permission/PermissionLib.sol\\\";\\n\\naddress constant NO_CONDITION = address(0);\\n\\nerror ConflictingValues();\\n\\n/// @notice Creates a mock `MultiTargetPermission` array by converting a range of `uint160` values into `address` values.\\n/// @param rangeStart The start of the range.\\n/// @param rangeEnd The end of the range (that is not included).\\n/// @param op The permission operation type.\\n/// @return permissions The mock array of permissions.\\n/// @dev DO NOT USE IN PRODUCTION!\\nfunction mockPermissions(\\n uint160 rangeStart,\\n uint160 rangeEnd,\\n PermissionLib.Operation op\\n) pure returns (PermissionLib.MultiTargetPermission[] memory permissions) {\\n if (rangeStart > rangeEnd) revert ConflictingValues();\\n\\n permissions = new PermissionLib.MultiTargetPermission[](rangeEnd - rangeStart);\\n\\n for (uint160 i = rangeStart; i < rangeEnd; i++) {\\n permissions[i - rangeStart] = PermissionLib.MultiTargetPermission({\\n operation: op,\\n where: address(i),\\n who: address(i),\\n condition: PermissionLib.NO_CONDITION,\\n permissionId: keccak256(\\\"MOCK_PERMISSION\\\")\\n });\\n }\\n}\\n\\n/// @notice Creates a mock array of helper addresses of specified length by converting `uint160` values starting from 0 into `address` values.\\n/// @param len The length of the helper array.\\n/// @return helpers The mock array of helper addresses.\\n/// @dev DO NOT USE IN PRODUCTION!\\nfunction mockHelpers(uint160 len) pure returns (address[] memory helpers) {\\n helpers = new address[](len);\\n\\n for (uint160 i = 0; i < len; i++) {\\n helpers[i] = address(i);\\n }\\n}\\n\",\"keccak256\":\"0x529d1b7ea4c348fe18edf81a044792ca8aa1f6ad9a7d2edfd35e38bf8372abf9\",\"license\":\"AGPL-3.0-or-later\"},\"src/mocks/plugin/PluginUUPSUpgradeableMock.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\n/* solhint-disable one-contract-per-file */\\npragma solidity ^0.8.8;\\n\\nimport {PluginUUPSUpgradeable} from \\\"../../plugin/PluginUUPSUpgradeable.sol\\\";\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice A mock upgradeable plugin to be deployed via the UUPS proxy pattern.\\n/// v1.1 (Release 1, Build 1)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableMockBuild1 is PluginUUPSUpgradeable {\\n uint256 public state1;\\n\\n function initialize(IDAO _dao) external initializer {\\n __PluginUUPSUpgradeable_init(_dao);\\n state1 = 1;\\n }\\n}\\n\\n/// @notice A mock upgradeable plugin to be deployed via the UUPS proxy pattern.\\n/// v1.1 (Release 1, Build 2)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableMockBuild2 is PluginUUPSUpgradeable {\\n uint256 public state1;\\n uint256 public state2;\\n\\n function initialize(IDAO _dao) external reinitializer(2) {\\n __PluginUUPSUpgradeable_init(_dao);\\n state1 = 1;\\n state2 = 2;\\n }\\n\\n function initializeFrom(uint16 _previousBuild) external reinitializer(2) {\\n if (_previousBuild < 2) {\\n state2 = 2;\\n }\\n }\\n}\\n\\n/// @notice A mock upgradeable plugin to be deployed via the UUPS proxy pattern.\\n/// v1.1 (Release 1, Build 3)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableMockBuild3 is PluginUUPSUpgradeable {\\n uint256 public state1;\\n uint256 public state2;\\n uint256 public state3;\\n\\n function initialize(IDAO _dao) external reinitializer(3) {\\n __PluginUUPSUpgradeable_init(_dao);\\n state1 = 1;\\n state2 = 2;\\n state3 = 3;\\n }\\n\\n function initializeFrom(uint16 _previousBuild) external reinitializer(3) {\\n if (_previousBuild < 2) {\\n state2 = 2;\\n }\\n if (_previousBuild < 3) {\\n state3 = 3;\\n }\\n }\\n}\\n\\n/// @notice A mock upgradeable plugin missing an initializer function.\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableMockBad is PluginUUPSUpgradeable {\\n uint256 public state1;\\n\\n function notAnInitializer(IDAO _dao) external {\\n __PluginUUPSUpgradeable_init(_dao);\\n state1 = 1;\\n }\\n}\\n\",\"keccak256\":\"0x2917df3b1da0de27f58cf531afeaa4e6c4285717247cbdd9ecc7880ae5cb9cb0\",\"license\":\"AGPL-3.0-or-later\"},\"src/mocks/plugin/PluginUUPSUpgradeableSetupMock.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\n/* solhint-disable one-contract-per-file */\\npragma solidity ^0.8.8;\\n\\nimport {PermissionLib} from \\\"../../permission/PermissionLib.sol\\\";\\nimport {IPluginSetup} from \\\"../../plugin/setup/IPluginSetup.sol\\\";\\nimport {PluginUpgradeableSetup} from \\\"../../plugin/setup/PluginUpgradeableSetup.sol\\\";\\nimport {ProxyLib} from \\\"../../utils/deployment/ProxyLib.sol\\\";\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\nimport {mockPermissions, mockHelpers} from \\\"./PluginSetupMockData.sol\\\";\\nimport {PluginUUPSUpgradeableMockBuild1, PluginUUPSUpgradeableMockBuild2, PluginUUPSUpgradeableMockBuild3} from \\\"./PluginUUPSUpgradeableMock.sol\\\";\\n\\n/// @notice A mock plugin setup of an upgradeable plugin to be deployed via the UUPS pattern.\\n/// v1.1 (Release 1, Build 1)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableSetupMockBuild1 is PluginUpgradeableSetup {\\n using ProxyLib for address;\\n\\n uint16 internal constant THIS_BUILD = 1;\\n\\n constructor() PluginUpgradeableSetup(address(new PluginUUPSUpgradeableMockBuild1())) {}\\n\\n /// @inheritdoc IPluginSetup\\n function prepareInstallation(\\n address _dao,\\n bytes memory\\n ) public returns (address plugin, PreparedSetupData memory preparedSetupData) {\\n bytes memory initData = abi.encodeCall(\\n PluginUUPSUpgradeableMockBuild1.initialize,\\n (IDAO(_dao))\\n );\\n plugin = implementation().deployUUPSProxy(initData);\\n preparedSetupData.helpers = mockHelpers(1);\\n preparedSetupData.permissions = mockPermissions(0, 1, PermissionLib.Operation.Grant);\\n }\\n\\n /// @inheritdoc IPluginSetup\\n /// @dev The default implementation for the initial build 1 that reverts because no earlier build exists.\\n function prepareUpdate(\\n address _dao,\\n uint16 _fromBuild,\\n SetupPayload calldata _payload\\n ) external pure virtual returns (bytes memory, PreparedSetupData memory) {\\n (_dao, _fromBuild, _payload);\\n revert InvalidUpdatePath({fromBuild: 0, thisBuild: THIS_BUILD});\\n }\\n\\n /// @inheritdoc IPluginSetup\\n function prepareUninstallation(\\n address _dao,\\n SetupPayload calldata _payload\\n ) external pure returns (PermissionLib.MultiTargetPermission[] memory permissions) {\\n (_dao, _payload);\\n permissions = mockPermissions(0, THIS_BUILD, PermissionLib.Operation.Revoke);\\n }\\n}\\n\\n/// @notice A mock plugin setup of an upgradeable plugin to be deployed via the UUPS pattern.\\n/// v1.2 (Release 1, Build 2)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableSetupMockBuild2 is PluginUpgradeableSetup {\\n using ProxyLib for address;\\n\\n uint16 internal constant THIS_BUILD = 2;\\n\\n constructor() PluginUpgradeableSetup(address(new PluginUUPSUpgradeableMockBuild2())) {}\\n\\n /// @inheritdoc IPluginSetup\\n function prepareInstallation(\\n address _dao,\\n bytes memory\\n ) external returns (address plugin, PreparedSetupData memory preparedSetupData) {\\n bytes memory initData = abi.encodeCall(\\n PluginUUPSUpgradeableMockBuild2.initialize,\\n (IDAO(_dao))\\n );\\n plugin = implementation().deployUUPSProxy(initData);\\n preparedSetupData.helpers = mockHelpers(THIS_BUILD);\\n preparedSetupData.permissions = mockPermissions(\\n 0,\\n THIS_BUILD,\\n PermissionLib.Operation.Grant\\n );\\n }\\n\\n /// @inheritdoc IPluginSetup\\n function prepareUpdate(\\n address _dao,\\n uint16 _fromBuild,\\n SetupPayload calldata _payload\\n )\\n external\\n pure\\n override\\n returns (bytes memory initData, PreparedSetupData memory preparedSetupData)\\n {\\n (_dao, _payload);\\n\\n // Update from Build 1\\n if (_fromBuild == 1) {\\n preparedSetupData.helpers = mockHelpers(THIS_BUILD);\\n initData = abi.encodeCall(PluginUUPSUpgradeableMockBuild2.initializeFrom, (_fromBuild));\\n preparedSetupData.permissions = mockPermissions(\\n _fromBuild,\\n THIS_BUILD,\\n PermissionLib.Operation.Grant\\n );\\n }\\n }\\n\\n /// @inheritdoc IPluginSetup\\n function prepareUninstallation(\\n address _dao,\\n SetupPayload calldata _payload\\n ) external pure returns (PermissionLib.MultiTargetPermission[] memory permissions) {\\n (_dao, _payload);\\n permissions = mockPermissions(0, THIS_BUILD, PermissionLib.Operation.Revoke);\\n }\\n}\\n\\n/// @notice A mock plugin setup of an upgradeable plugin to be deployed via the UUPS pattern.\\n/// v1.3 (Release 1, Build 3)\\ncontract PluginUUPSUpgradeableSetupMockBuild3 is PluginUpgradeableSetup {\\n using ProxyLib for address;\\n\\n uint16 internal constant THIS_BUILD = 3;\\n\\n constructor() PluginUpgradeableSetup(address(new PluginUUPSUpgradeableMockBuild3())) {}\\n\\n /// @inheritdoc IPluginSetup\\n function prepareInstallation(\\n address _dao,\\n bytes memory\\n ) external returns (address plugin, PreparedSetupData memory preparedSetupData) {\\n bytes memory initData = abi.encodeCall(\\n PluginUUPSUpgradeableMockBuild3.initialize,\\n (IDAO(_dao))\\n );\\n plugin = implementation().deployUUPSProxy(initData);\\n preparedSetupData.helpers = mockHelpers(THIS_BUILD);\\n preparedSetupData.permissions = mockPermissions(\\n 0,\\n THIS_BUILD,\\n PermissionLib.Operation.Grant\\n );\\n }\\n\\n /// @inheritdoc IPluginSetup\\n function prepareUpdate(\\n address _dao,\\n uint16 _fromBuild,\\n SetupPayload calldata _payload\\n )\\n external\\n pure\\n override\\n returns (bytes memory initData, PreparedSetupData memory preparedSetupData)\\n {\\n (_dao, _payload);\\n\\n // Update from Build 1\\n if (_fromBuild == 1) {\\n preparedSetupData.helpers = mockHelpers(THIS_BUILD);\\n initData = abi.encodeCall(PluginUUPSUpgradeableMockBuild3.initializeFrom, (_fromBuild));\\n preparedSetupData.permissions = mockPermissions(\\n _fromBuild,\\n THIS_BUILD,\\n PermissionLib.Operation.Grant\\n );\\n\\n // If this update path should not be supported, you can revert with an error, e.g.,\\n // revert InvalidUpdatePath({fromBuild: _fromBuild, thisBuild: THIS_BUILD});\\n }\\n\\n // Update from Build 2\\n if (_fromBuild == 2) {\\n preparedSetupData.helpers = mockHelpers(THIS_BUILD);\\n initData = abi.encodeCall(PluginUUPSUpgradeableMockBuild3.initializeFrom, (_fromBuild));\\n preparedSetupData.permissions = mockPermissions(\\n _fromBuild,\\n THIS_BUILD,\\n PermissionLib.Operation.Grant\\n );\\n }\\n }\\n\\n /// @inheritdoc IPluginSetup\\n function prepareUninstallation(\\n address _dao,\\n SetupPayload calldata _payload\\n ) external pure returns (PermissionLib.MultiTargetPermission[] memory permissions) {\\n (_dao, _payload);\\n permissions = mockPermissions(0, THIS_BUILD, PermissionLib.Operation.Revoke);\\n }\\n}\\n\",\"keccak256\":\"0x6be5a7611fe85f0e6e1ea08f42bcce810bc4973da1eaa04c88445b8d9af130ba\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/PermissionLib.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title PermissionLib\\n/// @author Aragon X - 2021-2023\\n/// @notice A library containing objects for permission processing.\\n/// @custom:security-contact sirt@aragon.org\\nlibrary PermissionLib {\\n /// @notice A constant expressing that no condition is applied to a permission.\\n address public constant NO_CONDITION = address(0);\\n\\n /// @notice The types of permission operations available in the `PermissionManager`.\\n /// @param Grant The grant operation setting a permission without a condition.\\n /// @param Revoke The revoke operation removing a permission (that was granted with or without a condition).\\n /// @param GrantWithCondition The grant operation setting a permission with a condition.\\n enum Operation {\\n Grant,\\n Revoke,\\n GrantWithCondition\\n }\\n\\n /// @notice A struct containing the information for a permission to be applied on a single target contract without a condition.\\n /// @param operation The permission operation type.\\n /// @param who The address (EOA or contract) receiving the permission.\\n /// @param permissionId The permission identifier.\\n struct SingleTargetPermission {\\n Operation operation;\\n address who;\\n bytes32 permissionId;\\n }\\n\\n /// @notice A struct containing the information for a permission to be applied on multiple target contracts, optionally, with a condition.\\n /// @param operation The permission operation type.\\n /// @param where The address of the target contract for which `who` receives permission.\\n /// @param who The address (EOA or contract) receiving the permission.\\n /// @param condition The `PermissionCondition` that will be asked for authorization on calls connected to the specified permission identifier.\\n /// @param permissionId The permission identifier.\\n struct MultiTargetPermission {\\n Operation operation;\\n address where;\\n address who;\\n address condition;\\n bytes32 permissionId;\\n }\\n}\\n\",\"keccak256\":\"0x470faf3c4891ebc6420ef6cc09f6098917568ccc79268c90954d1478199b6097\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/DaoAuthorizableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ContextUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\\\";\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\nimport {_auth} from \\\"./auth.sol\\\";\\n\\n/// @title DaoAuthorizableUpgradeable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract contract providing a meta-transaction compatible modifier for upgradeable or cloneable contracts to authorize function calls through an associated DAO.\\n/// @dev Make sure to call `__DaoAuthorizableUpgradeable_init` during initialization of the inheriting contract.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract DaoAuthorizableUpgradeable is ContextUpgradeable {\\n /// @notice The associated DAO managing the permissions of inheriting contracts.\\n IDAO private dao_;\\n\\n /// @notice Initializes the contract by setting the associated DAO.\\n /// @param _dao The associated DAO address.\\n // solhint-disable-next-line func-name-mixedcase\\n function __DaoAuthorizableUpgradeable_init(IDAO _dao) internal onlyInitializing {\\n dao_ = _dao;\\n }\\n\\n /// @notice Returns the DAO contract.\\n /// @return The DAO contract.\\n function dao() public view returns (IDAO) {\\n return dao_;\\n }\\n\\n /// @notice A modifier to make functions on inheriting contracts authorized. Permissions to call the function are checked through the associated DAO's permission manager.\\n /// @param _permissionId The permission identifier required to call the method this modifier is applied to.\\n modifier auth(bytes32 _permissionId) {\\n _auth(dao_, address(this), _msgSender(), _permissionId, _msgData());\\n _;\\n }\\n\\n /// @notice This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain (see [OpenZeppelin's guide about storage gaps](https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps)).\\n uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0x7fac6b01b037ba1cb9d6a22d3f43b0785037dcf496ffb672434d9bf7227d2585\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/auth.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice Thrown if a call is unauthorized in the associated DAO.\\n/// @param dao The associated DAO.\\n/// @param where The context in which the authorization reverted.\\n/// @param who The address (EOA or contract) missing the permission.\\n/// @param permissionId The permission identifier.\\nerror DaoUnauthorized(address dao, address where, address who, bytes32 permissionId);\\n\\n/// @notice A free function checking if a caller is granted permissions on a target contract via a permission identifier that redirects the approval to a `PermissionCondition` if this was specified in the setup.\\n/// @param _where The address of the target contract for which `who` receives permission.\\n/// @param _who The address (EOA or contract) owning the permission.\\n/// @param _permissionId The permission identifier.\\n/// @param _data The optional data passed to the `PermissionCondition` registered.\\n/// @custom:security-contact sirt@aragon.org\\nfunction _auth(\\n IDAO _dao,\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes calldata _data\\n) view {\\n if (!_dao.hasPermission(_where, _who, _permissionId, _data))\\n revert DaoUnauthorized({\\n dao: address(_dao),\\n where: _where,\\n who: _who,\\n permissionId: _permissionId\\n });\\n}\\n\",\"keccak256\":\"0x878764b4f87fe0651fb3798fb9cb87c952f8c6caf6ae79c7f09de84df6c00298\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/IPlugin.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IPlugin\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the traits of a plugin.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IPlugin {\\n enum PluginType {\\n UUPS,\\n Cloneable,\\n Constructable\\n }\\n\\n /// @notice Returns the plugin's type\\n function pluginType() external view returns (PluginType);\\n}\\n\",\"keccak256\":\"0xc57cd0d10b6380ab7f54c713a509e88fd8f4ad9288313a0e8e12b8887817ddfe\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/PluginUUPSUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {UUPSUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\\\";\\nimport {IERC1822ProxiableUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport {ERC165Upgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\\\";\\n\\nimport {IProtocolVersion} from \\\"../utils/versioning/IProtocolVersion.sol\\\";\\nimport {ProtocolVersion} from \\\"../utils/versioning/ProtocolVersion.sol\\\";\\nimport {DaoAuthorizableUpgradeable} from \\\"../permission/auth/DaoAuthorizableUpgradeable.sol\\\";\\nimport {IDAO} from \\\"../dao/IDAO.sol\\\";\\nimport {IPlugin} from \\\"./IPlugin.sol\\\";\\n\\n/// @title PluginUUPSUpgradeable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract, upgradeable contract to inherit from when creating a plugin being deployed via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract PluginUUPSUpgradeable is\\n IPlugin,\\n ERC165Upgradeable,\\n UUPSUpgradeable,\\n DaoAuthorizableUpgradeable,\\n ProtocolVersion\\n{\\n // NOTE: When adding new state variables to the contract, the size of `_gap` has to be adapted below as well.\\n\\n /// @notice Disables the initializers on the implementation contract to prevent it from being left uninitialized.\\n /// @custom:oz-upgrades-unsafe-allow constructor\\n constructor() {\\n _disableInitializers();\\n }\\n\\n /// @inheritdoc IPlugin\\n function pluginType() public pure override returns (PluginType) {\\n return PluginType.UUPS;\\n }\\n\\n /// @notice The ID of the permission required to call the `_authorizeUpgrade` function.\\n bytes32 public constant UPGRADE_PLUGIN_PERMISSION_ID = keccak256(\\\"UPGRADE_PLUGIN_PERMISSION\\\");\\n\\n /// @notice Initializes the plugin by storing the associated DAO.\\n /// @param _dao The DAO contract.\\n // solhint-disable-next-line func-name-mixedcase\\n function __PluginUUPSUpgradeable_init(IDAO _dao) internal virtual onlyInitializing {\\n __DaoAuthorizableUpgradeable_init(_dao);\\n }\\n\\n /// @notice Checks if an interface is supported by this or its parent contract.\\n /// @param _interfaceId The ID of the interface.\\n /// @return Returns `true` if the interface is supported.\\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\\n return\\n _interfaceId == type(IPlugin).interfaceId ||\\n _interfaceId == type(IProtocolVersion).interfaceId ||\\n _interfaceId == type(IERC1822ProxiableUpgradeable).interfaceId ||\\n super.supportsInterface(_interfaceId);\\n }\\n\\n /// @notice Returns the address of the implementation contract in the [proxy storage slot](https://eips.ethereum.org/EIPS/eip-1967) slot the [UUPS proxy](https://eips.ethereum.org/EIPS/eip-1822) is pointing to.\\n /// @return The address of the implementation contract.\\n function implementation() public view returns (address) {\\n return _getImplementation();\\n }\\n\\n /// @notice Internal method authorizing the upgrade of the contract via the [upgradeability mechanism for UUPS proxies](https://docs.openzeppelin.com/contracts/4.x/api/proxy#UUPSUpgradeable) (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\\n /// @dev The caller must have the `UPGRADE_PLUGIN_PERMISSION_ID` permission.\\n function _authorizeUpgrade(\\n address\\n )\\n internal\\n virtual\\n override\\n auth(UPGRADE_PLUGIN_PERMISSION_ID)\\n // solhint-disable-next-line no-empty-blocks\\n {\\n\\n }\\n\\n /// @notice This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain (see [OpenZeppelin's guide about storage gaps](https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps)).\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x127e7c4f839cb8c8486070990b78e22313f1ff089ffe6a4ff23ae358e48f0037\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/setup/IPluginSetup.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {PermissionLib} from \\\"../../permission/PermissionLib.sol\\\";\\n\\n// solhint-disable-next-line no-unused-import\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @title IPluginSetup\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for a plugin setup contract to be consumed by the `PluginSetupProcessor` for plugin installations, updates, and uninstallations.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IPluginSetup {\\n /// @notice The data associated with a prepared setup.\\n /// @param helpers The address array of helpers (contracts or EOAs) associated with this plugin version after the installation or update.\\n /// @param permissions The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the installing or updating DAO.\\n struct PreparedSetupData {\\n address[] helpers;\\n PermissionLib.MultiTargetPermission[] permissions;\\n }\\n\\n /// @notice The payload for plugin updates and uninstallations containing the existing contracts as well as optional data to be consumed by the plugin setup.\\n /// @param plugin The address of the `Plugin`.\\n /// @param currentHelpers The address array of all current helpers (contracts or EOAs) associated with the plugin to update from.\\n /// @param data The bytes-encoded data containing the input parameters for the preparation of update/uninstall as specified in the corresponding ABI on the version's metadata.\\n struct SetupPayload {\\n address plugin;\\n address[] currentHelpers;\\n bytes data;\\n }\\n\\n /// @notice Prepares the installation of a plugin.\\n /// @param _dao The address of the installing DAO.\\n /// @param _data The bytes-encoded data containing the input parameters for the installation as specified in the plugin's build metadata JSON file.\\n /// @return plugin The address of the `Plugin` contract being prepared for installation.\\n /// @return preparedSetupData The deployed plugin's relevant data which consists of helpers and permissions.\\n function prepareInstallation(\\n address _dao,\\n bytes calldata _data\\n ) external returns (address plugin, PreparedSetupData memory preparedSetupData);\\n\\n /// @notice Prepares the update of a plugin.\\n /// @param _dao The address of the updating DAO.\\n /// @param _fromBuild The build number of the plugin to update from.\\n /// @param _payload The relevant data necessary for the `prepareUpdate`. See above.\\n /// @return initData The initialization data to be passed to upgradeable contracts when the update is applied in the `PluginSetupProcessor`.\\n /// @return preparedSetupData The deployed plugin's relevant data which consists of helpers and permissions.\\n function prepareUpdate(\\n address _dao,\\n uint16 _fromBuild,\\n SetupPayload calldata _payload\\n ) external returns (bytes memory initData, PreparedSetupData memory preparedSetupData);\\n\\n /// @notice Prepares the uninstallation of a plugin.\\n /// @param _dao The address of the uninstalling DAO.\\n /// @param _payload The relevant data necessary for the `prepareUninstallation`. See above.\\n /// @return permissions The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the uninstalling DAO.\\n function prepareUninstallation(\\n address _dao,\\n SetupPayload calldata _payload\\n ) external returns (PermissionLib.MultiTargetPermission[] memory permissions);\\n\\n /// @notice Returns the plugin implementation address.\\n /// @return The address of the plugin implementation contract.\\n /// @dev The implementation can be instantiated via the `new` keyword, cloned via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)), or proxied via the UUPS proxy pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0x21c99995208039ac6ace219b6f273243811dc2aa66399e8e499e43ec30b82fa9\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/setup/PluginUpgradeableSetup.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ERC165} from \\\"@openzeppelin/contracts/utils/introspection/ERC165.sol\\\";\\n\\nimport {IProtocolVersion} from \\\"../../utils/versioning/IProtocolVersion.sol\\\";\\nimport {ProtocolVersion} from \\\"../../utils/versioning/ProtocolVersion.sol\\\";\\nimport {IPluginSetup} from \\\"./IPluginSetup.sol\\\";\\n\\n/// @title PluginUpgradeableSetup\\n/// @author Aragon X - 2022-2024\\n/// @notice An abstract contract to inherit from to implement the plugin setup for upgradeable plugins, i.e, `PluginUUPSUpgradeable` being deployed via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822) and [ERC-1967](https://eips.ethereum.org/EIPS/eip-1967)).\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract PluginUpgradeableSetup is ERC165, IPluginSetup, ProtocolVersion {\\n /// @notice The address of the plugin implementation contract for initial block explorer verification\\n /// and to create [ERC-1967](https://eips.ethereum.org/EIPS/eip-1967) UUPS proxies from.\\n address internal immutable IMPLEMENTATION;\\n\\n /// @notice Thrown when an update path is not available, for example, if this is the initial build.\\n /// @param fromBuild The build number to update from.\\n /// @param thisBuild The build number of this setup to update to.\\n error InvalidUpdatePath(uint16 fromBuild, uint16 thisBuild);\\n\\n /// @notice The contract constructor, that setting the plugin implementation contract.\\n /// @param _implementation The address of the plugin implementation contract.\\n constructor(address _implementation) {\\n IMPLEMENTATION = _implementation;\\n }\\n\\n /// @notice Checks if this or the parent contract supports an interface by its ID.\\n /// @param _interfaceId The ID of the interface.\\n /// @return Returns `true` if the interface is supported.\\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\\n return\\n _interfaceId == type(IPluginSetup).interfaceId ||\\n _interfaceId == type(IProtocolVersion).interfaceId ||\\n super.supportsInterface(_interfaceId);\\n }\\n\\n /// @inheritdoc IPluginSetup\\n function implementation() public view returns (address) {\\n return IMPLEMENTATION;\\n }\\n}\\n\",\"keccak256\":\"0x2842d919d1ecb4fbeb40953128c3da3b36dcf6e91255089e987c2f11ff8d061e\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/deployment/ProxyLib.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ERC1967Proxy} from \\\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol\\\";\\nimport {Clones} from \\\"@openzeppelin/contracts/proxy/Clones.sol\\\";\\nimport {Address} from \\\"@openzeppelin/contracts/utils/Address.sol\\\";\\n\\n/// @title ProxyLib\\n/// @author Aragon X - 2024\\n/// @notice A library containing methods for the deployment of proxies via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)) and minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)).\\n/// @custom:security-contact sirt@aragon.org\\nlibrary ProxyLib {\\n using Address for address;\\n using Clones for address;\\n\\n /// @notice Creates an [ERC-1967](https://eips.ethereum.org/EIPS/eip-1967) UUPS proxy contract pointing to a logic contract and allows to immediately initialize it.\\n /// @param _logic The logic contract the proxy is pointing to.\\n /// @param _initCalldata The initialization data for this contract.\\n /// @return uupsProxy The address of the UUPS proxy contract created.\\n /// @dev If `_initCalldata` is non-empty, it is used in a delegate call to the `_logic` contract. This will typically be an encoded function call initializing the storage of the proxy (see [OpenZeppelin ERC1967Proxy-constructor](https://docs.openzeppelin.com/contracts/4.x/api/proxy#ERC1967Proxy-constructor-address-bytes-)).\\n function deployUUPSProxy(\\n address _logic,\\n bytes memory _initCalldata\\n ) internal returns (address uupsProxy) {\\n uupsProxy = address(new ERC1967Proxy({_logic: _logic, _data: _initCalldata}));\\n }\\n\\n /// @notice Creates an [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167) minimal proxy contract, also known as clones, pointing to a logic contract and allows to immediately initialize it.\\n /// @param _logic The logic contract the proxy is pointing to.\\n /// @param _initCalldata The initialization data for this contract.\\n /// @return minimalProxy The address of the minimal proxy contract created.\\n /// @dev If `_initCalldata` is non-empty, it is used in a call to the clone contract. This will typically be an encoded function call initializing the storage of the contract.\\n function deployMinimalProxy(\\n address _logic,\\n bytes memory _initCalldata\\n ) internal returns (address minimalProxy) {\\n minimalProxy = _logic.clone();\\n if (_initCalldata.length > 0) {\\n minimalProxy.functionCall({data: _initCalldata});\\n }\\n }\\n}\\n\",\"keccak256\":\"0xef0d1790dfa026381c021daa2ec7267357497f58cd4a2fa5c64e72e0dea95acc\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/IProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IProtocolVersion\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the semantic Aragon OSx protocol version number.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IProtocolVersion {\\n /// @notice Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\\n /// @return _version Returns the semantic Aragon OSx protocol version number.\\n /// @dev This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\\n function protocolVersion() external view returns (uint8[3] memory _version);\\n}\\n\",\"keccak256\":\"0x00a4da654d21dc1bdadbdc8bd54bb86c378c56f85e461ccc31303628ea621361\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/ProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IProtocolVersion} from \\\"./IProtocolVersion.sol\\\";\\n\\n/// @title ProtocolVersion\\n/// @author Aragon X - 2023\\n/// @notice An abstract, stateless, non-upgradeable contract providing the current Aragon OSx protocol version number.\\n/// @dev Do not add any new variables to this contract that would shift down storage in the inheritance chain.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract ProtocolVersion is IProtocolVersion {\\n // IMPORTANT: Do not add any storage variable, see the above notice.\\n\\n /// @inheritdoc IProtocolVersion\\n function protocolVersion() public pure returns (uint8[3] memory) {\\n return [1, 4, 0];\\n }\\n}\\n\",\"keccak256\":\"0x3975c937be935f687c6b6b8f379071232681e98cf04b175d72781b819ea52bdb\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"errors":{"InvalidUpdatePath(uint16,uint16)":[{"notice":"Thrown when an update path is not available, for example, if this is the initial build."}]},"kind":"user","methods":{"implementation()":{"notice":"Returns the plugin implementation address."},"prepareInstallation(address,bytes)":{"notice":"Prepares the installation of a plugin."},"prepareUninstallation(address,(address,address[],bytes))":{"notice":"Prepares the uninstallation of a plugin."},"prepareUpdate(address,uint16,(address,address[],bytes))":{"notice":"Prepares the update of a plugin."},"protocolVersion()":{"notice":"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with."},"supportsInterface(bytes4)":{"notice":"Checks if this or the parent contract supports an interface by its ID."}},"notice":"A mock plugin setup of an upgradeable plugin to be deployed via the UUPS pattern. v1.1 (Release 1, Build 1)","version":1}},"PluginUUPSUpgradeableSetupMockBuild2":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"ConflictingValues","type":"error"},{"inputs":[{"internalType":"uint16","name":"fromBuild","type":"uint16"},{"internalType":"uint16","name":"thisBuild","type":"uint16"}],"name":"InvalidUpdatePath","type":"error"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_dao","type":"address"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"prepareInstallation","outputs":[{"internalType":"address","name":"plugin","type":"address"},{"components":[{"internalType":"address[]","name":"helpers","type":"address[]"},{"components":[{"internalType":"enum PermissionLib.Operation","name":"operation","type":"uint8"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"condition","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"internalType":"struct PermissionLib.MultiTargetPermission[]","name":"permissions","type":"tuple[]"}],"internalType":"struct IPluginSetup.PreparedSetupData","name":"preparedSetupData","type":"tuple"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_dao","type":"address"},{"components":[{"internalType":"address","name":"plugin","type":"address"},{"internalType":"address[]","name":"currentHelpers","type":"address[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct IPluginSetup.SetupPayload","name":"_payload","type":"tuple"}],"name":"prepareUninstallation","outputs":[{"components":[{"internalType":"enum PermissionLib.Operation","name":"operation","type":"uint8"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"condition","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"internalType":"struct PermissionLib.MultiTargetPermission[]","name":"permissions","type":"tuple[]"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_dao","type":"address"},{"internalType":"uint16","name":"_fromBuild","type":"uint16"},{"components":[{"internalType":"address","name":"plugin","type":"address"},{"internalType":"address[]","name":"currentHelpers","type":"address[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct IPluginSetup.SetupPayload","name":"_payload","type":"tuple"}],"name":"prepareUpdate","outputs":[{"internalType":"bytes","name":"initData","type":"bytes"},{"components":[{"internalType":"address[]","name":"helpers","type":"address[]"},{"components":[{"internalType":"enum PermissionLib.Operation","name":"operation","type":"uint8"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"condition","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"internalType":"struct PermissionLib.MultiTargetPermission[]","name":"permissions","type":"tuple[]"}],"internalType":"struct IPluginSetup.PreparedSetupData","name":"preparedSetupData","type":"tuple"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"protocolVersion","outputs":[{"internalType":"uint8[3]","name":"","type":"uint8[3]"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"DO NOT USE IN PRODUCTION!","errors":{"InvalidUpdatePath(uint16,uint16)":[{"params":{"fromBuild":"The build number to update from.","thisBuild":"The build number of this setup to update to."}}]},"kind":"dev","methods":{"implementation()":{"details":"The implementation can be instantiated via the `new` keyword, cloned via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)), or proxied via the UUPS proxy pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).","returns":{"_0":"The address of the plugin implementation contract."}},"prepareInstallation(address,bytes)":{"params":{"_dao":"The address of the installing DAO.","_data":"The bytes-encoded data containing the input parameters for the installation as specified in the plugin's build metadata JSON file."},"returns":{"plugin":"The address of the `Plugin` contract being prepared for installation.","preparedSetupData":"The deployed plugin's relevant data which consists of helpers and permissions."}},"prepareUninstallation(address,(address,address[],bytes))":{"params":{"_dao":"The address of the uninstalling DAO.","_payload":"The relevant data necessary for the `prepareUninstallation`. See above."},"returns":{"permissions":"The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the uninstalling DAO."}},"prepareUpdate(address,uint16,(address,address[],bytes))":{"params":{"_dao":"The address of the updating DAO.","_fromBuild":"The build number of the plugin to update from.","_payload":"The relevant data necessary for the `prepareUpdate`. See above."},"returns":{"initData":"The initialization data to be passed to upgradeable contracts when the update is applied in the `PluginSetupProcessor`.","preparedSetupData":"The deployed plugin's relevant data which consists of helpers and permissions."}},"protocolVersion()":{"details":"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.","returns":{"_0":"Returns the semantic Aragon OSx protocol version number."}},"supportsInterface(bytes4)":{"params":{"_interfaceId":"The ID of the interface."},"returns":{"_0":"Returns `true` if the interface is supported."}}},"version":1},"evm":{"bytecode":{"functionDebugData":{"@_12094":{"entryPoint":null,"id":12094,"parameterSlots":0,"returnSlots":0},"@_14409":{"entryPoint":null,"id":14409,"parameterSlots":1,"returnSlots":0}},"generatedSources":[],"linkReferences":{},"object":"60a060405234801561001057600080fd5b5060405161001d9061004b565b604051809103906000f080158015610039573d6000803e3d6000fd5b506001600160a01b0316608052610058565b61133c806112c683390190565b60805161124d6100796000396000818160d20152610339015261124d6000f3fe60806040523480156200001157600080fd5b50600436106200007b5760003560e01c80639cb0a12411620000565780639cb0a12414620000fd578063a8a9c29e1462000123578063f10832f1146200014a57600080fd5b806301ffc9a714620000805780632ae9c60014620000ac5780635c60da1b14620000c5575b600080fd5b62000097620000913660046200065e565b62000171565b60405190151581526020015b60405180910390f35b620000b6620001c4565b604051620000a391906200068a565b6040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152602001620000a3565b620001146200010e366004620006f0565b620001f0565b604051620000a39190620007c1565b6200013a620001343660046200080e565b62000209565b604051620000a39291906200095d565b620001616200015b366004620009a5565b620002b5565b604051620000a392919062000a73565b60006001600160e01b0319821663099718b560e41b1480620001a257506001600160e01b03198216621574e360e91b145b80620001be57506301ffc9a760e01b6001600160e01b03198316145b92915050565b620001ce62000632565b5060408051606081018252600181526004602082015260009181019190915290565b60606200020260006002600162000399565b9392505050565b606062000229604051806040016040528060608152602001606081525090565b8361ffff16600103620002ad5762000242600262000532565b815260405161ffff8516602482015260440160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166239a8c560e41b1790529150620002a761ffff85166002600062000399565b60208201525b935093915050565b6000620002d5604051806040016040528060608152602001606081525090565b6040516001600160a01b038516602482015260009060440160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663189acdbd60e31b17905290506200036b816200035b7f000000000000000000000000000000000000000000000000000000000000000090565b6001600160a01b031690620005f6565b925062000379600262000532565b82526200038a600060028162000399565b60208301525090939092509050565b6060826001600160a01b0316846001600160a01b03161115620003cf57604051633a4013cd60e21b815260040160405180910390fd5b620003db848462000ab5565b6001600160a01b031667ffffffffffffffff811115620003ff57620003ff6200098f565b6040519080825280602002602001820160405280156200045a57816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282526000199092019101816200041e5790505b509050835b836001600160a01b0316816001600160a01b031610156200052a576040518060a001604052808460028111156200049a576200049a62000744565b81526001600160a01b038316602082018190526040820152600060608201527fa280eec51ab8e1bc4b6b0c1b7f1bde785761b787a49db404e3e9338ed9b016ef60809091015282620004ed878462000ab5565b6001600160a01b03168151811062000509576200050962000adf565b60200260200101819052508080620005219062000af5565b9150506200045f565b509392505050565b6060816001600160a01b031667ffffffffffffffff8111156200055957620005596200098f565b60405190808252806020026020018201604052801562000583578160200160208202803683370190505b50905060005b826001600160a01b0316816001600160a01b03161015620005f0578082826001600160a01b031681518110620005c357620005c362000adf565b6001600160a01b039092166020928302919091019091015280620005e78162000af5565b91505062000589565b50919050565b60008282604051620006089062000650565b6200061592919062000b1e565b604051809103906000f0801580156200052a573d6000803e3d6000fd5b60405180606001604052806003906020820280368337509192915050565b6106fe8062000b4383390190565b6000602082840312156200067157600080fd5b81356001600160e01b0319811681146200020257600080fd5b60608101818360005b6003811015620006b757815160ff1683526020928301929091019060010162000693565b50505092915050565b80356001600160a01b0381168114620006d857600080fd5b919050565b600060608284031215620005f057600080fd5b600080604083850312156200070457600080fd5b6200070f83620006c0565b9150602083013567ffffffffffffffff8111156200072c57600080fd5b6200073a85828601620006dd565b9150509250929050565b634e487b7160e01b600052602160045260246000fd5b60008151600381106200077d57634e487b7160e01b600052602160045260246000fd5b8352506020818101516001600160a01b0390811691840191909152604080830151821690840152606080830151909116908301526080908101519082015260a00190565b6020808252825182820181905260009190848201906040850190845b818110156200080257620007f38385516200075a565b938501939250600101620007dd565b50909695505050505050565b6000806000606084860312156200082457600080fd5b6200082f84620006c0565b9250602084013561ffff811681146200084757600080fd5b9150604084013567ffffffffffffffff8111156200086457600080fd5b6200087286828701620006dd565b9150509250925092565b6000815180845260005b81811015620008a45760208185018101518683018201520162000886565b506000602082860101526020601f19601f83011685010191505092915050565b805160408084528151908401819052600091602091908201906060860190845b818110156200090b5783516001600160a01b031683529284019291840191600101620008e4565b50508483015186820387850152805180835290840192506000918401905b8083101562000952576200093f8285516200075a565b9150848401935060018301925062000929565b509695505050505050565b6040815260006200097260408301856200087c565b8281036020840152620009868185620008c4565b95945050505050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215620009b957600080fd5b620009c483620006c0565b9150602083013567ffffffffffffffff80821115620009e257600080fd5b818501915085601f830112620009f757600080fd5b81358181111562000a0c5762000a0c6200098f565b604051601f8201601f19908116603f0116810190838211818310171562000a375762000a376200098f565b8160405282815288602084870101111562000a5157600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6001600160a01b038316815260406020820152600062000a976040830184620008c4565b949350505050565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0382811682821603908082111562000ad85762000ad862000a9f565b5092915050565b634e487b7160e01b600052603260045260246000fd5b60006001600160a01b0380831681810362000b145762000b1462000a9f565b6001019392505050565b6001600160a01b038316815260406020820152600062000a9760408301846200087c56fe60806040526040516106fe3803806106fe83398101604081905261002291610319565b61002e82826000610035565b5050610436565b61003e8361006b565b60008251118061004b5750805b156100665761006483836100ab60201b6100291760201c565b505b505050565b610074816100d7565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606100d083836040518060600160405280602781526020016106d7602791396101a9565b9392505050565b6100ea8161022260201b6100551760201c565b6101515760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b806101887f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61023160201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6060600080856001600160a01b0316856040516101c691906103e7565b600060405180830381855af49150503d8060008114610201576040519150601f19603f3d011682016040523d82523d6000602084013e610206565b606091505b50909250905061021886838387610234565b9695505050505050565b6001600160a01b03163b151590565b90565b606083156102a357825160000361029c576001600160a01b0385163b61029c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610148565b50816102ad565b6102ad83836102b5565b949350505050565b8151156102c55781518083602001fd5b8060405162461bcd60e51b81526004016101489190610403565b634e487b7160e01b600052604160045260246000fd5b60005b838110156103105781810151838201526020016102f8565b50506000910152565b6000806040838503121561032c57600080fd5b82516001600160a01b038116811461034357600080fd5b60208401519092506001600160401b038082111561036057600080fd5b818501915085601f83011261037457600080fd5b815181811115610386576103866102df565b604051601f8201601f19908116603f011681019083821181831017156103ae576103ae6102df565b816040528281528860208487010111156103c757600080fd5b6103d88360208301602088016102f5565b80955050505050509250929050565b600082516103f98184602087016102f5565b9190910192915050565b60208152600082518060208401526104228160408501602087016102f5565b601f01601f19169190910160400192915050565b610292806104456000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b61009f565b565b606061004e838360405180606001604052806027815260200161025f602791396100c3565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e8080156100be573d6000f35b3d6000fd5b6060600080856001600160a01b0316856040516100e0919061020f565b600060405180830381855af49150503d806000811461011b576040519150601f19603f3d011682016040523d82523d6000602084013e610120565b606091505b50915091506101318683838761013b565b9695505050505050565b606083156101af5782516000036101a8576001600160a01b0385163b6101a85760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b50816101b9565b6101b983836101c1565b949350505050565b8151156101d15781518083602001fd5b8060405162461bcd60e51b815260040161019f919061022b565b60005b838110156102065781810151838201526020016101ee565b50506000910152565b600082516102218184602087016101eb565b9190910192915050565b602081526000825180602084015261024a8160408501602087016101eb565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a60a06040523060805234801561001457600080fd5b5061001d610022565b6100e1565b600054610100900460ff161561008e5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116146100df576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b60805161122461011860003960008181610423015281816104a80152818161059e01528181610623015261070d01526112246000f3fe6080604052600436106100d25760003560e01c80634f1ef2861161007f5780636accab8c116100595780636accab8c14610209578063c4d66de814610220578063c9c4bfca14610240578063efe51cca1461027457600080fd5b80634f1ef286146101be57806352d1902d146101d15780635c60da1b146101f457600080fd5b80633659cfe6116100b05780633659cfe6146101505780634162169f1461017057806341de6830146101a257600080fd5b806301ffc9a7146100d7578063039a8c501461010c5780632ae9c6001461012e575b600080fd5b3480156100e357600080fd5b506100f76100f2366004610f38565b61028b565b60405190151581526020015b60405180910390f35b34801561011857600080fd5b5061012c610127366004610f62565b6102f7565b005b34801561013a57600080fd5b506101436103ef565b6040516101039190610f86565b34801561015c57600080fd5b5061012c61016b366004610fcf565b610419565b34801561017c57600080fd5b5060c9546001600160a01b03165b6040516001600160a01b039091168152602001610103565b3480156101ae57600080fd5b5060006040516101039190610fec565b61012c6101cc36600461102a565b610594565b3480156101dd57600080fd5b506101e6610700565b604051908152602001610103565b34801561020057600080fd5b5061018a6107c5565b34801561021557600080fd5b506101e661012d5481565b34801561022c57600080fd5b5061012c61023b366004610fcf565b6107fd565b34801561024c57600080fd5b506101e67f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f581565b34801561028057600080fd5b506101e661012e5481565b60006001600160e01b0319821663041de68360e41b14806102bb57506001600160e01b03198216621574e360e91b145b806102d657506001600160e01b031982166352d1902d60e01b145b806102f157506301ffc9a760e01b6001600160e01b03198316145b92915050565b600054600290610100900460ff16158015610319575060005460ff8083169116105b6103815760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805461ffff191660ff831617610100179055600261ffff831610156103a957600261012e555b6000805461ff001916905560405160ff821681527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b6103f7610f1a565b5060408051606081018252600181526004602082015260009181019190915290565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036104a65760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b6064820152608401610378565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166105017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b03161461056c5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b6064820152608401610378565b610575816108e9565b6040805160008082526020820190925261059191839190610926565b50565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036106215760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b6064820152608401610378565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661067c7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b0316146106e75760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b6064820152608401610378565b6106f0826108e9565b6106fc82826001610926565b5050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146107a05760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610378565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b60006107f87f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b600054600290610100900460ff1615801561081f575060005460ff8083169116105b6108825760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610378565b6000805461ffff191660ff83161761010017905561089f82610acb565b600161012d55600261012e556000805461ff001916905560405160ff821681527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020016103e3565b60c9547f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f5906106fc906001600160a01b0316303384600036610b3f565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561095e5761095983610bfb565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156109b8575060408051601f3d908101601f191682019092526109b5918101906110ee565b60015b610a2a5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201527f6f6e206973206e6f7420555550530000000000000000000000000000000000006064820152608401610378565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114610abf5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f7860448201527f6961626c655555494400000000000000000000000000000000000000000000006064820152608401610378565b50610959838383610cc6565b600054610100900460ff16610b365760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610378565b61059181610cf1565b604051637ef7c88360e11b81526001600160a01b0387169063fdef910690610b739088908890889088908890600401611107565b602060405180830381865afa158015610b90573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bb4919061115b565b610bf357604051630cb6f8ed60e21b81526001600160a01b03808816600483015280871660248301528516604482015260648101849052608401610378565b505050505050565b6001600160a01b0381163b610c785760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e7472616374000000000000000000000000000000000000006064820152608401610378565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610ccf83610d8b565b600082511180610cdc5750805b1561095957610ceb8383610dcb565b50505050565b600054610100900460ff16610d5c5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610378565b60c9805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610d9481610bfb565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060610df083836040518060600160405280602781526020016111f160279139610df7565b9392505050565b6060600080856001600160a01b031685604051610e1491906111a1565b600060405180830381855af49150503d8060008114610e4f576040519150601f19603f3d011682016040523d82523d6000602084013e610e54565b606091505b5091509150610e6586838387610e6f565b9695505050505050565b60608315610ede578251600003610ed7576001600160a01b0385163b610ed75760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610378565b5081610ee8565b610ee88383610ef0565b949350505050565b815115610f005781518083602001fd5b8060405162461bcd60e51b815260040161037891906111bd565b60405180606001604052806003906020820280368337509192915050565b600060208284031215610f4a57600080fd5b81356001600160e01b031981168114610df057600080fd5b600060208284031215610f7457600080fd5b813561ffff81168114610df057600080fd5b60608101818360005b6003811015610fb157815160ff16835260209283019290910190600101610f8f565b50505092915050565b6001600160a01b038116811461059157600080fd5b600060208284031215610fe157600080fd5b8135610df081610fba565b602081016003831061100e57634e487b7160e01b600052602160045260246000fd5b91905290565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561103d57600080fd5b823561104881610fba565b9150602083013567ffffffffffffffff8082111561106557600080fd5b818501915085601f83011261107957600080fd5b81358181111561108b5761108b611014565b604051601f8201601f19908116603f011681019083821181831017156110b3576110b3611014565b816040528281528860208487010111156110cc57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60006020828403121561110057600080fd5b5051919050565b60006001600160a01b03808816835280871660208401525084604083015260806060830152826080830152828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b60006020828403121561116d57600080fd5b81518015158114610df057600080fd5b60005b83811015611198578181015183820152602001611180565b50506000910152565b600082516111b381846020870161117d565b9190910192915050565b60208152600082518060208401526111dc81604085016020870161117d565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a","opcodes":"PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x1D SWAP1 PUSH2 0x4B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH2 0x39 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x80 MSTORE PUSH2 0x58 JUMP JUMPDEST PUSH2 0x133C DUP1 PUSH2 0x12C6 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH2 0x124D PUSH2 0x79 PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH1 0xD2 ADD MSTORE PUSH2 0x339 ADD MSTORE PUSH2 0x124D PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH3 0x7B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9CB0A124 GT PUSH3 0x56 JUMPI DUP1 PUSH4 0x9CB0A124 EQ PUSH3 0xFD JUMPI DUP1 PUSH4 0xA8A9C29E EQ PUSH3 0x123 JUMPI DUP1 PUSH4 0xF10832F1 EQ PUSH3 0x14A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH3 0x80 JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH3 0xAC JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH3 0xC5 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x97 PUSH3 0x91 CALLDATASIZE PUSH1 0x4 PUSH3 0x65E JUMP JUMPDEST PUSH3 0x171 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0xB6 PUSH3 0x1C4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0xA3 SWAP2 SWAP1 PUSH3 0x68A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH3 0xA3 JUMP JUMPDEST PUSH3 0x114 PUSH3 0x10E CALLDATASIZE PUSH1 0x4 PUSH3 0x6F0 JUMP JUMPDEST PUSH3 0x1F0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0xA3 SWAP2 SWAP1 PUSH3 0x7C1 JUMP JUMPDEST PUSH3 0x13A PUSH3 0x134 CALLDATASIZE PUSH1 0x4 PUSH3 0x80E JUMP JUMPDEST PUSH3 0x209 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0xA3 SWAP3 SWAP2 SWAP1 PUSH3 0x95D JUMP JUMPDEST PUSH3 0x161 PUSH3 0x15B CALLDATASIZE PUSH1 0x4 PUSH3 0x9A5 JUMP JUMPDEST PUSH3 0x2B5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0xA3 SWAP3 SWAP2 SWAP1 PUSH3 0xA73 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x99718B5 PUSH1 0xE4 SHL EQ DUP1 PUSH3 0x1A2 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH3 0x1BE JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH3 0x1CE PUSH3 0x632 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH3 0x202 PUSH1 0x0 PUSH1 0x2 PUSH1 0x1 PUSH3 0x399 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH3 0x229 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST DUP4 PUSH2 0xFFFF AND PUSH1 0x1 SUB PUSH3 0x2AD JUMPI PUSH3 0x242 PUSH1 0x2 PUSH3 0x532 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x40 MLOAD PUSH2 0xFFFF DUP6 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH3 0x39A8C5 PUSH1 0xE4 SHL OR SWAP1 MSTORE SWAP2 POP PUSH3 0x2A7 PUSH2 0xFFFF DUP6 AND PUSH1 0x2 PUSH1 0x0 PUSH3 0x399 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE JUMPDEST SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x2D5 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 PUSH1 0x44 ADD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x189ACDBD PUSH1 0xE3 SHL OR SWAP1 MSTORE SWAP1 POP PUSH3 0x36B DUP2 PUSH3 0x35B PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH3 0x5F6 JUMP JUMPDEST SWAP3 POP PUSH3 0x379 PUSH1 0x2 PUSH3 0x532 JUMP JUMPDEST DUP3 MSTORE PUSH3 0x38A PUSH1 0x0 PUSH1 0x2 DUP2 PUSH3 0x399 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP SWAP1 SWAP4 SWAP1 SWAP3 POP SWAP1 POP JUMP JUMPDEST PUSH1 0x60 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH3 0x3CF JUMPI PUSH1 0x40 MLOAD PUSH4 0x3A4013CD PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0x3DB DUP5 DUP5 PUSH3 0xAB5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x3FF JUMPI PUSH3 0x3FF PUSH3 0x98F JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH3 0x45A JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD DUP3 SWAP1 MSTORE SWAP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 DUP3 ADD MSTORE DUP3 MSTORE PUSH1 0x0 NOT SWAP1 SWAP3 ADD SWAP2 ADD DUP2 PUSH3 0x41E JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP DUP4 JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT ISZERO PUSH3 0x52A JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 DUP5 PUSH1 0x2 DUP2 GT ISZERO PUSH3 0x49A JUMPI PUSH3 0x49A PUSH3 0x744 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x60 DUP3 ADD MSTORE PUSH32 0xA280EEC51AB8E1BC4B6B0C1B7F1BDE785761B787A49DB404E3E9338ED9B016EF PUSH1 0x80 SWAP1 SWAP2 ADD MSTORE DUP3 PUSH3 0x4ED DUP8 DUP5 PUSH3 0xAB5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MLOAD DUP2 LT PUSH3 0x509 JUMPI PUSH3 0x509 PUSH3 0xADF JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP DUP1 DUP1 PUSH3 0x521 SWAP1 PUSH3 0xAF5 JUMP JUMPDEST SWAP2 POP POP PUSH3 0x45F JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x559 JUMPI PUSH3 0x559 PUSH3 0x98F JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH3 0x583 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT ISZERO PUSH3 0x5F0 JUMPI DUP1 DUP3 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MLOAD DUP2 LT PUSH3 0x5C3 JUMPI PUSH3 0x5C3 PUSH3 0xADF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE DUP1 PUSH3 0x5E7 DUP2 PUSH3 0xAF5 JUMP JUMPDEST SWAP2 POP POP PUSH3 0x589 JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH3 0x608 SWAP1 PUSH3 0x650 JUMP JUMPDEST PUSH3 0x615 SWAP3 SWAP2 SWAP1 PUSH3 0xB1E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH3 0x52A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x6FE DUP1 PUSH3 0xB43 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x671 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH3 0x202 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH3 0x6B7 JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH3 0x693 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x6D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x5F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x704 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x70F DUP4 PUSH3 0x6C0 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x72C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x73A DUP6 DUP3 DUP7 ADD PUSH3 0x6DD JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP2 MLOAD PUSH1 0x3 DUP2 LT PUSH3 0x77D JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP4 MSTORE POP PUSH1 0x20 DUP2 DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP1 DUP4 ADD MLOAD DUP3 AND SWAP1 DUP5 ADD MSTORE PUSH1 0x60 DUP1 DUP4 ADD MLOAD SWAP1 SWAP2 AND SWAP1 DUP4 ADD MSTORE PUSH1 0x80 SWAP1 DUP2 ADD MLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x802 JUMPI PUSH3 0x7F3 DUP4 DUP6 MLOAD PUSH3 0x75A JUMP JUMPDEST SWAP4 DUP6 ADD SWAP4 SWAP3 POP PUSH1 0x1 ADD PUSH3 0x7DD JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH3 0x824 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x82F DUP5 PUSH3 0x6C0 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH3 0x847 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x864 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x872 DUP7 DUP3 DUP8 ADD PUSH3 0x6DD JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x8A4 JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD DUP3 ADD MSTORE ADD PUSH3 0x886 JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x20 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x20 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x40 DUP1 DUP5 MSTORE DUP2 MLOAD SWAP1 DUP5 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x20 SWAP2 SWAP1 DUP3 ADD SWAP1 PUSH1 0x60 DUP7 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x90B JUMPI DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH3 0x8E4 JUMP JUMPDEST POP POP DUP5 DUP4 ADD MLOAD DUP7 DUP3 SUB DUP8 DUP6 ADD MSTORE DUP1 MLOAD DUP1 DUP4 MSTORE SWAP1 DUP5 ADD SWAP3 POP PUSH1 0x0 SWAP2 DUP5 ADD SWAP1 JUMPDEST DUP1 DUP4 LT ISZERO PUSH3 0x952 JUMPI PUSH3 0x93F DUP3 DUP6 MLOAD PUSH3 0x75A JUMP JUMPDEST SWAP2 POP DUP5 DUP5 ADD SWAP4 POP PUSH1 0x1 DUP4 ADD SWAP3 POP PUSH3 0x929 JUMP JUMPDEST POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 PUSH3 0x972 PUSH1 0x40 DUP4 ADD DUP6 PUSH3 0x87C JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 ADD MSTORE PUSH3 0x986 DUP2 DUP6 PUSH3 0x8C4 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x9B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x9C4 DUP4 PUSH3 0x6C0 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH3 0x9E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x9F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH3 0xA0C JUMPI PUSH3 0xA0C PUSH3 0x98F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH3 0xA37 JUMPI PUSH3 0xA37 PUSH3 0x98F JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH3 0xA51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH3 0xA97 PUSH1 0x40 DUP4 ADD DUP5 PUSH3 0x8C4 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND DUP3 DUP3 AND SUB SWAP1 DUP1 DUP3 GT ISZERO PUSH3 0xAD8 JUMPI PUSH3 0xAD8 PUSH3 0xA9F JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND DUP2 DUP2 SUB PUSH3 0xB14 JUMPI PUSH3 0xB14 PUSH3 0xA9F JUMP JUMPDEST PUSH1 0x1 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH3 0xA97 PUSH1 0x40 DUP4 ADD DUP5 PUSH3 0x87C JUMP INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH2 0x6FE CODESIZE SUB DUP1 PUSH2 0x6FE DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x22 SWAP2 PUSH2 0x319 JUMP JUMPDEST PUSH2 0x2E DUP3 DUP3 PUSH1 0x0 PUSH2 0x35 JUMP JUMPDEST POP POP PUSH2 0x436 JUMP JUMPDEST PUSH2 0x3E DUP4 PUSH2 0x6B JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD GT DUP1 PUSH2 0x4B JUMPI POP DUP1 JUMPDEST ISZERO PUSH2 0x66 JUMPI PUSH2 0x64 DUP4 DUP4 PUSH2 0xAB PUSH1 0x20 SHL PUSH2 0x29 OR PUSH1 0x20 SHR JUMP JUMPDEST POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x74 DUP2 PUSH2 0xD7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xD0 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x6D7 PUSH1 0x27 SWAP2 CODECOPY PUSH2 0x1A9 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xEA DUP2 PUSH2 0x222 PUSH1 0x20 SHL PUSH2 0x55 OR PUSH1 0x20 SHR JUMP JUMPDEST PUSH2 0x151 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313936373A206E657720696D706C656D656E746174696F6E206973206E PUSH1 0x44 DUP3 ADD MSTORE PUSH13 0x1BDD08184818DBDB9D1C9858DD PUSH1 0x9A SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH2 0x188 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC PUSH1 0x0 SHL PUSH2 0x231 PUSH1 0x20 SHL PUSH2 0x64 OR PUSH1 0x20 SHR JUMP JUMPDEST DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0x1C6 SWAP2 SWAP1 PUSH2 0x3E7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x201 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x206 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x218 DUP7 DUP4 DUP4 DUP8 PUSH2 0x234 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x2A3 JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0x29C JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0x29C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x148 JUMP JUMPDEST POP DUP2 PUSH2 0x2AD JUMP JUMPDEST PUSH2 0x2AD DUP4 DUP4 PUSH2 0x2B5 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x2C5 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x148 SWAP2 SWAP1 PUSH2 0x403 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x310 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2F8 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x32C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x343 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x360 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x374 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x386 JUMPI PUSH2 0x386 PUSH2 0x2DF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x3AE JUMPI PUSH2 0x3AE PUSH2 0x2DF JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x3C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3D8 DUP4 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x2F5 JUMP JUMPDEST DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x3F9 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x2F5 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x422 DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x2F5 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x292 DUP1 PUSH2 0x445 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLDATASIZE PUSH2 0x13 JUMPI PUSH2 0x11 PUSH2 0x17 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x11 JUMPDEST PUSH2 0x27 PUSH2 0x22 PUSH2 0x67 JUMP JUMPDEST PUSH2 0x9F JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x60 PUSH2 0x4E DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x25F PUSH1 0x27 SWAP2 CODECOPY PUSH2 0xC3 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9A PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 DUP1 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE PUSH1 0x0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH2 0xBE JUMPI RETURNDATASIZE PUSH1 0x0 RETURN JUMPDEST RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0xE0 SWAP2 SWAP1 PUSH2 0x20F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x11B JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x120 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x131 DUP7 DUP4 DUP4 DUP8 PUSH2 0x13B JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x1AF JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0x1A8 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0x1A8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP DUP2 PUSH2 0x1B9 JUMP JUMPDEST PUSH2 0x1B9 DUP4 DUP4 PUSH2 0x1C1 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x1D1 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x19F SWAP2 SWAP1 PUSH2 0x22B JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x206 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1EE JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x221 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x1EB JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x24A DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x1EB JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A164 PUSH20 0x6F6C6343000811000A416464726573733A206C6F PUSH24 0x2D6C6576656C2064656C65676174652063616C6C20666169 PUSH13 0x6564A164736F6C634300081100 EXP PUSH1 0xA0 PUSH1 0x40 MSTORE ADDRESS PUSH1 0x80 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x14 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1D PUSH2 0x22 JUMP JUMPDEST PUSH2 0xE1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x8E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x27 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320696E697469 PUSH1 0x44 DUP3 ADD MSTORE PUSH7 0x616C697A696E67 PUSH1 0xC8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xFF SWAP1 DUP2 AND EQ PUSH2 0xDF JUMPI PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH2 0x1224 PUSH2 0x118 PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH2 0x423 ADD MSTORE DUP2 DUP2 PUSH2 0x4A8 ADD MSTORE DUP2 DUP2 PUSH2 0x59E ADD MSTORE DUP2 DUP2 PUSH2 0x623 ADD MSTORE PUSH2 0x70D ADD MSTORE PUSH2 0x1224 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xD2 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x4F1EF286 GT PUSH2 0x7F JUMPI DUP1 PUSH4 0x6ACCAB8C GT PUSH2 0x59 JUMPI DUP1 PUSH4 0x6ACCAB8C EQ PUSH2 0x209 JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0x220 JUMPI DUP1 PUSH4 0xC9C4BFCA EQ PUSH2 0x240 JUMPI DUP1 PUSH4 0xEFE51CCA EQ PUSH2 0x274 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x1BE JUMPI DUP1 PUSH4 0x52D1902D EQ PUSH2 0x1D1 JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0x1F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x3659CFE6 GT PUSH2 0xB0 JUMPI DUP1 PUSH4 0x3659CFE6 EQ PUSH2 0x150 JUMPI DUP1 PUSH4 0x4162169F EQ PUSH2 0x170 JUMPI DUP1 PUSH4 0x41DE6830 EQ PUSH2 0x1A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xD7 JUMPI DUP1 PUSH4 0x39A8C50 EQ PUSH2 0x10C JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0x12E JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xE3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF7 PUSH2 0xF2 CALLDATASIZE PUSH1 0x4 PUSH2 0xF38 JUMP JUMPDEST PUSH2 0x28B JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x118 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x12C PUSH2 0x127 CALLDATASIZE PUSH1 0x4 PUSH2 0xF62 JUMP JUMPDEST PUSH2 0x2F7 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x13A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x143 PUSH2 0x3EF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x103 SWAP2 SWAP1 PUSH2 0xF86 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x15C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x12C PUSH2 0x16B CALLDATASIZE PUSH1 0x4 PUSH2 0xFCF JUMP JUMPDEST PUSH2 0x419 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x17C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xC9 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x103 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 PUSH1 0x40 MLOAD PUSH2 0x103 SWAP2 SWAP1 PUSH2 0xFEC JUMP JUMPDEST PUSH2 0x12C PUSH2 0x1CC CALLDATASIZE PUSH1 0x4 PUSH2 0x102A JUMP JUMPDEST PUSH2 0x594 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1E6 PUSH2 0x700 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x103 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x200 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x18A PUSH2 0x7C5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x215 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1E6 PUSH2 0x12D SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x22C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x12C PUSH2 0x23B CALLDATASIZE PUSH1 0x4 PUSH2 0xFCF JUMP JUMPDEST PUSH2 0x7FD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x24C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1E6 PUSH32 0x821B6E3A557148015A918C89E5D092E878A69854A2D1A410635F771BD5A8A3F5 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x280 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1E6 PUSH2 0x12E SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x41DE683 PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x2BB JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x2D6 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x52D1902D PUSH1 0xE0 SHL EQ JUMPDEST DUP1 PUSH2 0x2F1 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x2 SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH2 0x319 JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF DUP1 DUP4 AND SWAP2 AND LT JUMPDEST PUSH2 0x381 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x44 DUP3 ADD MSTORE PUSH14 0x191E481A5B9A5D1A585B1A5E9959 PUSH1 0x92 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH2 0xFFFF NOT AND PUSH1 0xFF DUP4 AND OR PUSH2 0x100 OR SWAP1 SSTORE PUSH1 0x2 PUSH2 0xFFFF DUP4 AND LT ISZERO PUSH2 0x3A9 JUMPI PUSH1 0x2 PUSH2 0x12E SSTORE JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH1 0xFF DUP3 AND DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH2 0x3F7 PUSH2 0xF1A JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x4A6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x19195B1959D85D1958D85B1B PUSH1 0xA2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x378 JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x501 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x56C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x6163746976652070726F7879 PUSH1 0xA0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x378 JUMP JUMPDEST PUSH2 0x575 DUP2 PUSH2 0x8E9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x591 SWAP2 DUP4 SWAP2 SWAP1 PUSH2 0x926 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x621 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x19195B1959D85D1958D85B1B PUSH1 0xA2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x378 JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x67C PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x6E7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x6163746976652070726F7879 PUSH1 0xA0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x378 JUMP JUMPDEST PUSH2 0x6F0 DUP3 PUSH2 0x8E9 JUMP JUMPDEST PUSH2 0x6FC DUP3 DUP3 PUSH1 0x1 PUSH2 0x926 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x7A0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x38 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x555550535570677261646561626C653A206D757374206E6F742062652063616C PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6C6564207468726F7567682064656C656761746563616C6C0000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x378 JUMP JUMPDEST POP PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7F8 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x2 SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH2 0x81F JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF DUP1 DUP4 AND SWAP2 AND LT JUMPDEST PUSH2 0x882 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x44 DUP3 ADD MSTORE PUSH14 0x191E481A5B9A5D1A585B1A5E9959 PUSH1 0x92 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x378 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH2 0xFFFF NOT AND PUSH1 0xFF DUP4 AND OR PUSH2 0x100 OR SWAP1 SSTORE PUSH2 0x89F DUP3 PUSH2 0xACB JUMP JUMPDEST PUSH1 0x1 PUSH2 0x12D SSTORE PUSH1 0x2 PUSH2 0x12E SSTORE PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH1 0xFF DUP3 AND DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH2 0x3E3 JUMP JUMPDEST PUSH1 0xC9 SLOAD PUSH32 0x821B6E3A557148015A918C89E5D092E878A69854A2D1A410635F771BD5A8A3F5 SWAP1 PUSH2 0x6FC SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ADDRESS CALLER DUP5 PUSH1 0x0 CALLDATASIZE PUSH2 0xB3F JUMP JUMPDEST PUSH32 0x4910FDFA16FED3260ED0E7147F7CC6DA11A60208B5B9406D12A635614FFD9143 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x95E JUMPI PUSH2 0x959 DUP4 PUSH2 0xBFB JUMP JUMPDEST POP POP POP JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x52D1902D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x9B8 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x9B5 SWAP2 DUP2 ADD SWAP1 PUSH2 0x10EE JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0xA2A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524331393637557067726164653A206E657720696D706C656D656E74617469 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F6E206973206E6F742055555053000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x378 JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC DUP2 EQ PUSH2 0xABF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524331393637557067726164653A20756E737570706F727465642070726F78 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6961626C65555549440000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x378 JUMP JUMPDEST POP PUSH2 0x959 DUP4 DUP4 DUP4 PUSH2 0xCC6 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0xB36 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x378 JUMP JUMPDEST PUSH2 0x591 DUP2 PUSH2 0xCF1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x7EF7C883 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0xFDEF9106 SWAP1 PUSH2 0xB73 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x1107 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xB90 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xBB4 SWAP2 SWAP1 PUSH2 0x115B JUMP JUMPDEST PUSH2 0xBF3 JUMPI PUSH1 0x40 MLOAD PUSH4 0xCB6F8ED PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND PUSH1 0x4 DUP4 ADD MSTORE DUP1 DUP8 AND PUSH1 0x24 DUP4 ADD MSTORE DUP6 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x84 ADD PUSH2 0x378 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND EXTCODESIZE PUSH2 0xC78 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313936373A206E657720696D706C656D656E746174696F6E206973206E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F74206120636F6E747261637400000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x378 JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xCCF DUP4 PUSH2 0xD8B JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD GT DUP1 PUSH2 0xCDC JUMPI POP DUP1 JUMPDEST ISZERO PUSH2 0x959 JUMPI PUSH2 0xCEB DUP4 DUP4 PUSH2 0xDCB JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0xD5C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x378 JUMP JUMPDEST PUSH1 0xC9 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xD94 DUP2 PUSH2 0xBFB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xDF0 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x11F1 PUSH1 0x27 SWAP2 CODECOPY PUSH2 0xDF7 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0xE14 SWAP2 SWAP1 PUSH2 0x11A1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xE4F JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xE54 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0xE65 DUP7 DUP4 DUP4 DUP8 PUSH2 0xE6F JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0xEDE JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0xED7 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0xED7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x378 JUMP JUMPDEST POP DUP2 PUSH2 0xEE8 JUMP JUMPDEST PUSH2 0xEE8 DUP4 DUP4 PUSH2 0xEF0 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0xF00 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x378 SWAP2 SWAP1 PUSH2 0x11BD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xF4A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0xDF0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xF74 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH2 0xDF0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0xFB1 JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0xF8F JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x591 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xFE1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xDF0 DUP2 PUSH2 0xFBA JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH1 0x3 DUP4 LT PUSH2 0x100E JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 SWAP1 MSTORE SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x103D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x1048 DUP2 PUSH2 0xFBA JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1065 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1079 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x108B JUMPI PUSH2 0x108B PUSH2 0x1014 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x10B3 JUMPI PUSH2 0x10B3 PUSH2 0x1014 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x10CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1100 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND DUP4 MSTORE DUP1 DUP8 AND PUSH1 0x20 DUP5 ADD MSTORE POP DUP5 PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x80 PUSH1 0x60 DUP4 ADD MSTORE DUP3 PUSH1 0x80 DUP4 ADD MSTORE DUP3 DUP5 PUSH1 0xA0 DUP5 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0xA0 DUP5 DUP5 ADD ADD MSTORE PUSH1 0xA0 PUSH1 0x1F NOT PUSH1 0x1F DUP6 ADD AND DUP4 ADD ADD SWAP1 POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x116D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xDF0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1198 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1180 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x11B3 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x117D JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x11DC DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x117D JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A164 PUSH20 0x6F6C6343000811000A0000000000000000000000 ","sourceMap":"2565:1940:54:-:0;;;2722:87;;;;;;;;;;2767:37;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1605:32:83;;;2565:1940:54;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@deployUUPSProxy_14563":{"entryPoint":1526,"id":14563,"parameterSlots":2,"returnSlots":1},"@implementation_14447":{"entryPoint":null,"id":14447,"parameterSlots":0,"returnSlots":1},"@mockHelpers_11760":{"entryPoint":1330,"id":11760,"parameterSlots":1,"returnSlots":1},"@mockPermissions_11721":{"entryPoint":921,"id":11721,"parameterSlots":3,"returnSlots":1},"@prepareInstallation_12148":{"entryPoint":693,"id":12148,"parameterSlots":2,"returnSlots":2},"@prepareUninstallation_12233":{"entryPoint":496,"id":12233,"parameterSlots":2,"returnSlots":1},"@prepareUpdate_12205":{"entryPoint":521,"id":12205,"parameterSlots":3,"returnSlots":2},"@protocolVersion_14765":{"entryPoint":452,"id":14765,"parameterSlots":0,"returnSlots":1},"@supportsInterface_14438":{"entryPoint":369,"id":14438,"parameterSlots":1,"returnSlots":1},"@supportsInterface_9730":{"entryPoint":null,"id":9730,"parameterSlots":1,"returnSlots":1},"abi_decode_address":{"entryPoint":1728,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_struct_SetupPayload_calldata":{"entryPoint":1757,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_bytes_memory_ptr":{"entryPoint":2469,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_struct$_SetupPayload_$14224_calldata_ptr":{"entryPoint":1776,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_uint16t_struct$_SetupPayload_$14224_calldata_ptr":{"entryPoint":2062,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_bytes4":{"entryPoint":1630,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encodeUpdatedPos_struct_MultiTargetPermission":{"entryPoint":1882,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_bytes":{"entryPoint":2172,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_struct_PreparedSetupData":{"entryPoint":2244,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address_t_bytes_memory_ptr__to_t_address_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":2846,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_address_t_struct$_PreparedSetupData_$14216_memory_ptr__to_t_address_t_struct$_PreparedSetupData_$14216_memory_ptr__fromStack_reversed":{"entryPoint":2675,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr__fromStack_reversed":{"entryPoint":1985,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed":{"entryPoint":1674,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$14216_memory_ptr__to_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$14216_memory_ptr__fromStack_reversed":{"entryPoint":2397,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_contract$_IDAO_$10865__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_uint16__to_t_uint16__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_t_uint160":{"entryPoint":2741,"id":null,"parameterSlots":2,"returnSlots":1},"increment_t_uint160":{"entryPoint":2805,"id":null,"parameterSlots":1,"returnSlots":1},"panic_error_0x11":{"entryPoint":2719,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x21":{"entryPoint":1860,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x32":{"entryPoint":2783,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":2447,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:9309:92","statements":[{"nodeType":"YulBlock","src":"6:3:92","statements":[]},{"body":{"nodeType":"YulBlock","src":"83:217:92","statements":[{"body":{"nodeType":"YulBlock","src":"129:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"138:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"141:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"131:6:92"},"nodeType":"YulFunctionCall","src":"131:12:92"},"nodeType":"YulExpressionStatement","src":"131:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"104:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"113:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"100:3:92"},"nodeType":"YulFunctionCall","src":"100:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"125:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"96:3:92"},"nodeType":"YulFunctionCall","src":"96:32:92"},"nodeType":"YulIf","src":"93:52:92"},{"nodeType":"YulVariableDeclaration","src":"154:36:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"180:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"167:12:92"},"nodeType":"YulFunctionCall","src":"167:23:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"158:5:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"254:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"263:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"266:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"256:6:92"},"nodeType":"YulFunctionCall","src":"256:12:92"},"nodeType":"YulExpressionStatement","src":"256:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"212:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"223:5:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"234:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"239:10:92","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"230:3:92"},"nodeType":"YulFunctionCall","src":"230:20:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"219:3:92"},"nodeType":"YulFunctionCall","src":"219:32:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"209:2:92"},"nodeType":"YulFunctionCall","src":"209:43:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"202:6:92"},"nodeType":"YulFunctionCall","src":"202:51:92"},"nodeType":"YulIf","src":"199:71:92"},{"nodeType":"YulAssignment","src":"279:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"289:5:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"279:6:92"}]}]},"name":"abi_decode_tuple_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"49:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"60:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"72:6:92","type":""}],"src":"14:286:92"},{"body":{"nodeType":"YulBlock","src":"400:92:92","statements":[{"nodeType":"YulAssignment","src":"410:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"422:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"433:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"418:3:92"},"nodeType":"YulFunctionCall","src":"418:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"410:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"452:9:92"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"477:6:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"470:6:92"},"nodeType":"YulFunctionCall","src":"470:14:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"463:6:92"},"nodeType":"YulFunctionCall","src":"463:22:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"445:6:92"},"nodeType":"YulFunctionCall","src":"445:41:92"},"nodeType":"YulExpressionStatement","src":"445:41:92"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"369:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"380:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"391:4:92","type":""}],"src":"305:187:92"},{"body":{"nodeType":"YulBlock","src":"640:358:92","statements":[{"nodeType":"YulAssignment","src":"650:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"662:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"673:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"658:3:92"},"nodeType":"YulFunctionCall","src":"658:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"650:4:92"}]},{"nodeType":"YulVariableDeclaration","src":"685:20:92","value":{"name":"headStart","nodeType":"YulIdentifier","src":"696:9:92"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"689:3:92","type":""}]},{"nodeType":"YulAssignment","src":"714:16:92","value":{"name":"headStart","nodeType":"YulIdentifier","src":"721:9:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"714:3:92"}]},{"nodeType":"YulVariableDeclaration","src":"739:20:92","value":{"name":"value0","nodeType":"YulIdentifier","src":"753:6:92"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"743:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"768:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"777:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"772:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"834:158:92","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"855:3:92"},{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"870:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"864:5:92"},"nodeType":"YulFunctionCall","src":"864:13:92"},{"kind":"number","nodeType":"YulLiteral","src":"879:4:92","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"860:3:92"},"nodeType":"YulFunctionCall","src":"860:24:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"848:6:92"},"nodeType":"YulFunctionCall","src":"848:37:92"},"nodeType":"YulExpressionStatement","src":"848:37:92"},{"nodeType":"YulVariableDeclaration","src":"898:14:92","value":{"kind":"number","nodeType":"YulLiteral","src":"908:4:92","type":"","value":"0x20"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"902:2:92","type":""}]},{"nodeType":"YulAssignment","src":"925:19:92","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"936:3:92"},{"name":"_1","nodeType":"YulIdentifier","src":"941:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"932:3:92"},"nodeType":"YulFunctionCall","src":"932:12:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"925:3:92"}]},{"nodeType":"YulAssignment","src":"957:25:92","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"971:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"979:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"967:3:92"},"nodeType":"YulFunctionCall","src":"967:15:92"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"957:6:92"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"798:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"801:4:92","type":"","value":"0x03"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"795:2:92"},"nodeType":"YulFunctionCall","src":"795:11:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"807:18:92","statements":[{"nodeType":"YulAssignment","src":"809:14:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"818:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"821:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"814:3:92"},"nodeType":"YulFunctionCall","src":"814:9:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"809:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"791:3:92","statements":[]},"src":"787:205:92"}]},"name":"abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"609:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"620:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"631:4:92","type":""}],"src":"497:501:92"},{"body":{"nodeType":"YulBlock","src":"1104:125:92","statements":[{"nodeType":"YulAssignment","src":"1114:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1126:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1137:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1122:3:92"},"nodeType":"YulFunctionCall","src":"1122:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1114:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1156:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1171:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"1179:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1167:3:92"},"nodeType":"YulFunctionCall","src":"1167:55:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1149:6:92"},"nodeType":"YulFunctionCall","src":"1149:74:92"},"nodeType":"YulExpressionStatement","src":"1149:74:92"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1073:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1084:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1095:4:92","type":""}],"src":"1003:226:92"},{"body":{"nodeType":"YulBlock","src":"1283:147:92","statements":[{"nodeType":"YulAssignment","src":"1293:29:92","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1315:6:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1302:12:92"},"nodeType":"YulFunctionCall","src":"1302:20:92"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"1293:5:92"}]},{"body":{"nodeType":"YulBlock","src":"1408:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1417:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1420:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1410:6:92"},"nodeType":"YulFunctionCall","src":"1410:12:92"},"nodeType":"YulExpressionStatement","src":"1410:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1344:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1355:5:92"},{"kind":"number","nodeType":"YulLiteral","src":"1362:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1351:3:92"},"nodeType":"YulFunctionCall","src":"1351:54:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1341:2:92"},"nodeType":"YulFunctionCall","src":"1341:65:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1334:6:92"},"nodeType":"YulFunctionCall","src":"1334:73:92"},"nodeType":"YulIf","src":"1331:93:92"}]},"name":"abi_decode_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"1262:6:92","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"1273:5:92","type":""}],"src":"1234:196:92"},{"body":{"nodeType":"YulBlock","src":"1510:85:92","statements":[{"body":{"nodeType":"YulBlock","src":"1549:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1558:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1561:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1551:6:92"},"nodeType":"YulFunctionCall","src":"1551:12:92"},"nodeType":"YulExpressionStatement","src":"1551:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"end","nodeType":"YulIdentifier","src":"1531:3:92"},{"name":"offset","nodeType":"YulIdentifier","src":"1536:6:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1527:3:92"},"nodeType":"YulFunctionCall","src":"1527:16:92"},{"kind":"number","nodeType":"YulLiteral","src":"1545:2:92","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1523:3:92"},"nodeType":"YulFunctionCall","src":"1523:25:92"},"nodeType":"YulIf","src":"1520:45:92"},{"nodeType":"YulAssignment","src":"1574:15:92","value":{"name":"offset","nodeType":"YulIdentifier","src":"1583:6:92"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"1574:5:92"}]}]},"name":"abi_decode_struct_SetupPayload_calldata","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"1484:6:92","type":""},{"name":"end","nodeType":"YulTypedName","src":"1492:3:92","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"1500:5:92","type":""}],"src":"1435:160:92"},{"body":{"nodeType":"YulBlock","src":"1720:321:92","statements":[{"body":{"nodeType":"YulBlock","src":"1766:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1775:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1778:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1768:6:92"},"nodeType":"YulFunctionCall","src":"1768:12:92"},"nodeType":"YulExpressionStatement","src":"1768:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1741:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"1750:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1737:3:92"},"nodeType":"YulFunctionCall","src":"1737:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"1762:2:92","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1733:3:92"},"nodeType":"YulFunctionCall","src":"1733:32:92"},"nodeType":"YulIf","src":"1730:52:92"},{"nodeType":"YulAssignment","src":"1791:39:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1820:9:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"1801:18:92"},"nodeType":"YulFunctionCall","src":"1801:29:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1791:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"1839:46:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1870:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1881:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1866:3:92"},"nodeType":"YulFunctionCall","src":"1866:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1853:12:92"},"nodeType":"YulFunctionCall","src":"1853:32:92"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1843:6:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"1928:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1937:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1940:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1930:6:92"},"nodeType":"YulFunctionCall","src":"1930:12:92"},"nodeType":"YulExpressionStatement","src":"1930:12:92"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1900:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"1908:18:92","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1897:2:92"},"nodeType":"YulFunctionCall","src":"1897:30:92"},"nodeType":"YulIf","src":"1894:50:92"},{"nodeType":"YulAssignment","src":"1953:82:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2007:9:92"},{"name":"offset","nodeType":"YulIdentifier","src":"2018:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2003:3:92"},"nodeType":"YulFunctionCall","src":"2003:22:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2027:7:92"}],"functionName":{"name":"abi_decode_struct_SetupPayload_calldata","nodeType":"YulIdentifier","src":"1963:39:92"},"nodeType":"YulFunctionCall","src":"1963:72:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1953:6:92"}]}]},"name":"abi_decode_tuple_t_addresst_struct$_SetupPayload_$14224_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1678:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1689:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1701:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1709:6:92","type":""}],"src":"1600:441:92"},{"body":{"nodeType":"YulBlock","src":"2078:95:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2095:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2102:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"2107:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2098:3:92"},"nodeType":"YulFunctionCall","src":"2098:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2088:6:92"},"nodeType":"YulFunctionCall","src":"2088:31:92"},"nodeType":"YulExpressionStatement","src":"2088:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2135:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"2138:4:92","type":"","value":"0x21"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2128:6:92"},"nodeType":"YulFunctionCall","src":"2128:15:92"},"nodeType":"YulExpressionStatement","src":"2128:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2159:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2162:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2152:6:92"},"nodeType":"YulFunctionCall","src":"2152:15:92"},"nodeType":"YulExpressionStatement","src":"2152:15:92"}]},"name":"panic_error_0x21","nodeType":"YulFunctionDefinition","src":"2046:127:92"},{"body":{"nodeType":"YulBlock","src":"2268:606:92","statements":[{"nodeType":"YulVariableDeclaration","src":"2278:23:92","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2294:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2288:5:92"},"nodeType":"YulFunctionCall","src":"2288:13:92"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"2282:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"2339:111:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2360:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2367:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"2372:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2363:3:92"},"nodeType":"YulFunctionCall","src":"2363:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2353:6:92"},"nodeType":"YulFunctionCall","src":"2353:31:92"},"nodeType":"YulExpressionStatement","src":"2353:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2404:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"2407:4:92","type":"","value":"0x21"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2397:6:92"},"nodeType":"YulFunctionCall","src":"2397:15:92"},"nodeType":"YulExpressionStatement","src":"2397:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2432:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2435:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2425:6:92"},"nodeType":"YulFunctionCall","src":"2425:15:92"},"nodeType":"YulExpressionStatement","src":"2425:15:92"}]},"condition":{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"2323:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"2327:1:92","type":"","value":"3"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2320:2:92"},"nodeType":"YulFunctionCall","src":"2320:9:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2313:6:92"},"nodeType":"YulFunctionCall","src":"2313:17:92"},"nodeType":"YulIf","src":"2310:140:92"},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2466:3:92"},{"name":"_1","nodeType":"YulIdentifier","src":"2471:2:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2459:6:92"},"nodeType":"YulFunctionCall","src":"2459:15:92"},"nodeType":"YulExpressionStatement","src":"2459:15:92"},{"nodeType":"YulVariableDeclaration","src":"2483:44:92","value":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2513:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"2521:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2509:3:92"},"nodeType":"YulFunctionCall","src":"2509:17:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2503:5:92"},"nodeType":"YulFunctionCall","src":"2503:24:92"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"2487:12:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2536:52:92","value":{"kind":"number","nodeType":"YulLiteral","src":"2546:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"2540:2:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2608:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"2613:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2604:3:92"},"nodeType":"YulFunctionCall","src":"2604:14:92"},{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"2624:12:92"},{"name":"_2","nodeType":"YulIdentifier","src":"2638:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2620:3:92"},"nodeType":"YulFunctionCall","src":"2620:21:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2597:6:92"},"nodeType":"YulFunctionCall","src":"2597:45:92"},"nodeType":"YulExpressionStatement","src":"2597:45:92"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2662:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"2667:4:92","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2658:3:92"},"nodeType":"YulFunctionCall","src":"2658:14:92"},{"arguments":[{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2688:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"2696:4:92","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2684:3:92"},"nodeType":"YulFunctionCall","src":"2684:17:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2678:5:92"},"nodeType":"YulFunctionCall","src":"2678:24:92"},{"name":"_2","nodeType":"YulIdentifier","src":"2704:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2674:3:92"},"nodeType":"YulFunctionCall","src":"2674:33:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2651:6:92"},"nodeType":"YulFunctionCall","src":"2651:57:92"},"nodeType":"YulExpressionStatement","src":"2651:57:92"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2728:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"2733:4:92","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2724:3:92"},"nodeType":"YulFunctionCall","src":"2724:14:92"},{"arguments":[{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2754:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"2762:4:92","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2750:3:92"},"nodeType":"YulFunctionCall","src":"2750:17:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2744:5:92"},"nodeType":"YulFunctionCall","src":"2744:24:92"},{"name":"_2","nodeType":"YulIdentifier","src":"2770:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2740:3:92"},"nodeType":"YulFunctionCall","src":"2740:33:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2717:6:92"},"nodeType":"YulFunctionCall","src":"2717:57:92"},"nodeType":"YulExpressionStatement","src":"2717:57:92"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2794:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"2799:4:92","type":"","value":"0x80"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2790:3:92"},"nodeType":"YulFunctionCall","src":"2790:14:92"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2816:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"2824:4:92","type":"","value":"0x80"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2812:3:92"},"nodeType":"YulFunctionCall","src":"2812:17:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2806:5:92"},"nodeType":"YulFunctionCall","src":"2806:24:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2783:6:92"},"nodeType":"YulFunctionCall","src":"2783:48:92"},"nodeType":"YulExpressionStatement","src":"2783:48:92"},{"nodeType":"YulAssignment","src":"2840:28:92","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2858:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"2863:4:92","type":"","value":"0xa0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2854:3:92"},"nodeType":"YulFunctionCall","src":"2854:14:92"},"variableNames":[{"name":"updatedPos","nodeType":"YulIdentifier","src":"2840:10:92"}]}]},"name":"abi_encodeUpdatedPos_struct_MultiTargetPermission","nodeType":"YulFunctionDefinition","parameters":[{"name":"value0","nodeType":"YulTypedName","src":"2237:6:92","type":""},{"name":"pos","nodeType":"YulTypedName","src":"2245:3:92","type":""}],"returnVariables":[{"name":"updatedPos","nodeType":"YulTypedName","src":"2253:10:92","type":""}],"src":"2178:696:92"},{"body":{"nodeType":"YulBlock","src":"3110:499:92","statements":[{"nodeType":"YulVariableDeclaration","src":"3120:12:92","value":{"kind":"number","nodeType":"YulLiteral","src":"3130:2:92","type":"","value":"32"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"3124:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3141:32:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3159:9:92"},{"name":"_1","nodeType":"YulIdentifier","src":"3170:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3155:3:92"},"nodeType":"YulFunctionCall","src":"3155:18:92"},"variables":[{"name":"tail_1","nodeType":"YulTypedName","src":"3145:6:92","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3189:9:92"},{"name":"_1","nodeType":"YulIdentifier","src":"3200:2:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3182:6:92"},"nodeType":"YulFunctionCall","src":"3182:21:92"},"nodeType":"YulExpressionStatement","src":"3182:21:92"},{"nodeType":"YulVariableDeclaration","src":"3212:17:92","value":{"name":"tail_1","nodeType":"YulIdentifier","src":"3223:6:92"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"3216:3:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3238:27:92","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3258:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3252:5:92"},"nodeType":"YulFunctionCall","src":"3252:13:92"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"3242:6:92","type":""}]},{"expression":{"arguments":[{"name":"tail_1","nodeType":"YulIdentifier","src":"3281:6:92"},{"name":"length","nodeType":"YulIdentifier","src":"3289:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3274:6:92"},"nodeType":"YulFunctionCall","src":"3274:22:92"},"nodeType":"YulExpressionStatement","src":"3274:22:92"},{"nodeType":"YulAssignment","src":"3305:25:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3316:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3327:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3312:3:92"},"nodeType":"YulFunctionCall","src":"3312:18:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"3305:3:92"}]},{"nodeType":"YulVariableDeclaration","src":"3339:29:92","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3357:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"3365:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3353:3:92"},"nodeType":"YulFunctionCall","src":"3353:15:92"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"3343:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3377:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"3386:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"3381:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"3445:138:92","statements":[{"nodeType":"YulAssignment","src":"3459:76:92","value":{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"3522:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3516:5:92"},"nodeType":"YulFunctionCall","src":"3516:13:92"},{"name":"pos","nodeType":"YulIdentifier","src":"3531:3:92"}],"functionName":{"name":"abi_encodeUpdatedPos_struct_MultiTargetPermission","nodeType":"YulIdentifier","src":"3466:49:92"},"nodeType":"YulFunctionCall","src":"3466:69:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"3459:3:92"}]},{"nodeType":"YulAssignment","src":"3548:25:92","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"3562:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"3570:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3558:3:92"},"nodeType":"YulFunctionCall","src":"3558:15:92"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"3548:6:92"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3407:1:92"},{"name":"length","nodeType":"YulIdentifier","src":"3410:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"3404:2:92"},"nodeType":"YulFunctionCall","src":"3404:13:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"3418:18:92","statements":[{"nodeType":"YulAssignment","src":"3420:14:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3429:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"3432:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3425:3:92"},"nodeType":"YulFunctionCall","src":"3425:9:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"3420:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"3400:3:92","statements":[]},"src":"3396:187:92"},{"nodeType":"YulAssignment","src":"3592:11:92","value":{"name":"pos","nodeType":"YulIdentifier","src":"3600:3:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3592:4:92"}]}]},"name":"abi_encode_tuple_t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3079:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3090:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3101:4:92","type":""}],"src":"2879:730:92"},{"body":{"nodeType":"YulBlock","src":"3750:465:92","statements":[{"body":{"nodeType":"YulBlock","src":"3796:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3805:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3808:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3798:6:92"},"nodeType":"YulFunctionCall","src":"3798:12:92"},"nodeType":"YulExpressionStatement","src":"3798:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3771:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"3780:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3767:3:92"},"nodeType":"YulFunctionCall","src":"3767:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"3792:2:92","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3763:3:92"},"nodeType":"YulFunctionCall","src":"3763:32:92"},"nodeType":"YulIf","src":"3760:52:92"},{"nodeType":"YulAssignment","src":"3821:39:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3850:9:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"3831:18:92"},"nodeType":"YulFunctionCall","src":"3831:29:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3821:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"3869:45:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3899:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3910:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3895:3:92"},"nodeType":"YulFunctionCall","src":"3895:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3882:12:92"},"nodeType":"YulFunctionCall","src":"3882:32:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"3873:5:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"3964:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3973:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3976:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3966:6:92"},"nodeType":"YulFunctionCall","src":"3966:12:92"},"nodeType":"YulExpressionStatement","src":"3966:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3936:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3947:5:92"},{"kind":"number","nodeType":"YulLiteral","src":"3954:6:92","type":"","value":"0xffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3943:3:92"},"nodeType":"YulFunctionCall","src":"3943:18:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"3933:2:92"},"nodeType":"YulFunctionCall","src":"3933:29:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3926:6:92"},"nodeType":"YulFunctionCall","src":"3926:37:92"},"nodeType":"YulIf","src":"3923:57:92"},{"nodeType":"YulAssignment","src":"3989:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"3999:5:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"3989:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"4013:46:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4044:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4055:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4040:3:92"},"nodeType":"YulFunctionCall","src":"4040:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4027:12:92"},"nodeType":"YulFunctionCall","src":"4027:32:92"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4017:6:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"4102:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4111:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4114:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4104:6:92"},"nodeType":"YulFunctionCall","src":"4104:12:92"},"nodeType":"YulExpressionStatement","src":"4104:12:92"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"4074:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"4082:18:92","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4071:2:92"},"nodeType":"YulFunctionCall","src":"4071:30:92"},"nodeType":"YulIf","src":"4068:50:92"},{"nodeType":"YulAssignment","src":"4127:82:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4181:9:92"},{"name":"offset","nodeType":"YulIdentifier","src":"4192:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4177:3:92"},"nodeType":"YulFunctionCall","src":"4177:22:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4201:7:92"}],"functionName":{"name":"abi_decode_struct_SetupPayload_calldata","nodeType":"YulIdentifier","src":"4137:39:92"},"nodeType":"YulFunctionCall","src":"4137:72:92"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"4127:6:92"}]}]},"name":"abi_decode_tuple_t_addresst_uint16t_struct$_SetupPayload_$14224_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3700:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3711:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3723:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"3731:6:92","type":""},{"name":"value2","nodeType":"YulTypedName","src":"3739:6:92","type":""}],"src":"3614:601:92"},{"body":{"nodeType":"YulBlock","src":"4269:373:92","statements":[{"nodeType":"YulVariableDeclaration","src":"4279:26:92","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4299:5:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4293:5:92"},"nodeType":"YulFunctionCall","src":"4293:12:92"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"4283:6:92","type":""}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4321:3:92"},{"name":"length","nodeType":"YulIdentifier","src":"4326:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4314:6:92"},"nodeType":"YulFunctionCall","src":"4314:19:92"},"nodeType":"YulExpressionStatement","src":"4314:19:92"},{"nodeType":"YulVariableDeclaration","src":"4342:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"4351:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"4346:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"4413:110:92","statements":[{"nodeType":"YulVariableDeclaration","src":"4427:14:92","value":{"kind":"number","nodeType":"YulLiteral","src":"4437:4:92","type":"","value":"0x20"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"4431:2:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4469:3:92"},{"name":"i","nodeType":"YulIdentifier","src":"4474:1:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4465:3:92"},"nodeType":"YulFunctionCall","src":"4465:11:92"},{"name":"_1","nodeType":"YulIdentifier","src":"4478:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4461:3:92"},"nodeType":"YulFunctionCall","src":"4461:20:92"},{"arguments":[{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4497:5:92"},{"name":"i","nodeType":"YulIdentifier","src":"4504:1:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4493:3:92"},"nodeType":"YulFunctionCall","src":"4493:13:92"},{"name":"_1","nodeType":"YulIdentifier","src":"4508:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4489:3:92"},"nodeType":"YulFunctionCall","src":"4489:22:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4483:5:92"},"nodeType":"YulFunctionCall","src":"4483:29:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4454:6:92"},"nodeType":"YulFunctionCall","src":"4454:59:92"},"nodeType":"YulExpressionStatement","src":"4454:59:92"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"4372:1:92"},{"name":"length","nodeType":"YulIdentifier","src":"4375:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"4369:2:92"},"nodeType":"YulFunctionCall","src":"4369:13:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"4383:21:92","statements":[{"nodeType":"YulAssignment","src":"4385:17:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"4394:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"4397:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4390:3:92"},"nodeType":"YulFunctionCall","src":"4390:12:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"4385:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"4365:3:92","statements":[]},"src":"4361:162:92"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4547:3:92"},{"name":"length","nodeType":"YulIdentifier","src":"4552:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4543:3:92"},"nodeType":"YulFunctionCall","src":"4543:16:92"},{"kind":"number","nodeType":"YulLiteral","src":"4561:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4539:3:92"},"nodeType":"YulFunctionCall","src":"4539:27:92"},{"kind":"number","nodeType":"YulLiteral","src":"4568:1:92","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4532:6:92"},"nodeType":"YulFunctionCall","src":"4532:38:92"},"nodeType":"YulExpressionStatement","src":"4532:38:92"},{"nodeType":"YulAssignment","src":"4579:57:92","value":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4594:3:92"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"4607:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"4615:2:92","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4603:3:92"},"nodeType":"YulFunctionCall","src":"4603:15:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4624:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"4620:3:92"},"nodeType":"YulFunctionCall","src":"4620:7:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4599:3:92"},"nodeType":"YulFunctionCall","src":"4599:29:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4590:3:92"},"nodeType":"YulFunctionCall","src":"4590:39:92"},{"kind":"number","nodeType":"YulLiteral","src":"4631:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4586:3:92"},"nodeType":"YulFunctionCall","src":"4586:50:92"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"4579:3:92"}]}]},"name":"abi_encode_bytes","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"4246:5:92","type":""},{"name":"pos","nodeType":"YulTypedName","src":"4253:3:92","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"4261:3:92","type":""}],"src":"4220:422:92"},{"body":{"nodeType":"YulBlock","src":"4715:1094:92","statements":[{"nodeType":"YulVariableDeclaration","src":"4725:26:92","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4741:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"4746:4:92","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4737:3:92"},"nodeType":"YulFunctionCall","src":"4737:14:92"},"variables":[{"name":"tail","nodeType":"YulTypedName","src":"4729:4:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4760:32:92","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4786:5:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4780:5:92"},"nodeType":"YulFunctionCall","src":"4780:12:92"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"4764:12:92","type":""}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4808:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"4813:4:92","type":"","value":"0x40"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4801:6:92"},"nodeType":"YulFunctionCall","src":"4801:17:92"},"nodeType":"YulExpressionStatement","src":"4801:17:92"},{"nodeType":"YulVariableDeclaration","src":"4827:17:92","value":{"name":"tail","nodeType":"YulIdentifier","src":"4840:4:92"},"variables":[{"name":"pos_1","nodeType":"YulTypedName","src":"4831:5:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4853:33:92","value":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"4873:12:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4867:5:92"},"nodeType":"YulFunctionCall","src":"4867:19:92"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"4857:6:92","type":""}]},{"expression":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"4902:4:92"},{"name":"length","nodeType":"YulIdentifier","src":"4908:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4895:6:92"},"nodeType":"YulFunctionCall","src":"4895:20:92"},"nodeType":"YulExpressionStatement","src":"4895:20:92"},{"nodeType":"YulAssignment","src":"4924:21:92","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4937:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"4942:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4933:3:92"},"nodeType":"YulFunctionCall","src":"4933:12:92"},"variableNames":[{"name":"pos_1","nodeType":"YulIdentifier","src":"4924:5:92"}]},{"nodeType":"YulVariableDeclaration","src":"4954:14:92","value":{"kind":"number","nodeType":"YulLiteral","src":"4964:4:92","type":"","value":"0x20"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"4958:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4977:35:92","value":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"4995:12:92"},{"name":"_1","nodeType":"YulIdentifier","src":"5009:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4991:3:92"},"nodeType":"YulFunctionCall","src":"4991:21:92"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"4981:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5021:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"5030:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"5025:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"5089:175:92","statements":[{"expression":{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5110:5:92"},{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"5127:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5121:5:92"},"nodeType":"YulFunctionCall","src":"5121:13:92"},{"kind":"number","nodeType":"YulLiteral","src":"5136:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5117:3:92"},"nodeType":"YulFunctionCall","src":"5117:62:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5103:6:92"},"nodeType":"YulFunctionCall","src":"5103:77:92"},"nodeType":"YulExpressionStatement","src":"5103:77:92"},{"nodeType":"YulAssignment","src":"5193:23:92","value":{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5206:5:92"},{"name":"_1","nodeType":"YulIdentifier","src":"5213:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5202:3:92"},"nodeType":"YulFunctionCall","src":"5202:14:92"},"variableNames":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5193:5:92"}]},{"nodeType":"YulAssignment","src":"5229:25:92","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"5243:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"5251:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5239:3:92"},"nodeType":"YulFunctionCall","src":"5239:15:92"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"5229:6:92"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"5051:1:92"},{"name":"length","nodeType":"YulIdentifier","src":"5054:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"5048:2:92"},"nodeType":"YulFunctionCall","src":"5048:13:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"5062:18:92","statements":[{"nodeType":"YulAssignment","src":"5064:14:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"5073:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"5076:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5069:3:92"},"nodeType":"YulFunctionCall","src":"5069:9:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"5064:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"5044:3:92","statements":[]},"src":"5040:224:92"},{"nodeType":"YulVariableDeclaration","src":"5273:43:92","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5305:5:92"},{"name":"_1","nodeType":"YulIdentifier","src":"5312:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5301:3:92"},"nodeType":"YulFunctionCall","src":"5301:14:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5295:5:92"},"nodeType":"YulFunctionCall","src":"5295:21:92"},"variables":[{"name":"memberValue0_1","nodeType":"YulTypedName","src":"5277:14:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5336:3:92"},{"name":"_1","nodeType":"YulIdentifier","src":"5341:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5332:3:92"},"nodeType":"YulFunctionCall","src":"5332:12:92"},{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5350:5:92"},{"name":"pos","nodeType":"YulIdentifier","src":"5357:3:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5346:3:92"},"nodeType":"YulFunctionCall","src":"5346:15:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5325:6:92"},"nodeType":"YulFunctionCall","src":"5325:37:92"},"nodeType":"YulExpressionStatement","src":"5325:37:92"},{"nodeType":"YulVariableDeclaration","src":"5371:18:92","value":{"name":"pos_1","nodeType":"YulIdentifier","src":"5384:5:92"},"variables":[{"name":"pos_2","nodeType":"YulTypedName","src":"5375:5:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5398:37:92","value":{"arguments":[{"name":"memberValue0_1","nodeType":"YulIdentifier","src":"5420:14:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5414:5:92"},"nodeType":"YulFunctionCall","src":"5414:21:92"},"variables":[{"name":"length_1","nodeType":"YulTypedName","src":"5402:8:92","type":""}]},{"expression":{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5451:5:92"},{"name":"length_1","nodeType":"YulIdentifier","src":"5458:8:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5444:6:92"},"nodeType":"YulFunctionCall","src":"5444:23:92"},"nodeType":"YulExpressionStatement","src":"5444:23:92"},{"nodeType":"YulAssignment","src":"5476:23:92","value":{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5489:5:92"},{"name":"_1","nodeType":"YulIdentifier","src":"5496:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5485:3:92"},"nodeType":"YulFunctionCall","src":"5485:14:92"},"variableNames":[{"name":"pos_2","nodeType":"YulIdentifier","src":"5476:5:92"}]},{"nodeType":"YulVariableDeclaration","src":"5508:39:92","value":{"arguments":[{"name":"memberValue0_1","nodeType":"YulIdentifier","src":"5528:14:92"},{"name":"_1","nodeType":"YulIdentifier","src":"5544:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5524:3:92"},"nodeType":"YulFunctionCall","src":"5524:23:92"},"variables":[{"name":"srcPtr_1","nodeType":"YulTypedName","src":"5512:8:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5556:12:92","value":{"kind":"number","nodeType":"YulLiteral","src":"5567:1:92","type":"","value":"0"},"variables":[{"name":"i_1","nodeType":"YulTypedName","src":"5560:3:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"5634:148:92","statements":[{"nodeType":"YulAssignment","src":"5648:82:92","value":{"arguments":[{"arguments":[{"name":"srcPtr_1","nodeType":"YulIdentifier","src":"5713:8:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5707:5:92"},"nodeType":"YulFunctionCall","src":"5707:15:92"},{"name":"pos_2","nodeType":"YulIdentifier","src":"5724:5:92"}],"functionName":{"name":"abi_encodeUpdatedPos_struct_MultiTargetPermission","nodeType":"YulIdentifier","src":"5657:49:92"},"nodeType":"YulFunctionCall","src":"5657:73:92"},"variableNames":[{"name":"pos_2","nodeType":"YulIdentifier","src":"5648:5:92"}]},{"nodeType":"YulAssignment","src":"5743:29:92","value":{"arguments":[{"name":"srcPtr_1","nodeType":"YulIdentifier","src":"5759:8:92"},{"name":"_1","nodeType":"YulIdentifier","src":"5769:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5755:3:92"},"nodeType":"YulFunctionCall","src":"5755:17:92"},"variableNames":[{"name":"srcPtr_1","nodeType":"YulIdentifier","src":"5743:8:92"}]}]},"condition":{"arguments":[{"name":"i_1","nodeType":"YulIdentifier","src":"5588:3:92"},{"name":"length_1","nodeType":"YulIdentifier","src":"5593:8:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"5585:2:92"},"nodeType":"YulFunctionCall","src":"5585:17:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"5603:22:92","statements":[{"nodeType":"YulAssignment","src":"5605:18:92","value":{"arguments":[{"name":"i_1","nodeType":"YulIdentifier","src":"5616:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"5621:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5612:3:92"},"nodeType":"YulFunctionCall","src":"5612:11:92"},"variableNames":[{"name":"i_1","nodeType":"YulIdentifier","src":"5605:3:92"}]}]},"pre":{"nodeType":"YulBlock","src":"5581:3:92","statements":[]},"src":"5577:205:92"},{"nodeType":"YulAssignment","src":"5791:12:92","value":{"name":"pos_2","nodeType":"YulIdentifier","src":"5798:5:92"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"5791:3:92"}]}]},"name":"abi_encode_struct_PreparedSetupData","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"4692:5:92","type":""},{"name":"pos","nodeType":"YulTypedName","src":"4699:3:92","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"4707:3:92","type":""}],"src":"4647:1162:92"},{"body":{"nodeType":"YulBlock","src":"6033:231:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6050:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6061:2:92","type":"","value":"64"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6043:6:92"},"nodeType":"YulFunctionCall","src":"6043:21:92"},"nodeType":"YulExpressionStatement","src":"6043:21:92"},{"nodeType":"YulVariableDeclaration","src":"6073:58:92","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6104:6:92"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6116:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6127:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6112:3:92"},"nodeType":"YulFunctionCall","src":"6112:18:92"}],"functionName":{"name":"abi_encode_bytes","nodeType":"YulIdentifier","src":"6087:16:92"},"nodeType":"YulFunctionCall","src":"6087:44:92"},"variables":[{"name":"tail_1","nodeType":"YulTypedName","src":"6077:6:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6151:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6162:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6147:3:92"},"nodeType":"YulFunctionCall","src":"6147:18:92"},{"arguments":[{"name":"tail_1","nodeType":"YulIdentifier","src":"6171:6:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"6179:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6167:3:92"},"nodeType":"YulFunctionCall","src":"6167:22:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6140:6:92"},"nodeType":"YulFunctionCall","src":"6140:50:92"},"nodeType":"YulExpressionStatement","src":"6140:50:92"},{"nodeType":"YulAssignment","src":"6199:59:92","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"6243:6:92"},{"name":"tail_1","nodeType":"YulIdentifier","src":"6251:6:92"}],"functionName":{"name":"abi_encode_struct_PreparedSetupData","nodeType":"YulIdentifier","src":"6207:35:92"},"nodeType":"YulFunctionCall","src":"6207:51:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6199:4:92"}]}]},"name":"abi_encode_tuple_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$14216_memory_ptr__to_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$14216_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5994:9:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"6005:6:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"6013:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6024:4:92","type":""}],"src":"5814:450:92"},{"body":{"nodeType":"YulBlock","src":"6301:95:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6318:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6325:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"6330:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"6321:3:92"},"nodeType":"YulFunctionCall","src":"6321:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6311:6:92"},"nodeType":"YulFunctionCall","src":"6311:31:92"},"nodeType":"YulExpressionStatement","src":"6311:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6358:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"6361:4:92","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6351:6:92"},"nodeType":"YulFunctionCall","src":"6351:15:92"},"nodeType":"YulExpressionStatement","src":"6351:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6382:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6385:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6375:6:92"},"nodeType":"YulFunctionCall","src":"6375:15:92"},"nodeType":"YulExpressionStatement","src":"6375:15:92"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"6269:127:92"},{"body":{"nodeType":"YulBlock","src":"6497:899:92","statements":[{"body":{"nodeType":"YulBlock","src":"6543:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6552:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6555:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6545:6:92"},"nodeType":"YulFunctionCall","src":"6545:12:92"},"nodeType":"YulExpressionStatement","src":"6545:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"6518:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"6527:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6514:3:92"},"nodeType":"YulFunctionCall","src":"6514:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"6539:2:92","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6510:3:92"},"nodeType":"YulFunctionCall","src":"6510:32:92"},"nodeType":"YulIf","src":"6507:52:92"},{"nodeType":"YulAssignment","src":"6568:39:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6597:9:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"6578:18:92"},"nodeType":"YulFunctionCall","src":"6578:29:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"6568:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"6616:46:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6647:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6658:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6643:3:92"},"nodeType":"YulFunctionCall","src":"6643:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6630:12:92"},"nodeType":"YulFunctionCall","src":"6630:32:92"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"6620:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"6671:28:92","value":{"kind":"number","nodeType":"YulLiteral","src":"6681:18:92","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"6675:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"6726:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6735:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6738:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6728:6:92"},"nodeType":"YulFunctionCall","src":"6728:12:92"},"nodeType":"YulExpressionStatement","src":"6728:12:92"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"6714:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"6722:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6711:2:92"},"nodeType":"YulFunctionCall","src":"6711:14:92"},"nodeType":"YulIf","src":"6708:34:92"},{"nodeType":"YulVariableDeclaration","src":"6751:32:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6765:9:92"},{"name":"offset","nodeType":"YulIdentifier","src":"6776:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6761:3:92"},"nodeType":"YulFunctionCall","src":"6761:22:92"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"6755:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"6831:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6840:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6843:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6833:6:92"},"nodeType":"YulFunctionCall","src":"6833:12:92"},"nodeType":"YulExpressionStatement","src":"6833:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"6810:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"6814:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6806:3:92"},"nodeType":"YulFunctionCall","src":"6806:13:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"6821:7:92"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6802:3:92"},"nodeType":"YulFunctionCall","src":"6802:27:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"6795:6:92"},"nodeType":"YulFunctionCall","src":"6795:35:92"},"nodeType":"YulIf","src":"6792:55:92"},{"nodeType":"YulVariableDeclaration","src":"6856:26:92","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"6879:2:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6866:12:92"},"nodeType":"YulFunctionCall","src":"6866:16:92"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"6860:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"6905:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"6907:16:92"},"nodeType":"YulFunctionCall","src":"6907:18:92"},"nodeType":"YulExpressionStatement","src":"6907:18:92"}]},"condition":{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"6897:2:92"},{"name":"_1","nodeType":"YulIdentifier","src":"6901:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6894:2:92"},"nodeType":"YulFunctionCall","src":"6894:10:92"},"nodeType":"YulIf","src":"6891:36:92"},{"nodeType":"YulVariableDeclaration","src":"6936:17:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6950:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"6946:3:92"},"nodeType":"YulFunctionCall","src":"6946:7:92"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"6940:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"6962:23:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6982:2:92","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6976:5:92"},"nodeType":"YulFunctionCall","src":"6976:9:92"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"6966:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"6994:71:92","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7016:6:92"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"7040:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"7044:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7036:3:92"},"nodeType":"YulFunctionCall","src":"7036:13:92"},{"name":"_4","nodeType":"YulIdentifier","src":"7051:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7032:3:92"},"nodeType":"YulFunctionCall","src":"7032:22:92"},{"kind":"number","nodeType":"YulLiteral","src":"7056:2:92","type":"","value":"63"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7028:3:92"},"nodeType":"YulFunctionCall","src":"7028:31:92"},{"name":"_4","nodeType":"YulIdentifier","src":"7061:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7024:3:92"},"nodeType":"YulFunctionCall","src":"7024:40:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7012:3:92"},"nodeType":"YulFunctionCall","src":"7012:53:92"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"6998:10:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"7124:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"7126:16:92"},"nodeType":"YulFunctionCall","src":"7126:18:92"},"nodeType":"YulExpressionStatement","src":"7126:18:92"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"7083:10:92"},{"name":"_1","nodeType":"YulIdentifier","src":"7095:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"7080:2:92"},"nodeType":"YulFunctionCall","src":"7080:18:92"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"7103:10:92"},{"name":"memPtr","nodeType":"YulIdentifier","src":"7115:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"7100:2:92"},"nodeType":"YulFunctionCall","src":"7100:22:92"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"7077:2:92"},"nodeType":"YulFunctionCall","src":"7077:46:92"},"nodeType":"YulIf","src":"7074:72:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7162:2:92","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"7166:10:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7155:6:92"},"nodeType":"YulFunctionCall","src":"7155:22:92"},"nodeType":"YulExpressionStatement","src":"7155:22:92"},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7193:6:92"},{"name":"_3","nodeType":"YulIdentifier","src":"7201:2:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7186:6:92"},"nodeType":"YulFunctionCall","src":"7186:18:92"},"nodeType":"YulExpressionStatement","src":"7186:18:92"},{"body":{"nodeType":"YulBlock","src":"7250:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7259:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7262:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7252:6:92"},"nodeType":"YulFunctionCall","src":"7252:12:92"},"nodeType":"YulExpressionStatement","src":"7252:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"7227:2:92"},{"name":"_3","nodeType":"YulIdentifier","src":"7231:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7223:3:92"},"nodeType":"YulFunctionCall","src":"7223:11:92"},{"kind":"number","nodeType":"YulLiteral","src":"7236:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7219:3:92"},"nodeType":"YulFunctionCall","src":"7219:20:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"7241:7:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"7216:2:92"},"nodeType":"YulFunctionCall","src":"7216:33:92"},"nodeType":"YulIf","src":"7213:53:92"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7292:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"7300:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7288:3:92"},"nodeType":"YulFunctionCall","src":"7288:15:92"},{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"7309:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"7313:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7305:3:92"},"nodeType":"YulFunctionCall","src":"7305:11:92"},{"name":"_3","nodeType":"YulIdentifier","src":"7318:2:92"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"7275:12:92"},"nodeType":"YulFunctionCall","src":"7275:46:92"},"nodeType":"YulExpressionStatement","src":"7275:46:92"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7345:6:92"},{"name":"_3","nodeType":"YulIdentifier","src":"7353:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7341:3:92"},"nodeType":"YulFunctionCall","src":"7341:15:92"},{"kind":"number","nodeType":"YulLiteral","src":"7358:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7337:3:92"},"nodeType":"YulFunctionCall","src":"7337:24:92"},{"kind":"number","nodeType":"YulLiteral","src":"7363:1:92","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7330:6:92"},"nodeType":"YulFunctionCall","src":"7330:35:92"},"nodeType":"YulExpressionStatement","src":"7330:35:92"},{"nodeType":"YulAssignment","src":"7374:16:92","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"7384:6:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"7374:6:92"}]}]},"name":"abi_decode_tuple_t_addresst_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6455:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"6466:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"6478:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"6486:6:92","type":""}],"src":"6401:995:92"},{"body":{"nodeType":"YulBlock","src":"7602:209:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7619:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7634:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"7642:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7630:3:92"},"nodeType":"YulFunctionCall","src":"7630:55:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7612:6:92"},"nodeType":"YulFunctionCall","src":"7612:74:92"},"nodeType":"YulExpressionStatement","src":"7612:74:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7706:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7717:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7702:3:92"},"nodeType":"YulFunctionCall","src":"7702:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"7722:2:92","type":"","value":"64"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7695:6:92"},"nodeType":"YulFunctionCall","src":"7695:30:92"},"nodeType":"YulExpressionStatement","src":"7695:30:92"},{"nodeType":"YulAssignment","src":"7734:71:92","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"7778:6:92"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7790:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7801:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7786:3:92"},"nodeType":"YulFunctionCall","src":"7786:18:92"}],"functionName":{"name":"abi_encode_struct_PreparedSetupData","nodeType":"YulIdentifier","src":"7742:35:92"},"nodeType":"YulFunctionCall","src":"7742:63:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7734:4:92"}]}]},"name":"abi_encode_tuple_t_address_t_struct$_PreparedSetupData_$14216_memory_ptr__to_t_address_t_struct$_PreparedSetupData_$14216_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7563:9:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"7574:6:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"7582:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7593:4:92","type":""}],"src":"7401:410:92"},{"body":{"nodeType":"YulBlock","src":"7915:89:92","statements":[{"nodeType":"YulAssignment","src":"7925:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7937:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7948:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7933:3:92"},"nodeType":"YulFunctionCall","src":"7933:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7925:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7967:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7982:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"7990:6:92","type":"","value":"0xffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7978:3:92"},"nodeType":"YulFunctionCall","src":"7978:19:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7960:6:92"},"nodeType":"YulFunctionCall","src":"7960:38:92"},"nodeType":"YulExpressionStatement","src":"7960:38:92"}]},"name":"abi_encode_tuple_t_uint16__to_t_uint16__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7884:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"7895:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7906:4:92","type":""}],"src":"7816:188:92"},{"body":{"nodeType":"YulBlock","src":"8124:125:92","statements":[{"nodeType":"YulAssignment","src":"8134:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8146:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8157:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8142:3:92"},"nodeType":"YulFunctionCall","src":"8142:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"8134:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8176:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"8191:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"8199:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8187:3:92"},"nodeType":"YulFunctionCall","src":"8187:55:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8169:6:92"},"nodeType":"YulFunctionCall","src":"8169:74:92"},"nodeType":"YulExpressionStatement","src":"8169:74:92"}]},"name":"abi_encode_tuple_t_contract$_IDAO_$10865__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8093:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"8104:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"8115:4:92","type":""}],"src":"8009:240:92"},{"body":{"nodeType":"YulBlock","src":"8286:95:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8303:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8310:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"8315:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"8306:3:92"},"nodeType":"YulFunctionCall","src":"8306:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8296:6:92"},"nodeType":"YulFunctionCall","src":"8296:31:92"},"nodeType":"YulExpressionStatement","src":"8296:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8343:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"8346:4:92","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8336:6:92"},"nodeType":"YulFunctionCall","src":"8336:15:92"},"nodeType":"YulExpressionStatement","src":"8336:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8367:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8370:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8360:6:92"},"nodeType":"YulFunctionCall","src":"8360:15:92"},"nodeType":"YulExpressionStatement","src":"8360:15:92"}]},"name":"panic_error_0x11","nodeType":"YulFunctionDefinition","src":"8254:127:92"},{"body":{"nodeType":"YulBlock","src":"8435:159:92","statements":[{"nodeType":"YulVariableDeclaration","src":"8445:52:92","value":{"kind":"number","nodeType":"YulLiteral","src":"8455:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"8449:2:92","type":""}]},{"nodeType":"YulAssignment","src":"8506:35:92","value":{"arguments":[{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"8522:1:92"},{"name":"_1","nodeType":"YulIdentifier","src":"8525:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8518:3:92"},"nodeType":"YulFunctionCall","src":"8518:10:92"},{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"8534:1:92"},{"name":"_1","nodeType":"YulIdentifier","src":"8537:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8530:3:92"},"nodeType":"YulFunctionCall","src":"8530:10:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"8514:3:92"},"nodeType":"YulFunctionCall","src":"8514:27:92"},"variableNames":[{"name":"diff","nodeType":"YulIdentifier","src":"8506:4:92"}]},{"body":{"nodeType":"YulBlock","src":"8566:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"8568:16:92"},"nodeType":"YulFunctionCall","src":"8568:18:92"},"nodeType":"YulExpressionStatement","src":"8568:18:92"}]},"condition":{"arguments":[{"name":"diff","nodeType":"YulIdentifier","src":"8556:4:92"},{"name":"_1","nodeType":"YulIdentifier","src":"8562:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"8553:2:92"},"nodeType":"YulFunctionCall","src":"8553:12:92"},"nodeType":"YulIf","src":"8550:38:92"}]},"name":"checked_sub_t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"8417:1:92","type":""},{"name":"y","nodeType":"YulTypedName","src":"8420:1:92","type":""}],"returnVariables":[{"name":"diff","nodeType":"YulTypedName","src":"8426:4:92","type":""}],"src":"8386:208:92"},{"body":{"nodeType":"YulBlock","src":"8631:95:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8648:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8655:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"8660:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"8651:3:92"},"nodeType":"YulFunctionCall","src":"8651:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8641:6:92"},"nodeType":"YulFunctionCall","src":"8641:31:92"},"nodeType":"YulExpressionStatement","src":"8641:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8688:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"8691:4:92","type":"","value":"0x32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8681:6:92"},"nodeType":"YulFunctionCall","src":"8681:15:92"},"nodeType":"YulExpressionStatement","src":"8681:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8712:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8715:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8705:6:92"},"nodeType":"YulFunctionCall","src":"8705:15:92"},"nodeType":"YulExpressionStatement","src":"8705:15:92"}]},"name":"panic_error_0x32","nodeType":"YulFunctionDefinition","src":"8599:127:92"},{"body":{"nodeType":"YulBlock","src":"8778:187:92","statements":[{"nodeType":"YulVariableDeclaration","src":"8788:52:92","value":{"kind":"number","nodeType":"YulLiteral","src":"8798:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"8792:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"8849:29:92","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8868:5:92"},{"name":"_1","nodeType":"YulIdentifier","src":"8875:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8864:3:92"},"nodeType":"YulFunctionCall","src":"8864:14:92"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"8853:7:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"8906:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"8908:16:92"},"nodeType":"YulFunctionCall","src":"8908:18:92"},"nodeType":"YulExpressionStatement","src":"8908:18:92"}]},"condition":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"8893:7:92"},{"name":"_1","nodeType":"YulIdentifier","src":"8902:2:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"8890:2:92"},"nodeType":"YulFunctionCall","src":"8890:15:92"},"nodeType":"YulIf","src":"8887:41:92"},{"nodeType":"YulAssignment","src":"8937:22:92","value":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"8948:7:92"},{"kind":"number","nodeType":"YulLiteral","src":"8957:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8944:3:92"},"nodeType":"YulFunctionCall","src":"8944:15:92"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"8937:3:92"}]}]},"name":"increment_t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"8760:5:92","type":""}],"returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"8770:3:92","type":""}],"src":"8731:234:92"},{"body":{"nodeType":"YulBlock","src":"9117:190:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9134:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"9149:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"9157:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"9145:3:92"},"nodeType":"YulFunctionCall","src":"9145:55:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9127:6:92"},"nodeType":"YulFunctionCall","src":"9127:74:92"},"nodeType":"YulExpressionStatement","src":"9127:74:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9221:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9232:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9217:3:92"},"nodeType":"YulFunctionCall","src":"9217:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"9237:2:92","type":"","value":"64"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9210:6:92"},"nodeType":"YulFunctionCall","src":"9210:30:92"},"nodeType":"YulExpressionStatement","src":"9210:30:92"},{"nodeType":"YulAssignment","src":"9249:52:92","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"9274:6:92"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9286:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9297:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9282:3:92"},"nodeType":"YulFunctionCall","src":"9282:18:92"}],"functionName":{"name":"abi_encode_bytes","nodeType":"YulIdentifier","src":"9257:16:92"},"nodeType":"YulFunctionCall","src":"9257:44:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"9249:4:92"}]}]},"name":"abi_encode_tuple_t_address_t_bytes_memory_ptr__to_t_address_t_bytes_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9078:9:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"9089:6:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"9097:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"9108:4:92","type":""}],"src":"8970:337:92"}]},"contents":"{\n { }\n function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n if iszero(eq(value, and(value, shl(224, 0xffffffff)))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 96)\n let pos := headStart\n pos := headStart\n let srcPtr := value0\n let i := 0\n for { } lt(i, 0x03) { i := add(i, 1) }\n {\n mstore(pos, and(mload(srcPtr), 0xff))\n let _1 := 0x20\n pos := add(pos, _1)\n srcPtr := add(srcPtr, _1)\n }\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_decode_address(offset) -> value\n {\n value := calldataload(offset)\n if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n }\n function abi_decode_struct_SetupPayload_calldata(offset, end) -> value\n {\n if slt(sub(end, offset), 96) { revert(0, 0) }\n value := offset\n }\n function abi_decode_tuple_t_addresst_struct$_SetupPayload_$14224_calldata_ptr(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n let offset := calldataload(add(headStart, 32))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n value1 := abi_decode_struct_SetupPayload_calldata(add(headStart, offset), dataEnd)\n }\n function panic_error_0x21()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x21)\n revert(0, 0x24)\n }\n function abi_encodeUpdatedPos_struct_MultiTargetPermission(value0, pos) -> updatedPos\n {\n let _1 := mload(value0)\n if iszero(lt(_1, 3))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x21)\n revert(0, 0x24)\n }\n mstore(pos, _1)\n let memberValue0 := mload(add(value0, 0x20))\n let _2 := 0xffffffffffffffffffffffffffffffffffffffff\n mstore(add(pos, 0x20), and(memberValue0, _2))\n mstore(add(pos, 0x40), and(mload(add(value0, 0x40)), _2))\n mstore(add(pos, 0x60), and(mload(add(value0, 0x60)), _2))\n mstore(add(pos, 0x80), mload(add(value0, 0x80)))\n updatedPos := add(pos, 0xa0)\n }\n function abi_encode_tuple_t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n let _1 := 32\n let tail_1 := add(headStart, _1)\n mstore(headStart, _1)\n let pos := tail_1\n let length := mload(value0)\n mstore(tail_1, length)\n pos := add(headStart, 64)\n let srcPtr := add(value0, _1)\n let i := 0\n for { } lt(i, length) { i := add(i, 1) }\n {\n pos := abi_encodeUpdatedPos_struct_MultiTargetPermission(mload(srcPtr), pos)\n srcPtr := add(srcPtr, _1)\n }\n tail := pos\n }\n function abi_decode_tuple_t_addresst_uint16t_struct$_SetupPayload_$14224_calldata_ptr(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n let value := calldataload(add(headStart, 32))\n if iszero(eq(value, and(value, 0xffff))) { revert(0, 0) }\n value1 := value\n let offset := calldataload(add(headStart, 64))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n value2 := abi_decode_struct_SetupPayload_calldata(add(headStart, offset), dataEnd)\n }\n function abi_encode_bytes(value, pos) -> end\n {\n let length := mload(value)\n mstore(pos, length)\n let i := 0\n for { } lt(i, length) { i := add(i, 0x20) }\n {\n let _1 := 0x20\n mstore(add(add(pos, i), _1), mload(add(add(value, i), _1)))\n }\n mstore(add(add(pos, length), 0x20), 0)\n end := add(add(pos, and(add(length, 31), not(31))), 0x20)\n }\n function abi_encode_struct_PreparedSetupData(value, pos) -> end\n {\n let tail := add(pos, 0x40)\n let memberValue0 := mload(value)\n mstore(pos, 0x40)\n let pos_1 := tail\n let length := mload(memberValue0)\n mstore(tail, length)\n pos_1 := add(pos, 96)\n let _1 := 0x20\n let srcPtr := add(memberValue0, _1)\n let i := 0\n for { } lt(i, length) { i := add(i, 1) }\n {\n mstore(pos_1, and(mload(srcPtr), 0xffffffffffffffffffffffffffffffffffffffff))\n pos_1 := add(pos_1, _1)\n srcPtr := add(srcPtr, _1)\n }\n let memberValue0_1 := mload(add(value, _1))\n mstore(add(pos, _1), sub(pos_1, pos))\n let pos_2 := pos_1\n let length_1 := mload(memberValue0_1)\n mstore(pos_1, length_1)\n pos_2 := add(pos_1, _1)\n let srcPtr_1 := add(memberValue0_1, _1)\n let i_1 := 0\n for { } lt(i_1, length_1) { i_1 := add(i_1, 1) }\n {\n pos_2 := abi_encodeUpdatedPos_struct_MultiTargetPermission(mload(srcPtr_1), pos_2)\n srcPtr_1 := add(srcPtr_1, _1)\n }\n end := pos_2\n }\n function abi_encode_tuple_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$14216_memory_ptr__to_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$14216_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n {\n mstore(headStart, 64)\n let tail_1 := abi_encode_bytes(value0, add(headStart, 64))\n mstore(add(headStart, 32), sub(tail_1, headStart))\n tail := abi_encode_struct_PreparedSetupData(value1, tail_1)\n }\n function panic_error_0x41()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function abi_decode_tuple_t_addresst_bytes_memory_ptr(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n let offset := calldataload(add(headStart, 32))\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n let _2 := add(headStart, offset)\n if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n let _3 := calldataload(_2)\n if gt(_3, _1) { panic_error_0x41() }\n let _4 := not(31)\n let memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n mstore(memPtr, _3)\n if gt(add(add(_2, _3), 32), dataEnd) { revert(0, 0) }\n calldatacopy(add(memPtr, 32), add(_2, 32), _3)\n mstore(add(add(memPtr, _3), 32), 0)\n value1 := memPtr\n }\n function abi_encode_tuple_t_address_t_struct$_PreparedSetupData_$14216_memory_ptr__to_t_address_t_struct$_PreparedSetupData_$14216_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n {\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n mstore(add(headStart, 32), 64)\n tail := abi_encode_struct_PreparedSetupData(value1, add(headStart, 64))\n }\n function abi_encode_tuple_t_uint16__to_t_uint16__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffff))\n }\n function abi_encode_tuple_t_contract$_IDAO_$10865__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function panic_error_0x11()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n function checked_sub_t_uint160(x, y) -> diff\n {\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n diff := sub(and(x, _1), and(y, _1))\n if gt(diff, _1) { panic_error_0x11() }\n }\n function panic_error_0x32()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n function increment_t_uint160(value) -> ret\n {\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n let value_1 := and(value, _1)\n if eq(value_1, _1) { panic_error_0x11() }\n ret := add(value_1, 1)\n }\n function abi_encode_tuple_t_address_t_bytes_memory_ptr__to_t_address_t_bytes_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n {\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n mstore(add(headStart, 32), 64)\n tail := abi_encode_bytes(value1, add(headStart, 64))\n }\n}","id":92,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{"14391":[{"length":32,"start":210},{"length":32,"start":825}]},"linkReferences":{},"object":"60806040523480156200001157600080fd5b50600436106200007b5760003560e01c80639cb0a12411620000565780639cb0a12414620000fd578063a8a9c29e1462000123578063f10832f1146200014a57600080fd5b806301ffc9a714620000805780632ae9c60014620000ac5780635c60da1b14620000c5575b600080fd5b62000097620000913660046200065e565b62000171565b60405190151581526020015b60405180910390f35b620000b6620001c4565b604051620000a391906200068a565b6040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152602001620000a3565b620001146200010e366004620006f0565b620001f0565b604051620000a39190620007c1565b6200013a620001343660046200080e565b62000209565b604051620000a39291906200095d565b620001616200015b366004620009a5565b620002b5565b604051620000a392919062000a73565b60006001600160e01b0319821663099718b560e41b1480620001a257506001600160e01b03198216621574e360e91b145b80620001be57506301ffc9a760e01b6001600160e01b03198316145b92915050565b620001ce62000632565b5060408051606081018252600181526004602082015260009181019190915290565b60606200020260006002600162000399565b9392505050565b606062000229604051806040016040528060608152602001606081525090565b8361ffff16600103620002ad5762000242600262000532565b815260405161ffff8516602482015260440160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166239a8c560e41b1790529150620002a761ffff85166002600062000399565b60208201525b935093915050565b6000620002d5604051806040016040528060608152602001606081525090565b6040516001600160a01b038516602482015260009060440160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663189acdbd60e31b17905290506200036b816200035b7f000000000000000000000000000000000000000000000000000000000000000090565b6001600160a01b031690620005f6565b925062000379600262000532565b82526200038a600060028162000399565b60208301525090939092509050565b6060826001600160a01b0316846001600160a01b03161115620003cf57604051633a4013cd60e21b815260040160405180910390fd5b620003db848462000ab5565b6001600160a01b031667ffffffffffffffff811115620003ff57620003ff6200098f565b6040519080825280602002602001820160405280156200045a57816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282526000199092019101816200041e5790505b509050835b836001600160a01b0316816001600160a01b031610156200052a576040518060a001604052808460028111156200049a576200049a62000744565b81526001600160a01b038316602082018190526040820152600060608201527fa280eec51ab8e1bc4b6b0c1b7f1bde785761b787a49db404e3e9338ed9b016ef60809091015282620004ed878462000ab5565b6001600160a01b03168151811062000509576200050962000adf565b60200260200101819052508080620005219062000af5565b9150506200045f565b509392505050565b6060816001600160a01b031667ffffffffffffffff8111156200055957620005596200098f565b60405190808252806020026020018201604052801562000583578160200160208202803683370190505b50905060005b826001600160a01b0316816001600160a01b03161015620005f0578082826001600160a01b031681518110620005c357620005c362000adf565b6001600160a01b039092166020928302919091019091015280620005e78162000af5565b91505062000589565b50919050565b60008282604051620006089062000650565b6200061592919062000b1e565b604051809103906000f0801580156200052a573d6000803e3d6000fd5b60405180606001604052806003906020820280368337509192915050565b6106fe8062000b4383390190565b6000602082840312156200067157600080fd5b81356001600160e01b0319811681146200020257600080fd5b60608101818360005b6003811015620006b757815160ff1683526020928301929091019060010162000693565b50505092915050565b80356001600160a01b0381168114620006d857600080fd5b919050565b600060608284031215620005f057600080fd5b600080604083850312156200070457600080fd5b6200070f83620006c0565b9150602083013567ffffffffffffffff8111156200072c57600080fd5b6200073a85828601620006dd565b9150509250929050565b634e487b7160e01b600052602160045260246000fd5b60008151600381106200077d57634e487b7160e01b600052602160045260246000fd5b8352506020818101516001600160a01b0390811691840191909152604080830151821690840152606080830151909116908301526080908101519082015260a00190565b6020808252825182820181905260009190848201906040850190845b818110156200080257620007f38385516200075a565b938501939250600101620007dd565b50909695505050505050565b6000806000606084860312156200082457600080fd5b6200082f84620006c0565b9250602084013561ffff811681146200084757600080fd5b9150604084013567ffffffffffffffff8111156200086457600080fd5b6200087286828701620006dd565b9150509250925092565b6000815180845260005b81811015620008a45760208185018101518683018201520162000886565b506000602082860101526020601f19601f83011685010191505092915050565b805160408084528151908401819052600091602091908201906060860190845b818110156200090b5783516001600160a01b031683529284019291840191600101620008e4565b50508483015186820387850152805180835290840192506000918401905b8083101562000952576200093f8285516200075a565b9150848401935060018301925062000929565b509695505050505050565b6040815260006200097260408301856200087c565b8281036020840152620009868185620008c4565b95945050505050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215620009b957600080fd5b620009c483620006c0565b9150602083013567ffffffffffffffff80821115620009e257600080fd5b818501915085601f830112620009f757600080fd5b81358181111562000a0c5762000a0c6200098f565b604051601f8201601f19908116603f0116810190838211818310171562000a375762000a376200098f565b8160405282815288602084870101111562000a5157600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6001600160a01b038316815260406020820152600062000a976040830184620008c4565b949350505050565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0382811682821603908082111562000ad85762000ad862000a9f565b5092915050565b634e487b7160e01b600052603260045260246000fd5b60006001600160a01b0380831681810362000b145762000b1462000a9f565b6001019392505050565b6001600160a01b038316815260406020820152600062000a9760408301846200087c56fe60806040526040516106fe3803806106fe83398101604081905261002291610319565b61002e82826000610035565b5050610436565b61003e8361006b565b60008251118061004b5750805b156100665761006483836100ab60201b6100291760201c565b505b505050565b610074816100d7565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606100d083836040518060600160405280602781526020016106d7602791396101a9565b9392505050565b6100ea8161022260201b6100551760201c565b6101515760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b806101887f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61023160201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6060600080856001600160a01b0316856040516101c691906103e7565b600060405180830381855af49150503d8060008114610201576040519150601f19603f3d011682016040523d82523d6000602084013e610206565b606091505b50909250905061021886838387610234565b9695505050505050565b6001600160a01b03163b151590565b90565b606083156102a357825160000361029c576001600160a01b0385163b61029c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610148565b50816102ad565b6102ad83836102b5565b949350505050565b8151156102c55781518083602001fd5b8060405162461bcd60e51b81526004016101489190610403565b634e487b7160e01b600052604160045260246000fd5b60005b838110156103105781810151838201526020016102f8565b50506000910152565b6000806040838503121561032c57600080fd5b82516001600160a01b038116811461034357600080fd5b60208401519092506001600160401b038082111561036057600080fd5b818501915085601f83011261037457600080fd5b815181811115610386576103866102df565b604051601f8201601f19908116603f011681019083821181831017156103ae576103ae6102df565b816040528281528860208487010111156103c757600080fd5b6103d88360208301602088016102f5565b80955050505050509250929050565b600082516103f98184602087016102f5565b9190910192915050565b60208152600082518060208401526104228160408501602087016102f5565b601f01601f19169190910160400192915050565b610292806104456000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b61009f565b565b606061004e838360405180606001604052806027815260200161025f602791396100c3565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e8080156100be573d6000f35b3d6000fd5b6060600080856001600160a01b0316856040516100e0919061020f565b600060405180830381855af49150503d806000811461011b576040519150601f19603f3d011682016040523d82523d6000602084013e610120565b606091505b50915091506101318683838761013b565b9695505050505050565b606083156101af5782516000036101a8576001600160a01b0385163b6101a85760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b50816101b9565b6101b983836101c1565b949350505050565b8151156101d15781518083602001fd5b8060405162461bcd60e51b815260040161019f919061022b565b60005b838110156102065781810151838201526020016101ee565b50506000910152565b600082516102218184602087016101eb565b9190910192915050565b602081526000825180602084015261024a8160408501602087016101eb565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH3 0x7B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9CB0A124 GT PUSH3 0x56 JUMPI DUP1 PUSH4 0x9CB0A124 EQ PUSH3 0xFD JUMPI DUP1 PUSH4 0xA8A9C29E EQ PUSH3 0x123 JUMPI DUP1 PUSH4 0xF10832F1 EQ PUSH3 0x14A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH3 0x80 JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH3 0xAC JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH3 0xC5 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x97 PUSH3 0x91 CALLDATASIZE PUSH1 0x4 PUSH3 0x65E JUMP JUMPDEST PUSH3 0x171 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0xB6 PUSH3 0x1C4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0xA3 SWAP2 SWAP1 PUSH3 0x68A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH3 0xA3 JUMP JUMPDEST PUSH3 0x114 PUSH3 0x10E CALLDATASIZE PUSH1 0x4 PUSH3 0x6F0 JUMP JUMPDEST PUSH3 0x1F0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0xA3 SWAP2 SWAP1 PUSH3 0x7C1 JUMP JUMPDEST PUSH3 0x13A PUSH3 0x134 CALLDATASIZE PUSH1 0x4 PUSH3 0x80E JUMP JUMPDEST PUSH3 0x209 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0xA3 SWAP3 SWAP2 SWAP1 PUSH3 0x95D JUMP JUMPDEST PUSH3 0x161 PUSH3 0x15B CALLDATASIZE PUSH1 0x4 PUSH3 0x9A5 JUMP JUMPDEST PUSH3 0x2B5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0xA3 SWAP3 SWAP2 SWAP1 PUSH3 0xA73 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x99718B5 PUSH1 0xE4 SHL EQ DUP1 PUSH3 0x1A2 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH3 0x1BE JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH3 0x1CE PUSH3 0x632 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH3 0x202 PUSH1 0x0 PUSH1 0x2 PUSH1 0x1 PUSH3 0x399 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH3 0x229 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST DUP4 PUSH2 0xFFFF AND PUSH1 0x1 SUB PUSH3 0x2AD JUMPI PUSH3 0x242 PUSH1 0x2 PUSH3 0x532 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x40 MLOAD PUSH2 0xFFFF DUP6 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH3 0x39A8C5 PUSH1 0xE4 SHL OR SWAP1 MSTORE SWAP2 POP PUSH3 0x2A7 PUSH2 0xFFFF DUP6 AND PUSH1 0x2 PUSH1 0x0 PUSH3 0x399 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE JUMPDEST SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x2D5 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 PUSH1 0x44 ADD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x189ACDBD PUSH1 0xE3 SHL OR SWAP1 MSTORE SWAP1 POP PUSH3 0x36B DUP2 PUSH3 0x35B PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH3 0x5F6 JUMP JUMPDEST SWAP3 POP PUSH3 0x379 PUSH1 0x2 PUSH3 0x532 JUMP JUMPDEST DUP3 MSTORE PUSH3 0x38A PUSH1 0x0 PUSH1 0x2 DUP2 PUSH3 0x399 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP SWAP1 SWAP4 SWAP1 SWAP3 POP SWAP1 POP JUMP JUMPDEST PUSH1 0x60 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH3 0x3CF JUMPI PUSH1 0x40 MLOAD PUSH4 0x3A4013CD PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0x3DB DUP5 DUP5 PUSH3 0xAB5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x3FF JUMPI PUSH3 0x3FF PUSH3 0x98F JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH3 0x45A JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD DUP3 SWAP1 MSTORE SWAP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 DUP3 ADD MSTORE DUP3 MSTORE PUSH1 0x0 NOT SWAP1 SWAP3 ADD SWAP2 ADD DUP2 PUSH3 0x41E JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP DUP4 JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT ISZERO PUSH3 0x52A JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 DUP5 PUSH1 0x2 DUP2 GT ISZERO PUSH3 0x49A JUMPI PUSH3 0x49A PUSH3 0x744 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x60 DUP3 ADD MSTORE PUSH32 0xA280EEC51AB8E1BC4B6B0C1B7F1BDE785761B787A49DB404E3E9338ED9B016EF PUSH1 0x80 SWAP1 SWAP2 ADD MSTORE DUP3 PUSH3 0x4ED DUP8 DUP5 PUSH3 0xAB5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MLOAD DUP2 LT PUSH3 0x509 JUMPI PUSH3 0x509 PUSH3 0xADF JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP DUP1 DUP1 PUSH3 0x521 SWAP1 PUSH3 0xAF5 JUMP JUMPDEST SWAP2 POP POP PUSH3 0x45F JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x559 JUMPI PUSH3 0x559 PUSH3 0x98F JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH3 0x583 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT ISZERO PUSH3 0x5F0 JUMPI DUP1 DUP3 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MLOAD DUP2 LT PUSH3 0x5C3 JUMPI PUSH3 0x5C3 PUSH3 0xADF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE DUP1 PUSH3 0x5E7 DUP2 PUSH3 0xAF5 JUMP JUMPDEST SWAP2 POP POP PUSH3 0x589 JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH3 0x608 SWAP1 PUSH3 0x650 JUMP JUMPDEST PUSH3 0x615 SWAP3 SWAP2 SWAP1 PUSH3 0xB1E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH3 0x52A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x6FE DUP1 PUSH3 0xB43 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x671 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH3 0x202 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH3 0x6B7 JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH3 0x693 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x6D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x5F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x704 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x70F DUP4 PUSH3 0x6C0 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x72C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x73A DUP6 DUP3 DUP7 ADD PUSH3 0x6DD JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP2 MLOAD PUSH1 0x3 DUP2 LT PUSH3 0x77D JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP4 MSTORE POP PUSH1 0x20 DUP2 DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP1 DUP4 ADD MLOAD DUP3 AND SWAP1 DUP5 ADD MSTORE PUSH1 0x60 DUP1 DUP4 ADD MLOAD SWAP1 SWAP2 AND SWAP1 DUP4 ADD MSTORE PUSH1 0x80 SWAP1 DUP2 ADD MLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x802 JUMPI PUSH3 0x7F3 DUP4 DUP6 MLOAD PUSH3 0x75A JUMP JUMPDEST SWAP4 DUP6 ADD SWAP4 SWAP3 POP PUSH1 0x1 ADD PUSH3 0x7DD JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH3 0x824 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x82F DUP5 PUSH3 0x6C0 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH3 0x847 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x864 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x872 DUP7 DUP3 DUP8 ADD PUSH3 0x6DD JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x8A4 JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD DUP3 ADD MSTORE ADD PUSH3 0x886 JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x20 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x20 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x40 DUP1 DUP5 MSTORE DUP2 MLOAD SWAP1 DUP5 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x20 SWAP2 SWAP1 DUP3 ADD SWAP1 PUSH1 0x60 DUP7 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x90B JUMPI DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH3 0x8E4 JUMP JUMPDEST POP POP DUP5 DUP4 ADD MLOAD DUP7 DUP3 SUB DUP8 DUP6 ADD MSTORE DUP1 MLOAD DUP1 DUP4 MSTORE SWAP1 DUP5 ADD SWAP3 POP PUSH1 0x0 SWAP2 DUP5 ADD SWAP1 JUMPDEST DUP1 DUP4 LT ISZERO PUSH3 0x952 JUMPI PUSH3 0x93F DUP3 DUP6 MLOAD PUSH3 0x75A JUMP JUMPDEST SWAP2 POP DUP5 DUP5 ADD SWAP4 POP PUSH1 0x1 DUP4 ADD SWAP3 POP PUSH3 0x929 JUMP JUMPDEST POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 PUSH3 0x972 PUSH1 0x40 DUP4 ADD DUP6 PUSH3 0x87C JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 ADD MSTORE PUSH3 0x986 DUP2 DUP6 PUSH3 0x8C4 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x9B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x9C4 DUP4 PUSH3 0x6C0 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH3 0x9E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x9F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH3 0xA0C JUMPI PUSH3 0xA0C PUSH3 0x98F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH3 0xA37 JUMPI PUSH3 0xA37 PUSH3 0x98F JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH3 0xA51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH3 0xA97 PUSH1 0x40 DUP4 ADD DUP5 PUSH3 0x8C4 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND DUP3 DUP3 AND SUB SWAP1 DUP1 DUP3 GT ISZERO PUSH3 0xAD8 JUMPI PUSH3 0xAD8 PUSH3 0xA9F JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND DUP2 DUP2 SUB PUSH3 0xB14 JUMPI PUSH3 0xB14 PUSH3 0xA9F JUMP JUMPDEST PUSH1 0x1 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH3 0xA97 PUSH1 0x40 DUP4 ADD DUP5 PUSH3 0x87C JUMP INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH2 0x6FE CODESIZE SUB DUP1 PUSH2 0x6FE DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x22 SWAP2 PUSH2 0x319 JUMP JUMPDEST PUSH2 0x2E DUP3 DUP3 PUSH1 0x0 PUSH2 0x35 JUMP JUMPDEST POP POP PUSH2 0x436 JUMP JUMPDEST PUSH2 0x3E DUP4 PUSH2 0x6B JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD GT DUP1 PUSH2 0x4B JUMPI POP DUP1 JUMPDEST ISZERO PUSH2 0x66 JUMPI PUSH2 0x64 DUP4 DUP4 PUSH2 0xAB PUSH1 0x20 SHL PUSH2 0x29 OR PUSH1 0x20 SHR JUMP JUMPDEST POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x74 DUP2 PUSH2 0xD7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xD0 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x6D7 PUSH1 0x27 SWAP2 CODECOPY PUSH2 0x1A9 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xEA DUP2 PUSH2 0x222 PUSH1 0x20 SHL PUSH2 0x55 OR PUSH1 0x20 SHR JUMP JUMPDEST PUSH2 0x151 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313936373A206E657720696D706C656D656E746174696F6E206973206E PUSH1 0x44 DUP3 ADD MSTORE PUSH13 0x1BDD08184818DBDB9D1C9858DD PUSH1 0x9A SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH2 0x188 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC PUSH1 0x0 SHL PUSH2 0x231 PUSH1 0x20 SHL PUSH2 0x64 OR PUSH1 0x20 SHR JUMP JUMPDEST DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0x1C6 SWAP2 SWAP1 PUSH2 0x3E7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x201 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x206 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x218 DUP7 DUP4 DUP4 DUP8 PUSH2 0x234 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x2A3 JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0x29C JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0x29C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x148 JUMP JUMPDEST POP DUP2 PUSH2 0x2AD JUMP JUMPDEST PUSH2 0x2AD DUP4 DUP4 PUSH2 0x2B5 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x2C5 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x148 SWAP2 SWAP1 PUSH2 0x403 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x310 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2F8 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x32C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x343 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x360 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x374 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x386 JUMPI PUSH2 0x386 PUSH2 0x2DF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x3AE JUMPI PUSH2 0x3AE PUSH2 0x2DF JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x3C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3D8 DUP4 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x2F5 JUMP JUMPDEST DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x3F9 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x2F5 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x422 DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x2F5 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x292 DUP1 PUSH2 0x445 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLDATASIZE PUSH2 0x13 JUMPI PUSH2 0x11 PUSH2 0x17 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x11 JUMPDEST PUSH2 0x27 PUSH2 0x22 PUSH2 0x67 JUMP JUMPDEST PUSH2 0x9F JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x60 PUSH2 0x4E DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x25F PUSH1 0x27 SWAP2 CODECOPY PUSH2 0xC3 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9A PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 DUP1 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE PUSH1 0x0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH2 0xBE JUMPI RETURNDATASIZE PUSH1 0x0 RETURN JUMPDEST RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0xE0 SWAP2 SWAP1 PUSH2 0x20F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x11B JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x120 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x131 DUP7 DUP4 DUP4 DUP8 PUSH2 0x13B JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x1AF JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0x1A8 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0x1A8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP DUP2 PUSH2 0x1B9 JUMP JUMPDEST PUSH2 0x1B9 DUP4 DUP4 PUSH2 0x1C1 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x1D1 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x19F SWAP2 SWAP1 PUSH2 0x22B JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x206 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1EE JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x221 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x1EB JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x24A DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x1EB JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A164 PUSH20 0x6F6C6343000811000A416464726573733A206C6F PUSH24 0x2D6C6576656C2064656C65676174652063616C6C20666169 PUSH13 0x6564A164736F6C634300081100 EXP ","sourceMap":"2565:1940:54:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1852:293:83;;;;;;:::i;:::-;;:::i;:::-;;;470:14:92;;463:22;445:41;;433:2;418:18;1852:293:83;;;;;;;;631:98:90;;;:::i;:::-;;;;;;;:::i;2184:94:83:-;;;-1:-1:-1;;;;;2257:14:83;1167:55:92;1149:74;;1137:2;1122:18;2184:94:83;1003:226:92;4204:299:54;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;3462:703::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;2848:575::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;1852:293:83:-;1938:4;-1:-1:-1;;;;;;1973:46:83;;-1:-1:-1;;;1973:46:83;;:112;;-1:-1:-1;;;;;;;2035:50:83;;-1:-1:-1;;;2035:50:83;1973:112;:165;;;-1:-1:-1;;;;;;;;;;937:40:38;;;2101:37:83;1954:184;1852:293;-1:-1:-1;;1852:293:83:o;631:98:90:-;679:15;;:::i;:::-;-1:-1:-1;706:16:90;;;;;;;;714:1;706:16;;717:1;706:16;;;;-1:-1:-1;706:16:90;;;;;;;;631:98::o;4204:299:54:-;4326:56;4434:62;4450:1;2714;4465:30;4434:15;:62::i;:::-;4420:76;4204:299;-1:-1:-1;;;4204:299:54:o;3462:703::-;3644:21;3667:42;-1:-1:-1;;;;;;;;;;;;;;;;;;;3667:42:54;3787:10;:15;;3801:1;3787:15;3783:376;;3846:23;2714:1;3846:11;:23::i;:::-;3818:51;;3894:76;;7990:6:92;7978:19;;3894:76:54;;;7960:38:92;7933:18;;3894:76:54;;;-1:-1:-1;;3894:76:54;;;;;;;;;;;;;;;;-1:-1:-1;;;3894:76:54;;;;-1:-1:-1;4016:132:54;;;;2714:1;-1:-1:-1;4016:15:54;:132::i;:::-;3984:29;;;:164;3783:376;3462:703;;;;;;:::o;2848:575::-;2945:14;2961:42;-1:-1:-1;;;;;;;;;;;;;;;;;;;2961:42:54;3039:106;;-1:-1:-1;;;;;1167:55:92;;3039:106:54;;;1149:74:92;3015:21:54;;1122:18:92;;3039:106:54;;;-1:-1:-1;;3039:106:54;;;;;;;;;;;;;;;;-1:-1:-1;;;3039:106:54;;;;-1:-1:-1;3164:42:54;3039:106;3164:16;2257:14:83;;2184:94;3164:16:54;-1:-1:-1;;;;;3164:32:54;;;:42::i;:::-;3155:51;-1:-1:-1;3244:23:54;2714:1;3244:11;:23::i;:::-;3216:51;;3309:107;3216:25;2714:1;3216:25;3309:15;:107::i;:::-;3277:29;;;:139;-1:-1:-1;2848:575:54;;3277:17;;-1:-1:-1;2848:575:54;-1:-1:-1;2848:575:54:o;580:666:52:-;699:56;780:8;-1:-1:-1;;;;;767:21:52;:10;-1:-1:-1;;;;;767:21:52;;763:53;;;797:19;;-1:-1:-1;;;797:19:52;;;;;;;;;;;763:53;879:21;890:10;879:8;:21;:::i;:::-;-1:-1:-1;;;;;837:64:52;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;837:64:52;;-1:-1:-1;;837:64:52;;;;;;;;;;;-1:-1:-1;823:78:52;-1:-1:-1;925:10:52;908:336;941:8;-1:-1:-1;;;;;937:12:52;:1;-1:-1:-1;;;;;937:12:52;;908:336;;;996:241;;;;;;;;1057:2;996:241;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;996:241:52;;;;;;;;;;;;-1:-1:-1;996:241:52;;;;1198:28;996:241;;;;;966:11;978:14;982:10;1088:1;978:14;:::i;:::-;-1:-1:-1;;;;;966:27:52;;;;;;;;;:::i;:::-;;;;;;:271;;;;951:3;;;;;:::i;:::-;;;;908:336;;;;580:666;;;;;:::o;1529:191::-;1577:24;1633:3;-1:-1:-1;;;;;1619:18:52;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1619:18:52;;1609:28;;1649:9;1644:74;1668:3;-1:-1:-1;;;;;1664:7:52;:1;-1:-1:-1;;;;;1664:7:52;;1644:74;;;1709:1;1688:7;1696:1;-1:-1:-1;;;;;1688:10:52;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1688:23:52;;;:10;;;;;;;;;;;:23;1673:3;;;;:::i;:::-;;;;1644:74;;;;1529:191;;;:::o;1415:222:85:-;1524:17;1599:6;1614:13;1573:56;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::o;14:286:92:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:92;;209:43;;199:71;;266:1;263;256:12;497:501;673:2;658:18;;662:9;753:6;631:4;787:205;801:4;798:1;795:11;787:205;;;864:13;;879:4;860:24;848:37;;908:4;932:12;;;;967:15;;;;821:1;814:9;787:205;;;791:3;;;497:501;;;;:::o;1234:196::-;1302:20;;-1:-1:-1;;;;;1351:54:92;;1341:65;;1331:93;;1420:1;1417;1410:12;1331:93;1234:196;;;:::o;1435:160::-;1500:5;1545:2;1536:6;1531:3;1527:16;1523:25;1520:45;;;1561:1;1558;1551:12;1600:441;1701:6;1709;1762:2;1750:9;1741:7;1737:23;1733:32;1730:52;;;1778:1;1775;1768:12;1730:52;1801:29;1820:9;1801:29;:::i;:::-;1791:39;;1881:2;1870:9;1866:18;1853:32;1908:18;1900:6;1897:30;1894:50;;;1940:1;1937;1930:12;1894:50;1963:72;2027:7;2018:6;2007:9;2003:22;1963:72;:::i;:::-;1953:82;;;1600:441;;;;;:::o;2046:127::-;2107:10;2102:3;2098:20;2095:1;2088:31;2138:4;2135:1;2128:15;2162:4;2159:1;2152:15;2178:696;2253:10;2294:6;2288:13;2327:1;2323:2;2320:9;2310:140;;2372:10;2367:3;2363:20;2360:1;2353:31;2407:4;2404:1;2397:15;2435:4;2432:1;2425:15;2310:140;2459:15;;-1:-1:-1;2521:4:92;2509:17;;;2503:24;-1:-1:-1;;;;;2620:21:92;;;2604:14;;;2597:45;;;;2696:4;2684:17;;;2678:24;2674:33;;2658:14;;;2651:57;2762:4;2750:17;;;2744:24;2740:33;;;2724:14;;;2717:57;2824:4;2812:17;;;2806:24;2790:14;;;2783:48;2863:4;2854:14;;2178:696::o;2879:730::-;3130:2;3182:21;;;3252:13;;3155:18;;;3274:22;;;3101:4;;3130:2;3353:15;;;;3327:2;3312:18;;;3101:4;3396:187;3410:6;3407:1;3404:13;3396:187;;;3466:69;3531:3;3522:6;3516:13;3466:69;:::i;:::-;3558:15;;;;3459:76;-1:-1:-1;3432:1:92;3425:9;3396:187;;;-1:-1:-1;3600:3:92;;2879:730;-1:-1:-1;;;;;;2879:730:92:o;3614:601::-;3723:6;3731;3739;3792:2;3780:9;3771:7;3767:23;3763:32;3760:52;;;3808:1;3805;3798:12;3760:52;3831:29;3850:9;3831:29;:::i;:::-;3821:39;;3910:2;3899:9;3895:18;3882:32;3954:6;3947:5;3943:18;3936:5;3933:29;3923:57;;3976:1;3973;3966:12;3923:57;3999:5;-1:-1:-1;4055:2:92;4040:18;;4027:32;4082:18;4071:30;;4068:50;;;4114:1;4111;4104:12;4068:50;4137:72;4201:7;4192:6;4181:9;4177:22;4137:72;:::i;:::-;4127:82;;;3614:601;;;;;:::o;4220:422::-;4261:3;4299:5;4293:12;4326:6;4321:3;4314:19;4351:1;4361:162;4375:6;4372:1;4369:13;4361:162;;;4437:4;4493:13;;;4489:22;;4483:29;4465:11;;;4461:20;;4454:59;4390:12;4361:162;;;4365:3;4568:1;4561:4;4552:6;4547:3;4543:16;4539:27;4532:38;4631:4;4624:2;4620:7;4615:2;4607:6;4603:15;4599:29;4594:3;4590:39;4586:50;4579:57;;;4220:422;;;;:::o;4647:1162::-;4780:12;;4746:4;4801:17;;;4867:19;;4737:14;;;4895:20;;;4707:3;;4964:4;;4991:21;;;;4942:2;4933:12;;;4707:3;5040:224;5054:6;5051:1;5048:13;5040:224;;;5121:13;;-1:-1:-1;;;;;5117:62:92;5103:77;;5239:15;;;;5202:14;;;;5076:1;5069:9;5040:224;;;-1:-1:-1;;5301:14:92;;;5295:21;5346:15;;;5332:12;;;5325:37;5414:21;;5444:23;;;5524;;;;-1:-1:-1;5567:1:92;;5485:14;;;5577:205;5593:8;5588:3;5585:17;5577:205;;;5657:73;5724:5;5713:8;5707:15;5657:73;:::i;:::-;5648:82;;5769:2;5759:8;5755:17;5743:29;;5621:1;5616:3;5612:11;5605:18;;5577:205;;;-1:-1:-1;5798:5:92;4647:1162;-1:-1:-1;;;;;;4647:1162:92:o;5814:450::-;6061:2;6050:9;6043:21;6024:4;6087:44;6127:2;6116:9;6112:18;6104:6;6087:44;:::i;:::-;6179:9;6171:6;6167:22;6162:2;6151:9;6147:18;6140:50;6207:51;6251:6;6243;6207:51;:::i;:::-;6199:59;5814:450;-1:-1:-1;;;;;5814:450:92:o;6269:127::-;6330:10;6325:3;6321:20;6318:1;6311:31;6361:4;6358:1;6351:15;6385:4;6382:1;6375:15;6401:995;6478:6;6486;6539:2;6527:9;6518:7;6514:23;6510:32;6507:52;;;6555:1;6552;6545:12;6507:52;6578:29;6597:9;6578:29;:::i;:::-;6568:39;;6658:2;6647:9;6643:18;6630:32;6681:18;6722:2;6714:6;6711:14;6708:34;;;6738:1;6735;6728:12;6708:34;6776:6;6765:9;6761:22;6751:32;;6821:7;6814:4;6810:2;6806:13;6802:27;6792:55;;6843:1;6840;6833:12;6792:55;6879:2;6866:16;6901:2;6897;6894:10;6891:36;;;6907:18;;:::i;:::-;6982:2;6976:9;6950:2;7036:13;;-1:-1:-1;;7032:22:92;;;7056:2;7028:31;7024:40;7012:53;;;7080:18;;;7100:22;;;7077:46;7074:72;;;7126:18;;:::i;:::-;7166:10;7162:2;7155:22;7201:2;7193:6;7186:18;7241:7;7236:2;7231;7227;7223:11;7219:20;7216:33;7213:53;;;7262:1;7259;7252:12;7213:53;7318:2;7313;7309;7305:11;7300:2;7292:6;7288:15;7275:46;7363:1;7358:2;7353;7345:6;7341:15;7337:24;7330:35;7384:6;7374:16;;;;;;;6401:995;;;;;:::o;7401:410::-;-1:-1:-1;;;;;7634:6:92;7630:55;7619:9;7612:74;7722:2;7717;7706:9;7702:18;7695:30;7593:4;7742:63;7801:2;7790:9;7786:18;7778:6;7742:63;:::i;:::-;7734:71;7401:410;-1:-1:-1;;;;7401:410:92:o;8254:127::-;8315:10;8310:3;8306:20;8303:1;8296:31;8346:4;8343:1;8336:15;8370:4;8367:1;8360:15;8386:208;-1:-1:-1;;;;;8530:10:92;;;8518;;;8514:27;;8553:12;;;8550:38;;;8568:18;;:::i;:::-;8550:38;8386:208;;;;:::o;8599:127::-;8660:10;8655:3;8651:20;8648:1;8641:31;8691:4;8688:1;8681:15;8715:4;8712:1;8705:15;8731:234;8770:3;-1:-1:-1;;;;;8875:2:92;8868:5;8864:14;8902:2;8893:7;8890:15;8887:41;;8908:18;;:::i;:::-;8957:1;8944:15;;8731:234;-1:-1:-1;;;8731:234:92:o;8970:337::-;-1:-1:-1;;;;;9149:6:92;9145:55;9134:9;9127:74;9237:2;9232;9221:9;9217:18;9210:30;9108:4;9257:44;9297:2;9286:9;9282:18;9274:6;9257:44;:::i"},"gasEstimates":{"creation":{"codeDepositCost":"937000","executionCost":"infinite","totalCost":"infinite"},"external":{"implementation()":"infinite","prepareInstallation(address,bytes)":"infinite","prepareUninstallation(address,(address,address[],bytes))":"infinite","prepareUpdate(address,uint16,(address,address[],bytes))":"infinite","protocolVersion()":"infinite","supportsInterface(bytes4)":"482"}},"methodIdentifiers":{"implementation()":"5c60da1b","prepareInstallation(address,bytes)":"f10832f1","prepareUninstallation(address,(address,address[],bytes))":"9cb0a124","prepareUpdate(address,uint16,(address,address[],bytes))":"a8a9c29e","protocolVersion()":"2ae9c600","supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ConflictingValues\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"fromBuild\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"thisBuild\",\"type\":\"uint16\"}],\"name\":\"InvalidUpdatePath\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_dao\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"prepareInstallation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"plugin\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address[]\",\"name\":\"helpers\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"enum PermissionLib.Operation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"condition\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PermissionLib.MultiTargetPermission[]\",\"name\":\"permissions\",\"type\":\"tuple[]\"}],\"internalType\":\"struct IPluginSetup.PreparedSetupData\",\"name\":\"preparedSetupData\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_dao\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"plugin\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"currentHelpers\",\"type\":\"address[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IPluginSetup.SetupPayload\",\"name\":\"_payload\",\"type\":\"tuple\"}],\"name\":\"prepareUninstallation\",\"outputs\":[{\"components\":[{\"internalType\":\"enum PermissionLib.Operation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"condition\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PermissionLib.MultiTargetPermission[]\",\"name\":\"permissions\",\"type\":\"tuple[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_dao\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"_fromBuild\",\"type\":\"uint16\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"plugin\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"currentHelpers\",\"type\":\"address[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IPluginSetup.SetupPayload\",\"name\":\"_payload\",\"type\":\"tuple\"}],\"name\":\"prepareUpdate\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"initData\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address[]\",\"name\":\"helpers\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"enum PermissionLib.Operation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"condition\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PermissionLib.MultiTargetPermission[]\",\"name\":\"permissions\",\"type\":\"tuple[]\"}],\"internalType\":\"struct IPluginSetup.PreparedSetupData\",\"name\":\"preparedSetupData\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"protocolVersion\",\"outputs\":[{\"internalType\":\"uint8[3]\",\"name\":\"\",\"type\":\"uint8[3]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"DO NOT USE IN PRODUCTION!\",\"errors\":{\"InvalidUpdatePath(uint16,uint16)\":[{\"params\":{\"fromBuild\":\"The build number to update from.\",\"thisBuild\":\"The build number of this setup to update to.\"}}]},\"kind\":\"dev\",\"methods\":{\"implementation()\":{\"details\":\"The implementation can be instantiated via the `new` keyword, cloned via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)), or proxied via the UUPS proxy pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\",\"returns\":{\"_0\":\"The address of the plugin implementation contract.\"}},\"prepareInstallation(address,bytes)\":{\"params\":{\"_dao\":\"The address of the installing DAO.\",\"_data\":\"The bytes-encoded data containing the input parameters for the installation as specified in the plugin's build metadata JSON file.\"},\"returns\":{\"plugin\":\"The address of the `Plugin` contract being prepared for installation.\",\"preparedSetupData\":\"The deployed plugin's relevant data which consists of helpers and permissions.\"}},\"prepareUninstallation(address,(address,address[],bytes))\":{\"params\":{\"_dao\":\"The address of the uninstalling DAO.\",\"_payload\":\"The relevant data necessary for the `prepareUninstallation`. See above.\"},\"returns\":{\"permissions\":\"The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the uninstalling DAO.\"}},\"prepareUpdate(address,uint16,(address,address[],bytes))\":{\"params\":{\"_dao\":\"The address of the updating DAO.\",\"_fromBuild\":\"The build number of the plugin to update from.\",\"_payload\":\"The relevant data necessary for the `prepareUpdate`. See above.\"},\"returns\":{\"initData\":\"The initialization data to be passed to upgradeable contracts when the update is applied in the `PluginSetupProcessor`.\",\"preparedSetupData\":\"The deployed plugin's relevant data which consists of helpers and permissions.\"}},\"protocolVersion()\":{\"details\":\"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\",\"returns\":{\"_0\":\"Returns the semantic Aragon OSx protocol version number.\"}},\"supportsInterface(bytes4)\":{\"params\":{\"_interfaceId\":\"The ID of the interface.\"},\"returns\":{\"_0\":\"Returns `true` if the interface is supported.\"}}},\"version\":1},\"userdoc\":{\"errors\":{\"InvalidUpdatePath(uint16,uint16)\":[{\"notice\":\"Thrown when an update path is not available, for example, if this is the initial build.\"}]},\"kind\":\"user\",\"methods\":{\"implementation()\":{\"notice\":\"Returns the plugin implementation address.\"},\"prepareInstallation(address,bytes)\":{\"notice\":\"Prepares the installation of a plugin.\"},\"prepareUninstallation(address,(address,address[],bytes))\":{\"notice\":\"Prepares the uninstallation of a plugin.\"},\"prepareUpdate(address,uint16,(address,address[],bytes))\":{\"notice\":\"Prepares the update of a plugin.\"},\"protocolVersion()\":{\"notice\":\"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Checks if this or the parent contract supports an interface by its ID.\"}},\"notice\":\"A mock plugin setup of an upgradeable plugin to be deployed via the UUPS pattern. v1.2 (Release 1, Build 2)\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/mocks/plugin/PluginUUPSUpgradeableSetupMock.sol\":\"PluginUUPSUpgradeableSetupMockBuild2\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/interfaces/IERC1967Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (interfaces/IERC1967.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\\n *\\n * _Available since v4.8.3._\\n */\\ninterface IERC1967Upgradeable {\\n /**\\n * @dev Emitted when the implementation is upgraded.\\n */\\n event Upgraded(address indexed implementation);\\n\\n /**\\n * @dev Emitted when the admin account has changed.\\n */\\n event AdminChanged(address previousAdmin, address newAdmin);\\n\\n /**\\n * @dev Emitted when the beacon is changed.\\n */\\n event BeaconUpgraded(address indexed beacon);\\n}\\n\",\"keccak256\":\"0x47d6e06872b12e72c79d1b5eb55842f860b5fb1207b2317c2358d2766b950a7b\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822ProxiableUpgradeable {\\n /**\\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n * address.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy.\\n */\\n function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../beacon/IBeaconUpgradeable.sol\\\";\\nimport \\\"../../interfaces/IERC1967Upgradeable.sol\\\";\\nimport \\\"../../interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\nimport \\\"../../utils/StorageSlotUpgradeable.sol\\\";\\nimport {Initializable} from \\\"../utils/Initializable.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n */\\nabstract contract ERC1967UpgradeUpgradeable is Initializable, IERC1967Upgradeable {\\n // This is the keccak-256 hash of \\\"eip1967.proxy.rollback\\\" subtracted by 1\\n bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n /**\\n * @dev Storage slot with the address of the current implementation.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n function __ERC1967Upgrade_init() internal onlyInitializing {\\n }\\n\\n function __ERC1967Upgrade_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _getImplementation() internal view returns (address) {\\n return StorageSlotUpgradeable.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 implementation slot.\\n */\\n function _setImplementation(address newImplementation) private {\\n require(AddressUpgradeable.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n StorageSlotUpgradeable.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n }\\n\\n /**\\n * @dev Perform implementation upgrade\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeTo(address newImplementation) internal {\\n _setImplementation(newImplementation);\\n emit Upgraded(newImplementation);\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCall(address newImplementation, bytes memory data, bool forceCall) internal {\\n _upgradeTo(newImplementation);\\n if (data.length > 0 || forceCall) {\\n AddressUpgradeable.functionDelegateCall(newImplementation, data);\\n }\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCallUUPS(address newImplementation, bytes memory data, bool forceCall) internal {\\n // Upgrades from old implementations will perform a rollback test. This test requires the new\\n // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n // this special case will break upgrade paths from old UUPS implementation to new ones.\\n if (StorageSlotUpgradeable.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n _setImplementation(newImplementation);\\n } else {\\n try IERC1822ProxiableUpgradeable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n require(slot == _IMPLEMENTATION_SLOT, \\\"ERC1967Upgrade: unsupported proxiableUUID\\\");\\n } catch {\\n revert(\\\"ERC1967Upgrade: new implementation is not UUPS\\\");\\n }\\n _upgradeToAndCall(newImplementation, data, forceCall);\\n }\\n }\\n\\n /**\\n * @dev Storage slot with the admin of the contract.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _getAdmin() internal view returns (address) {\\n return StorageSlotUpgradeable.getAddressSlot(_ADMIN_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 admin slot.\\n */\\n function _setAdmin(address newAdmin) private {\\n require(newAdmin != address(0), \\\"ERC1967: new admin is the zero address\\\");\\n StorageSlotUpgradeable.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n */\\n function _changeAdmin(address newAdmin) internal {\\n emit AdminChanged(_getAdmin(), newAdmin);\\n _setAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\\n */\\n bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n /**\\n * @dev Returns the current beacon.\\n */\\n function _getBeacon() internal view returns (address) {\\n return StorageSlotUpgradeable.getAddressSlot(_BEACON_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new beacon in the EIP1967 beacon slot.\\n */\\n function _setBeacon(address newBeacon) private {\\n require(AddressUpgradeable.isContract(newBeacon), \\\"ERC1967: new beacon is not a contract\\\");\\n require(\\n AddressUpgradeable.isContract(IBeaconUpgradeable(newBeacon).implementation()),\\n \\\"ERC1967: beacon implementation is not a contract\\\"\\n );\\n StorageSlotUpgradeable.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n }\\n\\n /**\\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n *\\n * Emits a {BeaconUpgraded} event.\\n */\\n function _upgradeBeaconToAndCall(address newBeacon, bytes memory data, bool forceCall) internal {\\n _setBeacon(newBeacon);\\n emit BeaconUpgraded(newBeacon);\\n if (data.length > 0 || forceCall) {\\n AddressUpgradeable.functionDelegateCall(IBeaconUpgradeable(newBeacon).implementation(), data);\\n }\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x7795808e3899c805254e3ae58074b20f799b466e3f43e057e47bedee5fb771f8\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeaconUpgradeable {\\n /**\\n * @dev Must return an address that can be used as a delegate call target.\\n *\\n * {BeaconProxy} will check that this address is a contract.\\n */\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/UUPSUpgradeable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport \\\"../ERC1967/ERC1967UpgradeUpgradeable.sol\\\";\\nimport {Initializable} from \\\"./Initializable.sol\\\";\\n\\n/**\\n * @dev An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an\\n * {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy.\\n *\\n * A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is\\n * reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing\\n * `UUPSUpgradeable` with a custom implementation of upgrades.\\n *\\n * The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism.\\n *\\n * _Available since v4.1._\\n */\\nabstract contract UUPSUpgradeable is Initializable, IERC1822ProxiableUpgradeable, ERC1967UpgradeUpgradeable {\\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable state-variable-assignment\\n address private immutable __self = address(this);\\n\\n /**\\n * @dev Check that the execution is being performed through a delegatecall call and that the execution context is\\n * a proxy contract with an implementation (as defined in ERC1967) pointing to self. This should only be the case\\n * for UUPS and transparent proxies that are using the current contract as their implementation. Execution of a\\n * function through ERC1167 minimal proxies (clones) would not normally pass this test, but is not guaranteed to\\n * fail.\\n */\\n modifier onlyProxy() {\\n require(address(this) != __self, \\\"Function must be called through delegatecall\\\");\\n require(_getImplementation() == __self, \\\"Function must be called through active proxy\\\");\\n _;\\n }\\n\\n /**\\n * @dev Check that the execution is not being performed through a delegate call. This allows a function to be\\n * callable on the implementing contract but not through proxies.\\n */\\n modifier notDelegated() {\\n require(address(this) == __self, \\\"UUPSUpgradeable: must not be called through delegatecall\\\");\\n _;\\n }\\n\\n function __UUPSUpgradeable_init() internal onlyInitializing {\\n }\\n\\n function __UUPSUpgradeable_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the\\n * implementation. It is used to validate the implementation's compatibility when performing an upgrade.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\\n */\\n function proxiableUUID() external view virtual override notDelegated returns (bytes32) {\\n return _IMPLEMENTATION_SLOT;\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy to `newImplementation`.\\n *\\n * Calls {_authorizeUpgrade}.\\n *\\n * Emits an {Upgraded} event.\\n *\\n * @custom:oz-upgrades-unsafe-allow-reachable delegatecall\\n */\\n function upgradeTo(address newImplementation) public virtual onlyProxy {\\n _authorizeUpgrade(newImplementation);\\n _upgradeToAndCallUUPS(newImplementation, new bytes(0), false);\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call\\n * encoded in `data`.\\n *\\n * Calls {_authorizeUpgrade}.\\n *\\n * Emits an {Upgraded} event.\\n *\\n * @custom:oz-upgrades-unsafe-allow-reachable delegatecall\\n */\\n function upgradeToAndCall(address newImplementation, bytes memory data) public payable virtual onlyProxy {\\n _authorizeUpgrade(newImplementation);\\n _upgradeToAndCallUUPS(newImplementation, data, true);\\n }\\n\\n /**\\n * @dev Function that should revert when `msg.sender` is not authorized to upgrade the contract. Called by\\n * {upgradeTo} and {upgradeToAndCall}.\\n *\\n * Normally, this function will use an xref:access.adoc[access control] modifier such as {Ownable-onlyOwner}.\\n *\\n * ```solidity\\n * function _authorizeUpgrade(address) internal override onlyOwner {}\\n * ```\\n */\\n function _authorizeUpgrade(address newImplementation) internal virtual;\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0xefb41f5c1a00249b7a99f0782f8c557865605426a3fb6e5fe9ae334293ae4f33\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n function __Context_init() internal onlyInitializing {\\n }\\n\\n function __Context_init_unchained() internal onlyInitializing {\\n }\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n function _contextSuffixLength() internal view virtual returns (uint256) {\\n return 0;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x75097e35253e7fb282ee4d7f27a80eaacfa759923185bf17302a89cbc059c5ef\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/StorageSlot.sol)\\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```solidity\\n * contract ERC1967 {\\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n * function _getImplementation() internal view returns (address) {\\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n * }\\n *\\n * function _setImplementation(address newImplementation) internal {\\n * require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n * }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._\\n * _Available since v4.9 for `string`, `bytes`._\\n */\\nlibrary StorageSlotUpgradeable {\\n struct AddressSlot {\\n address value;\\n }\\n\\n struct BooleanSlot {\\n bool value;\\n }\\n\\n struct Bytes32Slot {\\n bytes32 value;\\n }\\n\\n struct Uint256Slot {\\n uint256 value;\\n }\\n\\n struct StringSlot {\\n string value;\\n }\\n\\n struct BytesSlot {\\n bytes value;\\n }\\n\\n /**\\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n */\\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n */\\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n */\\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n */\\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` with member `value` located at `slot`.\\n */\\n function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\\n */\\n function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` with member `value` located at `slot`.\\n */\\n function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\\n */\\n function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n}\\n\",\"keccak256\":\"0x07ac95acad040f1fb1f6120dd0aa5f702db69446e95f82613721879d30de0908\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165Upgradeable.sol\\\";\\nimport {Initializable} from \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165Upgradeable is Initializable, IERC165Upgradeable {\\n function __ERC165_init() internal onlyInitializing {\\n }\\n\\n function __ERC165_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165Upgradeable).interfaceId;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0xd90d7723512df65ae417adaf0801042940f0dabd60039ceeaffe34aa5b238da1\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165Upgradeable {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/IERC1967.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (interfaces/IERC1967.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\\n *\\n * _Available since v4.8.3._\\n */\\ninterface IERC1967 {\\n /**\\n * @dev Emitted when the implementation is upgraded.\\n */\\n event Upgraded(address indexed implementation);\\n\\n /**\\n * @dev Emitted when the admin account has changed.\\n */\\n event AdminChanged(address previousAdmin, address newAdmin);\\n\\n /**\\n * @dev Emitted when the beacon is changed.\\n */\\n event BeaconUpgraded(address indexed beacon);\\n}\\n\",\"keccak256\":\"0x3cbef5ebc24b415252e2f8c0c9254555d30d9f085603b4b80d9b5ed20ab87e90\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822Proxiable {\\n /**\\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n * address.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy.\\n */\\n function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/Clones.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/Clones.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev https://eips.ethereum.org/EIPS/eip-1167[EIP 1167] is a standard for\\n * deploying minimal proxy contracts, also known as \\\"clones\\\".\\n *\\n * > To simply and cheaply clone contract functionality in an immutable way, this standard specifies\\n * > a minimal bytecode implementation that delegates all calls to a known, fixed address.\\n *\\n * The library includes functions to deploy a proxy using either `create` (traditional deployment) or `create2`\\n * (salted deterministic deployment). It also includes functions to predict the addresses of clones deployed using the\\n * deterministic method.\\n *\\n * _Available since v3.4._\\n */\\nlibrary Clones {\\n /**\\n * @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`.\\n *\\n * This function uses the create opcode, which should never revert.\\n */\\n function clone(address implementation) internal returns (address instance) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n // Cleans the upper 96 bits of the `implementation` word, then packs the first 3 bytes\\n // of the `implementation` address with the bytecode before the address.\\n mstore(0x00, or(shr(0xe8, shl(0x60, implementation)), 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000))\\n // Packs the remaining 17 bytes of `implementation` with the bytecode after the address.\\n mstore(0x20, or(shl(0x78, implementation), 0x5af43d82803e903d91602b57fd5bf3))\\n instance := create(0, 0x09, 0x37)\\n }\\n require(instance != address(0), \\\"ERC1167: create failed\\\");\\n }\\n\\n /**\\n * @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`.\\n *\\n * This function uses the create2 opcode and a `salt` to deterministically deploy\\n * the clone. Using the same `implementation` and `salt` multiple time will revert, since\\n * the clones cannot be deployed twice at the same address.\\n */\\n function cloneDeterministic(address implementation, bytes32 salt) internal returns (address instance) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n // Cleans the upper 96 bits of the `implementation` word, then packs the first 3 bytes\\n // of the `implementation` address with the bytecode before the address.\\n mstore(0x00, or(shr(0xe8, shl(0x60, implementation)), 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000))\\n // Packs the remaining 17 bytes of `implementation` with the bytecode after the address.\\n mstore(0x20, or(shl(0x78, implementation), 0x5af43d82803e903d91602b57fd5bf3))\\n instance := create2(0, 0x09, 0x37, salt)\\n }\\n require(instance != address(0), \\\"ERC1167: create2 failed\\\");\\n }\\n\\n /**\\n * @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}.\\n */\\n function predictDeterministicAddress(\\n address implementation,\\n bytes32 salt,\\n address deployer\\n ) internal pure returns (address predicted) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n let ptr := mload(0x40)\\n mstore(add(ptr, 0x38), deployer)\\n mstore(add(ptr, 0x24), 0x5af43d82803e903d91602b57fd5bf3ff)\\n mstore(add(ptr, 0x14), implementation)\\n mstore(ptr, 0x3d602d80600a3d3981f3363d3d373d3d3d363d73)\\n mstore(add(ptr, 0x58), salt)\\n mstore(add(ptr, 0x78), keccak256(add(ptr, 0x0c), 0x37))\\n predicted := keccak256(add(ptr, 0x43), 0x55)\\n }\\n }\\n\\n /**\\n * @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}.\\n */\\n function predictDeterministicAddress(\\n address implementation,\\n bytes32 salt\\n ) internal view returns (address predicted) {\\n return predictDeterministicAddress(implementation, salt, address(this));\\n }\\n}\\n\",\"keccak256\":\"0x01f055f5c26ba25d7f83e9aa9ba877fbea4d0bf22227de046ea67494bc932999\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (proxy/ERC1967/ERC1967Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../Proxy.sol\\\";\\nimport \\\"./ERC1967Upgrade.sol\\\";\\n\\n/**\\n * @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an\\n * implementation address that can be changed. This address is stored in storage in the location specified by\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the\\n * implementation behind the proxy.\\n */\\ncontract ERC1967Proxy is Proxy, ERC1967Upgrade {\\n /**\\n * @dev Initializes the upgradeable proxy with an initial implementation specified by `_logic`.\\n *\\n * If `_data` is nonempty, it's used as data in a delegate call to `_logic`. This will typically be an encoded\\n * function call, and allows initializing the storage of the proxy like a Solidity constructor.\\n */\\n constructor(address _logic, bytes memory _data) payable {\\n _upgradeToAndCall(_logic, _data, false);\\n }\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _implementation() internal view virtual override returns (address impl) {\\n return ERC1967Upgrade._getImplementation();\\n }\\n}\\n\",\"keccak256\":\"0xa2b22da3032e50b55f95ec1d13336102d675f341167aa76db571ef7f8bb7975d\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../beacon/IBeacon.sol\\\";\\nimport \\\"../../interfaces/IERC1967.sol\\\";\\nimport \\\"../../interfaces/draft-IERC1822.sol\\\";\\nimport \\\"../../utils/Address.sol\\\";\\nimport \\\"../../utils/StorageSlot.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n */\\nabstract contract ERC1967Upgrade is IERC1967 {\\n // This is the keccak-256 hash of \\\"eip1967.proxy.rollback\\\" subtracted by 1\\n bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n /**\\n * @dev Storage slot with the address of the current implementation.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _getImplementation() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 implementation slot.\\n */\\n function _setImplementation(address newImplementation) private {\\n require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n }\\n\\n /**\\n * @dev Perform implementation upgrade\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeTo(address newImplementation) internal {\\n _setImplementation(newImplementation);\\n emit Upgraded(newImplementation);\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCall(address newImplementation, bytes memory data, bool forceCall) internal {\\n _upgradeTo(newImplementation);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(newImplementation, data);\\n }\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCallUUPS(address newImplementation, bytes memory data, bool forceCall) internal {\\n // Upgrades from old implementations will perform a rollback test. This test requires the new\\n // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n // this special case will break upgrade paths from old UUPS implementation to new ones.\\n if (StorageSlot.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n _setImplementation(newImplementation);\\n } else {\\n try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n require(slot == _IMPLEMENTATION_SLOT, \\\"ERC1967Upgrade: unsupported proxiableUUID\\\");\\n } catch {\\n revert(\\\"ERC1967Upgrade: new implementation is not UUPS\\\");\\n }\\n _upgradeToAndCall(newImplementation, data, forceCall);\\n }\\n }\\n\\n /**\\n * @dev Storage slot with the admin of the contract.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _getAdmin() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_ADMIN_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 admin slot.\\n */\\n function _setAdmin(address newAdmin) private {\\n require(newAdmin != address(0), \\\"ERC1967: new admin is the zero address\\\");\\n StorageSlot.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n */\\n function _changeAdmin(address newAdmin) internal {\\n emit AdminChanged(_getAdmin(), newAdmin);\\n _setAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\\n */\\n bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n /**\\n * @dev Returns the current beacon.\\n */\\n function _getBeacon() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_BEACON_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new beacon in the EIP1967 beacon slot.\\n */\\n function _setBeacon(address newBeacon) private {\\n require(Address.isContract(newBeacon), \\\"ERC1967: new beacon is not a contract\\\");\\n require(\\n Address.isContract(IBeacon(newBeacon).implementation()),\\n \\\"ERC1967: beacon implementation is not a contract\\\"\\n );\\n StorageSlot.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n }\\n\\n /**\\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n *\\n * Emits a {BeaconUpgraded} event.\\n */\\n function _upgradeBeaconToAndCall(address newBeacon, bytes memory data, bool forceCall) internal {\\n _setBeacon(newBeacon);\\n emit BeaconUpgraded(newBeacon);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x3b21ae06bf5957f73fa16754b0669c77b7abd8ba6c072d35c3281d446fdb86c2\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (proxy/Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\\n * be specified by overriding the virtual {_implementation} function.\\n *\\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\\n * different contract through the {_delegate} function.\\n *\\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\\n */\\nabstract contract Proxy {\\n /**\\n * @dev Delegates the current call to `implementation`.\\n *\\n * This function does not return to its internal call site, it will return directly to the external caller.\\n */\\n function _delegate(address implementation) internal virtual {\\n assembly {\\n // Copy msg.data. We take full control of memory in this inline assembly\\n // block because it will not return to Solidity code. We overwrite the\\n // Solidity scratch pad at memory position 0.\\n calldatacopy(0, 0, calldatasize())\\n\\n // Call the implementation.\\n // out and outsize are 0 because we don't know the size yet.\\n let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)\\n\\n // Copy the returned data.\\n returndatacopy(0, 0, returndatasize())\\n\\n switch result\\n // delegatecall returns 0 on error.\\n case 0 {\\n revert(0, returndatasize())\\n }\\n default {\\n return(0, returndatasize())\\n }\\n }\\n }\\n\\n /**\\n * @dev This is a virtual function that should be overridden so it returns the address to which the fallback function\\n * and {_fallback} should delegate.\\n */\\n function _implementation() internal view virtual returns (address);\\n\\n /**\\n * @dev Delegates the current call to the address returned by `_implementation()`.\\n *\\n * This function does not return to its internal call site, it will return directly to the external caller.\\n */\\n function _fallback() internal virtual {\\n _beforeFallback();\\n _delegate(_implementation());\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\\n * function in the contract matches the call data.\\n */\\n fallback() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data\\n * is empty.\\n */\\n receive() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`\\n * call, or as part of the Solidity `fallback` or `receive` functions.\\n *\\n * If overridden should call `super._beforeFallback()`.\\n */\\n function _beforeFallback() internal virtual {}\\n}\\n\",\"keccak256\":\"0xc130fe33f1b2132158531a87734153293f6d07bc263ff4ac90e85da9c82c0e27\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeacon {\\n /**\\n * @dev Must return an address that can be used as a delegate call target.\\n *\\n * {BeaconProxy} will check that this address is a contract.\\n */\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/StorageSlot.sol)\\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```solidity\\n * contract ERC1967 {\\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n * function _getImplementation() internal view returns (address) {\\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n * }\\n *\\n * function _setImplementation(address newImplementation) internal {\\n * require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n * }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._\\n * _Available since v4.9 for `string`, `bytes`._\\n */\\nlibrary StorageSlot {\\n struct AddressSlot {\\n address value;\\n }\\n\\n struct BooleanSlot {\\n bool value;\\n }\\n\\n struct Bytes32Slot {\\n bytes32 value;\\n }\\n\\n struct Uint256Slot {\\n uint256 value;\\n }\\n\\n struct StringSlot {\\n string value;\\n }\\n\\n struct BytesSlot {\\n bytes value;\\n }\\n\\n /**\\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n */\\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n */\\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n */\\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n */\\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` with member `value` located at `slot`.\\n */\\n function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\\n */\\n function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` with member `value` located at `slot`.\\n */\\n function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\\n */\\n function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n}\\n\",\"keccak256\":\"0xf09e68aa0dc6722a25bc46490e8d48ed864466d17313b8a0b254c36b54e49899\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165 is IERC165 {\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165).interfaceId;\\n }\\n}\\n\",\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"src/dao/IDAO.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IDAO\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for DAOs within the Aragon App DAO framework.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IDAO {\\n /// @notice The action struct to be consumed by the DAO's `execute` function resulting in an external call.\\n /// @param to The address to call.\\n /// @param value The native token value to be sent with the call.\\n /// @param data The bytes-encoded function selector and calldata for the call.\\n struct Action {\\n address to;\\n uint256 value;\\n bytes data;\\n }\\n\\n /// @notice Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\\n /// @param _where The address of the contract.\\n /// @param _who The address of a EOA or contract to give the permissions.\\n /// @param _permissionId The permission identifier.\\n /// @param _data The optional data passed to the `PermissionCondition` registered.\\n /// @return Returns true if the address has permission, false if not.\\n function hasPermission(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes memory _data\\n ) external view returns (bool);\\n\\n /// @notice Updates the DAO metadata (e.g., an IPFS hash).\\n /// @param _metadata The IPFS hash of the new metadata object.\\n function setMetadata(bytes calldata _metadata) external;\\n\\n /// @notice Emitted when the DAO metadata is updated.\\n /// @param metadata The IPFS hash of the new metadata object.\\n event MetadataSet(bytes metadata);\\n\\n /// @notice Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted.\\n /// @param _callId The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce.\\n /// @param _actions The array of actions.\\n /// @param _allowFailureMap A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @return The array of results obtained from the executed actions in `bytes`.\\n /// @return The resulting failure map containing the actions have actually failed.\\n function execute(\\n bytes32 _callId,\\n Action[] memory _actions,\\n uint256 _allowFailureMap\\n ) external returns (bytes[] memory, uint256);\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param actor The address of the caller.\\n /// @param callId The ID of the call.\\n /// @param actions The array of actions executed.\\n /// @param allowFailureMap The allow failure map encoding which actions are allowed to fail.\\n /// @param failureMap The failure map encoding which actions have failed.\\n /// @param execResults The array with the results of the executed actions.\\n /// @dev The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce.\\n event Executed(\\n address indexed actor,\\n bytes32 callId,\\n Action[] actions,\\n uint256 allowFailureMap,\\n uint256 failureMap,\\n bytes[] execResults\\n );\\n\\n /// @notice Emitted when a standard callback is registered.\\n /// @param interfaceId The ID of the interface.\\n /// @param callbackSelector The selector of the callback function.\\n /// @param magicNumber The magic number to be registered for the callback function selector.\\n event StandardCallbackRegistered(\\n bytes4 interfaceId,\\n bytes4 callbackSelector,\\n bytes4 magicNumber\\n );\\n\\n /// @notice Deposits (native) tokens to the DAO contract with a reference string.\\n /// @param _token The address of the token or address(0) in case of the native token.\\n /// @param _amount The amount of tokens to deposit.\\n /// @param _reference The reference describing the deposit reason.\\n function deposit(address _token, uint256 _amount, string calldata _reference) external payable;\\n\\n /// @notice Emitted when a token deposit has been made to the DAO.\\n /// @param sender The address of the sender.\\n /// @param token The address of the deposited token.\\n /// @param amount The amount of tokens deposited.\\n /// @param _reference The reference describing the deposit reason.\\n event Deposited(\\n address indexed sender,\\n address indexed token,\\n uint256 amount,\\n string _reference\\n );\\n\\n /// @notice Emitted when a native token deposit has been made to the DAO.\\n /// @dev This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).\\n /// @param sender The address of the sender.\\n /// @param amount The amount of native tokens deposited.\\n event NativeTokenDeposited(address sender, uint256 amount);\\n\\n /// @notice Setter for the trusted forwarder verifying the meta transaction.\\n /// @param _trustedForwarder The trusted forwarder address.\\n function setTrustedForwarder(address _trustedForwarder) external;\\n\\n /// @notice Getter for the trusted forwarder verifying the meta transaction.\\n /// @return The trusted forwarder address.\\n function getTrustedForwarder() external view returns (address);\\n\\n /// @notice Emitted when a new TrustedForwarder is set on the DAO.\\n /// @param forwarder the new forwarder address.\\n event TrustedForwarderSet(address forwarder);\\n\\n /// @notice Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\\n /// @param _hash The hash of the data to be signed.\\n /// @param _signature The signature byte array associated with `_hash`.\\n /// @return Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not.\\n function isValidSignature(bytes32 _hash, bytes memory _signature) external returns (bytes4);\\n\\n /// @notice Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\\n /// @param _interfaceId The ID of the interface.\\n /// @param _callbackSelector The selector of the callback function.\\n /// @param _magicNumber The magic number to be registered for the function signature.\\n function registerStandardCallback(\\n bytes4 _interfaceId,\\n bytes4 _callbackSelector,\\n bytes4 _magicNumber\\n ) external;\\n\\n /// @notice Removed function being left here to not corrupt the IDAO interface ID. Any call will revert.\\n /// @dev Introduced in v1.0.0. Removed in v1.4.0.\\n function setSignatureValidator(address) external;\\n}\\n\",\"keccak256\":\"0xb7f615523c26de042edce98731c658f44a1edb2464387ac1b642c4c69f57128e\",\"license\":\"AGPL-3.0-or-later\"},\"src/mocks/plugin/PluginSetupMockData.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {PermissionLib} from \\\"../../permission/PermissionLib.sol\\\";\\n\\naddress constant NO_CONDITION = address(0);\\n\\nerror ConflictingValues();\\n\\n/// @notice Creates a mock `MultiTargetPermission` array by converting a range of `uint160` values into `address` values.\\n/// @param rangeStart The start of the range.\\n/// @param rangeEnd The end of the range (that is not included).\\n/// @param op The permission operation type.\\n/// @return permissions The mock array of permissions.\\n/// @dev DO NOT USE IN PRODUCTION!\\nfunction mockPermissions(\\n uint160 rangeStart,\\n uint160 rangeEnd,\\n PermissionLib.Operation op\\n) pure returns (PermissionLib.MultiTargetPermission[] memory permissions) {\\n if (rangeStart > rangeEnd) revert ConflictingValues();\\n\\n permissions = new PermissionLib.MultiTargetPermission[](rangeEnd - rangeStart);\\n\\n for (uint160 i = rangeStart; i < rangeEnd; i++) {\\n permissions[i - rangeStart] = PermissionLib.MultiTargetPermission({\\n operation: op,\\n where: address(i),\\n who: address(i),\\n condition: PermissionLib.NO_CONDITION,\\n permissionId: keccak256(\\\"MOCK_PERMISSION\\\")\\n });\\n }\\n}\\n\\n/// @notice Creates a mock array of helper addresses of specified length by converting `uint160` values starting from 0 into `address` values.\\n/// @param len The length of the helper array.\\n/// @return helpers The mock array of helper addresses.\\n/// @dev DO NOT USE IN PRODUCTION!\\nfunction mockHelpers(uint160 len) pure returns (address[] memory helpers) {\\n helpers = new address[](len);\\n\\n for (uint160 i = 0; i < len; i++) {\\n helpers[i] = address(i);\\n }\\n}\\n\",\"keccak256\":\"0x529d1b7ea4c348fe18edf81a044792ca8aa1f6ad9a7d2edfd35e38bf8372abf9\",\"license\":\"AGPL-3.0-or-later\"},\"src/mocks/plugin/PluginUUPSUpgradeableMock.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\n/* solhint-disable one-contract-per-file */\\npragma solidity ^0.8.8;\\n\\nimport {PluginUUPSUpgradeable} from \\\"../../plugin/PluginUUPSUpgradeable.sol\\\";\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice A mock upgradeable plugin to be deployed via the UUPS proxy pattern.\\n/// v1.1 (Release 1, Build 1)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableMockBuild1 is PluginUUPSUpgradeable {\\n uint256 public state1;\\n\\n function initialize(IDAO _dao) external initializer {\\n __PluginUUPSUpgradeable_init(_dao);\\n state1 = 1;\\n }\\n}\\n\\n/// @notice A mock upgradeable plugin to be deployed via the UUPS proxy pattern.\\n/// v1.1 (Release 1, Build 2)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableMockBuild2 is PluginUUPSUpgradeable {\\n uint256 public state1;\\n uint256 public state2;\\n\\n function initialize(IDAO _dao) external reinitializer(2) {\\n __PluginUUPSUpgradeable_init(_dao);\\n state1 = 1;\\n state2 = 2;\\n }\\n\\n function initializeFrom(uint16 _previousBuild) external reinitializer(2) {\\n if (_previousBuild < 2) {\\n state2 = 2;\\n }\\n }\\n}\\n\\n/// @notice A mock upgradeable plugin to be deployed via the UUPS proxy pattern.\\n/// v1.1 (Release 1, Build 3)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableMockBuild3 is PluginUUPSUpgradeable {\\n uint256 public state1;\\n uint256 public state2;\\n uint256 public state3;\\n\\n function initialize(IDAO _dao) external reinitializer(3) {\\n __PluginUUPSUpgradeable_init(_dao);\\n state1 = 1;\\n state2 = 2;\\n state3 = 3;\\n }\\n\\n function initializeFrom(uint16 _previousBuild) external reinitializer(3) {\\n if (_previousBuild < 2) {\\n state2 = 2;\\n }\\n if (_previousBuild < 3) {\\n state3 = 3;\\n }\\n }\\n}\\n\\n/// @notice A mock upgradeable plugin missing an initializer function.\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableMockBad is PluginUUPSUpgradeable {\\n uint256 public state1;\\n\\n function notAnInitializer(IDAO _dao) external {\\n __PluginUUPSUpgradeable_init(_dao);\\n state1 = 1;\\n }\\n}\\n\",\"keccak256\":\"0x2917df3b1da0de27f58cf531afeaa4e6c4285717247cbdd9ecc7880ae5cb9cb0\",\"license\":\"AGPL-3.0-or-later\"},\"src/mocks/plugin/PluginUUPSUpgradeableSetupMock.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\n/* solhint-disable one-contract-per-file */\\npragma solidity ^0.8.8;\\n\\nimport {PermissionLib} from \\\"../../permission/PermissionLib.sol\\\";\\nimport {IPluginSetup} from \\\"../../plugin/setup/IPluginSetup.sol\\\";\\nimport {PluginUpgradeableSetup} from \\\"../../plugin/setup/PluginUpgradeableSetup.sol\\\";\\nimport {ProxyLib} from \\\"../../utils/deployment/ProxyLib.sol\\\";\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\nimport {mockPermissions, mockHelpers} from \\\"./PluginSetupMockData.sol\\\";\\nimport {PluginUUPSUpgradeableMockBuild1, PluginUUPSUpgradeableMockBuild2, PluginUUPSUpgradeableMockBuild3} from \\\"./PluginUUPSUpgradeableMock.sol\\\";\\n\\n/// @notice A mock plugin setup of an upgradeable plugin to be deployed via the UUPS pattern.\\n/// v1.1 (Release 1, Build 1)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableSetupMockBuild1 is PluginUpgradeableSetup {\\n using ProxyLib for address;\\n\\n uint16 internal constant THIS_BUILD = 1;\\n\\n constructor() PluginUpgradeableSetup(address(new PluginUUPSUpgradeableMockBuild1())) {}\\n\\n /// @inheritdoc IPluginSetup\\n function prepareInstallation(\\n address _dao,\\n bytes memory\\n ) public returns (address plugin, PreparedSetupData memory preparedSetupData) {\\n bytes memory initData = abi.encodeCall(\\n PluginUUPSUpgradeableMockBuild1.initialize,\\n (IDAO(_dao))\\n );\\n plugin = implementation().deployUUPSProxy(initData);\\n preparedSetupData.helpers = mockHelpers(1);\\n preparedSetupData.permissions = mockPermissions(0, 1, PermissionLib.Operation.Grant);\\n }\\n\\n /// @inheritdoc IPluginSetup\\n /// @dev The default implementation for the initial build 1 that reverts because no earlier build exists.\\n function prepareUpdate(\\n address _dao,\\n uint16 _fromBuild,\\n SetupPayload calldata _payload\\n ) external pure virtual returns (bytes memory, PreparedSetupData memory) {\\n (_dao, _fromBuild, _payload);\\n revert InvalidUpdatePath({fromBuild: 0, thisBuild: THIS_BUILD});\\n }\\n\\n /// @inheritdoc IPluginSetup\\n function prepareUninstallation(\\n address _dao,\\n SetupPayload calldata _payload\\n ) external pure returns (PermissionLib.MultiTargetPermission[] memory permissions) {\\n (_dao, _payload);\\n permissions = mockPermissions(0, THIS_BUILD, PermissionLib.Operation.Revoke);\\n }\\n}\\n\\n/// @notice A mock plugin setup of an upgradeable plugin to be deployed via the UUPS pattern.\\n/// v1.2 (Release 1, Build 2)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableSetupMockBuild2 is PluginUpgradeableSetup {\\n using ProxyLib for address;\\n\\n uint16 internal constant THIS_BUILD = 2;\\n\\n constructor() PluginUpgradeableSetup(address(new PluginUUPSUpgradeableMockBuild2())) {}\\n\\n /// @inheritdoc IPluginSetup\\n function prepareInstallation(\\n address _dao,\\n bytes memory\\n ) external returns (address plugin, PreparedSetupData memory preparedSetupData) {\\n bytes memory initData = abi.encodeCall(\\n PluginUUPSUpgradeableMockBuild2.initialize,\\n (IDAO(_dao))\\n );\\n plugin = implementation().deployUUPSProxy(initData);\\n preparedSetupData.helpers = mockHelpers(THIS_BUILD);\\n preparedSetupData.permissions = mockPermissions(\\n 0,\\n THIS_BUILD,\\n PermissionLib.Operation.Grant\\n );\\n }\\n\\n /// @inheritdoc IPluginSetup\\n function prepareUpdate(\\n address _dao,\\n uint16 _fromBuild,\\n SetupPayload calldata _payload\\n )\\n external\\n pure\\n override\\n returns (bytes memory initData, PreparedSetupData memory preparedSetupData)\\n {\\n (_dao, _payload);\\n\\n // Update from Build 1\\n if (_fromBuild == 1) {\\n preparedSetupData.helpers = mockHelpers(THIS_BUILD);\\n initData = abi.encodeCall(PluginUUPSUpgradeableMockBuild2.initializeFrom, (_fromBuild));\\n preparedSetupData.permissions = mockPermissions(\\n _fromBuild,\\n THIS_BUILD,\\n PermissionLib.Operation.Grant\\n );\\n }\\n }\\n\\n /// @inheritdoc IPluginSetup\\n function prepareUninstallation(\\n address _dao,\\n SetupPayload calldata _payload\\n ) external pure returns (PermissionLib.MultiTargetPermission[] memory permissions) {\\n (_dao, _payload);\\n permissions = mockPermissions(0, THIS_BUILD, PermissionLib.Operation.Revoke);\\n }\\n}\\n\\n/// @notice A mock plugin setup of an upgradeable plugin to be deployed via the UUPS pattern.\\n/// v1.3 (Release 1, Build 3)\\ncontract PluginUUPSUpgradeableSetupMockBuild3 is PluginUpgradeableSetup {\\n using ProxyLib for address;\\n\\n uint16 internal constant THIS_BUILD = 3;\\n\\n constructor() PluginUpgradeableSetup(address(new PluginUUPSUpgradeableMockBuild3())) {}\\n\\n /// @inheritdoc IPluginSetup\\n function prepareInstallation(\\n address _dao,\\n bytes memory\\n ) external returns (address plugin, PreparedSetupData memory preparedSetupData) {\\n bytes memory initData = abi.encodeCall(\\n PluginUUPSUpgradeableMockBuild3.initialize,\\n (IDAO(_dao))\\n );\\n plugin = implementation().deployUUPSProxy(initData);\\n preparedSetupData.helpers = mockHelpers(THIS_BUILD);\\n preparedSetupData.permissions = mockPermissions(\\n 0,\\n THIS_BUILD,\\n PermissionLib.Operation.Grant\\n );\\n }\\n\\n /// @inheritdoc IPluginSetup\\n function prepareUpdate(\\n address _dao,\\n uint16 _fromBuild,\\n SetupPayload calldata _payload\\n )\\n external\\n pure\\n override\\n returns (bytes memory initData, PreparedSetupData memory preparedSetupData)\\n {\\n (_dao, _payload);\\n\\n // Update from Build 1\\n if (_fromBuild == 1) {\\n preparedSetupData.helpers = mockHelpers(THIS_BUILD);\\n initData = abi.encodeCall(PluginUUPSUpgradeableMockBuild3.initializeFrom, (_fromBuild));\\n preparedSetupData.permissions = mockPermissions(\\n _fromBuild,\\n THIS_BUILD,\\n PermissionLib.Operation.Grant\\n );\\n\\n // If this update path should not be supported, you can revert with an error, e.g.,\\n // revert InvalidUpdatePath({fromBuild: _fromBuild, thisBuild: THIS_BUILD});\\n }\\n\\n // Update from Build 2\\n if (_fromBuild == 2) {\\n preparedSetupData.helpers = mockHelpers(THIS_BUILD);\\n initData = abi.encodeCall(PluginUUPSUpgradeableMockBuild3.initializeFrom, (_fromBuild));\\n preparedSetupData.permissions = mockPermissions(\\n _fromBuild,\\n THIS_BUILD,\\n PermissionLib.Operation.Grant\\n );\\n }\\n }\\n\\n /// @inheritdoc IPluginSetup\\n function prepareUninstallation(\\n address _dao,\\n SetupPayload calldata _payload\\n ) external pure returns (PermissionLib.MultiTargetPermission[] memory permissions) {\\n (_dao, _payload);\\n permissions = mockPermissions(0, THIS_BUILD, PermissionLib.Operation.Revoke);\\n }\\n}\\n\",\"keccak256\":\"0x6be5a7611fe85f0e6e1ea08f42bcce810bc4973da1eaa04c88445b8d9af130ba\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/PermissionLib.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title PermissionLib\\n/// @author Aragon X - 2021-2023\\n/// @notice A library containing objects for permission processing.\\n/// @custom:security-contact sirt@aragon.org\\nlibrary PermissionLib {\\n /// @notice A constant expressing that no condition is applied to a permission.\\n address public constant NO_CONDITION = address(0);\\n\\n /// @notice The types of permission operations available in the `PermissionManager`.\\n /// @param Grant The grant operation setting a permission without a condition.\\n /// @param Revoke The revoke operation removing a permission (that was granted with or without a condition).\\n /// @param GrantWithCondition The grant operation setting a permission with a condition.\\n enum Operation {\\n Grant,\\n Revoke,\\n GrantWithCondition\\n }\\n\\n /// @notice A struct containing the information for a permission to be applied on a single target contract without a condition.\\n /// @param operation The permission operation type.\\n /// @param who The address (EOA or contract) receiving the permission.\\n /// @param permissionId The permission identifier.\\n struct SingleTargetPermission {\\n Operation operation;\\n address who;\\n bytes32 permissionId;\\n }\\n\\n /// @notice A struct containing the information for a permission to be applied on multiple target contracts, optionally, with a condition.\\n /// @param operation The permission operation type.\\n /// @param where The address of the target contract for which `who` receives permission.\\n /// @param who The address (EOA or contract) receiving the permission.\\n /// @param condition The `PermissionCondition` that will be asked for authorization on calls connected to the specified permission identifier.\\n /// @param permissionId The permission identifier.\\n struct MultiTargetPermission {\\n Operation operation;\\n address where;\\n address who;\\n address condition;\\n bytes32 permissionId;\\n }\\n}\\n\",\"keccak256\":\"0x470faf3c4891ebc6420ef6cc09f6098917568ccc79268c90954d1478199b6097\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/DaoAuthorizableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ContextUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\\\";\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\nimport {_auth} from \\\"./auth.sol\\\";\\n\\n/// @title DaoAuthorizableUpgradeable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract contract providing a meta-transaction compatible modifier for upgradeable or cloneable contracts to authorize function calls through an associated DAO.\\n/// @dev Make sure to call `__DaoAuthorizableUpgradeable_init` during initialization of the inheriting contract.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract DaoAuthorizableUpgradeable is ContextUpgradeable {\\n /// @notice The associated DAO managing the permissions of inheriting contracts.\\n IDAO private dao_;\\n\\n /// @notice Initializes the contract by setting the associated DAO.\\n /// @param _dao The associated DAO address.\\n // solhint-disable-next-line func-name-mixedcase\\n function __DaoAuthorizableUpgradeable_init(IDAO _dao) internal onlyInitializing {\\n dao_ = _dao;\\n }\\n\\n /// @notice Returns the DAO contract.\\n /// @return The DAO contract.\\n function dao() public view returns (IDAO) {\\n return dao_;\\n }\\n\\n /// @notice A modifier to make functions on inheriting contracts authorized. Permissions to call the function are checked through the associated DAO's permission manager.\\n /// @param _permissionId The permission identifier required to call the method this modifier is applied to.\\n modifier auth(bytes32 _permissionId) {\\n _auth(dao_, address(this), _msgSender(), _permissionId, _msgData());\\n _;\\n }\\n\\n /// @notice This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain (see [OpenZeppelin's guide about storage gaps](https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps)).\\n uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0x7fac6b01b037ba1cb9d6a22d3f43b0785037dcf496ffb672434d9bf7227d2585\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/auth.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice Thrown if a call is unauthorized in the associated DAO.\\n/// @param dao The associated DAO.\\n/// @param where The context in which the authorization reverted.\\n/// @param who The address (EOA or contract) missing the permission.\\n/// @param permissionId The permission identifier.\\nerror DaoUnauthorized(address dao, address where, address who, bytes32 permissionId);\\n\\n/// @notice A free function checking if a caller is granted permissions on a target contract via a permission identifier that redirects the approval to a `PermissionCondition` if this was specified in the setup.\\n/// @param _where The address of the target contract for which `who` receives permission.\\n/// @param _who The address (EOA or contract) owning the permission.\\n/// @param _permissionId The permission identifier.\\n/// @param _data The optional data passed to the `PermissionCondition` registered.\\n/// @custom:security-contact sirt@aragon.org\\nfunction _auth(\\n IDAO _dao,\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes calldata _data\\n) view {\\n if (!_dao.hasPermission(_where, _who, _permissionId, _data))\\n revert DaoUnauthorized({\\n dao: address(_dao),\\n where: _where,\\n who: _who,\\n permissionId: _permissionId\\n });\\n}\\n\",\"keccak256\":\"0x878764b4f87fe0651fb3798fb9cb87c952f8c6caf6ae79c7f09de84df6c00298\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/IPlugin.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IPlugin\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the traits of a plugin.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IPlugin {\\n enum PluginType {\\n UUPS,\\n Cloneable,\\n Constructable\\n }\\n\\n /// @notice Returns the plugin's type\\n function pluginType() external view returns (PluginType);\\n}\\n\",\"keccak256\":\"0xc57cd0d10b6380ab7f54c713a509e88fd8f4ad9288313a0e8e12b8887817ddfe\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/PluginUUPSUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {UUPSUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\\\";\\nimport {IERC1822ProxiableUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport {ERC165Upgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\\\";\\n\\nimport {IProtocolVersion} from \\\"../utils/versioning/IProtocolVersion.sol\\\";\\nimport {ProtocolVersion} from \\\"../utils/versioning/ProtocolVersion.sol\\\";\\nimport {DaoAuthorizableUpgradeable} from \\\"../permission/auth/DaoAuthorizableUpgradeable.sol\\\";\\nimport {IDAO} from \\\"../dao/IDAO.sol\\\";\\nimport {IPlugin} from \\\"./IPlugin.sol\\\";\\n\\n/// @title PluginUUPSUpgradeable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract, upgradeable contract to inherit from when creating a plugin being deployed via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract PluginUUPSUpgradeable is\\n IPlugin,\\n ERC165Upgradeable,\\n UUPSUpgradeable,\\n DaoAuthorizableUpgradeable,\\n ProtocolVersion\\n{\\n // NOTE: When adding new state variables to the contract, the size of `_gap` has to be adapted below as well.\\n\\n /// @notice Disables the initializers on the implementation contract to prevent it from being left uninitialized.\\n /// @custom:oz-upgrades-unsafe-allow constructor\\n constructor() {\\n _disableInitializers();\\n }\\n\\n /// @inheritdoc IPlugin\\n function pluginType() public pure override returns (PluginType) {\\n return PluginType.UUPS;\\n }\\n\\n /// @notice The ID of the permission required to call the `_authorizeUpgrade` function.\\n bytes32 public constant UPGRADE_PLUGIN_PERMISSION_ID = keccak256(\\\"UPGRADE_PLUGIN_PERMISSION\\\");\\n\\n /// @notice Initializes the plugin by storing the associated DAO.\\n /// @param _dao The DAO contract.\\n // solhint-disable-next-line func-name-mixedcase\\n function __PluginUUPSUpgradeable_init(IDAO _dao) internal virtual onlyInitializing {\\n __DaoAuthorizableUpgradeable_init(_dao);\\n }\\n\\n /// @notice Checks if an interface is supported by this or its parent contract.\\n /// @param _interfaceId The ID of the interface.\\n /// @return Returns `true` if the interface is supported.\\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\\n return\\n _interfaceId == type(IPlugin).interfaceId ||\\n _interfaceId == type(IProtocolVersion).interfaceId ||\\n _interfaceId == type(IERC1822ProxiableUpgradeable).interfaceId ||\\n super.supportsInterface(_interfaceId);\\n }\\n\\n /// @notice Returns the address of the implementation contract in the [proxy storage slot](https://eips.ethereum.org/EIPS/eip-1967) slot the [UUPS proxy](https://eips.ethereum.org/EIPS/eip-1822) is pointing to.\\n /// @return The address of the implementation contract.\\n function implementation() public view returns (address) {\\n return _getImplementation();\\n }\\n\\n /// @notice Internal method authorizing the upgrade of the contract via the [upgradeability mechanism for UUPS proxies](https://docs.openzeppelin.com/contracts/4.x/api/proxy#UUPSUpgradeable) (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\\n /// @dev The caller must have the `UPGRADE_PLUGIN_PERMISSION_ID` permission.\\n function _authorizeUpgrade(\\n address\\n )\\n internal\\n virtual\\n override\\n auth(UPGRADE_PLUGIN_PERMISSION_ID)\\n // solhint-disable-next-line no-empty-blocks\\n {\\n\\n }\\n\\n /// @notice This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain (see [OpenZeppelin's guide about storage gaps](https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps)).\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x127e7c4f839cb8c8486070990b78e22313f1ff089ffe6a4ff23ae358e48f0037\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/setup/IPluginSetup.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {PermissionLib} from \\\"../../permission/PermissionLib.sol\\\";\\n\\n// solhint-disable-next-line no-unused-import\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @title IPluginSetup\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for a plugin setup contract to be consumed by the `PluginSetupProcessor` for plugin installations, updates, and uninstallations.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IPluginSetup {\\n /// @notice The data associated with a prepared setup.\\n /// @param helpers The address array of helpers (contracts or EOAs) associated with this plugin version after the installation or update.\\n /// @param permissions The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the installing or updating DAO.\\n struct PreparedSetupData {\\n address[] helpers;\\n PermissionLib.MultiTargetPermission[] permissions;\\n }\\n\\n /// @notice The payload for plugin updates and uninstallations containing the existing contracts as well as optional data to be consumed by the plugin setup.\\n /// @param plugin The address of the `Plugin`.\\n /// @param currentHelpers The address array of all current helpers (contracts or EOAs) associated with the plugin to update from.\\n /// @param data The bytes-encoded data containing the input parameters for the preparation of update/uninstall as specified in the corresponding ABI on the version's metadata.\\n struct SetupPayload {\\n address plugin;\\n address[] currentHelpers;\\n bytes data;\\n }\\n\\n /// @notice Prepares the installation of a plugin.\\n /// @param _dao The address of the installing DAO.\\n /// @param _data The bytes-encoded data containing the input parameters for the installation as specified in the plugin's build metadata JSON file.\\n /// @return plugin The address of the `Plugin` contract being prepared for installation.\\n /// @return preparedSetupData The deployed plugin's relevant data which consists of helpers and permissions.\\n function prepareInstallation(\\n address _dao,\\n bytes calldata _data\\n ) external returns (address plugin, PreparedSetupData memory preparedSetupData);\\n\\n /// @notice Prepares the update of a plugin.\\n /// @param _dao The address of the updating DAO.\\n /// @param _fromBuild The build number of the plugin to update from.\\n /// @param _payload The relevant data necessary for the `prepareUpdate`. See above.\\n /// @return initData The initialization data to be passed to upgradeable contracts when the update is applied in the `PluginSetupProcessor`.\\n /// @return preparedSetupData The deployed plugin's relevant data which consists of helpers and permissions.\\n function prepareUpdate(\\n address _dao,\\n uint16 _fromBuild,\\n SetupPayload calldata _payload\\n ) external returns (bytes memory initData, PreparedSetupData memory preparedSetupData);\\n\\n /// @notice Prepares the uninstallation of a plugin.\\n /// @param _dao The address of the uninstalling DAO.\\n /// @param _payload The relevant data necessary for the `prepareUninstallation`. See above.\\n /// @return permissions The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the uninstalling DAO.\\n function prepareUninstallation(\\n address _dao,\\n SetupPayload calldata _payload\\n ) external returns (PermissionLib.MultiTargetPermission[] memory permissions);\\n\\n /// @notice Returns the plugin implementation address.\\n /// @return The address of the plugin implementation contract.\\n /// @dev The implementation can be instantiated via the `new` keyword, cloned via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)), or proxied via the UUPS proxy pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0x21c99995208039ac6ace219b6f273243811dc2aa66399e8e499e43ec30b82fa9\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/setup/PluginUpgradeableSetup.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ERC165} from \\\"@openzeppelin/contracts/utils/introspection/ERC165.sol\\\";\\n\\nimport {IProtocolVersion} from \\\"../../utils/versioning/IProtocolVersion.sol\\\";\\nimport {ProtocolVersion} from \\\"../../utils/versioning/ProtocolVersion.sol\\\";\\nimport {IPluginSetup} from \\\"./IPluginSetup.sol\\\";\\n\\n/// @title PluginUpgradeableSetup\\n/// @author Aragon X - 2022-2024\\n/// @notice An abstract contract to inherit from to implement the plugin setup for upgradeable plugins, i.e, `PluginUUPSUpgradeable` being deployed via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822) and [ERC-1967](https://eips.ethereum.org/EIPS/eip-1967)).\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract PluginUpgradeableSetup is ERC165, IPluginSetup, ProtocolVersion {\\n /// @notice The address of the plugin implementation contract for initial block explorer verification\\n /// and to create [ERC-1967](https://eips.ethereum.org/EIPS/eip-1967) UUPS proxies from.\\n address internal immutable IMPLEMENTATION;\\n\\n /// @notice Thrown when an update path is not available, for example, if this is the initial build.\\n /// @param fromBuild The build number to update from.\\n /// @param thisBuild The build number of this setup to update to.\\n error InvalidUpdatePath(uint16 fromBuild, uint16 thisBuild);\\n\\n /// @notice The contract constructor, that setting the plugin implementation contract.\\n /// @param _implementation The address of the plugin implementation contract.\\n constructor(address _implementation) {\\n IMPLEMENTATION = _implementation;\\n }\\n\\n /// @notice Checks if this or the parent contract supports an interface by its ID.\\n /// @param _interfaceId The ID of the interface.\\n /// @return Returns `true` if the interface is supported.\\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\\n return\\n _interfaceId == type(IPluginSetup).interfaceId ||\\n _interfaceId == type(IProtocolVersion).interfaceId ||\\n super.supportsInterface(_interfaceId);\\n }\\n\\n /// @inheritdoc IPluginSetup\\n function implementation() public view returns (address) {\\n return IMPLEMENTATION;\\n }\\n}\\n\",\"keccak256\":\"0x2842d919d1ecb4fbeb40953128c3da3b36dcf6e91255089e987c2f11ff8d061e\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/deployment/ProxyLib.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ERC1967Proxy} from \\\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol\\\";\\nimport {Clones} from \\\"@openzeppelin/contracts/proxy/Clones.sol\\\";\\nimport {Address} from \\\"@openzeppelin/contracts/utils/Address.sol\\\";\\n\\n/// @title ProxyLib\\n/// @author Aragon X - 2024\\n/// @notice A library containing methods for the deployment of proxies via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)) and minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)).\\n/// @custom:security-contact sirt@aragon.org\\nlibrary ProxyLib {\\n using Address for address;\\n using Clones for address;\\n\\n /// @notice Creates an [ERC-1967](https://eips.ethereum.org/EIPS/eip-1967) UUPS proxy contract pointing to a logic contract and allows to immediately initialize it.\\n /// @param _logic The logic contract the proxy is pointing to.\\n /// @param _initCalldata The initialization data for this contract.\\n /// @return uupsProxy The address of the UUPS proxy contract created.\\n /// @dev If `_initCalldata` is non-empty, it is used in a delegate call to the `_logic` contract. This will typically be an encoded function call initializing the storage of the proxy (see [OpenZeppelin ERC1967Proxy-constructor](https://docs.openzeppelin.com/contracts/4.x/api/proxy#ERC1967Proxy-constructor-address-bytes-)).\\n function deployUUPSProxy(\\n address _logic,\\n bytes memory _initCalldata\\n ) internal returns (address uupsProxy) {\\n uupsProxy = address(new ERC1967Proxy({_logic: _logic, _data: _initCalldata}));\\n }\\n\\n /// @notice Creates an [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167) minimal proxy contract, also known as clones, pointing to a logic contract and allows to immediately initialize it.\\n /// @param _logic The logic contract the proxy is pointing to.\\n /// @param _initCalldata The initialization data for this contract.\\n /// @return minimalProxy The address of the minimal proxy contract created.\\n /// @dev If `_initCalldata` is non-empty, it is used in a call to the clone contract. This will typically be an encoded function call initializing the storage of the contract.\\n function deployMinimalProxy(\\n address _logic,\\n bytes memory _initCalldata\\n ) internal returns (address minimalProxy) {\\n minimalProxy = _logic.clone();\\n if (_initCalldata.length > 0) {\\n minimalProxy.functionCall({data: _initCalldata});\\n }\\n }\\n}\\n\",\"keccak256\":\"0xef0d1790dfa026381c021daa2ec7267357497f58cd4a2fa5c64e72e0dea95acc\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/IProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IProtocolVersion\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the semantic Aragon OSx protocol version number.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IProtocolVersion {\\n /// @notice Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\\n /// @return _version Returns the semantic Aragon OSx protocol version number.\\n /// @dev This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\\n function protocolVersion() external view returns (uint8[3] memory _version);\\n}\\n\",\"keccak256\":\"0x00a4da654d21dc1bdadbdc8bd54bb86c378c56f85e461ccc31303628ea621361\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/ProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IProtocolVersion} from \\\"./IProtocolVersion.sol\\\";\\n\\n/// @title ProtocolVersion\\n/// @author Aragon X - 2023\\n/// @notice An abstract, stateless, non-upgradeable contract providing the current Aragon OSx protocol version number.\\n/// @dev Do not add any new variables to this contract that would shift down storage in the inheritance chain.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract ProtocolVersion is IProtocolVersion {\\n // IMPORTANT: Do not add any storage variable, see the above notice.\\n\\n /// @inheritdoc IProtocolVersion\\n function protocolVersion() public pure returns (uint8[3] memory) {\\n return [1, 4, 0];\\n }\\n}\\n\",\"keccak256\":\"0x3975c937be935f687c6b6b8f379071232681e98cf04b175d72781b819ea52bdb\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"errors":{"InvalidUpdatePath(uint16,uint16)":[{"notice":"Thrown when an update path is not available, for example, if this is the initial build."}]},"kind":"user","methods":{"implementation()":{"notice":"Returns the plugin implementation address."},"prepareInstallation(address,bytes)":{"notice":"Prepares the installation of a plugin."},"prepareUninstallation(address,(address,address[],bytes))":{"notice":"Prepares the uninstallation of a plugin."},"prepareUpdate(address,uint16,(address,address[],bytes))":{"notice":"Prepares the update of a plugin."},"protocolVersion()":{"notice":"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with."},"supportsInterface(bytes4)":{"notice":"Checks if this or the parent contract supports an interface by its ID."}},"notice":"A mock plugin setup of an upgradeable plugin to be deployed via the UUPS pattern. v1.2 (Release 1, Build 2)","version":1}},"PluginUUPSUpgradeableSetupMockBuild3":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"ConflictingValues","type":"error"},{"inputs":[{"internalType":"uint16","name":"fromBuild","type":"uint16"},{"internalType":"uint16","name":"thisBuild","type":"uint16"}],"name":"InvalidUpdatePath","type":"error"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_dao","type":"address"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"prepareInstallation","outputs":[{"internalType":"address","name":"plugin","type":"address"},{"components":[{"internalType":"address[]","name":"helpers","type":"address[]"},{"components":[{"internalType":"enum PermissionLib.Operation","name":"operation","type":"uint8"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"condition","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"internalType":"struct PermissionLib.MultiTargetPermission[]","name":"permissions","type":"tuple[]"}],"internalType":"struct IPluginSetup.PreparedSetupData","name":"preparedSetupData","type":"tuple"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_dao","type":"address"},{"components":[{"internalType":"address","name":"plugin","type":"address"},{"internalType":"address[]","name":"currentHelpers","type":"address[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct IPluginSetup.SetupPayload","name":"_payload","type":"tuple"}],"name":"prepareUninstallation","outputs":[{"components":[{"internalType":"enum PermissionLib.Operation","name":"operation","type":"uint8"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"condition","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"internalType":"struct PermissionLib.MultiTargetPermission[]","name":"permissions","type":"tuple[]"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_dao","type":"address"},{"internalType":"uint16","name":"_fromBuild","type":"uint16"},{"components":[{"internalType":"address","name":"plugin","type":"address"},{"internalType":"address[]","name":"currentHelpers","type":"address[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct IPluginSetup.SetupPayload","name":"_payload","type":"tuple"}],"name":"prepareUpdate","outputs":[{"internalType":"bytes","name":"initData","type":"bytes"},{"components":[{"internalType":"address[]","name":"helpers","type":"address[]"},{"components":[{"internalType":"enum PermissionLib.Operation","name":"operation","type":"uint8"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"condition","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"internalType":"struct PermissionLib.MultiTargetPermission[]","name":"permissions","type":"tuple[]"}],"internalType":"struct IPluginSetup.PreparedSetupData","name":"preparedSetupData","type":"tuple"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"protocolVersion","outputs":[{"internalType":"uint8[3]","name":"","type":"uint8[3]"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"errors":{"InvalidUpdatePath(uint16,uint16)":[{"params":{"fromBuild":"The build number to update from.","thisBuild":"The build number of this setup to update to."}}]},"kind":"dev","methods":{"implementation()":{"details":"The implementation can be instantiated via the `new` keyword, cloned via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)), or proxied via the UUPS proxy pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).","returns":{"_0":"The address of the plugin implementation contract."}},"prepareInstallation(address,bytes)":{"params":{"_dao":"The address of the installing DAO.","_data":"The bytes-encoded data containing the input parameters for the installation as specified in the plugin's build metadata JSON file."},"returns":{"plugin":"The address of the `Plugin` contract being prepared for installation.","preparedSetupData":"The deployed plugin's relevant data which consists of helpers and permissions."}},"prepareUninstallation(address,(address,address[],bytes))":{"params":{"_dao":"The address of the uninstalling DAO.","_payload":"The relevant data necessary for the `prepareUninstallation`. See above."},"returns":{"permissions":"The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the uninstalling DAO."}},"prepareUpdate(address,uint16,(address,address[],bytes))":{"params":{"_dao":"The address of the updating DAO.","_fromBuild":"The build number of the plugin to update from.","_payload":"The relevant data necessary for the `prepareUpdate`. See above."},"returns":{"initData":"The initialization data to be passed to upgradeable contracts when the update is applied in the `PluginSetupProcessor`.","preparedSetupData":"The deployed plugin's relevant data which consists of helpers and permissions."}},"protocolVersion()":{"details":"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.","returns":{"_0":"Returns the semantic Aragon OSx protocol version number."}},"supportsInterface(bytes4)":{"params":{"_interfaceId":"The ID of the interface."},"returns":{"_0":"Returns `true` if the interface is supported."}}},"version":1},"evm":{"bytecode":{"functionDebugData":{"@_12256":{"entryPoint":null,"id":12256,"parameterSlots":0,"returnSlots":0},"@_14409":{"entryPoint":null,"id":14409,"parameterSlots":1,"returnSlots":0}},"generatedSources":[],"linkReferences":{},"object":"60a060405234801561001057600080fd5b5060405161001d9061004b565b604051809103906000f080158015610039573d6000803e3d6000fd5b506001600160a01b0316608052610058565b6113788061130b83390190565b6080516112926100796000396000818160d2015261037e01526112926000f3fe60806040523480156200001157600080fd5b50600436106200007b5760003560e01c80639cb0a12411620000565780639cb0a12414620000fd578063a8a9c29e1462000123578063f10832f1146200014a57600080fd5b806301ffc9a714620000805780632ae9c60014620000ac5780635c60da1b14620000c5575b600080fd5b6200009762000091366004620006a3565b62000171565b60405190151581526020015b60405180910390f35b620000b6620001c4565b604051620000a39190620006cf565b6040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152602001620000a3565b620001146200010e36600462000735565b620001f0565b604051620000a3919062000806565b6200013a6200013436600462000853565b62000209565b604051620000a3929190620009a2565b620001616200015b366004620009ea565b6200030f565b604051620000a392919062000ab8565b60006001600160e01b0319821663099718b560e41b1480620001a257506001600160e01b03198216621574e360e91b145b80620001be57506301ffc9a760e01b6001600160e01b03198316145b92915050565b620001ce62000677565b5060408051606081018252600181526004602082015260009181019190915290565b606062000202600060036001620003de565b9392505050565b606062000229604051806040016040528060608152602001606081525090565b8361ffff16600103620002985762000242600362000577565b815260405161ffff8516602482015260440160408051601f198184030181529190526020810180516001600160e01b03166239a8c560e41b17905291506200029261ffff851660036000620003de565b60208201525b8361ffff166002036200030757620002b1600362000577565b815260405161ffff8516602482015260440160408051601f198184030181529190526020810180516001600160e01b03166239a8c560e41b17905291506200030161ffff851660036000620003de565b60208201525b935093915050565b60006200032f604051806040016040528060608152602001606081525090565b6040516001600160a01b038516602482015260009060440160408051601f198184030181529190526020810180516001600160e01b031663189acdbd60e31b1790529050620003b081620003a07f000000000000000000000000000000000000000000000000000000000000000090565b6001600160a01b0316906200063b565b9250620003be600362000577565b8252620003cf6000600381620003de565b60208301525090939092509050565b6060826001600160a01b0316846001600160a01b031611156200041457604051633a4013cd60e21b815260040160405180910390fd5b62000420848462000afa565b6001600160a01b031667ffffffffffffffff811115620004445762000444620009d4565b6040519080825280602002602001820160405280156200049f57816020015b6040805160a081018252600080825260208083018290529282018190526060820181905260808201528252600019909201910181620004635790505b509050835b836001600160a01b0316816001600160a01b031610156200056f576040518060a00160405280846002811115620004df57620004df62000789565b81526001600160a01b038316602082018190526040820152600060608201527fa280eec51ab8e1bc4b6b0c1b7f1bde785761b787a49db404e3e9338ed9b016ef6080909101528262000532878462000afa565b6001600160a01b0316815181106200054e576200054e62000b24565b60200260200101819052508080620005669062000b3a565b915050620004a4565b509392505050565b6060816001600160a01b031667ffffffffffffffff8111156200059e576200059e620009d4565b604051908082528060200260200182016040528015620005c8578160200160208202803683370190505b50905060005b826001600160a01b0316816001600160a01b0316101562000635578082826001600160a01b03168151811062000608576200060862000b24565b6001600160a01b0390921660209283029190910190910152806200062c8162000b3a565b915050620005ce565b50919050565b600082826040516200064d9062000695565b6200065a92919062000b63565b604051809103906000f0801580156200056f573d6000803e3d6000fd5b60405180606001604052806003906020820280368337509192915050565b6106fe8062000b8883390190565b600060208284031215620006b657600080fd5b81356001600160e01b0319811681146200020257600080fd5b60608101818360005b6003811015620006fc57815160ff16835260209283019290910190600101620006d8565b50505092915050565b80356001600160a01b03811681146200071d57600080fd5b919050565b6000606082840312156200063557600080fd5b600080604083850312156200074957600080fd5b620007548362000705565b9150602083013567ffffffffffffffff8111156200077157600080fd5b6200077f8582860162000722565b9150509250929050565b634e487b7160e01b600052602160045260246000fd5b6000815160038110620007c257634e487b7160e01b600052602160045260246000fd5b8352506020818101516001600160a01b0390811691840191909152604080830151821690840152606080830151909116908301526080908101519082015260a00190565b6020808252825182820181905260009190848201906040850190845b818110156200084757620008388385516200079f565b93850193925060010162000822565b50909695505050505050565b6000806000606084860312156200086957600080fd5b620008748462000705565b9250602084013561ffff811681146200088c57600080fd5b9150604084013567ffffffffffffffff811115620008a957600080fd5b620008b78682870162000722565b9150509250925092565b6000815180845260005b81811015620008e957602081850181015186830182015201620008cb565b506000602082860101526020601f19601f83011685010191505092915050565b805160408084528151908401819052600091602091908201906060860190845b81811015620009505783516001600160a01b03168352928401929184019160010162000929565b50508483015186820387850152805180835290840192506000918401905b808310156200099757620009848285516200079f565b915084840193506001830192506200096e565b509695505050505050565b604081526000620009b76040830185620008c1565b8281036020840152620009cb818562000909565b95945050505050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215620009fe57600080fd5b62000a098362000705565b9150602083013567ffffffffffffffff8082111562000a2757600080fd5b818501915085601f83011262000a3c57600080fd5b81358181111562000a515762000a51620009d4565b604051601f8201601f19908116603f0116810190838211818310171562000a7c5762000a7c620009d4565b8160405282815288602084870101111562000a9657600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6001600160a01b038316815260406020820152600062000adc604083018462000909565b949350505050565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0382811682821603908082111562000b1d5762000b1d62000ae4565b5092915050565b634e487b7160e01b600052603260045260246000fd5b60006001600160a01b0380831681810362000b595762000b5962000ae4565b6001019392505050565b6001600160a01b038316815260406020820152600062000adc6040830184620008c156fe60806040526040516106fe3803806106fe83398101604081905261002291610319565b61002e82826000610035565b5050610436565b61003e8361006b565b60008251118061004b5750805b156100665761006483836100ab60201b6100291760201c565b505b505050565b610074816100d7565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606100d083836040518060600160405280602781526020016106d7602791396101a9565b9392505050565b6100ea8161022260201b6100551760201c565b6101515760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b806101887f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61023160201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6060600080856001600160a01b0316856040516101c691906103e7565b600060405180830381855af49150503d8060008114610201576040519150601f19603f3d011682016040523d82523d6000602084013e610206565b606091505b50909250905061021886838387610234565b9695505050505050565b6001600160a01b03163b151590565b90565b606083156102a357825160000361029c576001600160a01b0385163b61029c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610148565b50816102ad565b6102ad83836102b5565b949350505050565b8151156102c55781518083602001fd5b8060405162461bcd60e51b81526004016101489190610403565b634e487b7160e01b600052604160045260246000fd5b60005b838110156103105781810151838201526020016102f8565b50506000910152565b6000806040838503121561032c57600080fd5b82516001600160a01b038116811461034357600080fd5b60208401519092506001600160401b038082111561036057600080fd5b818501915085601f83011261037457600080fd5b815181811115610386576103866102df565b604051601f8201601f19908116603f011681019083821181831017156103ae576103ae6102df565b816040528281528860208487010111156103c757600080fd5b6103d88360208301602088016102f5565b80955050505050509250929050565b600082516103f98184602087016102f5565b9190910192915050565b60208152600082518060208401526104228160408501602087016102f5565b601f01601f19169190910160400192915050565b610292806104456000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b61009f565b565b606061004e838360405180606001604052806027815260200161025f602791396100c3565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e8080156100be573d6000f35b3d6000fd5b6060600080856001600160a01b0316856040516100e0919061020f565b600060405180830381855af49150503d806000811461011b576040519150601f19603f3d011682016040523d82523d6000602084013e610120565b606091505b50915091506101318683838761013b565b9695505050505050565b606083156101af5782516000036101a8576001600160a01b0385163b6101a85760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b50816101b9565b6101b983836101c1565b949350505050565b8151156101d15781518083602001fd5b8060405162461bcd60e51b815260040161019f919061022b565b60005b838110156102065781810151838201526020016101ee565b50506000910152565b600082516102218184602087016101eb565b9190910192915050565b602081526000825180602084015261024a8160408501602087016101eb565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a60a06040523060805234801561001457600080fd5b5061001d610022565b6100e1565b600054610100900460ff161561008e5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116146100df576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b60805161126061011860003960008181610459015281816104de015281816105d401528181610659015261074301526112606000f3fe6080604052600436106100dd5760003560e01c80634f1ef2861161007f5780636accab8c116100595780636accab8c1461022b578063c4d66de814610242578063c9c4bfca14610262578063efe51cca1461029657600080fd5b80634f1ef286146101ee57806352d1902d146102015780635c60da1b1461021657600080fd5b80632ae9c600116100bb5780632ae9c6001461015e5780633659cfe6146101805780634162169f146101a057806341de6830146101d257600080fd5b806301ffc9a7146100e2578063039a8c50146101175780632491118d14610139575b600080fd5b3480156100ee57600080fd5b506101026100fd366004610f74565b6102ad565b60405190151581526020015b60405180910390f35b34801561012357600080fd5b50610137610132366004610f9e565b610319565b005b34801561014557600080fd5b5061015061012f5481565b60405190815260200161010e565b34801561016a57600080fd5b50610173610425565b60405161010e9190610fc2565b34801561018c57600080fd5b5061013761019b36600461100b565b61044f565b3480156101ac57600080fd5b5060c9546001600160a01b03165b6040516001600160a01b03909116815260200161010e565b3480156101de57600080fd5b50600060405161010e9190611028565b6101376101fc366004611066565b6105ca565b34801561020d57600080fd5b50610150610736565b34801561022257600080fd5b506101ba6107fb565b34801561023757600080fd5b5061015061012d5481565b34801561024e57600080fd5b5061013761025d36600461100b565b610833565b34801561026e57600080fd5b506101507f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f581565b3480156102a257600080fd5b5061015061012e5481565b60006001600160e01b0319821663041de68360e41b14806102dd57506001600160e01b03198216621574e360e91b145b806102f857506001600160e01b031982166352d1902d60e01b145b8061031357506301ffc9a760e01b6001600160e01b03198316145b92915050565b600054600390610100900460ff1615801561033b575060005460ff8083169116105b6103a35760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805461ffff191660ff831617610100179055600261ffff831610156103cb57600261012e555b60038261ffff1610156103df57600361012f555b6000805461ff001916905560405160ff821681527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b61042d610f56565b5060408051606081018252600181526004602082015260009181019190915290565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036104dc5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b606482015260840161039a565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166105377f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b0316146105a25760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b606482015260840161039a565b6105ab81610925565b604080516000808252602082019092526105c791839190610962565b50565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036106575760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b606482015260840161039a565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166106b27f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b03161461071d5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b606482015260840161039a565b61072682610925565b61073282826001610962565b5050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146107d65760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000606482015260840161039a565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b600061082e7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b600054600390610100900460ff16158015610855575060005460ff8083169116105b6108b85760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161039a565b6000805461ffff191660ff8316176101001790556108d582610b07565b600161012d55600261012e55600361012f556000805461ff001916905560405160ff821681527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602001610419565b60c9547f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f590610732906001600160a01b0316303384600036610b7b565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561099a5761099583610c37565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156109f4575060408051601f3d908101601f191682019092526109f19181019061112a565b60015b610a665760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201527f6f6e206973206e6f742055555053000000000000000000000000000000000000606482015260840161039a565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114610afb5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f7860448201527f6961626c65555549440000000000000000000000000000000000000000000000606482015260840161039a565b50610995838383610d02565b600054610100900460ff16610b725760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840161039a565b6105c781610d2d565b604051637ef7c88360e11b81526001600160a01b0387169063fdef910690610baf9088908890889088908890600401611143565b602060405180830381865afa158015610bcc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bf09190611197565b610c2f57604051630cb6f8ed60e21b81526001600160a01b0380881660048301528087166024830152851660448201526064810184905260840161039a565b505050505050565b6001600160a01b0381163b610cb45760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e747261637400000000000000000000000000000000000000606482015260840161039a565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610d0b83610dc7565b600082511180610d185750805b1561099557610d278383610e07565b50505050565b600054610100900460ff16610d985760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840161039a565b60c9805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610dd081610c37565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060610e2c838360405180606001604052806027815260200161122d60279139610e33565b9392505050565b6060600080856001600160a01b031685604051610e5091906111dd565b600060405180830381855af49150503d8060008114610e8b576040519150601f19603f3d011682016040523d82523d6000602084013e610e90565b606091505b5091509150610ea186838387610eab565b9695505050505050565b60608315610f1a578251600003610f13576001600160a01b0385163b610f135760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161039a565b5081610f24565b610f248383610f2c565b949350505050565b815115610f3c5781518083602001fd5b8060405162461bcd60e51b815260040161039a91906111f9565b60405180606001604052806003906020820280368337509192915050565b600060208284031215610f8657600080fd5b81356001600160e01b031981168114610e2c57600080fd5b600060208284031215610fb057600080fd5b813561ffff81168114610e2c57600080fd5b60608101818360005b6003811015610fed57815160ff16835260209283019290910190600101610fcb565b50505092915050565b6001600160a01b03811681146105c757600080fd5b60006020828403121561101d57600080fd5b8135610e2c81610ff6565b602081016003831061104a57634e487b7160e01b600052602160045260246000fd5b91905290565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561107957600080fd5b823561108481610ff6565b9150602083013567ffffffffffffffff808211156110a157600080fd5b818501915085601f8301126110b557600080fd5b8135818111156110c7576110c7611050565b604051601f8201601f19908116603f011681019083821181831017156110ef576110ef611050565b8160405282815288602084870101111561110857600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60006020828403121561113c57600080fd5b5051919050565b60006001600160a01b03808816835280871660208401525084604083015260806060830152826080830152828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b6000602082840312156111a957600080fd5b81518015158114610e2c57600080fd5b60005b838110156111d45781810151838201526020016111bc565b50506000910152565b600082516111ef8184602087016111b9565b9190910192915050565b60208152600082518060208401526112188160408501602087016111b9565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a","opcodes":"PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x1D SWAP1 PUSH2 0x4B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH2 0x39 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x80 MSTORE PUSH2 0x58 JUMP JUMPDEST PUSH2 0x1378 DUP1 PUSH2 0x130B DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH2 0x1292 PUSH2 0x79 PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH1 0xD2 ADD MSTORE PUSH2 0x37E ADD MSTORE PUSH2 0x1292 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH3 0x7B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9CB0A124 GT PUSH3 0x56 JUMPI DUP1 PUSH4 0x9CB0A124 EQ PUSH3 0xFD JUMPI DUP1 PUSH4 0xA8A9C29E EQ PUSH3 0x123 JUMPI DUP1 PUSH4 0xF10832F1 EQ PUSH3 0x14A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH3 0x80 JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH3 0xAC JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH3 0xC5 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x97 PUSH3 0x91 CALLDATASIZE PUSH1 0x4 PUSH3 0x6A3 JUMP JUMPDEST PUSH3 0x171 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0xB6 PUSH3 0x1C4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0xA3 SWAP2 SWAP1 PUSH3 0x6CF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH3 0xA3 JUMP JUMPDEST PUSH3 0x114 PUSH3 0x10E CALLDATASIZE PUSH1 0x4 PUSH3 0x735 JUMP JUMPDEST PUSH3 0x1F0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0xA3 SWAP2 SWAP1 PUSH3 0x806 JUMP JUMPDEST PUSH3 0x13A PUSH3 0x134 CALLDATASIZE PUSH1 0x4 PUSH3 0x853 JUMP JUMPDEST PUSH3 0x209 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0xA3 SWAP3 SWAP2 SWAP1 PUSH3 0x9A2 JUMP JUMPDEST PUSH3 0x161 PUSH3 0x15B CALLDATASIZE PUSH1 0x4 PUSH3 0x9EA JUMP JUMPDEST PUSH3 0x30F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0xA3 SWAP3 SWAP2 SWAP1 PUSH3 0xAB8 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x99718B5 PUSH1 0xE4 SHL EQ DUP1 PUSH3 0x1A2 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH3 0x1BE JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH3 0x1CE PUSH3 0x677 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH3 0x202 PUSH1 0x0 PUSH1 0x3 PUSH1 0x1 PUSH3 0x3DE JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH3 0x229 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST DUP4 PUSH2 0xFFFF AND PUSH1 0x1 SUB PUSH3 0x298 JUMPI PUSH3 0x242 PUSH1 0x3 PUSH3 0x577 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x40 MLOAD PUSH2 0xFFFF DUP6 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH3 0x39A8C5 PUSH1 0xE4 SHL OR SWAP1 MSTORE SWAP2 POP PUSH3 0x292 PUSH2 0xFFFF DUP6 AND PUSH1 0x3 PUSH1 0x0 PUSH3 0x3DE JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE JUMPDEST DUP4 PUSH2 0xFFFF AND PUSH1 0x2 SUB PUSH3 0x307 JUMPI PUSH3 0x2B1 PUSH1 0x3 PUSH3 0x577 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x40 MLOAD PUSH2 0xFFFF DUP6 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH3 0x39A8C5 PUSH1 0xE4 SHL OR SWAP1 MSTORE SWAP2 POP PUSH3 0x301 PUSH2 0xFFFF DUP6 AND PUSH1 0x3 PUSH1 0x0 PUSH3 0x3DE JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE JUMPDEST SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x32F PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 PUSH1 0x44 ADD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x189ACDBD PUSH1 0xE3 SHL OR SWAP1 MSTORE SWAP1 POP PUSH3 0x3B0 DUP2 PUSH3 0x3A0 PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH3 0x63B JUMP JUMPDEST SWAP3 POP PUSH3 0x3BE PUSH1 0x3 PUSH3 0x577 JUMP JUMPDEST DUP3 MSTORE PUSH3 0x3CF PUSH1 0x0 PUSH1 0x3 DUP2 PUSH3 0x3DE JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP SWAP1 SWAP4 SWAP1 SWAP3 POP SWAP1 POP JUMP JUMPDEST PUSH1 0x60 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH3 0x414 JUMPI PUSH1 0x40 MLOAD PUSH4 0x3A4013CD PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0x420 DUP5 DUP5 PUSH3 0xAFA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x444 JUMPI PUSH3 0x444 PUSH3 0x9D4 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH3 0x49F JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD DUP3 SWAP1 MSTORE SWAP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 DUP3 ADD MSTORE DUP3 MSTORE PUSH1 0x0 NOT SWAP1 SWAP3 ADD SWAP2 ADD DUP2 PUSH3 0x463 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP DUP4 JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT ISZERO PUSH3 0x56F JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 DUP5 PUSH1 0x2 DUP2 GT ISZERO PUSH3 0x4DF JUMPI PUSH3 0x4DF PUSH3 0x789 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x60 DUP3 ADD MSTORE PUSH32 0xA280EEC51AB8E1BC4B6B0C1B7F1BDE785761B787A49DB404E3E9338ED9B016EF PUSH1 0x80 SWAP1 SWAP2 ADD MSTORE DUP3 PUSH3 0x532 DUP8 DUP5 PUSH3 0xAFA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MLOAD DUP2 LT PUSH3 0x54E JUMPI PUSH3 0x54E PUSH3 0xB24 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP DUP1 DUP1 PUSH3 0x566 SWAP1 PUSH3 0xB3A JUMP JUMPDEST SWAP2 POP POP PUSH3 0x4A4 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x59E JUMPI PUSH3 0x59E PUSH3 0x9D4 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH3 0x5C8 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT ISZERO PUSH3 0x635 JUMPI DUP1 DUP3 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MLOAD DUP2 LT PUSH3 0x608 JUMPI PUSH3 0x608 PUSH3 0xB24 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE DUP1 PUSH3 0x62C DUP2 PUSH3 0xB3A JUMP JUMPDEST SWAP2 POP POP PUSH3 0x5CE JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH3 0x64D SWAP1 PUSH3 0x695 JUMP JUMPDEST PUSH3 0x65A SWAP3 SWAP2 SWAP1 PUSH3 0xB63 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH3 0x56F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x6FE DUP1 PUSH3 0xB88 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x6B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH3 0x202 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH3 0x6FC JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH3 0x6D8 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x71D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x635 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x749 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x754 DUP4 PUSH3 0x705 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x771 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x77F DUP6 DUP3 DUP7 ADD PUSH3 0x722 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP2 MLOAD PUSH1 0x3 DUP2 LT PUSH3 0x7C2 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP4 MSTORE POP PUSH1 0x20 DUP2 DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP1 DUP4 ADD MLOAD DUP3 AND SWAP1 DUP5 ADD MSTORE PUSH1 0x60 DUP1 DUP4 ADD MLOAD SWAP1 SWAP2 AND SWAP1 DUP4 ADD MSTORE PUSH1 0x80 SWAP1 DUP2 ADD MLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x847 JUMPI PUSH3 0x838 DUP4 DUP6 MLOAD PUSH3 0x79F JUMP JUMPDEST SWAP4 DUP6 ADD SWAP4 SWAP3 POP PUSH1 0x1 ADD PUSH3 0x822 JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH3 0x869 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x874 DUP5 PUSH3 0x705 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH3 0x88C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x8A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x8B7 DUP7 DUP3 DUP8 ADD PUSH3 0x722 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x8E9 JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD DUP3 ADD MSTORE ADD PUSH3 0x8CB JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x20 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x20 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x40 DUP1 DUP5 MSTORE DUP2 MLOAD SWAP1 DUP5 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x20 SWAP2 SWAP1 DUP3 ADD SWAP1 PUSH1 0x60 DUP7 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x950 JUMPI DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH3 0x929 JUMP JUMPDEST POP POP DUP5 DUP4 ADD MLOAD DUP7 DUP3 SUB DUP8 DUP6 ADD MSTORE DUP1 MLOAD DUP1 DUP4 MSTORE SWAP1 DUP5 ADD SWAP3 POP PUSH1 0x0 SWAP2 DUP5 ADD SWAP1 JUMPDEST DUP1 DUP4 LT ISZERO PUSH3 0x997 JUMPI PUSH3 0x984 DUP3 DUP6 MLOAD PUSH3 0x79F JUMP JUMPDEST SWAP2 POP DUP5 DUP5 ADD SWAP4 POP PUSH1 0x1 DUP4 ADD SWAP3 POP PUSH3 0x96E JUMP JUMPDEST POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 PUSH3 0x9B7 PUSH1 0x40 DUP4 ADD DUP6 PUSH3 0x8C1 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 ADD MSTORE PUSH3 0x9CB DUP2 DUP6 PUSH3 0x909 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x9FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0xA09 DUP4 PUSH3 0x705 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH3 0xA27 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH3 0xA3C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH3 0xA51 JUMPI PUSH3 0xA51 PUSH3 0x9D4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH3 0xA7C JUMPI PUSH3 0xA7C PUSH3 0x9D4 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH3 0xA96 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH3 0xADC PUSH1 0x40 DUP4 ADD DUP5 PUSH3 0x909 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND DUP3 DUP3 AND SUB SWAP1 DUP1 DUP3 GT ISZERO PUSH3 0xB1D JUMPI PUSH3 0xB1D PUSH3 0xAE4 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND DUP2 DUP2 SUB PUSH3 0xB59 JUMPI PUSH3 0xB59 PUSH3 0xAE4 JUMP JUMPDEST PUSH1 0x1 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH3 0xADC PUSH1 0x40 DUP4 ADD DUP5 PUSH3 0x8C1 JUMP INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH2 0x6FE CODESIZE SUB DUP1 PUSH2 0x6FE DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x22 SWAP2 PUSH2 0x319 JUMP JUMPDEST PUSH2 0x2E DUP3 DUP3 PUSH1 0x0 PUSH2 0x35 JUMP JUMPDEST POP POP PUSH2 0x436 JUMP JUMPDEST PUSH2 0x3E DUP4 PUSH2 0x6B JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD GT DUP1 PUSH2 0x4B JUMPI POP DUP1 JUMPDEST ISZERO PUSH2 0x66 JUMPI PUSH2 0x64 DUP4 DUP4 PUSH2 0xAB PUSH1 0x20 SHL PUSH2 0x29 OR PUSH1 0x20 SHR JUMP JUMPDEST POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x74 DUP2 PUSH2 0xD7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xD0 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x6D7 PUSH1 0x27 SWAP2 CODECOPY PUSH2 0x1A9 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xEA DUP2 PUSH2 0x222 PUSH1 0x20 SHL PUSH2 0x55 OR PUSH1 0x20 SHR JUMP JUMPDEST PUSH2 0x151 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313936373A206E657720696D706C656D656E746174696F6E206973206E PUSH1 0x44 DUP3 ADD MSTORE PUSH13 0x1BDD08184818DBDB9D1C9858DD PUSH1 0x9A SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH2 0x188 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC PUSH1 0x0 SHL PUSH2 0x231 PUSH1 0x20 SHL PUSH2 0x64 OR PUSH1 0x20 SHR JUMP JUMPDEST DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0x1C6 SWAP2 SWAP1 PUSH2 0x3E7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x201 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x206 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x218 DUP7 DUP4 DUP4 DUP8 PUSH2 0x234 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x2A3 JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0x29C JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0x29C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x148 JUMP JUMPDEST POP DUP2 PUSH2 0x2AD JUMP JUMPDEST PUSH2 0x2AD DUP4 DUP4 PUSH2 0x2B5 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x2C5 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x148 SWAP2 SWAP1 PUSH2 0x403 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x310 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2F8 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x32C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x343 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x360 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x374 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x386 JUMPI PUSH2 0x386 PUSH2 0x2DF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x3AE JUMPI PUSH2 0x3AE PUSH2 0x2DF JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x3C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3D8 DUP4 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x2F5 JUMP JUMPDEST DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x3F9 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x2F5 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x422 DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x2F5 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x292 DUP1 PUSH2 0x445 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLDATASIZE PUSH2 0x13 JUMPI PUSH2 0x11 PUSH2 0x17 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x11 JUMPDEST PUSH2 0x27 PUSH2 0x22 PUSH2 0x67 JUMP JUMPDEST PUSH2 0x9F JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x60 PUSH2 0x4E DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x25F PUSH1 0x27 SWAP2 CODECOPY PUSH2 0xC3 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9A PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 DUP1 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE PUSH1 0x0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH2 0xBE JUMPI RETURNDATASIZE PUSH1 0x0 RETURN JUMPDEST RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0xE0 SWAP2 SWAP1 PUSH2 0x20F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x11B JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x120 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x131 DUP7 DUP4 DUP4 DUP8 PUSH2 0x13B JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x1AF JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0x1A8 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0x1A8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP DUP2 PUSH2 0x1B9 JUMP JUMPDEST PUSH2 0x1B9 DUP4 DUP4 PUSH2 0x1C1 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x1D1 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x19F SWAP2 SWAP1 PUSH2 0x22B JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x206 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1EE JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x221 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x1EB JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x24A DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x1EB JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A164 PUSH20 0x6F6C6343000811000A416464726573733A206C6F PUSH24 0x2D6C6576656C2064656C65676174652063616C6C20666169 PUSH13 0x6564A164736F6C634300081100 EXP PUSH1 0xA0 PUSH1 0x40 MSTORE ADDRESS PUSH1 0x80 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x14 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1D PUSH2 0x22 JUMP JUMPDEST PUSH2 0xE1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x8E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x27 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320696E697469 PUSH1 0x44 DUP3 ADD MSTORE PUSH7 0x616C697A696E67 PUSH1 0xC8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xFF SWAP1 DUP2 AND EQ PUSH2 0xDF JUMPI PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH2 0x1260 PUSH2 0x118 PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH2 0x459 ADD MSTORE DUP2 DUP2 PUSH2 0x4DE ADD MSTORE DUP2 DUP2 PUSH2 0x5D4 ADD MSTORE DUP2 DUP2 PUSH2 0x659 ADD MSTORE PUSH2 0x743 ADD MSTORE PUSH2 0x1260 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xDD JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x4F1EF286 GT PUSH2 0x7F JUMPI DUP1 PUSH4 0x6ACCAB8C GT PUSH2 0x59 JUMPI DUP1 PUSH4 0x6ACCAB8C EQ PUSH2 0x22B JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0x242 JUMPI DUP1 PUSH4 0xC9C4BFCA EQ PUSH2 0x262 JUMPI DUP1 PUSH4 0xEFE51CCA EQ PUSH2 0x296 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x1EE JUMPI DUP1 PUSH4 0x52D1902D EQ PUSH2 0x201 JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0x216 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x2AE9C600 GT PUSH2 0xBB JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0x15E JUMPI DUP1 PUSH4 0x3659CFE6 EQ PUSH2 0x180 JUMPI DUP1 PUSH4 0x4162169F EQ PUSH2 0x1A0 JUMPI DUP1 PUSH4 0x41DE6830 EQ PUSH2 0x1D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xE2 JUMPI DUP1 PUSH4 0x39A8C50 EQ PUSH2 0x117 JUMPI DUP1 PUSH4 0x2491118D EQ PUSH2 0x139 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xEE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x102 PUSH2 0xFD CALLDATASIZE PUSH1 0x4 PUSH2 0xF74 JUMP JUMPDEST PUSH2 0x2AD JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x123 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x137 PUSH2 0x132 CALLDATASIZE PUSH1 0x4 PUSH2 0xF9E JUMP JUMPDEST PUSH2 0x319 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x145 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x150 PUSH2 0x12F SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x10E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x16A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x173 PUSH2 0x425 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x10E SWAP2 SWAP1 PUSH2 0xFC2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x18C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x137 PUSH2 0x19B CALLDATASIZE PUSH1 0x4 PUSH2 0x100B JUMP JUMPDEST PUSH2 0x44F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xC9 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x10E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 PUSH1 0x40 MLOAD PUSH2 0x10E SWAP2 SWAP1 PUSH2 0x1028 JUMP JUMPDEST PUSH2 0x137 PUSH2 0x1FC CALLDATASIZE PUSH1 0x4 PUSH2 0x1066 JUMP JUMPDEST PUSH2 0x5CA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x20D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x150 PUSH2 0x736 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x222 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1BA PUSH2 0x7FB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x237 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x150 PUSH2 0x12D SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x24E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x137 PUSH2 0x25D CALLDATASIZE PUSH1 0x4 PUSH2 0x100B JUMP JUMPDEST PUSH2 0x833 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x26E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x150 PUSH32 0x821B6E3A557148015A918C89E5D092E878A69854A2D1A410635F771BD5A8A3F5 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x150 PUSH2 0x12E SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x41DE683 PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x2DD JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x2F8 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x52D1902D PUSH1 0xE0 SHL EQ JUMPDEST DUP1 PUSH2 0x313 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x3 SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH2 0x33B JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF DUP1 DUP4 AND SWAP2 AND LT JUMPDEST PUSH2 0x3A3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x44 DUP3 ADD MSTORE PUSH14 0x191E481A5B9A5D1A585B1A5E9959 PUSH1 0x92 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH2 0xFFFF NOT AND PUSH1 0xFF DUP4 AND OR PUSH2 0x100 OR SWAP1 SSTORE PUSH1 0x2 PUSH2 0xFFFF DUP4 AND LT ISZERO PUSH2 0x3CB JUMPI PUSH1 0x2 PUSH2 0x12E SSTORE JUMPDEST PUSH1 0x3 DUP3 PUSH2 0xFFFF AND LT ISZERO PUSH2 0x3DF JUMPI PUSH1 0x3 PUSH2 0x12F SSTORE JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH1 0xFF DUP3 AND DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH2 0x42D PUSH2 0xF56 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x4DC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x19195B1959D85D1958D85B1B PUSH1 0xA2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x39A JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x537 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x5A2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x6163746976652070726F7879 PUSH1 0xA0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x39A JUMP JUMPDEST PUSH2 0x5AB DUP2 PUSH2 0x925 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x5C7 SWAP2 DUP4 SWAP2 SWAP1 PUSH2 0x962 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x657 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x19195B1959D85D1958D85B1B PUSH1 0xA2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x39A JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x6B2 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x71D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x6163746976652070726F7879 PUSH1 0xA0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x39A JUMP JUMPDEST PUSH2 0x726 DUP3 PUSH2 0x925 JUMP JUMPDEST PUSH2 0x732 DUP3 DUP3 PUSH1 0x1 PUSH2 0x962 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x7D6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x38 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x555550535570677261646561626C653A206D757374206E6F742062652063616C PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6C6564207468726F7567682064656C656761746563616C6C0000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x39A JUMP JUMPDEST POP PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x82E PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x3 SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH2 0x855 JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF DUP1 DUP4 AND SWAP2 AND LT JUMPDEST PUSH2 0x8B8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x44 DUP3 ADD MSTORE PUSH14 0x191E481A5B9A5D1A585B1A5E9959 PUSH1 0x92 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x39A JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH2 0xFFFF NOT AND PUSH1 0xFF DUP4 AND OR PUSH2 0x100 OR SWAP1 SSTORE PUSH2 0x8D5 DUP3 PUSH2 0xB07 JUMP JUMPDEST PUSH1 0x1 PUSH2 0x12D SSTORE PUSH1 0x2 PUSH2 0x12E SSTORE PUSH1 0x3 PUSH2 0x12F SSTORE PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH1 0xFF DUP3 AND DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH2 0x419 JUMP JUMPDEST PUSH1 0xC9 SLOAD PUSH32 0x821B6E3A557148015A918C89E5D092E878A69854A2D1A410635F771BD5A8A3F5 SWAP1 PUSH2 0x732 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ADDRESS CALLER DUP5 PUSH1 0x0 CALLDATASIZE PUSH2 0xB7B JUMP JUMPDEST PUSH32 0x4910FDFA16FED3260ED0E7147F7CC6DA11A60208B5B9406D12A635614FFD9143 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x99A JUMPI PUSH2 0x995 DUP4 PUSH2 0xC37 JUMP JUMPDEST POP POP POP JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x52D1902D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x9F4 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x9F1 SWAP2 DUP2 ADD SWAP1 PUSH2 0x112A JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0xA66 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524331393637557067726164653A206E657720696D706C656D656E74617469 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F6E206973206E6F742055555053000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x39A JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC DUP2 EQ PUSH2 0xAFB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524331393637557067726164653A20756E737570706F727465642070726F78 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6961626C65555549440000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x39A JUMP JUMPDEST POP PUSH2 0x995 DUP4 DUP4 DUP4 PUSH2 0xD02 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0xB72 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x39A JUMP JUMPDEST PUSH2 0x5C7 DUP2 PUSH2 0xD2D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x7EF7C883 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0xFDEF9106 SWAP1 PUSH2 0xBAF SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x1143 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xBCC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xBF0 SWAP2 SWAP1 PUSH2 0x1197 JUMP JUMPDEST PUSH2 0xC2F JUMPI PUSH1 0x40 MLOAD PUSH4 0xCB6F8ED PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND PUSH1 0x4 DUP4 ADD MSTORE DUP1 DUP8 AND PUSH1 0x24 DUP4 ADD MSTORE DUP6 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x84 ADD PUSH2 0x39A JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND EXTCODESIZE PUSH2 0xCB4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313936373A206E657720696D706C656D656E746174696F6E206973206E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F74206120636F6E747261637400000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x39A JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xD0B DUP4 PUSH2 0xDC7 JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD GT DUP1 PUSH2 0xD18 JUMPI POP DUP1 JUMPDEST ISZERO PUSH2 0x995 JUMPI PUSH2 0xD27 DUP4 DUP4 PUSH2 0xE07 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0xD98 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x39A JUMP JUMPDEST PUSH1 0xC9 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xDD0 DUP2 PUSH2 0xC37 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xE2C DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x122D PUSH1 0x27 SWAP2 CODECOPY PUSH2 0xE33 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0xE50 SWAP2 SWAP1 PUSH2 0x11DD JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xE8B JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xE90 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0xEA1 DUP7 DUP4 DUP4 DUP8 PUSH2 0xEAB JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0xF1A JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0xF13 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0xF13 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x39A JUMP JUMPDEST POP DUP2 PUSH2 0xF24 JUMP JUMPDEST PUSH2 0xF24 DUP4 DUP4 PUSH2 0xF2C JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0xF3C JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x39A SWAP2 SWAP1 PUSH2 0x11F9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xF86 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0xE2C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xFB0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH2 0xE2C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0xFED JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0xFCB JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x5C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x101D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xE2C DUP2 PUSH2 0xFF6 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH1 0x3 DUP4 LT PUSH2 0x104A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 SWAP1 MSTORE SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1079 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x1084 DUP2 PUSH2 0xFF6 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x10A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x10B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x10C7 JUMPI PUSH2 0x10C7 PUSH2 0x1050 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x10EF JUMPI PUSH2 0x10EF PUSH2 0x1050 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x1108 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x113C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND DUP4 MSTORE DUP1 DUP8 AND PUSH1 0x20 DUP5 ADD MSTORE POP DUP5 PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x80 PUSH1 0x60 DUP4 ADD MSTORE DUP3 PUSH1 0x80 DUP4 ADD MSTORE DUP3 DUP5 PUSH1 0xA0 DUP5 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0xA0 DUP5 DUP5 ADD ADD MSTORE PUSH1 0xA0 PUSH1 0x1F NOT PUSH1 0x1F DUP6 ADD AND DUP4 ADD ADD SWAP1 POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x11A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xE2C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x11D4 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x11BC JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x11EF DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x11B9 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x1218 DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x11B9 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A164 PUSH20 0x6F6C6343000811000A0000000000000000000000 ","sourceMap":"4631:2543:54:-:0;;;4788:87;;;;;;;;;;4833:37;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1605:32:83;;;4631:2543:54;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@deployUUPSProxy_14563":{"entryPoint":1595,"id":14563,"parameterSlots":2,"returnSlots":1},"@implementation_14447":{"entryPoint":null,"id":14447,"parameterSlots":0,"returnSlots":1},"@mockHelpers_11760":{"entryPoint":1399,"id":11760,"parameterSlots":1,"returnSlots":1},"@mockPermissions_11721":{"entryPoint":990,"id":11721,"parameterSlots":3,"returnSlots":1},"@prepareInstallation_12310":{"entryPoint":783,"id":12310,"parameterSlots":2,"returnSlots":2},"@prepareUninstallation_12430":{"entryPoint":496,"id":12430,"parameterSlots":2,"returnSlots":1},"@prepareUpdate_12402":{"entryPoint":521,"id":12402,"parameterSlots":3,"returnSlots":2},"@protocolVersion_14765":{"entryPoint":452,"id":14765,"parameterSlots":0,"returnSlots":1},"@supportsInterface_14438":{"entryPoint":369,"id":14438,"parameterSlots":1,"returnSlots":1},"@supportsInterface_9730":{"entryPoint":null,"id":9730,"parameterSlots":1,"returnSlots":1},"abi_decode_address":{"entryPoint":1797,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_struct_SetupPayload_calldata":{"entryPoint":1826,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_bytes_memory_ptr":{"entryPoint":2538,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_struct$_SetupPayload_$14224_calldata_ptr":{"entryPoint":1845,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_uint16t_struct$_SetupPayload_$14224_calldata_ptr":{"entryPoint":2131,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_bytes4":{"entryPoint":1699,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encodeUpdatedPos_struct_MultiTargetPermission":{"entryPoint":1951,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_bytes":{"entryPoint":2241,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_struct_PreparedSetupData":{"entryPoint":2313,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address_t_bytes_memory_ptr__to_t_address_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":2915,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_address_t_struct$_PreparedSetupData_$14216_memory_ptr__to_t_address_t_struct$_PreparedSetupData_$14216_memory_ptr__fromStack_reversed":{"entryPoint":2744,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr__fromStack_reversed":{"entryPoint":2054,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed":{"entryPoint":1743,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$14216_memory_ptr__to_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$14216_memory_ptr__fromStack_reversed":{"entryPoint":2466,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_contract$_IDAO_$10865__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_uint16__to_t_uint16__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_t_uint160":{"entryPoint":2810,"id":null,"parameterSlots":2,"returnSlots":1},"increment_t_uint160":{"entryPoint":2874,"id":null,"parameterSlots":1,"returnSlots":1},"panic_error_0x11":{"entryPoint":2788,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x21":{"entryPoint":1929,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x32":{"entryPoint":2852,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":2516,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:9309:92","statements":[{"nodeType":"YulBlock","src":"6:3:92","statements":[]},{"body":{"nodeType":"YulBlock","src":"83:217:92","statements":[{"body":{"nodeType":"YulBlock","src":"129:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"138:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"141:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"131:6:92"},"nodeType":"YulFunctionCall","src":"131:12:92"},"nodeType":"YulExpressionStatement","src":"131:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"104:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"113:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"100:3:92"},"nodeType":"YulFunctionCall","src":"100:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"125:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"96:3:92"},"nodeType":"YulFunctionCall","src":"96:32:92"},"nodeType":"YulIf","src":"93:52:92"},{"nodeType":"YulVariableDeclaration","src":"154:36:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"180:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"167:12:92"},"nodeType":"YulFunctionCall","src":"167:23:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"158:5:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"254:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"263:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"266:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"256:6:92"},"nodeType":"YulFunctionCall","src":"256:12:92"},"nodeType":"YulExpressionStatement","src":"256:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"212:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"223:5:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"234:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"239:10:92","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"230:3:92"},"nodeType":"YulFunctionCall","src":"230:20:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"219:3:92"},"nodeType":"YulFunctionCall","src":"219:32:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"209:2:92"},"nodeType":"YulFunctionCall","src":"209:43:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"202:6:92"},"nodeType":"YulFunctionCall","src":"202:51:92"},"nodeType":"YulIf","src":"199:71:92"},{"nodeType":"YulAssignment","src":"279:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"289:5:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"279:6:92"}]}]},"name":"abi_decode_tuple_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"49:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"60:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"72:6:92","type":""}],"src":"14:286:92"},{"body":{"nodeType":"YulBlock","src":"400:92:92","statements":[{"nodeType":"YulAssignment","src":"410:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"422:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"433:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"418:3:92"},"nodeType":"YulFunctionCall","src":"418:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"410:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"452:9:92"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"477:6:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"470:6:92"},"nodeType":"YulFunctionCall","src":"470:14:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"463:6:92"},"nodeType":"YulFunctionCall","src":"463:22:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"445:6:92"},"nodeType":"YulFunctionCall","src":"445:41:92"},"nodeType":"YulExpressionStatement","src":"445:41:92"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"369:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"380:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"391:4:92","type":""}],"src":"305:187:92"},{"body":{"nodeType":"YulBlock","src":"640:358:92","statements":[{"nodeType":"YulAssignment","src":"650:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"662:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"673:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"658:3:92"},"nodeType":"YulFunctionCall","src":"658:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"650:4:92"}]},{"nodeType":"YulVariableDeclaration","src":"685:20:92","value":{"name":"headStart","nodeType":"YulIdentifier","src":"696:9:92"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"689:3:92","type":""}]},{"nodeType":"YulAssignment","src":"714:16:92","value":{"name":"headStart","nodeType":"YulIdentifier","src":"721:9:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"714:3:92"}]},{"nodeType":"YulVariableDeclaration","src":"739:20:92","value":{"name":"value0","nodeType":"YulIdentifier","src":"753:6:92"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"743:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"768:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"777:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"772:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"834:158:92","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"855:3:92"},{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"870:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"864:5:92"},"nodeType":"YulFunctionCall","src":"864:13:92"},{"kind":"number","nodeType":"YulLiteral","src":"879:4:92","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"860:3:92"},"nodeType":"YulFunctionCall","src":"860:24:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"848:6:92"},"nodeType":"YulFunctionCall","src":"848:37:92"},"nodeType":"YulExpressionStatement","src":"848:37:92"},{"nodeType":"YulVariableDeclaration","src":"898:14:92","value":{"kind":"number","nodeType":"YulLiteral","src":"908:4:92","type":"","value":"0x20"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"902:2:92","type":""}]},{"nodeType":"YulAssignment","src":"925:19:92","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"936:3:92"},{"name":"_1","nodeType":"YulIdentifier","src":"941:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"932:3:92"},"nodeType":"YulFunctionCall","src":"932:12:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"925:3:92"}]},{"nodeType":"YulAssignment","src":"957:25:92","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"971:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"979:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"967:3:92"},"nodeType":"YulFunctionCall","src":"967:15:92"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"957:6:92"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"798:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"801:4:92","type":"","value":"0x03"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"795:2:92"},"nodeType":"YulFunctionCall","src":"795:11:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"807:18:92","statements":[{"nodeType":"YulAssignment","src":"809:14:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"818:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"821:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"814:3:92"},"nodeType":"YulFunctionCall","src":"814:9:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"809:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"791:3:92","statements":[]},"src":"787:205:92"}]},"name":"abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"609:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"620:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"631:4:92","type":""}],"src":"497:501:92"},{"body":{"nodeType":"YulBlock","src":"1104:125:92","statements":[{"nodeType":"YulAssignment","src":"1114:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1126:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1137:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1122:3:92"},"nodeType":"YulFunctionCall","src":"1122:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1114:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1156:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1171:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"1179:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1167:3:92"},"nodeType":"YulFunctionCall","src":"1167:55:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1149:6:92"},"nodeType":"YulFunctionCall","src":"1149:74:92"},"nodeType":"YulExpressionStatement","src":"1149:74:92"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1073:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1084:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1095:4:92","type":""}],"src":"1003:226:92"},{"body":{"nodeType":"YulBlock","src":"1283:147:92","statements":[{"nodeType":"YulAssignment","src":"1293:29:92","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1315:6:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1302:12:92"},"nodeType":"YulFunctionCall","src":"1302:20:92"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"1293:5:92"}]},{"body":{"nodeType":"YulBlock","src":"1408:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1417:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1420:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1410:6:92"},"nodeType":"YulFunctionCall","src":"1410:12:92"},"nodeType":"YulExpressionStatement","src":"1410:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1344:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1355:5:92"},{"kind":"number","nodeType":"YulLiteral","src":"1362:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1351:3:92"},"nodeType":"YulFunctionCall","src":"1351:54:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1341:2:92"},"nodeType":"YulFunctionCall","src":"1341:65:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1334:6:92"},"nodeType":"YulFunctionCall","src":"1334:73:92"},"nodeType":"YulIf","src":"1331:93:92"}]},"name":"abi_decode_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"1262:6:92","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"1273:5:92","type":""}],"src":"1234:196:92"},{"body":{"nodeType":"YulBlock","src":"1510:85:92","statements":[{"body":{"nodeType":"YulBlock","src":"1549:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1558:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1561:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1551:6:92"},"nodeType":"YulFunctionCall","src":"1551:12:92"},"nodeType":"YulExpressionStatement","src":"1551:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"end","nodeType":"YulIdentifier","src":"1531:3:92"},{"name":"offset","nodeType":"YulIdentifier","src":"1536:6:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1527:3:92"},"nodeType":"YulFunctionCall","src":"1527:16:92"},{"kind":"number","nodeType":"YulLiteral","src":"1545:2:92","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1523:3:92"},"nodeType":"YulFunctionCall","src":"1523:25:92"},"nodeType":"YulIf","src":"1520:45:92"},{"nodeType":"YulAssignment","src":"1574:15:92","value":{"name":"offset","nodeType":"YulIdentifier","src":"1583:6:92"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"1574:5:92"}]}]},"name":"abi_decode_struct_SetupPayload_calldata","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"1484:6:92","type":""},{"name":"end","nodeType":"YulTypedName","src":"1492:3:92","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"1500:5:92","type":""}],"src":"1435:160:92"},{"body":{"nodeType":"YulBlock","src":"1720:321:92","statements":[{"body":{"nodeType":"YulBlock","src":"1766:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1775:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1778:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1768:6:92"},"nodeType":"YulFunctionCall","src":"1768:12:92"},"nodeType":"YulExpressionStatement","src":"1768:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1741:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"1750:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1737:3:92"},"nodeType":"YulFunctionCall","src":"1737:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"1762:2:92","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1733:3:92"},"nodeType":"YulFunctionCall","src":"1733:32:92"},"nodeType":"YulIf","src":"1730:52:92"},{"nodeType":"YulAssignment","src":"1791:39:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1820:9:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"1801:18:92"},"nodeType":"YulFunctionCall","src":"1801:29:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1791:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"1839:46:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1870:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1881:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1866:3:92"},"nodeType":"YulFunctionCall","src":"1866:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1853:12:92"},"nodeType":"YulFunctionCall","src":"1853:32:92"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1843:6:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"1928:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1937:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1940:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1930:6:92"},"nodeType":"YulFunctionCall","src":"1930:12:92"},"nodeType":"YulExpressionStatement","src":"1930:12:92"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1900:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"1908:18:92","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1897:2:92"},"nodeType":"YulFunctionCall","src":"1897:30:92"},"nodeType":"YulIf","src":"1894:50:92"},{"nodeType":"YulAssignment","src":"1953:82:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2007:9:92"},{"name":"offset","nodeType":"YulIdentifier","src":"2018:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2003:3:92"},"nodeType":"YulFunctionCall","src":"2003:22:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2027:7:92"}],"functionName":{"name":"abi_decode_struct_SetupPayload_calldata","nodeType":"YulIdentifier","src":"1963:39:92"},"nodeType":"YulFunctionCall","src":"1963:72:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1953:6:92"}]}]},"name":"abi_decode_tuple_t_addresst_struct$_SetupPayload_$14224_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1678:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1689:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1701:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1709:6:92","type":""}],"src":"1600:441:92"},{"body":{"nodeType":"YulBlock","src":"2078:95:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2095:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2102:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"2107:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2098:3:92"},"nodeType":"YulFunctionCall","src":"2098:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2088:6:92"},"nodeType":"YulFunctionCall","src":"2088:31:92"},"nodeType":"YulExpressionStatement","src":"2088:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2135:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"2138:4:92","type":"","value":"0x21"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2128:6:92"},"nodeType":"YulFunctionCall","src":"2128:15:92"},"nodeType":"YulExpressionStatement","src":"2128:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2159:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2162:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2152:6:92"},"nodeType":"YulFunctionCall","src":"2152:15:92"},"nodeType":"YulExpressionStatement","src":"2152:15:92"}]},"name":"panic_error_0x21","nodeType":"YulFunctionDefinition","src":"2046:127:92"},{"body":{"nodeType":"YulBlock","src":"2268:606:92","statements":[{"nodeType":"YulVariableDeclaration","src":"2278:23:92","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2294:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2288:5:92"},"nodeType":"YulFunctionCall","src":"2288:13:92"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"2282:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"2339:111:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2360:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2367:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"2372:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2363:3:92"},"nodeType":"YulFunctionCall","src":"2363:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2353:6:92"},"nodeType":"YulFunctionCall","src":"2353:31:92"},"nodeType":"YulExpressionStatement","src":"2353:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2404:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"2407:4:92","type":"","value":"0x21"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2397:6:92"},"nodeType":"YulFunctionCall","src":"2397:15:92"},"nodeType":"YulExpressionStatement","src":"2397:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2432:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2435:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2425:6:92"},"nodeType":"YulFunctionCall","src":"2425:15:92"},"nodeType":"YulExpressionStatement","src":"2425:15:92"}]},"condition":{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"2323:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"2327:1:92","type":"","value":"3"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2320:2:92"},"nodeType":"YulFunctionCall","src":"2320:9:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2313:6:92"},"nodeType":"YulFunctionCall","src":"2313:17:92"},"nodeType":"YulIf","src":"2310:140:92"},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2466:3:92"},{"name":"_1","nodeType":"YulIdentifier","src":"2471:2:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2459:6:92"},"nodeType":"YulFunctionCall","src":"2459:15:92"},"nodeType":"YulExpressionStatement","src":"2459:15:92"},{"nodeType":"YulVariableDeclaration","src":"2483:44:92","value":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2513:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"2521:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2509:3:92"},"nodeType":"YulFunctionCall","src":"2509:17:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2503:5:92"},"nodeType":"YulFunctionCall","src":"2503:24:92"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"2487:12:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2536:52:92","value":{"kind":"number","nodeType":"YulLiteral","src":"2546:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"2540:2:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2608:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"2613:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2604:3:92"},"nodeType":"YulFunctionCall","src":"2604:14:92"},{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"2624:12:92"},{"name":"_2","nodeType":"YulIdentifier","src":"2638:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2620:3:92"},"nodeType":"YulFunctionCall","src":"2620:21:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2597:6:92"},"nodeType":"YulFunctionCall","src":"2597:45:92"},"nodeType":"YulExpressionStatement","src":"2597:45:92"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2662:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"2667:4:92","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2658:3:92"},"nodeType":"YulFunctionCall","src":"2658:14:92"},{"arguments":[{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2688:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"2696:4:92","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2684:3:92"},"nodeType":"YulFunctionCall","src":"2684:17:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2678:5:92"},"nodeType":"YulFunctionCall","src":"2678:24:92"},{"name":"_2","nodeType":"YulIdentifier","src":"2704:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2674:3:92"},"nodeType":"YulFunctionCall","src":"2674:33:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2651:6:92"},"nodeType":"YulFunctionCall","src":"2651:57:92"},"nodeType":"YulExpressionStatement","src":"2651:57:92"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2728:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"2733:4:92","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2724:3:92"},"nodeType":"YulFunctionCall","src":"2724:14:92"},{"arguments":[{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2754:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"2762:4:92","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2750:3:92"},"nodeType":"YulFunctionCall","src":"2750:17:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2744:5:92"},"nodeType":"YulFunctionCall","src":"2744:24:92"},{"name":"_2","nodeType":"YulIdentifier","src":"2770:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2740:3:92"},"nodeType":"YulFunctionCall","src":"2740:33:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2717:6:92"},"nodeType":"YulFunctionCall","src":"2717:57:92"},"nodeType":"YulExpressionStatement","src":"2717:57:92"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2794:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"2799:4:92","type":"","value":"0x80"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2790:3:92"},"nodeType":"YulFunctionCall","src":"2790:14:92"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2816:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"2824:4:92","type":"","value":"0x80"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2812:3:92"},"nodeType":"YulFunctionCall","src":"2812:17:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2806:5:92"},"nodeType":"YulFunctionCall","src":"2806:24:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2783:6:92"},"nodeType":"YulFunctionCall","src":"2783:48:92"},"nodeType":"YulExpressionStatement","src":"2783:48:92"},{"nodeType":"YulAssignment","src":"2840:28:92","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2858:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"2863:4:92","type":"","value":"0xa0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2854:3:92"},"nodeType":"YulFunctionCall","src":"2854:14:92"},"variableNames":[{"name":"updatedPos","nodeType":"YulIdentifier","src":"2840:10:92"}]}]},"name":"abi_encodeUpdatedPos_struct_MultiTargetPermission","nodeType":"YulFunctionDefinition","parameters":[{"name":"value0","nodeType":"YulTypedName","src":"2237:6:92","type":""},{"name":"pos","nodeType":"YulTypedName","src":"2245:3:92","type":""}],"returnVariables":[{"name":"updatedPos","nodeType":"YulTypedName","src":"2253:10:92","type":""}],"src":"2178:696:92"},{"body":{"nodeType":"YulBlock","src":"3110:499:92","statements":[{"nodeType":"YulVariableDeclaration","src":"3120:12:92","value":{"kind":"number","nodeType":"YulLiteral","src":"3130:2:92","type":"","value":"32"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"3124:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3141:32:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3159:9:92"},{"name":"_1","nodeType":"YulIdentifier","src":"3170:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3155:3:92"},"nodeType":"YulFunctionCall","src":"3155:18:92"},"variables":[{"name":"tail_1","nodeType":"YulTypedName","src":"3145:6:92","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3189:9:92"},{"name":"_1","nodeType":"YulIdentifier","src":"3200:2:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3182:6:92"},"nodeType":"YulFunctionCall","src":"3182:21:92"},"nodeType":"YulExpressionStatement","src":"3182:21:92"},{"nodeType":"YulVariableDeclaration","src":"3212:17:92","value":{"name":"tail_1","nodeType":"YulIdentifier","src":"3223:6:92"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"3216:3:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3238:27:92","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3258:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3252:5:92"},"nodeType":"YulFunctionCall","src":"3252:13:92"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"3242:6:92","type":""}]},{"expression":{"arguments":[{"name":"tail_1","nodeType":"YulIdentifier","src":"3281:6:92"},{"name":"length","nodeType":"YulIdentifier","src":"3289:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3274:6:92"},"nodeType":"YulFunctionCall","src":"3274:22:92"},"nodeType":"YulExpressionStatement","src":"3274:22:92"},{"nodeType":"YulAssignment","src":"3305:25:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3316:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3327:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3312:3:92"},"nodeType":"YulFunctionCall","src":"3312:18:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"3305:3:92"}]},{"nodeType":"YulVariableDeclaration","src":"3339:29:92","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3357:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"3365:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3353:3:92"},"nodeType":"YulFunctionCall","src":"3353:15:92"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"3343:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3377:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"3386:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"3381:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"3445:138:92","statements":[{"nodeType":"YulAssignment","src":"3459:76:92","value":{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"3522:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3516:5:92"},"nodeType":"YulFunctionCall","src":"3516:13:92"},{"name":"pos","nodeType":"YulIdentifier","src":"3531:3:92"}],"functionName":{"name":"abi_encodeUpdatedPos_struct_MultiTargetPermission","nodeType":"YulIdentifier","src":"3466:49:92"},"nodeType":"YulFunctionCall","src":"3466:69:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"3459:3:92"}]},{"nodeType":"YulAssignment","src":"3548:25:92","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"3562:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"3570:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3558:3:92"},"nodeType":"YulFunctionCall","src":"3558:15:92"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"3548:6:92"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3407:1:92"},{"name":"length","nodeType":"YulIdentifier","src":"3410:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"3404:2:92"},"nodeType":"YulFunctionCall","src":"3404:13:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"3418:18:92","statements":[{"nodeType":"YulAssignment","src":"3420:14:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3429:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"3432:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3425:3:92"},"nodeType":"YulFunctionCall","src":"3425:9:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"3420:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"3400:3:92","statements":[]},"src":"3396:187:92"},{"nodeType":"YulAssignment","src":"3592:11:92","value":{"name":"pos","nodeType":"YulIdentifier","src":"3600:3:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3592:4:92"}]}]},"name":"abi_encode_tuple_t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3079:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3090:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3101:4:92","type":""}],"src":"2879:730:92"},{"body":{"nodeType":"YulBlock","src":"3750:465:92","statements":[{"body":{"nodeType":"YulBlock","src":"3796:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3805:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3808:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3798:6:92"},"nodeType":"YulFunctionCall","src":"3798:12:92"},"nodeType":"YulExpressionStatement","src":"3798:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3771:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"3780:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3767:3:92"},"nodeType":"YulFunctionCall","src":"3767:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"3792:2:92","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3763:3:92"},"nodeType":"YulFunctionCall","src":"3763:32:92"},"nodeType":"YulIf","src":"3760:52:92"},{"nodeType":"YulAssignment","src":"3821:39:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3850:9:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"3831:18:92"},"nodeType":"YulFunctionCall","src":"3831:29:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3821:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"3869:45:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3899:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3910:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3895:3:92"},"nodeType":"YulFunctionCall","src":"3895:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3882:12:92"},"nodeType":"YulFunctionCall","src":"3882:32:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"3873:5:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"3964:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3973:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3976:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3966:6:92"},"nodeType":"YulFunctionCall","src":"3966:12:92"},"nodeType":"YulExpressionStatement","src":"3966:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3936:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3947:5:92"},{"kind":"number","nodeType":"YulLiteral","src":"3954:6:92","type":"","value":"0xffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3943:3:92"},"nodeType":"YulFunctionCall","src":"3943:18:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"3933:2:92"},"nodeType":"YulFunctionCall","src":"3933:29:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3926:6:92"},"nodeType":"YulFunctionCall","src":"3926:37:92"},"nodeType":"YulIf","src":"3923:57:92"},{"nodeType":"YulAssignment","src":"3989:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"3999:5:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"3989:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"4013:46:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4044:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4055:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4040:3:92"},"nodeType":"YulFunctionCall","src":"4040:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4027:12:92"},"nodeType":"YulFunctionCall","src":"4027:32:92"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4017:6:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"4102:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4111:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4114:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4104:6:92"},"nodeType":"YulFunctionCall","src":"4104:12:92"},"nodeType":"YulExpressionStatement","src":"4104:12:92"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"4074:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"4082:18:92","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4071:2:92"},"nodeType":"YulFunctionCall","src":"4071:30:92"},"nodeType":"YulIf","src":"4068:50:92"},{"nodeType":"YulAssignment","src":"4127:82:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4181:9:92"},{"name":"offset","nodeType":"YulIdentifier","src":"4192:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4177:3:92"},"nodeType":"YulFunctionCall","src":"4177:22:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4201:7:92"}],"functionName":{"name":"abi_decode_struct_SetupPayload_calldata","nodeType":"YulIdentifier","src":"4137:39:92"},"nodeType":"YulFunctionCall","src":"4137:72:92"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"4127:6:92"}]}]},"name":"abi_decode_tuple_t_addresst_uint16t_struct$_SetupPayload_$14224_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3700:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3711:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3723:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"3731:6:92","type":""},{"name":"value2","nodeType":"YulTypedName","src":"3739:6:92","type":""}],"src":"3614:601:92"},{"body":{"nodeType":"YulBlock","src":"4269:373:92","statements":[{"nodeType":"YulVariableDeclaration","src":"4279:26:92","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4299:5:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4293:5:92"},"nodeType":"YulFunctionCall","src":"4293:12:92"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"4283:6:92","type":""}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4321:3:92"},{"name":"length","nodeType":"YulIdentifier","src":"4326:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4314:6:92"},"nodeType":"YulFunctionCall","src":"4314:19:92"},"nodeType":"YulExpressionStatement","src":"4314:19:92"},{"nodeType":"YulVariableDeclaration","src":"4342:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"4351:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"4346:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"4413:110:92","statements":[{"nodeType":"YulVariableDeclaration","src":"4427:14:92","value":{"kind":"number","nodeType":"YulLiteral","src":"4437:4:92","type":"","value":"0x20"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"4431:2:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4469:3:92"},{"name":"i","nodeType":"YulIdentifier","src":"4474:1:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4465:3:92"},"nodeType":"YulFunctionCall","src":"4465:11:92"},{"name":"_1","nodeType":"YulIdentifier","src":"4478:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4461:3:92"},"nodeType":"YulFunctionCall","src":"4461:20:92"},{"arguments":[{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4497:5:92"},{"name":"i","nodeType":"YulIdentifier","src":"4504:1:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4493:3:92"},"nodeType":"YulFunctionCall","src":"4493:13:92"},{"name":"_1","nodeType":"YulIdentifier","src":"4508:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4489:3:92"},"nodeType":"YulFunctionCall","src":"4489:22:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4483:5:92"},"nodeType":"YulFunctionCall","src":"4483:29:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4454:6:92"},"nodeType":"YulFunctionCall","src":"4454:59:92"},"nodeType":"YulExpressionStatement","src":"4454:59:92"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"4372:1:92"},{"name":"length","nodeType":"YulIdentifier","src":"4375:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"4369:2:92"},"nodeType":"YulFunctionCall","src":"4369:13:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"4383:21:92","statements":[{"nodeType":"YulAssignment","src":"4385:17:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"4394:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"4397:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4390:3:92"},"nodeType":"YulFunctionCall","src":"4390:12:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"4385:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"4365:3:92","statements":[]},"src":"4361:162:92"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4547:3:92"},{"name":"length","nodeType":"YulIdentifier","src":"4552:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4543:3:92"},"nodeType":"YulFunctionCall","src":"4543:16:92"},{"kind":"number","nodeType":"YulLiteral","src":"4561:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4539:3:92"},"nodeType":"YulFunctionCall","src":"4539:27:92"},{"kind":"number","nodeType":"YulLiteral","src":"4568:1:92","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4532:6:92"},"nodeType":"YulFunctionCall","src":"4532:38:92"},"nodeType":"YulExpressionStatement","src":"4532:38:92"},{"nodeType":"YulAssignment","src":"4579:57:92","value":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4594:3:92"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"4607:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"4615:2:92","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4603:3:92"},"nodeType":"YulFunctionCall","src":"4603:15:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4624:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"4620:3:92"},"nodeType":"YulFunctionCall","src":"4620:7:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4599:3:92"},"nodeType":"YulFunctionCall","src":"4599:29:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4590:3:92"},"nodeType":"YulFunctionCall","src":"4590:39:92"},{"kind":"number","nodeType":"YulLiteral","src":"4631:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4586:3:92"},"nodeType":"YulFunctionCall","src":"4586:50:92"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"4579:3:92"}]}]},"name":"abi_encode_bytes","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"4246:5:92","type":""},{"name":"pos","nodeType":"YulTypedName","src":"4253:3:92","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"4261:3:92","type":""}],"src":"4220:422:92"},{"body":{"nodeType":"YulBlock","src":"4715:1094:92","statements":[{"nodeType":"YulVariableDeclaration","src":"4725:26:92","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4741:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"4746:4:92","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4737:3:92"},"nodeType":"YulFunctionCall","src":"4737:14:92"},"variables":[{"name":"tail","nodeType":"YulTypedName","src":"4729:4:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4760:32:92","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4786:5:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4780:5:92"},"nodeType":"YulFunctionCall","src":"4780:12:92"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"4764:12:92","type":""}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4808:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"4813:4:92","type":"","value":"0x40"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4801:6:92"},"nodeType":"YulFunctionCall","src":"4801:17:92"},"nodeType":"YulExpressionStatement","src":"4801:17:92"},{"nodeType":"YulVariableDeclaration","src":"4827:17:92","value":{"name":"tail","nodeType":"YulIdentifier","src":"4840:4:92"},"variables":[{"name":"pos_1","nodeType":"YulTypedName","src":"4831:5:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4853:33:92","value":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"4873:12:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4867:5:92"},"nodeType":"YulFunctionCall","src":"4867:19:92"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"4857:6:92","type":""}]},{"expression":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"4902:4:92"},{"name":"length","nodeType":"YulIdentifier","src":"4908:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4895:6:92"},"nodeType":"YulFunctionCall","src":"4895:20:92"},"nodeType":"YulExpressionStatement","src":"4895:20:92"},{"nodeType":"YulAssignment","src":"4924:21:92","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4937:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"4942:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4933:3:92"},"nodeType":"YulFunctionCall","src":"4933:12:92"},"variableNames":[{"name":"pos_1","nodeType":"YulIdentifier","src":"4924:5:92"}]},{"nodeType":"YulVariableDeclaration","src":"4954:14:92","value":{"kind":"number","nodeType":"YulLiteral","src":"4964:4:92","type":"","value":"0x20"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"4958:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4977:35:92","value":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"4995:12:92"},{"name":"_1","nodeType":"YulIdentifier","src":"5009:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4991:3:92"},"nodeType":"YulFunctionCall","src":"4991:21:92"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"4981:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5021:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"5030:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"5025:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"5089:175:92","statements":[{"expression":{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5110:5:92"},{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"5127:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5121:5:92"},"nodeType":"YulFunctionCall","src":"5121:13:92"},{"kind":"number","nodeType":"YulLiteral","src":"5136:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5117:3:92"},"nodeType":"YulFunctionCall","src":"5117:62:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5103:6:92"},"nodeType":"YulFunctionCall","src":"5103:77:92"},"nodeType":"YulExpressionStatement","src":"5103:77:92"},{"nodeType":"YulAssignment","src":"5193:23:92","value":{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5206:5:92"},{"name":"_1","nodeType":"YulIdentifier","src":"5213:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5202:3:92"},"nodeType":"YulFunctionCall","src":"5202:14:92"},"variableNames":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5193:5:92"}]},{"nodeType":"YulAssignment","src":"5229:25:92","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"5243:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"5251:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5239:3:92"},"nodeType":"YulFunctionCall","src":"5239:15:92"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"5229:6:92"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"5051:1:92"},{"name":"length","nodeType":"YulIdentifier","src":"5054:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"5048:2:92"},"nodeType":"YulFunctionCall","src":"5048:13:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"5062:18:92","statements":[{"nodeType":"YulAssignment","src":"5064:14:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"5073:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"5076:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5069:3:92"},"nodeType":"YulFunctionCall","src":"5069:9:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"5064:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"5044:3:92","statements":[]},"src":"5040:224:92"},{"nodeType":"YulVariableDeclaration","src":"5273:43:92","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5305:5:92"},{"name":"_1","nodeType":"YulIdentifier","src":"5312:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5301:3:92"},"nodeType":"YulFunctionCall","src":"5301:14:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5295:5:92"},"nodeType":"YulFunctionCall","src":"5295:21:92"},"variables":[{"name":"memberValue0_1","nodeType":"YulTypedName","src":"5277:14:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5336:3:92"},{"name":"_1","nodeType":"YulIdentifier","src":"5341:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5332:3:92"},"nodeType":"YulFunctionCall","src":"5332:12:92"},{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5350:5:92"},{"name":"pos","nodeType":"YulIdentifier","src":"5357:3:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5346:3:92"},"nodeType":"YulFunctionCall","src":"5346:15:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5325:6:92"},"nodeType":"YulFunctionCall","src":"5325:37:92"},"nodeType":"YulExpressionStatement","src":"5325:37:92"},{"nodeType":"YulVariableDeclaration","src":"5371:18:92","value":{"name":"pos_1","nodeType":"YulIdentifier","src":"5384:5:92"},"variables":[{"name":"pos_2","nodeType":"YulTypedName","src":"5375:5:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5398:37:92","value":{"arguments":[{"name":"memberValue0_1","nodeType":"YulIdentifier","src":"5420:14:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5414:5:92"},"nodeType":"YulFunctionCall","src":"5414:21:92"},"variables":[{"name":"length_1","nodeType":"YulTypedName","src":"5402:8:92","type":""}]},{"expression":{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5451:5:92"},{"name":"length_1","nodeType":"YulIdentifier","src":"5458:8:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5444:6:92"},"nodeType":"YulFunctionCall","src":"5444:23:92"},"nodeType":"YulExpressionStatement","src":"5444:23:92"},{"nodeType":"YulAssignment","src":"5476:23:92","value":{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5489:5:92"},{"name":"_1","nodeType":"YulIdentifier","src":"5496:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5485:3:92"},"nodeType":"YulFunctionCall","src":"5485:14:92"},"variableNames":[{"name":"pos_2","nodeType":"YulIdentifier","src":"5476:5:92"}]},{"nodeType":"YulVariableDeclaration","src":"5508:39:92","value":{"arguments":[{"name":"memberValue0_1","nodeType":"YulIdentifier","src":"5528:14:92"},{"name":"_1","nodeType":"YulIdentifier","src":"5544:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5524:3:92"},"nodeType":"YulFunctionCall","src":"5524:23:92"},"variables":[{"name":"srcPtr_1","nodeType":"YulTypedName","src":"5512:8:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5556:12:92","value":{"kind":"number","nodeType":"YulLiteral","src":"5567:1:92","type":"","value":"0"},"variables":[{"name":"i_1","nodeType":"YulTypedName","src":"5560:3:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"5634:148:92","statements":[{"nodeType":"YulAssignment","src":"5648:82:92","value":{"arguments":[{"arguments":[{"name":"srcPtr_1","nodeType":"YulIdentifier","src":"5713:8:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5707:5:92"},"nodeType":"YulFunctionCall","src":"5707:15:92"},{"name":"pos_2","nodeType":"YulIdentifier","src":"5724:5:92"}],"functionName":{"name":"abi_encodeUpdatedPos_struct_MultiTargetPermission","nodeType":"YulIdentifier","src":"5657:49:92"},"nodeType":"YulFunctionCall","src":"5657:73:92"},"variableNames":[{"name":"pos_2","nodeType":"YulIdentifier","src":"5648:5:92"}]},{"nodeType":"YulAssignment","src":"5743:29:92","value":{"arguments":[{"name":"srcPtr_1","nodeType":"YulIdentifier","src":"5759:8:92"},{"name":"_1","nodeType":"YulIdentifier","src":"5769:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5755:3:92"},"nodeType":"YulFunctionCall","src":"5755:17:92"},"variableNames":[{"name":"srcPtr_1","nodeType":"YulIdentifier","src":"5743:8:92"}]}]},"condition":{"arguments":[{"name":"i_1","nodeType":"YulIdentifier","src":"5588:3:92"},{"name":"length_1","nodeType":"YulIdentifier","src":"5593:8:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"5585:2:92"},"nodeType":"YulFunctionCall","src":"5585:17:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"5603:22:92","statements":[{"nodeType":"YulAssignment","src":"5605:18:92","value":{"arguments":[{"name":"i_1","nodeType":"YulIdentifier","src":"5616:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"5621:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5612:3:92"},"nodeType":"YulFunctionCall","src":"5612:11:92"},"variableNames":[{"name":"i_1","nodeType":"YulIdentifier","src":"5605:3:92"}]}]},"pre":{"nodeType":"YulBlock","src":"5581:3:92","statements":[]},"src":"5577:205:92"},{"nodeType":"YulAssignment","src":"5791:12:92","value":{"name":"pos_2","nodeType":"YulIdentifier","src":"5798:5:92"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"5791:3:92"}]}]},"name":"abi_encode_struct_PreparedSetupData","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"4692:5:92","type":""},{"name":"pos","nodeType":"YulTypedName","src":"4699:3:92","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"4707:3:92","type":""}],"src":"4647:1162:92"},{"body":{"nodeType":"YulBlock","src":"6033:231:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6050:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6061:2:92","type":"","value":"64"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6043:6:92"},"nodeType":"YulFunctionCall","src":"6043:21:92"},"nodeType":"YulExpressionStatement","src":"6043:21:92"},{"nodeType":"YulVariableDeclaration","src":"6073:58:92","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6104:6:92"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6116:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6127:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6112:3:92"},"nodeType":"YulFunctionCall","src":"6112:18:92"}],"functionName":{"name":"abi_encode_bytes","nodeType":"YulIdentifier","src":"6087:16:92"},"nodeType":"YulFunctionCall","src":"6087:44:92"},"variables":[{"name":"tail_1","nodeType":"YulTypedName","src":"6077:6:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6151:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6162:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6147:3:92"},"nodeType":"YulFunctionCall","src":"6147:18:92"},{"arguments":[{"name":"tail_1","nodeType":"YulIdentifier","src":"6171:6:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"6179:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6167:3:92"},"nodeType":"YulFunctionCall","src":"6167:22:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6140:6:92"},"nodeType":"YulFunctionCall","src":"6140:50:92"},"nodeType":"YulExpressionStatement","src":"6140:50:92"},{"nodeType":"YulAssignment","src":"6199:59:92","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"6243:6:92"},{"name":"tail_1","nodeType":"YulIdentifier","src":"6251:6:92"}],"functionName":{"name":"abi_encode_struct_PreparedSetupData","nodeType":"YulIdentifier","src":"6207:35:92"},"nodeType":"YulFunctionCall","src":"6207:51:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6199:4:92"}]}]},"name":"abi_encode_tuple_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$14216_memory_ptr__to_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$14216_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5994:9:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"6005:6:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"6013:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6024:4:92","type":""}],"src":"5814:450:92"},{"body":{"nodeType":"YulBlock","src":"6301:95:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6318:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6325:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"6330:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"6321:3:92"},"nodeType":"YulFunctionCall","src":"6321:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6311:6:92"},"nodeType":"YulFunctionCall","src":"6311:31:92"},"nodeType":"YulExpressionStatement","src":"6311:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6358:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"6361:4:92","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6351:6:92"},"nodeType":"YulFunctionCall","src":"6351:15:92"},"nodeType":"YulExpressionStatement","src":"6351:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6382:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6385:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6375:6:92"},"nodeType":"YulFunctionCall","src":"6375:15:92"},"nodeType":"YulExpressionStatement","src":"6375:15:92"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"6269:127:92"},{"body":{"nodeType":"YulBlock","src":"6497:899:92","statements":[{"body":{"nodeType":"YulBlock","src":"6543:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6552:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6555:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6545:6:92"},"nodeType":"YulFunctionCall","src":"6545:12:92"},"nodeType":"YulExpressionStatement","src":"6545:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"6518:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"6527:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6514:3:92"},"nodeType":"YulFunctionCall","src":"6514:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"6539:2:92","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6510:3:92"},"nodeType":"YulFunctionCall","src":"6510:32:92"},"nodeType":"YulIf","src":"6507:52:92"},{"nodeType":"YulAssignment","src":"6568:39:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6597:9:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"6578:18:92"},"nodeType":"YulFunctionCall","src":"6578:29:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"6568:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"6616:46:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6647:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6658:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6643:3:92"},"nodeType":"YulFunctionCall","src":"6643:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6630:12:92"},"nodeType":"YulFunctionCall","src":"6630:32:92"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"6620:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"6671:28:92","value":{"kind":"number","nodeType":"YulLiteral","src":"6681:18:92","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"6675:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"6726:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6735:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6738:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6728:6:92"},"nodeType":"YulFunctionCall","src":"6728:12:92"},"nodeType":"YulExpressionStatement","src":"6728:12:92"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"6714:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"6722:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6711:2:92"},"nodeType":"YulFunctionCall","src":"6711:14:92"},"nodeType":"YulIf","src":"6708:34:92"},{"nodeType":"YulVariableDeclaration","src":"6751:32:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6765:9:92"},{"name":"offset","nodeType":"YulIdentifier","src":"6776:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6761:3:92"},"nodeType":"YulFunctionCall","src":"6761:22:92"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"6755:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"6831:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6840:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6843:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6833:6:92"},"nodeType":"YulFunctionCall","src":"6833:12:92"},"nodeType":"YulExpressionStatement","src":"6833:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"6810:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"6814:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6806:3:92"},"nodeType":"YulFunctionCall","src":"6806:13:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"6821:7:92"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6802:3:92"},"nodeType":"YulFunctionCall","src":"6802:27:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"6795:6:92"},"nodeType":"YulFunctionCall","src":"6795:35:92"},"nodeType":"YulIf","src":"6792:55:92"},{"nodeType":"YulVariableDeclaration","src":"6856:26:92","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"6879:2:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6866:12:92"},"nodeType":"YulFunctionCall","src":"6866:16:92"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"6860:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"6905:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"6907:16:92"},"nodeType":"YulFunctionCall","src":"6907:18:92"},"nodeType":"YulExpressionStatement","src":"6907:18:92"}]},"condition":{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"6897:2:92"},{"name":"_1","nodeType":"YulIdentifier","src":"6901:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6894:2:92"},"nodeType":"YulFunctionCall","src":"6894:10:92"},"nodeType":"YulIf","src":"6891:36:92"},{"nodeType":"YulVariableDeclaration","src":"6936:17:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6950:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"6946:3:92"},"nodeType":"YulFunctionCall","src":"6946:7:92"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"6940:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"6962:23:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6982:2:92","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6976:5:92"},"nodeType":"YulFunctionCall","src":"6976:9:92"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"6966:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"6994:71:92","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7016:6:92"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"7040:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"7044:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7036:3:92"},"nodeType":"YulFunctionCall","src":"7036:13:92"},{"name":"_4","nodeType":"YulIdentifier","src":"7051:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7032:3:92"},"nodeType":"YulFunctionCall","src":"7032:22:92"},{"kind":"number","nodeType":"YulLiteral","src":"7056:2:92","type":"","value":"63"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7028:3:92"},"nodeType":"YulFunctionCall","src":"7028:31:92"},{"name":"_4","nodeType":"YulIdentifier","src":"7061:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7024:3:92"},"nodeType":"YulFunctionCall","src":"7024:40:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7012:3:92"},"nodeType":"YulFunctionCall","src":"7012:53:92"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"6998:10:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"7124:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"7126:16:92"},"nodeType":"YulFunctionCall","src":"7126:18:92"},"nodeType":"YulExpressionStatement","src":"7126:18:92"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"7083:10:92"},{"name":"_1","nodeType":"YulIdentifier","src":"7095:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"7080:2:92"},"nodeType":"YulFunctionCall","src":"7080:18:92"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"7103:10:92"},{"name":"memPtr","nodeType":"YulIdentifier","src":"7115:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"7100:2:92"},"nodeType":"YulFunctionCall","src":"7100:22:92"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"7077:2:92"},"nodeType":"YulFunctionCall","src":"7077:46:92"},"nodeType":"YulIf","src":"7074:72:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7162:2:92","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"7166:10:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7155:6:92"},"nodeType":"YulFunctionCall","src":"7155:22:92"},"nodeType":"YulExpressionStatement","src":"7155:22:92"},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7193:6:92"},{"name":"_3","nodeType":"YulIdentifier","src":"7201:2:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7186:6:92"},"nodeType":"YulFunctionCall","src":"7186:18:92"},"nodeType":"YulExpressionStatement","src":"7186:18:92"},{"body":{"nodeType":"YulBlock","src":"7250:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7259:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7262:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7252:6:92"},"nodeType":"YulFunctionCall","src":"7252:12:92"},"nodeType":"YulExpressionStatement","src":"7252:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"7227:2:92"},{"name":"_3","nodeType":"YulIdentifier","src":"7231:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7223:3:92"},"nodeType":"YulFunctionCall","src":"7223:11:92"},{"kind":"number","nodeType":"YulLiteral","src":"7236:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7219:3:92"},"nodeType":"YulFunctionCall","src":"7219:20:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"7241:7:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"7216:2:92"},"nodeType":"YulFunctionCall","src":"7216:33:92"},"nodeType":"YulIf","src":"7213:53:92"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7292:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"7300:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7288:3:92"},"nodeType":"YulFunctionCall","src":"7288:15:92"},{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"7309:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"7313:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7305:3:92"},"nodeType":"YulFunctionCall","src":"7305:11:92"},{"name":"_3","nodeType":"YulIdentifier","src":"7318:2:92"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"7275:12:92"},"nodeType":"YulFunctionCall","src":"7275:46:92"},"nodeType":"YulExpressionStatement","src":"7275:46:92"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7345:6:92"},{"name":"_3","nodeType":"YulIdentifier","src":"7353:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7341:3:92"},"nodeType":"YulFunctionCall","src":"7341:15:92"},{"kind":"number","nodeType":"YulLiteral","src":"7358:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7337:3:92"},"nodeType":"YulFunctionCall","src":"7337:24:92"},{"kind":"number","nodeType":"YulLiteral","src":"7363:1:92","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7330:6:92"},"nodeType":"YulFunctionCall","src":"7330:35:92"},"nodeType":"YulExpressionStatement","src":"7330:35:92"},{"nodeType":"YulAssignment","src":"7374:16:92","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"7384:6:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"7374:6:92"}]}]},"name":"abi_decode_tuple_t_addresst_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6455:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"6466:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"6478:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"6486:6:92","type":""}],"src":"6401:995:92"},{"body":{"nodeType":"YulBlock","src":"7602:209:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7619:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7634:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"7642:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7630:3:92"},"nodeType":"YulFunctionCall","src":"7630:55:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7612:6:92"},"nodeType":"YulFunctionCall","src":"7612:74:92"},"nodeType":"YulExpressionStatement","src":"7612:74:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7706:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7717:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7702:3:92"},"nodeType":"YulFunctionCall","src":"7702:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"7722:2:92","type":"","value":"64"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7695:6:92"},"nodeType":"YulFunctionCall","src":"7695:30:92"},"nodeType":"YulExpressionStatement","src":"7695:30:92"},{"nodeType":"YulAssignment","src":"7734:71:92","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"7778:6:92"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7790:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7801:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7786:3:92"},"nodeType":"YulFunctionCall","src":"7786:18:92"}],"functionName":{"name":"abi_encode_struct_PreparedSetupData","nodeType":"YulIdentifier","src":"7742:35:92"},"nodeType":"YulFunctionCall","src":"7742:63:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7734:4:92"}]}]},"name":"abi_encode_tuple_t_address_t_struct$_PreparedSetupData_$14216_memory_ptr__to_t_address_t_struct$_PreparedSetupData_$14216_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7563:9:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"7574:6:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"7582:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7593:4:92","type":""}],"src":"7401:410:92"},{"body":{"nodeType":"YulBlock","src":"7915:89:92","statements":[{"nodeType":"YulAssignment","src":"7925:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7937:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7948:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7933:3:92"},"nodeType":"YulFunctionCall","src":"7933:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7925:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7967:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7982:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"7990:6:92","type":"","value":"0xffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7978:3:92"},"nodeType":"YulFunctionCall","src":"7978:19:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7960:6:92"},"nodeType":"YulFunctionCall","src":"7960:38:92"},"nodeType":"YulExpressionStatement","src":"7960:38:92"}]},"name":"abi_encode_tuple_t_uint16__to_t_uint16__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7884:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"7895:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7906:4:92","type":""}],"src":"7816:188:92"},{"body":{"nodeType":"YulBlock","src":"8124:125:92","statements":[{"nodeType":"YulAssignment","src":"8134:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8146:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8157:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8142:3:92"},"nodeType":"YulFunctionCall","src":"8142:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"8134:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8176:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"8191:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"8199:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8187:3:92"},"nodeType":"YulFunctionCall","src":"8187:55:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8169:6:92"},"nodeType":"YulFunctionCall","src":"8169:74:92"},"nodeType":"YulExpressionStatement","src":"8169:74:92"}]},"name":"abi_encode_tuple_t_contract$_IDAO_$10865__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8093:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"8104:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"8115:4:92","type":""}],"src":"8009:240:92"},{"body":{"nodeType":"YulBlock","src":"8286:95:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8303:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8310:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"8315:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"8306:3:92"},"nodeType":"YulFunctionCall","src":"8306:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8296:6:92"},"nodeType":"YulFunctionCall","src":"8296:31:92"},"nodeType":"YulExpressionStatement","src":"8296:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8343:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"8346:4:92","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8336:6:92"},"nodeType":"YulFunctionCall","src":"8336:15:92"},"nodeType":"YulExpressionStatement","src":"8336:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8367:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8370:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8360:6:92"},"nodeType":"YulFunctionCall","src":"8360:15:92"},"nodeType":"YulExpressionStatement","src":"8360:15:92"}]},"name":"panic_error_0x11","nodeType":"YulFunctionDefinition","src":"8254:127:92"},{"body":{"nodeType":"YulBlock","src":"8435:159:92","statements":[{"nodeType":"YulVariableDeclaration","src":"8445:52:92","value":{"kind":"number","nodeType":"YulLiteral","src":"8455:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"8449:2:92","type":""}]},{"nodeType":"YulAssignment","src":"8506:35:92","value":{"arguments":[{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"8522:1:92"},{"name":"_1","nodeType":"YulIdentifier","src":"8525:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8518:3:92"},"nodeType":"YulFunctionCall","src":"8518:10:92"},{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"8534:1:92"},{"name":"_1","nodeType":"YulIdentifier","src":"8537:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8530:3:92"},"nodeType":"YulFunctionCall","src":"8530:10:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"8514:3:92"},"nodeType":"YulFunctionCall","src":"8514:27:92"},"variableNames":[{"name":"diff","nodeType":"YulIdentifier","src":"8506:4:92"}]},{"body":{"nodeType":"YulBlock","src":"8566:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"8568:16:92"},"nodeType":"YulFunctionCall","src":"8568:18:92"},"nodeType":"YulExpressionStatement","src":"8568:18:92"}]},"condition":{"arguments":[{"name":"diff","nodeType":"YulIdentifier","src":"8556:4:92"},{"name":"_1","nodeType":"YulIdentifier","src":"8562:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"8553:2:92"},"nodeType":"YulFunctionCall","src":"8553:12:92"},"nodeType":"YulIf","src":"8550:38:92"}]},"name":"checked_sub_t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"8417:1:92","type":""},{"name":"y","nodeType":"YulTypedName","src":"8420:1:92","type":""}],"returnVariables":[{"name":"diff","nodeType":"YulTypedName","src":"8426:4:92","type":""}],"src":"8386:208:92"},{"body":{"nodeType":"YulBlock","src":"8631:95:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8648:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8655:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"8660:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"8651:3:92"},"nodeType":"YulFunctionCall","src":"8651:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8641:6:92"},"nodeType":"YulFunctionCall","src":"8641:31:92"},"nodeType":"YulExpressionStatement","src":"8641:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8688:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"8691:4:92","type":"","value":"0x32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8681:6:92"},"nodeType":"YulFunctionCall","src":"8681:15:92"},"nodeType":"YulExpressionStatement","src":"8681:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8712:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8715:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8705:6:92"},"nodeType":"YulFunctionCall","src":"8705:15:92"},"nodeType":"YulExpressionStatement","src":"8705:15:92"}]},"name":"panic_error_0x32","nodeType":"YulFunctionDefinition","src":"8599:127:92"},{"body":{"nodeType":"YulBlock","src":"8778:187:92","statements":[{"nodeType":"YulVariableDeclaration","src":"8788:52:92","value":{"kind":"number","nodeType":"YulLiteral","src":"8798:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"8792:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"8849:29:92","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8868:5:92"},{"name":"_1","nodeType":"YulIdentifier","src":"8875:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8864:3:92"},"nodeType":"YulFunctionCall","src":"8864:14:92"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"8853:7:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"8906:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"8908:16:92"},"nodeType":"YulFunctionCall","src":"8908:18:92"},"nodeType":"YulExpressionStatement","src":"8908:18:92"}]},"condition":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"8893:7:92"},{"name":"_1","nodeType":"YulIdentifier","src":"8902:2:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"8890:2:92"},"nodeType":"YulFunctionCall","src":"8890:15:92"},"nodeType":"YulIf","src":"8887:41:92"},{"nodeType":"YulAssignment","src":"8937:22:92","value":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"8948:7:92"},{"kind":"number","nodeType":"YulLiteral","src":"8957:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8944:3:92"},"nodeType":"YulFunctionCall","src":"8944:15:92"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"8937:3:92"}]}]},"name":"increment_t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"8760:5:92","type":""}],"returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"8770:3:92","type":""}],"src":"8731:234:92"},{"body":{"nodeType":"YulBlock","src":"9117:190:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9134:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"9149:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"9157:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"9145:3:92"},"nodeType":"YulFunctionCall","src":"9145:55:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9127:6:92"},"nodeType":"YulFunctionCall","src":"9127:74:92"},"nodeType":"YulExpressionStatement","src":"9127:74:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9221:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9232:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9217:3:92"},"nodeType":"YulFunctionCall","src":"9217:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"9237:2:92","type":"","value":"64"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9210:6:92"},"nodeType":"YulFunctionCall","src":"9210:30:92"},"nodeType":"YulExpressionStatement","src":"9210:30:92"},{"nodeType":"YulAssignment","src":"9249:52:92","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"9274:6:92"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9286:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9297:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9282:3:92"},"nodeType":"YulFunctionCall","src":"9282:18:92"}],"functionName":{"name":"abi_encode_bytes","nodeType":"YulIdentifier","src":"9257:16:92"},"nodeType":"YulFunctionCall","src":"9257:44:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"9249:4:92"}]}]},"name":"abi_encode_tuple_t_address_t_bytes_memory_ptr__to_t_address_t_bytes_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9078:9:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"9089:6:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"9097:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"9108:4:92","type":""}],"src":"8970:337:92"}]},"contents":"{\n { }\n function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n if iszero(eq(value, and(value, shl(224, 0xffffffff)))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 96)\n let pos := headStart\n pos := headStart\n let srcPtr := value0\n let i := 0\n for { } lt(i, 0x03) { i := add(i, 1) }\n {\n mstore(pos, and(mload(srcPtr), 0xff))\n let _1 := 0x20\n pos := add(pos, _1)\n srcPtr := add(srcPtr, _1)\n }\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_decode_address(offset) -> value\n {\n value := calldataload(offset)\n if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n }\n function abi_decode_struct_SetupPayload_calldata(offset, end) -> value\n {\n if slt(sub(end, offset), 96) { revert(0, 0) }\n value := offset\n }\n function abi_decode_tuple_t_addresst_struct$_SetupPayload_$14224_calldata_ptr(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n let offset := calldataload(add(headStart, 32))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n value1 := abi_decode_struct_SetupPayload_calldata(add(headStart, offset), dataEnd)\n }\n function panic_error_0x21()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x21)\n revert(0, 0x24)\n }\n function abi_encodeUpdatedPos_struct_MultiTargetPermission(value0, pos) -> updatedPos\n {\n let _1 := mload(value0)\n if iszero(lt(_1, 3))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x21)\n revert(0, 0x24)\n }\n mstore(pos, _1)\n let memberValue0 := mload(add(value0, 0x20))\n let _2 := 0xffffffffffffffffffffffffffffffffffffffff\n mstore(add(pos, 0x20), and(memberValue0, _2))\n mstore(add(pos, 0x40), and(mload(add(value0, 0x40)), _2))\n mstore(add(pos, 0x60), and(mload(add(value0, 0x60)), _2))\n mstore(add(pos, 0x80), mload(add(value0, 0x80)))\n updatedPos := add(pos, 0xa0)\n }\n function abi_encode_tuple_t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n let _1 := 32\n let tail_1 := add(headStart, _1)\n mstore(headStart, _1)\n let pos := tail_1\n let length := mload(value0)\n mstore(tail_1, length)\n pos := add(headStart, 64)\n let srcPtr := add(value0, _1)\n let i := 0\n for { } lt(i, length) { i := add(i, 1) }\n {\n pos := abi_encodeUpdatedPos_struct_MultiTargetPermission(mload(srcPtr), pos)\n srcPtr := add(srcPtr, _1)\n }\n tail := pos\n }\n function abi_decode_tuple_t_addresst_uint16t_struct$_SetupPayload_$14224_calldata_ptr(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n let value := calldataload(add(headStart, 32))\n if iszero(eq(value, and(value, 0xffff))) { revert(0, 0) }\n value1 := value\n let offset := calldataload(add(headStart, 64))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n value2 := abi_decode_struct_SetupPayload_calldata(add(headStart, offset), dataEnd)\n }\n function abi_encode_bytes(value, pos) -> end\n {\n let length := mload(value)\n mstore(pos, length)\n let i := 0\n for { } lt(i, length) { i := add(i, 0x20) }\n {\n let _1 := 0x20\n mstore(add(add(pos, i), _1), mload(add(add(value, i), _1)))\n }\n mstore(add(add(pos, length), 0x20), 0)\n end := add(add(pos, and(add(length, 31), not(31))), 0x20)\n }\n function abi_encode_struct_PreparedSetupData(value, pos) -> end\n {\n let tail := add(pos, 0x40)\n let memberValue0 := mload(value)\n mstore(pos, 0x40)\n let pos_1 := tail\n let length := mload(memberValue0)\n mstore(tail, length)\n pos_1 := add(pos, 96)\n let _1 := 0x20\n let srcPtr := add(memberValue0, _1)\n let i := 0\n for { } lt(i, length) { i := add(i, 1) }\n {\n mstore(pos_1, and(mload(srcPtr), 0xffffffffffffffffffffffffffffffffffffffff))\n pos_1 := add(pos_1, _1)\n srcPtr := add(srcPtr, _1)\n }\n let memberValue0_1 := mload(add(value, _1))\n mstore(add(pos, _1), sub(pos_1, pos))\n let pos_2 := pos_1\n let length_1 := mload(memberValue0_1)\n mstore(pos_1, length_1)\n pos_2 := add(pos_1, _1)\n let srcPtr_1 := add(memberValue0_1, _1)\n let i_1 := 0\n for { } lt(i_1, length_1) { i_1 := add(i_1, 1) }\n {\n pos_2 := abi_encodeUpdatedPos_struct_MultiTargetPermission(mload(srcPtr_1), pos_2)\n srcPtr_1 := add(srcPtr_1, _1)\n }\n end := pos_2\n }\n function abi_encode_tuple_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$14216_memory_ptr__to_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$14216_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n {\n mstore(headStart, 64)\n let tail_1 := abi_encode_bytes(value0, add(headStart, 64))\n mstore(add(headStart, 32), sub(tail_1, headStart))\n tail := abi_encode_struct_PreparedSetupData(value1, tail_1)\n }\n function panic_error_0x41()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function abi_decode_tuple_t_addresst_bytes_memory_ptr(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n let offset := calldataload(add(headStart, 32))\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n let _2 := add(headStart, offset)\n if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n let _3 := calldataload(_2)\n if gt(_3, _1) { panic_error_0x41() }\n let _4 := not(31)\n let memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n mstore(memPtr, _3)\n if gt(add(add(_2, _3), 32), dataEnd) { revert(0, 0) }\n calldatacopy(add(memPtr, 32), add(_2, 32), _3)\n mstore(add(add(memPtr, _3), 32), 0)\n value1 := memPtr\n }\n function abi_encode_tuple_t_address_t_struct$_PreparedSetupData_$14216_memory_ptr__to_t_address_t_struct$_PreparedSetupData_$14216_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n {\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n mstore(add(headStart, 32), 64)\n tail := abi_encode_struct_PreparedSetupData(value1, add(headStart, 64))\n }\n function abi_encode_tuple_t_uint16__to_t_uint16__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffff))\n }\n function abi_encode_tuple_t_contract$_IDAO_$10865__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function panic_error_0x11()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n function checked_sub_t_uint160(x, y) -> diff\n {\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n diff := sub(and(x, _1), and(y, _1))\n if gt(diff, _1) { panic_error_0x11() }\n }\n function panic_error_0x32()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n function increment_t_uint160(value) -> ret\n {\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n let value_1 := and(value, _1)\n if eq(value_1, _1) { panic_error_0x11() }\n ret := add(value_1, 1)\n }\n function abi_encode_tuple_t_address_t_bytes_memory_ptr__to_t_address_t_bytes_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n {\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n mstore(add(headStart, 32), 64)\n tail := abi_encode_bytes(value1, add(headStart, 64))\n }\n}","id":92,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{"14391":[{"length":32,"start":210},{"length":32,"start":894}]},"linkReferences":{},"object":"60806040523480156200001157600080fd5b50600436106200007b5760003560e01c80639cb0a12411620000565780639cb0a12414620000fd578063a8a9c29e1462000123578063f10832f1146200014a57600080fd5b806301ffc9a714620000805780632ae9c60014620000ac5780635c60da1b14620000c5575b600080fd5b6200009762000091366004620006a3565b62000171565b60405190151581526020015b60405180910390f35b620000b6620001c4565b604051620000a39190620006cf565b6040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152602001620000a3565b620001146200010e36600462000735565b620001f0565b604051620000a3919062000806565b6200013a6200013436600462000853565b62000209565b604051620000a3929190620009a2565b620001616200015b366004620009ea565b6200030f565b604051620000a392919062000ab8565b60006001600160e01b0319821663099718b560e41b1480620001a257506001600160e01b03198216621574e360e91b145b80620001be57506301ffc9a760e01b6001600160e01b03198316145b92915050565b620001ce62000677565b5060408051606081018252600181526004602082015260009181019190915290565b606062000202600060036001620003de565b9392505050565b606062000229604051806040016040528060608152602001606081525090565b8361ffff16600103620002985762000242600362000577565b815260405161ffff8516602482015260440160408051601f198184030181529190526020810180516001600160e01b03166239a8c560e41b17905291506200029261ffff851660036000620003de565b60208201525b8361ffff166002036200030757620002b1600362000577565b815260405161ffff8516602482015260440160408051601f198184030181529190526020810180516001600160e01b03166239a8c560e41b17905291506200030161ffff851660036000620003de565b60208201525b935093915050565b60006200032f604051806040016040528060608152602001606081525090565b6040516001600160a01b038516602482015260009060440160408051601f198184030181529190526020810180516001600160e01b031663189acdbd60e31b1790529050620003b081620003a07f000000000000000000000000000000000000000000000000000000000000000090565b6001600160a01b0316906200063b565b9250620003be600362000577565b8252620003cf6000600381620003de565b60208301525090939092509050565b6060826001600160a01b0316846001600160a01b031611156200041457604051633a4013cd60e21b815260040160405180910390fd5b62000420848462000afa565b6001600160a01b031667ffffffffffffffff811115620004445762000444620009d4565b6040519080825280602002602001820160405280156200049f57816020015b6040805160a081018252600080825260208083018290529282018190526060820181905260808201528252600019909201910181620004635790505b509050835b836001600160a01b0316816001600160a01b031610156200056f576040518060a00160405280846002811115620004df57620004df62000789565b81526001600160a01b038316602082018190526040820152600060608201527fa280eec51ab8e1bc4b6b0c1b7f1bde785761b787a49db404e3e9338ed9b016ef6080909101528262000532878462000afa565b6001600160a01b0316815181106200054e576200054e62000b24565b60200260200101819052508080620005669062000b3a565b915050620004a4565b509392505050565b6060816001600160a01b031667ffffffffffffffff8111156200059e576200059e620009d4565b604051908082528060200260200182016040528015620005c8578160200160208202803683370190505b50905060005b826001600160a01b0316816001600160a01b0316101562000635578082826001600160a01b03168151811062000608576200060862000b24565b6001600160a01b0390921660209283029190910190910152806200062c8162000b3a565b915050620005ce565b50919050565b600082826040516200064d9062000695565b6200065a92919062000b63565b604051809103906000f0801580156200056f573d6000803e3d6000fd5b60405180606001604052806003906020820280368337509192915050565b6106fe8062000b8883390190565b600060208284031215620006b657600080fd5b81356001600160e01b0319811681146200020257600080fd5b60608101818360005b6003811015620006fc57815160ff16835260209283019290910190600101620006d8565b50505092915050565b80356001600160a01b03811681146200071d57600080fd5b919050565b6000606082840312156200063557600080fd5b600080604083850312156200074957600080fd5b620007548362000705565b9150602083013567ffffffffffffffff8111156200077157600080fd5b6200077f8582860162000722565b9150509250929050565b634e487b7160e01b600052602160045260246000fd5b6000815160038110620007c257634e487b7160e01b600052602160045260246000fd5b8352506020818101516001600160a01b0390811691840191909152604080830151821690840152606080830151909116908301526080908101519082015260a00190565b6020808252825182820181905260009190848201906040850190845b818110156200084757620008388385516200079f565b93850193925060010162000822565b50909695505050505050565b6000806000606084860312156200086957600080fd5b620008748462000705565b9250602084013561ffff811681146200088c57600080fd5b9150604084013567ffffffffffffffff811115620008a957600080fd5b620008b78682870162000722565b9150509250925092565b6000815180845260005b81811015620008e957602081850181015186830182015201620008cb565b506000602082860101526020601f19601f83011685010191505092915050565b805160408084528151908401819052600091602091908201906060860190845b81811015620009505783516001600160a01b03168352928401929184019160010162000929565b50508483015186820387850152805180835290840192506000918401905b808310156200099757620009848285516200079f565b915084840193506001830192506200096e565b509695505050505050565b604081526000620009b76040830185620008c1565b8281036020840152620009cb818562000909565b95945050505050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215620009fe57600080fd5b62000a098362000705565b9150602083013567ffffffffffffffff8082111562000a2757600080fd5b818501915085601f83011262000a3c57600080fd5b81358181111562000a515762000a51620009d4565b604051601f8201601f19908116603f0116810190838211818310171562000a7c5762000a7c620009d4565b8160405282815288602084870101111562000a9657600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6001600160a01b038316815260406020820152600062000adc604083018462000909565b949350505050565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0382811682821603908082111562000b1d5762000b1d62000ae4565b5092915050565b634e487b7160e01b600052603260045260246000fd5b60006001600160a01b0380831681810362000b595762000b5962000ae4565b6001019392505050565b6001600160a01b038316815260406020820152600062000adc6040830184620008c156fe60806040526040516106fe3803806106fe83398101604081905261002291610319565b61002e82826000610035565b5050610436565b61003e8361006b565b60008251118061004b5750805b156100665761006483836100ab60201b6100291760201c565b505b505050565b610074816100d7565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606100d083836040518060600160405280602781526020016106d7602791396101a9565b9392505050565b6100ea8161022260201b6100551760201c565b6101515760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b806101887f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61023160201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6060600080856001600160a01b0316856040516101c691906103e7565b600060405180830381855af49150503d8060008114610201576040519150601f19603f3d011682016040523d82523d6000602084013e610206565b606091505b50909250905061021886838387610234565b9695505050505050565b6001600160a01b03163b151590565b90565b606083156102a357825160000361029c576001600160a01b0385163b61029c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610148565b50816102ad565b6102ad83836102b5565b949350505050565b8151156102c55781518083602001fd5b8060405162461bcd60e51b81526004016101489190610403565b634e487b7160e01b600052604160045260246000fd5b60005b838110156103105781810151838201526020016102f8565b50506000910152565b6000806040838503121561032c57600080fd5b82516001600160a01b038116811461034357600080fd5b60208401519092506001600160401b038082111561036057600080fd5b818501915085601f83011261037457600080fd5b815181811115610386576103866102df565b604051601f8201601f19908116603f011681019083821181831017156103ae576103ae6102df565b816040528281528860208487010111156103c757600080fd5b6103d88360208301602088016102f5565b80955050505050509250929050565b600082516103f98184602087016102f5565b9190910192915050565b60208152600082518060208401526104228160408501602087016102f5565b601f01601f19169190910160400192915050565b610292806104456000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b61009f565b565b606061004e838360405180606001604052806027815260200161025f602791396100c3565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e8080156100be573d6000f35b3d6000fd5b6060600080856001600160a01b0316856040516100e0919061020f565b600060405180830381855af49150503d806000811461011b576040519150601f19603f3d011682016040523d82523d6000602084013e610120565b606091505b50915091506101318683838761013b565b9695505050505050565b606083156101af5782516000036101a8576001600160a01b0385163b6101a85760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b50816101b9565b6101b983836101c1565b949350505050565b8151156101d15781518083602001fd5b8060405162461bcd60e51b815260040161019f919061022b565b60005b838110156102065781810151838201526020016101ee565b50506000910152565b600082516102218184602087016101eb565b9190910192915050565b602081526000825180602084015261024a8160408501602087016101eb565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH3 0x7B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9CB0A124 GT PUSH3 0x56 JUMPI DUP1 PUSH4 0x9CB0A124 EQ PUSH3 0xFD JUMPI DUP1 PUSH4 0xA8A9C29E EQ PUSH3 0x123 JUMPI DUP1 PUSH4 0xF10832F1 EQ PUSH3 0x14A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH3 0x80 JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH3 0xAC JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH3 0xC5 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x97 PUSH3 0x91 CALLDATASIZE PUSH1 0x4 PUSH3 0x6A3 JUMP JUMPDEST PUSH3 0x171 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0xB6 PUSH3 0x1C4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0xA3 SWAP2 SWAP1 PUSH3 0x6CF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH3 0xA3 JUMP JUMPDEST PUSH3 0x114 PUSH3 0x10E CALLDATASIZE PUSH1 0x4 PUSH3 0x735 JUMP JUMPDEST PUSH3 0x1F0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0xA3 SWAP2 SWAP1 PUSH3 0x806 JUMP JUMPDEST PUSH3 0x13A PUSH3 0x134 CALLDATASIZE PUSH1 0x4 PUSH3 0x853 JUMP JUMPDEST PUSH3 0x209 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0xA3 SWAP3 SWAP2 SWAP1 PUSH3 0x9A2 JUMP JUMPDEST PUSH3 0x161 PUSH3 0x15B CALLDATASIZE PUSH1 0x4 PUSH3 0x9EA JUMP JUMPDEST PUSH3 0x30F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0xA3 SWAP3 SWAP2 SWAP1 PUSH3 0xAB8 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x99718B5 PUSH1 0xE4 SHL EQ DUP1 PUSH3 0x1A2 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH3 0x1BE JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH3 0x1CE PUSH3 0x677 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH3 0x202 PUSH1 0x0 PUSH1 0x3 PUSH1 0x1 PUSH3 0x3DE JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH3 0x229 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST DUP4 PUSH2 0xFFFF AND PUSH1 0x1 SUB PUSH3 0x298 JUMPI PUSH3 0x242 PUSH1 0x3 PUSH3 0x577 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x40 MLOAD PUSH2 0xFFFF DUP6 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH3 0x39A8C5 PUSH1 0xE4 SHL OR SWAP1 MSTORE SWAP2 POP PUSH3 0x292 PUSH2 0xFFFF DUP6 AND PUSH1 0x3 PUSH1 0x0 PUSH3 0x3DE JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE JUMPDEST DUP4 PUSH2 0xFFFF AND PUSH1 0x2 SUB PUSH3 0x307 JUMPI PUSH3 0x2B1 PUSH1 0x3 PUSH3 0x577 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x40 MLOAD PUSH2 0xFFFF DUP6 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH3 0x39A8C5 PUSH1 0xE4 SHL OR SWAP1 MSTORE SWAP2 POP PUSH3 0x301 PUSH2 0xFFFF DUP6 AND PUSH1 0x3 PUSH1 0x0 PUSH3 0x3DE JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE JUMPDEST SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x32F PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 PUSH1 0x44 ADD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x189ACDBD PUSH1 0xE3 SHL OR SWAP1 MSTORE SWAP1 POP PUSH3 0x3B0 DUP2 PUSH3 0x3A0 PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH3 0x63B JUMP JUMPDEST SWAP3 POP PUSH3 0x3BE PUSH1 0x3 PUSH3 0x577 JUMP JUMPDEST DUP3 MSTORE PUSH3 0x3CF PUSH1 0x0 PUSH1 0x3 DUP2 PUSH3 0x3DE JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP SWAP1 SWAP4 SWAP1 SWAP3 POP SWAP1 POP JUMP JUMPDEST PUSH1 0x60 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH3 0x414 JUMPI PUSH1 0x40 MLOAD PUSH4 0x3A4013CD PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0x420 DUP5 DUP5 PUSH3 0xAFA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x444 JUMPI PUSH3 0x444 PUSH3 0x9D4 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH3 0x49F JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD DUP3 SWAP1 MSTORE SWAP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 DUP3 ADD MSTORE DUP3 MSTORE PUSH1 0x0 NOT SWAP1 SWAP3 ADD SWAP2 ADD DUP2 PUSH3 0x463 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP DUP4 JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT ISZERO PUSH3 0x56F JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 DUP5 PUSH1 0x2 DUP2 GT ISZERO PUSH3 0x4DF JUMPI PUSH3 0x4DF PUSH3 0x789 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x60 DUP3 ADD MSTORE PUSH32 0xA280EEC51AB8E1BC4B6B0C1B7F1BDE785761B787A49DB404E3E9338ED9B016EF PUSH1 0x80 SWAP1 SWAP2 ADD MSTORE DUP3 PUSH3 0x532 DUP8 DUP5 PUSH3 0xAFA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MLOAD DUP2 LT PUSH3 0x54E JUMPI PUSH3 0x54E PUSH3 0xB24 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP DUP1 DUP1 PUSH3 0x566 SWAP1 PUSH3 0xB3A JUMP JUMPDEST SWAP2 POP POP PUSH3 0x4A4 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x59E JUMPI PUSH3 0x59E PUSH3 0x9D4 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH3 0x5C8 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT ISZERO PUSH3 0x635 JUMPI DUP1 DUP3 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MLOAD DUP2 LT PUSH3 0x608 JUMPI PUSH3 0x608 PUSH3 0xB24 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE DUP1 PUSH3 0x62C DUP2 PUSH3 0xB3A JUMP JUMPDEST SWAP2 POP POP PUSH3 0x5CE JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH3 0x64D SWAP1 PUSH3 0x695 JUMP JUMPDEST PUSH3 0x65A SWAP3 SWAP2 SWAP1 PUSH3 0xB63 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH3 0x56F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x6FE DUP1 PUSH3 0xB88 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x6B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH3 0x202 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH3 0x6FC JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH3 0x6D8 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x71D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x635 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x749 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x754 DUP4 PUSH3 0x705 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x771 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x77F DUP6 DUP3 DUP7 ADD PUSH3 0x722 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP2 MLOAD PUSH1 0x3 DUP2 LT PUSH3 0x7C2 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP4 MSTORE POP PUSH1 0x20 DUP2 DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP1 DUP4 ADD MLOAD DUP3 AND SWAP1 DUP5 ADD MSTORE PUSH1 0x60 DUP1 DUP4 ADD MLOAD SWAP1 SWAP2 AND SWAP1 DUP4 ADD MSTORE PUSH1 0x80 SWAP1 DUP2 ADD MLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x847 JUMPI PUSH3 0x838 DUP4 DUP6 MLOAD PUSH3 0x79F JUMP JUMPDEST SWAP4 DUP6 ADD SWAP4 SWAP3 POP PUSH1 0x1 ADD PUSH3 0x822 JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH3 0x869 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x874 DUP5 PUSH3 0x705 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH3 0x88C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x8A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x8B7 DUP7 DUP3 DUP8 ADD PUSH3 0x722 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x8E9 JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD DUP3 ADD MSTORE ADD PUSH3 0x8CB JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x20 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x20 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x40 DUP1 DUP5 MSTORE DUP2 MLOAD SWAP1 DUP5 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x20 SWAP2 SWAP1 DUP3 ADD SWAP1 PUSH1 0x60 DUP7 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x950 JUMPI DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH3 0x929 JUMP JUMPDEST POP POP DUP5 DUP4 ADD MLOAD DUP7 DUP3 SUB DUP8 DUP6 ADD MSTORE DUP1 MLOAD DUP1 DUP4 MSTORE SWAP1 DUP5 ADD SWAP3 POP PUSH1 0x0 SWAP2 DUP5 ADD SWAP1 JUMPDEST DUP1 DUP4 LT ISZERO PUSH3 0x997 JUMPI PUSH3 0x984 DUP3 DUP6 MLOAD PUSH3 0x79F JUMP JUMPDEST SWAP2 POP DUP5 DUP5 ADD SWAP4 POP PUSH1 0x1 DUP4 ADD SWAP3 POP PUSH3 0x96E JUMP JUMPDEST POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 PUSH3 0x9B7 PUSH1 0x40 DUP4 ADD DUP6 PUSH3 0x8C1 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 ADD MSTORE PUSH3 0x9CB DUP2 DUP6 PUSH3 0x909 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x9FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0xA09 DUP4 PUSH3 0x705 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH3 0xA27 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH3 0xA3C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH3 0xA51 JUMPI PUSH3 0xA51 PUSH3 0x9D4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH3 0xA7C JUMPI PUSH3 0xA7C PUSH3 0x9D4 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH3 0xA96 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH3 0xADC PUSH1 0x40 DUP4 ADD DUP5 PUSH3 0x909 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND DUP3 DUP3 AND SUB SWAP1 DUP1 DUP3 GT ISZERO PUSH3 0xB1D JUMPI PUSH3 0xB1D PUSH3 0xAE4 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND DUP2 DUP2 SUB PUSH3 0xB59 JUMPI PUSH3 0xB59 PUSH3 0xAE4 JUMP JUMPDEST PUSH1 0x1 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH3 0xADC PUSH1 0x40 DUP4 ADD DUP5 PUSH3 0x8C1 JUMP INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH2 0x6FE CODESIZE SUB DUP1 PUSH2 0x6FE DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x22 SWAP2 PUSH2 0x319 JUMP JUMPDEST PUSH2 0x2E DUP3 DUP3 PUSH1 0x0 PUSH2 0x35 JUMP JUMPDEST POP POP PUSH2 0x436 JUMP JUMPDEST PUSH2 0x3E DUP4 PUSH2 0x6B JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD GT DUP1 PUSH2 0x4B JUMPI POP DUP1 JUMPDEST ISZERO PUSH2 0x66 JUMPI PUSH2 0x64 DUP4 DUP4 PUSH2 0xAB PUSH1 0x20 SHL PUSH2 0x29 OR PUSH1 0x20 SHR JUMP JUMPDEST POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x74 DUP2 PUSH2 0xD7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xD0 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x6D7 PUSH1 0x27 SWAP2 CODECOPY PUSH2 0x1A9 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xEA DUP2 PUSH2 0x222 PUSH1 0x20 SHL PUSH2 0x55 OR PUSH1 0x20 SHR JUMP JUMPDEST PUSH2 0x151 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313936373A206E657720696D706C656D656E746174696F6E206973206E PUSH1 0x44 DUP3 ADD MSTORE PUSH13 0x1BDD08184818DBDB9D1C9858DD PUSH1 0x9A SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH2 0x188 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC PUSH1 0x0 SHL PUSH2 0x231 PUSH1 0x20 SHL PUSH2 0x64 OR PUSH1 0x20 SHR JUMP JUMPDEST DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0x1C6 SWAP2 SWAP1 PUSH2 0x3E7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x201 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x206 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x218 DUP7 DUP4 DUP4 DUP8 PUSH2 0x234 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x2A3 JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0x29C JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0x29C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x148 JUMP JUMPDEST POP DUP2 PUSH2 0x2AD JUMP JUMPDEST PUSH2 0x2AD DUP4 DUP4 PUSH2 0x2B5 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x2C5 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x148 SWAP2 SWAP1 PUSH2 0x403 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x310 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2F8 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x32C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x343 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x360 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x374 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x386 JUMPI PUSH2 0x386 PUSH2 0x2DF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x3AE JUMPI PUSH2 0x3AE PUSH2 0x2DF JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x3C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3D8 DUP4 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x2F5 JUMP JUMPDEST DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x3F9 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x2F5 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x422 DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x2F5 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x292 DUP1 PUSH2 0x445 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLDATASIZE PUSH2 0x13 JUMPI PUSH2 0x11 PUSH2 0x17 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x11 JUMPDEST PUSH2 0x27 PUSH2 0x22 PUSH2 0x67 JUMP JUMPDEST PUSH2 0x9F JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x60 PUSH2 0x4E DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x25F PUSH1 0x27 SWAP2 CODECOPY PUSH2 0xC3 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9A PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 DUP1 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE PUSH1 0x0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH2 0xBE JUMPI RETURNDATASIZE PUSH1 0x0 RETURN JUMPDEST RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0xE0 SWAP2 SWAP1 PUSH2 0x20F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x11B JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x120 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x131 DUP7 DUP4 DUP4 DUP8 PUSH2 0x13B JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x1AF JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0x1A8 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0x1A8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP DUP2 PUSH2 0x1B9 JUMP JUMPDEST PUSH2 0x1B9 DUP4 DUP4 PUSH2 0x1C1 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x1D1 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x19F SWAP2 SWAP1 PUSH2 0x22B JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x206 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1EE JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x221 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x1EB JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x24A DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x1EB JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A164 PUSH20 0x6F6C6343000811000A416464726573733A206C6F PUSH24 0x2D6C6576656C2064656C65676174652063616C6C20666169 PUSH13 0x6564A164736F6C634300081100 EXP ","sourceMap":"4631:2543:54:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1852:293:83;;;;;;:::i;:::-;;:::i;:::-;;;470:14:92;;463:22;445:41;;433:2;418:18;1852:293:83;;;;;;;;631:98:90;;;:::i;:::-;;;;;;;:::i;2184:94:83:-;;;-1:-1:-1;;;;;2257:14:83;1167:55:92;1149:74;;1137:2;1122:18;2184:94:83;1003:226:92;6873:299:54;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;5528:1306::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;4914:575::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;1852:293:83:-;1938:4;-1:-1:-1;;;;;;1973:46:83;;-1:-1:-1;;;1973:46:83;;:112;;-1:-1:-1;;;;;;;2035:50:83;;-1:-1:-1;;;2035:50:83;1973:112;:165;;;-1:-1:-1;;;;;;;;;;937:40:38;;;2101:37:83;1954:184;1852:293;-1:-1:-1;;1852:293:83:o;631:98:90:-;679:15;;:::i;:::-;-1:-1:-1;706:16:90;;;;;;;;714:1;706:16;;717:1;706:16;;;;-1:-1:-1;706:16:90;;;;;;;;631:98::o;6873:299:54:-;6995:56;7103:62;7119:1;4780;7134:30;7103:15;:62::i;:::-;7089:76;6873:299;-1:-1:-1;;;6873:299:54:o;5528:1306::-;5710:21;5733:42;-1:-1:-1;;;;;;;;;;;;;;;;;;;5733:42:54;5853:10;:15;;5867:1;5853:15;5849:562;;5912:23;4780:1;5912:11;:23::i;:::-;5884:51;;5960:76;;7990:6:92;7978:19;;5960:76:54;;;7960:38:92;7933:18;;5960:76:54;;;-1:-1:-1;;5960:76:54;;;;;;;;;;;;;;-1:-1:-1;;;;;5960:76:54;-1:-1:-1;;;5960:76:54;;;;-1:-1:-1;6082:132:54;;;;4780:1;-1:-1:-1;6082:15:54;:132::i;:::-;6050:29;;;:164;5849:562;6456:10;:15;;6470:1;6456:15;6452:376;;6515:23;4780:1;6515:11;:23::i;:::-;6487:51;;6563:76;;7990:6:92;7978:19;;6563:76:54;;;7960:38:92;7933:18;;6563:76:54;;;-1:-1:-1;;6563:76:54;;;;;;;;;;;;;;-1:-1:-1;;;;;6563:76:54;-1:-1:-1;;;6563:76:54;;;;-1:-1:-1;6685:132:54;;;;4780:1;-1:-1:-1;6685:15:54;:132::i;:::-;6653:29;;;:164;6452:376;5528:1306;;;;;;:::o;4914:575::-;5011:14;5027:42;-1:-1:-1;;;;;;;;;;;;;;;;;;;5027:42:54;5105:106;;-1:-1:-1;;;;;1167:55:92;;5105:106:54;;;1149:74:92;5081:21:54;;1122:18:92;;5105:106:54;;;-1:-1:-1;;5105:106:54;;;;;;;;;;;;;;-1:-1:-1;;;;;5105:106:54;-1:-1:-1;;;5105:106:54;;;;-1:-1:-1;5230:42:54;5105:106;5230:16;2257:14:83;;2184:94;5230:16:54;-1:-1:-1;;;;;5230:32:54;;;:42::i;:::-;5221:51;-1:-1:-1;5310:23:54;4780:1;5310:11;:23::i;:::-;5282:51;;5375:107;5282:25;4780:1;5282:25;5375:15;:107::i;:::-;5343:29;;;:139;-1:-1:-1;4914:575:54;;5343:17;;-1:-1:-1;4914:575:54;-1:-1:-1;4914:575:54:o;580:666:52:-;699:56;780:8;-1:-1:-1;;;;;767:21:52;:10;-1:-1:-1;;;;;767:21:52;;763:53;;;797:19;;-1:-1:-1;;;797:19:52;;;;;;;;;;;763:53;879:21;890:10;879:8;:21;:::i;:::-;-1:-1:-1;;;;;837:64:52;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;837:64:52;;-1:-1:-1;;837:64:52;;;;;;;;;;;-1:-1:-1;823:78:52;-1:-1:-1;925:10:52;908:336;941:8;-1:-1:-1;;;;;937:12:52;:1;-1:-1:-1;;;;;937:12:52;;908:336;;;996:241;;;;;;;;1057:2;996:241;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;996:241:52;;;;;;;;;;;;-1:-1:-1;996:241:52;;;;1198:28;996:241;;;;;966:11;978:14;982:10;1088:1;978:14;:::i;:::-;-1:-1:-1;;;;;966:27:52;;;;;;;;;:::i;:::-;;;;;;:271;;;;951:3;;;;;:::i;:::-;;;;908:336;;;;580:666;;;;;:::o;1529:191::-;1577:24;1633:3;-1:-1:-1;;;;;1619:18:52;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1619:18:52;;1609:28;;1649:9;1644:74;1668:3;-1:-1:-1;;;;;1664:7:52;:1;-1:-1:-1;;;;;1664:7:52;;1644:74;;;1709:1;1688:7;1696:1;-1:-1:-1;;;;;1688:10:52;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1688:23:52;;;:10;;;;;;;;;;;:23;1673:3;;;;:::i;:::-;;;;1644:74;;;;1529:191;;;:::o;1415:222:85:-;1524:17;1599:6;1614:13;1573:56;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::o;14:286:92:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:92;;209:43;;199:71;;266:1;263;256:12;497:501;673:2;658:18;;662:9;753:6;631:4;787:205;801:4;798:1;795:11;787:205;;;864:13;;879:4;860:24;848:37;;908:4;932:12;;;;967:15;;;;821:1;814:9;787:205;;;791:3;;;497:501;;;;:::o;1234:196::-;1302:20;;-1:-1:-1;;;;;1351:54:92;;1341:65;;1331:93;;1420:1;1417;1410:12;1331:93;1234:196;;;:::o;1435:160::-;1500:5;1545:2;1536:6;1531:3;1527:16;1523:25;1520:45;;;1561:1;1558;1551:12;1600:441;1701:6;1709;1762:2;1750:9;1741:7;1737:23;1733:32;1730:52;;;1778:1;1775;1768:12;1730:52;1801:29;1820:9;1801:29;:::i;:::-;1791:39;;1881:2;1870:9;1866:18;1853:32;1908:18;1900:6;1897:30;1894:50;;;1940:1;1937;1930:12;1894:50;1963:72;2027:7;2018:6;2007:9;2003:22;1963:72;:::i;:::-;1953:82;;;1600:441;;;;;:::o;2046:127::-;2107:10;2102:3;2098:20;2095:1;2088:31;2138:4;2135:1;2128:15;2162:4;2159:1;2152:15;2178:696;2253:10;2294:6;2288:13;2327:1;2323:2;2320:9;2310:140;;2372:10;2367:3;2363:20;2360:1;2353:31;2407:4;2404:1;2397:15;2435:4;2432:1;2425:15;2310:140;2459:15;;-1:-1:-1;2521:4:92;2509:17;;;2503:24;-1:-1:-1;;;;;2620:21:92;;;2604:14;;;2597:45;;;;2696:4;2684:17;;;2678:24;2674:33;;2658:14;;;2651:57;2762:4;2750:17;;;2744:24;2740:33;;;2724:14;;;2717:57;2824:4;2812:17;;;2806:24;2790:14;;;2783:48;2863:4;2854:14;;2178:696::o;2879:730::-;3130:2;3182:21;;;3252:13;;3155:18;;;3274:22;;;3101:4;;3130:2;3353:15;;;;3327:2;3312:18;;;3101:4;3396:187;3410:6;3407:1;3404:13;3396:187;;;3466:69;3531:3;3522:6;3516:13;3466:69;:::i;:::-;3558:15;;;;3459:76;-1:-1:-1;3432:1:92;3425:9;3396:187;;;-1:-1:-1;3600:3:92;;2879:730;-1:-1:-1;;;;;;2879:730:92:o;3614:601::-;3723:6;3731;3739;3792:2;3780:9;3771:7;3767:23;3763:32;3760:52;;;3808:1;3805;3798:12;3760:52;3831:29;3850:9;3831:29;:::i;:::-;3821:39;;3910:2;3899:9;3895:18;3882:32;3954:6;3947:5;3943:18;3936:5;3933:29;3923:57;;3976:1;3973;3966:12;3923:57;3999:5;-1:-1:-1;4055:2:92;4040:18;;4027:32;4082:18;4071:30;;4068:50;;;4114:1;4111;4104:12;4068:50;4137:72;4201:7;4192:6;4181:9;4177:22;4137:72;:::i;:::-;4127:82;;;3614:601;;;;;:::o;4220:422::-;4261:3;4299:5;4293:12;4326:6;4321:3;4314:19;4351:1;4361:162;4375:6;4372:1;4369:13;4361:162;;;4437:4;4493:13;;;4489:22;;4483:29;4465:11;;;4461:20;;4454:59;4390:12;4361:162;;;4365:3;4568:1;4561:4;4552:6;4547:3;4543:16;4539:27;4532:38;4631:4;4624:2;4620:7;4615:2;4607:6;4603:15;4599:29;4594:3;4590:39;4586:50;4579:57;;;4220:422;;;;:::o;4647:1162::-;4780:12;;4746:4;4801:17;;;4867:19;;4737:14;;;4895:20;;;4707:3;;4964:4;;4991:21;;;;4942:2;4933:12;;;4707:3;5040:224;5054:6;5051:1;5048:13;5040:224;;;5121:13;;-1:-1:-1;;;;;5117:62:92;5103:77;;5239:15;;;;5202:14;;;;5076:1;5069:9;5040:224;;;-1:-1:-1;;5301:14:92;;;5295:21;5346:15;;;5332:12;;;5325:37;5414:21;;5444:23;;;5524;;;;-1:-1:-1;5567:1:92;;5485:14;;;5577:205;5593:8;5588:3;5585:17;5577:205;;;5657:73;5724:5;5713:8;5707:15;5657:73;:::i;:::-;5648:82;;5769:2;5759:8;5755:17;5743:29;;5621:1;5616:3;5612:11;5605:18;;5577:205;;;-1:-1:-1;5798:5:92;4647:1162;-1:-1:-1;;;;;;4647:1162:92:o;5814:450::-;6061:2;6050:9;6043:21;6024:4;6087:44;6127:2;6116:9;6112:18;6104:6;6087:44;:::i;:::-;6179:9;6171:6;6167:22;6162:2;6151:9;6147:18;6140:50;6207:51;6251:6;6243;6207:51;:::i;:::-;6199:59;5814:450;-1:-1:-1;;;;;5814:450:92:o;6269:127::-;6330:10;6325:3;6321:20;6318:1;6311:31;6361:4;6358:1;6351:15;6385:4;6382:1;6375:15;6401:995;6478:6;6486;6539:2;6527:9;6518:7;6514:23;6510:32;6507:52;;;6555:1;6552;6545:12;6507:52;6578:29;6597:9;6578:29;:::i;:::-;6568:39;;6658:2;6647:9;6643:18;6630:32;6681:18;6722:2;6714:6;6711:14;6708:34;;;6738:1;6735;6728:12;6708:34;6776:6;6765:9;6761:22;6751:32;;6821:7;6814:4;6810:2;6806:13;6802:27;6792:55;;6843:1;6840;6833:12;6792:55;6879:2;6866:16;6901:2;6897;6894:10;6891:36;;;6907:18;;:::i;:::-;6982:2;6976:9;6950:2;7036:13;;-1:-1:-1;;7032:22:92;;;7056:2;7028:31;7024:40;7012:53;;;7080:18;;;7100:22;;;7077:46;7074:72;;;7126:18;;:::i;:::-;7166:10;7162:2;7155:22;7201:2;7193:6;7186:18;7241:7;7236:2;7231;7227;7223:11;7219:20;7216:33;7213:53;;;7262:1;7259;7252:12;7213:53;7318:2;7313;7309;7305:11;7300:2;7292:6;7288:15;7275:46;7363:1;7358:2;7353;7345:6;7341:15;7337:24;7330:35;7384:6;7374:16;;;;;;;6401:995;;;;;:::o;7401:410::-;-1:-1:-1;;;;;7634:6:92;7630:55;7619:9;7612:74;7722:2;7717;7706:9;7702:18;7695:30;7593:4;7742:63;7801:2;7790:9;7786:18;7778:6;7742:63;:::i;:::-;7734:71;7401:410;-1:-1:-1;;;;7401:410:92:o;8254:127::-;8315:10;8310:3;8306:20;8303:1;8296:31;8346:4;8343:1;8336:15;8370:4;8367:1;8360:15;8386:208;-1:-1:-1;;;;;8530:10:92;;;8518;;;8514:27;;8553:12;;;8550:38;;;8568:18;;:::i;:::-;8550:38;8386:208;;;;:::o;8599:127::-;8660:10;8655:3;8651:20;8648:1;8641:31;8691:4;8688:1;8681:15;8715:4;8712:1;8705:15;8731:234;8770:3;-1:-1:-1;;;;;8875:2:92;8868:5;8864:14;8902:2;8893:7;8890:15;8887:41;;8908:18;;:::i;:::-;8957:1;8944:15;;8731:234;-1:-1:-1;;;8731:234:92:o;8970:337::-;-1:-1:-1;;;;;9149:6:92;9145:55;9134:9;9127:74;9237:2;9232;9221:9;9217:18;9210:30;9108:4;9257:44;9297:2;9286:9;9282:18;9274:6;9257:44;:::i"},"gasEstimates":{"creation":{"codeDepositCost":"950800","executionCost":"infinite","totalCost":"infinite"},"external":{"implementation()":"infinite","prepareInstallation(address,bytes)":"infinite","prepareUninstallation(address,(address,address[],bytes))":"infinite","prepareUpdate(address,uint16,(address,address[],bytes))":"infinite","protocolVersion()":"infinite","supportsInterface(bytes4)":"482"}},"methodIdentifiers":{"implementation()":"5c60da1b","prepareInstallation(address,bytes)":"f10832f1","prepareUninstallation(address,(address,address[],bytes))":"9cb0a124","prepareUpdate(address,uint16,(address,address[],bytes))":"a8a9c29e","protocolVersion()":"2ae9c600","supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ConflictingValues\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"fromBuild\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"thisBuild\",\"type\":\"uint16\"}],\"name\":\"InvalidUpdatePath\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_dao\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"prepareInstallation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"plugin\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address[]\",\"name\":\"helpers\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"enum PermissionLib.Operation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"condition\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PermissionLib.MultiTargetPermission[]\",\"name\":\"permissions\",\"type\":\"tuple[]\"}],\"internalType\":\"struct IPluginSetup.PreparedSetupData\",\"name\":\"preparedSetupData\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_dao\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"plugin\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"currentHelpers\",\"type\":\"address[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IPluginSetup.SetupPayload\",\"name\":\"_payload\",\"type\":\"tuple\"}],\"name\":\"prepareUninstallation\",\"outputs\":[{\"components\":[{\"internalType\":\"enum PermissionLib.Operation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"condition\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PermissionLib.MultiTargetPermission[]\",\"name\":\"permissions\",\"type\":\"tuple[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_dao\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"_fromBuild\",\"type\":\"uint16\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"plugin\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"currentHelpers\",\"type\":\"address[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IPluginSetup.SetupPayload\",\"name\":\"_payload\",\"type\":\"tuple\"}],\"name\":\"prepareUpdate\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"initData\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address[]\",\"name\":\"helpers\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"enum PermissionLib.Operation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"condition\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PermissionLib.MultiTargetPermission[]\",\"name\":\"permissions\",\"type\":\"tuple[]\"}],\"internalType\":\"struct IPluginSetup.PreparedSetupData\",\"name\":\"preparedSetupData\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"protocolVersion\",\"outputs\":[{\"internalType\":\"uint8[3]\",\"name\":\"\",\"type\":\"uint8[3]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"InvalidUpdatePath(uint16,uint16)\":[{\"params\":{\"fromBuild\":\"The build number to update from.\",\"thisBuild\":\"The build number of this setup to update to.\"}}]},\"kind\":\"dev\",\"methods\":{\"implementation()\":{\"details\":\"The implementation can be instantiated via the `new` keyword, cloned via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)), or proxied via the UUPS proxy pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\",\"returns\":{\"_0\":\"The address of the plugin implementation contract.\"}},\"prepareInstallation(address,bytes)\":{\"params\":{\"_dao\":\"The address of the installing DAO.\",\"_data\":\"The bytes-encoded data containing the input parameters for the installation as specified in the plugin's build metadata JSON file.\"},\"returns\":{\"plugin\":\"The address of the `Plugin` contract being prepared for installation.\",\"preparedSetupData\":\"The deployed plugin's relevant data which consists of helpers and permissions.\"}},\"prepareUninstallation(address,(address,address[],bytes))\":{\"params\":{\"_dao\":\"The address of the uninstalling DAO.\",\"_payload\":\"The relevant data necessary for the `prepareUninstallation`. See above.\"},\"returns\":{\"permissions\":\"The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the uninstalling DAO.\"}},\"prepareUpdate(address,uint16,(address,address[],bytes))\":{\"params\":{\"_dao\":\"The address of the updating DAO.\",\"_fromBuild\":\"The build number of the plugin to update from.\",\"_payload\":\"The relevant data necessary for the `prepareUpdate`. See above.\"},\"returns\":{\"initData\":\"The initialization data to be passed to upgradeable contracts when the update is applied in the `PluginSetupProcessor`.\",\"preparedSetupData\":\"The deployed plugin's relevant data which consists of helpers and permissions.\"}},\"protocolVersion()\":{\"details\":\"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\",\"returns\":{\"_0\":\"Returns the semantic Aragon OSx protocol version number.\"}},\"supportsInterface(bytes4)\":{\"params\":{\"_interfaceId\":\"The ID of the interface.\"},\"returns\":{\"_0\":\"Returns `true` if the interface is supported.\"}}},\"version\":1},\"userdoc\":{\"errors\":{\"InvalidUpdatePath(uint16,uint16)\":[{\"notice\":\"Thrown when an update path is not available, for example, if this is the initial build.\"}]},\"kind\":\"user\",\"methods\":{\"implementation()\":{\"notice\":\"Returns the plugin implementation address.\"},\"prepareInstallation(address,bytes)\":{\"notice\":\"Prepares the installation of a plugin.\"},\"prepareUninstallation(address,(address,address[],bytes))\":{\"notice\":\"Prepares the uninstallation of a plugin.\"},\"prepareUpdate(address,uint16,(address,address[],bytes))\":{\"notice\":\"Prepares the update of a plugin.\"},\"protocolVersion()\":{\"notice\":\"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Checks if this or the parent contract supports an interface by its ID.\"}},\"notice\":\"A mock plugin setup of an upgradeable plugin to be deployed via the UUPS pattern. v1.3 (Release 1, Build 3)\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/mocks/plugin/PluginUUPSUpgradeableSetupMock.sol\":\"PluginUUPSUpgradeableSetupMockBuild3\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/interfaces/IERC1967Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (interfaces/IERC1967.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\\n *\\n * _Available since v4.8.3._\\n */\\ninterface IERC1967Upgradeable {\\n /**\\n * @dev Emitted when the implementation is upgraded.\\n */\\n event Upgraded(address indexed implementation);\\n\\n /**\\n * @dev Emitted when the admin account has changed.\\n */\\n event AdminChanged(address previousAdmin, address newAdmin);\\n\\n /**\\n * @dev Emitted when the beacon is changed.\\n */\\n event BeaconUpgraded(address indexed beacon);\\n}\\n\",\"keccak256\":\"0x47d6e06872b12e72c79d1b5eb55842f860b5fb1207b2317c2358d2766b950a7b\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822ProxiableUpgradeable {\\n /**\\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n * address.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy.\\n */\\n function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../beacon/IBeaconUpgradeable.sol\\\";\\nimport \\\"../../interfaces/IERC1967Upgradeable.sol\\\";\\nimport \\\"../../interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\nimport \\\"../../utils/StorageSlotUpgradeable.sol\\\";\\nimport {Initializable} from \\\"../utils/Initializable.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n */\\nabstract contract ERC1967UpgradeUpgradeable is Initializable, IERC1967Upgradeable {\\n // This is the keccak-256 hash of \\\"eip1967.proxy.rollback\\\" subtracted by 1\\n bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n /**\\n * @dev Storage slot with the address of the current implementation.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n function __ERC1967Upgrade_init() internal onlyInitializing {\\n }\\n\\n function __ERC1967Upgrade_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _getImplementation() internal view returns (address) {\\n return StorageSlotUpgradeable.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 implementation slot.\\n */\\n function _setImplementation(address newImplementation) private {\\n require(AddressUpgradeable.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n StorageSlotUpgradeable.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n }\\n\\n /**\\n * @dev Perform implementation upgrade\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeTo(address newImplementation) internal {\\n _setImplementation(newImplementation);\\n emit Upgraded(newImplementation);\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCall(address newImplementation, bytes memory data, bool forceCall) internal {\\n _upgradeTo(newImplementation);\\n if (data.length > 0 || forceCall) {\\n AddressUpgradeable.functionDelegateCall(newImplementation, data);\\n }\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCallUUPS(address newImplementation, bytes memory data, bool forceCall) internal {\\n // Upgrades from old implementations will perform a rollback test. This test requires the new\\n // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n // this special case will break upgrade paths from old UUPS implementation to new ones.\\n if (StorageSlotUpgradeable.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n _setImplementation(newImplementation);\\n } else {\\n try IERC1822ProxiableUpgradeable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n require(slot == _IMPLEMENTATION_SLOT, \\\"ERC1967Upgrade: unsupported proxiableUUID\\\");\\n } catch {\\n revert(\\\"ERC1967Upgrade: new implementation is not UUPS\\\");\\n }\\n _upgradeToAndCall(newImplementation, data, forceCall);\\n }\\n }\\n\\n /**\\n * @dev Storage slot with the admin of the contract.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _getAdmin() internal view returns (address) {\\n return StorageSlotUpgradeable.getAddressSlot(_ADMIN_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 admin slot.\\n */\\n function _setAdmin(address newAdmin) private {\\n require(newAdmin != address(0), \\\"ERC1967: new admin is the zero address\\\");\\n StorageSlotUpgradeable.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n */\\n function _changeAdmin(address newAdmin) internal {\\n emit AdminChanged(_getAdmin(), newAdmin);\\n _setAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\\n */\\n bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n /**\\n * @dev Returns the current beacon.\\n */\\n function _getBeacon() internal view returns (address) {\\n return StorageSlotUpgradeable.getAddressSlot(_BEACON_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new beacon in the EIP1967 beacon slot.\\n */\\n function _setBeacon(address newBeacon) private {\\n require(AddressUpgradeable.isContract(newBeacon), \\\"ERC1967: new beacon is not a contract\\\");\\n require(\\n AddressUpgradeable.isContract(IBeaconUpgradeable(newBeacon).implementation()),\\n \\\"ERC1967: beacon implementation is not a contract\\\"\\n );\\n StorageSlotUpgradeable.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n }\\n\\n /**\\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n *\\n * Emits a {BeaconUpgraded} event.\\n */\\n function _upgradeBeaconToAndCall(address newBeacon, bytes memory data, bool forceCall) internal {\\n _setBeacon(newBeacon);\\n emit BeaconUpgraded(newBeacon);\\n if (data.length > 0 || forceCall) {\\n AddressUpgradeable.functionDelegateCall(IBeaconUpgradeable(newBeacon).implementation(), data);\\n }\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x7795808e3899c805254e3ae58074b20f799b466e3f43e057e47bedee5fb771f8\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeaconUpgradeable {\\n /**\\n * @dev Must return an address that can be used as a delegate call target.\\n *\\n * {BeaconProxy} will check that this address is a contract.\\n */\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/UUPSUpgradeable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport \\\"../ERC1967/ERC1967UpgradeUpgradeable.sol\\\";\\nimport {Initializable} from \\\"./Initializable.sol\\\";\\n\\n/**\\n * @dev An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an\\n * {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy.\\n *\\n * A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is\\n * reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing\\n * `UUPSUpgradeable` with a custom implementation of upgrades.\\n *\\n * The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism.\\n *\\n * _Available since v4.1._\\n */\\nabstract contract UUPSUpgradeable is Initializable, IERC1822ProxiableUpgradeable, ERC1967UpgradeUpgradeable {\\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable state-variable-assignment\\n address private immutable __self = address(this);\\n\\n /**\\n * @dev Check that the execution is being performed through a delegatecall call and that the execution context is\\n * a proxy contract with an implementation (as defined in ERC1967) pointing to self. This should only be the case\\n * for UUPS and transparent proxies that are using the current contract as their implementation. Execution of a\\n * function through ERC1167 minimal proxies (clones) would not normally pass this test, but is not guaranteed to\\n * fail.\\n */\\n modifier onlyProxy() {\\n require(address(this) != __self, \\\"Function must be called through delegatecall\\\");\\n require(_getImplementation() == __self, \\\"Function must be called through active proxy\\\");\\n _;\\n }\\n\\n /**\\n * @dev Check that the execution is not being performed through a delegate call. This allows a function to be\\n * callable on the implementing contract but not through proxies.\\n */\\n modifier notDelegated() {\\n require(address(this) == __self, \\\"UUPSUpgradeable: must not be called through delegatecall\\\");\\n _;\\n }\\n\\n function __UUPSUpgradeable_init() internal onlyInitializing {\\n }\\n\\n function __UUPSUpgradeable_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the\\n * implementation. It is used to validate the implementation's compatibility when performing an upgrade.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\\n */\\n function proxiableUUID() external view virtual override notDelegated returns (bytes32) {\\n return _IMPLEMENTATION_SLOT;\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy to `newImplementation`.\\n *\\n * Calls {_authorizeUpgrade}.\\n *\\n * Emits an {Upgraded} event.\\n *\\n * @custom:oz-upgrades-unsafe-allow-reachable delegatecall\\n */\\n function upgradeTo(address newImplementation) public virtual onlyProxy {\\n _authorizeUpgrade(newImplementation);\\n _upgradeToAndCallUUPS(newImplementation, new bytes(0), false);\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call\\n * encoded in `data`.\\n *\\n * Calls {_authorizeUpgrade}.\\n *\\n * Emits an {Upgraded} event.\\n *\\n * @custom:oz-upgrades-unsafe-allow-reachable delegatecall\\n */\\n function upgradeToAndCall(address newImplementation, bytes memory data) public payable virtual onlyProxy {\\n _authorizeUpgrade(newImplementation);\\n _upgradeToAndCallUUPS(newImplementation, data, true);\\n }\\n\\n /**\\n * @dev Function that should revert when `msg.sender` is not authorized to upgrade the contract. Called by\\n * {upgradeTo} and {upgradeToAndCall}.\\n *\\n * Normally, this function will use an xref:access.adoc[access control] modifier such as {Ownable-onlyOwner}.\\n *\\n * ```solidity\\n * function _authorizeUpgrade(address) internal override onlyOwner {}\\n * ```\\n */\\n function _authorizeUpgrade(address newImplementation) internal virtual;\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0xefb41f5c1a00249b7a99f0782f8c557865605426a3fb6e5fe9ae334293ae4f33\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n function __Context_init() internal onlyInitializing {\\n }\\n\\n function __Context_init_unchained() internal onlyInitializing {\\n }\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n function _contextSuffixLength() internal view virtual returns (uint256) {\\n return 0;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x75097e35253e7fb282ee4d7f27a80eaacfa759923185bf17302a89cbc059c5ef\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/StorageSlot.sol)\\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```solidity\\n * contract ERC1967 {\\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n * function _getImplementation() internal view returns (address) {\\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n * }\\n *\\n * function _setImplementation(address newImplementation) internal {\\n * require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n * }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._\\n * _Available since v4.9 for `string`, `bytes`._\\n */\\nlibrary StorageSlotUpgradeable {\\n struct AddressSlot {\\n address value;\\n }\\n\\n struct BooleanSlot {\\n bool value;\\n }\\n\\n struct Bytes32Slot {\\n bytes32 value;\\n }\\n\\n struct Uint256Slot {\\n uint256 value;\\n }\\n\\n struct StringSlot {\\n string value;\\n }\\n\\n struct BytesSlot {\\n bytes value;\\n }\\n\\n /**\\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n */\\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n */\\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n */\\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n */\\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` with member `value` located at `slot`.\\n */\\n function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\\n */\\n function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` with member `value` located at `slot`.\\n */\\n function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\\n */\\n function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n}\\n\",\"keccak256\":\"0x07ac95acad040f1fb1f6120dd0aa5f702db69446e95f82613721879d30de0908\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165Upgradeable.sol\\\";\\nimport {Initializable} from \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165Upgradeable is Initializable, IERC165Upgradeable {\\n function __ERC165_init() internal onlyInitializing {\\n }\\n\\n function __ERC165_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165Upgradeable).interfaceId;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0xd90d7723512df65ae417adaf0801042940f0dabd60039ceeaffe34aa5b238da1\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165Upgradeable {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/IERC1967.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (interfaces/IERC1967.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\\n *\\n * _Available since v4.8.3._\\n */\\ninterface IERC1967 {\\n /**\\n * @dev Emitted when the implementation is upgraded.\\n */\\n event Upgraded(address indexed implementation);\\n\\n /**\\n * @dev Emitted when the admin account has changed.\\n */\\n event AdminChanged(address previousAdmin, address newAdmin);\\n\\n /**\\n * @dev Emitted when the beacon is changed.\\n */\\n event BeaconUpgraded(address indexed beacon);\\n}\\n\",\"keccak256\":\"0x3cbef5ebc24b415252e2f8c0c9254555d30d9f085603b4b80d9b5ed20ab87e90\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822Proxiable {\\n /**\\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n * address.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy.\\n */\\n function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/Clones.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/Clones.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev https://eips.ethereum.org/EIPS/eip-1167[EIP 1167] is a standard for\\n * deploying minimal proxy contracts, also known as \\\"clones\\\".\\n *\\n * > To simply and cheaply clone contract functionality in an immutable way, this standard specifies\\n * > a minimal bytecode implementation that delegates all calls to a known, fixed address.\\n *\\n * The library includes functions to deploy a proxy using either `create` (traditional deployment) or `create2`\\n * (salted deterministic deployment). It also includes functions to predict the addresses of clones deployed using the\\n * deterministic method.\\n *\\n * _Available since v3.4._\\n */\\nlibrary Clones {\\n /**\\n * @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`.\\n *\\n * This function uses the create opcode, which should never revert.\\n */\\n function clone(address implementation) internal returns (address instance) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n // Cleans the upper 96 bits of the `implementation` word, then packs the first 3 bytes\\n // of the `implementation` address with the bytecode before the address.\\n mstore(0x00, or(shr(0xe8, shl(0x60, implementation)), 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000))\\n // Packs the remaining 17 bytes of `implementation` with the bytecode after the address.\\n mstore(0x20, or(shl(0x78, implementation), 0x5af43d82803e903d91602b57fd5bf3))\\n instance := create(0, 0x09, 0x37)\\n }\\n require(instance != address(0), \\\"ERC1167: create failed\\\");\\n }\\n\\n /**\\n * @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`.\\n *\\n * This function uses the create2 opcode and a `salt` to deterministically deploy\\n * the clone. Using the same `implementation` and `salt` multiple time will revert, since\\n * the clones cannot be deployed twice at the same address.\\n */\\n function cloneDeterministic(address implementation, bytes32 salt) internal returns (address instance) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n // Cleans the upper 96 bits of the `implementation` word, then packs the first 3 bytes\\n // of the `implementation` address with the bytecode before the address.\\n mstore(0x00, or(shr(0xe8, shl(0x60, implementation)), 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000))\\n // Packs the remaining 17 bytes of `implementation` with the bytecode after the address.\\n mstore(0x20, or(shl(0x78, implementation), 0x5af43d82803e903d91602b57fd5bf3))\\n instance := create2(0, 0x09, 0x37, salt)\\n }\\n require(instance != address(0), \\\"ERC1167: create2 failed\\\");\\n }\\n\\n /**\\n * @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}.\\n */\\n function predictDeterministicAddress(\\n address implementation,\\n bytes32 salt,\\n address deployer\\n ) internal pure returns (address predicted) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n let ptr := mload(0x40)\\n mstore(add(ptr, 0x38), deployer)\\n mstore(add(ptr, 0x24), 0x5af43d82803e903d91602b57fd5bf3ff)\\n mstore(add(ptr, 0x14), implementation)\\n mstore(ptr, 0x3d602d80600a3d3981f3363d3d373d3d3d363d73)\\n mstore(add(ptr, 0x58), salt)\\n mstore(add(ptr, 0x78), keccak256(add(ptr, 0x0c), 0x37))\\n predicted := keccak256(add(ptr, 0x43), 0x55)\\n }\\n }\\n\\n /**\\n * @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}.\\n */\\n function predictDeterministicAddress(\\n address implementation,\\n bytes32 salt\\n ) internal view returns (address predicted) {\\n return predictDeterministicAddress(implementation, salt, address(this));\\n }\\n}\\n\",\"keccak256\":\"0x01f055f5c26ba25d7f83e9aa9ba877fbea4d0bf22227de046ea67494bc932999\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (proxy/ERC1967/ERC1967Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../Proxy.sol\\\";\\nimport \\\"./ERC1967Upgrade.sol\\\";\\n\\n/**\\n * @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an\\n * implementation address that can be changed. This address is stored in storage in the location specified by\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the\\n * implementation behind the proxy.\\n */\\ncontract ERC1967Proxy is Proxy, ERC1967Upgrade {\\n /**\\n * @dev Initializes the upgradeable proxy with an initial implementation specified by `_logic`.\\n *\\n * If `_data` is nonempty, it's used as data in a delegate call to `_logic`. This will typically be an encoded\\n * function call, and allows initializing the storage of the proxy like a Solidity constructor.\\n */\\n constructor(address _logic, bytes memory _data) payable {\\n _upgradeToAndCall(_logic, _data, false);\\n }\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _implementation() internal view virtual override returns (address impl) {\\n return ERC1967Upgrade._getImplementation();\\n }\\n}\\n\",\"keccak256\":\"0xa2b22da3032e50b55f95ec1d13336102d675f341167aa76db571ef7f8bb7975d\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../beacon/IBeacon.sol\\\";\\nimport \\\"../../interfaces/IERC1967.sol\\\";\\nimport \\\"../../interfaces/draft-IERC1822.sol\\\";\\nimport \\\"../../utils/Address.sol\\\";\\nimport \\\"../../utils/StorageSlot.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n */\\nabstract contract ERC1967Upgrade is IERC1967 {\\n // This is the keccak-256 hash of \\\"eip1967.proxy.rollback\\\" subtracted by 1\\n bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n /**\\n * @dev Storage slot with the address of the current implementation.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _getImplementation() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 implementation slot.\\n */\\n function _setImplementation(address newImplementation) private {\\n require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n }\\n\\n /**\\n * @dev Perform implementation upgrade\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeTo(address newImplementation) internal {\\n _setImplementation(newImplementation);\\n emit Upgraded(newImplementation);\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCall(address newImplementation, bytes memory data, bool forceCall) internal {\\n _upgradeTo(newImplementation);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(newImplementation, data);\\n }\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCallUUPS(address newImplementation, bytes memory data, bool forceCall) internal {\\n // Upgrades from old implementations will perform a rollback test. This test requires the new\\n // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n // this special case will break upgrade paths from old UUPS implementation to new ones.\\n if (StorageSlot.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n _setImplementation(newImplementation);\\n } else {\\n try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n require(slot == _IMPLEMENTATION_SLOT, \\\"ERC1967Upgrade: unsupported proxiableUUID\\\");\\n } catch {\\n revert(\\\"ERC1967Upgrade: new implementation is not UUPS\\\");\\n }\\n _upgradeToAndCall(newImplementation, data, forceCall);\\n }\\n }\\n\\n /**\\n * @dev Storage slot with the admin of the contract.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _getAdmin() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_ADMIN_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 admin slot.\\n */\\n function _setAdmin(address newAdmin) private {\\n require(newAdmin != address(0), \\\"ERC1967: new admin is the zero address\\\");\\n StorageSlot.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n */\\n function _changeAdmin(address newAdmin) internal {\\n emit AdminChanged(_getAdmin(), newAdmin);\\n _setAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\\n */\\n bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n /**\\n * @dev Returns the current beacon.\\n */\\n function _getBeacon() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_BEACON_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new beacon in the EIP1967 beacon slot.\\n */\\n function _setBeacon(address newBeacon) private {\\n require(Address.isContract(newBeacon), \\\"ERC1967: new beacon is not a contract\\\");\\n require(\\n Address.isContract(IBeacon(newBeacon).implementation()),\\n \\\"ERC1967: beacon implementation is not a contract\\\"\\n );\\n StorageSlot.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n }\\n\\n /**\\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n *\\n * Emits a {BeaconUpgraded} event.\\n */\\n function _upgradeBeaconToAndCall(address newBeacon, bytes memory data, bool forceCall) internal {\\n _setBeacon(newBeacon);\\n emit BeaconUpgraded(newBeacon);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x3b21ae06bf5957f73fa16754b0669c77b7abd8ba6c072d35c3281d446fdb86c2\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (proxy/Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\\n * be specified by overriding the virtual {_implementation} function.\\n *\\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\\n * different contract through the {_delegate} function.\\n *\\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\\n */\\nabstract contract Proxy {\\n /**\\n * @dev Delegates the current call to `implementation`.\\n *\\n * This function does not return to its internal call site, it will return directly to the external caller.\\n */\\n function _delegate(address implementation) internal virtual {\\n assembly {\\n // Copy msg.data. We take full control of memory in this inline assembly\\n // block because it will not return to Solidity code. We overwrite the\\n // Solidity scratch pad at memory position 0.\\n calldatacopy(0, 0, calldatasize())\\n\\n // Call the implementation.\\n // out and outsize are 0 because we don't know the size yet.\\n let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)\\n\\n // Copy the returned data.\\n returndatacopy(0, 0, returndatasize())\\n\\n switch result\\n // delegatecall returns 0 on error.\\n case 0 {\\n revert(0, returndatasize())\\n }\\n default {\\n return(0, returndatasize())\\n }\\n }\\n }\\n\\n /**\\n * @dev This is a virtual function that should be overridden so it returns the address to which the fallback function\\n * and {_fallback} should delegate.\\n */\\n function _implementation() internal view virtual returns (address);\\n\\n /**\\n * @dev Delegates the current call to the address returned by `_implementation()`.\\n *\\n * This function does not return to its internal call site, it will return directly to the external caller.\\n */\\n function _fallback() internal virtual {\\n _beforeFallback();\\n _delegate(_implementation());\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\\n * function in the contract matches the call data.\\n */\\n fallback() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data\\n * is empty.\\n */\\n receive() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`\\n * call, or as part of the Solidity `fallback` or `receive` functions.\\n *\\n * If overridden should call `super._beforeFallback()`.\\n */\\n function _beforeFallback() internal virtual {}\\n}\\n\",\"keccak256\":\"0xc130fe33f1b2132158531a87734153293f6d07bc263ff4ac90e85da9c82c0e27\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeacon {\\n /**\\n * @dev Must return an address that can be used as a delegate call target.\\n *\\n * {BeaconProxy} will check that this address is a contract.\\n */\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/StorageSlot.sol)\\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```solidity\\n * contract ERC1967 {\\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n * function _getImplementation() internal view returns (address) {\\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n * }\\n *\\n * function _setImplementation(address newImplementation) internal {\\n * require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n * }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._\\n * _Available since v4.9 for `string`, `bytes`._\\n */\\nlibrary StorageSlot {\\n struct AddressSlot {\\n address value;\\n }\\n\\n struct BooleanSlot {\\n bool value;\\n }\\n\\n struct Bytes32Slot {\\n bytes32 value;\\n }\\n\\n struct Uint256Slot {\\n uint256 value;\\n }\\n\\n struct StringSlot {\\n string value;\\n }\\n\\n struct BytesSlot {\\n bytes value;\\n }\\n\\n /**\\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n */\\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n */\\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n */\\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n */\\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` with member `value` located at `slot`.\\n */\\n function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\\n */\\n function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` with member `value` located at `slot`.\\n */\\n function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\\n */\\n function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n}\\n\",\"keccak256\":\"0xf09e68aa0dc6722a25bc46490e8d48ed864466d17313b8a0b254c36b54e49899\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165 is IERC165 {\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165).interfaceId;\\n }\\n}\\n\",\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"src/dao/IDAO.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IDAO\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for DAOs within the Aragon App DAO framework.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IDAO {\\n /// @notice The action struct to be consumed by the DAO's `execute` function resulting in an external call.\\n /// @param to The address to call.\\n /// @param value The native token value to be sent with the call.\\n /// @param data The bytes-encoded function selector and calldata for the call.\\n struct Action {\\n address to;\\n uint256 value;\\n bytes data;\\n }\\n\\n /// @notice Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\\n /// @param _where The address of the contract.\\n /// @param _who The address of a EOA or contract to give the permissions.\\n /// @param _permissionId The permission identifier.\\n /// @param _data The optional data passed to the `PermissionCondition` registered.\\n /// @return Returns true if the address has permission, false if not.\\n function hasPermission(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes memory _data\\n ) external view returns (bool);\\n\\n /// @notice Updates the DAO metadata (e.g., an IPFS hash).\\n /// @param _metadata The IPFS hash of the new metadata object.\\n function setMetadata(bytes calldata _metadata) external;\\n\\n /// @notice Emitted when the DAO metadata is updated.\\n /// @param metadata The IPFS hash of the new metadata object.\\n event MetadataSet(bytes metadata);\\n\\n /// @notice Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted.\\n /// @param _callId The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce.\\n /// @param _actions The array of actions.\\n /// @param _allowFailureMap A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @return The array of results obtained from the executed actions in `bytes`.\\n /// @return The resulting failure map containing the actions have actually failed.\\n function execute(\\n bytes32 _callId,\\n Action[] memory _actions,\\n uint256 _allowFailureMap\\n ) external returns (bytes[] memory, uint256);\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param actor The address of the caller.\\n /// @param callId The ID of the call.\\n /// @param actions The array of actions executed.\\n /// @param allowFailureMap The allow failure map encoding which actions are allowed to fail.\\n /// @param failureMap The failure map encoding which actions have failed.\\n /// @param execResults The array with the results of the executed actions.\\n /// @dev The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce.\\n event Executed(\\n address indexed actor,\\n bytes32 callId,\\n Action[] actions,\\n uint256 allowFailureMap,\\n uint256 failureMap,\\n bytes[] execResults\\n );\\n\\n /// @notice Emitted when a standard callback is registered.\\n /// @param interfaceId The ID of the interface.\\n /// @param callbackSelector The selector of the callback function.\\n /// @param magicNumber The magic number to be registered for the callback function selector.\\n event StandardCallbackRegistered(\\n bytes4 interfaceId,\\n bytes4 callbackSelector,\\n bytes4 magicNumber\\n );\\n\\n /// @notice Deposits (native) tokens to the DAO contract with a reference string.\\n /// @param _token The address of the token or address(0) in case of the native token.\\n /// @param _amount The amount of tokens to deposit.\\n /// @param _reference The reference describing the deposit reason.\\n function deposit(address _token, uint256 _amount, string calldata _reference) external payable;\\n\\n /// @notice Emitted when a token deposit has been made to the DAO.\\n /// @param sender The address of the sender.\\n /// @param token The address of the deposited token.\\n /// @param amount The amount of tokens deposited.\\n /// @param _reference The reference describing the deposit reason.\\n event Deposited(\\n address indexed sender,\\n address indexed token,\\n uint256 amount,\\n string _reference\\n );\\n\\n /// @notice Emitted when a native token deposit has been made to the DAO.\\n /// @dev This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).\\n /// @param sender The address of the sender.\\n /// @param amount The amount of native tokens deposited.\\n event NativeTokenDeposited(address sender, uint256 amount);\\n\\n /// @notice Setter for the trusted forwarder verifying the meta transaction.\\n /// @param _trustedForwarder The trusted forwarder address.\\n function setTrustedForwarder(address _trustedForwarder) external;\\n\\n /// @notice Getter for the trusted forwarder verifying the meta transaction.\\n /// @return The trusted forwarder address.\\n function getTrustedForwarder() external view returns (address);\\n\\n /// @notice Emitted when a new TrustedForwarder is set on the DAO.\\n /// @param forwarder the new forwarder address.\\n event TrustedForwarderSet(address forwarder);\\n\\n /// @notice Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\\n /// @param _hash The hash of the data to be signed.\\n /// @param _signature The signature byte array associated with `_hash`.\\n /// @return Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not.\\n function isValidSignature(bytes32 _hash, bytes memory _signature) external returns (bytes4);\\n\\n /// @notice Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\\n /// @param _interfaceId The ID of the interface.\\n /// @param _callbackSelector The selector of the callback function.\\n /// @param _magicNumber The magic number to be registered for the function signature.\\n function registerStandardCallback(\\n bytes4 _interfaceId,\\n bytes4 _callbackSelector,\\n bytes4 _magicNumber\\n ) external;\\n\\n /// @notice Removed function being left here to not corrupt the IDAO interface ID. Any call will revert.\\n /// @dev Introduced in v1.0.0. Removed in v1.4.0.\\n function setSignatureValidator(address) external;\\n}\\n\",\"keccak256\":\"0xb7f615523c26de042edce98731c658f44a1edb2464387ac1b642c4c69f57128e\",\"license\":\"AGPL-3.0-or-later\"},\"src/mocks/plugin/PluginSetupMockData.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {PermissionLib} from \\\"../../permission/PermissionLib.sol\\\";\\n\\naddress constant NO_CONDITION = address(0);\\n\\nerror ConflictingValues();\\n\\n/// @notice Creates a mock `MultiTargetPermission` array by converting a range of `uint160` values into `address` values.\\n/// @param rangeStart The start of the range.\\n/// @param rangeEnd The end of the range (that is not included).\\n/// @param op The permission operation type.\\n/// @return permissions The mock array of permissions.\\n/// @dev DO NOT USE IN PRODUCTION!\\nfunction mockPermissions(\\n uint160 rangeStart,\\n uint160 rangeEnd,\\n PermissionLib.Operation op\\n) pure returns (PermissionLib.MultiTargetPermission[] memory permissions) {\\n if (rangeStart > rangeEnd) revert ConflictingValues();\\n\\n permissions = new PermissionLib.MultiTargetPermission[](rangeEnd - rangeStart);\\n\\n for (uint160 i = rangeStart; i < rangeEnd; i++) {\\n permissions[i - rangeStart] = PermissionLib.MultiTargetPermission({\\n operation: op,\\n where: address(i),\\n who: address(i),\\n condition: PermissionLib.NO_CONDITION,\\n permissionId: keccak256(\\\"MOCK_PERMISSION\\\")\\n });\\n }\\n}\\n\\n/// @notice Creates a mock array of helper addresses of specified length by converting `uint160` values starting from 0 into `address` values.\\n/// @param len The length of the helper array.\\n/// @return helpers The mock array of helper addresses.\\n/// @dev DO NOT USE IN PRODUCTION!\\nfunction mockHelpers(uint160 len) pure returns (address[] memory helpers) {\\n helpers = new address[](len);\\n\\n for (uint160 i = 0; i < len; i++) {\\n helpers[i] = address(i);\\n }\\n}\\n\",\"keccak256\":\"0x529d1b7ea4c348fe18edf81a044792ca8aa1f6ad9a7d2edfd35e38bf8372abf9\",\"license\":\"AGPL-3.0-or-later\"},\"src/mocks/plugin/PluginUUPSUpgradeableMock.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\n/* solhint-disable one-contract-per-file */\\npragma solidity ^0.8.8;\\n\\nimport {PluginUUPSUpgradeable} from \\\"../../plugin/PluginUUPSUpgradeable.sol\\\";\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice A mock upgradeable plugin to be deployed via the UUPS proxy pattern.\\n/// v1.1 (Release 1, Build 1)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableMockBuild1 is PluginUUPSUpgradeable {\\n uint256 public state1;\\n\\n function initialize(IDAO _dao) external initializer {\\n __PluginUUPSUpgradeable_init(_dao);\\n state1 = 1;\\n }\\n}\\n\\n/// @notice A mock upgradeable plugin to be deployed via the UUPS proxy pattern.\\n/// v1.1 (Release 1, Build 2)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableMockBuild2 is PluginUUPSUpgradeable {\\n uint256 public state1;\\n uint256 public state2;\\n\\n function initialize(IDAO _dao) external reinitializer(2) {\\n __PluginUUPSUpgradeable_init(_dao);\\n state1 = 1;\\n state2 = 2;\\n }\\n\\n function initializeFrom(uint16 _previousBuild) external reinitializer(2) {\\n if (_previousBuild < 2) {\\n state2 = 2;\\n }\\n }\\n}\\n\\n/// @notice A mock upgradeable plugin to be deployed via the UUPS proxy pattern.\\n/// v1.1 (Release 1, Build 3)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableMockBuild3 is PluginUUPSUpgradeable {\\n uint256 public state1;\\n uint256 public state2;\\n uint256 public state3;\\n\\n function initialize(IDAO _dao) external reinitializer(3) {\\n __PluginUUPSUpgradeable_init(_dao);\\n state1 = 1;\\n state2 = 2;\\n state3 = 3;\\n }\\n\\n function initializeFrom(uint16 _previousBuild) external reinitializer(3) {\\n if (_previousBuild < 2) {\\n state2 = 2;\\n }\\n if (_previousBuild < 3) {\\n state3 = 3;\\n }\\n }\\n}\\n\\n/// @notice A mock upgradeable plugin missing an initializer function.\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableMockBad is PluginUUPSUpgradeable {\\n uint256 public state1;\\n\\n function notAnInitializer(IDAO _dao) external {\\n __PluginUUPSUpgradeable_init(_dao);\\n state1 = 1;\\n }\\n}\\n\",\"keccak256\":\"0x2917df3b1da0de27f58cf531afeaa4e6c4285717247cbdd9ecc7880ae5cb9cb0\",\"license\":\"AGPL-3.0-or-later\"},\"src/mocks/plugin/PluginUUPSUpgradeableSetupMock.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\n/* solhint-disable one-contract-per-file */\\npragma solidity ^0.8.8;\\n\\nimport {PermissionLib} from \\\"../../permission/PermissionLib.sol\\\";\\nimport {IPluginSetup} from \\\"../../plugin/setup/IPluginSetup.sol\\\";\\nimport {PluginUpgradeableSetup} from \\\"../../plugin/setup/PluginUpgradeableSetup.sol\\\";\\nimport {ProxyLib} from \\\"../../utils/deployment/ProxyLib.sol\\\";\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\nimport {mockPermissions, mockHelpers} from \\\"./PluginSetupMockData.sol\\\";\\nimport {PluginUUPSUpgradeableMockBuild1, PluginUUPSUpgradeableMockBuild2, PluginUUPSUpgradeableMockBuild3} from \\\"./PluginUUPSUpgradeableMock.sol\\\";\\n\\n/// @notice A mock plugin setup of an upgradeable plugin to be deployed via the UUPS pattern.\\n/// v1.1 (Release 1, Build 1)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableSetupMockBuild1 is PluginUpgradeableSetup {\\n using ProxyLib for address;\\n\\n uint16 internal constant THIS_BUILD = 1;\\n\\n constructor() PluginUpgradeableSetup(address(new PluginUUPSUpgradeableMockBuild1())) {}\\n\\n /// @inheritdoc IPluginSetup\\n function prepareInstallation(\\n address _dao,\\n bytes memory\\n ) public returns (address plugin, PreparedSetupData memory preparedSetupData) {\\n bytes memory initData = abi.encodeCall(\\n PluginUUPSUpgradeableMockBuild1.initialize,\\n (IDAO(_dao))\\n );\\n plugin = implementation().deployUUPSProxy(initData);\\n preparedSetupData.helpers = mockHelpers(1);\\n preparedSetupData.permissions = mockPermissions(0, 1, PermissionLib.Operation.Grant);\\n }\\n\\n /// @inheritdoc IPluginSetup\\n /// @dev The default implementation for the initial build 1 that reverts because no earlier build exists.\\n function prepareUpdate(\\n address _dao,\\n uint16 _fromBuild,\\n SetupPayload calldata _payload\\n ) external pure virtual returns (bytes memory, PreparedSetupData memory) {\\n (_dao, _fromBuild, _payload);\\n revert InvalidUpdatePath({fromBuild: 0, thisBuild: THIS_BUILD});\\n }\\n\\n /// @inheritdoc IPluginSetup\\n function prepareUninstallation(\\n address _dao,\\n SetupPayload calldata _payload\\n ) external pure returns (PermissionLib.MultiTargetPermission[] memory permissions) {\\n (_dao, _payload);\\n permissions = mockPermissions(0, THIS_BUILD, PermissionLib.Operation.Revoke);\\n }\\n}\\n\\n/// @notice A mock plugin setup of an upgradeable plugin to be deployed via the UUPS pattern.\\n/// v1.2 (Release 1, Build 2)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableSetupMockBuild2 is PluginUpgradeableSetup {\\n using ProxyLib for address;\\n\\n uint16 internal constant THIS_BUILD = 2;\\n\\n constructor() PluginUpgradeableSetup(address(new PluginUUPSUpgradeableMockBuild2())) {}\\n\\n /// @inheritdoc IPluginSetup\\n function prepareInstallation(\\n address _dao,\\n bytes memory\\n ) external returns (address plugin, PreparedSetupData memory preparedSetupData) {\\n bytes memory initData = abi.encodeCall(\\n PluginUUPSUpgradeableMockBuild2.initialize,\\n (IDAO(_dao))\\n );\\n plugin = implementation().deployUUPSProxy(initData);\\n preparedSetupData.helpers = mockHelpers(THIS_BUILD);\\n preparedSetupData.permissions = mockPermissions(\\n 0,\\n THIS_BUILD,\\n PermissionLib.Operation.Grant\\n );\\n }\\n\\n /// @inheritdoc IPluginSetup\\n function prepareUpdate(\\n address _dao,\\n uint16 _fromBuild,\\n SetupPayload calldata _payload\\n )\\n external\\n pure\\n override\\n returns (bytes memory initData, PreparedSetupData memory preparedSetupData)\\n {\\n (_dao, _payload);\\n\\n // Update from Build 1\\n if (_fromBuild == 1) {\\n preparedSetupData.helpers = mockHelpers(THIS_BUILD);\\n initData = abi.encodeCall(PluginUUPSUpgradeableMockBuild2.initializeFrom, (_fromBuild));\\n preparedSetupData.permissions = mockPermissions(\\n _fromBuild,\\n THIS_BUILD,\\n PermissionLib.Operation.Grant\\n );\\n }\\n }\\n\\n /// @inheritdoc IPluginSetup\\n function prepareUninstallation(\\n address _dao,\\n SetupPayload calldata _payload\\n ) external pure returns (PermissionLib.MultiTargetPermission[] memory permissions) {\\n (_dao, _payload);\\n permissions = mockPermissions(0, THIS_BUILD, PermissionLib.Operation.Revoke);\\n }\\n}\\n\\n/// @notice A mock plugin setup of an upgradeable plugin to be deployed via the UUPS pattern.\\n/// v1.3 (Release 1, Build 3)\\ncontract PluginUUPSUpgradeableSetupMockBuild3 is PluginUpgradeableSetup {\\n using ProxyLib for address;\\n\\n uint16 internal constant THIS_BUILD = 3;\\n\\n constructor() PluginUpgradeableSetup(address(new PluginUUPSUpgradeableMockBuild3())) {}\\n\\n /// @inheritdoc IPluginSetup\\n function prepareInstallation(\\n address _dao,\\n bytes memory\\n ) external returns (address plugin, PreparedSetupData memory preparedSetupData) {\\n bytes memory initData = abi.encodeCall(\\n PluginUUPSUpgradeableMockBuild3.initialize,\\n (IDAO(_dao))\\n );\\n plugin = implementation().deployUUPSProxy(initData);\\n preparedSetupData.helpers = mockHelpers(THIS_BUILD);\\n preparedSetupData.permissions = mockPermissions(\\n 0,\\n THIS_BUILD,\\n PermissionLib.Operation.Grant\\n );\\n }\\n\\n /// @inheritdoc IPluginSetup\\n function prepareUpdate(\\n address _dao,\\n uint16 _fromBuild,\\n SetupPayload calldata _payload\\n )\\n external\\n pure\\n override\\n returns (bytes memory initData, PreparedSetupData memory preparedSetupData)\\n {\\n (_dao, _payload);\\n\\n // Update from Build 1\\n if (_fromBuild == 1) {\\n preparedSetupData.helpers = mockHelpers(THIS_BUILD);\\n initData = abi.encodeCall(PluginUUPSUpgradeableMockBuild3.initializeFrom, (_fromBuild));\\n preparedSetupData.permissions = mockPermissions(\\n _fromBuild,\\n THIS_BUILD,\\n PermissionLib.Operation.Grant\\n );\\n\\n // If this update path should not be supported, you can revert with an error, e.g.,\\n // revert InvalidUpdatePath({fromBuild: _fromBuild, thisBuild: THIS_BUILD});\\n }\\n\\n // Update from Build 2\\n if (_fromBuild == 2) {\\n preparedSetupData.helpers = mockHelpers(THIS_BUILD);\\n initData = abi.encodeCall(PluginUUPSUpgradeableMockBuild3.initializeFrom, (_fromBuild));\\n preparedSetupData.permissions = mockPermissions(\\n _fromBuild,\\n THIS_BUILD,\\n PermissionLib.Operation.Grant\\n );\\n }\\n }\\n\\n /// @inheritdoc IPluginSetup\\n function prepareUninstallation(\\n address _dao,\\n SetupPayload calldata _payload\\n ) external pure returns (PermissionLib.MultiTargetPermission[] memory permissions) {\\n (_dao, _payload);\\n permissions = mockPermissions(0, THIS_BUILD, PermissionLib.Operation.Revoke);\\n }\\n}\\n\",\"keccak256\":\"0x6be5a7611fe85f0e6e1ea08f42bcce810bc4973da1eaa04c88445b8d9af130ba\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/PermissionLib.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title PermissionLib\\n/// @author Aragon X - 2021-2023\\n/// @notice A library containing objects for permission processing.\\n/// @custom:security-contact sirt@aragon.org\\nlibrary PermissionLib {\\n /// @notice A constant expressing that no condition is applied to a permission.\\n address public constant NO_CONDITION = address(0);\\n\\n /// @notice The types of permission operations available in the `PermissionManager`.\\n /// @param Grant The grant operation setting a permission without a condition.\\n /// @param Revoke The revoke operation removing a permission (that was granted with or without a condition).\\n /// @param GrantWithCondition The grant operation setting a permission with a condition.\\n enum Operation {\\n Grant,\\n Revoke,\\n GrantWithCondition\\n }\\n\\n /// @notice A struct containing the information for a permission to be applied on a single target contract without a condition.\\n /// @param operation The permission operation type.\\n /// @param who The address (EOA or contract) receiving the permission.\\n /// @param permissionId The permission identifier.\\n struct SingleTargetPermission {\\n Operation operation;\\n address who;\\n bytes32 permissionId;\\n }\\n\\n /// @notice A struct containing the information for a permission to be applied on multiple target contracts, optionally, with a condition.\\n /// @param operation The permission operation type.\\n /// @param where The address of the target contract for which `who` receives permission.\\n /// @param who The address (EOA or contract) receiving the permission.\\n /// @param condition The `PermissionCondition` that will be asked for authorization on calls connected to the specified permission identifier.\\n /// @param permissionId The permission identifier.\\n struct MultiTargetPermission {\\n Operation operation;\\n address where;\\n address who;\\n address condition;\\n bytes32 permissionId;\\n }\\n}\\n\",\"keccak256\":\"0x470faf3c4891ebc6420ef6cc09f6098917568ccc79268c90954d1478199b6097\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/DaoAuthorizableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ContextUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\\\";\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\nimport {_auth} from \\\"./auth.sol\\\";\\n\\n/// @title DaoAuthorizableUpgradeable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract contract providing a meta-transaction compatible modifier for upgradeable or cloneable contracts to authorize function calls through an associated DAO.\\n/// @dev Make sure to call `__DaoAuthorizableUpgradeable_init` during initialization of the inheriting contract.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract DaoAuthorizableUpgradeable is ContextUpgradeable {\\n /// @notice The associated DAO managing the permissions of inheriting contracts.\\n IDAO private dao_;\\n\\n /// @notice Initializes the contract by setting the associated DAO.\\n /// @param _dao The associated DAO address.\\n // solhint-disable-next-line func-name-mixedcase\\n function __DaoAuthorizableUpgradeable_init(IDAO _dao) internal onlyInitializing {\\n dao_ = _dao;\\n }\\n\\n /// @notice Returns the DAO contract.\\n /// @return The DAO contract.\\n function dao() public view returns (IDAO) {\\n return dao_;\\n }\\n\\n /// @notice A modifier to make functions on inheriting contracts authorized. Permissions to call the function are checked through the associated DAO's permission manager.\\n /// @param _permissionId The permission identifier required to call the method this modifier is applied to.\\n modifier auth(bytes32 _permissionId) {\\n _auth(dao_, address(this), _msgSender(), _permissionId, _msgData());\\n _;\\n }\\n\\n /// @notice This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain (see [OpenZeppelin's guide about storage gaps](https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps)).\\n uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0x7fac6b01b037ba1cb9d6a22d3f43b0785037dcf496ffb672434d9bf7227d2585\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/auth.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice Thrown if a call is unauthorized in the associated DAO.\\n/// @param dao The associated DAO.\\n/// @param where The context in which the authorization reverted.\\n/// @param who The address (EOA or contract) missing the permission.\\n/// @param permissionId The permission identifier.\\nerror DaoUnauthorized(address dao, address where, address who, bytes32 permissionId);\\n\\n/// @notice A free function checking if a caller is granted permissions on a target contract via a permission identifier that redirects the approval to a `PermissionCondition` if this was specified in the setup.\\n/// @param _where The address of the target contract for which `who` receives permission.\\n/// @param _who The address (EOA or contract) owning the permission.\\n/// @param _permissionId The permission identifier.\\n/// @param _data The optional data passed to the `PermissionCondition` registered.\\n/// @custom:security-contact sirt@aragon.org\\nfunction _auth(\\n IDAO _dao,\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes calldata _data\\n) view {\\n if (!_dao.hasPermission(_where, _who, _permissionId, _data))\\n revert DaoUnauthorized({\\n dao: address(_dao),\\n where: _where,\\n who: _who,\\n permissionId: _permissionId\\n });\\n}\\n\",\"keccak256\":\"0x878764b4f87fe0651fb3798fb9cb87c952f8c6caf6ae79c7f09de84df6c00298\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/IPlugin.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IPlugin\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the traits of a plugin.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IPlugin {\\n enum PluginType {\\n UUPS,\\n Cloneable,\\n Constructable\\n }\\n\\n /// @notice Returns the plugin's type\\n function pluginType() external view returns (PluginType);\\n}\\n\",\"keccak256\":\"0xc57cd0d10b6380ab7f54c713a509e88fd8f4ad9288313a0e8e12b8887817ddfe\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/PluginUUPSUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {UUPSUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\\\";\\nimport {IERC1822ProxiableUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport {ERC165Upgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\\\";\\n\\nimport {IProtocolVersion} from \\\"../utils/versioning/IProtocolVersion.sol\\\";\\nimport {ProtocolVersion} from \\\"../utils/versioning/ProtocolVersion.sol\\\";\\nimport {DaoAuthorizableUpgradeable} from \\\"../permission/auth/DaoAuthorizableUpgradeable.sol\\\";\\nimport {IDAO} from \\\"../dao/IDAO.sol\\\";\\nimport {IPlugin} from \\\"./IPlugin.sol\\\";\\n\\n/// @title PluginUUPSUpgradeable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract, upgradeable contract to inherit from when creating a plugin being deployed via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract PluginUUPSUpgradeable is\\n IPlugin,\\n ERC165Upgradeable,\\n UUPSUpgradeable,\\n DaoAuthorizableUpgradeable,\\n ProtocolVersion\\n{\\n // NOTE: When adding new state variables to the contract, the size of `_gap` has to be adapted below as well.\\n\\n /// @notice Disables the initializers on the implementation contract to prevent it from being left uninitialized.\\n /// @custom:oz-upgrades-unsafe-allow constructor\\n constructor() {\\n _disableInitializers();\\n }\\n\\n /// @inheritdoc IPlugin\\n function pluginType() public pure override returns (PluginType) {\\n return PluginType.UUPS;\\n }\\n\\n /// @notice The ID of the permission required to call the `_authorizeUpgrade` function.\\n bytes32 public constant UPGRADE_PLUGIN_PERMISSION_ID = keccak256(\\\"UPGRADE_PLUGIN_PERMISSION\\\");\\n\\n /// @notice Initializes the plugin by storing the associated DAO.\\n /// @param _dao The DAO contract.\\n // solhint-disable-next-line func-name-mixedcase\\n function __PluginUUPSUpgradeable_init(IDAO _dao) internal virtual onlyInitializing {\\n __DaoAuthorizableUpgradeable_init(_dao);\\n }\\n\\n /// @notice Checks if an interface is supported by this or its parent contract.\\n /// @param _interfaceId The ID of the interface.\\n /// @return Returns `true` if the interface is supported.\\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\\n return\\n _interfaceId == type(IPlugin).interfaceId ||\\n _interfaceId == type(IProtocolVersion).interfaceId ||\\n _interfaceId == type(IERC1822ProxiableUpgradeable).interfaceId ||\\n super.supportsInterface(_interfaceId);\\n }\\n\\n /// @notice Returns the address of the implementation contract in the [proxy storage slot](https://eips.ethereum.org/EIPS/eip-1967) slot the [UUPS proxy](https://eips.ethereum.org/EIPS/eip-1822) is pointing to.\\n /// @return The address of the implementation contract.\\n function implementation() public view returns (address) {\\n return _getImplementation();\\n }\\n\\n /// @notice Internal method authorizing the upgrade of the contract via the [upgradeability mechanism for UUPS proxies](https://docs.openzeppelin.com/contracts/4.x/api/proxy#UUPSUpgradeable) (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\\n /// @dev The caller must have the `UPGRADE_PLUGIN_PERMISSION_ID` permission.\\n function _authorizeUpgrade(\\n address\\n )\\n internal\\n virtual\\n override\\n auth(UPGRADE_PLUGIN_PERMISSION_ID)\\n // solhint-disable-next-line no-empty-blocks\\n {\\n\\n }\\n\\n /// @notice This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain (see [OpenZeppelin's guide about storage gaps](https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps)).\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x127e7c4f839cb8c8486070990b78e22313f1ff089ffe6a4ff23ae358e48f0037\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/setup/IPluginSetup.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {PermissionLib} from \\\"../../permission/PermissionLib.sol\\\";\\n\\n// solhint-disable-next-line no-unused-import\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @title IPluginSetup\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for a plugin setup contract to be consumed by the `PluginSetupProcessor` for plugin installations, updates, and uninstallations.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IPluginSetup {\\n /// @notice The data associated with a prepared setup.\\n /// @param helpers The address array of helpers (contracts or EOAs) associated with this plugin version after the installation or update.\\n /// @param permissions The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the installing or updating DAO.\\n struct PreparedSetupData {\\n address[] helpers;\\n PermissionLib.MultiTargetPermission[] permissions;\\n }\\n\\n /// @notice The payload for plugin updates and uninstallations containing the existing contracts as well as optional data to be consumed by the plugin setup.\\n /// @param plugin The address of the `Plugin`.\\n /// @param currentHelpers The address array of all current helpers (contracts or EOAs) associated with the plugin to update from.\\n /// @param data The bytes-encoded data containing the input parameters for the preparation of update/uninstall as specified in the corresponding ABI on the version's metadata.\\n struct SetupPayload {\\n address plugin;\\n address[] currentHelpers;\\n bytes data;\\n }\\n\\n /// @notice Prepares the installation of a plugin.\\n /// @param _dao The address of the installing DAO.\\n /// @param _data The bytes-encoded data containing the input parameters for the installation as specified in the plugin's build metadata JSON file.\\n /// @return plugin The address of the `Plugin` contract being prepared for installation.\\n /// @return preparedSetupData The deployed plugin's relevant data which consists of helpers and permissions.\\n function prepareInstallation(\\n address _dao,\\n bytes calldata _data\\n ) external returns (address plugin, PreparedSetupData memory preparedSetupData);\\n\\n /// @notice Prepares the update of a plugin.\\n /// @param _dao The address of the updating DAO.\\n /// @param _fromBuild The build number of the plugin to update from.\\n /// @param _payload The relevant data necessary for the `prepareUpdate`. See above.\\n /// @return initData The initialization data to be passed to upgradeable contracts when the update is applied in the `PluginSetupProcessor`.\\n /// @return preparedSetupData The deployed plugin's relevant data which consists of helpers and permissions.\\n function prepareUpdate(\\n address _dao,\\n uint16 _fromBuild,\\n SetupPayload calldata _payload\\n ) external returns (bytes memory initData, PreparedSetupData memory preparedSetupData);\\n\\n /// @notice Prepares the uninstallation of a plugin.\\n /// @param _dao The address of the uninstalling DAO.\\n /// @param _payload The relevant data necessary for the `prepareUninstallation`. See above.\\n /// @return permissions The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the uninstalling DAO.\\n function prepareUninstallation(\\n address _dao,\\n SetupPayload calldata _payload\\n ) external returns (PermissionLib.MultiTargetPermission[] memory permissions);\\n\\n /// @notice Returns the plugin implementation address.\\n /// @return The address of the plugin implementation contract.\\n /// @dev The implementation can be instantiated via the `new` keyword, cloned via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)), or proxied via the UUPS proxy pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0x21c99995208039ac6ace219b6f273243811dc2aa66399e8e499e43ec30b82fa9\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/setup/PluginUpgradeableSetup.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ERC165} from \\\"@openzeppelin/contracts/utils/introspection/ERC165.sol\\\";\\n\\nimport {IProtocolVersion} from \\\"../../utils/versioning/IProtocolVersion.sol\\\";\\nimport {ProtocolVersion} from \\\"../../utils/versioning/ProtocolVersion.sol\\\";\\nimport {IPluginSetup} from \\\"./IPluginSetup.sol\\\";\\n\\n/// @title PluginUpgradeableSetup\\n/// @author Aragon X - 2022-2024\\n/// @notice An abstract contract to inherit from to implement the plugin setup for upgradeable plugins, i.e, `PluginUUPSUpgradeable` being deployed via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822) and [ERC-1967](https://eips.ethereum.org/EIPS/eip-1967)).\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract PluginUpgradeableSetup is ERC165, IPluginSetup, ProtocolVersion {\\n /// @notice The address of the plugin implementation contract for initial block explorer verification\\n /// and to create [ERC-1967](https://eips.ethereum.org/EIPS/eip-1967) UUPS proxies from.\\n address internal immutable IMPLEMENTATION;\\n\\n /// @notice Thrown when an update path is not available, for example, if this is the initial build.\\n /// @param fromBuild The build number to update from.\\n /// @param thisBuild The build number of this setup to update to.\\n error InvalidUpdatePath(uint16 fromBuild, uint16 thisBuild);\\n\\n /// @notice The contract constructor, that setting the plugin implementation contract.\\n /// @param _implementation The address of the plugin implementation contract.\\n constructor(address _implementation) {\\n IMPLEMENTATION = _implementation;\\n }\\n\\n /// @notice Checks if this or the parent contract supports an interface by its ID.\\n /// @param _interfaceId The ID of the interface.\\n /// @return Returns `true` if the interface is supported.\\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\\n return\\n _interfaceId == type(IPluginSetup).interfaceId ||\\n _interfaceId == type(IProtocolVersion).interfaceId ||\\n super.supportsInterface(_interfaceId);\\n }\\n\\n /// @inheritdoc IPluginSetup\\n function implementation() public view returns (address) {\\n return IMPLEMENTATION;\\n }\\n}\\n\",\"keccak256\":\"0x2842d919d1ecb4fbeb40953128c3da3b36dcf6e91255089e987c2f11ff8d061e\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/deployment/ProxyLib.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ERC1967Proxy} from \\\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol\\\";\\nimport {Clones} from \\\"@openzeppelin/contracts/proxy/Clones.sol\\\";\\nimport {Address} from \\\"@openzeppelin/contracts/utils/Address.sol\\\";\\n\\n/// @title ProxyLib\\n/// @author Aragon X - 2024\\n/// @notice A library containing methods for the deployment of proxies via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)) and minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)).\\n/// @custom:security-contact sirt@aragon.org\\nlibrary ProxyLib {\\n using Address for address;\\n using Clones for address;\\n\\n /// @notice Creates an [ERC-1967](https://eips.ethereum.org/EIPS/eip-1967) UUPS proxy contract pointing to a logic contract and allows to immediately initialize it.\\n /// @param _logic The logic contract the proxy is pointing to.\\n /// @param _initCalldata The initialization data for this contract.\\n /// @return uupsProxy The address of the UUPS proxy contract created.\\n /// @dev If `_initCalldata` is non-empty, it is used in a delegate call to the `_logic` contract. This will typically be an encoded function call initializing the storage of the proxy (see [OpenZeppelin ERC1967Proxy-constructor](https://docs.openzeppelin.com/contracts/4.x/api/proxy#ERC1967Proxy-constructor-address-bytes-)).\\n function deployUUPSProxy(\\n address _logic,\\n bytes memory _initCalldata\\n ) internal returns (address uupsProxy) {\\n uupsProxy = address(new ERC1967Proxy({_logic: _logic, _data: _initCalldata}));\\n }\\n\\n /// @notice Creates an [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167) minimal proxy contract, also known as clones, pointing to a logic contract and allows to immediately initialize it.\\n /// @param _logic The logic contract the proxy is pointing to.\\n /// @param _initCalldata The initialization data for this contract.\\n /// @return minimalProxy The address of the minimal proxy contract created.\\n /// @dev If `_initCalldata` is non-empty, it is used in a call to the clone contract. This will typically be an encoded function call initializing the storage of the contract.\\n function deployMinimalProxy(\\n address _logic,\\n bytes memory _initCalldata\\n ) internal returns (address minimalProxy) {\\n minimalProxy = _logic.clone();\\n if (_initCalldata.length > 0) {\\n minimalProxy.functionCall({data: _initCalldata});\\n }\\n }\\n}\\n\",\"keccak256\":\"0xef0d1790dfa026381c021daa2ec7267357497f58cd4a2fa5c64e72e0dea95acc\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/IProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IProtocolVersion\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the semantic Aragon OSx protocol version number.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IProtocolVersion {\\n /// @notice Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\\n /// @return _version Returns the semantic Aragon OSx protocol version number.\\n /// @dev This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\\n function protocolVersion() external view returns (uint8[3] memory _version);\\n}\\n\",\"keccak256\":\"0x00a4da654d21dc1bdadbdc8bd54bb86c378c56f85e461ccc31303628ea621361\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/ProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IProtocolVersion} from \\\"./IProtocolVersion.sol\\\";\\n\\n/// @title ProtocolVersion\\n/// @author Aragon X - 2023\\n/// @notice An abstract, stateless, non-upgradeable contract providing the current Aragon OSx protocol version number.\\n/// @dev Do not add any new variables to this contract that would shift down storage in the inheritance chain.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract ProtocolVersion is IProtocolVersion {\\n // IMPORTANT: Do not add any storage variable, see the above notice.\\n\\n /// @inheritdoc IProtocolVersion\\n function protocolVersion() public pure returns (uint8[3] memory) {\\n return [1, 4, 0];\\n }\\n}\\n\",\"keccak256\":\"0x3975c937be935f687c6b6b8f379071232681e98cf04b175d72781b819ea52bdb\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"errors":{"InvalidUpdatePath(uint16,uint16)":[{"notice":"Thrown when an update path is not available, for example, if this is the initial build."}]},"kind":"user","methods":{"implementation()":{"notice":"Returns the plugin implementation address."},"prepareInstallation(address,bytes)":{"notice":"Prepares the installation of a plugin."},"prepareUninstallation(address,(address,address[],bytes))":{"notice":"Prepares the uninstallation of a plugin."},"prepareUpdate(address,uint16,(address,address[],bytes))":{"notice":"Prepares the update of a plugin."},"protocolVersion()":{"notice":"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with."},"supportsInterface(bytes4)":{"notice":"Checks if this or the parent contract supports an interface by its ID."}},"notice":"A mock plugin setup of an upgradeable plugin to be deployed via the UUPS pattern. v1.3 (Release 1, Build 3)","version":1}}},"src/mocks/plugin/extensions/governance/AddresslistMock.sol":{"AddresslistMock":{"abi":[{"inputs":[{"internalType":"address","name":"member","type":"address"}],"name":"InvalidAddresslistUpdate","type":"error"},{"inputs":[{"internalType":"address[]","name":"_newAddresses","type":"address[]"}],"name":"addAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"addresslistLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_blockNumber","type":"uint256"}],"name":"addresslistLengthAtBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"isListed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_blockNumber","type":"uint256"}],"name":"isListedAtBlock","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_exitingAddresses","type":"address[]"}],"name":"removeAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"DO NOT USE IN PRODUCTION!","errors":{"InvalidAddresslistUpdate(address)":[{"params":{"member":"The array of member addresses to be added or removed."}}]},"kind":"dev","methods":{"addresslistLength()":{"returns":{"_0":"The current address list length."}},"addresslistLengthAtBlock(uint256)":{"params":{"_blockNumber":"The specific block to get the count from. If `0`, then the latest checkpoint value is returned."},"returns":{"_0":"The address list length at the specified block number."}},"isListed(address)":{"params":{"_account":"The account address being checked."},"returns":{"_0":"Whether the account is currently listed."}},"isListedAtBlock(address,uint256)":{"params":{"_account":"The account address being checked.","_blockNumber":"The block number."},"returns":{"_0":"Whether the account is listed at the specified block number."}}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b50610905806100206000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c8063a84eb99911610050578063a84eb999146100ba578063b1bb8d26146100cd578063f794062e146100f057600080fd5b806327f1608d146100775780633628731c146100925780636a6b2d86146100a7575b600080fd5b61007f610103565b6040519081526020015b60405180910390f35b6100a56100a0366004610795565b61011d565b005b61007f6100b536600461080a565b61012b565b6100a56100c8366004610795565b61013e565b6100e06100db36600461083f565b610148565b6040519015158152602001610089565b6100e06100fe366004610869565b610174565b600061010f60016101a8565b6001600160e01b0316905090565b61012782826101f1565b5050565b60006101386001836102e9565b92915050565b610127828261039c565b6001600160a01b038216600090815260208190526040812061016a90836102e9565b6001149392505050565b6001600160a01b0381166000908152602081905260408120610195906101a8565b6001600160e01b03166001149050919050565b805460009080156101e7576101d0836101c260018461089a565b600091825260209091200190565b5464010000000090046001600160e01b03166101ea565b60005b9392505050565b60005b818110156102d457610226838383818110610211576102116108ad565b90506020020160208101906100fe9190610869565b1561027c5782828281811061023d5761023d6108ad565b90506020020160208101906102529190610869565b60405163c0b7477d60e01b81526001600160a01b0390911660048201526024015b60405180910390fd5b6102ca6001600080868686818110610296576102966108ad565b90506020020160208101906102ab9190610869565b6001600160a01b03168152602081019190915260400160002090610405565b50506001016101f4565b506102e360016104398361043d565b50505050565b600043821061033a5760405162461bcd60e51b815260206004820181905260248201527f436865636b706f696e74733a20626c6f636b206e6f7420796574206d696e65646044820152606401610273565b600061034583610475565b84549091506000610358868483856104f5565b905080156103865761036f866101c260018461089a565b5464010000000090046001600160e01b0316610389565b60005b6001600160e01b03169695505050505050565b60005b818110156103f6576103bc838383818110610211576102116108ad565b6103d25782828281811061023d5761023d6108ad565b6103ec6000806000868686818110610296576102966108ad565b505060010161039f565b506102e360016105538361043d565b6000806104238461041543610475565b61041e86610558565b6105d7565b6001600160e01b03918216969116945092505050565b0190565b60008061046885610463610450886101a8565b6001600160e01b0316868863ffffffff16565b610405565b915091505b935093915050565b600063ffffffff8211156104f15760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201527f32206269747300000000000000000000000000000000000000000000000000006064820152608401610273565b5090565b60005b8183101561054b57600061050c848461077a565b60008781526020902090915063ffffffff86169082015463ffffffff16111561053757809250610545565b6105428160016108c3565b93505b506104f8565b509392505050565b900390565b60006001600160e01b038211156104f15760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203260448201527f32342062697473000000000000000000000000000000000000000000000000006064820152608401610273565b8254600090819080156107205760006105f5876101c260018561089a565b60408051808201909152905463ffffffff8082168084526401000000009092046001600160e01b0316602084015291925090871610156106775760405162461bcd60e51b815260206004820152601b60248201527f436865636b706f696e743a2064656372656173696e67206b65797300000000006044820152606401610273565b805163ffffffff8088169116036106c05784610698886101c260018661089a565b80546001600160e01b03929092166401000000000263ffffffff909216919091179055610710565b6040805180820190915263ffffffff80881682526001600160e01b0380881660208085019182528b54600181018d5560008d81529190912094519151909216640100000000029216919091179101555b60200151925083915061046d9050565b50506040805180820190915263ffffffff80851682526001600160e01b0380851660208085019182528854600181018a5560008a81529182209551925190931664010000000002919093161792019190915590508161046d565b600061078960028484186108d6565b6101ea908484166108c3565b600080602083850312156107a857600080fd5b823567ffffffffffffffff808211156107c057600080fd5b818501915085601f8301126107d457600080fd5b8135818111156107e357600080fd5b8660208260051b85010111156107f857600080fd5b60209290920196919550909350505050565b60006020828403121561081c57600080fd5b5035919050565b80356001600160a01b038116811461083a57600080fd5b919050565b6000806040838503121561085257600080fd5b61085b83610823565b946020939093013593505050565b60006020828403121561087b57600080fd5b6101ea82610823565b634e487b7160e01b600052601160045260246000fd5b8181038181111561013857610138610884565b634e487b7160e01b600052603260045260246000fd5b8082018082111561013857610138610884565b6000826108f357634e487b7160e01b600052601260045260246000fd5b50049056fea164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x905 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x72 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xA84EB999 GT PUSH2 0x50 JUMPI DUP1 PUSH4 0xA84EB999 EQ PUSH2 0xBA JUMPI DUP1 PUSH4 0xB1BB8D26 EQ PUSH2 0xCD JUMPI DUP1 PUSH4 0xF794062E EQ PUSH2 0xF0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x27F1608D EQ PUSH2 0x77 JUMPI DUP1 PUSH4 0x3628731C EQ PUSH2 0x92 JUMPI DUP1 PUSH4 0x6A6B2D86 EQ PUSH2 0xA7 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7F PUSH2 0x103 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xA5 PUSH2 0xA0 CALLDATASIZE PUSH1 0x4 PUSH2 0x795 JUMP JUMPDEST PUSH2 0x11D JUMP JUMPDEST STOP JUMPDEST PUSH2 0x7F PUSH2 0xB5 CALLDATASIZE PUSH1 0x4 PUSH2 0x80A JUMP JUMPDEST PUSH2 0x12B JUMP JUMPDEST PUSH2 0xA5 PUSH2 0xC8 CALLDATASIZE PUSH1 0x4 PUSH2 0x795 JUMP JUMPDEST PUSH2 0x13E JUMP JUMPDEST PUSH2 0xE0 PUSH2 0xDB CALLDATASIZE PUSH1 0x4 PUSH2 0x83F JUMP JUMPDEST PUSH2 0x148 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x89 JUMP JUMPDEST PUSH2 0xE0 PUSH2 0xFE CALLDATASIZE PUSH1 0x4 PUSH2 0x869 JUMP JUMPDEST PUSH2 0x174 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x10F PUSH1 0x1 PUSH2 0x1A8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x127 DUP3 DUP3 PUSH2 0x1F1 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x138 PUSH1 0x1 DUP4 PUSH2 0x2E9 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x127 DUP3 DUP3 PUSH2 0x39C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0x16A SWAP1 DUP4 PUSH2 0x2E9 JUMP JUMPDEST PUSH1 0x1 EQ SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0x195 SWAP1 PUSH2 0x1A8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 EQ SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 SLOAD PUSH1 0x0 SWAP1 DUP1 ISZERO PUSH2 0x1E7 JUMPI PUSH2 0x1D0 DUP4 PUSH2 0x1C2 PUSH1 0x1 DUP5 PUSH2 0x89A JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SWAP1 JUMP JUMPDEST SLOAD PUSH5 0x100000000 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH2 0x1EA JUMP JUMPDEST PUSH1 0x0 JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x2D4 JUMPI PUSH2 0x226 DUP4 DUP4 DUP4 DUP2 DUP2 LT PUSH2 0x211 JUMPI PUSH2 0x211 PUSH2 0x8AD JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0xFE SWAP2 SWAP1 PUSH2 0x869 JUMP JUMPDEST ISZERO PUSH2 0x27C JUMPI DUP3 DUP3 DUP3 DUP2 DUP2 LT PUSH2 0x23D JUMPI PUSH2 0x23D PUSH2 0x8AD JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x252 SWAP2 SWAP1 PUSH2 0x869 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xC0B7477D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2CA PUSH1 0x1 PUSH1 0x0 DUP1 DUP7 DUP7 DUP7 DUP2 DUP2 LT PUSH2 0x296 JUMPI PUSH2 0x296 PUSH2 0x8AD JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x2AB SWAP2 SWAP1 PUSH2 0x869 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SWAP1 PUSH2 0x405 JUMP JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x1F4 JUMP JUMPDEST POP PUSH2 0x2E3 PUSH1 0x1 PUSH2 0x439 DUP4 PUSH2 0x43D JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 NUMBER DUP3 LT PUSH2 0x33A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x436865636B706F696E74733A20626C6F636B206E6F7420796574206D696E6564 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x273 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x345 DUP4 PUSH2 0x475 JUMP JUMPDEST DUP5 SLOAD SWAP1 SWAP2 POP PUSH1 0x0 PUSH2 0x358 DUP7 DUP5 DUP4 DUP6 PUSH2 0x4F5 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x386 JUMPI PUSH2 0x36F DUP7 PUSH2 0x1C2 PUSH1 0x1 DUP5 PUSH2 0x89A JUMP JUMPDEST SLOAD PUSH5 0x100000000 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH2 0x389 JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x3F6 JUMPI PUSH2 0x3BC DUP4 DUP4 DUP4 DUP2 DUP2 LT PUSH2 0x211 JUMPI PUSH2 0x211 PUSH2 0x8AD JUMP JUMPDEST PUSH2 0x3D2 JUMPI DUP3 DUP3 DUP3 DUP2 DUP2 LT PUSH2 0x23D JUMPI PUSH2 0x23D PUSH2 0x8AD JUMP JUMPDEST PUSH2 0x3EC PUSH1 0x0 DUP1 PUSH1 0x0 DUP7 DUP7 DUP7 DUP2 DUP2 LT PUSH2 0x296 JUMPI PUSH2 0x296 PUSH2 0x8AD JUMP JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x39F JUMP JUMPDEST POP PUSH2 0x2E3 PUSH1 0x1 PUSH2 0x553 DUP4 PUSH2 0x43D JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x423 DUP5 PUSH2 0x415 NUMBER PUSH2 0x475 JUMP JUMPDEST PUSH2 0x41E DUP7 PUSH2 0x558 JUMP JUMPDEST PUSH2 0x5D7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB SWAP2 DUP3 AND SWAP7 SWAP2 AND SWAP5 POP SWAP3 POP POP POP JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x468 DUP6 PUSH2 0x463 PUSH2 0x450 DUP9 PUSH2 0x1A8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND DUP7 DUP9 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x405 JUMP JUMPDEST SWAP2 POP SWAP2 POP JUMPDEST SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH4 0xFFFFFFFF DUP3 GT ISZERO PUSH2 0x4F1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53616665436173743A2076616C756520646F65736E27742066697420696E2033 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x3220626974730000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x273 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP2 DUP4 LT ISZERO PUSH2 0x54B JUMPI PUSH1 0x0 PUSH2 0x50C DUP5 DUP5 PUSH2 0x77A JUMP JUMPDEST PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x20 SWAP1 KECCAK256 SWAP1 SWAP2 POP PUSH4 0xFFFFFFFF DUP7 AND SWAP1 DUP3 ADD SLOAD PUSH4 0xFFFFFFFF AND GT ISZERO PUSH2 0x537 JUMPI DUP1 SWAP3 POP PUSH2 0x545 JUMP JUMPDEST PUSH2 0x542 DUP2 PUSH1 0x1 PUSH2 0x8C3 JUMP JUMPDEST SWAP4 POP JUMPDEST POP PUSH2 0x4F8 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB DUP3 GT ISZERO PUSH2 0x4F1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x27 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53616665436173743A2076616C756520646F65736E27742066697420696E2032 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x3234206269747300000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x273 JUMP JUMPDEST DUP3 SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 DUP1 ISZERO PUSH2 0x720 JUMPI PUSH1 0x0 PUSH2 0x5F5 DUP8 PUSH2 0x1C2 PUSH1 0x1 DUP6 PUSH2 0x89A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE SWAP1 SLOAD PUSH4 0xFFFFFFFF DUP1 DUP3 AND DUP1 DUP5 MSTORE PUSH5 0x100000000 SWAP1 SWAP3 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x20 DUP5 ADD MSTORE SWAP2 SWAP3 POP SWAP1 DUP8 AND LT ISZERO PUSH2 0x677 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x436865636B706F696E743A2064656372656173696E67206B6579730000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x273 JUMP JUMPDEST DUP1 MLOAD PUSH4 0xFFFFFFFF DUP1 DUP9 AND SWAP2 AND SUB PUSH2 0x6C0 JUMPI DUP5 PUSH2 0x698 DUP9 PUSH2 0x1C2 PUSH1 0x1 DUP7 PUSH2 0x89A JUMP JUMPDEST DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB SWAP3 SWAP1 SWAP3 AND PUSH5 0x100000000 MUL PUSH4 0xFFFFFFFF SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x710 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH4 0xFFFFFFFF DUP1 DUP9 AND DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB DUP1 DUP9 AND PUSH1 0x20 DUP1 DUP6 ADD SWAP2 DUP3 MSTORE DUP12 SLOAD PUSH1 0x1 DUP2 ADD DUP14 SSTORE PUSH1 0x0 DUP14 DUP2 MSTORE SWAP2 SWAP1 SWAP2 KECCAK256 SWAP5 MLOAD SWAP2 MLOAD SWAP1 SWAP3 AND PUSH5 0x100000000 MUL SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP2 ADD SSTORE JUMPDEST PUSH1 0x20 ADD MLOAD SWAP3 POP DUP4 SWAP2 POP PUSH2 0x46D SWAP1 POP JUMP JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH4 0xFFFFFFFF DUP1 DUP6 AND DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB DUP1 DUP6 AND PUSH1 0x20 DUP1 DUP6 ADD SWAP2 DUP3 MSTORE DUP9 SLOAD PUSH1 0x1 DUP2 ADD DUP11 SSTORE PUSH1 0x0 DUP11 DUP2 MSTORE SWAP2 DUP3 KECCAK256 SWAP6 MLOAD SWAP3 MLOAD SWAP1 SWAP4 AND PUSH5 0x100000000 MUL SWAP2 SWAP1 SWAP4 AND OR SWAP3 ADD SWAP2 SWAP1 SWAP2 SSTORE SWAP1 POP DUP2 PUSH2 0x46D JUMP JUMPDEST PUSH1 0x0 PUSH2 0x789 PUSH1 0x2 DUP5 DUP5 XOR PUSH2 0x8D6 JUMP JUMPDEST PUSH2 0x1EA SWAP1 DUP5 DUP5 AND PUSH2 0x8C3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x7A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x7C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x7D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x7E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 PUSH1 0x20 DUP3 PUSH1 0x5 SHL DUP6 ADD ADD GT ISZERO PUSH2 0x7F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 SWAP3 SWAP1 SWAP3 ADD SWAP7 SWAP2 SWAP6 POP SWAP1 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x81C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x83A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x852 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x85B DUP4 PUSH2 0x823 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x87B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1EA DUP3 PUSH2 0x823 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x138 JUMPI PUSH2 0x138 PUSH2 0x884 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x138 JUMPI PUSH2 0x138 PUSH2 0x884 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x8F3 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP DIV SWAP1 JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"295:288:55:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_addAddresses_13773":{"entryPoint":497,"id":13773,"parameterSlots":2,"returnSlots":0},"@_insert_1418":{"entryPoint":1495,"id":1418,"parameterSlots":3,"returnSlots":2},"@_removeAddresses_13825":{"entryPoint":924,"id":13825,"parameterSlots":2,"returnSlots":0},"@_uncheckedAdd_14716":{"entryPoint":1081,"id":14716,"parameterSlots":2,"returnSlots":1},"@_uncheckedSub_14732":{"entryPoint":1363,"id":14732,"parameterSlots":2,"returnSlots":1},"@_unsafeAccess_1537":{"entryPoint":null,"id":1537,"parameterSlots":2,"returnSlots":1},"@_upperBinaryLookup_1470":{"entryPoint":1269,"id":1470,"parameterSlots":4,"returnSlots":1},"@addAddresses_12449":{"entryPoint":285,"id":12449,"parameterSlots":2,"returnSlots":0},"@addresslistLengthAtBlock_13711":{"entryPoint":299,"id":13711,"parameterSlots":1,"returnSlots":1},"@addresslistLength_13722":{"entryPoint":259,"id":13722,"parameterSlots":0,"returnSlots":1},"@average_2900":{"entryPoint":1914,"id":2900,"parameterSlots":2,"returnSlots":1},"@getAtBlock_1073":{"entryPoint":745,"id":1073,"parameterSlots":2,"returnSlots":1},"@isListedAtBlock_13680":{"entryPoint":328,"id":13680,"parameterSlots":2,"returnSlots":1},"@isListed_13697":{"entryPoint":372,"id":13697,"parameterSlots":1,"returnSlots":1},"@latest_1265":{"entryPoint":424,"id":1265,"parameterSlots":1,"returnSlots":1},"@push_1201":{"entryPoint":1029,"id":1201,"parameterSlots":2,"returnSlots":2},"@push_1235":{"entryPoint":1085,"id":1235,"parameterSlots":3,"returnSlots":2},"@removeAddresses_12460":{"entryPoint":318,"id":12460,"parameterSlots":2,"returnSlots":0},"@toUint224_3803":{"entryPoint":1368,"id":3803,"parameterSlots":1,"returnSlots":1},"@toUint32_4403":{"entryPoint":1141,"id":4403,"parameterSlots":1,"returnSlots":1},"abi_decode_address":{"entryPoint":2083,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_tuple_t_address":{"entryPoint":2153,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_uint256":{"entryPoint":2111,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_array$_t_address_$dyn_calldata_ptr":{"entryPoint":1941,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_uint256":{"entryPoint":2058,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_4f6b1769383e9e01fad001f10d4f9180a25f63424c2597419936b157d29f34ec__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_65bd29ebd873d82da6b3634513fc6582859c8e00f2a09cb4bdbeddf7d05eb5be__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_9d2acf551b2466898443b9bc3a403a4d86037386bc5a8960c1bbb0f204e69b79__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_c907489dafcfb622d3b83f2657a14d6da2f59e0de3116af0d6a80554c1a7cb19__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"checked_add_t_uint256":{"entryPoint":2243,"id":null,"parameterSlots":2,"returnSlots":1},"checked_div_t_uint256":{"entryPoint":2262,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_t_uint256":{"entryPoint":2202,"id":null,"parameterSlots":2,"returnSlots":1},"panic_error_0x11":{"entryPoint":2180,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x32":{"entryPoint":2221,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:4353:92","statements":[{"nodeType":"YulBlock","src":"6:3:92","statements":[]},{"body":{"nodeType":"YulBlock","src":"115:76:92","statements":[{"nodeType":"YulAssignment","src":"125:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"137:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"148:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"133:3:92"},"nodeType":"YulFunctionCall","src":"133:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"125:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"167:9:92"},{"name":"value0","nodeType":"YulIdentifier","src":"178:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"160:6:92"},"nodeType":"YulFunctionCall","src":"160:25:92"},"nodeType":"YulExpressionStatement","src":"160:25:92"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"84:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"95:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"106:4:92","type":""}],"src":"14:177:92"},{"body":{"nodeType":"YulBlock","src":"301:510:92","statements":[{"body":{"nodeType":"YulBlock","src":"347:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"356:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"359:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"349:6:92"},"nodeType":"YulFunctionCall","src":"349:12:92"},"nodeType":"YulExpressionStatement","src":"349:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"322:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"331:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"318:3:92"},"nodeType":"YulFunctionCall","src":"318:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"343:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"314:3:92"},"nodeType":"YulFunctionCall","src":"314:32:92"},"nodeType":"YulIf","src":"311:52:92"},{"nodeType":"YulVariableDeclaration","src":"372:37:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"399:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"386:12:92"},"nodeType":"YulFunctionCall","src":"386:23:92"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"376:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"418:28:92","value":{"kind":"number","nodeType":"YulLiteral","src":"428:18:92","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"422:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"473:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"482:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"485:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"475:6:92"},"nodeType":"YulFunctionCall","src":"475:12:92"},"nodeType":"YulExpressionStatement","src":"475:12:92"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"461:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"469:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"458:2:92"},"nodeType":"YulFunctionCall","src":"458:14:92"},"nodeType":"YulIf","src":"455:34:92"},{"nodeType":"YulVariableDeclaration","src":"498:32:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"512:9:92"},{"name":"offset","nodeType":"YulIdentifier","src":"523:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"508:3:92"},"nodeType":"YulFunctionCall","src":"508:22:92"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"502:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"578:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"587:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"590:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"580:6:92"},"nodeType":"YulFunctionCall","src":"580:12:92"},"nodeType":"YulExpressionStatement","src":"580:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"557:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"561:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"553:3:92"},"nodeType":"YulFunctionCall","src":"553:13:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"568:7:92"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"549:3:92"},"nodeType":"YulFunctionCall","src":"549:27:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"542:6:92"},"nodeType":"YulFunctionCall","src":"542:35:92"},"nodeType":"YulIf","src":"539:55:92"},{"nodeType":"YulVariableDeclaration","src":"603:30:92","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"630:2:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"617:12:92"},"nodeType":"YulFunctionCall","src":"617:16:92"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"607:6:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"660:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"669:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"672:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"662:6:92"},"nodeType":"YulFunctionCall","src":"662:12:92"},"nodeType":"YulExpressionStatement","src":"662:12:92"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"648:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"656:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"645:2:92"},"nodeType":"YulFunctionCall","src":"645:14:92"},"nodeType":"YulIf","src":"642:34:92"},{"body":{"nodeType":"YulBlock","src":"734:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"743:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"746:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"736:6:92"},"nodeType":"YulFunctionCall","src":"736:12:92"},"nodeType":"YulExpressionStatement","src":"736:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"699:2:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"707:1:92","type":"","value":"5"},{"name":"length","nodeType":"YulIdentifier","src":"710:6:92"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"703:3:92"},"nodeType":"YulFunctionCall","src":"703:14:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"695:3:92"},"nodeType":"YulFunctionCall","src":"695:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"720:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"691:3:92"},"nodeType":"YulFunctionCall","src":"691:32:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"725:7:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"688:2:92"},"nodeType":"YulFunctionCall","src":"688:45:92"},"nodeType":"YulIf","src":"685:65:92"},{"nodeType":"YulAssignment","src":"759:21:92","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"773:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"777:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"769:3:92"},"nodeType":"YulFunctionCall","src":"769:11:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"759:6:92"}]},{"nodeType":"YulAssignment","src":"789:16:92","value":{"name":"length","nodeType":"YulIdentifier","src":"799:6:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"789:6:92"}]}]},"name":"abi_decode_tuple_t_array$_t_address_$dyn_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"259:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"270:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"282:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"290:6:92","type":""}],"src":"196:615:92"},{"body":{"nodeType":"YulBlock","src":"886:110:92","statements":[{"body":{"nodeType":"YulBlock","src":"932:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"941:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"944:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"934:6:92"},"nodeType":"YulFunctionCall","src":"934:12:92"},"nodeType":"YulExpressionStatement","src":"934:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"907:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"916:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"903:3:92"},"nodeType":"YulFunctionCall","src":"903:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"928:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"899:3:92"},"nodeType":"YulFunctionCall","src":"899:32:92"},"nodeType":"YulIf","src":"896:52:92"},{"nodeType":"YulAssignment","src":"957:33:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"980:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"967:12:92"},"nodeType":"YulFunctionCall","src":"967:23:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"957:6:92"}]}]},"name":"abi_decode_tuple_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"852:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"863:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"875:6:92","type":""}],"src":"816:180:92"},{"body":{"nodeType":"YulBlock","src":"1050:147:92","statements":[{"nodeType":"YulAssignment","src":"1060:29:92","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1082:6:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1069:12:92"},"nodeType":"YulFunctionCall","src":"1069:20:92"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"1060:5:92"}]},{"body":{"nodeType":"YulBlock","src":"1175:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1184:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1187:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1177:6:92"},"nodeType":"YulFunctionCall","src":"1177:12:92"},"nodeType":"YulExpressionStatement","src":"1177:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1111:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1122:5:92"},{"kind":"number","nodeType":"YulLiteral","src":"1129:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1118:3:92"},"nodeType":"YulFunctionCall","src":"1118:54:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1108:2:92"},"nodeType":"YulFunctionCall","src":"1108:65:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1101:6:92"},"nodeType":"YulFunctionCall","src":"1101:73:92"},"nodeType":"YulIf","src":"1098:93:92"}]},"name":"abi_decode_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"1029:6:92","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"1040:5:92","type":""}],"src":"1001:196:92"},{"body":{"nodeType":"YulBlock","src":"1289:167:92","statements":[{"body":{"nodeType":"YulBlock","src":"1335:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1344:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1347:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1337:6:92"},"nodeType":"YulFunctionCall","src":"1337:12:92"},"nodeType":"YulExpressionStatement","src":"1337:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1310:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"1319:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1306:3:92"},"nodeType":"YulFunctionCall","src":"1306:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"1331:2:92","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1302:3:92"},"nodeType":"YulFunctionCall","src":"1302:32:92"},"nodeType":"YulIf","src":"1299:52:92"},{"nodeType":"YulAssignment","src":"1360:39:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1389:9:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"1370:18:92"},"nodeType":"YulFunctionCall","src":"1370:29:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1360:6:92"}]},{"nodeType":"YulAssignment","src":"1408:42:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1435:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1446:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1431:3:92"},"nodeType":"YulFunctionCall","src":"1431:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1418:12:92"},"nodeType":"YulFunctionCall","src":"1418:32:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1408:6:92"}]}]},"name":"abi_decode_tuple_t_addresst_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1247:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1258:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1270:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1278:6:92","type":""}],"src":"1202:254:92"},{"body":{"nodeType":"YulBlock","src":"1556:92:92","statements":[{"nodeType":"YulAssignment","src":"1566:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1578:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1589:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1574:3:92"},"nodeType":"YulFunctionCall","src":"1574:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1566:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1608:9:92"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1633:6:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1626:6:92"},"nodeType":"YulFunctionCall","src":"1626:14:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1619:6:92"},"nodeType":"YulFunctionCall","src":"1619:22:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1601:6:92"},"nodeType":"YulFunctionCall","src":"1601:41:92"},"nodeType":"YulExpressionStatement","src":"1601:41:92"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1525:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1536:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1547:4:92","type":""}],"src":"1461:187:92"},{"body":{"nodeType":"YulBlock","src":"1723:116:92","statements":[{"body":{"nodeType":"YulBlock","src":"1769:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1778:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1781:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1771:6:92"},"nodeType":"YulFunctionCall","src":"1771:12:92"},"nodeType":"YulExpressionStatement","src":"1771:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1744:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"1753:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1740:3:92"},"nodeType":"YulFunctionCall","src":"1740:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"1765:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1736:3:92"},"nodeType":"YulFunctionCall","src":"1736:32:92"},"nodeType":"YulIf","src":"1733:52:92"},{"nodeType":"YulAssignment","src":"1794:39:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1823:9:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"1804:18:92"},"nodeType":"YulFunctionCall","src":"1804:29:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1794:6:92"}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1689:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1700:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1712:6:92","type":""}],"src":"1653:186:92"},{"body":{"nodeType":"YulBlock","src":"1876:95:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1893:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1900:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"1905:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1896:3:92"},"nodeType":"YulFunctionCall","src":"1896:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1886:6:92"},"nodeType":"YulFunctionCall","src":"1886:31:92"},"nodeType":"YulExpressionStatement","src":"1886:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1933:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"1936:4:92","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1926:6:92"},"nodeType":"YulFunctionCall","src":"1926:15:92"},"nodeType":"YulExpressionStatement","src":"1926:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1957:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1960:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1950:6:92"},"nodeType":"YulFunctionCall","src":"1950:15:92"},"nodeType":"YulExpressionStatement","src":"1950:15:92"}]},"name":"panic_error_0x11","nodeType":"YulFunctionDefinition","src":"1844:127:92"},{"body":{"nodeType":"YulBlock","src":"2025:79:92","statements":[{"nodeType":"YulAssignment","src":"2035:17:92","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"2047:1:92"},{"name":"y","nodeType":"YulIdentifier","src":"2050:1:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2043:3:92"},"nodeType":"YulFunctionCall","src":"2043:9:92"},"variableNames":[{"name":"diff","nodeType":"YulIdentifier","src":"2035:4:92"}]},{"body":{"nodeType":"YulBlock","src":"2076:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"2078:16:92"},"nodeType":"YulFunctionCall","src":"2078:18:92"},"nodeType":"YulExpressionStatement","src":"2078:18:92"}]},"condition":{"arguments":[{"name":"diff","nodeType":"YulIdentifier","src":"2067:4:92"},{"name":"x","nodeType":"YulIdentifier","src":"2073:1:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2064:2:92"},"nodeType":"YulFunctionCall","src":"2064:11:92"},"nodeType":"YulIf","src":"2061:37:92"}]},"name":"checked_sub_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"2007:1:92","type":""},{"name":"y","nodeType":"YulTypedName","src":"2010:1:92","type":""}],"returnVariables":[{"name":"diff","nodeType":"YulTypedName","src":"2016:4:92","type":""}],"src":"1976:128:92"},{"body":{"nodeType":"YulBlock","src":"2141:95:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2158:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2165:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"2170:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2161:3:92"},"nodeType":"YulFunctionCall","src":"2161:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2151:6:92"},"nodeType":"YulFunctionCall","src":"2151:31:92"},"nodeType":"YulExpressionStatement","src":"2151:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2198:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"2201:4:92","type":"","value":"0x32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2191:6:92"},"nodeType":"YulFunctionCall","src":"2191:15:92"},"nodeType":"YulExpressionStatement","src":"2191:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2222:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2225:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2215:6:92"},"nodeType":"YulFunctionCall","src":"2215:15:92"},"nodeType":"YulExpressionStatement","src":"2215:15:92"}]},"name":"panic_error_0x32","nodeType":"YulFunctionDefinition","src":"2109:127:92"},{"body":{"nodeType":"YulBlock","src":"2342:125:92","statements":[{"nodeType":"YulAssignment","src":"2352:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2364:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2375:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2360:3:92"},"nodeType":"YulFunctionCall","src":"2360:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2352:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2394:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2409:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"2417:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2405:3:92"},"nodeType":"YulFunctionCall","src":"2405:55:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2387:6:92"},"nodeType":"YulFunctionCall","src":"2387:74:92"},"nodeType":"YulExpressionStatement","src":"2387:74:92"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2311:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"2322:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2333:4:92","type":""}],"src":"2241:226:92"},{"body":{"nodeType":"YulBlock","src":"2646:182:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2663:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2674:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2656:6:92"},"nodeType":"YulFunctionCall","src":"2656:21:92"},"nodeType":"YulExpressionStatement","src":"2656:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2697:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2708:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2693:3:92"},"nodeType":"YulFunctionCall","src":"2693:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"2713:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2686:6:92"},"nodeType":"YulFunctionCall","src":"2686:30:92"},"nodeType":"YulExpressionStatement","src":"2686:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2736:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2747:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2732:3:92"},"nodeType":"YulFunctionCall","src":"2732:18:92"},{"hexValue":"436865636b706f696e74733a20626c6f636b206e6f7420796574206d696e6564","kind":"string","nodeType":"YulLiteral","src":"2752:34:92","type":"","value":"Checkpoints: block not yet mined"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2725:6:92"},"nodeType":"YulFunctionCall","src":"2725:62:92"},"nodeType":"YulExpressionStatement","src":"2725:62:92"},{"nodeType":"YulAssignment","src":"2796:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2808:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2819:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2804:3:92"},"nodeType":"YulFunctionCall","src":"2804:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2796:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_65bd29ebd873d82da6b3634513fc6582859c8e00f2a09cb4bdbeddf7d05eb5be__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2623:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2637:4:92","type":""}],"src":"2472:356:92"},{"body":{"nodeType":"YulBlock","src":"3007:228:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3024:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3035:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3017:6:92"},"nodeType":"YulFunctionCall","src":"3017:21:92"},"nodeType":"YulExpressionStatement","src":"3017:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3058:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3069:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3054:3:92"},"nodeType":"YulFunctionCall","src":"3054:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"3074:2:92","type":"","value":"38"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3047:6:92"},"nodeType":"YulFunctionCall","src":"3047:30:92"},"nodeType":"YulExpressionStatement","src":"3047:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3097:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3108:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3093:3:92"},"nodeType":"YulFunctionCall","src":"3093:18:92"},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e2033","kind":"string","nodeType":"YulLiteral","src":"3113:34:92","type":"","value":"SafeCast: value doesn't fit in 3"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3086:6:92"},"nodeType":"YulFunctionCall","src":"3086:62:92"},"nodeType":"YulExpressionStatement","src":"3086:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3168:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3179:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3164:3:92"},"nodeType":"YulFunctionCall","src":"3164:18:92"},{"hexValue":"322062697473","kind":"string","nodeType":"YulLiteral","src":"3184:8:92","type":"","value":"2 bits"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3157:6:92"},"nodeType":"YulFunctionCall","src":"3157:36:92"},"nodeType":"YulExpressionStatement","src":"3157:36:92"},{"nodeType":"YulAssignment","src":"3202:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3214:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3225:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3210:3:92"},"nodeType":"YulFunctionCall","src":"3210:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3202:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_c907489dafcfb622d3b83f2657a14d6da2f59e0de3116af0d6a80554c1a7cb19__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2984:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2998:4:92","type":""}],"src":"2833:402:92"},{"body":{"nodeType":"YulBlock","src":"3288:77:92","statements":[{"nodeType":"YulAssignment","src":"3298:16:92","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"3309:1:92"},{"name":"y","nodeType":"YulIdentifier","src":"3312:1:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3305:3:92"},"nodeType":"YulFunctionCall","src":"3305:9:92"},"variableNames":[{"name":"sum","nodeType":"YulIdentifier","src":"3298:3:92"}]},{"body":{"nodeType":"YulBlock","src":"3337:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"3339:16:92"},"nodeType":"YulFunctionCall","src":"3339:18:92"},"nodeType":"YulExpressionStatement","src":"3339:18:92"}]},"condition":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"3329:1:92"},{"name":"sum","nodeType":"YulIdentifier","src":"3332:3:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3326:2:92"},"nodeType":"YulFunctionCall","src":"3326:10:92"},"nodeType":"YulIf","src":"3323:36:92"}]},"name":"checked_add_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"3271:1:92","type":""},{"name":"y","nodeType":"YulTypedName","src":"3274:1:92","type":""}],"returnVariables":[{"name":"sum","nodeType":"YulTypedName","src":"3280:3:92","type":""}],"src":"3240:125:92"},{"body":{"nodeType":"YulBlock","src":"3544:229:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3561:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3572:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3554:6:92"},"nodeType":"YulFunctionCall","src":"3554:21:92"},"nodeType":"YulExpressionStatement","src":"3554:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3595:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3606:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3591:3:92"},"nodeType":"YulFunctionCall","src":"3591:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"3611:2:92","type":"","value":"39"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3584:6:92"},"nodeType":"YulFunctionCall","src":"3584:30:92"},"nodeType":"YulExpressionStatement","src":"3584:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3634:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3645:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3630:3:92"},"nodeType":"YulFunctionCall","src":"3630:18:92"},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e2032","kind":"string","nodeType":"YulLiteral","src":"3650:34:92","type":"","value":"SafeCast: value doesn't fit in 2"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3623:6:92"},"nodeType":"YulFunctionCall","src":"3623:62:92"},"nodeType":"YulExpressionStatement","src":"3623:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3705:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3716:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3701:3:92"},"nodeType":"YulFunctionCall","src":"3701:18:92"},{"hexValue":"32342062697473","kind":"string","nodeType":"YulLiteral","src":"3721:9:92","type":"","value":"24 bits"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3694:6:92"},"nodeType":"YulFunctionCall","src":"3694:37:92"},"nodeType":"YulExpressionStatement","src":"3694:37:92"},{"nodeType":"YulAssignment","src":"3740:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3752:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3763:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3748:3:92"},"nodeType":"YulFunctionCall","src":"3748:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3740:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_9d2acf551b2466898443b9bc3a403a4d86037386bc5a8960c1bbb0f204e69b79__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3521:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3535:4:92","type":""}],"src":"3370:403:92"},{"body":{"nodeType":"YulBlock","src":"3952:177:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3969:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3980:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3962:6:92"},"nodeType":"YulFunctionCall","src":"3962:21:92"},"nodeType":"YulExpressionStatement","src":"3962:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4003:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4014:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3999:3:92"},"nodeType":"YulFunctionCall","src":"3999:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"4019:2:92","type":"","value":"27"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3992:6:92"},"nodeType":"YulFunctionCall","src":"3992:30:92"},"nodeType":"YulExpressionStatement","src":"3992:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4042:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4053:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4038:3:92"},"nodeType":"YulFunctionCall","src":"4038:18:92"},{"hexValue":"436865636b706f696e743a2064656372656173696e67206b657973","kind":"string","nodeType":"YulLiteral","src":"4058:29:92","type":"","value":"Checkpoint: decreasing keys"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4031:6:92"},"nodeType":"YulFunctionCall","src":"4031:57:92"},"nodeType":"YulExpressionStatement","src":"4031:57:92"},{"nodeType":"YulAssignment","src":"4097:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4109:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4120:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4105:3:92"},"nodeType":"YulFunctionCall","src":"4105:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4097:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_4f6b1769383e9e01fad001f10d4f9180a25f63424c2597419936b157d29f34ec__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3929:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3943:4:92","type":""}],"src":"3778:351:92"},{"body":{"nodeType":"YulBlock","src":"4180:171:92","statements":[{"body":{"nodeType":"YulBlock","src":"4211:111:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4232:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4239:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"4244:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"4235:3:92"},"nodeType":"YulFunctionCall","src":"4235:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4225:6:92"},"nodeType":"YulFunctionCall","src":"4225:31:92"},"nodeType":"YulExpressionStatement","src":"4225:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4276:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"4279:4:92","type":"","value":"0x12"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4269:6:92"},"nodeType":"YulFunctionCall","src":"4269:15:92"},"nodeType":"YulExpressionStatement","src":"4269:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4304:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4307:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4297:6:92"},"nodeType":"YulFunctionCall","src":"4297:15:92"},"nodeType":"YulExpressionStatement","src":"4297:15:92"}]},"condition":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"4200:1:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"4193:6:92"},"nodeType":"YulFunctionCall","src":"4193:9:92"},"nodeType":"YulIf","src":"4190:132:92"},{"nodeType":"YulAssignment","src":"4331:14:92","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"4340:1:92"},{"name":"y","nodeType":"YulIdentifier","src":"4343:1:92"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"4336:3:92"},"nodeType":"YulFunctionCall","src":"4336:9:92"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"4331:1:92"}]}]},"name":"checked_div_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"4165:1:92","type":""},{"name":"y","nodeType":"YulTypedName","src":"4168:1:92","type":""}],"returnVariables":[{"name":"r","nodeType":"YulTypedName","src":"4174:1:92","type":""}],"src":"4134:217:92"}]},"contents":"{\n { }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_decode_tuple_t_array$_t_address_$dyn_calldata_ptr(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let offset := calldataload(headStart)\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n let _2 := add(headStart, offset)\n if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n let length := calldataload(_2)\n if gt(length, _1) { revert(0, 0) }\n if gt(add(add(_2, shl(5, length)), 32), dataEnd) { revert(0, 0) }\n value0 := add(_2, 32)\n value1 := length\n }\n function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := calldataload(headStart)\n }\n function abi_decode_address(offset) -> value\n {\n value := calldataload(offset)\n if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := calldataload(add(headStart, 32))\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n }\n function panic_error_0x11()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n function checked_sub_t_uint256(x, y) -> diff\n {\n diff := sub(x, y)\n if gt(diff, x) { panic_error_0x11() }\n }\n function panic_error_0x32()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_encode_tuple_t_stringliteral_65bd29ebd873d82da6b3634513fc6582859c8e00f2a09cb4bdbeddf7d05eb5be__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 32)\n mstore(add(headStart, 64), \"Checkpoints: block not yet mined\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_c907489dafcfb622d3b83f2657a14d6da2f59e0de3116af0d6a80554c1a7cb19__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 38)\n mstore(add(headStart, 64), \"SafeCast: value doesn't fit in 3\")\n mstore(add(headStart, 96), \"2 bits\")\n tail := add(headStart, 128)\n }\n function checked_add_t_uint256(x, y) -> sum\n {\n sum := add(x, y)\n if gt(x, sum) { panic_error_0x11() }\n }\n function abi_encode_tuple_t_stringliteral_9d2acf551b2466898443b9bc3a403a4d86037386bc5a8960c1bbb0f204e69b79__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 39)\n mstore(add(headStart, 64), \"SafeCast: value doesn't fit in 2\")\n mstore(add(headStart, 96), \"24 bits\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_4f6b1769383e9e01fad001f10d4f9180a25f63424c2597419936b157d29f34ec__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 27)\n mstore(add(headStart, 64), \"Checkpoint: decreasing keys\")\n tail := add(headStart, 96)\n }\n function checked_div_t_uint256(x, y) -> r\n {\n if iszero(y)\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x12)\n revert(0, 0x24)\n }\n r := div(x, y)\n }\n}","id":92,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100725760003560e01c8063a84eb99911610050578063a84eb999146100ba578063b1bb8d26146100cd578063f794062e146100f057600080fd5b806327f1608d146100775780633628731c146100925780636a6b2d86146100a7575b600080fd5b61007f610103565b6040519081526020015b60405180910390f35b6100a56100a0366004610795565b61011d565b005b61007f6100b536600461080a565b61012b565b6100a56100c8366004610795565b61013e565b6100e06100db36600461083f565b610148565b6040519015158152602001610089565b6100e06100fe366004610869565b610174565b600061010f60016101a8565b6001600160e01b0316905090565b61012782826101f1565b5050565b60006101386001836102e9565b92915050565b610127828261039c565b6001600160a01b038216600090815260208190526040812061016a90836102e9565b6001149392505050565b6001600160a01b0381166000908152602081905260408120610195906101a8565b6001600160e01b03166001149050919050565b805460009080156101e7576101d0836101c260018461089a565b600091825260209091200190565b5464010000000090046001600160e01b03166101ea565b60005b9392505050565b60005b818110156102d457610226838383818110610211576102116108ad565b90506020020160208101906100fe9190610869565b1561027c5782828281811061023d5761023d6108ad565b90506020020160208101906102529190610869565b60405163c0b7477d60e01b81526001600160a01b0390911660048201526024015b60405180910390fd5b6102ca6001600080868686818110610296576102966108ad565b90506020020160208101906102ab9190610869565b6001600160a01b03168152602081019190915260400160002090610405565b50506001016101f4565b506102e360016104398361043d565b50505050565b600043821061033a5760405162461bcd60e51b815260206004820181905260248201527f436865636b706f696e74733a20626c6f636b206e6f7420796574206d696e65646044820152606401610273565b600061034583610475565b84549091506000610358868483856104f5565b905080156103865761036f866101c260018461089a565b5464010000000090046001600160e01b0316610389565b60005b6001600160e01b03169695505050505050565b60005b818110156103f6576103bc838383818110610211576102116108ad565b6103d25782828281811061023d5761023d6108ad565b6103ec6000806000868686818110610296576102966108ad565b505060010161039f565b506102e360016105538361043d565b6000806104238461041543610475565b61041e86610558565b6105d7565b6001600160e01b03918216969116945092505050565b0190565b60008061046885610463610450886101a8565b6001600160e01b0316868863ffffffff16565b610405565b915091505b935093915050565b600063ffffffff8211156104f15760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201527f32206269747300000000000000000000000000000000000000000000000000006064820152608401610273565b5090565b60005b8183101561054b57600061050c848461077a565b60008781526020902090915063ffffffff86169082015463ffffffff16111561053757809250610545565b6105428160016108c3565b93505b506104f8565b509392505050565b900390565b60006001600160e01b038211156104f15760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203260448201527f32342062697473000000000000000000000000000000000000000000000000006064820152608401610273565b8254600090819080156107205760006105f5876101c260018561089a565b60408051808201909152905463ffffffff8082168084526401000000009092046001600160e01b0316602084015291925090871610156106775760405162461bcd60e51b815260206004820152601b60248201527f436865636b706f696e743a2064656372656173696e67206b65797300000000006044820152606401610273565b805163ffffffff8088169116036106c05784610698886101c260018661089a565b80546001600160e01b03929092166401000000000263ffffffff909216919091179055610710565b6040805180820190915263ffffffff80881682526001600160e01b0380881660208085019182528b54600181018d5560008d81529190912094519151909216640100000000029216919091179101555b60200151925083915061046d9050565b50506040805180820190915263ffffffff80851682526001600160e01b0380851660208085019182528854600181018a5560008a81529182209551925190931664010000000002919093161792019190915590508161046d565b600061078960028484186108d6565b6101ea908484166108c3565b600080602083850312156107a857600080fd5b823567ffffffffffffffff808211156107c057600080fd5b818501915085601f8301126107d457600080fd5b8135818111156107e357600080fd5b8660208260051b85010111156107f857600080fd5b60209290920196919550909350505050565b60006020828403121561081c57600080fd5b5035919050565b80356001600160a01b038116811461083a57600080fd5b919050565b6000806040838503121561085257600080fd5b61085b83610823565b946020939093013593505050565b60006020828403121561087b57600080fd5b6101ea82610823565b634e487b7160e01b600052601160045260246000fd5b8181038181111561013857610138610884565b634e487b7160e01b600052603260045260246000fd5b8082018082111561013857610138610884565b6000826108f357634e487b7160e01b600052601260045260246000fd5b50049056fea164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x72 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xA84EB999 GT PUSH2 0x50 JUMPI DUP1 PUSH4 0xA84EB999 EQ PUSH2 0xBA JUMPI DUP1 PUSH4 0xB1BB8D26 EQ PUSH2 0xCD JUMPI DUP1 PUSH4 0xF794062E EQ PUSH2 0xF0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x27F1608D EQ PUSH2 0x77 JUMPI DUP1 PUSH4 0x3628731C EQ PUSH2 0x92 JUMPI DUP1 PUSH4 0x6A6B2D86 EQ PUSH2 0xA7 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7F PUSH2 0x103 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xA5 PUSH2 0xA0 CALLDATASIZE PUSH1 0x4 PUSH2 0x795 JUMP JUMPDEST PUSH2 0x11D JUMP JUMPDEST STOP JUMPDEST PUSH2 0x7F PUSH2 0xB5 CALLDATASIZE PUSH1 0x4 PUSH2 0x80A JUMP JUMPDEST PUSH2 0x12B JUMP JUMPDEST PUSH2 0xA5 PUSH2 0xC8 CALLDATASIZE PUSH1 0x4 PUSH2 0x795 JUMP JUMPDEST PUSH2 0x13E JUMP JUMPDEST PUSH2 0xE0 PUSH2 0xDB CALLDATASIZE PUSH1 0x4 PUSH2 0x83F JUMP JUMPDEST PUSH2 0x148 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x89 JUMP JUMPDEST PUSH2 0xE0 PUSH2 0xFE CALLDATASIZE PUSH1 0x4 PUSH2 0x869 JUMP JUMPDEST PUSH2 0x174 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x10F PUSH1 0x1 PUSH2 0x1A8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x127 DUP3 DUP3 PUSH2 0x1F1 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x138 PUSH1 0x1 DUP4 PUSH2 0x2E9 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x127 DUP3 DUP3 PUSH2 0x39C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0x16A SWAP1 DUP4 PUSH2 0x2E9 JUMP JUMPDEST PUSH1 0x1 EQ SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0x195 SWAP1 PUSH2 0x1A8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 EQ SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 SLOAD PUSH1 0x0 SWAP1 DUP1 ISZERO PUSH2 0x1E7 JUMPI PUSH2 0x1D0 DUP4 PUSH2 0x1C2 PUSH1 0x1 DUP5 PUSH2 0x89A JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SWAP1 JUMP JUMPDEST SLOAD PUSH5 0x100000000 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH2 0x1EA JUMP JUMPDEST PUSH1 0x0 JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x2D4 JUMPI PUSH2 0x226 DUP4 DUP4 DUP4 DUP2 DUP2 LT PUSH2 0x211 JUMPI PUSH2 0x211 PUSH2 0x8AD JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0xFE SWAP2 SWAP1 PUSH2 0x869 JUMP JUMPDEST ISZERO PUSH2 0x27C JUMPI DUP3 DUP3 DUP3 DUP2 DUP2 LT PUSH2 0x23D JUMPI PUSH2 0x23D PUSH2 0x8AD JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x252 SWAP2 SWAP1 PUSH2 0x869 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xC0B7477D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2CA PUSH1 0x1 PUSH1 0x0 DUP1 DUP7 DUP7 DUP7 DUP2 DUP2 LT PUSH2 0x296 JUMPI PUSH2 0x296 PUSH2 0x8AD JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x2AB SWAP2 SWAP1 PUSH2 0x869 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SWAP1 PUSH2 0x405 JUMP JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x1F4 JUMP JUMPDEST POP PUSH2 0x2E3 PUSH1 0x1 PUSH2 0x439 DUP4 PUSH2 0x43D JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 NUMBER DUP3 LT PUSH2 0x33A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x436865636B706F696E74733A20626C6F636B206E6F7420796574206D696E6564 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x273 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x345 DUP4 PUSH2 0x475 JUMP JUMPDEST DUP5 SLOAD SWAP1 SWAP2 POP PUSH1 0x0 PUSH2 0x358 DUP7 DUP5 DUP4 DUP6 PUSH2 0x4F5 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x386 JUMPI PUSH2 0x36F DUP7 PUSH2 0x1C2 PUSH1 0x1 DUP5 PUSH2 0x89A JUMP JUMPDEST SLOAD PUSH5 0x100000000 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH2 0x389 JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x3F6 JUMPI PUSH2 0x3BC DUP4 DUP4 DUP4 DUP2 DUP2 LT PUSH2 0x211 JUMPI PUSH2 0x211 PUSH2 0x8AD JUMP JUMPDEST PUSH2 0x3D2 JUMPI DUP3 DUP3 DUP3 DUP2 DUP2 LT PUSH2 0x23D JUMPI PUSH2 0x23D PUSH2 0x8AD JUMP JUMPDEST PUSH2 0x3EC PUSH1 0x0 DUP1 PUSH1 0x0 DUP7 DUP7 DUP7 DUP2 DUP2 LT PUSH2 0x296 JUMPI PUSH2 0x296 PUSH2 0x8AD JUMP JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x39F JUMP JUMPDEST POP PUSH2 0x2E3 PUSH1 0x1 PUSH2 0x553 DUP4 PUSH2 0x43D JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x423 DUP5 PUSH2 0x415 NUMBER PUSH2 0x475 JUMP JUMPDEST PUSH2 0x41E DUP7 PUSH2 0x558 JUMP JUMPDEST PUSH2 0x5D7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB SWAP2 DUP3 AND SWAP7 SWAP2 AND SWAP5 POP SWAP3 POP POP POP JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x468 DUP6 PUSH2 0x463 PUSH2 0x450 DUP9 PUSH2 0x1A8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND DUP7 DUP9 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x405 JUMP JUMPDEST SWAP2 POP SWAP2 POP JUMPDEST SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH4 0xFFFFFFFF DUP3 GT ISZERO PUSH2 0x4F1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53616665436173743A2076616C756520646F65736E27742066697420696E2033 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x3220626974730000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x273 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP2 DUP4 LT ISZERO PUSH2 0x54B JUMPI PUSH1 0x0 PUSH2 0x50C DUP5 DUP5 PUSH2 0x77A JUMP JUMPDEST PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x20 SWAP1 KECCAK256 SWAP1 SWAP2 POP PUSH4 0xFFFFFFFF DUP7 AND SWAP1 DUP3 ADD SLOAD PUSH4 0xFFFFFFFF AND GT ISZERO PUSH2 0x537 JUMPI DUP1 SWAP3 POP PUSH2 0x545 JUMP JUMPDEST PUSH2 0x542 DUP2 PUSH1 0x1 PUSH2 0x8C3 JUMP JUMPDEST SWAP4 POP JUMPDEST POP PUSH2 0x4F8 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB DUP3 GT ISZERO PUSH2 0x4F1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x27 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53616665436173743A2076616C756520646F65736E27742066697420696E2032 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x3234206269747300000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x273 JUMP JUMPDEST DUP3 SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 DUP1 ISZERO PUSH2 0x720 JUMPI PUSH1 0x0 PUSH2 0x5F5 DUP8 PUSH2 0x1C2 PUSH1 0x1 DUP6 PUSH2 0x89A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE SWAP1 SLOAD PUSH4 0xFFFFFFFF DUP1 DUP3 AND DUP1 DUP5 MSTORE PUSH5 0x100000000 SWAP1 SWAP3 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x20 DUP5 ADD MSTORE SWAP2 SWAP3 POP SWAP1 DUP8 AND LT ISZERO PUSH2 0x677 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x436865636B706F696E743A2064656372656173696E67206B6579730000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x273 JUMP JUMPDEST DUP1 MLOAD PUSH4 0xFFFFFFFF DUP1 DUP9 AND SWAP2 AND SUB PUSH2 0x6C0 JUMPI DUP5 PUSH2 0x698 DUP9 PUSH2 0x1C2 PUSH1 0x1 DUP7 PUSH2 0x89A JUMP JUMPDEST DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB SWAP3 SWAP1 SWAP3 AND PUSH5 0x100000000 MUL PUSH4 0xFFFFFFFF SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x710 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH4 0xFFFFFFFF DUP1 DUP9 AND DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB DUP1 DUP9 AND PUSH1 0x20 DUP1 DUP6 ADD SWAP2 DUP3 MSTORE DUP12 SLOAD PUSH1 0x1 DUP2 ADD DUP14 SSTORE PUSH1 0x0 DUP14 DUP2 MSTORE SWAP2 SWAP1 SWAP2 KECCAK256 SWAP5 MLOAD SWAP2 MLOAD SWAP1 SWAP3 AND PUSH5 0x100000000 MUL SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP2 ADD SSTORE JUMPDEST PUSH1 0x20 ADD MLOAD SWAP3 POP DUP4 SWAP2 POP PUSH2 0x46D SWAP1 POP JUMP JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH4 0xFFFFFFFF DUP1 DUP6 AND DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB DUP1 DUP6 AND PUSH1 0x20 DUP1 DUP6 ADD SWAP2 DUP3 MSTORE DUP9 SLOAD PUSH1 0x1 DUP2 ADD DUP11 SSTORE PUSH1 0x0 DUP11 DUP2 MSTORE SWAP2 DUP3 KECCAK256 SWAP6 MLOAD SWAP3 MLOAD SWAP1 SWAP4 AND PUSH5 0x100000000 MUL SWAP2 SWAP1 SWAP4 AND OR SWAP3 ADD SWAP2 SWAP1 SWAP2 SSTORE SWAP1 POP DUP2 PUSH2 0x46D JUMP JUMPDEST PUSH1 0x0 PUSH2 0x789 PUSH1 0x2 DUP5 DUP5 XOR PUSH2 0x8D6 JUMP JUMPDEST PUSH2 0x1EA SWAP1 DUP5 DUP5 AND PUSH2 0x8C3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x7A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x7C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x7D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x7E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 PUSH1 0x20 DUP3 PUSH1 0x5 SHL DUP6 ADD ADD GT ISZERO PUSH2 0x7F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 SWAP3 SWAP1 SWAP3 ADD SWAP7 SWAP2 SWAP6 POP SWAP1 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x81C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x83A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x852 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x85B DUP4 PUSH2 0x823 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x87B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1EA DUP3 PUSH2 0x823 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x138 JUMPI PUSH2 0x138 PUSH2 0x884 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x138 JUMPI PUSH2 0x138 PUSH2 0x884 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x8F3 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP DIV SWAP1 JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"295:288:55:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2721:129:76;;;:::i;:::-;;;160:25:92;;;148:2;133:18;2721:129:76;;;;;;;;341:110:55;;;;;;:::i;:::-;;:::i;:::-;;2430:172:76;;;;;;:::i;:::-;;:::i;457:124:55:-;;;;;;:::i;:::-;;:::i;1602:209:76:-;;;;;;:::i;:::-;;:::i;:::-;;;1626:14:92;;1619:22;1601:41;;1589:2;1574:18;1602:209:76;1461:187:92;2004:142:76;;;;;;:::i;:::-;;:::i;2721:129::-;2779:7;2805:38;:29;:36;:38::i;:::-;-1:-1:-1;;;;;2798:45:76;;;2721:129;:::o;341:110:55:-;416:28;430:13;;416;:28::i;:::-;341:110;;:::o;2430:172:76:-;2515:7;2541:54;:29;2582:12;2541:40;:54::i;:::-;2534:61;2430:172;-1:-1:-1;;2430:172:76:o;457:124:55:-;539:35;556:17;;539:16;:35::i;1602:209:76:-;-1:-1:-1;;;;;1741:33:76;;1718:4;1741:33;;;;;;;;;;:58;;1786:12;1741:44;:58::i;:::-;1803:1;1741:63;;1602:209;-1:-1:-1;;;1602:209:76:o;2004:142::-;-1:-1:-1;;;;;2092:33:76;;2069:4;2092:33;;;;;;;;;;:42;;:40;:42::i;:::-;-1:-1:-1;;;;;2092:47:76;2138:1;2092:47;2085:54;;2004:142;;;:::o;3867:205:7:-;3961:24;;3928:7;;4002:8;;:63;;4017:41;4031:4;4050:7;4056:1;4050:3;:7;:::i;:::-;7702:25;7762:20;;;7827:4;7814:18;;;7810:28;;7617:237;4017:41;:48;;;;-1:-1:-1;;;;;4017:48:7;4002:63;;;4013:1;4002:63;3995:70;3867:205;-1:-1:-1;;;3867:205:7:o;2992:519:76:-;3081:9;3076:348;3092:24;;;3076:348;;;3138:26;3147:13;;3161:1;3147:16;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;3138:26::-;3134:114;;;3216:13;;3230:1;3216:16;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;3191:42;;-1:-1:-1;;;3191:42:76;;-1:-1:-1;;;;;2405:55:92;;;3191:42:76;;;2387:74:92;2360:18;;3191:42:76;;;;;;;;3134:114;3304:49;3351:1;3304:23;:41;3328:13;;3342:1;3328:16;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3304:41:76;;;;;;;;;;;;-1:-1:-1;3304:41:76;;:46;:49::i;:::-;-1:-1:-1;;3396:3:76;;3076:348;;;-1:-1:-1;3433:71:76;:29;3468:13;3483;3433:34;:71::i;:::-;;;2992:519;;:::o;1255:450:7:-;1341:7;1382:12;1368:11;:26;1360:71;;;;-1:-1:-1;;;1360:71:7;;2674:2:92;1360:71:7;;;2656:21:92;;;2693:18;;;2686:30;2752:34;2732:18;;;2725:62;2804:18;;1360:71:7;2472:356:92;1360:71:7;1441:10;1454:41;1483:11;1454:28;:41::i;:::-;1520:24;;1441:54;;-1:-1:-1;1506:11:7;1568:50;1520:4;1441:54;1506:11;1520:24;1568:18;:50::i;:::-;1554:64;-1:-1:-1;1635:8:7;;:63;;1650:41;1664:4;1683:7;1689:1;1683:3;:7;:::i;1650:41::-;:48;;;;-1:-1:-1;;;;;1650:48:7;1635:63;;;1646:1;1635:63;-1:-1:-1;;;;;1628:70:7;;1255:450;-1:-1:-1;;;;;;1255:450:7:o;3674:551:76:-;3770:9;3765:369;3781:28;;;3765:369;;;3832:30;3841:17;;3859:1;3841:20;;;;;;;:::i;3832:30::-;3827:123;;3914:17;;3932:1;3914:20;;;;;;;:::i;3827:123::-;4010:53;4061:1;4010:23;:45;4034:17;;4052:1;4034:20;;;;;;;:::i;4010:53::-;-1:-1:-1;;4106:3:76;;3765:369;;;-1:-1:-1;4143:75:76;:29;4178:13;4193:17;4143:34;:75::i;3066:219:7:-;3135:7;;3170:108;3178:4;3197:42;3226:12;3197:28;:42::i;:::-;3241:36;3271:5;3241:29;:36::i;:::-;3170:7;:108::i;:::-;-1:-1:-1;;;;;3163:115:7;;;;;;;-1:-1:-1;3066:219:7;-1:-1:-1;;;3066:219:7:o;309:115:88:-;410:5;;309:115::o;3517:230:7:-;3670:7;3679;3705:35;3710:4;3716:23;3719:12;3726:4;3719:6;:12::i;:::-;-1:-1:-1;;;;;3716:23:7;3733:5;3716:2;:23;;:::i;:::-;3705:4;:35::i;:::-;3698:42;;;;3517:230;;;;;;;:::o;15275:187:14:-;15331:6;15366:16;15357:25;;;15349:76;;;;-1:-1:-1;;;15349:76:14;;3035:2:92;15349:76:14;;;3017:21:92;3074:2;3054:18;;;3047:30;3113:34;3093:18;;;3086:62;3184:8;3164:18;;;3157:36;3210:19;;15349:76:14;2833:402:92;15349:76:14;-1:-1:-1;15449:5:14;15275:187::o;6229:449:7:-;6383:7;6402:249;6415:4;6409:3;:10;6402:249;;;6435:11;6449:34;6473:3;6478:4;6449:23;:34::i;:::-;7702:25;7762:20;;;7827:4;7814:18;;6435:48;;-1:-1:-1;6501:43:7;;;;7810:28;;6501:37;;;:43;6497:144;;;6571:3;6564:10;;6497:144;;;6619:7;:3;6625:1;6619:7;:::i;:::-;6613:13;;6497:144;6421:230;6402:249;;;-1:-1:-1;6667:4:7;6229:449;-1:-1:-1;;;6229:449:7:o;665:115:88:-;766:5;;;665:115::o;2847:192:14:-;2904:7;-1:-1:-1;;;;;2931:26:14;;;2923:78;;;;-1:-1:-1;;;2923:78:14;;3572:2:92;2923:78:14;;;3554:21:92;3611:2;3591:18;;;3584:30;3650:34;3630:18;;;3623:62;3721:9;3701:18;;;3694:37;3748:19;;2923:78:14;3370:403:92;5027:856:7;5157:11;;5115:7;;;;5183;;5179:698;;5258:22;5283:28;5297:4;5303:7;5309:1;5303:3;:7;:::i;5283:28::-;5258:53;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5258:53:7;;;;;;;-1:-1:-1;5389:24:7;;;-1:-1:-1;5389:24:7;5381:64;;;;-1:-1:-1;;;5381:64:7;;3980:2:92;5381:64:7;;;3962:21:92;4019:2;3999:18;;;3992:30;4058:29;4038:18;;;4031:57;4105:18;;5381:64:7;3778:351:92;5381:64:7;5509:17;;:24;;;;;;;5505:202;;5591:5;5553:28;5567:4;5573:7;5579:1;5573:3;:7;:::i;5553:28::-;:43;;-1:-1:-1;;;;;5553:43:7;;;;;;;;;;;;;;;;5505:202;;;5645:46;;;;;;;;;;;;;;;-1:-1:-1;;;;;5645:46:7;;;;;;;;;;5635:57;;;;;;;-1:-1:-1;5635:57:7;;;;;;;;;;;;;;;;;;;;;;;;;5505:202;5728:11;;;;-1:-1:-1;5741:5:7;;-1:-1:-1;5720:27:7;;-1:-1:-1;5720:27:7;5179:698;-1:-1:-1;;5788:46:7;;;;;;;;;;;;;;;-1:-1:-1;;;;;5788:46:7;;;;;;;;;;5778:57;;;;;;;-1:-1:-1;5778:57:7;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5827:5:7;5849:17;;816:153:13;878:7;951:11;961:1;952:5;;;951:11;:::i;:::-;941:21;;942:5;;;941:21;:::i;196:615:92:-;282:6;290;343:2;331:9;322:7;318:23;314:32;311:52;;;359:1;356;349:12;311:52;399:9;386:23;428:18;469:2;461:6;458:14;455:34;;;485:1;482;475:12;455:34;523:6;512:9;508:22;498:32;;568:7;561:4;557:2;553:13;549:27;539:55;;590:1;587;580:12;539:55;630:2;617:16;656:2;648:6;645:14;642:34;;;672:1;669;662:12;642:34;725:7;720:2;710:6;707:1;703:14;699:2;695:23;691:32;688:45;685:65;;;746:1;743;736:12;685:65;777:2;769:11;;;;;799:6;;-1:-1:-1;196:615:92;;-1:-1:-1;;;;196:615:92:o;816:180::-;875:6;928:2;916:9;907:7;903:23;899:32;896:52;;;944:1;941;934:12;896:52;-1:-1:-1;967:23:92;;816:180;-1:-1:-1;816:180:92:o;1001:196::-;1069:20;;-1:-1:-1;;;;;1118:54:92;;1108:65;;1098:93;;1187:1;1184;1177:12;1098:93;1001:196;;;:::o;1202:254::-;1270:6;1278;1331:2;1319:9;1310:7;1306:23;1302:32;1299:52;;;1347:1;1344;1337:12;1299:52;1370:29;1389:9;1370:29;:::i;:::-;1360:39;1446:2;1431:18;;;;1418:32;;-1:-1:-1;;;1202:254:92:o;1653:186::-;1712:6;1765:2;1753:9;1744:7;1740:23;1736:32;1733:52;;;1781:1;1778;1771:12;1733:52;1804:29;1823:9;1804:29;:::i;1844:127::-;1905:10;1900:3;1896:20;1893:1;1886:31;1936:4;1933:1;1926:15;1960:4;1957:1;1950:15;1976:128;2043:9;;;2064:11;;;2061:37;;;2078:18;;:::i;2109:127::-;2170:10;2165:3;2161:20;2158:1;2151:31;2201:4;2198:1;2191:15;2225:4;2222:1;2215:15;3240:125;3305:9;;;3326:10;;;3323:36;;;3339:18;;:::i;4134:217::-;4174:1;4200;4190:132;;4244:10;4239:3;4235:20;4232:1;4225:31;4279:4;4276:1;4269:15;4307:4;4304:1;4297:15;4190:132;-1:-1:-1;4336:9:92;;4134:217::o"},"gasEstimates":{"creation":{"codeDepositCost":"461800","executionCost":"499","totalCost":"462299"},"external":{"addAddresses(address[])":"infinite","addresslistLength()":"4681","addresslistLengthAtBlock(uint256)":"infinite","isListed(address)":"infinite","isListedAtBlock(address,uint256)":"infinite","removeAddresses(address[])":"infinite"}},"methodIdentifiers":{"addAddresses(address[])":"3628731c","addresslistLength()":"27f1608d","addresslistLengthAtBlock(uint256)":"6a6b2d86","isListed(address)":"f794062e","isListedAtBlock(address,uint256)":"b1bb8d26","removeAddresses(address[])":"a84eb999"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"member\",\"type\":\"address\"}],\"name\":\"InvalidAddresslistUpdate\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_newAddresses\",\"type\":\"address[]\"}],\"name\":\"addAddresses\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"addresslistLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_blockNumber\",\"type\":\"uint256\"}],\"name\":\"addresslistLengthAtBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"isListed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_blockNumber\",\"type\":\"uint256\"}],\"name\":\"isListedAtBlock\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_exitingAddresses\",\"type\":\"address[]\"}],\"name\":\"removeAddresses\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"DO NOT USE IN PRODUCTION!\",\"errors\":{\"InvalidAddresslistUpdate(address)\":[{\"params\":{\"member\":\"The array of member addresses to be added or removed.\"}}]},\"kind\":\"dev\",\"methods\":{\"addresslistLength()\":{\"returns\":{\"_0\":\"The current address list length.\"}},\"addresslistLengthAtBlock(uint256)\":{\"params\":{\"_blockNumber\":\"The specific block to get the count from. If `0`, then the latest checkpoint value is returned.\"},\"returns\":{\"_0\":\"The address list length at the specified block number.\"}},\"isListed(address)\":{\"params\":{\"_account\":\"The account address being checked.\"},\"returns\":{\"_0\":\"Whether the account is currently listed.\"}},\"isListedAtBlock(address,uint256)\":{\"params\":{\"_account\":\"The account address being checked.\",\"_blockNumber\":\"The block number.\"},\"returns\":{\"_0\":\"Whether the account is listed at the specified block number.\"}}},\"version\":1},\"userdoc\":{\"errors\":{\"InvalidAddresslistUpdate(address)\":[{\"notice\":\"Thrown when the address list update is invalid, which can be caused by the addition of an existing member or removal of a non-existing member.\"}]},\"kind\":\"user\",\"methods\":{\"addresslistLength()\":{\"notice\":\"Returns the current length of the address list.\"},\"addresslistLengthAtBlock(uint256)\":{\"notice\":\"Returns the length of the address list at a specific block number.\"},\"isListed(address)\":{\"notice\":\"Checks if an account is currently on the address list.\"},\"isListedAtBlock(address,uint256)\":{\"notice\":\"Checks if an account is on the address list at a specific block number.\"}},\"notice\":\"A mock addresslist that everyone can add and remove addresses to and from, respectively.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/mocks/plugin/extensions/governance/AddresslistMock.sol\":\"AddresslistMock\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/utils/CheckpointsUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Checkpoints.sol)\\n// This file was procedurally generated from scripts/generate/templates/Checkpoints.js.\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./math/MathUpgradeable.sol\\\";\\nimport \\\"./math/SafeCastUpgradeable.sol\\\";\\n\\n/**\\n * @dev This library defines the `History` struct, for checkpointing values as they change at different points in\\n * time, and later looking up past values by block number. See {Votes} as an example.\\n *\\n * To create a history of checkpoints define a variable type `Checkpoints.History` in your contract, and store a new\\n * checkpoint for the current transaction block using the {push} function.\\n *\\n * _Available since v4.5._\\n */\\nlibrary CheckpointsUpgradeable {\\n struct History {\\n Checkpoint[] _checkpoints;\\n }\\n\\n struct Checkpoint {\\n uint32 _blockNumber;\\n uint224 _value;\\n }\\n\\n /**\\n * @dev Returns the value at a given block number. If a checkpoint is not available at that block, the closest one\\n * before it is returned, or zero otherwise. Because the number returned corresponds to that at the end of the\\n * block, the requested block number must be in the past, excluding the current block.\\n */\\n function getAtBlock(History storage self, uint256 blockNumber) internal view returns (uint256) {\\n require(blockNumber < block.number, \\\"Checkpoints: block not yet mined\\\");\\n uint32 key = SafeCastUpgradeable.toUint32(blockNumber);\\n\\n uint256 len = self._checkpoints.length;\\n uint256 pos = _upperBinaryLookup(self._checkpoints, key, 0, len);\\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\\n }\\n\\n /**\\n * @dev Returns the value at a given block number. If a checkpoint is not available at that block, the closest one\\n * before it is returned, or zero otherwise. Similar to {upperLookup} but optimized for the case when the searched\\n * checkpoint is probably \\\"recent\\\", defined as being among the last sqrt(N) checkpoints where N is the number of\\n * checkpoints.\\n */\\n function getAtProbablyRecentBlock(History storage self, uint256 blockNumber) internal view returns (uint256) {\\n require(blockNumber < block.number, \\\"Checkpoints: block not yet mined\\\");\\n uint32 key = SafeCastUpgradeable.toUint32(blockNumber);\\n\\n uint256 len = self._checkpoints.length;\\n\\n uint256 low = 0;\\n uint256 high = len;\\n\\n if (len > 5) {\\n uint256 mid = len - MathUpgradeable.sqrt(len);\\n if (key < _unsafeAccess(self._checkpoints, mid)._blockNumber) {\\n high = mid;\\n } else {\\n low = mid + 1;\\n }\\n }\\n\\n uint256 pos = _upperBinaryLookup(self._checkpoints, key, low, high);\\n\\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\\n }\\n\\n /**\\n * @dev Pushes a value onto a History so that it is stored as the checkpoint for the current block.\\n *\\n * Returns previous value and new value.\\n */\\n function push(History storage self, uint256 value) internal returns (uint256, uint256) {\\n return _insert(self._checkpoints, SafeCastUpgradeable.toUint32(block.number), SafeCastUpgradeable.toUint224(value));\\n }\\n\\n /**\\n * @dev Pushes a value onto a History, by updating the latest value using binary operation `op`. The new value will\\n * be set to `op(latest, delta)`.\\n *\\n * Returns previous value and new value.\\n */\\n function push(\\n History storage self,\\n function(uint256, uint256) view returns (uint256) op,\\n uint256 delta\\n ) internal returns (uint256, uint256) {\\n return push(self, op(latest(self), delta));\\n }\\n\\n /**\\n * @dev Returns the value in the most recent checkpoint, or zero if there are no checkpoints.\\n */\\n function latest(History storage self) internal view returns (uint224) {\\n uint256 pos = self._checkpoints.length;\\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\\n }\\n\\n /**\\n * @dev Returns whether there is a checkpoint in the structure (i.e. it is not empty), and if so the key and value\\n * in the most recent checkpoint.\\n */\\n function latestCheckpoint(\\n History storage self\\n ) internal view returns (bool exists, uint32 _blockNumber, uint224 _value) {\\n uint256 pos = self._checkpoints.length;\\n if (pos == 0) {\\n return (false, 0, 0);\\n } else {\\n Checkpoint memory ckpt = _unsafeAccess(self._checkpoints, pos - 1);\\n return (true, ckpt._blockNumber, ckpt._value);\\n }\\n }\\n\\n /**\\n * @dev Returns the number of checkpoint.\\n */\\n function length(History storage self) internal view returns (uint256) {\\n return self._checkpoints.length;\\n }\\n\\n /**\\n * @dev Pushes a (`key`, `value`) pair into an ordered list of checkpoints, either by inserting a new checkpoint,\\n * or by updating the last one.\\n */\\n function _insert(Checkpoint[] storage self, uint32 key, uint224 value) private returns (uint224, uint224) {\\n uint256 pos = self.length;\\n\\n if (pos > 0) {\\n // Copying to memory is important here.\\n Checkpoint memory last = _unsafeAccess(self, pos - 1);\\n\\n // Checkpoint keys must be non-decreasing.\\n require(last._blockNumber <= key, \\\"Checkpoint: decreasing keys\\\");\\n\\n // Update or push new checkpoint\\n if (last._blockNumber == key) {\\n _unsafeAccess(self, pos - 1)._value = value;\\n } else {\\n self.push(Checkpoint({_blockNumber: key, _value: value}));\\n }\\n return (last._value, value);\\n } else {\\n self.push(Checkpoint({_blockNumber: key, _value: value}));\\n return (0, value);\\n }\\n }\\n\\n /**\\n * @dev Return the index of the last (most recent) checkpoint with key lower or equal than the search key, or `high` if there is none.\\n * `low` and `high` define a section where to do the search, with inclusive `low` and exclusive `high`.\\n *\\n * WARNING: `high` should not be greater than the array's length.\\n */\\n function _upperBinaryLookup(\\n Checkpoint[] storage self,\\n uint32 key,\\n uint256 low,\\n uint256 high\\n ) private view returns (uint256) {\\n while (low < high) {\\n uint256 mid = MathUpgradeable.average(low, high);\\n if (_unsafeAccess(self, mid)._blockNumber > key) {\\n high = mid;\\n } else {\\n low = mid + 1;\\n }\\n }\\n return high;\\n }\\n\\n /**\\n * @dev Return the index of the first (oldest) checkpoint with key is greater or equal than the search key, or `high` if there is none.\\n * `low` and `high` define a section where to do the search, with inclusive `low` and exclusive `high`.\\n *\\n * WARNING: `high` should not be greater than the array's length.\\n */\\n function _lowerBinaryLookup(\\n Checkpoint[] storage self,\\n uint32 key,\\n uint256 low,\\n uint256 high\\n ) private view returns (uint256) {\\n while (low < high) {\\n uint256 mid = MathUpgradeable.average(low, high);\\n if (_unsafeAccess(self, mid)._blockNumber < key) {\\n low = mid + 1;\\n } else {\\n high = mid;\\n }\\n }\\n return high;\\n }\\n\\n /**\\n * @dev Access an element of the array without performing bounds check. The position is assumed to be within bounds.\\n */\\n function _unsafeAccess(Checkpoint[] storage self, uint256 pos) private pure returns (Checkpoint storage result) {\\n assembly {\\n mstore(0, self.slot)\\n result.slot := add(keccak256(0, 0x20), pos)\\n }\\n }\\n\\n struct Trace224 {\\n Checkpoint224[] _checkpoints;\\n }\\n\\n struct Checkpoint224 {\\n uint32 _key;\\n uint224 _value;\\n }\\n\\n /**\\n * @dev Pushes a (`key`, `value`) pair into a Trace224 so that it is stored as the checkpoint.\\n *\\n * Returns previous value and new value.\\n */\\n function push(Trace224 storage self, uint32 key, uint224 value) internal returns (uint224, uint224) {\\n return _insert(self._checkpoints, key, value);\\n }\\n\\n /**\\n * @dev Returns the value in the first (oldest) checkpoint with key greater or equal than the search key, or zero if there is none.\\n */\\n function lowerLookup(Trace224 storage self, uint32 key) internal view returns (uint224) {\\n uint256 len = self._checkpoints.length;\\n uint256 pos = _lowerBinaryLookup(self._checkpoints, key, 0, len);\\n return pos == len ? 0 : _unsafeAccess(self._checkpoints, pos)._value;\\n }\\n\\n /**\\n * @dev Returns the value in the last (most recent) checkpoint with key lower or equal than the search key, or zero if there is none.\\n */\\n function upperLookup(Trace224 storage self, uint32 key) internal view returns (uint224) {\\n uint256 len = self._checkpoints.length;\\n uint256 pos = _upperBinaryLookup(self._checkpoints, key, 0, len);\\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\\n }\\n\\n /**\\n * @dev Returns the value in the last (most recent) checkpoint with key lower or equal than the search key, or zero if there is none.\\n *\\n * NOTE: This is a variant of {upperLookup} that is optimised to find \\\"recent\\\" checkpoint (checkpoints with high keys).\\n */\\n function upperLookupRecent(Trace224 storage self, uint32 key) internal view returns (uint224) {\\n uint256 len = self._checkpoints.length;\\n\\n uint256 low = 0;\\n uint256 high = len;\\n\\n if (len > 5) {\\n uint256 mid = len - MathUpgradeable.sqrt(len);\\n if (key < _unsafeAccess(self._checkpoints, mid)._key) {\\n high = mid;\\n } else {\\n low = mid + 1;\\n }\\n }\\n\\n uint256 pos = _upperBinaryLookup(self._checkpoints, key, low, high);\\n\\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\\n }\\n\\n /**\\n * @dev Returns the value in the most recent checkpoint, or zero if there are no checkpoints.\\n */\\n function latest(Trace224 storage self) internal view returns (uint224) {\\n uint256 pos = self._checkpoints.length;\\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\\n }\\n\\n /**\\n * @dev Returns whether there is a checkpoint in the structure (i.e. it is not empty), and if so the key and value\\n * in the most recent checkpoint.\\n */\\n function latestCheckpoint(Trace224 storage self) internal view returns (bool exists, uint32 _key, uint224 _value) {\\n uint256 pos = self._checkpoints.length;\\n if (pos == 0) {\\n return (false, 0, 0);\\n } else {\\n Checkpoint224 memory ckpt = _unsafeAccess(self._checkpoints, pos - 1);\\n return (true, ckpt._key, ckpt._value);\\n }\\n }\\n\\n /**\\n * @dev Returns the number of checkpoint.\\n */\\n function length(Trace224 storage self) internal view returns (uint256) {\\n return self._checkpoints.length;\\n }\\n\\n /**\\n * @dev Pushes a (`key`, `value`) pair into an ordered list of checkpoints, either by inserting a new checkpoint,\\n * or by updating the last one.\\n */\\n function _insert(Checkpoint224[] storage self, uint32 key, uint224 value) private returns (uint224, uint224) {\\n uint256 pos = self.length;\\n\\n if (pos > 0) {\\n // Copying to memory is important here.\\n Checkpoint224 memory last = _unsafeAccess(self, pos - 1);\\n\\n // Checkpoint keys must be non-decreasing.\\n require(last._key <= key, \\\"Checkpoint: decreasing keys\\\");\\n\\n // Update or push new checkpoint\\n if (last._key == key) {\\n _unsafeAccess(self, pos - 1)._value = value;\\n } else {\\n self.push(Checkpoint224({_key: key, _value: value}));\\n }\\n return (last._value, value);\\n } else {\\n self.push(Checkpoint224({_key: key, _value: value}));\\n return (0, value);\\n }\\n }\\n\\n /**\\n * @dev Return the index of the last (most recent) checkpoint with key lower or equal than the search key, or `high` if there is none.\\n * `low` and `high` define a section where to do the search, with inclusive `low` and exclusive `high`.\\n *\\n * WARNING: `high` should not be greater than the array's length.\\n */\\n function _upperBinaryLookup(\\n Checkpoint224[] storage self,\\n uint32 key,\\n uint256 low,\\n uint256 high\\n ) private view returns (uint256) {\\n while (low < high) {\\n uint256 mid = MathUpgradeable.average(low, high);\\n if (_unsafeAccess(self, mid)._key > key) {\\n high = mid;\\n } else {\\n low = mid + 1;\\n }\\n }\\n return high;\\n }\\n\\n /**\\n * @dev Return the index of the first (oldest) checkpoint with key is greater or equal than the search key, or `high` if there is none.\\n * `low` and `high` define a section where to do the search, with inclusive `low` and exclusive `high`.\\n *\\n * WARNING: `high` should not be greater than the array's length.\\n */\\n function _lowerBinaryLookup(\\n Checkpoint224[] storage self,\\n uint32 key,\\n uint256 low,\\n uint256 high\\n ) private view returns (uint256) {\\n while (low < high) {\\n uint256 mid = MathUpgradeable.average(low, high);\\n if (_unsafeAccess(self, mid)._key < key) {\\n low = mid + 1;\\n } else {\\n high = mid;\\n }\\n }\\n return high;\\n }\\n\\n /**\\n * @dev Access an element of the array without performing bounds check. The position is assumed to be within bounds.\\n */\\n function _unsafeAccess(\\n Checkpoint224[] storage self,\\n uint256 pos\\n ) private pure returns (Checkpoint224 storage result) {\\n assembly {\\n mstore(0, self.slot)\\n result.slot := add(keccak256(0, 0x20), pos)\\n }\\n }\\n\\n struct Trace160 {\\n Checkpoint160[] _checkpoints;\\n }\\n\\n struct Checkpoint160 {\\n uint96 _key;\\n uint160 _value;\\n }\\n\\n /**\\n * @dev Pushes a (`key`, `value`) pair into a Trace160 so that it is stored as the checkpoint.\\n *\\n * Returns previous value and new value.\\n */\\n function push(Trace160 storage self, uint96 key, uint160 value) internal returns (uint160, uint160) {\\n return _insert(self._checkpoints, key, value);\\n }\\n\\n /**\\n * @dev Returns the value in the first (oldest) checkpoint with key greater or equal than the search key, or zero if there is none.\\n */\\n function lowerLookup(Trace160 storage self, uint96 key) internal view returns (uint160) {\\n uint256 len = self._checkpoints.length;\\n uint256 pos = _lowerBinaryLookup(self._checkpoints, key, 0, len);\\n return pos == len ? 0 : _unsafeAccess(self._checkpoints, pos)._value;\\n }\\n\\n /**\\n * @dev Returns the value in the last (most recent) checkpoint with key lower or equal than the search key, or zero if there is none.\\n */\\n function upperLookup(Trace160 storage self, uint96 key) internal view returns (uint160) {\\n uint256 len = self._checkpoints.length;\\n uint256 pos = _upperBinaryLookup(self._checkpoints, key, 0, len);\\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\\n }\\n\\n /**\\n * @dev Returns the value in the last (most recent) checkpoint with key lower or equal than the search key, or zero if there is none.\\n *\\n * NOTE: This is a variant of {upperLookup} that is optimised to find \\\"recent\\\" checkpoint (checkpoints with high keys).\\n */\\n function upperLookupRecent(Trace160 storage self, uint96 key) internal view returns (uint160) {\\n uint256 len = self._checkpoints.length;\\n\\n uint256 low = 0;\\n uint256 high = len;\\n\\n if (len > 5) {\\n uint256 mid = len - MathUpgradeable.sqrt(len);\\n if (key < _unsafeAccess(self._checkpoints, mid)._key) {\\n high = mid;\\n } else {\\n low = mid + 1;\\n }\\n }\\n\\n uint256 pos = _upperBinaryLookup(self._checkpoints, key, low, high);\\n\\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\\n }\\n\\n /**\\n * @dev Returns the value in the most recent checkpoint, or zero if there are no checkpoints.\\n */\\n function latest(Trace160 storage self) internal view returns (uint160) {\\n uint256 pos = self._checkpoints.length;\\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\\n }\\n\\n /**\\n * @dev Returns whether there is a checkpoint in the structure (i.e. it is not empty), and if so the key and value\\n * in the most recent checkpoint.\\n */\\n function latestCheckpoint(Trace160 storage self) internal view returns (bool exists, uint96 _key, uint160 _value) {\\n uint256 pos = self._checkpoints.length;\\n if (pos == 0) {\\n return (false, 0, 0);\\n } else {\\n Checkpoint160 memory ckpt = _unsafeAccess(self._checkpoints, pos - 1);\\n return (true, ckpt._key, ckpt._value);\\n }\\n }\\n\\n /**\\n * @dev Returns the number of checkpoint.\\n */\\n function length(Trace160 storage self) internal view returns (uint256) {\\n return self._checkpoints.length;\\n }\\n\\n /**\\n * @dev Pushes a (`key`, `value`) pair into an ordered list of checkpoints, either by inserting a new checkpoint,\\n * or by updating the last one.\\n */\\n function _insert(Checkpoint160[] storage self, uint96 key, uint160 value) private returns (uint160, uint160) {\\n uint256 pos = self.length;\\n\\n if (pos > 0) {\\n // Copying to memory is important here.\\n Checkpoint160 memory last = _unsafeAccess(self, pos - 1);\\n\\n // Checkpoint keys must be non-decreasing.\\n require(last._key <= key, \\\"Checkpoint: decreasing keys\\\");\\n\\n // Update or push new checkpoint\\n if (last._key == key) {\\n _unsafeAccess(self, pos - 1)._value = value;\\n } else {\\n self.push(Checkpoint160({_key: key, _value: value}));\\n }\\n return (last._value, value);\\n } else {\\n self.push(Checkpoint160({_key: key, _value: value}));\\n return (0, value);\\n }\\n }\\n\\n /**\\n * @dev Return the index of the last (most recent) checkpoint with key lower or equal than the search key, or `high` if there is none.\\n * `low` and `high` define a section where to do the search, with inclusive `low` and exclusive `high`.\\n *\\n * WARNING: `high` should not be greater than the array's length.\\n */\\n function _upperBinaryLookup(\\n Checkpoint160[] storage self,\\n uint96 key,\\n uint256 low,\\n uint256 high\\n ) private view returns (uint256) {\\n while (low < high) {\\n uint256 mid = MathUpgradeable.average(low, high);\\n if (_unsafeAccess(self, mid)._key > key) {\\n high = mid;\\n } else {\\n low = mid + 1;\\n }\\n }\\n return high;\\n }\\n\\n /**\\n * @dev Return the index of the first (oldest) checkpoint with key is greater or equal than the search key, or `high` if there is none.\\n * `low` and `high` define a section where to do the search, with inclusive `low` and exclusive `high`.\\n *\\n * WARNING: `high` should not be greater than the array's length.\\n */\\n function _lowerBinaryLookup(\\n Checkpoint160[] storage self,\\n uint96 key,\\n uint256 low,\\n uint256 high\\n ) private view returns (uint256) {\\n while (low < high) {\\n uint256 mid = MathUpgradeable.average(low, high);\\n if (_unsafeAccess(self, mid)._key < key) {\\n low = mid + 1;\\n } else {\\n high = mid;\\n }\\n }\\n return high;\\n }\\n\\n /**\\n * @dev Access an element of the array without performing bounds check. The position is assumed to be within bounds.\\n */\\n function _unsafeAccess(\\n Checkpoint160[] storage self,\\n uint256 pos\\n ) private pure returns (Checkpoint160 storage result) {\\n assembly {\\n mstore(0, self.slot)\\n result.slot := add(keccak256(0, 0x20), pos)\\n }\\n }\\n}\\n\",\"keccak256\":\"0x51ea916844ee2c53874c6895ce37acbca0250977b49b48909d75ad439f38f211\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/math/MathUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/math/Math.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard math utilities missing in the Solidity language.\\n */\\nlibrary MathUpgradeable {\\n enum Rounding {\\n Down, // Toward negative infinity\\n Up, // Toward infinity\\n Zero // Toward zero\\n }\\n\\n /**\\n * @dev Returns the largest of two numbers.\\n */\\n function max(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two numbers.\\n */\\n function min(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two numbers. The result is rounded towards\\n * zero.\\n */\\n function average(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b) / 2 can overflow.\\n return (a & b) + (a ^ b) / 2;\\n }\\n\\n /**\\n * @dev Returns the ceiling of the division of two numbers.\\n *\\n * This differs from standard division with `/` in that it rounds up instead\\n * of rounding down.\\n */\\n function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b - 1) / b can overflow on addition, so we distribute.\\n return a == 0 ? 0 : (a - 1) / b + 1;\\n }\\n\\n /**\\n * @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\\n * @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)\\n * with further edits by Uniswap Labs also under MIT license.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator) internal pure returns (uint256 result) {\\n unchecked {\\n // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use\\n // use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\\n // variables such that product = prod1 * 2^256 + prod0.\\n uint256 prod0; // Least significant 256 bits of the product\\n uint256 prod1; // Most significant 256 bits of the product\\n assembly {\\n let mm := mulmod(x, y, not(0))\\n prod0 := mul(x, y)\\n prod1 := sub(sub(mm, prod0), lt(mm, prod0))\\n }\\n\\n // Handle non-overflow cases, 256 by 256 division.\\n if (prod1 == 0) {\\n // Solidity will revert if denominator == 0, unlike the div opcode on its own.\\n // The surrounding unchecked block does not change this fact.\\n // See https://docs.soliditylang.org/en/latest/control-structures.html#checked-or-unchecked-arithmetic.\\n return prod0 / denominator;\\n }\\n\\n // Make sure the result is less than 2^256. Also prevents denominator == 0.\\n require(denominator > prod1, \\\"Math: mulDiv overflow\\\");\\n\\n ///////////////////////////////////////////////\\n // 512 by 256 division.\\n ///////////////////////////////////////////////\\n\\n // Make division exact by subtracting the remainder from [prod1 prod0].\\n uint256 remainder;\\n assembly {\\n // Compute remainder using mulmod.\\n remainder := mulmod(x, y, denominator)\\n\\n // Subtract 256 bit number from 512 bit number.\\n prod1 := sub(prod1, gt(remainder, prod0))\\n prod0 := sub(prod0, remainder)\\n }\\n\\n // Factor powers of two out of denominator and compute largest power of two divisor of denominator. Always >= 1.\\n // See https://cs.stackexchange.com/q/138556/92363.\\n\\n // Does not overflow because the denominator cannot be zero at this stage in the function.\\n uint256 twos = denominator & (~denominator + 1);\\n assembly {\\n // Divide denominator by twos.\\n denominator := div(denominator, twos)\\n\\n // Divide [prod1 prod0] by twos.\\n prod0 := div(prod0, twos)\\n\\n // Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one.\\n twos := add(div(sub(0, twos), twos), 1)\\n }\\n\\n // Shift in bits from prod1 into prod0.\\n prod0 |= prod1 * twos;\\n\\n // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such\\n // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for\\n // four bits. That is, denominator * inv = 1 mod 2^4.\\n uint256 inverse = (3 * denominator) ^ 2;\\n\\n // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also works\\n // in modular arithmetic, doubling the correct bits in each step.\\n inverse *= 2 - denominator * inverse; // inverse mod 2^8\\n inverse *= 2 - denominator * inverse; // inverse mod 2^16\\n inverse *= 2 - denominator * inverse; // inverse mod 2^32\\n inverse *= 2 - denominator * inverse; // inverse mod 2^64\\n inverse *= 2 - denominator * inverse; // inverse mod 2^128\\n inverse *= 2 - denominator * inverse; // inverse mod 2^256\\n\\n // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\\n // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is\\n // less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1\\n // is no longer required.\\n result = prod0 * inverse;\\n return result;\\n }\\n }\\n\\n /**\\n * @notice Calculates x * y / denominator with full precision, following the selected rounding direction.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator, Rounding rounding) internal pure returns (uint256) {\\n uint256 result = mulDiv(x, y, denominator);\\n if (rounding == Rounding.Up && mulmod(x, y, denominator) > 0) {\\n result += 1;\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down.\\n *\\n * Inspired by Henry S. Warren, Jr.'s \\\"Hacker's Delight\\\" (Chapter 11).\\n */\\n function sqrt(uint256 a) internal pure returns (uint256) {\\n if (a == 0) {\\n return 0;\\n }\\n\\n // For our first guess, we get the biggest power of 2 which is smaller than the square root of the target.\\n //\\n // We know that the \\\"msb\\\" (most significant bit) of our target number `a` is a power of 2 such that we have\\n // `msb(a) <= a < 2*msb(a)`. This value can be written `msb(a)=2**k` with `k=log2(a)`.\\n //\\n // This can be rewritten `2**log2(a) <= a < 2**(log2(a) + 1)`\\n // \\u2192 `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))`\\n // \\u2192 `2**(k/2) <= sqrt(a) < 2**((k+1)/2) <= 2**(k/2 + 1)`\\n //\\n // Consequently, `2**(log2(a) / 2)` is a good first approximation of `sqrt(a)` with at least 1 correct bit.\\n uint256 result = 1 << (log2(a) >> 1);\\n\\n // At this point `result` is an estimation with one bit of precision. We know the true value is a uint128,\\n // since it is the square root of a uint256. Newton's method converges quadratically (precision doubles at\\n // every iteration). We thus need at most 7 iteration to turn our partial result with one bit of precision\\n // into the expected uint128 result.\\n unchecked {\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n return min(result, a / result);\\n }\\n }\\n\\n /**\\n * @notice Calculates sqrt(a), following the selected rounding direction.\\n */\\n function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = sqrt(a);\\n return result + (rounding == Rounding.Up && result * result < a ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 2, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 128;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 64;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 32;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 16;\\n }\\n if (value >> 8 > 0) {\\n value >>= 8;\\n result += 8;\\n }\\n if (value >> 4 > 0) {\\n value >>= 4;\\n result += 4;\\n }\\n if (value >> 2 > 0) {\\n value >>= 2;\\n result += 2;\\n }\\n if (value >> 1 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 2, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log2(value);\\n return result + (rounding == Rounding.Up && 1 << result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 10, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >= 10 ** 64) {\\n value /= 10 ** 64;\\n result += 64;\\n }\\n if (value >= 10 ** 32) {\\n value /= 10 ** 32;\\n result += 32;\\n }\\n if (value >= 10 ** 16) {\\n value /= 10 ** 16;\\n result += 16;\\n }\\n if (value >= 10 ** 8) {\\n value /= 10 ** 8;\\n result += 8;\\n }\\n if (value >= 10 ** 4) {\\n value /= 10 ** 4;\\n result += 4;\\n }\\n if (value >= 10 ** 2) {\\n value /= 10 ** 2;\\n result += 2;\\n }\\n if (value >= 10 ** 1) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log10(value);\\n return result + (rounding == Rounding.Up && 10 ** result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 256, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n *\\n * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.\\n */\\n function log256(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 16;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 8;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 4;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 2;\\n }\\n if (value >> 8 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 256, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log256(value);\\n return result + (rounding == Rounding.Up && 1 << (result << 3) < value ? 1 : 0);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x2bc0007987c229ae7624eb29be6a9b84f6a6a5872f76248b15208b131ea41c4e\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/SafeCast.sol)\\n// This file was procedurally generated from scripts/generate/templates/SafeCast.js.\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Wrappers over Solidity's uintXX/intXX casting operators with added overflow\\n * checks.\\n *\\n * Downcasting from uint256/int256 in Solidity does not revert on overflow. This can\\n * easily result in undesired exploitation or bugs, since developers usually\\n * assume that overflows raise errors. `SafeCast` restores this intuition by\\n * reverting the transaction when such an operation overflows.\\n *\\n * Using this library instead of the unchecked operations eliminates an entire\\n * class of bugs, so it's recommended to use it always.\\n *\\n * Can be combined with {SafeMath} and {SignedSafeMath} to extend it to smaller types, by performing\\n * all math on `uint256` and `int256` and then downcasting.\\n */\\nlibrary SafeCastUpgradeable {\\n /**\\n * @dev Returns the downcasted uint248 from uint256, reverting on\\n * overflow (when the input is greater than largest uint248).\\n *\\n * Counterpart to Solidity's `uint248` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 248 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint248(uint256 value) internal pure returns (uint248) {\\n require(value <= type(uint248).max, \\\"SafeCast: value doesn't fit in 248 bits\\\");\\n return uint248(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint240 from uint256, reverting on\\n * overflow (when the input is greater than largest uint240).\\n *\\n * Counterpart to Solidity's `uint240` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 240 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint240(uint256 value) internal pure returns (uint240) {\\n require(value <= type(uint240).max, \\\"SafeCast: value doesn't fit in 240 bits\\\");\\n return uint240(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint232 from uint256, reverting on\\n * overflow (when the input is greater than largest uint232).\\n *\\n * Counterpart to Solidity's `uint232` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 232 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint232(uint256 value) internal pure returns (uint232) {\\n require(value <= type(uint232).max, \\\"SafeCast: value doesn't fit in 232 bits\\\");\\n return uint232(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint224 from uint256, reverting on\\n * overflow (when the input is greater than largest uint224).\\n *\\n * Counterpart to Solidity's `uint224` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 224 bits\\n *\\n * _Available since v4.2._\\n */\\n function toUint224(uint256 value) internal pure returns (uint224) {\\n require(value <= type(uint224).max, \\\"SafeCast: value doesn't fit in 224 bits\\\");\\n return uint224(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint216 from uint256, reverting on\\n * overflow (when the input is greater than largest uint216).\\n *\\n * Counterpart to Solidity's `uint216` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 216 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint216(uint256 value) internal pure returns (uint216) {\\n require(value <= type(uint216).max, \\\"SafeCast: value doesn't fit in 216 bits\\\");\\n return uint216(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint208 from uint256, reverting on\\n * overflow (when the input is greater than largest uint208).\\n *\\n * Counterpart to Solidity's `uint208` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 208 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint208(uint256 value) internal pure returns (uint208) {\\n require(value <= type(uint208).max, \\\"SafeCast: value doesn't fit in 208 bits\\\");\\n return uint208(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint200 from uint256, reverting on\\n * overflow (when the input is greater than largest uint200).\\n *\\n * Counterpart to Solidity's `uint200` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 200 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint200(uint256 value) internal pure returns (uint200) {\\n require(value <= type(uint200).max, \\\"SafeCast: value doesn't fit in 200 bits\\\");\\n return uint200(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint192 from uint256, reverting on\\n * overflow (when the input is greater than largest uint192).\\n *\\n * Counterpart to Solidity's `uint192` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 192 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint192(uint256 value) internal pure returns (uint192) {\\n require(value <= type(uint192).max, \\\"SafeCast: value doesn't fit in 192 bits\\\");\\n return uint192(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint184 from uint256, reverting on\\n * overflow (when the input is greater than largest uint184).\\n *\\n * Counterpart to Solidity's `uint184` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 184 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint184(uint256 value) internal pure returns (uint184) {\\n require(value <= type(uint184).max, \\\"SafeCast: value doesn't fit in 184 bits\\\");\\n return uint184(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint176 from uint256, reverting on\\n * overflow (when the input is greater than largest uint176).\\n *\\n * Counterpart to Solidity's `uint176` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 176 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint176(uint256 value) internal pure returns (uint176) {\\n require(value <= type(uint176).max, \\\"SafeCast: value doesn't fit in 176 bits\\\");\\n return uint176(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint168 from uint256, reverting on\\n * overflow (when the input is greater than largest uint168).\\n *\\n * Counterpart to Solidity's `uint168` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 168 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint168(uint256 value) internal pure returns (uint168) {\\n require(value <= type(uint168).max, \\\"SafeCast: value doesn't fit in 168 bits\\\");\\n return uint168(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint160 from uint256, reverting on\\n * overflow (when the input is greater than largest uint160).\\n *\\n * Counterpart to Solidity's `uint160` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 160 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint160(uint256 value) internal pure returns (uint160) {\\n require(value <= type(uint160).max, \\\"SafeCast: value doesn't fit in 160 bits\\\");\\n return uint160(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint152 from uint256, reverting on\\n * overflow (when the input is greater than largest uint152).\\n *\\n * Counterpart to Solidity's `uint152` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 152 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint152(uint256 value) internal pure returns (uint152) {\\n require(value <= type(uint152).max, \\\"SafeCast: value doesn't fit in 152 bits\\\");\\n return uint152(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint144 from uint256, reverting on\\n * overflow (when the input is greater than largest uint144).\\n *\\n * Counterpart to Solidity's `uint144` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 144 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint144(uint256 value) internal pure returns (uint144) {\\n require(value <= type(uint144).max, \\\"SafeCast: value doesn't fit in 144 bits\\\");\\n return uint144(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint136 from uint256, reverting on\\n * overflow (when the input is greater than largest uint136).\\n *\\n * Counterpart to Solidity's `uint136` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 136 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint136(uint256 value) internal pure returns (uint136) {\\n require(value <= type(uint136).max, \\\"SafeCast: value doesn't fit in 136 bits\\\");\\n return uint136(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint128 from uint256, reverting on\\n * overflow (when the input is greater than largest uint128).\\n *\\n * Counterpart to Solidity's `uint128` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 128 bits\\n *\\n * _Available since v2.5._\\n */\\n function toUint128(uint256 value) internal pure returns (uint128) {\\n require(value <= type(uint128).max, \\\"SafeCast: value doesn't fit in 128 bits\\\");\\n return uint128(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint120 from uint256, reverting on\\n * overflow (when the input is greater than largest uint120).\\n *\\n * Counterpart to Solidity's `uint120` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 120 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint120(uint256 value) internal pure returns (uint120) {\\n require(value <= type(uint120).max, \\\"SafeCast: value doesn't fit in 120 bits\\\");\\n return uint120(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint112 from uint256, reverting on\\n * overflow (when the input is greater than largest uint112).\\n *\\n * Counterpart to Solidity's `uint112` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 112 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint112(uint256 value) internal pure returns (uint112) {\\n require(value <= type(uint112).max, \\\"SafeCast: value doesn't fit in 112 bits\\\");\\n return uint112(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint104 from uint256, reverting on\\n * overflow (when the input is greater than largest uint104).\\n *\\n * Counterpart to Solidity's `uint104` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 104 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint104(uint256 value) internal pure returns (uint104) {\\n require(value <= type(uint104).max, \\\"SafeCast: value doesn't fit in 104 bits\\\");\\n return uint104(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint96 from uint256, reverting on\\n * overflow (when the input is greater than largest uint96).\\n *\\n * Counterpart to Solidity's `uint96` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 96 bits\\n *\\n * _Available since v4.2._\\n */\\n function toUint96(uint256 value) internal pure returns (uint96) {\\n require(value <= type(uint96).max, \\\"SafeCast: value doesn't fit in 96 bits\\\");\\n return uint96(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint88 from uint256, reverting on\\n * overflow (when the input is greater than largest uint88).\\n *\\n * Counterpart to Solidity's `uint88` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 88 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint88(uint256 value) internal pure returns (uint88) {\\n require(value <= type(uint88).max, \\\"SafeCast: value doesn't fit in 88 bits\\\");\\n return uint88(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint80 from uint256, reverting on\\n * overflow (when the input is greater than largest uint80).\\n *\\n * Counterpart to Solidity's `uint80` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 80 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint80(uint256 value) internal pure returns (uint80) {\\n require(value <= type(uint80).max, \\\"SafeCast: value doesn't fit in 80 bits\\\");\\n return uint80(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint72 from uint256, reverting on\\n * overflow (when the input is greater than largest uint72).\\n *\\n * Counterpart to Solidity's `uint72` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 72 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint72(uint256 value) internal pure returns (uint72) {\\n require(value <= type(uint72).max, \\\"SafeCast: value doesn't fit in 72 bits\\\");\\n return uint72(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint64 from uint256, reverting on\\n * overflow (when the input is greater than largest uint64).\\n *\\n * Counterpart to Solidity's `uint64` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 64 bits\\n *\\n * _Available since v2.5._\\n */\\n function toUint64(uint256 value) internal pure returns (uint64) {\\n require(value <= type(uint64).max, \\\"SafeCast: value doesn't fit in 64 bits\\\");\\n return uint64(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint56 from uint256, reverting on\\n * overflow (when the input is greater than largest uint56).\\n *\\n * Counterpart to Solidity's `uint56` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 56 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint56(uint256 value) internal pure returns (uint56) {\\n require(value <= type(uint56).max, \\\"SafeCast: value doesn't fit in 56 bits\\\");\\n return uint56(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint48 from uint256, reverting on\\n * overflow (when the input is greater than largest uint48).\\n *\\n * Counterpart to Solidity's `uint48` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 48 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint48(uint256 value) internal pure returns (uint48) {\\n require(value <= type(uint48).max, \\\"SafeCast: value doesn't fit in 48 bits\\\");\\n return uint48(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint40 from uint256, reverting on\\n * overflow (when the input is greater than largest uint40).\\n *\\n * Counterpart to Solidity's `uint40` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 40 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint40(uint256 value) internal pure returns (uint40) {\\n require(value <= type(uint40).max, \\\"SafeCast: value doesn't fit in 40 bits\\\");\\n return uint40(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint32 from uint256, reverting on\\n * overflow (when the input is greater than largest uint32).\\n *\\n * Counterpart to Solidity's `uint32` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 32 bits\\n *\\n * _Available since v2.5._\\n */\\n function toUint32(uint256 value) internal pure returns (uint32) {\\n require(value <= type(uint32).max, \\\"SafeCast: value doesn't fit in 32 bits\\\");\\n return uint32(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint24 from uint256, reverting on\\n * overflow (when the input is greater than largest uint24).\\n *\\n * Counterpart to Solidity's `uint24` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 24 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint24(uint256 value) internal pure returns (uint24) {\\n require(value <= type(uint24).max, \\\"SafeCast: value doesn't fit in 24 bits\\\");\\n return uint24(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint16 from uint256, reverting on\\n * overflow (when the input is greater than largest uint16).\\n *\\n * Counterpart to Solidity's `uint16` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 16 bits\\n *\\n * _Available since v2.5._\\n */\\n function toUint16(uint256 value) internal pure returns (uint16) {\\n require(value <= type(uint16).max, \\\"SafeCast: value doesn't fit in 16 bits\\\");\\n return uint16(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint8 from uint256, reverting on\\n * overflow (when the input is greater than largest uint8).\\n *\\n * Counterpart to Solidity's `uint8` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 8 bits\\n *\\n * _Available since v2.5._\\n */\\n function toUint8(uint256 value) internal pure returns (uint8) {\\n require(value <= type(uint8).max, \\\"SafeCast: value doesn't fit in 8 bits\\\");\\n return uint8(value);\\n }\\n\\n /**\\n * @dev Converts a signed int256 into an unsigned uint256.\\n *\\n * Requirements:\\n *\\n * - input must be greater than or equal to 0.\\n *\\n * _Available since v3.0._\\n */\\n function toUint256(int256 value) internal pure returns (uint256) {\\n require(value >= 0, \\\"SafeCast: value must be positive\\\");\\n return uint256(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted int248 from int256, reverting on\\n * overflow (when the input is less than smallest int248 or\\n * greater than largest int248).\\n *\\n * Counterpart to Solidity's `int248` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 248 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt248(int256 value) internal pure returns (int248 downcasted) {\\n downcasted = int248(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 248 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int240 from int256, reverting on\\n * overflow (when the input is less than smallest int240 or\\n * greater than largest int240).\\n *\\n * Counterpart to Solidity's `int240` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 240 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt240(int256 value) internal pure returns (int240 downcasted) {\\n downcasted = int240(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 240 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int232 from int256, reverting on\\n * overflow (when the input is less than smallest int232 or\\n * greater than largest int232).\\n *\\n * Counterpart to Solidity's `int232` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 232 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt232(int256 value) internal pure returns (int232 downcasted) {\\n downcasted = int232(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 232 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int224 from int256, reverting on\\n * overflow (when the input is less than smallest int224 or\\n * greater than largest int224).\\n *\\n * Counterpart to Solidity's `int224` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 224 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt224(int256 value) internal pure returns (int224 downcasted) {\\n downcasted = int224(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 224 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int216 from int256, reverting on\\n * overflow (when the input is less than smallest int216 or\\n * greater than largest int216).\\n *\\n * Counterpart to Solidity's `int216` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 216 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt216(int256 value) internal pure returns (int216 downcasted) {\\n downcasted = int216(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 216 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int208 from int256, reverting on\\n * overflow (when the input is less than smallest int208 or\\n * greater than largest int208).\\n *\\n * Counterpart to Solidity's `int208` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 208 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt208(int256 value) internal pure returns (int208 downcasted) {\\n downcasted = int208(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 208 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int200 from int256, reverting on\\n * overflow (when the input is less than smallest int200 or\\n * greater than largest int200).\\n *\\n * Counterpart to Solidity's `int200` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 200 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt200(int256 value) internal pure returns (int200 downcasted) {\\n downcasted = int200(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 200 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int192 from int256, reverting on\\n * overflow (when the input is less than smallest int192 or\\n * greater than largest int192).\\n *\\n * Counterpart to Solidity's `int192` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 192 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt192(int256 value) internal pure returns (int192 downcasted) {\\n downcasted = int192(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 192 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int184 from int256, reverting on\\n * overflow (when the input is less than smallest int184 or\\n * greater than largest int184).\\n *\\n * Counterpart to Solidity's `int184` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 184 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt184(int256 value) internal pure returns (int184 downcasted) {\\n downcasted = int184(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 184 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int176 from int256, reverting on\\n * overflow (when the input is less than smallest int176 or\\n * greater than largest int176).\\n *\\n * Counterpart to Solidity's `int176` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 176 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt176(int256 value) internal pure returns (int176 downcasted) {\\n downcasted = int176(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 176 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int168 from int256, reverting on\\n * overflow (when the input is less than smallest int168 or\\n * greater than largest int168).\\n *\\n * Counterpart to Solidity's `int168` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 168 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt168(int256 value) internal pure returns (int168 downcasted) {\\n downcasted = int168(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 168 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int160 from int256, reverting on\\n * overflow (when the input is less than smallest int160 or\\n * greater than largest int160).\\n *\\n * Counterpart to Solidity's `int160` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 160 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt160(int256 value) internal pure returns (int160 downcasted) {\\n downcasted = int160(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 160 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int152 from int256, reverting on\\n * overflow (when the input is less than smallest int152 or\\n * greater than largest int152).\\n *\\n * Counterpart to Solidity's `int152` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 152 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt152(int256 value) internal pure returns (int152 downcasted) {\\n downcasted = int152(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 152 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int144 from int256, reverting on\\n * overflow (when the input is less than smallest int144 or\\n * greater than largest int144).\\n *\\n * Counterpart to Solidity's `int144` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 144 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt144(int256 value) internal pure returns (int144 downcasted) {\\n downcasted = int144(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 144 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int136 from int256, reverting on\\n * overflow (when the input is less than smallest int136 or\\n * greater than largest int136).\\n *\\n * Counterpart to Solidity's `int136` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 136 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt136(int256 value) internal pure returns (int136 downcasted) {\\n downcasted = int136(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 136 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int128 from int256, reverting on\\n * overflow (when the input is less than smallest int128 or\\n * greater than largest int128).\\n *\\n * Counterpart to Solidity's `int128` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 128 bits\\n *\\n * _Available since v3.1._\\n */\\n function toInt128(int256 value) internal pure returns (int128 downcasted) {\\n downcasted = int128(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 128 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int120 from int256, reverting on\\n * overflow (when the input is less than smallest int120 or\\n * greater than largest int120).\\n *\\n * Counterpart to Solidity's `int120` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 120 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt120(int256 value) internal pure returns (int120 downcasted) {\\n downcasted = int120(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 120 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int112 from int256, reverting on\\n * overflow (when the input is less than smallest int112 or\\n * greater than largest int112).\\n *\\n * Counterpart to Solidity's `int112` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 112 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt112(int256 value) internal pure returns (int112 downcasted) {\\n downcasted = int112(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 112 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int104 from int256, reverting on\\n * overflow (when the input is less than smallest int104 or\\n * greater than largest int104).\\n *\\n * Counterpart to Solidity's `int104` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 104 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt104(int256 value) internal pure returns (int104 downcasted) {\\n downcasted = int104(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 104 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int96 from int256, reverting on\\n * overflow (when the input is less than smallest int96 or\\n * greater than largest int96).\\n *\\n * Counterpart to Solidity's `int96` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 96 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt96(int256 value) internal pure returns (int96 downcasted) {\\n downcasted = int96(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 96 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int88 from int256, reverting on\\n * overflow (when the input is less than smallest int88 or\\n * greater than largest int88).\\n *\\n * Counterpart to Solidity's `int88` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 88 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt88(int256 value) internal pure returns (int88 downcasted) {\\n downcasted = int88(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 88 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int80 from int256, reverting on\\n * overflow (when the input is less than smallest int80 or\\n * greater than largest int80).\\n *\\n * Counterpart to Solidity's `int80` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 80 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt80(int256 value) internal pure returns (int80 downcasted) {\\n downcasted = int80(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 80 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int72 from int256, reverting on\\n * overflow (when the input is less than smallest int72 or\\n * greater than largest int72).\\n *\\n * Counterpart to Solidity's `int72` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 72 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt72(int256 value) internal pure returns (int72 downcasted) {\\n downcasted = int72(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 72 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int64 from int256, reverting on\\n * overflow (when the input is less than smallest int64 or\\n * greater than largest int64).\\n *\\n * Counterpart to Solidity's `int64` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 64 bits\\n *\\n * _Available since v3.1._\\n */\\n function toInt64(int256 value) internal pure returns (int64 downcasted) {\\n downcasted = int64(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 64 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int56 from int256, reverting on\\n * overflow (when the input is less than smallest int56 or\\n * greater than largest int56).\\n *\\n * Counterpart to Solidity's `int56` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 56 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt56(int256 value) internal pure returns (int56 downcasted) {\\n downcasted = int56(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 56 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int48 from int256, reverting on\\n * overflow (when the input is less than smallest int48 or\\n * greater than largest int48).\\n *\\n * Counterpart to Solidity's `int48` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 48 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt48(int256 value) internal pure returns (int48 downcasted) {\\n downcasted = int48(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 48 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int40 from int256, reverting on\\n * overflow (when the input is less than smallest int40 or\\n * greater than largest int40).\\n *\\n * Counterpart to Solidity's `int40` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 40 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt40(int256 value) internal pure returns (int40 downcasted) {\\n downcasted = int40(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 40 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int32 from int256, reverting on\\n * overflow (when the input is less than smallest int32 or\\n * greater than largest int32).\\n *\\n * Counterpart to Solidity's `int32` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 32 bits\\n *\\n * _Available since v3.1._\\n */\\n function toInt32(int256 value) internal pure returns (int32 downcasted) {\\n downcasted = int32(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 32 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int24 from int256, reverting on\\n * overflow (when the input is less than smallest int24 or\\n * greater than largest int24).\\n *\\n * Counterpart to Solidity's `int24` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 24 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt24(int256 value) internal pure returns (int24 downcasted) {\\n downcasted = int24(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 24 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int16 from int256, reverting on\\n * overflow (when the input is less than smallest int16 or\\n * greater than largest int16).\\n *\\n * Counterpart to Solidity's `int16` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 16 bits\\n *\\n * _Available since v3.1._\\n */\\n function toInt16(int256 value) internal pure returns (int16 downcasted) {\\n downcasted = int16(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 16 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int8 from int256, reverting on\\n * overflow (when the input is less than smallest int8 or\\n * greater than largest int8).\\n *\\n * Counterpart to Solidity's `int8` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 8 bits\\n *\\n * _Available since v3.1._\\n */\\n function toInt8(int256 value) internal pure returns (int8 downcasted) {\\n downcasted = int8(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 8 bits\\\");\\n }\\n\\n /**\\n * @dev Converts an unsigned uint256 into a signed int256.\\n *\\n * Requirements:\\n *\\n * - input must be less than or equal to maxInt256.\\n *\\n * _Available since v3.0._\\n */\\n function toInt256(uint256 value) internal pure returns (int256) {\\n // Note: Unsafe cast below is okay because `type(int256).max` is guaranteed to be positive\\n require(value <= uint256(type(int256).max), \\\"SafeCast: value doesn't fit in an int256\\\");\\n return int256(value);\\n }\\n}\\n\",\"keccak256\":\"0xcef50f95b43b038aa40aed25b62fc45906c681a5c1d504a4fdcf3bc6330a8d4b\",\"license\":\"MIT\"},\"src/mocks/plugin/extensions/governance/AddresslistMock.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {Addresslist} from \\\"../../../../plugin/extensions/governance/Addresslist.sol\\\";\\n\\n/// @notice A mock addresslist that everyone can add and remove addresses to and from, respectively.\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract AddresslistMock is Addresslist {\\n function addAddresses(address[] calldata _newAddresses) external {\\n _addAddresses(_newAddresses);\\n }\\n\\n function removeAddresses(address[] calldata _exitingAddresses) external {\\n _removeAddresses(_exitingAddresses);\\n }\\n}\\n\",\"keccak256\":\"0x56d535d76c8ab01f0752b068ca458a262e7d17f091e7e59f9b0d8be9accafaf9\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/extensions/governance/Addresslist.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {CheckpointsUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/CheckpointsUpgradeable.sol\\\";\\n\\nimport {_uncheckedAdd, _uncheckedSub} from \\\"../../../utils/math/UncheckedMath.sol\\\";\\n\\n/// @title Addresslist\\n/// @author Aragon X - 2021-2023\\n/// @notice The majority voting implementation using a list of member addresses.\\n/// @dev This contract inherits from `MajorityVotingBase` and implements the `IMajorityVoting` interface.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract Addresslist {\\n using CheckpointsUpgradeable for CheckpointsUpgradeable.History;\\n\\n /// @notice The mapping containing the checkpointed history of the address list.\\n // solhint-disable-next-line named-parameters-mapping\\n mapping(address => CheckpointsUpgradeable.History) private _addresslistCheckpoints;\\n\\n /// @notice The checkpointed history of the length of the address list.\\n CheckpointsUpgradeable.History private _addresslistLengthCheckpoints;\\n\\n /// @notice Thrown when the address list update is invalid, which can be caused by the addition of an existing member or removal of a non-existing member.\\n /// @param member The array of member addresses to be added or removed.\\n error InvalidAddresslistUpdate(address member);\\n\\n /// @notice Checks if an account is on the address list at a specific block number.\\n /// @param _account The account address being checked.\\n /// @param _blockNumber The block number.\\n /// @return Whether the account is listed at the specified block number.\\n function isListedAtBlock(\\n address _account,\\n uint256 _blockNumber\\n ) public view virtual returns (bool) {\\n return _addresslistCheckpoints[_account].getAtBlock(_blockNumber) == 1;\\n }\\n\\n /// @notice Checks if an account is currently on the address list.\\n /// @param _account The account address being checked.\\n /// @return Whether the account is currently listed.\\n function isListed(address _account) public view virtual returns (bool) {\\n return _addresslistCheckpoints[_account].latest() == 1;\\n }\\n\\n /// @notice Returns the length of the address list at a specific block number.\\n /// @param _blockNumber The specific block to get the count from. If `0`, then the latest checkpoint value is returned.\\n /// @return The address list length at the specified block number.\\n function addresslistLengthAtBlock(uint256 _blockNumber) public view virtual returns (uint256) {\\n return _addresslistLengthCheckpoints.getAtBlock(_blockNumber);\\n }\\n\\n /// @notice Returns the current length of the address list.\\n /// @return The current address list length.\\n function addresslistLength() public view virtual returns (uint256) {\\n return _addresslistLengthCheckpoints.latest();\\n }\\n\\n /// @notice Internal function to add new addresses to the address list.\\n /// @param _newAddresses The new addresses to be added.\\n function _addAddresses(address[] calldata _newAddresses) internal virtual {\\n for (uint256 i; i < _newAddresses.length; ) {\\n if (isListed(_newAddresses[i])) {\\n revert InvalidAddresslistUpdate(_newAddresses[i]);\\n }\\n\\n // Mark the address as listed\\n _addresslistCheckpoints[_newAddresses[i]].push(1);\\n\\n unchecked {\\n ++i;\\n }\\n }\\n _addresslistLengthCheckpoints.push(_uncheckedAdd, _newAddresses.length);\\n }\\n\\n /// @notice Internal function to remove existing addresses from the address list.\\n /// @param _exitingAddresses The existing addresses to be removed.\\n function _removeAddresses(address[] calldata _exitingAddresses) internal virtual {\\n for (uint256 i; i < _exitingAddresses.length; ) {\\n if (!isListed(_exitingAddresses[i])) {\\n revert InvalidAddresslistUpdate(_exitingAddresses[i]);\\n }\\n\\n // Mark the address as not listed\\n _addresslistCheckpoints[_exitingAddresses[i]].push(0);\\n\\n unchecked {\\n ++i;\\n }\\n }\\n _addresslistLengthCheckpoints.push(_uncheckedSub, _exitingAddresses.length);\\n }\\n\\n /// @dev This empty reserved space is put in place to allow future versions to add new\\n /// variables without shifting down storage in the inheritance chain.\\n /// https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n uint256[48] private __gap;\\n}\\n\",\"keccak256\":\"0x61daf3913f46d0408a1f2af86d594cb5d05cb1d9253ccd14a6e4d9c980b14b69\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/math/UncheckedMath.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @notice Adds two unsigned integers without checking the result for overflow errors (using safe math).\\n/// @param a The first summand.\\n/// @param b The second summand.\\n/// @return The sum.\\n/// @custom:security-contact sirt@aragon.org\\nfunction _uncheckedAdd(uint256 a, uint256 b) pure returns (uint256) {\\n unchecked {\\n return a + b;\\n }\\n}\\n\\n/// @notice Subtracts two unsigned integers without checking the result for overflow errors (using safe math).\\n/// @param a The minuend.\\n/// @param b The subtrahend.\\n/// @return The difference.\\n/// @custom:security-contact sirt@aragon.org\\nfunction _uncheckedSub(uint256 a, uint256 b) pure returns (uint256) {\\n unchecked {\\n return a - b;\\n }\\n}\\n\",\"keccak256\":\"0x358210b59bad961994be2e9bea64eadae3567b3f17ebeaf347dd990f52ce3d6d\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[{"astId":13651,"contract":"src/mocks/plugin/extensions/governance/AddresslistMock.sol:AddresslistMock","label":"_addresslistCheckpoints","offset":0,"slot":"0","type":"t_mapping(t_address,t_struct(History)1011_storage)"},{"astId":13655,"contract":"src/mocks/plugin/extensions/governance/AddresslistMock.sol:AddresslistMock","label":"_addresslistLengthCheckpoints","offset":0,"slot":"1","type":"t_struct(History)1011_storage"},{"astId":13830,"contract":"src/mocks/plugin/extensions/governance/AddresslistMock.sol:AddresslistMock","label":"__gap","offset":0,"slot":"2","type":"t_array(t_uint256)48_storage"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_array(t_struct(Checkpoint)1016_storage)dyn_storage":{"base":"t_struct(Checkpoint)1016_storage","encoding":"dynamic_array","label":"struct CheckpointsUpgradeable.Checkpoint[]","numberOfBytes":"32"},"t_array(t_uint256)48_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[48]","numberOfBytes":"1536"},"t_mapping(t_address,t_struct(History)1011_storage)":{"encoding":"mapping","key":"t_address","label":"mapping(address => struct CheckpointsUpgradeable.History)","numberOfBytes":"32","value":"t_struct(History)1011_storage"},"t_struct(Checkpoint)1016_storage":{"encoding":"inplace","label":"struct CheckpointsUpgradeable.Checkpoint","members":[{"astId":1013,"contract":"src/mocks/plugin/extensions/governance/AddresslistMock.sol:AddresslistMock","label":"_blockNumber","offset":0,"slot":"0","type":"t_uint32"},{"astId":1015,"contract":"src/mocks/plugin/extensions/governance/AddresslistMock.sol:AddresslistMock","label":"_value","offset":4,"slot":"0","type":"t_uint224"}],"numberOfBytes":"32"},"t_struct(History)1011_storage":{"encoding":"inplace","label":"struct CheckpointsUpgradeable.History","members":[{"astId":1010,"contract":"src/mocks/plugin/extensions/governance/AddresslistMock.sol:AddresslistMock","label":"_checkpoints","offset":0,"slot":"0","type":"t_array(t_struct(Checkpoint)1016_storage)dyn_storage"}],"numberOfBytes":"32"},"t_uint224":{"encoding":"inplace","label":"uint224","numberOfBytes":"28"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint32":{"encoding":"inplace","label":"uint32","numberOfBytes":"4"}}},"userdoc":{"errors":{"InvalidAddresslistUpdate(address)":[{"notice":"Thrown when the address list update is invalid, which can be caused by the addition of an existing member or removal of a non-existing member."}]},"kind":"user","methods":{"addresslistLength()":{"notice":"Returns the current length of the address list."},"addresslistLengthAtBlock(uint256)":{"notice":"Returns the length of the address list at a specific block number."},"isListed(address)":{"notice":"Checks if an account is currently on the address list."},"isListedAtBlock(address,uint256)":{"notice":"Checks if an account is on the address list at a specific block number."}},"notice":"A mock addresslist that everyone can add and remove addresses to and from, respectively.","version":1}}},"src/mocks/plugin/extensions/proposal/ProposalMock.sol":{"ProposalMock":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":true,"internalType":"address","name":"creator","type":"address"},{"indexed":false,"internalType":"uint64","name":"startDate","type":"uint64"},{"indexed":false,"internalType":"uint64","name":"endDate","type":"uint64"},{"indexed":false,"internalType":"bytes","name":"metadata","type":"bytes"},{"components":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"indexed":false,"internalType":"struct IDAO.Action[]","name":"actions","type":"tuple[]"},{"indexed":false,"internalType":"uint256","name":"allowFailureMap","type":"uint256"}],"name":"ProposalCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalExecuted","type":"event"},{"inputs":[{"internalType":"address","name":"_creator","type":"address"},{"internalType":"bytes","name":"_metadata","type":"bytes"},{"internalType":"uint64","name":"_startDate","type":"uint64"},{"internalType":"uint64","name":"_endDate","type":"uint64"},{"components":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct IDAO.Action[]","name":"_actions","type":"tuple[]"},{"internalType":"uint256","name":"_allowFailureMap","type":"uint256"}],"name":"createProposal","outputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"createProposalId","outputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IDAO","name":"_dao","type":"address"},{"internalType":"uint256","name":"_proposalId","type":"uint256"},{"components":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct IDAO.Action[]","name":"_actions","type":"tuple[]"},{"internalType":"uint256","name":"_allowFailureMap","type":"uint256"}],"name":"executeProposal","outputs":[{"internalType":"bytes[]","name":"execResults","type":"bytes[]"},{"internalType":"uint256","name":"failureMap","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"proposalCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"DO NOT USE IN PRODUCTION!","kind":"dev","methods":{"proposalCount()":{"returns":{"_0":"The proposal count."}},"supportsInterface(bytes4)":{"params":{"_interfaceId":"The ID of the interface."},"returns":{"_0":"Returns `true` if the interface is supported."}}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b506109bf806100206000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c806373e1166d1161005057806373e1166d146100b55780637b2bf56e146100d6578063da35c664146100e657600080fd5b806301ffc9a71461006c578063634a9a8814610094575b600080fd5b61007f61007a36600461027d565b6100ee565b60405190151581526020015b60405180910390f35b6100a76100a2366004610382565b610125565b60405161008b929190610544565b6100c86100c3366004610616565b610142565b60405190815260200161008b565b60008054600181019091556100c8565b6000546100c8565b60006001600160e01b0319821663368d719960e21b148061011f57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600061013586868686610161565b9097909650945050505050565b60006101548989898989898989610217565b9998505050505050505050565b6040516331c6fcc960e21b81526060906000906001600160a01b0387169063c71bf32490610197908890889088906004016106ed565b6000604051808303816000875af11580156101b6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526101de9190810190610785565b604051919350915085907f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f90600090a294509492505050565b600080546001810182559050886001600160a01b0316817fa6c1f8f4276dc3f243459e13b557c84e8f4e90b2e09070bad5f6909cee687c9288888c8c8a8a8a60405161026997969594939291906108a2565b60405180910390a398975050505050505050565b60006020828403121561028f57600080fd5b81356001600160e01b0319811681146102a757600080fd5b9392505050565b6001600160a01b03811681146102c357600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff811182821017156102ff576102ff6102c6565b60405290565b604051601f8201601f1916810167ffffffffffffffff8111828210171561032e5761032e6102c6565b604052919050565b600067ffffffffffffffff821115610350576103506102c6565b5060051b60200190565b600067ffffffffffffffff821115610374576103746102c6565b50601f01601f191660200190565b6000806000806080858703121561039857600080fd5b6103a285356102ae565b8435935060208501359250604085013567ffffffffffffffff808211156103c857600080fd5b818701915087601f8301126103dc57600080fd5b6103ee6103e98335610336565b610305565b82358082526020808301929160051b8501018a81111561040d57600080fd5b602085015b818110156104e057848135111561042857600080fd5b803586016060818e03601f1901121561044057600080fd5b6104486102dc565b6020820135610456816102ae565b81526040820135602082015260608201358781111561047457600080fd5b8083019250508d603f83011261048957600080fd5b602082013561049a6103e98261035a565b8181528f60408386010111156104af57600080fd5b8160408501602083013760006020838301015280604084015250508086525050602084019350602081019050610412565b50979a969950976060013596505050505050565b60005b8381101561050f5781810151838201526020016104f7565b50506000910152565b600081518084526105308160208601602086016104f4565b601f01601f19169290920160200192915050565b6000604082016040835280855180835260608501915060608160051b8601019250602080880160005b8381101561059b57605f19888703018552610589868351610518565b9550938201939082019060010161056d565b50509490940194909452949350505050565b803567ffffffffffffffff811681146105c557600080fd5b919050565b60008083601f8401126105dc57600080fd5b50813567ffffffffffffffff8111156105f457600080fd5b6020830191508360208260051b850101111561060f57600080fd5b9250929050565b60008060008060008060008060c0898b03121561063257600080fd5b883561063d816102ae565b9750602089013567ffffffffffffffff8082111561065a57600080fd5b818b0191508b601f83011261066e57600080fd5b81358181111561067d57600080fd5b8c602082850101111561068f57600080fd5b60208301995097506106a360408c016105ad565b96506106b160608c016105ad565b955060808b01359150808211156106c757600080fd5b506106d48b828c016105ca565b999c989b50969995989497949560a00135949350505050565b600060608083018684526020828186015281875180845260808701915060808160051b880101935082890160005b8281101561076e57888603607f19018452815180516001600160a01b03168752858101518688015260409081015190870188905261075b88880182610518565b965050928401929084019060010161071b565b505050505060409390930193909352509392505050565b600080604080848603121561079957600080fd5b835167ffffffffffffffff808211156107b157600080fd5b818601915086601f8301126107c557600080fd5b815160206107d56103e983610336565b82815260059290921b8401810191818101908a8411156107f457600080fd5b8286015b84811015610865578051868111156108105760008081fd5b8701603f81018d136108225760008081fd5b848101516108326103e98261035a565b8181528e8b8385010111156108475760008081fd5b610856828883018d86016104f4565b855250509183019183016107f8565b509890910151979997985050505050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b600067ffffffffffffffff808a1683526020818a1681850152604060a0818601526108d160a086018a8c610879565b606086820381880152818983528483019050848a60051b8401018b60005b8c81101561099457858303601f190184528135368f9003605e1901811261091557600080fd5b8e018035610922816102ae565b6001600160a01b0316845280890135898501528781013536829003601e1901811261094c57600080fd5b0188810190358a81111561095f57600080fd5b80360382131561096e57600080fd5b86898601526109808786018284610879565b958a019594505050908701906001016108ef565b5050809750505050505050508260808301529897505050505050505056fea164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x9BF DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x67 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x73E1166D GT PUSH2 0x50 JUMPI DUP1 PUSH4 0x73E1166D EQ PUSH2 0xB5 JUMPI DUP1 PUSH4 0x7B2BF56E EQ PUSH2 0xD6 JUMPI DUP1 PUSH4 0xDA35C664 EQ PUSH2 0xE6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x6C JUMPI DUP1 PUSH4 0x634A9A88 EQ PUSH2 0x94 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7F PUSH2 0x7A CALLDATASIZE PUSH1 0x4 PUSH2 0x27D JUMP JUMPDEST PUSH2 0xEE JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xA7 PUSH2 0xA2 CALLDATASIZE PUSH1 0x4 PUSH2 0x382 JUMP JUMPDEST PUSH2 0x125 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x8B SWAP3 SWAP2 SWAP1 PUSH2 0x544 JUMP JUMPDEST PUSH2 0xC8 PUSH2 0xC3 CALLDATASIZE PUSH1 0x4 PUSH2 0x616 JUMP JUMPDEST PUSH2 0x142 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x8B JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 DUP2 ADD SWAP1 SWAP2 SSTORE PUSH2 0xC8 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0xC8 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x368D7199 PUSH1 0xE2 SHL EQ DUP1 PUSH2 0x11F JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x135 DUP7 DUP7 DUP7 DUP7 PUSH2 0x161 JUMP JUMPDEST SWAP1 SWAP8 SWAP1 SWAP7 POP SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x154 DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 PUSH2 0x217 JUMP JUMPDEST SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x31C6FCC9 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x60 SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0xC71BF324 SWAP1 PUSH2 0x197 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x6ED JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1B6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x1DE SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x785 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 SWAP4 POP SWAP2 POP DUP6 SWAP1 PUSH32 0x712AE1383F79AC853F8D882153778E0260EF8F03B504E2866E0593E04D2B291F SWAP1 PUSH1 0x0 SWAP1 LOG2 SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 DUP2 ADD DUP3 SSTORE SWAP1 POP DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH32 0xA6C1F8F4276DC3F243459E13B557C84E8F4E90B2E09070BAD5F6909CEE687C92 DUP9 DUP9 DUP13 DUP13 DUP11 DUP11 DUP11 PUSH1 0x40 MLOAD PUSH2 0x269 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x8A2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x28F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x2A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x2C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x60 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x2FF JUMPI PUSH2 0x2FF PUSH2 0x2C6 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x32E JUMPI PUSH2 0x32E PUSH2 0x2C6 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x350 JUMPI PUSH2 0x350 PUSH2 0x2C6 JUMP JUMPDEST POP PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x374 JUMPI PUSH2 0x374 PUSH2 0x2C6 JUMP JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x398 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3A2 DUP6 CALLDATALOAD PUSH2 0x2AE JUMP JUMPDEST DUP5 CALLDATALOAD SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x3C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3EE PUSH2 0x3E9 DUP4 CALLDATALOAD PUSH2 0x336 JUMP JUMPDEST PUSH2 0x305 JUMP JUMPDEST DUP3 CALLDATALOAD DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP3 SWAP2 PUSH1 0x5 SHL DUP6 ADD ADD DUP11 DUP2 GT ISZERO PUSH2 0x40D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP6 ADD JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x4E0 JUMPI DUP5 DUP2 CALLDATALOAD GT ISZERO PUSH2 0x428 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD DUP7 ADD PUSH1 0x60 DUP2 DUP15 SUB PUSH1 0x1F NOT ADD SLT ISZERO PUSH2 0x440 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x448 PUSH2 0x2DC JUMP JUMPDEST PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH2 0x456 DUP2 PUSH2 0x2AE JUMP JUMPDEST DUP2 MSTORE PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x60 DUP3 ADD CALLDATALOAD DUP8 DUP2 GT ISZERO PUSH2 0x474 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 DUP4 ADD SWAP3 POP POP DUP14 PUSH1 0x3F DUP4 ADD SLT PUSH2 0x489 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH2 0x49A PUSH2 0x3E9 DUP3 PUSH2 0x35A JUMP JUMPDEST DUP2 DUP2 MSTORE DUP16 PUSH1 0x40 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0x4AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP4 DUP4 ADD ADD MSTORE DUP1 PUSH1 0x40 DUP5 ADD MSTORE POP POP DUP1 DUP7 MSTORE POP POP PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x412 JUMP JUMPDEST POP SWAP8 SWAP11 SWAP7 SWAP10 POP SWAP8 PUSH1 0x60 ADD CALLDATALOAD SWAP7 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x50F JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x4F7 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x530 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x4F4 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD PUSH1 0x40 DUP4 MSTORE DUP1 DUP6 MLOAD DUP1 DUP4 MSTORE PUSH1 0x60 DUP6 ADD SWAP2 POP PUSH1 0x60 DUP2 PUSH1 0x5 SHL DUP7 ADD ADD SWAP3 POP PUSH1 0x20 DUP1 DUP9 ADD PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x59B JUMPI PUSH1 0x5F NOT DUP9 DUP8 SUB ADD DUP6 MSTORE PUSH2 0x589 DUP7 DUP4 MLOAD PUSH2 0x518 JUMP JUMPDEST SWAP6 POP SWAP4 DUP3 ADD SWAP4 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x56D JUMP JUMPDEST POP POP SWAP5 SWAP1 SWAP5 ADD SWAP5 SWAP1 SWAP5 MSTORE SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x5C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x5DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x5F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 PUSH1 0x5 SHL DUP6 ADD ADD GT ISZERO PUSH2 0x60F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP10 DUP12 SUB SLT ISZERO PUSH2 0x632 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP9 CALLDATALOAD PUSH2 0x63D DUP2 PUSH2 0x2AE JUMP JUMPDEST SWAP8 POP PUSH1 0x20 DUP10 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x65A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP12 ADD SWAP2 POP DUP12 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x66E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x67D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP13 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x68F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP10 POP SWAP8 POP PUSH2 0x6A3 PUSH1 0x40 DUP13 ADD PUSH2 0x5AD JUMP JUMPDEST SWAP7 POP PUSH2 0x6B1 PUSH1 0x60 DUP13 ADD PUSH2 0x5AD JUMP JUMPDEST SWAP6 POP PUSH1 0x80 DUP12 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x6C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x6D4 DUP12 DUP3 DUP13 ADD PUSH2 0x5CA JUMP JUMPDEST SWAP10 SWAP13 SWAP9 SWAP12 POP SWAP7 SWAP10 SWAP6 SWAP9 SWAP5 SWAP8 SWAP5 SWAP6 PUSH1 0xA0 ADD CALLDATALOAD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP1 DUP4 ADD DUP7 DUP5 MSTORE PUSH1 0x20 DUP3 DUP2 DUP7 ADD MSTORE DUP2 DUP8 MLOAD DUP1 DUP5 MSTORE PUSH1 0x80 DUP8 ADD SWAP2 POP PUSH1 0x80 DUP2 PUSH1 0x5 SHL DUP9 ADD ADD SWAP4 POP DUP3 DUP10 ADD PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x76E JUMPI DUP9 DUP7 SUB PUSH1 0x7F NOT ADD DUP5 MSTORE DUP2 MLOAD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 MSTORE DUP6 DUP2 ADD MLOAD DUP7 DUP9 ADD MSTORE PUSH1 0x40 SWAP1 DUP2 ADD MLOAD SWAP1 DUP8 ADD DUP9 SWAP1 MSTORE PUSH2 0x75B DUP9 DUP9 ADD DUP3 PUSH2 0x518 JUMP JUMPDEST SWAP7 POP POP SWAP3 DUP5 ADD SWAP3 SWAP1 DUP5 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x71B JUMP JUMPDEST POP POP POP POP POP PUSH1 0x40 SWAP4 SWAP1 SWAP4 ADD SWAP4 SWAP1 SWAP4 MSTORE POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP1 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x799 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x7B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP7 ADD SWAP2 POP DUP7 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x7C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x20 PUSH2 0x7D5 PUSH2 0x3E9 DUP4 PUSH2 0x336 JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH1 0x5 SWAP3 SWAP1 SWAP3 SHL DUP5 ADD DUP2 ADD SWAP2 DUP2 DUP2 ADD SWAP1 DUP11 DUP5 GT ISZERO PUSH2 0x7F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 DUP7 ADD JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x865 JUMPI DUP1 MLOAD DUP7 DUP2 GT ISZERO PUSH2 0x810 JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST DUP8 ADD PUSH1 0x3F DUP2 ADD DUP14 SGT PUSH2 0x822 JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST DUP5 DUP2 ADD MLOAD PUSH2 0x832 PUSH2 0x3E9 DUP3 PUSH2 0x35A JUMP JUMPDEST DUP2 DUP2 MSTORE DUP15 DUP12 DUP4 DUP6 ADD ADD GT ISZERO PUSH2 0x847 JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST PUSH2 0x856 DUP3 DUP9 DUP4 ADD DUP14 DUP7 ADD PUSH2 0x4F4 JUMP JUMPDEST DUP6 MSTORE POP POP SWAP2 DUP4 ADD SWAP2 DUP4 ADD PUSH2 0x7F8 JUMP JUMPDEST POP SWAP9 SWAP1 SWAP2 ADD MLOAD SWAP8 SWAP10 SWAP8 SWAP9 POP POP POP POP POP POP POP POP JUMP JUMPDEST DUP2 DUP4 MSTORE DUP2 DUP2 PUSH1 0x20 DUP6 ADD CALLDATACOPY POP PUSH1 0x0 DUP3 DUP3 ADD PUSH1 0x20 SWAP1 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1F SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND SWAP1 SWAP2 ADD ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP11 AND DUP4 MSTORE PUSH1 0x20 DUP2 DUP11 AND DUP2 DUP6 ADD MSTORE PUSH1 0x40 PUSH1 0xA0 DUP2 DUP7 ADD MSTORE PUSH2 0x8D1 PUSH1 0xA0 DUP7 ADD DUP11 DUP13 PUSH2 0x879 JUMP JUMPDEST PUSH1 0x60 DUP7 DUP3 SUB DUP2 DUP9 ADD MSTORE DUP2 DUP10 DUP4 MSTORE DUP5 DUP4 ADD SWAP1 POP DUP5 DUP11 PUSH1 0x5 SHL DUP5 ADD ADD DUP12 PUSH1 0x0 JUMPDEST DUP13 DUP2 LT ISZERO PUSH2 0x994 JUMPI DUP6 DUP4 SUB PUSH1 0x1F NOT ADD DUP5 MSTORE DUP2 CALLDATALOAD CALLDATASIZE DUP16 SWAP1 SUB PUSH1 0x5E NOT ADD DUP2 SLT PUSH2 0x915 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP15 ADD DUP1 CALLDATALOAD PUSH2 0x922 DUP2 PUSH2 0x2AE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 MSTORE DUP1 DUP10 ADD CALLDATALOAD DUP10 DUP6 ADD MSTORE DUP8 DUP2 ADD CALLDATALOAD CALLDATASIZE DUP3 SWAP1 SUB PUSH1 0x1E NOT ADD DUP2 SLT PUSH2 0x94C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST ADD DUP9 DUP2 ADD SWAP1 CALLDATALOAD DUP11 DUP2 GT ISZERO PUSH2 0x95F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATASIZE SUB DUP3 SGT ISZERO PUSH2 0x96E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 DUP10 DUP7 ADD MSTORE PUSH2 0x980 DUP8 DUP7 ADD DUP3 DUP5 PUSH2 0x879 JUMP JUMPDEST SWAP6 DUP11 ADD SWAP6 SWAP5 POP POP POP SWAP1 DUP8 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x8EF JUMP JUMPDEST POP POP DUP1 SWAP8 POP POP POP POP POP POP POP POP DUP3 PUSH1 0x80 DUP4 ADD MSTORE SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"315:948:56:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_createProposalId_13970":{"entryPoint":null,"id":13970,"parameterSlots":0,"returnSlots":1},"@_createProposal_14006":{"entryPoint":535,"id":14006,"parameterSlots":8,"returnSlots":1},"@_executeProposal_14045":{"entryPoint":353,"id":14045,"parameterSlots":4,"returnSlots":2},"@createProposalId_12481":{"entryPoint":null,"id":12481,"parameterSlots":0,"returnSlots":1},"@createProposal_12512":{"entryPoint":322,"id":12512,"parameterSlots":8,"returnSlots":1},"@current_9312":{"entryPoint":null,"id":9312,"parameterSlots":1,"returnSlots":1},"@executeProposal_12543":{"entryPoint":293,"id":12543,"parameterSlots":4,"returnSlots":2},"@increment_9326":{"entryPoint":null,"id":9326,"parameterSlots":1,"returnSlots":0},"@proposalCount_13931":{"entryPoint":null,"id":13931,"parameterSlots":0,"returnSlots":1},"@supportsInterface_13953":{"entryPoint":238,"id":13953,"parameterSlots":1,"returnSlots":1},"@supportsInterface_9730":{"entryPoint":null,"id":9730,"parameterSlots":1,"returnSlots":1},"abi_decode_array_struct_Action_calldata_dyn_calldata":{"entryPoint":1482,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_bytes_calldata_ptrt_uint64t_uint64t_array$_t_struct$_Action_$10724_calldata_ptr_$dyn_calldata_ptrt_uint256":{"entryPoint":1558,"id":null,"parameterSlots":2,"returnSlots":8},"abi_decode_tuple_t_array$_t_bytes_memory_ptr_$dyn_memory_ptrt_uint256_fromMemory":{"entryPoint":1925,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_bytes4":{"entryPoint":637,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_contract$_IDAO_$10865t_uint256t_array$_t_struct$_Action_$10724_memory_ptr_$dyn_memory_ptrt_uint256":{"entryPoint":898,"id":null,"parameterSlots":2,"returnSlots":4},"abi_decode_uint64":{"entryPoint":1453,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_bytes":{"entryPoint":1304,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_bytes_calldata":{"entryPoint":2169,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_t_uint256__to_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_t_uint256__fromStack_reversed":{"entryPoint":1348,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bytes32_t_array$_t_struct$_Action_$10724_memory_ptr_$dyn_memory_ptr_t_uint256__to_t_bytes32_t_array$_t_struct$_Action_$10724_memory_ptr_$dyn_memory_ptr_t_uint256__fromStack_reversed":{"entryPoint":1773,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_uint64_t_uint64_t_bytes_calldata_ptr_t_array$_t_struct$_Action_$10724_calldata_ptr_$dyn_calldata_ptr_t_uint256__to_t_uint64_t_uint64_t_bytes_memory_ptr_t_array$_t_struct$_Action_$10724_memory_ptr_$dyn_memory_ptr_t_uint256__fromStack_reversed":{"entryPoint":2210,"id":null,"parameterSlots":8,"returnSlots":1},"allocate_memory":{"entryPoint":773,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_memory_2869":{"entryPoint":732,"id":null,"parameterSlots":0,"returnSlots":1},"array_allocation_size_array_struct_Action_dyn":{"entryPoint":822,"id":null,"parameterSlots":1,"returnSlots":1},"array_allocation_size_bytes":{"entryPoint":858,"id":null,"parameterSlots":1,"returnSlots":1},"copy_memory_to_memory_with_cleanup":{"entryPoint":1268,"id":null,"parameterSlots":3,"returnSlots":0},"panic_error_0x41":{"entryPoint":710,"id":null,"parameterSlots":0,"returnSlots":0},"validator_revert_contract_IDAO":{"entryPoint":686,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:12924:92","statements":[{"nodeType":"YulBlock","src":"6:3:92","statements":[]},{"body":{"nodeType":"YulBlock","src":"83:217:92","statements":[{"body":{"nodeType":"YulBlock","src":"129:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"138:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"141:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"131:6:92"},"nodeType":"YulFunctionCall","src":"131:12:92"},"nodeType":"YulExpressionStatement","src":"131:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"104:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"113:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"100:3:92"},"nodeType":"YulFunctionCall","src":"100:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"125:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"96:3:92"},"nodeType":"YulFunctionCall","src":"96:32:92"},"nodeType":"YulIf","src":"93:52:92"},{"nodeType":"YulVariableDeclaration","src":"154:36:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"180:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"167:12:92"},"nodeType":"YulFunctionCall","src":"167:23:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"158:5:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"254:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"263:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"266:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"256:6:92"},"nodeType":"YulFunctionCall","src":"256:12:92"},"nodeType":"YulExpressionStatement","src":"256:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"212:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"223:5:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"234:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"239:10:92","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"230:3:92"},"nodeType":"YulFunctionCall","src":"230:20:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"219:3:92"},"nodeType":"YulFunctionCall","src":"219:32:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"209:2:92"},"nodeType":"YulFunctionCall","src":"209:43:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"202:6:92"},"nodeType":"YulFunctionCall","src":"202:51:92"},"nodeType":"YulIf","src":"199:71:92"},{"nodeType":"YulAssignment","src":"279:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"289:5:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"279:6:92"}]}]},"name":"abi_decode_tuple_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"49:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"60:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"72:6:92","type":""}],"src":"14:286:92"},{"body":{"nodeType":"YulBlock","src":"400:92:92","statements":[{"nodeType":"YulAssignment","src":"410:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"422:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"433:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"418:3:92"},"nodeType":"YulFunctionCall","src":"418:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"410:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"452:9:92"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"477:6:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"470:6:92"},"nodeType":"YulFunctionCall","src":"470:14:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"463:6:92"},"nodeType":"YulFunctionCall","src":"463:22:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"445:6:92"},"nodeType":"YulFunctionCall","src":"445:41:92"},"nodeType":"YulExpressionStatement","src":"445:41:92"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"369:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"380:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"391:4:92","type":""}],"src":"305:187:92"},{"body":{"nodeType":"YulBlock","src":"548:109:92","statements":[{"body":{"nodeType":"YulBlock","src":"635:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"644:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"647:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"637:6:92"},"nodeType":"YulFunctionCall","src":"637:12:92"},"nodeType":"YulExpressionStatement","src":"637:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"571:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"582:5:92"},{"kind":"number","nodeType":"YulLiteral","src":"589:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"578:3:92"},"nodeType":"YulFunctionCall","src":"578:54:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"568:2:92"},"nodeType":"YulFunctionCall","src":"568:65:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"561:6:92"},"nodeType":"YulFunctionCall","src":"561:73:92"},"nodeType":"YulIf","src":"558:93:92"}]},"name":"validator_revert_contract_IDAO","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"537:5:92","type":""}],"src":"497:160:92"},{"body":{"nodeType":"YulBlock","src":"694:95:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"711:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"718:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"723:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"714:3:92"},"nodeType":"YulFunctionCall","src":"714:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"704:6:92"},"nodeType":"YulFunctionCall","src":"704:31:92"},"nodeType":"YulExpressionStatement","src":"704:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"751:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"754:4:92","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"744:6:92"},"nodeType":"YulFunctionCall","src":"744:15:92"},"nodeType":"YulExpressionStatement","src":"744:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"775:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"778:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"768:6:92"},"nodeType":"YulFunctionCall","src":"768:15:92"},"nodeType":"YulExpressionStatement","src":"768:15:92"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"662:127:92"},{"body":{"nodeType":"YulBlock","src":"840:207:92","statements":[{"nodeType":"YulAssignment","src":"850:19:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"866:2:92","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"860:5:92"},"nodeType":"YulFunctionCall","src":"860:9:92"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"850:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"878:35:92","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"900:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"908:4:92","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"896:3:92"},"nodeType":"YulFunctionCall","src":"896:17:92"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"882:10:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"988:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"990:16:92"},"nodeType":"YulFunctionCall","src":"990:18:92"},"nodeType":"YulExpressionStatement","src":"990:18:92"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"931:10:92"},{"kind":"number","nodeType":"YulLiteral","src":"943:18:92","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"928:2:92"},"nodeType":"YulFunctionCall","src":"928:34:92"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"967:10:92"},{"name":"memPtr","nodeType":"YulIdentifier","src":"979:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"964:2:92"},"nodeType":"YulFunctionCall","src":"964:22:92"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"925:2:92"},"nodeType":"YulFunctionCall","src":"925:62:92"},"nodeType":"YulIf","src":"922:88:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1026:2:92","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"1030:10:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1019:6:92"},"nodeType":"YulFunctionCall","src":"1019:22:92"},"nodeType":"YulExpressionStatement","src":"1019:22:92"}]},"name":"allocate_memory_2869","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"829:6:92","type":""}],"src":"794:253:92"},{"body":{"nodeType":"YulBlock","src":"1097:230:92","statements":[{"nodeType":"YulAssignment","src":"1107:19:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1123:2:92","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1117:5:92"},"nodeType":"YulFunctionCall","src":"1117:9:92"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1107:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"1135:58:92","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1157:6:92"},{"arguments":[{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"1173:4:92"},{"kind":"number","nodeType":"YulLiteral","src":"1179:2:92","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1169:3:92"},"nodeType":"YulFunctionCall","src":"1169:13:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1188:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"1184:3:92"},"nodeType":"YulFunctionCall","src":"1184:7:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1165:3:92"},"nodeType":"YulFunctionCall","src":"1165:27:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1153:3:92"},"nodeType":"YulFunctionCall","src":"1153:40:92"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"1139:10:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"1268:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"1270:16:92"},"nodeType":"YulFunctionCall","src":"1270:18:92"},"nodeType":"YulExpressionStatement","src":"1270:18:92"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"1211:10:92"},{"kind":"number","nodeType":"YulLiteral","src":"1223:18:92","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1208:2:92"},"nodeType":"YulFunctionCall","src":"1208:34:92"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"1247:10:92"},{"name":"memPtr","nodeType":"YulIdentifier","src":"1259:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"1244:2:92"},"nodeType":"YulFunctionCall","src":"1244:22:92"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"1205:2:92"},"nodeType":"YulFunctionCall","src":"1205:62:92"},"nodeType":"YulIf","src":"1202:88:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1306:2:92","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"1310:10:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1299:6:92"},"nodeType":"YulFunctionCall","src":"1299:22:92"},"nodeType":"YulExpressionStatement","src":"1299:22:92"}]},"name":"allocate_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"size","nodeType":"YulTypedName","src":"1077:4:92","type":""}],"returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"1086:6:92","type":""}],"src":"1052:275:92"},{"body":{"nodeType":"YulBlock","src":"1407:114:92","statements":[{"body":{"nodeType":"YulBlock","src":"1451:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"1453:16:92"},"nodeType":"YulFunctionCall","src":"1453:18:92"},"nodeType":"YulExpressionStatement","src":"1453:18:92"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"1423:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"1431:18:92","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1420:2:92"},"nodeType":"YulFunctionCall","src":"1420:30:92"},"nodeType":"YulIf","src":"1417:56:92"},{"nodeType":"YulAssignment","src":"1482:33:92","value":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1498:1:92","type":"","value":"5"},{"name":"length","nodeType":"YulIdentifier","src":"1501:6:92"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1494:3:92"},"nodeType":"YulFunctionCall","src":"1494:14:92"},{"kind":"number","nodeType":"YulLiteral","src":"1510:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1490:3:92"},"nodeType":"YulFunctionCall","src":"1490:25:92"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"1482:4:92"}]}]},"name":"array_allocation_size_array_struct_Action_dyn","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nodeType":"YulTypedName","src":"1387:6:92","type":""}],"returnVariables":[{"name":"size","nodeType":"YulTypedName","src":"1398:4:92","type":""}],"src":"1332:189:92"},{"body":{"nodeType":"YulBlock","src":"1583:129:92","statements":[{"body":{"nodeType":"YulBlock","src":"1627:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"1629:16:92"},"nodeType":"YulFunctionCall","src":"1629:18:92"},"nodeType":"YulExpressionStatement","src":"1629:18:92"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"1599:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"1607:18:92","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1596:2:92"},"nodeType":"YulFunctionCall","src":"1596:30:92"},"nodeType":"YulIf","src":"1593:56:92"},{"nodeType":"YulAssignment","src":"1658:48:92","value":{"arguments":[{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"1678:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"1686:2:92","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1674:3:92"},"nodeType":"YulFunctionCall","src":"1674:15:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1695:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"1691:3:92"},"nodeType":"YulFunctionCall","src":"1691:7:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1670:3:92"},"nodeType":"YulFunctionCall","src":"1670:29:92"},{"kind":"number","nodeType":"YulLiteral","src":"1701:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1666:3:92"},"nodeType":"YulFunctionCall","src":"1666:40:92"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"1658:4:92"}]}]},"name":"array_allocation_size_bytes","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nodeType":"YulTypedName","src":"1563:6:92","type":""}],"returnVariables":[{"name":"size","nodeType":"YulTypedName","src":"1574:4:92","type":""}],"src":"1526:186:92"},{"body":{"nodeType":"YulBlock","src":"1902:2024:92","statements":[{"body":{"nodeType":"YulBlock","src":"1949:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1958:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1961:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1951:6:92"},"nodeType":"YulFunctionCall","src":"1951:12:92"},"nodeType":"YulExpressionStatement","src":"1951:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1923:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"1932:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1919:3:92"},"nodeType":"YulFunctionCall","src":"1919:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"1944:3:92","type":"","value":"128"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1915:3:92"},"nodeType":"YulFunctionCall","src":"1915:33:92"},"nodeType":"YulIf","src":"1912:53:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2018:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2005:12:92"},"nodeType":"YulFunctionCall","src":"2005:23:92"}],"functionName":{"name":"validator_revert_contract_IDAO","nodeType":"YulIdentifier","src":"1974:30:92"},"nodeType":"YulFunctionCall","src":"1974:55:92"},"nodeType":"YulExpressionStatement","src":"1974:55:92"},{"nodeType":"YulAssignment","src":"2038:33:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2061:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2048:12:92"},"nodeType":"YulFunctionCall","src":"2048:23:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2038:6:92"}]},{"nodeType":"YulAssignment","src":"2080:42:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2107:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2118:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2103:3:92"},"nodeType":"YulFunctionCall","src":"2103:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2090:12:92"},"nodeType":"YulFunctionCall","src":"2090:32:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"2080:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"2131:46:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2162:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2173:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2158:3:92"},"nodeType":"YulFunctionCall","src":"2158:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2145:12:92"},"nodeType":"YulFunctionCall","src":"2145:32:92"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"2135:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2186:28:92","value":{"kind":"number","nodeType":"YulLiteral","src":"2196:18:92","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"2190:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"2241:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2250:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2253:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2243:6:92"},"nodeType":"YulFunctionCall","src":"2243:12:92"},"nodeType":"YulExpressionStatement","src":"2243:12:92"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"2229:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"2237:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2226:2:92"},"nodeType":"YulFunctionCall","src":"2226:14:92"},"nodeType":"YulIf","src":"2223:34:92"},{"nodeType":"YulVariableDeclaration","src":"2266:32:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2280:9:92"},{"name":"offset","nodeType":"YulIdentifier","src":"2291:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2276:3:92"},"nodeType":"YulFunctionCall","src":"2276:22:92"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"2270:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"2346:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2355:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2358:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2348:6:92"},"nodeType":"YulFunctionCall","src":"2348:12:92"},"nodeType":"YulExpressionStatement","src":"2348:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"2325:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"2329:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2321:3:92"},"nodeType":"YulFunctionCall","src":"2321:13:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2336:7:92"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2317:3:92"},"nodeType":"YulFunctionCall","src":"2317:27:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2310:6:92"},"nodeType":"YulFunctionCall","src":"2310:35:92"},"nodeType":"YulIf","src":"2307:55:92"},{"nodeType":"YulVariableDeclaration","src":"2371:91:92","value":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"2457:2:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2444:12:92"},"nodeType":"YulFunctionCall","src":"2444:16:92"}],"functionName":{"name":"array_allocation_size_array_struct_Action_dyn","nodeType":"YulIdentifier","src":"2398:45:92"},"nodeType":"YulFunctionCall","src":"2398:63:92"}],"functionName":{"name":"allocate_memory","nodeType":"YulIdentifier","src":"2382:15:92"},"nodeType":"YulFunctionCall","src":"2382:80:92"},"variables":[{"name":"dst","nodeType":"YulTypedName","src":"2375:3:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2471:16:92","value":{"name":"dst","nodeType":"YulIdentifier","src":"2484:3:92"},"variables":[{"name":"dst_1","nodeType":"YulTypedName","src":"2475:5:92","type":""}]},{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"2503:3:92"},{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"2521:2:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2508:12:92"},"nodeType":"YulFunctionCall","src":"2508:16:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2496:6:92"},"nodeType":"YulFunctionCall","src":"2496:29:92"},"nodeType":"YulExpressionStatement","src":"2496:29:92"},{"nodeType":"YulAssignment","src":"2534:19:92","value":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"2545:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"2550:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2541:3:92"},"nodeType":"YulFunctionCall","src":"2541:12:92"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"2534:3:92"}]},{"nodeType":"YulVariableDeclaration","src":"2562:56:92","value":{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"2584:2:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2592:1:92","type":"","value":"5"},{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"2608:2:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2595:12:92"},"nodeType":"YulFunctionCall","src":"2595:16:92"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2588:3:92"},"nodeType":"YulFunctionCall","src":"2588:24:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2580:3:92"},"nodeType":"YulFunctionCall","src":"2580:33:92"},{"kind":"number","nodeType":"YulLiteral","src":"2615:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2576:3:92"},"nodeType":"YulFunctionCall","src":"2576:42:92"},"variables":[{"name":"srcEnd","nodeType":"YulTypedName","src":"2566:6:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"2650:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2659:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2662:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2652:6:92"},"nodeType":"YulFunctionCall","src":"2652:12:92"},"nodeType":"YulExpressionStatement","src":"2652:12:92"}]},"condition":{"arguments":[{"name":"srcEnd","nodeType":"YulIdentifier","src":"2633:6:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2641:7:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2630:2:92"},"nodeType":"YulFunctionCall","src":"2630:19:92"},"nodeType":"YulIf","src":"2627:39:92"},{"nodeType":"YulVariableDeclaration","src":"2675:22:92","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"2690:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"2694:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2686:3:92"},"nodeType":"YulFunctionCall","src":"2686:11:92"},"variables":[{"name":"src","nodeType":"YulTypedName","src":"2679:3:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"2762:1081:92","statements":[{"body":{"nodeType":"YulBlock","src":"2805:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2814:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2817:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2807:6:92"},"nodeType":"YulFunctionCall","src":"2807:12:92"},"nodeType":"YulExpressionStatement","src":"2807:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"2795:3:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2782:12:92"},"nodeType":"YulFunctionCall","src":"2782:17:92"},{"name":"_1","nodeType":"YulIdentifier","src":"2801:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2779:2:92"},"nodeType":"YulFunctionCall","src":"2779:25:92"},"nodeType":"YulIf","src":"2776:45:92"},{"nodeType":"YulVariableDeclaration","src":"2834:36:92","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"2848:2:92"},{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"2865:3:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2852:12:92"},"nodeType":"YulFunctionCall","src":"2852:17:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2844:3:92"},"nodeType":"YulFunctionCall","src":"2844:26:92"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"2838:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"2928:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2937:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2940:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2930:6:92"},"nodeType":"YulFunctionCall","src":"2930:12:92"},"nodeType":"YulExpressionStatement","src":"2930:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2898:7:92"},{"name":"_3","nodeType":"YulIdentifier","src":"2907:2:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2894:3:92"},"nodeType":"YulFunctionCall","src":"2894:16:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2916:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"2912:3:92"},"nodeType":"YulFunctionCall","src":"2912:7:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2890:3:92"},"nodeType":"YulFunctionCall","src":"2890:30:92"},{"kind":"number","nodeType":"YulLiteral","src":"2922:4:92","type":"","value":"0x60"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2886:3:92"},"nodeType":"YulFunctionCall","src":"2886:41:92"},"nodeType":"YulIf","src":"2883:61:92"},{"nodeType":"YulVariableDeclaration","src":"2957:35:92","value":{"arguments":[],"functionName":{"name":"allocate_memory_2869","nodeType":"YulIdentifier","src":"2970:20:92"},"nodeType":"YulFunctionCall","src":"2970:22:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"2961:5:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3005:40:92","value":{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"3037:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"3041:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3033:3:92"},"nodeType":"YulFunctionCall","src":"3033:11:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3020:12:92"},"nodeType":"YulFunctionCall","src":"3020:25:92"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"3009:7:92","type":""}]},{"expression":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"3089:7:92"}],"functionName":{"name":"validator_revert_contract_IDAO","nodeType":"YulIdentifier","src":"3058:30:92"},"nodeType":"YulFunctionCall","src":"3058:39:92"},"nodeType":"YulExpressionStatement","src":"3058:39:92"},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3117:5:92"},{"name":"value_1","nodeType":"YulIdentifier","src":"3124:7:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3110:6:92"},"nodeType":"YulFunctionCall","src":"3110:22:92"},"nodeType":"YulExpressionStatement","src":"3110:22:92"},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3156:5:92"},{"kind":"number","nodeType":"YulLiteral","src":"3163:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3152:3:92"},"nodeType":"YulFunctionCall","src":"3152:14:92"},{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"3185:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"3189:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3181:3:92"},"nodeType":"YulFunctionCall","src":"3181:11:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3168:12:92"},"nodeType":"YulFunctionCall","src":"3168:25:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3145:6:92"},"nodeType":"YulFunctionCall","src":"3145:49:92"},"nodeType":"YulExpressionStatement","src":"3145:49:92"},{"nodeType":"YulVariableDeclaration","src":"3207:43:92","value":{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"3240:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"3244:4:92","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3236:3:92"},"nodeType":"YulFunctionCall","src":"3236:13:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3223:12:92"},"nodeType":"YulFunctionCall","src":"3223:27:92"},"variables":[{"name":"offset_1","nodeType":"YulTypedName","src":"3211:8:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"3283:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3292:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3295:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3285:6:92"},"nodeType":"YulFunctionCall","src":"3285:12:92"},"nodeType":"YulExpressionStatement","src":"3285:12:92"}]},"condition":{"arguments":[{"name":"offset_1","nodeType":"YulIdentifier","src":"3269:8:92"},{"name":"_1","nodeType":"YulIdentifier","src":"3279:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3266:2:92"},"nodeType":"YulFunctionCall","src":"3266:16:92"},"nodeType":"YulIf","src":"3263:36:92"},{"nodeType":"YulVariableDeclaration","src":"3312:27:92","value":{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"3326:2:92"},{"name":"offset_1","nodeType":"YulIdentifier","src":"3330:8:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3322:3:92"},"nodeType":"YulFunctionCall","src":"3322:17:92"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"3316:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"3389:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3398:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3401:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3391:6:92"},"nodeType":"YulFunctionCall","src":"3391:12:92"},"nodeType":"YulExpressionStatement","src":"3391:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_4","nodeType":"YulIdentifier","src":"3370:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"3374:2:92","type":"","value":"63"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3366:3:92"},"nodeType":"YulFunctionCall","src":"3366:11:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3379:7:92"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3362:3:92"},"nodeType":"YulFunctionCall","src":"3362:25:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3355:6:92"},"nodeType":"YulFunctionCall","src":"3355:33:92"},"nodeType":"YulIf","src":"3352:53:92"},{"nodeType":"YulVariableDeclaration","src":"3418:35:92","value":{"arguments":[{"arguments":[{"name":"_4","nodeType":"YulIdentifier","src":"3445:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"3449:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3441:3:92"},"nodeType":"YulFunctionCall","src":"3441:11:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3428:12:92"},"nodeType":"YulFunctionCall","src":"3428:25:92"},"variables":[{"name":"_5","nodeType":"YulTypedName","src":"3422:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3466:61:92","value":{"arguments":[{"arguments":[{"name":"_5","nodeType":"YulIdentifier","src":"3523:2:92"}],"functionName":{"name":"array_allocation_size_bytes","nodeType":"YulIdentifier","src":"3495:27:92"},"nodeType":"YulFunctionCall","src":"3495:31:92"}],"functionName":{"name":"allocate_memory","nodeType":"YulIdentifier","src":"3479:15:92"},"nodeType":"YulFunctionCall","src":"3479:48:92"},"variables":[{"name":"array","nodeType":"YulTypedName","src":"3470:5:92","type":""}]},{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"3547:5:92"},{"name":"_5","nodeType":"YulIdentifier","src":"3554:2:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3540:6:92"},"nodeType":"YulFunctionCall","src":"3540:17:92"},"nodeType":"YulExpressionStatement","src":"3540:17:92"},{"body":{"nodeType":"YulBlock","src":"3607:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3616:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3619:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3609:6:92"},"nodeType":"YulFunctionCall","src":"3609:12:92"},"nodeType":"YulExpressionStatement","src":"3609:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_4","nodeType":"YulIdentifier","src":"3584:2:92"},{"name":"_5","nodeType":"YulIdentifier","src":"3588:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3580:3:92"},"nodeType":"YulFunctionCall","src":"3580:11:92"},{"kind":"number","nodeType":"YulLiteral","src":"3593:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3576:3:92"},"nodeType":"YulFunctionCall","src":"3576:20:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3598:7:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3573:2:92"},"nodeType":"YulFunctionCall","src":"3573:33:92"},"nodeType":"YulIf","src":"3570:53:92"},{"expression":{"arguments":[{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"3653:5:92"},{"kind":"number","nodeType":"YulLiteral","src":"3660:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3649:3:92"},"nodeType":"YulFunctionCall","src":"3649:14:92"},{"arguments":[{"name":"_4","nodeType":"YulIdentifier","src":"3669:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"3673:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3665:3:92"},"nodeType":"YulFunctionCall","src":"3665:11:92"},{"name":"_5","nodeType":"YulIdentifier","src":"3678:2:92"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"3636:12:92"},"nodeType":"YulFunctionCall","src":"3636:45:92"},"nodeType":"YulExpressionStatement","src":"3636:45:92"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"3709:5:92"},{"name":"_5","nodeType":"YulIdentifier","src":"3716:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3705:3:92"},"nodeType":"YulFunctionCall","src":"3705:14:92"},{"kind":"number","nodeType":"YulLiteral","src":"3721:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3701:3:92"},"nodeType":"YulFunctionCall","src":"3701:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"3726:1:92","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3694:6:92"},"nodeType":"YulFunctionCall","src":"3694:34:92"},"nodeType":"YulExpressionStatement","src":"3694:34:92"},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3752:5:92"},{"kind":"number","nodeType":"YulLiteral","src":"3759:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3748:3:92"},"nodeType":"YulFunctionCall","src":"3748:14:92"},{"name":"array","nodeType":"YulIdentifier","src":"3764:5:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3741:6:92"},"nodeType":"YulFunctionCall","src":"3741:29:92"},"nodeType":"YulExpressionStatement","src":"3741:29:92"},{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"3790:3:92"},{"name":"value","nodeType":"YulIdentifier","src":"3795:5:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3783:6:92"},"nodeType":"YulFunctionCall","src":"3783:18:92"},"nodeType":"YulExpressionStatement","src":"3783:18:92"},{"nodeType":"YulAssignment","src":"3814:19:92","value":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"3825:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"3830:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3821:3:92"},"nodeType":"YulFunctionCall","src":"3821:12:92"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"3814:3:92"}]}]},"condition":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"2717:3:92"},{"name":"srcEnd","nodeType":"YulIdentifier","src":"2722:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2714:2:92"},"nodeType":"YulFunctionCall","src":"2714:15:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"2730:23:92","statements":[{"nodeType":"YulAssignment","src":"2732:19:92","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"2743:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"2748:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2739:3:92"},"nodeType":"YulFunctionCall","src":"2739:12:92"},"variableNames":[{"name":"src","nodeType":"YulIdentifier","src":"2732:3:92"}]}]},"pre":{"nodeType":"YulBlock","src":"2710:3:92","statements":[]},"src":"2706:1137:92"},{"nodeType":"YulAssignment","src":"3852:15:92","value":{"name":"dst_1","nodeType":"YulIdentifier","src":"3862:5:92"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"3852:6:92"}]},{"nodeType":"YulAssignment","src":"3876:44:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3903:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3914:4:92","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3899:3:92"},"nodeType":"YulFunctionCall","src":"3899:20:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3886:12:92"},"nodeType":"YulFunctionCall","src":"3886:34:92"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"3876:6:92"}]}]},"name":"abi_decode_tuple_t_contract$_IDAO_$10865t_uint256t_array$_t_struct$_Action_$10724_memory_ptr_$dyn_memory_ptrt_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1844:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1855:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1867:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1875:6:92","type":""},{"name":"value2","nodeType":"YulTypedName","src":"1883:6:92","type":""},{"name":"value3","nodeType":"YulTypedName","src":"1891:6:92","type":""}],"src":"1717:2209:92"},{"body":{"nodeType":"YulBlock","src":"3997:184:92","statements":[{"nodeType":"YulVariableDeclaration","src":"4007:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"4016:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"4011:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"4076:63:92","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"4101:3:92"},{"name":"i","nodeType":"YulIdentifier","src":"4106:1:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4097:3:92"},"nodeType":"YulFunctionCall","src":"4097:11:92"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"4120:3:92"},{"name":"i","nodeType":"YulIdentifier","src":"4125:1:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4116:3:92"},"nodeType":"YulFunctionCall","src":"4116:11:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4110:5:92"},"nodeType":"YulFunctionCall","src":"4110:18:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4090:6:92"},"nodeType":"YulFunctionCall","src":"4090:39:92"},"nodeType":"YulExpressionStatement","src":"4090:39:92"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"4037:1:92"},{"name":"length","nodeType":"YulIdentifier","src":"4040:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"4034:2:92"},"nodeType":"YulFunctionCall","src":"4034:13:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"4048:19:92","statements":[{"nodeType":"YulAssignment","src":"4050:15:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"4059:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"4062:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4055:3:92"},"nodeType":"YulFunctionCall","src":"4055:10:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"4050:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"4030:3:92","statements":[]},"src":"4026:113:92"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"4159:3:92"},{"name":"length","nodeType":"YulIdentifier","src":"4164:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4155:3:92"},"nodeType":"YulFunctionCall","src":"4155:16:92"},{"kind":"number","nodeType":"YulLiteral","src":"4173:1:92","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4148:6:92"},"nodeType":"YulFunctionCall","src":"4148:27:92"},"nodeType":"YulExpressionStatement","src":"4148:27:92"}]},"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"3975:3:92","type":""},{"name":"dst","nodeType":"YulTypedName","src":"3980:3:92","type":""},{"name":"length","nodeType":"YulTypedName","src":"3985:6:92","type":""}],"src":"3931:250:92"},{"body":{"nodeType":"YulBlock","src":"4235:221:92","statements":[{"nodeType":"YulVariableDeclaration","src":"4245:26:92","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4265:5:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4259:5:92"},"nodeType":"YulFunctionCall","src":"4259:12:92"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"4249:6:92","type":""}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4287:3:92"},{"name":"length","nodeType":"YulIdentifier","src":"4292:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4280:6:92"},"nodeType":"YulFunctionCall","src":"4280:19:92"},"nodeType":"YulExpressionStatement","src":"4280:19:92"},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4347:5:92"},{"kind":"number","nodeType":"YulLiteral","src":"4354:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4343:3:92"},"nodeType":"YulFunctionCall","src":"4343:16:92"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4365:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"4370:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4361:3:92"},"nodeType":"YulFunctionCall","src":"4361:14:92"},{"name":"length","nodeType":"YulIdentifier","src":"4377:6:92"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"4308:34:92"},"nodeType":"YulFunctionCall","src":"4308:76:92"},"nodeType":"YulExpressionStatement","src":"4308:76:92"},{"nodeType":"YulAssignment","src":"4393:57:92","value":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4408:3:92"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"4421:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"4429:2:92","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4417:3:92"},"nodeType":"YulFunctionCall","src":"4417:15:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4438:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"4434:3:92"},"nodeType":"YulFunctionCall","src":"4434:7:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4413:3:92"},"nodeType":"YulFunctionCall","src":"4413:29:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4404:3:92"},"nodeType":"YulFunctionCall","src":"4404:39:92"},{"kind":"number","nodeType":"YulLiteral","src":"4445:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4400:3:92"},"nodeType":"YulFunctionCall","src":"4400:50:92"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"4393:3:92"}]}]},"name":"abi_encode_bytes","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"4212:5:92","type":""},{"name":"pos","nodeType":"YulTypedName","src":"4219:3:92","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"4227:3:92","type":""}],"src":"4186:270:92"},{"body":{"nodeType":"YulBlock","src":"4658:676:92","statements":[{"nodeType":"YulVariableDeclaration","src":"4668:32:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4686:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4697:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4682:3:92"},"nodeType":"YulFunctionCall","src":"4682:18:92"},"variables":[{"name":"tail_1","nodeType":"YulTypedName","src":"4672:6:92","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4716:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4727:2:92","type":"","value":"64"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4709:6:92"},"nodeType":"YulFunctionCall","src":"4709:21:92"},"nodeType":"YulExpressionStatement","src":"4709:21:92"},{"nodeType":"YulVariableDeclaration","src":"4739:17:92","value":{"name":"tail_1","nodeType":"YulIdentifier","src":"4750:6:92"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"4743:3:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4765:27:92","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4785:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4779:5:92"},"nodeType":"YulFunctionCall","src":"4779:13:92"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"4769:6:92","type":""}]},{"expression":{"arguments":[{"name":"tail_1","nodeType":"YulIdentifier","src":"4808:6:92"},{"name":"length","nodeType":"YulIdentifier","src":"4816:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4801:6:92"},"nodeType":"YulFunctionCall","src":"4801:22:92"},"nodeType":"YulExpressionStatement","src":"4801:22:92"},{"nodeType":"YulAssignment","src":"4832:25:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4843:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4854:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4839:3:92"},"nodeType":"YulFunctionCall","src":"4839:18:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"4832:3:92"}]},{"nodeType":"YulVariableDeclaration","src":"4866:53:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4888:9:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4903:1:92","type":"","value":"5"},{"name":"length","nodeType":"YulIdentifier","src":"4906:6:92"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"4899:3:92"},"nodeType":"YulFunctionCall","src":"4899:14:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4884:3:92"},"nodeType":"YulFunctionCall","src":"4884:30:92"},{"kind":"number","nodeType":"YulLiteral","src":"4916:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4880:3:92"},"nodeType":"YulFunctionCall","src":"4880:39:92"},"variables":[{"name":"tail_2","nodeType":"YulTypedName","src":"4870:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4928:14:92","value":{"kind":"number","nodeType":"YulLiteral","src":"4938:4:92","type":"","value":"0x20"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"4932:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4951:29:92","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4969:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"4977:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4965:3:92"},"nodeType":"YulFunctionCall","src":"4965:15:92"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"4955:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4989:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"4998:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"4993:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"5057:205:92","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5078:3:92"},{"arguments":[{"arguments":[{"name":"tail_2","nodeType":"YulIdentifier","src":"5091:6:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"5099:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5087:3:92"},"nodeType":"YulFunctionCall","src":"5087:22:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5115:2:92","type":"","value":"95"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"5111:3:92"},"nodeType":"YulFunctionCall","src":"5111:7:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5083:3:92"},"nodeType":"YulFunctionCall","src":"5083:36:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5071:6:92"},"nodeType":"YulFunctionCall","src":"5071:49:92"},"nodeType":"YulExpressionStatement","src":"5071:49:92"},{"nodeType":"YulAssignment","src":"5133:49:92","value":{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"5166:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5160:5:92"},"nodeType":"YulFunctionCall","src":"5160:13:92"},{"name":"tail_2","nodeType":"YulIdentifier","src":"5175:6:92"}],"functionName":{"name":"abi_encode_bytes","nodeType":"YulIdentifier","src":"5143:16:92"},"nodeType":"YulFunctionCall","src":"5143:39:92"},"variableNames":[{"name":"tail_2","nodeType":"YulIdentifier","src":"5133:6:92"}]},{"nodeType":"YulAssignment","src":"5195:25:92","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"5209:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"5217:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5205:3:92"},"nodeType":"YulFunctionCall","src":"5205:15:92"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"5195:6:92"}]},{"nodeType":"YulAssignment","src":"5233:19:92","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5244:3:92"},{"name":"_1","nodeType":"YulIdentifier","src":"5249:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5240:3:92"},"nodeType":"YulFunctionCall","src":"5240:12:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"5233:3:92"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"5019:1:92"},{"name":"length","nodeType":"YulIdentifier","src":"5022:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"5016:2:92"},"nodeType":"YulFunctionCall","src":"5016:13:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"5030:18:92","statements":[{"nodeType":"YulAssignment","src":"5032:14:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"5041:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"5044:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5037:3:92"},"nodeType":"YulFunctionCall","src":"5037:9:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"5032:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"5012:3:92","statements":[]},"src":"5008:254:92"},{"nodeType":"YulAssignment","src":"5271:14:92","value":{"name":"tail_2","nodeType":"YulIdentifier","src":"5279:6:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5271:4:92"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5305:9:92"},{"name":"_1","nodeType":"YulIdentifier","src":"5316:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5301:3:92"},"nodeType":"YulFunctionCall","src":"5301:18:92"},{"name":"value1","nodeType":"YulIdentifier","src":"5321:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5294:6:92"},"nodeType":"YulFunctionCall","src":"5294:34:92"},"nodeType":"YulExpressionStatement","src":"5294:34:92"}]},"name":"abi_encode_tuple_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_t_uint256__to_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4619:9:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"4630:6:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"4638:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4649:4:92","type":""}],"src":"4461:873:92"},{"body":{"nodeType":"YulBlock","src":"5387:123:92","statements":[{"nodeType":"YulAssignment","src":"5397:29:92","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"5419:6:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"5406:12:92"},"nodeType":"YulFunctionCall","src":"5406:20:92"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"5397:5:92"}]},{"body":{"nodeType":"YulBlock","src":"5488:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5497:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5500:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5490:6:92"},"nodeType":"YulFunctionCall","src":"5490:12:92"},"nodeType":"YulExpressionStatement","src":"5490:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5448:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5459:5:92"},{"kind":"number","nodeType":"YulLiteral","src":"5466:18:92","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5455:3:92"},"nodeType":"YulFunctionCall","src":"5455:30:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"5445:2:92"},"nodeType":"YulFunctionCall","src":"5445:41:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"5438:6:92"},"nodeType":"YulFunctionCall","src":"5438:49:92"},"nodeType":"YulIf","src":"5435:69:92"}]},"name":"abi_decode_uint64","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"5366:6:92","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"5377:5:92","type":""}],"src":"5339:171:92"},{"body":{"nodeType":"YulBlock","src":"5614:283:92","statements":[{"body":{"nodeType":"YulBlock","src":"5663:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5672:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5675:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5665:6:92"},"nodeType":"YulFunctionCall","src":"5665:12:92"},"nodeType":"YulExpressionStatement","src":"5665:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"5642:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"5650:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5638:3:92"},"nodeType":"YulFunctionCall","src":"5638:17:92"},{"name":"end","nodeType":"YulIdentifier","src":"5657:3:92"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"5634:3:92"},"nodeType":"YulFunctionCall","src":"5634:27:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"5627:6:92"},"nodeType":"YulFunctionCall","src":"5627:35:92"},"nodeType":"YulIf","src":"5624:55:92"},{"nodeType":"YulAssignment","src":"5688:30:92","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"5711:6:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"5698:12:92"},"nodeType":"YulFunctionCall","src":"5698:20:92"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"5688:6:92"}]},{"body":{"nodeType":"YulBlock","src":"5761:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5770:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5773:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5763:6:92"},"nodeType":"YulFunctionCall","src":"5763:12:92"},"nodeType":"YulExpressionStatement","src":"5763:12:92"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"5733:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"5741:18:92","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5730:2:92"},"nodeType":"YulFunctionCall","src":"5730:30:92"},"nodeType":"YulIf","src":"5727:50:92"},{"nodeType":"YulAssignment","src":"5786:29:92","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"5802:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"5810:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5798:3:92"},"nodeType":"YulFunctionCall","src":"5798:17:92"},"variableNames":[{"name":"arrayPos","nodeType":"YulIdentifier","src":"5786:8:92"}]},{"body":{"nodeType":"YulBlock","src":"5875:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5884:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5887:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5877:6:92"},"nodeType":"YulFunctionCall","src":"5877:12:92"},"nodeType":"YulExpressionStatement","src":"5877:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"5838:6:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5850:1:92","type":"","value":"5"},{"name":"length","nodeType":"YulIdentifier","src":"5853:6:92"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"5846:3:92"},"nodeType":"YulFunctionCall","src":"5846:14:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5834:3:92"},"nodeType":"YulFunctionCall","src":"5834:27:92"},{"kind":"number","nodeType":"YulLiteral","src":"5863:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5830:3:92"},"nodeType":"YulFunctionCall","src":"5830:38:92"},{"name":"end","nodeType":"YulIdentifier","src":"5870:3:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5827:2:92"},"nodeType":"YulFunctionCall","src":"5827:47:92"},"nodeType":"YulIf","src":"5824:67:92"}]},"name":"abi_decode_array_struct_Action_calldata_dyn_calldata","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"5577:6:92","type":""},{"name":"end","nodeType":"YulTypedName","src":"5585:3:92","type":""}],"returnVariables":[{"name":"arrayPos","nodeType":"YulTypedName","src":"5593:8:92","type":""},{"name":"length","nodeType":"YulTypedName","src":"5603:6:92","type":""}],"src":"5515:382:92"},{"body":{"nodeType":"YulBlock","src":"6136:1070:92","statements":[{"body":{"nodeType":"YulBlock","src":"6183:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6192:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6195:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6185:6:92"},"nodeType":"YulFunctionCall","src":"6185:12:92"},"nodeType":"YulExpressionStatement","src":"6185:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"6157:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"6166:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6153:3:92"},"nodeType":"YulFunctionCall","src":"6153:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"6178:3:92","type":"","value":"192"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6149:3:92"},"nodeType":"YulFunctionCall","src":"6149:33:92"},"nodeType":"YulIf","src":"6146:53:92"},{"nodeType":"YulVariableDeclaration","src":"6208:36:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6234:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6221:12:92"},"nodeType":"YulFunctionCall","src":"6221:23:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"6212:5:92","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6284:5:92"}],"functionName":{"name":"validator_revert_contract_IDAO","nodeType":"YulIdentifier","src":"6253:30:92"},"nodeType":"YulFunctionCall","src":"6253:37:92"},"nodeType":"YulExpressionStatement","src":"6253:37:92"},{"nodeType":"YulAssignment","src":"6299:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"6309:5:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"6299:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"6323:46:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6354:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6365:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6350:3:92"},"nodeType":"YulFunctionCall","src":"6350:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6337:12:92"},"nodeType":"YulFunctionCall","src":"6337:32:92"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"6327:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"6378:28:92","value":{"kind":"number","nodeType":"YulLiteral","src":"6388:18:92","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"6382:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"6433:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6442:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6445:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6435:6:92"},"nodeType":"YulFunctionCall","src":"6435:12:92"},"nodeType":"YulExpressionStatement","src":"6435:12:92"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"6421:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"6429:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6418:2:92"},"nodeType":"YulFunctionCall","src":"6418:14:92"},"nodeType":"YulIf","src":"6415:34:92"},{"nodeType":"YulVariableDeclaration","src":"6458:32:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6472:9:92"},{"name":"offset","nodeType":"YulIdentifier","src":"6483:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6468:3:92"},"nodeType":"YulFunctionCall","src":"6468:22:92"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"6462:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"6538:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6547:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6550:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6540:6:92"},"nodeType":"YulFunctionCall","src":"6540:12:92"},"nodeType":"YulExpressionStatement","src":"6540:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"6517:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"6521:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6513:3:92"},"nodeType":"YulFunctionCall","src":"6513:13:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"6528:7:92"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6509:3:92"},"nodeType":"YulFunctionCall","src":"6509:27:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"6502:6:92"},"nodeType":"YulFunctionCall","src":"6502:35:92"},"nodeType":"YulIf","src":"6499:55:92"},{"nodeType":"YulVariableDeclaration","src":"6563:30:92","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"6590:2:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6577:12:92"},"nodeType":"YulFunctionCall","src":"6577:16:92"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"6567:6:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"6620:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6629:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6632:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6622:6:92"},"nodeType":"YulFunctionCall","src":"6622:12:92"},"nodeType":"YulExpressionStatement","src":"6622:12:92"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"6608:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"6616:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6605:2:92"},"nodeType":"YulFunctionCall","src":"6605:14:92"},"nodeType":"YulIf","src":"6602:34:92"},{"body":{"nodeType":"YulBlock","src":"6686:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6695:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6698:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6688:6:92"},"nodeType":"YulFunctionCall","src":"6688:12:92"},"nodeType":"YulExpressionStatement","src":"6688:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"6659:2:92"},{"name":"length","nodeType":"YulIdentifier","src":"6663:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6655:3:92"},"nodeType":"YulFunctionCall","src":"6655:15:92"},{"kind":"number","nodeType":"YulLiteral","src":"6672:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6651:3:92"},"nodeType":"YulFunctionCall","src":"6651:24:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"6677:7:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6648:2:92"},"nodeType":"YulFunctionCall","src":"6648:37:92"},"nodeType":"YulIf","src":"6645:57:92"},{"nodeType":"YulAssignment","src":"6711:21:92","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"6725:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"6729:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6721:3:92"},"nodeType":"YulFunctionCall","src":"6721:11:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"6711:6:92"}]},{"nodeType":"YulAssignment","src":"6741:16:92","value":{"name":"length","nodeType":"YulIdentifier","src":"6751:6:92"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"6741:6:92"}]},{"nodeType":"YulAssignment","src":"6766:47:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6798:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6809:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6794:3:92"},"nodeType":"YulFunctionCall","src":"6794:18:92"}],"functionName":{"name":"abi_decode_uint64","nodeType":"YulIdentifier","src":"6776:17:92"},"nodeType":"YulFunctionCall","src":"6776:37:92"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"6766:6:92"}]},{"nodeType":"YulAssignment","src":"6822:47:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6854:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6865:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6850:3:92"},"nodeType":"YulFunctionCall","src":"6850:18:92"}],"functionName":{"name":"abi_decode_uint64","nodeType":"YulIdentifier","src":"6832:17:92"},"nodeType":"YulFunctionCall","src":"6832:37:92"},"variableNames":[{"name":"value4","nodeType":"YulIdentifier","src":"6822:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"6878:49:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6911:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6922:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6907:3:92"},"nodeType":"YulFunctionCall","src":"6907:19:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6894:12:92"},"nodeType":"YulFunctionCall","src":"6894:33:92"},"variables":[{"name":"offset_1","nodeType":"YulTypedName","src":"6882:8:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"6956:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6965:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6968:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6958:6:92"},"nodeType":"YulFunctionCall","src":"6958:12:92"},"nodeType":"YulExpressionStatement","src":"6958:12:92"}]},"condition":{"arguments":[{"name":"offset_1","nodeType":"YulIdentifier","src":"6942:8:92"},{"name":"_1","nodeType":"YulIdentifier","src":"6952:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6939:2:92"},"nodeType":"YulFunctionCall","src":"6939:16:92"},"nodeType":"YulIf","src":"6936:36:92"},{"nodeType":"YulVariableDeclaration","src":"6981:113:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7064:9:92"},{"name":"offset_1","nodeType":"YulIdentifier","src":"7075:8:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7060:3:92"},"nodeType":"YulFunctionCall","src":"7060:24:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"7086:7:92"}],"functionName":{"name":"abi_decode_array_struct_Action_calldata_dyn_calldata","nodeType":"YulIdentifier","src":"7007:52:92"},"nodeType":"YulFunctionCall","src":"7007:87:92"},"variables":[{"name":"value5_1","nodeType":"YulTypedName","src":"6985:8:92","type":""},{"name":"value6_1","nodeType":"YulTypedName","src":"6995:8:92","type":""}]},{"nodeType":"YulAssignment","src":"7103:18:92","value":{"name":"value5_1","nodeType":"YulIdentifier","src":"7113:8:92"},"variableNames":[{"name":"value5","nodeType":"YulIdentifier","src":"7103:6:92"}]},{"nodeType":"YulAssignment","src":"7130:18:92","value":{"name":"value6_1","nodeType":"YulIdentifier","src":"7140:8:92"},"variableNames":[{"name":"value6","nodeType":"YulIdentifier","src":"7130:6:92"}]},{"nodeType":"YulAssignment","src":"7157:43:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7184:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7195:3:92","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7180:3:92"},"nodeType":"YulFunctionCall","src":"7180:19:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"7167:12:92"},"nodeType":"YulFunctionCall","src":"7167:33:92"},"variableNames":[{"name":"value7","nodeType":"YulIdentifier","src":"7157:6:92"}]}]},"name":"abi_decode_tuple_t_addresst_bytes_calldata_ptrt_uint64t_uint64t_array$_t_struct$_Action_$10724_calldata_ptr_$dyn_calldata_ptrt_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6046:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"6057:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"6069:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"6077:6:92","type":""},{"name":"value2","nodeType":"YulTypedName","src":"6085:6:92","type":""},{"name":"value3","nodeType":"YulTypedName","src":"6093:6:92","type":""},{"name":"value4","nodeType":"YulTypedName","src":"6101:6:92","type":""},{"name":"value5","nodeType":"YulTypedName","src":"6109:6:92","type":""},{"name":"value6","nodeType":"YulTypedName","src":"6117:6:92","type":""},{"name":"value7","nodeType":"YulTypedName","src":"6125:6:92","type":""}],"src":"5902:1304:92"},{"body":{"nodeType":"YulBlock","src":"7312:76:92","statements":[{"nodeType":"YulAssignment","src":"7322:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7334:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7345:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7330:3:92"},"nodeType":"YulFunctionCall","src":"7330:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7322:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7364:9:92"},{"name":"value0","nodeType":"YulIdentifier","src":"7375:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7357:6:92"},"nodeType":"YulFunctionCall","src":"7357:25:92"},"nodeType":"YulExpressionStatement","src":"7357:25:92"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7281:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"7292:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7303:4:92","type":""}],"src":"7211:177:92"},{"body":{"nodeType":"YulBlock","src":"7650:1048:92","statements":[{"nodeType":"YulVariableDeclaration","src":"7660:12:92","value":{"kind":"number","nodeType":"YulLiteral","src":"7670:2:92","type":"","value":"96"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"7664:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"7681:32:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7699:9:92"},{"name":"_1","nodeType":"YulIdentifier","src":"7710:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7695:3:92"},"nodeType":"YulFunctionCall","src":"7695:18:92"},"variables":[{"name":"tail_1","nodeType":"YulTypedName","src":"7685:6:92","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7729:9:92"},{"name":"value0","nodeType":"YulIdentifier","src":"7740:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7722:6:92"},"nodeType":"YulFunctionCall","src":"7722:25:92"},"nodeType":"YulExpressionStatement","src":"7722:25:92"},{"nodeType":"YulVariableDeclaration","src":"7756:12:92","value":{"kind":"number","nodeType":"YulLiteral","src":"7766:2:92","type":"","value":"32"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"7760:2:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7788:9:92"},{"name":"_2","nodeType":"YulIdentifier","src":"7799:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7784:3:92"},"nodeType":"YulFunctionCall","src":"7784:18:92"},{"name":"_1","nodeType":"YulIdentifier","src":"7804:2:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7777:6:92"},"nodeType":"YulFunctionCall","src":"7777:30:92"},"nodeType":"YulExpressionStatement","src":"7777:30:92"},{"nodeType":"YulVariableDeclaration","src":"7816:17:92","value":{"name":"tail_1","nodeType":"YulIdentifier","src":"7827:6:92"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"7820:3:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"7842:27:92","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"7862:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"7856:5:92"},"nodeType":"YulFunctionCall","src":"7856:13:92"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"7846:6:92","type":""}]},{"expression":{"arguments":[{"name":"tail_1","nodeType":"YulIdentifier","src":"7885:6:92"},{"name":"length","nodeType":"YulIdentifier","src":"7893:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7878:6:92"},"nodeType":"YulFunctionCall","src":"7878:22:92"},"nodeType":"YulExpressionStatement","src":"7878:22:92"},{"nodeType":"YulAssignment","src":"7909:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7920:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7931:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7916:3:92"},"nodeType":"YulFunctionCall","src":"7916:19:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"7909:3:92"}]},{"nodeType":"YulVariableDeclaration","src":"7944:54:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7966:9:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7981:1:92","type":"","value":"5"},{"name":"length","nodeType":"YulIdentifier","src":"7984:6:92"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"7977:3:92"},"nodeType":"YulFunctionCall","src":"7977:14:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7962:3:92"},"nodeType":"YulFunctionCall","src":"7962:30:92"},{"kind":"number","nodeType":"YulLiteral","src":"7994:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7958:3:92"},"nodeType":"YulFunctionCall","src":"7958:40:92"},"variables":[{"name":"tail_2","nodeType":"YulTypedName","src":"7948:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"8007:29:92","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"8025:6:92"},{"name":"_2","nodeType":"YulIdentifier","src":"8033:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8021:3:92"},"nodeType":"YulFunctionCall","src":"8021:15:92"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"8011:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"8045:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"8054:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"8049:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"8113:511:92","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"8134:3:92"},{"arguments":[{"arguments":[{"name":"tail_2","nodeType":"YulIdentifier","src":"8147:6:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"8155:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"8143:3:92"},"nodeType":"YulFunctionCall","src":"8143:22:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8171:3:92","type":"","value":"127"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"8167:3:92"},"nodeType":"YulFunctionCall","src":"8167:8:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8139:3:92"},"nodeType":"YulFunctionCall","src":"8139:37:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8127:6:92"},"nodeType":"YulFunctionCall","src":"8127:50:92"},"nodeType":"YulExpressionStatement","src":"8127:50:92"},{"nodeType":"YulVariableDeclaration","src":"8190:23:92","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"8206:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"8200:5:92"},"nodeType":"YulFunctionCall","src":"8200:13:92"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"8194:2:92","type":""}]},{"expression":{"arguments":[{"name":"tail_2","nodeType":"YulIdentifier","src":"8233:6:92"},{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"8251:2:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"8245:5:92"},"nodeType":"YulFunctionCall","src":"8245:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8256:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8241:3:92"},"nodeType":"YulFunctionCall","src":"8241:58:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8226:6:92"},"nodeType":"YulFunctionCall","src":"8226:74:92"},"nodeType":"YulExpressionStatement","src":"8226:74:92"},{"expression":{"arguments":[{"arguments":[{"name":"tail_2","nodeType":"YulIdentifier","src":"8324:6:92"},{"name":"_2","nodeType":"YulIdentifier","src":"8332:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8320:3:92"},"nodeType":"YulFunctionCall","src":"8320:15:92"},{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"8347:2:92"},{"name":"_2","nodeType":"YulIdentifier","src":"8351:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8343:3:92"},"nodeType":"YulFunctionCall","src":"8343:11:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"8337:5:92"},"nodeType":"YulFunctionCall","src":"8337:18:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8313:6:92"},"nodeType":"YulFunctionCall","src":"8313:43:92"},"nodeType":"YulExpressionStatement","src":"8313:43:92"},{"nodeType":"YulVariableDeclaration","src":"8369:14:92","value":{"kind":"number","nodeType":"YulLiteral","src":"8379:4:92","type":"","value":"0x40"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"8373:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"8396:38:92","value":{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"8426:2:92"},{"name":"_4","nodeType":"YulIdentifier","src":"8430:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8422:3:92"},"nodeType":"YulFunctionCall","src":"8422:11:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"8416:5:92"},"nodeType":"YulFunctionCall","src":"8416:18:92"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"8400:12:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"tail_2","nodeType":"YulIdentifier","src":"8458:6:92"},{"name":"_4","nodeType":"YulIdentifier","src":"8466:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8454:3:92"},"nodeType":"YulFunctionCall","src":"8454:15:92"},{"name":"_1","nodeType":"YulIdentifier","src":"8471:2:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8447:6:92"},"nodeType":"YulFunctionCall","src":"8447:27:92"},"nodeType":"YulExpressionStatement","src":"8447:27:92"},{"nodeType":"YulAssignment","src":"8487:57:92","value":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"8514:12:92"},{"arguments":[{"name":"tail_2","nodeType":"YulIdentifier","src":"8532:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"8540:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8528:3:92"},"nodeType":"YulFunctionCall","src":"8528:15:92"}],"functionName":{"name":"abi_encode_bytes","nodeType":"YulIdentifier","src":"8497:16:92"},"nodeType":"YulFunctionCall","src":"8497:47:92"},"variableNames":[{"name":"tail_2","nodeType":"YulIdentifier","src":"8487:6:92"}]},{"nodeType":"YulAssignment","src":"8557:25:92","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"8571:6:92"},{"name":"_2","nodeType":"YulIdentifier","src":"8579:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8567:3:92"},"nodeType":"YulFunctionCall","src":"8567:15:92"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"8557:6:92"}]},{"nodeType":"YulAssignment","src":"8595:19:92","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"8606:3:92"},{"name":"_2","nodeType":"YulIdentifier","src":"8611:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8602:3:92"},"nodeType":"YulFunctionCall","src":"8602:12:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"8595:3:92"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"8075:1:92"},{"name":"length","nodeType":"YulIdentifier","src":"8078:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"8072:2:92"},"nodeType":"YulFunctionCall","src":"8072:13:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"8086:18:92","statements":[{"nodeType":"YulAssignment","src":"8088:14:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"8097:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"8100:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8093:3:92"},"nodeType":"YulFunctionCall","src":"8093:9:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"8088:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"8068:3:92","statements":[]},"src":"8064:560:92"},{"nodeType":"YulAssignment","src":"8633:14:92","value":{"name":"tail_2","nodeType":"YulIdentifier","src":"8641:6:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"8633:4:92"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8667:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8678:4:92","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8663:3:92"},"nodeType":"YulFunctionCall","src":"8663:20:92"},{"name":"value2","nodeType":"YulIdentifier","src":"8685:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8656:6:92"},"nodeType":"YulFunctionCall","src":"8656:36:92"},"nodeType":"YulExpressionStatement","src":"8656:36:92"}]},"name":"abi_encode_tuple_t_bytes32_t_array$_t_struct$_Action_$10724_memory_ptr_$dyn_memory_ptr_t_uint256__to_t_bytes32_t_array$_t_struct$_Action_$10724_memory_ptr_$dyn_memory_ptr_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7603:9:92","type":""},{"name":"value2","nodeType":"YulTypedName","src":"7614:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"7622:6:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"7630:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7641:4:92","type":""}],"src":"7393:1305:92"},{"body":{"nodeType":"YulBlock","src":"8835:1571:92","statements":[{"nodeType":"YulVariableDeclaration","src":"8845:12:92","value":{"kind":"number","nodeType":"YulLiteral","src":"8855:2:92","type":"","value":"64"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"8849:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"8902:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8911:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8914:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8904:6:92"},"nodeType":"YulFunctionCall","src":"8904:12:92"},"nodeType":"YulExpressionStatement","src":"8904:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"8877:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"8886:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"8873:3:92"},"nodeType":"YulFunctionCall","src":"8873:23:92"},{"name":"_1","nodeType":"YulIdentifier","src":"8898:2:92"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"8869:3:92"},"nodeType":"YulFunctionCall","src":"8869:32:92"},"nodeType":"YulIf","src":"8866:52:92"},{"nodeType":"YulVariableDeclaration","src":"8927:30:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8947:9:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"8941:5:92"},"nodeType":"YulFunctionCall","src":"8941:16:92"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"8931:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"8966:28:92","value":{"kind":"number","nodeType":"YulLiteral","src":"8976:18:92","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"8970:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"9021:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9030:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"9033:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9023:6:92"},"nodeType":"YulFunctionCall","src":"9023:12:92"},"nodeType":"YulExpressionStatement","src":"9023:12:92"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"9009:6:92"},{"name":"_2","nodeType":"YulIdentifier","src":"9017:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"9006:2:92"},"nodeType":"YulFunctionCall","src":"9006:14:92"},"nodeType":"YulIf","src":"9003:34:92"},{"nodeType":"YulVariableDeclaration","src":"9046:32:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9060:9:92"},{"name":"offset","nodeType":"YulIdentifier","src":"9071:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9056:3:92"},"nodeType":"YulFunctionCall","src":"9056:22:92"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"9050:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"9126:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9135:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"9138:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9128:6:92"},"nodeType":"YulFunctionCall","src":"9128:12:92"},"nodeType":"YulExpressionStatement","src":"9128:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"9105:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"9109:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9101:3:92"},"nodeType":"YulFunctionCall","src":"9101:13:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"9116:7:92"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"9097:3:92"},"nodeType":"YulFunctionCall","src":"9097:27:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"9090:6:92"},"nodeType":"YulFunctionCall","src":"9090:35:92"},"nodeType":"YulIf","src":"9087:55:92"},{"nodeType":"YulVariableDeclaration","src":"9151:19:92","value":{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"9167:2:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"9161:5:92"},"nodeType":"YulFunctionCall","src":"9161:9:92"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"9155:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"9179:14:92","value":{"kind":"number","nodeType":"YulLiteral","src":"9189:4:92","type":"","value":"0x20"},"variables":[{"name":"_5","nodeType":"YulTypedName","src":"9183:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"9202:77:92","value":{"arguments":[{"arguments":[{"name":"_4","nodeType":"YulIdentifier","src":"9275:2:92"}],"functionName":{"name":"array_allocation_size_array_struct_Action_dyn","nodeType":"YulIdentifier","src":"9229:45:92"},"nodeType":"YulFunctionCall","src":"9229:49:92"}],"functionName":{"name":"allocate_memory","nodeType":"YulIdentifier","src":"9213:15:92"},"nodeType":"YulFunctionCall","src":"9213:66:92"},"variables":[{"name":"dst","nodeType":"YulTypedName","src":"9206:3:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"9288:16:92","value":{"name":"dst","nodeType":"YulIdentifier","src":"9301:3:92"},"variables":[{"name":"dst_1","nodeType":"YulTypedName","src":"9292:5:92","type":""}]},{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"9320:3:92"},{"name":"_4","nodeType":"YulIdentifier","src":"9325:2:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9313:6:92"},"nodeType":"YulFunctionCall","src":"9313:15:92"},"nodeType":"YulExpressionStatement","src":"9313:15:92"},{"nodeType":"YulAssignment","src":"9337:19:92","value":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"9348:3:92"},{"name":"_5","nodeType":"YulIdentifier","src":"9353:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9344:3:92"},"nodeType":"YulFunctionCall","src":"9344:12:92"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"9337:3:92"}]},{"nodeType":"YulVariableDeclaration","src":"9365:42:92","value":{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"9387:2:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9395:1:92","type":"","value":"5"},{"name":"_4","nodeType":"YulIdentifier","src":"9398:2:92"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"9391:3:92"},"nodeType":"YulFunctionCall","src":"9391:10:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9383:3:92"},"nodeType":"YulFunctionCall","src":"9383:19:92"},{"name":"_5","nodeType":"YulIdentifier","src":"9404:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9379:3:92"},"nodeType":"YulFunctionCall","src":"9379:28:92"},"variables":[{"name":"srcEnd","nodeType":"YulTypedName","src":"9369:6:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"9439:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9448:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"9451:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9441:6:92"},"nodeType":"YulFunctionCall","src":"9441:12:92"},"nodeType":"YulExpressionStatement","src":"9441:12:92"}]},"condition":{"arguments":[{"name":"srcEnd","nodeType":"YulIdentifier","src":"9422:6:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"9430:7:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"9419:2:92"},"nodeType":"YulFunctionCall","src":"9419:19:92"},"nodeType":"YulIf","src":"9416:39:92"},{"nodeType":"YulVariableDeclaration","src":"9464:22:92","value":{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"9479:2:92"},{"name":"_5","nodeType":"YulIdentifier","src":"9483:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9475:3:92"},"nodeType":"YulFunctionCall","src":"9475:11:92"},"variables":[{"name":"src","nodeType":"YulTypedName","src":"9468:3:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"9551:781:92","statements":[{"nodeType":"YulVariableDeclaration","src":"9565:29:92","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"9590:3:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"9584:5:92"},"nodeType":"YulFunctionCall","src":"9584:10:92"},"variables":[{"name":"innerOffset","nodeType":"YulTypedName","src":"9569:11:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"9642:74:92","statements":[{"nodeType":"YulVariableDeclaration","src":"9660:11:92","value":{"kind":"number","nodeType":"YulLiteral","src":"9670:1:92","type":"","value":"0"},"variables":[{"name":"_6","nodeType":"YulTypedName","src":"9664:2:92","type":""}]},{"expression":{"arguments":[{"name":"_6","nodeType":"YulIdentifier","src":"9695:2:92"},{"name":"_6","nodeType":"YulIdentifier","src":"9699:2:92"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9688:6:92"},"nodeType":"YulFunctionCall","src":"9688:14:92"},"nodeType":"YulExpressionStatement","src":"9688:14:92"}]},"condition":{"arguments":[{"name":"innerOffset","nodeType":"YulIdentifier","src":"9613:11:92"},{"name":"_2","nodeType":"YulIdentifier","src":"9626:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"9610:2:92"},"nodeType":"YulFunctionCall","src":"9610:19:92"},"nodeType":"YulIf","src":"9607:109:92"},{"nodeType":"YulVariableDeclaration","src":"9729:30:92","value":{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"9743:2:92"},{"name":"innerOffset","nodeType":"YulIdentifier","src":"9747:11:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9739:3:92"},"nodeType":"YulFunctionCall","src":"9739:20:92"},"variables":[{"name":"_7","nodeType":"YulTypedName","src":"9733:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"9821:74:92","statements":[{"nodeType":"YulVariableDeclaration","src":"9839:11:92","value":{"kind":"number","nodeType":"YulLiteral","src":"9849:1:92","type":"","value":"0"},"variables":[{"name":"_8","nodeType":"YulTypedName","src":"9843:2:92","type":""}]},{"expression":{"arguments":[{"name":"_8","nodeType":"YulIdentifier","src":"9874:2:92"},{"name":"_8","nodeType":"YulIdentifier","src":"9878:2:92"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9867:6:92"},"nodeType":"YulFunctionCall","src":"9867:14:92"},"nodeType":"YulExpressionStatement","src":"9867:14:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_7","nodeType":"YulIdentifier","src":"9790:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"9794:2:92","type":"","value":"63"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9786:3:92"},"nodeType":"YulFunctionCall","src":"9786:11:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"9799:7:92"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"9782:3:92"},"nodeType":"YulFunctionCall","src":"9782:25:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"9775:6:92"},"nodeType":"YulFunctionCall","src":"9775:33:92"},"nodeType":"YulIf","src":"9772:123:92"},{"nodeType":"YulVariableDeclaration","src":"9908:28:92","value":{"arguments":[{"arguments":[{"name":"_7","nodeType":"YulIdentifier","src":"9928:2:92"},{"name":"_5","nodeType":"YulIdentifier","src":"9932:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9924:3:92"},"nodeType":"YulFunctionCall","src":"9924:11:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"9918:5:92"},"nodeType":"YulFunctionCall","src":"9918:18:92"},"variables":[{"name":"_9","nodeType":"YulTypedName","src":"9912:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"9949:61:92","value":{"arguments":[{"arguments":[{"name":"_9","nodeType":"YulIdentifier","src":"10006:2:92"}],"functionName":{"name":"array_allocation_size_bytes","nodeType":"YulIdentifier","src":"9978:27:92"},"nodeType":"YulFunctionCall","src":"9978:31:92"}],"functionName":{"name":"allocate_memory","nodeType":"YulIdentifier","src":"9962:15:92"},"nodeType":"YulFunctionCall","src":"9962:48:92"},"variables":[{"name":"array","nodeType":"YulTypedName","src":"9953:5:92","type":""}]},{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"10030:5:92"},{"name":"_9","nodeType":"YulIdentifier","src":"10037:2:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10023:6:92"},"nodeType":"YulFunctionCall","src":"10023:17:92"},"nodeType":"YulExpressionStatement","src":"10023:17:92"},{"body":{"nodeType":"YulBlock","src":"10102:77:92","statements":[{"nodeType":"YulVariableDeclaration","src":"10120:12:92","value":{"kind":"number","nodeType":"YulLiteral","src":"10131:1:92","type":"","value":"0"},"variables":[{"name":"_10","nodeType":"YulTypedName","src":"10124:3:92","type":""}]},{"expression":{"arguments":[{"name":"_10","nodeType":"YulIdentifier","src":"10156:3:92"},{"name":"_10","nodeType":"YulIdentifier","src":"10161:3:92"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"10149:6:92"},"nodeType":"YulFunctionCall","src":"10149:16:92"},"nodeType":"YulExpressionStatement","src":"10149:16:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_7","nodeType":"YulIdentifier","src":"10067:2:92"},{"name":"_9","nodeType":"YulIdentifier","src":"10071:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10063:3:92"},"nodeType":"YulFunctionCall","src":"10063:11:92"},{"name":"_1","nodeType":"YulIdentifier","src":"10076:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10059:3:92"},"nodeType":"YulFunctionCall","src":"10059:20:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"10081:7:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"10056:2:92"},"nodeType":"YulFunctionCall","src":"10056:33:92"},"nodeType":"YulIf","src":"10053:126:92"},{"expression":{"arguments":[{"arguments":[{"name":"_7","nodeType":"YulIdentifier","src":"10231:2:92"},{"name":"_1","nodeType":"YulIdentifier","src":"10235:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10227:3:92"},"nodeType":"YulFunctionCall","src":"10227:11:92"},{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"10244:5:92"},{"name":"_5","nodeType":"YulIdentifier","src":"10251:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10240:3:92"},"nodeType":"YulFunctionCall","src":"10240:14:92"},{"name":"_9","nodeType":"YulIdentifier","src":"10256:2:92"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"10192:34:92"},"nodeType":"YulFunctionCall","src":"10192:67:92"},"nodeType":"YulExpressionStatement","src":"10192:67:92"},{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"10279:3:92"},{"name":"array","nodeType":"YulIdentifier","src":"10284:5:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10272:6:92"},"nodeType":"YulFunctionCall","src":"10272:18:92"},"nodeType":"YulExpressionStatement","src":"10272:18:92"},{"nodeType":"YulAssignment","src":"10303:19:92","value":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"10314:3:92"},{"name":"_5","nodeType":"YulIdentifier","src":"10319:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10310:3:92"},"nodeType":"YulFunctionCall","src":"10310:12:92"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"10303:3:92"}]}]},"condition":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"9506:3:92"},{"name":"srcEnd","nodeType":"YulIdentifier","src":"9511:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"9503:2:92"},"nodeType":"YulFunctionCall","src":"9503:15:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"9519:23:92","statements":[{"nodeType":"YulAssignment","src":"9521:19:92","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"9532:3:92"},{"name":"_5","nodeType":"YulIdentifier","src":"9537:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9528:3:92"},"nodeType":"YulFunctionCall","src":"9528:12:92"},"variableNames":[{"name":"src","nodeType":"YulIdentifier","src":"9521:3:92"}]}]},"pre":{"nodeType":"YulBlock","src":"9499:3:92","statements":[]},"src":"9495:837:92"},{"nodeType":"YulAssignment","src":"10341:15:92","value":{"name":"dst_1","nodeType":"YulIdentifier","src":"10351:5:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"10341:6:92"}]},{"nodeType":"YulAssignment","src":"10365:35:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10385:9:92"},{"name":"_5","nodeType":"YulIdentifier","src":"10396:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10381:3:92"},"nodeType":"YulFunctionCall","src":"10381:18:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"10375:5:92"},"nodeType":"YulFunctionCall","src":"10375:25:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"10365:6:92"}]}]},"name":"abi_decode_tuple_t_array$_t_bytes_memory_ptr_$dyn_memory_ptrt_uint256_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8793:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"8804:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"8816:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"8824:6:92","type":""}],"src":"8703:1703:92"},{"body":{"nodeType":"YulBlock","src":"10477:200:92","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"10494:3:92"},{"name":"length","nodeType":"YulIdentifier","src":"10499:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10487:6:92"},"nodeType":"YulFunctionCall","src":"10487:19:92"},"nodeType":"YulExpressionStatement","src":"10487:19:92"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"10532:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"10537:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10528:3:92"},"nodeType":"YulFunctionCall","src":"10528:14:92"},{"name":"start","nodeType":"YulIdentifier","src":"10544:5:92"},{"name":"length","nodeType":"YulIdentifier","src":"10551:6:92"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"10515:12:92"},"nodeType":"YulFunctionCall","src":"10515:43:92"},"nodeType":"YulExpressionStatement","src":"10515:43:92"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"10582:3:92"},{"name":"length","nodeType":"YulIdentifier","src":"10587:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10578:3:92"},"nodeType":"YulFunctionCall","src":"10578:16:92"},{"kind":"number","nodeType":"YulLiteral","src":"10596:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10574:3:92"},"nodeType":"YulFunctionCall","src":"10574:27:92"},{"kind":"number","nodeType":"YulLiteral","src":"10603:1:92","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10567:6:92"},"nodeType":"YulFunctionCall","src":"10567:38:92"},"nodeType":"YulExpressionStatement","src":"10567:38:92"},{"nodeType":"YulAssignment","src":"10614:57:92","value":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"10629:3:92"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"10642:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"10650:2:92","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10638:3:92"},"nodeType":"YulFunctionCall","src":"10638:15:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10659:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"10655:3:92"},"nodeType":"YulFunctionCall","src":"10655:7:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"10634:3:92"},"nodeType":"YulFunctionCall","src":"10634:29:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10625:3:92"},"nodeType":"YulFunctionCall","src":"10625:39:92"},{"kind":"number","nodeType":"YulLiteral","src":"10666:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10621:3:92"},"nodeType":"YulFunctionCall","src":"10621:50:92"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"10614:3:92"}]}]},"name":"abi_encode_bytes_calldata","nodeType":"YulFunctionDefinition","parameters":[{"name":"start","nodeType":"YulTypedName","src":"10446:5:92","type":""},{"name":"length","nodeType":"YulTypedName","src":"10453:6:92","type":""},{"name":"pos","nodeType":"YulTypedName","src":"10461:3:92","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"10469:3:92","type":""}],"src":"10411:266:92"},{"body":{"nodeType":"YulBlock","src":"11031:1891:92","statements":[{"nodeType":"YulVariableDeclaration","src":"11041:28:92","value":{"kind":"number","nodeType":"YulLiteral","src":"11051:18:92","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"11045:2:92","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11085:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"11100:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"11108:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"11096:3:92"},"nodeType":"YulFunctionCall","src":"11096:15:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11078:6:92"},"nodeType":"YulFunctionCall","src":"11078:34:92"},"nodeType":"YulExpressionStatement","src":"11078:34:92"},{"nodeType":"YulVariableDeclaration","src":"11121:12:92","value":{"kind":"number","nodeType":"YulLiteral","src":"11131:2:92","type":"","value":"32"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"11125:2:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11153:9:92"},{"name":"_2","nodeType":"YulIdentifier","src":"11164:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11149:3:92"},"nodeType":"YulFunctionCall","src":"11149:18:92"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"11173:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"11181:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"11169:3:92"},"nodeType":"YulFunctionCall","src":"11169:15:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11142:6:92"},"nodeType":"YulFunctionCall","src":"11142:43:92"},"nodeType":"YulExpressionStatement","src":"11142:43:92"},{"nodeType":"YulVariableDeclaration","src":"11194:12:92","value":{"kind":"number","nodeType":"YulLiteral","src":"11204:2:92","type":"","value":"64"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"11198:2:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11226:9:92"},{"name":"_3","nodeType":"YulIdentifier","src":"11237:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11222:3:92"},"nodeType":"YulFunctionCall","src":"11222:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"11242:3:92","type":"","value":"160"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11215:6:92"},"nodeType":"YulFunctionCall","src":"11215:31:92"},"nodeType":"YulExpressionStatement","src":"11215:31:92"},{"nodeType":"YulVariableDeclaration","src":"11255:76:92","value":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"11295:6:92"},{"name":"value3","nodeType":"YulIdentifier","src":"11303:6:92"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11315:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"11326:3:92","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11311:3:92"},"nodeType":"YulFunctionCall","src":"11311:19:92"}],"functionName":{"name":"abi_encode_bytes_calldata","nodeType":"YulIdentifier","src":"11269:25:92"},"nodeType":"YulFunctionCall","src":"11269:62:92"},"variables":[{"name":"tail_1","nodeType":"YulTypedName","src":"11259:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"11340:12:92","value":{"kind":"number","nodeType":"YulLiteral","src":"11350:2:92","type":"","value":"96"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"11344:2:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11372:9:92"},{"name":"_4","nodeType":"YulIdentifier","src":"11383:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11368:3:92"},"nodeType":"YulFunctionCall","src":"11368:18:92"},{"arguments":[{"name":"tail_1","nodeType":"YulIdentifier","src":"11392:6:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"11400:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"11388:3:92"},"nodeType":"YulFunctionCall","src":"11388:22:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11361:6:92"},"nodeType":"YulFunctionCall","src":"11361:50:92"},"nodeType":"YulExpressionStatement","src":"11361:50:92"},{"nodeType":"YulVariableDeclaration","src":"11420:17:92","value":{"name":"tail_1","nodeType":"YulIdentifier","src":"11431:6:92"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"11424:3:92","type":""}]},{"expression":{"arguments":[{"name":"tail_1","nodeType":"YulIdentifier","src":"11453:6:92"},{"name":"value5","nodeType":"YulIdentifier","src":"11461:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11446:6:92"},"nodeType":"YulFunctionCall","src":"11446:22:92"},"nodeType":"YulExpressionStatement","src":"11446:22:92"},{"nodeType":"YulAssignment","src":"11477:22:92","value":{"arguments":[{"name":"tail_1","nodeType":"YulIdentifier","src":"11488:6:92"},{"name":"_2","nodeType":"YulIdentifier","src":"11496:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11484:3:92"},"nodeType":"YulFunctionCall","src":"11484:15:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"11477:3:92"}]},{"nodeType":"YulVariableDeclaration","src":"11508:50:92","value":{"arguments":[{"arguments":[{"name":"tail_1","nodeType":"YulIdentifier","src":"11530:6:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"11542:1:92","type":"","value":"5"},{"name":"value5","nodeType":"YulIdentifier","src":"11545:6:92"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"11538:3:92"},"nodeType":"YulFunctionCall","src":"11538:14:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11526:3:92"},"nodeType":"YulFunctionCall","src":"11526:27:92"},{"name":"_2","nodeType":"YulIdentifier","src":"11555:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11522:3:92"},"nodeType":"YulFunctionCall","src":"11522:36:92"},"variables":[{"name":"tail_2","nodeType":"YulTypedName","src":"11512:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"11567:20:92","value":{"name":"value4","nodeType":"YulIdentifier","src":"11581:6:92"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"11571:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"11596:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"11605:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"11600:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"11664:1185:92","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"11685:3:92"},{"arguments":[{"arguments":[{"name":"tail_2","nodeType":"YulIdentifier","src":"11698:6:92"},{"name":"tail_1","nodeType":"YulIdentifier","src":"11706:6:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"11694:3:92"},"nodeType":"YulFunctionCall","src":"11694:19:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"11719:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"11715:3:92"},"nodeType":"YulFunctionCall","src":"11715:7:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11690:3:92"},"nodeType":"YulFunctionCall","src":"11690:33:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11678:6:92"},"nodeType":"YulFunctionCall","src":"11678:46:92"},"nodeType":"YulExpressionStatement","src":"11678:46:92"},{"nodeType":"YulVariableDeclaration","src":"11737:46:92","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"11776:6:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"11763:12:92"},"nodeType":"YulFunctionCall","src":"11763:20:92"},"variables":[{"name":"rel_offset_of_tail","nodeType":"YulTypedName","src":"11741:18:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"11874:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"11883:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"11886:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"11876:6:92"},"nodeType":"YulFunctionCall","src":"11876:12:92"},"nodeType":"YulExpressionStatement","src":"11876:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"rel_offset_of_tail","nodeType":"YulIdentifier","src":"11810:18:92"},{"arguments":[{"arguments":[{"arguments":[],"functionName":{"name":"calldatasize","nodeType":"YulIdentifier","src":"11838:12:92"},"nodeType":"YulFunctionCall","src":"11838:14:92"},{"name":"value4","nodeType":"YulIdentifier","src":"11854:6:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"11834:3:92"},"nodeType":"YulFunctionCall","src":"11834:27:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"11867:2:92","type":"","value":"94"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"11863:3:92"},"nodeType":"YulFunctionCall","src":"11863:7:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11830:3:92"},"nodeType":"YulFunctionCall","src":"11830:41:92"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"11806:3:92"},"nodeType":"YulFunctionCall","src":"11806:66:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"11799:6:92"},"nodeType":"YulFunctionCall","src":"11799:74:92"},"nodeType":"YulIf","src":"11796:94:92"},{"nodeType":"YulVariableDeclaration","src":"11903:44:92","value":{"arguments":[{"name":"rel_offset_of_tail","nodeType":"YulIdentifier","src":"11920:18:92"},{"name":"value4","nodeType":"YulIdentifier","src":"11940:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11916:3:92"},"nodeType":"YulFunctionCall","src":"11916:31:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"11907:5:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"11960:34:92","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"11988:5:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"11975:12:92"},"nodeType":"YulFunctionCall","src":"11975:19:92"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"11964:7:92","type":""}]},{"expression":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"12038:7:92"}],"functionName":{"name":"validator_revert_contract_IDAO","nodeType":"YulIdentifier","src":"12007:30:92"},"nodeType":"YulFunctionCall","src":"12007:39:92"},"nodeType":"YulExpressionStatement","src":"12007:39:92"},{"expression":{"arguments":[{"name":"tail_2","nodeType":"YulIdentifier","src":"12066:6:92"},{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"12078:7:92"},{"kind":"number","nodeType":"YulLiteral","src":"12087:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"12074:3:92"},"nodeType":"YulFunctionCall","src":"12074:56:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12059:6:92"},"nodeType":"YulFunctionCall","src":"12059:72:92"},"nodeType":"YulExpressionStatement","src":"12059:72:92"},{"expression":{"arguments":[{"arguments":[{"name":"tail_2","nodeType":"YulIdentifier","src":"12155:6:92"},{"name":"_2","nodeType":"YulIdentifier","src":"12163:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12151:3:92"},"nodeType":"YulFunctionCall","src":"12151:15:92"},{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"12185:5:92"},{"name":"_2","nodeType":"YulIdentifier","src":"12192:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12181:3:92"},"nodeType":"YulFunctionCall","src":"12181:14:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"12168:12:92"},"nodeType":"YulFunctionCall","src":"12168:28:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12144:6:92"},"nodeType":"YulFunctionCall","src":"12144:53:92"},"nodeType":"YulExpressionStatement","src":"12144:53:92"},{"nodeType":"YulVariableDeclaration","src":"12210:56:92","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"12255:5:92"},{"name":"_3","nodeType":"YulIdentifier","src":"12262:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12251:3:92"},"nodeType":"YulFunctionCall","src":"12251:14:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"12238:12:92"},"nodeType":"YulFunctionCall","src":"12238:28:92"},"variables":[{"name":"rel_offset_of_tail_1","nodeType":"YulTypedName","src":"12214:20:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"12358:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"12367:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"12370:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"12360:6:92"},"nodeType":"YulFunctionCall","src":"12360:12:92"},"nodeType":"YulExpressionStatement","src":"12360:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"rel_offset_of_tail_1","nodeType":"YulIdentifier","src":"12293:20:92"},{"arguments":[{"arguments":[{"arguments":[],"functionName":{"name":"calldatasize","nodeType":"YulIdentifier","src":"12323:12:92"},"nodeType":"YulFunctionCall","src":"12323:14:92"},{"name":"value","nodeType":"YulIdentifier","src":"12339:5:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"12319:3:92"},"nodeType":"YulFunctionCall","src":"12319:26:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"12351:2:92","type":"","value":"30"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"12347:3:92"},"nodeType":"YulFunctionCall","src":"12347:7:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12315:3:92"},"nodeType":"YulFunctionCall","src":"12315:40:92"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"12289:3:92"},"nodeType":"YulFunctionCall","src":"12289:67:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"12282:6:92"},"nodeType":"YulFunctionCall","src":"12282:75:92"},"nodeType":"YulIf","src":"12279:95:92"},{"nodeType":"YulVariableDeclaration","src":"12387:47:92","value":{"arguments":[{"name":"rel_offset_of_tail_1","nodeType":"YulIdentifier","src":"12406:20:92"},{"name":"value","nodeType":"YulIdentifier","src":"12428:5:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12402:3:92"},"nodeType":"YulFunctionCall","src":"12402:32:92"},"variables":[{"name":"value_2","nodeType":"YulTypedName","src":"12391:7:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"12447:35:92","value":{"arguments":[{"name":"value_2","nodeType":"YulIdentifier","src":"12474:7:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"12461:12:92"},"nodeType":"YulFunctionCall","src":"12461:21:92"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"12451:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"12495:31:92","value":{"arguments":[{"name":"value_2","nodeType":"YulIdentifier","src":"12514:7:92"},{"name":"_2","nodeType":"YulIdentifier","src":"12523:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12510:3:92"},"nodeType":"YulFunctionCall","src":"12510:16:92"},"variables":[{"name":"value_3","nodeType":"YulTypedName","src":"12499:7:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"12557:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"12566:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"12569:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"12559:6:92"},"nodeType":"YulFunctionCall","src":"12559:12:92"},"nodeType":"YulExpressionStatement","src":"12559:12:92"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"12545:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"12553:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"12542:2:92"},"nodeType":"YulFunctionCall","src":"12542:14:92"},"nodeType":"YulIf","src":"12539:34:92"},{"body":{"nodeType":"YulBlock","src":"12631:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"12640:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"12643:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"12633:6:92"},"nodeType":"YulFunctionCall","src":"12633:12:92"},"nodeType":"YulExpressionStatement","src":"12633:12:92"}]},"condition":{"arguments":[{"name":"value_3","nodeType":"YulIdentifier","src":"12593:7:92"},{"arguments":[{"arguments":[],"functionName":{"name":"calldatasize","nodeType":"YulIdentifier","src":"12606:12:92"},"nodeType":"YulFunctionCall","src":"12606:14:92"},{"name":"length","nodeType":"YulIdentifier","src":"12622:6:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"12602:3:92"},"nodeType":"YulFunctionCall","src":"12602:27:92"}],"functionName":{"name":"sgt","nodeType":"YulIdentifier","src":"12589:3:92"},"nodeType":"YulFunctionCall","src":"12589:41:92"},"nodeType":"YulIf","src":"12586:61:92"},{"expression":{"arguments":[{"arguments":[{"name":"tail_2","nodeType":"YulIdentifier","src":"12671:6:92"},{"name":"_3","nodeType":"YulIdentifier","src":"12679:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12667:3:92"},"nodeType":"YulFunctionCall","src":"12667:15:92"},{"name":"_4","nodeType":"YulIdentifier","src":"12684:2:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12660:6:92"},"nodeType":"YulFunctionCall","src":"12660:27:92"},"nodeType":"YulExpressionStatement","src":"12660:27:92"},{"nodeType":"YulAssignment","src":"12700:69:92","value":{"arguments":[{"name":"value_3","nodeType":"YulIdentifier","src":"12736:7:92"},{"name":"length","nodeType":"YulIdentifier","src":"12745:6:92"},{"arguments":[{"name":"tail_2","nodeType":"YulIdentifier","src":"12757:6:92"},{"name":"_4","nodeType":"YulIdentifier","src":"12765:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12753:3:92"},"nodeType":"YulFunctionCall","src":"12753:15:92"}],"functionName":{"name":"abi_encode_bytes_calldata","nodeType":"YulIdentifier","src":"12710:25:92"},"nodeType":"YulFunctionCall","src":"12710:59:92"},"variableNames":[{"name":"tail_2","nodeType":"YulIdentifier","src":"12700:6:92"}]},{"nodeType":"YulAssignment","src":"12782:25:92","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"12796:6:92"},{"name":"_2","nodeType":"YulIdentifier","src":"12804:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12792:3:92"},"nodeType":"YulFunctionCall","src":"12792:15:92"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"12782:6:92"}]},{"nodeType":"YulAssignment","src":"12820:19:92","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"12831:3:92"},{"name":"_2","nodeType":"YulIdentifier","src":"12836:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12827:3:92"},"nodeType":"YulFunctionCall","src":"12827:12:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"12820:3:92"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"11626:1:92"},{"name":"value5","nodeType":"YulIdentifier","src":"11629:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"11623:2:92"},"nodeType":"YulFunctionCall","src":"11623:13:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"11637:18:92","statements":[{"nodeType":"YulAssignment","src":"11639:14:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"11648:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"11651:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11644:3:92"},"nodeType":"YulFunctionCall","src":"11644:9:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"11639:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"11619:3:92","statements":[]},"src":"11615:1234:92"},{"nodeType":"YulAssignment","src":"12858:14:92","value":{"name":"tail_2","nodeType":"YulIdentifier","src":"12866:6:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"12858:4:92"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12892:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"12903:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12888:3:92"},"nodeType":"YulFunctionCall","src":"12888:19:92"},{"name":"value6","nodeType":"YulIdentifier","src":"12909:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12881:6:92"},"nodeType":"YulFunctionCall","src":"12881:35:92"},"nodeType":"YulExpressionStatement","src":"12881:35:92"}]},"name":"abi_encode_tuple_t_uint64_t_uint64_t_bytes_calldata_ptr_t_array$_t_struct$_Action_$10724_calldata_ptr_$dyn_calldata_ptr_t_uint256__to_t_uint64_t_uint64_t_bytes_memory_ptr_t_array$_t_struct$_Action_$10724_memory_ptr_$dyn_memory_ptr_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"10952:9:92","type":""},{"name":"value6","nodeType":"YulTypedName","src":"10963:6:92","type":""},{"name":"value5","nodeType":"YulTypedName","src":"10971:6:92","type":""},{"name":"value4","nodeType":"YulTypedName","src":"10979:6:92","type":""},{"name":"value3","nodeType":"YulTypedName","src":"10987:6:92","type":""},{"name":"value2","nodeType":"YulTypedName","src":"10995:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"11003:6:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"11011:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"11022:4:92","type":""}],"src":"10682:2240:92"}]},"contents":"{\n { }\n function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n if iszero(eq(value, and(value, shl(224, 0xffffffff)))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function validator_revert_contract_IDAO(value)\n {\n if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n }\n function panic_error_0x41()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function allocate_memory_2869() -> memPtr\n {\n memPtr := mload(64)\n let newFreePtr := add(memPtr, 0x60)\n if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n }\n function allocate_memory(size) -> memPtr\n {\n memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(size, 31), not(31)))\n if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n }\n function array_allocation_size_array_struct_Action_dyn(length) -> size\n {\n if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n size := add(shl(5, length), 0x20)\n }\n function array_allocation_size_bytes(length) -> size\n {\n if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n size := add(and(add(length, 31), not(31)), 0x20)\n }\n function abi_decode_tuple_t_contract$_IDAO_$10865t_uint256t_array$_t_struct$_Action_$10724_memory_ptr_$dyn_memory_ptrt_uint256(headStart, dataEnd) -> value0, value1, value2, value3\n {\n if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n validator_revert_contract_IDAO(calldataload(headStart))\n value0 := calldataload(headStart)\n value1 := calldataload(add(headStart, 32))\n let offset := calldataload(add(headStart, 64))\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n let _2 := add(headStart, offset)\n if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n let dst := allocate_memory(array_allocation_size_array_struct_Action_dyn(calldataload(_2)))\n let dst_1 := dst\n mstore(dst, calldataload(_2))\n dst := add(dst, 32)\n let srcEnd := add(add(_2, shl(5, calldataload(_2))), 32)\n if gt(srcEnd, dataEnd) { revert(0, 0) }\n let src := add(_2, 32)\n for { } lt(src, srcEnd) { src := add(src, 32) }\n {\n if gt(calldataload(src), _1) { revert(0, 0) }\n let _3 := add(_2, calldataload(src))\n if slt(add(sub(dataEnd, _3), not(31)), 0x60) { revert(0, 0) }\n let value := allocate_memory_2869()\n let value_1 := calldataload(add(_3, 32))\n validator_revert_contract_IDAO(value_1)\n mstore(value, value_1)\n mstore(add(value, 32), calldataload(add(_3, 64)))\n let offset_1 := calldataload(add(_3, 0x60))\n if gt(offset_1, _1) { revert(0, 0) }\n let _4 := add(_3, offset_1)\n if iszero(slt(add(_4, 63), dataEnd)) { revert(0, 0) }\n let _5 := calldataload(add(_4, 32))\n let array := allocate_memory(array_allocation_size_bytes(_5))\n mstore(array, _5)\n if gt(add(add(_4, _5), 64), dataEnd) { revert(0, 0) }\n calldatacopy(add(array, 32), add(_4, 64), _5)\n mstore(add(add(array, _5), 32), 0)\n mstore(add(value, 64), array)\n mstore(dst, value)\n dst := add(dst, 32)\n }\n value2 := dst_1\n value3 := calldataload(add(headStart, 0x60))\n }\n function copy_memory_to_memory_with_cleanup(src, dst, length)\n {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n mstore(add(dst, length), 0)\n }\n function abi_encode_bytes(value, pos) -> end\n {\n let length := mload(value)\n mstore(pos, length)\n copy_memory_to_memory_with_cleanup(add(value, 0x20), add(pos, 0x20), length)\n end := add(add(pos, and(add(length, 31), not(31))), 0x20)\n }\n function abi_encode_tuple_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_t_uint256__to_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n {\n let tail_1 := add(headStart, 64)\n mstore(headStart, 64)\n let pos := tail_1\n let length := mload(value0)\n mstore(tail_1, length)\n pos := add(headStart, 96)\n let tail_2 := add(add(headStart, shl(5, length)), 96)\n let _1 := 0x20\n let srcPtr := add(value0, _1)\n let i := 0\n for { } lt(i, length) { i := add(i, 1) }\n {\n mstore(pos, add(sub(tail_2, headStart), not(95)))\n tail_2 := abi_encode_bytes(mload(srcPtr), tail_2)\n srcPtr := add(srcPtr, _1)\n pos := add(pos, _1)\n }\n tail := tail_2\n mstore(add(headStart, _1), value1)\n }\n function abi_decode_uint64(offset) -> value\n {\n value := calldataload(offset)\n if iszero(eq(value, and(value, 0xffffffffffffffff))) { revert(0, 0) }\n }\n function abi_decode_array_struct_Action_calldata_dyn_calldata(offset, end) -> arrayPos, length\n {\n if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n length := calldataload(offset)\n if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n arrayPos := add(offset, 0x20)\n if gt(add(add(offset, shl(5, length)), 0x20), end) { revert(0, 0) }\n }\n function abi_decode_tuple_t_addresst_bytes_calldata_ptrt_uint64t_uint64t_array$_t_struct$_Action_$10724_calldata_ptr_$dyn_calldata_ptrt_uint256(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6, value7\n {\n if slt(sub(dataEnd, headStart), 192) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_contract_IDAO(value)\n value0 := value\n let offset := calldataload(add(headStart, 32))\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n let _2 := add(headStart, offset)\n if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n let length := calldataload(_2)\n if gt(length, _1) { revert(0, 0) }\n if gt(add(add(_2, length), 32), dataEnd) { revert(0, 0) }\n value1 := add(_2, 32)\n value2 := length\n value3 := abi_decode_uint64(add(headStart, 64))\n value4 := abi_decode_uint64(add(headStart, 96))\n let offset_1 := calldataload(add(headStart, 128))\n if gt(offset_1, _1) { revert(0, 0) }\n let value5_1, value6_1 := abi_decode_array_struct_Action_calldata_dyn_calldata(add(headStart, offset_1), dataEnd)\n value5 := value5_1\n value6 := value6_1\n value7 := calldataload(add(headStart, 160))\n }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_encode_tuple_t_bytes32_t_array$_t_struct$_Action_$10724_memory_ptr_$dyn_memory_ptr_t_uint256__to_t_bytes32_t_array$_t_struct$_Action_$10724_memory_ptr_$dyn_memory_ptr_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n {\n let _1 := 96\n let tail_1 := add(headStart, _1)\n mstore(headStart, value0)\n let _2 := 32\n mstore(add(headStart, _2), _1)\n let pos := tail_1\n let length := mload(value1)\n mstore(tail_1, length)\n pos := add(headStart, 128)\n let tail_2 := add(add(headStart, shl(5, length)), 128)\n let srcPtr := add(value1, _2)\n let i := 0\n for { } lt(i, length) { i := add(i, 1) }\n {\n mstore(pos, add(sub(tail_2, headStart), not(127)))\n let _3 := mload(srcPtr)\n mstore(tail_2, and(mload(_3), 0xffffffffffffffffffffffffffffffffffffffff))\n mstore(add(tail_2, _2), mload(add(_3, _2)))\n let _4 := 0x40\n let memberValue0 := mload(add(_3, _4))\n mstore(add(tail_2, _4), _1)\n tail_2 := abi_encode_bytes(memberValue0, add(tail_2, _1))\n srcPtr := add(srcPtr, _2)\n pos := add(pos, _2)\n }\n tail := tail_2\n mstore(add(headStart, 0x40), value2)\n }\n function abi_decode_tuple_t_array$_t_bytes_memory_ptr_$dyn_memory_ptrt_uint256_fromMemory(headStart, dataEnd) -> value0, value1\n {\n let _1 := 64\n if slt(sub(dataEnd, headStart), _1) { revert(0, 0) }\n let offset := mload(headStart)\n let _2 := 0xffffffffffffffff\n if gt(offset, _2) { revert(0, 0) }\n let _3 := add(headStart, offset)\n if iszero(slt(add(_3, 0x1f), dataEnd)) { revert(0, 0) }\n let _4 := mload(_3)\n let _5 := 0x20\n let dst := allocate_memory(array_allocation_size_array_struct_Action_dyn(_4))\n let dst_1 := dst\n mstore(dst, _4)\n dst := add(dst, _5)\n let srcEnd := add(add(_3, shl(5, _4)), _5)\n if gt(srcEnd, dataEnd) { revert(0, 0) }\n let src := add(_3, _5)\n for { } lt(src, srcEnd) { src := add(src, _5) }\n {\n let innerOffset := mload(src)\n if gt(innerOffset, _2)\n {\n let _6 := 0\n revert(_6, _6)\n }\n let _7 := add(_3, innerOffset)\n if iszero(slt(add(_7, 63), dataEnd))\n {\n let _8 := 0\n revert(_8, _8)\n }\n let _9 := mload(add(_7, _5))\n let array := allocate_memory(array_allocation_size_bytes(_9))\n mstore(array, _9)\n if gt(add(add(_7, _9), _1), dataEnd)\n {\n let _10 := 0\n revert(_10, _10)\n }\n copy_memory_to_memory_with_cleanup(add(_7, _1), add(array, _5), _9)\n mstore(dst, array)\n dst := add(dst, _5)\n }\n value0 := dst_1\n value1 := mload(add(headStart, _5))\n }\n function abi_encode_bytes_calldata(start, length, pos) -> end\n {\n mstore(pos, length)\n calldatacopy(add(pos, 0x20), start, length)\n mstore(add(add(pos, length), 0x20), 0)\n end := add(add(pos, and(add(length, 31), not(31))), 0x20)\n }\n function abi_encode_tuple_t_uint64_t_uint64_t_bytes_calldata_ptr_t_array$_t_struct$_Action_$10724_calldata_ptr_$dyn_calldata_ptr_t_uint256__to_t_uint64_t_uint64_t_bytes_memory_ptr_t_array$_t_struct$_Action_$10724_memory_ptr_$dyn_memory_ptr_t_uint256__fromStack_reversed(headStart, value6, value5, value4, value3, value2, value1, value0) -> tail\n {\n let _1 := 0xffffffffffffffff\n mstore(headStart, and(value0, _1))\n let _2 := 32\n mstore(add(headStart, _2), and(value1, _1))\n let _3 := 64\n mstore(add(headStart, _3), 160)\n let tail_1 := abi_encode_bytes_calldata(value2, value3, add(headStart, 160))\n let _4 := 96\n mstore(add(headStart, _4), sub(tail_1, headStart))\n let pos := tail_1\n mstore(tail_1, value5)\n pos := add(tail_1, _2)\n let tail_2 := add(add(tail_1, shl(5, value5)), _2)\n let srcPtr := value4\n let i := 0\n for { } lt(i, value5) { i := add(i, 1) }\n {\n mstore(pos, add(sub(tail_2, tail_1), not(31)))\n let rel_offset_of_tail := calldataload(srcPtr)\n if iszero(slt(rel_offset_of_tail, add(sub(calldatasize(), value4), not(94)))) { revert(0, 0) }\n let value := add(rel_offset_of_tail, value4)\n let value_1 := calldataload(value)\n validator_revert_contract_IDAO(value_1)\n mstore(tail_2, and(value_1, 0xffffffffffffffffffffffffffffffffffffffff))\n mstore(add(tail_2, _2), calldataload(add(value, _2)))\n let rel_offset_of_tail_1 := calldataload(add(value, _3))\n if iszero(slt(rel_offset_of_tail_1, add(sub(calldatasize(), value), not(30)))) { revert(0, 0) }\n let value_2 := add(rel_offset_of_tail_1, value)\n let length := calldataload(value_2)\n let value_3 := add(value_2, _2)\n if gt(length, _1) { revert(0, 0) }\n if sgt(value_3, sub(calldatasize(), length)) { revert(0, 0) }\n mstore(add(tail_2, _3), _4)\n tail_2 := abi_encode_bytes_calldata(value_3, length, add(tail_2, _4))\n srcPtr := add(srcPtr, _2)\n pos := add(pos, _2)\n }\n tail := tail_2\n mstore(add(headStart, 128), value6)\n }\n}","id":92,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100675760003560e01c806373e1166d1161005057806373e1166d146100b55780637b2bf56e146100d6578063da35c664146100e657600080fd5b806301ffc9a71461006c578063634a9a8814610094575b600080fd5b61007f61007a36600461027d565b6100ee565b60405190151581526020015b60405180910390f35b6100a76100a2366004610382565b610125565b60405161008b929190610544565b6100c86100c3366004610616565b610142565b60405190815260200161008b565b60008054600181019091556100c8565b6000546100c8565b60006001600160e01b0319821663368d719960e21b148061011f57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600061013586868686610161565b9097909650945050505050565b60006101548989898989898989610217565b9998505050505050505050565b6040516331c6fcc960e21b81526060906000906001600160a01b0387169063c71bf32490610197908890889088906004016106ed565b6000604051808303816000875af11580156101b6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526101de9190810190610785565b604051919350915085907f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f90600090a294509492505050565b600080546001810182559050886001600160a01b0316817fa6c1f8f4276dc3f243459e13b557c84e8f4e90b2e09070bad5f6909cee687c9288888c8c8a8a8a60405161026997969594939291906108a2565b60405180910390a398975050505050505050565b60006020828403121561028f57600080fd5b81356001600160e01b0319811681146102a757600080fd5b9392505050565b6001600160a01b03811681146102c357600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff811182821017156102ff576102ff6102c6565b60405290565b604051601f8201601f1916810167ffffffffffffffff8111828210171561032e5761032e6102c6565b604052919050565b600067ffffffffffffffff821115610350576103506102c6565b5060051b60200190565b600067ffffffffffffffff821115610374576103746102c6565b50601f01601f191660200190565b6000806000806080858703121561039857600080fd5b6103a285356102ae565b8435935060208501359250604085013567ffffffffffffffff808211156103c857600080fd5b818701915087601f8301126103dc57600080fd5b6103ee6103e98335610336565b610305565b82358082526020808301929160051b8501018a81111561040d57600080fd5b602085015b818110156104e057848135111561042857600080fd5b803586016060818e03601f1901121561044057600080fd5b6104486102dc565b6020820135610456816102ae565b81526040820135602082015260608201358781111561047457600080fd5b8083019250508d603f83011261048957600080fd5b602082013561049a6103e98261035a565b8181528f60408386010111156104af57600080fd5b8160408501602083013760006020838301015280604084015250508086525050602084019350602081019050610412565b50979a969950976060013596505050505050565b60005b8381101561050f5781810151838201526020016104f7565b50506000910152565b600081518084526105308160208601602086016104f4565b601f01601f19169290920160200192915050565b6000604082016040835280855180835260608501915060608160051b8601019250602080880160005b8381101561059b57605f19888703018552610589868351610518565b9550938201939082019060010161056d565b50509490940194909452949350505050565b803567ffffffffffffffff811681146105c557600080fd5b919050565b60008083601f8401126105dc57600080fd5b50813567ffffffffffffffff8111156105f457600080fd5b6020830191508360208260051b850101111561060f57600080fd5b9250929050565b60008060008060008060008060c0898b03121561063257600080fd5b883561063d816102ae565b9750602089013567ffffffffffffffff8082111561065a57600080fd5b818b0191508b601f83011261066e57600080fd5b81358181111561067d57600080fd5b8c602082850101111561068f57600080fd5b60208301995097506106a360408c016105ad565b96506106b160608c016105ad565b955060808b01359150808211156106c757600080fd5b506106d48b828c016105ca565b999c989b50969995989497949560a00135949350505050565b600060608083018684526020828186015281875180845260808701915060808160051b880101935082890160005b8281101561076e57888603607f19018452815180516001600160a01b03168752858101518688015260409081015190870188905261075b88880182610518565b965050928401929084019060010161071b565b505050505060409390930193909352509392505050565b600080604080848603121561079957600080fd5b835167ffffffffffffffff808211156107b157600080fd5b818601915086601f8301126107c557600080fd5b815160206107d56103e983610336565b82815260059290921b8401810191818101908a8411156107f457600080fd5b8286015b84811015610865578051868111156108105760008081fd5b8701603f81018d136108225760008081fd5b848101516108326103e98261035a565b8181528e8b8385010111156108475760008081fd5b610856828883018d86016104f4565b855250509183019183016107f8565b509890910151979997985050505050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b600067ffffffffffffffff808a1683526020818a1681850152604060a0818601526108d160a086018a8c610879565b606086820381880152818983528483019050848a60051b8401018b60005b8c81101561099457858303601f190184528135368f9003605e1901811261091557600080fd5b8e018035610922816102ae565b6001600160a01b0316845280890135898501528781013536829003601e1901811261094c57600080fd5b0188810190358a81111561095f57600080fd5b80360382131561096e57600080fd5b86898601526109808786018284610879565b958a019594505050908701906001016108ef565b5050809750505050505050508260808301529897505050505050505056fea164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x67 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x73E1166D GT PUSH2 0x50 JUMPI DUP1 PUSH4 0x73E1166D EQ PUSH2 0xB5 JUMPI DUP1 PUSH4 0x7B2BF56E EQ PUSH2 0xD6 JUMPI DUP1 PUSH4 0xDA35C664 EQ PUSH2 0xE6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x6C JUMPI DUP1 PUSH4 0x634A9A88 EQ PUSH2 0x94 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7F PUSH2 0x7A CALLDATASIZE PUSH1 0x4 PUSH2 0x27D JUMP JUMPDEST PUSH2 0xEE JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xA7 PUSH2 0xA2 CALLDATASIZE PUSH1 0x4 PUSH2 0x382 JUMP JUMPDEST PUSH2 0x125 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x8B SWAP3 SWAP2 SWAP1 PUSH2 0x544 JUMP JUMPDEST PUSH2 0xC8 PUSH2 0xC3 CALLDATASIZE PUSH1 0x4 PUSH2 0x616 JUMP JUMPDEST PUSH2 0x142 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x8B JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 DUP2 ADD SWAP1 SWAP2 SSTORE PUSH2 0xC8 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0xC8 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x368D7199 PUSH1 0xE2 SHL EQ DUP1 PUSH2 0x11F JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x135 DUP7 DUP7 DUP7 DUP7 PUSH2 0x161 JUMP JUMPDEST SWAP1 SWAP8 SWAP1 SWAP7 POP SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x154 DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 PUSH2 0x217 JUMP JUMPDEST SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x31C6FCC9 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x60 SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0xC71BF324 SWAP1 PUSH2 0x197 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x6ED JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1B6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x1DE SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x785 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 SWAP4 POP SWAP2 POP DUP6 SWAP1 PUSH32 0x712AE1383F79AC853F8D882153778E0260EF8F03B504E2866E0593E04D2B291F SWAP1 PUSH1 0x0 SWAP1 LOG2 SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 DUP2 ADD DUP3 SSTORE SWAP1 POP DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH32 0xA6C1F8F4276DC3F243459E13B557C84E8F4E90B2E09070BAD5F6909CEE687C92 DUP9 DUP9 DUP13 DUP13 DUP11 DUP11 DUP11 PUSH1 0x40 MLOAD PUSH2 0x269 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x8A2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x28F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x2A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x2C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x60 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x2FF JUMPI PUSH2 0x2FF PUSH2 0x2C6 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x32E JUMPI PUSH2 0x32E PUSH2 0x2C6 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x350 JUMPI PUSH2 0x350 PUSH2 0x2C6 JUMP JUMPDEST POP PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x374 JUMPI PUSH2 0x374 PUSH2 0x2C6 JUMP JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x398 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3A2 DUP6 CALLDATALOAD PUSH2 0x2AE JUMP JUMPDEST DUP5 CALLDATALOAD SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x3C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3EE PUSH2 0x3E9 DUP4 CALLDATALOAD PUSH2 0x336 JUMP JUMPDEST PUSH2 0x305 JUMP JUMPDEST DUP3 CALLDATALOAD DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP3 SWAP2 PUSH1 0x5 SHL DUP6 ADD ADD DUP11 DUP2 GT ISZERO PUSH2 0x40D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP6 ADD JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x4E0 JUMPI DUP5 DUP2 CALLDATALOAD GT ISZERO PUSH2 0x428 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD DUP7 ADD PUSH1 0x60 DUP2 DUP15 SUB PUSH1 0x1F NOT ADD SLT ISZERO PUSH2 0x440 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x448 PUSH2 0x2DC JUMP JUMPDEST PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH2 0x456 DUP2 PUSH2 0x2AE JUMP JUMPDEST DUP2 MSTORE PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x60 DUP3 ADD CALLDATALOAD DUP8 DUP2 GT ISZERO PUSH2 0x474 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 DUP4 ADD SWAP3 POP POP DUP14 PUSH1 0x3F DUP4 ADD SLT PUSH2 0x489 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH2 0x49A PUSH2 0x3E9 DUP3 PUSH2 0x35A JUMP JUMPDEST DUP2 DUP2 MSTORE DUP16 PUSH1 0x40 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0x4AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP4 DUP4 ADD ADD MSTORE DUP1 PUSH1 0x40 DUP5 ADD MSTORE POP POP DUP1 DUP7 MSTORE POP POP PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x412 JUMP JUMPDEST POP SWAP8 SWAP11 SWAP7 SWAP10 POP SWAP8 PUSH1 0x60 ADD CALLDATALOAD SWAP7 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x50F JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x4F7 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x530 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x4F4 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD PUSH1 0x40 DUP4 MSTORE DUP1 DUP6 MLOAD DUP1 DUP4 MSTORE PUSH1 0x60 DUP6 ADD SWAP2 POP PUSH1 0x60 DUP2 PUSH1 0x5 SHL DUP7 ADD ADD SWAP3 POP PUSH1 0x20 DUP1 DUP9 ADD PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x59B JUMPI PUSH1 0x5F NOT DUP9 DUP8 SUB ADD DUP6 MSTORE PUSH2 0x589 DUP7 DUP4 MLOAD PUSH2 0x518 JUMP JUMPDEST SWAP6 POP SWAP4 DUP3 ADD SWAP4 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x56D JUMP JUMPDEST POP POP SWAP5 SWAP1 SWAP5 ADD SWAP5 SWAP1 SWAP5 MSTORE SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x5C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x5DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x5F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 PUSH1 0x5 SHL DUP6 ADD ADD GT ISZERO PUSH2 0x60F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP10 DUP12 SUB SLT ISZERO PUSH2 0x632 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP9 CALLDATALOAD PUSH2 0x63D DUP2 PUSH2 0x2AE JUMP JUMPDEST SWAP8 POP PUSH1 0x20 DUP10 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x65A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP12 ADD SWAP2 POP DUP12 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x66E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x67D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP13 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x68F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP10 POP SWAP8 POP PUSH2 0x6A3 PUSH1 0x40 DUP13 ADD PUSH2 0x5AD JUMP JUMPDEST SWAP7 POP PUSH2 0x6B1 PUSH1 0x60 DUP13 ADD PUSH2 0x5AD JUMP JUMPDEST SWAP6 POP PUSH1 0x80 DUP12 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x6C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x6D4 DUP12 DUP3 DUP13 ADD PUSH2 0x5CA JUMP JUMPDEST SWAP10 SWAP13 SWAP9 SWAP12 POP SWAP7 SWAP10 SWAP6 SWAP9 SWAP5 SWAP8 SWAP5 SWAP6 PUSH1 0xA0 ADD CALLDATALOAD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP1 DUP4 ADD DUP7 DUP5 MSTORE PUSH1 0x20 DUP3 DUP2 DUP7 ADD MSTORE DUP2 DUP8 MLOAD DUP1 DUP5 MSTORE PUSH1 0x80 DUP8 ADD SWAP2 POP PUSH1 0x80 DUP2 PUSH1 0x5 SHL DUP9 ADD ADD SWAP4 POP DUP3 DUP10 ADD PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x76E JUMPI DUP9 DUP7 SUB PUSH1 0x7F NOT ADD DUP5 MSTORE DUP2 MLOAD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 MSTORE DUP6 DUP2 ADD MLOAD DUP7 DUP9 ADD MSTORE PUSH1 0x40 SWAP1 DUP2 ADD MLOAD SWAP1 DUP8 ADD DUP9 SWAP1 MSTORE PUSH2 0x75B DUP9 DUP9 ADD DUP3 PUSH2 0x518 JUMP JUMPDEST SWAP7 POP POP SWAP3 DUP5 ADD SWAP3 SWAP1 DUP5 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x71B JUMP JUMPDEST POP POP POP POP POP PUSH1 0x40 SWAP4 SWAP1 SWAP4 ADD SWAP4 SWAP1 SWAP4 MSTORE POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP1 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x799 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x7B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP7 ADD SWAP2 POP DUP7 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x7C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x20 PUSH2 0x7D5 PUSH2 0x3E9 DUP4 PUSH2 0x336 JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH1 0x5 SWAP3 SWAP1 SWAP3 SHL DUP5 ADD DUP2 ADD SWAP2 DUP2 DUP2 ADD SWAP1 DUP11 DUP5 GT ISZERO PUSH2 0x7F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 DUP7 ADD JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x865 JUMPI DUP1 MLOAD DUP7 DUP2 GT ISZERO PUSH2 0x810 JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST DUP8 ADD PUSH1 0x3F DUP2 ADD DUP14 SGT PUSH2 0x822 JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST DUP5 DUP2 ADD MLOAD PUSH2 0x832 PUSH2 0x3E9 DUP3 PUSH2 0x35A JUMP JUMPDEST DUP2 DUP2 MSTORE DUP15 DUP12 DUP4 DUP6 ADD ADD GT ISZERO PUSH2 0x847 JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST PUSH2 0x856 DUP3 DUP9 DUP4 ADD DUP14 DUP7 ADD PUSH2 0x4F4 JUMP JUMPDEST DUP6 MSTORE POP POP SWAP2 DUP4 ADD SWAP2 DUP4 ADD PUSH2 0x7F8 JUMP JUMPDEST POP SWAP9 SWAP1 SWAP2 ADD MLOAD SWAP8 SWAP10 SWAP8 SWAP9 POP POP POP POP POP POP POP POP JUMP JUMPDEST DUP2 DUP4 MSTORE DUP2 DUP2 PUSH1 0x20 DUP6 ADD CALLDATACOPY POP PUSH1 0x0 DUP3 DUP3 ADD PUSH1 0x20 SWAP1 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1F SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND SWAP1 SWAP2 ADD ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP11 AND DUP4 MSTORE PUSH1 0x20 DUP2 DUP11 AND DUP2 DUP6 ADD MSTORE PUSH1 0x40 PUSH1 0xA0 DUP2 DUP7 ADD MSTORE PUSH2 0x8D1 PUSH1 0xA0 DUP7 ADD DUP11 DUP13 PUSH2 0x879 JUMP JUMPDEST PUSH1 0x60 DUP7 DUP3 SUB DUP2 DUP9 ADD MSTORE DUP2 DUP10 DUP4 MSTORE DUP5 DUP4 ADD SWAP1 POP DUP5 DUP11 PUSH1 0x5 SHL DUP5 ADD ADD DUP12 PUSH1 0x0 JUMPDEST DUP13 DUP2 LT ISZERO PUSH2 0x994 JUMPI DUP6 DUP4 SUB PUSH1 0x1F NOT ADD DUP5 MSTORE DUP2 CALLDATALOAD CALLDATASIZE DUP16 SWAP1 SUB PUSH1 0x5E NOT ADD DUP2 SLT PUSH2 0x915 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP15 ADD DUP1 CALLDATALOAD PUSH2 0x922 DUP2 PUSH2 0x2AE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 MSTORE DUP1 DUP10 ADD CALLDATALOAD DUP10 DUP6 ADD MSTORE DUP8 DUP2 ADD CALLDATALOAD CALLDATASIZE DUP3 SWAP1 SUB PUSH1 0x1E NOT ADD DUP2 SLT PUSH2 0x94C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST ADD DUP9 DUP2 ADD SWAP1 CALLDATALOAD DUP11 DUP2 GT ISZERO PUSH2 0x95F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATASIZE SUB DUP3 SGT ISZERO PUSH2 0x96E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 DUP10 DUP7 ADD MSTORE PUSH2 0x980 DUP8 DUP7 ADD DUP3 DUP5 PUSH2 0x879 JUMP JUMPDEST SWAP6 DUP11 ADD SWAP6 SWAP5 POP POP POP SWAP1 DUP8 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x8EF JUMP JUMPDEST POP POP DUP1 SWAP8 POP POP POP POP POP POP POP POP DUP3 PUSH1 0x80 DUP4 ADD MSTORE SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"315:948:56:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1134:200:79;;;;;;:::i;:::-;;:::i;:::-;;;470:14:92;;463:22;445:41;;433:2;418:18;1134:200:79;;;;;;;;935:326:56;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;476:453::-;;;;;;:::i;:::-;;:::i;:::-;;;7357:25:92;;;7345:2;7330:18;476:453:56;7211:177:92;355:115:56;401:18;918:14:35;;1050:1;1032:19;;;;;355:115:56;;813:113:79;868:7;918:14:35;813:113:79;355:115:56;1134:200:79;1220:4;-1:-1:-1;;;;;;1243:43:79;;-1:-1:-1;;;1243:43:79;;:84;;-1:-1:-1;;;;;;;;;;937:40:38;;;1290:37:79;1236:91;1134:200;-1:-1:-1;;1134:200:79:o;935:326:56:-;1105:26;1133:18;1191:63;1208:4;1214:11;1227:8;1237:16;1191;:63::i;:::-;1163:91;;;;-1:-1:-1;935:326:56;-1:-1:-1;;;;;935:326:56:o;476:453::-;711:18;754:168;783:8;805:9;;828:10;852:8;874;;896:16;754:15;:168::i;:::-;741:181;476:453;-1:-1:-1;;;;;;;;;476:453:56:o;3429:392:79:-;3694:62;;-1:-1:-1;;;3694:62:79;;3608:26;;3636:18;;-1:-1:-1;;;;;3694:12:79;;;;;:62;;3715:11;;3729:8;;3739:16;;3694:62;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3694:62:79;;;;;;;;;;;;:::i;:::-;3771:43;;3666:90;;-1:-1:-1;3666:90:79;-1:-1:-1;3801:11:79;;3771:43;;;;;3429:392;;;;;;;:::o;2216:600::-;2460:18;918:14:35;;1050:1;1032:19;;;;2490:32:79;;2613:8;-1:-1:-1;;;;;2538:271:79;2580:10;2538:271;2679:10;2712:8;2645:9;;2743:8;;2782:16;2538:271;;;;;;;;;;;;:::i;:::-;;;;;;;;2216:600;;;;;;;;;;:::o;14:286:92:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:92;;209:43;;199:71;;266:1;263;256:12;199:71;289:5;14:286;-1:-1:-1;;;14:286:92:o;497:160::-;-1:-1:-1;;;;;582:5:92;578:54;571:5;568:65;558:93;;647:1;644;637:12;558:93;497:160;:::o;662:127::-;723:10;718:3;714:20;711:1;704:31;754:4;751:1;744:15;778:4;775:1;768:15;794:253;866:2;860:9;908:4;896:17;;943:18;928:34;;964:22;;;925:62;922:88;;;990:18;;:::i;:::-;1026:2;1019:22;794:253;:::o;1052:275::-;1123:2;1117:9;1188:2;1169:13;;-1:-1:-1;;1165:27:92;1153:40;;1223:18;1208:34;;1244:22;;;1205:62;1202:88;;;1270:18;;:::i;:::-;1306:2;1299:22;1052:275;;-1:-1:-1;1052:275:92:o;1332:189::-;1398:4;1431:18;1423:6;1420:30;1417:56;;;1453:18;;:::i;:::-;-1:-1:-1;1498:1:92;1494:14;1510:4;1490:25;;1332:189::o;1526:186::-;1574:4;1607:18;1599:6;1596:30;1593:56;;;1629:18;;:::i;:::-;-1:-1:-1;1695:2:92;1674:15;-1:-1:-1;;1670:29:92;1701:4;1666:40;;1526:186::o;1717:2209::-;1867:6;1875;1883;1891;1944:3;1932:9;1923:7;1919:23;1915:33;1912:53;;;1961:1;1958;1951:12;1912:53;1974:55;2018:9;2005:23;1974:55;:::i;:::-;2061:9;2048:23;2038:33;;2118:2;2107:9;2103:18;2090:32;2080:42;;2173:2;2162:9;2158:18;2145:32;2196:18;2237:2;2229:6;2226:14;2223:34;;;2253:1;2250;2243:12;2223:34;2291:6;2280:9;2276:22;2266:32;;2336:7;2329:4;2325:2;2321:13;2317:27;2307:55;;2358:1;2355;2348:12;2307:55;2382:80;2398:63;2457:2;2444:16;2398:63;:::i;:::-;2382:80;:::i;:::-;2508:16;;2496:29;;;2550:2;2541:12;;;;2484:3;2592:1;2588:24;2580:33;;2576:42;2630:19;;;2627:39;;;2662:1;2659;2652:12;2627:39;2694:2;2690;2686:11;2706:1137;2722:6;2717:3;2714:15;2706:1137;;;2801:2;2795:3;2782:17;2779:25;2776:45;;;2817:1;2814;2807:12;2776:45;2852:17;;2844:26;;2922:4;2894:16;;;-1:-1:-1;;2890:30:92;2886:41;2883:61;;;2940:1;2937;2930:12;2883:61;2970:22;;:::i;:::-;3041:2;3037;3033:11;3020:25;3058:39;3089:7;3058:39;:::i;:::-;3110:22;;3189:2;3181:11;;3168:25;3163:2;3152:14;;3145:49;3244:4;3236:13;;3223:27;3266:16;;;3263:36;;;3295:1;3292;3285:12;3263:36;3330:8;3326:2;3322:17;3312:27;;;3379:7;3374:2;3370;3366:11;3362:25;3352:53;;3401:1;3398;3391:12;3352:53;3449:2;3445;3441:11;3428:25;3479:48;3495:31;3523:2;3495:31;:::i;3479:48::-;3554:2;3547:5;3540:17;3598:7;3593:2;3588;3584;3580:11;3576:20;3573:33;3570:53;;;3619:1;3616;3609:12;3570:53;3678:2;3673;3669;3665:11;3660:2;3653:5;3649:14;3636:45;3726:1;3721:2;3716;3709:5;3705:14;3701:23;3694:34;3764:5;3759:2;3752:5;3748:14;3741:29;;;3795:5;3790:3;3783:18;;;3830:2;3825:3;3821:12;3814:19;;2748:2;2743:3;2739:12;2732:19;;2706:1137;;;-1:-1:-1;1717:2209:92;;;;-1:-1:-1;3862:5:92;3914:4;3899:20;3886:34;;-1:-1:-1;;;;;;1717:2209:92:o;3931:250::-;4016:1;4026:113;4040:6;4037:1;4034:13;4026:113;;;4116:11;;;4110:18;4097:11;;;4090:39;4062:2;4055:10;4026:113;;;-1:-1:-1;;4173:1:92;4155:16;;4148:27;3931:250::o;4186:270::-;4227:3;4265:5;4259:12;4292:6;4287:3;4280:19;4308:76;4377:6;4370:4;4365:3;4361:14;4354:4;4347:5;4343:16;4308:76;:::i;:::-;4438:2;4417:15;-1:-1:-1;;4413:29:92;4404:39;;;;4445:4;4400:50;;4186:270;-1:-1:-1;;4186:270:92:o;4461:873::-;4649:4;4697:2;4686:9;4682:18;4727:2;4716:9;4709:21;4750:6;4785;4779:13;4816:6;4808;4801:22;4854:2;4843:9;4839:18;4832:25;;4916:2;4906:6;4903:1;4899:14;4888:9;4884:30;4880:39;4866:53;;4938:4;4977:2;4969:6;4965:15;4998:1;5008:254;5022:6;5019:1;5016:13;5008:254;;;5115:2;5111:7;5099:9;5091:6;5087:22;5083:36;5078:3;5071:49;5143:39;5175:6;5166;5160:13;5143:39;:::i;:::-;5133:49;-1:-1:-1;5240:12:92;;;;5205:15;;;;5044:1;5037:9;5008:254;;;-1:-1:-1;;5301:18:92;;;;5294:34;;;;5279:6;4461:873;-1:-1:-1;;;;4461:873:92:o;5339:171::-;5406:20;;5466:18;5455:30;;5445:41;;5435:69;;5500:1;5497;5490:12;5435:69;5339:171;;;:::o;5515:382::-;5593:8;5603:6;5657:3;5650:4;5642:6;5638:17;5634:27;5624:55;;5675:1;5672;5665:12;5624:55;-1:-1:-1;5698:20:92;;5741:18;5730:30;;5727:50;;;5773:1;5770;5763:12;5727:50;5810:4;5802:6;5798:17;5786:29;;5870:3;5863:4;5853:6;5850:1;5846:14;5838:6;5834:27;5830:38;5827:47;5824:67;;;5887:1;5884;5877:12;5824:67;5515:382;;;;;:::o;5902:1304::-;6069:6;6077;6085;6093;6101;6109;6117;6125;6178:3;6166:9;6157:7;6153:23;6149:33;6146:53;;;6195:1;6192;6185:12;6146:53;6234:9;6221:23;6253:37;6284:5;6253:37;:::i;:::-;6309:5;-1:-1:-1;6365:2:92;6350:18;;6337:32;6388:18;6418:14;;;6415:34;;;6445:1;6442;6435:12;6415:34;6483:6;6472:9;6468:22;6458:32;;6528:7;6521:4;6517:2;6513:13;6509:27;6499:55;;6550:1;6547;6540:12;6499:55;6590:2;6577:16;6616:2;6608:6;6605:14;6602:34;;;6632:1;6629;6622:12;6602:34;6677:7;6672:2;6663:6;6659:2;6655:15;6651:24;6648:37;6645:57;;;6698:1;6695;6688:12;6645:57;6729:2;6721:11;;;-1:-1:-1;6751:6:92;-1:-1:-1;6776:37:92;6809:2;6794:18;;6776:37;:::i;:::-;6766:47;;6832:37;6865:2;6854:9;6850:18;6832:37;:::i;:::-;6822:47;;6922:3;6911:9;6907:19;6894:33;6878:49;;6952:2;6942:8;6939:16;6936:36;;;6968:1;6965;6958:12;6936:36;;7007:87;7086:7;7075:8;7064:9;7060:24;7007:87;:::i;:::-;5902:1304;;;;-1:-1:-1;5902:1304:92;;;;;;6981:113;;7195:3;7180:19;7167:33;;5902:1304;-1:-1:-1;;;;5902:1304:92:o;7393:1305::-;7641:4;7670:2;7710;7699:9;7695:18;7740:6;7729:9;7722:25;7766:2;7804;7799;7788:9;7784:18;7777:30;7827:6;7862;7856:13;7893:6;7885;7878:22;7931:3;7920:9;7916:19;7909:26;;7994:3;7984:6;7981:1;7977:14;7966:9;7962:30;7958:40;7944:54;;8033:2;8025:6;8021:15;8054:1;8064:560;8078:6;8075:1;8072:13;8064:560;;;8143:22;;;-1:-1:-1;;8139:37:92;8127:50;;8200:13;;8245:9;;-1:-1:-1;;;;;8241:58:92;8226:74;;8343:11;;;8337:18;8320:15;;;8313:43;8379:4;8422:11;;;8416:18;8454:15;;;8447:27;;;8497:47;8528:15;;;8416:18;8497:47;:::i;:::-;8487:57;-1:-1:-1;;8602:12:92;;;;8567:15;;;;8100:1;8093:9;8064:560;;;-1:-1:-1;;;;;8678:4:92;8663:20;;;;8656:36;;;;-1:-1:-1;8641:6:92;7393:1305;-1:-1:-1;;;7393:1305:92:o;8703:1703::-;8816:6;8824;8855:2;8898;8886:9;8877:7;8873:23;8869:32;8866:52;;;8914:1;8911;8904:12;8866:52;8947:9;8941:16;8976:18;9017:2;9009:6;9006:14;9003:34;;;9033:1;9030;9023:12;9003:34;9071:6;9060:9;9056:22;9046:32;;9116:7;9109:4;9105:2;9101:13;9097:27;9087:55;;9138:1;9135;9128:12;9087:55;9167:2;9161:9;9189:4;9213:66;9229:49;9275:2;9229:49;:::i;9213:66::-;9313:15;;;9395:1;9391:10;;;;9383:19;;9379:28;;;9344:12;;;;9419:19;;;9416:39;;;9451:1;9448;9441:12;9416:39;9483:2;9479;9475:11;9495:837;9511:6;9506:3;9503:15;9495:837;;;9590:3;9584:10;9626:2;9613:11;9610:19;9607:109;;;9670:1;9699:2;9695;9688:14;9607:109;9739:20;;9794:2;9786:11;;9782:25;-1:-1:-1;9772:123:92;;9849:1;9878:2;9874;9867:14;9772:123;9932:2;9928;9924:11;9918:18;9962:48;9978:31;10006:2;9978:31;:::i;9962:48::-;10037:2;10030:5;10023:17;10081:7;10076:2;10071;10067;10063:11;10059:20;10056:33;10053:126;;;10131:1;10161:3;10156;10149:16;10053:126;10192:67;10256:2;10251;10244:5;10240:14;10235:2;10231;10227:11;10192:67;:::i;:::-;10272:18;;-1:-1:-1;;10310:12:92;;;;9528;;9495:837;;;-1:-1:-1;10381:18:92;;;;10375:25;10351:5;;10375:25;;-1:-1:-1;;;;;;;;8703:1703:92:o;10411:266::-;10499:6;10494:3;10487:19;10551:6;10544:5;10537:4;10532:3;10528:14;10515:43;-1:-1:-1;10603:1:92;10578:16;;;10596:4;10574:27;;;10567:38;;;;10659:2;10638:15;;;-1:-1:-1;;10634:29:92;10625:39;;;10621:50;;10411:266::o;10682:2240::-;11022:4;11051:18;11108:2;11100:6;11096:15;11085:9;11078:34;11131:2;11181;11173:6;11169:15;11164:2;11153:9;11149:18;11142:43;11204:2;11242:3;11237:2;11226:9;11222:18;11215:31;11269:62;11326:3;11315:9;11311:19;11303:6;11295;11269:62;:::i;:::-;11350:2;11400:9;11392:6;11388:22;11383:2;11372:9;11368:18;11361:50;11431:6;11461;11453;11446:22;11496:2;11488:6;11484:15;11477:22;;11555:2;11545:6;11542:1;11538:14;11530:6;11526:27;11522:36;11581:6;11605:1;11615:1234;11629:6;11626:1;11623:13;11615:1234;;;11694:19;;;-1:-1:-1;;11690:33:92;11678:46;;11763:20;;11838:14;11834:27;;;-1:-1:-1;;11830:41:92;11806:66;;11796:94;;11886:1;11883;11876:12;11796:94;11916:31;;11975:19;;12007:39;11975:19;12007:39;:::i;:::-;-1:-1:-1;;;;;12074:56:92;12059:72;;12181:14;;;12168:28;12151:15;;;12144:53;12251:14;;;12238:28;12323:14;12319:26;;;-1:-1:-1;;12315:40:92;12289:67;;12279:95;;12370:1;12367;12360:12;12279:95;12402:32;12510:16;;;;12461:21;12542:14;;;12539:34;;;12569:1;12566;12559:12;12539:34;12622:6;12606:14;12602:27;12593:7;12589:41;12586:61;;;12643:1;12640;12633:12;12586:61;12684:2;12679;12671:6;12667:15;12660:27;12710:59;12765:2;12757:6;12753:15;12745:6;12736:7;12710:59;:::i;:::-;12827:12;;;;12700:69;-1:-1:-1;;;12792:15:92;;;;11651:1;11644:9;11615:1234;;;11619:3;;12866:6;12858:14;;;;;;;;;12909:6;12903:3;12892:9;12888:19;12881:35;10682:2240;;;;;;;;;;:::o"},"gasEstimates":{"creation":{"codeDepositCost":"499000","executionCost":"530","totalCost":"499530"},"external":{"createProposal(address,bytes,uint64,uint64,(address,uint256,bytes)[],uint256)":"infinite","createProposalId()":"24432","executeProposal(address,uint256,(address,uint256,bytes)[],uint256)":"infinite","proposalCount()":"2336","supportsInterface(bytes4)":"427"}},"methodIdentifiers":{"createProposal(address,bytes,uint64,uint64,(address,uint256,bytes)[],uint256)":"73e1166d","createProposalId()":"7b2bf56e","executeProposal(address,uint256,(address,uint256,bytes)[],uint256)":"634a9a88","proposalCount()":"da35c664","supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"proposalId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"creator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"startDate\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"endDate\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"struct IDAO.Action[]\",\"name\":\"actions\",\"type\":\"tuple[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"allowFailureMap\",\"type\":\"uint256\"}],\"name\":\"ProposalCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"proposalId\",\"type\":\"uint256\"}],\"name\":\"ProposalExecuted\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_creator\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_metadata\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"_startDate\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"_endDate\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IDAO.Action[]\",\"name\":\"_actions\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"_allowFailureMap\",\"type\":\"uint256\"}],\"name\":\"createProposal\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"proposalId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"createProposalId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"proposalId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IDAO\",\"name\":\"_dao\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_proposalId\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IDAO.Action[]\",\"name\":\"_actions\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"_allowFailureMap\",\"type\":\"uint256\"}],\"name\":\"executeProposal\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"execResults\",\"type\":\"bytes[]\"},{\"internalType\":\"uint256\",\"name\":\"failureMap\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proposalCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"DO NOT USE IN PRODUCTION!\",\"kind\":\"dev\",\"methods\":{\"proposalCount()\":{\"returns\":{\"_0\":\"The proposal count.\"}},\"supportsInterface(bytes4)\":{\"params\":{\"_interfaceId\":\"The ID of the interface.\"},\"returns\":{\"_0\":\"Returns `true` if the interface is supported.\"}}},\"version\":1},\"userdoc\":{\"events\":{\"ProposalCreated(uint256,address,uint64,uint64,bytes,(address,uint256,bytes)[],uint256)\":{\"notice\":\"Emitted when a proposal is created.\"},\"ProposalExecuted(uint256)\":{\"notice\":\"Emitted when a proposal is executed.\"}},\"kind\":\"user\",\"methods\":{\"proposalCount()\":{\"notice\":\"Returns the proposal count determining the next proposal ID.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Checks if this or the parent contract supports an interface by its ID.\"}},\"notice\":\"A mock contract containing functions to create and execute proposals.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/mocks/plugin/extensions/proposal/ProposalMock.sol\":\"ProposalMock\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Counters.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Counters.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title Counters\\n * @author Matt Condon (@shrugs)\\n * @dev Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number\\n * of elements in a mapping, issuing ERC721 ids, or counting request ids.\\n *\\n * Include with `using Counters for Counters.Counter;`\\n */\\nlibrary Counters {\\n struct Counter {\\n // This variable should never be directly accessed by users of the library: interactions must be restricted to\\n // the library's function. As of Solidity v0.5.2, this cannot be enforced, though there is a proposal to add\\n // this feature: see https://github.com/ethereum/solidity/issues/4637\\n uint256 _value; // default: 0\\n }\\n\\n function current(Counter storage counter) internal view returns (uint256) {\\n return counter._value;\\n }\\n\\n function increment(Counter storage counter) internal {\\n unchecked {\\n counter._value += 1;\\n }\\n }\\n\\n function decrement(Counter storage counter) internal {\\n uint256 value = counter._value;\\n require(value > 0, \\\"Counter: decrement overflow\\\");\\n unchecked {\\n counter._value = value - 1;\\n }\\n }\\n\\n function reset(Counter storage counter) internal {\\n counter._value = 0;\\n }\\n}\\n\",\"keccak256\":\"0xf0018c2440fbe238dd3a8732fa8e17a0f9dce84d31451dc8a32f6d62b349c9f1\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165 is IERC165 {\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165).interfaceId;\\n }\\n}\\n\",\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"src/dao/IDAO.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IDAO\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for DAOs within the Aragon App DAO framework.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IDAO {\\n /// @notice The action struct to be consumed by the DAO's `execute` function resulting in an external call.\\n /// @param to The address to call.\\n /// @param value The native token value to be sent with the call.\\n /// @param data The bytes-encoded function selector and calldata for the call.\\n struct Action {\\n address to;\\n uint256 value;\\n bytes data;\\n }\\n\\n /// @notice Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\\n /// @param _where The address of the contract.\\n /// @param _who The address of a EOA or contract to give the permissions.\\n /// @param _permissionId The permission identifier.\\n /// @param _data The optional data passed to the `PermissionCondition` registered.\\n /// @return Returns true if the address has permission, false if not.\\n function hasPermission(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes memory _data\\n ) external view returns (bool);\\n\\n /// @notice Updates the DAO metadata (e.g., an IPFS hash).\\n /// @param _metadata The IPFS hash of the new metadata object.\\n function setMetadata(bytes calldata _metadata) external;\\n\\n /// @notice Emitted when the DAO metadata is updated.\\n /// @param metadata The IPFS hash of the new metadata object.\\n event MetadataSet(bytes metadata);\\n\\n /// @notice Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted.\\n /// @param _callId The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce.\\n /// @param _actions The array of actions.\\n /// @param _allowFailureMap A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @return The array of results obtained from the executed actions in `bytes`.\\n /// @return The resulting failure map containing the actions have actually failed.\\n function execute(\\n bytes32 _callId,\\n Action[] memory _actions,\\n uint256 _allowFailureMap\\n ) external returns (bytes[] memory, uint256);\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param actor The address of the caller.\\n /// @param callId The ID of the call.\\n /// @param actions The array of actions executed.\\n /// @param allowFailureMap The allow failure map encoding which actions are allowed to fail.\\n /// @param failureMap The failure map encoding which actions have failed.\\n /// @param execResults The array with the results of the executed actions.\\n /// @dev The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce.\\n event Executed(\\n address indexed actor,\\n bytes32 callId,\\n Action[] actions,\\n uint256 allowFailureMap,\\n uint256 failureMap,\\n bytes[] execResults\\n );\\n\\n /// @notice Emitted when a standard callback is registered.\\n /// @param interfaceId The ID of the interface.\\n /// @param callbackSelector The selector of the callback function.\\n /// @param magicNumber The magic number to be registered for the callback function selector.\\n event StandardCallbackRegistered(\\n bytes4 interfaceId,\\n bytes4 callbackSelector,\\n bytes4 magicNumber\\n );\\n\\n /// @notice Deposits (native) tokens to the DAO contract with a reference string.\\n /// @param _token The address of the token or address(0) in case of the native token.\\n /// @param _amount The amount of tokens to deposit.\\n /// @param _reference The reference describing the deposit reason.\\n function deposit(address _token, uint256 _amount, string calldata _reference) external payable;\\n\\n /// @notice Emitted when a token deposit has been made to the DAO.\\n /// @param sender The address of the sender.\\n /// @param token The address of the deposited token.\\n /// @param amount The amount of tokens deposited.\\n /// @param _reference The reference describing the deposit reason.\\n event Deposited(\\n address indexed sender,\\n address indexed token,\\n uint256 amount,\\n string _reference\\n );\\n\\n /// @notice Emitted when a native token deposit has been made to the DAO.\\n /// @dev This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).\\n /// @param sender The address of the sender.\\n /// @param amount The amount of native tokens deposited.\\n event NativeTokenDeposited(address sender, uint256 amount);\\n\\n /// @notice Setter for the trusted forwarder verifying the meta transaction.\\n /// @param _trustedForwarder The trusted forwarder address.\\n function setTrustedForwarder(address _trustedForwarder) external;\\n\\n /// @notice Getter for the trusted forwarder verifying the meta transaction.\\n /// @return The trusted forwarder address.\\n function getTrustedForwarder() external view returns (address);\\n\\n /// @notice Emitted when a new TrustedForwarder is set on the DAO.\\n /// @param forwarder the new forwarder address.\\n event TrustedForwarderSet(address forwarder);\\n\\n /// @notice Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\\n /// @param _hash The hash of the data to be signed.\\n /// @param _signature The signature byte array associated with `_hash`.\\n /// @return Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not.\\n function isValidSignature(bytes32 _hash, bytes memory _signature) external returns (bytes4);\\n\\n /// @notice Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\\n /// @param _interfaceId The ID of the interface.\\n /// @param _callbackSelector The selector of the callback function.\\n /// @param _magicNumber The magic number to be registered for the function signature.\\n function registerStandardCallback(\\n bytes4 _interfaceId,\\n bytes4 _callbackSelector,\\n bytes4 _magicNumber\\n ) external;\\n\\n /// @notice Removed function being left here to not corrupt the IDAO interface ID. Any call will revert.\\n /// @dev Introduced in v1.0.0. Removed in v1.4.0.\\n function setSignatureValidator(address) external;\\n}\\n\",\"keccak256\":\"0xb7f615523c26de042edce98731c658f44a1edb2464387ac1b642c4c69f57128e\",\"license\":\"AGPL-3.0-or-later\"},\"src/mocks/plugin/extensions/proposal/ProposalMock.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {Proposal} from \\\"../../../../plugin/extensions/proposal/Proposal.sol\\\";\\nimport {IDAO} from \\\"../../../../dao/IDAO.sol\\\";\\n\\n/// @notice A mock contract containing functions to create and execute proposals.\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract ProposalMock is Proposal {\\n function createProposalId() external returns (uint256 proposalId) {\\n proposalId = _createProposalId();\\n }\\n\\n function createProposal(\\n address _creator,\\n bytes calldata _metadata,\\n uint64 _startDate,\\n uint64 _endDate,\\n IDAO.Action[] calldata _actions,\\n uint256 _allowFailureMap\\n ) external returns (uint256 proposalId) {\\n proposalId = _createProposal(\\n _creator,\\n _metadata,\\n _startDate,\\n _endDate,\\n _actions,\\n _allowFailureMap\\n );\\n }\\n\\n function executeProposal(\\n IDAO _dao,\\n uint256 _proposalId,\\n IDAO.Action[] memory _actions,\\n uint256 _allowFailureMap\\n ) external returns (bytes[] memory execResults, uint256 failureMap) {\\n (execResults, failureMap) = _executeProposal(_dao, _proposalId, _actions, _allowFailureMap);\\n }\\n}\\n\",\"keccak256\":\"0x7be72ca248e5d388d9fa1bc96955544d66c58defe7c626e533b32ad11ef86459\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/extensions/proposal/IProposal.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IDAO} from \\\"../../../dao/IDAO.sol\\\";\\n\\n/// @title IProposal\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface to be implemented by DAO plugins that create and execute proposals.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IProposal {\\n /// @notice Emitted when a proposal is created.\\n /// @param proposalId The ID of the proposal.\\n /// @param creator The creator of the proposal.\\n /// @param startDate The start date of the proposal in seconds.\\n /// @param endDate The end date of the proposal in seconds.\\n /// @param metadata The metadata of the proposal.\\n /// @param actions The actions that will be executed if the proposal passes.\\n /// @param allowFailureMap A bitmap allowing the proposal to succeed, even if individual actions might revert. If the bit at index `i` is 1, the proposal succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n event ProposalCreated(\\n uint256 indexed proposalId,\\n address indexed creator,\\n uint64 startDate,\\n uint64 endDate,\\n bytes metadata,\\n IDAO.Action[] actions,\\n uint256 allowFailureMap\\n );\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param proposalId The ID of the proposal.\\n event ProposalExecuted(uint256 indexed proposalId);\\n\\n /// @notice Returns the proposal count determining the next proposal ID.\\n /// @return The proposal count.\\n function proposalCount() external view returns (uint256);\\n}\\n\",\"keccak256\":\"0x06205453d6800f598d41848ba9ebf50919ffb773f3ba63247ddcfb2464358239\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/extensions/proposal/Proposal.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {Counters} from \\\"@openzeppelin/contracts/utils/Counters.sol\\\";\\nimport {ERC165} from \\\"@openzeppelin/contracts/utils/introspection/ERC165.sol\\\";\\n\\nimport {IDAO} from \\\"../../../dao/IDAO.sol\\\";\\nimport {IProposal} from \\\"./IProposal.sol\\\";\\n\\n/// @title Proposal\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract contract containing the traits and internal functionality to create and execute proposals that can be inherited by non-upgradeable DAO plugins.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract Proposal is IProposal, ERC165 {\\n using Counters for Counters.Counter;\\n\\n /// @notice The incremental ID for proposals and executions.\\n Counters.Counter private proposalCounter;\\n\\n /// @inheritdoc IProposal\\n function proposalCount() public view override returns (uint256) {\\n return proposalCounter.current();\\n }\\n\\n /// @notice Checks if this or the parent contract supports an interface by its ID.\\n /// @param _interfaceId The ID of the interface.\\n /// @return Returns `true` if the interface is supported.\\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\\n return _interfaceId == type(IProposal).interfaceId || super.supportsInterface(_interfaceId);\\n }\\n\\n /// @notice Creates a proposal ID.\\n /// @return proposalId The proposal ID.\\n function _createProposalId() internal returns (uint256 proposalId) {\\n proposalId = proposalCount();\\n proposalCounter.increment();\\n }\\n\\n /// @notice Internal function to create a proposal.\\n /// @param _metadata The proposal metadata.\\n /// @param _startDate The start date of the proposal in seconds.\\n /// @param _endDate The end date of the proposal in seconds.\\n /// @param _allowFailureMap A bitmap allowing the proposal to succeed, even if individual actions might revert. If the bit at index `i` is 1, the proposal succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @param _actions The actions that will be executed after the proposal passes.\\n /// @return proposalId The ID of the proposal.\\n function _createProposal(\\n address _creator,\\n bytes calldata _metadata,\\n uint64 _startDate,\\n uint64 _endDate,\\n IDAO.Action[] calldata _actions,\\n uint256 _allowFailureMap\\n ) internal virtual returns (uint256 proposalId) {\\n proposalId = _createProposalId();\\n\\n emit ProposalCreated({\\n proposalId: proposalId,\\n creator: _creator,\\n metadata: _metadata,\\n startDate: _startDate,\\n endDate: _endDate,\\n actions: _actions,\\n allowFailureMap: _allowFailureMap\\n });\\n }\\n\\n /// @notice Internal function to execute a proposal.\\n /// @param _proposalId The ID of the proposal to be executed.\\n /// @param _actions The array of actions to be executed.\\n /// @param _allowFailureMap A bitmap allowing the proposal to succeed, even if individual actions might revert. If the bit at index `i` is 1, the proposal succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @return execResults The array with the results of the executed actions.\\n /// @return failureMap The failure map encoding which actions have failed.\\n function _executeProposal(\\n IDAO _dao,\\n uint256 _proposalId,\\n IDAO.Action[] memory _actions,\\n uint256 _allowFailureMap\\n ) internal virtual returns (bytes[] memory execResults, uint256 failureMap) {\\n (execResults, failureMap) = _dao.execute(bytes32(_proposalId), _actions, _allowFailureMap);\\n emit ProposalExecuted({proposalId: _proposalId});\\n }\\n}\\n\",\"keccak256\":\"0xdd97adbd91ca0bdf56017e6a219f1d714ab686aeab22dc701ee82d913591458e\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[{"astId":13919,"contract":"src/mocks/plugin/extensions/proposal/ProposalMock.sol:ProposalMock","label":"proposalCounter","offset":0,"slot":"0","type":"t_struct(Counter)9300_storage"}],"types":{"t_struct(Counter)9300_storage":{"encoding":"inplace","label":"struct Counters.Counter","members":[{"astId":9299,"contract":"src/mocks/plugin/extensions/proposal/ProposalMock.sol:ProposalMock","label":"_value","offset":0,"slot":"0","type":"t_uint256"}],"numberOfBytes":"32"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"userdoc":{"events":{"ProposalCreated(uint256,address,uint64,uint64,bytes,(address,uint256,bytes)[],uint256)":{"notice":"Emitted when a proposal is created."},"ProposalExecuted(uint256)":{"notice":"Emitted when a proposal is executed."}},"kind":"user","methods":{"proposalCount()":{"notice":"Returns the proposal count determining the next proposal ID."},"supportsInterface(bytes4)":{"notice":"Checks if this or the parent contract supports an interface by its ID."}},"notice":"A mock contract containing functions to create and execute proposals.","version":1}}},"src/mocks/plugin/extensions/proposal/ProposalUpgradeableMock.sol":{"ProposalUpgradeableMock":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":true,"internalType":"address","name":"creator","type":"address"},{"indexed":false,"internalType":"uint64","name":"startDate","type":"uint64"},{"indexed":false,"internalType":"uint64","name":"endDate","type":"uint64"},{"indexed":false,"internalType":"bytes","name":"metadata","type":"bytes"},{"components":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"indexed":false,"internalType":"struct IDAO.Action[]","name":"actions","type":"tuple[]"},{"indexed":false,"internalType":"uint256","name":"allowFailureMap","type":"uint256"}],"name":"ProposalCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalExecuted","type":"event"},{"inputs":[{"internalType":"address","name":"_creator","type":"address"},{"internalType":"bytes","name":"_metadata","type":"bytes"},{"internalType":"uint64","name":"_startDate","type":"uint64"},{"internalType":"uint64","name":"_endDate","type":"uint64"},{"components":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct IDAO.Action[]","name":"_actions","type":"tuple[]"},{"internalType":"uint256","name":"_allowFailureMap","type":"uint256"}],"name":"createProposal","outputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"createProposalId","outputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IDAO","name":"_dao","type":"address"},{"internalType":"uint256","name":"_proposalId","type":"uint256"},{"components":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct IDAO.Action[]","name":"_actions","type":"tuple[]"},{"internalType":"uint256","name":"_allowFailureMap","type":"uint256"}],"name":"executeProposal","outputs":[{"internalType":"bytes[]","name":"execResults","type":"bytes[]"},{"internalType":"uint256","name":"failureMap","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"proposalCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"DO NOT USE IN PRODUCTION!","kind":"dev","methods":{"proposalCount()":{"returns":{"_0":"The proposal count."}},"supportsInterface(bytes4)":{"params":{"_interfaceId":"The ID of the interface."},"returns":{"_0":"Returns `true` if the interface is supported."}}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b506109ee806100206000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c806373e1166d1161005057806373e1166d146100b55780637b2bf56e146100d6578063da35c664146100de57600080fd5b806301ffc9a71461006c578063634a9a8814610094575b600080fd5b61007f61007a3660046102ac565b6100e6565b60405190151581526020015b60405180910390f35b6100a76100a23660046103b1565b61011d565b60405161008b929190610573565b6100c86100c3366004610645565b61013a565b60405190815260200161008b565b6100c8610159565b6100c8610168565b60006001600160e01b0319821663368d719960e21b148061011757506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600061012d86868686610173565b9097909650945050505050565b600061014c8989898989898989610229565b9998505050505050505050565b600061016361028f565b905090565b600061016360335490565b6040516331c6fcc960e21b81526060906000906001600160a01b0387169063c71bf324906101a99088908890889060040161071c565b6000604051808303816000875af11580156101c8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526101f091908101906107b4565b604051919350915085907f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f90600090a294509492505050565b600061023361028f565b9050886001600160a01b0316817fa6c1f8f4276dc3f243459e13b557c84e8f4e90b2e09070bad5f6909cee687c9288888c8c8a8a8a60405161027b97969594939291906108d1565b60405180910390a398975050505050505050565b6000610299610168565b90506102a9603380546001019055565b90565b6000602082840312156102be57600080fd5b81356001600160e01b0319811681146102d657600080fd5b9392505050565b6001600160a01b03811681146102f257600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171561032e5761032e6102f5565b60405290565b604051601f8201601f1916810167ffffffffffffffff8111828210171561035d5761035d6102f5565b604052919050565b600067ffffffffffffffff82111561037f5761037f6102f5565b5060051b60200190565b600067ffffffffffffffff8211156103a3576103a36102f5565b50601f01601f191660200190565b600080600080608085870312156103c757600080fd5b6103d185356102dd565b8435935060208501359250604085013567ffffffffffffffff808211156103f757600080fd5b818701915087601f83011261040b57600080fd5b61041d6104188335610365565b610334565b82358082526020808301929160051b8501018a81111561043c57600080fd5b602085015b8181101561050f57848135111561045757600080fd5b803586016060818e03601f1901121561046f57600080fd5b61047761030b565b6020820135610485816102dd565b8152604082013560208201526060820135878111156104a357600080fd5b8083019250508d603f8301126104b857600080fd5b60208201356104c961041882610389565b8181528f60408386010111156104de57600080fd5b8160408501602083013760006020838301015280604084015250508086525050602084019350602081019050610441565b50979a969950976060013596505050505050565b60005b8381101561053e578181015183820152602001610526565b50506000910152565b6000815180845261055f816020860160208601610523565b601f01601f19169290920160200192915050565b6000604082016040835280855180835260608501915060608160051b8601019250602080880160005b838110156105ca57605f198887030185526105b8868351610547565b9550938201939082019060010161059c565b50509490940194909452949350505050565b803567ffffffffffffffff811681146105f457600080fd5b919050565b60008083601f84011261060b57600080fd5b50813567ffffffffffffffff81111561062357600080fd5b6020830191508360208260051b850101111561063e57600080fd5b9250929050565b60008060008060008060008060c0898b03121561066157600080fd5b883561066c816102dd565b9750602089013567ffffffffffffffff8082111561068957600080fd5b818b0191508b601f83011261069d57600080fd5b8135818111156106ac57600080fd5b8c60208285010111156106be57600080fd5b60208301995097506106d260408c016105dc565b96506106e060608c016105dc565b955060808b01359150808211156106f657600080fd5b506107038b828c016105f9565b999c989b50969995989497949560a00135949350505050565b600060608083018684526020828186015281875180845260808701915060808160051b880101935082890160005b8281101561079d57888603607f19018452815180516001600160a01b03168752858101518688015260409081015190870188905261078a88880182610547565b965050928401929084019060010161074a565b505050505060409390930193909352509392505050565b60008060408084860312156107c857600080fd5b835167ffffffffffffffff808211156107e057600080fd5b818601915086601f8301126107f457600080fd5b8151602061080461041883610365565b82815260059290921b8401810191818101908a84111561082357600080fd5b8286015b848110156108945780518681111561083f5760008081fd5b8701603f81018d136108515760008081fd5b8481015161086161041882610389565b8181528e8b8385010111156108765760008081fd5b610885828883018d8601610523565b85525050918301918301610827565b509890910151979997985050505050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b600067ffffffffffffffff808a1683526020818a1681850152604060a08186015261090060a086018a8c6108a8565b606086820381880152818983528483019050848a60051b8401018b60005b8c8110156109c357858303601f190184528135368f9003605e1901811261094457600080fd5b8e018035610951816102dd565b6001600160a01b0316845280890135898501528781013536829003601e1901811261097b57600080fd5b0188810190358a81111561098e57600080fd5b80360382131561099d57600080fd5b86898601526109af87860182846108a8565b958a0195945050509087019060010161091e565b5050809750505050505050508260808301529897505050505050505056fea164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x9EE DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x67 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x73E1166D GT PUSH2 0x50 JUMPI DUP1 PUSH4 0x73E1166D EQ PUSH2 0xB5 JUMPI DUP1 PUSH4 0x7B2BF56E EQ PUSH2 0xD6 JUMPI DUP1 PUSH4 0xDA35C664 EQ PUSH2 0xDE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x6C JUMPI DUP1 PUSH4 0x634A9A88 EQ PUSH2 0x94 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7F PUSH2 0x7A CALLDATASIZE PUSH1 0x4 PUSH2 0x2AC JUMP JUMPDEST PUSH2 0xE6 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xA7 PUSH2 0xA2 CALLDATASIZE PUSH1 0x4 PUSH2 0x3B1 JUMP JUMPDEST PUSH2 0x11D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x8B SWAP3 SWAP2 SWAP1 PUSH2 0x573 JUMP JUMPDEST PUSH2 0xC8 PUSH2 0xC3 CALLDATASIZE PUSH1 0x4 PUSH2 0x645 JUMP JUMPDEST PUSH2 0x13A JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x8B JUMP JUMPDEST PUSH2 0xC8 PUSH2 0x159 JUMP JUMPDEST PUSH2 0xC8 PUSH2 0x168 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x368D7199 PUSH1 0xE2 SHL EQ DUP1 PUSH2 0x117 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x12D DUP7 DUP7 DUP7 DUP7 PUSH2 0x173 JUMP JUMPDEST SWAP1 SWAP8 SWAP1 SWAP7 POP SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x14C DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 PUSH2 0x229 JUMP JUMPDEST SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x163 PUSH2 0x28F JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x163 PUSH1 0x33 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x31C6FCC9 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x60 SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0xC71BF324 SWAP1 PUSH2 0x1A9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x71C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1C8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x1F0 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x7B4 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 SWAP4 POP SWAP2 POP DUP6 SWAP1 PUSH32 0x712AE1383F79AC853F8D882153778E0260EF8F03B504E2866E0593E04D2B291F SWAP1 PUSH1 0x0 SWAP1 LOG2 SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x233 PUSH2 0x28F JUMP JUMPDEST SWAP1 POP DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH32 0xA6C1F8F4276DC3F243459E13B557C84E8F4E90B2E09070BAD5F6909CEE687C92 DUP9 DUP9 DUP13 DUP13 DUP11 DUP11 DUP11 PUSH1 0x40 MLOAD PUSH2 0x27B SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x8D1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x299 PUSH2 0x168 JUMP JUMPDEST SWAP1 POP PUSH2 0x2A9 PUSH1 0x33 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x2D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x2F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x60 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x32E JUMPI PUSH2 0x32E PUSH2 0x2F5 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x35D JUMPI PUSH2 0x35D PUSH2 0x2F5 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x37F JUMPI PUSH2 0x37F PUSH2 0x2F5 JUMP JUMPDEST POP PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x3A3 JUMPI PUSH2 0x3A3 PUSH2 0x2F5 JUMP JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x3C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3D1 DUP6 CALLDATALOAD PUSH2 0x2DD JUMP JUMPDEST DUP5 CALLDATALOAD SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x3F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x40B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x41D PUSH2 0x418 DUP4 CALLDATALOAD PUSH2 0x365 JUMP JUMPDEST PUSH2 0x334 JUMP JUMPDEST DUP3 CALLDATALOAD DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP3 SWAP2 PUSH1 0x5 SHL DUP6 ADD ADD DUP11 DUP2 GT ISZERO PUSH2 0x43C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP6 ADD JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x50F JUMPI DUP5 DUP2 CALLDATALOAD GT ISZERO PUSH2 0x457 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD DUP7 ADD PUSH1 0x60 DUP2 DUP15 SUB PUSH1 0x1F NOT ADD SLT ISZERO PUSH2 0x46F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x477 PUSH2 0x30B JUMP JUMPDEST PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH2 0x485 DUP2 PUSH2 0x2DD JUMP JUMPDEST DUP2 MSTORE PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x60 DUP3 ADD CALLDATALOAD DUP8 DUP2 GT ISZERO PUSH2 0x4A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 DUP4 ADD SWAP3 POP POP DUP14 PUSH1 0x3F DUP4 ADD SLT PUSH2 0x4B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH2 0x4C9 PUSH2 0x418 DUP3 PUSH2 0x389 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP16 PUSH1 0x40 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0x4DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP4 DUP4 ADD ADD MSTORE DUP1 PUSH1 0x40 DUP5 ADD MSTORE POP POP DUP1 DUP7 MSTORE POP POP PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x441 JUMP JUMPDEST POP SWAP8 SWAP11 SWAP7 SWAP10 POP SWAP8 PUSH1 0x60 ADD CALLDATALOAD SWAP7 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x53E JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x526 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x55F DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x523 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD PUSH1 0x40 DUP4 MSTORE DUP1 DUP6 MLOAD DUP1 DUP4 MSTORE PUSH1 0x60 DUP6 ADD SWAP2 POP PUSH1 0x60 DUP2 PUSH1 0x5 SHL DUP7 ADD ADD SWAP3 POP PUSH1 0x20 DUP1 DUP9 ADD PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x5CA JUMPI PUSH1 0x5F NOT DUP9 DUP8 SUB ADD DUP6 MSTORE PUSH2 0x5B8 DUP7 DUP4 MLOAD PUSH2 0x547 JUMP JUMPDEST SWAP6 POP SWAP4 DUP3 ADD SWAP4 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x59C JUMP JUMPDEST POP POP SWAP5 SWAP1 SWAP5 ADD SWAP5 SWAP1 SWAP5 MSTORE SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x5F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x60B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x623 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 PUSH1 0x5 SHL DUP6 ADD ADD GT ISZERO PUSH2 0x63E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP10 DUP12 SUB SLT ISZERO PUSH2 0x661 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP9 CALLDATALOAD PUSH2 0x66C DUP2 PUSH2 0x2DD JUMP JUMPDEST SWAP8 POP PUSH1 0x20 DUP10 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x689 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP12 ADD SWAP2 POP DUP12 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x69D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x6AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP13 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x6BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP10 POP SWAP8 POP PUSH2 0x6D2 PUSH1 0x40 DUP13 ADD PUSH2 0x5DC JUMP JUMPDEST SWAP7 POP PUSH2 0x6E0 PUSH1 0x60 DUP13 ADD PUSH2 0x5DC JUMP JUMPDEST SWAP6 POP PUSH1 0x80 DUP12 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x6F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x703 DUP12 DUP3 DUP13 ADD PUSH2 0x5F9 JUMP JUMPDEST SWAP10 SWAP13 SWAP9 SWAP12 POP SWAP7 SWAP10 SWAP6 SWAP9 SWAP5 SWAP8 SWAP5 SWAP6 PUSH1 0xA0 ADD CALLDATALOAD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP1 DUP4 ADD DUP7 DUP5 MSTORE PUSH1 0x20 DUP3 DUP2 DUP7 ADD MSTORE DUP2 DUP8 MLOAD DUP1 DUP5 MSTORE PUSH1 0x80 DUP8 ADD SWAP2 POP PUSH1 0x80 DUP2 PUSH1 0x5 SHL DUP9 ADD ADD SWAP4 POP DUP3 DUP10 ADD PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x79D JUMPI DUP9 DUP7 SUB PUSH1 0x7F NOT ADD DUP5 MSTORE DUP2 MLOAD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 MSTORE DUP6 DUP2 ADD MLOAD DUP7 DUP9 ADD MSTORE PUSH1 0x40 SWAP1 DUP2 ADD MLOAD SWAP1 DUP8 ADD DUP9 SWAP1 MSTORE PUSH2 0x78A DUP9 DUP9 ADD DUP3 PUSH2 0x547 JUMP JUMPDEST SWAP7 POP POP SWAP3 DUP5 ADD SWAP3 SWAP1 DUP5 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x74A JUMP JUMPDEST POP POP POP POP POP PUSH1 0x40 SWAP4 SWAP1 SWAP4 ADD SWAP4 SWAP1 SWAP4 MSTORE POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP1 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x7C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x7E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP7 ADD SWAP2 POP DUP7 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x7F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x20 PUSH2 0x804 PUSH2 0x418 DUP4 PUSH2 0x365 JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH1 0x5 SWAP3 SWAP1 SWAP3 SHL DUP5 ADD DUP2 ADD SWAP2 DUP2 DUP2 ADD SWAP1 DUP11 DUP5 GT ISZERO PUSH2 0x823 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 DUP7 ADD JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x894 JUMPI DUP1 MLOAD DUP7 DUP2 GT ISZERO PUSH2 0x83F JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST DUP8 ADD PUSH1 0x3F DUP2 ADD DUP14 SGT PUSH2 0x851 JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST DUP5 DUP2 ADD MLOAD PUSH2 0x861 PUSH2 0x418 DUP3 PUSH2 0x389 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP15 DUP12 DUP4 DUP6 ADD ADD GT ISZERO PUSH2 0x876 JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST PUSH2 0x885 DUP3 DUP9 DUP4 ADD DUP14 DUP7 ADD PUSH2 0x523 JUMP JUMPDEST DUP6 MSTORE POP POP SWAP2 DUP4 ADD SWAP2 DUP4 ADD PUSH2 0x827 JUMP JUMPDEST POP SWAP9 SWAP1 SWAP2 ADD MLOAD SWAP8 SWAP10 SWAP8 SWAP9 POP POP POP POP POP POP POP POP JUMP JUMPDEST DUP2 DUP4 MSTORE DUP2 DUP2 PUSH1 0x20 DUP6 ADD CALLDATACOPY POP PUSH1 0x0 DUP3 DUP3 ADD PUSH1 0x20 SWAP1 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1F SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND SWAP1 SWAP2 ADD ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP11 AND DUP4 MSTORE PUSH1 0x20 DUP2 DUP11 AND DUP2 DUP6 ADD MSTORE PUSH1 0x40 PUSH1 0xA0 DUP2 DUP7 ADD MSTORE PUSH2 0x900 PUSH1 0xA0 DUP7 ADD DUP11 DUP13 PUSH2 0x8A8 JUMP JUMPDEST PUSH1 0x60 DUP7 DUP3 SUB DUP2 DUP9 ADD MSTORE DUP2 DUP10 DUP4 MSTORE DUP5 DUP4 ADD SWAP1 POP DUP5 DUP11 PUSH1 0x5 SHL DUP5 ADD ADD DUP12 PUSH1 0x0 JUMPDEST DUP13 DUP2 LT ISZERO PUSH2 0x9C3 JUMPI DUP6 DUP4 SUB PUSH1 0x1F NOT ADD DUP5 MSTORE DUP2 CALLDATALOAD CALLDATASIZE DUP16 SWAP1 SUB PUSH1 0x5E NOT ADD DUP2 SLT PUSH2 0x944 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP15 ADD DUP1 CALLDATALOAD PUSH2 0x951 DUP2 PUSH2 0x2DD JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 MSTORE DUP1 DUP10 ADD CALLDATALOAD DUP10 DUP6 ADD MSTORE DUP8 DUP2 ADD CALLDATALOAD CALLDATASIZE DUP3 SWAP1 SUB PUSH1 0x1E NOT ADD DUP2 SLT PUSH2 0x97B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST ADD DUP9 DUP2 ADD SWAP1 CALLDATALOAD DUP11 DUP2 GT ISZERO PUSH2 0x98E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATASIZE SUB DUP3 SGT ISZERO PUSH2 0x99D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 DUP10 DUP7 ADD MSTORE PUSH2 0x9AF DUP8 DUP7 ADD DUP3 DUP5 PUSH2 0x8A8 JUMP JUMPDEST SWAP6 DUP11 ADD SWAP6 SWAP5 POP POP POP SWAP1 DUP8 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x91E JUMP JUMPDEST POP POP DUP1 SWAP8 POP POP POP POP POP POP POP POP DUP3 PUSH1 0x80 DUP4 ADD MSTORE SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"425:970:57:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_createProposalId_14120":{"entryPoint":655,"id":14120,"parameterSlots":0,"returnSlots":1},"@_createProposal_14156":{"entryPoint":553,"id":14156,"parameterSlots":8,"returnSlots":1},"@_executeProposal_14195":{"entryPoint":371,"id":14195,"parameterSlots":4,"returnSlots":2},"@createProposalId_12564":{"entryPoint":345,"id":12564,"parameterSlots":0,"returnSlots":1},"@createProposal_12595":{"entryPoint":314,"id":12595,"parameterSlots":8,"returnSlots":1},"@current_2611":{"entryPoint":null,"id":2611,"parameterSlots":1,"returnSlots":1},"@executeProposal_12626":{"entryPoint":285,"id":12626,"parameterSlots":4,"returnSlots":2},"@increment_2625":{"entryPoint":null,"id":2625,"parameterSlots":1,"returnSlots":0},"@proposalCount_14081":{"entryPoint":360,"id":14081,"parameterSlots":0,"returnSlots":1},"@supportsInterface_14103":{"entryPoint":230,"id":14103,"parameterSlots":1,"returnSlots":1},"@supportsInterface_2816":{"entryPoint":null,"id":2816,"parameterSlots":1,"returnSlots":1},"abi_decode_array_struct_Action_calldata_dyn_calldata":{"entryPoint":1529,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_bytes_calldata_ptrt_uint64t_uint64t_array$_t_struct$_Action_$10724_calldata_ptr_$dyn_calldata_ptrt_uint256":{"entryPoint":1605,"id":null,"parameterSlots":2,"returnSlots":8},"abi_decode_tuple_t_array$_t_bytes_memory_ptr_$dyn_memory_ptrt_uint256_fromMemory":{"entryPoint":1972,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_bytes4":{"entryPoint":684,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_contract$_IDAO_$10865t_uint256t_array$_t_struct$_Action_$10724_memory_ptr_$dyn_memory_ptrt_uint256":{"entryPoint":945,"id":null,"parameterSlots":2,"returnSlots":4},"abi_decode_uint64":{"entryPoint":1500,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_bytes":{"entryPoint":1351,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_bytes_calldata":{"entryPoint":2216,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_t_uint256__to_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_t_uint256__fromStack_reversed":{"entryPoint":1395,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bytes32_t_array$_t_struct$_Action_$10724_memory_ptr_$dyn_memory_ptr_t_uint256__to_t_bytes32_t_array$_t_struct$_Action_$10724_memory_ptr_$dyn_memory_ptr_t_uint256__fromStack_reversed":{"entryPoint":1820,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_uint64_t_uint64_t_bytes_calldata_ptr_t_array$_t_struct$_Action_$10724_calldata_ptr_$dyn_calldata_ptr_t_uint256__to_t_uint64_t_uint64_t_bytes_memory_ptr_t_array$_t_struct$_Action_$10724_memory_ptr_$dyn_memory_ptr_t_uint256__fromStack_reversed":{"entryPoint":2257,"id":null,"parameterSlots":8,"returnSlots":1},"allocate_memory":{"entryPoint":820,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_memory_2869":{"entryPoint":779,"id":null,"parameterSlots":0,"returnSlots":1},"array_allocation_size_array_struct_Action_dyn":{"entryPoint":869,"id":null,"parameterSlots":1,"returnSlots":1},"array_allocation_size_bytes":{"entryPoint":905,"id":null,"parameterSlots":1,"returnSlots":1},"copy_memory_to_memory_with_cleanup":{"entryPoint":1315,"id":null,"parameterSlots":3,"returnSlots":0},"panic_error_0x41":{"entryPoint":757,"id":null,"parameterSlots":0,"returnSlots":0},"validator_revert_contract_IDAO":{"entryPoint":733,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:12924:92","statements":[{"nodeType":"YulBlock","src":"6:3:92","statements":[]},{"body":{"nodeType":"YulBlock","src":"83:217:92","statements":[{"body":{"nodeType":"YulBlock","src":"129:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"138:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"141:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"131:6:92"},"nodeType":"YulFunctionCall","src":"131:12:92"},"nodeType":"YulExpressionStatement","src":"131:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"104:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"113:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"100:3:92"},"nodeType":"YulFunctionCall","src":"100:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"125:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"96:3:92"},"nodeType":"YulFunctionCall","src":"96:32:92"},"nodeType":"YulIf","src":"93:52:92"},{"nodeType":"YulVariableDeclaration","src":"154:36:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"180:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"167:12:92"},"nodeType":"YulFunctionCall","src":"167:23:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"158:5:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"254:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"263:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"266:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"256:6:92"},"nodeType":"YulFunctionCall","src":"256:12:92"},"nodeType":"YulExpressionStatement","src":"256:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"212:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"223:5:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"234:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"239:10:92","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"230:3:92"},"nodeType":"YulFunctionCall","src":"230:20:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"219:3:92"},"nodeType":"YulFunctionCall","src":"219:32:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"209:2:92"},"nodeType":"YulFunctionCall","src":"209:43:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"202:6:92"},"nodeType":"YulFunctionCall","src":"202:51:92"},"nodeType":"YulIf","src":"199:71:92"},{"nodeType":"YulAssignment","src":"279:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"289:5:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"279:6:92"}]}]},"name":"abi_decode_tuple_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"49:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"60:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"72:6:92","type":""}],"src":"14:286:92"},{"body":{"nodeType":"YulBlock","src":"400:92:92","statements":[{"nodeType":"YulAssignment","src":"410:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"422:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"433:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"418:3:92"},"nodeType":"YulFunctionCall","src":"418:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"410:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"452:9:92"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"477:6:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"470:6:92"},"nodeType":"YulFunctionCall","src":"470:14:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"463:6:92"},"nodeType":"YulFunctionCall","src":"463:22:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"445:6:92"},"nodeType":"YulFunctionCall","src":"445:41:92"},"nodeType":"YulExpressionStatement","src":"445:41:92"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"369:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"380:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"391:4:92","type":""}],"src":"305:187:92"},{"body":{"nodeType":"YulBlock","src":"548:109:92","statements":[{"body":{"nodeType":"YulBlock","src":"635:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"644:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"647:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"637:6:92"},"nodeType":"YulFunctionCall","src":"637:12:92"},"nodeType":"YulExpressionStatement","src":"637:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"571:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"582:5:92"},{"kind":"number","nodeType":"YulLiteral","src":"589:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"578:3:92"},"nodeType":"YulFunctionCall","src":"578:54:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"568:2:92"},"nodeType":"YulFunctionCall","src":"568:65:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"561:6:92"},"nodeType":"YulFunctionCall","src":"561:73:92"},"nodeType":"YulIf","src":"558:93:92"}]},"name":"validator_revert_contract_IDAO","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"537:5:92","type":""}],"src":"497:160:92"},{"body":{"nodeType":"YulBlock","src":"694:95:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"711:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"718:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"723:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"714:3:92"},"nodeType":"YulFunctionCall","src":"714:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"704:6:92"},"nodeType":"YulFunctionCall","src":"704:31:92"},"nodeType":"YulExpressionStatement","src":"704:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"751:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"754:4:92","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"744:6:92"},"nodeType":"YulFunctionCall","src":"744:15:92"},"nodeType":"YulExpressionStatement","src":"744:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"775:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"778:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"768:6:92"},"nodeType":"YulFunctionCall","src":"768:15:92"},"nodeType":"YulExpressionStatement","src":"768:15:92"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"662:127:92"},{"body":{"nodeType":"YulBlock","src":"840:207:92","statements":[{"nodeType":"YulAssignment","src":"850:19:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"866:2:92","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"860:5:92"},"nodeType":"YulFunctionCall","src":"860:9:92"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"850:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"878:35:92","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"900:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"908:4:92","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"896:3:92"},"nodeType":"YulFunctionCall","src":"896:17:92"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"882:10:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"988:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"990:16:92"},"nodeType":"YulFunctionCall","src":"990:18:92"},"nodeType":"YulExpressionStatement","src":"990:18:92"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"931:10:92"},{"kind":"number","nodeType":"YulLiteral","src":"943:18:92","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"928:2:92"},"nodeType":"YulFunctionCall","src":"928:34:92"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"967:10:92"},{"name":"memPtr","nodeType":"YulIdentifier","src":"979:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"964:2:92"},"nodeType":"YulFunctionCall","src":"964:22:92"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"925:2:92"},"nodeType":"YulFunctionCall","src":"925:62:92"},"nodeType":"YulIf","src":"922:88:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1026:2:92","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"1030:10:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1019:6:92"},"nodeType":"YulFunctionCall","src":"1019:22:92"},"nodeType":"YulExpressionStatement","src":"1019:22:92"}]},"name":"allocate_memory_2869","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"829:6:92","type":""}],"src":"794:253:92"},{"body":{"nodeType":"YulBlock","src":"1097:230:92","statements":[{"nodeType":"YulAssignment","src":"1107:19:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1123:2:92","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1117:5:92"},"nodeType":"YulFunctionCall","src":"1117:9:92"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1107:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"1135:58:92","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1157:6:92"},{"arguments":[{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"1173:4:92"},{"kind":"number","nodeType":"YulLiteral","src":"1179:2:92","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1169:3:92"},"nodeType":"YulFunctionCall","src":"1169:13:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1188:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"1184:3:92"},"nodeType":"YulFunctionCall","src":"1184:7:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1165:3:92"},"nodeType":"YulFunctionCall","src":"1165:27:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1153:3:92"},"nodeType":"YulFunctionCall","src":"1153:40:92"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"1139:10:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"1268:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"1270:16:92"},"nodeType":"YulFunctionCall","src":"1270:18:92"},"nodeType":"YulExpressionStatement","src":"1270:18:92"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"1211:10:92"},{"kind":"number","nodeType":"YulLiteral","src":"1223:18:92","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1208:2:92"},"nodeType":"YulFunctionCall","src":"1208:34:92"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"1247:10:92"},{"name":"memPtr","nodeType":"YulIdentifier","src":"1259:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"1244:2:92"},"nodeType":"YulFunctionCall","src":"1244:22:92"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"1205:2:92"},"nodeType":"YulFunctionCall","src":"1205:62:92"},"nodeType":"YulIf","src":"1202:88:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1306:2:92","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"1310:10:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1299:6:92"},"nodeType":"YulFunctionCall","src":"1299:22:92"},"nodeType":"YulExpressionStatement","src":"1299:22:92"}]},"name":"allocate_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"size","nodeType":"YulTypedName","src":"1077:4:92","type":""}],"returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"1086:6:92","type":""}],"src":"1052:275:92"},{"body":{"nodeType":"YulBlock","src":"1407:114:92","statements":[{"body":{"nodeType":"YulBlock","src":"1451:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"1453:16:92"},"nodeType":"YulFunctionCall","src":"1453:18:92"},"nodeType":"YulExpressionStatement","src":"1453:18:92"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"1423:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"1431:18:92","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1420:2:92"},"nodeType":"YulFunctionCall","src":"1420:30:92"},"nodeType":"YulIf","src":"1417:56:92"},{"nodeType":"YulAssignment","src":"1482:33:92","value":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1498:1:92","type":"","value":"5"},{"name":"length","nodeType":"YulIdentifier","src":"1501:6:92"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1494:3:92"},"nodeType":"YulFunctionCall","src":"1494:14:92"},{"kind":"number","nodeType":"YulLiteral","src":"1510:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1490:3:92"},"nodeType":"YulFunctionCall","src":"1490:25:92"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"1482:4:92"}]}]},"name":"array_allocation_size_array_struct_Action_dyn","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nodeType":"YulTypedName","src":"1387:6:92","type":""}],"returnVariables":[{"name":"size","nodeType":"YulTypedName","src":"1398:4:92","type":""}],"src":"1332:189:92"},{"body":{"nodeType":"YulBlock","src":"1583:129:92","statements":[{"body":{"nodeType":"YulBlock","src":"1627:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"1629:16:92"},"nodeType":"YulFunctionCall","src":"1629:18:92"},"nodeType":"YulExpressionStatement","src":"1629:18:92"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"1599:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"1607:18:92","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1596:2:92"},"nodeType":"YulFunctionCall","src":"1596:30:92"},"nodeType":"YulIf","src":"1593:56:92"},{"nodeType":"YulAssignment","src":"1658:48:92","value":{"arguments":[{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"1678:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"1686:2:92","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1674:3:92"},"nodeType":"YulFunctionCall","src":"1674:15:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1695:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"1691:3:92"},"nodeType":"YulFunctionCall","src":"1691:7:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1670:3:92"},"nodeType":"YulFunctionCall","src":"1670:29:92"},{"kind":"number","nodeType":"YulLiteral","src":"1701:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1666:3:92"},"nodeType":"YulFunctionCall","src":"1666:40:92"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"1658:4:92"}]}]},"name":"array_allocation_size_bytes","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nodeType":"YulTypedName","src":"1563:6:92","type":""}],"returnVariables":[{"name":"size","nodeType":"YulTypedName","src":"1574:4:92","type":""}],"src":"1526:186:92"},{"body":{"nodeType":"YulBlock","src":"1902:2024:92","statements":[{"body":{"nodeType":"YulBlock","src":"1949:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1958:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1961:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1951:6:92"},"nodeType":"YulFunctionCall","src":"1951:12:92"},"nodeType":"YulExpressionStatement","src":"1951:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1923:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"1932:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1919:3:92"},"nodeType":"YulFunctionCall","src":"1919:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"1944:3:92","type":"","value":"128"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1915:3:92"},"nodeType":"YulFunctionCall","src":"1915:33:92"},"nodeType":"YulIf","src":"1912:53:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2018:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2005:12:92"},"nodeType":"YulFunctionCall","src":"2005:23:92"}],"functionName":{"name":"validator_revert_contract_IDAO","nodeType":"YulIdentifier","src":"1974:30:92"},"nodeType":"YulFunctionCall","src":"1974:55:92"},"nodeType":"YulExpressionStatement","src":"1974:55:92"},{"nodeType":"YulAssignment","src":"2038:33:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2061:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2048:12:92"},"nodeType":"YulFunctionCall","src":"2048:23:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2038:6:92"}]},{"nodeType":"YulAssignment","src":"2080:42:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2107:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2118:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2103:3:92"},"nodeType":"YulFunctionCall","src":"2103:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2090:12:92"},"nodeType":"YulFunctionCall","src":"2090:32:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"2080:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"2131:46:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2162:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2173:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2158:3:92"},"nodeType":"YulFunctionCall","src":"2158:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2145:12:92"},"nodeType":"YulFunctionCall","src":"2145:32:92"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"2135:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2186:28:92","value":{"kind":"number","nodeType":"YulLiteral","src":"2196:18:92","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"2190:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"2241:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2250:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2253:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2243:6:92"},"nodeType":"YulFunctionCall","src":"2243:12:92"},"nodeType":"YulExpressionStatement","src":"2243:12:92"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"2229:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"2237:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2226:2:92"},"nodeType":"YulFunctionCall","src":"2226:14:92"},"nodeType":"YulIf","src":"2223:34:92"},{"nodeType":"YulVariableDeclaration","src":"2266:32:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2280:9:92"},{"name":"offset","nodeType":"YulIdentifier","src":"2291:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2276:3:92"},"nodeType":"YulFunctionCall","src":"2276:22:92"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"2270:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"2346:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2355:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2358:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2348:6:92"},"nodeType":"YulFunctionCall","src":"2348:12:92"},"nodeType":"YulExpressionStatement","src":"2348:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"2325:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"2329:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2321:3:92"},"nodeType":"YulFunctionCall","src":"2321:13:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2336:7:92"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2317:3:92"},"nodeType":"YulFunctionCall","src":"2317:27:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2310:6:92"},"nodeType":"YulFunctionCall","src":"2310:35:92"},"nodeType":"YulIf","src":"2307:55:92"},{"nodeType":"YulVariableDeclaration","src":"2371:91:92","value":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"2457:2:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2444:12:92"},"nodeType":"YulFunctionCall","src":"2444:16:92"}],"functionName":{"name":"array_allocation_size_array_struct_Action_dyn","nodeType":"YulIdentifier","src":"2398:45:92"},"nodeType":"YulFunctionCall","src":"2398:63:92"}],"functionName":{"name":"allocate_memory","nodeType":"YulIdentifier","src":"2382:15:92"},"nodeType":"YulFunctionCall","src":"2382:80:92"},"variables":[{"name":"dst","nodeType":"YulTypedName","src":"2375:3:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2471:16:92","value":{"name":"dst","nodeType":"YulIdentifier","src":"2484:3:92"},"variables":[{"name":"dst_1","nodeType":"YulTypedName","src":"2475:5:92","type":""}]},{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"2503:3:92"},{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"2521:2:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2508:12:92"},"nodeType":"YulFunctionCall","src":"2508:16:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2496:6:92"},"nodeType":"YulFunctionCall","src":"2496:29:92"},"nodeType":"YulExpressionStatement","src":"2496:29:92"},{"nodeType":"YulAssignment","src":"2534:19:92","value":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"2545:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"2550:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2541:3:92"},"nodeType":"YulFunctionCall","src":"2541:12:92"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"2534:3:92"}]},{"nodeType":"YulVariableDeclaration","src":"2562:56:92","value":{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"2584:2:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2592:1:92","type":"","value":"5"},{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"2608:2:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2595:12:92"},"nodeType":"YulFunctionCall","src":"2595:16:92"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2588:3:92"},"nodeType":"YulFunctionCall","src":"2588:24:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2580:3:92"},"nodeType":"YulFunctionCall","src":"2580:33:92"},{"kind":"number","nodeType":"YulLiteral","src":"2615:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2576:3:92"},"nodeType":"YulFunctionCall","src":"2576:42:92"},"variables":[{"name":"srcEnd","nodeType":"YulTypedName","src":"2566:6:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"2650:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2659:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2662:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2652:6:92"},"nodeType":"YulFunctionCall","src":"2652:12:92"},"nodeType":"YulExpressionStatement","src":"2652:12:92"}]},"condition":{"arguments":[{"name":"srcEnd","nodeType":"YulIdentifier","src":"2633:6:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2641:7:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2630:2:92"},"nodeType":"YulFunctionCall","src":"2630:19:92"},"nodeType":"YulIf","src":"2627:39:92"},{"nodeType":"YulVariableDeclaration","src":"2675:22:92","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"2690:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"2694:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2686:3:92"},"nodeType":"YulFunctionCall","src":"2686:11:92"},"variables":[{"name":"src","nodeType":"YulTypedName","src":"2679:3:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"2762:1081:92","statements":[{"body":{"nodeType":"YulBlock","src":"2805:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2814:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2817:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2807:6:92"},"nodeType":"YulFunctionCall","src":"2807:12:92"},"nodeType":"YulExpressionStatement","src":"2807:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"2795:3:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2782:12:92"},"nodeType":"YulFunctionCall","src":"2782:17:92"},{"name":"_1","nodeType":"YulIdentifier","src":"2801:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2779:2:92"},"nodeType":"YulFunctionCall","src":"2779:25:92"},"nodeType":"YulIf","src":"2776:45:92"},{"nodeType":"YulVariableDeclaration","src":"2834:36:92","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"2848:2:92"},{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"2865:3:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2852:12:92"},"nodeType":"YulFunctionCall","src":"2852:17:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2844:3:92"},"nodeType":"YulFunctionCall","src":"2844:26:92"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"2838:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"2928:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2937:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2940:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2930:6:92"},"nodeType":"YulFunctionCall","src":"2930:12:92"},"nodeType":"YulExpressionStatement","src":"2930:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2898:7:92"},{"name":"_3","nodeType":"YulIdentifier","src":"2907:2:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2894:3:92"},"nodeType":"YulFunctionCall","src":"2894:16:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2916:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"2912:3:92"},"nodeType":"YulFunctionCall","src":"2912:7:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2890:3:92"},"nodeType":"YulFunctionCall","src":"2890:30:92"},{"kind":"number","nodeType":"YulLiteral","src":"2922:4:92","type":"","value":"0x60"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2886:3:92"},"nodeType":"YulFunctionCall","src":"2886:41:92"},"nodeType":"YulIf","src":"2883:61:92"},{"nodeType":"YulVariableDeclaration","src":"2957:35:92","value":{"arguments":[],"functionName":{"name":"allocate_memory_2869","nodeType":"YulIdentifier","src":"2970:20:92"},"nodeType":"YulFunctionCall","src":"2970:22:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"2961:5:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3005:40:92","value":{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"3037:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"3041:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3033:3:92"},"nodeType":"YulFunctionCall","src":"3033:11:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3020:12:92"},"nodeType":"YulFunctionCall","src":"3020:25:92"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"3009:7:92","type":""}]},{"expression":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"3089:7:92"}],"functionName":{"name":"validator_revert_contract_IDAO","nodeType":"YulIdentifier","src":"3058:30:92"},"nodeType":"YulFunctionCall","src":"3058:39:92"},"nodeType":"YulExpressionStatement","src":"3058:39:92"},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3117:5:92"},{"name":"value_1","nodeType":"YulIdentifier","src":"3124:7:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3110:6:92"},"nodeType":"YulFunctionCall","src":"3110:22:92"},"nodeType":"YulExpressionStatement","src":"3110:22:92"},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3156:5:92"},{"kind":"number","nodeType":"YulLiteral","src":"3163:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3152:3:92"},"nodeType":"YulFunctionCall","src":"3152:14:92"},{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"3185:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"3189:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3181:3:92"},"nodeType":"YulFunctionCall","src":"3181:11:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3168:12:92"},"nodeType":"YulFunctionCall","src":"3168:25:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3145:6:92"},"nodeType":"YulFunctionCall","src":"3145:49:92"},"nodeType":"YulExpressionStatement","src":"3145:49:92"},{"nodeType":"YulVariableDeclaration","src":"3207:43:92","value":{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"3240:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"3244:4:92","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3236:3:92"},"nodeType":"YulFunctionCall","src":"3236:13:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3223:12:92"},"nodeType":"YulFunctionCall","src":"3223:27:92"},"variables":[{"name":"offset_1","nodeType":"YulTypedName","src":"3211:8:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"3283:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3292:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3295:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3285:6:92"},"nodeType":"YulFunctionCall","src":"3285:12:92"},"nodeType":"YulExpressionStatement","src":"3285:12:92"}]},"condition":{"arguments":[{"name":"offset_1","nodeType":"YulIdentifier","src":"3269:8:92"},{"name":"_1","nodeType":"YulIdentifier","src":"3279:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3266:2:92"},"nodeType":"YulFunctionCall","src":"3266:16:92"},"nodeType":"YulIf","src":"3263:36:92"},{"nodeType":"YulVariableDeclaration","src":"3312:27:92","value":{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"3326:2:92"},{"name":"offset_1","nodeType":"YulIdentifier","src":"3330:8:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3322:3:92"},"nodeType":"YulFunctionCall","src":"3322:17:92"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"3316:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"3389:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3398:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3401:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3391:6:92"},"nodeType":"YulFunctionCall","src":"3391:12:92"},"nodeType":"YulExpressionStatement","src":"3391:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_4","nodeType":"YulIdentifier","src":"3370:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"3374:2:92","type":"","value":"63"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3366:3:92"},"nodeType":"YulFunctionCall","src":"3366:11:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3379:7:92"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3362:3:92"},"nodeType":"YulFunctionCall","src":"3362:25:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3355:6:92"},"nodeType":"YulFunctionCall","src":"3355:33:92"},"nodeType":"YulIf","src":"3352:53:92"},{"nodeType":"YulVariableDeclaration","src":"3418:35:92","value":{"arguments":[{"arguments":[{"name":"_4","nodeType":"YulIdentifier","src":"3445:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"3449:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3441:3:92"},"nodeType":"YulFunctionCall","src":"3441:11:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3428:12:92"},"nodeType":"YulFunctionCall","src":"3428:25:92"},"variables":[{"name":"_5","nodeType":"YulTypedName","src":"3422:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3466:61:92","value":{"arguments":[{"arguments":[{"name":"_5","nodeType":"YulIdentifier","src":"3523:2:92"}],"functionName":{"name":"array_allocation_size_bytes","nodeType":"YulIdentifier","src":"3495:27:92"},"nodeType":"YulFunctionCall","src":"3495:31:92"}],"functionName":{"name":"allocate_memory","nodeType":"YulIdentifier","src":"3479:15:92"},"nodeType":"YulFunctionCall","src":"3479:48:92"},"variables":[{"name":"array","nodeType":"YulTypedName","src":"3470:5:92","type":""}]},{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"3547:5:92"},{"name":"_5","nodeType":"YulIdentifier","src":"3554:2:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3540:6:92"},"nodeType":"YulFunctionCall","src":"3540:17:92"},"nodeType":"YulExpressionStatement","src":"3540:17:92"},{"body":{"nodeType":"YulBlock","src":"3607:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3616:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3619:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3609:6:92"},"nodeType":"YulFunctionCall","src":"3609:12:92"},"nodeType":"YulExpressionStatement","src":"3609:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_4","nodeType":"YulIdentifier","src":"3584:2:92"},{"name":"_5","nodeType":"YulIdentifier","src":"3588:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3580:3:92"},"nodeType":"YulFunctionCall","src":"3580:11:92"},{"kind":"number","nodeType":"YulLiteral","src":"3593:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3576:3:92"},"nodeType":"YulFunctionCall","src":"3576:20:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3598:7:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3573:2:92"},"nodeType":"YulFunctionCall","src":"3573:33:92"},"nodeType":"YulIf","src":"3570:53:92"},{"expression":{"arguments":[{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"3653:5:92"},{"kind":"number","nodeType":"YulLiteral","src":"3660:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3649:3:92"},"nodeType":"YulFunctionCall","src":"3649:14:92"},{"arguments":[{"name":"_4","nodeType":"YulIdentifier","src":"3669:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"3673:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3665:3:92"},"nodeType":"YulFunctionCall","src":"3665:11:92"},{"name":"_5","nodeType":"YulIdentifier","src":"3678:2:92"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"3636:12:92"},"nodeType":"YulFunctionCall","src":"3636:45:92"},"nodeType":"YulExpressionStatement","src":"3636:45:92"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"3709:5:92"},{"name":"_5","nodeType":"YulIdentifier","src":"3716:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3705:3:92"},"nodeType":"YulFunctionCall","src":"3705:14:92"},{"kind":"number","nodeType":"YulLiteral","src":"3721:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3701:3:92"},"nodeType":"YulFunctionCall","src":"3701:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"3726:1:92","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3694:6:92"},"nodeType":"YulFunctionCall","src":"3694:34:92"},"nodeType":"YulExpressionStatement","src":"3694:34:92"},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3752:5:92"},{"kind":"number","nodeType":"YulLiteral","src":"3759:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3748:3:92"},"nodeType":"YulFunctionCall","src":"3748:14:92"},{"name":"array","nodeType":"YulIdentifier","src":"3764:5:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3741:6:92"},"nodeType":"YulFunctionCall","src":"3741:29:92"},"nodeType":"YulExpressionStatement","src":"3741:29:92"},{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"3790:3:92"},{"name":"value","nodeType":"YulIdentifier","src":"3795:5:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3783:6:92"},"nodeType":"YulFunctionCall","src":"3783:18:92"},"nodeType":"YulExpressionStatement","src":"3783:18:92"},{"nodeType":"YulAssignment","src":"3814:19:92","value":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"3825:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"3830:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3821:3:92"},"nodeType":"YulFunctionCall","src":"3821:12:92"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"3814:3:92"}]}]},"condition":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"2717:3:92"},{"name":"srcEnd","nodeType":"YulIdentifier","src":"2722:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2714:2:92"},"nodeType":"YulFunctionCall","src":"2714:15:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"2730:23:92","statements":[{"nodeType":"YulAssignment","src":"2732:19:92","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"2743:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"2748:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2739:3:92"},"nodeType":"YulFunctionCall","src":"2739:12:92"},"variableNames":[{"name":"src","nodeType":"YulIdentifier","src":"2732:3:92"}]}]},"pre":{"nodeType":"YulBlock","src":"2710:3:92","statements":[]},"src":"2706:1137:92"},{"nodeType":"YulAssignment","src":"3852:15:92","value":{"name":"dst_1","nodeType":"YulIdentifier","src":"3862:5:92"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"3852:6:92"}]},{"nodeType":"YulAssignment","src":"3876:44:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3903:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3914:4:92","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3899:3:92"},"nodeType":"YulFunctionCall","src":"3899:20:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3886:12:92"},"nodeType":"YulFunctionCall","src":"3886:34:92"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"3876:6:92"}]}]},"name":"abi_decode_tuple_t_contract$_IDAO_$10865t_uint256t_array$_t_struct$_Action_$10724_memory_ptr_$dyn_memory_ptrt_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1844:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1855:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1867:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1875:6:92","type":""},{"name":"value2","nodeType":"YulTypedName","src":"1883:6:92","type":""},{"name":"value3","nodeType":"YulTypedName","src":"1891:6:92","type":""}],"src":"1717:2209:92"},{"body":{"nodeType":"YulBlock","src":"3997:184:92","statements":[{"nodeType":"YulVariableDeclaration","src":"4007:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"4016:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"4011:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"4076:63:92","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"4101:3:92"},{"name":"i","nodeType":"YulIdentifier","src":"4106:1:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4097:3:92"},"nodeType":"YulFunctionCall","src":"4097:11:92"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"4120:3:92"},{"name":"i","nodeType":"YulIdentifier","src":"4125:1:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4116:3:92"},"nodeType":"YulFunctionCall","src":"4116:11:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4110:5:92"},"nodeType":"YulFunctionCall","src":"4110:18:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4090:6:92"},"nodeType":"YulFunctionCall","src":"4090:39:92"},"nodeType":"YulExpressionStatement","src":"4090:39:92"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"4037:1:92"},{"name":"length","nodeType":"YulIdentifier","src":"4040:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"4034:2:92"},"nodeType":"YulFunctionCall","src":"4034:13:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"4048:19:92","statements":[{"nodeType":"YulAssignment","src":"4050:15:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"4059:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"4062:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4055:3:92"},"nodeType":"YulFunctionCall","src":"4055:10:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"4050:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"4030:3:92","statements":[]},"src":"4026:113:92"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"4159:3:92"},{"name":"length","nodeType":"YulIdentifier","src":"4164:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4155:3:92"},"nodeType":"YulFunctionCall","src":"4155:16:92"},{"kind":"number","nodeType":"YulLiteral","src":"4173:1:92","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4148:6:92"},"nodeType":"YulFunctionCall","src":"4148:27:92"},"nodeType":"YulExpressionStatement","src":"4148:27:92"}]},"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"3975:3:92","type":""},{"name":"dst","nodeType":"YulTypedName","src":"3980:3:92","type":""},{"name":"length","nodeType":"YulTypedName","src":"3985:6:92","type":""}],"src":"3931:250:92"},{"body":{"nodeType":"YulBlock","src":"4235:221:92","statements":[{"nodeType":"YulVariableDeclaration","src":"4245:26:92","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4265:5:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4259:5:92"},"nodeType":"YulFunctionCall","src":"4259:12:92"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"4249:6:92","type":""}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4287:3:92"},{"name":"length","nodeType":"YulIdentifier","src":"4292:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4280:6:92"},"nodeType":"YulFunctionCall","src":"4280:19:92"},"nodeType":"YulExpressionStatement","src":"4280:19:92"},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4347:5:92"},{"kind":"number","nodeType":"YulLiteral","src":"4354:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4343:3:92"},"nodeType":"YulFunctionCall","src":"4343:16:92"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4365:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"4370:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4361:3:92"},"nodeType":"YulFunctionCall","src":"4361:14:92"},{"name":"length","nodeType":"YulIdentifier","src":"4377:6:92"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"4308:34:92"},"nodeType":"YulFunctionCall","src":"4308:76:92"},"nodeType":"YulExpressionStatement","src":"4308:76:92"},{"nodeType":"YulAssignment","src":"4393:57:92","value":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4408:3:92"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"4421:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"4429:2:92","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4417:3:92"},"nodeType":"YulFunctionCall","src":"4417:15:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4438:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"4434:3:92"},"nodeType":"YulFunctionCall","src":"4434:7:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4413:3:92"},"nodeType":"YulFunctionCall","src":"4413:29:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4404:3:92"},"nodeType":"YulFunctionCall","src":"4404:39:92"},{"kind":"number","nodeType":"YulLiteral","src":"4445:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4400:3:92"},"nodeType":"YulFunctionCall","src":"4400:50:92"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"4393:3:92"}]}]},"name":"abi_encode_bytes","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"4212:5:92","type":""},{"name":"pos","nodeType":"YulTypedName","src":"4219:3:92","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"4227:3:92","type":""}],"src":"4186:270:92"},{"body":{"nodeType":"YulBlock","src":"4658:676:92","statements":[{"nodeType":"YulVariableDeclaration","src":"4668:32:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4686:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4697:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4682:3:92"},"nodeType":"YulFunctionCall","src":"4682:18:92"},"variables":[{"name":"tail_1","nodeType":"YulTypedName","src":"4672:6:92","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4716:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4727:2:92","type":"","value":"64"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4709:6:92"},"nodeType":"YulFunctionCall","src":"4709:21:92"},"nodeType":"YulExpressionStatement","src":"4709:21:92"},{"nodeType":"YulVariableDeclaration","src":"4739:17:92","value":{"name":"tail_1","nodeType":"YulIdentifier","src":"4750:6:92"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"4743:3:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4765:27:92","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4785:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4779:5:92"},"nodeType":"YulFunctionCall","src":"4779:13:92"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"4769:6:92","type":""}]},{"expression":{"arguments":[{"name":"tail_1","nodeType":"YulIdentifier","src":"4808:6:92"},{"name":"length","nodeType":"YulIdentifier","src":"4816:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4801:6:92"},"nodeType":"YulFunctionCall","src":"4801:22:92"},"nodeType":"YulExpressionStatement","src":"4801:22:92"},{"nodeType":"YulAssignment","src":"4832:25:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4843:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4854:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4839:3:92"},"nodeType":"YulFunctionCall","src":"4839:18:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"4832:3:92"}]},{"nodeType":"YulVariableDeclaration","src":"4866:53:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4888:9:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4903:1:92","type":"","value":"5"},{"name":"length","nodeType":"YulIdentifier","src":"4906:6:92"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"4899:3:92"},"nodeType":"YulFunctionCall","src":"4899:14:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4884:3:92"},"nodeType":"YulFunctionCall","src":"4884:30:92"},{"kind":"number","nodeType":"YulLiteral","src":"4916:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4880:3:92"},"nodeType":"YulFunctionCall","src":"4880:39:92"},"variables":[{"name":"tail_2","nodeType":"YulTypedName","src":"4870:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4928:14:92","value":{"kind":"number","nodeType":"YulLiteral","src":"4938:4:92","type":"","value":"0x20"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"4932:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4951:29:92","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4969:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"4977:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4965:3:92"},"nodeType":"YulFunctionCall","src":"4965:15:92"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"4955:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4989:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"4998:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"4993:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"5057:205:92","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5078:3:92"},{"arguments":[{"arguments":[{"name":"tail_2","nodeType":"YulIdentifier","src":"5091:6:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"5099:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5087:3:92"},"nodeType":"YulFunctionCall","src":"5087:22:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5115:2:92","type":"","value":"95"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"5111:3:92"},"nodeType":"YulFunctionCall","src":"5111:7:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5083:3:92"},"nodeType":"YulFunctionCall","src":"5083:36:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5071:6:92"},"nodeType":"YulFunctionCall","src":"5071:49:92"},"nodeType":"YulExpressionStatement","src":"5071:49:92"},{"nodeType":"YulAssignment","src":"5133:49:92","value":{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"5166:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5160:5:92"},"nodeType":"YulFunctionCall","src":"5160:13:92"},{"name":"tail_2","nodeType":"YulIdentifier","src":"5175:6:92"}],"functionName":{"name":"abi_encode_bytes","nodeType":"YulIdentifier","src":"5143:16:92"},"nodeType":"YulFunctionCall","src":"5143:39:92"},"variableNames":[{"name":"tail_2","nodeType":"YulIdentifier","src":"5133:6:92"}]},{"nodeType":"YulAssignment","src":"5195:25:92","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"5209:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"5217:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5205:3:92"},"nodeType":"YulFunctionCall","src":"5205:15:92"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"5195:6:92"}]},{"nodeType":"YulAssignment","src":"5233:19:92","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5244:3:92"},{"name":"_1","nodeType":"YulIdentifier","src":"5249:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5240:3:92"},"nodeType":"YulFunctionCall","src":"5240:12:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"5233:3:92"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"5019:1:92"},{"name":"length","nodeType":"YulIdentifier","src":"5022:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"5016:2:92"},"nodeType":"YulFunctionCall","src":"5016:13:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"5030:18:92","statements":[{"nodeType":"YulAssignment","src":"5032:14:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"5041:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"5044:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5037:3:92"},"nodeType":"YulFunctionCall","src":"5037:9:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"5032:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"5012:3:92","statements":[]},"src":"5008:254:92"},{"nodeType":"YulAssignment","src":"5271:14:92","value":{"name":"tail_2","nodeType":"YulIdentifier","src":"5279:6:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5271:4:92"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5305:9:92"},{"name":"_1","nodeType":"YulIdentifier","src":"5316:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5301:3:92"},"nodeType":"YulFunctionCall","src":"5301:18:92"},{"name":"value1","nodeType":"YulIdentifier","src":"5321:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5294:6:92"},"nodeType":"YulFunctionCall","src":"5294:34:92"},"nodeType":"YulExpressionStatement","src":"5294:34:92"}]},"name":"abi_encode_tuple_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_t_uint256__to_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4619:9:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"4630:6:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"4638:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4649:4:92","type":""}],"src":"4461:873:92"},{"body":{"nodeType":"YulBlock","src":"5387:123:92","statements":[{"nodeType":"YulAssignment","src":"5397:29:92","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"5419:6:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"5406:12:92"},"nodeType":"YulFunctionCall","src":"5406:20:92"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"5397:5:92"}]},{"body":{"nodeType":"YulBlock","src":"5488:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5497:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5500:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5490:6:92"},"nodeType":"YulFunctionCall","src":"5490:12:92"},"nodeType":"YulExpressionStatement","src":"5490:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5448:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5459:5:92"},{"kind":"number","nodeType":"YulLiteral","src":"5466:18:92","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5455:3:92"},"nodeType":"YulFunctionCall","src":"5455:30:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"5445:2:92"},"nodeType":"YulFunctionCall","src":"5445:41:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"5438:6:92"},"nodeType":"YulFunctionCall","src":"5438:49:92"},"nodeType":"YulIf","src":"5435:69:92"}]},"name":"abi_decode_uint64","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"5366:6:92","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"5377:5:92","type":""}],"src":"5339:171:92"},{"body":{"nodeType":"YulBlock","src":"5614:283:92","statements":[{"body":{"nodeType":"YulBlock","src":"5663:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5672:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5675:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5665:6:92"},"nodeType":"YulFunctionCall","src":"5665:12:92"},"nodeType":"YulExpressionStatement","src":"5665:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"5642:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"5650:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5638:3:92"},"nodeType":"YulFunctionCall","src":"5638:17:92"},{"name":"end","nodeType":"YulIdentifier","src":"5657:3:92"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"5634:3:92"},"nodeType":"YulFunctionCall","src":"5634:27:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"5627:6:92"},"nodeType":"YulFunctionCall","src":"5627:35:92"},"nodeType":"YulIf","src":"5624:55:92"},{"nodeType":"YulAssignment","src":"5688:30:92","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"5711:6:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"5698:12:92"},"nodeType":"YulFunctionCall","src":"5698:20:92"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"5688:6:92"}]},{"body":{"nodeType":"YulBlock","src":"5761:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5770:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5773:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5763:6:92"},"nodeType":"YulFunctionCall","src":"5763:12:92"},"nodeType":"YulExpressionStatement","src":"5763:12:92"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"5733:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"5741:18:92","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5730:2:92"},"nodeType":"YulFunctionCall","src":"5730:30:92"},"nodeType":"YulIf","src":"5727:50:92"},{"nodeType":"YulAssignment","src":"5786:29:92","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"5802:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"5810:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5798:3:92"},"nodeType":"YulFunctionCall","src":"5798:17:92"},"variableNames":[{"name":"arrayPos","nodeType":"YulIdentifier","src":"5786:8:92"}]},{"body":{"nodeType":"YulBlock","src":"5875:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5884:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5887:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5877:6:92"},"nodeType":"YulFunctionCall","src":"5877:12:92"},"nodeType":"YulExpressionStatement","src":"5877:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"5838:6:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5850:1:92","type":"","value":"5"},{"name":"length","nodeType":"YulIdentifier","src":"5853:6:92"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"5846:3:92"},"nodeType":"YulFunctionCall","src":"5846:14:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5834:3:92"},"nodeType":"YulFunctionCall","src":"5834:27:92"},{"kind":"number","nodeType":"YulLiteral","src":"5863:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5830:3:92"},"nodeType":"YulFunctionCall","src":"5830:38:92"},{"name":"end","nodeType":"YulIdentifier","src":"5870:3:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5827:2:92"},"nodeType":"YulFunctionCall","src":"5827:47:92"},"nodeType":"YulIf","src":"5824:67:92"}]},"name":"abi_decode_array_struct_Action_calldata_dyn_calldata","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"5577:6:92","type":""},{"name":"end","nodeType":"YulTypedName","src":"5585:3:92","type":""}],"returnVariables":[{"name":"arrayPos","nodeType":"YulTypedName","src":"5593:8:92","type":""},{"name":"length","nodeType":"YulTypedName","src":"5603:6:92","type":""}],"src":"5515:382:92"},{"body":{"nodeType":"YulBlock","src":"6136:1070:92","statements":[{"body":{"nodeType":"YulBlock","src":"6183:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6192:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6195:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6185:6:92"},"nodeType":"YulFunctionCall","src":"6185:12:92"},"nodeType":"YulExpressionStatement","src":"6185:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"6157:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"6166:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6153:3:92"},"nodeType":"YulFunctionCall","src":"6153:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"6178:3:92","type":"","value":"192"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6149:3:92"},"nodeType":"YulFunctionCall","src":"6149:33:92"},"nodeType":"YulIf","src":"6146:53:92"},{"nodeType":"YulVariableDeclaration","src":"6208:36:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6234:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6221:12:92"},"nodeType":"YulFunctionCall","src":"6221:23:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"6212:5:92","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6284:5:92"}],"functionName":{"name":"validator_revert_contract_IDAO","nodeType":"YulIdentifier","src":"6253:30:92"},"nodeType":"YulFunctionCall","src":"6253:37:92"},"nodeType":"YulExpressionStatement","src":"6253:37:92"},{"nodeType":"YulAssignment","src":"6299:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"6309:5:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"6299:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"6323:46:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6354:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6365:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6350:3:92"},"nodeType":"YulFunctionCall","src":"6350:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6337:12:92"},"nodeType":"YulFunctionCall","src":"6337:32:92"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"6327:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"6378:28:92","value":{"kind":"number","nodeType":"YulLiteral","src":"6388:18:92","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"6382:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"6433:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6442:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6445:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6435:6:92"},"nodeType":"YulFunctionCall","src":"6435:12:92"},"nodeType":"YulExpressionStatement","src":"6435:12:92"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"6421:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"6429:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6418:2:92"},"nodeType":"YulFunctionCall","src":"6418:14:92"},"nodeType":"YulIf","src":"6415:34:92"},{"nodeType":"YulVariableDeclaration","src":"6458:32:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6472:9:92"},{"name":"offset","nodeType":"YulIdentifier","src":"6483:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6468:3:92"},"nodeType":"YulFunctionCall","src":"6468:22:92"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"6462:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"6538:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6547:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6550:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6540:6:92"},"nodeType":"YulFunctionCall","src":"6540:12:92"},"nodeType":"YulExpressionStatement","src":"6540:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"6517:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"6521:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6513:3:92"},"nodeType":"YulFunctionCall","src":"6513:13:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"6528:7:92"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6509:3:92"},"nodeType":"YulFunctionCall","src":"6509:27:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"6502:6:92"},"nodeType":"YulFunctionCall","src":"6502:35:92"},"nodeType":"YulIf","src":"6499:55:92"},{"nodeType":"YulVariableDeclaration","src":"6563:30:92","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"6590:2:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6577:12:92"},"nodeType":"YulFunctionCall","src":"6577:16:92"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"6567:6:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"6620:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6629:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6632:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6622:6:92"},"nodeType":"YulFunctionCall","src":"6622:12:92"},"nodeType":"YulExpressionStatement","src":"6622:12:92"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"6608:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"6616:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6605:2:92"},"nodeType":"YulFunctionCall","src":"6605:14:92"},"nodeType":"YulIf","src":"6602:34:92"},{"body":{"nodeType":"YulBlock","src":"6686:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6695:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6698:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6688:6:92"},"nodeType":"YulFunctionCall","src":"6688:12:92"},"nodeType":"YulExpressionStatement","src":"6688:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"6659:2:92"},{"name":"length","nodeType":"YulIdentifier","src":"6663:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6655:3:92"},"nodeType":"YulFunctionCall","src":"6655:15:92"},{"kind":"number","nodeType":"YulLiteral","src":"6672:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6651:3:92"},"nodeType":"YulFunctionCall","src":"6651:24:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"6677:7:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6648:2:92"},"nodeType":"YulFunctionCall","src":"6648:37:92"},"nodeType":"YulIf","src":"6645:57:92"},{"nodeType":"YulAssignment","src":"6711:21:92","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"6725:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"6729:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6721:3:92"},"nodeType":"YulFunctionCall","src":"6721:11:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"6711:6:92"}]},{"nodeType":"YulAssignment","src":"6741:16:92","value":{"name":"length","nodeType":"YulIdentifier","src":"6751:6:92"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"6741:6:92"}]},{"nodeType":"YulAssignment","src":"6766:47:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6798:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6809:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6794:3:92"},"nodeType":"YulFunctionCall","src":"6794:18:92"}],"functionName":{"name":"abi_decode_uint64","nodeType":"YulIdentifier","src":"6776:17:92"},"nodeType":"YulFunctionCall","src":"6776:37:92"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"6766:6:92"}]},{"nodeType":"YulAssignment","src":"6822:47:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6854:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6865:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6850:3:92"},"nodeType":"YulFunctionCall","src":"6850:18:92"}],"functionName":{"name":"abi_decode_uint64","nodeType":"YulIdentifier","src":"6832:17:92"},"nodeType":"YulFunctionCall","src":"6832:37:92"},"variableNames":[{"name":"value4","nodeType":"YulIdentifier","src":"6822:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"6878:49:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6911:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6922:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6907:3:92"},"nodeType":"YulFunctionCall","src":"6907:19:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6894:12:92"},"nodeType":"YulFunctionCall","src":"6894:33:92"},"variables":[{"name":"offset_1","nodeType":"YulTypedName","src":"6882:8:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"6956:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6965:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6968:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6958:6:92"},"nodeType":"YulFunctionCall","src":"6958:12:92"},"nodeType":"YulExpressionStatement","src":"6958:12:92"}]},"condition":{"arguments":[{"name":"offset_1","nodeType":"YulIdentifier","src":"6942:8:92"},{"name":"_1","nodeType":"YulIdentifier","src":"6952:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6939:2:92"},"nodeType":"YulFunctionCall","src":"6939:16:92"},"nodeType":"YulIf","src":"6936:36:92"},{"nodeType":"YulVariableDeclaration","src":"6981:113:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7064:9:92"},{"name":"offset_1","nodeType":"YulIdentifier","src":"7075:8:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7060:3:92"},"nodeType":"YulFunctionCall","src":"7060:24:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"7086:7:92"}],"functionName":{"name":"abi_decode_array_struct_Action_calldata_dyn_calldata","nodeType":"YulIdentifier","src":"7007:52:92"},"nodeType":"YulFunctionCall","src":"7007:87:92"},"variables":[{"name":"value5_1","nodeType":"YulTypedName","src":"6985:8:92","type":""},{"name":"value6_1","nodeType":"YulTypedName","src":"6995:8:92","type":""}]},{"nodeType":"YulAssignment","src":"7103:18:92","value":{"name":"value5_1","nodeType":"YulIdentifier","src":"7113:8:92"},"variableNames":[{"name":"value5","nodeType":"YulIdentifier","src":"7103:6:92"}]},{"nodeType":"YulAssignment","src":"7130:18:92","value":{"name":"value6_1","nodeType":"YulIdentifier","src":"7140:8:92"},"variableNames":[{"name":"value6","nodeType":"YulIdentifier","src":"7130:6:92"}]},{"nodeType":"YulAssignment","src":"7157:43:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7184:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7195:3:92","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7180:3:92"},"nodeType":"YulFunctionCall","src":"7180:19:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"7167:12:92"},"nodeType":"YulFunctionCall","src":"7167:33:92"},"variableNames":[{"name":"value7","nodeType":"YulIdentifier","src":"7157:6:92"}]}]},"name":"abi_decode_tuple_t_addresst_bytes_calldata_ptrt_uint64t_uint64t_array$_t_struct$_Action_$10724_calldata_ptr_$dyn_calldata_ptrt_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6046:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"6057:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"6069:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"6077:6:92","type":""},{"name":"value2","nodeType":"YulTypedName","src":"6085:6:92","type":""},{"name":"value3","nodeType":"YulTypedName","src":"6093:6:92","type":""},{"name":"value4","nodeType":"YulTypedName","src":"6101:6:92","type":""},{"name":"value5","nodeType":"YulTypedName","src":"6109:6:92","type":""},{"name":"value6","nodeType":"YulTypedName","src":"6117:6:92","type":""},{"name":"value7","nodeType":"YulTypedName","src":"6125:6:92","type":""}],"src":"5902:1304:92"},{"body":{"nodeType":"YulBlock","src":"7312:76:92","statements":[{"nodeType":"YulAssignment","src":"7322:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7334:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7345:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7330:3:92"},"nodeType":"YulFunctionCall","src":"7330:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7322:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7364:9:92"},{"name":"value0","nodeType":"YulIdentifier","src":"7375:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7357:6:92"},"nodeType":"YulFunctionCall","src":"7357:25:92"},"nodeType":"YulExpressionStatement","src":"7357:25:92"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7281:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"7292:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7303:4:92","type":""}],"src":"7211:177:92"},{"body":{"nodeType":"YulBlock","src":"7650:1048:92","statements":[{"nodeType":"YulVariableDeclaration","src":"7660:12:92","value":{"kind":"number","nodeType":"YulLiteral","src":"7670:2:92","type":"","value":"96"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"7664:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"7681:32:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7699:9:92"},{"name":"_1","nodeType":"YulIdentifier","src":"7710:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7695:3:92"},"nodeType":"YulFunctionCall","src":"7695:18:92"},"variables":[{"name":"tail_1","nodeType":"YulTypedName","src":"7685:6:92","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7729:9:92"},{"name":"value0","nodeType":"YulIdentifier","src":"7740:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7722:6:92"},"nodeType":"YulFunctionCall","src":"7722:25:92"},"nodeType":"YulExpressionStatement","src":"7722:25:92"},{"nodeType":"YulVariableDeclaration","src":"7756:12:92","value":{"kind":"number","nodeType":"YulLiteral","src":"7766:2:92","type":"","value":"32"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"7760:2:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7788:9:92"},{"name":"_2","nodeType":"YulIdentifier","src":"7799:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7784:3:92"},"nodeType":"YulFunctionCall","src":"7784:18:92"},{"name":"_1","nodeType":"YulIdentifier","src":"7804:2:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7777:6:92"},"nodeType":"YulFunctionCall","src":"7777:30:92"},"nodeType":"YulExpressionStatement","src":"7777:30:92"},{"nodeType":"YulVariableDeclaration","src":"7816:17:92","value":{"name":"tail_1","nodeType":"YulIdentifier","src":"7827:6:92"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"7820:3:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"7842:27:92","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"7862:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"7856:5:92"},"nodeType":"YulFunctionCall","src":"7856:13:92"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"7846:6:92","type":""}]},{"expression":{"arguments":[{"name":"tail_1","nodeType":"YulIdentifier","src":"7885:6:92"},{"name":"length","nodeType":"YulIdentifier","src":"7893:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7878:6:92"},"nodeType":"YulFunctionCall","src":"7878:22:92"},"nodeType":"YulExpressionStatement","src":"7878:22:92"},{"nodeType":"YulAssignment","src":"7909:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7920:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7931:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7916:3:92"},"nodeType":"YulFunctionCall","src":"7916:19:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"7909:3:92"}]},{"nodeType":"YulVariableDeclaration","src":"7944:54:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7966:9:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7981:1:92","type":"","value":"5"},{"name":"length","nodeType":"YulIdentifier","src":"7984:6:92"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"7977:3:92"},"nodeType":"YulFunctionCall","src":"7977:14:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7962:3:92"},"nodeType":"YulFunctionCall","src":"7962:30:92"},{"kind":"number","nodeType":"YulLiteral","src":"7994:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7958:3:92"},"nodeType":"YulFunctionCall","src":"7958:40:92"},"variables":[{"name":"tail_2","nodeType":"YulTypedName","src":"7948:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"8007:29:92","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"8025:6:92"},{"name":"_2","nodeType":"YulIdentifier","src":"8033:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8021:3:92"},"nodeType":"YulFunctionCall","src":"8021:15:92"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"8011:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"8045:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"8054:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"8049:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"8113:511:92","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"8134:3:92"},{"arguments":[{"arguments":[{"name":"tail_2","nodeType":"YulIdentifier","src":"8147:6:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"8155:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"8143:3:92"},"nodeType":"YulFunctionCall","src":"8143:22:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8171:3:92","type":"","value":"127"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"8167:3:92"},"nodeType":"YulFunctionCall","src":"8167:8:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8139:3:92"},"nodeType":"YulFunctionCall","src":"8139:37:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8127:6:92"},"nodeType":"YulFunctionCall","src":"8127:50:92"},"nodeType":"YulExpressionStatement","src":"8127:50:92"},{"nodeType":"YulVariableDeclaration","src":"8190:23:92","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"8206:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"8200:5:92"},"nodeType":"YulFunctionCall","src":"8200:13:92"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"8194:2:92","type":""}]},{"expression":{"arguments":[{"name":"tail_2","nodeType":"YulIdentifier","src":"8233:6:92"},{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"8251:2:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"8245:5:92"},"nodeType":"YulFunctionCall","src":"8245:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8256:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8241:3:92"},"nodeType":"YulFunctionCall","src":"8241:58:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8226:6:92"},"nodeType":"YulFunctionCall","src":"8226:74:92"},"nodeType":"YulExpressionStatement","src":"8226:74:92"},{"expression":{"arguments":[{"arguments":[{"name":"tail_2","nodeType":"YulIdentifier","src":"8324:6:92"},{"name":"_2","nodeType":"YulIdentifier","src":"8332:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8320:3:92"},"nodeType":"YulFunctionCall","src":"8320:15:92"},{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"8347:2:92"},{"name":"_2","nodeType":"YulIdentifier","src":"8351:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8343:3:92"},"nodeType":"YulFunctionCall","src":"8343:11:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"8337:5:92"},"nodeType":"YulFunctionCall","src":"8337:18:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8313:6:92"},"nodeType":"YulFunctionCall","src":"8313:43:92"},"nodeType":"YulExpressionStatement","src":"8313:43:92"},{"nodeType":"YulVariableDeclaration","src":"8369:14:92","value":{"kind":"number","nodeType":"YulLiteral","src":"8379:4:92","type":"","value":"0x40"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"8373:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"8396:38:92","value":{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"8426:2:92"},{"name":"_4","nodeType":"YulIdentifier","src":"8430:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8422:3:92"},"nodeType":"YulFunctionCall","src":"8422:11:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"8416:5:92"},"nodeType":"YulFunctionCall","src":"8416:18:92"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"8400:12:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"tail_2","nodeType":"YulIdentifier","src":"8458:6:92"},{"name":"_4","nodeType":"YulIdentifier","src":"8466:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8454:3:92"},"nodeType":"YulFunctionCall","src":"8454:15:92"},{"name":"_1","nodeType":"YulIdentifier","src":"8471:2:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8447:6:92"},"nodeType":"YulFunctionCall","src":"8447:27:92"},"nodeType":"YulExpressionStatement","src":"8447:27:92"},{"nodeType":"YulAssignment","src":"8487:57:92","value":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"8514:12:92"},{"arguments":[{"name":"tail_2","nodeType":"YulIdentifier","src":"8532:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"8540:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8528:3:92"},"nodeType":"YulFunctionCall","src":"8528:15:92"}],"functionName":{"name":"abi_encode_bytes","nodeType":"YulIdentifier","src":"8497:16:92"},"nodeType":"YulFunctionCall","src":"8497:47:92"},"variableNames":[{"name":"tail_2","nodeType":"YulIdentifier","src":"8487:6:92"}]},{"nodeType":"YulAssignment","src":"8557:25:92","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"8571:6:92"},{"name":"_2","nodeType":"YulIdentifier","src":"8579:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8567:3:92"},"nodeType":"YulFunctionCall","src":"8567:15:92"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"8557:6:92"}]},{"nodeType":"YulAssignment","src":"8595:19:92","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"8606:3:92"},{"name":"_2","nodeType":"YulIdentifier","src":"8611:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8602:3:92"},"nodeType":"YulFunctionCall","src":"8602:12:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"8595:3:92"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"8075:1:92"},{"name":"length","nodeType":"YulIdentifier","src":"8078:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"8072:2:92"},"nodeType":"YulFunctionCall","src":"8072:13:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"8086:18:92","statements":[{"nodeType":"YulAssignment","src":"8088:14:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"8097:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"8100:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8093:3:92"},"nodeType":"YulFunctionCall","src":"8093:9:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"8088:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"8068:3:92","statements":[]},"src":"8064:560:92"},{"nodeType":"YulAssignment","src":"8633:14:92","value":{"name":"tail_2","nodeType":"YulIdentifier","src":"8641:6:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"8633:4:92"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8667:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8678:4:92","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8663:3:92"},"nodeType":"YulFunctionCall","src":"8663:20:92"},{"name":"value2","nodeType":"YulIdentifier","src":"8685:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8656:6:92"},"nodeType":"YulFunctionCall","src":"8656:36:92"},"nodeType":"YulExpressionStatement","src":"8656:36:92"}]},"name":"abi_encode_tuple_t_bytes32_t_array$_t_struct$_Action_$10724_memory_ptr_$dyn_memory_ptr_t_uint256__to_t_bytes32_t_array$_t_struct$_Action_$10724_memory_ptr_$dyn_memory_ptr_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7603:9:92","type":""},{"name":"value2","nodeType":"YulTypedName","src":"7614:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"7622:6:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"7630:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7641:4:92","type":""}],"src":"7393:1305:92"},{"body":{"nodeType":"YulBlock","src":"8835:1571:92","statements":[{"nodeType":"YulVariableDeclaration","src":"8845:12:92","value":{"kind":"number","nodeType":"YulLiteral","src":"8855:2:92","type":"","value":"64"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"8849:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"8902:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8911:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8914:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8904:6:92"},"nodeType":"YulFunctionCall","src":"8904:12:92"},"nodeType":"YulExpressionStatement","src":"8904:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"8877:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"8886:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"8873:3:92"},"nodeType":"YulFunctionCall","src":"8873:23:92"},{"name":"_1","nodeType":"YulIdentifier","src":"8898:2:92"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"8869:3:92"},"nodeType":"YulFunctionCall","src":"8869:32:92"},"nodeType":"YulIf","src":"8866:52:92"},{"nodeType":"YulVariableDeclaration","src":"8927:30:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8947:9:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"8941:5:92"},"nodeType":"YulFunctionCall","src":"8941:16:92"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"8931:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"8966:28:92","value":{"kind":"number","nodeType":"YulLiteral","src":"8976:18:92","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"8970:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"9021:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9030:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"9033:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9023:6:92"},"nodeType":"YulFunctionCall","src":"9023:12:92"},"nodeType":"YulExpressionStatement","src":"9023:12:92"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"9009:6:92"},{"name":"_2","nodeType":"YulIdentifier","src":"9017:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"9006:2:92"},"nodeType":"YulFunctionCall","src":"9006:14:92"},"nodeType":"YulIf","src":"9003:34:92"},{"nodeType":"YulVariableDeclaration","src":"9046:32:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9060:9:92"},{"name":"offset","nodeType":"YulIdentifier","src":"9071:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9056:3:92"},"nodeType":"YulFunctionCall","src":"9056:22:92"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"9050:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"9126:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9135:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"9138:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9128:6:92"},"nodeType":"YulFunctionCall","src":"9128:12:92"},"nodeType":"YulExpressionStatement","src":"9128:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"9105:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"9109:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9101:3:92"},"nodeType":"YulFunctionCall","src":"9101:13:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"9116:7:92"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"9097:3:92"},"nodeType":"YulFunctionCall","src":"9097:27:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"9090:6:92"},"nodeType":"YulFunctionCall","src":"9090:35:92"},"nodeType":"YulIf","src":"9087:55:92"},{"nodeType":"YulVariableDeclaration","src":"9151:19:92","value":{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"9167:2:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"9161:5:92"},"nodeType":"YulFunctionCall","src":"9161:9:92"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"9155:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"9179:14:92","value":{"kind":"number","nodeType":"YulLiteral","src":"9189:4:92","type":"","value":"0x20"},"variables":[{"name":"_5","nodeType":"YulTypedName","src":"9183:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"9202:77:92","value":{"arguments":[{"arguments":[{"name":"_4","nodeType":"YulIdentifier","src":"9275:2:92"}],"functionName":{"name":"array_allocation_size_array_struct_Action_dyn","nodeType":"YulIdentifier","src":"9229:45:92"},"nodeType":"YulFunctionCall","src":"9229:49:92"}],"functionName":{"name":"allocate_memory","nodeType":"YulIdentifier","src":"9213:15:92"},"nodeType":"YulFunctionCall","src":"9213:66:92"},"variables":[{"name":"dst","nodeType":"YulTypedName","src":"9206:3:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"9288:16:92","value":{"name":"dst","nodeType":"YulIdentifier","src":"9301:3:92"},"variables":[{"name":"dst_1","nodeType":"YulTypedName","src":"9292:5:92","type":""}]},{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"9320:3:92"},{"name":"_4","nodeType":"YulIdentifier","src":"9325:2:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9313:6:92"},"nodeType":"YulFunctionCall","src":"9313:15:92"},"nodeType":"YulExpressionStatement","src":"9313:15:92"},{"nodeType":"YulAssignment","src":"9337:19:92","value":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"9348:3:92"},{"name":"_5","nodeType":"YulIdentifier","src":"9353:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9344:3:92"},"nodeType":"YulFunctionCall","src":"9344:12:92"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"9337:3:92"}]},{"nodeType":"YulVariableDeclaration","src":"9365:42:92","value":{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"9387:2:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9395:1:92","type":"","value":"5"},{"name":"_4","nodeType":"YulIdentifier","src":"9398:2:92"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"9391:3:92"},"nodeType":"YulFunctionCall","src":"9391:10:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9383:3:92"},"nodeType":"YulFunctionCall","src":"9383:19:92"},{"name":"_5","nodeType":"YulIdentifier","src":"9404:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9379:3:92"},"nodeType":"YulFunctionCall","src":"9379:28:92"},"variables":[{"name":"srcEnd","nodeType":"YulTypedName","src":"9369:6:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"9439:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9448:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"9451:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9441:6:92"},"nodeType":"YulFunctionCall","src":"9441:12:92"},"nodeType":"YulExpressionStatement","src":"9441:12:92"}]},"condition":{"arguments":[{"name":"srcEnd","nodeType":"YulIdentifier","src":"9422:6:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"9430:7:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"9419:2:92"},"nodeType":"YulFunctionCall","src":"9419:19:92"},"nodeType":"YulIf","src":"9416:39:92"},{"nodeType":"YulVariableDeclaration","src":"9464:22:92","value":{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"9479:2:92"},{"name":"_5","nodeType":"YulIdentifier","src":"9483:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9475:3:92"},"nodeType":"YulFunctionCall","src":"9475:11:92"},"variables":[{"name":"src","nodeType":"YulTypedName","src":"9468:3:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"9551:781:92","statements":[{"nodeType":"YulVariableDeclaration","src":"9565:29:92","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"9590:3:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"9584:5:92"},"nodeType":"YulFunctionCall","src":"9584:10:92"},"variables":[{"name":"innerOffset","nodeType":"YulTypedName","src":"9569:11:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"9642:74:92","statements":[{"nodeType":"YulVariableDeclaration","src":"9660:11:92","value":{"kind":"number","nodeType":"YulLiteral","src":"9670:1:92","type":"","value":"0"},"variables":[{"name":"_6","nodeType":"YulTypedName","src":"9664:2:92","type":""}]},{"expression":{"arguments":[{"name":"_6","nodeType":"YulIdentifier","src":"9695:2:92"},{"name":"_6","nodeType":"YulIdentifier","src":"9699:2:92"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9688:6:92"},"nodeType":"YulFunctionCall","src":"9688:14:92"},"nodeType":"YulExpressionStatement","src":"9688:14:92"}]},"condition":{"arguments":[{"name":"innerOffset","nodeType":"YulIdentifier","src":"9613:11:92"},{"name":"_2","nodeType":"YulIdentifier","src":"9626:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"9610:2:92"},"nodeType":"YulFunctionCall","src":"9610:19:92"},"nodeType":"YulIf","src":"9607:109:92"},{"nodeType":"YulVariableDeclaration","src":"9729:30:92","value":{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"9743:2:92"},{"name":"innerOffset","nodeType":"YulIdentifier","src":"9747:11:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9739:3:92"},"nodeType":"YulFunctionCall","src":"9739:20:92"},"variables":[{"name":"_7","nodeType":"YulTypedName","src":"9733:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"9821:74:92","statements":[{"nodeType":"YulVariableDeclaration","src":"9839:11:92","value":{"kind":"number","nodeType":"YulLiteral","src":"9849:1:92","type":"","value":"0"},"variables":[{"name":"_8","nodeType":"YulTypedName","src":"9843:2:92","type":""}]},{"expression":{"arguments":[{"name":"_8","nodeType":"YulIdentifier","src":"9874:2:92"},{"name":"_8","nodeType":"YulIdentifier","src":"9878:2:92"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9867:6:92"},"nodeType":"YulFunctionCall","src":"9867:14:92"},"nodeType":"YulExpressionStatement","src":"9867:14:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_7","nodeType":"YulIdentifier","src":"9790:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"9794:2:92","type":"","value":"63"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9786:3:92"},"nodeType":"YulFunctionCall","src":"9786:11:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"9799:7:92"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"9782:3:92"},"nodeType":"YulFunctionCall","src":"9782:25:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"9775:6:92"},"nodeType":"YulFunctionCall","src":"9775:33:92"},"nodeType":"YulIf","src":"9772:123:92"},{"nodeType":"YulVariableDeclaration","src":"9908:28:92","value":{"arguments":[{"arguments":[{"name":"_7","nodeType":"YulIdentifier","src":"9928:2:92"},{"name":"_5","nodeType":"YulIdentifier","src":"9932:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9924:3:92"},"nodeType":"YulFunctionCall","src":"9924:11:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"9918:5:92"},"nodeType":"YulFunctionCall","src":"9918:18:92"},"variables":[{"name":"_9","nodeType":"YulTypedName","src":"9912:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"9949:61:92","value":{"arguments":[{"arguments":[{"name":"_9","nodeType":"YulIdentifier","src":"10006:2:92"}],"functionName":{"name":"array_allocation_size_bytes","nodeType":"YulIdentifier","src":"9978:27:92"},"nodeType":"YulFunctionCall","src":"9978:31:92"}],"functionName":{"name":"allocate_memory","nodeType":"YulIdentifier","src":"9962:15:92"},"nodeType":"YulFunctionCall","src":"9962:48:92"},"variables":[{"name":"array","nodeType":"YulTypedName","src":"9953:5:92","type":""}]},{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"10030:5:92"},{"name":"_9","nodeType":"YulIdentifier","src":"10037:2:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10023:6:92"},"nodeType":"YulFunctionCall","src":"10023:17:92"},"nodeType":"YulExpressionStatement","src":"10023:17:92"},{"body":{"nodeType":"YulBlock","src":"10102:77:92","statements":[{"nodeType":"YulVariableDeclaration","src":"10120:12:92","value":{"kind":"number","nodeType":"YulLiteral","src":"10131:1:92","type":"","value":"0"},"variables":[{"name":"_10","nodeType":"YulTypedName","src":"10124:3:92","type":""}]},{"expression":{"arguments":[{"name":"_10","nodeType":"YulIdentifier","src":"10156:3:92"},{"name":"_10","nodeType":"YulIdentifier","src":"10161:3:92"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"10149:6:92"},"nodeType":"YulFunctionCall","src":"10149:16:92"},"nodeType":"YulExpressionStatement","src":"10149:16:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_7","nodeType":"YulIdentifier","src":"10067:2:92"},{"name":"_9","nodeType":"YulIdentifier","src":"10071:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10063:3:92"},"nodeType":"YulFunctionCall","src":"10063:11:92"},{"name":"_1","nodeType":"YulIdentifier","src":"10076:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10059:3:92"},"nodeType":"YulFunctionCall","src":"10059:20:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"10081:7:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"10056:2:92"},"nodeType":"YulFunctionCall","src":"10056:33:92"},"nodeType":"YulIf","src":"10053:126:92"},{"expression":{"arguments":[{"arguments":[{"name":"_7","nodeType":"YulIdentifier","src":"10231:2:92"},{"name":"_1","nodeType":"YulIdentifier","src":"10235:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10227:3:92"},"nodeType":"YulFunctionCall","src":"10227:11:92"},{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"10244:5:92"},{"name":"_5","nodeType":"YulIdentifier","src":"10251:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10240:3:92"},"nodeType":"YulFunctionCall","src":"10240:14:92"},{"name":"_9","nodeType":"YulIdentifier","src":"10256:2:92"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"10192:34:92"},"nodeType":"YulFunctionCall","src":"10192:67:92"},"nodeType":"YulExpressionStatement","src":"10192:67:92"},{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"10279:3:92"},{"name":"array","nodeType":"YulIdentifier","src":"10284:5:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10272:6:92"},"nodeType":"YulFunctionCall","src":"10272:18:92"},"nodeType":"YulExpressionStatement","src":"10272:18:92"},{"nodeType":"YulAssignment","src":"10303:19:92","value":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"10314:3:92"},{"name":"_5","nodeType":"YulIdentifier","src":"10319:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10310:3:92"},"nodeType":"YulFunctionCall","src":"10310:12:92"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"10303:3:92"}]}]},"condition":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"9506:3:92"},{"name":"srcEnd","nodeType":"YulIdentifier","src":"9511:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"9503:2:92"},"nodeType":"YulFunctionCall","src":"9503:15:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"9519:23:92","statements":[{"nodeType":"YulAssignment","src":"9521:19:92","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"9532:3:92"},{"name":"_5","nodeType":"YulIdentifier","src":"9537:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9528:3:92"},"nodeType":"YulFunctionCall","src":"9528:12:92"},"variableNames":[{"name":"src","nodeType":"YulIdentifier","src":"9521:3:92"}]}]},"pre":{"nodeType":"YulBlock","src":"9499:3:92","statements":[]},"src":"9495:837:92"},{"nodeType":"YulAssignment","src":"10341:15:92","value":{"name":"dst_1","nodeType":"YulIdentifier","src":"10351:5:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"10341:6:92"}]},{"nodeType":"YulAssignment","src":"10365:35:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10385:9:92"},{"name":"_5","nodeType":"YulIdentifier","src":"10396:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10381:3:92"},"nodeType":"YulFunctionCall","src":"10381:18:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"10375:5:92"},"nodeType":"YulFunctionCall","src":"10375:25:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"10365:6:92"}]}]},"name":"abi_decode_tuple_t_array$_t_bytes_memory_ptr_$dyn_memory_ptrt_uint256_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8793:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"8804:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"8816:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"8824:6:92","type":""}],"src":"8703:1703:92"},{"body":{"nodeType":"YulBlock","src":"10477:200:92","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"10494:3:92"},{"name":"length","nodeType":"YulIdentifier","src":"10499:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10487:6:92"},"nodeType":"YulFunctionCall","src":"10487:19:92"},"nodeType":"YulExpressionStatement","src":"10487:19:92"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"10532:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"10537:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10528:3:92"},"nodeType":"YulFunctionCall","src":"10528:14:92"},{"name":"start","nodeType":"YulIdentifier","src":"10544:5:92"},{"name":"length","nodeType":"YulIdentifier","src":"10551:6:92"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"10515:12:92"},"nodeType":"YulFunctionCall","src":"10515:43:92"},"nodeType":"YulExpressionStatement","src":"10515:43:92"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"10582:3:92"},{"name":"length","nodeType":"YulIdentifier","src":"10587:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10578:3:92"},"nodeType":"YulFunctionCall","src":"10578:16:92"},{"kind":"number","nodeType":"YulLiteral","src":"10596:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10574:3:92"},"nodeType":"YulFunctionCall","src":"10574:27:92"},{"kind":"number","nodeType":"YulLiteral","src":"10603:1:92","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10567:6:92"},"nodeType":"YulFunctionCall","src":"10567:38:92"},"nodeType":"YulExpressionStatement","src":"10567:38:92"},{"nodeType":"YulAssignment","src":"10614:57:92","value":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"10629:3:92"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"10642:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"10650:2:92","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10638:3:92"},"nodeType":"YulFunctionCall","src":"10638:15:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10659:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"10655:3:92"},"nodeType":"YulFunctionCall","src":"10655:7:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"10634:3:92"},"nodeType":"YulFunctionCall","src":"10634:29:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10625:3:92"},"nodeType":"YulFunctionCall","src":"10625:39:92"},{"kind":"number","nodeType":"YulLiteral","src":"10666:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10621:3:92"},"nodeType":"YulFunctionCall","src":"10621:50:92"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"10614:3:92"}]}]},"name":"abi_encode_bytes_calldata","nodeType":"YulFunctionDefinition","parameters":[{"name":"start","nodeType":"YulTypedName","src":"10446:5:92","type":""},{"name":"length","nodeType":"YulTypedName","src":"10453:6:92","type":""},{"name":"pos","nodeType":"YulTypedName","src":"10461:3:92","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"10469:3:92","type":""}],"src":"10411:266:92"},{"body":{"nodeType":"YulBlock","src":"11031:1891:92","statements":[{"nodeType":"YulVariableDeclaration","src":"11041:28:92","value":{"kind":"number","nodeType":"YulLiteral","src":"11051:18:92","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"11045:2:92","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11085:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"11100:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"11108:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"11096:3:92"},"nodeType":"YulFunctionCall","src":"11096:15:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11078:6:92"},"nodeType":"YulFunctionCall","src":"11078:34:92"},"nodeType":"YulExpressionStatement","src":"11078:34:92"},{"nodeType":"YulVariableDeclaration","src":"11121:12:92","value":{"kind":"number","nodeType":"YulLiteral","src":"11131:2:92","type":"","value":"32"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"11125:2:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11153:9:92"},{"name":"_2","nodeType":"YulIdentifier","src":"11164:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11149:3:92"},"nodeType":"YulFunctionCall","src":"11149:18:92"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"11173:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"11181:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"11169:3:92"},"nodeType":"YulFunctionCall","src":"11169:15:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11142:6:92"},"nodeType":"YulFunctionCall","src":"11142:43:92"},"nodeType":"YulExpressionStatement","src":"11142:43:92"},{"nodeType":"YulVariableDeclaration","src":"11194:12:92","value":{"kind":"number","nodeType":"YulLiteral","src":"11204:2:92","type":"","value":"64"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"11198:2:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11226:9:92"},{"name":"_3","nodeType":"YulIdentifier","src":"11237:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11222:3:92"},"nodeType":"YulFunctionCall","src":"11222:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"11242:3:92","type":"","value":"160"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11215:6:92"},"nodeType":"YulFunctionCall","src":"11215:31:92"},"nodeType":"YulExpressionStatement","src":"11215:31:92"},{"nodeType":"YulVariableDeclaration","src":"11255:76:92","value":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"11295:6:92"},{"name":"value3","nodeType":"YulIdentifier","src":"11303:6:92"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11315:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"11326:3:92","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11311:3:92"},"nodeType":"YulFunctionCall","src":"11311:19:92"}],"functionName":{"name":"abi_encode_bytes_calldata","nodeType":"YulIdentifier","src":"11269:25:92"},"nodeType":"YulFunctionCall","src":"11269:62:92"},"variables":[{"name":"tail_1","nodeType":"YulTypedName","src":"11259:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"11340:12:92","value":{"kind":"number","nodeType":"YulLiteral","src":"11350:2:92","type":"","value":"96"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"11344:2:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11372:9:92"},{"name":"_4","nodeType":"YulIdentifier","src":"11383:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11368:3:92"},"nodeType":"YulFunctionCall","src":"11368:18:92"},{"arguments":[{"name":"tail_1","nodeType":"YulIdentifier","src":"11392:6:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"11400:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"11388:3:92"},"nodeType":"YulFunctionCall","src":"11388:22:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11361:6:92"},"nodeType":"YulFunctionCall","src":"11361:50:92"},"nodeType":"YulExpressionStatement","src":"11361:50:92"},{"nodeType":"YulVariableDeclaration","src":"11420:17:92","value":{"name":"tail_1","nodeType":"YulIdentifier","src":"11431:6:92"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"11424:3:92","type":""}]},{"expression":{"arguments":[{"name":"tail_1","nodeType":"YulIdentifier","src":"11453:6:92"},{"name":"value5","nodeType":"YulIdentifier","src":"11461:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11446:6:92"},"nodeType":"YulFunctionCall","src":"11446:22:92"},"nodeType":"YulExpressionStatement","src":"11446:22:92"},{"nodeType":"YulAssignment","src":"11477:22:92","value":{"arguments":[{"name":"tail_1","nodeType":"YulIdentifier","src":"11488:6:92"},{"name":"_2","nodeType":"YulIdentifier","src":"11496:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11484:3:92"},"nodeType":"YulFunctionCall","src":"11484:15:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"11477:3:92"}]},{"nodeType":"YulVariableDeclaration","src":"11508:50:92","value":{"arguments":[{"arguments":[{"name":"tail_1","nodeType":"YulIdentifier","src":"11530:6:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"11542:1:92","type":"","value":"5"},{"name":"value5","nodeType":"YulIdentifier","src":"11545:6:92"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"11538:3:92"},"nodeType":"YulFunctionCall","src":"11538:14:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11526:3:92"},"nodeType":"YulFunctionCall","src":"11526:27:92"},{"name":"_2","nodeType":"YulIdentifier","src":"11555:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11522:3:92"},"nodeType":"YulFunctionCall","src":"11522:36:92"},"variables":[{"name":"tail_2","nodeType":"YulTypedName","src":"11512:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"11567:20:92","value":{"name":"value4","nodeType":"YulIdentifier","src":"11581:6:92"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"11571:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"11596:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"11605:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"11600:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"11664:1185:92","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"11685:3:92"},{"arguments":[{"arguments":[{"name":"tail_2","nodeType":"YulIdentifier","src":"11698:6:92"},{"name":"tail_1","nodeType":"YulIdentifier","src":"11706:6:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"11694:3:92"},"nodeType":"YulFunctionCall","src":"11694:19:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"11719:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"11715:3:92"},"nodeType":"YulFunctionCall","src":"11715:7:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11690:3:92"},"nodeType":"YulFunctionCall","src":"11690:33:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11678:6:92"},"nodeType":"YulFunctionCall","src":"11678:46:92"},"nodeType":"YulExpressionStatement","src":"11678:46:92"},{"nodeType":"YulVariableDeclaration","src":"11737:46:92","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"11776:6:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"11763:12:92"},"nodeType":"YulFunctionCall","src":"11763:20:92"},"variables":[{"name":"rel_offset_of_tail","nodeType":"YulTypedName","src":"11741:18:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"11874:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"11883:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"11886:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"11876:6:92"},"nodeType":"YulFunctionCall","src":"11876:12:92"},"nodeType":"YulExpressionStatement","src":"11876:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"rel_offset_of_tail","nodeType":"YulIdentifier","src":"11810:18:92"},{"arguments":[{"arguments":[{"arguments":[],"functionName":{"name":"calldatasize","nodeType":"YulIdentifier","src":"11838:12:92"},"nodeType":"YulFunctionCall","src":"11838:14:92"},{"name":"value4","nodeType":"YulIdentifier","src":"11854:6:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"11834:3:92"},"nodeType":"YulFunctionCall","src":"11834:27:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"11867:2:92","type":"","value":"94"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"11863:3:92"},"nodeType":"YulFunctionCall","src":"11863:7:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11830:3:92"},"nodeType":"YulFunctionCall","src":"11830:41:92"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"11806:3:92"},"nodeType":"YulFunctionCall","src":"11806:66:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"11799:6:92"},"nodeType":"YulFunctionCall","src":"11799:74:92"},"nodeType":"YulIf","src":"11796:94:92"},{"nodeType":"YulVariableDeclaration","src":"11903:44:92","value":{"arguments":[{"name":"rel_offset_of_tail","nodeType":"YulIdentifier","src":"11920:18:92"},{"name":"value4","nodeType":"YulIdentifier","src":"11940:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11916:3:92"},"nodeType":"YulFunctionCall","src":"11916:31:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"11907:5:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"11960:34:92","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"11988:5:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"11975:12:92"},"nodeType":"YulFunctionCall","src":"11975:19:92"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"11964:7:92","type":""}]},{"expression":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"12038:7:92"}],"functionName":{"name":"validator_revert_contract_IDAO","nodeType":"YulIdentifier","src":"12007:30:92"},"nodeType":"YulFunctionCall","src":"12007:39:92"},"nodeType":"YulExpressionStatement","src":"12007:39:92"},{"expression":{"arguments":[{"name":"tail_2","nodeType":"YulIdentifier","src":"12066:6:92"},{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"12078:7:92"},{"kind":"number","nodeType":"YulLiteral","src":"12087:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"12074:3:92"},"nodeType":"YulFunctionCall","src":"12074:56:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12059:6:92"},"nodeType":"YulFunctionCall","src":"12059:72:92"},"nodeType":"YulExpressionStatement","src":"12059:72:92"},{"expression":{"arguments":[{"arguments":[{"name":"tail_2","nodeType":"YulIdentifier","src":"12155:6:92"},{"name":"_2","nodeType":"YulIdentifier","src":"12163:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12151:3:92"},"nodeType":"YulFunctionCall","src":"12151:15:92"},{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"12185:5:92"},{"name":"_2","nodeType":"YulIdentifier","src":"12192:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12181:3:92"},"nodeType":"YulFunctionCall","src":"12181:14:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"12168:12:92"},"nodeType":"YulFunctionCall","src":"12168:28:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12144:6:92"},"nodeType":"YulFunctionCall","src":"12144:53:92"},"nodeType":"YulExpressionStatement","src":"12144:53:92"},{"nodeType":"YulVariableDeclaration","src":"12210:56:92","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"12255:5:92"},{"name":"_3","nodeType":"YulIdentifier","src":"12262:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12251:3:92"},"nodeType":"YulFunctionCall","src":"12251:14:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"12238:12:92"},"nodeType":"YulFunctionCall","src":"12238:28:92"},"variables":[{"name":"rel_offset_of_tail_1","nodeType":"YulTypedName","src":"12214:20:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"12358:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"12367:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"12370:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"12360:6:92"},"nodeType":"YulFunctionCall","src":"12360:12:92"},"nodeType":"YulExpressionStatement","src":"12360:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"rel_offset_of_tail_1","nodeType":"YulIdentifier","src":"12293:20:92"},{"arguments":[{"arguments":[{"arguments":[],"functionName":{"name":"calldatasize","nodeType":"YulIdentifier","src":"12323:12:92"},"nodeType":"YulFunctionCall","src":"12323:14:92"},{"name":"value","nodeType":"YulIdentifier","src":"12339:5:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"12319:3:92"},"nodeType":"YulFunctionCall","src":"12319:26:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"12351:2:92","type":"","value":"30"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"12347:3:92"},"nodeType":"YulFunctionCall","src":"12347:7:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12315:3:92"},"nodeType":"YulFunctionCall","src":"12315:40:92"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"12289:3:92"},"nodeType":"YulFunctionCall","src":"12289:67:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"12282:6:92"},"nodeType":"YulFunctionCall","src":"12282:75:92"},"nodeType":"YulIf","src":"12279:95:92"},{"nodeType":"YulVariableDeclaration","src":"12387:47:92","value":{"arguments":[{"name":"rel_offset_of_tail_1","nodeType":"YulIdentifier","src":"12406:20:92"},{"name":"value","nodeType":"YulIdentifier","src":"12428:5:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12402:3:92"},"nodeType":"YulFunctionCall","src":"12402:32:92"},"variables":[{"name":"value_2","nodeType":"YulTypedName","src":"12391:7:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"12447:35:92","value":{"arguments":[{"name":"value_2","nodeType":"YulIdentifier","src":"12474:7:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"12461:12:92"},"nodeType":"YulFunctionCall","src":"12461:21:92"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"12451:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"12495:31:92","value":{"arguments":[{"name":"value_2","nodeType":"YulIdentifier","src":"12514:7:92"},{"name":"_2","nodeType":"YulIdentifier","src":"12523:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12510:3:92"},"nodeType":"YulFunctionCall","src":"12510:16:92"},"variables":[{"name":"value_3","nodeType":"YulTypedName","src":"12499:7:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"12557:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"12566:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"12569:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"12559:6:92"},"nodeType":"YulFunctionCall","src":"12559:12:92"},"nodeType":"YulExpressionStatement","src":"12559:12:92"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"12545:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"12553:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"12542:2:92"},"nodeType":"YulFunctionCall","src":"12542:14:92"},"nodeType":"YulIf","src":"12539:34:92"},{"body":{"nodeType":"YulBlock","src":"12631:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"12640:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"12643:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"12633:6:92"},"nodeType":"YulFunctionCall","src":"12633:12:92"},"nodeType":"YulExpressionStatement","src":"12633:12:92"}]},"condition":{"arguments":[{"name":"value_3","nodeType":"YulIdentifier","src":"12593:7:92"},{"arguments":[{"arguments":[],"functionName":{"name":"calldatasize","nodeType":"YulIdentifier","src":"12606:12:92"},"nodeType":"YulFunctionCall","src":"12606:14:92"},{"name":"length","nodeType":"YulIdentifier","src":"12622:6:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"12602:3:92"},"nodeType":"YulFunctionCall","src":"12602:27:92"}],"functionName":{"name":"sgt","nodeType":"YulIdentifier","src":"12589:3:92"},"nodeType":"YulFunctionCall","src":"12589:41:92"},"nodeType":"YulIf","src":"12586:61:92"},{"expression":{"arguments":[{"arguments":[{"name":"tail_2","nodeType":"YulIdentifier","src":"12671:6:92"},{"name":"_3","nodeType":"YulIdentifier","src":"12679:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12667:3:92"},"nodeType":"YulFunctionCall","src":"12667:15:92"},{"name":"_4","nodeType":"YulIdentifier","src":"12684:2:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12660:6:92"},"nodeType":"YulFunctionCall","src":"12660:27:92"},"nodeType":"YulExpressionStatement","src":"12660:27:92"},{"nodeType":"YulAssignment","src":"12700:69:92","value":{"arguments":[{"name":"value_3","nodeType":"YulIdentifier","src":"12736:7:92"},{"name":"length","nodeType":"YulIdentifier","src":"12745:6:92"},{"arguments":[{"name":"tail_2","nodeType":"YulIdentifier","src":"12757:6:92"},{"name":"_4","nodeType":"YulIdentifier","src":"12765:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12753:3:92"},"nodeType":"YulFunctionCall","src":"12753:15:92"}],"functionName":{"name":"abi_encode_bytes_calldata","nodeType":"YulIdentifier","src":"12710:25:92"},"nodeType":"YulFunctionCall","src":"12710:59:92"},"variableNames":[{"name":"tail_2","nodeType":"YulIdentifier","src":"12700:6:92"}]},{"nodeType":"YulAssignment","src":"12782:25:92","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"12796:6:92"},{"name":"_2","nodeType":"YulIdentifier","src":"12804:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12792:3:92"},"nodeType":"YulFunctionCall","src":"12792:15:92"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"12782:6:92"}]},{"nodeType":"YulAssignment","src":"12820:19:92","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"12831:3:92"},{"name":"_2","nodeType":"YulIdentifier","src":"12836:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12827:3:92"},"nodeType":"YulFunctionCall","src":"12827:12:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"12820:3:92"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"11626:1:92"},{"name":"value5","nodeType":"YulIdentifier","src":"11629:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"11623:2:92"},"nodeType":"YulFunctionCall","src":"11623:13:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"11637:18:92","statements":[{"nodeType":"YulAssignment","src":"11639:14:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"11648:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"11651:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11644:3:92"},"nodeType":"YulFunctionCall","src":"11644:9:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"11639:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"11619:3:92","statements":[]},"src":"11615:1234:92"},{"nodeType":"YulAssignment","src":"12858:14:92","value":{"name":"tail_2","nodeType":"YulIdentifier","src":"12866:6:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"12858:4:92"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12892:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"12903:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12888:3:92"},"nodeType":"YulFunctionCall","src":"12888:19:92"},{"name":"value6","nodeType":"YulIdentifier","src":"12909:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12881:6:92"},"nodeType":"YulFunctionCall","src":"12881:35:92"},"nodeType":"YulExpressionStatement","src":"12881:35:92"}]},"name":"abi_encode_tuple_t_uint64_t_uint64_t_bytes_calldata_ptr_t_array$_t_struct$_Action_$10724_calldata_ptr_$dyn_calldata_ptr_t_uint256__to_t_uint64_t_uint64_t_bytes_memory_ptr_t_array$_t_struct$_Action_$10724_memory_ptr_$dyn_memory_ptr_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"10952:9:92","type":""},{"name":"value6","nodeType":"YulTypedName","src":"10963:6:92","type":""},{"name":"value5","nodeType":"YulTypedName","src":"10971:6:92","type":""},{"name":"value4","nodeType":"YulTypedName","src":"10979:6:92","type":""},{"name":"value3","nodeType":"YulTypedName","src":"10987:6:92","type":""},{"name":"value2","nodeType":"YulTypedName","src":"10995:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"11003:6:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"11011:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"11022:4:92","type":""}],"src":"10682:2240:92"}]},"contents":"{\n { }\n function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n if iszero(eq(value, and(value, shl(224, 0xffffffff)))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function validator_revert_contract_IDAO(value)\n {\n if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n }\n function panic_error_0x41()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function allocate_memory_2869() -> memPtr\n {\n memPtr := mload(64)\n let newFreePtr := add(memPtr, 0x60)\n if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n }\n function allocate_memory(size) -> memPtr\n {\n memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(size, 31), not(31)))\n if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n }\n function array_allocation_size_array_struct_Action_dyn(length) -> size\n {\n if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n size := add(shl(5, length), 0x20)\n }\n function array_allocation_size_bytes(length) -> size\n {\n if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n size := add(and(add(length, 31), not(31)), 0x20)\n }\n function abi_decode_tuple_t_contract$_IDAO_$10865t_uint256t_array$_t_struct$_Action_$10724_memory_ptr_$dyn_memory_ptrt_uint256(headStart, dataEnd) -> value0, value1, value2, value3\n {\n if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n validator_revert_contract_IDAO(calldataload(headStart))\n value0 := calldataload(headStart)\n value1 := calldataload(add(headStart, 32))\n let offset := calldataload(add(headStart, 64))\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n let _2 := add(headStart, offset)\n if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n let dst := allocate_memory(array_allocation_size_array_struct_Action_dyn(calldataload(_2)))\n let dst_1 := dst\n mstore(dst, calldataload(_2))\n dst := add(dst, 32)\n let srcEnd := add(add(_2, shl(5, calldataload(_2))), 32)\n if gt(srcEnd, dataEnd) { revert(0, 0) }\n let src := add(_2, 32)\n for { } lt(src, srcEnd) { src := add(src, 32) }\n {\n if gt(calldataload(src), _1) { revert(0, 0) }\n let _3 := add(_2, calldataload(src))\n if slt(add(sub(dataEnd, _3), not(31)), 0x60) { revert(0, 0) }\n let value := allocate_memory_2869()\n let value_1 := calldataload(add(_3, 32))\n validator_revert_contract_IDAO(value_1)\n mstore(value, value_1)\n mstore(add(value, 32), calldataload(add(_3, 64)))\n let offset_1 := calldataload(add(_3, 0x60))\n if gt(offset_1, _1) { revert(0, 0) }\n let _4 := add(_3, offset_1)\n if iszero(slt(add(_4, 63), dataEnd)) { revert(0, 0) }\n let _5 := calldataload(add(_4, 32))\n let array := allocate_memory(array_allocation_size_bytes(_5))\n mstore(array, _5)\n if gt(add(add(_4, _5), 64), dataEnd) { revert(0, 0) }\n calldatacopy(add(array, 32), add(_4, 64), _5)\n mstore(add(add(array, _5), 32), 0)\n mstore(add(value, 64), array)\n mstore(dst, value)\n dst := add(dst, 32)\n }\n value2 := dst_1\n value3 := calldataload(add(headStart, 0x60))\n }\n function copy_memory_to_memory_with_cleanup(src, dst, length)\n {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n mstore(add(dst, length), 0)\n }\n function abi_encode_bytes(value, pos) -> end\n {\n let length := mload(value)\n mstore(pos, length)\n copy_memory_to_memory_with_cleanup(add(value, 0x20), add(pos, 0x20), length)\n end := add(add(pos, and(add(length, 31), not(31))), 0x20)\n }\n function abi_encode_tuple_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_t_uint256__to_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n {\n let tail_1 := add(headStart, 64)\n mstore(headStart, 64)\n let pos := tail_1\n let length := mload(value0)\n mstore(tail_1, length)\n pos := add(headStart, 96)\n let tail_2 := add(add(headStart, shl(5, length)), 96)\n let _1 := 0x20\n let srcPtr := add(value0, _1)\n let i := 0\n for { } lt(i, length) { i := add(i, 1) }\n {\n mstore(pos, add(sub(tail_2, headStart), not(95)))\n tail_2 := abi_encode_bytes(mload(srcPtr), tail_2)\n srcPtr := add(srcPtr, _1)\n pos := add(pos, _1)\n }\n tail := tail_2\n mstore(add(headStart, _1), value1)\n }\n function abi_decode_uint64(offset) -> value\n {\n value := calldataload(offset)\n if iszero(eq(value, and(value, 0xffffffffffffffff))) { revert(0, 0) }\n }\n function abi_decode_array_struct_Action_calldata_dyn_calldata(offset, end) -> arrayPos, length\n {\n if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n length := calldataload(offset)\n if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n arrayPos := add(offset, 0x20)\n if gt(add(add(offset, shl(5, length)), 0x20), end) { revert(0, 0) }\n }\n function abi_decode_tuple_t_addresst_bytes_calldata_ptrt_uint64t_uint64t_array$_t_struct$_Action_$10724_calldata_ptr_$dyn_calldata_ptrt_uint256(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6, value7\n {\n if slt(sub(dataEnd, headStart), 192) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_contract_IDAO(value)\n value0 := value\n let offset := calldataload(add(headStart, 32))\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n let _2 := add(headStart, offset)\n if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n let length := calldataload(_2)\n if gt(length, _1) { revert(0, 0) }\n if gt(add(add(_2, length), 32), dataEnd) { revert(0, 0) }\n value1 := add(_2, 32)\n value2 := length\n value3 := abi_decode_uint64(add(headStart, 64))\n value4 := abi_decode_uint64(add(headStart, 96))\n let offset_1 := calldataload(add(headStart, 128))\n if gt(offset_1, _1) { revert(0, 0) }\n let value5_1, value6_1 := abi_decode_array_struct_Action_calldata_dyn_calldata(add(headStart, offset_1), dataEnd)\n value5 := value5_1\n value6 := value6_1\n value7 := calldataload(add(headStart, 160))\n }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_encode_tuple_t_bytes32_t_array$_t_struct$_Action_$10724_memory_ptr_$dyn_memory_ptr_t_uint256__to_t_bytes32_t_array$_t_struct$_Action_$10724_memory_ptr_$dyn_memory_ptr_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n {\n let _1 := 96\n let tail_1 := add(headStart, _1)\n mstore(headStart, value0)\n let _2 := 32\n mstore(add(headStart, _2), _1)\n let pos := tail_1\n let length := mload(value1)\n mstore(tail_1, length)\n pos := add(headStart, 128)\n let tail_2 := add(add(headStart, shl(5, length)), 128)\n let srcPtr := add(value1, _2)\n let i := 0\n for { } lt(i, length) { i := add(i, 1) }\n {\n mstore(pos, add(sub(tail_2, headStart), not(127)))\n let _3 := mload(srcPtr)\n mstore(tail_2, and(mload(_3), 0xffffffffffffffffffffffffffffffffffffffff))\n mstore(add(tail_2, _2), mload(add(_3, _2)))\n let _4 := 0x40\n let memberValue0 := mload(add(_3, _4))\n mstore(add(tail_2, _4), _1)\n tail_2 := abi_encode_bytes(memberValue0, add(tail_2, _1))\n srcPtr := add(srcPtr, _2)\n pos := add(pos, _2)\n }\n tail := tail_2\n mstore(add(headStart, 0x40), value2)\n }\n function abi_decode_tuple_t_array$_t_bytes_memory_ptr_$dyn_memory_ptrt_uint256_fromMemory(headStart, dataEnd) -> value0, value1\n {\n let _1 := 64\n if slt(sub(dataEnd, headStart), _1) { revert(0, 0) }\n let offset := mload(headStart)\n let _2 := 0xffffffffffffffff\n if gt(offset, _2) { revert(0, 0) }\n let _3 := add(headStart, offset)\n if iszero(slt(add(_3, 0x1f), dataEnd)) { revert(0, 0) }\n let _4 := mload(_3)\n let _5 := 0x20\n let dst := allocate_memory(array_allocation_size_array_struct_Action_dyn(_4))\n let dst_1 := dst\n mstore(dst, _4)\n dst := add(dst, _5)\n let srcEnd := add(add(_3, shl(5, _4)), _5)\n if gt(srcEnd, dataEnd) { revert(0, 0) }\n let src := add(_3, _5)\n for { } lt(src, srcEnd) { src := add(src, _5) }\n {\n let innerOffset := mload(src)\n if gt(innerOffset, _2)\n {\n let _6 := 0\n revert(_6, _6)\n }\n let _7 := add(_3, innerOffset)\n if iszero(slt(add(_7, 63), dataEnd))\n {\n let _8 := 0\n revert(_8, _8)\n }\n let _9 := mload(add(_7, _5))\n let array := allocate_memory(array_allocation_size_bytes(_9))\n mstore(array, _9)\n if gt(add(add(_7, _9), _1), dataEnd)\n {\n let _10 := 0\n revert(_10, _10)\n }\n copy_memory_to_memory_with_cleanup(add(_7, _1), add(array, _5), _9)\n mstore(dst, array)\n dst := add(dst, _5)\n }\n value0 := dst_1\n value1 := mload(add(headStart, _5))\n }\n function abi_encode_bytes_calldata(start, length, pos) -> end\n {\n mstore(pos, length)\n calldatacopy(add(pos, 0x20), start, length)\n mstore(add(add(pos, length), 0x20), 0)\n end := add(add(pos, and(add(length, 31), not(31))), 0x20)\n }\n function abi_encode_tuple_t_uint64_t_uint64_t_bytes_calldata_ptr_t_array$_t_struct$_Action_$10724_calldata_ptr_$dyn_calldata_ptr_t_uint256__to_t_uint64_t_uint64_t_bytes_memory_ptr_t_array$_t_struct$_Action_$10724_memory_ptr_$dyn_memory_ptr_t_uint256__fromStack_reversed(headStart, value6, value5, value4, value3, value2, value1, value0) -> tail\n {\n let _1 := 0xffffffffffffffff\n mstore(headStart, and(value0, _1))\n let _2 := 32\n mstore(add(headStart, _2), and(value1, _1))\n let _3 := 64\n mstore(add(headStart, _3), 160)\n let tail_1 := abi_encode_bytes_calldata(value2, value3, add(headStart, 160))\n let _4 := 96\n mstore(add(headStart, _4), sub(tail_1, headStart))\n let pos := tail_1\n mstore(tail_1, value5)\n pos := add(tail_1, _2)\n let tail_2 := add(add(tail_1, shl(5, value5)), _2)\n let srcPtr := value4\n let i := 0\n for { } lt(i, value5) { i := add(i, 1) }\n {\n mstore(pos, add(sub(tail_2, tail_1), not(31)))\n let rel_offset_of_tail := calldataload(srcPtr)\n if iszero(slt(rel_offset_of_tail, add(sub(calldatasize(), value4), not(94)))) { revert(0, 0) }\n let value := add(rel_offset_of_tail, value4)\n let value_1 := calldataload(value)\n validator_revert_contract_IDAO(value_1)\n mstore(tail_2, and(value_1, 0xffffffffffffffffffffffffffffffffffffffff))\n mstore(add(tail_2, _2), calldataload(add(value, _2)))\n let rel_offset_of_tail_1 := calldataload(add(value, _3))\n if iszero(slt(rel_offset_of_tail_1, add(sub(calldatasize(), value), not(30)))) { revert(0, 0) }\n let value_2 := add(rel_offset_of_tail_1, value)\n let length := calldataload(value_2)\n let value_3 := add(value_2, _2)\n if gt(length, _1) { revert(0, 0) }\n if sgt(value_3, sub(calldatasize(), length)) { revert(0, 0) }\n mstore(add(tail_2, _3), _4)\n tail_2 := abi_encode_bytes_calldata(value_3, length, add(tail_2, _4))\n srcPtr := add(srcPtr, _2)\n pos := add(pos, _2)\n }\n tail := tail_2\n mstore(add(headStart, 128), value6)\n }\n}","id":92,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100675760003560e01c806373e1166d1161005057806373e1166d146100b55780637b2bf56e146100d6578063da35c664146100de57600080fd5b806301ffc9a71461006c578063634a9a8814610094575b600080fd5b61007f61007a3660046102ac565b6100e6565b60405190151581526020015b60405180910390f35b6100a76100a23660046103b1565b61011d565b60405161008b929190610573565b6100c86100c3366004610645565b61013a565b60405190815260200161008b565b6100c8610159565b6100c8610168565b60006001600160e01b0319821663368d719960e21b148061011757506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600061012d86868686610173565b9097909650945050505050565b600061014c8989898989898989610229565b9998505050505050505050565b600061016361028f565b905090565b600061016360335490565b6040516331c6fcc960e21b81526060906000906001600160a01b0387169063c71bf324906101a99088908890889060040161071c565b6000604051808303816000875af11580156101c8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526101f091908101906107b4565b604051919350915085907f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f90600090a294509492505050565b600061023361028f565b9050886001600160a01b0316817fa6c1f8f4276dc3f243459e13b557c84e8f4e90b2e09070bad5f6909cee687c9288888c8c8a8a8a60405161027b97969594939291906108d1565b60405180910390a398975050505050505050565b6000610299610168565b90506102a9603380546001019055565b90565b6000602082840312156102be57600080fd5b81356001600160e01b0319811681146102d657600080fd5b9392505050565b6001600160a01b03811681146102f257600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171561032e5761032e6102f5565b60405290565b604051601f8201601f1916810167ffffffffffffffff8111828210171561035d5761035d6102f5565b604052919050565b600067ffffffffffffffff82111561037f5761037f6102f5565b5060051b60200190565b600067ffffffffffffffff8211156103a3576103a36102f5565b50601f01601f191660200190565b600080600080608085870312156103c757600080fd5b6103d185356102dd565b8435935060208501359250604085013567ffffffffffffffff808211156103f757600080fd5b818701915087601f83011261040b57600080fd5b61041d6104188335610365565b610334565b82358082526020808301929160051b8501018a81111561043c57600080fd5b602085015b8181101561050f57848135111561045757600080fd5b803586016060818e03601f1901121561046f57600080fd5b61047761030b565b6020820135610485816102dd565b8152604082013560208201526060820135878111156104a357600080fd5b8083019250508d603f8301126104b857600080fd5b60208201356104c961041882610389565b8181528f60408386010111156104de57600080fd5b8160408501602083013760006020838301015280604084015250508086525050602084019350602081019050610441565b50979a969950976060013596505050505050565b60005b8381101561053e578181015183820152602001610526565b50506000910152565b6000815180845261055f816020860160208601610523565b601f01601f19169290920160200192915050565b6000604082016040835280855180835260608501915060608160051b8601019250602080880160005b838110156105ca57605f198887030185526105b8868351610547565b9550938201939082019060010161059c565b50509490940194909452949350505050565b803567ffffffffffffffff811681146105f457600080fd5b919050565b60008083601f84011261060b57600080fd5b50813567ffffffffffffffff81111561062357600080fd5b6020830191508360208260051b850101111561063e57600080fd5b9250929050565b60008060008060008060008060c0898b03121561066157600080fd5b883561066c816102dd565b9750602089013567ffffffffffffffff8082111561068957600080fd5b818b0191508b601f83011261069d57600080fd5b8135818111156106ac57600080fd5b8c60208285010111156106be57600080fd5b60208301995097506106d260408c016105dc565b96506106e060608c016105dc565b955060808b01359150808211156106f657600080fd5b506107038b828c016105f9565b999c989b50969995989497949560a00135949350505050565b600060608083018684526020828186015281875180845260808701915060808160051b880101935082890160005b8281101561079d57888603607f19018452815180516001600160a01b03168752858101518688015260409081015190870188905261078a88880182610547565b965050928401929084019060010161074a565b505050505060409390930193909352509392505050565b60008060408084860312156107c857600080fd5b835167ffffffffffffffff808211156107e057600080fd5b818601915086601f8301126107f457600080fd5b8151602061080461041883610365565b82815260059290921b8401810191818101908a84111561082357600080fd5b8286015b848110156108945780518681111561083f5760008081fd5b8701603f81018d136108515760008081fd5b8481015161086161041882610389565b8181528e8b8385010111156108765760008081fd5b610885828883018d8601610523565b85525050918301918301610827565b509890910151979997985050505050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b600067ffffffffffffffff808a1683526020818a1681850152604060a08186015261090060a086018a8c6108a8565b606086820381880152818983528483019050848a60051b8401018b60005b8c8110156109c357858303601f190184528135368f9003605e1901811261094457600080fd5b8e018035610951816102dd565b6001600160a01b0316845280890135898501528781013536829003601e1901811261097b57600080fd5b0188810190358a81111561098e57600080fd5b80360382131561099d57600080fd5b86898601526109af87860182846108a8565b958a0195945050509087019060010161091e565b5050809750505050505050508260808301529897505050505050505056fea164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x67 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x73E1166D GT PUSH2 0x50 JUMPI DUP1 PUSH4 0x73E1166D EQ PUSH2 0xB5 JUMPI DUP1 PUSH4 0x7B2BF56E EQ PUSH2 0xD6 JUMPI DUP1 PUSH4 0xDA35C664 EQ PUSH2 0xDE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x6C JUMPI DUP1 PUSH4 0x634A9A88 EQ PUSH2 0x94 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7F PUSH2 0x7A CALLDATASIZE PUSH1 0x4 PUSH2 0x2AC JUMP JUMPDEST PUSH2 0xE6 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xA7 PUSH2 0xA2 CALLDATASIZE PUSH1 0x4 PUSH2 0x3B1 JUMP JUMPDEST PUSH2 0x11D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x8B SWAP3 SWAP2 SWAP1 PUSH2 0x573 JUMP JUMPDEST PUSH2 0xC8 PUSH2 0xC3 CALLDATASIZE PUSH1 0x4 PUSH2 0x645 JUMP JUMPDEST PUSH2 0x13A JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x8B JUMP JUMPDEST PUSH2 0xC8 PUSH2 0x159 JUMP JUMPDEST PUSH2 0xC8 PUSH2 0x168 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x368D7199 PUSH1 0xE2 SHL EQ DUP1 PUSH2 0x117 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x12D DUP7 DUP7 DUP7 DUP7 PUSH2 0x173 JUMP JUMPDEST SWAP1 SWAP8 SWAP1 SWAP7 POP SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x14C DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 PUSH2 0x229 JUMP JUMPDEST SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x163 PUSH2 0x28F JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x163 PUSH1 0x33 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x31C6FCC9 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x60 SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0xC71BF324 SWAP1 PUSH2 0x1A9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x71C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1C8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x1F0 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x7B4 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 SWAP4 POP SWAP2 POP DUP6 SWAP1 PUSH32 0x712AE1383F79AC853F8D882153778E0260EF8F03B504E2866E0593E04D2B291F SWAP1 PUSH1 0x0 SWAP1 LOG2 SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x233 PUSH2 0x28F JUMP JUMPDEST SWAP1 POP DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH32 0xA6C1F8F4276DC3F243459E13B557C84E8F4E90B2E09070BAD5F6909CEE687C92 DUP9 DUP9 DUP13 DUP13 DUP11 DUP11 DUP11 PUSH1 0x40 MLOAD PUSH2 0x27B SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x8D1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x299 PUSH2 0x168 JUMP JUMPDEST SWAP1 POP PUSH2 0x2A9 PUSH1 0x33 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x2D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x2F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x60 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x32E JUMPI PUSH2 0x32E PUSH2 0x2F5 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x35D JUMPI PUSH2 0x35D PUSH2 0x2F5 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x37F JUMPI PUSH2 0x37F PUSH2 0x2F5 JUMP JUMPDEST POP PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x3A3 JUMPI PUSH2 0x3A3 PUSH2 0x2F5 JUMP JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x3C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3D1 DUP6 CALLDATALOAD PUSH2 0x2DD JUMP JUMPDEST DUP5 CALLDATALOAD SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x3F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x40B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x41D PUSH2 0x418 DUP4 CALLDATALOAD PUSH2 0x365 JUMP JUMPDEST PUSH2 0x334 JUMP JUMPDEST DUP3 CALLDATALOAD DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP3 SWAP2 PUSH1 0x5 SHL DUP6 ADD ADD DUP11 DUP2 GT ISZERO PUSH2 0x43C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP6 ADD JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x50F JUMPI DUP5 DUP2 CALLDATALOAD GT ISZERO PUSH2 0x457 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD DUP7 ADD PUSH1 0x60 DUP2 DUP15 SUB PUSH1 0x1F NOT ADD SLT ISZERO PUSH2 0x46F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x477 PUSH2 0x30B JUMP JUMPDEST PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH2 0x485 DUP2 PUSH2 0x2DD JUMP JUMPDEST DUP2 MSTORE PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x60 DUP3 ADD CALLDATALOAD DUP8 DUP2 GT ISZERO PUSH2 0x4A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 DUP4 ADD SWAP3 POP POP DUP14 PUSH1 0x3F DUP4 ADD SLT PUSH2 0x4B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH2 0x4C9 PUSH2 0x418 DUP3 PUSH2 0x389 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP16 PUSH1 0x40 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0x4DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP4 DUP4 ADD ADD MSTORE DUP1 PUSH1 0x40 DUP5 ADD MSTORE POP POP DUP1 DUP7 MSTORE POP POP PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x441 JUMP JUMPDEST POP SWAP8 SWAP11 SWAP7 SWAP10 POP SWAP8 PUSH1 0x60 ADD CALLDATALOAD SWAP7 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x53E JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x526 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x55F DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x523 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD PUSH1 0x40 DUP4 MSTORE DUP1 DUP6 MLOAD DUP1 DUP4 MSTORE PUSH1 0x60 DUP6 ADD SWAP2 POP PUSH1 0x60 DUP2 PUSH1 0x5 SHL DUP7 ADD ADD SWAP3 POP PUSH1 0x20 DUP1 DUP9 ADD PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x5CA JUMPI PUSH1 0x5F NOT DUP9 DUP8 SUB ADD DUP6 MSTORE PUSH2 0x5B8 DUP7 DUP4 MLOAD PUSH2 0x547 JUMP JUMPDEST SWAP6 POP SWAP4 DUP3 ADD SWAP4 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x59C JUMP JUMPDEST POP POP SWAP5 SWAP1 SWAP5 ADD SWAP5 SWAP1 SWAP5 MSTORE SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x5F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x60B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x623 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 PUSH1 0x5 SHL DUP6 ADD ADD GT ISZERO PUSH2 0x63E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP10 DUP12 SUB SLT ISZERO PUSH2 0x661 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP9 CALLDATALOAD PUSH2 0x66C DUP2 PUSH2 0x2DD JUMP JUMPDEST SWAP8 POP PUSH1 0x20 DUP10 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x689 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP12 ADD SWAP2 POP DUP12 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x69D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x6AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP13 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x6BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP10 POP SWAP8 POP PUSH2 0x6D2 PUSH1 0x40 DUP13 ADD PUSH2 0x5DC JUMP JUMPDEST SWAP7 POP PUSH2 0x6E0 PUSH1 0x60 DUP13 ADD PUSH2 0x5DC JUMP JUMPDEST SWAP6 POP PUSH1 0x80 DUP12 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x6F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x703 DUP12 DUP3 DUP13 ADD PUSH2 0x5F9 JUMP JUMPDEST SWAP10 SWAP13 SWAP9 SWAP12 POP SWAP7 SWAP10 SWAP6 SWAP9 SWAP5 SWAP8 SWAP5 SWAP6 PUSH1 0xA0 ADD CALLDATALOAD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP1 DUP4 ADD DUP7 DUP5 MSTORE PUSH1 0x20 DUP3 DUP2 DUP7 ADD MSTORE DUP2 DUP8 MLOAD DUP1 DUP5 MSTORE PUSH1 0x80 DUP8 ADD SWAP2 POP PUSH1 0x80 DUP2 PUSH1 0x5 SHL DUP9 ADD ADD SWAP4 POP DUP3 DUP10 ADD PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x79D JUMPI DUP9 DUP7 SUB PUSH1 0x7F NOT ADD DUP5 MSTORE DUP2 MLOAD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 MSTORE DUP6 DUP2 ADD MLOAD DUP7 DUP9 ADD MSTORE PUSH1 0x40 SWAP1 DUP2 ADD MLOAD SWAP1 DUP8 ADD DUP9 SWAP1 MSTORE PUSH2 0x78A DUP9 DUP9 ADD DUP3 PUSH2 0x547 JUMP JUMPDEST SWAP7 POP POP SWAP3 DUP5 ADD SWAP3 SWAP1 DUP5 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x74A JUMP JUMPDEST POP POP POP POP POP PUSH1 0x40 SWAP4 SWAP1 SWAP4 ADD SWAP4 SWAP1 SWAP4 MSTORE POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP1 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x7C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x7E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP7 ADD SWAP2 POP DUP7 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x7F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x20 PUSH2 0x804 PUSH2 0x418 DUP4 PUSH2 0x365 JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH1 0x5 SWAP3 SWAP1 SWAP3 SHL DUP5 ADD DUP2 ADD SWAP2 DUP2 DUP2 ADD SWAP1 DUP11 DUP5 GT ISZERO PUSH2 0x823 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 DUP7 ADD JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x894 JUMPI DUP1 MLOAD DUP7 DUP2 GT ISZERO PUSH2 0x83F JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST DUP8 ADD PUSH1 0x3F DUP2 ADD DUP14 SGT PUSH2 0x851 JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST DUP5 DUP2 ADD MLOAD PUSH2 0x861 PUSH2 0x418 DUP3 PUSH2 0x389 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP15 DUP12 DUP4 DUP6 ADD ADD GT ISZERO PUSH2 0x876 JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST PUSH2 0x885 DUP3 DUP9 DUP4 ADD DUP14 DUP7 ADD PUSH2 0x523 JUMP JUMPDEST DUP6 MSTORE POP POP SWAP2 DUP4 ADD SWAP2 DUP4 ADD PUSH2 0x827 JUMP JUMPDEST POP SWAP9 SWAP1 SWAP2 ADD MLOAD SWAP8 SWAP10 SWAP8 SWAP9 POP POP POP POP POP POP POP POP JUMP JUMPDEST DUP2 DUP4 MSTORE DUP2 DUP2 PUSH1 0x20 DUP6 ADD CALLDATACOPY POP PUSH1 0x0 DUP3 DUP3 ADD PUSH1 0x20 SWAP1 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1F SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND SWAP1 SWAP2 ADD ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP11 AND DUP4 MSTORE PUSH1 0x20 DUP2 DUP11 AND DUP2 DUP6 ADD MSTORE PUSH1 0x40 PUSH1 0xA0 DUP2 DUP7 ADD MSTORE PUSH2 0x900 PUSH1 0xA0 DUP7 ADD DUP11 DUP13 PUSH2 0x8A8 JUMP JUMPDEST PUSH1 0x60 DUP7 DUP3 SUB DUP2 DUP9 ADD MSTORE DUP2 DUP10 DUP4 MSTORE DUP5 DUP4 ADD SWAP1 POP DUP5 DUP11 PUSH1 0x5 SHL DUP5 ADD ADD DUP12 PUSH1 0x0 JUMPDEST DUP13 DUP2 LT ISZERO PUSH2 0x9C3 JUMPI DUP6 DUP4 SUB PUSH1 0x1F NOT ADD DUP5 MSTORE DUP2 CALLDATALOAD CALLDATASIZE DUP16 SWAP1 SUB PUSH1 0x5E NOT ADD DUP2 SLT PUSH2 0x944 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP15 ADD DUP1 CALLDATALOAD PUSH2 0x951 DUP2 PUSH2 0x2DD JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 MSTORE DUP1 DUP10 ADD CALLDATALOAD DUP10 DUP6 ADD MSTORE DUP8 DUP2 ADD CALLDATALOAD CALLDATASIZE DUP3 SWAP1 SUB PUSH1 0x1E NOT ADD DUP2 SLT PUSH2 0x97B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST ADD DUP9 DUP2 ADD SWAP1 CALLDATALOAD DUP11 DUP2 GT ISZERO PUSH2 0x98E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATASIZE SUB DUP3 SGT ISZERO PUSH2 0x99D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 DUP10 DUP7 ADD MSTORE PUSH2 0x9AF DUP8 DUP7 ADD DUP3 DUP5 PUSH2 0x8A8 JUMP JUMPDEST SWAP6 DUP11 ADD SWAP6 SWAP5 POP POP POP SWAP1 DUP8 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x91E JUMP JUMPDEST POP POP DUP1 SWAP8 POP POP POP POP POP POP POP POP DUP3 PUSH1 0x80 DUP4 ADD MSTORE SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"425:970:57:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1264:200:80;;;;;;:::i;:::-;;:::i;:::-;;;470:14:92;;463:22;445:41;;433:2;418:18;1264:200:80;;;;;;;;1067:326:57;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;608:453::-;;;;;;:::i;:::-;;:::i;:::-;;;7357:25:92;;;7345:2;7330:18;608:453:57;7211:177:92;487:115:57;;;:::i;943:113:80:-;;;:::i;1264:200::-;1350:4;-1:-1:-1;;;;;;1373:43:80;;-1:-1:-1;;;1373:43:80;;:84;;-1:-1:-1;;;;;;;;;;1189:51:11;;;1420:37:80;1366:91;1264:200;-1:-1:-1;;1264:200:80:o;1067:326:57:-;1237:26;1265:18;1323:63;1340:4;1346:11;1359:8;1369:16;1323;:63::i;:::-;1295:91;;;;-1:-1:-1;1067:326:57;-1:-1:-1;;;;;1067:326:57:o;608:453::-;843:18;886:168;915:8;937:9;;960:10;984:8;1006;;1028:16;886:15;:168::i;:::-;873:181;608:453;-1:-1:-1;;;;;;;;;608:453:57:o;487:115::-;533:18;576:19;:17;:19::i;:::-;563:32;;487:115;:::o;943:113:80:-;998:7;1024:25;:15;929:14:9;;838:112;3559:392:80;3824:62;;-1:-1:-1;;;3824:62:80;;3738:26;;3766:18;;-1:-1:-1;;;;;3824:12:80;;;;;:62;;3845:11;;3859:8;;3869:16;;3824:62;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3824:62:80;;;;;;;;;;;;:::i;:::-;3901:43;;3796:90;;-1:-1:-1;3796:90:80;-1:-1:-1;3931:11:80;;3901:43;;;;;3559:392;;;;;;;:::o;2346:600::-;2590:18;2633:19;:17;:19::i;:::-;2620:32;;2743:8;-1:-1:-1;;;;;2668:271:80;2710:10;2668:271;2809:10;2842:8;2775:9;;2873:8;;2912:16;2668:271;;;;;;;;;;;;:::i;:::-;;;;;;;;2346:600;;;;;;;;;;:::o;1553:149::-;1600:18;1643:15;:13;:15::i;:::-;1630:28;;1668:27;:15;1043:19:9;;1061:1;1043:19;;;956:123;1668:27:80;1553:149;:::o;14:286:92:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:92;;209:43;;199:71;;266:1;263;256:12;199:71;289:5;14:286;-1:-1:-1;;;14:286:92:o;497:160::-;-1:-1:-1;;;;;582:5:92;578:54;571:5;568:65;558:93;;647:1;644;637:12;558:93;497:160;:::o;662:127::-;723:10;718:3;714:20;711:1;704:31;754:4;751:1;744:15;778:4;775:1;768:15;794:253;866:2;860:9;908:4;896:17;;943:18;928:34;;964:22;;;925:62;922:88;;;990:18;;:::i;:::-;1026:2;1019:22;794:253;:::o;1052:275::-;1123:2;1117:9;1188:2;1169:13;;-1:-1:-1;;1165:27:92;1153:40;;1223:18;1208:34;;1244:22;;;1205:62;1202:88;;;1270:18;;:::i;:::-;1306:2;1299:22;1052:275;;-1:-1:-1;1052:275:92:o;1332:189::-;1398:4;1431:18;1423:6;1420:30;1417:56;;;1453:18;;:::i;:::-;-1:-1:-1;1498:1:92;1494:14;1510:4;1490:25;;1332:189::o;1526:186::-;1574:4;1607:18;1599:6;1596:30;1593:56;;;1629:18;;:::i;:::-;-1:-1:-1;1695:2:92;1674:15;-1:-1:-1;;1670:29:92;1701:4;1666:40;;1526:186::o;1717:2209::-;1867:6;1875;1883;1891;1944:3;1932:9;1923:7;1919:23;1915:33;1912:53;;;1961:1;1958;1951:12;1912:53;1974:55;2018:9;2005:23;1974:55;:::i;:::-;2061:9;2048:23;2038:33;;2118:2;2107:9;2103:18;2090:32;2080:42;;2173:2;2162:9;2158:18;2145:32;2196:18;2237:2;2229:6;2226:14;2223:34;;;2253:1;2250;2243:12;2223:34;2291:6;2280:9;2276:22;2266:32;;2336:7;2329:4;2325:2;2321:13;2317:27;2307:55;;2358:1;2355;2348:12;2307:55;2382:80;2398:63;2457:2;2444:16;2398:63;:::i;:::-;2382:80;:::i;:::-;2508:16;;2496:29;;;2550:2;2541:12;;;;2484:3;2592:1;2588:24;2580:33;;2576:42;2630:19;;;2627:39;;;2662:1;2659;2652:12;2627:39;2694:2;2690;2686:11;2706:1137;2722:6;2717:3;2714:15;2706:1137;;;2801:2;2795:3;2782:17;2779:25;2776:45;;;2817:1;2814;2807:12;2776:45;2852:17;;2844:26;;2922:4;2894:16;;;-1:-1:-1;;2890:30:92;2886:41;2883:61;;;2940:1;2937;2930:12;2883:61;2970:22;;:::i;:::-;3041:2;3037;3033:11;3020:25;3058:39;3089:7;3058:39;:::i;:::-;3110:22;;3189:2;3181:11;;3168:25;3163:2;3152:14;;3145:49;3244:4;3236:13;;3223:27;3266:16;;;3263:36;;;3295:1;3292;3285:12;3263:36;3330:8;3326:2;3322:17;3312:27;;;3379:7;3374:2;3370;3366:11;3362:25;3352:53;;3401:1;3398;3391:12;3352:53;3449:2;3445;3441:11;3428:25;3479:48;3495:31;3523:2;3495:31;:::i;3479:48::-;3554:2;3547:5;3540:17;3598:7;3593:2;3588;3584;3580:11;3576:20;3573:33;3570:53;;;3619:1;3616;3609:12;3570:53;3678:2;3673;3669;3665:11;3660:2;3653:5;3649:14;3636:45;3726:1;3721:2;3716;3709:5;3705:14;3701:23;3694:34;3764:5;3759:2;3752:5;3748:14;3741:29;;;3795:5;3790:3;3783:18;;;3830:2;3825:3;3821:12;3814:19;;2748:2;2743:3;2739:12;2732:19;;2706:1137;;;-1:-1:-1;1717:2209:92;;;;-1:-1:-1;3862:5:92;3914:4;3899:20;3886:34;;-1:-1:-1;;;;;;1717:2209:92:o;3931:250::-;4016:1;4026:113;4040:6;4037:1;4034:13;4026:113;;;4116:11;;;4110:18;4097:11;;;4090:39;4062:2;4055:10;4026:113;;;-1:-1:-1;;4173:1:92;4155:16;;4148:27;3931:250::o;4186:270::-;4227:3;4265:5;4259:12;4292:6;4287:3;4280:19;4308:76;4377:6;4370:4;4365:3;4361:14;4354:4;4347:5;4343:16;4308:76;:::i;:::-;4438:2;4417:15;-1:-1:-1;;4413:29:92;4404:39;;;;4445:4;4400:50;;4186:270;-1:-1:-1;;4186:270:92:o;4461:873::-;4649:4;4697:2;4686:9;4682:18;4727:2;4716:9;4709:21;4750:6;4785;4779:13;4816:6;4808;4801:22;4854:2;4843:9;4839:18;4832:25;;4916:2;4906:6;4903:1;4899:14;4888:9;4884:30;4880:39;4866:53;;4938:4;4977:2;4969:6;4965:15;4998:1;5008:254;5022:6;5019:1;5016:13;5008:254;;;5115:2;5111:7;5099:9;5091:6;5087:22;5083:36;5078:3;5071:49;5143:39;5175:6;5166;5160:13;5143:39;:::i;:::-;5133:49;-1:-1:-1;5240:12:92;;;;5205:15;;;;5044:1;5037:9;5008:254;;;-1:-1:-1;;5301:18:92;;;;5294:34;;;;5279:6;4461:873;-1:-1:-1;;;;4461:873:92:o;5339:171::-;5406:20;;5466:18;5455:30;;5445:41;;5435:69;;5500:1;5497;5490:12;5435:69;5339:171;;;:::o;5515:382::-;5593:8;5603:6;5657:3;5650:4;5642:6;5638:17;5634:27;5624:55;;5675:1;5672;5665:12;5624:55;-1:-1:-1;5698:20:92;;5741:18;5730:30;;5727:50;;;5773:1;5770;5763:12;5727:50;5810:4;5802:6;5798:17;5786:29;;5870:3;5863:4;5853:6;5850:1;5846:14;5838:6;5834:27;5830:38;5827:47;5824:67;;;5887:1;5884;5877:12;5824:67;5515:382;;;;;:::o;5902:1304::-;6069:6;6077;6085;6093;6101;6109;6117;6125;6178:3;6166:9;6157:7;6153:23;6149:33;6146:53;;;6195:1;6192;6185:12;6146:53;6234:9;6221:23;6253:37;6284:5;6253:37;:::i;:::-;6309:5;-1:-1:-1;6365:2:92;6350:18;;6337:32;6388:18;6418:14;;;6415:34;;;6445:1;6442;6435:12;6415:34;6483:6;6472:9;6468:22;6458:32;;6528:7;6521:4;6517:2;6513:13;6509:27;6499:55;;6550:1;6547;6540:12;6499:55;6590:2;6577:16;6616:2;6608:6;6605:14;6602:34;;;6632:1;6629;6622:12;6602:34;6677:7;6672:2;6663:6;6659:2;6655:15;6651:24;6648:37;6645:57;;;6698:1;6695;6688:12;6645:57;6729:2;6721:11;;;-1:-1:-1;6751:6:92;-1:-1:-1;6776:37:92;6809:2;6794:18;;6776:37;:::i;:::-;6766:47;;6832:37;6865:2;6854:9;6850:18;6832:37;:::i;:::-;6822:47;;6922:3;6911:9;6907:19;6894:33;6878:49;;6952:2;6942:8;6939:16;6936:36;;;6968:1;6965;6958:12;6936:36;;7007:87;7086:7;7075:8;7064:9;7060:24;7007:87;:::i;:::-;5902:1304;;;;-1:-1:-1;5902:1304:92;;;;;;6981:113;;7195:3;7180:19;7167:33;;5902:1304;-1:-1:-1;;;;5902:1304:92:o;7393:1305::-;7641:4;7670:2;7710;7699:9;7695:18;7740:6;7729:9;7722:25;7766:2;7804;7799;7788:9;7784:18;7777:30;7827:6;7862;7856:13;7893:6;7885;7878:22;7931:3;7920:9;7916:19;7909:26;;7994:3;7984:6;7981:1;7977:14;7966:9;7962:30;7958:40;7944:54;;8033:2;8025:6;8021:15;8054:1;8064:560;8078:6;8075:1;8072:13;8064:560;;;8143:22;;;-1:-1:-1;;8139:37:92;8127:50;;8200:13;;8245:9;;-1:-1:-1;;;;;8241:58:92;8226:74;;8343:11;;;8337:18;8320:15;;;8313:43;8379:4;8422:11;;;8416:18;8454:15;;;8447:27;;;8497:47;8528:15;;;8416:18;8497:47;:::i;:::-;8487:57;-1:-1:-1;;8602:12:92;;;;8567:15;;;;8100:1;8093:9;8064:560;;;-1:-1:-1;;;;;8678:4:92;8663:20;;;;8656:36;;;;-1:-1:-1;8641:6:92;7393:1305;-1:-1:-1;;;7393:1305:92:o;8703:1703::-;8816:6;8824;8855:2;8898;8886:9;8877:7;8873:23;8869:32;8866:52;;;8914:1;8911;8904:12;8866:52;8947:9;8941:16;8976:18;9017:2;9009:6;9006:14;9003:34;;;9033:1;9030;9023:12;9003:34;9071:6;9060:9;9056:22;9046:32;;9116:7;9109:4;9105:2;9101:13;9097:27;9087:55;;9138:1;9135;9128:12;9087:55;9167:2;9161:9;9189:4;9213:66;9229:49;9275:2;9229:49;:::i;9213:66::-;9313:15;;;9395:1;9391:10;;;;9383:19;;9379:28;;;9344:12;;;;9419:19;;;9416:39;;;9451:1;9448;9441:12;9416:39;9483:2;9479;9475:11;9495:837;9511:6;9506:3;9503:15;9495:837;;;9590:3;9584:10;9626:2;9613:11;9610:19;9607:109;;;9670:1;9699:2;9695;9688:14;9607:109;9739:20;;9794:2;9786:11;;9782:25;-1:-1:-1;9772:123:92;;9849:1;9878:2;9874;9867:14;9772:123;9932:2;9928;9924:11;9918:18;9962:48;9978:31;10006:2;9978:31;:::i;9962:48::-;10037:2;10030:5;10023:17;10081:7;10076:2;10071;10067;10063:11;10059:20;10056:33;10053:126;;;10131:1;10161:3;10156;10149:16;10053:126;10192:67;10256:2;10251;10244:5;10240:14;10235:2;10231;10227:11;10192:67;:::i;:::-;10272:18;;-1:-1:-1;;10310:12:92;;;;9528;;9495:837;;;-1:-1:-1;10381:18:92;;;;10375:25;10351:5;;10375:25;;-1:-1:-1;;;;;;;;8703:1703:92:o;10411:266::-;10499:6;10494:3;10487:19;10551:6;10544:5;10537:4;10532:3;10528:14;10515:43;-1:-1:-1;10603:1:92;10578:16;;;10596:4;10574:27;;;10567:38;;;;10659:2;10638:15;;;-1:-1:-1;;10634:29:92;10625:39;;;10621:50;;10411:266::o;10682:2240::-;11022:4;11051:18;11108:2;11100:6;11096:15;11085:9;11078:34;11131:2;11181;11173:6;11169:15;11164:2;11153:9;11149:18;11142:43;11204:2;11242:3;11237:2;11226:9;11222:18;11215:31;11269:62;11326:3;11315:9;11311:19;11303:6;11295;11269:62;:::i;:::-;11350:2;11400:9;11392:6;11388:22;11383:2;11372:9;11368:18;11361:50;11431:6;11461;11453;11446:22;11496:2;11488:6;11484:15;11477:22;;11555:2;11545:6;11542:1;11538:14;11530:6;11526:27;11522:36;11581:6;11605:1;11615:1234;11629:6;11626:1;11623:13;11615:1234;;;11694:19;;;-1:-1:-1;;11690:33:92;11678:46;;11763:20;;11838:14;11834:27;;;-1:-1:-1;;11830:41:92;11806:66;;11796:94;;11886:1;11883;11876:12;11796:94;11916:31;;11975:19;;12007:39;11975:19;12007:39;:::i;:::-;-1:-1:-1;;;;;12074:56:92;12059:72;;12181:14;;;12168:28;12151:15;;;12144:53;12251:14;;;12238:28;12323:14;12319:26;;;-1:-1:-1;;12315:40:92;12289:67;;12279:95;;12370:1;12367;12360:12;12279:95;12402:32;12510:16;;;;12461:21;12542:14;;;12539:34;;;12569:1;12566;12559:12;12539:34;12622:6;12606:14;12602:27;12593:7;12589:41;12586:61;;;12643:1;12640;12633:12;12586:61;12684:2;12679;12671:6;12667:15;12660:27;12710:59;12765:2;12757:6;12753:15;12745:6;12736:7;12710:59;:::i;:::-;12827:12;;;;12700:69;-1:-1:-1;;;12792:15:92;;;;11651:1;11644:9;11615:1234;;;11619:3;;12866:6;12858:14;;;;;;;;;12909:6;12903:3;12892:9;12888:19;12881:35;10682:2240;;;;;;;;;;:::o"},"gasEstimates":{"creation":{"codeDepositCost":"508400","executionCost":"543","totalCost":"508943"},"external":{"createProposal(address,bytes,uint64,uint64,(address,uint256,bytes)[],uint256)":"infinite","createProposalId()":"infinite","executeProposal(address,uint256,(address,uint256,bytes)[],uint256)":"infinite","proposalCount()":"2374","supportsInterface(bytes4)":"427"}},"methodIdentifiers":{"createProposal(address,bytes,uint64,uint64,(address,uint256,bytes)[],uint256)":"73e1166d","createProposalId()":"7b2bf56e","executeProposal(address,uint256,(address,uint256,bytes)[],uint256)":"634a9a88","proposalCount()":"da35c664","supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"proposalId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"creator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"startDate\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"endDate\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"struct IDAO.Action[]\",\"name\":\"actions\",\"type\":\"tuple[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"allowFailureMap\",\"type\":\"uint256\"}],\"name\":\"ProposalCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"proposalId\",\"type\":\"uint256\"}],\"name\":\"ProposalExecuted\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_creator\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_metadata\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"_startDate\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"_endDate\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IDAO.Action[]\",\"name\":\"_actions\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"_allowFailureMap\",\"type\":\"uint256\"}],\"name\":\"createProposal\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"proposalId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"createProposalId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"proposalId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IDAO\",\"name\":\"_dao\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_proposalId\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IDAO.Action[]\",\"name\":\"_actions\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"_allowFailureMap\",\"type\":\"uint256\"}],\"name\":\"executeProposal\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"execResults\",\"type\":\"bytes[]\"},{\"internalType\":\"uint256\",\"name\":\"failureMap\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proposalCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"DO NOT USE IN PRODUCTION!\",\"kind\":\"dev\",\"methods\":{\"proposalCount()\":{\"returns\":{\"_0\":\"The proposal count.\"}},\"supportsInterface(bytes4)\":{\"params\":{\"_interfaceId\":\"The ID of the interface.\"},\"returns\":{\"_0\":\"Returns `true` if the interface is supported.\"}}},\"version\":1},\"userdoc\":{\"events\":{\"ProposalCreated(uint256,address,uint64,uint64,bytes,(address,uint256,bytes)[],uint256)\":{\"notice\":\"Emitted when a proposal is created.\"},\"ProposalExecuted(uint256)\":{\"notice\":\"Emitted when a proposal is executed.\"}},\"kind\":\"user\",\"methods\":{\"proposalCount()\":{\"notice\":\"Returns the proposal count determining the next proposal ID.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Checks if this or the parent contract supports an interface by its ID.\"}},\"notice\":\"A mock contract containing functions to create and execute proposals as well as storage gaps in inherited contracts to be used in UUPS upgradeable contracts.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/mocks/plugin/extensions/proposal/ProposalUpgradeableMock.sol\":\"ProposalUpgradeableMock\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Counters.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title Counters\\n * @author Matt Condon (@shrugs)\\n * @dev Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number\\n * of elements in a mapping, issuing ERC721 ids, or counting request ids.\\n *\\n * Include with `using Counters for Counters.Counter;`\\n */\\nlibrary CountersUpgradeable {\\n struct Counter {\\n // This variable should never be directly accessed by users of the library: interactions must be restricted to\\n // the library's function. As of Solidity v0.5.2, this cannot be enforced, though there is a proposal to add\\n // this feature: see https://github.com/ethereum/solidity/issues/4637\\n uint256 _value; // default: 0\\n }\\n\\n function current(Counter storage counter) internal view returns (uint256) {\\n return counter._value;\\n }\\n\\n function increment(Counter storage counter) internal {\\n unchecked {\\n counter._value += 1;\\n }\\n }\\n\\n function decrement(Counter storage counter) internal {\\n uint256 value = counter._value;\\n require(value > 0, \\\"Counter: decrement overflow\\\");\\n unchecked {\\n counter._value = value - 1;\\n }\\n }\\n\\n function reset(Counter storage counter) internal {\\n counter._value = 0;\\n }\\n}\\n\",\"keccak256\":\"0x798741e231b22b81e2dd2eddaaf8832dee4baf5cd8e2dbaa5c1dd12a1c053c4d\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165Upgradeable.sol\\\";\\nimport {Initializable} from \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165Upgradeable is Initializable, IERC165Upgradeable {\\n function __ERC165_init() internal onlyInitializing {\\n }\\n\\n function __ERC165_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165Upgradeable).interfaceId;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0xd90d7723512df65ae417adaf0801042940f0dabd60039ceeaffe34aa5b238da1\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165Upgradeable {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\"},\"src/dao/IDAO.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IDAO\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for DAOs within the Aragon App DAO framework.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IDAO {\\n /// @notice The action struct to be consumed by the DAO's `execute` function resulting in an external call.\\n /// @param to The address to call.\\n /// @param value The native token value to be sent with the call.\\n /// @param data The bytes-encoded function selector and calldata for the call.\\n struct Action {\\n address to;\\n uint256 value;\\n bytes data;\\n }\\n\\n /// @notice Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\\n /// @param _where The address of the contract.\\n /// @param _who The address of a EOA or contract to give the permissions.\\n /// @param _permissionId The permission identifier.\\n /// @param _data The optional data passed to the `PermissionCondition` registered.\\n /// @return Returns true if the address has permission, false if not.\\n function hasPermission(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes memory _data\\n ) external view returns (bool);\\n\\n /// @notice Updates the DAO metadata (e.g., an IPFS hash).\\n /// @param _metadata The IPFS hash of the new metadata object.\\n function setMetadata(bytes calldata _metadata) external;\\n\\n /// @notice Emitted when the DAO metadata is updated.\\n /// @param metadata The IPFS hash of the new metadata object.\\n event MetadataSet(bytes metadata);\\n\\n /// @notice Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted.\\n /// @param _callId The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce.\\n /// @param _actions The array of actions.\\n /// @param _allowFailureMap A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @return The array of results obtained from the executed actions in `bytes`.\\n /// @return The resulting failure map containing the actions have actually failed.\\n function execute(\\n bytes32 _callId,\\n Action[] memory _actions,\\n uint256 _allowFailureMap\\n ) external returns (bytes[] memory, uint256);\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param actor The address of the caller.\\n /// @param callId The ID of the call.\\n /// @param actions The array of actions executed.\\n /// @param allowFailureMap The allow failure map encoding which actions are allowed to fail.\\n /// @param failureMap The failure map encoding which actions have failed.\\n /// @param execResults The array with the results of the executed actions.\\n /// @dev The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce.\\n event Executed(\\n address indexed actor,\\n bytes32 callId,\\n Action[] actions,\\n uint256 allowFailureMap,\\n uint256 failureMap,\\n bytes[] execResults\\n );\\n\\n /// @notice Emitted when a standard callback is registered.\\n /// @param interfaceId The ID of the interface.\\n /// @param callbackSelector The selector of the callback function.\\n /// @param magicNumber The magic number to be registered for the callback function selector.\\n event StandardCallbackRegistered(\\n bytes4 interfaceId,\\n bytes4 callbackSelector,\\n bytes4 magicNumber\\n );\\n\\n /// @notice Deposits (native) tokens to the DAO contract with a reference string.\\n /// @param _token The address of the token or address(0) in case of the native token.\\n /// @param _amount The amount of tokens to deposit.\\n /// @param _reference The reference describing the deposit reason.\\n function deposit(address _token, uint256 _amount, string calldata _reference) external payable;\\n\\n /// @notice Emitted when a token deposit has been made to the DAO.\\n /// @param sender The address of the sender.\\n /// @param token The address of the deposited token.\\n /// @param amount The amount of tokens deposited.\\n /// @param _reference The reference describing the deposit reason.\\n event Deposited(\\n address indexed sender,\\n address indexed token,\\n uint256 amount,\\n string _reference\\n );\\n\\n /// @notice Emitted when a native token deposit has been made to the DAO.\\n /// @dev This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).\\n /// @param sender The address of the sender.\\n /// @param amount The amount of native tokens deposited.\\n event NativeTokenDeposited(address sender, uint256 amount);\\n\\n /// @notice Setter for the trusted forwarder verifying the meta transaction.\\n /// @param _trustedForwarder The trusted forwarder address.\\n function setTrustedForwarder(address _trustedForwarder) external;\\n\\n /// @notice Getter for the trusted forwarder verifying the meta transaction.\\n /// @return The trusted forwarder address.\\n function getTrustedForwarder() external view returns (address);\\n\\n /// @notice Emitted when a new TrustedForwarder is set on the DAO.\\n /// @param forwarder the new forwarder address.\\n event TrustedForwarderSet(address forwarder);\\n\\n /// @notice Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\\n /// @param _hash The hash of the data to be signed.\\n /// @param _signature The signature byte array associated with `_hash`.\\n /// @return Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not.\\n function isValidSignature(bytes32 _hash, bytes memory _signature) external returns (bytes4);\\n\\n /// @notice Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\\n /// @param _interfaceId The ID of the interface.\\n /// @param _callbackSelector The selector of the callback function.\\n /// @param _magicNumber The magic number to be registered for the function signature.\\n function registerStandardCallback(\\n bytes4 _interfaceId,\\n bytes4 _callbackSelector,\\n bytes4 _magicNumber\\n ) external;\\n\\n /// @notice Removed function being left here to not corrupt the IDAO interface ID. Any call will revert.\\n /// @dev Introduced in v1.0.0. Removed in v1.4.0.\\n function setSignatureValidator(address) external;\\n}\\n\",\"keccak256\":\"0xb7f615523c26de042edce98731c658f44a1edb2464387ac1b642c4c69f57128e\",\"license\":\"AGPL-3.0-or-later\"},\"src/mocks/plugin/extensions/proposal/ProposalUpgradeableMock.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ProposalUpgradeable} from \\\"../../../../plugin/extensions/proposal/ProposalUpgradeable.sol\\\";\\nimport {IDAO} from \\\"../../../../dao/IDAO.sol\\\";\\n\\n/// @notice A mock contract containing functions to create and execute proposals as well as storage gaps in inherited contracts to be used in UUPS upgradeable contracts.\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract ProposalUpgradeableMock is ProposalUpgradeable {\\n function createProposalId() external returns (uint256 proposalId) {\\n proposalId = _createProposalId();\\n }\\n\\n function createProposal(\\n address _creator,\\n bytes calldata _metadata,\\n uint64 _startDate,\\n uint64 _endDate,\\n IDAO.Action[] calldata _actions,\\n uint256 _allowFailureMap\\n ) external returns (uint256 proposalId) {\\n proposalId = _createProposal(\\n _creator,\\n _metadata,\\n _startDate,\\n _endDate,\\n _actions,\\n _allowFailureMap\\n );\\n }\\n\\n function executeProposal(\\n IDAO _dao,\\n uint256 _proposalId,\\n IDAO.Action[] memory _actions,\\n uint256 _allowFailureMap\\n ) external returns (bytes[] memory execResults, uint256 failureMap) {\\n (execResults, failureMap) = _executeProposal(_dao, _proposalId, _actions, _allowFailureMap);\\n }\\n}\\n\",\"keccak256\":\"0x0c8c9471fdd46b4a1bd6ec963eaab4852941bd134ae637a486a8abbd54642f7c\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/extensions/proposal/IProposal.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IDAO} from \\\"../../../dao/IDAO.sol\\\";\\n\\n/// @title IProposal\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface to be implemented by DAO plugins that create and execute proposals.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IProposal {\\n /// @notice Emitted when a proposal is created.\\n /// @param proposalId The ID of the proposal.\\n /// @param creator The creator of the proposal.\\n /// @param startDate The start date of the proposal in seconds.\\n /// @param endDate The end date of the proposal in seconds.\\n /// @param metadata The metadata of the proposal.\\n /// @param actions The actions that will be executed if the proposal passes.\\n /// @param allowFailureMap A bitmap allowing the proposal to succeed, even if individual actions might revert. If the bit at index `i` is 1, the proposal succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n event ProposalCreated(\\n uint256 indexed proposalId,\\n address indexed creator,\\n uint64 startDate,\\n uint64 endDate,\\n bytes metadata,\\n IDAO.Action[] actions,\\n uint256 allowFailureMap\\n );\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param proposalId The ID of the proposal.\\n event ProposalExecuted(uint256 indexed proposalId);\\n\\n /// @notice Returns the proposal count determining the next proposal ID.\\n /// @return The proposal count.\\n function proposalCount() external view returns (uint256);\\n}\\n\",\"keccak256\":\"0x06205453d6800f598d41848ba9ebf50919ffb773f3ba63247ddcfb2464358239\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/extensions/proposal/ProposalUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {CountersUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol\\\";\\nimport {ERC165Upgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\\\";\\n\\nimport {IDAO} from \\\"../../../dao/IDAO.sol\\\";\\nimport {IProposal} from \\\"./IProposal.sol\\\";\\n\\n/// @title ProposalUpgradeable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract contract containing the traits and internal functionality to create and execute proposals that can be inherited by upgradeable DAO plugins.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract ProposalUpgradeable is IProposal, ERC165Upgradeable {\\n using CountersUpgradeable for CountersUpgradeable.Counter;\\n\\n /// @notice The incremental ID for proposals and executions.\\n CountersUpgradeable.Counter private proposalCounter;\\n\\n /// @inheritdoc IProposal\\n function proposalCount() public view override returns (uint256) {\\n return proposalCounter.current();\\n }\\n\\n /// @notice Checks if this or the parent contract supports an interface by its ID.\\n /// @param _interfaceId The ID of the interface.\\n /// @return Returns `true` if the interface is supported.\\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\\n return _interfaceId == type(IProposal).interfaceId || super.supportsInterface(_interfaceId);\\n }\\n\\n /// @notice Creates a proposal ID.\\n /// @return proposalId The proposal ID.\\n function _createProposalId() internal returns (uint256 proposalId) {\\n proposalId = proposalCount();\\n proposalCounter.increment();\\n }\\n\\n /// @notice Internal function to create a proposal.\\n /// @param _metadata The proposal metadata.\\n /// @param _startDate The start date of the proposal in seconds.\\n /// @param _endDate The end date of the proposal in seconds.\\n /// @param _allowFailureMap A bitmap allowing the proposal to succeed, even if individual actions might revert. If the bit at index `i` is 1, the proposal succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @param _actions The actions that will be executed after the proposal passes.\\n /// @return proposalId The ID of the proposal.\\n function _createProposal(\\n address _creator,\\n bytes calldata _metadata,\\n uint64 _startDate,\\n uint64 _endDate,\\n IDAO.Action[] calldata _actions,\\n uint256 _allowFailureMap\\n ) internal virtual returns (uint256 proposalId) {\\n proposalId = _createProposalId();\\n\\n emit ProposalCreated({\\n proposalId: proposalId,\\n creator: _creator,\\n metadata: _metadata,\\n startDate: _startDate,\\n endDate: _endDate,\\n actions: _actions,\\n allowFailureMap: _allowFailureMap\\n });\\n }\\n\\n /// @notice Internal function to execute a proposal.\\n /// @param _proposalId The ID of the proposal to be executed.\\n /// @param _actions The array of actions to be executed.\\n /// @param _allowFailureMap A bitmap allowing the proposal to succeed, even if individual actions might revert. If the bit at index `i` is 1, the proposal succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @return execResults The array with the results of the executed actions.\\n /// @return failureMap The failure map encoding which actions have failed.\\n function _executeProposal(\\n IDAO _dao,\\n uint256 _proposalId,\\n IDAO.Action[] memory _actions,\\n uint256 _allowFailureMap\\n ) internal virtual returns (bytes[] memory execResults, uint256 failureMap) {\\n (execResults, failureMap) = _dao.execute(bytes32(_proposalId), _actions, _allowFailureMap);\\n emit ProposalExecuted({proposalId: _proposalId});\\n }\\n\\n /// @notice This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain (see [OpenZeppelin's guide about storage gaps](https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps)).\\n uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0x6ec477b535a4c08fb0464db637f67bed89c89086150c1d3c107f9a69afc65a73\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[{"astId":372,"contract":"src/mocks/plugin/extensions/proposal/ProposalUpgradeableMock.sol:ProposalUpgradeableMock","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":375,"contract":"src/mocks/plugin/extensions/proposal/ProposalUpgradeableMock.sol:ProposalUpgradeableMock","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":2821,"contract":"src/mocks/plugin/extensions/proposal/ProposalUpgradeableMock.sol:ProposalUpgradeableMock","label":"__gap","offset":0,"slot":"1","type":"t_array(t_uint256)50_storage"},{"astId":14069,"contract":"src/mocks/plugin/extensions/proposal/ProposalUpgradeableMock.sol:ProposalUpgradeableMock","label":"proposalCounter","offset":0,"slot":"51","type":"t_struct(Counter)2599_storage"},{"astId":14200,"contract":"src/mocks/plugin/extensions/proposal/ProposalUpgradeableMock.sol:ProposalUpgradeableMock","label":"__gap","offset":0,"slot":"52","type":"t_array(t_uint256)49_storage"}],"types":{"t_array(t_uint256)49_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[49]","numberOfBytes":"1568"},"t_array(t_uint256)50_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[50]","numberOfBytes":"1600"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_struct(Counter)2599_storage":{"encoding":"inplace","label":"struct CountersUpgradeable.Counter","members":[{"astId":2598,"contract":"src/mocks/plugin/extensions/proposal/ProposalUpgradeableMock.sol:ProposalUpgradeableMock","label":"_value","offset":0,"slot":"0","type":"t_uint256"}],"numberOfBytes":"32"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"events":{"ProposalCreated(uint256,address,uint64,uint64,bytes,(address,uint256,bytes)[],uint256)":{"notice":"Emitted when a proposal is created."},"ProposalExecuted(uint256)":{"notice":"Emitted when a proposal is executed."}},"kind":"user","methods":{"proposalCount()":{"notice":"Returns the proposal count determining the next proposal ID."},"supportsInterface(bytes4)":{"notice":"Checks if this or the parent contract supports an interface by its ID."}},"notice":"A mock contract containing functions to create and execute proposals as well as storage gaps in inherited contracts to be used in UUPS upgradeable contracts.","version":1}}},"src/mocks/token/ERC1155Mock.sol":{"ERC1155Mock":{"abi":[{"inputs":[{"internalType":"string","name":"_uri","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"TransferSingle","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"value","type":"string"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"URI","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeBatchTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"DO NOT USE IN PRODUCTION!","kind":"dev","methods":{"balanceOf(address,uint256)":{"details":"See {IERC1155-balanceOf}. Requirements: - `account` cannot be the zero address."},"balanceOfBatch(address[],uint256[])":{"details":"See {IERC1155-balanceOfBatch}. Requirements: - `accounts` and `ids` must have the same length."},"isApprovedForAll(address,address)":{"details":"See {IERC1155-isApprovedForAll}."},"safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)":{"details":"See {IERC1155-safeBatchTransferFrom}."},"safeTransferFrom(address,address,uint256,uint256,bytes)":{"details":"See {IERC1155-safeTransferFrom}."},"setApprovalForAll(address,bool)":{"details":"See {IERC1155-setApprovalForAll}."},"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."},"uri(uint256)":{"details":"See {IERC1155MetadataURI-uri}. This implementation returns the same URI for *all* token types. It relies on the token type ID substitution mechanism https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP]. Clients calling this function must replace the `\\{id\\}` substring with the actual token type ID."}},"version":1},"evm":{"bytecode":{"functionDebugData":{"@_12643":{"entryPoint":null,"id":12643,"parameterSlots":1,"returnSlots":0},"@_5800":{"entryPoint":null,"id":5800,"parameterSlots":1,"returnSlots":0},"@_setURI_6311":{"entryPoint":72,"id":6311,"parameterSlots":1,"returnSlots":0},"abi_decode_tuple_t_string_memory_ptr_fromMemory":{"entryPoint":112,"id":null,"parameterSlots":2,"returnSlots":1},"array_dataslot_string_storage":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"clean_up_bytearray_end_slots_string_storage":{"entryPoint":385,"id":null,"parameterSlots":3,"returnSlots":0},"copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage":{"entryPoint":468,"id":null,"parameterSlots":2,"returnSlots":0},"extract_byte_array_length":{"entryPoint":325,"id":null,"parameterSlots":1,"returnSlots":1},"extract_used_part_and_set_length_of_short_byte_array":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"panic_error_0x41":{"entryPoint":90,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:3779:92","statements":[{"nodeType":"YulBlock","src":"6:3:92","statements":[]},{"body":{"nodeType":"YulBlock","src":"46:95:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"63:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"70:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"75:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"66:3:92"},"nodeType":"YulFunctionCall","src":"66:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"56:6:92"},"nodeType":"YulFunctionCall","src":"56:31:92"},"nodeType":"YulExpressionStatement","src":"56:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"103:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"106:4:92","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"96:6:92"},"nodeType":"YulFunctionCall","src":"96:15:92"},"nodeType":"YulExpressionStatement","src":"96:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"127:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"130:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"120:6:92"},"nodeType":"YulFunctionCall","src":"120:15:92"},"nodeType":"YulExpressionStatement","src":"120:15:92"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"14:127:92"},{"body":{"nodeType":"YulBlock","src":"237:951:92","statements":[{"nodeType":"YulVariableDeclaration","src":"247:12:92","value":{"kind":"number","nodeType":"YulLiteral","src":"257:2:92","type":"","value":"32"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"251:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"304:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"313:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"316:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"306:6:92"},"nodeType":"YulFunctionCall","src":"306:12:92"},"nodeType":"YulExpressionStatement","src":"306:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"279:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"288:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"275:3:92"},"nodeType":"YulFunctionCall","src":"275:23:92"},{"name":"_1","nodeType":"YulIdentifier","src":"300:2:92"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"271:3:92"},"nodeType":"YulFunctionCall","src":"271:32:92"},"nodeType":"YulIf","src":"268:52:92"},{"nodeType":"YulVariableDeclaration","src":"329:30:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"349:9:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"343:5:92"},"nodeType":"YulFunctionCall","src":"343:16:92"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"333:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"368:28:92","value":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"386:2:92","type":"","value":"64"},{"kind":"number","nodeType":"YulLiteral","src":"390:1:92","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"382:3:92"},"nodeType":"YulFunctionCall","src":"382:10:92"},{"kind":"number","nodeType":"YulLiteral","src":"394:1:92","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"378:3:92"},"nodeType":"YulFunctionCall","src":"378:18:92"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"372:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"423:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"432:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"435:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"425:6:92"},"nodeType":"YulFunctionCall","src":"425:12:92"},"nodeType":"YulExpressionStatement","src":"425:12:92"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"411:6:92"},{"name":"_2","nodeType":"YulIdentifier","src":"419:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"408:2:92"},"nodeType":"YulFunctionCall","src":"408:14:92"},"nodeType":"YulIf","src":"405:34:92"},{"nodeType":"YulVariableDeclaration","src":"448:32:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"462:9:92"},{"name":"offset","nodeType":"YulIdentifier","src":"473:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"458:3:92"},"nodeType":"YulFunctionCall","src":"458:22:92"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"452:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"528:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"537:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"540:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"530:6:92"},"nodeType":"YulFunctionCall","src":"530:12:92"},"nodeType":"YulExpressionStatement","src":"530:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"507:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"511:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"503:3:92"},"nodeType":"YulFunctionCall","src":"503:13:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"518:7:92"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"499:3:92"},"nodeType":"YulFunctionCall","src":"499:27:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"492:6:92"},"nodeType":"YulFunctionCall","src":"492:35:92"},"nodeType":"YulIf","src":"489:55:92"},{"nodeType":"YulVariableDeclaration","src":"553:19:92","value":{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"569:2:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"563:5:92"},"nodeType":"YulFunctionCall","src":"563:9:92"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"557:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"595:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"597:16:92"},"nodeType":"YulFunctionCall","src":"597:18:92"},"nodeType":"YulExpressionStatement","src":"597:18:92"}]},"condition":{"arguments":[{"name":"_4","nodeType":"YulIdentifier","src":"587:2:92"},{"name":"_2","nodeType":"YulIdentifier","src":"591:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"584:2:92"},"nodeType":"YulFunctionCall","src":"584:10:92"},"nodeType":"YulIf","src":"581:36:92"},{"nodeType":"YulVariableDeclaration","src":"626:17:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"640:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"636:3:92"},"nodeType":"YulFunctionCall","src":"636:7:92"},"variables":[{"name":"_5","nodeType":"YulTypedName","src":"630:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"652:23:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"672:2:92","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"666:5:92"},"nodeType":"YulFunctionCall","src":"666:9:92"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"656:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"684:71:92","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"706:6:92"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"_4","nodeType":"YulIdentifier","src":"730:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"734:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"726:3:92"},"nodeType":"YulFunctionCall","src":"726:13:92"},{"name":"_5","nodeType":"YulIdentifier","src":"741:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"722:3:92"},"nodeType":"YulFunctionCall","src":"722:22:92"},{"kind":"number","nodeType":"YulLiteral","src":"746:2:92","type":"","value":"63"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"718:3:92"},"nodeType":"YulFunctionCall","src":"718:31:92"},{"name":"_5","nodeType":"YulIdentifier","src":"751:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"714:3:92"},"nodeType":"YulFunctionCall","src":"714:40:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"702:3:92"},"nodeType":"YulFunctionCall","src":"702:53:92"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"688:10:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"814:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"816:16:92"},"nodeType":"YulFunctionCall","src":"816:18:92"},"nodeType":"YulExpressionStatement","src":"816:18:92"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"773:10:92"},{"name":"_2","nodeType":"YulIdentifier","src":"785:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"770:2:92"},"nodeType":"YulFunctionCall","src":"770:18:92"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"793:10:92"},{"name":"memPtr","nodeType":"YulIdentifier","src":"805:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"790:2:92"},"nodeType":"YulFunctionCall","src":"790:22:92"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"767:2:92"},"nodeType":"YulFunctionCall","src":"767:46:92"},"nodeType":"YulIf","src":"764:72:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"852:2:92","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"856:10:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"845:6:92"},"nodeType":"YulFunctionCall","src":"845:22:92"},"nodeType":"YulExpressionStatement","src":"845:22:92"},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"883:6:92"},{"name":"_4","nodeType":"YulIdentifier","src":"891:2:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"876:6:92"},"nodeType":"YulFunctionCall","src":"876:18:92"},"nodeType":"YulExpressionStatement","src":"876:18:92"},{"body":{"nodeType":"YulBlock","src":"940:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"949:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"952:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"942:6:92"},"nodeType":"YulFunctionCall","src":"942:12:92"},"nodeType":"YulExpressionStatement","src":"942:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"917:2:92"},{"name":"_4","nodeType":"YulIdentifier","src":"921:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"913:3:92"},"nodeType":"YulFunctionCall","src":"913:11:92"},{"name":"_1","nodeType":"YulIdentifier","src":"926:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"909:3:92"},"nodeType":"YulFunctionCall","src":"909:20:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"931:7:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"906:2:92"},"nodeType":"YulFunctionCall","src":"906:33:92"},"nodeType":"YulIf","src":"903:53:92"},{"nodeType":"YulVariableDeclaration","src":"965:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"974:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"969:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"1030:83:92","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1059:6:92"},{"name":"i","nodeType":"YulIdentifier","src":"1067:1:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1055:3:92"},"nodeType":"YulFunctionCall","src":"1055:14:92"},{"name":"_1","nodeType":"YulIdentifier","src":"1071:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1051:3:92"},"nodeType":"YulFunctionCall","src":"1051:23:92"},{"arguments":[{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"1090:2:92"},{"name":"i","nodeType":"YulIdentifier","src":"1094:1:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1086:3:92"},"nodeType":"YulFunctionCall","src":"1086:10:92"},{"name":"_1","nodeType":"YulIdentifier","src":"1098:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1082:3:92"},"nodeType":"YulFunctionCall","src":"1082:19:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1076:5:92"},"nodeType":"YulFunctionCall","src":"1076:26:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1044:6:92"},"nodeType":"YulFunctionCall","src":"1044:59:92"},"nodeType":"YulExpressionStatement","src":"1044:59:92"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"995:1:92"},{"name":"_4","nodeType":"YulIdentifier","src":"998:2:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"992:2:92"},"nodeType":"YulFunctionCall","src":"992:9:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"1002:19:92","statements":[{"nodeType":"YulAssignment","src":"1004:15:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"1013:1:92"},{"name":"_1","nodeType":"YulIdentifier","src":"1016:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1009:3:92"},"nodeType":"YulFunctionCall","src":"1009:10:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"1004:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"988:3:92","statements":[]},"src":"984:129:92"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1137:6:92"},{"name":"_4","nodeType":"YulIdentifier","src":"1145:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1133:3:92"},"nodeType":"YulFunctionCall","src":"1133:15:92"},{"name":"_1","nodeType":"YulIdentifier","src":"1150:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1129:3:92"},"nodeType":"YulFunctionCall","src":"1129:24:92"},{"kind":"number","nodeType":"YulLiteral","src":"1155:1:92","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1122:6:92"},"nodeType":"YulFunctionCall","src":"1122:35:92"},"nodeType":"YulExpressionStatement","src":"1122:35:92"},{"nodeType":"YulAssignment","src":"1166:16:92","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"1176:6:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1166:6:92"}]}]},"name":"abi_decode_tuple_t_string_memory_ptr_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"203:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"214:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"226:6:92","type":""}],"src":"146:1042:92"},{"body":{"nodeType":"YulBlock","src":"1248:325:92","statements":[{"nodeType":"YulAssignment","src":"1258:22:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1272:1:92","type":"","value":"1"},{"name":"data","nodeType":"YulIdentifier","src":"1275:4:92"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"1268:3:92"},"nodeType":"YulFunctionCall","src":"1268:12:92"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"1258:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"1289:38:92","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"1319:4:92"},{"kind":"number","nodeType":"YulLiteral","src":"1325:1:92","type":"","value":"1"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1315:3:92"},"nodeType":"YulFunctionCall","src":"1315:12:92"},"variables":[{"name":"outOfPlaceEncoding","nodeType":"YulTypedName","src":"1293:18:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"1366:31:92","statements":[{"nodeType":"YulAssignment","src":"1368:27:92","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"1382:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"1390:4:92","type":"","value":"0x7f"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1378:3:92"},"nodeType":"YulFunctionCall","src":"1378:17:92"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"1368:6:92"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"1346:18:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1339:6:92"},"nodeType":"YulFunctionCall","src":"1339:26:92"},"nodeType":"YulIf","src":"1336:61:92"},{"body":{"nodeType":"YulBlock","src":"1456:111:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1477:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1484:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"1489:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1480:3:92"},"nodeType":"YulFunctionCall","src":"1480:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1470:6:92"},"nodeType":"YulFunctionCall","src":"1470:31:92"},"nodeType":"YulExpressionStatement","src":"1470:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1521:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"1524:4:92","type":"","value":"0x22"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1514:6:92"},"nodeType":"YulFunctionCall","src":"1514:15:92"},"nodeType":"YulExpressionStatement","src":"1514:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1549:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1552:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1542:6:92"},"nodeType":"YulFunctionCall","src":"1542:15:92"},"nodeType":"YulExpressionStatement","src":"1542:15:92"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"1412:18:92"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"1435:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"1443:2:92","type":"","value":"32"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"1432:2:92"},"nodeType":"YulFunctionCall","src":"1432:14:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1409:2:92"},"nodeType":"YulFunctionCall","src":"1409:38:92"},"nodeType":"YulIf","src":"1406:161:92"}]},"name":"extract_byte_array_length","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"1228:4:92","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"1237:6:92","type":""}],"src":"1193:380:92"},{"body":{"nodeType":"YulBlock","src":"1634:65:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1651:1:92","type":"","value":"0"},{"name":"ptr","nodeType":"YulIdentifier","src":"1654:3:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1644:6:92"},"nodeType":"YulFunctionCall","src":"1644:14:92"},"nodeType":"YulExpressionStatement","src":"1644:14:92"},{"nodeType":"YulAssignment","src":"1667:26:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1685:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1688:4:92","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nodeType":"YulIdentifier","src":"1675:9:92"},"nodeType":"YulFunctionCall","src":"1675:18:92"},"variableNames":[{"name":"data","nodeType":"YulIdentifier","src":"1667:4:92"}]}]},"name":"array_dataslot_string_storage","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nodeType":"YulTypedName","src":"1617:3:92","type":""}],"returnVariables":[{"name":"data","nodeType":"YulTypedName","src":"1625:4:92","type":""}],"src":"1578:121:92"},{"body":{"nodeType":"YulBlock","src":"1785:464:92","statements":[{"body":{"nodeType":"YulBlock","src":"1818:425:92","statements":[{"nodeType":"YulVariableDeclaration","src":"1832:11:92","value":{"kind":"number","nodeType":"YulLiteral","src":"1842:1:92","type":"","value":"0"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"1836:2:92","type":""}]},{"expression":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"1863:2:92"},{"name":"array","nodeType":"YulIdentifier","src":"1867:5:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1856:6:92"},"nodeType":"YulFunctionCall","src":"1856:17:92"},"nodeType":"YulExpressionStatement","src":"1856:17:92"},{"nodeType":"YulVariableDeclaration","src":"1886:31:92","value":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"1908:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"1912:4:92","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nodeType":"YulIdentifier","src":"1898:9:92"},"nodeType":"YulFunctionCall","src":"1898:19:92"},"variables":[{"name":"data","nodeType":"YulTypedName","src":"1890:4:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"1930:57:92","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"1953:4:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1963:1:92","type":"","value":"5"},{"arguments":[{"name":"startIndex","nodeType":"YulIdentifier","src":"1970:10:92"},{"kind":"number","nodeType":"YulLiteral","src":"1982:2:92","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1966:3:92"},"nodeType":"YulFunctionCall","src":"1966:19:92"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"1959:3:92"},"nodeType":"YulFunctionCall","src":"1959:27:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1949:3:92"},"nodeType":"YulFunctionCall","src":"1949:38:92"},"variables":[{"name":"deleteStart","nodeType":"YulTypedName","src":"1934:11:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"2024:23:92","statements":[{"nodeType":"YulAssignment","src":"2026:19:92","value":{"name":"data","nodeType":"YulIdentifier","src":"2041:4:92"},"variableNames":[{"name":"deleteStart","nodeType":"YulIdentifier","src":"2026:11:92"}]}]},"condition":{"arguments":[{"name":"startIndex","nodeType":"YulIdentifier","src":"2006:10:92"},{"kind":"number","nodeType":"YulLiteral","src":"2018:4:92","type":"","value":"0x20"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2003:2:92"},"nodeType":"YulFunctionCall","src":"2003:20:92"},"nodeType":"YulIf","src":"2000:47:92"},{"nodeType":"YulVariableDeclaration","src":"2060:41:92","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"2074:4:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2084:1:92","type":"","value":"5"},{"arguments":[{"name":"len","nodeType":"YulIdentifier","src":"2091:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"2096:2:92","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2087:3:92"},"nodeType":"YulFunctionCall","src":"2087:12:92"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"2080:3:92"},"nodeType":"YulFunctionCall","src":"2080:20:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2070:3:92"},"nodeType":"YulFunctionCall","src":"2070:31:92"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"2064:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2114:24:92","value":{"name":"deleteStart","nodeType":"YulIdentifier","src":"2127:11:92"},"variables":[{"name":"start","nodeType":"YulTypedName","src":"2118:5:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"2212:21:92","statements":[{"expression":{"arguments":[{"name":"start","nodeType":"YulIdentifier","src":"2221:5:92"},{"name":"_1","nodeType":"YulIdentifier","src":"2228:2:92"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"2214:6:92"},"nodeType":"YulFunctionCall","src":"2214:17:92"},"nodeType":"YulExpressionStatement","src":"2214:17:92"}]},"condition":{"arguments":[{"name":"start","nodeType":"YulIdentifier","src":"2162:5:92"},{"name":"_2","nodeType":"YulIdentifier","src":"2169:2:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2159:2:92"},"nodeType":"YulFunctionCall","src":"2159:13:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"2173:26:92","statements":[{"nodeType":"YulAssignment","src":"2175:22:92","value":{"arguments":[{"name":"start","nodeType":"YulIdentifier","src":"2188:5:92"},{"kind":"number","nodeType":"YulLiteral","src":"2195:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2184:3:92"},"nodeType":"YulFunctionCall","src":"2184:13:92"},"variableNames":[{"name":"start","nodeType":"YulIdentifier","src":"2175:5:92"}]}]},"pre":{"nodeType":"YulBlock","src":"2155:3:92","statements":[]},"src":"2151:82:92"}]},"condition":{"arguments":[{"name":"len","nodeType":"YulIdentifier","src":"1801:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"1806:2:92","type":"","value":"31"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1798:2:92"},"nodeType":"YulFunctionCall","src":"1798:11:92"},"nodeType":"YulIf","src":"1795:448:92"}]},"name":"clean_up_bytearray_end_slots_string_storage","nodeType":"YulFunctionDefinition","parameters":[{"name":"array","nodeType":"YulTypedName","src":"1757:5:92","type":""},{"name":"len","nodeType":"YulTypedName","src":"1764:3:92","type":""},{"name":"startIndex","nodeType":"YulTypedName","src":"1769:10:92","type":""}],"src":"1704:545:92"},{"body":{"nodeType":"YulBlock","src":"2339:81:92","statements":[{"nodeType":"YulAssignment","src":"2349:65:92","value":{"arguments":[{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"2364:4:92"},{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2382:1:92","type":"","value":"3"},{"name":"len","nodeType":"YulIdentifier","src":"2385:3:92"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2378:3:92"},"nodeType":"YulFunctionCall","src":"2378:11:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2395:1:92","type":"","value":"0"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"2391:3:92"},"nodeType":"YulFunctionCall","src":"2391:6:92"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"2374:3:92"},"nodeType":"YulFunctionCall","src":"2374:24:92"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"2370:3:92"},"nodeType":"YulFunctionCall","src":"2370:29:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2360:3:92"},"nodeType":"YulFunctionCall","src":"2360:40:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2406:1:92","type":"","value":"1"},{"name":"len","nodeType":"YulIdentifier","src":"2409:3:92"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2402:3:92"},"nodeType":"YulFunctionCall","src":"2402:11:92"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"2357:2:92"},"nodeType":"YulFunctionCall","src":"2357:57:92"},"variableNames":[{"name":"used","nodeType":"YulIdentifier","src":"2349:4:92"}]}]},"name":"extract_used_part_and_set_length_of_short_byte_array","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"2316:4:92","type":""},{"name":"len","nodeType":"YulTypedName","src":"2322:3:92","type":""}],"returnVariables":[{"name":"used","nodeType":"YulTypedName","src":"2330:4:92","type":""}],"src":"2254:166:92"},{"body":{"nodeType":"YulBlock","src":"2521:1256:92","statements":[{"nodeType":"YulVariableDeclaration","src":"2531:24:92","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"2551:3:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2545:5:92"},"nodeType":"YulFunctionCall","src":"2545:10:92"},"variables":[{"name":"newLen","nodeType":"YulTypedName","src":"2535:6:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"2598:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"2600:16:92"},"nodeType":"YulFunctionCall","src":"2600:18:92"},"nodeType":"YulExpressionStatement","src":"2600:18:92"}]},"condition":{"arguments":[{"name":"newLen","nodeType":"YulIdentifier","src":"2570:6:92"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2586:2:92","type":"","value":"64"},{"kind":"number","nodeType":"YulLiteral","src":"2590:1:92","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2582:3:92"},"nodeType":"YulFunctionCall","src":"2582:10:92"},{"kind":"number","nodeType":"YulLiteral","src":"2594:1:92","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2578:3:92"},"nodeType":"YulFunctionCall","src":"2578:18:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2567:2:92"},"nodeType":"YulFunctionCall","src":"2567:30:92"},"nodeType":"YulIf","src":"2564:56:92"},{"expression":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"2673:4:92"},{"arguments":[{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"2711:4:92"}],"functionName":{"name":"sload","nodeType":"YulIdentifier","src":"2705:5:92"},"nodeType":"YulFunctionCall","src":"2705:11:92"}],"functionName":{"name":"extract_byte_array_length","nodeType":"YulIdentifier","src":"2679:25:92"},"nodeType":"YulFunctionCall","src":"2679:38:92"},{"name":"newLen","nodeType":"YulIdentifier","src":"2719:6:92"}],"functionName":{"name":"clean_up_bytearray_end_slots_string_storage","nodeType":"YulIdentifier","src":"2629:43:92"},"nodeType":"YulFunctionCall","src":"2629:97:92"},"nodeType":"YulExpressionStatement","src":"2629:97:92"},{"nodeType":"YulVariableDeclaration","src":"2735:18:92","value":{"kind":"number","nodeType":"YulLiteral","src":"2752:1:92","type":"","value":"0"},"variables":[{"name":"srcOffset","nodeType":"YulTypedName","src":"2739:9:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2762:23:92","value":{"kind":"number","nodeType":"YulLiteral","src":"2781:4:92","type":"","value":"0x20"},"variables":[{"name":"srcOffset_1","nodeType":"YulTypedName","src":"2766:11:92","type":""}]},{"nodeType":"YulAssignment","src":"2794:24:92","value":{"name":"srcOffset_1","nodeType":"YulIdentifier","src":"2807:11:92"},"variableNames":[{"name":"srcOffset","nodeType":"YulIdentifier","src":"2794:9:92"}]},{"cases":[{"body":{"nodeType":"YulBlock","src":"2864:656:92","statements":[{"nodeType":"YulVariableDeclaration","src":"2878:35:92","value":{"arguments":[{"name":"newLen","nodeType":"YulIdentifier","src":"2897:6:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2909:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"2905:3:92"},"nodeType":"YulFunctionCall","src":"2905:7:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2893:3:92"},"nodeType":"YulFunctionCall","src":"2893:20:92"},"variables":[{"name":"loopEnd","nodeType":"YulTypedName","src":"2882:7:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2926:49:92","value":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"2970:4:92"}],"functionName":{"name":"array_dataslot_string_storage","nodeType":"YulIdentifier","src":"2940:29:92"},"nodeType":"YulFunctionCall","src":"2940:35:92"},"variables":[{"name":"dstPtr","nodeType":"YulTypedName","src":"2930:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2988:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"2997:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"2992:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"3075:172:92","statements":[{"expression":{"arguments":[{"name":"dstPtr","nodeType":"YulIdentifier","src":"3100:6:92"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"3118:3:92"},{"name":"srcOffset","nodeType":"YulIdentifier","src":"3123:9:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3114:3:92"},"nodeType":"YulFunctionCall","src":"3114:19:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3108:5:92"},"nodeType":"YulFunctionCall","src":"3108:26:92"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"3093:6:92"},"nodeType":"YulFunctionCall","src":"3093:42:92"},"nodeType":"YulExpressionStatement","src":"3093:42:92"},{"nodeType":"YulAssignment","src":"3152:24:92","value":{"arguments":[{"name":"dstPtr","nodeType":"YulIdentifier","src":"3166:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"3174:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3162:3:92"},"nodeType":"YulFunctionCall","src":"3162:14:92"},"variableNames":[{"name":"dstPtr","nodeType":"YulIdentifier","src":"3152:6:92"}]},{"nodeType":"YulAssignment","src":"3193:40:92","value":{"arguments":[{"name":"srcOffset","nodeType":"YulIdentifier","src":"3210:9:92"},{"name":"srcOffset_1","nodeType":"YulIdentifier","src":"3221:11:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3206:3:92"},"nodeType":"YulFunctionCall","src":"3206:27:92"},"variableNames":[{"name":"srcOffset","nodeType":"YulIdentifier","src":"3193:9:92"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3022:1:92"},{"name":"loopEnd","nodeType":"YulIdentifier","src":"3025:7:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"3019:2:92"},"nodeType":"YulFunctionCall","src":"3019:14:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"3034:28:92","statements":[{"nodeType":"YulAssignment","src":"3036:24:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3045:1:92"},{"name":"srcOffset_1","nodeType":"YulIdentifier","src":"3048:11:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3041:3:92"},"nodeType":"YulFunctionCall","src":"3041:19:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"3036:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"3015:3:92","statements":[]},"src":"3011:236:92"},{"body":{"nodeType":"YulBlock","src":"3295:166:92","statements":[{"nodeType":"YulVariableDeclaration","src":"3313:43:92","value":{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"3340:3:92"},{"name":"srcOffset","nodeType":"YulIdentifier","src":"3345:9:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3336:3:92"},"nodeType":"YulFunctionCall","src":"3336:19:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3330:5:92"},"nodeType":"YulFunctionCall","src":"3330:26:92"},"variables":[{"name":"lastValue","nodeType":"YulTypedName","src":"3317:9:92","type":""}]},{"expression":{"arguments":[{"name":"dstPtr","nodeType":"YulIdentifier","src":"3380:6:92"},{"arguments":[{"name":"lastValue","nodeType":"YulIdentifier","src":"3392:9:92"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3419:1:92","type":"","value":"3"},{"name":"newLen","nodeType":"YulIdentifier","src":"3422:6:92"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"3415:3:92"},"nodeType":"YulFunctionCall","src":"3415:14:92"},{"kind":"number","nodeType":"YulLiteral","src":"3431:3:92","type":"","value":"248"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3411:3:92"},"nodeType":"YulFunctionCall","src":"3411:24:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3441:1:92","type":"","value":"0"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"3437:3:92"},"nodeType":"YulFunctionCall","src":"3437:6:92"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"3407:3:92"},"nodeType":"YulFunctionCall","src":"3407:37:92"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"3403:3:92"},"nodeType":"YulFunctionCall","src":"3403:42:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3388:3:92"},"nodeType":"YulFunctionCall","src":"3388:58:92"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"3373:6:92"},"nodeType":"YulFunctionCall","src":"3373:74:92"},"nodeType":"YulExpressionStatement","src":"3373:74:92"}]},"condition":{"arguments":[{"name":"loopEnd","nodeType":"YulIdentifier","src":"3266:7:92"},{"name":"newLen","nodeType":"YulIdentifier","src":"3275:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"3263:2:92"},"nodeType":"YulFunctionCall","src":"3263:19:92"},"nodeType":"YulIf","src":"3260:201:92"},{"expression":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"3481:4:92"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3495:1:92","type":"","value":"1"},{"name":"newLen","nodeType":"YulIdentifier","src":"3498:6:92"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"3491:3:92"},"nodeType":"YulFunctionCall","src":"3491:14:92"},{"kind":"number","nodeType":"YulLiteral","src":"3507:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3487:3:92"},"nodeType":"YulFunctionCall","src":"3487:22:92"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"3474:6:92"},"nodeType":"YulFunctionCall","src":"3474:36:92"},"nodeType":"YulExpressionStatement","src":"3474:36:92"}]},"nodeType":"YulCase","src":"2857:663:92","value":{"kind":"number","nodeType":"YulLiteral","src":"2862:1:92","type":"","value":"1"}},{"body":{"nodeType":"YulBlock","src":"3537:234:92","statements":[{"nodeType":"YulVariableDeclaration","src":"3551:14:92","value":{"kind":"number","nodeType":"YulLiteral","src":"3564:1:92","type":"","value":"0"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"3555:5:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"3600:67:92","statements":[{"nodeType":"YulAssignment","src":"3618:35:92","value":{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"3637:3:92"},{"name":"srcOffset","nodeType":"YulIdentifier","src":"3642:9:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3633:3:92"},"nodeType":"YulFunctionCall","src":"3633:19:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3627:5:92"},"nodeType":"YulFunctionCall","src":"3627:26:92"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"3618:5:92"}]}]},"condition":{"name":"newLen","nodeType":"YulIdentifier","src":"3581:6:92"},"nodeType":"YulIf","src":"3578:89:92"},{"expression":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"3687:4:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3746:5:92"},{"name":"newLen","nodeType":"YulIdentifier","src":"3753:6:92"}],"functionName":{"name":"extract_used_part_and_set_length_of_short_byte_array","nodeType":"YulIdentifier","src":"3693:52:92"},"nodeType":"YulFunctionCall","src":"3693:67:92"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"3680:6:92"},"nodeType":"YulFunctionCall","src":"3680:81:92"},"nodeType":"YulExpressionStatement","src":"3680:81:92"}]},"nodeType":"YulCase","src":"3529:242:92","value":"default"}],"expression":{"arguments":[{"name":"newLen","nodeType":"YulIdentifier","src":"2837:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"2845:2:92","type":"","value":"31"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2834:2:92"},"nodeType":"YulFunctionCall","src":"2834:14:92"},"nodeType":"YulSwitch","src":"2827:944:92"}]},"name":"copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage","nodeType":"YulFunctionDefinition","parameters":[{"name":"slot","nodeType":"YulTypedName","src":"2506:4:92","type":""},{"name":"src","nodeType":"YulTypedName","src":"2512:3:92","type":""}],"src":"2425:1352:92"}]},"contents":"{\n { }\n function panic_error_0x41()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function abi_decode_tuple_t_string_memory_ptr_fromMemory(headStart, dataEnd) -> value0\n {\n let _1 := 32\n if slt(sub(dataEnd, headStart), _1) { revert(0, 0) }\n let offset := mload(headStart)\n let _2 := sub(shl(64, 1), 1)\n if gt(offset, _2) { revert(0, 0) }\n let _3 := add(headStart, offset)\n if iszero(slt(add(_3, 0x1f), dataEnd)) { revert(0, 0) }\n let _4 := mload(_3)\n if gt(_4, _2) { panic_error_0x41() }\n let _5 := not(31)\n let memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(and(add(_4, 0x1f), _5), 63), _5))\n if or(gt(newFreePtr, _2), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n mstore(memPtr, _4)\n if gt(add(add(_3, _4), _1), dataEnd) { revert(0, 0) }\n let i := 0\n for { } lt(i, _4) { i := add(i, _1) }\n {\n mstore(add(add(memPtr, i), _1), mload(add(add(_3, i), _1)))\n }\n mstore(add(add(memPtr, _4), _1), 0)\n value0 := memPtr\n }\n function extract_byte_array_length(data) -> length\n {\n length := shr(1, data)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n if eq(outOfPlaceEncoding, lt(length, 32))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n }\n function array_dataslot_string_storage(ptr) -> data\n {\n mstore(0, ptr)\n data := keccak256(0, 0x20)\n }\n function clean_up_bytearray_end_slots_string_storage(array, len, startIndex)\n {\n if gt(len, 31)\n {\n let _1 := 0\n mstore(_1, array)\n let data := keccak256(_1, 0x20)\n let deleteStart := add(data, shr(5, add(startIndex, 31)))\n if lt(startIndex, 0x20) { deleteStart := data }\n let _2 := add(data, shr(5, add(len, 31)))\n let start := deleteStart\n for { } lt(start, _2) { start := add(start, 1) }\n { sstore(start, _1) }\n }\n }\n function extract_used_part_and_set_length_of_short_byte_array(data, len) -> used\n {\n used := or(and(data, not(shr(shl(3, len), not(0)))), shl(1, len))\n }\n function copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage(slot, src)\n {\n let newLen := mload(src)\n if gt(newLen, sub(shl(64, 1), 1)) { panic_error_0x41() }\n clean_up_bytearray_end_slots_string_storage(slot, extract_byte_array_length(sload(slot)), newLen)\n let srcOffset := 0\n let srcOffset_1 := 0x20\n srcOffset := srcOffset_1\n switch gt(newLen, 31)\n case 1 {\n let loopEnd := and(newLen, not(31))\n let dstPtr := array_dataslot_string_storage(slot)\n let i := 0\n for { } lt(i, loopEnd) { i := add(i, srcOffset_1) }\n {\n sstore(dstPtr, mload(add(src, srcOffset)))\n dstPtr := add(dstPtr, 1)\n srcOffset := add(srcOffset, srcOffset_1)\n }\n if lt(loopEnd, newLen)\n {\n let lastValue := mload(add(src, srcOffset))\n sstore(dstPtr, and(lastValue, not(shr(and(shl(3, newLen), 248), not(0)))))\n }\n sstore(slot, add(shl(1, newLen), 1))\n }\n default {\n let value := 0\n if newLen\n {\n value := mload(add(src, srcOffset))\n }\n sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, newLen))\n }\n }\n}","id":92,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60806040523480156200001157600080fd5b5060405162001a8938038062001a89833981016040819052620000349162000070565b80620000408162000048565b5050620002a0565b6002620000568282620001d4565b5050565b634e487b7160e01b600052604160045260246000fd5b600060208083850312156200008457600080fd5b82516001600160401b03808211156200009c57600080fd5b818501915085601f830112620000b157600080fd5b815181811115620000c657620000c66200005a565b604051601f8201601f19908116603f01168101908382118183101715620000f157620000f16200005a565b8160405282815288868487010111156200010a57600080fd5b600093505b828410156200012e57848401860151818501870152928501926200010f565b600086848301015280965050505050505092915050565b600181811c908216806200015a57607f821691505b6020821081036200017b57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620001cf57600081815260208120601f850160051c81016020861015620001aa5750805b601f850160051c820191505b81811015620001cb57828155600101620001b6565b5050505b505050565b81516001600160401b03811115620001f057620001f06200005a565b620002088162000201845462000145565b8462000181565b602080601f831160018114620002405760008415620002275750858301515b600019600386901b1c1916600185901b178555620001cb565b600085815260208120601f198616915b82811015620002715788860151825594840194600190910190840162000250565b5085821015620002905787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6117d980620002b06000396000f3fe608060405234801561001057600080fd5b50600436106100bd5760003560e01c80634e1273f411610076578063e985e9c51161005b578063e985e9c514610186578063f242432a146101c2578063f5298aca146101d557600080fd5b80634e1273f414610153578063a22cb4651461017357600080fd5b80630e89341c116100a75780630e89341c1461010b578063156e29f61461012b5780632eb2c2d61461014057600080fd5b8062fdd58e146100c257806301ffc9a7146100e8575b600080fd5b6100d56100d03660046110b9565b6101e8565b6040519081526020015b60405180910390f35b6100fb6100f63660046110fc565b610294565b60405190151581526020016100df565b61011e610119366004611120565b6102e4565b6040516100df919061117f565b61013e610139366004611192565b610378565b005b61013e61014e366004611311565b610398565b6101666101613660046113bb565b61042b565b6040516100df91906114c1565b61013e6101813660046114d4565b610569565b6100fb610194366004611510565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205460ff1690565b61013e6101d0366004611543565b610578565b61013e6101e3366004611192565b610604565b60006001600160a01b03831661026b5760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201527f616c6964206f776e65720000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b506000818152602081815260408083206001600160a01b03861684529091529020545b92915050565b60006001600160e01b03198216636cdb3d1360e11b14806102c557506001600160e01b031982166303a24d0760e21b145b8061028e57506301ffc9a760e01b6001600160e01b031983161461028e565b6060600280546102f3906115a8565b80601f016020809104026020016040519081016040528092919081815260200182805461031f906115a8565b801561036c5780601f106103415761010080835404028352916020019161036c565b820191906000526020600020905b81548152906001019060200180831161034f57829003601f168201915b50505050509050919050565b6103938383836040518060200160405280600081525061060f565b505050565b6001600160a01b0385163314806103b457506103b48533610194565b6104175760405162461bcd60e51b815260206004820152602e60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201526d195c881bdc88185c1c1c9bdd995960921b6064820152608401610262565b6104248585858585610723565b5050505050565b606081518351146104a45760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e67746860448201527f206d69736d6174636800000000000000000000000000000000000000000000006064820152608401610262565b6000835167ffffffffffffffff8111156104c0576104c06111c5565b6040519080825280602002602001820160405280156104e9578160200160208202803683370190505b50905060005b84518110156105615761053485828151811061050d5761050d6115e2565b6020026020010151858381518110610527576105276115e2565b60200260200101516101e8565b828281518110610546576105466115e2565b602090810291909101015261055a8161160e565b90506104ef565b509392505050565b610574338383610996565b5050565b6001600160a01b03851633148061059457506105948533610194565b6105f75760405162461bcd60e51b815260206004820152602e60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201526d195c881bdc88185c1c1c9bdd995960921b6064820152608401610262565b6104248585858585610a8a565b610393838383610c35565b6001600160a01b03841661066f5760405162461bcd60e51b815260206004820152602160248201527f455243313135353a206d696e7420746f20746865207a65726f206164647265736044820152607360f81b6064820152608401610262565b33600061067b85610db1565b9050600061068885610db1565b90506000868152602081815260408083206001600160a01b038b168452909152812080548792906106ba908490611627565b909155505060408051878152602081018790526001600160a01b03808a1692600092918716917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a461071a83600089898989610dfc565b50505050505050565b815183511461079a5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060448201527f6d69736d617463680000000000000000000000000000000000000000000000006064820152608401610262565b6001600160a01b0384166107fe5760405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b6064820152608401610262565b3360005b845181101561092857600085828151811061081f5761081f6115e2565b60200260200101519050600085838151811061083d5761083d6115e2565b602090810291909101810151600084815280835260408082206001600160a01b038e1683529093529190912054909150818110156108d05760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201526939103a3930b739b332b960b11b6064820152608401610262565b6000838152602081815260408083206001600160a01b038e8116855292528083208585039055908b1682528120805484929061090d908490611627565b92505081905550505050806109219061160e565b9050610802565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb878760405161097892919061163a565b60405180910390a461098e818787878787610fa1565b505050505050565b816001600160a01b0316836001600160a01b031603610a1d5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c2073746174757360448201527f20666f722073656c6600000000000000000000000000000000000000000000006064820152608401610262565b6001600160a01b03838116600081815260016020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b038416610aee5760405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b6064820152608401610262565b336000610afa85610db1565b90506000610b0785610db1565b90506000868152602081815260408083206001600160a01b038c16845290915290205485811015610b8d5760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201526939103a3930b739b332b960b11b6064820152608401610262565b6000878152602081815260408083206001600160a01b038d8116855292528083208985039055908a16825281208054889290610bca908490611627565b909155505060408051888152602081018890526001600160a01b03808b16928c821692918816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4610c2a848a8a8a8a8a610dfc565b505050505050505050565b6001600160a01b038316610c975760405162461bcd60e51b815260206004820152602360248201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260448201526265737360e81b6064820152608401610262565b336000610ca384610db1565b90506000610cb084610db1565b60408051602080820183526000918290528882528181528282206001600160a01b038b1683529052205490915084811015610d395760405162461bcd60e51b8152602060048201526024808201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c604482015263616e636560e01b6064820152608401610262565b6000868152602081815260408083206001600160a01b038b81168086529184528285208a8703905582518b81529384018a90529092908816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a460408051602081019091526000905261071a565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110610deb57610deb6115e2565b602090810291909101015292915050565b6001600160a01b0384163b1561098e5760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e6190610e409089908990889088908890600401611668565b6020604051808303816000875af1925050508015610e7b575060408051601f3d908101601f19168201909252610e78918101906116ab565b60015b610f3057610e876116c8565b806308c379a003610ec05750610e9b6116e4565b80610ea65750610ec2565b8060405162461bcd60e51b8152600401610262919061117f565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e2d4552433131353560448201527f526563656976657220696d706c656d656e7465720000000000000000000000006064820152608401610262565b6001600160e01b0319811663f23a6e6160e01b1461071a5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a656374656044820152676420746f6b656e7360c01b6064820152608401610262565b6001600160a01b0384163b1561098e5760405163bc197c8160e01b81526001600160a01b0385169063bc197c8190610fe5908990899088908890889060040161176e565b6020604051808303816000875af1925050508015611020575060408051601f3d908101601f1916820190925261101d918101906116ab565b60015b61102c57610e876116c8565b6001600160e01b0319811663bc197c8160e01b1461071a5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a656374656044820152676420746f6b656e7360c01b6064820152608401610262565b80356001600160a01b03811681146110b457600080fd5b919050565b600080604083850312156110cc57600080fd5b6110d58361109d565b946020939093013593505050565b6001600160e01b0319811681146110f957600080fd5b50565b60006020828403121561110e57600080fd5b8135611119816110e3565b9392505050565b60006020828403121561113257600080fd5b5035919050565b6000815180845260005b8181101561115f57602081850181015186830182015201611143565b506000602082860101526020601f19601f83011685010191505092915050565b6020815260006111196020830184611139565b6000806000606084860312156111a757600080fd5b6111b08461109d565b95602085013595506040909401359392505050565b634e487b7160e01b600052604160045260246000fd5b601f8201601f1916810167ffffffffffffffff81118282101715611201576112016111c5565b6040525050565b600067ffffffffffffffff821115611222576112226111c5565b5060051b60200190565b600082601f83011261123d57600080fd5b8135602061124a82611208565b60405161125782826111db565b83815260059390931b850182019282810191508684111561127757600080fd5b8286015b84811015611292578035835291830191830161127b565b509695505050505050565b600082601f8301126112ae57600080fd5b813567ffffffffffffffff8111156112c8576112c86111c5565b6040516112df601f8301601f1916602001826111db565b8181528460208386010111156112f457600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a0868803121561132957600080fd5b6113328661109d565b94506113406020870161109d565b9350604086013567ffffffffffffffff8082111561135d57600080fd5b61136989838a0161122c565b9450606088013591508082111561137f57600080fd5b61138b89838a0161122c565b935060808801359150808211156113a157600080fd5b506113ae8882890161129d565b9150509295509295909350565b600080604083850312156113ce57600080fd5b823567ffffffffffffffff808211156113e657600080fd5b818501915085601f8301126113fa57600080fd5b8135602061140782611208565b60405161141482826111db565b83815260059390931b850182019282810191508984111561143457600080fd5b948201945b838610156114595761144a8661109d565b82529482019490820190611439565b9650508601359250508082111561146f57600080fd5b5061147c8582860161122c565b9150509250929050565b600081518084526020808501945080840160005b838110156114b65781518752958201959082019060010161149a565b509495945050505050565b6020815260006111196020830184611486565b600080604083850312156114e757600080fd5b6114f08361109d565b91506020830135801515811461150557600080fd5b809150509250929050565b6000806040838503121561152357600080fd5b61152c8361109d565b915061153a6020840161109d565b90509250929050565b600080600080600060a0868803121561155b57600080fd5b6115648661109d565b94506115726020870161109d565b93506040860135925060608601359150608086013567ffffffffffffffff81111561159c57600080fd5b6113ae8882890161129d565b600181811c908216806115bc57607f821691505b6020821081036115dc57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201611620576116206115f8565b5060010190565b8082018082111561028e5761028e6115f8565b60408152600061164d6040830185611486565b828103602084015261165f8185611486565b95945050505050565b60006001600160a01b03808816835280871660208401525084604083015283606083015260a060808301526116a060a0830184611139565b979650505050505050565b6000602082840312156116bd57600080fd5b8151611119816110e3565b600060033d11156116e15760046000803e5060005160e01c5b90565b600060443d10156116f25790565b6040516003193d81016004833e81513d67ffffffffffffffff816024840111818411171561172257505050505090565b828501915081518181111561173a5750505050505090565b843d87010160208285010111156117545750505050505090565b611763602082860101876111db565b509095945050505050565b60006001600160a01b03808816835280871660208401525060a0604083015261179a60a0830186611486565b82810360608401526117ac8186611486565b905082810360808401526117c08185611139565b9897505050505050505056fea164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x1A89 CODESIZE SUB DUP1 PUSH3 0x1A89 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x34 SWAP2 PUSH3 0x70 JUMP JUMPDEST DUP1 PUSH3 0x40 DUP2 PUSH3 0x48 JUMP JUMPDEST POP POP PUSH3 0x2A0 JUMP JUMPDEST PUSH1 0x2 PUSH3 0x56 DUP3 DUP3 PUSH3 0x1D4 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x84 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH3 0x9C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH3 0xB1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH3 0xC6 JUMPI PUSH3 0xC6 PUSH3 0x5A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH3 0xF1 JUMPI PUSH3 0xF1 PUSH3 0x5A JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 DUP7 DUP5 DUP8 ADD ADD GT ISZERO PUSH3 0x10A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP4 POP JUMPDEST DUP3 DUP5 LT ISZERO PUSH3 0x12E JUMPI DUP5 DUP5 ADD DUP7 ADD MLOAD DUP2 DUP6 ADD DUP8 ADD MSTORE SWAP3 DUP6 ADD SWAP3 PUSH3 0x10F JUMP JUMPDEST PUSH1 0x0 DUP7 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP7 POP POP POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH3 0x15A JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH3 0x17B JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH3 0x1CF JUMPI PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP7 LT ISZERO PUSH3 0x1AA JUMPI POP DUP1 JUMPDEST PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x1CB JUMPI DUP3 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x1B6 JUMP JUMPDEST POP POP POP JUMPDEST POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH3 0x1F0 JUMPI PUSH3 0x1F0 PUSH3 0x5A JUMP JUMPDEST PUSH3 0x208 DUP2 PUSH3 0x201 DUP5 SLOAD PUSH3 0x145 JUMP JUMPDEST DUP5 PUSH3 0x181 JUMP JUMPDEST PUSH1 0x20 DUP1 PUSH1 0x1F DUP4 GT PUSH1 0x1 DUP2 EQ PUSH3 0x240 JUMPI PUSH1 0x0 DUP5 ISZERO PUSH3 0x227 JUMPI POP DUP6 DUP4 ADD MLOAD JUMPDEST PUSH1 0x0 NOT PUSH1 0x3 DUP7 SWAP1 SHL SHR NOT AND PUSH1 0x1 DUP6 SWAP1 SHL OR DUP6 SSTORE PUSH3 0x1CB JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F NOT DUP7 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH3 0x271 JUMPI DUP9 DUP7 ADD MLOAD DUP3 SSTORE SWAP5 DUP5 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 DUP5 ADD PUSH3 0x250 JUMP JUMPDEST POP DUP6 DUP3 LT ISZERO PUSH3 0x290 JUMPI DUP8 DUP6 ADD MLOAD PUSH1 0x0 NOT PUSH1 0x3 DUP9 SWAP1 SHL PUSH1 0xF8 AND SHR NOT AND DUP2 SSTORE JUMPDEST POP POP POP POP POP PUSH1 0x1 SWAP1 DUP2 SHL ADD SWAP1 SSTORE POP JUMP JUMPDEST PUSH2 0x17D9 DUP1 PUSH3 0x2B0 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xBD JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x4E1273F4 GT PUSH2 0x76 JUMPI DUP1 PUSH4 0xE985E9C5 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x186 JUMPI DUP1 PUSH4 0xF242432A EQ PUSH2 0x1C2 JUMPI DUP1 PUSH4 0xF5298ACA EQ PUSH2 0x1D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x4E1273F4 EQ PUSH2 0x153 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x173 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xE89341C GT PUSH2 0xA7 JUMPI DUP1 PUSH4 0xE89341C EQ PUSH2 0x10B JUMPI DUP1 PUSH4 0x156E29F6 EQ PUSH2 0x12B JUMPI DUP1 PUSH4 0x2EB2C2D6 EQ PUSH2 0x140 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH3 0xFDD58E EQ PUSH2 0xC2 JUMPI DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xE8 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD5 PUSH2 0xD0 CALLDATASIZE PUSH1 0x4 PUSH2 0x10B9 JUMP JUMPDEST PUSH2 0x1E8 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xFB PUSH2 0xF6 CALLDATASIZE PUSH1 0x4 PUSH2 0x10FC JUMP JUMPDEST PUSH2 0x294 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xDF JUMP JUMPDEST PUSH2 0x11E PUSH2 0x119 CALLDATASIZE PUSH1 0x4 PUSH2 0x1120 JUMP JUMPDEST PUSH2 0x2E4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xDF SWAP2 SWAP1 PUSH2 0x117F JUMP JUMPDEST PUSH2 0x13E PUSH2 0x139 CALLDATASIZE PUSH1 0x4 PUSH2 0x1192 JUMP JUMPDEST PUSH2 0x378 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x13E PUSH2 0x14E CALLDATASIZE PUSH1 0x4 PUSH2 0x1311 JUMP JUMPDEST PUSH2 0x398 JUMP JUMPDEST PUSH2 0x166 PUSH2 0x161 CALLDATASIZE PUSH1 0x4 PUSH2 0x13BB JUMP JUMPDEST PUSH2 0x42B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xDF SWAP2 SWAP1 PUSH2 0x14C1 JUMP JUMPDEST PUSH2 0x13E PUSH2 0x181 CALLDATASIZE PUSH1 0x4 PUSH2 0x14D4 JUMP JUMPDEST PUSH2 0x569 JUMP JUMPDEST PUSH2 0xFB PUSH2 0x194 CALLDATASIZE PUSH1 0x4 PUSH2 0x1510 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x13E PUSH2 0x1D0 CALLDATASIZE PUSH1 0x4 PUSH2 0x1543 JUMP JUMPDEST PUSH2 0x578 JUMP JUMPDEST PUSH2 0x13E PUSH2 0x1E3 CALLDATASIZE PUSH1 0x4 PUSH2 0x1192 JUMP JUMPDEST PUSH2 0x604 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x26B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A2061646472657373207A65726F206973206E6F7420612076 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x616C6964206F776E657200000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x6CDB3D13 PUSH1 0xE1 SHL EQ DUP1 PUSH2 0x2C5 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x3A24D07 PUSH1 0xE2 SHL EQ JUMPDEST DUP1 PUSH2 0x28E JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ PUSH2 0x28E JUMP JUMPDEST PUSH1 0x60 PUSH1 0x2 DUP1 SLOAD PUSH2 0x2F3 SWAP1 PUSH2 0x15A8 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x31F SWAP1 PUSH2 0x15A8 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x36C JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x341 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x36C JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x34F JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x393 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x60F JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND CALLER EQ DUP1 PUSH2 0x3B4 JUMPI POP PUSH2 0x3B4 DUP6 CALLER PUSH2 0x194 JUMP JUMPDEST PUSH2 0x417 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A2063616C6C6572206973206E6F7420746F6B656E206F776E PUSH1 0x44 DUP3 ADD MSTORE PUSH14 0x195C881BDC88185C1C1C9BDD9959 PUSH1 0x92 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x262 JUMP JUMPDEST PUSH2 0x424 DUP6 DUP6 DUP6 DUP6 DUP6 PUSH2 0x723 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 MLOAD DUP4 MLOAD EQ PUSH2 0x4A4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A206163636F756E747320616E6420696473206C656E677468 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x206D69736D617463680000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x262 JUMP JUMPDEST PUSH1 0x0 DUP4 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x4C0 JUMPI PUSH2 0x4C0 PUSH2 0x11C5 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x4E9 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x561 JUMPI PUSH2 0x534 DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x50D JUMPI PUSH2 0x50D PUSH2 0x15E2 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x527 JUMPI PUSH2 0x527 PUSH2 0x15E2 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x1E8 JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x546 JUMPI PUSH2 0x546 PUSH2 0x15E2 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH2 0x55A DUP2 PUSH2 0x160E JUMP JUMPDEST SWAP1 POP PUSH2 0x4EF JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x574 CALLER DUP4 DUP4 PUSH2 0x996 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND CALLER EQ DUP1 PUSH2 0x594 JUMPI POP PUSH2 0x594 DUP6 CALLER PUSH2 0x194 JUMP JUMPDEST PUSH2 0x5F7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A2063616C6C6572206973206E6F7420746F6B656E206F776E PUSH1 0x44 DUP3 ADD MSTORE PUSH14 0x195C881BDC88185C1C1C9BDD9959 PUSH1 0x92 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x262 JUMP JUMPDEST PUSH2 0x424 DUP6 DUP6 DUP6 DUP6 DUP6 PUSH2 0xA8A JUMP JUMPDEST PUSH2 0x393 DUP4 DUP4 DUP4 PUSH2 0xC35 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x66F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A206D696E7420746F20746865207A65726F20616464726573 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x73 PUSH1 0xF8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x262 JUMP JUMPDEST CALLER PUSH1 0x0 PUSH2 0x67B DUP6 PUSH2 0xDB1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x688 DUP6 PUSH2 0xDB1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 DUP1 SLOAD DUP8 SWAP3 SWAP1 PUSH2 0x6BA SWAP1 DUP5 SWAP1 PUSH2 0x1627 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x40 DUP1 MLOAD DUP8 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP11 AND SWAP3 PUSH1 0x0 SWAP3 SWAP2 DUP8 AND SWAP2 PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x71A DUP4 PUSH1 0x0 DUP10 DUP10 DUP10 DUP10 PUSH2 0xDFC JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST DUP2 MLOAD DUP4 MLOAD EQ PUSH2 0x79A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x28 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A2069647320616E6420616D6F756E7473206C656E67746820 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6D69736D61746368000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x262 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x7FE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A207472616E7366657220746F20746865207A65726F206164 PUSH1 0x44 DUP3 ADD MSTORE PUSH5 0x6472657373 PUSH1 0xD8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x262 JUMP JUMPDEST CALLER PUSH1 0x0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x928 JUMPI PUSH1 0x0 DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x81F JUMPI PUSH2 0x81F PUSH2 0x15E2 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x83D JUMPI PUSH2 0x83D PUSH2 0x15E2 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD PUSH1 0x0 DUP5 DUP2 MSTORE DUP1 DUP4 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP15 AND DUP4 MSTORE SWAP1 SWAP4 MSTORE SWAP2 SWAP1 SWAP2 KECCAK256 SLOAD SWAP1 SWAP2 POP DUP2 DUP2 LT ISZERO PUSH2 0x8D0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A20696E73756666696369656E742062616C616E636520666F PUSH1 0x44 DUP3 ADD MSTORE PUSH10 0x39103A3930B739B332B9 PUSH1 0xB1 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x262 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP15 DUP2 AND DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 DUP6 DUP6 SUB SWAP1 SSTORE SWAP1 DUP12 AND DUP3 MSTORE DUP2 KECCAK256 DUP1 SLOAD DUP5 SWAP3 SWAP1 PUSH2 0x90D SWAP1 DUP5 SWAP1 PUSH2 0x1627 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP POP POP POP DUP1 PUSH2 0x921 SWAP1 PUSH2 0x160E JUMP JUMPDEST SWAP1 POP PUSH2 0x802 JUMP JUMPDEST POP DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB DUP8 DUP8 PUSH1 0x40 MLOAD PUSH2 0x978 SWAP3 SWAP2 SWAP1 PUSH2 0x163A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x98E DUP2 DUP8 DUP8 DUP8 DUP8 DUP8 PUSH2 0xFA1 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0xA1D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A2073657474696E6720617070726F76616C20737461747573 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x20666F722073656C660000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x262 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND DUP7 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP2 MLOAD SWAP2 DUP3 MSTORE PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0xAEE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A207472616E7366657220746F20746865207A65726F206164 PUSH1 0x44 DUP3 ADD MSTORE PUSH5 0x6472657373 PUSH1 0xD8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x262 JUMP JUMPDEST CALLER PUSH1 0x0 PUSH2 0xAFA DUP6 PUSH2 0xDB1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xB07 DUP6 PUSH2 0xDB1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD DUP6 DUP2 LT ISZERO PUSH2 0xB8D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A20696E73756666696369656E742062616C616E636520666F PUSH1 0x44 DUP3 ADD MSTORE PUSH10 0x39103A3930B739B332B9 PUSH1 0xB1 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x262 JUMP JUMPDEST PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP14 DUP2 AND DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 DUP10 DUP6 SUB SWAP1 SSTORE SWAP1 DUP11 AND DUP3 MSTORE DUP2 KECCAK256 DUP1 SLOAD DUP9 SWAP3 SWAP1 PUSH2 0xBCA SWAP1 DUP5 SWAP1 PUSH2 0x1627 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x40 DUP1 MLOAD DUP9 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP9 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP12 AND SWAP3 DUP13 DUP3 AND SWAP3 SWAP2 DUP9 AND SWAP2 PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0xC2A DUP5 DUP11 DUP11 DUP11 DUP11 DUP11 PUSH2 0xDFC JUMP JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0xC97 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x23 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A206275726E2066726F6D20746865207A65726F2061646472 PUSH1 0x44 DUP3 ADD MSTORE PUSH3 0x657373 PUSH1 0xE8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x262 JUMP JUMPDEST CALLER PUSH1 0x0 PUSH2 0xCA3 DUP5 PUSH2 0xDB1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xCB0 DUP5 PUSH2 0xDB1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 ADD DUP4 MSTORE PUSH1 0x0 SWAP2 DUP3 SWAP1 MSTORE DUP9 DUP3 MSTORE DUP2 DUP2 MSTORE DUP3 DUP3 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND DUP4 MSTORE SWAP1 MSTORE KECCAK256 SLOAD SWAP1 SWAP2 POP DUP5 DUP2 LT ISZERO PUSH2 0xD39 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x455243313135353A206275726E20616D6F756E7420657863656564732062616C PUSH1 0x44 DUP3 ADD MSTORE PUSH4 0x616E6365 PUSH1 0xE0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x262 JUMP JUMPDEST PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 DUP2 AND DUP1 DUP7 MSTORE SWAP2 DUP5 MSTORE DUP3 DUP6 KECCAK256 DUP11 DUP8 SUB SWAP1 SSTORE DUP3 MLOAD DUP12 DUP2 MSTORE SWAP4 DUP5 ADD DUP11 SWAP1 MSTORE SWAP1 SWAP3 SWAP1 DUP9 AND SWAP2 PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 SWAP1 MSTORE PUSH2 0x71A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 PUSH1 0x0 SWAP2 SWAP1 PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP3 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xDEB JUMPI PUSH2 0xDEB PUSH2 0x15E2 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO PUSH2 0x98E JUMPI PUSH1 0x40 MLOAD PUSH4 0xF23A6E61 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0xF23A6E61 SWAP1 PUSH2 0xE40 SWAP1 DUP10 SWAP1 DUP10 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x1668 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0xE7B JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0xE78 SWAP2 DUP2 ADD SWAP1 PUSH2 0x16AB JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0xF30 JUMPI PUSH2 0xE87 PUSH2 0x16C8 JUMP JUMPDEST DUP1 PUSH4 0x8C379A0 SUB PUSH2 0xEC0 JUMPI POP PUSH2 0xE9B PUSH2 0x16E4 JUMP JUMPDEST DUP1 PUSH2 0xEA6 JUMPI POP PUSH2 0xEC2 JUMP JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x262 SWAP2 SWAP1 PUSH2 0x117F JUMP JUMPDEST POP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x34 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A207472616E7366657220746F206E6F6E2D45524331313535 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x526563656976657220696D706C656D656E746572000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x262 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH4 0xF23A6E61 PUSH1 0xE0 SHL EQ PUSH2 0x71A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x28 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A204552433131353552656365697665722072656A65637465 PUSH1 0x44 DUP3 ADD MSTORE PUSH8 0x6420746F6B656E73 PUSH1 0xC0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x262 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO PUSH2 0x98E JUMPI PUSH1 0x40 MLOAD PUSH4 0xBC197C81 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0xBC197C81 SWAP1 PUSH2 0xFE5 SWAP1 DUP10 SWAP1 DUP10 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x176E JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x1020 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x101D SWAP2 DUP2 ADD SWAP1 PUSH2 0x16AB JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x102C JUMPI PUSH2 0xE87 PUSH2 0x16C8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH4 0xBC197C81 PUSH1 0xE0 SHL EQ PUSH2 0x71A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x28 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A204552433131353552656365697665722072656A65637465 PUSH1 0x44 DUP3 ADD MSTORE PUSH8 0x6420746F6B656E73 PUSH1 0xC0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x262 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x10B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x10CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x10D5 DUP4 PUSH2 0x109D JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x10F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x110E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1119 DUP2 PUSH2 0x10E3 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1132 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x115F JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD DUP3 ADD MSTORE ADD PUSH2 0x1143 JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x20 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x20 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x1119 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x1139 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x11A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x11B0 DUP5 PUSH2 0x109D JUMP JUMPDEST SWAP6 PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP6 POP PUSH1 0x40 SWAP1 SWAP5 ADD CALLDATALOAD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x1201 JUMPI PUSH2 0x1201 PUSH2 0x11C5 JUMP JUMPDEST PUSH1 0x40 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x1222 JUMPI PUSH2 0x1222 PUSH2 0x11C5 JUMP JUMPDEST POP PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x123D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x20 PUSH2 0x124A DUP3 PUSH2 0x1208 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1257 DUP3 DUP3 PUSH2 0x11DB JUMP JUMPDEST DUP4 DUP2 MSTORE PUSH1 0x5 SWAP4 SWAP1 SWAP4 SHL DUP6 ADD DUP3 ADD SWAP3 DUP3 DUP2 ADD SWAP2 POP DUP7 DUP5 GT ISZERO PUSH2 0x1277 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 DUP7 ADD JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x1292 JUMPI DUP1 CALLDATALOAD DUP4 MSTORE SWAP2 DUP4 ADD SWAP2 DUP4 ADD PUSH2 0x127B JUMP JUMPDEST POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x12AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x12C8 JUMPI PUSH2 0x12C8 PUSH2 0x11C5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x12DF PUSH1 0x1F DUP4 ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 PUSH2 0x11DB JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 PUSH1 0x20 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0x12F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP6 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 SWAP2 DUP2 ADD PUSH1 0x20 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x1329 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1332 DUP7 PUSH2 0x109D JUMP JUMPDEST SWAP5 POP PUSH2 0x1340 PUSH1 0x20 DUP8 ADD PUSH2 0x109D JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x135D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1369 DUP10 DUP4 DUP11 ADD PUSH2 0x122C JUMP JUMPDEST SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x137F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x138B DUP10 DUP4 DUP11 ADD PUSH2 0x122C JUMP JUMPDEST SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x13A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x13AE DUP9 DUP3 DUP10 ADD PUSH2 0x129D JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x13CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x13E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x13FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x20 PUSH2 0x1407 DUP3 PUSH2 0x1208 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1414 DUP3 DUP3 PUSH2 0x11DB JUMP JUMPDEST DUP4 DUP2 MSTORE PUSH1 0x5 SWAP4 SWAP1 SWAP4 SHL DUP6 ADD DUP3 ADD SWAP3 DUP3 DUP2 ADD SWAP2 POP DUP10 DUP5 GT ISZERO PUSH2 0x1434 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP5 DUP3 ADD SWAP5 JUMPDEST DUP4 DUP7 LT ISZERO PUSH2 0x1459 JUMPI PUSH2 0x144A DUP7 PUSH2 0x109D JUMP JUMPDEST DUP3 MSTORE SWAP5 DUP3 ADD SWAP5 SWAP1 DUP3 ADD SWAP1 PUSH2 0x1439 JUMP JUMPDEST SWAP7 POP POP DUP7 ADD CALLDATALOAD SWAP3 POP POP DUP1 DUP3 GT ISZERO PUSH2 0x146F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x147C DUP6 DUP3 DUP7 ADD PUSH2 0x122C JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP1 DUP5 ADD PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x14B6 JUMPI DUP2 MLOAD DUP8 MSTORE SWAP6 DUP3 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x149A JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x1119 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x1486 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x14E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x14F0 DUP4 PUSH2 0x109D JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x1505 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1523 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x152C DUP4 PUSH2 0x109D JUMP JUMPDEST SWAP2 POP PUSH2 0x153A PUSH1 0x20 DUP5 ADD PUSH2 0x109D JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x155B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1564 DUP7 PUSH2 0x109D JUMP JUMPDEST SWAP5 POP PUSH2 0x1572 PUSH1 0x20 DUP8 ADD PUSH2 0x109D JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD SWAP2 POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x159C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x13AE DUP9 DUP3 DUP10 ADD PUSH2 0x129D JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x15BC JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x15DC JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 ADD PUSH2 0x1620 JUMPI PUSH2 0x1620 PUSH2 0x15F8 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x28E JUMPI PUSH2 0x28E PUSH2 0x15F8 JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 PUSH2 0x164D PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x1486 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x165F DUP2 DUP6 PUSH2 0x1486 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND DUP4 MSTORE DUP1 DUP8 AND PUSH1 0x20 DUP5 ADD MSTORE POP DUP5 PUSH1 0x40 DUP4 ADD MSTORE DUP4 PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0xA0 PUSH1 0x80 DUP4 ADD MSTORE PUSH2 0x16A0 PUSH1 0xA0 DUP4 ADD DUP5 PUSH2 0x1139 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x16BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x1119 DUP2 PUSH2 0x10E3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x3 RETURNDATASIZE GT ISZERO PUSH2 0x16E1 JUMPI PUSH1 0x4 PUSH1 0x0 DUP1 RETURNDATACOPY POP PUSH1 0x0 MLOAD PUSH1 0xE0 SHR JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x44 RETURNDATASIZE LT ISZERO PUSH2 0x16F2 JUMPI SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x3 NOT RETURNDATASIZE DUP2 ADD PUSH1 0x4 DUP4 RETURNDATACOPY DUP2 MLOAD RETURNDATASIZE PUSH8 0xFFFFFFFFFFFFFFFF DUP2 PUSH1 0x24 DUP5 ADD GT DUP2 DUP5 GT OR ISZERO PUSH2 0x1722 JUMPI POP POP POP POP POP SWAP1 JUMP JUMPDEST DUP3 DUP6 ADD SWAP2 POP DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x173A JUMPI POP POP POP POP POP POP SWAP1 JUMP JUMPDEST DUP5 RETURNDATASIZE DUP8 ADD ADD PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x1754 JUMPI POP POP POP POP POP POP SWAP1 JUMP JUMPDEST PUSH2 0x1763 PUSH1 0x20 DUP3 DUP7 ADD ADD DUP8 PUSH2 0x11DB JUMP JUMPDEST POP SWAP1 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND DUP4 MSTORE DUP1 DUP8 AND PUSH1 0x20 DUP5 ADD MSTORE POP PUSH1 0xA0 PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x179A PUSH1 0xA0 DUP4 ADD DUP7 PUSH2 0x1486 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x60 DUP5 ADD MSTORE PUSH2 0x17AC DUP2 DUP7 PUSH2 0x1486 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 SUB PUSH1 0x80 DUP5 ADD MSTORE PUSH2 0x17C0 DUP2 DUP6 PUSH2 0x1139 JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"303:349:58:-:0;;;341:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;381:4;1149:13:22;381:4:58;1149:7:22;:13::i;:::-;1107:62;341:48:58;303:349;;8149:86:22;8215:4;:13;8222:6;8215:4;:13;:::i;:::-;;8149:86;:::o;14:127:92:-;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:1042;226:6;257:2;300;288:9;279:7;275:23;271:32;268:52;;;316:1;313;306:12;268:52;343:16;;-1:-1:-1;;;;;408:14:92;;;405:34;;;435:1;432;425:12;405:34;473:6;462:9;458:22;448:32;;518:7;511:4;507:2;503:13;499:27;489:55;;540:1;537;530:12;489:55;569:2;563:9;591:2;587;584:10;581:36;;;597:18;;:::i;:::-;672:2;666:9;640:2;726:13;;-1:-1:-1;;722:22:92;;;746:2;718:31;714:40;702:53;;;770:18;;;790:22;;;767:46;764:72;;;816:18;;:::i;:::-;856:10;852:2;845:22;891:2;883:6;876:18;931:7;926:2;921;917;913:11;909:20;906:33;903:53;;;952:1;949;942:12;903:53;974:1;965:10;;984:129;998:2;995:1;992:9;984:129;;;1086:10;;;1082:19;;1076:26;1055:14;;;1051:23;;1044:59;1009:10;;;;984:129;;;1155:1;1150:2;1145;1137:6;1133:15;1129:24;1122:35;1176:6;1166:16;;;;;;;;146:1042;;;;:::o;1193:380::-;1272:1;1268:12;;;;1315;;;1336:61;;1390:4;1382:6;1378:17;1368:27;;1336:61;1443:2;1435:6;1432:14;1412:18;1409:38;1406:161;;1489:10;1484:3;1480:20;1477:1;1470:31;1524:4;1521:1;1514:15;1552:4;1549:1;1542:15;1406:161;;1193:380;;;:::o;1704:545::-;1806:2;1801:3;1798:11;1795:448;;;1842:1;1867:5;1863:2;1856:17;1912:4;1908:2;1898:19;1982:2;1970:10;1966:19;1963:1;1959:27;1953:4;1949:38;2018:4;2006:10;2003:20;2000:47;;;-1:-1:-1;2041:4:92;2000:47;2096:2;2091:3;2087:12;2084:1;2080:20;2074:4;2070:31;2060:41;;2151:82;2169:2;2162:5;2159:13;2151:82;;;2214:17;;;2195:1;2184:13;2151:82;;;2155:3;;;1795:448;1704:545;;;:::o;2425:1352::-;2545:10;;-1:-1:-1;;;;;2567:30:92;;2564:56;;;2600:18;;:::i;:::-;2629:97;2719:6;2679:38;2711:4;2705:11;2679:38;:::i;:::-;2673:4;2629:97;:::i;:::-;2781:4;;2845:2;2834:14;;2862:1;2857:663;;;;3564:1;3581:6;3578:89;;;-1:-1:-1;3633:19:92;;;3627:26;3578:89;-1:-1:-1;;2382:1:92;2378:11;;;2374:24;2370:29;2360:40;2406:1;2402:11;;;2357:57;3680:81;;2827:944;;2857:663;1651:1;1644:14;;;1688:4;1675:18;;-1:-1:-1;;2893:20:92;;;3011:236;3025:7;3022:1;3019:14;3011:236;;;3114:19;;;3108:26;3093:42;;3206:27;;;;3174:1;3162:14;;;;3041:19;;3011:236;;;3015:3;3275:6;3266:7;3263:19;3260:201;;;3336:19;;;3330:26;-1:-1:-1;;3419:1:92;3415:14;;;3431:3;3411:24;3407:37;3403:42;3388:58;3373:74;;3260:201;-1:-1:-1;;;;;3507:1:92;3491:14;;;3487:22;3474:36;;-1:-1:-1;2425:1352:92:o;:::-;303:349:58;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_afterTokenTransfer_6821":{"entryPoint":null,"id":6821,"parameterSlots":6,"returnSlots":0},"@_asSingletonArray_6977":{"entryPoint":3505,"id":6977,"parameterSlots":1,"returnSlots":1},"@_beforeTokenTransfer_6802":{"entryPoint":null,"id":6802,"parameterSlots":6,"returnSlots":0},"@_burn_6628":{"entryPoint":3125,"id":6628,"parameterSlots":3,"returnSlots":0},"@_doSafeBatchTransferAcceptanceCheck_6949":{"entryPoint":4001,"id":6949,"parameterSlots":6,"returnSlots":0},"@_doSafeTransferAcceptanceCheck_6884":{"entryPoint":3580,"id":6884,"parameterSlots":6,"returnSlots":0},"@_mint_6412":{"entryPoint":1551,"id":6412,"parameterSlots":4,"returnSlots":0},"@_msgSender_9276":{"entryPoint":null,"id":9276,"parameterSlots":0,"returnSlots":1},"@_safeBatchTransferFrom_6300":{"entryPoint":1827,"id":6300,"parameterSlots":5,"returnSlots":0},"@_safeTransferFrom_6165":{"entryPoint":2698,"id":6165,"parameterSlots":5,"returnSlots":0},"@_setApprovalForAll_6783":{"entryPoint":2454,"id":6783,"parameterSlots":3,"returnSlots":0},"@balanceOfBatch_5935":{"entryPoint":1067,"id":5935,"parameterSlots":2,"returnSlots":1},"@balanceOf_5871":{"entryPoint":488,"id":5871,"parameterSlots":2,"returnSlots":1},"@burn_12679":{"entryPoint":1540,"id":12679,"parameterSlots":3,"returnSlots":0},"@isApprovedForAll_5970":{"entryPoint":null,"id":5970,"parameterSlots":2,"returnSlots":1},"@isContract_8952":{"entryPoint":null,"id":8952,"parameterSlots":1,"returnSlots":1},"@mint_12663":{"entryPoint":888,"id":12663,"parameterSlots":3,"returnSlots":0},"@safeBatchTransferFrom_6048":{"entryPoint":920,"id":6048,"parameterSlots":5,"returnSlots":0},"@safeTransferFrom_6008":{"entryPoint":1400,"id":6008,"parameterSlots":5,"returnSlots":0},"@setApprovalForAll_5952":{"entryPoint":1385,"id":5952,"parameterSlots":2,"returnSlots":0},"@supportsInterface_5831":{"entryPoint":660,"id":5831,"parameterSlots":1,"returnSlots":1},"@supportsInterface_9730":{"entryPoint":null,"id":9730,"parameterSlots":1,"returnSlots":1},"@uri_5843":{"entryPoint":740,"id":5843,"parameterSlots":1,"returnSlots":1},"abi_decode_address":{"entryPoint":4253,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_array_uint256_dyn":{"entryPoint":4652,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_bytes":{"entryPoint":4765,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_address":{"entryPoint":5392,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_addresst_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptrt_bytes_memory_ptr":{"entryPoint":4881,"id":null,"parameterSlots":2,"returnSlots":5},"abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_bytes_memory_ptr":{"entryPoint":5443,"id":null,"parameterSlots":2,"returnSlots":5},"abi_decode_tuple_t_addresst_bool":{"entryPoint":5332,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_uint256":{"entryPoint":4281,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_uint256t_uint256":{"entryPoint":4498,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_array$_t_address_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptr":{"entryPoint":5051,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_bytes4":{"entryPoint":4348,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes4_fromMemory":{"entryPoint":5803,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256":{"entryPoint":4384,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_array_uint256_dyn":{"entryPoint":5254,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_string":{"entryPoint":4409,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr_t_bytes_memory_ptr__to_t_address_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":5998,"id":null,"parameterSlots":6,"returnSlots":1},"abi_encode_tuple_t_address_t_address_t_uint256_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_uint256_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":5736,"id":null,"parameterSlots":6,"returnSlots":1},"abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed":{"entryPoint":5313,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed":{"entryPoint":5690,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":4479,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_0587cccad73a80a7f013db13c596f4febc1968dc77e1d3589d5e7a509a3d6503__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_294a5de01910e2350ff231c633ae2d453ed6b1b72c75506234b7aace63eae685__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_415a1b99e1fd4a18cf87c08995f5a9130182e8d76e9c17c497bfebaaef9265ad__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_47c72b42072ed6c647dec3a0a5c88bec44d3e901c64659bff94ecce0a0323156__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_6faf1c67f278b07c6771dcf4c315a89c21c0eaed11d9ab3d51774da1cfef545d__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_87fd4aee52f5758d127cd9704d5ffef70f36ed1e87eb99b6f40e37a25c79a76a__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_8ac7e9556b567c1c94bb4daaa3c3a65be5ac686579615210cb910fb8cb8d65bf__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_df9806c6dc743de602e49918a67b580590d69ab768bdb59f977c0a884a91a7c2__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_e155f5d69798c6205436a388a4f3a5fd42f54147b40f4d63a2c8071ff8a9fee5__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_e909e0c9a8f96b4f9af03b716811ece20beb070be416893ed1d50619b5930807__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_ebf031a1b7ee1d0b3a7752b450a3268e8b6c334561b48c1c0ba0f5bac05749f2__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_f591f7b75ffc499e05f8b34c3364b2eceff651378d9549db1d5d67c0d8255c5d__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"array_allocation_size_array_uint256_dyn":{"entryPoint":4616,"id":null,"parameterSlots":1,"returnSlots":1},"checked_add_t_uint256":{"entryPoint":5671,"id":null,"parameterSlots":2,"returnSlots":1},"extract_byte_array_length":{"entryPoint":5544,"id":null,"parameterSlots":1,"returnSlots":1},"finalize_allocation":{"entryPoint":4571,"id":null,"parameterSlots":2,"returnSlots":0},"increment_t_uint256":{"entryPoint":5646,"id":null,"parameterSlots":1,"returnSlots":1},"panic_error_0x11":{"entryPoint":5624,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x32":{"entryPoint":5602,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":4549,"id":null,"parameterSlots":0,"returnSlots":0},"return_data_selector":{"entryPoint":5832,"id":null,"parameterSlots":0,"returnSlots":1},"try_decode_error_message":{"entryPoint":5860,"id":null,"parameterSlots":0,"returnSlots":1},"validator_revert_bytes4":{"entryPoint":4323,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:17467:92","statements":[{"nodeType":"YulBlock","src":"6:3:92","statements":[]},{"body":{"nodeType":"YulBlock","src":"63:147:92","statements":[{"nodeType":"YulAssignment","src":"73:29:92","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"95:6:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"82:12:92"},"nodeType":"YulFunctionCall","src":"82:20:92"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"73:5:92"}]},{"body":{"nodeType":"YulBlock","src":"188:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"197:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"200:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"190:6:92"},"nodeType":"YulFunctionCall","src":"190:12:92"},"nodeType":"YulExpressionStatement","src":"190:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"124:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"135:5:92"},{"kind":"number","nodeType":"YulLiteral","src":"142:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"131:3:92"},"nodeType":"YulFunctionCall","src":"131:54:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"121:2:92"},"nodeType":"YulFunctionCall","src":"121:65:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"114:6:92"},"nodeType":"YulFunctionCall","src":"114:73:92"},"nodeType":"YulIf","src":"111:93:92"}]},"name":"abi_decode_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"42:6:92","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"53:5:92","type":""}],"src":"14:196:92"},{"body":{"nodeType":"YulBlock","src":"302:167:92","statements":[{"body":{"nodeType":"YulBlock","src":"348:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"357:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"360:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"350:6:92"},"nodeType":"YulFunctionCall","src":"350:12:92"},"nodeType":"YulExpressionStatement","src":"350:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"323:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"332:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"319:3:92"},"nodeType":"YulFunctionCall","src":"319:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"344:2:92","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"315:3:92"},"nodeType":"YulFunctionCall","src":"315:32:92"},"nodeType":"YulIf","src":"312:52:92"},{"nodeType":"YulAssignment","src":"373:39:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"402:9:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"383:18:92"},"nodeType":"YulFunctionCall","src":"383:29:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"373:6:92"}]},{"nodeType":"YulAssignment","src":"421:42:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"448:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"459:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"444:3:92"},"nodeType":"YulFunctionCall","src":"444:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"431:12:92"},"nodeType":"YulFunctionCall","src":"431:32:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"421:6:92"}]}]},"name":"abi_decode_tuple_t_addresst_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"260:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"271:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"283:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"291:6:92","type":""}],"src":"215:254:92"},{"body":{"nodeType":"YulBlock","src":"575:76:92","statements":[{"nodeType":"YulAssignment","src":"585:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"597:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"608:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"593:3:92"},"nodeType":"YulFunctionCall","src":"593:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"585:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"627:9:92"},{"name":"value0","nodeType":"YulIdentifier","src":"638:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"620:6:92"},"nodeType":"YulFunctionCall","src":"620:25:92"},"nodeType":"YulExpressionStatement","src":"620:25:92"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"544:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"555:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"566:4:92","type":""}],"src":"474:177:92"},{"body":{"nodeType":"YulBlock","src":"700:87:92","statements":[{"body":{"nodeType":"YulBlock","src":"765:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"774:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"777:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"767:6:92"},"nodeType":"YulFunctionCall","src":"767:12:92"},"nodeType":"YulExpressionStatement","src":"767:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"723:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"734:5:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"745:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"750:10:92","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"741:3:92"},"nodeType":"YulFunctionCall","src":"741:20:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"730:3:92"},"nodeType":"YulFunctionCall","src":"730:32:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"720:2:92"},"nodeType":"YulFunctionCall","src":"720:43:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"713:6:92"},"nodeType":"YulFunctionCall","src":"713:51:92"},"nodeType":"YulIf","src":"710:71:92"}]},"name":"validator_revert_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"689:5:92","type":""}],"src":"656:131:92"},{"body":{"nodeType":"YulBlock","src":"861:176:92","statements":[{"body":{"nodeType":"YulBlock","src":"907:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"916:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"919:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"909:6:92"},"nodeType":"YulFunctionCall","src":"909:12:92"},"nodeType":"YulExpressionStatement","src":"909:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"882:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"891:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"878:3:92"},"nodeType":"YulFunctionCall","src":"878:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"903:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"874:3:92"},"nodeType":"YulFunctionCall","src":"874:32:92"},"nodeType":"YulIf","src":"871:52:92"},{"nodeType":"YulVariableDeclaration","src":"932:36:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"958:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"945:12:92"},"nodeType":"YulFunctionCall","src":"945:23:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"936:5:92","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1001:5:92"}],"functionName":{"name":"validator_revert_bytes4","nodeType":"YulIdentifier","src":"977:23:92"},"nodeType":"YulFunctionCall","src":"977:30:92"},"nodeType":"YulExpressionStatement","src":"977:30:92"},{"nodeType":"YulAssignment","src":"1016:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"1026:5:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1016:6:92"}]}]},"name":"abi_decode_tuple_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"827:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"838:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"850:6:92","type":""}],"src":"792:245:92"},{"body":{"nodeType":"YulBlock","src":"1137:92:92","statements":[{"nodeType":"YulAssignment","src":"1147:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1159:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1170:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1155:3:92"},"nodeType":"YulFunctionCall","src":"1155:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1147:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1189:9:92"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1214:6:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1207:6:92"},"nodeType":"YulFunctionCall","src":"1207:14:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1200:6:92"},"nodeType":"YulFunctionCall","src":"1200:22:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1182:6:92"},"nodeType":"YulFunctionCall","src":"1182:41:92"},"nodeType":"YulExpressionStatement","src":"1182:41:92"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1106:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1117:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1128:4:92","type":""}],"src":"1042:187:92"},{"body":{"nodeType":"YulBlock","src":"1304:110:92","statements":[{"body":{"nodeType":"YulBlock","src":"1350:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1359:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1362:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1352:6:92"},"nodeType":"YulFunctionCall","src":"1352:12:92"},"nodeType":"YulExpressionStatement","src":"1352:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1325:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"1334:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1321:3:92"},"nodeType":"YulFunctionCall","src":"1321:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"1346:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1317:3:92"},"nodeType":"YulFunctionCall","src":"1317:32:92"},"nodeType":"YulIf","src":"1314:52:92"},{"nodeType":"YulAssignment","src":"1375:33:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1398:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1385:12:92"},"nodeType":"YulFunctionCall","src":"1385:23:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1375:6:92"}]}]},"name":"abi_decode_tuple_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1270:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1281:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1293:6:92","type":""}],"src":"1234:180:92"},{"body":{"nodeType":"YulBlock","src":"1469:373:92","statements":[{"nodeType":"YulVariableDeclaration","src":"1479:26:92","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1499:5:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1493:5:92"},"nodeType":"YulFunctionCall","src":"1493:12:92"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"1483:6:92","type":""}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1521:3:92"},{"name":"length","nodeType":"YulIdentifier","src":"1526:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1514:6:92"},"nodeType":"YulFunctionCall","src":"1514:19:92"},"nodeType":"YulExpressionStatement","src":"1514:19:92"},{"nodeType":"YulVariableDeclaration","src":"1542:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"1551:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"1546:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"1613:110:92","statements":[{"nodeType":"YulVariableDeclaration","src":"1627:14:92","value":{"kind":"number","nodeType":"YulLiteral","src":"1637:4:92","type":"","value":"0x20"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"1631:2:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1669:3:92"},{"name":"i","nodeType":"YulIdentifier","src":"1674:1:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1665:3:92"},"nodeType":"YulFunctionCall","src":"1665:11:92"},{"name":"_1","nodeType":"YulIdentifier","src":"1678:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1661:3:92"},"nodeType":"YulFunctionCall","src":"1661:20:92"},{"arguments":[{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1697:5:92"},{"name":"i","nodeType":"YulIdentifier","src":"1704:1:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1693:3:92"},"nodeType":"YulFunctionCall","src":"1693:13:92"},{"name":"_1","nodeType":"YulIdentifier","src":"1708:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1689:3:92"},"nodeType":"YulFunctionCall","src":"1689:22:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1683:5:92"},"nodeType":"YulFunctionCall","src":"1683:29:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1654:6:92"},"nodeType":"YulFunctionCall","src":"1654:59:92"},"nodeType":"YulExpressionStatement","src":"1654:59:92"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"1572:1:92"},{"name":"length","nodeType":"YulIdentifier","src":"1575:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"1569:2:92"},"nodeType":"YulFunctionCall","src":"1569:13:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"1583:21:92","statements":[{"nodeType":"YulAssignment","src":"1585:17:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"1594:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"1597:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1590:3:92"},"nodeType":"YulFunctionCall","src":"1590:12:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"1585:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"1565:3:92","statements":[]},"src":"1561:162:92"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1747:3:92"},{"name":"length","nodeType":"YulIdentifier","src":"1752:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1743:3:92"},"nodeType":"YulFunctionCall","src":"1743:16:92"},{"kind":"number","nodeType":"YulLiteral","src":"1761:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1739:3:92"},"nodeType":"YulFunctionCall","src":"1739:27:92"},{"kind":"number","nodeType":"YulLiteral","src":"1768:1:92","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1732:6:92"},"nodeType":"YulFunctionCall","src":"1732:38:92"},"nodeType":"YulExpressionStatement","src":"1732:38:92"},{"nodeType":"YulAssignment","src":"1779:57:92","value":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1794:3:92"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"1807:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"1815:2:92","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1803:3:92"},"nodeType":"YulFunctionCall","src":"1803:15:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1824:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"1820:3:92"},"nodeType":"YulFunctionCall","src":"1820:7:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1799:3:92"},"nodeType":"YulFunctionCall","src":"1799:29:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1790:3:92"},"nodeType":"YulFunctionCall","src":"1790:39:92"},{"kind":"number","nodeType":"YulLiteral","src":"1831:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1786:3:92"},"nodeType":"YulFunctionCall","src":"1786:50:92"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1779:3:92"}]}]},"name":"abi_encode_string","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1446:5:92","type":""},{"name":"pos","nodeType":"YulTypedName","src":"1453:3:92","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1461:3:92","type":""}],"src":"1419:423:92"},{"body":{"nodeType":"YulBlock","src":"1968:99:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1985:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1996:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1978:6:92"},"nodeType":"YulFunctionCall","src":"1978:21:92"},"nodeType":"YulExpressionStatement","src":"1978:21:92"},{"nodeType":"YulAssignment","src":"2008:53:92","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2034:6:92"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2046:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2057:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2042:3:92"},"nodeType":"YulFunctionCall","src":"2042:18:92"}],"functionName":{"name":"abi_encode_string","nodeType":"YulIdentifier","src":"2016:17:92"},"nodeType":"YulFunctionCall","src":"2016:45:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2008:4:92"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1937:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1948:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1959:4:92","type":""}],"src":"1847:220:92"},{"body":{"nodeType":"YulBlock","src":"2176:218:92","statements":[{"body":{"nodeType":"YulBlock","src":"2222:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2231:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2234:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2224:6:92"},"nodeType":"YulFunctionCall","src":"2224:12:92"},"nodeType":"YulExpressionStatement","src":"2224:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2197:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"2206:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2193:3:92"},"nodeType":"YulFunctionCall","src":"2193:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"2218:2:92","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2189:3:92"},"nodeType":"YulFunctionCall","src":"2189:32:92"},"nodeType":"YulIf","src":"2186:52:92"},{"nodeType":"YulAssignment","src":"2247:39:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2276:9:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"2257:18:92"},"nodeType":"YulFunctionCall","src":"2257:29:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2247:6:92"}]},{"nodeType":"YulAssignment","src":"2295:42:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2322:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2333:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2318:3:92"},"nodeType":"YulFunctionCall","src":"2318:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2305:12:92"},"nodeType":"YulFunctionCall","src":"2305:32:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"2295:6:92"}]},{"nodeType":"YulAssignment","src":"2346:42:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2373:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2384:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2369:3:92"},"nodeType":"YulFunctionCall","src":"2369:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2356:12:92"},"nodeType":"YulFunctionCall","src":"2356:32:92"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"2346:6:92"}]}]},"name":"abi_decode_tuple_t_addresst_uint256t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2126:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2137:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2149:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2157:6:92","type":""},{"name":"value2","nodeType":"YulTypedName","src":"2165:6:92","type":""}],"src":"2072:322:92"},{"body":{"nodeType":"YulBlock","src":"2431:95:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2448:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2455:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"2460:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2451:3:92"},"nodeType":"YulFunctionCall","src":"2451:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2441:6:92"},"nodeType":"YulFunctionCall","src":"2441:31:92"},"nodeType":"YulExpressionStatement","src":"2441:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2488:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"2491:4:92","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2481:6:92"},"nodeType":"YulFunctionCall","src":"2481:15:92"},"nodeType":"YulExpressionStatement","src":"2481:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2512:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2515:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2505:6:92"},"nodeType":"YulFunctionCall","src":"2505:15:92"},"nodeType":"YulExpressionStatement","src":"2505:15:92"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"2399:127:92"},{"body":{"nodeType":"YulBlock","src":"2578:202:92","statements":[{"nodeType":"YulVariableDeclaration","src":"2588:58:92","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"2610:6:92"},{"arguments":[{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"2626:4:92"},{"kind":"number","nodeType":"YulLiteral","src":"2632:2:92","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2622:3:92"},"nodeType":"YulFunctionCall","src":"2622:13:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2641:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"2637:3:92"},"nodeType":"YulFunctionCall","src":"2637:7:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2618:3:92"},"nodeType":"YulFunctionCall","src":"2618:27:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2606:3:92"},"nodeType":"YulFunctionCall","src":"2606:40:92"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"2592:10:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"2721:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"2723:16:92"},"nodeType":"YulFunctionCall","src":"2723:18:92"},"nodeType":"YulExpressionStatement","src":"2723:18:92"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"2664:10:92"},{"kind":"number","nodeType":"YulLiteral","src":"2676:18:92","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2661:2:92"},"nodeType":"YulFunctionCall","src":"2661:34:92"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"2700:10:92"},{"name":"memPtr","nodeType":"YulIdentifier","src":"2712:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2697:2:92"},"nodeType":"YulFunctionCall","src":"2697:22:92"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"2658:2:92"},"nodeType":"YulFunctionCall","src":"2658:62:92"},"nodeType":"YulIf","src":"2655:88:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2759:2:92","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"2763:10:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2752:6:92"},"nodeType":"YulFunctionCall","src":"2752:22:92"},"nodeType":"YulExpressionStatement","src":"2752:22:92"}]},"name":"finalize_allocation","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"2560:6:92","type":""},{"name":"size","nodeType":"YulTypedName","src":"2568:4:92","type":""}],"src":"2531:249:92"},{"body":{"nodeType":"YulBlock","src":"2854:114:92","statements":[{"body":{"nodeType":"YulBlock","src":"2898:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"2900:16:92"},"nodeType":"YulFunctionCall","src":"2900:18:92"},"nodeType":"YulExpressionStatement","src":"2900:18:92"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"2870:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"2878:18:92","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2867:2:92"},"nodeType":"YulFunctionCall","src":"2867:30:92"},"nodeType":"YulIf","src":"2864:56:92"},{"nodeType":"YulAssignment","src":"2929:33:92","value":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2945:1:92","type":"","value":"5"},{"name":"length","nodeType":"YulIdentifier","src":"2948:6:92"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2941:3:92"},"nodeType":"YulFunctionCall","src":"2941:14:92"},{"kind":"number","nodeType":"YulLiteral","src":"2957:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2937:3:92"},"nodeType":"YulFunctionCall","src":"2937:25:92"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"2929:4:92"}]}]},"name":"array_allocation_size_array_uint256_dyn","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nodeType":"YulTypedName","src":"2834:6:92","type":""}],"returnVariables":[{"name":"size","nodeType":"YulTypedName","src":"2845:4:92","type":""}],"src":"2785:183:92"},{"body":{"nodeType":"YulBlock","src":"3037:660:92","statements":[{"body":{"nodeType":"YulBlock","src":"3086:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3095:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3098:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3088:6:92"},"nodeType":"YulFunctionCall","src":"3088:12:92"},"nodeType":"YulExpressionStatement","src":"3088:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"3065:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"3073:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3061:3:92"},"nodeType":"YulFunctionCall","src":"3061:17:92"},{"name":"end","nodeType":"YulIdentifier","src":"3080:3:92"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3057:3:92"},"nodeType":"YulFunctionCall","src":"3057:27:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3050:6:92"},"nodeType":"YulFunctionCall","src":"3050:35:92"},"nodeType":"YulIf","src":"3047:55:92"},{"nodeType":"YulVariableDeclaration","src":"3111:30:92","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"3134:6:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3121:12:92"},"nodeType":"YulFunctionCall","src":"3121:20:92"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"3115:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3150:14:92","value":{"kind":"number","nodeType":"YulLiteral","src":"3160:4:92","type":"","value":"0x20"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"3154:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3173:53:92","value":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"3223:2:92"}],"functionName":{"name":"array_allocation_size_array_uint256_dyn","nodeType":"YulIdentifier","src":"3183:39:92"},"nodeType":"YulFunctionCall","src":"3183:43:92"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"3177:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3235:23:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3255:2:92","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3249:5:92"},"nodeType":"YulFunctionCall","src":"3249:9:92"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"3239:6:92","type":""}]},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"3287:6:92"},{"name":"_3","nodeType":"YulIdentifier","src":"3295:2:92"}],"functionName":{"name":"finalize_allocation","nodeType":"YulIdentifier","src":"3267:19:92"},"nodeType":"YulFunctionCall","src":"3267:31:92"},"nodeType":"YulExpressionStatement","src":"3267:31:92"},{"nodeType":"YulVariableDeclaration","src":"3307:17:92","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"3318:6:92"},"variables":[{"name":"dst","nodeType":"YulTypedName","src":"3311:3:92","type":""}]},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"3340:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"3348:2:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3333:6:92"},"nodeType":"YulFunctionCall","src":"3333:18:92"},"nodeType":"YulExpressionStatement","src":"3333:18:92"},{"nodeType":"YulAssignment","src":"3360:22:92","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"3371:6:92"},{"name":"_2","nodeType":"YulIdentifier","src":"3379:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3367:3:92"},"nodeType":"YulFunctionCall","src":"3367:15:92"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"3360:3:92"}]},{"nodeType":"YulVariableDeclaration","src":"3391:46:92","value":{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"3413:6:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3425:1:92","type":"","value":"5"},{"name":"_1","nodeType":"YulIdentifier","src":"3428:2:92"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"3421:3:92"},"nodeType":"YulFunctionCall","src":"3421:10:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3409:3:92"},"nodeType":"YulFunctionCall","src":"3409:23:92"},{"name":"_2","nodeType":"YulIdentifier","src":"3434:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3405:3:92"},"nodeType":"YulFunctionCall","src":"3405:32:92"},"variables":[{"name":"srcEnd","nodeType":"YulTypedName","src":"3395:6:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"3465:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3474:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3477:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3467:6:92"},"nodeType":"YulFunctionCall","src":"3467:12:92"},"nodeType":"YulExpressionStatement","src":"3467:12:92"}]},"condition":{"arguments":[{"name":"srcEnd","nodeType":"YulIdentifier","src":"3452:6:92"},{"name":"end","nodeType":"YulIdentifier","src":"3460:3:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3449:2:92"},"nodeType":"YulFunctionCall","src":"3449:15:92"},"nodeType":"YulIf","src":"3446:35:92"},{"nodeType":"YulVariableDeclaration","src":"3490:26:92","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"3505:6:92"},{"name":"_2","nodeType":"YulIdentifier","src":"3513:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3501:3:92"},"nodeType":"YulFunctionCall","src":"3501:15:92"},"variables":[{"name":"src","nodeType":"YulTypedName","src":"3494:3:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"3581:86:92","statements":[{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"3602:3:92"},{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"3620:3:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3607:12:92"},"nodeType":"YulFunctionCall","src":"3607:17:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3595:6:92"},"nodeType":"YulFunctionCall","src":"3595:30:92"},"nodeType":"YulExpressionStatement","src":"3595:30:92"},{"nodeType":"YulAssignment","src":"3638:19:92","value":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"3649:3:92"},{"name":"_2","nodeType":"YulIdentifier","src":"3654:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3645:3:92"},"nodeType":"YulFunctionCall","src":"3645:12:92"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"3638:3:92"}]}]},"condition":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"3536:3:92"},{"name":"srcEnd","nodeType":"YulIdentifier","src":"3541:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"3533:2:92"},"nodeType":"YulFunctionCall","src":"3533:15:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"3549:23:92","statements":[{"nodeType":"YulAssignment","src":"3551:19:92","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"3562:3:92"},{"name":"_2","nodeType":"YulIdentifier","src":"3567:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3558:3:92"},"nodeType":"YulFunctionCall","src":"3558:12:92"},"variableNames":[{"name":"src","nodeType":"YulIdentifier","src":"3551:3:92"}]}]},"pre":{"nodeType":"YulBlock","src":"3529:3:92","statements":[]},"src":"3525:142:92"},{"nodeType":"YulAssignment","src":"3676:15:92","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"3685:6:92"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"3676:5:92"}]}]},"name":"abi_decode_array_uint256_dyn","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"3011:6:92","type":""},{"name":"end","nodeType":"YulTypedName","src":"3019:3:92","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"3027:5:92","type":""}],"src":"2973:724:92"},{"body":{"nodeType":"YulBlock","src":"3754:503:92","statements":[{"body":{"nodeType":"YulBlock","src":"3803:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3812:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3815:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3805:6:92"},"nodeType":"YulFunctionCall","src":"3805:12:92"},"nodeType":"YulExpressionStatement","src":"3805:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"3782:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"3790:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3778:3:92"},"nodeType":"YulFunctionCall","src":"3778:17:92"},{"name":"end","nodeType":"YulIdentifier","src":"3797:3:92"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3774:3:92"},"nodeType":"YulFunctionCall","src":"3774:27:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3767:6:92"},"nodeType":"YulFunctionCall","src":"3767:35:92"},"nodeType":"YulIf","src":"3764:55:92"},{"nodeType":"YulVariableDeclaration","src":"3828:30:92","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"3851:6:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3838:12:92"},"nodeType":"YulFunctionCall","src":"3838:20:92"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"3832:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"3897:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"3899:16:92"},"nodeType":"YulFunctionCall","src":"3899:18:92"},"nodeType":"YulExpressionStatement","src":"3899:18:92"}]},"condition":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"3873:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"3877:18:92","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3870:2:92"},"nodeType":"YulFunctionCall","src":"3870:26:92"},"nodeType":"YulIf","src":"3867:52:92"},{"nodeType":"YulVariableDeclaration","src":"3928:23:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3948:2:92","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3942:5:92"},"nodeType":"YulFunctionCall","src":"3942:9:92"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"3932:6:92","type":""}]},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"3980:6:92"},{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"4000:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"4004:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3996:3:92"},"nodeType":"YulFunctionCall","src":"3996:13:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4015:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"4011:3:92"},"nodeType":"YulFunctionCall","src":"4011:7:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3992:3:92"},"nodeType":"YulFunctionCall","src":"3992:27:92"},{"kind":"number","nodeType":"YulLiteral","src":"4021:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3988:3:92"},"nodeType":"YulFunctionCall","src":"3988:38:92"}],"functionName":{"name":"finalize_allocation","nodeType":"YulIdentifier","src":"3960:19:92"},"nodeType":"YulFunctionCall","src":"3960:67:92"},"nodeType":"YulExpressionStatement","src":"3960:67:92"},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"4043:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"4051:2:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4036:6:92"},"nodeType":"YulFunctionCall","src":"4036:18:92"},"nodeType":"YulExpressionStatement","src":"4036:18:92"},{"body":{"nodeType":"YulBlock","src":"4102:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4111:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4114:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4104:6:92"},"nodeType":"YulFunctionCall","src":"4104:12:92"},"nodeType":"YulExpressionStatement","src":"4104:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"4077:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"4085:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4073:3:92"},"nodeType":"YulFunctionCall","src":"4073:15:92"},{"kind":"number","nodeType":"YulLiteral","src":"4090:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4069:3:92"},"nodeType":"YulFunctionCall","src":"4069:26:92"},{"name":"end","nodeType":"YulIdentifier","src":"4097:3:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4066:2:92"},"nodeType":"YulFunctionCall","src":"4066:35:92"},"nodeType":"YulIf","src":"4063:55:92"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"4144:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"4152:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4140:3:92"},"nodeType":"YulFunctionCall","src":"4140:17:92"},{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"4163:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"4171:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4159:3:92"},"nodeType":"YulFunctionCall","src":"4159:17:92"},{"name":"_1","nodeType":"YulIdentifier","src":"4178:2:92"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"4127:12:92"},"nodeType":"YulFunctionCall","src":"4127:54:92"},"nodeType":"YulExpressionStatement","src":"4127:54:92"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"4205:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"4213:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4201:3:92"},"nodeType":"YulFunctionCall","src":"4201:15:92"},{"kind":"number","nodeType":"YulLiteral","src":"4218:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4197:3:92"},"nodeType":"YulFunctionCall","src":"4197:26:92"},{"kind":"number","nodeType":"YulLiteral","src":"4225:1:92","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4190:6:92"},"nodeType":"YulFunctionCall","src":"4190:37:92"},"nodeType":"YulExpressionStatement","src":"4190:37:92"},{"nodeType":"YulAssignment","src":"4236:15:92","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"4245:6:92"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"4236:5:92"}]}]},"name":"abi_decode_bytes","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"3728:6:92","type":""},{"name":"end","nodeType":"YulTypedName","src":"3736:3:92","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"3744:5:92","type":""}],"src":"3702:555:92"},{"body":{"nodeType":"YulBlock","src":"4459:746:92","statements":[{"body":{"nodeType":"YulBlock","src":"4506:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4515:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4518:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4508:6:92"},"nodeType":"YulFunctionCall","src":"4508:12:92"},"nodeType":"YulExpressionStatement","src":"4508:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"4480:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"4489:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4476:3:92"},"nodeType":"YulFunctionCall","src":"4476:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"4501:3:92","type":"","value":"160"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4472:3:92"},"nodeType":"YulFunctionCall","src":"4472:33:92"},"nodeType":"YulIf","src":"4469:53:92"},{"nodeType":"YulAssignment","src":"4531:39:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4560:9:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"4541:18:92"},"nodeType":"YulFunctionCall","src":"4541:29:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"4531:6:92"}]},{"nodeType":"YulAssignment","src":"4579:48:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4612:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4623:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4608:3:92"},"nodeType":"YulFunctionCall","src":"4608:18:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"4589:18:92"},"nodeType":"YulFunctionCall","src":"4589:38:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"4579:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"4636:46:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4667:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4678:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4663:3:92"},"nodeType":"YulFunctionCall","src":"4663:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4650:12:92"},"nodeType":"YulFunctionCall","src":"4650:32:92"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4640:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4691:28:92","value":{"kind":"number","nodeType":"YulLiteral","src":"4701:18:92","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"4695:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"4746:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4755:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4758:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4748:6:92"},"nodeType":"YulFunctionCall","src":"4748:12:92"},"nodeType":"YulExpressionStatement","src":"4748:12:92"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"4734:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"4742:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4731:2:92"},"nodeType":"YulFunctionCall","src":"4731:14:92"},"nodeType":"YulIf","src":"4728:34:92"},{"nodeType":"YulAssignment","src":"4771:71:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4814:9:92"},{"name":"offset","nodeType":"YulIdentifier","src":"4825:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4810:3:92"},"nodeType":"YulFunctionCall","src":"4810:22:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4834:7:92"}],"functionName":{"name":"abi_decode_array_uint256_dyn","nodeType":"YulIdentifier","src":"4781:28:92"},"nodeType":"YulFunctionCall","src":"4781:61:92"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"4771:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"4851:48:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4884:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4895:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4880:3:92"},"nodeType":"YulFunctionCall","src":"4880:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4867:12:92"},"nodeType":"YulFunctionCall","src":"4867:32:92"},"variables":[{"name":"offset_1","nodeType":"YulTypedName","src":"4855:8:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"4928:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4937:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4940:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4930:6:92"},"nodeType":"YulFunctionCall","src":"4930:12:92"},"nodeType":"YulExpressionStatement","src":"4930:12:92"}]},"condition":{"arguments":[{"name":"offset_1","nodeType":"YulIdentifier","src":"4914:8:92"},{"name":"_1","nodeType":"YulIdentifier","src":"4924:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4911:2:92"},"nodeType":"YulFunctionCall","src":"4911:16:92"},"nodeType":"YulIf","src":"4908:36:92"},{"nodeType":"YulAssignment","src":"4953:73:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4996:9:92"},{"name":"offset_1","nodeType":"YulIdentifier","src":"5007:8:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4992:3:92"},"nodeType":"YulFunctionCall","src":"4992:24:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"5018:7:92"}],"functionName":{"name":"abi_decode_array_uint256_dyn","nodeType":"YulIdentifier","src":"4963:28:92"},"nodeType":"YulFunctionCall","src":"4963:63:92"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"4953:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"5035:49:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5068:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5079:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5064:3:92"},"nodeType":"YulFunctionCall","src":"5064:19:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"5051:12:92"},"nodeType":"YulFunctionCall","src":"5051:33:92"},"variables":[{"name":"offset_2","nodeType":"YulTypedName","src":"5039:8:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"5113:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5122:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5125:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5115:6:92"},"nodeType":"YulFunctionCall","src":"5115:12:92"},"nodeType":"YulExpressionStatement","src":"5115:12:92"}]},"condition":{"arguments":[{"name":"offset_2","nodeType":"YulIdentifier","src":"5099:8:92"},{"name":"_1","nodeType":"YulIdentifier","src":"5109:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5096:2:92"},"nodeType":"YulFunctionCall","src":"5096:16:92"},"nodeType":"YulIf","src":"5093:36:92"},{"nodeType":"YulAssignment","src":"5138:61:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5169:9:92"},{"name":"offset_2","nodeType":"YulIdentifier","src":"5180:8:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5165:3:92"},"nodeType":"YulFunctionCall","src":"5165:24:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"5191:7:92"}],"functionName":{"name":"abi_decode_bytes","nodeType":"YulIdentifier","src":"5148:16:92"},"nodeType":"YulFunctionCall","src":"5148:51:92"},"variableNames":[{"name":"value4","nodeType":"YulIdentifier","src":"5138:6:92"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptrt_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4393:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"4404:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"4416:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"4424:6:92","type":""},{"name":"value2","nodeType":"YulTypedName","src":"4432:6:92","type":""},{"name":"value3","nodeType":"YulTypedName","src":"4440:6:92","type":""},{"name":"value4","nodeType":"YulTypedName","src":"4448:6:92","type":""}],"src":"4262:943:92"},{"body":{"nodeType":"YulBlock","src":"5347:1071:92","statements":[{"body":{"nodeType":"YulBlock","src":"5393:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5402:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5405:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5395:6:92"},"nodeType":"YulFunctionCall","src":"5395:12:92"},"nodeType":"YulExpressionStatement","src":"5395:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"5368:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"5377:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5364:3:92"},"nodeType":"YulFunctionCall","src":"5364:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"5389:2:92","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"5360:3:92"},"nodeType":"YulFunctionCall","src":"5360:32:92"},"nodeType":"YulIf","src":"5357:52:92"},{"nodeType":"YulVariableDeclaration","src":"5418:37:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5445:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"5432:12:92"},"nodeType":"YulFunctionCall","src":"5432:23:92"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"5422:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5464:28:92","value":{"kind":"number","nodeType":"YulLiteral","src":"5474:18:92","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"5468:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"5519:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5528:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5531:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5521:6:92"},"nodeType":"YulFunctionCall","src":"5521:12:92"},"nodeType":"YulExpressionStatement","src":"5521:12:92"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"5507:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"5515:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5504:2:92"},"nodeType":"YulFunctionCall","src":"5504:14:92"},"nodeType":"YulIf","src":"5501:34:92"},{"nodeType":"YulVariableDeclaration","src":"5544:32:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5558:9:92"},{"name":"offset","nodeType":"YulIdentifier","src":"5569:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5554:3:92"},"nodeType":"YulFunctionCall","src":"5554:22:92"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"5548:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"5624:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5633:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5636:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5626:6:92"},"nodeType":"YulFunctionCall","src":"5626:12:92"},"nodeType":"YulExpressionStatement","src":"5626:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"5603:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"5607:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5599:3:92"},"nodeType":"YulFunctionCall","src":"5599:13:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"5614:7:92"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"5595:3:92"},"nodeType":"YulFunctionCall","src":"5595:27:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"5588:6:92"},"nodeType":"YulFunctionCall","src":"5588:35:92"},"nodeType":"YulIf","src":"5585:55:92"},{"nodeType":"YulVariableDeclaration","src":"5649:26:92","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"5672:2:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"5659:12:92"},"nodeType":"YulFunctionCall","src":"5659:16:92"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"5653:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5684:14:92","value":{"kind":"number","nodeType":"YulLiteral","src":"5694:4:92","type":"","value":"0x20"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"5688:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5707:53:92","value":{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"5757:2:92"}],"functionName":{"name":"array_allocation_size_array_uint256_dyn","nodeType":"YulIdentifier","src":"5717:39:92"},"nodeType":"YulFunctionCall","src":"5717:43:92"},"variables":[{"name":"_5","nodeType":"YulTypedName","src":"5711:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5769:23:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5789:2:92","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5783:5:92"},"nodeType":"YulFunctionCall","src":"5783:9:92"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"5773:6:92","type":""}]},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"5821:6:92"},{"name":"_5","nodeType":"YulIdentifier","src":"5829:2:92"}],"functionName":{"name":"finalize_allocation","nodeType":"YulIdentifier","src":"5801:19:92"},"nodeType":"YulFunctionCall","src":"5801:31:92"},"nodeType":"YulExpressionStatement","src":"5801:31:92"},{"nodeType":"YulVariableDeclaration","src":"5841:17:92","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"5852:6:92"},"variables":[{"name":"dst","nodeType":"YulTypedName","src":"5845:3:92","type":""}]},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"5874:6:92"},{"name":"_3","nodeType":"YulIdentifier","src":"5882:2:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5867:6:92"},"nodeType":"YulFunctionCall","src":"5867:18:92"},"nodeType":"YulExpressionStatement","src":"5867:18:92"},{"nodeType":"YulAssignment","src":"5894:22:92","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"5905:6:92"},{"name":"_4","nodeType":"YulIdentifier","src":"5913:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5901:3:92"},"nodeType":"YulFunctionCall","src":"5901:15:92"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"5894:3:92"}]},{"nodeType":"YulVariableDeclaration","src":"5925:42:92","value":{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"5947:2:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5955:1:92","type":"","value":"5"},{"name":"_3","nodeType":"YulIdentifier","src":"5958:2:92"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"5951:3:92"},"nodeType":"YulFunctionCall","src":"5951:10:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5943:3:92"},"nodeType":"YulFunctionCall","src":"5943:19:92"},{"name":"_4","nodeType":"YulIdentifier","src":"5964:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5939:3:92"},"nodeType":"YulFunctionCall","src":"5939:28:92"},"variables":[{"name":"srcEnd","nodeType":"YulTypedName","src":"5929:6:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"5999:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6008:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6011:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6001:6:92"},"nodeType":"YulFunctionCall","src":"6001:12:92"},"nodeType":"YulExpressionStatement","src":"6001:12:92"}]},"condition":{"arguments":[{"name":"srcEnd","nodeType":"YulIdentifier","src":"5982:6:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"5990:7:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5979:2:92"},"nodeType":"YulFunctionCall","src":"5979:19:92"},"nodeType":"YulIf","src":"5976:39:92"},{"nodeType":"YulVariableDeclaration","src":"6024:22:92","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"6039:2:92"},{"name":"_4","nodeType":"YulIdentifier","src":"6043:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6035:3:92"},"nodeType":"YulFunctionCall","src":"6035:11:92"},"variables":[{"name":"src","nodeType":"YulTypedName","src":"6028:3:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"6111:92:92","statements":[{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"6132:3:92"},{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"6156:3:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"6137:18:92"},"nodeType":"YulFunctionCall","src":"6137:23:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6125:6:92"},"nodeType":"YulFunctionCall","src":"6125:36:92"},"nodeType":"YulExpressionStatement","src":"6125:36:92"},{"nodeType":"YulAssignment","src":"6174:19:92","value":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"6185:3:92"},{"name":"_4","nodeType":"YulIdentifier","src":"6190:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6181:3:92"},"nodeType":"YulFunctionCall","src":"6181:12:92"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"6174:3:92"}]}]},"condition":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"6066:3:92"},{"name":"srcEnd","nodeType":"YulIdentifier","src":"6071:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"6063:2:92"},"nodeType":"YulFunctionCall","src":"6063:15:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"6079:23:92","statements":[{"nodeType":"YulAssignment","src":"6081:19:92","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"6092:3:92"},{"name":"_4","nodeType":"YulIdentifier","src":"6097:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6088:3:92"},"nodeType":"YulFunctionCall","src":"6088:12:92"},"variableNames":[{"name":"src","nodeType":"YulIdentifier","src":"6081:3:92"}]}]},"pre":{"nodeType":"YulBlock","src":"6059:3:92","statements":[]},"src":"6055:148:92"},{"nodeType":"YulAssignment","src":"6212:16:92","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"6222:6:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"6212:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"6237:48:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6270:9:92"},{"name":"_4","nodeType":"YulIdentifier","src":"6281:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6266:3:92"},"nodeType":"YulFunctionCall","src":"6266:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6253:12:92"},"nodeType":"YulFunctionCall","src":"6253:32:92"},"variables":[{"name":"offset_1","nodeType":"YulTypedName","src":"6241:8:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"6314:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6323:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6326:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6316:6:92"},"nodeType":"YulFunctionCall","src":"6316:12:92"},"nodeType":"YulExpressionStatement","src":"6316:12:92"}]},"condition":{"arguments":[{"name":"offset_1","nodeType":"YulIdentifier","src":"6300:8:92"},{"name":"_1","nodeType":"YulIdentifier","src":"6310:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6297:2:92"},"nodeType":"YulFunctionCall","src":"6297:16:92"},"nodeType":"YulIf","src":"6294:36:92"},{"nodeType":"YulAssignment","src":"6339:73:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6382:9:92"},{"name":"offset_1","nodeType":"YulIdentifier","src":"6393:8:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6378:3:92"},"nodeType":"YulFunctionCall","src":"6378:24:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"6404:7:92"}],"functionName":{"name":"abi_decode_array_uint256_dyn","nodeType":"YulIdentifier","src":"6349:28:92"},"nodeType":"YulFunctionCall","src":"6349:63:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"6339:6:92"}]}]},"name":"abi_decode_tuple_t_array$_t_address_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5305:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"5316:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"5328:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"5336:6:92","type":""}],"src":"5210:1208:92"},{"body":{"nodeType":"YulBlock","src":"6484:374:92","statements":[{"nodeType":"YulVariableDeclaration","src":"6494:26:92","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6514:5:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6508:5:92"},"nodeType":"YulFunctionCall","src":"6508:12:92"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"6498:6:92","type":""}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6536:3:92"},{"name":"length","nodeType":"YulIdentifier","src":"6541:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6529:6:92"},"nodeType":"YulFunctionCall","src":"6529:19:92"},"nodeType":"YulExpressionStatement","src":"6529:19:92"},{"nodeType":"YulVariableDeclaration","src":"6557:14:92","value":{"kind":"number","nodeType":"YulLiteral","src":"6567:4:92","type":"","value":"0x20"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"6561:2:92","type":""}]},{"nodeType":"YulAssignment","src":"6580:19:92","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6591:3:92"},{"name":"_1","nodeType":"YulIdentifier","src":"6596:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6587:3:92"},"nodeType":"YulFunctionCall","src":"6587:12:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"6580:3:92"}]},{"nodeType":"YulVariableDeclaration","src":"6608:28:92","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6626:5:92"},{"name":"_1","nodeType":"YulIdentifier","src":"6633:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6622:3:92"},"nodeType":"YulFunctionCall","src":"6622:14:92"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"6612:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"6645:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"6654:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"6649:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"6713:120:92","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6734:3:92"},{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"6745:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6739:5:92"},"nodeType":"YulFunctionCall","src":"6739:13:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6727:6:92"},"nodeType":"YulFunctionCall","src":"6727:26:92"},"nodeType":"YulExpressionStatement","src":"6727:26:92"},{"nodeType":"YulAssignment","src":"6766:19:92","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6777:3:92"},{"name":"_1","nodeType":"YulIdentifier","src":"6782:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6773:3:92"},"nodeType":"YulFunctionCall","src":"6773:12:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"6766:3:92"}]},{"nodeType":"YulAssignment","src":"6798:25:92","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"6812:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"6820:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6808:3:92"},"nodeType":"YulFunctionCall","src":"6808:15:92"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"6798:6:92"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"6675:1:92"},{"name":"length","nodeType":"YulIdentifier","src":"6678:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"6672:2:92"},"nodeType":"YulFunctionCall","src":"6672:13:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"6686:18:92","statements":[{"nodeType":"YulAssignment","src":"6688:14:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"6697:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"6700:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6693:3:92"},"nodeType":"YulFunctionCall","src":"6693:9:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"6688:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"6668:3:92","statements":[]},"src":"6664:169:92"},{"nodeType":"YulAssignment","src":"6842:10:92","value":{"name":"pos","nodeType":"YulIdentifier","src":"6849:3:92"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"6842:3:92"}]}]},"name":"abi_encode_array_uint256_dyn","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"6461:5:92","type":""},{"name":"pos","nodeType":"YulTypedName","src":"6468:3:92","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"6476:3:92","type":""}],"src":"6423:435:92"},{"body":{"nodeType":"YulBlock","src":"7014:110:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7031:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7042:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7024:6:92"},"nodeType":"YulFunctionCall","src":"7024:21:92"},"nodeType":"YulExpressionStatement","src":"7024:21:92"},{"nodeType":"YulAssignment","src":"7054:64:92","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7091:6:92"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7103:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7114:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7099:3:92"},"nodeType":"YulFunctionCall","src":"7099:18:92"}],"functionName":{"name":"abi_encode_array_uint256_dyn","nodeType":"YulIdentifier","src":"7062:28:92"},"nodeType":"YulFunctionCall","src":"7062:56:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7054:4:92"}]}]},"name":"abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6983:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"6994:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7005:4:92","type":""}],"src":"6863:261:92"},{"body":{"nodeType":"YulBlock","src":"7213:263:92","statements":[{"body":{"nodeType":"YulBlock","src":"7259:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7268:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7271:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7261:6:92"},"nodeType":"YulFunctionCall","src":"7261:12:92"},"nodeType":"YulExpressionStatement","src":"7261:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"7234:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"7243:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"7230:3:92"},"nodeType":"YulFunctionCall","src":"7230:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"7255:2:92","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"7226:3:92"},"nodeType":"YulFunctionCall","src":"7226:32:92"},"nodeType":"YulIf","src":"7223:52:92"},{"nodeType":"YulAssignment","src":"7284:39:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7313:9:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"7294:18:92"},"nodeType":"YulFunctionCall","src":"7294:29:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"7284:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"7332:45:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7362:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7373:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7358:3:92"},"nodeType":"YulFunctionCall","src":"7358:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"7345:12:92"},"nodeType":"YulFunctionCall","src":"7345:32:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"7336:5:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"7430:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7439:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7442:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7432:6:92"},"nodeType":"YulFunctionCall","src":"7432:12:92"},"nodeType":"YulExpressionStatement","src":"7432:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7399:5:92"},{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7420:5:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"7413:6:92"},"nodeType":"YulFunctionCall","src":"7413:13:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"7406:6:92"},"nodeType":"YulFunctionCall","src":"7406:21:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"7396:2:92"},"nodeType":"YulFunctionCall","src":"7396:32:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"7389:6:92"},"nodeType":"YulFunctionCall","src":"7389:40:92"},"nodeType":"YulIf","src":"7386:60:92"},{"nodeType":"YulAssignment","src":"7455:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"7465:5:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"7455:6:92"}]}]},"name":"abi_decode_tuple_t_addresst_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7171:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"7182:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"7194:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"7202:6:92","type":""}],"src":"7129:347:92"},{"body":{"nodeType":"YulBlock","src":"7568:173:92","statements":[{"body":{"nodeType":"YulBlock","src":"7614:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7623:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7626:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7616:6:92"},"nodeType":"YulFunctionCall","src":"7616:12:92"},"nodeType":"YulExpressionStatement","src":"7616:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"7589:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"7598:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"7585:3:92"},"nodeType":"YulFunctionCall","src":"7585:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"7610:2:92","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"7581:3:92"},"nodeType":"YulFunctionCall","src":"7581:32:92"},"nodeType":"YulIf","src":"7578:52:92"},{"nodeType":"YulAssignment","src":"7639:39:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7668:9:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"7649:18:92"},"nodeType":"YulFunctionCall","src":"7649:29:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"7639:6:92"}]},{"nodeType":"YulAssignment","src":"7687:48:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7720:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7731:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7716:3:92"},"nodeType":"YulFunctionCall","src":"7716:18:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"7697:18:92"},"nodeType":"YulFunctionCall","src":"7697:38:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"7687:6:92"}]}]},"name":"abi_decode_tuple_t_addresst_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7526:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"7537:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"7549:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"7557:6:92","type":""}],"src":"7481:260:92"},{"body":{"nodeType":"YulBlock","src":"7893:459:92","statements":[{"body":{"nodeType":"YulBlock","src":"7940:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7949:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7952:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7942:6:92"},"nodeType":"YulFunctionCall","src":"7942:12:92"},"nodeType":"YulExpressionStatement","src":"7942:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"7914:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"7923:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"7910:3:92"},"nodeType":"YulFunctionCall","src":"7910:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"7935:3:92","type":"","value":"160"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"7906:3:92"},"nodeType":"YulFunctionCall","src":"7906:33:92"},"nodeType":"YulIf","src":"7903:53:92"},{"nodeType":"YulAssignment","src":"7965:39:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7994:9:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"7975:18:92"},"nodeType":"YulFunctionCall","src":"7975:29:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"7965:6:92"}]},{"nodeType":"YulAssignment","src":"8013:48:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8046:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8057:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8042:3:92"},"nodeType":"YulFunctionCall","src":"8042:18:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"8023:18:92"},"nodeType":"YulFunctionCall","src":"8023:38:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"8013:6:92"}]},{"nodeType":"YulAssignment","src":"8070:42:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8097:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8108:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8093:3:92"},"nodeType":"YulFunctionCall","src":"8093:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"8080:12:92"},"nodeType":"YulFunctionCall","src":"8080:32:92"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"8070:6:92"}]},{"nodeType":"YulAssignment","src":"8121:42:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8148:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8159:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8144:3:92"},"nodeType":"YulFunctionCall","src":"8144:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"8131:12:92"},"nodeType":"YulFunctionCall","src":"8131:32:92"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"8121:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"8172:47:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8203:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8214:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8199:3:92"},"nodeType":"YulFunctionCall","src":"8199:19:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"8186:12:92"},"nodeType":"YulFunctionCall","src":"8186:33:92"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"8176:6:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"8262:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8271:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8274:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8264:6:92"},"nodeType":"YulFunctionCall","src":"8264:12:92"},"nodeType":"YulExpressionStatement","src":"8264:12:92"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"8234:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"8242:18:92","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"8231:2:92"},"nodeType":"YulFunctionCall","src":"8231:30:92"},"nodeType":"YulIf","src":"8228:50:92"},{"nodeType":"YulAssignment","src":"8287:59:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8318:9:92"},{"name":"offset","nodeType":"YulIdentifier","src":"8329:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8314:3:92"},"nodeType":"YulFunctionCall","src":"8314:22:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"8338:7:92"}],"functionName":{"name":"abi_decode_bytes","nodeType":"YulIdentifier","src":"8297:16:92"},"nodeType":"YulFunctionCall","src":"8297:49:92"},"variableNames":[{"name":"value4","nodeType":"YulIdentifier","src":"8287:6:92"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7827:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"7838:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"7850:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"7858:6:92","type":""},{"name":"value2","nodeType":"YulTypedName","src":"7866:6:92","type":""},{"name":"value3","nodeType":"YulTypedName","src":"7874:6:92","type":""},{"name":"value4","nodeType":"YulTypedName","src":"7882:6:92","type":""}],"src":"7746:606:92"},{"body":{"nodeType":"YulBlock","src":"8531:232:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8548:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8559:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8541:6:92"},"nodeType":"YulFunctionCall","src":"8541:21:92"},"nodeType":"YulExpressionStatement","src":"8541:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8582:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8593:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8578:3:92"},"nodeType":"YulFunctionCall","src":"8578:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"8598:2:92","type":"","value":"42"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8571:6:92"},"nodeType":"YulFunctionCall","src":"8571:30:92"},"nodeType":"YulExpressionStatement","src":"8571:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8621:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8632:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8617:3:92"},"nodeType":"YulFunctionCall","src":"8617:18:92"},{"hexValue":"455243313135353a2061646472657373207a65726f206973206e6f7420612076","kind":"string","nodeType":"YulLiteral","src":"8637:34:92","type":"","value":"ERC1155: address zero is not a v"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8610:6:92"},"nodeType":"YulFunctionCall","src":"8610:62:92"},"nodeType":"YulExpressionStatement","src":"8610:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8692:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8703:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8688:3:92"},"nodeType":"YulFunctionCall","src":"8688:18:92"},{"hexValue":"616c6964206f776e6572","kind":"string","nodeType":"YulLiteral","src":"8708:12:92","type":"","value":"alid owner"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8681:6:92"},"nodeType":"YulFunctionCall","src":"8681:40:92"},"nodeType":"YulExpressionStatement","src":"8681:40:92"},{"nodeType":"YulAssignment","src":"8730:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8742:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8753:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8738:3:92"},"nodeType":"YulFunctionCall","src":"8738:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"8730:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_415a1b99e1fd4a18cf87c08995f5a9130182e8d76e9c17c497bfebaaef9265ad__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8508:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"8522:4:92","type":""}],"src":"8357:406:92"},{"body":{"nodeType":"YulBlock","src":"8823:325:92","statements":[{"nodeType":"YulAssignment","src":"8833:22:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8847:1:92","type":"","value":"1"},{"name":"data","nodeType":"YulIdentifier","src":"8850:4:92"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"8843:3:92"},"nodeType":"YulFunctionCall","src":"8843:12:92"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"8833:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"8864:38:92","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"8894:4:92"},{"kind":"number","nodeType":"YulLiteral","src":"8900:1:92","type":"","value":"1"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8890:3:92"},"nodeType":"YulFunctionCall","src":"8890:12:92"},"variables":[{"name":"outOfPlaceEncoding","nodeType":"YulTypedName","src":"8868:18:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"8941:31:92","statements":[{"nodeType":"YulAssignment","src":"8943:27:92","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"8957:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"8965:4:92","type":"","value":"0x7f"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8953:3:92"},"nodeType":"YulFunctionCall","src":"8953:17:92"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"8943:6:92"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"8921:18:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"8914:6:92"},"nodeType":"YulFunctionCall","src":"8914:26:92"},"nodeType":"YulIf","src":"8911:61:92"},{"body":{"nodeType":"YulBlock","src":"9031:111:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9052:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9059:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"9064:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"9055:3:92"},"nodeType":"YulFunctionCall","src":"9055:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9045:6:92"},"nodeType":"YulFunctionCall","src":"9045:31:92"},"nodeType":"YulExpressionStatement","src":"9045:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9096:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"9099:4:92","type":"","value":"0x22"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9089:6:92"},"nodeType":"YulFunctionCall","src":"9089:15:92"},"nodeType":"YulExpressionStatement","src":"9089:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9124:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"9127:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9117:6:92"},"nodeType":"YulFunctionCall","src":"9117:15:92"},"nodeType":"YulExpressionStatement","src":"9117:15:92"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"8987:18:92"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"9010:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"9018:2:92","type":"","value":"32"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"9007:2:92"},"nodeType":"YulFunctionCall","src":"9007:14:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"8984:2:92"},"nodeType":"YulFunctionCall","src":"8984:38:92"},"nodeType":"YulIf","src":"8981:161:92"}]},"name":"extract_byte_array_length","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"8803:4:92","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"8812:6:92","type":""}],"src":"8768:380:92"},{"body":{"nodeType":"YulBlock","src":"9327:236:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9344:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9355:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9337:6:92"},"nodeType":"YulFunctionCall","src":"9337:21:92"},"nodeType":"YulExpressionStatement","src":"9337:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9378:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9389:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9374:3:92"},"nodeType":"YulFunctionCall","src":"9374:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"9394:2:92","type":"","value":"46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9367:6:92"},"nodeType":"YulFunctionCall","src":"9367:30:92"},"nodeType":"YulExpressionStatement","src":"9367:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9417:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9428:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9413:3:92"},"nodeType":"YulFunctionCall","src":"9413:18:92"},{"hexValue":"455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e","kind":"string","nodeType":"YulLiteral","src":"9433:34:92","type":"","value":"ERC1155: caller is not token own"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9406:6:92"},"nodeType":"YulFunctionCall","src":"9406:62:92"},"nodeType":"YulExpressionStatement","src":"9406:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9488:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9499:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9484:3:92"},"nodeType":"YulFunctionCall","src":"9484:18:92"},{"hexValue":"6572206f7220617070726f766564","kind":"string","nodeType":"YulLiteral","src":"9504:16:92","type":"","value":"er or approved"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9477:6:92"},"nodeType":"YulFunctionCall","src":"9477:44:92"},"nodeType":"YulExpressionStatement","src":"9477:44:92"},{"nodeType":"YulAssignment","src":"9530:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9542:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9553:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9538:3:92"},"nodeType":"YulFunctionCall","src":"9538:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"9530:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_47c72b42072ed6c647dec3a0a5c88bec44d3e901c64659bff94ecce0a0323156__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9304:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"9318:4:92","type":""}],"src":"9153:410:92"},{"body":{"nodeType":"YulBlock","src":"9742:231:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9759:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9770:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9752:6:92"},"nodeType":"YulFunctionCall","src":"9752:21:92"},"nodeType":"YulExpressionStatement","src":"9752:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9793:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9804:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9789:3:92"},"nodeType":"YulFunctionCall","src":"9789:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"9809:2:92","type":"","value":"41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9782:6:92"},"nodeType":"YulFunctionCall","src":"9782:30:92"},"nodeType":"YulExpressionStatement","src":"9782:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9832:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9843:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9828:3:92"},"nodeType":"YulFunctionCall","src":"9828:18:92"},{"hexValue":"455243313135353a206163636f756e747320616e6420696473206c656e677468","kind":"string","nodeType":"YulLiteral","src":"9848:34:92","type":"","value":"ERC1155: accounts and ids length"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9821:6:92"},"nodeType":"YulFunctionCall","src":"9821:62:92"},"nodeType":"YulExpressionStatement","src":"9821:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9903:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9914:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9899:3:92"},"nodeType":"YulFunctionCall","src":"9899:18:92"},{"hexValue":"206d69736d61746368","kind":"string","nodeType":"YulLiteral","src":"9919:11:92","type":"","value":" mismatch"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9892:6:92"},"nodeType":"YulFunctionCall","src":"9892:39:92"},"nodeType":"YulExpressionStatement","src":"9892:39:92"},{"nodeType":"YulAssignment","src":"9940:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9952:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9963:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9948:3:92"},"nodeType":"YulFunctionCall","src":"9948:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"9940:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_e155f5d69798c6205436a388a4f3a5fd42f54147b40f4d63a2c8071ff8a9fee5__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9719:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"9733:4:92","type":""}],"src":"9568:405:92"},{"body":{"nodeType":"YulBlock","src":"10010:95:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10027:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10034:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"10039:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"10030:3:92"},"nodeType":"YulFunctionCall","src":"10030:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10020:6:92"},"nodeType":"YulFunctionCall","src":"10020:31:92"},"nodeType":"YulExpressionStatement","src":"10020:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10067:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"10070:4:92","type":"","value":"0x32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10060:6:92"},"nodeType":"YulFunctionCall","src":"10060:15:92"},"nodeType":"YulExpressionStatement","src":"10060:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10091:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"10094:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"10084:6:92"},"nodeType":"YulFunctionCall","src":"10084:15:92"},"nodeType":"YulExpressionStatement","src":"10084:15:92"}]},"name":"panic_error_0x32","nodeType":"YulFunctionDefinition","src":"9978:127:92"},{"body":{"nodeType":"YulBlock","src":"10142:95:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10159:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10166:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"10171:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"10162:3:92"},"nodeType":"YulFunctionCall","src":"10162:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10152:6:92"},"nodeType":"YulFunctionCall","src":"10152:31:92"},"nodeType":"YulExpressionStatement","src":"10152:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10199:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"10202:4:92","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10192:6:92"},"nodeType":"YulFunctionCall","src":"10192:15:92"},"nodeType":"YulExpressionStatement","src":"10192:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10223:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"10226:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"10216:6:92"},"nodeType":"YulFunctionCall","src":"10216:15:92"},"nodeType":"YulExpressionStatement","src":"10216:15:92"}]},"name":"panic_error_0x11","nodeType":"YulFunctionDefinition","src":"10110:127:92"},{"body":{"nodeType":"YulBlock","src":"10289:88:92","statements":[{"body":{"nodeType":"YulBlock","src":"10320:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"10322:16:92"},"nodeType":"YulFunctionCall","src":"10322:18:92"},"nodeType":"YulExpressionStatement","src":"10322:18:92"}]},"condition":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"10305:5:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10316:1:92","type":"","value":"0"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"10312:3:92"},"nodeType":"YulFunctionCall","src":"10312:6:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"10302:2:92"},"nodeType":"YulFunctionCall","src":"10302:17:92"},"nodeType":"YulIf","src":"10299:43:92"},{"nodeType":"YulAssignment","src":"10351:20:92","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"10362:5:92"},{"kind":"number","nodeType":"YulLiteral","src":"10369:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10358:3:92"},"nodeType":"YulFunctionCall","src":"10358:13:92"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"10351:3:92"}]}]},"name":"increment_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"10271:5:92","type":""}],"returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"10281:3:92","type":""}],"src":"10242:135:92"},{"body":{"nodeType":"YulBlock","src":"10556:223:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10573:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"10584:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10566:6:92"},"nodeType":"YulFunctionCall","src":"10566:21:92"},"nodeType":"YulExpressionStatement","src":"10566:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10607:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"10618:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10603:3:92"},"nodeType":"YulFunctionCall","src":"10603:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"10623:2:92","type":"","value":"33"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10596:6:92"},"nodeType":"YulFunctionCall","src":"10596:30:92"},"nodeType":"YulExpressionStatement","src":"10596:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10646:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"10657:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10642:3:92"},"nodeType":"YulFunctionCall","src":"10642:18:92"},{"hexValue":"455243313135353a206d696e7420746f20746865207a65726f20616464726573","kind":"string","nodeType":"YulLiteral","src":"10662:34:92","type":"","value":"ERC1155: mint to the zero addres"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10635:6:92"},"nodeType":"YulFunctionCall","src":"10635:62:92"},"nodeType":"YulExpressionStatement","src":"10635:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10717:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"10728:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10713:3:92"},"nodeType":"YulFunctionCall","src":"10713:18:92"},{"hexValue":"73","kind":"string","nodeType":"YulLiteral","src":"10733:3:92","type":"","value":"s"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10706:6:92"},"nodeType":"YulFunctionCall","src":"10706:31:92"},"nodeType":"YulExpressionStatement","src":"10706:31:92"},{"nodeType":"YulAssignment","src":"10746:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10758:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"10769:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10754:3:92"},"nodeType":"YulFunctionCall","src":"10754:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"10746:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_ebf031a1b7ee1d0b3a7752b450a3268e8b6c334561b48c1c0ba0f5bac05749f2__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"10533:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"10547:4:92","type":""}],"src":"10382:397:92"},{"body":{"nodeType":"YulBlock","src":"10832:77:92","statements":[{"nodeType":"YulAssignment","src":"10842:16:92","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"10853:1:92"},{"name":"y","nodeType":"YulIdentifier","src":"10856:1:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10849:3:92"},"nodeType":"YulFunctionCall","src":"10849:9:92"},"variableNames":[{"name":"sum","nodeType":"YulIdentifier","src":"10842:3:92"}]},{"body":{"nodeType":"YulBlock","src":"10881:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"10883:16:92"},"nodeType":"YulFunctionCall","src":"10883:18:92"},"nodeType":"YulExpressionStatement","src":"10883:18:92"}]},"condition":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"10873:1:92"},{"name":"sum","nodeType":"YulIdentifier","src":"10876:3:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"10870:2:92"},"nodeType":"YulFunctionCall","src":"10870:10:92"},"nodeType":"YulIf","src":"10867:36:92"}]},"name":"checked_add_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"10815:1:92","type":""},{"name":"y","nodeType":"YulTypedName","src":"10818:1:92","type":""}],"returnVariables":[{"name":"sum","nodeType":"YulTypedName","src":"10824:3:92","type":""}],"src":"10784:125:92"},{"body":{"nodeType":"YulBlock","src":"11043:119:92","statements":[{"nodeType":"YulAssignment","src":"11053:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11065:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"11076:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11061:3:92"},"nodeType":"YulFunctionCall","src":"11061:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"11053:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11095:9:92"},{"name":"value0","nodeType":"YulIdentifier","src":"11106:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11088:6:92"},"nodeType":"YulFunctionCall","src":"11088:25:92"},"nodeType":"YulExpressionStatement","src":"11088:25:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11133:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"11144:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11129:3:92"},"nodeType":"YulFunctionCall","src":"11129:18:92"},{"name":"value1","nodeType":"YulIdentifier","src":"11149:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11122:6:92"},"nodeType":"YulFunctionCall","src":"11122:34:92"},"nodeType":"YulExpressionStatement","src":"11122:34:92"}]},"name":"abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"11004:9:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"11015:6:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"11023:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"11034:4:92","type":""}],"src":"10914:248:92"},{"body":{"nodeType":"YulBlock","src":"11341:230:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11358:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"11369:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11351:6:92"},"nodeType":"YulFunctionCall","src":"11351:21:92"},"nodeType":"YulExpressionStatement","src":"11351:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11392:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"11403:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11388:3:92"},"nodeType":"YulFunctionCall","src":"11388:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"11408:2:92","type":"","value":"40"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11381:6:92"},"nodeType":"YulFunctionCall","src":"11381:30:92"},"nodeType":"YulExpressionStatement","src":"11381:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11431:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"11442:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11427:3:92"},"nodeType":"YulFunctionCall","src":"11427:18:92"},{"hexValue":"455243313135353a2069647320616e6420616d6f756e7473206c656e67746820","kind":"string","nodeType":"YulLiteral","src":"11447:34:92","type":"","value":"ERC1155: ids and amounts length "}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11420:6:92"},"nodeType":"YulFunctionCall","src":"11420:62:92"},"nodeType":"YulExpressionStatement","src":"11420:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11502:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"11513:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11498:3:92"},"nodeType":"YulFunctionCall","src":"11498:18:92"},{"hexValue":"6d69736d61746368","kind":"string","nodeType":"YulLiteral","src":"11518:10:92","type":"","value":"mismatch"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11491:6:92"},"nodeType":"YulFunctionCall","src":"11491:38:92"},"nodeType":"YulExpressionStatement","src":"11491:38:92"},{"nodeType":"YulAssignment","src":"11538:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11550:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"11561:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11546:3:92"},"nodeType":"YulFunctionCall","src":"11546:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"11538:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_e909e0c9a8f96b4f9af03b716811ece20beb070be416893ed1d50619b5930807__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"11318:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"11332:4:92","type":""}],"src":"11167:404:92"},{"body":{"nodeType":"YulBlock","src":"11750:227:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11767:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"11778:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11760:6:92"},"nodeType":"YulFunctionCall","src":"11760:21:92"},"nodeType":"YulExpressionStatement","src":"11760:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11801:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"11812:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11797:3:92"},"nodeType":"YulFunctionCall","src":"11797:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"11817:2:92","type":"","value":"37"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11790:6:92"},"nodeType":"YulFunctionCall","src":"11790:30:92"},"nodeType":"YulExpressionStatement","src":"11790:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11840:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"11851:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11836:3:92"},"nodeType":"YulFunctionCall","src":"11836:18:92"},{"hexValue":"455243313135353a207472616e7366657220746f20746865207a65726f206164","kind":"string","nodeType":"YulLiteral","src":"11856:34:92","type":"","value":"ERC1155: transfer to the zero ad"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11829:6:92"},"nodeType":"YulFunctionCall","src":"11829:62:92"},"nodeType":"YulExpressionStatement","src":"11829:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11911:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"11922:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11907:3:92"},"nodeType":"YulFunctionCall","src":"11907:18:92"},{"hexValue":"6472657373","kind":"string","nodeType":"YulLiteral","src":"11927:7:92","type":"","value":"dress"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11900:6:92"},"nodeType":"YulFunctionCall","src":"11900:35:92"},"nodeType":"YulExpressionStatement","src":"11900:35:92"},{"nodeType":"YulAssignment","src":"11944:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11956:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"11967:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11952:3:92"},"nodeType":"YulFunctionCall","src":"11952:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"11944:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_6faf1c67f278b07c6771dcf4c315a89c21c0eaed11d9ab3d51774da1cfef545d__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"11727:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"11741:4:92","type":""}],"src":"11576:401:92"},{"body":{"nodeType":"YulBlock","src":"12156:232:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12173:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"12184:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12166:6:92"},"nodeType":"YulFunctionCall","src":"12166:21:92"},"nodeType":"YulExpressionStatement","src":"12166:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12207:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"12218:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12203:3:92"},"nodeType":"YulFunctionCall","src":"12203:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"12223:2:92","type":"","value":"42"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12196:6:92"},"nodeType":"YulFunctionCall","src":"12196:30:92"},"nodeType":"YulExpressionStatement","src":"12196:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12246:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"12257:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12242:3:92"},"nodeType":"YulFunctionCall","src":"12242:18:92"},{"hexValue":"455243313135353a20696e73756666696369656e742062616c616e636520666f","kind":"string","nodeType":"YulLiteral","src":"12262:34:92","type":"","value":"ERC1155: insufficient balance fo"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12235:6:92"},"nodeType":"YulFunctionCall","src":"12235:62:92"},"nodeType":"YulExpressionStatement","src":"12235:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12317:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"12328:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12313:3:92"},"nodeType":"YulFunctionCall","src":"12313:18:92"},{"hexValue":"72207472616e73666572","kind":"string","nodeType":"YulLiteral","src":"12333:12:92","type":"","value":"r transfer"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12306:6:92"},"nodeType":"YulFunctionCall","src":"12306:40:92"},"nodeType":"YulExpressionStatement","src":"12306:40:92"},{"nodeType":"YulAssignment","src":"12355:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12367:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"12378:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12363:3:92"},"nodeType":"YulFunctionCall","src":"12363:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"12355:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_8ac7e9556b567c1c94bb4daaa3c3a65be5ac686579615210cb910fb8cb8d65bf__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"12133:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"12147:4:92","type":""}],"src":"11982:406:92"},{"body":{"nodeType":"YulBlock","src":"12622:236:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12639:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"12650:2:92","type":"","value":"64"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12632:6:92"},"nodeType":"YulFunctionCall","src":"12632:21:92"},"nodeType":"YulExpressionStatement","src":"12632:21:92"},{"nodeType":"YulVariableDeclaration","src":"12662:70:92","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"12705:6:92"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12717:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"12728:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12713:3:92"},"nodeType":"YulFunctionCall","src":"12713:18:92"}],"functionName":{"name":"abi_encode_array_uint256_dyn","nodeType":"YulIdentifier","src":"12676:28:92"},"nodeType":"YulFunctionCall","src":"12676:56:92"},"variables":[{"name":"tail_1","nodeType":"YulTypedName","src":"12666:6:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12752:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"12763:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12748:3:92"},"nodeType":"YulFunctionCall","src":"12748:18:92"},{"arguments":[{"name":"tail_1","nodeType":"YulIdentifier","src":"12772:6:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"12780:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"12768:3:92"},"nodeType":"YulFunctionCall","src":"12768:22:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12741:6:92"},"nodeType":"YulFunctionCall","src":"12741:50:92"},"nodeType":"YulExpressionStatement","src":"12741:50:92"},{"nodeType":"YulAssignment","src":"12800:52:92","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"12837:6:92"},{"name":"tail_1","nodeType":"YulIdentifier","src":"12845:6:92"}],"functionName":{"name":"abi_encode_array_uint256_dyn","nodeType":"YulIdentifier","src":"12808:28:92"},"nodeType":"YulFunctionCall","src":"12808:44:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"12800:4:92"}]}]},"name":"abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"12583:9:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"12594:6:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"12602:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"12613:4:92","type":""}],"src":"12393:465:92"},{"body":{"nodeType":"YulBlock","src":"13037:231:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13054:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"13065:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13047:6:92"},"nodeType":"YulFunctionCall","src":"13047:21:92"},"nodeType":"YulExpressionStatement","src":"13047:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13088:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"13099:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13084:3:92"},"nodeType":"YulFunctionCall","src":"13084:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"13104:2:92","type":"","value":"41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13077:6:92"},"nodeType":"YulFunctionCall","src":"13077:30:92"},"nodeType":"YulExpressionStatement","src":"13077:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13127:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"13138:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13123:3:92"},"nodeType":"YulFunctionCall","src":"13123:18:92"},{"hexValue":"455243313135353a2073657474696e6720617070726f76616c20737461747573","kind":"string","nodeType":"YulLiteral","src":"13143:34:92","type":"","value":"ERC1155: setting approval status"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13116:6:92"},"nodeType":"YulFunctionCall","src":"13116:62:92"},"nodeType":"YulExpressionStatement","src":"13116:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13198:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"13209:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13194:3:92"},"nodeType":"YulFunctionCall","src":"13194:18:92"},{"hexValue":"20666f722073656c66","kind":"string","nodeType":"YulLiteral","src":"13214:11:92","type":"","value":" for self"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13187:6:92"},"nodeType":"YulFunctionCall","src":"13187:39:92"},"nodeType":"YulExpressionStatement","src":"13187:39:92"},{"nodeType":"YulAssignment","src":"13235:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13247:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"13258:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13243:3:92"},"nodeType":"YulFunctionCall","src":"13243:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"13235:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_df9806c6dc743de602e49918a67b580590d69ab768bdb59f977c0a884a91a7c2__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"13014:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"13028:4:92","type":""}],"src":"12863:405:92"},{"body":{"nodeType":"YulBlock","src":"13447:225:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13464:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"13475:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13457:6:92"},"nodeType":"YulFunctionCall","src":"13457:21:92"},"nodeType":"YulExpressionStatement","src":"13457:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13498:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"13509:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13494:3:92"},"nodeType":"YulFunctionCall","src":"13494:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"13514:2:92","type":"","value":"35"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13487:6:92"},"nodeType":"YulFunctionCall","src":"13487:30:92"},"nodeType":"YulExpressionStatement","src":"13487:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13537:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"13548:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13533:3:92"},"nodeType":"YulFunctionCall","src":"13533:18:92"},{"hexValue":"455243313135353a206275726e2066726f6d20746865207a65726f2061646472","kind":"string","nodeType":"YulLiteral","src":"13553:34:92","type":"","value":"ERC1155: burn from the zero addr"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13526:6:92"},"nodeType":"YulFunctionCall","src":"13526:62:92"},"nodeType":"YulExpressionStatement","src":"13526:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13608:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"13619:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13604:3:92"},"nodeType":"YulFunctionCall","src":"13604:18:92"},{"hexValue":"657373","kind":"string","nodeType":"YulLiteral","src":"13624:5:92","type":"","value":"ess"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13597:6:92"},"nodeType":"YulFunctionCall","src":"13597:33:92"},"nodeType":"YulExpressionStatement","src":"13597:33:92"},{"nodeType":"YulAssignment","src":"13639:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13651:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"13662:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13647:3:92"},"nodeType":"YulFunctionCall","src":"13647:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"13639:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_87fd4aee52f5758d127cd9704d5ffef70f36ed1e87eb99b6f40e37a25c79a76a__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"13424:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"13438:4:92","type":""}],"src":"13273:399:92"},{"body":{"nodeType":"YulBlock","src":"13851:226:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13868:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"13879:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13861:6:92"},"nodeType":"YulFunctionCall","src":"13861:21:92"},"nodeType":"YulExpressionStatement","src":"13861:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13902:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"13913:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13898:3:92"},"nodeType":"YulFunctionCall","src":"13898:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"13918:2:92","type":"","value":"36"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13891:6:92"},"nodeType":"YulFunctionCall","src":"13891:30:92"},"nodeType":"YulExpressionStatement","src":"13891:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13941:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"13952:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13937:3:92"},"nodeType":"YulFunctionCall","src":"13937:18:92"},{"hexValue":"455243313135353a206275726e20616d6f756e7420657863656564732062616c","kind":"string","nodeType":"YulLiteral","src":"13957:34:92","type":"","value":"ERC1155: burn amount exceeds bal"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13930:6:92"},"nodeType":"YulFunctionCall","src":"13930:62:92"},"nodeType":"YulExpressionStatement","src":"13930:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14012:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"14023:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14008:3:92"},"nodeType":"YulFunctionCall","src":"14008:18:92"},{"hexValue":"616e6365","kind":"string","nodeType":"YulLiteral","src":"14028:6:92","type":"","value":"ance"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"14001:6:92"},"nodeType":"YulFunctionCall","src":"14001:34:92"},"nodeType":"YulExpressionStatement","src":"14001:34:92"},{"nodeType":"YulAssignment","src":"14044:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14056:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"14067:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14052:3:92"},"nodeType":"YulFunctionCall","src":"14052:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"14044:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_294a5de01910e2350ff231c633ae2d453ed6b1b72c75506234b7aace63eae685__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"13828:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"13842:4:92","type":""}],"src":"13677:400:92"},{"body":{"nodeType":"YulBlock","src":"14313:353:92","statements":[{"nodeType":"YulVariableDeclaration","src":"14323:52:92","value":{"kind":"number","nodeType":"YulLiteral","src":"14333:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"14327:2:92","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14391:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"14406:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"14414:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"14402:3:92"},"nodeType":"YulFunctionCall","src":"14402:15:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"14384:6:92"},"nodeType":"YulFunctionCall","src":"14384:34:92"},"nodeType":"YulExpressionStatement","src":"14384:34:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14438:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"14449:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14434:3:92"},"nodeType":"YulFunctionCall","src":"14434:18:92"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"14458:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"14466:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"14454:3:92"},"nodeType":"YulFunctionCall","src":"14454:15:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"14427:6:92"},"nodeType":"YulFunctionCall","src":"14427:43:92"},"nodeType":"YulExpressionStatement","src":"14427:43:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14490:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"14501:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14486:3:92"},"nodeType":"YulFunctionCall","src":"14486:18:92"},{"name":"value2","nodeType":"YulIdentifier","src":"14506:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"14479:6:92"},"nodeType":"YulFunctionCall","src":"14479:34:92"},"nodeType":"YulExpressionStatement","src":"14479:34:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14533:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"14544:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14529:3:92"},"nodeType":"YulFunctionCall","src":"14529:18:92"},{"name":"value3","nodeType":"YulIdentifier","src":"14549:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"14522:6:92"},"nodeType":"YulFunctionCall","src":"14522:34:92"},"nodeType":"YulExpressionStatement","src":"14522:34:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14576:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"14587:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14572:3:92"},"nodeType":"YulFunctionCall","src":"14572:19:92"},{"kind":"number","nodeType":"YulLiteral","src":"14593:3:92","type":"","value":"160"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"14565:6:92"},"nodeType":"YulFunctionCall","src":"14565:32:92"},"nodeType":"YulExpressionStatement","src":"14565:32:92"},{"nodeType":"YulAssignment","src":"14606:54:92","value":{"arguments":[{"name":"value4","nodeType":"YulIdentifier","src":"14632:6:92"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14644:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"14655:3:92","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14640:3:92"},"nodeType":"YulFunctionCall","src":"14640:19:92"}],"functionName":{"name":"abi_encode_string","nodeType":"YulIdentifier","src":"14614:17:92"},"nodeType":"YulFunctionCall","src":"14614:46:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"14606:4:92"}]}]},"name":"abi_encode_tuple_t_address_t_address_t_uint256_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_uint256_t_bytes_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"14250:9:92","type":""},{"name":"value4","nodeType":"YulTypedName","src":"14261:6:92","type":""},{"name":"value3","nodeType":"YulTypedName","src":"14269:6:92","type":""},{"name":"value2","nodeType":"YulTypedName","src":"14277:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"14285:6:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"14293:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"14304:4:92","type":""}],"src":"14082:584:92"},{"body":{"nodeType":"YulBlock","src":"14751:169:92","statements":[{"body":{"nodeType":"YulBlock","src":"14797:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"14806:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"14809:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"14799:6:92"},"nodeType":"YulFunctionCall","src":"14799:12:92"},"nodeType":"YulExpressionStatement","src":"14799:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"14772:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"14781:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"14768:3:92"},"nodeType":"YulFunctionCall","src":"14768:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"14793:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"14764:3:92"},"nodeType":"YulFunctionCall","src":"14764:32:92"},"nodeType":"YulIf","src":"14761:52:92"},{"nodeType":"YulVariableDeclaration","src":"14822:29:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14841:9:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"14835:5:92"},"nodeType":"YulFunctionCall","src":"14835:16:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"14826:5:92","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"14884:5:92"}],"functionName":{"name":"validator_revert_bytes4","nodeType":"YulIdentifier","src":"14860:23:92"},"nodeType":"YulFunctionCall","src":"14860:30:92"},"nodeType":"YulExpressionStatement","src":"14860:30:92"},{"nodeType":"YulAssignment","src":"14899:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"14909:5:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"14899:6:92"}]}]},"name":"abi_decode_tuple_t_bytes4_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"14717:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"14728:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"14740:6:92","type":""}],"src":"14671:249:92"},{"body":{"nodeType":"YulBlock","src":"14968:136:92","statements":[{"body":{"nodeType":"YulBlock","src":"15013:85:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"15042:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"15045:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"15048:1:92","type":"","value":"4"}],"functionName":{"name":"returndatacopy","nodeType":"YulIdentifier","src":"15027:14:92"},"nodeType":"YulFunctionCall","src":"15027:23:92"},"nodeType":"YulExpressionStatement","src":"15027:23:92"},{"nodeType":"YulAssignment","src":"15063:25:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"15074:3:92","type":"","value":"224"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"15085:1:92","type":"","value":"0"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"15079:5:92"},"nodeType":"YulFunctionCall","src":"15079:8:92"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"15070:3:92"},"nodeType":"YulFunctionCall","src":"15070:18:92"},"variableNames":[{"name":"sig","nodeType":"YulIdentifier","src":"15063:3:92"}]}]},"condition":{"arguments":[{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"14984:14:92"},"nodeType":"YulFunctionCall","src":"14984:16:92"},{"kind":"number","nodeType":"YulLiteral","src":"15002:1:92","type":"","value":"3"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"14981:2:92"},"nodeType":"YulFunctionCall","src":"14981:23:92"},"nodeType":"YulIf","src":"14978:120:92"}]},"name":"return_data_selector","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"sig","nodeType":"YulTypedName","src":"14960:3:92","type":""}],"src":"14925:179:92"},{"body":{"nodeType":"YulBlock","src":"15156:624:92","statements":[{"body":{"nodeType":"YulBlock","src":"15196:9:92","statements":[{"nodeType":"YulLeave","src":"15198:5:92"}]},"condition":{"arguments":[{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"15172:14:92"},"nodeType":"YulFunctionCall","src":"15172:16:92"},{"kind":"number","nodeType":"YulLiteral","src":"15190:4:92","type":"","value":"0x44"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"15169:2:92"},"nodeType":"YulFunctionCall","src":"15169:26:92"},"nodeType":"YulIf","src":"15166:39:92"},{"nodeType":"YulVariableDeclaration","src":"15214:21:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"15232:2:92","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"15226:5:92"},"nodeType":"YulFunctionCall","src":"15226:9:92"},"variables":[{"name":"data","nodeType":"YulTypedName","src":"15218:4:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"15244:16:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"15258:1:92","type":"","value":"3"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"15254:3:92"},"nodeType":"YulFunctionCall","src":"15254:6:92"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"15248:2:92","type":""}]},{"expression":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"15284:4:92"},{"kind":"number","nodeType":"YulLiteral","src":"15290:1:92","type":"","value":"4"},{"arguments":[{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"15297:14:92"},"nodeType":"YulFunctionCall","src":"15297:16:92"},{"name":"_1","nodeType":"YulIdentifier","src":"15315:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15293:3:92"},"nodeType":"YulFunctionCall","src":"15293:25:92"}],"functionName":{"name":"returndatacopy","nodeType":"YulIdentifier","src":"15269:14:92"},"nodeType":"YulFunctionCall","src":"15269:50:92"},"nodeType":"YulExpressionStatement","src":"15269:50:92"},{"nodeType":"YulVariableDeclaration","src":"15328:25:92","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"15348:4:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"15342:5:92"},"nodeType":"YulFunctionCall","src":"15342:11:92"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"15332:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"15362:26:92","value":{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"15372:14:92"},"nodeType":"YulFunctionCall","src":"15372:16:92"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"15366:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"15397:28:92","value":{"kind":"number","nodeType":"YulLiteral","src":"15407:18:92","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"15401:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"15483:9:92","statements":[{"nodeType":"YulLeave","src":"15485:5:92"}]},"condition":{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"15443:6:92"},{"name":"_3","nodeType":"YulIdentifier","src":"15451:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"15440:2:92"},"nodeType":"YulFunctionCall","src":"15440:14:92"},{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"15463:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"15471:4:92","type":"","value":"0x24"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15459:3:92"},"nodeType":"YulFunctionCall","src":"15459:17:92"},{"name":"_2","nodeType":"YulIdentifier","src":"15478:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"15456:2:92"},"nodeType":"YulFunctionCall","src":"15456:25:92"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"15437:2:92"},"nodeType":"YulFunctionCall","src":"15437:45:92"},"nodeType":"YulIf","src":"15434:58:92"},{"nodeType":"YulVariableDeclaration","src":"15501:28:92","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"15516:4:92"},{"name":"offset","nodeType":"YulIdentifier","src":"15522:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15512:3:92"},"nodeType":"YulFunctionCall","src":"15512:17:92"},"variables":[{"name":"msg","nodeType":"YulTypedName","src":"15505:3:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"15538:24:92","value":{"arguments":[{"name":"msg","nodeType":"YulIdentifier","src":"15558:3:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"15552:5:92"},"nodeType":"YulFunctionCall","src":"15552:10:92"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"15542:6:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"15589:9:92","statements":[{"nodeType":"YulLeave","src":"15591:5:92"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"15577:6:92"},{"name":"_3","nodeType":"YulIdentifier","src":"15585:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"15574:2:92"},"nodeType":"YulFunctionCall","src":"15574:14:92"},"nodeType":"YulIf","src":"15571:27:92"},{"body":{"nodeType":"YulBlock","src":"15680:9:92","statements":[{"nodeType":"YulLeave","src":"15682:5:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"msg","nodeType":"YulIdentifier","src":"15621:3:92"},{"name":"length","nodeType":"YulIdentifier","src":"15626:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15617:3:92"},"nodeType":"YulFunctionCall","src":"15617:16:92"},{"kind":"number","nodeType":"YulLiteral","src":"15635:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15613:3:92"},"nodeType":"YulFunctionCall","src":"15613:27:92"},{"arguments":[{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"15650:4:92"},{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"15656:14:92"},"nodeType":"YulFunctionCall","src":"15656:16:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15646:3:92"},"nodeType":"YulFunctionCall","src":"15646:27:92"},{"name":"_1","nodeType":"YulIdentifier","src":"15675:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15642:3:92"},"nodeType":"YulFunctionCall","src":"15642:36:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"15610:2:92"},"nodeType":"YulFunctionCall","src":"15610:69:92"},"nodeType":"YulIf","src":"15607:82:92"},{"expression":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"15718:4:92"},{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"15732:6:92"},{"name":"length","nodeType":"YulIdentifier","src":"15740:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15728:3:92"},"nodeType":"YulFunctionCall","src":"15728:19:92"},{"kind":"number","nodeType":"YulLiteral","src":"15749:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15724:3:92"},"nodeType":"YulFunctionCall","src":"15724:30:92"}],"functionName":{"name":"finalize_allocation","nodeType":"YulIdentifier","src":"15698:19:92"},"nodeType":"YulFunctionCall","src":"15698:57:92"},"nodeType":"YulExpressionStatement","src":"15698:57:92"},{"nodeType":"YulAssignment","src":"15764:10:92","value":{"name":"msg","nodeType":"YulIdentifier","src":"15771:3:92"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"15764:3:92"}]}]},"name":"try_decode_error_message","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"15148:3:92","type":""}],"src":"15109:671:92"},{"body":{"nodeType":"YulBlock","src":"15959:242:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15976:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"15987:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15969:6:92"},"nodeType":"YulFunctionCall","src":"15969:21:92"},"nodeType":"YulExpressionStatement","src":"15969:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"16010:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"16021:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16006:3:92"},"nodeType":"YulFunctionCall","src":"16006:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"16026:2:92","type":"","value":"52"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15999:6:92"},"nodeType":"YulFunctionCall","src":"15999:30:92"},"nodeType":"YulExpressionStatement","src":"15999:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"16049:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"16060:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16045:3:92"},"nodeType":"YulFunctionCall","src":"16045:18:92"},{"hexValue":"455243313135353a207472616e7366657220746f206e6f6e2d45524331313535","kind":"string","nodeType":"YulLiteral","src":"16065:34:92","type":"","value":"ERC1155: transfer to non-ERC1155"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"16038:6:92"},"nodeType":"YulFunctionCall","src":"16038:62:92"},"nodeType":"YulExpressionStatement","src":"16038:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"16120:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"16131:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16116:3:92"},"nodeType":"YulFunctionCall","src":"16116:18:92"},{"hexValue":"526563656976657220696d706c656d656e746572","kind":"string","nodeType":"YulLiteral","src":"16136:22:92","type":"","value":"Receiver implementer"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"16109:6:92"},"nodeType":"YulFunctionCall","src":"16109:50:92"},"nodeType":"YulExpressionStatement","src":"16109:50:92"},{"nodeType":"YulAssignment","src":"16168:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"16180:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"16191:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16176:3:92"},"nodeType":"YulFunctionCall","src":"16176:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"16168:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_f591f7b75ffc499e05f8b34c3364b2eceff651378d9549db1d5d67c0d8255c5d__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"15936:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"15950:4:92","type":""}],"src":"15785:416:92"},{"body":{"nodeType":"YulBlock","src":"16380:230:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"16397:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"16408:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"16390:6:92"},"nodeType":"YulFunctionCall","src":"16390:21:92"},"nodeType":"YulExpressionStatement","src":"16390:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"16431:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"16442:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16427:3:92"},"nodeType":"YulFunctionCall","src":"16427:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"16447:2:92","type":"","value":"40"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"16420:6:92"},"nodeType":"YulFunctionCall","src":"16420:30:92"},"nodeType":"YulExpressionStatement","src":"16420:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"16470:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"16481:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16466:3:92"},"nodeType":"YulFunctionCall","src":"16466:18:92"},{"hexValue":"455243313135353a204552433131353552656365697665722072656a65637465","kind":"string","nodeType":"YulLiteral","src":"16486:34:92","type":"","value":"ERC1155: ERC1155Receiver rejecte"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"16459:6:92"},"nodeType":"YulFunctionCall","src":"16459:62:92"},"nodeType":"YulExpressionStatement","src":"16459:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"16541:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"16552:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16537:3:92"},"nodeType":"YulFunctionCall","src":"16537:18:92"},{"hexValue":"6420746f6b656e73","kind":"string","nodeType":"YulLiteral","src":"16557:10:92","type":"","value":"d tokens"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"16530:6:92"},"nodeType":"YulFunctionCall","src":"16530:38:92"},"nodeType":"YulExpressionStatement","src":"16530:38:92"},{"nodeType":"YulAssignment","src":"16577:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"16589:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"16600:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16585:3:92"},"nodeType":"YulFunctionCall","src":"16585:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"16577:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_0587cccad73a80a7f013db13c596f4febc1968dc77e1d3589d5e7a509a3d6503__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"16357:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"16371:4:92","type":""}],"src":"16206:404:92"},{"body":{"nodeType":"YulBlock","src":"16946:519:92","statements":[{"nodeType":"YulVariableDeclaration","src":"16956:52:92","value":{"kind":"number","nodeType":"YulLiteral","src":"16966:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"16960:2:92","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17024:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"17039:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"17047:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"17035:3:92"},"nodeType":"YulFunctionCall","src":"17035:15:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17017:6:92"},"nodeType":"YulFunctionCall","src":"17017:34:92"},"nodeType":"YulExpressionStatement","src":"17017:34:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17071:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"17082:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17067:3:92"},"nodeType":"YulFunctionCall","src":"17067:18:92"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"17091:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"17099:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"17087:3:92"},"nodeType":"YulFunctionCall","src":"17087:15:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17060:6:92"},"nodeType":"YulFunctionCall","src":"17060:43:92"},"nodeType":"YulExpressionStatement","src":"17060:43:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17123:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"17134:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17119:3:92"},"nodeType":"YulFunctionCall","src":"17119:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"17139:3:92","type":"","value":"160"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17112:6:92"},"nodeType":"YulFunctionCall","src":"17112:31:92"},"nodeType":"YulExpressionStatement","src":"17112:31:92"},{"nodeType":"YulVariableDeclaration","src":"17152:71:92","value":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"17195:6:92"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17207:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"17218:3:92","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17203:3:92"},"nodeType":"YulFunctionCall","src":"17203:19:92"}],"functionName":{"name":"abi_encode_array_uint256_dyn","nodeType":"YulIdentifier","src":"17166:28:92"},"nodeType":"YulFunctionCall","src":"17166:57:92"},"variables":[{"name":"tail_1","nodeType":"YulTypedName","src":"17156:6:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17243:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"17254:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17239:3:92"},"nodeType":"YulFunctionCall","src":"17239:18:92"},{"arguments":[{"name":"tail_1","nodeType":"YulIdentifier","src":"17263:6:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"17271:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"17259:3:92"},"nodeType":"YulFunctionCall","src":"17259:22:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17232:6:92"},"nodeType":"YulFunctionCall","src":"17232:50:92"},"nodeType":"YulExpressionStatement","src":"17232:50:92"},{"nodeType":"YulVariableDeclaration","src":"17291:58:92","value":{"arguments":[{"name":"value3","nodeType":"YulIdentifier","src":"17334:6:92"},{"name":"tail_1","nodeType":"YulIdentifier","src":"17342:6:92"}],"functionName":{"name":"abi_encode_array_uint256_dyn","nodeType":"YulIdentifier","src":"17305:28:92"},"nodeType":"YulFunctionCall","src":"17305:44:92"},"variables":[{"name":"tail_2","nodeType":"YulTypedName","src":"17295:6:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17369:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"17380:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17365:3:92"},"nodeType":"YulFunctionCall","src":"17365:19:92"},{"arguments":[{"name":"tail_2","nodeType":"YulIdentifier","src":"17390:6:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"17398:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"17386:3:92"},"nodeType":"YulFunctionCall","src":"17386:22:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17358:6:92"},"nodeType":"YulFunctionCall","src":"17358:51:92"},"nodeType":"YulExpressionStatement","src":"17358:51:92"},{"nodeType":"YulAssignment","src":"17418:41:92","value":{"arguments":[{"name":"value4","nodeType":"YulIdentifier","src":"17444:6:92"},{"name":"tail_2","nodeType":"YulIdentifier","src":"17452:6:92"}],"functionName":{"name":"abi_encode_string","nodeType":"YulIdentifier","src":"17426:17:92"},"nodeType":"YulFunctionCall","src":"17426:33:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"17418:4:92"}]}]},"name":"abi_encode_tuple_t_address_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr_t_bytes_memory_ptr__to_t_address_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr_t_bytes_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"16883:9:92","type":""},{"name":"value4","nodeType":"YulTypedName","src":"16894:6:92","type":""},{"name":"value3","nodeType":"YulTypedName","src":"16902:6:92","type":""},{"name":"value2","nodeType":"YulTypedName","src":"16910:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"16918:6:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"16926:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"16937:4:92","type":""}],"src":"16615:850:92"}]},"contents":"{\n { }\n function abi_decode_address(offset) -> value\n {\n value := calldataload(offset)\n if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := calldataload(add(headStart, 32))\n }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function validator_revert_bytes4(value)\n {\n if iszero(eq(value, and(value, shl(224, 0xffffffff)))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_bytes4(value)\n value0 := value\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := calldataload(headStart)\n }\n function abi_encode_string(value, pos) -> end\n {\n let length := mload(value)\n mstore(pos, length)\n let i := 0\n for { } lt(i, length) { i := add(i, 0x20) }\n {\n let _1 := 0x20\n mstore(add(add(pos, i), _1), mload(add(add(value, i), _1)))\n }\n mstore(add(add(pos, length), 0x20), 0)\n end := add(add(pos, and(add(length, 31), not(31))), 0x20)\n }\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n mstore(headStart, 32)\n tail := abi_encode_string(value0, add(headStart, 32))\n }\n function abi_decode_tuple_t_addresst_uint256t_uint256(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := calldataload(add(headStart, 32))\n value2 := calldataload(add(headStart, 64))\n }\n function panic_error_0x41()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function finalize_allocation(memPtr, size)\n {\n let newFreePtr := add(memPtr, and(add(size, 31), not(31)))\n if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n }\n function array_allocation_size_array_uint256_dyn(length) -> size\n {\n if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n size := add(shl(5, length), 0x20)\n }\n function abi_decode_array_uint256_dyn(offset, end) -> array\n {\n if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n let _1 := calldataload(offset)\n let _2 := 0x20\n let _3 := array_allocation_size_array_uint256_dyn(_1)\n let memPtr := mload(64)\n finalize_allocation(memPtr, _3)\n let dst := memPtr\n mstore(memPtr, _1)\n dst := add(memPtr, _2)\n let srcEnd := add(add(offset, shl(5, _1)), _2)\n if gt(srcEnd, end) { revert(0, 0) }\n let src := add(offset, _2)\n for { } lt(src, srcEnd) { src := add(src, _2) }\n {\n mstore(dst, calldataload(src))\n dst := add(dst, _2)\n }\n array := memPtr\n }\n function abi_decode_bytes(offset, end) -> array\n {\n if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n let _1 := calldataload(offset)\n if gt(_1, 0xffffffffffffffff) { panic_error_0x41() }\n let memPtr := mload(64)\n finalize_allocation(memPtr, add(and(add(_1, 0x1f), not(31)), 0x20))\n mstore(memPtr, _1)\n if gt(add(add(offset, _1), 0x20), end) { revert(0, 0) }\n calldatacopy(add(memPtr, 0x20), add(offset, 0x20), _1)\n mstore(add(add(memPtr, _1), 0x20), 0)\n array := memPtr\n }\n function abi_decode_tuple_t_addresst_addresst_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptrt_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4\n {\n if slt(sub(dataEnd, headStart), 160) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := abi_decode_address(add(headStart, 32))\n let offset := calldataload(add(headStart, 64))\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n value2 := abi_decode_array_uint256_dyn(add(headStart, offset), dataEnd)\n let offset_1 := calldataload(add(headStart, 96))\n if gt(offset_1, _1) { revert(0, 0) }\n value3 := abi_decode_array_uint256_dyn(add(headStart, offset_1), dataEnd)\n let offset_2 := calldataload(add(headStart, 128))\n if gt(offset_2, _1) { revert(0, 0) }\n value4 := abi_decode_bytes(add(headStart, offset_2), dataEnd)\n }\n function abi_decode_tuple_t_array$_t_address_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptr(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n let offset := calldataload(headStart)\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n let _2 := add(headStart, offset)\n if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n let _3 := calldataload(_2)\n let _4 := 0x20\n let _5 := array_allocation_size_array_uint256_dyn(_3)\n let memPtr := mload(64)\n finalize_allocation(memPtr, _5)\n let dst := memPtr\n mstore(memPtr, _3)\n dst := add(memPtr, _4)\n let srcEnd := add(add(_2, shl(5, _3)), _4)\n if gt(srcEnd, dataEnd) { revert(0, 0) }\n let src := add(_2, _4)\n for { } lt(src, srcEnd) { src := add(src, _4) }\n {\n mstore(dst, abi_decode_address(src))\n dst := add(dst, _4)\n }\n value0 := memPtr\n let offset_1 := calldataload(add(headStart, _4))\n if gt(offset_1, _1) { revert(0, 0) }\n value1 := abi_decode_array_uint256_dyn(add(headStart, offset_1), dataEnd)\n }\n function abi_encode_array_uint256_dyn(value, pos) -> end\n {\n let length := mload(value)\n mstore(pos, length)\n let _1 := 0x20\n pos := add(pos, _1)\n let srcPtr := add(value, _1)\n let i := 0\n for { } lt(i, length) { i := add(i, 1) }\n {\n mstore(pos, mload(srcPtr))\n pos := add(pos, _1)\n srcPtr := add(srcPtr, _1)\n }\n end := pos\n }\n function abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n mstore(headStart, 32)\n tail := abi_encode_array_uint256_dyn(value0, add(headStart, 32))\n }\n function abi_decode_tuple_t_addresst_bool(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n let value := calldataload(add(headStart, 32))\n if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n value1 := value\n }\n function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := abi_decode_address(add(headStart, 32))\n }\n function abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4\n {\n if slt(sub(dataEnd, headStart), 160) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := abi_decode_address(add(headStart, 32))\n value2 := calldataload(add(headStart, 64))\n value3 := calldataload(add(headStart, 96))\n let offset := calldataload(add(headStart, 128))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n value4 := abi_decode_bytes(add(headStart, offset), dataEnd)\n }\n function abi_encode_tuple_t_stringliteral_415a1b99e1fd4a18cf87c08995f5a9130182e8d76e9c17c497bfebaaef9265ad__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 42)\n mstore(add(headStart, 64), \"ERC1155: address zero is not a v\")\n mstore(add(headStart, 96), \"alid owner\")\n tail := add(headStart, 128)\n }\n function extract_byte_array_length(data) -> length\n {\n length := shr(1, data)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n if eq(outOfPlaceEncoding, lt(length, 32))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n }\n function abi_encode_tuple_t_stringliteral_47c72b42072ed6c647dec3a0a5c88bec44d3e901c64659bff94ecce0a0323156__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 46)\n mstore(add(headStart, 64), \"ERC1155: caller is not token own\")\n mstore(add(headStart, 96), \"er or approved\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_e155f5d69798c6205436a388a4f3a5fd42f54147b40f4d63a2c8071ff8a9fee5__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 41)\n mstore(add(headStart, 64), \"ERC1155: accounts and ids length\")\n mstore(add(headStart, 96), \" mismatch\")\n tail := add(headStart, 128)\n }\n function panic_error_0x32()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n function panic_error_0x11()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n function increment_t_uint256(value) -> ret\n {\n if eq(value, not(0)) { panic_error_0x11() }\n ret := add(value, 1)\n }\n function abi_encode_tuple_t_stringliteral_ebf031a1b7ee1d0b3a7752b450a3268e8b6c334561b48c1c0ba0f5bac05749f2__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 33)\n mstore(add(headStart, 64), \"ERC1155: mint to the zero addres\")\n mstore(add(headStart, 96), \"s\")\n tail := add(headStart, 128)\n }\n function checked_add_t_uint256(x, y) -> sum\n {\n sum := add(x, y)\n if gt(x, sum) { panic_error_0x11() }\n }\n function abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n mstore(headStart, value0)\n mstore(add(headStart, 32), value1)\n }\n function abi_encode_tuple_t_stringliteral_e909e0c9a8f96b4f9af03b716811ece20beb070be416893ed1d50619b5930807__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 40)\n mstore(add(headStart, 64), \"ERC1155: ids and amounts length \")\n mstore(add(headStart, 96), \"mismatch\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_6faf1c67f278b07c6771dcf4c315a89c21c0eaed11d9ab3d51774da1cfef545d__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 37)\n mstore(add(headStart, 64), \"ERC1155: transfer to the zero ad\")\n mstore(add(headStart, 96), \"dress\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_8ac7e9556b567c1c94bb4daaa3c3a65be5ac686579615210cb910fb8cb8d65bf__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 42)\n mstore(add(headStart, 64), \"ERC1155: insufficient balance fo\")\n mstore(add(headStart, 96), \"r transfer\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n {\n mstore(headStart, 64)\n let tail_1 := abi_encode_array_uint256_dyn(value0, add(headStart, 64))\n mstore(add(headStart, 32), sub(tail_1, headStart))\n tail := abi_encode_array_uint256_dyn(value1, tail_1)\n }\n function abi_encode_tuple_t_stringliteral_df9806c6dc743de602e49918a67b580590d69ab768bdb59f977c0a884a91a7c2__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 41)\n mstore(add(headStart, 64), \"ERC1155: setting approval status\")\n mstore(add(headStart, 96), \" for self\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_87fd4aee52f5758d127cd9704d5ffef70f36ed1e87eb99b6f40e37a25c79a76a__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 35)\n mstore(add(headStart, 64), \"ERC1155: burn from the zero addr\")\n mstore(add(headStart, 96), \"ess\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_294a5de01910e2350ff231c633ae2d453ed6b1b72c75506234b7aace63eae685__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 36)\n mstore(add(headStart, 64), \"ERC1155: burn amount exceeds bal\")\n mstore(add(headStart, 96), \"ance\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_address_t_address_t_uint256_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_uint256_t_bytes_memory_ptr__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n {\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n mstore(add(headStart, 64), value2)\n mstore(add(headStart, 96), value3)\n mstore(add(headStart, 128), 160)\n tail := abi_encode_string(value4, add(headStart, 160))\n }\n function abi_decode_tuple_t_bytes4_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := mload(headStart)\n validator_revert_bytes4(value)\n value0 := value\n }\n function return_data_selector() -> sig\n {\n if gt(returndatasize(), 3)\n {\n returndatacopy(0, 0, 4)\n sig := shr(224, mload(0))\n }\n }\n function try_decode_error_message() -> ret\n {\n if lt(returndatasize(), 0x44) { leave }\n let data := mload(64)\n let _1 := not(3)\n returndatacopy(data, 4, add(returndatasize(), _1))\n let offset := mload(data)\n let _2 := returndatasize()\n let _3 := 0xffffffffffffffff\n if or(gt(offset, _3), gt(add(offset, 0x24), _2)) { leave }\n let msg := add(data, offset)\n let length := mload(msg)\n if gt(length, _3) { leave }\n if gt(add(add(msg, length), 0x20), add(add(data, returndatasize()), _1)) { leave }\n finalize_allocation(data, add(add(offset, length), 0x20))\n ret := msg\n }\n function abi_encode_tuple_t_stringliteral_f591f7b75ffc499e05f8b34c3364b2eceff651378d9549db1d5d67c0d8255c5d__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 52)\n mstore(add(headStart, 64), \"ERC1155: transfer to non-ERC1155\")\n mstore(add(headStart, 96), \"Receiver implementer\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_0587cccad73a80a7f013db13c596f4febc1968dc77e1d3589d5e7a509a3d6503__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 40)\n mstore(add(headStart, 64), \"ERC1155: ERC1155Receiver rejecte\")\n mstore(add(headStart, 96), \"d tokens\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_address_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr_t_bytes_memory_ptr__to_t_address_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr_t_bytes_memory_ptr__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n {\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n mstore(add(headStart, 64), 160)\n let tail_1 := abi_encode_array_uint256_dyn(value2, add(headStart, 160))\n mstore(add(headStart, 96), sub(tail_1, headStart))\n let tail_2 := abi_encode_array_uint256_dyn(value3, tail_1)\n mstore(add(headStart, 128), sub(tail_2, headStart))\n tail := abi_encode_string(value4, tail_2)\n }\n}","id":92,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100bd5760003560e01c80634e1273f411610076578063e985e9c51161005b578063e985e9c514610186578063f242432a146101c2578063f5298aca146101d557600080fd5b80634e1273f414610153578063a22cb4651461017357600080fd5b80630e89341c116100a75780630e89341c1461010b578063156e29f61461012b5780632eb2c2d61461014057600080fd5b8062fdd58e146100c257806301ffc9a7146100e8575b600080fd5b6100d56100d03660046110b9565b6101e8565b6040519081526020015b60405180910390f35b6100fb6100f63660046110fc565b610294565b60405190151581526020016100df565b61011e610119366004611120565b6102e4565b6040516100df919061117f565b61013e610139366004611192565b610378565b005b61013e61014e366004611311565b610398565b6101666101613660046113bb565b61042b565b6040516100df91906114c1565b61013e6101813660046114d4565b610569565b6100fb610194366004611510565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205460ff1690565b61013e6101d0366004611543565b610578565b61013e6101e3366004611192565b610604565b60006001600160a01b03831661026b5760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201527f616c6964206f776e65720000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b506000818152602081815260408083206001600160a01b03861684529091529020545b92915050565b60006001600160e01b03198216636cdb3d1360e11b14806102c557506001600160e01b031982166303a24d0760e21b145b8061028e57506301ffc9a760e01b6001600160e01b031983161461028e565b6060600280546102f3906115a8565b80601f016020809104026020016040519081016040528092919081815260200182805461031f906115a8565b801561036c5780601f106103415761010080835404028352916020019161036c565b820191906000526020600020905b81548152906001019060200180831161034f57829003601f168201915b50505050509050919050565b6103938383836040518060200160405280600081525061060f565b505050565b6001600160a01b0385163314806103b457506103b48533610194565b6104175760405162461bcd60e51b815260206004820152602e60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201526d195c881bdc88185c1c1c9bdd995960921b6064820152608401610262565b6104248585858585610723565b5050505050565b606081518351146104a45760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e67746860448201527f206d69736d6174636800000000000000000000000000000000000000000000006064820152608401610262565b6000835167ffffffffffffffff8111156104c0576104c06111c5565b6040519080825280602002602001820160405280156104e9578160200160208202803683370190505b50905060005b84518110156105615761053485828151811061050d5761050d6115e2565b6020026020010151858381518110610527576105276115e2565b60200260200101516101e8565b828281518110610546576105466115e2565b602090810291909101015261055a8161160e565b90506104ef565b509392505050565b610574338383610996565b5050565b6001600160a01b03851633148061059457506105948533610194565b6105f75760405162461bcd60e51b815260206004820152602e60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201526d195c881bdc88185c1c1c9bdd995960921b6064820152608401610262565b6104248585858585610a8a565b610393838383610c35565b6001600160a01b03841661066f5760405162461bcd60e51b815260206004820152602160248201527f455243313135353a206d696e7420746f20746865207a65726f206164647265736044820152607360f81b6064820152608401610262565b33600061067b85610db1565b9050600061068885610db1565b90506000868152602081815260408083206001600160a01b038b168452909152812080548792906106ba908490611627565b909155505060408051878152602081018790526001600160a01b03808a1692600092918716917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a461071a83600089898989610dfc565b50505050505050565b815183511461079a5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060448201527f6d69736d617463680000000000000000000000000000000000000000000000006064820152608401610262565b6001600160a01b0384166107fe5760405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b6064820152608401610262565b3360005b845181101561092857600085828151811061081f5761081f6115e2565b60200260200101519050600085838151811061083d5761083d6115e2565b602090810291909101810151600084815280835260408082206001600160a01b038e1683529093529190912054909150818110156108d05760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201526939103a3930b739b332b960b11b6064820152608401610262565b6000838152602081815260408083206001600160a01b038e8116855292528083208585039055908b1682528120805484929061090d908490611627565b92505081905550505050806109219061160e565b9050610802565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb878760405161097892919061163a565b60405180910390a461098e818787878787610fa1565b505050505050565b816001600160a01b0316836001600160a01b031603610a1d5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c2073746174757360448201527f20666f722073656c6600000000000000000000000000000000000000000000006064820152608401610262565b6001600160a01b03838116600081815260016020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b038416610aee5760405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b6064820152608401610262565b336000610afa85610db1565b90506000610b0785610db1565b90506000868152602081815260408083206001600160a01b038c16845290915290205485811015610b8d5760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201526939103a3930b739b332b960b11b6064820152608401610262565b6000878152602081815260408083206001600160a01b038d8116855292528083208985039055908a16825281208054889290610bca908490611627565b909155505060408051888152602081018890526001600160a01b03808b16928c821692918816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4610c2a848a8a8a8a8a610dfc565b505050505050505050565b6001600160a01b038316610c975760405162461bcd60e51b815260206004820152602360248201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260448201526265737360e81b6064820152608401610262565b336000610ca384610db1565b90506000610cb084610db1565b60408051602080820183526000918290528882528181528282206001600160a01b038b1683529052205490915084811015610d395760405162461bcd60e51b8152602060048201526024808201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c604482015263616e636560e01b6064820152608401610262565b6000868152602081815260408083206001600160a01b038b81168086529184528285208a8703905582518b81529384018a90529092908816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a460408051602081019091526000905261071a565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110610deb57610deb6115e2565b602090810291909101015292915050565b6001600160a01b0384163b1561098e5760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e6190610e409089908990889088908890600401611668565b6020604051808303816000875af1925050508015610e7b575060408051601f3d908101601f19168201909252610e78918101906116ab565b60015b610f3057610e876116c8565b806308c379a003610ec05750610e9b6116e4565b80610ea65750610ec2565b8060405162461bcd60e51b8152600401610262919061117f565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e2d4552433131353560448201527f526563656976657220696d706c656d656e7465720000000000000000000000006064820152608401610262565b6001600160e01b0319811663f23a6e6160e01b1461071a5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a656374656044820152676420746f6b656e7360c01b6064820152608401610262565b6001600160a01b0384163b1561098e5760405163bc197c8160e01b81526001600160a01b0385169063bc197c8190610fe5908990899088908890889060040161176e565b6020604051808303816000875af1925050508015611020575060408051601f3d908101601f1916820190925261101d918101906116ab565b60015b61102c57610e876116c8565b6001600160e01b0319811663bc197c8160e01b1461071a5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a656374656044820152676420746f6b656e7360c01b6064820152608401610262565b80356001600160a01b03811681146110b457600080fd5b919050565b600080604083850312156110cc57600080fd5b6110d58361109d565b946020939093013593505050565b6001600160e01b0319811681146110f957600080fd5b50565b60006020828403121561110e57600080fd5b8135611119816110e3565b9392505050565b60006020828403121561113257600080fd5b5035919050565b6000815180845260005b8181101561115f57602081850181015186830182015201611143565b506000602082860101526020601f19601f83011685010191505092915050565b6020815260006111196020830184611139565b6000806000606084860312156111a757600080fd5b6111b08461109d565b95602085013595506040909401359392505050565b634e487b7160e01b600052604160045260246000fd5b601f8201601f1916810167ffffffffffffffff81118282101715611201576112016111c5565b6040525050565b600067ffffffffffffffff821115611222576112226111c5565b5060051b60200190565b600082601f83011261123d57600080fd5b8135602061124a82611208565b60405161125782826111db565b83815260059390931b850182019282810191508684111561127757600080fd5b8286015b84811015611292578035835291830191830161127b565b509695505050505050565b600082601f8301126112ae57600080fd5b813567ffffffffffffffff8111156112c8576112c86111c5565b6040516112df601f8301601f1916602001826111db565b8181528460208386010111156112f457600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a0868803121561132957600080fd5b6113328661109d565b94506113406020870161109d565b9350604086013567ffffffffffffffff8082111561135d57600080fd5b61136989838a0161122c565b9450606088013591508082111561137f57600080fd5b61138b89838a0161122c565b935060808801359150808211156113a157600080fd5b506113ae8882890161129d565b9150509295509295909350565b600080604083850312156113ce57600080fd5b823567ffffffffffffffff808211156113e657600080fd5b818501915085601f8301126113fa57600080fd5b8135602061140782611208565b60405161141482826111db565b83815260059390931b850182019282810191508984111561143457600080fd5b948201945b838610156114595761144a8661109d565b82529482019490820190611439565b9650508601359250508082111561146f57600080fd5b5061147c8582860161122c565b9150509250929050565b600081518084526020808501945080840160005b838110156114b65781518752958201959082019060010161149a565b509495945050505050565b6020815260006111196020830184611486565b600080604083850312156114e757600080fd5b6114f08361109d565b91506020830135801515811461150557600080fd5b809150509250929050565b6000806040838503121561152357600080fd5b61152c8361109d565b915061153a6020840161109d565b90509250929050565b600080600080600060a0868803121561155b57600080fd5b6115648661109d565b94506115726020870161109d565b93506040860135925060608601359150608086013567ffffffffffffffff81111561159c57600080fd5b6113ae8882890161129d565b600181811c908216806115bc57607f821691505b6020821081036115dc57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201611620576116206115f8565b5060010190565b8082018082111561028e5761028e6115f8565b60408152600061164d6040830185611486565b828103602084015261165f8185611486565b95945050505050565b60006001600160a01b03808816835280871660208401525084604083015283606083015260a060808301526116a060a0830184611139565b979650505050505050565b6000602082840312156116bd57600080fd5b8151611119816110e3565b600060033d11156116e15760046000803e5060005160e01c5b90565b600060443d10156116f25790565b6040516003193d81016004833e81513d67ffffffffffffffff816024840111818411171561172257505050505090565b828501915081518181111561173a5750505050505090565b843d87010160208285010111156117545750505050505090565b611763602082860101876111db565b509095945050505050565b60006001600160a01b03808816835280871660208401525060a0604083015261179a60a0830186611486565b82810360608401526117ac8186611486565b905082810360808401526117c08185611139565b9897505050505050505056fea164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xBD JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x4E1273F4 GT PUSH2 0x76 JUMPI DUP1 PUSH4 0xE985E9C5 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x186 JUMPI DUP1 PUSH4 0xF242432A EQ PUSH2 0x1C2 JUMPI DUP1 PUSH4 0xF5298ACA EQ PUSH2 0x1D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x4E1273F4 EQ PUSH2 0x153 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x173 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xE89341C GT PUSH2 0xA7 JUMPI DUP1 PUSH4 0xE89341C EQ PUSH2 0x10B JUMPI DUP1 PUSH4 0x156E29F6 EQ PUSH2 0x12B JUMPI DUP1 PUSH4 0x2EB2C2D6 EQ PUSH2 0x140 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH3 0xFDD58E EQ PUSH2 0xC2 JUMPI DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xE8 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD5 PUSH2 0xD0 CALLDATASIZE PUSH1 0x4 PUSH2 0x10B9 JUMP JUMPDEST PUSH2 0x1E8 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xFB PUSH2 0xF6 CALLDATASIZE PUSH1 0x4 PUSH2 0x10FC JUMP JUMPDEST PUSH2 0x294 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xDF JUMP JUMPDEST PUSH2 0x11E PUSH2 0x119 CALLDATASIZE PUSH1 0x4 PUSH2 0x1120 JUMP JUMPDEST PUSH2 0x2E4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xDF SWAP2 SWAP1 PUSH2 0x117F JUMP JUMPDEST PUSH2 0x13E PUSH2 0x139 CALLDATASIZE PUSH1 0x4 PUSH2 0x1192 JUMP JUMPDEST PUSH2 0x378 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x13E PUSH2 0x14E CALLDATASIZE PUSH1 0x4 PUSH2 0x1311 JUMP JUMPDEST PUSH2 0x398 JUMP JUMPDEST PUSH2 0x166 PUSH2 0x161 CALLDATASIZE PUSH1 0x4 PUSH2 0x13BB JUMP JUMPDEST PUSH2 0x42B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xDF SWAP2 SWAP1 PUSH2 0x14C1 JUMP JUMPDEST PUSH2 0x13E PUSH2 0x181 CALLDATASIZE PUSH1 0x4 PUSH2 0x14D4 JUMP JUMPDEST PUSH2 0x569 JUMP JUMPDEST PUSH2 0xFB PUSH2 0x194 CALLDATASIZE PUSH1 0x4 PUSH2 0x1510 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x13E PUSH2 0x1D0 CALLDATASIZE PUSH1 0x4 PUSH2 0x1543 JUMP JUMPDEST PUSH2 0x578 JUMP JUMPDEST PUSH2 0x13E PUSH2 0x1E3 CALLDATASIZE PUSH1 0x4 PUSH2 0x1192 JUMP JUMPDEST PUSH2 0x604 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x26B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A2061646472657373207A65726F206973206E6F7420612076 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x616C6964206F776E657200000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x6CDB3D13 PUSH1 0xE1 SHL EQ DUP1 PUSH2 0x2C5 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x3A24D07 PUSH1 0xE2 SHL EQ JUMPDEST DUP1 PUSH2 0x28E JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ PUSH2 0x28E JUMP JUMPDEST PUSH1 0x60 PUSH1 0x2 DUP1 SLOAD PUSH2 0x2F3 SWAP1 PUSH2 0x15A8 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x31F SWAP1 PUSH2 0x15A8 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x36C JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x341 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x36C JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x34F JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x393 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x60F JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND CALLER EQ DUP1 PUSH2 0x3B4 JUMPI POP PUSH2 0x3B4 DUP6 CALLER PUSH2 0x194 JUMP JUMPDEST PUSH2 0x417 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A2063616C6C6572206973206E6F7420746F6B656E206F776E PUSH1 0x44 DUP3 ADD MSTORE PUSH14 0x195C881BDC88185C1C1C9BDD9959 PUSH1 0x92 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x262 JUMP JUMPDEST PUSH2 0x424 DUP6 DUP6 DUP6 DUP6 DUP6 PUSH2 0x723 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 MLOAD DUP4 MLOAD EQ PUSH2 0x4A4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A206163636F756E747320616E6420696473206C656E677468 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x206D69736D617463680000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x262 JUMP JUMPDEST PUSH1 0x0 DUP4 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x4C0 JUMPI PUSH2 0x4C0 PUSH2 0x11C5 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x4E9 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x561 JUMPI PUSH2 0x534 DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x50D JUMPI PUSH2 0x50D PUSH2 0x15E2 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x527 JUMPI PUSH2 0x527 PUSH2 0x15E2 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x1E8 JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x546 JUMPI PUSH2 0x546 PUSH2 0x15E2 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH2 0x55A DUP2 PUSH2 0x160E JUMP JUMPDEST SWAP1 POP PUSH2 0x4EF JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x574 CALLER DUP4 DUP4 PUSH2 0x996 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND CALLER EQ DUP1 PUSH2 0x594 JUMPI POP PUSH2 0x594 DUP6 CALLER PUSH2 0x194 JUMP JUMPDEST PUSH2 0x5F7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A2063616C6C6572206973206E6F7420746F6B656E206F776E PUSH1 0x44 DUP3 ADD MSTORE PUSH14 0x195C881BDC88185C1C1C9BDD9959 PUSH1 0x92 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x262 JUMP JUMPDEST PUSH2 0x424 DUP6 DUP6 DUP6 DUP6 DUP6 PUSH2 0xA8A JUMP JUMPDEST PUSH2 0x393 DUP4 DUP4 DUP4 PUSH2 0xC35 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x66F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A206D696E7420746F20746865207A65726F20616464726573 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x73 PUSH1 0xF8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x262 JUMP JUMPDEST CALLER PUSH1 0x0 PUSH2 0x67B DUP6 PUSH2 0xDB1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x688 DUP6 PUSH2 0xDB1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 DUP1 SLOAD DUP8 SWAP3 SWAP1 PUSH2 0x6BA SWAP1 DUP5 SWAP1 PUSH2 0x1627 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x40 DUP1 MLOAD DUP8 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP11 AND SWAP3 PUSH1 0x0 SWAP3 SWAP2 DUP8 AND SWAP2 PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x71A DUP4 PUSH1 0x0 DUP10 DUP10 DUP10 DUP10 PUSH2 0xDFC JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST DUP2 MLOAD DUP4 MLOAD EQ PUSH2 0x79A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x28 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A2069647320616E6420616D6F756E7473206C656E67746820 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6D69736D61746368000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x262 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x7FE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A207472616E7366657220746F20746865207A65726F206164 PUSH1 0x44 DUP3 ADD MSTORE PUSH5 0x6472657373 PUSH1 0xD8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x262 JUMP JUMPDEST CALLER PUSH1 0x0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x928 JUMPI PUSH1 0x0 DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x81F JUMPI PUSH2 0x81F PUSH2 0x15E2 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x83D JUMPI PUSH2 0x83D PUSH2 0x15E2 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD PUSH1 0x0 DUP5 DUP2 MSTORE DUP1 DUP4 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP15 AND DUP4 MSTORE SWAP1 SWAP4 MSTORE SWAP2 SWAP1 SWAP2 KECCAK256 SLOAD SWAP1 SWAP2 POP DUP2 DUP2 LT ISZERO PUSH2 0x8D0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A20696E73756666696369656E742062616C616E636520666F PUSH1 0x44 DUP3 ADD MSTORE PUSH10 0x39103A3930B739B332B9 PUSH1 0xB1 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x262 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP15 DUP2 AND DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 DUP6 DUP6 SUB SWAP1 SSTORE SWAP1 DUP12 AND DUP3 MSTORE DUP2 KECCAK256 DUP1 SLOAD DUP5 SWAP3 SWAP1 PUSH2 0x90D SWAP1 DUP5 SWAP1 PUSH2 0x1627 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP POP POP POP DUP1 PUSH2 0x921 SWAP1 PUSH2 0x160E JUMP JUMPDEST SWAP1 POP PUSH2 0x802 JUMP JUMPDEST POP DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB DUP8 DUP8 PUSH1 0x40 MLOAD PUSH2 0x978 SWAP3 SWAP2 SWAP1 PUSH2 0x163A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x98E DUP2 DUP8 DUP8 DUP8 DUP8 DUP8 PUSH2 0xFA1 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0xA1D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A2073657474696E6720617070726F76616C20737461747573 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x20666F722073656C660000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x262 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND DUP7 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP2 MLOAD SWAP2 DUP3 MSTORE PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0xAEE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A207472616E7366657220746F20746865207A65726F206164 PUSH1 0x44 DUP3 ADD MSTORE PUSH5 0x6472657373 PUSH1 0xD8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x262 JUMP JUMPDEST CALLER PUSH1 0x0 PUSH2 0xAFA DUP6 PUSH2 0xDB1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xB07 DUP6 PUSH2 0xDB1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD DUP6 DUP2 LT ISZERO PUSH2 0xB8D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A20696E73756666696369656E742062616C616E636520666F PUSH1 0x44 DUP3 ADD MSTORE PUSH10 0x39103A3930B739B332B9 PUSH1 0xB1 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x262 JUMP JUMPDEST PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP14 DUP2 AND DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 DUP10 DUP6 SUB SWAP1 SSTORE SWAP1 DUP11 AND DUP3 MSTORE DUP2 KECCAK256 DUP1 SLOAD DUP9 SWAP3 SWAP1 PUSH2 0xBCA SWAP1 DUP5 SWAP1 PUSH2 0x1627 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x40 DUP1 MLOAD DUP9 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP9 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP12 AND SWAP3 DUP13 DUP3 AND SWAP3 SWAP2 DUP9 AND SWAP2 PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0xC2A DUP5 DUP11 DUP11 DUP11 DUP11 DUP11 PUSH2 0xDFC JUMP JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0xC97 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x23 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A206275726E2066726F6D20746865207A65726F2061646472 PUSH1 0x44 DUP3 ADD MSTORE PUSH3 0x657373 PUSH1 0xE8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x262 JUMP JUMPDEST CALLER PUSH1 0x0 PUSH2 0xCA3 DUP5 PUSH2 0xDB1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xCB0 DUP5 PUSH2 0xDB1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 ADD DUP4 MSTORE PUSH1 0x0 SWAP2 DUP3 SWAP1 MSTORE DUP9 DUP3 MSTORE DUP2 DUP2 MSTORE DUP3 DUP3 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND DUP4 MSTORE SWAP1 MSTORE KECCAK256 SLOAD SWAP1 SWAP2 POP DUP5 DUP2 LT ISZERO PUSH2 0xD39 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x455243313135353A206275726E20616D6F756E7420657863656564732062616C PUSH1 0x44 DUP3 ADD MSTORE PUSH4 0x616E6365 PUSH1 0xE0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x262 JUMP JUMPDEST PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 DUP2 AND DUP1 DUP7 MSTORE SWAP2 DUP5 MSTORE DUP3 DUP6 KECCAK256 DUP11 DUP8 SUB SWAP1 SSTORE DUP3 MLOAD DUP12 DUP2 MSTORE SWAP4 DUP5 ADD DUP11 SWAP1 MSTORE SWAP1 SWAP3 SWAP1 DUP9 AND SWAP2 PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 SWAP1 MSTORE PUSH2 0x71A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 PUSH1 0x0 SWAP2 SWAP1 PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP3 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xDEB JUMPI PUSH2 0xDEB PUSH2 0x15E2 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO PUSH2 0x98E JUMPI PUSH1 0x40 MLOAD PUSH4 0xF23A6E61 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0xF23A6E61 SWAP1 PUSH2 0xE40 SWAP1 DUP10 SWAP1 DUP10 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x1668 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0xE7B JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0xE78 SWAP2 DUP2 ADD SWAP1 PUSH2 0x16AB JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0xF30 JUMPI PUSH2 0xE87 PUSH2 0x16C8 JUMP JUMPDEST DUP1 PUSH4 0x8C379A0 SUB PUSH2 0xEC0 JUMPI POP PUSH2 0xE9B PUSH2 0x16E4 JUMP JUMPDEST DUP1 PUSH2 0xEA6 JUMPI POP PUSH2 0xEC2 JUMP JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x262 SWAP2 SWAP1 PUSH2 0x117F JUMP JUMPDEST POP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x34 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A207472616E7366657220746F206E6F6E2D45524331313535 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x526563656976657220696D706C656D656E746572000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x262 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH4 0xF23A6E61 PUSH1 0xE0 SHL EQ PUSH2 0x71A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x28 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A204552433131353552656365697665722072656A65637465 PUSH1 0x44 DUP3 ADD MSTORE PUSH8 0x6420746F6B656E73 PUSH1 0xC0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x262 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO PUSH2 0x98E JUMPI PUSH1 0x40 MLOAD PUSH4 0xBC197C81 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0xBC197C81 SWAP1 PUSH2 0xFE5 SWAP1 DUP10 SWAP1 DUP10 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x176E JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x1020 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x101D SWAP2 DUP2 ADD SWAP1 PUSH2 0x16AB JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x102C JUMPI PUSH2 0xE87 PUSH2 0x16C8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH4 0xBC197C81 PUSH1 0xE0 SHL EQ PUSH2 0x71A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x28 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A204552433131353552656365697665722072656A65637465 PUSH1 0x44 DUP3 ADD MSTORE PUSH8 0x6420746F6B656E73 PUSH1 0xC0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x262 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x10B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x10CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x10D5 DUP4 PUSH2 0x109D JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x10F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x110E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1119 DUP2 PUSH2 0x10E3 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1132 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x115F JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD DUP3 ADD MSTORE ADD PUSH2 0x1143 JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x20 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x20 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x1119 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x1139 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x11A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x11B0 DUP5 PUSH2 0x109D JUMP JUMPDEST SWAP6 PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP6 POP PUSH1 0x40 SWAP1 SWAP5 ADD CALLDATALOAD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x1201 JUMPI PUSH2 0x1201 PUSH2 0x11C5 JUMP JUMPDEST PUSH1 0x40 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x1222 JUMPI PUSH2 0x1222 PUSH2 0x11C5 JUMP JUMPDEST POP PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x123D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x20 PUSH2 0x124A DUP3 PUSH2 0x1208 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1257 DUP3 DUP3 PUSH2 0x11DB JUMP JUMPDEST DUP4 DUP2 MSTORE PUSH1 0x5 SWAP4 SWAP1 SWAP4 SHL DUP6 ADD DUP3 ADD SWAP3 DUP3 DUP2 ADD SWAP2 POP DUP7 DUP5 GT ISZERO PUSH2 0x1277 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 DUP7 ADD JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x1292 JUMPI DUP1 CALLDATALOAD DUP4 MSTORE SWAP2 DUP4 ADD SWAP2 DUP4 ADD PUSH2 0x127B JUMP JUMPDEST POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x12AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x12C8 JUMPI PUSH2 0x12C8 PUSH2 0x11C5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x12DF PUSH1 0x1F DUP4 ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 PUSH2 0x11DB JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 PUSH1 0x20 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0x12F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP6 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 SWAP2 DUP2 ADD PUSH1 0x20 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x1329 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1332 DUP7 PUSH2 0x109D JUMP JUMPDEST SWAP5 POP PUSH2 0x1340 PUSH1 0x20 DUP8 ADD PUSH2 0x109D JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x135D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1369 DUP10 DUP4 DUP11 ADD PUSH2 0x122C JUMP JUMPDEST SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x137F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x138B DUP10 DUP4 DUP11 ADD PUSH2 0x122C JUMP JUMPDEST SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x13A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x13AE DUP9 DUP3 DUP10 ADD PUSH2 0x129D JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x13CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x13E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x13FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x20 PUSH2 0x1407 DUP3 PUSH2 0x1208 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1414 DUP3 DUP3 PUSH2 0x11DB JUMP JUMPDEST DUP4 DUP2 MSTORE PUSH1 0x5 SWAP4 SWAP1 SWAP4 SHL DUP6 ADD DUP3 ADD SWAP3 DUP3 DUP2 ADD SWAP2 POP DUP10 DUP5 GT ISZERO PUSH2 0x1434 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP5 DUP3 ADD SWAP5 JUMPDEST DUP4 DUP7 LT ISZERO PUSH2 0x1459 JUMPI PUSH2 0x144A DUP7 PUSH2 0x109D JUMP JUMPDEST DUP3 MSTORE SWAP5 DUP3 ADD SWAP5 SWAP1 DUP3 ADD SWAP1 PUSH2 0x1439 JUMP JUMPDEST SWAP7 POP POP DUP7 ADD CALLDATALOAD SWAP3 POP POP DUP1 DUP3 GT ISZERO PUSH2 0x146F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x147C DUP6 DUP3 DUP7 ADD PUSH2 0x122C JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP1 DUP5 ADD PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x14B6 JUMPI DUP2 MLOAD DUP8 MSTORE SWAP6 DUP3 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x149A JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x1119 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x1486 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x14E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x14F0 DUP4 PUSH2 0x109D JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x1505 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1523 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x152C DUP4 PUSH2 0x109D JUMP JUMPDEST SWAP2 POP PUSH2 0x153A PUSH1 0x20 DUP5 ADD PUSH2 0x109D JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x155B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1564 DUP7 PUSH2 0x109D JUMP JUMPDEST SWAP5 POP PUSH2 0x1572 PUSH1 0x20 DUP8 ADD PUSH2 0x109D JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD SWAP2 POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x159C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x13AE DUP9 DUP3 DUP10 ADD PUSH2 0x129D JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x15BC JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x15DC JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 ADD PUSH2 0x1620 JUMPI PUSH2 0x1620 PUSH2 0x15F8 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x28E JUMPI PUSH2 0x28E PUSH2 0x15F8 JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 PUSH2 0x164D PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x1486 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x165F DUP2 DUP6 PUSH2 0x1486 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND DUP4 MSTORE DUP1 DUP8 AND PUSH1 0x20 DUP5 ADD MSTORE POP DUP5 PUSH1 0x40 DUP4 ADD MSTORE DUP4 PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0xA0 PUSH1 0x80 DUP4 ADD MSTORE PUSH2 0x16A0 PUSH1 0xA0 DUP4 ADD DUP5 PUSH2 0x1139 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x16BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x1119 DUP2 PUSH2 0x10E3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x3 RETURNDATASIZE GT ISZERO PUSH2 0x16E1 JUMPI PUSH1 0x4 PUSH1 0x0 DUP1 RETURNDATACOPY POP PUSH1 0x0 MLOAD PUSH1 0xE0 SHR JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x44 RETURNDATASIZE LT ISZERO PUSH2 0x16F2 JUMPI SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x3 NOT RETURNDATASIZE DUP2 ADD PUSH1 0x4 DUP4 RETURNDATACOPY DUP2 MLOAD RETURNDATASIZE PUSH8 0xFFFFFFFFFFFFFFFF DUP2 PUSH1 0x24 DUP5 ADD GT DUP2 DUP5 GT OR ISZERO PUSH2 0x1722 JUMPI POP POP POP POP POP SWAP1 JUMP JUMPDEST DUP3 DUP6 ADD SWAP2 POP DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x173A JUMPI POP POP POP POP POP POP SWAP1 JUMP JUMPDEST DUP5 RETURNDATASIZE DUP8 ADD ADD PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x1754 JUMPI POP POP POP POP POP POP SWAP1 JUMP JUMPDEST PUSH2 0x1763 PUSH1 0x20 DUP3 DUP7 ADD ADD DUP8 PUSH2 0x11DB JUMP JUMPDEST POP SWAP1 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND DUP4 MSTORE DUP1 DUP8 AND PUSH1 0x20 DUP5 ADD MSTORE POP PUSH1 0xA0 PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x179A PUSH1 0xA0 DUP4 ADD DUP7 PUSH2 0x1486 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x60 DUP5 ADD MSTORE PUSH2 0x17AC DUP2 DUP7 PUSH2 0x1486 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 SUB PUSH1 0x80 DUP5 ADD MSTORE PUSH2 0x17C0 DUP2 DUP6 PUSH2 0x1139 JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"303:349:58:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2185:227:22;;;;;;:::i;:::-;;:::i;:::-;;;620:25:92;;;608:2;593:18;2185:227:22;;;;;;;;1236:305;;;;;;:::i;:::-;;:::i;:::-;;;1207:14:92;;1200:22;1182:41;;1170:2;1155:18;1236:305:22;1042:187:92;1940:103:22;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;395:130:58:-;;;;;;:::i;:::-;;:::i;:::-;;4042:426:22;;;;;;:::i;:::-;;:::i;2569:486::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;3123:153::-;;;;;;:::i;:::-;;:::i;3343:166::-;;;;;;:::i;:::-;-1:-1:-1;;;;;3465:27:22;;;3442:4;3465:27;;;:18;:27;;;;;;;;:37;;;;;;;;;;;;;;;3343:166;3576:394;;;;;;:::i;:::-;;:::i;531:119:58:-;;;;;;:::i;:::-;;:::i;2185:227:22:-;2271:7;-1:-1:-1;;;;;2298:21:22;;2290:76;;;;-1:-1:-1;;;2290:76:22;;8559:2:92;2290:76:22;;;8541:21:92;8598:2;8578:18;;;8571:30;8637:34;8617:18;;;8610:62;8708:12;8688:18;;;8681:40;8738:19;;2290:76:22;;;;;;;;;-1:-1:-1;2383:9:22;:13;;;;;;;;;;;-1:-1:-1;;;;;2383:22:22;;;;;;;;;;2185:227;;;;;:::o;1236:305::-;1338:4;-1:-1:-1;;;;;;1373:41:22;;-1:-1:-1;;;1373:41:22;;:109;;-1:-1:-1;;;;;;;1430:52:22;;-1:-1:-1;;;1430:52:22;1373:109;:161;;;-1:-1:-1;;;;;;;;;;937:40:38;;;1498:36:22;829:155:38;1940:103:22;2000:13;2032:4;2025:11;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1940:103;;;:::o;395:130:58:-;476:42;482:7;491;500:6;508:9;;;;;;;;;;;;476:5;:42::i;:::-;395:130;;;:::o;4042:426:22:-;-1:-1:-1;;;;;4267:20:22;;734:10:34;4267:20:22;;:60;;-1:-1:-1;4291:36:22;4308:4;734:10:34;3343:166:22;:::i;4291:36::-;4246:153;;;;-1:-1:-1;;;4246:153:22;;9355:2:92;4246:153:22;;;9337:21:92;9394:2;9374:18;;;9367:30;9433:34;9413:18;;;9406:62;-1:-1:-1;;;9484:18:92;;;9477:44;9538:19;;4246:153:22;9153:410:92;4246:153:22;4409:52;4432:4;4438:2;4442:3;4447:7;4456:4;4409:22;:52::i;:::-;4042:426;;;;;:::o;2569:486::-;2702:16;2757:3;:10;2738:8;:15;:29;2730:83;;;;-1:-1:-1;;;2730:83:22;;9770:2:92;2730:83:22;;;9752:21:92;9809:2;9789:18;;;9782:30;9848:34;9828:18;;;9821:62;9919:11;9899:18;;;9892:39;9948:19;;2730:83:22;9568:405:92;2730:83:22;2824:30;2871:8;:15;2857:30;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2857:30:22;;2824:63;;2903:9;2898:120;2922:8;:15;2918:1;:19;2898:120;;;2977:30;2987:8;2996:1;2987:11;;;;;;;;:::i;:::-;;;;;;;3000:3;3004:1;3000:6;;;;;;;;:::i;:::-;;;;;;;2977:9;:30::i;:::-;2958:13;2972:1;2958:16;;;;;;;;:::i;:::-;;;;;;;;;;:49;2939:3;;;:::i;:::-;;;2898:120;;;-1:-1:-1;3035:13:22;2569:486;-1:-1:-1;;;2569:486:22:o;3123:153::-;3217:52;734:10:34;3250:8:22;3260;3217:18;:52::i;:::-;3123:153;;:::o;3576:394::-;-1:-1:-1;;;;;3776:20:22;;734:10:34;3776:20:22;;:60;;-1:-1:-1;3800:36:22;3817:4;734:10:34;3343:166:22;:::i;3800:36::-;3755:153;;;;-1:-1:-1;;;3755:153:22;;9355:2:92;3755:153:22;;;9337:21:92;9394:2;9374:18;;;9367:30;9433:34;9413:18;;;9406:62;-1:-1:-1;;;9484:18:92;;;9477:44;9538:19;;3755:153:22;9153:410:92;3755:153:22;3918:45;3936:4;3942:2;3946;3950:6;3958:4;3918:17;:45::i;531:119:58:-;612:31;618:7;627;636:6;612:5;:31::i;8608:671:22:-;-1:-1:-1;;;;;8717:16:22;;8709:62;;;;-1:-1:-1;;;8709:62:22;;10584:2:92;8709:62:22;;;10566:21:92;10623:2;10603:18;;;10596:30;10662:34;10642:18;;;10635:62;-1:-1:-1;;;10713:18:92;;;10706:31;10754:19;;8709:62:22;10382:397:92;8709:62:22;734:10:34;8782:16:22;8846:21;8864:2;8846:17;:21::i;:::-;8823:44;;8877:24;8904:25;8922:6;8904:17;:25::i;:::-;8877:52;;9017:9;:13;;;;;;;;;;;-1:-1:-1;;;;;9017:17:22;;;;;;;;;:27;;9038:6;;9017:9;:27;;9038:6;;9017:27;:::i;:::-;;;;-1:-1:-1;;9059:52:22;;;11088:25:92;;;11144:2;11129:18;;11122:34;;;-1:-1:-1;;;;;9059:52:22;;;;9092:1;;9059:52;;;;;;11061:18:92;9059:52:22;;;;;;;9198:74;9229:8;9247:1;9251:2;9255;9259:6;9267:4;9198:30;:74::i;:::-;8699:580;;;8608:671;;;;:::o;6211:1115::-;6431:7;:14;6417:3;:10;:28;6409:81;;;;-1:-1:-1;;;6409:81:22;;11369:2:92;6409:81:22;;;11351:21:92;11408:2;11388:18;;;11381:30;11447:34;11427:18;;;11420:62;11518:10;11498:18;;;11491:38;11546:19;;6409:81:22;11167:404:92;6409:81:22;-1:-1:-1;;;;;6508:16:22;;6500:66;;;;-1:-1:-1;;;6500:66:22;;11778:2:92;6500:66:22;;;11760:21:92;11817:2;11797:18;;;11790:30;11856:34;11836:18;;;11829:62;-1:-1:-1;;;11907:18:92;;;11900:35;11952:19;;6500:66:22;11576:401:92;6500:66:22;734:10:34;6577:16:22;6690:411;6714:3;:10;6710:1;:14;6690:411;;;6745:10;6758:3;6762:1;6758:6;;;;;;;;:::i;:::-;;;;;;;6745:19;;6778:14;6795:7;6803:1;6795:10;;;;;;;;:::i;:::-;;;;;;;;;;;;6820:19;6842:13;;;;;;;;;;-1:-1:-1;;;;;6842:19:22;;;;;;;;;;;;6795:10;;-1:-1:-1;6883:21:22;;;;6875:76;;;;-1:-1:-1;;;6875:76:22;;12184:2:92;6875:76:22;;;12166:21:92;12223:2;12203:18;;;12196:30;12262:34;12242:18;;;12235:62;-1:-1:-1;;;12313:18:92;;;12306:40;12363:19;;6875:76:22;11982:406:92;6875:76:22;6993:9;:13;;;;;;;;;;;-1:-1:-1;;;;;6993:19:22;;;;;;;;;;7015:20;;;6993:42;;7063:17;;;;;;;:27;;7015:20;;6993:9;7063:27;;7015:20;;7063:27;:::i;:::-;;;;;;;;6731:370;;;6726:3;;;;:::i;:::-;;;6690:411;;;;7146:2;-1:-1:-1;;;;;7116:47:22;7140:4;-1:-1:-1;;;;;7116:47:22;7130:8;-1:-1:-1;;;;;7116:47:22;;7150:3;7155:7;7116:47;;;;;;;:::i;:::-;;;;;;;;7244:75;7280:8;7290:4;7296:2;7300:3;7305:7;7314:4;7244:35;:75::i;:::-;6399:927;6211:1115;;;;;:::o;12790:293::-;12910:8;-1:-1:-1;;;;;12901:17:22;:5;-1:-1:-1;;;;;12901:17:22;;12893:71;;;;-1:-1:-1;;;12893:71:22;;13065:2:92;12893:71:22;;;13047:21:92;13104:2;13084:18;;;13077:30;13143:34;13123:18;;;13116:62;13214:11;13194:18;;;13187:39;13243:19;;12893:71:22;12863:405:92;12893:71:22;-1:-1:-1;;;;;12974:25:22;;;;;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;:46;;-1:-1:-1;;12974:46:22;;;;;;;;;;13035:41;;1182::92;;;13035::22;;1155:18:92;13035:41:22;;;;;;;12790:293;;;:::o;4918:947::-;-1:-1:-1;;;;;5099:16:22;;5091:66;;;;-1:-1:-1;;;5091:66:22;;11778:2:92;5091:66:22;;;11760:21:92;11817:2;11797:18;;;11790:30;11856:34;11836:18;;;11829:62;-1:-1:-1;;;11907:18:92;;;11900:35;11952:19;;5091:66:22;11576:401:92;5091:66:22;734:10:34;5168:16:22;5232:21;5250:2;5232:17;:21::i;:::-;5209:44;;5263:24;5290:25;5308:6;5290:17;:25::i;:::-;5263:52;;5397:19;5419:13;;;;;;;;;;;-1:-1:-1;;;;;5419:19:22;;;;;;;;;;5456:21;;;;5448:76;;;;-1:-1:-1;;;5448:76:22;;12184:2:92;5448:76:22;;;12166:21:92;12223:2;12203:18;;;12196:30;12262:34;12242:18;;;12235:62;-1:-1:-1;;;12313:18:92;;;12306:40;12363:19;;5448:76:22;11982:406:92;5448:76:22;5558:9;:13;;;;;;;;;;;-1:-1:-1;;;;;5558:19:22;;;;;;;;;;5580:20;;;5558:42;;5620:17;;;;;;;:27;;5580:20;;5558:9;5620:27;;5580:20;;5620:27;:::i;:::-;;;;-1:-1:-1;;5663:46:22;;;11088:25:92;;;11144:2;11129:18;;11122:34;;;-1:-1:-1;;;;;5663:46:22;;;;;;;;;;;;;;11061:18:92;5663:46:22;;;;;;;5790:68;5821:8;5831:4;5837:2;5841;5845:6;5853:4;5790:30;:68::i;:::-;5081:784;;;;4918:947;;;;;:::o;10746:756::-;-1:-1:-1;;;;;10838:18:22;;10830:66;;;;-1:-1:-1;;;10830:66:22;;13475:2:92;10830:66:22;;;13457:21:92;13514:2;13494:18;;;13487:30;13553:34;13533:18;;;13526:62;-1:-1:-1;;;13604:18:92;;;13597:33;13647:19;;10830:66:22;13273:399:92;10830:66:22;734:10:34;10907:16:22;10971:21;10989:2;10971:17;:21::i;:::-;10948:44;;11002:24;11029:25;11047:6;11029:17;:25::i;:::-;11065:66;;;;;;;;;-1:-1:-1;11065:66:22;;;;11164:13;;;;;;;;;-1:-1:-1;;;;;11164:19:22;;;;;;;;11002:52;;-1:-1:-1;11201:21:22;;;;11193:70;;;;-1:-1:-1;;;11193:70:22;;13879:2:92;11193:70:22;;;13861:21:92;13918:2;13898:18;;;13891:30;13957:34;13937:18;;;13930:62;-1:-1:-1;;;14008:18:92;;;14001:34;14052:19;;11193:70:22;13677:400:92;11193:70:22;11297:9;:13;;;;;;;;;;;-1:-1:-1;;;;;11297:19:22;;;;;;;;;;;;11319:20;;;11297:42;;11365:54;;11088:25:92;;;11129:18;;;11122:34;;;11297:19:22;;11365:54;;;;;;11061:18:92;11365:54:22;;;;;;;11430:65;;;;;;;;;11474:1;11430:65;;;6211:1115;16914:193;17033:16;;;17047:1;17033:16;;;;;;;;;16980;;17008:22;;17033:16;;;;;;;;;;;;-1:-1:-1;17033:16:22;17008:41;;17070:7;17059:5;17065:1;17059:8;;;;;;;;:::i;:::-;;;;;;;;;;:18;17095:5;16914:193;-1:-1:-1;;16914:193:22:o;15385:725::-;-1:-1:-1;;;;;15592:13:22;;1702:19:33;:23;15588:516:22;;15627:72;;-1:-1:-1;;;15627:72:22;;-1:-1:-1;;;;;15627:38:22;;;;;:72;;15666:8;;15676:4;;15682:2;;15686:6;;15694:4;;15627:72;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15627:72:22;;;;;;;;-1:-1:-1;;15627:72:22;;;;;;;;;;;;:::i;:::-;;;15623:471;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;15970:6;15963:14;;-1:-1:-1;;;15963:14:22;;;;;;;;:::i;15623:471::-;;;16017:62;;-1:-1:-1;;;16017:62:22;;15987:2:92;16017:62:22;;;15969:21:92;16026:2;16006:18;;;15999:30;16065:34;16045:18;;;16038:62;16136:22;16116:18;;;16109:50;16176:19;;16017:62:22;15785:416:92;15623:471:22;-1:-1:-1;;;;;;15748:55:22;;-1:-1:-1;;;15748:55:22;15744:152;;15827:50;;-1:-1:-1;;;15827:50:22;;16408:2:92;15827:50:22;;;16390:21:92;16447:2;16427:18;;;16420:30;16486:34;16466:18;;;16459:62;-1:-1:-1;;;16537:18:92;;;16530:38;16585:19;;15827:50:22;16206:404:92;16116:792:22;-1:-1:-1;;;;;16348:13:22;;1702:19:33;:23;16344:558:22;;16383:79;;-1:-1:-1;;;16383:79:22;;-1:-1:-1;;;;;16383:43:22;;;;;:79;;16427:8;;16437:4;;16443:3;;16448:7;;16457:4;;16383:79;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16383:79:22;;;;;;;;-1:-1:-1;;16383:79:22;;;;;;;;;;;;:::i;:::-;;;16379:513;;;;:::i;:::-;-1:-1:-1;;;;;;16541:60:22;;-1:-1:-1;;;16541:60:22;16537:157;;16625:50;;-1:-1:-1;;;16625:50:22;;16408:2:92;16625:50:22;;;16390:21:92;16447:2;16427:18;;;16420:30;16486:34;16466:18;;;16459:62;-1:-1:-1;;;16537:18:92;;;16530:38;16585:19;;16625:50:22;16206:404:92;14:196;82:20;;-1:-1:-1;;;;;131:54:92;;121:65;;111:93;;200:1;197;190:12;111:93;14:196;;;:::o;215:254::-;283:6;291;344:2;332:9;323:7;319:23;315:32;312:52;;;360:1;357;350:12;312:52;383:29;402:9;383:29;:::i;:::-;373:39;459:2;444:18;;;;431:32;;-1:-1:-1;;;215:254:92:o;656:131::-;-1:-1:-1;;;;;;730:32:92;;720:43;;710:71;;777:1;774;767:12;710:71;656:131;:::o;792:245::-;850:6;903:2;891:9;882:7;878:23;874:32;871:52;;;919:1;916;909:12;871:52;958:9;945:23;977:30;1001:5;977:30;:::i;:::-;1026:5;792:245;-1:-1:-1;;;792:245:92:o;1234:180::-;1293:6;1346:2;1334:9;1325:7;1321:23;1317:32;1314:52;;;1362:1;1359;1352:12;1314:52;-1:-1:-1;1385:23:92;;1234:180;-1:-1:-1;1234:180:92:o;1419:423::-;1461:3;1499:5;1493:12;1526:6;1521:3;1514:19;1551:1;1561:162;1575:6;1572:1;1569:13;1561:162;;;1637:4;1693:13;;;1689:22;;1683:29;1665:11;;;1661:20;;1654:59;1590:12;1561:162;;;1565:3;1768:1;1761:4;1752:6;1747:3;1743:16;1739:27;1732:38;1831:4;1824:2;1820:7;1815:2;1807:6;1803:15;1799:29;1794:3;1790:39;1786:50;1779:57;;;1419:423;;;;:::o;1847:220::-;1996:2;1985:9;1978:21;1959:4;2016:45;2057:2;2046:9;2042:18;2034:6;2016:45;:::i;2072:322::-;2149:6;2157;2165;2218:2;2206:9;2197:7;2193:23;2189:32;2186:52;;;2234:1;2231;2224:12;2186:52;2257:29;2276:9;2257:29;:::i;:::-;2247:39;2333:2;2318:18;;2305:32;;-1:-1:-1;2384:2:92;2369:18;;;2356:32;;2072:322;-1:-1:-1;;;2072:322:92:o;2399:127::-;2460:10;2455:3;2451:20;2448:1;2441:31;2491:4;2488:1;2481:15;2515:4;2512:1;2505:15;2531:249;2641:2;2622:13;;-1:-1:-1;;2618:27:92;2606:40;;2676:18;2661:34;;2697:22;;;2658:62;2655:88;;;2723:18;;:::i;:::-;2759:2;2752:22;-1:-1:-1;;2531:249:92:o;2785:183::-;2845:4;2878:18;2870:6;2867:30;2864:56;;;2900:18;;:::i;:::-;-1:-1:-1;2945:1:92;2941:14;2957:4;2937:25;;2785:183::o;2973:724::-;3027:5;3080:3;3073:4;3065:6;3061:17;3057:27;3047:55;;3098:1;3095;3088:12;3047:55;3134:6;3121:20;3160:4;3183:43;3223:2;3183:43;:::i;:::-;3255:2;3249:9;3267:31;3295:2;3287:6;3267:31;:::i;:::-;3333:18;;;3425:1;3421:10;;;;3409:23;;3405:32;;;3367:15;;;;-1:-1:-1;3449:15:92;;;3446:35;;;3477:1;3474;3467:12;3446:35;3513:2;3505:6;3501:15;3525:142;3541:6;3536:3;3533:15;3525:142;;;3607:17;;3595:30;;3645:12;;;;3558;;3525:142;;;-1:-1:-1;3685:6:92;2973:724;-1:-1:-1;;;;;;2973:724:92:o;3702:555::-;3744:5;3797:3;3790:4;3782:6;3778:17;3774:27;3764:55;;3815:1;3812;3805:12;3764:55;3851:6;3838:20;3877:18;3873:2;3870:26;3867:52;;;3899:18;;:::i;:::-;3948:2;3942:9;3960:67;4015:2;3996:13;;-1:-1:-1;;3992:27:92;4021:4;3988:38;3942:9;3960:67;:::i;:::-;4051:2;4043:6;4036:18;4097:3;4090:4;4085:2;4077:6;4073:15;4069:26;4066:35;4063:55;;;4114:1;4111;4104:12;4063:55;4178:2;4171:4;4163:6;4159:17;4152:4;4144:6;4140:17;4127:54;4225:1;4201:15;;;4218:4;4197:26;4190:37;;;;4205:6;3702:555;-1:-1:-1;;;3702:555:92:o;4262:943::-;4416:6;4424;4432;4440;4448;4501:3;4489:9;4480:7;4476:23;4472:33;4469:53;;;4518:1;4515;4508:12;4469:53;4541:29;4560:9;4541:29;:::i;:::-;4531:39;;4589:38;4623:2;4612:9;4608:18;4589:38;:::i;:::-;4579:48;;4678:2;4667:9;4663:18;4650:32;4701:18;4742:2;4734:6;4731:14;4728:34;;;4758:1;4755;4748:12;4728:34;4781:61;4834:7;4825:6;4814:9;4810:22;4781:61;:::i;:::-;4771:71;;4895:2;4884:9;4880:18;4867:32;4851:48;;4924:2;4914:8;4911:16;4908:36;;;4940:1;4937;4930:12;4908:36;4963:63;5018:7;5007:8;4996:9;4992:24;4963:63;:::i;:::-;4953:73;;5079:3;5068:9;5064:19;5051:33;5035:49;;5109:2;5099:8;5096:16;5093:36;;;5125:1;5122;5115:12;5093:36;;5148:51;5191:7;5180:8;5169:9;5165:24;5148:51;:::i;:::-;5138:61;;;4262:943;;;;;;;;:::o;5210:1208::-;5328:6;5336;5389:2;5377:9;5368:7;5364:23;5360:32;5357:52;;;5405:1;5402;5395:12;5357:52;5445:9;5432:23;5474:18;5515:2;5507:6;5504:14;5501:34;;;5531:1;5528;5521:12;5501:34;5569:6;5558:9;5554:22;5544:32;;5614:7;5607:4;5603:2;5599:13;5595:27;5585:55;;5636:1;5633;5626:12;5585:55;5672:2;5659:16;5694:4;5717:43;5757:2;5717:43;:::i;:::-;5789:2;5783:9;5801:31;5829:2;5821:6;5801:31;:::i;:::-;5867:18;;;5955:1;5951:10;;;;5943:19;;5939:28;;;5901:15;;;;-1:-1:-1;5979:19:92;;;5976:39;;;6011:1;6008;6001:12;5976:39;6035:11;;;;6055:148;6071:6;6066:3;6063:15;6055:148;;;6137:23;6156:3;6137:23;:::i;:::-;6125:36;;6088:12;;;;6181;;;;6055:148;;;6222:6;-1:-1:-1;;6266:18:92;;6253:32;;-1:-1:-1;;6297:16:92;;;6294:36;;;6326:1;6323;6316:12;6294:36;;6349:63;6404:7;6393:8;6382:9;6378:24;6349:63;:::i;:::-;6339:73;;;5210:1208;;;;;:::o;6423:435::-;6476:3;6514:5;6508:12;6541:6;6536:3;6529:19;6567:4;6596:2;6591:3;6587:12;6580:19;;6633:2;6626:5;6622:14;6654:1;6664:169;6678:6;6675:1;6672:13;6664:169;;;6739:13;;6727:26;;6773:12;;;;6808:15;;;;6700:1;6693:9;6664:169;;;-1:-1:-1;6849:3:92;;6423:435;-1:-1:-1;;;;;6423:435:92:o;6863:261::-;7042:2;7031:9;7024:21;7005:4;7062:56;7114:2;7103:9;7099:18;7091:6;7062:56;:::i;7129:347::-;7194:6;7202;7255:2;7243:9;7234:7;7230:23;7226:32;7223:52;;;7271:1;7268;7261:12;7223:52;7294:29;7313:9;7294:29;:::i;:::-;7284:39;;7373:2;7362:9;7358:18;7345:32;7420:5;7413:13;7406:21;7399:5;7396:32;7386:60;;7442:1;7439;7432:12;7386:60;7465:5;7455:15;;;7129:347;;;;;:::o;7481:260::-;7549:6;7557;7610:2;7598:9;7589:7;7585:23;7581:32;7578:52;;;7626:1;7623;7616:12;7578:52;7649:29;7668:9;7649:29;:::i;:::-;7639:39;;7697:38;7731:2;7720:9;7716:18;7697:38;:::i;:::-;7687:48;;7481:260;;;;;:::o;7746:606::-;7850:6;7858;7866;7874;7882;7935:3;7923:9;7914:7;7910:23;7906:33;7903:53;;;7952:1;7949;7942:12;7903:53;7975:29;7994:9;7975:29;:::i;:::-;7965:39;;8023:38;8057:2;8046:9;8042:18;8023:38;:::i;:::-;8013:48;;8108:2;8097:9;8093:18;8080:32;8070:42;;8159:2;8148:9;8144:18;8131:32;8121:42;;8214:3;8203:9;8199:19;8186:33;8242:18;8234:6;8231:30;8228:50;;;8274:1;8271;8264:12;8228:50;8297:49;8338:7;8329:6;8318:9;8314:22;8297:49;:::i;8768:380::-;8847:1;8843:12;;;;8890;;;8911:61;;8965:4;8957:6;8953:17;8943:27;;8911:61;9018:2;9010:6;9007:14;8987:18;8984:38;8981:161;;9064:10;9059:3;9055:20;9052:1;9045:31;9099:4;9096:1;9089:15;9127:4;9124:1;9117:15;8981:161;;8768:380;;;:::o;9978:127::-;10039:10;10034:3;10030:20;10027:1;10020:31;10070:4;10067:1;10060:15;10094:4;10091:1;10084:15;10110:127;10171:10;10166:3;10162:20;10159:1;10152:31;10202:4;10199:1;10192:15;10226:4;10223:1;10216:15;10242:135;10281:3;10302:17;;;10299:43;;10322:18;;:::i;:::-;-1:-1:-1;10369:1:92;10358:13;;10242:135::o;10784:125::-;10849:9;;;10870:10;;;10867:36;;;10883:18;;:::i;12393:465::-;12650:2;12639:9;12632:21;12613:4;12676:56;12728:2;12717:9;12713:18;12705:6;12676:56;:::i;:::-;12780:9;12772:6;12768:22;12763:2;12752:9;12748:18;12741:50;12808:44;12845:6;12837;12808:44;:::i;:::-;12800:52;12393:465;-1:-1:-1;;;;;12393:465:92:o;14082:584::-;14304:4;-1:-1:-1;;;;;14414:2:92;14406:6;14402:15;14391:9;14384:34;14466:2;14458:6;14454:15;14449:2;14438:9;14434:18;14427:43;;14506:6;14501:2;14490:9;14486:18;14479:34;14549:6;14544:2;14533:9;14529:18;14522:34;14593:3;14587;14576:9;14572:19;14565:32;14614:46;14655:3;14644:9;14640:19;14632:6;14614:46;:::i;:::-;14606:54;14082:584;-1:-1:-1;;;;;;;14082:584:92:o;14671:249::-;14740:6;14793:2;14781:9;14772:7;14768:23;14764:32;14761:52;;;14809:1;14806;14799:12;14761:52;14841:9;14835:16;14860:30;14884:5;14860:30;:::i;14925:179::-;14960:3;15002:1;14984:16;14981:23;14978:120;;;15048:1;15045;15042;15027:23;-1:-1:-1;15085:1:92;15079:8;15074:3;15070:18;14978:120;14925:179;:::o;15109:671::-;15148:3;15190:4;15172:16;15169:26;15166:39;;;15109:671;:::o;15166:39::-;15232:2;15226:9;-1:-1:-1;;15297:16:92;15293:25;;15290:1;15226:9;15269:50;15348:4;15342:11;15372:16;15407:18;15478:2;15471:4;15463:6;15459:17;15456:25;15451:2;15443:6;15440:14;15437:45;15434:58;;;15485:5;;;;;15109:671;:::o;15434:58::-;15522:6;15516:4;15512:17;15501:28;;15558:3;15552:10;15585:2;15577:6;15574:14;15571:27;;;15591:5;;;;;;15109:671;:::o;15571:27::-;15675:2;15656:16;15650:4;15646:27;15642:36;15635:4;15626:6;15621:3;15617:16;15613:27;15610:69;15607:82;;;15682:5;;;;;;15109:671;:::o;15607:82::-;15698:57;15749:4;15740:6;15732;15728:19;15724:30;15718:4;15698:57;:::i;:::-;-1:-1:-1;15771:3:92;;15109:671;-1:-1:-1;;;;;15109:671:92:o;16615:850::-;16937:4;-1:-1:-1;;;;;17047:2:92;17039:6;17035:15;17024:9;17017:34;17099:2;17091:6;17087:15;17082:2;17071:9;17067:18;17060:43;;17139:3;17134:2;17123:9;17119:18;17112:31;17166:57;17218:3;17207:9;17203:19;17195:6;17166:57;:::i;:::-;17271:9;17263:6;17259:22;17254:2;17243:9;17239:18;17232:50;17305:44;17342:6;17334;17305:44;:::i;:::-;17291:58;;17398:9;17390:6;17386:22;17380:3;17369:9;17365:19;17358:51;17426:33;17452:6;17444;17426:33;:::i;:::-;17418:41;16615:850;-1:-1:-1;;;;;;;;16615:850:92:o"},"gasEstimates":{"creation":{"codeDepositCost":"1221000","executionCost":"infinite","totalCost":"infinite"},"external":{"balanceOf(address,uint256)":"2700","balanceOfBatch(address[],uint256[])":"infinite","burn(address,uint256,uint256)":"infinite","isApprovedForAll(address,address)":"infinite","mint(address,uint256,uint256)":"infinite","safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)":"infinite","safeTransferFrom(address,address,uint256,uint256,bytes)":"infinite","setApprovalForAll(address,bool)":"26728","supportsInterface(bytes4)":"578","uri(uint256)":"infinite"}},"methodIdentifiers":{"balanceOf(address,uint256)":"00fdd58e","balanceOfBatch(address[],uint256[])":"4e1273f4","burn(address,uint256,uint256)":"f5298aca","isApprovedForAll(address,address)":"e985e9c5","mint(address,uint256,uint256)":"156e29f6","safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)":"2eb2c2d6","safeTransferFrom(address,address,uint256,uint256,bytes)":"f242432a","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","uri(uint256)":"0e89341c"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_uri\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"}],\"name\":\"TransferBatch\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"TransferSingle\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"URI\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"accounts\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"}],\"name\":\"balanceOfBatch\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeBatchTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"uri\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"DO NOT USE IN PRODUCTION!\",\"kind\":\"dev\",\"methods\":{\"balanceOf(address,uint256)\":{\"details\":\"See {IERC1155-balanceOf}. Requirements: - `account` cannot be the zero address.\"},\"balanceOfBatch(address[],uint256[])\":{\"details\":\"See {IERC1155-balanceOfBatch}. Requirements: - `accounts` and `ids` must have the same length.\"},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC1155-isApprovedForAll}.\"},\"safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)\":{\"details\":\"See {IERC1155-safeBatchTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,uint256,bytes)\":{\"details\":\"See {IERC1155-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC1155-setApprovalForAll}.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"uri(uint256)\":{\"details\":\"See {IERC1155MetadataURI-uri}. This implementation returns the same URI for *all* token types. It relies on the token type ID substitution mechanism https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP]. Clients calling this function must replace the `\\\\{id\\\\}` substring with the actual token type ID.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"A mock [ERC-1155](https://eips.ethereum.org/EIPS/eip-1155) token that can be minted and burned by everyone.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/mocks/token/ERC1155Mock.sol\":\"ERC1155Mock\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC1155/ERC1155.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC1155/ERC1155.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC1155.sol\\\";\\nimport \\\"./IERC1155Receiver.sol\\\";\\nimport \\\"./extensions/IERC1155MetadataURI.sol\\\";\\nimport \\\"../../utils/Address.sol\\\";\\nimport \\\"../../utils/Context.sol\\\";\\nimport \\\"../../utils/introspection/ERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the basic standard multi-token.\\n * See https://eips.ethereum.org/EIPS/eip-1155\\n * Originally based on code by Enjin: https://github.com/enjin/erc-1155\\n *\\n * _Available since v3.1._\\n */\\ncontract ERC1155 is Context, ERC165, IERC1155, IERC1155MetadataURI {\\n using Address for address;\\n\\n // Mapping from token ID to account balances\\n mapping(uint256 => mapping(address => uint256)) private _balances;\\n\\n // Mapping from account to operator approvals\\n mapping(address => mapping(address => bool)) private _operatorApprovals;\\n\\n // Used as the URI for all token types by relying on ID substitution, e.g. https://token-cdn-domain/{id}.json\\n string private _uri;\\n\\n /**\\n * @dev See {_setURI}.\\n */\\n constructor(string memory uri_) {\\n _setURI(uri_);\\n }\\n\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) {\\n return\\n interfaceId == type(IERC1155).interfaceId ||\\n interfaceId == type(IERC1155MetadataURI).interfaceId ||\\n super.supportsInterface(interfaceId);\\n }\\n\\n /**\\n * @dev See {IERC1155MetadataURI-uri}.\\n *\\n * This implementation returns the same URI for *all* token types. It relies\\n * on the token type ID substitution mechanism\\n * https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP].\\n *\\n * Clients calling this function must replace the `\\\\{id\\\\}` substring with the\\n * actual token type ID.\\n */\\n function uri(uint256) public view virtual override returns (string memory) {\\n return _uri;\\n }\\n\\n /**\\n * @dev See {IERC1155-balanceOf}.\\n *\\n * Requirements:\\n *\\n * - `account` cannot be the zero address.\\n */\\n function balanceOf(address account, uint256 id) public view virtual override returns (uint256) {\\n require(account != address(0), \\\"ERC1155: address zero is not a valid owner\\\");\\n return _balances[id][account];\\n }\\n\\n /**\\n * @dev See {IERC1155-balanceOfBatch}.\\n *\\n * Requirements:\\n *\\n * - `accounts` and `ids` must have the same length.\\n */\\n function balanceOfBatch(\\n address[] memory accounts,\\n uint256[] memory ids\\n ) public view virtual override returns (uint256[] memory) {\\n require(accounts.length == ids.length, \\\"ERC1155: accounts and ids length mismatch\\\");\\n\\n uint256[] memory batchBalances = new uint256[](accounts.length);\\n\\n for (uint256 i = 0; i < accounts.length; ++i) {\\n batchBalances[i] = balanceOf(accounts[i], ids[i]);\\n }\\n\\n return batchBalances;\\n }\\n\\n /**\\n * @dev See {IERC1155-setApprovalForAll}.\\n */\\n function setApprovalForAll(address operator, bool approved) public virtual override {\\n _setApprovalForAll(_msgSender(), operator, approved);\\n }\\n\\n /**\\n * @dev See {IERC1155-isApprovedForAll}.\\n */\\n function isApprovedForAll(address account, address operator) public view virtual override returns (bool) {\\n return _operatorApprovals[account][operator];\\n }\\n\\n /**\\n * @dev See {IERC1155-safeTransferFrom}.\\n */\\n function safeTransferFrom(\\n address from,\\n address to,\\n uint256 id,\\n uint256 amount,\\n bytes memory data\\n ) public virtual override {\\n require(\\n from == _msgSender() || isApprovedForAll(from, _msgSender()),\\n \\\"ERC1155: caller is not token owner or approved\\\"\\n );\\n _safeTransferFrom(from, to, id, amount, data);\\n }\\n\\n /**\\n * @dev See {IERC1155-safeBatchTransferFrom}.\\n */\\n function safeBatchTransferFrom(\\n address from,\\n address to,\\n uint256[] memory ids,\\n uint256[] memory amounts,\\n bytes memory data\\n ) public virtual override {\\n require(\\n from == _msgSender() || isApprovedForAll(from, _msgSender()),\\n \\\"ERC1155: caller is not token owner or approved\\\"\\n );\\n _safeBatchTransferFrom(from, to, ids, amounts, data);\\n }\\n\\n /**\\n * @dev Transfers `amount` tokens of token type `id` from `from` to `to`.\\n *\\n * Emits a {TransferSingle} event.\\n *\\n * Requirements:\\n *\\n * - `to` cannot be the zero address.\\n * - `from` must have a balance of tokens of type `id` of at least `amount`.\\n * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the\\n * acceptance magic value.\\n */\\n function _safeTransferFrom(\\n address from,\\n address to,\\n uint256 id,\\n uint256 amount,\\n bytes memory data\\n ) internal virtual {\\n require(to != address(0), \\\"ERC1155: transfer to the zero address\\\");\\n\\n address operator = _msgSender();\\n uint256[] memory ids = _asSingletonArray(id);\\n uint256[] memory amounts = _asSingletonArray(amount);\\n\\n _beforeTokenTransfer(operator, from, to, ids, amounts, data);\\n\\n uint256 fromBalance = _balances[id][from];\\n require(fromBalance >= amount, \\\"ERC1155: insufficient balance for transfer\\\");\\n unchecked {\\n _balances[id][from] = fromBalance - amount;\\n }\\n _balances[id][to] += amount;\\n\\n emit TransferSingle(operator, from, to, id, amount);\\n\\n _afterTokenTransfer(operator, from, to, ids, amounts, data);\\n\\n _doSafeTransferAcceptanceCheck(operator, from, to, id, amount, data);\\n }\\n\\n /**\\n * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_safeTransferFrom}.\\n *\\n * Emits a {TransferBatch} event.\\n *\\n * Requirements:\\n *\\n * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the\\n * acceptance magic value.\\n */\\n function _safeBatchTransferFrom(\\n address from,\\n address to,\\n uint256[] memory ids,\\n uint256[] memory amounts,\\n bytes memory data\\n ) internal virtual {\\n require(ids.length == amounts.length, \\\"ERC1155: ids and amounts length mismatch\\\");\\n require(to != address(0), \\\"ERC1155: transfer to the zero address\\\");\\n\\n address operator = _msgSender();\\n\\n _beforeTokenTransfer(operator, from, to, ids, amounts, data);\\n\\n for (uint256 i = 0; i < ids.length; ++i) {\\n uint256 id = ids[i];\\n uint256 amount = amounts[i];\\n\\n uint256 fromBalance = _balances[id][from];\\n require(fromBalance >= amount, \\\"ERC1155: insufficient balance for transfer\\\");\\n unchecked {\\n _balances[id][from] = fromBalance - amount;\\n }\\n _balances[id][to] += amount;\\n }\\n\\n emit TransferBatch(operator, from, to, ids, amounts);\\n\\n _afterTokenTransfer(operator, from, to, ids, amounts, data);\\n\\n _doSafeBatchTransferAcceptanceCheck(operator, from, to, ids, amounts, data);\\n }\\n\\n /**\\n * @dev Sets a new URI for all token types, by relying on the token type ID\\n * substitution mechanism\\n * https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP].\\n *\\n * By this mechanism, any occurrence of the `\\\\{id\\\\}` substring in either the\\n * URI or any of the amounts in the JSON file at said URI will be replaced by\\n * clients with the token type ID.\\n *\\n * For example, the `https://token-cdn-domain/\\\\{id\\\\}.json` URI would be\\n * interpreted by clients as\\n * `https://token-cdn-domain/000000000000000000000000000000000000000000000000000000000004cce0.json`\\n * for token type ID 0x4cce0.\\n *\\n * See {uri}.\\n *\\n * Because these URIs cannot be meaningfully represented by the {URI} event,\\n * this function emits no events.\\n */\\n function _setURI(string memory newuri) internal virtual {\\n _uri = newuri;\\n }\\n\\n /**\\n * @dev Creates `amount` tokens of token type `id`, and assigns them to `to`.\\n *\\n * Emits a {TransferSingle} event.\\n *\\n * Requirements:\\n *\\n * - `to` cannot be the zero address.\\n * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the\\n * acceptance magic value.\\n */\\n function _mint(address to, uint256 id, uint256 amount, bytes memory data) internal virtual {\\n require(to != address(0), \\\"ERC1155: mint to the zero address\\\");\\n\\n address operator = _msgSender();\\n uint256[] memory ids = _asSingletonArray(id);\\n uint256[] memory amounts = _asSingletonArray(amount);\\n\\n _beforeTokenTransfer(operator, address(0), to, ids, amounts, data);\\n\\n _balances[id][to] += amount;\\n emit TransferSingle(operator, address(0), to, id, amount);\\n\\n _afterTokenTransfer(operator, address(0), to, ids, amounts, data);\\n\\n _doSafeTransferAcceptanceCheck(operator, address(0), to, id, amount, data);\\n }\\n\\n /**\\n * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_mint}.\\n *\\n * Emits a {TransferBatch} event.\\n *\\n * Requirements:\\n *\\n * - `ids` and `amounts` must have the same length.\\n * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the\\n * acceptance magic value.\\n */\\n function _mintBatch(\\n address to,\\n uint256[] memory ids,\\n uint256[] memory amounts,\\n bytes memory data\\n ) internal virtual {\\n require(to != address(0), \\\"ERC1155: mint to the zero address\\\");\\n require(ids.length == amounts.length, \\\"ERC1155: ids and amounts length mismatch\\\");\\n\\n address operator = _msgSender();\\n\\n _beforeTokenTransfer(operator, address(0), to, ids, amounts, data);\\n\\n for (uint256 i = 0; i < ids.length; i++) {\\n _balances[ids[i]][to] += amounts[i];\\n }\\n\\n emit TransferBatch(operator, address(0), to, ids, amounts);\\n\\n _afterTokenTransfer(operator, address(0), to, ids, amounts, data);\\n\\n _doSafeBatchTransferAcceptanceCheck(operator, address(0), to, ids, amounts, data);\\n }\\n\\n /**\\n * @dev Destroys `amount` tokens of token type `id` from `from`\\n *\\n * Emits a {TransferSingle} event.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `from` must have at least `amount` tokens of token type `id`.\\n */\\n function _burn(address from, uint256 id, uint256 amount) internal virtual {\\n require(from != address(0), \\\"ERC1155: burn from the zero address\\\");\\n\\n address operator = _msgSender();\\n uint256[] memory ids = _asSingletonArray(id);\\n uint256[] memory amounts = _asSingletonArray(amount);\\n\\n _beforeTokenTransfer(operator, from, address(0), ids, amounts, \\\"\\\");\\n\\n uint256 fromBalance = _balances[id][from];\\n require(fromBalance >= amount, \\\"ERC1155: burn amount exceeds balance\\\");\\n unchecked {\\n _balances[id][from] = fromBalance - amount;\\n }\\n\\n emit TransferSingle(operator, from, address(0), id, amount);\\n\\n _afterTokenTransfer(operator, from, address(0), ids, amounts, \\\"\\\");\\n }\\n\\n /**\\n * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_burn}.\\n *\\n * Emits a {TransferBatch} event.\\n *\\n * Requirements:\\n *\\n * - `ids` and `amounts` must have the same length.\\n */\\n function _burnBatch(address from, uint256[] memory ids, uint256[] memory amounts) internal virtual {\\n require(from != address(0), \\\"ERC1155: burn from the zero address\\\");\\n require(ids.length == amounts.length, \\\"ERC1155: ids and amounts length mismatch\\\");\\n\\n address operator = _msgSender();\\n\\n _beforeTokenTransfer(operator, from, address(0), ids, amounts, \\\"\\\");\\n\\n for (uint256 i = 0; i < ids.length; i++) {\\n uint256 id = ids[i];\\n uint256 amount = amounts[i];\\n\\n uint256 fromBalance = _balances[id][from];\\n require(fromBalance >= amount, \\\"ERC1155: burn amount exceeds balance\\\");\\n unchecked {\\n _balances[id][from] = fromBalance - amount;\\n }\\n }\\n\\n emit TransferBatch(operator, from, address(0), ids, amounts);\\n\\n _afterTokenTransfer(operator, from, address(0), ids, amounts, \\\"\\\");\\n }\\n\\n /**\\n * @dev Approve `operator` to operate on all of `owner` tokens\\n *\\n * Emits an {ApprovalForAll} event.\\n */\\n function _setApprovalForAll(address owner, address operator, bool approved) internal virtual {\\n require(owner != operator, \\\"ERC1155: setting approval status for self\\\");\\n _operatorApprovals[owner][operator] = approved;\\n emit ApprovalForAll(owner, operator, approved);\\n }\\n\\n /**\\n * @dev Hook that is called before any token transfer. This includes minting\\n * and burning, as well as batched variants.\\n *\\n * The same hook is called on both single and batched variants. For single\\n * transfers, the length of the `ids` and `amounts` arrays will be 1.\\n *\\n * Calling conditions (for each `id` and `amount` pair):\\n *\\n * - When `from` and `to` are both non-zero, `amount` of ``from``'s tokens\\n * of token type `id` will be transferred to `to`.\\n * - When `from` is zero, `amount` tokens of token type `id` will be minted\\n * for `to`.\\n * - when `to` is zero, `amount` of ``from``'s tokens of token type `id`\\n * will be burned.\\n * - `from` and `to` are never both zero.\\n * - `ids` and `amounts` have the same, non-zero length.\\n *\\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n */\\n function _beforeTokenTransfer(\\n address operator,\\n address from,\\n address to,\\n uint256[] memory ids,\\n uint256[] memory amounts,\\n bytes memory data\\n ) internal virtual {}\\n\\n /**\\n * @dev Hook that is called after any token transfer. This includes minting\\n * and burning, as well as batched variants.\\n *\\n * The same hook is called on both single and batched variants. For single\\n * transfers, the length of the `id` and `amount` arrays will be 1.\\n *\\n * Calling conditions (for each `id` and `amount` pair):\\n *\\n * - When `from` and `to` are both non-zero, `amount` of ``from``'s tokens\\n * of token type `id` will be transferred to `to`.\\n * - When `from` is zero, `amount` tokens of token type `id` will be minted\\n * for `to`.\\n * - when `to` is zero, `amount` of ``from``'s tokens of token type `id`\\n * will be burned.\\n * - `from` and `to` are never both zero.\\n * - `ids` and `amounts` have the same, non-zero length.\\n *\\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n */\\n function _afterTokenTransfer(\\n address operator,\\n address from,\\n address to,\\n uint256[] memory ids,\\n uint256[] memory amounts,\\n bytes memory data\\n ) internal virtual {}\\n\\n function _doSafeTransferAcceptanceCheck(\\n address operator,\\n address from,\\n address to,\\n uint256 id,\\n uint256 amount,\\n bytes memory data\\n ) private {\\n if (to.isContract()) {\\n try IERC1155Receiver(to).onERC1155Received(operator, from, id, amount, data) returns (bytes4 response) {\\n if (response != IERC1155Receiver.onERC1155Received.selector) {\\n revert(\\\"ERC1155: ERC1155Receiver rejected tokens\\\");\\n }\\n } catch Error(string memory reason) {\\n revert(reason);\\n } catch {\\n revert(\\\"ERC1155: transfer to non-ERC1155Receiver implementer\\\");\\n }\\n }\\n }\\n\\n function _doSafeBatchTransferAcceptanceCheck(\\n address operator,\\n address from,\\n address to,\\n uint256[] memory ids,\\n uint256[] memory amounts,\\n bytes memory data\\n ) private {\\n if (to.isContract()) {\\n try IERC1155Receiver(to).onERC1155BatchReceived(operator, from, ids, amounts, data) returns (\\n bytes4 response\\n ) {\\n if (response != IERC1155Receiver.onERC1155BatchReceived.selector) {\\n revert(\\\"ERC1155: ERC1155Receiver rejected tokens\\\");\\n }\\n } catch Error(string memory reason) {\\n revert(reason);\\n } catch {\\n revert(\\\"ERC1155: transfer to non-ERC1155Receiver implementer\\\");\\n }\\n }\\n }\\n\\n function _asSingletonArray(uint256 element) private pure returns (uint256[] memory) {\\n uint256[] memory array = new uint256[](1);\\n array[0] = element;\\n\\n return array;\\n }\\n}\\n\",\"keccak256\":\"0x81149353c99ccf8ff18af7701bc3f38665c7a97e344cdc0d27f927f03d22af0e\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC1155/IERC1155.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC1155/IERC1155.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC1155 compliant contract, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-1155[EIP].\\n *\\n * _Available since v3.1._\\n */\\ninterface IERC1155 is IERC165 {\\n /**\\n * @dev Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`.\\n */\\n event TransferSingle(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value);\\n\\n /**\\n * @dev Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all\\n * transfers.\\n */\\n event TransferBatch(\\n address indexed operator,\\n address indexed from,\\n address indexed to,\\n uint256[] ids,\\n uint256[] values\\n );\\n\\n /**\\n * @dev Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to\\n * `approved`.\\n */\\n event ApprovalForAll(address indexed account, address indexed operator, bool approved);\\n\\n /**\\n * @dev Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI.\\n *\\n * If an {URI} event was emitted for `id`, the standard\\n * https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value\\n * returned by {IERC1155MetadataURI-uri}.\\n */\\n event URI(string value, uint256 indexed id);\\n\\n /**\\n * @dev Returns the amount of tokens of token type `id` owned by `account`.\\n *\\n * Requirements:\\n *\\n * - `account` cannot be the zero address.\\n */\\n function balanceOf(address account, uint256 id) external view returns (uint256);\\n\\n /**\\n * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}.\\n *\\n * Requirements:\\n *\\n * - `accounts` and `ids` must have the same length.\\n */\\n function balanceOfBatch(\\n address[] calldata accounts,\\n uint256[] calldata ids\\n ) external view returns (uint256[] memory);\\n\\n /**\\n * @dev Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`,\\n *\\n * Emits an {ApprovalForAll} event.\\n *\\n * Requirements:\\n *\\n * - `operator` cannot be the caller.\\n */\\n function setApprovalForAll(address operator, bool approved) external;\\n\\n /**\\n * @dev Returns true if `operator` is approved to transfer ``account``'s tokens.\\n *\\n * See {setApprovalForAll}.\\n */\\n function isApprovedForAll(address account, address operator) external view returns (bool);\\n\\n /**\\n * @dev Transfers `amount` tokens of token type `id` from `from` to `to`.\\n *\\n * Emits a {TransferSingle} event.\\n *\\n * Requirements:\\n *\\n * - `to` cannot be the zero address.\\n * - If the caller is not `from`, it must have been approved to spend ``from``'s tokens via {setApprovalForAll}.\\n * - `from` must have a balance of tokens of type `id` of at least `amount`.\\n * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the\\n * acceptance magic value.\\n */\\n function safeTransferFrom(address from, address to, uint256 id, uint256 amount, bytes calldata data) external;\\n\\n /**\\n * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}.\\n *\\n * Emits a {TransferBatch} event.\\n *\\n * Requirements:\\n *\\n * - `ids` and `amounts` must have the same length.\\n * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the\\n * acceptance magic value.\\n */\\n function safeBatchTransferFrom(\\n address from,\\n address to,\\n uint256[] calldata ids,\\n uint256[] calldata amounts,\\n bytes calldata data\\n ) external;\\n}\\n\",\"keccak256\":\"0xcab667ddad478ff0d39c2053ca77fac778af8483c18ab07d810277b4216fd582\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC1155/IERC1155Receiver.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev _Available since v3.1._\\n */\\ninterface IERC1155Receiver is IERC165 {\\n /**\\n * @dev Handles the receipt of a single ERC1155 token type. This function is\\n * called at the end of a `safeTransferFrom` after the balance has been updated.\\n *\\n * NOTE: To accept the transfer, this must return\\n * `bytes4(keccak256(\\\"onERC1155Received(address,address,uint256,uint256,bytes)\\\"))`\\n * (i.e. 0xf23a6e61, or its own function selector).\\n *\\n * @param operator The address which initiated the transfer (i.e. msg.sender)\\n * @param from The address which previously owned the token\\n * @param id The ID of the token being transferred\\n * @param value The amount of tokens being transferred\\n * @param data Additional data with no specified format\\n * @return `bytes4(keccak256(\\\"onERC1155Received(address,address,uint256,uint256,bytes)\\\"))` if transfer is allowed\\n */\\n function onERC1155Received(\\n address operator,\\n address from,\\n uint256 id,\\n uint256 value,\\n bytes calldata data\\n ) external returns (bytes4);\\n\\n /**\\n * @dev Handles the receipt of a multiple ERC1155 token types. This function\\n * is called at the end of a `safeBatchTransferFrom` after the balances have\\n * been updated.\\n *\\n * NOTE: To accept the transfer(s), this must return\\n * `bytes4(keccak256(\\\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\\\"))`\\n * (i.e. 0xbc197c81, or its own function selector).\\n *\\n * @param operator The address which initiated the batch transfer (i.e. msg.sender)\\n * @param from The address which previously owned the token\\n * @param ids An array containing ids of each token being transferred (order and length must match values array)\\n * @param values An array containing amounts of each token being transferred (order and length must match ids array)\\n * @param data Additional data with no specified format\\n * @return `bytes4(keccak256(\\\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\\\"))` if transfer is allowed\\n */\\n function onERC1155BatchReceived(\\n address operator,\\n address from,\\n uint256[] calldata ids,\\n uint256[] calldata values,\\n bytes calldata data\\n ) external returns (bytes4);\\n}\\n\",\"keccak256\":\"0xeb373f1fdc7b755c6a750123a9b9e3a8a02c1470042fd6505d875000a80bde0b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC1155/extensions/IERC1155MetadataURI.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC1155.sol\\\";\\n\\n/**\\n * @dev Interface of the optional ERC1155MetadataExtension interface, as defined\\n * in the https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[EIP].\\n *\\n * _Available since v3.1._\\n */\\ninterface IERC1155MetadataURI is IERC1155 {\\n /**\\n * @dev Returns the URI for token type `id`.\\n *\\n * If the `\\\\{id\\\\}` substring is present in the URI, it must be replaced by\\n * clients with the actual token type ID.\\n */\\n function uri(uint256 id) external view returns (string memory);\\n}\\n\",\"keccak256\":\"0xa66d18b9a85458d28fc3304717964502ae36f7f8a2ff35bc83f6f85d74b03574\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n function _contextSuffixLength() internal view virtual returns (uint256) {\\n return 0;\\n }\\n}\\n\",\"keccak256\":\"0xa92e4fa126feb6907daa0513ddd816b2eb91f30a808de54f63c17d0e162c3439\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165 is IERC165 {\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165).interfaceId;\\n }\\n}\\n\",\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"src/mocks/token/ERC1155Mock.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ERC1155} from \\\"@openzeppelin/contracts/token/ERC1155/ERC1155.sol\\\";\\n\\n/// @notice A mock [ERC-1155](https://eips.ethereum.org/EIPS/eip-1155) token that can be minted and burned by everyone.\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract ERC1155Mock is ERC1155 {\\n constructor(string memory _uri) ERC1155(_uri) {}\\n\\n function mint(address account, uint256 tokenId, uint256 amount) public {\\n _mint(account, tokenId, amount, bytes(\\\"\\\"));\\n }\\n\\n function burn(address account, uint256 tokenId, uint256 amount) public {\\n _burn(account, tokenId, amount);\\n }\\n}\\n\",\"keccak256\":\"0x2054da54ffb8f618c2b76d13f172a3121ab4149985c1d75918fb01c572c4b5ba\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[{"astId":5781,"contract":"src/mocks/token/ERC1155Mock.sol:ERC1155Mock","label":"_balances","offset":0,"slot":"0","type":"t_mapping(t_uint256,t_mapping(t_address,t_uint256))"},{"astId":5787,"contract":"src/mocks/token/ERC1155Mock.sol:ERC1155Mock","label":"_operatorApprovals","offset":0,"slot":"1","type":"t_mapping(t_address,t_mapping(t_address,t_bool))"},{"astId":5789,"contract":"src/mocks/token/ERC1155Mock.sol:ERC1155Mock","label":"_uri","offset":0,"slot":"2","type":"t_string_storage"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_mapping(t_address,t_bool)":{"encoding":"mapping","key":"t_address","label":"mapping(address => bool)","numberOfBytes":"32","value":"t_bool"},"t_mapping(t_address,t_mapping(t_address,t_bool))":{"encoding":"mapping","key":"t_address","label":"mapping(address => mapping(address => bool))","numberOfBytes":"32","value":"t_mapping(t_address,t_bool)"},"t_mapping(t_address,t_uint256)":{"encoding":"mapping","key":"t_address","label":"mapping(address => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_mapping(t_uint256,t_mapping(t_address,t_uint256))":{"encoding":"mapping","key":"t_uint256","label":"mapping(uint256 => mapping(address => uint256))","numberOfBytes":"32","value":"t_mapping(t_address,t_uint256)"},"t_string_storage":{"encoding":"bytes","label":"string","numberOfBytes":"32"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"userdoc":{"kind":"user","methods":{},"notice":"A mock [ERC-1155](https://eips.ethereum.org/EIPS/eip-1155) token that can be minted and burned by everyone.","version":1}}},"src/mocks/token/ERC20Mock.sol":{"ERC20Mock":{"abi":[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals_","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"_decimals","type":"uint8"}],"name":"setDecimals","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"DO NOT USE IN PRODUCTION!","kind":"dev","methods":{"allowance(address,address)":{"details":"See {IERC20-allowance}."},"approve(address,uint256)":{"details":"See {IERC20-approve}. NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address."},"balanceOf(address)":{"details":"See {IERC20-balanceOf}."},"decimals()":{"details":"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}."},"decreaseAllowance(address,uint256)":{"details":"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`."},"increaseAllowance(address,uint256)":{"details":"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address."},"name()":{"details":"Returns the name of the token."},"symbol()":{"details":"Returns the symbol of the token, usually a shorter version of the name."},"totalSupply()":{"details":"See {IERC20-totalSupply}."},"transfer(address,uint256)":{"details":"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `amount`."},"transferFrom(address,address,uint256)":{"details":"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `amount`. - the caller must have allowance for ``from``'s tokens of at least `amount`."}},"version":1},"evm":{"bytecode":{"functionDebugData":{"@_12702":{"entryPoint":null,"id":12702,"parameterSlots":2,"returnSlots":0},"@_7201":{"entryPoint":null,"id":7201,"parameterSlots":2,"returnSlots":0},"abi_decode_string_fromMemory":{"entryPoint":129,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr_fromMemory":{"entryPoint":304,"id":null,"parameterSlots":2,"returnSlots":2},"array_dataslot_string_storage":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"clean_up_bytearray_end_slots_string_storage":{"entryPoint":470,"id":null,"parameterSlots":3,"returnSlots":0},"copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage":{"entryPoint":553,"id":null,"parameterSlots":2,"returnSlots":0},"extract_byte_array_length":{"entryPoint":410,"id":null,"parameterSlots":1,"returnSlots":1},"extract_used_part_and_set_length_of_short_byte_array":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"panic_error_0x41":{"entryPoint":107,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:4144:92","statements":[{"nodeType":"YulBlock","src":"6:3:92","statements":[]},{"body":{"nodeType":"YulBlock","src":"46:95:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"63:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"70:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"75:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"66:3:92"},"nodeType":"YulFunctionCall","src":"66:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"56:6:92"},"nodeType":"YulFunctionCall","src":"56:31:92"},"nodeType":"YulExpressionStatement","src":"56:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"103:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"106:4:92","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"96:6:92"},"nodeType":"YulFunctionCall","src":"96:15:92"},"nodeType":"YulExpressionStatement","src":"96:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"127:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"130:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"120:6:92"},"nodeType":"YulFunctionCall","src":"120:15:92"},"nodeType":"YulExpressionStatement","src":"120:15:92"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"14:127:92"},{"body":{"nodeType":"YulBlock","src":"210:776:92","statements":[{"body":{"nodeType":"YulBlock","src":"259:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"268:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"271:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"261:6:92"},"nodeType":"YulFunctionCall","src":"261:12:92"},"nodeType":"YulExpressionStatement","src":"261:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"238:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"246:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"234:3:92"},"nodeType":"YulFunctionCall","src":"234:17:92"},{"name":"end","nodeType":"YulIdentifier","src":"253:3:92"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"230:3:92"},"nodeType":"YulFunctionCall","src":"230:27:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"223:6:92"},"nodeType":"YulFunctionCall","src":"223:35:92"},"nodeType":"YulIf","src":"220:55:92"},{"nodeType":"YulVariableDeclaration","src":"284:23:92","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"300:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"294:5:92"},"nodeType":"YulFunctionCall","src":"294:13:92"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"288:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"316:28:92","value":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"334:2:92","type":"","value":"64"},{"kind":"number","nodeType":"YulLiteral","src":"338:1:92","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"330:3:92"},"nodeType":"YulFunctionCall","src":"330:10:92"},{"kind":"number","nodeType":"YulLiteral","src":"342:1:92","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"326:3:92"},"nodeType":"YulFunctionCall","src":"326:18:92"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"320:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"367:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"369:16:92"},"nodeType":"YulFunctionCall","src":"369:18:92"},"nodeType":"YulExpressionStatement","src":"369:18:92"}]},"condition":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"359:2:92"},{"name":"_2","nodeType":"YulIdentifier","src":"363:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"356:2:92"},"nodeType":"YulFunctionCall","src":"356:10:92"},"nodeType":"YulIf","src":"353:36:92"},{"nodeType":"YulVariableDeclaration","src":"398:17:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"412:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"408:3:92"},"nodeType":"YulFunctionCall","src":"408:7:92"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"402:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"424:23:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"444:2:92","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"438:5:92"},"nodeType":"YulFunctionCall","src":"438:9:92"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"428:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"456:71:92","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"478:6:92"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"502:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"506:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"498:3:92"},"nodeType":"YulFunctionCall","src":"498:13:92"},{"name":"_3","nodeType":"YulIdentifier","src":"513:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"494:3:92"},"nodeType":"YulFunctionCall","src":"494:22:92"},{"kind":"number","nodeType":"YulLiteral","src":"518:2:92","type":"","value":"63"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"490:3:92"},"nodeType":"YulFunctionCall","src":"490:31:92"},{"name":"_3","nodeType":"YulIdentifier","src":"523:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"486:3:92"},"nodeType":"YulFunctionCall","src":"486:40:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"474:3:92"},"nodeType":"YulFunctionCall","src":"474:53:92"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"460:10:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"586:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"588:16:92"},"nodeType":"YulFunctionCall","src":"588:18:92"},"nodeType":"YulExpressionStatement","src":"588:18:92"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"545:10:92"},{"name":"_2","nodeType":"YulIdentifier","src":"557:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"542:2:92"},"nodeType":"YulFunctionCall","src":"542:18:92"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"565:10:92"},{"name":"memPtr","nodeType":"YulIdentifier","src":"577:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"562:2:92"},"nodeType":"YulFunctionCall","src":"562:22:92"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"539:2:92"},"nodeType":"YulFunctionCall","src":"539:46:92"},"nodeType":"YulIf","src":"536:72:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"624:2:92","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"628:10:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"617:6:92"},"nodeType":"YulFunctionCall","src":"617:22:92"},"nodeType":"YulExpressionStatement","src":"617:22:92"},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"655:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"663:2:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"648:6:92"},"nodeType":"YulFunctionCall","src":"648:18:92"},"nodeType":"YulExpressionStatement","src":"648:18:92"},{"nodeType":"YulVariableDeclaration","src":"675:14:92","value":{"kind":"number","nodeType":"YulLiteral","src":"685:4:92","type":"","value":"0x20"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"679:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"735:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"744:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"747:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"737:6:92"},"nodeType":"YulFunctionCall","src":"737:12:92"},"nodeType":"YulExpressionStatement","src":"737:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"712:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"720:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"708:3:92"},"nodeType":"YulFunctionCall","src":"708:15:92"},{"name":"_4","nodeType":"YulIdentifier","src":"725:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"704:3:92"},"nodeType":"YulFunctionCall","src":"704:24:92"},{"name":"end","nodeType":"YulIdentifier","src":"730:3:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"701:2:92"},"nodeType":"YulFunctionCall","src":"701:33:92"},"nodeType":"YulIf","src":"698:53:92"},{"nodeType":"YulVariableDeclaration","src":"760:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"769:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"764:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"825:87:92","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"854:6:92"},{"name":"i","nodeType":"YulIdentifier","src":"862:1:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"850:3:92"},"nodeType":"YulFunctionCall","src":"850:14:92"},{"name":"_4","nodeType":"YulIdentifier","src":"866:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"846:3:92"},"nodeType":"YulFunctionCall","src":"846:23:92"},{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"885:6:92"},{"name":"i","nodeType":"YulIdentifier","src":"893:1:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"881:3:92"},"nodeType":"YulFunctionCall","src":"881:14:92"},{"name":"_4","nodeType":"YulIdentifier","src":"897:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"877:3:92"},"nodeType":"YulFunctionCall","src":"877:23:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"871:5:92"},"nodeType":"YulFunctionCall","src":"871:30:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"839:6:92"},"nodeType":"YulFunctionCall","src":"839:63:92"},"nodeType":"YulExpressionStatement","src":"839:63:92"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"790:1:92"},{"name":"_1","nodeType":"YulIdentifier","src":"793:2:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"787:2:92"},"nodeType":"YulFunctionCall","src":"787:9:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"797:19:92","statements":[{"nodeType":"YulAssignment","src":"799:15:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"808:1:92"},{"name":"_4","nodeType":"YulIdentifier","src":"811:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"804:3:92"},"nodeType":"YulFunctionCall","src":"804:10:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"799:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"783:3:92","statements":[]},"src":"779:133:92"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"936:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"944:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"932:3:92"},"nodeType":"YulFunctionCall","src":"932:15:92"},{"name":"_4","nodeType":"YulIdentifier","src":"949:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"928:3:92"},"nodeType":"YulFunctionCall","src":"928:24:92"},{"kind":"number","nodeType":"YulLiteral","src":"954:1:92","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"921:6:92"},"nodeType":"YulFunctionCall","src":"921:35:92"},"nodeType":"YulExpressionStatement","src":"921:35:92"},{"nodeType":"YulAssignment","src":"965:15:92","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"974:6:92"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"965:5:92"}]}]},"name":"abi_decode_string_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"184:6:92","type":""},{"name":"end","nodeType":"YulTypedName","src":"192:3:92","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"200:5:92","type":""}],"src":"146:840:92"},{"body":{"nodeType":"YulBlock","src":"1109:444:92","statements":[{"body":{"nodeType":"YulBlock","src":"1155:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1164:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1167:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1157:6:92"},"nodeType":"YulFunctionCall","src":"1157:12:92"},"nodeType":"YulExpressionStatement","src":"1157:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1130:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"1139:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1126:3:92"},"nodeType":"YulFunctionCall","src":"1126:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"1151:2:92","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1122:3:92"},"nodeType":"YulFunctionCall","src":"1122:32:92"},"nodeType":"YulIf","src":"1119:52:92"},{"nodeType":"YulVariableDeclaration","src":"1180:30:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1200:9:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1194:5:92"},"nodeType":"YulFunctionCall","src":"1194:16:92"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1184:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"1219:28:92","value":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1237:2:92","type":"","value":"64"},{"kind":"number","nodeType":"YulLiteral","src":"1241:1:92","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1233:3:92"},"nodeType":"YulFunctionCall","src":"1233:10:92"},{"kind":"number","nodeType":"YulLiteral","src":"1245:1:92","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1229:3:92"},"nodeType":"YulFunctionCall","src":"1229:18:92"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"1223:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"1274:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1283:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1286:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1276:6:92"},"nodeType":"YulFunctionCall","src":"1276:12:92"},"nodeType":"YulExpressionStatement","src":"1276:12:92"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1262:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"1270:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1259:2:92"},"nodeType":"YulFunctionCall","src":"1259:14:92"},"nodeType":"YulIf","src":"1256:34:92"},{"nodeType":"YulAssignment","src":"1299:71:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1342:9:92"},{"name":"offset","nodeType":"YulIdentifier","src":"1353:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1338:3:92"},"nodeType":"YulFunctionCall","src":"1338:22:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1362:7:92"}],"functionName":{"name":"abi_decode_string_fromMemory","nodeType":"YulIdentifier","src":"1309:28:92"},"nodeType":"YulFunctionCall","src":"1309:61:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1299:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"1379:41:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1405:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1416:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1401:3:92"},"nodeType":"YulFunctionCall","src":"1401:18:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1395:5:92"},"nodeType":"YulFunctionCall","src":"1395:25:92"},"variables":[{"name":"offset_1","nodeType":"YulTypedName","src":"1383:8:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"1449:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1458:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1461:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1451:6:92"},"nodeType":"YulFunctionCall","src":"1451:12:92"},"nodeType":"YulExpressionStatement","src":"1451:12:92"}]},"condition":{"arguments":[{"name":"offset_1","nodeType":"YulIdentifier","src":"1435:8:92"},{"name":"_1","nodeType":"YulIdentifier","src":"1445:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1432:2:92"},"nodeType":"YulFunctionCall","src":"1432:16:92"},"nodeType":"YulIf","src":"1429:36:92"},{"nodeType":"YulAssignment","src":"1474:73:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1517:9:92"},{"name":"offset_1","nodeType":"YulIdentifier","src":"1528:8:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1513:3:92"},"nodeType":"YulFunctionCall","src":"1513:24:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1539:7:92"}],"functionName":{"name":"abi_decode_string_fromMemory","nodeType":"YulIdentifier","src":"1484:28:92"},"nodeType":"YulFunctionCall","src":"1484:63:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1474:6:92"}]}]},"name":"abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1067:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1078:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1090:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1098:6:92","type":""}],"src":"991:562:92"},{"body":{"nodeType":"YulBlock","src":"1613:325:92","statements":[{"nodeType":"YulAssignment","src":"1623:22:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1637:1:92","type":"","value":"1"},{"name":"data","nodeType":"YulIdentifier","src":"1640:4:92"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"1633:3:92"},"nodeType":"YulFunctionCall","src":"1633:12:92"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"1623:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"1654:38:92","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"1684:4:92"},{"kind":"number","nodeType":"YulLiteral","src":"1690:1:92","type":"","value":"1"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1680:3:92"},"nodeType":"YulFunctionCall","src":"1680:12:92"},"variables":[{"name":"outOfPlaceEncoding","nodeType":"YulTypedName","src":"1658:18:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"1731:31:92","statements":[{"nodeType":"YulAssignment","src":"1733:27:92","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"1747:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"1755:4:92","type":"","value":"0x7f"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1743:3:92"},"nodeType":"YulFunctionCall","src":"1743:17:92"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"1733:6:92"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"1711:18:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1704:6:92"},"nodeType":"YulFunctionCall","src":"1704:26:92"},"nodeType":"YulIf","src":"1701:61:92"},{"body":{"nodeType":"YulBlock","src":"1821:111:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1842:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1849:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"1854:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1845:3:92"},"nodeType":"YulFunctionCall","src":"1845:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1835:6:92"},"nodeType":"YulFunctionCall","src":"1835:31:92"},"nodeType":"YulExpressionStatement","src":"1835:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1886:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"1889:4:92","type":"","value":"0x22"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1879:6:92"},"nodeType":"YulFunctionCall","src":"1879:15:92"},"nodeType":"YulExpressionStatement","src":"1879:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1914:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1917:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1907:6:92"},"nodeType":"YulFunctionCall","src":"1907:15:92"},"nodeType":"YulExpressionStatement","src":"1907:15:92"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"1777:18:92"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"1800:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"1808:2:92","type":"","value":"32"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"1797:2:92"},"nodeType":"YulFunctionCall","src":"1797:14:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1774:2:92"},"nodeType":"YulFunctionCall","src":"1774:38:92"},"nodeType":"YulIf","src":"1771:161:92"}]},"name":"extract_byte_array_length","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"1593:4:92","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"1602:6:92","type":""}],"src":"1558:380:92"},{"body":{"nodeType":"YulBlock","src":"1999:65:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2016:1:92","type":"","value":"0"},{"name":"ptr","nodeType":"YulIdentifier","src":"2019:3:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2009:6:92"},"nodeType":"YulFunctionCall","src":"2009:14:92"},"nodeType":"YulExpressionStatement","src":"2009:14:92"},{"nodeType":"YulAssignment","src":"2032:26:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2050:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2053:4:92","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nodeType":"YulIdentifier","src":"2040:9:92"},"nodeType":"YulFunctionCall","src":"2040:18:92"},"variableNames":[{"name":"data","nodeType":"YulIdentifier","src":"2032:4:92"}]}]},"name":"array_dataslot_string_storage","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nodeType":"YulTypedName","src":"1982:3:92","type":""}],"returnVariables":[{"name":"data","nodeType":"YulTypedName","src":"1990:4:92","type":""}],"src":"1943:121:92"},{"body":{"nodeType":"YulBlock","src":"2150:464:92","statements":[{"body":{"nodeType":"YulBlock","src":"2183:425:92","statements":[{"nodeType":"YulVariableDeclaration","src":"2197:11:92","value":{"kind":"number","nodeType":"YulLiteral","src":"2207:1:92","type":"","value":"0"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"2201:2:92","type":""}]},{"expression":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"2228:2:92"},{"name":"array","nodeType":"YulIdentifier","src":"2232:5:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2221:6:92"},"nodeType":"YulFunctionCall","src":"2221:17:92"},"nodeType":"YulExpressionStatement","src":"2221:17:92"},{"nodeType":"YulVariableDeclaration","src":"2251:31:92","value":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"2273:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"2277:4:92","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nodeType":"YulIdentifier","src":"2263:9:92"},"nodeType":"YulFunctionCall","src":"2263:19:92"},"variables":[{"name":"data","nodeType":"YulTypedName","src":"2255:4:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2295:57:92","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"2318:4:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2328:1:92","type":"","value":"5"},{"arguments":[{"name":"startIndex","nodeType":"YulIdentifier","src":"2335:10:92"},{"kind":"number","nodeType":"YulLiteral","src":"2347:2:92","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2331:3:92"},"nodeType":"YulFunctionCall","src":"2331:19:92"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"2324:3:92"},"nodeType":"YulFunctionCall","src":"2324:27:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2314:3:92"},"nodeType":"YulFunctionCall","src":"2314:38:92"},"variables":[{"name":"deleteStart","nodeType":"YulTypedName","src":"2299:11:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"2389:23:92","statements":[{"nodeType":"YulAssignment","src":"2391:19:92","value":{"name":"data","nodeType":"YulIdentifier","src":"2406:4:92"},"variableNames":[{"name":"deleteStart","nodeType":"YulIdentifier","src":"2391:11:92"}]}]},"condition":{"arguments":[{"name":"startIndex","nodeType":"YulIdentifier","src":"2371:10:92"},{"kind":"number","nodeType":"YulLiteral","src":"2383:4:92","type":"","value":"0x20"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2368:2:92"},"nodeType":"YulFunctionCall","src":"2368:20:92"},"nodeType":"YulIf","src":"2365:47:92"},{"nodeType":"YulVariableDeclaration","src":"2425:41:92","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"2439:4:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2449:1:92","type":"","value":"5"},{"arguments":[{"name":"len","nodeType":"YulIdentifier","src":"2456:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"2461:2:92","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2452:3:92"},"nodeType":"YulFunctionCall","src":"2452:12:92"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"2445:3:92"},"nodeType":"YulFunctionCall","src":"2445:20:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2435:3:92"},"nodeType":"YulFunctionCall","src":"2435:31:92"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"2429:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2479:24:92","value":{"name":"deleteStart","nodeType":"YulIdentifier","src":"2492:11:92"},"variables":[{"name":"start","nodeType":"YulTypedName","src":"2483:5:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"2577:21:92","statements":[{"expression":{"arguments":[{"name":"start","nodeType":"YulIdentifier","src":"2586:5:92"},{"name":"_1","nodeType":"YulIdentifier","src":"2593:2:92"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"2579:6:92"},"nodeType":"YulFunctionCall","src":"2579:17:92"},"nodeType":"YulExpressionStatement","src":"2579:17:92"}]},"condition":{"arguments":[{"name":"start","nodeType":"YulIdentifier","src":"2527:5:92"},{"name":"_2","nodeType":"YulIdentifier","src":"2534:2:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2524:2:92"},"nodeType":"YulFunctionCall","src":"2524:13:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"2538:26:92","statements":[{"nodeType":"YulAssignment","src":"2540:22:92","value":{"arguments":[{"name":"start","nodeType":"YulIdentifier","src":"2553:5:92"},{"kind":"number","nodeType":"YulLiteral","src":"2560:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2549:3:92"},"nodeType":"YulFunctionCall","src":"2549:13:92"},"variableNames":[{"name":"start","nodeType":"YulIdentifier","src":"2540:5:92"}]}]},"pre":{"nodeType":"YulBlock","src":"2520:3:92","statements":[]},"src":"2516:82:92"}]},"condition":{"arguments":[{"name":"len","nodeType":"YulIdentifier","src":"2166:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"2171:2:92","type":"","value":"31"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2163:2:92"},"nodeType":"YulFunctionCall","src":"2163:11:92"},"nodeType":"YulIf","src":"2160:448:92"}]},"name":"clean_up_bytearray_end_slots_string_storage","nodeType":"YulFunctionDefinition","parameters":[{"name":"array","nodeType":"YulTypedName","src":"2122:5:92","type":""},{"name":"len","nodeType":"YulTypedName","src":"2129:3:92","type":""},{"name":"startIndex","nodeType":"YulTypedName","src":"2134:10:92","type":""}],"src":"2069:545:92"},{"body":{"nodeType":"YulBlock","src":"2704:81:92","statements":[{"nodeType":"YulAssignment","src":"2714:65:92","value":{"arguments":[{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"2729:4:92"},{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2747:1:92","type":"","value":"3"},{"name":"len","nodeType":"YulIdentifier","src":"2750:3:92"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2743:3:92"},"nodeType":"YulFunctionCall","src":"2743:11:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2760:1:92","type":"","value":"0"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"2756:3:92"},"nodeType":"YulFunctionCall","src":"2756:6:92"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"2739:3:92"},"nodeType":"YulFunctionCall","src":"2739:24:92"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"2735:3:92"},"nodeType":"YulFunctionCall","src":"2735:29:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2725:3:92"},"nodeType":"YulFunctionCall","src":"2725:40:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2771:1:92","type":"","value":"1"},{"name":"len","nodeType":"YulIdentifier","src":"2774:3:92"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2767:3:92"},"nodeType":"YulFunctionCall","src":"2767:11:92"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"2722:2:92"},"nodeType":"YulFunctionCall","src":"2722:57:92"},"variableNames":[{"name":"used","nodeType":"YulIdentifier","src":"2714:4:92"}]}]},"name":"extract_used_part_and_set_length_of_short_byte_array","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"2681:4:92","type":""},{"name":"len","nodeType":"YulTypedName","src":"2687:3:92","type":""}],"returnVariables":[{"name":"used","nodeType":"YulTypedName","src":"2695:4:92","type":""}],"src":"2619:166:92"},{"body":{"nodeType":"YulBlock","src":"2886:1256:92","statements":[{"nodeType":"YulVariableDeclaration","src":"2896:24:92","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"2916:3:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2910:5:92"},"nodeType":"YulFunctionCall","src":"2910:10:92"},"variables":[{"name":"newLen","nodeType":"YulTypedName","src":"2900:6:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"2963:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"2965:16:92"},"nodeType":"YulFunctionCall","src":"2965:18:92"},"nodeType":"YulExpressionStatement","src":"2965:18:92"}]},"condition":{"arguments":[{"name":"newLen","nodeType":"YulIdentifier","src":"2935:6:92"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2951:2:92","type":"","value":"64"},{"kind":"number","nodeType":"YulLiteral","src":"2955:1:92","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2947:3:92"},"nodeType":"YulFunctionCall","src":"2947:10:92"},{"kind":"number","nodeType":"YulLiteral","src":"2959:1:92","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2943:3:92"},"nodeType":"YulFunctionCall","src":"2943:18:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2932:2:92"},"nodeType":"YulFunctionCall","src":"2932:30:92"},"nodeType":"YulIf","src":"2929:56:92"},{"expression":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"3038:4:92"},{"arguments":[{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"3076:4:92"}],"functionName":{"name":"sload","nodeType":"YulIdentifier","src":"3070:5:92"},"nodeType":"YulFunctionCall","src":"3070:11:92"}],"functionName":{"name":"extract_byte_array_length","nodeType":"YulIdentifier","src":"3044:25:92"},"nodeType":"YulFunctionCall","src":"3044:38:92"},{"name":"newLen","nodeType":"YulIdentifier","src":"3084:6:92"}],"functionName":{"name":"clean_up_bytearray_end_slots_string_storage","nodeType":"YulIdentifier","src":"2994:43:92"},"nodeType":"YulFunctionCall","src":"2994:97:92"},"nodeType":"YulExpressionStatement","src":"2994:97:92"},{"nodeType":"YulVariableDeclaration","src":"3100:18:92","value":{"kind":"number","nodeType":"YulLiteral","src":"3117:1:92","type":"","value":"0"},"variables":[{"name":"srcOffset","nodeType":"YulTypedName","src":"3104:9:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3127:23:92","value":{"kind":"number","nodeType":"YulLiteral","src":"3146:4:92","type":"","value":"0x20"},"variables":[{"name":"srcOffset_1","nodeType":"YulTypedName","src":"3131:11:92","type":""}]},{"nodeType":"YulAssignment","src":"3159:24:92","value":{"name":"srcOffset_1","nodeType":"YulIdentifier","src":"3172:11:92"},"variableNames":[{"name":"srcOffset","nodeType":"YulIdentifier","src":"3159:9:92"}]},{"cases":[{"body":{"nodeType":"YulBlock","src":"3229:656:92","statements":[{"nodeType":"YulVariableDeclaration","src":"3243:35:92","value":{"arguments":[{"name":"newLen","nodeType":"YulIdentifier","src":"3262:6:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3274:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"3270:3:92"},"nodeType":"YulFunctionCall","src":"3270:7:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3258:3:92"},"nodeType":"YulFunctionCall","src":"3258:20:92"},"variables":[{"name":"loopEnd","nodeType":"YulTypedName","src":"3247:7:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3291:49:92","value":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"3335:4:92"}],"functionName":{"name":"array_dataslot_string_storage","nodeType":"YulIdentifier","src":"3305:29:92"},"nodeType":"YulFunctionCall","src":"3305:35:92"},"variables":[{"name":"dstPtr","nodeType":"YulTypedName","src":"3295:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3353:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"3362:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"3357:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"3440:172:92","statements":[{"expression":{"arguments":[{"name":"dstPtr","nodeType":"YulIdentifier","src":"3465:6:92"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"3483:3:92"},{"name":"srcOffset","nodeType":"YulIdentifier","src":"3488:9:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3479:3:92"},"nodeType":"YulFunctionCall","src":"3479:19:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3473:5:92"},"nodeType":"YulFunctionCall","src":"3473:26:92"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"3458:6:92"},"nodeType":"YulFunctionCall","src":"3458:42:92"},"nodeType":"YulExpressionStatement","src":"3458:42:92"},{"nodeType":"YulAssignment","src":"3517:24:92","value":{"arguments":[{"name":"dstPtr","nodeType":"YulIdentifier","src":"3531:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"3539:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3527:3:92"},"nodeType":"YulFunctionCall","src":"3527:14:92"},"variableNames":[{"name":"dstPtr","nodeType":"YulIdentifier","src":"3517:6:92"}]},{"nodeType":"YulAssignment","src":"3558:40:92","value":{"arguments":[{"name":"srcOffset","nodeType":"YulIdentifier","src":"3575:9:92"},{"name":"srcOffset_1","nodeType":"YulIdentifier","src":"3586:11:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3571:3:92"},"nodeType":"YulFunctionCall","src":"3571:27:92"},"variableNames":[{"name":"srcOffset","nodeType":"YulIdentifier","src":"3558:9:92"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3387:1:92"},{"name":"loopEnd","nodeType":"YulIdentifier","src":"3390:7:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"3384:2:92"},"nodeType":"YulFunctionCall","src":"3384:14:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"3399:28:92","statements":[{"nodeType":"YulAssignment","src":"3401:24:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3410:1:92"},{"name":"srcOffset_1","nodeType":"YulIdentifier","src":"3413:11:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3406:3:92"},"nodeType":"YulFunctionCall","src":"3406:19:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"3401:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"3380:3:92","statements":[]},"src":"3376:236:92"},{"body":{"nodeType":"YulBlock","src":"3660:166:92","statements":[{"nodeType":"YulVariableDeclaration","src":"3678:43:92","value":{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"3705:3:92"},{"name":"srcOffset","nodeType":"YulIdentifier","src":"3710:9:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3701:3:92"},"nodeType":"YulFunctionCall","src":"3701:19:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3695:5:92"},"nodeType":"YulFunctionCall","src":"3695:26:92"},"variables":[{"name":"lastValue","nodeType":"YulTypedName","src":"3682:9:92","type":""}]},{"expression":{"arguments":[{"name":"dstPtr","nodeType":"YulIdentifier","src":"3745:6:92"},{"arguments":[{"name":"lastValue","nodeType":"YulIdentifier","src":"3757:9:92"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3784:1:92","type":"","value":"3"},{"name":"newLen","nodeType":"YulIdentifier","src":"3787:6:92"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"3780:3:92"},"nodeType":"YulFunctionCall","src":"3780:14:92"},{"kind":"number","nodeType":"YulLiteral","src":"3796:3:92","type":"","value":"248"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3776:3:92"},"nodeType":"YulFunctionCall","src":"3776:24:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3806:1:92","type":"","value":"0"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"3802:3:92"},"nodeType":"YulFunctionCall","src":"3802:6:92"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"3772:3:92"},"nodeType":"YulFunctionCall","src":"3772:37:92"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"3768:3:92"},"nodeType":"YulFunctionCall","src":"3768:42:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3753:3:92"},"nodeType":"YulFunctionCall","src":"3753:58:92"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"3738:6:92"},"nodeType":"YulFunctionCall","src":"3738:74:92"},"nodeType":"YulExpressionStatement","src":"3738:74:92"}]},"condition":{"arguments":[{"name":"loopEnd","nodeType":"YulIdentifier","src":"3631:7:92"},{"name":"newLen","nodeType":"YulIdentifier","src":"3640:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"3628:2:92"},"nodeType":"YulFunctionCall","src":"3628:19:92"},"nodeType":"YulIf","src":"3625:201:92"},{"expression":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"3846:4:92"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3860:1:92","type":"","value":"1"},{"name":"newLen","nodeType":"YulIdentifier","src":"3863:6:92"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"3856:3:92"},"nodeType":"YulFunctionCall","src":"3856:14:92"},{"kind":"number","nodeType":"YulLiteral","src":"3872:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3852:3:92"},"nodeType":"YulFunctionCall","src":"3852:22:92"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"3839:6:92"},"nodeType":"YulFunctionCall","src":"3839:36:92"},"nodeType":"YulExpressionStatement","src":"3839:36:92"}]},"nodeType":"YulCase","src":"3222:663:92","value":{"kind":"number","nodeType":"YulLiteral","src":"3227:1:92","type":"","value":"1"}},{"body":{"nodeType":"YulBlock","src":"3902:234:92","statements":[{"nodeType":"YulVariableDeclaration","src":"3916:14:92","value":{"kind":"number","nodeType":"YulLiteral","src":"3929:1:92","type":"","value":"0"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"3920:5:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"3965:67:92","statements":[{"nodeType":"YulAssignment","src":"3983:35:92","value":{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"4002:3:92"},{"name":"srcOffset","nodeType":"YulIdentifier","src":"4007:9:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3998:3:92"},"nodeType":"YulFunctionCall","src":"3998:19:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3992:5:92"},"nodeType":"YulFunctionCall","src":"3992:26:92"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"3983:5:92"}]}]},"condition":{"name":"newLen","nodeType":"YulIdentifier","src":"3946:6:92"},"nodeType":"YulIf","src":"3943:89:92"},{"expression":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"4052:4:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4111:5:92"},{"name":"newLen","nodeType":"YulIdentifier","src":"4118:6:92"}],"functionName":{"name":"extract_used_part_and_set_length_of_short_byte_array","nodeType":"YulIdentifier","src":"4058:52:92"},"nodeType":"YulFunctionCall","src":"4058:67:92"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"4045:6:92"},"nodeType":"YulFunctionCall","src":"4045:81:92"},"nodeType":"YulExpressionStatement","src":"4045:81:92"}]},"nodeType":"YulCase","src":"3894:242:92","value":"default"}],"expression":{"arguments":[{"name":"newLen","nodeType":"YulIdentifier","src":"3202:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"3210:2:92","type":"","value":"31"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3199:2:92"},"nodeType":"YulFunctionCall","src":"3199:14:92"},"nodeType":"YulSwitch","src":"3192:944:92"}]},"name":"copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage","nodeType":"YulFunctionDefinition","parameters":[{"name":"slot","nodeType":"YulTypedName","src":"2871:4:92","type":""},{"name":"src","nodeType":"YulTypedName","src":"2877:3:92","type":""}],"src":"2790:1352:92"}]},"contents":"{\n { }\n function panic_error_0x41()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function abi_decode_string_fromMemory(offset, end) -> array\n {\n if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n let _1 := mload(offset)\n let _2 := sub(shl(64, 1), 1)\n if gt(_1, _2) { panic_error_0x41() }\n let _3 := not(31)\n let memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(and(add(_1, 0x1f), _3), 63), _3))\n if or(gt(newFreePtr, _2), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n mstore(memPtr, _1)\n let _4 := 0x20\n if gt(add(add(offset, _1), _4), end) { revert(0, 0) }\n let i := 0\n for { } lt(i, _1) { i := add(i, _4) }\n {\n mstore(add(add(memPtr, i), _4), mload(add(add(offset, i), _4)))\n }\n mstore(add(add(memPtr, _1), _4), 0)\n array := memPtr\n }\n function abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr_fromMemory(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n let offset := mload(headStart)\n let _1 := sub(shl(64, 1), 1)\n if gt(offset, _1) { revert(0, 0) }\n value0 := abi_decode_string_fromMemory(add(headStart, offset), dataEnd)\n let offset_1 := mload(add(headStart, 32))\n if gt(offset_1, _1) { revert(0, 0) }\n value1 := abi_decode_string_fromMemory(add(headStart, offset_1), dataEnd)\n }\n function extract_byte_array_length(data) -> length\n {\n length := shr(1, data)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n if eq(outOfPlaceEncoding, lt(length, 32))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n }\n function array_dataslot_string_storage(ptr) -> data\n {\n mstore(0, ptr)\n data := keccak256(0, 0x20)\n }\n function clean_up_bytearray_end_slots_string_storage(array, len, startIndex)\n {\n if gt(len, 31)\n {\n let _1 := 0\n mstore(_1, array)\n let data := keccak256(_1, 0x20)\n let deleteStart := add(data, shr(5, add(startIndex, 31)))\n if lt(startIndex, 0x20) { deleteStart := data }\n let _2 := add(data, shr(5, add(len, 31)))\n let start := deleteStart\n for { } lt(start, _2) { start := add(start, 1) }\n { sstore(start, _1) }\n }\n }\n function extract_used_part_and_set_length_of_short_byte_array(data, len) -> used\n {\n used := or(and(data, not(shr(shl(3, len), not(0)))), shl(1, len))\n }\n function copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage(slot, src)\n {\n let newLen := mload(src)\n if gt(newLen, sub(shl(64, 1), 1)) { panic_error_0x41() }\n clean_up_bytearray_end_slots_string_storage(slot, extract_byte_array_length(sload(slot)), newLen)\n let srcOffset := 0\n let srcOffset_1 := 0x20\n srcOffset := srcOffset_1\n switch gt(newLen, 31)\n case 1 {\n let loopEnd := and(newLen, not(31))\n let dstPtr := array_dataslot_string_storage(slot)\n let i := 0\n for { } lt(i, loopEnd) { i := add(i, srcOffset_1) }\n {\n sstore(dstPtr, mload(add(src, srcOffset)))\n dstPtr := add(dstPtr, 1)\n srcOffset := add(srcOffset, srcOffset_1)\n }\n if lt(loopEnd, newLen)\n {\n let lastValue := mload(add(src, srcOffset))\n sstore(dstPtr, and(lastValue, not(shr(and(shl(3, newLen), 248), not(0)))))\n }\n sstore(slot, add(shl(1, newLen), 1))\n }\n default {\n let value := 0\n if newLen\n {\n value := mload(add(src, srcOffset))\n }\n sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, newLen))\n }\n }\n}","id":92,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60806040526005805460ff191660121790553480156200001e57600080fd5b5060405162000ed038038062000ed0833981016040819052620000419162000130565b8181600362000051838262000229565b50600462000060828262000229565b5050505050620002f5565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200009357600080fd5b81516001600160401b0380821115620000b057620000b06200006b565b604051601f8301601f19908116603f01168101908282118183101715620000db57620000db6200006b565b81604052838152602092508683858801011115620000f857600080fd5b600091505b838210156200011c5785820183015181830184015290820190620000fd565b600093810190920192909252949350505050565b600080604083850312156200014457600080fd5b82516001600160401b03808211156200015c57600080fd5b6200016a8683870162000081565b935060208501519150808211156200018157600080fd5b50620001908582860162000081565b9150509250929050565b600181811c90821680620001af57607f821691505b602082108103620001d057634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200022457600081815260208120601f850160051c81016020861015620001ff5750805b601f850160051c820191505b8181101562000220578281556001016200020b565b5050505b505050565b81516001600160401b038111156200024557620002456200006b565b6200025d816200025684546200019a565b84620001d6565b602080601f8311600181146200029557600084156200027c5750858301515b600019600386901b1c1916600185901b17855562000220565b600085815260208120601f198616915b82811015620002c657888601518255948401946001909101908401620002a5565b5085821015620002e55787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b610bcb80620003056000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c80637a1395aa1161008c578063a9059cbb11610066578063a9059cbb146101eb578063dd62ed3e146101fe578063e30443bc14610237578063f785ef721461024a57600080fd5b80637a1395aa146101aa57806395d89b41146101d0578063a457c2d7146101d857600080fd5b806323b872dd116100c857806323b872dd14610142578063313ce56714610155578063395093511461016e57806370a082311461018157600080fd5b806306fdde03146100ef578063095ea7b31461010d57806318160ddd14610130575b600080fd5b6100f7610257565b6040516101049190610a00565b60405180910390f35b61012061011b366004610a6a565b6102e9565b6040519015158152602001610104565b6002545b604051908152602001610104565b610120610150366004610a94565b610303565b60055460ff165b60405160ff9091168152602001610104565b61012061017c366004610a6a565b610327565b61013461018f366004610ad0565b6001600160a01b031660009081526020819052604090205490565b6101ce6101b8366004610af2565b6005805460ff191660ff92909216919091179055565b005b6100f7610366565b6101206101e6366004610a6a565b610375565b6101206101f9366004610a6a565b610424565b61013461020c366004610b15565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6101ce610245366004610a6a565b610432565b60055461015c9060ff1681565b60606003805461026690610b48565b80601f016020809104026020016040519081016040528092919081815260200182805461029290610b48565b80156102df5780601f106102b4576101008083540402835291602001916102df565b820191906000526020600020905b8154815290600101906020018083116102c257829003601f168201915b5050505050905090565b6000336102f7818585610486565b60019150505b92915050565b6000336103118582856105aa565b61031c85858561063c565b506001949350505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091906102f79082908690610361908790610b98565b610486565b60606004805461026690610b48565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909190838110156104175760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b61031c8286868403610486565b6000336102f781858561063c565b6001600160a01b0382166000908152602081905260409020548181101561046b57610466836104618385610bab565b61080f565b505050565b8181111561046657610466836104818484610bab565b6108ce565b6001600160a01b0383166104e85760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161040e565b6001600160a01b0382166105495760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161040e565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03838116600090815260016020908152604080832093861683529290522054600019811461063657818110156106295760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161040e565b6106368484848403610486565b50505050565b6001600160a01b0383166106b85760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f6472657373000000000000000000000000000000000000000000000000000000606482015260840161040e565b6001600160a01b03821661071a5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161040e565b6001600160a01b038316600090815260208190526040902054818110156107a95760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e63650000000000000000000000000000000000000000000000000000606482015260840161040e565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610636565b6001600160a01b0382166108655760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161040e565b80600260008282546108779190610b98565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6001600160a01b03821661092e5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161040e565b6001600160a01b038216600090815260208190526040902054818110156109a25760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b606482015260840161040e565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b600060208083528351808285015260005b81811015610a2d57858101830151858201604001528201610a11565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610a6557600080fd5b919050565b60008060408385031215610a7d57600080fd5b610a8683610a4e565b946020939093013593505050565b600080600060608486031215610aa957600080fd5b610ab284610a4e565b9250610ac060208501610a4e565b9150604084013590509250925092565b600060208284031215610ae257600080fd5b610aeb82610a4e565b9392505050565b600060208284031215610b0457600080fd5b813560ff81168114610aeb57600080fd5b60008060408385031215610b2857600080fd5b610b3183610a4e565b9150610b3f60208401610a4e565b90509250929050565b600181811c90821680610b5c57607f821691505b602082108103610b7c57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156102fd576102fd610b82565b818103818111156102fd576102fd610b8256fea164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x5 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x12 OR SWAP1 SSTORE CALLVALUE DUP1 ISZERO PUSH3 0x1E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0xED0 CODESIZE SUB DUP1 PUSH3 0xED0 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x41 SWAP2 PUSH3 0x130 JUMP JUMPDEST DUP2 DUP2 PUSH1 0x3 PUSH3 0x51 DUP4 DUP3 PUSH3 0x229 JUMP JUMPDEST POP PUSH1 0x4 PUSH3 0x60 DUP3 DUP3 PUSH3 0x229 JUMP JUMPDEST POP POP POP POP POP PUSH3 0x2F5 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x93 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH3 0xB0 JUMPI PUSH3 0xB0 PUSH3 0x6B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP4 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP3 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH3 0xDB JUMPI PUSH3 0xDB PUSH3 0x6B JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP4 DUP2 MSTORE PUSH1 0x20 SWAP3 POP DUP7 DUP4 DUP6 DUP9 ADD ADD GT ISZERO PUSH3 0xF8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP2 POP JUMPDEST DUP4 DUP3 LT ISZERO PUSH3 0x11C JUMPI DUP6 DUP3 ADD DUP4 ADD MLOAD DUP2 DUP4 ADD DUP5 ADD MSTORE SWAP1 DUP3 ADD SWAP1 PUSH3 0xFD JUMP JUMPDEST PUSH1 0x0 SWAP4 DUP2 ADD SWAP1 SWAP3 ADD SWAP3 SWAP1 SWAP3 MSTORE SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x144 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH3 0x15C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x16A DUP7 DUP4 DUP8 ADD PUSH3 0x81 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD MLOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH3 0x181 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x190 DUP6 DUP3 DUP7 ADD PUSH3 0x81 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH3 0x1AF JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH3 0x1D0 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH3 0x224 JUMPI PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP7 LT ISZERO PUSH3 0x1FF JUMPI POP DUP1 JUMPDEST PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x220 JUMPI DUP3 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x20B JUMP JUMPDEST POP POP POP JUMPDEST POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH3 0x245 JUMPI PUSH3 0x245 PUSH3 0x6B JUMP JUMPDEST PUSH3 0x25D DUP2 PUSH3 0x256 DUP5 SLOAD PUSH3 0x19A JUMP JUMPDEST DUP5 PUSH3 0x1D6 JUMP JUMPDEST PUSH1 0x20 DUP1 PUSH1 0x1F DUP4 GT PUSH1 0x1 DUP2 EQ PUSH3 0x295 JUMPI PUSH1 0x0 DUP5 ISZERO PUSH3 0x27C JUMPI POP DUP6 DUP4 ADD MLOAD JUMPDEST PUSH1 0x0 NOT PUSH1 0x3 DUP7 SWAP1 SHL SHR NOT AND PUSH1 0x1 DUP6 SWAP1 SHL OR DUP6 SSTORE PUSH3 0x220 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F NOT DUP7 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH3 0x2C6 JUMPI DUP9 DUP7 ADD MLOAD DUP3 SSTORE SWAP5 DUP5 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 DUP5 ADD PUSH3 0x2A5 JUMP JUMPDEST POP DUP6 DUP3 LT ISZERO PUSH3 0x2E5 JUMPI DUP8 DUP6 ADD MLOAD PUSH1 0x0 NOT PUSH1 0x3 DUP9 SWAP1 SHL PUSH1 0xF8 AND SHR NOT AND DUP2 SSTORE JUMPDEST POP POP POP POP POP PUSH1 0x1 SWAP1 DUP2 SHL ADD SWAP1 SSTORE POP JUMP JUMPDEST PUSH2 0xBCB DUP1 PUSH3 0x305 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xEA JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7A1395AA GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xA9059CBB GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x1EB JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x1FE JUMPI DUP1 PUSH4 0xE30443BC EQ PUSH2 0x237 JUMPI DUP1 PUSH4 0xF785EF72 EQ PUSH2 0x24A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x7A1395AA EQ PUSH2 0x1AA JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x1D0 JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x1D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0xC8 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x142 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x155 JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x16E JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x181 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xEF JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x10D JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x130 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF7 PUSH2 0x257 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x104 SWAP2 SWAP1 PUSH2 0xA00 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x120 PUSH2 0x11B CALLDATASIZE PUSH1 0x4 PUSH2 0xA6A JUMP JUMPDEST PUSH2 0x2E9 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x104 JUMP JUMPDEST PUSH1 0x2 SLOAD JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x104 JUMP JUMPDEST PUSH2 0x120 PUSH2 0x150 CALLDATASIZE PUSH1 0x4 PUSH2 0xA94 JUMP JUMPDEST PUSH2 0x303 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x104 JUMP JUMPDEST PUSH2 0x120 PUSH2 0x17C CALLDATASIZE PUSH1 0x4 PUSH2 0xA6A JUMP JUMPDEST PUSH2 0x327 JUMP JUMPDEST PUSH2 0x134 PUSH2 0x18F CALLDATASIZE PUSH1 0x4 PUSH2 0xAD0 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x1CE PUSH2 0x1B8 CALLDATASIZE PUSH1 0x4 PUSH2 0xAF2 JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST STOP JUMPDEST PUSH2 0xF7 PUSH2 0x366 JUMP JUMPDEST PUSH2 0x120 PUSH2 0x1E6 CALLDATASIZE PUSH1 0x4 PUSH2 0xA6A JUMP JUMPDEST PUSH2 0x375 JUMP JUMPDEST PUSH2 0x120 PUSH2 0x1F9 CALLDATASIZE PUSH1 0x4 PUSH2 0xA6A JUMP JUMPDEST PUSH2 0x424 JUMP JUMPDEST PUSH2 0x134 PUSH2 0x20C CALLDATASIZE PUSH1 0x4 PUSH2 0xB15 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x1CE PUSH2 0x245 CALLDATASIZE PUSH1 0x4 PUSH2 0xA6A JUMP JUMPDEST PUSH2 0x432 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH2 0x15C SWAP1 PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x3 DUP1 SLOAD PUSH2 0x266 SWAP1 PUSH2 0xB48 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x292 SWAP1 PUSH2 0xB48 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x2DF JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x2B4 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x2DF JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x2C2 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0x2F7 DUP2 DUP6 DUP6 PUSH2 0x486 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0x311 DUP6 DUP3 DUP6 PUSH2 0x5AA JUMP JUMPDEST PUSH2 0x31C DUP6 DUP6 DUP6 PUSH2 0x63C JUMP JUMPDEST POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 SWAP1 PUSH2 0x2F7 SWAP1 DUP3 SWAP1 DUP7 SWAP1 PUSH2 0x361 SWAP1 DUP8 SWAP1 PUSH2 0xB98 JUMP JUMPDEST PUSH2 0x486 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x4 DUP1 SLOAD PUSH2 0x266 SWAP1 PUSH2 0xB48 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 SWAP1 DUP4 DUP2 LT ISZERO PUSH2 0x417 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A2064656372656173656420616C6C6F77616E63652062656C6F77 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x207A65726F000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x31C DUP3 DUP7 DUP7 DUP5 SUB PUSH2 0x486 JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0x2F7 DUP2 DUP6 DUP6 PUSH2 0x63C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 DUP2 LT ISZERO PUSH2 0x46B JUMPI PUSH2 0x466 DUP4 PUSH2 0x461 DUP4 DUP6 PUSH2 0xBAB JUMP JUMPDEST PUSH2 0x80F JUMP JUMPDEST POP POP POP JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x466 JUMPI PUSH2 0x466 DUP4 PUSH2 0x481 DUP5 DUP5 PUSH2 0xBAB JUMP JUMPDEST PUSH2 0x8CE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x4E8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x45524332303A20617070726F76652066726F6D20746865207A65726F20616464 PUSH1 0x44 DUP3 ADD MSTORE PUSH4 0x72657373 PUSH1 0xE0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x40E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x549 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20617070726F766520746F20746865207A65726F206164647265 PUSH1 0x44 DUP3 ADD MSTORE PUSH2 0x7373 PUSH1 0xF0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x40E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE SWAP1 MLOAD DUP5 DUP2 MSTORE PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP7 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0x0 NOT DUP2 EQ PUSH2 0x636 JUMPI DUP2 DUP2 LT ISZERO PUSH2 0x629 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E73756666696369656E7420616C6C6F77616E6365000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x40E JUMP JUMPDEST PUSH2 0x636 DUP5 DUP5 DUP5 DUP5 SUB PUSH2 0x486 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x6B8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E736665722066726F6D20746865207A65726F206164 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6472657373000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x40E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x71A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x23 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E7366657220746F20746865207A65726F2061646472 PUSH1 0x44 DUP3 ADD MSTORE PUSH3 0x657373 PUSH1 0xE8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x40E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 DUP2 LT ISZERO PUSH2 0x7A9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E7366657220616D6F756E7420657863656564732062 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x616C616E63650000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x40E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP8 SUB SWAP1 SSTORE SWAP4 DUP8 AND DUP1 DUP4 MSTORE SWAP2 DUP5 SWAP1 KECCAK256 DUP1 SLOAD DUP8 ADD SWAP1 SSTORE SWAP3 MLOAD DUP6 DUP2 MSTORE SWAP1 SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH2 0x636 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x865 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A206D696E7420746F20746865207A65726F206164647265737300 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x40E JUMP JUMPDEST DUP1 PUSH1 0x2 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x877 SWAP2 SWAP1 PUSH2 0xB98 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD DUP7 ADD SWAP1 SSTORE MLOAD DUP5 DUP2 MSTORE PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x92E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A206275726E2066726F6D20746865207A65726F20616464726573 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x73 PUSH1 0xF8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x40E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 DUP2 LT ISZERO PUSH2 0x9A2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A206275726E20616D6F756E7420657863656564732062616C616E PUSH1 0x44 DUP3 ADD MSTORE PUSH2 0x6365 PUSH1 0xF0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x40E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP7 DUP7 SUB SWAP1 SSTORE PUSH1 0x2 DUP1 SLOAD DUP8 SWAP1 SUB SWAP1 SSTORE MLOAD DUP6 DUP2 MSTORE SWAP2 SWAP3 SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xA2D JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0xA11 JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x40 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x40 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP3 POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xA65 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xA7D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA86 DUP4 PUSH2 0xA4E JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xAA9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xAB2 DUP5 PUSH2 0xA4E JUMP JUMPDEST SWAP3 POP PUSH2 0xAC0 PUSH1 0x20 DUP6 ADD PUSH2 0xA4E JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xAE2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xAEB DUP3 PUSH2 0xA4E JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xB04 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0xAEB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xB28 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB31 DUP4 PUSH2 0xA4E JUMP JUMPDEST SWAP2 POP PUSH2 0xB3F PUSH1 0x20 DUP5 ADD PUSH2 0xA4E JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0xB5C JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0xB7C JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x2FD JUMPI PUSH2 0x2FD PUSH2 0xB82 JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x2FD JUMPI PUSH2 0x2FD PUSH2 0xB82 JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"293:694:59:-:0;;;327:27;;;-1:-1:-1;;327:27:59;352:2;327:27;;;361:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;423:5;430:7;2046:5:26;:13;423:5:59;2046::26;:13;:::i;:::-;-1:-1:-1;2069:7:26;:17;2079:7;2069;:17;:::i;:::-;;1980:113;;361:80:59;;293:694;;14:127:92;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:840;200:5;253:3;246:4;238:6;234:17;230:27;220:55;;271:1;268;261:12;220:55;294:13;;-1:-1:-1;;;;;356:10:92;;;353:36;;;369:18;;:::i;:::-;444:2;438:9;412:2;498:13;;-1:-1:-1;;494:22:92;;;518:2;490:31;486:40;474:53;;;542:18;;;562:22;;;539:46;536:72;;;588:18;;:::i;:::-;628:10;624:2;617:22;663:2;655:6;648:18;685:4;675:14;;730:3;725:2;720;712:6;708:15;704:24;701:33;698:53;;;747:1;744;737:12;698:53;769:1;760:10;;779:133;793:2;790:1;787:9;779:133;;;881:14;;;877:23;;871:30;850:14;;;846:23;;839:63;804:10;;;;779:133;;;954:1;932:15;;;928:24;;;921:35;;;;936:6;146:840;-1:-1:-1;;;;146:840:92:o;991:562::-;1090:6;1098;1151:2;1139:9;1130:7;1126:23;1122:32;1119:52;;;1167:1;1164;1157:12;1119:52;1194:16;;-1:-1:-1;;;;;1259:14:92;;;1256:34;;;1286:1;1283;1276:12;1256:34;1309:61;1362:7;1353:6;1342:9;1338:22;1309:61;:::i;:::-;1299:71;;1416:2;1405:9;1401:18;1395:25;1379:41;;1445:2;1435:8;1432:16;1429:36;;;1461:1;1458;1451:12;1429:36;;1484:63;1539:7;1528:8;1517:9;1513:24;1484:63;:::i;:::-;1474:73;;;991:562;;;;;:::o;1558:380::-;1637:1;1633:12;;;;1680;;;1701:61;;1755:4;1747:6;1743:17;1733:27;;1701:61;1808:2;1800:6;1797:14;1777:18;1774:38;1771:161;;1854:10;1849:3;1845:20;1842:1;1835:31;1889:4;1886:1;1879:15;1917:4;1914:1;1907:15;1771:161;;1558:380;;;:::o;2069:545::-;2171:2;2166:3;2163:11;2160:448;;;2207:1;2232:5;2228:2;2221:17;2277:4;2273:2;2263:19;2347:2;2335:10;2331:19;2328:1;2324:27;2318:4;2314:38;2383:4;2371:10;2368:20;2365:47;;;-1:-1:-1;2406:4:92;2365:47;2461:2;2456:3;2452:12;2449:1;2445:20;2439:4;2435:31;2425:41;;2516:82;2534:2;2527:5;2524:13;2516:82;;;2579:17;;;2560:1;2549:13;2516:82;;;2520:3;;;2160:448;2069:545;;;:::o;2790:1352::-;2910:10;;-1:-1:-1;;;;;2932:30:92;;2929:56;;;2965:18;;:::i;:::-;2994:97;3084:6;3044:38;3076:4;3070:11;3044:38;:::i;:::-;3038:4;2994:97;:::i;:::-;3146:4;;3210:2;3199:14;;3227:1;3222:663;;;;3929:1;3946:6;3943:89;;;-1:-1:-1;3998:19:92;;;3992:26;3943:89;-1:-1:-1;;2747:1:92;2743:11;;;2739:24;2735:29;2725:40;2771:1;2767:11;;;2722:57;4045:81;;3192:944;;3222:663;2016:1;2009:14;;;2053:4;2040:18;;-1:-1:-1;;3258:20:92;;;3376:236;3390:7;3387:1;3384:14;3376:236;;;3479:19;;;3473:26;3458:42;;3571:27;;;;3539:1;3527:14;;;;3406:19;;3376:236;;;3380:3;3640:6;3631:7;3628:19;3625:201;;;3701:19;;;3695:26;-1:-1:-1;;3784:1:92;3780:14;;;3796:3;3776:24;3772:37;3768:42;3753:58;3738:74;;3625:201;-1:-1:-1;;;;;3872:1:92;3856:14;;;3852:22;3839:36;;-1:-1:-1;2790:1352:92:o;:::-;293:694:59;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_afterTokenTransfer_7742":{"entryPoint":null,"id":7742,"parameterSlots":3,"returnSlots":0},"@_approve_7677":{"entryPoint":1158,"id":7677,"parameterSlots":3,"returnSlots":0},"@_beforeTokenTransfer_7731":{"entryPoint":null,"id":7731,"parameterSlots":3,"returnSlots":0},"@_burn_7632":{"entryPoint":2254,"id":7632,"parameterSlots":2,"returnSlots":0},"@_mint_7560":{"entryPoint":2063,"id":7560,"parameterSlots":2,"returnSlots":0},"@_msgSender_9276":{"entryPoint":null,"id":9276,"parameterSlots":0,"returnSlots":1},"@_spendAllowance_7720":{"entryPoint":1450,"id":7720,"parameterSlots":3,"returnSlots":0},"@_transfer_7503":{"entryPoint":1596,"id":7503,"parameterSlots":3,"returnSlots":0},"@allowance_7298":{"entryPoint":null,"id":7298,"parameterSlots":2,"returnSlots":1},"@approve_7323":{"entryPoint":745,"id":7323,"parameterSlots":2,"returnSlots":1},"@balanceOf_7255":{"entryPoint":null,"id":7255,"parameterSlots":1,"returnSlots":1},"@decimals_12721":{"entryPoint":null,"id":12721,"parameterSlots":0,"returnSlots":1},"@decimals__12690":{"entryPoint":null,"id":12690,"parameterSlots":0,"returnSlots":0},"@decreaseAllowance_7426":{"entryPoint":885,"id":7426,"parameterSlots":2,"returnSlots":1},"@increaseAllowance_7385":{"entryPoint":807,"id":7385,"parameterSlots":2,"returnSlots":1},"@name_7211":{"entryPoint":599,"id":7211,"parameterSlots":0,"returnSlots":1},"@setBalance_12759":{"entryPoint":1074,"id":12759,"parameterSlots":2,"returnSlots":0},"@setDecimals_12712":{"entryPoint":null,"id":12712,"parameterSlots":1,"returnSlots":0},"@symbol_7221":{"entryPoint":870,"id":7221,"parameterSlots":0,"returnSlots":1},"@totalSupply_7241":{"entryPoint":null,"id":7241,"parameterSlots":0,"returnSlots":1},"@transferFrom_7356":{"entryPoint":771,"id":7356,"parameterSlots":3,"returnSlots":1},"@transfer_7280":{"entryPoint":1060,"id":7280,"parameterSlots":2,"returnSlots":1},"abi_decode_address":{"entryPoint":2638,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_tuple_t_address":{"entryPoint":2768,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_address":{"entryPoint":2837,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_addresst_uint256":{"entryPoint":2708,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_addresst_uint256":{"entryPoint":2666,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_uint8":{"entryPoint":2802,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":2560,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_149b126e7125232b4200af45303d04fba8b74653b1a295a6a561a528c33fefdd__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_3b6607e091cba9325f958656d2b5e0622ab7dc0eac71a26ac788cb25bc19f4fe__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"checked_add_t_uint256":{"entryPoint":2968,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_t_uint256":{"entryPoint":2987,"id":null,"parameterSlots":2,"returnSlots":1},"extract_byte_array_length":{"entryPoint":2888,"id":null,"parameterSlots":1,"returnSlots":1},"panic_error_0x11":{"entryPoint":2946,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:7384:92","statements":[{"nodeType":"YulBlock","src":"6:3:92","statements":[]},{"body":{"nodeType":"YulBlock","src":"135:427:92","statements":[{"nodeType":"YulVariableDeclaration","src":"145:12:92","value":{"kind":"number","nodeType":"YulLiteral","src":"155:2:92","type":"","value":"32"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"149:2:92","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"173:9:92"},{"name":"_1","nodeType":"YulIdentifier","src":"184:2:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"166:6:92"},"nodeType":"YulFunctionCall","src":"166:21:92"},"nodeType":"YulExpressionStatement","src":"166:21:92"},{"nodeType":"YulVariableDeclaration","src":"196:27:92","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"216:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"210:5:92"},"nodeType":"YulFunctionCall","src":"210:13:92"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"200:6:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"243:9:92"},{"name":"_1","nodeType":"YulIdentifier","src":"254:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"239:3:92"},"nodeType":"YulFunctionCall","src":"239:18:92"},{"name":"length","nodeType":"YulIdentifier","src":"259:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"232:6:92"},"nodeType":"YulFunctionCall","src":"232:34:92"},"nodeType":"YulExpressionStatement","src":"232:34:92"},{"nodeType":"YulVariableDeclaration","src":"275:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"284:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"279:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"344:90:92","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"373:9:92"},{"name":"i","nodeType":"YulIdentifier","src":"384:1:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"369:3:92"},"nodeType":"YulFunctionCall","src":"369:17:92"},{"kind":"number","nodeType":"YulLiteral","src":"388:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"365:3:92"},"nodeType":"YulFunctionCall","src":"365:26:92"},{"arguments":[{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"407:6:92"},{"name":"i","nodeType":"YulIdentifier","src":"415:1:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"403:3:92"},"nodeType":"YulFunctionCall","src":"403:14:92"},{"name":"_1","nodeType":"YulIdentifier","src":"419:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"399:3:92"},"nodeType":"YulFunctionCall","src":"399:23:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"393:5:92"},"nodeType":"YulFunctionCall","src":"393:30:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"358:6:92"},"nodeType":"YulFunctionCall","src":"358:66:92"},"nodeType":"YulExpressionStatement","src":"358:66:92"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"305:1:92"},{"name":"length","nodeType":"YulIdentifier","src":"308:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"302:2:92"},"nodeType":"YulFunctionCall","src":"302:13:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"316:19:92","statements":[{"nodeType":"YulAssignment","src":"318:15:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"327:1:92"},{"name":"_1","nodeType":"YulIdentifier","src":"330:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"323:3:92"},"nodeType":"YulFunctionCall","src":"323:10:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"318:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"298:3:92","statements":[]},"src":"294:140:92"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"458:9:92"},{"name":"length","nodeType":"YulIdentifier","src":"469:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"454:3:92"},"nodeType":"YulFunctionCall","src":"454:22:92"},{"kind":"number","nodeType":"YulLiteral","src":"478:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"450:3:92"},"nodeType":"YulFunctionCall","src":"450:31:92"},{"kind":"number","nodeType":"YulLiteral","src":"483:1:92","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"443:6:92"},"nodeType":"YulFunctionCall","src":"443:42:92"},"nodeType":"YulExpressionStatement","src":"443:42:92"},{"nodeType":"YulAssignment","src":"494:62:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"510:9:92"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"529:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"537:2:92","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"525:3:92"},"nodeType":"YulFunctionCall","src":"525:15:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"546:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"542:3:92"},"nodeType":"YulFunctionCall","src":"542:7:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"521:3:92"},"nodeType":"YulFunctionCall","src":"521:29:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"506:3:92"},"nodeType":"YulFunctionCall","src":"506:45:92"},{"kind":"number","nodeType":"YulLiteral","src":"553:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"502:3:92"},"nodeType":"YulFunctionCall","src":"502:54:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"494:4:92"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"104:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"115:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"126:4:92","type":""}],"src":"14:548:92"},{"body":{"nodeType":"YulBlock","src":"616:147:92","statements":[{"nodeType":"YulAssignment","src":"626:29:92","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"648:6:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"635:12:92"},"nodeType":"YulFunctionCall","src":"635:20:92"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"626:5:92"}]},{"body":{"nodeType":"YulBlock","src":"741:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"750:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"753:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"743:6:92"},"nodeType":"YulFunctionCall","src":"743:12:92"},"nodeType":"YulExpressionStatement","src":"743:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"677:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"688:5:92"},{"kind":"number","nodeType":"YulLiteral","src":"695:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"684:3:92"},"nodeType":"YulFunctionCall","src":"684:54:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"674:2:92"},"nodeType":"YulFunctionCall","src":"674:65:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"667:6:92"},"nodeType":"YulFunctionCall","src":"667:73:92"},"nodeType":"YulIf","src":"664:93:92"}]},"name":"abi_decode_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"595:6:92","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"606:5:92","type":""}],"src":"567:196:92"},{"body":{"nodeType":"YulBlock","src":"855:167:92","statements":[{"body":{"nodeType":"YulBlock","src":"901:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"910:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"913:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"903:6:92"},"nodeType":"YulFunctionCall","src":"903:12:92"},"nodeType":"YulExpressionStatement","src":"903:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"876:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"885:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"872:3:92"},"nodeType":"YulFunctionCall","src":"872:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"897:2:92","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"868:3:92"},"nodeType":"YulFunctionCall","src":"868:32:92"},"nodeType":"YulIf","src":"865:52:92"},{"nodeType":"YulAssignment","src":"926:39:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"955:9:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"936:18:92"},"nodeType":"YulFunctionCall","src":"936:29:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"926:6:92"}]},{"nodeType":"YulAssignment","src":"974:42:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1001:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1012:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"997:3:92"},"nodeType":"YulFunctionCall","src":"997:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"984:12:92"},"nodeType":"YulFunctionCall","src":"984:32:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"974:6:92"}]}]},"name":"abi_decode_tuple_t_addresst_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"813:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"824:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"836:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"844:6:92","type":""}],"src":"768:254:92"},{"body":{"nodeType":"YulBlock","src":"1122:92:92","statements":[{"nodeType":"YulAssignment","src":"1132:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1144:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1155:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1140:3:92"},"nodeType":"YulFunctionCall","src":"1140:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1132:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1174:9:92"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1199:6:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1192:6:92"},"nodeType":"YulFunctionCall","src":"1192:14:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1185:6:92"},"nodeType":"YulFunctionCall","src":"1185:22:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1167:6:92"},"nodeType":"YulFunctionCall","src":"1167:41:92"},"nodeType":"YulExpressionStatement","src":"1167:41:92"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1091:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1102:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1113:4:92","type":""}],"src":"1027:187:92"},{"body":{"nodeType":"YulBlock","src":"1320:76:92","statements":[{"nodeType":"YulAssignment","src":"1330:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1342:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1353:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1338:3:92"},"nodeType":"YulFunctionCall","src":"1338:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1330:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1372:9:92"},{"name":"value0","nodeType":"YulIdentifier","src":"1383:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1365:6:92"},"nodeType":"YulFunctionCall","src":"1365:25:92"},"nodeType":"YulExpressionStatement","src":"1365:25:92"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1289:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1300:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1311:4:92","type":""}],"src":"1219:177:92"},{"body":{"nodeType":"YulBlock","src":"1505:224:92","statements":[{"body":{"nodeType":"YulBlock","src":"1551:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1560:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1563:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1553:6:92"},"nodeType":"YulFunctionCall","src":"1553:12:92"},"nodeType":"YulExpressionStatement","src":"1553:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1526:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"1535:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1522:3:92"},"nodeType":"YulFunctionCall","src":"1522:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"1547:2:92","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1518:3:92"},"nodeType":"YulFunctionCall","src":"1518:32:92"},"nodeType":"YulIf","src":"1515:52:92"},{"nodeType":"YulAssignment","src":"1576:39:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1605:9:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"1586:18:92"},"nodeType":"YulFunctionCall","src":"1586:29:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1576:6:92"}]},{"nodeType":"YulAssignment","src":"1624:48:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1657:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1668:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1653:3:92"},"nodeType":"YulFunctionCall","src":"1653:18:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"1634:18:92"},"nodeType":"YulFunctionCall","src":"1634:38:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1624:6:92"}]},{"nodeType":"YulAssignment","src":"1681:42:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1708:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1719:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1704:3:92"},"nodeType":"YulFunctionCall","src":"1704:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1691:12:92"},"nodeType":"YulFunctionCall","src":"1691:32:92"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"1681:6:92"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1455:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1466:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1478:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1486:6:92","type":""},{"name":"value2","nodeType":"YulTypedName","src":"1494:6:92","type":""}],"src":"1401:328:92"},{"body":{"nodeType":"YulBlock","src":"1831:87:92","statements":[{"nodeType":"YulAssignment","src":"1841:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1853:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1864:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1849:3:92"},"nodeType":"YulFunctionCall","src":"1849:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1841:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1883:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1898:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"1906:4:92","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1894:3:92"},"nodeType":"YulFunctionCall","src":"1894:17:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1876:6:92"},"nodeType":"YulFunctionCall","src":"1876:36:92"},"nodeType":"YulExpressionStatement","src":"1876:36:92"}]},"name":"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1800:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1811:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1822:4:92","type":""}],"src":"1734:184:92"},{"body":{"nodeType":"YulBlock","src":"1993:116:92","statements":[{"body":{"nodeType":"YulBlock","src":"2039:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2048:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2051:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2041:6:92"},"nodeType":"YulFunctionCall","src":"2041:12:92"},"nodeType":"YulExpressionStatement","src":"2041:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2014:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"2023:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2010:3:92"},"nodeType":"YulFunctionCall","src":"2010:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"2035:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2006:3:92"},"nodeType":"YulFunctionCall","src":"2006:32:92"},"nodeType":"YulIf","src":"2003:52:92"},{"nodeType":"YulAssignment","src":"2064:39:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2093:9:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"2074:18:92"},"nodeType":"YulFunctionCall","src":"2074:29:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2064:6:92"}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1959:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1970:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1982:6:92","type":""}],"src":"1923:186:92"},{"body":{"nodeType":"YulBlock","src":"2182:201:92","statements":[{"body":{"nodeType":"YulBlock","src":"2228:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2237:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2240:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2230:6:92"},"nodeType":"YulFunctionCall","src":"2230:12:92"},"nodeType":"YulExpressionStatement","src":"2230:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2203:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"2212:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2199:3:92"},"nodeType":"YulFunctionCall","src":"2199:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"2224:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2195:3:92"},"nodeType":"YulFunctionCall","src":"2195:32:92"},"nodeType":"YulIf","src":"2192:52:92"},{"nodeType":"YulVariableDeclaration","src":"2253:36:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2279:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2266:12:92"},"nodeType":"YulFunctionCall","src":"2266:23:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"2257:5:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"2337:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2346:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2349:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2339:6:92"},"nodeType":"YulFunctionCall","src":"2339:12:92"},"nodeType":"YulExpressionStatement","src":"2339:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2311:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2322:5:92"},{"kind":"number","nodeType":"YulLiteral","src":"2329:4:92","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2318:3:92"},"nodeType":"YulFunctionCall","src":"2318:16:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"2308:2:92"},"nodeType":"YulFunctionCall","src":"2308:27:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2301:6:92"},"nodeType":"YulFunctionCall","src":"2301:35:92"},"nodeType":"YulIf","src":"2298:55:92"},{"nodeType":"YulAssignment","src":"2362:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"2372:5:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2362:6:92"}]}]},"name":"abi_decode_tuple_t_uint8","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2148:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2159:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2171:6:92","type":""}],"src":"2114:269:92"},{"body":{"nodeType":"YulBlock","src":"2475:173:92","statements":[{"body":{"nodeType":"YulBlock","src":"2521:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2530:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2533:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2523:6:92"},"nodeType":"YulFunctionCall","src":"2523:12:92"},"nodeType":"YulExpressionStatement","src":"2523:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2496:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"2505:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2492:3:92"},"nodeType":"YulFunctionCall","src":"2492:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"2517:2:92","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2488:3:92"},"nodeType":"YulFunctionCall","src":"2488:32:92"},"nodeType":"YulIf","src":"2485:52:92"},{"nodeType":"YulAssignment","src":"2546:39:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2575:9:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"2556:18:92"},"nodeType":"YulFunctionCall","src":"2556:29:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2546:6:92"}]},{"nodeType":"YulAssignment","src":"2594:48:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2627:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2638:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2623:3:92"},"nodeType":"YulFunctionCall","src":"2623:18:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"2604:18:92"},"nodeType":"YulFunctionCall","src":"2604:38:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"2594:6:92"}]}]},"name":"abi_decode_tuple_t_addresst_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2433:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2444:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2456:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2464:6:92","type":""}],"src":"2388:260:92"},{"body":{"nodeType":"YulBlock","src":"2708:325:92","statements":[{"nodeType":"YulAssignment","src":"2718:22:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2732:1:92","type":"","value":"1"},{"name":"data","nodeType":"YulIdentifier","src":"2735:4:92"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"2728:3:92"},"nodeType":"YulFunctionCall","src":"2728:12:92"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"2718:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"2749:38:92","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"2779:4:92"},{"kind":"number","nodeType":"YulLiteral","src":"2785:1:92","type":"","value":"1"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2775:3:92"},"nodeType":"YulFunctionCall","src":"2775:12:92"},"variables":[{"name":"outOfPlaceEncoding","nodeType":"YulTypedName","src":"2753:18:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"2826:31:92","statements":[{"nodeType":"YulAssignment","src":"2828:27:92","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"2842:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"2850:4:92","type":"","value":"0x7f"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2838:3:92"},"nodeType":"YulFunctionCall","src":"2838:17:92"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"2828:6:92"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"2806:18:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2799:6:92"},"nodeType":"YulFunctionCall","src":"2799:26:92"},"nodeType":"YulIf","src":"2796:61:92"},{"body":{"nodeType":"YulBlock","src":"2916:111:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2937:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2944:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"2949:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2940:3:92"},"nodeType":"YulFunctionCall","src":"2940:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2930:6:92"},"nodeType":"YulFunctionCall","src":"2930:31:92"},"nodeType":"YulExpressionStatement","src":"2930:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2981:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"2984:4:92","type":"","value":"0x22"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2974:6:92"},"nodeType":"YulFunctionCall","src":"2974:15:92"},"nodeType":"YulExpressionStatement","src":"2974:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3009:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3012:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3002:6:92"},"nodeType":"YulFunctionCall","src":"3002:15:92"},"nodeType":"YulExpressionStatement","src":"3002:15:92"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"2872:18:92"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"2895:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"2903:2:92","type":"","value":"32"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2892:2:92"},"nodeType":"YulFunctionCall","src":"2892:14:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"2869:2:92"},"nodeType":"YulFunctionCall","src":"2869:38:92"},"nodeType":"YulIf","src":"2866:161:92"}]},"name":"extract_byte_array_length","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"2688:4:92","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"2697:6:92","type":""}],"src":"2653:380:92"},{"body":{"nodeType":"YulBlock","src":"3070:95:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3087:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3094:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"3099:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"3090:3:92"},"nodeType":"YulFunctionCall","src":"3090:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3080:6:92"},"nodeType":"YulFunctionCall","src":"3080:31:92"},"nodeType":"YulExpressionStatement","src":"3080:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3127:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"3130:4:92","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3120:6:92"},"nodeType":"YulFunctionCall","src":"3120:15:92"},"nodeType":"YulExpressionStatement","src":"3120:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3151:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3154:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3144:6:92"},"nodeType":"YulFunctionCall","src":"3144:15:92"},"nodeType":"YulExpressionStatement","src":"3144:15:92"}]},"name":"panic_error_0x11","nodeType":"YulFunctionDefinition","src":"3038:127:92"},{"body":{"nodeType":"YulBlock","src":"3218:77:92","statements":[{"nodeType":"YulAssignment","src":"3228:16:92","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"3239:1:92"},{"name":"y","nodeType":"YulIdentifier","src":"3242:1:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3235:3:92"},"nodeType":"YulFunctionCall","src":"3235:9:92"},"variableNames":[{"name":"sum","nodeType":"YulIdentifier","src":"3228:3:92"}]},{"body":{"nodeType":"YulBlock","src":"3267:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"3269:16:92"},"nodeType":"YulFunctionCall","src":"3269:18:92"},"nodeType":"YulExpressionStatement","src":"3269:18:92"}]},"condition":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"3259:1:92"},{"name":"sum","nodeType":"YulIdentifier","src":"3262:3:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3256:2:92"},"nodeType":"YulFunctionCall","src":"3256:10:92"},"nodeType":"YulIf","src":"3253:36:92"}]},"name":"checked_add_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"3201:1:92","type":""},{"name":"y","nodeType":"YulTypedName","src":"3204:1:92","type":""}],"returnVariables":[{"name":"sum","nodeType":"YulTypedName","src":"3210:3:92","type":""}],"src":"3170:125:92"},{"body":{"nodeType":"YulBlock","src":"3474:227:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3491:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3502:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3484:6:92"},"nodeType":"YulFunctionCall","src":"3484:21:92"},"nodeType":"YulExpressionStatement","src":"3484:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3525:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3536:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3521:3:92"},"nodeType":"YulFunctionCall","src":"3521:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"3541:2:92","type":"","value":"37"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3514:6:92"},"nodeType":"YulFunctionCall","src":"3514:30:92"},"nodeType":"YulExpressionStatement","src":"3514:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3564:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3575:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3560:3:92"},"nodeType":"YulFunctionCall","src":"3560:18:92"},{"hexValue":"45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77","kind":"string","nodeType":"YulLiteral","src":"3580:34:92","type":"","value":"ERC20: decreased allowance below"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3553:6:92"},"nodeType":"YulFunctionCall","src":"3553:62:92"},"nodeType":"YulExpressionStatement","src":"3553:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3635:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3646:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3631:3:92"},"nodeType":"YulFunctionCall","src":"3631:18:92"},{"hexValue":"207a65726f","kind":"string","nodeType":"YulLiteral","src":"3651:7:92","type":"","value":" zero"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3624:6:92"},"nodeType":"YulFunctionCall","src":"3624:35:92"},"nodeType":"YulExpressionStatement","src":"3624:35:92"},{"nodeType":"YulAssignment","src":"3668:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3680:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3691:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3676:3:92"},"nodeType":"YulFunctionCall","src":"3676:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3668:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3451:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3465:4:92","type":""}],"src":"3300:401:92"},{"body":{"nodeType":"YulBlock","src":"3755:79:92","statements":[{"nodeType":"YulAssignment","src":"3765:17:92","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"3777:1:92"},{"name":"y","nodeType":"YulIdentifier","src":"3780:1:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3773:3:92"},"nodeType":"YulFunctionCall","src":"3773:9:92"},"variableNames":[{"name":"diff","nodeType":"YulIdentifier","src":"3765:4:92"}]},{"body":{"nodeType":"YulBlock","src":"3806:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"3808:16:92"},"nodeType":"YulFunctionCall","src":"3808:18:92"},"nodeType":"YulExpressionStatement","src":"3808:18:92"}]},"condition":{"arguments":[{"name":"diff","nodeType":"YulIdentifier","src":"3797:4:92"},{"name":"x","nodeType":"YulIdentifier","src":"3803:1:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3794:2:92"},"nodeType":"YulFunctionCall","src":"3794:11:92"},"nodeType":"YulIf","src":"3791:37:92"}]},"name":"checked_sub_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"3737:1:92","type":""},{"name":"y","nodeType":"YulTypedName","src":"3740:1:92","type":""}],"returnVariables":[{"name":"diff","nodeType":"YulTypedName","src":"3746:4:92","type":""}],"src":"3706:128:92"},{"body":{"nodeType":"YulBlock","src":"4013:226:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4030:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4041:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4023:6:92"},"nodeType":"YulFunctionCall","src":"4023:21:92"},"nodeType":"YulExpressionStatement","src":"4023:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4064:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4075:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4060:3:92"},"nodeType":"YulFunctionCall","src":"4060:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"4080:2:92","type":"","value":"36"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4053:6:92"},"nodeType":"YulFunctionCall","src":"4053:30:92"},"nodeType":"YulExpressionStatement","src":"4053:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4103:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4114:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4099:3:92"},"nodeType":"YulFunctionCall","src":"4099:18:92"},{"hexValue":"45524332303a20617070726f76652066726f6d20746865207a65726f20616464","kind":"string","nodeType":"YulLiteral","src":"4119:34:92","type":"","value":"ERC20: approve from the zero add"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4092:6:92"},"nodeType":"YulFunctionCall","src":"4092:62:92"},"nodeType":"YulExpressionStatement","src":"4092:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4174:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4185:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4170:3:92"},"nodeType":"YulFunctionCall","src":"4170:18:92"},{"hexValue":"72657373","kind":"string","nodeType":"YulLiteral","src":"4190:6:92","type":"","value":"ress"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4163:6:92"},"nodeType":"YulFunctionCall","src":"4163:34:92"},"nodeType":"YulExpressionStatement","src":"4163:34:92"},{"nodeType":"YulAssignment","src":"4206:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4218:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4229:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4214:3:92"},"nodeType":"YulFunctionCall","src":"4214:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4206:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3990:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4004:4:92","type":""}],"src":"3839:400:92"},{"body":{"nodeType":"YulBlock","src":"4418:224:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4435:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4446:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4428:6:92"},"nodeType":"YulFunctionCall","src":"4428:21:92"},"nodeType":"YulExpressionStatement","src":"4428:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4469:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4480:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4465:3:92"},"nodeType":"YulFunctionCall","src":"4465:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"4485:2:92","type":"","value":"34"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4458:6:92"},"nodeType":"YulFunctionCall","src":"4458:30:92"},"nodeType":"YulExpressionStatement","src":"4458:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4508:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4519:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4504:3:92"},"nodeType":"YulFunctionCall","src":"4504:18:92"},{"hexValue":"45524332303a20617070726f766520746f20746865207a65726f206164647265","kind":"string","nodeType":"YulLiteral","src":"4524:34:92","type":"","value":"ERC20: approve to the zero addre"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4497:6:92"},"nodeType":"YulFunctionCall","src":"4497:62:92"},"nodeType":"YulExpressionStatement","src":"4497:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4579:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4590:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4575:3:92"},"nodeType":"YulFunctionCall","src":"4575:18:92"},{"hexValue":"7373","kind":"string","nodeType":"YulLiteral","src":"4595:4:92","type":"","value":"ss"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4568:6:92"},"nodeType":"YulFunctionCall","src":"4568:32:92"},"nodeType":"YulExpressionStatement","src":"4568:32:92"},{"nodeType":"YulAssignment","src":"4609:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4621:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4632:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4617:3:92"},"nodeType":"YulFunctionCall","src":"4617:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4609:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4395:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4409:4:92","type":""}],"src":"4244:398:92"},{"body":{"nodeType":"YulBlock","src":"4821:179:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4838:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4849:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4831:6:92"},"nodeType":"YulFunctionCall","src":"4831:21:92"},"nodeType":"YulExpressionStatement","src":"4831:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4872:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4883:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4868:3:92"},"nodeType":"YulFunctionCall","src":"4868:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"4888:2:92","type":"","value":"29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4861:6:92"},"nodeType":"YulFunctionCall","src":"4861:30:92"},"nodeType":"YulExpressionStatement","src":"4861:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4911:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4922:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4907:3:92"},"nodeType":"YulFunctionCall","src":"4907:18:92"},{"hexValue":"45524332303a20696e73756666696369656e7420616c6c6f77616e6365","kind":"string","nodeType":"YulLiteral","src":"4927:31:92","type":"","value":"ERC20: insufficient allowance"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4900:6:92"},"nodeType":"YulFunctionCall","src":"4900:59:92"},"nodeType":"YulExpressionStatement","src":"4900:59:92"},{"nodeType":"YulAssignment","src":"4968:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4980:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4991:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4976:3:92"},"nodeType":"YulFunctionCall","src":"4976:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4968:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_3b6607e091cba9325f958656d2b5e0622ab7dc0eac71a26ac788cb25bc19f4fe__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4798:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4812:4:92","type":""}],"src":"4647:353:92"},{"body":{"nodeType":"YulBlock","src":"5179:227:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5196:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5207:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5189:6:92"},"nodeType":"YulFunctionCall","src":"5189:21:92"},"nodeType":"YulExpressionStatement","src":"5189:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5230:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5241:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5226:3:92"},"nodeType":"YulFunctionCall","src":"5226:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"5246:2:92","type":"","value":"37"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5219:6:92"},"nodeType":"YulFunctionCall","src":"5219:30:92"},"nodeType":"YulExpressionStatement","src":"5219:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5269:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5280:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5265:3:92"},"nodeType":"YulFunctionCall","src":"5265:18:92"},{"hexValue":"45524332303a207472616e736665722066726f6d20746865207a65726f206164","kind":"string","nodeType":"YulLiteral","src":"5285:34:92","type":"","value":"ERC20: transfer from the zero ad"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5258:6:92"},"nodeType":"YulFunctionCall","src":"5258:62:92"},"nodeType":"YulExpressionStatement","src":"5258:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5340:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5351:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5336:3:92"},"nodeType":"YulFunctionCall","src":"5336:18:92"},{"hexValue":"6472657373","kind":"string","nodeType":"YulLiteral","src":"5356:7:92","type":"","value":"dress"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5329:6:92"},"nodeType":"YulFunctionCall","src":"5329:35:92"},"nodeType":"YulExpressionStatement","src":"5329:35:92"},{"nodeType":"YulAssignment","src":"5373:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5385:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5396:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5381:3:92"},"nodeType":"YulFunctionCall","src":"5381:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5373:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5156:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5170:4:92","type":""}],"src":"5005:401:92"},{"body":{"nodeType":"YulBlock","src":"5585:225:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5602:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5613:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5595:6:92"},"nodeType":"YulFunctionCall","src":"5595:21:92"},"nodeType":"YulExpressionStatement","src":"5595:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5636:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5647:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5632:3:92"},"nodeType":"YulFunctionCall","src":"5632:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"5652:2:92","type":"","value":"35"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5625:6:92"},"nodeType":"YulFunctionCall","src":"5625:30:92"},"nodeType":"YulExpressionStatement","src":"5625:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5675:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5686:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5671:3:92"},"nodeType":"YulFunctionCall","src":"5671:18:92"},{"hexValue":"45524332303a207472616e7366657220746f20746865207a65726f2061646472","kind":"string","nodeType":"YulLiteral","src":"5691:34:92","type":"","value":"ERC20: transfer to the zero addr"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5664:6:92"},"nodeType":"YulFunctionCall","src":"5664:62:92"},"nodeType":"YulExpressionStatement","src":"5664:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5746:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5757:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5742:3:92"},"nodeType":"YulFunctionCall","src":"5742:18:92"},{"hexValue":"657373","kind":"string","nodeType":"YulLiteral","src":"5762:5:92","type":"","value":"ess"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5735:6:92"},"nodeType":"YulFunctionCall","src":"5735:33:92"},"nodeType":"YulExpressionStatement","src":"5735:33:92"},{"nodeType":"YulAssignment","src":"5777:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5789:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5800:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5785:3:92"},"nodeType":"YulFunctionCall","src":"5785:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5777:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5562:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5576:4:92","type":""}],"src":"5411:399:92"},{"body":{"nodeType":"YulBlock","src":"5989:228:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6006:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6017:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5999:6:92"},"nodeType":"YulFunctionCall","src":"5999:21:92"},"nodeType":"YulExpressionStatement","src":"5999:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6040:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6051:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6036:3:92"},"nodeType":"YulFunctionCall","src":"6036:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"6056:2:92","type":"","value":"38"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6029:6:92"},"nodeType":"YulFunctionCall","src":"6029:30:92"},"nodeType":"YulExpressionStatement","src":"6029:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6079:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6090:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6075:3:92"},"nodeType":"YulFunctionCall","src":"6075:18:92"},{"hexValue":"45524332303a207472616e7366657220616d6f756e7420657863656564732062","kind":"string","nodeType":"YulLiteral","src":"6095:34:92","type":"","value":"ERC20: transfer amount exceeds b"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6068:6:92"},"nodeType":"YulFunctionCall","src":"6068:62:92"},"nodeType":"YulExpressionStatement","src":"6068:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6150:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6161:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6146:3:92"},"nodeType":"YulFunctionCall","src":"6146:18:92"},{"hexValue":"616c616e6365","kind":"string","nodeType":"YulLiteral","src":"6166:8:92","type":"","value":"alance"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6139:6:92"},"nodeType":"YulFunctionCall","src":"6139:36:92"},"nodeType":"YulExpressionStatement","src":"6139:36:92"},{"nodeType":"YulAssignment","src":"6184:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6196:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6207:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6192:3:92"},"nodeType":"YulFunctionCall","src":"6192:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6184:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5966:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5980:4:92","type":""}],"src":"5815:402:92"},{"body":{"nodeType":"YulBlock","src":"6396:181:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6413:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6424:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6406:6:92"},"nodeType":"YulFunctionCall","src":"6406:21:92"},"nodeType":"YulExpressionStatement","src":"6406:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6447:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6458:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6443:3:92"},"nodeType":"YulFunctionCall","src":"6443:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"6463:2:92","type":"","value":"31"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6436:6:92"},"nodeType":"YulFunctionCall","src":"6436:30:92"},"nodeType":"YulExpressionStatement","src":"6436:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6486:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6497:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6482:3:92"},"nodeType":"YulFunctionCall","src":"6482:18:92"},{"hexValue":"45524332303a206d696e7420746f20746865207a65726f2061646472657373","kind":"string","nodeType":"YulLiteral","src":"6502:33:92","type":"","value":"ERC20: mint to the zero address"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6475:6:92"},"nodeType":"YulFunctionCall","src":"6475:61:92"},"nodeType":"YulExpressionStatement","src":"6475:61:92"},{"nodeType":"YulAssignment","src":"6545:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6557:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6568:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6553:3:92"},"nodeType":"YulFunctionCall","src":"6553:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6545:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6373:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6387:4:92","type":""}],"src":"6222:355:92"},{"body":{"nodeType":"YulBlock","src":"6756:223:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6773:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6784:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6766:6:92"},"nodeType":"YulFunctionCall","src":"6766:21:92"},"nodeType":"YulExpressionStatement","src":"6766:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6807:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6818:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6803:3:92"},"nodeType":"YulFunctionCall","src":"6803:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"6823:2:92","type":"","value":"33"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6796:6:92"},"nodeType":"YulFunctionCall","src":"6796:30:92"},"nodeType":"YulExpressionStatement","src":"6796:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6846:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6857:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6842:3:92"},"nodeType":"YulFunctionCall","src":"6842:18:92"},{"hexValue":"45524332303a206275726e2066726f6d20746865207a65726f20616464726573","kind":"string","nodeType":"YulLiteral","src":"6862:34:92","type":"","value":"ERC20: burn from the zero addres"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6835:6:92"},"nodeType":"YulFunctionCall","src":"6835:62:92"},"nodeType":"YulExpressionStatement","src":"6835:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6917:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6928:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6913:3:92"},"nodeType":"YulFunctionCall","src":"6913:18:92"},{"hexValue":"73","kind":"string","nodeType":"YulLiteral","src":"6933:3:92","type":"","value":"s"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6906:6:92"},"nodeType":"YulFunctionCall","src":"6906:31:92"},"nodeType":"YulExpressionStatement","src":"6906:31:92"},{"nodeType":"YulAssignment","src":"6946:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6958:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6969:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6954:3:92"},"nodeType":"YulFunctionCall","src":"6954:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6946:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6733:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6747:4:92","type":""}],"src":"6582:397:92"},{"body":{"nodeType":"YulBlock","src":"7158:224:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7175:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7186:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7168:6:92"},"nodeType":"YulFunctionCall","src":"7168:21:92"},"nodeType":"YulExpressionStatement","src":"7168:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7209:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7220:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7205:3:92"},"nodeType":"YulFunctionCall","src":"7205:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"7225:2:92","type":"","value":"34"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7198:6:92"},"nodeType":"YulFunctionCall","src":"7198:30:92"},"nodeType":"YulExpressionStatement","src":"7198:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7248:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7259:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7244:3:92"},"nodeType":"YulFunctionCall","src":"7244:18:92"},{"hexValue":"45524332303a206275726e20616d6f756e7420657863656564732062616c616e","kind":"string","nodeType":"YulLiteral","src":"7264:34:92","type":"","value":"ERC20: burn amount exceeds balan"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7237:6:92"},"nodeType":"YulFunctionCall","src":"7237:62:92"},"nodeType":"YulExpressionStatement","src":"7237:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7319:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7330:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7315:3:92"},"nodeType":"YulFunctionCall","src":"7315:18:92"},{"hexValue":"6365","kind":"string","nodeType":"YulLiteral","src":"7335:4:92","type":"","value":"ce"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7308:6:92"},"nodeType":"YulFunctionCall","src":"7308:32:92"},"nodeType":"YulExpressionStatement","src":"7308:32:92"},{"nodeType":"YulAssignment","src":"7349:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7361:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7372:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7357:3:92"},"nodeType":"YulFunctionCall","src":"7357:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7349:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_149b126e7125232b4200af45303d04fba8b74653b1a295a6a561a528c33fefdd__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7135:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7149:4:92","type":""}],"src":"6984:398:92"}]},"contents":"{\n { }\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n let _1 := 32\n mstore(headStart, _1)\n let length := mload(value0)\n mstore(add(headStart, _1), length)\n let i := 0\n for { } lt(i, length) { i := add(i, _1) }\n {\n mstore(add(add(headStart, i), 64), mload(add(add(value0, i), _1)))\n }\n mstore(add(add(headStart, length), 64), 0)\n tail := add(add(headStart, and(add(length, 31), not(31))), 64)\n }\n function abi_decode_address(offset) -> value\n {\n value := calldataload(offset)\n if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := calldataload(add(headStart, 32))\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := abi_decode_address(add(headStart, 32))\n value2 := calldataload(add(headStart, 64))\n }\n function abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xff))\n }\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n }\n function abi_decode_tuple_t_uint8(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n if iszero(eq(value, and(value, 0xff))) { revert(0, 0) }\n value0 := value\n }\n function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := abi_decode_address(add(headStart, 32))\n }\n function extract_byte_array_length(data) -> length\n {\n length := shr(1, data)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n if eq(outOfPlaceEncoding, lt(length, 32))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n }\n function panic_error_0x11()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n function checked_add_t_uint256(x, y) -> sum\n {\n sum := add(x, y)\n if gt(x, sum) { panic_error_0x11() }\n }\n function abi_encode_tuple_t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 37)\n mstore(add(headStart, 64), \"ERC20: decreased allowance below\")\n mstore(add(headStart, 96), \" zero\")\n tail := add(headStart, 128)\n }\n function checked_sub_t_uint256(x, y) -> diff\n {\n diff := sub(x, y)\n if gt(diff, x) { panic_error_0x11() }\n }\n function abi_encode_tuple_t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 36)\n mstore(add(headStart, 64), \"ERC20: approve from the zero add\")\n mstore(add(headStart, 96), \"ress\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 34)\n mstore(add(headStart, 64), \"ERC20: approve to the zero addre\")\n mstore(add(headStart, 96), \"ss\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_3b6607e091cba9325f958656d2b5e0622ab7dc0eac71a26ac788cb25bc19f4fe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 29)\n mstore(add(headStart, 64), \"ERC20: insufficient allowance\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 37)\n mstore(add(headStart, 64), \"ERC20: transfer from the zero ad\")\n mstore(add(headStart, 96), \"dress\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 35)\n mstore(add(headStart, 64), \"ERC20: transfer to the zero addr\")\n mstore(add(headStart, 96), \"ess\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 38)\n mstore(add(headStart, 64), \"ERC20: transfer amount exceeds b\")\n mstore(add(headStart, 96), \"alance\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 31)\n mstore(add(headStart, 64), \"ERC20: mint to the zero address\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 33)\n mstore(add(headStart, 64), \"ERC20: burn from the zero addres\")\n mstore(add(headStart, 96), \"s\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_149b126e7125232b4200af45303d04fba8b74653b1a295a6a561a528c33fefdd__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 34)\n mstore(add(headStart, 64), \"ERC20: burn amount exceeds balan\")\n mstore(add(headStart, 96), \"ce\")\n tail := add(headStart, 128)\n }\n}","id":92,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100ea5760003560e01c80637a1395aa1161008c578063a9059cbb11610066578063a9059cbb146101eb578063dd62ed3e146101fe578063e30443bc14610237578063f785ef721461024a57600080fd5b80637a1395aa146101aa57806395d89b41146101d0578063a457c2d7146101d857600080fd5b806323b872dd116100c857806323b872dd14610142578063313ce56714610155578063395093511461016e57806370a082311461018157600080fd5b806306fdde03146100ef578063095ea7b31461010d57806318160ddd14610130575b600080fd5b6100f7610257565b6040516101049190610a00565b60405180910390f35b61012061011b366004610a6a565b6102e9565b6040519015158152602001610104565b6002545b604051908152602001610104565b610120610150366004610a94565b610303565b60055460ff165b60405160ff9091168152602001610104565b61012061017c366004610a6a565b610327565b61013461018f366004610ad0565b6001600160a01b031660009081526020819052604090205490565b6101ce6101b8366004610af2565b6005805460ff191660ff92909216919091179055565b005b6100f7610366565b6101206101e6366004610a6a565b610375565b6101206101f9366004610a6a565b610424565b61013461020c366004610b15565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6101ce610245366004610a6a565b610432565b60055461015c9060ff1681565b60606003805461026690610b48565b80601f016020809104026020016040519081016040528092919081815260200182805461029290610b48565b80156102df5780601f106102b4576101008083540402835291602001916102df565b820191906000526020600020905b8154815290600101906020018083116102c257829003601f168201915b5050505050905090565b6000336102f7818585610486565b60019150505b92915050565b6000336103118582856105aa565b61031c85858561063c565b506001949350505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091906102f79082908690610361908790610b98565b610486565b60606004805461026690610b48565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909190838110156104175760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b61031c8286868403610486565b6000336102f781858561063c565b6001600160a01b0382166000908152602081905260409020548181101561046b57610466836104618385610bab565b61080f565b505050565b8181111561046657610466836104818484610bab565b6108ce565b6001600160a01b0383166104e85760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161040e565b6001600160a01b0382166105495760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161040e565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03838116600090815260016020908152604080832093861683529290522054600019811461063657818110156106295760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161040e565b6106368484848403610486565b50505050565b6001600160a01b0383166106b85760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f6472657373000000000000000000000000000000000000000000000000000000606482015260840161040e565b6001600160a01b03821661071a5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161040e565b6001600160a01b038316600090815260208190526040902054818110156107a95760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e63650000000000000000000000000000000000000000000000000000606482015260840161040e565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610636565b6001600160a01b0382166108655760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161040e565b80600260008282546108779190610b98565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6001600160a01b03821661092e5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161040e565b6001600160a01b038216600090815260208190526040902054818110156109a25760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b606482015260840161040e565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b600060208083528351808285015260005b81811015610a2d57858101830151858201604001528201610a11565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610a6557600080fd5b919050565b60008060408385031215610a7d57600080fd5b610a8683610a4e565b946020939093013593505050565b600080600060608486031215610aa957600080fd5b610ab284610a4e565b9250610ac060208501610a4e565b9150604084013590509250925092565b600060208284031215610ae257600080fd5b610aeb82610a4e565b9392505050565b600060208284031215610b0457600080fd5b813560ff81168114610aeb57600080fd5b60008060408385031215610b2857600080fd5b610b3183610a4e565b9150610b3f60208401610a4e565b90509250929050565b600181811c90821680610b5c57607f821691505b602082108103610b7c57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156102fd576102fd610b82565b818103818111156102fd576102fd610b8256fea164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xEA JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7A1395AA GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xA9059CBB GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x1EB JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x1FE JUMPI DUP1 PUSH4 0xE30443BC EQ PUSH2 0x237 JUMPI DUP1 PUSH4 0xF785EF72 EQ PUSH2 0x24A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x7A1395AA EQ PUSH2 0x1AA JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x1D0 JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x1D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0xC8 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x142 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x155 JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x16E JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x181 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xEF JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x10D JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x130 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF7 PUSH2 0x257 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x104 SWAP2 SWAP1 PUSH2 0xA00 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x120 PUSH2 0x11B CALLDATASIZE PUSH1 0x4 PUSH2 0xA6A JUMP JUMPDEST PUSH2 0x2E9 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x104 JUMP JUMPDEST PUSH1 0x2 SLOAD JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x104 JUMP JUMPDEST PUSH2 0x120 PUSH2 0x150 CALLDATASIZE PUSH1 0x4 PUSH2 0xA94 JUMP JUMPDEST PUSH2 0x303 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x104 JUMP JUMPDEST PUSH2 0x120 PUSH2 0x17C CALLDATASIZE PUSH1 0x4 PUSH2 0xA6A JUMP JUMPDEST PUSH2 0x327 JUMP JUMPDEST PUSH2 0x134 PUSH2 0x18F CALLDATASIZE PUSH1 0x4 PUSH2 0xAD0 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x1CE PUSH2 0x1B8 CALLDATASIZE PUSH1 0x4 PUSH2 0xAF2 JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST STOP JUMPDEST PUSH2 0xF7 PUSH2 0x366 JUMP JUMPDEST PUSH2 0x120 PUSH2 0x1E6 CALLDATASIZE PUSH1 0x4 PUSH2 0xA6A JUMP JUMPDEST PUSH2 0x375 JUMP JUMPDEST PUSH2 0x120 PUSH2 0x1F9 CALLDATASIZE PUSH1 0x4 PUSH2 0xA6A JUMP JUMPDEST PUSH2 0x424 JUMP JUMPDEST PUSH2 0x134 PUSH2 0x20C CALLDATASIZE PUSH1 0x4 PUSH2 0xB15 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x1CE PUSH2 0x245 CALLDATASIZE PUSH1 0x4 PUSH2 0xA6A JUMP JUMPDEST PUSH2 0x432 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH2 0x15C SWAP1 PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x3 DUP1 SLOAD PUSH2 0x266 SWAP1 PUSH2 0xB48 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x292 SWAP1 PUSH2 0xB48 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x2DF JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x2B4 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x2DF JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x2C2 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0x2F7 DUP2 DUP6 DUP6 PUSH2 0x486 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0x311 DUP6 DUP3 DUP6 PUSH2 0x5AA JUMP JUMPDEST PUSH2 0x31C DUP6 DUP6 DUP6 PUSH2 0x63C JUMP JUMPDEST POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 SWAP1 PUSH2 0x2F7 SWAP1 DUP3 SWAP1 DUP7 SWAP1 PUSH2 0x361 SWAP1 DUP8 SWAP1 PUSH2 0xB98 JUMP JUMPDEST PUSH2 0x486 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x4 DUP1 SLOAD PUSH2 0x266 SWAP1 PUSH2 0xB48 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 SWAP1 DUP4 DUP2 LT ISZERO PUSH2 0x417 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A2064656372656173656420616C6C6F77616E63652062656C6F77 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x207A65726F000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x31C DUP3 DUP7 DUP7 DUP5 SUB PUSH2 0x486 JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0x2F7 DUP2 DUP6 DUP6 PUSH2 0x63C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 DUP2 LT ISZERO PUSH2 0x46B JUMPI PUSH2 0x466 DUP4 PUSH2 0x461 DUP4 DUP6 PUSH2 0xBAB JUMP JUMPDEST PUSH2 0x80F JUMP JUMPDEST POP POP POP JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x466 JUMPI PUSH2 0x466 DUP4 PUSH2 0x481 DUP5 DUP5 PUSH2 0xBAB JUMP JUMPDEST PUSH2 0x8CE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x4E8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x45524332303A20617070726F76652066726F6D20746865207A65726F20616464 PUSH1 0x44 DUP3 ADD MSTORE PUSH4 0x72657373 PUSH1 0xE0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x40E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x549 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20617070726F766520746F20746865207A65726F206164647265 PUSH1 0x44 DUP3 ADD MSTORE PUSH2 0x7373 PUSH1 0xF0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x40E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE SWAP1 MLOAD DUP5 DUP2 MSTORE PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP7 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0x0 NOT DUP2 EQ PUSH2 0x636 JUMPI DUP2 DUP2 LT ISZERO PUSH2 0x629 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E73756666696369656E7420616C6C6F77616E6365000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x40E JUMP JUMPDEST PUSH2 0x636 DUP5 DUP5 DUP5 DUP5 SUB PUSH2 0x486 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x6B8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E736665722066726F6D20746865207A65726F206164 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6472657373000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x40E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x71A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x23 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E7366657220746F20746865207A65726F2061646472 PUSH1 0x44 DUP3 ADD MSTORE PUSH3 0x657373 PUSH1 0xE8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x40E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 DUP2 LT ISZERO PUSH2 0x7A9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E7366657220616D6F756E7420657863656564732062 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x616C616E63650000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x40E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP8 SUB SWAP1 SSTORE SWAP4 DUP8 AND DUP1 DUP4 MSTORE SWAP2 DUP5 SWAP1 KECCAK256 DUP1 SLOAD DUP8 ADD SWAP1 SSTORE SWAP3 MLOAD DUP6 DUP2 MSTORE SWAP1 SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH2 0x636 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x865 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A206D696E7420746F20746865207A65726F206164647265737300 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x40E JUMP JUMPDEST DUP1 PUSH1 0x2 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x877 SWAP2 SWAP1 PUSH2 0xB98 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD DUP7 ADD SWAP1 SSTORE MLOAD DUP5 DUP2 MSTORE PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x92E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A206275726E2066726F6D20746865207A65726F20616464726573 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x73 PUSH1 0xF8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x40E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 DUP2 LT ISZERO PUSH2 0x9A2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A206275726E20616D6F756E7420657863656564732062616C616E PUSH1 0x44 DUP3 ADD MSTORE PUSH2 0x6365 PUSH1 0xF0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x40E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP7 DUP7 SUB SWAP1 SSTORE PUSH1 0x2 DUP1 SLOAD DUP8 SWAP1 SUB SWAP1 SSTORE MLOAD DUP6 DUP2 MSTORE SWAP2 SWAP3 SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xA2D JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0xA11 JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x40 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x40 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP3 POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xA65 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xA7D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA86 DUP4 PUSH2 0xA4E JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xAA9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xAB2 DUP5 PUSH2 0xA4E JUMP JUMPDEST SWAP3 POP PUSH2 0xAC0 PUSH1 0x20 DUP6 ADD PUSH2 0xA4E JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xAE2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xAEB DUP3 PUSH2 0xA4E JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xB04 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0xAEB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xB28 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB31 DUP4 PUSH2 0xA4E JUMP JUMPDEST SWAP2 POP PUSH2 0xB3F PUSH1 0x20 DUP5 ADD PUSH2 0xA4E JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0xB5C JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0xB7C JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x2FD JUMPI PUSH2 0x2FD PUSH2 0xB82 JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x2FD JUMPI PUSH2 0x2FD PUSH2 0xB82 JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"293:694:59:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2158:98:26;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4444:197;;;;;;:::i;:::-;;:::i;:::-;;;1192:14:92;;1185:22;1167:41;;1155:2;1140:18;4444:197:26;1027:187:92;3255:106:26;3342:12;;3255:106;;;1365:25:92;;;1353:2;1338:18;3255:106:26;1219:177:92;5203:256:26;;;;;;:::i;:::-;;:::i;536:90:59:-;610:9;;;;536:90;;;1906:4:92;1894:17;;;1876:36;;1864:2;1849:18;536:90:59;1734:184:92;5854:234:26;;;;;;:::i;:::-;;:::i;3419:125::-;;;;;;:::i;:::-;-1:-1:-1;;;;;3519:18:26;3493:7;3519:18;;;;;;;;;;;;3419:125;447:83:59;;;;;;:::i;:::-;502:9;:21;;-1:-1:-1;;502:21:59;;;;;;;;;;;;447:83;;;2369:102:26;;;:::i;6575:427::-;;;;;;:::i;:::-;;:::i;3740:189::-;;;;;;:::i;:::-;;:::i;3987:149::-;;;;;;:::i;:::-;-1:-1:-1;;;;;4102:18:26;;;4076:7;4102:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3987:149;739:246:59;;;;;;:::i;:::-;;:::i;327:27::-;;;;;;;;;2158:98:26;2212:13;2244:5;2237:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2158:98;:::o;4444:197::-;4527:4;734:10:34;4581:32:26;734:10:34;4597:7:26;4606:6;4581:8;:32::i;:::-;4630:4;4623:11;;;4444:197;;;;;:::o;5203:256::-;5300:4;734:10:34;5356:38:26;5372:4;734:10:34;5387:6:26;5356:15;:38::i;:::-;5404:27;5414:4;5420:2;5424:6;5404:9;:27::i;:::-;-1:-1:-1;5448:4:26;;5203:256;-1:-1:-1;;;;5203:256:26:o;5854:234::-;734:10:34;5942:4:26;4102:18;;;:11;:18;;;;;;;;-1:-1:-1;;;;;4102:27:26;;;;;;;;;;5942:4;;734:10:34;5996:64:26;;734:10:34;;4102:27:26;;6021:38;;6049:10;;6021:38;:::i;:::-;5996:8;:64::i;2369:102::-;2425:13;2457:7;2450:14;;;;;:::i;6575:427::-;734:10:34;6668:4:26;4102:18;;;:11;:18;;;;;;;;-1:-1:-1;;;;;4102:27:26;;;;;;;;;;6668:4;;734:10:34;6812:15:26;6792:16;:35;;6784:85;;;;-1:-1:-1;;;6784:85:26;;3502:2:92;6784:85:26;;;3484:21:92;3541:2;3521:18;;;3514:30;3580:34;3560:18;;;3553:62;3651:7;3631:18;;;3624:35;3676:19;;6784:85:26;;;;;;;;;6903:60;6912:5;6919:7;6947:15;6928:16;:34;6903:8;:60::i;3740:189::-;3819:4;734:10:34;3873:28:26;734:10:34;3890:2:26;3894:6;3873:9;:28::i;739:246:59:-;-1:-1:-1;;;;;3519:18:26;;804:11:59;3519:18:26;;;;;;;;;;;845:12:59;;;841:138;;;873:23;879:2;883:12;892:3;883:6;:12;:::i;:::-;873:5;:23::i;:::-;794:191;739:246;;:::o;841:138::-;923:6;917:3;:12;913:66;;;945:23;951:2;955:12;961:6;955:3;:12;:::i;:::-;945:5;:23::i;10457:340:26:-;-1:-1:-1;;;;;10558:19:26;;10550:68;;;;-1:-1:-1;;;10550:68:26;;4041:2:92;10550:68:26;;;4023:21:92;4080:2;4060:18;;;4053:30;4119:34;4099:18;;;4092:62;-1:-1:-1;;;4170:18:92;;;4163:34;4214:19;;10550:68:26;3839:400:92;10550:68:26;-1:-1:-1;;;;;10636:21:26;;10628:68;;;;-1:-1:-1;;;10628:68:26;;4446:2:92;10628:68:26;;;4428:21:92;4485:2;4465:18;;;4458:30;4524:34;4504:18;;;4497:62;-1:-1:-1;;;4575:18:92;;;4568:32;4617:19;;10628:68:26;4244:398:92;10628:68:26;-1:-1:-1;;;;;10707:18:26;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;10758:32;;1365:25:92;;;10758:32:26;;1338:18:92;10758:32:26;;;;;;;10457:340;;;:::o;11078:411::-;-1:-1:-1;;;;;4102:18:26;;;11178:24;4102:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;-1:-1:-1;;11244:37:26;;11240:243;;11325:6;11305:16;:26;;11297:68;;;;-1:-1:-1;;;11297:68:26;;4849:2:92;11297:68:26;;;4831:21:92;4888:2;4868:18;;;4861:30;4927:31;4907:18;;;4900:59;4976:18;;11297:68:26;4647:353:92;11297:68:26;11407:51;11416:5;11423:7;11451:6;11432:16;:25;11407:8;:51::i;:::-;11168:321;11078:411;;;:::o;7456:788::-;-1:-1:-1;;;;;7552:18:26;;7544:68;;;;-1:-1:-1;;;7544:68:26;;5207:2:92;7544:68:26;;;5189:21:92;5246:2;5226:18;;;5219:30;5285:34;5265:18;;;5258:62;5356:7;5336:18;;;5329:35;5381:19;;7544:68:26;5005:401:92;7544:68:26;-1:-1:-1;;;;;7630:16:26;;7622:64;;;;-1:-1:-1;;;7622:64:26;;5613:2:92;7622:64:26;;;5595:21:92;5652:2;5632:18;;;5625:30;5691:34;5671:18;;;5664:62;-1:-1:-1;;;5742:18:92;;;5735:33;5785:19;;7622:64:26;5411:399:92;7622:64:26;-1:-1:-1;;;;;7768:15:26;;7746:19;7768:15;;;;;;;;;;;7801:21;;;;7793:72;;;;-1:-1:-1;;;7793:72:26;;6017:2:92;7793:72:26;;;5999:21:92;6056:2;6036:18;;;6029:30;6095:34;6075:18;;;6068:62;6166:8;6146:18;;;6139:36;6192:19;;7793:72:26;5815:402:92;7793:72:26;-1:-1:-1;;;;;7899:15:26;;;:9;:15;;;;;;;;;;;7917:20;;;7899:38;;8114:13;;;;;;;;;;:23;;;;;;8163:26;;1365:25:92;;;8114:13:26;;8163:26;;1338:18:92;8163:26:26;;;;;;;8200:37;739:246:59;8520:535:26;-1:-1:-1;;;;;8603:21:26;;8595:65;;;;-1:-1:-1;;;8595:65:26;;6424:2:92;8595:65:26;;;6406:21:92;6463:2;6443:18;;;6436:30;6502:33;6482:18;;;6475:61;6553:18;;8595:65:26;6222:355:92;8595:65:26;8747:6;8731:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;8899:18:26;;:9;:18;;;;;;;;;;;:28;;;;;;8952:37;1365:25:92;;;8952:37:26;;1338:18:92;8952:37:26;;;;;;;8520:535;;:::o;9375:659::-;-1:-1:-1;;;;;9458:21:26;;9450:67;;;;-1:-1:-1;;;9450:67:26;;6784:2:92;9450:67:26;;;6766:21:92;6823:2;6803:18;;;6796:30;6862:34;6842:18;;;6835:62;-1:-1:-1;;;6913:18:92;;;6906:31;6954:19;;9450:67:26;6582:397:92;9450:67:26;-1:-1:-1;;;;;9613:18:26;;9588:22;9613:18;;;;;;;;;;;9649:24;;;;9641:71;;;;-1:-1:-1;;;9641:71:26;;7186:2:92;9641:71:26;;;7168:21:92;7225:2;7205:18;;;7198:30;7264:34;7244:18;;;7237:62;-1:-1:-1;;;7315:18:92;;;7308:32;7357:19;;9641:71:26;6984:398:92;9641:71:26;-1:-1:-1;;;;;9746:18:26;;:9;:18;;;;;;;;;;;9767:23;;;9746:44;;9883:12;:22;;;;;;;9931:37;1365:25:92;;;9746:9:26;;:18;9931:37;;1338:18:92;9931:37:26;;;;;;;794:191:59;739:246;;:::o;14:548:92:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:196::-;635:20;;-1:-1:-1;;;;;684:54:92;;674:65;;664:93;;753:1;750;743:12;664:93;567:196;;;:::o;768:254::-;836:6;844;897:2;885:9;876:7;872:23;868:32;865:52;;;913:1;910;903:12;865:52;936:29;955:9;936:29;:::i;:::-;926:39;1012:2;997:18;;;;984:32;;-1:-1:-1;;;768:254:92:o;1401:328::-;1478:6;1486;1494;1547:2;1535:9;1526:7;1522:23;1518:32;1515:52;;;1563:1;1560;1553:12;1515:52;1586:29;1605:9;1586:29;:::i;:::-;1576:39;;1634:38;1668:2;1657:9;1653:18;1634:38;:::i;:::-;1624:48;;1719:2;1708:9;1704:18;1691:32;1681:42;;1401:328;;;;;:::o;1923:186::-;1982:6;2035:2;2023:9;2014:7;2010:23;2006:32;2003:52;;;2051:1;2048;2041:12;2003:52;2074:29;2093:9;2074:29;:::i;:::-;2064:39;1923:186;-1:-1:-1;;;1923:186:92:o;2114:269::-;2171:6;2224:2;2212:9;2203:7;2199:23;2195:32;2192:52;;;2240:1;2237;2230:12;2192:52;2279:9;2266:23;2329:4;2322:5;2318:16;2311:5;2308:27;2298:55;;2349:1;2346;2339:12;2388:260;2456:6;2464;2517:2;2505:9;2496:7;2492:23;2488:32;2485:52;;;2533:1;2530;2523:12;2485:52;2556:29;2575:9;2556:29;:::i;:::-;2546:39;;2604:38;2638:2;2627:9;2623:18;2604:38;:::i;:::-;2594:48;;2388:260;;;;;:::o;2653:380::-;2732:1;2728:12;;;;2775;;;2796:61;;2850:4;2842:6;2838:17;2828:27;;2796:61;2903:2;2895:6;2892:14;2872:18;2869:38;2866:161;;2949:10;2944:3;2940:20;2937:1;2930:31;2984:4;2981:1;2974:15;3012:4;3009:1;3002:15;2866:161;;2653:380;;;:::o;3038:127::-;3099:10;3094:3;3090:20;3087:1;3080:31;3130:4;3127:1;3120:15;3154:4;3151:1;3144:15;3170:125;3235:9;;;3256:10;;;3253:36;;;3269:18;;:::i;3706:128::-;3773:9;;;3794:11;;;3791:37;;;3808:18;;:::i"},"gasEstimates":{"creation":{"codeDepositCost":"603800","executionCost":"infinite","totalCost":"infinite"},"external":{"allowance(address,address)":"infinite","approve(address,uint256)":"24651","balanceOf(address)":"2629","decimals()":"2341","decimals_()":"2401","decreaseAllowance(address,uint256)":"26967","increaseAllowance(address,uint256)":"infinite","name()":"infinite","setBalance(address,uint256)":"53237","setDecimals(uint8)":"24511","symbol()":"infinite","totalSupply()":"2349","transfer(address,uint256)":"51072","transferFrom(address,address,uint256)":"infinite"}},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","decimals_()":"f785ef72","decreaseAllowance(address,uint256)":"a457c2d7","increaseAllowance(address,uint256)":"39509351","name()":"06fdde03","setBalance(address,uint256)":"e30443bc","setDecimals(uint8)":"7a1395aa","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals_\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"setBalance\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"_decimals\",\"type\":\"uint8\"}],\"name\":\"setDecimals\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"DO NOT USE IN PRODUCTION!\",\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `amount`. - the caller must have allowance for ``from``'s tokens of at least `amount`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"A mock [ERC-20](https://eips.ethereum.org/EIPS/eip-20) token that can be minted and burned by everyone.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/mocks/token/ERC20Mock.sol\":\"ERC20Mock\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/ERC20.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC20.sol\\\";\\nimport \\\"./extensions/IERC20Metadata.sol\\\";\\nimport \\\"../../utils/Context.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC20} interface.\\n *\\n * This implementation is agnostic to the way tokens are created. This means\\n * that a supply mechanism has to be added in a derived contract using {_mint}.\\n * For a generic mechanism see {ERC20PresetMinterPauser}.\\n *\\n * TIP: For a detailed writeup see our guide\\n * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How\\n * to implement supply mechanisms].\\n *\\n * The default value of {decimals} is 18. To change this, you should override\\n * this function so it returns a different value.\\n *\\n * We have followed general OpenZeppelin Contracts guidelines: functions revert\\n * instead returning `false` on failure. This behavior is nonetheless\\n * conventional and does not conflict with the expectations of ERC20\\n * applications.\\n *\\n * Additionally, an {Approval} event is emitted on calls to {transferFrom}.\\n * This allows applications to reconstruct the allowance for all accounts just\\n * by listening to said events. Other implementations of the EIP may not emit\\n * these events, as it isn't required by the specification.\\n *\\n * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}\\n * functions have been added to mitigate the well-known issues around setting\\n * allowances. See {IERC20-approve}.\\n */\\ncontract ERC20 is Context, IERC20, IERC20Metadata {\\n mapping(address => uint256) private _balances;\\n\\n mapping(address => mapping(address => uint256)) private _allowances;\\n\\n uint256 private _totalSupply;\\n\\n string private _name;\\n string private _symbol;\\n\\n /**\\n * @dev Sets the values for {name} and {symbol}.\\n *\\n * All two of these values are immutable: they can only be set once during\\n * construction.\\n */\\n constructor(string memory name_, string memory symbol_) {\\n _name = name_;\\n _symbol = symbol_;\\n }\\n\\n /**\\n * @dev Returns the name of the token.\\n */\\n function name() public view virtual override returns (string memory) {\\n return _name;\\n }\\n\\n /**\\n * @dev Returns the symbol of the token, usually a shorter version of the\\n * name.\\n */\\n function symbol() public view virtual override returns (string memory) {\\n return _symbol;\\n }\\n\\n /**\\n * @dev Returns the number of decimals used to get its user representation.\\n * For example, if `decimals` equals `2`, a balance of `505` tokens should\\n * be displayed to a user as `5.05` (`505 / 10 ** 2`).\\n *\\n * Tokens usually opt for a value of 18, imitating the relationship between\\n * Ether and Wei. This is the default value returned by this function, unless\\n * it's overridden.\\n *\\n * NOTE: This information is only used for _display_ purposes: it in\\n * no way affects any of the arithmetic of the contract, including\\n * {IERC20-balanceOf} and {IERC20-transfer}.\\n */\\n function decimals() public view virtual override returns (uint8) {\\n return 18;\\n }\\n\\n /**\\n * @dev See {IERC20-totalSupply}.\\n */\\n function totalSupply() public view virtual override returns (uint256) {\\n return _totalSupply;\\n }\\n\\n /**\\n * @dev See {IERC20-balanceOf}.\\n */\\n function balanceOf(address account) public view virtual override returns (uint256) {\\n return _balances[account];\\n }\\n\\n /**\\n * @dev See {IERC20-transfer}.\\n *\\n * Requirements:\\n *\\n * - `to` cannot be the zero address.\\n * - the caller must have a balance of at least `amount`.\\n */\\n function transfer(address to, uint256 amount) public virtual override returns (bool) {\\n address owner = _msgSender();\\n _transfer(owner, to, amount);\\n return true;\\n }\\n\\n /**\\n * @dev See {IERC20-allowance}.\\n */\\n function allowance(address owner, address spender) public view virtual override returns (uint256) {\\n return _allowances[owner][spender];\\n }\\n\\n /**\\n * @dev See {IERC20-approve}.\\n *\\n * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on\\n * `transferFrom`. This is semantically equivalent to an infinite approval.\\n *\\n * Requirements:\\n *\\n * - `spender` cannot be the zero address.\\n */\\n function approve(address spender, uint256 amount) public virtual override returns (bool) {\\n address owner = _msgSender();\\n _approve(owner, spender, amount);\\n return true;\\n }\\n\\n /**\\n * @dev See {IERC20-transferFrom}.\\n *\\n * Emits an {Approval} event indicating the updated allowance. This is not\\n * required by the EIP. See the note at the beginning of {ERC20}.\\n *\\n * NOTE: Does not update the allowance if the current allowance\\n * is the maximum `uint256`.\\n *\\n * Requirements:\\n *\\n * - `from` and `to` cannot be the zero address.\\n * - `from` must have a balance of at least `amount`.\\n * - the caller must have allowance for ``from``'s tokens of at least\\n * `amount`.\\n */\\n function transferFrom(address from, address to, uint256 amount) public virtual override returns (bool) {\\n address spender = _msgSender();\\n _spendAllowance(from, spender, amount);\\n _transfer(from, to, amount);\\n return true;\\n }\\n\\n /**\\n * @dev Atomically increases the allowance granted to `spender` by the caller.\\n *\\n * This is an alternative to {approve} that can be used as a mitigation for\\n * problems described in {IERC20-approve}.\\n *\\n * Emits an {Approval} event indicating the updated allowance.\\n *\\n * Requirements:\\n *\\n * - `spender` cannot be the zero address.\\n */\\n function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {\\n address owner = _msgSender();\\n _approve(owner, spender, allowance(owner, spender) + addedValue);\\n return true;\\n }\\n\\n /**\\n * @dev Atomically decreases the allowance granted to `spender` by the caller.\\n *\\n * This is an alternative to {approve} that can be used as a mitigation for\\n * problems described in {IERC20-approve}.\\n *\\n * Emits an {Approval} event indicating the updated allowance.\\n *\\n * Requirements:\\n *\\n * - `spender` cannot be the zero address.\\n * - `spender` must have allowance for the caller of at least\\n * `subtractedValue`.\\n */\\n function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {\\n address owner = _msgSender();\\n uint256 currentAllowance = allowance(owner, spender);\\n require(currentAllowance >= subtractedValue, \\\"ERC20: decreased allowance below zero\\\");\\n unchecked {\\n _approve(owner, spender, currentAllowance - subtractedValue);\\n }\\n\\n return true;\\n }\\n\\n /**\\n * @dev Moves `amount` of tokens from `from` to `to`.\\n *\\n * This internal function is equivalent to {transfer}, and can be used to\\n * e.g. implement automatic token fees, slashing mechanisms, etc.\\n *\\n * Emits a {Transfer} event.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `to` cannot be the zero address.\\n * - `from` must have a balance of at least `amount`.\\n */\\n function _transfer(address from, address to, uint256 amount) internal virtual {\\n require(from != address(0), \\\"ERC20: transfer from the zero address\\\");\\n require(to != address(0), \\\"ERC20: transfer to the zero address\\\");\\n\\n _beforeTokenTransfer(from, to, amount);\\n\\n uint256 fromBalance = _balances[from];\\n require(fromBalance >= amount, \\\"ERC20: transfer amount exceeds balance\\\");\\n unchecked {\\n _balances[from] = fromBalance - amount;\\n // Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by\\n // decrementing then incrementing.\\n _balances[to] += amount;\\n }\\n\\n emit Transfer(from, to, amount);\\n\\n _afterTokenTransfer(from, to, amount);\\n }\\n\\n /** @dev Creates `amount` tokens and assigns them to `account`, increasing\\n * the total supply.\\n *\\n * Emits a {Transfer} event with `from` set to the zero address.\\n *\\n * Requirements:\\n *\\n * - `account` cannot be the zero address.\\n */\\n function _mint(address account, uint256 amount) internal virtual {\\n require(account != address(0), \\\"ERC20: mint to the zero address\\\");\\n\\n _beforeTokenTransfer(address(0), account, amount);\\n\\n _totalSupply += amount;\\n unchecked {\\n // Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above.\\n _balances[account] += amount;\\n }\\n emit Transfer(address(0), account, amount);\\n\\n _afterTokenTransfer(address(0), account, amount);\\n }\\n\\n /**\\n * @dev Destroys `amount` tokens from `account`, reducing the\\n * total supply.\\n *\\n * Emits a {Transfer} event with `to` set to the zero address.\\n *\\n * Requirements:\\n *\\n * - `account` cannot be the zero address.\\n * - `account` must have at least `amount` tokens.\\n */\\n function _burn(address account, uint256 amount) internal virtual {\\n require(account != address(0), \\\"ERC20: burn from the zero address\\\");\\n\\n _beforeTokenTransfer(account, address(0), amount);\\n\\n uint256 accountBalance = _balances[account];\\n require(accountBalance >= amount, \\\"ERC20: burn amount exceeds balance\\\");\\n unchecked {\\n _balances[account] = accountBalance - amount;\\n // Overflow not possible: amount <= accountBalance <= totalSupply.\\n _totalSupply -= amount;\\n }\\n\\n emit Transfer(account, address(0), amount);\\n\\n _afterTokenTransfer(account, address(0), amount);\\n }\\n\\n /**\\n * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.\\n *\\n * This internal function is equivalent to `approve`, and can be used to\\n * e.g. set automatic allowances for certain subsystems, etc.\\n *\\n * Emits an {Approval} event.\\n *\\n * Requirements:\\n *\\n * - `owner` cannot be the zero address.\\n * - `spender` cannot be the zero address.\\n */\\n function _approve(address owner, address spender, uint256 amount) internal virtual {\\n require(owner != address(0), \\\"ERC20: approve from the zero address\\\");\\n require(spender != address(0), \\\"ERC20: approve to the zero address\\\");\\n\\n _allowances[owner][spender] = amount;\\n emit Approval(owner, spender, amount);\\n }\\n\\n /**\\n * @dev Updates `owner` s allowance for `spender` based on spent `amount`.\\n *\\n * Does not update the allowance amount in case of infinite allowance.\\n * Revert if not enough allowance is available.\\n *\\n * Might emit an {Approval} event.\\n */\\n function _spendAllowance(address owner, address spender, uint256 amount) internal virtual {\\n uint256 currentAllowance = allowance(owner, spender);\\n if (currentAllowance != type(uint256).max) {\\n require(currentAllowance >= amount, \\\"ERC20: insufficient allowance\\\");\\n unchecked {\\n _approve(owner, spender, currentAllowance - amount);\\n }\\n }\\n }\\n\\n /**\\n * @dev Hook that is called before any transfer of tokens. This includes\\n * minting and burning.\\n *\\n * Calling conditions:\\n *\\n * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\\n * will be transferred to `to`.\\n * - when `from` is zero, `amount` tokens will be minted for `to`.\\n * - when `to` is zero, `amount` of ``from``'s tokens will be burned.\\n * - `from` and `to` are never both zero.\\n *\\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n */\\n function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual {}\\n\\n /**\\n * @dev Hook that is called after any transfer of tokens. This includes\\n * minting and burning.\\n *\\n * Calling conditions:\\n *\\n * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\\n * has been transferred to `to`.\\n * - when `from` is zero, `amount` tokens have been minted for `to`.\\n * - when `to` is zero, `amount` of ``from``'s tokens have been burned.\\n * - `from` and `to` are never both zero.\\n *\\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n */\\n function _afterTokenTransfer(address from, address to, uint256 amount) internal virtual {}\\n}\\n\",\"keccak256\":\"0xa56ca923f70c1748830700250b19c61b70db9a683516dc5e216694a50445d99c\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n /**\\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n * another (`to`).\\n *\\n * Note that `value` may be zero.\\n */\\n event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n /**\\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n * a call to {approve}. `value` is the new allowance.\\n */\\n event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n /**\\n * @dev Returns the amount of tokens in existence.\\n */\\n function totalSupply() external view returns (uint256);\\n\\n /**\\n * @dev Returns the amount of tokens owned by `account`.\\n */\\n function balanceOf(address account) external view returns (uint256);\\n\\n /**\\n * @dev Moves `amount` tokens from the caller's account to `to`.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transfer(address to, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Returns the remaining number of tokens that `spender` will be\\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n * zero by default.\\n *\\n * This value changes when {approve} or {transferFrom} are called.\\n */\\n function allowance(address owner, address spender) external view returns (uint256);\\n\\n /**\\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n * that someone may use both the old and the new allowance by unfortunate\\n * transaction ordering. One possible solution to mitigate this race\\n * condition is to first reduce the spender's allowance to 0 and set the\\n * desired value afterwards:\\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n *\\n * Emits an {Approval} event.\\n */\\n function approve(address spender, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Moves `amount` tokens from `from` to `to` using the\\n * allowance mechanism. `amount` is then deducted from the caller's\\n * allowance.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transferFrom(address from, address to, uint256 amount) external returns (bool);\\n}\\n\",\"keccak256\":\"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC20.sol\\\";\\n\\n/**\\n * @dev Interface for the optional metadata functions from the ERC20 standard.\\n *\\n * _Available since v4.1._\\n */\\ninterface IERC20Metadata is IERC20 {\\n /**\\n * @dev Returns the name of the token.\\n */\\n function name() external view returns (string memory);\\n\\n /**\\n * @dev Returns the symbol of the token.\\n */\\n function symbol() external view returns (string memory);\\n\\n /**\\n * @dev Returns the decimals places of the token.\\n */\\n function decimals() external view returns (uint8);\\n}\\n\",\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n function _contextSuffixLength() internal view virtual returns (uint256) {\\n return 0;\\n }\\n}\\n\",\"keccak256\":\"0xa92e4fa126feb6907daa0513ddd816b2eb91f30a808de54f63c17d0e162c3439\",\"license\":\"MIT\"},\"src/mocks/token/ERC20Mock.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ERC20} from \\\"@openzeppelin/contracts/token/ERC20/ERC20.sol\\\";\\n\\n/// @notice A mock [ERC-20](https://eips.ethereum.org/EIPS/eip-20) token that can be minted and burned by everyone.\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract ERC20Mock is ERC20 {\\n uint8 public decimals_ = 18;\\n\\n constructor(string memory _name, string memory _symbol) ERC20(_name, _symbol) {}\\n\\n function setDecimals(uint8 _decimals) public {\\n decimals_ = _decimals;\\n }\\n\\n function decimals() public view override returns (uint8) {\\n return decimals_;\\n }\\n\\n // sets the balance of the address\\n // this mints/burns the amount depending on the current balance\\n function setBalance(address to, uint256 amount) public {\\n uint256 old = balanceOf(to);\\n if (old < amount) {\\n _mint(to, amount - old);\\n } else if (old > amount) {\\n _burn(to, old - amount);\\n }\\n }\\n}\\n\",\"keccak256\":\"0xd5266fd470ef694b970b57add12c6e00dc653cd003ba9170c62713d7bfc4550c\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[{"astId":7172,"contract":"src/mocks/token/ERC20Mock.sol:ERC20Mock","label":"_balances","offset":0,"slot":"0","type":"t_mapping(t_address,t_uint256)"},{"astId":7178,"contract":"src/mocks/token/ERC20Mock.sol:ERC20Mock","label":"_allowances","offset":0,"slot":"1","type":"t_mapping(t_address,t_mapping(t_address,t_uint256))"},{"astId":7180,"contract":"src/mocks/token/ERC20Mock.sol:ERC20Mock","label":"_totalSupply","offset":0,"slot":"2","type":"t_uint256"},{"astId":7182,"contract":"src/mocks/token/ERC20Mock.sol:ERC20Mock","label":"_name","offset":0,"slot":"3","type":"t_string_storage"},{"astId":7184,"contract":"src/mocks/token/ERC20Mock.sol:ERC20Mock","label":"_symbol","offset":0,"slot":"4","type":"t_string_storage"},{"astId":12690,"contract":"src/mocks/token/ERC20Mock.sol:ERC20Mock","label":"decimals_","offset":0,"slot":"5","type":"t_uint8"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_mapping(t_address,t_mapping(t_address,t_uint256))":{"encoding":"mapping","key":"t_address","label":"mapping(address => mapping(address => uint256))","numberOfBytes":"32","value":"t_mapping(t_address,t_uint256)"},"t_mapping(t_address,t_uint256)":{"encoding":"mapping","key":"t_address","label":"mapping(address => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_string_storage":{"encoding":"bytes","label":"string","numberOfBytes":"32"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"kind":"user","methods":{},"notice":"A mock [ERC-20](https://eips.ethereum.org/EIPS/eip-20) token that can be minted and burned by everyone.","version":1}}},"src/mocks/token/ERC721Mock.sol":{"ERC721Mock":{"abi":[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"DO NOT USE IN PRODUCTION!","kind":"dev","methods":{"approve(address,uint256)":{"details":"See {IERC721-approve}."},"balanceOf(address)":{"details":"See {IERC721-balanceOf}."},"getApproved(uint256)":{"details":"See {IERC721-getApproved}."},"isApprovedForAll(address,address)":{"details":"See {IERC721-isApprovedForAll}."},"name()":{"details":"See {IERC721Metadata-name}."},"ownerOf(uint256)":{"details":"See {IERC721-ownerOf}."},"safeTransferFrom(address,address,uint256)":{"details":"See {IERC721-safeTransferFrom}."},"safeTransferFrom(address,address,uint256,bytes)":{"details":"See {IERC721-safeTransferFrom}."},"setApprovalForAll(address,bool)":{"details":"See {IERC721-setApprovalForAll}."},"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."},"symbol()":{"details":"See {IERC721Metadata-symbol}."},"tokenURI(uint256)":{"details":"See {IERC721Metadata-tokenURI}."},"transferFrom(address,address,uint256)":{"details":"See {IERC721-transferFrom}."}},"version":1},"evm":{"bytecode":{"functionDebugData":{"@_12779":{"entryPoint":null,"id":12779,"parameterSlots":2,"returnSlots":0},"@_7909":{"entryPoint":null,"id":7909,"parameterSlots":2,"returnSlots":0},"abi_decode_string_fromMemory":{"entryPoint":116,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr_fromMemory":{"entryPoint":291,"id":null,"parameterSlots":2,"returnSlots":2},"array_dataslot_string_storage":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"clean_up_bytearray_end_slots_string_storage":{"entryPoint":457,"id":null,"parameterSlots":3,"returnSlots":0},"copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage":{"entryPoint":540,"id":null,"parameterSlots":2,"returnSlots":0},"extract_byte_array_length":{"entryPoint":397,"id":null,"parameterSlots":1,"returnSlots":1},"extract_used_part_and_set_length_of_short_byte_array":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"panic_error_0x41":{"entryPoint":94,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:4144:92","statements":[{"nodeType":"YulBlock","src":"6:3:92","statements":[]},{"body":{"nodeType":"YulBlock","src":"46:95:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"63:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"70:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"75:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"66:3:92"},"nodeType":"YulFunctionCall","src":"66:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"56:6:92"},"nodeType":"YulFunctionCall","src":"56:31:92"},"nodeType":"YulExpressionStatement","src":"56:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"103:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"106:4:92","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"96:6:92"},"nodeType":"YulFunctionCall","src":"96:15:92"},"nodeType":"YulExpressionStatement","src":"96:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"127:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"130:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"120:6:92"},"nodeType":"YulFunctionCall","src":"120:15:92"},"nodeType":"YulExpressionStatement","src":"120:15:92"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"14:127:92"},{"body":{"nodeType":"YulBlock","src":"210:776:92","statements":[{"body":{"nodeType":"YulBlock","src":"259:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"268:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"271:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"261:6:92"},"nodeType":"YulFunctionCall","src":"261:12:92"},"nodeType":"YulExpressionStatement","src":"261:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"238:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"246:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"234:3:92"},"nodeType":"YulFunctionCall","src":"234:17:92"},{"name":"end","nodeType":"YulIdentifier","src":"253:3:92"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"230:3:92"},"nodeType":"YulFunctionCall","src":"230:27:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"223:6:92"},"nodeType":"YulFunctionCall","src":"223:35:92"},"nodeType":"YulIf","src":"220:55:92"},{"nodeType":"YulVariableDeclaration","src":"284:23:92","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"300:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"294:5:92"},"nodeType":"YulFunctionCall","src":"294:13:92"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"288:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"316:28:92","value":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"334:2:92","type":"","value":"64"},{"kind":"number","nodeType":"YulLiteral","src":"338:1:92","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"330:3:92"},"nodeType":"YulFunctionCall","src":"330:10:92"},{"kind":"number","nodeType":"YulLiteral","src":"342:1:92","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"326:3:92"},"nodeType":"YulFunctionCall","src":"326:18:92"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"320:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"367:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"369:16:92"},"nodeType":"YulFunctionCall","src":"369:18:92"},"nodeType":"YulExpressionStatement","src":"369:18:92"}]},"condition":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"359:2:92"},{"name":"_2","nodeType":"YulIdentifier","src":"363:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"356:2:92"},"nodeType":"YulFunctionCall","src":"356:10:92"},"nodeType":"YulIf","src":"353:36:92"},{"nodeType":"YulVariableDeclaration","src":"398:17:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"412:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"408:3:92"},"nodeType":"YulFunctionCall","src":"408:7:92"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"402:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"424:23:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"444:2:92","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"438:5:92"},"nodeType":"YulFunctionCall","src":"438:9:92"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"428:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"456:71:92","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"478:6:92"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"502:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"506:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"498:3:92"},"nodeType":"YulFunctionCall","src":"498:13:92"},{"name":"_3","nodeType":"YulIdentifier","src":"513:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"494:3:92"},"nodeType":"YulFunctionCall","src":"494:22:92"},{"kind":"number","nodeType":"YulLiteral","src":"518:2:92","type":"","value":"63"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"490:3:92"},"nodeType":"YulFunctionCall","src":"490:31:92"},{"name":"_3","nodeType":"YulIdentifier","src":"523:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"486:3:92"},"nodeType":"YulFunctionCall","src":"486:40:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"474:3:92"},"nodeType":"YulFunctionCall","src":"474:53:92"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"460:10:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"586:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"588:16:92"},"nodeType":"YulFunctionCall","src":"588:18:92"},"nodeType":"YulExpressionStatement","src":"588:18:92"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"545:10:92"},{"name":"_2","nodeType":"YulIdentifier","src":"557:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"542:2:92"},"nodeType":"YulFunctionCall","src":"542:18:92"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"565:10:92"},{"name":"memPtr","nodeType":"YulIdentifier","src":"577:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"562:2:92"},"nodeType":"YulFunctionCall","src":"562:22:92"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"539:2:92"},"nodeType":"YulFunctionCall","src":"539:46:92"},"nodeType":"YulIf","src":"536:72:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"624:2:92","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"628:10:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"617:6:92"},"nodeType":"YulFunctionCall","src":"617:22:92"},"nodeType":"YulExpressionStatement","src":"617:22:92"},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"655:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"663:2:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"648:6:92"},"nodeType":"YulFunctionCall","src":"648:18:92"},"nodeType":"YulExpressionStatement","src":"648:18:92"},{"nodeType":"YulVariableDeclaration","src":"675:14:92","value":{"kind":"number","nodeType":"YulLiteral","src":"685:4:92","type":"","value":"0x20"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"679:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"735:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"744:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"747:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"737:6:92"},"nodeType":"YulFunctionCall","src":"737:12:92"},"nodeType":"YulExpressionStatement","src":"737:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"712:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"720:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"708:3:92"},"nodeType":"YulFunctionCall","src":"708:15:92"},{"name":"_4","nodeType":"YulIdentifier","src":"725:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"704:3:92"},"nodeType":"YulFunctionCall","src":"704:24:92"},{"name":"end","nodeType":"YulIdentifier","src":"730:3:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"701:2:92"},"nodeType":"YulFunctionCall","src":"701:33:92"},"nodeType":"YulIf","src":"698:53:92"},{"nodeType":"YulVariableDeclaration","src":"760:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"769:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"764:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"825:87:92","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"854:6:92"},{"name":"i","nodeType":"YulIdentifier","src":"862:1:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"850:3:92"},"nodeType":"YulFunctionCall","src":"850:14:92"},{"name":"_4","nodeType":"YulIdentifier","src":"866:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"846:3:92"},"nodeType":"YulFunctionCall","src":"846:23:92"},{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"885:6:92"},{"name":"i","nodeType":"YulIdentifier","src":"893:1:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"881:3:92"},"nodeType":"YulFunctionCall","src":"881:14:92"},{"name":"_4","nodeType":"YulIdentifier","src":"897:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"877:3:92"},"nodeType":"YulFunctionCall","src":"877:23:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"871:5:92"},"nodeType":"YulFunctionCall","src":"871:30:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"839:6:92"},"nodeType":"YulFunctionCall","src":"839:63:92"},"nodeType":"YulExpressionStatement","src":"839:63:92"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"790:1:92"},{"name":"_1","nodeType":"YulIdentifier","src":"793:2:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"787:2:92"},"nodeType":"YulFunctionCall","src":"787:9:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"797:19:92","statements":[{"nodeType":"YulAssignment","src":"799:15:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"808:1:92"},{"name":"_4","nodeType":"YulIdentifier","src":"811:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"804:3:92"},"nodeType":"YulFunctionCall","src":"804:10:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"799:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"783:3:92","statements":[]},"src":"779:133:92"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"936:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"944:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"932:3:92"},"nodeType":"YulFunctionCall","src":"932:15:92"},{"name":"_4","nodeType":"YulIdentifier","src":"949:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"928:3:92"},"nodeType":"YulFunctionCall","src":"928:24:92"},{"kind":"number","nodeType":"YulLiteral","src":"954:1:92","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"921:6:92"},"nodeType":"YulFunctionCall","src":"921:35:92"},"nodeType":"YulExpressionStatement","src":"921:35:92"},{"nodeType":"YulAssignment","src":"965:15:92","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"974:6:92"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"965:5:92"}]}]},"name":"abi_decode_string_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"184:6:92","type":""},{"name":"end","nodeType":"YulTypedName","src":"192:3:92","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"200:5:92","type":""}],"src":"146:840:92"},{"body":{"nodeType":"YulBlock","src":"1109:444:92","statements":[{"body":{"nodeType":"YulBlock","src":"1155:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1164:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1167:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1157:6:92"},"nodeType":"YulFunctionCall","src":"1157:12:92"},"nodeType":"YulExpressionStatement","src":"1157:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1130:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"1139:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1126:3:92"},"nodeType":"YulFunctionCall","src":"1126:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"1151:2:92","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1122:3:92"},"nodeType":"YulFunctionCall","src":"1122:32:92"},"nodeType":"YulIf","src":"1119:52:92"},{"nodeType":"YulVariableDeclaration","src":"1180:30:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1200:9:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1194:5:92"},"nodeType":"YulFunctionCall","src":"1194:16:92"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1184:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"1219:28:92","value":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1237:2:92","type":"","value":"64"},{"kind":"number","nodeType":"YulLiteral","src":"1241:1:92","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1233:3:92"},"nodeType":"YulFunctionCall","src":"1233:10:92"},{"kind":"number","nodeType":"YulLiteral","src":"1245:1:92","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1229:3:92"},"nodeType":"YulFunctionCall","src":"1229:18:92"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"1223:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"1274:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1283:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1286:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1276:6:92"},"nodeType":"YulFunctionCall","src":"1276:12:92"},"nodeType":"YulExpressionStatement","src":"1276:12:92"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1262:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"1270:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1259:2:92"},"nodeType":"YulFunctionCall","src":"1259:14:92"},"nodeType":"YulIf","src":"1256:34:92"},{"nodeType":"YulAssignment","src":"1299:71:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1342:9:92"},{"name":"offset","nodeType":"YulIdentifier","src":"1353:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1338:3:92"},"nodeType":"YulFunctionCall","src":"1338:22:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1362:7:92"}],"functionName":{"name":"abi_decode_string_fromMemory","nodeType":"YulIdentifier","src":"1309:28:92"},"nodeType":"YulFunctionCall","src":"1309:61:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1299:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"1379:41:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1405:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1416:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1401:3:92"},"nodeType":"YulFunctionCall","src":"1401:18:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1395:5:92"},"nodeType":"YulFunctionCall","src":"1395:25:92"},"variables":[{"name":"offset_1","nodeType":"YulTypedName","src":"1383:8:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"1449:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1458:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1461:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1451:6:92"},"nodeType":"YulFunctionCall","src":"1451:12:92"},"nodeType":"YulExpressionStatement","src":"1451:12:92"}]},"condition":{"arguments":[{"name":"offset_1","nodeType":"YulIdentifier","src":"1435:8:92"},{"name":"_1","nodeType":"YulIdentifier","src":"1445:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1432:2:92"},"nodeType":"YulFunctionCall","src":"1432:16:92"},"nodeType":"YulIf","src":"1429:36:92"},{"nodeType":"YulAssignment","src":"1474:73:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1517:9:92"},{"name":"offset_1","nodeType":"YulIdentifier","src":"1528:8:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1513:3:92"},"nodeType":"YulFunctionCall","src":"1513:24:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1539:7:92"}],"functionName":{"name":"abi_decode_string_fromMemory","nodeType":"YulIdentifier","src":"1484:28:92"},"nodeType":"YulFunctionCall","src":"1484:63:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1474:6:92"}]}]},"name":"abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1067:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1078:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1090:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1098:6:92","type":""}],"src":"991:562:92"},{"body":{"nodeType":"YulBlock","src":"1613:325:92","statements":[{"nodeType":"YulAssignment","src":"1623:22:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1637:1:92","type":"","value":"1"},{"name":"data","nodeType":"YulIdentifier","src":"1640:4:92"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"1633:3:92"},"nodeType":"YulFunctionCall","src":"1633:12:92"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"1623:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"1654:38:92","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"1684:4:92"},{"kind":"number","nodeType":"YulLiteral","src":"1690:1:92","type":"","value":"1"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1680:3:92"},"nodeType":"YulFunctionCall","src":"1680:12:92"},"variables":[{"name":"outOfPlaceEncoding","nodeType":"YulTypedName","src":"1658:18:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"1731:31:92","statements":[{"nodeType":"YulAssignment","src":"1733:27:92","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"1747:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"1755:4:92","type":"","value":"0x7f"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1743:3:92"},"nodeType":"YulFunctionCall","src":"1743:17:92"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"1733:6:92"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"1711:18:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1704:6:92"},"nodeType":"YulFunctionCall","src":"1704:26:92"},"nodeType":"YulIf","src":"1701:61:92"},{"body":{"nodeType":"YulBlock","src":"1821:111:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1842:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1849:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"1854:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1845:3:92"},"nodeType":"YulFunctionCall","src":"1845:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1835:6:92"},"nodeType":"YulFunctionCall","src":"1835:31:92"},"nodeType":"YulExpressionStatement","src":"1835:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1886:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"1889:4:92","type":"","value":"0x22"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1879:6:92"},"nodeType":"YulFunctionCall","src":"1879:15:92"},"nodeType":"YulExpressionStatement","src":"1879:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1914:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1917:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1907:6:92"},"nodeType":"YulFunctionCall","src":"1907:15:92"},"nodeType":"YulExpressionStatement","src":"1907:15:92"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"1777:18:92"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"1800:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"1808:2:92","type":"","value":"32"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"1797:2:92"},"nodeType":"YulFunctionCall","src":"1797:14:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1774:2:92"},"nodeType":"YulFunctionCall","src":"1774:38:92"},"nodeType":"YulIf","src":"1771:161:92"}]},"name":"extract_byte_array_length","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"1593:4:92","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"1602:6:92","type":""}],"src":"1558:380:92"},{"body":{"nodeType":"YulBlock","src":"1999:65:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2016:1:92","type":"","value":"0"},{"name":"ptr","nodeType":"YulIdentifier","src":"2019:3:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2009:6:92"},"nodeType":"YulFunctionCall","src":"2009:14:92"},"nodeType":"YulExpressionStatement","src":"2009:14:92"},{"nodeType":"YulAssignment","src":"2032:26:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2050:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2053:4:92","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nodeType":"YulIdentifier","src":"2040:9:92"},"nodeType":"YulFunctionCall","src":"2040:18:92"},"variableNames":[{"name":"data","nodeType":"YulIdentifier","src":"2032:4:92"}]}]},"name":"array_dataslot_string_storage","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nodeType":"YulTypedName","src":"1982:3:92","type":""}],"returnVariables":[{"name":"data","nodeType":"YulTypedName","src":"1990:4:92","type":""}],"src":"1943:121:92"},{"body":{"nodeType":"YulBlock","src":"2150:464:92","statements":[{"body":{"nodeType":"YulBlock","src":"2183:425:92","statements":[{"nodeType":"YulVariableDeclaration","src":"2197:11:92","value":{"kind":"number","nodeType":"YulLiteral","src":"2207:1:92","type":"","value":"0"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"2201:2:92","type":""}]},{"expression":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"2228:2:92"},{"name":"array","nodeType":"YulIdentifier","src":"2232:5:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2221:6:92"},"nodeType":"YulFunctionCall","src":"2221:17:92"},"nodeType":"YulExpressionStatement","src":"2221:17:92"},{"nodeType":"YulVariableDeclaration","src":"2251:31:92","value":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"2273:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"2277:4:92","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nodeType":"YulIdentifier","src":"2263:9:92"},"nodeType":"YulFunctionCall","src":"2263:19:92"},"variables":[{"name":"data","nodeType":"YulTypedName","src":"2255:4:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2295:57:92","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"2318:4:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2328:1:92","type":"","value":"5"},{"arguments":[{"name":"startIndex","nodeType":"YulIdentifier","src":"2335:10:92"},{"kind":"number","nodeType":"YulLiteral","src":"2347:2:92","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2331:3:92"},"nodeType":"YulFunctionCall","src":"2331:19:92"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"2324:3:92"},"nodeType":"YulFunctionCall","src":"2324:27:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2314:3:92"},"nodeType":"YulFunctionCall","src":"2314:38:92"},"variables":[{"name":"deleteStart","nodeType":"YulTypedName","src":"2299:11:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"2389:23:92","statements":[{"nodeType":"YulAssignment","src":"2391:19:92","value":{"name":"data","nodeType":"YulIdentifier","src":"2406:4:92"},"variableNames":[{"name":"deleteStart","nodeType":"YulIdentifier","src":"2391:11:92"}]}]},"condition":{"arguments":[{"name":"startIndex","nodeType":"YulIdentifier","src":"2371:10:92"},{"kind":"number","nodeType":"YulLiteral","src":"2383:4:92","type":"","value":"0x20"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2368:2:92"},"nodeType":"YulFunctionCall","src":"2368:20:92"},"nodeType":"YulIf","src":"2365:47:92"},{"nodeType":"YulVariableDeclaration","src":"2425:41:92","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"2439:4:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2449:1:92","type":"","value":"5"},{"arguments":[{"name":"len","nodeType":"YulIdentifier","src":"2456:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"2461:2:92","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2452:3:92"},"nodeType":"YulFunctionCall","src":"2452:12:92"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"2445:3:92"},"nodeType":"YulFunctionCall","src":"2445:20:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2435:3:92"},"nodeType":"YulFunctionCall","src":"2435:31:92"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"2429:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2479:24:92","value":{"name":"deleteStart","nodeType":"YulIdentifier","src":"2492:11:92"},"variables":[{"name":"start","nodeType":"YulTypedName","src":"2483:5:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"2577:21:92","statements":[{"expression":{"arguments":[{"name":"start","nodeType":"YulIdentifier","src":"2586:5:92"},{"name":"_1","nodeType":"YulIdentifier","src":"2593:2:92"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"2579:6:92"},"nodeType":"YulFunctionCall","src":"2579:17:92"},"nodeType":"YulExpressionStatement","src":"2579:17:92"}]},"condition":{"arguments":[{"name":"start","nodeType":"YulIdentifier","src":"2527:5:92"},{"name":"_2","nodeType":"YulIdentifier","src":"2534:2:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2524:2:92"},"nodeType":"YulFunctionCall","src":"2524:13:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"2538:26:92","statements":[{"nodeType":"YulAssignment","src":"2540:22:92","value":{"arguments":[{"name":"start","nodeType":"YulIdentifier","src":"2553:5:92"},{"kind":"number","nodeType":"YulLiteral","src":"2560:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2549:3:92"},"nodeType":"YulFunctionCall","src":"2549:13:92"},"variableNames":[{"name":"start","nodeType":"YulIdentifier","src":"2540:5:92"}]}]},"pre":{"nodeType":"YulBlock","src":"2520:3:92","statements":[]},"src":"2516:82:92"}]},"condition":{"arguments":[{"name":"len","nodeType":"YulIdentifier","src":"2166:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"2171:2:92","type":"","value":"31"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2163:2:92"},"nodeType":"YulFunctionCall","src":"2163:11:92"},"nodeType":"YulIf","src":"2160:448:92"}]},"name":"clean_up_bytearray_end_slots_string_storage","nodeType":"YulFunctionDefinition","parameters":[{"name":"array","nodeType":"YulTypedName","src":"2122:5:92","type":""},{"name":"len","nodeType":"YulTypedName","src":"2129:3:92","type":""},{"name":"startIndex","nodeType":"YulTypedName","src":"2134:10:92","type":""}],"src":"2069:545:92"},{"body":{"nodeType":"YulBlock","src":"2704:81:92","statements":[{"nodeType":"YulAssignment","src":"2714:65:92","value":{"arguments":[{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"2729:4:92"},{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2747:1:92","type":"","value":"3"},{"name":"len","nodeType":"YulIdentifier","src":"2750:3:92"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2743:3:92"},"nodeType":"YulFunctionCall","src":"2743:11:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2760:1:92","type":"","value":"0"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"2756:3:92"},"nodeType":"YulFunctionCall","src":"2756:6:92"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"2739:3:92"},"nodeType":"YulFunctionCall","src":"2739:24:92"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"2735:3:92"},"nodeType":"YulFunctionCall","src":"2735:29:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2725:3:92"},"nodeType":"YulFunctionCall","src":"2725:40:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2771:1:92","type":"","value":"1"},{"name":"len","nodeType":"YulIdentifier","src":"2774:3:92"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2767:3:92"},"nodeType":"YulFunctionCall","src":"2767:11:92"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"2722:2:92"},"nodeType":"YulFunctionCall","src":"2722:57:92"},"variableNames":[{"name":"used","nodeType":"YulIdentifier","src":"2714:4:92"}]}]},"name":"extract_used_part_and_set_length_of_short_byte_array","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"2681:4:92","type":""},{"name":"len","nodeType":"YulTypedName","src":"2687:3:92","type":""}],"returnVariables":[{"name":"used","nodeType":"YulTypedName","src":"2695:4:92","type":""}],"src":"2619:166:92"},{"body":{"nodeType":"YulBlock","src":"2886:1256:92","statements":[{"nodeType":"YulVariableDeclaration","src":"2896:24:92","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"2916:3:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2910:5:92"},"nodeType":"YulFunctionCall","src":"2910:10:92"},"variables":[{"name":"newLen","nodeType":"YulTypedName","src":"2900:6:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"2963:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"2965:16:92"},"nodeType":"YulFunctionCall","src":"2965:18:92"},"nodeType":"YulExpressionStatement","src":"2965:18:92"}]},"condition":{"arguments":[{"name":"newLen","nodeType":"YulIdentifier","src":"2935:6:92"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2951:2:92","type":"","value":"64"},{"kind":"number","nodeType":"YulLiteral","src":"2955:1:92","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2947:3:92"},"nodeType":"YulFunctionCall","src":"2947:10:92"},{"kind":"number","nodeType":"YulLiteral","src":"2959:1:92","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2943:3:92"},"nodeType":"YulFunctionCall","src":"2943:18:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2932:2:92"},"nodeType":"YulFunctionCall","src":"2932:30:92"},"nodeType":"YulIf","src":"2929:56:92"},{"expression":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"3038:4:92"},{"arguments":[{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"3076:4:92"}],"functionName":{"name":"sload","nodeType":"YulIdentifier","src":"3070:5:92"},"nodeType":"YulFunctionCall","src":"3070:11:92"}],"functionName":{"name":"extract_byte_array_length","nodeType":"YulIdentifier","src":"3044:25:92"},"nodeType":"YulFunctionCall","src":"3044:38:92"},{"name":"newLen","nodeType":"YulIdentifier","src":"3084:6:92"}],"functionName":{"name":"clean_up_bytearray_end_slots_string_storage","nodeType":"YulIdentifier","src":"2994:43:92"},"nodeType":"YulFunctionCall","src":"2994:97:92"},"nodeType":"YulExpressionStatement","src":"2994:97:92"},{"nodeType":"YulVariableDeclaration","src":"3100:18:92","value":{"kind":"number","nodeType":"YulLiteral","src":"3117:1:92","type":"","value":"0"},"variables":[{"name":"srcOffset","nodeType":"YulTypedName","src":"3104:9:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3127:23:92","value":{"kind":"number","nodeType":"YulLiteral","src":"3146:4:92","type":"","value":"0x20"},"variables":[{"name":"srcOffset_1","nodeType":"YulTypedName","src":"3131:11:92","type":""}]},{"nodeType":"YulAssignment","src":"3159:24:92","value":{"name":"srcOffset_1","nodeType":"YulIdentifier","src":"3172:11:92"},"variableNames":[{"name":"srcOffset","nodeType":"YulIdentifier","src":"3159:9:92"}]},{"cases":[{"body":{"nodeType":"YulBlock","src":"3229:656:92","statements":[{"nodeType":"YulVariableDeclaration","src":"3243:35:92","value":{"arguments":[{"name":"newLen","nodeType":"YulIdentifier","src":"3262:6:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3274:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"3270:3:92"},"nodeType":"YulFunctionCall","src":"3270:7:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3258:3:92"},"nodeType":"YulFunctionCall","src":"3258:20:92"},"variables":[{"name":"loopEnd","nodeType":"YulTypedName","src":"3247:7:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3291:49:92","value":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"3335:4:92"}],"functionName":{"name":"array_dataslot_string_storage","nodeType":"YulIdentifier","src":"3305:29:92"},"nodeType":"YulFunctionCall","src":"3305:35:92"},"variables":[{"name":"dstPtr","nodeType":"YulTypedName","src":"3295:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3353:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"3362:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"3357:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"3440:172:92","statements":[{"expression":{"arguments":[{"name":"dstPtr","nodeType":"YulIdentifier","src":"3465:6:92"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"3483:3:92"},{"name":"srcOffset","nodeType":"YulIdentifier","src":"3488:9:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3479:3:92"},"nodeType":"YulFunctionCall","src":"3479:19:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3473:5:92"},"nodeType":"YulFunctionCall","src":"3473:26:92"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"3458:6:92"},"nodeType":"YulFunctionCall","src":"3458:42:92"},"nodeType":"YulExpressionStatement","src":"3458:42:92"},{"nodeType":"YulAssignment","src":"3517:24:92","value":{"arguments":[{"name":"dstPtr","nodeType":"YulIdentifier","src":"3531:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"3539:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3527:3:92"},"nodeType":"YulFunctionCall","src":"3527:14:92"},"variableNames":[{"name":"dstPtr","nodeType":"YulIdentifier","src":"3517:6:92"}]},{"nodeType":"YulAssignment","src":"3558:40:92","value":{"arguments":[{"name":"srcOffset","nodeType":"YulIdentifier","src":"3575:9:92"},{"name":"srcOffset_1","nodeType":"YulIdentifier","src":"3586:11:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3571:3:92"},"nodeType":"YulFunctionCall","src":"3571:27:92"},"variableNames":[{"name":"srcOffset","nodeType":"YulIdentifier","src":"3558:9:92"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3387:1:92"},{"name":"loopEnd","nodeType":"YulIdentifier","src":"3390:7:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"3384:2:92"},"nodeType":"YulFunctionCall","src":"3384:14:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"3399:28:92","statements":[{"nodeType":"YulAssignment","src":"3401:24:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3410:1:92"},{"name":"srcOffset_1","nodeType":"YulIdentifier","src":"3413:11:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3406:3:92"},"nodeType":"YulFunctionCall","src":"3406:19:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"3401:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"3380:3:92","statements":[]},"src":"3376:236:92"},{"body":{"nodeType":"YulBlock","src":"3660:166:92","statements":[{"nodeType":"YulVariableDeclaration","src":"3678:43:92","value":{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"3705:3:92"},{"name":"srcOffset","nodeType":"YulIdentifier","src":"3710:9:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3701:3:92"},"nodeType":"YulFunctionCall","src":"3701:19:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3695:5:92"},"nodeType":"YulFunctionCall","src":"3695:26:92"},"variables":[{"name":"lastValue","nodeType":"YulTypedName","src":"3682:9:92","type":""}]},{"expression":{"arguments":[{"name":"dstPtr","nodeType":"YulIdentifier","src":"3745:6:92"},{"arguments":[{"name":"lastValue","nodeType":"YulIdentifier","src":"3757:9:92"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3784:1:92","type":"","value":"3"},{"name":"newLen","nodeType":"YulIdentifier","src":"3787:6:92"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"3780:3:92"},"nodeType":"YulFunctionCall","src":"3780:14:92"},{"kind":"number","nodeType":"YulLiteral","src":"3796:3:92","type":"","value":"248"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3776:3:92"},"nodeType":"YulFunctionCall","src":"3776:24:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3806:1:92","type":"","value":"0"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"3802:3:92"},"nodeType":"YulFunctionCall","src":"3802:6:92"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"3772:3:92"},"nodeType":"YulFunctionCall","src":"3772:37:92"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"3768:3:92"},"nodeType":"YulFunctionCall","src":"3768:42:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3753:3:92"},"nodeType":"YulFunctionCall","src":"3753:58:92"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"3738:6:92"},"nodeType":"YulFunctionCall","src":"3738:74:92"},"nodeType":"YulExpressionStatement","src":"3738:74:92"}]},"condition":{"arguments":[{"name":"loopEnd","nodeType":"YulIdentifier","src":"3631:7:92"},{"name":"newLen","nodeType":"YulIdentifier","src":"3640:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"3628:2:92"},"nodeType":"YulFunctionCall","src":"3628:19:92"},"nodeType":"YulIf","src":"3625:201:92"},{"expression":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"3846:4:92"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3860:1:92","type":"","value":"1"},{"name":"newLen","nodeType":"YulIdentifier","src":"3863:6:92"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"3856:3:92"},"nodeType":"YulFunctionCall","src":"3856:14:92"},{"kind":"number","nodeType":"YulLiteral","src":"3872:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3852:3:92"},"nodeType":"YulFunctionCall","src":"3852:22:92"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"3839:6:92"},"nodeType":"YulFunctionCall","src":"3839:36:92"},"nodeType":"YulExpressionStatement","src":"3839:36:92"}]},"nodeType":"YulCase","src":"3222:663:92","value":{"kind":"number","nodeType":"YulLiteral","src":"3227:1:92","type":"","value":"1"}},{"body":{"nodeType":"YulBlock","src":"3902:234:92","statements":[{"nodeType":"YulVariableDeclaration","src":"3916:14:92","value":{"kind":"number","nodeType":"YulLiteral","src":"3929:1:92","type":"","value":"0"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"3920:5:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"3965:67:92","statements":[{"nodeType":"YulAssignment","src":"3983:35:92","value":{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"4002:3:92"},{"name":"srcOffset","nodeType":"YulIdentifier","src":"4007:9:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3998:3:92"},"nodeType":"YulFunctionCall","src":"3998:19:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3992:5:92"},"nodeType":"YulFunctionCall","src":"3992:26:92"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"3983:5:92"}]}]},"condition":{"name":"newLen","nodeType":"YulIdentifier","src":"3946:6:92"},"nodeType":"YulIf","src":"3943:89:92"},{"expression":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"4052:4:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4111:5:92"},{"name":"newLen","nodeType":"YulIdentifier","src":"4118:6:92"}],"functionName":{"name":"extract_used_part_and_set_length_of_short_byte_array","nodeType":"YulIdentifier","src":"4058:52:92"},"nodeType":"YulFunctionCall","src":"4058:67:92"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"4045:6:92"},"nodeType":"YulFunctionCall","src":"4045:81:92"},"nodeType":"YulExpressionStatement","src":"4045:81:92"}]},"nodeType":"YulCase","src":"3894:242:92","value":"default"}],"expression":{"arguments":[{"name":"newLen","nodeType":"YulIdentifier","src":"3202:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"3210:2:92","type":"","value":"31"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3199:2:92"},"nodeType":"YulFunctionCall","src":"3199:14:92"},"nodeType":"YulSwitch","src":"3192:944:92"}]},"name":"copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage","nodeType":"YulFunctionDefinition","parameters":[{"name":"slot","nodeType":"YulTypedName","src":"2871:4:92","type":""},{"name":"src","nodeType":"YulTypedName","src":"2877:3:92","type":""}],"src":"2790:1352:92"}]},"contents":"{\n { }\n function panic_error_0x41()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function abi_decode_string_fromMemory(offset, end) -> array\n {\n if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n let _1 := mload(offset)\n let _2 := sub(shl(64, 1), 1)\n if gt(_1, _2) { panic_error_0x41() }\n let _3 := not(31)\n let memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(and(add(_1, 0x1f), _3), 63), _3))\n if or(gt(newFreePtr, _2), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n mstore(memPtr, _1)\n let _4 := 0x20\n if gt(add(add(offset, _1), _4), end) { revert(0, 0) }\n let i := 0\n for { } lt(i, _1) { i := add(i, _4) }\n {\n mstore(add(add(memPtr, i), _4), mload(add(add(offset, i), _4)))\n }\n mstore(add(add(memPtr, _1), _4), 0)\n array := memPtr\n }\n function abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr_fromMemory(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n let offset := mload(headStart)\n let _1 := sub(shl(64, 1), 1)\n if gt(offset, _1) { revert(0, 0) }\n value0 := abi_decode_string_fromMemory(add(headStart, offset), dataEnd)\n let offset_1 := mload(add(headStart, 32))\n if gt(offset_1, _1) { revert(0, 0) }\n value1 := abi_decode_string_fromMemory(add(headStart, offset_1), dataEnd)\n }\n function extract_byte_array_length(data) -> length\n {\n length := shr(1, data)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n if eq(outOfPlaceEncoding, lt(length, 32))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n }\n function array_dataslot_string_storage(ptr) -> data\n {\n mstore(0, ptr)\n data := keccak256(0, 0x20)\n }\n function clean_up_bytearray_end_slots_string_storage(array, len, startIndex)\n {\n if gt(len, 31)\n {\n let _1 := 0\n mstore(_1, array)\n let data := keccak256(_1, 0x20)\n let deleteStart := add(data, shr(5, add(startIndex, 31)))\n if lt(startIndex, 0x20) { deleteStart := data }\n let _2 := add(data, shr(5, add(len, 31)))\n let start := deleteStart\n for { } lt(start, _2) { start := add(start, 1) }\n { sstore(start, _1) }\n }\n }\n function extract_used_part_and_set_length_of_short_byte_array(data, len) -> used\n {\n used := or(and(data, not(shr(shl(3, len), not(0)))), shl(1, len))\n }\n function copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage(slot, src)\n {\n let newLen := mload(src)\n if gt(newLen, sub(shl(64, 1), 1)) { panic_error_0x41() }\n clean_up_bytearray_end_slots_string_storage(slot, extract_byte_array_length(sload(slot)), newLen)\n let srcOffset := 0\n let srcOffset_1 := 0x20\n srcOffset := srcOffset_1\n switch gt(newLen, 31)\n case 1 {\n let loopEnd := and(newLen, not(31))\n let dstPtr := array_dataslot_string_storage(slot)\n let i := 0\n for { } lt(i, loopEnd) { i := add(i, srcOffset_1) }\n {\n sstore(dstPtr, mload(add(src, srcOffset)))\n dstPtr := add(dstPtr, 1)\n srcOffset := add(srcOffset, srcOffset_1)\n }\n if lt(loopEnd, newLen)\n {\n let lastValue := mload(add(src, srcOffset))\n sstore(dstPtr, and(lastValue, not(shr(and(shl(3, newLen), 248), not(0)))))\n }\n sstore(slot, add(shl(1, newLen), 1))\n }\n default {\n let value := 0\n if newLen\n {\n value := mload(add(src, srcOffset))\n }\n sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, newLen))\n }\n }\n}","id":92,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60806040523480156200001157600080fd5b506040516200174538038062001745833981016040819052620000349162000123565b818160006200004483826200021c565b5060016200005382826200021c565b5050505050620002e8565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200008657600080fd5b81516001600160401b0380821115620000a357620000a36200005e565b604051601f8301601f19908116603f01168101908282118183101715620000ce57620000ce6200005e565b81604052838152602092508683858801011115620000eb57600080fd5b600091505b838210156200010f5785820183015181830184015290820190620000f0565b600093810190920192909252949350505050565b600080604083850312156200013757600080fd5b82516001600160401b03808211156200014f57600080fd5b6200015d8683870162000074565b935060208501519150808211156200017457600080fd5b50620001838582860162000074565b9150509250929050565b600181811c90821680620001a257607f821691505b602082108103620001c357634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200021757600081815260208120601f850160051c81016020861015620001f25750805b601f850160051c820191505b818110156200021357828155600101620001fe565b5050505b505050565b81516001600160401b038111156200023857620002386200005e565b62000250816200024984546200018d565b84620001c9565b602080601f8311600181146200028857600084156200026f5750858301515b600019600386901b1c1916600185901b17855562000213565b600085815260208120601f198616915b82811015620002b95788860151825594840194600190910190840162000298565b5085821015620002d85787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61144d80620002f86000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806342966c6811610097578063a22cb46511610066578063a22cb465146101ff578063b88d4fde14610212578063c87b56dd14610225578063e985e9c51461023857600080fd5b806342966c68146101b05780636352211e146101c357806370a08231146101d657806395d89b41146101f757600080fd5b8063095ea7b3116100d3578063095ea7b31461016257806323b872dd1461017757806340c10f191461018a57806342842e0e1461019d57600080fd5b806301ffc9a7146100fa57806306fdde0314610122578063081812fc14610137575b600080fd5b61010d6101083660046110e7565b610274565b60405190151581526020015b60405180910390f35b61012a6102c6565b6040516101199190611154565b61014a610145366004611167565b610358565b6040516001600160a01b039091168152602001610119565b61017561017036600461119c565b61037f565b005b6101756101853660046111c6565b610499565b61017561019836600461119c565b610510565b6101756101ab3660046111c6565b61051e565b6101756101be366004611167565b610539565b61014a6101d1366004611167565b610545565b6101e96101e4366004611202565b6105aa565b604051908152602001610119565b61012a610644565b61017561020d36600461121d565b610653565b61017561022036600461126f565b61065e565b61012a610233366004611167565b6106dc565b61010d61024636600461134b565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b60006001600160e01b031982166380ac58cd60e01b14806102a557506001600160e01b03198216635b5e139f60e01b145b806102c057506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600080546102d59061137e565b80601f01602080910402602001604051908101604052809291908181526020018280546103019061137e565b801561034e5780601f106103235761010080835404028352916020019161034e565b820191906000526020600020905b81548152906001019060200180831161033157829003601f168201915b5050505050905090565b600061036382610750565b506000908152600460205260409020546001600160a01b031690565b600061038a82610545565b9050806001600160a01b0316836001600160a01b0316036103fc5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b038216148061041857506104188133610246565b61048a5760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c00000060648201526084016103f3565b61049483836107b4565b505050565b6104a33382610822565b6105055760405162461bcd60e51b815260206004820152602d60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201526c1c881bdc88185c1c1c9bdd9959609a1b60648201526084016103f3565b6104948383836108a1565b61051a8282610a81565b5050565b6104948383836040518060200160405280600081525061065e565b61054281610c0c565b50565b6000818152600260205260408120546001600160a01b0316806102c05760405162461bcd60e51b815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e204944000000000000000060448201526064016103f3565b60006001600160a01b0382166106285760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f74206120766160448201527f6c6964206f776e6572000000000000000000000000000000000000000000000060648201526084016103f3565b506001600160a01b031660009081526003602052604090205490565b6060600180546102d59061137e565b61051a338383610ca1565b6106683383610822565b6106ca5760405162461bcd60e51b815260206004820152602d60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201526c1c881bdc88185c1c1c9bdd9959609a1b60648201526084016103f3565b6106d684848484610d6f565b50505050565b60606106e782610750565b60006106fe60408051602081019091526000815290565b9050600081511161071e5760405180602001604052806000815250610749565b8061072884610df8565b6040516020016107399291906113b8565b6040516020818303038152906040525b9392505050565b6000818152600260205260409020546001600160a01b03166105425760405162461bcd60e51b815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e204944000000000000000060448201526064016103f3565b600081815260046020526040902080546001600160a01b0319166001600160a01b03841690811790915581906107e982610545565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008061082e83610545565b9050806001600160a01b0316846001600160a01b0316148061087557506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b806108995750836001600160a01b031661088e84610358565b6001600160a01b0316145b949350505050565b826001600160a01b03166108b482610545565b6001600160a01b0316146109185760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016103f3565b6001600160a01b03821661097a5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016103f3565b826001600160a01b031661098d82610545565b6001600160a01b0316146109f15760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016103f3565b600081815260046020908152604080832080546001600160a01b03199081169091556001600160a01b0387811680865260038552838620805460001901905590871680865283862080546001019055868652600290945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6001600160a01b038216610ad75760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016103f3565b6000818152600260205260409020546001600160a01b031615610b3c5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016103f3565b6000818152600260205260409020546001600160a01b031615610ba15760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016103f3565b6001600160a01b038216600081815260036020908152604080832080546001019055848352600290915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6000610c1782610545565b9050610c2282610545565b600083815260046020908152604080832080546001600160a01b03199081169091556001600160a01b0385168085526003845282852080546000190190558785526002909352818420805490911690555192935084927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b816001600160a01b0316836001600160a01b031603610d025760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016103f3565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b610d7a8484846108a1565b610d8684848484610e98565b6106d65760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e746572000000000000000000000000000060648201526084016103f3565b60606000610e0583610fef565b600101905060008167ffffffffffffffff811115610e2557610e25611259565b6040519080825280601f01601f191660200182016040528015610e4f576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084610e5957509392505050565b60006001600160a01b0384163b15610fe457604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290610edc9033908990889088906004016113e7565b6020604051808303816000875af1925050508015610f17575060408051601f3d908101601f19168201909252610f1491810190611423565b60015b610fca573d808015610f45576040519150601f19603f3d011682016040523d82523d6000602084013e610f4a565b606091505b508051600003610fc25760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e746572000000000000000000000000000060648201526084016103f3565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050610899565b506001949350505050565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310611038577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310611064576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061108257662386f26fc10000830492506010015b6305f5e100831061109a576305f5e100830492506008015b61271083106110ae57612710830492506004015b606483106110c0576064830492506002015b600a83106102c05760010192915050565b6001600160e01b03198116811461054257600080fd5b6000602082840312156110f957600080fd5b8135610749816110d1565b60005b8381101561111f578181015183820152602001611107565b50506000910152565b60008151808452611140816020860160208601611104565b601f01601f19169290920160200192915050565b6020815260006107496020830184611128565b60006020828403121561117957600080fd5b5035919050565b80356001600160a01b038116811461119757600080fd5b919050565b600080604083850312156111af57600080fd5b6111b883611180565b946020939093013593505050565b6000806000606084860312156111db57600080fd5b6111e484611180565b92506111f260208501611180565b9150604084013590509250925092565b60006020828403121561121457600080fd5b61074982611180565b6000806040838503121561123057600080fd5b61123983611180565b91506020830135801515811461124e57600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b6000806000806080858703121561128557600080fd5b61128e85611180565b935061129c60208601611180565b925060408501359150606085013567ffffffffffffffff808211156112c057600080fd5b818701915087601f8301126112d457600080fd5b8135818111156112e6576112e6611259565b604051601f8201601f19908116603f0116810190838211818310171561130e5761130e611259565b816040528281528a602084870101111561132757600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b6000806040838503121561135e57600080fd5b61136783611180565b915061137560208401611180565b90509250929050565b600181811c9082168061139257607f821691505b6020821081036113b257634e487b7160e01b600052602260045260246000fd5b50919050565b600083516113ca818460208801611104565b8351908301906113de818360208801611104565b01949350505050565b60006001600160a01b038087168352808616602084015250836040830152608060608301526114196080830184611128565b9695505050505050565b60006020828403121561143557600080fd5b8151610749816110d156fea164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x1745 CODESIZE SUB DUP1 PUSH3 0x1745 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x34 SWAP2 PUSH3 0x123 JUMP JUMPDEST DUP2 DUP2 PUSH1 0x0 PUSH3 0x44 DUP4 DUP3 PUSH3 0x21C JUMP JUMPDEST POP PUSH1 0x1 PUSH3 0x53 DUP3 DUP3 PUSH3 0x21C JUMP JUMPDEST POP POP POP POP POP PUSH3 0x2E8 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x86 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH3 0xA3 JUMPI PUSH3 0xA3 PUSH3 0x5E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP4 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP3 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH3 0xCE JUMPI PUSH3 0xCE PUSH3 0x5E JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP4 DUP2 MSTORE PUSH1 0x20 SWAP3 POP DUP7 DUP4 DUP6 DUP9 ADD ADD GT ISZERO PUSH3 0xEB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP2 POP JUMPDEST DUP4 DUP3 LT ISZERO PUSH3 0x10F JUMPI DUP6 DUP3 ADD DUP4 ADD MLOAD DUP2 DUP4 ADD DUP5 ADD MSTORE SWAP1 DUP3 ADD SWAP1 PUSH3 0xF0 JUMP JUMPDEST PUSH1 0x0 SWAP4 DUP2 ADD SWAP1 SWAP3 ADD SWAP3 SWAP1 SWAP3 MSTORE SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x137 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH3 0x14F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x15D DUP7 DUP4 DUP8 ADD PUSH3 0x74 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD MLOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH3 0x174 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x183 DUP6 DUP3 DUP7 ADD PUSH3 0x74 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH3 0x1A2 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH3 0x1C3 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH3 0x217 JUMPI PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP7 LT ISZERO PUSH3 0x1F2 JUMPI POP DUP1 JUMPDEST PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x213 JUMPI DUP3 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x1FE JUMP JUMPDEST POP POP POP JUMPDEST POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH3 0x238 JUMPI PUSH3 0x238 PUSH3 0x5E JUMP JUMPDEST PUSH3 0x250 DUP2 PUSH3 0x249 DUP5 SLOAD PUSH3 0x18D JUMP JUMPDEST DUP5 PUSH3 0x1C9 JUMP JUMPDEST PUSH1 0x20 DUP1 PUSH1 0x1F DUP4 GT PUSH1 0x1 DUP2 EQ PUSH3 0x288 JUMPI PUSH1 0x0 DUP5 ISZERO PUSH3 0x26F JUMPI POP DUP6 DUP4 ADD MLOAD JUMPDEST PUSH1 0x0 NOT PUSH1 0x3 DUP7 SWAP1 SHL SHR NOT AND PUSH1 0x1 DUP6 SWAP1 SHL OR DUP6 SSTORE PUSH3 0x213 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F NOT DUP7 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH3 0x2B9 JUMPI DUP9 DUP7 ADD MLOAD DUP3 SSTORE SWAP5 DUP5 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 DUP5 ADD PUSH3 0x298 JUMP JUMPDEST POP DUP6 DUP3 LT ISZERO PUSH3 0x2D8 JUMPI DUP8 DUP6 ADD MLOAD PUSH1 0x0 NOT PUSH1 0x3 DUP9 SWAP1 SHL PUSH1 0xF8 AND SHR NOT AND DUP2 SSTORE JUMPDEST POP POP POP POP POP PUSH1 0x1 SWAP1 DUP2 SHL ADD SWAP1 SSTORE POP JUMP JUMPDEST PUSH2 0x144D DUP1 PUSH3 0x2F8 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xF5 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x42966C68 GT PUSH2 0x97 JUMPI DUP1 PUSH4 0xA22CB465 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x1FF JUMPI DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0x212 JUMPI DUP1 PUSH4 0xC87B56DD EQ PUSH2 0x225 JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x238 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x42966C68 EQ PUSH2 0x1B0 JUMPI DUP1 PUSH4 0x6352211E EQ PUSH2 0x1C3 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x1D6 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x1F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x95EA7B3 GT PUSH2 0xD3 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x162 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x177 JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x18A JUMPI DUP1 PUSH4 0x42842E0E EQ PUSH2 0x19D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xFA JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x122 JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x137 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x10D PUSH2 0x108 CALLDATASIZE PUSH1 0x4 PUSH2 0x10E7 JUMP JUMPDEST PUSH2 0x274 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x12A PUSH2 0x2C6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x119 SWAP2 SWAP1 PUSH2 0x1154 JUMP JUMPDEST PUSH2 0x14A PUSH2 0x145 CALLDATASIZE PUSH1 0x4 PUSH2 0x1167 JUMP JUMPDEST PUSH2 0x358 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x119 JUMP JUMPDEST PUSH2 0x175 PUSH2 0x170 CALLDATASIZE PUSH1 0x4 PUSH2 0x119C JUMP JUMPDEST PUSH2 0x37F JUMP JUMPDEST STOP JUMPDEST PUSH2 0x175 PUSH2 0x185 CALLDATASIZE PUSH1 0x4 PUSH2 0x11C6 JUMP JUMPDEST PUSH2 0x499 JUMP JUMPDEST PUSH2 0x175 PUSH2 0x198 CALLDATASIZE PUSH1 0x4 PUSH2 0x119C JUMP JUMPDEST PUSH2 0x510 JUMP JUMPDEST PUSH2 0x175 PUSH2 0x1AB CALLDATASIZE PUSH1 0x4 PUSH2 0x11C6 JUMP JUMPDEST PUSH2 0x51E JUMP JUMPDEST PUSH2 0x175 PUSH2 0x1BE CALLDATASIZE PUSH1 0x4 PUSH2 0x1167 JUMP JUMPDEST PUSH2 0x539 JUMP JUMPDEST PUSH2 0x14A PUSH2 0x1D1 CALLDATASIZE PUSH1 0x4 PUSH2 0x1167 JUMP JUMPDEST PUSH2 0x545 JUMP JUMPDEST PUSH2 0x1E9 PUSH2 0x1E4 CALLDATASIZE PUSH1 0x4 PUSH2 0x1202 JUMP JUMPDEST PUSH2 0x5AA JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x119 JUMP JUMPDEST PUSH2 0x12A PUSH2 0x644 JUMP JUMPDEST PUSH2 0x175 PUSH2 0x20D CALLDATASIZE PUSH1 0x4 PUSH2 0x121D JUMP JUMPDEST PUSH2 0x653 JUMP JUMPDEST PUSH2 0x175 PUSH2 0x220 CALLDATASIZE PUSH1 0x4 PUSH2 0x126F JUMP JUMPDEST PUSH2 0x65E JUMP JUMPDEST PUSH2 0x12A PUSH2 0x233 CALLDATASIZE PUSH1 0x4 PUSH2 0x1167 JUMP JUMPDEST PUSH2 0x6DC JUMP JUMPDEST PUSH2 0x10D PUSH2 0x246 CALLDATASIZE PUSH1 0x4 PUSH2 0x134B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x80AC58CD PUSH1 0xE0 SHL EQ DUP1 PUSH2 0x2A5 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x5B5E139F PUSH1 0xE0 SHL EQ JUMPDEST DUP1 PUSH2 0x2C0 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 SLOAD PUSH2 0x2D5 SWAP1 PUSH2 0x137E JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x301 SWAP1 PUSH2 0x137E JUMP JUMPDEST DUP1 ISZERO PUSH2 0x34E JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x323 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x34E JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x331 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x363 DUP3 PUSH2 0x750 JUMP JUMPDEST POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x38A DUP3 PUSH2 0x545 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x3FC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F76616C20746F2063757272656E74206F776E65 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x39 PUSH1 0xF9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND EQ DUP1 PUSH2 0x418 JUMPI POP PUSH2 0x418 DUP2 CALLER PUSH2 0x246 JUMP JUMPDEST PUSH2 0x48A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F76652063616C6C6572206973206E6F7420746F PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6B656E206F776E6572206F7220617070726F76656420666F7220616C6C000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3F3 JUMP JUMPDEST PUSH2 0x494 DUP4 DUP4 PUSH2 0x7B4 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x4A3 CALLER DUP3 PUSH2 0x822 JUMP JUMPDEST PUSH2 0x505 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A2063616C6C6572206973206E6F7420746F6B656E206F776E65 PUSH1 0x44 DUP3 ADD MSTORE PUSH13 0x1C881BDC88185C1C1C9BDD9959 PUSH1 0x9A SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3F3 JUMP JUMPDEST PUSH2 0x494 DUP4 DUP4 DUP4 PUSH2 0x8A1 JUMP JUMPDEST PUSH2 0x51A DUP3 DUP3 PUSH2 0xA81 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x494 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x65E JUMP JUMPDEST PUSH2 0x542 DUP2 PUSH2 0xC0C JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP1 PUSH2 0x2C0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20696E76616C696420746F6B656E2049440000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3F3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x628 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A2061646472657373207A65726F206973206E6F742061207661 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6C6964206F776E65720000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3F3 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 DUP1 SLOAD PUSH2 0x2D5 SWAP1 PUSH2 0x137E JUMP JUMPDEST PUSH2 0x51A CALLER DUP4 DUP4 PUSH2 0xCA1 JUMP JUMPDEST PUSH2 0x668 CALLER DUP4 PUSH2 0x822 JUMP JUMPDEST PUSH2 0x6CA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A2063616C6C6572206973206E6F7420746F6B656E206F776E65 PUSH1 0x44 DUP3 ADD MSTORE PUSH13 0x1C881BDC88185C1C1C9BDD9959 PUSH1 0x9A SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3F3 JUMP JUMPDEST PUSH2 0x6D6 DUP5 DUP5 DUP5 DUP5 PUSH2 0xD6F JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x6E7 DUP3 PUSH2 0x750 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6FE PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE SWAP1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 MLOAD GT PUSH2 0x71E JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x749 JUMP JUMPDEST DUP1 PUSH2 0x728 DUP5 PUSH2 0xDF8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x739 SWAP3 SWAP2 SWAP1 PUSH2 0x13B8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x542 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20696E76616C696420746F6B656E2049440000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3F3 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP2 SWAP1 PUSH2 0x7E9 DUP3 PUSH2 0x545 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x82E DUP4 PUSH2 0x545 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x875 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP9 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST DUP1 PUSH2 0x899 JUMPI POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x88E DUP5 PUSH2 0x358 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x8B4 DUP3 PUSH2 0x545 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x918 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E736665722066726F6D20696E636F727265637420 PUSH1 0x44 DUP3 ADD MSTORE PUSH5 0x37BBB732B9 PUSH1 0xD9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3F3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x97A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F20746865207A65726F20616464 PUSH1 0x44 DUP3 ADD MSTORE PUSH4 0x72657373 PUSH1 0xE0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3F3 JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x98D DUP3 PUSH2 0x545 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x9F1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E736665722066726F6D20696E636F727265637420 PUSH1 0x44 DUP3 ADD MSTORE PUSH5 0x37BBB732B9 PUSH1 0xD9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3F3 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 DUP2 AND SWAP1 SWAP2 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND DUP1 DUP7 MSTORE PUSH1 0x3 DUP6 MSTORE DUP4 DUP7 KECCAK256 DUP1 SLOAD PUSH1 0x0 NOT ADD SWAP1 SSTORE SWAP1 DUP8 AND DUP1 DUP7 MSTORE DUP4 DUP7 KECCAK256 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE DUP7 DUP7 MSTORE PUSH1 0x2 SWAP1 SWAP5 MSTORE DUP3 DUP6 KECCAK256 DUP1 SLOAD SWAP1 SWAP3 AND DUP5 OR SWAP1 SWAP2 SSTORE SWAP1 MLOAD DUP5 SWAP4 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 LOG4 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xAD7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206D696E7420746F20746865207A65726F2061646472657373 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3F3 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0xB3C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20746F6B656E20616C7265616479206D696E74656400000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3F3 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0xBA1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20746F6B656E20616C7265616479206D696E74656400000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3F3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE DUP5 DUP4 MSTORE PUSH1 0x2 SWAP1 SWAP2 MSTORE DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND DUP5 OR SWAP1 SSTORE MLOAD DUP4 SWAP3 SWAP2 SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 DUP3 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC17 DUP3 PUSH2 0x545 JUMP JUMPDEST SWAP1 POP PUSH2 0xC22 DUP3 PUSH2 0x545 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 DUP2 AND SWAP1 SWAP2 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP1 DUP6 MSTORE PUSH1 0x3 DUP5 MSTORE DUP3 DUP6 KECCAK256 DUP1 SLOAD PUSH1 0x0 NOT ADD SWAP1 SSTORE DUP8 DUP6 MSTORE PUSH1 0x2 SWAP1 SWAP4 MSTORE DUP2 DUP5 KECCAK256 DUP1 SLOAD SWAP1 SWAP2 AND SWAP1 SSTORE MLOAD SWAP3 SWAP4 POP DUP5 SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 DUP4 SWAP1 LOG4 POP POP JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0xD02 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F766520746F2063616C6C657200000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3F3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND DUP7 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP2 MLOAD SWAP2 DUP3 MSTORE PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0xD7A DUP5 DUP5 DUP5 PUSH2 0x8A1 JUMP JUMPDEST PUSH2 0xD86 DUP5 DUP5 DUP5 DUP5 PUSH2 0xE98 JUMP JUMPDEST PUSH2 0x6D6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x32 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F206E6F6E204552433732315265 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x63656976657220696D706C656D656E7465720000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3F3 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0xE05 DUP4 PUSH2 0xFEF JUMP JUMPDEST PUSH1 0x1 ADD SWAP1 POP PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xE25 JUMPI PUSH2 0xE25 PUSH2 0x1259 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xE4F JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP DUP2 DUP2 ADD PUSH1 0x20 ADD JUMPDEST PUSH1 0x0 NOT ADD PUSH32 0x3031323334353637383961626364656600000000000000000000000000000000 PUSH1 0xA DUP7 MOD BYTE DUP2 MSTORE8 PUSH1 0xA DUP6 DIV SWAP5 POP DUP5 PUSH2 0xE59 JUMPI POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO PUSH2 0xFE4 JUMPI PUSH1 0x40 MLOAD PUSH4 0xA85BD01 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0x150B7A02 SWAP1 PUSH2 0xEDC SWAP1 CALLER SWAP1 DUP10 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x13E7 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0xF17 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0xF14 SWAP2 DUP2 ADD SWAP1 PUSH2 0x1423 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0xFCA JUMPI RETURNDATASIZE DUP1 DUP1 ISZERO PUSH2 0xF45 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xF4A JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP DUP1 MLOAD PUSH1 0x0 SUB PUSH2 0xFC2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x32 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F206E6F6E204552433732315265 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x63656976657220696D706C656D656E7465720000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3F3 JUMP JUMPDEST DUP1 MLOAD DUP2 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH4 0xA85BD01 PUSH1 0xE1 SHL EQ SWAP1 POP PUSH2 0x899 JUMP JUMPDEST POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH27 0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F010000000000000000 DUP4 LT PUSH2 0x1038 JUMPI PUSH27 0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F010000000000000000 DUP4 DIV SWAP3 POP PUSH1 0x40 ADD JUMPDEST PUSH14 0x4EE2D6D415B85ACEF8100000000 DUP4 LT PUSH2 0x1064 JUMPI PUSH14 0x4EE2D6D415B85ACEF8100000000 DUP4 DIV SWAP3 POP PUSH1 0x20 ADD JUMPDEST PUSH7 0x2386F26FC10000 DUP4 LT PUSH2 0x1082 JUMPI PUSH7 0x2386F26FC10000 DUP4 DIV SWAP3 POP PUSH1 0x10 ADD JUMPDEST PUSH4 0x5F5E100 DUP4 LT PUSH2 0x109A JUMPI PUSH4 0x5F5E100 DUP4 DIV SWAP3 POP PUSH1 0x8 ADD JUMPDEST PUSH2 0x2710 DUP4 LT PUSH2 0x10AE JUMPI PUSH2 0x2710 DUP4 DIV SWAP3 POP PUSH1 0x4 ADD JUMPDEST PUSH1 0x64 DUP4 LT PUSH2 0x10C0 JUMPI PUSH1 0x64 DUP4 DIV SWAP3 POP PUSH1 0x2 ADD JUMPDEST PUSH1 0xA DUP4 LT PUSH2 0x2C0 JUMPI PUSH1 0x1 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x542 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x10F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x749 DUP2 PUSH2 0x10D1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x111F JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1107 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x1140 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x1104 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x749 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x1128 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1179 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x1197 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x11AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x11B8 DUP4 PUSH2 0x1180 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x11DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x11E4 DUP5 PUSH2 0x1180 JUMP JUMPDEST SWAP3 POP PUSH2 0x11F2 PUSH1 0x20 DUP6 ADD PUSH2 0x1180 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1214 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x749 DUP3 PUSH2 0x1180 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1230 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1239 DUP4 PUSH2 0x1180 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x124E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x1285 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x128E DUP6 PUSH2 0x1180 JUMP JUMPDEST SWAP4 POP PUSH2 0x129C PUSH1 0x20 DUP7 ADD PUSH2 0x1180 JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x12C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x12D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x12E6 JUMPI PUSH2 0x12E6 PUSH2 0x1259 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x130E JUMPI PUSH2 0x130E PUSH2 0x1259 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP11 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x1327 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x135E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1367 DUP4 PUSH2 0x1180 JUMP JUMPDEST SWAP2 POP PUSH2 0x1375 PUSH1 0x20 DUP5 ADD PUSH2 0x1180 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x1392 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x13B2 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP4 MLOAD PUSH2 0x13CA DUP2 DUP5 PUSH1 0x20 DUP9 ADD PUSH2 0x1104 JUMP JUMPDEST DUP4 MLOAD SWAP1 DUP4 ADD SWAP1 PUSH2 0x13DE DUP2 DUP4 PUSH1 0x20 DUP9 ADD PUSH2 0x1104 JUMP JUMPDEST ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND DUP4 MSTORE DUP1 DUP7 AND PUSH1 0x20 DUP5 ADD MSTORE POP DUP4 PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x80 PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x1419 PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x1128 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1435 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x749 DUP2 PUSH2 0x10D1 JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"298:295:60:-:0;;;334:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;397:5;404:7;1456:5:29;:13;397:5:60;1456::29;:13;:::i;:::-;-1:-1:-1;1479:7:29;:17;1489:7;1479;:17;:::i;:::-;;1390:113;;334:81:60;;298:295;;14:127:92;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:840;200:5;253:3;246:4;238:6;234:17;230:27;220:55;;271:1;268;261:12;220:55;294:13;;-1:-1:-1;;;;;356:10:92;;;353:36;;;369:18;;:::i;:::-;444:2;438:9;412:2;498:13;;-1:-1:-1;;494:22:92;;;518:2;490:31;486:40;474:53;;;542:18;;;562:22;;;539:46;536:72;;;588:18;;:::i;:::-;628:10;624:2;617:22;663:2;655:6;648:18;685:4;675:14;;730:3;725:2;720;712:6;708:15;704:24;701:33;698:53;;;747:1;744;737:12;698:53;769:1;760:10;;779:133;793:2;790:1;787:9;779:133;;;881:14;;;877:23;;871:30;850:14;;;846:23;;839:63;804:10;;;;779:133;;;954:1;932:15;;;928:24;;;921:35;;;;936:6;146:840;-1:-1:-1;;;;146:840:92:o;991:562::-;1090:6;1098;1151:2;1139:9;1130:7;1126:23;1122:32;1119:52;;;1167:1;1164;1157:12;1119:52;1194:16;;-1:-1:-1;;;;;1259:14:92;;;1256:34;;;1286:1;1283;1276:12;1256:34;1309:61;1362:7;1353:6;1342:9;1338:22;1309:61;:::i;:::-;1299:71;;1416:2;1405:9;1401:18;1395:25;1379:41;;1445:2;1435:8;1432:16;1429:36;;;1461:1;1458;1451:12;1429:36;;1484:63;1539:7;1528:8;1517:9;1513:24;1484:63;:::i;:::-;1474:73;;;991:562;;;;;:::o;1558:380::-;1637:1;1633:12;;;;1680;;;1701:61;;1755:4;1747:6;1743:17;1733:27;;1701:61;1808:2;1800:6;1797:14;1777:18;1774:38;1771:161;;1854:10;1849:3;1845:20;1842:1;1835:31;1889:4;1886:1;1879:15;1917:4;1914:1;1907:15;1771:161;;1558:380;;;:::o;2069:545::-;2171:2;2166:3;2163:11;2160:448;;;2207:1;2232:5;2228:2;2221:17;2277:4;2273:2;2263:19;2347:2;2335:10;2331:19;2328:1;2324:27;2318:4;2314:38;2383:4;2371:10;2368:20;2365:47;;;-1:-1:-1;2406:4:92;2365:47;2461:2;2456:3;2452:12;2449:1;2445:20;2439:4;2435:31;2425:41;;2516:82;2534:2;2527:5;2524:13;2516:82;;;2579:17;;;2560:1;2549:13;2516:82;;;2520:3;;;2160:448;2069:545;;;:::o;2790:1352::-;2910:10;;-1:-1:-1;;;;;2932:30:92;;2929:56;;;2965:18;;:::i;:::-;2994:97;3084:6;3044:38;3076:4;3070:11;3044:38;:::i;:::-;3038:4;2994:97;:::i;:::-;3146:4;;3210:2;3199:14;;3227:1;3222:663;;;;3929:1;3946:6;3943:89;;;-1:-1:-1;3998:19:92;;;3992:26;3943:89;-1:-1:-1;;2747:1:92;2743:11;;;2739:24;2735:29;2725:40;2771:1;2767:11;;;2722:57;4045:81;;3192:944;;3222:663;2016:1;2009:14;;;2053:4;2040:18;;-1:-1:-1;;3258:20:92;;;3376:236;3390:7;3387:1;3384:14;3376:236;;;3479:19;;;3473:26;3458:42;;3571:27;;;;3539:1;3527:14;;;;3406:19;;3376:236;;;3380:3;3640:6;3631:7;3628:19;3625:201;;;3701:19;;;3695:26;-1:-1:-1;;3784:1:92;3780:14;;;3796:3;3776:24;3772:37;3768:42;3753:58;3738:74;;3625:201;-1:-1:-1;;;;;3872:1:92;3856:14;;;3852:22;3839:36;;-1:-1:-1;2790:1352:92:o;:::-;298:295:60;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_afterTokenTransfer_8757":{"entryPoint":null,"id":8757,"parameterSlots":4,"returnSlots":0},"@_approve_8623":{"entryPoint":1972,"id":8623,"parameterSlots":2,"returnSlots":0},"@_baseURI_8060":{"entryPoint":null,"id":8060,"parameterSlots":0,"returnSlots":1},"@_beforeTokenTransfer_8744":{"entryPoint":null,"id":8744,"parameterSlots":4,"returnSlots":0},"@_burn_8514":{"entryPoint":3084,"id":8514,"parameterSlots":1,"returnSlots":0},"@_checkOnERC721Received_8731":{"entryPoint":3736,"id":8731,"parameterSlots":4,"returnSlots":1},"@_exists_8292":{"entryPoint":null,"id":8292,"parameterSlots":1,"returnSlots":1},"@_isApprovedOrOwner_8326":{"entryPoint":2082,"id":8326,"parameterSlots":2,"returnSlots":1},"@_mint_8447":{"entryPoint":2689,"id":8447,"parameterSlots":2,"returnSlots":0},"@_msgSender_9276":{"entryPoint":null,"id":9276,"parameterSlots":0,"returnSlots":1},"@_ownerOf_8274":{"entryPoint":null,"id":8274,"parameterSlots":1,"returnSlots":1},"@_requireMinted_8669":{"entryPoint":1872,"id":8669,"parameterSlots":1,"returnSlots":0},"@_safeTransfer_8261":{"entryPoint":3439,"id":8261,"parameterSlots":4,"returnSlots":0},"@_setApprovalForAll_8655":{"entryPoint":3233,"id":8655,"parameterSlots":3,"returnSlots":0},"@_transfer_8599":{"entryPoint":2209,"id":8599,"parameterSlots":3,"returnSlots":0},"@approve_8103":{"entryPoint":895,"id":8103,"parameterSlots":2,"returnSlots":0},"@balanceOf_7964":{"entryPoint":1450,"id":7964,"parameterSlots":1,"returnSlots":1},"@burn_12802":{"entryPoint":1337,"id":12802,"parameterSlots":1,"returnSlots":0},"@getApproved_8121":{"entryPoint":856,"id":8121,"parameterSlots":1,"returnSlots":1},"@isApprovedForAll_8156":{"entryPoint":null,"id":8156,"parameterSlots":2,"returnSlots":1},"@isContract_8952":{"entryPoint":null,"id":8952,"parameterSlots":1,"returnSlots":1},"@log10_10446":{"entryPoint":4079,"id":10446,"parameterSlots":1,"returnSlots":1},"@mint_12792":{"entryPoint":1296,"id":12792,"parameterSlots":2,"returnSlots":0},"@name_8002":{"entryPoint":710,"id":8002,"parameterSlots":0,"returnSlots":1},"@ownerOf_7992":{"entryPoint":1349,"id":7992,"parameterSlots":1,"returnSlots":1},"@safeTransferFrom_8202":{"entryPoint":1310,"id":8202,"parameterSlots":3,"returnSlots":0},"@safeTransferFrom_8232":{"entryPoint":1630,"id":8232,"parameterSlots":4,"returnSlots":0},"@setApprovalForAll_8138":{"entryPoint":1619,"id":8138,"parameterSlots":2,"returnSlots":0},"@supportsInterface_7940":{"entryPoint":628,"id":7940,"parameterSlots":1,"returnSlots":1},"@supportsInterface_9730":{"entryPoint":null,"id":9730,"parameterSlots":1,"returnSlots":1},"@symbol_8012":{"entryPoint":1604,"id":8012,"parameterSlots":0,"returnSlots":1},"@toString_9537":{"entryPoint":3576,"id":9537,"parameterSlots":1,"returnSlots":1},"@tokenURI_8051":{"entryPoint":1756,"id":8051,"parameterSlots":1,"returnSlots":1},"@transferFrom_8183":{"entryPoint":1177,"id":8183,"parameterSlots":3,"returnSlots":0},"abi_decode_address":{"entryPoint":4480,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_tuple_t_address":{"entryPoint":4610,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_address":{"entryPoint":4939,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_addresst_uint256":{"entryPoint":4550,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr":{"entryPoint":4719,"id":null,"parameterSlots":2,"returnSlots":4},"abi_decode_tuple_t_addresst_bool":{"entryPoint":4637,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_uint256":{"entryPoint":4508,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_bytes4":{"entryPoint":4327,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes4_fromMemory":{"entryPoint":5155,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256":{"entryPoint":4455,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_string":{"entryPoint":4392,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_packed_t_string_memory_ptr_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":5048,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address_t_address_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":5095,"id":null,"parameterSlots":5,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":4436,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_12a8e5623d251e191fe4a291d9a59bcc01a4db7a1f5c20fc8de44358c18308af__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_c6e14a63ffb144eeef7cce6988e5dce07c60a7e0a7b1ef25dbe18c61483e0a83__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"copy_memory_to_memory_with_cleanup":{"entryPoint":4356,"id":null,"parameterSlots":3,"returnSlots":0},"extract_byte_array_length":{"entryPoint":4990,"id":null,"parameterSlots":1,"returnSlots":1},"panic_error_0x12":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":4697,"id":null,"parameterSlots":0,"returnSlots":0},"validator_revert_bytes4":{"entryPoint":4305,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:10919:92","statements":[{"nodeType":"YulBlock","src":"6:3:92","statements":[]},{"body":{"nodeType":"YulBlock","src":"58:87:92","statements":[{"body":{"nodeType":"YulBlock","src":"123:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"132:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"135:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"125:6:92"},"nodeType":"YulFunctionCall","src":"125:12:92"},"nodeType":"YulExpressionStatement","src":"125:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"81:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"92:5:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"103:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"108:10:92","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"99:3:92"},"nodeType":"YulFunctionCall","src":"99:20:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"88:3:92"},"nodeType":"YulFunctionCall","src":"88:32:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"78:2:92"},"nodeType":"YulFunctionCall","src":"78:43:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"71:6:92"},"nodeType":"YulFunctionCall","src":"71:51:92"},"nodeType":"YulIf","src":"68:71:92"}]},"name":"validator_revert_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"47:5:92","type":""}],"src":"14:131:92"},{"body":{"nodeType":"YulBlock","src":"219:176:92","statements":[{"body":{"nodeType":"YulBlock","src":"265:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"274:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"277:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"267:6:92"},"nodeType":"YulFunctionCall","src":"267:12:92"},"nodeType":"YulExpressionStatement","src":"267:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"240:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"249:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"236:3:92"},"nodeType":"YulFunctionCall","src":"236:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"261:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"232:3:92"},"nodeType":"YulFunctionCall","src":"232:32:92"},"nodeType":"YulIf","src":"229:52:92"},{"nodeType":"YulVariableDeclaration","src":"290:36:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"316:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"303:12:92"},"nodeType":"YulFunctionCall","src":"303:23:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"294:5:92","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"359:5:92"}],"functionName":{"name":"validator_revert_bytes4","nodeType":"YulIdentifier","src":"335:23:92"},"nodeType":"YulFunctionCall","src":"335:30:92"},"nodeType":"YulExpressionStatement","src":"335:30:92"},{"nodeType":"YulAssignment","src":"374:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"384:5:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"374:6:92"}]}]},"name":"abi_decode_tuple_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"185:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"196:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"208:6:92","type":""}],"src":"150:245:92"},{"body":{"nodeType":"YulBlock","src":"495:92:92","statements":[{"nodeType":"YulAssignment","src":"505:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"517:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"528:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"513:3:92"},"nodeType":"YulFunctionCall","src":"513:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"505:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"547:9:92"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"572:6:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"565:6:92"},"nodeType":"YulFunctionCall","src":"565:14:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"558:6:92"},"nodeType":"YulFunctionCall","src":"558:22:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"540:6:92"},"nodeType":"YulFunctionCall","src":"540:41:92"},"nodeType":"YulExpressionStatement","src":"540:41:92"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"464:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"475:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"486:4:92","type":""}],"src":"400:187:92"},{"body":{"nodeType":"YulBlock","src":"658:184:92","statements":[{"nodeType":"YulVariableDeclaration","src":"668:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"677:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"672:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"737:63:92","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"762:3:92"},{"name":"i","nodeType":"YulIdentifier","src":"767:1:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"758:3:92"},"nodeType":"YulFunctionCall","src":"758:11:92"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"781:3:92"},{"name":"i","nodeType":"YulIdentifier","src":"786:1:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"777:3:92"},"nodeType":"YulFunctionCall","src":"777:11:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"771:5:92"},"nodeType":"YulFunctionCall","src":"771:18:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"751:6:92"},"nodeType":"YulFunctionCall","src":"751:39:92"},"nodeType":"YulExpressionStatement","src":"751:39:92"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"698:1:92"},{"name":"length","nodeType":"YulIdentifier","src":"701:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"695:2:92"},"nodeType":"YulFunctionCall","src":"695:13:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"709:19:92","statements":[{"nodeType":"YulAssignment","src":"711:15:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"720:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"723:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"716:3:92"},"nodeType":"YulFunctionCall","src":"716:10:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"711:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"691:3:92","statements":[]},"src":"687:113:92"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"820:3:92"},{"name":"length","nodeType":"YulIdentifier","src":"825:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"816:3:92"},"nodeType":"YulFunctionCall","src":"816:16:92"},{"kind":"number","nodeType":"YulLiteral","src":"834:1:92","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"809:6:92"},"nodeType":"YulFunctionCall","src":"809:27:92"},"nodeType":"YulExpressionStatement","src":"809:27:92"}]},"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"636:3:92","type":""},{"name":"dst","nodeType":"YulTypedName","src":"641:3:92","type":""},{"name":"length","nodeType":"YulTypedName","src":"646:6:92","type":""}],"src":"592:250:92"},{"body":{"nodeType":"YulBlock","src":"897:221:92","statements":[{"nodeType":"YulVariableDeclaration","src":"907:26:92","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"927:5:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"921:5:92"},"nodeType":"YulFunctionCall","src":"921:12:92"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"911:6:92","type":""}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"949:3:92"},{"name":"length","nodeType":"YulIdentifier","src":"954:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"942:6:92"},"nodeType":"YulFunctionCall","src":"942:19:92"},"nodeType":"YulExpressionStatement","src":"942:19:92"},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1009:5:92"},{"kind":"number","nodeType":"YulLiteral","src":"1016:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1005:3:92"},"nodeType":"YulFunctionCall","src":"1005:16:92"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1027:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"1032:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1023:3:92"},"nodeType":"YulFunctionCall","src":"1023:14:92"},{"name":"length","nodeType":"YulIdentifier","src":"1039:6:92"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"970:34:92"},"nodeType":"YulFunctionCall","src":"970:76:92"},"nodeType":"YulExpressionStatement","src":"970:76:92"},{"nodeType":"YulAssignment","src":"1055:57:92","value":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1070:3:92"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"1083:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"1091:2:92","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1079:3:92"},"nodeType":"YulFunctionCall","src":"1079:15:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1100:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"1096:3:92"},"nodeType":"YulFunctionCall","src":"1096:7:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1075:3:92"},"nodeType":"YulFunctionCall","src":"1075:29:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1066:3:92"},"nodeType":"YulFunctionCall","src":"1066:39:92"},{"kind":"number","nodeType":"YulLiteral","src":"1107:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1062:3:92"},"nodeType":"YulFunctionCall","src":"1062:50:92"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1055:3:92"}]}]},"name":"abi_encode_string","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"874:5:92","type":""},{"name":"pos","nodeType":"YulTypedName","src":"881:3:92","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"889:3:92","type":""}],"src":"847:271:92"},{"body":{"nodeType":"YulBlock","src":"1244:99:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1261:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1272:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1254:6:92"},"nodeType":"YulFunctionCall","src":"1254:21:92"},"nodeType":"YulExpressionStatement","src":"1254:21:92"},{"nodeType":"YulAssignment","src":"1284:53:92","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1310:6:92"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1322:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1333:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1318:3:92"},"nodeType":"YulFunctionCall","src":"1318:18:92"}],"functionName":{"name":"abi_encode_string","nodeType":"YulIdentifier","src":"1292:17:92"},"nodeType":"YulFunctionCall","src":"1292:45:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1284:4:92"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1213:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1224:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1235:4:92","type":""}],"src":"1123:220:92"},{"body":{"nodeType":"YulBlock","src":"1418:110:92","statements":[{"body":{"nodeType":"YulBlock","src":"1464:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1473:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1476:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1466:6:92"},"nodeType":"YulFunctionCall","src":"1466:12:92"},"nodeType":"YulExpressionStatement","src":"1466:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1439:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"1448:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1435:3:92"},"nodeType":"YulFunctionCall","src":"1435:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"1460:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1431:3:92"},"nodeType":"YulFunctionCall","src":"1431:32:92"},"nodeType":"YulIf","src":"1428:52:92"},{"nodeType":"YulAssignment","src":"1489:33:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1512:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1499:12:92"},"nodeType":"YulFunctionCall","src":"1499:23:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1489:6:92"}]}]},"name":"abi_decode_tuple_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1384:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1395:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1407:6:92","type":""}],"src":"1348:180:92"},{"body":{"nodeType":"YulBlock","src":"1634:125:92","statements":[{"nodeType":"YulAssignment","src":"1644:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1656:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1667:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1652:3:92"},"nodeType":"YulFunctionCall","src":"1652:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1644:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1686:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1701:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"1709:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1697:3:92"},"nodeType":"YulFunctionCall","src":"1697:55:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1679:6:92"},"nodeType":"YulFunctionCall","src":"1679:74:92"},"nodeType":"YulExpressionStatement","src":"1679:74:92"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1603:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1614:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1625:4:92","type":""}],"src":"1533:226:92"},{"body":{"nodeType":"YulBlock","src":"1813:147:92","statements":[{"nodeType":"YulAssignment","src":"1823:29:92","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1845:6:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1832:12:92"},"nodeType":"YulFunctionCall","src":"1832:20:92"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"1823:5:92"}]},{"body":{"nodeType":"YulBlock","src":"1938:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1947:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1950:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1940:6:92"},"nodeType":"YulFunctionCall","src":"1940:12:92"},"nodeType":"YulExpressionStatement","src":"1940:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1874:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1885:5:92"},{"kind":"number","nodeType":"YulLiteral","src":"1892:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1881:3:92"},"nodeType":"YulFunctionCall","src":"1881:54:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1871:2:92"},"nodeType":"YulFunctionCall","src":"1871:65:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1864:6:92"},"nodeType":"YulFunctionCall","src":"1864:73:92"},"nodeType":"YulIf","src":"1861:93:92"}]},"name":"abi_decode_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"1792:6:92","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"1803:5:92","type":""}],"src":"1764:196:92"},{"body":{"nodeType":"YulBlock","src":"2052:167:92","statements":[{"body":{"nodeType":"YulBlock","src":"2098:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2107:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2110:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2100:6:92"},"nodeType":"YulFunctionCall","src":"2100:12:92"},"nodeType":"YulExpressionStatement","src":"2100:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2073:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"2082:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2069:3:92"},"nodeType":"YulFunctionCall","src":"2069:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"2094:2:92","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2065:3:92"},"nodeType":"YulFunctionCall","src":"2065:32:92"},"nodeType":"YulIf","src":"2062:52:92"},{"nodeType":"YulAssignment","src":"2123:39:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2152:9:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"2133:18:92"},"nodeType":"YulFunctionCall","src":"2133:29:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2123:6:92"}]},{"nodeType":"YulAssignment","src":"2171:42:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2198:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2209:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2194:3:92"},"nodeType":"YulFunctionCall","src":"2194:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2181:12:92"},"nodeType":"YulFunctionCall","src":"2181:32:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"2171:6:92"}]}]},"name":"abi_decode_tuple_t_addresst_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2010:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2021:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2033:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2041:6:92","type":""}],"src":"1965:254:92"},{"body":{"nodeType":"YulBlock","src":"2328:224:92","statements":[{"body":{"nodeType":"YulBlock","src":"2374:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2383:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2386:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2376:6:92"},"nodeType":"YulFunctionCall","src":"2376:12:92"},"nodeType":"YulExpressionStatement","src":"2376:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2349:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"2358:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2345:3:92"},"nodeType":"YulFunctionCall","src":"2345:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"2370:2:92","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2341:3:92"},"nodeType":"YulFunctionCall","src":"2341:32:92"},"nodeType":"YulIf","src":"2338:52:92"},{"nodeType":"YulAssignment","src":"2399:39:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2428:9:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"2409:18:92"},"nodeType":"YulFunctionCall","src":"2409:29:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2399:6:92"}]},{"nodeType":"YulAssignment","src":"2447:48:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2480:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2491:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2476:3:92"},"nodeType":"YulFunctionCall","src":"2476:18:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"2457:18:92"},"nodeType":"YulFunctionCall","src":"2457:38:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"2447:6:92"}]},{"nodeType":"YulAssignment","src":"2504:42:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2531:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2542:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2527:3:92"},"nodeType":"YulFunctionCall","src":"2527:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2514:12:92"},"nodeType":"YulFunctionCall","src":"2514:32:92"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"2504:6:92"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2278:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2289:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2301:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2309:6:92","type":""},{"name":"value2","nodeType":"YulTypedName","src":"2317:6:92","type":""}],"src":"2224:328:92"},{"body":{"nodeType":"YulBlock","src":"2627:116:92","statements":[{"body":{"nodeType":"YulBlock","src":"2673:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2682:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2685:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2675:6:92"},"nodeType":"YulFunctionCall","src":"2675:12:92"},"nodeType":"YulExpressionStatement","src":"2675:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2648:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"2657:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2644:3:92"},"nodeType":"YulFunctionCall","src":"2644:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"2669:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2640:3:92"},"nodeType":"YulFunctionCall","src":"2640:32:92"},"nodeType":"YulIf","src":"2637:52:92"},{"nodeType":"YulAssignment","src":"2698:39:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2727:9:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"2708:18:92"},"nodeType":"YulFunctionCall","src":"2708:29:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2698:6:92"}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2593:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2604:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2616:6:92","type":""}],"src":"2557:186:92"},{"body":{"nodeType":"YulBlock","src":"2849:76:92","statements":[{"nodeType":"YulAssignment","src":"2859:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2871:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2882:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2867:3:92"},"nodeType":"YulFunctionCall","src":"2867:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2859:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2901:9:92"},{"name":"value0","nodeType":"YulIdentifier","src":"2912:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2894:6:92"},"nodeType":"YulFunctionCall","src":"2894:25:92"},"nodeType":"YulExpressionStatement","src":"2894:25:92"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2818:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"2829:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2840:4:92","type":""}],"src":"2748:177:92"},{"body":{"nodeType":"YulBlock","src":"3014:263:92","statements":[{"body":{"nodeType":"YulBlock","src":"3060:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3069:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3072:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3062:6:92"},"nodeType":"YulFunctionCall","src":"3062:12:92"},"nodeType":"YulExpressionStatement","src":"3062:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3035:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"3044:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3031:3:92"},"nodeType":"YulFunctionCall","src":"3031:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"3056:2:92","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3027:3:92"},"nodeType":"YulFunctionCall","src":"3027:32:92"},"nodeType":"YulIf","src":"3024:52:92"},{"nodeType":"YulAssignment","src":"3085:39:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3114:9:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"3095:18:92"},"nodeType":"YulFunctionCall","src":"3095:29:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3085:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"3133:45:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3163:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3174:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3159:3:92"},"nodeType":"YulFunctionCall","src":"3159:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3146:12:92"},"nodeType":"YulFunctionCall","src":"3146:32:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"3137:5:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"3231:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3240:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3243:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3233:6:92"},"nodeType":"YulFunctionCall","src":"3233:12:92"},"nodeType":"YulExpressionStatement","src":"3233:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3200:5:92"},{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3221:5:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3214:6:92"},"nodeType":"YulFunctionCall","src":"3214:13:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3207:6:92"},"nodeType":"YulFunctionCall","src":"3207:21:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"3197:2:92"},"nodeType":"YulFunctionCall","src":"3197:32:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3190:6:92"},"nodeType":"YulFunctionCall","src":"3190:40:92"},"nodeType":"YulIf","src":"3187:60:92"},{"nodeType":"YulAssignment","src":"3256:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"3266:5:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"3256:6:92"}]}]},"name":"abi_decode_tuple_t_addresst_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2972:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2983:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2995:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"3003:6:92","type":""}],"src":"2930:347:92"},{"body":{"nodeType":"YulBlock","src":"3314:95:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3331:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3338:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"3343:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"3334:3:92"},"nodeType":"YulFunctionCall","src":"3334:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3324:6:92"},"nodeType":"YulFunctionCall","src":"3324:31:92"},"nodeType":"YulExpressionStatement","src":"3324:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3371:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"3374:4:92","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3364:6:92"},"nodeType":"YulFunctionCall","src":"3364:15:92"},"nodeType":"YulExpressionStatement","src":"3364:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3395:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3398:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3388:6:92"},"nodeType":"YulFunctionCall","src":"3388:15:92"},"nodeType":"YulExpressionStatement","src":"3388:15:92"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"3282:127:92"},{"body":{"nodeType":"YulBlock","src":"3544:1008:92","statements":[{"body":{"nodeType":"YulBlock","src":"3591:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3600:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3603:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3593:6:92"},"nodeType":"YulFunctionCall","src":"3593:12:92"},"nodeType":"YulExpressionStatement","src":"3593:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3565:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"3574:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3561:3:92"},"nodeType":"YulFunctionCall","src":"3561:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"3586:3:92","type":"","value":"128"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3557:3:92"},"nodeType":"YulFunctionCall","src":"3557:33:92"},"nodeType":"YulIf","src":"3554:53:92"},{"nodeType":"YulAssignment","src":"3616:39:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3645:9:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"3626:18:92"},"nodeType":"YulFunctionCall","src":"3626:29:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3616:6:92"}]},{"nodeType":"YulAssignment","src":"3664:48:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3697:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3708:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3693:3:92"},"nodeType":"YulFunctionCall","src":"3693:18:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"3674:18:92"},"nodeType":"YulFunctionCall","src":"3674:38:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"3664:6:92"}]},{"nodeType":"YulAssignment","src":"3721:42:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3748:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3759:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3744:3:92"},"nodeType":"YulFunctionCall","src":"3744:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3731:12:92"},"nodeType":"YulFunctionCall","src":"3731:32:92"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"3721:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"3772:46:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3803:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3814:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3799:3:92"},"nodeType":"YulFunctionCall","src":"3799:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3786:12:92"},"nodeType":"YulFunctionCall","src":"3786:32:92"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"3776:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3827:28:92","value":{"kind":"number","nodeType":"YulLiteral","src":"3837:18:92","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"3831:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"3882:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3891:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3894:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3884:6:92"},"nodeType":"YulFunctionCall","src":"3884:12:92"},"nodeType":"YulExpressionStatement","src":"3884:12:92"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"3870:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"3878:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3867:2:92"},"nodeType":"YulFunctionCall","src":"3867:14:92"},"nodeType":"YulIf","src":"3864:34:92"},{"nodeType":"YulVariableDeclaration","src":"3907:32:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3921:9:92"},{"name":"offset","nodeType":"YulIdentifier","src":"3932:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3917:3:92"},"nodeType":"YulFunctionCall","src":"3917:22:92"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"3911:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"3987:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3996:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3999:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3989:6:92"},"nodeType":"YulFunctionCall","src":"3989:12:92"},"nodeType":"YulExpressionStatement","src":"3989:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"3966:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"3970:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3962:3:92"},"nodeType":"YulFunctionCall","src":"3962:13:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3977:7:92"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3958:3:92"},"nodeType":"YulFunctionCall","src":"3958:27:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3951:6:92"},"nodeType":"YulFunctionCall","src":"3951:35:92"},"nodeType":"YulIf","src":"3948:55:92"},{"nodeType":"YulVariableDeclaration","src":"4012:26:92","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"4035:2:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4022:12:92"},"nodeType":"YulFunctionCall","src":"4022:16:92"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"4016:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"4061:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"4063:16:92"},"nodeType":"YulFunctionCall","src":"4063:18:92"},"nodeType":"YulExpressionStatement","src":"4063:18:92"}]},"condition":{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"4053:2:92"},{"name":"_1","nodeType":"YulIdentifier","src":"4057:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4050:2:92"},"nodeType":"YulFunctionCall","src":"4050:10:92"},"nodeType":"YulIf","src":"4047:36:92"},{"nodeType":"YulVariableDeclaration","src":"4092:17:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4106:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"4102:3:92"},"nodeType":"YulFunctionCall","src":"4102:7:92"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"4096:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4118:23:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4138:2:92","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4132:5:92"},"nodeType":"YulFunctionCall","src":"4132:9:92"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"4122:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4150:71:92","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"4172:6:92"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"4196:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"4200:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4192:3:92"},"nodeType":"YulFunctionCall","src":"4192:13:92"},{"name":"_4","nodeType":"YulIdentifier","src":"4207:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4188:3:92"},"nodeType":"YulFunctionCall","src":"4188:22:92"},{"kind":"number","nodeType":"YulLiteral","src":"4212:2:92","type":"","value":"63"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4184:3:92"},"nodeType":"YulFunctionCall","src":"4184:31:92"},{"name":"_4","nodeType":"YulIdentifier","src":"4217:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4180:3:92"},"nodeType":"YulFunctionCall","src":"4180:40:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4168:3:92"},"nodeType":"YulFunctionCall","src":"4168:53:92"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"4154:10:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"4280:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"4282:16:92"},"nodeType":"YulFunctionCall","src":"4282:18:92"},"nodeType":"YulExpressionStatement","src":"4282:18:92"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"4239:10:92"},{"name":"_1","nodeType":"YulIdentifier","src":"4251:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4236:2:92"},"nodeType":"YulFunctionCall","src":"4236:18:92"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"4259:10:92"},{"name":"memPtr","nodeType":"YulIdentifier","src":"4271:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"4256:2:92"},"nodeType":"YulFunctionCall","src":"4256:22:92"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"4233:2:92"},"nodeType":"YulFunctionCall","src":"4233:46:92"},"nodeType":"YulIf","src":"4230:72:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4318:2:92","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"4322:10:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4311:6:92"},"nodeType":"YulFunctionCall","src":"4311:22:92"},"nodeType":"YulExpressionStatement","src":"4311:22:92"},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"4349:6:92"},{"name":"_3","nodeType":"YulIdentifier","src":"4357:2:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4342:6:92"},"nodeType":"YulFunctionCall","src":"4342:18:92"},"nodeType":"YulExpressionStatement","src":"4342:18:92"},{"body":{"nodeType":"YulBlock","src":"4406:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4415:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4418:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4408:6:92"},"nodeType":"YulFunctionCall","src":"4408:12:92"},"nodeType":"YulExpressionStatement","src":"4408:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"4383:2:92"},{"name":"_3","nodeType":"YulIdentifier","src":"4387:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4379:3:92"},"nodeType":"YulFunctionCall","src":"4379:11:92"},{"kind":"number","nodeType":"YulLiteral","src":"4392:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4375:3:92"},"nodeType":"YulFunctionCall","src":"4375:20:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4397:7:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4372:2:92"},"nodeType":"YulFunctionCall","src":"4372:33:92"},"nodeType":"YulIf","src":"4369:53:92"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"4448:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"4456:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4444:3:92"},"nodeType":"YulFunctionCall","src":"4444:15:92"},{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"4465:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"4469:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4461:3:92"},"nodeType":"YulFunctionCall","src":"4461:11:92"},{"name":"_3","nodeType":"YulIdentifier","src":"4474:2:92"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"4431:12:92"},"nodeType":"YulFunctionCall","src":"4431:46:92"},"nodeType":"YulExpressionStatement","src":"4431:46:92"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"4501:6:92"},{"name":"_3","nodeType":"YulIdentifier","src":"4509:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4497:3:92"},"nodeType":"YulFunctionCall","src":"4497:15:92"},{"kind":"number","nodeType":"YulLiteral","src":"4514:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4493:3:92"},"nodeType":"YulFunctionCall","src":"4493:24:92"},{"kind":"number","nodeType":"YulLiteral","src":"4519:1:92","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4486:6:92"},"nodeType":"YulFunctionCall","src":"4486:35:92"},"nodeType":"YulExpressionStatement","src":"4486:35:92"},{"nodeType":"YulAssignment","src":"4530:16:92","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"4540:6:92"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"4530:6:92"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3486:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3497:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3509:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"3517:6:92","type":""},{"name":"value2","nodeType":"YulTypedName","src":"3525:6:92","type":""},{"name":"value3","nodeType":"YulTypedName","src":"3533:6:92","type":""}],"src":"3414:1138:92"},{"body":{"nodeType":"YulBlock","src":"4644:173:92","statements":[{"body":{"nodeType":"YulBlock","src":"4690:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4699:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4702:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4692:6:92"},"nodeType":"YulFunctionCall","src":"4692:12:92"},"nodeType":"YulExpressionStatement","src":"4692:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"4665:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"4674:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4661:3:92"},"nodeType":"YulFunctionCall","src":"4661:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"4686:2:92","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4657:3:92"},"nodeType":"YulFunctionCall","src":"4657:32:92"},"nodeType":"YulIf","src":"4654:52:92"},{"nodeType":"YulAssignment","src":"4715:39:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4744:9:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"4725:18:92"},"nodeType":"YulFunctionCall","src":"4725:29:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"4715:6:92"}]},{"nodeType":"YulAssignment","src":"4763:48:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4796:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4807:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4792:3:92"},"nodeType":"YulFunctionCall","src":"4792:18:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"4773:18:92"},"nodeType":"YulFunctionCall","src":"4773:38:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"4763:6:92"}]}]},"name":"abi_decode_tuple_t_addresst_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4602:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"4613:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"4625:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"4633:6:92","type":""}],"src":"4557:260:92"},{"body":{"nodeType":"YulBlock","src":"4877:325:92","statements":[{"nodeType":"YulAssignment","src":"4887:22:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4901:1:92","type":"","value":"1"},{"name":"data","nodeType":"YulIdentifier","src":"4904:4:92"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"4897:3:92"},"nodeType":"YulFunctionCall","src":"4897:12:92"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"4887:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"4918:38:92","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"4948:4:92"},{"kind":"number","nodeType":"YulLiteral","src":"4954:1:92","type":"","value":"1"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4944:3:92"},"nodeType":"YulFunctionCall","src":"4944:12:92"},"variables":[{"name":"outOfPlaceEncoding","nodeType":"YulTypedName","src":"4922:18:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"4995:31:92","statements":[{"nodeType":"YulAssignment","src":"4997:27:92","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"5011:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"5019:4:92","type":"","value":"0x7f"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5007:3:92"},"nodeType":"YulFunctionCall","src":"5007:17:92"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"4997:6:92"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"4975:18:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"4968:6:92"},"nodeType":"YulFunctionCall","src":"4968:26:92"},"nodeType":"YulIf","src":"4965:61:92"},{"body":{"nodeType":"YulBlock","src":"5085:111:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5106:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5113:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"5118:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"5109:3:92"},"nodeType":"YulFunctionCall","src":"5109:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5099:6:92"},"nodeType":"YulFunctionCall","src":"5099:31:92"},"nodeType":"YulExpressionStatement","src":"5099:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5150:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"5153:4:92","type":"","value":"0x22"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5143:6:92"},"nodeType":"YulFunctionCall","src":"5143:15:92"},"nodeType":"YulExpressionStatement","src":"5143:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5178:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5181:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5171:6:92"},"nodeType":"YulFunctionCall","src":"5171:15:92"},"nodeType":"YulExpressionStatement","src":"5171:15:92"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"5041:18:92"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"5064:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"5072:2:92","type":"","value":"32"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"5061:2:92"},"nodeType":"YulFunctionCall","src":"5061:14:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"5038:2:92"},"nodeType":"YulFunctionCall","src":"5038:38:92"},"nodeType":"YulIf","src":"5035:161:92"}]},"name":"extract_byte_array_length","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"4857:4:92","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"4866:6:92","type":""}],"src":"4822:380:92"},{"body":{"nodeType":"YulBlock","src":"5381:223:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5398:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5409:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5391:6:92"},"nodeType":"YulFunctionCall","src":"5391:21:92"},"nodeType":"YulExpressionStatement","src":"5391:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5432:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5443:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5428:3:92"},"nodeType":"YulFunctionCall","src":"5428:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"5448:2:92","type":"","value":"33"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5421:6:92"},"nodeType":"YulFunctionCall","src":"5421:30:92"},"nodeType":"YulExpressionStatement","src":"5421:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5471:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5482:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5467:3:92"},"nodeType":"YulFunctionCall","src":"5467:18:92"},{"hexValue":"4552433732313a20617070726f76616c20746f2063757272656e74206f776e65","kind":"string","nodeType":"YulLiteral","src":"5487:34:92","type":"","value":"ERC721: approval to current owne"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5460:6:92"},"nodeType":"YulFunctionCall","src":"5460:62:92"},"nodeType":"YulExpressionStatement","src":"5460:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5542:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5553:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5538:3:92"},"nodeType":"YulFunctionCall","src":"5538:18:92"},{"hexValue":"72","kind":"string","nodeType":"YulLiteral","src":"5558:3:92","type":"","value":"r"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5531:6:92"},"nodeType":"YulFunctionCall","src":"5531:31:92"},"nodeType":"YulExpressionStatement","src":"5531:31:92"},{"nodeType":"YulAssignment","src":"5571:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5583:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5594:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5579:3:92"},"nodeType":"YulFunctionCall","src":"5579:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5571:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5358:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5372:4:92","type":""}],"src":"5207:397:92"},{"body":{"nodeType":"YulBlock","src":"5783:251:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5800:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5811:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5793:6:92"},"nodeType":"YulFunctionCall","src":"5793:21:92"},"nodeType":"YulExpressionStatement","src":"5793:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5834:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5845:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5830:3:92"},"nodeType":"YulFunctionCall","src":"5830:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"5850:2:92","type":"","value":"61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5823:6:92"},"nodeType":"YulFunctionCall","src":"5823:30:92"},"nodeType":"YulExpressionStatement","src":"5823:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5873:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5884:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5869:3:92"},"nodeType":"YulFunctionCall","src":"5869:18:92"},{"hexValue":"4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f","kind":"string","nodeType":"YulLiteral","src":"5889:34:92","type":"","value":"ERC721: approve caller is not to"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5862:6:92"},"nodeType":"YulFunctionCall","src":"5862:62:92"},"nodeType":"YulExpressionStatement","src":"5862:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5944:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5955:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5940:3:92"},"nodeType":"YulFunctionCall","src":"5940:18:92"},{"hexValue":"6b656e206f776e6572206f7220617070726f76656420666f7220616c6c","kind":"string","nodeType":"YulLiteral","src":"5960:31:92","type":"","value":"ken owner or approved for all"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5933:6:92"},"nodeType":"YulFunctionCall","src":"5933:59:92"},"nodeType":"YulExpressionStatement","src":"5933:59:92"},{"nodeType":"YulAssignment","src":"6001:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6013:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6024:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6009:3:92"},"nodeType":"YulFunctionCall","src":"6009:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6001:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_c6e14a63ffb144eeef7cce6988e5dce07c60a7e0a7b1ef25dbe18c61483e0a83__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5760:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5774:4:92","type":""}],"src":"5609:425:92"},{"body":{"nodeType":"YulBlock","src":"6213:235:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6230:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6241:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6223:6:92"},"nodeType":"YulFunctionCall","src":"6223:21:92"},"nodeType":"YulExpressionStatement","src":"6223:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6264:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6275:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6260:3:92"},"nodeType":"YulFunctionCall","src":"6260:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"6280:2:92","type":"","value":"45"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6253:6:92"},"nodeType":"YulFunctionCall","src":"6253:30:92"},"nodeType":"YulExpressionStatement","src":"6253:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6303:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6314:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6299:3:92"},"nodeType":"YulFunctionCall","src":"6299:18:92"},{"hexValue":"4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e65","kind":"string","nodeType":"YulLiteral","src":"6319:34:92","type":"","value":"ERC721: caller is not token owne"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6292:6:92"},"nodeType":"YulFunctionCall","src":"6292:62:92"},"nodeType":"YulExpressionStatement","src":"6292:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6374:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6385:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6370:3:92"},"nodeType":"YulFunctionCall","src":"6370:18:92"},{"hexValue":"72206f7220617070726f766564","kind":"string","nodeType":"YulLiteral","src":"6390:15:92","type":"","value":"r or approved"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6363:6:92"},"nodeType":"YulFunctionCall","src":"6363:43:92"},"nodeType":"YulExpressionStatement","src":"6363:43:92"},{"nodeType":"YulAssignment","src":"6415:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6427:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6438:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6423:3:92"},"nodeType":"YulFunctionCall","src":"6423:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6415:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_12a8e5623d251e191fe4a291d9a59bcc01a4db7a1f5c20fc8de44358c18308af__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6190:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6204:4:92","type":""}],"src":"6039:409:92"},{"body":{"nodeType":"YulBlock","src":"6627:174:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6644:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6655:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6637:6:92"},"nodeType":"YulFunctionCall","src":"6637:21:92"},"nodeType":"YulExpressionStatement","src":"6637:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6678:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6689:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6674:3:92"},"nodeType":"YulFunctionCall","src":"6674:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"6694:2:92","type":"","value":"24"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6667:6:92"},"nodeType":"YulFunctionCall","src":"6667:30:92"},"nodeType":"YulExpressionStatement","src":"6667:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6717:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6728:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6713:3:92"},"nodeType":"YulFunctionCall","src":"6713:18:92"},{"hexValue":"4552433732313a20696e76616c696420746f6b656e204944","kind":"string","nodeType":"YulLiteral","src":"6733:26:92","type":"","value":"ERC721: invalid token ID"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6706:6:92"},"nodeType":"YulFunctionCall","src":"6706:54:92"},"nodeType":"YulExpressionStatement","src":"6706:54:92"},{"nodeType":"YulAssignment","src":"6769:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6781:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6792:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6777:3:92"},"nodeType":"YulFunctionCall","src":"6777:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6769:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6604:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6618:4:92","type":""}],"src":"6453:348:92"},{"body":{"nodeType":"YulBlock","src":"6980:231:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6997:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7008:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6990:6:92"},"nodeType":"YulFunctionCall","src":"6990:21:92"},"nodeType":"YulExpressionStatement","src":"6990:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7031:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7042:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7027:3:92"},"nodeType":"YulFunctionCall","src":"7027:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"7047:2:92","type":"","value":"41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7020:6:92"},"nodeType":"YulFunctionCall","src":"7020:30:92"},"nodeType":"YulExpressionStatement","src":"7020:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7070:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7081:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7066:3:92"},"nodeType":"YulFunctionCall","src":"7066:18:92"},{"hexValue":"4552433732313a2061646472657373207a65726f206973206e6f742061207661","kind":"string","nodeType":"YulLiteral","src":"7086:34:92","type":"","value":"ERC721: address zero is not a va"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7059:6:92"},"nodeType":"YulFunctionCall","src":"7059:62:92"},"nodeType":"YulExpressionStatement","src":"7059:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7141:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7152:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7137:3:92"},"nodeType":"YulFunctionCall","src":"7137:18:92"},{"hexValue":"6c6964206f776e6572","kind":"string","nodeType":"YulLiteral","src":"7157:11:92","type":"","value":"lid owner"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7130:6:92"},"nodeType":"YulFunctionCall","src":"7130:39:92"},"nodeType":"YulExpressionStatement","src":"7130:39:92"},{"nodeType":"YulAssignment","src":"7178:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7190:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7201:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7186:3:92"},"nodeType":"YulFunctionCall","src":"7186:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7178:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6957:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6971:4:92","type":""}],"src":"6806:405:92"},{"body":{"nodeType":"YulBlock","src":"7403:309:92","statements":[{"nodeType":"YulVariableDeclaration","src":"7413:27:92","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7433:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"7427:5:92"},"nodeType":"YulFunctionCall","src":"7427:13:92"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"7417:6:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7488:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"7496:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7484:3:92"},"nodeType":"YulFunctionCall","src":"7484:17:92"},{"name":"pos","nodeType":"YulIdentifier","src":"7503:3:92"},{"name":"length","nodeType":"YulIdentifier","src":"7508:6:92"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"7449:34:92"},"nodeType":"YulFunctionCall","src":"7449:66:92"},"nodeType":"YulExpressionStatement","src":"7449:66:92"},{"nodeType":"YulVariableDeclaration","src":"7524:29:92","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"7541:3:92"},{"name":"length","nodeType":"YulIdentifier","src":"7546:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7537:3:92"},"nodeType":"YulFunctionCall","src":"7537:16:92"},"variables":[{"name":"end_1","nodeType":"YulTypedName","src":"7528:5:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"7562:29:92","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"7584:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"7578:5:92"},"nodeType":"YulFunctionCall","src":"7578:13:92"},"variables":[{"name":"length_1","nodeType":"YulTypedName","src":"7566:8:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"7639:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"7647:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7635:3:92"},"nodeType":"YulFunctionCall","src":"7635:17:92"},{"name":"end_1","nodeType":"YulIdentifier","src":"7654:5:92"},{"name":"length_1","nodeType":"YulIdentifier","src":"7661:8:92"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"7600:34:92"},"nodeType":"YulFunctionCall","src":"7600:70:92"},"nodeType":"YulExpressionStatement","src":"7600:70:92"},{"nodeType":"YulAssignment","src":"7679:27:92","value":{"arguments":[{"name":"end_1","nodeType":"YulIdentifier","src":"7690:5:92"},{"name":"length_1","nodeType":"YulIdentifier","src":"7697:8:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7686:3:92"},"nodeType":"YulFunctionCall","src":"7686:20:92"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"7679:3:92"}]}]},"name":"abi_encode_tuple_packed_t_string_memory_ptr_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"7371:3:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"7376:6:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"7384:6:92","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"7395:3:92","type":""}],"src":"7216:496:92"},{"body":{"nodeType":"YulBlock","src":"7891:227:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7908:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7919:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7901:6:92"},"nodeType":"YulFunctionCall","src":"7901:21:92"},"nodeType":"YulExpressionStatement","src":"7901:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7942:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7953:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7938:3:92"},"nodeType":"YulFunctionCall","src":"7938:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"7958:2:92","type":"","value":"37"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7931:6:92"},"nodeType":"YulFunctionCall","src":"7931:30:92"},"nodeType":"YulExpressionStatement","src":"7931:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7981:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7992:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7977:3:92"},"nodeType":"YulFunctionCall","src":"7977:18:92"},{"hexValue":"4552433732313a207472616e736665722066726f6d20696e636f727265637420","kind":"string","nodeType":"YulLiteral","src":"7997:34:92","type":"","value":"ERC721: transfer from incorrect "}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7970:6:92"},"nodeType":"YulFunctionCall","src":"7970:62:92"},"nodeType":"YulExpressionStatement","src":"7970:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8052:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8063:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8048:3:92"},"nodeType":"YulFunctionCall","src":"8048:18:92"},{"hexValue":"6f776e6572","kind":"string","nodeType":"YulLiteral","src":"8068:7:92","type":"","value":"owner"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8041:6:92"},"nodeType":"YulFunctionCall","src":"8041:35:92"},"nodeType":"YulExpressionStatement","src":"8041:35:92"},{"nodeType":"YulAssignment","src":"8085:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8097:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8108:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8093:3:92"},"nodeType":"YulFunctionCall","src":"8093:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"8085:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7868:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7882:4:92","type":""}],"src":"7717:401:92"},{"body":{"nodeType":"YulBlock","src":"8297:226:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8314:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8325:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8307:6:92"},"nodeType":"YulFunctionCall","src":"8307:21:92"},"nodeType":"YulExpressionStatement","src":"8307:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8348:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8359:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8344:3:92"},"nodeType":"YulFunctionCall","src":"8344:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"8364:2:92","type":"","value":"36"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8337:6:92"},"nodeType":"YulFunctionCall","src":"8337:30:92"},"nodeType":"YulExpressionStatement","src":"8337:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8387:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8398:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8383:3:92"},"nodeType":"YulFunctionCall","src":"8383:18:92"},{"hexValue":"4552433732313a207472616e7366657220746f20746865207a65726f20616464","kind":"string","nodeType":"YulLiteral","src":"8403:34:92","type":"","value":"ERC721: transfer to the zero add"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8376:6:92"},"nodeType":"YulFunctionCall","src":"8376:62:92"},"nodeType":"YulExpressionStatement","src":"8376:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8458:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8469:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8454:3:92"},"nodeType":"YulFunctionCall","src":"8454:18:92"},{"hexValue":"72657373","kind":"string","nodeType":"YulLiteral","src":"8474:6:92","type":"","value":"ress"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8447:6:92"},"nodeType":"YulFunctionCall","src":"8447:34:92"},"nodeType":"YulExpressionStatement","src":"8447:34:92"},{"nodeType":"YulAssignment","src":"8490:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8502:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8513:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8498:3:92"},"nodeType":"YulFunctionCall","src":"8498:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"8490:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8274:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"8288:4:92","type":""}],"src":"8123:400:92"},{"body":{"nodeType":"YulBlock","src":"8702:182:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8719:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8730:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8712:6:92"},"nodeType":"YulFunctionCall","src":"8712:21:92"},"nodeType":"YulExpressionStatement","src":"8712:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8753:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8764:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8749:3:92"},"nodeType":"YulFunctionCall","src":"8749:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"8769:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8742:6:92"},"nodeType":"YulFunctionCall","src":"8742:30:92"},"nodeType":"YulExpressionStatement","src":"8742:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8792:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8803:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8788:3:92"},"nodeType":"YulFunctionCall","src":"8788:18:92"},{"hexValue":"4552433732313a206d696e7420746f20746865207a65726f2061646472657373","kind":"string","nodeType":"YulLiteral","src":"8808:34:92","type":"","value":"ERC721: mint to the zero address"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8781:6:92"},"nodeType":"YulFunctionCall","src":"8781:62:92"},"nodeType":"YulExpressionStatement","src":"8781:62:92"},{"nodeType":"YulAssignment","src":"8852:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8864:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8875:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8860:3:92"},"nodeType":"YulFunctionCall","src":"8860:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"8852:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8679:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"8693:4:92","type":""}],"src":"8528:356:92"},{"body":{"nodeType":"YulBlock","src":"9063:178:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9080:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9091:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9073:6:92"},"nodeType":"YulFunctionCall","src":"9073:21:92"},"nodeType":"YulExpressionStatement","src":"9073:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9114:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9125:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9110:3:92"},"nodeType":"YulFunctionCall","src":"9110:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"9130:2:92","type":"","value":"28"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9103:6:92"},"nodeType":"YulFunctionCall","src":"9103:30:92"},"nodeType":"YulExpressionStatement","src":"9103:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9153:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9164:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9149:3:92"},"nodeType":"YulFunctionCall","src":"9149:18:92"},{"hexValue":"4552433732313a20746f6b656e20616c7265616479206d696e746564","kind":"string","nodeType":"YulLiteral","src":"9169:30:92","type":"","value":"ERC721: token already minted"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9142:6:92"},"nodeType":"YulFunctionCall","src":"9142:58:92"},"nodeType":"YulExpressionStatement","src":"9142:58:92"},{"nodeType":"YulAssignment","src":"9209:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9221:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9232:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9217:3:92"},"nodeType":"YulFunctionCall","src":"9217:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"9209:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9040:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"9054:4:92","type":""}],"src":"8889:352:92"},{"body":{"nodeType":"YulBlock","src":"9420:175:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9437:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9448:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9430:6:92"},"nodeType":"YulFunctionCall","src":"9430:21:92"},"nodeType":"YulExpressionStatement","src":"9430:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9471:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9482:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9467:3:92"},"nodeType":"YulFunctionCall","src":"9467:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"9487:2:92","type":"","value":"25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9460:6:92"},"nodeType":"YulFunctionCall","src":"9460:30:92"},"nodeType":"YulExpressionStatement","src":"9460:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9510:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9521:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9506:3:92"},"nodeType":"YulFunctionCall","src":"9506:18:92"},{"hexValue":"4552433732313a20617070726f766520746f2063616c6c6572","kind":"string","nodeType":"YulLiteral","src":"9526:27:92","type":"","value":"ERC721: approve to caller"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9499:6:92"},"nodeType":"YulFunctionCall","src":"9499:55:92"},"nodeType":"YulExpressionStatement","src":"9499:55:92"},{"nodeType":"YulAssignment","src":"9563:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9575:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9586:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9571:3:92"},"nodeType":"YulFunctionCall","src":"9571:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"9563:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9397:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"9411:4:92","type":""}],"src":"9246:349:92"},{"body":{"nodeType":"YulBlock","src":"9774:240:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9791:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9802:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9784:6:92"},"nodeType":"YulFunctionCall","src":"9784:21:92"},"nodeType":"YulExpressionStatement","src":"9784:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9825:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9836:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9821:3:92"},"nodeType":"YulFunctionCall","src":"9821:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"9841:2:92","type":"","value":"50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9814:6:92"},"nodeType":"YulFunctionCall","src":"9814:30:92"},"nodeType":"YulExpressionStatement","src":"9814:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9864:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9875:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9860:3:92"},"nodeType":"YulFunctionCall","src":"9860:18:92"},{"hexValue":"4552433732313a207472616e7366657220746f206e6f6e204552433732315265","kind":"string","nodeType":"YulLiteral","src":"9880:34:92","type":"","value":"ERC721: transfer to non ERC721Re"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9853:6:92"},"nodeType":"YulFunctionCall","src":"9853:62:92"},"nodeType":"YulExpressionStatement","src":"9853:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9935:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9946:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9931:3:92"},"nodeType":"YulFunctionCall","src":"9931:18:92"},{"hexValue":"63656976657220696d706c656d656e746572","kind":"string","nodeType":"YulLiteral","src":"9951:20:92","type":"","value":"ceiver implementer"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9924:6:92"},"nodeType":"YulFunctionCall","src":"9924:48:92"},"nodeType":"YulExpressionStatement","src":"9924:48:92"},{"nodeType":"YulAssignment","src":"9981:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9993:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"10004:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9989:3:92"},"nodeType":"YulFunctionCall","src":"9989:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"9981:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9751:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"9765:4:92","type":""}],"src":"9600:414:92"},{"body":{"nodeType":"YulBlock","src":"10051:95:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10068:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10075:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"10080:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"10071:3:92"},"nodeType":"YulFunctionCall","src":"10071:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10061:6:92"},"nodeType":"YulFunctionCall","src":"10061:31:92"},"nodeType":"YulExpressionStatement","src":"10061:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10108:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"10111:4:92","type":"","value":"0x12"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10101:6:92"},"nodeType":"YulFunctionCall","src":"10101:15:92"},"nodeType":"YulExpressionStatement","src":"10101:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10132:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"10135:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"10125:6:92"},"nodeType":"YulFunctionCall","src":"10125:15:92"},"nodeType":"YulExpressionStatement","src":"10125:15:92"}]},"name":"panic_error_0x12","nodeType":"YulFunctionDefinition","src":"10019:127:92"},{"body":{"nodeType":"YulBlock","src":"10354:309:92","statements":[{"nodeType":"YulVariableDeclaration","src":"10364:52:92","value":{"kind":"number","nodeType":"YulLiteral","src":"10374:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"10368:2:92","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10432:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"10447:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"10455:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"10443:3:92"},"nodeType":"YulFunctionCall","src":"10443:15:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10425:6:92"},"nodeType":"YulFunctionCall","src":"10425:34:92"},"nodeType":"YulExpressionStatement","src":"10425:34:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10479:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"10490:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10475:3:92"},"nodeType":"YulFunctionCall","src":"10475:18:92"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"10499:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"10507:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"10495:3:92"},"nodeType":"YulFunctionCall","src":"10495:15:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10468:6:92"},"nodeType":"YulFunctionCall","src":"10468:43:92"},"nodeType":"YulExpressionStatement","src":"10468:43:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10531:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"10542:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10527:3:92"},"nodeType":"YulFunctionCall","src":"10527:18:92"},{"name":"value2","nodeType":"YulIdentifier","src":"10547:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10520:6:92"},"nodeType":"YulFunctionCall","src":"10520:34:92"},"nodeType":"YulExpressionStatement","src":"10520:34:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10574:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"10585:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10570:3:92"},"nodeType":"YulFunctionCall","src":"10570:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"10590:3:92","type":"","value":"128"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10563:6:92"},"nodeType":"YulFunctionCall","src":"10563:31:92"},"nodeType":"YulExpressionStatement","src":"10563:31:92"},{"nodeType":"YulAssignment","src":"10603:54:92","value":{"arguments":[{"name":"value3","nodeType":"YulIdentifier","src":"10629:6:92"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10641:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"10652:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10637:3:92"},"nodeType":"YulFunctionCall","src":"10637:19:92"}],"functionName":{"name":"abi_encode_string","nodeType":"YulIdentifier","src":"10611:17:92"},"nodeType":"YulFunctionCall","src":"10611:46:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"10603:4:92"}]}]},"name":"abi_encode_tuple_t_address_t_address_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"10299:9:92","type":""},{"name":"value3","nodeType":"YulTypedName","src":"10310:6:92","type":""},{"name":"value2","nodeType":"YulTypedName","src":"10318:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"10326:6:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"10334:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"10345:4:92","type":""}],"src":"10151:512:92"},{"body":{"nodeType":"YulBlock","src":"10748:169:92","statements":[{"body":{"nodeType":"YulBlock","src":"10794:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10803:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"10806:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"10796:6:92"},"nodeType":"YulFunctionCall","src":"10796:12:92"},"nodeType":"YulExpressionStatement","src":"10796:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"10769:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"10778:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"10765:3:92"},"nodeType":"YulFunctionCall","src":"10765:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"10790:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"10761:3:92"},"nodeType":"YulFunctionCall","src":"10761:32:92"},"nodeType":"YulIf","src":"10758:52:92"},{"nodeType":"YulVariableDeclaration","src":"10819:29:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10838:9:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"10832:5:92"},"nodeType":"YulFunctionCall","src":"10832:16:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"10823:5:92","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"10881:5:92"}],"functionName":{"name":"validator_revert_bytes4","nodeType":"YulIdentifier","src":"10857:23:92"},"nodeType":"YulFunctionCall","src":"10857:30:92"},"nodeType":"YulExpressionStatement","src":"10857:30:92"},{"nodeType":"YulAssignment","src":"10896:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"10906:5:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"10896:6:92"}]}]},"name":"abi_decode_tuple_t_bytes4_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"10714:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"10725:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"10737:6:92","type":""}],"src":"10668:249:92"}]},"contents":"{\n { }\n function validator_revert_bytes4(value)\n {\n if iszero(eq(value, and(value, shl(224, 0xffffffff)))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_bytes4(value)\n value0 := value\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function copy_memory_to_memory_with_cleanup(src, dst, length)\n {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n mstore(add(dst, length), 0)\n }\n function abi_encode_string(value, pos) -> end\n {\n let length := mload(value)\n mstore(pos, length)\n copy_memory_to_memory_with_cleanup(add(value, 0x20), add(pos, 0x20), length)\n end := add(add(pos, and(add(length, 31), not(31))), 0x20)\n }\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n mstore(headStart, 32)\n tail := abi_encode_string(value0, add(headStart, 32))\n }\n function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := calldataload(headStart)\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_decode_address(offset) -> value\n {\n value := calldataload(offset)\n if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := calldataload(add(headStart, 32))\n }\n function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := abi_decode_address(add(headStart, 32))\n value2 := calldataload(add(headStart, 64))\n }\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_decode_tuple_t_addresst_bool(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n let value := calldataload(add(headStart, 32))\n if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n value1 := value\n }\n function panic_error_0x41()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n {\n if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := abi_decode_address(add(headStart, 32))\n value2 := calldataload(add(headStart, 64))\n let offset := calldataload(add(headStart, 96))\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n let _2 := add(headStart, offset)\n if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n let _3 := calldataload(_2)\n if gt(_3, _1) { panic_error_0x41() }\n let _4 := not(31)\n let memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n mstore(memPtr, _3)\n if gt(add(add(_2, _3), 32), dataEnd) { revert(0, 0) }\n calldatacopy(add(memPtr, 32), add(_2, 32), _3)\n mstore(add(add(memPtr, _3), 32), 0)\n value3 := memPtr\n }\n function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := abi_decode_address(add(headStart, 32))\n }\n function extract_byte_array_length(data) -> length\n {\n length := shr(1, data)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n if eq(outOfPlaceEncoding, lt(length, 32))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n }\n function abi_encode_tuple_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 33)\n mstore(add(headStart, 64), \"ERC721: approval to current owne\")\n mstore(add(headStart, 96), \"r\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_c6e14a63ffb144eeef7cce6988e5dce07c60a7e0a7b1ef25dbe18c61483e0a83__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 61)\n mstore(add(headStart, 64), \"ERC721: approve caller is not to\")\n mstore(add(headStart, 96), \"ken owner or approved for all\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_12a8e5623d251e191fe4a291d9a59bcc01a4db7a1f5c20fc8de44358c18308af__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 45)\n mstore(add(headStart, 64), \"ERC721: caller is not token owne\")\n mstore(add(headStart, 96), \"r or approved\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 24)\n mstore(add(headStart, 64), \"ERC721: invalid token ID\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 41)\n mstore(add(headStart, 64), \"ERC721: address zero is not a va\")\n mstore(add(headStart, 96), \"lid owner\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_packed_t_string_memory_ptr_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n {\n let length := mload(value0)\n copy_memory_to_memory_with_cleanup(add(value0, 0x20), pos, length)\n let end_1 := add(pos, length)\n let length_1 := mload(value1)\n copy_memory_to_memory_with_cleanup(add(value1, 0x20), end_1, length_1)\n end := add(end_1, length_1)\n }\n function abi_encode_tuple_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 37)\n mstore(add(headStart, 64), \"ERC721: transfer from incorrect \")\n mstore(add(headStart, 96), \"owner\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 36)\n mstore(add(headStart, 64), \"ERC721: transfer to the zero add\")\n mstore(add(headStart, 96), \"ress\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 32)\n mstore(add(headStart, 64), \"ERC721: mint to the zero address\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 28)\n mstore(add(headStart, 64), \"ERC721: token already minted\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 25)\n mstore(add(headStart, 64), \"ERC721: approve to caller\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 50)\n mstore(add(headStart, 64), \"ERC721: transfer to non ERC721Re\")\n mstore(add(headStart, 96), \"ceiver implementer\")\n tail := add(headStart, 128)\n }\n function panic_error_0x12()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x12)\n revert(0, 0x24)\n }\n function abi_encode_tuple_t_address_t_address_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n {\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n mstore(add(headStart, 64), value2)\n mstore(add(headStart, 96), 128)\n tail := abi_encode_string(value3, add(headStart, 128))\n }\n function abi_decode_tuple_t_bytes4_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := mload(headStart)\n validator_revert_bytes4(value)\n value0 := value\n }\n}","id":92,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100f55760003560e01c806342966c6811610097578063a22cb46511610066578063a22cb465146101ff578063b88d4fde14610212578063c87b56dd14610225578063e985e9c51461023857600080fd5b806342966c68146101b05780636352211e146101c357806370a08231146101d657806395d89b41146101f757600080fd5b8063095ea7b3116100d3578063095ea7b31461016257806323b872dd1461017757806340c10f191461018a57806342842e0e1461019d57600080fd5b806301ffc9a7146100fa57806306fdde0314610122578063081812fc14610137575b600080fd5b61010d6101083660046110e7565b610274565b60405190151581526020015b60405180910390f35b61012a6102c6565b6040516101199190611154565b61014a610145366004611167565b610358565b6040516001600160a01b039091168152602001610119565b61017561017036600461119c565b61037f565b005b6101756101853660046111c6565b610499565b61017561019836600461119c565b610510565b6101756101ab3660046111c6565b61051e565b6101756101be366004611167565b610539565b61014a6101d1366004611167565b610545565b6101e96101e4366004611202565b6105aa565b604051908152602001610119565b61012a610644565b61017561020d36600461121d565b610653565b61017561022036600461126f565b61065e565b61012a610233366004611167565b6106dc565b61010d61024636600461134b565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b60006001600160e01b031982166380ac58cd60e01b14806102a557506001600160e01b03198216635b5e139f60e01b145b806102c057506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600080546102d59061137e565b80601f01602080910402602001604051908101604052809291908181526020018280546103019061137e565b801561034e5780601f106103235761010080835404028352916020019161034e565b820191906000526020600020905b81548152906001019060200180831161033157829003601f168201915b5050505050905090565b600061036382610750565b506000908152600460205260409020546001600160a01b031690565b600061038a82610545565b9050806001600160a01b0316836001600160a01b0316036103fc5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b038216148061041857506104188133610246565b61048a5760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c00000060648201526084016103f3565b61049483836107b4565b505050565b6104a33382610822565b6105055760405162461bcd60e51b815260206004820152602d60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201526c1c881bdc88185c1c1c9bdd9959609a1b60648201526084016103f3565b6104948383836108a1565b61051a8282610a81565b5050565b6104948383836040518060200160405280600081525061065e565b61054281610c0c565b50565b6000818152600260205260408120546001600160a01b0316806102c05760405162461bcd60e51b815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e204944000000000000000060448201526064016103f3565b60006001600160a01b0382166106285760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f74206120766160448201527f6c6964206f776e6572000000000000000000000000000000000000000000000060648201526084016103f3565b506001600160a01b031660009081526003602052604090205490565b6060600180546102d59061137e565b61051a338383610ca1565b6106683383610822565b6106ca5760405162461bcd60e51b815260206004820152602d60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201526c1c881bdc88185c1c1c9bdd9959609a1b60648201526084016103f3565b6106d684848484610d6f565b50505050565b60606106e782610750565b60006106fe60408051602081019091526000815290565b9050600081511161071e5760405180602001604052806000815250610749565b8061072884610df8565b6040516020016107399291906113b8565b6040516020818303038152906040525b9392505050565b6000818152600260205260409020546001600160a01b03166105425760405162461bcd60e51b815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e204944000000000000000060448201526064016103f3565b600081815260046020526040902080546001600160a01b0319166001600160a01b03841690811790915581906107e982610545565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008061082e83610545565b9050806001600160a01b0316846001600160a01b0316148061087557506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b806108995750836001600160a01b031661088e84610358565b6001600160a01b0316145b949350505050565b826001600160a01b03166108b482610545565b6001600160a01b0316146109185760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016103f3565b6001600160a01b03821661097a5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016103f3565b826001600160a01b031661098d82610545565b6001600160a01b0316146109f15760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016103f3565b600081815260046020908152604080832080546001600160a01b03199081169091556001600160a01b0387811680865260038552838620805460001901905590871680865283862080546001019055868652600290945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6001600160a01b038216610ad75760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016103f3565b6000818152600260205260409020546001600160a01b031615610b3c5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016103f3565b6000818152600260205260409020546001600160a01b031615610ba15760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016103f3565b6001600160a01b038216600081815260036020908152604080832080546001019055848352600290915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6000610c1782610545565b9050610c2282610545565b600083815260046020908152604080832080546001600160a01b03199081169091556001600160a01b0385168085526003845282852080546000190190558785526002909352818420805490911690555192935084927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b816001600160a01b0316836001600160a01b031603610d025760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016103f3565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b610d7a8484846108a1565b610d8684848484610e98565b6106d65760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e746572000000000000000000000000000060648201526084016103f3565b60606000610e0583610fef565b600101905060008167ffffffffffffffff811115610e2557610e25611259565b6040519080825280601f01601f191660200182016040528015610e4f576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084610e5957509392505050565b60006001600160a01b0384163b15610fe457604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290610edc9033908990889088906004016113e7565b6020604051808303816000875af1925050508015610f17575060408051601f3d908101601f19168201909252610f1491810190611423565b60015b610fca573d808015610f45576040519150601f19603f3d011682016040523d82523d6000602084013e610f4a565b606091505b508051600003610fc25760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e746572000000000000000000000000000060648201526084016103f3565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050610899565b506001949350505050565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310611038577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310611064576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061108257662386f26fc10000830492506010015b6305f5e100831061109a576305f5e100830492506008015b61271083106110ae57612710830492506004015b606483106110c0576064830492506002015b600a83106102c05760010192915050565b6001600160e01b03198116811461054257600080fd5b6000602082840312156110f957600080fd5b8135610749816110d1565b60005b8381101561111f578181015183820152602001611107565b50506000910152565b60008151808452611140816020860160208601611104565b601f01601f19169290920160200192915050565b6020815260006107496020830184611128565b60006020828403121561117957600080fd5b5035919050565b80356001600160a01b038116811461119757600080fd5b919050565b600080604083850312156111af57600080fd5b6111b883611180565b946020939093013593505050565b6000806000606084860312156111db57600080fd5b6111e484611180565b92506111f260208501611180565b9150604084013590509250925092565b60006020828403121561121457600080fd5b61074982611180565b6000806040838503121561123057600080fd5b61123983611180565b91506020830135801515811461124e57600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b6000806000806080858703121561128557600080fd5b61128e85611180565b935061129c60208601611180565b925060408501359150606085013567ffffffffffffffff808211156112c057600080fd5b818701915087601f8301126112d457600080fd5b8135818111156112e6576112e6611259565b604051601f8201601f19908116603f0116810190838211818310171561130e5761130e611259565b816040528281528a602084870101111561132757600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b6000806040838503121561135e57600080fd5b61136783611180565b915061137560208401611180565b90509250929050565b600181811c9082168061139257607f821691505b6020821081036113b257634e487b7160e01b600052602260045260246000fd5b50919050565b600083516113ca818460208801611104565b8351908301906113de818360208801611104565b01949350505050565b60006001600160a01b038087168352808616602084015250836040830152608060608301526114196080830184611128565b9695505050505050565b60006020828403121561143557600080fd5b8151610749816110d156fea164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xF5 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x42966C68 GT PUSH2 0x97 JUMPI DUP1 PUSH4 0xA22CB465 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x1FF JUMPI DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0x212 JUMPI DUP1 PUSH4 0xC87B56DD EQ PUSH2 0x225 JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x238 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x42966C68 EQ PUSH2 0x1B0 JUMPI DUP1 PUSH4 0x6352211E EQ PUSH2 0x1C3 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x1D6 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x1F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x95EA7B3 GT PUSH2 0xD3 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x162 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x177 JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x18A JUMPI DUP1 PUSH4 0x42842E0E EQ PUSH2 0x19D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xFA JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x122 JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x137 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x10D PUSH2 0x108 CALLDATASIZE PUSH1 0x4 PUSH2 0x10E7 JUMP JUMPDEST PUSH2 0x274 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x12A PUSH2 0x2C6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x119 SWAP2 SWAP1 PUSH2 0x1154 JUMP JUMPDEST PUSH2 0x14A PUSH2 0x145 CALLDATASIZE PUSH1 0x4 PUSH2 0x1167 JUMP JUMPDEST PUSH2 0x358 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x119 JUMP JUMPDEST PUSH2 0x175 PUSH2 0x170 CALLDATASIZE PUSH1 0x4 PUSH2 0x119C JUMP JUMPDEST PUSH2 0x37F JUMP JUMPDEST STOP JUMPDEST PUSH2 0x175 PUSH2 0x185 CALLDATASIZE PUSH1 0x4 PUSH2 0x11C6 JUMP JUMPDEST PUSH2 0x499 JUMP JUMPDEST PUSH2 0x175 PUSH2 0x198 CALLDATASIZE PUSH1 0x4 PUSH2 0x119C JUMP JUMPDEST PUSH2 0x510 JUMP JUMPDEST PUSH2 0x175 PUSH2 0x1AB CALLDATASIZE PUSH1 0x4 PUSH2 0x11C6 JUMP JUMPDEST PUSH2 0x51E JUMP JUMPDEST PUSH2 0x175 PUSH2 0x1BE CALLDATASIZE PUSH1 0x4 PUSH2 0x1167 JUMP JUMPDEST PUSH2 0x539 JUMP JUMPDEST PUSH2 0x14A PUSH2 0x1D1 CALLDATASIZE PUSH1 0x4 PUSH2 0x1167 JUMP JUMPDEST PUSH2 0x545 JUMP JUMPDEST PUSH2 0x1E9 PUSH2 0x1E4 CALLDATASIZE PUSH1 0x4 PUSH2 0x1202 JUMP JUMPDEST PUSH2 0x5AA JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x119 JUMP JUMPDEST PUSH2 0x12A PUSH2 0x644 JUMP JUMPDEST PUSH2 0x175 PUSH2 0x20D CALLDATASIZE PUSH1 0x4 PUSH2 0x121D JUMP JUMPDEST PUSH2 0x653 JUMP JUMPDEST PUSH2 0x175 PUSH2 0x220 CALLDATASIZE PUSH1 0x4 PUSH2 0x126F JUMP JUMPDEST PUSH2 0x65E JUMP JUMPDEST PUSH2 0x12A PUSH2 0x233 CALLDATASIZE PUSH1 0x4 PUSH2 0x1167 JUMP JUMPDEST PUSH2 0x6DC JUMP JUMPDEST PUSH2 0x10D PUSH2 0x246 CALLDATASIZE PUSH1 0x4 PUSH2 0x134B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x80AC58CD PUSH1 0xE0 SHL EQ DUP1 PUSH2 0x2A5 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x5B5E139F PUSH1 0xE0 SHL EQ JUMPDEST DUP1 PUSH2 0x2C0 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 SLOAD PUSH2 0x2D5 SWAP1 PUSH2 0x137E JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x301 SWAP1 PUSH2 0x137E JUMP JUMPDEST DUP1 ISZERO PUSH2 0x34E JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x323 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x34E JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x331 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x363 DUP3 PUSH2 0x750 JUMP JUMPDEST POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x38A DUP3 PUSH2 0x545 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x3FC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F76616C20746F2063757272656E74206F776E65 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x39 PUSH1 0xF9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND EQ DUP1 PUSH2 0x418 JUMPI POP PUSH2 0x418 DUP2 CALLER PUSH2 0x246 JUMP JUMPDEST PUSH2 0x48A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F76652063616C6C6572206973206E6F7420746F PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6B656E206F776E6572206F7220617070726F76656420666F7220616C6C000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3F3 JUMP JUMPDEST PUSH2 0x494 DUP4 DUP4 PUSH2 0x7B4 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x4A3 CALLER DUP3 PUSH2 0x822 JUMP JUMPDEST PUSH2 0x505 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A2063616C6C6572206973206E6F7420746F6B656E206F776E65 PUSH1 0x44 DUP3 ADD MSTORE PUSH13 0x1C881BDC88185C1C1C9BDD9959 PUSH1 0x9A SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3F3 JUMP JUMPDEST PUSH2 0x494 DUP4 DUP4 DUP4 PUSH2 0x8A1 JUMP JUMPDEST PUSH2 0x51A DUP3 DUP3 PUSH2 0xA81 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x494 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x65E JUMP JUMPDEST PUSH2 0x542 DUP2 PUSH2 0xC0C JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP1 PUSH2 0x2C0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20696E76616C696420746F6B656E2049440000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3F3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x628 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A2061646472657373207A65726F206973206E6F742061207661 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6C6964206F776E65720000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3F3 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 DUP1 SLOAD PUSH2 0x2D5 SWAP1 PUSH2 0x137E JUMP JUMPDEST PUSH2 0x51A CALLER DUP4 DUP4 PUSH2 0xCA1 JUMP JUMPDEST PUSH2 0x668 CALLER DUP4 PUSH2 0x822 JUMP JUMPDEST PUSH2 0x6CA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A2063616C6C6572206973206E6F7420746F6B656E206F776E65 PUSH1 0x44 DUP3 ADD MSTORE PUSH13 0x1C881BDC88185C1C1C9BDD9959 PUSH1 0x9A SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3F3 JUMP JUMPDEST PUSH2 0x6D6 DUP5 DUP5 DUP5 DUP5 PUSH2 0xD6F JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x6E7 DUP3 PUSH2 0x750 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6FE PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE SWAP1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 MLOAD GT PUSH2 0x71E JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x749 JUMP JUMPDEST DUP1 PUSH2 0x728 DUP5 PUSH2 0xDF8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x739 SWAP3 SWAP2 SWAP1 PUSH2 0x13B8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x542 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20696E76616C696420746F6B656E2049440000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3F3 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP2 SWAP1 PUSH2 0x7E9 DUP3 PUSH2 0x545 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x82E DUP4 PUSH2 0x545 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x875 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP9 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST DUP1 PUSH2 0x899 JUMPI POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x88E DUP5 PUSH2 0x358 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x8B4 DUP3 PUSH2 0x545 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x918 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E736665722066726F6D20696E636F727265637420 PUSH1 0x44 DUP3 ADD MSTORE PUSH5 0x37BBB732B9 PUSH1 0xD9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3F3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x97A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F20746865207A65726F20616464 PUSH1 0x44 DUP3 ADD MSTORE PUSH4 0x72657373 PUSH1 0xE0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3F3 JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x98D DUP3 PUSH2 0x545 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x9F1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E736665722066726F6D20696E636F727265637420 PUSH1 0x44 DUP3 ADD MSTORE PUSH5 0x37BBB732B9 PUSH1 0xD9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3F3 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 DUP2 AND SWAP1 SWAP2 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND DUP1 DUP7 MSTORE PUSH1 0x3 DUP6 MSTORE DUP4 DUP7 KECCAK256 DUP1 SLOAD PUSH1 0x0 NOT ADD SWAP1 SSTORE SWAP1 DUP8 AND DUP1 DUP7 MSTORE DUP4 DUP7 KECCAK256 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE DUP7 DUP7 MSTORE PUSH1 0x2 SWAP1 SWAP5 MSTORE DUP3 DUP6 KECCAK256 DUP1 SLOAD SWAP1 SWAP3 AND DUP5 OR SWAP1 SWAP2 SSTORE SWAP1 MLOAD DUP5 SWAP4 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 LOG4 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xAD7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206D696E7420746F20746865207A65726F2061646472657373 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3F3 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0xB3C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20746F6B656E20616C7265616479206D696E74656400000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3F3 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0xBA1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20746F6B656E20616C7265616479206D696E74656400000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3F3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE DUP5 DUP4 MSTORE PUSH1 0x2 SWAP1 SWAP2 MSTORE DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND DUP5 OR SWAP1 SSTORE MLOAD DUP4 SWAP3 SWAP2 SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 DUP3 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC17 DUP3 PUSH2 0x545 JUMP JUMPDEST SWAP1 POP PUSH2 0xC22 DUP3 PUSH2 0x545 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 DUP2 AND SWAP1 SWAP2 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP1 DUP6 MSTORE PUSH1 0x3 DUP5 MSTORE DUP3 DUP6 KECCAK256 DUP1 SLOAD PUSH1 0x0 NOT ADD SWAP1 SSTORE DUP8 DUP6 MSTORE PUSH1 0x2 SWAP1 SWAP4 MSTORE DUP2 DUP5 KECCAK256 DUP1 SLOAD SWAP1 SWAP2 AND SWAP1 SSTORE MLOAD SWAP3 SWAP4 POP DUP5 SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 DUP4 SWAP1 LOG4 POP POP JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0xD02 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F766520746F2063616C6C657200000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3F3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND DUP7 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP2 MLOAD SWAP2 DUP3 MSTORE PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0xD7A DUP5 DUP5 DUP5 PUSH2 0x8A1 JUMP JUMPDEST PUSH2 0xD86 DUP5 DUP5 DUP5 DUP5 PUSH2 0xE98 JUMP JUMPDEST PUSH2 0x6D6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x32 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F206E6F6E204552433732315265 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x63656976657220696D706C656D656E7465720000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3F3 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0xE05 DUP4 PUSH2 0xFEF JUMP JUMPDEST PUSH1 0x1 ADD SWAP1 POP PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xE25 JUMPI PUSH2 0xE25 PUSH2 0x1259 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xE4F JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP DUP2 DUP2 ADD PUSH1 0x20 ADD JUMPDEST PUSH1 0x0 NOT ADD PUSH32 0x3031323334353637383961626364656600000000000000000000000000000000 PUSH1 0xA DUP7 MOD BYTE DUP2 MSTORE8 PUSH1 0xA DUP6 DIV SWAP5 POP DUP5 PUSH2 0xE59 JUMPI POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO PUSH2 0xFE4 JUMPI PUSH1 0x40 MLOAD PUSH4 0xA85BD01 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0x150B7A02 SWAP1 PUSH2 0xEDC SWAP1 CALLER SWAP1 DUP10 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x13E7 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0xF17 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0xF14 SWAP2 DUP2 ADD SWAP1 PUSH2 0x1423 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0xFCA JUMPI RETURNDATASIZE DUP1 DUP1 ISZERO PUSH2 0xF45 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xF4A JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP DUP1 MLOAD PUSH1 0x0 SUB PUSH2 0xFC2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x32 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F206E6F6E204552433732315265 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x63656976657220696D706C656D656E7465720000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3F3 JUMP JUMPDEST DUP1 MLOAD DUP2 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH4 0xA85BD01 PUSH1 0xE1 SHL EQ SWAP1 POP PUSH2 0x899 JUMP JUMPDEST POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH27 0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F010000000000000000 DUP4 LT PUSH2 0x1038 JUMPI PUSH27 0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F010000000000000000 DUP4 DIV SWAP3 POP PUSH1 0x40 ADD JUMPDEST PUSH14 0x4EE2D6D415B85ACEF8100000000 DUP4 LT PUSH2 0x1064 JUMPI PUSH14 0x4EE2D6D415B85ACEF8100000000 DUP4 DIV SWAP3 POP PUSH1 0x20 ADD JUMPDEST PUSH7 0x2386F26FC10000 DUP4 LT PUSH2 0x1082 JUMPI PUSH7 0x2386F26FC10000 DUP4 DIV SWAP3 POP PUSH1 0x10 ADD JUMPDEST PUSH4 0x5F5E100 DUP4 LT PUSH2 0x109A JUMPI PUSH4 0x5F5E100 DUP4 DIV SWAP3 POP PUSH1 0x8 ADD JUMPDEST PUSH2 0x2710 DUP4 LT PUSH2 0x10AE JUMPI PUSH2 0x2710 DUP4 DIV SWAP3 POP PUSH1 0x4 ADD JUMPDEST PUSH1 0x64 DUP4 LT PUSH2 0x10C0 JUMPI PUSH1 0x64 DUP4 DIV SWAP3 POP PUSH1 0x2 ADD JUMPDEST PUSH1 0xA DUP4 LT PUSH2 0x2C0 JUMPI PUSH1 0x1 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x542 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x10F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x749 DUP2 PUSH2 0x10D1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x111F JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1107 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x1140 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x1104 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x749 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x1128 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1179 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x1197 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x11AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x11B8 DUP4 PUSH2 0x1180 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x11DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x11E4 DUP5 PUSH2 0x1180 JUMP JUMPDEST SWAP3 POP PUSH2 0x11F2 PUSH1 0x20 DUP6 ADD PUSH2 0x1180 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1214 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x749 DUP3 PUSH2 0x1180 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1230 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1239 DUP4 PUSH2 0x1180 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x124E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x1285 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x128E DUP6 PUSH2 0x1180 JUMP JUMPDEST SWAP4 POP PUSH2 0x129C PUSH1 0x20 DUP7 ADD PUSH2 0x1180 JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x12C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x12D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x12E6 JUMPI PUSH2 0x12E6 PUSH2 0x1259 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x130E JUMPI PUSH2 0x130E PUSH2 0x1259 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP11 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x1327 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x135E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1367 DUP4 PUSH2 0x1180 JUMP JUMPDEST SWAP2 POP PUSH2 0x1375 PUSH1 0x20 DUP5 ADD PUSH2 0x1180 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x1392 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x13B2 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP4 MLOAD PUSH2 0x13CA DUP2 DUP5 PUSH1 0x20 DUP9 ADD PUSH2 0x1104 JUMP JUMPDEST DUP4 MLOAD SWAP1 DUP4 ADD SWAP1 PUSH2 0x13DE DUP2 DUP4 PUSH1 0x20 DUP9 ADD PUSH2 0x1104 JUMP JUMPDEST ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND DUP4 MSTORE DUP1 DUP7 AND PUSH1 0x20 DUP5 ADD MSTORE POP DUP4 PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x80 PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x1419 PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x1128 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1435 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x749 DUP2 PUSH2 0x10D1 JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"298:295:60:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1570:300:29;;;;;;:::i;:::-;;:::i;:::-;;;565:14:92;;558:22;540:41;;528:2;513:18;1570:300:29;;;;;;;;2471:98;;;:::i;:::-;;;;;;;:::i;3935:167::-;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;1697:55:92;;;1679:74;;1667:2;1652:18;3935:167:29;1533:226:92;3468:406:29;;;;;;:::i;:::-;;:::i;:::-;;4612:296;;;;;;:::i;:::-;;:::i;421:95:60:-;;;;;;:::i;:::-;;:::i;4974:149:29:-;;;;;;:::i;:::-;;:::i;522:69:60:-;;;;;;:::i;:::-;;:::i;2190:219:29:-;;;;;;:::i;:::-;;:::i;1929:204::-;;;;;;:::i;:::-;;:::i;:::-;;;2894:25:92;;;2882:2;2867:18;1929:204:29;2748:177:92;2633:102:29;;;:::i;4169:153::-;;;;;;:::i;:::-;;:::i;5189:276::-;;;;;;:::i;:::-;;:::i;2801:::-;;;;;;:::i;:::-;;:::i;4388:162::-;;;;;;:::i;:::-;-1:-1:-1;;;;;4508:25:29;;;4485:4;4508:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;4388:162;1570:300;1672:4;-1:-1:-1;;;;;;1707:40:29;;-1:-1:-1;;;1707:40:29;;:104;;-1:-1:-1;;;;;;;1763:48:29;;-1:-1:-1;;;1763:48:29;1707:104;:156;;;-1:-1:-1;;;;;;;;;;937:40:38;;;1827:36:29;1688:175;1570:300;-1:-1:-1;;1570:300:29:o;2471:98::-;2525:13;2557:5;2550:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2471:98;:::o;3935:167::-;4011:7;4030:23;4045:7;4030:14;:23::i;:::-;-1:-1:-1;4071:24:29;;;;:15;:24;;;;;;-1:-1:-1;;;;;4071:24:29;;3935:167::o;3468:406::-;3548:13;3564:23;3579:7;3564:14;:23::i;:::-;3548:39;;3611:5;-1:-1:-1;;;;;3605:11:29;:2;-1:-1:-1;;;;;3605:11:29;;3597:57;;;;-1:-1:-1;;;3597:57:29;;5409:2:92;3597:57:29;;;5391:21:92;5448:2;5428:18;;;5421:30;5487:34;5467:18;;;5460:62;-1:-1:-1;;;5538:18:92;;;5531:31;5579:19;;3597:57:29;;;;;;;;;734:10:34;-1:-1:-1;;;;;3686:21:29;;;;:62;;-1:-1:-1;3711:37:29;3728:5;734:10:34;4388:162:29;:::i;3711:37::-;3665:170;;;;-1:-1:-1;;;3665:170:29;;5811:2:92;3665:170:29;;;5793:21:92;5850:2;5830:18;;;5823:30;5889:34;5869:18;;;5862:62;5960:31;5940:18;;;5933:59;6009:19;;3665:170:29;5609:425:92;3665:170:29;3846:21;3855:2;3859:7;3846:8;:21::i;:::-;3538:336;3468:406;;:::o;4612:296::-;4771:41;734:10:34;4804:7:29;4771:18;:41::i;:::-;4763:99;;;;-1:-1:-1;;;4763:99:29;;6241:2:92;4763:99:29;;;6223:21:92;6280:2;6260:18;;;6253:30;6319:34;6299:18;;;6292:62;-1:-1:-1;;;6370:18:92;;;6363:43;6423:19;;4763:99:29;6039:409:92;4763:99:29;4873:28;4883:4;4889:2;4893:7;4873:9;:28::i;421:95:60:-;486:23;492:7;501;486:5;:23::i;:::-;421:95;;:::o;4974:149:29:-;5077:39;5094:4;5100:2;5104:7;5077:39;;;;;;;;;;;;:16;:39::i;522:69:60:-;570:14;576:7;570:5;:14::i;:::-;522:69;:::o;2190:219:29:-;2262:7;6794:16;;;:7;:16;;;;;;-1:-1:-1;;;;;6794:16:29;;2324:56;;;;-1:-1:-1;;;2324:56:29;;6655:2:92;2324:56:29;;;6637:21:92;6694:2;6674:18;;;6667:30;6733:26;6713:18;;;6706:54;6777:18;;2324:56:29;6453:348:92;1929:204:29;2001:7;-1:-1:-1;;;;;2028:19:29;;2020:73;;;;-1:-1:-1;;;2020:73:29;;7008:2:92;2020:73:29;;;6990:21:92;7047:2;7027:18;;;7020:30;7086:34;7066:18;;;7059:62;7157:11;7137:18;;;7130:39;7186:19;;2020:73:29;6806:405:92;2020:73:29;-1:-1:-1;;;;;;2110:16:29;;;;;:9;:16;;;;;;;1929:204::o;2633:102::-;2689:13;2721:7;2714:14;;;;;:::i;4169:153::-;4263:52;734:10:34;4296:8:29;4306;4263:18;:52::i;5189:276::-;5319:41;734:10:34;5352:7:29;5319:18;:41::i;:::-;5311:99;;;;-1:-1:-1;;;5311:99:29;;6241:2:92;5311:99:29;;;6223:21:92;6280:2;6260:18;;;6253:30;6319:34;6299:18;;;6292:62;-1:-1:-1;;;6370:18:92;;;6363:43;6423:19;;5311:99:29;6039:409:92;5311:99:29;5420:38;5434:4;5440:2;5444:7;5453:4;5420:13;:38::i;:::-;5189:276;;;;:::o;2801:::-;2874:13;2899:23;2914:7;2899:14;:23::i;:::-;2933:21;2957:10;3395:9;;;;;;;;;-1:-1:-1;3395:9:29;;;3319:92;2957:10;2933:34;;3008:1;2990:7;2984:21;:25;:86;;;;;;;;;;;;;;;;;3036:7;3045:18;:7;:16;:18::i;:::-;3019:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2984:86;2977:93;2801:276;-1:-1:-1;;;2801:276:29:o;13240:133::-;7185:4;6794:16;;;:7;:16;;;;;;-1:-1:-1;;;;;6794:16:29;13313:53;;;;-1:-1:-1;;;13313:53:29;;6655:2:92;13313:53:29;;;6637:21:92;6694:2;6674:18;;;6667:30;6733:26;6713:18;;;6706:54;6777:18;;13313:53:29;6453:348:92;12572:171:29;12646:24;;;;:15;:24;;;;;:29;;-1:-1:-1;;;;;;12646:29:29;-1:-1:-1;;;;;12646:29:29;;;;;;;;:24;;12699:23;12646:24;12699:14;:23::i;:::-;-1:-1:-1;;;;;12690:46:29;;;;;;;;;;;12572:171;;:::o;7404:261::-;7497:4;7513:13;7529:23;7544:7;7529:14;:23::i;:::-;7513:39;;7581:5;-1:-1:-1;;;;;7570:16:29;:7;-1:-1:-1;;;;;7570:16:29;;:52;;;-1:-1:-1;;;;;;4508:25:29;;;4485:4;4508:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;7590:32;7570:87;;;;7650:7;-1:-1:-1;;;;;7626:31:29;:20;7638:7;7626:11;:20::i;:::-;-1:-1:-1;;;;;7626:31:29;;7570:87;7562:96;7404:261;-1:-1:-1;;;;7404:261:29:o;11257:1203::-;11381:4;-1:-1:-1;;;;;11354:31:29;:23;11369:7;11354:14;:23::i;:::-;-1:-1:-1;;;;;11354:31:29;;11346:81;;;;-1:-1:-1;;;11346:81:29;;7919:2:92;11346:81:29;;;7901:21:92;7958:2;7938:18;;;7931:30;7997:34;7977:18;;;7970:62;-1:-1:-1;;;8048:18:92;;;8041:35;8093:19;;11346:81:29;7717:401:92;11346:81:29;-1:-1:-1;;;;;11445:16:29;;11437:65;;;;-1:-1:-1;;;11437:65:29;;8325:2:92;11437:65:29;;;8307:21:92;8364:2;8344:18;;;8337:30;8403:34;8383:18;;;8376:62;-1:-1:-1;;;8454:18:92;;;8447:34;8498:19;;11437:65:29;8123:400:92;11437:65:29;11682:4;-1:-1:-1;;;;;11655:31:29;:23;11670:7;11655:14;:23::i;:::-;-1:-1:-1;;;;;11655:31:29;;11647:81;;;;-1:-1:-1;;;11647:81:29;;7919:2:92;11647:81:29;;;7901:21:92;7958:2;7938:18;;;7931:30;7997:34;7977:18;;;7970:62;-1:-1:-1;;;8048:18:92;;;8041:35;8093:19;;11647:81:29;7717:401:92;11647:81:29;11797:24;;;;:15;:24;;;;;;;;11790:31;;-1:-1:-1;;;;;;11790:31:29;;;;;;-1:-1:-1;;;;;12265:15:29;;;;;;:9;:15;;;;;:20;;-1:-1:-1;;12265:20:29;;;12299:13;;;;;;;;;:18;;11790:31;12299:18;;;12337:16;;;:7;:16;;;;;;:21;;;;;;;;;;12374:27;;11813:7;;12374:27;;;3538:336;3468:406;;:::o;8925:920::-;-1:-1:-1;;;;;9004:16:29;;8996:61;;;;-1:-1:-1;;;8996:61:29;;8730:2:92;8996:61:29;;;8712:21:92;;;8749:18;;;8742:30;8808:34;8788:18;;;8781:62;8860:18;;8996:61:29;8528:356:92;8996:61:29;7185:4;6794:16;;;:7;:16;;;;;;-1:-1:-1;;;;;6794:16:29;7208:31;9067:58;;;;-1:-1:-1;;;9067:58:29;;9091:2:92;9067:58:29;;;9073:21:92;9130:2;9110:18;;;9103:30;9169;9149:18;;;9142:58;9217:18;;9067:58:29;8889:352:92;9067:58:29;7185:4;6794:16;;;:7;:16;;;;;;-1:-1:-1;;;;;6794:16:29;7208:31;9271:58;;;;-1:-1:-1;;;9271:58:29;;9091:2:92;9271:58:29;;;9073:21:92;9130:2;9110:18;;;9103:30;9169;9149:18;;;9142:58;9217:18;;9271:58:29;8889:352:92;9271:58:29;-1:-1:-1;;;;;9671:13:29;;;;;;:9;:13;;;;;;;;:18;;9688:1;9671:18;;;9710:16;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;9710:21:29;;;;;9747:33;9718:7;;9671:13;;9747:33;;9671:13;;9747:33;421:95:60;;:::o;10171:762:29:-;10230:13;10246:23;10261:7;10246:14;:23::i;:::-;10230:39;;10441:23;10456:7;10441:14;:23::i;:::-;10509:24;;;;:15;:24;;;;;;;;10502:31;;-1:-1:-1;;;;;;10502:31:29;;;;;;-1:-1:-1;;;;;10749:16:29;;;;;:9;:16;;;;;:21;;-1:-1:-1;;10749:21:29;;;10797:16;;;:7;:16;;;;;;10790:23;;;;;;;10829:36;10433:31;;-1:-1:-1;10525:7:29;;10829:36;;10509:24;;10829:36;421:95:60;;:::o;12879:277:29:-;12999:8;-1:-1:-1;;;;;12990:17:29;:5;-1:-1:-1;;;;;12990:17:29;;12982:55;;;;-1:-1:-1;;;12982:55:29;;9448:2:92;12982:55:29;;;9430:21:92;9487:2;9467:18;;;9460:30;9526:27;9506:18;;;9499:55;9571:18;;12982:55:29;9246:349:92;12982:55:29;-1:-1:-1;;;;;13047:25:29;;;;;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;:46;;-1:-1:-1;;13047:46:29;;;;;;;;;;13108:41;;540::92;;;13108::29;;513:18:92;13108:41:29;;;;;;;12879:277;;;:::o;6326:267::-;6438:28;6448:4;6454:2;6458:7;6438:9;:28::i;:::-;6484:47;6507:4;6513:2;6517:7;6526:4;6484:22;:47::i;:::-;6476:110;;;;-1:-1:-1;;;6476:110:29;;9802:2:92;6476:110:29;;;9784:21:92;9841:2;9821:18;;;9814:30;9880:34;9860:18;;;9853:62;9951:20;9931:18;;;9924:48;9989:19;;6476:110:29;9600:414:92;447:696:37;503:13;552:14;569:17;580:5;569:10;:17::i;:::-;589:1;569:21;552:38;;604:20;638:6;627:18;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;627:18:37;-1:-1:-1;604:41:37;-1:-1:-1;765:28:37;;;781:2;765:28;820:280;-1:-1:-1;;851:5:37;990:8;985:2;974:14;;969:30;851:5;956:44;1044:2;1035:11;;;-1:-1:-1;1064:21:37;820:280;1064:21;-1:-1:-1;1120:6:37;447:696;-1:-1:-1;;;447:696:37:o;13925:831:29:-;14074:4;-1:-1:-1;;;;;14094:13:29;;1702:19:33;:23;14090:660:29;;14129:71;;-1:-1:-1;;;14129:71:29;;-1:-1:-1;;;;;14129:36:29;;;;;:71;;734:10:34;;14180:4:29;;14186:7;;14195:4;;14129:71;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14129:71:29;;;;;;;;-1:-1:-1;;14129:71:29;;;;;;;;;;;;:::i;:::-;;;14125:573;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14367:6;:13;14384:1;14367:18;14363:321;;14409:60;;-1:-1:-1;;;14409:60:29;;9802:2:92;14409:60:29;;;9784:21:92;9841:2;9821:18;;;9814:30;9880:34;9860:18;;;9853:62;9951:20;9931:18;;;9924:48;9989:19;;14409:60:29;9600:414:92;14363:321:29;14636:6;14630:13;14621:6;14617:2;14613:15;14606:38;14125:573;-1:-1:-1;;;;;;14250:51:29;-1:-1:-1;;;14250:51:29;;-1:-1:-1;14243:58:29;;14090:660;-1:-1:-1;14735:4:29;13925:831;;;;;;:::o;10139:916:40:-;10192:7;;10276:8;10267:17;;10263:103;;10313:8;10304:17;;;-1:-1:-1;10349:2:40;10339:12;10263:103;10392:8;10383:5;:17;10379:103;;10429:8;10420:17;;;-1:-1:-1;10465:2:40;10455:12;10379:103;10508:8;10499:5;:17;10495:103;;10545:8;10536:17;;;-1:-1:-1;10581:2:40;10571:12;10495:103;10624:7;10615:5;:16;10611:100;;10660:7;10651:16;;;-1:-1:-1;10695:1:40;10685:11;10611:100;10737:7;10728:5;:16;10724:100;;10773:7;10764:16;;;-1:-1:-1;10808:1:40;10798:11;10724:100;10850:7;10841:5;:16;10837:100;;10886:7;10877:16;;;-1:-1:-1;10921:1:40;10911:11;10837:100;10963:7;10954:5;:16;10950:66;;11000:1;10990:11;11042:6;10139:916;-1:-1:-1;;10139:916:40:o;14:131:92:-;-1:-1:-1;;;;;;88:32:92;;78:43;;68:71;;135:1;132;125:12;150:245;208:6;261:2;249:9;240:7;236:23;232:32;229:52;;;277:1;274;267:12;229:52;316:9;303:23;335:30;359:5;335:30;:::i;592:250::-;677:1;687:113;701:6;698:1;695:13;687:113;;;777:11;;;771:18;758:11;;;751:39;723:2;716:10;687:113;;;-1:-1:-1;;834:1:92;816:16;;809:27;592:250::o;847:271::-;889:3;927:5;921:12;954:6;949:3;942:19;970:76;1039:6;1032:4;1027:3;1023:14;1016:4;1009:5;1005:16;970:76;:::i;:::-;1100:2;1079:15;-1:-1:-1;;1075:29:92;1066:39;;;;1107:4;1062:50;;847:271;-1:-1:-1;;847:271:92:o;1123:220::-;1272:2;1261:9;1254:21;1235:4;1292:45;1333:2;1322:9;1318:18;1310:6;1292:45;:::i;1348:180::-;1407:6;1460:2;1448:9;1439:7;1435:23;1431:32;1428:52;;;1476:1;1473;1466:12;1428:52;-1:-1:-1;1499:23:92;;1348:180;-1:-1:-1;1348:180:92:o;1764:196::-;1832:20;;-1:-1:-1;;;;;1881:54:92;;1871:65;;1861:93;;1950:1;1947;1940:12;1861:93;1764:196;;;:::o;1965:254::-;2033:6;2041;2094:2;2082:9;2073:7;2069:23;2065:32;2062:52;;;2110:1;2107;2100:12;2062:52;2133:29;2152:9;2133:29;:::i;:::-;2123:39;2209:2;2194:18;;;;2181:32;;-1:-1:-1;;;1965:254:92:o;2224:328::-;2301:6;2309;2317;2370:2;2358:9;2349:7;2345:23;2341:32;2338:52;;;2386:1;2383;2376:12;2338:52;2409:29;2428:9;2409:29;:::i;:::-;2399:39;;2457:38;2491:2;2480:9;2476:18;2457:38;:::i;:::-;2447:48;;2542:2;2531:9;2527:18;2514:32;2504:42;;2224:328;;;;;:::o;2557:186::-;2616:6;2669:2;2657:9;2648:7;2644:23;2640:32;2637:52;;;2685:1;2682;2675:12;2637:52;2708:29;2727:9;2708:29;:::i;2930:347::-;2995:6;3003;3056:2;3044:9;3035:7;3031:23;3027:32;3024:52;;;3072:1;3069;3062:12;3024:52;3095:29;3114:9;3095:29;:::i;:::-;3085:39;;3174:2;3163:9;3159:18;3146:32;3221:5;3214:13;3207:21;3200:5;3197:32;3187:60;;3243:1;3240;3233:12;3187:60;3266:5;3256:15;;;2930:347;;;;;:::o;3282:127::-;3343:10;3338:3;3334:20;3331:1;3324:31;3374:4;3371:1;3364:15;3398:4;3395:1;3388:15;3414:1138;3509:6;3517;3525;3533;3586:3;3574:9;3565:7;3561:23;3557:33;3554:53;;;3603:1;3600;3593:12;3554:53;3626:29;3645:9;3626:29;:::i;:::-;3616:39;;3674:38;3708:2;3697:9;3693:18;3674:38;:::i;:::-;3664:48;;3759:2;3748:9;3744:18;3731:32;3721:42;;3814:2;3803:9;3799:18;3786:32;3837:18;3878:2;3870:6;3867:14;3864:34;;;3894:1;3891;3884:12;3864:34;3932:6;3921:9;3917:22;3907:32;;3977:7;3970:4;3966:2;3962:13;3958:27;3948:55;;3999:1;3996;3989:12;3948:55;4035:2;4022:16;4057:2;4053;4050:10;4047:36;;;4063:18;;:::i;:::-;4138:2;4132:9;4106:2;4192:13;;-1:-1:-1;;4188:22:92;;;4212:2;4184:31;4180:40;4168:53;;;4236:18;;;4256:22;;;4233:46;4230:72;;;4282:18;;:::i;:::-;4322:10;4318:2;4311:22;4357:2;4349:6;4342:18;4397:7;4392:2;4387;4383;4379:11;4375:20;4372:33;4369:53;;;4418:1;4415;4408:12;4369:53;4474:2;4469;4465;4461:11;4456:2;4448:6;4444:15;4431:46;4519:1;4514:2;4509;4501:6;4497:15;4493:24;4486:35;4540:6;4530:16;;;;;;;3414:1138;;;;;;;:::o;4557:260::-;4625:6;4633;4686:2;4674:9;4665:7;4661:23;4657:32;4654:52;;;4702:1;4699;4692:12;4654:52;4725:29;4744:9;4725:29;:::i;:::-;4715:39;;4773:38;4807:2;4796:9;4792:18;4773:38;:::i;:::-;4763:48;;4557:260;;;;;:::o;4822:380::-;4901:1;4897:12;;;;4944;;;4965:61;;5019:4;5011:6;5007:17;4997:27;;4965:61;5072:2;5064:6;5061:14;5041:18;5038:38;5035:161;;5118:10;5113:3;5109:20;5106:1;5099:31;5153:4;5150:1;5143:15;5181:4;5178:1;5171:15;5035:161;;4822:380;;;:::o;7216:496::-;7395:3;7433:6;7427:13;7449:66;7508:6;7503:3;7496:4;7488:6;7484:17;7449:66;:::i;:::-;7578:13;;7537:16;;;;7600:70;7578:13;7537:16;7647:4;7635:17;;7600:70;:::i;:::-;7686:20;;7216:496;-1:-1:-1;;;;7216:496:92:o;10151:512::-;10345:4;-1:-1:-1;;;;;10455:2:92;10447:6;10443:15;10432:9;10425:34;10507:2;10499:6;10495:15;10490:2;10479:9;10475:18;10468:43;;10547:6;10542:2;10531:9;10527:18;10520:34;10590:3;10585:2;10574:9;10570:18;10563:31;10611:46;10652:3;10641:9;10637:19;10629:6;10611:46;:::i;:::-;10603:54;10151:512;-1:-1:-1;;;;;;10151:512:92:o;10668:249::-;10737:6;10790:2;10778:9;10769:7;10765:23;10761:32;10758:52;;;10806:1;10803;10796:12;10758:52;10838:9;10832:16;10857:30;10881:5;10857:30;:::i"},"gasEstimates":{"creation":{"codeDepositCost":"1039400","executionCost":"infinite","totalCost":"infinite"},"external":{"approve(address,uint256)":"infinite","balanceOf(address)":"2656","burn(uint256)":"infinite","getApproved(uint256)":"4792","isApprovedForAll(address,address)":"infinite","mint(address,uint256)":"55386","name()":"infinite","ownerOf(uint256)":"2577","safeTransferFrom(address,address,uint256)":"infinite","safeTransferFrom(address,address,uint256,bytes)":"infinite","setApprovalForAll(address,bool)":"26705","supportsInterface(bytes4)":"534","symbol()":"infinite","tokenURI(uint256)":"infinite","transferFrom(address,address,uint256)":"infinite"}},"methodIdentifiers":{"approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","burn(uint256)":"42966c68","getApproved(uint256)":"081812fc","isApprovedForAll(address,address)":"e985e9c5","mint(address,uint256)":"40c10f19","name()":"06fdde03","ownerOf(uint256)":"6352211e","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","tokenURI(uint256)":"c87b56dd","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"DO NOT USE IN PRODUCTION!\",\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"See {IERC721-approve}.\"},\"balanceOf(address)\":{\"details\":\"See {IERC721-balanceOf}.\"},\"getApproved(uint256)\":{\"details\":\"See {IERC721-getApproved}.\"},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC721-isApprovedForAll}.\"},\"name()\":{\"details\":\"See {IERC721Metadata-name}.\"},\"ownerOf(uint256)\":{\"details\":\"See {IERC721-ownerOf}.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC721-setApprovalForAll}.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"symbol()\":{\"details\":\"See {IERC721Metadata-symbol}.\"},\"tokenURI(uint256)\":{\"details\":\"See {IERC721Metadata-tokenURI}.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-transferFrom}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"A mock [ERC-721](https://eips.ethereum.org/EIPS/eip-721) token that can be minted and burned by everyone.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/mocks/token/ERC721Mock.sol\":\"ERC721Mock\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC721/ERC721.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC721/ERC721.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC721.sol\\\";\\nimport \\\"./IERC721Receiver.sol\\\";\\nimport \\\"./extensions/IERC721Metadata.sol\\\";\\nimport \\\"../../utils/Address.sol\\\";\\nimport \\\"../../utils/Context.sol\\\";\\nimport \\\"../../utils/Strings.sol\\\";\\nimport \\\"../../utils/introspection/ERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including\\n * the Metadata extension, but not including the Enumerable extension, which is available separately as\\n * {ERC721Enumerable}.\\n */\\ncontract ERC721 is Context, ERC165, IERC721, IERC721Metadata {\\n using Address for address;\\n using Strings for uint256;\\n\\n // Token name\\n string private _name;\\n\\n // Token symbol\\n string private _symbol;\\n\\n // Mapping from token ID to owner address\\n mapping(uint256 => address) private _owners;\\n\\n // Mapping owner address to token count\\n mapping(address => uint256) private _balances;\\n\\n // Mapping from token ID to approved address\\n mapping(uint256 => address) private _tokenApprovals;\\n\\n // Mapping from owner to operator approvals\\n mapping(address => mapping(address => bool)) private _operatorApprovals;\\n\\n /**\\n * @dev Initializes the contract by setting a `name` and a `symbol` to the token collection.\\n */\\n constructor(string memory name_, string memory symbol_) {\\n _name = name_;\\n _symbol = symbol_;\\n }\\n\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) {\\n return\\n interfaceId == type(IERC721).interfaceId ||\\n interfaceId == type(IERC721Metadata).interfaceId ||\\n super.supportsInterface(interfaceId);\\n }\\n\\n /**\\n * @dev See {IERC721-balanceOf}.\\n */\\n function balanceOf(address owner) public view virtual override returns (uint256) {\\n require(owner != address(0), \\\"ERC721: address zero is not a valid owner\\\");\\n return _balances[owner];\\n }\\n\\n /**\\n * @dev See {IERC721-ownerOf}.\\n */\\n function ownerOf(uint256 tokenId) public view virtual override returns (address) {\\n address owner = _ownerOf(tokenId);\\n require(owner != address(0), \\\"ERC721: invalid token ID\\\");\\n return owner;\\n }\\n\\n /**\\n * @dev See {IERC721Metadata-name}.\\n */\\n function name() public view virtual override returns (string memory) {\\n return _name;\\n }\\n\\n /**\\n * @dev See {IERC721Metadata-symbol}.\\n */\\n function symbol() public view virtual override returns (string memory) {\\n return _symbol;\\n }\\n\\n /**\\n * @dev See {IERC721Metadata-tokenURI}.\\n */\\n function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {\\n _requireMinted(tokenId);\\n\\n string memory baseURI = _baseURI();\\n return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : \\\"\\\";\\n }\\n\\n /**\\n * @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\\n * token will be the concatenation of the `baseURI` and the `tokenId`. Empty\\n * by default, can be overridden in child contracts.\\n */\\n function _baseURI() internal view virtual returns (string memory) {\\n return \\\"\\\";\\n }\\n\\n /**\\n * @dev See {IERC721-approve}.\\n */\\n function approve(address to, uint256 tokenId) public virtual override {\\n address owner = ERC721.ownerOf(tokenId);\\n require(to != owner, \\\"ERC721: approval to current owner\\\");\\n\\n require(\\n _msgSender() == owner || isApprovedForAll(owner, _msgSender()),\\n \\\"ERC721: approve caller is not token owner or approved for all\\\"\\n );\\n\\n _approve(to, tokenId);\\n }\\n\\n /**\\n * @dev See {IERC721-getApproved}.\\n */\\n function getApproved(uint256 tokenId) public view virtual override returns (address) {\\n _requireMinted(tokenId);\\n\\n return _tokenApprovals[tokenId];\\n }\\n\\n /**\\n * @dev See {IERC721-setApprovalForAll}.\\n */\\n function setApprovalForAll(address operator, bool approved) public virtual override {\\n _setApprovalForAll(_msgSender(), operator, approved);\\n }\\n\\n /**\\n * @dev See {IERC721-isApprovedForAll}.\\n */\\n function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) {\\n return _operatorApprovals[owner][operator];\\n }\\n\\n /**\\n * @dev See {IERC721-transferFrom}.\\n */\\n function transferFrom(address from, address to, uint256 tokenId) public virtual override {\\n //solhint-disable-next-line max-line-length\\n require(_isApprovedOrOwner(_msgSender(), tokenId), \\\"ERC721: caller is not token owner or approved\\\");\\n\\n _transfer(from, to, tokenId);\\n }\\n\\n /**\\n * @dev See {IERC721-safeTransferFrom}.\\n */\\n function safeTransferFrom(address from, address to, uint256 tokenId) public virtual override {\\n safeTransferFrom(from, to, tokenId, \\\"\\\");\\n }\\n\\n /**\\n * @dev See {IERC721-safeTransferFrom}.\\n */\\n function safeTransferFrom(address from, address to, uint256 tokenId, bytes memory data) public virtual override {\\n require(_isApprovedOrOwner(_msgSender(), tokenId), \\\"ERC721: caller is not token owner or approved\\\");\\n _safeTransfer(from, to, tokenId, data);\\n }\\n\\n /**\\n * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\\n * are aware of the ERC721 protocol to prevent tokens from being forever locked.\\n *\\n * `data` is additional data, it has no specified format and it is sent in call to `to`.\\n *\\n * This internal function is equivalent to {safeTransferFrom}, and can be used to e.g.\\n * implement alternative mechanisms to perform token transfer, such as signature-based.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must exist and be owned by `from`.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n *\\n * Emits a {Transfer} event.\\n */\\n function _safeTransfer(address from, address to, uint256 tokenId, bytes memory data) internal virtual {\\n _transfer(from, to, tokenId);\\n require(_checkOnERC721Received(from, to, tokenId, data), \\\"ERC721: transfer to non ERC721Receiver implementer\\\");\\n }\\n\\n /**\\n * @dev Returns the owner of the `tokenId`. Does NOT revert if token doesn't exist\\n */\\n function _ownerOf(uint256 tokenId) internal view virtual returns (address) {\\n return _owners[tokenId];\\n }\\n\\n /**\\n * @dev Returns whether `tokenId` exists.\\n *\\n * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}.\\n *\\n * Tokens start existing when they are minted (`_mint`),\\n * and stop existing when they are burned (`_burn`).\\n */\\n function _exists(uint256 tokenId) internal view virtual returns (bool) {\\n return _ownerOf(tokenId) != address(0);\\n }\\n\\n /**\\n * @dev Returns whether `spender` is allowed to manage `tokenId`.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must exist.\\n */\\n function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) {\\n address owner = ERC721.ownerOf(tokenId);\\n return (spender == owner || isApprovedForAll(owner, spender) || getApproved(tokenId) == spender);\\n }\\n\\n /**\\n * @dev Safely mints `tokenId` and transfers it to `to`.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must not exist.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n *\\n * Emits a {Transfer} event.\\n */\\n function _safeMint(address to, uint256 tokenId) internal virtual {\\n _safeMint(to, tokenId, \\\"\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\\n * forwarded in {IERC721Receiver-onERC721Received} to contract recipients.\\n */\\n function _safeMint(address to, uint256 tokenId, bytes memory data) internal virtual {\\n _mint(to, tokenId);\\n require(\\n _checkOnERC721Received(address(0), to, tokenId, data),\\n \\\"ERC721: transfer to non ERC721Receiver implementer\\\"\\n );\\n }\\n\\n /**\\n * @dev Mints `tokenId` and transfers it to `to`.\\n *\\n * WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\\n *\\n * Requirements:\\n *\\n * - `tokenId` must not exist.\\n * - `to` cannot be the zero address.\\n *\\n * Emits a {Transfer} event.\\n */\\n function _mint(address to, uint256 tokenId) internal virtual {\\n require(to != address(0), \\\"ERC721: mint to the zero address\\\");\\n require(!_exists(tokenId), \\\"ERC721: token already minted\\\");\\n\\n _beforeTokenTransfer(address(0), to, tokenId, 1);\\n\\n // Check that tokenId was not minted by `_beforeTokenTransfer` hook\\n require(!_exists(tokenId), \\\"ERC721: token already minted\\\");\\n\\n unchecked {\\n // Will not overflow unless all 2**256 token ids are minted to the same owner.\\n // Given that tokens are minted one by one, it is impossible in practice that\\n // this ever happens. Might change if we allow batch minting.\\n // The ERC fails to describe this case.\\n _balances[to] += 1;\\n }\\n\\n _owners[tokenId] = to;\\n\\n emit Transfer(address(0), to, tokenId);\\n\\n _afterTokenTransfer(address(0), to, tokenId, 1);\\n }\\n\\n /**\\n * @dev Destroys `tokenId`.\\n * The approval is cleared when the token is burned.\\n * This is an internal function that does not check if the sender is authorized to operate on the token.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must exist.\\n *\\n * Emits a {Transfer} event.\\n */\\n function _burn(uint256 tokenId) internal virtual {\\n address owner = ERC721.ownerOf(tokenId);\\n\\n _beforeTokenTransfer(owner, address(0), tokenId, 1);\\n\\n // Update ownership in case tokenId was transferred by `_beforeTokenTransfer` hook\\n owner = ERC721.ownerOf(tokenId);\\n\\n // Clear approvals\\n delete _tokenApprovals[tokenId];\\n\\n unchecked {\\n // Cannot overflow, as that would require more tokens to be burned/transferred\\n // out than the owner initially received through minting and transferring in.\\n _balances[owner] -= 1;\\n }\\n delete _owners[tokenId];\\n\\n emit Transfer(owner, address(0), tokenId);\\n\\n _afterTokenTransfer(owner, address(0), tokenId, 1);\\n }\\n\\n /**\\n * @dev Transfers `tokenId` from `from` to `to`.\\n * As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\\n *\\n * Requirements:\\n *\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must be owned by `from`.\\n *\\n * Emits a {Transfer} event.\\n */\\n function _transfer(address from, address to, uint256 tokenId) internal virtual {\\n require(ERC721.ownerOf(tokenId) == from, \\\"ERC721: transfer from incorrect owner\\\");\\n require(to != address(0), \\\"ERC721: transfer to the zero address\\\");\\n\\n _beforeTokenTransfer(from, to, tokenId, 1);\\n\\n // Check that tokenId was not transferred by `_beforeTokenTransfer` hook\\n require(ERC721.ownerOf(tokenId) == from, \\\"ERC721: transfer from incorrect owner\\\");\\n\\n // Clear approvals from the previous owner\\n delete _tokenApprovals[tokenId];\\n\\n unchecked {\\n // `_balances[from]` cannot overflow for the same reason as described in `_burn`:\\n // `from`'s balance is the number of token held, which is at least one before the current\\n // transfer.\\n // `_balances[to]` could overflow in the conditions described in `_mint`. That would require\\n // all 2**256 token ids to be minted, which in practice is impossible.\\n _balances[from] -= 1;\\n _balances[to] += 1;\\n }\\n _owners[tokenId] = to;\\n\\n emit Transfer(from, to, tokenId);\\n\\n _afterTokenTransfer(from, to, tokenId, 1);\\n }\\n\\n /**\\n * @dev Approve `to` to operate on `tokenId`\\n *\\n * Emits an {Approval} event.\\n */\\n function _approve(address to, uint256 tokenId) internal virtual {\\n _tokenApprovals[tokenId] = to;\\n emit Approval(ERC721.ownerOf(tokenId), to, tokenId);\\n }\\n\\n /**\\n * @dev Approve `operator` to operate on all of `owner` tokens\\n *\\n * Emits an {ApprovalForAll} event.\\n */\\n function _setApprovalForAll(address owner, address operator, bool approved) internal virtual {\\n require(owner != operator, \\\"ERC721: approve to caller\\\");\\n _operatorApprovals[owner][operator] = approved;\\n emit ApprovalForAll(owner, operator, approved);\\n }\\n\\n /**\\n * @dev Reverts if the `tokenId` has not been minted yet.\\n */\\n function _requireMinted(uint256 tokenId) internal view virtual {\\n require(_exists(tokenId), \\\"ERC721: invalid token ID\\\");\\n }\\n\\n /**\\n * @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address.\\n * The call is not executed if the target address is not a contract.\\n *\\n * @param from address representing the previous owner of the given token ID\\n * @param to target address that will receive the tokens\\n * @param tokenId uint256 ID of the token to be transferred\\n * @param data bytes optional data to send along with the call\\n * @return bool whether the call correctly returned the expected magic value\\n */\\n function _checkOnERC721Received(\\n address from,\\n address to,\\n uint256 tokenId,\\n bytes memory data\\n ) private returns (bool) {\\n if (to.isContract()) {\\n try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, data) returns (bytes4 retval) {\\n return retval == IERC721Receiver.onERC721Received.selector;\\n } catch (bytes memory reason) {\\n if (reason.length == 0) {\\n revert(\\\"ERC721: transfer to non ERC721Receiver implementer\\\");\\n } else {\\n /// @solidity memory-safe-assembly\\n assembly {\\n revert(add(32, reason), mload(reason))\\n }\\n }\\n }\\n } else {\\n return true;\\n }\\n }\\n\\n /**\\n * @dev Hook that is called before any token transfer. This includes minting and burning. If {ERC721Consecutive} is\\n * used, the hook may be called as part of a consecutive (batch) mint, as indicated by `batchSize` greater than 1.\\n *\\n * Calling conditions:\\n *\\n * - When `from` and `to` are both non-zero, ``from``'s tokens will be transferred to `to`.\\n * - When `from` is zero, the tokens will be minted for `to`.\\n * - When `to` is zero, ``from``'s tokens will be burned.\\n * - `from` and `to` are never both zero.\\n * - `batchSize` is non-zero.\\n *\\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n */\\n function _beforeTokenTransfer(address from, address to, uint256 firstTokenId, uint256 batchSize) internal virtual {}\\n\\n /**\\n * @dev Hook that is called after any token transfer. This includes minting and burning. If {ERC721Consecutive} is\\n * used, the hook may be called as part of a consecutive (batch) mint, as indicated by `batchSize` greater than 1.\\n *\\n * Calling conditions:\\n *\\n * - When `from` and `to` are both non-zero, ``from``'s tokens were transferred to `to`.\\n * - When `from` is zero, the tokens were minted for `to`.\\n * - When `to` is zero, ``from``'s tokens were burned.\\n * - `from` and `to` are never both zero.\\n * - `batchSize` is non-zero.\\n *\\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n */\\n function _afterTokenTransfer(address from, address to, uint256 firstTokenId, uint256 batchSize) internal virtual {}\\n\\n /**\\n * @dev Unsafe write access to the balances, used by extensions that \\\"mint\\\" tokens using an {ownerOf} override.\\n *\\n * WARNING: Anyone calling this MUST ensure that the balances remain consistent with the ownership. The invariant\\n * being that for any address `a` the value returned by `balanceOf(a)` must be equal to the number of tokens such\\n * that `ownerOf(tokenId)` is `a`.\\n */\\n // solhint-disable-next-line func-name-mixedcase\\n function __unsafe_increaseBalance(address account, uint256 amount) internal {\\n _balances[account] += amount;\\n }\\n}\\n\",\"keccak256\":\"0x2c309e7df9e05e6ce15bedfe74f3c61b467fc37e0fae9eab496acf5ea0bbd7ff\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC721/IERC721.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC721 compliant contract.\\n */\\ninterface IERC721 is IERC165 {\\n /**\\n * @dev Emitted when `tokenId` token is transferred from `from` to `to`.\\n */\\n event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);\\n\\n /**\\n * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.\\n */\\n event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);\\n\\n /**\\n * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\\n */\\n event ApprovalForAll(address indexed owner, address indexed operator, bool approved);\\n\\n /**\\n * @dev Returns the number of tokens in ``owner``'s account.\\n */\\n function balanceOf(address owner) external view returns (uint256 balance);\\n\\n /**\\n * @dev Returns the owner of the `tokenId` token.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must exist.\\n */\\n function ownerOf(uint256 tokenId) external view returns (address owner);\\n\\n /**\\n * @dev Safely transfers `tokenId` token from `from` to `to`.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must exist and be owned by `from`.\\n * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n *\\n * Emits a {Transfer} event.\\n */\\n function safeTransferFrom(address from, address to, uint256 tokenId, bytes calldata data) external;\\n\\n /**\\n * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\\n * are aware of the ERC721 protocol to prevent tokens from being forever locked.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must exist and be owned by `from`.\\n * - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n *\\n * Emits a {Transfer} event.\\n */\\n function safeTransferFrom(address from, address to, uint256 tokenId) external;\\n\\n /**\\n * @dev Transfers `tokenId` token from `from` to `to`.\\n *\\n * WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721\\n * or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must\\n * understand this adds an external call which potentially creates a reentrancy vulnerability.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must be owned by `from`.\\n * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transferFrom(address from, address to, uint256 tokenId) external;\\n\\n /**\\n * @dev Gives permission to `to` to transfer `tokenId` token to another account.\\n * The approval is cleared when the token is transferred.\\n *\\n * Only a single account can be approved at a time, so approving the zero address clears previous approvals.\\n *\\n * Requirements:\\n *\\n * - The caller must own the token or be an approved operator.\\n * - `tokenId` must exist.\\n *\\n * Emits an {Approval} event.\\n */\\n function approve(address to, uint256 tokenId) external;\\n\\n /**\\n * @dev Approve or remove `operator` as an operator for the caller.\\n * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\\n *\\n * Requirements:\\n *\\n * - The `operator` cannot be the caller.\\n *\\n * Emits an {ApprovalForAll} event.\\n */\\n function setApprovalForAll(address operator, bool approved) external;\\n\\n /**\\n * @dev Returns the account approved for `tokenId` token.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must exist.\\n */\\n function getApproved(uint256 tokenId) external view returns (address operator);\\n\\n /**\\n * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\\n *\\n * See {setApprovalForAll}\\n */\\n function isApprovedForAll(address owner, address operator) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x5bce51e11f7d194b79ea59fe00c9e8de9fa2c5530124960f29a24d4c740a3266\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC721/IERC721Receiver.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title ERC721 token receiver interface\\n * @dev Interface for any contract that wants to support safeTransfers\\n * from ERC721 asset contracts.\\n */\\ninterface IERC721Receiver {\\n /**\\n * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}\\n * by `operator` from `from`, this function is called.\\n *\\n * It must return its Solidity selector to confirm the token transfer.\\n * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted.\\n *\\n * The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`.\\n */\\n function onERC721Received(\\n address operator,\\n address from,\\n uint256 tokenId,\\n bytes calldata data\\n ) external returns (bytes4);\\n}\\n\",\"keccak256\":\"0xa82b58eca1ee256be466e536706850163d2ec7821945abd6b4778cfb3bee37da\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Metadata.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC721.sol\\\";\\n\\n/**\\n * @title ERC-721 Non-Fungible Token Standard, optional metadata extension\\n * @dev See https://eips.ethereum.org/EIPS/eip-721\\n */\\ninterface IERC721Metadata is IERC721 {\\n /**\\n * @dev Returns the token collection name.\\n */\\n function name() external view returns (string memory);\\n\\n /**\\n * @dev Returns the token collection symbol.\\n */\\n function symbol() external view returns (string memory);\\n\\n /**\\n * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.\\n */\\n function tokenURI(uint256 tokenId) external view returns (string memory);\\n}\\n\",\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n function _contextSuffixLength() internal view virtual returns (uint256) {\\n return 0;\\n }\\n}\\n\",\"keccak256\":\"0xa92e4fa126feb6907daa0513ddd816b2eb91f30a808de54f63c17d0e162c3439\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Strings.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Strings.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./math/Math.sol\\\";\\nimport \\\"./math/SignedMath.sol\\\";\\n\\n/**\\n * @dev String operations.\\n */\\nlibrary Strings {\\n bytes16 private constant _SYMBOLS = \\\"0123456789abcdef\\\";\\n uint8 private constant _ADDRESS_LENGTH = 20;\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` decimal representation.\\n */\\n function toString(uint256 value) internal pure returns (string memory) {\\n unchecked {\\n uint256 length = Math.log10(value) + 1;\\n string memory buffer = new string(length);\\n uint256 ptr;\\n /// @solidity memory-safe-assembly\\n assembly {\\n ptr := add(buffer, add(32, length))\\n }\\n while (true) {\\n ptr--;\\n /// @solidity memory-safe-assembly\\n assembly {\\n mstore8(ptr, byte(mod(value, 10), _SYMBOLS))\\n }\\n value /= 10;\\n if (value == 0) break;\\n }\\n return buffer;\\n }\\n }\\n\\n /**\\n * @dev Converts a `int256` to its ASCII `string` decimal representation.\\n */\\n function toString(int256 value) internal pure returns (string memory) {\\n return string(abi.encodePacked(value < 0 ? \\\"-\\\" : \\\"\\\", toString(SignedMath.abs(value))));\\n }\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\\n */\\n function toHexString(uint256 value) internal pure returns (string memory) {\\n unchecked {\\n return toHexString(value, Math.log256(value) + 1);\\n }\\n }\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\\n */\\n function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\\n bytes memory buffer = new bytes(2 * length + 2);\\n buffer[0] = \\\"0\\\";\\n buffer[1] = \\\"x\\\";\\n for (uint256 i = 2 * length + 1; i > 1; --i) {\\n buffer[i] = _SYMBOLS[value & 0xf];\\n value >>= 4;\\n }\\n require(value == 0, \\\"Strings: hex length insufficient\\\");\\n return string(buffer);\\n }\\n\\n /**\\n * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.\\n */\\n function toHexString(address addr) internal pure returns (string memory) {\\n return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);\\n }\\n\\n /**\\n * @dev Returns true if the two strings are equal.\\n */\\n function equal(string memory a, string memory b) internal pure returns (bool) {\\n return keccak256(bytes(a)) == keccak256(bytes(b));\\n }\\n}\\n\",\"keccak256\":\"0x3088eb2868e8d13d89d16670b5f8612c4ab9ff8956272837d8e90106c59c14a0\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165 is IERC165 {\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165).interfaceId;\\n }\\n}\\n\",\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/math/Math.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard math utilities missing in the Solidity language.\\n */\\nlibrary Math {\\n enum Rounding {\\n Down, // Toward negative infinity\\n Up, // Toward infinity\\n Zero // Toward zero\\n }\\n\\n /**\\n * @dev Returns the largest of two numbers.\\n */\\n function max(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two numbers.\\n */\\n function min(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two numbers. The result is rounded towards\\n * zero.\\n */\\n function average(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b) / 2 can overflow.\\n return (a & b) + (a ^ b) / 2;\\n }\\n\\n /**\\n * @dev Returns the ceiling of the division of two numbers.\\n *\\n * This differs from standard division with `/` in that it rounds up instead\\n * of rounding down.\\n */\\n function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b - 1) / b can overflow on addition, so we distribute.\\n return a == 0 ? 0 : (a - 1) / b + 1;\\n }\\n\\n /**\\n * @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\\n * @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)\\n * with further edits by Uniswap Labs also under MIT license.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator) internal pure returns (uint256 result) {\\n unchecked {\\n // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use\\n // use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\\n // variables such that product = prod1 * 2^256 + prod0.\\n uint256 prod0; // Least significant 256 bits of the product\\n uint256 prod1; // Most significant 256 bits of the product\\n assembly {\\n let mm := mulmod(x, y, not(0))\\n prod0 := mul(x, y)\\n prod1 := sub(sub(mm, prod0), lt(mm, prod0))\\n }\\n\\n // Handle non-overflow cases, 256 by 256 division.\\n if (prod1 == 0) {\\n // Solidity will revert if denominator == 0, unlike the div opcode on its own.\\n // The surrounding unchecked block does not change this fact.\\n // See https://docs.soliditylang.org/en/latest/control-structures.html#checked-or-unchecked-arithmetic.\\n return prod0 / denominator;\\n }\\n\\n // Make sure the result is less than 2^256. Also prevents denominator == 0.\\n require(denominator > prod1, \\\"Math: mulDiv overflow\\\");\\n\\n ///////////////////////////////////////////////\\n // 512 by 256 division.\\n ///////////////////////////////////////////////\\n\\n // Make division exact by subtracting the remainder from [prod1 prod0].\\n uint256 remainder;\\n assembly {\\n // Compute remainder using mulmod.\\n remainder := mulmod(x, y, denominator)\\n\\n // Subtract 256 bit number from 512 bit number.\\n prod1 := sub(prod1, gt(remainder, prod0))\\n prod0 := sub(prod0, remainder)\\n }\\n\\n // Factor powers of two out of denominator and compute largest power of two divisor of denominator. Always >= 1.\\n // See https://cs.stackexchange.com/q/138556/92363.\\n\\n // Does not overflow because the denominator cannot be zero at this stage in the function.\\n uint256 twos = denominator & (~denominator + 1);\\n assembly {\\n // Divide denominator by twos.\\n denominator := div(denominator, twos)\\n\\n // Divide [prod1 prod0] by twos.\\n prod0 := div(prod0, twos)\\n\\n // Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one.\\n twos := add(div(sub(0, twos), twos), 1)\\n }\\n\\n // Shift in bits from prod1 into prod0.\\n prod0 |= prod1 * twos;\\n\\n // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such\\n // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for\\n // four bits. That is, denominator * inv = 1 mod 2^4.\\n uint256 inverse = (3 * denominator) ^ 2;\\n\\n // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also works\\n // in modular arithmetic, doubling the correct bits in each step.\\n inverse *= 2 - denominator * inverse; // inverse mod 2^8\\n inverse *= 2 - denominator * inverse; // inverse mod 2^16\\n inverse *= 2 - denominator * inverse; // inverse mod 2^32\\n inverse *= 2 - denominator * inverse; // inverse mod 2^64\\n inverse *= 2 - denominator * inverse; // inverse mod 2^128\\n inverse *= 2 - denominator * inverse; // inverse mod 2^256\\n\\n // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\\n // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is\\n // less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1\\n // is no longer required.\\n result = prod0 * inverse;\\n return result;\\n }\\n }\\n\\n /**\\n * @notice Calculates x * y / denominator with full precision, following the selected rounding direction.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator, Rounding rounding) internal pure returns (uint256) {\\n uint256 result = mulDiv(x, y, denominator);\\n if (rounding == Rounding.Up && mulmod(x, y, denominator) > 0) {\\n result += 1;\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down.\\n *\\n * Inspired by Henry S. Warren, Jr.'s \\\"Hacker's Delight\\\" (Chapter 11).\\n */\\n function sqrt(uint256 a) internal pure returns (uint256) {\\n if (a == 0) {\\n return 0;\\n }\\n\\n // For our first guess, we get the biggest power of 2 which is smaller than the square root of the target.\\n //\\n // We know that the \\\"msb\\\" (most significant bit) of our target number `a` is a power of 2 such that we have\\n // `msb(a) <= a < 2*msb(a)`. This value can be written `msb(a)=2**k` with `k=log2(a)`.\\n //\\n // This can be rewritten `2**log2(a) <= a < 2**(log2(a) + 1)`\\n // \\u2192 `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))`\\n // \\u2192 `2**(k/2) <= sqrt(a) < 2**((k+1)/2) <= 2**(k/2 + 1)`\\n //\\n // Consequently, `2**(log2(a) / 2)` is a good first approximation of `sqrt(a)` with at least 1 correct bit.\\n uint256 result = 1 << (log2(a) >> 1);\\n\\n // At this point `result` is an estimation with one bit of precision. We know the true value is a uint128,\\n // since it is the square root of a uint256. Newton's method converges quadratically (precision doubles at\\n // every iteration). We thus need at most 7 iteration to turn our partial result with one bit of precision\\n // into the expected uint128 result.\\n unchecked {\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n return min(result, a / result);\\n }\\n }\\n\\n /**\\n * @notice Calculates sqrt(a), following the selected rounding direction.\\n */\\n function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = sqrt(a);\\n return result + (rounding == Rounding.Up && result * result < a ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 2, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 128;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 64;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 32;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 16;\\n }\\n if (value >> 8 > 0) {\\n value >>= 8;\\n result += 8;\\n }\\n if (value >> 4 > 0) {\\n value >>= 4;\\n result += 4;\\n }\\n if (value >> 2 > 0) {\\n value >>= 2;\\n result += 2;\\n }\\n if (value >> 1 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 2, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log2(value);\\n return result + (rounding == Rounding.Up && 1 << result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 10, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >= 10 ** 64) {\\n value /= 10 ** 64;\\n result += 64;\\n }\\n if (value >= 10 ** 32) {\\n value /= 10 ** 32;\\n result += 32;\\n }\\n if (value >= 10 ** 16) {\\n value /= 10 ** 16;\\n result += 16;\\n }\\n if (value >= 10 ** 8) {\\n value /= 10 ** 8;\\n result += 8;\\n }\\n if (value >= 10 ** 4) {\\n value /= 10 ** 4;\\n result += 4;\\n }\\n if (value >= 10 ** 2) {\\n value /= 10 ** 2;\\n result += 2;\\n }\\n if (value >= 10 ** 1) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log10(value);\\n return result + (rounding == Rounding.Up && 10 ** result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 256, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n *\\n * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.\\n */\\n function log256(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 16;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 8;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 4;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 2;\\n }\\n if (value >> 8 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 256, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log256(value);\\n return result + (rounding == Rounding.Up && 1 << (result << 3) < value ? 1 : 0);\\n }\\n }\\n}\\n\",\"keccak256\":\"0xe4455ac1eb7fc497bb7402579e7b4d64d928b846fce7d2b6fde06d366f21c2b3\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/SignedMath.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard signed math utilities missing in the Solidity language.\\n */\\nlibrary SignedMath {\\n /**\\n * @dev Returns the largest of two signed numbers.\\n */\\n function max(int256 a, int256 b) internal pure returns (int256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two signed numbers.\\n */\\n function min(int256 a, int256 b) internal pure returns (int256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two signed numbers without overflow.\\n * The result is rounded towards zero.\\n */\\n function average(int256 a, int256 b) internal pure returns (int256) {\\n // Formula from the book \\\"Hacker's Delight\\\"\\n int256 x = (a & b) + ((a ^ b) >> 1);\\n return x + (int256(uint256(x) >> 255) & (a ^ b));\\n }\\n\\n /**\\n * @dev Returns the absolute unsigned value of a signed value.\\n */\\n function abs(int256 n) internal pure returns (uint256) {\\n unchecked {\\n // must be unchecked in order to support `n = type(int256).min`\\n return uint256(n >= 0 ? n : -n);\\n }\\n }\\n}\\n\",\"keccak256\":\"0xf92515413956f529d95977adc9b0567d583c6203fc31ab1c23824c35187e3ddc\",\"license\":\"MIT\"},\"src/mocks/token/ERC721Mock.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ERC721} from \\\"@openzeppelin/contracts/token/ERC721/ERC721.sol\\\";\\n\\n/// @notice A mock [ERC-721](https://eips.ethereum.org/EIPS/eip-721) token that can be minted and burned by everyone.\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract ERC721Mock is ERC721 {\\n constructor(string memory name_, string memory symbol_) ERC721(name_, symbol_) {}\\n\\n function mint(address account, uint256 tokenId) public {\\n _mint(account, tokenId);\\n }\\n\\n function burn(uint256 tokenId) public {\\n _burn(tokenId);\\n }\\n}\\n\",\"keccak256\":\"0xc19c7f14d72ecefa0d99a994f9aca81e91f69644bbe237a3e244b25df887b88d\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[{"astId":7872,"contract":"src/mocks/token/ERC721Mock.sol:ERC721Mock","label":"_name","offset":0,"slot":"0","type":"t_string_storage"},{"astId":7874,"contract":"src/mocks/token/ERC721Mock.sol:ERC721Mock","label":"_symbol","offset":0,"slot":"1","type":"t_string_storage"},{"astId":7878,"contract":"src/mocks/token/ERC721Mock.sol:ERC721Mock","label":"_owners","offset":0,"slot":"2","type":"t_mapping(t_uint256,t_address)"},{"astId":7882,"contract":"src/mocks/token/ERC721Mock.sol:ERC721Mock","label":"_balances","offset":0,"slot":"3","type":"t_mapping(t_address,t_uint256)"},{"astId":7886,"contract":"src/mocks/token/ERC721Mock.sol:ERC721Mock","label":"_tokenApprovals","offset":0,"slot":"4","type":"t_mapping(t_uint256,t_address)"},{"astId":7892,"contract":"src/mocks/token/ERC721Mock.sol:ERC721Mock","label":"_operatorApprovals","offset":0,"slot":"5","type":"t_mapping(t_address,t_mapping(t_address,t_bool))"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_mapping(t_address,t_bool)":{"encoding":"mapping","key":"t_address","label":"mapping(address => bool)","numberOfBytes":"32","value":"t_bool"},"t_mapping(t_address,t_mapping(t_address,t_bool))":{"encoding":"mapping","key":"t_address","label":"mapping(address => mapping(address => bool))","numberOfBytes":"32","value":"t_mapping(t_address,t_bool)"},"t_mapping(t_address,t_uint256)":{"encoding":"mapping","key":"t_address","label":"mapping(address => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_mapping(t_uint256,t_address)":{"encoding":"mapping","key":"t_uint256","label":"mapping(uint256 => address)","numberOfBytes":"32","value":"t_address"},"t_string_storage":{"encoding":"bytes","label":"string","numberOfBytes":"32"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"userdoc":{"kind":"user","methods":{},"notice":"A mock [ERC-721](https://eips.ethereum.org/EIPS/eip-721) token that can be minted and burned by everyone.","version":1}}},"src/mocks/utils/math/BitmapMock.sol":{"BitmapMock":{"abi":[{"inputs":[{"internalType":"uint256","name":"_bitmap","type":"uint256"},{"internalType":"uint8","name":"_index","type":"uint8"}],"name":"flipBit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"_bitmap","type":"uint256"},{"internalType":"uint8","name":"_index","type":"uint8"}],"name":"hasBit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"}],"devdoc":{"details":"DO NOT USE IN PRODUCTION!","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b5060dc8061001f6000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c806330c869ef1460375780637a3a148514605b575b600080fd5b60466042366004609b565b6077565b60405190151581526020015b60405180910390f35b606a6066366004609b565b608c565b6040519081526020016052565b6000600160ff83161b831615155b9392505050565b6000600160ff83161b83186085565b6000806040838503121560ad57600080fd5b82359150602083013560ff8116811460c457600080fd5b80915050925092905056fea164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xDC DUP1 PUSH2 0x1F PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x32 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x30C869EF EQ PUSH1 0x37 JUMPI DUP1 PUSH4 0x7A3A1485 EQ PUSH1 0x5B JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x46 PUSH1 0x42 CALLDATASIZE PUSH1 0x4 PUSH1 0x9B JUMP JUMPDEST PUSH1 0x77 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x6A PUSH1 0x66 CALLDATASIZE PUSH1 0x4 PUSH1 0x9B JUMP JUMPDEST PUSH1 0x8C JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x52 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xFF DUP4 AND SHL DUP4 AND ISZERO ISZERO JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xFF DUP4 AND SHL DUP4 XOR PUSH1 0x85 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH1 0xAD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH1 0xC4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"266:283:61:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@flipBit_12839":{"entryPoint":140,"id":12839,"parameterSlots":2,"returnSlots":1},"@flipBit_14637":{"entryPoint":null,"id":14637,"parameterSlots":2,"returnSlots":1},"@hasBit_12824":{"entryPoint":119,"id":12824,"parameterSlots":2,"returnSlots":1},"@hasBit_14619":{"entryPoint":null,"id":14619,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256t_uint8":{"entryPoint":155,"id":null,"parameterSlots":2,"returnSlots":2},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:727:92","statements":[{"nodeType":"YulBlock","src":"6:3:92","statements":[]},{"body":{"nodeType":"YulBlock","src":"99:252:92","statements":[{"body":{"nodeType":"YulBlock","src":"145:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"154:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"157:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"147:6:92"},"nodeType":"YulFunctionCall","src":"147:12:92"},"nodeType":"YulExpressionStatement","src":"147:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"120:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"129:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"116:3:92"},"nodeType":"YulFunctionCall","src":"116:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"141:2:92","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"112:3:92"},"nodeType":"YulFunctionCall","src":"112:32:92"},"nodeType":"YulIf","src":"109:52:92"},{"nodeType":"YulAssignment","src":"170:33:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"193:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"180:12:92"},"nodeType":"YulFunctionCall","src":"180:23:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"170:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"212:45:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"242:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"253:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"238:3:92"},"nodeType":"YulFunctionCall","src":"238:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"225:12:92"},"nodeType":"YulFunctionCall","src":"225:32:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"216:5:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"305:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"314:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"317:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"307:6:92"},"nodeType":"YulFunctionCall","src":"307:12:92"},"nodeType":"YulExpressionStatement","src":"307:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"279:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"290:5:92"},{"kind":"number","nodeType":"YulLiteral","src":"297:4:92","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"286:3:92"},"nodeType":"YulFunctionCall","src":"286:16:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"276:2:92"},"nodeType":"YulFunctionCall","src":"276:27:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"269:6:92"},"nodeType":"YulFunctionCall","src":"269:35:92"},"nodeType":"YulIf","src":"266:55:92"},{"nodeType":"YulAssignment","src":"330:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"340:5:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"330:6:92"}]}]},"name":"abi_decode_tuple_t_uint256t_uint8","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"57:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"68:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"80:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"88:6:92","type":""}],"src":"14:337:92"},{"body":{"nodeType":"YulBlock","src":"451:92:92","statements":[{"nodeType":"YulAssignment","src":"461:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"473:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"484:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"469:3:92"},"nodeType":"YulFunctionCall","src":"469:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"461:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"503:9:92"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"528:6:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"521:6:92"},"nodeType":"YulFunctionCall","src":"521:14:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"514:6:92"},"nodeType":"YulFunctionCall","src":"514:22:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"496:6:92"},"nodeType":"YulFunctionCall","src":"496:41:92"},"nodeType":"YulExpressionStatement","src":"496:41:92"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"420:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"431:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"442:4:92","type":""}],"src":"356:187:92"},{"body":{"nodeType":"YulBlock","src":"649:76:92","statements":[{"nodeType":"YulAssignment","src":"659:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"671:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"682:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"667:3:92"},"nodeType":"YulFunctionCall","src":"667:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"659:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"701:9:92"},{"name":"value0","nodeType":"YulIdentifier","src":"712:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"694:6:92"},"nodeType":"YulFunctionCall","src":"694:25:92"},"nodeType":"YulExpressionStatement","src":"694:25:92"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"618:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"629:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"640:4:92","type":""}],"src":"548:177:92"}]},"contents":"{\n { }\n function abi_decode_tuple_t_uint256t_uint8(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := calldataload(headStart)\n let value := calldataload(add(headStart, 32))\n if iszero(eq(value, and(value, 0xff))) { revert(0, 0) }\n value1 := value\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n}","id":92,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"6080604052348015600f57600080fd5b506004361060325760003560e01c806330c869ef1460375780637a3a148514605b575b600080fd5b60466042366004609b565b6077565b60405190151581526020015b60405180910390f35b606a6066366004609b565b608c565b6040519081526020016052565b6000600160ff83161b831615155b9392505050565b6000600160ff83161b83186085565b6000806040838503121560ad57600080fd5b82359150602083013560ff8116811460c457600080fd5b80915050925092905056fea164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x32 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x30C869EF EQ PUSH1 0x37 JUMPI DUP1 PUSH4 0x7A3A1485 EQ PUSH1 0x5B JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x46 PUSH1 0x42 CALLDATASIZE PUSH1 0x4 PUSH1 0x9B JUMP JUMPDEST PUSH1 0x77 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x6A PUSH1 0x66 CALLDATASIZE PUSH1 0x4 PUSH1 0x9B JUMP JUMPDEST PUSH1 0x8C JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x52 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xFF DUP4 AND SHL DUP4 AND ISZERO ISZERO JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xFF DUP4 AND SHL DUP4 XOR PUSH1 0x85 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH1 0xAD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH1 0xC4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"266:283:61:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;292:122;;;;;;:::i;:::-;;:::i;:::-;;;521:14:92;;514:22;496:41;;484:2;469:18;292:122:61;;;;;;;;420:127;;;;;;:::i;:::-;;:::i;:::-;;;694:25:92;;;682:2;667:18;420:127:61;548:177:92;292:122:61;360:4;408:1:86;:10;;;;398:21;;432:12;;383:24:61;376:31;292:122;-1:-1:-1;;;292:122:61:o;420:127::-;489:7;761:1:86;:10;;;;751:21;;515:25:61;669:106:86;14:337:92;80:6;88;141:2;129:9;120:7;116:23;112:32;109:52;;;157:1;154;147:12;109:52;193:9;180:23;170:33;;253:2;242:9;238:18;225:32;297:4;290:5;286:16;279:5;276:27;266:55;;317:1;314;307:12;266:55;340:5;330:15;;;14:337;;;;;:::o"},"gasEstimates":{"creation":{"codeDepositCost":"44000","executionCost":"93","totalCost":"44093"},"external":{"flipBit(uint256,uint8)":"391","hasBit(uint256,uint8)":"359"}},"methodIdentifiers":{"flipBit(uint256,uint8)":"7a3a1485","hasBit(uint256,uint8)":"30c869ef"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_bitmap\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"_index\",\"type\":\"uint8\"}],\"name\":\"flipBit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_bitmap\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"_index\",\"type\":\"uint8\"}],\"name\":\"hasBit\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"DO NOT USE IN PRODUCTION!\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"A mock contract containing functions manipulating bitmaps.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/mocks/utils/math/BitmapMock.sol\":\"BitmapMock\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"src/mocks/utils/math/BitmapMock.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {hasBit as _hasBit, flipBit as _flipBit} from \\\"../../../utils/math/BitMap.sol\\\";\\n\\n/// @notice A mock contract containing functions manipulating bitmaps.\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract BitmapMock {\\n function hasBit(uint256 _bitmap, uint8 _index) public pure returns (bool) {\\n return _hasBit(_bitmap, _index);\\n }\\n\\n function flipBit(uint256 _bitmap, uint8 _index) public pure returns (uint256) {\\n return _flipBit(_bitmap, _index);\\n }\\n}\\n\",\"keccak256\":\"0x67d05948db896db9be88aa96e3de574ea44f42679dbbcb28d108a222f5531990\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/math/BitMap.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @param bitmap The `uint256` representation of bits.\\n/// @param index The index number to check whether 1 or 0 is set.\\n/// @return Returns `true` if the bit is set at `index` on `bitmap`.\\n/// @custom:security-contact sirt@aragon.org\\nfunction hasBit(uint256 bitmap, uint8 index) pure returns (bool) {\\n uint256 bitValue = bitmap & (1 << index);\\n return bitValue > 0;\\n}\\n\\n/// @param bitmap The `uint256` representation of bits.\\n/// @param index The index number to set the bit.\\n/// @return Returns a new number in which the bit is set at `index`.\\n/// @custom:security-contact sirt@aragon.org\\nfunction flipBit(uint256 bitmap, uint8 index) pure returns (uint256) {\\n return bitmap ^ (1 << index);\\n}\\n\",\"keccak256\":\"0x95c28a23170c6aae93ca1ad74588a7d35084cbd430eb4b7b11c7c0488e298297\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"notice":"A mock contract containing functions manipulating bitmaps.","version":1}}},"src/mocks/utils/math/RatioMock.sol":{"RatioMock":{"abi":[{"inputs":[{"internalType":"uint256","name":"limit","type":"uint256"},{"internalType":"uint256","name":"actual","type":"uint256"}],"name":"RatioOutOfBounds","type":"error"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"},{"internalType":"uint256","name":"_ratio","type":"uint256"}],"name":"applyRatioCeiled","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getRatioBase","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"}],"devdoc":{"details":"DO NOT USE IN PRODUCTION!","errors":{"RatioOutOfBounds(uint256,uint256)":[{"params":{"actual":"The actual value.","limit":"The maximal value."}}]},"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b506101a3806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80633d9de6701461003b578063a027562014610052575b600080fd5b620f42405b60405190815260200160405180910390f35b6100406100603660046100f0565b600061006c8383610075565b90505b92915050565b6000620f42408211156100ab5760405163cc80c19560e01b8152620f424060048201526024810183905260440160405180910390fd5b6100b58284610128565b925060006100c6620f424085610155565b90506100d5620f424085610169565b915080156100e9576100e68261017d565b91505b5092915050565b6000806040838503121561010357600080fd5b50508035926020909101359150565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761006f5761006f610112565b634e487b7160e01b600052601260045260246000fd5b6000826101645761016461013f565b500690565b6000826101785761017861013f565b500490565b60006001820161018f5761018f610112565b506001019056fea164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1A3 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x3D9DE670 EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0xA0275620 EQ PUSH2 0x52 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0xF4240 JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x40 PUSH2 0x60 CALLDATASIZE PUSH1 0x4 PUSH2 0xF0 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6C DUP4 DUP4 PUSH2 0x75 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0xF4240 DUP3 GT ISZERO PUSH2 0xAB JUMPI PUSH1 0x40 MLOAD PUSH4 0xCC80C195 PUSH1 0xE0 SHL DUP2 MSTORE PUSH3 0xF4240 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x44 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xB5 DUP3 DUP5 PUSH2 0x128 JUMP JUMPDEST SWAP3 POP PUSH1 0x0 PUSH2 0xC6 PUSH3 0xF4240 DUP6 PUSH2 0x155 JUMP JUMPDEST SWAP1 POP PUSH2 0xD5 PUSH3 0xF4240 DUP6 PUSH2 0x169 JUMP JUMPDEST SWAP2 POP DUP1 ISZERO PUSH2 0xE9 JUMPI PUSH2 0xE6 DUP3 PUSH2 0x17D JUMP JUMPDEST SWAP2 POP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x103 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP1 DUP3 MUL DUP2 ISZERO DUP3 DUP3 DIV DUP5 EQ OR PUSH2 0x6F JUMPI PUSH2 0x6F PUSH2 0x112 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x164 JUMPI PUSH2 0x164 PUSH2 0x13F JUMP JUMPDEST POP MOD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x178 JUMPI PUSH2 0x178 PUSH2 0x13F JUMP JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 ADD PUSH2 0x18F JUMPI PUSH2 0x18F PUSH2 0x112 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"256:266:62:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_applyRatioCeiled_14698":{"entryPoint":117,"id":14698,"parameterSlots":2,"returnSlots":1},"@applyRatioCeiled_12869":{"entryPoint":null,"id":12869,"parameterSlots":2,"returnSlots":1},"@getRatioBase_12854":{"entryPoint":null,"id":12854,"parameterSlots":0,"returnSlots":1},"abi_decode_tuple_t_uint256t_uint256":{"entryPoint":240,"id":null,"parameterSlots":2,"returnSlots":2},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"checked_div_t_uint256":{"entryPoint":361,"id":null,"parameterSlots":2,"returnSlots":1},"checked_mul_t_uint256":{"entryPoint":296,"id":null,"parameterSlots":2,"returnSlots":1},"increment_t_uint256":{"entryPoint":381,"id":null,"parameterSlots":1,"returnSlots":1},"mod_t_uint256":{"entryPoint":341,"id":null,"parameterSlots":2,"returnSlots":1},"panic_error_0x11":{"entryPoint":274,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x12":{"entryPoint":319,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:1518:92","statements":[{"nodeType":"YulBlock","src":"6:3:92","statements":[]},{"body":{"nodeType":"YulBlock","src":"115:76:92","statements":[{"nodeType":"YulAssignment","src":"125:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"137:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"148:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"133:3:92"},"nodeType":"YulFunctionCall","src":"133:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"125:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"167:9:92"},{"name":"value0","nodeType":"YulIdentifier","src":"178:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"160:6:92"},"nodeType":"YulFunctionCall","src":"160:25:92"},"nodeType":"YulExpressionStatement","src":"160:25:92"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"84:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"95:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"106:4:92","type":""}],"src":"14:177:92"},{"body":{"nodeType":"YulBlock","src":"283:161:92","statements":[{"body":{"nodeType":"YulBlock","src":"329:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"338:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"341:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"331:6:92"},"nodeType":"YulFunctionCall","src":"331:12:92"},"nodeType":"YulExpressionStatement","src":"331:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"304:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"313:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"300:3:92"},"nodeType":"YulFunctionCall","src":"300:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"325:2:92","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"296:3:92"},"nodeType":"YulFunctionCall","src":"296:32:92"},"nodeType":"YulIf","src":"293:52:92"},{"nodeType":"YulAssignment","src":"354:33:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"377:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"364:12:92"},"nodeType":"YulFunctionCall","src":"364:23:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"354:6:92"}]},{"nodeType":"YulAssignment","src":"396:42:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"423:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"434:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"419:3:92"},"nodeType":"YulFunctionCall","src":"419:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"406:12:92"},"nodeType":"YulFunctionCall","src":"406:32:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"396:6:92"}]}]},"name":"abi_decode_tuple_t_uint256t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"241:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"252:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"264:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"272:6:92","type":""}],"src":"196:248:92"},{"body":{"nodeType":"YulBlock","src":"578:119:92","statements":[{"nodeType":"YulAssignment","src":"588:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"600:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"611:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"596:3:92"},"nodeType":"YulFunctionCall","src":"596:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"588:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"630:9:92"},{"name":"value0","nodeType":"YulIdentifier","src":"641:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"623:6:92"},"nodeType":"YulFunctionCall","src":"623:25:92"},"nodeType":"YulExpressionStatement","src":"623:25:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"668:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"679:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"664:3:92"},"nodeType":"YulFunctionCall","src":"664:18:92"},{"name":"value1","nodeType":"YulIdentifier","src":"684:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"657:6:92"},"nodeType":"YulFunctionCall","src":"657:34:92"},"nodeType":"YulExpressionStatement","src":"657:34:92"}]},"name":"abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"539:9:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"550:6:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"558:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"569:4:92","type":""}],"src":"449:248:92"},{"body":{"nodeType":"YulBlock","src":"734:95:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"751:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"758:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"763:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"754:3:92"},"nodeType":"YulFunctionCall","src":"754:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"744:6:92"},"nodeType":"YulFunctionCall","src":"744:31:92"},"nodeType":"YulExpressionStatement","src":"744:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"791:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"794:4:92","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"784:6:92"},"nodeType":"YulFunctionCall","src":"784:15:92"},"nodeType":"YulExpressionStatement","src":"784:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"815:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"818:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"808:6:92"},"nodeType":"YulFunctionCall","src":"808:15:92"},"nodeType":"YulExpressionStatement","src":"808:15:92"}]},"name":"panic_error_0x11","nodeType":"YulFunctionDefinition","src":"702:127:92"},{"body":{"nodeType":"YulBlock","src":"886:116:92","statements":[{"nodeType":"YulAssignment","src":"896:20:92","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"911:1:92"},{"name":"y","nodeType":"YulIdentifier","src":"914:1:92"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"907:3:92"},"nodeType":"YulFunctionCall","src":"907:9:92"},"variableNames":[{"name":"product","nodeType":"YulIdentifier","src":"896:7:92"}]},{"body":{"nodeType":"YulBlock","src":"974:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"976:16:92"},"nodeType":"YulFunctionCall","src":"976:18:92"},"nodeType":"YulExpressionStatement","src":"976:18:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"945:1:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"938:6:92"},"nodeType":"YulFunctionCall","src":"938:9:92"},{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"952:1:92"},{"arguments":[{"name":"product","nodeType":"YulIdentifier","src":"959:7:92"},{"name":"x","nodeType":"YulIdentifier","src":"968:1:92"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"955:3:92"},"nodeType":"YulFunctionCall","src":"955:15:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"949:2:92"},"nodeType":"YulFunctionCall","src":"949:22:92"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"935:2:92"},"nodeType":"YulFunctionCall","src":"935:37:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"928:6:92"},"nodeType":"YulFunctionCall","src":"928:45:92"},"nodeType":"YulIf","src":"925:71:92"}]},"name":"checked_mul_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"865:1:92","type":""},{"name":"y","nodeType":"YulTypedName","src":"868:1:92","type":""}],"returnVariables":[{"name":"product","nodeType":"YulTypedName","src":"874:7:92","type":""}],"src":"834:168:92"},{"body":{"nodeType":"YulBlock","src":"1039:95:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1056:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1063:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"1068:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1059:3:92"},"nodeType":"YulFunctionCall","src":"1059:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1049:6:92"},"nodeType":"YulFunctionCall","src":"1049:31:92"},"nodeType":"YulExpressionStatement","src":"1049:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1096:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"1099:4:92","type":"","value":"0x12"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1089:6:92"},"nodeType":"YulFunctionCall","src":"1089:15:92"},"nodeType":"YulExpressionStatement","src":"1089:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1120:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1123:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1113:6:92"},"nodeType":"YulFunctionCall","src":"1113:15:92"},"nodeType":"YulExpressionStatement","src":"1113:15:92"}]},"name":"panic_error_0x12","nodeType":"YulFunctionDefinition","src":"1007:127:92"},{"body":{"nodeType":"YulBlock","src":"1177:74:92","statements":[{"body":{"nodeType":"YulBlock","src":"1200:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x12","nodeType":"YulIdentifier","src":"1202:16:92"},"nodeType":"YulFunctionCall","src":"1202:18:92"},"nodeType":"YulExpressionStatement","src":"1202:18:92"}]},"condition":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"1197:1:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1190:6:92"},"nodeType":"YulFunctionCall","src":"1190:9:92"},"nodeType":"YulIf","src":"1187:35:92"},{"nodeType":"YulAssignment","src":"1231:14:92","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"1240:1:92"},{"name":"y","nodeType":"YulIdentifier","src":"1243:1:92"}],"functionName":{"name":"mod","nodeType":"YulIdentifier","src":"1236:3:92"},"nodeType":"YulFunctionCall","src":"1236:9:92"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"1231:1:92"}]}]},"name":"mod_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"1162:1:92","type":""},{"name":"y","nodeType":"YulTypedName","src":"1165:1:92","type":""}],"returnVariables":[{"name":"r","nodeType":"YulTypedName","src":"1171:1:92","type":""}],"src":"1139:112:92"},{"body":{"nodeType":"YulBlock","src":"1302:74:92","statements":[{"body":{"nodeType":"YulBlock","src":"1325:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x12","nodeType":"YulIdentifier","src":"1327:16:92"},"nodeType":"YulFunctionCall","src":"1327:18:92"},"nodeType":"YulExpressionStatement","src":"1327:18:92"}]},"condition":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"1322:1:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1315:6:92"},"nodeType":"YulFunctionCall","src":"1315:9:92"},"nodeType":"YulIf","src":"1312:35:92"},{"nodeType":"YulAssignment","src":"1356:14:92","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"1365:1:92"},{"name":"y","nodeType":"YulIdentifier","src":"1368:1:92"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"1361:3:92"},"nodeType":"YulFunctionCall","src":"1361:9:92"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"1356:1:92"}]}]},"name":"checked_div_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"1287:1:92","type":""},{"name":"y","nodeType":"YulTypedName","src":"1290:1:92","type":""}],"returnVariables":[{"name":"r","nodeType":"YulTypedName","src":"1296:1:92","type":""}],"src":"1256:120:92"},{"body":{"nodeType":"YulBlock","src":"1428:88:92","statements":[{"body":{"nodeType":"YulBlock","src":"1459:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"1461:16:92"},"nodeType":"YulFunctionCall","src":"1461:18:92"},"nodeType":"YulExpressionStatement","src":"1461:18:92"}]},"condition":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1444:5:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1455:1:92","type":"","value":"0"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"1451:3:92"},"nodeType":"YulFunctionCall","src":"1451:6:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1441:2:92"},"nodeType":"YulFunctionCall","src":"1441:17:92"},"nodeType":"YulIf","src":"1438:43:92"},{"nodeType":"YulAssignment","src":"1490:20:92","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1501:5:92"},{"kind":"number","nodeType":"YulLiteral","src":"1508:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1497:3:92"},"nodeType":"YulFunctionCall","src":"1497:13:92"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"1490:3:92"}]}]},"name":"increment_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1410:5:92","type":""}],"returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"1420:3:92","type":""}],"src":"1381:135:92"}]},"contents":"{\n { }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_decode_tuple_t_uint256t_uint256(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := calldataload(headStart)\n value1 := calldataload(add(headStart, 32))\n }\n function abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n mstore(headStart, value0)\n mstore(add(headStart, 32), value1)\n }\n function panic_error_0x11()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n function checked_mul_t_uint256(x, y) -> product\n {\n product := mul(x, y)\n if iszero(or(iszero(x), eq(y, div(product, x)))) { panic_error_0x11() }\n }\n function panic_error_0x12()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x12)\n revert(0, 0x24)\n }\n function mod_t_uint256(x, y) -> r\n {\n if iszero(y) { panic_error_0x12() }\n r := mod(x, y)\n }\n function checked_div_t_uint256(x, y) -> r\n {\n if iszero(y) { panic_error_0x12() }\n r := div(x, y)\n }\n function increment_t_uint256(value) -> ret\n {\n if eq(value, not(0)) { panic_error_0x11() }\n ret := add(value, 1)\n }\n}","id":92,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100365760003560e01c80633d9de6701461003b578063a027562014610052575b600080fd5b620f42405b60405190815260200160405180910390f35b6100406100603660046100f0565b600061006c8383610075565b90505b92915050565b6000620f42408211156100ab5760405163cc80c19560e01b8152620f424060048201526024810183905260440160405180910390fd5b6100b58284610128565b925060006100c6620f424085610155565b90506100d5620f424085610169565b915080156100e9576100e68261017d565b91505b5092915050565b6000806040838503121561010357600080fd5b50508035926020909101359150565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761006f5761006f610112565b634e487b7160e01b600052601260045260246000fd5b6000826101645761016461013f565b500690565b6000826101785761017861013f565b500490565b60006001820161018f5761018f610112565b506001019056fea164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x3D9DE670 EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0xA0275620 EQ PUSH2 0x52 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0xF4240 JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x40 PUSH2 0x60 CALLDATASIZE PUSH1 0x4 PUSH2 0xF0 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6C DUP4 DUP4 PUSH2 0x75 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0xF4240 DUP3 GT ISZERO PUSH2 0xAB JUMPI PUSH1 0x40 MLOAD PUSH4 0xCC80C195 PUSH1 0xE0 SHL DUP2 MSTORE PUSH3 0xF4240 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x44 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xB5 DUP3 DUP5 PUSH2 0x128 JUMP JUMPDEST SWAP3 POP PUSH1 0x0 PUSH2 0xC6 PUSH3 0xF4240 DUP6 PUSH2 0x155 JUMP JUMPDEST SWAP1 POP PUSH2 0xD5 PUSH3 0xF4240 DUP6 PUSH2 0x169 JUMP JUMPDEST SWAP2 POP DUP1 ISZERO PUSH2 0xE9 JUMPI PUSH2 0xE6 DUP3 PUSH2 0x17D JUMP JUMPDEST SWAP2 POP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x103 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP1 DUP3 MUL DUP2 ISZERO DUP3 DUP3 DIV DUP5 EQ OR PUSH2 0x6F JUMPI PUSH2 0x6F PUSH2 0x112 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x164 JUMPI PUSH2 0x164 PUSH2 0x13F JUMP JUMPDEST POP MOD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x178 JUMPI PUSH2 0x178 PUSH2 0x13F JUMP JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 ADD PUSH2 0x18F JUMPI PUSH2 0x18F PUSH2 0x112 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"256:266:62:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;281:88;215:7:87;281:88:62;;;160:25:92;;;148:2;133:18;281:88:62;;;;;;;375:145;;;;;;:::i;:::-;454:7;480:33;498:6;506;480:17;:33::i;:::-;473:40;;375:145;;;;;:::o;706:394:87:-;779:14;215:7;805:6;:19;801:102;;;843:53;;-1:-1:-1;;;843:53:87;;215:7;843:53;;;623:25:92;664:18;;;657:34;;;596:18;;843:53:87;;;;;;;801:102;918:15;927:6;918;:15;:::i;:::-;909:24;-1:-1:-1;939:17:87;959:19;215:7;909:24;959:19;:::i;:::-;939:39;-1:-1:-1;993:19:87;215:7;993:6;:19;:::i;:::-;984:28;-1:-1:-1;1057:14:87;;1053:45;;1083:8;;;:::i;:::-;;;1053:45;795:305;706:394;;;;:::o;196:248:92:-;264:6;272;325:2;313:9;304:7;300:23;296:32;293:52;;;341:1;338;331:12;293:52;-1:-1:-1;;364:23:92;;;434:2;419:18;;;406:32;;-1:-1:-1;196:248:92:o;702:127::-;763:10;758:3;754:20;751:1;744:31;794:4;791:1;784:15;818:4;815:1;808:15;834:168;907:9;;;938;;955:15;;;949:22;;935:37;925:71;;976:18;;:::i;1007:127::-;1068:10;1063:3;1059:20;1056:1;1049:31;1099:4;1096:1;1089:15;1123:4;1120:1;1113:15;1139:112;1171:1;1197;1187:35;;1202:18;;:::i;:::-;-1:-1:-1;1236:9:92;;1139:112::o;1256:120::-;1296:1;1322;1312:35;;1327:18;;:::i;:::-;-1:-1:-1;1361:9:92;;1256:120::o;1381:135::-;1420:3;1441:17;;;1438:43;;1461:18;;:::i;:::-;-1:-1:-1;1508:1:92;1497:13;;1381:135::o"},"gasEstimates":{"creation":{"codeDepositCost":"83800","executionCost":"135","totalCost":"83935"},"external":{"applyRatioCeiled(uint256,uint256)":"infinite","getRatioBase()":"147"}},"methodIdentifiers":{"applyRatioCeiled(uint256,uint256)":"a0275620","getRatioBase()":"3d9de670"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"actual\",\"type\":\"uint256\"}],\"name\":\"RatioOutOfBounds\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_ratio\",\"type\":\"uint256\"}],\"name\":\"applyRatioCeiled\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRatioBase\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"DO NOT USE IN PRODUCTION!\",\"errors\":{\"RatioOutOfBounds(uint256,uint256)\":[{\"params\":{\"actual\":\"The actual value.\",\"limit\":\"The maximal value.\"}}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"errors\":{\"RatioOutOfBounds(uint256,uint256)\":[{\"notice\":\"Thrown if a ratio value exceeds the maximal value of `10**6`.\"}]},\"kind\":\"user\",\"methods\":{},\"notice\":\"A mock contract containing functions manipulating bitmaps.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/mocks/utils/math/RatioMock.sol\":\"RatioMock\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"src/mocks/utils/math/RatioMock.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {RATIO_BASE, _applyRatioCeiled} from \\\"../../../utils/math/Ratio.sol\\\";\\n\\n/// @notice A mock contract containing functions manipulating bitmaps.\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract RatioMock {\\n function getRatioBase() public pure returns (uint256) {\\n return RATIO_BASE;\\n }\\n\\n function applyRatioCeiled(uint256 _value, uint256 _ratio) public pure returns (uint256) {\\n return _applyRatioCeiled(_value, _ratio);\\n }\\n}\\n\",\"keccak256\":\"0x2d940d4529805864a62b7b4488564adbb180947ec9c36b14ca34640da5f81d8a\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/math/Ratio.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n// The base value to encode real-valued ratios on the interval `[0,1]` as integers on the interval `[0, 10**6]`.\\nuint256 constant RATIO_BASE = 10 ** 6;\\n\\n/// @notice Thrown if a ratio value exceeds the maximal value of `10**6`.\\n/// @param limit The maximal value.\\n/// @param actual The actual value.\\nerror RatioOutOfBounds(uint256 limit, uint256 actual);\\n\\n/// @notice Applies a ratio to a value and ceils the remainder.\\n/// @param _value The value to which the ratio is applied.\\n/// @param _ratio The ratio that must be in the interval `[0, 10**6]`.\\n/// @return result The resulting value.\\n/// @custom:security-contact sirt@aragon.org\\nfunction _applyRatioCeiled(uint256 _value, uint256 _ratio) pure returns (uint256 result) {\\n if (_ratio > RATIO_BASE) {\\n revert RatioOutOfBounds({limit: RATIO_BASE, actual: _ratio});\\n }\\n\\n _value = _value * _ratio;\\n uint256 remainder = _value % RATIO_BASE;\\n result = _value / RATIO_BASE;\\n\\n // Check if ceiling is needed\\n if (remainder != 0) {\\n ++result;\\n }\\n}\\n\",\"keccak256\":\"0xf7c1e2192bacde5f81da2d8474fd7836f93511c97515611436b7795a3c7999bb\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"errors":{"RatioOutOfBounds(uint256,uint256)":[{"notice":"Thrown if a ratio value exceeds the maximal value of `10**6`."}]},"kind":"user","methods":{},"notice":"A mock contract containing functions manipulating bitmaps.","version":1}}},"src/mocks/utils/versioning/ProtocolVersionMock.sol":{"ProtocolVersionMock":{"abi":[{"inputs":[],"name":"protocolVersion","outputs":[{"internalType":"uint8[3]","name":"","type":"uint8[3]"}],"stateMutability":"pure","type":"function"}],"devdoc":{"details":"DO NOT USE IN PRODUCTION!","kind":"dev","methods":{"protocolVersion()":{"details":"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.","returns":{"_0":"Returns the semantic Aragon OSx protocol version number."}}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b5060cc8061001f6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c80632ae9c60014602d575b600080fd5b60336047565b604051603e9190608d565b60405180910390f35b604d606f565b5060408051606081018252600181526004602082015260009181019190915290565b60405180606001604052806003906020820280368337509192915050565b60608101818360005b600381101560b657815160ff168352602092830192909101906001016096565b5050509291505056fea164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xCC DUP1 PUSH2 0x1F PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x28 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x2AE9C600 EQ PUSH1 0x2D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x33 PUSH1 0x47 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x3E SWAP2 SWAP1 PUSH1 0x8D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x4D PUSH1 0x6F JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH1 0xB6 JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH1 0x96 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"303:52:63:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@protocolVersion_14765":{"entryPoint":71,"id":14765,"parameterSlots":0,"returnSlots":1},"abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed":{"entryPoint":141,"id":null,"parameterSlots":2,"returnSlots":1}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:517:92","statements":[{"nodeType":"YulBlock","src":"6:3:92","statements":[]},{"body":{"nodeType":"YulBlock","src":"157:358:92","statements":[{"nodeType":"YulAssignment","src":"167:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"179:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"190:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"175:3:92"},"nodeType":"YulFunctionCall","src":"175:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"167:4:92"}]},{"nodeType":"YulVariableDeclaration","src":"202:20:92","value":{"name":"headStart","nodeType":"YulIdentifier","src":"213:9:92"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"206:3:92","type":""}]},{"nodeType":"YulAssignment","src":"231:16:92","value":{"name":"headStart","nodeType":"YulIdentifier","src":"238:9:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"231:3:92"}]},{"nodeType":"YulVariableDeclaration","src":"256:20:92","value":{"name":"value0","nodeType":"YulIdentifier","src":"270:6:92"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"260:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"285:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"294:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"289:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"351:158:92","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"372:3:92"},{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"387:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"381:5:92"},"nodeType":"YulFunctionCall","src":"381:13:92"},{"kind":"number","nodeType":"YulLiteral","src":"396:4:92","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"377:3:92"},"nodeType":"YulFunctionCall","src":"377:24:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"365:6:92"},"nodeType":"YulFunctionCall","src":"365:37:92"},"nodeType":"YulExpressionStatement","src":"365:37:92"},{"nodeType":"YulVariableDeclaration","src":"415:14:92","value":{"kind":"number","nodeType":"YulLiteral","src":"425:4:92","type":"","value":"0x20"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"419:2:92","type":""}]},{"nodeType":"YulAssignment","src":"442:19:92","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"453:3:92"},{"name":"_1","nodeType":"YulIdentifier","src":"458:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"449:3:92"},"nodeType":"YulFunctionCall","src":"449:12:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"442:3:92"}]},{"nodeType":"YulAssignment","src":"474:25:92","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"488:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"496:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"484:3:92"},"nodeType":"YulFunctionCall","src":"484:15:92"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"474:6:92"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"315:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"318:4:92","type":"","value":"0x03"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"312:2:92"},"nodeType":"YulFunctionCall","src":"312:11:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"324:18:92","statements":[{"nodeType":"YulAssignment","src":"326:14:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"335:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"338:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"331:3:92"},"nodeType":"YulFunctionCall","src":"331:9:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"326:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"308:3:92","statements":[]},"src":"304:205:92"}]},"name":"abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"126:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"137:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"148:4:92","type":""}],"src":"14:501:92"}]},"contents":"{\n { }\n function abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 96)\n let pos := headStart\n pos := headStart\n let srcPtr := value0\n let i := 0\n for { } lt(i, 0x03) { i := add(i, 1) }\n {\n mstore(pos, and(mload(srcPtr), 0xff))\n let _1 := 0x20\n pos := add(pos, _1)\n srcPtr := add(srcPtr, _1)\n }\n }\n}","id":92,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"6080604052348015600f57600080fd5b506004361060285760003560e01c80632ae9c60014602d575b600080fd5b60336047565b604051603e9190608d565b60405180910390f35b604d606f565b5060408051606081018252600181526004602082015260009181019190915290565b60405180606001604052806003906020820280368337509192915050565b60608101818360005b600381101560b657815160ff168352602092830192909101906001016096565b5050509291505056fea164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x28 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x2AE9C600 EQ PUSH1 0x2D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x33 PUSH1 0x47 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x3E SWAP2 SWAP1 PUSH1 0x8D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x4D PUSH1 0x6F JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH1 0xB6 JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH1 0x96 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"303:52:63:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;631:98:90;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;679:15;;:::i;:::-;-1:-1:-1;706:16:90;;;;;;;;714:1;706:16;;717:1;706:16;;;;-1:-1:-1;706:16:90;;;;;;;;631:98::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:501:92:-;190:2;175:18;;179:9;270:6;148:4;304:205;318:4;315:1;312:11;304:205;;;381:13;;396:4;377:24;365:37;;425:4;449:12;;;;484:15;;;;338:1;331:9;304:205;;;308:3;;;14:501;;;;:::o"},"gasEstimates":{"creation":{"codeDepositCost":"40800","executionCost":"93","totalCost":"40893"},"external":{"protocolVersion()":"infinite"}},"methodIdentifiers":{"protocolVersion()":"2ae9c600"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"protocolVersion\",\"outputs\":[{\"internalType\":\"uint8[3]\",\"name\":\"\",\"type\":\"uint8[3]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"DO NOT USE IN PRODUCTION!\",\"kind\":\"dev\",\"methods\":{\"protocolVersion()\":{\"details\":\"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\",\"returns\":{\"_0\":\"Returns the semantic Aragon OSx protocol version number.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"protocolVersion()\":{\"notice\":\"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\"}},\"notice\":\"A mock contract returning the OSx protocol version number.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/mocks/utils/versioning/ProtocolVersionMock.sol\":\"ProtocolVersionMock\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"src/mocks/utils/versioning/ProtocolVersionMock.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ProtocolVersion} from \\\"../../../utils/versioning/ProtocolVersion.sol\\\";\\n\\n/// @notice A mock contract returning the OSx protocol version number.\\n/// @dev DO NOT USE IN PRODUCTION!\\n// solhint-disable-next-line no-empty-blocks\\ncontract ProtocolVersionMock is ProtocolVersion {\\n\\n}\\n\",\"keccak256\":\"0xbc4700a0f9fe7aca222c373791f5db98ea73c0d11d5354a4f2b1eddae178848a\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/IProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IProtocolVersion\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the semantic Aragon OSx protocol version number.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IProtocolVersion {\\n /// @notice Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\\n /// @return _version Returns the semantic Aragon OSx protocol version number.\\n /// @dev This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\\n function protocolVersion() external view returns (uint8[3] memory _version);\\n}\\n\",\"keccak256\":\"0x00a4da654d21dc1bdadbdc8bd54bb86c378c56f85e461ccc31303628ea621361\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/ProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IProtocolVersion} from \\\"./IProtocolVersion.sol\\\";\\n\\n/// @title ProtocolVersion\\n/// @author Aragon X - 2023\\n/// @notice An abstract, stateless, non-upgradeable contract providing the current Aragon OSx protocol version number.\\n/// @dev Do not add any new variables to this contract that would shift down storage in the inheritance chain.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract ProtocolVersion is IProtocolVersion {\\n // IMPORTANT: Do not add any storage variable, see the above notice.\\n\\n /// @inheritdoc IProtocolVersion\\n function protocolVersion() public pure returns (uint8[3] memory) {\\n return [1, 4, 0];\\n }\\n}\\n\",\"keccak256\":\"0x3975c937be935f687c6b6b8f379071232681e98cf04b175d72781b819ea52bdb\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{"protocolVersion()":{"notice":"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with."}},"notice":"A mock contract returning the OSx protocol version number.","version":1}}},"src/mocks/utils/versioning/VersionComparisonLibMock.sol":{"VersionComparisonLibMock":{"abi":[{"inputs":[{"internalType":"uint8[3]","name":"lhs","type":"uint8[3]"},{"internalType":"uint8[3]","name":"rhs","type":"uint8[3]"}],"name":"eq","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint8[3]","name":"lhs","type":"uint8[3]"},{"internalType":"uint8[3]","name":"rhs","type":"uint8[3]"}],"name":"gt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint8[3]","name":"lhs","type":"uint8[3]"},{"internalType":"uint8[3]","name":"rhs","type":"uint8[3]"}],"name":"gte","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint8[3]","name":"lhs","type":"uint8[3]"},{"internalType":"uint8[3]","name":"rhs","type":"uint8[3]"}],"name":"lt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint8[3]","name":"lhs","type":"uint8[3]"},{"internalType":"uint8[3]","name":"rhs","type":"uint8[3]"}],"name":"lte","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint8[3]","name":"lhs","type":"uint8[3]"},{"internalType":"uint8[3]","name":"rhs","type":"uint8[3]"}],"name":"neq","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"}],"devdoc":{"details":"DO NOT USE IN PRODUCTION!","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b5061052f806100206000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c80639fdb5746116100505780639fdb5746146100c4578063d343ec1b146100d7578063f92e9bb1146100ea57600080fd5b80632198ac8d14610077578063668a90f61461009e57806396b38697146100b1575b600080fd5b61008a6100853660046104ed565b6100fd565b604051901515815260200160405180910390f35b61008a6100ac3660046104ed565b610112565b61008a6100bf3660046104ed565b61011e565b61008a6100d23660046104ed565b61012a565b61008a6100e53660046104ed565b610136565b61008a6100f83660046104ed565b610142565b6000610109838361014e565b90505b92915050565b600061010983836101e8565b6000610109838361027a565b6000610109838361030c565b6000610109838361039d565b600061010983836103f4565b8051825160009160ff9081169116101561016a5750600161010c565b8151835160ff918216911611156101835750600061010c565b6020808301519084015160ff918216911610156101a25750600161010c565b6020808301519084015160ff918216911611156101c15750600061010c565b6040808301519084015160ff9182169116116101df5750600161010c565b50600092915050565b8051825160009160ff908116911610156102045750600161010c565b8151835160ff9182169116111561021d5750600061010c565b6020808301519084015160ff9182169116101561023c5750600161010c565b6020808301519084015160ff9182169116111561025b5750600061010c565b6040808301519084015160ff918216911610156101df5750600161010c565b8051825160009160ff908116911611156102965750600161010c565b8151835160ff918216911610156102af5750600061010c565b6020808301519084015160ff918216911611156102ce5750600161010c565b6020808301519084015160ff918216911610156102ed5750600061010c565b6040808301519084015160ff918216911611156101df5750600161010c565b8051825160009160ff908116911611156103285750600161010c565b8151835160ff918216911610156103415750600061010c565b6020808301519084015160ff918216911611156103605750600161010c565b6020808301519084015160ff9182169116101561037f5750600061010c565b6040808301519084015160ff9182169116106101df5750600161010c565b8051825160009160ff9182169116146103b85750600161010c565b6020808301519084015160ff9081169116146103d65750600161010c565b6040808301519084015160ff9081169116146101df5750600161010c565b8051825160009160ff91821691161461040f5750600061010c565b6020808301519084015160ff90811691161461042d5750600061010c565b6040808301519084015160ff90811691161461044b5750600061010c565b50600192915050565b803560ff8116811461046557600080fd5b919050565b600082601f83011261047b57600080fd5b6040516060810181811067ffffffffffffffff821117156104ac57634e487b7160e01b600052604160045260246000fd5b6040528060608401858111156104c157600080fd5b845b818110156104e2576104d481610454565b8352602092830192016104c3565b509195945050505050565b60008060c0838503121561050057600080fd5b61050a848461046a565b9150610519846060850161046a565b9050925092905056fea164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x52F DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x72 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9FDB5746 GT PUSH2 0x50 JUMPI DUP1 PUSH4 0x9FDB5746 EQ PUSH2 0xC4 JUMPI DUP1 PUSH4 0xD343EC1B EQ PUSH2 0xD7 JUMPI DUP1 PUSH4 0xF92E9BB1 EQ PUSH2 0xEA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x2198AC8D EQ PUSH2 0x77 JUMPI DUP1 PUSH4 0x668A90F6 EQ PUSH2 0x9E JUMPI DUP1 PUSH4 0x96B38697 EQ PUSH2 0xB1 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8A PUSH2 0x85 CALLDATASIZE PUSH1 0x4 PUSH2 0x4ED JUMP JUMPDEST PUSH2 0xFD JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x8A PUSH2 0xAC CALLDATASIZE PUSH1 0x4 PUSH2 0x4ED JUMP JUMPDEST PUSH2 0x112 JUMP JUMPDEST PUSH2 0x8A PUSH2 0xBF CALLDATASIZE PUSH1 0x4 PUSH2 0x4ED JUMP JUMPDEST PUSH2 0x11E JUMP JUMPDEST PUSH2 0x8A PUSH2 0xD2 CALLDATASIZE PUSH1 0x4 PUSH2 0x4ED JUMP JUMPDEST PUSH2 0x12A JUMP JUMPDEST PUSH2 0x8A PUSH2 0xE5 CALLDATASIZE PUSH1 0x4 PUSH2 0x4ED JUMP JUMPDEST PUSH2 0x136 JUMP JUMPDEST PUSH2 0x8A PUSH2 0xF8 CALLDATASIZE PUSH1 0x4 PUSH2 0x4ED JUMP JUMPDEST PUSH2 0x142 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x109 DUP4 DUP4 PUSH2 0x14E JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x109 DUP4 DUP4 PUSH2 0x1E8 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x109 DUP4 DUP4 PUSH2 0x27A JUMP JUMPDEST PUSH1 0x0 PUSH2 0x109 DUP4 DUP4 PUSH2 0x30C JUMP JUMPDEST PUSH1 0x0 PUSH2 0x109 DUP4 DUP4 PUSH2 0x39D JUMP JUMPDEST PUSH1 0x0 PUSH2 0x109 DUP4 DUP4 PUSH2 0x3F4 JUMP JUMPDEST DUP1 MLOAD DUP3 MLOAD PUSH1 0x0 SWAP2 PUSH1 0xFF SWAP1 DUP2 AND SWAP2 AND LT ISZERO PUSH2 0x16A JUMPI POP PUSH1 0x1 PUSH2 0x10C JUMP JUMPDEST DUP2 MLOAD DUP4 MLOAD PUSH1 0xFF SWAP2 DUP3 AND SWAP2 AND GT ISZERO PUSH2 0x183 JUMPI POP PUSH1 0x0 PUSH2 0x10C JUMP JUMPDEST PUSH1 0x20 DUP1 DUP4 ADD MLOAD SWAP1 DUP5 ADD MLOAD PUSH1 0xFF SWAP2 DUP3 AND SWAP2 AND LT ISZERO PUSH2 0x1A2 JUMPI POP PUSH1 0x1 PUSH2 0x10C JUMP JUMPDEST PUSH1 0x20 DUP1 DUP4 ADD MLOAD SWAP1 DUP5 ADD MLOAD PUSH1 0xFF SWAP2 DUP3 AND SWAP2 AND GT ISZERO PUSH2 0x1C1 JUMPI POP PUSH1 0x0 PUSH2 0x10C JUMP JUMPDEST PUSH1 0x40 DUP1 DUP4 ADD MLOAD SWAP1 DUP5 ADD MLOAD PUSH1 0xFF SWAP2 DUP3 AND SWAP2 AND GT PUSH2 0x1DF JUMPI POP PUSH1 0x1 PUSH2 0x10C JUMP JUMPDEST POP PUSH1 0x0 SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD DUP3 MLOAD PUSH1 0x0 SWAP2 PUSH1 0xFF SWAP1 DUP2 AND SWAP2 AND LT ISZERO PUSH2 0x204 JUMPI POP PUSH1 0x1 PUSH2 0x10C JUMP JUMPDEST DUP2 MLOAD DUP4 MLOAD PUSH1 0xFF SWAP2 DUP3 AND SWAP2 AND GT ISZERO PUSH2 0x21D JUMPI POP PUSH1 0x0 PUSH2 0x10C JUMP JUMPDEST PUSH1 0x20 DUP1 DUP4 ADD MLOAD SWAP1 DUP5 ADD MLOAD PUSH1 0xFF SWAP2 DUP3 AND SWAP2 AND LT ISZERO PUSH2 0x23C JUMPI POP PUSH1 0x1 PUSH2 0x10C JUMP JUMPDEST PUSH1 0x20 DUP1 DUP4 ADD MLOAD SWAP1 DUP5 ADD MLOAD PUSH1 0xFF SWAP2 DUP3 AND SWAP2 AND GT ISZERO PUSH2 0x25B JUMPI POP PUSH1 0x0 PUSH2 0x10C JUMP JUMPDEST PUSH1 0x40 DUP1 DUP4 ADD MLOAD SWAP1 DUP5 ADD MLOAD PUSH1 0xFF SWAP2 DUP3 AND SWAP2 AND LT ISZERO PUSH2 0x1DF JUMPI POP PUSH1 0x1 PUSH2 0x10C JUMP JUMPDEST DUP1 MLOAD DUP3 MLOAD PUSH1 0x0 SWAP2 PUSH1 0xFF SWAP1 DUP2 AND SWAP2 AND GT ISZERO PUSH2 0x296 JUMPI POP PUSH1 0x1 PUSH2 0x10C JUMP JUMPDEST DUP2 MLOAD DUP4 MLOAD PUSH1 0xFF SWAP2 DUP3 AND SWAP2 AND LT ISZERO PUSH2 0x2AF JUMPI POP PUSH1 0x0 PUSH2 0x10C JUMP JUMPDEST PUSH1 0x20 DUP1 DUP4 ADD MLOAD SWAP1 DUP5 ADD MLOAD PUSH1 0xFF SWAP2 DUP3 AND SWAP2 AND GT ISZERO PUSH2 0x2CE JUMPI POP PUSH1 0x1 PUSH2 0x10C JUMP JUMPDEST PUSH1 0x20 DUP1 DUP4 ADD MLOAD SWAP1 DUP5 ADD MLOAD PUSH1 0xFF SWAP2 DUP3 AND SWAP2 AND LT ISZERO PUSH2 0x2ED JUMPI POP PUSH1 0x0 PUSH2 0x10C JUMP JUMPDEST PUSH1 0x40 DUP1 DUP4 ADD MLOAD SWAP1 DUP5 ADD MLOAD PUSH1 0xFF SWAP2 DUP3 AND SWAP2 AND GT ISZERO PUSH2 0x1DF JUMPI POP PUSH1 0x1 PUSH2 0x10C JUMP JUMPDEST DUP1 MLOAD DUP3 MLOAD PUSH1 0x0 SWAP2 PUSH1 0xFF SWAP1 DUP2 AND SWAP2 AND GT ISZERO PUSH2 0x328 JUMPI POP PUSH1 0x1 PUSH2 0x10C JUMP JUMPDEST DUP2 MLOAD DUP4 MLOAD PUSH1 0xFF SWAP2 DUP3 AND SWAP2 AND LT ISZERO PUSH2 0x341 JUMPI POP PUSH1 0x0 PUSH2 0x10C JUMP JUMPDEST PUSH1 0x20 DUP1 DUP4 ADD MLOAD SWAP1 DUP5 ADD MLOAD PUSH1 0xFF SWAP2 DUP3 AND SWAP2 AND GT ISZERO PUSH2 0x360 JUMPI POP PUSH1 0x1 PUSH2 0x10C JUMP JUMPDEST PUSH1 0x20 DUP1 DUP4 ADD MLOAD SWAP1 DUP5 ADD MLOAD PUSH1 0xFF SWAP2 DUP3 AND SWAP2 AND LT ISZERO PUSH2 0x37F JUMPI POP PUSH1 0x0 PUSH2 0x10C JUMP JUMPDEST PUSH1 0x40 DUP1 DUP4 ADD MLOAD SWAP1 DUP5 ADD MLOAD PUSH1 0xFF SWAP2 DUP3 AND SWAP2 AND LT PUSH2 0x1DF JUMPI POP PUSH1 0x1 PUSH2 0x10C JUMP JUMPDEST DUP1 MLOAD DUP3 MLOAD PUSH1 0x0 SWAP2 PUSH1 0xFF SWAP2 DUP3 AND SWAP2 AND EQ PUSH2 0x3B8 JUMPI POP PUSH1 0x1 PUSH2 0x10C JUMP JUMPDEST PUSH1 0x20 DUP1 DUP4 ADD MLOAD SWAP1 DUP5 ADD MLOAD PUSH1 0xFF SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x3D6 JUMPI POP PUSH1 0x1 PUSH2 0x10C JUMP JUMPDEST PUSH1 0x40 DUP1 DUP4 ADD MLOAD SWAP1 DUP5 ADD MLOAD PUSH1 0xFF SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x1DF JUMPI POP PUSH1 0x1 PUSH2 0x10C JUMP JUMPDEST DUP1 MLOAD DUP3 MLOAD PUSH1 0x0 SWAP2 PUSH1 0xFF SWAP2 DUP3 AND SWAP2 AND EQ PUSH2 0x40F JUMPI POP PUSH1 0x0 PUSH2 0x10C JUMP JUMPDEST PUSH1 0x20 DUP1 DUP4 ADD MLOAD SWAP1 DUP5 ADD MLOAD PUSH1 0xFF SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x42D JUMPI POP PUSH1 0x0 PUSH2 0x10C JUMP JUMPDEST PUSH1 0x40 DUP1 DUP4 ADD MLOAD SWAP1 DUP5 ADD MLOAD PUSH1 0xFF SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x44B JUMPI POP PUSH1 0x0 PUSH2 0x10C JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x465 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x47B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x60 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x4AC JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP5 ADD DUP6 DUP2 GT ISZERO PUSH2 0x4C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x4E2 JUMPI PUSH2 0x4D4 DUP2 PUSH2 0x454 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 ADD PUSH2 0x4C3 JUMP JUMPDEST POP SWAP2 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0xC0 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x500 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x50A DUP5 DUP5 PUSH2 0x46A JUMP JUMPDEST SWAP2 POP PUSH2 0x519 DUP5 PUSH1 0x60 DUP6 ADD PUSH2 0x46A JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"283:820:64:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@eq_12907":{"entryPoint":322,"id":12907,"parameterSlots":2,"returnSlots":1},"@eq_14816":{"entryPoint":1012,"id":14816,"parameterSlots":2,"returnSlots":1},"@gt_12983":{"entryPoint":286,"id":12983,"parameterSlots":2,"returnSlots":1},"@gt_15064":{"entryPoint":634,"id":15064,"parameterSlots":2,"returnSlots":1},"@gte_13002":{"entryPoint":298,"id":13002,"parameterSlots":2,"returnSlots":1},"@gte_15131":{"entryPoint":780,"id":15131,"parameterSlots":2,"returnSlots":1},"@lt_12945":{"entryPoint":274,"id":12945,"parameterSlots":2,"returnSlots":1},"@lt_14930":{"entryPoint":488,"id":14930,"parameterSlots":2,"returnSlots":1},"@lte_12964":{"entryPoint":253,"id":12964,"parameterSlots":2,"returnSlots":1},"@lte_14997":{"entryPoint":334,"id":14997,"parameterSlots":2,"returnSlots":1},"@neq_12926":{"entryPoint":310,"id":12926,"parameterSlots":2,"returnSlots":1},"@neq_14863":{"entryPoint":925,"id":14863,"parameterSlots":2,"returnSlots":1},"abi_decode_array_uint8":{"entryPoint":1130,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_array$_t_uint8_$3_memory_ptrt_array$_t_uint8_$3_memory_ptr":{"entryPoint":1261,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_uint8":{"entryPoint":1108,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"panic_error_0x32":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:1580:92","statements":[{"nodeType":"YulBlock","src":"6:3:92","statements":[]},{"body":{"nodeType":"YulBlock","src":"61:109:92","statements":[{"nodeType":"YulAssignment","src":"71:29:92","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"93:6:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"80:12:92"},"nodeType":"YulFunctionCall","src":"80:20:92"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"71:5:92"}]},{"body":{"nodeType":"YulBlock","src":"148:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"157:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"160:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"150:6:92"},"nodeType":"YulFunctionCall","src":"150:12:92"},"nodeType":"YulExpressionStatement","src":"150:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"122:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"133:5:92"},{"kind":"number","nodeType":"YulLiteral","src":"140:4:92","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"129:3:92"},"nodeType":"YulFunctionCall","src":"129:16:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"119:2:92"},"nodeType":"YulFunctionCall","src":"119:27:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"112:6:92"},"nodeType":"YulFunctionCall","src":"112:35:92"},"nodeType":"YulIf","src":"109:55:92"}]},"name":"abi_decode_uint8","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"40:6:92","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"51:5:92","type":""}],"src":"14:156:92"},{"body":{"nodeType":"YulBlock","src":"233:687:92","statements":[{"body":{"nodeType":"YulBlock","src":"282:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"291:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"294:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"284:6:92"},"nodeType":"YulFunctionCall","src":"284:12:92"},"nodeType":"YulExpressionStatement","src":"284:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"261:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"269:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"257:3:92"},"nodeType":"YulFunctionCall","src":"257:17:92"},{"name":"end","nodeType":"YulIdentifier","src":"276:3:92"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"253:3:92"},"nodeType":"YulFunctionCall","src":"253:27:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"246:6:92"},"nodeType":"YulFunctionCall","src":"246:35:92"},"nodeType":"YulIf","src":"243:55:92"},{"nodeType":"YulVariableDeclaration","src":"307:23:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"327:2:92","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"321:5:92"},"nodeType":"YulFunctionCall","src":"321:9:92"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"311:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"339:33:92","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"361:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"369:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"357:3:92"},"nodeType":"YulFunctionCall","src":"357:15:92"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"343:10:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"455:111:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"476:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"483:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"488:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"479:3:92"},"nodeType":"YulFunctionCall","src":"479:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"469:6:92"},"nodeType":"YulFunctionCall","src":"469:31:92"},"nodeType":"YulExpressionStatement","src":"469:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"520:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"523:4:92","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"513:6:92"},"nodeType":"YulFunctionCall","src":"513:15:92"},"nodeType":"YulExpressionStatement","src":"513:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"548:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"551:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"541:6:92"},"nodeType":"YulFunctionCall","src":"541:15:92"},"nodeType":"YulExpressionStatement","src":"541:15:92"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"390:10:92"},{"kind":"number","nodeType":"YulLiteral","src":"402:18:92","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"387:2:92"},"nodeType":"YulFunctionCall","src":"387:34:92"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"426:10:92"},{"name":"memPtr","nodeType":"YulIdentifier","src":"438:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"423:2:92"},"nodeType":"YulFunctionCall","src":"423:22:92"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"384:2:92"},"nodeType":"YulFunctionCall","src":"384:62:92"},"nodeType":"YulIf","src":"381:185:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"582:2:92","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"586:10:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"575:6:92"},"nodeType":"YulFunctionCall","src":"575:22:92"},"nodeType":"YulExpressionStatement","src":"575:22:92"},{"nodeType":"YulVariableDeclaration","src":"606:17:92","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"617:6:92"},"variables":[{"name":"dst","nodeType":"YulTypedName","src":"610:3:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"632:29:92","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"650:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"658:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"646:3:92"},"nodeType":"YulFunctionCall","src":"646:15:92"},"variables":[{"name":"srcEnd","nodeType":"YulTypedName","src":"636:6:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"689:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"698:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"701:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"691:6:92"},"nodeType":"YulFunctionCall","src":"691:12:92"},"nodeType":"YulExpressionStatement","src":"691:12:92"}]},"condition":{"arguments":[{"name":"srcEnd","nodeType":"YulIdentifier","src":"676:6:92"},{"name":"end","nodeType":"YulIdentifier","src":"684:3:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"673:2:92"},"nodeType":"YulFunctionCall","src":"673:15:92"},"nodeType":"YulIf","src":"670:35:92"},{"nodeType":"YulVariableDeclaration","src":"714:17:92","value":{"name":"offset","nodeType":"YulIdentifier","src":"725:6:92"},"variables":[{"name":"src","nodeType":"YulTypedName","src":"718:3:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"798:92:92","statements":[{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"819:3:92"},{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"841:3:92"}],"functionName":{"name":"abi_decode_uint8","nodeType":"YulIdentifier","src":"824:16:92"},"nodeType":"YulFunctionCall","src":"824:21:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"812:6:92"},"nodeType":"YulFunctionCall","src":"812:34:92"},"nodeType":"YulExpressionStatement","src":"812:34:92"},{"nodeType":"YulAssignment","src":"859:21:92","value":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"870:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"875:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"866:3:92"},"nodeType":"YulFunctionCall","src":"866:14:92"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"859:3:92"}]}]},"condition":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"751:3:92"},{"name":"srcEnd","nodeType":"YulIdentifier","src":"756:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"748:2:92"},"nodeType":"YulFunctionCall","src":"748:15:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"764:25:92","statements":[{"nodeType":"YulAssignment","src":"766:21:92","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"777:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"782:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"773:3:92"},"nodeType":"YulFunctionCall","src":"773:14:92"},"variableNames":[{"name":"src","nodeType":"YulIdentifier","src":"766:3:92"}]}]},"pre":{"nodeType":"YulBlock","src":"744:3:92","statements":[]},"src":"740:150:92"},{"nodeType":"YulAssignment","src":"899:15:92","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"908:6:92"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"899:5:92"}]}]},"name":"abi_decode_array_uint8","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"207:6:92","type":""},{"name":"end","nodeType":"YulTypedName","src":"215:3:92","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"223:5:92","type":""}],"src":"175:745:92"},{"body":{"nodeType":"YulBlock","src":"1054:200:92","statements":[{"body":{"nodeType":"YulBlock","src":"1101:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1110:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1113:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1103:6:92"},"nodeType":"YulFunctionCall","src":"1103:12:92"},"nodeType":"YulExpressionStatement","src":"1103:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1075:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"1084:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1071:3:92"},"nodeType":"YulFunctionCall","src":"1071:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"1096:3:92","type":"","value":"192"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1067:3:92"},"nodeType":"YulFunctionCall","src":"1067:33:92"},"nodeType":"YulIf","src":"1064:53:92"},{"nodeType":"YulAssignment","src":"1126:52:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1159:9:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1170:7:92"}],"functionName":{"name":"abi_decode_array_uint8","nodeType":"YulIdentifier","src":"1136:22:92"},"nodeType":"YulFunctionCall","src":"1136:42:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1126:6:92"}]},{"nodeType":"YulAssignment","src":"1187:61:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1224:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1235:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1220:3:92"},"nodeType":"YulFunctionCall","src":"1220:18:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1240:7:92"}],"functionName":{"name":"abi_decode_array_uint8","nodeType":"YulIdentifier","src":"1197:22:92"},"nodeType":"YulFunctionCall","src":"1197:51:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1187:6:92"}]}]},"name":"abi_decode_tuple_t_array$_t_uint8_$3_memory_ptrt_array$_t_uint8_$3_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1012:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1023:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1035:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1043:6:92","type":""}],"src":"925:329:92"},{"body":{"nodeType":"YulBlock","src":"1354:92:92","statements":[{"nodeType":"YulAssignment","src":"1364:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1376:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1387:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1372:3:92"},"nodeType":"YulFunctionCall","src":"1372:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1364:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1406:9:92"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1431:6:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1424:6:92"},"nodeType":"YulFunctionCall","src":"1424:14:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1417:6:92"},"nodeType":"YulFunctionCall","src":"1417:22:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1399:6:92"},"nodeType":"YulFunctionCall","src":"1399:41:92"},"nodeType":"YulExpressionStatement","src":"1399:41:92"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1323:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1334:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1345:4:92","type":""}],"src":"1259:187:92"},{"body":{"nodeType":"YulBlock","src":"1483:95:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1500:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1507:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"1512:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1503:3:92"},"nodeType":"YulFunctionCall","src":"1503:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1493:6:92"},"nodeType":"YulFunctionCall","src":"1493:31:92"},"nodeType":"YulExpressionStatement","src":"1493:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1540:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"1543:4:92","type":"","value":"0x32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1533:6:92"},"nodeType":"YulFunctionCall","src":"1533:15:92"},"nodeType":"YulExpressionStatement","src":"1533:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1564:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1567:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1557:6:92"},"nodeType":"YulFunctionCall","src":"1557:15:92"},"nodeType":"YulExpressionStatement","src":"1557:15:92"}]},"name":"panic_error_0x32","nodeType":"YulFunctionDefinition","src":"1451:127:92"}]},"contents":"{\n { }\n function abi_decode_uint8(offset) -> value\n {\n value := calldataload(offset)\n if iszero(eq(value, and(value, 0xff))) { revert(0, 0) }\n }\n function abi_decode_array_uint8(offset, end) -> array\n {\n if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n let memPtr := mload(64)\n let newFreePtr := add(memPtr, 96)\n if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n mstore(64, newFreePtr)\n let dst := memPtr\n let srcEnd := add(offset, 96)\n if gt(srcEnd, end) { revert(0, 0) }\n let src := offset\n for { } lt(src, srcEnd) { src := add(src, 0x20) }\n {\n mstore(dst, abi_decode_uint8(src))\n dst := add(dst, 0x20)\n }\n array := memPtr\n }\n function abi_decode_tuple_t_array$_t_uint8_$3_memory_ptrt_array$_t_uint8_$3_memory_ptr(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 192) { revert(0, 0) }\n value0 := abi_decode_array_uint8(headStart, dataEnd)\n value1 := abi_decode_array_uint8(add(headStart, 96), dataEnd)\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function panic_error_0x32()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n}","id":92,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100725760003560e01c80639fdb5746116100505780639fdb5746146100c4578063d343ec1b146100d7578063f92e9bb1146100ea57600080fd5b80632198ac8d14610077578063668a90f61461009e57806396b38697146100b1575b600080fd5b61008a6100853660046104ed565b6100fd565b604051901515815260200160405180910390f35b61008a6100ac3660046104ed565b610112565b61008a6100bf3660046104ed565b61011e565b61008a6100d23660046104ed565b61012a565b61008a6100e53660046104ed565b610136565b61008a6100f83660046104ed565b610142565b6000610109838361014e565b90505b92915050565b600061010983836101e8565b6000610109838361027a565b6000610109838361030c565b6000610109838361039d565b600061010983836103f4565b8051825160009160ff9081169116101561016a5750600161010c565b8151835160ff918216911611156101835750600061010c565b6020808301519084015160ff918216911610156101a25750600161010c565b6020808301519084015160ff918216911611156101c15750600061010c565b6040808301519084015160ff9182169116116101df5750600161010c565b50600092915050565b8051825160009160ff908116911610156102045750600161010c565b8151835160ff9182169116111561021d5750600061010c565b6020808301519084015160ff9182169116101561023c5750600161010c565b6020808301519084015160ff9182169116111561025b5750600061010c565b6040808301519084015160ff918216911610156101df5750600161010c565b8051825160009160ff908116911611156102965750600161010c565b8151835160ff918216911610156102af5750600061010c565b6020808301519084015160ff918216911611156102ce5750600161010c565b6020808301519084015160ff918216911610156102ed5750600061010c565b6040808301519084015160ff918216911611156101df5750600161010c565b8051825160009160ff908116911611156103285750600161010c565b8151835160ff918216911610156103415750600061010c565b6020808301519084015160ff918216911611156103605750600161010c565b6020808301519084015160ff9182169116101561037f5750600061010c565b6040808301519084015160ff9182169116106101df5750600161010c565b8051825160009160ff9182169116146103b85750600161010c565b6020808301519084015160ff9081169116146103d65750600161010c565b6040808301519084015160ff9081169116146101df5750600161010c565b8051825160009160ff91821691161461040f5750600061010c565b6020808301519084015160ff90811691161461042d5750600061010c565b6040808301519084015160ff90811691161461044b5750600061010c565b50600192915050565b803560ff8116811461046557600080fd5b919050565b600082601f83011261047b57600080fd5b6040516060810181811067ffffffffffffffff821117156104ac57634e487b7160e01b600052604160045260246000fd5b6040528060608401858111156104c157600080fd5b845b818110156104e2576104d481610454565b8352602092830192016104c3565b509195945050505050565b60008060c0838503121561050057600080fd5b61050a848461046a565b9150610519846060850161046a565b9050925092905056fea164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x72 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9FDB5746 GT PUSH2 0x50 JUMPI DUP1 PUSH4 0x9FDB5746 EQ PUSH2 0xC4 JUMPI DUP1 PUSH4 0xD343EC1B EQ PUSH2 0xD7 JUMPI DUP1 PUSH4 0xF92E9BB1 EQ PUSH2 0xEA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x2198AC8D EQ PUSH2 0x77 JUMPI DUP1 PUSH4 0x668A90F6 EQ PUSH2 0x9E JUMPI DUP1 PUSH4 0x96B38697 EQ PUSH2 0xB1 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8A PUSH2 0x85 CALLDATASIZE PUSH1 0x4 PUSH2 0x4ED JUMP JUMPDEST PUSH2 0xFD JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x8A PUSH2 0xAC CALLDATASIZE PUSH1 0x4 PUSH2 0x4ED JUMP JUMPDEST PUSH2 0x112 JUMP JUMPDEST PUSH2 0x8A PUSH2 0xBF CALLDATASIZE PUSH1 0x4 PUSH2 0x4ED JUMP JUMPDEST PUSH2 0x11E JUMP JUMPDEST PUSH2 0x8A PUSH2 0xD2 CALLDATASIZE PUSH1 0x4 PUSH2 0x4ED JUMP JUMPDEST PUSH2 0x12A JUMP JUMPDEST PUSH2 0x8A PUSH2 0xE5 CALLDATASIZE PUSH1 0x4 PUSH2 0x4ED JUMP JUMPDEST PUSH2 0x136 JUMP JUMPDEST PUSH2 0x8A PUSH2 0xF8 CALLDATASIZE PUSH1 0x4 PUSH2 0x4ED JUMP JUMPDEST PUSH2 0x142 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x109 DUP4 DUP4 PUSH2 0x14E JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x109 DUP4 DUP4 PUSH2 0x1E8 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x109 DUP4 DUP4 PUSH2 0x27A JUMP JUMPDEST PUSH1 0x0 PUSH2 0x109 DUP4 DUP4 PUSH2 0x30C JUMP JUMPDEST PUSH1 0x0 PUSH2 0x109 DUP4 DUP4 PUSH2 0x39D JUMP JUMPDEST PUSH1 0x0 PUSH2 0x109 DUP4 DUP4 PUSH2 0x3F4 JUMP JUMPDEST DUP1 MLOAD DUP3 MLOAD PUSH1 0x0 SWAP2 PUSH1 0xFF SWAP1 DUP2 AND SWAP2 AND LT ISZERO PUSH2 0x16A JUMPI POP PUSH1 0x1 PUSH2 0x10C JUMP JUMPDEST DUP2 MLOAD DUP4 MLOAD PUSH1 0xFF SWAP2 DUP3 AND SWAP2 AND GT ISZERO PUSH2 0x183 JUMPI POP PUSH1 0x0 PUSH2 0x10C JUMP JUMPDEST PUSH1 0x20 DUP1 DUP4 ADD MLOAD SWAP1 DUP5 ADD MLOAD PUSH1 0xFF SWAP2 DUP3 AND SWAP2 AND LT ISZERO PUSH2 0x1A2 JUMPI POP PUSH1 0x1 PUSH2 0x10C JUMP JUMPDEST PUSH1 0x20 DUP1 DUP4 ADD MLOAD SWAP1 DUP5 ADD MLOAD PUSH1 0xFF SWAP2 DUP3 AND SWAP2 AND GT ISZERO PUSH2 0x1C1 JUMPI POP PUSH1 0x0 PUSH2 0x10C JUMP JUMPDEST PUSH1 0x40 DUP1 DUP4 ADD MLOAD SWAP1 DUP5 ADD MLOAD PUSH1 0xFF SWAP2 DUP3 AND SWAP2 AND GT PUSH2 0x1DF JUMPI POP PUSH1 0x1 PUSH2 0x10C JUMP JUMPDEST POP PUSH1 0x0 SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD DUP3 MLOAD PUSH1 0x0 SWAP2 PUSH1 0xFF SWAP1 DUP2 AND SWAP2 AND LT ISZERO PUSH2 0x204 JUMPI POP PUSH1 0x1 PUSH2 0x10C JUMP JUMPDEST DUP2 MLOAD DUP4 MLOAD PUSH1 0xFF SWAP2 DUP3 AND SWAP2 AND GT ISZERO PUSH2 0x21D JUMPI POP PUSH1 0x0 PUSH2 0x10C JUMP JUMPDEST PUSH1 0x20 DUP1 DUP4 ADD MLOAD SWAP1 DUP5 ADD MLOAD PUSH1 0xFF SWAP2 DUP3 AND SWAP2 AND LT ISZERO PUSH2 0x23C JUMPI POP PUSH1 0x1 PUSH2 0x10C JUMP JUMPDEST PUSH1 0x20 DUP1 DUP4 ADD MLOAD SWAP1 DUP5 ADD MLOAD PUSH1 0xFF SWAP2 DUP3 AND SWAP2 AND GT ISZERO PUSH2 0x25B JUMPI POP PUSH1 0x0 PUSH2 0x10C JUMP JUMPDEST PUSH1 0x40 DUP1 DUP4 ADD MLOAD SWAP1 DUP5 ADD MLOAD PUSH1 0xFF SWAP2 DUP3 AND SWAP2 AND LT ISZERO PUSH2 0x1DF JUMPI POP PUSH1 0x1 PUSH2 0x10C JUMP JUMPDEST DUP1 MLOAD DUP3 MLOAD PUSH1 0x0 SWAP2 PUSH1 0xFF SWAP1 DUP2 AND SWAP2 AND GT ISZERO PUSH2 0x296 JUMPI POP PUSH1 0x1 PUSH2 0x10C JUMP JUMPDEST DUP2 MLOAD DUP4 MLOAD PUSH1 0xFF SWAP2 DUP3 AND SWAP2 AND LT ISZERO PUSH2 0x2AF JUMPI POP PUSH1 0x0 PUSH2 0x10C JUMP JUMPDEST PUSH1 0x20 DUP1 DUP4 ADD MLOAD SWAP1 DUP5 ADD MLOAD PUSH1 0xFF SWAP2 DUP3 AND SWAP2 AND GT ISZERO PUSH2 0x2CE JUMPI POP PUSH1 0x1 PUSH2 0x10C JUMP JUMPDEST PUSH1 0x20 DUP1 DUP4 ADD MLOAD SWAP1 DUP5 ADD MLOAD PUSH1 0xFF SWAP2 DUP3 AND SWAP2 AND LT ISZERO PUSH2 0x2ED JUMPI POP PUSH1 0x0 PUSH2 0x10C JUMP JUMPDEST PUSH1 0x40 DUP1 DUP4 ADD MLOAD SWAP1 DUP5 ADD MLOAD PUSH1 0xFF SWAP2 DUP3 AND SWAP2 AND GT ISZERO PUSH2 0x1DF JUMPI POP PUSH1 0x1 PUSH2 0x10C JUMP JUMPDEST DUP1 MLOAD DUP3 MLOAD PUSH1 0x0 SWAP2 PUSH1 0xFF SWAP1 DUP2 AND SWAP2 AND GT ISZERO PUSH2 0x328 JUMPI POP PUSH1 0x1 PUSH2 0x10C JUMP JUMPDEST DUP2 MLOAD DUP4 MLOAD PUSH1 0xFF SWAP2 DUP3 AND SWAP2 AND LT ISZERO PUSH2 0x341 JUMPI POP PUSH1 0x0 PUSH2 0x10C JUMP JUMPDEST PUSH1 0x20 DUP1 DUP4 ADD MLOAD SWAP1 DUP5 ADD MLOAD PUSH1 0xFF SWAP2 DUP3 AND SWAP2 AND GT ISZERO PUSH2 0x360 JUMPI POP PUSH1 0x1 PUSH2 0x10C JUMP JUMPDEST PUSH1 0x20 DUP1 DUP4 ADD MLOAD SWAP1 DUP5 ADD MLOAD PUSH1 0xFF SWAP2 DUP3 AND SWAP2 AND LT ISZERO PUSH2 0x37F JUMPI POP PUSH1 0x0 PUSH2 0x10C JUMP JUMPDEST PUSH1 0x40 DUP1 DUP4 ADD MLOAD SWAP1 DUP5 ADD MLOAD PUSH1 0xFF SWAP2 DUP3 AND SWAP2 AND LT PUSH2 0x1DF JUMPI POP PUSH1 0x1 PUSH2 0x10C JUMP JUMPDEST DUP1 MLOAD DUP3 MLOAD PUSH1 0x0 SWAP2 PUSH1 0xFF SWAP2 DUP3 AND SWAP2 AND EQ PUSH2 0x3B8 JUMPI POP PUSH1 0x1 PUSH2 0x10C JUMP JUMPDEST PUSH1 0x20 DUP1 DUP4 ADD MLOAD SWAP1 DUP5 ADD MLOAD PUSH1 0xFF SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x3D6 JUMPI POP PUSH1 0x1 PUSH2 0x10C JUMP JUMPDEST PUSH1 0x40 DUP1 DUP4 ADD MLOAD SWAP1 DUP5 ADD MLOAD PUSH1 0xFF SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x1DF JUMPI POP PUSH1 0x1 PUSH2 0x10C JUMP JUMPDEST DUP1 MLOAD DUP3 MLOAD PUSH1 0x0 SWAP2 PUSH1 0xFF SWAP2 DUP3 AND SWAP2 AND EQ PUSH2 0x40F JUMPI POP PUSH1 0x0 PUSH2 0x10C JUMP JUMPDEST PUSH1 0x20 DUP1 DUP4 ADD MLOAD SWAP1 DUP5 ADD MLOAD PUSH1 0xFF SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x42D JUMPI POP PUSH1 0x0 PUSH2 0x10C JUMP JUMPDEST PUSH1 0x40 DUP1 DUP4 ADD MLOAD SWAP1 DUP5 ADD MLOAD PUSH1 0xFF SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x44B JUMPI POP PUSH1 0x0 PUSH2 0x10C JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x465 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x47B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x60 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x4AC JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP5 ADD DUP6 DUP2 GT ISZERO PUSH2 0x4C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x4E2 JUMPI PUSH2 0x4D4 DUP2 PUSH2 0x454 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 ADD PUSH2 0x4C3 JUMP JUMPDEST POP SWAP2 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0xC0 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x500 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x50A DUP5 DUP5 PUSH2 0x46A JUMP JUMPDEST SWAP2 POP PUSH2 0x519 DUP5 PUSH1 0x60 DUP6 ADD PUSH2 0x46A JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"283:820:64:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;737:118;;;;;;:::i;:::-;;:::i;:::-;;;1424:14:92;;1417:22;1399:41;;1387:2;1372:18;737:118:64;;;;;;;615:116;;;;;;:::i;:::-;;:::i;861:::-;;;;;;:::i;:::-;;:::i;983:118::-;;;;;;:::i;:::-;;:::i;491:::-;;;;;;:::i;:::-;;:::i;369:116::-;;;;;;:::i;:::-;;:::i;737:118::-;813:4;836:12;:3;844;836:7;:12::i;:::-;829:19;;737:118;;;;;:::o;615:116::-;690:4;713:11;:3;720;713:6;:11::i;861:116::-;936:4;959:11;:3;966;959:6;:11::i;983:118::-;1059:4;1082:12;:3;1090;1082:7;:12::i;491:118::-;567:4;590:12;:3;598;590:7;:12::i;369:116::-;444:4;467:11;:3;474;467:6;:11::i;2262:329:91:-;2369:6;;2360;;2340:4;;2360:15;;;;;;;2356:32;;;-1:-1:-1;2384:4:91;2377:11;;2356:32;2411:6;;2402;;:15;;;;;;;2398:33;;;-1:-1:-1;2426:5:91;2419:12;;2398:33;2455:6;;;;;2446;;;;:15;;;;;;;2442:32;;;-1:-1:-1;2470:4:91;2463:11;;2442:32;2497:6;;;;;2488;;;;:15;;;;;;;2484:33;;;-1:-1:-1;2512:5:91;2505:12;;2484:33;2542:6;;;;;2532;;;;:16;;;;;;;2528:33;;-1:-1:-1;2557:4:91;2550:11;;2528:33;-1:-1:-1;2579:5:91;2262:329;;;;:::o;1627:327::-;1733:6;;1724;;1704:4;;1724:15;;;;;;;1720:32;;;-1:-1:-1;1748:4:91;1741:11;;1720:32;1775:6;;1766;;:15;;;;;;;1762:33;;;-1:-1:-1;1790:5:91;1783:12;;1762:33;1819:6;;;;;1810;;;;:15;;;;;;;1806:32;;;-1:-1:-1;1834:4:91;1827:11;;1806:32;1861:6;;;;;1852;;;;:15;;;;;;;1848:33;;;-1:-1:-1;1876:5:91;1869:12;;1848:33;1905:6;;;;;1896;;;;:15;;;;;;;1892:32;;;-1:-1:-1;1920:4:91;1913:11;;2881:327;2987:6;;2978;;2958:4;;2978:15;;;;;;;2974:32;;;-1:-1:-1;3002:4:91;2995:11;;2974:32;3029:6;;3020;;:15;;;;;;;3016:33;;;-1:-1:-1;3044:5:91;3037:12;;3016:33;3073:6;;;;;3064;;;;:15;;;;;;;3060:32;;;-1:-1:-1;3088:4:91;3081:11;;3060:32;3115:6;;;;;3106;;;;:15;;;;;;;3102:33;;;-1:-1:-1;3130:5:91;3123:12;;3102:33;3159:6;;;;;3150;;;;:15;;;;;;;3146:32;;;-1:-1:-1;3174:4:91;3167:11;;3522:329;3629:6;;3620;;3600:4;;3620:15;;;;;;;3616:32;;;-1:-1:-1;3644:4:91;3637:11;;3616:32;3671:6;;3662;;:15;;;;;;;3658:33;;;-1:-1:-1;3686:5:91;3679:12;;3658:33;3715:6;;;;;3706;;;;:15;;;;;;;3702:32;;;-1:-1:-1;3730:4:91;3723:11;;3702:32;3757:6;;;;;3748;;;;:15;;;;;;;3744:33;;;-1:-1:-1;3772:5:91;3765:12;;3744:33;3802:6;;;;;3792;;;;:16;;;;;;;3788:33;;-1:-1:-1;3817:4:91;3810:11;;1098:245;1206:6;;1196;;1176:4;;1196:16;;;;;;;1192:33;;-1:-1:-1;1221:4:91;1214:11;;1192:33;1250:6;;;;;1240;;;;:16;;;;;;;1236:33;;-1:-1:-1;1265:4:91;1258:11;;1236:33;1294:6;;;;;1284;;;;:16;;;;;;;1280:33;;-1:-1:-1;1309:4:91;1302:11;;587:246;694:6;;684;;664:4;;684:16;;;;;;;680:34;;-1:-1:-1;709:5:91;702:12;;680:34;739:6;;;;;729;;;;:16;;;;;;;725:34;;-1:-1:-1;754:5:91;747:12;;725:34;784:6;;;;;774;;;;:16;;;;;;;770:34;;-1:-1:-1;799:5:91;792:12;;770:34;-1:-1:-1;822:4:91;587:246;;;;:::o;14:156:92:-;80:20;;140:4;129:16;;119:27;;109:55;;160:1;157;150:12;109:55;14:156;;;:::o;175:745::-;223:5;276:3;269:4;261:6;257:17;253:27;243:55;;294:1;291;284:12;243:55;327:2;321:9;369:2;361:6;357:15;438:6;426:10;423:22;402:18;390:10;387:34;384:62;381:185;;;488:10;483:3;479:20;476:1;469:31;523:4;520:1;513:15;551:4;548:1;541:15;381:185;582:2;575:22;617:6;658:2;646:15;;673;;;670:35;;;701:1;698;691:12;670:35;725:6;740:150;756:6;751:3;748:15;740:150;;;824:21;841:3;824:21;:::i;:::-;812:34;;875:4;866:14;;;;773;740:150;;;-1:-1:-1;908:6:92;;175:745;-1:-1:-1;;;;;175:745:92:o;925:329::-;1035:6;1043;1096:3;1084:9;1075:7;1071:23;1067:33;1064:53;;;1113:1;1110;1103:12;1064:53;1136:42;1170:7;1159:9;1136:42;:::i;:::-;1126:52;;1197:51;1240:7;1235:2;1224:9;1220:18;1197:51;:::i;:::-;1187:61;;925:329;;;;;:::o"},"gasEstimates":{"creation":{"codeDepositCost":"265400","executionCost":"306","totalCost":"265706"},"external":{"eq(uint8[3],uint8[3])":"infinite","gt(uint8[3],uint8[3])":"infinite","gte(uint8[3],uint8[3])":"infinite","lt(uint8[3],uint8[3])":"infinite","lte(uint8[3],uint8[3])":"infinite","neq(uint8[3],uint8[3])":"infinite"}},"methodIdentifiers":{"eq(uint8[3],uint8[3])":"f92e9bb1","gt(uint8[3],uint8[3])":"96b38697","gte(uint8[3],uint8[3])":"9fdb5746","lt(uint8[3],uint8[3])":"668a90f6","lte(uint8[3],uint8[3])":"2198ac8d","neq(uint8[3],uint8[3])":"d343ec1b"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint8[3]\",\"name\":\"lhs\",\"type\":\"uint8[3]\"},{\"internalType\":\"uint8[3]\",\"name\":\"rhs\",\"type\":\"uint8[3]\"}],\"name\":\"eq\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8[3]\",\"name\":\"lhs\",\"type\":\"uint8[3]\"},{\"internalType\":\"uint8[3]\",\"name\":\"rhs\",\"type\":\"uint8[3]\"}],\"name\":\"gt\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8[3]\",\"name\":\"lhs\",\"type\":\"uint8[3]\"},{\"internalType\":\"uint8[3]\",\"name\":\"rhs\",\"type\":\"uint8[3]\"}],\"name\":\"gte\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8[3]\",\"name\":\"lhs\",\"type\":\"uint8[3]\"},{\"internalType\":\"uint8[3]\",\"name\":\"rhs\",\"type\":\"uint8[3]\"}],\"name\":\"lt\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8[3]\",\"name\":\"lhs\",\"type\":\"uint8[3]\"},{\"internalType\":\"uint8[3]\",\"name\":\"rhs\",\"type\":\"uint8[3]\"}],\"name\":\"lte\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8[3]\",\"name\":\"lhs\",\"type\":\"uint8[3]\"},{\"internalType\":\"uint8[3]\",\"name\":\"rhs\",\"type\":\"uint8[3]\"}],\"name\":\"neq\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"DO NOT USE IN PRODUCTION!\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"A mock contract containing functions to compare semantic version numbers.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/mocks/utils/versioning/VersionComparisonLibMock.sol\":\"VersionComparisonLibMock\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"src/mocks/utils/versioning/VersionComparisonLibMock.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {VersionComparisonLib} from \\\"../../../utils/versioning/VersionComparisonLib.sol\\\";\\n\\n/// @notice A mock contract containing functions to compare semantic version numbers.\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract VersionComparisonLibMock {\\n using VersionComparisonLib for uint8[3];\\n\\n function eq(uint8[3] memory lhs, uint8[3] memory rhs) public pure returns (bool) {\\n return lhs.eq(rhs);\\n }\\n\\n function neq(uint8[3] memory lhs, uint8[3] memory rhs) public pure returns (bool) {\\n return lhs.neq(rhs);\\n }\\n\\n function lt(uint8[3] memory lhs, uint8[3] memory rhs) public pure returns (bool) {\\n return lhs.lt(rhs);\\n }\\n\\n function lte(uint8[3] memory lhs, uint8[3] memory rhs) public pure returns (bool) {\\n return lhs.lte(rhs);\\n }\\n\\n function gt(uint8[3] memory lhs, uint8[3] memory rhs) public pure returns (bool) {\\n return lhs.gt(rhs);\\n }\\n\\n function gte(uint8[3] memory lhs, uint8[3] memory rhs) public pure returns (bool) {\\n return lhs.gte(rhs);\\n }\\n}\\n\",\"keccak256\":\"0x3abbc50700897cb6669f2fa9bfaa940e284916346b4903597a29d7487d977b60\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/VersionComparisonLib.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title VersionComparisonLib\\n/// @author Aragon X - 2023\\n/// @notice A library containing methods for [semantic version number](https://semver.org/spec/v2.0.0.html) comparison.\\n/// @custom:security-contact sirt@aragon.org\\nlibrary VersionComparisonLib {\\n /// @notice Equality comparator for two semantic version numbers.\\n /// @param lhs The left-hand side semantic version number.\\n /// @param rhs The right-hand side semantic version number.\\n /// @return Whether the two numbers are equal or not.\\n function eq(uint8[3] memory lhs, uint8[3] memory rhs) internal pure returns (bool) {\\n if (lhs[0] != rhs[0]) return false;\\n\\n if (lhs[1] != rhs[1]) return false;\\n\\n if (lhs[2] != rhs[2]) return false;\\n\\n return true;\\n }\\n\\n /// @notice Inequality comparator for two semantic version numbers.\\n /// @param lhs The left-hand side semantic version number.\\n /// @param rhs The right-hand side semantic version number.\\n /// @return Whether the two numbers are inequal or not.\\n function neq(uint8[3] memory lhs, uint8[3] memory rhs) internal pure returns (bool) {\\n if (lhs[0] != rhs[0]) return true;\\n\\n if (lhs[1] != rhs[1]) return true;\\n\\n if (lhs[2] != rhs[2]) return true;\\n\\n return false;\\n }\\n\\n /// @notice Less than comparator for two semantic version numbers.\\n /// @param lhs The left-hand side semantic version number.\\n /// @param rhs The right-hand side semantic version number.\\n /// @return Whether the first number is less than the second number or not.\\n function lt(uint8[3] memory lhs, uint8[3] memory rhs) internal pure returns (bool) {\\n if (lhs[0] < rhs[0]) return true;\\n if (lhs[0] > rhs[0]) return false;\\n\\n if (lhs[1] < rhs[1]) return true;\\n if (lhs[1] > rhs[1]) return false;\\n\\n if (lhs[2] < rhs[2]) return true;\\n\\n return false;\\n }\\n\\n /// @notice Less than or equal to comparator for two semantic version numbers.\\n /// @param lhs The left-hand side semantic version number.\\n /// @param rhs The right-hand side semantic version number.\\n /// @return Whether the first number is less than or equal to the second number or not.\\n function lte(uint8[3] memory lhs, uint8[3] memory rhs) internal pure returns (bool) {\\n if (lhs[0] < rhs[0]) return true;\\n if (lhs[0] > rhs[0]) return false;\\n\\n if (lhs[1] < rhs[1]) return true;\\n if (lhs[1] > rhs[1]) return false;\\n\\n if (lhs[2] <= rhs[2]) return true;\\n\\n return false;\\n }\\n\\n /// @notice Greater than comparator for two semantic version numbers.\\n /// @param lhs The left-hand side semantic version number.\\n /// @param rhs The right-hand side semantic version number.\\n /// @return Whether the first number is greater than the second number or not.\\n function gt(uint8[3] memory lhs, uint8[3] memory rhs) internal pure returns (bool) {\\n if (lhs[0] > rhs[0]) return true;\\n if (lhs[0] < rhs[0]) return false;\\n\\n if (lhs[1] > rhs[1]) return true;\\n if (lhs[1] < rhs[1]) return false;\\n\\n if (lhs[2] > rhs[2]) return true;\\n\\n return false;\\n }\\n\\n /// @notice Greater than or equal to comparator for two semantic version numbers.\\n /// @param lhs The left-hand side semantic version number.\\n /// @param rhs The right-hand side semantic version number.\\n /// @return Whether the first number is greater than or equal to the second number or not.\\n function gte(uint8[3] memory lhs, uint8[3] memory rhs) internal pure returns (bool) {\\n if (lhs[0] > rhs[0]) return true;\\n if (lhs[0] < rhs[0]) return false;\\n\\n if (lhs[1] > rhs[1]) return true;\\n if (lhs[1] < rhs[1]) return false;\\n\\n if (lhs[2] >= rhs[2]) return true;\\n\\n return false;\\n }\\n}\\n\",\"keccak256\":\"0x559ed1adc1f16900db347c5586369c8b39849b8e0bce851a2d9f73d19ec9252a\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"notice":"A mock contract containing functions to compare semantic version numbers.","version":1}}},"src/permission/PermissionLib.sol":{"PermissionLib":{"abi":[{"inputs":[],"name":"NO_CONDITION","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"devdoc":{"author":"Aragon X - 2021-2023","custom:security-contact":"sirt@aragon.org","kind":"dev","methods":{},"title":"PermissionLib","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"6075610038600b82828239805160001a607314602b57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe730000000000000000000000000000000000000000301460806040526004361060335760003560e01c80636dd02a5b146038575b600080fd5b603f600081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f3fea164736f6c6343000811000a","opcodes":"PUSH1 0x75 PUSH2 0x38 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2B JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH1 0x33 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6DD02A5B EQ PUSH1 0x38 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3F PUSH1 0x0 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"243:1810:65:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;243:1810:65;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@NO_CONDITION_13013":{"entryPoint":null,"id":13013,"parameterSlots":0,"returnSlots":0},"abi_encode_tuple_t_address__to_t_address__fromStack_library_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:250:92","statements":[{"nodeType":"YulBlock","src":"6:3:92","statements":[]},{"body":{"nodeType":"YulBlock","src":"123:125:92","statements":[{"nodeType":"YulAssignment","src":"133:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"145:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"156:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"141:3:92"},"nodeType":"YulFunctionCall","src":"141:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"133:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"175:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"190:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"198:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"186:3:92"},"nodeType":"YulFunctionCall","src":"186:55:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"168:6:92"},"nodeType":"YulFunctionCall","src":"168:74:92"},"nodeType":"YulExpressionStatement","src":"168:74:92"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_library_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"92:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"103:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"114:4:92","type":""}],"src":"14:234:92"}]},"contents":"{\n { }\n function abi_encode_tuple_t_address__to_t_address__fromStack_library_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n}","id":92,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"730000000000000000000000000000000000000000301460806040526004361060335760003560e01c80636dd02a5b146038575b600080fd5b603f600081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f3fea164736f6c6343000811000a","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH1 0x33 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6DD02A5B EQ PUSH1 0x38 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3F PUSH1 0x0 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"243:1810:65:-:0;;;;;;;;;;;;;;;;;;;;;;;;355:49;;402:1;355:49;;;;;198:42:92;186:55;;;168:74;;156:2;141:18;355:49:65;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"23400","executionCost":"106","totalCost":"23506"},"external":{"NO_CONDITION()":"154"}},"methodIdentifiers":{"NO_CONDITION()":"6dd02a5b"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"NO_CONDITION\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Aragon X - 2021-2023\",\"custom:security-contact\":\"sirt@aragon.org\",\"kind\":\"dev\",\"methods\":{},\"title\":\"PermissionLib\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"NO_CONDITION()\":{\"notice\":\"A constant expressing that no condition is applied to a permission.\"}},\"notice\":\"A library containing objects for permission processing.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/permission/PermissionLib.sol\":\"PermissionLib\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"src/permission/PermissionLib.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title PermissionLib\\n/// @author Aragon X - 2021-2023\\n/// @notice A library containing objects for permission processing.\\n/// @custom:security-contact sirt@aragon.org\\nlibrary PermissionLib {\\n /// @notice A constant expressing that no condition is applied to a permission.\\n address public constant NO_CONDITION = address(0);\\n\\n /// @notice The types of permission operations available in the `PermissionManager`.\\n /// @param Grant The grant operation setting a permission without a condition.\\n /// @param Revoke The revoke operation removing a permission (that was granted with or without a condition).\\n /// @param GrantWithCondition The grant operation setting a permission with a condition.\\n enum Operation {\\n Grant,\\n Revoke,\\n GrantWithCondition\\n }\\n\\n /// @notice A struct containing the information for a permission to be applied on a single target contract without a condition.\\n /// @param operation The permission operation type.\\n /// @param who The address (EOA or contract) receiving the permission.\\n /// @param permissionId The permission identifier.\\n struct SingleTargetPermission {\\n Operation operation;\\n address who;\\n bytes32 permissionId;\\n }\\n\\n /// @notice A struct containing the information for a permission to be applied on multiple target contracts, optionally, with a condition.\\n /// @param operation The permission operation type.\\n /// @param where The address of the target contract for which `who` receives permission.\\n /// @param who The address (EOA or contract) receiving the permission.\\n /// @param condition The `PermissionCondition` that will be asked for authorization on calls connected to the specified permission identifier.\\n /// @param permissionId The permission identifier.\\n struct MultiTargetPermission {\\n Operation operation;\\n address where;\\n address who;\\n address condition;\\n bytes32 permissionId;\\n }\\n}\\n\",\"keccak256\":\"0x470faf3c4891ebc6420ef6cc09f6098917568ccc79268c90954d1478199b6097\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{"NO_CONDITION()":{"notice":"A constant expressing that no condition is applied to a permission."}},"notice":"A library containing objects for permission processing.","version":1}}},"src/permission/auth/DaoAuthorizable.sol":{"DaoAuthorizable":{"abi":[{"inputs":[],"name":"dao","outputs":[{"internalType":"contract IDAO","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"devdoc":{"author":"Aragon X - 2022-2023","custom:security-contact":"sirt@aragon.org","kind":"dev","methods":{"constructor":{"params":{"_dao":"The associated DAO address."}},"dao()":{"returns":{"_0":"The DAO contract."}}},"title":"DaoAuthorizable","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"dao()":"4162169f"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"dao\",\"outputs\":[{\"internalType\":\"contract IDAO\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Aragon X - 2022-2023\",\"custom:security-contact\":\"sirt@aragon.org\",\"kind\":\"dev\",\"methods\":{\"constructor\":{\"params\":{\"_dao\":\"The associated DAO address.\"}},\"dao()\":{\"returns\":{\"_0\":\"The DAO contract.\"}}},\"title\":\"DaoAuthorizable\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"constructor\":{\"notice\":\"Constructs the contract by setting the associated DAO.\"},\"dao()\":{\"notice\":\"Returns the DAO contract.\"}},\"notice\":\"An abstract contract providing a meta-transaction compatible modifier for non-upgradeable contracts instantiated via the `new` keyword to authorize function calls through an associated DAO.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/permission/auth/DaoAuthorizable.sol\":\"DaoAuthorizable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n function _contextSuffixLength() internal view virtual returns (uint256) {\\n return 0;\\n }\\n}\\n\",\"keccak256\":\"0xa92e4fa126feb6907daa0513ddd816b2eb91f30a808de54f63c17d0e162c3439\",\"license\":\"MIT\"},\"src/dao/IDAO.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IDAO\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for DAOs within the Aragon App DAO framework.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IDAO {\\n /// @notice The action struct to be consumed by the DAO's `execute` function resulting in an external call.\\n /// @param to The address to call.\\n /// @param value The native token value to be sent with the call.\\n /// @param data The bytes-encoded function selector and calldata for the call.\\n struct Action {\\n address to;\\n uint256 value;\\n bytes data;\\n }\\n\\n /// @notice Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\\n /// @param _where The address of the contract.\\n /// @param _who The address of a EOA or contract to give the permissions.\\n /// @param _permissionId The permission identifier.\\n /// @param _data The optional data passed to the `PermissionCondition` registered.\\n /// @return Returns true if the address has permission, false if not.\\n function hasPermission(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes memory _data\\n ) external view returns (bool);\\n\\n /// @notice Updates the DAO metadata (e.g., an IPFS hash).\\n /// @param _metadata The IPFS hash of the new metadata object.\\n function setMetadata(bytes calldata _metadata) external;\\n\\n /// @notice Emitted when the DAO metadata is updated.\\n /// @param metadata The IPFS hash of the new metadata object.\\n event MetadataSet(bytes metadata);\\n\\n /// @notice Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted.\\n /// @param _callId The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce.\\n /// @param _actions The array of actions.\\n /// @param _allowFailureMap A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @return The array of results obtained from the executed actions in `bytes`.\\n /// @return The resulting failure map containing the actions have actually failed.\\n function execute(\\n bytes32 _callId,\\n Action[] memory _actions,\\n uint256 _allowFailureMap\\n ) external returns (bytes[] memory, uint256);\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param actor The address of the caller.\\n /// @param callId The ID of the call.\\n /// @param actions The array of actions executed.\\n /// @param allowFailureMap The allow failure map encoding which actions are allowed to fail.\\n /// @param failureMap The failure map encoding which actions have failed.\\n /// @param execResults The array with the results of the executed actions.\\n /// @dev The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce.\\n event Executed(\\n address indexed actor,\\n bytes32 callId,\\n Action[] actions,\\n uint256 allowFailureMap,\\n uint256 failureMap,\\n bytes[] execResults\\n );\\n\\n /// @notice Emitted when a standard callback is registered.\\n /// @param interfaceId The ID of the interface.\\n /// @param callbackSelector The selector of the callback function.\\n /// @param magicNumber The magic number to be registered for the callback function selector.\\n event StandardCallbackRegistered(\\n bytes4 interfaceId,\\n bytes4 callbackSelector,\\n bytes4 magicNumber\\n );\\n\\n /// @notice Deposits (native) tokens to the DAO contract with a reference string.\\n /// @param _token The address of the token or address(0) in case of the native token.\\n /// @param _amount The amount of tokens to deposit.\\n /// @param _reference The reference describing the deposit reason.\\n function deposit(address _token, uint256 _amount, string calldata _reference) external payable;\\n\\n /// @notice Emitted when a token deposit has been made to the DAO.\\n /// @param sender The address of the sender.\\n /// @param token The address of the deposited token.\\n /// @param amount The amount of tokens deposited.\\n /// @param _reference The reference describing the deposit reason.\\n event Deposited(\\n address indexed sender,\\n address indexed token,\\n uint256 amount,\\n string _reference\\n );\\n\\n /// @notice Emitted when a native token deposit has been made to the DAO.\\n /// @dev This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).\\n /// @param sender The address of the sender.\\n /// @param amount The amount of native tokens deposited.\\n event NativeTokenDeposited(address sender, uint256 amount);\\n\\n /// @notice Setter for the trusted forwarder verifying the meta transaction.\\n /// @param _trustedForwarder The trusted forwarder address.\\n function setTrustedForwarder(address _trustedForwarder) external;\\n\\n /// @notice Getter for the trusted forwarder verifying the meta transaction.\\n /// @return The trusted forwarder address.\\n function getTrustedForwarder() external view returns (address);\\n\\n /// @notice Emitted when a new TrustedForwarder is set on the DAO.\\n /// @param forwarder the new forwarder address.\\n event TrustedForwarderSet(address forwarder);\\n\\n /// @notice Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\\n /// @param _hash The hash of the data to be signed.\\n /// @param _signature The signature byte array associated with `_hash`.\\n /// @return Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not.\\n function isValidSignature(bytes32 _hash, bytes memory _signature) external returns (bytes4);\\n\\n /// @notice Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\\n /// @param _interfaceId The ID of the interface.\\n /// @param _callbackSelector The selector of the callback function.\\n /// @param _magicNumber The magic number to be registered for the function signature.\\n function registerStandardCallback(\\n bytes4 _interfaceId,\\n bytes4 _callbackSelector,\\n bytes4 _magicNumber\\n ) external;\\n\\n /// @notice Removed function being left here to not corrupt the IDAO interface ID. Any call will revert.\\n /// @dev Introduced in v1.0.0. Removed in v1.4.0.\\n function setSignatureValidator(address) external;\\n}\\n\",\"keccak256\":\"0xb7f615523c26de042edce98731c658f44a1edb2464387ac1b642c4c69f57128e\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/DaoAuthorizable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {Context} from \\\"@openzeppelin/contracts/utils/Context.sol\\\";\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\nimport {_auth} from \\\"./auth.sol\\\";\\n\\n/// @title DaoAuthorizable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract contract providing a meta-transaction compatible modifier for non-upgradeable contracts instantiated via the `new` keyword to authorize function calls through an associated DAO.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract DaoAuthorizable is Context {\\n /// @notice The associated DAO managing the permissions of inheriting contracts.\\n IDAO private immutable DAO;\\n\\n /// @notice Constructs the contract by setting the associated DAO.\\n /// @param _dao The associated DAO address.\\n constructor(IDAO _dao) {\\n DAO = _dao;\\n }\\n\\n /// @notice Returns the DAO contract.\\n /// @return The DAO contract.\\n function dao() public view returns (IDAO) {\\n return DAO;\\n }\\n\\n /// @notice A modifier to make functions on inheriting contracts authorized. Permissions to call the function are checked through the associated DAO's permission manager.\\n /// @param _permissionId The permission identifier required to call the method this modifier is applied to.\\n modifier auth(bytes32 _permissionId) {\\n _auth(DAO, address(this), _msgSender(), _permissionId, _msgData());\\n _;\\n }\\n}\\n\",\"keccak256\":\"0x3d0be91b4f5854ed2d2c51b53fe7ffba58cc968e972015cf60eb3ea100543e64\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/auth.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice Thrown if a call is unauthorized in the associated DAO.\\n/// @param dao The associated DAO.\\n/// @param where The context in which the authorization reverted.\\n/// @param who The address (EOA or contract) missing the permission.\\n/// @param permissionId The permission identifier.\\nerror DaoUnauthorized(address dao, address where, address who, bytes32 permissionId);\\n\\n/// @notice A free function checking if a caller is granted permissions on a target contract via a permission identifier that redirects the approval to a `PermissionCondition` if this was specified in the setup.\\n/// @param _where The address of the target contract for which `who` receives permission.\\n/// @param _who The address (EOA or contract) owning the permission.\\n/// @param _permissionId The permission identifier.\\n/// @param _data The optional data passed to the `PermissionCondition` registered.\\n/// @custom:security-contact sirt@aragon.org\\nfunction _auth(\\n IDAO _dao,\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes calldata _data\\n) view {\\n if (!_dao.hasPermission(_where, _who, _permissionId, _data))\\n revert DaoUnauthorized({\\n dao: address(_dao),\\n where: _where,\\n who: _who,\\n permissionId: _permissionId\\n });\\n}\\n\",\"keccak256\":\"0x878764b4f87fe0651fb3798fb9cb87c952f8c6caf6ae79c7f09de84df6c00298\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{"constructor":{"notice":"Constructs the contract by setting the associated DAO."},"dao()":{"notice":"Returns the DAO contract."}},"notice":"An abstract contract providing a meta-transaction compatible modifier for non-upgradeable contracts instantiated via the `new` keyword to authorize function calls through an associated DAO.","version":1}}},"src/permission/auth/DaoAuthorizableUpgradeable.sol":{"DaoAuthorizableUpgradeable":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"inputs":[],"name":"dao","outputs":[{"internalType":"contract IDAO","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"devdoc":{"author":"Aragon X - 2022-2023","custom:security-contact":"sirt@aragon.org","details":"Make sure to call `__DaoAuthorizableUpgradeable_init` during initialization of the inheriting contract.","kind":"dev","methods":{"dao()":{"returns":{"_0":"The DAO contract."}}},"title":"DaoAuthorizableUpgradeable","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"dao()":"4162169f"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"dao\",\"outputs\":[{\"internalType\":\"contract IDAO\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Aragon X - 2022-2023\",\"custom:security-contact\":\"sirt@aragon.org\",\"details\":\"Make sure to call `__DaoAuthorizableUpgradeable_init` during initialization of the inheriting contract.\",\"kind\":\"dev\",\"methods\":{\"dao()\":{\"returns\":{\"_0\":\"The DAO contract.\"}}},\"title\":\"DaoAuthorizableUpgradeable\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"dao()\":{\"notice\":\"Returns the DAO contract.\"}},\"notice\":\"An abstract contract providing a meta-transaction compatible modifier for upgradeable or cloneable contracts to authorize function calls through an associated DAO.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/permission/auth/DaoAuthorizableUpgradeable.sol\":\"DaoAuthorizableUpgradeable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n function __Context_init() internal onlyInitializing {\\n }\\n\\n function __Context_init_unchained() internal onlyInitializing {\\n }\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n function _contextSuffixLength() internal view virtual returns (uint256) {\\n return 0;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x75097e35253e7fb282ee4d7f27a80eaacfa759923185bf17302a89cbc059c5ef\",\"license\":\"MIT\"},\"src/dao/IDAO.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IDAO\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for DAOs within the Aragon App DAO framework.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IDAO {\\n /// @notice The action struct to be consumed by the DAO's `execute` function resulting in an external call.\\n /// @param to The address to call.\\n /// @param value The native token value to be sent with the call.\\n /// @param data The bytes-encoded function selector and calldata for the call.\\n struct Action {\\n address to;\\n uint256 value;\\n bytes data;\\n }\\n\\n /// @notice Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\\n /// @param _where The address of the contract.\\n /// @param _who The address of a EOA or contract to give the permissions.\\n /// @param _permissionId The permission identifier.\\n /// @param _data The optional data passed to the `PermissionCondition` registered.\\n /// @return Returns true if the address has permission, false if not.\\n function hasPermission(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes memory _data\\n ) external view returns (bool);\\n\\n /// @notice Updates the DAO metadata (e.g., an IPFS hash).\\n /// @param _metadata The IPFS hash of the new metadata object.\\n function setMetadata(bytes calldata _metadata) external;\\n\\n /// @notice Emitted when the DAO metadata is updated.\\n /// @param metadata The IPFS hash of the new metadata object.\\n event MetadataSet(bytes metadata);\\n\\n /// @notice Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted.\\n /// @param _callId The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce.\\n /// @param _actions The array of actions.\\n /// @param _allowFailureMap A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @return The array of results obtained from the executed actions in `bytes`.\\n /// @return The resulting failure map containing the actions have actually failed.\\n function execute(\\n bytes32 _callId,\\n Action[] memory _actions,\\n uint256 _allowFailureMap\\n ) external returns (bytes[] memory, uint256);\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param actor The address of the caller.\\n /// @param callId The ID of the call.\\n /// @param actions The array of actions executed.\\n /// @param allowFailureMap The allow failure map encoding which actions are allowed to fail.\\n /// @param failureMap The failure map encoding which actions have failed.\\n /// @param execResults The array with the results of the executed actions.\\n /// @dev The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce.\\n event Executed(\\n address indexed actor,\\n bytes32 callId,\\n Action[] actions,\\n uint256 allowFailureMap,\\n uint256 failureMap,\\n bytes[] execResults\\n );\\n\\n /// @notice Emitted when a standard callback is registered.\\n /// @param interfaceId The ID of the interface.\\n /// @param callbackSelector The selector of the callback function.\\n /// @param magicNumber The magic number to be registered for the callback function selector.\\n event StandardCallbackRegistered(\\n bytes4 interfaceId,\\n bytes4 callbackSelector,\\n bytes4 magicNumber\\n );\\n\\n /// @notice Deposits (native) tokens to the DAO contract with a reference string.\\n /// @param _token The address of the token or address(0) in case of the native token.\\n /// @param _amount The amount of tokens to deposit.\\n /// @param _reference The reference describing the deposit reason.\\n function deposit(address _token, uint256 _amount, string calldata _reference) external payable;\\n\\n /// @notice Emitted when a token deposit has been made to the DAO.\\n /// @param sender The address of the sender.\\n /// @param token The address of the deposited token.\\n /// @param amount The amount of tokens deposited.\\n /// @param _reference The reference describing the deposit reason.\\n event Deposited(\\n address indexed sender,\\n address indexed token,\\n uint256 amount,\\n string _reference\\n );\\n\\n /// @notice Emitted when a native token deposit has been made to the DAO.\\n /// @dev This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).\\n /// @param sender The address of the sender.\\n /// @param amount The amount of native tokens deposited.\\n event NativeTokenDeposited(address sender, uint256 amount);\\n\\n /// @notice Setter for the trusted forwarder verifying the meta transaction.\\n /// @param _trustedForwarder The trusted forwarder address.\\n function setTrustedForwarder(address _trustedForwarder) external;\\n\\n /// @notice Getter for the trusted forwarder verifying the meta transaction.\\n /// @return The trusted forwarder address.\\n function getTrustedForwarder() external view returns (address);\\n\\n /// @notice Emitted when a new TrustedForwarder is set on the DAO.\\n /// @param forwarder the new forwarder address.\\n event TrustedForwarderSet(address forwarder);\\n\\n /// @notice Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\\n /// @param _hash The hash of the data to be signed.\\n /// @param _signature The signature byte array associated with `_hash`.\\n /// @return Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not.\\n function isValidSignature(bytes32 _hash, bytes memory _signature) external returns (bytes4);\\n\\n /// @notice Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\\n /// @param _interfaceId The ID of the interface.\\n /// @param _callbackSelector The selector of the callback function.\\n /// @param _magicNumber The magic number to be registered for the function signature.\\n function registerStandardCallback(\\n bytes4 _interfaceId,\\n bytes4 _callbackSelector,\\n bytes4 _magicNumber\\n ) external;\\n\\n /// @notice Removed function being left here to not corrupt the IDAO interface ID. Any call will revert.\\n /// @dev Introduced in v1.0.0. Removed in v1.4.0.\\n function setSignatureValidator(address) external;\\n}\\n\",\"keccak256\":\"0xb7f615523c26de042edce98731c658f44a1edb2464387ac1b642c4c69f57128e\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/DaoAuthorizableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ContextUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\\\";\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\nimport {_auth} from \\\"./auth.sol\\\";\\n\\n/// @title DaoAuthorizableUpgradeable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract contract providing a meta-transaction compatible modifier for upgradeable or cloneable contracts to authorize function calls through an associated DAO.\\n/// @dev Make sure to call `__DaoAuthorizableUpgradeable_init` during initialization of the inheriting contract.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract DaoAuthorizableUpgradeable is ContextUpgradeable {\\n /// @notice The associated DAO managing the permissions of inheriting contracts.\\n IDAO private dao_;\\n\\n /// @notice Initializes the contract by setting the associated DAO.\\n /// @param _dao The associated DAO address.\\n // solhint-disable-next-line func-name-mixedcase\\n function __DaoAuthorizableUpgradeable_init(IDAO _dao) internal onlyInitializing {\\n dao_ = _dao;\\n }\\n\\n /// @notice Returns the DAO contract.\\n /// @return The DAO contract.\\n function dao() public view returns (IDAO) {\\n return dao_;\\n }\\n\\n /// @notice A modifier to make functions on inheriting contracts authorized. Permissions to call the function are checked through the associated DAO's permission manager.\\n /// @param _permissionId The permission identifier required to call the method this modifier is applied to.\\n modifier auth(bytes32 _permissionId) {\\n _auth(dao_, address(this), _msgSender(), _permissionId, _msgData());\\n _;\\n }\\n\\n /// @notice This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain (see [OpenZeppelin's guide about storage gaps](https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps)).\\n uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0x7fac6b01b037ba1cb9d6a22d3f43b0785037dcf496ffb672434d9bf7227d2585\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/auth.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice Thrown if a call is unauthorized in the associated DAO.\\n/// @param dao The associated DAO.\\n/// @param where The context in which the authorization reverted.\\n/// @param who The address (EOA or contract) missing the permission.\\n/// @param permissionId The permission identifier.\\nerror DaoUnauthorized(address dao, address where, address who, bytes32 permissionId);\\n\\n/// @notice A free function checking if a caller is granted permissions on a target contract via a permission identifier that redirects the approval to a `PermissionCondition` if this was specified in the setup.\\n/// @param _where The address of the target contract for which `who` receives permission.\\n/// @param _who The address (EOA or contract) owning the permission.\\n/// @param _permissionId The permission identifier.\\n/// @param _data The optional data passed to the `PermissionCondition` registered.\\n/// @custom:security-contact sirt@aragon.org\\nfunction _auth(\\n IDAO _dao,\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes calldata _data\\n) view {\\n if (!_dao.hasPermission(_where, _who, _permissionId, _data))\\n revert DaoUnauthorized({\\n dao: address(_dao),\\n where: _where,\\n who: _who,\\n permissionId: _permissionId\\n });\\n}\\n\",\"keccak256\":\"0x878764b4f87fe0651fb3798fb9cb87c952f8c6caf6ae79c7f09de84df6c00298\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[{"astId":372,"contract":"src/permission/auth/DaoAuthorizableUpgradeable.sol:DaoAuthorizableUpgradeable","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":375,"contract":"src/permission/auth/DaoAuthorizableUpgradeable.sol:DaoAuthorizableUpgradeable","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":2592,"contract":"src/permission/auth/DaoAuthorizableUpgradeable.sol:DaoAuthorizableUpgradeable","label":"__gap","offset":0,"slot":"1","type":"t_array(t_uint256)50_storage"},{"astId":13111,"contract":"src/permission/auth/DaoAuthorizableUpgradeable.sol:DaoAuthorizableUpgradeable","label":"dao_","offset":0,"slot":"51","type":"t_contract(IDAO)10865"},{"astId":13160,"contract":"src/permission/auth/DaoAuthorizableUpgradeable.sol:DaoAuthorizableUpgradeable","label":"__gap","offset":0,"slot":"52","type":"t_array(t_uint256)49_storage"}],"types":{"t_array(t_uint256)49_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[49]","numberOfBytes":"1568"},"t_array(t_uint256)50_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[50]","numberOfBytes":"1600"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_contract(IDAO)10865":{"encoding":"inplace","label":"contract IDAO","numberOfBytes":"20"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"kind":"user","methods":{"dao()":{"notice":"Returns the DAO contract."}},"notice":"An abstract contract providing a meta-transaction compatible modifier for upgradeable or cloneable contracts to authorize function calls through an associated DAO.","version":1}}},"src/permission/condition/IPermissionCondition.sol":{"IPermissionCondition":{"abi":[{"inputs":[{"internalType":"address","name":"_where","type":"address"},{"internalType":"address","name":"_who","type":"address"},{"internalType":"bytes32","name":"_permissionId","type":"bytes32"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"isGranted","outputs":[{"internalType":"bool","name":"isPermitted","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"author":"Aragon X - 2021-2023","custom:security-contact":"sirt@aragon.org","details":"To attach a condition to a permission, the `grantWithCondition` function must be used and refer to the implementing contract's address with the `condition` argument.","kind":"dev","methods":{"isGranted(address,address,bytes32,bytes)":{"params":{"_data":"Optional data passed to the `PermissionCondition` implementation.","_permissionId":"The permission identifier.","_where":"The address of the target contract.","_who":"The address (EOA or contract) for which the permissions are checked."},"returns":{"isPermitted":"Returns true if the call is permitted."}}},"title":"IPermissionCondition","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"isGranted(address,address,bytes32,bytes)":"2675fdd0"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_who\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_permissionId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"isGranted\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"isPermitted\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Aragon X - 2021-2023\",\"custom:security-contact\":\"sirt@aragon.org\",\"details\":\"To attach a condition to a permission, the `grantWithCondition` function must be used and refer to the implementing contract's address with the `condition` argument.\",\"kind\":\"dev\",\"methods\":{\"isGranted(address,address,bytes32,bytes)\":{\"params\":{\"_data\":\"Optional data passed to the `PermissionCondition` implementation.\",\"_permissionId\":\"The permission identifier.\",\"_where\":\"The address of the target contract.\",\"_who\":\"The address (EOA or contract) for which the permissions are checked.\"},\"returns\":{\"isPermitted\":\"Returns true if the call is permitted.\"}}},\"title\":\"IPermissionCondition\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"isGranted(address,address,bytes32,bytes)\":{\"notice\":\"Checks if a call is permitted.\"}},\"notice\":\"An interface to be implemented to support custom permission logic.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/permission/condition/IPermissionCondition.sol\":\"IPermissionCondition\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"src/permission/condition/IPermissionCondition.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IPermissionCondition\\n/// @author Aragon X - 2021-2023\\n/// @notice An interface to be implemented to support custom permission logic.\\n/// @dev To attach a condition to a permission, the `grantWithCondition` function must be used and refer to the implementing contract's address with the `condition` argument.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IPermissionCondition {\\n /// @notice Checks if a call is permitted.\\n /// @param _where The address of the target contract.\\n /// @param _who The address (EOA or contract) for which the permissions are checked.\\n /// @param _permissionId The permission identifier.\\n /// @param _data Optional data passed to the `PermissionCondition` implementation.\\n /// @return isPermitted Returns true if the call is permitted.\\n function isGranted(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes calldata _data\\n ) external view returns (bool isPermitted);\\n}\\n\",\"keccak256\":\"0xc3280622bdb57856f0b20ded71537fc99b344d1e6a0430abfaca8304a9ece922\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{"isGranted(address,address,bytes32,bytes)":{"notice":"Checks if a call is permitted."}},"notice":"An interface to be implemented to support custom permission logic.","version":1}}},"src/permission/condition/PermissionCondition.sol":{"PermissionCondition":{"abi":[{"inputs":[{"internalType":"address","name":"_where","type":"address"},{"internalType":"address","name":"_who","type":"address"},{"internalType":"bytes32","name":"_permissionId","type":"bytes32"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"isGranted","outputs":[{"internalType":"bool","name":"isPermitted","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"protocolVersion","outputs":[{"internalType":"uint8[3]","name":"","type":"uint8[3]"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"author":"Aragon X - 2023","custom:security-contact":"sirt@aragon.org","kind":"dev","methods":{"isGranted(address,address,bytes32,bytes)":{"params":{"_data":"Optional data passed to the `PermissionCondition` implementation.","_permissionId":"The permission identifier.","_where":"The address of the target contract.","_who":"The address (EOA or contract) for which the permissions are checked."},"returns":{"isPermitted":"Returns true if the call is permitted."}},"protocolVersion()":{"details":"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.","returns":{"_0":"Returns the semantic Aragon OSx protocol version number."}},"supportsInterface(bytes4)":{"params":{"_interfaceId":"The ID of the interface."},"returns":{"_0":"Returns `true` if the interface is supported."}}},"title":"PermissionCondition","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"isGranted(address,address,bytes32,bytes)":"2675fdd0","protocolVersion()":"2ae9c600","supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_who\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_permissionId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"isGranted\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"isPermitted\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"protocolVersion\",\"outputs\":[{\"internalType\":\"uint8[3]\",\"name\":\"\",\"type\":\"uint8[3]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Aragon X - 2023\",\"custom:security-contact\":\"sirt@aragon.org\",\"kind\":\"dev\",\"methods\":{\"isGranted(address,address,bytes32,bytes)\":{\"params\":{\"_data\":\"Optional data passed to the `PermissionCondition` implementation.\",\"_permissionId\":\"The permission identifier.\",\"_where\":\"The address of the target contract.\",\"_who\":\"The address (EOA or contract) for which the permissions are checked.\"},\"returns\":{\"isPermitted\":\"Returns true if the call is permitted.\"}},\"protocolVersion()\":{\"details\":\"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\",\"returns\":{\"_0\":\"Returns the semantic Aragon OSx protocol version number.\"}},\"supportsInterface(bytes4)\":{\"params\":{\"_interfaceId\":\"The ID of the interface.\"},\"returns\":{\"_0\":\"Returns `true` if the interface is supported.\"}}},\"title\":\"PermissionCondition\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"isGranted(address,address,bytes32,bytes)\":{\"notice\":\"Checks if a call is permitted.\"},\"protocolVersion()\":{\"notice\":\"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Checks if an interface is supported by this or its parent contract.\"}},\"notice\":\"An abstract contract for non-upgradeable contracts instantiated via the `new` keyword to inherit from to support customary permissions depending on arbitrary on-chain state.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/permission/condition/PermissionCondition.sol\":\"PermissionCondition\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165 is IERC165 {\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165).interfaceId;\\n }\\n}\\n\",\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"src/permission/condition/IPermissionCondition.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IPermissionCondition\\n/// @author Aragon X - 2021-2023\\n/// @notice An interface to be implemented to support custom permission logic.\\n/// @dev To attach a condition to a permission, the `grantWithCondition` function must be used and refer to the implementing contract's address with the `condition` argument.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IPermissionCondition {\\n /// @notice Checks if a call is permitted.\\n /// @param _where The address of the target contract.\\n /// @param _who The address (EOA or contract) for which the permissions are checked.\\n /// @param _permissionId The permission identifier.\\n /// @param _data Optional data passed to the `PermissionCondition` implementation.\\n /// @return isPermitted Returns true if the call is permitted.\\n function isGranted(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes calldata _data\\n ) external view returns (bool isPermitted);\\n}\\n\",\"keccak256\":\"0xc3280622bdb57856f0b20ded71537fc99b344d1e6a0430abfaca8304a9ece922\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/condition/PermissionCondition.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ERC165} from \\\"@openzeppelin/contracts/utils/introspection/ERC165.sol\\\";\\n\\nimport {IProtocolVersion} from \\\"../../utils/versioning/IProtocolVersion.sol\\\";\\nimport {ProtocolVersion} from \\\"../../utils/versioning/ProtocolVersion.sol\\\";\\nimport {IPermissionCondition} from \\\"./IPermissionCondition.sol\\\";\\n\\n/// @title PermissionCondition\\n/// @author Aragon X - 2023\\n/// @notice An abstract contract for non-upgradeable contracts instantiated via the `new` keyword to inherit from to support customary permissions depending on arbitrary on-chain state.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract PermissionCondition is ERC165, IPermissionCondition, ProtocolVersion {\\n /// @notice Checks if an interface is supported by this or its parent contract.\\n /// @param _interfaceId The ID of the interface.\\n /// @return Returns `true` if the interface is supported.\\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\\n return\\n _interfaceId == type(IPermissionCondition).interfaceId ||\\n _interfaceId == type(IProtocolVersion).interfaceId ||\\n super.supportsInterface(_interfaceId);\\n }\\n}\\n\",\"keccak256\":\"0xd952ceadfde4fdb7c26d1df7b7e401846e6134bee70364e91664504b7a9aa52a\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/IProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IProtocolVersion\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the semantic Aragon OSx protocol version number.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IProtocolVersion {\\n /// @notice Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\\n /// @return _version Returns the semantic Aragon OSx protocol version number.\\n /// @dev This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\\n function protocolVersion() external view returns (uint8[3] memory _version);\\n}\\n\",\"keccak256\":\"0x00a4da654d21dc1bdadbdc8bd54bb86c378c56f85e461ccc31303628ea621361\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/ProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IProtocolVersion} from \\\"./IProtocolVersion.sol\\\";\\n\\n/// @title ProtocolVersion\\n/// @author Aragon X - 2023\\n/// @notice An abstract, stateless, non-upgradeable contract providing the current Aragon OSx protocol version number.\\n/// @dev Do not add any new variables to this contract that would shift down storage in the inheritance chain.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract ProtocolVersion is IProtocolVersion {\\n // IMPORTANT: Do not add any storage variable, see the above notice.\\n\\n /// @inheritdoc IProtocolVersion\\n function protocolVersion() public pure returns (uint8[3] memory) {\\n return [1, 4, 0];\\n }\\n}\\n\",\"keccak256\":\"0x3975c937be935f687c6b6b8f379071232681e98cf04b175d72781b819ea52bdb\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{"isGranted(address,address,bytes32,bytes)":{"notice":"Checks if a call is permitted."},"protocolVersion()":{"notice":"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with."},"supportsInterface(bytes4)":{"notice":"Checks if an interface is supported by this or its parent contract."}},"notice":"An abstract contract for non-upgradeable contracts instantiated via the `new` keyword to inherit from to support customary permissions depending on arbitrary on-chain state.","version":1}}},"src/permission/condition/PermissionConditionUpgradeable.sol":{"PermissionConditionUpgradeable":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"inputs":[{"internalType":"address","name":"_where","type":"address"},{"internalType":"address","name":"_who","type":"address"},{"internalType":"bytes32","name":"_permissionId","type":"bytes32"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"isGranted","outputs":[{"internalType":"bool","name":"isPermitted","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"protocolVersion","outputs":[{"internalType":"uint8[3]","name":"","type":"uint8[3]"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"author":"Aragon X - 2023","custom:security-contact":"sirt@aragon.org","kind":"dev","methods":{"isGranted(address,address,bytes32,bytes)":{"params":{"_data":"Optional data passed to the `PermissionCondition` implementation.","_permissionId":"The permission identifier.","_where":"The address of the target contract.","_who":"The address (EOA or contract) for which the permissions are checked."},"returns":{"isPermitted":"Returns true if the call is permitted."}},"protocolVersion()":{"details":"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.","returns":{"_0":"Returns the semantic Aragon OSx protocol version number."}},"supportsInterface(bytes4)":{"params":{"_interfaceId":"The ID of the interface."},"returns":{"_0":"Returns `true` if the interface is supported."}}},"title":"PermissionConditionUpgradeable","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"isGranted(address,address,bytes32,bytes)":"2675fdd0","protocolVersion()":"2ae9c600","supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_who\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_permissionId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"isGranted\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"isPermitted\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"protocolVersion\",\"outputs\":[{\"internalType\":\"uint8[3]\",\"name\":\"\",\"type\":\"uint8[3]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Aragon X - 2023\",\"custom:security-contact\":\"sirt@aragon.org\",\"kind\":\"dev\",\"methods\":{\"isGranted(address,address,bytes32,bytes)\":{\"params\":{\"_data\":\"Optional data passed to the `PermissionCondition` implementation.\",\"_permissionId\":\"The permission identifier.\",\"_where\":\"The address of the target contract.\",\"_who\":\"The address (EOA or contract) for which the permissions are checked.\"},\"returns\":{\"isPermitted\":\"Returns true if the call is permitted.\"}},\"protocolVersion()\":{\"details\":\"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\",\"returns\":{\"_0\":\"Returns the semantic Aragon OSx protocol version number.\"}},\"supportsInterface(bytes4)\":{\"params\":{\"_interfaceId\":\"The ID of the interface.\"},\"returns\":{\"_0\":\"Returns `true` if the interface is supported.\"}}},\"title\":\"PermissionConditionUpgradeable\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"isGranted(address,address,bytes32,bytes)\":{\"notice\":\"Checks if a call is permitted.\"},\"protocolVersion()\":{\"notice\":\"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Checks if an interface is supported by this or its parent contract.\"}},\"notice\":\"An abstract contract for upgradeable or cloneable contracts to inherit from and to support customary permissions depending on arbitrary on-chain state.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/permission/condition/PermissionConditionUpgradeable.sol\":\"PermissionConditionUpgradeable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165Upgradeable.sol\\\";\\nimport {Initializable} from \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165Upgradeable is Initializable, IERC165Upgradeable {\\n function __ERC165_init() internal onlyInitializing {\\n }\\n\\n function __ERC165_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165Upgradeable).interfaceId;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0xd90d7723512df65ae417adaf0801042940f0dabd60039ceeaffe34aa5b238da1\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165Upgradeable {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\"},\"src/permission/condition/IPermissionCondition.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IPermissionCondition\\n/// @author Aragon X - 2021-2023\\n/// @notice An interface to be implemented to support custom permission logic.\\n/// @dev To attach a condition to a permission, the `grantWithCondition` function must be used and refer to the implementing contract's address with the `condition` argument.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IPermissionCondition {\\n /// @notice Checks if a call is permitted.\\n /// @param _where The address of the target contract.\\n /// @param _who The address (EOA or contract) for which the permissions are checked.\\n /// @param _permissionId The permission identifier.\\n /// @param _data Optional data passed to the `PermissionCondition` implementation.\\n /// @return isPermitted Returns true if the call is permitted.\\n function isGranted(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes calldata _data\\n ) external view returns (bool isPermitted);\\n}\\n\",\"keccak256\":\"0xc3280622bdb57856f0b20ded71537fc99b344d1e6a0430abfaca8304a9ece922\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/condition/PermissionConditionUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ERC165Upgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\\\";\\n\\nimport {IProtocolVersion} from \\\"../../utils/versioning/IProtocolVersion.sol\\\";\\nimport {ProtocolVersion} from \\\"../../utils/versioning/ProtocolVersion.sol\\\";\\nimport {IPermissionCondition} from \\\"./IPermissionCondition.sol\\\";\\n\\n/// @title PermissionConditionUpgradeable\\n/// @author Aragon X - 2023\\n/// @notice An abstract contract for upgradeable or cloneable contracts to inherit from and to support customary permissions depending on arbitrary on-chain state.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract PermissionConditionUpgradeable is\\n ERC165Upgradeable,\\n IPermissionCondition,\\n ProtocolVersion\\n{\\n /// @notice Checks if an interface is supported by this or its parent contract.\\n /// @param _interfaceId The ID of the interface.\\n /// @return Returns `true` if the interface is supported.\\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\\n return\\n _interfaceId == type(IPermissionCondition).interfaceId ||\\n _interfaceId == type(IProtocolVersion).interfaceId ||\\n super.supportsInterface(_interfaceId);\\n }\\n}\\n\",\"keccak256\":\"0x0d4eb8813760958455448f862015209d01904cc2a4fa15ccb5c85ca13548e275\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/IProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IProtocolVersion\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the semantic Aragon OSx protocol version number.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IProtocolVersion {\\n /// @notice Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\\n /// @return _version Returns the semantic Aragon OSx protocol version number.\\n /// @dev This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\\n function protocolVersion() external view returns (uint8[3] memory _version);\\n}\\n\",\"keccak256\":\"0x00a4da654d21dc1bdadbdc8bd54bb86c378c56f85e461ccc31303628ea621361\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/ProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IProtocolVersion} from \\\"./IProtocolVersion.sol\\\";\\n\\n/// @title ProtocolVersion\\n/// @author Aragon X - 2023\\n/// @notice An abstract, stateless, non-upgradeable contract providing the current Aragon OSx protocol version number.\\n/// @dev Do not add any new variables to this contract that would shift down storage in the inheritance chain.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract ProtocolVersion is IProtocolVersion {\\n // IMPORTANT: Do not add any storage variable, see the above notice.\\n\\n /// @inheritdoc IProtocolVersion\\n function protocolVersion() public pure returns (uint8[3] memory) {\\n return [1, 4, 0];\\n }\\n}\\n\",\"keccak256\":\"0x3975c937be935f687c6b6b8f379071232681e98cf04b175d72781b819ea52bdb\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[{"astId":372,"contract":"src/permission/condition/PermissionConditionUpgradeable.sol:PermissionConditionUpgradeable","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":375,"contract":"src/permission/condition/PermissionConditionUpgradeable.sol:PermissionConditionUpgradeable","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":2821,"contract":"src/permission/condition/PermissionConditionUpgradeable.sol:PermissionConditionUpgradeable","label":"__gap","offset":0,"slot":"1","type":"t_array(t_uint256)50_storage"}],"types":{"t_array(t_uint256)50_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[50]","numberOfBytes":"1600"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"kind":"user","methods":{"isGranted(address,address,bytes32,bytes)":{"notice":"Checks if a call is permitted."},"protocolVersion()":{"notice":"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with."},"supportsInterface(bytes4)":{"notice":"Checks if an interface is supported by this or its parent contract."}},"notice":"An abstract contract for upgradeable or cloneable contracts to inherit from and to support customary permissions depending on arbitrary on-chain state.","version":1}}},"src/plugin/IPlugin.sol":{"IPlugin":{"abi":[{"inputs":[],"name":"pluginType","outputs":[{"internalType":"enum IPlugin.PluginType","name":"","type":"uint8"}],"stateMutability":"view","type":"function"}],"devdoc":{"author":"Aragon X - 2022-2023","custom:security-contact":"sirt@aragon.org","kind":"dev","methods":{},"title":"IPlugin","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"pluginType()":"41de6830"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"pluginType\",\"outputs\":[{\"internalType\":\"enum IPlugin.PluginType\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Aragon X - 2022-2023\",\"custom:security-contact\":\"sirt@aragon.org\",\"kind\":\"dev\",\"methods\":{},\"title\":\"IPlugin\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"pluginType()\":{\"notice\":\"Returns the plugin's type\"}},\"notice\":\"An interface defining the traits of a plugin.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/plugin/IPlugin.sol\":\"IPlugin\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"src/plugin/IPlugin.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IPlugin\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the traits of a plugin.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IPlugin {\\n enum PluginType {\\n UUPS,\\n Cloneable,\\n Constructable\\n }\\n\\n /// @notice Returns the plugin's type\\n function pluginType() external view returns (PluginType);\\n}\\n\",\"keccak256\":\"0xc57cd0d10b6380ab7f54c713a509e88fd8f4ad9288313a0e8e12b8887817ddfe\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{"pluginType()":{"notice":"Returns the plugin's type"}},"notice":"An interface defining the traits of a plugin.","version":1}}},"src/plugin/Plugin.sol":{"Plugin":{"abi":[{"inputs":[],"name":"dao","outputs":[{"internalType":"contract IDAO","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pluginType","outputs":[{"internalType":"enum IPlugin.PluginType","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"protocolVersion","outputs":[{"internalType":"uint8[3]","name":"","type":"uint8[3]"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"author":"Aragon X - 2022-2023","custom:security-contact":"sirt@aragon.org","kind":"dev","methods":{"constructor":{"params":{"_dao":"The DAO contract."}},"dao()":{"returns":{"_0":"The DAO contract."}},"protocolVersion()":{"details":"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.","returns":{"_0":"Returns the semantic Aragon OSx protocol version number."}},"supportsInterface(bytes4)":{"params":{"_interfaceId":"The ID of the interface."},"returns":{"_0":"Returns `true` if the interface is supported."}}},"title":"Plugin","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"dao()":"4162169f","pluginType()":"41de6830","protocolVersion()":"2ae9c600","supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"dao\",\"outputs\":[{\"internalType\":\"contract IDAO\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pluginType\",\"outputs\":[{\"internalType\":\"enum IPlugin.PluginType\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"protocolVersion\",\"outputs\":[{\"internalType\":\"uint8[3]\",\"name\":\"\",\"type\":\"uint8[3]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Aragon X - 2022-2023\",\"custom:security-contact\":\"sirt@aragon.org\",\"kind\":\"dev\",\"methods\":{\"constructor\":{\"params\":{\"_dao\":\"The DAO contract.\"}},\"dao()\":{\"returns\":{\"_0\":\"The DAO contract.\"}},\"protocolVersion()\":{\"details\":\"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\",\"returns\":{\"_0\":\"Returns the semantic Aragon OSx protocol version number.\"}},\"supportsInterface(bytes4)\":{\"params\":{\"_interfaceId\":\"The ID of the interface.\"},\"returns\":{\"_0\":\"Returns `true` if the interface is supported.\"}}},\"title\":\"Plugin\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"constructor\":{\"notice\":\"Constructs the plugin by storing the associated DAO.\"},\"dao()\":{\"notice\":\"Returns the DAO contract.\"},\"pluginType()\":{\"notice\":\"Returns the plugin's type\"},\"protocolVersion()\":{\"notice\":\"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Checks if this or the parent contract supports an interface by its ID.\"}},\"notice\":\"An abstract, non-upgradeable contract to inherit from when creating a plugin being deployed via the `new` keyword.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/plugin/Plugin.sol\":\"Plugin\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n function _contextSuffixLength() internal view virtual returns (uint256) {\\n return 0;\\n }\\n}\\n\",\"keccak256\":\"0xa92e4fa126feb6907daa0513ddd816b2eb91f30a808de54f63c17d0e162c3439\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165 is IERC165 {\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165).interfaceId;\\n }\\n}\\n\",\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"src/dao/IDAO.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IDAO\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for DAOs within the Aragon App DAO framework.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IDAO {\\n /// @notice The action struct to be consumed by the DAO's `execute` function resulting in an external call.\\n /// @param to The address to call.\\n /// @param value The native token value to be sent with the call.\\n /// @param data The bytes-encoded function selector and calldata for the call.\\n struct Action {\\n address to;\\n uint256 value;\\n bytes data;\\n }\\n\\n /// @notice Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\\n /// @param _where The address of the contract.\\n /// @param _who The address of a EOA or contract to give the permissions.\\n /// @param _permissionId The permission identifier.\\n /// @param _data The optional data passed to the `PermissionCondition` registered.\\n /// @return Returns true if the address has permission, false if not.\\n function hasPermission(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes memory _data\\n ) external view returns (bool);\\n\\n /// @notice Updates the DAO metadata (e.g., an IPFS hash).\\n /// @param _metadata The IPFS hash of the new metadata object.\\n function setMetadata(bytes calldata _metadata) external;\\n\\n /// @notice Emitted when the DAO metadata is updated.\\n /// @param metadata The IPFS hash of the new metadata object.\\n event MetadataSet(bytes metadata);\\n\\n /// @notice Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted.\\n /// @param _callId The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce.\\n /// @param _actions The array of actions.\\n /// @param _allowFailureMap A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @return The array of results obtained from the executed actions in `bytes`.\\n /// @return The resulting failure map containing the actions have actually failed.\\n function execute(\\n bytes32 _callId,\\n Action[] memory _actions,\\n uint256 _allowFailureMap\\n ) external returns (bytes[] memory, uint256);\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param actor The address of the caller.\\n /// @param callId The ID of the call.\\n /// @param actions The array of actions executed.\\n /// @param allowFailureMap The allow failure map encoding which actions are allowed to fail.\\n /// @param failureMap The failure map encoding which actions have failed.\\n /// @param execResults The array with the results of the executed actions.\\n /// @dev The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce.\\n event Executed(\\n address indexed actor,\\n bytes32 callId,\\n Action[] actions,\\n uint256 allowFailureMap,\\n uint256 failureMap,\\n bytes[] execResults\\n );\\n\\n /// @notice Emitted when a standard callback is registered.\\n /// @param interfaceId The ID of the interface.\\n /// @param callbackSelector The selector of the callback function.\\n /// @param magicNumber The magic number to be registered for the callback function selector.\\n event StandardCallbackRegistered(\\n bytes4 interfaceId,\\n bytes4 callbackSelector,\\n bytes4 magicNumber\\n );\\n\\n /// @notice Deposits (native) tokens to the DAO contract with a reference string.\\n /// @param _token The address of the token or address(0) in case of the native token.\\n /// @param _amount The amount of tokens to deposit.\\n /// @param _reference The reference describing the deposit reason.\\n function deposit(address _token, uint256 _amount, string calldata _reference) external payable;\\n\\n /// @notice Emitted when a token deposit has been made to the DAO.\\n /// @param sender The address of the sender.\\n /// @param token The address of the deposited token.\\n /// @param amount The amount of tokens deposited.\\n /// @param _reference The reference describing the deposit reason.\\n event Deposited(\\n address indexed sender,\\n address indexed token,\\n uint256 amount,\\n string _reference\\n );\\n\\n /// @notice Emitted when a native token deposit has been made to the DAO.\\n /// @dev This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).\\n /// @param sender The address of the sender.\\n /// @param amount The amount of native tokens deposited.\\n event NativeTokenDeposited(address sender, uint256 amount);\\n\\n /// @notice Setter for the trusted forwarder verifying the meta transaction.\\n /// @param _trustedForwarder The trusted forwarder address.\\n function setTrustedForwarder(address _trustedForwarder) external;\\n\\n /// @notice Getter for the trusted forwarder verifying the meta transaction.\\n /// @return The trusted forwarder address.\\n function getTrustedForwarder() external view returns (address);\\n\\n /// @notice Emitted when a new TrustedForwarder is set on the DAO.\\n /// @param forwarder the new forwarder address.\\n event TrustedForwarderSet(address forwarder);\\n\\n /// @notice Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\\n /// @param _hash The hash of the data to be signed.\\n /// @param _signature The signature byte array associated with `_hash`.\\n /// @return Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not.\\n function isValidSignature(bytes32 _hash, bytes memory _signature) external returns (bytes4);\\n\\n /// @notice Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\\n /// @param _interfaceId The ID of the interface.\\n /// @param _callbackSelector The selector of the callback function.\\n /// @param _magicNumber The magic number to be registered for the function signature.\\n function registerStandardCallback(\\n bytes4 _interfaceId,\\n bytes4 _callbackSelector,\\n bytes4 _magicNumber\\n ) external;\\n\\n /// @notice Removed function being left here to not corrupt the IDAO interface ID. Any call will revert.\\n /// @dev Introduced in v1.0.0. Removed in v1.4.0.\\n function setSignatureValidator(address) external;\\n}\\n\",\"keccak256\":\"0xb7f615523c26de042edce98731c658f44a1edb2464387ac1b642c4c69f57128e\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/DaoAuthorizable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {Context} from \\\"@openzeppelin/contracts/utils/Context.sol\\\";\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\nimport {_auth} from \\\"./auth.sol\\\";\\n\\n/// @title DaoAuthorizable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract contract providing a meta-transaction compatible modifier for non-upgradeable contracts instantiated via the `new` keyword to authorize function calls through an associated DAO.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract DaoAuthorizable is Context {\\n /// @notice The associated DAO managing the permissions of inheriting contracts.\\n IDAO private immutable DAO;\\n\\n /// @notice Constructs the contract by setting the associated DAO.\\n /// @param _dao The associated DAO address.\\n constructor(IDAO _dao) {\\n DAO = _dao;\\n }\\n\\n /// @notice Returns the DAO contract.\\n /// @return The DAO contract.\\n function dao() public view returns (IDAO) {\\n return DAO;\\n }\\n\\n /// @notice A modifier to make functions on inheriting contracts authorized. Permissions to call the function are checked through the associated DAO's permission manager.\\n /// @param _permissionId The permission identifier required to call the method this modifier is applied to.\\n modifier auth(bytes32 _permissionId) {\\n _auth(DAO, address(this), _msgSender(), _permissionId, _msgData());\\n _;\\n }\\n}\\n\",\"keccak256\":\"0x3d0be91b4f5854ed2d2c51b53fe7ffba58cc968e972015cf60eb3ea100543e64\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/auth.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice Thrown if a call is unauthorized in the associated DAO.\\n/// @param dao The associated DAO.\\n/// @param where The context in which the authorization reverted.\\n/// @param who The address (EOA or contract) missing the permission.\\n/// @param permissionId The permission identifier.\\nerror DaoUnauthorized(address dao, address where, address who, bytes32 permissionId);\\n\\n/// @notice A free function checking if a caller is granted permissions on a target contract via a permission identifier that redirects the approval to a `PermissionCondition` if this was specified in the setup.\\n/// @param _where The address of the target contract for which `who` receives permission.\\n/// @param _who The address (EOA or contract) owning the permission.\\n/// @param _permissionId The permission identifier.\\n/// @param _data The optional data passed to the `PermissionCondition` registered.\\n/// @custom:security-contact sirt@aragon.org\\nfunction _auth(\\n IDAO _dao,\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes calldata _data\\n) view {\\n if (!_dao.hasPermission(_where, _who, _permissionId, _data))\\n revert DaoUnauthorized({\\n dao: address(_dao),\\n where: _where,\\n who: _who,\\n permissionId: _permissionId\\n });\\n}\\n\",\"keccak256\":\"0x878764b4f87fe0651fb3798fb9cb87c952f8c6caf6ae79c7f09de84df6c00298\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/IPlugin.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IPlugin\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the traits of a plugin.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IPlugin {\\n enum PluginType {\\n UUPS,\\n Cloneable,\\n Constructable\\n }\\n\\n /// @notice Returns the plugin's type\\n function pluginType() external view returns (PluginType);\\n}\\n\",\"keccak256\":\"0xc57cd0d10b6380ab7f54c713a509e88fd8f4ad9288313a0e8e12b8887817ddfe\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/Plugin.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ERC165} from \\\"@openzeppelin/contracts/utils/introspection/ERC165.sol\\\";\\n\\nimport {IProtocolVersion} from \\\"../utils/versioning/IProtocolVersion.sol\\\";\\nimport {ProtocolVersion} from \\\"../utils/versioning/ProtocolVersion.sol\\\";\\nimport {DaoAuthorizable} from \\\"../permission/auth/DaoAuthorizable.sol\\\";\\nimport {IDAO} from \\\"../dao/IDAO.sol\\\";\\nimport {IPlugin} from \\\"./IPlugin.sol\\\";\\n\\n/// @title Plugin\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract, non-upgradeable contract to inherit from when creating a plugin being deployed via the `new` keyword.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract Plugin is IPlugin, ERC165, DaoAuthorizable, ProtocolVersion {\\n /// @notice Constructs the plugin by storing the associated DAO.\\n /// @param _dao The DAO contract.\\n constructor(IDAO _dao) DaoAuthorizable(_dao) {}\\n\\n /// @inheritdoc IPlugin\\n function pluginType() public pure override returns (PluginType) {\\n return PluginType.Constructable;\\n }\\n\\n /// @notice Checks if this or the parent contract supports an interface by its ID.\\n /// @param _interfaceId The ID of the interface.\\n /// @return Returns `true` if the interface is supported.\\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\\n return\\n _interfaceId == type(IPlugin).interfaceId ||\\n _interfaceId == type(IProtocolVersion).interfaceId ||\\n super.supportsInterface(_interfaceId);\\n }\\n}\\n\",\"keccak256\":\"0xdda9f39f3f06fa66dc1b0688576143db5bd0aafdb557de36563de0aa68829135\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/IProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IProtocolVersion\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the semantic Aragon OSx protocol version number.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IProtocolVersion {\\n /// @notice Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\\n /// @return _version Returns the semantic Aragon OSx protocol version number.\\n /// @dev This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\\n function protocolVersion() external view returns (uint8[3] memory _version);\\n}\\n\",\"keccak256\":\"0x00a4da654d21dc1bdadbdc8bd54bb86c378c56f85e461ccc31303628ea621361\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/ProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IProtocolVersion} from \\\"./IProtocolVersion.sol\\\";\\n\\n/// @title ProtocolVersion\\n/// @author Aragon X - 2023\\n/// @notice An abstract, stateless, non-upgradeable contract providing the current Aragon OSx protocol version number.\\n/// @dev Do not add any new variables to this contract that would shift down storage in the inheritance chain.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract ProtocolVersion is IProtocolVersion {\\n // IMPORTANT: Do not add any storage variable, see the above notice.\\n\\n /// @inheritdoc IProtocolVersion\\n function protocolVersion() public pure returns (uint8[3] memory) {\\n return [1, 4, 0];\\n }\\n}\\n\",\"keccak256\":\"0x3975c937be935f687c6b6b8f379071232681e98cf04b175d72781b819ea52bdb\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{"constructor":{"notice":"Constructs the plugin by storing the associated DAO."},"dao()":{"notice":"Returns the DAO contract."},"pluginType()":{"notice":"Returns the plugin's type"},"protocolVersion()":{"notice":"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with."},"supportsInterface(bytes4)":{"notice":"Checks if this or the parent contract supports an interface by its ID."}},"notice":"An abstract, non-upgradeable contract to inherit from when creating a plugin being deployed via the `new` keyword.","version":1}}},"src/plugin/PluginCloneable.sol":{"PluginCloneable":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"inputs":[],"name":"dao","outputs":[{"internalType":"contract IDAO","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pluginType","outputs":[{"internalType":"enum IPlugin.PluginType","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"protocolVersion","outputs":[{"internalType":"uint8[3]","name":"","type":"uint8[3]"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"author":"Aragon X - 2022-2023","custom:security-contact":"sirt@aragon.org","kind":"dev","methods":{"constructor":{"custom:oz-upgrades-unsafe-allow":"constructor"},"dao()":{"returns":{"_0":"The DAO contract."}},"protocolVersion()":{"details":"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.","returns":{"_0":"Returns the semantic Aragon OSx protocol version number."}},"supportsInterface(bytes4)":{"params":{"_interfaceId":"The ID of the interface."},"returns":{"_0":"Returns `true` if the interface is supported."}}},"title":"PluginCloneable","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"dao()":"4162169f","pluginType()":"41de6830","protocolVersion()":"2ae9c600","supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"dao\",\"outputs\":[{\"internalType\":\"contract IDAO\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pluginType\",\"outputs\":[{\"internalType\":\"enum IPlugin.PluginType\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"protocolVersion\",\"outputs\":[{\"internalType\":\"uint8[3]\",\"name\":\"\",\"type\":\"uint8[3]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Aragon X - 2022-2023\",\"custom:security-contact\":\"sirt@aragon.org\",\"kind\":\"dev\",\"methods\":{\"constructor\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor\"},\"dao()\":{\"returns\":{\"_0\":\"The DAO contract.\"}},\"protocolVersion()\":{\"details\":\"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\",\"returns\":{\"_0\":\"Returns the semantic Aragon OSx protocol version number.\"}},\"supportsInterface(bytes4)\":{\"params\":{\"_interfaceId\":\"The ID of the interface.\"},\"returns\":{\"_0\":\"Returns `true` if the interface is supported.\"}}},\"title\":\"PluginCloneable\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"constructor\":{\"notice\":\"Disables the initializers on the implementation contract to prevent it from being left uninitialized.\"},\"dao()\":{\"notice\":\"Returns the DAO contract.\"},\"pluginType()\":{\"notice\":\"Returns the plugin's type\"},\"protocolVersion()\":{\"notice\":\"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Checks if this or the parent contract supports an interface by its ID.\"}},\"notice\":\"An abstract, non-upgradeable contract to inherit from when creating a plugin being deployed via the minimal clones pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)).\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/plugin/PluginCloneable.sol\":\"PluginCloneable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n function __Context_init() internal onlyInitializing {\\n }\\n\\n function __Context_init_unchained() internal onlyInitializing {\\n }\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n function _contextSuffixLength() internal view virtual returns (uint256) {\\n return 0;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x75097e35253e7fb282ee4d7f27a80eaacfa759923185bf17302a89cbc059c5ef\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165Upgradeable.sol\\\";\\nimport {Initializable} from \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165Upgradeable is Initializable, IERC165Upgradeable {\\n function __ERC165_init() internal onlyInitializing {\\n }\\n\\n function __ERC165_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165Upgradeable).interfaceId;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0xd90d7723512df65ae417adaf0801042940f0dabd60039ceeaffe34aa5b238da1\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165Upgradeable {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\"},\"src/dao/IDAO.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IDAO\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for DAOs within the Aragon App DAO framework.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IDAO {\\n /// @notice The action struct to be consumed by the DAO's `execute` function resulting in an external call.\\n /// @param to The address to call.\\n /// @param value The native token value to be sent with the call.\\n /// @param data The bytes-encoded function selector and calldata for the call.\\n struct Action {\\n address to;\\n uint256 value;\\n bytes data;\\n }\\n\\n /// @notice Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\\n /// @param _where The address of the contract.\\n /// @param _who The address of a EOA or contract to give the permissions.\\n /// @param _permissionId The permission identifier.\\n /// @param _data The optional data passed to the `PermissionCondition` registered.\\n /// @return Returns true if the address has permission, false if not.\\n function hasPermission(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes memory _data\\n ) external view returns (bool);\\n\\n /// @notice Updates the DAO metadata (e.g., an IPFS hash).\\n /// @param _metadata The IPFS hash of the new metadata object.\\n function setMetadata(bytes calldata _metadata) external;\\n\\n /// @notice Emitted when the DAO metadata is updated.\\n /// @param metadata The IPFS hash of the new metadata object.\\n event MetadataSet(bytes metadata);\\n\\n /// @notice Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted.\\n /// @param _callId The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce.\\n /// @param _actions The array of actions.\\n /// @param _allowFailureMap A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @return The array of results obtained from the executed actions in `bytes`.\\n /// @return The resulting failure map containing the actions have actually failed.\\n function execute(\\n bytes32 _callId,\\n Action[] memory _actions,\\n uint256 _allowFailureMap\\n ) external returns (bytes[] memory, uint256);\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param actor The address of the caller.\\n /// @param callId The ID of the call.\\n /// @param actions The array of actions executed.\\n /// @param allowFailureMap The allow failure map encoding which actions are allowed to fail.\\n /// @param failureMap The failure map encoding which actions have failed.\\n /// @param execResults The array with the results of the executed actions.\\n /// @dev The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce.\\n event Executed(\\n address indexed actor,\\n bytes32 callId,\\n Action[] actions,\\n uint256 allowFailureMap,\\n uint256 failureMap,\\n bytes[] execResults\\n );\\n\\n /// @notice Emitted when a standard callback is registered.\\n /// @param interfaceId The ID of the interface.\\n /// @param callbackSelector The selector of the callback function.\\n /// @param magicNumber The magic number to be registered for the callback function selector.\\n event StandardCallbackRegistered(\\n bytes4 interfaceId,\\n bytes4 callbackSelector,\\n bytes4 magicNumber\\n );\\n\\n /// @notice Deposits (native) tokens to the DAO contract with a reference string.\\n /// @param _token The address of the token or address(0) in case of the native token.\\n /// @param _amount The amount of tokens to deposit.\\n /// @param _reference The reference describing the deposit reason.\\n function deposit(address _token, uint256 _amount, string calldata _reference) external payable;\\n\\n /// @notice Emitted when a token deposit has been made to the DAO.\\n /// @param sender The address of the sender.\\n /// @param token The address of the deposited token.\\n /// @param amount The amount of tokens deposited.\\n /// @param _reference The reference describing the deposit reason.\\n event Deposited(\\n address indexed sender,\\n address indexed token,\\n uint256 amount,\\n string _reference\\n );\\n\\n /// @notice Emitted when a native token deposit has been made to the DAO.\\n /// @dev This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).\\n /// @param sender The address of the sender.\\n /// @param amount The amount of native tokens deposited.\\n event NativeTokenDeposited(address sender, uint256 amount);\\n\\n /// @notice Setter for the trusted forwarder verifying the meta transaction.\\n /// @param _trustedForwarder The trusted forwarder address.\\n function setTrustedForwarder(address _trustedForwarder) external;\\n\\n /// @notice Getter for the trusted forwarder verifying the meta transaction.\\n /// @return The trusted forwarder address.\\n function getTrustedForwarder() external view returns (address);\\n\\n /// @notice Emitted when a new TrustedForwarder is set on the DAO.\\n /// @param forwarder the new forwarder address.\\n event TrustedForwarderSet(address forwarder);\\n\\n /// @notice Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\\n /// @param _hash The hash of the data to be signed.\\n /// @param _signature The signature byte array associated with `_hash`.\\n /// @return Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not.\\n function isValidSignature(bytes32 _hash, bytes memory _signature) external returns (bytes4);\\n\\n /// @notice Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\\n /// @param _interfaceId The ID of the interface.\\n /// @param _callbackSelector The selector of the callback function.\\n /// @param _magicNumber The magic number to be registered for the function signature.\\n function registerStandardCallback(\\n bytes4 _interfaceId,\\n bytes4 _callbackSelector,\\n bytes4 _magicNumber\\n ) external;\\n\\n /// @notice Removed function being left here to not corrupt the IDAO interface ID. Any call will revert.\\n /// @dev Introduced in v1.0.0. Removed in v1.4.0.\\n function setSignatureValidator(address) external;\\n}\\n\",\"keccak256\":\"0xb7f615523c26de042edce98731c658f44a1edb2464387ac1b642c4c69f57128e\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/DaoAuthorizableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ContextUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\\\";\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\nimport {_auth} from \\\"./auth.sol\\\";\\n\\n/// @title DaoAuthorizableUpgradeable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract contract providing a meta-transaction compatible modifier for upgradeable or cloneable contracts to authorize function calls through an associated DAO.\\n/// @dev Make sure to call `__DaoAuthorizableUpgradeable_init` during initialization of the inheriting contract.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract DaoAuthorizableUpgradeable is ContextUpgradeable {\\n /// @notice The associated DAO managing the permissions of inheriting contracts.\\n IDAO private dao_;\\n\\n /// @notice Initializes the contract by setting the associated DAO.\\n /// @param _dao The associated DAO address.\\n // solhint-disable-next-line func-name-mixedcase\\n function __DaoAuthorizableUpgradeable_init(IDAO _dao) internal onlyInitializing {\\n dao_ = _dao;\\n }\\n\\n /// @notice Returns the DAO contract.\\n /// @return The DAO contract.\\n function dao() public view returns (IDAO) {\\n return dao_;\\n }\\n\\n /// @notice A modifier to make functions on inheriting contracts authorized. Permissions to call the function are checked through the associated DAO's permission manager.\\n /// @param _permissionId The permission identifier required to call the method this modifier is applied to.\\n modifier auth(bytes32 _permissionId) {\\n _auth(dao_, address(this), _msgSender(), _permissionId, _msgData());\\n _;\\n }\\n\\n /// @notice This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain (see [OpenZeppelin's guide about storage gaps](https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps)).\\n uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0x7fac6b01b037ba1cb9d6a22d3f43b0785037dcf496ffb672434d9bf7227d2585\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/auth.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice Thrown if a call is unauthorized in the associated DAO.\\n/// @param dao The associated DAO.\\n/// @param where The context in which the authorization reverted.\\n/// @param who The address (EOA or contract) missing the permission.\\n/// @param permissionId The permission identifier.\\nerror DaoUnauthorized(address dao, address where, address who, bytes32 permissionId);\\n\\n/// @notice A free function checking if a caller is granted permissions on a target contract via a permission identifier that redirects the approval to a `PermissionCondition` if this was specified in the setup.\\n/// @param _where The address of the target contract for which `who` receives permission.\\n/// @param _who The address (EOA or contract) owning the permission.\\n/// @param _permissionId The permission identifier.\\n/// @param _data The optional data passed to the `PermissionCondition` registered.\\n/// @custom:security-contact sirt@aragon.org\\nfunction _auth(\\n IDAO _dao,\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes calldata _data\\n) view {\\n if (!_dao.hasPermission(_where, _who, _permissionId, _data))\\n revert DaoUnauthorized({\\n dao: address(_dao),\\n where: _where,\\n who: _who,\\n permissionId: _permissionId\\n });\\n}\\n\",\"keccak256\":\"0x878764b4f87fe0651fb3798fb9cb87c952f8c6caf6ae79c7f09de84df6c00298\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/IPlugin.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IPlugin\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the traits of a plugin.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IPlugin {\\n enum PluginType {\\n UUPS,\\n Cloneable,\\n Constructable\\n }\\n\\n /// @notice Returns the plugin's type\\n function pluginType() external view returns (PluginType);\\n}\\n\",\"keccak256\":\"0xc57cd0d10b6380ab7f54c713a509e88fd8f4ad9288313a0e8e12b8887817ddfe\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/PluginCloneable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ERC165Upgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\\\";\\n\\nimport {IProtocolVersion} from \\\"../utils/versioning/IProtocolVersion.sol\\\";\\nimport {ProtocolVersion} from \\\"../utils/versioning/ProtocolVersion.sol\\\";\\nimport {DaoAuthorizableUpgradeable} from \\\"../permission/auth/DaoAuthorizableUpgradeable.sol\\\";\\nimport {IDAO} from \\\"../dao/IDAO.sol\\\";\\nimport {IPlugin} from \\\"./IPlugin.sol\\\";\\n\\n/// @title PluginCloneable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract, non-upgradeable contract to inherit from when creating a plugin being deployed via the minimal clones pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)).\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract PluginCloneable is\\n IPlugin,\\n ERC165Upgradeable,\\n DaoAuthorizableUpgradeable,\\n ProtocolVersion\\n{\\n /// @notice Disables the initializers on the implementation contract to prevent it from being left uninitialized.\\n /// @custom:oz-upgrades-unsafe-allow constructor\\n constructor() {\\n _disableInitializers();\\n }\\n\\n /// @notice Initializes the plugin by storing the associated DAO.\\n /// @param _dao The DAO contract.\\n // solhint-disable-next-line func-name-mixedcase\\n function __PluginCloneable_init(IDAO _dao) internal virtual onlyInitializing {\\n __DaoAuthorizableUpgradeable_init(_dao);\\n }\\n\\n /// @inheritdoc IPlugin\\n function pluginType() public pure override returns (PluginType) {\\n return PluginType.Cloneable;\\n }\\n\\n /// @notice Checks if this or the parent contract supports an interface by its ID.\\n /// @param _interfaceId The ID of the interface.\\n /// @return Returns `true` if the interface is supported.\\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\\n return\\n _interfaceId == type(IPlugin).interfaceId ||\\n _interfaceId == type(IProtocolVersion).interfaceId ||\\n super.supportsInterface(_interfaceId);\\n }\\n}\\n\",\"keccak256\":\"0x68e260b9b370d68252f0c707461d5e4c2188a7bfed42ed9192657b36330a1f7a\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/IProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IProtocolVersion\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the semantic Aragon OSx protocol version number.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IProtocolVersion {\\n /// @notice Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\\n /// @return _version Returns the semantic Aragon OSx protocol version number.\\n /// @dev This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\\n function protocolVersion() external view returns (uint8[3] memory _version);\\n}\\n\",\"keccak256\":\"0x00a4da654d21dc1bdadbdc8bd54bb86c378c56f85e461ccc31303628ea621361\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/ProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IProtocolVersion} from \\\"./IProtocolVersion.sol\\\";\\n\\n/// @title ProtocolVersion\\n/// @author Aragon X - 2023\\n/// @notice An abstract, stateless, non-upgradeable contract providing the current Aragon OSx protocol version number.\\n/// @dev Do not add any new variables to this contract that would shift down storage in the inheritance chain.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract ProtocolVersion is IProtocolVersion {\\n // IMPORTANT: Do not add any storage variable, see the above notice.\\n\\n /// @inheritdoc IProtocolVersion\\n function protocolVersion() public pure returns (uint8[3] memory) {\\n return [1, 4, 0];\\n }\\n}\\n\",\"keccak256\":\"0x3975c937be935f687c6b6b8f379071232681e98cf04b175d72781b819ea52bdb\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[{"astId":372,"contract":"src/plugin/PluginCloneable.sol:PluginCloneable","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":375,"contract":"src/plugin/PluginCloneable.sol:PluginCloneable","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":2821,"contract":"src/plugin/PluginCloneable.sol:PluginCloneable","label":"__gap","offset":0,"slot":"1","type":"t_array(t_uint256)50_storage"},{"astId":2592,"contract":"src/plugin/PluginCloneable.sol:PluginCloneable","label":"__gap","offset":0,"slot":"51","type":"t_array(t_uint256)50_storage"},{"astId":13111,"contract":"src/plugin/PluginCloneable.sol:PluginCloneable","label":"dao_","offset":0,"slot":"101","type":"t_contract(IDAO)10865"},{"astId":13160,"contract":"src/plugin/PluginCloneable.sol:PluginCloneable","label":"__gap","offset":0,"slot":"102","type":"t_array(t_uint256)49_storage"}],"types":{"t_array(t_uint256)49_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[49]","numberOfBytes":"1568"},"t_array(t_uint256)50_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[50]","numberOfBytes":"1600"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_contract(IDAO)10865":{"encoding":"inplace","label":"contract IDAO","numberOfBytes":"20"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"kind":"user","methods":{"constructor":{"notice":"Disables the initializers on the implementation contract to prevent it from being left uninitialized."},"dao()":{"notice":"Returns the DAO contract."},"pluginType()":{"notice":"Returns the plugin's type"},"protocolVersion()":{"notice":"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with."},"supportsInterface(bytes4)":{"notice":"Checks if this or the parent contract supports an interface by its ID."}},"notice":"An abstract, non-upgradeable contract to inherit from when creating a plugin being deployed via the minimal clones pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)).","version":1}}},"src/plugin/PluginUUPSUpgradeable.sol":{"PluginUUPSUpgradeable":{"abi":[{"inputs":[{"internalType":"address","name":"dao","type":"address"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"name":"DaoUnauthorized","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"beacon","type":"address"}],"name":"BeaconUpgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"inputs":[],"name":"UPGRADE_PLUGIN_PERMISSION_ID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dao","outputs":[{"internalType":"contract IDAO","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pluginType","outputs":[{"internalType":"enum IPlugin.PluginType","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"protocolVersion","outputs":[{"internalType":"uint8[3]","name":"","type":"uint8[3]"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"}],"name":"upgradeTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"}],"devdoc":{"author":"Aragon X - 2022-2023","custom:security-contact":"sirt@aragon.org","errors":{"DaoUnauthorized(address,address,address,bytes32)":[{"params":{"dao":"The associated DAO.","permissionId":"The permission identifier.","where":"The context in which the authorization reverted.","who":"The address (EOA or contract) missing the permission."}}]},"kind":"dev","methods":{"constructor":{"custom:oz-upgrades-unsafe-allow":"constructor"},"dao()":{"returns":{"_0":"The DAO contract."}},"implementation()":{"returns":{"_0":"The address of the implementation contract."}},"protocolVersion()":{"details":"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.","returns":{"_0":"Returns the semantic Aragon OSx protocol version number."}},"proxiableUUID()":{"details":"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier."},"supportsInterface(bytes4)":{"params":{"_interfaceId":"The ID of the interface."},"returns":{"_0":"Returns `true` if the interface is supported."}},"upgradeTo(address)":{"custom:oz-upgrades-unsafe-allow-reachable":"delegatecall","details":"Upgrade the implementation of the proxy to `newImplementation`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."},"upgradeToAndCall(address,bytes)":{"custom:oz-upgrades-unsafe-allow-reachable":"delegatecall","details":"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."}},"title":"PluginUUPSUpgradeable","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"UPGRADE_PLUGIN_PERMISSION_ID()":"c9c4bfca","dao()":"4162169f","implementation()":"5c60da1b","pluginType()":"41de6830","protocolVersion()":"2ae9c600","proxiableUUID()":"52d1902d","supportsInterface(bytes4)":"01ffc9a7","upgradeTo(address)":"3659cfe6","upgradeToAndCall(address,bytes)":"4f1ef286"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"dao\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"name\":\"DaoUnauthorized\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"UPGRADE_PLUGIN_PERMISSION_ID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"dao\",\"outputs\":[{\"internalType\":\"contract IDAO\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pluginType\",\"outputs\":[{\"internalType\":\"enum IPlugin.PluginType\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"protocolVersion\",\"outputs\":[{\"internalType\":\"uint8[3]\",\"name\":\"\",\"type\":\"uint8[3]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"upgradeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Aragon X - 2022-2023\",\"custom:security-contact\":\"sirt@aragon.org\",\"errors\":{\"DaoUnauthorized(address,address,address,bytes32)\":[{\"params\":{\"dao\":\"The associated DAO.\",\"permissionId\":\"The permission identifier.\",\"where\":\"The context in which the authorization reverted.\",\"who\":\"The address (EOA or contract) missing the permission.\"}}]},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor\"},\"dao()\":{\"returns\":{\"_0\":\"The DAO contract.\"}},\"implementation()\":{\"returns\":{\"_0\":\"The address of the implementation contract.\"}},\"protocolVersion()\":{\"details\":\"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\",\"returns\":{\"_0\":\"Returns the semantic Aragon OSx protocol version number.\"}},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"supportsInterface(bytes4)\":{\"params\":{\"_interfaceId\":\"The ID of the interface.\"},\"returns\":{\"_0\":\"Returns `true` if the interface is supported.\"}},\"upgradeTo(address)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"},\"upgradeToAndCall(address,bytes)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"}},\"title\":\"PluginUUPSUpgradeable\",\"version\":1},\"userdoc\":{\"errors\":{\"DaoUnauthorized(address,address,address,bytes32)\":[{\"notice\":\"Thrown if a call is unauthorized in the associated DAO.\"}]},\"kind\":\"user\",\"methods\":{\"UPGRADE_PLUGIN_PERMISSION_ID()\":{\"notice\":\"The ID of the permission required to call the `_authorizeUpgrade` function.\"},\"constructor\":{\"notice\":\"Disables the initializers on the implementation contract to prevent it from being left uninitialized.\"},\"dao()\":{\"notice\":\"Returns the DAO contract.\"},\"implementation()\":{\"notice\":\"Returns the address of the implementation contract in the [proxy storage slot](https://eips.ethereum.org/EIPS/eip-1967) slot the [UUPS proxy](https://eips.ethereum.org/EIPS/eip-1822) is pointing to.\"},\"pluginType()\":{\"notice\":\"Returns the plugin's type\"},\"protocolVersion()\":{\"notice\":\"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Checks if an interface is supported by this or its parent contract.\"}},\"notice\":\"An abstract, upgradeable contract to inherit from when creating a plugin being deployed via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/plugin/PluginUUPSUpgradeable.sol\":\"PluginUUPSUpgradeable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/interfaces/IERC1967Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (interfaces/IERC1967.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\\n *\\n * _Available since v4.8.3._\\n */\\ninterface IERC1967Upgradeable {\\n /**\\n * @dev Emitted when the implementation is upgraded.\\n */\\n event Upgraded(address indexed implementation);\\n\\n /**\\n * @dev Emitted when the admin account has changed.\\n */\\n event AdminChanged(address previousAdmin, address newAdmin);\\n\\n /**\\n * @dev Emitted when the beacon is changed.\\n */\\n event BeaconUpgraded(address indexed beacon);\\n}\\n\",\"keccak256\":\"0x47d6e06872b12e72c79d1b5eb55842f860b5fb1207b2317c2358d2766b950a7b\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822ProxiableUpgradeable {\\n /**\\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n * address.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy.\\n */\\n function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../beacon/IBeaconUpgradeable.sol\\\";\\nimport \\\"../../interfaces/IERC1967Upgradeable.sol\\\";\\nimport \\\"../../interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\nimport \\\"../../utils/StorageSlotUpgradeable.sol\\\";\\nimport {Initializable} from \\\"../utils/Initializable.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n */\\nabstract contract ERC1967UpgradeUpgradeable is Initializable, IERC1967Upgradeable {\\n // This is the keccak-256 hash of \\\"eip1967.proxy.rollback\\\" subtracted by 1\\n bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n /**\\n * @dev Storage slot with the address of the current implementation.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n function __ERC1967Upgrade_init() internal onlyInitializing {\\n }\\n\\n function __ERC1967Upgrade_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _getImplementation() internal view returns (address) {\\n return StorageSlotUpgradeable.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 implementation slot.\\n */\\n function _setImplementation(address newImplementation) private {\\n require(AddressUpgradeable.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n StorageSlotUpgradeable.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n }\\n\\n /**\\n * @dev Perform implementation upgrade\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeTo(address newImplementation) internal {\\n _setImplementation(newImplementation);\\n emit Upgraded(newImplementation);\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCall(address newImplementation, bytes memory data, bool forceCall) internal {\\n _upgradeTo(newImplementation);\\n if (data.length > 0 || forceCall) {\\n AddressUpgradeable.functionDelegateCall(newImplementation, data);\\n }\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCallUUPS(address newImplementation, bytes memory data, bool forceCall) internal {\\n // Upgrades from old implementations will perform a rollback test. This test requires the new\\n // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n // this special case will break upgrade paths from old UUPS implementation to new ones.\\n if (StorageSlotUpgradeable.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n _setImplementation(newImplementation);\\n } else {\\n try IERC1822ProxiableUpgradeable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n require(slot == _IMPLEMENTATION_SLOT, \\\"ERC1967Upgrade: unsupported proxiableUUID\\\");\\n } catch {\\n revert(\\\"ERC1967Upgrade: new implementation is not UUPS\\\");\\n }\\n _upgradeToAndCall(newImplementation, data, forceCall);\\n }\\n }\\n\\n /**\\n * @dev Storage slot with the admin of the contract.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _getAdmin() internal view returns (address) {\\n return StorageSlotUpgradeable.getAddressSlot(_ADMIN_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 admin slot.\\n */\\n function _setAdmin(address newAdmin) private {\\n require(newAdmin != address(0), \\\"ERC1967: new admin is the zero address\\\");\\n StorageSlotUpgradeable.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n */\\n function _changeAdmin(address newAdmin) internal {\\n emit AdminChanged(_getAdmin(), newAdmin);\\n _setAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\\n */\\n bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n /**\\n * @dev Returns the current beacon.\\n */\\n function _getBeacon() internal view returns (address) {\\n return StorageSlotUpgradeable.getAddressSlot(_BEACON_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new beacon in the EIP1967 beacon slot.\\n */\\n function _setBeacon(address newBeacon) private {\\n require(AddressUpgradeable.isContract(newBeacon), \\\"ERC1967: new beacon is not a contract\\\");\\n require(\\n AddressUpgradeable.isContract(IBeaconUpgradeable(newBeacon).implementation()),\\n \\\"ERC1967: beacon implementation is not a contract\\\"\\n );\\n StorageSlotUpgradeable.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n }\\n\\n /**\\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n *\\n * Emits a {BeaconUpgraded} event.\\n */\\n function _upgradeBeaconToAndCall(address newBeacon, bytes memory data, bool forceCall) internal {\\n _setBeacon(newBeacon);\\n emit BeaconUpgraded(newBeacon);\\n if (data.length > 0 || forceCall) {\\n AddressUpgradeable.functionDelegateCall(IBeaconUpgradeable(newBeacon).implementation(), data);\\n }\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x7795808e3899c805254e3ae58074b20f799b466e3f43e057e47bedee5fb771f8\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeaconUpgradeable {\\n /**\\n * @dev Must return an address that can be used as a delegate call target.\\n *\\n * {BeaconProxy} will check that this address is a contract.\\n */\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/UUPSUpgradeable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport \\\"../ERC1967/ERC1967UpgradeUpgradeable.sol\\\";\\nimport {Initializable} from \\\"./Initializable.sol\\\";\\n\\n/**\\n * @dev An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an\\n * {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy.\\n *\\n * A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is\\n * reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing\\n * `UUPSUpgradeable` with a custom implementation of upgrades.\\n *\\n * The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism.\\n *\\n * _Available since v4.1._\\n */\\nabstract contract UUPSUpgradeable is Initializable, IERC1822ProxiableUpgradeable, ERC1967UpgradeUpgradeable {\\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable state-variable-assignment\\n address private immutable __self = address(this);\\n\\n /**\\n * @dev Check that the execution is being performed through a delegatecall call and that the execution context is\\n * a proxy contract with an implementation (as defined in ERC1967) pointing to self. This should only be the case\\n * for UUPS and transparent proxies that are using the current contract as their implementation. Execution of a\\n * function through ERC1167 minimal proxies (clones) would not normally pass this test, but is not guaranteed to\\n * fail.\\n */\\n modifier onlyProxy() {\\n require(address(this) != __self, \\\"Function must be called through delegatecall\\\");\\n require(_getImplementation() == __self, \\\"Function must be called through active proxy\\\");\\n _;\\n }\\n\\n /**\\n * @dev Check that the execution is not being performed through a delegate call. This allows a function to be\\n * callable on the implementing contract but not through proxies.\\n */\\n modifier notDelegated() {\\n require(address(this) == __self, \\\"UUPSUpgradeable: must not be called through delegatecall\\\");\\n _;\\n }\\n\\n function __UUPSUpgradeable_init() internal onlyInitializing {\\n }\\n\\n function __UUPSUpgradeable_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the\\n * implementation. It is used to validate the implementation's compatibility when performing an upgrade.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\\n */\\n function proxiableUUID() external view virtual override notDelegated returns (bytes32) {\\n return _IMPLEMENTATION_SLOT;\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy to `newImplementation`.\\n *\\n * Calls {_authorizeUpgrade}.\\n *\\n * Emits an {Upgraded} event.\\n *\\n * @custom:oz-upgrades-unsafe-allow-reachable delegatecall\\n */\\n function upgradeTo(address newImplementation) public virtual onlyProxy {\\n _authorizeUpgrade(newImplementation);\\n _upgradeToAndCallUUPS(newImplementation, new bytes(0), false);\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call\\n * encoded in `data`.\\n *\\n * Calls {_authorizeUpgrade}.\\n *\\n * Emits an {Upgraded} event.\\n *\\n * @custom:oz-upgrades-unsafe-allow-reachable delegatecall\\n */\\n function upgradeToAndCall(address newImplementation, bytes memory data) public payable virtual onlyProxy {\\n _authorizeUpgrade(newImplementation);\\n _upgradeToAndCallUUPS(newImplementation, data, true);\\n }\\n\\n /**\\n * @dev Function that should revert when `msg.sender` is not authorized to upgrade the contract. Called by\\n * {upgradeTo} and {upgradeToAndCall}.\\n *\\n * Normally, this function will use an xref:access.adoc[access control] modifier such as {Ownable-onlyOwner}.\\n *\\n * ```solidity\\n * function _authorizeUpgrade(address) internal override onlyOwner {}\\n * ```\\n */\\n function _authorizeUpgrade(address newImplementation) internal virtual;\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0xefb41f5c1a00249b7a99f0782f8c557865605426a3fb6e5fe9ae334293ae4f33\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n function __Context_init() internal onlyInitializing {\\n }\\n\\n function __Context_init_unchained() internal onlyInitializing {\\n }\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n function _contextSuffixLength() internal view virtual returns (uint256) {\\n return 0;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x75097e35253e7fb282ee4d7f27a80eaacfa759923185bf17302a89cbc059c5ef\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/StorageSlot.sol)\\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```solidity\\n * contract ERC1967 {\\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n * function _getImplementation() internal view returns (address) {\\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n * }\\n *\\n * function _setImplementation(address newImplementation) internal {\\n * require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n * }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._\\n * _Available since v4.9 for `string`, `bytes`._\\n */\\nlibrary StorageSlotUpgradeable {\\n struct AddressSlot {\\n address value;\\n }\\n\\n struct BooleanSlot {\\n bool value;\\n }\\n\\n struct Bytes32Slot {\\n bytes32 value;\\n }\\n\\n struct Uint256Slot {\\n uint256 value;\\n }\\n\\n struct StringSlot {\\n string value;\\n }\\n\\n struct BytesSlot {\\n bytes value;\\n }\\n\\n /**\\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n */\\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n */\\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n */\\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n */\\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` with member `value` located at `slot`.\\n */\\n function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\\n */\\n function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` with member `value` located at `slot`.\\n */\\n function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\\n */\\n function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n}\\n\",\"keccak256\":\"0x07ac95acad040f1fb1f6120dd0aa5f702db69446e95f82613721879d30de0908\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165Upgradeable.sol\\\";\\nimport {Initializable} from \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165Upgradeable is Initializable, IERC165Upgradeable {\\n function __ERC165_init() internal onlyInitializing {\\n }\\n\\n function __ERC165_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165Upgradeable).interfaceId;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0xd90d7723512df65ae417adaf0801042940f0dabd60039ceeaffe34aa5b238da1\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165Upgradeable {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\"},\"src/dao/IDAO.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IDAO\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for DAOs within the Aragon App DAO framework.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IDAO {\\n /// @notice The action struct to be consumed by the DAO's `execute` function resulting in an external call.\\n /// @param to The address to call.\\n /// @param value The native token value to be sent with the call.\\n /// @param data The bytes-encoded function selector and calldata for the call.\\n struct Action {\\n address to;\\n uint256 value;\\n bytes data;\\n }\\n\\n /// @notice Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\\n /// @param _where The address of the contract.\\n /// @param _who The address of a EOA or contract to give the permissions.\\n /// @param _permissionId The permission identifier.\\n /// @param _data The optional data passed to the `PermissionCondition` registered.\\n /// @return Returns true if the address has permission, false if not.\\n function hasPermission(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes memory _data\\n ) external view returns (bool);\\n\\n /// @notice Updates the DAO metadata (e.g., an IPFS hash).\\n /// @param _metadata The IPFS hash of the new metadata object.\\n function setMetadata(bytes calldata _metadata) external;\\n\\n /// @notice Emitted when the DAO metadata is updated.\\n /// @param metadata The IPFS hash of the new metadata object.\\n event MetadataSet(bytes metadata);\\n\\n /// @notice Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted.\\n /// @param _callId The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce.\\n /// @param _actions The array of actions.\\n /// @param _allowFailureMap A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @return The array of results obtained from the executed actions in `bytes`.\\n /// @return The resulting failure map containing the actions have actually failed.\\n function execute(\\n bytes32 _callId,\\n Action[] memory _actions,\\n uint256 _allowFailureMap\\n ) external returns (bytes[] memory, uint256);\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param actor The address of the caller.\\n /// @param callId The ID of the call.\\n /// @param actions The array of actions executed.\\n /// @param allowFailureMap The allow failure map encoding which actions are allowed to fail.\\n /// @param failureMap The failure map encoding which actions have failed.\\n /// @param execResults The array with the results of the executed actions.\\n /// @dev The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce.\\n event Executed(\\n address indexed actor,\\n bytes32 callId,\\n Action[] actions,\\n uint256 allowFailureMap,\\n uint256 failureMap,\\n bytes[] execResults\\n );\\n\\n /// @notice Emitted when a standard callback is registered.\\n /// @param interfaceId The ID of the interface.\\n /// @param callbackSelector The selector of the callback function.\\n /// @param magicNumber The magic number to be registered for the callback function selector.\\n event StandardCallbackRegistered(\\n bytes4 interfaceId,\\n bytes4 callbackSelector,\\n bytes4 magicNumber\\n );\\n\\n /// @notice Deposits (native) tokens to the DAO contract with a reference string.\\n /// @param _token The address of the token or address(0) in case of the native token.\\n /// @param _amount The amount of tokens to deposit.\\n /// @param _reference The reference describing the deposit reason.\\n function deposit(address _token, uint256 _amount, string calldata _reference) external payable;\\n\\n /// @notice Emitted when a token deposit has been made to the DAO.\\n /// @param sender The address of the sender.\\n /// @param token The address of the deposited token.\\n /// @param amount The amount of tokens deposited.\\n /// @param _reference The reference describing the deposit reason.\\n event Deposited(\\n address indexed sender,\\n address indexed token,\\n uint256 amount,\\n string _reference\\n );\\n\\n /// @notice Emitted when a native token deposit has been made to the DAO.\\n /// @dev This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).\\n /// @param sender The address of the sender.\\n /// @param amount The amount of native tokens deposited.\\n event NativeTokenDeposited(address sender, uint256 amount);\\n\\n /// @notice Setter for the trusted forwarder verifying the meta transaction.\\n /// @param _trustedForwarder The trusted forwarder address.\\n function setTrustedForwarder(address _trustedForwarder) external;\\n\\n /// @notice Getter for the trusted forwarder verifying the meta transaction.\\n /// @return The trusted forwarder address.\\n function getTrustedForwarder() external view returns (address);\\n\\n /// @notice Emitted when a new TrustedForwarder is set on the DAO.\\n /// @param forwarder the new forwarder address.\\n event TrustedForwarderSet(address forwarder);\\n\\n /// @notice Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\\n /// @param _hash The hash of the data to be signed.\\n /// @param _signature The signature byte array associated with `_hash`.\\n /// @return Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not.\\n function isValidSignature(bytes32 _hash, bytes memory _signature) external returns (bytes4);\\n\\n /// @notice Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\\n /// @param _interfaceId The ID of the interface.\\n /// @param _callbackSelector The selector of the callback function.\\n /// @param _magicNumber The magic number to be registered for the function signature.\\n function registerStandardCallback(\\n bytes4 _interfaceId,\\n bytes4 _callbackSelector,\\n bytes4 _magicNumber\\n ) external;\\n\\n /// @notice Removed function being left here to not corrupt the IDAO interface ID. Any call will revert.\\n /// @dev Introduced in v1.0.0. Removed in v1.4.0.\\n function setSignatureValidator(address) external;\\n}\\n\",\"keccak256\":\"0xb7f615523c26de042edce98731c658f44a1edb2464387ac1b642c4c69f57128e\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/DaoAuthorizableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ContextUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\\\";\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\nimport {_auth} from \\\"./auth.sol\\\";\\n\\n/// @title DaoAuthorizableUpgradeable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract contract providing a meta-transaction compatible modifier for upgradeable or cloneable contracts to authorize function calls through an associated DAO.\\n/// @dev Make sure to call `__DaoAuthorizableUpgradeable_init` during initialization of the inheriting contract.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract DaoAuthorizableUpgradeable is ContextUpgradeable {\\n /// @notice The associated DAO managing the permissions of inheriting contracts.\\n IDAO private dao_;\\n\\n /// @notice Initializes the contract by setting the associated DAO.\\n /// @param _dao The associated DAO address.\\n // solhint-disable-next-line func-name-mixedcase\\n function __DaoAuthorizableUpgradeable_init(IDAO _dao) internal onlyInitializing {\\n dao_ = _dao;\\n }\\n\\n /// @notice Returns the DAO contract.\\n /// @return The DAO contract.\\n function dao() public view returns (IDAO) {\\n return dao_;\\n }\\n\\n /// @notice A modifier to make functions on inheriting contracts authorized. Permissions to call the function are checked through the associated DAO's permission manager.\\n /// @param _permissionId The permission identifier required to call the method this modifier is applied to.\\n modifier auth(bytes32 _permissionId) {\\n _auth(dao_, address(this), _msgSender(), _permissionId, _msgData());\\n _;\\n }\\n\\n /// @notice This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain (see [OpenZeppelin's guide about storage gaps](https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps)).\\n uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0x7fac6b01b037ba1cb9d6a22d3f43b0785037dcf496ffb672434d9bf7227d2585\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/auth.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice Thrown if a call is unauthorized in the associated DAO.\\n/// @param dao The associated DAO.\\n/// @param where The context in which the authorization reverted.\\n/// @param who The address (EOA or contract) missing the permission.\\n/// @param permissionId The permission identifier.\\nerror DaoUnauthorized(address dao, address where, address who, bytes32 permissionId);\\n\\n/// @notice A free function checking if a caller is granted permissions on a target contract via a permission identifier that redirects the approval to a `PermissionCondition` if this was specified in the setup.\\n/// @param _where The address of the target contract for which `who` receives permission.\\n/// @param _who The address (EOA or contract) owning the permission.\\n/// @param _permissionId The permission identifier.\\n/// @param _data The optional data passed to the `PermissionCondition` registered.\\n/// @custom:security-contact sirt@aragon.org\\nfunction _auth(\\n IDAO _dao,\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes calldata _data\\n) view {\\n if (!_dao.hasPermission(_where, _who, _permissionId, _data))\\n revert DaoUnauthorized({\\n dao: address(_dao),\\n where: _where,\\n who: _who,\\n permissionId: _permissionId\\n });\\n}\\n\",\"keccak256\":\"0x878764b4f87fe0651fb3798fb9cb87c952f8c6caf6ae79c7f09de84df6c00298\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/IPlugin.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IPlugin\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the traits of a plugin.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IPlugin {\\n enum PluginType {\\n UUPS,\\n Cloneable,\\n Constructable\\n }\\n\\n /// @notice Returns the plugin's type\\n function pluginType() external view returns (PluginType);\\n}\\n\",\"keccak256\":\"0xc57cd0d10b6380ab7f54c713a509e88fd8f4ad9288313a0e8e12b8887817ddfe\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/PluginUUPSUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {UUPSUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\\\";\\nimport {IERC1822ProxiableUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport {ERC165Upgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\\\";\\n\\nimport {IProtocolVersion} from \\\"../utils/versioning/IProtocolVersion.sol\\\";\\nimport {ProtocolVersion} from \\\"../utils/versioning/ProtocolVersion.sol\\\";\\nimport {DaoAuthorizableUpgradeable} from \\\"../permission/auth/DaoAuthorizableUpgradeable.sol\\\";\\nimport {IDAO} from \\\"../dao/IDAO.sol\\\";\\nimport {IPlugin} from \\\"./IPlugin.sol\\\";\\n\\n/// @title PluginUUPSUpgradeable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract, upgradeable contract to inherit from when creating a plugin being deployed via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract PluginUUPSUpgradeable is\\n IPlugin,\\n ERC165Upgradeable,\\n UUPSUpgradeable,\\n DaoAuthorizableUpgradeable,\\n ProtocolVersion\\n{\\n // NOTE: When adding new state variables to the contract, the size of `_gap` has to be adapted below as well.\\n\\n /// @notice Disables the initializers on the implementation contract to prevent it from being left uninitialized.\\n /// @custom:oz-upgrades-unsafe-allow constructor\\n constructor() {\\n _disableInitializers();\\n }\\n\\n /// @inheritdoc IPlugin\\n function pluginType() public pure override returns (PluginType) {\\n return PluginType.UUPS;\\n }\\n\\n /// @notice The ID of the permission required to call the `_authorizeUpgrade` function.\\n bytes32 public constant UPGRADE_PLUGIN_PERMISSION_ID = keccak256(\\\"UPGRADE_PLUGIN_PERMISSION\\\");\\n\\n /// @notice Initializes the plugin by storing the associated DAO.\\n /// @param _dao The DAO contract.\\n // solhint-disable-next-line func-name-mixedcase\\n function __PluginUUPSUpgradeable_init(IDAO _dao) internal virtual onlyInitializing {\\n __DaoAuthorizableUpgradeable_init(_dao);\\n }\\n\\n /// @notice Checks if an interface is supported by this or its parent contract.\\n /// @param _interfaceId The ID of the interface.\\n /// @return Returns `true` if the interface is supported.\\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\\n return\\n _interfaceId == type(IPlugin).interfaceId ||\\n _interfaceId == type(IProtocolVersion).interfaceId ||\\n _interfaceId == type(IERC1822ProxiableUpgradeable).interfaceId ||\\n super.supportsInterface(_interfaceId);\\n }\\n\\n /// @notice Returns the address of the implementation contract in the [proxy storage slot](https://eips.ethereum.org/EIPS/eip-1967) slot the [UUPS proxy](https://eips.ethereum.org/EIPS/eip-1822) is pointing to.\\n /// @return The address of the implementation contract.\\n function implementation() public view returns (address) {\\n return _getImplementation();\\n }\\n\\n /// @notice Internal method authorizing the upgrade of the contract via the [upgradeability mechanism for UUPS proxies](https://docs.openzeppelin.com/contracts/4.x/api/proxy#UUPSUpgradeable) (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\\n /// @dev The caller must have the `UPGRADE_PLUGIN_PERMISSION_ID` permission.\\n function _authorizeUpgrade(\\n address\\n )\\n internal\\n virtual\\n override\\n auth(UPGRADE_PLUGIN_PERMISSION_ID)\\n // solhint-disable-next-line no-empty-blocks\\n {\\n\\n }\\n\\n /// @notice This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain (see [OpenZeppelin's guide about storage gaps](https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps)).\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x127e7c4f839cb8c8486070990b78e22313f1ff089ffe6a4ff23ae358e48f0037\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/IProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IProtocolVersion\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the semantic Aragon OSx protocol version number.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IProtocolVersion {\\n /// @notice Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\\n /// @return _version Returns the semantic Aragon OSx protocol version number.\\n /// @dev This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\\n function protocolVersion() external view returns (uint8[3] memory _version);\\n}\\n\",\"keccak256\":\"0x00a4da654d21dc1bdadbdc8bd54bb86c378c56f85e461ccc31303628ea621361\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/ProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IProtocolVersion} from \\\"./IProtocolVersion.sol\\\";\\n\\n/// @title ProtocolVersion\\n/// @author Aragon X - 2023\\n/// @notice An abstract, stateless, non-upgradeable contract providing the current Aragon OSx protocol version number.\\n/// @dev Do not add any new variables to this contract that would shift down storage in the inheritance chain.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract ProtocolVersion is IProtocolVersion {\\n // IMPORTANT: Do not add any storage variable, see the above notice.\\n\\n /// @inheritdoc IProtocolVersion\\n function protocolVersion() public pure returns (uint8[3] memory) {\\n return [1, 4, 0];\\n }\\n}\\n\",\"keccak256\":\"0x3975c937be935f687c6b6b8f379071232681e98cf04b175d72781b819ea52bdb\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[{"astId":372,"contract":"src/plugin/PluginUUPSUpgradeable.sol:PluginUUPSUpgradeable","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":375,"contract":"src/plugin/PluginUUPSUpgradeable.sol:PluginUUPSUpgradeable","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":2821,"contract":"src/plugin/PluginUUPSUpgradeable.sol:PluginUUPSUpgradeable","label":"__gap","offset":0,"slot":"1","type":"t_array(t_uint256)50_storage"},{"astId":354,"contract":"src/plugin/PluginUUPSUpgradeable.sol:PluginUUPSUpgradeable","label":"__gap","offset":0,"slot":"51","type":"t_array(t_uint256)50_storage"},{"astId":670,"contract":"src/plugin/PluginUUPSUpgradeable.sol:PluginUUPSUpgradeable","label":"__gap","offset":0,"slot":"101","type":"t_array(t_uint256)50_storage"},{"astId":2592,"contract":"src/plugin/PluginUUPSUpgradeable.sol:PluginUUPSUpgradeable","label":"__gap","offset":0,"slot":"151","type":"t_array(t_uint256)50_storage"},{"astId":13111,"contract":"src/plugin/PluginUUPSUpgradeable.sol:PluginUUPSUpgradeable","label":"dao_","offset":0,"slot":"201","type":"t_contract(IDAO)10865"},{"astId":13160,"contract":"src/plugin/PluginUUPSUpgradeable.sol:PluginUUPSUpgradeable","label":"__gap","offset":0,"slot":"202","type":"t_array(t_uint256)49_storage"},{"astId":13632,"contract":"src/plugin/PluginUUPSUpgradeable.sol:PluginUUPSUpgradeable","label":"__gap","offset":0,"slot":"251","type":"t_array(t_uint256)50_storage"}],"types":{"t_array(t_uint256)49_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[49]","numberOfBytes":"1568"},"t_array(t_uint256)50_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[50]","numberOfBytes":"1600"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_contract(IDAO)10865":{"encoding":"inplace","label":"contract IDAO","numberOfBytes":"20"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"errors":{"DaoUnauthorized(address,address,address,bytes32)":[{"notice":"Thrown if a call is unauthorized in the associated DAO."}]},"kind":"user","methods":{"UPGRADE_PLUGIN_PERMISSION_ID()":{"notice":"The ID of the permission required to call the `_authorizeUpgrade` function."},"constructor":{"notice":"Disables the initializers on the implementation contract to prevent it from being left uninitialized."},"dao()":{"notice":"Returns the DAO contract."},"implementation()":{"notice":"Returns the address of the implementation contract in the [proxy storage slot](https://eips.ethereum.org/EIPS/eip-1967) slot the [UUPS proxy](https://eips.ethereum.org/EIPS/eip-1822) is pointing to."},"pluginType()":{"notice":"Returns the plugin's type"},"protocolVersion()":{"notice":"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with."},"supportsInterface(bytes4)":{"notice":"Checks if an interface is supported by this or its parent contract."}},"notice":"An abstract, upgradeable contract to inherit from when creating a plugin being deployed via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).","version":1}}},"src/plugin/extensions/governance/Addresslist.sol":{"Addresslist":{"abi":[{"inputs":[{"internalType":"address","name":"member","type":"address"}],"name":"InvalidAddresslistUpdate","type":"error"},{"inputs":[],"name":"addresslistLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_blockNumber","type":"uint256"}],"name":"addresslistLengthAtBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"isListed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_blockNumber","type":"uint256"}],"name":"isListedAtBlock","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"author":"Aragon X - 2021-2023","custom:security-contact":"sirt@aragon.org","details":"This contract inherits from `MajorityVotingBase` and implements the `IMajorityVoting` interface.","errors":{"InvalidAddresslistUpdate(address)":[{"params":{"member":"The array of member addresses to be added or removed."}}]},"kind":"dev","methods":{"addresslistLength()":{"returns":{"_0":"The current address list length."}},"addresslistLengthAtBlock(uint256)":{"params":{"_blockNumber":"The specific block to get the count from. If `0`, then the latest checkpoint value is returned."},"returns":{"_0":"The address list length at the specified block number."}},"isListed(address)":{"params":{"_account":"The account address being checked."},"returns":{"_0":"Whether the account is currently listed."}},"isListedAtBlock(address,uint256)":{"params":{"_account":"The account address being checked.","_blockNumber":"The block number."},"returns":{"_0":"Whether the account is listed at the specified block number."}}},"stateVariables":{"__gap":{"details":"This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain. https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"}},"title":"Addresslist","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"addresslistLength()":"27f1608d","addresslistLengthAtBlock(uint256)":"6a6b2d86","isListed(address)":"f794062e","isListedAtBlock(address,uint256)":"b1bb8d26"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"member\",\"type\":\"address\"}],\"name\":\"InvalidAddresslistUpdate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"addresslistLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_blockNumber\",\"type\":\"uint256\"}],\"name\":\"addresslistLengthAtBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"isListed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_blockNumber\",\"type\":\"uint256\"}],\"name\":\"isListedAtBlock\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Aragon X - 2021-2023\",\"custom:security-contact\":\"sirt@aragon.org\",\"details\":\"This contract inherits from `MajorityVotingBase` and implements the `IMajorityVoting` interface.\",\"errors\":{\"InvalidAddresslistUpdate(address)\":[{\"params\":{\"member\":\"The array of member addresses to be added or removed.\"}}]},\"kind\":\"dev\",\"methods\":{\"addresslistLength()\":{\"returns\":{\"_0\":\"The current address list length.\"}},\"addresslistLengthAtBlock(uint256)\":{\"params\":{\"_blockNumber\":\"The specific block to get the count from. If `0`, then the latest checkpoint value is returned.\"},\"returns\":{\"_0\":\"The address list length at the specified block number.\"}},\"isListed(address)\":{\"params\":{\"_account\":\"The account address being checked.\"},\"returns\":{\"_0\":\"Whether the account is currently listed.\"}},\"isListedAtBlock(address,uint256)\":{\"params\":{\"_account\":\"The account address being checked.\",\"_blockNumber\":\"The block number.\"},\"returns\":{\"_0\":\"Whether the account is listed at the specified block number.\"}}},\"stateVariables\":{\"__gap\":{\"details\":\"This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain. https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\"}},\"title\":\"Addresslist\",\"version\":1},\"userdoc\":{\"errors\":{\"InvalidAddresslistUpdate(address)\":[{\"notice\":\"Thrown when the address list update is invalid, which can be caused by the addition of an existing member or removal of a non-existing member.\"}]},\"kind\":\"user\",\"methods\":{\"addresslistLength()\":{\"notice\":\"Returns the current length of the address list.\"},\"addresslistLengthAtBlock(uint256)\":{\"notice\":\"Returns the length of the address list at a specific block number.\"},\"isListed(address)\":{\"notice\":\"Checks if an account is currently on the address list.\"},\"isListedAtBlock(address,uint256)\":{\"notice\":\"Checks if an account is on the address list at a specific block number.\"}},\"notice\":\"The majority voting implementation using a list of member addresses.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/plugin/extensions/governance/Addresslist.sol\":\"Addresslist\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/utils/CheckpointsUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Checkpoints.sol)\\n// This file was procedurally generated from scripts/generate/templates/Checkpoints.js.\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./math/MathUpgradeable.sol\\\";\\nimport \\\"./math/SafeCastUpgradeable.sol\\\";\\n\\n/**\\n * @dev This library defines the `History` struct, for checkpointing values as they change at different points in\\n * time, and later looking up past values by block number. See {Votes} as an example.\\n *\\n * To create a history of checkpoints define a variable type `Checkpoints.History` in your contract, and store a new\\n * checkpoint for the current transaction block using the {push} function.\\n *\\n * _Available since v4.5._\\n */\\nlibrary CheckpointsUpgradeable {\\n struct History {\\n Checkpoint[] _checkpoints;\\n }\\n\\n struct Checkpoint {\\n uint32 _blockNumber;\\n uint224 _value;\\n }\\n\\n /**\\n * @dev Returns the value at a given block number. If a checkpoint is not available at that block, the closest one\\n * before it is returned, or zero otherwise. Because the number returned corresponds to that at the end of the\\n * block, the requested block number must be in the past, excluding the current block.\\n */\\n function getAtBlock(History storage self, uint256 blockNumber) internal view returns (uint256) {\\n require(blockNumber < block.number, \\\"Checkpoints: block not yet mined\\\");\\n uint32 key = SafeCastUpgradeable.toUint32(blockNumber);\\n\\n uint256 len = self._checkpoints.length;\\n uint256 pos = _upperBinaryLookup(self._checkpoints, key, 0, len);\\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\\n }\\n\\n /**\\n * @dev Returns the value at a given block number. If a checkpoint is not available at that block, the closest one\\n * before it is returned, or zero otherwise. Similar to {upperLookup} but optimized for the case when the searched\\n * checkpoint is probably \\\"recent\\\", defined as being among the last sqrt(N) checkpoints where N is the number of\\n * checkpoints.\\n */\\n function getAtProbablyRecentBlock(History storage self, uint256 blockNumber) internal view returns (uint256) {\\n require(blockNumber < block.number, \\\"Checkpoints: block not yet mined\\\");\\n uint32 key = SafeCastUpgradeable.toUint32(blockNumber);\\n\\n uint256 len = self._checkpoints.length;\\n\\n uint256 low = 0;\\n uint256 high = len;\\n\\n if (len > 5) {\\n uint256 mid = len - MathUpgradeable.sqrt(len);\\n if (key < _unsafeAccess(self._checkpoints, mid)._blockNumber) {\\n high = mid;\\n } else {\\n low = mid + 1;\\n }\\n }\\n\\n uint256 pos = _upperBinaryLookup(self._checkpoints, key, low, high);\\n\\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\\n }\\n\\n /**\\n * @dev Pushes a value onto a History so that it is stored as the checkpoint for the current block.\\n *\\n * Returns previous value and new value.\\n */\\n function push(History storage self, uint256 value) internal returns (uint256, uint256) {\\n return _insert(self._checkpoints, SafeCastUpgradeable.toUint32(block.number), SafeCastUpgradeable.toUint224(value));\\n }\\n\\n /**\\n * @dev Pushes a value onto a History, by updating the latest value using binary operation `op`. The new value will\\n * be set to `op(latest, delta)`.\\n *\\n * Returns previous value and new value.\\n */\\n function push(\\n History storage self,\\n function(uint256, uint256) view returns (uint256) op,\\n uint256 delta\\n ) internal returns (uint256, uint256) {\\n return push(self, op(latest(self), delta));\\n }\\n\\n /**\\n * @dev Returns the value in the most recent checkpoint, or zero if there are no checkpoints.\\n */\\n function latest(History storage self) internal view returns (uint224) {\\n uint256 pos = self._checkpoints.length;\\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\\n }\\n\\n /**\\n * @dev Returns whether there is a checkpoint in the structure (i.e. it is not empty), and if so the key and value\\n * in the most recent checkpoint.\\n */\\n function latestCheckpoint(\\n History storage self\\n ) internal view returns (bool exists, uint32 _blockNumber, uint224 _value) {\\n uint256 pos = self._checkpoints.length;\\n if (pos == 0) {\\n return (false, 0, 0);\\n } else {\\n Checkpoint memory ckpt = _unsafeAccess(self._checkpoints, pos - 1);\\n return (true, ckpt._blockNumber, ckpt._value);\\n }\\n }\\n\\n /**\\n * @dev Returns the number of checkpoint.\\n */\\n function length(History storage self) internal view returns (uint256) {\\n return self._checkpoints.length;\\n }\\n\\n /**\\n * @dev Pushes a (`key`, `value`) pair into an ordered list of checkpoints, either by inserting a new checkpoint,\\n * or by updating the last one.\\n */\\n function _insert(Checkpoint[] storage self, uint32 key, uint224 value) private returns (uint224, uint224) {\\n uint256 pos = self.length;\\n\\n if (pos > 0) {\\n // Copying to memory is important here.\\n Checkpoint memory last = _unsafeAccess(self, pos - 1);\\n\\n // Checkpoint keys must be non-decreasing.\\n require(last._blockNumber <= key, \\\"Checkpoint: decreasing keys\\\");\\n\\n // Update or push new checkpoint\\n if (last._blockNumber == key) {\\n _unsafeAccess(self, pos - 1)._value = value;\\n } else {\\n self.push(Checkpoint({_blockNumber: key, _value: value}));\\n }\\n return (last._value, value);\\n } else {\\n self.push(Checkpoint({_blockNumber: key, _value: value}));\\n return (0, value);\\n }\\n }\\n\\n /**\\n * @dev Return the index of the last (most recent) checkpoint with key lower or equal than the search key, or `high` if there is none.\\n * `low` and `high` define a section where to do the search, with inclusive `low` and exclusive `high`.\\n *\\n * WARNING: `high` should not be greater than the array's length.\\n */\\n function _upperBinaryLookup(\\n Checkpoint[] storage self,\\n uint32 key,\\n uint256 low,\\n uint256 high\\n ) private view returns (uint256) {\\n while (low < high) {\\n uint256 mid = MathUpgradeable.average(low, high);\\n if (_unsafeAccess(self, mid)._blockNumber > key) {\\n high = mid;\\n } else {\\n low = mid + 1;\\n }\\n }\\n return high;\\n }\\n\\n /**\\n * @dev Return the index of the first (oldest) checkpoint with key is greater or equal than the search key, or `high` if there is none.\\n * `low` and `high` define a section where to do the search, with inclusive `low` and exclusive `high`.\\n *\\n * WARNING: `high` should not be greater than the array's length.\\n */\\n function _lowerBinaryLookup(\\n Checkpoint[] storage self,\\n uint32 key,\\n uint256 low,\\n uint256 high\\n ) private view returns (uint256) {\\n while (low < high) {\\n uint256 mid = MathUpgradeable.average(low, high);\\n if (_unsafeAccess(self, mid)._blockNumber < key) {\\n low = mid + 1;\\n } else {\\n high = mid;\\n }\\n }\\n return high;\\n }\\n\\n /**\\n * @dev Access an element of the array without performing bounds check. The position is assumed to be within bounds.\\n */\\n function _unsafeAccess(Checkpoint[] storage self, uint256 pos) private pure returns (Checkpoint storage result) {\\n assembly {\\n mstore(0, self.slot)\\n result.slot := add(keccak256(0, 0x20), pos)\\n }\\n }\\n\\n struct Trace224 {\\n Checkpoint224[] _checkpoints;\\n }\\n\\n struct Checkpoint224 {\\n uint32 _key;\\n uint224 _value;\\n }\\n\\n /**\\n * @dev Pushes a (`key`, `value`) pair into a Trace224 so that it is stored as the checkpoint.\\n *\\n * Returns previous value and new value.\\n */\\n function push(Trace224 storage self, uint32 key, uint224 value) internal returns (uint224, uint224) {\\n return _insert(self._checkpoints, key, value);\\n }\\n\\n /**\\n * @dev Returns the value in the first (oldest) checkpoint with key greater or equal than the search key, or zero if there is none.\\n */\\n function lowerLookup(Trace224 storage self, uint32 key) internal view returns (uint224) {\\n uint256 len = self._checkpoints.length;\\n uint256 pos = _lowerBinaryLookup(self._checkpoints, key, 0, len);\\n return pos == len ? 0 : _unsafeAccess(self._checkpoints, pos)._value;\\n }\\n\\n /**\\n * @dev Returns the value in the last (most recent) checkpoint with key lower or equal than the search key, or zero if there is none.\\n */\\n function upperLookup(Trace224 storage self, uint32 key) internal view returns (uint224) {\\n uint256 len = self._checkpoints.length;\\n uint256 pos = _upperBinaryLookup(self._checkpoints, key, 0, len);\\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\\n }\\n\\n /**\\n * @dev Returns the value in the last (most recent) checkpoint with key lower or equal than the search key, or zero if there is none.\\n *\\n * NOTE: This is a variant of {upperLookup} that is optimised to find \\\"recent\\\" checkpoint (checkpoints with high keys).\\n */\\n function upperLookupRecent(Trace224 storage self, uint32 key) internal view returns (uint224) {\\n uint256 len = self._checkpoints.length;\\n\\n uint256 low = 0;\\n uint256 high = len;\\n\\n if (len > 5) {\\n uint256 mid = len - MathUpgradeable.sqrt(len);\\n if (key < _unsafeAccess(self._checkpoints, mid)._key) {\\n high = mid;\\n } else {\\n low = mid + 1;\\n }\\n }\\n\\n uint256 pos = _upperBinaryLookup(self._checkpoints, key, low, high);\\n\\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\\n }\\n\\n /**\\n * @dev Returns the value in the most recent checkpoint, or zero if there are no checkpoints.\\n */\\n function latest(Trace224 storage self) internal view returns (uint224) {\\n uint256 pos = self._checkpoints.length;\\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\\n }\\n\\n /**\\n * @dev Returns whether there is a checkpoint in the structure (i.e. it is not empty), and if so the key and value\\n * in the most recent checkpoint.\\n */\\n function latestCheckpoint(Trace224 storage self) internal view returns (bool exists, uint32 _key, uint224 _value) {\\n uint256 pos = self._checkpoints.length;\\n if (pos == 0) {\\n return (false, 0, 0);\\n } else {\\n Checkpoint224 memory ckpt = _unsafeAccess(self._checkpoints, pos - 1);\\n return (true, ckpt._key, ckpt._value);\\n }\\n }\\n\\n /**\\n * @dev Returns the number of checkpoint.\\n */\\n function length(Trace224 storage self) internal view returns (uint256) {\\n return self._checkpoints.length;\\n }\\n\\n /**\\n * @dev Pushes a (`key`, `value`) pair into an ordered list of checkpoints, either by inserting a new checkpoint,\\n * or by updating the last one.\\n */\\n function _insert(Checkpoint224[] storage self, uint32 key, uint224 value) private returns (uint224, uint224) {\\n uint256 pos = self.length;\\n\\n if (pos > 0) {\\n // Copying to memory is important here.\\n Checkpoint224 memory last = _unsafeAccess(self, pos - 1);\\n\\n // Checkpoint keys must be non-decreasing.\\n require(last._key <= key, \\\"Checkpoint: decreasing keys\\\");\\n\\n // Update or push new checkpoint\\n if (last._key == key) {\\n _unsafeAccess(self, pos - 1)._value = value;\\n } else {\\n self.push(Checkpoint224({_key: key, _value: value}));\\n }\\n return (last._value, value);\\n } else {\\n self.push(Checkpoint224({_key: key, _value: value}));\\n return (0, value);\\n }\\n }\\n\\n /**\\n * @dev Return the index of the last (most recent) checkpoint with key lower or equal than the search key, or `high` if there is none.\\n * `low` and `high` define a section where to do the search, with inclusive `low` and exclusive `high`.\\n *\\n * WARNING: `high` should not be greater than the array's length.\\n */\\n function _upperBinaryLookup(\\n Checkpoint224[] storage self,\\n uint32 key,\\n uint256 low,\\n uint256 high\\n ) private view returns (uint256) {\\n while (low < high) {\\n uint256 mid = MathUpgradeable.average(low, high);\\n if (_unsafeAccess(self, mid)._key > key) {\\n high = mid;\\n } else {\\n low = mid + 1;\\n }\\n }\\n return high;\\n }\\n\\n /**\\n * @dev Return the index of the first (oldest) checkpoint with key is greater or equal than the search key, or `high` if there is none.\\n * `low` and `high` define a section where to do the search, with inclusive `low` and exclusive `high`.\\n *\\n * WARNING: `high` should not be greater than the array's length.\\n */\\n function _lowerBinaryLookup(\\n Checkpoint224[] storage self,\\n uint32 key,\\n uint256 low,\\n uint256 high\\n ) private view returns (uint256) {\\n while (low < high) {\\n uint256 mid = MathUpgradeable.average(low, high);\\n if (_unsafeAccess(self, mid)._key < key) {\\n low = mid + 1;\\n } else {\\n high = mid;\\n }\\n }\\n return high;\\n }\\n\\n /**\\n * @dev Access an element of the array without performing bounds check. The position is assumed to be within bounds.\\n */\\n function _unsafeAccess(\\n Checkpoint224[] storage self,\\n uint256 pos\\n ) private pure returns (Checkpoint224 storage result) {\\n assembly {\\n mstore(0, self.slot)\\n result.slot := add(keccak256(0, 0x20), pos)\\n }\\n }\\n\\n struct Trace160 {\\n Checkpoint160[] _checkpoints;\\n }\\n\\n struct Checkpoint160 {\\n uint96 _key;\\n uint160 _value;\\n }\\n\\n /**\\n * @dev Pushes a (`key`, `value`) pair into a Trace160 so that it is stored as the checkpoint.\\n *\\n * Returns previous value and new value.\\n */\\n function push(Trace160 storage self, uint96 key, uint160 value) internal returns (uint160, uint160) {\\n return _insert(self._checkpoints, key, value);\\n }\\n\\n /**\\n * @dev Returns the value in the first (oldest) checkpoint with key greater or equal than the search key, or zero if there is none.\\n */\\n function lowerLookup(Trace160 storage self, uint96 key) internal view returns (uint160) {\\n uint256 len = self._checkpoints.length;\\n uint256 pos = _lowerBinaryLookup(self._checkpoints, key, 0, len);\\n return pos == len ? 0 : _unsafeAccess(self._checkpoints, pos)._value;\\n }\\n\\n /**\\n * @dev Returns the value in the last (most recent) checkpoint with key lower or equal than the search key, or zero if there is none.\\n */\\n function upperLookup(Trace160 storage self, uint96 key) internal view returns (uint160) {\\n uint256 len = self._checkpoints.length;\\n uint256 pos = _upperBinaryLookup(self._checkpoints, key, 0, len);\\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\\n }\\n\\n /**\\n * @dev Returns the value in the last (most recent) checkpoint with key lower or equal than the search key, or zero if there is none.\\n *\\n * NOTE: This is a variant of {upperLookup} that is optimised to find \\\"recent\\\" checkpoint (checkpoints with high keys).\\n */\\n function upperLookupRecent(Trace160 storage self, uint96 key) internal view returns (uint160) {\\n uint256 len = self._checkpoints.length;\\n\\n uint256 low = 0;\\n uint256 high = len;\\n\\n if (len > 5) {\\n uint256 mid = len - MathUpgradeable.sqrt(len);\\n if (key < _unsafeAccess(self._checkpoints, mid)._key) {\\n high = mid;\\n } else {\\n low = mid + 1;\\n }\\n }\\n\\n uint256 pos = _upperBinaryLookup(self._checkpoints, key, low, high);\\n\\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\\n }\\n\\n /**\\n * @dev Returns the value in the most recent checkpoint, or zero if there are no checkpoints.\\n */\\n function latest(Trace160 storage self) internal view returns (uint160) {\\n uint256 pos = self._checkpoints.length;\\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\\n }\\n\\n /**\\n * @dev Returns whether there is a checkpoint in the structure (i.e. it is not empty), and if so the key and value\\n * in the most recent checkpoint.\\n */\\n function latestCheckpoint(Trace160 storage self) internal view returns (bool exists, uint96 _key, uint160 _value) {\\n uint256 pos = self._checkpoints.length;\\n if (pos == 0) {\\n return (false, 0, 0);\\n } else {\\n Checkpoint160 memory ckpt = _unsafeAccess(self._checkpoints, pos - 1);\\n return (true, ckpt._key, ckpt._value);\\n }\\n }\\n\\n /**\\n * @dev Returns the number of checkpoint.\\n */\\n function length(Trace160 storage self) internal view returns (uint256) {\\n return self._checkpoints.length;\\n }\\n\\n /**\\n * @dev Pushes a (`key`, `value`) pair into an ordered list of checkpoints, either by inserting a new checkpoint,\\n * or by updating the last one.\\n */\\n function _insert(Checkpoint160[] storage self, uint96 key, uint160 value) private returns (uint160, uint160) {\\n uint256 pos = self.length;\\n\\n if (pos > 0) {\\n // Copying to memory is important here.\\n Checkpoint160 memory last = _unsafeAccess(self, pos - 1);\\n\\n // Checkpoint keys must be non-decreasing.\\n require(last._key <= key, \\\"Checkpoint: decreasing keys\\\");\\n\\n // Update or push new checkpoint\\n if (last._key == key) {\\n _unsafeAccess(self, pos - 1)._value = value;\\n } else {\\n self.push(Checkpoint160({_key: key, _value: value}));\\n }\\n return (last._value, value);\\n } else {\\n self.push(Checkpoint160({_key: key, _value: value}));\\n return (0, value);\\n }\\n }\\n\\n /**\\n * @dev Return the index of the last (most recent) checkpoint with key lower or equal than the search key, or `high` if there is none.\\n * `low` and `high` define a section where to do the search, with inclusive `low` and exclusive `high`.\\n *\\n * WARNING: `high` should not be greater than the array's length.\\n */\\n function _upperBinaryLookup(\\n Checkpoint160[] storage self,\\n uint96 key,\\n uint256 low,\\n uint256 high\\n ) private view returns (uint256) {\\n while (low < high) {\\n uint256 mid = MathUpgradeable.average(low, high);\\n if (_unsafeAccess(self, mid)._key > key) {\\n high = mid;\\n } else {\\n low = mid + 1;\\n }\\n }\\n return high;\\n }\\n\\n /**\\n * @dev Return the index of the first (oldest) checkpoint with key is greater or equal than the search key, or `high` if there is none.\\n * `low` and `high` define a section where to do the search, with inclusive `low` and exclusive `high`.\\n *\\n * WARNING: `high` should not be greater than the array's length.\\n */\\n function _lowerBinaryLookup(\\n Checkpoint160[] storage self,\\n uint96 key,\\n uint256 low,\\n uint256 high\\n ) private view returns (uint256) {\\n while (low < high) {\\n uint256 mid = MathUpgradeable.average(low, high);\\n if (_unsafeAccess(self, mid)._key < key) {\\n low = mid + 1;\\n } else {\\n high = mid;\\n }\\n }\\n return high;\\n }\\n\\n /**\\n * @dev Access an element of the array without performing bounds check. The position is assumed to be within bounds.\\n */\\n function _unsafeAccess(\\n Checkpoint160[] storage self,\\n uint256 pos\\n ) private pure returns (Checkpoint160 storage result) {\\n assembly {\\n mstore(0, self.slot)\\n result.slot := add(keccak256(0, 0x20), pos)\\n }\\n }\\n}\\n\",\"keccak256\":\"0x51ea916844ee2c53874c6895ce37acbca0250977b49b48909d75ad439f38f211\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/math/MathUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/math/Math.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard math utilities missing in the Solidity language.\\n */\\nlibrary MathUpgradeable {\\n enum Rounding {\\n Down, // Toward negative infinity\\n Up, // Toward infinity\\n Zero // Toward zero\\n }\\n\\n /**\\n * @dev Returns the largest of two numbers.\\n */\\n function max(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two numbers.\\n */\\n function min(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two numbers. The result is rounded towards\\n * zero.\\n */\\n function average(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b) / 2 can overflow.\\n return (a & b) + (a ^ b) / 2;\\n }\\n\\n /**\\n * @dev Returns the ceiling of the division of two numbers.\\n *\\n * This differs from standard division with `/` in that it rounds up instead\\n * of rounding down.\\n */\\n function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b - 1) / b can overflow on addition, so we distribute.\\n return a == 0 ? 0 : (a - 1) / b + 1;\\n }\\n\\n /**\\n * @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\\n * @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)\\n * with further edits by Uniswap Labs also under MIT license.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator) internal pure returns (uint256 result) {\\n unchecked {\\n // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use\\n // use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\\n // variables such that product = prod1 * 2^256 + prod0.\\n uint256 prod0; // Least significant 256 bits of the product\\n uint256 prod1; // Most significant 256 bits of the product\\n assembly {\\n let mm := mulmod(x, y, not(0))\\n prod0 := mul(x, y)\\n prod1 := sub(sub(mm, prod0), lt(mm, prod0))\\n }\\n\\n // Handle non-overflow cases, 256 by 256 division.\\n if (prod1 == 0) {\\n // Solidity will revert if denominator == 0, unlike the div opcode on its own.\\n // The surrounding unchecked block does not change this fact.\\n // See https://docs.soliditylang.org/en/latest/control-structures.html#checked-or-unchecked-arithmetic.\\n return prod0 / denominator;\\n }\\n\\n // Make sure the result is less than 2^256. Also prevents denominator == 0.\\n require(denominator > prod1, \\\"Math: mulDiv overflow\\\");\\n\\n ///////////////////////////////////////////////\\n // 512 by 256 division.\\n ///////////////////////////////////////////////\\n\\n // Make division exact by subtracting the remainder from [prod1 prod0].\\n uint256 remainder;\\n assembly {\\n // Compute remainder using mulmod.\\n remainder := mulmod(x, y, denominator)\\n\\n // Subtract 256 bit number from 512 bit number.\\n prod1 := sub(prod1, gt(remainder, prod0))\\n prod0 := sub(prod0, remainder)\\n }\\n\\n // Factor powers of two out of denominator and compute largest power of two divisor of denominator. Always >= 1.\\n // See https://cs.stackexchange.com/q/138556/92363.\\n\\n // Does not overflow because the denominator cannot be zero at this stage in the function.\\n uint256 twos = denominator & (~denominator + 1);\\n assembly {\\n // Divide denominator by twos.\\n denominator := div(denominator, twos)\\n\\n // Divide [prod1 prod0] by twos.\\n prod0 := div(prod0, twos)\\n\\n // Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one.\\n twos := add(div(sub(0, twos), twos), 1)\\n }\\n\\n // Shift in bits from prod1 into prod0.\\n prod0 |= prod1 * twos;\\n\\n // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such\\n // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for\\n // four bits. That is, denominator * inv = 1 mod 2^4.\\n uint256 inverse = (3 * denominator) ^ 2;\\n\\n // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also works\\n // in modular arithmetic, doubling the correct bits in each step.\\n inverse *= 2 - denominator * inverse; // inverse mod 2^8\\n inverse *= 2 - denominator * inverse; // inverse mod 2^16\\n inverse *= 2 - denominator * inverse; // inverse mod 2^32\\n inverse *= 2 - denominator * inverse; // inverse mod 2^64\\n inverse *= 2 - denominator * inverse; // inverse mod 2^128\\n inverse *= 2 - denominator * inverse; // inverse mod 2^256\\n\\n // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\\n // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is\\n // less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1\\n // is no longer required.\\n result = prod0 * inverse;\\n return result;\\n }\\n }\\n\\n /**\\n * @notice Calculates x * y / denominator with full precision, following the selected rounding direction.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator, Rounding rounding) internal pure returns (uint256) {\\n uint256 result = mulDiv(x, y, denominator);\\n if (rounding == Rounding.Up && mulmod(x, y, denominator) > 0) {\\n result += 1;\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down.\\n *\\n * Inspired by Henry S. Warren, Jr.'s \\\"Hacker's Delight\\\" (Chapter 11).\\n */\\n function sqrt(uint256 a) internal pure returns (uint256) {\\n if (a == 0) {\\n return 0;\\n }\\n\\n // For our first guess, we get the biggest power of 2 which is smaller than the square root of the target.\\n //\\n // We know that the \\\"msb\\\" (most significant bit) of our target number `a` is a power of 2 such that we have\\n // `msb(a) <= a < 2*msb(a)`. This value can be written `msb(a)=2**k` with `k=log2(a)`.\\n //\\n // This can be rewritten `2**log2(a) <= a < 2**(log2(a) + 1)`\\n // \\u2192 `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))`\\n // \\u2192 `2**(k/2) <= sqrt(a) < 2**((k+1)/2) <= 2**(k/2 + 1)`\\n //\\n // Consequently, `2**(log2(a) / 2)` is a good first approximation of `sqrt(a)` with at least 1 correct bit.\\n uint256 result = 1 << (log2(a) >> 1);\\n\\n // At this point `result` is an estimation with one bit of precision. We know the true value is a uint128,\\n // since it is the square root of a uint256. Newton's method converges quadratically (precision doubles at\\n // every iteration). We thus need at most 7 iteration to turn our partial result with one bit of precision\\n // into the expected uint128 result.\\n unchecked {\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n return min(result, a / result);\\n }\\n }\\n\\n /**\\n * @notice Calculates sqrt(a), following the selected rounding direction.\\n */\\n function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = sqrt(a);\\n return result + (rounding == Rounding.Up && result * result < a ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 2, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 128;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 64;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 32;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 16;\\n }\\n if (value >> 8 > 0) {\\n value >>= 8;\\n result += 8;\\n }\\n if (value >> 4 > 0) {\\n value >>= 4;\\n result += 4;\\n }\\n if (value >> 2 > 0) {\\n value >>= 2;\\n result += 2;\\n }\\n if (value >> 1 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 2, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log2(value);\\n return result + (rounding == Rounding.Up && 1 << result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 10, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >= 10 ** 64) {\\n value /= 10 ** 64;\\n result += 64;\\n }\\n if (value >= 10 ** 32) {\\n value /= 10 ** 32;\\n result += 32;\\n }\\n if (value >= 10 ** 16) {\\n value /= 10 ** 16;\\n result += 16;\\n }\\n if (value >= 10 ** 8) {\\n value /= 10 ** 8;\\n result += 8;\\n }\\n if (value >= 10 ** 4) {\\n value /= 10 ** 4;\\n result += 4;\\n }\\n if (value >= 10 ** 2) {\\n value /= 10 ** 2;\\n result += 2;\\n }\\n if (value >= 10 ** 1) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log10(value);\\n return result + (rounding == Rounding.Up && 10 ** result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 256, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n *\\n * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.\\n */\\n function log256(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 16;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 8;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 4;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 2;\\n }\\n if (value >> 8 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 256, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log256(value);\\n return result + (rounding == Rounding.Up && 1 << (result << 3) < value ? 1 : 0);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x2bc0007987c229ae7624eb29be6a9b84f6a6a5872f76248b15208b131ea41c4e\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/SafeCast.sol)\\n// This file was procedurally generated from scripts/generate/templates/SafeCast.js.\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Wrappers over Solidity's uintXX/intXX casting operators with added overflow\\n * checks.\\n *\\n * Downcasting from uint256/int256 in Solidity does not revert on overflow. This can\\n * easily result in undesired exploitation or bugs, since developers usually\\n * assume that overflows raise errors. `SafeCast` restores this intuition by\\n * reverting the transaction when such an operation overflows.\\n *\\n * Using this library instead of the unchecked operations eliminates an entire\\n * class of bugs, so it's recommended to use it always.\\n *\\n * Can be combined with {SafeMath} and {SignedSafeMath} to extend it to smaller types, by performing\\n * all math on `uint256` and `int256` and then downcasting.\\n */\\nlibrary SafeCastUpgradeable {\\n /**\\n * @dev Returns the downcasted uint248 from uint256, reverting on\\n * overflow (when the input is greater than largest uint248).\\n *\\n * Counterpart to Solidity's `uint248` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 248 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint248(uint256 value) internal pure returns (uint248) {\\n require(value <= type(uint248).max, \\\"SafeCast: value doesn't fit in 248 bits\\\");\\n return uint248(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint240 from uint256, reverting on\\n * overflow (when the input is greater than largest uint240).\\n *\\n * Counterpart to Solidity's `uint240` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 240 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint240(uint256 value) internal pure returns (uint240) {\\n require(value <= type(uint240).max, \\\"SafeCast: value doesn't fit in 240 bits\\\");\\n return uint240(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint232 from uint256, reverting on\\n * overflow (when the input is greater than largest uint232).\\n *\\n * Counterpart to Solidity's `uint232` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 232 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint232(uint256 value) internal pure returns (uint232) {\\n require(value <= type(uint232).max, \\\"SafeCast: value doesn't fit in 232 bits\\\");\\n return uint232(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint224 from uint256, reverting on\\n * overflow (when the input is greater than largest uint224).\\n *\\n * Counterpart to Solidity's `uint224` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 224 bits\\n *\\n * _Available since v4.2._\\n */\\n function toUint224(uint256 value) internal pure returns (uint224) {\\n require(value <= type(uint224).max, \\\"SafeCast: value doesn't fit in 224 bits\\\");\\n return uint224(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint216 from uint256, reverting on\\n * overflow (when the input is greater than largest uint216).\\n *\\n * Counterpart to Solidity's `uint216` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 216 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint216(uint256 value) internal pure returns (uint216) {\\n require(value <= type(uint216).max, \\\"SafeCast: value doesn't fit in 216 bits\\\");\\n return uint216(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint208 from uint256, reverting on\\n * overflow (when the input is greater than largest uint208).\\n *\\n * Counterpart to Solidity's `uint208` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 208 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint208(uint256 value) internal pure returns (uint208) {\\n require(value <= type(uint208).max, \\\"SafeCast: value doesn't fit in 208 bits\\\");\\n return uint208(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint200 from uint256, reverting on\\n * overflow (when the input is greater than largest uint200).\\n *\\n * Counterpart to Solidity's `uint200` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 200 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint200(uint256 value) internal pure returns (uint200) {\\n require(value <= type(uint200).max, \\\"SafeCast: value doesn't fit in 200 bits\\\");\\n return uint200(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint192 from uint256, reverting on\\n * overflow (when the input is greater than largest uint192).\\n *\\n * Counterpart to Solidity's `uint192` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 192 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint192(uint256 value) internal pure returns (uint192) {\\n require(value <= type(uint192).max, \\\"SafeCast: value doesn't fit in 192 bits\\\");\\n return uint192(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint184 from uint256, reverting on\\n * overflow (when the input is greater than largest uint184).\\n *\\n * Counterpart to Solidity's `uint184` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 184 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint184(uint256 value) internal pure returns (uint184) {\\n require(value <= type(uint184).max, \\\"SafeCast: value doesn't fit in 184 bits\\\");\\n return uint184(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint176 from uint256, reverting on\\n * overflow (when the input is greater than largest uint176).\\n *\\n * Counterpart to Solidity's `uint176` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 176 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint176(uint256 value) internal pure returns (uint176) {\\n require(value <= type(uint176).max, \\\"SafeCast: value doesn't fit in 176 bits\\\");\\n return uint176(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint168 from uint256, reverting on\\n * overflow (when the input is greater than largest uint168).\\n *\\n * Counterpart to Solidity's `uint168` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 168 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint168(uint256 value) internal pure returns (uint168) {\\n require(value <= type(uint168).max, \\\"SafeCast: value doesn't fit in 168 bits\\\");\\n return uint168(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint160 from uint256, reverting on\\n * overflow (when the input is greater than largest uint160).\\n *\\n * Counterpart to Solidity's `uint160` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 160 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint160(uint256 value) internal pure returns (uint160) {\\n require(value <= type(uint160).max, \\\"SafeCast: value doesn't fit in 160 bits\\\");\\n return uint160(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint152 from uint256, reverting on\\n * overflow (when the input is greater than largest uint152).\\n *\\n * Counterpart to Solidity's `uint152` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 152 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint152(uint256 value) internal pure returns (uint152) {\\n require(value <= type(uint152).max, \\\"SafeCast: value doesn't fit in 152 bits\\\");\\n return uint152(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint144 from uint256, reverting on\\n * overflow (when the input is greater than largest uint144).\\n *\\n * Counterpart to Solidity's `uint144` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 144 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint144(uint256 value) internal pure returns (uint144) {\\n require(value <= type(uint144).max, \\\"SafeCast: value doesn't fit in 144 bits\\\");\\n return uint144(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint136 from uint256, reverting on\\n * overflow (when the input is greater than largest uint136).\\n *\\n * Counterpart to Solidity's `uint136` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 136 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint136(uint256 value) internal pure returns (uint136) {\\n require(value <= type(uint136).max, \\\"SafeCast: value doesn't fit in 136 bits\\\");\\n return uint136(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint128 from uint256, reverting on\\n * overflow (when the input is greater than largest uint128).\\n *\\n * Counterpart to Solidity's `uint128` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 128 bits\\n *\\n * _Available since v2.5._\\n */\\n function toUint128(uint256 value) internal pure returns (uint128) {\\n require(value <= type(uint128).max, \\\"SafeCast: value doesn't fit in 128 bits\\\");\\n return uint128(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint120 from uint256, reverting on\\n * overflow (when the input is greater than largest uint120).\\n *\\n * Counterpart to Solidity's `uint120` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 120 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint120(uint256 value) internal pure returns (uint120) {\\n require(value <= type(uint120).max, \\\"SafeCast: value doesn't fit in 120 bits\\\");\\n return uint120(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint112 from uint256, reverting on\\n * overflow (when the input is greater than largest uint112).\\n *\\n * Counterpart to Solidity's `uint112` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 112 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint112(uint256 value) internal pure returns (uint112) {\\n require(value <= type(uint112).max, \\\"SafeCast: value doesn't fit in 112 bits\\\");\\n return uint112(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint104 from uint256, reverting on\\n * overflow (when the input is greater than largest uint104).\\n *\\n * Counterpart to Solidity's `uint104` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 104 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint104(uint256 value) internal pure returns (uint104) {\\n require(value <= type(uint104).max, \\\"SafeCast: value doesn't fit in 104 bits\\\");\\n return uint104(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint96 from uint256, reverting on\\n * overflow (when the input is greater than largest uint96).\\n *\\n * Counterpart to Solidity's `uint96` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 96 bits\\n *\\n * _Available since v4.2._\\n */\\n function toUint96(uint256 value) internal pure returns (uint96) {\\n require(value <= type(uint96).max, \\\"SafeCast: value doesn't fit in 96 bits\\\");\\n return uint96(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint88 from uint256, reverting on\\n * overflow (when the input is greater than largest uint88).\\n *\\n * Counterpart to Solidity's `uint88` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 88 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint88(uint256 value) internal pure returns (uint88) {\\n require(value <= type(uint88).max, \\\"SafeCast: value doesn't fit in 88 bits\\\");\\n return uint88(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint80 from uint256, reverting on\\n * overflow (when the input is greater than largest uint80).\\n *\\n * Counterpart to Solidity's `uint80` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 80 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint80(uint256 value) internal pure returns (uint80) {\\n require(value <= type(uint80).max, \\\"SafeCast: value doesn't fit in 80 bits\\\");\\n return uint80(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint72 from uint256, reverting on\\n * overflow (when the input is greater than largest uint72).\\n *\\n * Counterpart to Solidity's `uint72` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 72 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint72(uint256 value) internal pure returns (uint72) {\\n require(value <= type(uint72).max, \\\"SafeCast: value doesn't fit in 72 bits\\\");\\n return uint72(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint64 from uint256, reverting on\\n * overflow (when the input is greater than largest uint64).\\n *\\n * Counterpart to Solidity's `uint64` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 64 bits\\n *\\n * _Available since v2.5._\\n */\\n function toUint64(uint256 value) internal pure returns (uint64) {\\n require(value <= type(uint64).max, \\\"SafeCast: value doesn't fit in 64 bits\\\");\\n return uint64(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint56 from uint256, reverting on\\n * overflow (when the input is greater than largest uint56).\\n *\\n * Counterpart to Solidity's `uint56` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 56 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint56(uint256 value) internal pure returns (uint56) {\\n require(value <= type(uint56).max, \\\"SafeCast: value doesn't fit in 56 bits\\\");\\n return uint56(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint48 from uint256, reverting on\\n * overflow (when the input is greater than largest uint48).\\n *\\n * Counterpart to Solidity's `uint48` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 48 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint48(uint256 value) internal pure returns (uint48) {\\n require(value <= type(uint48).max, \\\"SafeCast: value doesn't fit in 48 bits\\\");\\n return uint48(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint40 from uint256, reverting on\\n * overflow (when the input is greater than largest uint40).\\n *\\n * Counterpart to Solidity's `uint40` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 40 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint40(uint256 value) internal pure returns (uint40) {\\n require(value <= type(uint40).max, \\\"SafeCast: value doesn't fit in 40 bits\\\");\\n return uint40(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint32 from uint256, reverting on\\n * overflow (when the input is greater than largest uint32).\\n *\\n * Counterpart to Solidity's `uint32` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 32 bits\\n *\\n * _Available since v2.5._\\n */\\n function toUint32(uint256 value) internal pure returns (uint32) {\\n require(value <= type(uint32).max, \\\"SafeCast: value doesn't fit in 32 bits\\\");\\n return uint32(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint24 from uint256, reverting on\\n * overflow (when the input is greater than largest uint24).\\n *\\n * Counterpart to Solidity's `uint24` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 24 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint24(uint256 value) internal pure returns (uint24) {\\n require(value <= type(uint24).max, \\\"SafeCast: value doesn't fit in 24 bits\\\");\\n return uint24(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint16 from uint256, reverting on\\n * overflow (when the input is greater than largest uint16).\\n *\\n * Counterpart to Solidity's `uint16` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 16 bits\\n *\\n * _Available since v2.5._\\n */\\n function toUint16(uint256 value) internal pure returns (uint16) {\\n require(value <= type(uint16).max, \\\"SafeCast: value doesn't fit in 16 bits\\\");\\n return uint16(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint8 from uint256, reverting on\\n * overflow (when the input is greater than largest uint8).\\n *\\n * Counterpart to Solidity's `uint8` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 8 bits\\n *\\n * _Available since v2.5._\\n */\\n function toUint8(uint256 value) internal pure returns (uint8) {\\n require(value <= type(uint8).max, \\\"SafeCast: value doesn't fit in 8 bits\\\");\\n return uint8(value);\\n }\\n\\n /**\\n * @dev Converts a signed int256 into an unsigned uint256.\\n *\\n * Requirements:\\n *\\n * - input must be greater than or equal to 0.\\n *\\n * _Available since v3.0._\\n */\\n function toUint256(int256 value) internal pure returns (uint256) {\\n require(value >= 0, \\\"SafeCast: value must be positive\\\");\\n return uint256(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted int248 from int256, reverting on\\n * overflow (when the input is less than smallest int248 or\\n * greater than largest int248).\\n *\\n * Counterpart to Solidity's `int248` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 248 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt248(int256 value) internal pure returns (int248 downcasted) {\\n downcasted = int248(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 248 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int240 from int256, reverting on\\n * overflow (when the input is less than smallest int240 or\\n * greater than largest int240).\\n *\\n * Counterpart to Solidity's `int240` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 240 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt240(int256 value) internal pure returns (int240 downcasted) {\\n downcasted = int240(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 240 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int232 from int256, reverting on\\n * overflow (when the input is less than smallest int232 or\\n * greater than largest int232).\\n *\\n * Counterpart to Solidity's `int232` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 232 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt232(int256 value) internal pure returns (int232 downcasted) {\\n downcasted = int232(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 232 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int224 from int256, reverting on\\n * overflow (when the input is less than smallest int224 or\\n * greater than largest int224).\\n *\\n * Counterpart to Solidity's `int224` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 224 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt224(int256 value) internal pure returns (int224 downcasted) {\\n downcasted = int224(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 224 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int216 from int256, reverting on\\n * overflow (when the input is less than smallest int216 or\\n * greater than largest int216).\\n *\\n * Counterpart to Solidity's `int216` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 216 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt216(int256 value) internal pure returns (int216 downcasted) {\\n downcasted = int216(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 216 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int208 from int256, reverting on\\n * overflow (when the input is less than smallest int208 or\\n * greater than largest int208).\\n *\\n * Counterpart to Solidity's `int208` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 208 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt208(int256 value) internal pure returns (int208 downcasted) {\\n downcasted = int208(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 208 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int200 from int256, reverting on\\n * overflow (when the input is less than smallest int200 or\\n * greater than largest int200).\\n *\\n * Counterpart to Solidity's `int200` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 200 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt200(int256 value) internal pure returns (int200 downcasted) {\\n downcasted = int200(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 200 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int192 from int256, reverting on\\n * overflow (when the input is less than smallest int192 or\\n * greater than largest int192).\\n *\\n * Counterpart to Solidity's `int192` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 192 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt192(int256 value) internal pure returns (int192 downcasted) {\\n downcasted = int192(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 192 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int184 from int256, reverting on\\n * overflow (when the input is less than smallest int184 or\\n * greater than largest int184).\\n *\\n * Counterpart to Solidity's `int184` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 184 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt184(int256 value) internal pure returns (int184 downcasted) {\\n downcasted = int184(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 184 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int176 from int256, reverting on\\n * overflow (when the input is less than smallest int176 or\\n * greater than largest int176).\\n *\\n * Counterpart to Solidity's `int176` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 176 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt176(int256 value) internal pure returns (int176 downcasted) {\\n downcasted = int176(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 176 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int168 from int256, reverting on\\n * overflow (when the input is less than smallest int168 or\\n * greater than largest int168).\\n *\\n * Counterpart to Solidity's `int168` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 168 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt168(int256 value) internal pure returns (int168 downcasted) {\\n downcasted = int168(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 168 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int160 from int256, reverting on\\n * overflow (when the input is less than smallest int160 or\\n * greater than largest int160).\\n *\\n * Counterpart to Solidity's `int160` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 160 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt160(int256 value) internal pure returns (int160 downcasted) {\\n downcasted = int160(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 160 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int152 from int256, reverting on\\n * overflow (when the input is less than smallest int152 or\\n * greater than largest int152).\\n *\\n * Counterpart to Solidity's `int152` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 152 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt152(int256 value) internal pure returns (int152 downcasted) {\\n downcasted = int152(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 152 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int144 from int256, reverting on\\n * overflow (when the input is less than smallest int144 or\\n * greater than largest int144).\\n *\\n * Counterpart to Solidity's `int144` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 144 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt144(int256 value) internal pure returns (int144 downcasted) {\\n downcasted = int144(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 144 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int136 from int256, reverting on\\n * overflow (when the input is less than smallest int136 or\\n * greater than largest int136).\\n *\\n * Counterpart to Solidity's `int136` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 136 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt136(int256 value) internal pure returns (int136 downcasted) {\\n downcasted = int136(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 136 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int128 from int256, reverting on\\n * overflow (when the input is less than smallest int128 or\\n * greater than largest int128).\\n *\\n * Counterpart to Solidity's `int128` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 128 bits\\n *\\n * _Available since v3.1._\\n */\\n function toInt128(int256 value) internal pure returns (int128 downcasted) {\\n downcasted = int128(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 128 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int120 from int256, reverting on\\n * overflow (when the input is less than smallest int120 or\\n * greater than largest int120).\\n *\\n * Counterpart to Solidity's `int120` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 120 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt120(int256 value) internal pure returns (int120 downcasted) {\\n downcasted = int120(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 120 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int112 from int256, reverting on\\n * overflow (when the input is less than smallest int112 or\\n * greater than largest int112).\\n *\\n * Counterpart to Solidity's `int112` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 112 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt112(int256 value) internal pure returns (int112 downcasted) {\\n downcasted = int112(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 112 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int104 from int256, reverting on\\n * overflow (when the input is less than smallest int104 or\\n * greater than largest int104).\\n *\\n * Counterpart to Solidity's `int104` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 104 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt104(int256 value) internal pure returns (int104 downcasted) {\\n downcasted = int104(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 104 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int96 from int256, reverting on\\n * overflow (when the input is less than smallest int96 or\\n * greater than largest int96).\\n *\\n * Counterpart to Solidity's `int96` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 96 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt96(int256 value) internal pure returns (int96 downcasted) {\\n downcasted = int96(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 96 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int88 from int256, reverting on\\n * overflow (when the input is less than smallest int88 or\\n * greater than largest int88).\\n *\\n * Counterpart to Solidity's `int88` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 88 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt88(int256 value) internal pure returns (int88 downcasted) {\\n downcasted = int88(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 88 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int80 from int256, reverting on\\n * overflow (when the input is less than smallest int80 or\\n * greater than largest int80).\\n *\\n * Counterpart to Solidity's `int80` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 80 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt80(int256 value) internal pure returns (int80 downcasted) {\\n downcasted = int80(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 80 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int72 from int256, reverting on\\n * overflow (when the input is less than smallest int72 or\\n * greater than largest int72).\\n *\\n * Counterpart to Solidity's `int72` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 72 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt72(int256 value) internal pure returns (int72 downcasted) {\\n downcasted = int72(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 72 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int64 from int256, reverting on\\n * overflow (when the input is less than smallest int64 or\\n * greater than largest int64).\\n *\\n * Counterpart to Solidity's `int64` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 64 bits\\n *\\n * _Available since v3.1._\\n */\\n function toInt64(int256 value) internal pure returns (int64 downcasted) {\\n downcasted = int64(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 64 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int56 from int256, reverting on\\n * overflow (when the input is less than smallest int56 or\\n * greater than largest int56).\\n *\\n * Counterpart to Solidity's `int56` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 56 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt56(int256 value) internal pure returns (int56 downcasted) {\\n downcasted = int56(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 56 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int48 from int256, reverting on\\n * overflow (when the input is less than smallest int48 or\\n * greater than largest int48).\\n *\\n * Counterpart to Solidity's `int48` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 48 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt48(int256 value) internal pure returns (int48 downcasted) {\\n downcasted = int48(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 48 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int40 from int256, reverting on\\n * overflow (when the input is less than smallest int40 or\\n * greater than largest int40).\\n *\\n * Counterpart to Solidity's `int40` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 40 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt40(int256 value) internal pure returns (int40 downcasted) {\\n downcasted = int40(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 40 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int32 from int256, reverting on\\n * overflow (when the input is less than smallest int32 or\\n * greater than largest int32).\\n *\\n * Counterpart to Solidity's `int32` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 32 bits\\n *\\n * _Available since v3.1._\\n */\\n function toInt32(int256 value) internal pure returns (int32 downcasted) {\\n downcasted = int32(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 32 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int24 from int256, reverting on\\n * overflow (when the input is less than smallest int24 or\\n * greater than largest int24).\\n *\\n * Counterpart to Solidity's `int24` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 24 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt24(int256 value) internal pure returns (int24 downcasted) {\\n downcasted = int24(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 24 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int16 from int256, reverting on\\n * overflow (when the input is less than smallest int16 or\\n * greater than largest int16).\\n *\\n * Counterpart to Solidity's `int16` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 16 bits\\n *\\n * _Available since v3.1._\\n */\\n function toInt16(int256 value) internal pure returns (int16 downcasted) {\\n downcasted = int16(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 16 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int8 from int256, reverting on\\n * overflow (when the input is less than smallest int8 or\\n * greater than largest int8).\\n *\\n * Counterpart to Solidity's `int8` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 8 bits\\n *\\n * _Available since v3.1._\\n */\\n function toInt8(int256 value) internal pure returns (int8 downcasted) {\\n downcasted = int8(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 8 bits\\\");\\n }\\n\\n /**\\n * @dev Converts an unsigned uint256 into a signed int256.\\n *\\n * Requirements:\\n *\\n * - input must be less than or equal to maxInt256.\\n *\\n * _Available since v3.0._\\n */\\n function toInt256(uint256 value) internal pure returns (int256) {\\n // Note: Unsafe cast below is okay because `type(int256).max` is guaranteed to be positive\\n require(value <= uint256(type(int256).max), \\\"SafeCast: value doesn't fit in an int256\\\");\\n return int256(value);\\n }\\n}\\n\",\"keccak256\":\"0xcef50f95b43b038aa40aed25b62fc45906c681a5c1d504a4fdcf3bc6330a8d4b\",\"license\":\"MIT\"},\"src/plugin/extensions/governance/Addresslist.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {CheckpointsUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/CheckpointsUpgradeable.sol\\\";\\n\\nimport {_uncheckedAdd, _uncheckedSub} from \\\"../../../utils/math/UncheckedMath.sol\\\";\\n\\n/// @title Addresslist\\n/// @author Aragon X - 2021-2023\\n/// @notice The majority voting implementation using a list of member addresses.\\n/// @dev This contract inherits from `MajorityVotingBase` and implements the `IMajorityVoting` interface.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract Addresslist {\\n using CheckpointsUpgradeable for CheckpointsUpgradeable.History;\\n\\n /// @notice The mapping containing the checkpointed history of the address list.\\n // solhint-disable-next-line named-parameters-mapping\\n mapping(address => CheckpointsUpgradeable.History) private _addresslistCheckpoints;\\n\\n /// @notice The checkpointed history of the length of the address list.\\n CheckpointsUpgradeable.History private _addresslistLengthCheckpoints;\\n\\n /// @notice Thrown when the address list update is invalid, which can be caused by the addition of an existing member or removal of a non-existing member.\\n /// @param member The array of member addresses to be added or removed.\\n error InvalidAddresslistUpdate(address member);\\n\\n /// @notice Checks if an account is on the address list at a specific block number.\\n /// @param _account The account address being checked.\\n /// @param _blockNumber The block number.\\n /// @return Whether the account is listed at the specified block number.\\n function isListedAtBlock(\\n address _account,\\n uint256 _blockNumber\\n ) public view virtual returns (bool) {\\n return _addresslistCheckpoints[_account].getAtBlock(_blockNumber) == 1;\\n }\\n\\n /// @notice Checks if an account is currently on the address list.\\n /// @param _account The account address being checked.\\n /// @return Whether the account is currently listed.\\n function isListed(address _account) public view virtual returns (bool) {\\n return _addresslistCheckpoints[_account].latest() == 1;\\n }\\n\\n /// @notice Returns the length of the address list at a specific block number.\\n /// @param _blockNumber The specific block to get the count from. If `0`, then the latest checkpoint value is returned.\\n /// @return The address list length at the specified block number.\\n function addresslistLengthAtBlock(uint256 _blockNumber) public view virtual returns (uint256) {\\n return _addresslistLengthCheckpoints.getAtBlock(_blockNumber);\\n }\\n\\n /// @notice Returns the current length of the address list.\\n /// @return The current address list length.\\n function addresslistLength() public view virtual returns (uint256) {\\n return _addresslistLengthCheckpoints.latest();\\n }\\n\\n /// @notice Internal function to add new addresses to the address list.\\n /// @param _newAddresses The new addresses to be added.\\n function _addAddresses(address[] calldata _newAddresses) internal virtual {\\n for (uint256 i; i < _newAddresses.length; ) {\\n if (isListed(_newAddresses[i])) {\\n revert InvalidAddresslistUpdate(_newAddresses[i]);\\n }\\n\\n // Mark the address as listed\\n _addresslistCheckpoints[_newAddresses[i]].push(1);\\n\\n unchecked {\\n ++i;\\n }\\n }\\n _addresslistLengthCheckpoints.push(_uncheckedAdd, _newAddresses.length);\\n }\\n\\n /// @notice Internal function to remove existing addresses from the address list.\\n /// @param _exitingAddresses The existing addresses to be removed.\\n function _removeAddresses(address[] calldata _exitingAddresses) internal virtual {\\n for (uint256 i; i < _exitingAddresses.length; ) {\\n if (!isListed(_exitingAddresses[i])) {\\n revert InvalidAddresslistUpdate(_exitingAddresses[i]);\\n }\\n\\n // Mark the address as not listed\\n _addresslistCheckpoints[_exitingAddresses[i]].push(0);\\n\\n unchecked {\\n ++i;\\n }\\n }\\n _addresslistLengthCheckpoints.push(_uncheckedSub, _exitingAddresses.length);\\n }\\n\\n /// @dev This empty reserved space is put in place to allow future versions to add new\\n /// variables without shifting down storage in the inheritance chain.\\n /// https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n uint256[48] private __gap;\\n}\\n\",\"keccak256\":\"0x61daf3913f46d0408a1f2af86d594cb5d05cb1d9253ccd14a6e4d9c980b14b69\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/math/UncheckedMath.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @notice Adds two unsigned integers without checking the result for overflow errors (using safe math).\\n/// @param a The first summand.\\n/// @param b The second summand.\\n/// @return The sum.\\n/// @custom:security-contact sirt@aragon.org\\nfunction _uncheckedAdd(uint256 a, uint256 b) pure returns (uint256) {\\n unchecked {\\n return a + b;\\n }\\n}\\n\\n/// @notice Subtracts two unsigned integers without checking the result for overflow errors (using safe math).\\n/// @param a The minuend.\\n/// @param b The subtrahend.\\n/// @return The difference.\\n/// @custom:security-contact sirt@aragon.org\\nfunction _uncheckedSub(uint256 a, uint256 b) pure returns (uint256) {\\n unchecked {\\n return a - b;\\n }\\n}\\n\",\"keccak256\":\"0x358210b59bad961994be2e9bea64eadae3567b3f17ebeaf347dd990f52ce3d6d\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[{"astId":13651,"contract":"src/plugin/extensions/governance/Addresslist.sol:Addresslist","label":"_addresslistCheckpoints","offset":0,"slot":"0","type":"t_mapping(t_address,t_struct(History)1011_storage)"},{"astId":13655,"contract":"src/plugin/extensions/governance/Addresslist.sol:Addresslist","label":"_addresslistLengthCheckpoints","offset":0,"slot":"1","type":"t_struct(History)1011_storage"},{"astId":13830,"contract":"src/plugin/extensions/governance/Addresslist.sol:Addresslist","label":"__gap","offset":0,"slot":"2","type":"t_array(t_uint256)48_storage"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_array(t_struct(Checkpoint)1016_storage)dyn_storage":{"base":"t_struct(Checkpoint)1016_storage","encoding":"dynamic_array","label":"struct CheckpointsUpgradeable.Checkpoint[]","numberOfBytes":"32"},"t_array(t_uint256)48_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[48]","numberOfBytes":"1536"},"t_mapping(t_address,t_struct(History)1011_storage)":{"encoding":"mapping","key":"t_address","label":"mapping(address => struct CheckpointsUpgradeable.History)","numberOfBytes":"32","value":"t_struct(History)1011_storage"},"t_struct(Checkpoint)1016_storage":{"encoding":"inplace","label":"struct CheckpointsUpgradeable.Checkpoint","members":[{"astId":1013,"contract":"src/plugin/extensions/governance/Addresslist.sol:Addresslist","label":"_blockNumber","offset":0,"slot":"0","type":"t_uint32"},{"astId":1015,"contract":"src/plugin/extensions/governance/Addresslist.sol:Addresslist","label":"_value","offset":4,"slot":"0","type":"t_uint224"}],"numberOfBytes":"32"},"t_struct(History)1011_storage":{"encoding":"inplace","label":"struct CheckpointsUpgradeable.History","members":[{"astId":1010,"contract":"src/plugin/extensions/governance/Addresslist.sol:Addresslist","label":"_checkpoints","offset":0,"slot":"0","type":"t_array(t_struct(Checkpoint)1016_storage)dyn_storage"}],"numberOfBytes":"32"},"t_uint224":{"encoding":"inplace","label":"uint224","numberOfBytes":"28"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint32":{"encoding":"inplace","label":"uint32","numberOfBytes":"4"}}},"userdoc":{"errors":{"InvalidAddresslistUpdate(address)":[{"notice":"Thrown when the address list update is invalid, which can be caused by the addition of an existing member or removal of a non-existing member."}]},"kind":"user","methods":{"addresslistLength()":{"notice":"Returns the current length of the address list."},"addresslistLengthAtBlock(uint256)":{"notice":"Returns the length of the address list at a specific block number."},"isListed(address)":{"notice":"Checks if an account is currently on the address list."},"isListedAtBlock(address,uint256)":{"notice":"Checks if an account is on the address list at a specific block number."}},"notice":"The majority voting implementation using a list of member addresses.","version":1}}},"src/plugin/extensions/membership/IMembership.sol":{"IMembership":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address[]","name":"members","type":"address[]"}],"name":"MembersAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address[]","name":"members","type":"address[]"}],"name":"MembersRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"definingContract","type":"address"}],"name":"MembershipContractAnnounced","type":"event"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"isMember","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"author":"Aragon X - 2022-2023","custom:security-contact":"sirt@aragon.org","events":{"MembersAdded(address[])":{"params":{"members":"The list of new members being added."}},"MembersRemoved(address[])":{"params":{"members":"The list of existing members being removed."}},"MembershipContractAnnounced(address)":{"params":{"definingContract":"The contract defining the membership."}}},"kind":"dev","methods":{"isMember(address)":{"details":"This function must be implemented in the plugin contract that introduces the members to the DAO.","params":{"_account":"The address of the account to be checked."},"returns":{"_0":"Whether the account is a member or not."}}},"title":"IMembership","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"isMember(address)":"a230c524"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"members\",\"type\":\"address[]\"}],\"name\":\"MembersAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"members\",\"type\":\"address[]\"}],\"name\":\"MembersRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"definingContract\",\"type\":\"address\"}],\"name\":\"MembershipContractAnnounced\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"isMember\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Aragon X - 2022-2023\",\"custom:security-contact\":\"sirt@aragon.org\",\"events\":{\"MembersAdded(address[])\":{\"params\":{\"members\":\"The list of new members being added.\"}},\"MembersRemoved(address[])\":{\"params\":{\"members\":\"The list of existing members being removed.\"}},\"MembershipContractAnnounced(address)\":{\"params\":{\"definingContract\":\"The contract defining the membership.\"}}},\"kind\":\"dev\",\"methods\":{\"isMember(address)\":{\"details\":\"This function must be implemented in the plugin contract that introduces the members to the DAO.\",\"params\":{\"_account\":\"The address of the account to be checked.\"},\"returns\":{\"_0\":\"Whether the account is a member or not.\"}}},\"title\":\"IMembership\",\"version\":1},\"userdoc\":{\"events\":{\"MembersAdded(address[])\":{\"notice\":\"Emitted when members are added to the DAO plugin.\"},\"MembersRemoved(address[])\":{\"notice\":\"Emitted when members are removed from the DAO plugin.\"},\"MembershipContractAnnounced(address)\":{\"notice\":\"Emitted to announce the membership being defined by a contract.\"}},\"kind\":\"user\",\"methods\":{\"isMember(address)\":{\"notice\":\"Checks if an account is a member of the DAO.\"}},\"notice\":\"An interface to be implemented by DAO plugins that define membership.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/plugin/extensions/membership/IMembership.sol\":\"IMembership\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"src/plugin/extensions/membership/IMembership.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IMembership\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface to be implemented by DAO plugins that define membership.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IMembership {\\n /// @notice Emitted when members are added to the DAO plugin.\\n /// @param members The list of new members being added.\\n event MembersAdded(address[] members);\\n\\n /// @notice Emitted when members are removed from the DAO plugin.\\n /// @param members The list of existing members being removed.\\n event MembersRemoved(address[] members);\\n\\n /// @notice Emitted to announce the membership being defined by a contract.\\n /// @param definingContract The contract defining the membership.\\n event MembershipContractAnnounced(address indexed definingContract);\\n\\n /// @notice Checks if an account is a member of the DAO.\\n /// @param _account The address of the account to be checked.\\n /// @return Whether the account is a member or not.\\n /// @dev This function must be implemented in the plugin contract that introduces the members to the DAO.\\n function isMember(address _account) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x95f428ded1919b7e54df8953d48e60063688383b6db205ad897e1812ee0db098\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"events":{"MembersAdded(address[])":{"notice":"Emitted when members are added to the DAO plugin."},"MembersRemoved(address[])":{"notice":"Emitted when members are removed from the DAO plugin."},"MembershipContractAnnounced(address)":{"notice":"Emitted to announce the membership being defined by a contract."}},"kind":"user","methods":{"isMember(address)":{"notice":"Checks if an account is a member of the DAO."}},"notice":"An interface to be implemented by DAO plugins that define membership.","version":1}}},"src/plugin/extensions/proposal/IProposal.sol":{"IProposal":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":true,"internalType":"address","name":"creator","type":"address"},{"indexed":false,"internalType":"uint64","name":"startDate","type":"uint64"},{"indexed":false,"internalType":"uint64","name":"endDate","type":"uint64"},{"indexed":false,"internalType":"bytes","name":"metadata","type":"bytes"},{"components":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"indexed":false,"internalType":"struct IDAO.Action[]","name":"actions","type":"tuple[]"},{"indexed":false,"internalType":"uint256","name":"allowFailureMap","type":"uint256"}],"name":"ProposalCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalExecuted","type":"event"},{"inputs":[],"name":"proposalCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"devdoc":{"author":"Aragon X - 2022-2023","custom:security-contact":"sirt@aragon.org","events":{"ProposalCreated(uint256,address,uint64,uint64,bytes,(address,uint256,bytes)[],uint256)":{"params":{"actions":"The actions that will be executed if the proposal passes.","allowFailureMap":"A bitmap allowing the proposal to succeed, even if individual actions might revert. If the bit at index `i` is 1, the proposal succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.","creator":"The creator of the proposal.","endDate":"The end date of the proposal in seconds.","metadata":"The metadata of the proposal.","proposalId":"The ID of the proposal.","startDate":"The start date of the proposal in seconds."}},"ProposalExecuted(uint256)":{"params":{"proposalId":"The ID of the proposal."}}},"kind":"dev","methods":{"proposalCount()":{"returns":{"_0":"The proposal count."}}},"title":"IProposal","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"proposalCount()":"da35c664"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"proposalId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"creator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"startDate\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"endDate\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"struct IDAO.Action[]\",\"name\":\"actions\",\"type\":\"tuple[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"allowFailureMap\",\"type\":\"uint256\"}],\"name\":\"ProposalCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"proposalId\",\"type\":\"uint256\"}],\"name\":\"ProposalExecuted\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"proposalCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Aragon X - 2022-2023\",\"custom:security-contact\":\"sirt@aragon.org\",\"events\":{\"ProposalCreated(uint256,address,uint64,uint64,bytes,(address,uint256,bytes)[],uint256)\":{\"params\":{\"actions\":\"The actions that will be executed if the proposal passes.\",\"allowFailureMap\":\"A bitmap allowing the proposal to succeed, even if individual actions might revert. If the bit at index `i` is 1, the proposal succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\",\"creator\":\"The creator of the proposal.\",\"endDate\":\"The end date of the proposal in seconds.\",\"metadata\":\"The metadata of the proposal.\",\"proposalId\":\"The ID of the proposal.\",\"startDate\":\"The start date of the proposal in seconds.\"}},\"ProposalExecuted(uint256)\":{\"params\":{\"proposalId\":\"The ID of the proposal.\"}}},\"kind\":\"dev\",\"methods\":{\"proposalCount()\":{\"returns\":{\"_0\":\"The proposal count.\"}}},\"title\":\"IProposal\",\"version\":1},\"userdoc\":{\"events\":{\"ProposalCreated(uint256,address,uint64,uint64,bytes,(address,uint256,bytes)[],uint256)\":{\"notice\":\"Emitted when a proposal is created.\"},\"ProposalExecuted(uint256)\":{\"notice\":\"Emitted when a proposal is executed.\"}},\"kind\":\"user\",\"methods\":{\"proposalCount()\":{\"notice\":\"Returns the proposal count determining the next proposal ID.\"}},\"notice\":\"An interface to be implemented by DAO plugins that create and execute proposals.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/plugin/extensions/proposal/IProposal.sol\":\"IProposal\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"src/dao/IDAO.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IDAO\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for DAOs within the Aragon App DAO framework.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IDAO {\\n /// @notice The action struct to be consumed by the DAO's `execute` function resulting in an external call.\\n /// @param to The address to call.\\n /// @param value The native token value to be sent with the call.\\n /// @param data The bytes-encoded function selector and calldata for the call.\\n struct Action {\\n address to;\\n uint256 value;\\n bytes data;\\n }\\n\\n /// @notice Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\\n /// @param _where The address of the contract.\\n /// @param _who The address of a EOA or contract to give the permissions.\\n /// @param _permissionId The permission identifier.\\n /// @param _data The optional data passed to the `PermissionCondition` registered.\\n /// @return Returns true if the address has permission, false if not.\\n function hasPermission(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes memory _data\\n ) external view returns (bool);\\n\\n /// @notice Updates the DAO metadata (e.g., an IPFS hash).\\n /// @param _metadata The IPFS hash of the new metadata object.\\n function setMetadata(bytes calldata _metadata) external;\\n\\n /// @notice Emitted when the DAO metadata is updated.\\n /// @param metadata The IPFS hash of the new metadata object.\\n event MetadataSet(bytes metadata);\\n\\n /// @notice Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted.\\n /// @param _callId The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce.\\n /// @param _actions The array of actions.\\n /// @param _allowFailureMap A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @return The array of results obtained from the executed actions in `bytes`.\\n /// @return The resulting failure map containing the actions have actually failed.\\n function execute(\\n bytes32 _callId,\\n Action[] memory _actions,\\n uint256 _allowFailureMap\\n ) external returns (bytes[] memory, uint256);\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param actor The address of the caller.\\n /// @param callId The ID of the call.\\n /// @param actions The array of actions executed.\\n /// @param allowFailureMap The allow failure map encoding which actions are allowed to fail.\\n /// @param failureMap The failure map encoding which actions have failed.\\n /// @param execResults The array with the results of the executed actions.\\n /// @dev The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce.\\n event Executed(\\n address indexed actor,\\n bytes32 callId,\\n Action[] actions,\\n uint256 allowFailureMap,\\n uint256 failureMap,\\n bytes[] execResults\\n );\\n\\n /// @notice Emitted when a standard callback is registered.\\n /// @param interfaceId The ID of the interface.\\n /// @param callbackSelector The selector of the callback function.\\n /// @param magicNumber The magic number to be registered for the callback function selector.\\n event StandardCallbackRegistered(\\n bytes4 interfaceId,\\n bytes4 callbackSelector,\\n bytes4 magicNumber\\n );\\n\\n /// @notice Deposits (native) tokens to the DAO contract with a reference string.\\n /// @param _token The address of the token or address(0) in case of the native token.\\n /// @param _amount The amount of tokens to deposit.\\n /// @param _reference The reference describing the deposit reason.\\n function deposit(address _token, uint256 _amount, string calldata _reference) external payable;\\n\\n /// @notice Emitted when a token deposit has been made to the DAO.\\n /// @param sender The address of the sender.\\n /// @param token The address of the deposited token.\\n /// @param amount The amount of tokens deposited.\\n /// @param _reference The reference describing the deposit reason.\\n event Deposited(\\n address indexed sender,\\n address indexed token,\\n uint256 amount,\\n string _reference\\n );\\n\\n /// @notice Emitted when a native token deposit has been made to the DAO.\\n /// @dev This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).\\n /// @param sender The address of the sender.\\n /// @param amount The amount of native tokens deposited.\\n event NativeTokenDeposited(address sender, uint256 amount);\\n\\n /// @notice Setter for the trusted forwarder verifying the meta transaction.\\n /// @param _trustedForwarder The trusted forwarder address.\\n function setTrustedForwarder(address _trustedForwarder) external;\\n\\n /// @notice Getter for the trusted forwarder verifying the meta transaction.\\n /// @return The trusted forwarder address.\\n function getTrustedForwarder() external view returns (address);\\n\\n /// @notice Emitted when a new TrustedForwarder is set on the DAO.\\n /// @param forwarder the new forwarder address.\\n event TrustedForwarderSet(address forwarder);\\n\\n /// @notice Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\\n /// @param _hash The hash of the data to be signed.\\n /// @param _signature The signature byte array associated with `_hash`.\\n /// @return Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not.\\n function isValidSignature(bytes32 _hash, bytes memory _signature) external returns (bytes4);\\n\\n /// @notice Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\\n /// @param _interfaceId The ID of the interface.\\n /// @param _callbackSelector The selector of the callback function.\\n /// @param _magicNumber The magic number to be registered for the function signature.\\n function registerStandardCallback(\\n bytes4 _interfaceId,\\n bytes4 _callbackSelector,\\n bytes4 _magicNumber\\n ) external;\\n\\n /// @notice Removed function being left here to not corrupt the IDAO interface ID. Any call will revert.\\n /// @dev Introduced in v1.0.0. Removed in v1.4.0.\\n function setSignatureValidator(address) external;\\n}\\n\",\"keccak256\":\"0xb7f615523c26de042edce98731c658f44a1edb2464387ac1b642c4c69f57128e\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/extensions/proposal/IProposal.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IDAO} from \\\"../../../dao/IDAO.sol\\\";\\n\\n/// @title IProposal\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface to be implemented by DAO plugins that create and execute proposals.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IProposal {\\n /// @notice Emitted when a proposal is created.\\n /// @param proposalId The ID of the proposal.\\n /// @param creator The creator of the proposal.\\n /// @param startDate The start date of the proposal in seconds.\\n /// @param endDate The end date of the proposal in seconds.\\n /// @param metadata The metadata of the proposal.\\n /// @param actions The actions that will be executed if the proposal passes.\\n /// @param allowFailureMap A bitmap allowing the proposal to succeed, even if individual actions might revert. If the bit at index `i` is 1, the proposal succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n event ProposalCreated(\\n uint256 indexed proposalId,\\n address indexed creator,\\n uint64 startDate,\\n uint64 endDate,\\n bytes metadata,\\n IDAO.Action[] actions,\\n uint256 allowFailureMap\\n );\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param proposalId The ID of the proposal.\\n event ProposalExecuted(uint256 indexed proposalId);\\n\\n /// @notice Returns the proposal count determining the next proposal ID.\\n /// @return The proposal count.\\n function proposalCount() external view returns (uint256);\\n}\\n\",\"keccak256\":\"0x06205453d6800f598d41848ba9ebf50919ffb773f3ba63247ddcfb2464358239\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"events":{"ProposalCreated(uint256,address,uint64,uint64,bytes,(address,uint256,bytes)[],uint256)":{"notice":"Emitted when a proposal is created."},"ProposalExecuted(uint256)":{"notice":"Emitted when a proposal is executed."}},"kind":"user","methods":{"proposalCount()":{"notice":"Returns the proposal count determining the next proposal ID."}},"notice":"An interface to be implemented by DAO plugins that create and execute proposals.","version":1}}},"src/plugin/extensions/proposal/Proposal.sol":{"Proposal":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":true,"internalType":"address","name":"creator","type":"address"},{"indexed":false,"internalType":"uint64","name":"startDate","type":"uint64"},{"indexed":false,"internalType":"uint64","name":"endDate","type":"uint64"},{"indexed":false,"internalType":"bytes","name":"metadata","type":"bytes"},{"components":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"indexed":false,"internalType":"struct IDAO.Action[]","name":"actions","type":"tuple[]"},{"indexed":false,"internalType":"uint256","name":"allowFailureMap","type":"uint256"}],"name":"ProposalCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalExecuted","type":"event"},{"inputs":[],"name":"proposalCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"author":"Aragon X - 2022-2023","custom:security-contact":"sirt@aragon.org","kind":"dev","methods":{"proposalCount()":{"returns":{"_0":"The proposal count."}},"supportsInterface(bytes4)":{"params":{"_interfaceId":"The ID of the interface."},"returns":{"_0":"Returns `true` if the interface is supported."}}},"title":"Proposal","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"proposalCount()":"da35c664","supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"proposalId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"creator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"startDate\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"endDate\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"struct IDAO.Action[]\",\"name\":\"actions\",\"type\":\"tuple[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"allowFailureMap\",\"type\":\"uint256\"}],\"name\":\"ProposalCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"proposalId\",\"type\":\"uint256\"}],\"name\":\"ProposalExecuted\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"proposalCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Aragon X - 2022-2023\",\"custom:security-contact\":\"sirt@aragon.org\",\"kind\":\"dev\",\"methods\":{\"proposalCount()\":{\"returns\":{\"_0\":\"The proposal count.\"}},\"supportsInterface(bytes4)\":{\"params\":{\"_interfaceId\":\"The ID of the interface.\"},\"returns\":{\"_0\":\"Returns `true` if the interface is supported.\"}}},\"title\":\"Proposal\",\"version\":1},\"userdoc\":{\"events\":{\"ProposalCreated(uint256,address,uint64,uint64,bytes,(address,uint256,bytes)[],uint256)\":{\"notice\":\"Emitted when a proposal is created.\"},\"ProposalExecuted(uint256)\":{\"notice\":\"Emitted when a proposal is executed.\"}},\"kind\":\"user\",\"methods\":{\"proposalCount()\":{\"notice\":\"Returns the proposal count determining the next proposal ID.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Checks if this or the parent contract supports an interface by its ID.\"}},\"notice\":\"An abstract contract containing the traits and internal functionality to create and execute proposals that can be inherited by non-upgradeable DAO plugins.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/plugin/extensions/proposal/Proposal.sol\":\"Proposal\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Counters.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Counters.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title Counters\\n * @author Matt Condon (@shrugs)\\n * @dev Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number\\n * of elements in a mapping, issuing ERC721 ids, or counting request ids.\\n *\\n * Include with `using Counters for Counters.Counter;`\\n */\\nlibrary Counters {\\n struct Counter {\\n // This variable should never be directly accessed by users of the library: interactions must be restricted to\\n // the library's function. As of Solidity v0.5.2, this cannot be enforced, though there is a proposal to add\\n // this feature: see https://github.com/ethereum/solidity/issues/4637\\n uint256 _value; // default: 0\\n }\\n\\n function current(Counter storage counter) internal view returns (uint256) {\\n return counter._value;\\n }\\n\\n function increment(Counter storage counter) internal {\\n unchecked {\\n counter._value += 1;\\n }\\n }\\n\\n function decrement(Counter storage counter) internal {\\n uint256 value = counter._value;\\n require(value > 0, \\\"Counter: decrement overflow\\\");\\n unchecked {\\n counter._value = value - 1;\\n }\\n }\\n\\n function reset(Counter storage counter) internal {\\n counter._value = 0;\\n }\\n}\\n\",\"keccak256\":\"0xf0018c2440fbe238dd3a8732fa8e17a0f9dce84d31451dc8a32f6d62b349c9f1\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165 is IERC165 {\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165).interfaceId;\\n }\\n}\\n\",\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"src/dao/IDAO.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IDAO\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for DAOs within the Aragon App DAO framework.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IDAO {\\n /// @notice The action struct to be consumed by the DAO's `execute` function resulting in an external call.\\n /// @param to The address to call.\\n /// @param value The native token value to be sent with the call.\\n /// @param data The bytes-encoded function selector and calldata for the call.\\n struct Action {\\n address to;\\n uint256 value;\\n bytes data;\\n }\\n\\n /// @notice Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\\n /// @param _where The address of the contract.\\n /// @param _who The address of a EOA or contract to give the permissions.\\n /// @param _permissionId The permission identifier.\\n /// @param _data The optional data passed to the `PermissionCondition` registered.\\n /// @return Returns true if the address has permission, false if not.\\n function hasPermission(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes memory _data\\n ) external view returns (bool);\\n\\n /// @notice Updates the DAO metadata (e.g., an IPFS hash).\\n /// @param _metadata The IPFS hash of the new metadata object.\\n function setMetadata(bytes calldata _metadata) external;\\n\\n /// @notice Emitted when the DAO metadata is updated.\\n /// @param metadata The IPFS hash of the new metadata object.\\n event MetadataSet(bytes metadata);\\n\\n /// @notice Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted.\\n /// @param _callId The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce.\\n /// @param _actions The array of actions.\\n /// @param _allowFailureMap A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @return The array of results obtained from the executed actions in `bytes`.\\n /// @return The resulting failure map containing the actions have actually failed.\\n function execute(\\n bytes32 _callId,\\n Action[] memory _actions,\\n uint256 _allowFailureMap\\n ) external returns (bytes[] memory, uint256);\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param actor The address of the caller.\\n /// @param callId The ID of the call.\\n /// @param actions The array of actions executed.\\n /// @param allowFailureMap The allow failure map encoding which actions are allowed to fail.\\n /// @param failureMap The failure map encoding which actions have failed.\\n /// @param execResults The array with the results of the executed actions.\\n /// @dev The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce.\\n event Executed(\\n address indexed actor,\\n bytes32 callId,\\n Action[] actions,\\n uint256 allowFailureMap,\\n uint256 failureMap,\\n bytes[] execResults\\n );\\n\\n /// @notice Emitted when a standard callback is registered.\\n /// @param interfaceId The ID of the interface.\\n /// @param callbackSelector The selector of the callback function.\\n /// @param magicNumber The magic number to be registered for the callback function selector.\\n event StandardCallbackRegistered(\\n bytes4 interfaceId,\\n bytes4 callbackSelector,\\n bytes4 magicNumber\\n );\\n\\n /// @notice Deposits (native) tokens to the DAO contract with a reference string.\\n /// @param _token The address of the token or address(0) in case of the native token.\\n /// @param _amount The amount of tokens to deposit.\\n /// @param _reference The reference describing the deposit reason.\\n function deposit(address _token, uint256 _amount, string calldata _reference) external payable;\\n\\n /// @notice Emitted when a token deposit has been made to the DAO.\\n /// @param sender The address of the sender.\\n /// @param token The address of the deposited token.\\n /// @param amount The amount of tokens deposited.\\n /// @param _reference The reference describing the deposit reason.\\n event Deposited(\\n address indexed sender,\\n address indexed token,\\n uint256 amount,\\n string _reference\\n );\\n\\n /// @notice Emitted when a native token deposit has been made to the DAO.\\n /// @dev This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).\\n /// @param sender The address of the sender.\\n /// @param amount The amount of native tokens deposited.\\n event NativeTokenDeposited(address sender, uint256 amount);\\n\\n /// @notice Setter for the trusted forwarder verifying the meta transaction.\\n /// @param _trustedForwarder The trusted forwarder address.\\n function setTrustedForwarder(address _trustedForwarder) external;\\n\\n /// @notice Getter for the trusted forwarder verifying the meta transaction.\\n /// @return The trusted forwarder address.\\n function getTrustedForwarder() external view returns (address);\\n\\n /// @notice Emitted when a new TrustedForwarder is set on the DAO.\\n /// @param forwarder the new forwarder address.\\n event TrustedForwarderSet(address forwarder);\\n\\n /// @notice Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\\n /// @param _hash The hash of the data to be signed.\\n /// @param _signature The signature byte array associated with `_hash`.\\n /// @return Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not.\\n function isValidSignature(bytes32 _hash, bytes memory _signature) external returns (bytes4);\\n\\n /// @notice Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\\n /// @param _interfaceId The ID of the interface.\\n /// @param _callbackSelector The selector of the callback function.\\n /// @param _magicNumber The magic number to be registered for the function signature.\\n function registerStandardCallback(\\n bytes4 _interfaceId,\\n bytes4 _callbackSelector,\\n bytes4 _magicNumber\\n ) external;\\n\\n /// @notice Removed function being left here to not corrupt the IDAO interface ID. Any call will revert.\\n /// @dev Introduced in v1.0.0. Removed in v1.4.0.\\n function setSignatureValidator(address) external;\\n}\\n\",\"keccak256\":\"0xb7f615523c26de042edce98731c658f44a1edb2464387ac1b642c4c69f57128e\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/extensions/proposal/IProposal.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IDAO} from \\\"../../../dao/IDAO.sol\\\";\\n\\n/// @title IProposal\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface to be implemented by DAO plugins that create and execute proposals.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IProposal {\\n /// @notice Emitted when a proposal is created.\\n /// @param proposalId The ID of the proposal.\\n /// @param creator The creator of the proposal.\\n /// @param startDate The start date of the proposal in seconds.\\n /// @param endDate The end date of the proposal in seconds.\\n /// @param metadata The metadata of the proposal.\\n /// @param actions The actions that will be executed if the proposal passes.\\n /// @param allowFailureMap A bitmap allowing the proposal to succeed, even if individual actions might revert. If the bit at index `i` is 1, the proposal succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n event ProposalCreated(\\n uint256 indexed proposalId,\\n address indexed creator,\\n uint64 startDate,\\n uint64 endDate,\\n bytes metadata,\\n IDAO.Action[] actions,\\n uint256 allowFailureMap\\n );\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param proposalId The ID of the proposal.\\n event ProposalExecuted(uint256 indexed proposalId);\\n\\n /// @notice Returns the proposal count determining the next proposal ID.\\n /// @return The proposal count.\\n function proposalCount() external view returns (uint256);\\n}\\n\",\"keccak256\":\"0x06205453d6800f598d41848ba9ebf50919ffb773f3ba63247ddcfb2464358239\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/extensions/proposal/Proposal.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {Counters} from \\\"@openzeppelin/contracts/utils/Counters.sol\\\";\\nimport {ERC165} from \\\"@openzeppelin/contracts/utils/introspection/ERC165.sol\\\";\\n\\nimport {IDAO} from \\\"../../../dao/IDAO.sol\\\";\\nimport {IProposal} from \\\"./IProposal.sol\\\";\\n\\n/// @title Proposal\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract contract containing the traits and internal functionality to create and execute proposals that can be inherited by non-upgradeable DAO plugins.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract Proposal is IProposal, ERC165 {\\n using Counters for Counters.Counter;\\n\\n /// @notice The incremental ID for proposals and executions.\\n Counters.Counter private proposalCounter;\\n\\n /// @inheritdoc IProposal\\n function proposalCount() public view override returns (uint256) {\\n return proposalCounter.current();\\n }\\n\\n /// @notice Checks if this or the parent contract supports an interface by its ID.\\n /// @param _interfaceId The ID of the interface.\\n /// @return Returns `true` if the interface is supported.\\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\\n return _interfaceId == type(IProposal).interfaceId || super.supportsInterface(_interfaceId);\\n }\\n\\n /// @notice Creates a proposal ID.\\n /// @return proposalId The proposal ID.\\n function _createProposalId() internal returns (uint256 proposalId) {\\n proposalId = proposalCount();\\n proposalCounter.increment();\\n }\\n\\n /// @notice Internal function to create a proposal.\\n /// @param _metadata The proposal metadata.\\n /// @param _startDate The start date of the proposal in seconds.\\n /// @param _endDate The end date of the proposal in seconds.\\n /// @param _allowFailureMap A bitmap allowing the proposal to succeed, even if individual actions might revert. If the bit at index `i` is 1, the proposal succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @param _actions The actions that will be executed after the proposal passes.\\n /// @return proposalId The ID of the proposal.\\n function _createProposal(\\n address _creator,\\n bytes calldata _metadata,\\n uint64 _startDate,\\n uint64 _endDate,\\n IDAO.Action[] calldata _actions,\\n uint256 _allowFailureMap\\n ) internal virtual returns (uint256 proposalId) {\\n proposalId = _createProposalId();\\n\\n emit ProposalCreated({\\n proposalId: proposalId,\\n creator: _creator,\\n metadata: _metadata,\\n startDate: _startDate,\\n endDate: _endDate,\\n actions: _actions,\\n allowFailureMap: _allowFailureMap\\n });\\n }\\n\\n /// @notice Internal function to execute a proposal.\\n /// @param _proposalId The ID of the proposal to be executed.\\n /// @param _actions The array of actions to be executed.\\n /// @param _allowFailureMap A bitmap allowing the proposal to succeed, even if individual actions might revert. If the bit at index `i` is 1, the proposal succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @return execResults The array with the results of the executed actions.\\n /// @return failureMap The failure map encoding which actions have failed.\\n function _executeProposal(\\n IDAO _dao,\\n uint256 _proposalId,\\n IDAO.Action[] memory _actions,\\n uint256 _allowFailureMap\\n ) internal virtual returns (bytes[] memory execResults, uint256 failureMap) {\\n (execResults, failureMap) = _dao.execute(bytes32(_proposalId), _actions, _allowFailureMap);\\n emit ProposalExecuted({proposalId: _proposalId});\\n }\\n}\\n\",\"keccak256\":\"0xdd97adbd91ca0bdf56017e6a219f1d714ab686aeab22dc701ee82d913591458e\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[{"astId":13919,"contract":"src/plugin/extensions/proposal/Proposal.sol:Proposal","label":"proposalCounter","offset":0,"slot":"0","type":"t_struct(Counter)9300_storage"}],"types":{"t_struct(Counter)9300_storage":{"encoding":"inplace","label":"struct Counters.Counter","members":[{"astId":9299,"contract":"src/plugin/extensions/proposal/Proposal.sol:Proposal","label":"_value","offset":0,"slot":"0","type":"t_uint256"}],"numberOfBytes":"32"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"userdoc":{"events":{"ProposalCreated(uint256,address,uint64,uint64,bytes,(address,uint256,bytes)[],uint256)":{"notice":"Emitted when a proposal is created."},"ProposalExecuted(uint256)":{"notice":"Emitted when a proposal is executed."}},"kind":"user","methods":{"proposalCount()":{"notice":"Returns the proposal count determining the next proposal ID."},"supportsInterface(bytes4)":{"notice":"Checks if this or the parent contract supports an interface by its ID."}},"notice":"An abstract contract containing the traits and internal functionality to create and execute proposals that can be inherited by non-upgradeable DAO plugins.","version":1}}},"src/plugin/extensions/proposal/ProposalUpgradeable.sol":{"ProposalUpgradeable":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":true,"internalType":"address","name":"creator","type":"address"},{"indexed":false,"internalType":"uint64","name":"startDate","type":"uint64"},{"indexed":false,"internalType":"uint64","name":"endDate","type":"uint64"},{"indexed":false,"internalType":"bytes","name":"metadata","type":"bytes"},{"components":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"indexed":false,"internalType":"struct IDAO.Action[]","name":"actions","type":"tuple[]"},{"indexed":false,"internalType":"uint256","name":"allowFailureMap","type":"uint256"}],"name":"ProposalCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalExecuted","type":"event"},{"inputs":[],"name":"proposalCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"author":"Aragon X - 2022-2023","custom:security-contact":"sirt@aragon.org","kind":"dev","methods":{"proposalCount()":{"returns":{"_0":"The proposal count."}},"supportsInterface(bytes4)":{"params":{"_interfaceId":"The ID of the interface."},"returns":{"_0":"Returns `true` if the interface is supported."}}},"title":"ProposalUpgradeable","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"proposalCount()":"da35c664","supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"proposalId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"creator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"startDate\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"endDate\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"struct IDAO.Action[]\",\"name\":\"actions\",\"type\":\"tuple[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"allowFailureMap\",\"type\":\"uint256\"}],\"name\":\"ProposalCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"proposalId\",\"type\":\"uint256\"}],\"name\":\"ProposalExecuted\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"proposalCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Aragon X - 2022-2023\",\"custom:security-contact\":\"sirt@aragon.org\",\"kind\":\"dev\",\"methods\":{\"proposalCount()\":{\"returns\":{\"_0\":\"The proposal count.\"}},\"supportsInterface(bytes4)\":{\"params\":{\"_interfaceId\":\"The ID of the interface.\"},\"returns\":{\"_0\":\"Returns `true` if the interface is supported.\"}}},\"title\":\"ProposalUpgradeable\",\"version\":1},\"userdoc\":{\"events\":{\"ProposalCreated(uint256,address,uint64,uint64,bytes,(address,uint256,bytes)[],uint256)\":{\"notice\":\"Emitted when a proposal is created.\"},\"ProposalExecuted(uint256)\":{\"notice\":\"Emitted when a proposal is executed.\"}},\"kind\":\"user\",\"methods\":{\"proposalCount()\":{\"notice\":\"Returns the proposal count determining the next proposal ID.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Checks if this or the parent contract supports an interface by its ID.\"}},\"notice\":\"An abstract contract containing the traits and internal functionality to create and execute proposals that can be inherited by upgradeable DAO plugins.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/plugin/extensions/proposal/ProposalUpgradeable.sol\":\"ProposalUpgradeable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Counters.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title Counters\\n * @author Matt Condon (@shrugs)\\n * @dev Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number\\n * of elements in a mapping, issuing ERC721 ids, or counting request ids.\\n *\\n * Include with `using Counters for Counters.Counter;`\\n */\\nlibrary CountersUpgradeable {\\n struct Counter {\\n // This variable should never be directly accessed by users of the library: interactions must be restricted to\\n // the library's function. As of Solidity v0.5.2, this cannot be enforced, though there is a proposal to add\\n // this feature: see https://github.com/ethereum/solidity/issues/4637\\n uint256 _value; // default: 0\\n }\\n\\n function current(Counter storage counter) internal view returns (uint256) {\\n return counter._value;\\n }\\n\\n function increment(Counter storage counter) internal {\\n unchecked {\\n counter._value += 1;\\n }\\n }\\n\\n function decrement(Counter storage counter) internal {\\n uint256 value = counter._value;\\n require(value > 0, \\\"Counter: decrement overflow\\\");\\n unchecked {\\n counter._value = value - 1;\\n }\\n }\\n\\n function reset(Counter storage counter) internal {\\n counter._value = 0;\\n }\\n}\\n\",\"keccak256\":\"0x798741e231b22b81e2dd2eddaaf8832dee4baf5cd8e2dbaa5c1dd12a1c053c4d\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165Upgradeable.sol\\\";\\nimport {Initializable} from \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165Upgradeable is Initializable, IERC165Upgradeable {\\n function __ERC165_init() internal onlyInitializing {\\n }\\n\\n function __ERC165_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165Upgradeable).interfaceId;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0xd90d7723512df65ae417adaf0801042940f0dabd60039ceeaffe34aa5b238da1\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165Upgradeable {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\"},\"src/dao/IDAO.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IDAO\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for DAOs within the Aragon App DAO framework.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IDAO {\\n /// @notice The action struct to be consumed by the DAO's `execute` function resulting in an external call.\\n /// @param to The address to call.\\n /// @param value The native token value to be sent with the call.\\n /// @param data The bytes-encoded function selector and calldata for the call.\\n struct Action {\\n address to;\\n uint256 value;\\n bytes data;\\n }\\n\\n /// @notice Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\\n /// @param _where The address of the contract.\\n /// @param _who The address of a EOA or contract to give the permissions.\\n /// @param _permissionId The permission identifier.\\n /// @param _data The optional data passed to the `PermissionCondition` registered.\\n /// @return Returns true if the address has permission, false if not.\\n function hasPermission(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes memory _data\\n ) external view returns (bool);\\n\\n /// @notice Updates the DAO metadata (e.g., an IPFS hash).\\n /// @param _metadata The IPFS hash of the new metadata object.\\n function setMetadata(bytes calldata _metadata) external;\\n\\n /// @notice Emitted when the DAO metadata is updated.\\n /// @param metadata The IPFS hash of the new metadata object.\\n event MetadataSet(bytes metadata);\\n\\n /// @notice Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted.\\n /// @param _callId The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce.\\n /// @param _actions The array of actions.\\n /// @param _allowFailureMap A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @return The array of results obtained from the executed actions in `bytes`.\\n /// @return The resulting failure map containing the actions have actually failed.\\n function execute(\\n bytes32 _callId,\\n Action[] memory _actions,\\n uint256 _allowFailureMap\\n ) external returns (bytes[] memory, uint256);\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param actor The address of the caller.\\n /// @param callId The ID of the call.\\n /// @param actions The array of actions executed.\\n /// @param allowFailureMap The allow failure map encoding which actions are allowed to fail.\\n /// @param failureMap The failure map encoding which actions have failed.\\n /// @param execResults The array with the results of the executed actions.\\n /// @dev The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce.\\n event Executed(\\n address indexed actor,\\n bytes32 callId,\\n Action[] actions,\\n uint256 allowFailureMap,\\n uint256 failureMap,\\n bytes[] execResults\\n );\\n\\n /// @notice Emitted when a standard callback is registered.\\n /// @param interfaceId The ID of the interface.\\n /// @param callbackSelector The selector of the callback function.\\n /// @param magicNumber The magic number to be registered for the callback function selector.\\n event StandardCallbackRegistered(\\n bytes4 interfaceId,\\n bytes4 callbackSelector,\\n bytes4 magicNumber\\n );\\n\\n /// @notice Deposits (native) tokens to the DAO contract with a reference string.\\n /// @param _token The address of the token or address(0) in case of the native token.\\n /// @param _amount The amount of tokens to deposit.\\n /// @param _reference The reference describing the deposit reason.\\n function deposit(address _token, uint256 _amount, string calldata _reference) external payable;\\n\\n /// @notice Emitted when a token deposit has been made to the DAO.\\n /// @param sender The address of the sender.\\n /// @param token The address of the deposited token.\\n /// @param amount The amount of tokens deposited.\\n /// @param _reference The reference describing the deposit reason.\\n event Deposited(\\n address indexed sender,\\n address indexed token,\\n uint256 amount,\\n string _reference\\n );\\n\\n /// @notice Emitted when a native token deposit has been made to the DAO.\\n /// @dev This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).\\n /// @param sender The address of the sender.\\n /// @param amount The amount of native tokens deposited.\\n event NativeTokenDeposited(address sender, uint256 amount);\\n\\n /// @notice Setter for the trusted forwarder verifying the meta transaction.\\n /// @param _trustedForwarder The trusted forwarder address.\\n function setTrustedForwarder(address _trustedForwarder) external;\\n\\n /// @notice Getter for the trusted forwarder verifying the meta transaction.\\n /// @return The trusted forwarder address.\\n function getTrustedForwarder() external view returns (address);\\n\\n /// @notice Emitted when a new TrustedForwarder is set on the DAO.\\n /// @param forwarder the new forwarder address.\\n event TrustedForwarderSet(address forwarder);\\n\\n /// @notice Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\\n /// @param _hash The hash of the data to be signed.\\n /// @param _signature The signature byte array associated with `_hash`.\\n /// @return Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not.\\n function isValidSignature(bytes32 _hash, bytes memory _signature) external returns (bytes4);\\n\\n /// @notice Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\\n /// @param _interfaceId The ID of the interface.\\n /// @param _callbackSelector The selector of the callback function.\\n /// @param _magicNumber The magic number to be registered for the function signature.\\n function registerStandardCallback(\\n bytes4 _interfaceId,\\n bytes4 _callbackSelector,\\n bytes4 _magicNumber\\n ) external;\\n\\n /// @notice Removed function being left here to not corrupt the IDAO interface ID. Any call will revert.\\n /// @dev Introduced in v1.0.0. Removed in v1.4.0.\\n function setSignatureValidator(address) external;\\n}\\n\",\"keccak256\":\"0xb7f615523c26de042edce98731c658f44a1edb2464387ac1b642c4c69f57128e\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/extensions/proposal/IProposal.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IDAO} from \\\"../../../dao/IDAO.sol\\\";\\n\\n/// @title IProposal\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface to be implemented by DAO plugins that create and execute proposals.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IProposal {\\n /// @notice Emitted when a proposal is created.\\n /// @param proposalId The ID of the proposal.\\n /// @param creator The creator of the proposal.\\n /// @param startDate The start date of the proposal in seconds.\\n /// @param endDate The end date of the proposal in seconds.\\n /// @param metadata The metadata of the proposal.\\n /// @param actions The actions that will be executed if the proposal passes.\\n /// @param allowFailureMap A bitmap allowing the proposal to succeed, even if individual actions might revert. If the bit at index `i` is 1, the proposal succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n event ProposalCreated(\\n uint256 indexed proposalId,\\n address indexed creator,\\n uint64 startDate,\\n uint64 endDate,\\n bytes metadata,\\n IDAO.Action[] actions,\\n uint256 allowFailureMap\\n );\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param proposalId The ID of the proposal.\\n event ProposalExecuted(uint256 indexed proposalId);\\n\\n /// @notice Returns the proposal count determining the next proposal ID.\\n /// @return The proposal count.\\n function proposalCount() external view returns (uint256);\\n}\\n\",\"keccak256\":\"0x06205453d6800f598d41848ba9ebf50919ffb773f3ba63247ddcfb2464358239\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/extensions/proposal/ProposalUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {CountersUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol\\\";\\nimport {ERC165Upgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\\\";\\n\\nimport {IDAO} from \\\"../../../dao/IDAO.sol\\\";\\nimport {IProposal} from \\\"./IProposal.sol\\\";\\n\\n/// @title ProposalUpgradeable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract contract containing the traits and internal functionality to create and execute proposals that can be inherited by upgradeable DAO plugins.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract ProposalUpgradeable is IProposal, ERC165Upgradeable {\\n using CountersUpgradeable for CountersUpgradeable.Counter;\\n\\n /// @notice The incremental ID for proposals and executions.\\n CountersUpgradeable.Counter private proposalCounter;\\n\\n /// @inheritdoc IProposal\\n function proposalCount() public view override returns (uint256) {\\n return proposalCounter.current();\\n }\\n\\n /// @notice Checks if this or the parent contract supports an interface by its ID.\\n /// @param _interfaceId The ID of the interface.\\n /// @return Returns `true` if the interface is supported.\\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\\n return _interfaceId == type(IProposal).interfaceId || super.supportsInterface(_interfaceId);\\n }\\n\\n /// @notice Creates a proposal ID.\\n /// @return proposalId The proposal ID.\\n function _createProposalId() internal returns (uint256 proposalId) {\\n proposalId = proposalCount();\\n proposalCounter.increment();\\n }\\n\\n /// @notice Internal function to create a proposal.\\n /// @param _metadata The proposal metadata.\\n /// @param _startDate The start date of the proposal in seconds.\\n /// @param _endDate The end date of the proposal in seconds.\\n /// @param _allowFailureMap A bitmap allowing the proposal to succeed, even if individual actions might revert. If the bit at index `i` is 1, the proposal succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @param _actions The actions that will be executed after the proposal passes.\\n /// @return proposalId The ID of the proposal.\\n function _createProposal(\\n address _creator,\\n bytes calldata _metadata,\\n uint64 _startDate,\\n uint64 _endDate,\\n IDAO.Action[] calldata _actions,\\n uint256 _allowFailureMap\\n ) internal virtual returns (uint256 proposalId) {\\n proposalId = _createProposalId();\\n\\n emit ProposalCreated({\\n proposalId: proposalId,\\n creator: _creator,\\n metadata: _metadata,\\n startDate: _startDate,\\n endDate: _endDate,\\n actions: _actions,\\n allowFailureMap: _allowFailureMap\\n });\\n }\\n\\n /// @notice Internal function to execute a proposal.\\n /// @param _proposalId The ID of the proposal to be executed.\\n /// @param _actions The array of actions to be executed.\\n /// @param _allowFailureMap A bitmap allowing the proposal to succeed, even if individual actions might revert. If the bit at index `i` is 1, the proposal succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @return execResults The array with the results of the executed actions.\\n /// @return failureMap The failure map encoding which actions have failed.\\n function _executeProposal(\\n IDAO _dao,\\n uint256 _proposalId,\\n IDAO.Action[] memory _actions,\\n uint256 _allowFailureMap\\n ) internal virtual returns (bytes[] memory execResults, uint256 failureMap) {\\n (execResults, failureMap) = _dao.execute(bytes32(_proposalId), _actions, _allowFailureMap);\\n emit ProposalExecuted({proposalId: _proposalId});\\n }\\n\\n /// @notice This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain (see [OpenZeppelin's guide about storage gaps](https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps)).\\n uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0x6ec477b535a4c08fb0464db637f67bed89c89086150c1d3c107f9a69afc65a73\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[{"astId":372,"contract":"src/plugin/extensions/proposal/ProposalUpgradeable.sol:ProposalUpgradeable","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":375,"contract":"src/plugin/extensions/proposal/ProposalUpgradeable.sol:ProposalUpgradeable","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":2821,"contract":"src/plugin/extensions/proposal/ProposalUpgradeable.sol:ProposalUpgradeable","label":"__gap","offset":0,"slot":"1","type":"t_array(t_uint256)50_storage"},{"astId":14069,"contract":"src/plugin/extensions/proposal/ProposalUpgradeable.sol:ProposalUpgradeable","label":"proposalCounter","offset":0,"slot":"51","type":"t_struct(Counter)2599_storage"},{"astId":14200,"contract":"src/plugin/extensions/proposal/ProposalUpgradeable.sol:ProposalUpgradeable","label":"__gap","offset":0,"slot":"52","type":"t_array(t_uint256)49_storage"}],"types":{"t_array(t_uint256)49_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[49]","numberOfBytes":"1568"},"t_array(t_uint256)50_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[50]","numberOfBytes":"1600"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_struct(Counter)2599_storage":{"encoding":"inplace","label":"struct CountersUpgradeable.Counter","members":[{"astId":2598,"contract":"src/plugin/extensions/proposal/ProposalUpgradeable.sol:ProposalUpgradeable","label":"_value","offset":0,"slot":"0","type":"t_uint256"}],"numberOfBytes":"32"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"events":{"ProposalCreated(uint256,address,uint64,uint64,bytes,(address,uint256,bytes)[],uint256)":{"notice":"Emitted when a proposal is created."},"ProposalExecuted(uint256)":{"notice":"Emitted when a proposal is executed."}},"kind":"user","methods":{"proposalCount()":{"notice":"Returns the proposal count determining the next proposal ID."},"supportsInterface(bytes4)":{"notice":"Checks if this or the parent contract supports an interface by its ID."}},"notice":"An abstract contract containing the traits and internal functionality to create and execute proposals that can be inherited by upgradeable DAO plugins.","version":1}}},"src/plugin/setup/IPluginSetup.sol":{"IPluginSetup":{"abi":[{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_dao","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"prepareInstallation","outputs":[{"internalType":"address","name":"plugin","type":"address"},{"components":[{"internalType":"address[]","name":"helpers","type":"address[]"},{"components":[{"internalType":"enum PermissionLib.Operation","name":"operation","type":"uint8"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"condition","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"internalType":"struct PermissionLib.MultiTargetPermission[]","name":"permissions","type":"tuple[]"}],"internalType":"struct IPluginSetup.PreparedSetupData","name":"preparedSetupData","type":"tuple"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_dao","type":"address"},{"components":[{"internalType":"address","name":"plugin","type":"address"},{"internalType":"address[]","name":"currentHelpers","type":"address[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct IPluginSetup.SetupPayload","name":"_payload","type":"tuple"}],"name":"prepareUninstallation","outputs":[{"components":[{"internalType":"enum PermissionLib.Operation","name":"operation","type":"uint8"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"condition","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"internalType":"struct PermissionLib.MultiTargetPermission[]","name":"permissions","type":"tuple[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_dao","type":"address"},{"internalType":"uint16","name":"_fromBuild","type":"uint16"},{"components":[{"internalType":"address","name":"plugin","type":"address"},{"internalType":"address[]","name":"currentHelpers","type":"address[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct IPluginSetup.SetupPayload","name":"_payload","type":"tuple"}],"name":"prepareUpdate","outputs":[{"internalType":"bytes","name":"initData","type":"bytes"},{"components":[{"internalType":"address[]","name":"helpers","type":"address[]"},{"components":[{"internalType":"enum PermissionLib.Operation","name":"operation","type":"uint8"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"condition","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"internalType":"struct PermissionLib.MultiTargetPermission[]","name":"permissions","type":"tuple[]"}],"internalType":"struct IPluginSetup.PreparedSetupData","name":"preparedSetupData","type":"tuple"}],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"author":"Aragon X - 2022-2023","custom:security-contact":"sirt@aragon.org","kind":"dev","methods":{"implementation()":{"details":"The implementation can be instantiated via the `new` keyword, cloned via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)), or proxied via the UUPS proxy pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).","returns":{"_0":"The address of the plugin implementation contract."}},"prepareInstallation(address,bytes)":{"params":{"_dao":"The address of the installing DAO.","_data":"The bytes-encoded data containing the input parameters for the installation as specified in the plugin's build metadata JSON file."},"returns":{"plugin":"The address of the `Plugin` contract being prepared for installation.","preparedSetupData":"The deployed plugin's relevant data which consists of helpers and permissions."}},"prepareUninstallation(address,(address,address[],bytes))":{"params":{"_dao":"The address of the uninstalling DAO.","_payload":"The relevant data necessary for the `prepareUninstallation`. See above."},"returns":{"permissions":"The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the uninstalling DAO."}},"prepareUpdate(address,uint16,(address,address[],bytes))":{"params":{"_dao":"The address of the updating DAO.","_fromBuild":"The build number of the plugin to update from.","_payload":"The relevant data necessary for the `prepareUpdate`. See above."},"returns":{"initData":"The initialization data to be passed to upgradeable contracts when the update is applied in the `PluginSetupProcessor`.","preparedSetupData":"The deployed plugin's relevant data which consists of helpers and permissions."}}},"title":"IPluginSetup","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"implementation()":"5c60da1b","prepareInstallation(address,bytes)":"f10832f1","prepareUninstallation(address,(address,address[],bytes))":"9cb0a124","prepareUpdate(address,uint16,(address,address[],bytes))":"a8a9c29e"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_dao\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"prepareInstallation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"plugin\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address[]\",\"name\":\"helpers\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"enum PermissionLib.Operation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"condition\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PermissionLib.MultiTargetPermission[]\",\"name\":\"permissions\",\"type\":\"tuple[]\"}],\"internalType\":\"struct IPluginSetup.PreparedSetupData\",\"name\":\"preparedSetupData\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_dao\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"plugin\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"currentHelpers\",\"type\":\"address[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IPluginSetup.SetupPayload\",\"name\":\"_payload\",\"type\":\"tuple\"}],\"name\":\"prepareUninstallation\",\"outputs\":[{\"components\":[{\"internalType\":\"enum PermissionLib.Operation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"condition\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PermissionLib.MultiTargetPermission[]\",\"name\":\"permissions\",\"type\":\"tuple[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_dao\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"_fromBuild\",\"type\":\"uint16\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"plugin\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"currentHelpers\",\"type\":\"address[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IPluginSetup.SetupPayload\",\"name\":\"_payload\",\"type\":\"tuple\"}],\"name\":\"prepareUpdate\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"initData\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address[]\",\"name\":\"helpers\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"enum PermissionLib.Operation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"condition\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PermissionLib.MultiTargetPermission[]\",\"name\":\"permissions\",\"type\":\"tuple[]\"}],\"internalType\":\"struct IPluginSetup.PreparedSetupData\",\"name\":\"preparedSetupData\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Aragon X - 2022-2023\",\"custom:security-contact\":\"sirt@aragon.org\",\"kind\":\"dev\",\"methods\":{\"implementation()\":{\"details\":\"The implementation can be instantiated via the `new` keyword, cloned via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)), or proxied via the UUPS proxy pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\",\"returns\":{\"_0\":\"The address of the plugin implementation contract.\"}},\"prepareInstallation(address,bytes)\":{\"params\":{\"_dao\":\"The address of the installing DAO.\",\"_data\":\"The bytes-encoded data containing the input parameters for the installation as specified in the plugin's build metadata JSON file.\"},\"returns\":{\"plugin\":\"The address of the `Plugin` contract being prepared for installation.\",\"preparedSetupData\":\"The deployed plugin's relevant data which consists of helpers and permissions.\"}},\"prepareUninstallation(address,(address,address[],bytes))\":{\"params\":{\"_dao\":\"The address of the uninstalling DAO.\",\"_payload\":\"The relevant data necessary for the `prepareUninstallation`. See above.\"},\"returns\":{\"permissions\":\"The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the uninstalling DAO.\"}},\"prepareUpdate(address,uint16,(address,address[],bytes))\":{\"params\":{\"_dao\":\"The address of the updating DAO.\",\"_fromBuild\":\"The build number of the plugin to update from.\",\"_payload\":\"The relevant data necessary for the `prepareUpdate`. See above.\"},\"returns\":{\"initData\":\"The initialization data to be passed to upgradeable contracts when the update is applied in the `PluginSetupProcessor`.\",\"preparedSetupData\":\"The deployed plugin's relevant data which consists of helpers and permissions.\"}}},\"title\":\"IPluginSetup\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"implementation()\":{\"notice\":\"Returns the plugin implementation address.\"},\"prepareInstallation(address,bytes)\":{\"notice\":\"Prepares the installation of a plugin.\"},\"prepareUninstallation(address,(address,address[],bytes))\":{\"notice\":\"Prepares the uninstallation of a plugin.\"},\"prepareUpdate(address,uint16,(address,address[],bytes))\":{\"notice\":\"Prepares the update of a plugin.\"}},\"notice\":\"The interface required for a plugin setup contract to be consumed by the `PluginSetupProcessor` for plugin installations, updates, and uninstallations.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/plugin/setup/IPluginSetup.sol\":\"IPluginSetup\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"src/dao/IDAO.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IDAO\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for DAOs within the Aragon App DAO framework.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IDAO {\\n /// @notice The action struct to be consumed by the DAO's `execute` function resulting in an external call.\\n /// @param to The address to call.\\n /// @param value The native token value to be sent with the call.\\n /// @param data The bytes-encoded function selector and calldata for the call.\\n struct Action {\\n address to;\\n uint256 value;\\n bytes data;\\n }\\n\\n /// @notice Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\\n /// @param _where The address of the contract.\\n /// @param _who The address of a EOA or contract to give the permissions.\\n /// @param _permissionId The permission identifier.\\n /// @param _data The optional data passed to the `PermissionCondition` registered.\\n /// @return Returns true if the address has permission, false if not.\\n function hasPermission(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes memory _data\\n ) external view returns (bool);\\n\\n /// @notice Updates the DAO metadata (e.g., an IPFS hash).\\n /// @param _metadata The IPFS hash of the new metadata object.\\n function setMetadata(bytes calldata _metadata) external;\\n\\n /// @notice Emitted when the DAO metadata is updated.\\n /// @param metadata The IPFS hash of the new metadata object.\\n event MetadataSet(bytes metadata);\\n\\n /// @notice Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted.\\n /// @param _callId The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce.\\n /// @param _actions The array of actions.\\n /// @param _allowFailureMap A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @return The array of results obtained from the executed actions in `bytes`.\\n /// @return The resulting failure map containing the actions have actually failed.\\n function execute(\\n bytes32 _callId,\\n Action[] memory _actions,\\n uint256 _allowFailureMap\\n ) external returns (bytes[] memory, uint256);\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param actor The address of the caller.\\n /// @param callId The ID of the call.\\n /// @param actions The array of actions executed.\\n /// @param allowFailureMap The allow failure map encoding which actions are allowed to fail.\\n /// @param failureMap The failure map encoding which actions have failed.\\n /// @param execResults The array with the results of the executed actions.\\n /// @dev The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce.\\n event Executed(\\n address indexed actor,\\n bytes32 callId,\\n Action[] actions,\\n uint256 allowFailureMap,\\n uint256 failureMap,\\n bytes[] execResults\\n );\\n\\n /// @notice Emitted when a standard callback is registered.\\n /// @param interfaceId The ID of the interface.\\n /// @param callbackSelector The selector of the callback function.\\n /// @param magicNumber The magic number to be registered for the callback function selector.\\n event StandardCallbackRegistered(\\n bytes4 interfaceId,\\n bytes4 callbackSelector,\\n bytes4 magicNumber\\n );\\n\\n /// @notice Deposits (native) tokens to the DAO contract with a reference string.\\n /// @param _token The address of the token or address(0) in case of the native token.\\n /// @param _amount The amount of tokens to deposit.\\n /// @param _reference The reference describing the deposit reason.\\n function deposit(address _token, uint256 _amount, string calldata _reference) external payable;\\n\\n /// @notice Emitted when a token deposit has been made to the DAO.\\n /// @param sender The address of the sender.\\n /// @param token The address of the deposited token.\\n /// @param amount The amount of tokens deposited.\\n /// @param _reference The reference describing the deposit reason.\\n event Deposited(\\n address indexed sender,\\n address indexed token,\\n uint256 amount,\\n string _reference\\n );\\n\\n /// @notice Emitted when a native token deposit has been made to the DAO.\\n /// @dev This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).\\n /// @param sender The address of the sender.\\n /// @param amount The amount of native tokens deposited.\\n event NativeTokenDeposited(address sender, uint256 amount);\\n\\n /// @notice Setter for the trusted forwarder verifying the meta transaction.\\n /// @param _trustedForwarder The trusted forwarder address.\\n function setTrustedForwarder(address _trustedForwarder) external;\\n\\n /// @notice Getter for the trusted forwarder verifying the meta transaction.\\n /// @return The trusted forwarder address.\\n function getTrustedForwarder() external view returns (address);\\n\\n /// @notice Emitted when a new TrustedForwarder is set on the DAO.\\n /// @param forwarder the new forwarder address.\\n event TrustedForwarderSet(address forwarder);\\n\\n /// @notice Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\\n /// @param _hash The hash of the data to be signed.\\n /// @param _signature The signature byte array associated with `_hash`.\\n /// @return Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not.\\n function isValidSignature(bytes32 _hash, bytes memory _signature) external returns (bytes4);\\n\\n /// @notice Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\\n /// @param _interfaceId The ID of the interface.\\n /// @param _callbackSelector The selector of the callback function.\\n /// @param _magicNumber The magic number to be registered for the function signature.\\n function registerStandardCallback(\\n bytes4 _interfaceId,\\n bytes4 _callbackSelector,\\n bytes4 _magicNumber\\n ) external;\\n\\n /// @notice Removed function being left here to not corrupt the IDAO interface ID. Any call will revert.\\n /// @dev Introduced in v1.0.0. Removed in v1.4.0.\\n function setSignatureValidator(address) external;\\n}\\n\",\"keccak256\":\"0xb7f615523c26de042edce98731c658f44a1edb2464387ac1b642c4c69f57128e\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/PermissionLib.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title PermissionLib\\n/// @author Aragon X - 2021-2023\\n/// @notice A library containing objects for permission processing.\\n/// @custom:security-contact sirt@aragon.org\\nlibrary PermissionLib {\\n /// @notice A constant expressing that no condition is applied to a permission.\\n address public constant NO_CONDITION = address(0);\\n\\n /// @notice The types of permission operations available in the `PermissionManager`.\\n /// @param Grant The grant operation setting a permission without a condition.\\n /// @param Revoke The revoke operation removing a permission (that was granted with or without a condition).\\n /// @param GrantWithCondition The grant operation setting a permission with a condition.\\n enum Operation {\\n Grant,\\n Revoke,\\n GrantWithCondition\\n }\\n\\n /// @notice A struct containing the information for a permission to be applied on a single target contract without a condition.\\n /// @param operation The permission operation type.\\n /// @param who The address (EOA or contract) receiving the permission.\\n /// @param permissionId The permission identifier.\\n struct SingleTargetPermission {\\n Operation operation;\\n address who;\\n bytes32 permissionId;\\n }\\n\\n /// @notice A struct containing the information for a permission to be applied on multiple target contracts, optionally, with a condition.\\n /// @param operation The permission operation type.\\n /// @param where The address of the target contract for which `who` receives permission.\\n /// @param who The address (EOA or contract) receiving the permission.\\n /// @param condition The `PermissionCondition` that will be asked for authorization on calls connected to the specified permission identifier.\\n /// @param permissionId The permission identifier.\\n struct MultiTargetPermission {\\n Operation operation;\\n address where;\\n address who;\\n address condition;\\n bytes32 permissionId;\\n }\\n}\\n\",\"keccak256\":\"0x470faf3c4891ebc6420ef6cc09f6098917568ccc79268c90954d1478199b6097\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/setup/IPluginSetup.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {PermissionLib} from \\\"../../permission/PermissionLib.sol\\\";\\n\\n// solhint-disable-next-line no-unused-import\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @title IPluginSetup\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for a plugin setup contract to be consumed by the `PluginSetupProcessor` for plugin installations, updates, and uninstallations.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IPluginSetup {\\n /// @notice The data associated with a prepared setup.\\n /// @param helpers The address array of helpers (contracts or EOAs) associated with this plugin version after the installation or update.\\n /// @param permissions The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the installing or updating DAO.\\n struct PreparedSetupData {\\n address[] helpers;\\n PermissionLib.MultiTargetPermission[] permissions;\\n }\\n\\n /// @notice The payload for plugin updates and uninstallations containing the existing contracts as well as optional data to be consumed by the plugin setup.\\n /// @param plugin The address of the `Plugin`.\\n /// @param currentHelpers The address array of all current helpers (contracts or EOAs) associated with the plugin to update from.\\n /// @param data The bytes-encoded data containing the input parameters for the preparation of update/uninstall as specified in the corresponding ABI on the version's metadata.\\n struct SetupPayload {\\n address plugin;\\n address[] currentHelpers;\\n bytes data;\\n }\\n\\n /// @notice Prepares the installation of a plugin.\\n /// @param _dao The address of the installing DAO.\\n /// @param _data The bytes-encoded data containing the input parameters for the installation as specified in the plugin's build metadata JSON file.\\n /// @return plugin The address of the `Plugin` contract being prepared for installation.\\n /// @return preparedSetupData The deployed plugin's relevant data which consists of helpers and permissions.\\n function prepareInstallation(\\n address _dao,\\n bytes calldata _data\\n ) external returns (address plugin, PreparedSetupData memory preparedSetupData);\\n\\n /// @notice Prepares the update of a plugin.\\n /// @param _dao The address of the updating DAO.\\n /// @param _fromBuild The build number of the plugin to update from.\\n /// @param _payload The relevant data necessary for the `prepareUpdate`. See above.\\n /// @return initData The initialization data to be passed to upgradeable contracts when the update is applied in the `PluginSetupProcessor`.\\n /// @return preparedSetupData The deployed plugin's relevant data which consists of helpers and permissions.\\n function prepareUpdate(\\n address _dao,\\n uint16 _fromBuild,\\n SetupPayload calldata _payload\\n ) external returns (bytes memory initData, PreparedSetupData memory preparedSetupData);\\n\\n /// @notice Prepares the uninstallation of a plugin.\\n /// @param _dao The address of the uninstalling DAO.\\n /// @param _payload The relevant data necessary for the `prepareUninstallation`. See above.\\n /// @return permissions The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the uninstalling DAO.\\n function prepareUninstallation(\\n address _dao,\\n SetupPayload calldata _payload\\n ) external returns (PermissionLib.MultiTargetPermission[] memory permissions);\\n\\n /// @notice Returns the plugin implementation address.\\n /// @return The address of the plugin implementation contract.\\n /// @dev The implementation can be instantiated via the `new` keyword, cloned via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)), or proxied via the UUPS proxy pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0x21c99995208039ac6ace219b6f273243811dc2aa66399e8e499e43ec30b82fa9\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{"implementation()":{"notice":"Returns the plugin implementation address."},"prepareInstallation(address,bytes)":{"notice":"Prepares the installation of a plugin."},"prepareUninstallation(address,(address,address[],bytes))":{"notice":"Prepares the uninstallation of a plugin."},"prepareUpdate(address,uint16,(address,address[],bytes))":{"notice":"Prepares the update of a plugin."}},"notice":"The interface required for a plugin setup contract to be consumed by the `PluginSetupProcessor` for plugin installations, updates, and uninstallations.","version":1}}},"src/plugin/setup/PluginSetup.sol":{"PluginSetup":{"abi":[{"inputs":[],"name":"NonUpgradeablePlugin","type":"error"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_dao","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"prepareInstallation","outputs":[{"internalType":"address","name":"plugin","type":"address"},{"components":[{"internalType":"address[]","name":"helpers","type":"address[]"},{"components":[{"internalType":"enum PermissionLib.Operation","name":"operation","type":"uint8"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"condition","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"internalType":"struct PermissionLib.MultiTargetPermission[]","name":"permissions","type":"tuple[]"}],"internalType":"struct IPluginSetup.PreparedSetupData","name":"preparedSetupData","type":"tuple"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_dao","type":"address"},{"components":[{"internalType":"address","name":"plugin","type":"address"},{"internalType":"address[]","name":"currentHelpers","type":"address[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct IPluginSetup.SetupPayload","name":"_payload","type":"tuple"}],"name":"prepareUninstallation","outputs":[{"components":[{"internalType":"enum PermissionLib.Operation","name":"operation","type":"uint8"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"condition","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"internalType":"struct PermissionLib.MultiTargetPermission[]","name":"permissions","type":"tuple[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_dao","type":"address"},{"internalType":"uint16","name":"_fromBuild","type":"uint16"},{"components":[{"internalType":"address","name":"plugin","type":"address"},{"internalType":"address[]","name":"currentHelpers","type":"address[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct IPluginSetup.SetupPayload","name":"_payload","type":"tuple"}],"name":"prepareUpdate","outputs":[{"internalType":"bytes","name":"","type":"bytes"},{"components":[{"internalType":"address[]","name":"helpers","type":"address[]"},{"components":[{"internalType":"enum PermissionLib.Operation","name":"operation","type":"uint8"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"condition","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"internalType":"struct PermissionLib.MultiTargetPermission[]","name":"permissions","type":"tuple[]"}],"internalType":"struct IPluginSetup.PreparedSetupData","name":"","type":"tuple"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"protocolVersion","outputs":[{"internalType":"uint8[3]","name":"","type":"uint8[3]"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"author":"Aragon X - 2022-2024","custom:security-contact":"sirt@aragon.org","kind":"dev","methods":{"constructor":{"params":{"_implementation":"The address of the plugin implementation contract."}},"implementation()":{"details":"The implementation can be instantiated via the `new` keyword, cloned via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)), or proxied via the UUPS proxy pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).","returns":{"_0":"The address of the plugin implementation contract."}},"prepareInstallation(address,bytes)":{"params":{"_dao":"The address of the installing DAO.","_data":"The bytes-encoded data containing the input parameters for the installation as specified in the plugin's build metadata JSON file."},"returns":{"plugin":"The address of the `Plugin` contract being prepared for installation.","preparedSetupData":"The deployed plugin's relevant data which consists of helpers and permissions."}},"prepareUninstallation(address,(address,address[],bytes))":{"params":{"_dao":"The address of the uninstalling DAO.","_payload":"The relevant data necessary for the `prepareUninstallation`. See above."},"returns":{"permissions":"The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the uninstalling DAO."}},"prepareUpdate(address,uint16,(address,address[],bytes))":{"details":"Since the underlying plugin is non-upgradeable, this non-virtual function must always revert.","params":{"_dao":"The address of the updating DAO.","_fromBuild":"The build number of the plugin to update from.","_payload":"The relevant data necessary for the `prepareUpdate`. See above."},"returns":{"_0":"The initialization data to be passed to upgradeable contracts when the update is applied in the `PluginSetupProcessor`.","_1":"The deployed plugin's relevant data which consists of helpers and permissions."}},"protocolVersion()":{"details":"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.","returns":{"_0":"Returns the semantic Aragon OSx protocol version number."}},"supportsInterface(bytes4)":{"params":{"_interfaceId":"The ID of the interface."},"returns":{"_0":"Returns `true` if the interface is supported."}}},"title":"PluginSetup","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"implementation()":"5c60da1b","prepareInstallation(address,bytes)":"f10832f1","prepareUninstallation(address,(address,address[],bytes))":"9cb0a124","prepareUpdate(address,uint16,(address,address[],bytes))":"a8a9c29e","protocolVersion()":"2ae9c600","supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"NonUpgradeablePlugin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_dao\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"prepareInstallation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"plugin\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address[]\",\"name\":\"helpers\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"enum PermissionLib.Operation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"condition\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PermissionLib.MultiTargetPermission[]\",\"name\":\"permissions\",\"type\":\"tuple[]\"}],\"internalType\":\"struct IPluginSetup.PreparedSetupData\",\"name\":\"preparedSetupData\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_dao\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"plugin\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"currentHelpers\",\"type\":\"address[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IPluginSetup.SetupPayload\",\"name\":\"_payload\",\"type\":\"tuple\"}],\"name\":\"prepareUninstallation\",\"outputs\":[{\"components\":[{\"internalType\":\"enum PermissionLib.Operation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"condition\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PermissionLib.MultiTargetPermission[]\",\"name\":\"permissions\",\"type\":\"tuple[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_dao\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"_fromBuild\",\"type\":\"uint16\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"plugin\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"currentHelpers\",\"type\":\"address[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IPluginSetup.SetupPayload\",\"name\":\"_payload\",\"type\":\"tuple\"}],\"name\":\"prepareUpdate\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address[]\",\"name\":\"helpers\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"enum PermissionLib.Operation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"condition\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PermissionLib.MultiTargetPermission[]\",\"name\":\"permissions\",\"type\":\"tuple[]\"}],\"internalType\":\"struct IPluginSetup.PreparedSetupData\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"protocolVersion\",\"outputs\":[{\"internalType\":\"uint8[3]\",\"name\":\"\",\"type\":\"uint8[3]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Aragon X - 2022-2024\",\"custom:security-contact\":\"sirt@aragon.org\",\"kind\":\"dev\",\"methods\":{\"constructor\":{\"params\":{\"_implementation\":\"The address of the plugin implementation contract.\"}},\"implementation()\":{\"details\":\"The implementation can be instantiated via the `new` keyword, cloned via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)), or proxied via the UUPS proxy pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\",\"returns\":{\"_0\":\"The address of the plugin implementation contract.\"}},\"prepareInstallation(address,bytes)\":{\"params\":{\"_dao\":\"The address of the installing DAO.\",\"_data\":\"The bytes-encoded data containing the input parameters for the installation as specified in the plugin's build metadata JSON file.\"},\"returns\":{\"plugin\":\"The address of the `Plugin` contract being prepared for installation.\",\"preparedSetupData\":\"The deployed plugin's relevant data which consists of helpers and permissions.\"}},\"prepareUninstallation(address,(address,address[],bytes))\":{\"params\":{\"_dao\":\"The address of the uninstalling DAO.\",\"_payload\":\"The relevant data necessary for the `prepareUninstallation`. See above.\"},\"returns\":{\"permissions\":\"The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the uninstalling DAO.\"}},\"prepareUpdate(address,uint16,(address,address[],bytes))\":{\"details\":\"Since the underlying plugin is non-upgradeable, this non-virtual function must always revert.\",\"params\":{\"_dao\":\"The address of the updating DAO.\",\"_fromBuild\":\"The build number of the plugin to update from.\",\"_payload\":\"The relevant data necessary for the `prepareUpdate`. See above.\"},\"returns\":{\"_0\":\"The initialization data to be passed to upgradeable contracts when the update is applied in the `PluginSetupProcessor`.\",\"_1\":\"The deployed plugin's relevant data which consists of helpers and permissions.\"}},\"protocolVersion()\":{\"details\":\"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\",\"returns\":{\"_0\":\"Returns the semantic Aragon OSx protocol version number.\"}},\"supportsInterface(bytes4)\":{\"params\":{\"_interfaceId\":\"The ID of the interface.\"},\"returns\":{\"_0\":\"Returns `true` if the interface is supported.\"}}},\"title\":\"PluginSetup\",\"version\":1},\"userdoc\":{\"errors\":{\"NonUpgradeablePlugin()\":[{\"notice\":\"Thrown when attempting to prepare an update on a non-upgradeable plugin.\"}]},\"kind\":\"user\",\"methods\":{\"constructor\":{\"notice\":\"The contract constructor, that setting the plugin implementation contract.\"},\"implementation()\":{\"notice\":\"Returns the plugin implementation address.\"},\"prepareInstallation(address,bytes)\":{\"notice\":\"Prepares the installation of a plugin.\"},\"prepareUninstallation(address,(address,address[],bytes))\":{\"notice\":\"Prepares the uninstallation of a plugin.\"},\"prepareUpdate(address,uint16,(address,address[],bytes))\":{\"notice\":\"Prepares the update of a plugin.\"},\"protocolVersion()\":{\"notice\":\"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Checks if this or the parent contract supports an interface by its ID.\"}},\"notice\":\"An abstract contract to inherit from to implement the plugin setup for non-upgradeable plugins, i.e, - `Plugin` being deployed via the `new` keyword - `PluginCloneable` being deployed via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)).\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/plugin/setup/PluginSetup.sol\":\"PluginSetup\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165 is IERC165 {\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165).interfaceId;\\n }\\n}\\n\",\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"src/dao/IDAO.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IDAO\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for DAOs within the Aragon App DAO framework.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IDAO {\\n /// @notice The action struct to be consumed by the DAO's `execute` function resulting in an external call.\\n /// @param to The address to call.\\n /// @param value The native token value to be sent with the call.\\n /// @param data The bytes-encoded function selector and calldata for the call.\\n struct Action {\\n address to;\\n uint256 value;\\n bytes data;\\n }\\n\\n /// @notice Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\\n /// @param _where The address of the contract.\\n /// @param _who The address of a EOA or contract to give the permissions.\\n /// @param _permissionId The permission identifier.\\n /// @param _data The optional data passed to the `PermissionCondition` registered.\\n /// @return Returns true if the address has permission, false if not.\\n function hasPermission(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes memory _data\\n ) external view returns (bool);\\n\\n /// @notice Updates the DAO metadata (e.g., an IPFS hash).\\n /// @param _metadata The IPFS hash of the new metadata object.\\n function setMetadata(bytes calldata _metadata) external;\\n\\n /// @notice Emitted when the DAO metadata is updated.\\n /// @param metadata The IPFS hash of the new metadata object.\\n event MetadataSet(bytes metadata);\\n\\n /// @notice Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted.\\n /// @param _callId The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce.\\n /// @param _actions The array of actions.\\n /// @param _allowFailureMap A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @return The array of results obtained from the executed actions in `bytes`.\\n /// @return The resulting failure map containing the actions have actually failed.\\n function execute(\\n bytes32 _callId,\\n Action[] memory _actions,\\n uint256 _allowFailureMap\\n ) external returns (bytes[] memory, uint256);\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param actor The address of the caller.\\n /// @param callId The ID of the call.\\n /// @param actions The array of actions executed.\\n /// @param allowFailureMap The allow failure map encoding which actions are allowed to fail.\\n /// @param failureMap The failure map encoding which actions have failed.\\n /// @param execResults The array with the results of the executed actions.\\n /// @dev The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce.\\n event Executed(\\n address indexed actor,\\n bytes32 callId,\\n Action[] actions,\\n uint256 allowFailureMap,\\n uint256 failureMap,\\n bytes[] execResults\\n );\\n\\n /// @notice Emitted when a standard callback is registered.\\n /// @param interfaceId The ID of the interface.\\n /// @param callbackSelector The selector of the callback function.\\n /// @param magicNumber The magic number to be registered for the callback function selector.\\n event StandardCallbackRegistered(\\n bytes4 interfaceId,\\n bytes4 callbackSelector,\\n bytes4 magicNumber\\n );\\n\\n /// @notice Deposits (native) tokens to the DAO contract with a reference string.\\n /// @param _token The address of the token or address(0) in case of the native token.\\n /// @param _amount The amount of tokens to deposit.\\n /// @param _reference The reference describing the deposit reason.\\n function deposit(address _token, uint256 _amount, string calldata _reference) external payable;\\n\\n /// @notice Emitted when a token deposit has been made to the DAO.\\n /// @param sender The address of the sender.\\n /// @param token The address of the deposited token.\\n /// @param amount The amount of tokens deposited.\\n /// @param _reference The reference describing the deposit reason.\\n event Deposited(\\n address indexed sender,\\n address indexed token,\\n uint256 amount,\\n string _reference\\n );\\n\\n /// @notice Emitted when a native token deposit has been made to the DAO.\\n /// @dev This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).\\n /// @param sender The address of the sender.\\n /// @param amount The amount of native tokens deposited.\\n event NativeTokenDeposited(address sender, uint256 amount);\\n\\n /// @notice Setter for the trusted forwarder verifying the meta transaction.\\n /// @param _trustedForwarder The trusted forwarder address.\\n function setTrustedForwarder(address _trustedForwarder) external;\\n\\n /// @notice Getter for the trusted forwarder verifying the meta transaction.\\n /// @return The trusted forwarder address.\\n function getTrustedForwarder() external view returns (address);\\n\\n /// @notice Emitted when a new TrustedForwarder is set on the DAO.\\n /// @param forwarder the new forwarder address.\\n event TrustedForwarderSet(address forwarder);\\n\\n /// @notice Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\\n /// @param _hash The hash of the data to be signed.\\n /// @param _signature The signature byte array associated with `_hash`.\\n /// @return Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not.\\n function isValidSignature(bytes32 _hash, bytes memory _signature) external returns (bytes4);\\n\\n /// @notice Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\\n /// @param _interfaceId The ID of the interface.\\n /// @param _callbackSelector The selector of the callback function.\\n /// @param _magicNumber The magic number to be registered for the function signature.\\n function registerStandardCallback(\\n bytes4 _interfaceId,\\n bytes4 _callbackSelector,\\n bytes4 _magicNumber\\n ) external;\\n\\n /// @notice Removed function being left here to not corrupt the IDAO interface ID. Any call will revert.\\n /// @dev Introduced in v1.0.0. Removed in v1.4.0.\\n function setSignatureValidator(address) external;\\n}\\n\",\"keccak256\":\"0xb7f615523c26de042edce98731c658f44a1edb2464387ac1b642c4c69f57128e\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/PermissionLib.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title PermissionLib\\n/// @author Aragon X - 2021-2023\\n/// @notice A library containing objects for permission processing.\\n/// @custom:security-contact sirt@aragon.org\\nlibrary PermissionLib {\\n /// @notice A constant expressing that no condition is applied to a permission.\\n address public constant NO_CONDITION = address(0);\\n\\n /// @notice The types of permission operations available in the `PermissionManager`.\\n /// @param Grant The grant operation setting a permission without a condition.\\n /// @param Revoke The revoke operation removing a permission (that was granted with or without a condition).\\n /// @param GrantWithCondition The grant operation setting a permission with a condition.\\n enum Operation {\\n Grant,\\n Revoke,\\n GrantWithCondition\\n }\\n\\n /// @notice A struct containing the information for a permission to be applied on a single target contract without a condition.\\n /// @param operation The permission operation type.\\n /// @param who The address (EOA or contract) receiving the permission.\\n /// @param permissionId The permission identifier.\\n struct SingleTargetPermission {\\n Operation operation;\\n address who;\\n bytes32 permissionId;\\n }\\n\\n /// @notice A struct containing the information for a permission to be applied on multiple target contracts, optionally, with a condition.\\n /// @param operation The permission operation type.\\n /// @param where The address of the target contract for which `who` receives permission.\\n /// @param who The address (EOA or contract) receiving the permission.\\n /// @param condition The `PermissionCondition` that will be asked for authorization on calls connected to the specified permission identifier.\\n /// @param permissionId The permission identifier.\\n struct MultiTargetPermission {\\n Operation operation;\\n address where;\\n address who;\\n address condition;\\n bytes32 permissionId;\\n }\\n}\\n\",\"keccak256\":\"0x470faf3c4891ebc6420ef6cc09f6098917568ccc79268c90954d1478199b6097\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/setup/IPluginSetup.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {PermissionLib} from \\\"../../permission/PermissionLib.sol\\\";\\n\\n// solhint-disable-next-line no-unused-import\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @title IPluginSetup\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for a plugin setup contract to be consumed by the `PluginSetupProcessor` for plugin installations, updates, and uninstallations.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IPluginSetup {\\n /// @notice The data associated with a prepared setup.\\n /// @param helpers The address array of helpers (contracts or EOAs) associated with this plugin version after the installation or update.\\n /// @param permissions The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the installing or updating DAO.\\n struct PreparedSetupData {\\n address[] helpers;\\n PermissionLib.MultiTargetPermission[] permissions;\\n }\\n\\n /// @notice The payload for plugin updates and uninstallations containing the existing contracts as well as optional data to be consumed by the plugin setup.\\n /// @param plugin The address of the `Plugin`.\\n /// @param currentHelpers The address array of all current helpers (contracts or EOAs) associated with the plugin to update from.\\n /// @param data The bytes-encoded data containing the input parameters for the preparation of update/uninstall as specified in the corresponding ABI on the version's metadata.\\n struct SetupPayload {\\n address plugin;\\n address[] currentHelpers;\\n bytes data;\\n }\\n\\n /// @notice Prepares the installation of a plugin.\\n /// @param _dao The address of the installing DAO.\\n /// @param _data The bytes-encoded data containing the input parameters for the installation as specified in the plugin's build metadata JSON file.\\n /// @return plugin The address of the `Plugin` contract being prepared for installation.\\n /// @return preparedSetupData The deployed plugin's relevant data which consists of helpers and permissions.\\n function prepareInstallation(\\n address _dao,\\n bytes calldata _data\\n ) external returns (address plugin, PreparedSetupData memory preparedSetupData);\\n\\n /// @notice Prepares the update of a plugin.\\n /// @param _dao The address of the updating DAO.\\n /// @param _fromBuild The build number of the plugin to update from.\\n /// @param _payload The relevant data necessary for the `prepareUpdate`. See above.\\n /// @return initData The initialization data to be passed to upgradeable contracts when the update is applied in the `PluginSetupProcessor`.\\n /// @return preparedSetupData The deployed plugin's relevant data which consists of helpers and permissions.\\n function prepareUpdate(\\n address _dao,\\n uint16 _fromBuild,\\n SetupPayload calldata _payload\\n ) external returns (bytes memory initData, PreparedSetupData memory preparedSetupData);\\n\\n /// @notice Prepares the uninstallation of a plugin.\\n /// @param _dao The address of the uninstalling DAO.\\n /// @param _payload The relevant data necessary for the `prepareUninstallation`. See above.\\n /// @return permissions The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the uninstalling DAO.\\n function prepareUninstallation(\\n address _dao,\\n SetupPayload calldata _payload\\n ) external returns (PermissionLib.MultiTargetPermission[] memory permissions);\\n\\n /// @notice Returns the plugin implementation address.\\n /// @return The address of the plugin implementation contract.\\n /// @dev The implementation can be instantiated via the `new` keyword, cloned via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)), or proxied via the UUPS proxy pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0x21c99995208039ac6ace219b6f273243811dc2aa66399e8e499e43ec30b82fa9\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/setup/PluginSetup.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ERC165} from \\\"@openzeppelin/contracts/utils/introspection/ERC165.sol\\\";\\n\\nimport {IProtocolVersion} from \\\"../../utils/versioning/IProtocolVersion.sol\\\";\\nimport {ProtocolVersion} from \\\"../../utils/versioning/ProtocolVersion.sol\\\";\\nimport {IPluginSetup} from \\\"./IPluginSetup.sol\\\";\\n\\n/// @title PluginSetup\\n/// @author Aragon X - 2022-2024\\n/// @notice An abstract contract to inherit from to implement the plugin setup for non-upgradeable plugins, i.e,\\n/// - `Plugin` being deployed via the `new` keyword\\n/// - `PluginCloneable` being deployed via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)).\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract PluginSetup is ERC165, IPluginSetup, ProtocolVersion {\\n /// @notice The address of the plugin implementation contract for initial block explorer verification and, in the case of `PluginClonable` implementations, to create [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167) clones from.\\n address internal immutable IMPLEMENTATION;\\n\\n /// @notice Thrown when attempting to prepare an update on a non-upgradeable plugin.\\n error NonUpgradeablePlugin();\\n\\n /// @notice The contract constructor, that setting the plugin implementation contract.\\n /// @param _implementation The address of the plugin implementation contract.\\n constructor(address _implementation) {\\n IMPLEMENTATION = _implementation;\\n }\\n\\n /// @inheritdoc IPluginSetup\\n /// @dev Since the underlying plugin is non-upgradeable, this non-virtual function must always revert.\\n function prepareUpdate(\\n address _dao,\\n uint16 _fromBuild,\\n SetupPayload calldata _payload\\n ) external pure returns (bytes memory, PreparedSetupData memory) {\\n (_dao, _fromBuild, _payload);\\n revert NonUpgradeablePlugin();\\n }\\n\\n /// @notice Checks if this or the parent contract supports an interface by its ID.\\n /// @param _interfaceId The ID of the interface.\\n /// @return Returns `true` if the interface is supported.\\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\\n return\\n _interfaceId == type(IPluginSetup).interfaceId ||\\n _interfaceId == type(IProtocolVersion).interfaceId ||\\n super.supportsInterface(_interfaceId);\\n }\\n\\n /// @inheritdoc IPluginSetup\\n function implementation() public view returns (address) {\\n return IMPLEMENTATION;\\n }\\n}\\n\",\"keccak256\":\"0x93044f8080758c5cf8d621e3614b8150f55572a1770880106a49dfa53784a9d2\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/IProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IProtocolVersion\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the semantic Aragon OSx protocol version number.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IProtocolVersion {\\n /// @notice Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\\n /// @return _version Returns the semantic Aragon OSx protocol version number.\\n /// @dev This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\\n function protocolVersion() external view returns (uint8[3] memory _version);\\n}\\n\",\"keccak256\":\"0x00a4da654d21dc1bdadbdc8bd54bb86c378c56f85e461ccc31303628ea621361\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/ProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IProtocolVersion} from \\\"./IProtocolVersion.sol\\\";\\n\\n/// @title ProtocolVersion\\n/// @author Aragon X - 2023\\n/// @notice An abstract, stateless, non-upgradeable contract providing the current Aragon OSx protocol version number.\\n/// @dev Do not add any new variables to this contract that would shift down storage in the inheritance chain.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract ProtocolVersion is IProtocolVersion {\\n // IMPORTANT: Do not add any storage variable, see the above notice.\\n\\n /// @inheritdoc IProtocolVersion\\n function protocolVersion() public pure returns (uint8[3] memory) {\\n return [1, 4, 0];\\n }\\n}\\n\",\"keccak256\":\"0x3975c937be935f687c6b6b8f379071232681e98cf04b175d72781b819ea52bdb\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"errors":{"NonUpgradeablePlugin()":[{"notice":"Thrown when attempting to prepare an update on a non-upgradeable plugin."}]},"kind":"user","methods":{"constructor":{"notice":"The contract constructor, that setting the plugin implementation contract."},"implementation()":{"notice":"Returns the plugin implementation address."},"prepareInstallation(address,bytes)":{"notice":"Prepares the installation of a plugin."},"prepareUninstallation(address,(address,address[],bytes))":{"notice":"Prepares the uninstallation of a plugin."},"prepareUpdate(address,uint16,(address,address[],bytes))":{"notice":"Prepares the update of a plugin."},"protocolVersion()":{"notice":"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with."},"supportsInterface(bytes4)":{"notice":"Checks if this or the parent contract supports an interface by its ID."}},"notice":"An abstract contract to inherit from to implement the plugin setup for non-upgradeable plugins, i.e, - `Plugin` being deployed via the `new` keyword - `PluginCloneable` being deployed via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)).","version":1}}},"src/plugin/setup/PluginUpgradeableSetup.sol":{"PluginUpgradeableSetup":{"abi":[{"inputs":[{"internalType":"uint16","name":"fromBuild","type":"uint16"},{"internalType":"uint16","name":"thisBuild","type":"uint16"}],"name":"InvalidUpdatePath","type":"error"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_dao","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"prepareInstallation","outputs":[{"internalType":"address","name":"plugin","type":"address"},{"components":[{"internalType":"address[]","name":"helpers","type":"address[]"},{"components":[{"internalType":"enum PermissionLib.Operation","name":"operation","type":"uint8"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"condition","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"internalType":"struct PermissionLib.MultiTargetPermission[]","name":"permissions","type":"tuple[]"}],"internalType":"struct IPluginSetup.PreparedSetupData","name":"preparedSetupData","type":"tuple"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_dao","type":"address"},{"components":[{"internalType":"address","name":"plugin","type":"address"},{"internalType":"address[]","name":"currentHelpers","type":"address[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct IPluginSetup.SetupPayload","name":"_payload","type":"tuple"}],"name":"prepareUninstallation","outputs":[{"components":[{"internalType":"enum PermissionLib.Operation","name":"operation","type":"uint8"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"condition","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"internalType":"struct PermissionLib.MultiTargetPermission[]","name":"permissions","type":"tuple[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_dao","type":"address"},{"internalType":"uint16","name":"_fromBuild","type":"uint16"},{"components":[{"internalType":"address","name":"plugin","type":"address"},{"internalType":"address[]","name":"currentHelpers","type":"address[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct IPluginSetup.SetupPayload","name":"_payload","type":"tuple"}],"name":"prepareUpdate","outputs":[{"internalType":"bytes","name":"initData","type":"bytes"},{"components":[{"internalType":"address[]","name":"helpers","type":"address[]"},{"components":[{"internalType":"enum PermissionLib.Operation","name":"operation","type":"uint8"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"condition","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"internalType":"struct PermissionLib.MultiTargetPermission[]","name":"permissions","type":"tuple[]"}],"internalType":"struct IPluginSetup.PreparedSetupData","name":"preparedSetupData","type":"tuple"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"protocolVersion","outputs":[{"internalType":"uint8[3]","name":"","type":"uint8[3]"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"author":"Aragon X - 2022-2024","custom:security-contact":"sirt@aragon.org","errors":{"InvalidUpdatePath(uint16,uint16)":[{"params":{"fromBuild":"The build number to update from.","thisBuild":"The build number of this setup to update to."}}]},"kind":"dev","methods":{"constructor":{"params":{"_implementation":"The address of the plugin implementation contract."}},"implementation()":{"details":"The implementation can be instantiated via the `new` keyword, cloned via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)), or proxied via the UUPS proxy pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).","returns":{"_0":"The address of the plugin implementation contract."}},"prepareInstallation(address,bytes)":{"params":{"_dao":"The address of the installing DAO.","_data":"The bytes-encoded data containing the input parameters for the installation as specified in the plugin's build metadata JSON file."},"returns":{"plugin":"The address of the `Plugin` contract being prepared for installation.","preparedSetupData":"The deployed plugin's relevant data which consists of helpers and permissions."}},"prepareUninstallation(address,(address,address[],bytes))":{"params":{"_dao":"The address of the uninstalling DAO.","_payload":"The relevant data necessary for the `prepareUninstallation`. See above."},"returns":{"permissions":"The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the uninstalling DAO."}},"prepareUpdate(address,uint16,(address,address[],bytes))":{"params":{"_dao":"The address of the updating DAO.","_fromBuild":"The build number of the plugin to update from.","_payload":"The relevant data necessary for the `prepareUpdate`. See above."},"returns":{"initData":"The initialization data to be passed to upgradeable contracts when the update is applied in the `PluginSetupProcessor`.","preparedSetupData":"The deployed plugin's relevant data which consists of helpers and permissions."}},"protocolVersion()":{"details":"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.","returns":{"_0":"Returns the semantic Aragon OSx protocol version number."}},"supportsInterface(bytes4)":{"params":{"_interfaceId":"The ID of the interface."},"returns":{"_0":"Returns `true` if the interface is supported."}}},"title":"PluginUpgradeableSetup","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"implementation()":"5c60da1b","prepareInstallation(address,bytes)":"f10832f1","prepareUninstallation(address,(address,address[],bytes))":"9cb0a124","prepareUpdate(address,uint16,(address,address[],bytes))":"a8a9c29e","protocolVersion()":"2ae9c600","supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"fromBuild\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"thisBuild\",\"type\":\"uint16\"}],\"name\":\"InvalidUpdatePath\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_dao\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"prepareInstallation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"plugin\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address[]\",\"name\":\"helpers\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"enum PermissionLib.Operation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"condition\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PermissionLib.MultiTargetPermission[]\",\"name\":\"permissions\",\"type\":\"tuple[]\"}],\"internalType\":\"struct IPluginSetup.PreparedSetupData\",\"name\":\"preparedSetupData\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_dao\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"plugin\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"currentHelpers\",\"type\":\"address[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IPluginSetup.SetupPayload\",\"name\":\"_payload\",\"type\":\"tuple\"}],\"name\":\"prepareUninstallation\",\"outputs\":[{\"components\":[{\"internalType\":\"enum PermissionLib.Operation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"condition\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PermissionLib.MultiTargetPermission[]\",\"name\":\"permissions\",\"type\":\"tuple[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_dao\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"_fromBuild\",\"type\":\"uint16\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"plugin\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"currentHelpers\",\"type\":\"address[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IPluginSetup.SetupPayload\",\"name\":\"_payload\",\"type\":\"tuple\"}],\"name\":\"prepareUpdate\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"initData\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address[]\",\"name\":\"helpers\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"enum PermissionLib.Operation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"condition\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PermissionLib.MultiTargetPermission[]\",\"name\":\"permissions\",\"type\":\"tuple[]\"}],\"internalType\":\"struct IPluginSetup.PreparedSetupData\",\"name\":\"preparedSetupData\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"protocolVersion\",\"outputs\":[{\"internalType\":\"uint8[3]\",\"name\":\"\",\"type\":\"uint8[3]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Aragon X - 2022-2024\",\"custom:security-contact\":\"sirt@aragon.org\",\"errors\":{\"InvalidUpdatePath(uint16,uint16)\":[{\"params\":{\"fromBuild\":\"The build number to update from.\",\"thisBuild\":\"The build number of this setup to update to.\"}}]},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"params\":{\"_implementation\":\"The address of the plugin implementation contract.\"}},\"implementation()\":{\"details\":\"The implementation can be instantiated via the `new` keyword, cloned via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)), or proxied via the UUPS proxy pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\",\"returns\":{\"_0\":\"The address of the plugin implementation contract.\"}},\"prepareInstallation(address,bytes)\":{\"params\":{\"_dao\":\"The address of the installing DAO.\",\"_data\":\"The bytes-encoded data containing the input parameters for the installation as specified in the plugin's build metadata JSON file.\"},\"returns\":{\"plugin\":\"The address of the `Plugin` contract being prepared for installation.\",\"preparedSetupData\":\"The deployed plugin's relevant data which consists of helpers and permissions.\"}},\"prepareUninstallation(address,(address,address[],bytes))\":{\"params\":{\"_dao\":\"The address of the uninstalling DAO.\",\"_payload\":\"The relevant data necessary for the `prepareUninstallation`. See above.\"},\"returns\":{\"permissions\":\"The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the uninstalling DAO.\"}},\"prepareUpdate(address,uint16,(address,address[],bytes))\":{\"params\":{\"_dao\":\"The address of the updating DAO.\",\"_fromBuild\":\"The build number of the plugin to update from.\",\"_payload\":\"The relevant data necessary for the `prepareUpdate`. See above.\"},\"returns\":{\"initData\":\"The initialization data to be passed to upgradeable contracts when the update is applied in the `PluginSetupProcessor`.\",\"preparedSetupData\":\"The deployed plugin's relevant data which consists of helpers and permissions.\"}},\"protocolVersion()\":{\"details\":\"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\",\"returns\":{\"_0\":\"Returns the semantic Aragon OSx protocol version number.\"}},\"supportsInterface(bytes4)\":{\"params\":{\"_interfaceId\":\"The ID of the interface.\"},\"returns\":{\"_0\":\"Returns `true` if the interface is supported.\"}}},\"title\":\"PluginUpgradeableSetup\",\"version\":1},\"userdoc\":{\"errors\":{\"InvalidUpdatePath(uint16,uint16)\":[{\"notice\":\"Thrown when an update path is not available, for example, if this is the initial build.\"}]},\"kind\":\"user\",\"methods\":{\"constructor\":{\"notice\":\"The contract constructor, that setting the plugin implementation contract.\"},\"implementation()\":{\"notice\":\"Returns the plugin implementation address.\"},\"prepareInstallation(address,bytes)\":{\"notice\":\"Prepares the installation of a plugin.\"},\"prepareUninstallation(address,(address,address[],bytes))\":{\"notice\":\"Prepares the uninstallation of a plugin.\"},\"prepareUpdate(address,uint16,(address,address[],bytes))\":{\"notice\":\"Prepares the update of a plugin.\"},\"protocolVersion()\":{\"notice\":\"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Checks if this or the parent contract supports an interface by its ID.\"}},\"notice\":\"An abstract contract to inherit from to implement the plugin setup for upgradeable plugins, i.e, `PluginUUPSUpgradeable` being deployed via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822) and [ERC-1967](https://eips.ethereum.org/EIPS/eip-1967)).\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/plugin/setup/PluginUpgradeableSetup.sol\":\"PluginUpgradeableSetup\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165 is IERC165 {\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165).interfaceId;\\n }\\n}\\n\",\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"src/dao/IDAO.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IDAO\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for DAOs within the Aragon App DAO framework.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IDAO {\\n /// @notice The action struct to be consumed by the DAO's `execute` function resulting in an external call.\\n /// @param to The address to call.\\n /// @param value The native token value to be sent with the call.\\n /// @param data The bytes-encoded function selector and calldata for the call.\\n struct Action {\\n address to;\\n uint256 value;\\n bytes data;\\n }\\n\\n /// @notice Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\\n /// @param _where The address of the contract.\\n /// @param _who The address of a EOA or contract to give the permissions.\\n /// @param _permissionId The permission identifier.\\n /// @param _data The optional data passed to the `PermissionCondition` registered.\\n /// @return Returns true if the address has permission, false if not.\\n function hasPermission(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes memory _data\\n ) external view returns (bool);\\n\\n /// @notice Updates the DAO metadata (e.g., an IPFS hash).\\n /// @param _metadata The IPFS hash of the new metadata object.\\n function setMetadata(bytes calldata _metadata) external;\\n\\n /// @notice Emitted when the DAO metadata is updated.\\n /// @param metadata The IPFS hash of the new metadata object.\\n event MetadataSet(bytes metadata);\\n\\n /// @notice Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted.\\n /// @param _callId The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce.\\n /// @param _actions The array of actions.\\n /// @param _allowFailureMap A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @return The array of results obtained from the executed actions in `bytes`.\\n /// @return The resulting failure map containing the actions have actually failed.\\n function execute(\\n bytes32 _callId,\\n Action[] memory _actions,\\n uint256 _allowFailureMap\\n ) external returns (bytes[] memory, uint256);\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param actor The address of the caller.\\n /// @param callId The ID of the call.\\n /// @param actions The array of actions executed.\\n /// @param allowFailureMap The allow failure map encoding which actions are allowed to fail.\\n /// @param failureMap The failure map encoding which actions have failed.\\n /// @param execResults The array with the results of the executed actions.\\n /// @dev The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce.\\n event Executed(\\n address indexed actor,\\n bytes32 callId,\\n Action[] actions,\\n uint256 allowFailureMap,\\n uint256 failureMap,\\n bytes[] execResults\\n );\\n\\n /// @notice Emitted when a standard callback is registered.\\n /// @param interfaceId The ID of the interface.\\n /// @param callbackSelector The selector of the callback function.\\n /// @param magicNumber The magic number to be registered for the callback function selector.\\n event StandardCallbackRegistered(\\n bytes4 interfaceId,\\n bytes4 callbackSelector,\\n bytes4 magicNumber\\n );\\n\\n /// @notice Deposits (native) tokens to the DAO contract with a reference string.\\n /// @param _token The address of the token or address(0) in case of the native token.\\n /// @param _amount The amount of tokens to deposit.\\n /// @param _reference The reference describing the deposit reason.\\n function deposit(address _token, uint256 _amount, string calldata _reference) external payable;\\n\\n /// @notice Emitted when a token deposit has been made to the DAO.\\n /// @param sender The address of the sender.\\n /// @param token The address of the deposited token.\\n /// @param amount The amount of tokens deposited.\\n /// @param _reference The reference describing the deposit reason.\\n event Deposited(\\n address indexed sender,\\n address indexed token,\\n uint256 amount,\\n string _reference\\n );\\n\\n /// @notice Emitted when a native token deposit has been made to the DAO.\\n /// @dev This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).\\n /// @param sender The address of the sender.\\n /// @param amount The amount of native tokens deposited.\\n event NativeTokenDeposited(address sender, uint256 amount);\\n\\n /// @notice Setter for the trusted forwarder verifying the meta transaction.\\n /// @param _trustedForwarder The trusted forwarder address.\\n function setTrustedForwarder(address _trustedForwarder) external;\\n\\n /// @notice Getter for the trusted forwarder verifying the meta transaction.\\n /// @return The trusted forwarder address.\\n function getTrustedForwarder() external view returns (address);\\n\\n /// @notice Emitted when a new TrustedForwarder is set on the DAO.\\n /// @param forwarder the new forwarder address.\\n event TrustedForwarderSet(address forwarder);\\n\\n /// @notice Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\\n /// @param _hash The hash of the data to be signed.\\n /// @param _signature The signature byte array associated with `_hash`.\\n /// @return Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not.\\n function isValidSignature(bytes32 _hash, bytes memory _signature) external returns (bytes4);\\n\\n /// @notice Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\\n /// @param _interfaceId The ID of the interface.\\n /// @param _callbackSelector The selector of the callback function.\\n /// @param _magicNumber The magic number to be registered for the function signature.\\n function registerStandardCallback(\\n bytes4 _interfaceId,\\n bytes4 _callbackSelector,\\n bytes4 _magicNumber\\n ) external;\\n\\n /// @notice Removed function being left here to not corrupt the IDAO interface ID. Any call will revert.\\n /// @dev Introduced in v1.0.0. Removed in v1.4.0.\\n function setSignatureValidator(address) external;\\n}\\n\",\"keccak256\":\"0xb7f615523c26de042edce98731c658f44a1edb2464387ac1b642c4c69f57128e\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/PermissionLib.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title PermissionLib\\n/// @author Aragon X - 2021-2023\\n/// @notice A library containing objects for permission processing.\\n/// @custom:security-contact sirt@aragon.org\\nlibrary PermissionLib {\\n /// @notice A constant expressing that no condition is applied to a permission.\\n address public constant NO_CONDITION = address(0);\\n\\n /// @notice The types of permission operations available in the `PermissionManager`.\\n /// @param Grant The grant operation setting a permission without a condition.\\n /// @param Revoke The revoke operation removing a permission (that was granted with or without a condition).\\n /// @param GrantWithCondition The grant operation setting a permission with a condition.\\n enum Operation {\\n Grant,\\n Revoke,\\n GrantWithCondition\\n }\\n\\n /// @notice A struct containing the information for a permission to be applied on a single target contract without a condition.\\n /// @param operation The permission operation type.\\n /// @param who The address (EOA or contract) receiving the permission.\\n /// @param permissionId The permission identifier.\\n struct SingleTargetPermission {\\n Operation operation;\\n address who;\\n bytes32 permissionId;\\n }\\n\\n /// @notice A struct containing the information for a permission to be applied on multiple target contracts, optionally, with a condition.\\n /// @param operation The permission operation type.\\n /// @param where The address of the target contract for which `who` receives permission.\\n /// @param who The address (EOA or contract) receiving the permission.\\n /// @param condition The `PermissionCondition` that will be asked for authorization on calls connected to the specified permission identifier.\\n /// @param permissionId The permission identifier.\\n struct MultiTargetPermission {\\n Operation operation;\\n address where;\\n address who;\\n address condition;\\n bytes32 permissionId;\\n }\\n}\\n\",\"keccak256\":\"0x470faf3c4891ebc6420ef6cc09f6098917568ccc79268c90954d1478199b6097\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/setup/IPluginSetup.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {PermissionLib} from \\\"../../permission/PermissionLib.sol\\\";\\n\\n// solhint-disable-next-line no-unused-import\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @title IPluginSetup\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for a plugin setup contract to be consumed by the `PluginSetupProcessor` for plugin installations, updates, and uninstallations.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IPluginSetup {\\n /// @notice The data associated with a prepared setup.\\n /// @param helpers The address array of helpers (contracts or EOAs) associated with this plugin version after the installation or update.\\n /// @param permissions The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the installing or updating DAO.\\n struct PreparedSetupData {\\n address[] helpers;\\n PermissionLib.MultiTargetPermission[] permissions;\\n }\\n\\n /// @notice The payload for plugin updates and uninstallations containing the existing contracts as well as optional data to be consumed by the plugin setup.\\n /// @param plugin The address of the `Plugin`.\\n /// @param currentHelpers The address array of all current helpers (contracts or EOAs) associated with the plugin to update from.\\n /// @param data The bytes-encoded data containing the input parameters for the preparation of update/uninstall as specified in the corresponding ABI on the version's metadata.\\n struct SetupPayload {\\n address plugin;\\n address[] currentHelpers;\\n bytes data;\\n }\\n\\n /// @notice Prepares the installation of a plugin.\\n /// @param _dao The address of the installing DAO.\\n /// @param _data The bytes-encoded data containing the input parameters for the installation as specified in the plugin's build metadata JSON file.\\n /// @return plugin The address of the `Plugin` contract being prepared for installation.\\n /// @return preparedSetupData The deployed plugin's relevant data which consists of helpers and permissions.\\n function prepareInstallation(\\n address _dao,\\n bytes calldata _data\\n ) external returns (address plugin, PreparedSetupData memory preparedSetupData);\\n\\n /// @notice Prepares the update of a plugin.\\n /// @param _dao The address of the updating DAO.\\n /// @param _fromBuild The build number of the plugin to update from.\\n /// @param _payload The relevant data necessary for the `prepareUpdate`. See above.\\n /// @return initData The initialization data to be passed to upgradeable contracts when the update is applied in the `PluginSetupProcessor`.\\n /// @return preparedSetupData The deployed plugin's relevant data which consists of helpers and permissions.\\n function prepareUpdate(\\n address _dao,\\n uint16 _fromBuild,\\n SetupPayload calldata _payload\\n ) external returns (bytes memory initData, PreparedSetupData memory preparedSetupData);\\n\\n /// @notice Prepares the uninstallation of a plugin.\\n /// @param _dao The address of the uninstalling DAO.\\n /// @param _payload The relevant data necessary for the `prepareUninstallation`. See above.\\n /// @return permissions The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the uninstalling DAO.\\n function prepareUninstallation(\\n address _dao,\\n SetupPayload calldata _payload\\n ) external returns (PermissionLib.MultiTargetPermission[] memory permissions);\\n\\n /// @notice Returns the plugin implementation address.\\n /// @return The address of the plugin implementation contract.\\n /// @dev The implementation can be instantiated via the `new` keyword, cloned via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)), or proxied via the UUPS proxy pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0x21c99995208039ac6ace219b6f273243811dc2aa66399e8e499e43ec30b82fa9\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/setup/PluginUpgradeableSetup.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ERC165} from \\\"@openzeppelin/contracts/utils/introspection/ERC165.sol\\\";\\n\\nimport {IProtocolVersion} from \\\"../../utils/versioning/IProtocolVersion.sol\\\";\\nimport {ProtocolVersion} from \\\"../../utils/versioning/ProtocolVersion.sol\\\";\\nimport {IPluginSetup} from \\\"./IPluginSetup.sol\\\";\\n\\n/// @title PluginUpgradeableSetup\\n/// @author Aragon X - 2022-2024\\n/// @notice An abstract contract to inherit from to implement the plugin setup for upgradeable plugins, i.e, `PluginUUPSUpgradeable` being deployed via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822) and [ERC-1967](https://eips.ethereum.org/EIPS/eip-1967)).\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract PluginUpgradeableSetup is ERC165, IPluginSetup, ProtocolVersion {\\n /// @notice The address of the plugin implementation contract for initial block explorer verification\\n /// and to create [ERC-1967](https://eips.ethereum.org/EIPS/eip-1967) UUPS proxies from.\\n address internal immutable IMPLEMENTATION;\\n\\n /// @notice Thrown when an update path is not available, for example, if this is the initial build.\\n /// @param fromBuild The build number to update from.\\n /// @param thisBuild The build number of this setup to update to.\\n error InvalidUpdatePath(uint16 fromBuild, uint16 thisBuild);\\n\\n /// @notice The contract constructor, that setting the plugin implementation contract.\\n /// @param _implementation The address of the plugin implementation contract.\\n constructor(address _implementation) {\\n IMPLEMENTATION = _implementation;\\n }\\n\\n /// @notice Checks if this or the parent contract supports an interface by its ID.\\n /// @param _interfaceId The ID of the interface.\\n /// @return Returns `true` if the interface is supported.\\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\\n return\\n _interfaceId == type(IPluginSetup).interfaceId ||\\n _interfaceId == type(IProtocolVersion).interfaceId ||\\n super.supportsInterface(_interfaceId);\\n }\\n\\n /// @inheritdoc IPluginSetup\\n function implementation() public view returns (address) {\\n return IMPLEMENTATION;\\n }\\n}\\n\",\"keccak256\":\"0x2842d919d1ecb4fbeb40953128c3da3b36dcf6e91255089e987c2f11ff8d061e\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/IProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IProtocolVersion\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the semantic Aragon OSx protocol version number.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IProtocolVersion {\\n /// @notice Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\\n /// @return _version Returns the semantic Aragon OSx protocol version number.\\n /// @dev This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\\n function protocolVersion() external view returns (uint8[3] memory _version);\\n}\\n\",\"keccak256\":\"0x00a4da654d21dc1bdadbdc8bd54bb86c378c56f85e461ccc31303628ea621361\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/ProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IProtocolVersion} from \\\"./IProtocolVersion.sol\\\";\\n\\n/// @title ProtocolVersion\\n/// @author Aragon X - 2023\\n/// @notice An abstract, stateless, non-upgradeable contract providing the current Aragon OSx protocol version number.\\n/// @dev Do not add any new variables to this contract that would shift down storage in the inheritance chain.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract ProtocolVersion is IProtocolVersion {\\n // IMPORTANT: Do not add any storage variable, see the above notice.\\n\\n /// @inheritdoc IProtocolVersion\\n function protocolVersion() public pure returns (uint8[3] memory) {\\n return [1, 4, 0];\\n }\\n}\\n\",\"keccak256\":\"0x3975c937be935f687c6b6b8f379071232681e98cf04b175d72781b819ea52bdb\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"errors":{"InvalidUpdatePath(uint16,uint16)":[{"notice":"Thrown when an update path is not available, for example, if this is the initial build."}]},"kind":"user","methods":{"constructor":{"notice":"The contract constructor, that setting the plugin implementation contract."},"implementation()":{"notice":"Returns the plugin implementation address."},"prepareInstallation(address,bytes)":{"notice":"Prepares the installation of a plugin."},"prepareUninstallation(address,(address,address[],bytes))":{"notice":"Prepares the uninstallation of a plugin."},"prepareUpdate(address,uint16,(address,address[],bytes))":{"notice":"Prepares the update of a plugin."},"protocolVersion()":{"notice":"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with."},"supportsInterface(bytes4)":{"notice":"Checks if this or the parent contract supports an interface by its ID."}},"notice":"An abstract contract to inherit from to implement the plugin setup for upgradeable plugins, i.e, `PluginUUPSUpgradeable` being deployed via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822) and [ERC-1967](https://eips.ethereum.org/EIPS/eip-1967)).","version":1}}},"src/utils/deployment/ProxyFactory.sol":{"ProxyFactory":{"abi":[{"inputs":[{"internalType":"address","name":"_implementation","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"proxy","type":"address"}],"name":"ProxyCreated","type":"event"},{"inputs":[{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"deployMinimalProxy","outputs":[{"internalType":"address","name":"proxy","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"deployUUPSProxy","outputs":[{"internalType":"address","name":"proxy","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"devdoc":{"author":"Aragon X - 2024","custom:security-contact":"sirt@aragon.org","events":{"ProxyCreated(address)":{"params":{"proxy":"The proxy address."}}},"kind":"dev","methods":{"constructor":{"params":{"_implementation":"The logic contract address."}},"deployMinimalProxy(bytes)":{"details":"If `_data` is non-empty, it is used in a call to the clone contract. This will typically be an encoded function call initializing the storage of the contract.","params":{"_data":"The initialization data for this contract."},"returns":{"proxy":"The address of the proxy contract created."}},"deployUUPSProxy(bytes)":{"details":"If `_data` is non-empty, it is used in a delegate call to the `_implementation` contract. This will typically be an encoded function call initializing the proxy (see [OpenZeppelin ERC1967Proxy-constructor](https://docs.openzeppelin.com/contracts/4.x/api/proxy#ERC1967Proxy-constructor-address-bytes-)).","params":{"_data":"The initialization data for this contract."},"returns":{"proxy":"The address of the proxy contract created."}},"implementation()":{"details":"The implementation can be cloned via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)), or proxied via the UUPS proxy pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).","returns":{"_0":"The address of the implementation contract."}}},"title":"ProxyFactory","version":1},"evm":{"bytecode":{"functionDebugData":{"@_14475":{"entryPoint":null,"id":14475,"parameterSlots":1,"returnSlots":0},"abi_decode_tuple_t_address_fromMemory":{"entryPoint":64,"id":null,"parameterSlots":2,"returnSlots":1}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:306:92","statements":[{"nodeType":"YulBlock","src":"6:3:92","statements":[]},{"body":{"nodeType":"YulBlock","src":"95:209:92","statements":[{"body":{"nodeType":"YulBlock","src":"141:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"150:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"153:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"143:6:92"},"nodeType":"YulFunctionCall","src":"143:12:92"},"nodeType":"YulExpressionStatement","src":"143:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"116:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"125:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"112:3:92"},"nodeType":"YulFunctionCall","src":"112:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"137:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"108:3:92"},"nodeType":"YulFunctionCall","src":"108:32:92"},"nodeType":"YulIf","src":"105:52:92"},{"nodeType":"YulVariableDeclaration","src":"166:29:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"185:9:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"179:5:92"},"nodeType":"YulFunctionCall","src":"179:16:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"170:5:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"258:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"267:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"270:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"260:6:92"},"nodeType":"YulFunctionCall","src":"260:12:92"},"nodeType":"YulExpressionStatement","src":"260:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"217:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"228:5:92"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"243:3:92","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"248:1:92","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"239:3:92"},"nodeType":"YulFunctionCall","src":"239:11:92"},{"kind":"number","nodeType":"YulLiteral","src":"252:1:92","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"235:3:92"},"nodeType":"YulFunctionCall","src":"235:19:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"224:3:92"},"nodeType":"YulFunctionCall","src":"224:31:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"214:2:92"},"nodeType":"YulFunctionCall","src":"214:42:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"207:6:92"},"nodeType":"YulFunctionCall","src":"207:50:92"},"nodeType":"YulIf","src":"204:70:92"},{"nodeType":"YulAssignment","src":"283:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"293:5:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"283:6:92"}]}]},"name":"abi_decode_tuple_t_address_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"61:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"72:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"84:6:92","type":""}],"src":"14:290:92"}]},"contents":"{\n { }\n function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := mload(headStart)\n if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n value0 := value\n }\n}","id":92,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60a060405234801561001057600080fd5b50604051610db2380380610db283398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b608051610d1b6100976000396000818160800152818160cc01526101460152610d1b6000f3fe60806040523480156200001157600080fd5b5060043610620000465760003560e01c80635c5c278b146200004b5780635c60da1b146200007e57806393042ea314620000a5575b600080fd5b620000626200005c366004620004aa565b620000bc565b6040516001600160a01b03909116815260200160405180910390f35b7f000000000000000000000000000000000000000000000000000000000000000062000062565b62000062620000b6366004620004aa565b62000136565b6000620000f36001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016836200016d565b6040516001600160a01b03821681529091507efffc2da0b561cae30d9826d37709e9421c4725faebc226cbbb7ef5fc5e73499060200160405180910390a1919050565b6000620000f36001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001683620001b1565b600082826040516200017f9062000486565b6200018c929190620005b9565b604051809103906000f080158015620001a9573d6000803e3d6000fd5b509392505050565b6000620001c7836001600160a01b0316620001ef565b825190915015620001e957620001e76001600160a01b0382168362000296565b505b92915050565b6000763d602d80600a3d3981f3363d3d373d3d3d363d730000008260601b60e81c176000526e5af43d82803e903d91602b57fd5bf38260781b17602052603760096000f090506001600160a01b038116620002915760405162461bcd60e51b815260206004820152601660248201527f455243313136373a20637265617465206661696c65640000000000000000000060448201526064015b60405180910390fd5b919050565b6060620002dc838360006040518060400160405280601e81526020017f416464726573733a206c6f772d6c6576656c2063616c6c206661696c65640000815250620002e3565b9392505050565b6060824710156200035d5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c0000000000000000000000000000000000000000000000000000606482015260840162000288565b600080866001600160a01b031685876040516200037b9190620005dd565b60006040518083038185875af1925050503d8060008114620003ba576040519150601f19603f3d011682016040523d82523d6000602084013e620003bf565b606091505b5091509150620003d287838387620003df565b925050505b949350505050565b60608315620004535782516000036200044b576001600160a01b0385163b6200044b5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640162000288565b5081620003d7565b620003d783838151156200046a5781518083602001fd5b8060405162461bcd60e51b8152600401620002889190620005fb565b6106fe806200061183390190565b634e487b7160e01b600052604160045260246000fd5b600060208284031215620004bd57600080fd5b813567ffffffffffffffff80821115620004d657600080fd5b818401915084601f830112620004eb57600080fd5b81358181111562000500576200050062000494565b604051601f8201601f19908116603f011681019083821181831017156200052b576200052b62000494565b816040528281528760208487010111156200054557600080fd5b826020860160208301376000928101602001929092525095945050505050565b60005b838110156200058257818101518382015260200162000568565b50506000910152565b60008151808452620005a581602086016020860162000565565b601f01601f19169290920160200192915050565b6001600160a01b0383168152604060208201526000620003d760408301846200058b565b60008251620005f181846020870162000565565b9190910192915050565b602081526000620002dc60208301846200058b56fe60806040526040516106fe3803806106fe83398101604081905261002291610319565b61002e82826000610035565b5050610436565b61003e8361006b565b60008251118061004b5750805b156100665761006483836100ab60201b6100291760201c565b505b505050565b610074816100d7565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606100d083836040518060600160405280602781526020016106d7602791396101a9565b9392505050565b6100ea8161022260201b6100551760201c565b6101515760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b806101887f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61023160201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6060600080856001600160a01b0316856040516101c691906103e7565b600060405180830381855af49150503d8060008114610201576040519150601f19603f3d011682016040523d82523d6000602084013e610206565b606091505b50909250905061021886838387610234565b9695505050505050565b6001600160a01b03163b151590565b90565b606083156102a357825160000361029c576001600160a01b0385163b61029c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610148565b50816102ad565b6102ad83836102b5565b949350505050565b8151156102c55781518083602001fd5b8060405162461bcd60e51b81526004016101489190610403565b634e487b7160e01b600052604160045260246000fd5b60005b838110156103105781810151838201526020016102f8565b50506000910152565b6000806040838503121561032c57600080fd5b82516001600160a01b038116811461034357600080fd5b60208401519092506001600160401b038082111561036057600080fd5b818501915085601f83011261037457600080fd5b815181811115610386576103866102df565b604051601f8201601f19908116603f011681019083821181831017156103ae576103ae6102df565b816040528281528860208487010111156103c757600080fd5b6103d88360208301602088016102f5565b80955050505050509250929050565b600082516103f98184602087016102f5565b9190910192915050565b60208152600082518060208401526104228160408501602087016102f5565b601f01601f19169190910160400192915050565b610292806104456000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b61009f565b565b606061004e838360405180606001604052806027815260200161025f602791396100c3565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e8080156100be573d6000f35b3d6000fd5b6060600080856001600160a01b0316856040516100e0919061020f565b600060405180830381855af49150503d806000811461011b576040519150601f19603f3d011682016040523d82523d6000602084013e610120565b606091505b50915091506101318683838761013b565b9695505050505050565b606083156101af5782516000036101a8576001600160a01b0385163b6101a85760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b50816101b9565b6101b983836101c1565b949350505050565b8151156101d15781518083602001fd5b8060405162461bcd60e51b815260040161019f919061022b565b60005b838110156102065781810151838201526020016101ee565b50506000910152565b600082516102218184602087016101eb565b9190910192915050565b602081526000825180602084015261024a8160408501602087016101eb565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a","opcodes":"PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0xDB2 CODESIZE SUB DUP1 PUSH2 0xDB2 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0x40 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x80 MSTORE PUSH2 0x70 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x52 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x69 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH2 0xD1B PUSH2 0x97 PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH1 0x80 ADD MSTORE DUP2 DUP2 PUSH1 0xCC ADD MSTORE PUSH2 0x146 ADD MSTORE PUSH2 0xD1B PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH3 0x46 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x5C5C278B EQ PUSH3 0x4B JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH3 0x7E JUMPI DUP1 PUSH4 0x93042EA3 EQ PUSH3 0xA5 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x62 PUSH3 0x5C CALLDATASIZE PUSH1 0x4 PUSH3 0x4AA JUMP JUMPDEST PUSH3 0xBC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH32 0x0 PUSH3 0x62 JUMP JUMPDEST PUSH3 0x62 PUSH3 0xB6 CALLDATASIZE PUSH1 0x4 PUSH3 0x4AA JUMP JUMPDEST PUSH3 0x136 JUMP JUMPDEST PUSH1 0x0 PUSH3 0xF3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP4 PUSH3 0x16D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP2 MSTORE SWAP1 SWAP2 POP PUSH31 0xFFFC2DA0B561CAE30D9826D37709E9421C4725FAEBC226CBBB7EF5FC5E7349 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0xF3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP4 PUSH3 0x1B1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH3 0x17F SWAP1 PUSH3 0x486 JUMP JUMPDEST PUSH3 0x18C SWAP3 SWAP2 SWAP1 PUSH3 0x5B9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH3 0x1A9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1C7 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH3 0x1EF JUMP JUMPDEST DUP3 MLOAD SWAP1 SWAP2 POP ISZERO PUSH3 0x1E9 JUMPI PUSH3 0x1E7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP4 PUSH3 0x296 JUMP JUMPDEST POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH23 0x3D602D80600A3D3981F3363D3D373D3D3D363D73000000 DUP3 PUSH1 0x60 SHL PUSH1 0xE8 SHR OR PUSH1 0x0 MSTORE PUSH15 0x5AF43D82803E903D91602B57FD5BF3 DUP3 PUSH1 0x78 SHL OR PUSH1 0x20 MSTORE PUSH1 0x37 PUSH1 0x9 PUSH1 0x0 CREATE SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH3 0x291 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313136373A20637265617465206661696C656400000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH3 0x2DC DUP4 DUP4 PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x416464726573733A206C6F772D6C6576656C2063616C6C206661696C65640000 DUP2 MSTORE POP PUSH3 0x2E3 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP3 SELFBALANCE LT ISZERO PUSH3 0x35D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A20696E73756666696369656E742062616C616E636520666F PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x722063616C6C0000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH3 0x288 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP8 PUSH1 0x40 MLOAD PUSH3 0x37B SWAP2 SWAP1 PUSH3 0x5DD JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH3 0x3BA JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH3 0x3BF JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH3 0x3D2 DUP8 DUP4 DUP4 DUP8 PUSH3 0x3DF JUMP JUMPDEST SWAP3 POP POP POP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH3 0x453 JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH3 0x44B JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH3 0x44B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x288 JUMP JUMPDEST POP DUP2 PUSH3 0x3D7 JUMP JUMPDEST PUSH3 0x3D7 DUP4 DUP4 DUP2 MLOAD ISZERO PUSH3 0x46A JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x288 SWAP2 SWAP1 PUSH3 0x5FB JUMP JUMPDEST PUSH2 0x6FE DUP1 PUSH3 0x611 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x4BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH3 0x4D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP5 ADD SWAP2 POP DUP5 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x4EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH3 0x500 JUMPI PUSH3 0x500 PUSH3 0x494 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH3 0x52B JUMPI PUSH3 0x52B PUSH3 0x494 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP8 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH3 0x545 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 SWAP3 DUP2 ADD PUSH1 0x20 ADD SWAP3 SWAP1 SWAP3 MSTORE POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0x582 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0x568 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH3 0x5A5 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH3 0x565 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH3 0x3D7 PUSH1 0x40 DUP4 ADD DUP5 PUSH3 0x58B JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH3 0x5F1 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH3 0x565 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH3 0x2DC PUSH1 0x20 DUP4 ADD DUP5 PUSH3 0x58B JUMP INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH2 0x6FE CODESIZE SUB DUP1 PUSH2 0x6FE DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x22 SWAP2 PUSH2 0x319 JUMP JUMPDEST PUSH2 0x2E DUP3 DUP3 PUSH1 0x0 PUSH2 0x35 JUMP JUMPDEST POP POP PUSH2 0x436 JUMP JUMPDEST PUSH2 0x3E DUP4 PUSH2 0x6B JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD GT DUP1 PUSH2 0x4B JUMPI POP DUP1 JUMPDEST ISZERO PUSH2 0x66 JUMPI PUSH2 0x64 DUP4 DUP4 PUSH2 0xAB PUSH1 0x20 SHL PUSH2 0x29 OR PUSH1 0x20 SHR JUMP JUMPDEST POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x74 DUP2 PUSH2 0xD7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xD0 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x6D7 PUSH1 0x27 SWAP2 CODECOPY PUSH2 0x1A9 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xEA DUP2 PUSH2 0x222 PUSH1 0x20 SHL PUSH2 0x55 OR PUSH1 0x20 SHR JUMP JUMPDEST PUSH2 0x151 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313936373A206E657720696D706C656D656E746174696F6E206973206E PUSH1 0x44 DUP3 ADD MSTORE PUSH13 0x1BDD08184818DBDB9D1C9858DD PUSH1 0x9A SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH2 0x188 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC PUSH1 0x0 SHL PUSH2 0x231 PUSH1 0x20 SHL PUSH2 0x64 OR PUSH1 0x20 SHR JUMP JUMPDEST DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0x1C6 SWAP2 SWAP1 PUSH2 0x3E7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x201 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x206 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x218 DUP7 DUP4 DUP4 DUP8 PUSH2 0x234 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x2A3 JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0x29C JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0x29C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x148 JUMP JUMPDEST POP DUP2 PUSH2 0x2AD JUMP JUMPDEST PUSH2 0x2AD DUP4 DUP4 PUSH2 0x2B5 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x2C5 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x148 SWAP2 SWAP1 PUSH2 0x403 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x310 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2F8 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x32C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x343 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x360 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x374 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x386 JUMPI PUSH2 0x386 PUSH2 0x2DF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x3AE JUMPI PUSH2 0x3AE PUSH2 0x2DF JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x3C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3D8 DUP4 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x2F5 JUMP JUMPDEST DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x3F9 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x2F5 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x422 DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x2F5 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x292 DUP1 PUSH2 0x445 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLDATASIZE PUSH2 0x13 JUMPI PUSH2 0x11 PUSH2 0x17 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x11 JUMPDEST PUSH2 0x27 PUSH2 0x22 PUSH2 0x67 JUMP JUMPDEST PUSH2 0x9F JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x60 PUSH2 0x4E DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x25F PUSH1 0x27 SWAP2 CODECOPY PUSH2 0xC3 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9A PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 DUP1 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE PUSH1 0x0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH2 0xBE JUMPI RETURNDATASIZE PUSH1 0x0 RETURN JUMPDEST RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0xE0 SWAP2 SWAP1 PUSH2 0x20F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x11B JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x120 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x131 DUP7 DUP4 DUP4 DUP8 PUSH2 0x13B JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x1AF JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0x1A8 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0x1A8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP DUP2 PUSH2 0x1B9 JUMP JUMPDEST PUSH2 0x1B9 DUP4 DUP4 PUSH2 0x1C1 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x1D1 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x19F SWAP2 SWAP1 PUSH2 0x22B JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x206 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1EE JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x221 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x1EB JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x24A DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x1EB JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A164 PUSH20 0x6F6C6343000811000A416464726573733A206C6F PUSH24 0x2D6C6576656C2064656C65676174652063616C6C20666169 PUSH13 0x6564A164736F6C634300081100 EXP ","sourceMap":"415:2379:84:-:0;;;847:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;894:32:84;;;415:2379;;14:290:92;84:6;137:2;125:9;116:7;112:23;108:32;105:52;;;153:1;150;143:12;105:52;179:16;;-1:-1:-1;;;;;224:31:92;;214:42;;204:70;;270:1;267;260:12;204:70;293:5;14:290;-1:-1:-1;;;14:290:92:o;:::-;415:2379:84;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_revert_9263":{"entryPoint":null,"id":9263,"parameterSlots":2,"returnSlots":0},"@clone_5295":{"entryPoint":495,"id":5295,"parameterSlots":1,"returnSlots":1},"@deployMinimalProxy_14515":{"entryPoint":310,"id":14515,"parameterSlots":1,"returnSlots":1},"@deployMinimalProxy_14592":{"entryPoint":433,"id":14592,"parameterSlots":2,"returnSlots":1},"@deployUUPSProxy_14495":{"entryPoint":188,"id":14495,"parameterSlots":1,"returnSlots":1},"@deployUUPSProxy_14563":{"entryPoint":365,"id":14563,"parameterSlots":2,"returnSlots":1},"@functionCallWithValue_9088":{"entryPoint":739,"id":9088,"parameterSlots":4,"returnSlots":1},"@functionCall_9004":{"entryPoint":662,"id":9004,"parameterSlots":2,"returnSlots":1},"@implementation_14524":{"entryPoint":null,"id":14524,"parameterSlots":0,"returnSlots":1},"@isContract_8952":{"entryPoint":null,"id":8952,"parameterSlots":1,"returnSlots":1},"@verifyCallResultFromTarget_9219":{"entryPoint":991,"id":9219,"parameterSlots":4,"returnSlots":1},"abi_decode_tuple_t_bytes_memory_ptr":{"entryPoint":1194,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_bytes":{"entryPoint":1419,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":1501,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address_t_bytes_memory_ptr__to_t_address_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":1465,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":1531,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_68ca40b61460257f14e69f48b1a4dbc812e9afc6932f127ef8084544457b3335__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"copy_memory_to_memory_with_cleanup":{"entryPoint":1381,"id":null,"parameterSlots":3,"returnSlots":0},"panic_error_0x41":{"entryPoint":1172,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:3804:92","statements":[{"nodeType":"YulBlock","src":"6:3:92","statements":[]},{"body":{"nodeType":"YulBlock","src":"46:95:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"63:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"70:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"75:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"66:3:92"},"nodeType":"YulFunctionCall","src":"66:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"56:6:92"},"nodeType":"YulFunctionCall","src":"56:31:92"},"nodeType":"YulExpressionStatement","src":"56:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"103:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"106:4:92","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"96:6:92"},"nodeType":"YulFunctionCall","src":"96:15:92"},"nodeType":"YulExpressionStatement","src":"96:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"127:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"130:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"120:6:92"},"nodeType":"YulFunctionCall","src":"120:15:92"},"nodeType":"YulExpressionStatement","src":"120:15:92"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"14:127:92"},{"body":{"nodeType":"YulBlock","src":"225:842:92","statements":[{"body":{"nodeType":"YulBlock","src":"271:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"280:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"283:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"273:6:92"},"nodeType":"YulFunctionCall","src":"273:12:92"},"nodeType":"YulExpressionStatement","src":"273:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"246:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"255:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"242:3:92"},"nodeType":"YulFunctionCall","src":"242:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"267:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"238:3:92"},"nodeType":"YulFunctionCall","src":"238:32:92"},"nodeType":"YulIf","src":"235:52:92"},{"nodeType":"YulVariableDeclaration","src":"296:37:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"323:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"310:12:92"},"nodeType":"YulFunctionCall","src":"310:23:92"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"300:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"342:28:92","value":{"kind":"number","nodeType":"YulLiteral","src":"352:18:92","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"346:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"397:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"406:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"409:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"399:6:92"},"nodeType":"YulFunctionCall","src":"399:12:92"},"nodeType":"YulExpressionStatement","src":"399:12:92"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"385:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"393:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"382:2:92"},"nodeType":"YulFunctionCall","src":"382:14:92"},"nodeType":"YulIf","src":"379:34:92"},{"nodeType":"YulVariableDeclaration","src":"422:32:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"436:9:92"},{"name":"offset","nodeType":"YulIdentifier","src":"447:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"432:3:92"},"nodeType":"YulFunctionCall","src":"432:22:92"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"426:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"502:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"511:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"514:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"504:6:92"},"nodeType":"YulFunctionCall","src":"504:12:92"},"nodeType":"YulExpressionStatement","src":"504:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"481:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"485:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"477:3:92"},"nodeType":"YulFunctionCall","src":"477:13:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"492:7:92"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"473:3:92"},"nodeType":"YulFunctionCall","src":"473:27:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"466:6:92"},"nodeType":"YulFunctionCall","src":"466:35:92"},"nodeType":"YulIf","src":"463:55:92"},{"nodeType":"YulVariableDeclaration","src":"527:26:92","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"550:2:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"537:12:92"},"nodeType":"YulFunctionCall","src":"537:16:92"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"531:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"576:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"578:16:92"},"nodeType":"YulFunctionCall","src":"578:18:92"},"nodeType":"YulExpressionStatement","src":"578:18:92"}]},"condition":{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"568:2:92"},{"name":"_1","nodeType":"YulIdentifier","src":"572:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"565:2:92"},"nodeType":"YulFunctionCall","src":"565:10:92"},"nodeType":"YulIf","src":"562:36:92"},{"nodeType":"YulVariableDeclaration","src":"607:17:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"621:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"617:3:92"},"nodeType":"YulFunctionCall","src":"617:7:92"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"611:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"633:23:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"653:2:92","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"647:5:92"},"nodeType":"YulFunctionCall","src":"647:9:92"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"637:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"665:71:92","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"687:6:92"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"711:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"715:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"707:3:92"},"nodeType":"YulFunctionCall","src":"707:13:92"},{"name":"_4","nodeType":"YulIdentifier","src":"722:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"703:3:92"},"nodeType":"YulFunctionCall","src":"703:22:92"},{"kind":"number","nodeType":"YulLiteral","src":"727:2:92","type":"","value":"63"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"699:3:92"},"nodeType":"YulFunctionCall","src":"699:31:92"},{"name":"_4","nodeType":"YulIdentifier","src":"732:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"695:3:92"},"nodeType":"YulFunctionCall","src":"695:40:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"683:3:92"},"nodeType":"YulFunctionCall","src":"683:53:92"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"669:10:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"795:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"797:16:92"},"nodeType":"YulFunctionCall","src":"797:18:92"},"nodeType":"YulExpressionStatement","src":"797:18:92"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"754:10:92"},{"name":"_1","nodeType":"YulIdentifier","src":"766:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"751:2:92"},"nodeType":"YulFunctionCall","src":"751:18:92"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"774:10:92"},{"name":"memPtr","nodeType":"YulIdentifier","src":"786:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"771:2:92"},"nodeType":"YulFunctionCall","src":"771:22:92"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"748:2:92"},"nodeType":"YulFunctionCall","src":"748:46:92"},"nodeType":"YulIf","src":"745:72:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"833:2:92","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"837:10:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"826:6:92"},"nodeType":"YulFunctionCall","src":"826:22:92"},"nodeType":"YulExpressionStatement","src":"826:22:92"},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"864:6:92"},{"name":"_3","nodeType":"YulIdentifier","src":"872:2:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"857:6:92"},"nodeType":"YulFunctionCall","src":"857:18:92"},"nodeType":"YulExpressionStatement","src":"857:18:92"},{"body":{"nodeType":"YulBlock","src":"921:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"930:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"933:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"923:6:92"},"nodeType":"YulFunctionCall","src":"923:12:92"},"nodeType":"YulExpressionStatement","src":"923:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"898:2:92"},{"name":"_3","nodeType":"YulIdentifier","src":"902:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"894:3:92"},"nodeType":"YulFunctionCall","src":"894:11:92"},{"kind":"number","nodeType":"YulLiteral","src":"907:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"890:3:92"},"nodeType":"YulFunctionCall","src":"890:20:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"912:7:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"887:2:92"},"nodeType":"YulFunctionCall","src":"887:33:92"},"nodeType":"YulIf","src":"884:53:92"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"963:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"971:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"959:3:92"},"nodeType":"YulFunctionCall","src":"959:15:92"},{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"980:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"984:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"976:3:92"},"nodeType":"YulFunctionCall","src":"976:11:92"},{"name":"_3","nodeType":"YulIdentifier","src":"989:2:92"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"946:12:92"},"nodeType":"YulFunctionCall","src":"946:46:92"},"nodeType":"YulExpressionStatement","src":"946:46:92"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1016:6:92"},{"name":"_3","nodeType":"YulIdentifier","src":"1024:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1012:3:92"},"nodeType":"YulFunctionCall","src":"1012:15:92"},{"kind":"number","nodeType":"YulLiteral","src":"1029:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1008:3:92"},"nodeType":"YulFunctionCall","src":"1008:24:92"},{"kind":"number","nodeType":"YulLiteral","src":"1034:1:92","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1001:6:92"},"nodeType":"YulFunctionCall","src":"1001:35:92"},"nodeType":"YulExpressionStatement","src":"1001:35:92"},{"nodeType":"YulAssignment","src":"1045:16:92","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"1055:6:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1045:6:92"}]}]},"name":"abi_decode_tuple_t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"191:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"202:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"214:6:92","type":""}],"src":"146:921:92"},{"body":{"nodeType":"YulBlock","src":"1173:125:92","statements":[{"nodeType":"YulAssignment","src":"1183:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1195:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1206:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1191:3:92"},"nodeType":"YulFunctionCall","src":"1191:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1183:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1225:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1240:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"1248:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1236:3:92"},"nodeType":"YulFunctionCall","src":"1236:55:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1218:6:92"},"nodeType":"YulFunctionCall","src":"1218:74:92"},"nodeType":"YulExpressionStatement","src":"1218:74:92"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1142:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1153:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1164:4:92","type":""}],"src":"1072:226:92"},{"body":{"nodeType":"YulBlock","src":"1369:184:92","statements":[{"nodeType":"YulVariableDeclaration","src":"1379:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"1388:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"1383:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"1448:63:92","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"1473:3:92"},{"name":"i","nodeType":"YulIdentifier","src":"1478:1:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1469:3:92"},"nodeType":"YulFunctionCall","src":"1469:11:92"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"1492:3:92"},{"name":"i","nodeType":"YulIdentifier","src":"1497:1:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1488:3:92"},"nodeType":"YulFunctionCall","src":"1488:11:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1482:5:92"},"nodeType":"YulFunctionCall","src":"1482:18:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1462:6:92"},"nodeType":"YulFunctionCall","src":"1462:39:92"},"nodeType":"YulExpressionStatement","src":"1462:39:92"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"1409:1:92"},{"name":"length","nodeType":"YulIdentifier","src":"1412:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"1406:2:92"},"nodeType":"YulFunctionCall","src":"1406:13:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"1420:19:92","statements":[{"nodeType":"YulAssignment","src":"1422:15:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"1431:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"1434:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1427:3:92"},"nodeType":"YulFunctionCall","src":"1427:10:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"1422:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"1402:3:92","statements":[]},"src":"1398:113:92"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"1531:3:92"},{"name":"length","nodeType":"YulIdentifier","src":"1536:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1527:3:92"},"nodeType":"YulFunctionCall","src":"1527:16:92"},{"kind":"number","nodeType":"YulLiteral","src":"1545:1:92","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1520:6:92"},"nodeType":"YulFunctionCall","src":"1520:27:92"},"nodeType":"YulExpressionStatement","src":"1520:27:92"}]},"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"1347:3:92","type":""},{"name":"dst","nodeType":"YulTypedName","src":"1352:3:92","type":""},{"name":"length","nodeType":"YulTypedName","src":"1357:6:92","type":""}],"src":"1303:250:92"},{"body":{"nodeType":"YulBlock","src":"1607:221:92","statements":[{"nodeType":"YulVariableDeclaration","src":"1617:26:92","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1637:5:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1631:5:92"},"nodeType":"YulFunctionCall","src":"1631:12:92"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"1621:6:92","type":""}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1659:3:92"},{"name":"length","nodeType":"YulIdentifier","src":"1664:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1652:6:92"},"nodeType":"YulFunctionCall","src":"1652:19:92"},"nodeType":"YulExpressionStatement","src":"1652:19:92"},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1719:5:92"},{"kind":"number","nodeType":"YulLiteral","src":"1726:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1715:3:92"},"nodeType":"YulFunctionCall","src":"1715:16:92"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1737:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"1742:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1733:3:92"},"nodeType":"YulFunctionCall","src":"1733:14:92"},{"name":"length","nodeType":"YulIdentifier","src":"1749:6:92"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"1680:34:92"},"nodeType":"YulFunctionCall","src":"1680:76:92"},"nodeType":"YulExpressionStatement","src":"1680:76:92"},{"nodeType":"YulAssignment","src":"1765:57:92","value":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1780:3:92"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"1793:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"1801:2:92","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1789:3:92"},"nodeType":"YulFunctionCall","src":"1789:15:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1810:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"1806:3:92"},"nodeType":"YulFunctionCall","src":"1806:7:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1785:3:92"},"nodeType":"YulFunctionCall","src":"1785:29:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1776:3:92"},"nodeType":"YulFunctionCall","src":"1776:39:92"},{"kind":"number","nodeType":"YulLiteral","src":"1817:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1772:3:92"},"nodeType":"YulFunctionCall","src":"1772:50:92"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1765:3:92"}]}]},"name":"abi_encode_bytes","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1584:5:92","type":""},{"name":"pos","nodeType":"YulTypedName","src":"1591:3:92","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1599:3:92","type":""}],"src":"1558:270:92"},{"body":{"nodeType":"YulBlock","src":"1980:190:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1997:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2012:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"2020:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2008:3:92"},"nodeType":"YulFunctionCall","src":"2008:55:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1990:6:92"},"nodeType":"YulFunctionCall","src":"1990:74:92"},"nodeType":"YulExpressionStatement","src":"1990:74:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2084:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2095:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2080:3:92"},"nodeType":"YulFunctionCall","src":"2080:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"2100:2:92","type":"","value":"64"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2073:6:92"},"nodeType":"YulFunctionCall","src":"2073:30:92"},"nodeType":"YulExpressionStatement","src":"2073:30:92"},{"nodeType":"YulAssignment","src":"2112:52:92","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"2137:6:92"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2149:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2160:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2145:3:92"},"nodeType":"YulFunctionCall","src":"2145:18:92"}],"functionName":{"name":"abi_encode_bytes","nodeType":"YulIdentifier","src":"2120:16:92"},"nodeType":"YulFunctionCall","src":"2120:44:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2112:4:92"}]}]},"name":"abi_encode_tuple_t_address_t_bytes_memory_ptr__to_t_address_t_bytes_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1941:9:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1952:6:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1960:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1971:4:92","type":""}],"src":"1833:337:92"},{"body":{"nodeType":"YulBlock","src":"2349:172:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2366:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2377:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2359:6:92"},"nodeType":"YulFunctionCall","src":"2359:21:92"},"nodeType":"YulExpressionStatement","src":"2359:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2400:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2411:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2396:3:92"},"nodeType":"YulFunctionCall","src":"2396:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"2416:2:92","type":"","value":"22"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2389:6:92"},"nodeType":"YulFunctionCall","src":"2389:30:92"},"nodeType":"YulExpressionStatement","src":"2389:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2439:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2450:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2435:3:92"},"nodeType":"YulFunctionCall","src":"2435:18:92"},{"hexValue":"455243313136373a20637265617465206661696c6564","kind":"string","nodeType":"YulLiteral","src":"2455:24:92","type":"","value":"ERC1167: create failed"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2428:6:92"},"nodeType":"YulFunctionCall","src":"2428:52:92"},"nodeType":"YulExpressionStatement","src":"2428:52:92"},{"nodeType":"YulAssignment","src":"2489:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2501:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2512:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2497:3:92"},"nodeType":"YulFunctionCall","src":"2497:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2489:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_68ca40b61460257f14e69f48b1a4dbc812e9afc6932f127ef8084544457b3335__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2326:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2340:4:92","type":""}],"src":"2175:346:92"},{"body":{"nodeType":"YulBlock","src":"2700:228:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2717:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2728:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2710:6:92"},"nodeType":"YulFunctionCall","src":"2710:21:92"},"nodeType":"YulExpressionStatement","src":"2710:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2751:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2762:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2747:3:92"},"nodeType":"YulFunctionCall","src":"2747:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"2767:2:92","type":"","value":"38"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2740:6:92"},"nodeType":"YulFunctionCall","src":"2740:30:92"},"nodeType":"YulExpressionStatement","src":"2740:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2790:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2801:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2786:3:92"},"nodeType":"YulFunctionCall","src":"2786:18:92"},{"hexValue":"416464726573733a20696e73756666696369656e742062616c616e636520666f","kind":"string","nodeType":"YulLiteral","src":"2806:34:92","type":"","value":"Address: insufficient balance fo"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2779:6:92"},"nodeType":"YulFunctionCall","src":"2779:62:92"},"nodeType":"YulExpressionStatement","src":"2779:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2861:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2872:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2857:3:92"},"nodeType":"YulFunctionCall","src":"2857:18:92"},{"hexValue":"722063616c6c","kind":"string","nodeType":"YulLiteral","src":"2877:8:92","type":"","value":"r call"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2850:6:92"},"nodeType":"YulFunctionCall","src":"2850:36:92"},"nodeType":"YulExpressionStatement","src":"2850:36:92"},{"nodeType":"YulAssignment","src":"2895:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2907:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2918:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2903:3:92"},"nodeType":"YulFunctionCall","src":"2903:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2895:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2677:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2691:4:92","type":""}],"src":"2526:402:92"},{"body":{"nodeType":"YulBlock","src":"3070:150:92","statements":[{"nodeType":"YulVariableDeclaration","src":"3080:27:92","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3100:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3094:5:92"},"nodeType":"YulFunctionCall","src":"3094:13:92"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"3084:6:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3155:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"3163:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3151:3:92"},"nodeType":"YulFunctionCall","src":"3151:17:92"},{"name":"pos","nodeType":"YulIdentifier","src":"3170:3:92"},{"name":"length","nodeType":"YulIdentifier","src":"3175:6:92"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"3116:34:92"},"nodeType":"YulFunctionCall","src":"3116:66:92"},"nodeType":"YulExpressionStatement","src":"3116:66:92"},{"nodeType":"YulAssignment","src":"3191:23:92","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3202:3:92"},{"name":"length","nodeType":"YulIdentifier","src":"3207:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3198:3:92"},"nodeType":"YulFunctionCall","src":"3198:16:92"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"3191:3:92"}]}]},"name":"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"3046:3:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3051:6:92","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"3062:3:92","type":""}],"src":"2933:287:92"},{"body":{"nodeType":"YulBlock","src":"3399:179:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3416:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3427:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3409:6:92"},"nodeType":"YulFunctionCall","src":"3409:21:92"},"nodeType":"YulExpressionStatement","src":"3409:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3450:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3461:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3446:3:92"},"nodeType":"YulFunctionCall","src":"3446:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"3466:2:92","type":"","value":"29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3439:6:92"},"nodeType":"YulFunctionCall","src":"3439:30:92"},"nodeType":"YulExpressionStatement","src":"3439:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3489:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3500:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3485:3:92"},"nodeType":"YulFunctionCall","src":"3485:18:92"},{"hexValue":"416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374","kind":"string","nodeType":"YulLiteral","src":"3505:31:92","type":"","value":"Address: call to non-contract"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3478:6:92"},"nodeType":"YulFunctionCall","src":"3478:59:92"},"nodeType":"YulExpressionStatement","src":"3478:59:92"},{"nodeType":"YulAssignment","src":"3546:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3558:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3569:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3554:3:92"},"nodeType":"YulFunctionCall","src":"3554:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3546:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3376:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3390:4:92","type":""}],"src":"3225:353:92"},{"body":{"nodeType":"YulBlock","src":"3704:98:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3721:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3732:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3714:6:92"},"nodeType":"YulFunctionCall","src":"3714:21:92"},"nodeType":"YulExpressionStatement","src":"3714:21:92"},{"nodeType":"YulAssignment","src":"3744:52:92","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3769:6:92"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3781:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3792:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3777:3:92"},"nodeType":"YulFunctionCall","src":"3777:18:92"}],"functionName":{"name":"abi_encode_bytes","nodeType":"YulIdentifier","src":"3752:16:92"},"nodeType":"YulFunctionCall","src":"3752:44:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3744:4:92"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3673:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3684:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3695:4:92","type":""}],"src":"3583:219:92"}]},"contents":"{\n { }\n function panic_error_0x41()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function abi_decode_tuple_t_bytes_memory_ptr(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let offset := calldataload(headStart)\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n let _2 := add(headStart, offset)\n if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n let _3 := calldataload(_2)\n if gt(_3, _1) { panic_error_0x41() }\n let _4 := not(31)\n let memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n mstore(memPtr, _3)\n if gt(add(add(_2, _3), 32), dataEnd) { revert(0, 0) }\n calldatacopy(add(memPtr, 32), add(_2, 32), _3)\n mstore(add(add(memPtr, _3), 32), 0)\n value0 := memPtr\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function copy_memory_to_memory_with_cleanup(src, dst, length)\n {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n mstore(add(dst, length), 0)\n }\n function abi_encode_bytes(value, pos) -> end\n {\n let length := mload(value)\n mstore(pos, length)\n copy_memory_to_memory_with_cleanup(add(value, 0x20), add(pos, 0x20), length)\n end := add(add(pos, and(add(length, 31), not(31))), 0x20)\n }\n function abi_encode_tuple_t_address_t_bytes_memory_ptr__to_t_address_t_bytes_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n {\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n mstore(add(headStart, 32), 64)\n tail := abi_encode_bytes(value1, add(headStart, 64))\n }\n function abi_encode_tuple_t_stringliteral_68ca40b61460257f14e69f48b1a4dbc812e9afc6932f127ef8084544457b3335__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 22)\n mstore(add(headStart, 64), \"ERC1167: create failed\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 38)\n mstore(add(headStart, 64), \"Address: insufficient balance fo\")\n mstore(add(headStart, 96), \"r call\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n {\n let length := mload(value0)\n copy_memory_to_memory_with_cleanup(add(value0, 0x20), pos, length)\n end := add(pos, length)\n }\n function abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 29)\n mstore(add(headStart, 64), \"Address: call to non-contract\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n mstore(headStart, 32)\n tail := abi_encode_bytes(value0, add(headStart, 32))\n }\n}","id":92,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{"14459":[{"length":32,"start":128},{"length":32,"start":204},{"length":32,"start":326}]},"linkReferences":{},"object":"60806040523480156200001157600080fd5b5060043610620000465760003560e01c80635c5c278b146200004b5780635c60da1b146200007e57806393042ea314620000a5575b600080fd5b620000626200005c366004620004aa565b620000bc565b6040516001600160a01b03909116815260200160405180910390f35b7f000000000000000000000000000000000000000000000000000000000000000062000062565b62000062620000b6366004620004aa565b62000136565b6000620000f36001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016836200016d565b6040516001600160a01b03821681529091507efffc2da0b561cae30d9826d37709e9421c4725faebc226cbbb7ef5fc5e73499060200160405180910390a1919050565b6000620000f36001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001683620001b1565b600082826040516200017f9062000486565b6200018c929190620005b9565b604051809103906000f080158015620001a9573d6000803e3d6000fd5b509392505050565b6000620001c7836001600160a01b0316620001ef565b825190915015620001e957620001e76001600160a01b0382168362000296565b505b92915050565b6000763d602d80600a3d3981f3363d3d373d3d3d363d730000008260601b60e81c176000526e5af43d82803e903d91602b57fd5bf38260781b17602052603760096000f090506001600160a01b038116620002915760405162461bcd60e51b815260206004820152601660248201527f455243313136373a20637265617465206661696c65640000000000000000000060448201526064015b60405180910390fd5b919050565b6060620002dc838360006040518060400160405280601e81526020017f416464726573733a206c6f772d6c6576656c2063616c6c206661696c65640000815250620002e3565b9392505050565b6060824710156200035d5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c0000000000000000000000000000000000000000000000000000606482015260840162000288565b600080866001600160a01b031685876040516200037b9190620005dd565b60006040518083038185875af1925050503d8060008114620003ba576040519150601f19603f3d011682016040523d82523d6000602084013e620003bf565b606091505b5091509150620003d287838387620003df565b925050505b949350505050565b60608315620004535782516000036200044b576001600160a01b0385163b6200044b5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640162000288565b5081620003d7565b620003d783838151156200046a5781518083602001fd5b8060405162461bcd60e51b8152600401620002889190620005fb565b6106fe806200061183390190565b634e487b7160e01b600052604160045260246000fd5b600060208284031215620004bd57600080fd5b813567ffffffffffffffff80821115620004d657600080fd5b818401915084601f830112620004eb57600080fd5b81358181111562000500576200050062000494565b604051601f8201601f19908116603f011681019083821181831017156200052b576200052b62000494565b816040528281528760208487010111156200054557600080fd5b826020860160208301376000928101602001929092525095945050505050565b60005b838110156200058257818101518382015260200162000568565b50506000910152565b60008151808452620005a581602086016020860162000565565b601f01601f19169290920160200192915050565b6001600160a01b0383168152604060208201526000620003d760408301846200058b565b60008251620005f181846020870162000565565b9190910192915050565b602081526000620002dc60208301846200058b56fe60806040526040516106fe3803806106fe83398101604081905261002291610319565b61002e82826000610035565b5050610436565b61003e8361006b565b60008251118061004b5750805b156100665761006483836100ab60201b6100291760201c565b505b505050565b610074816100d7565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606100d083836040518060600160405280602781526020016106d7602791396101a9565b9392505050565b6100ea8161022260201b6100551760201c565b6101515760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b806101887f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61023160201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6060600080856001600160a01b0316856040516101c691906103e7565b600060405180830381855af49150503d8060008114610201576040519150601f19603f3d011682016040523d82523d6000602084013e610206565b606091505b50909250905061021886838387610234565b9695505050505050565b6001600160a01b03163b151590565b90565b606083156102a357825160000361029c576001600160a01b0385163b61029c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610148565b50816102ad565b6102ad83836102b5565b949350505050565b8151156102c55781518083602001fd5b8060405162461bcd60e51b81526004016101489190610403565b634e487b7160e01b600052604160045260246000fd5b60005b838110156103105781810151838201526020016102f8565b50506000910152565b6000806040838503121561032c57600080fd5b82516001600160a01b038116811461034357600080fd5b60208401519092506001600160401b038082111561036057600080fd5b818501915085601f83011261037457600080fd5b815181811115610386576103866102df565b604051601f8201601f19908116603f011681019083821181831017156103ae576103ae6102df565b816040528281528860208487010111156103c757600080fd5b6103d88360208301602088016102f5565b80955050505050509250929050565b600082516103f98184602087016102f5565b9190910192915050565b60208152600082518060208401526104228160408501602087016102f5565b601f01601f19169190910160400192915050565b610292806104456000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b61009f565b565b606061004e838360405180606001604052806027815260200161025f602791396100c3565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e8080156100be573d6000f35b3d6000fd5b6060600080856001600160a01b0316856040516100e0919061020f565b600060405180830381855af49150503d806000811461011b576040519150601f19603f3d011682016040523d82523d6000602084013e610120565b606091505b50915091506101318683838761013b565b9695505050505050565b606083156101af5782516000036101a8576001600160a01b0385163b6101a85760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b50816101b9565b6101b983836101c1565b949350505050565b8151156101d15781518083602001fd5b8060405162461bcd60e51b815260040161019f919061022b565b60005b838110156102065781810151838201526020016101ee565b50506000910152565b600082516102218184602087016101eb565b9190910192915050565b602081526000825180602084015261024a8160408501602087016101eb565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH3 0x46 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x5C5C278B EQ PUSH3 0x4B JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH3 0x7E JUMPI DUP1 PUSH4 0x93042EA3 EQ PUSH3 0xA5 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x62 PUSH3 0x5C CALLDATASIZE PUSH1 0x4 PUSH3 0x4AA JUMP JUMPDEST PUSH3 0xBC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH32 0x0 PUSH3 0x62 JUMP JUMPDEST PUSH3 0x62 PUSH3 0xB6 CALLDATASIZE PUSH1 0x4 PUSH3 0x4AA JUMP JUMPDEST PUSH3 0x136 JUMP JUMPDEST PUSH1 0x0 PUSH3 0xF3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP4 PUSH3 0x16D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP2 MSTORE SWAP1 SWAP2 POP PUSH31 0xFFFC2DA0B561CAE30D9826D37709E9421C4725FAEBC226CBBB7EF5FC5E7349 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0xF3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP4 PUSH3 0x1B1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH3 0x17F SWAP1 PUSH3 0x486 JUMP JUMPDEST PUSH3 0x18C SWAP3 SWAP2 SWAP1 PUSH3 0x5B9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH3 0x1A9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1C7 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH3 0x1EF JUMP JUMPDEST DUP3 MLOAD SWAP1 SWAP2 POP ISZERO PUSH3 0x1E9 JUMPI PUSH3 0x1E7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP4 PUSH3 0x296 JUMP JUMPDEST POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH23 0x3D602D80600A3D3981F3363D3D373D3D3D363D73000000 DUP3 PUSH1 0x60 SHL PUSH1 0xE8 SHR OR PUSH1 0x0 MSTORE PUSH15 0x5AF43D82803E903D91602B57FD5BF3 DUP3 PUSH1 0x78 SHL OR PUSH1 0x20 MSTORE PUSH1 0x37 PUSH1 0x9 PUSH1 0x0 CREATE SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH3 0x291 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313136373A20637265617465206661696C656400000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH3 0x2DC DUP4 DUP4 PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x416464726573733A206C6F772D6C6576656C2063616C6C206661696C65640000 DUP2 MSTORE POP PUSH3 0x2E3 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP3 SELFBALANCE LT ISZERO PUSH3 0x35D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A20696E73756666696369656E742062616C616E636520666F PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x722063616C6C0000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH3 0x288 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP8 PUSH1 0x40 MLOAD PUSH3 0x37B SWAP2 SWAP1 PUSH3 0x5DD JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH3 0x3BA JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH3 0x3BF JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH3 0x3D2 DUP8 DUP4 DUP4 DUP8 PUSH3 0x3DF JUMP JUMPDEST SWAP3 POP POP POP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH3 0x453 JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH3 0x44B JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH3 0x44B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x288 JUMP JUMPDEST POP DUP2 PUSH3 0x3D7 JUMP JUMPDEST PUSH3 0x3D7 DUP4 DUP4 DUP2 MLOAD ISZERO PUSH3 0x46A JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x288 SWAP2 SWAP1 PUSH3 0x5FB JUMP JUMPDEST PUSH2 0x6FE DUP1 PUSH3 0x611 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x4BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH3 0x4D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP5 ADD SWAP2 POP DUP5 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x4EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH3 0x500 JUMPI PUSH3 0x500 PUSH3 0x494 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH3 0x52B JUMPI PUSH3 0x52B PUSH3 0x494 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP8 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH3 0x545 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 SWAP3 DUP2 ADD PUSH1 0x20 ADD SWAP3 SWAP1 SWAP3 MSTORE POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0x582 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0x568 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH3 0x5A5 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH3 0x565 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH3 0x3D7 PUSH1 0x40 DUP4 ADD DUP5 PUSH3 0x58B JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH3 0x5F1 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH3 0x565 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH3 0x2DC PUSH1 0x20 DUP4 ADD DUP5 PUSH3 0x58B JUMP INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH2 0x6FE CODESIZE SUB DUP1 PUSH2 0x6FE DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x22 SWAP2 PUSH2 0x319 JUMP JUMPDEST PUSH2 0x2E DUP3 DUP3 PUSH1 0x0 PUSH2 0x35 JUMP JUMPDEST POP POP PUSH2 0x436 JUMP JUMPDEST PUSH2 0x3E DUP4 PUSH2 0x6B JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD GT DUP1 PUSH2 0x4B JUMPI POP DUP1 JUMPDEST ISZERO PUSH2 0x66 JUMPI PUSH2 0x64 DUP4 DUP4 PUSH2 0xAB PUSH1 0x20 SHL PUSH2 0x29 OR PUSH1 0x20 SHR JUMP JUMPDEST POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x74 DUP2 PUSH2 0xD7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xD0 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x6D7 PUSH1 0x27 SWAP2 CODECOPY PUSH2 0x1A9 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xEA DUP2 PUSH2 0x222 PUSH1 0x20 SHL PUSH2 0x55 OR PUSH1 0x20 SHR JUMP JUMPDEST PUSH2 0x151 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313936373A206E657720696D706C656D656E746174696F6E206973206E PUSH1 0x44 DUP3 ADD MSTORE PUSH13 0x1BDD08184818DBDB9D1C9858DD PUSH1 0x9A SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH2 0x188 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC PUSH1 0x0 SHL PUSH2 0x231 PUSH1 0x20 SHL PUSH2 0x64 OR PUSH1 0x20 SHR JUMP JUMPDEST DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0x1C6 SWAP2 SWAP1 PUSH2 0x3E7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x201 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x206 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x218 DUP7 DUP4 DUP4 DUP8 PUSH2 0x234 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x2A3 JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0x29C JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0x29C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x148 JUMP JUMPDEST POP DUP2 PUSH2 0x2AD JUMP JUMPDEST PUSH2 0x2AD DUP4 DUP4 PUSH2 0x2B5 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x2C5 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x148 SWAP2 SWAP1 PUSH2 0x403 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x310 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2F8 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x32C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x343 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x360 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x374 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x386 JUMPI PUSH2 0x386 PUSH2 0x2DF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x3AE JUMPI PUSH2 0x3AE PUSH2 0x2DF JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x3C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3D8 DUP4 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x2F5 JUMP JUMPDEST DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x3F9 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x2F5 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x422 DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x2F5 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x292 DUP1 PUSH2 0x445 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLDATASIZE PUSH2 0x13 JUMPI PUSH2 0x11 PUSH2 0x17 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x11 JUMPDEST PUSH2 0x27 PUSH2 0x22 PUSH2 0x67 JUMP JUMPDEST PUSH2 0x9F JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x60 PUSH2 0x4E DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x25F PUSH1 0x27 SWAP2 CODECOPY PUSH2 0xC3 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9A PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 DUP1 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE PUSH1 0x0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH2 0xBE JUMPI RETURNDATASIZE PUSH1 0x0 RETURN JUMPDEST RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0xE0 SWAP2 SWAP1 PUSH2 0x20F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x11B JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x120 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x131 DUP7 DUP4 DUP4 DUP8 PUSH2 0x13B JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x1AF JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0x1A8 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0x1A8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP DUP2 PUSH2 0x1B9 JUMP JUMPDEST PUSH2 0x1B9 DUP4 DUP4 PUSH2 0x1C1 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x1D1 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x19F SWAP2 SWAP1 PUSH2 0x22B JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x206 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1EE JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x221 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x1EB JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x24A DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x1EB JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A164 PUSH20 0x6F6C6343000811000A416464726573733A206C6F PUSH24 0x2D6C6576656C2064656C65676174652063616C6C20666169 PUSH13 0x6564A164736F6C634300081100 EXP ","sourceMap":"415:2379:84:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1518:183;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;1236:55:92;;;1218:74;;1206:2;1191:18;1518:183:84;;;;;;;2698:94;2771:14;2698:94;;2150:189;;;;;;:::i;:::-;;:::i;1518:183::-;1581:13;1614:37;-1:-1:-1;;;;;1614:14:84;:30;1645:5;1614:30;:37::i;:::-;1666:28;;-1:-1:-1;;;;;1236:55:92;;1218:74;;1606:45:84;;-1:-1:-1;1666:28:84;;1206:2:92;1191:18;1666:28:84;;;;;;;1518:183;;;:::o;2150:189::-;2216:13;2249:40;-1:-1:-1;;;;;2249:14:84;:33;2283:5;2249:33;:40::i;1415:222:85:-;1524:17;1599:6;1614:13;1573:56;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1553:77:85;1415:222;-1:-1:-1;;;1415:222:85:o;2237:292::-;2349:20;2396:14;:6;-1:-1:-1;;;;;2396:12:85;;:14::i;:::-;2424:20;;2381:29;;-1:-1:-1;2424:24:85;2420:103;;2464:48;-1:-1:-1;;;;;2464:25:85;;2497:13;2464:25;:48::i;:::-;;2420:103;2237:292;;;;:::o;973:759:17:-;1030:16;1362:48;1344:14;1338:4;1334:25;1328:4;1324:36;1321:90;1315:4;1308:104;1569:32;1552:14;1546:4;1542:25;1539:63;1533:4;1526:77;1644:4;1638;1635:1;1628:21;1616:33;-1:-1:-1;;;;;;1676:22:17;;1668:57;;;;-1:-1:-1;;;1668:57:17;;2377:2:92;1668:57:17;;;2359:21:92;2416:2;2396:18;;;2389:30;2455:24;2435:18;;;2428:52;2497:18;;1668:57:17;;;;;;;;;973:759;;;:::o;3701:185:33:-;3776:12;3807:72;3829:6;3837:4;3843:1;3807:72;;;;;;;;;;;;;;;;;:21;:72::i;:::-;3800:79;3701:185;-1:-1:-1;;;3701:185:33:o;5165:446::-;5330:12;5387:5;5362:21;:30;;5354:81;;;;-1:-1:-1;;;5354:81:33;;2728:2:92;5354:81:33;;;2710:21:92;2767:2;2747:18;;;2740:30;2806:34;2786:18;;;2779:62;2877:8;2857:18;;;2850:36;2903:19;;5354:81:33;2526:402:92;5354:81:33;5446:12;5460:23;5487:6;-1:-1:-1;;;;;5487:11:33;5506:5;5513:4;5487:31;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5445:73;;;;5535:69;5562:6;5570:7;5579:10;5591:12;5535:26;:69::i;:::-;5528:76;;;;5165:446;;;;;;;:::o;7671:628::-;7851:12;7879:7;7875:418;;;7906:10;:17;7927:1;7906:22;7902:286;;-1:-1:-1;;;;;1702:19:33;;;8113:60;;;;-1:-1:-1;;;8113:60:33;;3427:2:92;8113:60:33;;;3409:21:92;3466:2;3446:18;;;3439:30;3505:31;3485:18;;;3478:59;3554:18;;8113:60:33;3225:353:92;8113:60:33;-1:-1:-1;8208:10:33;8201:17;;7875:418;8249:33;8257:10;8269:12;8980:17;;:21;8976:379;;9208:10;9202:17;9264:15;9251:10;9247:2;9243:19;9236:44;8976:379;9331:12;9324:20;;-1:-1:-1;;;9324:20:33;;;;;;;;:::i;-1:-1:-1:-;;;;;;;;:::o;14:127:92:-;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:921;214:6;267:2;255:9;246:7;242:23;238:32;235:52;;;283:1;280;273:12;235:52;323:9;310:23;352:18;393:2;385:6;382:14;379:34;;;409:1;406;399:12;379:34;447:6;436:9;432:22;422:32;;492:7;485:4;481:2;477:13;473:27;463:55;;514:1;511;504:12;463:55;550:2;537:16;572:2;568;565:10;562:36;;;578:18;;:::i;:::-;653:2;647:9;621:2;707:13;;-1:-1:-1;;703:22:92;;;727:2;699:31;695:40;683:53;;;751:18;;;771:22;;;748:46;745:72;;;797:18;;:::i;:::-;837:10;833:2;826:22;872:2;864:6;857:18;912:7;907:2;902;898;894:11;890:20;887:33;884:53;;;933:1;930;923:12;884:53;989:2;984;980;976:11;971:2;963:6;959:15;946:46;1034:1;1012:15;;;1029:2;1008:24;1001:35;;;;-1:-1:-1;1016:6:92;146:921;-1:-1:-1;;;;;146:921:92:o;1303:250::-;1388:1;1398:113;1412:6;1409:1;1406:13;1398:113;;;1488:11;;;1482:18;1469:11;;;1462:39;1434:2;1427:10;1398:113;;;-1:-1:-1;;1545:1:92;1527:16;;1520:27;1303:250::o;1558:270::-;1599:3;1637:5;1631:12;1664:6;1659:3;1652:19;1680:76;1749:6;1742:4;1737:3;1733:14;1726:4;1719:5;1715:16;1680:76;:::i;:::-;1810:2;1789:15;-1:-1:-1;;1785:29:92;1776:39;;;;1817:4;1772:50;;1558:270;-1:-1:-1;;1558:270:92:o;1833:337::-;-1:-1:-1;;;;;2012:6:92;2008:55;1997:9;1990:74;2100:2;2095;2084:9;2080:18;2073:30;1971:4;2120:44;2160:2;2149:9;2145:18;2137:6;2120:44;:::i;2933:287::-;3062:3;3100:6;3094:13;3116:66;3175:6;3170:3;3163:4;3155:6;3151:17;3116:66;:::i;:::-;3198:16;;;;;2933:287;-1:-1:-1;;2933:287:92:o;3583:219::-;3732:2;3721:9;3714:21;3695:4;3752:44;3792:2;3781:9;3777:18;3769:6;3752:44;:::i"},"gasEstimates":{"creation":{"codeDepositCost":"671000","executionCost":"infinite","totalCost":"infinite"},"external":{"deployMinimalProxy(bytes)":"infinite","deployUUPSProxy(bytes)":"infinite","implementation()":"infinite"}},"methodIdentifiers":{"deployMinimalProxy(bytes)":"93042ea3","deployUUPSProxy(bytes)":"5c5c278b","implementation()":"5c60da1b"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_implementation\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"proxy\",\"type\":\"address\"}],\"name\":\"ProxyCreated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"deployMinimalProxy\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"proxy\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"deployUUPSProxy\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"proxy\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Aragon X - 2024\",\"custom:security-contact\":\"sirt@aragon.org\",\"events\":{\"ProxyCreated(address)\":{\"params\":{\"proxy\":\"The proxy address.\"}}},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"params\":{\"_implementation\":\"The logic contract address.\"}},\"deployMinimalProxy(bytes)\":{\"details\":\"If `_data` is non-empty, it is used in a call to the clone contract. This will typically be an encoded function call initializing the storage of the contract.\",\"params\":{\"_data\":\"The initialization data for this contract.\"},\"returns\":{\"proxy\":\"The address of the proxy contract created.\"}},\"deployUUPSProxy(bytes)\":{\"details\":\"If `_data` is non-empty, it is used in a delegate call to the `_implementation` contract. This will typically be an encoded function call initializing the proxy (see [OpenZeppelin ERC1967Proxy-constructor](https://docs.openzeppelin.com/contracts/4.x/api/proxy#ERC1967Proxy-constructor-address-bytes-)).\",\"params\":{\"_data\":\"The initialization data for this contract.\"},\"returns\":{\"proxy\":\"The address of the proxy contract created.\"}},\"implementation()\":{\"details\":\"The implementation can be cloned via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)), or proxied via the UUPS proxy pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\",\"returns\":{\"_0\":\"The address of the implementation contract.\"}}},\"title\":\"ProxyFactory\",\"version\":1},\"userdoc\":{\"events\":{\"ProxyCreated(address)\":{\"notice\":\"Emitted when an proxy contract is created.\"}},\"kind\":\"user\",\"methods\":{\"constructor\":{\"notice\":\"Initializes the contract with a logic contract address.\"},\"deployMinimalProxy(bytes)\":{\"notice\":\"Creates an [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167) minimal proxy contract pointing to the pre-set logic contract.\"},\"deployUUPSProxy(bytes)\":{\"notice\":\"Creates an [ERC-1967](https://eips.ethereum.org/EIPS/eip-1967) proxy contract pointing to the pre-set logic contract.\"},\"implementation()\":{\"notice\":\"Returns the implementation contract address.\"}},\"notice\":\"A factory to deploy proxies via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)) and minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)).\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/utils/deployment/ProxyFactory.sol\":\"ProxyFactory\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/IERC1967.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (interfaces/IERC1967.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\\n *\\n * _Available since v4.8.3._\\n */\\ninterface IERC1967 {\\n /**\\n * @dev Emitted when the implementation is upgraded.\\n */\\n event Upgraded(address indexed implementation);\\n\\n /**\\n * @dev Emitted when the admin account has changed.\\n */\\n event AdminChanged(address previousAdmin, address newAdmin);\\n\\n /**\\n * @dev Emitted when the beacon is changed.\\n */\\n event BeaconUpgraded(address indexed beacon);\\n}\\n\",\"keccak256\":\"0x3cbef5ebc24b415252e2f8c0c9254555d30d9f085603b4b80d9b5ed20ab87e90\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822Proxiable {\\n /**\\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n * address.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy.\\n */\\n function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/Clones.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/Clones.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev https://eips.ethereum.org/EIPS/eip-1167[EIP 1167] is a standard for\\n * deploying minimal proxy contracts, also known as \\\"clones\\\".\\n *\\n * > To simply and cheaply clone contract functionality in an immutable way, this standard specifies\\n * > a minimal bytecode implementation that delegates all calls to a known, fixed address.\\n *\\n * The library includes functions to deploy a proxy using either `create` (traditional deployment) or `create2`\\n * (salted deterministic deployment). It also includes functions to predict the addresses of clones deployed using the\\n * deterministic method.\\n *\\n * _Available since v3.4._\\n */\\nlibrary Clones {\\n /**\\n * @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`.\\n *\\n * This function uses the create opcode, which should never revert.\\n */\\n function clone(address implementation) internal returns (address instance) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n // Cleans the upper 96 bits of the `implementation` word, then packs the first 3 bytes\\n // of the `implementation` address with the bytecode before the address.\\n mstore(0x00, or(shr(0xe8, shl(0x60, implementation)), 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000))\\n // Packs the remaining 17 bytes of `implementation` with the bytecode after the address.\\n mstore(0x20, or(shl(0x78, implementation), 0x5af43d82803e903d91602b57fd5bf3))\\n instance := create(0, 0x09, 0x37)\\n }\\n require(instance != address(0), \\\"ERC1167: create failed\\\");\\n }\\n\\n /**\\n * @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`.\\n *\\n * This function uses the create2 opcode and a `salt` to deterministically deploy\\n * the clone. Using the same `implementation` and `salt` multiple time will revert, since\\n * the clones cannot be deployed twice at the same address.\\n */\\n function cloneDeterministic(address implementation, bytes32 salt) internal returns (address instance) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n // Cleans the upper 96 bits of the `implementation` word, then packs the first 3 bytes\\n // of the `implementation` address with the bytecode before the address.\\n mstore(0x00, or(shr(0xe8, shl(0x60, implementation)), 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000))\\n // Packs the remaining 17 bytes of `implementation` with the bytecode after the address.\\n mstore(0x20, or(shl(0x78, implementation), 0x5af43d82803e903d91602b57fd5bf3))\\n instance := create2(0, 0x09, 0x37, salt)\\n }\\n require(instance != address(0), \\\"ERC1167: create2 failed\\\");\\n }\\n\\n /**\\n * @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}.\\n */\\n function predictDeterministicAddress(\\n address implementation,\\n bytes32 salt,\\n address deployer\\n ) internal pure returns (address predicted) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n let ptr := mload(0x40)\\n mstore(add(ptr, 0x38), deployer)\\n mstore(add(ptr, 0x24), 0x5af43d82803e903d91602b57fd5bf3ff)\\n mstore(add(ptr, 0x14), implementation)\\n mstore(ptr, 0x3d602d80600a3d3981f3363d3d373d3d3d363d73)\\n mstore(add(ptr, 0x58), salt)\\n mstore(add(ptr, 0x78), keccak256(add(ptr, 0x0c), 0x37))\\n predicted := keccak256(add(ptr, 0x43), 0x55)\\n }\\n }\\n\\n /**\\n * @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}.\\n */\\n function predictDeterministicAddress(\\n address implementation,\\n bytes32 salt\\n ) internal view returns (address predicted) {\\n return predictDeterministicAddress(implementation, salt, address(this));\\n }\\n}\\n\",\"keccak256\":\"0x01f055f5c26ba25d7f83e9aa9ba877fbea4d0bf22227de046ea67494bc932999\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (proxy/ERC1967/ERC1967Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../Proxy.sol\\\";\\nimport \\\"./ERC1967Upgrade.sol\\\";\\n\\n/**\\n * @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an\\n * implementation address that can be changed. This address is stored in storage in the location specified by\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the\\n * implementation behind the proxy.\\n */\\ncontract ERC1967Proxy is Proxy, ERC1967Upgrade {\\n /**\\n * @dev Initializes the upgradeable proxy with an initial implementation specified by `_logic`.\\n *\\n * If `_data` is nonempty, it's used as data in a delegate call to `_logic`. This will typically be an encoded\\n * function call, and allows initializing the storage of the proxy like a Solidity constructor.\\n */\\n constructor(address _logic, bytes memory _data) payable {\\n _upgradeToAndCall(_logic, _data, false);\\n }\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _implementation() internal view virtual override returns (address impl) {\\n return ERC1967Upgrade._getImplementation();\\n }\\n}\\n\",\"keccak256\":\"0xa2b22da3032e50b55f95ec1d13336102d675f341167aa76db571ef7f8bb7975d\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../beacon/IBeacon.sol\\\";\\nimport \\\"../../interfaces/IERC1967.sol\\\";\\nimport \\\"../../interfaces/draft-IERC1822.sol\\\";\\nimport \\\"../../utils/Address.sol\\\";\\nimport \\\"../../utils/StorageSlot.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n */\\nabstract contract ERC1967Upgrade is IERC1967 {\\n // This is the keccak-256 hash of \\\"eip1967.proxy.rollback\\\" subtracted by 1\\n bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n /**\\n * @dev Storage slot with the address of the current implementation.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _getImplementation() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 implementation slot.\\n */\\n function _setImplementation(address newImplementation) private {\\n require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n }\\n\\n /**\\n * @dev Perform implementation upgrade\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeTo(address newImplementation) internal {\\n _setImplementation(newImplementation);\\n emit Upgraded(newImplementation);\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCall(address newImplementation, bytes memory data, bool forceCall) internal {\\n _upgradeTo(newImplementation);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(newImplementation, data);\\n }\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCallUUPS(address newImplementation, bytes memory data, bool forceCall) internal {\\n // Upgrades from old implementations will perform a rollback test. This test requires the new\\n // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n // this special case will break upgrade paths from old UUPS implementation to new ones.\\n if (StorageSlot.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n _setImplementation(newImplementation);\\n } else {\\n try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n require(slot == _IMPLEMENTATION_SLOT, \\\"ERC1967Upgrade: unsupported proxiableUUID\\\");\\n } catch {\\n revert(\\\"ERC1967Upgrade: new implementation is not UUPS\\\");\\n }\\n _upgradeToAndCall(newImplementation, data, forceCall);\\n }\\n }\\n\\n /**\\n * @dev Storage slot with the admin of the contract.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _getAdmin() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_ADMIN_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 admin slot.\\n */\\n function _setAdmin(address newAdmin) private {\\n require(newAdmin != address(0), \\\"ERC1967: new admin is the zero address\\\");\\n StorageSlot.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n */\\n function _changeAdmin(address newAdmin) internal {\\n emit AdminChanged(_getAdmin(), newAdmin);\\n _setAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\\n */\\n bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n /**\\n * @dev Returns the current beacon.\\n */\\n function _getBeacon() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_BEACON_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new beacon in the EIP1967 beacon slot.\\n */\\n function _setBeacon(address newBeacon) private {\\n require(Address.isContract(newBeacon), \\\"ERC1967: new beacon is not a contract\\\");\\n require(\\n Address.isContract(IBeacon(newBeacon).implementation()),\\n \\\"ERC1967: beacon implementation is not a contract\\\"\\n );\\n StorageSlot.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n }\\n\\n /**\\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n *\\n * Emits a {BeaconUpgraded} event.\\n */\\n function _upgradeBeaconToAndCall(address newBeacon, bytes memory data, bool forceCall) internal {\\n _setBeacon(newBeacon);\\n emit BeaconUpgraded(newBeacon);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x3b21ae06bf5957f73fa16754b0669c77b7abd8ba6c072d35c3281d446fdb86c2\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (proxy/Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\\n * be specified by overriding the virtual {_implementation} function.\\n *\\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\\n * different contract through the {_delegate} function.\\n *\\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\\n */\\nabstract contract Proxy {\\n /**\\n * @dev Delegates the current call to `implementation`.\\n *\\n * This function does not return to its internal call site, it will return directly to the external caller.\\n */\\n function _delegate(address implementation) internal virtual {\\n assembly {\\n // Copy msg.data. We take full control of memory in this inline assembly\\n // block because it will not return to Solidity code. We overwrite the\\n // Solidity scratch pad at memory position 0.\\n calldatacopy(0, 0, calldatasize())\\n\\n // Call the implementation.\\n // out and outsize are 0 because we don't know the size yet.\\n let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)\\n\\n // Copy the returned data.\\n returndatacopy(0, 0, returndatasize())\\n\\n switch result\\n // delegatecall returns 0 on error.\\n case 0 {\\n revert(0, returndatasize())\\n }\\n default {\\n return(0, returndatasize())\\n }\\n }\\n }\\n\\n /**\\n * @dev This is a virtual function that should be overridden so it returns the address to which the fallback function\\n * and {_fallback} should delegate.\\n */\\n function _implementation() internal view virtual returns (address);\\n\\n /**\\n * @dev Delegates the current call to the address returned by `_implementation()`.\\n *\\n * This function does not return to its internal call site, it will return directly to the external caller.\\n */\\n function _fallback() internal virtual {\\n _beforeFallback();\\n _delegate(_implementation());\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\\n * function in the contract matches the call data.\\n */\\n fallback() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data\\n * is empty.\\n */\\n receive() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`\\n * call, or as part of the Solidity `fallback` or `receive` functions.\\n *\\n * If overridden should call `super._beforeFallback()`.\\n */\\n function _beforeFallback() internal virtual {}\\n}\\n\",\"keccak256\":\"0xc130fe33f1b2132158531a87734153293f6d07bc263ff4ac90e85da9c82c0e27\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeacon {\\n /**\\n * @dev Must return an address that can be used as a delegate call target.\\n *\\n * {BeaconProxy} will check that this address is a contract.\\n */\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/StorageSlot.sol)\\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```solidity\\n * contract ERC1967 {\\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n * function _getImplementation() internal view returns (address) {\\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n * }\\n *\\n * function _setImplementation(address newImplementation) internal {\\n * require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n * }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._\\n * _Available since v4.9 for `string`, `bytes`._\\n */\\nlibrary StorageSlot {\\n struct AddressSlot {\\n address value;\\n }\\n\\n struct BooleanSlot {\\n bool value;\\n }\\n\\n struct Bytes32Slot {\\n bytes32 value;\\n }\\n\\n struct Uint256Slot {\\n uint256 value;\\n }\\n\\n struct StringSlot {\\n string value;\\n }\\n\\n struct BytesSlot {\\n bytes value;\\n }\\n\\n /**\\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n */\\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n */\\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n */\\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n */\\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` with member `value` located at `slot`.\\n */\\n function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\\n */\\n function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` with member `value` located at `slot`.\\n */\\n function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\\n */\\n function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n}\\n\",\"keccak256\":\"0xf09e68aa0dc6722a25bc46490e8d48ed864466d17313b8a0b254c36b54e49899\",\"license\":\"MIT\"},\"src/utils/deployment/ProxyFactory.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ProxyLib} from \\\"./ProxyLib.sol\\\";\\n\\n/// @title ProxyFactory\\n/// @author Aragon X - 2024\\n/// @notice A factory to deploy proxies via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)) and minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)).\\n/// @custom:security-contact sirt@aragon.org\\ncontract ProxyFactory {\\n using ProxyLib for address;\\n /// @notice The immutable logic contract address.\\n address internal immutable IMPLEMENTATION;\\n\\n /// @notice Emitted when an proxy contract is created.\\n /// @param proxy The proxy address.\\n event ProxyCreated(address proxy);\\n\\n /// @notice Initializes the contract with a logic contract address.\\n /// @param _implementation The logic contract address.\\n constructor(address _implementation) {\\n IMPLEMENTATION = _implementation;\\n }\\n\\n /// @notice Creates an [ERC-1967](https://eips.ethereum.org/EIPS/eip-1967) proxy contract pointing to the pre-set logic contract.\\n /// @param _data The initialization data for this contract.\\n /// @return proxy The address of the proxy contract created.\\n /// @dev If `_data` is non-empty, it is used in a delegate call to the `_implementation` contract. This will typically be an encoded function call initializing the proxy (see [OpenZeppelin ERC1967Proxy-constructor](https://docs.openzeppelin.com/contracts/4.x/api/proxy#ERC1967Proxy-constructor-address-bytes-)).\\n function deployUUPSProxy(bytes memory _data) external returns (address proxy) {\\n proxy = IMPLEMENTATION.deployUUPSProxy(_data);\\n emit ProxyCreated({proxy: proxy});\\n }\\n\\n /// @notice Creates an [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167) minimal proxy contract pointing to the pre-set logic contract.\\n /// @param _data The initialization data for this contract.\\n /// @return proxy The address of the proxy contract created.\\n /// @dev If `_data` is non-empty, it is used in a call to the clone contract. This will typically be an encoded function call initializing the storage of the contract.\\n function deployMinimalProxy(bytes memory _data) external returns (address proxy) {\\n proxy = IMPLEMENTATION.deployMinimalProxy(_data);\\n emit ProxyCreated({proxy: proxy});\\n }\\n\\n /// @notice Returns the implementation contract address.\\n /// @return The address of the implementation contract.\\n /// @dev The implementation can be cloned via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)), or proxied via the UUPS proxy pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\\n function implementation() public view returns (address) {\\n return IMPLEMENTATION;\\n }\\n}\\n\",\"keccak256\":\"0xdf9be07dd3f81dc4d6b63a833e4a05f9bf2bf0d2b5bd2a9865a5c5ae32426278\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/deployment/ProxyLib.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ERC1967Proxy} from \\\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol\\\";\\nimport {Clones} from \\\"@openzeppelin/contracts/proxy/Clones.sol\\\";\\nimport {Address} from \\\"@openzeppelin/contracts/utils/Address.sol\\\";\\n\\n/// @title ProxyLib\\n/// @author Aragon X - 2024\\n/// @notice A library containing methods for the deployment of proxies via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)) and minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)).\\n/// @custom:security-contact sirt@aragon.org\\nlibrary ProxyLib {\\n using Address for address;\\n using Clones for address;\\n\\n /// @notice Creates an [ERC-1967](https://eips.ethereum.org/EIPS/eip-1967) UUPS proxy contract pointing to a logic contract and allows to immediately initialize it.\\n /// @param _logic The logic contract the proxy is pointing to.\\n /// @param _initCalldata The initialization data for this contract.\\n /// @return uupsProxy The address of the UUPS proxy contract created.\\n /// @dev If `_initCalldata` is non-empty, it is used in a delegate call to the `_logic` contract. This will typically be an encoded function call initializing the storage of the proxy (see [OpenZeppelin ERC1967Proxy-constructor](https://docs.openzeppelin.com/contracts/4.x/api/proxy#ERC1967Proxy-constructor-address-bytes-)).\\n function deployUUPSProxy(\\n address _logic,\\n bytes memory _initCalldata\\n ) internal returns (address uupsProxy) {\\n uupsProxy = address(new ERC1967Proxy({_logic: _logic, _data: _initCalldata}));\\n }\\n\\n /// @notice Creates an [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167) minimal proxy contract, also known as clones, pointing to a logic contract and allows to immediately initialize it.\\n /// @param _logic The logic contract the proxy is pointing to.\\n /// @param _initCalldata The initialization data for this contract.\\n /// @return minimalProxy The address of the minimal proxy contract created.\\n /// @dev If `_initCalldata` is non-empty, it is used in a call to the clone contract. This will typically be an encoded function call initializing the storage of the contract.\\n function deployMinimalProxy(\\n address _logic,\\n bytes memory _initCalldata\\n ) internal returns (address minimalProxy) {\\n minimalProxy = _logic.clone();\\n if (_initCalldata.length > 0) {\\n minimalProxy.functionCall({data: _initCalldata});\\n }\\n }\\n}\\n\",\"keccak256\":\"0xef0d1790dfa026381c021daa2ec7267357497f58cd4a2fa5c64e72e0dea95acc\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"events":{"ProxyCreated(address)":{"notice":"Emitted when an proxy contract is created."}},"kind":"user","methods":{"constructor":{"notice":"Initializes the contract with a logic contract address."},"deployMinimalProxy(bytes)":{"notice":"Creates an [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167) minimal proxy contract pointing to the pre-set logic contract."},"deployUUPSProxy(bytes)":{"notice":"Creates an [ERC-1967](https://eips.ethereum.org/EIPS/eip-1967) proxy contract pointing to the pre-set logic contract."},"implementation()":{"notice":"Returns the implementation contract address."}},"notice":"A factory to deploy proxies via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)) and minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)).","version":1}}},"src/utils/deployment/ProxyLib.sol":{"ProxyLib":{"abi":[],"devdoc":{"author":"Aragon X - 2024","custom:security-contact":"sirt@aragon.org","kind":"dev","methods":{},"title":"ProxyLib","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"602d6037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a","opcodes":"PUSH1 0x2D PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"618:1913:85:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;618:1913:85;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"618:1913:85:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"9000","executionCost":"94","totalCost":"9094"},"internal":{"deployMinimalProxy(address,bytes memory)":"infinite","deployUUPSProxy(address,bytes memory)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"author\":\"Aragon X - 2024\",\"custom:security-contact\":\"sirt@aragon.org\",\"kind\":\"dev\",\"methods\":{},\"title\":\"ProxyLib\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"A library containing methods for the deployment of proxies via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)) and minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)).\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/utils/deployment/ProxyLib.sol\":\"ProxyLib\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/IERC1967.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (interfaces/IERC1967.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\\n *\\n * _Available since v4.8.3._\\n */\\ninterface IERC1967 {\\n /**\\n * @dev Emitted when the implementation is upgraded.\\n */\\n event Upgraded(address indexed implementation);\\n\\n /**\\n * @dev Emitted when the admin account has changed.\\n */\\n event AdminChanged(address previousAdmin, address newAdmin);\\n\\n /**\\n * @dev Emitted when the beacon is changed.\\n */\\n event BeaconUpgraded(address indexed beacon);\\n}\\n\",\"keccak256\":\"0x3cbef5ebc24b415252e2f8c0c9254555d30d9f085603b4b80d9b5ed20ab87e90\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822Proxiable {\\n /**\\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n * address.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy.\\n */\\n function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/Clones.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/Clones.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev https://eips.ethereum.org/EIPS/eip-1167[EIP 1167] is a standard for\\n * deploying minimal proxy contracts, also known as \\\"clones\\\".\\n *\\n * > To simply and cheaply clone contract functionality in an immutable way, this standard specifies\\n * > a minimal bytecode implementation that delegates all calls to a known, fixed address.\\n *\\n * The library includes functions to deploy a proxy using either `create` (traditional deployment) or `create2`\\n * (salted deterministic deployment). It also includes functions to predict the addresses of clones deployed using the\\n * deterministic method.\\n *\\n * _Available since v3.4._\\n */\\nlibrary Clones {\\n /**\\n * @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`.\\n *\\n * This function uses the create opcode, which should never revert.\\n */\\n function clone(address implementation) internal returns (address instance) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n // Cleans the upper 96 bits of the `implementation` word, then packs the first 3 bytes\\n // of the `implementation` address with the bytecode before the address.\\n mstore(0x00, or(shr(0xe8, shl(0x60, implementation)), 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000))\\n // Packs the remaining 17 bytes of `implementation` with the bytecode after the address.\\n mstore(0x20, or(shl(0x78, implementation), 0x5af43d82803e903d91602b57fd5bf3))\\n instance := create(0, 0x09, 0x37)\\n }\\n require(instance != address(0), \\\"ERC1167: create failed\\\");\\n }\\n\\n /**\\n * @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`.\\n *\\n * This function uses the create2 opcode and a `salt` to deterministically deploy\\n * the clone. Using the same `implementation` and `salt` multiple time will revert, since\\n * the clones cannot be deployed twice at the same address.\\n */\\n function cloneDeterministic(address implementation, bytes32 salt) internal returns (address instance) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n // Cleans the upper 96 bits of the `implementation` word, then packs the first 3 bytes\\n // of the `implementation` address with the bytecode before the address.\\n mstore(0x00, or(shr(0xe8, shl(0x60, implementation)), 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000))\\n // Packs the remaining 17 bytes of `implementation` with the bytecode after the address.\\n mstore(0x20, or(shl(0x78, implementation), 0x5af43d82803e903d91602b57fd5bf3))\\n instance := create2(0, 0x09, 0x37, salt)\\n }\\n require(instance != address(0), \\\"ERC1167: create2 failed\\\");\\n }\\n\\n /**\\n * @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}.\\n */\\n function predictDeterministicAddress(\\n address implementation,\\n bytes32 salt,\\n address deployer\\n ) internal pure returns (address predicted) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n let ptr := mload(0x40)\\n mstore(add(ptr, 0x38), deployer)\\n mstore(add(ptr, 0x24), 0x5af43d82803e903d91602b57fd5bf3ff)\\n mstore(add(ptr, 0x14), implementation)\\n mstore(ptr, 0x3d602d80600a3d3981f3363d3d373d3d3d363d73)\\n mstore(add(ptr, 0x58), salt)\\n mstore(add(ptr, 0x78), keccak256(add(ptr, 0x0c), 0x37))\\n predicted := keccak256(add(ptr, 0x43), 0x55)\\n }\\n }\\n\\n /**\\n * @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}.\\n */\\n function predictDeterministicAddress(\\n address implementation,\\n bytes32 salt\\n ) internal view returns (address predicted) {\\n return predictDeterministicAddress(implementation, salt, address(this));\\n }\\n}\\n\",\"keccak256\":\"0x01f055f5c26ba25d7f83e9aa9ba877fbea4d0bf22227de046ea67494bc932999\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (proxy/ERC1967/ERC1967Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../Proxy.sol\\\";\\nimport \\\"./ERC1967Upgrade.sol\\\";\\n\\n/**\\n * @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an\\n * implementation address that can be changed. This address is stored in storage in the location specified by\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the\\n * implementation behind the proxy.\\n */\\ncontract ERC1967Proxy is Proxy, ERC1967Upgrade {\\n /**\\n * @dev Initializes the upgradeable proxy with an initial implementation specified by `_logic`.\\n *\\n * If `_data` is nonempty, it's used as data in a delegate call to `_logic`. This will typically be an encoded\\n * function call, and allows initializing the storage of the proxy like a Solidity constructor.\\n */\\n constructor(address _logic, bytes memory _data) payable {\\n _upgradeToAndCall(_logic, _data, false);\\n }\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _implementation() internal view virtual override returns (address impl) {\\n return ERC1967Upgrade._getImplementation();\\n }\\n}\\n\",\"keccak256\":\"0xa2b22da3032e50b55f95ec1d13336102d675f341167aa76db571ef7f8bb7975d\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../beacon/IBeacon.sol\\\";\\nimport \\\"../../interfaces/IERC1967.sol\\\";\\nimport \\\"../../interfaces/draft-IERC1822.sol\\\";\\nimport \\\"../../utils/Address.sol\\\";\\nimport \\\"../../utils/StorageSlot.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n */\\nabstract contract ERC1967Upgrade is IERC1967 {\\n // This is the keccak-256 hash of \\\"eip1967.proxy.rollback\\\" subtracted by 1\\n bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n /**\\n * @dev Storage slot with the address of the current implementation.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _getImplementation() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 implementation slot.\\n */\\n function _setImplementation(address newImplementation) private {\\n require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n }\\n\\n /**\\n * @dev Perform implementation upgrade\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeTo(address newImplementation) internal {\\n _setImplementation(newImplementation);\\n emit Upgraded(newImplementation);\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCall(address newImplementation, bytes memory data, bool forceCall) internal {\\n _upgradeTo(newImplementation);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(newImplementation, data);\\n }\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCallUUPS(address newImplementation, bytes memory data, bool forceCall) internal {\\n // Upgrades from old implementations will perform a rollback test. This test requires the new\\n // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n // this special case will break upgrade paths from old UUPS implementation to new ones.\\n if (StorageSlot.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n _setImplementation(newImplementation);\\n } else {\\n try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n require(slot == _IMPLEMENTATION_SLOT, \\\"ERC1967Upgrade: unsupported proxiableUUID\\\");\\n } catch {\\n revert(\\\"ERC1967Upgrade: new implementation is not UUPS\\\");\\n }\\n _upgradeToAndCall(newImplementation, data, forceCall);\\n }\\n }\\n\\n /**\\n * @dev Storage slot with the admin of the contract.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _getAdmin() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_ADMIN_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 admin slot.\\n */\\n function _setAdmin(address newAdmin) private {\\n require(newAdmin != address(0), \\\"ERC1967: new admin is the zero address\\\");\\n StorageSlot.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n */\\n function _changeAdmin(address newAdmin) internal {\\n emit AdminChanged(_getAdmin(), newAdmin);\\n _setAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\\n */\\n bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n /**\\n * @dev Returns the current beacon.\\n */\\n function _getBeacon() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_BEACON_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new beacon in the EIP1967 beacon slot.\\n */\\n function _setBeacon(address newBeacon) private {\\n require(Address.isContract(newBeacon), \\\"ERC1967: new beacon is not a contract\\\");\\n require(\\n Address.isContract(IBeacon(newBeacon).implementation()),\\n \\\"ERC1967: beacon implementation is not a contract\\\"\\n );\\n StorageSlot.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n }\\n\\n /**\\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n *\\n * Emits a {BeaconUpgraded} event.\\n */\\n function _upgradeBeaconToAndCall(address newBeacon, bytes memory data, bool forceCall) internal {\\n _setBeacon(newBeacon);\\n emit BeaconUpgraded(newBeacon);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x3b21ae06bf5957f73fa16754b0669c77b7abd8ba6c072d35c3281d446fdb86c2\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (proxy/Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\\n * be specified by overriding the virtual {_implementation} function.\\n *\\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\\n * different contract through the {_delegate} function.\\n *\\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\\n */\\nabstract contract Proxy {\\n /**\\n * @dev Delegates the current call to `implementation`.\\n *\\n * This function does not return to its internal call site, it will return directly to the external caller.\\n */\\n function _delegate(address implementation) internal virtual {\\n assembly {\\n // Copy msg.data. We take full control of memory in this inline assembly\\n // block because it will not return to Solidity code. We overwrite the\\n // Solidity scratch pad at memory position 0.\\n calldatacopy(0, 0, calldatasize())\\n\\n // Call the implementation.\\n // out and outsize are 0 because we don't know the size yet.\\n let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)\\n\\n // Copy the returned data.\\n returndatacopy(0, 0, returndatasize())\\n\\n switch result\\n // delegatecall returns 0 on error.\\n case 0 {\\n revert(0, returndatasize())\\n }\\n default {\\n return(0, returndatasize())\\n }\\n }\\n }\\n\\n /**\\n * @dev This is a virtual function that should be overridden so it returns the address to which the fallback function\\n * and {_fallback} should delegate.\\n */\\n function _implementation() internal view virtual returns (address);\\n\\n /**\\n * @dev Delegates the current call to the address returned by `_implementation()`.\\n *\\n * This function does not return to its internal call site, it will return directly to the external caller.\\n */\\n function _fallback() internal virtual {\\n _beforeFallback();\\n _delegate(_implementation());\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\\n * function in the contract matches the call data.\\n */\\n fallback() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data\\n * is empty.\\n */\\n receive() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`\\n * call, or as part of the Solidity `fallback` or `receive` functions.\\n *\\n * If overridden should call `super._beforeFallback()`.\\n */\\n function _beforeFallback() internal virtual {}\\n}\\n\",\"keccak256\":\"0xc130fe33f1b2132158531a87734153293f6d07bc263ff4ac90e85da9c82c0e27\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeacon {\\n /**\\n * @dev Must return an address that can be used as a delegate call target.\\n *\\n * {BeaconProxy} will check that this address is a contract.\\n */\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/StorageSlot.sol)\\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```solidity\\n * contract ERC1967 {\\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n * function _getImplementation() internal view returns (address) {\\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n * }\\n *\\n * function _setImplementation(address newImplementation) internal {\\n * require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n * }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._\\n * _Available since v4.9 for `string`, `bytes`._\\n */\\nlibrary StorageSlot {\\n struct AddressSlot {\\n address value;\\n }\\n\\n struct BooleanSlot {\\n bool value;\\n }\\n\\n struct Bytes32Slot {\\n bytes32 value;\\n }\\n\\n struct Uint256Slot {\\n uint256 value;\\n }\\n\\n struct StringSlot {\\n string value;\\n }\\n\\n struct BytesSlot {\\n bytes value;\\n }\\n\\n /**\\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n */\\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n */\\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n */\\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n */\\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` with member `value` located at `slot`.\\n */\\n function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\\n */\\n function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` with member `value` located at `slot`.\\n */\\n function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\\n */\\n function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n}\\n\",\"keccak256\":\"0xf09e68aa0dc6722a25bc46490e8d48ed864466d17313b8a0b254c36b54e49899\",\"license\":\"MIT\"},\"src/utils/deployment/ProxyLib.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ERC1967Proxy} from \\\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol\\\";\\nimport {Clones} from \\\"@openzeppelin/contracts/proxy/Clones.sol\\\";\\nimport {Address} from \\\"@openzeppelin/contracts/utils/Address.sol\\\";\\n\\n/// @title ProxyLib\\n/// @author Aragon X - 2024\\n/// @notice A library containing methods for the deployment of proxies via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)) and minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)).\\n/// @custom:security-contact sirt@aragon.org\\nlibrary ProxyLib {\\n using Address for address;\\n using Clones for address;\\n\\n /// @notice Creates an [ERC-1967](https://eips.ethereum.org/EIPS/eip-1967) UUPS proxy contract pointing to a logic contract and allows to immediately initialize it.\\n /// @param _logic The logic contract the proxy is pointing to.\\n /// @param _initCalldata The initialization data for this contract.\\n /// @return uupsProxy The address of the UUPS proxy contract created.\\n /// @dev If `_initCalldata` is non-empty, it is used in a delegate call to the `_logic` contract. This will typically be an encoded function call initializing the storage of the proxy (see [OpenZeppelin ERC1967Proxy-constructor](https://docs.openzeppelin.com/contracts/4.x/api/proxy#ERC1967Proxy-constructor-address-bytes-)).\\n function deployUUPSProxy(\\n address _logic,\\n bytes memory _initCalldata\\n ) internal returns (address uupsProxy) {\\n uupsProxy = address(new ERC1967Proxy({_logic: _logic, _data: _initCalldata}));\\n }\\n\\n /// @notice Creates an [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167) minimal proxy contract, also known as clones, pointing to a logic contract and allows to immediately initialize it.\\n /// @param _logic The logic contract the proxy is pointing to.\\n /// @param _initCalldata The initialization data for this contract.\\n /// @return minimalProxy The address of the minimal proxy contract created.\\n /// @dev If `_initCalldata` is non-empty, it is used in a call to the clone contract. This will typically be an encoded function call initializing the storage of the contract.\\n function deployMinimalProxy(\\n address _logic,\\n bytes memory _initCalldata\\n ) internal returns (address minimalProxy) {\\n minimalProxy = _logic.clone();\\n if (_initCalldata.length > 0) {\\n minimalProxy.functionCall({data: _initCalldata});\\n }\\n }\\n}\\n\",\"keccak256\":\"0xef0d1790dfa026381c021daa2ec7267357497f58cd4a2fa5c64e72e0dea95acc\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"notice":"A library containing methods for the deployment of proxies via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)) and minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)).","version":1}}},"src/utils/versioning/IProtocolVersion.sol":{"IProtocolVersion":{"abi":[{"inputs":[],"name":"protocolVersion","outputs":[{"internalType":"uint8[3]","name":"_version","type":"uint8[3]"}],"stateMutability":"view","type":"function"}],"devdoc":{"author":"Aragon X - 2022-2023","custom:security-contact":"sirt@aragon.org","kind":"dev","methods":{"protocolVersion()":{"details":"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.","returns":{"_version":"Returns the semantic Aragon OSx protocol version number."}}},"title":"IProtocolVersion","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"protocolVersion()":"2ae9c600"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"protocolVersion\",\"outputs\":[{\"internalType\":\"uint8[3]\",\"name\":\"_version\",\"type\":\"uint8[3]\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Aragon X - 2022-2023\",\"custom:security-contact\":\"sirt@aragon.org\",\"kind\":\"dev\",\"methods\":{\"protocolVersion()\":{\"details\":\"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\",\"returns\":{\"_version\":\"Returns the semantic Aragon OSx protocol version number.\"}}},\"title\":\"IProtocolVersion\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"protocolVersion()\":{\"notice\":\"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\"}},\"notice\":\"An interface defining the semantic Aragon OSx protocol version number.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/utils/versioning/IProtocolVersion.sol\":\"IProtocolVersion\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"src/utils/versioning/IProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IProtocolVersion\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the semantic Aragon OSx protocol version number.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IProtocolVersion {\\n /// @notice Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\\n /// @return _version Returns the semantic Aragon OSx protocol version number.\\n /// @dev This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\\n function protocolVersion() external view returns (uint8[3] memory _version);\\n}\\n\",\"keccak256\":\"0x00a4da654d21dc1bdadbdc8bd54bb86c378c56f85e461ccc31303628ea621361\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{"protocolVersion()":{"notice":"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with."}},"notice":"An interface defining the semantic Aragon OSx protocol version number.","version":1}}},"src/utils/versioning/ProtocolVersion.sol":{"ProtocolVersion":{"abi":[{"inputs":[],"name":"protocolVersion","outputs":[{"internalType":"uint8[3]","name":"","type":"uint8[3]"}],"stateMutability":"pure","type":"function"}],"devdoc":{"author":"Aragon X - 2023","custom:security-contact":"sirt@aragon.org","details":"Do not add any new variables to this contract that would shift down storage in the inheritance chain.","kind":"dev","methods":{"protocolVersion()":{"details":"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.","returns":{"_0":"Returns the semantic Aragon OSx protocol version number."}}},"title":"ProtocolVersion","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"protocolVersion()":"2ae9c600"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"protocolVersion\",\"outputs\":[{\"internalType\":\"uint8[3]\",\"name\":\"\",\"type\":\"uint8[3]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Aragon X - 2023\",\"custom:security-contact\":\"sirt@aragon.org\",\"details\":\"Do not add any new variables to this contract that would shift down storage in the inheritance chain.\",\"kind\":\"dev\",\"methods\":{\"protocolVersion()\":{\"details\":\"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\",\"returns\":{\"_0\":\"Returns the semantic Aragon OSx protocol version number.\"}}},\"title\":\"ProtocolVersion\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"protocolVersion()\":{\"notice\":\"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\"}},\"notice\":\"An abstract, stateless, non-upgradeable contract providing the current Aragon OSx protocol version number.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/utils/versioning/ProtocolVersion.sol\":\"ProtocolVersion\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"src/utils/versioning/IProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IProtocolVersion\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the semantic Aragon OSx protocol version number.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IProtocolVersion {\\n /// @notice Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\\n /// @return _version Returns the semantic Aragon OSx protocol version number.\\n /// @dev This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\\n function protocolVersion() external view returns (uint8[3] memory _version);\\n}\\n\",\"keccak256\":\"0x00a4da654d21dc1bdadbdc8bd54bb86c378c56f85e461ccc31303628ea621361\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/ProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IProtocolVersion} from \\\"./IProtocolVersion.sol\\\";\\n\\n/// @title ProtocolVersion\\n/// @author Aragon X - 2023\\n/// @notice An abstract, stateless, non-upgradeable contract providing the current Aragon OSx protocol version number.\\n/// @dev Do not add any new variables to this contract that would shift down storage in the inheritance chain.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract ProtocolVersion is IProtocolVersion {\\n // IMPORTANT: Do not add any storage variable, see the above notice.\\n\\n /// @inheritdoc IProtocolVersion\\n function protocolVersion() public pure returns (uint8[3] memory) {\\n return [1, 4, 0];\\n }\\n}\\n\",\"keccak256\":\"0x3975c937be935f687c6b6b8f379071232681e98cf04b175d72781b819ea52bdb\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{"protocolVersion()":{"notice":"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with."}},"notice":"An abstract, stateless, non-upgradeable contract providing the current Aragon OSx protocol version number.","version":1}}},"src/utils/versioning/VersionComparisonLib.sol":{"VersionComparisonLib":{"abi":[],"devdoc":{"author":"Aragon X - 2023","custom:security-contact":"sirt@aragon.org","kind":"dev","methods":{},"title":"VersionComparisonLib","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"602d6037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a","opcodes":"PUSH1 0x2D PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"297:3556:91:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;297:3556:91;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"297:3556:91:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"9000","executionCost":"94","totalCost":"9094"},"internal":{"eq(uint8[3] memory,uint8[3] memory)":"infinite","gt(uint8[3] memory,uint8[3] memory)":"infinite","gte(uint8[3] memory,uint8[3] memory)":"infinite","lt(uint8[3] memory,uint8[3] memory)":"infinite","lte(uint8[3] memory,uint8[3] memory)":"infinite","neq(uint8[3] memory,uint8[3] memory)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"author\":\"Aragon X - 2023\",\"custom:security-contact\":\"sirt@aragon.org\",\"kind\":\"dev\",\"methods\":{},\"title\":\"VersionComparisonLib\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"A library containing methods for [semantic version number](https://semver.org/spec/v2.0.0.html) comparison.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/utils/versioning/VersionComparisonLib.sol\":\"VersionComparisonLib\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"src/utils/versioning/VersionComparisonLib.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title VersionComparisonLib\\n/// @author Aragon X - 2023\\n/// @notice A library containing methods for [semantic version number](https://semver.org/spec/v2.0.0.html) comparison.\\n/// @custom:security-contact sirt@aragon.org\\nlibrary VersionComparisonLib {\\n /// @notice Equality comparator for two semantic version numbers.\\n /// @param lhs The left-hand side semantic version number.\\n /// @param rhs The right-hand side semantic version number.\\n /// @return Whether the two numbers are equal or not.\\n function eq(uint8[3] memory lhs, uint8[3] memory rhs) internal pure returns (bool) {\\n if (lhs[0] != rhs[0]) return false;\\n\\n if (lhs[1] != rhs[1]) return false;\\n\\n if (lhs[2] != rhs[2]) return false;\\n\\n return true;\\n }\\n\\n /// @notice Inequality comparator for two semantic version numbers.\\n /// @param lhs The left-hand side semantic version number.\\n /// @param rhs The right-hand side semantic version number.\\n /// @return Whether the two numbers are inequal or not.\\n function neq(uint8[3] memory lhs, uint8[3] memory rhs) internal pure returns (bool) {\\n if (lhs[0] != rhs[0]) return true;\\n\\n if (lhs[1] != rhs[1]) return true;\\n\\n if (lhs[2] != rhs[2]) return true;\\n\\n return false;\\n }\\n\\n /// @notice Less than comparator for two semantic version numbers.\\n /// @param lhs The left-hand side semantic version number.\\n /// @param rhs The right-hand side semantic version number.\\n /// @return Whether the first number is less than the second number or not.\\n function lt(uint8[3] memory lhs, uint8[3] memory rhs) internal pure returns (bool) {\\n if (lhs[0] < rhs[0]) return true;\\n if (lhs[0] > rhs[0]) return false;\\n\\n if (lhs[1] < rhs[1]) return true;\\n if (lhs[1] > rhs[1]) return false;\\n\\n if (lhs[2] < rhs[2]) return true;\\n\\n return false;\\n }\\n\\n /// @notice Less than or equal to comparator for two semantic version numbers.\\n /// @param lhs The left-hand side semantic version number.\\n /// @param rhs The right-hand side semantic version number.\\n /// @return Whether the first number is less than or equal to the second number or not.\\n function lte(uint8[3] memory lhs, uint8[3] memory rhs) internal pure returns (bool) {\\n if (lhs[0] < rhs[0]) return true;\\n if (lhs[0] > rhs[0]) return false;\\n\\n if (lhs[1] < rhs[1]) return true;\\n if (lhs[1] > rhs[1]) return false;\\n\\n if (lhs[2] <= rhs[2]) return true;\\n\\n return false;\\n }\\n\\n /// @notice Greater than comparator for two semantic version numbers.\\n /// @param lhs The left-hand side semantic version number.\\n /// @param rhs The right-hand side semantic version number.\\n /// @return Whether the first number is greater than the second number or not.\\n function gt(uint8[3] memory lhs, uint8[3] memory rhs) internal pure returns (bool) {\\n if (lhs[0] > rhs[0]) return true;\\n if (lhs[0] < rhs[0]) return false;\\n\\n if (lhs[1] > rhs[1]) return true;\\n if (lhs[1] < rhs[1]) return false;\\n\\n if (lhs[2] > rhs[2]) return true;\\n\\n return false;\\n }\\n\\n /// @notice Greater than or equal to comparator for two semantic version numbers.\\n /// @param lhs The left-hand side semantic version number.\\n /// @param rhs The right-hand side semantic version number.\\n /// @return Whether the first number is greater than or equal to the second number or not.\\n function gte(uint8[3] memory lhs, uint8[3] memory rhs) internal pure returns (bool) {\\n if (lhs[0] > rhs[0]) return true;\\n if (lhs[0] < rhs[0]) return false;\\n\\n if (lhs[1] > rhs[1]) return true;\\n if (lhs[1] < rhs[1]) return false;\\n\\n if (lhs[2] >= rhs[2]) return true;\\n\\n return false;\\n }\\n}\\n\",\"keccak256\":\"0x559ed1adc1f16900db347c5586369c8b39849b8e0bce851a2d9f73d19ec9252a\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"notice":"A library containing methods for [semantic version number](https://semver.org/spec/v2.0.0.html) comparison.","version":1}}}}}} \ No newline at end of file diff --git a/contracts/artifacts/build-info/9ac591806bb2e846e5a60f79d635058e.json b/contracts/artifacts/build-info/9ac591806bb2e846e5a60f79d635058e.json new file mode 100644 index 00000000..065716ef --- /dev/null +++ b/contracts/artifacts/build-info/9ac591806bb2e846e5a60f79d635058e.json @@ -0,0 +1 @@ +{"id":"9ac591806bb2e846e5a60f79d635058e","_format":"hh-sol-build-info-1","solcVersion":"0.8.17","solcLongVersion":"0.8.17+commit.8df45f5f","input":{"language":"Solidity","sources":{"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.5.0) (interfaces/draft-IERC1822.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\n * proxy whose upgrades are fully controlled by the current implementation.\n */\ninterface IERC1822ProxiableUpgradeable {\n /**\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\n * address.\n *\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\n * function revert if invoked through a proxy.\n */\n function proxiableUUID() external view returns (bytes32);\n}\n"},"@openzeppelin/contracts-upgradeable/interfaces/IERC1967Upgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (interfaces/IERC1967.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\n *\n * _Available since v4.8.3._\n */\ninterface IERC1967Upgradeable {\n /**\n * @dev Emitted when the implementation is upgraded.\n */\n event Upgraded(address indexed implementation);\n\n /**\n * @dev Emitted when the admin account has changed.\n */\n event AdminChanged(address previousAdmin, address newAdmin);\n\n /**\n * @dev Emitted when the beacon is changed.\n */\n event BeaconUpgraded(address indexed beacon);\n}\n"},"@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\n */\ninterface IBeaconUpgradeable {\n /**\n * @dev Must return an address that can be used as a delegate call target.\n *\n * {BeaconProxy} will check that this address is a contract.\n */\n function implementation() external view returns (address);\n}\n"},"@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/ERC1967/ERC1967Upgrade.sol)\n\npragma solidity ^0.8.2;\n\nimport \"../beacon/IBeaconUpgradeable.sol\";\nimport \"../../interfaces/IERC1967Upgradeable.sol\";\nimport \"../../interfaces/draft-IERC1822Upgradeable.sol\";\nimport \"../../utils/AddressUpgradeable.sol\";\nimport \"../../utils/StorageSlotUpgradeable.sol\";\nimport {Initializable} from \"../utils/Initializable.sol\";\n\n/**\n * @dev This abstract contract provides getters and event emitting update functions for\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\n *\n * _Available since v4.1._\n */\nabstract contract ERC1967UpgradeUpgradeable is Initializable, IERC1967Upgradeable {\n // This is the keccak-256 hash of \"eip1967.proxy.rollback\" subtracted by 1\n bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\n\n /**\n * @dev Storage slot with the address of the current implementation.\n * This is the keccak-256 hash of \"eip1967.proxy.implementation\" subtracted by 1, and is\n * validated in the constructor.\n */\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n\n function __ERC1967Upgrade_init() internal onlyInitializing {\n }\n\n function __ERC1967Upgrade_init_unchained() internal onlyInitializing {\n }\n /**\n * @dev Returns the current implementation address.\n */\n function _getImplementation() internal view returns (address) {\n return StorageSlotUpgradeable.getAddressSlot(_IMPLEMENTATION_SLOT).value;\n }\n\n /**\n * @dev Stores a new address in the EIP1967 implementation slot.\n */\n function _setImplementation(address newImplementation) private {\n require(AddressUpgradeable.isContract(newImplementation), \"ERC1967: new implementation is not a contract\");\n StorageSlotUpgradeable.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\n }\n\n /**\n * @dev Perform implementation upgrade\n *\n * Emits an {Upgraded} event.\n */\n function _upgradeTo(address newImplementation) internal {\n _setImplementation(newImplementation);\n emit Upgraded(newImplementation);\n }\n\n /**\n * @dev Perform implementation upgrade with additional setup call.\n *\n * Emits an {Upgraded} event.\n */\n function _upgradeToAndCall(address newImplementation, bytes memory data, bool forceCall) internal {\n _upgradeTo(newImplementation);\n if (data.length > 0 || forceCall) {\n AddressUpgradeable.functionDelegateCall(newImplementation, data);\n }\n }\n\n /**\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\n *\n * Emits an {Upgraded} event.\n */\n function _upgradeToAndCallUUPS(address newImplementation, bytes memory data, bool forceCall) internal {\n // Upgrades from old implementations will perform a rollback test. This test requires the new\n // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\n // this special case will break upgrade paths from old UUPS implementation to new ones.\n if (StorageSlotUpgradeable.getBooleanSlot(_ROLLBACK_SLOT).value) {\n _setImplementation(newImplementation);\n } else {\n try IERC1822ProxiableUpgradeable(newImplementation).proxiableUUID() returns (bytes32 slot) {\n require(slot == _IMPLEMENTATION_SLOT, \"ERC1967Upgrade: unsupported proxiableUUID\");\n } catch {\n revert(\"ERC1967Upgrade: new implementation is not UUPS\");\n }\n _upgradeToAndCall(newImplementation, data, forceCall);\n }\n }\n\n /**\n * @dev Storage slot with the admin of the contract.\n * This is the keccak-256 hash of \"eip1967.proxy.admin\" subtracted by 1, and is\n * validated in the constructor.\n */\n bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\n\n /**\n * @dev Returns the current admin.\n */\n function _getAdmin() internal view returns (address) {\n return StorageSlotUpgradeable.getAddressSlot(_ADMIN_SLOT).value;\n }\n\n /**\n * @dev Stores a new address in the EIP1967 admin slot.\n */\n function _setAdmin(address newAdmin) private {\n require(newAdmin != address(0), \"ERC1967: new admin is the zero address\");\n StorageSlotUpgradeable.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\n }\n\n /**\n * @dev Changes the admin of the proxy.\n *\n * Emits an {AdminChanged} event.\n */\n function _changeAdmin(address newAdmin) internal {\n emit AdminChanged(_getAdmin(), newAdmin);\n _setAdmin(newAdmin);\n }\n\n /**\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\n * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\n */\n bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\n\n /**\n * @dev Returns the current beacon.\n */\n function _getBeacon() internal view returns (address) {\n return StorageSlotUpgradeable.getAddressSlot(_BEACON_SLOT).value;\n }\n\n /**\n * @dev Stores a new beacon in the EIP1967 beacon slot.\n */\n function _setBeacon(address newBeacon) private {\n require(AddressUpgradeable.isContract(newBeacon), \"ERC1967: new beacon is not a contract\");\n require(\n AddressUpgradeable.isContract(IBeaconUpgradeable(newBeacon).implementation()),\n \"ERC1967: beacon implementation is not a contract\"\n );\n StorageSlotUpgradeable.getAddressSlot(_BEACON_SLOT).value = newBeacon;\n }\n\n /**\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\n *\n * Emits a {BeaconUpgraded} event.\n */\n function _upgradeBeaconToAndCall(address newBeacon, bytes memory data, bool forceCall) internal {\n _setBeacon(newBeacon);\n emit BeaconUpgraded(newBeacon);\n if (data.length > 0 || forceCall) {\n AddressUpgradeable.functionDelegateCall(IBeaconUpgradeable(newBeacon).implementation(), data);\n }\n }\n\n /**\n * @dev This empty reserved space is put in place to allow future versions to add new\n * variables without shifting down storage in the inheritance chain.\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\n */\n uint256[50] private __gap;\n}\n"},"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\n\npragma solidity ^0.8.2;\n\nimport \"../../utils/AddressUpgradeable.sol\";\n\n/**\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\n *\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\n * reused. This mechanism prevents re-execution of each \"step\" but allows the creation of new initialization steps in\n * case an upgrade adds a module that needs to be initialized.\n *\n * For example:\n *\n * [.hljs-theme-light.nopadding]\n * ```solidity\n * contract MyToken is ERC20Upgradeable {\n * function initialize() initializer public {\n * __ERC20_init(\"MyToken\", \"MTK\");\n * }\n * }\n *\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\n * function initializeV2() reinitializer(2) public {\n * __ERC20Permit_init(\"MyToken\");\n * }\n * }\n * ```\n *\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\n *\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\n *\n * [CAUTION]\n * ====\n * Avoid leaving a contract uninitialized.\n *\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\n *\n * [.hljs-theme-light.nopadding]\n * ```\n * /// @custom:oz-upgrades-unsafe-allow constructor\n * constructor() {\n * _disableInitializers();\n * }\n * ```\n * ====\n */\nabstract contract Initializable {\n /**\n * @dev Indicates that the contract has been initialized.\n * @custom:oz-retyped-from bool\n */\n uint8 private _initialized;\n\n /**\n * @dev Indicates that the contract is in the process of being initialized.\n */\n bool private _initializing;\n\n /**\n * @dev Triggered when the contract has been initialized or reinitialized.\n */\n event Initialized(uint8 version);\n\n /**\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\n * `onlyInitializing` functions can be used to initialize parent contracts.\n *\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\n * constructor.\n *\n * Emits an {Initialized} event.\n */\n modifier initializer() {\n bool isTopLevelCall = !_initializing;\n require(\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\n \"Initializable: contract is already initialized\"\n );\n _initialized = 1;\n if (isTopLevelCall) {\n _initializing = true;\n }\n _;\n if (isTopLevelCall) {\n _initializing = false;\n emit Initialized(1);\n }\n }\n\n /**\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\n * used to initialize parent contracts.\n *\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\n * are added through upgrades and that require initialization.\n *\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\n * cannot be nested. If one is invoked in the context of another, execution will revert.\n *\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\n * a contract, executing them in the right order is up to the developer or operator.\n *\n * WARNING: setting the version to 255 will prevent any future reinitialization.\n *\n * Emits an {Initialized} event.\n */\n modifier reinitializer(uint8 version) {\n require(!_initializing && _initialized < version, \"Initializable: contract is already initialized\");\n _initialized = version;\n _initializing = true;\n _;\n _initializing = false;\n emit Initialized(version);\n }\n\n /**\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\n */\n modifier onlyInitializing() {\n require(_initializing, \"Initializable: contract is not initializing\");\n _;\n }\n\n /**\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\n * through proxies.\n *\n * Emits an {Initialized} event the first time it is successfully executed.\n */\n function _disableInitializers() internal virtual {\n require(!_initializing, \"Initializable: contract is initializing\");\n if (_initialized != type(uint8).max) {\n _initialized = type(uint8).max;\n emit Initialized(type(uint8).max);\n }\n }\n\n /**\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\n */\n function _getInitializedVersion() internal view returns (uint8) {\n return _initialized;\n }\n\n /**\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\n */\n function _isInitializing() internal view returns (bool) {\n return _initializing;\n }\n}\n"},"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/UUPSUpgradeable.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../../interfaces/draft-IERC1822Upgradeable.sol\";\nimport \"../ERC1967/ERC1967UpgradeUpgradeable.sol\";\nimport {Initializable} from \"./Initializable.sol\";\n\n/**\n * @dev An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an\n * {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy.\n *\n * A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is\n * reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing\n * `UUPSUpgradeable` with a custom implementation of upgrades.\n *\n * The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism.\n *\n * _Available since v4.1._\n */\nabstract contract UUPSUpgradeable is Initializable, IERC1822ProxiableUpgradeable, ERC1967UpgradeUpgradeable {\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable state-variable-assignment\n address private immutable __self = address(this);\n\n /**\n * @dev Check that the execution is being performed through a delegatecall call and that the execution context is\n * a proxy contract with an implementation (as defined in ERC1967) pointing to self. This should only be the case\n * for UUPS and transparent proxies that are using the current contract as their implementation. Execution of a\n * function through ERC1167 minimal proxies (clones) would not normally pass this test, but is not guaranteed to\n * fail.\n */\n modifier onlyProxy() {\n require(address(this) != __self, \"Function must be called through delegatecall\");\n require(_getImplementation() == __self, \"Function must be called through active proxy\");\n _;\n }\n\n /**\n * @dev Check that the execution is not being performed through a delegate call. This allows a function to be\n * callable on the implementing contract but not through proxies.\n */\n modifier notDelegated() {\n require(address(this) == __self, \"UUPSUpgradeable: must not be called through delegatecall\");\n _;\n }\n\n function __UUPSUpgradeable_init() internal onlyInitializing {\n }\n\n function __UUPSUpgradeable_init_unchained() internal onlyInitializing {\n }\n /**\n * @dev Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the\n * implementation. It is used to validate the implementation's compatibility when performing an upgrade.\n *\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\n * function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\n */\n function proxiableUUID() external view virtual override notDelegated returns (bytes32) {\n return _IMPLEMENTATION_SLOT;\n }\n\n /**\n * @dev Upgrade the implementation of the proxy to `newImplementation`.\n *\n * Calls {_authorizeUpgrade}.\n *\n * Emits an {Upgraded} event.\n *\n * @custom:oz-upgrades-unsafe-allow-reachable delegatecall\n */\n function upgradeTo(address newImplementation) public virtual onlyProxy {\n _authorizeUpgrade(newImplementation);\n _upgradeToAndCallUUPS(newImplementation, new bytes(0), false);\n }\n\n /**\n * @dev Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call\n * encoded in `data`.\n *\n * Calls {_authorizeUpgrade}.\n *\n * Emits an {Upgraded} event.\n *\n * @custom:oz-upgrades-unsafe-allow-reachable delegatecall\n */\n function upgradeToAndCall(address newImplementation, bytes memory data) public payable virtual onlyProxy {\n _authorizeUpgrade(newImplementation);\n _upgradeToAndCallUUPS(newImplementation, data, true);\n }\n\n /**\n * @dev Function that should revert when `msg.sender` is not authorized to upgrade the contract. Called by\n * {upgradeTo} and {upgradeToAndCall}.\n *\n * Normally, this function will use an xref:access.adoc[access control] modifier such as {Ownable-onlyOwner}.\n *\n * ```solidity\n * function _authorizeUpgrade(address) internal override onlyOwner {}\n * ```\n */\n function _authorizeUpgrade(address newImplementation) internal virtual;\n\n /**\n * @dev This empty reserved space is put in place to allow future versions to add new\n * variables without shifting down storage in the inheritance chain.\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\n */\n uint256[50] private __gap;\n}\n"},"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\n\npragma solidity ^0.8.1;\n\n/**\n * @dev Collection of functions related to the address type\n */\nlibrary AddressUpgradeable {\n /**\n * @dev Returns true if `account` is a contract.\n *\n * [IMPORTANT]\n * ====\n * It is unsafe to assume that an address for which this function returns\n * false is an externally-owned account (EOA) and not a contract.\n *\n * Among others, `isContract` will return false for the following\n * types of addresses:\n *\n * - an externally-owned account\n * - a contract in construction\n * - an address where a contract will be created\n * - an address where a contract lived, but was destroyed\n *\n * Furthermore, `isContract` will also return true if the target contract within\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\n * which only has an effect at the end of a transaction.\n * ====\n *\n * [IMPORTANT]\n * ====\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\n *\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\n * constructor.\n * ====\n */\n function isContract(address account) internal view returns (bool) {\n // This method relies on extcodesize/address.code.length, which returns 0\n // for contracts in construction, since the code is only stored at the end\n // of the constructor execution.\n\n return account.code.length > 0;\n }\n\n /**\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n * `recipient`, forwarding all available gas and reverting on errors.\n *\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\n * imposed by `transfer`, making them unable to receive funds via\n * `transfer`. {sendValue} removes this limitation.\n *\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n *\n * IMPORTANT: because control is transferred to `recipient`, care must be\n * taken to not create reentrancy vulnerabilities. Consider using\n * {ReentrancyGuard} or the\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\n */\n function sendValue(address payable recipient, uint256 amount) internal {\n require(address(this).balance >= amount, \"Address: insufficient balance\");\n\n (bool success, ) = recipient.call{value: amount}(\"\");\n require(success, \"Address: unable to send value, recipient may have reverted\");\n }\n\n /**\n * @dev Performs a Solidity function call using a low level `call`. A\n * plain `call` is an unsafe replacement for a function call: use this\n * function instead.\n *\n * If `target` reverts with a revert reason, it is bubbled up by this\n * function (like regular Solidity function calls).\n *\n * Returns the raw returned data. To convert to the expected return value,\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n *\n * Requirements:\n *\n * - `target` must be a contract.\n * - calling `target` with `data` must not revert.\n *\n * _Available since v3.1._\n */\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\n return functionCallWithValue(target, data, 0, \"Address: low-level call failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n * `errorMessage` as a fallback revert reason when `target` reverts.\n *\n * _Available since v3.1._\n */\n function functionCall(\n address target,\n bytes memory data,\n string memory errorMessage\n ) internal returns (bytes memory) {\n return functionCallWithValue(target, data, 0, errorMessage);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but also transferring `value` wei to `target`.\n *\n * Requirements:\n *\n * - the calling contract must have an ETH balance of at least `value`.\n * - the called Solidity function must be `payable`.\n *\n * _Available since v3.1._\n */\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\n return functionCallWithValue(target, data, value, \"Address: low-level call with value failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n * with `errorMessage` as a fallback revert reason when `target` reverts.\n *\n * _Available since v3.1._\n */\n function functionCallWithValue(\n address target,\n bytes memory data,\n uint256 value,\n string memory errorMessage\n ) internal returns (bytes memory) {\n require(address(this).balance >= value, \"Address: insufficient balance for call\");\n (bool success, bytes memory returndata) = target.call{value: value}(data);\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but performing a static call.\n *\n * _Available since v3.3._\n */\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\n return functionStaticCall(target, data, \"Address: low-level static call failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n * but performing a static call.\n *\n * _Available since v3.3._\n */\n function functionStaticCall(\n address target,\n bytes memory data,\n string memory errorMessage\n ) internal view returns (bytes memory) {\n (bool success, bytes memory returndata) = target.staticcall(data);\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but performing a delegate call.\n *\n * _Available since v3.4._\n */\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\n return functionDelegateCall(target, data, \"Address: low-level delegate call failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n * but performing a delegate call.\n *\n * _Available since v3.4._\n */\n function functionDelegateCall(\n address target,\n bytes memory data,\n string memory errorMessage\n ) internal returns (bytes memory) {\n (bool success, bytes memory returndata) = target.delegatecall(data);\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\n }\n\n /**\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\n *\n * _Available since v4.8._\n */\n function verifyCallResultFromTarget(\n address target,\n bool success,\n bytes memory returndata,\n string memory errorMessage\n ) internal view returns (bytes memory) {\n if (success) {\n if (returndata.length == 0) {\n // only check isContract if the call was successful and the return data is empty\n // otherwise we already know that it was a contract\n require(isContract(target), \"Address: call to non-contract\");\n }\n return returndata;\n } else {\n _revert(returndata, errorMessage);\n }\n }\n\n /**\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\n * revert reason or using the provided one.\n *\n * _Available since v4.3._\n */\n function verifyCallResult(\n bool success,\n bytes memory returndata,\n string memory errorMessage\n ) internal pure returns (bytes memory) {\n if (success) {\n return returndata;\n } else {\n _revert(returndata, errorMessage);\n }\n }\n\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\n // Look for revert reason and bubble it up if present\n if (returndata.length > 0) {\n // The easiest way to bubble the revert reason is using memory via assembly\n /// @solidity memory-safe-assembly\n assembly {\n let returndata_size := mload(returndata)\n revert(add(32, returndata), returndata_size)\n }\n } else {\n revert(errorMessage);\n }\n }\n}\n"},"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\n\npragma solidity ^0.8.0;\nimport {Initializable} from \"../proxy/utils/Initializable.sol\";\n\n/**\n * @dev Provides information about the current execution context, including the\n * sender of the transaction and its data. While these are generally available\n * via msg.sender and msg.data, they should not be accessed in such a direct\n * manner, since when dealing with meta-transactions the account sending and\n * paying for execution may not be the actual sender (as far as an application\n * is concerned).\n *\n * This contract is only required for intermediate, library-like contracts.\n */\nabstract contract ContextUpgradeable is Initializable {\n function __Context_init() internal onlyInitializing {\n }\n\n function __Context_init_unchained() internal onlyInitializing {\n }\n function _msgSender() internal view virtual returns (address) {\n return msg.sender;\n }\n\n function _msgData() internal view virtual returns (bytes calldata) {\n return msg.data;\n }\n\n function _contextSuffixLength() internal view virtual returns (uint256) {\n return 0;\n }\n\n /**\n * @dev This empty reserved space is put in place to allow future versions to add new\n * variables without shifting down storage in the inheritance chain.\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\n */\n uint256[50] private __gap;\n}\n"},"@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/Counters.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @title Counters\n * @author Matt Condon (@shrugs)\n * @dev Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number\n * of elements in a mapping, issuing ERC721 ids, or counting request ids.\n *\n * Include with `using Counters for Counters.Counter;`\n */\nlibrary CountersUpgradeable {\n struct Counter {\n // This variable should never be directly accessed by users of the library: interactions must be restricted to\n // the library's function. As of Solidity v0.5.2, this cannot be enforced, though there is a proposal to add\n // this feature: see https://github.com/ethereum/solidity/issues/4637\n uint256 _value; // default: 0\n }\n\n function current(Counter storage counter) internal view returns (uint256) {\n return counter._value;\n }\n\n function increment(Counter storage counter) internal {\n unchecked {\n counter._value += 1;\n }\n }\n\n function decrement(Counter storage counter) internal {\n uint256 value = counter._value;\n require(value > 0, \"Counter: decrement overflow\");\n unchecked {\n counter._value = value - 1;\n }\n }\n\n function reset(Counter storage counter) internal {\n counter._value = 0;\n }\n}\n"},"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\n\npragma solidity ^0.8.0;\n\nimport \"./IERC165Upgradeable.sol\";\nimport {Initializable} from \"../../proxy/utils/Initializable.sol\";\n\n/**\n * @dev Implementation of the {IERC165} interface.\n *\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\n * for the additional interface id that will be supported. For example:\n *\n * ```solidity\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\n * }\n * ```\n *\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\n */\nabstract contract ERC165Upgradeable is Initializable, IERC165Upgradeable {\n function __ERC165_init() internal onlyInitializing {\n }\n\n function __ERC165_init_unchained() internal onlyInitializing {\n }\n /**\n * @dev See {IERC165-supportsInterface}.\n */\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n return interfaceId == type(IERC165Upgradeable).interfaceId;\n }\n\n /**\n * @dev This empty reserved space is put in place to allow future versions to add new\n * variables without shifting down storage in the inheritance chain.\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\n */\n uint256[50] private __gap;\n}\n"},"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Interface of the ERC165 standard, as defined in the\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\n *\n * Implementers can declare support of contract interfaces, which can then be\n * queried by others ({ERC165Checker}).\n *\n * For an implementation, see {ERC165}.\n */\ninterface IERC165Upgradeable {\n /**\n * @dev Returns true if this contract implements the interface defined by\n * `interfaceId`. See the corresponding\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\n * to learn more about how these ids are created.\n *\n * This function call must use less than 30 000 gas.\n */\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\n}\n"},"@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/StorageSlot.sol)\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Library for reading and writing primitive types to specific storage slots.\n *\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\n * This library helps with reading and writing to such slots without the need for inline assembly.\n *\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\n *\n * Example usage to set ERC1967 implementation slot:\n * ```solidity\n * contract ERC1967 {\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n *\n * function _getImplementation() internal view returns (address) {\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\n * }\n *\n * function _setImplementation(address newImplementation) internal {\n * require(Address.isContract(newImplementation), \"ERC1967: new implementation is not a contract\");\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\n * }\n * }\n * ```\n *\n * _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._\n * _Available since v4.9 for `string`, `bytes`._\n */\nlibrary StorageSlotUpgradeable {\n struct AddressSlot {\n address value;\n }\n\n struct BooleanSlot {\n bool value;\n }\n\n struct Bytes32Slot {\n bytes32 value;\n }\n\n struct Uint256Slot {\n uint256 value;\n }\n\n struct StringSlot {\n string value;\n }\n\n struct BytesSlot {\n bytes value;\n }\n\n /**\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\n */\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\n */\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\n */\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\n */\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `StringSlot` with member `value` located at `slot`.\n */\n function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\n */\n function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := store.slot\n }\n }\n\n /**\n * @dev Returns an `BytesSlot` with member `value` located at `slot`.\n */\n function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\n */\n function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := store.slot\n }\n }\n}\n"},"@openzeppelin/contracts/interfaces/draft-IERC1822.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.5.0) (interfaces/draft-IERC1822.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\n * proxy whose upgrades are fully controlled by the current implementation.\n */\ninterface IERC1822Proxiable {\n /**\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\n * address.\n *\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\n * function revert if invoked through a proxy.\n */\n function proxiableUUID() external view returns (bytes32);\n}\n"},"@openzeppelin/contracts/interfaces/IERC1967.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (interfaces/IERC1967.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\n *\n * _Available since v4.8.3._\n */\ninterface IERC1967 {\n /**\n * @dev Emitted when the implementation is upgraded.\n */\n event Upgraded(address indexed implementation);\n\n /**\n * @dev Emitted when the admin account has changed.\n */\n event AdminChanged(address previousAdmin, address newAdmin);\n\n /**\n * @dev Emitted when the beacon is changed.\n */\n event BeaconUpgraded(address indexed beacon);\n}\n"},"@openzeppelin/contracts/proxy/beacon/IBeacon.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\n */\ninterface IBeacon {\n /**\n * @dev Must return an address that can be used as a delegate call target.\n *\n * {BeaconProxy} will check that this address is a contract.\n */\n function implementation() external view returns (address);\n}\n"},"@openzeppelin/contracts/proxy/Clones.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/Clones.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev https://eips.ethereum.org/EIPS/eip-1167[EIP 1167] is a standard for\n * deploying minimal proxy contracts, also known as \"clones\".\n *\n * > To simply and cheaply clone contract functionality in an immutable way, this standard specifies\n * > a minimal bytecode implementation that delegates all calls to a known, fixed address.\n *\n * The library includes functions to deploy a proxy using either `create` (traditional deployment) or `create2`\n * (salted deterministic deployment). It also includes functions to predict the addresses of clones deployed using the\n * deterministic method.\n *\n * _Available since v3.4._\n */\nlibrary Clones {\n /**\n * @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`.\n *\n * This function uses the create opcode, which should never revert.\n */\n function clone(address implementation) internal returns (address instance) {\n /// @solidity memory-safe-assembly\n assembly {\n // Cleans the upper 96 bits of the `implementation` word, then packs the first 3 bytes\n // of the `implementation` address with the bytecode before the address.\n mstore(0x00, or(shr(0xe8, shl(0x60, implementation)), 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000))\n // Packs the remaining 17 bytes of `implementation` with the bytecode after the address.\n mstore(0x20, or(shl(0x78, implementation), 0x5af43d82803e903d91602b57fd5bf3))\n instance := create(0, 0x09, 0x37)\n }\n require(instance != address(0), \"ERC1167: create failed\");\n }\n\n /**\n * @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`.\n *\n * This function uses the create2 opcode and a `salt` to deterministically deploy\n * the clone. Using the same `implementation` and `salt` multiple time will revert, since\n * the clones cannot be deployed twice at the same address.\n */\n function cloneDeterministic(address implementation, bytes32 salt) internal returns (address instance) {\n /// @solidity memory-safe-assembly\n assembly {\n // Cleans the upper 96 bits of the `implementation` word, then packs the first 3 bytes\n // of the `implementation` address with the bytecode before the address.\n mstore(0x00, or(shr(0xe8, shl(0x60, implementation)), 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000))\n // Packs the remaining 17 bytes of `implementation` with the bytecode after the address.\n mstore(0x20, or(shl(0x78, implementation), 0x5af43d82803e903d91602b57fd5bf3))\n instance := create2(0, 0x09, 0x37, salt)\n }\n require(instance != address(0), \"ERC1167: create2 failed\");\n }\n\n /**\n * @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}.\n */\n function predictDeterministicAddress(\n address implementation,\n bytes32 salt,\n address deployer\n ) internal pure returns (address predicted) {\n /// @solidity memory-safe-assembly\n assembly {\n let ptr := mload(0x40)\n mstore(add(ptr, 0x38), deployer)\n mstore(add(ptr, 0x24), 0x5af43d82803e903d91602b57fd5bf3ff)\n mstore(add(ptr, 0x14), implementation)\n mstore(ptr, 0x3d602d80600a3d3981f3363d3d373d3d3d363d73)\n mstore(add(ptr, 0x58), salt)\n mstore(add(ptr, 0x78), keccak256(add(ptr, 0x0c), 0x37))\n predicted := keccak256(add(ptr, 0x43), 0x55)\n }\n }\n\n /**\n * @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}.\n */\n function predictDeterministicAddress(\n address implementation,\n bytes32 salt\n ) internal view returns (address predicted) {\n return predictDeterministicAddress(implementation, salt, address(this));\n }\n}\n"},"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.7.0) (proxy/ERC1967/ERC1967Proxy.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../Proxy.sol\";\nimport \"./ERC1967Upgrade.sol\";\n\n/**\n * @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an\n * implementation address that can be changed. This address is stored in storage in the location specified by\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the\n * implementation behind the proxy.\n */\ncontract ERC1967Proxy is Proxy, ERC1967Upgrade {\n /**\n * @dev Initializes the upgradeable proxy with an initial implementation specified by `_logic`.\n *\n * If `_data` is nonempty, it's used as data in a delegate call to `_logic`. This will typically be an encoded\n * function call, and allows initializing the storage of the proxy like a Solidity constructor.\n */\n constructor(address _logic, bytes memory _data) payable {\n _upgradeToAndCall(_logic, _data, false);\n }\n\n /**\n * @dev Returns the current implementation address.\n */\n function _implementation() internal view virtual override returns (address impl) {\n return ERC1967Upgrade._getImplementation();\n }\n}\n"},"@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/ERC1967/ERC1967Upgrade.sol)\n\npragma solidity ^0.8.2;\n\nimport \"../beacon/IBeacon.sol\";\nimport \"../../interfaces/IERC1967.sol\";\nimport \"../../interfaces/draft-IERC1822.sol\";\nimport \"../../utils/Address.sol\";\nimport \"../../utils/StorageSlot.sol\";\n\n/**\n * @dev This abstract contract provides getters and event emitting update functions for\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\n *\n * _Available since v4.1._\n */\nabstract contract ERC1967Upgrade is IERC1967 {\n // This is the keccak-256 hash of \"eip1967.proxy.rollback\" subtracted by 1\n bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\n\n /**\n * @dev Storage slot with the address of the current implementation.\n * This is the keccak-256 hash of \"eip1967.proxy.implementation\" subtracted by 1, and is\n * validated in the constructor.\n */\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n\n /**\n * @dev Returns the current implementation address.\n */\n function _getImplementation() internal view returns (address) {\n return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\n }\n\n /**\n * @dev Stores a new address in the EIP1967 implementation slot.\n */\n function _setImplementation(address newImplementation) private {\n require(Address.isContract(newImplementation), \"ERC1967: new implementation is not a contract\");\n StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\n }\n\n /**\n * @dev Perform implementation upgrade\n *\n * Emits an {Upgraded} event.\n */\n function _upgradeTo(address newImplementation) internal {\n _setImplementation(newImplementation);\n emit Upgraded(newImplementation);\n }\n\n /**\n * @dev Perform implementation upgrade with additional setup call.\n *\n * Emits an {Upgraded} event.\n */\n function _upgradeToAndCall(address newImplementation, bytes memory data, bool forceCall) internal {\n _upgradeTo(newImplementation);\n if (data.length > 0 || forceCall) {\n Address.functionDelegateCall(newImplementation, data);\n }\n }\n\n /**\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\n *\n * Emits an {Upgraded} event.\n */\n function _upgradeToAndCallUUPS(address newImplementation, bytes memory data, bool forceCall) internal {\n // Upgrades from old implementations will perform a rollback test. This test requires the new\n // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\n // this special case will break upgrade paths from old UUPS implementation to new ones.\n if (StorageSlot.getBooleanSlot(_ROLLBACK_SLOT).value) {\n _setImplementation(newImplementation);\n } else {\n try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\n require(slot == _IMPLEMENTATION_SLOT, \"ERC1967Upgrade: unsupported proxiableUUID\");\n } catch {\n revert(\"ERC1967Upgrade: new implementation is not UUPS\");\n }\n _upgradeToAndCall(newImplementation, data, forceCall);\n }\n }\n\n /**\n * @dev Storage slot with the admin of the contract.\n * This is the keccak-256 hash of \"eip1967.proxy.admin\" subtracted by 1, and is\n * validated in the constructor.\n */\n bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\n\n /**\n * @dev Returns the current admin.\n */\n function _getAdmin() internal view returns (address) {\n return StorageSlot.getAddressSlot(_ADMIN_SLOT).value;\n }\n\n /**\n * @dev Stores a new address in the EIP1967 admin slot.\n */\n function _setAdmin(address newAdmin) private {\n require(newAdmin != address(0), \"ERC1967: new admin is the zero address\");\n StorageSlot.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\n }\n\n /**\n * @dev Changes the admin of the proxy.\n *\n * Emits an {AdminChanged} event.\n */\n function _changeAdmin(address newAdmin) internal {\n emit AdminChanged(_getAdmin(), newAdmin);\n _setAdmin(newAdmin);\n }\n\n /**\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\n * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\n */\n bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\n\n /**\n * @dev Returns the current beacon.\n */\n function _getBeacon() internal view returns (address) {\n return StorageSlot.getAddressSlot(_BEACON_SLOT).value;\n }\n\n /**\n * @dev Stores a new beacon in the EIP1967 beacon slot.\n */\n function _setBeacon(address newBeacon) private {\n require(Address.isContract(newBeacon), \"ERC1967: new beacon is not a contract\");\n require(\n Address.isContract(IBeacon(newBeacon).implementation()),\n \"ERC1967: beacon implementation is not a contract\"\n );\n StorageSlot.getAddressSlot(_BEACON_SLOT).value = newBeacon;\n }\n\n /**\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\n *\n * Emits a {BeaconUpgraded} event.\n */\n function _upgradeBeaconToAndCall(address newBeacon, bytes memory data, bool forceCall) internal {\n _setBeacon(newBeacon);\n emit BeaconUpgraded(newBeacon);\n if (data.length > 0 || forceCall) {\n Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\n }\n }\n}\n"},"@openzeppelin/contracts/proxy/Proxy.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.6.0) (proxy/Proxy.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\n * be specified by overriding the virtual {_implementation} function.\n *\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\n * different contract through the {_delegate} function.\n *\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\n */\nabstract contract Proxy {\n /**\n * @dev Delegates the current call to `implementation`.\n *\n * This function does not return to its internal call site, it will return directly to the external caller.\n */\n function _delegate(address implementation) internal virtual {\n assembly {\n // Copy msg.data. We take full control of memory in this inline assembly\n // block because it will not return to Solidity code. We overwrite the\n // Solidity scratch pad at memory position 0.\n calldatacopy(0, 0, calldatasize())\n\n // Call the implementation.\n // out and outsize are 0 because we don't know the size yet.\n let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)\n\n // Copy the returned data.\n returndatacopy(0, 0, returndatasize())\n\n switch result\n // delegatecall returns 0 on error.\n case 0 {\n revert(0, returndatasize())\n }\n default {\n return(0, returndatasize())\n }\n }\n }\n\n /**\n * @dev This is a virtual function that should be overridden so it returns the address to which the fallback function\n * and {_fallback} should delegate.\n */\n function _implementation() internal view virtual returns (address);\n\n /**\n * @dev Delegates the current call to the address returned by `_implementation()`.\n *\n * This function does not return to its internal call site, it will return directly to the external caller.\n */\n function _fallback() internal virtual {\n _beforeFallback();\n _delegate(_implementation());\n }\n\n /**\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\n * function in the contract matches the call data.\n */\n fallback() external payable virtual {\n _fallback();\n }\n\n /**\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data\n * is empty.\n */\n receive() external payable virtual {\n _fallback();\n }\n\n /**\n * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`\n * call, or as part of the Solidity `fallback` or `receive` functions.\n *\n * If overridden should call `super._beforeFallback()`.\n */\n function _beforeFallback() internal virtual {}\n}\n"},"@openzeppelin/contracts/utils/Address.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\n\npragma solidity ^0.8.1;\n\n/**\n * @dev Collection of functions related to the address type\n */\nlibrary Address {\n /**\n * @dev Returns true if `account` is a contract.\n *\n * [IMPORTANT]\n * ====\n * It is unsafe to assume that an address for which this function returns\n * false is an externally-owned account (EOA) and not a contract.\n *\n * Among others, `isContract` will return false for the following\n * types of addresses:\n *\n * - an externally-owned account\n * - a contract in construction\n * - an address where a contract will be created\n * - an address where a contract lived, but was destroyed\n *\n * Furthermore, `isContract` will also return true if the target contract within\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\n * which only has an effect at the end of a transaction.\n * ====\n *\n * [IMPORTANT]\n * ====\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\n *\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\n * constructor.\n * ====\n */\n function isContract(address account) internal view returns (bool) {\n // This method relies on extcodesize/address.code.length, which returns 0\n // for contracts in construction, since the code is only stored at the end\n // of the constructor execution.\n\n return account.code.length > 0;\n }\n\n /**\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n * `recipient`, forwarding all available gas and reverting on errors.\n *\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\n * imposed by `transfer`, making them unable to receive funds via\n * `transfer`. {sendValue} removes this limitation.\n *\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n *\n * IMPORTANT: because control is transferred to `recipient`, care must be\n * taken to not create reentrancy vulnerabilities. Consider using\n * {ReentrancyGuard} or the\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\n */\n function sendValue(address payable recipient, uint256 amount) internal {\n require(address(this).balance >= amount, \"Address: insufficient balance\");\n\n (bool success, ) = recipient.call{value: amount}(\"\");\n require(success, \"Address: unable to send value, recipient may have reverted\");\n }\n\n /**\n * @dev Performs a Solidity function call using a low level `call`. A\n * plain `call` is an unsafe replacement for a function call: use this\n * function instead.\n *\n * If `target` reverts with a revert reason, it is bubbled up by this\n * function (like regular Solidity function calls).\n *\n * Returns the raw returned data. To convert to the expected return value,\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n *\n * Requirements:\n *\n * - `target` must be a contract.\n * - calling `target` with `data` must not revert.\n *\n * _Available since v3.1._\n */\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\n return functionCallWithValue(target, data, 0, \"Address: low-level call failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n * `errorMessage` as a fallback revert reason when `target` reverts.\n *\n * _Available since v3.1._\n */\n function functionCall(\n address target,\n bytes memory data,\n string memory errorMessage\n ) internal returns (bytes memory) {\n return functionCallWithValue(target, data, 0, errorMessage);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but also transferring `value` wei to `target`.\n *\n * Requirements:\n *\n * - the calling contract must have an ETH balance of at least `value`.\n * - the called Solidity function must be `payable`.\n *\n * _Available since v3.1._\n */\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\n return functionCallWithValue(target, data, value, \"Address: low-level call with value failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n * with `errorMessage` as a fallback revert reason when `target` reverts.\n *\n * _Available since v3.1._\n */\n function functionCallWithValue(\n address target,\n bytes memory data,\n uint256 value,\n string memory errorMessage\n ) internal returns (bytes memory) {\n require(address(this).balance >= value, \"Address: insufficient balance for call\");\n (bool success, bytes memory returndata) = target.call{value: value}(data);\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but performing a static call.\n *\n * _Available since v3.3._\n */\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\n return functionStaticCall(target, data, \"Address: low-level static call failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n * but performing a static call.\n *\n * _Available since v3.3._\n */\n function functionStaticCall(\n address target,\n bytes memory data,\n string memory errorMessage\n ) internal view returns (bytes memory) {\n (bool success, bytes memory returndata) = target.staticcall(data);\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but performing a delegate call.\n *\n * _Available since v3.4._\n */\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\n return functionDelegateCall(target, data, \"Address: low-level delegate call failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n * but performing a delegate call.\n *\n * _Available since v3.4._\n */\n function functionDelegateCall(\n address target,\n bytes memory data,\n string memory errorMessage\n ) internal returns (bytes memory) {\n (bool success, bytes memory returndata) = target.delegatecall(data);\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\n }\n\n /**\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\n *\n * _Available since v4.8._\n */\n function verifyCallResultFromTarget(\n address target,\n bool success,\n bytes memory returndata,\n string memory errorMessage\n ) internal view returns (bytes memory) {\n if (success) {\n if (returndata.length == 0) {\n // only check isContract if the call was successful and the return data is empty\n // otherwise we already know that it was a contract\n require(isContract(target), \"Address: call to non-contract\");\n }\n return returndata;\n } else {\n _revert(returndata, errorMessage);\n }\n }\n\n /**\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\n * revert reason or using the provided one.\n *\n * _Available since v4.3._\n */\n function verifyCallResult(\n bool success,\n bytes memory returndata,\n string memory errorMessage\n ) internal pure returns (bytes memory) {\n if (success) {\n return returndata;\n } else {\n _revert(returndata, errorMessage);\n }\n }\n\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\n // Look for revert reason and bubble it up if present\n if (returndata.length > 0) {\n // The easiest way to bubble the revert reason is using memory via assembly\n /// @solidity memory-safe-assembly\n assembly {\n let returndata_size := mload(returndata)\n revert(add(32, returndata), returndata_size)\n }\n } else {\n revert(errorMessage);\n }\n }\n}\n"},"@openzeppelin/contracts/utils/Context.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Provides information about the current execution context, including the\n * sender of the transaction and its data. While these are generally available\n * via msg.sender and msg.data, they should not be accessed in such a direct\n * manner, since when dealing with meta-transactions the account sending and\n * paying for execution may not be the actual sender (as far as an application\n * is concerned).\n *\n * This contract is only required for intermediate, library-like contracts.\n */\nabstract contract Context {\n function _msgSender() internal view virtual returns (address) {\n return msg.sender;\n }\n\n function _msgData() internal view virtual returns (bytes calldata) {\n return msg.data;\n }\n\n function _contextSuffixLength() internal view virtual returns (uint256) {\n return 0;\n }\n}\n"},"@openzeppelin/contracts/utils/Counters.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/Counters.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @title Counters\n * @author Matt Condon (@shrugs)\n * @dev Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number\n * of elements in a mapping, issuing ERC721 ids, or counting request ids.\n *\n * Include with `using Counters for Counters.Counter;`\n */\nlibrary Counters {\n struct Counter {\n // This variable should never be directly accessed by users of the library: interactions must be restricted to\n // the library's function. As of Solidity v0.5.2, this cannot be enforced, though there is a proposal to add\n // this feature: see https://github.com/ethereum/solidity/issues/4637\n uint256 _value; // default: 0\n }\n\n function current(Counter storage counter) internal view returns (uint256) {\n return counter._value;\n }\n\n function increment(Counter storage counter) internal {\n unchecked {\n counter._value += 1;\n }\n }\n\n function decrement(Counter storage counter) internal {\n uint256 value = counter._value;\n require(value > 0, \"Counter: decrement overflow\");\n unchecked {\n counter._value = value - 1;\n }\n }\n\n function reset(Counter storage counter) internal {\n counter._value = 0;\n }\n}\n"},"@openzeppelin/contracts/utils/introspection/ERC165.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\n\npragma solidity ^0.8.0;\n\nimport \"./IERC165.sol\";\n\n/**\n * @dev Implementation of the {IERC165} interface.\n *\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\n * for the additional interface id that will be supported. For example:\n *\n * ```solidity\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\n * }\n * ```\n *\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\n */\nabstract contract ERC165 is IERC165 {\n /**\n * @dev See {IERC165-supportsInterface}.\n */\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n return interfaceId == type(IERC165).interfaceId;\n }\n}\n"},"@openzeppelin/contracts/utils/introspection/IERC165.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Interface of the ERC165 standard, as defined in the\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\n *\n * Implementers can declare support of contract interfaces, which can then be\n * queried by others ({ERC165Checker}).\n *\n * For an implementation, see {ERC165}.\n */\ninterface IERC165 {\n /**\n * @dev Returns true if this contract implements the interface defined by\n * `interfaceId`. See the corresponding\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\n * to learn more about how these ids are created.\n *\n * This function call must use less than 30 000 gas.\n */\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\n}\n"},"@openzeppelin/contracts/utils/StorageSlot.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/StorageSlot.sol)\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Library for reading and writing primitive types to specific storage slots.\n *\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\n * This library helps with reading and writing to such slots without the need for inline assembly.\n *\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\n *\n * Example usage to set ERC1967 implementation slot:\n * ```solidity\n * contract ERC1967 {\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n *\n * function _getImplementation() internal view returns (address) {\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\n * }\n *\n * function _setImplementation(address newImplementation) internal {\n * require(Address.isContract(newImplementation), \"ERC1967: new implementation is not a contract\");\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\n * }\n * }\n * ```\n *\n * _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._\n * _Available since v4.9 for `string`, `bytes`._\n */\nlibrary StorageSlot {\n struct AddressSlot {\n address value;\n }\n\n struct BooleanSlot {\n bool value;\n }\n\n struct Bytes32Slot {\n bytes32 value;\n }\n\n struct Uint256Slot {\n uint256 value;\n }\n\n struct StringSlot {\n string value;\n }\n\n struct BytesSlot {\n bytes value;\n }\n\n /**\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\n */\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\n */\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\n */\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\n */\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `StringSlot` with member `value` located at `slot`.\n */\n function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\n */\n function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := store.slot\n }\n }\n\n /**\n * @dev Returns an `BytesSlot` with member `value` located at `slot`.\n */\n function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\n */\n function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := store.slot\n }\n }\n}\n"},"src/dao/IDAO.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\n/// @title IDAO\n/// @author Aragon X - 2022-2023\n/// @notice The interface required for DAOs within the Aragon App DAO framework.\n/// @custom:security-contact sirt@aragon.org\ninterface IDAO {\n /// @notice The action struct to be consumed by the DAO's `execute` function resulting in an external call.\n /// @param to The address to call.\n /// @param value The native token value to be sent with the call.\n /// @param data The bytes-encoded function selector and calldata for the call.\n struct Action {\n address to;\n uint256 value;\n bytes data;\n }\n\n /// @notice Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\n /// @param _where The address of the contract.\n /// @param _who The address of a EOA or contract to give the permissions.\n /// @param _permissionId The permission identifier.\n /// @param _data The optional data passed to the `PermissionCondition` registered.\n /// @return Returns true if the address has permission, false if not.\n function hasPermission(\n address _where,\n address _who,\n bytes32 _permissionId,\n bytes memory _data\n ) external view returns (bool);\n\n /// @notice Updates the DAO metadata (e.g., an IPFS hash).\n /// @param _metadata The IPFS hash of the new metadata object.\n function setMetadata(bytes calldata _metadata) external;\n\n /// @notice Emitted when the DAO metadata is updated.\n /// @param metadata The IPFS hash of the new metadata object.\n event MetadataSet(bytes metadata);\n\n /// @notice Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted.\n /// @param _callId The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce.\n /// @param _actions The array of actions.\n /// @param _allowFailureMap A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\n /// @return The array of results obtained from the executed actions in `bytes`.\n /// @return The resulting failure map containing the actions have actually failed.\n function execute(\n bytes32 _callId,\n Action[] memory _actions,\n uint256 _allowFailureMap\n ) external returns (bytes[] memory, uint256);\n\n /// @notice Emitted when a proposal is executed.\n /// @param actor The address of the caller.\n /// @param callId The ID of the call.\n /// @param actions The array of actions executed.\n /// @param allowFailureMap The allow failure map encoding which actions are allowed to fail.\n /// @param failureMap The failure map encoding which actions have failed.\n /// @param execResults The array with the results of the executed actions.\n /// @dev The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce.\n event Executed(\n address indexed actor,\n bytes32 callId,\n Action[] actions,\n uint256 allowFailureMap,\n uint256 failureMap,\n bytes[] execResults\n );\n\n /// @notice Emitted when a standard callback is registered.\n /// @param interfaceId The ID of the interface.\n /// @param callbackSelector The selector of the callback function.\n /// @param magicNumber The magic number to be registered for the callback function selector.\n event StandardCallbackRegistered(\n bytes4 interfaceId,\n bytes4 callbackSelector,\n bytes4 magicNumber\n );\n\n /// @notice Deposits (native) tokens to the DAO contract with a reference string.\n /// @param _token The address of the token or address(0) in case of the native token.\n /// @param _amount The amount of tokens to deposit.\n /// @param _reference The reference describing the deposit reason.\n function deposit(address _token, uint256 _amount, string calldata _reference) external payable;\n\n /// @notice Emitted when a token deposit has been made to the DAO.\n /// @param sender The address of the sender.\n /// @param token The address of the deposited token.\n /// @param amount The amount of tokens deposited.\n /// @param _reference The reference describing the deposit reason.\n event Deposited(\n address indexed sender,\n address indexed token,\n uint256 amount,\n string _reference\n );\n\n /// @notice Emitted when a native token deposit has been made to the DAO.\n /// @dev This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).\n /// @param sender The address of the sender.\n /// @param amount The amount of native tokens deposited.\n event NativeTokenDeposited(address sender, uint256 amount);\n\n /// @notice Setter for the trusted forwarder verifying the meta transaction.\n /// @param _trustedForwarder The trusted forwarder address.\n function setTrustedForwarder(address _trustedForwarder) external;\n\n /// @notice Getter for the trusted forwarder verifying the meta transaction.\n /// @return The trusted forwarder address.\n function getTrustedForwarder() external view returns (address);\n\n /// @notice Emitted when a new TrustedForwarder is set on the DAO.\n /// @param forwarder the new forwarder address.\n event TrustedForwarderSet(address forwarder);\n\n /// @notice Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\n /// @param _hash The hash of the data to be signed.\n /// @param _signature The signature byte array associated with `_hash`.\n /// @return Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not.\n function isValidSignature(bytes32 _hash, bytes memory _signature) external returns (bytes4);\n\n /// @notice Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\n /// @param _interfaceId The ID of the interface.\n /// @param _callbackSelector The selector of the callback function.\n /// @param _magicNumber The magic number to be registered for the function signature.\n function registerStandardCallback(\n bytes4 _interfaceId,\n bytes4 _callbackSelector,\n bytes4 _magicNumber\n ) external;\n\n /// @notice Removed function being left here to not corrupt the IDAO interface ID. Any call will revert.\n /// @dev Introduced in v1.0.0. Removed in v1.4.0.\n function setSignatureValidator(address) external;\n}\n"},"src/mocks/plugin/PluginCloneableMock.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\n/* solhint-disable one-contract-per-file */\npragma solidity ^0.8.8;\n\nimport {PluginCloneable} from \"../../plugin/PluginCloneable.sol\";\nimport {IDAO} from \"../../dao/IDAO.sol\";\n\n/// @notice A mock cloneable plugin to be deployed via the minimal proxy pattern.\n/// v1.1 (Release 1, Build 1)\n/// @dev DO NOT USE IN PRODUCTION!\ncontract PluginCloneableMockBuild1 is PluginCloneable {\n uint256 public state1;\n\n function initialize(IDAO _dao) external initializer {\n __PluginCloneable_init(_dao);\n state1 = 1;\n }\n}\n\n/// @notice A mock cloneable plugin to be deployed via the minimal proxy pattern.\n/// v1.1 (Release 1, Build 2)\n/// @dev DO NOT USE IN PRODUCTION!\ncontract PluginCloneableMockBuild2 is PluginCloneable {\n uint256 public state1;\n uint256 public state2;\n\n function initialize(IDAO _dao) external initializer {\n __PluginCloneable_init(_dao);\n state1 = 1;\n state2 = 2;\n }\n}\n\n/// @notice A mock cloneable plugin missing an initializer function.\n/// @dev DO NOT USE IN PRODUCTION!\ncontract PluginCloneableMockBad is PluginCloneable {\n uint256 public state1;\n\n function notAnInitializer(IDAO _dao) external {\n __PluginCloneable_init(_dao);\n state1 = 1;\n }\n}\n"},"src/mocks/plugin/PluginCloneableSetupMock.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\n/* solhint-disable one-contract-per-file */\npragma solidity ^0.8.8;\n\nimport {PermissionLib} from \"../../permission/PermissionLib.sol\";\nimport {IPluginSetup} from \"../../plugin/setup/IPluginSetup.sol\";\nimport {PluginSetup} from \"../../plugin/setup/PluginSetup.sol\";\nimport {ProxyLib} from \"../../utils/deployment/ProxyLib.sol\";\nimport {IDAO} from \"../../dao/IDAO.sol\";\nimport {mockPermissions, mockHelpers} from \"./PluginSetupMockData.sol\";\nimport {PluginCloneableMockBuild1, PluginCloneableMockBuild2} from \"./PluginCloneableMock.sol\";\n\n/// @notice A mock plugin setup of a cloneable plugin to be deployed via the minimal proxy pattern.\n/// v1.1 (Release 1, Build 1)\n/// @dev DO NOT USE IN PRODUCTION!\ncontract PluginCloneableSetupMockBuild1 is PluginSetup {\n using ProxyLib for address;\n\n uint16 internal constant THIS_BUILD = 1;\n\n constructor() PluginSetup(address(new PluginCloneableMockBuild1())) {}\n\n /// @inheritdoc IPluginSetup\n function prepareInstallation(\n address _dao,\n bytes memory\n ) external returns (address plugin, PreparedSetupData memory preparedSetupData) {\n bytes memory initData = abi.encodeCall(PluginCloneableMockBuild1.initialize, (IDAO(_dao)));\n plugin = implementation().deployMinimalProxy(initData);\n preparedSetupData.helpers = mockHelpers(THIS_BUILD);\n preparedSetupData.permissions = mockPermissions(\n 0,\n THIS_BUILD,\n PermissionLib.Operation.Grant\n );\n }\n\n /// @inheritdoc IPluginSetup\n function prepareUninstallation(\n address _dao,\n SetupPayload calldata _payload\n ) external pure returns (PermissionLib.MultiTargetPermission[] memory permissions) {\n (_dao, _payload);\n permissions = mockPermissions(0, THIS_BUILD, PermissionLib.Operation.Revoke);\n }\n}\n\n/// @notice A mock plugin setup of a cloneable plugin to be deployed via the minimal proxy pattern.\n/// v1.2 (Release 1, Build 2)\n/// @dev DO NOT USE IN PRODUCTION!\ncontract PluginCloneableSetupMockBuild2 is PluginSetup {\n using ProxyLib for address;\n\n uint16 internal constant THIS_BUILD = 2;\n\n constructor() PluginSetup(address(new PluginCloneableMockBuild2())) {}\n\n /// @inheritdoc IPluginSetup\n function prepareInstallation(\n address _dao,\n bytes memory\n ) external returns (address plugin, PreparedSetupData memory preparedSetupData) {\n bytes memory initData = abi.encodeCall(PluginCloneableMockBuild2.initialize, (IDAO(_dao)));\n plugin = implementation().deployMinimalProxy(initData);\n preparedSetupData.helpers = mockHelpers(THIS_BUILD);\n preparedSetupData.permissions = mockPermissions(\n 0,\n THIS_BUILD,\n PermissionLib.Operation.Grant\n );\n }\n\n /// @inheritdoc IPluginSetup\n function prepareUninstallation(\n address _dao,\n SetupPayload calldata _payload\n ) external pure returns (PermissionLib.MultiTargetPermission[] memory permissions) {\n (_dao, _payload);\n permissions = mockPermissions(0, THIS_BUILD, PermissionLib.Operation.Revoke);\n }\n}\n"},"src/mocks/plugin/PluginMock.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\nimport {Plugin} from \"../../plugin/Plugin.sol\";\nimport {IDAO} from \"../../dao/IDAO.sol\";\n\n/// @notice A mock plugin to be deployed via the `new` keyword.\n/// v1.1 (Release 1, Build 1)\n/// @dev DO NOT USE IN PRODUCTION!\ncontract PluginMockBuild1 is Plugin {\n uint256 public state1;\n\n constructor(IDAO _dao) Plugin(_dao) {\n state1 = 1;\n }\n}\n"},"src/mocks/plugin/PluginSetupMock.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\n/* solhint-disable one-contract-per-file */\npragma solidity ^0.8.8;\n\nimport {PermissionLib} from \"../../permission/PermissionLib.sol\";\nimport {IPluginSetup} from \"../../plugin/setup/IPluginSetup.sol\";\nimport {PluginSetup} from \"../../plugin/setup/PluginSetup.sol\";\nimport {IDAO} from \"../../dao/IDAO.sol\";\nimport {mockPermissions, mockHelpers} from \"./PluginSetupMockData.sol\";\nimport {PluginMockBuild1} from \"./PluginMock.sol\";\n\n/// @notice A mock plugin setup of a plugin to be deployed via the `new` keyword.\n/// v1.1 (Release 1, Build 1)\n/// @dev DO NOT USE IN PRODUCTION!\ncontract PluginSetupMockBuild1 is PluginSetup {\n constructor() PluginSetup(address(new PluginMockBuild1(IDAO(address(0))))) {}\n\n /// @inheritdoc IPluginSetup\n function prepareInstallation(\n address _dao,\n bytes memory _data\n ) external returns (address plugin, PreparedSetupData memory preparedSetupData) {\n (_data);\n plugin = address(new PluginMockBuild1(IDAO(_dao)));\n preparedSetupData.helpers = mockHelpers(1);\n preparedSetupData.permissions = mockPermissions(0, 1, PermissionLib.Operation.Grant);\n }\n\n /// @inheritdoc IPluginSetup\n function prepareUninstallation(\n address _dao,\n SetupPayload calldata _payload\n ) external pure returns (PermissionLib.MultiTargetPermission[] memory permissions) {\n (_dao, _payload);\n permissions = mockPermissions(0, 1, PermissionLib.Operation.Revoke);\n }\n}\n"},"src/mocks/plugin/PluginSetupMockData.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\nimport {PermissionLib} from \"../../permission/PermissionLib.sol\";\n\naddress constant NO_CONDITION = address(0);\n\nerror ConflictingValues();\n\n/// @notice Creates a mock `MultiTargetPermission` array by converting a range of `uint160` values into `address` values.\n/// @param rangeStart The start of the range.\n/// @param rangeEnd The end of the range (that is not included).\n/// @param op The permission operation type.\n/// @return permissions The mock array of permissions.\n/// @dev DO NOT USE IN PRODUCTION!\nfunction mockPermissions(\n uint160 rangeStart,\n uint160 rangeEnd,\n PermissionLib.Operation op\n) pure returns (PermissionLib.MultiTargetPermission[] memory permissions) {\n if (rangeStart > rangeEnd) revert ConflictingValues();\n\n permissions = new PermissionLib.MultiTargetPermission[](rangeEnd - rangeStart);\n\n for (uint160 i = rangeStart; i < rangeEnd; i++) {\n permissions[i - rangeStart] = PermissionLib.MultiTargetPermission({\n operation: op,\n where: address(i),\n who: address(i),\n condition: PermissionLib.NO_CONDITION,\n permissionId: keccak256(\"MOCK_PERMISSION\")\n });\n }\n}\n\n/// @notice Creates a mock array of helper addresses of specified length by converting `uint160` values starting from 0 into `address` values.\n/// @param len The length of the helper array.\n/// @return helpers The mock array of helper addresses.\n/// @dev DO NOT USE IN PRODUCTION!\nfunction mockHelpers(uint160 len) pure returns (address[] memory helpers) {\n helpers = new address[](len);\n\n for (uint160 i = 0; i < len; i++) {\n helpers[i] = address(i);\n }\n}\n"},"src/mocks/plugin/PluginUUPSUpgradeableMock.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\n/* solhint-disable one-contract-per-file */\npragma solidity ^0.8.8;\n\nimport {PluginUUPSUpgradeable} from \"../../plugin/PluginUUPSUpgradeable.sol\";\nimport {IDAO} from \"../../dao/IDAO.sol\";\n\n/// @notice A mock upgradeable plugin to be deployed via the UUPS proxy pattern.\n/// v1.1 (Release 1, Build 1)\n/// @dev DO NOT USE IN PRODUCTION!\ncontract PluginUUPSUpgradeableMockBuild1 is PluginUUPSUpgradeable {\n uint256 public state1;\n\n function initialize(IDAO _dao) external initializer {\n __PluginUUPSUpgradeable_init(_dao);\n state1 = 1;\n }\n}\n\n/// @notice A mock upgradeable plugin to be deployed via the UUPS proxy pattern.\n/// v1.1 (Release 1, Build 2)\n/// @dev DO NOT USE IN PRODUCTION!\ncontract PluginUUPSUpgradeableMockBuild2 is PluginUUPSUpgradeable {\n uint256 public state1;\n uint256 public state2;\n\n function initialize(IDAO _dao) external reinitializer(2) {\n __PluginUUPSUpgradeable_init(_dao);\n state1 = 1;\n state2 = 2;\n }\n\n function initializeFrom(uint16 _previousBuild) external reinitializer(2) {\n if (_previousBuild < 2) {\n state2 = 2;\n }\n }\n}\n\n/// @notice A mock upgradeable plugin to be deployed via the UUPS proxy pattern.\n/// v1.1 (Release 1, Build 3)\n/// @dev DO NOT USE IN PRODUCTION!\ncontract PluginUUPSUpgradeableMockBuild3 is PluginUUPSUpgradeable {\n uint256 public state1;\n uint256 public state2;\n uint256 public state3;\n\n function initialize(IDAO _dao) external reinitializer(3) {\n __PluginUUPSUpgradeable_init(_dao);\n state1 = 1;\n state2 = 2;\n state3 = 3;\n }\n\n function initializeFrom(uint16 _previousBuild) external reinitializer(3) {\n if (_previousBuild < 2) {\n state2 = 2;\n }\n if (_previousBuild < 3) {\n state3 = 3;\n }\n }\n}\n\n/// @notice A mock upgradeable plugin missing an initializer function.\n/// @dev DO NOT USE IN PRODUCTION!\ncontract PluginUUPSUpgradeableMockBad is PluginUUPSUpgradeable {\n uint256 public state1;\n\n function notAnInitializer(IDAO _dao) external {\n __PluginUUPSUpgradeable_init(_dao);\n state1 = 1;\n }\n}\n"},"src/mocks/plugin/PluginUUPSUpgradeableSetupMock.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\n/* solhint-disable one-contract-per-file */\npragma solidity ^0.8.8;\n\nimport {PermissionLib} from \"../../permission/PermissionLib.sol\";\nimport {IPluginSetup} from \"../../plugin/setup/IPluginSetup.sol\";\nimport {PluginUpgradeableSetup} from \"../../plugin/setup/PluginUpgradeableSetup.sol\";\nimport {ProxyLib} from \"../../utils/deployment/ProxyLib.sol\";\nimport {IDAO} from \"../../dao/IDAO.sol\";\nimport {mockPermissions, mockHelpers} from \"./PluginSetupMockData.sol\";\nimport {PluginUUPSUpgradeableMockBuild1, PluginUUPSUpgradeableMockBuild2, PluginUUPSUpgradeableMockBuild3} from \"./PluginUUPSUpgradeableMock.sol\";\n\n/// @notice A mock plugin setup of an upgradeable plugin to be deployed via the UUPS pattern.\n/// v1.1 (Release 1, Build 1)\n/// @dev DO NOT USE IN PRODUCTION!\ncontract PluginUUPSUpgradeableSetupMockBuild1 is PluginUpgradeableSetup {\n using ProxyLib for address;\n\n uint16 internal constant THIS_BUILD = 1;\n\n constructor() PluginUpgradeableSetup(address(new PluginUUPSUpgradeableMockBuild1())) {}\n\n /// @inheritdoc IPluginSetup\n function prepareInstallation(\n address _dao,\n bytes memory\n ) public returns (address plugin, PreparedSetupData memory preparedSetupData) {\n bytes memory initData = abi.encodeCall(\n PluginUUPSUpgradeableMockBuild1.initialize,\n (IDAO(_dao))\n );\n plugin = implementation().deployUUPSProxy(initData);\n preparedSetupData.helpers = mockHelpers(1);\n preparedSetupData.permissions = mockPermissions(0, 1, PermissionLib.Operation.Grant);\n }\n\n /// @inheritdoc IPluginSetup\n /// @dev The default implementation for the initial build 1 that reverts because no earlier build exists.\n function prepareUpdate(\n address _dao,\n uint16 _fromBuild,\n SetupPayload calldata _payload\n ) external pure virtual returns (bytes memory, PreparedSetupData memory) {\n (_dao, _fromBuild, _payload);\n revert InvalidUpdatePath({fromBuild: 0, thisBuild: THIS_BUILD});\n }\n\n /// @inheritdoc IPluginSetup\n function prepareUninstallation(\n address _dao,\n SetupPayload calldata _payload\n ) external pure returns (PermissionLib.MultiTargetPermission[] memory permissions) {\n (_dao, _payload);\n permissions = mockPermissions(0, THIS_BUILD, PermissionLib.Operation.Revoke);\n }\n}\n\n/// @notice A mock plugin setup of an upgradeable plugin to be deployed via the UUPS pattern.\n/// v1.2 (Release 1, Build 2)\n/// @dev DO NOT USE IN PRODUCTION!\ncontract PluginUUPSUpgradeableSetupMockBuild2 is PluginUpgradeableSetup {\n using ProxyLib for address;\n\n uint16 internal constant THIS_BUILD = 2;\n\n constructor() PluginUpgradeableSetup(address(new PluginUUPSUpgradeableMockBuild2())) {}\n\n /// @inheritdoc IPluginSetup\n function prepareInstallation(\n address _dao,\n bytes memory\n ) external returns (address plugin, PreparedSetupData memory preparedSetupData) {\n bytes memory initData = abi.encodeCall(\n PluginUUPSUpgradeableMockBuild2.initialize,\n (IDAO(_dao))\n );\n plugin = implementation().deployUUPSProxy(initData);\n preparedSetupData.helpers = mockHelpers(THIS_BUILD);\n preparedSetupData.permissions = mockPermissions(\n 0,\n THIS_BUILD,\n PermissionLib.Operation.Grant\n );\n }\n\n /// @inheritdoc IPluginSetup\n function prepareUpdate(\n address _dao,\n uint16 _fromBuild,\n SetupPayload calldata _payload\n )\n external\n pure\n override\n returns (bytes memory initData, PreparedSetupData memory preparedSetupData)\n {\n (_dao, _payload);\n\n // Update from Build 1\n if (_fromBuild == 1) {\n preparedSetupData.helpers = mockHelpers(THIS_BUILD);\n initData = abi.encodeCall(PluginUUPSUpgradeableMockBuild2.initializeFrom, (_fromBuild));\n preparedSetupData.permissions = mockPermissions(\n _fromBuild,\n THIS_BUILD,\n PermissionLib.Operation.Grant\n );\n }\n }\n\n /// @inheritdoc IPluginSetup\n function prepareUninstallation(\n address _dao,\n SetupPayload calldata _payload\n ) external pure returns (PermissionLib.MultiTargetPermission[] memory permissions) {\n (_dao, _payload);\n permissions = mockPermissions(0, THIS_BUILD, PermissionLib.Operation.Revoke);\n }\n}\n\n/// @notice A mock plugin setup of an upgradeable plugin to be deployed via the UUPS pattern.\n/// v1.3 (Release 1, Build 3)\ncontract PluginUUPSUpgradeableSetupMockBuild3 is PluginUpgradeableSetup {\n using ProxyLib for address;\n\n uint16 internal constant THIS_BUILD = 3;\n\n constructor() PluginUpgradeableSetup(address(new PluginUUPSUpgradeableMockBuild3())) {}\n\n /// @inheritdoc IPluginSetup\n function prepareInstallation(\n address _dao,\n bytes memory\n ) external returns (address plugin, PreparedSetupData memory preparedSetupData) {\n bytes memory initData = abi.encodeCall(\n PluginUUPSUpgradeableMockBuild3.initialize,\n (IDAO(_dao))\n );\n plugin = implementation().deployUUPSProxy(initData);\n preparedSetupData.helpers = mockHelpers(THIS_BUILD);\n preparedSetupData.permissions = mockPermissions(\n 0,\n THIS_BUILD,\n PermissionLib.Operation.Grant\n );\n }\n\n /// @inheritdoc IPluginSetup\n function prepareUpdate(\n address _dao,\n uint16 _fromBuild,\n SetupPayload calldata _payload\n )\n external\n pure\n override\n returns (bytes memory initData, PreparedSetupData memory preparedSetupData)\n {\n (_dao, _payload);\n\n // Update from Build 1\n if (_fromBuild == 1) {\n preparedSetupData.helpers = mockHelpers(THIS_BUILD);\n initData = abi.encodeCall(PluginUUPSUpgradeableMockBuild3.initializeFrom, (_fromBuild));\n preparedSetupData.permissions = mockPermissions(\n _fromBuild,\n THIS_BUILD,\n PermissionLib.Operation.Grant\n );\n\n // If this update path should not be supported, you can revert with an error, e.g.,\n // revert InvalidUpdatePath({fromBuild: _fromBuild, thisBuild: THIS_BUILD});\n }\n\n // Update from Build 2\n if (_fromBuild == 2) {\n preparedSetupData.helpers = mockHelpers(THIS_BUILD);\n initData = abi.encodeCall(PluginUUPSUpgradeableMockBuild3.initializeFrom, (_fromBuild));\n preparedSetupData.permissions = mockPermissions(\n _fromBuild,\n THIS_BUILD,\n PermissionLib.Operation.Grant\n );\n }\n }\n\n /// @inheritdoc IPluginSetup\n function prepareUninstallation(\n address _dao,\n SetupPayload calldata _payload\n ) external pure returns (PermissionLib.MultiTargetPermission[] memory permissions) {\n (_dao, _payload);\n permissions = mockPermissions(0, THIS_BUILD, PermissionLib.Operation.Revoke);\n }\n}\n"},"src/permission/auth/auth.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\nimport {IDAO} from \"../../dao/IDAO.sol\";\n\n/// @notice Thrown if a call is unauthorized in the associated DAO.\n/// @param dao The associated DAO.\n/// @param where The context in which the authorization reverted.\n/// @param who The address (EOA or contract) missing the permission.\n/// @param permissionId The permission identifier.\nerror DaoUnauthorized(address dao, address where, address who, bytes32 permissionId);\n\n/// @notice A free function checking if a caller is granted permissions on a target contract via a permission identifier that redirects the approval to a `PermissionCondition` if this was specified in the setup.\n/// @param _where The address of the target contract for which `who` receives permission.\n/// @param _who The address (EOA or contract) owning the permission.\n/// @param _permissionId The permission identifier.\n/// @param _data The optional data passed to the `PermissionCondition` registered.\n/// @custom:security-contact sirt@aragon.org\nfunction _auth(\n IDAO _dao,\n address _where,\n address _who,\n bytes32 _permissionId,\n bytes calldata _data\n) view {\n if (!_dao.hasPermission(_where, _who, _permissionId, _data))\n revert DaoUnauthorized({\n dao: address(_dao),\n where: _where,\n who: _who,\n permissionId: _permissionId\n });\n}\n"},"src/permission/auth/DaoAuthorizable.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\nimport {Context} from \"@openzeppelin/contracts/utils/Context.sol\";\n\nimport {IDAO} from \"../../dao/IDAO.sol\";\nimport {_auth} from \"./auth.sol\";\n\n/// @title DaoAuthorizable\n/// @author Aragon X - 2022-2023\n/// @notice An abstract contract providing a meta-transaction compatible modifier for non-upgradeable contracts instantiated via the `new` keyword to authorize function calls through an associated DAO.\n/// @custom:security-contact sirt@aragon.org\nabstract contract DaoAuthorizable is Context {\n /// @notice The associated DAO managing the permissions of inheriting contracts.\n IDAO private immutable DAO;\n\n /// @notice Constructs the contract by setting the associated DAO.\n /// @param _dao The associated DAO address.\n constructor(IDAO _dao) {\n DAO = _dao;\n }\n\n /// @notice Returns the DAO contract.\n /// @return The DAO contract.\n function dao() public view returns (IDAO) {\n return DAO;\n }\n\n /// @notice A modifier to make functions on inheriting contracts authorized. Permissions to call the function are checked through the associated DAO's permission manager.\n /// @param _permissionId The permission identifier required to call the method this modifier is applied to.\n modifier auth(bytes32 _permissionId) {\n _auth(DAO, address(this), _msgSender(), _permissionId, _msgData());\n _;\n }\n}\n"},"src/permission/auth/DaoAuthorizableUpgradeable.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\nimport {ContextUpgradeable} from \"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\";\n\nimport {IDAO} from \"../../dao/IDAO.sol\";\nimport {_auth} from \"./auth.sol\";\n\n/// @title DaoAuthorizableUpgradeable\n/// @author Aragon X - 2022-2023\n/// @notice An abstract contract providing a meta-transaction compatible modifier for upgradeable or cloneable contracts to authorize function calls through an associated DAO.\n/// @dev Make sure to call `__DaoAuthorizableUpgradeable_init` during initialization of the inheriting contract.\n/// @custom:security-contact sirt@aragon.org\nabstract contract DaoAuthorizableUpgradeable is ContextUpgradeable {\n /// @notice The associated DAO managing the permissions of inheriting contracts.\n IDAO private dao_;\n\n /// @notice Initializes the contract by setting the associated DAO.\n /// @param _dao The associated DAO address.\n // solhint-disable-next-line func-name-mixedcase\n function __DaoAuthorizableUpgradeable_init(IDAO _dao) internal onlyInitializing {\n dao_ = _dao;\n }\n\n /// @notice Returns the DAO contract.\n /// @return The DAO contract.\n function dao() public view returns (IDAO) {\n return dao_;\n }\n\n /// @notice A modifier to make functions on inheriting contracts authorized. Permissions to call the function are checked through the associated DAO's permission manager.\n /// @param _permissionId The permission identifier required to call the method this modifier is applied to.\n modifier auth(bytes32 _permissionId) {\n _auth(dao_, address(this), _msgSender(), _permissionId, _msgData());\n _;\n }\n\n /// @notice This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain (see [OpenZeppelin's guide about storage gaps](https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps)).\n uint256[49] private __gap;\n}\n"},"src/permission/PermissionLib.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\n/// @title PermissionLib\n/// @author Aragon X - 2021-2023\n/// @notice A library containing objects for permission processing.\n/// @custom:security-contact sirt@aragon.org\nlibrary PermissionLib {\n /// @notice A constant expressing that no condition is applied to a permission.\n address public constant NO_CONDITION = address(0);\n\n /// @notice The types of permission operations available in the `PermissionManager`.\n /// @param Grant The grant operation setting a permission without a condition.\n /// @param Revoke The revoke operation removing a permission (that was granted with or without a condition).\n /// @param GrantWithCondition The grant operation setting a permission with a condition.\n enum Operation {\n Grant,\n Revoke,\n GrantWithCondition\n }\n\n /// @notice A struct containing the information for a permission to be applied on a single target contract without a condition.\n /// @param operation The permission operation type.\n /// @param who The address (EOA or contract) receiving the permission.\n /// @param permissionId The permission identifier.\n struct SingleTargetPermission {\n Operation operation;\n address who;\n bytes32 permissionId;\n }\n\n /// @notice A struct containing the information for a permission to be applied on multiple target contracts, optionally, with a condition.\n /// @param operation The permission operation type.\n /// @param where The address of the target contract for which `who` receives permission.\n /// @param who The address (EOA or contract) receiving the permission.\n /// @param condition The `PermissionCondition` that will be asked for authorization on calls connected to the specified permission identifier.\n /// @param permissionId The permission identifier.\n struct MultiTargetPermission {\n Operation operation;\n address where;\n address who;\n address condition;\n bytes32 permissionId;\n }\n}\n"},"src/plugin/extensions/proposal/IProposal.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\nimport {IDAO} from \"../../../dao/IDAO.sol\";\n\n/// @title IProposal\n/// @author Aragon X - 2022-2023\n/// @notice An interface to be implemented by DAO plugins that create and execute proposals.\n/// @custom:security-contact sirt@aragon.org\ninterface IProposal {\n /// @notice Emitted when a proposal is created.\n /// @param proposalId The ID of the proposal.\n /// @param creator The creator of the proposal.\n /// @param startDate The start date of the proposal in seconds.\n /// @param endDate The end date of the proposal in seconds.\n /// @param metadata The metadata of the proposal.\n /// @param actions The actions that will be executed if the proposal passes.\n /// @param allowFailureMap A bitmap allowing the proposal to succeed, even if individual actions might revert. If the bit at index `i` is 1, the proposal succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\n event ProposalCreated(\n uint256 indexed proposalId,\n address indexed creator,\n uint64 startDate,\n uint64 endDate,\n bytes metadata,\n IDAO.Action[] actions,\n uint256 allowFailureMap\n );\n\n /// @notice Emitted when a proposal is executed.\n /// @param proposalId The ID of the proposal.\n event ProposalExecuted(uint256 indexed proposalId);\n\n /// @notice Creates a new proposal.\n /// @param data The metadata of the proposal.\n /// @param actions The actions that will be executed after the proposal passes.\n /// @param startDate The start date of the proposal.\n /// @param endDate The end date of the proposal.\n /// @return proposalId The id of the proposal.\n function createProposal(\n bytes memory data,\n IDAO.Action[] memory actions,\n uint64 startDate,\n uint64 endDate\n ) external returns (uint256 proposalId);\n\n /// @notice Whether proposal can be executed or not.\n /// @param proposalId The id of the proposal.\n /// @return bool Returns if proposal can be executed or not.\n function canExecute(uint256 proposalId) external returns (bool);\n\n /// @notice Returns the proposal count determining the next proposal ID.\n /// @dev This function is deprecated TODO:\n /// @return The proposal count.\n function proposalCount() external view returns (uint256);\n}\n"},"src/plugin/extensions/proposal/Proposal.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\nimport {Counters} from \"@openzeppelin/contracts/utils/Counters.sol\";\nimport {ERC165} from \"@openzeppelin/contracts/utils/introspection/ERC165.sol\";\n\nimport {IDAO} from \"../../../dao/IDAO.sol\";\nimport {IProposal} from \"./IProposal.sol\";\n\n/// @title Proposal\n/// @author Aragon X - 2022-2023\n/// @notice An abstract contract containing the traits and internal functionality to create and execute proposals that can be inherited by non-upgradeable DAO plugins.\n/// @custom:security-contact sirt@aragon.org\nabstract contract Proposal is IProposal, ERC165 {\n using Counters for Counters.Counter;\n\n /// @notice The incremental ID for proposals and executions.\n Counters.Counter private proposalCounter;\n\n /// Shall we remove this ? Does anyone use this ? if we keep having this,\n // this will not return the correct value anyways anymore.\n /// @inheritdoc IProposal\n function proposalCount() public view override returns (uint256) {\n return proposalCounter.current();\n }\n\n /// @notice Checks if this or the parent contract supports an interface by its ID.\n /// @param _interfaceId The ID of the interface.\n /// @return Returns `true` if the interface is supported.\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\n // In addition to the current interfaceId, also support previous version of the interfaceId that did not\n // include the createProposal() function as standard\n return\n _interfaceId ==\n type(IProposal).interfaceId ^\n IProposal.createProposal.selector ^\n IProposal.canExecute.selector ||\n _interfaceId == type(IProposal).interfaceId ||\n super.supportsInterface(_interfaceId);\n }\n}\n"},"src/plugin/extensions/proposal/ProposalUpgradeable.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\nimport {CountersUpgradeable} from \"@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol\";\nimport {ERC165Upgradeable} from \"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\";\n\nimport {IDAO} from \"../../../dao/IDAO.sol\";\nimport {IProposal} from \"./IProposal.sol\";\n\n/// @title ProposalUpgradeable\n/// @author Aragon X - 2022-2023\n/// @notice An abstract contract containing the traits and internal functionality to create and execute proposals that can be inherited by upgradeable DAO plugins.\n/// @custom:security-contact sirt@aragon.org\nabstract contract ProposalUpgradeable is IProposal, ERC165Upgradeable {\n using CountersUpgradeable for CountersUpgradeable.Counter;\n\n /// @notice The incremental ID for proposals and executions.\n CountersUpgradeable.Counter private proposalCounter;\n\n /// @inheritdoc IProposal\n function proposalCount() public view override returns (uint256) {\n return proposalCounter.current();\n }\n\n /// @notice Checks if this or the parent contract supports an interface by its ID.\n /// @param _interfaceId The ID of the interface.\n /// @return Returns `true` if the interface is supported.\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\n // In addition to the current interfaceId, also support previous version of the interfaceId that did not\n // include the createProposal() function as standard\n return\n _interfaceId ==\n type(IProposal).interfaceId ^\n IProposal.createProposal.selector ^\n IProposal.canExecute.selector ||\n _interfaceId == type(IProposal).interfaceId ||\n super.supportsInterface(_interfaceId);\n }\n\n /// @notice This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain (see [OpenZeppelin's guide about storage gaps](https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps)).\n uint256[49] private __gap;\n}\n"},"src/plugin/IPlugin.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\n/// @title IPlugin\n/// @author Aragon X - 2022-2023\n/// @notice An interface defining the traits of a plugin.\n/// @custom:security-contact sirt@aragon.org\ninterface IPlugin {\n enum PluginType {\n UUPS,\n Cloneable,\n Constructable\n }\n\n /// @notice Returns the plugin's type\n function pluginType() external view returns (PluginType);\n}\n"},"src/plugin/Plugin.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\nimport {ERC165} from \"@openzeppelin/contracts/utils/introspection/ERC165.sol\";\n\nimport {IProtocolVersion} from \"../utils/versioning/IProtocolVersion.sol\";\nimport {ProtocolVersion} from \"../utils/versioning/ProtocolVersion.sol\";\nimport {DaoAuthorizable} from \"../permission/auth/DaoAuthorizable.sol\";\nimport {IDAO} from \"../dao/IDAO.sol\";\nimport {IPlugin} from \"./IPlugin.sol\";\n\n/// @title Plugin\n/// @author Aragon X - 2022-2023\n/// @notice An abstract, non-upgradeable contract to inherit from when creating a plugin being deployed via the `new` keyword.\n/// @custom:security-contact sirt@aragon.org\nabstract contract Plugin is IPlugin, ERC165, DaoAuthorizable, ProtocolVersion {\n address public target;\n\n /// @dev Emitted each time the Target is set.\n event TargetSet(address indexed previousTarget, address indexed newTarget);\n\n /// @notice Constructs the plugin by storing the associated DAO.\n /// @param _dao The DAO contract.\n constructor(IDAO _dao) DaoAuthorizable(_dao) {}\n\n /// @inheritdoc IPlugin\n function pluginType() public pure override returns (PluginType) {\n return PluginType.Constructable;\n }\n\n /// @dev Sets the target to a new target (`newTarget`).\n /// @notice Can only be called by the current owner. TODO\n function setTarget(address _target) public {\n address previousTarget = target;\n target = _target;\n emit TargetSet(previousTarget, _target);\n }\n\n /// @notice Checks if this or the parent contract supports an interface by its ID.\n /// @param _interfaceId The ID of the interface.\n /// @return Returns `true` if the interface is supported.\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\n return\n _interfaceId == type(IPlugin).interfaceId ||\n _interfaceId == type(IProtocolVersion).interfaceId ||\n super.supportsInterface(_interfaceId);\n }\n\n /// @notice Forwards the actions to the currently set `target` for the execution.\n /// @param _callId Identifier for this execution.\n /// @param _actions actions that will be eventually called.\n /// @param _allowFailureMap Bitmap-encoded number. TODO:\n /// @return execResults address of the implementation contract.\n /// @return failureMap address of the implementation contract.\n function _execute(\n bytes32 _callId,\n IDAO.Action[] calldata _actions,\n uint256 _allowFailureMap\n ) internal virtual returns (bytes[] memory execResults, uint256 failureMap) {\n (execResults, failureMap) = IDAO(target).execute(_callId, _actions, _allowFailureMap);\n }\n\n /// @notice Forwards the actions to the `target` for the execution.\n /// @param _target Forwards the actions to the specific target.\n /// @param _callId Identifier for this execution.\n /// @param _actions actions that will be eventually called.\n /// @param _allowFailureMap Bitmap-encoded number. TODO:\n /// @return execResults address of the implementation contract.\n /// @return failureMap address of the implementation contract.\n function _execute(\n address _target,\n bytes32 _callId,\n IDAO.Action[] calldata _actions,\n uint256 _allowFailureMap\n ) internal virtual returns (bytes[] memory execResults, uint256 failureMap) {\n (execResults, failureMap) = IDAO(_target).execute(_callId, _actions, _allowFailureMap);\n }\n}\n"},"src/plugin/PluginCloneable.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\nimport {ERC165Upgradeable} from \"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\";\n\nimport {IProtocolVersion} from \"../utils/versioning/IProtocolVersion.sol\";\nimport {ProtocolVersion} from \"../utils/versioning/ProtocolVersion.sol\";\nimport {DaoAuthorizableUpgradeable} from \"../permission/auth/DaoAuthorizableUpgradeable.sol\";\nimport {IDAO} from \"../dao/IDAO.sol\";\nimport {IPlugin} from \"./IPlugin.sol\";\n\n/// @title PluginCloneable\n/// @author Aragon X - 2022-2023\n/// @notice An abstract, non-upgradeable contract to inherit from when creating a plugin being deployed via the minimal clones pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)).\n/// @custom:security-contact sirt@aragon.org\nabstract contract PluginCloneable is\n IPlugin,\n ERC165Upgradeable,\n DaoAuthorizableUpgradeable,\n ProtocolVersion\n{\n address public target;\n\n /// @dev Emitted each time the Target is set.\n event TargetSet(address indexed previousTarget, address indexed newTarget);\n\n /// @notice Disables the initializers on the implementation contract to prevent it from being left uninitialized.\n /// @custom:oz-upgrades-unsafe-allow constructor\n constructor() {\n _disableInitializers();\n }\n\n /// @notice Initializes the plugin by storing the associated DAO.\n /// @param _dao The DAO contract.\n // solhint-disable-next-line func-name-mixedcase\n function __PluginCloneable_init(IDAO _dao) internal virtual onlyInitializing {\n __DaoAuthorizableUpgradeable_init(_dao);\n }\n\n /// @dev Sets the target to a new target (`newTarget`).\n /// @notice Can only be called by the current owner. TODO\n function setTarget(address _target) public {\n address previousTarget = target;\n target = _target;\n emit TargetSet(previousTarget, _target);\n }\n\n /// @inheritdoc IPlugin\n function pluginType() public pure override returns (PluginType) {\n return PluginType.Cloneable;\n }\n\n /// @notice Checks if this or the parent contract supports an interface by its ID.\n /// @param _interfaceId The ID of the interface.\n /// @return Returns `true` if the interface is supported.\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\n return\n _interfaceId == type(IPlugin).interfaceId ||\n _interfaceId == type(IProtocolVersion).interfaceId ||\n super.supportsInterface(_interfaceId);\n }\n\n /// @notice Forwards the actions to the currently set `target` for the execution.\n /// @param _callId Identifier for this execution.\n /// @param _actions actions that will be eventually called.\n /// @param _allowFailureMap Bitmap-encoded number. TODO:\n /// @return execResults address of the implementation contract.\n /// @return failureMap address of the implementation contract.\n function _execute(\n bytes32 _callId,\n IDAO.Action[] calldata _actions,\n uint256 _allowFailureMap\n ) internal virtual returns (bytes[] memory execResults, uint256 failureMap) {\n (execResults, failureMap) = IDAO(target).execute(_callId, _actions, _allowFailureMap);\n }\n\n /// @notice Forwards the actions to the `target` for the execution.\n /// @param _target Forwards the actions to the specific target.\n /// @param _callId Identifier for this execution.\n /// @param _actions actions that will be eventually called.\n /// @param _allowFailureMap Bitmap-encoded number. TODO:\n /// @return execResults address of the implementation contract.\n /// @return failureMap address of the implementation contract.\n function _execute(\n address _target,\n bytes32 _callId,\n IDAO.Action[] calldata _actions,\n uint256 _allowFailureMap\n ) internal virtual returns (bytes[] memory execResults, uint256 failureMap) {\n (execResults, failureMap) = IDAO(_target).execute(_callId, _actions, _allowFailureMap);\n }\n}\n"},"src/plugin/PluginUUPSUpgradeable.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\nimport {UUPSUpgradeable} from \"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\";\nimport {IERC1822ProxiableUpgradeable} from \"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol\";\nimport {ERC165Upgradeable} from \"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\";\n\nimport {IProtocolVersion} from \"../utils/versioning/IProtocolVersion.sol\";\nimport {ProtocolVersion} from \"../utils/versioning/ProtocolVersion.sol\";\nimport {DaoAuthorizableUpgradeable} from \"../permission/auth/DaoAuthorizableUpgradeable.sol\";\nimport {IDAO} from \"../dao/IDAO.sol\";\nimport {IPlugin} from \"./IPlugin.sol\";\n\n/// @title PluginUUPSUpgradeable\n/// @author Aragon X - 2022-2023\n/// @notice An abstract, upgradeable contract to inherit from when creating a plugin being deployed via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\n/// @custom:security-contact sirt@aragon.org\nabstract contract PluginUUPSUpgradeable is\n IPlugin,\n ERC165Upgradeable,\n UUPSUpgradeable,\n DaoAuthorizableUpgradeable,\n ProtocolVersion\n{\n // NOTE: When adding new state variables to the contract, the size of `_gap` has to be adapted below as well.\n address public target;\n\n /// @dev Emitted each time the Target is set.\n event TargetSet(address indexed previousTarget, address indexed newTarget);\n\n /// @notice Disables the initializers on the implementation contract to prevent it from being left uninitialized.\n /// @custom:oz-upgrades-unsafe-allow constructor\n constructor() {\n _disableInitializers();\n }\n\n /// @inheritdoc IPlugin\n function pluginType() public pure override returns (PluginType) {\n return PluginType.UUPS;\n }\n\n /// @notice The ID of the permission required to call the `_authorizeUpgrade` function.\n bytes32 public constant UPGRADE_PLUGIN_PERMISSION_ID = keccak256(\"UPGRADE_PLUGIN_PERMISSION\");\n\n /// @notice Initializes the plugin by storing the associated DAO.\n /// @param _dao The DAO contract.\n // solhint-disable-next-line func-name-mixedcase\n function __PluginUUPSUpgradeable_init(IDAO _dao) internal virtual onlyInitializing {\n __DaoAuthorizableUpgradeable_init(_dao);\n }\n\n /// @dev Sets the target to a new target (`newTarget`).\n /// @notice Can only be called by the current owner. TODO\n function setTarget(address _target) public {\n address previousTarget = target;\n target = _target;\n emit TargetSet(previousTarget, _target);\n }\n\n /// @notice Checks if an interface is supported by this or its parent contract.\n /// @param _interfaceId The ID of the interface.\n /// @return Returns `true` if the interface is supported.\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\n return\n _interfaceId == type(IPlugin).interfaceId ||\n _interfaceId == type(IProtocolVersion).interfaceId ||\n _interfaceId == type(IERC1822ProxiableUpgradeable).interfaceId ||\n super.supportsInterface(_interfaceId);\n }\n\n /// @notice Returns the address of the implementation contract in the [proxy storage slot](https://eips.ethereum.org/EIPS/eip-1967) slot the [UUPS proxy](https://eips.ethereum.org/EIPS/eip-1822) is pointing to.\n /// @return The address of the implementation contract.\n function implementation() public view returns (address) {\n return _getImplementation();\n }\n\n /// @notice Forwards the actions to the currently set `target` for the execution.\n /// @param _callId Identifier for this execution.\n /// @param _actions actions that will be eventually called.\n /// @param _allowFailureMap Bitmap-encoded number. TODO:\n /// @return execResults address of the implementation contract.\n /// @return failureMap address of the implementation contract.\n function _execute(\n bytes32 _callId,\n IDAO.Action[] calldata _actions,\n uint256 _allowFailureMap\n ) internal virtual returns (bytes[] memory execResults, uint256 failureMap) {\n (execResults, failureMap) = IDAO(target).execute(_callId, _actions, _allowFailureMap);\n }\n\n /// @notice Forwards the actions to the `target` for the execution.\n /// @param _target Forwards the actions to the specific target.\n /// @param _callId Identifier for this execution.\n /// @param _actions actions that will be eventually called.\n /// @param _allowFailureMap Bitmap-encoded number. TODO:\n /// @return execResults address of the implementation contract.\n /// @return failureMap address of the implementation contract.\n function _execute(\n address _target,\n bytes32 _callId,\n IDAO.Action[] calldata _actions,\n uint256 _allowFailureMap\n ) internal virtual returns (bytes[] memory execResults, uint256 failureMap) {\n (execResults, failureMap) = IDAO(_target).execute(_callId, _actions, _allowFailureMap);\n }\n\n /// @notice Internal method authorizing the upgrade of the contract via the [upgradeability mechanism for UUPS proxies](https://docs.openzeppelin.com/contracts/4.x/api/proxy#UUPSUpgradeable) (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\n /// @dev The caller must have the `UPGRADE_PLUGIN_PERMISSION_ID` permission.\n function _authorizeUpgrade(\n address\n )\n internal\n virtual\n override\n auth(UPGRADE_PLUGIN_PERMISSION_ID)\n // solhint-disable-next-line no-empty-blocks\n {\n\n }\n\n /// @notice This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain (see [OpenZeppelin's guide about storage gaps](https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps)).\n uint256[49] private __gap;\n}\n"},"src/plugin/setup/IPluginSetup.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\nimport {PermissionLib} from \"../../permission/PermissionLib.sol\";\n\n// solhint-disable-next-line no-unused-import\nimport {IDAO} from \"../../dao/IDAO.sol\";\n\n/// @title IPluginSetup\n/// @author Aragon X - 2022-2023\n/// @notice The interface required for a plugin setup contract to be consumed by the `PluginSetupProcessor` for plugin installations, updates, and uninstallations.\n/// @custom:security-contact sirt@aragon.org\ninterface IPluginSetup {\n /// @notice The data associated with a prepared setup.\n /// @param helpers The address array of helpers (contracts or EOAs) associated with this plugin version after the installation or update.\n /// @param permissions The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the installing or updating DAO.\n struct PreparedSetupData {\n address[] helpers;\n PermissionLib.MultiTargetPermission[] permissions;\n }\n\n /// @notice The payload for plugin updates and uninstallations containing the existing contracts as well as optional data to be consumed by the plugin setup.\n /// @param plugin The address of the `Plugin`.\n /// @param currentHelpers The address array of all current helpers (contracts or EOAs) associated with the plugin to update from.\n /// @param data The bytes-encoded data containing the input parameters for the preparation of update/uninstall as specified in the corresponding ABI on the version's metadata.\n struct SetupPayload {\n address plugin;\n address[] currentHelpers;\n bytes data;\n }\n\n /// @notice Prepares the installation of a plugin.\n /// @param _dao The address of the installing DAO.\n /// @param _data The bytes-encoded data containing the input parameters for the installation as specified in the plugin's build metadata JSON file.\n /// @return plugin The address of the `Plugin` contract being prepared for installation.\n /// @return preparedSetupData The deployed plugin's relevant data which consists of helpers and permissions.\n function prepareInstallation(\n address _dao,\n bytes calldata _data\n ) external returns (address plugin, PreparedSetupData memory preparedSetupData);\n\n /// @notice Prepares the update of a plugin.\n /// @param _dao The address of the updating DAO.\n /// @param _fromBuild The build number of the plugin to update from.\n /// @param _payload The relevant data necessary for the `prepareUpdate`. See above.\n /// @return initData The initialization data to be passed to upgradeable contracts when the update is applied in the `PluginSetupProcessor`.\n /// @return preparedSetupData The deployed plugin's relevant data which consists of helpers and permissions.\n function prepareUpdate(\n address _dao,\n uint16 _fromBuild,\n SetupPayload calldata _payload\n ) external returns (bytes memory initData, PreparedSetupData memory preparedSetupData);\n\n /// @notice Prepares the uninstallation of a plugin.\n /// @param _dao The address of the uninstalling DAO.\n /// @param _payload The relevant data necessary for the `prepareUninstallation`. See above.\n /// @return permissions The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the uninstalling DAO.\n function prepareUninstallation(\n address _dao,\n SetupPayload calldata _payload\n ) external returns (PermissionLib.MultiTargetPermission[] memory permissions);\n\n /// @notice Returns the plugin implementation address.\n /// @return The address of the plugin implementation contract.\n /// @dev The implementation can be instantiated via the `new` keyword, cloned via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)), or proxied via the UUPS proxy pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\n function implementation() external view returns (address);\n}\n"},"src/plugin/setup/PluginSetup.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\nimport {ERC165} from \"@openzeppelin/contracts/utils/introspection/ERC165.sol\";\n\nimport {IProtocolVersion} from \"../../utils/versioning/IProtocolVersion.sol\";\nimport {ProtocolVersion} from \"../../utils/versioning/ProtocolVersion.sol\";\nimport {IPluginSetup} from \"./IPluginSetup.sol\";\n\n/// @title PluginSetup\n/// @author Aragon X - 2022-2024\n/// @notice An abstract contract to inherit from to implement the plugin setup for non-upgradeable plugins, i.e,\n/// - `Plugin` being deployed via the `new` keyword\n/// - `PluginCloneable` being deployed via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)).\n/// @custom:security-contact sirt@aragon.org\nabstract contract PluginSetup is ERC165, IPluginSetup, ProtocolVersion {\n /// @notice The address of the plugin implementation contract for initial block explorer verification and, in the case of `PluginClonable` implementations, to create [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167) clones from.\n address internal immutable IMPLEMENTATION;\n\n /// @notice Thrown when attempting to prepare an update on a non-upgradeable plugin.\n error NonUpgradeablePlugin();\n\n /// @notice The contract constructor, that setting the plugin implementation contract.\n /// @param _implementation The address of the plugin implementation contract.\n constructor(address _implementation) {\n IMPLEMENTATION = _implementation;\n }\n\n /// @inheritdoc IPluginSetup\n /// @dev Since the underlying plugin is non-upgradeable, this non-virtual function must always revert.\n function prepareUpdate(\n address _dao,\n uint16 _fromBuild,\n SetupPayload calldata _payload\n ) external pure returns (bytes memory, PreparedSetupData memory) {\n (_dao, _fromBuild, _payload);\n revert NonUpgradeablePlugin();\n }\n\n /// @notice Checks if this or the parent contract supports an interface by its ID.\n /// @param _interfaceId The ID of the interface.\n /// @return Returns `true` if the interface is supported.\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\n return\n _interfaceId == type(IPluginSetup).interfaceId ||\n _interfaceId == type(IProtocolVersion).interfaceId ||\n super.supportsInterface(_interfaceId);\n }\n\n /// @inheritdoc IPluginSetup\n function implementation() public view returns (address) {\n return IMPLEMENTATION;\n }\n}\n"},"src/plugin/setup/PluginUpgradeableSetup.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\nimport {ERC165} from \"@openzeppelin/contracts/utils/introspection/ERC165.sol\";\n\nimport {IProtocolVersion} from \"../../utils/versioning/IProtocolVersion.sol\";\nimport {ProtocolVersion} from \"../../utils/versioning/ProtocolVersion.sol\";\nimport {IPluginSetup} from \"./IPluginSetup.sol\";\n\n/// @title PluginUpgradeableSetup\n/// @author Aragon X - 2022-2024\n/// @notice An abstract contract to inherit from to implement the plugin setup for upgradeable plugins, i.e, `PluginUUPSUpgradeable` being deployed via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822) and [ERC-1967](https://eips.ethereum.org/EIPS/eip-1967)).\n/// @custom:security-contact sirt@aragon.org\nabstract contract PluginUpgradeableSetup is ERC165, IPluginSetup, ProtocolVersion {\n /// @notice The address of the plugin implementation contract for initial block explorer verification\n /// and to create [ERC-1967](https://eips.ethereum.org/EIPS/eip-1967) UUPS proxies from.\n address internal immutable IMPLEMENTATION;\n\n /// @notice Thrown when an update path is not available, for example, if this is the initial build.\n /// @param fromBuild The build number to update from.\n /// @param thisBuild The build number of this setup to update to.\n error InvalidUpdatePath(uint16 fromBuild, uint16 thisBuild);\n\n /// @notice The contract constructor, that setting the plugin implementation contract.\n /// @param _implementation The address of the plugin implementation contract.\n constructor(address _implementation) {\n IMPLEMENTATION = _implementation;\n }\n\n /// @notice Checks if this or the parent contract supports an interface by its ID.\n /// @param _interfaceId The ID of the interface.\n /// @return Returns `true` if the interface is supported.\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\n return\n _interfaceId == type(IPluginSetup).interfaceId ||\n _interfaceId == type(IProtocolVersion).interfaceId ||\n super.supportsInterface(_interfaceId);\n }\n\n /// @inheritdoc IPluginSetup\n function implementation() public view returns (address) {\n return IMPLEMENTATION;\n }\n}\n"},"src/utils/deployment/ProxyLib.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\nimport {ERC1967Proxy} from \"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol\";\nimport {Clones} from \"@openzeppelin/contracts/proxy/Clones.sol\";\nimport {Address} from \"@openzeppelin/contracts/utils/Address.sol\";\n\n/// @title ProxyLib\n/// @author Aragon X - 2024\n/// @notice A library containing methods for the deployment of proxies via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)) and minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)).\n/// @custom:security-contact sirt@aragon.org\nlibrary ProxyLib {\n using Address for address;\n using Clones for address;\n\n /// @notice Creates an [ERC-1967](https://eips.ethereum.org/EIPS/eip-1967) UUPS proxy contract pointing to a logic contract and allows to immediately initialize it.\n /// @param _logic The logic contract the proxy is pointing to.\n /// @param _initCalldata The initialization data for this contract.\n /// @return uupsProxy The address of the UUPS proxy contract created.\n /// @dev If `_initCalldata` is non-empty, it is used in a delegate call to the `_logic` contract. This will typically be an encoded function call initializing the storage of the proxy (see [OpenZeppelin ERC1967Proxy-constructor](https://docs.openzeppelin.com/contracts/4.x/api/proxy#ERC1967Proxy-constructor-address-bytes-)).\n function deployUUPSProxy(\n address _logic,\n bytes memory _initCalldata\n ) internal returns (address uupsProxy) {\n uupsProxy = address(new ERC1967Proxy({_logic: _logic, _data: _initCalldata}));\n }\n\n /// @notice Creates an [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167) minimal proxy contract, also known as clones, pointing to a logic contract and allows to immediately initialize it.\n /// @param _logic The logic contract the proxy is pointing to.\n /// @param _initCalldata The initialization data for this contract.\n /// @return minimalProxy The address of the minimal proxy contract created.\n /// @dev If `_initCalldata` is non-empty, it is used in a call to the clone contract. This will typically be an encoded function call initializing the storage of the contract.\n function deployMinimalProxy(\n address _logic,\n bytes memory _initCalldata\n ) internal returns (address minimalProxy) {\n minimalProxy = _logic.clone();\n if (_initCalldata.length > 0) {\n minimalProxy.functionCall({data: _initCalldata});\n }\n }\n}\n"},"src/utils/versioning/IProtocolVersion.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\n/// @title IProtocolVersion\n/// @author Aragon X - 2022-2023\n/// @notice An interface defining the semantic Aragon OSx protocol version number.\n/// @custom:security-contact sirt@aragon.org\ninterface IProtocolVersion {\n /// @notice Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\n /// @return _version Returns the semantic Aragon OSx protocol version number.\n /// @dev This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\n function protocolVersion() external view returns (uint8[3] memory _version);\n}\n"},"src/utils/versioning/ProtocolVersion.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\nimport {IProtocolVersion} from \"./IProtocolVersion.sol\";\n\n/// @title ProtocolVersion\n/// @author Aragon X - 2023\n/// @notice An abstract, stateless, non-upgradeable contract providing the current Aragon OSx protocol version number.\n/// @dev Do not add any new variables to this contract that would shift down storage in the inheritance chain.\n/// @custom:security-contact sirt@aragon.org\nabstract contract ProtocolVersion is IProtocolVersion {\n // IMPORTANT: Do not add any storage variable, see the above notice.\n\n /// @inheritdoc IProtocolVersion\n function protocolVersion() public pure returns (uint8[3] memory) {\n return [1, 4, 0];\n }\n}\n"}},"settings":{"metadata":{"bytecodeHash":"none","useLiteralContent":true},"optimizer":{"enabled":true,"runs":800},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata","storageLayout","devdoc","userdoc","evm.gasEstimates"],"":["ast"]}}}},"output":{"sources":{"@openzeppelin/contracts-upgradeable/interfaces/IERC1967Upgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/interfaces/IERC1967Upgradeable.sol","exportedSymbols":{"IERC1967Upgradeable":[20]},"id":21,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"107:23:0"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC1967Upgradeable","contractDependencies":[],"contractKind":"interface","documentation":{"id":2,"nodeType":"StructuredDocumentation","src":"132:133:0","text":" @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\n _Available since v4.8.3._"},"fullyImplemented":true,"id":20,"linearizedBaseContracts":[20],"name":"IERC1967Upgradeable","nameLocation":"276:19:0","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":3,"nodeType":"StructuredDocumentation","src":"302:68:0","text":" @dev Emitted when the implementation is upgraded."},"eventSelector":"bc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","id":7,"name":"Upgraded","nameLocation":"381:8:0","nodeType":"EventDefinition","parameters":{"id":6,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5,"indexed":true,"mutability":"mutable","name":"implementation","nameLocation":"406:14:0","nodeType":"VariableDeclaration","scope":7,"src":"390:30:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4,"name":"address","nodeType":"ElementaryTypeName","src":"390:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"389:32:0"},"src":"375:47:0"},{"anonymous":false,"documentation":{"id":8,"nodeType":"StructuredDocumentation","src":"428:67:0","text":" @dev Emitted when the admin account has changed."},"eventSelector":"7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f","id":14,"name":"AdminChanged","nameLocation":"506:12:0","nodeType":"EventDefinition","parameters":{"id":13,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10,"indexed":false,"mutability":"mutable","name":"previousAdmin","nameLocation":"527:13:0","nodeType":"VariableDeclaration","scope":14,"src":"519:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9,"name":"address","nodeType":"ElementaryTypeName","src":"519:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12,"indexed":false,"mutability":"mutable","name":"newAdmin","nameLocation":"550:8:0","nodeType":"VariableDeclaration","scope":14,"src":"542:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11,"name":"address","nodeType":"ElementaryTypeName","src":"542:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"518:41:0"},"src":"500:60:0"},{"anonymous":false,"documentation":{"id":15,"nodeType":"StructuredDocumentation","src":"566:59:0","text":" @dev Emitted when the beacon is changed."},"eventSelector":"1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e","id":19,"name":"BeaconUpgraded","nameLocation":"636:14:0","nodeType":"EventDefinition","parameters":{"id":18,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17,"indexed":true,"mutability":"mutable","name":"beacon","nameLocation":"667:6:0","nodeType":"VariableDeclaration","scope":19,"src":"651:22:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16,"name":"address","nodeType":"ElementaryTypeName","src":"651:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"650:24:0"},"src":"630:45:0"}],"scope":21,"src":"266:411:0","usedErrors":[]}],"src":"107:571:0"},"id":0},"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol","exportedSymbols":{"IERC1822ProxiableUpgradeable":[30]},"id":31,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":22,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"113:23:1"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC1822ProxiableUpgradeable","contractDependencies":[],"contractKind":"interface","documentation":{"id":23,"nodeType":"StructuredDocumentation","src":"138:203:1","text":" @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\n proxy whose upgrades are fully controlled by the current implementation."},"fullyImplemented":false,"id":30,"linearizedBaseContracts":[30],"name":"IERC1822ProxiableUpgradeable","nameLocation":"352:28:1","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":24,"nodeType":"StructuredDocumentation","src":"387:438:1","text":" @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\n address.\n IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\n bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\n function revert if invoked through a proxy."},"functionSelector":"52d1902d","id":29,"implemented":false,"kind":"function","modifiers":[],"name":"proxiableUUID","nameLocation":"839:13:1","nodeType":"FunctionDefinition","parameters":{"id":25,"nodeType":"ParameterList","parameters":[],"src":"852:2:1"},"returnParameters":{"id":28,"nodeType":"ParameterList","parameters":[{"constant":false,"id":27,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":29,"src":"878:7:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":26,"name":"bytes32","nodeType":"ElementaryTypeName","src":"878:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"877:9:1"},"scope":30,"src":"830:57:1","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":31,"src":"342:547:1","usedErrors":[]}],"src":"113:777:1"},"id":1},"@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol","exportedSymbols":{"AddressUpgradeable":[1001],"ERC1967UpgradeUpgradeable":[355],"IBeaconUpgradeable":[365],"IERC1822ProxiableUpgradeable":[30],"IERC1967Upgradeable":[20],"Initializable":[534],"StorageSlotUpgradeable":[1236]},"id":356,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":32,"literals":["solidity","^","0.8",".2"],"nodeType":"PragmaDirective","src":"116:23:2"},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.sol","file":"../beacon/IBeaconUpgradeable.sol","id":33,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":356,"sourceUnit":366,"src":"141:42:2","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/interfaces/IERC1967Upgradeable.sol","file":"../../interfaces/IERC1967Upgradeable.sol","id":34,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":356,"sourceUnit":21,"src":"184:50:2","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol","file":"../../interfaces/draft-IERC1822Upgradeable.sol","id":35,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":356,"sourceUnit":31,"src":"235:56:2","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol","file":"../../utils/AddressUpgradeable.sol","id":36,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":356,"sourceUnit":1002,"src":"292:44:2","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol","file":"../../utils/StorageSlotUpgradeable.sol","id":37,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":356,"sourceUnit":1237,"src":"337:48:2","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","file":"../utils/Initializable.sol","id":39,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":356,"sourceUnit":535,"src":"386:57:2","symbolAliases":[{"foreign":{"id":38,"name":"Initializable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":534,"src":"394:13:2","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":41,"name":"Initializable","nameLocations":["677:13:2"],"nodeType":"IdentifierPath","referencedDeclaration":534,"src":"677:13:2"},"id":42,"nodeType":"InheritanceSpecifier","src":"677:13:2"},{"baseName":{"id":43,"name":"IERC1967Upgradeable","nameLocations":["692:19:2"],"nodeType":"IdentifierPath","referencedDeclaration":20,"src":"692:19:2"},"id":44,"nodeType":"InheritanceSpecifier","src":"692:19:2"}],"canonicalName":"ERC1967UpgradeUpgradeable","contractDependencies":[],"contractKind":"contract","documentation":{"id":40,"nodeType":"StructuredDocumentation","src":"445:184:2","text":" @dev This abstract contract provides getters and event emitting update functions for\n https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\n _Available since v4.1._"},"fullyImplemented":true,"id":355,"linearizedBaseContracts":[355,20,534],"name":"ERC1967UpgradeUpgradeable","nameLocation":"648:25:2","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":47,"mutability":"constant","name":"_ROLLBACK_SLOT","nameLocation":"822:14:2","nodeType":"VariableDeclaration","scope":355,"src":"797:108:2","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":45,"name":"bytes32","nodeType":"ElementaryTypeName","src":"797:7:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307834393130666466613136666564333236306564306537313437663763633664613131613630323038623562393430366431326136333536313466666439313433","id":46,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"839:66:2","typeDescriptions":{"typeIdentifier":"t_rational_33048860383849004559742813297059419343339852917517107368639918720169455489347_by_1","typeString":"int_const 3304...(69 digits omitted)...9347"},"value":"0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143"},"visibility":"private"},{"constant":true,"documentation":{"id":48,"nodeType":"StructuredDocumentation","src":"912:214:2","text":" @dev Storage slot with the address of the current implementation.\n This is the keccak-256 hash of \"eip1967.proxy.implementation\" subtracted by 1, and is\n validated in the constructor."},"id":51,"mutability":"constant","name":"_IMPLEMENTATION_SLOT","nameLocation":"1157:20:2","nodeType":"VariableDeclaration","scope":355,"src":"1131:115:2","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":49,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1131:7:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307833363038393461313362613161333231303636376338323834393264623938646361336532303736636333373335613932306133636135303564333832626263","id":50,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1180:66:2","typeDescriptions":{"typeIdentifier":"t_rational_24440054405305269366569402256811496959409073762505157381672968839269610695612_by_1","typeString":"int_const 2444...(69 digits omitted)...5612"},"value":"0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc"},"visibility":"internal"},{"body":{"id":56,"nodeType":"Block","src":"1312:7:2","statements":[]},"id":57,"implemented":true,"kind":"function","modifiers":[{"id":54,"kind":"modifierInvocation","modifierName":{"id":53,"name":"onlyInitializing","nameLocations":["1295:16:2"],"nodeType":"IdentifierPath","referencedDeclaration":479,"src":"1295:16:2"},"nodeType":"ModifierInvocation","src":"1295:16:2"}],"name":"__ERC1967Upgrade_init","nameLocation":"1262:21:2","nodeType":"FunctionDefinition","parameters":{"id":52,"nodeType":"ParameterList","parameters":[],"src":"1283:2:2"},"returnParameters":{"id":55,"nodeType":"ParameterList","parameters":[],"src":"1312:0:2"},"scope":355,"src":"1253:66:2","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":62,"nodeType":"Block","src":"1394:7:2","statements":[]},"id":63,"implemented":true,"kind":"function","modifiers":[{"id":60,"kind":"modifierInvocation","modifierName":{"id":59,"name":"onlyInitializing","nameLocations":["1377:16:2"],"nodeType":"IdentifierPath","referencedDeclaration":479,"src":"1377:16:2"},"nodeType":"ModifierInvocation","src":"1377:16:2"}],"name":"__ERC1967Upgrade_init_unchained","nameLocation":"1334:31:2","nodeType":"FunctionDefinition","parameters":{"id":58,"nodeType":"ParameterList","parameters":[],"src":"1365:2:2"},"returnParameters":{"id":61,"nodeType":"ParameterList","parameters":[],"src":"1394:0:2"},"scope":355,"src":"1325:76:2","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":75,"nodeType":"Block","src":"1540:89:2","statements":[{"expression":{"expression":{"arguments":[{"id":71,"name":"_IMPLEMENTATION_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51,"src":"1595:20:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":69,"name":"StorageSlotUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1236,"src":"1557:22:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlotUpgradeable_$1236_$","typeString":"type(library StorageSlotUpgradeable)"}},"id":70,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1580:14:2","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":1158,"src":"1557:37:2","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$1132_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlotUpgradeable.AddressSlot storage pointer)"}},"id":72,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1557:59:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$1132_storage_ptr","typeString":"struct StorageSlotUpgradeable.AddressSlot storage pointer"}},"id":73,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1617:5:2","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":1131,"src":"1557:65:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":68,"id":74,"nodeType":"Return","src":"1550:72:2"}]},"documentation":{"id":64,"nodeType":"StructuredDocumentation","src":"1406:67:2","text":" @dev Returns the current implementation address."},"id":76,"implemented":true,"kind":"function","modifiers":[],"name":"_getImplementation","nameLocation":"1487:18:2","nodeType":"FunctionDefinition","parameters":{"id":65,"nodeType":"ParameterList","parameters":[],"src":"1505:2:2"},"returnParameters":{"id":68,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":76,"src":"1531:7:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":66,"name":"address","nodeType":"ElementaryTypeName","src":"1531:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1530:9:2"},"scope":355,"src":"1478:151:2","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":99,"nodeType":"Block","src":"1783:218:2","statements":[{"expression":{"arguments":[{"arguments":[{"id":85,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79,"src":"1831:17:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":83,"name":"AddressUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1001,"src":"1801:18:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AddressUpgradeable_$1001_$","typeString":"type(library AddressUpgradeable)"}},"id":84,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1820:10:2","memberName":"isContract","nodeType":"MemberAccess","referencedDeclaration":689,"src":"1801:29:2","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":86,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1801:48:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"455243313936373a206e657720696d706c656d656e746174696f6e206973206e6f74206120636f6e7472616374","id":87,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1851:47:2","typeDescriptions":{"typeIdentifier":"t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65","typeString":"literal_string \"ERC1967: new implementation is not a contract\""},"value":"ERC1967: new implementation is not a contract"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65","typeString":"literal_string \"ERC1967: new implementation is not a contract\""}],"id":82,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"1793:7:2","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":88,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1793:106:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":89,"nodeType":"ExpressionStatement","src":"1793:106:2"},{"expression":{"id":97,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[{"id":93,"name":"_IMPLEMENTATION_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51,"src":"1947:20:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":90,"name":"StorageSlotUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1236,"src":"1909:22:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlotUpgradeable_$1236_$","typeString":"type(library StorageSlotUpgradeable)"}},"id":92,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1932:14:2","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":1158,"src":"1909:37:2","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$1132_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlotUpgradeable.AddressSlot storage pointer)"}},"id":94,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1909:59:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$1132_storage_ptr","typeString":"struct StorageSlotUpgradeable.AddressSlot storage pointer"}},"id":95,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1969:5:2","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":1131,"src":"1909:65:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":96,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79,"src":"1977:17:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1909:85:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":98,"nodeType":"ExpressionStatement","src":"1909:85:2"}]},"documentation":{"id":77,"nodeType":"StructuredDocumentation","src":"1635:80:2","text":" @dev Stores a new address in the EIP1967 implementation slot."},"id":100,"implemented":true,"kind":"function","modifiers":[],"name":"_setImplementation","nameLocation":"1729:18:2","nodeType":"FunctionDefinition","parameters":{"id":80,"nodeType":"ParameterList","parameters":[{"constant":false,"id":79,"mutability":"mutable","name":"newImplementation","nameLocation":"1756:17:2","nodeType":"VariableDeclaration","scope":100,"src":"1748:25:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":78,"name":"address","nodeType":"ElementaryTypeName","src":"1748:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1747:27:2"},"returnParameters":{"id":81,"nodeType":"ParameterList","parameters":[],"src":"1783:0:2"},"scope":355,"src":"1720:281:2","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":114,"nodeType":"Block","src":"2163:96:2","statements":[{"expression":{"arguments":[{"id":107,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":103,"src":"2192:17:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":106,"name":"_setImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":100,"src":"2173:18:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":108,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2173:37:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":109,"nodeType":"ExpressionStatement","src":"2173:37:2"},{"eventCall":{"arguments":[{"id":111,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":103,"src":"2234:17:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":110,"name":"Upgraded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7,"src":"2225:8:2","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":112,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2225:27:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":113,"nodeType":"EmitStatement","src":"2220:32:2"}]},"documentation":{"id":101,"nodeType":"StructuredDocumentation","src":"2007:95:2","text":" @dev Perform implementation upgrade\n Emits an {Upgraded} event."},"id":115,"implemented":true,"kind":"function","modifiers":[],"name":"_upgradeTo","nameLocation":"2116:10:2","nodeType":"FunctionDefinition","parameters":{"id":104,"nodeType":"ParameterList","parameters":[{"constant":false,"id":103,"mutability":"mutable","name":"newImplementation","nameLocation":"2135:17:2","nodeType":"VariableDeclaration","scope":115,"src":"2127:25:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":102,"name":"address","nodeType":"ElementaryTypeName","src":"2127:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2126:27:2"},"returnParameters":{"id":105,"nodeType":"ParameterList","parameters":[],"src":"2163:0:2"},"scope":355,"src":"2107:152:2","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":144,"nodeType":"Block","src":"2491:178:2","statements":[{"expression":{"arguments":[{"id":126,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":118,"src":"2512:17:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":125,"name":"_upgradeTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":115,"src":"2501:10:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":127,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2501:29:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":128,"nodeType":"ExpressionStatement","src":"2501:29:2"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":134,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":132,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":129,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120,"src":"2544:4:2","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":130,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2549:6:2","memberName":"length","nodeType":"MemberAccess","src":"2544:11:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":131,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2558:1:2","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2544:15:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"id":133,"name":"forceCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":122,"src":"2563:9:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2544:28:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":143,"nodeType":"IfStatement","src":"2540:123:2","trueBody":{"id":142,"nodeType":"Block","src":"2574:89:2","statements":[{"expression":{"arguments":[{"id":138,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":118,"src":"2628:17:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":139,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120,"src":"2647:4:2","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":135,"name":"AddressUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1001,"src":"2588:18:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AddressUpgradeable_$1001_$","typeString":"type(library AddressUpgradeable)"}},"id":137,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2607:20:2","memberName":"functionDelegateCall","nodeType":"MemberAccess","referencedDeclaration":888,"src":"2588:39:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory) returns (bytes memory)"}},"id":140,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2588:64:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":141,"nodeType":"ExpressionStatement","src":"2588:64:2"}]}}]},"documentation":{"id":116,"nodeType":"StructuredDocumentation","src":"2265:123:2","text":" @dev Perform implementation upgrade with additional setup call.\n Emits an {Upgraded} event."},"id":145,"implemented":true,"kind":"function","modifiers":[],"name":"_upgradeToAndCall","nameLocation":"2402:17:2","nodeType":"FunctionDefinition","parameters":{"id":123,"nodeType":"ParameterList","parameters":[{"constant":false,"id":118,"mutability":"mutable","name":"newImplementation","nameLocation":"2428:17:2","nodeType":"VariableDeclaration","scope":145,"src":"2420:25:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":117,"name":"address","nodeType":"ElementaryTypeName","src":"2420:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120,"mutability":"mutable","name":"data","nameLocation":"2460:4:2","nodeType":"VariableDeclaration","scope":145,"src":"2447:17:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":119,"name":"bytes","nodeType":"ElementaryTypeName","src":"2447:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":122,"mutability":"mutable","name":"forceCall","nameLocation":"2471:9:2","nodeType":"VariableDeclaration","scope":145,"src":"2466:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":121,"name":"bool","nodeType":"ElementaryTypeName","src":"2466:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2419:62:2"},"returnParameters":{"id":124,"nodeType":"ParameterList","parameters":[],"src":"2491:0:2"},"scope":355,"src":"2393:276:2","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":197,"nodeType":"Block","src":"2943:842:2","statements":[{"condition":{"expression":{"arguments":[{"id":157,"name":"_ROLLBACK_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47,"src":"3295:14:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":155,"name":"StorageSlotUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1236,"src":"3257:22:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlotUpgradeable_$1236_$","typeString":"type(library StorageSlotUpgradeable)"}},"id":156,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3280:14:2","memberName":"getBooleanSlot","nodeType":"MemberAccess","referencedDeclaration":1169,"src":"3257:37:2","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_BooleanSlot_$1135_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlotUpgradeable.BooleanSlot storage pointer)"}},"id":158,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3257:53:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_BooleanSlot_$1135_storage_ptr","typeString":"struct StorageSlotUpgradeable.BooleanSlot storage pointer"}},"id":159,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3311:5:2","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":1134,"src":"3257:59:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":195,"nodeType":"Block","src":"3386:393:2","statements":[{"clauses":[{"block":{"id":180,"nodeType":"Block","src":"3491:115:2","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":176,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":174,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":171,"src":"3517:4:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":175,"name":"_IMPLEMENTATION_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51,"src":"3525:20:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"3517:28:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"45524331393637557067726164653a20756e737570706f727465642070726f786961626c6555554944","id":177,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3547:43:2","typeDescriptions":{"typeIdentifier":"t_stringliteral_76b6b6debfc5febf101145a79ecf0b0d2e89e397dfdab2bca99888370411152c","typeString":"literal_string \"ERC1967Upgrade: unsupported proxiableUUID\""},"value":"ERC1967Upgrade: unsupported proxiableUUID"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_76b6b6debfc5febf101145a79ecf0b0d2e89e397dfdab2bca99888370411152c","typeString":"literal_string \"ERC1967Upgrade: unsupported proxiableUUID\""}],"id":173,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"3509:7:2","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":178,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3509:82:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":179,"nodeType":"ExpressionStatement","src":"3509:82:2"}]},"errorName":"","id":181,"nodeType":"TryCatchClause","parameters":{"id":172,"nodeType":"ParameterList","parameters":[{"constant":false,"id":171,"mutability":"mutable","name":"slot","nameLocation":"3485:4:2","nodeType":"VariableDeclaration","scope":181,"src":"3477:12:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":170,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3477:7:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3476:14:2"},"src":"3468:138:2"},{"block":{"id":186,"nodeType":"Block","src":"3613:89:2","statements":[{"expression":{"arguments":[{"hexValue":"45524331393637557067726164653a206e657720696d706c656d656e746174696f6e206973206e6f742055555053","id":183,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3638:48:2","typeDescriptions":{"typeIdentifier":"t_stringliteral_8e8e2fbcb586f700b5b14e2c4a650c8d83b9773c31c5fe8962070ea544e11f24","typeString":"literal_string \"ERC1967Upgrade: new implementation is not UUPS\""},"value":"ERC1967Upgrade: new implementation is not UUPS"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_8e8e2fbcb586f700b5b14e2c4a650c8d83b9773c31c5fe8962070ea544e11f24","typeString":"literal_string \"ERC1967Upgrade: new implementation is not UUPS\""}],"id":182,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[4294967277,4294967277],"referencedDeclaration":4294967277,"src":"3631:6:2","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":184,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3631:56:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":185,"nodeType":"ExpressionStatement","src":"3631:56:2"}]},"errorName":"","id":187,"nodeType":"TryCatchClause","src":"3607:95:2"}],"externalCall":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":166,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":148,"src":"3433:17:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":165,"name":"IERC1822ProxiableUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30,"src":"3404:28:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC1822ProxiableUpgradeable_$30_$","typeString":"type(contract IERC1822ProxiableUpgradeable)"}},"id":167,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3404:47:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC1822ProxiableUpgradeable_$30","typeString":"contract IERC1822ProxiableUpgradeable"}},"id":168,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3452:13:2","memberName":"proxiableUUID","nodeType":"MemberAccess","referencedDeclaration":29,"src":"3404:61:2","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_bytes32_$","typeString":"function () view external returns (bytes32)"}},"id":169,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3404:63:2","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":188,"nodeType":"TryStatement","src":"3400:302:2"},{"expression":{"arguments":[{"id":190,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":148,"src":"3733:17:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":191,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":150,"src":"3752:4:2","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":192,"name":"forceCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":152,"src":"3758:9:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":189,"name":"_upgradeToAndCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":145,"src":"3715:17:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_bool_$returns$__$","typeString":"function (address,bytes memory,bool)"}},"id":193,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3715:53:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":194,"nodeType":"ExpressionStatement","src":"3715:53:2"}]},"id":196,"nodeType":"IfStatement","src":"3253:526:2","trueBody":{"id":164,"nodeType":"Block","src":"3318:62:2","statements":[{"expression":{"arguments":[{"id":161,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":148,"src":"3351:17:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":160,"name":"_setImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":100,"src":"3332:18:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":162,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3332:37:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":163,"nodeType":"ExpressionStatement","src":"3332:37:2"}]}}]},"documentation":{"id":146,"nodeType":"StructuredDocumentation","src":"2675:161:2","text":" @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\n Emits an {Upgraded} event."},"id":198,"implemented":true,"kind":"function","modifiers":[],"name":"_upgradeToAndCallUUPS","nameLocation":"2850:21:2","nodeType":"FunctionDefinition","parameters":{"id":153,"nodeType":"ParameterList","parameters":[{"constant":false,"id":148,"mutability":"mutable","name":"newImplementation","nameLocation":"2880:17:2","nodeType":"VariableDeclaration","scope":198,"src":"2872:25:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":147,"name":"address","nodeType":"ElementaryTypeName","src":"2872:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":150,"mutability":"mutable","name":"data","nameLocation":"2912:4:2","nodeType":"VariableDeclaration","scope":198,"src":"2899:17:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":149,"name":"bytes","nodeType":"ElementaryTypeName","src":"2899:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":152,"mutability":"mutable","name":"forceCall","nameLocation":"2923:9:2","nodeType":"VariableDeclaration","scope":198,"src":"2918:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":151,"name":"bool","nodeType":"ElementaryTypeName","src":"2918:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2871:62:2"},"returnParameters":{"id":154,"nodeType":"ParameterList","parameters":[],"src":"2943:0:2"},"scope":355,"src":"2841:944:2","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"constant":true,"documentation":{"id":199,"nodeType":"StructuredDocumentation","src":"3791:189:2","text":" @dev Storage slot with the admin of the contract.\n This is the keccak-256 hash of \"eip1967.proxy.admin\" subtracted by 1, and is\n validated in the constructor."},"id":202,"mutability":"constant","name":"_ADMIN_SLOT","nameLocation":"4011:11:2","nodeType":"VariableDeclaration","scope":355,"src":"3985:106:2","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":200,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3985:7:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307862353331323736383461353638623331373361653133623966386136303136653234336536336236653865653131373864366137313738353062356436313033","id":201,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4025:66:2","typeDescriptions":{"typeIdentifier":"t_rational_81955473079516046949633743016697847541294818689821282749996681496272635257091_by_1","typeString":"int_const 8195...(69 digits omitted)...7091"},"value":"0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103"},"visibility":"internal"},{"body":{"id":214,"nodeType":"Block","src":"4206:80:2","statements":[{"expression":{"expression":{"arguments":[{"id":210,"name":"_ADMIN_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":202,"src":"4261:11:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":208,"name":"StorageSlotUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1236,"src":"4223:22:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlotUpgradeable_$1236_$","typeString":"type(library StorageSlotUpgradeable)"}},"id":209,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4246:14:2","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":1158,"src":"4223:37:2","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$1132_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlotUpgradeable.AddressSlot storage pointer)"}},"id":211,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4223:50:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$1132_storage_ptr","typeString":"struct StorageSlotUpgradeable.AddressSlot storage pointer"}},"id":212,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4274:5:2","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":1131,"src":"4223:56:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":207,"id":213,"nodeType":"Return","src":"4216:63:2"}]},"documentation":{"id":203,"nodeType":"StructuredDocumentation","src":"4098:50:2","text":" @dev Returns the current admin."},"id":215,"implemented":true,"kind":"function","modifiers":[],"name":"_getAdmin","nameLocation":"4162:9:2","nodeType":"FunctionDefinition","parameters":{"id":204,"nodeType":"ParameterList","parameters":[],"src":"4171:2:2"},"returnParameters":{"id":207,"nodeType":"ParameterList","parameters":[{"constant":false,"id":206,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":215,"src":"4197:7:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":205,"name":"address","nodeType":"ElementaryTypeName","src":"4197:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4196:9:2"},"scope":355,"src":"4153:133:2","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":240,"nodeType":"Block","src":"4413:167:2","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":227,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":222,"name":"newAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":218,"src":"4431:8:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":225,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4451:1:2","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":224,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4443:7:2","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":223,"name":"address","nodeType":"ElementaryTypeName","src":"4443:7:2","typeDescriptions":{}}},"id":226,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4443:10:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4431:22:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"455243313936373a206e65772061646d696e20697320746865207a65726f2061646472657373","id":228,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4455:40:2","typeDescriptions":{"typeIdentifier":"t_stringliteral_3820e16891102c1360a787e6e648431097d92537f969d458f5c94b56f8318be5","typeString":"literal_string \"ERC1967: new admin is the zero address\""},"value":"ERC1967: new admin is the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_3820e16891102c1360a787e6e648431097d92537f969d458f5c94b56f8318be5","typeString":"literal_string \"ERC1967: new admin is the zero address\""}],"id":221,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"4423:7:2","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":229,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4423:73:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":230,"nodeType":"ExpressionStatement","src":"4423:73:2"},{"expression":{"id":238,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[{"id":234,"name":"_ADMIN_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":202,"src":"4544:11:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":231,"name":"StorageSlotUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1236,"src":"4506:22:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlotUpgradeable_$1236_$","typeString":"type(library StorageSlotUpgradeable)"}},"id":233,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4529:14:2","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":1158,"src":"4506:37:2","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$1132_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlotUpgradeable.AddressSlot storage pointer)"}},"id":235,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4506:50:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$1132_storage_ptr","typeString":"struct StorageSlotUpgradeable.AddressSlot storage pointer"}},"id":236,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4557:5:2","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":1131,"src":"4506:56:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":237,"name":"newAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":218,"src":"4565:8:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4506:67:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":239,"nodeType":"ExpressionStatement","src":"4506:67:2"}]},"documentation":{"id":216,"nodeType":"StructuredDocumentation","src":"4292:71:2","text":" @dev Stores a new address in the EIP1967 admin slot."},"id":241,"implemented":true,"kind":"function","modifiers":[],"name":"_setAdmin","nameLocation":"4377:9:2","nodeType":"FunctionDefinition","parameters":{"id":219,"nodeType":"ParameterList","parameters":[{"constant":false,"id":218,"mutability":"mutable","name":"newAdmin","nameLocation":"4395:8:2","nodeType":"VariableDeclaration","scope":241,"src":"4387:16:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":217,"name":"address","nodeType":"ElementaryTypeName","src":"4387:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4386:18:2"},"returnParameters":{"id":220,"nodeType":"ParameterList","parameters":[],"src":"4413:0:2"},"scope":355,"src":"4368:212:2","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":257,"nodeType":"Block","src":"4740:86:2","statements":[{"eventCall":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":248,"name":"_getAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":215,"src":"4768:9:2","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":249,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4768:11:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":250,"name":"newAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":244,"src":"4781:8:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":247,"name":"AdminChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14,"src":"4755:12:2","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":251,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4755:35:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":252,"nodeType":"EmitStatement","src":"4750:40:2"},{"expression":{"arguments":[{"id":254,"name":"newAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":244,"src":"4810:8:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":253,"name":"_setAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":241,"src":"4800:9:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":255,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4800:19:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":256,"nodeType":"ExpressionStatement","src":"4800:19:2"}]},"documentation":{"id":242,"nodeType":"StructuredDocumentation","src":"4586:100:2","text":" @dev Changes the admin of the proxy.\n Emits an {AdminChanged} event."},"id":258,"implemented":true,"kind":"function","modifiers":[],"name":"_changeAdmin","nameLocation":"4700:12:2","nodeType":"FunctionDefinition","parameters":{"id":245,"nodeType":"ParameterList","parameters":[{"constant":false,"id":244,"mutability":"mutable","name":"newAdmin","nameLocation":"4721:8:2","nodeType":"VariableDeclaration","scope":258,"src":"4713:16:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":243,"name":"address","nodeType":"ElementaryTypeName","src":"4713:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4712:18:2"},"returnParameters":{"id":246,"nodeType":"ParameterList","parameters":[],"src":"4740:0:2"},"scope":355,"src":"4691:135:2","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"constant":true,"documentation":{"id":259,"nodeType":"StructuredDocumentation","src":"4832:232:2","text":" @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\n This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor."},"id":262,"mutability":"constant","name":"_BEACON_SLOT","nameLocation":"5095:12:2","nodeType":"VariableDeclaration","scope":355,"src":"5069:107:2","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":260,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5069:7:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307861336630616437346535343233616562666438306433656634333436353738333335613961373261656165653539666636636233353832623335313333643530","id":261,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5110:66:2","typeDescriptions":{"typeIdentifier":"t_rational_74152234768234802001998023604048924213078445070507226371336425913862612794704_by_1","typeString":"int_const 7415...(69 digits omitted)...4704"},"value":"0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50"},"visibility":"internal"},{"body":{"id":274,"nodeType":"Block","src":"5293:81:2","statements":[{"expression":{"expression":{"arguments":[{"id":270,"name":"_BEACON_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":262,"src":"5348:12:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":268,"name":"StorageSlotUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1236,"src":"5310:22:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlotUpgradeable_$1236_$","typeString":"type(library StorageSlotUpgradeable)"}},"id":269,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5333:14:2","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":1158,"src":"5310:37:2","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$1132_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlotUpgradeable.AddressSlot storage pointer)"}},"id":271,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5310:51:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$1132_storage_ptr","typeString":"struct StorageSlotUpgradeable.AddressSlot storage pointer"}},"id":272,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5362:5:2","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":1131,"src":"5310:57:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":267,"id":273,"nodeType":"Return","src":"5303:64:2"}]},"documentation":{"id":263,"nodeType":"StructuredDocumentation","src":"5183:51:2","text":" @dev Returns the current beacon."},"id":275,"implemented":true,"kind":"function","modifiers":[],"name":"_getBeacon","nameLocation":"5248:10:2","nodeType":"FunctionDefinition","parameters":{"id":264,"nodeType":"ParameterList","parameters":[],"src":"5258:2:2"},"returnParameters":{"id":267,"nodeType":"ParameterList","parameters":[{"constant":false,"id":266,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":275,"src":"5284:7:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":265,"name":"address","nodeType":"ElementaryTypeName","src":"5284:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5283:9:2"},"scope":355,"src":"5239:135:2","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":310,"nodeType":"Block","src":"5503:368:2","statements":[{"expression":{"arguments":[{"arguments":[{"id":284,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":278,"src":"5551:9:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":282,"name":"AddressUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1001,"src":"5521:18:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AddressUpgradeable_$1001_$","typeString":"type(library AddressUpgradeable)"}},"id":283,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5540:10:2","memberName":"isContract","nodeType":"MemberAccess","referencedDeclaration":689,"src":"5521:29:2","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":285,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5521:40:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"455243313936373a206e657720626561636f6e206973206e6f74206120636f6e7472616374","id":286,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5563:39:2","typeDescriptions":{"typeIdentifier":"t_stringliteral_9589b7809634e4928033de18bb696e9af4ef71b703652af5245f2dbebf2f4470","typeString":"literal_string \"ERC1967: new beacon is not a contract\""},"value":"ERC1967: new beacon is not a contract"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9589b7809634e4928033de18bb696e9af4ef71b703652af5245f2dbebf2f4470","typeString":"literal_string \"ERC1967: new beacon is not a contract\""}],"id":281,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"5513:7:2","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":287,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5513:90:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":288,"nodeType":"ExpressionStatement","src":"5513:90:2"},{"expression":{"arguments":[{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":293,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":278,"src":"5683:9:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":292,"name":"IBeaconUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":365,"src":"5664:18:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBeaconUpgradeable_$365_$","typeString":"type(contract IBeaconUpgradeable)"}},"id":294,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5664:29:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBeaconUpgradeable_$365","typeString":"contract IBeaconUpgradeable"}},"id":295,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5694:14:2","memberName":"implementation","nodeType":"MemberAccess","referencedDeclaration":364,"src":"5664:44:2","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":296,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5664:46:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":290,"name":"AddressUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1001,"src":"5634:18:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AddressUpgradeable_$1001_$","typeString":"type(library AddressUpgradeable)"}},"id":291,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5653:10:2","memberName":"isContract","nodeType":"MemberAccess","referencedDeclaration":689,"src":"5634:29:2","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":297,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5634:77:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"455243313936373a20626561636f6e20696d706c656d656e746174696f6e206973206e6f74206120636f6e7472616374","id":298,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5725:50:2","typeDescriptions":{"typeIdentifier":"t_stringliteral_f95fd1f5b5578816eb23f6ca0f2439b4b5e4094dc16e99c3b8e91603a83f93c8","typeString":"literal_string \"ERC1967: beacon implementation is not a contract\""},"value":"ERC1967: beacon implementation is not a contract"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_f95fd1f5b5578816eb23f6ca0f2439b4b5e4094dc16e99c3b8e91603a83f93c8","typeString":"literal_string \"ERC1967: beacon implementation is not a contract\""}],"id":289,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"5613:7:2","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":299,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5613:172:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":300,"nodeType":"ExpressionStatement","src":"5613:172:2"},{"expression":{"id":308,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[{"id":304,"name":"_BEACON_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":262,"src":"5833:12:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":301,"name":"StorageSlotUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1236,"src":"5795:22:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlotUpgradeable_$1236_$","typeString":"type(library StorageSlotUpgradeable)"}},"id":303,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5818:14:2","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":1158,"src":"5795:37:2","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$1132_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlotUpgradeable.AddressSlot storage pointer)"}},"id":305,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5795:51:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$1132_storage_ptr","typeString":"struct StorageSlotUpgradeable.AddressSlot storage pointer"}},"id":306,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5847:5:2","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":1131,"src":"5795:57:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":307,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":278,"src":"5855:9:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5795:69:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":309,"nodeType":"ExpressionStatement","src":"5795:69:2"}]},"documentation":{"id":276,"nodeType":"StructuredDocumentation","src":"5380:71:2","text":" @dev Stores a new beacon in the EIP1967 beacon slot."},"id":311,"implemented":true,"kind":"function","modifiers":[],"name":"_setBeacon","nameLocation":"5465:10:2","nodeType":"FunctionDefinition","parameters":{"id":279,"nodeType":"ParameterList","parameters":[{"constant":false,"id":278,"mutability":"mutable","name":"newBeacon","nameLocation":"5484:9:2","nodeType":"VariableDeclaration","scope":311,"src":"5476:17:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":277,"name":"address","nodeType":"ElementaryTypeName","src":"5476:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5475:19:2"},"returnParameters":{"id":280,"nodeType":"ParameterList","parameters":[],"src":"5503:0:2"},"scope":355,"src":"5456:415:2","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":348,"nodeType":"Block","src":"6270:239:2","statements":[{"expression":{"arguments":[{"id":322,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":314,"src":"6291:9:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":321,"name":"_setBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":311,"src":"6280:10:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":323,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6280:21:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":324,"nodeType":"ExpressionStatement","src":"6280:21:2"},{"eventCall":{"arguments":[{"id":326,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":314,"src":"6331:9:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":325,"name":"BeaconUpgraded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19,"src":"6316:14:2","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":327,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6316:25:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":328,"nodeType":"EmitStatement","src":"6311:30:2"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":334,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":332,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":329,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":316,"src":"6355:4:2","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":330,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6360:6:2","memberName":"length","nodeType":"MemberAccess","src":"6355:11:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":331,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6369:1:2","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6355:15:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"id":333,"name":"forceCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":318,"src":"6374:9:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6355:28:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":347,"nodeType":"IfStatement","src":"6351:152:2","trueBody":{"id":346,"nodeType":"Block","src":"6385:118:2","statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":339,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":314,"src":"6458:9:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":338,"name":"IBeaconUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":365,"src":"6439:18:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBeaconUpgradeable_$365_$","typeString":"type(contract IBeaconUpgradeable)"}},"id":340,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6439:29:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBeaconUpgradeable_$365","typeString":"contract IBeaconUpgradeable"}},"id":341,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6469:14:2","memberName":"implementation","nodeType":"MemberAccess","referencedDeclaration":364,"src":"6439:44:2","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":342,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6439:46:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":343,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":316,"src":"6487:4:2","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":335,"name":"AddressUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1001,"src":"6399:18:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AddressUpgradeable_$1001_$","typeString":"type(library AddressUpgradeable)"}},"id":337,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6418:20:2","memberName":"functionDelegateCall","nodeType":"MemberAccess","referencedDeclaration":888,"src":"6399:39:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory) returns (bytes memory)"}},"id":344,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6399:93:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":345,"nodeType":"ExpressionStatement","src":"6399:93:2"}]}}]},"documentation":{"id":312,"nodeType":"StructuredDocumentation","src":"5877:292:2","text":" @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\n not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\n Emits a {BeaconUpgraded} event."},"id":349,"implemented":true,"kind":"function","modifiers":[],"name":"_upgradeBeaconToAndCall","nameLocation":"6183:23:2","nodeType":"FunctionDefinition","parameters":{"id":319,"nodeType":"ParameterList","parameters":[{"constant":false,"id":314,"mutability":"mutable","name":"newBeacon","nameLocation":"6215:9:2","nodeType":"VariableDeclaration","scope":349,"src":"6207:17:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":313,"name":"address","nodeType":"ElementaryTypeName","src":"6207:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":316,"mutability":"mutable","name":"data","nameLocation":"6239:4:2","nodeType":"VariableDeclaration","scope":349,"src":"6226:17:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":315,"name":"bytes","nodeType":"ElementaryTypeName","src":"6226:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":318,"mutability":"mutable","name":"forceCall","nameLocation":"6250:9:2","nodeType":"VariableDeclaration","scope":349,"src":"6245:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":317,"name":"bool","nodeType":"ElementaryTypeName","src":"6245:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6206:54:2"},"returnParameters":{"id":320,"nodeType":"ParameterList","parameters":[],"src":"6270:0:2"},"scope":355,"src":"6174:335:2","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"constant":false,"documentation":{"id":350,"nodeType":"StructuredDocumentation","src":"6515:254:2","text":" @dev This empty reserved space is put in place to allow future versions to add new\n variables without shifting down storage in the inheritance chain.\n See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"},"id":354,"mutability":"mutable","name":"__gap","nameLocation":"6794:5:2","nodeType":"VariableDeclaration","scope":355,"src":"6774:25:2","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$50_storage","typeString":"uint256[50]"},"typeName":{"baseType":{"id":351,"name":"uint256","nodeType":"ElementaryTypeName","src":"6774:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":353,"length":{"hexValue":"3530","id":352,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6782:2:2","typeDescriptions":{"typeIdentifier":"t_rational_50_by_1","typeString":"int_const 50"},"value":"50"},"nodeType":"ArrayTypeName","src":"6774:11:2","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$50_storage_ptr","typeString":"uint256[50]"}},"visibility":"private"}],"scope":356,"src":"630:6172:2","usedErrors":[]}],"src":"116:6687:2"},"id":2},"@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.sol","exportedSymbols":{"IBeaconUpgradeable":[365]},"id":366,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":357,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"93:23:3"},{"abstract":false,"baseContracts":[],"canonicalName":"IBeaconUpgradeable","contractDependencies":[],"contractKind":"interface","documentation":{"id":358,"nodeType":"StructuredDocumentation","src":"118:79:3","text":" @dev This is the interface that {BeaconProxy} expects of its beacon."},"fullyImplemented":false,"id":365,"linearizedBaseContracts":[365],"name":"IBeaconUpgradeable","nameLocation":"208:18:3","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":359,"nodeType":"StructuredDocumentation","src":"233:162:3","text":" @dev Must return an address that can be used as a delegate call target.\n {BeaconProxy} will check that this address is a contract."},"functionSelector":"5c60da1b","id":364,"implemented":false,"kind":"function","modifiers":[],"name":"implementation","nameLocation":"409:14:3","nodeType":"FunctionDefinition","parameters":{"id":360,"nodeType":"ParameterList","parameters":[],"src":"423:2:3"},"returnParameters":{"id":363,"nodeType":"ParameterList","parameters":[{"constant":false,"id":362,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":364,"src":"449:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":361,"name":"address","nodeType":"ElementaryTypeName","src":"449:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"448:9:3"},"scope":365,"src":"400:58:3","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":366,"src":"198:262:3","usedErrors":[]}],"src":"93:368:3"},"id":3},"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","exportedSymbols":{"AddressUpgradeable":[1001],"Initializable":[534]},"id":535,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":367,"literals":["solidity","^","0.8",".2"],"nodeType":"PragmaDirective","src":"113:23:4"},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol","file":"../../utils/AddressUpgradeable.sol","id":368,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":535,"sourceUnit":1002,"src":"138:44:4","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[],"canonicalName":"Initializable","contractDependencies":[],"contractKind":"contract","documentation":{"id":369,"nodeType":"StructuredDocumentation","src":"184:2209:4","text":" @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\n behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\n external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\n function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\n The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\n reused. This mechanism prevents re-execution of each \"step\" but allows the creation of new initialization steps in\n case an upgrade adds a module that needs to be initialized.\n For example:\n [.hljs-theme-light.nopadding]\n ```solidity\n contract MyToken is ERC20Upgradeable {\n function initialize() initializer public {\n __ERC20_init(\"MyToken\", \"MTK\");\n }\n }\n contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\n function initializeV2() reinitializer(2) public {\n __ERC20Permit_init(\"MyToken\");\n }\n }\n ```\n TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\n possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\n CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\n that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\n [CAUTION]\n ====\n Avoid leaving a contract uninitialized.\n An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\n contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\n the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\n [.hljs-theme-light.nopadding]\n ```\n /// @custom:oz-upgrades-unsafe-allow constructor\n constructor() {\n _disableInitializers();\n }\n ```\n ===="},"fullyImplemented":true,"id":534,"linearizedBaseContracts":[534],"name":"Initializable","nameLocation":"2412:13:4","nodeType":"ContractDefinition","nodes":[{"constant":false,"documentation":{"id":370,"nodeType":"StructuredDocumentation","src":"2432:109:4","text":" @dev Indicates that the contract has been initialized.\n @custom:oz-retyped-from bool"},"id":372,"mutability":"mutable","name":"_initialized","nameLocation":"2560:12:4","nodeType":"VariableDeclaration","scope":534,"src":"2546:26:4","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":371,"name":"uint8","nodeType":"ElementaryTypeName","src":"2546:5:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"private"},{"constant":false,"documentation":{"id":373,"nodeType":"StructuredDocumentation","src":"2579:91:4","text":" @dev Indicates that the contract is in the process of being initialized."},"id":375,"mutability":"mutable","name":"_initializing","nameLocation":"2688:13:4","nodeType":"VariableDeclaration","scope":534,"src":"2675:26:4","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":374,"name":"bool","nodeType":"ElementaryTypeName","src":"2675:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"private"},{"anonymous":false,"documentation":{"id":376,"nodeType":"StructuredDocumentation","src":"2708:90:4","text":" @dev Triggered when the contract has been initialized or reinitialized."},"eventSelector":"7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498","id":380,"name":"Initialized","nameLocation":"2809:11:4","nodeType":"EventDefinition","parameters":{"id":379,"nodeType":"ParameterList","parameters":[{"constant":false,"id":378,"indexed":false,"mutability":"mutable","name":"version","nameLocation":"2827:7:4","nodeType":"VariableDeclaration","scope":380,"src":"2821:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":377,"name":"uint8","nodeType":"ElementaryTypeName","src":"2821:5:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"2820:15:4"},"src":"2803:33:4"},{"body":{"id":435,"nodeType":"Block","src":"3269:483:4","statements":[{"assignments":[384],"declarations":[{"constant":false,"id":384,"mutability":"mutable","name":"isTopLevelCall","nameLocation":"3284:14:4","nodeType":"VariableDeclaration","scope":435,"src":"3279:19:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":383,"name":"bool","nodeType":"ElementaryTypeName","src":"3279:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":387,"initialValue":{"id":386,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"3301:14:4","subExpression":{"id":385,"name":"_initializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":375,"src":"3302:13:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"3279:36:4"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":408,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":393,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":389,"name":"isTopLevelCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":384,"src":"3347:14:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":392,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":390,"name":"_initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":372,"src":"3365:12:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"31","id":391,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3380:1:4","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3365:16:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3347:34:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":394,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3346:36:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":406,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":402,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"3387:45:4","subExpression":{"arguments":[{"arguments":[{"id":399,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967268,"src":"3426:4:4","typeDescriptions":{"typeIdentifier":"t_contract$_Initializable_$534","typeString":"contract Initializable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Initializable_$534","typeString":"contract Initializable"}],"id":398,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3418:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":397,"name":"address","nodeType":"ElementaryTypeName","src":"3418:7:4","typeDescriptions":{}}},"id":400,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3418:13:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":395,"name":"AddressUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1001,"src":"3388:18:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AddressUpgradeable_$1001_$","typeString":"type(library AddressUpgradeable)"}},"id":396,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3407:10:4","memberName":"isContract","nodeType":"MemberAccess","referencedDeclaration":689,"src":"3388:29:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":401,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3388:44:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":405,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":403,"name":"_initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":372,"src":"3436:12:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":404,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3452:1:4","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3436:17:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3387:66:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":407,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3386:68:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3346:108:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a6564","id":409,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3468:48:4","typeDescriptions":{"typeIdentifier":"t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759","typeString":"literal_string \"Initializable: contract is already initialized\""},"value":"Initializable: contract is already initialized"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759","typeString":"literal_string \"Initializable: contract is already initialized\""}],"id":388,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"3325:7:4","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":410,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3325:201:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":411,"nodeType":"ExpressionStatement","src":"3325:201:4"},{"expression":{"id":414,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":412,"name":"_initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":372,"src":"3536:12:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"31","id":413,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3551:1:4","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3536:16:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":415,"nodeType":"ExpressionStatement","src":"3536:16:4"},{"condition":{"id":416,"name":"isTopLevelCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":384,"src":"3566:14:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":422,"nodeType":"IfStatement","src":"3562:65:4","trueBody":{"id":421,"nodeType":"Block","src":"3582:45:4","statements":[{"expression":{"id":419,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":417,"name":"_initializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":375,"src":"3596:13:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":418,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3612:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"3596:20:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":420,"nodeType":"ExpressionStatement","src":"3596:20:4"}]}},{"id":423,"nodeType":"PlaceholderStatement","src":"3636:1:4"},{"condition":{"id":424,"name":"isTopLevelCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":384,"src":"3651:14:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":434,"nodeType":"IfStatement","src":"3647:99:4","trueBody":{"id":433,"nodeType":"Block","src":"3667:79:4","statements":[{"expression":{"id":427,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":425,"name":"_initializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":375,"src":"3681:13:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":426,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3697:5:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"3681:21:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":428,"nodeType":"ExpressionStatement","src":"3681:21:4"},{"eventCall":{"arguments":[{"hexValue":"31","id":430,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3733:1:4","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":429,"name":"Initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":380,"src":"3721:11:4","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint8_$returns$__$","typeString":"function (uint8)"}},"id":431,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3721:14:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":432,"nodeType":"EmitStatement","src":"3716:19:4"}]}}]},"documentation":{"id":381,"nodeType":"StructuredDocumentation","src":"2842:399:4","text":" @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\n `onlyInitializing` functions can be used to initialize parent contracts.\n Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\n constructor.\n Emits an {Initialized} event."},"id":436,"name":"initializer","nameLocation":"3255:11:4","nodeType":"ModifierDefinition","parameters":{"id":382,"nodeType":"ParameterList","parameters":[],"src":"3266:2:4"},"src":"3246:506:4","virtual":false,"visibility":"internal"},{"body":{"id":468,"nodeType":"Block","src":"4863:255:4","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":447,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":443,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"4881:14:4","subExpression":{"id":442,"name":"_initializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":375,"src":"4882:13:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":446,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":444,"name":"_initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":372,"src":"4899:12:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":445,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":439,"src":"4914:7:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"4899:22:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4881:40:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a6564","id":448,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4923:48:4","typeDescriptions":{"typeIdentifier":"t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759","typeString":"literal_string \"Initializable: contract is already initialized\""},"value":"Initializable: contract is already initialized"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759","typeString":"literal_string \"Initializable: contract is already initialized\""}],"id":441,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"4873:7:4","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":449,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4873:99:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":450,"nodeType":"ExpressionStatement","src":"4873:99:4"},{"expression":{"id":453,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":451,"name":"_initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":372,"src":"4982:12:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":452,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":439,"src":"4997:7:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"4982:22:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":454,"nodeType":"ExpressionStatement","src":"4982:22:4"},{"expression":{"id":457,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":455,"name":"_initializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":375,"src":"5014:13:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":456,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5030:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"5014:20:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":458,"nodeType":"ExpressionStatement","src":"5014:20:4"},{"id":459,"nodeType":"PlaceholderStatement","src":"5044:1:4"},{"expression":{"id":462,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":460,"name":"_initializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":375,"src":"5055:13:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":461,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5071:5:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"5055:21:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":463,"nodeType":"ExpressionStatement","src":"5055:21:4"},{"eventCall":{"arguments":[{"id":465,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":439,"src":"5103:7:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":464,"name":"Initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":380,"src":"5091:11:4","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint8_$returns$__$","typeString":"function (uint8)"}},"id":466,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5091:20:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":467,"nodeType":"EmitStatement","src":"5086:25:4"}]},"documentation":{"id":437,"nodeType":"StructuredDocumentation","src":"3758:1062:4","text":" @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\n contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\n used to initialize parent contracts.\n A reinitializer may be used after the original initialization step. This is essential to configure modules that\n are added through upgrades and that require initialization.\n When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\n cannot be nested. If one is invoked in the context of another, execution will revert.\n Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\n a contract, executing them in the right order is up to the developer or operator.\n WARNING: setting the version to 255 will prevent any future reinitialization.\n Emits an {Initialized} event."},"id":469,"name":"reinitializer","nameLocation":"4834:13:4","nodeType":"ModifierDefinition","parameters":{"id":440,"nodeType":"ParameterList","parameters":[{"constant":false,"id":439,"mutability":"mutable","name":"version","nameLocation":"4854:7:4","nodeType":"VariableDeclaration","scope":469,"src":"4848:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":438,"name":"uint8","nodeType":"ElementaryTypeName","src":"4848:5:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"4847:15:4"},"src":"4825:293:4","virtual":false,"visibility":"internal"},{"body":{"id":478,"nodeType":"Block","src":"5356:97:4","statements":[{"expression":{"arguments":[{"id":473,"name":"_initializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":375,"src":"5374:13:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e697469616c697a61626c653a20636f6e7472616374206973206e6f7420696e697469616c697a696e67","id":474,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5389:45:4","typeDescriptions":{"typeIdentifier":"t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b","typeString":"literal_string \"Initializable: contract is not initializing\""},"value":"Initializable: contract is not initializing"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b","typeString":"literal_string \"Initializable: contract is not initializing\""}],"id":472,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"5366:7:4","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":475,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5366:69:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":476,"nodeType":"ExpressionStatement","src":"5366:69:4"},{"id":477,"nodeType":"PlaceholderStatement","src":"5445:1:4"}]},"documentation":{"id":470,"nodeType":"StructuredDocumentation","src":"5124:199:4","text":" @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\n {initializer} and {reinitializer} modifiers, directly or indirectly."},"id":479,"name":"onlyInitializing","nameLocation":"5337:16:4","nodeType":"ModifierDefinition","parameters":{"id":471,"nodeType":"ParameterList","parameters":[],"src":"5353:2:4"},"src":"5328:125:4","virtual":false,"visibility":"internal"},{"body":{"id":514,"nodeType":"Block","src":"5988:231:4","statements":[{"expression":{"arguments":[{"id":485,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"6006:14:4","subExpression":{"id":484,"name":"_initializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":375,"src":"6007:13:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e697469616c697a61626c653a20636f6e747261637420697320696e697469616c697a696e67","id":486,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6022:41:4","typeDescriptions":{"typeIdentifier":"t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a","typeString":"literal_string \"Initializable: contract is initializing\""},"value":"Initializable: contract is initializing"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a","typeString":"literal_string \"Initializable: contract is initializing\""}],"id":483,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"5998:7:4","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":487,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5998:66:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":488,"nodeType":"ExpressionStatement","src":"5998:66:4"},{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":495,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":489,"name":"_initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":372,"src":"6078:12:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"arguments":[{"id":492,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6099:5:4","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":491,"name":"uint8","nodeType":"ElementaryTypeName","src":"6099:5:4","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"}],"id":490,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"6094:4:4","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":493,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6094:11:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint8","typeString":"type(uint8)"}},"id":494,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6106:3:4","memberName":"max","nodeType":"MemberAccess","src":"6094:15:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"6078:31:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":513,"nodeType":"IfStatement","src":"6074:139:4","trueBody":{"id":512,"nodeType":"Block","src":"6111:102:4","statements":[{"expression":{"id":502,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":496,"name":"_initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":372,"src":"6125:12:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"arguments":[{"id":499,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6145:5:4","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":498,"name":"uint8","nodeType":"ElementaryTypeName","src":"6145:5:4","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"}],"id":497,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"6140:4:4","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":500,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6140:11:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint8","typeString":"type(uint8)"}},"id":501,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6152:3:4","memberName":"max","nodeType":"MemberAccess","src":"6140:15:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"6125:30:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":503,"nodeType":"ExpressionStatement","src":"6125:30:4"},{"eventCall":{"arguments":[{"expression":{"arguments":[{"id":507,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6191:5:4","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":506,"name":"uint8","nodeType":"ElementaryTypeName","src":"6191:5:4","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"}],"id":505,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"6186:4:4","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":508,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6186:11:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint8","typeString":"type(uint8)"}},"id":509,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6198:3:4","memberName":"max","nodeType":"MemberAccess","src":"6186:15:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":504,"name":"Initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":380,"src":"6174:11:4","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint8_$returns$__$","typeString":"function (uint8)"}},"id":510,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6174:28:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":511,"nodeType":"EmitStatement","src":"6169:33:4"}]}}]},"documentation":{"id":480,"nodeType":"StructuredDocumentation","src":"5459:475:4","text":" @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\n Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\n to any version. It is recommended to use this to lock implementation contracts that are designed to be called\n through proxies.\n Emits an {Initialized} event the first time it is successfully executed."},"id":515,"implemented":true,"kind":"function","modifiers":[],"name":"_disableInitializers","nameLocation":"5948:20:4","nodeType":"FunctionDefinition","parameters":{"id":481,"nodeType":"ParameterList","parameters":[],"src":"5968:2:4"},"returnParameters":{"id":482,"nodeType":"ParameterList","parameters":[],"src":"5988:0:4"},"scope":534,"src":"5939:280:4","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":523,"nodeType":"Block","src":"6393:36:4","statements":[{"expression":{"id":521,"name":"_initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":372,"src":"6410:12:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"functionReturnParameters":520,"id":522,"nodeType":"Return","src":"6403:19:4"}]},"documentation":{"id":516,"nodeType":"StructuredDocumentation","src":"6225:99:4","text":" @dev Returns the highest version that has been initialized. See {reinitializer}."},"id":524,"implemented":true,"kind":"function","modifiers":[],"name":"_getInitializedVersion","nameLocation":"6338:22:4","nodeType":"FunctionDefinition","parameters":{"id":517,"nodeType":"ParameterList","parameters":[],"src":"6360:2:4"},"returnParameters":{"id":520,"nodeType":"ParameterList","parameters":[{"constant":false,"id":519,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":524,"src":"6386:5:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":518,"name":"uint8","nodeType":"ElementaryTypeName","src":"6386:5:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"6385:7:4"},"scope":534,"src":"6329:100:4","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":532,"nodeType":"Block","src":"6601:37:4","statements":[{"expression":{"id":530,"name":"_initializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":375,"src":"6618:13:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":529,"id":531,"nodeType":"Return","src":"6611:20:4"}]},"documentation":{"id":525,"nodeType":"StructuredDocumentation","src":"6435:105:4","text":" @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}."},"id":533,"implemented":true,"kind":"function","modifiers":[],"name":"_isInitializing","nameLocation":"6554:15:4","nodeType":"FunctionDefinition","parameters":{"id":526,"nodeType":"ParameterList","parameters":[],"src":"6569:2:4"},"returnParameters":{"id":529,"nodeType":"ParameterList","parameters":[{"constant":false,"id":528,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":533,"src":"6595:4:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":527,"name":"bool","nodeType":"ElementaryTypeName","src":"6595:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6594:6:4"},"scope":534,"src":"6545:93:4","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":535,"src":"2394:4246:4","usedErrors":[]}],"src":"113:6528:4"},"id":4},"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol","exportedSymbols":{"AddressUpgradeable":[1001],"ERC1967UpgradeUpgradeable":[355],"IBeaconUpgradeable":[365],"IERC1822ProxiableUpgradeable":[30],"IERC1967Upgradeable":[20],"Initializable":[534],"StorageSlotUpgradeable":[1236],"UUPSUpgradeable":[671]},"id":672,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":536,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"115:23:5"},{"absolutePath":"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol","file":"../../interfaces/draft-IERC1822Upgradeable.sol","id":537,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":672,"sourceUnit":31,"src":"140:56:5","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol","file":"../ERC1967/ERC1967UpgradeUpgradeable.sol","id":538,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":672,"sourceUnit":356,"src":"197:50:5","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","file":"./Initializable.sol","id":540,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":672,"sourceUnit":535,"src":"248:50:5","symbolAliases":[{"foreign":{"id":539,"name":"Initializable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":534,"src":"256:13:5","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":542,"name":"Initializable","nameLocations":["986:13:5"],"nodeType":"IdentifierPath","referencedDeclaration":534,"src":"986:13:5"},"id":543,"nodeType":"InheritanceSpecifier","src":"986:13:5"},{"baseName":{"id":544,"name":"IERC1822ProxiableUpgradeable","nameLocations":["1001:28:5"],"nodeType":"IdentifierPath","referencedDeclaration":30,"src":"1001:28:5"},"id":545,"nodeType":"InheritanceSpecifier","src":"1001:28:5"},{"baseName":{"id":546,"name":"ERC1967UpgradeUpgradeable","nameLocations":["1031:25:5"],"nodeType":"IdentifierPath","referencedDeclaration":355,"src":"1031:25:5"},"id":547,"nodeType":"InheritanceSpecifier","src":"1031:25:5"}],"canonicalName":"UUPSUpgradeable","contractDependencies":[],"contractKind":"contract","documentation":{"id":541,"nodeType":"StructuredDocumentation","src":"300:648:5","text":" @dev An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an\n {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy.\n A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is\n reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing\n `UUPSUpgradeable` with a custom implementation of upgrades.\n The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism.\n _Available since v4.1._"},"fullyImplemented":false,"id":671,"linearizedBaseContracts":[671,355,20,30,534],"name":"UUPSUpgradeable","nameLocation":"967:15:5","nodeType":"ContractDefinition","nodes":[{"constant":false,"documentation":{"id":548,"nodeType":"StructuredDocumentation","src":"1063:87:5","text":"@custom:oz-upgrades-unsafe-allow state-variable-immutable state-variable-assignment"},"id":554,"mutability":"immutable","name":"__self","nameLocation":"1181:6:5","nodeType":"VariableDeclaration","scope":671,"src":"1155:48:5","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":549,"name":"address","nodeType":"ElementaryTypeName","src":"1155:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":{"arguments":[{"id":552,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967268,"src":"1198:4:5","typeDescriptions":{"typeIdentifier":"t_contract$_UUPSUpgradeable_$671","typeString":"contract UUPSUpgradeable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_UUPSUpgradeable_$671","typeString":"contract UUPSUpgradeable"}],"id":551,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1190:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":550,"name":"address","nodeType":"ElementaryTypeName","src":"1190:7:5","typeDescriptions":{}}},"id":553,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1190:13:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"body":{"id":576,"nodeType":"Block","src":"1729:205:5","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":563,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":560,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967268,"src":"1755:4:5","typeDescriptions":{"typeIdentifier":"t_contract$_UUPSUpgradeable_$671","typeString":"contract UUPSUpgradeable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_UUPSUpgradeable_$671","typeString":"contract UUPSUpgradeable"}],"id":559,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1747:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":558,"name":"address","nodeType":"ElementaryTypeName","src":"1747:7:5","typeDescriptions":{}}},"id":561,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1747:13:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":562,"name":"__self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":554,"src":"1764:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1747:23:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682064656c656761746563616c6c","id":564,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1772:46:5","typeDescriptions":{"typeIdentifier":"t_stringliteral_36e108fa7a809b52ab1951dd91c117a7bc9ac5250bdf1aa162d4e104f7edf9eb","typeString":"literal_string \"Function must be called through delegatecall\""},"value":"Function must be called through delegatecall"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_36e108fa7a809b52ab1951dd91c117a7bc9ac5250bdf1aa162d4e104f7edf9eb","typeString":"literal_string \"Function must be called through delegatecall\""}],"id":557,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"1739:7:5","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":565,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1739:80:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":566,"nodeType":"ExpressionStatement","src":"1739:80:5"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":571,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":568,"name":"_getImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76,"src":"1837:18:5","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":569,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1837:20:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":570,"name":"__self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":554,"src":"1861:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1837:30:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"46756e6374696f6e206d7573742062652063616c6c6564207468726f756768206163746976652070726f7879","id":572,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1869:46:5","typeDescriptions":{"typeIdentifier":"t_stringliteral_52f1ead4d9653e13afbd2e90ef2587c30187cd50b2e97d784e3f7a7541247434","typeString":"literal_string \"Function must be called through active proxy\""},"value":"Function must be called through active proxy"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_52f1ead4d9653e13afbd2e90ef2587c30187cd50b2e97d784e3f7a7541247434","typeString":"literal_string \"Function must be called through active proxy\""}],"id":567,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"1829:7:5","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":573,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1829:87:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":574,"nodeType":"ExpressionStatement","src":"1829:87:5"},{"id":575,"nodeType":"PlaceholderStatement","src":"1926:1:5"}]},"documentation":{"id":555,"nodeType":"StructuredDocumentation","src":"1210:493:5","text":" @dev Check that the execution is being performed through a delegatecall call and that the execution context is\n a proxy contract with an implementation (as defined in ERC1967) pointing to self. This should only be the case\n for UUPS and transparent proxies that are using the current contract as their implementation. Execution of a\n function through ERC1167 minimal proxies (clones) would not normally pass this test, but is not guaranteed to\n fail."},"id":577,"name":"onlyProxy","nameLocation":"1717:9:5","nodeType":"ModifierDefinition","parameters":{"id":556,"nodeType":"ParameterList","parameters":[],"src":"1726:2:5"},"src":"1708:226:5","virtual":false,"visibility":"internal"},{"body":{"id":591,"nodeType":"Block","src":"2164:120:5","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":586,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":583,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967268,"src":"2190:4:5","typeDescriptions":{"typeIdentifier":"t_contract$_UUPSUpgradeable_$671","typeString":"contract UUPSUpgradeable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_UUPSUpgradeable_$671","typeString":"contract UUPSUpgradeable"}],"id":582,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2182:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":581,"name":"address","nodeType":"ElementaryTypeName","src":"2182:7:5","typeDescriptions":{}}},"id":584,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2182:13:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":585,"name":"__self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":554,"src":"2199:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2182:23:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"555550535570677261646561626c653a206d757374206e6f742062652063616c6c6564207468726f7567682064656c656761746563616c6c","id":587,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2207:58:5","typeDescriptions":{"typeIdentifier":"t_stringliteral_67f0151b4ad1dcfa0e3302a0cd6019f51582ef1807b37dceb00bd852a514f7f4","typeString":"literal_string \"UUPSUpgradeable: must not be called through delegatecall\""},"value":"UUPSUpgradeable: must not be called through delegatecall"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_67f0151b4ad1dcfa0e3302a0cd6019f51582ef1807b37dceb00bd852a514f7f4","typeString":"literal_string \"UUPSUpgradeable: must not be called through delegatecall\""}],"id":580,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"2174:7:5","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":588,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2174:92:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":589,"nodeType":"ExpressionStatement","src":"2174:92:5"},{"id":590,"nodeType":"PlaceholderStatement","src":"2276:1:5"}]},"documentation":{"id":578,"nodeType":"StructuredDocumentation","src":"1940:195:5","text":" @dev Check that the execution is not being performed through a delegate call. This allows a function to be\n callable on the implementing contract but not through proxies."},"id":592,"name":"notDelegated","nameLocation":"2149:12:5","nodeType":"ModifierDefinition","parameters":{"id":579,"nodeType":"ParameterList","parameters":[],"src":"2161:2:5"},"src":"2140:144:5","virtual":false,"visibility":"internal"},{"body":{"id":597,"nodeType":"Block","src":"2350:7:5","statements":[]},"id":598,"implemented":true,"kind":"function","modifiers":[{"id":595,"kind":"modifierInvocation","modifierName":{"id":594,"name":"onlyInitializing","nameLocations":["2333:16:5"],"nodeType":"IdentifierPath","referencedDeclaration":479,"src":"2333:16:5"},"nodeType":"ModifierInvocation","src":"2333:16:5"}],"name":"__UUPSUpgradeable_init","nameLocation":"2299:22:5","nodeType":"FunctionDefinition","parameters":{"id":593,"nodeType":"ParameterList","parameters":[],"src":"2321:2:5"},"returnParameters":{"id":596,"nodeType":"ParameterList","parameters":[],"src":"2350:0:5"},"scope":671,"src":"2290:67:5","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":603,"nodeType":"Block","src":"2433:7:5","statements":[]},"id":604,"implemented":true,"kind":"function","modifiers":[{"id":601,"kind":"modifierInvocation","modifierName":{"id":600,"name":"onlyInitializing","nameLocations":["2416:16:5"],"nodeType":"IdentifierPath","referencedDeclaration":479,"src":"2416:16:5"},"nodeType":"ModifierInvocation","src":"2416:16:5"}],"name":"__UUPSUpgradeable_init_unchained","nameLocation":"2372:32:5","nodeType":"FunctionDefinition","parameters":{"id":599,"nodeType":"ParameterList","parameters":[],"src":"2404:2:5"},"returnParameters":{"id":602,"nodeType":"ParameterList","parameters":[],"src":"2433:0:5"},"scope":671,"src":"2363:77:5","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[29],"body":{"id":615,"nodeType":"Block","src":"3114:44:5","statements":[{"expression":{"id":613,"name":"_IMPLEMENTATION_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51,"src":"3131:20:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":612,"id":614,"nodeType":"Return","src":"3124:27:5"}]},"documentation":{"id":605,"nodeType":"StructuredDocumentation","src":"2445:577:5","text":" @dev Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the\n implementation. It is used to validate the implementation's compatibility when performing an upgrade.\n IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\n bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\n function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier."},"functionSelector":"52d1902d","id":616,"implemented":true,"kind":"function","modifiers":[{"id":609,"kind":"modifierInvocation","modifierName":{"id":608,"name":"notDelegated","nameLocations":["3083:12:5"],"nodeType":"IdentifierPath","referencedDeclaration":592,"src":"3083:12:5"},"nodeType":"ModifierInvocation","src":"3083:12:5"}],"name":"proxiableUUID","nameLocation":"3036:13:5","nodeType":"FunctionDefinition","overrides":{"id":607,"nodeType":"OverrideSpecifier","overrides":[],"src":"3074:8:5"},"parameters":{"id":606,"nodeType":"ParameterList","parameters":[],"src":"3049:2:5"},"returnParameters":{"id":612,"nodeType":"ParameterList","parameters":[{"constant":false,"id":611,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":616,"src":"3105:7:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":610,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3105:7:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3104:9:5"},"scope":671,"src":"3027:131:5","stateMutability":"view","virtual":true,"visibility":"external"},{"body":{"id":637,"nodeType":"Block","src":"3479:124:5","statements":[{"expression":{"arguments":[{"id":625,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":619,"src":"3507:17:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":624,"name":"_authorizeUpgrade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":665,"src":"3489:17:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":626,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3489:36:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":627,"nodeType":"ExpressionStatement","src":"3489:36:5"},{"expression":{"arguments":[{"id":629,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":619,"src":"3557:17:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":632,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3586:1:5","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":631,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"3576:9:5","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":630,"name":"bytes","nodeType":"ElementaryTypeName","src":"3580:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":633,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3576:12:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"66616c7365","id":634,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3590:5:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":628,"name":"_upgradeToAndCallUUPS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":198,"src":"3535:21:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_bool_$returns$__$","typeString":"function (address,bytes memory,bool)"}},"id":635,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3535:61:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":636,"nodeType":"ExpressionStatement","src":"3535:61:5"}]},"documentation":{"id":617,"nodeType":"StructuredDocumentation","src":"3164:239:5","text":" @dev Upgrade the implementation of the proxy to `newImplementation`.\n Calls {_authorizeUpgrade}.\n Emits an {Upgraded} event.\n @custom:oz-upgrades-unsafe-allow-reachable delegatecall"},"functionSelector":"3659cfe6","id":638,"implemented":true,"kind":"function","modifiers":[{"id":622,"kind":"modifierInvocation","modifierName":{"id":621,"name":"onlyProxy","nameLocations":["3469:9:5"],"nodeType":"IdentifierPath","referencedDeclaration":577,"src":"3469:9:5"},"nodeType":"ModifierInvocation","src":"3469:9:5"}],"name":"upgradeTo","nameLocation":"3417:9:5","nodeType":"FunctionDefinition","parameters":{"id":620,"nodeType":"ParameterList","parameters":[{"constant":false,"id":619,"mutability":"mutable","name":"newImplementation","nameLocation":"3435:17:5","nodeType":"VariableDeclaration","scope":638,"src":"3427:25:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":618,"name":"address","nodeType":"ElementaryTypeName","src":"3427:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3426:27:5"},"returnParameters":{"id":623,"nodeType":"ParameterList","parameters":[],"src":"3479:0:5"},"scope":671,"src":"3408:195:5","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":658,"nodeType":"Block","src":"4027:115:5","statements":[{"expression":{"arguments":[{"id":649,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":641,"src":"4055:17:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":648,"name":"_authorizeUpgrade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":665,"src":"4037:17:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":650,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4037:36:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":651,"nodeType":"ExpressionStatement","src":"4037:36:5"},{"expression":{"arguments":[{"id":653,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":641,"src":"4105:17:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":654,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":643,"src":"4124:4:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"74727565","id":655,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4130:4:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":652,"name":"_upgradeToAndCallUUPS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":198,"src":"4083:21:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_bool_$returns$__$","typeString":"function (address,bytes memory,bool)"}},"id":656,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4083:52:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":657,"nodeType":"ExpressionStatement","src":"4083:52:5"}]},"documentation":{"id":639,"nodeType":"StructuredDocumentation","src":"3609:308:5","text":" @dev Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call\n encoded in `data`.\n Calls {_authorizeUpgrade}.\n Emits an {Upgraded} event.\n @custom:oz-upgrades-unsafe-allow-reachable delegatecall"},"functionSelector":"4f1ef286","id":659,"implemented":true,"kind":"function","modifiers":[{"id":646,"kind":"modifierInvocation","modifierName":{"id":645,"name":"onlyProxy","nameLocations":["4017:9:5"],"nodeType":"IdentifierPath","referencedDeclaration":577,"src":"4017:9:5"},"nodeType":"ModifierInvocation","src":"4017:9:5"}],"name":"upgradeToAndCall","nameLocation":"3931:16:5","nodeType":"FunctionDefinition","parameters":{"id":644,"nodeType":"ParameterList","parameters":[{"constant":false,"id":641,"mutability":"mutable","name":"newImplementation","nameLocation":"3956:17:5","nodeType":"VariableDeclaration","scope":659,"src":"3948:25:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":640,"name":"address","nodeType":"ElementaryTypeName","src":"3948:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":643,"mutability":"mutable","name":"data","nameLocation":"3988:4:5","nodeType":"VariableDeclaration","scope":659,"src":"3975:17:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":642,"name":"bytes","nodeType":"ElementaryTypeName","src":"3975:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3947:46:5"},"returnParameters":{"id":647,"nodeType":"ParameterList","parameters":[],"src":"4027:0:5"},"scope":671,"src":"3922:220:5","stateMutability":"payable","virtual":true,"visibility":"public"},{"documentation":{"id":660,"nodeType":"StructuredDocumentation","src":"4148:397:5","text":" @dev Function that should revert when `msg.sender` is not authorized to upgrade the contract. Called by\n {upgradeTo} and {upgradeToAndCall}.\n Normally, this function will use an xref:access.adoc[access control] modifier such as {Ownable-onlyOwner}.\n ```solidity\n function _authorizeUpgrade(address) internal override onlyOwner {}\n ```"},"id":665,"implemented":false,"kind":"function","modifiers":[],"name":"_authorizeUpgrade","nameLocation":"4559:17:5","nodeType":"FunctionDefinition","parameters":{"id":663,"nodeType":"ParameterList","parameters":[{"constant":false,"id":662,"mutability":"mutable","name":"newImplementation","nameLocation":"4585:17:5","nodeType":"VariableDeclaration","scope":665,"src":"4577:25:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":661,"name":"address","nodeType":"ElementaryTypeName","src":"4577:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4576:27:5"},"returnParameters":{"id":664,"nodeType":"ParameterList","parameters":[],"src":"4620:0:5"},"scope":671,"src":"4550:71:5","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"constant":false,"documentation":{"id":666,"nodeType":"StructuredDocumentation","src":"4627:254:5","text":" @dev This empty reserved space is put in place to allow future versions to add new\n variables without shifting down storage in the inheritance chain.\n See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"},"id":670,"mutability":"mutable","name":"__gap","nameLocation":"4906:5:5","nodeType":"VariableDeclaration","scope":671,"src":"4886:25:5","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$50_storage","typeString":"uint256[50]"},"typeName":{"baseType":{"id":667,"name":"uint256","nodeType":"ElementaryTypeName","src":"4886:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":669,"length":{"hexValue":"3530","id":668,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4894:2:5","typeDescriptions":{"typeIdentifier":"t_rational_50_by_1","typeString":"int_const 50"},"value":"50"},"nodeType":"ArrayTypeName","src":"4886:11:5","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$50_storage_ptr","typeString":"uint256[50]"}},"visibility":"private"}],"scope":672,"src":"949:3965:5","usedErrors":[]}],"src":"115:4800:5"},"id":5},"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol","exportedSymbols":{"AddressUpgradeable":[1001]},"id":1002,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":673,"literals":["solidity","^","0.8",".1"],"nodeType":"PragmaDirective","src":"101:23:6"},{"abstract":false,"baseContracts":[],"canonicalName":"AddressUpgradeable","contractDependencies":[],"contractKind":"library","documentation":{"id":674,"nodeType":"StructuredDocumentation","src":"126:67:6","text":" @dev Collection of functions related to the address type"},"fullyImplemented":true,"id":1001,"linearizedBaseContracts":[1001],"name":"AddressUpgradeable","nameLocation":"202:18:6","nodeType":"ContractDefinition","nodes":[{"body":{"id":688,"nodeType":"Block","src":"1489:254:6","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":686,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":682,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":677,"src":"1713:7:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":683,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1721:4:6","memberName":"code","nodeType":"MemberAccess","src":"1713:12:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":684,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1726:6:6","memberName":"length","nodeType":"MemberAccess","src":"1713:19:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":685,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1735:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1713:23:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":681,"id":687,"nodeType":"Return","src":"1706:30:6"}]},"documentation":{"id":675,"nodeType":"StructuredDocumentation","src":"227:1191:6","text":" @dev Returns true if `account` is a contract.\n [IMPORTANT]\n ====\n It is unsafe to assume that an address for which this function returns\n false is an externally-owned account (EOA) and not a contract.\n Among others, `isContract` will return false for the following\n types of addresses:\n - an externally-owned account\n - a contract in construction\n - an address where a contract will be created\n - an address where a contract lived, but was destroyed\n Furthermore, `isContract` will also return true if the target contract within\n the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\n which only has an effect at the end of a transaction.\n ====\n [IMPORTANT]\n ====\n You shouldn't rely on `isContract` to protect against flash loan attacks!\n Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\n like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\n constructor.\n ===="},"id":689,"implemented":true,"kind":"function","modifiers":[],"name":"isContract","nameLocation":"1432:10:6","nodeType":"FunctionDefinition","parameters":{"id":678,"nodeType":"ParameterList","parameters":[{"constant":false,"id":677,"mutability":"mutable","name":"account","nameLocation":"1451:7:6","nodeType":"VariableDeclaration","scope":689,"src":"1443:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":676,"name":"address","nodeType":"ElementaryTypeName","src":"1443:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1442:17:6"},"returnParameters":{"id":681,"nodeType":"ParameterList","parameters":[{"constant":false,"id":680,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":689,"src":"1483:4:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":679,"name":"bool","nodeType":"ElementaryTypeName","src":"1483:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1482:6:6"},"scope":1001,"src":"1423:320:6","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":722,"nodeType":"Block","src":"2729:241:6","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":704,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":700,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967268,"src":"2755:4:6","typeDescriptions":{"typeIdentifier":"t_contract$_AddressUpgradeable_$1001","typeString":"library AddressUpgradeable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_AddressUpgradeable_$1001","typeString":"library AddressUpgradeable"}],"id":699,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2747:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":698,"name":"address","nodeType":"ElementaryTypeName","src":"2747:7:6","typeDescriptions":{}}},"id":701,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2747:13:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":702,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2761:7:6","memberName":"balance","nodeType":"MemberAccess","src":"2747:21:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":703,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":694,"src":"2772:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2747:31:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20696e73756666696369656e742062616c616e6365","id":705,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2780:31:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_5597a22abd0ef5332f8053862eb236db7590f17e2b93a53f63a103becfb561f9","typeString":"literal_string \"Address: insufficient balance\""},"value":"Address: insufficient balance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5597a22abd0ef5332f8053862eb236db7590f17e2b93a53f63a103becfb561f9","typeString":"literal_string \"Address: insufficient balance\""}],"id":697,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"2739:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":706,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2739:73:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":707,"nodeType":"ExpressionStatement","src":"2739:73:6"},{"assignments":[709,null],"declarations":[{"constant":false,"id":709,"mutability":"mutable","name":"success","nameLocation":"2829:7:6","nodeType":"VariableDeclaration","scope":722,"src":"2824:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":708,"name":"bool","nodeType":"ElementaryTypeName","src":"2824:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":716,"initialValue":{"arguments":[{"hexValue":"","id":714,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2872:2:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"id":710,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":692,"src":"2842:9:6","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":711,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2852:4:6","memberName":"call","nodeType":"MemberAccess","src":"2842:14:6","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":713,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":712,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":694,"src":"2864:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"2842:29:6","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":715,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2842:33:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"2823:52:6"},{"expression":{"arguments":[{"id":718,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":709,"src":"2893:7:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d61792068617665207265766572746564","id":719,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2902:60:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_51ddaa38748c0a1144620fb5bfe8edab31ea437571ad591a7734bbfd0429aeae","typeString":"literal_string \"Address: unable to send value, recipient may have reverted\""},"value":"Address: unable to send value, recipient may have reverted"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_51ddaa38748c0a1144620fb5bfe8edab31ea437571ad591a7734bbfd0429aeae","typeString":"literal_string \"Address: unable to send value, recipient may have reverted\""}],"id":717,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"2885:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":720,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2885:78:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":721,"nodeType":"ExpressionStatement","src":"2885:78:6"}]},"documentation":{"id":690,"nodeType":"StructuredDocumentation","src":"1749:904:6","text":" @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n `recipient`, forwarding all available gas and reverting on errors.\n https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n of certain opcodes, possibly making contracts go over the 2300 gas limit\n imposed by `transfer`, making them unable to receive funds via\n `transfer`. {sendValue} removes this limitation.\n https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n IMPORTANT: because control is transferred to `recipient`, care must be\n taken to not create reentrancy vulnerabilities. Consider using\n {ReentrancyGuard} or the\n https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]."},"id":723,"implemented":true,"kind":"function","modifiers":[],"name":"sendValue","nameLocation":"2667:9:6","nodeType":"FunctionDefinition","parameters":{"id":695,"nodeType":"ParameterList","parameters":[{"constant":false,"id":692,"mutability":"mutable","name":"recipient","nameLocation":"2693:9:6","nodeType":"VariableDeclaration","scope":723,"src":"2677:25:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":691,"name":"address","nodeType":"ElementaryTypeName","src":"2677:15:6","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"},{"constant":false,"id":694,"mutability":"mutable","name":"amount","nameLocation":"2712:6:6","nodeType":"VariableDeclaration","scope":723,"src":"2704:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":693,"name":"uint256","nodeType":"ElementaryTypeName","src":"2704:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2676:43:6"},"returnParameters":{"id":696,"nodeType":"ParameterList","parameters":[],"src":"2729:0:6"},"scope":1001,"src":"2658:312:6","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":740,"nodeType":"Block","src":"3801:96:6","statements":[{"expression":{"arguments":[{"id":734,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":726,"src":"3840:6:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":735,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":728,"src":"3848:4:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"30","id":736,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3854:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"416464726573733a206c6f772d6c6576656c2063616c6c206661696c6564","id":737,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3857:32:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_24d7ab5d382116e64324f19950ca9340b8af1ddeb09a8d026e0a3c6a01dcc9df","typeString":"literal_string \"Address: low-level call failed\""},"value":"Address: low-level call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_stringliteral_24d7ab5d382116e64324f19950ca9340b8af1ddeb09a8d026e0a3c6a01dcc9df","typeString":"literal_string \"Address: low-level call failed\""}],"id":733,"name":"functionCallWithValue","nodeType":"Identifier","overloadedDeclarations":[781,825],"referencedDeclaration":825,"src":"3818:21:6","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,uint256,string memory) returns (bytes memory)"}},"id":738,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3818:72:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":732,"id":739,"nodeType":"Return","src":"3811:79:6"}]},"documentation":{"id":724,"nodeType":"StructuredDocumentation","src":"2976:731:6","text":" @dev Performs a Solidity function call using a low level `call`. A\n plain `call` is an unsafe replacement for a function call: use this\n function instead.\n If `target` reverts with a revert reason, it is bubbled up by this\n function (like regular Solidity function calls).\n Returns the raw returned data. To convert to the expected return value,\n use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n Requirements:\n - `target` must be a contract.\n - calling `target` with `data` must not revert.\n _Available since v3.1._"},"id":741,"implemented":true,"kind":"function","modifiers":[],"name":"functionCall","nameLocation":"3721:12:6","nodeType":"FunctionDefinition","parameters":{"id":729,"nodeType":"ParameterList","parameters":[{"constant":false,"id":726,"mutability":"mutable","name":"target","nameLocation":"3742:6:6","nodeType":"VariableDeclaration","scope":741,"src":"3734:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":725,"name":"address","nodeType":"ElementaryTypeName","src":"3734:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":728,"mutability":"mutable","name":"data","nameLocation":"3763:4:6","nodeType":"VariableDeclaration","scope":741,"src":"3750:17:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":727,"name":"bytes","nodeType":"ElementaryTypeName","src":"3750:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3733:35:6"},"returnParameters":{"id":732,"nodeType":"ParameterList","parameters":[{"constant":false,"id":731,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":741,"src":"3787:12:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":730,"name":"bytes","nodeType":"ElementaryTypeName","src":"3787:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3786:14:6"},"scope":1001,"src":"3712:185:6","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":760,"nodeType":"Block","src":"4266:76:6","statements":[{"expression":{"arguments":[{"id":754,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":744,"src":"4305:6:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":755,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":746,"src":"4313:4:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"30","id":756,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4319:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":757,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":748,"src":"4322:12:6","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":753,"name":"functionCallWithValue","nodeType":"Identifier","overloadedDeclarations":[781,825],"referencedDeclaration":825,"src":"4283:21:6","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,uint256,string memory) returns (bytes memory)"}},"id":758,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4283:52:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":752,"id":759,"nodeType":"Return","src":"4276:59:6"}]},"documentation":{"id":742,"nodeType":"StructuredDocumentation","src":"3903:211:6","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n `errorMessage` as a fallback revert reason when `target` reverts.\n _Available since v3.1._"},"id":761,"implemented":true,"kind":"function","modifiers":[],"name":"functionCall","nameLocation":"4128:12:6","nodeType":"FunctionDefinition","parameters":{"id":749,"nodeType":"ParameterList","parameters":[{"constant":false,"id":744,"mutability":"mutable","name":"target","nameLocation":"4158:6:6","nodeType":"VariableDeclaration","scope":761,"src":"4150:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":743,"name":"address","nodeType":"ElementaryTypeName","src":"4150:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":746,"mutability":"mutable","name":"data","nameLocation":"4187:4:6","nodeType":"VariableDeclaration","scope":761,"src":"4174:17:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":745,"name":"bytes","nodeType":"ElementaryTypeName","src":"4174:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":748,"mutability":"mutable","name":"errorMessage","nameLocation":"4215:12:6","nodeType":"VariableDeclaration","scope":761,"src":"4201:26:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":747,"name":"string","nodeType":"ElementaryTypeName","src":"4201:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"4140:93:6"},"returnParameters":{"id":752,"nodeType":"ParameterList","parameters":[{"constant":false,"id":751,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":761,"src":"4252:12:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":750,"name":"bytes","nodeType":"ElementaryTypeName","src":"4252:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4251:14:6"},"scope":1001,"src":"4119:223:6","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":780,"nodeType":"Block","src":"4817:111:6","statements":[{"expression":{"arguments":[{"id":774,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":764,"src":"4856:6:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":775,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":766,"src":"4864:4:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":776,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":768,"src":"4870:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"416464726573733a206c6f772d6c6576656c2063616c6c20776974682076616c7565206661696c6564","id":777,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4877:43:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_88a4a0b5e975840320a0475d4027005235904fdb5ece94df156f3d717cb2dbfc","typeString":"literal_string \"Address: low-level call with value failed\""},"value":"Address: low-level call with value failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_88a4a0b5e975840320a0475d4027005235904fdb5ece94df156f3d717cb2dbfc","typeString":"literal_string \"Address: low-level call with value failed\""}],"id":773,"name":"functionCallWithValue","nodeType":"Identifier","overloadedDeclarations":[781,825],"referencedDeclaration":825,"src":"4834:21:6","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,uint256,string memory) returns (bytes memory)"}},"id":778,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4834:87:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":772,"id":779,"nodeType":"Return","src":"4827:94:6"}]},"documentation":{"id":762,"nodeType":"StructuredDocumentation","src":"4348:351:6","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but also transferring `value` wei to `target`.\n Requirements:\n - the calling contract must have an ETH balance of at least `value`.\n - the called Solidity function must be `payable`.\n _Available since v3.1._"},"id":781,"implemented":true,"kind":"function","modifiers":[],"name":"functionCallWithValue","nameLocation":"4713:21:6","nodeType":"FunctionDefinition","parameters":{"id":769,"nodeType":"ParameterList","parameters":[{"constant":false,"id":764,"mutability":"mutable","name":"target","nameLocation":"4743:6:6","nodeType":"VariableDeclaration","scope":781,"src":"4735:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":763,"name":"address","nodeType":"ElementaryTypeName","src":"4735:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":766,"mutability":"mutable","name":"data","nameLocation":"4764:4:6","nodeType":"VariableDeclaration","scope":781,"src":"4751:17:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":765,"name":"bytes","nodeType":"ElementaryTypeName","src":"4751:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":768,"mutability":"mutable","name":"value","nameLocation":"4778:5:6","nodeType":"VariableDeclaration","scope":781,"src":"4770:13:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":767,"name":"uint256","nodeType":"ElementaryTypeName","src":"4770:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4734:50:6"},"returnParameters":{"id":772,"nodeType":"ParameterList","parameters":[{"constant":false,"id":771,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":781,"src":"4803:12:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":770,"name":"bytes","nodeType":"ElementaryTypeName","src":"4803:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4802:14:6"},"scope":1001,"src":"4704:224:6","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":824,"nodeType":"Block","src":"5355:267:6","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":802,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":798,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967268,"src":"5381:4:6","typeDescriptions":{"typeIdentifier":"t_contract$_AddressUpgradeable_$1001","typeString":"library AddressUpgradeable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_AddressUpgradeable_$1001","typeString":"library AddressUpgradeable"}],"id":797,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5373:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":796,"name":"address","nodeType":"ElementaryTypeName","src":"5373:7:6","typeDescriptions":{}}},"id":799,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5373:13:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":800,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5387:7:6","memberName":"balance","nodeType":"MemberAccess","src":"5373:21:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":801,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":788,"src":"5398:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5373:30:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c","id":803,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5405:40:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c","typeString":"literal_string \"Address: insufficient balance for call\""},"value":"Address: insufficient balance for call"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c","typeString":"literal_string \"Address: insufficient balance for call\""}],"id":795,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"5365:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":804,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5365:81:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":805,"nodeType":"ExpressionStatement","src":"5365:81:6"},{"assignments":[807,809],"declarations":[{"constant":false,"id":807,"mutability":"mutable","name":"success","nameLocation":"5462:7:6","nodeType":"VariableDeclaration","scope":824,"src":"5457:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":806,"name":"bool","nodeType":"ElementaryTypeName","src":"5457:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":809,"mutability":"mutable","name":"returndata","nameLocation":"5484:10:6","nodeType":"VariableDeclaration","scope":824,"src":"5471:23:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":808,"name":"bytes","nodeType":"ElementaryTypeName","src":"5471:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":816,"initialValue":{"arguments":[{"id":814,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":786,"src":"5524:4:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":810,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":784,"src":"5498:6:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":811,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5505:4:6","memberName":"call","nodeType":"MemberAccess","src":"5498:11:6","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":813,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":812,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":788,"src":"5517:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"5498:25:6","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":815,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5498:31:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"5456:73:6"},{"expression":{"arguments":[{"id":818,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":784,"src":"5573:6:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":819,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":807,"src":"5581:7:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":820,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":809,"src":"5590:10:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":821,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":790,"src":"5602:12:6","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":817,"name":"verifyCallResultFromTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":956,"src":"5546:26:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bool,bytes memory,string memory) view returns (bytes memory)"}},"id":822,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5546:69:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":794,"id":823,"nodeType":"Return","src":"5539:76:6"}]},"documentation":{"id":782,"nodeType":"StructuredDocumentation","src":"4934:237:6","text":" @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n with `errorMessage` as a fallback revert reason when `target` reverts.\n _Available since v3.1._"},"id":825,"implemented":true,"kind":"function","modifiers":[],"name":"functionCallWithValue","nameLocation":"5185:21:6","nodeType":"FunctionDefinition","parameters":{"id":791,"nodeType":"ParameterList","parameters":[{"constant":false,"id":784,"mutability":"mutable","name":"target","nameLocation":"5224:6:6","nodeType":"VariableDeclaration","scope":825,"src":"5216:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":783,"name":"address","nodeType":"ElementaryTypeName","src":"5216:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":786,"mutability":"mutable","name":"data","nameLocation":"5253:4:6","nodeType":"VariableDeclaration","scope":825,"src":"5240:17:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":785,"name":"bytes","nodeType":"ElementaryTypeName","src":"5240:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":788,"mutability":"mutable","name":"value","nameLocation":"5275:5:6","nodeType":"VariableDeclaration","scope":825,"src":"5267:13:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":787,"name":"uint256","nodeType":"ElementaryTypeName","src":"5267:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":790,"mutability":"mutable","name":"errorMessage","nameLocation":"5304:12:6","nodeType":"VariableDeclaration","scope":825,"src":"5290:26:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":789,"name":"string","nodeType":"ElementaryTypeName","src":"5290:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"5206:116:6"},"returnParameters":{"id":794,"nodeType":"ParameterList","parameters":[{"constant":false,"id":793,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":825,"src":"5341:12:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":792,"name":"bytes","nodeType":"ElementaryTypeName","src":"5341:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5340:14:6"},"scope":1001,"src":"5176:446:6","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":841,"nodeType":"Block","src":"5899:97:6","statements":[{"expression":{"arguments":[{"id":836,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":828,"src":"5935:6:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":837,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":830,"src":"5943:4:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"416464726573733a206c6f772d6c6576656c207374617469632063616c6c206661696c6564","id":838,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5949:39:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_90ec82aa826a536a4cbfae44ecfa384680faa9a4b77344bce96aa761ad904df0","typeString":"literal_string \"Address: low-level static call failed\""},"value":"Address: low-level static call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_90ec82aa826a536a4cbfae44ecfa384680faa9a4b77344bce96aa761ad904df0","typeString":"literal_string \"Address: low-level static call failed\""}],"id":835,"name":"functionStaticCall","nodeType":"Identifier","overloadedDeclarations":[842,871],"referencedDeclaration":871,"src":"5916:18:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,string memory) view returns (bytes memory)"}},"id":839,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5916:73:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":834,"id":840,"nodeType":"Return","src":"5909:80:6"}]},"documentation":{"id":826,"nodeType":"StructuredDocumentation","src":"5628:166:6","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a static call.\n _Available since v3.3._"},"id":842,"implemented":true,"kind":"function","modifiers":[],"name":"functionStaticCall","nameLocation":"5808:18:6","nodeType":"FunctionDefinition","parameters":{"id":831,"nodeType":"ParameterList","parameters":[{"constant":false,"id":828,"mutability":"mutable","name":"target","nameLocation":"5835:6:6","nodeType":"VariableDeclaration","scope":842,"src":"5827:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":827,"name":"address","nodeType":"ElementaryTypeName","src":"5827:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":830,"mutability":"mutable","name":"data","nameLocation":"5856:4:6","nodeType":"VariableDeclaration","scope":842,"src":"5843:17:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":829,"name":"bytes","nodeType":"ElementaryTypeName","src":"5843:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5826:35:6"},"returnParameters":{"id":834,"nodeType":"ParameterList","parameters":[{"constant":false,"id":833,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":842,"src":"5885:12:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":832,"name":"bytes","nodeType":"ElementaryTypeName","src":"5885:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5884:14:6"},"scope":1001,"src":"5799:197:6","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":870,"nodeType":"Block","src":"6338:168:6","statements":[{"assignments":[855,857],"declarations":[{"constant":false,"id":855,"mutability":"mutable","name":"success","nameLocation":"6354:7:6","nodeType":"VariableDeclaration","scope":870,"src":"6349:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":854,"name":"bool","nodeType":"ElementaryTypeName","src":"6349:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":857,"mutability":"mutable","name":"returndata","nameLocation":"6376:10:6","nodeType":"VariableDeclaration","scope":870,"src":"6363:23:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":856,"name":"bytes","nodeType":"ElementaryTypeName","src":"6363:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":862,"initialValue":{"arguments":[{"id":860,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":847,"src":"6408:4:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":858,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":845,"src":"6390:6:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":859,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6397:10:6","memberName":"staticcall","nodeType":"MemberAccess","src":"6390:17:6","typeDescriptions":{"typeIdentifier":"t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) view returns (bool,bytes memory)"}},"id":861,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6390:23:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"6348:65:6"},{"expression":{"arguments":[{"id":864,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":845,"src":"6457:6:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":865,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":855,"src":"6465:7:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":866,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":857,"src":"6474:10:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":867,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":849,"src":"6486:12:6","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":863,"name":"verifyCallResultFromTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":956,"src":"6430:26:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bool,bytes memory,string memory) view returns (bytes memory)"}},"id":868,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6430:69:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":853,"id":869,"nodeType":"Return","src":"6423:76:6"}]},"documentation":{"id":843,"nodeType":"StructuredDocumentation","src":"6002:173:6","text":" @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n but performing a static call.\n _Available since v3.3._"},"id":871,"implemented":true,"kind":"function","modifiers":[],"name":"functionStaticCall","nameLocation":"6189:18:6","nodeType":"FunctionDefinition","parameters":{"id":850,"nodeType":"ParameterList","parameters":[{"constant":false,"id":845,"mutability":"mutable","name":"target","nameLocation":"6225:6:6","nodeType":"VariableDeclaration","scope":871,"src":"6217:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":844,"name":"address","nodeType":"ElementaryTypeName","src":"6217:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":847,"mutability":"mutable","name":"data","nameLocation":"6254:4:6","nodeType":"VariableDeclaration","scope":871,"src":"6241:17:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":846,"name":"bytes","nodeType":"ElementaryTypeName","src":"6241:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":849,"mutability":"mutable","name":"errorMessage","nameLocation":"6282:12:6","nodeType":"VariableDeclaration","scope":871,"src":"6268:26:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":848,"name":"string","nodeType":"ElementaryTypeName","src":"6268:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"6207:93:6"},"returnParameters":{"id":853,"nodeType":"ParameterList","parameters":[{"constant":false,"id":852,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":871,"src":"6324:12:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":851,"name":"bytes","nodeType":"ElementaryTypeName","src":"6324:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6323:14:6"},"scope":1001,"src":"6180:326:6","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":887,"nodeType":"Block","src":"6782:101:6","statements":[{"expression":{"arguments":[{"id":882,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":874,"src":"6820:6:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":883,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":876,"src":"6828:4:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564","id":884,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6834:41:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_9fdcd12e4b726339b32a442b0a448365d5d85c96b2d2cff917b4f66c63110398","typeString":"literal_string \"Address: low-level delegate call failed\""},"value":"Address: low-level delegate call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_9fdcd12e4b726339b32a442b0a448365d5d85c96b2d2cff917b4f66c63110398","typeString":"literal_string \"Address: low-level delegate call failed\""}],"id":881,"name":"functionDelegateCall","nodeType":"Identifier","overloadedDeclarations":[888,917],"referencedDeclaration":917,"src":"6799:20:6","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,string memory) returns (bytes memory)"}},"id":885,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6799:77:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":880,"id":886,"nodeType":"Return","src":"6792:84:6"}]},"documentation":{"id":872,"nodeType":"StructuredDocumentation","src":"6512:168:6","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a delegate call.\n _Available since v3.4._"},"id":888,"implemented":true,"kind":"function","modifiers":[],"name":"functionDelegateCall","nameLocation":"6694:20:6","nodeType":"FunctionDefinition","parameters":{"id":877,"nodeType":"ParameterList","parameters":[{"constant":false,"id":874,"mutability":"mutable","name":"target","nameLocation":"6723:6:6","nodeType":"VariableDeclaration","scope":888,"src":"6715:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":873,"name":"address","nodeType":"ElementaryTypeName","src":"6715:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":876,"mutability":"mutable","name":"data","nameLocation":"6744:4:6","nodeType":"VariableDeclaration","scope":888,"src":"6731:17:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":875,"name":"bytes","nodeType":"ElementaryTypeName","src":"6731:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6714:35:6"},"returnParameters":{"id":880,"nodeType":"ParameterList","parameters":[{"constant":false,"id":879,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":888,"src":"6768:12:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":878,"name":"bytes","nodeType":"ElementaryTypeName","src":"6768:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6767:14:6"},"scope":1001,"src":"6685:198:6","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":916,"nodeType":"Block","src":"7224:170:6","statements":[{"assignments":[901,903],"declarations":[{"constant":false,"id":901,"mutability":"mutable","name":"success","nameLocation":"7240:7:6","nodeType":"VariableDeclaration","scope":916,"src":"7235:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":900,"name":"bool","nodeType":"ElementaryTypeName","src":"7235:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":903,"mutability":"mutable","name":"returndata","nameLocation":"7262:10:6","nodeType":"VariableDeclaration","scope":916,"src":"7249:23:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":902,"name":"bytes","nodeType":"ElementaryTypeName","src":"7249:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":908,"initialValue":{"arguments":[{"id":906,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":893,"src":"7296:4:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":904,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":891,"src":"7276:6:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":905,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7283:12:6","memberName":"delegatecall","nodeType":"MemberAccess","src":"7276:19:6","typeDescriptions":{"typeIdentifier":"t_function_baredelegatecall_nonpayable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) returns (bool,bytes memory)"}},"id":907,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7276:25:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"7234:67:6"},{"expression":{"arguments":[{"id":910,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":891,"src":"7345:6:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":911,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":901,"src":"7353:7:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":912,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":903,"src":"7362:10:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":913,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":895,"src":"7374:12:6","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":909,"name":"verifyCallResultFromTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":956,"src":"7318:26:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bool,bytes memory,string memory) view returns (bytes memory)"}},"id":914,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7318:69:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":899,"id":915,"nodeType":"Return","src":"7311:76:6"}]},"documentation":{"id":889,"nodeType":"StructuredDocumentation","src":"6889:175:6","text":" @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n but performing a delegate call.\n _Available since v3.4._"},"id":917,"implemented":true,"kind":"function","modifiers":[],"name":"functionDelegateCall","nameLocation":"7078:20:6","nodeType":"FunctionDefinition","parameters":{"id":896,"nodeType":"ParameterList","parameters":[{"constant":false,"id":891,"mutability":"mutable","name":"target","nameLocation":"7116:6:6","nodeType":"VariableDeclaration","scope":917,"src":"7108:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":890,"name":"address","nodeType":"ElementaryTypeName","src":"7108:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":893,"mutability":"mutable","name":"data","nameLocation":"7145:4:6","nodeType":"VariableDeclaration","scope":917,"src":"7132:17:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":892,"name":"bytes","nodeType":"ElementaryTypeName","src":"7132:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":895,"mutability":"mutable","name":"errorMessage","nameLocation":"7173:12:6","nodeType":"VariableDeclaration","scope":917,"src":"7159:26:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":894,"name":"string","nodeType":"ElementaryTypeName","src":"7159:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"7098:93:6"},"returnParameters":{"id":899,"nodeType":"ParameterList","parameters":[{"constant":false,"id":898,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":917,"src":"7210:12:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":897,"name":"bytes","nodeType":"ElementaryTypeName","src":"7210:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7209:14:6"},"scope":1001,"src":"7069:325:6","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":955,"nodeType":"Block","src":"7876:434:6","statements":[{"condition":{"id":931,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":922,"src":"7890:7:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":953,"nodeType":"Block","src":"8246:58:6","statements":[{"expression":{"arguments":[{"id":949,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":924,"src":"8268:10:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":950,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":926,"src":"8280:12:6","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":948,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1000,"src":"8260:7:6","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (bytes memory,string memory) pure"}},"id":951,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8260:33:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":952,"nodeType":"ExpressionStatement","src":"8260:33:6"}]},"id":954,"nodeType":"IfStatement","src":"7886:418:6","trueBody":{"id":947,"nodeType":"Block","src":"7899:341:6","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":935,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":932,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":924,"src":"7917:10:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":933,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7928:6:6","memberName":"length","nodeType":"MemberAccess","src":"7917:17:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":934,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7938:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7917:22:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":944,"nodeType":"IfStatement","src":"7913:286:6","trueBody":{"id":943,"nodeType":"Block","src":"7941:258:6","statements":[{"expression":{"arguments":[{"arguments":[{"id":938,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":920,"src":"8143:6:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":937,"name":"isContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":689,"src":"8132:10:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":939,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8132:18:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374","id":940,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8152:31:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad","typeString":"literal_string \"Address: call to non-contract\""},"value":"Address: call to non-contract"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad","typeString":"literal_string \"Address: call to non-contract\""}],"id":936,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"8124:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":941,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8124:60:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":942,"nodeType":"ExpressionStatement","src":"8124:60:6"}]}},{"expression":{"id":945,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":924,"src":"8219:10:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":930,"id":946,"nodeType":"Return","src":"8212:17:6"}]}}]},"documentation":{"id":918,"nodeType":"StructuredDocumentation","src":"7400:277:6","text":" @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\n the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\n _Available since v4.8._"},"id":956,"implemented":true,"kind":"function","modifiers":[],"name":"verifyCallResultFromTarget","nameLocation":"7691:26:6","nodeType":"FunctionDefinition","parameters":{"id":927,"nodeType":"ParameterList","parameters":[{"constant":false,"id":920,"mutability":"mutable","name":"target","nameLocation":"7735:6:6","nodeType":"VariableDeclaration","scope":956,"src":"7727:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":919,"name":"address","nodeType":"ElementaryTypeName","src":"7727:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":922,"mutability":"mutable","name":"success","nameLocation":"7756:7:6","nodeType":"VariableDeclaration","scope":956,"src":"7751:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":921,"name":"bool","nodeType":"ElementaryTypeName","src":"7751:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":924,"mutability":"mutable","name":"returndata","nameLocation":"7786:10:6","nodeType":"VariableDeclaration","scope":956,"src":"7773:23:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":923,"name":"bytes","nodeType":"ElementaryTypeName","src":"7773:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":926,"mutability":"mutable","name":"errorMessage","nameLocation":"7820:12:6","nodeType":"VariableDeclaration","scope":956,"src":"7806:26:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":925,"name":"string","nodeType":"ElementaryTypeName","src":"7806:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"7717:121:6"},"returnParameters":{"id":930,"nodeType":"ParameterList","parameters":[{"constant":false,"id":929,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":956,"src":"7862:12:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":928,"name":"bytes","nodeType":"ElementaryTypeName","src":"7862:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7861:14:6"},"scope":1001,"src":"7682:628:6","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":979,"nodeType":"Block","src":"8691:135:6","statements":[{"condition":{"id":968,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":959,"src":"8705:7:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":977,"nodeType":"Block","src":"8762:58:6","statements":[{"expression":{"arguments":[{"id":973,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":961,"src":"8784:10:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":974,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":963,"src":"8796:12:6","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":972,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1000,"src":"8776:7:6","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (bytes memory,string memory) pure"}},"id":975,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8776:33:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":976,"nodeType":"ExpressionStatement","src":"8776:33:6"}]},"id":978,"nodeType":"IfStatement","src":"8701:119:6","trueBody":{"id":971,"nodeType":"Block","src":"8714:42:6","statements":[{"expression":{"id":969,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":961,"src":"8735:10:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":967,"id":970,"nodeType":"Return","src":"8728:17:6"}]}}]},"documentation":{"id":957,"nodeType":"StructuredDocumentation","src":"8316:210:6","text":" @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\n revert reason or using the provided one.\n _Available since v4.3._"},"id":980,"implemented":true,"kind":"function","modifiers":[],"name":"verifyCallResult","nameLocation":"8540:16:6","nodeType":"FunctionDefinition","parameters":{"id":964,"nodeType":"ParameterList","parameters":[{"constant":false,"id":959,"mutability":"mutable","name":"success","nameLocation":"8571:7:6","nodeType":"VariableDeclaration","scope":980,"src":"8566:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":958,"name":"bool","nodeType":"ElementaryTypeName","src":"8566:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":961,"mutability":"mutable","name":"returndata","nameLocation":"8601:10:6","nodeType":"VariableDeclaration","scope":980,"src":"8588:23:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":960,"name":"bytes","nodeType":"ElementaryTypeName","src":"8588:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":963,"mutability":"mutable","name":"errorMessage","nameLocation":"8635:12:6","nodeType":"VariableDeclaration","scope":980,"src":"8621:26:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":962,"name":"string","nodeType":"ElementaryTypeName","src":"8621:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"8556:97:6"},"returnParameters":{"id":967,"nodeType":"ParameterList","parameters":[{"constant":false,"id":966,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":980,"src":"8677:12:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":965,"name":"bytes","nodeType":"ElementaryTypeName","src":"8677:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"8676:14:6"},"scope":1001,"src":"8531:295:6","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":999,"nodeType":"Block","src":"8915:457:6","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":990,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":987,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":982,"src":"8991:10:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":988,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9002:6:6","memberName":"length","nodeType":"MemberAccess","src":"8991:17:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":989,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9011:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8991:21:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":997,"nodeType":"Block","src":"9321:45:6","statements":[{"expression":{"arguments":[{"id":994,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":984,"src":"9342:12:6","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":993,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[4294967277,4294967277],"referencedDeclaration":4294967277,"src":"9335:6:6","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":995,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9335:20:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":996,"nodeType":"ExpressionStatement","src":"9335:20:6"}]},"id":998,"nodeType":"IfStatement","src":"8987:379:6","trueBody":{"id":992,"nodeType":"Block","src":"9014:301:6","statements":[{"AST":{"nodeType":"YulBlock","src":"9172:133:6","statements":[{"nodeType":"YulVariableDeclaration","src":"9190:40:6","value":{"arguments":[{"name":"returndata","nodeType":"YulIdentifier","src":"9219:10:6"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"9213:5:6"},"nodeType":"YulFunctionCall","src":"9213:17:6"},"variables":[{"name":"returndata_size","nodeType":"YulTypedName","src":"9194:15:6","type":""}]},{"expression":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9258:2:6","type":"","value":"32"},{"name":"returndata","nodeType":"YulIdentifier","src":"9262:10:6"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9254:3:6"},"nodeType":"YulFunctionCall","src":"9254:19:6"},{"name":"returndata_size","nodeType":"YulIdentifier","src":"9275:15:6"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9247:6:6"},"nodeType":"YulFunctionCall","src":"9247:44:6"},"nodeType":"YulExpressionStatement","src":"9247:44:6"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"london","externalReferences":[{"declaration":982,"isOffset":false,"isSlot":false,"src":"9219:10:6","valueSize":1},{"declaration":982,"isOffset":false,"isSlot":false,"src":"9262:10:6","valueSize":1}],"id":991,"nodeType":"InlineAssembly","src":"9163:142:6"}]}}]},"id":1000,"implemented":true,"kind":"function","modifiers":[],"name":"_revert","nameLocation":"8841:7:6","nodeType":"FunctionDefinition","parameters":{"id":985,"nodeType":"ParameterList","parameters":[{"constant":false,"id":982,"mutability":"mutable","name":"returndata","nameLocation":"8862:10:6","nodeType":"VariableDeclaration","scope":1000,"src":"8849:23:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":981,"name":"bytes","nodeType":"ElementaryTypeName","src":"8849:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":984,"mutability":"mutable","name":"errorMessage","nameLocation":"8888:12:6","nodeType":"VariableDeclaration","scope":1000,"src":"8874:26:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":983,"name":"string","nodeType":"ElementaryTypeName","src":"8874:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"8848:53:6"},"returnParameters":{"id":986,"nodeType":"ParameterList","parameters":[],"src":"8915:0:6"},"scope":1001,"src":"8832:540:6","stateMutability":"pure","virtual":false,"visibility":"private"}],"scope":1002,"src":"194:9180:6","usedErrors":[]}],"src":"101:9274:6"},"id":6},"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol","exportedSymbols":{"ContextUpgradeable":[1052],"Initializable":[534]},"id":1053,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1003,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"101:23:7"},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","file":"../proxy/utils/Initializable.sol","id":1005,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1053,"sourceUnit":535,"src":"125:63:7","symbolAliases":[{"foreign":{"id":1004,"name":"Initializable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":534,"src":"133:13:7","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":1007,"name":"Initializable","nameLocations":["727:13:7"],"nodeType":"IdentifierPath","referencedDeclaration":534,"src":"727:13:7"},"id":1008,"nodeType":"InheritanceSpecifier","src":"727:13:7"}],"canonicalName":"ContextUpgradeable","contractDependencies":[],"contractKind":"contract","documentation":{"id":1006,"nodeType":"StructuredDocumentation","src":"190:496:7","text":" @dev Provides information about the current execution context, including the\n sender of the transaction and its data. While these are generally available\n via msg.sender and msg.data, they should not be accessed in such a direct\n manner, since when dealing with meta-transactions the account sending and\n paying for execution may not be the actual sender (as far as an application\n is concerned).\n This contract is only required for intermediate, library-like contracts."},"fullyImplemented":true,"id":1052,"linearizedBaseContracts":[1052,534],"name":"ContextUpgradeable","nameLocation":"705:18:7","nodeType":"ContractDefinition","nodes":[{"body":{"id":1013,"nodeType":"Block","src":"799:7:7","statements":[]},"id":1014,"implemented":true,"kind":"function","modifiers":[{"id":1011,"kind":"modifierInvocation","modifierName":{"id":1010,"name":"onlyInitializing","nameLocations":["782:16:7"],"nodeType":"IdentifierPath","referencedDeclaration":479,"src":"782:16:7"},"nodeType":"ModifierInvocation","src":"782:16:7"}],"name":"__Context_init","nameLocation":"756:14:7","nodeType":"FunctionDefinition","parameters":{"id":1009,"nodeType":"ParameterList","parameters":[],"src":"770:2:7"},"returnParameters":{"id":1012,"nodeType":"ParameterList","parameters":[],"src":"799:0:7"},"scope":1052,"src":"747:59:7","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1019,"nodeType":"Block","src":"874:7:7","statements":[]},"id":1020,"implemented":true,"kind":"function","modifiers":[{"id":1017,"kind":"modifierInvocation","modifierName":{"id":1016,"name":"onlyInitializing","nameLocations":["857:16:7"],"nodeType":"IdentifierPath","referencedDeclaration":479,"src":"857:16:7"},"nodeType":"ModifierInvocation","src":"857:16:7"}],"name":"__Context_init_unchained","nameLocation":"821:24:7","nodeType":"FunctionDefinition","parameters":{"id":1015,"nodeType":"ParameterList","parameters":[],"src":"845:2:7"},"returnParameters":{"id":1018,"nodeType":"ParameterList","parameters":[],"src":"874:0:7"},"scope":1052,"src":"812:69:7","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1028,"nodeType":"Block","src":"948:34:7","statements":[{"expression":{"expression":{"id":1025,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967281,"src":"965:3:7","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1026,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"969:6:7","memberName":"sender","nodeType":"MemberAccess","src":"965:10:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1024,"id":1027,"nodeType":"Return","src":"958:17:7"}]},"id":1029,"implemented":true,"kind":"function","modifiers":[],"name":"_msgSender","nameLocation":"895:10:7","nodeType":"FunctionDefinition","parameters":{"id":1021,"nodeType":"ParameterList","parameters":[],"src":"905:2:7"},"returnParameters":{"id":1024,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1023,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1029,"src":"939:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1022,"name":"address","nodeType":"ElementaryTypeName","src":"939:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"938:9:7"},"scope":1052,"src":"886:96:7","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":1037,"nodeType":"Block","src":"1055:32:7","statements":[{"expression":{"expression":{"id":1034,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967281,"src":"1072:3:7","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1035,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1076:4:7","memberName":"data","nodeType":"MemberAccess","src":"1072:8:7","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"functionReturnParameters":1033,"id":1036,"nodeType":"Return","src":"1065:15:7"}]},"id":1038,"implemented":true,"kind":"function","modifiers":[],"name":"_msgData","nameLocation":"997:8:7","nodeType":"FunctionDefinition","parameters":{"id":1030,"nodeType":"ParameterList","parameters":[],"src":"1005:2:7"},"returnParameters":{"id":1033,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1032,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1038,"src":"1039:14:7","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1031,"name":"bytes","nodeType":"ElementaryTypeName","src":"1039:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1038:16:7"},"scope":1052,"src":"988:99:7","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":1045,"nodeType":"Block","src":"1165:25:7","statements":[{"expression":{"hexValue":"30","id":1043,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1182:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":1042,"id":1044,"nodeType":"Return","src":"1175:8:7"}]},"id":1046,"implemented":true,"kind":"function","modifiers":[],"name":"_contextSuffixLength","nameLocation":"1102:20:7","nodeType":"FunctionDefinition","parameters":{"id":1039,"nodeType":"ParameterList","parameters":[],"src":"1122:2:7"},"returnParameters":{"id":1042,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1041,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1046,"src":"1156:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1040,"name":"uint256","nodeType":"ElementaryTypeName","src":"1156:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1155:9:7"},"scope":1052,"src":"1093:97:7","stateMutability":"view","virtual":true,"visibility":"internal"},{"constant":false,"documentation":{"id":1047,"nodeType":"StructuredDocumentation","src":"1196:254:7","text":" @dev This empty reserved space is put in place to allow future versions to add new\n variables without shifting down storage in the inheritance chain.\n See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"},"id":1051,"mutability":"mutable","name":"__gap","nameLocation":"1475:5:7","nodeType":"VariableDeclaration","scope":1052,"src":"1455:25:7","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$50_storage","typeString":"uint256[50]"},"typeName":{"baseType":{"id":1048,"name":"uint256","nodeType":"ElementaryTypeName","src":"1455:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1050,"length":{"hexValue":"3530","id":1049,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1463:2:7","typeDescriptions":{"typeIdentifier":"t_rational_50_by_1","typeString":"int_const 50"},"value":"50"},"nodeType":"ArrayTypeName","src":"1455:11:7","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$50_storage_ptr","typeString":"uint256[50]"}},"visibility":"private"}],"scope":1053,"src":"687:796:7","usedErrors":[]}],"src":"101:1383:7"},"id":7},"@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol","exportedSymbols":{"CountersUpgradeable":[1126]},"id":1127,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1054,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"87:23:8"},{"abstract":false,"baseContracts":[],"canonicalName":"CountersUpgradeable","contractDependencies":[],"contractKind":"library","documentation":{"id":1055,"nodeType":"StructuredDocumentation","src":"112:311:8","text":" @title Counters\n @author Matt Condon (@shrugs)\n @dev Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number\n of elements in a mapping, issuing ERC721 ids, or counting request ids.\n Include with `using Counters for Counters.Counter;`"},"fullyImplemented":true,"id":1126,"linearizedBaseContracts":[1126],"name":"CountersUpgradeable","nameLocation":"432:19:8","nodeType":"ContractDefinition","nodes":[{"canonicalName":"CountersUpgradeable.Counter","id":1058,"members":[{"constant":false,"id":1057,"mutability":"mutable","name":"_value","nameLocation":"805:6:8","nodeType":"VariableDeclaration","scope":1058,"src":"797:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1056,"name":"uint256","nodeType":"ElementaryTypeName","src":"797:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"Counter","nameLocation":"465:7:8","nodeType":"StructDefinition","scope":1126,"src":"458:374:8","visibility":"public"},{"body":{"id":1069,"nodeType":"Block","src":"912:38:8","statements":[{"expression":{"expression":{"id":1066,"name":"counter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1061,"src":"929:7:8","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$1058_storage_ptr","typeString":"struct CountersUpgradeable.Counter storage pointer"}},"id":1067,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"937:6:8","memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":1057,"src":"929:14:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1065,"id":1068,"nodeType":"Return","src":"922:21:8"}]},"id":1070,"implemented":true,"kind":"function","modifiers":[],"name":"current","nameLocation":"847:7:8","nodeType":"FunctionDefinition","parameters":{"id":1062,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1061,"mutability":"mutable","name":"counter","nameLocation":"871:7:8","nodeType":"VariableDeclaration","scope":1070,"src":"855:23:8","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$1058_storage_ptr","typeString":"struct CountersUpgradeable.Counter"},"typeName":{"id":1060,"nodeType":"UserDefinedTypeName","pathNode":{"id":1059,"name":"Counter","nameLocations":["855:7:8"],"nodeType":"IdentifierPath","referencedDeclaration":1058,"src":"855:7:8"},"referencedDeclaration":1058,"src":"855:7:8","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$1058_storage_ptr","typeString":"struct CountersUpgradeable.Counter"}},"visibility":"internal"}],"src":"854:25:8"},"returnParameters":{"id":1065,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1064,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1070,"src":"903:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1063,"name":"uint256","nodeType":"ElementaryTypeName","src":"903:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"902:9:8"},"scope":1126,"src":"838:112:8","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":1083,"nodeType":"Block","src":"1009:70:8","statements":[{"id":1082,"nodeType":"UncheckedBlock","src":"1019:54:8","statements":[{"expression":{"id":1080,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":1076,"name":"counter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1073,"src":"1043:7:8","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$1058_storage_ptr","typeString":"struct CountersUpgradeable.Counter storage pointer"}},"id":1078,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1051:6:8","memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":1057,"src":"1043:14:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":1079,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1061:1:8","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1043:19:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1081,"nodeType":"ExpressionStatement","src":"1043:19:8"}]}]},"id":1084,"implemented":true,"kind":"function","modifiers":[],"name":"increment","nameLocation":"965:9:8","nodeType":"FunctionDefinition","parameters":{"id":1074,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1073,"mutability":"mutable","name":"counter","nameLocation":"991:7:8","nodeType":"VariableDeclaration","scope":1084,"src":"975:23:8","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$1058_storage_ptr","typeString":"struct CountersUpgradeable.Counter"},"typeName":{"id":1072,"nodeType":"UserDefinedTypeName","pathNode":{"id":1071,"name":"Counter","nameLocations":["975:7:8"],"nodeType":"IdentifierPath","referencedDeclaration":1058,"src":"975:7:8"},"referencedDeclaration":1058,"src":"975:7:8","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$1058_storage_ptr","typeString":"struct CountersUpgradeable.Counter"}},"visibility":"internal"}],"src":"974:25:8"},"returnParameters":{"id":1075,"nodeType":"ParameterList","parameters":[],"src":"1009:0:8"},"scope":1126,"src":"956:123:8","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1111,"nodeType":"Block","src":"1138:176:8","statements":[{"assignments":[1091],"declarations":[{"constant":false,"id":1091,"mutability":"mutable","name":"value","nameLocation":"1156:5:8","nodeType":"VariableDeclaration","scope":1111,"src":"1148:13:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1090,"name":"uint256","nodeType":"ElementaryTypeName","src":"1148:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1094,"initialValue":{"expression":{"id":1092,"name":"counter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1087,"src":"1164:7:8","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$1058_storage_ptr","typeString":"struct CountersUpgradeable.Counter storage pointer"}},"id":1093,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1172:6:8","memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":1057,"src":"1164:14:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1148:30:8"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1098,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1096,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1091,"src":"1196:5:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1097,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1204:1:8","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1196:9:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"436f756e7465723a2064656372656d656e74206f766572666c6f77","id":1099,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1207:29:8","typeDescriptions":{"typeIdentifier":"t_stringliteral_1dfd0d5389474d871b8e8929aab9d4def041f55f90f625754fb5f9a9ba08af6f","typeString":"literal_string \"Counter: decrement overflow\""},"value":"Counter: decrement overflow"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_1dfd0d5389474d871b8e8929aab9d4def041f55f90f625754fb5f9a9ba08af6f","typeString":"literal_string \"Counter: decrement overflow\""}],"id":1095,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"1188:7:8","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1100,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1188:49:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1101,"nodeType":"ExpressionStatement","src":"1188:49:8"},{"id":1110,"nodeType":"UncheckedBlock","src":"1247:61:8","statements":[{"expression":{"id":1108,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":1102,"name":"counter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1087,"src":"1271:7:8","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$1058_storage_ptr","typeString":"struct CountersUpgradeable.Counter storage pointer"}},"id":1104,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1279:6:8","memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":1057,"src":"1271:14:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1107,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1105,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1091,"src":"1288:5:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":1106,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1296:1:8","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1288:9:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1271:26:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1109,"nodeType":"ExpressionStatement","src":"1271:26:8"}]}]},"id":1112,"implemented":true,"kind":"function","modifiers":[],"name":"decrement","nameLocation":"1094:9:8","nodeType":"FunctionDefinition","parameters":{"id":1088,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1087,"mutability":"mutable","name":"counter","nameLocation":"1120:7:8","nodeType":"VariableDeclaration","scope":1112,"src":"1104:23:8","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$1058_storage_ptr","typeString":"struct CountersUpgradeable.Counter"},"typeName":{"id":1086,"nodeType":"UserDefinedTypeName","pathNode":{"id":1085,"name":"Counter","nameLocations":["1104:7:8"],"nodeType":"IdentifierPath","referencedDeclaration":1058,"src":"1104:7:8"},"referencedDeclaration":1058,"src":"1104:7:8","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$1058_storage_ptr","typeString":"struct CountersUpgradeable.Counter"}},"visibility":"internal"}],"src":"1103:25:8"},"returnParameters":{"id":1089,"nodeType":"ParameterList","parameters":[],"src":"1138:0:8"},"scope":1126,"src":"1085:229:8","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1124,"nodeType":"Block","src":"1369:35:8","statements":[{"expression":{"id":1122,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":1118,"name":"counter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1115,"src":"1379:7:8","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$1058_storage_ptr","typeString":"struct CountersUpgradeable.Counter storage pointer"}},"id":1120,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1387:6:8","memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":1057,"src":"1379:14:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":1121,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1396:1:8","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1379:18:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1123,"nodeType":"ExpressionStatement","src":"1379:18:8"}]},"id":1125,"implemented":true,"kind":"function","modifiers":[],"name":"reset","nameLocation":"1329:5:8","nodeType":"FunctionDefinition","parameters":{"id":1116,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1115,"mutability":"mutable","name":"counter","nameLocation":"1351:7:8","nodeType":"VariableDeclaration","scope":1125,"src":"1335:23:8","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$1058_storage_ptr","typeString":"struct CountersUpgradeable.Counter"},"typeName":{"id":1114,"nodeType":"UserDefinedTypeName","pathNode":{"id":1113,"name":"Counter","nameLocations":["1335:7:8"],"nodeType":"IdentifierPath","referencedDeclaration":1058,"src":"1335:7:8"},"referencedDeclaration":1058,"src":"1335:7:8","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$1058_storage_ptr","typeString":"struct CountersUpgradeable.Counter"}},"visibility":"internal"}],"src":"1334:25:8"},"returnParameters":{"id":1117,"nodeType":"ParameterList","parameters":[],"src":"1369:0:8"},"scope":1126,"src":"1320:84:8","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":1127,"src":"424:982:8","usedErrors":[]}],"src":"87:1320:8"},"id":8},"@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol","exportedSymbols":{"StorageSlotUpgradeable":[1236]},"id":1237,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1128,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"193:23:9"},{"abstract":false,"baseContracts":[],"canonicalName":"StorageSlotUpgradeable","contractDependencies":[],"contractKind":"library","documentation":{"id":1129,"nodeType":"StructuredDocumentation","src":"218:1201:9","text":" @dev Library for reading and writing primitive types to specific storage slots.\n Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\n This library helps with reading and writing to such slots without the need for inline assembly.\n The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\n Example usage to set ERC1967 implementation slot:\n ```solidity\n contract ERC1967 {\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n function _getImplementation() internal view returns (address) {\n return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\n }\n function _setImplementation(address newImplementation) internal {\n require(Address.isContract(newImplementation), \"ERC1967: new implementation is not a contract\");\n StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\n }\n }\n ```\n _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._\n _Available since v4.9 for `string`, `bytes`._"},"fullyImplemented":true,"id":1236,"linearizedBaseContracts":[1236],"name":"StorageSlotUpgradeable","nameLocation":"1428:22:9","nodeType":"ContractDefinition","nodes":[{"canonicalName":"StorageSlotUpgradeable.AddressSlot","id":1132,"members":[{"constant":false,"id":1131,"mutability":"mutable","name":"value","nameLocation":"1494:5:9","nodeType":"VariableDeclaration","scope":1132,"src":"1486:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1130,"name":"address","nodeType":"ElementaryTypeName","src":"1486:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"name":"AddressSlot","nameLocation":"1464:11:9","nodeType":"StructDefinition","scope":1236,"src":"1457:49:9","visibility":"public"},{"canonicalName":"StorageSlotUpgradeable.BooleanSlot","id":1135,"members":[{"constant":false,"id":1134,"mutability":"mutable","name":"value","nameLocation":"1546:5:9","nodeType":"VariableDeclaration","scope":1135,"src":"1541:10:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1133,"name":"bool","nodeType":"ElementaryTypeName","src":"1541:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"name":"BooleanSlot","nameLocation":"1519:11:9","nodeType":"StructDefinition","scope":1236,"src":"1512:46:9","visibility":"public"},{"canonicalName":"StorageSlotUpgradeable.Bytes32Slot","id":1138,"members":[{"constant":false,"id":1137,"mutability":"mutable","name":"value","nameLocation":"1601:5:9","nodeType":"VariableDeclaration","scope":1138,"src":"1593:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1136,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1593:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"name":"Bytes32Slot","nameLocation":"1571:11:9","nodeType":"StructDefinition","scope":1236,"src":"1564:49:9","visibility":"public"},{"canonicalName":"StorageSlotUpgradeable.Uint256Slot","id":1141,"members":[{"constant":false,"id":1140,"mutability":"mutable","name":"value","nameLocation":"1656:5:9","nodeType":"VariableDeclaration","scope":1141,"src":"1648:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1139,"name":"uint256","nodeType":"ElementaryTypeName","src":"1648:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"Uint256Slot","nameLocation":"1626:11:9","nodeType":"StructDefinition","scope":1236,"src":"1619:49:9","visibility":"public"},{"canonicalName":"StorageSlotUpgradeable.StringSlot","id":1144,"members":[{"constant":false,"id":1143,"mutability":"mutable","name":"value","nameLocation":"1709:5:9","nodeType":"VariableDeclaration","scope":1144,"src":"1702:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":1142,"name":"string","nodeType":"ElementaryTypeName","src":"1702:6:9","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"name":"StringSlot","nameLocation":"1681:10:9","nodeType":"StructDefinition","scope":1236,"src":"1674:47:9","visibility":"public"},{"canonicalName":"StorageSlotUpgradeable.BytesSlot","id":1147,"members":[{"constant":false,"id":1146,"mutability":"mutable","name":"value","nameLocation":"1760:5:9","nodeType":"VariableDeclaration","scope":1147,"src":"1754:11:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":1145,"name":"bytes","nodeType":"ElementaryTypeName","src":"1754:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"name":"BytesSlot","nameLocation":"1734:9:9","nodeType":"StructDefinition","scope":1236,"src":"1727:45:9","visibility":"public"},{"body":{"id":1157,"nodeType":"Block","src":"1954:106:9","statements":[{"AST":{"nodeType":"YulBlock","src":"2016:38:9","statements":[{"nodeType":"YulAssignment","src":"2030:14:9","value":{"name":"slot","nodeType":"YulIdentifier","src":"2040:4:9"},"variableNames":[{"name":"r.slot","nodeType":"YulIdentifier","src":"2030:6:9"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"london","externalReferences":[{"declaration":1154,"isOffset":false,"isSlot":true,"src":"2030:6:9","suffix":"slot","valueSize":1},{"declaration":1150,"isOffset":false,"isSlot":false,"src":"2040:4:9","valueSize":1}],"id":1156,"nodeType":"InlineAssembly","src":"2007:47:9"}]},"documentation":{"id":1148,"nodeType":"StructuredDocumentation","src":"1778:87:9","text":" @dev Returns an `AddressSlot` with member `value` located at `slot`."},"id":1158,"implemented":true,"kind":"function","modifiers":[],"name":"getAddressSlot","nameLocation":"1879:14:9","nodeType":"FunctionDefinition","parameters":{"id":1151,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1150,"mutability":"mutable","name":"slot","nameLocation":"1902:4:9","nodeType":"VariableDeclaration","scope":1158,"src":"1894:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1149,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1894:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1893:14:9"},"returnParameters":{"id":1155,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1154,"mutability":"mutable","name":"r","nameLocation":"1951:1:9","nodeType":"VariableDeclaration","scope":1158,"src":"1931:21:9","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$1132_storage_ptr","typeString":"struct StorageSlotUpgradeable.AddressSlot"},"typeName":{"id":1153,"nodeType":"UserDefinedTypeName","pathNode":{"id":1152,"name":"AddressSlot","nameLocations":["1931:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":1132,"src":"1931:11:9"},"referencedDeclaration":1132,"src":"1931:11:9","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$1132_storage_ptr","typeString":"struct StorageSlotUpgradeable.AddressSlot"}},"visibility":"internal"}],"src":"1930:23:9"},"scope":1236,"src":"1870:190:9","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1168,"nodeType":"Block","src":"2242:106:9","statements":[{"AST":{"nodeType":"YulBlock","src":"2304:38:9","statements":[{"nodeType":"YulAssignment","src":"2318:14:9","value":{"name":"slot","nodeType":"YulIdentifier","src":"2328:4:9"},"variableNames":[{"name":"r.slot","nodeType":"YulIdentifier","src":"2318:6:9"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"london","externalReferences":[{"declaration":1165,"isOffset":false,"isSlot":true,"src":"2318:6:9","suffix":"slot","valueSize":1},{"declaration":1161,"isOffset":false,"isSlot":false,"src":"2328:4:9","valueSize":1}],"id":1167,"nodeType":"InlineAssembly","src":"2295:47:9"}]},"documentation":{"id":1159,"nodeType":"StructuredDocumentation","src":"2066:87:9","text":" @dev Returns an `BooleanSlot` with member `value` located at `slot`."},"id":1169,"implemented":true,"kind":"function","modifiers":[],"name":"getBooleanSlot","nameLocation":"2167:14:9","nodeType":"FunctionDefinition","parameters":{"id":1162,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1161,"mutability":"mutable","name":"slot","nameLocation":"2190:4:9","nodeType":"VariableDeclaration","scope":1169,"src":"2182:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1160,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2182:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2181:14:9"},"returnParameters":{"id":1166,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1165,"mutability":"mutable","name":"r","nameLocation":"2239:1:9","nodeType":"VariableDeclaration","scope":1169,"src":"2219:21:9","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_BooleanSlot_$1135_storage_ptr","typeString":"struct StorageSlotUpgradeable.BooleanSlot"},"typeName":{"id":1164,"nodeType":"UserDefinedTypeName","pathNode":{"id":1163,"name":"BooleanSlot","nameLocations":["2219:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":1135,"src":"2219:11:9"},"referencedDeclaration":1135,"src":"2219:11:9","typeDescriptions":{"typeIdentifier":"t_struct$_BooleanSlot_$1135_storage_ptr","typeString":"struct StorageSlotUpgradeable.BooleanSlot"}},"visibility":"internal"}],"src":"2218:23:9"},"scope":1236,"src":"2158:190:9","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1179,"nodeType":"Block","src":"2530:106:9","statements":[{"AST":{"nodeType":"YulBlock","src":"2592:38:9","statements":[{"nodeType":"YulAssignment","src":"2606:14:9","value":{"name":"slot","nodeType":"YulIdentifier","src":"2616:4:9"},"variableNames":[{"name":"r.slot","nodeType":"YulIdentifier","src":"2606:6:9"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"london","externalReferences":[{"declaration":1176,"isOffset":false,"isSlot":true,"src":"2606:6:9","suffix":"slot","valueSize":1},{"declaration":1172,"isOffset":false,"isSlot":false,"src":"2616:4:9","valueSize":1}],"id":1178,"nodeType":"InlineAssembly","src":"2583:47:9"}]},"documentation":{"id":1170,"nodeType":"StructuredDocumentation","src":"2354:87:9","text":" @dev Returns an `Bytes32Slot` with member `value` located at `slot`."},"id":1180,"implemented":true,"kind":"function","modifiers":[],"name":"getBytes32Slot","nameLocation":"2455:14:9","nodeType":"FunctionDefinition","parameters":{"id":1173,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1172,"mutability":"mutable","name":"slot","nameLocation":"2478:4:9","nodeType":"VariableDeclaration","scope":1180,"src":"2470:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1171,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2470:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2469:14:9"},"returnParameters":{"id":1177,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1176,"mutability":"mutable","name":"r","nameLocation":"2527:1:9","nodeType":"VariableDeclaration","scope":1180,"src":"2507:21:9","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Slot_$1138_storage_ptr","typeString":"struct StorageSlotUpgradeable.Bytes32Slot"},"typeName":{"id":1175,"nodeType":"UserDefinedTypeName","pathNode":{"id":1174,"name":"Bytes32Slot","nameLocations":["2507:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":1138,"src":"2507:11:9"},"referencedDeclaration":1138,"src":"2507:11:9","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Slot_$1138_storage_ptr","typeString":"struct StorageSlotUpgradeable.Bytes32Slot"}},"visibility":"internal"}],"src":"2506:23:9"},"scope":1236,"src":"2446:190:9","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1190,"nodeType":"Block","src":"2818:106:9","statements":[{"AST":{"nodeType":"YulBlock","src":"2880:38:9","statements":[{"nodeType":"YulAssignment","src":"2894:14:9","value":{"name":"slot","nodeType":"YulIdentifier","src":"2904:4:9"},"variableNames":[{"name":"r.slot","nodeType":"YulIdentifier","src":"2894:6:9"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"london","externalReferences":[{"declaration":1187,"isOffset":false,"isSlot":true,"src":"2894:6:9","suffix":"slot","valueSize":1},{"declaration":1183,"isOffset":false,"isSlot":false,"src":"2904:4:9","valueSize":1}],"id":1189,"nodeType":"InlineAssembly","src":"2871:47:9"}]},"documentation":{"id":1181,"nodeType":"StructuredDocumentation","src":"2642:87:9","text":" @dev Returns an `Uint256Slot` with member `value` located at `slot`."},"id":1191,"implemented":true,"kind":"function","modifiers":[],"name":"getUint256Slot","nameLocation":"2743:14:9","nodeType":"FunctionDefinition","parameters":{"id":1184,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1183,"mutability":"mutable","name":"slot","nameLocation":"2766:4:9","nodeType":"VariableDeclaration","scope":1191,"src":"2758:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1182,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2758:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2757:14:9"},"returnParameters":{"id":1188,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1187,"mutability":"mutable","name":"r","nameLocation":"2815:1:9","nodeType":"VariableDeclaration","scope":1191,"src":"2795:21:9","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Uint256Slot_$1141_storage_ptr","typeString":"struct StorageSlotUpgradeable.Uint256Slot"},"typeName":{"id":1186,"nodeType":"UserDefinedTypeName","pathNode":{"id":1185,"name":"Uint256Slot","nameLocations":["2795:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":1141,"src":"2795:11:9"},"referencedDeclaration":1141,"src":"2795:11:9","typeDescriptions":{"typeIdentifier":"t_struct$_Uint256Slot_$1141_storage_ptr","typeString":"struct StorageSlotUpgradeable.Uint256Slot"}},"visibility":"internal"}],"src":"2794:23:9"},"scope":1236,"src":"2734:190:9","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1201,"nodeType":"Block","src":"3103:106:9","statements":[{"AST":{"nodeType":"YulBlock","src":"3165:38:9","statements":[{"nodeType":"YulAssignment","src":"3179:14:9","value":{"name":"slot","nodeType":"YulIdentifier","src":"3189:4:9"},"variableNames":[{"name":"r.slot","nodeType":"YulIdentifier","src":"3179:6:9"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"london","externalReferences":[{"declaration":1198,"isOffset":false,"isSlot":true,"src":"3179:6:9","suffix":"slot","valueSize":1},{"declaration":1194,"isOffset":false,"isSlot":false,"src":"3189:4:9","valueSize":1}],"id":1200,"nodeType":"InlineAssembly","src":"3156:47:9"}]},"documentation":{"id":1192,"nodeType":"StructuredDocumentation","src":"2930:86:9","text":" @dev Returns an `StringSlot` with member `value` located at `slot`."},"id":1202,"implemented":true,"kind":"function","modifiers":[],"name":"getStringSlot","nameLocation":"3030:13:9","nodeType":"FunctionDefinition","parameters":{"id":1195,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1194,"mutability":"mutable","name":"slot","nameLocation":"3052:4:9","nodeType":"VariableDeclaration","scope":1202,"src":"3044:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1193,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3044:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3043:14:9"},"returnParameters":{"id":1199,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1198,"mutability":"mutable","name":"r","nameLocation":"3100:1:9","nodeType":"VariableDeclaration","scope":1202,"src":"3081:20:9","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_StringSlot_$1144_storage_ptr","typeString":"struct StorageSlotUpgradeable.StringSlot"},"typeName":{"id":1197,"nodeType":"UserDefinedTypeName","pathNode":{"id":1196,"name":"StringSlot","nameLocations":["3081:10:9"],"nodeType":"IdentifierPath","referencedDeclaration":1144,"src":"3081:10:9"},"referencedDeclaration":1144,"src":"3081:10:9","typeDescriptions":{"typeIdentifier":"t_struct$_StringSlot_$1144_storage_ptr","typeString":"struct StorageSlotUpgradeable.StringSlot"}},"visibility":"internal"}],"src":"3080:22:9"},"scope":1236,"src":"3021:188:9","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1212,"nodeType":"Block","src":"3411:112:9","statements":[{"AST":{"nodeType":"YulBlock","src":"3473:44:9","statements":[{"nodeType":"YulAssignment","src":"3487:20:9","value":{"name":"store.slot","nodeType":"YulIdentifier","src":"3497:10:9"},"variableNames":[{"name":"r.slot","nodeType":"YulIdentifier","src":"3487:6:9"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"london","externalReferences":[{"declaration":1209,"isOffset":false,"isSlot":true,"src":"3487:6:9","suffix":"slot","valueSize":1},{"declaration":1205,"isOffset":false,"isSlot":true,"src":"3497:10:9","suffix":"slot","valueSize":1}],"id":1211,"nodeType":"InlineAssembly","src":"3464:53:9"}]},"documentation":{"id":1203,"nodeType":"StructuredDocumentation","src":"3215:101:9","text":" @dev Returns an `StringSlot` representation of the string storage pointer `store`."},"id":1213,"implemented":true,"kind":"function","modifiers":[],"name":"getStringSlot","nameLocation":"3330:13:9","nodeType":"FunctionDefinition","parameters":{"id":1206,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1205,"mutability":"mutable","name":"store","nameLocation":"3359:5:9","nodeType":"VariableDeclaration","scope":1213,"src":"3344:20:9","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":1204,"name":"string","nodeType":"ElementaryTypeName","src":"3344:6:9","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3343:22:9"},"returnParameters":{"id":1210,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1209,"mutability":"mutable","name":"r","nameLocation":"3408:1:9","nodeType":"VariableDeclaration","scope":1213,"src":"3389:20:9","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_StringSlot_$1144_storage_ptr","typeString":"struct StorageSlotUpgradeable.StringSlot"},"typeName":{"id":1208,"nodeType":"UserDefinedTypeName","pathNode":{"id":1207,"name":"StringSlot","nameLocations":["3389:10:9"],"nodeType":"IdentifierPath","referencedDeclaration":1144,"src":"3389:10:9"},"referencedDeclaration":1144,"src":"3389:10:9","typeDescriptions":{"typeIdentifier":"t_struct$_StringSlot_$1144_storage_ptr","typeString":"struct StorageSlotUpgradeable.StringSlot"}},"visibility":"internal"}],"src":"3388:22:9"},"scope":1236,"src":"3321:202:9","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1223,"nodeType":"Block","src":"3699:106:9","statements":[{"AST":{"nodeType":"YulBlock","src":"3761:38:9","statements":[{"nodeType":"YulAssignment","src":"3775:14:9","value":{"name":"slot","nodeType":"YulIdentifier","src":"3785:4:9"},"variableNames":[{"name":"r.slot","nodeType":"YulIdentifier","src":"3775:6:9"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"london","externalReferences":[{"declaration":1220,"isOffset":false,"isSlot":true,"src":"3775:6:9","suffix":"slot","valueSize":1},{"declaration":1216,"isOffset":false,"isSlot":false,"src":"3785:4:9","valueSize":1}],"id":1222,"nodeType":"InlineAssembly","src":"3752:47:9"}]},"documentation":{"id":1214,"nodeType":"StructuredDocumentation","src":"3529:85:9","text":" @dev Returns an `BytesSlot` with member `value` located at `slot`."},"id":1224,"implemented":true,"kind":"function","modifiers":[],"name":"getBytesSlot","nameLocation":"3628:12:9","nodeType":"FunctionDefinition","parameters":{"id":1217,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1216,"mutability":"mutable","name":"slot","nameLocation":"3649:4:9","nodeType":"VariableDeclaration","scope":1224,"src":"3641:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1215,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3641:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3640:14:9"},"returnParameters":{"id":1221,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1220,"mutability":"mutable","name":"r","nameLocation":"3696:1:9","nodeType":"VariableDeclaration","scope":1224,"src":"3678:19:9","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$1147_storage_ptr","typeString":"struct StorageSlotUpgradeable.BytesSlot"},"typeName":{"id":1219,"nodeType":"UserDefinedTypeName","pathNode":{"id":1218,"name":"BytesSlot","nameLocations":["3678:9:9"],"nodeType":"IdentifierPath","referencedDeclaration":1147,"src":"3678:9:9"},"referencedDeclaration":1147,"src":"3678:9:9","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$1147_storage_ptr","typeString":"struct StorageSlotUpgradeable.BytesSlot"}},"visibility":"internal"}],"src":"3677:21:9"},"scope":1236,"src":"3619:186:9","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1234,"nodeType":"Block","src":"4002:112:9","statements":[{"AST":{"nodeType":"YulBlock","src":"4064:44:9","statements":[{"nodeType":"YulAssignment","src":"4078:20:9","value":{"name":"store.slot","nodeType":"YulIdentifier","src":"4088:10:9"},"variableNames":[{"name":"r.slot","nodeType":"YulIdentifier","src":"4078:6:9"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"london","externalReferences":[{"declaration":1231,"isOffset":false,"isSlot":true,"src":"4078:6:9","suffix":"slot","valueSize":1},{"declaration":1227,"isOffset":false,"isSlot":true,"src":"4088:10:9","suffix":"slot","valueSize":1}],"id":1233,"nodeType":"InlineAssembly","src":"4055:53:9"}]},"documentation":{"id":1225,"nodeType":"StructuredDocumentation","src":"3811:99:9","text":" @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`."},"id":1235,"implemented":true,"kind":"function","modifiers":[],"name":"getBytesSlot","nameLocation":"3924:12:9","nodeType":"FunctionDefinition","parameters":{"id":1228,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1227,"mutability":"mutable","name":"store","nameLocation":"3951:5:9","nodeType":"VariableDeclaration","scope":1235,"src":"3937:19:9","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":1226,"name":"bytes","nodeType":"ElementaryTypeName","src":"3937:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3936:21:9"},"returnParameters":{"id":1232,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1231,"mutability":"mutable","name":"r","nameLocation":"3999:1:9","nodeType":"VariableDeclaration","scope":1235,"src":"3981:19:9","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$1147_storage_ptr","typeString":"struct StorageSlotUpgradeable.BytesSlot"},"typeName":{"id":1230,"nodeType":"UserDefinedTypeName","pathNode":{"id":1229,"name":"BytesSlot","nameLocations":["3981:9:9"],"nodeType":"IdentifierPath","referencedDeclaration":1147,"src":"3981:9:9"},"referencedDeclaration":1147,"src":"3981:9:9","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$1147_storage_ptr","typeString":"struct StorageSlotUpgradeable.BytesSlot"}},"visibility":"internal"}],"src":"3980:21:9"},"scope":1236,"src":"3915:199:9","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":1237,"src":"1420:2696:9","usedErrors":[]}],"src":"193:3924:9"},"id":9},"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol","exportedSymbols":{"ERC165Upgradeable":[1281],"IERC165Upgradeable":[1293],"Initializable":[534]},"id":1282,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1238,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"99:23:10"},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol","file":"./IERC165Upgradeable.sol","id":1239,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1282,"sourceUnit":1294,"src":"124:34:10","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","file":"../../proxy/utils/Initializable.sol","id":1241,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1282,"sourceUnit":535,"src":"159:66:10","symbolAliases":[{"foreign":{"id":1240,"name":"Initializable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":534,"src":"167:13:10","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":1243,"name":"Initializable","nameLocations":["843:13:10"],"nodeType":"IdentifierPath","referencedDeclaration":534,"src":"843:13:10"},"id":1244,"nodeType":"InheritanceSpecifier","src":"843:13:10"},{"baseName":{"id":1245,"name":"IERC165Upgradeable","nameLocations":["858:18:10"],"nodeType":"IdentifierPath","referencedDeclaration":1293,"src":"858:18:10"},"id":1246,"nodeType":"InheritanceSpecifier","src":"858:18:10"}],"canonicalName":"ERC165Upgradeable","contractDependencies":[],"contractKind":"contract","documentation":{"id":1242,"nodeType":"StructuredDocumentation","src":"227:576:10","text":" @dev Implementation of the {IERC165} interface.\n Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\n for the additional interface id that will be supported. For example:\n ```solidity\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\n }\n ```\n Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation."},"fullyImplemented":true,"id":1281,"linearizedBaseContracts":[1281,1293,534],"name":"ERC165Upgradeable","nameLocation":"822:17:10","nodeType":"ContractDefinition","nodes":[{"body":{"id":1251,"nodeType":"Block","src":"934:7:10","statements":[]},"id":1252,"implemented":true,"kind":"function","modifiers":[{"id":1249,"kind":"modifierInvocation","modifierName":{"id":1248,"name":"onlyInitializing","nameLocations":["917:16:10"],"nodeType":"IdentifierPath","referencedDeclaration":479,"src":"917:16:10"},"nodeType":"ModifierInvocation","src":"917:16:10"}],"name":"__ERC165_init","nameLocation":"892:13:10","nodeType":"FunctionDefinition","parameters":{"id":1247,"nodeType":"ParameterList","parameters":[],"src":"905:2:10"},"returnParameters":{"id":1250,"nodeType":"ParameterList","parameters":[],"src":"934:0:10"},"scope":1281,"src":"883:58:10","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1257,"nodeType":"Block","src":"1008:7:10","statements":[]},"id":1258,"implemented":true,"kind":"function","modifiers":[{"id":1255,"kind":"modifierInvocation","modifierName":{"id":1254,"name":"onlyInitializing","nameLocations":["991:16:10"],"nodeType":"IdentifierPath","referencedDeclaration":479,"src":"991:16:10"},"nodeType":"ModifierInvocation","src":"991:16:10"}],"name":"__ERC165_init_unchained","nameLocation":"956:23:10","nodeType":"FunctionDefinition","parameters":{"id":1253,"nodeType":"ParameterList","parameters":[],"src":"979:2:10"},"returnParameters":{"id":1256,"nodeType":"ParameterList","parameters":[],"src":"1008:0:10"},"scope":1281,"src":"947:68:10","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[1292],"body":{"id":1274,"nodeType":"Block","src":"1172:75:10","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":1272,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1267,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1261,"src":"1189:11:10","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1269,"name":"IERC165Upgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1293,"src":"1209:18:10","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC165Upgradeable_$1293_$","typeString":"type(contract IERC165Upgradeable)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC165Upgradeable_$1293_$","typeString":"type(contract IERC165Upgradeable)"}],"id":1268,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"1204:4:10","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1270,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1204:24:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC165Upgradeable_$1293","typeString":"type(contract IERC165Upgradeable)"}},"id":1271,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1229:11:10","memberName":"interfaceId","nodeType":"MemberAccess","src":"1204:36:10","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"1189:51:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1266,"id":1273,"nodeType":"Return","src":"1182:58:10"}]},"documentation":{"id":1259,"nodeType":"StructuredDocumentation","src":"1020:56:10","text":" @dev See {IERC165-supportsInterface}."},"functionSelector":"01ffc9a7","id":1275,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"1090:17:10","nodeType":"FunctionDefinition","overrides":{"id":1263,"nodeType":"OverrideSpecifier","overrides":[],"src":"1148:8:10"},"parameters":{"id":1262,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1261,"mutability":"mutable","name":"interfaceId","nameLocation":"1115:11:10","nodeType":"VariableDeclaration","scope":1275,"src":"1108:18:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1260,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1108:6:10","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"1107:20:10"},"returnParameters":{"id":1266,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1265,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1275,"src":"1166:4:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1264,"name":"bool","nodeType":"ElementaryTypeName","src":"1166:4:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1165:6:10"},"scope":1281,"src":"1081:166:10","stateMutability":"view","virtual":true,"visibility":"public"},{"constant":false,"documentation":{"id":1276,"nodeType":"StructuredDocumentation","src":"1253:254:10","text":" @dev This empty reserved space is put in place to allow future versions to add new\n variables without shifting down storage in the inheritance chain.\n See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"},"id":1280,"mutability":"mutable","name":"__gap","nameLocation":"1532:5:10","nodeType":"VariableDeclaration","scope":1281,"src":"1512:25:10","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$50_storage","typeString":"uint256[50]"},"typeName":{"baseType":{"id":1277,"name":"uint256","nodeType":"ElementaryTypeName","src":"1512:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1279,"length":{"hexValue":"3530","id":1278,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1520:2:10","typeDescriptions":{"typeIdentifier":"t_rational_50_by_1","typeString":"int_const 50"},"value":"50"},"nodeType":"ArrayTypeName","src":"1512:11:10","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$50_storage_ptr","typeString":"uint256[50]"}},"visibility":"private"}],"scope":1282,"src":"804:736:10","usedErrors":[]}],"src":"99:1442:10"},"id":10},"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol","exportedSymbols":{"IERC165Upgradeable":[1293]},"id":1294,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1283,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"100:23:11"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC165Upgradeable","contractDependencies":[],"contractKind":"interface","documentation":{"id":1284,"nodeType":"StructuredDocumentation","src":"125:279:11","text":" @dev Interface of the ERC165 standard, as defined in the\n https://eips.ethereum.org/EIPS/eip-165[EIP].\n Implementers can declare support of contract interfaces, which can then be\n queried by others ({ERC165Checker}).\n For an implementation, see {ERC165}."},"fullyImplemented":false,"id":1293,"linearizedBaseContracts":[1293],"name":"IERC165Upgradeable","nameLocation":"415:18:11","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":1285,"nodeType":"StructuredDocumentation","src":"440:340:11","text":" @dev Returns true if this contract implements the interface defined by\n `interfaceId`. See the corresponding\n https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\n to learn more about how these ids are created.\n This function call must use less than 30 000 gas."},"functionSelector":"01ffc9a7","id":1292,"implemented":false,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"794:17:11","nodeType":"FunctionDefinition","parameters":{"id":1288,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1287,"mutability":"mutable","name":"interfaceId","nameLocation":"819:11:11","nodeType":"VariableDeclaration","scope":1292,"src":"812:18:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1286,"name":"bytes4","nodeType":"ElementaryTypeName","src":"812:6:11","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"811:20:11"},"returnParameters":{"id":1291,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1290,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1292,"src":"855:4:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1289,"name":"bool","nodeType":"ElementaryTypeName","src":"855:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"854:6:11"},"scope":1293,"src":"785:76:11","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":1294,"src":"405:458:11","usedErrors":[]}],"src":"100:764:11"},"id":11},"@openzeppelin/contracts/interfaces/IERC1967.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/interfaces/IERC1967.sol","exportedSymbols":{"IERC1967":[1314]},"id":1315,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1295,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"107:23:12"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC1967","contractDependencies":[],"contractKind":"interface","documentation":{"id":1296,"nodeType":"StructuredDocumentation","src":"132:133:12","text":" @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\n _Available since v4.8.3._"},"fullyImplemented":true,"id":1314,"linearizedBaseContracts":[1314],"name":"IERC1967","nameLocation":"276:8:12","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":1297,"nodeType":"StructuredDocumentation","src":"291:68:12","text":" @dev Emitted when the implementation is upgraded."},"eventSelector":"bc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","id":1301,"name":"Upgraded","nameLocation":"370:8:12","nodeType":"EventDefinition","parameters":{"id":1300,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1299,"indexed":true,"mutability":"mutable","name":"implementation","nameLocation":"395:14:12","nodeType":"VariableDeclaration","scope":1301,"src":"379:30:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1298,"name":"address","nodeType":"ElementaryTypeName","src":"379:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"378:32:12"},"src":"364:47:12"},{"anonymous":false,"documentation":{"id":1302,"nodeType":"StructuredDocumentation","src":"417:67:12","text":" @dev Emitted when the admin account has changed."},"eventSelector":"7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f","id":1308,"name":"AdminChanged","nameLocation":"495:12:12","nodeType":"EventDefinition","parameters":{"id":1307,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1304,"indexed":false,"mutability":"mutable","name":"previousAdmin","nameLocation":"516:13:12","nodeType":"VariableDeclaration","scope":1308,"src":"508:21:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1303,"name":"address","nodeType":"ElementaryTypeName","src":"508:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1306,"indexed":false,"mutability":"mutable","name":"newAdmin","nameLocation":"539:8:12","nodeType":"VariableDeclaration","scope":1308,"src":"531:16:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1305,"name":"address","nodeType":"ElementaryTypeName","src":"531:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"507:41:12"},"src":"489:60:12"},{"anonymous":false,"documentation":{"id":1309,"nodeType":"StructuredDocumentation","src":"555:59:12","text":" @dev Emitted when the beacon is changed."},"eventSelector":"1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e","id":1313,"name":"BeaconUpgraded","nameLocation":"625:14:12","nodeType":"EventDefinition","parameters":{"id":1312,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1311,"indexed":true,"mutability":"mutable","name":"beacon","nameLocation":"656:6:12","nodeType":"VariableDeclaration","scope":1313,"src":"640:22:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1310,"name":"address","nodeType":"ElementaryTypeName","src":"640:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"639:24:12"},"src":"619:45:12"}],"scope":1315,"src":"266:400:12","usedErrors":[]}],"src":"107:560:12"},"id":12},"@openzeppelin/contracts/interfaces/draft-IERC1822.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/interfaces/draft-IERC1822.sol","exportedSymbols":{"IERC1822Proxiable":[1324]},"id":1325,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1316,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"113:23:13"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC1822Proxiable","contractDependencies":[],"contractKind":"interface","documentation":{"id":1317,"nodeType":"StructuredDocumentation","src":"138:203:13","text":" @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\n proxy whose upgrades are fully controlled by the current implementation."},"fullyImplemented":false,"id":1324,"linearizedBaseContracts":[1324],"name":"IERC1822Proxiable","nameLocation":"352:17:13","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":1318,"nodeType":"StructuredDocumentation","src":"376:438:13","text":" @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\n address.\n IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\n bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\n function revert if invoked through a proxy."},"functionSelector":"52d1902d","id":1323,"implemented":false,"kind":"function","modifiers":[],"name":"proxiableUUID","nameLocation":"828:13:13","nodeType":"FunctionDefinition","parameters":{"id":1319,"nodeType":"ParameterList","parameters":[],"src":"841:2:13"},"returnParameters":{"id":1322,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1321,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1323,"src":"867:7:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1320,"name":"bytes32","nodeType":"ElementaryTypeName","src":"867:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"866:9:13"},"scope":1324,"src":"819:57:13","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":1325,"src":"342:536:13","usedErrors":[]}],"src":"113:766:13"},"id":13},"@openzeppelin/contracts/proxy/Clones.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/proxy/Clones.sol","exportedSymbols":{"Clones":[1404]},"id":1405,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1326,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"100:23:14"},{"abstract":false,"baseContracts":[],"canonicalName":"Clones","contractDependencies":[],"contractKind":"library","documentation":{"id":1327,"nodeType":"StructuredDocumentation","src":"125:629:14","text":" @dev https://eips.ethereum.org/EIPS/eip-1167[EIP 1167] is a standard for\n deploying minimal proxy contracts, also known as \"clones\".\n > To simply and cheaply clone contract functionality in an immutable way, this standard specifies\n > a minimal bytecode implementation that delegates all calls to a known, fixed address.\n The library includes functions to deploy a proxy using either `create` (traditional deployment) or `create2`\n (salted deterministic deployment). It also includes functions to predict the addresses of clones deployed using the\n deterministic method.\n _Available since v3.4._"},"fullyImplemented":true,"id":1404,"linearizedBaseContracts":[1404],"name":"Clones","nameLocation":"763:6:14","nodeType":"ContractDefinition","nodes":[{"body":{"id":1346,"nodeType":"Block","src":"1048:684:14","statements":[{"AST":{"nodeType":"YulBlock","src":"1110:549:14","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1315:4:14","type":"","value":"0x00"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1328:4:14","type":"","value":"0xe8"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1338:4:14","type":"","value":"0x60"},{"name":"implementation","nodeType":"YulIdentifier","src":"1344:14:14"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1334:3:14"},"nodeType":"YulFunctionCall","src":"1334:25:14"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"1324:3:14"},"nodeType":"YulFunctionCall","src":"1324:36:14"},{"kind":"number","nodeType":"YulLiteral","src":"1362:48:14","type":"","value":"0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"1321:2:14"},"nodeType":"YulFunctionCall","src":"1321:90:14"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1308:6:14"},"nodeType":"YulFunctionCall","src":"1308:104:14"},"nodeType":"YulExpressionStatement","src":"1308:104:14"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1533:4:14","type":"","value":"0x20"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1546:4:14","type":"","value":"0x78"},{"name":"implementation","nodeType":"YulIdentifier","src":"1552:14:14"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1542:3:14"},"nodeType":"YulFunctionCall","src":"1542:25:14"},{"kind":"number","nodeType":"YulLiteral","src":"1569:32:14","type":"","value":"0x5af43d82803e903d91602b57fd5bf3"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"1539:2:14"},"nodeType":"YulFunctionCall","src":"1539:63:14"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1526:6:14"},"nodeType":"YulFunctionCall","src":"1526:77:14"},"nodeType":"YulExpressionStatement","src":"1526:77:14"},{"nodeType":"YulAssignment","src":"1616:33:14","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1635:1:14","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1638:4:14","type":"","value":"0x09"},{"kind":"number","nodeType":"YulLiteral","src":"1644:4:14","type":"","value":"0x37"}],"functionName":{"name":"create","nodeType":"YulIdentifier","src":"1628:6:14"},"nodeType":"YulFunctionCall","src":"1628:21:14"},"variableNames":[{"name":"instance","nodeType":"YulIdentifier","src":"1616:8:14"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"london","externalReferences":[{"declaration":1330,"isOffset":false,"isSlot":false,"src":"1344:14:14","valueSize":1},{"declaration":1330,"isOffset":false,"isSlot":false,"src":"1552:14:14","valueSize":1},{"declaration":1333,"isOffset":false,"isSlot":false,"src":"1616:8:14","valueSize":1}],"id":1335,"nodeType":"InlineAssembly","src":"1101:558:14"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1342,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1337,"name":"instance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1333,"src":"1676:8:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":1340,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1696:1:14","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1339,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1688:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1338,"name":"address","nodeType":"ElementaryTypeName","src":"1688:7:14","typeDescriptions":{}}},"id":1341,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1688:10:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1676:22:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"455243313136373a20637265617465206661696c6564","id":1343,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1700:24:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_68ca40b61460257f14e69f48b1a4dbc812e9afc6932f127ef8084544457b3335","typeString":"literal_string \"ERC1167: create failed\""},"value":"ERC1167: create failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_68ca40b61460257f14e69f48b1a4dbc812e9afc6932f127ef8084544457b3335","typeString":"literal_string \"ERC1167: create failed\""}],"id":1336,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"1668:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1344,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1668:57:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1345,"nodeType":"ExpressionStatement","src":"1668:57:14"}]},"documentation":{"id":1328,"nodeType":"StructuredDocumentation","src":"776:192:14","text":" @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`.\n This function uses the create opcode, which should never revert."},"id":1347,"implemented":true,"kind":"function","modifiers":[],"name":"clone","nameLocation":"982:5:14","nodeType":"FunctionDefinition","parameters":{"id":1331,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1330,"mutability":"mutable","name":"implementation","nameLocation":"996:14:14","nodeType":"VariableDeclaration","scope":1347,"src":"988:22:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1329,"name":"address","nodeType":"ElementaryTypeName","src":"988:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"987:24:14"},"returnParameters":{"id":1334,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1333,"mutability":"mutable","name":"instance","nameLocation":"1038:8:14","nodeType":"VariableDeclaration","scope":1347,"src":"1030:16:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1332,"name":"address","nodeType":"ElementaryTypeName","src":"1030:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1029:18:14"},"scope":1404,"src":"973:759:14","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1368,"nodeType":"Block","src":"2209:692:14","statements":[{"AST":{"nodeType":"YulBlock","src":"2271:556:14","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2476:4:14","type":"","value":"0x00"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2489:4:14","type":"","value":"0xe8"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2499:4:14","type":"","value":"0x60"},{"name":"implementation","nodeType":"YulIdentifier","src":"2505:14:14"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2495:3:14"},"nodeType":"YulFunctionCall","src":"2495:25:14"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"2485:3:14"},"nodeType":"YulFunctionCall","src":"2485:36:14"},{"kind":"number","nodeType":"YulLiteral","src":"2523:48:14","type":"","value":"0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"2482:2:14"},"nodeType":"YulFunctionCall","src":"2482:90:14"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2469:6:14"},"nodeType":"YulFunctionCall","src":"2469:104:14"},"nodeType":"YulExpressionStatement","src":"2469:104:14"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2694:4:14","type":"","value":"0x20"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2707:4:14","type":"","value":"0x78"},{"name":"implementation","nodeType":"YulIdentifier","src":"2713:14:14"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2703:3:14"},"nodeType":"YulFunctionCall","src":"2703:25:14"},{"kind":"number","nodeType":"YulLiteral","src":"2730:32:14","type":"","value":"0x5af43d82803e903d91602b57fd5bf3"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"2700:2:14"},"nodeType":"YulFunctionCall","src":"2700:63:14"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2687:6:14"},"nodeType":"YulFunctionCall","src":"2687:77:14"},"nodeType":"YulExpressionStatement","src":"2687:77:14"},{"nodeType":"YulAssignment","src":"2777:40:14","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2797:1:14","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2800:4:14","type":"","value":"0x09"},{"kind":"number","nodeType":"YulLiteral","src":"2806:4:14","type":"","value":"0x37"},{"name":"salt","nodeType":"YulIdentifier","src":"2812:4:14"}],"functionName":{"name":"create2","nodeType":"YulIdentifier","src":"2789:7:14"},"nodeType":"YulFunctionCall","src":"2789:28:14"},"variableNames":[{"name":"instance","nodeType":"YulIdentifier","src":"2777:8:14"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"london","externalReferences":[{"declaration":1350,"isOffset":false,"isSlot":false,"src":"2505:14:14","valueSize":1},{"declaration":1350,"isOffset":false,"isSlot":false,"src":"2713:14:14","valueSize":1},{"declaration":1355,"isOffset":false,"isSlot":false,"src":"2777:8:14","valueSize":1},{"declaration":1352,"isOffset":false,"isSlot":false,"src":"2812:4:14","valueSize":1}],"id":1357,"nodeType":"InlineAssembly","src":"2262:565:14"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1364,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1359,"name":"instance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1355,"src":"2844:8:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":1362,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2864:1:14","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1361,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2856:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1360,"name":"address","nodeType":"ElementaryTypeName","src":"2856:7:14","typeDescriptions":{}}},"id":1363,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2856:10:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2844:22:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"455243313136373a2063726561746532206661696c6564","id":1365,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2868:25:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_4ec050e530ce66e7658278ab7a4e4a2f19225159c48fc52eb249bd268e755d73","typeString":"literal_string \"ERC1167: create2 failed\""},"value":"ERC1167: create2 failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_4ec050e530ce66e7658278ab7a4e4a2f19225159c48fc52eb249bd268e755d73","typeString":"literal_string \"ERC1167: create2 failed\""}],"id":1358,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"2836:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1366,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2836:58:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1367,"nodeType":"ExpressionStatement","src":"2836:58:14"}]},"documentation":{"id":1348,"nodeType":"StructuredDocumentation","src":"1738:364:14","text":" @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`.\n This function uses the create2 opcode and a `salt` to deterministically deploy\n the clone. Using the same `implementation` and `salt` multiple time will revert, since\n the clones cannot be deployed twice at the same address."},"id":1369,"implemented":true,"kind":"function","modifiers":[],"name":"cloneDeterministic","nameLocation":"2116:18:14","nodeType":"FunctionDefinition","parameters":{"id":1353,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1350,"mutability":"mutable","name":"implementation","nameLocation":"2143:14:14","nodeType":"VariableDeclaration","scope":1369,"src":"2135:22:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1349,"name":"address","nodeType":"ElementaryTypeName","src":"2135:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1352,"mutability":"mutable","name":"salt","nameLocation":"2167:4:14","nodeType":"VariableDeclaration","scope":1369,"src":"2159:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1351,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2159:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2134:38:14"},"returnParameters":{"id":1356,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1355,"mutability":"mutable","name":"instance","nameLocation":"2199:8:14","nodeType":"VariableDeclaration","scope":1369,"src":"2191:16:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1354,"name":"address","nodeType":"ElementaryTypeName","src":"2191:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2190:18:14"},"scope":1404,"src":"2107:794:14","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1382,"nodeType":"Block","src":"3176:515:14","statements":[{"AST":{"nodeType":"YulBlock","src":"3238:447:14","statements":[{"nodeType":"YulVariableDeclaration","src":"3252:22:14","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3269:4:14","type":"","value":"0x40"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3263:5:14"},"nodeType":"YulFunctionCall","src":"3263:11:14"},"variables":[{"name":"ptr","nodeType":"YulTypedName","src":"3256:3:14","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"3298:3:14"},{"kind":"number","nodeType":"YulLiteral","src":"3303:4:14","type":"","value":"0x38"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3294:3:14"},"nodeType":"YulFunctionCall","src":"3294:14:14"},{"name":"deployer","nodeType":"YulIdentifier","src":"3310:8:14"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3287:6:14"},"nodeType":"YulFunctionCall","src":"3287:32:14"},"nodeType":"YulExpressionStatement","src":"3287:32:14"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"3343:3:14"},{"kind":"number","nodeType":"YulLiteral","src":"3348:4:14","type":"","value":"0x24"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3339:3:14"},"nodeType":"YulFunctionCall","src":"3339:14:14"},{"kind":"number","nodeType":"YulLiteral","src":"3355:34:14","type":"","value":"0x5af43d82803e903d91602b57fd5bf3ff"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3332:6:14"},"nodeType":"YulFunctionCall","src":"3332:58:14"},"nodeType":"YulExpressionStatement","src":"3332:58:14"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"3414:3:14"},{"kind":"number","nodeType":"YulLiteral","src":"3419:4:14","type":"","value":"0x14"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3410:3:14"},"nodeType":"YulFunctionCall","src":"3410:14:14"},{"name":"implementation","nodeType":"YulIdentifier","src":"3426:14:14"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3403:6:14"},"nodeType":"YulFunctionCall","src":"3403:38:14"},"nodeType":"YulExpressionStatement","src":"3403:38:14"},{"expression":{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"3461:3:14"},{"kind":"number","nodeType":"YulLiteral","src":"3466:42:14","type":"","value":"0x3d602d80600a3d3981f3363d3d373d3d3d363d73"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3454:6:14"},"nodeType":"YulFunctionCall","src":"3454:55:14"},"nodeType":"YulExpressionStatement","src":"3454:55:14"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"3533:3:14"},{"kind":"number","nodeType":"YulLiteral","src":"3538:4:14","type":"","value":"0x58"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3529:3:14"},"nodeType":"YulFunctionCall","src":"3529:14:14"},{"name":"salt","nodeType":"YulIdentifier","src":"3545:4:14"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3522:6:14"},"nodeType":"YulFunctionCall","src":"3522:28:14"},"nodeType":"YulExpressionStatement","src":"3522:28:14"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"3574:3:14"},{"kind":"number","nodeType":"YulLiteral","src":"3579:4:14","type":"","value":"0x78"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3570:3:14"},"nodeType":"YulFunctionCall","src":"3570:14:14"},{"arguments":[{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"3600:3:14"},{"kind":"number","nodeType":"YulLiteral","src":"3605:4:14","type":"","value":"0x0c"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3596:3:14"},"nodeType":"YulFunctionCall","src":"3596:14:14"},{"kind":"number","nodeType":"YulLiteral","src":"3612:4:14","type":"","value":"0x37"}],"functionName":{"name":"keccak256","nodeType":"YulIdentifier","src":"3586:9:14"},"nodeType":"YulFunctionCall","src":"3586:31:14"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3563:6:14"},"nodeType":"YulFunctionCall","src":"3563:55:14"},"nodeType":"YulExpressionStatement","src":"3563:55:14"},{"nodeType":"YulAssignment","src":"3631:44:14","value":{"arguments":[{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"3658:3:14"},{"kind":"number","nodeType":"YulLiteral","src":"3663:4:14","type":"","value":"0x43"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3654:3:14"},"nodeType":"YulFunctionCall","src":"3654:14:14"},{"kind":"number","nodeType":"YulLiteral","src":"3670:4:14","type":"","value":"0x55"}],"functionName":{"name":"keccak256","nodeType":"YulIdentifier","src":"3644:9:14"},"nodeType":"YulFunctionCall","src":"3644:31:14"},"variableNames":[{"name":"predicted","nodeType":"YulIdentifier","src":"3631:9:14"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"london","externalReferences":[{"declaration":1376,"isOffset":false,"isSlot":false,"src":"3310:8:14","valueSize":1},{"declaration":1372,"isOffset":false,"isSlot":false,"src":"3426:14:14","valueSize":1},{"declaration":1379,"isOffset":false,"isSlot":false,"src":"3631:9:14","valueSize":1},{"declaration":1374,"isOffset":false,"isSlot":false,"src":"3545:4:14","valueSize":1}],"id":1381,"nodeType":"InlineAssembly","src":"3229:456:14"}]},"documentation":{"id":1370,"nodeType":"StructuredDocumentation","src":"2907:99:14","text":" @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}."},"id":1383,"implemented":true,"kind":"function","modifiers":[],"name":"predictDeterministicAddress","nameLocation":"3020:27:14","nodeType":"FunctionDefinition","parameters":{"id":1377,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1372,"mutability":"mutable","name":"implementation","nameLocation":"3065:14:14","nodeType":"VariableDeclaration","scope":1383,"src":"3057:22:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1371,"name":"address","nodeType":"ElementaryTypeName","src":"3057:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1374,"mutability":"mutable","name":"salt","nameLocation":"3097:4:14","nodeType":"VariableDeclaration","scope":1383,"src":"3089:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1373,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3089:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1376,"mutability":"mutable","name":"deployer","nameLocation":"3119:8:14","nodeType":"VariableDeclaration","scope":1383,"src":"3111:16:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1375,"name":"address","nodeType":"ElementaryTypeName","src":"3111:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3047:86:14"},"returnParameters":{"id":1380,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1379,"mutability":"mutable","name":"predicted","nameLocation":"3165:9:14","nodeType":"VariableDeclaration","scope":1383,"src":"3157:17:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1378,"name":"address","nodeType":"ElementaryTypeName","src":"3157:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3156:19:14"},"scope":1404,"src":"3011:680:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1402,"nodeType":"Block","src":"3940:88:14","statements":[{"expression":{"arguments":[{"id":1394,"name":"implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1386,"src":"3985:14:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1395,"name":"salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1388,"src":"4001:4:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[{"id":1398,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967268,"src":"4015:4:14","typeDescriptions":{"typeIdentifier":"t_contract$_Clones_$1404","typeString":"library Clones"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Clones_$1404","typeString":"library Clones"}],"id":1397,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4007:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1396,"name":"address","nodeType":"ElementaryTypeName","src":"4007:7:14","typeDescriptions":{}}},"id":1399,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4007:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1393,"name":"predictDeterministicAddress","nodeType":"Identifier","overloadedDeclarations":[1383,1403],"referencedDeclaration":1383,"src":"3957:27:14","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_bytes32_$_t_address_$returns$_t_address_$","typeString":"function (address,bytes32,address) pure returns (address)"}},"id":1400,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3957:64:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1392,"id":1401,"nodeType":"Return","src":"3950:71:14"}]},"documentation":{"id":1384,"nodeType":"StructuredDocumentation","src":"3697:99:14","text":" @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}."},"id":1403,"implemented":true,"kind":"function","modifiers":[],"name":"predictDeterministicAddress","nameLocation":"3810:27:14","nodeType":"FunctionDefinition","parameters":{"id":1389,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1386,"mutability":"mutable","name":"implementation","nameLocation":"3855:14:14","nodeType":"VariableDeclaration","scope":1403,"src":"3847:22:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1385,"name":"address","nodeType":"ElementaryTypeName","src":"3847:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1388,"mutability":"mutable","name":"salt","nameLocation":"3887:4:14","nodeType":"VariableDeclaration","scope":1403,"src":"3879:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1387,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3879:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3837:60:14"},"returnParameters":{"id":1392,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1391,"mutability":"mutable","name":"predicted","nameLocation":"3929:9:14","nodeType":"VariableDeclaration","scope":1403,"src":"3921:17:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1390,"name":"address","nodeType":"ElementaryTypeName","src":"3921:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3920:19:14"},"scope":1404,"src":"3801:227:14","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":1405,"src":"755:3275:14","usedErrors":[]}],"src":"100:3931:14"},"id":14},"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol","exportedSymbols":{"Address":[2137],"ERC1967Proxy":[1441],"ERC1967Upgrade":[1745],"IBeacon":[1807],"IERC1822Proxiable":[1324],"IERC1967":[1314],"Proxy":[1797],"StorageSlot":[2351]},"id":1442,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1406,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"114:23:15"},{"absolutePath":"@openzeppelin/contracts/proxy/Proxy.sol","file":"../Proxy.sol","id":1407,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1442,"sourceUnit":1798,"src":"139:22:15","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol","file":"./ERC1967Upgrade.sol","id":1408,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1442,"sourceUnit":1746,"src":"162:30:15","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":1410,"name":"Proxy","nameLocations":["592:5:15"],"nodeType":"IdentifierPath","referencedDeclaration":1797,"src":"592:5:15"},"id":1411,"nodeType":"InheritanceSpecifier","src":"592:5:15"},{"baseName":{"id":1412,"name":"ERC1967Upgrade","nameLocations":["599:14:15"],"nodeType":"IdentifierPath","referencedDeclaration":1745,"src":"599:14:15"},"id":1413,"nodeType":"InheritanceSpecifier","src":"599:14:15"}],"canonicalName":"ERC1967Proxy","contractDependencies":[],"contractKind":"contract","documentation":{"id":1409,"nodeType":"StructuredDocumentation","src":"194:372:15","text":" @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an\n implementation address that can be changed. This address is stored in storage in the location specified by\n https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the\n implementation behind the proxy."},"fullyImplemented":true,"id":1441,"linearizedBaseContracts":[1441,1745,1314,1797],"name":"ERC1967Proxy","nameLocation":"576:12:15","nodeType":"ContractDefinition","nodes":[{"body":{"id":1427,"nodeType":"Block","src":"1014:56:15","statements":[{"expression":{"arguments":[{"id":1422,"name":"_logic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1416,"src":"1042:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1423,"name":"_data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1418,"src":"1050:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"66616c7365","id":1424,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1057:5:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":1421,"name":"_upgradeToAndCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1540,"src":"1024:17:15","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_bool_$returns$__$","typeString":"function (address,bytes memory,bool)"}},"id":1425,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1024:39:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1426,"nodeType":"ExpressionStatement","src":"1024:39:15"}]},"documentation":{"id":1414,"nodeType":"StructuredDocumentation","src":"620:333:15","text":" @dev Initializes the upgradeable proxy with an initial implementation specified by `_logic`.\n If `_data` is nonempty, it's used as data in a delegate call to `_logic`. This will typically be an encoded\n function call, and allows initializing the storage of the proxy like a Solidity constructor."},"id":1428,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":1419,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1416,"mutability":"mutable","name":"_logic","nameLocation":"978:6:15","nodeType":"VariableDeclaration","scope":1428,"src":"970:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1415,"name":"address","nodeType":"ElementaryTypeName","src":"970:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1418,"mutability":"mutable","name":"_data","nameLocation":"999:5:15","nodeType":"VariableDeclaration","scope":1428,"src":"986:18:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1417,"name":"bytes","nodeType":"ElementaryTypeName","src":"986:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"969:36:15"},"returnParameters":{"id":1420,"nodeType":"ParameterList","parameters":[],"src":"1014:0:15"},"scope":1441,"src":"958:112:15","stateMutability":"payable","virtual":false,"visibility":"public"},{"baseFunctions":[1762],"body":{"id":1439,"nodeType":"Block","src":"1229:59:15","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":1435,"name":"ERC1967Upgrade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1745,"src":"1246:14:15","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC1967Upgrade_$1745_$","typeString":"type(contract ERC1967Upgrade)"}},"id":1436,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1261:18:15","memberName":"_getImplementation","nodeType":"MemberAccess","referencedDeclaration":1471,"src":"1246:33:15","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1437,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1246:35:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1434,"id":1438,"nodeType":"Return","src":"1239:42:15"}]},"documentation":{"id":1429,"nodeType":"StructuredDocumentation","src":"1076:67:15","text":" @dev Returns the current implementation address."},"id":1440,"implemented":true,"kind":"function","modifiers":[],"name":"_implementation","nameLocation":"1157:15:15","nodeType":"FunctionDefinition","overrides":{"id":1431,"nodeType":"OverrideSpecifier","overrides":[],"src":"1197:8:15"},"parameters":{"id":1430,"nodeType":"ParameterList","parameters":[],"src":"1172:2:15"},"returnParameters":{"id":1434,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1433,"mutability":"mutable","name":"impl","nameLocation":"1223:4:15","nodeType":"VariableDeclaration","scope":1440,"src":"1215:12:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1432,"name":"address","nodeType":"ElementaryTypeName","src":"1215:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1214:14:15"},"scope":1441,"src":"1148:140:15","stateMutability":"view","virtual":true,"visibility":"internal"}],"scope":1442,"src":"567:723:15","usedErrors":[]}],"src":"114:1177:15"},"id":15},"@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol","exportedSymbols":{"Address":[2137],"ERC1967Upgrade":[1745],"IBeacon":[1807],"IERC1822Proxiable":[1324],"IERC1967":[1314],"StorageSlot":[2351]},"id":1746,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1443,"literals":["solidity","^","0.8",".2"],"nodeType":"PragmaDirective","src":"116:23:16"},{"absolutePath":"@openzeppelin/contracts/proxy/beacon/IBeacon.sol","file":"../beacon/IBeacon.sol","id":1444,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1746,"sourceUnit":1808,"src":"141:31:16","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/interfaces/IERC1967.sol","file":"../../interfaces/IERC1967.sol","id":1445,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1746,"sourceUnit":1315,"src":"173:39:16","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/interfaces/draft-IERC1822.sol","file":"../../interfaces/draft-IERC1822.sol","id":1446,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1746,"sourceUnit":1325,"src":"213:45:16","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Address.sol","file":"../../utils/Address.sol","id":1447,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1746,"sourceUnit":2138,"src":"259:33:16","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/StorageSlot.sol","file":"../../utils/StorageSlot.sol","id":1448,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1746,"sourceUnit":2352,"src":"293:37:16","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":1450,"name":"IERC1967","nameLocations":["553:8:16"],"nodeType":"IdentifierPath","referencedDeclaration":1314,"src":"553:8:16"},"id":1451,"nodeType":"InheritanceSpecifier","src":"553:8:16"}],"canonicalName":"ERC1967Upgrade","contractDependencies":[],"contractKind":"contract","documentation":{"id":1449,"nodeType":"StructuredDocumentation","src":"332:184:16","text":" @dev This abstract contract provides getters and event emitting update functions for\n https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\n _Available since v4.1._"},"fullyImplemented":true,"id":1745,"linearizedBaseContracts":[1745,1314],"name":"ERC1967Upgrade","nameLocation":"535:14:16","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":1454,"mutability":"constant","name":"_ROLLBACK_SLOT","nameLocation":"672:14:16","nodeType":"VariableDeclaration","scope":1745,"src":"647:108:16","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1452,"name":"bytes32","nodeType":"ElementaryTypeName","src":"647:7:16","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307834393130666466613136666564333236306564306537313437663763633664613131613630323038623562393430366431326136333536313466666439313433","id":1453,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"689:66:16","typeDescriptions":{"typeIdentifier":"t_rational_33048860383849004559742813297059419343339852917517107368639918720169455489347_by_1","typeString":"int_const 3304...(69 digits omitted)...9347"},"value":"0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143"},"visibility":"private"},{"constant":true,"documentation":{"id":1455,"nodeType":"StructuredDocumentation","src":"762:214:16","text":" @dev Storage slot with the address of the current implementation.\n This is the keccak-256 hash of \"eip1967.proxy.implementation\" subtracted by 1, and is\n validated in the constructor."},"id":1458,"mutability":"constant","name":"_IMPLEMENTATION_SLOT","nameLocation":"1007:20:16","nodeType":"VariableDeclaration","scope":1745,"src":"981:115:16","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1456,"name":"bytes32","nodeType":"ElementaryTypeName","src":"981:7:16","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307833363038393461313362613161333231303636376338323834393264623938646361336532303736636333373335613932306133636135303564333832626263","id":1457,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1030:66:16","typeDescriptions":{"typeIdentifier":"t_rational_24440054405305269366569402256811496959409073762505157381672968839269610695612_by_1","typeString":"int_const 2444...(69 digits omitted)...5612"},"value":"0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc"},"visibility":"internal"},{"body":{"id":1470,"nodeType":"Block","src":"1237:78:16","statements":[{"expression":{"expression":{"arguments":[{"id":1466,"name":"_IMPLEMENTATION_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1458,"src":"1281:20:16","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":1464,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2351,"src":"1254:11:16","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$2351_$","typeString":"type(library StorageSlot)"}},"id":1465,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1266:14:16","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":2273,"src":"1254:26:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$2247_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"}},"id":1467,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1254:48:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$2247_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"id":1468,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1303:5:16","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":2246,"src":"1254:54:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1463,"id":1469,"nodeType":"Return","src":"1247:61:16"}]},"documentation":{"id":1459,"nodeType":"StructuredDocumentation","src":"1103:67:16","text":" @dev Returns the current implementation address."},"id":1471,"implemented":true,"kind":"function","modifiers":[],"name":"_getImplementation","nameLocation":"1184:18:16","nodeType":"FunctionDefinition","parameters":{"id":1460,"nodeType":"ParameterList","parameters":[],"src":"1202:2:16"},"returnParameters":{"id":1463,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1462,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1471,"src":"1228:7:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1461,"name":"address","nodeType":"ElementaryTypeName","src":"1228:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1227:9:16"},"scope":1745,"src":"1175:140:16","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":1494,"nodeType":"Block","src":"1469:196:16","statements":[{"expression":{"arguments":[{"arguments":[{"id":1480,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1474,"src":"1506:17:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":1478,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2137,"src":"1487:7:16","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Address_$2137_$","typeString":"type(library Address)"}},"id":1479,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1495:10:16","memberName":"isContract","nodeType":"MemberAccess","referencedDeclaration":1825,"src":"1487:18:16","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":1481,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1487:37:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"455243313936373a206e657720696d706c656d656e746174696f6e206973206e6f74206120636f6e7472616374","id":1482,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1526:47:16","typeDescriptions":{"typeIdentifier":"t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65","typeString":"literal_string \"ERC1967: new implementation is not a contract\""},"value":"ERC1967: new implementation is not a contract"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65","typeString":"literal_string \"ERC1967: new implementation is not a contract\""}],"id":1477,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"1479:7:16","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1483,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1479:95:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1484,"nodeType":"ExpressionStatement","src":"1479:95:16"},{"expression":{"id":1492,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[{"id":1488,"name":"_IMPLEMENTATION_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1458,"src":"1611:20:16","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":1485,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2351,"src":"1584:11:16","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$2351_$","typeString":"type(library StorageSlot)"}},"id":1487,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1596:14:16","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":2273,"src":"1584:26:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$2247_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"}},"id":1489,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1584:48:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$2247_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"id":1490,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1633:5:16","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":2246,"src":"1584:54:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1491,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1474,"src":"1641:17:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1584:74:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1493,"nodeType":"ExpressionStatement","src":"1584:74:16"}]},"documentation":{"id":1472,"nodeType":"StructuredDocumentation","src":"1321:80:16","text":" @dev Stores a new address in the EIP1967 implementation slot."},"id":1495,"implemented":true,"kind":"function","modifiers":[],"name":"_setImplementation","nameLocation":"1415:18:16","nodeType":"FunctionDefinition","parameters":{"id":1475,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1474,"mutability":"mutable","name":"newImplementation","nameLocation":"1442:17:16","nodeType":"VariableDeclaration","scope":1495,"src":"1434:25:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1473,"name":"address","nodeType":"ElementaryTypeName","src":"1434:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1433:27:16"},"returnParameters":{"id":1476,"nodeType":"ParameterList","parameters":[],"src":"1469:0:16"},"scope":1745,"src":"1406:259:16","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":1509,"nodeType":"Block","src":"1827:96:16","statements":[{"expression":{"arguments":[{"id":1502,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1498,"src":"1856:17:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1501,"name":"_setImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1495,"src":"1837:18:16","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":1503,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1837:37:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1504,"nodeType":"ExpressionStatement","src":"1837:37:16"},{"eventCall":{"arguments":[{"id":1506,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1498,"src":"1898:17:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1505,"name":"Upgraded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1301,"src":"1889:8:16","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":1507,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1889:27:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1508,"nodeType":"EmitStatement","src":"1884:32:16"}]},"documentation":{"id":1496,"nodeType":"StructuredDocumentation","src":"1671:95:16","text":" @dev Perform implementation upgrade\n Emits an {Upgraded} event."},"id":1510,"implemented":true,"kind":"function","modifiers":[],"name":"_upgradeTo","nameLocation":"1780:10:16","nodeType":"FunctionDefinition","parameters":{"id":1499,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1498,"mutability":"mutable","name":"newImplementation","nameLocation":"1799:17:16","nodeType":"VariableDeclaration","scope":1510,"src":"1791:25:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1497,"name":"address","nodeType":"ElementaryTypeName","src":"1791:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1790:27:16"},"returnParameters":{"id":1500,"nodeType":"ParameterList","parameters":[],"src":"1827:0:16"},"scope":1745,"src":"1771:152:16","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1539,"nodeType":"Block","src":"2155:167:16","statements":[{"expression":{"arguments":[{"id":1521,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1513,"src":"2176:17:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1520,"name":"_upgradeTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1510,"src":"2165:10:16","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":1522,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2165:29:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1523,"nodeType":"ExpressionStatement","src":"2165:29:16"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1529,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1527,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1524,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1515,"src":"2208:4:16","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1525,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2213:6:16","memberName":"length","nodeType":"MemberAccess","src":"2208:11:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1526,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2222:1:16","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2208:15:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"id":1528,"name":"forceCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1517,"src":"2227:9:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2208:28:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1538,"nodeType":"IfStatement","src":"2204:112:16","trueBody":{"id":1537,"nodeType":"Block","src":"2238:78:16","statements":[{"expression":{"arguments":[{"id":1533,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1513,"src":"2281:17:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1534,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1515,"src":"2300:4:16","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":1530,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2137,"src":"2252:7:16","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Address_$2137_$","typeString":"type(library Address)"}},"id":1532,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2260:20:16","memberName":"functionDelegateCall","nodeType":"MemberAccess","referencedDeclaration":2024,"src":"2252:28:16","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory) returns (bytes memory)"}},"id":1535,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2252:53:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1536,"nodeType":"ExpressionStatement","src":"2252:53:16"}]}}]},"documentation":{"id":1511,"nodeType":"StructuredDocumentation","src":"1929:123:16","text":" @dev Perform implementation upgrade with additional setup call.\n Emits an {Upgraded} event."},"id":1540,"implemented":true,"kind":"function","modifiers":[],"name":"_upgradeToAndCall","nameLocation":"2066:17:16","nodeType":"FunctionDefinition","parameters":{"id":1518,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1513,"mutability":"mutable","name":"newImplementation","nameLocation":"2092:17:16","nodeType":"VariableDeclaration","scope":1540,"src":"2084:25:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1512,"name":"address","nodeType":"ElementaryTypeName","src":"2084:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1515,"mutability":"mutable","name":"data","nameLocation":"2124:4:16","nodeType":"VariableDeclaration","scope":1540,"src":"2111:17:16","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1514,"name":"bytes","nodeType":"ElementaryTypeName","src":"2111:5:16","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1517,"mutability":"mutable","name":"forceCall","nameLocation":"2135:9:16","nodeType":"VariableDeclaration","scope":1540,"src":"2130:14:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1516,"name":"bool","nodeType":"ElementaryTypeName","src":"2130:4:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2083:62:16"},"returnParameters":{"id":1519,"nodeType":"ParameterList","parameters":[],"src":"2155:0:16"},"scope":1745,"src":"2057:265:16","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1592,"nodeType":"Block","src":"2596:820:16","statements":[{"condition":{"expression":{"arguments":[{"id":1552,"name":"_ROLLBACK_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1454,"src":"2937:14:16","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":1550,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2351,"src":"2910:11:16","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$2351_$","typeString":"type(library StorageSlot)"}},"id":1551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2922:14:16","memberName":"getBooleanSlot","nodeType":"MemberAccess","referencedDeclaration":2284,"src":"2910:26:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_BooleanSlot_$2250_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.BooleanSlot storage pointer)"}},"id":1553,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2910:42:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_BooleanSlot_$2250_storage_ptr","typeString":"struct StorageSlot.BooleanSlot storage pointer"}},"id":1554,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2953:5:16","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":2249,"src":"2910:48:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1590,"nodeType":"Block","src":"3028:382:16","statements":[{"clauses":[{"block":{"id":1575,"nodeType":"Block","src":"3122:115:16","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":1571,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1569,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1566,"src":"3148:4:16","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":1570,"name":"_IMPLEMENTATION_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1458,"src":"3156:20:16","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"3148:28:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"45524331393637557067726164653a20756e737570706f727465642070726f786961626c6555554944","id":1572,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3178:43:16","typeDescriptions":{"typeIdentifier":"t_stringliteral_76b6b6debfc5febf101145a79ecf0b0d2e89e397dfdab2bca99888370411152c","typeString":"literal_string \"ERC1967Upgrade: unsupported proxiableUUID\""},"value":"ERC1967Upgrade: unsupported proxiableUUID"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_76b6b6debfc5febf101145a79ecf0b0d2e89e397dfdab2bca99888370411152c","typeString":"literal_string \"ERC1967Upgrade: unsupported proxiableUUID\""}],"id":1568,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"3140:7:16","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1573,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3140:82:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1574,"nodeType":"ExpressionStatement","src":"3140:82:16"}]},"errorName":"","id":1576,"nodeType":"TryCatchClause","parameters":{"id":1567,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1566,"mutability":"mutable","name":"slot","nameLocation":"3116:4:16","nodeType":"VariableDeclaration","scope":1576,"src":"3108:12:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1565,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3108:7:16","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3107:14:16"},"src":"3099:138:16"},{"block":{"id":1581,"nodeType":"Block","src":"3244:89:16","statements":[{"expression":{"arguments":[{"hexValue":"45524331393637557067726164653a206e657720696d706c656d656e746174696f6e206973206e6f742055555053","id":1578,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3269:48:16","typeDescriptions":{"typeIdentifier":"t_stringliteral_8e8e2fbcb586f700b5b14e2c4a650c8d83b9773c31c5fe8962070ea544e11f24","typeString":"literal_string \"ERC1967Upgrade: new implementation is not UUPS\""},"value":"ERC1967Upgrade: new implementation is not UUPS"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_8e8e2fbcb586f700b5b14e2c4a650c8d83b9773c31c5fe8962070ea544e11f24","typeString":"literal_string \"ERC1967Upgrade: new implementation is not UUPS\""}],"id":1577,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[4294967277,4294967277],"referencedDeclaration":4294967277,"src":"3262:6:16","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":1579,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3262:56:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1580,"nodeType":"ExpressionStatement","src":"3262:56:16"}]},"errorName":"","id":1582,"nodeType":"TryCatchClause","src":"3238:95:16"}],"externalCall":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":1561,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1543,"src":"3064:17:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1560,"name":"IERC1822Proxiable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1324,"src":"3046:17:16","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC1822Proxiable_$1324_$","typeString":"type(contract IERC1822Proxiable)"}},"id":1562,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3046:36:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC1822Proxiable_$1324","typeString":"contract IERC1822Proxiable"}},"id":1563,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3083:13:16","memberName":"proxiableUUID","nodeType":"MemberAccess","referencedDeclaration":1323,"src":"3046:50:16","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_bytes32_$","typeString":"function () view external returns (bytes32)"}},"id":1564,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3046:52:16","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":1583,"nodeType":"TryStatement","src":"3042:291:16"},{"expression":{"arguments":[{"id":1585,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1543,"src":"3364:17:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1586,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1545,"src":"3383:4:16","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":1587,"name":"forceCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1547,"src":"3389:9:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":1584,"name":"_upgradeToAndCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1540,"src":"3346:17:16","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_bool_$returns$__$","typeString":"function (address,bytes memory,bool)"}},"id":1588,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3346:53:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1589,"nodeType":"ExpressionStatement","src":"3346:53:16"}]},"id":1591,"nodeType":"IfStatement","src":"2906:504:16","trueBody":{"id":1559,"nodeType":"Block","src":"2960:62:16","statements":[{"expression":{"arguments":[{"id":1556,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1543,"src":"2993:17:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1555,"name":"_setImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1495,"src":"2974:18:16","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":1557,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2974:37:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1558,"nodeType":"ExpressionStatement","src":"2974:37:16"}]}}]},"documentation":{"id":1541,"nodeType":"StructuredDocumentation","src":"2328:161:16","text":" @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\n Emits an {Upgraded} event."},"id":1593,"implemented":true,"kind":"function","modifiers":[],"name":"_upgradeToAndCallUUPS","nameLocation":"2503:21:16","nodeType":"FunctionDefinition","parameters":{"id":1548,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1543,"mutability":"mutable","name":"newImplementation","nameLocation":"2533:17:16","nodeType":"VariableDeclaration","scope":1593,"src":"2525:25:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1542,"name":"address","nodeType":"ElementaryTypeName","src":"2525:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1545,"mutability":"mutable","name":"data","nameLocation":"2565:4:16","nodeType":"VariableDeclaration","scope":1593,"src":"2552:17:16","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1544,"name":"bytes","nodeType":"ElementaryTypeName","src":"2552:5:16","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1547,"mutability":"mutable","name":"forceCall","nameLocation":"2576:9:16","nodeType":"VariableDeclaration","scope":1593,"src":"2571:14:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1546,"name":"bool","nodeType":"ElementaryTypeName","src":"2571:4:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2524:62:16"},"returnParameters":{"id":1549,"nodeType":"ParameterList","parameters":[],"src":"2596:0:16"},"scope":1745,"src":"2494:922:16","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"constant":true,"documentation":{"id":1594,"nodeType":"StructuredDocumentation","src":"3422:189:16","text":" @dev Storage slot with the admin of the contract.\n This is the keccak-256 hash of \"eip1967.proxy.admin\" subtracted by 1, and is\n validated in the constructor."},"id":1597,"mutability":"constant","name":"_ADMIN_SLOT","nameLocation":"3642:11:16","nodeType":"VariableDeclaration","scope":1745,"src":"3616:106:16","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1595,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3616:7:16","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307862353331323736383461353638623331373361653133623966386136303136653234336536336236653865653131373864366137313738353062356436313033","id":1596,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3656:66:16","typeDescriptions":{"typeIdentifier":"t_rational_81955473079516046949633743016697847541294818689821282749996681496272635257091_by_1","typeString":"int_const 8195...(69 digits omitted)...7091"},"value":"0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103"},"visibility":"internal"},{"body":{"id":1609,"nodeType":"Block","src":"3837:69:16","statements":[{"expression":{"expression":{"arguments":[{"id":1605,"name":"_ADMIN_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1597,"src":"3881:11:16","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":1603,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2351,"src":"3854:11:16","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$2351_$","typeString":"type(library StorageSlot)"}},"id":1604,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3866:14:16","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":2273,"src":"3854:26:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$2247_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"}},"id":1606,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3854:39:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$2247_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"id":1607,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3894:5:16","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":2246,"src":"3854:45:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1602,"id":1608,"nodeType":"Return","src":"3847:52:16"}]},"documentation":{"id":1598,"nodeType":"StructuredDocumentation","src":"3729:50:16","text":" @dev Returns the current admin."},"id":1610,"implemented":true,"kind":"function","modifiers":[],"name":"_getAdmin","nameLocation":"3793:9:16","nodeType":"FunctionDefinition","parameters":{"id":1599,"nodeType":"ParameterList","parameters":[],"src":"3802:2:16"},"returnParameters":{"id":1602,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1601,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1610,"src":"3828:7:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1600,"name":"address","nodeType":"ElementaryTypeName","src":"3828:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3827:9:16"},"scope":1745,"src":"3784:122:16","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":1635,"nodeType":"Block","src":"4033:156:16","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1622,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1617,"name":"newAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1613,"src":"4051:8:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":1620,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4071:1:16","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1619,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4063:7:16","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1618,"name":"address","nodeType":"ElementaryTypeName","src":"4063:7:16","typeDescriptions":{}}},"id":1621,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4063:10:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4051:22:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"455243313936373a206e65772061646d696e20697320746865207a65726f2061646472657373","id":1623,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4075:40:16","typeDescriptions":{"typeIdentifier":"t_stringliteral_3820e16891102c1360a787e6e648431097d92537f969d458f5c94b56f8318be5","typeString":"literal_string \"ERC1967: new admin is the zero address\""},"value":"ERC1967: new admin is the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_3820e16891102c1360a787e6e648431097d92537f969d458f5c94b56f8318be5","typeString":"literal_string \"ERC1967: new admin is the zero address\""}],"id":1616,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"4043:7:16","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1624,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4043:73:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1625,"nodeType":"ExpressionStatement","src":"4043:73:16"},{"expression":{"id":1633,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[{"id":1629,"name":"_ADMIN_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1597,"src":"4153:11:16","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":1626,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2351,"src":"4126:11:16","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$2351_$","typeString":"type(library StorageSlot)"}},"id":1628,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4138:14:16","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":2273,"src":"4126:26:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$2247_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"}},"id":1630,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4126:39:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$2247_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"id":1631,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4166:5:16","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":2246,"src":"4126:45:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1632,"name":"newAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1613,"src":"4174:8:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4126:56:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1634,"nodeType":"ExpressionStatement","src":"4126:56:16"}]},"documentation":{"id":1611,"nodeType":"StructuredDocumentation","src":"3912:71:16","text":" @dev Stores a new address in the EIP1967 admin slot."},"id":1636,"implemented":true,"kind":"function","modifiers":[],"name":"_setAdmin","nameLocation":"3997:9:16","nodeType":"FunctionDefinition","parameters":{"id":1614,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1613,"mutability":"mutable","name":"newAdmin","nameLocation":"4015:8:16","nodeType":"VariableDeclaration","scope":1636,"src":"4007:16:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1612,"name":"address","nodeType":"ElementaryTypeName","src":"4007:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4006:18:16"},"returnParameters":{"id":1615,"nodeType":"ParameterList","parameters":[],"src":"4033:0:16"},"scope":1745,"src":"3988:201:16","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":1652,"nodeType":"Block","src":"4349:86:16","statements":[{"eventCall":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":1643,"name":"_getAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1610,"src":"4377:9:16","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1644,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4377:11:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1645,"name":"newAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1639,"src":"4390:8:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1642,"name":"AdminChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1308,"src":"4364:12:16","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":1646,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4364:35:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1647,"nodeType":"EmitStatement","src":"4359:40:16"},{"expression":{"arguments":[{"id":1649,"name":"newAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1639,"src":"4419:8:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1648,"name":"_setAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1636,"src":"4409:9:16","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":1650,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4409:19:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1651,"nodeType":"ExpressionStatement","src":"4409:19:16"}]},"documentation":{"id":1637,"nodeType":"StructuredDocumentation","src":"4195:100:16","text":" @dev Changes the admin of the proxy.\n Emits an {AdminChanged} event."},"id":1653,"implemented":true,"kind":"function","modifiers":[],"name":"_changeAdmin","nameLocation":"4309:12:16","nodeType":"FunctionDefinition","parameters":{"id":1640,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1639,"mutability":"mutable","name":"newAdmin","nameLocation":"4330:8:16","nodeType":"VariableDeclaration","scope":1653,"src":"4322:16:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1638,"name":"address","nodeType":"ElementaryTypeName","src":"4322:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4321:18:16"},"returnParameters":{"id":1641,"nodeType":"ParameterList","parameters":[],"src":"4349:0:16"},"scope":1745,"src":"4300:135:16","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"constant":true,"documentation":{"id":1654,"nodeType":"StructuredDocumentation","src":"4441:232:16","text":" @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\n This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor."},"id":1657,"mutability":"constant","name":"_BEACON_SLOT","nameLocation":"4704:12:16","nodeType":"VariableDeclaration","scope":1745,"src":"4678:107:16","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1655,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4678:7:16","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307861336630616437346535343233616562666438306433656634333436353738333335613961373261656165653539666636636233353832623335313333643530","id":1656,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4719:66:16","typeDescriptions":{"typeIdentifier":"t_rational_74152234768234802001998023604048924213078445070507226371336425913862612794704_by_1","typeString":"int_const 7415...(69 digits omitted)...4704"},"value":"0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50"},"visibility":"internal"},{"body":{"id":1669,"nodeType":"Block","src":"4902:70:16","statements":[{"expression":{"expression":{"arguments":[{"id":1665,"name":"_BEACON_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1657,"src":"4946:12:16","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":1663,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2351,"src":"4919:11:16","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$2351_$","typeString":"type(library StorageSlot)"}},"id":1664,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4931:14:16","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":2273,"src":"4919:26:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$2247_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"}},"id":1666,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4919:40:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$2247_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"id":1667,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4960:5:16","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":2246,"src":"4919:46:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1662,"id":1668,"nodeType":"Return","src":"4912:53:16"}]},"documentation":{"id":1658,"nodeType":"StructuredDocumentation","src":"4792:51:16","text":" @dev Returns the current beacon."},"id":1670,"implemented":true,"kind":"function","modifiers":[],"name":"_getBeacon","nameLocation":"4857:10:16","nodeType":"FunctionDefinition","parameters":{"id":1659,"nodeType":"ParameterList","parameters":[],"src":"4867:2:16"},"returnParameters":{"id":1662,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1661,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1670,"src":"4893:7:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1660,"name":"address","nodeType":"ElementaryTypeName","src":"4893:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4892:9:16"},"scope":1745,"src":"4848:124:16","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":1705,"nodeType":"Block","src":"5101:324:16","statements":[{"expression":{"arguments":[{"arguments":[{"id":1679,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1673,"src":"5138:9:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":1677,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2137,"src":"5119:7:16","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Address_$2137_$","typeString":"type(library Address)"}},"id":1678,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5127:10:16","memberName":"isContract","nodeType":"MemberAccess","referencedDeclaration":1825,"src":"5119:18:16","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":1680,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5119:29:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"455243313936373a206e657720626561636f6e206973206e6f74206120636f6e7472616374","id":1681,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5150:39:16","typeDescriptions":{"typeIdentifier":"t_stringliteral_9589b7809634e4928033de18bb696e9af4ef71b703652af5245f2dbebf2f4470","typeString":"literal_string \"ERC1967: new beacon is not a contract\""},"value":"ERC1967: new beacon is not a contract"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9589b7809634e4928033de18bb696e9af4ef71b703652af5245f2dbebf2f4470","typeString":"literal_string \"ERC1967: new beacon is not a contract\""}],"id":1676,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"5111:7:16","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1682,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5111:79:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1683,"nodeType":"ExpressionStatement","src":"5111:79:16"},{"expression":{"arguments":[{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":1688,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1673,"src":"5248:9:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1687,"name":"IBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1807,"src":"5240:7:16","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBeacon_$1807_$","typeString":"type(contract IBeacon)"}},"id":1689,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5240:18:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBeacon_$1807","typeString":"contract IBeacon"}},"id":1690,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5259:14:16","memberName":"implementation","nodeType":"MemberAccess","referencedDeclaration":1806,"src":"5240:33:16","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":1691,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5240:35:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":1685,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2137,"src":"5221:7:16","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Address_$2137_$","typeString":"type(library Address)"}},"id":1686,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5229:10:16","memberName":"isContract","nodeType":"MemberAccess","referencedDeclaration":1825,"src":"5221:18:16","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":1692,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5221:55:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"455243313936373a20626561636f6e20696d706c656d656e746174696f6e206973206e6f74206120636f6e7472616374","id":1693,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5290:50:16","typeDescriptions":{"typeIdentifier":"t_stringliteral_f95fd1f5b5578816eb23f6ca0f2439b4b5e4094dc16e99c3b8e91603a83f93c8","typeString":"literal_string \"ERC1967: beacon implementation is not a contract\""},"value":"ERC1967: beacon implementation is not a contract"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_f95fd1f5b5578816eb23f6ca0f2439b4b5e4094dc16e99c3b8e91603a83f93c8","typeString":"literal_string \"ERC1967: beacon implementation is not a contract\""}],"id":1684,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"5200:7:16","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1694,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5200:150:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1695,"nodeType":"ExpressionStatement","src":"5200:150:16"},{"expression":{"id":1703,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[{"id":1699,"name":"_BEACON_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1657,"src":"5387:12:16","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":1696,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2351,"src":"5360:11:16","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$2351_$","typeString":"type(library StorageSlot)"}},"id":1698,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5372:14:16","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":2273,"src":"5360:26:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$2247_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"}},"id":1700,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5360:40:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$2247_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"id":1701,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5401:5:16","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":2246,"src":"5360:46:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1702,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1673,"src":"5409:9:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5360:58:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1704,"nodeType":"ExpressionStatement","src":"5360:58:16"}]},"documentation":{"id":1671,"nodeType":"StructuredDocumentation","src":"4978:71:16","text":" @dev Stores a new beacon in the EIP1967 beacon slot."},"id":1706,"implemented":true,"kind":"function","modifiers":[],"name":"_setBeacon","nameLocation":"5063:10:16","nodeType":"FunctionDefinition","parameters":{"id":1674,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1673,"mutability":"mutable","name":"newBeacon","nameLocation":"5082:9:16","nodeType":"VariableDeclaration","scope":1706,"src":"5074:17:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1672,"name":"address","nodeType":"ElementaryTypeName","src":"5074:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5073:19:16"},"returnParameters":{"id":1675,"nodeType":"ParameterList","parameters":[],"src":"5101:0:16"},"scope":1745,"src":"5054:371:16","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":1743,"nodeType":"Block","src":"5824:217:16","statements":[{"expression":{"arguments":[{"id":1717,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1709,"src":"5845:9:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1716,"name":"_setBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1706,"src":"5834:10:16","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":1718,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5834:21:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1719,"nodeType":"ExpressionStatement","src":"5834:21:16"},{"eventCall":{"arguments":[{"id":1721,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1709,"src":"5885:9:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1720,"name":"BeaconUpgraded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1313,"src":"5870:14:16","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":1722,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5870:25:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1723,"nodeType":"EmitStatement","src":"5865:30:16"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1729,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1727,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1724,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1711,"src":"5909:4:16","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1725,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5914:6:16","memberName":"length","nodeType":"MemberAccess","src":"5909:11:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1726,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5923:1:16","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5909:15:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"id":1728,"name":"forceCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1713,"src":"5928:9:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"5909:28:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1742,"nodeType":"IfStatement","src":"5905:130:16","trueBody":{"id":1741,"nodeType":"Block","src":"5939:96:16","statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":1734,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1709,"src":"5990:9:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1733,"name":"IBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1807,"src":"5982:7:16","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBeacon_$1807_$","typeString":"type(contract IBeacon)"}},"id":1735,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5982:18:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBeacon_$1807","typeString":"contract IBeacon"}},"id":1736,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6001:14:16","memberName":"implementation","nodeType":"MemberAccess","referencedDeclaration":1806,"src":"5982:33:16","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":1737,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5982:35:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1738,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1711,"src":"6019:4:16","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":1730,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2137,"src":"5953:7:16","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Address_$2137_$","typeString":"type(library Address)"}},"id":1732,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5961:20:16","memberName":"functionDelegateCall","nodeType":"MemberAccess","referencedDeclaration":2024,"src":"5953:28:16","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory) returns (bytes memory)"}},"id":1739,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5953:71:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1740,"nodeType":"ExpressionStatement","src":"5953:71:16"}]}}]},"documentation":{"id":1707,"nodeType":"StructuredDocumentation","src":"5431:292:16","text":" @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\n not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\n Emits a {BeaconUpgraded} event."},"id":1744,"implemented":true,"kind":"function","modifiers":[],"name":"_upgradeBeaconToAndCall","nameLocation":"5737:23:16","nodeType":"FunctionDefinition","parameters":{"id":1714,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1709,"mutability":"mutable","name":"newBeacon","nameLocation":"5769:9:16","nodeType":"VariableDeclaration","scope":1744,"src":"5761:17:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1708,"name":"address","nodeType":"ElementaryTypeName","src":"5761:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1711,"mutability":"mutable","name":"data","nameLocation":"5793:4:16","nodeType":"VariableDeclaration","scope":1744,"src":"5780:17:16","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1710,"name":"bytes","nodeType":"ElementaryTypeName","src":"5780:5:16","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1713,"mutability":"mutable","name":"forceCall","nameLocation":"5804:9:16","nodeType":"VariableDeclaration","scope":1744,"src":"5799:14:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1712,"name":"bool","nodeType":"ElementaryTypeName","src":"5799:4:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5760:54:16"},"returnParameters":{"id":1715,"nodeType":"ParameterList","parameters":[],"src":"5824:0:16"},"scope":1745,"src":"5728:313:16","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":1746,"src":"517:5526:16","usedErrors":[]}],"src":"116:5928:16"},"id":16},"@openzeppelin/contracts/proxy/Proxy.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/proxy/Proxy.sol","exportedSymbols":{"Proxy":[1797]},"id":1798,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1747,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"99:23:17"},{"abstract":true,"baseContracts":[],"canonicalName":"Proxy","contractDependencies":[],"contractKind":"contract","documentation":{"id":1748,"nodeType":"StructuredDocumentation","src":"124:598:17","text":" @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\n instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\n be specified by overriding the virtual {_implementation} function.\n Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\n different contract through the {_delegate} function.\n The success and return data of the delegated call will be returned back to the caller of the proxy."},"fullyImplemented":false,"id":1797,"linearizedBaseContracts":[1797],"name":"Proxy","nameLocation":"741:5:17","nodeType":"ContractDefinition","nodes":[{"body":{"id":1755,"nodeType":"Block","src":"1008:835:17","statements":[{"AST":{"nodeType":"YulBlock","src":"1027:810:17","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1280:1:17","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1283:1:17","type":"","value":"0"},{"arguments":[],"functionName":{"name":"calldatasize","nodeType":"YulIdentifier","src":"1286:12:17"},"nodeType":"YulFunctionCall","src":"1286:14:17"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"1267:12:17"},"nodeType":"YulFunctionCall","src":"1267:34:17"},"nodeType":"YulExpressionStatement","src":"1267:34:17"},{"nodeType":"YulVariableDeclaration","src":"1428:74:17","value":{"arguments":[{"arguments":[],"functionName":{"name":"gas","nodeType":"YulIdentifier","src":"1455:3:17"},"nodeType":"YulFunctionCall","src":"1455:5:17"},{"name":"implementation","nodeType":"YulIdentifier","src":"1462:14:17"},{"kind":"number","nodeType":"YulLiteral","src":"1478:1:17","type":"","value":"0"},{"arguments":[],"functionName":{"name":"calldatasize","nodeType":"YulIdentifier","src":"1481:12:17"},"nodeType":"YulFunctionCall","src":"1481:14:17"},{"kind":"number","nodeType":"YulLiteral","src":"1497:1:17","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1500:1:17","type":"","value":"0"}],"functionName":{"name":"delegatecall","nodeType":"YulIdentifier","src":"1442:12:17"},"nodeType":"YulFunctionCall","src":"1442:60:17"},"variables":[{"name":"result","nodeType":"YulTypedName","src":"1432:6:17","type":""}]},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1570:1:17","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1573:1:17","type":"","value":"0"},{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"1576:14:17"},"nodeType":"YulFunctionCall","src":"1576:16:17"}],"functionName":{"name":"returndatacopy","nodeType":"YulIdentifier","src":"1555:14:17"},"nodeType":"YulFunctionCall","src":"1555:38:17"},"nodeType":"YulExpressionStatement","src":"1555:38:17"},{"cases":[{"body":{"nodeType":"YulBlock","src":"1688:59:17","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1713:1:17","type":"","value":"0"},{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"1716:14:17"},"nodeType":"YulFunctionCall","src":"1716:16:17"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1706:6:17"},"nodeType":"YulFunctionCall","src":"1706:27:17"},"nodeType":"YulExpressionStatement","src":"1706:27:17"}]},"nodeType":"YulCase","src":"1681:66:17","value":{"kind":"number","nodeType":"YulLiteral","src":"1686:1:17","type":"","value":"0"}},{"body":{"nodeType":"YulBlock","src":"1768:59:17","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1793:1:17","type":"","value":"0"},{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"1796:14:17"},"nodeType":"YulFunctionCall","src":"1796:16:17"}],"functionName":{"name":"return","nodeType":"YulIdentifier","src":"1786:6:17"},"nodeType":"YulFunctionCall","src":"1786:27:17"},"nodeType":"YulExpressionStatement","src":"1786:27:17"}]},"nodeType":"YulCase","src":"1760:67:17","value":"default"}],"expression":{"name":"result","nodeType":"YulIdentifier","src":"1614:6:17"},"nodeType":"YulSwitch","src":"1607:220:17"}]},"evmVersion":"london","externalReferences":[{"declaration":1751,"isOffset":false,"isSlot":false,"src":"1462:14:17","valueSize":1}],"id":1754,"nodeType":"InlineAssembly","src":"1018:819:17"}]},"documentation":{"id":1749,"nodeType":"StructuredDocumentation","src":"753:190:17","text":" @dev Delegates the current call to `implementation`.\n This function does not return to its internal call site, it will return directly to the external caller."},"id":1756,"implemented":true,"kind":"function","modifiers":[],"name":"_delegate","nameLocation":"957:9:17","nodeType":"FunctionDefinition","parameters":{"id":1752,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1751,"mutability":"mutable","name":"implementation","nameLocation":"975:14:17","nodeType":"VariableDeclaration","scope":1756,"src":"967:22:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1750,"name":"address","nodeType":"ElementaryTypeName","src":"967:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"966:24:17"},"returnParameters":{"id":1753,"nodeType":"ParameterList","parameters":[],"src":"1008:0:17"},"scope":1797,"src":"948:895:17","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"documentation":{"id":1757,"nodeType":"StructuredDocumentation","src":"1849:173:17","text":" @dev This is a virtual function that should be overridden so it returns the address to which the fallback function\n and {_fallback} should delegate."},"id":1762,"implemented":false,"kind":"function","modifiers":[],"name":"_implementation","nameLocation":"2036:15:17","nodeType":"FunctionDefinition","parameters":{"id":1758,"nodeType":"ParameterList","parameters":[],"src":"2051:2:17"},"returnParameters":{"id":1761,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1760,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1762,"src":"2085:7:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1759,"name":"address","nodeType":"ElementaryTypeName","src":"2085:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2084:9:17"},"scope":1797,"src":"2027:67:17","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":1774,"nodeType":"Block","src":"2360:72:17","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":1766,"name":"_beforeFallback","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1796,"src":"2370:15:17","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":1767,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2370:17:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1768,"nodeType":"ExpressionStatement","src":"2370:17:17"},{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":1770,"name":"_implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1762,"src":"2407:15:17","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1771,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2407:17:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1769,"name":"_delegate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1756,"src":"2397:9:17","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":1772,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2397:28:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1773,"nodeType":"ExpressionStatement","src":"2397:28:17"}]},"documentation":{"id":1763,"nodeType":"StructuredDocumentation","src":"2100:217:17","text":" @dev Delegates the current call to the address returned by `_implementation()`.\n This function does not return to its internal call site, it will return directly to the external caller."},"id":1775,"implemented":true,"kind":"function","modifiers":[],"name":"_fallback","nameLocation":"2331:9:17","nodeType":"FunctionDefinition","parameters":{"id":1764,"nodeType":"ParameterList","parameters":[],"src":"2340:2:17"},"returnParameters":{"id":1765,"nodeType":"ParameterList","parameters":[],"src":"2360:0:17"},"scope":1797,"src":"2322:110:17","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":1782,"nodeType":"Block","src":"2665:28:17","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":1779,"name":"_fallback","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1775,"src":"2675:9:17","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":1780,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2675:11:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1781,"nodeType":"ExpressionStatement","src":"2675:11:17"}]},"documentation":{"id":1776,"nodeType":"StructuredDocumentation","src":"2438:186:17","text":" @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\n function in the contract matches the call data."},"id":1783,"implemented":true,"kind":"fallback","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":1777,"nodeType":"ParameterList","parameters":[],"src":"2637:2:17"},"returnParameters":{"id":1778,"nodeType":"ParameterList","parameters":[],"src":"2665:0:17"},"scope":1797,"src":"2629:64:17","stateMutability":"payable","virtual":true,"visibility":"external"},{"body":{"id":1790,"nodeType":"Block","src":"2888:28:17","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":1787,"name":"_fallback","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1775,"src":"2898:9:17","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":1788,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2898:11:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1789,"nodeType":"ExpressionStatement","src":"2898:11:17"}]},"documentation":{"id":1784,"nodeType":"StructuredDocumentation","src":"2699:149:17","text":" @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data\n is empty."},"id":1791,"implemented":true,"kind":"receive","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":1785,"nodeType":"ParameterList","parameters":[],"src":"2860:2:17"},"returnParameters":{"id":1786,"nodeType":"ParameterList","parameters":[],"src":"2888:0:17"},"scope":1797,"src":"2853:63:17","stateMutability":"payable","virtual":true,"visibility":"external"},{"body":{"id":1795,"nodeType":"Block","src":"3242:2:17","statements":[]},"documentation":{"id":1792,"nodeType":"StructuredDocumentation","src":"2922:271:17","text":" @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`\n call, or as part of the Solidity `fallback` or `receive` functions.\n If overridden should call `super._beforeFallback()`."},"id":1796,"implemented":true,"kind":"function","modifiers":[],"name":"_beforeFallback","nameLocation":"3207:15:17","nodeType":"FunctionDefinition","parameters":{"id":1793,"nodeType":"ParameterList","parameters":[],"src":"3222:2:17"},"returnParameters":{"id":1794,"nodeType":"ParameterList","parameters":[],"src":"3242:0:17"},"scope":1797,"src":"3198:46:17","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":1798,"src":"723:2523:17","usedErrors":[]}],"src":"99:3148:17"},"id":17},"@openzeppelin/contracts/proxy/beacon/IBeacon.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/proxy/beacon/IBeacon.sol","exportedSymbols":{"IBeacon":[1807]},"id":1808,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1799,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"93:23:18"},{"abstract":false,"baseContracts":[],"canonicalName":"IBeacon","contractDependencies":[],"contractKind":"interface","documentation":{"id":1800,"nodeType":"StructuredDocumentation","src":"118:79:18","text":" @dev This is the interface that {BeaconProxy} expects of its beacon."},"fullyImplemented":false,"id":1807,"linearizedBaseContracts":[1807],"name":"IBeacon","nameLocation":"208:7:18","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":1801,"nodeType":"StructuredDocumentation","src":"222:162:18","text":" @dev Must return an address that can be used as a delegate call target.\n {BeaconProxy} will check that this address is a contract."},"functionSelector":"5c60da1b","id":1806,"implemented":false,"kind":"function","modifiers":[],"name":"implementation","nameLocation":"398:14:18","nodeType":"FunctionDefinition","parameters":{"id":1802,"nodeType":"ParameterList","parameters":[],"src":"412:2:18"},"returnParameters":{"id":1805,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1804,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1806,"src":"438:7:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1803,"name":"address","nodeType":"ElementaryTypeName","src":"438:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"437:9:18"},"scope":1807,"src":"389:58:18","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":1808,"src":"198:251:18","usedErrors":[]}],"src":"93:357:18"},"id":18},"@openzeppelin/contracts/utils/Address.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/Address.sol","exportedSymbols":{"Address":[2137]},"id":2138,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1809,"literals":["solidity","^","0.8",".1"],"nodeType":"PragmaDirective","src":"101:23:19"},{"abstract":false,"baseContracts":[],"canonicalName":"Address","contractDependencies":[],"contractKind":"library","documentation":{"id":1810,"nodeType":"StructuredDocumentation","src":"126:67:19","text":" @dev Collection of functions related to the address type"},"fullyImplemented":true,"id":2137,"linearizedBaseContracts":[2137],"name":"Address","nameLocation":"202:7:19","nodeType":"ContractDefinition","nodes":[{"body":{"id":1824,"nodeType":"Block","src":"1478:254:19","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1822,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":1818,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1813,"src":"1702:7:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1819,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1710:4:19","memberName":"code","nodeType":"MemberAccess","src":"1702:12:19","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1820,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1715:6:19","memberName":"length","nodeType":"MemberAccess","src":"1702:19:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1821,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1724:1:19","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1702:23:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1817,"id":1823,"nodeType":"Return","src":"1695:30:19"}]},"documentation":{"id":1811,"nodeType":"StructuredDocumentation","src":"216:1191:19","text":" @dev Returns true if `account` is a contract.\n [IMPORTANT]\n ====\n It is unsafe to assume that an address for which this function returns\n false is an externally-owned account (EOA) and not a contract.\n Among others, `isContract` will return false for the following\n types of addresses:\n - an externally-owned account\n - a contract in construction\n - an address where a contract will be created\n - an address where a contract lived, but was destroyed\n Furthermore, `isContract` will also return true if the target contract within\n the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\n which only has an effect at the end of a transaction.\n ====\n [IMPORTANT]\n ====\n You shouldn't rely on `isContract` to protect against flash loan attacks!\n Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\n like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\n constructor.\n ===="},"id":1825,"implemented":true,"kind":"function","modifiers":[],"name":"isContract","nameLocation":"1421:10:19","nodeType":"FunctionDefinition","parameters":{"id":1814,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1813,"mutability":"mutable","name":"account","nameLocation":"1440:7:19","nodeType":"VariableDeclaration","scope":1825,"src":"1432:15:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1812,"name":"address","nodeType":"ElementaryTypeName","src":"1432:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1431:17:19"},"returnParameters":{"id":1817,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1816,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1825,"src":"1472:4:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1815,"name":"bool","nodeType":"ElementaryTypeName","src":"1472:4:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1471:6:19"},"scope":2137,"src":"1412:320:19","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":1858,"nodeType":"Block","src":"2718:241:19","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1840,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":1836,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967268,"src":"2744:4:19","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$2137","typeString":"library Address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Address_$2137","typeString":"library Address"}],"id":1835,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2736:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1834,"name":"address","nodeType":"ElementaryTypeName","src":"2736:7:19","typeDescriptions":{}}},"id":1837,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2736:13:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1838,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2750:7:19","memberName":"balance","nodeType":"MemberAccess","src":"2736:21:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":1839,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1830,"src":"2761:6:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2736:31:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20696e73756666696369656e742062616c616e6365","id":1841,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2769:31:19","typeDescriptions":{"typeIdentifier":"t_stringliteral_5597a22abd0ef5332f8053862eb236db7590f17e2b93a53f63a103becfb561f9","typeString":"literal_string \"Address: insufficient balance\""},"value":"Address: insufficient balance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5597a22abd0ef5332f8053862eb236db7590f17e2b93a53f63a103becfb561f9","typeString":"literal_string \"Address: insufficient balance\""}],"id":1833,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"2728:7:19","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1842,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2728:73:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1843,"nodeType":"ExpressionStatement","src":"2728:73:19"},{"assignments":[1845,null],"declarations":[{"constant":false,"id":1845,"mutability":"mutable","name":"success","nameLocation":"2818:7:19","nodeType":"VariableDeclaration","scope":1858,"src":"2813:12:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1844,"name":"bool","nodeType":"ElementaryTypeName","src":"2813:4:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":1852,"initialValue":{"arguments":[{"hexValue":"","id":1850,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2861:2:19","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"id":1846,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1828,"src":"2831:9:19","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":1847,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2841:4:19","memberName":"call","nodeType":"MemberAccess","src":"2831:14:19","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":1849,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":1848,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1830,"src":"2853:6:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"2831:29:19","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":1851,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2831:33:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"2812:52:19"},{"expression":{"arguments":[{"id":1854,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1845,"src":"2882:7:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d61792068617665207265766572746564","id":1855,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2891:60:19","typeDescriptions":{"typeIdentifier":"t_stringliteral_51ddaa38748c0a1144620fb5bfe8edab31ea437571ad591a7734bbfd0429aeae","typeString":"literal_string \"Address: unable to send value, recipient may have reverted\""},"value":"Address: unable to send value, recipient may have reverted"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_51ddaa38748c0a1144620fb5bfe8edab31ea437571ad591a7734bbfd0429aeae","typeString":"literal_string \"Address: unable to send value, recipient may have reverted\""}],"id":1853,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"2874:7:19","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1856,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2874:78:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1857,"nodeType":"ExpressionStatement","src":"2874:78:19"}]},"documentation":{"id":1826,"nodeType":"StructuredDocumentation","src":"1738:904:19","text":" @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n `recipient`, forwarding all available gas and reverting on errors.\n https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n of certain opcodes, possibly making contracts go over the 2300 gas limit\n imposed by `transfer`, making them unable to receive funds via\n `transfer`. {sendValue} removes this limitation.\n https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n IMPORTANT: because control is transferred to `recipient`, care must be\n taken to not create reentrancy vulnerabilities. Consider using\n {ReentrancyGuard} or the\n https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]."},"id":1859,"implemented":true,"kind":"function","modifiers":[],"name":"sendValue","nameLocation":"2656:9:19","nodeType":"FunctionDefinition","parameters":{"id":1831,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1828,"mutability":"mutable","name":"recipient","nameLocation":"2682:9:19","nodeType":"VariableDeclaration","scope":1859,"src":"2666:25:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":1827,"name":"address","nodeType":"ElementaryTypeName","src":"2666:15:19","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"},{"constant":false,"id":1830,"mutability":"mutable","name":"amount","nameLocation":"2701:6:19","nodeType":"VariableDeclaration","scope":1859,"src":"2693:14:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1829,"name":"uint256","nodeType":"ElementaryTypeName","src":"2693:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2665:43:19"},"returnParameters":{"id":1832,"nodeType":"ParameterList","parameters":[],"src":"2718:0:19"},"scope":2137,"src":"2647:312:19","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1876,"nodeType":"Block","src":"3790:96:19","statements":[{"expression":{"arguments":[{"id":1870,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1862,"src":"3829:6:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1871,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1864,"src":"3837:4:19","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"30","id":1872,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3843:1:19","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"416464726573733a206c6f772d6c6576656c2063616c6c206661696c6564","id":1873,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3846:32:19","typeDescriptions":{"typeIdentifier":"t_stringliteral_24d7ab5d382116e64324f19950ca9340b8af1ddeb09a8d026e0a3c6a01dcc9df","typeString":"literal_string \"Address: low-level call failed\""},"value":"Address: low-level call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_stringliteral_24d7ab5d382116e64324f19950ca9340b8af1ddeb09a8d026e0a3c6a01dcc9df","typeString":"literal_string \"Address: low-level call failed\""}],"id":1869,"name":"functionCallWithValue","nodeType":"Identifier","overloadedDeclarations":[1917,1961],"referencedDeclaration":1961,"src":"3807:21:19","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,uint256,string memory) returns (bytes memory)"}},"id":1874,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3807:72:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":1868,"id":1875,"nodeType":"Return","src":"3800:79:19"}]},"documentation":{"id":1860,"nodeType":"StructuredDocumentation","src":"2965:731:19","text":" @dev Performs a Solidity function call using a low level `call`. A\n plain `call` is an unsafe replacement for a function call: use this\n function instead.\n If `target` reverts with a revert reason, it is bubbled up by this\n function (like regular Solidity function calls).\n Returns the raw returned data. To convert to the expected return value,\n use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n Requirements:\n - `target` must be a contract.\n - calling `target` with `data` must not revert.\n _Available since v3.1._"},"id":1877,"implemented":true,"kind":"function","modifiers":[],"name":"functionCall","nameLocation":"3710:12:19","nodeType":"FunctionDefinition","parameters":{"id":1865,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1862,"mutability":"mutable","name":"target","nameLocation":"3731:6:19","nodeType":"VariableDeclaration","scope":1877,"src":"3723:14:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1861,"name":"address","nodeType":"ElementaryTypeName","src":"3723:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1864,"mutability":"mutable","name":"data","nameLocation":"3752:4:19","nodeType":"VariableDeclaration","scope":1877,"src":"3739:17:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1863,"name":"bytes","nodeType":"ElementaryTypeName","src":"3739:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3722:35:19"},"returnParameters":{"id":1868,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1867,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1877,"src":"3776:12:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1866,"name":"bytes","nodeType":"ElementaryTypeName","src":"3776:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3775:14:19"},"scope":2137,"src":"3701:185:19","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1896,"nodeType":"Block","src":"4255:76:19","statements":[{"expression":{"arguments":[{"id":1890,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1880,"src":"4294:6:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1891,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1882,"src":"4302:4:19","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"30","id":1892,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4308:1:19","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":1893,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1884,"src":"4311:12:19","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1889,"name":"functionCallWithValue","nodeType":"Identifier","overloadedDeclarations":[1917,1961],"referencedDeclaration":1961,"src":"4272:21:19","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,uint256,string memory) returns (bytes memory)"}},"id":1894,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4272:52:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":1888,"id":1895,"nodeType":"Return","src":"4265:59:19"}]},"documentation":{"id":1878,"nodeType":"StructuredDocumentation","src":"3892:211:19","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n `errorMessage` as a fallback revert reason when `target` reverts.\n _Available since v3.1._"},"id":1897,"implemented":true,"kind":"function","modifiers":[],"name":"functionCall","nameLocation":"4117:12:19","nodeType":"FunctionDefinition","parameters":{"id":1885,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1880,"mutability":"mutable","name":"target","nameLocation":"4147:6:19","nodeType":"VariableDeclaration","scope":1897,"src":"4139:14:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1879,"name":"address","nodeType":"ElementaryTypeName","src":"4139:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1882,"mutability":"mutable","name":"data","nameLocation":"4176:4:19","nodeType":"VariableDeclaration","scope":1897,"src":"4163:17:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1881,"name":"bytes","nodeType":"ElementaryTypeName","src":"4163:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1884,"mutability":"mutable","name":"errorMessage","nameLocation":"4204:12:19","nodeType":"VariableDeclaration","scope":1897,"src":"4190:26:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1883,"name":"string","nodeType":"ElementaryTypeName","src":"4190:6:19","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"4129:93:19"},"returnParameters":{"id":1888,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1887,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1897,"src":"4241:12:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1886,"name":"bytes","nodeType":"ElementaryTypeName","src":"4241:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4240:14:19"},"scope":2137,"src":"4108:223:19","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1916,"nodeType":"Block","src":"4806:111:19","statements":[{"expression":{"arguments":[{"id":1910,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1900,"src":"4845:6:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1911,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1902,"src":"4853:4:19","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":1912,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1904,"src":"4859:5:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"416464726573733a206c6f772d6c6576656c2063616c6c20776974682076616c7565206661696c6564","id":1913,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4866:43:19","typeDescriptions":{"typeIdentifier":"t_stringliteral_88a4a0b5e975840320a0475d4027005235904fdb5ece94df156f3d717cb2dbfc","typeString":"literal_string \"Address: low-level call with value failed\""},"value":"Address: low-level call with value failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_88a4a0b5e975840320a0475d4027005235904fdb5ece94df156f3d717cb2dbfc","typeString":"literal_string \"Address: low-level call with value failed\""}],"id":1909,"name":"functionCallWithValue","nodeType":"Identifier","overloadedDeclarations":[1917,1961],"referencedDeclaration":1961,"src":"4823:21:19","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,uint256,string memory) returns (bytes memory)"}},"id":1914,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4823:87:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":1908,"id":1915,"nodeType":"Return","src":"4816:94:19"}]},"documentation":{"id":1898,"nodeType":"StructuredDocumentation","src":"4337:351:19","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but also transferring `value` wei to `target`.\n Requirements:\n - the calling contract must have an ETH balance of at least `value`.\n - the called Solidity function must be `payable`.\n _Available since v3.1._"},"id":1917,"implemented":true,"kind":"function","modifiers":[],"name":"functionCallWithValue","nameLocation":"4702:21:19","nodeType":"FunctionDefinition","parameters":{"id":1905,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1900,"mutability":"mutable","name":"target","nameLocation":"4732:6:19","nodeType":"VariableDeclaration","scope":1917,"src":"4724:14:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1899,"name":"address","nodeType":"ElementaryTypeName","src":"4724:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1902,"mutability":"mutable","name":"data","nameLocation":"4753:4:19","nodeType":"VariableDeclaration","scope":1917,"src":"4740:17:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1901,"name":"bytes","nodeType":"ElementaryTypeName","src":"4740:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1904,"mutability":"mutable","name":"value","nameLocation":"4767:5:19","nodeType":"VariableDeclaration","scope":1917,"src":"4759:13:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1903,"name":"uint256","nodeType":"ElementaryTypeName","src":"4759:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4723:50:19"},"returnParameters":{"id":1908,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1907,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1917,"src":"4792:12:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1906,"name":"bytes","nodeType":"ElementaryTypeName","src":"4792:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4791:14:19"},"scope":2137,"src":"4693:224:19","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1960,"nodeType":"Block","src":"5344:267:19","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1938,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":1934,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967268,"src":"5370:4:19","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$2137","typeString":"library Address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Address_$2137","typeString":"library Address"}],"id":1933,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5362:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1932,"name":"address","nodeType":"ElementaryTypeName","src":"5362:7:19","typeDescriptions":{}}},"id":1935,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5362:13:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1936,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5376:7:19","memberName":"balance","nodeType":"MemberAccess","src":"5362:21:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":1937,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1924,"src":"5387:5:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5362:30:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c","id":1939,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5394:40:19","typeDescriptions":{"typeIdentifier":"t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c","typeString":"literal_string \"Address: insufficient balance for call\""},"value":"Address: insufficient balance for call"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c","typeString":"literal_string \"Address: insufficient balance for call\""}],"id":1931,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"5354:7:19","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1940,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5354:81:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1941,"nodeType":"ExpressionStatement","src":"5354:81:19"},{"assignments":[1943,1945],"declarations":[{"constant":false,"id":1943,"mutability":"mutable","name":"success","nameLocation":"5451:7:19","nodeType":"VariableDeclaration","scope":1960,"src":"5446:12:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1942,"name":"bool","nodeType":"ElementaryTypeName","src":"5446:4:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1945,"mutability":"mutable","name":"returndata","nameLocation":"5473:10:19","nodeType":"VariableDeclaration","scope":1960,"src":"5460:23:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1944,"name":"bytes","nodeType":"ElementaryTypeName","src":"5460:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":1952,"initialValue":{"arguments":[{"id":1950,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1922,"src":"5513:4:19","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":1946,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1920,"src":"5487:6:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1947,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5494:4:19","memberName":"call","nodeType":"MemberAccess","src":"5487:11:19","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":1949,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":1948,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1924,"src":"5506:5:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"5487:25:19","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":1951,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5487:31:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"5445:73:19"},{"expression":{"arguments":[{"id":1954,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1920,"src":"5562:6:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1955,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1943,"src":"5570:7:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":1956,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1945,"src":"5579:10:19","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":1957,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1926,"src":"5591:12:19","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1953,"name":"verifyCallResultFromTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2092,"src":"5535:26:19","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bool,bytes memory,string memory) view returns (bytes memory)"}},"id":1958,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5535:69:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":1930,"id":1959,"nodeType":"Return","src":"5528:76:19"}]},"documentation":{"id":1918,"nodeType":"StructuredDocumentation","src":"4923:237:19","text":" @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n with `errorMessage` as a fallback revert reason when `target` reverts.\n _Available since v3.1._"},"id":1961,"implemented":true,"kind":"function","modifiers":[],"name":"functionCallWithValue","nameLocation":"5174:21:19","nodeType":"FunctionDefinition","parameters":{"id":1927,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1920,"mutability":"mutable","name":"target","nameLocation":"5213:6:19","nodeType":"VariableDeclaration","scope":1961,"src":"5205:14:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1919,"name":"address","nodeType":"ElementaryTypeName","src":"5205:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1922,"mutability":"mutable","name":"data","nameLocation":"5242:4:19","nodeType":"VariableDeclaration","scope":1961,"src":"5229:17:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1921,"name":"bytes","nodeType":"ElementaryTypeName","src":"5229:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1924,"mutability":"mutable","name":"value","nameLocation":"5264:5:19","nodeType":"VariableDeclaration","scope":1961,"src":"5256:13:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1923,"name":"uint256","nodeType":"ElementaryTypeName","src":"5256:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1926,"mutability":"mutable","name":"errorMessage","nameLocation":"5293:12:19","nodeType":"VariableDeclaration","scope":1961,"src":"5279:26:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1925,"name":"string","nodeType":"ElementaryTypeName","src":"5279:6:19","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"5195:116:19"},"returnParameters":{"id":1930,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1929,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1961,"src":"5330:12:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1928,"name":"bytes","nodeType":"ElementaryTypeName","src":"5330:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5329:14:19"},"scope":2137,"src":"5165:446:19","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1977,"nodeType":"Block","src":"5888:97:19","statements":[{"expression":{"arguments":[{"id":1972,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1964,"src":"5924:6:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1973,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1966,"src":"5932:4:19","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"416464726573733a206c6f772d6c6576656c207374617469632063616c6c206661696c6564","id":1974,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5938:39:19","typeDescriptions":{"typeIdentifier":"t_stringliteral_90ec82aa826a536a4cbfae44ecfa384680faa9a4b77344bce96aa761ad904df0","typeString":"literal_string \"Address: low-level static call failed\""},"value":"Address: low-level static call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_90ec82aa826a536a4cbfae44ecfa384680faa9a4b77344bce96aa761ad904df0","typeString":"literal_string \"Address: low-level static call failed\""}],"id":1971,"name":"functionStaticCall","nodeType":"Identifier","overloadedDeclarations":[1978,2007],"referencedDeclaration":2007,"src":"5905:18:19","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,string memory) view returns (bytes memory)"}},"id":1975,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5905:73:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":1970,"id":1976,"nodeType":"Return","src":"5898:80:19"}]},"documentation":{"id":1962,"nodeType":"StructuredDocumentation","src":"5617:166:19","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a static call.\n _Available since v3.3._"},"id":1978,"implemented":true,"kind":"function","modifiers":[],"name":"functionStaticCall","nameLocation":"5797:18:19","nodeType":"FunctionDefinition","parameters":{"id":1967,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1964,"mutability":"mutable","name":"target","nameLocation":"5824:6:19","nodeType":"VariableDeclaration","scope":1978,"src":"5816:14:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1963,"name":"address","nodeType":"ElementaryTypeName","src":"5816:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1966,"mutability":"mutable","name":"data","nameLocation":"5845:4:19","nodeType":"VariableDeclaration","scope":1978,"src":"5832:17:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1965,"name":"bytes","nodeType":"ElementaryTypeName","src":"5832:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5815:35:19"},"returnParameters":{"id":1970,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1969,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1978,"src":"5874:12:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1968,"name":"bytes","nodeType":"ElementaryTypeName","src":"5874:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5873:14:19"},"scope":2137,"src":"5788:197:19","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":2006,"nodeType":"Block","src":"6327:168:19","statements":[{"assignments":[1991,1993],"declarations":[{"constant":false,"id":1991,"mutability":"mutable","name":"success","nameLocation":"6343:7:19","nodeType":"VariableDeclaration","scope":2006,"src":"6338:12:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1990,"name":"bool","nodeType":"ElementaryTypeName","src":"6338:4:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1993,"mutability":"mutable","name":"returndata","nameLocation":"6365:10:19","nodeType":"VariableDeclaration","scope":2006,"src":"6352:23:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1992,"name":"bytes","nodeType":"ElementaryTypeName","src":"6352:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":1998,"initialValue":{"arguments":[{"id":1996,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1983,"src":"6397:4:19","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":1994,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1981,"src":"6379:6:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1995,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6386:10:19","memberName":"staticcall","nodeType":"MemberAccess","src":"6379:17:19","typeDescriptions":{"typeIdentifier":"t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) view returns (bool,bytes memory)"}},"id":1997,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6379:23:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"6337:65:19"},{"expression":{"arguments":[{"id":2000,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1981,"src":"6446:6:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2001,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1991,"src":"6454:7:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":2002,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1993,"src":"6463:10:19","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":2003,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1985,"src":"6475:12:19","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1999,"name":"verifyCallResultFromTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2092,"src":"6419:26:19","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bool,bytes memory,string memory) view returns (bytes memory)"}},"id":2004,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6419:69:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":1989,"id":2005,"nodeType":"Return","src":"6412:76:19"}]},"documentation":{"id":1979,"nodeType":"StructuredDocumentation","src":"5991:173:19","text":" @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n but performing a static call.\n _Available since v3.3._"},"id":2007,"implemented":true,"kind":"function","modifiers":[],"name":"functionStaticCall","nameLocation":"6178:18:19","nodeType":"FunctionDefinition","parameters":{"id":1986,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1981,"mutability":"mutable","name":"target","nameLocation":"6214:6:19","nodeType":"VariableDeclaration","scope":2007,"src":"6206:14:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1980,"name":"address","nodeType":"ElementaryTypeName","src":"6206:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1983,"mutability":"mutable","name":"data","nameLocation":"6243:4:19","nodeType":"VariableDeclaration","scope":2007,"src":"6230:17:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1982,"name":"bytes","nodeType":"ElementaryTypeName","src":"6230:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1985,"mutability":"mutable","name":"errorMessage","nameLocation":"6271:12:19","nodeType":"VariableDeclaration","scope":2007,"src":"6257:26:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1984,"name":"string","nodeType":"ElementaryTypeName","src":"6257:6:19","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"6196:93:19"},"returnParameters":{"id":1989,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1988,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2007,"src":"6313:12:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1987,"name":"bytes","nodeType":"ElementaryTypeName","src":"6313:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6312:14:19"},"scope":2137,"src":"6169:326:19","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":2023,"nodeType":"Block","src":"6771:101:19","statements":[{"expression":{"arguments":[{"id":2018,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2010,"src":"6809:6:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2019,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2012,"src":"6817:4:19","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564","id":2020,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6823:41:19","typeDescriptions":{"typeIdentifier":"t_stringliteral_9fdcd12e4b726339b32a442b0a448365d5d85c96b2d2cff917b4f66c63110398","typeString":"literal_string \"Address: low-level delegate call failed\""},"value":"Address: low-level delegate call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_9fdcd12e4b726339b32a442b0a448365d5d85c96b2d2cff917b4f66c63110398","typeString":"literal_string \"Address: low-level delegate call failed\""}],"id":2017,"name":"functionDelegateCall","nodeType":"Identifier","overloadedDeclarations":[2024,2053],"referencedDeclaration":2053,"src":"6788:20:19","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,string memory) returns (bytes memory)"}},"id":2021,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6788:77:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":2016,"id":2022,"nodeType":"Return","src":"6781:84:19"}]},"documentation":{"id":2008,"nodeType":"StructuredDocumentation","src":"6501:168:19","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a delegate call.\n _Available since v3.4._"},"id":2024,"implemented":true,"kind":"function","modifiers":[],"name":"functionDelegateCall","nameLocation":"6683:20:19","nodeType":"FunctionDefinition","parameters":{"id":2013,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2010,"mutability":"mutable","name":"target","nameLocation":"6712:6:19","nodeType":"VariableDeclaration","scope":2024,"src":"6704:14:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2009,"name":"address","nodeType":"ElementaryTypeName","src":"6704:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2012,"mutability":"mutable","name":"data","nameLocation":"6733:4:19","nodeType":"VariableDeclaration","scope":2024,"src":"6720:17:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2011,"name":"bytes","nodeType":"ElementaryTypeName","src":"6720:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6703:35:19"},"returnParameters":{"id":2016,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2015,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2024,"src":"6757:12:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2014,"name":"bytes","nodeType":"ElementaryTypeName","src":"6757:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6756:14:19"},"scope":2137,"src":"6674:198:19","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2052,"nodeType":"Block","src":"7213:170:19","statements":[{"assignments":[2037,2039],"declarations":[{"constant":false,"id":2037,"mutability":"mutable","name":"success","nameLocation":"7229:7:19","nodeType":"VariableDeclaration","scope":2052,"src":"7224:12:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2036,"name":"bool","nodeType":"ElementaryTypeName","src":"7224:4:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2039,"mutability":"mutable","name":"returndata","nameLocation":"7251:10:19","nodeType":"VariableDeclaration","scope":2052,"src":"7238:23:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2038,"name":"bytes","nodeType":"ElementaryTypeName","src":"7238:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":2044,"initialValue":{"arguments":[{"id":2042,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2029,"src":"7285:4:19","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":2040,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2027,"src":"7265:6:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2041,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7272:12:19","memberName":"delegatecall","nodeType":"MemberAccess","src":"7265:19:19","typeDescriptions":{"typeIdentifier":"t_function_baredelegatecall_nonpayable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) returns (bool,bytes memory)"}},"id":2043,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7265:25:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"7223:67:19"},{"expression":{"arguments":[{"id":2046,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2027,"src":"7334:6:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2047,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2037,"src":"7342:7:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":2048,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2039,"src":"7351:10:19","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":2049,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"7363:12:19","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":2045,"name":"verifyCallResultFromTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2092,"src":"7307:26:19","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bool,bytes memory,string memory) view returns (bytes memory)"}},"id":2050,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7307:69:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":2035,"id":2051,"nodeType":"Return","src":"7300:76:19"}]},"documentation":{"id":2025,"nodeType":"StructuredDocumentation","src":"6878:175:19","text":" @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n but performing a delegate call.\n _Available since v3.4._"},"id":2053,"implemented":true,"kind":"function","modifiers":[],"name":"functionDelegateCall","nameLocation":"7067:20:19","nodeType":"FunctionDefinition","parameters":{"id":2032,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2027,"mutability":"mutable","name":"target","nameLocation":"7105:6:19","nodeType":"VariableDeclaration","scope":2053,"src":"7097:14:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2026,"name":"address","nodeType":"ElementaryTypeName","src":"7097:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2029,"mutability":"mutable","name":"data","nameLocation":"7134:4:19","nodeType":"VariableDeclaration","scope":2053,"src":"7121:17:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2028,"name":"bytes","nodeType":"ElementaryTypeName","src":"7121:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":2031,"mutability":"mutable","name":"errorMessage","nameLocation":"7162:12:19","nodeType":"VariableDeclaration","scope":2053,"src":"7148:26:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2030,"name":"string","nodeType":"ElementaryTypeName","src":"7148:6:19","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"7087:93:19"},"returnParameters":{"id":2035,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2034,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2053,"src":"7199:12:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2033,"name":"bytes","nodeType":"ElementaryTypeName","src":"7199:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7198:14:19"},"scope":2137,"src":"7058:325:19","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2091,"nodeType":"Block","src":"7865:434:19","statements":[{"condition":{"id":2067,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2058,"src":"7879:7:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2089,"nodeType":"Block","src":"8235:58:19","statements":[{"expression":{"arguments":[{"id":2085,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2060,"src":"8257:10:19","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":2086,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2062,"src":"8269:12:19","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":2084,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"8249:7:19","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (bytes memory,string memory) pure"}},"id":2087,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8249:33:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2088,"nodeType":"ExpressionStatement","src":"8249:33:19"}]},"id":2090,"nodeType":"IfStatement","src":"7875:418:19","trueBody":{"id":2083,"nodeType":"Block","src":"7888:341:19","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2071,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2068,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2060,"src":"7906:10:19","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2069,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7917:6:19","memberName":"length","nodeType":"MemberAccess","src":"7906:17:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2070,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7927:1:19","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7906:22:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2080,"nodeType":"IfStatement","src":"7902:286:19","trueBody":{"id":2079,"nodeType":"Block","src":"7930:258:19","statements":[{"expression":{"arguments":[{"arguments":[{"id":2074,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2056,"src":"8132:6:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2073,"name":"isContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1825,"src":"8121:10:19","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":2075,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8121:18:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374","id":2076,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8141:31:19","typeDescriptions":{"typeIdentifier":"t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad","typeString":"literal_string \"Address: call to non-contract\""},"value":"Address: call to non-contract"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad","typeString":"literal_string \"Address: call to non-contract\""}],"id":2072,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"8113:7:19","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2077,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8113:60:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2078,"nodeType":"ExpressionStatement","src":"8113:60:19"}]}},{"expression":{"id":2081,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2060,"src":"8208:10:19","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":2066,"id":2082,"nodeType":"Return","src":"8201:17:19"}]}}]},"documentation":{"id":2054,"nodeType":"StructuredDocumentation","src":"7389:277:19","text":" @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\n the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\n _Available since v4.8._"},"id":2092,"implemented":true,"kind":"function","modifiers":[],"name":"verifyCallResultFromTarget","nameLocation":"7680:26:19","nodeType":"FunctionDefinition","parameters":{"id":2063,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2056,"mutability":"mutable","name":"target","nameLocation":"7724:6:19","nodeType":"VariableDeclaration","scope":2092,"src":"7716:14:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2055,"name":"address","nodeType":"ElementaryTypeName","src":"7716:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2058,"mutability":"mutable","name":"success","nameLocation":"7745:7:19","nodeType":"VariableDeclaration","scope":2092,"src":"7740:12:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2057,"name":"bool","nodeType":"ElementaryTypeName","src":"7740:4:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2060,"mutability":"mutable","name":"returndata","nameLocation":"7775:10:19","nodeType":"VariableDeclaration","scope":2092,"src":"7762:23:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2059,"name":"bytes","nodeType":"ElementaryTypeName","src":"7762:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":2062,"mutability":"mutable","name":"errorMessage","nameLocation":"7809:12:19","nodeType":"VariableDeclaration","scope":2092,"src":"7795:26:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2061,"name":"string","nodeType":"ElementaryTypeName","src":"7795:6:19","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"7706:121:19"},"returnParameters":{"id":2066,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2065,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2092,"src":"7851:12:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2064,"name":"bytes","nodeType":"ElementaryTypeName","src":"7851:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7850:14:19"},"scope":2137,"src":"7671:628:19","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":2115,"nodeType":"Block","src":"8680:135:19","statements":[{"condition":{"id":2104,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2095,"src":"8694:7:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2113,"nodeType":"Block","src":"8751:58:19","statements":[{"expression":{"arguments":[{"id":2109,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2097,"src":"8773:10:19","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":2110,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2099,"src":"8785:12:19","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":2108,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"8765:7:19","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (bytes memory,string memory) pure"}},"id":2111,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8765:33:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2112,"nodeType":"ExpressionStatement","src":"8765:33:19"}]},"id":2114,"nodeType":"IfStatement","src":"8690:119:19","trueBody":{"id":2107,"nodeType":"Block","src":"8703:42:19","statements":[{"expression":{"id":2105,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2097,"src":"8724:10:19","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":2103,"id":2106,"nodeType":"Return","src":"8717:17:19"}]}}]},"documentation":{"id":2093,"nodeType":"StructuredDocumentation","src":"8305:210:19","text":" @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\n revert reason or using the provided one.\n _Available since v4.3._"},"id":2116,"implemented":true,"kind":"function","modifiers":[],"name":"verifyCallResult","nameLocation":"8529:16:19","nodeType":"FunctionDefinition","parameters":{"id":2100,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2095,"mutability":"mutable","name":"success","nameLocation":"8560:7:19","nodeType":"VariableDeclaration","scope":2116,"src":"8555:12:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2094,"name":"bool","nodeType":"ElementaryTypeName","src":"8555:4:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2097,"mutability":"mutable","name":"returndata","nameLocation":"8590:10:19","nodeType":"VariableDeclaration","scope":2116,"src":"8577:23:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2096,"name":"bytes","nodeType":"ElementaryTypeName","src":"8577:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":2099,"mutability":"mutable","name":"errorMessage","nameLocation":"8624:12:19","nodeType":"VariableDeclaration","scope":2116,"src":"8610:26:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2098,"name":"string","nodeType":"ElementaryTypeName","src":"8610:6:19","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"8545:97:19"},"returnParameters":{"id":2103,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2102,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2116,"src":"8666:12:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2101,"name":"bytes","nodeType":"ElementaryTypeName","src":"8666:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"8665:14:19"},"scope":2137,"src":"8520:295:19","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2135,"nodeType":"Block","src":"8904:457:19","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2126,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2123,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2118,"src":"8980:10:19","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2124,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8991:6:19","memberName":"length","nodeType":"MemberAccess","src":"8980:17:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2125,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9000:1:19","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8980:21:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2133,"nodeType":"Block","src":"9310:45:19","statements":[{"expression":{"arguments":[{"id":2130,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2120,"src":"9331:12:19","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":2129,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[4294967277,4294967277],"referencedDeclaration":4294967277,"src":"9324:6:19","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":2131,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9324:20:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2132,"nodeType":"ExpressionStatement","src":"9324:20:19"}]},"id":2134,"nodeType":"IfStatement","src":"8976:379:19","trueBody":{"id":2128,"nodeType":"Block","src":"9003:301:19","statements":[{"AST":{"nodeType":"YulBlock","src":"9161:133:19","statements":[{"nodeType":"YulVariableDeclaration","src":"9179:40:19","value":{"arguments":[{"name":"returndata","nodeType":"YulIdentifier","src":"9208:10:19"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"9202:5:19"},"nodeType":"YulFunctionCall","src":"9202:17:19"},"variables":[{"name":"returndata_size","nodeType":"YulTypedName","src":"9183:15:19","type":""}]},{"expression":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9247:2:19","type":"","value":"32"},{"name":"returndata","nodeType":"YulIdentifier","src":"9251:10:19"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9243:3:19"},"nodeType":"YulFunctionCall","src":"9243:19:19"},{"name":"returndata_size","nodeType":"YulIdentifier","src":"9264:15:19"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9236:6:19"},"nodeType":"YulFunctionCall","src":"9236:44:19"},"nodeType":"YulExpressionStatement","src":"9236:44:19"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"london","externalReferences":[{"declaration":2118,"isOffset":false,"isSlot":false,"src":"9208:10:19","valueSize":1},{"declaration":2118,"isOffset":false,"isSlot":false,"src":"9251:10:19","valueSize":1}],"id":2127,"nodeType":"InlineAssembly","src":"9152:142:19"}]}}]},"id":2136,"implemented":true,"kind":"function","modifiers":[],"name":"_revert","nameLocation":"8830:7:19","nodeType":"FunctionDefinition","parameters":{"id":2121,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2118,"mutability":"mutable","name":"returndata","nameLocation":"8851:10:19","nodeType":"VariableDeclaration","scope":2136,"src":"8838:23:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2117,"name":"bytes","nodeType":"ElementaryTypeName","src":"8838:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":2120,"mutability":"mutable","name":"errorMessage","nameLocation":"8877:12:19","nodeType":"VariableDeclaration","scope":2136,"src":"8863:26:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2119,"name":"string","nodeType":"ElementaryTypeName","src":"8863:6:19","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"8837:53:19"},"returnParameters":{"id":2122,"nodeType":"ParameterList","parameters":[],"src":"8904:0:19"},"scope":2137,"src":"8821:540:19","stateMutability":"pure","virtual":false,"visibility":"private"}],"scope":2138,"src":"194:9169:19","usedErrors":[]}],"src":"101:9263:19"},"id":19},"@openzeppelin/contracts/utils/Context.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/Context.sol","exportedSymbols":{"Context":[2167]},"id":2168,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2139,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"101:23:20"},{"abstract":true,"baseContracts":[],"canonicalName":"Context","contractDependencies":[],"contractKind":"contract","documentation":{"id":2140,"nodeType":"StructuredDocumentation","src":"126:496:20","text":" @dev Provides information about the current execution context, including the\n sender of the transaction and its data. While these are generally available\n via msg.sender and msg.data, they should not be accessed in such a direct\n manner, since when dealing with meta-transactions the account sending and\n paying for execution may not be the actual sender (as far as an application\n is concerned).\n This contract is only required for intermediate, library-like contracts."},"fullyImplemented":true,"id":2167,"linearizedBaseContracts":[2167],"name":"Context","nameLocation":"641:7:20","nodeType":"ContractDefinition","nodes":[{"body":{"id":2148,"nodeType":"Block","src":"717:34:20","statements":[{"expression":{"expression":{"id":2145,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967281,"src":"734:3:20","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2146,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"738:6:20","memberName":"sender","nodeType":"MemberAccess","src":"734:10:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2144,"id":2147,"nodeType":"Return","src":"727:17:20"}]},"id":2149,"implemented":true,"kind":"function","modifiers":[],"name":"_msgSender","nameLocation":"664:10:20","nodeType":"FunctionDefinition","parameters":{"id":2141,"nodeType":"ParameterList","parameters":[],"src":"674:2:20"},"returnParameters":{"id":2144,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2143,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2149,"src":"708:7:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2142,"name":"address","nodeType":"ElementaryTypeName","src":"708:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"707:9:20"},"scope":2167,"src":"655:96:20","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":2157,"nodeType":"Block","src":"824:32:20","statements":[{"expression":{"expression":{"id":2154,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967281,"src":"841:3:20","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2155,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"845:4:20","memberName":"data","nodeType":"MemberAccess","src":"841:8:20","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"functionReturnParameters":2153,"id":2156,"nodeType":"Return","src":"834:15:20"}]},"id":2158,"implemented":true,"kind":"function","modifiers":[],"name":"_msgData","nameLocation":"766:8:20","nodeType":"FunctionDefinition","parameters":{"id":2150,"nodeType":"ParameterList","parameters":[],"src":"774:2:20"},"returnParameters":{"id":2153,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2152,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2158,"src":"808:14:20","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2151,"name":"bytes","nodeType":"ElementaryTypeName","src":"808:5:20","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"807:16:20"},"scope":2167,"src":"757:99:20","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":2165,"nodeType":"Block","src":"934:25:20","statements":[{"expression":{"hexValue":"30","id":2163,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"951:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":2162,"id":2164,"nodeType":"Return","src":"944:8:20"}]},"id":2166,"implemented":true,"kind":"function","modifiers":[],"name":"_contextSuffixLength","nameLocation":"871:20:20","nodeType":"FunctionDefinition","parameters":{"id":2159,"nodeType":"ParameterList","parameters":[],"src":"891:2:20"},"returnParameters":{"id":2162,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2161,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2166,"src":"925:7:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2160,"name":"uint256","nodeType":"ElementaryTypeName","src":"925:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"924:9:20"},"scope":2167,"src":"862:97:20","stateMutability":"view","virtual":true,"visibility":"internal"}],"scope":2168,"src":"623:338:20","usedErrors":[]}],"src":"101:861:20"},"id":20},"@openzeppelin/contracts/utils/Counters.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/Counters.sol","exportedSymbols":{"Counters":[2241]},"id":2242,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2169,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"87:23:21"},{"abstract":false,"baseContracts":[],"canonicalName":"Counters","contractDependencies":[],"contractKind":"library","documentation":{"id":2170,"nodeType":"StructuredDocumentation","src":"112:311:21","text":" @title Counters\n @author Matt Condon (@shrugs)\n @dev Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number\n of elements in a mapping, issuing ERC721 ids, or counting request ids.\n Include with `using Counters for Counters.Counter;`"},"fullyImplemented":true,"id":2241,"linearizedBaseContracts":[2241],"name":"Counters","nameLocation":"432:8:21","nodeType":"ContractDefinition","nodes":[{"canonicalName":"Counters.Counter","id":2173,"members":[{"constant":false,"id":2172,"mutability":"mutable","name":"_value","nameLocation":"794:6:21","nodeType":"VariableDeclaration","scope":2173,"src":"786:14:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2171,"name":"uint256","nodeType":"ElementaryTypeName","src":"786:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"Counter","nameLocation":"454:7:21","nodeType":"StructDefinition","scope":2241,"src":"447:374:21","visibility":"public"},{"body":{"id":2184,"nodeType":"Block","src":"901:38:21","statements":[{"expression":{"expression":{"id":2181,"name":"counter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2176,"src":"918:7:21","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$2173_storage_ptr","typeString":"struct Counters.Counter storage pointer"}},"id":2182,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"926:6:21","memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":2172,"src":"918:14:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2180,"id":2183,"nodeType":"Return","src":"911:21:21"}]},"id":2185,"implemented":true,"kind":"function","modifiers":[],"name":"current","nameLocation":"836:7:21","nodeType":"FunctionDefinition","parameters":{"id":2177,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2176,"mutability":"mutable","name":"counter","nameLocation":"860:7:21","nodeType":"VariableDeclaration","scope":2185,"src":"844:23:21","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$2173_storage_ptr","typeString":"struct Counters.Counter"},"typeName":{"id":2175,"nodeType":"UserDefinedTypeName","pathNode":{"id":2174,"name":"Counter","nameLocations":["844:7:21"],"nodeType":"IdentifierPath","referencedDeclaration":2173,"src":"844:7:21"},"referencedDeclaration":2173,"src":"844:7:21","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$2173_storage_ptr","typeString":"struct Counters.Counter"}},"visibility":"internal"}],"src":"843:25:21"},"returnParameters":{"id":2180,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2179,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2185,"src":"892:7:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2178,"name":"uint256","nodeType":"ElementaryTypeName","src":"892:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"891:9:21"},"scope":2241,"src":"827:112:21","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":2198,"nodeType":"Block","src":"998:70:21","statements":[{"id":2197,"nodeType":"UncheckedBlock","src":"1008:54:21","statements":[{"expression":{"id":2195,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":2191,"name":"counter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2188,"src":"1032:7:21","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$2173_storage_ptr","typeString":"struct Counters.Counter storage pointer"}},"id":2193,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1040:6:21","memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":2172,"src":"1032:14:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":2194,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1050:1:21","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1032:19:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2196,"nodeType":"ExpressionStatement","src":"1032:19:21"}]}]},"id":2199,"implemented":true,"kind":"function","modifiers":[],"name":"increment","nameLocation":"954:9:21","nodeType":"FunctionDefinition","parameters":{"id":2189,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2188,"mutability":"mutable","name":"counter","nameLocation":"980:7:21","nodeType":"VariableDeclaration","scope":2199,"src":"964:23:21","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$2173_storage_ptr","typeString":"struct Counters.Counter"},"typeName":{"id":2187,"nodeType":"UserDefinedTypeName","pathNode":{"id":2186,"name":"Counter","nameLocations":["964:7:21"],"nodeType":"IdentifierPath","referencedDeclaration":2173,"src":"964:7:21"},"referencedDeclaration":2173,"src":"964:7:21","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$2173_storage_ptr","typeString":"struct Counters.Counter"}},"visibility":"internal"}],"src":"963:25:21"},"returnParameters":{"id":2190,"nodeType":"ParameterList","parameters":[],"src":"998:0:21"},"scope":2241,"src":"945:123:21","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2226,"nodeType":"Block","src":"1127:176:21","statements":[{"assignments":[2206],"declarations":[{"constant":false,"id":2206,"mutability":"mutable","name":"value","nameLocation":"1145:5:21","nodeType":"VariableDeclaration","scope":2226,"src":"1137:13:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2205,"name":"uint256","nodeType":"ElementaryTypeName","src":"1137:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2209,"initialValue":{"expression":{"id":2207,"name":"counter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2202,"src":"1153:7:21","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$2173_storage_ptr","typeString":"struct Counters.Counter storage pointer"}},"id":2208,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1161:6:21","memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":2172,"src":"1153:14:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1137:30:21"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2213,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2211,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2206,"src":"1185:5:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2212,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1193:1:21","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1185:9:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"436f756e7465723a2064656372656d656e74206f766572666c6f77","id":2214,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1196:29:21","typeDescriptions":{"typeIdentifier":"t_stringliteral_1dfd0d5389474d871b8e8929aab9d4def041f55f90f625754fb5f9a9ba08af6f","typeString":"literal_string \"Counter: decrement overflow\""},"value":"Counter: decrement overflow"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_1dfd0d5389474d871b8e8929aab9d4def041f55f90f625754fb5f9a9ba08af6f","typeString":"literal_string \"Counter: decrement overflow\""}],"id":2210,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"1177:7:21","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2215,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1177:49:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2216,"nodeType":"ExpressionStatement","src":"1177:49:21"},{"id":2225,"nodeType":"UncheckedBlock","src":"1236:61:21","statements":[{"expression":{"id":2223,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":2217,"name":"counter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2202,"src":"1260:7:21","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$2173_storage_ptr","typeString":"struct Counters.Counter storage pointer"}},"id":2219,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1268:6:21","memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":2172,"src":"1260:14:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2222,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2220,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2206,"src":"1277:5:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":2221,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1285:1:21","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1277:9:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1260:26:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2224,"nodeType":"ExpressionStatement","src":"1260:26:21"}]}]},"id":2227,"implemented":true,"kind":"function","modifiers":[],"name":"decrement","nameLocation":"1083:9:21","nodeType":"FunctionDefinition","parameters":{"id":2203,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2202,"mutability":"mutable","name":"counter","nameLocation":"1109:7:21","nodeType":"VariableDeclaration","scope":2227,"src":"1093:23:21","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$2173_storage_ptr","typeString":"struct Counters.Counter"},"typeName":{"id":2201,"nodeType":"UserDefinedTypeName","pathNode":{"id":2200,"name":"Counter","nameLocations":["1093:7:21"],"nodeType":"IdentifierPath","referencedDeclaration":2173,"src":"1093:7:21"},"referencedDeclaration":2173,"src":"1093:7:21","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$2173_storage_ptr","typeString":"struct Counters.Counter"}},"visibility":"internal"}],"src":"1092:25:21"},"returnParameters":{"id":2204,"nodeType":"ParameterList","parameters":[],"src":"1127:0:21"},"scope":2241,"src":"1074:229:21","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2239,"nodeType":"Block","src":"1358:35:21","statements":[{"expression":{"id":2237,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":2233,"name":"counter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2230,"src":"1368:7:21","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$2173_storage_ptr","typeString":"struct Counters.Counter storage pointer"}},"id":2235,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1376:6:21","memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":2172,"src":"1368:14:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":2236,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1385:1:21","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1368:18:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2238,"nodeType":"ExpressionStatement","src":"1368:18:21"}]},"id":2240,"implemented":true,"kind":"function","modifiers":[],"name":"reset","nameLocation":"1318:5:21","nodeType":"FunctionDefinition","parameters":{"id":2231,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2230,"mutability":"mutable","name":"counter","nameLocation":"1340:7:21","nodeType":"VariableDeclaration","scope":2240,"src":"1324:23:21","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$2173_storage_ptr","typeString":"struct Counters.Counter"},"typeName":{"id":2229,"nodeType":"UserDefinedTypeName","pathNode":{"id":2228,"name":"Counter","nameLocations":["1324:7:21"],"nodeType":"IdentifierPath","referencedDeclaration":2173,"src":"1324:7:21"},"referencedDeclaration":2173,"src":"1324:7:21","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$2173_storage_ptr","typeString":"struct Counters.Counter"}},"visibility":"internal"}],"src":"1323:25:21"},"returnParameters":{"id":2232,"nodeType":"ParameterList","parameters":[],"src":"1358:0:21"},"scope":2241,"src":"1309:84:21","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":2242,"src":"424:971:21","usedErrors":[]}],"src":"87:1309:21"},"id":21},"@openzeppelin/contracts/utils/StorageSlot.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/StorageSlot.sol","exportedSymbols":{"StorageSlot":[2351]},"id":2352,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2243,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"193:23:22"},{"abstract":false,"baseContracts":[],"canonicalName":"StorageSlot","contractDependencies":[],"contractKind":"library","documentation":{"id":2244,"nodeType":"StructuredDocumentation","src":"218:1201:22","text":" @dev Library for reading and writing primitive types to specific storage slots.\n Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\n This library helps with reading and writing to such slots without the need for inline assembly.\n The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\n Example usage to set ERC1967 implementation slot:\n ```solidity\n contract ERC1967 {\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n function _getImplementation() internal view returns (address) {\n return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\n }\n function _setImplementation(address newImplementation) internal {\n require(Address.isContract(newImplementation), \"ERC1967: new implementation is not a contract\");\n StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\n }\n }\n ```\n _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._\n _Available since v4.9 for `string`, `bytes`._"},"fullyImplemented":true,"id":2351,"linearizedBaseContracts":[2351],"name":"StorageSlot","nameLocation":"1428:11:22","nodeType":"ContractDefinition","nodes":[{"canonicalName":"StorageSlot.AddressSlot","id":2247,"members":[{"constant":false,"id":2246,"mutability":"mutable","name":"value","nameLocation":"1483:5:22","nodeType":"VariableDeclaration","scope":2247,"src":"1475:13:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2245,"name":"address","nodeType":"ElementaryTypeName","src":"1475:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"name":"AddressSlot","nameLocation":"1453:11:22","nodeType":"StructDefinition","scope":2351,"src":"1446:49:22","visibility":"public"},{"canonicalName":"StorageSlot.BooleanSlot","id":2250,"members":[{"constant":false,"id":2249,"mutability":"mutable","name":"value","nameLocation":"1535:5:22","nodeType":"VariableDeclaration","scope":2250,"src":"1530:10:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2248,"name":"bool","nodeType":"ElementaryTypeName","src":"1530:4:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"name":"BooleanSlot","nameLocation":"1508:11:22","nodeType":"StructDefinition","scope":2351,"src":"1501:46:22","visibility":"public"},{"canonicalName":"StorageSlot.Bytes32Slot","id":2253,"members":[{"constant":false,"id":2252,"mutability":"mutable","name":"value","nameLocation":"1590:5:22","nodeType":"VariableDeclaration","scope":2253,"src":"1582:13:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2251,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1582:7:22","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"name":"Bytes32Slot","nameLocation":"1560:11:22","nodeType":"StructDefinition","scope":2351,"src":"1553:49:22","visibility":"public"},{"canonicalName":"StorageSlot.Uint256Slot","id":2256,"members":[{"constant":false,"id":2255,"mutability":"mutable","name":"value","nameLocation":"1645:5:22","nodeType":"VariableDeclaration","scope":2256,"src":"1637:13:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2254,"name":"uint256","nodeType":"ElementaryTypeName","src":"1637:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"Uint256Slot","nameLocation":"1615:11:22","nodeType":"StructDefinition","scope":2351,"src":"1608:49:22","visibility":"public"},{"canonicalName":"StorageSlot.StringSlot","id":2259,"members":[{"constant":false,"id":2258,"mutability":"mutable","name":"value","nameLocation":"1698:5:22","nodeType":"VariableDeclaration","scope":2259,"src":"1691:12:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":2257,"name":"string","nodeType":"ElementaryTypeName","src":"1691:6:22","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"name":"StringSlot","nameLocation":"1670:10:22","nodeType":"StructDefinition","scope":2351,"src":"1663:47:22","visibility":"public"},{"canonicalName":"StorageSlot.BytesSlot","id":2262,"members":[{"constant":false,"id":2261,"mutability":"mutable","name":"value","nameLocation":"1749:5:22","nodeType":"VariableDeclaration","scope":2262,"src":"1743:11:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":2260,"name":"bytes","nodeType":"ElementaryTypeName","src":"1743:5:22","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"name":"BytesSlot","nameLocation":"1723:9:22","nodeType":"StructDefinition","scope":2351,"src":"1716:45:22","visibility":"public"},{"body":{"id":2272,"nodeType":"Block","src":"1943:106:22","statements":[{"AST":{"nodeType":"YulBlock","src":"2005:38:22","statements":[{"nodeType":"YulAssignment","src":"2019:14:22","value":{"name":"slot","nodeType":"YulIdentifier","src":"2029:4:22"},"variableNames":[{"name":"r.slot","nodeType":"YulIdentifier","src":"2019:6:22"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"london","externalReferences":[{"declaration":2269,"isOffset":false,"isSlot":true,"src":"2019:6:22","suffix":"slot","valueSize":1},{"declaration":2265,"isOffset":false,"isSlot":false,"src":"2029:4:22","valueSize":1}],"id":2271,"nodeType":"InlineAssembly","src":"1996:47:22"}]},"documentation":{"id":2263,"nodeType":"StructuredDocumentation","src":"1767:87:22","text":" @dev Returns an `AddressSlot` with member `value` located at `slot`."},"id":2273,"implemented":true,"kind":"function","modifiers":[],"name":"getAddressSlot","nameLocation":"1868:14:22","nodeType":"FunctionDefinition","parameters":{"id":2266,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2265,"mutability":"mutable","name":"slot","nameLocation":"1891:4:22","nodeType":"VariableDeclaration","scope":2273,"src":"1883:12:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2264,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1883:7:22","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1882:14:22"},"returnParameters":{"id":2270,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2269,"mutability":"mutable","name":"r","nameLocation":"1940:1:22","nodeType":"VariableDeclaration","scope":2273,"src":"1920:21:22","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$2247_storage_ptr","typeString":"struct StorageSlot.AddressSlot"},"typeName":{"id":2268,"nodeType":"UserDefinedTypeName","pathNode":{"id":2267,"name":"AddressSlot","nameLocations":["1920:11:22"],"nodeType":"IdentifierPath","referencedDeclaration":2247,"src":"1920:11:22"},"referencedDeclaration":2247,"src":"1920:11:22","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$2247_storage_ptr","typeString":"struct StorageSlot.AddressSlot"}},"visibility":"internal"}],"src":"1919:23:22"},"scope":2351,"src":"1859:190:22","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2283,"nodeType":"Block","src":"2231:106:22","statements":[{"AST":{"nodeType":"YulBlock","src":"2293:38:22","statements":[{"nodeType":"YulAssignment","src":"2307:14:22","value":{"name":"slot","nodeType":"YulIdentifier","src":"2317:4:22"},"variableNames":[{"name":"r.slot","nodeType":"YulIdentifier","src":"2307:6:22"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"london","externalReferences":[{"declaration":2280,"isOffset":false,"isSlot":true,"src":"2307:6:22","suffix":"slot","valueSize":1},{"declaration":2276,"isOffset":false,"isSlot":false,"src":"2317:4:22","valueSize":1}],"id":2282,"nodeType":"InlineAssembly","src":"2284:47:22"}]},"documentation":{"id":2274,"nodeType":"StructuredDocumentation","src":"2055:87:22","text":" @dev Returns an `BooleanSlot` with member `value` located at `slot`."},"id":2284,"implemented":true,"kind":"function","modifiers":[],"name":"getBooleanSlot","nameLocation":"2156:14:22","nodeType":"FunctionDefinition","parameters":{"id":2277,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2276,"mutability":"mutable","name":"slot","nameLocation":"2179:4:22","nodeType":"VariableDeclaration","scope":2284,"src":"2171:12:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2275,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2171:7:22","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2170:14:22"},"returnParameters":{"id":2281,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2280,"mutability":"mutable","name":"r","nameLocation":"2228:1:22","nodeType":"VariableDeclaration","scope":2284,"src":"2208:21:22","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_BooleanSlot_$2250_storage_ptr","typeString":"struct StorageSlot.BooleanSlot"},"typeName":{"id":2279,"nodeType":"UserDefinedTypeName","pathNode":{"id":2278,"name":"BooleanSlot","nameLocations":["2208:11:22"],"nodeType":"IdentifierPath","referencedDeclaration":2250,"src":"2208:11:22"},"referencedDeclaration":2250,"src":"2208:11:22","typeDescriptions":{"typeIdentifier":"t_struct$_BooleanSlot_$2250_storage_ptr","typeString":"struct StorageSlot.BooleanSlot"}},"visibility":"internal"}],"src":"2207:23:22"},"scope":2351,"src":"2147:190:22","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2294,"nodeType":"Block","src":"2519:106:22","statements":[{"AST":{"nodeType":"YulBlock","src":"2581:38:22","statements":[{"nodeType":"YulAssignment","src":"2595:14:22","value":{"name":"slot","nodeType":"YulIdentifier","src":"2605:4:22"},"variableNames":[{"name":"r.slot","nodeType":"YulIdentifier","src":"2595:6:22"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"london","externalReferences":[{"declaration":2291,"isOffset":false,"isSlot":true,"src":"2595:6:22","suffix":"slot","valueSize":1},{"declaration":2287,"isOffset":false,"isSlot":false,"src":"2605:4:22","valueSize":1}],"id":2293,"nodeType":"InlineAssembly","src":"2572:47:22"}]},"documentation":{"id":2285,"nodeType":"StructuredDocumentation","src":"2343:87:22","text":" @dev Returns an `Bytes32Slot` with member `value` located at `slot`."},"id":2295,"implemented":true,"kind":"function","modifiers":[],"name":"getBytes32Slot","nameLocation":"2444:14:22","nodeType":"FunctionDefinition","parameters":{"id":2288,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2287,"mutability":"mutable","name":"slot","nameLocation":"2467:4:22","nodeType":"VariableDeclaration","scope":2295,"src":"2459:12:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2286,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2459:7:22","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2458:14:22"},"returnParameters":{"id":2292,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2291,"mutability":"mutable","name":"r","nameLocation":"2516:1:22","nodeType":"VariableDeclaration","scope":2295,"src":"2496:21:22","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Slot_$2253_storage_ptr","typeString":"struct StorageSlot.Bytes32Slot"},"typeName":{"id":2290,"nodeType":"UserDefinedTypeName","pathNode":{"id":2289,"name":"Bytes32Slot","nameLocations":["2496:11:22"],"nodeType":"IdentifierPath","referencedDeclaration":2253,"src":"2496:11:22"},"referencedDeclaration":2253,"src":"2496:11:22","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Slot_$2253_storage_ptr","typeString":"struct StorageSlot.Bytes32Slot"}},"visibility":"internal"}],"src":"2495:23:22"},"scope":2351,"src":"2435:190:22","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2305,"nodeType":"Block","src":"2807:106:22","statements":[{"AST":{"nodeType":"YulBlock","src":"2869:38:22","statements":[{"nodeType":"YulAssignment","src":"2883:14:22","value":{"name":"slot","nodeType":"YulIdentifier","src":"2893:4:22"},"variableNames":[{"name":"r.slot","nodeType":"YulIdentifier","src":"2883:6:22"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"london","externalReferences":[{"declaration":2302,"isOffset":false,"isSlot":true,"src":"2883:6:22","suffix":"slot","valueSize":1},{"declaration":2298,"isOffset":false,"isSlot":false,"src":"2893:4:22","valueSize":1}],"id":2304,"nodeType":"InlineAssembly","src":"2860:47:22"}]},"documentation":{"id":2296,"nodeType":"StructuredDocumentation","src":"2631:87:22","text":" @dev Returns an `Uint256Slot` with member `value` located at `slot`."},"id":2306,"implemented":true,"kind":"function","modifiers":[],"name":"getUint256Slot","nameLocation":"2732:14:22","nodeType":"FunctionDefinition","parameters":{"id":2299,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2298,"mutability":"mutable","name":"slot","nameLocation":"2755:4:22","nodeType":"VariableDeclaration","scope":2306,"src":"2747:12:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2297,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2747:7:22","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2746:14:22"},"returnParameters":{"id":2303,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2302,"mutability":"mutable","name":"r","nameLocation":"2804:1:22","nodeType":"VariableDeclaration","scope":2306,"src":"2784:21:22","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Uint256Slot_$2256_storage_ptr","typeString":"struct StorageSlot.Uint256Slot"},"typeName":{"id":2301,"nodeType":"UserDefinedTypeName","pathNode":{"id":2300,"name":"Uint256Slot","nameLocations":["2784:11:22"],"nodeType":"IdentifierPath","referencedDeclaration":2256,"src":"2784:11:22"},"referencedDeclaration":2256,"src":"2784:11:22","typeDescriptions":{"typeIdentifier":"t_struct$_Uint256Slot_$2256_storage_ptr","typeString":"struct StorageSlot.Uint256Slot"}},"visibility":"internal"}],"src":"2783:23:22"},"scope":2351,"src":"2723:190:22","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2316,"nodeType":"Block","src":"3092:106:22","statements":[{"AST":{"nodeType":"YulBlock","src":"3154:38:22","statements":[{"nodeType":"YulAssignment","src":"3168:14:22","value":{"name":"slot","nodeType":"YulIdentifier","src":"3178:4:22"},"variableNames":[{"name":"r.slot","nodeType":"YulIdentifier","src":"3168:6:22"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"london","externalReferences":[{"declaration":2313,"isOffset":false,"isSlot":true,"src":"3168:6:22","suffix":"slot","valueSize":1},{"declaration":2309,"isOffset":false,"isSlot":false,"src":"3178:4:22","valueSize":1}],"id":2315,"nodeType":"InlineAssembly","src":"3145:47:22"}]},"documentation":{"id":2307,"nodeType":"StructuredDocumentation","src":"2919:86:22","text":" @dev Returns an `StringSlot` with member `value` located at `slot`."},"id":2317,"implemented":true,"kind":"function","modifiers":[],"name":"getStringSlot","nameLocation":"3019:13:22","nodeType":"FunctionDefinition","parameters":{"id":2310,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2309,"mutability":"mutable","name":"slot","nameLocation":"3041:4:22","nodeType":"VariableDeclaration","scope":2317,"src":"3033:12:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2308,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3033:7:22","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3032:14:22"},"returnParameters":{"id":2314,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2313,"mutability":"mutable","name":"r","nameLocation":"3089:1:22","nodeType":"VariableDeclaration","scope":2317,"src":"3070:20:22","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_StringSlot_$2259_storage_ptr","typeString":"struct StorageSlot.StringSlot"},"typeName":{"id":2312,"nodeType":"UserDefinedTypeName","pathNode":{"id":2311,"name":"StringSlot","nameLocations":["3070:10:22"],"nodeType":"IdentifierPath","referencedDeclaration":2259,"src":"3070:10:22"},"referencedDeclaration":2259,"src":"3070:10:22","typeDescriptions":{"typeIdentifier":"t_struct$_StringSlot_$2259_storage_ptr","typeString":"struct StorageSlot.StringSlot"}},"visibility":"internal"}],"src":"3069:22:22"},"scope":2351,"src":"3010:188:22","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2327,"nodeType":"Block","src":"3400:112:22","statements":[{"AST":{"nodeType":"YulBlock","src":"3462:44:22","statements":[{"nodeType":"YulAssignment","src":"3476:20:22","value":{"name":"store.slot","nodeType":"YulIdentifier","src":"3486:10:22"},"variableNames":[{"name":"r.slot","nodeType":"YulIdentifier","src":"3476:6:22"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"london","externalReferences":[{"declaration":2324,"isOffset":false,"isSlot":true,"src":"3476:6:22","suffix":"slot","valueSize":1},{"declaration":2320,"isOffset":false,"isSlot":true,"src":"3486:10:22","suffix":"slot","valueSize":1}],"id":2326,"nodeType":"InlineAssembly","src":"3453:53:22"}]},"documentation":{"id":2318,"nodeType":"StructuredDocumentation","src":"3204:101:22","text":" @dev Returns an `StringSlot` representation of the string storage pointer `store`."},"id":2328,"implemented":true,"kind":"function","modifiers":[],"name":"getStringSlot","nameLocation":"3319:13:22","nodeType":"FunctionDefinition","parameters":{"id":2321,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2320,"mutability":"mutable","name":"store","nameLocation":"3348:5:22","nodeType":"VariableDeclaration","scope":2328,"src":"3333:20:22","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":2319,"name":"string","nodeType":"ElementaryTypeName","src":"3333:6:22","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3332:22:22"},"returnParameters":{"id":2325,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2324,"mutability":"mutable","name":"r","nameLocation":"3397:1:22","nodeType":"VariableDeclaration","scope":2328,"src":"3378:20:22","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_StringSlot_$2259_storage_ptr","typeString":"struct StorageSlot.StringSlot"},"typeName":{"id":2323,"nodeType":"UserDefinedTypeName","pathNode":{"id":2322,"name":"StringSlot","nameLocations":["3378:10:22"],"nodeType":"IdentifierPath","referencedDeclaration":2259,"src":"3378:10:22"},"referencedDeclaration":2259,"src":"3378:10:22","typeDescriptions":{"typeIdentifier":"t_struct$_StringSlot_$2259_storage_ptr","typeString":"struct StorageSlot.StringSlot"}},"visibility":"internal"}],"src":"3377:22:22"},"scope":2351,"src":"3310:202:22","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2338,"nodeType":"Block","src":"3688:106:22","statements":[{"AST":{"nodeType":"YulBlock","src":"3750:38:22","statements":[{"nodeType":"YulAssignment","src":"3764:14:22","value":{"name":"slot","nodeType":"YulIdentifier","src":"3774:4:22"},"variableNames":[{"name":"r.slot","nodeType":"YulIdentifier","src":"3764:6:22"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"london","externalReferences":[{"declaration":2335,"isOffset":false,"isSlot":true,"src":"3764:6:22","suffix":"slot","valueSize":1},{"declaration":2331,"isOffset":false,"isSlot":false,"src":"3774:4:22","valueSize":1}],"id":2337,"nodeType":"InlineAssembly","src":"3741:47:22"}]},"documentation":{"id":2329,"nodeType":"StructuredDocumentation","src":"3518:85:22","text":" @dev Returns an `BytesSlot` with member `value` located at `slot`."},"id":2339,"implemented":true,"kind":"function","modifiers":[],"name":"getBytesSlot","nameLocation":"3617:12:22","nodeType":"FunctionDefinition","parameters":{"id":2332,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2331,"mutability":"mutable","name":"slot","nameLocation":"3638:4:22","nodeType":"VariableDeclaration","scope":2339,"src":"3630:12:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2330,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3630:7:22","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3629:14:22"},"returnParameters":{"id":2336,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2335,"mutability":"mutable","name":"r","nameLocation":"3685:1:22","nodeType":"VariableDeclaration","scope":2339,"src":"3667:19:22","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$2262_storage_ptr","typeString":"struct StorageSlot.BytesSlot"},"typeName":{"id":2334,"nodeType":"UserDefinedTypeName","pathNode":{"id":2333,"name":"BytesSlot","nameLocations":["3667:9:22"],"nodeType":"IdentifierPath","referencedDeclaration":2262,"src":"3667:9:22"},"referencedDeclaration":2262,"src":"3667:9:22","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$2262_storage_ptr","typeString":"struct StorageSlot.BytesSlot"}},"visibility":"internal"}],"src":"3666:21:22"},"scope":2351,"src":"3608:186:22","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2349,"nodeType":"Block","src":"3991:112:22","statements":[{"AST":{"nodeType":"YulBlock","src":"4053:44:22","statements":[{"nodeType":"YulAssignment","src":"4067:20:22","value":{"name":"store.slot","nodeType":"YulIdentifier","src":"4077:10:22"},"variableNames":[{"name":"r.slot","nodeType":"YulIdentifier","src":"4067:6:22"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"london","externalReferences":[{"declaration":2346,"isOffset":false,"isSlot":true,"src":"4067:6:22","suffix":"slot","valueSize":1},{"declaration":2342,"isOffset":false,"isSlot":true,"src":"4077:10:22","suffix":"slot","valueSize":1}],"id":2348,"nodeType":"InlineAssembly","src":"4044:53:22"}]},"documentation":{"id":2340,"nodeType":"StructuredDocumentation","src":"3800:99:22","text":" @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`."},"id":2350,"implemented":true,"kind":"function","modifiers":[],"name":"getBytesSlot","nameLocation":"3913:12:22","nodeType":"FunctionDefinition","parameters":{"id":2343,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2342,"mutability":"mutable","name":"store","nameLocation":"3940:5:22","nodeType":"VariableDeclaration","scope":2350,"src":"3926:19:22","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":2341,"name":"bytes","nodeType":"ElementaryTypeName","src":"3926:5:22","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3925:21:22"},"returnParameters":{"id":2347,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2346,"mutability":"mutable","name":"r","nameLocation":"3988:1:22","nodeType":"VariableDeclaration","scope":2350,"src":"3970:19:22","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$2262_storage_ptr","typeString":"struct StorageSlot.BytesSlot"},"typeName":{"id":2345,"nodeType":"UserDefinedTypeName","pathNode":{"id":2344,"name":"BytesSlot","nameLocations":["3970:9:22"],"nodeType":"IdentifierPath","referencedDeclaration":2262,"src":"3970:9:22"},"referencedDeclaration":2262,"src":"3970:9:22","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$2262_storage_ptr","typeString":"struct StorageSlot.BytesSlot"}},"visibility":"internal"}],"src":"3969:21:22"},"scope":2351,"src":"3904:199:22","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":2352,"src":"1420:2685:22","usedErrors":[]}],"src":"193:3913:22"},"id":22},"@openzeppelin/contracts/utils/introspection/ERC165.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/introspection/ERC165.sol","exportedSymbols":{"ERC165":[2375],"IERC165":[2387]},"id":2376,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2353,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"99:23:23"},{"absolutePath":"@openzeppelin/contracts/utils/introspection/IERC165.sol","file":"./IERC165.sol","id":2354,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2376,"sourceUnit":2388,"src":"124:23:23","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":2356,"name":"IERC165","nameLocations":["754:7:23"],"nodeType":"IdentifierPath","referencedDeclaration":2387,"src":"754:7:23"},"id":2357,"nodeType":"InheritanceSpecifier","src":"754:7:23"}],"canonicalName":"ERC165","contractDependencies":[],"contractKind":"contract","documentation":{"id":2355,"nodeType":"StructuredDocumentation","src":"149:576:23","text":" @dev Implementation of the {IERC165} interface.\n Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\n for the additional interface id that will be supported. For example:\n ```solidity\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\n }\n ```\n Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation."},"fullyImplemented":true,"id":2375,"linearizedBaseContracts":[2375,2387],"name":"ERC165","nameLocation":"744:6:23","nodeType":"ContractDefinition","nodes":[{"baseFunctions":[2386],"body":{"id":2373,"nodeType":"Block","src":"920:64:23","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":2371,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2366,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2360,"src":"937:11:23","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":2368,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2387,"src":"957:7:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC165_$2387_$","typeString":"type(contract IERC165)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC165_$2387_$","typeString":"type(contract IERC165)"}],"id":2367,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"952:4:23","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":2369,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"952:13:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC165_$2387","typeString":"type(contract IERC165)"}},"id":2370,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"966:11:23","memberName":"interfaceId","nodeType":"MemberAccess","src":"952:25:23","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"937:40:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2365,"id":2372,"nodeType":"Return","src":"930:47:23"}]},"documentation":{"id":2358,"nodeType":"StructuredDocumentation","src":"768:56:23","text":" @dev See {IERC165-supportsInterface}."},"functionSelector":"01ffc9a7","id":2374,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"838:17:23","nodeType":"FunctionDefinition","overrides":{"id":2362,"nodeType":"OverrideSpecifier","overrides":[],"src":"896:8:23"},"parameters":{"id":2361,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2360,"mutability":"mutable","name":"interfaceId","nameLocation":"863:11:23","nodeType":"VariableDeclaration","scope":2374,"src":"856:18:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2359,"name":"bytes4","nodeType":"ElementaryTypeName","src":"856:6:23","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"855:20:23"},"returnParameters":{"id":2365,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2364,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2374,"src":"914:4:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2363,"name":"bool","nodeType":"ElementaryTypeName","src":"914:4:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"913:6:23"},"scope":2375,"src":"829:155:23","stateMutability":"view","virtual":true,"visibility":"public"}],"scope":2376,"src":"726:260:23","usedErrors":[]}],"src":"99:888:23"},"id":23},"@openzeppelin/contracts/utils/introspection/IERC165.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/introspection/IERC165.sol","exportedSymbols":{"IERC165":[2387]},"id":2388,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2377,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"100:23:24"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC165","contractDependencies":[],"contractKind":"interface","documentation":{"id":2378,"nodeType":"StructuredDocumentation","src":"125:279:24","text":" @dev Interface of the ERC165 standard, as defined in the\n https://eips.ethereum.org/EIPS/eip-165[EIP].\n Implementers can declare support of contract interfaces, which can then be\n queried by others ({ERC165Checker}).\n For an implementation, see {ERC165}."},"fullyImplemented":false,"id":2387,"linearizedBaseContracts":[2387],"name":"IERC165","nameLocation":"415:7:24","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":2379,"nodeType":"StructuredDocumentation","src":"429:340:24","text":" @dev Returns true if this contract implements the interface defined by\n `interfaceId`. See the corresponding\n https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\n to learn more about how these ids are created.\n This function call must use less than 30 000 gas."},"functionSelector":"01ffc9a7","id":2386,"implemented":false,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"783:17:24","nodeType":"FunctionDefinition","parameters":{"id":2382,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2381,"mutability":"mutable","name":"interfaceId","nameLocation":"808:11:24","nodeType":"VariableDeclaration","scope":2386,"src":"801:18:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2380,"name":"bytes4","nodeType":"ElementaryTypeName","src":"801:6:24","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"800:20:24"},"returnParameters":{"id":2385,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2384,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2386,"src":"844:4:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2383,"name":"bool","nodeType":"ElementaryTypeName","src":"844:4:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"843:6:24"},"scope":2387,"src":"774:76:24","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":2388,"src":"405:447:24","usedErrors":[]}],"src":"100:753:24"},"id":24},"src/dao/IDAO.sol":{"ast":{"absolutePath":"src/dao/IDAO.sol","exportedSymbols":{"IDAO":[2538]},"id":2539,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":2389,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:25"},{"abstract":false,"baseContracts":[],"canonicalName":"IDAO","contractDependencies":[],"contractKind":"interface","documentation":{"id":2390,"nodeType":"StructuredDocumentation","src":"72:175:25","text":"@title IDAO\n @author Aragon X - 2022-2023\n @notice The interface required for DAOs within the Aragon App DAO framework.\n @custom:security-contact sirt@aragon.org"},"fullyImplemented":false,"id":2538,"linearizedBaseContracts":[2538],"name":"IDAO","nameLocation":"257:4:25","nodeType":"ContractDefinition","nodes":[{"canonicalName":"IDAO.Action","id":2397,"members":[{"constant":false,"id":2392,"mutability":"mutable","name":"to","nameLocation":"604:2:25","nodeType":"VariableDeclaration","scope":2397,"src":"596:10:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2391,"name":"address","nodeType":"ElementaryTypeName","src":"596:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2394,"mutability":"mutable","name":"value","nameLocation":"624:5:25","nodeType":"VariableDeclaration","scope":2397,"src":"616:13:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2393,"name":"uint256","nodeType":"ElementaryTypeName","src":"616:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2396,"mutability":"mutable","name":"data","nameLocation":"645:4:25","nodeType":"VariableDeclaration","scope":2397,"src":"639:10:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":2395,"name":"bytes","nodeType":"ElementaryTypeName","src":"639:5:25","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"name":"Action","nameLocation":"579:6:25","nodeType":"StructDefinition","scope":2538,"src":"572:84:25","visibility":"public"},{"documentation":{"id":2398,"nodeType":"StructuredDocumentation","src":"662:500:25","text":"@notice Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\n @param _where The address of the contract.\n @param _who The address of a EOA or contract to give the permissions.\n @param _permissionId The permission identifier.\n @param _data The optional data passed to the `PermissionCondition` registered.\n @return Returns true if the address has permission, false if not."},"functionSelector":"fdef9106","id":2411,"implemented":false,"kind":"function","modifiers":[],"name":"hasPermission","nameLocation":"1176:13:25","nodeType":"FunctionDefinition","parameters":{"id":2407,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2400,"mutability":"mutable","name":"_where","nameLocation":"1207:6:25","nodeType":"VariableDeclaration","scope":2411,"src":"1199:14:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2399,"name":"address","nodeType":"ElementaryTypeName","src":"1199:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2402,"mutability":"mutable","name":"_who","nameLocation":"1231:4:25","nodeType":"VariableDeclaration","scope":2411,"src":"1223:12:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2401,"name":"address","nodeType":"ElementaryTypeName","src":"1223:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2404,"mutability":"mutable","name":"_permissionId","nameLocation":"1253:13:25","nodeType":"VariableDeclaration","scope":2411,"src":"1245:21:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2403,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1245:7:25","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2406,"mutability":"mutable","name":"_data","nameLocation":"1289:5:25","nodeType":"VariableDeclaration","scope":2411,"src":"1276:18:25","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2405,"name":"bytes","nodeType":"ElementaryTypeName","src":"1276:5:25","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1189:111:25"},"returnParameters":{"id":2410,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2409,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2411,"src":"1324:4:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2408,"name":"bool","nodeType":"ElementaryTypeName","src":"1324:4:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1323:6:25"},"scope":2538,"src":"1167:163:25","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2412,"nodeType":"StructuredDocumentation","src":"1336:125:25","text":"@notice Updates the DAO metadata (e.g., an IPFS hash).\n @param _metadata The IPFS hash of the new metadata object."},"functionSelector":"ee57e36f","id":2417,"implemented":false,"kind":"function","modifiers":[],"name":"setMetadata","nameLocation":"1475:11:25","nodeType":"FunctionDefinition","parameters":{"id":2415,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2414,"mutability":"mutable","name":"_metadata","nameLocation":"1502:9:25","nodeType":"VariableDeclaration","scope":2417,"src":"1487:24:25","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2413,"name":"bytes","nodeType":"ElementaryTypeName","src":"1487:5:25","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1486:26:25"},"returnParameters":{"id":2416,"nodeType":"ParameterList","parameters":[],"src":"1521:0:25"},"scope":2538,"src":"1466:56:25","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"anonymous":false,"documentation":{"id":2418,"nodeType":"StructuredDocumentation","src":"1528:119:25","text":"@notice Emitted when the DAO metadata is updated.\n @param metadata The IPFS hash of the new metadata object."},"eventSelector":"bb39ebb37e60fb5d606ffdb749d2336e56b88e6c88c4bd6513b308f643186eed","id":2422,"name":"MetadataSet","nameLocation":"1658:11:25","nodeType":"EventDefinition","parameters":{"id":2421,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2420,"indexed":false,"mutability":"mutable","name":"metadata","nameLocation":"1676:8:25","nodeType":"VariableDeclaration","scope":2422,"src":"1670:14:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2419,"name":"bytes","nodeType":"ElementaryTypeName","src":"1670:5:25","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1669:16:25"},"src":"1652:34:25"},{"documentation":{"id":2423,"nodeType":"StructuredDocumentation","src":"1692:864:25","text":"@notice Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted.\n @param _callId The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce.\n @param _actions The array of actions.\n @param _allowFailureMap A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\n @return The array of results obtained from the executed actions in `bytes`.\n @return The resulting failure map containing the actions have actually failed."},"functionSelector":"c71bf324","id":2439,"implemented":false,"kind":"function","modifiers":[],"name":"execute","nameLocation":"2570:7:25","nodeType":"FunctionDefinition","parameters":{"id":2432,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2425,"mutability":"mutable","name":"_callId","nameLocation":"2595:7:25","nodeType":"VariableDeclaration","scope":2439,"src":"2587:15:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2424,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2587:7:25","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2429,"mutability":"mutable","name":"_actions","nameLocation":"2628:8:25","nodeType":"VariableDeclaration","scope":2439,"src":"2612:24:25","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Action_$2397_memory_ptr_$dyn_memory_ptr","typeString":"struct IDAO.Action[]"},"typeName":{"baseType":{"id":2427,"nodeType":"UserDefinedTypeName","pathNode":{"id":2426,"name":"Action","nameLocations":["2612:6:25"],"nodeType":"IdentifierPath","referencedDeclaration":2397,"src":"2612:6:25"},"referencedDeclaration":2397,"src":"2612:6:25","typeDescriptions":{"typeIdentifier":"t_struct$_Action_$2397_storage_ptr","typeString":"struct IDAO.Action"}},"id":2428,"nodeType":"ArrayTypeName","src":"2612:8:25","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Action_$2397_storage_$dyn_storage_ptr","typeString":"struct IDAO.Action[]"}},"visibility":"internal"},{"constant":false,"id":2431,"mutability":"mutable","name":"_allowFailureMap","nameLocation":"2654:16:25","nodeType":"VariableDeclaration","scope":2439,"src":"2646:24:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2430,"name":"uint256","nodeType":"ElementaryTypeName","src":"2646:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2577:99:25"},"returnParameters":{"id":2438,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2435,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2439,"src":"2695:14:25","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":2433,"name":"bytes","nodeType":"ElementaryTypeName","src":"2695:5:25","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":2434,"nodeType":"ArrayTypeName","src":"2695:7:25","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"},{"constant":false,"id":2437,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2439,"src":"2711:7:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2436,"name":"uint256","nodeType":"ElementaryTypeName","src":"2711:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2694:25:25"},"scope":2538,"src":"2561:159:25","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"anonymous":false,"documentation":{"id":2440,"nodeType":"StructuredDocumentation","src":"2726:611:25","text":"@notice Emitted when a proposal is executed.\n @param actor The address of the caller.\n @param callId The ID of the call.\n @param actions The array of actions executed.\n @param allowFailureMap The allow failure map encoding which actions are allowed to fail.\n @param failureMap The failure map encoding which actions have failed.\n @param execResults The array with the results of the executed actions.\n @dev The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce."},"eventSelector":"d4e57c2049f004fb297ef78591cd409503ceb6b2c722d7ffed032fc99e5f3b58","id":2457,"name":"Executed","nameLocation":"3348:8:25","nodeType":"EventDefinition","parameters":{"id":2456,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2442,"indexed":true,"mutability":"mutable","name":"actor","nameLocation":"3382:5:25","nodeType":"VariableDeclaration","scope":2457,"src":"3366:21:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2441,"name":"address","nodeType":"ElementaryTypeName","src":"3366:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2444,"indexed":false,"mutability":"mutable","name":"callId","nameLocation":"3405:6:25","nodeType":"VariableDeclaration","scope":2457,"src":"3397:14:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2443,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3397:7:25","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2448,"indexed":false,"mutability":"mutable","name":"actions","nameLocation":"3430:7:25","nodeType":"VariableDeclaration","scope":2457,"src":"3421:16:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Action_$2397_memory_ptr_$dyn_memory_ptr","typeString":"struct IDAO.Action[]"},"typeName":{"baseType":{"id":2446,"nodeType":"UserDefinedTypeName","pathNode":{"id":2445,"name":"Action","nameLocations":["3421:6:25"],"nodeType":"IdentifierPath","referencedDeclaration":2397,"src":"3421:6:25"},"referencedDeclaration":2397,"src":"3421:6:25","typeDescriptions":{"typeIdentifier":"t_struct$_Action_$2397_storage_ptr","typeString":"struct IDAO.Action"}},"id":2447,"nodeType":"ArrayTypeName","src":"3421:8:25","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Action_$2397_storage_$dyn_storage_ptr","typeString":"struct IDAO.Action[]"}},"visibility":"internal"},{"constant":false,"id":2450,"indexed":false,"mutability":"mutable","name":"allowFailureMap","nameLocation":"3455:15:25","nodeType":"VariableDeclaration","scope":2457,"src":"3447:23:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2449,"name":"uint256","nodeType":"ElementaryTypeName","src":"3447:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2452,"indexed":false,"mutability":"mutable","name":"failureMap","nameLocation":"3488:10:25","nodeType":"VariableDeclaration","scope":2457,"src":"3480:18:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2451,"name":"uint256","nodeType":"ElementaryTypeName","src":"3480:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2455,"indexed":false,"mutability":"mutable","name":"execResults","nameLocation":"3516:11:25","nodeType":"VariableDeclaration","scope":2457,"src":"3508:19:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":2453,"name":"bytes","nodeType":"ElementaryTypeName","src":"3508:5:25","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":2454,"nodeType":"ArrayTypeName","src":"3508:7:25","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"}],"src":"3356:177:25"},"src":"3342:192:25"},{"anonymous":false,"documentation":{"id":2458,"nodeType":"StructuredDocumentation","src":"3540:279:25","text":"@notice Emitted when a standard callback is registered.\n @param interfaceId The ID of the interface.\n @param callbackSelector The selector of the callback function.\n @param magicNumber The magic number to be registered for the callback function selector."},"eventSelector":"fc72fd547553f7a663e0048e590afc9c47b56a4242e960f31cf4c62e23d308b9","id":2466,"name":"StandardCallbackRegistered","nameLocation":"3830:26:25","nodeType":"EventDefinition","parameters":{"id":2465,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2460,"indexed":false,"mutability":"mutable","name":"interfaceId","nameLocation":"3873:11:25","nodeType":"VariableDeclaration","scope":2466,"src":"3866:18:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2459,"name":"bytes4","nodeType":"ElementaryTypeName","src":"3866:6:25","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"},{"constant":false,"id":2462,"indexed":false,"mutability":"mutable","name":"callbackSelector","nameLocation":"3901:16:25","nodeType":"VariableDeclaration","scope":2466,"src":"3894:23:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2461,"name":"bytes4","nodeType":"ElementaryTypeName","src":"3894:6:25","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"},{"constant":false,"id":2464,"indexed":false,"mutability":"mutable","name":"magicNumber","nameLocation":"3934:11:25","nodeType":"VariableDeclaration","scope":2466,"src":"3927:18:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2463,"name":"bytes4","nodeType":"ElementaryTypeName","src":"3927:6:25","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"3856:95:25"},"src":"3824:128:25"},{"documentation":{"id":2467,"nodeType":"StructuredDocumentation","src":"3958:298:25","text":"@notice Deposits (native) tokens to the DAO contract with a reference string.\n @param _token The address of the token or address(0) in case of the native token.\n @param _amount The amount of tokens to deposit.\n @param _reference The reference describing the deposit reason."},"functionSelector":"bfe07da6","id":2476,"implemented":false,"kind":"function","modifiers":[],"name":"deposit","nameLocation":"4270:7:25","nodeType":"FunctionDefinition","parameters":{"id":2474,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2469,"mutability":"mutable","name":"_token","nameLocation":"4286:6:25","nodeType":"VariableDeclaration","scope":2476,"src":"4278:14:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2468,"name":"address","nodeType":"ElementaryTypeName","src":"4278:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2471,"mutability":"mutable","name":"_amount","nameLocation":"4302:7:25","nodeType":"VariableDeclaration","scope":2476,"src":"4294:15:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2470,"name":"uint256","nodeType":"ElementaryTypeName","src":"4294:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2473,"mutability":"mutable","name":"_reference","nameLocation":"4327:10:25","nodeType":"VariableDeclaration","scope":2476,"src":"4311:26:25","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string"},"typeName":{"id":2472,"name":"string","nodeType":"ElementaryTypeName","src":"4311:6:25","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"4277:61:25"},"returnParameters":{"id":2475,"nodeType":"ParameterList","parameters":[],"src":"4355:0:25"},"scope":2538,"src":"4261:95:25","stateMutability":"payable","virtual":false,"visibility":"external"},{"anonymous":false,"documentation":{"id":2477,"nodeType":"StructuredDocumentation","src":"4362:297:25","text":"@notice Emitted when a token deposit has been made to the DAO.\n @param sender The address of the sender.\n @param token The address of the deposited token.\n @param amount The amount of tokens deposited.\n @param _reference The reference describing the deposit reason."},"eventSelector":"2bc500cf071be2d1c1458ed6ff484cd4db4345ada8943dee7ff29e7af3558f76","id":2487,"name":"Deposited","nameLocation":"4670:9:25","nodeType":"EventDefinition","parameters":{"id":2486,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2479,"indexed":true,"mutability":"mutable","name":"sender","nameLocation":"4705:6:25","nodeType":"VariableDeclaration","scope":2487,"src":"4689:22:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2478,"name":"address","nodeType":"ElementaryTypeName","src":"4689:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2481,"indexed":true,"mutability":"mutable","name":"token","nameLocation":"4737:5:25","nodeType":"VariableDeclaration","scope":2487,"src":"4721:21:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2480,"name":"address","nodeType":"ElementaryTypeName","src":"4721:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2483,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"4760:6:25","nodeType":"VariableDeclaration","scope":2487,"src":"4752:14:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2482,"name":"uint256","nodeType":"ElementaryTypeName","src":"4752:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2485,"indexed":false,"mutability":"mutable","name":"_reference","nameLocation":"4783:10:25","nodeType":"VariableDeclaration","scope":2487,"src":"4776:17:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2484,"name":"string","nodeType":"ElementaryTypeName","src":"4776:6:25","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"4679:120:25"},"src":"4664:136:25"},{"anonymous":false,"documentation":{"id":2488,"nodeType":"StructuredDocumentation","src":"4806:400:25","text":"@notice Emitted when a native token deposit has been made to the DAO.\n @dev This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).\n @param sender The address of the sender.\n @param amount The amount of native tokens deposited."},"eventSelector":"62c2c8e34665db7c56b2cabd7f5fb9702ccd352ffa8150147e450797e9f8e8f3","id":2494,"name":"NativeTokenDeposited","nameLocation":"5217:20:25","nodeType":"EventDefinition","parameters":{"id":2493,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2490,"indexed":false,"mutability":"mutable","name":"sender","nameLocation":"5246:6:25","nodeType":"VariableDeclaration","scope":2494,"src":"5238:14:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2489,"name":"address","nodeType":"ElementaryTypeName","src":"5238:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2492,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"5262:6:25","nodeType":"VariableDeclaration","scope":2494,"src":"5254:14:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2491,"name":"uint256","nodeType":"ElementaryTypeName","src":"5254:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5237:32:25"},"src":"5211:59:25"},{"documentation":{"id":2495,"nodeType":"StructuredDocumentation","src":"5276:140:25","text":"@notice Setter for the trusted forwarder verifying the meta transaction.\n @param _trustedForwarder The trusted forwarder address."},"functionSelector":"da742228","id":2500,"implemented":false,"kind":"function","modifiers":[],"name":"setTrustedForwarder","nameLocation":"5430:19:25","nodeType":"FunctionDefinition","parameters":{"id":2498,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2497,"mutability":"mutable","name":"_trustedForwarder","nameLocation":"5458:17:25","nodeType":"VariableDeclaration","scope":2500,"src":"5450:25:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2496,"name":"address","nodeType":"ElementaryTypeName","src":"5450:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5449:27:25"},"returnParameters":{"id":2499,"nodeType":"ParameterList","parameters":[],"src":"5485:0:25"},"scope":2538,"src":"5421:65:25","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2501,"nodeType":"StructuredDocumentation","src":"5492:123:25","text":"@notice Getter for the trusted forwarder verifying the meta transaction.\n @return The trusted forwarder address."},"functionSelector":"ce1b815f","id":2506,"implemented":false,"kind":"function","modifiers":[],"name":"getTrustedForwarder","nameLocation":"5629:19:25","nodeType":"FunctionDefinition","parameters":{"id":2502,"nodeType":"ParameterList","parameters":[],"src":"5648:2:25"},"returnParameters":{"id":2505,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2504,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2506,"src":"5674:7:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2503,"name":"address","nodeType":"ElementaryTypeName","src":"5674:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5673:9:25"},"scope":2538,"src":"5620:63:25","stateMutability":"view","virtual":false,"visibility":"external"},{"anonymous":false,"documentation":{"id":2507,"nodeType":"StructuredDocumentation","src":"5689:118:25","text":"@notice Emitted when a new TrustedForwarder is set on the DAO.\n @param forwarder the new forwarder address."},"eventSelector":"d91237492a9e30cd2faf361fc103998a382ff0ec2b1b07dc1cbebb76ae2f1ea2","id":2511,"name":"TrustedForwarderSet","nameLocation":"5818:19:25","nodeType":"EventDefinition","parameters":{"id":2510,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2509,"indexed":false,"mutability":"mutable","name":"forwarder","nameLocation":"5846:9:25","nodeType":"VariableDeclaration","scope":2511,"src":"5838:17:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2508,"name":"address","nodeType":"ElementaryTypeName","src":"5838:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5837:19:25"},"src":"5812:45:25"},{"documentation":{"id":2512,"nodeType":"StructuredDocumentation","src":"5863:378:25","text":"@notice Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\n @param _hash The hash of the data to be signed.\n @param _signature The signature byte array associated with `_hash`.\n @return Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not."},"functionSelector":"1626ba7e","id":2521,"implemented":false,"kind":"function","modifiers":[],"name":"isValidSignature","nameLocation":"6255:16:25","nodeType":"FunctionDefinition","parameters":{"id":2517,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2514,"mutability":"mutable","name":"_hash","nameLocation":"6280:5:25","nodeType":"VariableDeclaration","scope":2521,"src":"6272:13:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2513,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6272:7:25","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2516,"mutability":"mutable","name":"_signature","nameLocation":"6300:10:25","nodeType":"VariableDeclaration","scope":2521,"src":"6287:23:25","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2515,"name":"bytes","nodeType":"ElementaryTypeName","src":"6287:5:25","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6271:40:25"},"returnParameters":{"id":2520,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2519,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2521,"src":"6330:6:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2518,"name":"bytes4","nodeType":"ElementaryTypeName","src":"6330:6:25","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"6329:8:25"},"scope":2538,"src":"6246:92:25","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2522,"nodeType":"StructuredDocumentation","src":"6344:385:25","text":"@notice Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\n @param _interfaceId The ID of the interface.\n @param _callbackSelector The selector of the callback function.\n @param _magicNumber The magic number to be registered for the function signature."},"functionSelector":"c4a50145","id":2531,"implemented":false,"kind":"function","modifiers":[],"name":"registerStandardCallback","nameLocation":"6743:24:25","nodeType":"FunctionDefinition","parameters":{"id":2529,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2524,"mutability":"mutable","name":"_interfaceId","nameLocation":"6784:12:25","nodeType":"VariableDeclaration","scope":2531,"src":"6777:19:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2523,"name":"bytes4","nodeType":"ElementaryTypeName","src":"6777:6:25","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"},{"constant":false,"id":2526,"mutability":"mutable","name":"_callbackSelector","nameLocation":"6813:17:25","nodeType":"VariableDeclaration","scope":2531,"src":"6806:24:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2525,"name":"bytes4","nodeType":"ElementaryTypeName","src":"6806:6:25","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"},{"constant":false,"id":2528,"mutability":"mutable","name":"_magicNumber","nameLocation":"6847:12:25","nodeType":"VariableDeclaration","scope":2531,"src":"6840:19:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2527,"name":"bytes4","nodeType":"ElementaryTypeName","src":"6840:6:25","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"6767:98:25"},"returnParameters":{"id":2530,"nodeType":"ParameterList","parameters":[],"src":"6874:0:25"},"scope":2538,"src":"6734:141:25","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2532,"nodeType":"StructuredDocumentation","src":"6881:158:25","text":"@notice Removed function being left here to not corrupt the IDAO interface ID. Any call will revert.\n @dev Introduced in v1.0.0. Removed in v1.4.0."},"functionSelector":"3e2ab0d9","id":2537,"implemented":false,"kind":"function","modifiers":[],"name":"setSignatureValidator","nameLocation":"7053:21:25","nodeType":"FunctionDefinition","parameters":{"id":2535,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2534,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2537,"src":"7075:7:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2533,"name":"address","nodeType":"ElementaryTypeName","src":"7075:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7074:9:25"},"returnParameters":{"id":2536,"nodeType":"ParameterList","parameters":[],"src":"7092:0:25"},"scope":2538,"src":"7044:49:25","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":2539,"src":"247:6848:25","usedErrors":[]}],"src":"47:7049:25"},"id":25},"src/mocks/plugin/PluginCloneableMock.sol":{"ast":{"absolutePath":"src/mocks/plugin/PluginCloneableMock.sol","exportedSymbols":{"IDAO":[2538],"PluginCloneable":[4351],"PluginCloneableMockBad":[2617],"PluginCloneableMockBuild1":[2567],"PluginCloneableMockBuild2":[2596]},"id":2618,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":2540,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"91:23:26"},{"absolutePath":"src/plugin/PluginCloneable.sol","file":"../../plugin/PluginCloneable.sol","id":2542,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2618,"sourceUnit":4352,"src":"116:65:26","symbolAliases":[{"foreign":{"id":2541,"name":"PluginCloneable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4351,"src":"124:15:26","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/dao/IDAO.sol","file":"../../dao/IDAO.sol","id":2544,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2618,"sourceUnit":2539,"src":"182:40:26","symbolAliases":[{"foreign":{"id":2543,"name":"IDAO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2538,"src":"190:4:26","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":2546,"name":"PluginCloneable","nameLocations":["409:15:26"],"nodeType":"IdentifierPath","referencedDeclaration":4351,"src":"409:15:26"},"id":2547,"nodeType":"InheritanceSpecifier","src":"409:15:26"}],"canonicalName":"PluginCloneableMockBuild1","contractDependencies":[],"contractKind":"contract","documentation":{"id":2545,"nodeType":"StructuredDocumentation","src":"224:147:26","text":"@notice A mock cloneable plugin to be deployed via the minimal proxy pattern.\n v1.1 (Release 1, Build 1)\n @dev DO NOT USE IN PRODUCTION!"},"fullyImplemented":true,"id":2567,"linearizedBaseContracts":[2567,4351,5136,5114,3937,1052,1281,1293,534,4002],"name":"PluginCloneableMockBuild1","nameLocation":"380:25:26","nodeType":"ContractDefinition","nodes":[{"constant":false,"functionSelector":"6accab8c","id":2549,"mutability":"mutable","name":"state1","nameLocation":"446:6:26","nodeType":"VariableDeclaration","scope":2567,"src":"431:21:26","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2548,"name":"uint256","nodeType":"ElementaryTypeName","src":"431:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"body":{"id":2565,"nodeType":"Block","src":"511:65:26","statements":[{"expression":{"arguments":[{"id":2558,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2552,"src":"544:4:26","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}],"id":2557,"name":"__PluginCloneable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4225,"src":"521:22:26","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IDAO_$2538_$returns$__$","typeString":"function (contract IDAO)"}},"id":2559,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"521:28:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2560,"nodeType":"ExpressionStatement","src":"521:28:26"},{"expression":{"id":2563,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2561,"name":"state1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2549,"src":"559:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"31","id":2562,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"568:1:26","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"559:10:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2564,"nodeType":"ExpressionStatement","src":"559:10:26"}]},"functionSelector":"c4d66de8","id":2566,"implemented":true,"kind":"function","modifiers":[{"id":2555,"kind":"modifierInvocation","modifierName":{"id":2554,"name":"initializer","nameLocations":["499:11:26"],"nodeType":"IdentifierPath","referencedDeclaration":436,"src":"499:11:26"},"nodeType":"ModifierInvocation","src":"499:11:26"}],"name":"initialize","nameLocation":"468:10:26","nodeType":"FunctionDefinition","parameters":{"id":2553,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2552,"mutability":"mutable","name":"_dao","nameLocation":"484:4:26","nodeType":"VariableDeclaration","scope":2566,"src":"479:9:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"},"typeName":{"id":2551,"nodeType":"UserDefinedTypeName","pathNode":{"id":2550,"name":"IDAO","nameLocations":["479:4:26"],"nodeType":"IdentifierPath","referencedDeclaration":2538,"src":"479:4:26"},"referencedDeclaration":2538,"src":"479:4:26","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}},"visibility":"internal"}],"src":"478:11:26"},"returnParameters":{"id":2556,"nodeType":"ParameterList","parameters":[],"src":"511:0:26"},"scope":2567,"src":"459:117:26","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":2618,"src":"371:207:26","usedErrors":[]},{"abstract":false,"baseContracts":[{"baseName":{"id":2569,"name":"PluginCloneable","nameLocations":["765:15:26"],"nodeType":"IdentifierPath","referencedDeclaration":4351,"src":"765:15:26"},"id":2570,"nodeType":"InheritanceSpecifier","src":"765:15:26"}],"canonicalName":"PluginCloneableMockBuild2","contractDependencies":[],"contractKind":"contract","documentation":{"id":2568,"nodeType":"StructuredDocumentation","src":"580:147:26","text":"@notice A mock cloneable plugin to be deployed via the minimal proxy pattern.\n v1.1 (Release 1, Build 2)\n @dev DO NOT USE IN PRODUCTION!"},"fullyImplemented":true,"id":2596,"linearizedBaseContracts":[2596,4351,5136,5114,3937,1052,1281,1293,534,4002],"name":"PluginCloneableMockBuild2","nameLocation":"736:25:26","nodeType":"ContractDefinition","nodes":[{"constant":false,"functionSelector":"6accab8c","id":2572,"mutability":"mutable","name":"state1","nameLocation":"802:6:26","nodeType":"VariableDeclaration","scope":2596,"src":"787:21:26","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2571,"name":"uint256","nodeType":"ElementaryTypeName","src":"787:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"constant":false,"functionSelector":"efe51cca","id":2574,"mutability":"mutable","name":"state2","nameLocation":"829:6:26","nodeType":"VariableDeclaration","scope":2596,"src":"814:21:26","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2573,"name":"uint256","nodeType":"ElementaryTypeName","src":"814:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"body":{"id":2594,"nodeType":"Block","src":"894:85:26","statements":[{"expression":{"arguments":[{"id":2583,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2577,"src":"927:4:26","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}],"id":2582,"name":"__PluginCloneable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4225,"src":"904:22:26","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IDAO_$2538_$returns$__$","typeString":"function (contract IDAO)"}},"id":2584,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"904:28:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2585,"nodeType":"ExpressionStatement","src":"904:28:26"},{"expression":{"id":2588,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2586,"name":"state1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2572,"src":"942:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"31","id":2587,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"951:1:26","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"942:10:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2589,"nodeType":"ExpressionStatement","src":"942:10:26"},{"expression":{"id":2592,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2590,"name":"state2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2574,"src":"962:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"32","id":2591,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"971:1:26","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"962:10:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2593,"nodeType":"ExpressionStatement","src":"962:10:26"}]},"functionSelector":"c4d66de8","id":2595,"implemented":true,"kind":"function","modifiers":[{"id":2580,"kind":"modifierInvocation","modifierName":{"id":2579,"name":"initializer","nameLocations":["882:11:26"],"nodeType":"IdentifierPath","referencedDeclaration":436,"src":"882:11:26"},"nodeType":"ModifierInvocation","src":"882:11:26"}],"name":"initialize","nameLocation":"851:10:26","nodeType":"FunctionDefinition","parameters":{"id":2578,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2577,"mutability":"mutable","name":"_dao","nameLocation":"867:4:26","nodeType":"VariableDeclaration","scope":2595,"src":"862:9:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"},"typeName":{"id":2576,"nodeType":"UserDefinedTypeName","pathNode":{"id":2575,"name":"IDAO","nameLocations":["862:4:26"],"nodeType":"IdentifierPath","referencedDeclaration":2538,"src":"862:4:26"},"referencedDeclaration":2538,"src":"862:4:26","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}},"visibility":"internal"}],"src":"861:11:26"},"returnParameters":{"id":2581,"nodeType":"ParameterList","parameters":[],"src":"894:0:26"},"scope":2596,"src":"842:137:26","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":2618,"src":"727:254:26","usedErrors":[]},{"abstract":false,"baseContracts":[{"baseName":{"id":2598,"name":"PluginCloneable","nameLocations":["1122:15:26"],"nodeType":"IdentifierPath","referencedDeclaration":4351,"src":"1122:15:26"},"id":2599,"nodeType":"InheritanceSpecifier","src":"1122:15:26"}],"canonicalName":"PluginCloneableMockBad","contractDependencies":[],"contractKind":"contract","documentation":{"id":2597,"nodeType":"StructuredDocumentation","src":"983:104:26","text":"@notice A mock cloneable plugin missing an initializer function.\n @dev DO NOT USE IN PRODUCTION!"},"fullyImplemented":true,"id":2617,"linearizedBaseContracts":[2617,4351,5136,5114,3937,1052,1281,1293,534,4002],"name":"PluginCloneableMockBad","nameLocation":"1096:22:26","nodeType":"ContractDefinition","nodes":[{"constant":false,"functionSelector":"6accab8c","id":2601,"mutability":"mutable","name":"state1","nameLocation":"1159:6:26","nodeType":"VariableDeclaration","scope":2617,"src":"1144:21:26","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2600,"name":"uint256","nodeType":"ElementaryTypeName","src":"1144:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"body":{"id":2615,"nodeType":"Block","src":"1218:65:26","statements":[{"expression":{"arguments":[{"id":2608,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2604,"src":"1251:4:26","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}],"id":2607,"name":"__PluginCloneable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4225,"src":"1228:22:26","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IDAO_$2538_$returns$__$","typeString":"function (contract IDAO)"}},"id":2609,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1228:28:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2610,"nodeType":"ExpressionStatement","src":"1228:28:26"},{"expression":{"id":2613,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2611,"name":"state1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2601,"src":"1266:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"31","id":2612,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1275:1:26","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1266:10:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2614,"nodeType":"ExpressionStatement","src":"1266:10:26"}]},"functionSelector":"8883bbd7","id":2616,"implemented":true,"kind":"function","modifiers":[],"name":"notAnInitializer","nameLocation":"1181:16:26","nodeType":"FunctionDefinition","parameters":{"id":2605,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2604,"mutability":"mutable","name":"_dao","nameLocation":"1203:4:26","nodeType":"VariableDeclaration","scope":2616,"src":"1198:9:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"},"typeName":{"id":2603,"nodeType":"UserDefinedTypeName","pathNode":{"id":2602,"name":"IDAO","nameLocations":["1198:4:26"],"nodeType":"IdentifierPath","referencedDeclaration":2538,"src":"1198:4:26"},"referencedDeclaration":2538,"src":"1198:4:26","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}},"visibility":"internal"}],"src":"1197:11:26"},"returnParameters":{"id":2606,"nodeType":"ParameterList","parameters":[],"src":"1218:0:26"},"scope":2617,"src":"1172:111:26","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":2618,"src":"1087:198:26","usedErrors":[]}],"src":"91:1195:26"},"id":26},"src/mocks/plugin/PluginCloneableSetupMock.sol":{"ast":{"absolutePath":"src/mocks/plugin/PluginCloneableSetupMock.sol","exportedSymbols":{"IDAO":[2538],"IPluginSetup":[4859],"PermissionLib":[3814],"PluginCloneableMockBuild1":[2567],"PluginCloneableMockBuild2":[2596],"PluginCloneableSetupMockBuild1":[2740],"PluginCloneableSetupMockBuild2":[2845],"PluginSetup":[4957],"ProxyLib":[5102],"mockHelpers":[3108],"mockPermissions":[3069]},"id":2846,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":2619,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"91:23:27"},{"absolutePath":"src/permission/PermissionLib.sol","file":"../../permission/PermissionLib.sol","id":2621,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2846,"sourceUnit":3815,"src":"116:65:27","symbolAliases":[{"foreign":{"id":2620,"name":"PermissionLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3814,"src":"124:13:27","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/plugin/setup/IPluginSetup.sol","file":"../../plugin/setup/IPluginSetup.sol","id":2623,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2846,"sourceUnit":4860,"src":"182:65:27","symbolAliases":[{"foreign":{"id":2622,"name":"IPluginSetup","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4859,"src":"190:12:27","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/plugin/setup/PluginSetup.sol","file":"../../plugin/setup/PluginSetup.sol","id":2625,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2846,"sourceUnit":4958,"src":"248:63:27","symbolAliases":[{"foreign":{"id":2624,"name":"PluginSetup","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4957,"src":"256:11:27","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/utils/deployment/ProxyLib.sol","file":"../../utils/deployment/ProxyLib.sol","id":2627,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2846,"sourceUnit":5103,"src":"312:61:27","symbolAliases":[{"foreign":{"id":2626,"name":"ProxyLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5102,"src":"320:8:27","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/dao/IDAO.sol","file":"../../dao/IDAO.sol","id":2629,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2846,"sourceUnit":2539,"src":"374:40:27","symbolAliases":[{"foreign":{"id":2628,"name":"IDAO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2538,"src":"382:4:27","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/mocks/plugin/PluginSetupMockData.sol","file":"./PluginSetupMockData.sol","id":2632,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2846,"sourceUnit":3109,"src":"415:71:27","symbolAliases":[{"foreign":{"id":2630,"name":"mockPermissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3069,"src":"423:15:27","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":2631,"name":"mockHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3108,"src":"440:11:27","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/mocks/plugin/PluginCloneableMock.sol","file":"./PluginCloneableMock.sol","id":2635,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2846,"sourceUnit":2618,"src":"487:95:27","symbolAliases":[{"foreign":{"id":2633,"name":"PluginCloneableMockBuild1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2567,"src":"495:25:27","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":2634,"name":"PluginCloneableMockBuild2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2596,"src":"522:25:27","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":2637,"name":"PluginSetup","nameLocations":["792:11:27"],"nodeType":"IdentifierPath","referencedDeclaration":4957,"src":"792:11:27"},"id":2638,"nodeType":"InheritanceSpecifier","src":"792:11:27"}],"canonicalName":"PluginCloneableSetupMockBuild1","contractDependencies":[2567],"contractKind":"contract","documentation":{"id":2636,"nodeType":"StructuredDocumentation","src":"584:165:27","text":"@notice A mock plugin setup of a cloneable plugin to be deployed via the minimal proxy pattern.\n v1.1 (Release 1, Build 1)\n @dev DO NOT USE IN PRODUCTION!"},"fullyImplemented":true,"id":2740,"linearizedBaseContracts":[2740,4957,5136,5114,4859,2375,2387],"name":"PluginCloneableSetupMockBuild1","nameLocation":"758:30:27","nodeType":"ContractDefinition","nodes":[{"global":false,"id":2641,"libraryName":{"id":2639,"name":"ProxyLib","nameLocations":["816:8:27"],"nodeType":"IdentifierPath","referencedDeclaration":5102,"src":"816:8:27"},"nodeType":"UsingForDirective","src":"810:27:27","typeName":{"id":2640,"name":"address","nodeType":"ElementaryTypeName","src":"829:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},{"constant":true,"id":2644,"mutability":"constant","name":"THIS_BUILD","nameLocation":"868:10:27","nodeType":"VariableDeclaration","scope":2740,"src":"843:39:27","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":2642,"name":"uint16","nodeType":"ElementaryTypeName","src":"843:6:27","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"value":{"hexValue":"31","id":2643,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"881:1:27","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"visibility":"internal"},{"body":{"id":2656,"nodeType":"Block","src":"957:2:27","statements":[]},"id":2657,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":2651,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"NewExpression","src":"923:29:27","typeDescriptions":{"typeIdentifier":"t_function_creation_nonpayable$__$returns$_t_contract$_PluginCloneableMockBuild1_$2567_$","typeString":"function () returns (contract PluginCloneableMockBuild1)"},"typeName":{"id":2650,"nodeType":"UserDefinedTypeName","pathNode":{"id":2649,"name":"PluginCloneableMockBuild1","nameLocations":["927:25:27"],"nodeType":"IdentifierPath","referencedDeclaration":2567,"src":"927:25:27"},"referencedDeclaration":2567,"src":"927:25:27","typeDescriptions":{"typeIdentifier":"t_contract$_PluginCloneableMockBuild1_$2567","typeString":"contract PluginCloneableMockBuild1"}}},"id":2652,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"923:31:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_PluginCloneableMockBuild1_$2567","typeString":"contract PluginCloneableMockBuild1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_PluginCloneableMockBuild1_$2567","typeString":"contract PluginCloneableMockBuild1"}],"id":2648,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"915:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2647,"name":"address","nodeType":"ElementaryTypeName","src":"915:7:27","typeDescriptions":{}}},"id":2653,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"915:40:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":2654,"kind":"baseConstructorSpecifier","modifierName":{"id":2646,"name":"PluginSetup","nameLocations":["903:11:27"],"nodeType":"IdentifierPath","referencedDeclaration":4957,"src":"903:11:27"},"nodeType":"ModifierInvocation","src":"903:53:27"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":2645,"nodeType":"ParameterList","parameters":[],"src":"900:2:27"},"returnParameters":{"id":2655,"nodeType":"ParameterList","parameters":[],"src":"957:0:27"},"scope":2740,"src":"889:70:27","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[4823],"body":{"id":2710,"nodeType":"Block","src":"1155:381:27","statements":[{"assignments":[2671],"declarations":[{"constant":false,"id":2671,"mutability":"mutable","name":"initData","nameLocation":"1178:8:27","nodeType":"VariableDeclaration","scope":2710,"src":"1165:21:27","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2670,"name":"bytes","nodeType":"ElementaryTypeName","src":"1165:5:27","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":2681,"initialValue":{"arguments":[{"expression":{"id":2674,"name":"PluginCloneableMockBuild1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2567,"src":"1204:25:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PluginCloneableMockBuild1_$2567_$","typeString":"type(contract PluginCloneableMockBuild1)"}},"id":2675,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1230:10:27","memberName":"initialize","nodeType":"MemberAccess","referencedDeclaration":2566,"src":"1204:36:27","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_contract$_IDAO_$2538_$returns$__$","typeString":"function PluginCloneableMockBuild1.initialize(contract IDAO)"}},{"components":[{"arguments":[{"id":2677,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2660,"src":"1248:4:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2676,"name":"IDAO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2538,"src":"1243:4:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IDAO_$2538_$","typeString":"type(contract IDAO)"}},"id":2678,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1243:10:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}}],"id":2679,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1242:12:27","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_nonpayable$_t_contract$_IDAO_$2538_$returns$__$","typeString":"function PluginCloneableMockBuild1.initialize(contract IDAO)"},{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}],"expression":{"id":2672,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967295,"src":"1189:3:27","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":2673,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1193:10:27","memberName":"encodeCall","nodeType":"MemberAccess","src":"1189:14:27","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":2680,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1189:66:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"1165:90:27"},{"expression":{"id":2688,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2682,"name":"plugin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2665,"src":"1265:6:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":2686,"name":"initData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2671,"src":"1310:8:27","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":2683,"name":"implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4956,"src":"1274:14:27","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":2684,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1274:16:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2685,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1291:18:27","memberName":"deployMinimalProxy","nodeType":"MemberAccess","referencedDeclaration":5101,"src":"1274:35:27","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_address_$bound_to$_t_address_$","typeString":"function (address,bytes memory) returns (address)"}},"id":2687,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1274:45:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1265:54:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2689,"nodeType":"ExpressionStatement","src":"1265:54:27"},{"expression":{"id":2696,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":2690,"name":"preparedSetupData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2668,"src":"1329:17:27","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$4802_memory_ptr","typeString":"struct IPluginSetup.PreparedSetupData memory"}},"id":2692,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1347:7:27","memberName":"helpers","nodeType":"MemberAccess","referencedDeclaration":4797,"src":"1329:25:27","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":2694,"name":"THIS_BUILD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2644,"src":"1369:10:27","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"}],"id":2693,"name":"mockHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3108,"src":"1357:11:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$returns$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"function (uint160) pure returns (address[] memory)"}},"id":2695,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1357:23:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"src":"1329:51:27","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":2697,"nodeType":"ExpressionStatement","src":"1329:51:27"},{"expression":{"id":2708,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":2698,"name":"preparedSetupData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2668,"src":"1390:17:27","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$4802_memory_ptr","typeString":"struct IPluginSetup.PreparedSetupData memory"}},"id":2700,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1408:11:27","memberName":"permissions","nodeType":"MemberAccess","referencedDeclaration":4801,"src":"1390:29:27","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"hexValue":"30","id":2702,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1451:1:27","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":2703,"name":"THIS_BUILD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2644,"src":"1466:10:27","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"expression":{"expression":{"id":2704,"name":"PermissionLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3814,"src":"1490:13:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PermissionLib_$3814_$","typeString":"type(library PermissionLib)"}},"id":2705,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1504:9:27","memberName":"Operation","nodeType":"MemberAccess","referencedDeclaration":3793,"src":"1490:23:27","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Operation_$3793_$","typeString":"type(enum PermissionLib.Operation)"}},"id":2706,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1514:5:27","memberName":"Grant","nodeType":"MemberAccess","referencedDeclaration":3790,"src":"1490:29:27","typeDescriptions":{"typeIdentifier":"t_enum$_Operation_$3793","typeString":"enum PermissionLib.Operation"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_enum$_Operation_$3793","typeString":"enum PermissionLib.Operation"}],"id":2701,"name":"mockPermissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3069,"src":"1422:15:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_enum$_Operation_$3793_$returns$_t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint160,uint160,enum PermissionLib.Operation) pure returns (struct PermissionLib.MultiTargetPermission memory[] memory)"}},"id":2707,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1422:107:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"src":"1390:139:27","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"id":2709,"nodeType":"ExpressionStatement","src":"1390:139:27"}]},"documentation":{"id":2658,"nodeType":"StructuredDocumentation","src":"965:28:27","text":"@inheritdoc IPluginSetup"},"functionSelector":"f10832f1","id":2711,"implemented":true,"kind":"function","modifiers":[],"name":"prepareInstallation","nameLocation":"1007:19:27","nodeType":"FunctionDefinition","parameters":{"id":2663,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2660,"mutability":"mutable","name":"_dao","nameLocation":"1044:4:27","nodeType":"VariableDeclaration","scope":2711,"src":"1036:12:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2659,"name":"address","nodeType":"ElementaryTypeName","src":"1036:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2662,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2711,"src":"1058:12:27","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2661,"name":"bytes","nodeType":"ElementaryTypeName","src":"1058:5:27","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1026:50:27"},"returnParameters":{"id":2669,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2665,"mutability":"mutable","name":"plugin","nameLocation":"1103:6:27","nodeType":"VariableDeclaration","scope":2711,"src":"1095:14:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2664,"name":"address","nodeType":"ElementaryTypeName","src":"1095:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2668,"mutability":"mutable","name":"preparedSetupData","nameLocation":"1136:17:27","nodeType":"VariableDeclaration","scope":2711,"src":"1111:42:27","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$4802_memory_ptr","typeString":"struct IPluginSetup.PreparedSetupData"},"typeName":{"id":2667,"nodeType":"UserDefinedTypeName","pathNode":{"id":2666,"name":"PreparedSetupData","nameLocations":["1111:17:27"],"nodeType":"IdentifierPath","referencedDeclaration":4802,"src":"1111:17:27"},"referencedDeclaration":4802,"src":"1111:17:27","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$4802_storage_ptr","typeString":"struct IPluginSetup.PreparedSetupData"}},"visibility":"internal"}],"src":"1094:60:27"},"scope":2740,"src":"998:538:27","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[4852],"body":{"id":2738,"nodeType":"Block","src":"1755:119:27","statements":[{"expression":{"components":[{"id":2724,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2714,"src":"1766:4:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2725,"name":"_payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2717,"src":"1772:8:27","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$4810_calldata_ptr","typeString":"struct IPluginSetup.SetupPayload calldata"}}],"id":2726,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1765:16:27","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_struct$_SetupPayload_$4810_calldata_ptr_$","typeString":"tuple(address,struct IPluginSetup.SetupPayload calldata)"}},"id":2727,"nodeType":"ExpressionStatement","src":"1765:16:27"},{"expression":{"id":2736,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2728,"name":"permissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2722,"src":"1791:11:27","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"hexValue":"30","id":2730,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1821:1:27","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":2731,"name":"THIS_BUILD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2644,"src":"1824:10:27","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"expression":{"expression":{"id":2732,"name":"PermissionLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3814,"src":"1836:13:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PermissionLib_$3814_$","typeString":"type(library PermissionLib)"}},"id":2733,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1850:9:27","memberName":"Operation","nodeType":"MemberAccess","referencedDeclaration":3793,"src":"1836:23:27","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Operation_$3793_$","typeString":"type(enum PermissionLib.Operation)"}},"id":2734,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1860:6:27","memberName":"Revoke","nodeType":"MemberAccess","referencedDeclaration":3791,"src":"1836:30:27","typeDescriptions":{"typeIdentifier":"t_enum$_Operation_$3793","typeString":"enum PermissionLib.Operation"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_enum$_Operation_$3793","typeString":"enum PermissionLib.Operation"}],"id":2729,"name":"mockPermissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3069,"src":"1805:15:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_enum$_Operation_$3793_$returns$_t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint160,uint160,enum PermissionLib.Operation) pure returns (struct PermissionLib.MultiTargetPermission memory[] memory)"}},"id":2735,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1805:62:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"src":"1791:76:27","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"id":2737,"nodeType":"ExpressionStatement","src":"1791:76:27"}]},"documentation":{"id":2712,"nodeType":"StructuredDocumentation","src":"1542:28:27","text":"@inheritdoc IPluginSetup"},"functionSelector":"9cb0a124","id":2739,"implemented":true,"kind":"function","modifiers":[],"name":"prepareUninstallation","nameLocation":"1584:21:27","nodeType":"FunctionDefinition","parameters":{"id":2718,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2714,"mutability":"mutable","name":"_dao","nameLocation":"1623:4:27","nodeType":"VariableDeclaration","scope":2739,"src":"1615:12:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2713,"name":"address","nodeType":"ElementaryTypeName","src":"1615:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2717,"mutability":"mutable","name":"_payload","nameLocation":"1659:8:27","nodeType":"VariableDeclaration","scope":2739,"src":"1637:30:27","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$4810_calldata_ptr","typeString":"struct IPluginSetup.SetupPayload"},"typeName":{"id":2716,"nodeType":"UserDefinedTypeName","pathNode":{"id":2715,"name":"SetupPayload","nameLocations":["1637:12:27"],"nodeType":"IdentifierPath","referencedDeclaration":4810,"src":"1637:12:27"},"referencedDeclaration":4810,"src":"1637:12:27","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$4810_storage_ptr","typeString":"struct IPluginSetup.SetupPayload"}},"visibility":"internal"}],"src":"1605:68:27"},"returnParameters":{"id":2723,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2722,"mutability":"mutable","name":"permissions","nameLocation":"1742:11:27","nodeType":"VariableDeclaration","scope":2739,"src":"1697:56:27","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission[]"},"typeName":{"baseType":{"id":2720,"nodeType":"UserDefinedTypeName","pathNode":{"id":2719,"name":"PermissionLib.MultiTargetPermission","nameLocations":["1697:13:27","1711:21:27"],"nodeType":"IdentifierPath","referencedDeclaration":3813,"src":"1697:35:27"},"referencedDeclaration":3813,"src":"1697:35:27","typeDescriptions":{"typeIdentifier":"t_struct$_MultiTargetPermission_$3813_storage_ptr","typeString":"struct PermissionLib.MultiTargetPermission"}},"id":2721,"nodeType":"ArrayTypeName","src":"1697:37:27","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_storage_$dyn_storage_ptr","typeString":"struct PermissionLib.MultiTargetPermission[]"}},"visibility":"internal"}],"src":"1696:58:27"},"scope":2740,"src":"1575:299:27","stateMutability":"pure","virtual":false,"visibility":"external"}],"scope":2846,"src":"749:1127:27","usedErrors":[2999,4882]},{"abstract":false,"baseContracts":[{"baseName":{"id":2742,"name":"PluginSetup","nameLocations":["2086:11:27"],"nodeType":"IdentifierPath","referencedDeclaration":4957,"src":"2086:11:27"},"id":2743,"nodeType":"InheritanceSpecifier","src":"2086:11:27"}],"canonicalName":"PluginCloneableSetupMockBuild2","contractDependencies":[2596],"contractKind":"contract","documentation":{"id":2741,"nodeType":"StructuredDocumentation","src":"1878:165:27","text":"@notice A mock plugin setup of a cloneable plugin to be deployed via the minimal proxy pattern.\n v1.2 (Release 1, Build 2)\n @dev DO NOT USE IN PRODUCTION!"},"fullyImplemented":true,"id":2845,"linearizedBaseContracts":[2845,4957,5136,5114,4859,2375,2387],"name":"PluginCloneableSetupMockBuild2","nameLocation":"2052:30:27","nodeType":"ContractDefinition","nodes":[{"global":false,"id":2746,"libraryName":{"id":2744,"name":"ProxyLib","nameLocations":["2110:8:27"],"nodeType":"IdentifierPath","referencedDeclaration":5102,"src":"2110:8:27"},"nodeType":"UsingForDirective","src":"2104:27:27","typeName":{"id":2745,"name":"address","nodeType":"ElementaryTypeName","src":"2123:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},{"constant":true,"id":2749,"mutability":"constant","name":"THIS_BUILD","nameLocation":"2162:10:27","nodeType":"VariableDeclaration","scope":2845,"src":"2137:39:27","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":2747,"name":"uint16","nodeType":"ElementaryTypeName","src":"2137:6:27","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"value":{"hexValue":"32","id":2748,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2175:1:27","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"visibility":"internal"},{"body":{"id":2761,"nodeType":"Block","src":"2251:2:27","statements":[]},"id":2762,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":2756,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"NewExpression","src":"2217:29:27","typeDescriptions":{"typeIdentifier":"t_function_creation_nonpayable$__$returns$_t_contract$_PluginCloneableMockBuild2_$2596_$","typeString":"function () returns (contract PluginCloneableMockBuild2)"},"typeName":{"id":2755,"nodeType":"UserDefinedTypeName","pathNode":{"id":2754,"name":"PluginCloneableMockBuild2","nameLocations":["2221:25:27"],"nodeType":"IdentifierPath","referencedDeclaration":2596,"src":"2221:25:27"},"referencedDeclaration":2596,"src":"2221:25:27","typeDescriptions":{"typeIdentifier":"t_contract$_PluginCloneableMockBuild2_$2596","typeString":"contract PluginCloneableMockBuild2"}}},"id":2757,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2217:31:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_PluginCloneableMockBuild2_$2596","typeString":"contract PluginCloneableMockBuild2"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_PluginCloneableMockBuild2_$2596","typeString":"contract PluginCloneableMockBuild2"}],"id":2753,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2209:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2752,"name":"address","nodeType":"ElementaryTypeName","src":"2209:7:27","typeDescriptions":{}}},"id":2758,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2209:40:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":2759,"kind":"baseConstructorSpecifier","modifierName":{"id":2751,"name":"PluginSetup","nameLocations":["2197:11:27"],"nodeType":"IdentifierPath","referencedDeclaration":4957,"src":"2197:11:27"},"nodeType":"ModifierInvocation","src":"2197:53:27"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":2750,"nodeType":"ParameterList","parameters":[],"src":"2194:2:27"},"returnParameters":{"id":2760,"nodeType":"ParameterList","parameters":[],"src":"2251:0:27"},"scope":2845,"src":"2183:70:27","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[4823],"body":{"id":2815,"nodeType":"Block","src":"2449:381:27","statements":[{"assignments":[2776],"declarations":[{"constant":false,"id":2776,"mutability":"mutable","name":"initData","nameLocation":"2472:8:27","nodeType":"VariableDeclaration","scope":2815,"src":"2459:21:27","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2775,"name":"bytes","nodeType":"ElementaryTypeName","src":"2459:5:27","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":2786,"initialValue":{"arguments":[{"expression":{"id":2779,"name":"PluginCloneableMockBuild2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2596,"src":"2498:25:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PluginCloneableMockBuild2_$2596_$","typeString":"type(contract PluginCloneableMockBuild2)"}},"id":2780,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2524:10:27","memberName":"initialize","nodeType":"MemberAccess","referencedDeclaration":2595,"src":"2498:36:27","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_contract$_IDAO_$2538_$returns$__$","typeString":"function PluginCloneableMockBuild2.initialize(contract IDAO)"}},{"components":[{"arguments":[{"id":2782,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2765,"src":"2542:4:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2781,"name":"IDAO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2538,"src":"2537:4:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IDAO_$2538_$","typeString":"type(contract IDAO)"}},"id":2783,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2537:10:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}}],"id":2784,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2536:12:27","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_nonpayable$_t_contract$_IDAO_$2538_$returns$__$","typeString":"function PluginCloneableMockBuild2.initialize(contract IDAO)"},{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}],"expression":{"id":2777,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967295,"src":"2483:3:27","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":2778,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2487:10:27","memberName":"encodeCall","nodeType":"MemberAccess","src":"2483:14:27","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":2785,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2483:66:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"2459:90:27"},{"expression":{"id":2793,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2787,"name":"plugin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2770,"src":"2559:6:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":2791,"name":"initData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2776,"src":"2604:8:27","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":2788,"name":"implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4956,"src":"2568:14:27","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":2789,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2568:16:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2790,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2585:18:27","memberName":"deployMinimalProxy","nodeType":"MemberAccess","referencedDeclaration":5101,"src":"2568:35:27","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_address_$bound_to$_t_address_$","typeString":"function (address,bytes memory) returns (address)"}},"id":2792,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2568:45:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2559:54:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2794,"nodeType":"ExpressionStatement","src":"2559:54:27"},{"expression":{"id":2801,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":2795,"name":"preparedSetupData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2773,"src":"2623:17:27","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$4802_memory_ptr","typeString":"struct IPluginSetup.PreparedSetupData memory"}},"id":2797,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"2641:7:27","memberName":"helpers","nodeType":"MemberAccess","referencedDeclaration":4797,"src":"2623:25:27","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":2799,"name":"THIS_BUILD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2749,"src":"2663:10:27","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"}],"id":2798,"name":"mockHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3108,"src":"2651:11:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$returns$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"function (uint160) pure returns (address[] memory)"}},"id":2800,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2651:23:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"src":"2623:51:27","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":2802,"nodeType":"ExpressionStatement","src":"2623:51:27"},{"expression":{"id":2813,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":2803,"name":"preparedSetupData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2773,"src":"2684:17:27","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$4802_memory_ptr","typeString":"struct IPluginSetup.PreparedSetupData memory"}},"id":2805,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"2702:11:27","memberName":"permissions","nodeType":"MemberAccess","referencedDeclaration":4801,"src":"2684:29:27","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"hexValue":"30","id":2807,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2745:1:27","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":2808,"name":"THIS_BUILD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2749,"src":"2760:10:27","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"expression":{"expression":{"id":2809,"name":"PermissionLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3814,"src":"2784:13:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PermissionLib_$3814_$","typeString":"type(library PermissionLib)"}},"id":2810,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2798:9:27","memberName":"Operation","nodeType":"MemberAccess","referencedDeclaration":3793,"src":"2784:23:27","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Operation_$3793_$","typeString":"type(enum PermissionLib.Operation)"}},"id":2811,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2808:5:27","memberName":"Grant","nodeType":"MemberAccess","referencedDeclaration":3790,"src":"2784:29:27","typeDescriptions":{"typeIdentifier":"t_enum$_Operation_$3793","typeString":"enum PermissionLib.Operation"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_enum$_Operation_$3793","typeString":"enum PermissionLib.Operation"}],"id":2806,"name":"mockPermissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3069,"src":"2716:15:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_enum$_Operation_$3793_$returns$_t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint160,uint160,enum PermissionLib.Operation) pure returns (struct PermissionLib.MultiTargetPermission memory[] memory)"}},"id":2812,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2716:107:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"src":"2684:139:27","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"id":2814,"nodeType":"ExpressionStatement","src":"2684:139:27"}]},"documentation":{"id":2763,"nodeType":"StructuredDocumentation","src":"2259:28:27","text":"@inheritdoc IPluginSetup"},"functionSelector":"f10832f1","id":2816,"implemented":true,"kind":"function","modifiers":[],"name":"prepareInstallation","nameLocation":"2301:19:27","nodeType":"FunctionDefinition","parameters":{"id":2768,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2765,"mutability":"mutable","name":"_dao","nameLocation":"2338:4:27","nodeType":"VariableDeclaration","scope":2816,"src":"2330:12:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2764,"name":"address","nodeType":"ElementaryTypeName","src":"2330:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2767,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2816,"src":"2352:12:27","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2766,"name":"bytes","nodeType":"ElementaryTypeName","src":"2352:5:27","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2320:50:27"},"returnParameters":{"id":2774,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2770,"mutability":"mutable","name":"plugin","nameLocation":"2397:6:27","nodeType":"VariableDeclaration","scope":2816,"src":"2389:14:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2769,"name":"address","nodeType":"ElementaryTypeName","src":"2389:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2773,"mutability":"mutable","name":"preparedSetupData","nameLocation":"2430:17:27","nodeType":"VariableDeclaration","scope":2816,"src":"2405:42:27","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$4802_memory_ptr","typeString":"struct IPluginSetup.PreparedSetupData"},"typeName":{"id":2772,"nodeType":"UserDefinedTypeName","pathNode":{"id":2771,"name":"PreparedSetupData","nameLocations":["2405:17:27"],"nodeType":"IdentifierPath","referencedDeclaration":4802,"src":"2405:17:27"},"referencedDeclaration":4802,"src":"2405:17:27","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$4802_storage_ptr","typeString":"struct IPluginSetup.PreparedSetupData"}},"visibility":"internal"}],"src":"2388:60:27"},"scope":2845,"src":"2292:538:27","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[4852],"body":{"id":2843,"nodeType":"Block","src":"3049:119:27","statements":[{"expression":{"components":[{"id":2829,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2819,"src":"3060:4:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2830,"name":"_payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2822,"src":"3066:8:27","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$4810_calldata_ptr","typeString":"struct IPluginSetup.SetupPayload calldata"}}],"id":2831,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3059:16:27","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_struct$_SetupPayload_$4810_calldata_ptr_$","typeString":"tuple(address,struct IPluginSetup.SetupPayload calldata)"}},"id":2832,"nodeType":"ExpressionStatement","src":"3059:16:27"},{"expression":{"id":2841,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2833,"name":"permissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2827,"src":"3085:11:27","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"hexValue":"30","id":2835,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3115:1:27","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":2836,"name":"THIS_BUILD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2749,"src":"3118:10:27","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"expression":{"expression":{"id":2837,"name":"PermissionLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3814,"src":"3130:13:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PermissionLib_$3814_$","typeString":"type(library PermissionLib)"}},"id":2838,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3144:9:27","memberName":"Operation","nodeType":"MemberAccess","referencedDeclaration":3793,"src":"3130:23:27","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Operation_$3793_$","typeString":"type(enum PermissionLib.Operation)"}},"id":2839,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3154:6:27","memberName":"Revoke","nodeType":"MemberAccess","referencedDeclaration":3791,"src":"3130:30:27","typeDescriptions":{"typeIdentifier":"t_enum$_Operation_$3793","typeString":"enum PermissionLib.Operation"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_enum$_Operation_$3793","typeString":"enum PermissionLib.Operation"}],"id":2834,"name":"mockPermissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3069,"src":"3099:15:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_enum$_Operation_$3793_$returns$_t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint160,uint160,enum PermissionLib.Operation) pure returns (struct PermissionLib.MultiTargetPermission memory[] memory)"}},"id":2840,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3099:62:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"src":"3085:76:27","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"id":2842,"nodeType":"ExpressionStatement","src":"3085:76:27"}]},"documentation":{"id":2817,"nodeType":"StructuredDocumentation","src":"2836:28:27","text":"@inheritdoc IPluginSetup"},"functionSelector":"9cb0a124","id":2844,"implemented":true,"kind":"function","modifiers":[],"name":"prepareUninstallation","nameLocation":"2878:21:27","nodeType":"FunctionDefinition","parameters":{"id":2823,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2819,"mutability":"mutable","name":"_dao","nameLocation":"2917:4:27","nodeType":"VariableDeclaration","scope":2844,"src":"2909:12:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2818,"name":"address","nodeType":"ElementaryTypeName","src":"2909:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2822,"mutability":"mutable","name":"_payload","nameLocation":"2953:8:27","nodeType":"VariableDeclaration","scope":2844,"src":"2931:30:27","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$4810_calldata_ptr","typeString":"struct IPluginSetup.SetupPayload"},"typeName":{"id":2821,"nodeType":"UserDefinedTypeName","pathNode":{"id":2820,"name":"SetupPayload","nameLocations":["2931:12:27"],"nodeType":"IdentifierPath","referencedDeclaration":4810,"src":"2931:12:27"},"referencedDeclaration":4810,"src":"2931:12:27","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$4810_storage_ptr","typeString":"struct IPluginSetup.SetupPayload"}},"visibility":"internal"}],"src":"2899:68:27"},"returnParameters":{"id":2828,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2827,"mutability":"mutable","name":"permissions","nameLocation":"3036:11:27","nodeType":"VariableDeclaration","scope":2844,"src":"2991:56:27","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission[]"},"typeName":{"baseType":{"id":2825,"nodeType":"UserDefinedTypeName","pathNode":{"id":2824,"name":"PermissionLib.MultiTargetPermission","nameLocations":["2991:13:27","3005:21:27"],"nodeType":"IdentifierPath","referencedDeclaration":3813,"src":"2991:35:27"},"referencedDeclaration":3813,"src":"2991:35:27","typeDescriptions":{"typeIdentifier":"t_struct$_MultiTargetPermission_$3813_storage_ptr","typeString":"struct PermissionLib.MultiTargetPermission"}},"id":2826,"nodeType":"ArrayTypeName","src":"2991:37:27","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_storage_$dyn_storage_ptr","typeString":"struct PermissionLib.MultiTargetPermission[]"}},"visibility":"internal"}],"src":"2990:58:27"},"scope":2845,"src":"2869:299:27","stateMutability":"pure","virtual":false,"visibility":"external"}],"scope":2846,"src":"2043:1127:27","usedErrors":[2999,4882]}],"src":"91:3080:27"},"id":27},"src/mocks/plugin/PluginMock.sol":{"ast":{"absolutePath":"src/mocks/plugin/PluginMock.sol","exportedSymbols":{"IDAO":[2538],"Plugin":[4171],"PluginMockBuild1":[2871]},"id":2872,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":2847,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:28"},{"absolutePath":"src/plugin/Plugin.sol","file":"../../plugin/Plugin.sol","id":2849,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2872,"sourceUnit":4172,"src":"72:47:28","symbolAliases":[{"foreign":{"id":2848,"name":"Plugin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4171,"src":"80:6:28","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/dao/IDAO.sol","file":"../../dao/IDAO.sol","id":2851,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2872,"sourceUnit":2539,"src":"120:40:28","symbolAliases":[{"foreign":{"id":2850,"name":"IDAO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2538,"src":"128:4:28","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":2853,"name":"Plugin","nameLocations":["320:6:28"],"nodeType":"IdentifierPath","referencedDeclaration":4171,"src":"320:6:28"},"id":2854,"nodeType":"InheritanceSpecifier","src":"320:6:28"}],"canonicalName":"PluginMockBuild1","contractDependencies":[],"contractKind":"contract","documentation":{"id":2852,"nodeType":"StructuredDocumentation","src":"162:129:28","text":"@notice A mock plugin to be deployed via the `new` keyword.\n v1.1 (Release 1, Build 1)\n @dev DO NOT USE IN PRODUCTION!"},"fullyImplemented":true,"id":2871,"linearizedBaseContracts":[2871,4171,5136,5114,3872,2167,2375,2387,4002],"name":"PluginMockBuild1","nameLocation":"300:16:28","nodeType":"ContractDefinition","nodes":[{"constant":false,"functionSelector":"6accab8c","id":2856,"mutability":"mutable","name":"state1","nameLocation":"348:6:28","nodeType":"VariableDeclaration","scope":2871,"src":"333:21:28","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2855,"name":"uint256","nodeType":"ElementaryTypeName","src":"333:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"body":{"id":2869,"nodeType":"Block","src":"397:27:28","statements":[{"expression":{"id":2867,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2865,"name":"state1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2856,"src":"407:6:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"31","id":2866,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"416:1:28","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"407:10:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2868,"nodeType":"ExpressionStatement","src":"407:10:28"}]},"id":2870,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":2862,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2859,"src":"391:4:28","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}}],"id":2863,"kind":"baseConstructorSpecifier","modifierName":{"id":2861,"name":"Plugin","nameLocations":["384:6:28"],"nodeType":"IdentifierPath","referencedDeclaration":4171,"src":"384:6:28"},"nodeType":"ModifierInvocation","src":"384:12:28"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":2860,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2859,"mutability":"mutable","name":"_dao","nameLocation":"378:4:28","nodeType":"VariableDeclaration","scope":2870,"src":"373:9:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"},"typeName":{"id":2858,"nodeType":"UserDefinedTypeName","pathNode":{"id":2857,"name":"IDAO","nameLocations":["373:4:28"],"nodeType":"IdentifierPath","referencedDeclaration":2538,"src":"373:4:28"},"referencedDeclaration":2538,"src":"373:4:28","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}},"visibility":"internal"}],"src":"372:11:28"},"returnParameters":{"id":2864,"nodeType":"ParameterList","parameters":[],"src":"397:0:28"},"scope":2871,"src":"361:63:28","stateMutability":"nonpayable","virtual":false,"visibility":"public"}],"scope":2872,"src":"291:135:28","usedErrors":[]}],"src":"47:380:28"},"id":28},"src/mocks/plugin/PluginSetupMock.sol":{"ast":{"absolutePath":"src/mocks/plugin/PluginSetupMock.sol","exportedSymbols":{"IDAO":[2538],"IPluginSetup":[4859],"PermissionLib":[3814],"PluginMockBuild1":[2871],"PluginSetup":[4957],"PluginSetupMockBuild1":[2987],"mockHelpers":[3108],"mockPermissions":[3069]},"id":2988,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":2873,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"91:23:29"},{"absolutePath":"src/permission/PermissionLib.sol","file":"../../permission/PermissionLib.sol","id":2875,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2988,"sourceUnit":3815,"src":"116:65:29","symbolAliases":[{"foreign":{"id":2874,"name":"PermissionLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3814,"src":"124:13:29","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/plugin/setup/IPluginSetup.sol","file":"../../plugin/setup/IPluginSetup.sol","id":2877,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2988,"sourceUnit":4860,"src":"182:65:29","symbolAliases":[{"foreign":{"id":2876,"name":"IPluginSetup","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4859,"src":"190:12:29","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/plugin/setup/PluginSetup.sol","file":"../../plugin/setup/PluginSetup.sol","id":2879,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2988,"sourceUnit":4958,"src":"248:63:29","symbolAliases":[{"foreign":{"id":2878,"name":"PluginSetup","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4957,"src":"256:11:29","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/dao/IDAO.sol","file":"../../dao/IDAO.sol","id":2881,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2988,"sourceUnit":2539,"src":"312:40:29","symbolAliases":[{"foreign":{"id":2880,"name":"IDAO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2538,"src":"320:4:29","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/mocks/plugin/PluginSetupMockData.sol","file":"./PluginSetupMockData.sol","id":2884,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2988,"sourceUnit":3109,"src":"353:71:29","symbolAliases":[{"foreign":{"id":2882,"name":"mockPermissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3069,"src":"361:15:29","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":2883,"name":"mockHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3108,"src":"378:11:29","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/mocks/plugin/PluginMock.sol","file":"./PluginMock.sol","id":2886,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2988,"sourceUnit":2872,"src":"425:50:29","symbolAliases":[{"foreign":{"id":2885,"name":"PluginMockBuild1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2871,"src":"433:16:29","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":2888,"name":"PluginSetup","nameLocations":["658:11:29"],"nodeType":"IdentifierPath","referencedDeclaration":4957,"src":"658:11:29"},"id":2889,"nodeType":"InheritanceSpecifier","src":"658:11:29"}],"canonicalName":"PluginSetupMockBuild1","contractDependencies":[2871],"contractKind":"contract","documentation":{"id":2887,"nodeType":"StructuredDocumentation","src":"477:147:29","text":"@notice A mock plugin setup of a plugin to be deployed via the `new` keyword.\n v1.1 (Release 1, Build 1)\n @dev DO NOT USE IN PRODUCTION!"},"fullyImplemented":true,"id":2987,"linearizedBaseContracts":[2987,4957,5136,5114,4859,2375,2387],"name":"PluginSetupMockBuild1","nameLocation":"633:21:29","nodeType":"ContractDefinition","nodes":[{"body":{"id":2907,"nodeType":"Block","src":"751:2:29","statements":[]},"id":2908,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"hexValue":"30","id":2900,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"744:1:29","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2899,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"736:7:29","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2898,"name":"address","nodeType":"ElementaryTypeName","src":"736:7:29","typeDescriptions":{}}},"id":2901,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"736:10:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2897,"name":"IDAO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2538,"src":"731:4:29","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IDAO_$2538_$","typeString":"type(contract IDAO)"}},"id":2902,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"731:16:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}],"id":2896,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"NewExpression","src":"710:20:29","typeDescriptions":{"typeIdentifier":"t_function_creation_nonpayable$_t_contract$_IDAO_$2538_$returns$_t_contract$_PluginMockBuild1_$2871_$","typeString":"function (contract IDAO) returns (contract PluginMockBuild1)"},"typeName":{"id":2895,"nodeType":"UserDefinedTypeName","pathNode":{"id":2894,"name":"PluginMockBuild1","nameLocations":["714:16:29"],"nodeType":"IdentifierPath","referencedDeclaration":2871,"src":"714:16:29"},"referencedDeclaration":2871,"src":"714:16:29","typeDescriptions":{"typeIdentifier":"t_contract$_PluginMockBuild1_$2871","typeString":"contract PluginMockBuild1"}}},"id":2903,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"710:38:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_PluginMockBuild1_$2871","typeString":"contract PluginMockBuild1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_PluginMockBuild1_$2871","typeString":"contract PluginMockBuild1"}],"id":2893,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"702:7:29","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2892,"name":"address","nodeType":"ElementaryTypeName","src":"702:7:29","typeDescriptions":{}}},"id":2904,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"702:47:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":2905,"kind":"baseConstructorSpecifier","modifierName":{"id":2891,"name":"PluginSetup","nameLocations":["690:11:29"],"nodeType":"IdentifierPath","referencedDeclaration":4957,"src":"690:11:29"},"nodeType":"ModifierInvocation","src":"690:60:29"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":2890,"nodeType":"ParameterList","parameters":[],"src":"687:2:29"},"returnParameters":{"id":2906,"nodeType":"ParameterList","parameters":[],"src":"751:0:29"},"scope":2987,"src":"676:77:29","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[4823],"body":{"id":2957,"nodeType":"Block","src":"955:230:29","statements":[{"expression":{"components":[{"id":2921,"name":"_data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2913,"src":"966:5:29","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":2922,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"965:7:29","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2923,"nodeType":"ExpressionStatement","src":"965:7:29"},{"expression":{"id":2935,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2924,"name":"plugin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2916,"src":"982:6:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"arguments":[{"id":2931,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2911,"src":"1025:4:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2930,"name":"IDAO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2538,"src":"1020:4:29","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IDAO_$2538_$","typeString":"type(contract IDAO)"}},"id":2932,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1020:10:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}],"id":2929,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"NewExpression","src":"999:20:29","typeDescriptions":{"typeIdentifier":"t_function_creation_nonpayable$_t_contract$_IDAO_$2538_$returns$_t_contract$_PluginMockBuild1_$2871_$","typeString":"function (contract IDAO) returns (contract PluginMockBuild1)"},"typeName":{"id":2928,"nodeType":"UserDefinedTypeName","pathNode":{"id":2927,"name":"PluginMockBuild1","nameLocations":["1003:16:29"],"nodeType":"IdentifierPath","referencedDeclaration":2871,"src":"1003:16:29"},"referencedDeclaration":2871,"src":"1003:16:29","typeDescriptions":{"typeIdentifier":"t_contract$_PluginMockBuild1_$2871","typeString":"contract PluginMockBuild1"}}},"id":2933,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"999:32:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_PluginMockBuild1_$2871","typeString":"contract PluginMockBuild1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_PluginMockBuild1_$2871","typeString":"contract PluginMockBuild1"}],"id":2926,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"991:7:29","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2925,"name":"address","nodeType":"ElementaryTypeName","src":"991:7:29","typeDescriptions":{}}},"id":2934,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"991:41:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"982:50:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2936,"nodeType":"ExpressionStatement","src":"982:50:29"},{"expression":{"id":2943,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":2937,"name":"preparedSetupData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2919,"src":"1042:17:29","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$4802_memory_ptr","typeString":"struct IPluginSetup.PreparedSetupData memory"}},"id":2939,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1060:7:29","memberName":"helpers","nodeType":"MemberAccess","referencedDeclaration":4797,"src":"1042:25:29","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"hexValue":"31","id":2941,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1082:1:29","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":2940,"name":"mockHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3108,"src":"1070:11:29","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$returns$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"function (uint160) pure returns (address[] memory)"}},"id":2942,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1070:14:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"src":"1042:42:29","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":2944,"nodeType":"ExpressionStatement","src":"1042:42:29"},{"expression":{"id":2955,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":2945,"name":"preparedSetupData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2919,"src":"1094:17:29","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$4802_memory_ptr","typeString":"struct IPluginSetup.PreparedSetupData memory"}},"id":2947,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1112:11:29","memberName":"permissions","nodeType":"MemberAccess","referencedDeclaration":4801,"src":"1094:29:29","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"hexValue":"30","id":2949,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1142:1:29","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"31","id":2950,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1145:1:29","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},{"expression":{"expression":{"id":2951,"name":"PermissionLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3814,"src":"1148:13:29","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PermissionLib_$3814_$","typeString":"type(library PermissionLib)"}},"id":2952,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1162:9:29","memberName":"Operation","nodeType":"MemberAccess","referencedDeclaration":3793,"src":"1148:23:29","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Operation_$3793_$","typeString":"type(enum PermissionLib.Operation)"}},"id":2953,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1172:5:29","memberName":"Grant","nodeType":"MemberAccess","referencedDeclaration":3790,"src":"1148:29:29","typeDescriptions":{"typeIdentifier":"t_enum$_Operation_$3793","typeString":"enum PermissionLib.Operation"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},{"typeIdentifier":"t_enum$_Operation_$3793","typeString":"enum PermissionLib.Operation"}],"id":2948,"name":"mockPermissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3069,"src":"1126:15:29","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_enum$_Operation_$3793_$returns$_t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint160,uint160,enum PermissionLib.Operation) pure returns (struct PermissionLib.MultiTargetPermission memory[] memory)"}},"id":2954,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1126:52:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"src":"1094:84:29","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"id":2956,"nodeType":"ExpressionStatement","src":"1094:84:29"}]},"documentation":{"id":2909,"nodeType":"StructuredDocumentation","src":"759:28:29","text":"@inheritdoc IPluginSetup"},"functionSelector":"f10832f1","id":2958,"implemented":true,"kind":"function","modifiers":[],"name":"prepareInstallation","nameLocation":"801:19:29","nodeType":"FunctionDefinition","parameters":{"id":2914,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2911,"mutability":"mutable","name":"_dao","nameLocation":"838:4:29","nodeType":"VariableDeclaration","scope":2958,"src":"830:12:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2910,"name":"address","nodeType":"ElementaryTypeName","src":"830:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2913,"mutability":"mutable","name":"_data","nameLocation":"865:5:29","nodeType":"VariableDeclaration","scope":2958,"src":"852:18:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2912,"name":"bytes","nodeType":"ElementaryTypeName","src":"852:5:29","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"820:56:29"},"returnParameters":{"id":2920,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2916,"mutability":"mutable","name":"plugin","nameLocation":"903:6:29","nodeType":"VariableDeclaration","scope":2958,"src":"895:14:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2915,"name":"address","nodeType":"ElementaryTypeName","src":"895:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2919,"mutability":"mutable","name":"preparedSetupData","nameLocation":"936:17:29","nodeType":"VariableDeclaration","scope":2958,"src":"911:42:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$4802_memory_ptr","typeString":"struct IPluginSetup.PreparedSetupData"},"typeName":{"id":2918,"nodeType":"UserDefinedTypeName","pathNode":{"id":2917,"name":"PreparedSetupData","nameLocations":["911:17:29"],"nodeType":"IdentifierPath","referencedDeclaration":4802,"src":"911:17:29"},"referencedDeclaration":4802,"src":"911:17:29","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$4802_storage_ptr","typeString":"struct IPluginSetup.PreparedSetupData"}},"visibility":"internal"}],"src":"894:60:29"},"scope":2987,"src":"792:393:29","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[4852],"body":{"id":2985,"nodeType":"Block","src":"1404:110:29","statements":[{"expression":{"components":[{"id":2971,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2961,"src":"1415:4:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2972,"name":"_payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2964,"src":"1421:8:29","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$4810_calldata_ptr","typeString":"struct IPluginSetup.SetupPayload calldata"}}],"id":2973,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1414:16:29","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_struct$_SetupPayload_$4810_calldata_ptr_$","typeString":"tuple(address,struct IPluginSetup.SetupPayload calldata)"}},"id":2974,"nodeType":"ExpressionStatement","src":"1414:16:29"},{"expression":{"id":2983,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2975,"name":"permissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2969,"src":"1440:11:29","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"hexValue":"30","id":2977,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1470:1:29","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"31","id":2978,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1473:1:29","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},{"expression":{"expression":{"id":2979,"name":"PermissionLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3814,"src":"1476:13:29","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PermissionLib_$3814_$","typeString":"type(library PermissionLib)"}},"id":2980,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1490:9:29","memberName":"Operation","nodeType":"MemberAccess","referencedDeclaration":3793,"src":"1476:23:29","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Operation_$3793_$","typeString":"type(enum PermissionLib.Operation)"}},"id":2981,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1500:6:29","memberName":"Revoke","nodeType":"MemberAccess","referencedDeclaration":3791,"src":"1476:30:29","typeDescriptions":{"typeIdentifier":"t_enum$_Operation_$3793","typeString":"enum PermissionLib.Operation"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},{"typeIdentifier":"t_enum$_Operation_$3793","typeString":"enum PermissionLib.Operation"}],"id":2976,"name":"mockPermissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3069,"src":"1454:15:29","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_enum$_Operation_$3793_$returns$_t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint160,uint160,enum PermissionLib.Operation) pure returns (struct PermissionLib.MultiTargetPermission memory[] memory)"}},"id":2982,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1454:53:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"src":"1440:67:29","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"id":2984,"nodeType":"ExpressionStatement","src":"1440:67:29"}]},"documentation":{"id":2959,"nodeType":"StructuredDocumentation","src":"1191:28:29","text":"@inheritdoc IPluginSetup"},"functionSelector":"9cb0a124","id":2986,"implemented":true,"kind":"function","modifiers":[],"name":"prepareUninstallation","nameLocation":"1233:21:29","nodeType":"FunctionDefinition","parameters":{"id":2965,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2961,"mutability":"mutable","name":"_dao","nameLocation":"1272:4:29","nodeType":"VariableDeclaration","scope":2986,"src":"1264:12:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2960,"name":"address","nodeType":"ElementaryTypeName","src":"1264:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2964,"mutability":"mutable","name":"_payload","nameLocation":"1308:8:29","nodeType":"VariableDeclaration","scope":2986,"src":"1286:30:29","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$4810_calldata_ptr","typeString":"struct IPluginSetup.SetupPayload"},"typeName":{"id":2963,"nodeType":"UserDefinedTypeName","pathNode":{"id":2962,"name":"SetupPayload","nameLocations":["1286:12:29"],"nodeType":"IdentifierPath","referencedDeclaration":4810,"src":"1286:12:29"},"referencedDeclaration":4810,"src":"1286:12:29","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$4810_storage_ptr","typeString":"struct IPluginSetup.SetupPayload"}},"visibility":"internal"}],"src":"1254:68:29"},"returnParameters":{"id":2970,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2969,"mutability":"mutable","name":"permissions","nameLocation":"1391:11:29","nodeType":"VariableDeclaration","scope":2986,"src":"1346:56:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission[]"},"typeName":{"baseType":{"id":2967,"nodeType":"UserDefinedTypeName","pathNode":{"id":2966,"name":"PermissionLib.MultiTargetPermission","nameLocations":["1346:13:29","1360:21:29"],"nodeType":"IdentifierPath","referencedDeclaration":3813,"src":"1346:35:29"},"referencedDeclaration":3813,"src":"1346:35:29","typeDescriptions":{"typeIdentifier":"t_struct$_MultiTargetPermission_$3813_storage_ptr","typeString":"struct PermissionLib.MultiTargetPermission"}},"id":2968,"nodeType":"ArrayTypeName","src":"1346:37:29","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_storage_$dyn_storage_ptr","typeString":"struct PermissionLib.MultiTargetPermission[]"}},"visibility":"internal"}],"src":"1345:58:29"},"scope":2987,"src":"1224:290:29","stateMutability":"pure","virtual":false,"visibility":"external"}],"scope":2988,"src":"624:892:29","usedErrors":[2999,4882]}],"src":"91:1426:29"},"id":29},"src/mocks/plugin/PluginSetupMockData.sol":{"ast":{"absolutePath":"src/mocks/plugin/PluginSetupMockData.sol","exportedSymbols":{"ConflictingValues":[2999],"NO_CONDITION":[2997],"PermissionLib":[3814],"mockHelpers":[3108],"mockPermissions":[3069]},"id":3109,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":2989,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:30"},{"absolutePath":"src/permission/PermissionLib.sol","file":"../../permission/PermissionLib.sol","id":2991,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3109,"sourceUnit":3815,"src":"72:65:30","symbolAliases":[{"foreign":{"id":2990,"name":"PermissionLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3814,"src":"80:13:30","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"constant":true,"id":2997,"mutability":"constant","name":"NO_CONDITION","nameLocation":"156:12:30","nodeType":"VariableDeclaration","scope":3109,"src":"139:42:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2992,"name":"address","nodeType":"ElementaryTypeName","src":"139:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":{"arguments":[{"hexValue":"30","id":2995,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"179:1:30","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2994,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"171:7:30","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2993,"name":"address","nodeType":"ElementaryTypeName","src":"171:7:30","typeDescriptions":{}}},"id":2996,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"171:10:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"errorSelector":"e9004f34","id":2999,"name":"ConflictingValues","nameLocation":"190:17:30","nodeType":"ErrorDefinition","parameters":{"id":2998,"nodeType":"ParameterList","parameters":[],"src":"207:2:30"},"src":"184:26:30"},{"body":{"id":3068,"nodeType":"Block","src":"757:489:30","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":3016,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3014,"name":"rangeStart","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3002,"src":"767:10:30","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":3015,"name":"rangeEnd","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3004,"src":"780:8:30","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"767:21:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3020,"nodeType":"IfStatement","src":"763:53:30","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":3017,"name":"ConflictingValues","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2999,"src":"797:17:30","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":3018,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"797:19:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3019,"nodeType":"RevertStatement","src":"790:26:30"}},{"expression":{"id":3030,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3021,"name":"permissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3012,"src":"823:11:30","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":3028,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3026,"name":"rangeEnd","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3004,"src":"879:8:30","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":3027,"name":"rangeStart","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3002,"src":"890:10:30","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"879:21:30","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":3025,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"837:41:30","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (struct PermissionLib.MultiTargetPermission memory[] memory)"},"typeName":{"baseType":{"id":3023,"nodeType":"UserDefinedTypeName","pathNode":{"id":3022,"name":"PermissionLib.MultiTargetPermission","nameLocations":["841:13:30","855:21:30"],"nodeType":"IdentifierPath","referencedDeclaration":3813,"src":"841:35:30"},"referencedDeclaration":3813,"src":"841:35:30","typeDescriptions":{"typeIdentifier":"t_struct$_MultiTargetPermission_$3813_storage_ptr","typeString":"struct PermissionLib.MultiTargetPermission"}},"id":3024,"nodeType":"ArrayTypeName","src":"841:37:30","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_storage_$dyn_storage_ptr","typeString":"struct PermissionLib.MultiTargetPermission[]"}}},"id":3029,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"837:64:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"src":"823:78:30","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"id":3031,"nodeType":"ExpressionStatement","src":"823:78:30"},{"body":{"id":3066,"nodeType":"Block","src":"956:288:30","statements":[{"expression":{"id":3064,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":3042,"name":"permissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3012,"src":"966:11:30","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"id":3046,"indexExpression":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":3045,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3043,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3033,"src":"978:1:30","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":3044,"name":"rangeStart","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3002,"src":"982:10:30","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"978:14:30","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"966:27:30","typeDescriptions":{"typeIdentifier":"t_struct$_MultiTargetPermission_$3813_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3049,"name":"op","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3007,"src":"1057:2:30","typeDescriptions":{"typeIdentifier":"t_enum$_Operation_$3793","typeString":"enum PermissionLib.Operation"}},{"arguments":[{"id":3052,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3033,"src":"1088:1:30","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":3051,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1080:7:30","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3050,"name":"address","nodeType":"ElementaryTypeName","src":"1080:7:30","typeDescriptions":{}}},"id":3053,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1080:10:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":3056,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3033,"src":"1117:1:30","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":3055,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1109:7:30","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3054,"name":"address","nodeType":"ElementaryTypeName","src":"1109:7:30","typeDescriptions":{}}},"id":3057,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1109:10:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":3058,"name":"PermissionLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3814,"src":"1144:13:30","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PermissionLib_$3814_$","typeString":"type(library PermissionLib)"}},"id":3059,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1158:12:30","memberName":"NO_CONDITION","nodeType":"MemberAccess","referencedDeclaration":3789,"src":"1144:26:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"4d4f434b5f5045524d495353494f4e","id":3061,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1208:17:30","typeDescriptions":{"typeIdentifier":"t_stringliteral_a280eec51ab8e1bc4b6b0c1b7f1bde785761b787a49db404e3e9338ed9b016ef","typeString":"literal_string \"MOCK_PERMISSION\""},"value":"MOCK_PERMISSION"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_a280eec51ab8e1bc4b6b0c1b7f1bde785761b787a49db404e3e9338ed9b016ef","typeString":"literal_string \"MOCK_PERMISSION\""}],"id":3060,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967288,"src":"1198:9:30","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":3062,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1198:28:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Operation_$3793","typeString":"enum PermissionLib.Operation"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":3047,"name":"PermissionLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3814,"src":"996:13:30","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PermissionLib_$3814_$","typeString":"type(library PermissionLib)"}},"id":3048,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1010:21:30","memberName":"MultiTargetPermission","nodeType":"MemberAccess","referencedDeclaration":3813,"src":"996:35:30","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_MultiTargetPermission_$3813_storage_ptr_$","typeString":"type(struct PermissionLib.MultiTargetPermission storage pointer)"}},"id":3063,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["1046:9:30","1073:5:30","1104:3:30","1133:9:30","1184:12:30"],"names":["operation","where","who","condition","permissionId"],"nodeType":"FunctionCall","src":"996:241:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_MultiTargetPermission_$3813_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory"}},"src":"966:271:30","typeDescriptions":{"typeIdentifier":"t_struct$_MultiTargetPermission_$3813_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory"}},"id":3065,"nodeType":"ExpressionStatement","src":"966:271:30"}]},"condition":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":3038,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3036,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3033,"src":"937:1:30","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":3037,"name":"rangeEnd","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3004,"src":"941:8:30","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"937:12:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3067,"initializationExpression":{"assignments":[3033],"declarations":[{"constant":false,"id":3033,"mutability":"mutable","name":"i","nameLocation":"921:1:30","nodeType":"VariableDeclaration","scope":3067,"src":"913:9:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":3032,"name":"uint160","nodeType":"ElementaryTypeName","src":"913:7:30","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"id":3035,"initialValue":{"id":3034,"name":"rangeStart","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3002,"src":"925:10:30","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"VariableDeclarationStatement","src":"913:22:30"},"loopExpression":{"expression":{"id":3040,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"951:3:30","subExpression":{"id":3039,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3033,"src":"951:1:30","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"id":3041,"nodeType":"ExpressionStatement","src":"951:3:30"},"nodeType":"ForStatement","src":"908:336:30"}]},"documentation":{"id":3000,"nodeType":"StructuredDocumentation","src":"212:368:30","text":"@notice Creates a mock `MultiTargetPermission` array by converting a range of `uint160` values into `address` values.\n @param rangeStart The start of the range.\n @param rangeEnd The end of the range (that is not included).\n @param op The permission operation type.\n @return permissions The mock array of permissions.\n @dev DO NOT USE IN PRODUCTION!"},"id":3069,"implemented":true,"kind":"freeFunction","modifiers":[],"name":"mockPermissions","nameLocation":"589:15:30","nodeType":"FunctionDefinition","parameters":{"id":3008,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3002,"mutability":"mutable","name":"rangeStart","nameLocation":"618:10:30","nodeType":"VariableDeclaration","scope":3069,"src":"610:18:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":3001,"name":"uint160","nodeType":"ElementaryTypeName","src":"610:7:30","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":3004,"mutability":"mutable","name":"rangeEnd","nameLocation":"642:8:30","nodeType":"VariableDeclaration","scope":3069,"src":"634:16:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":3003,"name":"uint160","nodeType":"ElementaryTypeName","src":"634:7:30","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":3007,"mutability":"mutable","name":"op","nameLocation":"680:2:30","nodeType":"VariableDeclaration","scope":3069,"src":"656:26:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Operation_$3793","typeString":"enum PermissionLib.Operation"},"typeName":{"id":3006,"nodeType":"UserDefinedTypeName","pathNode":{"id":3005,"name":"PermissionLib.Operation","nameLocations":["656:13:30","670:9:30"],"nodeType":"IdentifierPath","referencedDeclaration":3793,"src":"656:23:30"},"referencedDeclaration":3793,"src":"656:23:30","typeDescriptions":{"typeIdentifier":"t_enum$_Operation_$3793","typeString":"enum PermissionLib.Operation"}},"visibility":"internal"}],"src":"604:80:30"},"returnParameters":{"id":3013,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3012,"mutability":"mutable","name":"permissions","nameLocation":"744:11:30","nodeType":"VariableDeclaration","scope":3069,"src":"699:56:30","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission[]"},"typeName":{"baseType":{"id":3010,"nodeType":"UserDefinedTypeName","pathNode":{"id":3009,"name":"PermissionLib.MultiTargetPermission","nameLocations":["699:13:30","713:21:30"],"nodeType":"IdentifierPath","referencedDeclaration":3813,"src":"699:35:30"},"referencedDeclaration":3813,"src":"699:35:30","typeDescriptions":{"typeIdentifier":"t_struct$_MultiTargetPermission_$3813_storage_ptr","typeString":"struct PermissionLib.MultiTargetPermission"}},"id":3011,"nodeType":"ArrayTypeName","src":"699:37:30","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_storage_$dyn_storage_ptr","typeString":"struct PermissionLib.MultiTargetPermission[]"}},"visibility":"internal"}],"src":"698:58:30"},"scope":3109,"src":"580:666:30","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3107,"nodeType":"Block","src":"1603:117:30","statements":[{"expression":{"id":3084,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3078,"name":"helpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3076,"src":"1609:7:30","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3082,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3072,"src":"1633:3:30","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":3081,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"1619:13:30","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (address[] memory)"},"typeName":{"baseType":{"id":3079,"name":"address","nodeType":"ElementaryTypeName","src":"1623:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3080,"nodeType":"ArrayTypeName","src":"1623:9:30","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}}},"id":3083,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1619:18:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"src":"1609:28:30","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":3085,"nodeType":"ExpressionStatement","src":"1609:28:30"},{"body":{"id":3105,"nodeType":"Block","src":"1678:40:30","statements":[{"expression":{"id":3103,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":3096,"name":"helpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3076,"src":"1688:7:30","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":3098,"indexExpression":{"id":3097,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3087,"src":"1696:1:30","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1688:10:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3101,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3087,"src":"1709:1:30","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":3100,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1701:7:30","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3099,"name":"address","nodeType":"ElementaryTypeName","src":"1701:7:30","typeDescriptions":{}}},"id":3102,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1701:10:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1688:23:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3104,"nodeType":"ExpressionStatement","src":"1688:23:30"}]},"condition":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":3092,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3090,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3087,"src":"1664:1:30","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":3091,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3072,"src":"1668:3:30","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"1664:7:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3106,"initializationExpression":{"assignments":[3087],"declarations":[{"constant":false,"id":3087,"mutability":"mutable","name":"i","nameLocation":"1657:1:30","nodeType":"VariableDeclaration","scope":3106,"src":"1649:9:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":3086,"name":"uint160","nodeType":"ElementaryTypeName","src":"1649:7:30","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"id":3089,"initialValue":{"hexValue":"30","id":3088,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1661:1:30","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"1649:13:30"},"loopExpression":{"expression":{"id":3094,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"1673:3:30","subExpression":{"id":3093,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3087,"src":"1673:1:30","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"id":3095,"nodeType":"ExpressionStatement","src":"1673:3:30"},"nodeType":"ForStatement","src":"1644:74:30"}]},"documentation":{"id":3070,"nodeType":"StructuredDocumentation","src":"1248:281:30","text":"@notice Creates a mock array of helper addresses of specified length by converting `uint160` values starting from 0 into `address` values.\n @param len The length of the helper array.\n @return helpers The mock array of helper addresses.\n @dev DO NOT USE IN PRODUCTION!"},"id":3108,"implemented":true,"kind":"freeFunction","modifiers":[],"name":"mockHelpers","nameLocation":"1538:11:30","nodeType":"FunctionDefinition","parameters":{"id":3073,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3072,"mutability":"mutable","name":"len","nameLocation":"1558:3:30","nodeType":"VariableDeclaration","scope":3108,"src":"1550:11:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":3071,"name":"uint160","nodeType":"ElementaryTypeName","src":"1550:7:30","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"1549:13:30"},"returnParameters":{"id":3077,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3076,"mutability":"mutable","name":"helpers","nameLocation":"1594:7:30","nodeType":"VariableDeclaration","scope":3108,"src":"1577:24:30","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":3074,"name":"address","nodeType":"ElementaryTypeName","src":"1577:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3075,"nodeType":"ArrayTypeName","src":"1577:9:30","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"1576:26:30"},"scope":3109,"src":"1529:191:30","stateMutability":"pure","virtual":false,"visibility":"internal"}],"src":"47:1674:30"},"id":30},"src/mocks/plugin/PluginUUPSUpgradeableMock.sol":{"ast":{"absolutePath":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol","exportedSymbols":{"IDAO":[2538],"PluginUUPSUpgradeable":[4576],"PluginUUPSUpgradeableMockBad":[3269],"PluginUUPSUpgradeableMockBuild1":[3137],"PluginUUPSUpgradeableMockBuild2":[3185],"PluginUUPSUpgradeableMockBuild3":[3248]},"id":3270,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":3110,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"91:23:31"},{"absolutePath":"src/plugin/PluginUUPSUpgradeable.sol","file":"../../plugin/PluginUUPSUpgradeable.sol","id":3112,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3270,"sourceUnit":4577,"src":"116:77:31","symbolAliases":[{"foreign":{"id":3111,"name":"PluginUUPSUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4576,"src":"124:21:31","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/dao/IDAO.sol","file":"../../dao/IDAO.sol","id":3114,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3270,"sourceUnit":2539,"src":"194:40:31","symbolAliases":[{"foreign":{"id":3113,"name":"IDAO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2538,"src":"202:4:31","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":3116,"name":"PluginUUPSUpgradeable","nameLocations":["426:21:31"],"nodeType":"IdentifierPath","referencedDeclaration":4576,"src":"426:21:31"},"id":3117,"nodeType":"InheritanceSpecifier","src":"426:21:31"}],"canonicalName":"PluginUUPSUpgradeableMockBuild1","contractDependencies":[],"contractKind":"contract","documentation":{"id":3115,"nodeType":"StructuredDocumentation","src":"236:146:31","text":"@notice A mock upgradeable plugin to be deployed via the UUPS proxy pattern.\n v1.1 (Release 1, Build 1)\n @dev DO NOT USE IN PRODUCTION!"},"fullyImplemented":true,"id":3137,"linearizedBaseContracts":[3137,4576,5136,5114,3937,1052,671,355,20,30,1281,1293,534,4002],"name":"PluginUUPSUpgradeableMockBuild1","nameLocation":"391:31:31","nodeType":"ContractDefinition","nodes":[{"constant":false,"functionSelector":"6accab8c","id":3119,"mutability":"mutable","name":"state1","nameLocation":"469:6:31","nodeType":"VariableDeclaration","scope":3137,"src":"454:21:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3118,"name":"uint256","nodeType":"ElementaryTypeName","src":"454:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"body":{"id":3135,"nodeType":"Block","src":"534:71:31","statements":[{"expression":{"arguments":[{"id":3128,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3122,"src":"573:4:31","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}],"id":3127,"name":"__PluginUUPSUpgradeable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4429,"src":"544:28:31","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IDAO_$2538_$returns$__$","typeString":"function (contract IDAO)"}},"id":3129,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"544:34:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3130,"nodeType":"ExpressionStatement","src":"544:34:31"},{"expression":{"id":3133,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3131,"name":"state1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3119,"src":"588:6:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"31","id":3132,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"597:1:31","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"588:10:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3134,"nodeType":"ExpressionStatement","src":"588:10:31"}]},"functionSelector":"c4d66de8","id":3136,"implemented":true,"kind":"function","modifiers":[{"id":3125,"kind":"modifierInvocation","modifierName":{"id":3124,"name":"initializer","nameLocations":["522:11:31"],"nodeType":"IdentifierPath","referencedDeclaration":436,"src":"522:11:31"},"nodeType":"ModifierInvocation","src":"522:11:31"}],"name":"initialize","nameLocation":"491:10:31","nodeType":"FunctionDefinition","parameters":{"id":3123,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3122,"mutability":"mutable","name":"_dao","nameLocation":"507:4:31","nodeType":"VariableDeclaration","scope":3136,"src":"502:9:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"},"typeName":{"id":3121,"nodeType":"UserDefinedTypeName","pathNode":{"id":3120,"name":"IDAO","nameLocations":["502:4:31"],"nodeType":"IdentifierPath","referencedDeclaration":2538,"src":"502:4:31"},"referencedDeclaration":2538,"src":"502:4:31","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}},"visibility":"internal"}],"src":"501:11:31"},"returnParameters":{"id":3126,"nodeType":"ParameterList","parameters":[],"src":"534:0:31"},"scope":3137,"src":"482:123:31","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":3270,"src":"382:225:31","usedErrors":[3952]},{"abstract":false,"baseContracts":[{"baseName":{"id":3139,"name":"PluginUUPSUpgradeable","nameLocations":["799:21:31"],"nodeType":"IdentifierPath","referencedDeclaration":4576,"src":"799:21:31"},"id":3140,"nodeType":"InheritanceSpecifier","src":"799:21:31"}],"canonicalName":"PluginUUPSUpgradeableMockBuild2","contractDependencies":[],"contractKind":"contract","documentation":{"id":3138,"nodeType":"StructuredDocumentation","src":"609:146:31","text":"@notice A mock upgradeable plugin to be deployed via the UUPS proxy pattern.\n v1.1 (Release 1, Build 2)\n @dev DO NOT USE IN PRODUCTION!"},"fullyImplemented":true,"id":3185,"linearizedBaseContracts":[3185,4576,5136,5114,3937,1052,671,355,20,30,1281,1293,534,4002],"name":"PluginUUPSUpgradeableMockBuild2","nameLocation":"764:31:31","nodeType":"ContractDefinition","nodes":[{"constant":false,"functionSelector":"6accab8c","id":3142,"mutability":"mutable","name":"state1","nameLocation":"842:6:31","nodeType":"VariableDeclaration","scope":3185,"src":"827:21:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3141,"name":"uint256","nodeType":"ElementaryTypeName","src":"827:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"constant":false,"functionSelector":"efe51cca","id":3144,"mutability":"mutable","name":"state2","nameLocation":"869:6:31","nodeType":"VariableDeclaration","scope":3185,"src":"854:21:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3143,"name":"uint256","nodeType":"ElementaryTypeName","src":"854:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"body":{"id":3165,"nodeType":"Block","src":"939:91:31","statements":[{"expression":{"arguments":[{"id":3154,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3147,"src":"978:4:31","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}],"id":3153,"name":"__PluginUUPSUpgradeable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4429,"src":"949:28:31","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IDAO_$2538_$returns$__$","typeString":"function (contract IDAO)"}},"id":3155,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"949:34:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3156,"nodeType":"ExpressionStatement","src":"949:34:31"},{"expression":{"id":3159,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3157,"name":"state1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3142,"src":"993:6:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"31","id":3158,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1002:1:31","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"993:10:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3160,"nodeType":"ExpressionStatement","src":"993:10:31"},{"expression":{"id":3163,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3161,"name":"state2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3144,"src":"1013:6:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"32","id":3162,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1022:1:31","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"1013:10:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3164,"nodeType":"ExpressionStatement","src":"1013:10:31"}]},"functionSelector":"c4d66de8","id":3166,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"hexValue":"32","id":3150,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"936:1:31","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"}],"id":3151,"kind":"modifierInvocation","modifierName":{"id":3149,"name":"reinitializer","nameLocations":["922:13:31"],"nodeType":"IdentifierPath","referencedDeclaration":469,"src":"922:13:31"},"nodeType":"ModifierInvocation","src":"922:16:31"}],"name":"initialize","nameLocation":"891:10:31","nodeType":"FunctionDefinition","parameters":{"id":3148,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3147,"mutability":"mutable","name":"_dao","nameLocation":"907:4:31","nodeType":"VariableDeclaration","scope":3166,"src":"902:9:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"},"typeName":{"id":3146,"nodeType":"UserDefinedTypeName","pathNode":{"id":3145,"name":"IDAO","nameLocations":["902:4:31"],"nodeType":"IdentifierPath","referencedDeclaration":2538,"src":"902:4:31"},"referencedDeclaration":2538,"src":"902:4:31","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}},"visibility":"internal"}],"src":"901:11:31"},"returnParameters":{"id":3152,"nodeType":"ParameterList","parameters":[],"src":"939:0:31"},"scope":3185,"src":"882:148:31","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":3183,"nodeType":"Block","src":"1109:75:31","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"id":3176,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3174,"name":"_previousBuild","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3168,"src":"1123:14:31","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"32","id":3175,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1140:1:31","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"1123:18:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3182,"nodeType":"IfStatement","src":"1119:59:31","trueBody":{"id":3181,"nodeType":"Block","src":"1143:35:31","statements":[{"expression":{"id":3179,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3177,"name":"state2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3144,"src":"1157:6:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"32","id":3178,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1166:1:31","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"1157:10:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3180,"nodeType":"ExpressionStatement","src":"1157:10:31"}]}}]},"functionSelector":"039a8c50","id":3184,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"hexValue":"32","id":3171,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1106:1:31","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"}],"id":3172,"kind":"modifierInvocation","modifierName":{"id":3170,"name":"reinitializer","nameLocations":["1092:13:31"],"nodeType":"IdentifierPath","referencedDeclaration":469,"src":"1092:13:31"},"nodeType":"ModifierInvocation","src":"1092:16:31"}],"name":"initializeFrom","nameLocation":"1045:14:31","nodeType":"FunctionDefinition","parameters":{"id":3169,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3168,"mutability":"mutable","name":"_previousBuild","nameLocation":"1067:14:31","nodeType":"VariableDeclaration","scope":3184,"src":"1060:21:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":3167,"name":"uint16","nodeType":"ElementaryTypeName","src":"1060:6:31","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"1059:23:31"},"returnParameters":{"id":3173,"nodeType":"ParameterList","parameters":[],"src":"1109:0:31"},"scope":3185,"src":"1036:148:31","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":3270,"src":"755:431:31","usedErrors":[3952]},{"abstract":false,"baseContracts":[{"baseName":{"id":3187,"name":"PluginUUPSUpgradeable","nameLocations":["1378:21:31"],"nodeType":"IdentifierPath","referencedDeclaration":4576,"src":"1378:21:31"},"id":3188,"nodeType":"InheritanceSpecifier","src":"1378:21:31"}],"canonicalName":"PluginUUPSUpgradeableMockBuild3","contractDependencies":[],"contractKind":"contract","documentation":{"id":3186,"nodeType":"StructuredDocumentation","src":"1188:146:31","text":"@notice A mock upgradeable plugin to be deployed via the UUPS proxy pattern.\n v1.1 (Release 1, Build 3)\n @dev DO NOT USE IN PRODUCTION!"},"fullyImplemented":true,"id":3248,"linearizedBaseContracts":[3248,4576,5136,5114,3937,1052,671,355,20,30,1281,1293,534,4002],"name":"PluginUUPSUpgradeableMockBuild3","nameLocation":"1343:31:31","nodeType":"ContractDefinition","nodes":[{"constant":false,"functionSelector":"6accab8c","id":3190,"mutability":"mutable","name":"state1","nameLocation":"1421:6:31","nodeType":"VariableDeclaration","scope":3248,"src":"1406:21:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3189,"name":"uint256","nodeType":"ElementaryTypeName","src":"1406:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"constant":false,"functionSelector":"efe51cca","id":3192,"mutability":"mutable","name":"state2","nameLocation":"1448:6:31","nodeType":"VariableDeclaration","scope":3248,"src":"1433:21:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3191,"name":"uint256","nodeType":"ElementaryTypeName","src":"1433:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"constant":false,"functionSelector":"2491118d","id":3194,"mutability":"mutable","name":"state3","nameLocation":"1475:6:31","nodeType":"VariableDeclaration","scope":3248,"src":"1460:21:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3193,"name":"uint256","nodeType":"ElementaryTypeName","src":"1460:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"body":{"id":3219,"nodeType":"Block","src":"1545:111:31","statements":[{"expression":{"arguments":[{"id":3204,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3197,"src":"1584:4:31","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}],"id":3203,"name":"__PluginUUPSUpgradeable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4429,"src":"1555:28:31","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IDAO_$2538_$returns$__$","typeString":"function (contract IDAO)"}},"id":3205,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1555:34:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3206,"nodeType":"ExpressionStatement","src":"1555:34:31"},{"expression":{"id":3209,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3207,"name":"state1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3190,"src":"1599:6:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"31","id":3208,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1608:1:31","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1599:10:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3210,"nodeType":"ExpressionStatement","src":"1599:10:31"},{"expression":{"id":3213,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3211,"name":"state2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3192,"src":"1619:6:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"32","id":3212,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1628:1:31","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"1619:10:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3214,"nodeType":"ExpressionStatement","src":"1619:10:31"},{"expression":{"id":3217,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3215,"name":"state3","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3194,"src":"1639:6:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"33","id":3216,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1648:1:31","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"1639:10:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3218,"nodeType":"ExpressionStatement","src":"1639:10:31"}]},"functionSelector":"c4d66de8","id":3220,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"hexValue":"33","id":3200,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1542:1:31","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"}],"id":3201,"kind":"modifierInvocation","modifierName":{"id":3199,"name":"reinitializer","nameLocations":["1528:13:31"],"nodeType":"IdentifierPath","referencedDeclaration":469,"src":"1528:13:31"},"nodeType":"ModifierInvocation","src":"1528:16:31"}],"name":"initialize","nameLocation":"1497:10:31","nodeType":"FunctionDefinition","parameters":{"id":3198,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3197,"mutability":"mutable","name":"_dao","nameLocation":"1513:4:31","nodeType":"VariableDeclaration","scope":3220,"src":"1508:9:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"},"typeName":{"id":3196,"nodeType":"UserDefinedTypeName","pathNode":{"id":3195,"name":"IDAO","nameLocations":["1508:4:31"],"nodeType":"IdentifierPath","referencedDeclaration":2538,"src":"1508:4:31"},"referencedDeclaration":2538,"src":"1508:4:31","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}},"visibility":"internal"}],"src":"1507:11:31"},"returnParameters":{"id":3202,"nodeType":"ParameterList","parameters":[],"src":"1545:0:31"},"scope":3248,"src":"1488:168:31","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":3246,"nodeType":"Block","src":"1735:143:31","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"id":3230,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3228,"name":"_previousBuild","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3222,"src":"1749:14:31","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"32","id":3229,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1766:1:31","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"1749:18:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3236,"nodeType":"IfStatement","src":"1745:59:31","trueBody":{"id":3235,"nodeType":"Block","src":"1769:35:31","statements":[{"expression":{"id":3233,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3231,"name":"state2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3192,"src":"1783:6:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"32","id":3232,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1792:1:31","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"1783:10:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3234,"nodeType":"ExpressionStatement","src":"1783:10:31"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"id":3239,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3237,"name":"_previousBuild","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3222,"src":"1817:14:31","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"33","id":3238,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1834:1:31","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"1817:18:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3245,"nodeType":"IfStatement","src":"1813:59:31","trueBody":{"id":3244,"nodeType":"Block","src":"1837:35:31","statements":[{"expression":{"id":3242,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3240,"name":"state3","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3194,"src":"1851:6:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"33","id":3241,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1860:1:31","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"1851:10:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3243,"nodeType":"ExpressionStatement","src":"1851:10:31"}]}}]},"functionSelector":"039a8c50","id":3247,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"hexValue":"33","id":3225,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1732:1:31","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"}],"id":3226,"kind":"modifierInvocation","modifierName":{"id":3224,"name":"reinitializer","nameLocations":["1718:13:31"],"nodeType":"IdentifierPath","referencedDeclaration":469,"src":"1718:13:31"},"nodeType":"ModifierInvocation","src":"1718:16:31"}],"name":"initializeFrom","nameLocation":"1671:14:31","nodeType":"FunctionDefinition","parameters":{"id":3223,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3222,"mutability":"mutable","name":"_previousBuild","nameLocation":"1693:14:31","nodeType":"VariableDeclaration","scope":3247,"src":"1686:21:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":3221,"name":"uint16","nodeType":"ElementaryTypeName","src":"1686:6:31","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"1685:23:31"},"returnParameters":{"id":3227,"nodeType":"ParameterList","parameters":[],"src":"1735:0:31"},"scope":3248,"src":"1662:216:31","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":3270,"src":"1334:546:31","usedErrors":[3952]},{"abstract":false,"baseContracts":[{"baseName":{"id":3250,"name":"PluginUUPSUpgradeable","nameLocations":["2029:21:31"],"nodeType":"IdentifierPath","referencedDeclaration":4576,"src":"2029:21:31"},"id":3251,"nodeType":"InheritanceSpecifier","src":"2029:21:31"}],"canonicalName":"PluginUUPSUpgradeableMockBad","contractDependencies":[],"contractKind":"contract","documentation":{"id":3249,"nodeType":"StructuredDocumentation","src":"1882:106:31","text":"@notice A mock upgradeable plugin missing an initializer function.\n @dev DO NOT USE IN PRODUCTION!"},"fullyImplemented":true,"id":3269,"linearizedBaseContracts":[3269,4576,5136,5114,3937,1052,671,355,20,30,1281,1293,534,4002],"name":"PluginUUPSUpgradeableMockBad","nameLocation":"1997:28:31","nodeType":"ContractDefinition","nodes":[{"constant":false,"functionSelector":"6accab8c","id":3253,"mutability":"mutable","name":"state1","nameLocation":"2072:6:31","nodeType":"VariableDeclaration","scope":3269,"src":"2057:21:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3252,"name":"uint256","nodeType":"ElementaryTypeName","src":"2057:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"body":{"id":3267,"nodeType":"Block","src":"2131:71:31","statements":[{"expression":{"arguments":[{"id":3260,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3256,"src":"2170:4:31","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}],"id":3259,"name":"__PluginUUPSUpgradeable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4429,"src":"2141:28:31","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IDAO_$2538_$returns$__$","typeString":"function (contract IDAO)"}},"id":3261,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2141:34:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3262,"nodeType":"ExpressionStatement","src":"2141:34:31"},{"expression":{"id":3265,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3263,"name":"state1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3253,"src":"2185:6:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"31","id":3264,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2194:1:31","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2185:10:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3266,"nodeType":"ExpressionStatement","src":"2185:10:31"}]},"functionSelector":"8883bbd7","id":3268,"implemented":true,"kind":"function","modifiers":[],"name":"notAnInitializer","nameLocation":"2094:16:31","nodeType":"FunctionDefinition","parameters":{"id":3257,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3256,"mutability":"mutable","name":"_dao","nameLocation":"2116:4:31","nodeType":"VariableDeclaration","scope":3268,"src":"2111:9:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"},"typeName":{"id":3255,"nodeType":"UserDefinedTypeName","pathNode":{"id":3254,"name":"IDAO","nameLocations":["2111:4:31"],"nodeType":"IdentifierPath","referencedDeclaration":2538,"src":"2111:4:31"},"referencedDeclaration":2538,"src":"2111:4:31","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}},"visibility":"internal"}],"src":"2110:11:31"},"returnParameters":{"id":3258,"nodeType":"ParameterList","parameters":[],"src":"2131:0:31"},"scope":3269,"src":"2085:117:31","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":3270,"src":"1988:216:31","usedErrors":[3952]}],"src":"91:2114:31"},"id":31},"src/mocks/plugin/PluginUUPSUpgradeableSetupMock.sol":{"ast":{"absolutePath":"src/mocks/plugin/PluginUUPSUpgradeableSetupMock.sol","exportedSymbols":{"IDAO":[2538],"IPluginSetup":[4859],"PermissionLib":[3814],"PluginUUPSUpgradeableMockBuild1":[3137],"PluginUUPSUpgradeableMockBuild2":[3185],"PluginUUPSUpgradeableMockBuild3":[3248],"PluginUUPSUpgradeableSetupMockBuild1":[3420],"PluginUUPSUpgradeableSetupMockBuild2":[3582],"PluginUUPSUpgradeableSetupMockBuild3":[3779],"PluginUpgradeableSetup":[5034],"ProxyLib":[5102],"mockHelpers":[3108],"mockPermissions":[3069]},"id":3780,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":3271,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"91:23:32"},{"absolutePath":"src/permission/PermissionLib.sol","file":"../../permission/PermissionLib.sol","id":3273,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3780,"sourceUnit":3815,"src":"116:65:32","symbolAliases":[{"foreign":{"id":3272,"name":"PermissionLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3814,"src":"124:13:32","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/plugin/setup/IPluginSetup.sol","file":"../../plugin/setup/IPluginSetup.sol","id":3275,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3780,"sourceUnit":4860,"src":"182:65:32","symbolAliases":[{"foreign":{"id":3274,"name":"IPluginSetup","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4859,"src":"190:12:32","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/plugin/setup/PluginUpgradeableSetup.sol","file":"../../plugin/setup/PluginUpgradeableSetup.sol","id":3277,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3780,"sourceUnit":5035,"src":"248:85:32","symbolAliases":[{"foreign":{"id":3276,"name":"PluginUpgradeableSetup","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5034,"src":"256:22:32","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/utils/deployment/ProxyLib.sol","file":"../../utils/deployment/ProxyLib.sol","id":3279,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3780,"sourceUnit":5103,"src":"334:61:32","symbolAliases":[{"foreign":{"id":3278,"name":"ProxyLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5102,"src":"342:8:32","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/dao/IDAO.sol","file":"../../dao/IDAO.sol","id":3281,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3780,"sourceUnit":2539,"src":"396:40:32","symbolAliases":[{"foreign":{"id":3280,"name":"IDAO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2538,"src":"404:4:32","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/mocks/plugin/PluginSetupMockData.sol","file":"./PluginSetupMockData.sol","id":3284,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3780,"sourceUnit":3109,"src":"437:71:32","symbolAliases":[{"foreign":{"id":3282,"name":"mockPermissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3069,"src":"445:15:32","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":3283,"name":"mockHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3108,"src":"462:11:32","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol","file":"./PluginUUPSUpgradeableMock.sol","id":3288,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3780,"sourceUnit":3270,"src":"509:146:32","symbolAliases":[{"foreign":{"id":3285,"name":"PluginUUPSUpgradeableMockBuild1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3137,"src":"517:31:32","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":3286,"name":"PluginUUPSUpgradeableMockBuild2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3185,"src":"550:31:32","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":3287,"name":"PluginUUPSUpgradeableMockBuild3","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3248,"src":"583:31:32","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":3290,"name":"PluginUpgradeableSetup","nameLocations":["865:22:32"],"nodeType":"IdentifierPath","referencedDeclaration":5034,"src":"865:22:32"},"id":3291,"nodeType":"InheritanceSpecifier","src":"865:22:32"}],"canonicalName":"PluginUUPSUpgradeableSetupMockBuild1","contractDependencies":[1441,3137],"contractKind":"contract","documentation":{"id":3289,"nodeType":"StructuredDocumentation","src":"657:159:32","text":"@notice A mock plugin setup of an upgradeable plugin to be deployed via the UUPS pattern.\n v1.1 (Release 1, Build 1)\n @dev DO NOT USE IN PRODUCTION!"},"fullyImplemented":true,"id":3420,"linearizedBaseContracts":[3420,5034,5136,5114,4859,2375,2387],"name":"PluginUUPSUpgradeableSetupMockBuild1","nameLocation":"825:36:32","nodeType":"ContractDefinition","nodes":[{"global":false,"id":3294,"libraryName":{"id":3292,"name":"ProxyLib","nameLocations":["900:8:32"],"nodeType":"IdentifierPath","referencedDeclaration":5102,"src":"900:8:32"},"nodeType":"UsingForDirective","src":"894:27:32","typeName":{"id":3293,"name":"address","nodeType":"ElementaryTypeName","src":"913:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},{"constant":true,"id":3297,"mutability":"constant","name":"THIS_BUILD","nameLocation":"952:10:32","nodeType":"VariableDeclaration","scope":3420,"src":"927:39:32","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":3295,"name":"uint16","nodeType":"ElementaryTypeName","src":"927:6:32","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"value":{"hexValue":"31","id":3296,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"965:1:32","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"visibility":"internal"},{"body":{"id":3309,"nodeType":"Block","src":"1058:2:32","statements":[]},"id":3310,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":3304,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"NewExpression","src":"1018:35:32","typeDescriptions":{"typeIdentifier":"t_function_creation_nonpayable$__$returns$_t_contract$_PluginUUPSUpgradeableMockBuild1_$3137_$","typeString":"function () returns (contract PluginUUPSUpgradeableMockBuild1)"},"typeName":{"id":3303,"nodeType":"UserDefinedTypeName","pathNode":{"id":3302,"name":"PluginUUPSUpgradeableMockBuild1","nameLocations":["1022:31:32"],"nodeType":"IdentifierPath","referencedDeclaration":3137,"src":"1022:31:32"},"referencedDeclaration":3137,"src":"1022:31:32","typeDescriptions":{"typeIdentifier":"t_contract$_PluginUUPSUpgradeableMockBuild1_$3137","typeString":"contract PluginUUPSUpgradeableMockBuild1"}}},"id":3305,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1018:37:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_PluginUUPSUpgradeableMockBuild1_$3137","typeString":"contract PluginUUPSUpgradeableMockBuild1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_PluginUUPSUpgradeableMockBuild1_$3137","typeString":"contract PluginUUPSUpgradeableMockBuild1"}],"id":3301,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1010:7:32","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3300,"name":"address","nodeType":"ElementaryTypeName","src":"1010:7:32","typeDescriptions":{}}},"id":3306,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1010:46:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":3307,"kind":"baseConstructorSpecifier","modifierName":{"id":3299,"name":"PluginUpgradeableSetup","nameLocations":["987:22:32"],"nodeType":"IdentifierPath","referencedDeclaration":5034,"src":"987:22:32"},"nodeType":"ModifierInvocation","src":"987:70:32"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":3298,"nodeType":"ParameterList","parameters":[],"src":"984:2:32"},"returnParameters":{"id":3308,"nodeType":"ParameterList","parameters":[],"src":"1058:0:32"},"scope":3420,"src":"973:87:32","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[4823],"body":{"id":3363,"nodeType":"Block","src":"1254:354:32","statements":[{"assignments":[3324],"declarations":[{"constant":false,"id":3324,"mutability":"mutable","name":"initData","nameLocation":"1277:8:32","nodeType":"VariableDeclaration","scope":3363,"src":"1264:21:32","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3323,"name":"bytes","nodeType":"ElementaryTypeName","src":"1264:5:32","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":3334,"initialValue":{"arguments":[{"expression":{"id":3327,"name":"PluginUUPSUpgradeableMockBuild1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3137,"src":"1316:31:32","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PluginUUPSUpgradeableMockBuild1_$3137_$","typeString":"type(contract PluginUUPSUpgradeableMockBuild1)"}},"id":3328,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1348:10:32","memberName":"initialize","nodeType":"MemberAccess","referencedDeclaration":3136,"src":"1316:42:32","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_contract$_IDAO_$2538_$returns$__$","typeString":"function PluginUUPSUpgradeableMockBuild1.initialize(contract IDAO)"}},{"components":[{"arguments":[{"id":3330,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3313,"src":"1378:4:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3329,"name":"IDAO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2538,"src":"1373:4:32","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IDAO_$2538_$","typeString":"type(contract IDAO)"}},"id":3331,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1373:10:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}}],"id":3332,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1372:12:32","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_nonpayable$_t_contract$_IDAO_$2538_$returns$__$","typeString":"function PluginUUPSUpgradeableMockBuild1.initialize(contract IDAO)"},{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}],"expression":{"id":3325,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967295,"src":"1288:3:32","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":3326,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1292:10:32","memberName":"encodeCall","nodeType":"MemberAccess","src":"1288:14:32","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":3333,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1288:106:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"1264:130:32"},{"expression":{"id":3341,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3335,"name":"plugin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3318,"src":"1404:6:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3339,"name":"initData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3324,"src":"1446:8:32","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":3336,"name":"implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5033,"src":"1413:14:32","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":3337,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1413:16:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3338,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1430:15:32","memberName":"deployUUPSProxy","nodeType":"MemberAccess","referencedDeclaration":5072,"src":"1413:32:32","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_address_$bound_to$_t_address_$","typeString":"function (address,bytes memory) returns (address)"}},"id":3340,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1413:42:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1404:51:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3342,"nodeType":"ExpressionStatement","src":"1404:51:32"},{"expression":{"id":3349,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":3343,"name":"preparedSetupData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3321,"src":"1465:17:32","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$4802_memory_ptr","typeString":"struct IPluginSetup.PreparedSetupData memory"}},"id":3345,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1483:7:32","memberName":"helpers","nodeType":"MemberAccess","referencedDeclaration":4797,"src":"1465:25:32","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"hexValue":"31","id":3347,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1505:1:32","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":3346,"name":"mockHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3108,"src":"1493:11:32","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$returns$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"function (uint160) pure returns (address[] memory)"}},"id":3348,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1493:14:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"src":"1465:42:32","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":3350,"nodeType":"ExpressionStatement","src":"1465:42:32"},{"expression":{"id":3361,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":3351,"name":"preparedSetupData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3321,"src":"1517:17:32","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$4802_memory_ptr","typeString":"struct IPluginSetup.PreparedSetupData memory"}},"id":3353,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1535:11:32","memberName":"permissions","nodeType":"MemberAccess","referencedDeclaration":4801,"src":"1517:29:32","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"hexValue":"30","id":3355,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1565:1:32","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"31","id":3356,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1568:1:32","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},{"expression":{"expression":{"id":3357,"name":"PermissionLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3814,"src":"1571:13:32","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PermissionLib_$3814_$","typeString":"type(library PermissionLib)"}},"id":3358,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1585:9:32","memberName":"Operation","nodeType":"MemberAccess","referencedDeclaration":3793,"src":"1571:23:32","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Operation_$3793_$","typeString":"type(enum PermissionLib.Operation)"}},"id":3359,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1595:5:32","memberName":"Grant","nodeType":"MemberAccess","referencedDeclaration":3790,"src":"1571:29:32","typeDescriptions":{"typeIdentifier":"t_enum$_Operation_$3793","typeString":"enum PermissionLib.Operation"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},{"typeIdentifier":"t_enum$_Operation_$3793","typeString":"enum PermissionLib.Operation"}],"id":3354,"name":"mockPermissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3069,"src":"1549:15:32","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_enum$_Operation_$3793_$returns$_t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint160,uint160,enum PermissionLib.Operation) pure returns (struct PermissionLib.MultiTargetPermission memory[] memory)"}},"id":3360,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1549:52:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"src":"1517:84:32","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"id":3362,"nodeType":"ExpressionStatement","src":"1517:84:32"}]},"documentation":{"id":3311,"nodeType":"StructuredDocumentation","src":"1066:28:32","text":"@inheritdoc IPluginSetup"},"functionSelector":"f10832f1","id":3364,"implemented":true,"kind":"function","modifiers":[],"name":"prepareInstallation","nameLocation":"1108:19:32","nodeType":"FunctionDefinition","parameters":{"id":3316,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3313,"mutability":"mutable","name":"_dao","nameLocation":"1145:4:32","nodeType":"VariableDeclaration","scope":3364,"src":"1137:12:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3312,"name":"address","nodeType":"ElementaryTypeName","src":"1137:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3315,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3364,"src":"1159:12:32","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3314,"name":"bytes","nodeType":"ElementaryTypeName","src":"1159:5:32","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1127:50:32"},"returnParameters":{"id":3322,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3318,"mutability":"mutable","name":"plugin","nameLocation":"1202:6:32","nodeType":"VariableDeclaration","scope":3364,"src":"1194:14:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3317,"name":"address","nodeType":"ElementaryTypeName","src":"1194:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3321,"mutability":"mutable","name":"preparedSetupData","nameLocation":"1235:17:32","nodeType":"VariableDeclaration","scope":3364,"src":"1210:42:32","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$4802_memory_ptr","typeString":"struct IPluginSetup.PreparedSetupData"},"typeName":{"id":3320,"nodeType":"UserDefinedTypeName","pathNode":{"id":3319,"name":"PreparedSetupData","nameLocations":["1210:17:32"],"nodeType":"IdentifierPath","referencedDeclaration":4802,"src":"1210:17:32"},"referencedDeclaration":4802,"src":"1210:17:32","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$4802_storage_ptr","typeString":"struct IPluginSetup.PreparedSetupData"}},"visibility":"internal"}],"src":"1193:60:32"},"scope":3420,"src":"1099:509:32","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[4839],"body":{"id":3390,"nodeType":"Block","src":"1946:118:32","statements":[{"expression":{"components":[{"id":3380,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3367,"src":"1957:4:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3381,"name":"_fromBuild","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3369,"src":"1963:10:32","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"id":3382,"name":"_payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3372,"src":"1975:8:32","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$4810_calldata_ptr","typeString":"struct IPluginSetup.SetupPayload calldata"}}],"id":3383,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1956:28:32","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint16_$_t_struct$_SetupPayload_$4810_calldata_ptr_$","typeString":"tuple(address,uint16,struct IPluginSetup.SetupPayload calldata)"}},"id":3384,"nodeType":"ExpressionStatement","src":"1956:28:32"},{"errorCall":{"arguments":[{"hexValue":"30","id":3386,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2031:1:32","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":3387,"name":"THIS_BUILD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3297,"src":"2045:10:32","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint16","typeString":"uint16"}],"id":3385,"name":"InvalidUpdatePath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4984,"src":"2001:17:32","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint16_$_t_uint16_$returns$__$","typeString":"function (uint16,uint16) pure"}},"id":3388,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":["2020:9:32","2034:9:32"],"names":["fromBuild","thisBuild"],"nodeType":"FunctionCall","src":"2001:56:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3389,"nodeType":"RevertStatement","src":"1994:63:32"}]},"documentation":{"id":3365,"nodeType":"StructuredDocumentation","src":"1614:138:32","text":"@inheritdoc IPluginSetup\n @dev The default implementation for the initial build 1 that reverts because no earlier build exists."},"functionSelector":"a8a9c29e","id":3391,"implemented":true,"kind":"function","modifiers":[],"name":"prepareUpdate","nameLocation":"1766:13:32","nodeType":"FunctionDefinition","parameters":{"id":3373,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3367,"mutability":"mutable","name":"_dao","nameLocation":"1797:4:32","nodeType":"VariableDeclaration","scope":3391,"src":"1789:12:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3366,"name":"address","nodeType":"ElementaryTypeName","src":"1789:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3369,"mutability":"mutable","name":"_fromBuild","nameLocation":"1818:10:32","nodeType":"VariableDeclaration","scope":3391,"src":"1811:17:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":3368,"name":"uint16","nodeType":"ElementaryTypeName","src":"1811:6:32","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":3372,"mutability":"mutable","name":"_payload","nameLocation":"1860:8:32","nodeType":"VariableDeclaration","scope":3391,"src":"1838:30:32","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$4810_calldata_ptr","typeString":"struct IPluginSetup.SetupPayload"},"typeName":{"id":3371,"nodeType":"UserDefinedTypeName","pathNode":{"id":3370,"name":"SetupPayload","nameLocations":["1838:12:32"],"nodeType":"IdentifierPath","referencedDeclaration":4810,"src":"1838:12:32"},"referencedDeclaration":4810,"src":"1838:12:32","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$4810_storage_ptr","typeString":"struct IPluginSetup.SetupPayload"}},"visibility":"internal"}],"src":"1779:95:32"},"returnParameters":{"id":3379,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3375,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3391,"src":"1906:12:32","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3374,"name":"bytes","nodeType":"ElementaryTypeName","src":"1906:5:32","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":3378,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3391,"src":"1920:24:32","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$4802_memory_ptr","typeString":"struct IPluginSetup.PreparedSetupData"},"typeName":{"id":3377,"nodeType":"UserDefinedTypeName","pathNode":{"id":3376,"name":"PreparedSetupData","nameLocations":["1920:17:32"],"nodeType":"IdentifierPath","referencedDeclaration":4802,"src":"1920:17:32"},"referencedDeclaration":4802,"src":"1920:17:32","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$4802_storage_ptr","typeString":"struct IPluginSetup.PreparedSetupData"}},"visibility":"internal"}],"src":"1905:40:32"},"scope":3420,"src":"1757:307:32","stateMutability":"pure","virtual":true,"visibility":"external"},{"baseFunctions":[4852],"body":{"id":3418,"nodeType":"Block","src":"2283:119:32","statements":[{"expression":{"components":[{"id":3404,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3394,"src":"2294:4:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3405,"name":"_payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3397,"src":"2300:8:32","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$4810_calldata_ptr","typeString":"struct IPluginSetup.SetupPayload calldata"}}],"id":3406,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2293:16:32","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_struct$_SetupPayload_$4810_calldata_ptr_$","typeString":"tuple(address,struct IPluginSetup.SetupPayload calldata)"}},"id":3407,"nodeType":"ExpressionStatement","src":"2293:16:32"},{"expression":{"id":3416,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3408,"name":"permissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3402,"src":"2319:11:32","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"hexValue":"30","id":3410,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2349:1:32","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":3411,"name":"THIS_BUILD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3297,"src":"2352:10:32","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"expression":{"expression":{"id":3412,"name":"PermissionLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3814,"src":"2364:13:32","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PermissionLib_$3814_$","typeString":"type(library PermissionLib)"}},"id":3413,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2378:9:32","memberName":"Operation","nodeType":"MemberAccess","referencedDeclaration":3793,"src":"2364:23:32","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Operation_$3793_$","typeString":"type(enum PermissionLib.Operation)"}},"id":3414,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2388:6:32","memberName":"Revoke","nodeType":"MemberAccess","referencedDeclaration":3791,"src":"2364:30:32","typeDescriptions":{"typeIdentifier":"t_enum$_Operation_$3793","typeString":"enum PermissionLib.Operation"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_enum$_Operation_$3793","typeString":"enum PermissionLib.Operation"}],"id":3409,"name":"mockPermissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3069,"src":"2333:15:32","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_enum$_Operation_$3793_$returns$_t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint160,uint160,enum PermissionLib.Operation) pure returns (struct PermissionLib.MultiTargetPermission memory[] memory)"}},"id":3415,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2333:62:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"src":"2319:76:32","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"id":3417,"nodeType":"ExpressionStatement","src":"2319:76:32"}]},"documentation":{"id":3392,"nodeType":"StructuredDocumentation","src":"2070:28:32","text":"@inheritdoc IPluginSetup"},"functionSelector":"9cb0a124","id":3419,"implemented":true,"kind":"function","modifiers":[],"name":"prepareUninstallation","nameLocation":"2112:21:32","nodeType":"FunctionDefinition","parameters":{"id":3398,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3394,"mutability":"mutable","name":"_dao","nameLocation":"2151:4:32","nodeType":"VariableDeclaration","scope":3419,"src":"2143:12:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3393,"name":"address","nodeType":"ElementaryTypeName","src":"2143:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3397,"mutability":"mutable","name":"_payload","nameLocation":"2187:8:32","nodeType":"VariableDeclaration","scope":3419,"src":"2165:30:32","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$4810_calldata_ptr","typeString":"struct IPluginSetup.SetupPayload"},"typeName":{"id":3396,"nodeType":"UserDefinedTypeName","pathNode":{"id":3395,"name":"SetupPayload","nameLocations":["2165:12:32"],"nodeType":"IdentifierPath","referencedDeclaration":4810,"src":"2165:12:32"},"referencedDeclaration":4810,"src":"2165:12:32","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$4810_storage_ptr","typeString":"struct IPluginSetup.SetupPayload"}},"visibility":"internal"}],"src":"2133:68:32"},"returnParameters":{"id":3403,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3402,"mutability":"mutable","name":"permissions","nameLocation":"2270:11:32","nodeType":"VariableDeclaration","scope":3419,"src":"2225:56:32","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission[]"},"typeName":{"baseType":{"id":3400,"nodeType":"UserDefinedTypeName","pathNode":{"id":3399,"name":"PermissionLib.MultiTargetPermission","nameLocations":["2225:13:32","2239:21:32"],"nodeType":"IdentifierPath","referencedDeclaration":3813,"src":"2225:35:32"},"referencedDeclaration":3813,"src":"2225:35:32","typeDescriptions":{"typeIdentifier":"t_struct$_MultiTargetPermission_$3813_storage_ptr","typeString":"struct PermissionLib.MultiTargetPermission"}},"id":3401,"nodeType":"ArrayTypeName","src":"2225:37:32","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_storage_$dyn_storage_ptr","typeString":"struct PermissionLib.MultiTargetPermission[]"}},"visibility":"internal"}],"src":"2224:58:32"},"scope":3420,"src":"2103:299:32","stateMutability":"pure","virtual":false,"visibility":"external"}],"scope":3780,"src":"816:1588:32","usedErrors":[2999,4984]},{"abstract":false,"baseContracts":[{"baseName":{"id":3422,"name":"PluginUpgradeableSetup","nameLocations":["2614:22:32"],"nodeType":"IdentifierPath","referencedDeclaration":5034,"src":"2614:22:32"},"id":3423,"nodeType":"InheritanceSpecifier","src":"2614:22:32"}],"canonicalName":"PluginUUPSUpgradeableSetupMockBuild2","contractDependencies":[1441,3185],"contractKind":"contract","documentation":{"id":3421,"nodeType":"StructuredDocumentation","src":"2406:159:32","text":"@notice A mock plugin setup of an upgradeable plugin to be deployed via the UUPS pattern.\n v1.2 (Release 1, Build 2)\n @dev DO NOT USE IN PRODUCTION!"},"fullyImplemented":true,"id":3582,"linearizedBaseContracts":[3582,5034,5136,5114,4859,2375,2387],"name":"PluginUUPSUpgradeableSetupMockBuild2","nameLocation":"2574:36:32","nodeType":"ContractDefinition","nodes":[{"global":false,"id":3426,"libraryName":{"id":3424,"name":"ProxyLib","nameLocations":["2649:8:32"],"nodeType":"IdentifierPath","referencedDeclaration":5102,"src":"2649:8:32"},"nodeType":"UsingForDirective","src":"2643:27:32","typeName":{"id":3425,"name":"address","nodeType":"ElementaryTypeName","src":"2662:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},{"constant":true,"id":3429,"mutability":"constant","name":"THIS_BUILD","nameLocation":"2701:10:32","nodeType":"VariableDeclaration","scope":3582,"src":"2676:39:32","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":3427,"name":"uint16","nodeType":"ElementaryTypeName","src":"2676:6:32","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"value":{"hexValue":"32","id":3428,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2714:1:32","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"visibility":"internal"},{"body":{"id":3441,"nodeType":"Block","src":"2807:2:32","statements":[]},"id":3442,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":3436,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"NewExpression","src":"2767:35:32","typeDescriptions":{"typeIdentifier":"t_function_creation_nonpayable$__$returns$_t_contract$_PluginUUPSUpgradeableMockBuild2_$3185_$","typeString":"function () returns (contract PluginUUPSUpgradeableMockBuild2)"},"typeName":{"id":3435,"nodeType":"UserDefinedTypeName","pathNode":{"id":3434,"name":"PluginUUPSUpgradeableMockBuild2","nameLocations":["2771:31:32"],"nodeType":"IdentifierPath","referencedDeclaration":3185,"src":"2771:31:32"},"referencedDeclaration":3185,"src":"2771:31:32","typeDescriptions":{"typeIdentifier":"t_contract$_PluginUUPSUpgradeableMockBuild2_$3185","typeString":"contract PluginUUPSUpgradeableMockBuild2"}}},"id":3437,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2767:37:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_PluginUUPSUpgradeableMockBuild2_$3185","typeString":"contract PluginUUPSUpgradeableMockBuild2"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_PluginUUPSUpgradeableMockBuild2_$3185","typeString":"contract PluginUUPSUpgradeableMockBuild2"}],"id":3433,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2759:7:32","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3432,"name":"address","nodeType":"ElementaryTypeName","src":"2759:7:32","typeDescriptions":{}}},"id":3438,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2759:46:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":3439,"kind":"baseConstructorSpecifier","modifierName":{"id":3431,"name":"PluginUpgradeableSetup","nameLocations":["2736:22:32"],"nodeType":"IdentifierPath","referencedDeclaration":5034,"src":"2736:22:32"},"nodeType":"ModifierInvocation","src":"2736:70:32"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":3430,"nodeType":"ParameterList","parameters":[],"src":"2733:2:32"},"returnParameters":{"id":3440,"nodeType":"ParameterList","parameters":[],"src":"2807:0:32"},"scope":3582,"src":"2722:87:32","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[4823],"body":{"id":3495,"nodeType":"Block","src":"3005:418:32","statements":[{"assignments":[3456],"declarations":[{"constant":false,"id":3456,"mutability":"mutable","name":"initData","nameLocation":"3028:8:32","nodeType":"VariableDeclaration","scope":3495,"src":"3015:21:32","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3455,"name":"bytes","nodeType":"ElementaryTypeName","src":"3015:5:32","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":3466,"initialValue":{"arguments":[{"expression":{"id":3459,"name":"PluginUUPSUpgradeableMockBuild2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3185,"src":"3067:31:32","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PluginUUPSUpgradeableMockBuild2_$3185_$","typeString":"type(contract PluginUUPSUpgradeableMockBuild2)"}},"id":3460,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3099:10:32","memberName":"initialize","nodeType":"MemberAccess","referencedDeclaration":3166,"src":"3067:42:32","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_contract$_IDAO_$2538_$returns$__$","typeString":"function PluginUUPSUpgradeableMockBuild2.initialize(contract IDAO)"}},{"components":[{"arguments":[{"id":3462,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3445,"src":"3129:4:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3461,"name":"IDAO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2538,"src":"3124:4:32","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IDAO_$2538_$","typeString":"type(contract IDAO)"}},"id":3463,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3124:10:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}}],"id":3464,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3123:12:32","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_nonpayable$_t_contract$_IDAO_$2538_$returns$__$","typeString":"function PluginUUPSUpgradeableMockBuild2.initialize(contract IDAO)"},{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}],"expression":{"id":3457,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967295,"src":"3039:3:32","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":3458,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3043:10:32","memberName":"encodeCall","nodeType":"MemberAccess","src":"3039:14:32","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":3465,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3039:106:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"3015:130:32"},{"expression":{"id":3473,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3467,"name":"plugin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3450,"src":"3155:6:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3471,"name":"initData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3456,"src":"3197:8:32","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":3468,"name":"implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5033,"src":"3164:14:32","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":3469,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3164:16:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3470,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3181:15:32","memberName":"deployUUPSProxy","nodeType":"MemberAccess","referencedDeclaration":5072,"src":"3164:32:32","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_address_$bound_to$_t_address_$","typeString":"function (address,bytes memory) returns (address)"}},"id":3472,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3164:42:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3155:51:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3474,"nodeType":"ExpressionStatement","src":"3155:51:32"},{"expression":{"id":3481,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":3475,"name":"preparedSetupData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3453,"src":"3216:17:32","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$4802_memory_ptr","typeString":"struct IPluginSetup.PreparedSetupData memory"}},"id":3477,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"3234:7:32","memberName":"helpers","nodeType":"MemberAccess","referencedDeclaration":4797,"src":"3216:25:32","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3479,"name":"THIS_BUILD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3429,"src":"3256:10:32","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"}],"id":3478,"name":"mockHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3108,"src":"3244:11:32","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$returns$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"function (uint160) pure returns (address[] memory)"}},"id":3480,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3244:23:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"src":"3216:51:32","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":3482,"nodeType":"ExpressionStatement","src":"3216:51:32"},{"expression":{"id":3493,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":3483,"name":"preparedSetupData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3453,"src":"3277:17:32","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$4802_memory_ptr","typeString":"struct IPluginSetup.PreparedSetupData memory"}},"id":3485,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"3295:11:32","memberName":"permissions","nodeType":"MemberAccess","referencedDeclaration":4801,"src":"3277:29:32","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"hexValue":"30","id":3487,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3338:1:32","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":3488,"name":"THIS_BUILD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3429,"src":"3353:10:32","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"expression":{"expression":{"id":3489,"name":"PermissionLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3814,"src":"3377:13:32","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PermissionLib_$3814_$","typeString":"type(library PermissionLib)"}},"id":3490,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3391:9:32","memberName":"Operation","nodeType":"MemberAccess","referencedDeclaration":3793,"src":"3377:23:32","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Operation_$3793_$","typeString":"type(enum PermissionLib.Operation)"}},"id":3491,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3401:5:32","memberName":"Grant","nodeType":"MemberAccess","referencedDeclaration":3790,"src":"3377:29:32","typeDescriptions":{"typeIdentifier":"t_enum$_Operation_$3793","typeString":"enum PermissionLib.Operation"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_enum$_Operation_$3793","typeString":"enum PermissionLib.Operation"}],"id":3486,"name":"mockPermissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3069,"src":"3309:15:32","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_enum$_Operation_$3793_$returns$_t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint160,uint160,enum PermissionLib.Operation) pure returns (struct PermissionLib.MultiTargetPermission memory[] memory)"}},"id":3492,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3309:107:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"src":"3277:139:32","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"id":3494,"nodeType":"ExpressionStatement","src":"3277:139:32"}]},"documentation":{"id":3443,"nodeType":"StructuredDocumentation","src":"2815:28:32","text":"@inheritdoc IPluginSetup"},"functionSelector":"f10832f1","id":3496,"implemented":true,"kind":"function","modifiers":[],"name":"prepareInstallation","nameLocation":"2857:19:32","nodeType":"FunctionDefinition","parameters":{"id":3448,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3445,"mutability":"mutable","name":"_dao","nameLocation":"2894:4:32","nodeType":"VariableDeclaration","scope":3496,"src":"2886:12:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3444,"name":"address","nodeType":"ElementaryTypeName","src":"2886:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3447,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3496,"src":"2908:12:32","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3446,"name":"bytes","nodeType":"ElementaryTypeName","src":"2908:5:32","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2876:50:32"},"returnParameters":{"id":3454,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3450,"mutability":"mutable","name":"plugin","nameLocation":"2953:6:32","nodeType":"VariableDeclaration","scope":3496,"src":"2945:14:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3449,"name":"address","nodeType":"ElementaryTypeName","src":"2945:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3453,"mutability":"mutable","name":"preparedSetupData","nameLocation":"2986:17:32","nodeType":"VariableDeclaration","scope":3496,"src":"2961:42:32","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$4802_memory_ptr","typeString":"struct IPluginSetup.PreparedSetupData"},"typeName":{"id":3452,"nodeType":"UserDefinedTypeName","pathNode":{"id":3451,"name":"PreparedSetupData","nameLocations":["2961:17:32"],"nodeType":"IdentifierPath","referencedDeclaration":4802,"src":"2961:17:32"},"referencedDeclaration":4802,"src":"2961:17:32","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$4802_storage_ptr","typeString":"struct IPluginSetup.PreparedSetupData"}},"visibility":"internal"}],"src":"2944:60:32"},"scope":3582,"src":"2848:575:32","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[4839],"body":{"id":3552,"nodeType":"Block","src":"3715:450:32","statements":[{"expression":{"components":[{"id":3513,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3499,"src":"3726:4:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3514,"name":"_payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3504,"src":"3732:8:32","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$4810_calldata_ptr","typeString":"struct IPluginSetup.SetupPayload calldata"}}],"id":3515,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3725:16:32","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_struct$_SetupPayload_$4810_calldata_ptr_$","typeString":"tuple(address,struct IPluginSetup.SetupPayload calldata)"}},"id":3516,"nodeType":"ExpressionStatement","src":"3725:16:32"},{"condition":{"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"id":3519,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3517,"name":"_fromBuild","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3501,"src":"3787:10:32","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":3518,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3801:1:32","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3787:15:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3551,"nodeType":"IfStatement","src":"3783:376:32","trueBody":{"id":3550,"nodeType":"Block","src":"3804:355:32","statements":[{"expression":{"id":3526,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":3520,"name":"preparedSetupData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3511,"src":"3818:17:32","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$4802_memory_ptr","typeString":"struct IPluginSetup.PreparedSetupData memory"}},"id":3522,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"3836:7:32","memberName":"helpers","nodeType":"MemberAccess","referencedDeclaration":4797,"src":"3818:25:32","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3524,"name":"THIS_BUILD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3429,"src":"3858:10:32","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"}],"id":3523,"name":"mockHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3108,"src":"3846:11:32","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$returns$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"function (uint160) pure returns (address[] memory)"}},"id":3525,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3846:23:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"src":"3818:51:32","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":3527,"nodeType":"ExpressionStatement","src":"3818:51:32"},{"expression":{"id":3536,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3528,"name":"initData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3508,"src":"3883:8:32","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":3531,"name":"PluginUUPSUpgradeableMockBuild2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3185,"src":"3909:31:32","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PluginUUPSUpgradeableMockBuild2_$3185_$","typeString":"type(contract PluginUUPSUpgradeableMockBuild2)"}},"id":3532,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3941:14:32","memberName":"initializeFrom","nodeType":"MemberAccess","referencedDeclaration":3184,"src":"3909:46:32","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_uint16_$returns$__$","typeString":"function PluginUUPSUpgradeableMockBuild2.initializeFrom(uint16)"}},{"components":[{"id":3533,"name":"_fromBuild","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3501,"src":"3958:10:32","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"id":3534,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3957:12:32","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_nonpayable$_t_uint16_$returns$__$","typeString":"function PluginUUPSUpgradeableMockBuild2.initializeFrom(uint16)"},{"typeIdentifier":"t_uint16","typeString":"uint16"}],"expression":{"id":3529,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967295,"src":"3894:3:32","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":3530,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3898:10:32","memberName":"encodeCall","nodeType":"MemberAccess","src":"3894:14:32","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":3535,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3894:76:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"3883:87:32","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":3537,"nodeType":"ExpressionStatement","src":"3883:87:32"},{"expression":{"id":3548,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":3538,"name":"preparedSetupData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3511,"src":"3984:17:32","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$4802_memory_ptr","typeString":"struct IPluginSetup.PreparedSetupData memory"}},"id":3540,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4002:11:32","memberName":"permissions","nodeType":"MemberAccess","referencedDeclaration":4801,"src":"3984:29:32","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3542,"name":"_fromBuild","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3501,"src":"4049:10:32","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"id":3543,"name":"THIS_BUILD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3429,"src":"4077:10:32","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"expression":{"expression":{"id":3544,"name":"PermissionLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3814,"src":"4105:13:32","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PermissionLib_$3814_$","typeString":"type(library PermissionLib)"}},"id":3545,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4119:9:32","memberName":"Operation","nodeType":"MemberAccess","referencedDeclaration":3793,"src":"4105:23:32","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Operation_$3793_$","typeString":"type(enum PermissionLib.Operation)"}},"id":3546,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4129:5:32","memberName":"Grant","nodeType":"MemberAccess","referencedDeclaration":3790,"src":"4105:29:32","typeDescriptions":{"typeIdentifier":"t_enum$_Operation_$3793","typeString":"enum PermissionLib.Operation"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_enum$_Operation_$3793","typeString":"enum PermissionLib.Operation"}],"id":3541,"name":"mockPermissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3069,"src":"4016:15:32","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_enum$_Operation_$3793_$returns$_t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint160,uint160,enum PermissionLib.Operation) pure returns (struct PermissionLib.MultiTargetPermission memory[] memory)"}},"id":3547,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4016:132:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"src":"3984:164:32","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"id":3549,"nodeType":"ExpressionStatement","src":"3984:164:32"}]}}]},"documentation":{"id":3497,"nodeType":"StructuredDocumentation","src":"3429:28:32","text":"@inheritdoc IPluginSetup"},"functionSelector":"a8a9c29e","id":3553,"implemented":true,"kind":"function","modifiers":[],"name":"prepareUpdate","nameLocation":"3471:13:32","nodeType":"FunctionDefinition","overrides":{"id":3506,"nodeType":"OverrideSpecifier","overrides":[],"src":"3618:8:32"},"parameters":{"id":3505,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3499,"mutability":"mutable","name":"_dao","nameLocation":"3502:4:32","nodeType":"VariableDeclaration","scope":3553,"src":"3494:12:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3498,"name":"address","nodeType":"ElementaryTypeName","src":"3494:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3501,"mutability":"mutable","name":"_fromBuild","nameLocation":"3523:10:32","nodeType":"VariableDeclaration","scope":3553,"src":"3516:17:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":3500,"name":"uint16","nodeType":"ElementaryTypeName","src":"3516:6:32","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":3504,"mutability":"mutable","name":"_payload","nameLocation":"3565:8:32","nodeType":"VariableDeclaration","scope":3553,"src":"3543:30:32","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$4810_calldata_ptr","typeString":"struct IPluginSetup.SetupPayload"},"typeName":{"id":3503,"nodeType":"UserDefinedTypeName","pathNode":{"id":3502,"name":"SetupPayload","nameLocations":["3543:12:32"],"nodeType":"IdentifierPath","referencedDeclaration":4810,"src":"3543:12:32"},"referencedDeclaration":4810,"src":"3543:12:32","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$4810_storage_ptr","typeString":"struct IPluginSetup.SetupPayload"}},"visibility":"internal"}],"src":"3484:95:32"},"returnParameters":{"id":3512,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3508,"mutability":"mutable","name":"initData","nameLocation":"3657:8:32","nodeType":"VariableDeclaration","scope":3553,"src":"3644:21:32","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3507,"name":"bytes","nodeType":"ElementaryTypeName","src":"3644:5:32","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":3511,"mutability":"mutable","name":"preparedSetupData","nameLocation":"3692:17:32","nodeType":"VariableDeclaration","scope":3553,"src":"3667:42:32","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$4802_memory_ptr","typeString":"struct IPluginSetup.PreparedSetupData"},"typeName":{"id":3510,"nodeType":"UserDefinedTypeName","pathNode":{"id":3509,"name":"PreparedSetupData","nameLocations":["3667:17:32"],"nodeType":"IdentifierPath","referencedDeclaration":4802,"src":"3667:17:32"},"referencedDeclaration":4802,"src":"3667:17:32","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$4802_storage_ptr","typeString":"struct IPluginSetup.PreparedSetupData"}},"visibility":"internal"}],"src":"3643:67:32"},"scope":3582,"src":"3462:703:32","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[4852],"body":{"id":3580,"nodeType":"Block","src":"4384:119:32","statements":[{"expression":{"components":[{"id":3566,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3556,"src":"4395:4:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3567,"name":"_payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3559,"src":"4401:8:32","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$4810_calldata_ptr","typeString":"struct IPluginSetup.SetupPayload calldata"}}],"id":3568,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4394:16:32","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_struct$_SetupPayload_$4810_calldata_ptr_$","typeString":"tuple(address,struct IPluginSetup.SetupPayload calldata)"}},"id":3569,"nodeType":"ExpressionStatement","src":"4394:16:32"},{"expression":{"id":3578,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3570,"name":"permissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3564,"src":"4420:11:32","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"hexValue":"30","id":3572,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4450:1:32","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":3573,"name":"THIS_BUILD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3429,"src":"4453:10:32","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"expression":{"expression":{"id":3574,"name":"PermissionLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3814,"src":"4465:13:32","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PermissionLib_$3814_$","typeString":"type(library PermissionLib)"}},"id":3575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4479:9:32","memberName":"Operation","nodeType":"MemberAccess","referencedDeclaration":3793,"src":"4465:23:32","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Operation_$3793_$","typeString":"type(enum PermissionLib.Operation)"}},"id":3576,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4489:6:32","memberName":"Revoke","nodeType":"MemberAccess","referencedDeclaration":3791,"src":"4465:30:32","typeDescriptions":{"typeIdentifier":"t_enum$_Operation_$3793","typeString":"enum PermissionLib.Operation"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_enum$_Operation_$3793","typeString":"enum PermissionLib.Operation"}],"id":3571,"name":"mockPermissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3069,"src":"4434:15:32","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_enum$_Operation_$3793_$returns$_t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint160,uint160,enum PermissionLib.Operation) pure returns (struct PermissionLib.MultiTargetPermission memory[] memory)"}},"id":3577,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4434:62:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"src":"4420:76:32","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"id":3579,"nodeType":"ExpressionStatement","src":"4420:76:32"}]},"documentation":{"id":3554,"nodeType":"StructuredDocumentation","src":"4171:28:32","text":"@inheritdoc IPluginSetup"},"functionSelector":"9cb0a124","id":3581,"implemented":true,"kind":"function","modifiers":[],"name":"prepareUninstallation","nameLocation":"4213:21:32","nodeType":"FunctionDefinition","parameters":{"id":3560,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3556,"mutability":"mutable","name":"_dao","nameLocation":"4252:4:32","nodeType":"VariableDeclaration","scope":3581,"src":"4244:12:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3555,"name":"address","nodeType":"ElementaryTypeName","src":"4244:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3559,"mutability":"mutable","name":"_payload","nameLocation":"4288:8:32","nodeType":"VariableDeclaration","scope":3581,"src":"4266:30:32","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$4810_calldata_ptr","typeString":"struct IPluginSetup.SetupPayload"},"typeName":{"id":3558,"nodeType":"UserDefinedTypeName","pathNode":{"id":3557,"name":"SetupPayload","nameLocations":["4266:12:32"],"nodeType":"IdentifierPath","referencedDeclaration":4810,"src":"4266:12:32"},"referencedDeclaration":4810,"src":"4266:12:32","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$4810_storage_ptr","typeString":"struct IPluginSetup.SetupPayload"}},"visibility":"internal"}],"src":"4234:68:32"},"returnParameters":{"id":3565,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3564,"mutability":"mutable","name":"permissions","nameLocation":"4371:11:32","nodeType":"VariableDeclaration","scope":3581,"src":"4326:56:32","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission[]"},"typeName":{"baseType":{"id":3562,"nodeType":"UserDefinedTypeName","pathNode":{"id":3561,"name":"PermissionLib.MultiTargetPermission","nameLocations":["4326:13:32","4340:21:32"],"nodeType":"IdentifierPath","referencedDeclaration":3813,"src":"4326:35:32"},"referencedDeclaration":3813,"src":"4326:35:32","typeDescriptions":{"typeIdentifier":"t_struct$_MultiTargetPermission_$3813_storage_ptr","typeString":"struct PermissionLib.MultiTargetPermission"}},"id":3563,"nodeType":"ArrayTypeName","src":"4326:37:32","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_storage_$dyn_storage_ptr","typeString":"struct PermissionLib.MultiTargetPermission[]"}},"visibility":"internal"}],"src":"4325:58:32"},"scope":3582,"src":"4204:299:32","stateMutability":"pure","virtual":false,"visibility":"external"}],"scope":3780,"src":"2565:1940:32","usedErrors":[2999,4984]},{"abstract":false,"baseContracts":[{"baseName":{"id":3584,"name":"PluginUpgradeableSetup","nameLocations":["4680:22:32"],"nodeType":"IdentifierPath","referencedDeclaration":5034,"src":"4680:22:32"},"id":3585,"nodeType":"InheritanceSpecifier","src":"4680:22:32"}],"canonicalName":"PluginUUPSUpgradeableSetupMockBuild3","contractDependencies":[1441,3248],"contractKind":"contract","documentation":{"id":3583,"nodeType":"StructuredDocumentation","src":"4507:124:32","text":"@notice A mock plugin setup of an upgradeable plugin to be deployed via the UUPS pattern.\n v1.3 (Release 1, Build 3)"},"fullyImplemented":true,"id":3779,"linearizedBaseContracts":[3779,5034,5136,5114,4859,2375,2387],"name":"PluginUUPSUpgradeableSetupMockBuild3","nameLocation":"4640:36:32","nodeType":"ContractDefinition","nodes":[{"global":false,"id":3588,"libraryName":{"id":3586,"name":"ProxyLib","nameLocations":["4715:8:32"],"nodeType":"IdentifierPath","referencedDeclaration":5102,"src":"4715:8:32"},"nodeType":"UsingForDirective","src":"4709:27:32","typeName":{"id":3587,"name":"address","nodeType":"ElementaryTypeName","src":"4728:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},{"constant":true,"id":3591,"mutability":"constant","name":"THIS_BUILD","nameLocation":"4767:10:32","nodeType":"VariableDeclaration","scope":3779,"src":"4742:39:32","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":3589,"name":"uint16","nodeType":"ElementaryTypeName","src":"4742:6:32","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"value":{"hexValue":"33","id":3590,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4780:1:32","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"visibility":"internal"},{"body":{"id":3603,"nodeType":"Block","src":"4873:2:32","statements":[]},"id":3604,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":3598,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"NewExpression","src":"4833:35:32","typeDescriptions":{"typeIdentifier":"t_function_creation_nonpayable$__$returns$_t_contract$_PluginUUPSUpgradeableMockBuild3_$3248_$","typeString":"function () returns (contract PluginUUPSUpgradeableMockBuild3)"},"typeName":{"id":3597,"nodeType":"UserDefinedTypeName","pathNode":{"id":3596,"name":"PluginUUPSUpgradeableMockBuild3","nameLocations":["4837:31:32"],"nodeType":"IdentifierPath","referencedDeclaration":3248,"src":"4837:31:32"},"referencedDeclaration":3248,"src":"4837:31:32","typeDescriptions":{"typeIdentifier":"t_contract$_PluginUUPSUpgradeableMockBuild3_$3248","typeString":"contract PluginUUPSUpgradeableMockBuild3"}}},"id":3599,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4833:37:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_PluginUUPSUpgradeableMockBuild3_$3248","typeString":"contract PluginUUPSUpgradeableMockBuild3"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_PluginUUPSUpgradeableMockBuild3_$3248","typeString":"contract PluginUUPSUpgradeableMockBuild3"}],"id":3595,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4825:7:32","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3594,"name":"address","nodeType":"ElementaryTypeName","src":"4825:7:32","typeDescriptions":{}}},"id":3600,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4825:46:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":3601,"kind":"baseConstructorSpecifier","modifierName":{"id":3593,"name":"PluginUpgradeableSetup","nameLocations":["4802:22:32"],"nodeType":"IdentifierPath","referencedDeclaration":5034,"src":"4802:22:32"},"nodeType":"ModifierInvocation","src":"4802:70:32"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":3592,"nodeType":"ParameterList","parameters":[],"src":"4799:2:32"},"returnParameters":{"id":3602,"nodeType":"ParameterList","parameters":[],"src":"4873:0:32"},"scope":3779,"src":"4788:87:32","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[4823],"body":{"id":3657,"nodeType":"Block","src":"5071:418:32","statements":[{"assignments":[3618],"declarations":[{"constant":false,"id":3618,"mutability":"mutable","name":"initData","nameLocation":"5094:8:32","nodeType":"VariableDeclaration","scope":3657,"src":"5081:21:32","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3617,"name":"bytes","nodeType":"ElementaryTypeName","src":"5081:5:32","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":3628,"initialValue":{"arguments":[{"expression":{"id":3621,"name":"PluginUUPSUpgradeableMockBuild3","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3248,"src":"5133:31:32","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PluginUUPSUpgradeableMockBuild3_$3248_$","typeString":"type(contract PluginUUPSUpgradeableMockBuild3)"}},"id":3622,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5165:10:32","memberName":"initialize","nodeType":"MemberAccess","referencedDeclaration":3220,"src":"5133:42:32","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_contract$_IDAO_$2538_$returns$__$","typeString":"function PluginUUPSUpgradeableMockBuild3.initialize(contract IDAO)"}},{"components":[{"arguments":[{"id":3624,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3607,"src":"5195:4:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3623,"name":"IDAO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2538,"src":"5190:4:32","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IDAO_$2538_$","typeString":"type(contract IDAO)"}},"id":3625,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5190:10:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}}],"id":3626,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5189:12:32","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_nonpayable$_t_contract$_IDAO_$2538_$returns$__$","typeString":"function PluginUUPSUpgradeableMockBuild3.initialize(contract IDAO)"},{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}],"expression":{"id":3619,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967295,"src":"5105:3:32","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":3620,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5109:10:32","memberName":"encodeCall","nodeType":"MemberAccess","src":"5105:14:32","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":3627,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5105:106:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"5081:130:32"},{"expression":{"id":3635,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3629,"name":"plugin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3612,"src":"5221:6:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3633,"name":"initData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3618,"src":"5263:8:32","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":3630,"name":"implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5033,"src":"5230:14:32","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":3631,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5230:16:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3632,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5247:15:32","memberName":"deployUUPSProxy","nodeType":"MemberAccess","referencedDeclaration":5072,"src":"5230:32:32","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_address_$bound_to$_t_address_$","typeString":"function (address,bytes memory) returns (address)"}},"id":3634,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5230:42:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5221:51:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3636,"nodeType":"ExpressionStatement","src":"5221:51:32"},{"expression":{"id":3643,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":3637,"name":"preparedSetupData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3615,"src":"5282:17:32","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$4802_memory_ptr","typeString":"struct IPluginSetup.PreparedSetupData memory"}},"id":3639,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5300:7:32","memberName":"helpers","nodeType":"MemberAccess","referencedDeclaration":4797,"src":"5282:25:32","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3641,"name":"THIS_BUILD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3591,"src":"5322:10:32","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"}],"id":3640,"name":"mockHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3108,"src":"5310:11:32","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$returns$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"function (uint160) pure returns (address[] memory)"}},"id":3642,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5310:23:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"src":"5282:51:32","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":3644,"nodeType":"ExpressionStatement","src":"5282:51:32"},{"expression":{"id":3655,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":3645,"name":"preparedSetupData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3615,"src":"5343:17:32","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$4802_memory_ptr","typeString":"struct IPluginSetup.PreparedSetupData memory"}},"id":3647,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5361:11:32","memberName":"permissions","nodeType":"MemberAccess","referencedDeclaration":4801,"src":"5343:29:32","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"hexValue":"30","id":3649,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5404:1:32","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":3650,"name":"THIS_BUILD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3591,"src":"5419:10:32","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"expression":{"expression":{"id":3651,"name":"PermissionLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3814,"src":"5443:13:32","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PermissionLib_$3814_$","typeString":"type(library PermissionLib)"}},"id":3652,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5457:9:32","memberName":"Operation","nodeType":"MemberAccess","referencedDeclaration":3793,"src":"5443:23:32","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Operation_$3793_$","typeString":"type(enum PermissionLib.Operation)"}},"id":3653,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5467:5:32","memberName":"Grant","nodeType":"MemberAccess","referencedDeclaration":3790,"src":"5443:29:32","typeDescriptions":{"typeIdentifier":"t_enum$_Operation_$3793","typeString":"enum PermissionLib.Operation"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_enum$_Operation_$3793","typeString":"enum PermissionLib.Operation"}],"id":3648,"name":"mockPermissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3069,"src":"5375:15:32","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_enum$_Operation_$3793_$returns$_t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint160,uint160,enum PermissionLib.Operation) pure returns (struct PermissionLib.MultiTargetPermission memory[] memory)"}},"id":3654,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5375:107:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"src":"5343:139:32","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"id":3656,"nodeType":"ExpressionStatement","src":"5343:139:32"}]},"documentation":{"id":3605,"nodeType":"StructuredDocumentation","src":"4881:28:32","text":"@inheritdoc IPluginSetup"},"functionSelector":"f10832f1","id":3658,"implemented":true,"kind":"function","modifiers":[],"name":"prepareInstallation","nameLocation":"4923:19:32","nodeType":"FunctionDefinition","parameters":{"id":3610,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3607,"mutability":"mutable","name":"_dao","nameLocation":"4960:4:32","nodeType":"VariableDeclaration","scope":3658,"src":"4952:12:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3606,"name":"address","nodeType":"ElementaryTypeName","src":"4952:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3609,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3658,"src":"4974:12:32","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3608,"name":"bytes","nodeType":"ElementaryTypeName","src":"4974:5:32","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4942:50:32"},"returnParameters":{"id":3616,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3612,"mutability":"mutable","name":"plugin","nameLocation":"5019:6:32","nodeType":"VariableDeclaration","scope":3658,"src":"5011:14:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3611,"name":"address","nodeType":"ElementaryTypeName","src":"5011:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3615,"mutability":"mutable","name":"preparedSetupData","nameLocation":"5052:17:32","nodeType":"VariableDeclaration","scope":3658,"src":"5027:42:32","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$4802_memory_ptr","typeString":"struct IPluginSetup.PreparedSetupData"},"typeName":{"id":3614,"nodeType":"UserDefinedTypeName","pathNode":{"id":3613,"name":"PreparedSetupData","nameLocations":["5027:17:32"],"nodeType":"IdentifierPath","referencedDeclaration":4802,"src":"5027:17:32"},"referencedDeclaration":4802,"src":"5027:17:32","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$4802_storage_ptr","typeString":"struct IPluginSetup.PreparedSetupData"}},"visibility":"internal"}],"src":"5010:60:32"},"scope":3779,"src":"4914:575:32","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[4839],"body":{"id":3749,"nodeType":"Block","src":"5781:1053:32","statements":[{"expression":{"components":[{"id":3675,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3661,"src":"5792:4:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3676,"name":"_payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3666,"src":"5798:8:32","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$4810_calldata_ptr","typeString":"struct IPluginSetup.SetupPayload calldata"}}],"id":3677,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5791:16:32","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_struct$_SetupPayload_$4810_calldata_ptr_$","typeString":"tuple(address,struct IPluginSetup.SetupPayload calldata)"}},"id":3678,"nodeType":"ExpressionStatement","src":"5791:16:32"},{"condition":{"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"id":3681,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3679,"name":"_fromBuild","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3663,"src":"5853:10:32","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":3680,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5867:1:32","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"5853:15:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3713,"nodeType":"IfStatement","src":"5849:562:32","trueBody":{"id":3712,"nodeType":"Block","src":"5870:541:32","statements":[{"expression":{"id":3688,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":3682,"name":"preparedSetupData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3673,"src":"5884:17:32","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$4802_memory_ptr","typeString":"struct IPluginSetup.PreparedSetupData memory"}},"id":3684,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5902:7:32","memberName":"helpers","nodeType":"MemberAccess","referencedDeclaration":4797,"src":"5884:25:32","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3686,"name":"THIS_BUILD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3591,"src":"5924:10:32","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"}],"id":3685,"name":"mockHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3108,"src":"5912:11:32","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$returns$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"function (uint160) pure returns (address[] memory)"}},"id":3687,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5912:23:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"src":"5884:51:32","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":3689,"nodeType":"ExpressionStatement","src":"5884:51:32"},{"expression":{"id":3698,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3690,"name":"initData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3670,"src":"5949:8:32","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":3693,"name":"PluginUUPSUpgradeableMockBuild3","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3248,"src":"5975:31:32","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PluginUUPSUpgradeableMockBuild3_$3248_$","typeString":"type(contract PluginUUPSUpgradeableMockBuild3)"}},"id":3694,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6007:14:32","memberName":"initializeFrom","nodeType":"MemberAccess","referencedDeclaration":3247,"src":"5975:46:32","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_uint16_$returns$__$","typeString":"function PluginUUPSUpgradeableMockBuild3.initializeFrom(uint16)"}},{"components":[{"id":3695,"name":"_fromBuild","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3663,"src":"6024:10:32","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"id":3696,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6023:12:32","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_nonpayable$_t_uint16_$returns$__$","typeString":"function PluginUUPSUpgradeableMockBuild3.initializeFrom(uint16)"},{"typeIdentifier":"t_uint16","typeString":"uint16"}],"expression":{"id":3691,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967295,"src":"5960:3:32","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":3692,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5964:10:32","memberName":"encodeCall","nodeType":"MemberAccess","src":"5960:14:32","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":3697,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5960:76:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"5949:87:32","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":3699,"nodeType":"ExpressionStatement","src":"5949:87:32"},{"expression":{"id":3710,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":3700,"name":"preparedSetupData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3673,"src":"6050:17:32","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$4802_memory_ptr","typeString":"struct IPluginSetup.PreparedSetupData memory"}},"id":3702,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"6068:11:32","memberName":"permissions","nodeType":"MemberAccess","referencedDeclaration":4801,"src":"6050:29:32","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3704,"name":"_fromBuild","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3663,"src":"6115:10:32","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"id":3705,"name":"THIS_BUILD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3591,"src":"6143:10:32","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"expression":{"expression":{"id":3706,"name":"PermissionLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3814,"src":"6171:13:32","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PermissionLib_$3814_$","typeString":"type(library PermissionLib)"}},"id":3707,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6185:9:32","memberName":"Operation","nodeType":"MemberAccess","referencedDeclaration":3793,"src":"6171:23:32","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Operation_$3793_$","typeString":"type(enum PermissionLib.Operation)"}},"id":3708,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6195:5:32","memberName":"Grant","nodeType":"MemberAccess","referencedDeclaration":3790,"src":"6171:29:32","typeDescriptions":{"typeIdentifier":"t_enum$_Operation_$3793","typeString":"enum PermissionLib.Operation"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_enum$_Operation_$3793","typeString":"enum PermissionLib.Operation"}],"id":3703,"name":"mockPermissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3069,"src":"6082:15:32","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_enum$_Operation_$3793_$returns$_t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint160,uint160,enum PermissionLib.Operation) pure returns (struct PermissionLib.MultiTargetPermission memory[] memory)"}},"id":3709,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6082:132:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"src":"6050:164:32","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"id":3711,"nodeType":"ExpressionStatement","src":"6050:164:32"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"id":3716,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3714,"name":"_fromBuild","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3663,"src":"6456:10:32","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"32","id":3715,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6470:1:32","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"6456:15:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3748,"nodeType":"IfStatement","src":"6452:376:32","trueBody":{"id":3747,"nodeType":"Block","src":"6473:355:32","statements":[{"expression":{"id":3723,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":3717,"name":"preparedSetupData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3673,"src":"6487:17:32","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$4802_memory_ptr","typeString":"struct IPluginSetup.PreparedSetupData memory"}},"id":3719,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"6505:7:32","memberName":"helpers","nodeType":"MemberAccess","referencedDeclaration":4797,"src":"6487:25:32","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3721,"name":"THIS_BUILD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3591,"src":"6527:10:32","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"}],"id":3720,"name":"mockHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3108,"src":"6515:11:32","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$returns$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"function (uint160) pure returns (address[] memory)"}},"id":3722,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6515:23:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"src":"6487:51:32","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":3724,"nodeType":"ExpressionStatement","src":"6487:51:32"},{"expression":{"id":3733,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3725,"name":"initData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3670,"src":"6552:8:32","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":3728,"name":"PluginUUPSUpgradeableMockBuild3","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3248,"src":"6578:31:32","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PluginUUPSUpgradeableMockBuild3_$3248_$","typeString":"type(contract PluginUUPSUpgradeableMockBuild3)"}},"id":3729,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6610:14:32","memberName":"initializeFrom","nodeType":"MemberAccess","referencedDeclaration":3247,"src":"6578:46:32","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_uint16_$returns$__$","typeString":"function PluginUUPSUpgradeableMockBuild3.initializeFrom(uint16)"}},{"components":[{"id":3730,"name":"_fromBuild","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3663,"src":"6627:10:32","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"id":3731,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6626:12:32","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_nonpayable$_t_uint16_$returns$__$","typeString":"function PluginUUPSUpgradeableMockBuild3.initializeFrom(uint16)"},{"typeIdentifier":"t_uint16","typeString":"uint16"}],"expression":{"id":3726,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967295,"src":"6563:3:32","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":3727,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6567:10:32","memberName":"encodeCall","nodeType":"MemberAccess","src":"6563:14:32","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":3732,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6563:76:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"6552:87:32","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":3734,"nodeType":"ExpressionStatement","src":"6552:87:32"},{"expression":{"id":3745,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":3735,"name":"preparedSetupData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3673,"src":"6653:17:32","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$4802_memory_ptr","typeString":"struct IPluginSetup.PreparedSetupData memory"}},"id":3737,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"6671:11:32","memberName":"permissions","nodeType":"MemberAccess","referencedDeclaration":4801,"src":"6653:29:32","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3739,"name":"_fromBuild","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3663,"src":"6718:10:32","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"id":3740,"name":"THIS_BUILD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3591,"src":"6746:10:32","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"expression":{"expression":{"id":3741,"name":"PermissionLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3814,"src":"6774:13:32","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PermissionLib_$3814_$","typeString":"type(library PermissionLib)"}},"id":3742,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6788:9:32","memberName":"Operation","nodeType":"MemberAccess","referencedDeclaration":3793,"src":"6774:23:32","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Operation_$3793_$","typeString":"type(enum PermissionLib.Operation)"}},"id":3743,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6798:5:32","memberName":"Grant","nodeType":"MemberAccess","referencedDeclaration":3790,"src":"6774:29:32","typeDescriptions":{"typeIdentifier":"t_enum$_Operation_$3793","typeString":"enum PermissionLib.Operation"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_enum$_Operation_$3793","typeString":"enum PermissionLib.Operation"}],"id":3738,"name":"mockPermissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3069,"src":"6685:15:32","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_enum$_Operation_$3793_$returns$_t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint160,uint160,enum PermissionLib.Operation) pure returns (struct PermissionLib.MultiTargetPermission memory[] memory)"}},"id":3744,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6685:132:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"src":"6653:164:32","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"id":3746,"nodeType":"ExpressionStatement","src":"6653:164:32"}]}}]},"documentation":{"id":3659,"nodeType":"StructuredDocumentation","src":"5495:28:32","text":"@inheritdoc IPluginSetup"},"functionSelector":"a8a9c29e","id":3750,"implemented":true,"kind":"function","modifiers":[],"name":"prepareUpdate","nameLocation":"5537:13:32","nodeType":"FunctionDefinition","overrides":{"id":3668,"nodeType":"OverrideSpecifier","overrides":[],"src":"5684:8:32"},"parameters":{"id":3667,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3661,"mutability":"mutable","name":"_dao","nameLocation":"5568:4:32","nodeType":"VariableDeclaration","scope":3750,"src":"5560:12:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3660,"name":"address","nodeType":"ElementaryTypeName","src":"5560:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3663,"mutability":"mutable","name":"_fromBuild","nameLocation":"5589:10:32","nodeType":"VariableDeclaration","scope":3750,"src":"5582:17:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":3662,"name":"uint16","nodeType":"ElementaryTypeName","src":"5582:6:32","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":3666,"mutability":"mutable","name":"_payload","nameLocation":"5631:8:32","nodeType":"VariableDeclaration","scope":3750,"src":"5609:30:32","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$4810_calldata_ptr","typeString":"struct IPluginSetup.SetupPayload"},"typeName":{"id":3665,"nodeType":"UserDefinedTypeName","pathNode":{"id":3664,"name":"SetupPayload","nameLocations":["5609:12:32"],"nodeType":"IdentifierPath","referencedDeclaration":4810,"src":"5609:12:32"},"referencedDeclaration":4810,"src":"5609:12:32","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$4810_storage_ptr","typeString":"struct IPluginSetup.SetupPayload"}},"visibility":"internal"}],"src":"5550:95:32"},"returnParameters":{"id":3674,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3670,"mutability":"mutable","name":"initData","nameLocation":"5723:8:32","nodeType":"VariableDeclaration","scope":3750,"src":"5710:21:32","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3669,"name":"bytes","nodeType":"ElementaryTypeName","src":"5710:5:32","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":3673,"mutability":"mutable","name":"preparedSetupData","nameLocation":"5758:17:32","nodeType":"VariableDeclaration","scope":3750,"src":"5733:42:32","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$4802_memory_ptr","typeString":"struct IPluginSetup.PreparedSetupData"},"typeName":{"id":3672,"nodeType":"UserDefinedTypeName","pathNode":{"id":3671,"name":"PreparedSetupData","nameLocations":["5733:17:32"],"nodeType":"IdentifierPath","referencedDeclaration":4802,"src":"5733:17:32"},"referencedDeclaration":4802,"src":"5733:17:32","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$4802_storage_ptr","typeString":"struct IPluginSetup.PreparedSetupData"}},"visibility":"internal"}],"src":"5709:67:32"},"scope":3779,"src":"5528:1306:32","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[4852],"body":{"id":3777,"nodeType":"Block","src":"7053:119:32","statements":[{"expression":{"components":[{"id":3763,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3753,"src":"7064:4:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3764,"name":"_payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3756,"src":"7070:8:32","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$4810_calldata_ptr","typeString":"struct IPluginSetup.SetupPayload calldata"}}],"id":3765,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7063:16:32","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_struct$_SetupPayload_$4810_calldata_ptr_$","typeString":"tuple(address,struct IPluginSetup.SetupPayload calldata)"}},"id":3766,"nodeType":"ExpressionStatement","src":"7063:16:32"},{"expression":{"id":3775,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3767,"name":"permissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3761,"src":"7089:11:32","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"hexValue":"30","id":3769,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7119:1:32","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":3770,"name":"THIS_BUILD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3591,"src":"7122:10:32","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"expression":{"expression":{"id":3771,"name":"PermissionLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3814,"src":"7134:13:32","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PermissionLib_$3814_$","typeString":"type(library PermissionLib)"}},"id":3772,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7148:9:32","memberName":"Operation","nodeType":"MemberAccess","referencedDeclaration":3793,"src":"7134:23:32","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Operation_$3793_$","typeString":"type(enum PermissionLib.Operation)"}},"id":3773,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7158:6:32","memberName":"Revoke","nodeType":"MemberAccess","referencedDeclaration":3791,"src":"7134:30:32","typeDescriptions":{"typeIdentifier":"t_enum$_Operation_$3793","typeString":"enum PermissionLib.Operation"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_enum$_Operation_$3793","typeString":"enum PermissionLib.Operation"}],"id":3768,"name":"mockPermissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3069,"src":"7103:15:32","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_enum$_Operation_$3793_$returns$_t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint160,uint160,enum PermissionLib.Operation) pure returns (struct PermissionLib.MultiTargetPermission memory[] memory)"}},"id":3774,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7103:62:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"src":"7089:76:32","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"id":3776,"nodeType":"ExpressionStatement","src":"7089:76:32"}]},"documentation":{"id":3751,"nodeType":"StructuredDocumentation","src":"6840:28:32","text":"@inheritdoc IPluginSetup"},"functionSelector":"9cb0a124","id":3778,"implemented":true,"kind":"function","modifiers":[],"name":"prepareUninstallation","nameLocation":"6882:21:32","nodeType":"FunctionDefinition","parameters":{"id":3757,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3753,"mutability":"mutable","name":"_dao","nameLocation":"6921:4:32","nodeType":"VariableDeclaration","scope":3778,"src":"6913:12:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3752,"name":"address","nodeType":"ElementaryTypeName","src":"6913:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3756,"mutability":"mutable","name":"_payload","nameLocation":"6957:8:32","nodeType":"VariableDeclaration","scope":3778,"src":"6935:30:32","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$4810_calldata_ptr","typeString":"struct IPluginSetup.SetupPayload"},"typeName":{"id":3755,"nodeType":"UserDefinedTypeName","pathNode":{"id":3754,"name":"SetupPayload","nameLocations":["6935:12:32"],"nodeType":"IdentifierPath","referencedDeclaration":4810,"src":"6935:12:32"},"referencedDeclaration":4810,"src":"6935:12:32","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$4810_storage_ptr","typeString":"struct IPluginSetup.SetupPayload"}},"visibility":"internal"}],"src":"6903:68:32"},"returnParameters":{"id":3762,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3761,"mutability":"mutable","name":"permissions","nameLocation":"7040:11:32","nodeType":"VariableDeclaration","scope":3778,"src":"6995:56:32","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission[]"},"typeName":{"baseType":{"id":3759,"nodeType":"UserDefinedTypeName","pathNode":{"id":3758,"name":"PermissionLib.MultiTargetPermission","nameLocations":["6995:13:32","7009:21:32"],"nodeType":"IdentifierPath","referencedDeclaration":3813,"src":"6995:35:32"},"referencedDeclaration":3813,"src":"6995:35:32","typeDescriptions":{"typeIdentifier":"t_struct$_MultiTargetPermission_$3813_storage_ptr","typeString":"struct PermissionLib.MultiTargetPermission"}},"id":3760,"nodeType":"ArrayTypeName","src":"6995:37:32","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_storage_$dyn_storage_ptr","typeString":"struct PermissionLib.MultiTargetPermission[]"}},"visibility":"internal"}],"src":"6994:58:32"},"scope":3779,"src":"6873:299:32","stateMutability":"pure","virtual":false,"visibility":"external"}],"scope":3780,"src":"4631:2543:32","usedErrors":[2999,4984]}],"src":"91:7084:32"},"id":32},"src/permission/PermissionLib.sol":{"ast":{"absolutePath":"src/permission/PermissionLib.sol","exportedSymbols":{"PermissionLib":[3814]},"id":3815,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":3781,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:33"},{"abstract":false,"baseContracts":[],"canonicalName":"PermissionLib","contractDependencies":[],"contractKind":"library","documentation":{"id":3782,"nodeType":"StructuredDocumentation","src":"72:171:33","text":"@title PermissionLib\n @author Aragon X - 2021-2023\n @notice A library containing objects for permission processing.\n @custom:security-contact sirt@aragon.org"},"fullyImplemented":true,"id":3814,"linearizedBaseContracts":[3814],"name":"PermissionLib","nameLocation":"251:13:33","nodeType":"ContractDefinition","nodes":[{"constant":true,"documentation":{"id":3783,"nodeType":"StructuredDocumentation","src":"271:79:33","text":"@notice A constant expressing that no condition is applied to a permission."},"functionSelector":"6dd02a5b","id":3789,"mutability":"constant","name":"NO_CONDITION","nameLocation":"379:12:33","nodeType":"VariableDeclaration","scope":3814,"src":"355:49:33","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3784,"name":"address","nodeType":"ElementaryTypeName","src":"355:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":{"arguments":[{"hexValue":"30","id":3787,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"402:1:33","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3786,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"394:7:33","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3785,"name":"address","nodeType":"ElementaryTypeName","src":"394:7:33","typeDescriptions":{}}},"id":3788,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"394:10:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"canonicalName":"PermissionLib.Operation","id":3793,"members":[{"id":3790,"name":"Grant","nameLocation":"814:5:33","nodeType":"EnumValue","src":"814:5:33"},{"id":3791,"name":"Revoke","nameLocation":"829:6:33","nodeType":"EnumValue","src":"829:6:33"},{"id":3792,"name":"GrantWithCondition","nameLocation":"845:18:33","nodeType":"EnumValue","src":"845:18:33"}],"name":"Operation","nameLocation":"794:9:33","nodeType":"EnumDefinition","src":"789:80:33"},{"canonicalName":"PermissionLib.SingleTargetPermission","id":3801,"members":[{"constant":false,"id":3796,"mutability":"mutable","name":"operation","nameLocation":"1243:9:33","nodeType":"VariableDeclaration","scope":3801,"src":"1233:19:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Operation_$3793","typeString":"enum PermissionLib.Operation"},"typeName":{"id":3795,"nodeType":"UserDefinedTypeName","pathNode":{"id":3794,"name":"Operation","nameLocations":["1233:9:33"],"nodeType":"IdentifierPath","referencedDeclaration":3793,"src":"1233:9:33"},"referencedDeclaration":3793,"src":"1233:9:33","typeDescriptions":{"typeIdentifier":"t_enum$_Operation_$3793","typeString":"enum PermissionLib.Operation"}},"visibility":"internal"},{"constant":false,"id":3798,"mutability":"mutable","name":"who","nameLocation":"1270:3:33","nodeType":"VariableDeclaration","scope":3801,"src":"1262:11:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3797,"name":"address","nodeType":"ElementaryTypeName","src":"1262:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3800,"mutability":"mutable","name":"permissionId","nameLocation":"1291:12:33","nodeType":"VariableDeclaration","scope":3801,"src":"1283:20:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3799,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1283:7:33","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"name":"SingleTargetPermission","nameLocation":"1200:22:33","nodeType":"StructDefinition","scope":3814,"src":"1193:117:33","visibility":"public"},{"canonicalName":"PermissionLib.MultiTargetPermission","id":3813,"members":[{"constant":false,"id":3804,"mutability":"mutable","name":"operation","nameLocation":"1934:9:33","nodeType":"VariableDeclaration","scope":3813,"src":"1924:19:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Operation_$3793","typeString":"enum PermissionLib.Operation"},"typeName":{"id":3803,"nodeType":"UserDefinedTypeName","pathNode":{"id":3802,"name":"Operation","nameLocations":["1924:9:33"],"nodeType":"IdentifierPath","referencedDeclaration":3793,"src":"1924:9:33"},"referencedDeclaration":3793,"src":"1924:9:33","typeDescriptions":{"typeIdentifier":"t_enum$_Operation_$3793","typeString":"enum PermissionLib.Operation"}},"visibility":"internal"},{"constant":false,"id":3806,"mutability":"mutable","name":"where","nameLocation":"1961:5:33","nodeType":"VariableDeclaration","scope":3813,"src":"1953:13:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3805,"name":"address","nodeType":"ElementaryTypeName","src":"1953:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3808,"mutability":"mutable","name":"who","nameLocation":"1984:3:33","nodeType":"VariableDeclaration","scope":3813,"src":"1976:11:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3807,"name":"address","nodeType":"ElementaryTypeName","src":"1976:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3810,"mutability":"mutable","name":"condition","nameLocation":"2005:9:33","nodeType":"VariableDeclaration","scope":3813,"src":"1997:17:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3809,"name":"address","nodeType":"ElementaryTypeName","src":"1997:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3812,"mutability":"mutable","name":"permissionId","nameLocation":"2032:12:33","nodeType":"VariableDeclaration","scope":3813,"src":"2024:20:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3811,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2024:7:33","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"name":"MultiTargetPermission","nameLocation":"1892:21:33","nodeType":"StructDefinition","scope":3814,"src":"1885:166:33","visibility":"public"}],"scope":3815,"src":"243:1810:33","usedErrors":[]}],"src":"47:2007:33"},"id":33},"src/permission/auth/DaoAuthorizable.sol":{"ast":{"absolutePath":"src/permission/auth/DaoAuthorizable.sol","exportedSymbols":{"Context":[2167],"DaoAuthorizable":[3872],"IDAO":[2538],"_auth":[3987]},"id":3873,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":3816,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:34"},{"absolutePath":"@openzeppelin/contracts/utils/Context.sol","file":"@openzeppelin/contracts/utils/Context.sol","id":3818,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3873,"sourceUnit":2168,"src":"72:66:34","symbolAliases":[{"foreign":{"id":3817,"name":"Context","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2167,"src":"80:7:34","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/dao/IDAO.sol","file":"../../dao/IDAO.sol","id":3820,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3873,"sourceUnit":2539,"src":"140:40:34","symbolAliases":[{"foreign":{"id":3819,"name":"IDAO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2538,"src":"148:4:34","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/permission/auth/auth.sol","file":"./auth.sol","id":3822,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3873,"sourceUnit":3988,"src":"181:33:34","symbolAliases":[{"foreign":{"id":3821,"name":"_auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3987,"src":"189:5:34","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":3824,"name":"Context","nameLocations":["560:7:34"],"nodeType":"IdentifierPath","referencedDeclaration":2167,"src":"560:7:34"},"id":3825,"nodeType":"InheritanceSpecifier","src":"560:7:34"}],"canonicalName":"DaoAuthorizable","contractDependencies":[],"contractKind":"contract","documentation":{"id":3823,"nodeType":"StructuredDocumentation","src":"216:307:34","text":"@title DaoAuthorizable\n @author Aragon X - 2022-2023\n @notice An abstract contract providing a meta-transaction compatible modifier for non-upgradeable contracts instantiated via the `new` keyword to authorize function calls through an associated DAO.\n @custom:security-contact sirt@aragon.org"},"fullyImplemented":true,"id":3872,"linearizedBaseContracts":[3872,2167],"name":"DaoAuthorizable","nameLocation":"541:15:34","nodeType":"ContractDefinition","nodes":[{"constant":false,"documentation":{"id":3826,"nodeType":"StructuredDocumentation","src":"574:80:34","text":"@notice The associated DAO managing the permissions of inheriting contracts."},"id":3829,"mutability":"immutable","name":"DAO","nameLocation":"682:3:34","nodeType":"VariableDeclaration","scope":3872,"src":"659:26:34","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"},"typeName":{"id":3828,"nodeType":"UserDefinedTypeName","pathNode":{"id":3827,"name":"IDAO","nameLocations":["659:4:34"],"nodeType":"IdentifierPath","referencedDeclaration":2538,"src":"659:4:34"},"referencedDeclaration":2538,"src":"659:4:34","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}},"visibility":"private"},{"body":{"id":3840,"nodeType":"Block","src":"834:27:34","statements":[{"expression":{"id":3838,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3836,"name":"DAO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3829,"src":"844:3:34","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3837,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3833,"src":"850:4:34","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}},"src":"844:10:34","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}},"id":3839,"nodeType":"ExpressionStatement","src":"844:10:34"}]},"documentation":{"id":3830,"nodeType":"StructuredDocumentation","src":"692:114:34","text":"@notice Constructs the contract by setting the associated DAO.\n @param _dao The associated DAO address."},"id":3841,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":3834,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3833,"mutability":"mutable","name":"_dao","nameLocation":"828:4:34","nodeType":"VariableDeclaration","scope":3841,"src":"823:9:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"},"typeName":{"id":3832,"nodeType":"UserDefinedTypeName","pathNode":{"id":3831,"name":"IDAO","nameLocations":["823:4:34"],"nodeType":"IdentifierPath","referencedDeclaration":2538,"src":"823:4:34"},"referencedDeclaration":2538,"src":"823:4:34","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}},"visibility":"internal"}],"src":"822:11:34"},"returnParameters":{"id":3835,"nodeType":"ParameterList","parameters":[],"src":"834:0:34"},"scope":3872,"src":"811:50:34","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":3850,"nodeType":"Block","src":"985:27:34","statements":[{"expression":{"id":3848,"name":"DAO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3829,"src":"1002:3:34","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}},"functionReturnParameters":3847,"id":3849,"nodeType":"Return","src":"995:10:34"}]},"documentation":{"id":3842,"nodeType":"StructuredDocumentation","src":"867:71:34","text":"@notice Returns the DAO contract.\n @return The DAO contract."},"functionSelector":"4162169f","id":3851,"implemented":true,"kind":"function","modifiers":[],"name":"dao","nameLocation":"952:3:34","nodeType":"FunctionDefinition","parameters":{"id":3843,"nodeType":"ParameterList","parameters":[],"src":"955:2:34"},"returnParameters":{"id":3847,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3846,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3851,"src":"979:4:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"},"typeName":{"id":3845,"nodeType":"UserDefinedTypeName","pathNode":{"id":3844,"name":"IDAO","nameLocations":["979:4:34"],"nodeType":"IdentifierPath","referencedDeclaration":2538,"src":"979:4:34"},"referencedDeclaration":2538,"src":"979:4:34","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}},"visibility":"internal"}],"src":"978:6:34"},"scope":3872,"src":"943:69:34","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":3870,"nodeType":"Block","src":"1342:94:34","statements":[{"expression":{"arguments":[{"id":3857,"name":"DAO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3829,"src":"1358:3:34","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}},{"arguments":[{"id":3860,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967268,"src":"1371:4:34","typeDescriptions":{"typeIdentifier":"t_contract$_DaoAuthorizable_$3872","typeString":"contract DaoAuthorizable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_DaoAuthorizable_$3872","typeString":"contract DaoAuthorizable"}],"id":3859,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1363:7:34","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3858,"name":"address","nodeType":"ElementaryTypeName","src":"1363:7:34","typeDescriptions":{}}},"id":3861,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1363:13:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[],"expression":{"argumentTypes":[],"id":3862,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2149,"src":"1378:10:34","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":3863,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1378:12:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3864,"name":"_permissionId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3854,"src":"1392:13:34","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[],"expression":{"argumentTypes":[],"id":3865,"name":"_msgData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2158,"src":"1407:8:34","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bytes_calldata_ptr_$","typeString":"function () view returns (bytes calldata)"}},"id":3866,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1407:10:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":3856,"name":"_auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3987,"src":"1352:5:34","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_IDAO_$2538_$_t_address_$_t_address_$_t_bytes32_$_t_bytes_calldata_ptr_$returns$__$","typeString":"function (contract IDAO,address,address,bytes32,bytes calldata) view"}},"id":3867,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1352:66:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3868,"nodeType":"ExpressionStatement","src":"1352:66:34"},{"id":3869,"nodeType":"PlaceholderStatement","src":"1428:1:34"}]},"documentation":{"id":3852,"nodeType":"StructuredDocumentation","src":"1018:282:34","text":"@notice A modifier to make functions on inheriting contracts authorized. Permissions to call the function are checked through the associated DAO's permission manager.\n @param _permissionId The permission identifier required to call the method this modifier is applied to."},"id":3871,"name":"auth","nameLocation":"1314:4:34","nodeType":"ModifierDefinition","parameters":{"id":3855,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3854,"mutability":"mutable","name":"_permissionId","nameLocation":"1327:13:34","nodeType":"VariableDeclaration","scope":3871,"src":"1319:21:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3853,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1319:7:34","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1318:23:34"},"src":"1305:131:34","virtual":false,"visibility":"internal"}],"scope":3873,"src":"523:915:34","usedErrors":[]}],"src":"47:1392:34"},"id":34},"src/permission/auth/DaoAuthorizableUpgradeable.sol":{"ast":{"absolutePath":"src/permission/auth/DaoAuthorizableUpgradeable.sol","exportedSymbols":{"ContextUpgradeable":[1052],"DaoAuthorizableUpgradeable":[3937],"IDAO":[2538],"_auth":[3987]},"id":3938,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":3874,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:35"},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol","id":3876,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3938,"sourceUnit":1053,"src":"72:100:35","symbolAliases":[{"foreign":{"id":3875,"name":"ContextUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1052,"src":"80:18:35","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/dao/IDAO.sol","file":"../../dao/IDAO.sol","id":3878,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3938,"sourceUnit":2539,"src":"174:40:35","symbolAliases":[{"foreign":{"id":3877,"name":"IDAO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2538,"src":"182:4:35","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/permission/auth/auth.sol","file":"./auth.sol","id":3880,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3938,"sourceUnit":3988,"src":"215:33:35","symbolAliases":[{"foreign":{"id":3879,"name":"_auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3987,"src":"223:5:35","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":3882,"name":"ContextUpgradeable","nameLocations":["703:18:35"],"nodeType":"IdentifierPath","referencedDeclaration":1052,"src":"703:18:35"},"id":3883,"nodeType":"InheritanceSpecifier","src":"703:18:35"}],"canonicalName":"DaoAuthorizableUpgradeable","contractDependencies":[],"contractKind":"contract","documentation":{"id":3881,"nodeType":"StructuredDocumentation","src":"250:405:35","text":"@title DaoAuthorizableUpgradeable\n @author Aragon X - 2022-2023\n @notice An abstract contract providing a meta-transaction compatible modifier for upgradeable or cloneable contracts to authorize function calls through an associated DAO.\n @dev Make sure to call `__DaoAuthorizableUpgradeable_init` during initialization of the inheriting contract.\n @custom:security-contact sirt@aragon.org"},"fullyImplemented":true,"id":3937,"linearizedBaseContracts":[3937,1052,534],"name":"DaoAuthorizableUpgradeable","nameLocation":"673:26:35","nodeType":"ContractDefinition","nodes":[{"constant":false,"documentation":{"id":3884,"nodeType":"StructuredDocumentation","src":"728:80:35","text":"@notice The associated DAO managing the permissions of inheriting contracts."},"id":3887,"mutability":"mutable","name":"dao_","nameLocation":"826:4:35","nodeType":"VariableDeclaration","scope":3937,"src":"813:17:35","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"},"typeName":{"id":3886,"nodeType":"UserDefinedTypeName","pathNode":{"id":3885,"name":"IDAO","nameLocations":["813:4:35"],"nodeType":"IdentifierPath","referencedDeclaration":2538,"src":"813:4:35"},"referencedDeclaration":2538,"src":"813:4:35","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}},"visibility":"private"},{"body":{"id":3900,"nodeType":"Block","src":"1090:28:35","statements":[{"expression":{"id":3898,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3896,"name":"dao_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3887,"src":"1100:4:35","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3897,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3891,"src":"1107:4:35","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}},"src":"1100:11:35","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}},"id":3899,"nodeType":"ExpressionStatement","src":"1100:11:35"}]},"documentation":{"id":3888,"nodeType":"StructuredDocumentation","src":"837:115:35","text":"@notice Initializes the contract by setting the associated DAO.\n @param _dao The associated DAO address."},"id":3901,"implemented":true,"kind":"function","modifiers":[{"id":3894,"kind":"modifierInvocation","modifierName":{"id":3893,"name":"onlyInitializing","nameLocations":["1073:16:35"],"nodeType":"IdentifierPath","referencedDeclaration":479,"src":"1073:16:35"},"nodeType":"ModifierInvocation","src":"1073:16:35"}],"name":"__DaoAuthorizableUpgradeable_init","nameLocation":"1019:33:35","nodeType":"FunctionDefinition","parameters":{"id":3892,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3891,"mutability":"mutable","name":"_dao","nameLocation":"1058:4:35","nodeType":"VariableDeclaration","scope":3901,"src":"1053:9:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"},"typeName":{"id":3890,"nodeType":"UserDefinedTypeName","pathNode":{"id":3889,"name":"IDAO","nameLocations":["1053:4:35"],"nodeType":"IdentifierPath","referencedDeclaration":2538,"src":"1053:4:35"},"referencedDeclaration":2538,"src":"1053:4:35","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}},"visibility":"internal"}],"src":"1052:11:35"},"returnParameters":{"id":3895,"nodeType":"ParameterList","parameters":[],"src":"1090:0:35"},"scope":3937,"src":"1010:108:35","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":3910,"nodeType":"Block","src":"1242:28:35","statements":[{"expression":{"id":3908,"name":"dao_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3887,"src":"1259:4:35","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}},"functionReturnParameters":3907,"id":3909,"nodeType":"Return","src":"1252:11:35"}]},"documentation":{"id":3902,"nodeType":"StructuredDocumentation","src":"1124:71:35","text":"@notice Returns the DAO contract.\n @return The DAO contract."},"functionSelector":"4162169f","id":3911,"implemented":true,"kind":"function","modifiers":[],"name":"dao","nameLocation":"1209:3:35","nodeType":"FunctionDefinition","parameters":{"id":3903,"nodeType":"ParameterList","parameters":[],"src":"1212:2:35"},"returnParameters":{"id":3907,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3906,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3911,"src":"1236:4:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"},"typeName":{"id":3905,"nodeType":"UserDefinedTypeName","pathNode":{"id":3904,"name":"IDAO","nameLocations":["1236:4:35"],"nodeType":"IdentifierPath","referencedDeclaration":2538,"src":"1236:4:35"},"referencedDeclaration":2538,"src":"1236:4:35","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}},"visibility":"internal"}],"src":"1235:6:35"},"scope":3937,"src":"1200:70:35","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":3930,"nodeType":"Block","src":"1600:95:35","statements":[{"expression":{"arguments":[{"id":3917,"name":"dao_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3887,"src":"1616:4:35","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}},{"arguments":[{"id":3920,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967268,"src":"1630:4:35","typeDescriptions":{"typeIdentifier":"t_contract$_DaoAuthorizableUpgradeable_$3937","typeString":"contract DaoAuthorizableUpgradeable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_DaoAuthorizableUpgradeable_$3937","typeString":"contract DaoAuthorizableUpgradeable"}],"id":3919,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1622:7:35","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3918,"name":"address","nodeType":"ElementaryTypeName","src":"1622:7:35","typeDescriptions":{}}},"id":3921,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1622:13:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[],"expression":{"argumentTypes":[],"id":3922,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1029,"src":"1637:10:35","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":3923,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1637:12:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3924,"name":"_permissionId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3914,"src":"1651:13:35","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[],"expression":{"argumentTypes":[],"id":3925,"name":"_msgData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1038,"src":"1666:8:35","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bytes_calldata_ptr_$","typeString":"function () view returns (bytes calldata)"}},"id":3926,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1666:10:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":3916,"name":"_auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3987,"src":"1610:5:35","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_IDAO_$2538_$_t_address_$_t_address_$_t_bytes32_$_t_bytes_calldata_ptr_$returns$__$","typeString":"function (contract IDAO,address,address,bytes32,bytes calldata) view"}},"id":3927,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1610:67:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3928,"nodeType":"ExpressionStatement","src":"1610:67:35"},{"id":3929,"nodeType":"PlaceholderStatement","src":"1687:1:35"}]},"documentation":{"id":3912,"nodeType":"StructuredDocumentation","src":"1276:282:35","text":"@notice A modifier to make functions on inheriting contracts authorized. Permissions to call the function are checked through the associated DAO's permission manager.\n @param _permissionId The permission identifier required to call the method this modifier is applied to."},"id":3931,"name":"auth","nameLocation":"1572:4:35","nodeType":"ModifierDefinition","parameters":{"id":3915,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3914,"mutability":"mutable","name":"_permissionId","nameLocation":"1585:13:35","nodeType":"VariableDeclaration","scope":3931,"src":"1577:21:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3913,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1577:7:35","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1576:23:35"},"src":"1563:132:35","virtual":false,"visibility":"internal"},{"constant":false,"documentation":{"id":3932,"nodeType":"StructuredDocumentation","src":"1701:273:35","text":"@notice This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain (see [OpenZeppelin's guide about storage gaps](https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps))."},"id":3936,"mutability":"mutable","name":"__gap","nameLocation":"1999:5:35","nodeType":"VariableDeclaration","scope":3937,"src":"1979:25:35","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$49_storage","typeString":"uint256[49]"},"typeName":{"baseType":{"id":3933,"name":"uint256","nodeType":"ElementaryTypeName","src":"1979:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3935,"length":{"hexValue":"3439","id":3934,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1987:2:35","typeDescriptions":{"typeIdentifier":"t_rational_49_by_1","typeString":"int_const 49"},"value":"49"},"nodeType":"ArrayTypeName","src":"1979:11:35","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$49_storage_ptr","typeString":"uint256[49]"}},"visibility":"private"}],"scope":3938,"src":"655:1352:35","usedErrors":[]}],"src":"47:1961:35"},"id":35},"src/permission/auth/auth.sol":{"ast":{"absolutePath":"src/permission/auth/auth.sol","exportedSymbols":{"DaoUnauthorized":[3952],"IDAO":[2538],"_auth":[3987]},"id":3988,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":3939,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:36"},{"absolutePath":"src/dao/IDAO.sol","file":"../../dao/IDAO.sol","id":3941,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3988,"sourceUnit":2539,"src":"72:40:36","symbolAliases":[{"foreign":{"id":3940,"name":"IDAO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2538,"src":"80:4:36","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"documentation":{"id":3942,"nodeType":"StructuredDocumentation","src":"114:289:36","text":"@notice Thrown if a call is unauthorized in the associated DAO.\n @param dao The associated DAO.\n @param where The context in which the authorization reverted.\n @param who The address (EOA or contract) missing the permission.\n @param permissionId The permission identifier."},"errorSelector":"32dbe3b4","id":3952,"name":"DaoUnauthorized","nameLocation":"409:15:36","nodeType":"ErrorDefinition","parameters":{"id":3951,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3944,"mutability":"mutable","name":"dao","nameLocation":"433:3:36","nodeType":"VariableDeclaration","scope":3952,"src":"425:11:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3943,"name":"address","nodeType":"ElementaryTypeName","src":"425:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3946,"mutability":"mutable","name":"where","nameLocation":"446:5:36","nodeType":"VariableDeclaration","scope":3952,"src":"438:13:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3945,"name":"address","nodeType":"ElementaryTypeName","src":"438:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3948,"mutability":"mutable","name":"who","nameLocation":"461:3:36","nodeType":"VariableDeclaration","scope":3952,"src":"453:11:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3947,"name":"address","nodeType":"ElementaryTypeName","src":"453:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3950,"mutability":"mutable","name":"permissionId","nameLocation":"474:12:36","nodeType":"VariableDeclaration","scope":3952,"src":"466:20:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3949,"name":"bytes32","nodeType":"ElementaryTypeName","src":"466:7:36","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"424:63:36"},"src":"403:85:36"},{"body":{"id":3986,"nodeType":"Block","src":"1169:235:36","statements":[{"condition":{"id":3974,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"1179:55:36","subExpression":{"arguments":[{"id":3969,"name":"_where","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3958,"src":"1199:6:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3970,"name":"_who","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3960,"src":"1207:4:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3971,"name":"_permissionId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3962,"src":"1213:13:36","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3972,"name":"_data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3964,"src":"1228:5:36","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"id":3967,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3956,"src":"1180:4:36","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}},"id":3968,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1185:13:36","memberName":"hasPermission","nodeType":"MemberAccess","referencedDeclaration":2411,"src":"1180:18:36","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (address,address,bytes32,bytes memory) view external returns (bool)"}},"id":3973,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1180:54:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3985,"nodeType":"IfStatement","src":"1175:226:36","trueBody":{"errorCall":{"arguments":[{"arguments":[{"id":3978,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3956,"src":"1294:4:36","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}],"id":3977,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1286:7:36","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3976,"name":"address","nodeType":"ElementaryTypeName","src":"1286:7:36","typeDescriptions":{}}},"id":3979,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1286:13:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3980,"name":"_where","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3958,"src":"1320:6:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3981,"name":"_who","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3960,"src":"1345:4:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3982,"name":"_permissionId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3962,"src":"1377:13:36","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":3975,"name":"DaoUnauthorized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3952,"src":"1251:15:36","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_address_$_t_address_$_t_bytes32_$returns$__$","typeString":"function (address,address,address,bytes32) pure"}},"id":3983,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":["1281:3:36","1313:5:36","1340:3:36","1363:12:36"],"names":["dao","where","who","permissionId"],"nodeType":"FunctionCall","src":"1251:150:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3984,"nodeType":"RevertStatement","src":"1244:157:36"}}]},"documentation":{"id":3953,"nodeType":"StructuredDocumentation","src":"490:551:36","text":"@notice A free function checking if a caller is granted permissions on a target contract via a permission identifier that redirects the approval to a `PermissionCondition` if this was specified in the setup.\n @param _where The address of the target contract for which `who` receives permission.\n @param _who The address (EOA or contract) owning the permission.\n @param _permissionId The permission identifier.\n @param _data The optional data passed to the `PermissionCondition` registered.\n @custom:security-contact sirt@aragon.org"},"id":3987,"implemented":true,"kind":"freeFunction","modifiers":[],"name":"_auth","nameLocation":"1050:5:36","nodeType":"FunctionDefinition","parameters":{"id":3965,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3956,"mutability":"mutable","name":"_dao","nameLocation":"1066:4:36","nodeType":"VariableDeclaration","scope":3987,"src":"1061:9:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"},"typeName":{"id":3955,"nodeType":"UserDefinedTypeName","pathNode":{"id":3954,"name":"IDAO","nameLocations":["1061:4:36"],"nodeType":"IdentifierPath","referencedDeclaration":2538,"src":"1061:4:36"},"referencedDeclaration":2538,"src":"1061:4:36","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}},"visibility":"internal"},{"constant":false,"id":3958,"mutability":"mutable","name":"_where","nameLocation":"1084:6:36","nodeType":"VariableDeclaration","scope":3987,"src":"1076:14:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3957,"name":"address","nodeType":"ElementaryTypeName","src":"1076:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3960,"mutability":"mutable","name":"_who","nameLocation":"1104:4:36","nodeType":"VariableDeclaration","scope":3987,"src":"1096:12:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3959,"name":"address","nodeType":"ElementaryTypeName","src":"1096:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3962,"mutability":"mutable","name":"_permissionId","nameLocation":"1122:13:36","nodeType":"VariableDeclaration","scope":3987,"src":"1114:21:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3961,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1114:7:36","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3964,"mutability":"mutable","name":"_data","nameLocation":"1156:5:36","nodeType":"VariableDeclaration","scope":3987,"src":"1141:20:36","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":3963,"name":"bytes","nodeType":"ElementaryTypeName","src":"1141:5:36","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1055:108:36"},"returnParameters":{"id":3966,"nodeType":"ParameterList","parameters":[],"src":"1169:0:36"},"scope":3988,"src":"1041:363:36","stateMutability":"view","virtual":false,"visibility":"internal"}],"src":"47:1358:36"},"id":36},"src/plugin/IPlugin.sol":{"ast":{"absolutePath":"src/plugin/IPlugin.sol","exportedSymbols":{"IPlugin":[4002]},"id":4003,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":3989,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:37"},{"abstract":false,"baseContracts":[],"canonicalName":"IPlugin","contractDependencies":[],"contractKind":"interface","documentation":{"id":3990,"nodeType":"StructuredDocumentation","src":"72:155:37","text":"@title IPlugin\n @author Aragon X - 2022-2023\n @notice An interface defining the traits of a plugin.\n @custom:security-contact sirt@aragon.org"},"fullyImplemented":false,"id":4002,"linearizedBaseContracts":[4002],"name":"IPlugin","nameLocation":"237:7:37","nodeType":"ContractDefinition","nodes":[{"canonicalName":"IPlugin.PluginType","id":3994,"members":[{"id":3991,"name":"UUPS","nameLocation":"277:4:37","nodeType":"EnumValue","src":"277:4:37"},{"id":3992,"name":"Cloneable","nameLocation":"291:9:37","nodeType":"EnumValue","src":"291:9:37"},{"id":3993,"name":"Constructable","nameLocation":"310:13:37","nodeType":"EnumValue","src":"310:13:37"}],"name":"PluginType","nameLocation":"256:10:37","nodeType":"EnumDefinition","src":"251:78:37"},{"documentation":{"id":3995,"nodeType":"StructuredDocumentation","src":"335:37:37","text":"@notice Returns the plugin's type"},"functionSelector":"41de6830","id":4001,"implemented":false,"kind":"function","modifiers":[],"name":"pluginType","nameLocation":"386:10:37","nodeType":"FunctionDefinition","parameters":{"id":3996,"nodeType":"ParameterList","parameters":[],"src":"396:2:37"},"returnParameters":{"id":4000,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3999,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4001,"src":"422:10:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_PluginType_$3994","typeString":"enum IPlugin.PluginType"},"typeName":{"id":3998,"nodeType":"UserDefinedTypeName","pathNode":{"id":3997,"name":"PluginType","nameLocations":["422:10:37"],"nodeType":"IdentifierPath","referencedDeclaration":3994,"src":"422:10:37"},"referencedDeclaration":3994,"src":"422:10:37","typeDescriptions":{"typeIdentifier":"t_enum$_PluginType_$3994","typeString":"enum IPlugin.PluginType"}},"visibility":"internal"}],"src":"421:12:37"},"scope":4002,"src":"377:57:37","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":4003,"src":"227:209:37","usedErrors":[]}],"src":"47:390:37"},"id":37},"src/plugin/Plugin.sol":{"ast":{"absolutePath":"src/plugin/Plugin.sol","exportedSymbols":{"DaoAuthorizable":[3872],"ERC165":[2375],"IDAO":[2538],"IPlugin":[4002],"IProtocolVersion":[5114],"Plugin":[4171],"ProtocolVersion":[5136]},"id":4172,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":4004,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:38"},{"absolutePath":"@openzeppelin/contracts/utils/introspection/ERC165.sol","file":"@openzeppelin/contracts/utils/introspection/ERC165.sol","id":4006,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4172,"sourceUnit":2376,"src":"72:78:38","symbolAliases":[{"foreign":{"id":4005,"name":"ERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2375,"src":"80:6:38","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/utils/versioning/IProtocolVersion.sol","file":"../utils/versioning/IProtocolVersion.sol","id":4008,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4172,"sourceUnit":5115,"src":"152:74:38","symbolAliases":[{"foreign":{"id":4007,"name":"IProtocolVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5114,"src":"160:16:38","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/utils/versioning/ProtocolVersion.sol","file":"../utils/versioning/ProtocolVersion.sol","id":4010,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4172,"sourceUnit":5137,"src":"227:72:38","symbolAliases":[{"foreign":{"id":4009,"name":"ProtocolVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5136,"src":"235:15:38","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/permission/auth/DaoAuthorizable.sol","file":"../permission/auth/DaoAuthorizable.sol","id":4012,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4172,"sourceUnit":3873,"src":"300:71:38","symbolAliases":[{"foreign":{"id":4011,"name":"DaoAuthorizable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3872,"src":"308:15:38","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/dao/IDAO.sol","file":"../dao/IDAO.sol","id":4014,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4172,"sourceUnit":2539,"src":"372:37:38","symbolAliases":[{"foreign":{"id":4013,"name":"IDAO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2538,"src":"380:4:38","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/plugin/IPlugin.sol","file":"./IPlugin.sol","id":4016,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4172,"sourceUnit":4003,"src":"410:38:38","symbolAliases":[{"foreign":{"id":4015,"name":"IPlugin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4002,"src":"418:7:38","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":4018,"name":"IPlugin","nameLocations":["701:7:38"],"nodeType":"IdentifierPath","referencedDeclaration":4002,"src":"701:7:38"},"id":4019,"nodeType":"InheritanceSpecifier","src":"701:7:38"},{"baseName":{"id":4020,"name":"ERC165","nameLocations":["710:6:38"],"nodeType":"IdentifierPath","referencedDeclaration":2375,"src":"710:6:38"},"id":4021,"nodeType":"InheritanceSpecifier","src":"710:6:38"},{"baseName":{"id":4022,"name":"DaoAuthorizable","nameLocations":["718:15:38"],"nodeType":"IdentifierPath","referencedDeclaration":3872,"src":"718:15:38"},"id":4023,"nodeType":"InheritanceSpecifier","src":"718:15:38"},{"baseName":{"id":4024,"name":"ProtocolVersion","nameLocations":["735:15:38"],"nodeType":"IdentifierPath","referencedDeclaration":5136,"src":"735:15:38"},"id":4025,"nodeType":"InheritanceSpecifier","src":"735:15:38"}],"canonicalName":"Plugin","contractDependencies":[],"contractKind":"contract","documentation":{"id":4017,"nodeType":"StructuredDocumentation","src":"450:223:38","text":"@title Plugin\n @author Aragon X - 2022-2023\n @notice An abstract, non-upgradeable contract to inherit from when creating a plugin being deployed via the `new` keyword.\n @custom:security-contact sirt@aragon.org"},"fullyImplemented":true,"id":4171,"linearizedBaseContracts":[4171,5136,5114,3872,2167,2375,2387,4002],"name":"Plugin","nameLocation":"691:6:38","nodeType":"ContractDefinition","nodes":[{"constant":false,"functionSelector":"d4b83992","id":4027,"mutability":"mutable","name":"target","nameLocation":"772:6:38","nodeType":"VariableDeclaration","scope":4171,"src":"757:21:38","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4026,"name":"address","nodeType":"ElementaryTypeName","src":"757:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"anonymous":false,"documentation":{"id":4028,"nodeType":"StructuredDocumentation","src":"785:45:38","text":"@dev Emitted each time the Target is set."},"eventSelector":"90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d6","id":4034,"name":"TargetSet","nameLocation":"841:9:38","nodeType":"EventDefinition","parameters":{"id":4033,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4030,"indexed":true,"mutability":"mutable","name":"previousTarget","nameLocation":"867:14:38","nodeType":"VariableDeclaration","scope":4034,"src":"851:30:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4029,"name":"address","nodeType":"ElementaryTypeName","src":"851:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4032,"indexed":true,"mutability":"mutable","name":"newTarget","nameLocation":"899:9:38","nodeType":"VariableDeclaration","scope":4034,"src":"883:25:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4031,"name":"address","nodeType":"ElementaryTypeName","src":"883:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"850:59:38"},"src":"835:75:38"},{"body":{"id":4044,"nodeType":"Block","src":"1068:2:38","statements":[]},"documentation":{"id":4035,"nodeType":"StructuredDocumentation","src":"916:102:38","text":"@notice Constructs the plugin by storing the associated DAO.\n @param _dao The DAO contract."},"id":4045,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":4041,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4038,"src":"1062:4:38","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}}],"id":4042,"kind":"baseConstructorSpecifier","modifierName":{"id":4040,"name":"DaoAuthorizable","nameLocations":["1046:15:38"],"nodeType":"IdentifierPath","referencedDeclaration":3872,"src":"1046:15:38"},"nodeType":"ModifierInvocation","src":"1046:21:38"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":4039,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4038,"mutability":"mutable","name":"_dao","nameLocation":"1040:4:38","nodeType":"VariableDeclaration","scope":4045,"src":"1035:9:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"},"typeName":{"id":4037,"nodeType":"UserDefinedTypeName","pathNode":{"id":4036,"name":"IDAO","nameLocations":["1035:4:38"],"nodeType":"IdentifierPath","referencedDeclaration":2538,"src":"1035:4:38"},"referencedDeclaration":2538,"src":"1035:4:38","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}},"visibility":"internal"}],"src":"1034:11:38"},"returnParameters":{"id":4043,"nodeType":"ParameterList","parameters":[],"src":"1068:0:38"},"scope":4171,"src":"1023:47:38","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[4001],"body":{"id":4056,"nodeType":"Block","src":"1168:48:38","statements":[{"expression":{"expression":{"id":4053,"name":"PluginType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3994,"src":"1185:10:38","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_PluginType_$3994_$","typeString":"type(enum IPlugin.PluginType)"}},"id":4054,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1196:13:38","memberName":"Constructable","nodeType":"MemberAccess","referencedDeclaration":3993,"src":"1185:24:38","typeDescriptions":{"typeIdentifier":"t_enum$_PluginType_$3994","typeString":"enum IPlugin.PluginType"}},"functionReturnParameters":4052,"id":4055,"nodeType":"Return","src":"1178:31:38"}]},"documentation":{"id":4046,"nodeType":"StructuredDocumentation","src":"1076:23:38","text":"@inheritdoc IPlugin"},"functionSelector":"41de6830","id":4057,"implemented":true,"kind":"function","modifiers":[],"name":"pluginType","nameLocation":"1113:10:38","nodeType":"FunctionDefinition","overrides":{"id":4048,"nodeType":"OverrideSpecifier","overrides":[],"src":"1138:8:38"},"parameters":{"id":4047,"nodeType":"ParameterList","parameters":[],"src":"1123:2:38"},"returnParameters":{"id":4052,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4051,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4057,"src":"1156:10:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_PluginType_$3994","typeString":"enum IPlugin.PluginType"},"typeName":{"id":4050,"nodeType":"UserDefinedTypeName","pathNode":{"id":4049,"name":"PluginType","nameLocations":["1156:10:38"],"nodeType":"IdentifierPath","referencedDeclaration":3994,"src":"1156:10:38"},"referencedDeclaration":3994,"src":"1156:10:38","typeDescriptions":{"typeIdentifier":"t_enum$_PluginType_$3994","typeString":"enum IPlugin.PluginType"}},"visibility":"internal"}],"src":"1155:12:38"},"scope":4171,"src":"1104:112:38","stateMutability":"pure","virtual":false,"visibility":"public"},{"body":{"id":4076,"nodeType":"Block","src":"1387:123:38","statements":[{"assignments":[4064],"declarations":[{"constant":false,"id":4064,"mutability":"mutable","name":"previousTarget","nameLocation":"1405:14:38","nodeType":"VariableDeclaration","scope":4076,"src":"1397:22:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4063,"name":"address","nodeType":"ElementaryTypeName","src":"1397:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":4066,"initialValue":{"id":4065,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4027,"src":"1422:6:38","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"1397:31:38"},{"expression":{"id":4069,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4067,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4027,"src":"1438:6:38","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":4068,"name":"_target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4060,"src":"1447:7:38","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1438:16:38","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":4070,"nodeType":"ExpressionStatement","src":"1438:16:38"},{"eventCall":{"arguments":[{"id":4072,"name":"previousTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4064,"src":"1479:14:38","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4073,"name":"_target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4060,"src":"1495:7:38","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":4071,"name":"TargetSet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4034,"src":"1469:9:38","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":4074,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1469:34:38","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4075,"nodeType":"EmitStatement","src":"1464:39:38"}]},"documentation":{"id":4058,"nodeType":"StructuredDocumentation","src":"1222:117:38","text":"@dev Sets the target to a new target (`newTarget`).\n @notice Can only be called by the current owner. TODO"},"functionSelector":"776d1a01","id":4077,"implemented":true,"kind":"function","modifiers":[],"name":"setTarget","nameLocation":"1353:9:38","nodeType":"FunctionDefinition","parameters":{"id":4061,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4060,"mutability":"mutable","name":"_target","nameLocation":"1371:7:38","nodeType":"VariableDeclaration","scope":4077,"src":"1363:15:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4059,"name":"address","nodeType":"ElementaryTypeName","src":"1363:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1362:17:38"},"returnParameters":{"id":4062,"nodeType":"ParameterList","parameters":[],"src":"1387:0:38"},"scope":4171,"src":"1344:166:38","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[2374],"body":{"id":4105,"nodeType":"Block","src":"1810:196:38","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":4103,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":4098,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":4091,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4086,"name":"_interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4080,"src":"1839:12:38","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":4088,"name":"IPlugin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4002,"src":"1860:7:38","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IPlugin_$4002_$","typeString":"type(contract IPlugin)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IPlugin_$4002_$","typeString":"type(contract IPlugin)"}],"id":4087,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"1855:4:38","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":4089,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1855:13:38","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IPlugin_$4002","typeString":"type(contract IPlugin)"}},"id":4090,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1869:11:38","memberName":"interfaceId","nodeType":"MemberAccess","src":"1855:25:38","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"1839:41:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":4097,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4092,"name":"_interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4080,"src":"1896:12:38","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":4094,"name":"IProtocolVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5114,"src":"1917:16:38","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IProtocolVersion_$5114_$","typeString":"type(contract IProtocolVersion)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IProtocolVersion_$5114_$","typeString":"type(contract IProtocolVersion)"}],"id":4093,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"1912:4:38","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":4095,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1912:22:38","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IProtocolVersion_$5114","typeString":"type(contract IProtocolVersion)"}},"id":4096,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1935:11:38","memberName":"interfaceId","nodeType":"MemberAccess","src":"1912:34:38","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"1896:50:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1839:107:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":4101,"name":"_interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4080,"src":"1986:12:38","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":4099,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967271,"src":"1962:5:38","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_Plugin_$4171_$","typeString":"type(contract super Plugin)"}},"id":4100,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1968:17:38","memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":2374,"src":"1962:23:38","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bool_$","typeString":"function (bytes4) view returns (bool)"}},"id":4102,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1962:37:38","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1839:160:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":4085,"id":4104,"nodeType":"Return","src":"1820:179:38"}]},"documentation":{"id":4078,"nodeType":"StructuredDocumentation","src":"1516:197:38","text":"@notice Checks if this or the parent contract supports an interface by its ID.\n @param _interfaceId The ID of the interface.\n @return Returns `true` if the interface is supported."},"functionSelector":"01ffc9a7","id":4106,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"1727:17:38","nodeType":"FunctionDefinition","overrides":{"id":4082,"nodeType":"OverrideSpecifier","overrides":[],"src":"1786:8:38"},"parameters":{"id":4081,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4080,"mutability":"mutable","name":"_interfaceId","nameLocation":"1752:12:38","nodeType":"VariableDeclaration","scope":4106,"src":"1745:19:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":4079,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1745:6:38","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"1744:21:38"},"returnParameters":{"id":4085,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4084,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4106,"src":"1804:4:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4083,"name":"bool","nodeType":"ElementaryTypeName","src":"1804:4:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1803:6:38"},"scope":4171,"src":"1718:288:38","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":4136,"nodeType":"Block","src":"2610:102:38","statements":[{"expression":{"id":4134,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":4123,"name":"execResults","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4119,"src":"2621:11:38","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}},{"id":4124,"name":"failureMap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4121,"src":"2634:10:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4125,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"2620:25:38","typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$_t_uint256_$","typeString":"tuple(bytes memory[] memory,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4130,"name":"_callId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4109,"src":"2669:7:38","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":4131,"name":"_actions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4113,"src":"2678:8:38","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Action_$2397_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IDAO.Action calldata[] calldata"}},{"id":4132,"name":"_allowFailureMap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4115,"src":"2688:16:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_array$_t_struct$_Action_$2397_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IDAO.Action calldata[] calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":4127,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4027,"src":"2653:6:38","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4126,"name":"IDAO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2538,"src":"2648:4:38","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IDAO_$2538_$","typeString":"type(contract IDAO)"}},"id":4128,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2648:12:38","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}},"id":4129,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2661:7:38","memberName":"execute","nodeType":"MemberAccess","referencedDeclaration":2439,"src":"2648:20:38","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes32_$_t_array$_t_struct$_Action_$2397_memory_ptr_$dyn_memory_ptr_$_t_uint256_$returns$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$_t_uint256_$","typeString":"function (bytes32,struct IDAO.Action memory[] memory,uint256) external returns (bytes memory[] memory,uint256)"}},"id":4133,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2648:57:38","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$_t_uint256_$","typeString":"tuple(bytes memory[] memory,uint256)"}},"src":"2620:85:38","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4135,"nodeType":"ExpressionStatement","src":"2620:85:38"}]},"documentation":{"id":4107,"nodeType":"StructuredDocumentation","src":"2012:395:38","text":"@notice Forwards the actions to the currently set `target` for the execution.\n @param _callId Identifier for this execution.\n @param _actions actions that will be eventually called.\n @param _allowFailureMap Bitmap-encoded number. TODO:\n @return execResults address of the implementation contract.\n @return failureMap address of the implementation contract."},"id":4137,"implemented":true,"kind":"function","modifiers":[],"name":"_execute","nameLocation":"2421:8:38","nodeType":"FunctionDefinition","parameters":{"id":4116,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4109,"mutability":"mutable","name":"_callId","nameLocation":"2447:7:38","nodeType":"VariableDeclaration","scope":4137,"src":"2439:15:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4108,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2439:7:38","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":4113,"mutability":"mutable","name":"_actions","nameLocation":"2487:8:38","nodeType":"VariableDeclaration","scope":4137,"src":"2464:31:38","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Action_$2397_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IDAO.Action[]"},"typeName":{"baseType":{"id":4111,"nodeType":"UserDefinedTypeName","pathNode":{"id":4110,"name":"IDAO.Action","nameLocations":["2464:4:38","2469:6:38"],"nodeType":"IdentifierPath","referencedDeclaration":2397,"src":"2464:11:38"},"referencedDeclaration":2397,"src":"2464:11:38","typeDescriptions":{"typeIdentifier":"t_struct$_Action_$2397_storage_ptr","typeString":"struct IDAO.Action"}},"id":4112,"nodeType":"ArrayTypeName","src":"2464:13:38","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Action_$2397_storage_$dyn_storage_ptr","typeString":"struct IDAO.Action[]"}},"visibility":"internal"},{"constant":false,"id":4115,"mutability":"mutable","name":"_allowFailureMap","nameLocation":"2513:16:38","nodeType":"VariableDeclaration","scope":4137,"src":"2505:24:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4114,"name":"uint256","nodeType":"ElementaryTypeName","src":"2505:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2429:106:38"},"returnParameters":{"id":4122,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4119,"mutability":"mutable","name":"execResults","nameLocation":"2577:11:38","nodeType":"VariableDeclaration","scope":4137,"src":"2562:26:38","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":4117,"name":"bytes","nodeType":"ElementaryTypeName","src":"2562:5:38","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":4118,"nodeType":"ArrayTypeName","src":"2562:7:38","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"},{"constant":false,"id":4121,"mutability":"mutable","name":"failureMap","nameLocation":"2598:10:38","nodeType":"VariableDeclaration","scope":4137,"src":"2590:18:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4120,"name":"uint256","nodeType":"ElementaryTypeName","src":"2590:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2561:48:38"},"scope":4171,"src":"2412:300:38","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":4169,"nodeType":"Block","src":"3395:103:38","statements":[{"expression":{"id":4167,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":4156,"name":"execResults","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4152,"src":"3406:11:38","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}},{"id":4157,"name":"failureMap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4154,"src":"3419:10:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4158,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"3405:25:38","typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$_t_uint256_$","typeString":"tuple(bytes memory[] memory,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4163,"name":"_callId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4142,"src":"3455:7:38","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":4164,"name":"_actions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4146,"src":"3464:8:38","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Action_$2397_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IDAO.Action calldata[] calldata"}},{"id":4165,"name":"_allowFailureMap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4148,"src":"3474:16:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_array$_t_struct$_Action_$2397_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IDAO.Action calldata[] calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":4160,"name":"_target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4140,"src":"3438:7:38","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4159,"name":"IDAO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2538,"src":"3433:4:38","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IDAO_$2538_$","typeString":"type(contract IDAO)"}},"id":4161,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3433:13:38","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}},"id":4162,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3447:7:38","memberName":"execute","nodeType":"MemberAccess","referencedDeclaration":2439,"src":"3433:21:38","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes32_$_t_array$_t_struct$_Action_$2397_memory_ptr_$dyn_memory_ptr_$_t_uint256_$returns$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$_t_uint256_$","typeString":"function (bytes32,struct IDAO.Action memory[] memory,uint256) external returns (bytes memory[] memory,uint256)"}},"id":4166,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3433:58:38","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$_t_uint256_$","typeString":"tuple(bytes memory[] memory,uint256)"}},"src":"3405:86:38","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4168,"nodeType":"ExpressionStatement","src":"3405:86:38"}]},"documentation":{"id":4138,"nodeType":"StructuredDocumentation","src":"2718:449:38","text":"@notice Forwards the actions to the `target` for the execution.\n @param _target Forwards the actions to the specific target.\n @param _callId Identifier for this execution.\n @param _actions actions that will be eventually called.\n @param _allowFailureMap Bitmap-encoded number. TODO:\n @return execResults address of the implementation contract.\n @return failureMap address of the implementation contract."},"id":4170,"implemented":true,"kind":"function","modifiers":[],"name":"_execute","nameLocation":"3181:8:38","nodeType":"FunctionDefinition","parameters":{"id":4149,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4140,"mutability":"mutable","name":"_target","nameLocation":"3207:7:38","nodeType":"VariableDeclaration","scope":4170,"src":"3199:15:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4139,"name":"address","nodeType":"ElementaryTypeName","src":"3199:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4142,"mutability":"mutable","name":"_callId","nameLocation":"3232:7:38","nodeType":"VariableDeclaration","scope":4170,"src":"3224:15:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4141,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3224:7:38","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":4146,"mutability":"mutable","name":"_actions","nameLocation":"3272:8:38","nodeType":"VariableDeclaration","scope":4170,"src":"3249:31:38","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Action_$2397_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IDAO.Action[]"},"typeName":{"baseType":{"id":4144,"nodeType":"UserDefinedTypeName","pathNode":{"id":4143,"name":"IDAO.Action","nameLocations":["3249:4:38","3254:6:38"],"nodeType":"IdentifierPath","referencedDeclaration":2397,"src":"3249:11:38"},"referencedDeclaration":2397,"src":"3249:11:38","typeDescriptions":{"typeIdentifier":"t_struct$_Action_$2397_storage_ptr","typeString":"struct IDAO.Action"}},"id":4145,"nodeType":"ArrayTypeName","src":"3249:13:38","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Action_$2397_storage_$dyn_storage_ptr","typeString":"struct IDAO.Action[]"}},"visibility":"internal"},{"constant":false,"id":4148,"mutability":"mutable","name":"_allowFailureMap","nameLocation":"3298:16:38","nodeType":"VariableDeclaration","scope":4170,"src":"3290:24:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4147,"name":"uint256","nodeType":"ElementaryTypeName","src":"3290:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3189:131:38"},"returnParameters":{"id":4155,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4152,"mutability":"mutable","name":"execResults","nameLocation":"3362:11:38","nodeType":"VariableDeclaration","scope":4170,"src":"3347:26:38","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":4150,"name":"bytes","nodeType":"ElementaryTypeName","src":"3347:5:38","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":4151,"nodeType":"ArrayTypeName","src":"3347:7:38","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"},{"constant":false,"id":4154,"mutability":"mutable","name":"failureMap","nameLocation":"3383:10:38","nodeType":"VariableDeclaration","scope":4170,"src":"3375:18:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4153,"name":"uint256","nodeType":"ElementaryTypeName","src":"3375:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3346:48:38"},"scope":4171,"src":"3172:326:38","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":4172,"src":"673:2827:38","usedErrors":[]}],"src":"47:3454:38"},"id":38},"src/plugin/PluginCloneable.sol":{"ast":{"absolutePath":"src/plugin/PluginCloneable.sol","exportedSymbols":{"DaoAuthorizableUpgradeable":[3937],"ERC165Upgradeable":[1281],"IDAO":[2538],"IPlugin":[4002],"IProtocolVersion":[5114],"PluginCloneable":[4351],"ProtocolVersion":[5136]},"id":4352,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":4173,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:39"},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol","file":"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol","id":4175,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4352,"sourceUnit":1282,"src":"72:112:39","symbolAliases":[{"foreign":{"id":4174,"name":"ERC165Upgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1281,"src":"80:17:39","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/utils/versioning/IProtocolVersion.sol","file":"../utils/versioning/IProtocolVersion.sol","id":4177,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4352,"sourceUnit":5115,"src":"186:74:39","symbolAliases":[{"foreign":{"id":4176,"name":"IProtocolVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5114,"src":"194:16:39","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/utils/versioning/ProtocolVersion.sol","file":"../utils/versioning/ProtocolVersion.sol","id":4179,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4352,"sourceUnit":5137,"src":"261:72:39","symbolAliases":[{"foreign":{"id":4178,"name":"ProtocolVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5136,"src":"269:15:39","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/permission/auth/DaoAuthorizableUpgradeable.sol","file":"../permission/auth/DaoAuthorizableUpgradeable.sol","id":4181,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4352,"sourceUnit":3938,"src":"334:93:39","symbolAliases":[{"foreign":{"id":4180,"name":"DaoAuthorizableUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3937,"src":"342:26:39","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/dao/IDAO.sol","file":"../dao/IDAO.sol","id":4183,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4352,"sourceUnit":2539,"src":"428:37:39","symbolAliases":[{"foreign":{"id":4182,"name":"IDAO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2538,"src":"436:4:39","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/plugin/IPlugin.sol","file":"./IPlugin.sol","id":4185,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4352,"sourceUnit":4003,"src":"466:38:39","symbolAliases":[{"foreign":{"id":4184,"name":"IPlugin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4002,"src":"474:7:39","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":4187,"name":"IPlugin","nameLocations":["846:7:39"],"nodeType":"IdentifierPath","referencedDeclaration":4002,"src":"846:7:39"},"id":4188,"nodeType":"InheritanceSpecifier","src":"846:7:39"},{"baseName":{"id":4189,"name":"ERC165Upgradeable","nameLocations":["859:17:39"],"nodeType":"IdentifierPath","referencedDeclaration":1281,"src":"859:17:39"},"id":4190,"nodeType":"InheritanceSpecifier","src":"859:17:39"},{"baseName":{"id":4191,"name":"DaoAuthorizableUpgradeable","nameLocations":["882:26:39"],"nodeType":"IdentifierPath","referencedDeclaration":3937,"src":"882:26:39"},"id":4192,"nodeType":"InheritanceSpecifier","src":"882:26:39"},{"baseName":{"id":4193,"name":"ProtocolVersion","nameLocations":["914:15:39"],"nodeType":"IdentifierPath","referencedDeclaration":5136,"src":"914:15:39"},"id":4194,"nodeType":"InheritanceSpecifier","src":"914:15:39"}],"canonicalName":"PluginCloneable","contractDependencies":[],"contractKind":"contract","documentation":{"id":4186,"nodeType":"StructuredDocumentation","src":"506:299:39","text":"@title PluginCloneable\n @author Aragon X - 2022-2023\n @notice An abstract, non-upgradeable contract to inherit from when creating a plugin being deployed via the minimal clones pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)).\n @custom:security-contact sirt@aragon.org"},"fullyImplemented":true,"id":4351,"linearizedBaseContracts":[4351,5136,5114,3937,1052,1281,1293,534,4002],"name":"PluginCloneable","nameLocation":"823:15:39","nodeType":"ContractDefinition","nodes":[{"constant":false,"functionSelector":"d4b83992","id":4196,"mutability":"mutable","name":"target","nameLocation":"951:6:39","nodeType":"VariableDeclaration","scope":4351,"src":"936:21:39","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4195,"name":"address","nodeType":"ElementaryTypeName","src":"936:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"anonymous":false,"documentation":{"id":4197,"nodeType":"StructuredDocumentation","src":"964:45:39","text":"@dev Emitted each time the Target is set."},"eventSelector":"90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d6","id":4203,"name":"TargetSet","nameLocation":"1020:9:39","nodeType":"EventDefinition","parameters":{"id":4202,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4199,"indexed":true,"mutability":"mutable","name":"previousTarget","nameLocation":"1046:14:39","nodeType":"VariableDeclaration","scope":4203,"src":"1030:30:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4198,"name":"address","nodeType":"ElementaryTypeName","src":"1030:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4201,"indexed":true,"mutability":"mutable","name":"newTarget","nameLocation":"1078:9:39","nodeType":"VariableDeclaration","scope":4203,"src":"1062:25:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4200,"name":"address","nodeType":"ElementaryTypeName","src":"1062:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1029:59:39"},"src":"1014:75:39"},{"body":{"id":4210,"nodeType":"Block","src":"1280:39:39","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":4207,"name":"_disableInitializers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":515,"src":"1290:20:39","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":4208,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1290:22:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4209,"nodeType":"ExpressionStatement","src":"1290:22:39"}]},"documentation":{"id":4204,"nodeType":"StructuredDocumentation","src":"1095:166:39","text":"@notice Disables the initializers on the implementation contract to prevent it from being left uninitialized.\n @custom:oz-upgrades-unsafe-allow constructor"},"id":4211,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":4205,"nodeType":"ParameterList","parameters":[],"src":"1277:2:39"},"returnParameters":{"id":4206,"nodeType":"ParameterList","parameters":[],"src":"1280:0:39"},"scope":4351,"src":"1266:53:39","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":4224,"nodeType":"Block","src":"1563:56:39","statements":[{"expression":{"arguments":[{"id":4221,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4215,"src":"1607:4:39","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}],"id":4220,"name":"__DaoAuthorizableUpgradeable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3901,"src":"1573:33:39","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IDAO_$2538_$returns$__$","typeString":"function (contract IDAO)"}},"id":4222,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1573:39:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4223,"nodeType":"ExpressionStatement","src":"1573:39:39"}]},"documentation":{"id":4212,"nodeType":"StructuredDocumentation","src":"1325:103:39","text":"@notice Initializes the plugin by storing the associated DAO.\n @param _dao The DAO contract."},"id":4225,"implemented":true,"kind":"function","modifiers":[{"id":4218,"kind":"modifierInvocation","modifierName":{"id":4217,"name":"onlyInitializing","nameLocations":["1546:16:39"],"nodeType":"IdentifierPath","referencedDeclaration":479,"src":"1546:16:39"},"nodeType":"ModifierInvocation","src":"1546:16:39"}],"name":"__PluginCloneable_init","nameLocation":"1495:22:39","nodeType":"FunctionDefinition","parameters":{"id":4216,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4215,"mutability":"mutable","name":"_dao","nameLocation":"1523:4:39","nodeType":"VariableDeclaration","scope":4225,"src":"1518:9:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"},"typeName":{"id":4214,"nodeType":"UserDefinedTypeName","pathNode":{"id":4213,"name":"IDAO","nameLocations":["1518:4:39"],"nodeType":"IdentifierPath","referencedDeclaration":2538,"src":"1518:4:39"},"referencedDeclaration":2538,"src":"1518:4:39","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}},"visibility":"internal"}],"src":"1517:11:39"},"returnParameters":{"id":4219,"nodeType":"ParameterList","parameters":[],"src":"1563:0:39"},"scope":4351,"src":"1486:133:39","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":4244,"nodeType":"Block","src":"1790:123:39","statements":[{"assignments":[4232],"declarations":[{"constant":false,"id":4232,"mutability":"mutable","name":"previousTarget","nameLocation":"1808:14:39","nodeType":"VariableDeclaration","scope":4244,"src":"1800:22:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4231,"name":"address","nodeType":"ElementaryTypeName","src":"1800:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":4234,"initialValue":{"id":4233,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4196,"src":"1825:6:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"1800:31:39"},{"expression":{"id":4237,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4235,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4196,"src":"1841:6:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":4236,"name":"_target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4228,"src":"1850:7:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1841:16:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":4238,"nodeType":"ExpressionStatement","src":"1841:16:39"},{"eventCall":{"arguments":[{"id":4240,"name":"previousTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4232,"src":"1882:14:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4241,"name":"_target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4228,"src":"1898:7:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":4239,"name":"TargetSet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4203,"src":"1872:9:39","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":4242,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1872:34:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4243,"nodeType":"EmitStatement","src":"1867:39:39"}]},"documentation":{"id":4226,"nodeType":"StructuredDocumentation","src":"1625:117:39","text":"@dev Sets the target to a new target (`newTarget`).\n @notice Can only be called by the current owner. TODO"},"functionSelector":"776d1a01","id":4245,"implemented":true,"kind":"function","modifiers":[],"name":"setTarget","nameLocation":"1756:9:39","nodeType":"FunctionDefinition","parameters":{"id":4229,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4228,"mutability":"mutable","name":"_target","nameLocation":"1774:7:39","nodeType":"VariableDeclaration","scope":4245,"src":"1766:15:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4227,"name":"address","nodeType":"ElementaryTypeName","src":"1766:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1765:17:39"},"returnParameters":{"id":4230,"nodeType":"ParameterList","parameters":[],"src":"1790:0:39"},"scope":4351,"src":"1747:166:39","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[4001],"body":{"id":4256,"nodeType":"Block","src":"2011:44:39","statements":[{"expression":{"expression":{"id":4253,"name":"PluginType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3994,"src":"2028:10:39","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_PluginType_$3994_$","typeString":"type(enum IPlugin.PluginType)"}},"id":4254,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2039:9:39","memberName":"Cloneable","nodeType":"MemberAccess","referencedDeclaration":3992,"src":"2028:20:39","typeDescriptions":{"typeIdentifier":"t_enum$_PluginType_$3994","typeString":"enum IPlugin.PluginType"}},"functionReturnParameters":4252,"id":4255,"nodeType":"Return","src":"2021:27:39"}]},"documentation":{"id":4246,"nodeType":"StructuredDocumentation","src":"1919:23:39","text":"@inheritdoc IPlugin"},"functionSelector":"41de6830","id":4257,"implemented":true,"kind":"function","modifiers":[],"name":"pluginType","nameLocation":"1956:10:39","nodeType":"FunctionDefinition","overrides":{"id":4248,"nodeType":"OverrideSpecifier","overrides":[],"src":"1981:8:39"},"parameters":{"id":4247,"nodeType":"ParameterList","parameters":[],"src":"1966:2:39"},"returnParameters":{"id":4252,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4251,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4257,"src":"1999:10:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_PluginType_$3994","typeString":"enum IPlugin.PluginType"},"typeName":{"id":4250,"nodeType":"UserDefinedTypeName","pathNode":{"id":4249,"name":"PluginType","nameLocations":["1999:10:39"],"nodeType":"IdentifierPath","referencedDeclaration":3994,"src":"1999:10:39"},"referencedDeclaration":3994,"src":"1999:10:39","typeDescriptions":{"typeIdentifier":"t_enum$_PluginType_$3994","typeString":"enum IPlugin.PluginType"}},"visibility":"internal"}],"src":"1998:12:39"},"scope":4351,"src":"1947:108:39","stateMutability":"pure","virtual":false,"visibility":"public"},{"baseFunctions":[1275],"body":{"id":4285,"nodeType":"Block","src":"2355:196:39","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":4283,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":4278,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":4271,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4266,"name":"_interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4260,"src":"2384:12:39","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":4268,"name":"IPlugin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4002,"src":"2405:7:39","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IPlugin_$4002_$","typeString":"type(contract IPlugin)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IPlugin_$4002_$","typeString":"type(contract IPlugin)"}],"id":4267,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"2400:4:39","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":4269,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2400:13:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IPlugin_$4002","typeString":"type(contract IPlugin)"}},"id":4270,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2414:11:39","memberName":"interfaceId","nodeType":"MemberAccess","src":"2400:25:39","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"2384:41:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":4277,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4272,"name":"_interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4260,"src":"2441:12:39","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":4274,"name":"IProtocolVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5114,"src":"2462:16:39","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IProtocolVersion_$5114_$","typeString":"type(contract IProtocolVersion)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IProtocolVersion_$5114_$","typeString":"type(contract IProtocolVersion)"}],"id":4273,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"2457:4:39","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":4275,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2457:22:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IProtocolVersion_$5114","typeString":"type(contract IProtocolVersion)"}},"id":4276,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2480:11:39","memberName":"interfaceId","nodeType":"MemberAccess","src":"2457:34:39","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"2441:50:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2384:107:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":4281,"name":"_interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4260,"src":"2531:12:39","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":4279,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967271,"src":"2507:5:39","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_PluginCloneable_$4351_$","typeString":"type(contract super PluginCloneable)"}},"id":4280,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2513:17:39","memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":1275,"src":"2507:23:39","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bool_$","typeString":"function (bytes4) view returns (bool)"}},"id":4282,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2507:37:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2384:160:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":4265,"id":4284,"nodeType":"Return","src":"2365:179:39"}]},"documentation":{"id":4258,"nodeType":"StructuredDocumentation","src":"2061:197:39","text":"@notice Checks if this or the parent contract supports an interface by its ID.\n @param _interfaceId The ID of the interface.\n @return Returns `true` if the interface is supported."},"functionSelector":"01ffc9a7","id":4286,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"2272:17:39","nodeType":"FunctionDefinition","overrides":{"id":4262,"nodeType":"OverrideSpecifier","overrides":[],"src":"2331:8:39"},"parameters":{"id":4261,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4260,"mutability":"mutable","name":"_interfaceId","nameLocation":"2297:12:39","nodeType":"VariableDeclaration","scope":4286,"src":"2290:19:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":4259,"name":"bytes4","nodeType":"ElementaryTypeName","src":"2290:6:39","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"2289:21:39"},"returnParameters":{"id":4265,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4264,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4286,"src":"2349:4:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4263,"name":"bool","nodeType":"ElementaryTypeName","src":"2349:4:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2348:6:39"},"scope":4351,"src":"2263:288:39","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":4316,"nodeType":"Block","src":"3155:102:39","statements":[{"expression":{"id":4314,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":4303,"name":"execResults","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4299,"src":"3166:11:39","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}},{"id":4304,"name":"failureMap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4301,"src":"3179:10:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4305,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"3165:25:39","typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$_t_uint256_$","typeString":"tuple(bytes memory[] memory,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4310,"name":"_callId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4289,"src":"3214:7:39","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":4311,"name":"_actions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4293,"src":"3223:8:39","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Action_$2397_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IDAO.Action calldata[] calldata"}},{"id":4312,"name":"_allowFailureMap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4295,"src":"3233:16:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_array$_t_struct$_Action_$2397_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IDAO.Action calldata[] calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":4307,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4196,"src":"3198:6:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4306,"name":"IDAO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2538,"src":"3193:4:39","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IDAO_$2538_$","typeString":"type(contract IDAO)"}},"id":4308,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3193:12:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}},"id":4309,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3206:7:39","memberName":"execute","nodeType":"MemberAccess","referencedDeclaration":2439,"src":"3193:20:39","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes32_$_t_array$_t_struct$_Action_$2397_memory_ptr_$dyn_memory_ptr_$_t_uint256_$returns$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$_t_uint256_$","typeString":"function (bytes32,struct IDAO.Action memory[] memory,uint256) external returns (bytes memory[] memory,uint256)"}},"id":4313,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3193:57:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$_t_uint256_$","typeString":"tuple(bytes memory[] memory,uint256)"}},"src":"3165:85:39","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4315,"nodeType":"ExpressionStatement","src":"3165:85:39"}]},"documentation":{"id":4287,"nodeType":"StructuredDocumentation","src":"2557:395:39","text":"@notice Forwards the actions to the currently set `target` for the execution.\n @param _callId Identifier for this execution.\n @param _actions actions that will be eventually called.\n @param _allowFailureMap Bitmap-encoded number. TODO:\n @return execResults address of the implementation contract.\n @return failureMap address of the implementation contract."},"id":4317,"implemented":true,"kind":"function","modifiers":[],"name":"_execute","nameLocation":"2966:8:39","nodeType":"FunctionDefinition","parameters":{"id":4296,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4289,"mutability":"mutable","name":"_callId","nameLocation":"2992:7:39","nodeType":"VariableDeclaration","scope":4317,"src":"2984:15:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4288,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2984:7:39","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":4293,"mutability":"mutable","name":"_actions","nameLocation":"3032:8:39","nodeType":"VariableDeclaration","scope":4317,"src":"3009:31:39","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Action_$2397_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IDAO.Action[]"},"typeName":{"baseType":{"id":4291,"nodeType":"UserDefinedTypeName","pathNode":{"id":4290,"name":"IDAO.Action","nameLocations":["3009:4:39","3014:6:39"],"nodeType":"IdentifierPath","referencedDeclaration":2397,"src":"3009:11:39"},"referencedDeclaration":2397,"src":"3009:11:39","typeDescriptions":{"typeIdentifier":"t_struct$_Action_$2397_storage_ptr","typeString":"struct IDAO.Action"}},"id":4292,"nodeType":"ArrayTypeName","src":"3009:13:39","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Action_$2397_storage_$dyn_storage_ptr","typeString":"struct IDAO.Action[]"}},"visibility":"internal"},{"constant":false,"id":4295,"mutability":"mutable","name":"_allowFailureMap","nameLocation":"3058:16:39","nodeType":"VariableDeclaration","scope":4317,"src":"3050:24:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4294,"name":"uint256","nodeType":"ElementaryTypeName","src":"3050:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2974:106:39"},"returnParameters":{"id":4302,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4299,"mutability":"mutable","name":"execResults","nameLocation":"3122:11:39","nodeType":"VariableDeclaration","scope":4317,"src":"3107:26:39","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":4297,"name":"bytes","nodeType":"ElementaryTypeName","src":"3107:5:39","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":4298,"nodeType":"ArrayTypeName","src":"3107:7:39","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"},{"constant":false,"id":4301,"mutability":"mutable","name":"failureMap","nameLocation":"3143:10:39","nodeType":"VariableDeclaration","scope":4317,"src":"3135:18:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4300,"name":"uint256","nodeType":"ElementaryTypeName","src":"3135:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3106:48:39"},"scope":4351,"src":"2957:300:39","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":4349,"nodeType":"Block","src":"3940:103:39","statements":[{"expression":{"id":4347,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":4336,"name":"execResults","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4332,"src":"3951:11:39","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}},{"id":4337,"name":"failureMap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4334,"src":"3964:10:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4338,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"3950:25:39","typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$_t_uint256_$","typeString":"tuple(bytes memory[] memory,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4343,"name":"_callId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4322,"src":"4000:7:39","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":4344,"name":"_actions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4326,"src":"4009:8:39","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Action_$2397_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IDAO.Action calldata[] calldata"}},{"id":4345,"name":"_allowFailureMap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4328,"src":"4019:16:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_array$_t_struct$_Action_$2397_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IDAO.Action calldata[] calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":4340,"name":"_target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4320,"src":"3983:7:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4339,"name":"IDAO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2538,"src":"3978:4:39","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IDAO_$2538_$","typeString":"type(contract IDAO)"}},"id":4341,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3978:13:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}},"id":4342,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3992:7:39","memberName":"execute","nodeType":"MemberAccess","referencedDeclaration":2439,"src":"3978:21:39","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes32_$_t_array$_t_struct$_Action_$2397_memory_ptr_$dyn_memory_ptr_$_t_uint256_$returns$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$_t_uint256_$","typeString":"function (bytes32,struct IDAO.Action memory[] memory,uint256) external returns (bytes memory[] memory,uint256)"}},"id":4346,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3978:58:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$_t_uint256_$","typeString":"tuple(bytes memory[] memory,uint256)"}},"src":"3950:86:39","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4348,"nodeType":"ExpressionStatement","src":"3950:86:39"}]},"documentation":{"id":4318,"nodeType":"StructuredDocumentation","src":"3263:449:39","text":"@notice Forwards the actions to the `target` for the execution.\n @param _target Forwards the actions to the specific target.\n @param _callId Identifier for this execution.\n @param _actions actions that will be eventually called.\n @param _allowFailureMap Bitmap-encoded number. TODO:\n @return execResults address of the implementation contract.\n @return failureMap address of the implementation contract."},"id":4350,"implemented":true,"kind":"function","modifiers":[],"name":"_execute","nameLocation":"3726:8:39","nodeType":"FunctionDefinition","parameters":{"id":4329,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4320,"mutability":"mutable","name":"_target","nameLocation":"3752:7:39","nodeType":"VariableDeclaration","scope":4350,"src":"3744:15:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4319,"name":"address","nodeType":"ElementaryTypeName","src":"3744:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4322,"mutability":"mutable","name":"_callId","nameLocation":"3777:7:39","nodeType":"VariableDeclaration","scope":4350,"src":"3769:15:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4321,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3769:7:39","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":4326,"mutability":"mutable","name":"_actions","nameLocation":"3817:8:39","nodeType":"VariableDeclaration","scope":4350,"src":"3794:31:39","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Action_$2397_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IDAO.Action[]"},"typeName":{"baseType":{"id":4324,"nodeType":"UserDefinedTypeName","pathNode":{"id":4323,"name":"IDAO.Action","nameLocations":["3794:4:39","3799:6:39"],"nodeType":"IdentifierPath","referencedDeclaration":2397,"src":"3794:11:39"},"referencedDeclaration":2397,"src":"3794:11:39","typeDescriptions":{"typeIdentifier":"t_struct$_Action_$2397_storage_ptr","typeString":"struct IDAO.Action"}},"id":4325,"nodeType":"ArrayTypeName","src":"3794:13:39","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Action_$2397_storage_$dyn_storage_ptr","typeString":"struct IDAO.Action[]"}},"visibility":"internal"},{"constant":false,"id":4328,"mutability":"mutable","name":"_allowFailureMap","nameLocation":"3843:16:39","nodeType":"VariableDeclaration","scope":4350,"src":"3835:24:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4327,"name":"uint256","nodeType":"ElementaryTypeName","src":"3835:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3734:131:39"},"returnParameters":{"id":4335,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4332,"mutability":"mutable","name":"execResults","nameLocation":"3907:11:39","nodeType":"VariableDeclaration","scope":4350,"src":"3892:26:39","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":4330,"name":"bytes","nodeType":"ElementaryTypeName","src":"3892:5:39","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":4331,"nodeType":"ArrayTypeName","src":"3892:7:39","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"},{"constant":false,"id":4334,"mutability":"mutable","name":"failureMap","nameLocation":"3928:10:39","nodeType":"VariableDeclaration","scope":4350,"src":"3920:18:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4333,"name":"uint256","nodeType":"ElementaryTypeName","src":"3920:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3891:48:39"},"scope":4351,"src":"3717:326:39","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":4352,"src":"805:3240:39","usedErrors":[]}],"src":"47:3999:39"},"id":39},"src/plugin/PluginUUPSUpgradeable.sol":{"ast":{"absolutePath":"src/plugin/PluginUUPSUpgradeable.sol","exportedSymbols":{"DaoAuthorizableUpgradeable":[3937],"ERC165Upgradeable":[1281],"IDAO":[2538],"IERC1822ProxiableUpgradeable":[30],"IPlugin":[4002],"IProtocolVersion":[5114],"PluginUUPSUpgradeable":[4576],"ProtocolVersion":[5136],"UUPSUpgradeable":[671]},"id":4577,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":4353,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:40"},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol","id":4355,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4577,"sourceUnit":672,"src":"72:100:40","symbolAliases":[{"foreign":{"id":4354,"name":"UUPSUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":671,"src":"80:15:40","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol","file":"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol","id":4357,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4577,"sourceUnit":31,"src":"173:122:40","symbolAliases":[{"foreign":{"id":4356,"name":"IERC1822ProxiableUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30,"src":"181:28:40","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol","file":"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol","id":4359,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4577,"sourceUnit":1282,"src":"296:112:40","symbolAliases":[{"foreign":{"id":4358,"name":"ERC165Upgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1281,"src":"304:17:40","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/utils/versioning/IProtocolVersion.sol","file":"../utils/versioning/IProtocolVersion.sol","id":4361,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4577,"sourceUnit":5115,"src":"410:74:40","symbolAliases":[{"foreign":{"id":4360,"name":"IProtocolVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5114,"src":"418:16:40","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/utils/versioning/ProtocolVersion.sol","file":"../utils/versioning/ProtocolVersion.sol","id":4363,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4577,"sourceUnit":5137,"src":"485:72:40","symbolAliases":[{"foreign":{"id":4362,"name":"ProtocolVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5136,"src":"493:15:40","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/permission/auth/DaoAuthorizableUpgradeable.sol","file":"../permission/auth/DaoAuthorizableUpgradeable.sol","id":4365,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4577,"sourceUnit":3938,"src":"558:93:40","symbolAliases":[{"foreign":{"id":4364,"name":"DaoAuthorizableUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3937,"src":"566:26:40","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/dao/IDAO.sol","file":"../dao/IDAO.sol","id":4367,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4577,"sourceUnit":2539,"src":"652:37:40","symbolAliases":[{"foreign":{"id":4366,"name":"IDAO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2538,"src":"660:4:40","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/plugin/IPlugin.sol","file":"./IPlugin.sol","id":4369,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4577,"sourceUnit":4003,"src":"690:38:40","symbolAliases":[{"foreign":{"id":4368,"name":"IPlugin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4002,"src":"698:7:40","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":4371,"name":"IPlugin","nameLocations":["1068:7:40"],"nodeType":"IdentifierPath","referencedDeclaration":4002,"src":"1068:7:40"},"id":4372,"nodeType":"InheritanceSpecifier","src":"1068:7:40"},{"baseName":{"id":4373,"name":"ERC165Upgradeable","nameLocations":["1081:17:40"],"nodeType":"IdentifierPath","referencedDeclaration":1281,"src":"1081:17:40"},"id":4374,"nodeType":"InheritanceSpecifier","src":"1081:17:40"},{"baseName":{"id":4375,"name":"UUPSUpgradeable","nameLocations":["1104:15:40"],"nodeType":"IdentifierPath","referencedDeclaration":671,"src":"1104:15:40"},"id":4376,"nodeType":"InheritanceSpecifier","src":"1104:15:40"},{"baseName":{"id":4377,"name":"DaoAuthorizableUpgradeable","nameLocations":["1125:26:40"],"nodeType":"IdentifierPath","referencedDeclaration":3937,"src":"1125:26:40"},"id":4378,"nodeType":"InheritanceSpecifier","src":"1125:26:40"},{"baseName":{"id":4379,"name":"ProtocolVersion","nameLocations":["1157:15:40"],"nodeType":"IdentifierPath","referencedDeclaration":5136,"src":"1157:15:40"},"id":4380,"nodeType":"InheritanceSpecifier","src":"1157:15:40"}],"canonicalName":"PluginUUPSUpgradeable","contractDependencies":[],"contractKind":"contract","documentation":{"id":4370,"nodeType":"StructuredDocumentation","src":"730:291:40","text":"@title PluginUUPSUpgradeable\n @author Aragon X - 2022-2023\n @notice An abstract, upgradeable contract to inherit from when creating a plugin being deployed via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\n @custom:security-contact sirt@aragon.org"},"fullyImplemented":true,"id":4576,"linearizedBaseContracts":[4576,5136,5114,3937,1052,671,355,20,30,1281,1293,534,4002],"name":"PluginUUPSUpgradeable","nameLocation":"1039:21:40","nodeType":"ContractDefinition","nodes":[{"constant":false,"functionSelector":"d4b83992","id":4382,"mutability":"mutable","name":"target","nameLocation":"1308:6:40","nodeType":"VariableDeclaration","scope":4576,"src":"1293:21:40","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4381,"name":"address","nodeType":"ElementaryTypeName","src":"1293:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"anonymous":false,"documentation":{"id":4383,"nodeType":"StructuredDocumentation","src":"1321:45:40","text":"@dev Emitted each time the Target is set."},"eventSelector":"90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d6","id":4389,"name":"TargetSet","nameLocation":"1377:9:40","nodeType":"EventDefinition","parameters":{"id":4388,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4385,"indexed":true,"mutability":"mutable","name":"previousTarget","nameLocation":"1403:14:40","nodeType":"VariableDeclaration","scope":4389,"src":"1387:30:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4384,"name":"address","nodeType":"ElementaryTypeName","src":"1387:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4387,"indexed":true,"mutability":"mutable","name":"newTarget","nameLocation":"1435:9:40","nodeType":"VariableDeclaration","scope":4389,"src":"1419:25:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4386,"name":"address","nodeType":"ElementaryTypeName","src":"1419:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1386:59:40"},"src":"1371:75:40"},{"body":{"id":4396,"nodeType":"Block","src":"1637:39:40","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":4393,"name":"_disableInitializers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":515,"src":"1647:20:40","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":4394,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1647:22:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4395,"nodeType":"ExpressionStatement","src":"1647:22:40"}]},"documentation":{"id":4390,"nodeType":"StructuredDocumentation","src":"1452:166:40","text":"@notice Disables the initializers on the implementation contract to prevent it from being left uninitialized.\n @custom:oz-upgrades-unsafe-allow constructor"},"id":4397,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":4391,"nodeType":"ParameterList","parameters":[],"src":"1634:2:40"},"returnParameters":{"id":4392,"nodeType":"ParameterList","parameters":[],"src":"1637:0:40"},"scope":4576,"src":"1623:53:40","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[4001],"body":{"id":4408,"nodeType":"Block","src":"1774:39:40","statements":[{"expression":{"expression":{"id":4405,"name":"PluginType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3994,"src":"1791:10:40","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_PluginType_$3994_$","typeString":"type(enum IPlugin.PluginType)"}},"id":4406,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1802:4:40","memberName":"UUPS","nodeType":"MemberAccess","referencedDeclaration":3991,"src":"1791:15:40","typeDescriptions":{"typeIdentifier":"t_enum$_PluginType_$3994","typeString":"enum IPlugin.PluginType"}},"functionReturnParameters":4404,"id":4407,"nodeType":"Return","src":"1784:22:40"}]},"documentation":{"id":4398,"nodeType":"StructuredDocumentation","src":"1682:23:40","text":"@inheritdoc IPlugin"},"functionSelector":"41de6830","id":4409,"implemented":true,"kind":"function","modifiers":[],"name":"pluginType","nameLocation":"1719:10:40","nodeType":"FunctionDefinition","overrides":{"id":4400,"nodeType":"OverrideSpecifier","overrides":[],"src":"1744:8:40"},"parameters":{"id":4399,"nodeType":"ParameterList","parameters":[],"src":"1729:2:40"},"returnParameters":{"id":4404,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4403,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4409,"src":"1762:10:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_PluginType_$3994","typeString":"enum IPlugin.PluginType"},"typeName":{"id":4402,"nodeType":"UserDefinedTypeName","pathNode":{"id":4401,"name":"PluginType","nameLocations":["1762:10:40"],"nodeType":"IdentifierPath","referencedDeclaration":3994,"src":"1762:10:40"},"referencedDeclaration":3994,"src":"1762:10:40","typeDescriptions":{"typeIdentifier":"t_enum$_PluginType_$3994","typeString":"enum IPlugin.PluginType"}},"visibility":"internal"}],"src":"1761:12:40"},"scope":4576,"src":"1710:103:40","stateMutability":"pure","virtual":false,"visibility":"public"},{"constant":true,"documentation":{"id":4410,"nodeType":"StructuredDocumentation","src":"1819:87:40","text":"@notice The ID of the permission required to call the `_authorizeUpgrade` function."},"functionSelector":"c9c4bfca","id":4415,"mutability":"constant","name":"UPGRADE_PLUGIN_PERMISSION_ID","nameLocation":"1935:28:40","nodeType":"VariableDeclaration","scope":4576,"src":"1911:93:40","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4411,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1911:7:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"555047524144455f504c5547494e5f5045524d495353494f4e","id":4413,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1976:27:40","typeDescriptions":{"typeIdentifier":"t_stringliteral_821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f5","typeString":"literal_string \"UPGRADE_PLUGIN_PERMISSION\""},"value":"UPGRADE_PLUGIN_PERMISSION"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f5","typeString":"literal_string \"UPGRADE_PLUGIN_PERMISSION\""}],"id":4412,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967288,"src":"1966:9:40","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":4414,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1966:38:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"public"},{"body":{"id":4428,"nodeType":"Block","src":"2255:56:40","statements":[{"expression":{"arguments":[{"id":4425,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4419,"src":"2299:4:40","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}],"id":4424,"name":"__DaoAuthorizableUpgradeable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3901,"src":"2265:33:40","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IDAO_$2538_$returns$__$","typeString":"function (contract IDAO)"}},"id":4426,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2265:39:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4427,"nodeType":"ExpressionStatement","src":"2265:39:40"}]},"documentation":{"id":4416,"nodeType":"StructuredDocumentation","src":"2011:103:40","text":"@notice Initializes the plugin by storing the associated DAO.\n @param _dao The DAO contract."},"id":4429,"implemented":true,"kind":"function","modifiers":[{"id":4422,"kind":"modifierInvocation","modifierName":{"id":4421,"name":"onlyInitializing","nameLocations":["2238:16:40"],"nodeType":"IdentifierPath","referencedDeclaration":479,"src":"2238:16:40"},"nodeType":"ModifierInvocation","src":"2238:16:40"}],"name":"__PluginUUPSUpgradeable_init","nameLocation":"2181:28:40","nodeType":"FunctionDefinition","parameters":{"id":4420,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4419,"mutability":"mutable","name":"_dao","nameLocation":"2215:4:40","nodeType":"VariableDeclaration","scope":4429,"src":"2210:9:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"},"typeName":{"id":4418,"nodeType":"UserDefinedTypeName","pathNode":{"id":4417,"name":"IDAO","nameLocations":["2210:4:40"],"nodeType":"IdentifierPath","referencedDeclaration":2538,"src":"2210:4:40"},"referencedDeclaration":2538,"src":"2210:4:40","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}},"visibility":"internal"}],"src":"2209:11:40"},"returnParameters":{"id":4423,"nodeType":"ParameterList","parameters":[],"src":"2255:0:40"},"scope":4576,"src":"2172:139:40","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":4448,"nodeType":"Block","src":"2482:123:40","statements":[{"assignments":[4436],"declarations":[{"constant":false,"id":4436,"mutability":"mutable","name":"previousTarget","nameLocation":"2500:14:40","nodeType":"VariableDeclaration","scope":4448,"src":"2492:22:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4435,"name":"address","nodeType":"ElementaryTypeName","src":"2492:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":4438,"initialValue":{"id":4437,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4382,"src":"2517:6:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"2492:31:40"},{"expression":{"id":4441,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4439,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4382,"src":"2533:6:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":4440,"name":"_target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4432,"src":"2542:7:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2533:16:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":4442,"nodeType":"ExpressionStatement","src":"2533:16:40"},{"eventCall":{"arguments":[{"id":4444,"name":"previousTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4436,"src":"2574:14:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4445,"name":"_target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4432,"src":"2590:7:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":4443,"name":"TargetSet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4389,"src":"2564:9:40","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":4446,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2564:34:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4447,"nodeType":"EmitStatement","src":"2559:39:40"}]},"documentation":{"id":4430,"nodeType":"StructuredDocumentation","src":"2317:117:40","text":"@dev Sets the target to a new target (`newTarget`).\n @notice Can only be called by the current owner. TODO"},"functionSelector":"776d1a01","id":4449,"implemented":true,"kind":"function","modifiers":[],"name":"setTarget","nameLocation":"2448:9:40","nodeType":"FunctionDefinition","parameters":{"id":4433,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4432,"mutability":"mutable","name":"_target","nameLocation":"2466:7:40","nodeType":"VariableDeclaration","scope":4449,"src":"2458:15:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4431,"name":"address","nodeType":"ElementaryTypeName","src":"2458:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2457:17:40"},"returnParameters":{"id":4434,"nodeType":"ParameterList","parameters":[],"src":"2482:0:40"},"scope":4576,"src":"2439:166:40","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[1275],"body":{"id":4484,"nodeType":"Block","src":"2902:274:40","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":4482,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":4477,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":4470,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":4463,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4458,"name":"_interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4452,"src":"2931:12:40","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":4460,"name":"IPlugin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4002,"src":"2952:7:40","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IPlugin_$4002_$","typeString":"type(contract IPlugin)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IPlugin_$4002_$","typeString":"type(contract IPlugin)"}],"id":4459,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"2947:4:40","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":4461,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2947:13:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IPlugin_$4002","typeString":"type(contract IPlugin)"}},"id":4462,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2961:11:40","memberName":"interfaceId","nodeType":"MemberAccess","src":"2947:25:40","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"2931:41:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":4469,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4464,"name":"_interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4452,"src":"2988:12:40","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":4466,"name":"IProtocolVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5114,"src":"3009:16:40","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IProtocolVersion_$5114_$","typeString":"type(contract IProtocolVersion)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IProtocolVersion_$5114_$","typeString":"type(contract IProtocolVersion)"}],"id":4465,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"3004:4:40","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":4467,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3004:22:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IProtocolVersion_$5114","typeString":"type(contract IProtocolVersion)"}},"id":4468,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3027:11:40","memberName":"interfaceId","nodeType":"MemberAccess","src":"3004:34:40","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"2988:50:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2931:107:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":4476,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4471,"name":"_interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4452,"src":"3054:12:40","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":4473,"name":"IERC1822ProxiableUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30,"src":"3075:28:40","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC1822ProxiableUpgradeable_$30_$","typeString":"type(contract IERC1822ProxiableUpgradeable)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC1822ProxiableUpgradeable_$30_$","typeString":"type(contract IERC1822ProxiableUpgradeable)"}],"id":4472,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"3070:4:40","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":4474,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3070:34:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC1822ProxiableUpgradeable_$30","typeString":"type(contract IERC1822ProxiableUpgradeable)"}},"id":4475,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3105:11:40","memberName":"interfaceId","nodeType":"MemberAccess","src":"3070:46:40","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"3054:62:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2931:185:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":4480,"name":"_interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4452,"src":"3156:12:40","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":4478,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967271,"src":"3132:5:40","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_PluginUUPSUpgradeable_$4576_$","typeString":"type(contract super PluginUUPSUpgradeable)"}},"id":4479,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3138:17:40","memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":1275,"src":"3132:23:40","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bool_$","typeString":"function (bytes4) view returns (bool)"}},"id":4481,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3132:37:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2931:238:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":4457,"id":4483,"nodeType":"Return","src":"2912:257:40"}]},"documentation":{"id":4450,"nodeType":"StructuredDocumentation","src":"2611:194:40","text":"@notice Checks if an interface is supported by this or its parent contract.\n @param _interfaceId The ID of the interface.\n @return Returns `true` if the interface is supported."},"functionSelector":"01ffc9a7","id":4485,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"2819:17:40","nodeType":"FunctionDefinition","overrides":{"id":4454,"nodeType":"OverrideSpecifier","overrides":[],"src":"2878:8:40"},"parameters":{"id":4453,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4452,"mutability":"mutable","name":"_interfaceId","nameLocation":"2844:12:40","nodeType":"VariableDeclaration","scope":4485,"src":"2837:19:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":4451,"name":"bytes4","nodeType":"ElementaryTypeName","src":"2837:6:40","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"2836:21:40"},"returnParameters":{"id":4457,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4456,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4485,"src":"2896:4:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4455,"name":"bool","nodeType":"ElementaryTypeName","src":"2896:4:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2895:6:40"},"scope":4576,"src":"2810:366:40","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":4494,"nodeType":"Block","src":"3513:44:40","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":4491,"name":"_getImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76,"src":"3530:18:40","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":4492,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3530:20:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":4490,"id":4493,"nodeType":"Return","src":"3523:27:40"}]},"documentation":{"id":4486,"nodeType":"StructuredDocumentation","src":"3182:270:40","text":"@notice Returns the address of the implementation contract in the [proxy storage slot](https://eips.ethereum.org/EIPS/eip-1967) slot the [UUPS proxy](https://eips.ethereum.org/EIPS/eip-1822) is pointing to.\n @return The address of the implementation contract."},"functionSelector":"5c60da1b","id":4495,"implemented":true,"kind":"function","modifiers":[],"name":"implementation","nameLocation":"3466:14:40","nodeType":"FunctionDefinition","parameters":{"id":4487,"nodeType":"ParameterList","parameters":[],"src":"3480:2:40"},"returnParameters":{"id":4490,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4489,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4495,"src":"3504:7:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4488,"name":"address","nodeType":"ElementaryTypeName","src":"3504:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3503:9:40"},"scope":4576,"src":"3457:100:40","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":4525,"nodeType":"Block","src":"4161:102:40","statements":[{"expression":{"id":4523,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":4512,"name":"execResults","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4508,"src":"4172:11:40","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}},{"id":4513,"name":"failureMap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4510,"src":"4185:10:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4514,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"4171:25:40","typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$_t_uint256_$","typeString":"tuple(bytes memory[] memory,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4519,"name":"_callId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4498,"src":"4220:7:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":4520,"name":"_actions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4502,"src":"4229:8:40","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Action_$2397_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IDAO.Action calldata[] calldata"}},{"id":4521,"name":"_allowFailureMap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4504,"src":"4239:16:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_array$_t_struct$_Action_$2397_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IDAO.Action calldata[] calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":4516,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4382,"src":"4204:6:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4515,"name":"IDAO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2538,"src":"4199:4:40","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IDAO_$2538_$","typeString":"type(contract IDAO)"}},"id":4517,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4199:12:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}},"id":4518,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4212:7:40","memberName":"execute","nodeType":"MemberAccess","referencedDeclaration":2439,"src":"4199:20:40","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes32_$_t_array$_t_struct$_Action_$2397_memory_ptr_$dyn_memory_ptr_$_t_uint256_$returns$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$_t_uint256_$","typeString":"function (bytes32,struct IDAO.Action memory[] memory,uint256) external returns (bytes memory[] memory,uint256)"}},"id":4522,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4199:57:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$_t_uint256_$","typeString":"tuple(bytes memory[] memory,uint256)"}},"src":"4171:85:40","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4524,"nodeType":"ExpressionStatement","src":"4171:85:40"}]},"documentation":{"id":4496,"nodeType":"StructuredDocumentation","src":"3563:395:40","text":"@notice Forwards the actions to the currently set `target` for the execution.\n @param _callId Identifier for this execution.\n @param _actions actions that will be eventually called.\n @param _allowFailureMap Bitmap-encoded number. TODO:\n @return execResults address of the implementation contract.\n @return failureMap address of the implementation contract."},"id":4526,"implemented":true,"kind":"function","modifiers":[],"name":"_execute","nameLocation":"3972:8:40","nodeType":"FunctionDefinition","parameters":{"id":4505,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4498,"mutability":"mutable","name":"_callId","nameLocation":"3998:7:40","nodeType":"VariableDeclaration","scope":4526,"src":"3990:15:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4497,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3990:7:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":4502,"mutability":"mutable","name":"_actions","nameLocation":"4038:8:40","nodeType":"VariableDeclaration","scope":4526,"src":"4015:31:40","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Action_$2397_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IDAO.Action[]"},"typeName":{"baseType":{"id":4500,"nodeType":"UserDefinedTypeName","pathNode":{"id":4499,"name":"IDAO.Action","nameLocations":["4015:4:40","4020:6:40"],"nodeType":"IdentifierPath","referencedDeclaration":2397,"src":"4015:11:40"},"referencedDeclaration":2397,"src":"4015:11:40","typeDescriptions":{"typeIdentifier":"t_struct$_Action_$2397_storage_ptr","typeString":"struct IDAO.Action"}},"id":4501,"nodeType":"ArrayTypeName","src":"4015:13:40","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Action_$2397_storage_$dyn_storage_ptr","typeString":"struct IDAO.Action[]"}},"visibility":"internal"},{"constant":false,"id":4504,"mutability":"mutable","name":"_allowFailureMap","nameLocation":"4064:16:40","nodeType":"VariableDeclaration","scope":4526,"src":"4056:24:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4503,"name":"uint256","nodeType":"ElementaryTypeName","src":"4056:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3980:106:40"},"returnParameters":{"id":4511,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4508,"mutability":"mutable","name":"execResults","nameLocation":"4128:11:40","nodeType":"VariableDeclaration","scope":4526,"src":"4113:26:40","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":4506,"name":"bytes","nodeType":"ElementaryTypeName","src":"4113:5:40","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":4507,"nodeType":"ArrayTypeName","src":"4113:7:40","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"},{"constant":false,"id":4510,"mutability":"mutable","name":"failureMap","nameLocation":"4149:10:40","nodeType":"VariableDeclaration","scope":4526,"src":"4141:18:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4509,"name":"uint256","nodeType":"ElementaryTypeName","src":"4141:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4112:48:40"},"scope":4576,"src":"3963:300:40","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":4558,"nodeType":"Block","src":"4946:103:40","statements":[{"expression":{"id":4556,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":4545,"name":"execResults","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4541,"src":"4957:11:40","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}},{"id":4546,"name":"failureMap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4543,"src":"4970:10:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4547,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"4956:25:40","typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$_t_uint256_$","typeString":"tuple(bytes memory[] memory,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4552,"name":"_callId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4531,"src":"5006:7:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":4553,"name":"_actions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4535,"src":"5015:8:40","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Action_$2397_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IDAO.Action calldata[] calldata"}},{"id":4554,"name":"_allowFailureMap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4537,"src":"5025:16:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_array$_t_struct$_Action_$2397_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IDAO.Action calldata[] calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":4549,"name":"_target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4529,"src":"4989:7:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4548,"name":"IDAO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2538,"src":"4984:4:40","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IDAO_$2538_$","typeString":"type(contract IDAO)"}},"id":4550,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4984:13:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}},"id":4551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4998:7:40","memberName":"execute","nodeType":"MemberAccess","referencedDeclaration":2439,"src":"4984:21:40","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes32_$_t_array$_t_struct$_Action_$2397_memory_ptr_$dyn_memory_ptr_$_t_uint256_$returns$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$_t_uint256_$","typeString":"function (bytes32,struct IDAO.Action memory[] memory,uint256) external returns (bytes memory[] memory,uint256)"}},"id":4555,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4984:58:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$_t_uint256_$","typeString":"tuple(bytes memory[] memory,uint256)"}},"src":"4956:86:40","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4557,"nodeType":"ExpressionStatement","src":"4956:86:40"}]},"documentation":{"id":4527,"nodeType":"StructuredDocumentation","src":"4269:449:40","text":"@notice Forwards the actions to the `target` for the execution.\n @param _target Forwards the actions to the specific target.\n @param _callId Identifier for this execution.\n @param _actions actions that will be eventually called.\n @param _allowFailureMap Bitmap-encoded number. TODO:\n @return execResults address of the implementation contract.\n @return failureMap address of the implementation contract."},"id":4559,"implemented":true,"kind":"function","modifiers":[],"name":"_execute","nameLocation":"4732:8:40","nodeType":"FunctionDefinition","parameters":{"id":4538,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4529,"mutability":"mutable","name":"_target","nameLocation":"4758:7:40","nodeType":"VariableDeclaration","scope":4559,"src":"4750:15:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4528,"name":"address","nodeType":"ElementaryTypeName","src":"4750:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4531,"mutability":"mutable","name":"_callId","nameLocation":"4783:7:40","nodeType":"VariableDeclaration","scope":4559,"src":"4775:15:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4530,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4775:7:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":4535,"mutability":"mutable","name":"_actions","nameLocation":"4823:8:40","nodeType":"VariableDeclaration","scope":4559,"src":"4800:31:40","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Action_$2397_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IDAO.Action[]"},"typeName":{"baseType":{"id":4533,"nodeType":"UserDefinedTypeName","pathNode":{"id":4532,"name":"IDAO.Action","nameLocations":["4800:4:40","4805:6:40"],"nodeType":"IdentifierPath","referencedDeclaration":2397,"src":"4800:11:40"},"referencedDeclaration":2397,"src":"4800:11:40","typeDescriptions":{"typeIdentifier":"t_struct$_Action_$2397_storage_ptr","typeString":"struct IDAO.Action"}},"id":4534,"nodeType":"ArrayTypeName","src":"4800:13:40","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Action_$2397_storage_$dyn_storage_ptr","typeString":"struct IDAO.Action[]"}},"visibility":"internal"},{"constant":false,"id":4537,"mutability":"mutable","name":"_allowFailureMap","nameLocation":"4849:16:40","nodeType":"VariableDeclaration","scope":4559,"src":"4841:24:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4536,"name":"uint256","nodeType":"ElementaryTypeName","src":"4841:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4740:131:40"},"returnParameters":{"id":4544,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4541,"mutability":"mutable","name":"execResults","nameLocation":"4913:11:40","nodeType":"VariableDeclaration","scope":4559,"src":"4898:26:40","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":4539,"name":"bytes","nodeType":"ElementaryTypeName","src":"4898:5:40","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":4540,"nodeType":"ArrayTypeName","src":"4898:7:40","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"},{"constant":false,"id":4543,"mutability":"mutable","name":"failureMap","nameLocation":"4934:10:40","nodeType":"VariableDeclaration","scope":4559,"src":"4926:18:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4542,"name":"uint256","nodeType":"ElementaryTypeName","src":"4926:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4897:48:40"},"scope":4576,"src":"4723:326:40","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"baseFunctions":[665],"body":{"id":4569,"nodeType":"Block","src":"5586:8:40","statements":[]},"documentation":{"id":4560,"nodeType":"StructuredDocumentation","src":"5055:330:40","text":"@notice Internal method authorizing the upgrade of the contract via the [upgradeability mechanism for UUPS proxies](https://docs.openzeppelin.com/contracts/4.x/api/proxy#UUPSUpgradeable) (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\n @dev The caller must have the `UPGRADE_PLUGIN_PERMISSION_ID` permission."},"id":4570,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":4566,"name":"UPGRADE_PLUGIN_PERMISSION_ID","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4415,"src":"5503:28:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":4567,"kind":"modifierInvocation","modifierName":{"id":4565,"name":"auth","nameLocations":["5498:4:40"],"nodeType":"IdentifierPath","referencedDeclaration":3931,"src":"5498:4:40"},"nodeType":"ModifierInvocation","src":"5498:34:40"}],"name":"_authorizeUpgrade","nameLocation":"5399:17:40","nodeType":"FunctionDefinition","overrides":{"id":4564,"nodeType":"OverrideSpecifier","overrides":[],"src":"5481:8:40"},"parameters":{"id":4563,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4562,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4570,"src":"5426:7:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4561,"name":"address","nodeType":"ElementaryTypeName","src":"5426:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5416:23:40"},"returnParameters":{"id":4568,"nodeType":"ParameterList","parameters":[],"src":"5586:0:40"},"scope":4576,"src":"5390:204:40","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"constant":false,"documentation":{"id":4571,"nodeType":"StructuredDocumentation","src":"5600:273:40","text":"@notice This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain (see [OpenZeppelin's guide about storage gaps](https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps))."},"id":4575,"mutability":"mutable","name":"__gap","nameLocation":"5898:5:40","nodeType":"VariableDeclaration","scope":4576,"src":"5878:25:40","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$49_storage","typeString":"uint256[49]"},"typeName":{"baseType":{"id":4572,"name":"uint256","nodeType":"ElementaryTypeName","src":"5878:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4574,"length":{"hexValue":"3439","id":4573,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5886:2:40","typeDescriptions":{"typeIdentifier":"t_rational_49_by_1","typeString":"int_const 49"},"value":"49"},"nodeType":"ArrayTypeName","src":"5878:11:40","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$49_storage_ptr","typeString":"uint256[49]"}},"visibility":"private"}],"scope":4577,"src":"1021:4885:40","usedErrors":[3952]}],"src":"47:5860:40"},"id":40},"src/plugin/extensions/proposal/IProposal.sol":{"ast":{"absolutePath":"src/plugin/extensions/proposal/IProposal.sol","exportedSymbols":{"IDAO":[2538],"IProposal":[4636]},"id":4637,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":4578,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:41"},{"absolutePath":"src/dao/IDAO.sol","file":"../../../dao/IDAO.sol","id":4580,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4637,"sourceUnit":2539,"src":"72:43:41","symbolAliases":[{"foreign":{"id":4579,"name":"IDAO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2538,"src":"80:4:41","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"IProposal","contractDependencies":[],"contractKind":"interface","documentation":{"id":4581,"nodeType":"StructuredDocumentation","src":"117:192:41","text":"@title IProposal\n @author Aragon X - 2022-2023\n @notice An interface to be implemented by DAO plugins that create and execute proposals.\n @custom:security-contact sirt@aragon.org"},"fullyImplemented":false,"id":4636,"linearizedBaseContracts":[4636],"name":"IProposal","nameLocation":"319:9:41","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":4582,"nodeType":"StructuredDocumentation","src":"335:680:41","text":"@notice Emitted when a proposal is created.\n @param proposalId The ID of the proposal.\n @param creator The creator of the proposal.\n @param startDate The start date of the proposal in seconds.\n @param endDate The end date of the proposal in seconds.\n @param metadata The metadata of the proposal.\n @param actions The actions that will be executed if the proposal passes.\n @param allowFailureMap A bitmap allowing the proposal to succeed, even if individual actions might revert. If the bit at index `i` is 1, the proposal succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert."},"eventSelector":"a6c1f8f4276dc3f243459e13b557c84e8f4e90b2e09070bad5f6909cee687c92","id":4600,"name":"ProposalCreated","nameLocation":"1026:15:41","nodeType":"EventDefinition","parameters":{"id":4599,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4584,"indexed":true,"mutability":"mutable","name":"proposalId","nameLocation":"1067:10:41","nodeType":"VariableDeclaration","scope":4600,"src":"1051:26:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4583,"name":"uint256","nodeType":"ElementaryTypeName","src":"1051:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4586,"indexed":true,"mutability":"mutable","name":"creator","nameLocation":"1103:7:41","nodeType":"VariableDeclaration","scope":4600,"src":"1087:23:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4585,"name":"address","nodeType":"ElementaryTypeName","src":"1087:7:41","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4588,"indexed":false,"mutability":"mutable","name":"startDate","nameLocation":"1127:9:41","nodeType":"VariableDeclaration","scope":4600,"src":"1120:16:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":4587,"name":"uint64","nodeType":"ElementaryTypeName","src":"1120:6:41","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":4590,"indexed":false,"mutability":"mutable","name":"endDate","nameLocation":"1153:7:41","nodeType":"VariableDeclaration","scope":4600,"src":"1146:14:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":4589,"name":"uint64","nodeType":"ElementaryTypeName","src":"1146:6:41","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":4592,"indexed":false,"mutability":"mutable","name":"metadata","nameLocation":"1176:8:41","nodeType":"VariableDeclaration","scope":4600,"src":"1170:14:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4591,"name":"bytes","nodeType":"ElementaryTypeName","src":"1170:5:41","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":4596,"indexed":false,"mutability":"mutable","name":"actions","nameLocation":"1208:7:41","nodeType":"VariableDeclaration","scope":4600,"src":"1194:21:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Action_$2397_memory_ptr_$dyn_memory_ptr","typeString":"struct IDAO.Action[]"},"typeName":{"baseType":{"id":4594,"nodeType":"UserDefinedTypeName","pathNode":{"id":4593,"name":"IDAO.Action","nameLocations":["1194:4:41","1199:6:41"],"nodeType":"IdentifierPath","referencedDeclaration":2397,"src":"1194:11:41"},"referencedDeclaration":2397,"src":"1194:11:41","typeDescriptions":{"typeIdentifier":"t_struct$_Action_$2397_storage_ptr","typeString":"struct IDAO.Action"}},"id":4595,"nodeType":"ArrayTypeName","src":"1194:13:41","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Action_$2397_storage_$dyn_storage_ptr","typeString":"struct IDAO.Action[]"}},"visibility":"internal"},{"constant":false,"id":4598,"indexed":false,"mutability":"mutable","name":"allowFailureMap","nameLocation":"1233:15:41","nodeType":"VariableDeclaration","scope":4600,"src":"1225:23:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4597,"name":"uint256","nodeType":"ElementaryTypeName","src":"1225:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1041:213:41"},"src":"1020:235:41"},{"anonymous":false,"documentation":{"id":4601,"nodeType":"StructuredDocumentation","src":"1261:98:41","text":"@notice Emitted when a proposal is executed.\n @param proposalId The ID of the proposal."},"eventSelector":"712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f","id":4605,"name":"ProposalExecuted","nameLocation":"1370:16:41","nodeType":"EventDefinition","parameters":{"id":4604,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4603,"indexed":true,"mutability":"mutable","name":"proposalId","nameLocation":"1403:10:41","nodeType":"VariableDeclaration","scope":4605,"src":"1387:26:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4602,"name":"uint256","nodeType":"ElementaryTypeName","src":"1387:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1386:28:41"},"src":"1364:51:41"},{"documentation":{"id":4606,"nodeType":"StructuredDocumentation","src":"1421:330:41","text":"@notice Creates a new proposal.\n @param data The metadata of the proposal.\n @param actions The actions that will be executed after the proposal passes.\n @param startDate The start date of the proposal.\n @param endDate The end date of the proposal.\n @return proposalId The id of the proposal."},"functionSelector":"74d786be","id":4621,"implemented":false,"kind":"function","modifiers":[],"name":"createProposal","nameLocation":"1765:14:41","nodeType":"FunctionDefinition","parameters":{"id":4617,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4608,"mutability":"mutable","name":"data","nameLocation":"1802:4:41","nodeType":"VariableDeclaration","scope":4621,"src":"1789:17:41","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4607,"name":"bytes","nodeType":"ElementaryTypeName","src":"1789:5:41","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":4612,"mutability":"mutable","name":"actions","nameLocation":"1837:7:41","nodeType":"VariableDeclaration","scope":4621,"src":"1816:28:41","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Action_$2397_memory_ptr_$dyn_memory_ptr","typeString":"struct IDAO.Action[]"},"typeName":{"baseType":{"id":4610,"nodeType":"UserDefinedTypeName","pathNode":{"id":4609,"name":"IDAO.Action","nameLocations":["1816:4:41","1821:6:41"],"nodeType":"IdentifierPath","referencedDeclaration":2397,"src":"1816:11:41"},"referencedDeclaration":2397,"src":"1816:11:41","typeDescriptions":{"typeIdentifier":"t_struct$_Action_$2397_storage_ptr","typeString":"struct IDAO.Action"}},"id":4611,"nodeType":"ArrayTypeName","src":"1816:13:41","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Action_$2397_storage_$dyn_storage_ptr","typeString":"struct IDAO.Action[]"}},"visibility":"internal"},{"constant":false,"id":4614,"mutability":"mutable","name":"startDate","nameLocation":"1861:9:41","nodeType":"VariableDeclaration","scope":4621,"src":"1854:16:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":4613,"name":"uint64","nodeType":"ElementaryTypeName","src":"1854:6:41","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":4616,"mutability":"mutable","name":"endDate","nameLocation":"1887:7:41","nodeType":"VariableDeclaration","scope":4621,"src":"1880:14:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":4615,"name":"uint64","nodeType":"ElementaryTypeName","src":"1880:6:41","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"1779:121:41"},"returnParameters":{"id":4620,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4619,"mutability":"mutable","name":"proposalId","nameLocation":"1927:10:41","nodeType":"VariableDeclaration","scope":4621,"src":"1919:18:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4618,"name":"uint256","nodeType":"ElementaryTypeName","src":"1919:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1918:20:41"},"scope":4636,"src":"1756:183:41","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":4622,"nodeType":"StructuredDocumentation","src":"1945:167:41","text":"@notice Whether proposal can be executed or not.\n @param proposalId The id of the proposal.\n @return bool Returns if proposal can be executed or not."},"functionSelector":"cc63604a","id":4629,"implemented":false,"kind":"function","modifiers":[],"name":"canExecute","nameLocation":"2126:10:41","nodeType":"FunctionDefinition","parameters":{"id":4625,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4624,"mutability":"mutable","name":"proposalId","nameLocation":"2145:10:41","nodeType":"VariableDeclaration","scope":4629,"src":"2137:18:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4623,"name":"uint256","nodeType":"ElementaryTypeName","src":"2137:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2136:20:41"},"returnParameters":{"id":4628,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4627,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4629,"src":"2175:4:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4626,"name":"bool","nodeType":"ElementaryTypeName","src":"2175:4:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2174:6:41"},"scope":4636,"src":"2117:64:41","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":4630,"nodeType":"StructuredDocumentation","src":"2187:155:41","text":"@notice Returns the proposal count determining the next proposal ID.\n @dev This function is deprecated TODO:\n @return The proposal count."},"functionSelector":"da35c664","id":4635,"implemented":false,"kind":"function","modifiers":[],"name":"proposalCount","nameLocation":"2356:13:41","nodeType":"FunctionDefinition","parameters":{"id":4631,"nodeType":"ParameterList","parameters":[],"src":"2369:2:41"},"returnParameters":{"id":4634,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4633,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4635,"src":"2395:7:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4632,"name":"uint256","nodeType":"ElementaryTypeName","src":"2395:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2394:9:41"},"scope":4636,"src":"2347:57:41","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":4637,"src":"309:2097:41","usedErrors":[]}],"src":"47:2360:41"},"id":41},"src/plugin/extensions/proposal/Proposal.sol":{"ast":{"absolutePath":"src/plugin/extensions/proposal/Proposal.sol","exportedSymbols":{"Counters":[2241],"ERC165":[2375],"IDAO":[2538],"IProposal":[4636],"Proposal":[4709]},"id":4710,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":4638,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:42"},{"absolutePath":"@openzeppelin/contracts/utils/Counters.sol","file":"@openzeppelin/contracts/utils/Counters.sol","id":4640,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4710,"sourceUnit":2242,"src":"72:68:42","symbolAliases":[{"foreign":{"id":4639,"name":"Counters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2241,"src":"80:8:42","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/introspection/ERC165.sol","file":"@openzeppelin/contracts/utils/introspection/ERC165.sol","id":4642,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4710,"sourceUnit":2376,"src":"141:78:42","symbolAliases":[{"foreign":{"id":4641,"name":"ERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2375,"src":"149:6:42","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/dao/IDAO.sol","file":"../../../dao/IDAO.sol","id":4644,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4710,"sourceUnit":2539,"src":"221:43:42","symbolAliases":[{"foreign":{"id":4643,"name":"IDAO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2538,"src":"229:4:42","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/plugin/extensions/proposal/IProposal.sol","file":"./IProposal.sol","id":4646,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4710,"sourceUnit":4637,"src":"265:42:42","symbolAliases":[{"foreign":{"id":4645,"name":"IProposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4636,"src":"273:9:42","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":4648,"name":"IProposal","nameLocations":["605:9:42"],"nodeType":"IdentifierPath","referencedDeclaration":4636,"src":"605:9:42"},"id":4649,"nodeType":"InheritanceSpecifier","src":"605:9:42"},{"baseName":{"id":4650,"name":"ERC165","nameLocations":["616:6:42"],"nodeType":"IdentifierPath","referencedDeclaration":2375,"src":"616:6:42"},"id":4651,"nodeType":"InheritanceSpecifier","src":"616:6:42"}],"canonicalName":"Proposal","contractDependencies":[],"contractKind":"contract","documentation":{"id":4647,"nodeType":"StructuredDocumentation","src":"309:266:42","text":"@title Proposal\n @author Aragon X - 2022-2023\n @notice An abstract contract containing the traits and internal functionality to create and execute proposals that can be inherited by non-upgradeable DAO plugins.\n @custom:security-contact sirt@aragon.org"},"fullyImplemented":false,"id":4709,"linearizedBaseContracts":[4709,2375,2387,4636],"name":"Proposal","nameLocation":"593:8:42","nodeType":"ContractDefinition","nodes":[{"global":false,"id":4655,"libraryName":{"id":4652,"name":"Counters","nameLocations":["635:8:42"],"nodeType":"IdentifierPath","referencedDeclaration":2241,"src":"635:8:42"},"nodeType":"UsingForDirective","src":"629:36:42","typeName":{"id":4654,"nodeType":"UserDefinedTypeName","pathNode":{"id":4653,"name":"Counters.Counter","nameLocations":["648:8:42","657:7:42"],"nodeType":"IdentifierPath","referencedDeclaration":2173,"src":"648:16:42"},"referencedDeclaration":2173,"src":"648:16:42","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$2173_storage_ptr","typeString":"struct Counters.Counter"}}},{"constant":false,"documentation":{"id":4656,"nodeType":"StructuredDocumentation","src":"671:60:42","text":"@notice The incremental ID for proposals and executions."},"id":4659,"mutability":"mutable","name":"proposalCounter","nameLocation":"761:15:42","nodeType":"VariableDeclaration","scope":4709,"src":"736:40:42","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$2173_storage","typeString":"struct Counters.Counter"},"typeName":{"id":4658,"nodeType":"UserDefinedTypeName","pathNode":{"id":4657,"name":"Counters.Counter","nameLocations":["736:8:42","745:7:42"],"nodeType":"IdentifierPath","referencedDeclaration":2173,"src":"736:16:42"},"referencedDeclaration":2173,"src":"736:16:42","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$2173_storage_ptr","typeString":"struct Counters.Counter"}},"visibility":"private"},{"baseFunctions":[4635],"body":{"id":4670,"nodeType":"Block","src":"1018:49:42","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":4666,"name":"proposalCounter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4659,"src":"1035:15:42","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$2173_storage","typeString":"struct Counters.Counter storage ref"}},"id":4667,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1051:7:42","memberName":"current","nodeType":"MemberAccess","referencedDeclaration":2185,"src":"1035:23:42","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Counter_$2173_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Counter_$2173_storage_ptr_$","typeString":"function (struct Counters.Counter storage pointer) view returns (uint256)"}},"id":4668,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1035:25:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4665,"id":4669,"nodeType":"Return","src":"1028:32:42"}]},"documentation":{"id":4660,"nodeType":"StructuredDocumentation","src":"924:25:42","text":"@inheritdoc IProposal"},"functionSelector":"da35c664","id":4671,"implemented":true,"kind":"function","modifiers":[],"name":"proposalCount","nameLocation":"963:13:42","nodeType":"FunctionDefinition","overrides":{"id":4662,"nodeType":"OverrideSpecifier","overrides":[],"src":"991:8:42"},"parameters":{"id":4661,"nodeType":"ParameterList","parameters":[],"src":"976:2:42"},"returnParameters":{"id":4665,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4664,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4671,"src":"1009:7:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4663,"name":"uint256","nodeType":"ElementaryTypeName","src":"1009:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1008:9:42"},"scope":4709,"src":"954:113:42","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[2374],"body":{"id":4707,"nodeType":"Block","src":"1367:477:42","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":4705,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":4700,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":4693,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4680,"name":"_interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4674,"src":"1570:12:42","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":4692,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":4688,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":4682,"name":"IProposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4636,"src":"1603:9:42","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IProposal_$4636_$","typeString":"type(contract IProposal)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IProposal_$4636_$","typeString":"type(contract IProposal)"}],"id":4681,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"1598:4:42","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":4683,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1598:15:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IProposal_$4636","typeString":"type(contract IProposal)"}},"id":4684,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1614:11:42","memberName":"interfaceId","nodeType":"MemberAccess","src":"1598:27:42","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"expression":{"expression":{"id":4685,"name":"IProposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4636,"src":"1644:9:42","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IProposal_$4636_$","typeString":"type(contract IProposal)"}},"id":4686,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1654:14:42","memberName":"createProposal","nodeType":"MemberAccess","referencedDeclaration":4621,"src":"1644:24:42","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_bytes_memory_ptr_$_t_array$_t_struct$_Action_$2397_memory_ptr_$dyn_memory_ptr_$_t_uint64_$_t_uint64_$returns$_t_uint256_$","typeString":"function IProposal.createProposal(bytes memory,struct IDAO.Action memory[] memory,uint64,uint64) returns (uint256)"}},"id":4687,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1669:8:42","memberName":"selector","nodeType":"MemberAccess","src":"1644:33:42","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"1598:79:42","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"expression":{"expression":{"id":4689,"name":"IProposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4636,"src":"1696:9:42","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IProposal_$4636_$","typeString":"type(contract IProposal)"}},"id":4690,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1706:10:42","memberName":"canExecute","nodeType":"MemberAccess","referencedDeclaration":4629,"src":"1696:20:42","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_uint256_$returns$_t_bool_$","typeString":"function IProposal.canExecute(uint256) returns (bool)"}},"id":4691,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1717:8:42","memberName":"selector","nodeType":"MemberAccess","src":"1696:29:42","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"1598:127:42","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"1570:155:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":4699,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4694,"name":"_interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4674,"src":"1741:12:42","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":4696,"name":"IProposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4636,"src":"1762:9:42","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IProposal_$4636_$","typeString":"type(contract IProposal)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IProposal_$4636_$","typeString":"type(contract IProposal)"}],"id":4695,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"1757:4:42","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":4697,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1757:15:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IProposal_$4636","typeString":"type(contract IProposal)"}},"id":4698,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1773:11:42","memberName":"interfaceId","nodeType":"MemberAccess","src":"1757:27:42","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"1741:43:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1570:214:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":4703,"name":"_interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4674,"src":"1824:12:42","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":4701,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967271,"src":"1800:5:42","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_Proposal_$4709_$","typeString":"type(contract super Proposal)"}},"id":4702,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1806:17:42","memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":2374,"src":"1800:23:42","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bool_$","typeString":"function (bytes4) view returns (bool)"}},"id":4704,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1800:37:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1570:267:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":4679,"id":4706,"nodeType":"Return","src":"1551:286:42"}]},"documentation":{"id":4672,"nodeType":"StructuredDocumentation","src":"1073:197:42","text":"@notice Checks if this or the parent contract supports an interface by its ID.\n @param _interfaceId The ID of the interface.\n @return Returns `true` if the interface is supported."},"functionSelector":"01ffc9a7","id":4708,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"1284:17:42","nodeType":"FunctionDefinition","overrides":{"id":4676,"nodeType":"OverrideSpecifier","overrides":[],"src":"1343:8:42"},"parameters":{"id":4675,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4674,"mutability":"mutable","name":"_interfaceId","nameLocation":"1309:12:42","nodeType":"VariableDeclaration","scope":4708,"src":"1302:19:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":4673,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1302:6:42","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"1301:21:42"},"returnParameters":{"id":4679,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4678,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4708,"src":"1361:4:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4677,"name":"bool","nodeType":"ElementaryTypeName","src":"1361:4:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1360:6:42"},"scope":4709,"src":"1275:569:42","stateMutability":"view","virtual":true,"visibility":"public"}],"scope":4710,"src":"575:1271:42","usedErrors":[]}],"src":"47:1800:42"},"id":42},"src/plugin/extensions/proposal/ProposalUpgradeable.sol":{"ast":{"absolutePath":"src/plugin/extensions/proposal/ProposalUpgradeable.sol","exportedSymbols":{"CountersUpgradeable":[1126],"ERC165Upgradeable":[1281],"IDAO":[2538],"IProposal":[4636],"ProposalUpgradeable":[4787]},"id":4788,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":4711,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:43"},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol","id":4713,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4788,"sourceUnit":1127,"src":"72:102:43","symbolAliases":[{"foreign":{"id":4712,"name":"CountersUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1126,"src":"80:19:43","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol","file":"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol","id":4715,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4788,"sourceUnit":1282,"src":"175:112:43","symbolAliases":[{"foreign":{"id":4714,"name":"ERC165Upgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1281,"src":"183:17:43","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/dao/IDAO.sol","file":"../../../dao/IDAO.sol","id":4717,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4788,"sourceUnit":2539,"src":"289:43:43","symbolAliases":[{"foreign":{"id":4716,"name":"IDAO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2538,"src":"297:4:43","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/plugin/extensions/proposal/IProposal.sol","file":"./IProposal.sol","id":4719,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4788,"sourceUnit":4637,"src":"333:42:43","symbolAliases":[{"foreign":{"id":4718,"name":"IProposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4636,"src":"341:9:43","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":4721,"name":"IProposal","nameLocations":["691:9:43"],"nodeType":"IdentifierPath","referencedDeclaration":4636,"src":"691:9:43"},"id":4722,"nodeType":"InheritanceSpecifier","src":"691:9:43"},{"baseName":{"id":4723,"name":"ERC165Upgradeable","nameLocations":["702:17:43"],"nodeType":"IdentifierPath","referencedDeclaration":1281,"src":"702:17:43"},"id":4724,"nodeType":"InheritanceSpecifier","src":"702:17:43"}],"canonicalName":"ProposalUpgradeable","contractDependencies":[],"contractKind":"contract","documentation":{"id":4720,"nodeType":"StructuredDocumentation","src":"377:273:43","text":"@title ProposalUpgradeable\n @author Aragon X - 2022-2023\n @notice An abstract contract containing the traits and internal functionality to create and execute proposals that can be inherited by upgradeable DAO plugins.\n @custom:security-contact sirt@aragon.org"},"fullyImplemented":false,"id":4787,"linearizedBaseContracts":[4787,1281,1293,534,4636],"name":"ProposalUpgradeable","nameLocation":"668:19:43","nodeType":"ContractDefinition","nodes":[{"global":false,"id":4728,"libraryName":{"id":4725,"name":"CountersUpgradeable","nameLocations":["732:19:43"],"nodeType":"IdentifierPath","referencedDeclaration":1126,"src":"732:19:43"},"nodeType":"UsingForDirective","src":"726:58:43","typeName":{"id":4727,"nodeType":"UserDefinedTypeName","pathNode":{"id":4726,"name":"CountersUpgradeable.Counter","nameLocations":["756:19:43","776:7:43"],"nodeType":"IdentifierPath","referencedDeclaration":1058,"src":"756:27:43"},"referencedDeclaration":1058,"src":"756:27:43","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$1058_storage_ptr","typeString":"struct CountersUpgradeable.Counter"}}},{"constant":false,"documentation":{"id":4729,"nodeType":"StructuredDocumentation","src":"790:60:43","text":"@notice The incremental ID for proposals and executions."},"id":4732,"mutability":"mutable","name":"proposalCounter","nameLocation":"891:15:43","nodeType":"VariableDeclaration","scope":4787,"src":"855:51:43","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$1058_storage","typeString":"struct CountersUpgradeable.Counter"},"typeName":{"id":4731,"nodeType":"UserDefinedTypeName","pathNode":{"id":4730,"name":"CountersUpgradeable.Counter","nameLocations":["855:19:43","875:7:43"],"nodeType":"IdentifierPath","referencedDeclaration":1058,"src":"855:27:43"},"referencedDeclaration":1058,"src":"855:27:43","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$1058_storage_ptr","typeString":"struct CountersUpgradeable.Counter"}},"visibility":"private"},{"baseFunctions":[4635],"body":{"id":4743,"nodeType":"Block","src":"1007:49:43","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":4739,"name":"proposalCounter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4732,"src":"1024:15:43","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$1058_storage","typeString":"struct CountersUpgradeable.Counter storage ref"}},"id":4740,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1040:7:43","memberName":"current","nodeType":"MemberAccess","referencedDeclaration":1070,"src":"1024:23:43","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Counter_$1058_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Counter_$1058_storage_ptr_$","typeString":"function (struct CountersUpgradeable.Counter storage pointer) view returns (uint256)"}},"id":4741,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1024:25:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4738,"id":4742,"nodeType":"Return","src":"1017:32:43"}]},"documentation":{"id":4733,"nodeType":"StructuredDocumentation","src":"913:25:43","text":"@inheritdoc IProposal"},"functionSelector":"da35c664","id":4744,"implemented":true,"kind":"function","modifiers":[],"name":"proposalCount","nameLocation":"952:13:43","nodeType":"FunctionDefinition","overrides":{"id":4735,"nodeType":"OverrideSpecifier","overrides":[],"src":"980:8:43"},"parameters":{"id":4734,"nodeType":"ParameterList","parameters":[],"src":"965:2:43"},"returnParameters":{"id":4738,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4737,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4744,"src":"998:7:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4736,"name":"uint256","nodeType":"ElementaryTypeName","src":"998:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"997:9:43"},"scope":4787,"src":"943:113:43","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[1275],"body":{"id":4780,"nodeType":"Block","src":"1356:477:43","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":4778,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":4773,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":4766,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4753,"name":"_interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4747,"src":"1559:12:43","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":4765,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":4761,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":4755,"name":"IProposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4636,"src":"1592:9:43","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IProposal_$4636_$","typeString":"type(contract IProposal)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IProposal_$4636_$","typeString":"type(contract IProposal)"}],"id":4754,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"1587:4:43","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":4756,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1587:15:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IProposal_$4636","typeString":"type(contract IProposal)"}},"id":4757,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1603:11:43","memberName":"interfaceId","nodeType":"MemberAccess","src":"1587:27:43","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"expression":{"expression":{"id":4758,"name":"IProposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4636,"src":"1633:9:43","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IProposal_$4636_$","typeString":"type(contract IProposal)"}},"id":4759,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1643:14:43","memberName":"createProposal","nodeType":"MemberAccess","referencedDeclaration":4621,"src":"1633:24:43","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_bytes_memory_ptr_$_t_array$_t_struct$_Action_$2397_memory_ptr_$dyn_memory_ptr_$_t_uint64_$_t_uint64_$returns$_t_uint256_$","typeString":"function IProposal.createProposal(bytes memory,struct IDAO.Action memory[] memory,uint64,uint64) returns (uint256)"}},"id":4760,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1658:8:43","memberName":"selector","nodeType":"MemberAccess","src":"1633:33:43","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"1587:79:43","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"expression":{"expression":{"id":4762,"name":"IProposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4636,"src":"1685:9:43","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IProposal_$4636_$","typeString":"type(contract IProposal)"}},"id":4763,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1695:10:43","memberName":"canExecute","nodeType":"MemberAccess","referencedDeclaration":4629,"src":"1685:20:43","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_uint256_$returns$_t_bool_$","typeString":"function IProposal.canExecute(uint256) returns (bool)"}},"id":4764,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1706:8:43","memberName":"selector","nodeType":"MemberAccess","src":"1685:29:43","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"1587:127:43","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"1559:155:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":4772,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4767,"name":"_interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4747,"src":"1730:12:43","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":4769,"name":"IProposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4636,"src":"1751:9:43","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IProposal_$4636_$","typeString":"type(contract IProposal)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IProposal_$4636_$","typeString":"type(contract IProposal)"}],"id":4768,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"1746:4:43","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":4770,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1746:15:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IProposal_$4636","typeString":"type(contract IProposal)"}},"id":4771,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1762:11:43","memberName":"interfaceId","nodeType":"MemberAccess","src":"1746:27:43","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"1730:43:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1559:214:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":4776,"name":"_interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4747,"src":"1813:12:43","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":4774,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967271,"src":"1789:5:43","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_ProposalUpgradeable_$4787_$","typeString":"type(contract super ProposalUpgradeable)"}},"id":4775,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1795:17:43","memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":1275,"src":"1789:23:43","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bool_$","typeString":"function (bytes4) view returns (bool)"}},"id":4777,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1789:37:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1559:267:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":4752,"id":4779,"nodeType":"Return","src":"1540:286:43"}]},"documentation":{"id":4745,"nodeType":"StructuredDocumentation","src":"1062:197:43","text":"@notice Checks if this or the parent contract supports an interface by its ID.\n @param _interfaceId The ID of the interface.\n @return Returns `true` if the interface is supported."},"functionSelector":"01ffc9a7","id":4781,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"1273:17:43","nodeType":"FunctionDefinition","overrides":{"id":4749,"nodeType":"OverrideSpecifier","overrides":[],"src":"1332:8:43"},"parameters":{"id":4748,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4747,"mutability":"mutable","name":"_interfaceId","nameLocation":"1298:12:43","nodeType":"VariableDeclaration","scope":4781,"src":"1291:19:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":4746,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1291:6:43","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"1290:21:43"},"returnParameters":{"id":4752,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4751,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4781,"src":"1350:4:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4750,"name":"bool","nodeType":"ElementaryTypeName","src":"1350:4:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1349:6:43"},"scope":4787,"src":"1264:569:43","stateMutability":"view","virtual":true,"visibility":"public"},{"constant":false,"documentation":{"id":4782,"nodeType":"StructuredDocumentation","src":"1839:273:43","text":"@notice This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain (see [OpenZeppelin's guide about storage gaps](https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps))."},"id":4786,"mutability":"mutable","name":"__gap","nameLocation":"2137:5:43","nodeType":"VariableDeclaration","scope":4787,"src":"2117:25:43","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$49_storage","typeString":"uint256[49]"},"typeName":{"baseType":{"id":4783,"name":"uint256","nodeType":"ElementaryTypeName","src":"2117:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4785,"length":{"hexValue":"3439","id":4784,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2125:2:43","typeDescriptions":{"typeIdentifier":"t_rational_49_by_1","typeString":"int_const 49"},"value":"49"},"nodeType":"ArrayTypeName","src":"2117:11:43","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$49_storage_ptr","typeString":"uint256[49]"}},"visibility":"private"}],"scope":4788,"src":"650:1495:43","usedErrors":[]}],"src":"47:2099:43"},"id":43},"src/plugin/setup/IPluginSetup.sol":{"ast":{"absolutePath":"src/plugin/setup/IPluginSetup.sol","exportedSymbols":{"IDAO":[2538],"IPluginSetup":[4859],"PermissionLib":[3814]},"id":4860,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":4789,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:44"},{"absolutePath":"src/permission/PermissionLib.sol","file":"../../permission/PermissionLib.sol","id":4791,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4860,"sourceUnit":3815,"src":"72:65:44","symbolAliases":[{"foreign":{"id":4790,"name":"PermissionLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3814,"src":"80:13:44","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/dao/IDAO.sol","file":"../../dao/IDAO.sol","id":4793,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4860,"sourceUnit":2539,"src":"185:40:44","symbolAliases":[{"foreign":{"id":4792,"name":"IDAO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2538,"src":"193:4:44","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"IPluginSetup","contractDependencies":[],"contractKind":"interface","documentation":{"id":4794,"nodeType":"StructuredDocumentation","src":"227:266:44","text":"@title IPluginSetup\n @author Aragon X - 2022-2023\n @notice The interface required for a plugin setup contract to be consumed by the `PluginSetupProcessor` for plugin installations, updates, and uninstallations.\n @custom:security-contact sirt@aragon.org"},"fullyImplemented":false,"id":4859,"linearizedBaseContracts":[4859],"name":"IPluginSetup","nameLocation":"503:12:44","nodeType":"ContractDefinition","nodes":[{"canonicalName":"IPluginSetup.PreparedSetupData","id":4802,"members":[{"constant":false,"id":4797,"mutability":"mutable","name":"helpers","nameLocation":"924:7:44","nodeType":"VariableDeclaration","scope":4802,"src":"914:17:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":4795,"name":"address","nodeType":"ElementaryTypeName","src":"914:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":4796,"nodeType":"ArrayTypeName","src":"914:9:44","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":4801,"mutability":"mutable","name":"permissions","nameLocation":"979:11:44","nodeType":"VariableDeclaration","scope":4802,"src":"941:49:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_storage_$dyn_storage_ptr","typeString":"struct PermissionLib.MultiTargetPermission[]"},"typeName":{"baseType":{"id":4799,"nodeType":"UserDefinedTypeName","pathNode":{"id":4798,"name":"PermissionLib.MultiTargetPermission","nameLocations":["941:13:44","955:21:44"],"nodeType":"IdentifierPath","referencedDeclaration":3813,"src":"941:35:44"},"referencedDeclaration":3813,"src":"941:35:44","typeDescriptions":{"typeIdentifier":"t_struct$_MultiTargetPermission_$3813_storage_ptr","typeString":"struct PermissionLib.MultiTargetPermission"}},"id":4800,"nodeType":"ArrayTypeName","src":"941:37:44","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_storage_$dyn_storage_ptr","typeString":"struct PermissionLib.MultiTargetPermission[]"}},"visibility":"internal"}],"name":"PreparedSetupData","nameLocation":"886:17:44","nodeType":"StructDefinition","scope":4859,"src":"879:118:44","visibility":"public"},{"canonicalName":"IPluginSetup.SetupPayload","id":4810,"members":[{"constant":false,"id":4804,"mutability":"mutable","name":"plugin","nameLocation":"1568:6:44","nodeType":"VariableDeclaration","scope":4810,"src":"1560:14:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4803,"name":"address","nodeType":"ElementaryTypeName","src":"1560:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4807,"mutability":"mutable","name":"currentHelpers","nameLocation":"1594:14:44","nodeType":"VariableDeclaration","scope":4810,"src":"1584:24:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":4805,"name":"address","nodeType":"ElementaryTypeName","src":"1584:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":4806,"nodeType":"ArrayTypeName","src":"1584:9:44","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":4809,"mutability":"mutable","name":"data","nameLocation":"1624:4:44","nodeType":"VariableDeclaration","scope":4810,"src":"1618:10:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":4808,"name":"bytes","nodeType":"ElementaryTypeName","src":"1618:5:44","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"name":"SetupPayload","nameLocation":"1537:12:44","nodeType":"StructDefinition","scope":4859,"src":"1530:105:44","visibility":"public"},{"documentation":{"id":4811,"nodeType":"StructuredDocumentation","src":"1641:463:44","text":"@notice Prepares the installation of a plugin.\n @param _dao The address of the installing DAO.\n @param _data The bytes-encoded data containing the input parameters for the installation as specified in the plugin's build metadata JSON file.\n @return plugin The address of the `Plugin` contract being prepared for installation.\n @return preparedSetupData The deployed plugin's relevant data which consists of helpers and permissions."},"functionSelector":"f10832f1","id":4823,"implemented":false,"kind":"function","modifiers":[],"name":"prepareInstallation","nameLocation":"2118:19:44","nodeType":"FunctionDefinition","parameters":{"id":4816,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4813,"mutability":"mutable","name":"_dao","nameLocation":"2155:4:44","nodeType":"VariableDeclaration","scope":4823,"src":"2147:12:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4812,"name":"address","nodeType":"ElementaryTypeName","src":"2147:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4815,"mutability":"mutable","name":"_data","nameLocation":"2184:5:44","nodeType":"VariableDeclaration","scope":4823,"src":"2169:20:44","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":4814,"name":"bytes","nodeType":"ElementaryTypeName","src":"2169:5:44","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2137:58:44"},"returnParameters":{"id":4822,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4818,"mutability":"mutable","name":"plugin","nameLocation":"2222:6:44","nodeType":"VariableDeclaration","scope":4823,"src":"2214:14:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4817,"name":"address","nodeType":"ElementaryTypeName","src":"2214:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4821,"mutability":"mutable","name":"preparedSetupData","nameLocation":"2255:17:44","nodeType":"VariableDeclaration","scope":4823,"src":"2230:42:44","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$4802_memory_ptr","typeString":"struct IPluginSetup.PreparedSetupData"},"typeName":{"id":4820,"nodeType":"UserDefinedTypeName","pathNode":{"id":4819,"name":"PreparedSetupData","nameLocations":["2230:17:44"],"nodeType":"IdentifierPath","referencedDeclaration":4802,"src":"2230:17:44"},"referencedDeclaration":4802,"src":"2230:17:44","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$4802_storage_ptr","typeString":"struct IPluginSetup.PreparedSetupData"}},"visibility":"internal"}],"src":"2213:60:44"},"scope":4859,"src":"2109:165:44","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":4824,"nodeType":"StructuredDocumentation","src":"2280:516:44","text":"@notice Prepares the update of a plugin.\n @param _dao The address of the updating DAO.\n @param _fromBuild The build number of the plugin to update from.\n @param _payload The relevant data necessary for the `prepareUpdate`. See above.\n @return initData The initialization data to be passed to upgradeable contracts when the update is applied in the `PluginSetupProcessor`.\n @return preparedSetupData The deployed plugin's relevant data which consists of helpers and permissions."},"functionSelector":"a8a9c29e","id":4839,"implemented":false,"kind":"function","modifiers":[],"name":"prepareUpdate","nameLocation":"2810:13:44","nodeType":"FunctionDefinition","parameters":{"id":4832,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4826,"mutability":"mutable","name":"_dao","nameLocation":"2841:4:44","nodeType":"VariableDeclaration","scope":4839,"src":"2833:12:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4825,"name":"address","nodeType":"ElementaryTypeName","src":"2833:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4828,"mutability":"mutable","name":"_fromBuild","nameLocation":"2862:10:44","nodeType":"VariableDeclaration","scope":4839,"src":"2855:17:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":4827,"name":"uint16","nodeType":"ElementaryTypeName","src":"2855:6:44","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":4831,"mutability":"mutable","name":"_payload","nameLocation":"2904:8:44","nodeType":"VariableDeclaration","scope":4839,"src":"2882:30:44","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$4810_calldata_ptr","typeString":"struct IPluginSetup.SetupPayload"},"typeName":{"id":4830,"nodeType":"UserDefinedTypeName","pathNode":{"id":4829,"name":"SetupPayload","nameLocations":["2882:12:44"],"nodeType":"IdentifierPath","referencedDeclaration":4810,"src":"2882:12:44"},"referencedDeclaration":4810,"src":"2882:12:44","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$4810_storage_ptr","typeString":"struct IPluginSetup.SetupPayload"}},"visibility":"internal"}],"src":"2823:95:44"},"returnParameters":{"id":4838,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4834,"mutability":"mutable","name":"initData","nameLocation":"2950:8:44","nodeType":"VariableDeclaration","scope":4839,"src":"2937:21:44","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4833,"name":"bytes","nodeType":"ElementaryTypeName","src":"2937:5:44","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":4837,"mutability":"mutable","name":"preparedSetupData","nameLocation":"2985:17:44","nodeType":"VariableDeclaration","scope":4839,"src":"2960:42:44","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$4802_memory_ptr","typeString":"struct IPluginSetup.PreparedSetupData"},"typeName":{"id":4836,"nodeType":"UserDefinedTypeName","pathNode":{"id":4835,"name":"PreparedSetupData","nameLocations":["2960:17:44"],"nodeType":"IdentifierPath","referencedDeclaration":4802,"src":"2960:17:44"},"referencedDeclaration":4802,"src":"2960:17:44","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$4802_storage_ptr","typeString":"struct IPluginSetup.PreparedSetupData"}},"visibility":"internal"}],"src":"2936:67:44"},"scope":4859,"src":"2801:203:44","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":4840,"nodeType":"StructuredDocumentation","src":"3010:352:44","text":"@notice Prepares the uninstallation of a plugin.\n @param _dao The address of the uninstalling DAO.\n @param _payload The relevant data necessary for the `prepareUninstallation`. See above.\n @return permissions The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the uninstalling DAO."},"functionSelector":"9cb0a124","id":4852,"implemented":false,"kind":"function","modifiers":[],"name":"prepareUninstallation","nameLocation":"3376:21:44","nodeType":"FunctionDefinition","parameters":{"id":4846,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4842,"mutability":"mutable","name":"_dao","nameLocation":"3415:4:44","nodeType":"VariableDeclaration","scope":4852,"src":"3407:12:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4841,"name":"address","nodeType":"ElementaryTypeName","src":"3407:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4845,"mutability":"mutable","name":"_payload","nameLocation":"3451:8:44","nodeType":"VariableDeclaration","scope":4852,"src":"3429:30:44","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$4810_calldata_ptr","typeString":"struct IPluginSetup.SetupPayload"},"typeName":{"id":4844,"nodeType":"UserDefinedTypeName","pathNode":{"id":4843,"name":"SetupPayload","nameLocations":["3429:12:44"],"nodeType":"IdentifierPath","referencedDeclaration":4810,"src":"3429:12:44"},"referencedDeclaration":4810,"src":"3429:12:44","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$4810_storage_ptr","typeString":"struct IPluginSetup.SetupPayload"}},"visibility":"internal"}],"src":"3397:68:44"},"returnParameters":{"id":4851,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4850,"mutability":"mutable","name":"permissions","nameLocation":"3529:11:44","nodeType":"VariableDeclaration","scope":4852,"src":"3484:56:44","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission[]"},"typeName":{"baseType":{"id":4848,"nodeType":"UserDefinedTypeName","pathNode":{"id":4847,"name":"PermissionLib.MultiTargetPermission","nameLocations":["3484:13:44","3498:21:44"],"nodeType":"IdentifierPath","referencedDeclaration":3813,"src":"3484:35:44"},"referencedDeclaration":3813,"src":"3484:35:44","typeDescriptions":{"typeIdentifier":"t_struct$_MultiTargetPermission_$3813_storage_ptr","typeString":"struct PermissionLib.MultiTargetPermission"}},"id":4849,"nodeType":"ArrayTypeName","src":"3484:37:44","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_storage_$dyn_storage_ptr","typeString":"struct PermissionLib.MultiTargetPermission[]"}},"visibility":"internal"}],"src":"3483:58:44"},"scope":4859,"src":"3367:175:44","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":4853,"nodeType":"StructuredDocumentation","src":"3548:389:44","text":"@notice Returns the plugin implementation address.\n @return The address of the plugin implementation contract.\n @dev The implementation can be instantiated via the `new` keyword, cloned via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)), or proxied via the UUPS proxy pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822))."},"functionSelector":"5c60da1b","id":4858,"implemented":false,"kind":"function","modifiers":[],"name":"implementation","nameLocation":"3951:14:44","nodeType":"FunctionDefinition","parameters":{"id":4854,"nodeType":"ParameterList","parameters":[],"src":"3965:2:44"},"returnParameters":{"id":4857,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4856,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4858,"src":"3991:7:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4855,"name":"address","nodeType":"ElementaryTypeName","src":"3991:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3990:9:44"},"scope":4859,"src":"3942:58:44","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":4860,"src":"493:3509:44","usedErrors":[]}],"src":"47:3956:44"},"id":44},"src/plugin/setup/PluginSetup.sol":{"ast":{"absolutePath":"src/plugin/setup/PluginSetup.sol","exportedSymbols":{"ERC165":[2375],"IPluginSetup":[4859],"IProtocolVersion":[5114],"PluginSetup":[4957],"ProtocolVersion":[5136]},"id":4958,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":4861,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:45"},{"absolutePath":"@openzeppelin/contracts/utils/introspection/ERC165.sol","file":"@openzeppelin/contracts/utils/introspection/ERC165.sol","id":4863,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4958,"sourceUnit":2376,"src":"72:78:45","symbolAliases":[{"foreign":{"id":4862,"name":"ERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2375,"src":"80:6:45","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/utils/versioning/IProtocolVersion.sol","file":"../../utils/versioning/IProtocolVersion.sol","id":4865,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4958,"sourceUnit":5115,"src":"152:77:45","symbolAliases":[{"foreign":{"id":4864,"name":"IProtocolVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5114,"src":"160:16:45","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/utils/versioning/ProtocolVersion.sol","file":"../../utils/versioning/ProtocolVersion.sol","id":4867,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4958,"sourceUnit":5137,"src":"230:75:45","symbolAliases":[{"foreign":{"id":4866,"name":"ProtocolVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5136,"src":"238:15:45","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/plugin/setup/IPluginSetup.sol","file":"./IPluginSetup.sol","id":4869,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4958,"sourceUnit":4860,"src":"306:48:45","symbolAliases":[{"foreign":{"id":4868,"name":"IPluginSetup","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4859,"src":"314:12:45","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":4871,"name":"ERC165","nameLocations":["783:6:45"],"nodeType":"IdentifierPath","referencedDeclaration":2375,"src":"783:6:45"},"id":4872,"nodeType":"InheritanceSpecifier","src":"783:6:45"},{"baseName":{"id":4873,"name":"IPluginSetup","nameLocations":["791:12:45"],"nodeType":"IdentifierPath","referencedDeclaration":4859,"src":"791:12:45"},"id":4874,"nodeType":"InheritanceSpecifier","src":"791:12:45"},{"baseName":{"id":4875,"name":"ProtocolVersion","nameLocations":["805:15:45"],"nodeType":"IdentifierPath","referencedDeclaration":5136,"src":"805:15:45"},"id":4876,"nodeType":"InheritanceSpecifier","src":"805:15:45"}],"canonicalName":"PluginSetup","contractDependencies":[],"contractKind":"contract","documentation":{"id":4870,"nodeType":"StructuredDocumentation","src":"356:394:45","text":"@title PluginSetup\n @author Aragon X - 2022-2024\n @notice An abstract contract to inherit from to implement the plugin setup for non-upgradeable plugins, i.e,\n - `Plugin` being deployed via the `new` keyword\n - `PluginCloneable` being deployed via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)).\n @custom:security-contact sirt@aragon.org"},"fullyImplemented":false,"id":4957,"linearizedBaseContracts":[4957,5136,5114,4859,2375,2387],"name":"PluginSetup","nameLocation":"768:11:45","nodeType":"ContractDefinition","nodes":[{"constant":false,"documentation":{"id":4877,"nodeType":"StructuredDocumentation","src":"827:230:45","text":"@notice The address of the plugin implementation contract for initial block explorer verification and, in the case of `PluginClonable` implementations, to create [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167) clones from."},"id":4879,"mutability":"immutable","name":"IMPLEMENTATION","nameLocation":"1089:14:45","nodeType":"VariableDeclaration","scope":4957,"src":"1062:41:45","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4878,"name":"address","nodeType":"ElementaryTypeName","src":"1062:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"documentation":{"id":4880,"nodeType":"StructuredDocumentation","src":"1110:84:45","text":"@notice Thrown when attempting to prepare an update on a non-upgradeable plugin."},"errorSelector":"a1128101","id":4882,"name":"NonUpgradeablePlugin","nameLocation":"1205:20:45","nodeType":"ErrorDefinition","parameters":{"id":4881,"nodeType":"ParameterList","parameters":[],"src":"1225:2:45"},"src":"1199:29:45"},{"body":{"id":4892,"nodeType":"Block","src":"1444:49:45","statements":[{"expression":{"id":4890,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4888,"name":"IMPLEMENTATION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4879,"src":"1454:14:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":4889,"name":"_implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4885,"src":"1471:15:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1454:32:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":4891,"nodeType":"ExpressionStatement","src":"1454:32:45"}]},"documentation":{"id":4883,"nodeType":"StructuredDocumentation","src":"1234:168:45","text":"@notice The contract constructor, that setting the plugin implementation contract.\n @param _implementation The address of the plugin implementation contract."},"id":4893,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":4886,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4885,"mutability":"mutable","name":"_implementation","nameLocation":"1427:15:45","nodeType":"VariableDeclaration","scope":4893,"src":"1419:23:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4884,"name":"address","nodeType":"ElementaryTypeName","src":"1419:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1418:25:45"},"returnParameters":{"id":4887,"nodeType":"ParameterList","parameters":[],"src":"1444:0:45"},"scope":4957,"src":"1407:86:45","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[4839],"body":{"id":4917,"nodeType":"Block","src":"1820:84:45","statements":[{"expression":{"components":[{"id":4909,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4896,"src":"1831:4:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4910,"name":"_fromBuild","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4898,"src":"1837:10:45","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"id":4911,"name":"_payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4901,"src":"1849:8:45","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$4810_calldata_ptr","typeString":"struct IPluginSetup.SetupPayload calldata"}}],"id":4912,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1830:28:45","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint16_$_t_struct$_SetupPayload_$4810_calldata_ptr_$","typeString":"tuple(address,uint16,struct IPluginSetup.SetupPayload calldata)"}},"id":4913,"nodeType":"ExpressionStatement","src":"1830:28:45"},{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":4914,"name":"NonUpgradeablePlugin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4882,"src":"1875:20:45","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":4915,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1875:22:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4916,"nodeType":"RevertStatement","src":"1868:29:45"}]},"documentation":{"id":4894,"nodeType":"StructuredDocumentation","src":"1499:135:45","text":"@inheritdoc IPluginSetup\n @dev Since the underlying plugin is non-upgradeable, this non-virtual function must always revert."},"functionSelector":"a8a9c29e","id":4918,"implemented":true,"kind":"function","modifiers":[],"name":"prepareUpdate","nameLocation":"1648:13:45","nodeType":"FunctionDefinition","parameters":{"id":4902,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4896,"mutability":"mutable","name":"_dao","nameLocation":"1679:4:45","nodeType":"VariableDeclaration","scope":4918,"src":"1671:12:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4895,"name":"address","nodeType":"ElementaryTypeName","src":"1671:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4898,"mutability":"mutable","name":"_fromBuild","nameLocation":"1700:10:45","nodeType":"VariableDeclaration","scope":4918,"src":"1693:17:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":4897,"name":"uint16","nodeType":"ElementaryTypeName","src":"1693:6:45","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":4901,"mutability":"mutable","name":"_payload","nameLocation":"1742:8:45","nodeType":"VariableDeclaration","scope":4918,"src":"1720:30:45","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$4810_calldata_ptr","typeString":"struct IPluginSetup.SetupPayload"},"typeName":{"id":4900,"nodeType":"UserDefinedTypeName","pathNode":{"id":4899,"name":"SetupPayload","nameLocations":["1720:12:45"],"nodeType":"IdentifierPath","referencedDeclaration":4810,"src":"1720:12:45"},"referencedDeclaration":4810,"src":"1720:12:45","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$4810_storage_ptr","typeString":"struct IPluginSetup.SetupPayload"}},"visibility":"internal"}],"src":"1661:95:45"},"returnParameters":{"id":4908,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4904,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4918,"src":"1780:12:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4903,"name":"bytes","nodeType":"ElementaryTypeName","src":"1780:5:45","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":4907,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4918,"src":"1794:24:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$4802_memory_ptr","typeString":"struct IPluginSetup.PreparedSetupData"},"typeName":{"id":4906,"nodeType":"UserDefinedTypeName","pathNode":{"id":4905,"name":"PreparedSetupData","nameLocations":["1794:17:45"],"nodeType":"IdentifierPath","referencedDeclaration":4802,"src":"1794:17:45"},"referencedDeclaration":4802,"src":"1794:17:45","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$4802_storage_ptr","typeString":"struct IPluginSetup.PreparedSetupData"}},"visibility":"internal"}],"src":"1779:40:45"},"scope":4957,"src":"1639:265:45","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[2374],"body":{"id":4946,"nodeType":"Block","src":"2204:201:45","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":4944,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":4939,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":4932,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4927,"name":"_interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4921,"src":"2233:12:45","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":4929,"name":"IPluginSetup","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4859,"src":"2254:12:45","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IPluginSetup_$4859_$","typeString":"type(contract IPluginSetup)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IPluginSetup_$4859_$","typeString":"type(contract IPluginSetup)"}],"id":4928,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"2249:4:45","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":4930,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2249:18:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IPluginSetup_$4859","typeString":"type(contract IPluginSetup)"}},"id":4931,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2268:11:45","memberName":"interfaceId","nodeType":"MemberAccess","src":"2249:30:45","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"2233:46:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":4938,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4933,"name":"_interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4921,"src":"2295:12:45","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":4935,"name":"IProtocolVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5114,"src":"2316:16:45","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IProtocolVersion_$5114_$","typeString":"type(contract IProtocolVersion)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IProtocolVersion_$5114_$","typeString":"type(contract IProtocolVersion)"}],"id":4934,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"2311:4:45","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":4936,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2311:22:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IProtocolVersion_$5114","typeString":"type(contract IProtocolVersion)"}},"id":4937,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2334:11:45","memberName":"interfaceId","nodeType":"MemberAccess","src":"2311:34:45","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"2295:50:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2233:112:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":4942,"name":"_interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4921,"src":"2385:12:45","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":4940,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967271,"src":"2361:5:45","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_PluginSetup_$4957_$","typeString":"type(contract super PluginSetup)"}},"id":4941,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2367:17:45","memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":2374,"src":"2361:23:45","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bool_$","typeString":"function (bytes4) view returns (bool)"}},"id":4943,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2361:37:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2233:165:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":4926,"id":4945,"nodeType":"Return","src":"2214:184:45"}]},"documentation":{"id":4919,"nodeType":"StructuredDocumentation","src":"1910:197:45","text":"@notice Checks if this or the parent contract supports an interface by its ID.\n @param _interfaceId The ID of the interface.\n @return Returns `true` if the interface is supported."},"functionSelector":"01ffc9a7","id":4947,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"2121:17:45","nodeType":"FunctionDefinition","overrides":{"id":4923,"nodeType":"OverrideSpecifier","overrides":[],"src":"2180:8:45"},"parameters":{"id":4922,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4921,"mutability":"mutable","name":"_interfaceId","nameLocation":"2146:12:45","nodeType":"VariableDeclaration","scope":4947,"src":"2139:19:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":4920,"name":"bytes4","nodeType":"ElementaryTypeName","src":"2139:6:45","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"2138:21:45"},"returnParameters":{"id":4926,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4925,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4947,"src":"2198:4:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4924,"name":"bool","nodeType":"ElementaryTypeName","src":"2198:4:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2197:6:45"},"scope":4957,"src":"2112:293:45","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[4858],"body":{"id":4955,"nodeType":"Block","src":"2500:38:45","statements":[{"expression":{"id":4953,"name":"IMPLEMENTATION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4879,"src":"2517:14:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":4952,"id":4954,"nodeType":"Return","src":"2510:21:45"}]},"documentation":{"id":4948,"nodeType":"StructuredDocumentation","src":"2411:28:45","text":"@inheritdoc IPluginSetup"},"functionSelector":"5c60da1b","id":4956,"implemented":true,"kind":"function","modifiers":[],"name":"implementation","nameLocation":"2453:14:45","nodeType":"FunctionDefinition","parameters":{"id":4949,"nodeType":"ParameterList","parameters":[],"src":"2467:2:45"},"returnParameters":{"id":4952,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4951,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4956,"src":"2491:7:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4950,"name":"address","nodeType":"ElementaryTypeName","src":"2491:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2490:9:45"},"scope":4957,"src":"2444:94:45","stateMutability":"view","virtual":false,"visibility":"public"}],"scope":4958,"src":"750:1790:45","usedErrors":[4882]}],"src":"47:2494:45"},"id":45},"src/plugin/setup/PluginUpgradeableSetup.sol":{"ast":{"absolutePath":"src/plugin/setup/PluginUpgradeableSetup.sol","exportedSymbols":{"ERC165":[2375],"IPluginSetup":[4859],"IProtocolVersion":[5114],"PluginUpgradeableSetup":[5034],"ProtocolVersion":[5136]},"id":5035,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":4959,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:46"},{"absolutePath":"@openzeppelin/contracts/utils/introspection/ERC165.sol","file":"@openzeppelin/contracts/utils/introspection/ERC165.sol","id":4961,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5035,"sourceUnit":2376,"src":"72:78:46","symbolAliases":[{"foreign":{"id":4960,"name":"ERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2375,"src":"80:6:46","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/utils/versioning/IProtocolVersion.sol","file":"../../utils/versioning/IProtocolVersion.sol","id":4963,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5035,"sourceUnit":5115,"src":"152:77:46","symbolAliases":[{"foreign":{"id":4962,"name":"IProtocolVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5114,"src":"160:16:46","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/utils/versioning/ProtocolVersion.sol","file":"../../utils/versioning/ProtocolVersion.sol","id":4965,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5035,"sourceUnit":5137,"src":"230:75:46","symbolAliases":[{"foreign":{"id":4964,"name":"ProtocolVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5136,"src":"238:15:46","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/plugin/setup/IPluginSetup.sol","file":"./IPluginSetup.sol","id":4967,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5035,"sourceUnit":4860,"src":"306:48:46","symbolAliases":[{"foreign":{"id":4966,"name":"IPluginSetup","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4859,"src":"314:12:46","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":4969,"name":"ERC165","nameLocations":["796:6:46"],"nodeType":"IdentifierPath","referencedDeclaration":2375,"src":"796:6:46"},"id":4970,"nodeType":"InheritanceSpecifier","src":"796:6:46"},{"baseName":{"id":4971,"name":"IPluginSetup","nameLocations":["804:12:46"],"nodeType":"IdentifierPath","referencedDeclaration":4859,"src":"804:12:46"},"id":4972,"nodeType":"InheritanceSpecifier","src":"804:12:46"},{"baseName":{"id":4973,"name":"ProtocolVersion","nameLocations":["818:15:46"],"nodeType":"IdentifierPath","referencedDeclaration":5136,"src":"818:15:46"},"id":4974,"nodeType":"InheritanceSpecifier","src":"818:15:46"}],"canonicalName":"PluginUpgradeableSetup","contractDependencies":[],"contractKind":"contract","documentation":{"id":4968,"nodeType":"StructuredDocumentation","src":"356:396:46","text":"@title PluginUpgradeableSetup\n @author Aragon X - 2022-2024\n @notice An abstract contract to inherit from to implement the plugin setup for upgradeable plugins, i.e, `PluginUUPSUpgradeable` being deployed via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822) and [ERC-1967](https://eips.ethereum.org/EIPS/eip-1967)).\n @custom:security-contact sirt@aragon.org"},"fullyImplemented":false,"id":5034,"linearizedBaseContracts":[5034,5136,5114,4859,2375,2387],"name":"PluginUpgradeableSetup","nameLocation":"770:22:46","nodeType":"ContractDefinition","nodes":[{"constant":false,"documentation":{"id":4975,"nodeType":"StructuredDocumentation","src":"840:194:46","text":"@notice The address of the plugin implementation contract for initial block explorer verification\n and to create [ERC-1967](https://eips.ethereum.org/EIPS/eip-1967) UUPS proxies from."},"id":4977,"mutability":"immutable","name":"IMPLEMENTATION","nameLocation":"1066:14:46","nodeType":"VariableDeclaration","scope":5034,"src":"1039:41:46","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4976,"name":"address","nodeType":"ElementaryTypeName","src":"1039:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"documentation":{"id":4978,"nodeType":"StructuredDocumentation","src":"1087:227:46","text":"@notice Thrown when an update path is not available, for example, if this is the initial build.\n @param fromBuild The build number to update from.\n @param thisBuild The build number of this setup to update to."},"errorSelector":"1313218a","id":4984,"name":"InvalidUpdatePath","nameLocation":"1325:17:46","nodeType":"ErrorDefinition","parameters":{"id":4983,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4980,"mutability":"mutable","name":"fromBuild","nameLocation":"1350:9:46","nodeType":"VariableDeclaration","scope":4984,"src":"1343:16:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":4979,"name":"uint16","nodeType":"ElementaryTypeName","src":"1343:6:46","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":4982,"mutability":"mutable","name":"thisBuild","nameLocation":"1368:9:46","nodeType":"VariableDeclaration","scope":4984,"src":"1361:16:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":4981,"name":"uint16","nodeType":"ElementaryTypeName","src":"1361:6:46","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"1342:36:46"},"src":"1319:60:46"},{"body":{"id":4994,"nodeType":"Block","src":"1595:49:46","statements":[{"expression":{"id":4992,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4990,"name":"IMPLEMENTATION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4977,"src":"1605:14:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":4991,"name":"_implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4987,"src":"1622:15:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1605:32:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":4993,"nodeType":"ExpressionStatement","src":"1605:32:46"}]},"documentation":{"id":4985,"nodeType":"StructuredDocumentation","src":"1385:168:46","text":"@notice The contract constructor, that setting the plugin implementation contract.\n @param _implementation The address of the plugin implementation contract."},"id":4995,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":4988,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4987,"mutability":"mutable","name":"_implementation","nameLocation":"1578:15:46","nodeType":"VariableDeclaration","scope":4995,"src":"1570:23:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4986,"name":"address","nodeType":"ElementaryTypeName","src":"1570:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1569:25:46"},"returnParameters":{"id":4989,"nodeType":"ParameterList","parameters":[],"src":"1595:0:46"},"scope":5034,"src":"1558:86:46","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[2374],"body":{"id":5023,"nodeType":"Block","src":"1944:201:46","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":5021,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":5016,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":5009,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5004,"name":"_interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4998,"src":"1973:12:46","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":5006,"name":"IPluginSetup","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4859,"src":"1994:12:46","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IPluginSetup_$4859_$","typeString":"type(contract IPluginSetup)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IPluginSetup_$4859_$","typeString":"type(contract IPluginSetup)"}],"id":5005,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"1989:4:46","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5007,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1989:18:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IPluginSetup_$4859","typeString":"type(contract IPluginSetup)"}},"id":5008,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2008:11:46","memberName":"interfaceId","nodeType":"MemberAccess","src":"1989:30:46","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"1973:46:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":5015,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5010,"name":"_interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4998,"src":"2035:12:46","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":5012,"name":"IProtocolVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5114,"src":"2056:16:46","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IProtocolVersion_$5114_$","typeString":"type(contract IProtocolVersion)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IProtocolVersion_$5114_$","typeString":"type(contract IProtocolVersion)"}],"id":5011,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"2051:4:46","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5013,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2051:22:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IProtocolVersion_$5114","typeString":"type(contract IProtocolVersion)"}},"id":5014,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2074:11:46","memberName":"interfaceId","nodeType":"MemberAccess","src":"2051:34:46","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"2035:50:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1973:112:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":5019,"name":"_interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4998,"src":"2125:12:46","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":5017,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967271,"src":"2101:5:46","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_PluginUpgradeableSetup_$5034_$","typeString":"type(contract super PluginUpgradeableSetup)"}},"id":5018,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2107:17:46","memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":2374,"src":"2101:23:46","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bool_$","typeString":"function (bytes4) view returns (bool)"}},"id":5020,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2101:37:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1973:165:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":5003,"id":5022,"nodeType":"Return","src":"1954:184:46"}]},"documentation":{"id":4996,"nodeType":"StructuredDocumentation","src":"1650:197:46","text":"@notice Checks if this or the parent contract supports an interface by its ID.\n @param _interfaceId The ID of the interface.\n @return Returns `true` if the interface is supported."},"functionSelector":"01ffc9a7","id":5024,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"1861:17:46","nodeType":"FunctionDefinition","overrides":{"id":5000,"nodeType":"OverrideSpecifier","overrides":[],"src":"1920:8:46"},"parameters":{"id":4999,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4998,"mutability":"mutable","name":"_interfaceId","nameLocation":"1886:12:46","nodeType":"VariableDeclaration","scope":5024,"src":"1879:19:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":4997,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1879:6:46","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"1878:21:46"},"returnParameters":{"id":5003,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5002,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5024,"src":"1938:4:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5001,"name":"bool","nodeType":"ElementaryTypeName","src":"1938:4:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1937:6:46"},"scope":5034,"src":"1852:293:46","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[4858],"body":{"id":5032,"nodeType":"Block","src":"2240:38:46","statements":[{"expression":{"id":5030,"name":"IMPLEMENTATION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4977,"src":"2257:14:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":5029,"id":5031,"nodeType":"Return","src":"2250:21:46"}]},"documentation":{"id":5025,"nodeType":"StructuredDocumentation","src":"2151:28:46","text":"@inheritdoc IPluginSetup"},"functionSelector":"5c60da1b","id":5033,"implemented":true,"kind":"function","modifiers":[],"name":"implementation","nameLocation":"2193:14:46","nodeType":"FunctionDefinition","parameters":{"id":5026,"nodeType":"ParameterList","parameters":[],"src":"2207:2:46"},"returnParameters":{"id":5029,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5028,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5033,"src":"2231:7:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5027,"name":"address","nodeType":"ElementaryTypeName","src":"2231:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2230:9:46"},"scope":5034,"src":"2184:94:46","stateMutability":"view","virtual":false,"visibility":"public"}],"scope":5035,"src":"752:1528:46","usedErrors":[4984]}],"src":"47:2234:46"},"id":46},"src/utils/deployment/ProxyLib.sol":{"ast":{"absolutePath":"src/utils/deployment/ProxyLib.sol","exportedSymbols":{"Address":[2137],"Clones":[1404],"ERC1967Proxy":[1441],"ProxyLib":[5102]},"id":5103,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":5036,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:47"},{"absolutePath":"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol","file":"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol","id":5038,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5103,"sourceUnit":1442,"src":"72:84:47","symbolAliases":[{"foreign":{"id":5037,"name":"ERC1967Proxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1441,"src":"80:12:47","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/proxy/Clones.sol","file":"@openzeppelin/contracts/proxy/Clones.sol","id":5040,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5103,"sourceUnit":1405,"src":"157:64:47","symbolAliases":[{"foreign":{"id":5039,"name":"Clones","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1404,"src":"165:6:47","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Address.sol","file":"@openzeppelin/contracts/utils/Address.sol","id":5042,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5103,"sourceUnit":2138,"src":"222:66:47","symbolAliases":[{"foreign":{"id":5041,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2137,"src":"230:7:47","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"ProxyLib","contractDependencies":[],"contractKind":"library","documentation":{"id":5043,"nodeType":"StructuredDocumentation","src":"290:328:47","text":"@title ProxyLib\n @author Aragon X - 2024\n @notice A library containing methods for the deployment of proxies via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)) and minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)).\n @custom:security-contact sirt@aragon.org"},"fullyImplemented":true,"id":5102,"linearizedBaseContracts":[5102],"name":"ProxyLib","nameLocation":"626:8:47","nodeType":"ContractDefinition","nodes":[{"global":false,"id":5046,"libraryName":{"id":5044,"name":"Address","nameLocations":["647:7:47"],"nodeType":"IdentifierPath","referencedDeclaration":2137,"src":"647:7:47"},"nodeType":"UsingForDirective","src":"641:26:47","typeName":{"id":5045,"name":"address","nodeType":"ElementaryTypeName","src":"659:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},{"global":false,"id":5049,"libraryName":{"id":5047,"name":"Clones","nameLocations":["678:6:47"],"nodeType":"IdentifierPath","referencedDeclaration":1404,"src":"678:6:47"},"nodeType":"UsingForDirective","src":"672:25:47","typeName":{"id":5048,"name":"address","nodeType":"ElementaryTypeName","src":"689:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},{"body":{"id":5071,"nodeType":"Block","src":"1543:94:47","statements":[{"expression":{"id":5069,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5059,"name":"uupsProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5057,"src":"1553:9:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":5065,"name":"_logic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5052,"src":"1599:6:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5066,"name":"_initCalldata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5054,"src":"1614:13:47","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":5064,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"NewExpression","src":"1573:16:47","typeDescriptions":{"typeIdentifier":"t_function_creation_payable$_t_address_$_t_bytes_memory_ptr_$returns$_t_contract$_ERC1967Proxy_$1441_$","typeString":"function (address,bytes memory) payable returns (contract ERC1967Proxy)"},"typeName":{"id":5063,"nodeType":"UserDefinedTypeName","pathNode":{"id":5062,"name":"ERC1967Proxy","nameLocations":["1577:12:47"],"nodeType":"IdentifierPath","referencedDeclaration":1441,"src":"1577:12:47"},"referencedDeclaration":1441,"src":"1577:12:47","typeDescriptions":{"typeIdentifier":"t_contract$_ERC1967Proxy_$1441","typeString":"contract ERC1967Proxy"}}},"id":5067,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":["1591:6:47","1607:5:47"],"names":["_logic","_data"],"nodeType":"FunctionCall","src":"1573:56:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ERC1967Proxy_$1441","typeString":"contract ERC1967Proxy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC1967Proxy_$1441","typeString":"contract ERC1967Proxy"}],"id":5061,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1565:7:47","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5060,"name":"address","nodeType":"ElementaryTypeName","src":"1565:7:47","typeDescriptions":{}}},"id":5068,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1565:65:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1553:77:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":5070,"nodeType":"ExpressionStatement","src":"1553:77:47"}]},"documentation":{"id":5050,"nodeType":"StructuredDocumentation","src":"703:707:47","text":"@notice Creates an [ERC-1967](https://eips.ethereum.org/EIPS/eip-1967) UUPS proxy contract pointing to a logic contract and allows to immediately initialize it.\n @param _logic The logic contract the proxy is pointing to.\n @param _initCalldata The initialization data for this contract.\n @return uupsProxy The address of the UUPS proxy contract created.\n @dev If `_initCalldata` is non-empty, it is used in a delegate call to the `_logic` contract. This will typically be an encoded function call initializing the storage of the proxy (see [OpenZeppelin ERC1967Proxy-constructor](https://docs.openzeppelin.com/contracts/4.x/api/proxy#ERC1967Proxy-constructor-address-bytes-))."},"id":5072,"implemented":true,"kind":"function","modifiers":[],"name":"deployUUPSProxy","nameLocation":"1424:15:47","nodeType":"FunctionDefinition","parameters":{"id":5055,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5052,"mutability":"mutable","name":"_logic","nameLocation":"1457:6:47","nodeType":"VariableDeclaration","scope":5072,"src":"1449:14:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5051,"name":"address","nodeType":"ElementaryTypeName","src":"1449:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5054,"mutability":"mutable","name":"_initCalldata","nameLocation":"1486:13:47","nodeType":"VariableDeclaration","scope":5072,"src":"1473:26:47","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5053,"name":"bytes","nodeType":"ElementaryTypeName","src":"1473:5:47","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1439:66:47"},"returnParameters":{"id":5058,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5057,"mutability":"mutable","name":"uupsProxy","nameLocation":"1532:9:47","nodeType":"VariableDeclaration","scope":5072,"src":"1524:17:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5056,"name":"address","nodeType":"ElementaryTypeName","src":"1524:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1523:19:47"},"scope":5102,"src":"1415:222:47","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":5100,"nodeType":"Block","src":"2371:158:47","statements":[{"expression":{"id":5086,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5082,"name":"minimalProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5080,"src":"2381:12:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":5083,"name":"_logic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5075,"src":"2396:6:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":5084,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2403:5:47","memberName":"clone","nodeType":"MemberAccess","referencedDeclaration":1347,"src":"2396:12:47","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$_t_address_$bound_to$_t_address_$","typeString":"function (address) returns (address)"}},"id":5085,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2396:14:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2381:29:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":5087,"nodeType":"ExpressionStatement","src":"2381:29:47"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5091,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":5088,"name":"_initCalldata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5077,"src":"2424:13:47","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":5089,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2438:6:47","memberName":"length","nodeType":"MemberAccess","src":"2424:20:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":5090,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2447:1:47","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2424:24:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5099,"nodeType":"IfStatement","src":"2420:103:47","trueBody":{"id":5098,"nodeType":"Block","src":"2450:73:47","statements":[{"expression":{"arguments":[{"id":5095,"name":"_initCalldata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5077,"src":"2497:13:47","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":5092,"name":"minimalProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5080,"src":"2464:12:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":5094,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2477:12:47","memberName":"functionCall","nodeType":"MemberAccess","referencedDeclaration":1877,"src":"2464:25:47","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$bound_to$_t_address_$","typeString":"function (address,bytes memory) returns (bytes memory)"}},"id":5096,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":["2491:4:47"],"names":["data"],"nodeType":"FunctionCall","src":"2464:48:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":5097,"nodeType":"ExpressionStatement","src":"2464:48:47"}]}}]},"documentation":{"id":5073,"nodeType":"StructuredDocumentation","src":"1643:589:47","text":"@notice Creates an [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167) minimal proxy contract, also known as clones, pointing to a logic contract and allows to immediately initialize it.\n @param _logic The logic contract the proxy is pointing to.\n @param _initCalldata The initialization data for this contract.\n @return minimalProxy The address of the minimal proxy contract created.\n @dev If `_initCalldata` is non-empty, it is used in a call to the clone contract. This will typically be an encoded function call initializing the storage of the contract."},"id":5101,"implemented":true,"kind":"function","modifiers":[],"name":"deployMinimalProxy","nameLocation":"2246:18:47","nodeType":"FunctionDefinition","parameters":{"id":5078,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5075,"mutability":"mutable","name":"_logic","nameLocation":"2282:6:47","nodeType":"VariableDeclaration","scope":5101,"src":"2274:14:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5074,"name":"address","nodeType":"ElementaryTypeName","src":"2274:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5077,"mutability":"mutable","name":"_initCalldata","nameLocation":"2311:13:47","nodeType":"VariableDeclaration","scope":5101,"src":"2298:26:47","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5076,"name":"bytes","nodeType":"ElementaryTypeName","src":"2298:5:47","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2264:66:47"},"returnParameters":{"id":5081,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5080,"mutability":"mutable","name":"minimalProxy","nameLocation":"2357:12:47","nodeType":"VariableDeclaration","scope":5101,"src":"2349:20:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5079,"name":"address","nodeType":"ElementaryTypeName","src":"2349:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2348:22:47"},"scope":5102,"src":"2237:292:47","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":5103,"src":"618:1913:47","usedErrors":[]}],"src":"47:2485:47"},"id":47},"src/utils/versioning/IProtocolVersion.sol":{"ast":{"absolutePath":"src/utils/versioning/IProtocolVersion.sol","exportedSymbols":{"IProtocolVersion":[5114]},"id":5115,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":5104,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:48"},{"abstract":false,"baseContracts":[],"canonicalName":"IProtocolVersion","contractDependencies":[],"contractKind":"interface","documentation":{"id":5105,"nodeType":"StructuredDocumentation","src":"72:189:48","text":"@title IProtocolVersion\n @author Aragon X - 2022-2023\n @notice An interface defining the semantic Aragon OSx protocol version number.\n @custom:security-contact sirt@aragon.org"},"fullyImplemented":false,"id":5114,"linearizedBaseContracts":[5114],"name":"IProtocolVersion","nameLocation":"271:16:48","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":5106,"nodeType":"StructuredDocumentation","src":"294:444:48","text":"@notice Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\n @return _version Returns the semantic Aragon OSx protocol version number.\n @dev This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts."},"functionSelector":"2ae9c600","id":5113,"implemented":false,"kind":"function","modifiers":[],"name":"protocolVersion","nameLocation":"752:15:48","nodeType":"FunctionDefinition","parameters":{"id":5107,"nodeType":"ParameterList","parameters":[],"src":"767:2:48"},"returnParameters":{"id":5112,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5111,"mutability":"mutable","name":"_version","nameLocation":"809:8:48","nodeType":"VariableDeclaration","scope":5113,"src":"793:24:48","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3]"},"typeName":{"baseType":{"id":5108,"name":"uint8","nodeType":"ElementaryTypeName","src":"793:5:48","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":5110,"length":{"hexValue":"33","id":5109,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"799:1:48","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"ArrayTypeName","src":"793:8:48","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_storage_ptr","typeString":"uint8[3]"}},"visibility":"internal"}],"src":"792:26:48"},"scope":5114,"src":"743:76:48","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":5115,"src":"261:560:48","usedErrors":[]}],"src":"47:775:48"},"id":48},"src/utils/versioning/ProtocolVersion.sol":{"ast":{"absolutePath":"src/utils/versioning/ProtocolVersion.sol","exportedSymbols":{"IProtocolVersion":[5114],"ProtocolVersion":[5136]},"id":5137,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":5116,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:49"},{"absolutePath":"src/utils/versioning/IProtocolVersion.sol","file":"./IProtocolVersion.sol","id":5118,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5137,"sourceUnit":5115,"src":"72:56:49","symbolAliases":[{"foreign":{"id":5117,"name":"IProtocolVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5114,"src":"80:16:49","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":5120,"name":"IProtocolVersion","nameLocations":["497:16:49"],"nodeType":"IdentifierPath","referencedDeclaration":5114,"src":"497:16:49"},"id":5121,"nodeType":"InheritanceSpecifier","src":"497:16:49"}],"canonicalName":"ProtocolVersion","contractDependencies":[],"contractKind":"contract","documentation":{"id":5119,"nodeType":"StructuredDocumentation","src":"130:330:49","text":"@title ProtocolVersion\n @author Aragon X - 2023\n @notice An abstract, stateless, non-upgradeable contract providing the current Aragon OSx protocol version number.\n @dev Do not add any new variables to this contract that would shift down storage in the inheritance chain.\n @custom:security-contact sirt@aragon.org"},"fullyImplemented":true,"id":5136,"linearizedBaseContracts":[5136,5114],"name":"ProtocolVersion","nameLocation":"478:15:49","nodeType":"ContractDefinition","nodes":[{"baseFunctions":[5113],"body":{"id":5134,"nodeType":"Block","src":"696:33:49","statements":[{"expression":{"components":[{"hexValue":"31","id":5129,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"714:1:49","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},{"hexValue":"34","id":5130,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"717:1:49","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},{"hexValue":"30","id":5131,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"720:1:49","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":5132,"isConstant":false,"isInlineArray":true,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"713:9:49","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}},"functionReturnParameters":5128,"id":5133,"nodeType":"Return","src":"706:16:49"}]},"documentation":{"id":5122,"nodeType":"StructuredDocumentation","src":"594:32:49","text":"@inheritdoc IProtocolVersion"},"functionSelector":"2ae9c600","id":5135,"implemented":true,"kind":"function","modifiers":[],"name":"protocolVersion","nameLocation":"640:15:49","nodeType":"FunctionDefinition","parameters":{"id":5123,"nodeType":"ParameterList","parameters":[],"src":"655:2:49"},"returnParameters":{"id":5128,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5127,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5135,"src":"679:15:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3]"},"typeName":{"baseType":{"id":5124,"name":"uint8","nodeType":"ElementaryTypeName","src":"679:5:49","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":5126,"length":{"hexValue":"33","id":5125,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"685:1:49","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"ArrayTypeName","src":"679:8:49","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_storage_ptr","typeString":"uint8[3]"}},"visibility":"internal"}],"src":"678:17:49"},"scope":5136,"src":"631:98:49","stateMutability":"pure","virtual":false,"visibility":"public"}],"scope":5137,"src":"460:271:49","usedErrors":[]}],"src":"47:685:49"},"id":49}},"contracts":{"@openzeppelin/contracts-upgradeable/interfaces/IERC1967Upgradeable.sol":{"IERC1967Upgradeable":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"beacon","type":"address"}],"name":"BeaconUpgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"}],"devdoc":{"details":"ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC. _Available since v4.8.3._","events":{"AdminChanged(address,address)":{"details":"Emitted when the admin account has changed."},"BeaconUpgraded(address)":{"details":"Emitted when the beacon is changed."},"Upgraded(address)":{"details":"Emitted when the implementation is upgraded."}},"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"}],\"devdoc\":{\"details\":\"ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC. _Available since v4.8.3._\",\"events\":{\"AdminChanged(address,address)\":{\"details\":\"Emitted when the admin account has changed.\"},\"BeaconUpgraded(address)\":{\"details\":\"Emitted when the beacon is changed.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/interfaces/IERC1967Upgradeable.sol\":\"IERC1967Upgradeable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/interfaces/IERC1967Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (interfaces/IERC1967.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\\n *\\n * _Available since v4.8.3._\\n */\\ninterface IERC1967Upgradeable {\\n /**\\n * @dev Emitted when the implementation is upgraded.\\n */\\n event Upgraded(address indexed implementation);\\n\\n /**\\n * @dev Emitted when the admin account has changed.\\n */\\n event AdminChanged(address previousAdmin, address newAdmin);\\n\\n /**\\n * @dev Emitted when the beacon is changed.\\n */\\n event BeaconUpgraded(address indexed beacon);\\n}\\n\",\"keccak256\":\"0x47d6e06872b12e72c79d1b5eb55842f860b5fb1207b2317c2358d2766b950a7b\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol":{"IERC1822ProxiableUpgradeable":{"abi":[{"inputs":[],"name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified proxy whose upgrades are fully controlled by the current implementation.","kind":"dev","methods":{"proxiableUUID()":{"details":"Returns the storage slot that the proxiable contract assumes is being used to store the implementation address. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"proxiableUUID()":"52d1902d"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified proxy whose upgrades are fully controlled by the current implementation.\",\"kind\":\"dev\",\"methods\":{\"proxiableUUID()\":{\"details\":\"Returns the storage slot that the proxiable contract assumes is being used to store the implementation address. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol\":\"IERC1822ProxiableUpgradeable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822ProxiableUpgradeable {\\n /**\\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n * address.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy.\\n */\\n function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol":{"ERC1967UpgradeUpgradeable":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"beacon","type":"address"}],"name":"BeaconUpgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"}],"devdoc":{"details":"This abstract contract provides getters and event emitting update functions for https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots. _Available since v4.1._","kind":"dev","methods":{},"stateVariables":{"_ADMIN_SLOT":{"details":"Storage slot with the admin of the contract. This is the keccak-256 hash of \"eip1967.proxy.admin\" subtracted by 1, and is validated in the constructor."},"_BEACON_SLOT":{"details":"The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy. This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor."},"_IMPLEMENTATION_SLOT":{"details":"Storage slot with the address of the current implementation. This is the keccak-256 hash of \"eip1967.proxy.implementation\" subtracted by 1, and is validated in the constructor."},"__gap":{"details":"This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain. See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"}],\"devdoc\":{\"details\":\"This abstract contract provides getters and event emitting update functions for https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots. _Available since v4.1._\",\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"_ADMIN_SLOT\":{\"details\":\"Storage slot with the admin of the contract. This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is validated in the constructor.\"},\"_BEACON_SLOT\":{\"details\":\"The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy. This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\"},\"_IMPLEMENTATION_SLOT\":{\"details\":\"Storage slot with the address of the current implementation. This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is validated in the constructor.\"},\"__gap\":{\"details\":\"This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain. See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol\":\"ERC1967UpgradeUpgradeable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/interfaces/IERC1967Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (interfaces/IERC1967.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\\n *\\n * _Available since v4.8.3._\\n */\\ninterface IERC1967Upgradeable {\\n /**\\n * @dev Emitted when the implementation is upgraded.\\n */\\n event Upgraded(address indexed implementation);\\n\\n /**\\n * @dev Emitted when the admin account has changed.\\n */\\n event AdminChanged(address previousAdmin, address newAdmin);\\n\\n /**\\n * @dev Emitted when the beacon is changed.\\n */\\n event BeaconUpgraded(address indexed beacon);\\n}\\n\",\"keccak256\":\"0x47d6e06872b12e72c79d1b5eb55842f860b5fb1207b2317c2358d2766b950a7b\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822ProxiableUpgradeable {\\n /**\\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n * address.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy.\\n */\\n function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../beacon/IBeaconUpgradeable.sol\\\";\\nimport \\\"../../interfaces/IERC1967Upgradeable.sol\\\";\\nimport \\\"../../interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\nimport \\\"../../utils/StorageSlotUpgradeable.sol\\\";\\nimport {Initializable} from \\\"../utils/Initializable.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n */\\nabstract contract ERC1967UpgradeUpgradeable is Initializable, IERC1967Upgradeable {\\n // This is the keccak-256 hash of \\\"eip1967.proxy.rollback\\\" subtracted by 1\\n bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n /**\\n * @dev Storage slot with the address of the current implementation.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n function __ERC1967Upgrade_init() internal onlyInitializing {\\n }\\n\\n function __ERC1967Upgrade_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _getImplementation() internal view returns (address) {\\n return StorageSlotUpgradeable.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 implementation slot.\\n */\\n function _setImplementation(address newImplementation) private {\\n require(AddressUpgradeable.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n StorageSlotUpgradeable.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n }\\n\\n /**\\n * @dev Perform implementation upgrade\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeTo(address newImplementation) internal {\\n _setImplementation(newImplementation);\\n emit Upgraded(newImplementation);\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCall(address newImplementation, bytes memory data, bool forceCall) internal {\\n _upgradeTo(newImplementation);\\n if (data.length > 0 || forceCall) {\\n AddressUpgradeable.functionDelegateCall(newImplementation, data);\\n }\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCallUUPS(address newImplementation, bytes memory data, bool forceCall) internal {\\n // Upgrades from old implementations will perform a rollback test. This test requires the new\\n // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n // this special case will break upgrade paths from old UUPS implementation to new ones.\\n if (StorageSlotUpgradeable.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n _setImplementation(newImplementation);\\n } else {\\n try IERC1822ProxiableUpgradeable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n require(slot == _IMPLEMENTATION_SLOT, \\\"ERC1967Upgrade: unsupported proxiableUUID\\\");\\n } catch {\\n revert(\\\"ERC1967Upgrade: new implementation is not UUPS\\\");\\n }\\n _upgradeToAndCall(newImplementation, data, forceCall);\\n }\\n }\\n\\n /**\\n * @dev Storage slot with the admin of the contract.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _getAdmin() internal view returns (address) {\\n return StorageSlotUpgradeable.getAddressSlot(_ADMIN_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 admin slot.\\n */\\n function _setAdmin(address newAdmin) private {\\n require(newAdmin != address(0), \\\"ERC1967: new admin is the zero address\\\");\\n StorageSlotUpgradeable.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n */\\n function _changeAdmin(address newAdmin) internal {\\n emit AdminChanged(_getAdmin(), newAdmin);\\n _setAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\\n */\\n bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n /**\\n * @dev Returns the current beacon.\\n */\\n function _getBeacon() internal view returns (address) {\\n return StorageSlotUpgradeable.getAddressSlot(_BEACON_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new beacon in the EIP1967 beacon slot.\\n */\\n function _setBeacon(address newBeacon) private {\\n require(AddressUpgradeable.isContract(newBeacon), \\\"ERC1967: new beacon is not a contract\\\");\\n require(\\n AddressUpgradeable.isContract(IBeaconUpgradeable(newBeacon).implementation()),\\n \\\"ERC1967: beacon implementation is not a contract\\\"\\n );\\n StorageSlotUpgradeable.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n }\\n\\n /**\\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n *\\n * Emits a {BeaconUpgraded} event.\\n */\\n function _upgradeBeaconToAndCall(address newBeacon, bytes memory data, bool forceCall) internal {\\n _setBeacon(newBeacon);\\n emit BeaconUpgraded(newBeacon);\\n if (data.length > 0 || forceCall) {\\n AddressUpgradeable.functionDelegateCall(IBeaconUpgradeable(newBeacon).implementation(), data);\\n }\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x7795808e3899c805254e3ae58074b20f799b466e3f43e057e47bedee5fb771f8\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeaconUpgradeable {\\n /**\\n * @dev Must return an address that can be used as a delegate call target.\\n *\\n * {BeaconProxy} will check that this address is a contract.\\n */\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/StorageSlot.sol)\\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```solidity\\n * contract ERC1967 {\\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n * function _getImplementation() internal view returns (address) {\\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n * }\\n *\\n * function _setImplementation(address newImplementation) internal {\\n * require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n * }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._\\n * _Available since v4.9 for `string`, `bytes`._\\n */\\nlibrary StorageSlotUpgradeable {\\n struct AddressSlot {\\n address value;\\n }\\n\\n struct BooleanSlot {\\n bool value;\\n }\\n\\n struct Bytes32Slot {\\n bytes32 value;\\n }\\n\\n struct Uint256Slot {\\n uint256 value;\\n }\\n\\n struct StringSlot {\\n string value;\\n }\\n\\n struct BytesSlot {\\n bytes value;\\n }\\n\\n /**\\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n */\\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n */\\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n */\\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n */\\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` with member `value` located at `slot`.\\n */\\n function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\\n */\\n function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` with member `value` located at `slot`.\\n */\\n function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\\n */\\n function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n}\\n\",\"keccak256\":\"0x07ac95acad040f1fb1f6120dd0aa5f702db69446e95f82613721879d30de0908\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":372,"contract":"@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:ERC1967UpgradeUpgradeable","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":375,"contract":"@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:ERC1967UpgradeUpgradeable","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":354,"contract":"@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:ERC1967UpgradeUpgradeable","label":"__gap","offset":0,"slot":"1","type":"t_array(t_uint256)50_storage"}],"types":{"t_array(t_uint256)50_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[50]","numberOfBytes":"1600"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.sol":{"IBeaconUpgradeable":{"abi":[{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"This is the interface that {BeaconProxy} expects of its beacon.","kind":"dev","methods":{"implementation()":{"details":"Must return an address that can be used as a delegate call target. {BeaconProxy} will check that this address is a contract."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"implementation()":"5c60da1b"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"This is the interface that {BeaconProxy} expects of its beacon.\",\"kind\":\"dev\",\"methods\":{\"implementation()\":{\"details\":\"Must return an address that can be used as a delegate call target. {BeaconProxy} will check that this address is a contract.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.sol\":\"IBeaconUpgradeable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeaconUpgradeable {\\n /**\\n * @dev Must return an address that can be used as a delegate call target.\\n *\\n * {BeaconProxy} will check that this address is a contract.\\n */\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol":{"Initializable":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"}],"devdoc":{"custom:oz-upgrades-unsafe-allow":"constructor constructor() { _disableInitializers(); } ``` ====","details":"This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer function so it can only be called once. The {initializer} modifier provided by this contract will have this effect. The initialization functions use a version number. Once a version number is used, it is consumed and cannot be reused. This mechanism prevents re-execution of each \"step\" but allows the creation of new initialization steps in case an upgrade adds a module that needs to be initialized. For example: [.hljs-theme-light.nopadding] ```solidity contract MyToken is ERC20Upgradeable { function initialize() initializer public { __ERC20_init(\"MyToken\", \"MTK\"); } } contract MyTokenV2 is MyToken, ERC20PermitUpgradeable { function initializeV2() reinitializer(2) public { __ERC20Permit_init(\"MyToken\"); } } ``` TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}. CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure that all initializers are idempotent. This is not verified automatically as constructors are by Solidity. [CAUTION] ==== Avoid leaving a contract uninitialized. An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke the {_disableInitializers} function in the constructor to automatically lock it when it is deployed: [.hljs-theme-light.nopadding] ```","events":{"Initialized(uint8)":{"details":"Triggered when the contract has been initialized or reinitialized."}},"kind":"dev","methods":{},"stateVariables":{"_initialized":{"custom:oz-retyped-from":"bool","details":"Indicates that the contract has been initialized."},"_initializing":{"details":"Indicates that the contract is in the process of being initialized."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"}],\"devdoc\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor constructor() { _disableInitializers(); } ``` ====\",\"details\":\"This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer function so it can only be called once. The {initializer} modifier provided by this contract will have this effect. The initialization functions use a version number. Once a version number is used, it is consumed and cannot be reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in case an upgrade adds a module that needs to be initialized. For example: [.hljs-theme-light.nopadding] ```solidity contract MyToken is ERC20Upgradeable { function initialize() initializer public { __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\"); } } contract MyTokenV2 is MyToken, ERC20PermitUpgradeable { function initializeV2() reinitializer(2) public { __ERC20Permit_init(\\\"MyToken\\\"); } } ``` TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}. CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure that all initializers are idempotent. This is not verified automatically as constructors are by Solidity. [CAUTION] ==== Avoid leaving a contract uninitialized. An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke the {_disableInitializers} function in the constructor to automatically lock it when it is deployed: [.hljs-theme-light.nopadding] ```\",\"events\":{\"Initialized(uint8)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"_initialized\":{\"custom:oz-retyped-from\":\"bool\",\"details\":\"Indicates that the contract has been initialized.\"},\"_initializing\":{\"details\":\"Indicates that the contract is in the process of being initialized.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":\"Initializable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":372,"contract":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":375,"contract":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable","label":"_initializing","offset":1,"slot":"0","type":"t_bool"}],"types":{"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol":{"UUPSUpgradeable":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"beacon","type":"address"}],"name":"BeaconUpgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"inputs":[],"name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"}],"name":"upgradeTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"}],"devdoc":{"details":"An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy. A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing `UUPSUpgradeable` with a custom implementation of upgrades. The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism. _Available since v4.1._","kind":"dev","methods":{"proxiableUUID()":{"details":"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier."},"upgradeTo(address)":{"custom:oz-upgrades-unsafe-allow-reachable":"delegatecall","details":"Upgrade the implementation of the proxy to `newImplementation`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."},"upgradeToAndCall(address,bytes)":{"custom:oz-upgrades-unsafe-allow-reachable":"delegatecall","details":"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."}},"stateVariables":{"__gap":{"details":"This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain. See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"},"__self":{"custom:oz-upgrades-unsafe-allow":"state-variable-immutable state-variable-assignment"}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"proxiableUUID()":"52d1902d","upgradeTo(address)":"3659cfe6","upgradeToAndCall(address,bytes)":"4f1ef286"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"upgradeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy. A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing `UUPSUpgradeable` with a custom implementation of upgrades. The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism. _Available since v4.1._\",\"kind\":\"dev\",\"methods\":{\"proxiableUUID()\":{\"details\":\"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"upgradeTo(address)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"},\"upgradeToAndCall(address,bytes)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"}},\"stateVariables\":{\"__gap\":{\"details\":\"This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain. See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\"},\"__self\":{\"custom:oz-upgrades-unsafe-allow\":\"state-variable-immutable state-variable-assignment\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":\"UUPSUpgradeable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/interfaces/IERC1967Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (interfaces/IERC1967.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\\n *\\n * _Available since v4.8.3._\\n */\\ninterface IERC1967Upgradeable {\\n /**\\n * @dev Emitted when the implementation is upgraded.\\n */\\n event Upgraded(address indexed implementation);\\n\\n /**\\n * @dev Emitted when the admin account has changed.\\n */\\n event AdminChanged(address previousAdmin, address newAdmin);\\n\\n /**\\n * @dev Emitted when the beacon is changed.\\n */\\n event BeaconUpgraded(address indexed beacon);\\n}\\n\",\"keccak256\":\"0x47d6e06872b12e72c79d1b5eb55842f860b5fb1207b2317c2358d2766b950a7b\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822ProxiableUpgradeable {\\n /**\\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n * address.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy.\\n */\\n function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../beacon/IBeaconUpgradeable.sol\\\";\\nimport \\\"../../interfaces/IERC1967Upgradeable.sol\\\";\\nimport \\\"../../interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\nimport \\\"../../utils/StorageSlotUpgradeable.sol\\\";\\nimport {Initializable} from \\\"../utils/Initializable.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n */\\nabstract contract ERC1967UpgradeUpgradeable is Initializable, IERC1967Upgradeable {\\n // This is the keccak-256 hash of \\\"eip1967.proxy.rollback\\\" subtracted by 1\\n bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n /**\\n * @dev Storage slot with the address of the current implementation.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n function __ERC1967Upgrade_init() internal onlyInitializing {\\n }\\n\\n function __ERC1967Upgrade_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _getImplementation() internal view returns (address) {\\n return StorageSlotUpgradeable.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 implementation slot.\\n */\\n function _setImplementation(address newImplementation) private {\\n require(AddressUpgradeable.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n StorageSlotUpgradeable.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n }\\n\\n /**\\n * @dev Perform implementation upgrade\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeTo(address newImplementation) internal {\\n _setImplementation(newImplementation);\\n emit Upgraded(newImplementation);\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCall(address newImplementation, bytes memory data, bool forceCall) internal {\\n _upgradeTo(newImplementation);\\n if (data.length > 0 || forceCall) {\\n AddressUpgradeable.functionDelegateCall(newImplementation, data);\\n }\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCallUUPS(address newImplementation, bytes memory data, bool forceCall) internal {\\n // Upgrades from old implementations will perform a rollback test. This test requires the new\\n // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n // this special case will break upgrade paths from old UUPS implementation to new ones.\\n if (StorageSlotUpgradeable.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n _setImplementation(newImplementation);\\n } else {\\n try IERC1822ProxiableUpgradeable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n require(slot == _IMPLEMENTATION_SLOT, \\\"ERC1967Upgrade: unsupported proxiableUUID\\\");\\n } catch {\\n revert(\\\"ERC1967Upgrade: new implementation is not UUPS\\\");\\n }\\n _upgradeToAndCall(newImplementation, data, forceCall);\\n }\\n }\\n\\n /**\\n * @dev Storage slot with the admin of the contract.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _getAdmin() internal view returns (address) {\\n return StorageSlotUpgradeable.getAddressSlot(_ADMIN_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 admin slot.\\n */\\n function _setAdmin(address newAdmin) private {\\n require(newAdmin != address(0), \\\"ERC1967: new admin is the zero address\\\");\\n StorageSlotUpgradeable.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n */\\n function _changeAdmin(address newAdmin) internal {\\n emit AdminChanged(_getAdmin(), newAdmin);\\n _setAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\\n */\\n bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n /**\\n * @dev Returns the current beacon.\\n */\\n function _getBeacon() internal view returns (address) {\\n return StorageSlotUpgradeable.getAddressSlot(_BEACON_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new beacon in the EIP1967 beacon slot.\\n */\\n function _setBeacon(address newBeacon) private {\\n require(AddressUpgradeable.isContract(newBeacon), \\\"ERC1967: new beacon is not a contract\\\");\\n require(\\n AddressUpgradeable.isContract(IBeaconUpgradeable(newBeacon).implementation()),\\n \\\"ERC1967: beacon implementation is not a contract\\\"\\n );\\n StorageSlotUpgradeable.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n }\\n\\n /**\\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n *\\n * Emits a {BeaconUpgraded} event.\\n */\\n function _upgradeBeaconToAndCall(address newBeacon, bytes memory data, bool forceCall) internal {\\n _setBeacon(newBeacon);\\n emit BeaconUpgraded(newBeacon);\\n if (data.length > 0 || forceCall) {\\n AddressUpgradeable.functionDelegateCall(IBeaconUpgradeable(newBeacon).implementation(), data);\\n }\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x7795808e3899c805254e3ae58074b20f799b466e3f43e057e47bedee5fb771f8\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeaconUpgradeable {\\n /**\\n * @dev Must return an address that can be used as a delegate call target.\\n *\\n * {BeaconProxy} will check that this address is a contract.\\n */\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/UUPSUpgradeable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport \\\"../ERC1967/ERC1967UpgradeUpgradeable.sol\\\";\\nimport {Initializable} from \\\"./Initializable.sol\\\";\\n\\n/**\\n * @dev An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an\\n * {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy.\\n *\\n * A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is\\n * reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing\\n * `UUPSUpgradeable` with a custom implementation of upgrades.\\n *\\n * The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism.\\n *\\n * _Available since v4.1._\\n */\\nabstract contract UUPSUpgradeable is Initializable, IERC1822ProxiableUpgradeable, ERC1967UpgradeUpgradeable {\\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable state-variable-assignment\\n address private immutable __self = address(this);\\n\\n /**\\n * @dev Check that the execution is being performed through a delegatecall call and that the execution context is\\n * a proxy contract with an implementation (as defined in ERC1967) pointing to self. This should only be the case\\n * for UUPS and transparent proxies that are using the current contract as their implementation. Execution of a\\n * function through ERC1167 minimal proxies (clones) would not normally pass this test, but is not guaranteed to\\n * fail.\\n */\\n modifier onlyProxy() {\\n require(address(this) != __self, \\\"Function must be called through delegatecall\\\");\\n require(_getImplementation() == __self, \\\"Function must be called through active proxy\\\");\\n _;\\n }\\n\\n /**\\n * @dev Check that the execution is not being performed through a delegate call. This allows a function to be\\n * callable on the implementing contract but not through proxies.\\n */\\n modifier notDelegated() {\\n require(address(this) == __self, \\\"UUPSUpgradeable: must not be called through delegatecall\\\");\\n _;\\n }\\n\\n function __UUPSUpgradeable_init() internal onlyInitializing {\\n }\\n\\n function __UUPSUpgradeable_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the\\n * implementation. It is used to validate the implementation's compatibility when performing an upgrade.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\\n */\\n function proxiableUUID() external view virtual override notDelegated returns (bytes32) {\\n return _IMPLEMENTATION_SLOT;\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy to `newImplementation`.\\n *\\n * Calls {_authorizeUpgrade}.\\n *\\n * Emits an {Upgraded} event.\\n *\\n * @custom:oz-upgrades-unsafe-allow-reachable delegatecall\\n */\\n function upgradeTo(address newImplementation) public virtual onlyProxy {\\n _authorizeUpgrade(newImplementation);\\n _upgradeToAndCallUUPS(newImplementation, new bytes(0), false);\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call\\n * encoded in `data`.\\n *\\n * Calls {_authorizeUpgrade}.\\n *\\n * Emits an {Upgraded} event.\\n *\\n * @custom:oz-upgrades-unsafe-allow-reachable delegatecall\\n */\\n function upgradeToAndCall(address newImplementation, bytes memory data) public payable virtual onlyProxy {\\n _authorizeUpgrade(newImplementation);\\n _upgradeToAndCallUUPS(newImplementation, data, true);\\n }\\n\\n /**\\n * @dev Function that should revert when `msg.sender` is not authorized to upgrade the contract. Called by\\n * {upgradeTo} and {upgradeToAndCall}.\\n *\\n * Normally, this function will use an xref:access.adoc[access control] modifier such as {Ownable-onlyOwner}.\\n *\\n * ```solidity\\n * function _authorizeUpgrade(address) internal override onlyOwner {}\\n * ```\\n */\\n function _authorizeUpgrade(address newImplementation) internal virtual;\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0xefb41f5c1a00249b7a99f0782f8c557865605426a3fb6e5fe9ae334293ae4f33\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/StorageSlot.sol)\\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```solidity\\n * contract ERC1967 {\\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n * function _getImplementation() internal view returns (address) {\\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n * }\\n *\\n * function _setImplementation(address newImplementation) internal {\\n * require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n * }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._\\n * _Available since v4.9 for `string`, `bytes`._\\n */\\nlibrary StorageSlotUpgradeable {\\n struct AddressSlot {\\n address value;\\n }\\n\\n struct BooleanSlot {\\n bool value;\\n }\\n\\n struct Bytes32Slot {\\n bytes32 value;\\n }\\n\\n struct Uint256Slot {\\n uint256 value;\\n }\\n\\n struct StringSlot {\\n string value;\\n }\\n\\n struct BytesSlot {\\n bytes value;\\n }\\n\\n /**\\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n */\\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n */\\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n */\\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n */\\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` with member `value` located at `slot`.\\n */\\n function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\\n */\\n function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` with member `value` located at `slot`.\\n */\\n function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\\n */\\n function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n}\\n\",\"keccak256\":\"0x07ac95acad040f1fb1f6120dd0aa5f702db69446e95f82613721879d30de0908\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":372,"contract":"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:UUPSUpgradeable","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":375,"contract":"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:UUPSUpgradeable","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":354,"contract":"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:UUPSUpgradeable","label":"__gap","offset":0,"slot":"1","type":"t_array(t_uint256)50_storage"},{"astId":670,"contract":"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:UUPSUpgradeable","label":"__gap","offset":0,"slot":"51","type":"t_array(t_uint256)50_storage"}],"types":{"t_array(t_uint256)50_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[50]","numberOfBytes":"1600"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol":{"AddressUpgradeable":{"abi":[],"devdoc":{"details":"Collection of functions related to the address type","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"602d6037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a","opcodes":"PUSH1 0x2D PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"194:9180:6:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;194:9180:6;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"194:9180:6:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"9000","executionCost":"94","totalCost":"9094"},"internal":{"_revert(bytes memory,string memory)":"infinite","functionCall(address,bytes memory)":"infinite","functionCall(address,bytes memory,string memory)":"infinite","functionCallWithValue(address,bytes memory,uint256)":"infinite","functionCallWithValue(address,bytes memory,uint256,string memory)":"infinite","functionDelegateCall(address,bytes memory)":"infinite","functionDelegateCall(address,bytes memory,string memory)":"infinite","functionStaticCall(address,bytes memory)":"infinite","functionStaticCall(address,bytes memory,string memory)":"infinite","isContract(address)":"infinite","sendValue(address payable,uint256)":"infinite","verifyCallResult(bool,bytes memory,string memory)":"infinite","verifyCallResultFromTarget(address,bool,bytes memory,string memory)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Collection of functions related to the address type\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":\"AddressUpgradeable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol":{"ContextUpgradeable":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"}],"devdoc":{"details":"Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.","kind":"dev","methods":{},"stateVariables":{"__gap":{"details":"This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain. See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"}],\"devdoc\":{\"details\":\"Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.\",\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"__gap\":{\"details\":\"This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain. See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":\"ContextUpgradeable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n function __Context_init() internal onlyInitializing {\\n }\\n\\n function __Context_init_unchained() internal onlyInitializing {\\n }\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n function _contextSuffixLength() internal view virtual returns (uint256) {\\n return 0;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x75097e35253e7fb282ee4d7f27a80eaacfa759923185bf17302a89cbc059c5ef\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":372,"contract":"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":375,"contract":"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":1051,"contract":"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable","label":"__gap","offset":0,"slot":"1","type":"t_array(t_uint256)50_storage"}],"types":{"t_array(t_uint256)50_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[50]","numberOfBytes":"1600"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol":{"CountersUpgradeable":{"abi":[],"devdoc":{"author":"Matt Condon (@shrugs)","details":"Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number of elements in a mapping, issuing ERC721 ids, or counting request ids. Include with `using Counters for Counters.Counter;`","kind":"dev","methods":{},"title":"Counters","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"602d6037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a","opcodes":"PUSH1 0x2D PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"424:982:8:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;424:982:8;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"424:982:8:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"9000","executionCost":"94","totalCost":"9094"},"internal":{"current(struct CountersUpgradeable.Counter storage pointer)":"infinite","decrement(struct CountersUpgradeable.Counter storage pointer)":"infinite","increment(struct CountersUpgradeable.Counter storage pointer)":"infinite","reset(struct CountersUpgradeable.Counter storage pointer)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"author\":\"Matt Condon (@shrugs)\",\"details\":\"Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number of elements in a mapping, issuing ERC721 ids, or counting request ids. Include with `using Counters for Counters.Counter;`\",\"kind\":\"dev\",\"methods\":{},\"title\":\"Counters\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol\":\"CountersUpgradeable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Counters.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title Counters\\n * @author Matt Condon (@shrugs)\\n * @dev Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number\\n * of elements in a mapping, issuing ERC721 ids, or counting request ids.\\n *\\n * Include with `using Counters for Counters.Counter;`\\n */\\nlibrary CountersUpgradeable {\\n struct Counter {\\n // This variable should never be directly accessed by users of the library: interactions must be restricted to\\n // the library's function. As of Solidity v0.5.2, this cannot be enforced, though there is a proposal to add\\n // this feature: see https://github.com/ethereum/solidity/issues/4637\\n uint256 _value; // default: 0\\n }\\n\\n function current(Counter storage counter) internal view returns (uint256) {\\n return counter._value;\\n }\\n\\n function increment(Counter storage counter) internal {\\n unchecked {\\n counter._value += 1;\\n }\\n }\\n\\n function decrement(Counter storage counter) internal {\\n uint256 value = counter._value;\\n require(value > 0, \\\"Counter: decrement overflow\\\");\\n unchecked {\\n counter._value = value - 1;\\n }\\n }\\n\\n function reset(Counter storage counter) internal {\\n counter._value = 0;\\n }\\n}\\n\",\"keccak256\":\"0x798741e231b22b81e2dd2eddaaf8832dee4baf5cd8e2dbaa5c1dd12a1c053c4d\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol":{"StorageSlotUpgradeable":{"abi":[],"devdoc":{"details":"Library for reading and writing primitive types to specific storage slots. Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts. This library helps with reading and writing to such slots without the need for inline assembly. The functions in this library return Slot structs that contain a `value` member that can be used to read or write. Example usage to set ERC1967 implementation slot: ```solidity contract ERC1967 { bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc; function _getImplementation() internal view returns (address) { return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value; } function _setImplementation(address newImplementation) internal { require(Address.isContract(newImplementation), \"ERC1967: new implementation is not a contract\"); StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation; } } ``` _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._ _Available since v4.9 for `string`, `bytes`._","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"602d6037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a","opcodes":"PUSH1 0x2D PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"1420:2696:9:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;1420:2696:9;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"1420:2696:9:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"9000","executionCost":"94","totalCost":"9094"},"internal":{"getAddressSlot(bytes32)":"infinite","getBooleanSlot(bytes32)":"infinite","getBytes32Slot(bytes32)":"infinite","getBytesSlot(bytes storage pointer)":"infinite","getBytesSlot(bytes32)":"infinite","getStringSlot(bytes32)":"infinite","getStringSlot(string storage pointer)":"infinite","getUint256Slot(bytes32)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Library for reading and writing primitive types to specific storage slots. Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts. This library helps with reading and writing to such slots without the need for inline assembly. The functions in this library return Slot structs that contain a `value` member that can be used to read or write. Example usage to set ERC1967 implementation slot: ```solidity contract ERC1967 { bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc; function _getImplementation() internal view returns (address) { return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value; } function _setImplementation(address newImplementation) internal { require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\"); StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation; } } ``` _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._ _Available since v4.9 for `string`, `bytes`._\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol\":\"StorageSlotUpgradeable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/StorageSlot.sol)\\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```solidity\\n * contract ERC1967 {\\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n * function _getImplementation() internal view returns (address) {\\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n * }\\n *\\n * function _setImplementation(address newImplementation) internal {\\n * require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n * }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._\\n * _Available since v4.9 for `string`, `bytes`._\\n */\\nlibrary StorageSlotUpgradeable {\\n struct AddressSlot {\\n address value;\\n }\\n\\n struct BooleanSlot {\\n bool value;\\n }\\n\\n struct Bytes32Slot {\\n bytes32 value;\\n }\\n\\n struct Uint256Slot {\\n uint256 value;\\n }\\n\\n struct StringSlot {\\n string value;\\n }\\n\\n struct BytesSlot {\\n bytes value;\\n }\\n\\n /**\\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n */\\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n */\\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n */\\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n */\\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` with member `value` located at `slot`.\\n */\\n function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\\n */\\n function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` with member `value` located at `slot`.\\n */\\n function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\\n */\\n function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n}\\n\",\"keccak256\":\"0x07ac95acad040f1fb1f6120dd0aa5f702db69446e95f82613721879d30de0908\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol":{"ERC165Upgradeable":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"Implementation of the {IERC165} interface. Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check for the additional interface id that will be supported. For example: ```solidity function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); } ``` Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.","kind":"dev","methods":{"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."}},"stateVariables":{"__gap":{"details":"This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain. See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of the {IERC165} interface. Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check for the additional interface id that will be supported. For example: ```solidity function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); } ``` Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\",\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"}},\"stateVariables\":{\"__gap\":{\"details\":\"This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain. See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":\"ERC165Upgradeable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165Upgradeable.sol\\\";\\nimport {Initializable} from \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165Upgradeable is Initializable, IERC165Upgradeable {\\n function __ERC165_init() internal onlyInitializing {\\n }\\n\\n function __ERC165_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165Upgradeable).interfaceId;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0xd90d7723512df65ae417adaf0801042940f0dabd60039ceeaffe34aa5b238da1\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165Upgradeable {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":372,"contract":"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":375,"contract":"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":1280,"contract":"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable","label":"__gap","offset":0,"slot":"1","type":"t_array(t_uint256)50_storage"}],"types":{"t_array(t_uint256)50_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[50]","numberOfBytes":"1600"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol":{"IERC165Upgradeable":{"abi":[{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"Interface of the ERC165 standard, as defined in the https://eips.ethereum.org/EIPS/eip-165[EIP]. Implementers can declare support of contract interfaces, which can then be queried by others ({ERC165Checker}). For an implementation, see {ERC165}.","kind":"dev","methods":{"supportsInterface(bytes4)":{"details":"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC165 standard, as defined in the https://eips.ethereum.org/EIPS/eip-165[EIP]. Implementers can declare support of contract interfaces, which can then be queried by others ({ERC165Checker}). For an implementation, see {ERC165}.\",\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":\"IERC165Upgradeable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165Upgradeable {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/interfaces/IERC1967.sol":{"IERC1967":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"beacon","type":"address"}],"name":"BeaconUpgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"}],"devdoc":{"details":"ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC. _Available since v4.8.3._","events":{"AdminChanged(address,address)":{"details":"Emitted when the admin account has changed."},"BeaconUpgraded(address)":{"details":"Emitted when the beacon is changed."},"Upgraded(address)":{"details":"Emitted when the implementation is upgraded."}},"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"}],\"devdoc\":{\"details\":\"ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC. _Available since v4.8.3._\",\"events\":{\"AdminChanged(address,address)\":{\"details\":\"Emitted when the admin account has changed.\"},\"BeaconUpgraded(address)\":{\"details\":\"Emitted when the beacon is changed.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/interfaces/IERC1967.sol\":\"IERC1967\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/IERC1967.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (interfaces/IERC1967.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\\n *\\n * _Available since v4.8.3._\\n */\\ninterface IERC1967 {\\n /**\\n * @dev Emitted when the implementation is upgraded.\\n */\\n event Upgraded(address indexed implementation);\\n\\n /**\\n * @dev Emitted when the admin account has changed.\\n */\\n event AdminChanged(address previousAdmin, address newAdmin);\\n\\n /**\\n * @dev Emitted when the beacon is changed.\\n */\\n event BeaconUpgraded(address indexed beacon);\\n}\\n\",\"keccak256\":\"0x3cbef5ebc24b415252e2f8c0c9254555d30d9f085603b4b80d9b5ed20ab87e90\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/interfaces/draft-IERC1822.sol":{"IERC1822Proxiable":{"abi":[{"inputs":[],"name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified proxy whose upgrades are fully controlled by the current implementation.","kind":"dev","methods":{"proxiableUUID()":{"details":"Returns the storage slot that the proxiable contract assumes is being used to store the implementation address. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"proxiableUUID()":"52d1902d"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified proxy whose upgrades are fully controlled by the current implementation.\",\"kind\":\"dev\",\"methods\":{\"proxiableUUID()\":{\"details\":\"Returns the storage slot that the proxiable contract assumes is being used to store the implementation address. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":\"IERC1822Proxiable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822Proxiable {\\n /**\\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n * address.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy.\\n */\\n function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/proxy/Clones.sol":{"Clones":{"abi":[],"devdoc":{"details":"https://eips.ethereum.org/EIPS/eip-1167[EIP 1167] is a standard for deploying minimal proxy contracts, also known as \"clones\". > To simply and cheaply clone contract functionality in an immutable way, this standard specifies > a minimal bytecode implementation that delegates all calls to a known, fixed address. The library includes functions to deploy a proxy using either `create` (traditional deployment) or `create2` (salted deterministic deployment). It also includes functions to predict the addresses of clones deployed using the deterministic method. _Available since v3.4._","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"602d6037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a","opcodes":"PUSH1 0x2D PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"755:3275:14:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;755:3275:14;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"755:3275:14:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"9000","executionCost":"94","totalCost":"9094"},"internal":{"clone(address)":"infinite","cloneDeterministic(address,bytes32)":"infinite","predictDeterministicAddress(address,bytes32)":"infinite","predictDeterministicAddress(address,bytes32,address)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"https://eips.ethereum.org/EIPS/eip-1167[EIP 1167] is a standard for deploying minimal proxy contracts, also known as \\\"clones\\\". > To simply and cheaply clone contract functionality in an immutable way, this standard specifies > a minimal bytecode implementation that delegates all calls to a known, fixed address. The library includes functions to deploy a proxy using either `create` (traditional deployment) or `create2` (salted deterministic deployment). It also includes functions to predict the addresses of clones deployed using the deterministic method. _Available since v3.4._\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/proxy/Clones.sol\":\"Clones\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/proxy/Clones.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/Clones.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev https://eips.ethereum.org/EIPS/eip-1167[EIP 1167] is a standard for\\n * deploying minimal proxy contracts, also known as \\\"clones\\\".\\n *\\n * > To simply and cheaply clone contract functionality in an immutable way, this standard specifies\\n * > a minimal bytecode implementation that delegates all calls to a known, fixed address.\\n *\\n * The library includes functions to deploy a proxy using either `create` (traditional deployment) or `create2`\\n * (salted deterministic deployment). It also includes functions to predict the addresses of clones deployed using the\\n * deterministic method.\\n *\\n * _Available since v3.4._\\n */\\nlibrary Clones {\\n /**\\n * @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`.\\n *\\n * This function uses the create opcode, which should never revert.\\n */\\n function clone(address implementation) internal returns (address instance) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n // Cleans the upper 96 bits of the `implementation` word, then packs the first 3 bytes\\n // of the `implementation` address with the bytecode before the address.\\n mstore(0x00, or(shr(0xe8, shl(0x60, implementation)), 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000))\\n // Packs the remaining 17 bytes of `implementation` with the bytecode after the address.\\n mstore(0x20, or(shl(0x78, implementation), 0x5af43d82803e903d91602b57fd5bf3))\\n instance := create(0, 0x09, 0x37)\\n }\\n require(instance != address(0), \\\"ERC1167: create failed\\\");\\n }\\n\\n /**\\n * @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`.\\n *\\n * This function uses the create2 opcode and a `salt` to deterministically deploy\\n * the clone. Using the same `implementation` and `salt` multiple time will revert, since\\n * the clones cannot be deployed twice at the same address.\\n */\\n function cloneDeterministic(address implementation, bytes32 salt) internal returns (address instance) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n // Cleans the upper 96 bits of the `implementation` word, then packs the first 3 bytes\\n // of the `implementation` address with the bytecode before the address.\\n mstore(0x00, or(shr(0xe8, shl(0x60, implementation)), 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000))\\n // Packs the remaining 17 bytes of `implementation` with the bytecode after the address.\\n mstore(0x20, or(shl(0x78, implementation), 0x5af43d82803e903d91602b57fd5bf3))\\n instance := create2(0, 0x09, 0x37, salt)\\n }\\n require(instance != address(0), \\\"ERC1167: create2 failed\\\");\\n }\\n\\n /**\\n * @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}.\\n */\\n function predictDeterministicAddress(\\n address implementation,\\n bytes32 salt,\\n address deployer\\n ) internal pure returns (address predicted) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n let ptr := mload(0x40)\\n mstore(add(ptr, 0x38), deployer)\\n mstore(add(ptr, 0x24), 0x5af43d82803e903d91602b57fd5bf3ff)\\n mstore(add(ptr, 0x14), implementation)\\n mstore(ptr, 0x3d602d80600a3d3981f3363d3d373d3d3d363d73)\\n mstore(add(ptr, 0x58), salt)\\n mstore(add(ptr, 0x78), keccak256(add(ptr, 0x0c), 0x37))\\n predicted := keccak256(add(ptr, 0x43), 0x55)\\n }\\n }\\n\\n /**\\n * @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}.\\n */\\n function predictDeterministicAddress(\\n address implementation,\\n bytes32 salt\\n ) internal view returns (address predicted) {\\n return predictDeterministicAddress(implementation, salt, address(this));\\n }\\n}\\n\",\"keccak256\":\"0x01f055f5c26ba25d7f83e9aa9ba877fbea4d0bf22227de046ea67494bc932999\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol":{"ERC1967Proxy":{"abi":[{"inputs":[{"internalType":"address","name":"_logic","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"}],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"beacon","type":"address"}],"name":"BeaconUpgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"stateMutability":"payable","type":"fallback"},{"stateMutability":"payable","type":"receive"}],"devdoc":{"details":"This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an implementation address that can be changed. This address is stored in storage in the location specified by https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the implementation behind the proxy.","kind":"dev","methods":{"constructor":{"details":"Initializes the upgradeable proxy with an initial implementation specified by `_logic`. If `_data` is nonempty, it's used as data in a delegate call to `_logic`. This will typically be an encoded function call, and allows initializing the storage of the proxy like a Solidity constructor."}},"version":1},"evm":{"bytecode":{"functionDebugData":{"@_1428":{"entryPoint":null,"id":1428,"parameterSlots":2,"returnSlots":0},"@_revert_2136":{"entryPoint":693,"id":2136,"parameterSlots":2,"returnSlots":0},"@_setImplementation_1495":{"entryPoint":215,"id":1495,"parameterSlots":1,"returnSlots":0},"@_upgradeToAndCall_1540":{"entryPoint":53,"id":1540,"parameterSlots":3,"returnSlots":0},"@_upgradeTo_1510":{"entryPoint":107,"id":1510,"parameterSlots":1,"returnSlots":0},"@functionDelegateCall_2024":{"entryPoint":171,"id":2024,"parameterSlots":2,"returnSlots":1},"@functionDelegateCall_2053":{"entryPoint":425,"id":2053,"parameterSlots":3,"returnSlots":1},"@getAddressSlot_2273":{"entryPoint":561,"id":2273,"parameterSlots":1,"returnSlots":1},"@isContract_1825":{"entryPoint":546,"id":1825,"parameterSlots":1,"returnSlots":1},"@verifyCallResultFromTarget_2092":{"entryPoint":564,"id":2092,"parameterSlots":4,"returnSlots":1},"abi_decode_tuple_t_addresst_bytes_memory_ptr_fromMemory":{"entryPoint":793,"id":null,"parameterSlots":2,"returnSlots":2},"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":999,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":1027,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"copy_memory_to_memory_with_cleanup":{"entryPoint":757,"id":null,"parameterSlots":3,"returnSlots":0},"panic_error_0x41":{"entryPoint":735,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:2931:50","statements":[{"nodeType":"YulBlock","src":"6:3:50","statements":[]},{"body":{"nodeType":"YulBlock","src":"46:95:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"63:1:50","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"70:3:50","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"75:10:50","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"66:3:50"},"nodeType":"YulFunctionCall","src":"66:20:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"56:6:50"},"nodeType":"YulFunctionCall","src":"56:31:50"},"nodeType":"YulExpressionStatement","src":"56:31:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"103:1:50","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"106:4:50","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"96:6:50"},"nodeType":"YulFunctionCall","src":"96:15:50"},"nodeType":"YulExpressionStatement","src":"96:15:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"127:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"130:4:50","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"120:6:50"},"nodeType":"YulFunctionCall","src":"120:15:50"},"nodeType":"YulExpressionStatement","src":"120:15:50"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"14:127:50"},{"body":{"nodeType":"YulBlock","src":"212:184:50","statements":[{"nodeType":"YulVariableDeclaration","src":"222:10:50","value":{"kind":"number","nodeType":"YulLiteral","src":"231:1:50","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"226:1:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"291:63:50","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"316:3:50"},{"name":"i","nodeType":"YulIdentifier","src":"321:1:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"312:3:50"},"nodeType":"YulFunctionCall","src":"312:11:50"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"335:3:50"},{"name":"i","nodeType":"YulIdentifier","src":"340:1:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"331:3:50"},"nodeType":"YulFunctionCall","src":"331:11:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"325:5:50"},"nodeType":"YulFunctionCall","src":"325:18:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"305:6:50"},"nodeType":"YulFunctionCall","src":"305:39:50"},"nodeType":"YulExpressionStatement","src":"305:39:50"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"252:1:50"},{"name":"length","nodeType":"YulIdentifier","src":"255:6:50"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"249:2:50"},"nodeType":"YulFunctionCall","src":"249:13:50"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"263:19:50","statements":[{"nodeType":"YulAssignment","src":"265:15:50","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"274:1:50"},{"kind":"number","nodeType":"YulLiteral","src":"277:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"270:3:50"},"nodeType":"YulFunctionCall","src":"270:10:50"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"265:1:50"}]}]},"pre":{"nodeType":"YulBlock","src":"245:3:50","statements":[]},"src":"241:113:50"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"374:3:50"},{"name":"length","nodeType":"YulIdentifier","src":"379:6:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"370:3:50"},"nodeType":"YulFunctionCall","src":"370:16:50"},{"kind":"number","nodeType":"YulLiteral","src":"388:1:50","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"363:6:50"},"nodeType":"YulFunctionCall","src":"363:27:50"},"nodeType":"YulExpressionStatement","src":"363:27:50"}]},"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"190:3:50","type":""},{"name":"dst","nodeType":"YulTypedName","src":"195:3:50","type":""},{"name":"length","nodeType":"YulTypedName","src":"200:6:50","type":""}],"src":"146:250:50"},{"body":{"nodeType":"YulBlock","src":"508:956:50","statements":[{"body":{"nodeType":"YulBlock","src":"554:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"563:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"566:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"556:6:50"},"nodeType":"YulFunctionCall","src":"556:12:50"},"nodeType":"YulExpressionStatement","src":"556:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"529:7:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"538:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"525:3:50"},"nodeType":"YulFunctionCall","src":"525:23:50"},{"kind":"number","nodeType":"YulLiteral","src":"550:2:50","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"521:3:50"},"nodeType":"YulFunctionCall","src":"521:32:50"},"nodeType":"YulIf","src":"518:52:50"},{"nodeType":"YulVariableDeclaration","src":"579:29:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"598:9:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"592:5:50"},"nodeType":"YulFunctionCall","src":"592:16:50"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"583:5:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"671:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"680:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"683:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"673:6:50"},"nodeType":"YulFunctionCall","src":"673:12:50"},"nodeType":"YulExpressionStatement","src":"673:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"630:5:50"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"641:5:50"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"656:3:50","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"661:1:50","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"652:3:50"},"nodeType":"YulFunctionCall","src":"652:11:50"},{"kind":"number","nodeType":"YulLiteral","src":"665:1:50","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"648:3:50"},"nodeType":"YulFunctionCall","src":"648:19:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"637:3:50"},"nodeType":"YulFunctionCall","src":"637:31:50"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"627:2:50"},"nodeType":"YulFunctionCall","src":"627:42:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"620:6:50"},"nodeType":"YulFunctionCall","src":"620:50:50"},"nodeType":"YulIf","src":"617:70:50"},{"nodeType":"YulAssignment","src":"696:15:50","value":{"name":"value","nodeType":"YulIdentifier","src":"706:5:50"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"696:6:50"}]},{"nodeType":"YulVariableDeclaration","src":"720:39:50","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"744:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"755:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"740:3:50"},"nodeType":"YulFunctionCall","src":"740:18:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"734:5:50"},"nodeType":"YulFunctionCall","src":"734:25:50"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"724:6:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"768:28:50","value":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"786:2:50","type":"","value":"64"},{"kind":"number","nodeType":"YulLiteral","src":"790:1:50","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"782:3:50"},"nodeType":"YulFunctionCall","src":"782:10:50"},{"kind":"number","nodeType":"YulLiteral","src":"794:1:50","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"778:3:50"},"nodeType":"YulFunctionCall","src":"778:18:50"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"772:2:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"823:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"832:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"835:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"825:6:50"},"nodeType":"YulFunctionCall","src":"825:12:50"},"nodeType":"YulExpressionStatement","src":"825:12:50"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"811:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"819:2:50"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"808:2:50"},"nodeType":"YulFunctionCall","src":"808:14:50"},"nodeType":"YulIf","src":"805:34:50"},{"nodeType":"YulVariableDeclaration","src":"848:32:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"862:9:50"},{"name":"offset","nodeType":"YulIdentifier","src":"873:6:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"858:3:50"},"nodeType":"YulFunctionCall","src":"858:22:50"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"852:2:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"928:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"937:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"940:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"930:6:50"},"nodeType":"YulFunctionCall","src":"930:12:50"},"nodeType":"YulExpressionStatement","src":"930:12:50"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"907:2:50"},{"kind":"number","nodeType":"YulLiteral","src":"911:4:50","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"903:3:50"},"nodeType":"YulFunctionCall","src":"903:13:50"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"918:7:50"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"899:3:50"},"nodeType":"YulFunctionCall","src":"899:27:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"892:6:50"},"nodeType":"YulFunctionCall","src":"892:35:50"},"nodeType":"YulIf","src":"889:55:50"},{"nodeType":"YulVariableDeclaration","src":"953:19:50","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"969:2:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"963:5:50"},"nodeType":"YulFunctionCall","src":"963:9:50"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"957:2:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"995:22:50","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"997:16:50"},"nodeType":"YulFunctionCall","src":"997:18:50"},"nodeType":"YulExpressionStatement","src":"997:18:50"}]},"condition":{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"987:2:50"},{"name":"_1","nodeType":"YulIdentifier","src":"991:2:50"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"984:2:50"},"nodeType":"YulFunctionCall","src":"984:10:50"},"nodeType":"YulIf","src":"981:36:50"},{"nodeType":"YulVariableDeclaration","src":"1026:17:50","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1040:2:50","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"1036:3:50"},"nodeType":"YulFunctionCall","src":"1036:7:50"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"1030:2:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"1052:23:50","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1072:2:50","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1066:5:50"},"nodeType":"YulFunctionCall","src":"1066:9:50"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"1056:6:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"1084:71:50","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1106:6:50"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"1130:2:50"},{"kind":"number","nodeType":"YulLiteral","src":"1134:4:50","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1126:3:50"},"nodeType":"YulFunctionCall","src":"1126:13:50"},{"name":"_4","nodeType":"YulIdentifier","src":"1141:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1122:3:50"},"nodeType":"YulFunctionCall","src":"1122:22:50"},{"kind":"number","nodeType":"YulLiteral","src":"1146:2:50","type":"","value":"63"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1118:3:50"},"nodeType":"YulFunctionCall","src":"1118:31:50"},{"name":"_4","nodeType":"YulIdentifier","src":"1151:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1114:3:50"},"nodeType":"YulFunctionCall","src":"1114:40:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1102:3:50"},"nodeType":"YulFunctionCall","src":"1102:53:50"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"1088:10:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"1214:22:50","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"1216:16:50"},"nodeType":"YulFunctionCall","src":"1216:18:50"},"nodeType":"YulExpressionStatement","src":"1216:18:50"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"1173:10:50"},{"name":"_1","nodeType":"YulIdentifier","src":"1185:2:50"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1170:2:50"},"nodeType":"YulFunctionCall","src":"1170:18:50"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"1193:10:50"},{"name":"memPtr","nodeType":"YulIdentifier","src":"1205:6:50"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"1190:2:50"},"nodeType":"YulFunctionCall","src":"1190:22:50"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"1167:2:50"},"nodeType":"YulFunctionCall","src":"1167:46:50"},"nodeType":"YulIf","src":"1164:72:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1252:2:50","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"1256:10:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1245:6:50"},"nodeType":"YulFunctionCall","src":"1245:22:50"},"nodeType":"YulExpressionStatement","src":"1245:22:50"},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1283:6:50"},{"name":"_3","nodeType":"YulIdentifier","src":"1291:2:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1276:6:50"},"nodeType":"YulFunctionCall","src":"1276:18:50"},"nodeType":"YulExpressionStatement","src":"1276:18:50"},{"body":{"nodeType":"YulBlock","src":"1340:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1349:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1352:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1342:6:50"},"nodeType":"YulFunctionCall","src":"1342:12:50"},"nodeType":"YulExpressionStatement","src":"1342:12:50"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"1317:2:50"},{"name":"_3","nodeType":"YulIdentifier","src":"1321:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1313:3:50"},"nodeType":"YulFunctionCall","src":"1313:11:50"},{"kind":"number","nodeType":"YulLiteral","src":"1326:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1309:3:50"},"nodeType":"YulFunctionCall","src":"1309:20:50"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1331:7:50"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1306:2:50"},"nodeType":"YulFunctionCall","src":"1306:33:50"},"nodeType":"YulIf","src":"1303:53:50"},{"expression":{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"1404:2:50"},{"kind":"number","nodeType":"YulLiteral","src":"1408:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1400:3:50"},"nodeType":"YulFunctionCall","src":"1400:11:50"},{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1417:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"1425:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1413:3:50"},"nodeType":"YulFunctionCall","src":"1413:15:50"},{"name":"_3","nodeType":"YulIdentifier","src":"1430:2:50"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"1365:34:50"},"nodeType":"YulFunctionCall","src":"1365:68:50"},"nodeType":"YulExpressionStatement","src":"1365:68:50"},{"nodeType":"YulAssignment","src":"1442:16:50","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"1452:6:50"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1442:6:50"}]}]},"name":"abi_decode_tuple_t_addresst_bytes_memory_ptr_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"466:9:50","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"477:7:50","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"489:6:50","type":""},{"name":"value1","nodeType":"YulTypedName","src":"497:6:50","type":""}],"src":"401:1063:50"},{"body":{"nodeType":"YulBlock","src":"1643:235:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1660:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"1671:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1653:6:50"},"nodeType":"YulFunctionCall","src":"1653:21:50"},"nodeType":"YulExpressionStatement","src":"1653:21:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1694:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"1705:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1690:3:50"},"nodeType":"YulFunctionCall","src":"1690:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"1710:2:50","type":"","value":"45"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1683:6:50"},"nodeType":"YulFunctionCall","src":"1683:30:50"},"nodeType":"YulExpressionStatement","src":"1683:30:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1733:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"1744:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1729:3:50"},"nodeType":"YulFunctionCall","src":"1729:18:50"},{"hexValue":"455243313936373a206e657720696d706c656d656e746174696f6e206973206e","kind":"string","nodeType":"YulLiteral","src":"1749:34:50","type":"","value":"ERC1967: new implementation is n"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1722:6:50"},"nodeType":"YulFunctionCall","src":"1722:62:50"},"nodeType":"YulExpressionStatement","src":"1722:62:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1804:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"1815:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1800:3:50"},"nodeType":"YulFunctionCall","src":"1800:18:50"},{"hexValue":"6f74206120636f6e7472616374","kind":"string","nodeType":"YulLiteral","src":"1820:15:50","type":"","value":"ot a contract"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1793:6:50"},"nodeType":"YulFunctionCall","src":"1793:43:50"},"nodeType":"YulExpressionStatement","src":"1793:43:50"},{"nodeType":"YulAssignment","src":"1845:27:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1857:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"1868:3:50","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1853:3:50"},"nodeType":"YulFunctionCall","src":"1853:19:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1845:4:50"}]}]},"name":"abi_encode_tuple_t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1620:9:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1634:4:50","type":""}],"src":"1469:409:50"},{"body":{"nodeType":"YulBlock","src":"2020:150:50","statements":[{"nodeType":"YulVariableDeclaration","src":"2030:27:50","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2050:6:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2044:5:50"},"nodeType":"YulFunctionCall","src":"2044:13:50"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"2034:6:50","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2105:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"2113:4:50","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2101:3:50"},"nodeType":"YulFunctionCall","src":"2101:17:50"},{"name":"pos","nodeType":"YulIdentifier","src":"2120:3:50"},{"name":"length","nodeType":"YulIdentifier","src":"2125:6:50"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"2066:34:50"},"nodeType":"YulFunctionCall","src":"2066:66:50"},"nodeType":"YulExpressionStatement","src":"2066:66:50"},{"nodeType":"YulAssignment","src":"2141:23:50","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2152:3:50"},{"name":"length","nodeType":"YulIdentifier","src":"2157:6:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2148:3:50"},"nodeType":"YulFunctionCall","src":"2148:16:50"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"2141:3:50"}]}]},"name":"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1996:3:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"2001:6:50","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"2012:3:50","type":""}],"src":"1883:287:50"},{"body":{"nodeType":"YulBlock","src":"2349:179:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2366:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"2377:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2359:6:50"},"nodeType":"YulFunctionCall","src":"2359:21:50"},"nodeType":"YulExpressionStatement","src":"2359:21:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2400:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"2411:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2396:3:50"},"nodeType":"YulFunctionCall","src":"2396:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"2416:2:50","type":"","value":"29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2389:6:50"},"nodeType":"YulFunctionCall","src":"2389:30:50"},"nodeType":"YulExpressionStatement","src":"2389:30:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2439:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"2450:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2435:3:50"},"nodeType":"YulFunctionCall","src":"2435:18:50"},{"hexValue":"416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374","kind":"string","nodeType":"YulLiteral","src":"2455:31:50","type":"","value":"Address: call to non-contract"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2428:6:50"},"nodeType":"YulFunctionCall","src":"2428:59:50"},"nodeType":"YulExpressionStatement","src":"2428:59:50"},{"nodeType":"YulAssignment","src":"2496:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2508:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"2519:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2504:3:50"},"nodeType":"YulFunctionCall","src":"2504:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2496:4:50"}]}]},"name":"abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2326:9:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2340:4:50","type":""}],"src":"2175:353:50"},{"body":{"nodeType":"YulBlock","src":"2654:275:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2671:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"2682:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2664:6:50"},"nodeType":"YulFunctionCall","src":"2664:21:50"},"nodeType":"YulExpressionStatement","src":"2664:21:50"},{"nodeType":"YulVariableDeclaration","src":"2694:27:50","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2714:6:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2708:5:50"},"nodeType":"YulFunctionCall","src":"2708:13:50"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"2698:6:50","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2741:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"2752:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2737:3:50"},"nodeType":"YulFunctionCall","src":"2737:18:50"},{"name":"length","nodeType":"YulIdentifier","src":"2757:6:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2730:6:50"},"nodeType":"YulFunctionCall","src":"2730:34:50"},"nodeType":"YulExpressionStatement","src":"2730:34:50"},{"expression":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2812:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"2820:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2808:3:50"},"nodeType":"YulFunctionCall","src":"2808:15:50"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2829:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"2840:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2825:3:50"},"nodeType":"YulFunctionCall","src":"2825:18:50"},{"name":"length","nodeType":"YulIdentifier","src":"2845:6:50"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"2773:34:50"},"nodeType":"YulFunctionCall","src":"2773:79:50"},"nodeType":"YulExpressionStatement","src":"2773:79:50"},{"nodeType":"YulAssignment","src":"2861:62:50","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2877:9:50"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"2896:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"2904:2:50","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2892:3:50"},"nodeType":"YulFunctionCall","src":"2892:15:50"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2913:2:50","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"2909:3:50"},"nodeType":"YulFunctionCall","src":"2909:7:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2888:3:50"},"nodeType":"YulFunctionCall","src":"2888:29:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2873:3:50"},"nodeType":"YulFunctionCall","src":"2873:45:50"},{"kind":"number","nodeType":"YulLiteral","src":"2920:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2869:3:50"},"nodeType":"YulFunctionCall","src":"2869:54:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2861:4:50"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2623:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"2634:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2645:4:50","type":""}],"src":"2533:396:50"}]},"contents":"{\n { }\n function panic_error_0x41()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function copy_memory_to_memory_with_cleanup(src, dst, length)\n {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n mstore(add(dst, length), 0)\n }\n function abi_decode_tuple_t_addresst_bytes_memory_ptr_fromMemory(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n let value := mload(headStart)\n if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n value0 := value\n let offset := mload(add(headStart, 32))\n let _1 := sub(shl(64, 1), 1)\n if gt(offset, _1) { revert(0, 0) }\n let _2 := add(headStart, offset)\n if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n let _3 := mload(_2)\n if gt(_3, _1) { panic_error_0x41() }\n let _4 := not(31)\n let memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n mstore(memPtr, _3)\n if gt(add(add(_2, _3), 32), dataEnd) { revert(0, 0) }\n copy_memory_to_memory_with_cleanup(add(_2, 32), add(memPtr, 32), _3)\n value1 := memPtr\n }\n function abi_encode_tuple_t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 45)\n mstore(add(headStart, 64), \"ERC1967: new implementation is n\")\n mstore(add(headStart, 96), \"ot a contract\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n {\n let length := mload(value0)\n copy_memory_to_memory_with_cleanup(add(value0, 0x20), pos, length)\n end := add(pos, length)\n }\n function abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 29)\n mstore(add(headStart, 64), \"Address: call to non-contract\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n mstore(headStart, 32)\n let length := mload(value0)\n mstore(add(headStart, 32), length)\n copy_memory_to_memory_with_cleanup(add(value0, 32), add(headStart, 64), length)\n tail := add(add(headStart, and(add(length, 31), not(31))), 64)\n }\n}","id":50,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60806040526040516106fe3803806106fe83398101604081905261002291610319565b61002e82826000610035565b5050610436565b61003e8361006b565b60008251118061004b5750805b156100665761006483836100ab60201b6100291760201c565b505b505050565b610074816100d7565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606100d083836040518060600160405280602781526020016106d7602791396101a9565b9392505050565b6100ea8161022260201b6100551760201c565b6101515760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b806101887f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61023160201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6060600080856001600160a01b0316856040516101c691906103e7565b600060405180830381855af49150503d8060008114610201576040519150601f19603f3d011682016040523d82523d6000602084013e610206565b606091505b50909250905061021886838387610234565b9695505050505050565b6001600160a01b03163b151590565b90565b606083156102a357825160000361029c576001600160a01b0385163b61029c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610148565b50816102ad565b6102ad83836102b5565b949350505050565b8151156102c55781518083602001fd5b8060405162461bcd60e51b81526004016101489190610403565b634e487b7160e01b600052604160045260246000fd5b60005b838110156103105781810151838201526020016102f8565b50506000910152565b6000806040838503121561032c57600080fd5b82516001600160a01b038116811461034357600080fd5b60208401519092506001600160401b038082111561036057600080fd5b818501915085601f83011261037457600080fd5b815181811115610386576103866102df565b604051601f8201601f19908116603f011681019083821181831017156103ae576103ae6102df565b816040528281528860208487010111156103c757600080fd5b6103d88360208301602088016102f5565b80955050505050509250929050565b600082516103f98184602087016102f5565b9190910192915050565b60208152600082518060208401526104228160408501602087016102f5565b601f01601f19169190910160400192915050565b610292806104456000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b61009f565b565b606061004e838360405180606001604052806027815260200161025f602791396100c3565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e8080156100be573d6000f35b3d6000fd5b6060600080856001600160a01b0316856040516100e0919061020f565b600060405180830381855af49150503d806000811461011b576040519150601f19603f3d011682016040523d82523d6000602084013e610120565b606091505b50915091506101318683838761013b565b9695505050505050565b606083156101af5782516000036101a8576001600160a01b0385163b6101a85760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b50816101b9565b6101b983836101c1565b949350505050565b8151156101d15781518083602001fd5b8060405162461bcd60e51b815260040161019f919061022b565b60005b838110156102065781810151838201526020016101ee565b50506000910152565b600082516102218184602087016101eb565b9190910192915050565b602081526000825180602084015261024a8160408501602087016101eb565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH2 0x6FE CODESIZE SUB DUP1 PUSH2 0x6FE DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x22 SWAP2 PUSH2 0x319 JUMP JUMPDEST PUSH2 0x2E DUP3 DUP3 PUSH1 0x0 PUSH2 0x35 JUMP JUMPDEST POP POP PUSH2 0x436 JUMP JUMPDEST PUSH2 0x3E DUP4 PUSH2 0x6B JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD GT DUP1 PUSH2 0x4B JUMPI POP DUP1 JUMPDEST ISZERO PUSH2 0x66 JUMPI PUSH2 0x64 DUP4 DUP4 PUSH2 0xAB PUSH1 0x20 SHL PUSH2 0x29 OR PUSH1 0x20 SHR JUMP JUMPDEST POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x74 DUP2 PUSH2 0xD7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xD0 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x6D7 PUSH1 0x27 SWAP2 CODECOPY PUSH2 0x1A9 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xEA DUP2 PUSH2 0x222 PUSH1 0x20 SHL PUSH2 0x55 OR PUSH1 0x20 SHR JUMP JUMPDEST PUSH2 0x151 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313936373A206E657720696D706C656D656E746174696F6E206973206E PUSH1 0x44 DUP3 ADD MSTORE PUSH13 0x1BDD08184818DBDB9D1C9858DD PUSH1 0x9A SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH2 0x188 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC PUSH1 0x0 SHL PUSH2 0x231 PUSH1 0x20 SHL PUSH2 0x64 OR PUSH1 0x20 SHR JUMP JUMPDEST DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0x1C6 SWAP2 SWAP1 PUSH2 0x3E7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x201 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x206 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x218 DUP7 DUP4 DUP4 DUP8 PUSH2 0x234 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x2A3 JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0x29C JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0x29C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x148 JUMP JUMPDEST POP DUP2 PUSH2 0x2AD JUMP JUMPDEST PUSH2 0x2AD DUP4 DUP4 PUSH2 0x2B5 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x2C5 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x148 SWAP2 SWAP1 PUSH2 0x403 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x310 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2F8 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x32C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x343 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x360 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x374 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x386 JUMPI PUSH2 0x386 PUSH2 0x2DF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x3AE JUMPI PUSH2 0x3AE PUSH2 0x2DF JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x3C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3D8 DUP4 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x2F5 JUMP JUMPDEST DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x3F9 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x2F5 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x422 DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x2F5 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x292 DUP1 PUSH2 0x445 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLDATASIZE PUSH2 0x13 JUMPI PUSH2 0x11 PUSH2 0x17 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x11 JUMPDEST PUSH2 0x27 PUSH2 0x22 PUSH2 0x67 JUMP JUMPDEST PUSH2 0x9F JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x60 PUSH2 0x4E DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x25F PUSH1 0x27 SWAP2 CODECOPY PUSH2 0xC3 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9A PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 DUP1 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE PUSH1 0x0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH2 0xBE JUMPI RETURNDATASIZE PUSH1 0x0 RETURN JUMPDEST RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0xE0 SWAP2 SWAP1 PUSH2 0x20F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x11B JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x120 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x131 DUP7 DUP4 DUP4 DUP8 PUSH2 0x13B JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x1AF JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0x1A8 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0x1A8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP DUP2 PUSH2 0x1B9 JUMP JUMPDEST PUSH2 0x1B9 DUP4 DUP4 PUSH2 0x1C1 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x1D1 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x19F SWAP2 SWAP1 PUSH2 0x22B JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x206 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1EE JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x221 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x1EB JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x24A DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x1EB JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A164 PUSH20 0x6F6C6343000811000A416464726573733A206C6F PUSH24 0x2D6C6576656C2064656C65676174652063616C6C20666169 PUSH13 0x65640000000000000000000000 ","sourceMap":"567:723:15:-:0;;;958:112;;;;;;;;;;;;;;;;;;:::i;:::-;1024:39;1042:6;1050:5;1057;1024:17;:39::i;:::-;958:112;;567:723;;2057:265:16;2165:29;2176:17;2165:10;:29::i;:::-;2222:1;2208:4;:11;:15;:28;;;;2227:9;2208:28;2204:112;;;2252:53;2281:17;2300:4;2252:28;;;;;:53;;:::i;:::-;;2204:112;2057:265;;;:::o;1771:152::-;1837:37;1856:17;1837:18;:37::i;:::-;1889:27;;-1:-1:-1;;;;;1889:27:16;;;;;;;;1771:152;:::o;6674:198:19:-;6757:12;6788:77;6809:6;6817:4;6788:77;;;;;;;;;;;;;;;;;:20;:77::i;:::-;6781:84;6674:198;-1:-1:-1;;;6674:198:19:o;1406:259:16:-;1487:37;1506:17;1487:18;;;;;:37;;:::i;:::-;1479:95;;;;-1:-1:-1;;;1479:95:16;;1671:2:50;1479:95:16;;;1653:21:50;1710:2;1690:18;;;1683:30;1749:34;1729:18;;;1722:62;-1:-1:-1;;;1800:18:50;;;1793:43;1853:19;;1479:95:16;;;;;;;;;1641:17;1584:48;1030:66;1611:20;;1584:26;;;;;:48;;:::i;:::-;:74;;-1:-1:-1;;;;;;1584:74:16;-1:-1:-1;;;;;1584:74:16;;;;;;;;;;-1:-1:-1;1406:259:16:o;7058:325:19:-;7199:12;7224;7238:23;7265:6;-1:-1:-1;;;;;7265:19:19;7285:4;7265:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7223:67:19;;-1:-1:-1;7223:67:19;-1:-1:-1;7307:69:19;7334:6;7223:67;;7363:12;7307:26;:69::i;:::-;7300:76;7058:325;-1:-1:-1;;;;;;7058:325:19:o;1412:320::-;-1:-1:-1;;;;;1702:19:19;;:23;;;1412:320::o;1859:190:22:-;2029:4;1859:190::o;7671:628:19:-;7851:12;7879:7;7875:418;;;7906:10;:17;7927:1;7906:22;7902:286;;-1:-1:-1;;;;;1702:19:19;;;8113:60;;;;-1:-1:-1;;;8113:60:19;;2377:2:50;8113:60:19;;;2359:21:50;2416:2;2396:18;;;2389:30;2455:31;2435:18;;;2428:59;2504:18;;8113:60:19;2175:353:50;8113:60:19;-1:-1:-1;8208:10:19;8201:17;;7875:418;8249:33;8257:10;8269:12;8249:7;:33::i;:::-;7671:628;;;;;;:::o;8821:540::-;8980:17;;:21;8976:379;;9208:10;9202:17;9264:15;9251:10;9247:2;9243:19;9236:44;8976:379;9331:12;9324:20;;-1:-1:-1;;;9324:20:19;;;;;;;;:::i;14:127:50:-;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:250;231:1;241:113;255:6;252:1;249:13;241:113;;;331:11;;;325:18;312:11;;;305:39;277:2;270:10;241:113;;;-1:-1:-1;;388:1:50;370:16;;363:27;146:250::o;401:1063::-;489:6;497;550:2;538:9;529:7;525:23;521:32;518:52;;;566:1;563;556:12;518:52;592:16;;-1:-1:-1;;;;;637:31:50;;627:42;;617:70;;683:1;680;673:12;617:70;755:2;740:18;;734:25;706:5;;-1:-1:-1;;;;;;808:14:50;;;805:34;;;835:1;832;825:12;805:34;873:6;862:9;858:22;848:32;;918:7;911:4;907:2;903:13;899:27;889:55;;940:1;937;930:12;889:55;969:2;963:9;991:2;987;984:10;981:36;;;997:18;;:::i;:::-;1072:2;1066:9;1040:2;1126:13;;-1:-1:-1;;1122:22:50;;;1146:2;1118:31;1114:40;1102:53;;;1170:18;;;1190:22;;;1167:46;1164:72;;;1216:18;;:::i;:::-;1256:10;1252:2;1245:22;1291:2;1283:6;1276:18;1331:7;1326:2;1321;1317;1313:11;1309:20;1306:33;1303:53;;;1352:1;1349;1342:12;1303:53;1365:68;1430:2;1425;1417:6;1413:15;1408:2;1404;1400:11;1365:68;:::i;:::-;1452:6;1442:16;;;;;;;401:1063;;;;;:::o;1883:287::-;2012:3;2050:6;2044:13;2066:66;2125:6;2120:3;2113:4;2105:6;2101:17;2066:66;:::i;:::-;2148:16;;;;;1883:287;-1:-1:-1;;1883:287:50:o;2533:396::-;2682:2;2671:9;2664:21;2645:4;2714:6;2708:13;2757:6;2752:2;2741:9;2737:18;2730:34;2773:79;2845:6;2840:2;2829:9;2825:18;2820:2;2812:6;2808:15;2773:79;:::i;:::-;2913:2;2892:15;-1:-1:-1;;2888:29:50;2873:45;;;;2920:2;2869:54;;2533:396;-1:-1:-1;;2533:396:50:o;:::-;567:723:15;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_1783":{"entryPoint":null,"id":1783,"parameterSlots":0,"returnSlots":0},"@_1791":{"entryPoint":null,"id":1791,"parameterSlots":0,"returnSlots":0},"@_beforeFallback_1796":{"entryPoint":null,"id":1796,"parameterSlots":0,"returnSlots":0},"@_delegate_1756":{"entryPoint":159,"id":1756,"parameterSlots":1,"returnSlots":0},"@_fallback_1775":{"entryPoint":23,"id":1775,"parameterSlots":0,"returnSlots":0},"@_getImplementation_1471":{"entryPoint":null,"id":1471,"parameterSlots":0,"returnSlots":1},"@_implementation_1440":{"entryPoint":103,"id":1440,"parameterSlots":0,"returnSlots":1},"@_revert_2136":{"entryPoint":449,"id":2136,"parameterSlots":2,"returnSlots":0},"@functionDelegateCall_2024":{"entryPoint":41,"id":2024,"parameterSlots":2,"returnSlots":1},"@functionDelegateCall_2053":{"entryPoint":195,"id":2053,"parameterSlots":3,"returnSlots":1},"@getAddressSlot_2273":{"entryPoint":100,"id":2273,"parameterSlots":1,"returnSlots":1},"@isContract_1825":{"entryPoint":85,"id":1825,"parameterSlots":1,"returnSlots":1},"@verifyCallResultFromTarget_2092":{"entryPoint":315,"id":2092,"parameterSlots":4,"returnSlots":1},"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":527,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":555,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"copy_memory_to_memory_with_cleanup":{"entryPoint":491,"id":null,"parameterSlots":3,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:1317:50","statements":[{"nodeType":"YulBlock","src":"6:3:50","statements":[]},{"body":{"nodeType":"YulBlock","src":"80:184:50","statements":[{"nodeType":"YulVariableDeclaration","src":"90:10:50","value":{"kind":"number","nodeType":"YulLiteral","src":"99:1:50","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"94:1:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"159:63:50","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"184:3:50"},{"name":"i","nodeType":"YulIdentifier","src":"189:1:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"180:3:50"},"nodeType":"YulFunctionCall","src":"180:11:50"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"203:3:50"},{"name":"i","nodeType":"YulIdentifier","src":"208:1:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"199:3:50"},"nodeType":"YulFunctionCall","src":"199:11:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"193:5:50"},"nodeType":"YulFunctionCall","src":"193:18:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"173:6:50"},"nodeType":"YulFunctionCall","src":"173:39:50"},"nodeType":"YulExpressionStatement","src":"173:39:50"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"120:1:50"},{"name":"length","nodeType":"YulIdentifier","src":"123:6:50"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"117:2:50"},"nodeType":"YulFunctionCall","src":"117:13:50"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"131:19:50","statements":[{"nodeType":"YulAssignment","src":"133:15:50","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"142:1:50"},{"kind":"number","nodeType":"YulLiteral","src":"145:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"138:3:50"},"nodeType":"YulFunctionCall","src":"138:10:50"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"133:1:50"}]}]},"pre":{"nodeType":"YulBlock","src":"113:3:50","statements":[]},"src":"109:113:50"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"242:3:50"},{"name":"length","nodeType":"YulIdentifier","src":"247:6:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"238:3:50"},"nodeType":"YulFunctionCall","src":"238:16:50"},{"kind":"number","nodeType":"YulLiteral","src":"256:1:50","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"231:6:50"},"nodeType":"YulFunctionCall","src":"231:27:50"},"nodeType":"YulExpressionStatement","src":"231:27:50"}]},"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"58:3:50","type":""},{"name":"dst","nodeType":"YulTypedName","src":"63:3:50","type":""},{"name":"length","nodeType":"YulTypedName","src":"68:6:50","type":""}],"src":"14:250:50"},{"body":{"nodeType":"YulBlock","src":"406:150:50","statements":[{"nodeType":"YulVariableDeclaration","src":"416:27:50","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"436:6:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"430:5:50"},"nodeType":"YulFunctionCall","src":"430:13:50"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"420:6:50","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"491:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"499:4:50","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"487:3:50"},"nodeType":"YulFunctionCall","src":"487:17:50"},{"name":"pos","nodeType":"YulIdentifier","src":"506:3:50"},{"name":"length","nodeType":"YulIdentifier","src":"511:6:50"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"452:34:50"},"nodeType":"YulFunctionCall","src":"452:66:50"},"nodeType":"YulExpressionStatement","src":"452:66:50"},{"nodeType":"YulAssignment","src":"527:23:50","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"538:3:50"},{"name":"length","nodeType":"YulIdentifier","src":"543:6:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"534:3:50"},"nodeType":"YulFunctionCall","src":"534:16:50"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"527:3:50"}]}]},"name":"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"382:3:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"387:6:50","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"398:3:50","type":""}],"src":"269:287:50"},{"body":{"nodeType":"YulBlock","src":"735:179:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"752:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"763:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"745:6:50"},"nodeType":"YulFunctionCall","src":"745:21:50"},"nodeType":"YulExpressionStatement","src":"745:21:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"786:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"797:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"782:3:50"},"nodeType":"YulFunctionCall","src":"782:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"802:2:50","type":"","value":"29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"775:6:50"},"nodeType":"YulFunctionCall","src":"775:30:50"},"nodeType":"YulExpressionStatement","src":"775:30:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"825:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"836:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"821:3:50"},"nodeType":"YulFunctionCall","src":"821:18:50"},{"hexValue":"416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374","kind":"string","nodeType":"YulLiteral","src":"841:31:50","type":"","value":"Address: call to non-contract"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"814:6:50"},"nodeType":"YulFunctionCall","src":"814:59:50"},"nodeType":"YulExpressionStatement","src":"814:59:50"},{"nodeType":"YulAssignment","src":"882:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"894:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"905:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"890:3:50"},"nodeType":"YulFunctionCall","src":"890:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"882:4:50"}]}]},"name":"abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"712:9:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"726:4:50","type":""}],"src":"561:353:50"},{"body":{"nodeType":"YulBlock","src":"1040:275:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1057:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"1068:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1050:6:50"},"nodeType":"YulFunctionCall","src":"1050:21:50"},"nodeType":"YulExpressionStatement","src":"1050:21:50"},{"nodeType":"YulVariableDeclaration","src":"1080:27:50","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1100:6:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1094:5:50"},"nodeType":"YulFunctionCall","src":"1094:13:50"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"1084:6:50","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1127:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"1138:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1123:3:50"},"nodeType":"YulFunctionCall","src":"1123:18:50"},{"name":"length","nodeType":"YulIdentifier","src":"1143:6:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1116:6:50"},"nodeType":"YulFunctionCall","src":"1116:34:50"},"nodeType":"YulExpressionStatement","src":"1116:34:50"},{"expression":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1198:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"1206:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1194:3:50"},"nodeType":"YulFunctionCall","src":"1194:15:50"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1215:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"1226:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1211:3:50"},"nodeType":"YulFunctionCall","src":"1211:18:50"},{"name":"length","nodeType":"YulIdentifier","src":"1231:6:50"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"1159:34:50"},"nodeType":"YulFunctionCall","src":"1159:79:50"},"nodeType":"YulExpressionStatement","src":"1159:79:50"},{"nodeType":"YulAssignment","src":"1247:62:50","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1263:9:50"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"1282:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"1290:2:50","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1278:3:50"},"nodeType":"YulFunctionCall","src":"1278:15:50"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1299:2:50","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"1295:3:50"},"nodeType":"YulFunctionCall","src":"1295:7:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1274:3:50"},"nodeType":"YulFunctionCall","src":"1274:29:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1259:3:50"},"nodeType":"YulFunctionCall","src":"1259:45:50"},{"kind":"number","nodeType":"YulLiteral","src":"1306:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1255:3:50"},"nodeType":"YulFunctionCall","src":"1255:54:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1247:4:50"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1009:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1020:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1031:4:50","type":""}],"src":"919:396:50"}]},"contents":"{\n { }\n function copy_memory_to_memory_with_cleanup(src, dst, length)\n {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n mstore(add(dst, length), 0)\n }\n function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n {\n let length := mload(value0)\n copy_memory_to_memory_with_cleanup(add(value0, 0x20), pos, length)\n end := add(pos, length)\n }\n function abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 29)\n mstore(add(headStart, 64), \"Address: call to non-contract\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n mstore(headStart, 32)\n let length := mload(value0)\n mstore(add(headStart, 32), length)\n copy_memory_to_memory_with_cleanup(add(value0, 32), add(headStart, 64), length)\n tail := add(add(headStart, and(add(length, 31), not(31))), 64)\n }\n}","id":50,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"60806040523661001357610011610017565b005b6100115b610027610022610067565b61009f565b565b606061004e838360405180606001604052806027815260200161025f602791396100c3565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e8080156100be573d6000f35b3d6000fd5b6060600080856001600160a01b0316856040516100e0919061020f565b600060405180830381855af49150503d806000811461011b576040519150601f19603f3d011682016040523d82523d6000602084013e610120565b606091505b50915091506101318683838761013b565b9695505050505050565b606083156101af5782516000036101a8576001600160a01b0385163b6101a85760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b50816101b9565b6101b983836101c1565b949350505050565b8151156101d15781518083602001fd5b8060405162461bcd60e51b815260040161019f919061022b565b60005b838110156102065781810151838201526020016101ee565b50506000910152565b600082516102218184602087016101eb565b9190910192915050565b602081526000825180602084015261024a8160408501602087016101eb565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLDATASIZE PUSH2 0x13 JUMPI PUSH2 0x11 PUSH2 0x17 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x11 JUMPDEST PUSH2 0x27 PUSH2 0x22 PUSH2 0x67 JUMP JUMPDEST PUSH2 0x9F JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x60 PUSH2 0x4E DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x25F PUSH1 0x27 SWAP2 CODECOPY PUSH2 0xC3 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9A PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 DUP1 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE PUSH1 0x0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH2 0xBE JUMPI RETURNDATASIZE PUSH1 0x0 RETURN JUMPDEST RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0xE0 SWAP2 SWAP1 PUSH2 0x20F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x11B JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x120 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x131 DUP7 DUP4 DUP4 DUP8 PUSH2 0x13B JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x1AF JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0x1A8 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0x1A8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP DUP2 PUSH2 0x1B9 JUMP JUMPDEST PUSH2 0x1B9 DUP4 DUP4 PUSH2 0x1C1 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x1D1 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x19F SWAP2 SWAP1 PUSH2 0x22B JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x206 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1EE JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x221 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x1EB JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x24A DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x1EB JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A164 PUSH20 0x6F6C6343000811000A0000000000000000000000 ","sourceMap":"567:723:15:-:0;;;;;;2898:11:17;:9;:11::i;:::-;567:723:15;;2675:11:17;2322:110;2397:28;2407:17;:15;:17::i;:::-;2397:9;:28::i;:::-;2322:110::o;6674:198:19:-;6757:12;6788:77;6809:6;6817:4;6788:77;;;;;;;;;;;;;;;;;:20;:77::i;:::-;6781:84;6674:198;-1:-1:-1;;;6674:198:19:o;1412:320::-;-1:-1:-1;;;;;1702:19:19;;:23;;;1412:320::o;1859:190:22:-;2029:4;1859:190::o;1148:140:15:-;1215:12;1246:35;1030:66:16;1254:54;-1:-1:-1;;;;;1254:54:16;;1175:140;1246:35:15;1239:42;;1148:140;:::o;948:895:17:-;1286:14;1283:1;1280;1267:34;1500:1;1497;1481:14;1478:1;1462:14;1455:5;1442:60;1576:16;1573:1;1570;1555:38;1614:6;1681:66;;;;1796:16;1793:1;1786:27;1681:66;1716:16;1713:1;1706:27;7058:325:19;7199:12;7224;7238:23;7265:6;-1:-1:-1;;;;;7265:19:19;7285:4;7265:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7223:67;;;;7307:69;7334:6;7342:7;7351:10;7363:12;7307:26;:69::i;:::-;7300:76;7058:325;-1:-1:-1;;;;;;7058:325:19:o;7671:628::-;7851:12;7879:7;7875:418;;;7906:10;:17;7927:1;7906:22;7902:286;;-1:-1:-1;;;;;1702:19:19;;;8113:60;;;;-1:-1:-1;;;8113:60:19;;763:2:50;8113:60:19;;;745:21:50;802:2;782:18;;;775:30;841:31;821:18;;;814:59;890:18;;8113:60:19;;;;;;;;;-1:-1:-1;8208:10:19;8201:17;;7875:418;8249:33;8257:10;8269:12;8249:7;:33::i;:::-;7671:628;;;;;;:::o;8821:540::-;8980:17;;:21;8976:379;;9208:10;9202:17;9264:15;9251:10;9247:2;9243:19;9236:44;8976:379;9331:12;9324:20;;-1:-1:-1;;;9324:20:19;;;;;;;;:::i;14:250:50:-;99:1;109:113;123:6;120:1;117:13;109:113;;;199:11;;;193:18;180:11;;;173:39;145:2;138:10;109:113;;;-1:-1:-1;;256:1:50;238:16;;231:27;14:250::o;269:287::-;398:3;436:6;430:13;452:66;511:6;506:3;499:4;491:6;487:17;452:66;:::i;:::-;534:16;;;;;269:287;-1:-1:-1;;269:287:50:o;919:396::-;1068:2;1057:9;1050:21;1031:4;1100:6;1094:13;1143:6;1138:2;1127:9;1123:18;1116:34;1159:79;1231:6;1226:2;1215:9;1211:18;1206:2;1198:6;1194:15;1159:79;:::i;:::-;1299:2;1278:15;-1:-1:-1;;1274:29:50;1259:45;;;;1306:2;1255:54;;919:396;-1:-1:-1;;919:396:50:o"},"gasEstimates":{"creation":{"codeDepositCost":"131600","executionCost":"infinite","totalCost":"infinite"},"external":{"":"infinite"},"internal":{"_implementation()":"2156"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_logic\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"details\":\"This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an implementation address that can be changed. This address is stored in storage in the location specified by https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the implementation behind the proxy.\",\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Initializes the upgradeable proxy with an initial implementation specified by `_logic`. If `_data` is nonempty, it's used as data in a delegate call to `_logic`. This will typically be an encoded function call, and allows initializing the storage of the proxy like a Solidity constructor.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol\":\"ERC1967Proxy\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/IERC1967.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (interfaces/IERC1967.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\\n *\\n * _Available since v4.8.3._\\n */\\ninterface IERC1967 {\\n /**\\n * @dev Emitted when the implementation is upgraded.\\n */\\n event Upgraded(address indexed implementation);\\n\\n /**\\n * @dev Emitted when the admin account has changed.\\n */\\n event AdminChanged(address previousAdmin, address newAdmin);\\n\\n /**\\n * @dev Emitted when the beacon is changed.\\n */\\n event BeaconUpgraded(address indexed beacon);\\n}\\n\",\"keccak256\":\"0x3cbef5ebc24b415252e2f8c0c9254555d30d9f085603b4b80d9b5ed20ab87e90\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822Proxiable {\\n /**\\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n * address.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy.\\n */\\n function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (proxy/ERC1967/ERC1967Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../Proxy.sol\\\";\\nimport \\\"./ERC1967Upgrade.sol\\\";\\n\\n/**\\n * @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an\\n * implementation address that can be changed. This address is stored in storage in the location specified by\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the\\n * implementation behind the proxy.\\n */\\ncontract ERC1967Proxy is Proxy, ERC1967Upgrade {\\n /**\\n * @dev Initializes the upgradeable proxy with an initial implementation specified by `_logic`.\\n *\\n * If `_data` is nonempty, it's used as data in a delegate call to `_logic`. This will typically be an encoded\\n * function call, and allows initializing the storage of the proxy like a Solidity constructor.\\n */\\n constructor(address _logic, bytes memory _data) payable {\\n _upgradeToAndCall(_logic, _data, false);\\n }\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _implementation() internal view virtual override returns (address impl) {\\n return ERC1967Upgrade._getImplementation();\\n }\\n}\\n\",\"keccak256\":\"0xa2b22da3032e50b55f95ec1d13336102d675f341167aa76db571ef7f8bb7975d\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../beacon/IBeacon.sol\\\";\\nimport \\\"../../interfaces/IERC1967.sol\\\";\\nimport \\\"../../interfaces/draft-IERC1822.sol\\\";\\nimport \\\"../../utils/Address.sol\\\";\\nimport \\\"../../utils/StorageSlot.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n */\\nabstract contract ERC1967Upgrade is IERC1967 {\\n // This is the keccak-256 hash of \\\"eip1967.proxy.rollback\\\" subtracted by 1\\n bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n /**\\n * @dev Storage slot with the address of the current implementation.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _getImplementation() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 implementation slot.\\n */\\n function _setImplementation(address newImplementation) private {\\n require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n }\\n\\n /**\\n * @dev Perform implementation upgrade\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeTo(address newImplementation) internal {\\n _setImplementation(newImplementation);\\n emit Upgraded(newImplementation);\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCall(address newImplementation, bytes memory data, bool forceCall) internal {\\n _upgradeTo(newImplementation);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(newImplementation, data);\\n }\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCallUUPS(address newImplementation, bytes memory data, bool forceCall) internal {\\n // Upgrades from old implementations will perform a rollback test. This test requires the new\\n // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n // this special case will break upgrade paths from old UUPS implementation to new ones.\\n if (StorageSlot.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n _setImplementation(newImplementation);\\n } else {\\n try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n require(slot == _IMPLEMENTATION_SLOT, \\\"ERC1967Upgrade: unsupported proxiableUUID\\\");\\n } catch {\\n revert(\\\"ERC1967Upgrade: new implementation is not UUPS\\\");\\n }\\n _upgradeToAndCall(newImplementation, data, forceCall);\\n }\\n }\\n\\n /**\\n * @dev Storage slot with the admin of the contract.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _getAdmin() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_ADMIN_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 admin slot.\\n */\\n function _setAdmin(address newAdmin) private {\\n require(newAdmin != address(0), \\\"ERC1967: new admin is the zero address\\\");\\n StorageSlot.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n */\\n function _changeAdmin(address newAdmin) internal {\\n emit AdminChanged(_getAdmin(), newAdmin);\\n _setAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\\n */\\n bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n /**\\n * @dev Returns the current beacon.\\n */\\n function _getBeacon() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_BEACON_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new beacon in the EIP1967 beacon slot.\\n */\\n function _setBeacon(address newBeacon) private {\\n require(Address.isContract(newBeacon), \\\"ERC1967: new beacon is not a contract\\\");\\n require(\\n Address.isContract(IBeacon(newBeacon).implementation()),\\n \\\"ERC1967: beacon implementation is not a contract\\\"\\n );\\n StorageSlot.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n }\\n\\n /**\\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n *\\n * Emits a {BeaconUpgraded} event.\\n */\\n function _upgradeBeaconToAndCall(address newBeacon, bytes memory data, bool forceCall) internal {\\n _setBeacon(newBeacon);\\n emit BeaconUpgraded(newBeacon);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x3b21ae06bf5957f73fa16754b0669c77b7abd8ba6c072d35c3281d446fdb86c2\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (proxy/Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\\n * be specified by overriding the virtual {_implementation} function.\\n *\\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\\n * different contract through the {_delegate} function.\\n *\\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\\n */\\nabstract contract Proxy {\\n /**\\n * @dev Delegates the current call to `implementation`.\\n *\\n * This function does not return to its internal call site, it will return directly to the external caller.\\n */\\n function _delegate(address implementation) internal virtual {\\n assembly {\\n // Copy msg.data. We take full control of memory in this inline assembly\\n // block because it will not return to Solidity code. We overwrite the\\n // Solidity scratch pad at memory position 0.\\n calldatacopy(0, 0, calldatasize())\\n\\n // Call the implementation.\\n // out and outsize are 0 because we don't know the size yet.\\n let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)\\n\\n // Copy the returned data.\\n returndatacopy(0, 0, returndatasize())\\n\\n switch result\\n // delegatecall returns 0 on error.\\n case 0 {\\n revert(0, returndatasize())\\n }\\n default {\\n return(0, returndatasize())\\n }\\n }\\n }\\n\\n /**\\n * @dev This is a virtual function that should be overridden so it returns the address to which the fallback function\\n * and {_fallback} should delegate.\\n */\\n function _implementation() internal view virtual returns (address);\\n\\n /**\\n * @dev Delegates the current call to the address returned by `_implementation()`.\\n *\\n * This function does not return to its internal call site, it will return directly to the external caller.\\n */\\n function _fallback() internal virtual {\\n _beforeFallback();\\n _delegate(_implementation());\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\\n * function in the contract matches the call data.\\n */\\n fallback() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data\\n * is empty.\\n */\\n receive() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`\\n * call, or as part of the Solidity `fallback` or `receive` functions.\\n *\\n * If overridden should call `super._beforeFallback()`.\\n */\\n function _beforeFallback() internal virtual {}\\n}\\n\",\"keccak256\":\"0xc130fe33f1b2132158531a87734153293f6d07bc263ff4ac90e85da9c82c0e27\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeacon {\\n /**\\n * @dev Must return an address that can be used as a delegate call target.\\n *\\n * {BeaconProxy} will check that this address is a contract.\\n */\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/StorageSlot.sol)\\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```solidity\\n * contract ERC1967 {\\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n * function _getImplementation() internal view returns (address) {\\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n * }\\n *\\n * function _setImplementation(address newImplementation) internal {\\n * require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n * }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._\\n * _Available since v4.9 for `string`, `bytes`._\\n */\\nlibrary StorageSlot {\\n struct AddressSlot {\\n address value;\\n }\\n\\n struct BooleanSlot {\\n bool value;\\n }\\n\\n struct Bytes32Slot {\\n bytes32 value;\\n }\\n\\n struct Uint256Slot {\\n uint256 value;\\n }\\n\\n struct StringSlot {\\n string value;\\n }\\n\\n struct BytesSlot {\\n bytes value;\\n }\\n\\n /**\\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n */\\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n */\\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n */\\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n */\\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` with member `value` located at `slot`.\\n */\\n function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\\n */\\n function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` with member `value` located at `slot`.\\n */\\n function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\\n */\\n function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n}\\n\",\"keccak256\":\"0xf09e68aa0dc6722a25bc46490e8d48ed864466d17313b8a0b254c36b54e49899\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol":{"ERC1967Upgrade":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"beacon","type":"address"}],"name":"BeaconUpgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"}],"devdoc":{"details":"This abstract contract provides getters and event emitting update functions for https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots. _Available since v4.1._","kind":"dev","methods":{},"stateVariables":{"_ADMIN_SLOT":{"details":"Storage slot with the admin of the contract. This is the keccak-256 hash of \"eip1967.proxy.admin\" subtracted by 1, and is validated in the constructor."},"_BEACON_SLOT":{"details":"The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy. This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor."},"_IMPLEMENTATION_SLOT":{"details":"Storage slot with the address of the current implementation. This is the keccak-256 hash of \"eip1967.proxy.implementation\" subtracted by 1, and is validated in the constructor."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"}],\"devdoc\":{\"details\":\"This abstract contract provides getters and event emitting update functions for https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots. _Available since v4.1._\",\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"_ADMIN_SLOT\":{\"details\":\"Storage slot with the admin of the contract. This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is validated in the constructor.\"},\"_BEACON_SLOT\":{\"details\":\"The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy. This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\"},\"_IMPLEMENTATION_SLOT\":{\"details\":\"Storage slot with the address of the current implementation. This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is validated in the constructor.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol\":\"ERC1967Upgrade\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/IERC1967.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (interfaces/IERC1967.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\\n *\\n * _Available since v4.8.3._\\n */\\ninterface IERC1967 {\\n /**\\n * @dev Emitted when the implementation is upgraded.\\n */\\n event Upgraded(address indexed implementation);\\n\\n /**\\n * @dev Emitted when the admin account has changed.\\n */\\n event AdminChanged(address previousAdmin, address newAdmin);\\n\\n /**\\n * @dev Emitted when the beacon is changed.\\n */\\n event BeaconUpgraded(address indexed beacon);\\n}\\n\",\"keccak256\":\"0x3cbef5ebc24b415252e2f8c0c9254555d30d9f085603b4b80d9b5ed20ab87e90\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822Proxiable {\\n /**\\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n * address.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy.\\n */\\n function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../beacon/IBeacon.sol\\\";\\nimport \\\"../../interfaces/IERC1967.sol\\\";\\nimport \\\"../../interfaces/draft-IERC1822.sol\\\";\\nimport \\\"../../utils/Address.sol\\\";\\nimport \\\"../../utils/StorageSlot.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n */\\nabstract contract ERC1967Upgrade is IERC1967 {\\n // This is the keccak-256 hash of \\\"eip1967.proxy.rollback\\\" subtracted by 1\\n bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n /**\\n * @dev Storage slot with the address of the current implementation.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _getImplementation() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 implementation slot.\\n */\\n function _setImplementation(address newImplementation) private {\\n require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n }\\n\\n /**\\n * @dev Perform implementation upgrade\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeTo(address newImplementation) internal {\\n _setImplementation(newImplementation);\\n emit Upgraded(newImplementation);\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCall(address newImplementation, bytes memory data, bool forceCall) internal {\\n _upgradeTo(newImplementation);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(newImplementation, data);\\n }\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCallUUPS(address newImplementation, bytes memory data, bool forceCall) internal {\\n // Upgrades from old implementations will perform a rollback test. This test requires the new\\n // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n // this special case will break upgrade paths from old UUPS implementation to new ones.\\n if (StorageSlot.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n _setImplementation(newImplementation);\\n } else {\\n try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n require(slot == _IMPLEMENTATION_SLOT, \\\"ERC1967Upgrade: unsupported proxiableUUID\\\");\\n } catch {\\n revert(\\\"ERC1967Upgrade: new implementation is not UUPS\\\");\\n }\\n _upgradeToAndCall(newImplementation, data, forceCall);\\n }\\n }\\n\\n /**\\n * @dev Storage slot with the admin of the contract.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _getAdmin() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_ADMIN_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 admin slot.\\n */\\n function _setAdmin(address newAdmin) private {\\n require(newAdmin != address(0), \\\"ERC1967: new admin is the zero address\\\");\\n StorageSlot.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n */\\n function _changeAdmin(address newAdmin) internal {\\n emit AdminChanged(_getAdmin(), newAdmin);\\n _setAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\\n */\\n bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n /**\\n * @dev Returns the current beacon.\\n */\\n function _getBeacon() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_BEACON_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new beacon in the EIP1967 beacon slot.\\n */\\n function _setBeacon(address newBeacon) private {\\n require(Address.isContract(newBeacon), \\\"ERC1967: new beacon is not a contract\\\");\\n require(\\n Address.isContract(IBeacon(newBeacon).implementation()),\\n \\\"ERC1967: beacon implementation is not a contract\\\"\\n );\\n StorageSlot.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n }\\n\\n /**\\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n *\\n * Emits a {BeaconUpgraded} event.\\n */\\n function _upgradeBeaconToAndCall(address newBeacon, bytes memory data, bool forceCall) internal {\\n _setBeacon(newBeacon);\\n emit BeaconUpgraded(newBeacon);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x3b21ae06bf5957f73fa16754b0669c77b7abd8ba6c072d35c3281d446fdb86c2\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeacon {\\n /**\\n * @dev Must return an address that can be used as a delegate call target.\\n *\\n * {BeaconProxy} will check that this address is a contract.\\n */\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/StorageSlot.sol)\\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```solidity\\n * contract ERC1967 {\\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n * function _getImplementation() internal view returns (address) {\\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n * }\\n *\\n * function _setImplementation(address newImplementation) internal {\\n * require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n * }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._\\n * _Available since v4.9 for `string`, `bytes`._\\n */\\nlibrary StorageSlot {\\n struct AddressSlot {\\n address value;\\n }\\n\\n struct BooleanSlot {\\n bool value;\\n }\\n\\n struct Bytes32Slot {\\n bytes32 value;\\n }\\n\\n struct Uint256Slot {\\n uint256 value;\\n }\\n\\n struct StringSlot {\\n string value;\\n }\\n\\n struct BytesSlot {\\n bytes value;\\n }\\n\\n /**\\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n */\\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n */\\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n */\\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n */\\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` with member `value` located at `slot`.\\n */\\n function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\\n */\\n function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` with member `value` located at `slot`.\\n */\\n function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\\n */\\n function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n}\\n\",\"keccak256\":\"0xf09e68aa0dc6722a25bc46490e8d48ed864466d17313b8a0b254c36b54e49899\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/proxy/Proxy.sol":{"Proxy":{"abi":[{"stateMutability":"payable","type":"fallback"},{"stateMutability":"payable","type":"receive"}],"devdoc":{"details":"This abstract contract provides a fallback function that delegates all calls to another contract using the EVM instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to be specified by overriding the virtual {_implementation} function. Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a different contract through the {_delegate} function. The success and return data of the delegated call will be returned back to the caller of the proxy.","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"details\":\"This abstract contract provides a fallback function that delegates all calls to another contract using the EVM instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to be specified by overriding the virtual {_implementation} function. Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a different contract through the {_delegate} function. The success and return data of the delegated call will be returned back to the caller of the proxy.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/proxy/Proxy.sol\":\"Proxy\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/proxy/Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (proxy/Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\\n * be specified by overriding the virtual {_implementation} function.\\n *\\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\\n * different contract through the {_delegate} function.\\n *\\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\\n */\\nabstract contract Proxy {\\n /**\\n * @dev Delegates the current call to `implementation`.\\n *\\n * This function does not return to its internal call site, it will return directly to the external caller.\\n */\\n function _delegate(address implementation) internal virtual {\\n assembly {\\n // Copy msg.data. We take full control of memory in this inline assembly\\n // block because it will not return to Solidity code. We overwrite the\\n // Solidity scratch pad at memory position 0.\\n calldatacopy(0, 0, calldatasize())\\n\\n // Call the implementation.\\n // out and outsize are 0 because we don't know the size yet.\\n let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)\\n\\n // Copy the returned data.\\n returndatacopy(0, 0, returndatasize())\\n\\n switch result\\n // delegatecall returns 0 on error.\\n case 0 {\\n revert(0, returndatasize())\\n }\\n default {\\n return(0, returndatasize())\\n }\\n }\\n }\\n\\n /**\\n * @dev This is a virtual function that should be overridden so it returns the address to which the fallback function\\n * and {_fallback} should delegate.\\n */\\n function _implementation() internal view virtual returns (address);\\n\\n /**\\n * @dev Delegates the current call to the address returned by `_implementation()`.\\n *\\n * This function does not return to its internal call site, it will return directly to the external caller.\\n */\\n function _fallback() internal virtual {\\n _beforeFallback();\\n _delegate(_implementation());\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\\n * function in the contract matches the call data.\\n */\\n fallback() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data\\n * is empty.\\n */\\n receive() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`\\n * call, or as part of the Solidity `fallback` or `receive` functions.\\n *\\n * If overridden should call `super._beforeFallback()`.\\n */\\n function _beforeFallback() internal virtual {}\\n}\\n\",\"keccak256\":\"0xc130fe33f1b2132158531a87734153293f6d07bc263ff4ac90e85da9c82c0e27\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/proxy/beacon/IBeacon.sol":{"IBeacon":{"abi":[{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"This is the interface that {BeaconProxy} expects of its beacon.","kind":"dev","methods":{"implementation()":{"details":"Must return an address that can be used as a delegate call target. {BeaconProxy} will check that this address is a contract."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"implementation()":"5c60da1b"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"This is the interface that {BeaconProxy} expects of its beacon.\",\"kind\":\"dev\",\"methods\":{\"implementation()\":{\"details\":\"Must return an address that can be used as a delegate call target. {BeaconProxy} will check that this address is a contract.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":\"IBeacon\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeacon {\\n /**\\n * @dev Must return an address that can be used as a delegate call target.\\n *\\n * {BeaconProxy} will check that this address is a contract.\\n */\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/utils/Address.sol":{"Address":{"abi":[],"devdoc":{"details":"Collection of functions related to the address type","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"602d6037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a","opcodes":"PUSH1 0x2D PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"194:9169:19:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;194:9169:19;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"194:9169:19:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"9000","executionCost":"94","totalCost":"9094"},"internal":{"_revert(bytes memory,string memory)":"infinite","functionCall(address,bytes memory)":"infinite","functionCall(address,bytes memory,string memory)":"infinite","functionCallWithValue(address,bytes memory,uint256)":"infinite","functionCallWithValue(address,bytes memory,uint256,string memory)":"infinite","functionDelegateCall(address,bytes memory)":"infinite","functionDelegateCall(address,bytes memory,string memory)":"infinite","functionStaticCall(address,bytes memory)":"infinite","functionStaticCall(address,bytes memory,string memory)":"infinite","isContract(address)":"infinite","sendValue(address payable,uint256)":"infinite","verifyCallResult(bool,bytes memory,string memory)":"infinite","verifyCallResultFromTarget(address,bool,bytes memory,string memory)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Collection of functions related to the address type\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Address.sol\":\"Address\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/utils/Context.sol":{"Context":{"abi":[],"devdoc":{"details":"Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Context.sol\":\"Context\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n function _contextSuffixLength() internal view virtual returns (uint256) {\\n return 0;\\n }\\n}\\n\",\"keccak256\":\"0xa92e4fa126feb6907daa0513ddd816b2eb91f30a808de54f63c17d0e162c3439\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/utils/Counters.sol":{"Counters":{"abi":[],"devdoc":{"author":"Matt Condon (@shrugs)","details":"Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number of elements in a mapping, issuing ERC721 ids, or counting request ids. Include with `using Counters for Counters.Counter;`","kind":"dev","methods":{},"title":"Counters","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"602d6037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a","opcodes":"PUSH1 0x2D PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"424:971:21:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;424:971:21;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"424:971:21:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"9000","executionCost":"94","totalCost":"9094"},"internal":{"current(struct Counters.Counter storage pointer)":"infinite","decrement(struct Counters.Counter storage pointer)":"infinite","increment(struct Counters.Counter storage pointer)":"infinite","reset(struct Counters.Counter storage pointer)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"author\":\"Matt Condon (@shrugs)\",\"details\":\"Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number of elements in a mapping, issuing ERC721 ids, or counting request ids. Include with `using Counters for Counters.Counter;`\",\"kind\":\"dev\",\"methods\":{},\"title\":\"Counters\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Counters.sol\":\"Counters\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Counters.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Counters.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title Counters\\n * @author Matt Condon (@shrugs)\\n * @dev Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number\\n * of elements in a mapping, issuing ERC721 ids, or counting request ids.\\n *\\n * Include with `using Counters for Counters.Counter;`\\n */\\nlibrary Counters {\\n struct Counter {\\n // This variable should never be directly accessed by users of the library: interactions must be restricted to\\n // the library's function. As of Solidity v0.5.2, this cannot be enforced, though there is a proposal to add\\n // this feature: see https://github.com/ethereum/solidity/issues/4637\\n uint256 _value; // default: 0\\n }\\n\\n function current(Counter storage counter) internal view returns (uint256) {\\n return counter._value;\\n }\\n\\n function increment(Counter storage counter) internal {\\n unchecked {\\n counter._value += 1;\\n }\\n }\\n\\n function decrement(Counter storage counter) internal {\\n uint256 value = counter._value;\\n require(value > 0, \\\"Counter: decrement overflow\\\");\\n unchecked {\\n counter._value = value - 1;\\n }\\n }\\n\\n function reset(Counter storage counter) internal {\\n counter._value = 0;\\n }\\n}\\n\",\"keccak256\":\"0xf0018c2440fbe238dd3a8732fa8e17a0f9dce84d31451dc8a32f6d62b349c9f1\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/utils/StorageSlot.sol":{"StorageSlot":{"abi":[],"devdoc":{"details":"Library for reading and writing primitive types to specific storage slots. Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts. This library helps with reading and writing to such slots without the need for inline assembly. The functions in this library return Slot structs that contain a `value` member that can be used to read or write. Example usage to set ERC1967 implementation slot: ```solidity contract ERC1967 { bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc; function _getImplementation() internal view returns (address) { return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value; } function _setImplementation(address newImplementation) internal { require(Address.isContract(newImplementation), \"ERC1967: new implementation is not a contract\"); StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation; } } ``` _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._ _Available since v4.9 for `string`, `bytes`._","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"602d6037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a","opcodes":"PUSH1 0x2D PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"1420:2685:22:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;1420:2685:22;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"1420:2685:22:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"9000","executionCost":"94","totalCost":"9094"},"internal":{"getAddressSlot(bytes32)":"infinite","getBooleanSlot(bytes32)":"infinite","getBytes32Slot(bytes32)":"infinite","getBytesSlot(bytes storage pointer)":"infinite","getBytesSlot(bytes32)":"infinite","getStringSlot(bytes32)":"infinite","getStringSlot(string storage pointer)":"infinite","getUint256Slot(bytes32)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Library for reading and writing primitive types to specific storage slots. Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts. This library helps with reading and writing to such slots without the need for inline assembly. The functions in this library return Slot structs that contain a `value` member that can be used to read or write. Example usage to set ERC1967 implementation slot: ```solidity contract ERC1967 { bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc; function _getImplementation() internal view returns (address) { return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value; } function _setImplementation(address newImplementation) internal { require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\"); StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation; } } ``` _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._ _Available since v4.9 for `string`, `bytes`._\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/StorageSlot.sol\":\"StorageSlot\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/StorageSlot.sol)\\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```solidity\\n * contract ERC1967 {\\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n * function _getImplementation() internal view returns (address) {\\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n * }\\n *\\n * function _setImplementation(address newImplementation) internal {\\n * require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n * }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._\\n * _Available since v4.9 for `string`, `bytes`._\\n */\\nlibrary StorageSlot {\\n struct AddressSlot {\\n address value;\\n }\\n\\n struct BooleanSlot {\\n bool value;\\n }\\n\\n struct Bytes32Slot {\\n bytes32 value;\\n }\\n\\n struct Uint256Slot {\\n uint256 value;\\n }\\n\\n struct StringSlot {\\n string value;\\n }\\n\\n struct BytesSlot {\\n bytes value;\\n }\\n\\n /**\\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n */\\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n */\\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n */\\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n */\\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` with member `value` located at `slot`.\\n */\\n function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\\n */\\n function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` with member `value` located at `slot`.\\n */\\n function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\\n */\\n function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n}\\n\",\"keccak256\":\"0xf09e68aa0dc6722a25bc46490e8d48ed864466d17313b8a0b254c36b54e49899\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/utils/introspection/ERC165.sol":{"ERC165":{"abi":[{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"Implementation of the {IERC165} interface. Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check for the additional interface id that will be supported. For example: ```solidity function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); } ``` Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.","kind":"dev","methods":{"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of the {IERC165} interface. Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check for the additional interface id that will be supported. For example: ```solidity function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); } ``` Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\",\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":\"ERC165\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165 is IERC165 {\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165).interfaceId;\\n }\\n}\\n\",\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/utils/introspection/IERC165.sol":{"IERC165":{"abi":[{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"Interface of the ERC165 standard, as defined in the https://eips.ethereum.org/EIPS/eip-165[EIP]. Implementers can declare support of contract interfaces, which can then be queried by others ({ERC165Checker}). For an implementation, see {ERC165}.","kind":"dev","methods":{"supportsInterface(bytes4)":{"details":"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC165 standard, as defined in the https://eips.ethereum.org/EIPS/eip-165[EIP]. Implementers can declare support of contract interfaces, which can then be queried by others ({ERC165Checker}). For an implementation, see {ERC165}.\",\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":\"IERC165\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"src/dao/IDAO.sol":{"IDAO":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"string","name":"_reference","type":"string"}],"name":"Deposited","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"actor","type":"address"},{"indexed":false,"internalType":"bytes32","name":"callId","type":"bytes32"},{"components":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"indexed":false,"internalType":"struct IDAO.Action[]","name":"actions","type":"tuple[]"},{"indexed":false,"internalType":"uint256","name":"allowFailureMap","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"failureMap","type":"uint256"},{"indexed":false,"internalType":"bytes[]","name":"execResults","type":"bytes[]"}],"name":"Executed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes","name":"metadata","type":"bytes"}],"name":"MetadataSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"NativeTokenDeposited","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes4","name":"interfaceId","type":"bytes4"},{"indexed":false,"internalType":"bytes4","name":"callbackSelector","type":"bytes4"},{"indexed":false,"internalType":"bytes4","name":"magicNumber","type":"bytes4"}],"name":"StandardCallbackRegistered","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"forwarder","type":"address"}],"name":"TrustedForwarderSet","type":"event"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"string","name":"_reference","type":"string"}],"name":"deposit","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_callId","type":"bytes32"},{"components":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct IDAO.Action[]","name":"_actions","type":"tuple[]"},{"internalType":"uint256","name":"_allowFailureMap","type":"uint256"}],"name":"execute","outputs":[{"internalType":"bytes[]","name":"","type":"bytes[]"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getTrustedForwarder","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_where","type":"address"},{"internalType":"address","name":"_who","type":"address"},{"internalType":"bytes32","name":"_permissionId","type":"bytes32"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"hasPermission","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_hash","type":"bytes32"},{"internalType":"bytes","name":"_signature","type":"bytes"}],"name":"isValidSignature","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_interfaceId","type":"bytes4"},{"internalType":"bytes4","name":"_callbackSelector","type":"bytes4"},{"internalType":"bytes4","name":"_magicNumber","type":"bytes4"}],"name":"registerStandardCallback","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"_metadata","type":"bytes"}],"name":"setMetadata","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"setSignatureValidator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_trustedForwarder","type":"address"}],"name":"setTrustedForwarder","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"author":"Aragon X - 2022-2023","custom:security-contact":"sirt@aragon.org","events":{"Deposited(address,address,uint256,string)":{"params":{"_reference":"The reference describing the deposit reason.","amount":"The amount of tokens deposited.","sender":"The address of the sender.","token":"The address of the deposited token."}},"Executed(address,bytes32,(address,uint256,bytes)[],uint256,uint256,bytes[])":{"details":"The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce.","params":{"actions":"The array of actions executed.","actor":"The address of the caller.","allowFailureMap":"The allow failure map encoding which actions are allowed to fail.","callId":"The ID of the call.","execResults":"The array with the results of the executed actions.","failureMap":"The failure map encoding which actions have failed."}},"MetadataSet(bytes)":{"params":{"metadata":"The IPFS hash of the new metadata object."}},"NativeTokenDeposited(address,uint256)":{"details":"This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).","params":{"amount":"The amount of native tokens deposited.","sender":"The address of the sender."}},"StandardCallbackRegistered(bytes4,bytes4,bytes4)":{"params":{"callbackSelector":"The selector of the callback function.","interfaceId":"The ID of the interface.","magicNumber":"The magic number to be registered for the callback function selector."}},"TrustedForwarderSet(address)":{"params":{"forwarder":"the new forwarder address."}}},"kind":"dev","methods":{"deposit(address,uint256,string)":{"params":{"_amount":"The amount of tokens to deposit.","_reference":"The reference describing the deposit reason.","_token":"The address of the token or address(0) in case of the native token."}},"execute(bytes32,(address,uint256,bytes)[],uint256)":{"params":{"_actions":"The array of actions.","_allowFailureMap":"A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.","_callId":"The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce."},"returns":{"_0":"The array of results obtained from the executed actions in `bytes`.","_1":"The resulting failure map containing the actions have actually failed."}},"getTrustedForwarder()":{"returns":{"_0":"The trusted forwarder address."}},"hasPermission(address,address,bytes32,bytes)":{"params":{"_data":"The optional data passed to the `PermissionCondition` registered.","_permissionId":"The permission identifier.","_where":"The address of the contract.","_who":"The address of a EOA or contract to give the permissions."},"returns":{"_0":"Returns true if the address has permission, false if not."}},"isValidSignature(bytes32,bytes)":{"params":{"_hash":"The hash of the data to be signed.","_signature":"The signature byte array associated with `_hash`."},"returns":{"_0":"Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not."}},"registerStandardCallback(bytes4,bytes4,bytes4)":{"params":{"_callbackSelector":"The selector of the callback function.","_interfaceId":"The ID of the interface.","_magicNumber":"The magic number to be registered for the function signature."}},"setMetadata(bytes)":{"params":{"_metadata":"The IPFS hash of the new metadata object."}},"setSignatureValidator(address)":{"details":"Introduced in v1.0.0. Removed in v1.4.0."},"setTrustedForwarder(address)":{"params":{"_trustedForwarder":"The trusted forwarder address."}}},"title":"IDAO","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"deposit(address,uint256,string)":"bfe07da6","execute(bytes32,(address,uint256,bytes)[],uint256)":"c71bf324","getTrustedForwarder()":"ce1b815f","hasPermission(address,address,bytes32,bytes)":"fdef9106","isValidSignature(bytes32,bytes)":"1626ba7e","registerStandardCallback(bytes4,bytes4,bytes4)":"c4a50145","setMetadata(bytes)":"ee57e36f","setSignatureValidator(address)":"3e2ab0d9","setTrustedForwarder(address)":"da742228"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"_reference\",\"type\":\"string\"}],\"name\":\"Deposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"actor\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"callId\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"struct IDAO.Action[]\",\"name\":\"actions\",\"type\":\"tuple[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"allowFailureMap\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"failureMap\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes[]\",\"name\":\"execResults\",\"type\":\"bytes[]\"}],\"name\":\"Executed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"name\":\"MetadataSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"NativeTokenDeposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"callbackSelector\",\"type\":\"bytes4\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"magicNumber\",\"type\":\"bytes4\"}],\"name\":\"StandardCallbackRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"forwarder\",\"type\":\"address\"}],\"name\":\"TrustedForwarderSet\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"_reference\",\"type\":\"string\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_callId\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IDAO.Action[]\",\"name\":\"_actions\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"_allowFailureMap\",\"type\":\"uint256\"}],\"name\":\"execute\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"\",\"type\":\"bytes[]\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTrustedForwarder\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_who\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_permissionId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"hasPermission\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"isValidSignature\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"},{\"internalType\":\"bytes4\",\"name\":\"_callbackSelector\",\"type\":\"bytes4\"},{\"internalType\":\"bytes4\",\"name\":\"_magicNumber\",\"type\":\"bytes4\"}],\"name\":\"registerStandardCallback\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_metadata\",\"type\":\"bytes\"}],\"name\":\"setMetadata\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"setSignatureValidator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_trustedForwarder\",\"type\":\"address\"}],\"name\":\"setTrustedForwarder\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Aragon X - 2022-2023\",\"custom:security-contact\":\"sirt@aragon.org\",\"events\":{\"Deposited(address,address,uint256,string)\":{\"params\":{\"_reference\":\"The reference describing the deposit reason.\",\"amount\":\"The amount of tokens deposited.\",\"sender\":\"The address of the sender.\",\"token\":\"The address of the deposited token.\"}},\"Executed(address,bytes32,(address,uint256,bytes)[],uint256,uint256,bytes[])\":{\"details\":\"The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce.\",\"params\":{\"actions\":\"The array of actions executed.\",\"actor\":\"The address of the caller.\",\"allowFailureMap\":\"The allow failure map encoding which actions are allowed to fail.\",\"callId\":\"The ID of the call.\",\"execResults\":\"The array with the results of the executed actions.\",\"failureMap\":\"The failure map encoding which actions have failed.\"}},\"MetadataSet(bytes)\":{\"params\":{\"metadata\":\"The IPFS hash of the new metadata object.\"}},\"NativeTokenDeposited(address,uint256)\":{\"details\":\"This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).\",\"params\":{\"amount\":\"The amount of native tokens deposited.\",\"sender\":\"The address of the sender.\"}},\"StandardCallbackRegistered(bytes4,bytes4,bytes4)\":{\"params\":{\"callbackSelector\":\"The selector of the callback function.\",\"interfaceId\":\"The ID of the interface.\",\"magicNumber\":\"The magic number to be registered for the callback function selector.\"}},\"TrustedForwarderSet(address)\":{\"params\":{\"forwarder\":\"the new forwarder address.\"}}},\"kind\":\"dev\",\"methods\":{\"deposit(address,uint256,string)\":{\"params\":{\"_amount\":\"The amount of tokens to deposit.\",\"_reference\":\"The reference describing the deposit reason.\",\"_token\":\"The address of the token or address(0) in case of the native token.\"}},\"execute(bytes32,(address,uint256,bytes)[],uint256)\":{\"params\":{\"_actions\":\"The array of actions.\",\"_allowFailureMap\":\"A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\",\"_callId\":\"The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce.\"},\"returns\":{\"_0\":\"The array of results obtained from the executed actions in `bytes`.\",\"_1\":\"The resulting failure map containing the actions have actually failed.\"}},\"getTrustedForwarder()\":{\"returns\":{\"_0\":\"The trusted forwarder address.\"}},\"hasPermission(address,address,bytes32,bytes)\":{\"params\":{\"_data\":\"The optional data passed to the `PermissionCondition` registered.\",\"_permissionId\":\"The permission identifier.\",\"_where\":\"The address of the contract.\",\"_who\":\"The address of a EOA or contract to give the permissions.\"},\"returns\":{\"_0\":\"Returns true if the address has permission, false if not.\"}},\"isValidSignature(bytes32,bytes)\":{\"params\":{\"_hash\":\"The hash of the data to be signed.\",\"_signature\":\"The signature byte array associated with `_hash`.\"},\"returns\":{\"_0\":\"Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not.\"}},\"registerStandardCallback(bytes4,bytes4,bytes4)\":{\"params\":{\"_callbackSelector\":\"The selector of the callback function.\",\"_interfaceId\":\"The ID of the interface.\",\"_magicNumber\":\"The magic number to be registered for the function signature.\"}},\"setMetadata(bytes)\":{\"params\":{\"_metadata\":\"The IPFS hash of the new metadata object.\"}},\"setSignatureValidator(address)\":{\"details\":\"Introduced in v1.0.0. Removed in v1.4.0.\"},\"setTrustedForwarder(address)\":{\"params\":{\"_trustedForwarder\":\"The trusted forwarder address.\"}}},\"title\":\"IDAO\",\"version\":1},\"userdoc\":{\"events\":{\"Deposited(address,address,uint256,string)\":{\"notice\":\"Emitted when a token deposit has been made to the DAO.\"},\"Executed(address,bytes32,(address,uint256,bytes)[],uint256,uint256,bytes[])\":{\"notice\":\"Emitted when a proposal is executed.\"},\"MetadataSet(bytes)\":{\"notice\":\"Emitted when the DAO metadata is updated.\"},\"NativeTokenDeposited(address,uint256)\":{\"notice\":\"Emitted when a native token deposit has been made to the DAO.\"},\"StandardCallbackRegistered(bytes4,bytes4,bytes4)\":{\"notice\":\"Emitted when a standard callback is registered.\"},\"TrustedForwarderSet(address)\":{\"notice\":\"Emitted when a new TrustedForwarder is set on the DAO.\"}},\"kind\":\"user\",\"methods\":{\"deposit(address,uint256,string)\":{\"notice\":\"Deposits (native) tokens to the DAO contract with a reference string.\"},\"execute(bytes32,(address,uint256,bytes)[],uint256)\":{\"notice\":\"Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted.\"},\"getTrustedForwarder()\":{\"notice\":\"Getter for the trusted forwarder verifying the meta transaction.\"},\"hasPermission(address,address,bytes32,bytes)\":{\"notice\":\"Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\"},\"isValidSignature(bytes32,bytes)\":{\"notice\":\"Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\"},\"registerStandardCallback(bytes4,bytes4,bytes4)\":{\"notice\":\"Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\"},\"setMetadata(bytes)\":{\"notice\":\"Updates the DAO metadata (e.g., an IPFS hash).\"},\"setSignatureValidator(address)\":{\"notice\":\"Removed function being left here to not corrupt the IDAO interface ID. Any call will revert.\"},\"setTrustedForwarder(address)\":{\"notice\":\"Setter for the trusted forwarder verifying the meta transaction.\"}},\"notice\":\"The interface required for DAOs within the Aragon App DAO framework.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/dao/IDAO.sol\":\"IDAO\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"src/dao/IDAO.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IDAO\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for DAOs within the Aragon App DAO framework.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IDAO {\\n /// @notice The action struct to be consumed by the DAO's `execute` function resulting in an external call.\\n /// @param to The address to call.\\n /// @param value The native token value to be sent with the call.\\n /// @param data The bytes-encoded function selector and calldata for the call.\\n struct Action {\\n address to;\\n uint256 value;\\n bytes data;\\n }\\n\\n /// @notice Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\\n /// @param _where The address of the contract.\\n /// @param _who The address of a EOA or contract to give the permissions.\\n /// @param _permissionId The permission identifier.\\n /// @param _data The optional data passed to the `PermissionCondition` registered.\\n /// @return Returns true if the address has permission, false if not.\\n function hasPermission(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes memory _data\\n ) external view returns (bool);\\n\\n /// @notice Updates the DAO metadata (e.g., an IPFS hash).\\n /// @param _metadata The IPFS hash of the new metadata object.\\n function setMetadata(bytes calldata _metadata) external;\\n\\n /// @notice Emitted when the DAO metadata is updated.\\n /// @param metadata The IPFS hash of the new metadata object.\\n event MetadataSet(bytes metadata);\\n\\n /// @notice Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted.\\n /// @param _callId The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce.\\n /// @param _actions The array of actions.\\n /// @param _allowFailureMap A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @return The array of results obtained from the executed actions in `bytes`.\\n /// @return The resulting failure map containing the actions have actually failed.\\n function execute(\\n bytes32 _callId,\\n Action[] memory _actions,\\n uint256 _allowFailureMap\\n ) external returns (bytes[] memory, uint256);\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param actor The address of the caller.\\n /// @param callId The ID of the call.\\n /// @param actions The array of actions executed.\\n /// @param allowFailureMap The allow failure map encoding which actions are allowed to fail.\\n /// @param failureMap The failure map encoding which actions have failed.\\n /// @param execResults The array with the results of the executed actions.\\n /// @dev The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce.\\n event Executed(\\n address indexed actor,\\n bytes32 callId,\\n Action[] actions,\\n uint256 allowFailureMap,\\n uint256 failureMap,\\n bytes[] execResults\\n );\\n\\n /// @notice Emitted when a standard callback is registered.\\n /// @param interfaceId The ID of the interface.\\n /// @param callbackSelector The selector of the callback function.\\n /// @param magicNumber The magic number to be registered for the callback function selector.\\n event StandardCallbackRegistered(\\n bytes4 interfaceId,\\n bytes4 callbackSelector,\\n bytes4 magicNumber\\n );\\n\\n /// @notice Deposits (native) tokens to the DAO contract with a reference string.\\n /// @param _token The address of the token or address(0) in case of the native token.\\n /// @param _amount The amount of tokens to deposit.\\n /// @param _reference The reference describing the deposit reason.\\n function deposit(address _token, uint256 _amount, string calldata _reference) external payable;\\n\\n /// @notice Emitted when a token deposit has been made to the DAO.\\n /// @param sender The address of the sender.\\n /// @param token The address of the deposited token.\\n /// @param amount The amount of tokens deposited.\\n /// @param _reference The reference describing the deposit reason.\\n event Deposited(\\n address indexed sender,\\n address indexed token,\\n uint256 amount,\\n string _reference\\n );\\n\\n /// @notice Emitted when a native token deposit has been made to the DAO.\\n /// @dev This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).\\n /// @param sender The address of the sender.\\n /// @param amount The amount of native tokens deposited.\\n event NativeTokenDeposited(address sender, uint256 amount);\\n\\n /// @notice Setter for the trusted forwarder verifying the meta transaction.\\n /// @param _trustedForwarder The trusted forwarder address.\\n function setTrustedForwarder(address _trustedForwarder) external;\\n\\n /// @notice Getter for the trusted forwarder verifying the meta transaction.\\n /// @return The trusted forwarder address.\\n function getTrustedForwarder() external view returns (address);\\n\\n /// @notice Emitted when a new TrustedForwarder is set on the DAO.\\n /// @param forwarder the new forwarder address.\\n event TrustedForwarderSet(address forwarder);\\n\\n /// @notice Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\\n /// @param _hash The hash of the data to be signed.\\n /// @param _signature The signature byte array associated with `_hash`.\\n /// @return Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not.\\n function isValidSignature(bytes32 _hash, bytes memory _signature) external returns (bytes4);\\n\\n /// @notice Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\\n /// @param _interfaceId The ID of the interface.\\n /// @param _callbackSelector The selector of the callback function.\\n /// @param _magicNumber The magic number to be registered for the function signature.\\n function registerStandardCallback(\\n bytes4 _interfaceId,\\n bytes4 _callbackSelector,\\n bytes4 _magicNumber\\n ) external;\\n\\n /// @notice Removed function being left here to not corrupt the IDAO interface ID. Any call will revert.\\n /// @dev Introduced in v1.0.0. Removed in v1.4.0.\\n function setSignatureValidator(address) external;\\n}\\n\",\"keccak256\":\"0xb7f615523c26de042edce98731c658f44a1edb2464387ac1b642c4c69f57128e\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"events":{"Deposited(address,address,uint256,string)":{"notice":"Emitted when a token deposit has been made to the DAO."},"Executed(address,bytes32,(address,uint256,bytes)[],uint256,uint256,bytes[])":{"notice":"Emitted when a proposal is executed."},"MetadataSet(bytes)":{"notice":"Emitted when the DAO metadata is updated."},"NativeTokenDeposited(address,uint256)":{"notice":"Emitted when a native token deposit has been made to the DAO."},"StandardCallbackRegistered(bytes4,bytes4,bytes4)":{"notice":"Emitted when a standard callback is registered."},"TrustedForwarderSet(address)":{"notice":"Emitted when a new TrustedForwarder is set on the DAO."}},"kind":"user","methods":{"deposit(address,uint256,string)":{"notice":"Deposits (native) tokens to the DAO contract with a reference string."},"execute(bytes32,(address,uint256,bytes)[],uint256)":{"notice":"Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted."},"getTrustedForwarder()":{"notice":"Getter for the trusted forwarder verifying the meta transaction."},"hasPermission(address,address,bytes32,bytes)":{"notice":"Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process."},"isValidSignature(bytes32,bytes)":{"notice":"Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271)."},"registerStandardCallback(bytes4,bytes4,bytes4)":{"notice":"Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature."},"setMetadata(bytes)":{"notice":"Updates the DAO metadata (e.g., an IPFS hash)."},"setSignatureValidator(address)":{"notice":"Removed function being left here to not corrupt the IDAO interface ID. Any call will revert."},"setTrustedForwarder(address)":{"notice":"Setter for the trusted forwarder verifying the meta transaction."}},"notice":"The interface required for DAOs within the Aragon App DAO framework.","version":1}}},"src/mocks/plugin/PluginCloneableMock.sol":{"PluginCloneableMockBad":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousTarget","type":"address"},{"indexed":true,"internalType":"address","name":"newTarget","type":"address"}],"name":"TargetSet","type":"event"},{"inputs":[],"name":"dao","outputs":[{"internalType":"contract IDAO","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IDAO","name":"_dao","type":"address"}],"name":"notAnInitializer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pluginType","outputs":[{"internalType":"enum IPlugin.PluginType","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"protocolVersion","outputs":[{"internalType":"uint8[3]","name":"","type":"uint8[3]"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_target","type":"address"}],"name":"setTarget","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"state1","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"target","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"DO NOT USE IN PRODUCTION!","kind":"dev","methods":{"dao()":{"returns":{"_0":"The DAO contract."}},"protocolVersion()":{"details":"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.","returns":{"_0":"Returns the semantic Aragon OSx protocol version number."}},"setTarget(address)":{"details":"Sets the target to a new target (`newTarget`)."},"supportsInterface(bytes4)":{"params":{"_interfaceId":"The ID of the interface."},"returns":{"_0":"Returns `true` if the interface is supported."}}},"version":1},"evm":{"bytecode":{"functionDebugData":{"@_4211":{"entryPoint":null,"id":4211,"parameterSlots":0,"returnSlots":0},"@_disableInitializers_515":{"entryPoint":30,"id":515,"parameterSlots":0,"returnSlots":0},"abi_encode_tuple_t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:608:50","statements":[{"nodeType":"YulBlock","src":"6:3:50","statements":[]},{"body":{"nodeType":"YulBlock","src":"188:229:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"205:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"216:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"198:6:50"},"nodeType":"YulFunctionCall","src":"198:21:50"},"nodeType":"YulExpressionStatement","src":"198:21:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"239:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"250:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"235:3:50"},"nodeType":"YulFunctionCall","src":"235:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"255:2:50","type":"","value":"39"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"228:6:50"},"nodeType":"YulFunctionCall","src":"228:30:50"},"nodeType":"YulExpressionStatement","src":"228:30:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"278:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"289:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"274:3:50"},"nodeType":"YulFunctionCall","src":"274:18:50"},{"hexValue":"496e697469616c697a61626c653a20636f6e747261637420697320696e697469","kind":"string","nodeType":"YulLiteral","src":"294:34:50","type":"","value":"Initializable: contract is initi"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"267:6:50"},"nodeType":"YulFunctionCall","src":"267:62:50"},"nodeType":"YulExpressionStatement","src":"267:62:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"349:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"360:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"345:3:50"},"nodeType":"YulFunctionCall","src":"345:18:50"},{"hexValue":"616c697a696e67","kind":"string","nodeType":"YulLiteral","src":"365:9:50","type":"","value":"alizing"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"338:6:50"},"nodeType":"YulFunctionCall","src":"338:37:50"},"nodeType":"YulExpressionStatement","src":"338:37:50"},{"nodeType":"YulAssignment","src":"384:27:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"396:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"407:3:50","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"392:3:50"},"nodeType":"YulFunctionCall","src":"392:19:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"384:4:50"}]}]},"name":"abi_encode_tuple_t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"165:9:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"179:4:50","type":""}],"src":"14:403:50"},{"body":{"nodeType":"YulBlock","src":"519:87:50","statements":[{"nodeType":"YulAssignment","src":"529:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"541:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"552:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"537:3:50"},"nodeType":"YulFunctionCall","src":"537:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"529:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"571:9:50"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"586:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"594:4:50","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"582:3:50"},"nodeType":"YulFunctionCall","src":"582:17:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"564:6:50"},"nodeType":"YulFunctionCall","src":"564:36:50"},"nodeType":"YulExpressionStatement","src":"564:36:50"}]},"name":"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"488:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"499:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"510:4:50","type":""}],"src":"422:184:50"}]},"contents":"{\n { }\n function abi_encode_tuple_t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 39)\n mstore(add(headStart, 64), \"Initializable: contract is initi\")\n mstore(add(headStart, 96), \"alizing\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xff))\n }\n}","id":50,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"608060405234801561001057600080fd5b5061001961001e565b6100dd565b600054610100900460ff161561008a5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116146100db576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b61043b806100ec6000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c80636accab8c1161005b5780636accab8c146100fe578063776d1a01146101155780638883bbd71461012a578063d4b839921461013d57600080fd5b806301ffc9a71461008d5780632ae9c600146100b55780634162169f146100ca57806341de6830146100ef575b600080fd5b6100a061009b36600461036f565b610150565b60405190151581526020015b60405180910390f35b6100bd6101a1565b6040516100ac91906103a0565b6065546001600160a01b03165b6040516001600160a01b0390911681526020016100ac565b60016040516100ac91906103d4565b61010760985481565b6040519081526020016100ac565b610128610123366004610411565b6101cb565b005b610128610138366004610411565b61022a565b6097546100d7906001600160a01b031681565b60006001600160e01b0319821663041de68360e41b148061018057506001600160e01b03198216621574e360e91b145b8061019b57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6101a9610351565b5060408051606081018252600181526004602082015260009181019190915290565b609780546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d690600090a35050565b6102338161023b565b506001609855565b600054610100900460ff166102ab5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084015b60405180910390fd5b6102b4816102b7565b50565b600054610100900460ff166103225760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016102a2565b6065805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b60405180606001604052806003906020820280368337509192915050565b60006020828403121561038157600080fd5b81356001600160e01b03198116811461039957600080fd5b9392505050565b60608101818360005b60038110156103cb57815160ff168352602092830192909101906001016103a9565b50505092915050565b60208101600383106103f657634e487b7160e01b600052602160045260246000fd5b91905290565b6001600160a01b03811681146102b457600080fd5b60006020828403121561042357600080fd5b8135610399816103fc56fea164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x19 PUSH2 0x1E JUMP JUMPDEST PUSH2 0xDD JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x8A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x27 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320696E697469 PUSH1 0x44 DUP3 ADD MSTORE PUSH7 0x616C697A696E67 PUSH1 0xC8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xFF SWAP1 DUP2 AND EQ PUSH2 0xDB JUMPI PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST JUMP JUMPDEST PUSH2 0x43B DUP1 PUSH2 0xEC PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x88 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6ACCAB8C GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x6ACCAB8C EQ PUSH2 0xFE JUMPI DUP1 PUSH4 0x776D1A01 EQ PUSH2 0x115 JUMPI DUP1 PUSH4 0x8883BBD7 EQ PUSH2 0x12A JUMPI DUP1 PUSH4 0xD4B83992 EQ PUSH2 0x13D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x8D JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0xB5 JUMPI DUP1 PUSH4 0x4162169F EQ PUSH2 0xCA JUMPI DUP1 PUSH4 0x41DE6830 EQ PUSH2 0xEF JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA0 PUSH2 0x9B CALLDATASIZE PUSH1 0x4 PUSH2 0x36F JUMP JUMPDEST PUSH2 0x150 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xBD PUSH2 0x1A1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xAC SWAP2 SWAP1 PUSH2 0x3A0 JUMP JUMPDEST PUSH1 0x65 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xAC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x40 MLOAD PUSH2 0xAC SWAP2 SWAP1 PUSH2 0x3D4 JUMP JUMPDEST PUSH2 0x107 PUSH1 0x98 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xAC JUMP JUMPDEST PUSH2 0x128 PUSH2 0x123 CALLDATASIZE PUSH1 0x4 PUSH2 0x411 JUMP JUMPDEST PUSH2 0x1CB JUMP JUMPDEST STOP JUMPDEST PUSH2 0x128 PUSH2 0x138 CALLDATASIZE PUSH1 0x4 PUSH2 0x411 JUMP JUMPDEST PUSH2 0x22A JUMP JUMPDEST PUSH1 0x97 SLOAD PUSH2 0xD7 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x41DE683 PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x180 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x19B JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1A9 PUSH2 0x351 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x97 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP2 SWAP1 DUP3 SWAP1 PUSH32 0x90CC2F570A6EB594B1580EA3E41247D2D73A55281889E86BD4EC2FC29C7E62D6 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH2 0x233 DUP2 PUSH2 0x23B JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x98 SSTORE JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x2AB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2B4 DUP2 PUSH2 0x2B7 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x322 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x2A2 JUMP JUMPDEST PUSH1 0x65 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x381 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x399 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0x3CB JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x3A9 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH1 0x3 DUP4 LT PUSH2 0x3F6 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 SWAP1 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x2B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x423 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x399 DUP2 PUSH2 0x3FC JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"1087:198:26:-:0;;;;;;;;;;;;-1:-1:-1;1290:22:39;:20;:22::i;:::-;1087:198:26;;5939:280:4;6007:13;;;;;;;6006:14;5998:66;;;;-1:-1:-1;;;5998:66:4;;216:2:50;5998:66:4;;;198:21:50;255:2;235:18;;;228:30;294:34;274:18;;;267:62;-1:-1:-1;;;345:18:50;;;338:37;392:19;;5998:66:4;;;;;;;;6078:12;;6094:15;6078:12;;;:31;6074:139;;6125:12;:30;;-1:-1:-1;;6125:30:4;6140:15;6125:30;;;;;;6174:28;;564:36:50;;;6174:28:4;;552:2:50;537:18;6174:28:4;;;;;;;6074:139;5939:280::o;422:184:50:-;1087:198:26;;;;;;"},"deployedBytecode":{"functionDebugData":{"@__DaoAuthorizableUpgradeable_init_3901":{"entryPoint":695,"id":3901,"parameterSlots":1,"returnSlots":0},"@__PluginCloneable_init_4225":{"entryPoint":571,"id":4225,"parameterSlots":1,"returnSlots":0},"@dao_3911":{"entryPoint":null,"id":3911,"parameterSlots":0,"returnSlots":1},"@notAnInitializer_2616":{"entryPoint":554,"id":2616,"parameterSlots":1,"returnSlots":0},"@pluginType_4257":{"entryPoint":null,"id":4257,"parameterSlots":0,"returnSlots":1},"@protocolVersion_5135":{"entryPoint":417,"id":5135,"parameterSlots":0,"returnSlots":1},"@setTarget_4245":{"entryPoint":459,"id":4245,"parameterSlots":1,"returnSlots":0},"@state1_2601":{"entryPoint":null,"id":2601,"parameterSlots":0,"returnSlots":0},"@supportsInterface_1275":{"entryPoint":null,"id":1275,"parameterSlots":1,"returnSlots":1},"@supportsInterface_4286":{"entryPoint":336,"id":4286,"parameterSlots":1,"returnSlots":1},"@target_4196":{"entryPoint":null,"id":4196,"parameterSlots":0,"returnSlots":0},"abi_decode_tuple_t_address":{"entryPoint":1041,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes4":{"entryPoint":879,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_contract$_IDAO_$2538":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed":{"entryPoint":928,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_contract$_IDAO_$2538__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_enum$_PluginType_$3994__to_t_uint8__fromStack_reversed":{"entryPoint":980,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"validator_revert_address":{"entryPoint":1020,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:3093:50","statements":[{"nodeType":"YulBlock","src":"6:3:50","statements":[]},{"body":{"nodeType":"YulBlock","src":"83:217:50","statements":[{"body":{"nodeType":"YulBlock","src":"129:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"138:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"141:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"131:6:50"},"nodeType":"YulFunctionCall","src":"131:12:50"},"nodeType":"YulExpressionStatement","src":"131:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"104:7:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"113:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"100:3:50"},"nodeType":"YulFunctionCall","src":"100:23:50"},{"kind":"number","nodeType":"YulLiteral","src":"125:2:50","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"96:3:50"},"nodeType":"YulFunctionCall","src":"96:32:50"},"nodeType":"YulIf","src":"93:52:50"},{"nodeType":"YulVariableDeclaration","src":"154:36:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"180:9:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"167:12:50"},"nodeType":"YulFunctionCall","src":"167:23:50"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"158:5:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"254:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"263:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"266:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"256:6:50"},"nodeType":"YulFunctionCall","src":"256:12:50"},"nodeType":"YulExpressionStatement","src":"256:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"212:5:50"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"223:5:50"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"234:3:50","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"239:10:50","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"230:3:50"},"nodeType":"YulFunctionCall","src":"230:20:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"219:3:50"},"nodeType":"YulFunctionCall","src":"219:32:50"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"209:2:50"},"nodeType":"YulFunctionCall","src":"209:43:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"202:6:50"},"nodeType":"YulFunctionCall","src":"202:51:50"},"nodeType":"YulIf","src":"199:71:50"},{"nodeType":"YulAssignment","src":"279:15:50","value":{"name":"value","nodeType":"YulIdentifier","src":"289:5:50"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"279:6:50"}]}]},"name":"abi_decode_tuple_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"49:9:50","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"60:7:50","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"72:6:50","type":""}],"src":"14:286:50"},{"body":{"nodeType":"YulBlock","src":"400:92:50","statements":[{"nodeType":"YulAssignment","src":"410:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"422:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"433:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"418:3:50"},"nodeType":"YulFunctionCall","src":"418:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"410:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"452:9:50"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"477:6:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"470:6:50"},"nodeType":"YulFunctionCall","src":"470:14:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"463:6:50"},"nodeType":"YulFunctionCall","src":"463:22:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"445:6:50"},"nodeType":"YulFunctionCall","src":"445:41:50"},"nodeType":"YulExpressionStatement","src":"445:41:50"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"369:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"380:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"391:4:50","type":""}],"src":"305:187:50"},{"body":{"nodeType":"YulBlock","src":"640:358:50","statements":[{"nodeType":"YulAssignment","src":"650:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"662:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"673:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"658:3:50"},"nodeType":"YulFunctionCall","src":"658:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"650:4:50"}]},{"nodeType":"YulVariableDeclaration","src":"685:20:50","value":{"name":"headStart","nodeType":"YulIdentifier","src":"696:9:50"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"689:3:50","type":""}]},{"nodeType":"YulAssignment","src":"714:16:50","value":{"name":"headStart","nodeType":"YulIdentifier","src":"721:9:50"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"714:3:50"}]},{"nodeType":"YulVariableDeclaration","src":"739:20:50","value":{"name":"value0","nodeType":"YulIdentifier","src":"753:6:50"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"743:6:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"768:10:50","value":{"kind":"number","nodeType":"YulLiteral","src":"777:1:50","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"772:1:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"834:158:50","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"855:3:50"},{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"870:6:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"864:5:50"},"nodeType":"YulFunctionCall","src":"864:13:50"},{"kind":"number","nodeType":"YulLiteral","src":"879:4:50","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"860:3:50"},"nodeType":"YulFunctionCall","src":"860:24:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"848:6:50"},"nodeType":"YulFunctionCall","src":"848:37:50"},"nodeType":"YulExpressionStatement","src":"848:37:50"},{"nodeType":"YulVariableDeclaration","src":"898:14:50","value":{"kind":"number","nodeType":"YulLiteral","src":"908:4:50","type":"","value":"0x20"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"902:2:50","type":""}]},{"nodeType":"YulAssignment","src":"925:19:50","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"936:3:50"},{"name":"_1","nodeType":"YulIdentifier","src":"941:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"932:3:50"},"nodeType":"YulFunctionCall","src":"932:12:50"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"925:3:50"}]},{"nodeType":"YulAssignment","src":"957:25:50","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"971:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"979:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"967:3:50"},"nodeType":"YulFunctionCall","src":"967:15:50"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"957:6:50"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"798:1:50"},{"kind":"number","nodeType":"YulLiteral","src":"801:4:50","type":"","value":"0x03"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"795:2:50"},"nodeType":"YulFunctionCall","src":"795:11:50"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"807:18:50","statements":[{"nodeType":"YulAssignment","src":"809:14:50","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"818:1:50"},{"kind":"number","nodeType":"YulLiteral","src":"821:1:50","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"814:3:50"},"nodeType":"YulFunctionCall","src":"814:9:50"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"809:1:50"}]}]},"pre":{"nodeType":"YulBlock","src":"791:3:50","statements":[]},"src":"787:205:50"}]},"name":"abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"609:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"620:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"631:4:50","type":""}],"src":"497:501:50"},{"body":{"nodeType":"YulBlock","src":"1117:125:50","statements":[{"nodeType":"YulAssignment","src":"1127:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1139:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"1150:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1135:3:50"},"nodeType":"YulFunctionCall","src":"1135:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1127:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1169:9:50"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1184:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"1192:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1180:3:50"},"nodeType":"YulFunctionCall","src":"1180:55:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1162:6:50"},"nodeType":"YulFunctionCall","src":"1162:74:50"},"nodeType":"YulExpressionStatement","src":"1162:74:50"}]},"name":"abi_encode_tuple_t_contract$_IDAO_$2538__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1086:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1097:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1108:4:50","type":""}],"src":"1003:239:50"},{"body":{"nodeType":"YulBlock","src":"1361:229:50","statements":[{"nodeType":"YulAssignment","src":"1371:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1383:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"1394:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1379:3:50"},"nodeType":"YulFunctionCall","src":"1379:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1371:4:50"}]},{"body":{"nodeType":"YulBlock","src":"1439:111:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1460:1:50","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1467:3:50","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"1472:10:50","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1463:3:50"},"nodeType":"YulFunctionCall","src":"1463:20:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1453:6:50"},"nodeType":"YulFunctionCall","src":"1453:31:50"},"nodeType":"YulExpressionStatement","src":"1453:31:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1504:1:50","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"1507:4:50","type":"","value":"0x21"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1497:6:50"},"nodeType":"YulFunctionCall","src":"1497:15:50"},"nodeType":"YulExpressionStatement","src":"1497:15:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1532:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1535:4:50","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1525:6:50"},"nodeType":"YulFunctionCall","src":"1525:15:50"},"nodeType":"YulExpressionStatement","src":"1525:15:50"}]},"condition":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1419:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"1427:1:50","type":"","value":"3"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"1416:2:50"},"nodeType":"YulFunctionCall","src":"1416:13:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1409:6:50"},"nodeType":"YulFunctionCall","src":"1409:21:50"},"nodeType":"YulIf","src":"1406:144:50"},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1566:9:50"},{"name":"value0","nodeType":"YulIdentifier","src":"1577:6:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1559:6:50"},"nodeType":"YulFunctionCall","src":"1559:25:50"},"nodeType":"YulExpressionStatement","src":"1559:25:50"}]},"name":"abi_encode_tuple_t_enum$_PluginType_$3994__to_t_uint8__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1330:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1341:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1352:4:50","type":""}],"src":"1247:343:50"},{"body":{"nodeType":"YulBlock","src":"1696:76:50","statements":[{"nodeType":"YulAssignment","src":"1706:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1718:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"1729:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1714:3:50"},"nodeType":"YulFunctionCall","src":"1714:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1706:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1748:9:50"},{"name":"value0","nodeType":"YulIdentifier","src":"1759:6:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1741:6:50"},"nodeType":"YulFunctionCall","src":"1741:25:50"},"nodeType":"YulExpressionStatement","src":"1741:25:50"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1665:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1676:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1687:4:50","type":""}],"src":"1595:177:50"},{"body":{"nodeType":"YulBlock","src":"1822:109:50","statements":[{"body":{"nodeType":"YulBlock","src":"1909:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1918:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1921:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1911:6:50"},"nodeType":"YulFunctionCall","src":"1911:12:50"},"nodeType":"YulExpressionStatement","src":"1911:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1845:5:50"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1856:5:50"},{"kind":"number","nodeType":"YulLiteral","src":"1863:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1852:3:50"},"nodeType":"YulFunctionCall","src":"1852:54:50"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1842:2:50"},"nodeType":"YulFunctionCall","src":"1842:65:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1835:6:50"},"nodeType":"YulFunctionCall","src":"1835:73:50"},"nodeType":"YulIf","src":"1832:93:50"}]},"name":"validator_revert_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1811:5:50","type":""}],"src":"1777:154:50"},{"body":{"nodeType":"YulBlock","src":"2006:177:50","statements":[{"body":{"nodeType":"YulBlock","src":"2052:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2061:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2064:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2054:6:50"},"nodeType":"YulFunctionCall","src":"2054:12:50"},"nodeType":"YulExpressionStatement","src":"2054:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2027:7:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"2036:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2023:3:50"},"nodeType":"YulFunctionCall","src":"2023:23:50"},{"kind":"number","nodeType":"YulLiteral","src":"2048:2:50","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2019:3:50"},"nodeType":"YulFunctionCall","src":"2019:32:50"},"nodeType":"YulIf","src":"2016:52:50"},{"nodeType":"YulVariableDeclaration","src":"2077:36:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2103:9:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2090:12:50"},"nodeType":"YulFunctionCall","src":"2090:23:50"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"2081:5:50","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2147:5:50"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"2122:24:50"},"nodeType":"YulFunctionCall","src":"2122:31:50"},"nodeType":"YulExpressionStatement","src":"2122:31:50"},{"nodeType":"YulAssignment","src":"2162:15:50","value":{"name":"value","nodeType":"YulIdentifier","src":"2172:5:50"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2162:6:50"}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1972:9:50","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1983:7:50","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1995:6:50","type":""}],"src":"1936:247:50"},{"body":{"nodeType":"YulBlock","src":"2271:177:50","statements":[{"body":{"nodeType":"YulBlock","src":"2317:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2326:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2329:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2319:6:50"},"nodeType":"YulFunctionCall","src":"2319:12:50"},"nodeType":"YulExpressionStatement","src":"2319:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2292:7:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"2301:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2288:3:50"},"nodeType":"YulFunctionCall","src":"2288:23:50"},{"kind":"number","nodeType":"YulLiteral","src":"2313:2:50","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2284:3:50"},"nodeType":"YulFunctionCall","src":"2284:32:50"},"nodeType":"YulIf","src":"2281:52:50"},{"nodeType":"YulVariableDeclaration","src":"2342:36:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2368:9:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2355:12:50"},"nodeType":"YulFunctionCall","src":"2355:23:50"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"2346:5:50","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2412:5:50"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"2387:24:50"},"nodeType":"YulFunctionCall","src":"2387:31:50"},"nodeType":"YulExpressionStatement","src":"2387:31:50"},{"nodeType":"YulAssignment","src":"2427:15:50","value":{"name":"value","nodeType":"YulIdentifier","src":"2437:5:50"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2427:6:50"}]}]},"name":"abi_decode_tuple_t_contract$_IDAO_$2538","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2237:9:50","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2248:7:50","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2260:6:50","type":""}],"src":"2188:260:50"},{"body":{"nodeType":"YulBlock","src":"2554:125:50","statements":[{"nodeType":"YulAssignment","src":"2564:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2576:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"2587:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2572:3:50"},"nodeType":"YulFunctionCall","src":"2572:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2564:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2606:9:50"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2621:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"2629:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2617:3:50"},"nodeType":"YulFunctionCall","src":"2617:55:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2599:6:50"},"nodeType":"YulFunctionCall","src":"2599:74:50"},"nodeType":"YulExpressionStatement","src":"2599:74:50"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2523:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"2534:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2545:4:50","type":""}],"src":"2453:226:50"},{"body":{"nodeType":"YulBlock","src":"2858:233:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2875:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"2886:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2868:6:50"},"nodeType":"YulFunctionCall","src":"2868:21:50"},"nodeType":"YulExpressionStatement","src":"2868:21:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2909:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"2920:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2905:3:50"},"nodeType":"YulFunctionCall","src":"2905:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"2925:2:50","type":"","value":"43"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2898:6:50"},"nodeType":"YulFunctionCall","src":"2898:30:50"},"nodeType":"YulExpressionStatement","src":"2898:30:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2948:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"2959:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2944:3:50"},"nodeType":"YulFunctionCall","src":"2944:18:50"},{"hexValue":"496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069","kind":"string","nodeType":"YulLiteral","src":"2964:34:50","type":"","value":"Initializable: contract is not i"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2937:6:50"},"nodeType":"YulFunctionCall","src":"2937:62:50"},"nodeType":"YulExpressionStatement","src":"2937:62:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3019:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"3030:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3015:3:50"},"nodeType":"YulFunctionCall","src":"3015:18:50"},{"hexValue":"6e697469616c697a696e67","kind":"string","nodeType":"YulLiteral","src":"3035:13:50","type":"","value":"nitializing"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3008:6:50"},"nodeType":"YulFunctionCall","src":"3008:41:50"},"nodeType":"YulExpressionStatement","src":"3008:41:50"},{"nodeType":"YulAssignment","src":"3058:27:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3070:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"3081:3:50","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3066:3:50"},"nodeType":"YulFunctionCall","src":"3066:19:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3058:4:50"}]}]},"name":"abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2835:9:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2849:4:50","type":""}],"src":"2684:407:50"}]},"contents":"{\n { }\n function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n if iszero(eq(value, and(value, shl(224, 0xffffffff)))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 96)\n let pos := headStart\n pos := headStart\n let srcPtr := value0\n let i := 0\n for { } lt(i, 0x03) { i := add(i, 1) }\n {\n mstore(pos, and(mload(srcPtr), 0xff))\n let _1 := 0x20\n pos := add(pos, _1)\n srcPtr := add(srcPtr, _1)\n }\n }\n function abi_encode_tuple_t_contract$_IDAO_$2538__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_encode_tuple_t_enum$_PluginType_$3994__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n if iszero(lt(value0, 3))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x21)\n revert(0, 0x24)\n }\n mstore(headStart, value0)\n }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function validator_revert_address(value)\n {\n if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n }\n function abi_decode_tuple_t_contract$_IDAO_$2538(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 43)\n mstore(add(headStart, 64), \"Initializable: contract is not i\")\n mstore(add(headStart, 96), \"nitializing\")\n tail := add(headStart, 128)\n }\n}","id":50,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100885760003560e01c80636accab8c1161005b5780636accab8c146100fe578063776d1a01146101155780638883bbd71461012a578063d4b839921461013d57600080fd5b806301ffc9a71461008d5780632ae9c600146100b55780634162169f146100ca57806341de6830146100ef575b600080fd5b6100a061009b36600461036f565b610150565b60405190151581526020015b60405180910390f35b6100bd6101a1565b6040516100ac91906103a0565b6065546001600160a01b03165b6040516001600160a01b0390911681526020016100ac565b60016040516100ac91906103d4565b61010760985481565b6040519081526020016100ac565b610128610123366004610411565b6101cb565b005b610128610138366004610411565b61022a565b6097546100d7906001600160a01b031681565b60006001600160e01b0319821663041de68360e41b148061018057506001600160e01b03198216621574e360e91b145b8061019b57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6101a9610351565b5060408051606081018252600181526004602082015260009181019190915290565b609780546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d690600090a35050565b6102338161023b565b506001609855565b600054610100900460ff166102ab5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084015b60405180910390fd5b6102b4816102b7565b50565b600054610100900460ff166103225760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016102a2565b6065805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b60405180606001604052806003906020820280368337509192915050565b60006020828403121561038157600080fd5b81356001600160e01b03198116811461039957600080fd5b9392505050565b60608101818360005b60038110156103cb57815160ff168352602092830192909101906001016103a9565b50505092915050565b60208101600383106103f657634e487b7160e01b600052602160045260246000fd5b91905290565b6001600160a01b03811681146102b457600080fd5b60006020828403121561042357600080fd5b8135610399816103fc56fea164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x88 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6ACCAB8C GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x6ACCAB8C EQ PUSH2 0xFE JUMPI DUP1 PUSH4 0x776D1A01 EQ PUSH2 0x115 JUMPI DUP1 PUSH4 0x8883BBD7 EQ PUSH2 0x12A JUMPI DUP1 PUSH4 0xD4B83992 EQ PUSH2 0x13D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x8D JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0xB5 JUMPI DUP1 PUSH4 0x4162169F EQ PUSH2 0xCA JUMPI DUP1 PUSH4 0x41DE6830 EQ PUSH2 0xEF JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA0 PUSH2 0x9B CALLDATASIZE PUSH1 0x4 PUSH2 0x36F JUMP JUMPDEST PUSH2 0x150 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xBD PUSH2 0x1A1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xAC SWAP2 SWAP1 PUSH2 0x3A0 JUMP JUMPDEST PUSH1 0x65 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xAC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x40 MLOAD PUSH2 0xAC SWAP2 SWAP1 PUSH2 0x3D4 JUMP JUMPDEST PUSH2 0x107 PUSH1 0x98 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xAC JUMP JUMPDEST PUSH2 0x128 PUSH2 0x123 CALLDATASIZE PUSH1 0x4 PUSH2 0x411 JUMP JUMPDEST PUSH2 0x1CB JUMP JUMPDEST STOP JUMPDEST PUSH2 0x128 PUSH2 0x138 CALLDATASIZE PUSH1 0x4 PUSH2 0x411 JUMP JUMPDEST PUSH2 0x22A JUMP JUMPDEST PUSH1 0x97 SLOAD PUSH2 0xD7 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x41DE683 PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x180 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x19B JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1A9 PUSH2 0x351 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x97 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP2 SWAP1 DUP3 SWAP1 PUSH32 0x90CC2F570A6EB594B1580EA3E41247D2D73A55281889E86BD4EC2FC29C7E62D6 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH2 0x233 DUP2 PUSH2 0x23B JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x98 SSTORE JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x2AB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2B4 DUP2 PUSH2 0x2B7 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x322 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x2A2 JUMP JUMPDEST PUSH1 0x65 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x381 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x399 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0x3CB JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x3A9 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH1 0x3 DUP4 LT PUSH2 0x3F6 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 SWAP1 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x2B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x423 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x399 DUP2 PUSH2 0x3FC JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"1087:198:26:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2263:288:39;;;;;;:::i;:::-;;:::i;:::-;;;470:14:50;;463:22;445:41;;433:2;418:18;2263:288:39;;;;;;;;631:98:49;;;:::i;:::-;;;;;;;:::i;1200:70:35:-;1259:4;;-1:-1:-1;;;;;1259:4:35;1200:70;;;-1:-1:-1;;;;;1180:55:50;;;1162:74;;1150:2;1135:18;1200:70:35;1003:239:50;1947:108:39;2028:20;1947:108;;;;;;:::i;1144:21:26:-;;;;;;;;;1741:25:50;;;1729:2;1714:18;1144:21:26;1595:177:50;1747:166:39;;;;;;:::i;:::-;;:::i;:::-;;1172:111:26;;;;;;:::i;:::-;;:::i;936:21:39:-;;;;;-1:-1:-1;;;;;936:21:39;;;2263:288;2349:4;-1:-1:-1;;;;;;2384:41:39;;-1:-1:-1;;;2384:41:39;;:107;;-1:-1:-1;;;;;;;2441:50:39;;-1:-1:-1;;;2441:50:39;2384:107;:160;;;-1:-1:-1;;;;;;;;;;1189:51:10;;;2507:37:39;2365:179;2263:288;-1:-1:-1;;2263:288:39:o;631:98:49:-;679:15;;:::i;:::-;-1:-1:-1;706:16:49;;;;;;;;714:1;706:16;;717:1;706:16;;;;-1:-1:-1;706:16:49;;;;;;;;631:98::o;1747:166:39:-;1825:6;;;-1:-1:-1;;;;;1841:16:39;;;-1:-1:-1;;1841:16:39;;;;;;;1872:34;;1825:6;;;1841:16;1825:6;;1872:34;;1800:22;;1872:34;1790:123;1747:166;:::o;1172:111:26:-;1228:28;1251:4;1228:22;:28::i;:::-;-1:-1:-1;1275:1:26;1266:6;:10;1172:111::o;1486:133:39:-;5374:13:4;;;;;;;5366:69;;;;-1:-1:-1;;;5366:69:4;;2886:2:50;5366:69:4;;;2868:21:50;2925:2;2905:18;;;2898:30;2964:34;2944:18;;;2937:62;-1:-1:-1;;;3015:18:50;;;3008:41;3066:19;;5366:69:4;;;;;;;;;1573:39:39::1;1607:4;1573:33;:39::i;:::-;1486:133:::0;:::o;1010:108:35:-;5374:13:4;;;;;;;5366:69;;;;-1:-1:-1;;;5366:69:4;;2886:2:50;5366:69:4;;;2868:21:50;2925:2;2905:18;;;2898:30;2964:34;2944:18;;;2937:62;-1:-1:-1;;;3015:18:50;;;3008:41;3066:19;;5366:69:4;2684:407:50;5366:69:4;1100:4:35::1;:11:::0;;-1:-1:-1;;1100:11:35::1;-1:-1:-1::0;;;;;1100:11:35;;;::::1;::::0;;;::::1;::::0;;1010:108::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:286:50:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:50;;209:43;;199:71;;266:1;263;256:12;199:71;289:5;14:286;-1:-1:-1;;;14:286:50:o;497:501::-;673:2;658:18;;662:9;753:6;631:4;787:205;801:4;798:1;795:11;787:205;;;864:13;;879:4;860:24;848:37;;908:4;932:12;;;;967:15;;;;821:1;814:9;787:205;;;791:3;;;497:501;;;;:::o;1247:343::-;1394:2;1379:18;;1427:1;1416:13;;1406:144;;1472:10;1467:3;1463:20;1460:1;1453:31;1507:4;1504:1;1497:15;1535:4;1532:1;1525:15;1406:144;1559:25;;;1247:343;:::o;1777:154::-;-1:-1:-1;;;;;1856:5:50;1852:54;1845:5;1842:65;1832:93;;1921:1;1918;1911:12;1936:247;1995:6;2048:2;2036:9;2027:7;2023:23;2019:32;2016:52;;;2064:1;2061;2054:12;2016:52;2103:9;2090:23;2122:31;2147:5;2122:31;:::i"},"gasEstimates":{"creation":{"codeDepositCost":"216600","executionCost":"29846","totalCost":"246446"},"external":{"dao()":"2365","notAnInitializer(address)":"infinite","pluginType()":"294","protocolVersion()":"infinite","setTarget(address)":"26112","state1()":"2295","supportsInterface(bytes4)":"482","target()":"2403"}},"methodIdentifiers":{"dao()":"4162169f","notAnInitializer(address)":"8883bbd7","pluginType()":"41de6830","protocolVersion()":"2ae9c600","setTarget(address)":"776d1a01","state1()":"6accab8c","supportsInterface(bytes4)":"01ffc9a7","target()":"d4b83992"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousTarget\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newTarget\",\"type\":\"address\"}],\"name\":\"TargetSet\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"dao\",\"outputs\":[{\"internalType\":\"contract IDAO\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IDAO\",\"name\":\"_dao\",\"type\":\"address\"}],\"name\":\"notAnInitializer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pluginType\",\"outputs\":[{\"internalType\":\"enum IPlugin.PluginType\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"protocolVersion\",\"outputs\":[{\"internalType\":\"uint8[3]\",\"name\":\"\",\"type\":\"uint8[3]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_target\",\"type\":\"address\"}],\"name\":\"setTarget\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"state1\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"target\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"DO NOT USE IN PRODUCTION!\",\"kind\":\"dev\",\"methods\":{\"dao()\":{\"returns\":{\"_0\":\"The DAO contract.\"}},\"protocolVersion()\":{\"details\":\"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\",\"returns\":{\"_0\":\"Returns the semantic Aragon OSx protocol version number.\"}},\"setTarget(address)\":{\"details\":\"Sets the target to a new target (`newTarget`).\"},\"supportsInterface(bytes4)\":{\"params\":{\"_interfaceId\":\"The ID of the interface.\"},\"returns\":{\"_0\":\"Returns `true` if the interface is supported.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"dao()\":{\"notice\":\"Returns the DAO contract.\"},\"pluginType()\":{\"notice\":\"Returns the plugin's type\"},\"protocolVersion()\":{\"notice\":\"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\"},\"setTarget(address)\":{\"notice\":\"Can only be called by the current owner. TODO\"},\"supportsInterface(bytes4)\":{\"notice\":\"Checks if this or the parent contract supports an interface by its ID.\"}},\"notice\":\"A mock cloneable plugin missing an initializer function.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/mocks/plugin/PluginCloneableMock.sol\":\"PluginCloneableMockBad\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n function __Context_init() internal onlyInitializing {\\n }\\n\\n function __Context_init_unchained() internal onlyInitializing {\\n }\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n function _contextSuffixLength() internal view virtual returns (uint256) {\\n return 0;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x75097e35253e7fb282ee4d7f27a80eaacfa759923185bf17302a89cbc059c5ef\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165Upgradeable.sol\\\";\\nimport {Initializable} from \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165Upgradeable is Initializable, IERC165Upgradeable {\\n function __ERC165_init() internal onlyInitializing {\\n }\\n\\n function __ERC165_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165Upgradeable).interfaceId;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0xd90d7723512df65ae417adaf0801042940f0dabd60039ceeaffe34aa5b238da1\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165Upgradeable {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\"},\"src/dao/IDAO.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IDAO\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for DAOs within the Aragon App DAO framework.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IDAO {\\n /// @notice The action struct to be consumed by the DAO's `execute` function resulting in an external call.\\n /// @param to The address to call.\\n /// @param value The native token value to be sent with the call.\\n /// @param data The bytes-encoded function selector and calldata for the call.\\n struct Action {\\n address to;\\n uint256 value;\\n bytes data;\\n }\\n\\n /// @notice Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\\n /// @param _where The address of the contract.\\n /// @param _who The address of a EOA or contract to give the permissions.\\n /// @param _permissionId The permission identifier.\\n /// @param _data The optional data passed to the `PermissionCondition` registered.\\n /// @return Returns true if the address has permission, false if not.\\n function hasPermission(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes memory _data\\n ) external view returns (bool);\\n\\n /// @notice Updates the DAO metadata (e.g., an IPFS hash).\\n /// @param _metadata The IPFS hash of the new metadata object.\\n function setMetadata(bytes calldata _metadata) external;\\n\\n /// @notice Emitted when the DAO metadata is updated.\\n /// @param metadata The IPFS hash of the new metadata object.\\n event MetadataSet(bytes metadata);\\n\\n /// @notice Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted.\\n /// @param _callId The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce.\\n /// @param _actions The array of actions.\\n /// @param _allowFailureMap A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @return The array of results obtained from the executed actions in `bytes`.\\n /// @return The resulting failure map containing the actions have actually failed.\\n function execute(\\n bytes32 _callId,\\n Action[] memory _actions,\\n uint256 _allowFailureMap\\n ) external returns (bytes[] memory, uint256);\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param actor The address of the caller.\\n /// @param callId The ID of the call.\\n /// @param actions The array of actions executed.\\n /// @param allowFailureMap The allow failure map encoding which actions are allowed to fail.\\n /// @param failureMap The failure map encoding which actions have failed.\\n /// @param execResults The array with the results of the executed actions.\\n /// @dev The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce.\\n event Executed(\\n address indexed actor,\\n bytes32 callId,\\n Action[] actions,\\n uint256 allowFailureMap,\\n uint256 failureMap,\\n bytes[] execResults\\n );\\n\\n /// @notice Emitted when a standard callback is registered.\\n /// @param interfaceId The ID of the interface.\\n /// @param callbackSelector The selector of the callback function.\\n /// @param magicNumber The magic number to be registered for the callback function selector.\\n event StandardCallbackRegistered(\\n bytes4 interfaceId,\\n bytes4 callbackSelector,\\n bytes4 magicNumber\\n );\\n\\n /// @notice Deposits (native) tokens to the DAO contract with a reference string.\\n /// @param _token The address of the token or address(0) in case of the native token.\\n /// @param _amount The amount of tokens to deposit.\\n /// @param _reference The reference describing the deposit reason.\\n function deposit(address _token, uint256 _amount, string calldata _reference) external payable;\\n\\n /// @notice Emitted when a token deposit has been made to the DAO.\\n /// @param sender The address of the sender.\\n /// @param token The address of the deposited token.\\n /// @param amount The amount of tokens deposited.\\n /// @param _reference The reference describing the deposit reason.\\n event Deposited(\\n address indexed sender,\\n address indexed token,\\n uint256 amount,\\n string _reference\\n );\\n\\n /// @notice Emitted when a native token deposit has been made to the DAO.\\n /// @dev This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).\\n /// @param sender The address of the sender.\\n /// @param amount The amount of native tokens deposited.\\n event NativeTokenDeposited(address sender, uint256 amount);\\n\\n /// @notice Setter for the trusted forwarder verifying the meta transaction.\\n /// @param _trustedForwarder The trusted forwarder address.\\n function setTrustedForwarder(address _trustedForwarder) external;\\n\\n /// @notice Getter for the trusted forwarder verifying the meta transaction.\\n /// @return The trusted forwarder address.\\n function getTrustedForwarder() external view returns (address);\\n\\n /// @notice Emitted when a new TrustedForwarder is set on the DAO.\\n /// @param forwarder the new forwarder address.\\n event TrustedForwarderSet(address forwarder);\\n\\n /// @notice Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\\n /// @param _hash The hash of the data to be signed.\\n /// @param _signature The signature byte array associated with `_hash`.\\n /// @return Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not.\\n function isValidSignature(bytes32 _hash, bytes memory _signature) external returns (bytes4);\\n\\n /// @notice Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\\n /// @param _interfaceId The ID of the interface.\\n /// @param _callbackSelector The selector of the callback function.\\n /// @param _magicNumber The magic number to be registered for the function signature.\\n function registerStandardCallback(\\n bytes4 _interfaceId,\\n bytes4 _callbackSelector,\\n bytes4 _magicNumber\\n ) external;\\n\\n /// @notice Removed function being left here to not corrupt the IDAO interface ID. Any call will revert.\\n /// @dev Introduced in v1.0.0. Removed in v1.4.0.\\n function setSignatureValidator(address) external;\\n}\\n\",\"keccak256\":\"0xb7f615523c26de042edce98731c658f44a1edb2464387ac1b642c4c69f57128e\",\"license\":\"AGPL-3.0-or-later\"},\"src/mocks/plugin/PluginCloneableMock.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\n/* solhint-disable one-contract-per-file */\\npragma solidity ^0.8.8;\\n\\nimport {PluginCloneable} from \\\"../../plugin/PluginCloneable.sol\\\";\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice A mock cloneable plugin to be deployed via the minimal proxy pattern.\\n/// v1.1 (Release 1, Build 1)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginCloneableMockBuild1 is PluginCloneable {\\n uint256 public state1;\\n\\n function initialize(IDAO _dao) external initializer {\\n __PluginCloneable_init(_dao);\\n state1 = 1;\\n }\\n}\\n\\n/// @notice A mock cloneable plugin to be deployed via the minimal proxy pattern.\\n/// v1.1 (Release 1, Build 2)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginCloneableMockBuild2 is PluginCloneable {\\n uint256 public state1;\\n uint256 public state2;\\n\\n function initialize(IDAO _dao) external initializer {\\n __PluginCloneable_init(_dao);\\n state1 = 1;\\n state2 = 2;\\n }\\n}\\n\\n/// @notice A mock cloneable plugin missing an initializer function.\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginCloneableMockBad is PluginCloneable {\\n uint256 public state1;\\n\\n function notAnInitializer(IDAO _dao) external {\\n __PluginCloneable_init(_dao);\\n state1 = 1;\\n }\\n}\\n\",\"keccak256\":\"0x1bb271f7b553040fad7907e97b860aa833aec9aefe7477e00ba7bdfd80d84e98\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/DaoAuthorizableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ContextUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\\\";\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\nimport {_auth} from \\\"./auth.sol\\\";\\n\\n/// @title DaoAuthorizableUpgradeable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract contract providing a meta-transaction compatible modifier for upgradeable or cloneable contracts to authorize function calls through an associated DAO.\\n/// @dev Make sure to call `__DaoAuthorizableUpgradeable_init` during initialization of the inheriting contract.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract DaoAuthorizableUpgradeable is ContextUpgradeable {\\n /// @notice The associated DAO managing the permissions of inheriting contracts.\\n IDAO private dao_;\\n\\n /// @notice Initializes the contract by setting the associated DAO.\\n /// @param _dao The associated DAO address.\\n // solhint-disable-next-line func-name-mixedcase\\n function __DaoAuthorizableUpgradeable_init(IDAO _dao) internal onlyInitializing {\\n dao_ = _dao;\\n }\\n\\n /// @notice Returns the DAO contract.\\n /// @return The DAO contract.\\n function dao() public view returns (IDAO) {\\n return dao_;\\n }\\n\\n /// @notice A modifier to make functions on inheriting contracts authorized. Permissions to call the function are checked through the associated DAO's permission manager.\\n /// @param _permissionId The permission identifier required to call the method this modifier is applied to.\\n modifier auth(bytes32 _permissionId) {\\n _auth(dao_, address(this), _msgSender(), _permissionId, _msgData());\\n _;\\n }\\n\\n /// @notice This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain (see [OpenZeppelin's guide about storage gaps](https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps)).\\n uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0x7fac6b01b037ba1cb9d6a22d3f43b0785037dcf496ffb672434d9bf7227d2585\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/auth.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice Thrown if a call is unauthorized in the associated DAO.\\n/// @param dao The associated DAO.\\n/// @param where The context in which the authorization reverted.\\n/// @param who The address (EOA or contract) missing the permission.\\n/// @param permissionId The permission identifier.\\nerror DaoUnauthorized(address dao, address where, address who, bytes32 permissionId);\\n\\n/// @notice A free function checking if a caller is granted permissions on a target contract via a permission identifier that redirects the approval to a `PermissionCondition` if this was specified in the setup.\\n/// @param _where The address of the target contract for which `who` receives permission.\\n/// @param _who The address (EOA or contract) owning the permission.\\n/// @param _permissionId The permission identifier.\\n/// @param _data The optional data passed to the `PermissionCondition` registered.\\n/// @custom:security-contact sirt@aragon.org\\nfunction _auth(\\n IDAO _dao,\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes calldata _data\\n) view {\\n if (!_dao.hasPermission(_where, _who, _permissionId, _data))\\n revert DaoUnauthorized({\\n dao: address(_dao),\\n where: _where,\\n who: _who,\\n permissionId: _permissionId\\n });\\n}\\n\",\"keccak256\":\"0x878764b4f87fe0651fb3798fb9cb87c952f8c6caf6ae79c7f09de84df6c00298\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/IPlugin.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IPlugin\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the traits of a plugin.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IPlugin {\\n enum PluginType {\\n UUPS,\\n Cloneable,\\n Constructable\\n }\\n\\n /// @notice Returns the plugin's type\\n function pluginType() external view returns (PluginType);\\n}\\n\",\"keccak256\":\"0xc57cd0d10b6380ab7f54c713a509e88fd8f4ad9288313a0e8e12b8887817ddfe\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/PluginCloneable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ERC165Upgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\\\";\\n\\nimport {IProtocolVersion} from \\\"../utils/versioning/IProtocolVersion.sol\\\";\\nimport {ProtocolVersion} from \\\"../utils/versioning/ProtocolVersion.sol\\\";\\nimport {DaoAuthorizableUpgradeable} from \\\"../permission/auth/DaoAuthorizableUpgradeable.sol\\\";\\nimport {IDAO} from \\\"../dao/IDAO.sol\\\";\\nimport {IPlugin} from \\\"./IPlugin.sol\\\";\\n\\n/// @title PluginCloneable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract, non-upgradeable contract to inherit from when creating a plugin being deployed via the minimal clones pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)).\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract PluginCloneable is\\n IPlugin,\\n ERC165Upgradeable,\\n DaoAuthorizableUpgradeable,\\n ProtocolVersion\\n{\\n address public target;\\n\\n /// @dev Emitted each time the Target is set.\\n event TargetSet(address indexed previousTarget, address indexed newTarget);\\n\\n /// @notice Disables the initializers on the implementation contract to prevent it from being left uninitialized.\\n /// @custom:oz-upgrades-unsafe-allow constructor\\n constructor() {\\n _disableInitializers();\\n }\\n\\n /// @notice Initializes the plugin by storing the associated DAO.\\n /// @param _dao The DAO contract.\\n // solhint-disable-next-line func-name-mixedcase\\n function __PluginCloneable_init(IDAO _dao) internal virtual onlyInitializing {\\n __DaoAuthorizableUpgradeable_init(_dao);\\n }\\n\\n /// @dev Sets the target to a new target (`newTarget`).\\n /// @notice Can only be called by the current owner. TODO\\n function setTarget(address _target) public {\\n address previousTarget = target;\\n target = _target;\\n emit TargetSet(previousTarget, _target);\\n }\\n\\n /// @inheritdoc IPlugin\\n function pluginType() public pure override returns (PluginType) {\\n return PluginType.Cloneable;\\n }\\n\\n /// @notice Checks if this or the parent contract supports an interface by its ID.\\n /// @param _interfaceId The ID of the interface.\\n /// @return Returns `true` if the interface is supported.\\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\\n return\\n _interfaceId == type(IPlugin).interfaceId ||\\n _interfaceId == type(IProtocolVersion).interfaceId ||\\n super.supportsInterface(_interfaceId);\\n }\\n\\n /// @notice Forwards the actions to the currently set `target` for the execution.\\n /// @param _callId Identifier for this execution.\\n /// @param _actions actions that will be eventually called.\\n /// @param _allowFailureMap Bitmap-encoded number. TODO:\\n /// @return execResults address of the implementation contract.\\n /// @return failureMap address of the implementation contract.\\n function _execute(\\n bytes32 _callId,\\n IDAO.Action[] calldata _actions,\\n uint256 _allowFailureMap\\n ) internal virtual returns (bytes[] memory execResults, uint256 failureMap) {\\n (execResults, failureMap) = IDAO(target).execute(_callId, _actions, _allowFailureMap);\\n }\\n\\n /// @notice Forwards the actions to the `target` for the execution.\\n /// @param _target Forwards the actions to the specific target.\\n /// @param _callId Identifier for this execution.\\n /// @param _actions actions that will be eventually called.\\n /// @param _allowFailureMap Bitmap-encoded number. TODO:\\n /// @return execResults address of the implementation contract.\\n /// @return failureMap address of the implementation contract.\\n function _execute(\\n address _target,\\n bytes32 _callId,\\n IDAO.Action[] calldata _actions,\\n uint256 _allowFailureMap\\n ) internal virtual returns (bytes[] memory execResults, uint256 failureMap) {\\n (execResults, failureMap) = IDAO(_target).execute(_callId, _actions, _allowFailureMap);\\n }\\n}\\n\",\"keccak256\":\"0x23fff653e79f6d079073bab2f878051cf85c8e3cfa7ef359f3be92fc65ca2501\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/IProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IProtocolVersion\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the semantic Aragon OSx protocol version number.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IProtocolVersion {\\n /// @notice Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\\n /// @return _version Returns the semantic Aragon OSx protocol version number.\\n /// @dev This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\\n function protocolVersion() external view returns (uint8[3] memory _version);\\n}\\n\",\"keccak256\":\"0x00a4da654d21dc1bdadbdc8bd54bb86c378c56f85e461ccc31303628ea621361\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/ProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IProtocolVersion} from \\\"./IProtocolVersion.sol\\\";\\n\\n/// @title ProtocolVersion\\n/// @author Aragon X - 2023\\n/// @notice An abstract, stateless, non-upgradeable contract providing the current Aragon OSx protocol version number.\\n/// @dev Do not add any new variables to this contract that would shift down storage in the inheritance chain.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract ProtocolVersion is IProtocolVersion {\\n // IMPORTANT: Do not add any storage variable, see the above notice.\\n\\n /// @inheritdoc IProtocolVersion\\n function protocolVersion() public pure returns (uint8[3] memory) {\\n return [1, 4, 0];\\n }\\n}\\n\",\"keccak256\":\"0x3975c937be935f687c6b6b8f379071232681e98cf04b175d72781b819ea52bdb\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[{"astId":372,"contract":"src/mocks/plugin/PluginCloneableMock.sol:PluginCloneableMockBad","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":375,"contract":"src/mocks/plugin/PluginCloneableMock.sol:PluginCloneableMockBad","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":1280,"contract":"src/mocks/plugin/PluginCloneableMock.sol:PluginCloneableMockBad","label":"__gap","offset":0,"slot":"1","type":"t_array(t_uint256)50_storage"},{"astId":1051,"contract":"src/mocks/plugin/PluginCloneableMock.sol:PluginCloneableMockBad","label":"__gap","offset":0,"slot":"51","type":"t_array(t_uint256)50_storage"},{"astId":3887,"contract":"src/mocks/plugin/PluginCloneableMock.sol:PluginCloneableMockBad","label":"dao_","offset":0,"slot":"101","type":"t_contract(IDAO)2538"},{"astId":3936,"contract":"src/mocks/plugin/PluginCloneableMock.sol:PluginCloneableMockBad","label":"__gap","offset":0,"slot":"102","type":"t_array(t_uint256)49_storage"},{"astId":4196,"contract":"src/mocks/plugin/PluginCloneableMock.sol:PluginCloneableMockBad","label":"target","offset":0,"slot":"151","type":"t_address"},{"astId":2601,"contract":"src/mocks/plugin/PluginCloneableMock.sol:PluginCloneableMockBad","label":"state1","offset":0,"slot":"152","type":"t_uint256"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_array(t_uint256)49_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[49]","numberOfBytes":"1568"},"t_array(t_uint256)50_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[50]","numberOfBytes":"1600"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_contract(IDAO)2538":{"encoding":"inplace","label":"contract IDAO","numberOfBytes":"20"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"kind":"user","methods":{"dao()":{"notice":"Returns the DAO contract."},"pluginType()":{"notice":"Returns the plugin's type"},"protocolVersion()":{"notice":"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with."},"setTarget(address)":{"notice":"Can only be called by the current owner. TODO"},"supportsInterface(bytes4)":{"notice":"Checks if this or the parent contract supports an interface by its ID."}},"notice":"A mock cloneable plugin missing an initializer function.","version":1}},"PluginCloneableMockBuild1":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousTarget","type":"address"},{"indexed":true,"internalType":"address","name":"newTarget","type":"address"}],"name":"TargetSet","type":"event"},{"inputs":[],"name":"dao","outputs":[{"internalType":"contract IDAO","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IDAO","name":"_dao","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pluginType","outputs":[{"internalType":"enum IPlugin.PluginType","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"protocolVersion","outputs":[{"internalType":"uint8[3]","name":"","type":"uint8[3]"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_target","type":"address"}],"name":"setTarget","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"state1","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"target","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"DO NOT USE IN PRODUCTION!","kind":"dev","methods":{"dao()":{"returns":{"_0":"The DAO contract."}},"protocolVersion()":{"details":"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.","returns":{"_0":"Returns the semantic Aragon OSx protocol version number."}},"setTarget(address)":{"details":"Sets the target to a new target (`newTarget`)."},"supportsInterface(bytes4)":{"params":{"_interfaceId":"The ID of the interface."},"returns":{"_0":"Returns `true` if the interface is supported."}}},"version":1},"evm":{"bytecode":{"functionDebugData":{"@_4211":{"entryPoint":null,"id":4211,"parameterSlots":0,"returnSlots":0},"@_disableInitializers_515":{"entryPoint":30,"id":515,"parameterSlots":0,"returnSlots":0},"abi_encode_tuple_t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:608:50","statements":[{"nodeType":"YulBlock","src":"6:3:50","statements":[]},{"body":{"nodeType":"YulBlock","src":"188:229:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"205:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"216:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"198:6:50"},"nodeType":"YulFunctionCall","src":"198:21:50"},"nodeType":"YulExpressionStatement","src":"198:21:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"239:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"250:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"235:3:50"},"nodeType":"YulFunctionCall","src":"235:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"255:2:50","type":"","value":"39"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"228:6:50"},"nodeType":"YulFunctionCall","src":"228:30:50"},"nodeType":"YulExpressionStatement","src":"228:30:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"278:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"289:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"274:3:50"},"nodeType":"YulFunctionCall","src":"274:18:50"},{"hexValue":"496e697469616c697a61626c653a20636f6e747261637420697320696e697469","kind":"string","nodeType":"YulLiteral","src":"294:34:50","type":"","value":"Initializable: contract is initi"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"267:6:50"},"nodeType":"YulFunctionCall","src":"267:62:50"},"nodeType":"YulExpressionStatement","src":"267:62:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"349:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"360:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"345:3:50"},"nodeType":"YulFunctionCall","src":"345:18:50"},{"hexValue":"616c697a696e67","kind":"string","nodeType":"YulLiteral","src":"365:9:50","type":"","value":"alizing"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"338:6:50"},"nodeType":"YulFunctionCall","src":"338:37:50"},"nodeType":"YulExpressionStatement","src":"338:37:50"},{"nodeType":"YulAssignment","src":"384:27:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"396:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"407:3:50","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"392:3:50"},"nodeType":"YulFunctionCall","src":"392:19:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"384:4:50"}]}]},"name":"abi_encode_tuple_t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"165:9:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"179:4:50","type":""}],"src":"14:403:50"},{"body":{"nodeType":"YulBlock","src":"519:87:50","statements":[{"nodeType":"YulAssignment","src":"529:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"541:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"552:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"537:3:50"},"nodeType":"YulFunctionCall","src":"537:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"529:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"571:9:50"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"586:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"594:4:50","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"582:3:50"},"nodeType":"YulFunctionCall","src":"582:17:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"564:6:50"},"nodeType":"YulFunctionCall","src":"564:36:50"},"nodeType":"YulExpressionStatement","src":"564:36:50"}]},"name":"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"488:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"499:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"510:4:50","type":""}],"src":"422:184:50"}]},"contents":"{\n { }\n function abi_encode_tuple_t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 39)\n mstore(add(headStart, 64), \"Initializable: contract is initi\")\n mstore(add(headStart, 96), \"alizing\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xff))\n }\n}","id":50,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"608060405234801561001057600080fd5b5061001961001e565b6100dd565b600054610100900460ff161561008a5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116146100db576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b610551806100ec6000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c80636accab8c1161005b5780636accab8c146100fe578063776d1a0114610115578063c4d66de81461012a578063d4b839921461013d57600080fd5b806301ffc9a71461008d5780632ae9c600146100b55780634162169f146100ca57806341de6830146100ef575b600080fd5b6100a061009b366004610485565b610150565b60405190151581526020015b60405180910390f35b6100bd6101a1565b6040516100ac91906104b6565b6065546001600160a01b03165b6040516001600160a01b0390911681526020016100ac565b60016040516100ac91906104ea565b61010760985481565b6040519081526020016100ac565b610128610123366004610527565b6101cb565b005b610128610138366004610527565b61022a565b6097546100d7906001600160a01b031681565b60006001600160e01b0319821663041de68360e41b148061018057506001600160e01b03198216621574e360e91b145b8061019b57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6101a9610467565b5060408051606081018252600181526004602082015260009181019190915290565b609780546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d690600090a35050565b600054610100900460ff161580801561024a5750600054600160ff909116105b806102645750303b158015610264575060005460ff166001145b6102db5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b6000805460ff1916600117905580156102fe576000805461ff0019166101001790555b61030782610356565b60016098558015610352576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b600054610100900460ff166103c15760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016102d2565b6103ca816103cd565b50565b600054610100900460ff166104385760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016102d2565b6065805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b60405180606001604052806003906020820280368337509192915050565b60006020828403121561049757600080fd5b81356001600160e01b0319811681146104af57600080fd5b9392505050565b60608101818360005b60038110156104e157815160ff168352602092830192909101906001016104bf565b50505092915050565b602081016003831061050c57634e487b7160e01b600052602160045260246000fd5b91905290565b6001600160a01b03811681146103ca57600080fd5b60006020828403121561053957600080fd5b81356104af8161051256fea164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x19 PUSH2 0x1E JUMP JUMPDEST PUSH2 0xDD JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x8A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x27 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320696E697469 PUSH1 0x44 DUP3 ADD MSTORE PUSH7 0x616C697A696E67 PUSH1 0xC8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xFF SWAP1 DUP2 AND EQ PUSH2 0xDB JUMPI PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST JUMP JUMPDEST PUSH2 0x551 DUP1 PUSH2 0xEC PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x88 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6ACCAB8C GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x6ACCAB8C EQ PUSH2 0xFE JUMPI DUP1 PUSH4 0x776D1A01 EQ PUSH2 0x115 JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0x12A JUMPI DUP1 PUSH4 0xD4B83992 EQ PUSH2 0x13D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x8D JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0xB5 JUMPI DUP1 PUSH4 0x4162169F EQ PUSH2 0xCA JUMPI DUP1 PUSH4 0x41DE6830 EQ PUSH2 0xEF JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA0 PUSH2 0x9B CALLDATASIZE PUSH1 0x4 PUSH2 0x485 JUMP JUMPDEST PUSH2 0x150 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xBD PUSH2 0x1A1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xAC SWAP2 SWAP1 PUSH2 0x4B6 JUMP JUMPDEST PUSH1 0x65 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xAC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x40 MLOAD PUSH2 0xAC SWAP2 SWAP1 PUSH2 0x4EA JUMP JUMPDEST PUSH2 0x107 PUSH1 0x98 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xAC JUMP JUMPDEST PUSH2 0x128 PUSH2 0x123 CALLDATASIZE PUSH1 0x4 PUSH2 0x527 JUMP JUMPDEST PUSH2 0x1CB JUMP JUMPDEST STOP JUMPDEST PUSH2 0x128 PUSH2 0x138 CALLDATASIZE PUSH1 0x4 PUSH2 0x527 JUMP JUMPDEST PUSH2 0x22A JUMP JUMPDEST PUSH1 0x97 SLOAD PUSH2 0xD7 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x41DE683 PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x180 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x19B JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1A9 PUSH2 0x467 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x97 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP2 SWAP1 DUP3 SWAP1 PUSH32 0x90CC2F570A6EB594B1580EA3E41247D2D73A55281889E86BD4EC2FC29C7E62D6 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 DUP1 ISZERO PUSH2 0x24A JUMPI POP PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xFF SWAP1 SWAP2 AND LT JUMPDEST DUP1 PUSH2 0x264 JUMPI POP ADDRESS EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x264 JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF AND PUSH1 0x1 EQ JUMPDEST PUSH2 0x2DB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x647920696E697469616C697A6564000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE DUP1 ISZERO PUSH2 0x2FE JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND PUSH2 0x100 OR SWAP1 SSTORE JUMPDEST PUSH2 0x307 DUP3 PUSH2 0x356 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x98 SSTORE DUP1 ISZERO PUSH2 0x352 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x3C1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x2D2 JUMP JUMPDEST PUSH2 0x3CA DUP2 PUSH2 0x3CD JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x438 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x2D2 JUMP JUMPDEST PUSH1 0x65 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x497 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x4AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0x4E1 JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x4BF JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH1 0x3 DUP4 LT PUSH2 0x50C JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 SWAP1 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x3CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x539 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x4AF DUP2 PUSH2 0x512 JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"371:207:26:-:0;;;;;;;;;;;;-1:-1:-1;1290:22:39;:20;:22::i;:::-;371:207:26;;5939:280:4;6007:13;;;;;;;6006:14;5998:66;;;;-1:-1:-1;;;5998:66:4;;216:2:50;5998:66:4;;;198:21:50;255:2;235:18;;;228:30;294:34;274:18;;;267:62;-1:-1:-1;;;345:18:50;;;338:37;392:19;;5998:66:4;;;;;;;;6078:12;;6094:15;6078:12;;;:31;6074:139;;6125:12;:30;;-1:-1:-1;;6125:30:4;6140:15;6125:30;;;;;;6174:28;;564:36:50;;;6174:28:4;;552:2:50;537:18;6174:28:4;;;;;;;6074:139;5939:280::o;422:184:50:-;371:207:26;;;;;;"},"deployedBytecode":{"functionDebugData":{"@__DaoAuthorizableUpgradeable_init_3901":{"entryPoint":973,"id":3901,"parameterSlots":1,"returnSlots":0},"@__PluginCloneable_init_4225":{"entryPoint":854,"id":4225,"parameterSlots":1,"returnSlots":0},"@dao_3911":{"entryPoint":null,"id":3911,"parameterSlots":0,"returnSlots":1},"@initialize_2566":{"entryPoint":554,"id":2566,"parameterSlots":1,"returnSlots":0},"@isContract_689":{"entryPoint":null,"id":689,"parameterSlots":1,"returnSlots":1},"@pluginType_4257":{"entryPoint":null,"id":4257,"parameterSlots":0,"returnSlots":1},"@protocolVersion_5135":{"entryPoint":417,"id":5135,"parameterSlots":0,"returnSlots":1},"@setTarget_4245":{"entryPoint":459,"id":4245,"parameterSlots":1,"returnSlots":0},"@state1_2549":{"entryPoint":null,"id":2549,"parameterSlots":0,"returnSlots":0},"@supportsInterface_1275":{"entryPoint":null,"id":1275,"parameterSlots":1,"returnSlots":1},"@supportsInterface_4286":{"entryPoint":336,"id":4286,"parameterSlots":1,"returnSlots":1},"@target_4196":{"entryPoint":null,"id":4196,"parameterSlots":0,"returnSlots":0},"abi_decode_tuple_t_address":{"entryPoint":1319,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes4":{"entryPoint":1157,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_contract$_IDAO_$2538":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed":{"entryPoint":1206,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_contract$_IDAO_$2538__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_enum$_PluginType_$3994__to_t_uint8__fromStack_reversed":{"entryPoint":1258,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_rational_1_by_1__to_t_uint8__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"validator_revert_address":{"entryPoint":1298,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:3707:50","statements":[{"nodeType":"YulBlock","src":"6:3:50","statements":[]},{"body":{"nodeType":"YulBlock","src":"83:217:50","statements":[{"body":{"nodeType":"YulBlock","src":"129:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"138:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"141:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"131:6:50"},"nodeType":"YulFunctionCall","src":"131:12:50"},"nodeType":"YulExpressionStatement","src":"131:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"104:7:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"113:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"100:3:50"},"nodeType":"YulFunctionCall","src":"100:23:50"},{"kind":"number","nodeType":"YulLiteral","src":"125:2:50","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"96:3:50"},"nodeType":"YulFunctionCall","src":"96:32:50"},"nodeType":"YulIf","src":"93:52:50"},{"nodeType":"YulVariableDeclaration","src":"154:36:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"180:9:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"167:12:50"},"nodeType":"YulFunctionCall","src":"167:23:50"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"158:5:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"254:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"263:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"266:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"256:6:50"},"nodeType":"YulFunctionCall","src":"256:12:50"},"nodeType":"YulExpressionStatement","src":"256:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"212:5:50"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"223:5:50"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"234:3:50","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"239:10:50","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"230:3:50"},"nodeType":"YulFunctionCall","src":"230:20:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"219:3:50"},"nodeType":"YulFunctionCall","src":"219:32:50"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"209:2:50"},"nodeType":"YulFunctionCall","src":"209:43:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"202:6:50"},"nodeType":"YulFunctionCall","src":"202:51:50"},"nodeType":"YulIf","src":"199:71:50"},{"nodeType":"YulAssignment","src":"279:15:50","value":{"name":"value","nodeType":"YulIdentifier","src":"289:5:50"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"279:6:50"}]}]},"name":"abi_decode_tuple_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"49:9:50","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"60:7:50","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"72:6:50","type":""}],"src":"14:286:50"},{"body":{"nodeType":"YulBlock","src":"400:92:50","statements":[{"nodeType":"YulAssignment","src":"410:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"422:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"433:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"418:3:50"},"nodeType":"YulFunctionCall","src":"418:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"410:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"452:9:50"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"477:6:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"470:6:50"},"nodeType":"YulFunctionCall","src":"470:14:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"463:6:50"},"nodeType":"YulFunctionCall","src":"463:22:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"445:6:50"},"nodeType":"YulFunctionCall","src":"445:41:50"},"nodeType":"YulExpressionStatement","src":"445:41:50"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"369:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"380:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"391:4:50","type":""}],"src":"305:187:50"},{"body":{"nodeType":"YulBlock","src":"640:358:50","statements":[{"nodeType":"YulAssignment","src":"650:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"662:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"673:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"658:3:50"},"nodeType":"YulFunctionCall","src":"658:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"650:4:50"}]},{"nodeType":"YulVariableDeclaration","src":"685:20:50","value":{"name":"headStart","nodeType":"YulIdentifier","src":"696:9:50"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"689:3:50","type":""}]},{"nodeType":"YulAssignment","src":"714:16:50","value":{"name":"headStart","nodeType":"YulIdentifier","src":"721:9:50"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"714:3:50"}]},{"nodeType":"YulVariableDeclaration","src":"739:20:50","value":{"name":"value0","nodeType":"YulIdentifier","src":"753:6:50"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"743:6:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"768:10:50","value":{"kind":"number","nodeType":"YulLiteral","src":"777:1:50","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"772:1:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"834:158:50","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"855:3:50"},{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"870:6:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"864:5:50"},"nodeType":"YulFunctionCall","src":"864:13:50"},{"kind":"number","nodeType":"YulLiteral","src":"879:4:50","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"860:3:50"},"nodeType":"YulFunctionCall","src":"860:24:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"848:6:50"},"nodeType":"YulFunctionCall","src":"848:37:50"},"nodeType":"YulExpressionStatement","src":"848:37:50"},{"nodeType":"YulVariableDeclaration","src":"898:14:50","value":{"kind":"number","nodeType":"YulLiteral","src":"908:4:50","type":"","value":"0x20"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"902:2:50","type":""}]},{"nodeType":"YulAssignment","src":"925:19:50","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"936:3:50"},{"name":"_1","nodeType":"YulIdentifier","src":"941:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"932:3:50"},"nodeType":"YulFunctionCall","src":"932:12:50"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"925:3:50"}]},{"nodeType":"YulAssignment","src":"957:25:50","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"971:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"979:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"967:3:50"},"nodeType":"YulFunctionCall","src":"967:15:50"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"957:6:50"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"798:1:50"},{"kind":"number","nodeType":"YulLiteral","src":"801:4:50","type":"","value":"0x03"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"795:2:50"},"nodeType":"YulFunctionCall","src":"795:11:50"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"807:18:50","statements":[{"nodeType":"YulAssignment","src":"809:14:50","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"818:1:50"},{"kind":"number","nodeType":"YulLiteral","src":"821:1:50","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"814:3:50"},"nodeType":"YulFunctionCall","src":"814:9:50"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"809:1:50"}]}]},"pre":{"nodeType":"YulBlock","src":"791:3:50","statements":[]},"src":"787:205:50"}]},"name":"abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"609:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"620:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"631:4:50","type":""}],"src":"497:501:50"},{"body":{"nodeType":"YulBlock","src":"1117:125:50","statements":[{"nodeType":"YulAssignment","src":"1127:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1139:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"1150:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1135:3:50"},"nodeType":"YulFunctionCall","src":"1135:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1127:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1169:9:50"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1184:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"1192:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1180:3:50"},"nodeType":"YulFunctionCall","src":"1180:55:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1162:6:50"},"nodeType":"YulFunctionCall","src":"1162:74:50"},"nodeType":"YulExpressionStatement","src":"1162:74:50"}]},"name":"abi_encode_tuple_t_contract$_IDAO_$2538__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1086:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1097:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1108:4:50","type":""}],"src":"1003:239:50"},{"body":{"nodeType":"YulBlock","src":"1361:229:50","statements":[{"nodeType":"YulAssignment","src":"1371:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1383:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"1394:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1379:3:50"},"nodeType":"YulFunctionCall","src":"1379:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1371:4:50"}]},{"body":{"nodeType":"YulBlock","src":"1439:111:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1460:1:50","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1467:3:50","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"1472:10:50","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1463:3:50"},"nodeType":"YulFunctionCall","src":"1463:20:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1453:6:50"},"nodeType":"YulFunctionCall","src":"1453:31:50"},"nodeType":"YulExpressionStatement","src":"1453:31:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1504:1:50","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"1507:4:50","type":"","value":"0x21"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1497:6:50"},"nodeType":"YulFunctionCall","src":"1497:15:50"},"nodeType":"YulExpressionStatement","src":"1497:15:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1532:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1535:4:50","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1525:6:50"},"nodeType":"YulFunctionCall","src":"1525:15:50"},"nodeType":"YulExpressionStatement","src":"1525:15:50"}]},"condition":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1419:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"1427:1:50","type":"","value":"3"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"1416:2:50"},"nodeType":"YulFunctionCall","src":"1416:13:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1409:6:50"},"nodeType":"YulFunctionCall","src":"1409:21:50"},"nodeType":"YulIf","src":"1406:144:50"},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1566:9:50"},{"name":"value0","nodeType":"YulIdentifier","src":"1577:6:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1559:6:50"},"nodeType":"YulFunctionCall","src":"1559:25:50"},"nodeType":"YulExpressionStatement","src":"1559:25:50"}]},"name":"abi_encode_tuple_t_enum$_PluginType_$3994__to_t_uint8__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1330:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1341:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1352:4:50","type":""}],"src":"1247:343:50"},{"body":{"nodeType":"YulBlock","src":"1696:76:50","statements":[{"nodeType":"YulAssignment","src":"1706:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1718:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"1729:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1714:3:50"},"nodeType":"YulFunctionCall","src":"1714:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1706:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1748:9:50"},{"name":"value0","nodeType":"YulIdentifier","src":"1759:6:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1741:6:50"},"nodeType":"YulFunctionCall","src":"1741:25:50"},"nodeType":"YulExpressionStatement","src":"1741:25:50"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1665:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1676:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1687:4:50","type":""}],"src":"1595:177:50"},{"body":{"nodeType":"YulBlock","src":"1822:109:50","statements":[{"body":{"nodeType":"YulBlock","src":"1909:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1918:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1921:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1911:6:50"},"nodeType":"YulFunctionCall","src":"1911:12:50"},"nodeType":"YulExpressionStatement","src":"1911:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1845:5:50"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1856:5:50"},{"kind":"number","nodeType":"YulLiteral","src":"1863:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1852:3:50"},"nodeType":"YulFunctionCall","src":"1852:54:50"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1842:2:50"},"nodeType":"YulFunctionCall","src":"1842:65:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1835:6:50"},"nodeType":"YulFunctionCall","src":"1835:73:50"},"nodeType":"YulIf","src":"1832:93:50"}]},"name":"validator_revert_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1811:5:50","type":""}],"src":"1777:154:50"},{"body":{"nodeType":"YulBlock","src":"2006:177:50","statements":[{"body":{"nodeType":"YulBlock","src":"2052:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2061:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2064:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2054:6:50"},"nodeType":"YulFunctionCall","src":"2054:12:50"},"nodeType":"YulExpressionStatement","src":"2054:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2027:7:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"2036:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2023:3:50"},"nodeType":"YulFunctionCall","src":"2023:23:50"},{"kind":"number","nodeType":"YulLiteral","src":"2048:2:50","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2019:3:50"},"nodeType":"YulFunctionCall","src":"2019:32:50"},"nodeType":"YulIf","src":"2016:52:50"},{"nodeType":"YulVariableDeclaration","src":"2077:36:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2103:9:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2090:12:50"},"nodeType":"YulFunctionCall","src":"2090:23:50"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"2081:5:50","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2147:5:50"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"2122:24:50"},"nodeType":"YulFunctionCall","src":"2122:31:50"},"nodeType":"YulExpressionStatement","src":"2122:31:50"},{"nodeType":"YulAssignment","src":"2162:15:50","value":{"name":"value","nodeType":"YulIdentifier","src":"2172:5:50"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2162:6:50"}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1972:9:50","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1983:7:50","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1995:6:50","type":""}],"src":"1936:247:50"},{"body":{"nodeType":"YulBlock","src":"2271:177:50","statements":[{"body":{"nodeType":"YulBlock","src":"2317:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2326:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2329:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2319:6:50"},"nodeType":"YulFunctionCall","src":"2319:12:50"},"nodeType":"YulExpressionStatement","src":"2319:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2292:7:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"2301:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2288:3:50"},"nodeType":"YulFunctionCall","src":"2288:23:50"},{"kind":"number","nodeType":"YulLiteral","src":"2313:2:50","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2284:3:50"},"nodeType":"YulFunctionCall","src":"2284:32:50"},"nodeType":"YulIf","src":"2281:52:50"},{"nodeType":"YulVariableDeclaration","src":"2342:36:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2368:9:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2355:12:50"},"nodeType":"YulFunctionCall","src":"2355:23:50"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"2346:5:50","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2412:5:50"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"2387:24:50"},"nodeType":"YulFunctionCall","src":"2387:31:50"},"nodeType":"YulExpressionStatement","src":"2387:31:50"},{"nodeType":"YulAssignment","src":"2427:15:50","value":{"name":"value","nodeType":"YulIdentifier","src":"2437:5:50"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2427:6:50"}]}]},"name":"abi_decode_tuple_t_contract$_IDAO_$2538","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2237:9:50","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2248:7:50","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2260:6:50","type":""}],"src":"2188:260:50"},{"body":{"nodeType":"YulBlock","src":"2554:125:50","statements":[{"nodeType":"YulAssignment","src":"2564:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2576:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"2587:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2572:3:50"},"nodeType":"YulFunctionCall","src":"2572:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2564:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2606:9:50"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2621:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"2629:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2617:3:50"},"nodeType":"YulFunctionCall","src":"2617:55:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2599:6:50"},"nodeType":"YulFunctionCall","src":"2599:74:50"},"nodeType":"YulExpressionStatement","src":"2599:74:50"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2523:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"2534:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2545:4:50","type":""}],"src":"2453:226:50"},{"body":{"nodeType":"YulBlock","src":"2858:236:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2875:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"2886:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2868:6:50"},"nodeType":"YulFunctionCall","src":"2868:21:50"},"nodeType":"YulExpressionStatement","src":"2868:21:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2909:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"2920:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2905:3:50"},"nodeType":"YulFunctionCall","src":"2905:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"2925:2:50","type":"","value":"46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2898:6:50"},"nodeType":"YulFunctionCall","src":"2898:30:50"},"nodeType":"YulExpressionStatement","src":"2898:30:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2948:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"2959:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2944:3:50"},"nodeType":"YulFunctionCall","src":"2944:18:50"},{"hexValue":"496e697469616c697a61626c653a20636f6e747261637420697320616c726561","kind":"string","nodeType":"YulLiteral","src":"2964:34:50","type":"","value":"Initializable: contract is alrea"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2937:6:50"},"nodeType":"YulFunctionCall","src":"2937:62:50"},"nodeType":"YulExpressionStatement","src":"2937:62:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3019:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"3030:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3015:3:50"},"nodeType":"YulFunctionCall","src":"3015:18:50"},{"hexValue":"647920696e697469616c697a6564","kind":"string","nodeType":"YulLiteral","src":"3035:16:50","type":"","value":"dy initialized"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3008:6:50"},"nodeType":"YulFunctionCall","src":"3008:44:50"},"nodeType":"YulExpressionStatement","src":"3008:44:50"},{"nodeType":"YulAssignment","src":"3061:27:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3073:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"3084:3:50","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3069:3:50"},"nodeType":"YulFunctionCall","src":"3069:19:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3061:4:50"}]}]},"name":"abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2835:9:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2849:4:50","type":""}],"src":"2684:410:50"},{"body":{"nodeType":"YulBlock","src":"3206:87:50","statements":[{"nodeType":"YulAssignment","src":"3216:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3228:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"3239:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3224:3:50"},"nodeType":"YulFunctionCall","src":"3224:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3216:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3258:9:50"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3273:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"3281:4:50","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3269:3:50"},"nodeType":"YulFunctionCall","src":"3269:17:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3251:6:50"},"nodeType":"YulFunctionCall","src":"3251:36:50"},"nodeType":"YulExpressionStatement","src":"3251:36:50"}]},"name":"abi_encode_tuple_t_rational_1_by_1__to_t_uint8__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3175:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3186:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3197:4:50","type":""}],"src":"3099:194:50"},{"body":{"nodeType":"YulBlock","src":"3472:233:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3489:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"3500:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3482:6:50"},"nodeType":"YulFunctionCall","src":"3482:21:50"},"nodeType":"YulExpressionStatement","src":"3482:21:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3523:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"3534:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3519:3:50"},"nodeType":"YulFunctionCall","src":"3519:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"3539:2:50","type":"","value":"43"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3512:6:50"},"nodeType":"YulFunctionCall","src":"3512:30:50"},"nodeType":"YulExpressionStatement","src":"3512:30:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3562:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"3573:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3558:3:50"},"nodeType":"YulFunctionCall","src":"3558:18:50"},{"hexValue":"496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069","kind":"string","nodeType":"YulLiteral","src":"3578:34:50","type":"","value":"Initializable: contract is not i"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3551:6:50"},"nodeType":"YulFunctionCall","src":"3551:62:50"},"nodeType":"YulExpressionStatement","src":"3551:62:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3633:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"3644:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3629:3:50"},"nodeType":"YulFunctionCall","src":"3629:18:50"},{"hexValue":"6e697469616c697a696e67","kind":"string","nodeType":"YulLiteral","src":"3649:13:50","type":"","value":"nitializing"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3622:6:50"},"nodeType":"YulFunctionCall","src":"3622:41:50"},"nodeType":"YulExpressionStatement","src":"3622:41:50"},{"nodeType":"YulAssignment","src":"3672:27:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3684:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"3695:3:50","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3680:3:50"},"nodeType":"YulFunctionCall","src":"3680:19:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3672:4:50"}]}]},"name":"abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3449:9:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3463:4:50","type":""}],"src":"3298:407:50"}]},"contents":"{\n { }\n function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n if iszero(eq(value, and(value, shl(224, 0xffffffff)))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 96)\n let pos := headStart\n pos := headStart\n let srcPtr := value0\n let i := 0\n for { } lt(i, 0x03) { i := add(i, 1) }\n {\n mstore(pos, and(mload(srcPtr), 0xff))\n let _1 := 0x20\n pos := add(pos, _1)\n srcPtr := add(srcPtr, _1)\n }\n }\n function abi_encode_tuple_t_contract$_IDAO_$2538__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_encode_tuple_t_enum$_PluginType_$3994__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n if iszero(lt(value0, 3))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x21)\n revert(0, 0x24)\n }\n mstore(headStart, value0)\n }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function validator_revert_address(value)\n {\n if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n }\n function abi_decode_tuple_t_contract$_IDAO_$2538(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 46)\n mstore(add(headStart, 64), \"Initializable: contract is alrea\")\n mstore(add(headStart, 96), \"dy initialized\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_rational_1_by_1__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xff))\n }\n function abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 43)\n mstore(add(headStart, 64), \"Initializable: contract is not i\")\n mstore(add(headStart, 96), \"nitializing\")\n tail := add(headStart, 128)\n }\n}","id":50,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100885760003560e01c80636accab8c1161005b5780636accab8c146100fe578063776d1a0114610115578063c4d66de81461012a578063d4b839921461013d57600080fd5b806301ffc9a71461008d5780632ae9c600146100b55780634162169f146100ca57806341de6830146100ef575b600080fd5b6100a061009b366004610485565b610150565b60405190151581526020015b60405180910390f35b6100bd6101a1565b6040516100ac91906104b6565b6065546001600160a01b03165b6040516001600160a01b0390911681526020016100ac565b60016040516100ac91906104ea565b61010760985481565b6040519081526020016100ac565b610128610123366004610527565b6101cb565b005b610128610138366004610527565b61022a565b6097546100d7906001600160a01b031681565b60006001600160e01b0319821663041de68360e41b148061018057506001600160e01b03198216621574e360e91b145b8061019b57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6101a9610467565b5060408051606081018252600181526004602082015260009181019190915290565b609780546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d690600090a35050565b600054610100900460ff161580801561024a5750600054600160ff909116105b806102645750303b158015610264575060005460ff166001145b6102db5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b6000805460ff1916600117905580156102fe576000805461ff0019166101001790555b61030782610356565b60016098558015610352576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b600054610100900460ff166103c15760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016102d2565b6103ca816103cd565b50565b600054610100900460ff166104385760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016102d2565b6065805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b60405180606001604052806003906020820280368337509192915050565b60006020828403121561049757600080fd5b81356001600160e01b0319811681146104af57600080fd5b9392505050565b60608101818360005b60038110156104e157815160ff168352602092830192909101906001016104bf565b50505092915050565b602081016003831061050c57634e487b7160e01b600052602160045260246000fd5b91905290565b6001600160a01b03811681146103ca57600080fd5b60006020828403121561053957600080fd5b81356104af8161051256fea164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x88 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6ACCAB8C GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x6ACCAB8C EQ PUSH2 0xFE JUMPI DUP1 PUSH4 0x776D1A01 EQ PUSH2 0x115 JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0x12A JUMPI DUP1 PUSH4 0xD4B83992 EQ PUSH2 0x13D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x8D JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0xB5 JUMPI DUP1 PUSH4 0x4162169F EQ PUSH2 0xCA JUMPI DUP1 PUSH4 0x41DE6830 EQ PUSH2 0xEF JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA0 PUSH2 0x9B CALLDATASIZE PUSH1 0x4 PUSH2 0x485 JUMP JUMPDEST PUSH2 0x150 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xBD PUSH2 0x1A1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xAC SWAP2 SWAP1 PUSH2 0x4B6 JUMP JUMPDEST PUSH1 0x65 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xAC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x40 MLOAD PUSH2 0xAC SWAP2 SWAP1 PUSH2 0x4EA JUMP JUMPDEST PUSH2 0x107 PUSH1 0x98 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xAC JUMP JUMPDEST PUSH2 0x128 PUSH2 0x123 CALLDATASIZE PUSH1 0x4 PUSH2 0x527 JUMP JUMPDEST PUSH2 0x1CB JUMP JUMPDEST STOP JUMPDEST PUSH2 0x128 PUSH2 0x138 CALLDATASIZE PUSH1 0x4 PUSH2 0x527 JUMP JUMPDEST PUSH2 0x22A JUMP JUMPDEST PUSH1 0x97 SLOAD PUSH2 0xD7 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x41DE683 PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x180 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x19B JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1A9 PUSH2 0x467 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x97 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP2 SWAP1 DUP3 SWAP1 PUSH32 0x90CC2F570A6EB594B1580EA3E41247D2D73A55281889E86BD4EC2FC29C7E62D6 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 DUP1 ISZERO PUSH2 0x24A JUMPI POP PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xFF SWAP1 SWAP2 AND LT JUMPDEST DUP1 PUSH2 0x264 JUMPI POP ADDRESS EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x264 JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF AND PUSH1 0x1 EQ JUMPDEST PUSH2 0x2DB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x647920696E697469616C697A6564000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE DUP1 ISZERO PUSH2 0x2FE JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND PUSH2 0x100 OR SWAP1 SSTORE JUMPDEST PUSH2 0x307 DUP3 PUSH2 0x356 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x98 SSTORE DUP1 ISZERO PUSH2 0x352 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x3C1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x2D2 JUMP JUMPDEST PUSH2 0x3CA DUP2 PUSH2 0x3CD JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x438 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x2D2 JUMP JUMPDEST PUSH1 0x65 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x497 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x4AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0x4E1 JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x4BF JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH1 0x3 DUP4 LT PUSH2 0x50C JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 SWAP1 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x3CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x539 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x4AF DUP2 PUSH2 0x512 JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"371:207:26:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2263:288:39;;;;;;:::i;:::-;;:::i;:::-;;;470:14:50;;463:22;445:41;;433:2;418:18;2263:288:39;;;;;;;;631:98:49;;;:::i;:::-;;;;;;;:::i;1200:70:35:-;1259:4;;-1:-1:-1;;;;;1259:4:35;1200:70;;;-1:-1:-1;;;;;1180:55:50;;;1162:74;;1150:2;1135:18;1200:70:35;1003:239:50;1947:108:39;2028:20;1947:108;;;;;;:::i;431:21:26:-;;;;;;;;;1741:25:50;;;1729:2;1714:18;431:21:26;1595:177:50;1747:166:39;;;;;;:::i;:::-;;:::i;:::-;;459:117:26;;;;;;:::i;:::-;;:::i;936:21:39:-;;;;;-1:-1:-1;;;;;936:21:39;;;2263:288;2349:4;-1:-1:-1;;;;;;2384:41:39;;-1:-1:-1;;;2384:41:39;;:107;;-1:-1:-1;;;;;;;2441:50:39;;-1:-1:-1;;;2441:50:39;2384:107;:160;;;-1:-1:-1;;;;;;;;;;1189:51:10;;;2507:37:39;2365:179;2263:288;-1:-1:-1;;2263:288:39:o;631:98:49:-;679:15;;:::i;:::-;-1:-1:-1;706:16:49;;;;;;;;714:1;706:16;;717:1;706:16;;;;-1:-1:-1;706:16:49;;;;;;;;631:98::o;1747:166:39:-;1825:6;;;-1:-1:-1;;;;;1841:16:39;;;-1:-1:-1;;1841:16:39;;;;;;;1872:34;;1825:6;;;1841:16;1825:6;;1872:34;;1800:22;;1872:34;1790:123;1747:166;:::o;459:117:26:-;3279:19:4;3302:13;;;;;;3301:14;;3347:34;;;;-1:-1:-1;3365:12:4;;3380:1;3365:12;;;;:16;3347:34;3346:108;;;-1:-1:-1;3426:4:4;1713:19:6;:23;;;3387:66:4;;-1:-1:-1;3436:12:4;;;;;:17;3387:66;3325:201;;;;-1:-1:-1;;;3325:201:4;;2886:2:50;3325:201:4;;;2868:21:50;2925:2;2905:18;;;2898:30;2964:34;2944:18;;;2937:62;3035:16;3015:18;;;3008:44;3069:19;;3325:201:4;;;;;;;;;3536:12;:16;;-1:-1:-1;;3536:16:4;3551:1;3536:16;;;3562:65;;;;3596:13;:20;;-1:-1:-1;;3596:20:4;;;;;3562:65;521:28:26::1;544:4;521:22;:28::i;:::-;568:1;559:6;:10:::0;3647:99:4;;;;3697:5;3681:21;;-1:-1:-1;;3681:21:4;;;3721:14;;-1:-1:-1;3251:36:50;;3721:14:4;;3239:2:50;3224:18;3721:14:4;;;;;;;3647:99;3269:483;459:117:26;:::o;1486:133:39:-;5374:13:4;;;;;;;5366:69;;;;-1:-1:-1;;;5366:69:4;;3500:2:50;5366:69:4;;;3482:21:50;3539:2;3519:18;;;3512:30;3578:34;3558:18;;;3551:62;-1:-1:-1;;;3629:18:50;;;3622:41;3680:19;;5366:69:4;3298:407:50;5366:69:4;1573:39:39::1;1607:4;1573:33;:39::i;:::-;1486:133:::0;:::o;1010:108:35:-;5374:13:4;;;;;;;5366:69;;;;-1:-1:-1;;;5366:69:4;;3500:2:50;5366:69:4;;;3482:21:50;3539:2;3519:18;;;3512:30;3578:34;3558:18;;;3551:62;-1:-1:-1;;;3629:18:50;;;3622:41;3680:19;;5366:69:4;3298:407:50;5366:69:4;1100:4:35::1;:11:::0;;-1:-1:-1;;1100:11:35::1;-1:-1:-1::0;;;;;1100:11:35;;;::::1;::::0;;;::::1;::::0;;1010:108::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:286:50:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:50;;209:43;;199:71;;266:1;263;256:12;199:71;289:5;14:286;-1:-1:-1;;;14:286:50:o;497:501::-;673:2;658:18;;662:9;753:6;631:4;787:205;801:4;798:1;795:11;787:205;;;864:13;;879:4;860:24;848:37;;908:4;932:12;;;;967:15;;;;821:1;814:9;787:205;;;791:3;;;497:501;;;;:::o;1247:343::-;1394:2;1379:18;;1427:1;1416:13;;1406:144;;1472:10;1467:3;1463:20;1460:1;1453:31;1507:4;1504:1;1497:15;1535:4;1532:1;1525:15;1406:144;1559:25;;;1247:343;:::o;1777:154::-;-1:-1:-1;;;;;1856:5:50;1852:54;1845:5;1842:65;1832:93;;1921:1;1918;1911:12;1936:247;1995:6;2048:2;2036:9;2027:7;2023:23;2019:32;2016:52;;;2064:1;2061;2054:12;2016:52;2103:9;2090:23;2122:31;2147:5;2122:31;:::i"},"gasEstimates":{"creation":{"codeDepositCost":"272200","executionCost":"29901","totalCost":"302101"},"external":{"dao()":"2365","initialize(address)":"infinite","pluginType()":"294","protocolVersion()":"infinite","setTarget(address)":"26112","state1()":"2295","supportsInterface(bytes4)":"482","target()":"2403"}},"methodIdentifiers":{"dao()":"4162169f","initialize(address)":"c4d66de8","pluginType()":"41de6830","protocolVersion()":"2ae9c600","setTarget(address)":"776d1a01","state1()":"6accab8c","supportsInterface(bytes4)":"01ffc9a7","target()":"d4b83992"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousTarget\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newTarget\",\"type\":\"address\"}],\"name\":\"TargetSet\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"dao\",\"outputs\":[{\"internalType\":\"contract IDAO\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IDAO\",\"name\":\"_dao\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pluginType\",\"outputs\":[{\"internalType\":\"enum IPlugin.PluginType\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"protocolVersion\",\"outputs\":[{\"internalType\":\"uint8[3]\",\"name\":\"\",\"type\":\"uint8[3]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_target\",\"type\":\"address\"}],\"name\":\"setTarget\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"state1\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"target\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"DO NOT USE IN PRODUCTION!\",\"kind\":\"dev\",\"methods\":{\"dao()\":{\"returns\":{\"_0\":\"The DAO contract.\"}},\"protocolVersion()\":{\"details\":\"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\",\"returns\":{\"_0\":\"Returns the semantic Aragon OSx protocol version number.\"}},\"setTarget(address)\":{\"details\":\"Sets the target to a new target (`newTarget`).\"},\"supportsInterface(bytes4)\":{\"params\":{\"_interfaceId\":\"The ID of the interface.\"},\"returns\":{\"_0\":\"Returns `true` if the interface is supported.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"dao()\":{\"notice\":\"Returns the DAO contract.\"},\"pluginType()\":{\"notice\":\"Returns the plugin's type\"},\"protocolVersion()\":{\"notice\":\"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\"},\"setTarget(address)\":{\"notice\":\"Can only be called by the current owner. TODO\"},\"supportsInterface(bytes4)\":{\"notice\":\"Checks if this or the parent contract supports an interface by its ID.\"}},\"notice\":\"A mock cloneable plugin to be deployed via the minimal proxy pattern. v1.1 (Release 1, Build 1)\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/mocks/plugin/PluginCloneableMock.sol\":\"PluginCloneableMockBuild1\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n function __Context_init() internal onlyInitializing {\\n }\\n\\n function __Context_init_unchained() internal onlyInitializing {\\n }\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n function _contextSuffixLength() internal view virtual returns (uint256) {\\n return 0;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x75097e35253e7fb282ee4d7f27a80eaacfa759923185bf17302a89cbc059c5ef\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165Upgradeable.sol\\\";\\nimport {Initializable} from \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165Upgradeable is Initializable, IERC165Upgradeable {\\n function __ERC165_init() internal onlyInitializing {\\n }\\n\\n function __ERC165_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165Upgradeable).interfaceId;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0xd90d7723512df65ae417adaf0801042940f0dabd60039ceeaffe34aa5b238da1\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165Upgradeable {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\"},\"src/dao/IDAO.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IDAO\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for DAOs within the Aragon App DAO framework.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IDAO {\\n /// @notice The action struct to be consumed by the DAO's `execute` function resulting in an external call.\\n /// @param to The address to call.\\n /// @param value The native token value to be sent with the call.\\n /// @param data The bytes-encoded function selector and calldata for the call.\\n struct Action {\\n address to;\\n uint256 value;\\n bytes data;\\n }\\n\\n /// @notice Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\\n /// @param _where The address of the contract.\\n /// @param _who The address of a EOA or contract to give the permissions.\\n /// @param _permissionId The permission identifier.\\n /// @param _data The optional data passed to the `PermissionCondition` registered.\\n /// @return Returns true if the address has permission, false if not.\\n function hasPermission(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes memory _data\\n ) external view returns (bool);\\n\\n /// @notice Updates the DAO metadata (e.g., an IPFS hash).\\n /// @param _metadata The IPFS hash of the new metadata object.\\n function setMetadata(bytes calldata _metadata) external;\\n\\n /// @notice Emitted when the DAO metadata is updated.\\n /// @param metadata The IPFS hash of the new metadata object.\\n event MetadataSet(bytes metadata);\\n\\n /// @notice Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted.\\n /// @param _callId The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce.\\n /// @param _actions The array of actions.\\n /// @param _allowFailureMap A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @return The array of results obtained from the executed actions in `bytes`.\\n /// @return The resulting failure map containing the actions have actually failed.\\n function execute(\\n bytes32 _callId,\\n Action[] memory _actions,\\n uint256 _allowFailureMap\\n ) external returns (bytes[] memory, uint256);\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param actor The address of the caller.\\n /// @param callId The ID of the call.\\n /// @param actions The array of actions executed.\\n /// @param allowFailureMap The allow failure map encoding which actions are allowed to fail.\\n /// @param failureMap The failure map encoding which actions have failed.\\n /// @param execResults The array with the results of the executed actions.\\n /// @dev The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce.\\n event Executed(\\n address indexed actor,\\n bytes32 callId,\\n Action[] actions,\\n uint256 allowFailureMap,\\n uint256 failureMap,\\n bytes[] execResults\\n );\\n\\n /// @notice Emitted when a standard callback is registered.\\n /// @param interfaceId The ID of the interface.\\n /// @param callbackSelector The selector of the callback function.\\n /// @param magicNumber The magic number to be registered for the callback function selector.\\n event StandardCallbackRegistered(\\n bytes4 interfaceId,\\n bytes4 callbackSelector,\\n bytes4 magicNumber\\n );\\n\\n /// @notice Deposits (native) tokens to the DAO contract with a reference string.\\n /// @param _token The address of the token or address(0) in case of the native token.\\n /// @param _amount The amount of tokens to deposit.\\n /// @param _reference The reference describing the deposit reason.\\n function deposit(address _token, uint256 _amount, string calldata _reference) external payable;\\n\\n /// @notice Emitted when a token deposit has been made to the DAO.\\n /// @param sender The address of the sender.\\n /// @param token The address of the deposited token.\\n /// @param amount The amount of tokens deposited.\\n /// @param _reference The reference describing the deposit reason.\\n event Deposited(\\n address indexed sender,\\n address indexed token,\\n uint256 amount,\\n string _reference\\n );\\n\\n /// @notice Emitted when a native token deposit has been made to the DAO.\\n /// @dev This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).\\n /// @param sender The address of the sender.\\n /// @param amount The amount of native tokens deposited.\\n event NativeTokenDeposited(address sender, uint256 amount);\\n\\n /// @notice Setter for the trusted forwarder verifying the meta transaction.\\n /// @param _trustedForwarder The trusted forwarder address.\\n function setTrustedForwarder(address _trustedForwarder) external;\\n\\n /// @notice Getter for the trusted forwarder verifying the meta transaction.\\n /// @return The trusted forwarder address.\\n function getTrustedForwarder() external view returns (address);\\n\\n /// @notice Emitted when a new TrustedForwarder is set on the DAO.\\n /// @param forwarder the new forwarder address.\\n event TrustedForwarderSet(address forwarder);\\n\\n /// @notice Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\\n /// @param _hash The hash of the data to be signed.\\n /// @param _signature The signature byte array associated with `_hash`.\\n /// @return Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not.\\n function isValidSignature(bytes32 _hash, bytes memory _signature) external returns (bytes4);\\n\\n /// @notice Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\\n /// @param _interfaceId The ID of the interface.\\n /// @param _callbackSelector The selector of the callback function.\\n /// @param _magicNumber The magic number to be registered for the function signature.\\n function registerStandardCallback(\\n bytes4 _interfaceId,\\n bytes4 _callbackSelector,\\n bytes4 _magicNumber\\n ) external;\\n\\n /// @notice Removed function being left here to not corrupt the IDAO interface ID. Any call will revert.\\n /// @dev Introduced in v1.0.0. Removed in v1.4.0.\\n function setSignatureValidator(address) external;\\n}\\n\",\"keccak256\":\"0xb7f615523c26de042edce98731c658f44a1edb2464387ac1b642c4c69f57128e\",\"license\":\"AGPL-3.0-or-later\"},\"src/mocks/plugin/PluginCloneableMock.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\n/* solhint-disable one-contract-per-file */\\npragma solidity ^0.8.8;\\n\\nimport {PluginCloneable} from \\\"../../plugin/PluginCloneable.sol\\\";\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice A mock cloneable plugin to be deployed via the minimal proxy pattern.\\n/// v1.1 (Release 1, Build 1)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginCloneableMockBuild1 is PluginCloneable {\\n uint256 public state1;\\n\\n function initialize(IDAO _dao) external initializer {\\n __PluginCloneable_init(_dao);\\n state1 = 1;\\n }\\n}\\n\\n/// @notice A mock cloneable plugin to be deployed via the minimal proxy pattern.\\n/// v1.1 (Release 1, Build 2)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginCloneableMockBuild2 is PluginCloneable {\\n uint256 public state1;\\n uint256 public state2;\\n\\n function initialize(IDAO _dao) external initializer {\\n __PluginCloneable_init(_dao);\\n state1 = 1;\\n state2 = 2;\\n }\\n}\\n\\n/// @notice A mock cloneable plugin missing an initializer function.\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginCloneableMockBad is PluginCloneable {\\n uint256 public state1;\\n\\n function notAnInitializer(IDAO _dao) external {\\n __PluginCloneable_init(_dao);\\n state1 = 1;\\n }\\n}\\n\",\"keccak256\":\"0x1bb271f7b553040fad7907e97b860aa833aec9aefe7477e00ba7bdfd80d84e98\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/DaoAuthorizableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ContextUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\\\";\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\nimport {_auth} from \\\"./auth.sol\\\";\\n\\n/// @title DaoAuthorizableUpgradeable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract contract providing a meta-transaction compatible modifier for upgradeable or cloneable contracts to authorize function calls through an associated DAO.\\n/// @dev Make sure to call `__DaoAuthorizableUpgradeable_init` during initialization of the inheriting contract.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract DaoAuthorizableUpgradeable is ContextUpgradeable {\\n /// @notice The associated DAO managing the permissions of inheriting contracts.\\n IDAO private dao_;\\n\\n /// @notice Initializes the contract by setting the associated DAO.\\n /// @param _dao The associated DAO address.\\n // solhint-disable-next-line func-name-mixedcase\\n function __DaoAuthorizableUpgradeable_init(IDAO _dao) internal onlyInitializing {\\n dao_ = _dao;\\n }\\n\\n /// @notice Returns the DAO contract.\\n /// @return The DAO contract.\\n function dao() public view returns (IDAO) {\\n return dao_;\\n }\\n\\n /// @notice A modifier to make functions on inheriting contracts authorized. Permissions to call the function are checked through the associated DAO's permission manager.\\n /// @param _permissionId The permission identifier required to call the method this modifier is applied to.\\n modifier auth(bytes32 _permissionId) {\\n _auth(dao_, address(this), _msgSender(), _permissionId, _msgData());\\n _;\\n }\\n\\n /// @notice This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain (see [OpenZeppelin's guide about storage gaps](https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps)).\\n uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0x7fac6b01b037ba1cb9d6a22d3f43b0785037dcf496ffb672434d9bf7227d2585\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/auth.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice Thrown if a call is unauthorized in the associated DAO.\\n/// @param dao The associated DAO.\\n/// @param where The context in which the authorization reverted.\\n/// @param who The address (EOA or contract) missing the permission.\\n/// @param permissionId The permission identifier.\\nerror DaoUnauthorized(address dao, address where, address who, bytes32 permissionId);\\n\\n/// @notice A free function checking if a caller is granted permissions on a target contract via a permission identifier that redirects the approval to a `PermissionCondition` if this was specified in the setup.\\n/// @param _where The address of the target contract for which `who` receives permission.\\n/// @param _who The address (EOA or contract) owning the permission.\\n/// @param _permissionId The permission identifier.\\n/// @param _data The optional data passed to the `PermissionCondition` registered.\\n/// @custom:security-contact sirt@aragon.org\\nfunction _auth(\\n IDAO _dao,\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes calldata _data\\n) view {\\n if (!_dao.hasPermission(_where, _who, _permissionId, _data))\\n revert DaoUnauthorized({\\n dao: address(_dao),\\n where: _where,\\n who: _who,\\n permissionId: _permissionId\\n });\\n}\\n\",\"keccak256\":\"0x878764b4f87fe0651fb3798fb9cb87c952f8c6caf6ae79c7f09de84df6c00298\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/IPlugin.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IPlugin\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the traits of a plugin.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IPlugin {\\n enum PluginType {\\n UUPS,\\n Cloneable,\\n Constructable\\n }\\n\\n /// @notice Returns the plugin's type\\n function pluginType() external view returns (PluginType);\\n}\\n\",\"keccak256\":\"0xc57cd0d10b6380ab7f54c713a509e88fd8f4ad9288313a0e8e12b8887817ddfe\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/PluginCloneable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ERC165Upgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\\\";\\n\\nimport {IProtocolVersion} from \\\"../utils/versioning/IProtocolVersion.sol\\\";\\nimport {ProtocolVersion} from \\\"../utils/versioning/ProtocolVersion.sol\\\";\\nimport {DaoAuthorizableUpgradeable} from \\\"../permission/auth/DaoAuthorizableUpgradeable.sol\\\";\\nimport {IDAO} from \\\"../dao/IDAO.sol\\\";\\nimport {IPlugin} from \\\"./IPlugin.sol\\\";\\n\\n/// @title PluginCloneable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract, non-upgradeable contract to inherit from when creating a plugin being deployed via the minimal clones pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)).\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract PluginCloneable is\\n IPlugin,\\n ERC165Upgradeable,\\n DaoAuthorizableUpgradeable,\\n ProtocolVersion\\n{\\n address public target;\\n\\n /// @dev Emitted each time the Target is set.\\n event TargetSet(address indexed previousTarget, address indexed newTarget);\\n\\n /// @notice Disables the initializers on the implementation contract to prevent it from being left uninitialized.\\n /// @custom:oz-upgrades-unsafe-allow constructor\\n constructor() {\\n _disableInitializers();\\n }\\n\\n /// @notice Initializes the plugin by storing the associated DAO.\\n /// @param _dao The DAO contract.\\n // solhint-disable-next-line func-name-mixedcase\\n function __PluginCloneable_init(IDAO _dao) internal virtual onlyInitializing {\\n __DaoAuthorizableUpgradeable_init(_dao);\\n }\\n\\n /// @dev Sets the target to a new target (`newTarget`).\\n /// @notice Can only be called by the current owner. TODO\\n function setTarget(address _target) public {\\n address previousTarget = target;\\n target = _target;\\n emit TargetSet(previousTarget, _target);\\n }\\n\\n /// @inheritdoc IPlugin\\n function pluginType() public pure override returns (PluginType) {\\n return PluginType.Cloneable;\\n }\\n\\n /// @notice Checks if this or the parent contract supports an interface by its ID.\\n /// @param _interfaceId The ID of the interface.\\n /// @return Returns `true` if the interface is supported.\\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\\n return\\n _interfaceId == type(IPlugin).interfaceId ||\\n _interfaceId == type(IProtocolVersion).interfaceId ||\\n super.supportsInterface(_interfaceId);\\n }\\n\\n /// @notice Forwards the actions to the currently set `target` for the execution.\\n /// @param _callId Identifier for this execution.\\n /// @param _actions actions that will be eventually called.\\n /// @param _allowFailureMap Bitmap-encoded number. TODO:\\n /// @return execResults address of the implementation contract.\\n /// @return failureMap address of the implementation contract.\\n function _execute(\\n bytes32 _callId,\\n IDAO.Action[] calldata _actions,\\n uint256 _allowFailureMap\\n ) internal virtual returns (bytes[] memory execResults, uint256 failureMap) {\\n (execResults, failureMap) = IDAO(target).execute(_callId, _actions, _allowFailureMap);\\n }\\n\\n /// @notice Forwards the actions to the `target` for the execution.\\n /// @param _target Forwards the actions to the specific target.\\n /// @param _callId Identifier for this execution.\\n /// @param _actions actions that will be eventually called.\\n /// @param _allowFailureMap Bitmap-encoded number. TODO:\\n /// @return execResults address of the implementation contract.\\n /// @return failureMap address of the implementation contract.\\n function _execute(\\n address _target,\\n bytes32 _callId,\\n IDAO.Action[] calldata _actions,\\n uint256 _allowFailureMap\\n ) internal virtual returns (bytes[] memory execResults, uint256 failureMap) {\\n (execResults, failureMap) = IDAO(_target).execute(_callId, _actions, _allowFailureMap);\\n }\\n}\\n\",\"keccak256\":\"0x23fff653e79f6d079073bab2f878051cf85c8e3cfa7ef359f3be92fc65ca2501\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/IProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IProtocolVersion\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the semantic Aragon OSx protocol version number.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IProtocolVersion {\\n /// @notice Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\\n /// @return _version Returns the semantic Aragon OSx protocol version number.\\n /// @dev This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\\n function protocolVersion() external view returns (uint8[3] memory _version);\\n}\\n\",\"keccak256\":\"0x00a4da654d21dc1bdadbdc8bd54bb86c378c56f85e461ccc31303628ea621361\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/ProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IProtocolVersion} from \\\"./IProtocolVersion.sol\\\";\\n\\n/// @title ProtocolVersion\\n/// @author Aragon X - 2023\\n/// @notice An abstract, stateless, non-upgradeable contract providing the current Aragon OSx protocol version number.\\n/// @dev Do not add any new variables to this contract that would shift down storage in the inheritance chain.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract ProtocolVersion is IProtocolVersion {\\n // IMPORTANT: Do not add any storage variable, see the above notice.\\n\\n /// @inheritdoc IProtocolVersion\\n function protocolVersion() public pure returns (uint8[3] memory) {\\n return [1, 4, 0];\\n }\\n}\\n\",\"keccak256\":\"0x3975c937be935f687c6b6b8f379071232681e98cf04b175d72781b819ea52bdb\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[{"astId":372,"contract":"src/mocks/plugin/PluginCloneableMock.sol:PluginCloneableMockBuild1","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":375,"contract":"src/mocks/plugin/PluginCloneableMock.sol:PluginCloneableMockBuild1","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":1280,"contract":"src/mocks/plugin/PluginCloneableMock.sol:PluginCloneableMockBuild1","label":"__gap","offset":0,"slot":"1","type":"t_array(t_uint256)50_storage"},{"astId":1051,"contract":"src/mocks/plugin/PluginCloneableMock.sol:PluginCloneableMockBuild1","label":"__gap","offset":0,"slot":"51","type":"t_array(t_uint256)50_storage"},{"astId":3887,"contract":"src/mocks/plugin/PluginCloneableMock.sol:PluginCloneableMockBuild1","label":"dao_","offset":0,"slot":"101","type":"t_contract(IDAO)2538"},{"astId":3936,"contract":"src/mocks/plugin/PluginCloneableMock.sol:PluginCloneableMockBuild1","label":"__gap","offset":0,"slot":"102","type":"t_array(t_uint256)49_storage"},{"astId":4196,"contract":"src/mocks/plugin/PluginCloneableMock.sol:PluginCloneableMockBuild1","label":"target","offset":0,"slot":"151","type":"t_address"},{"astId":2549,"contract":"src/mocks/plugin/PluginCloneableMock.sol:PluginCloneableMockBuild1","label":"state1","offset":0,"slot":"152","type":"t_uint256"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_array(t_uint256)49_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[49]","numberOfBytes":"1568"},"t_array(t_uint256)50_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[50]","numberOfBytes":"1600"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_contract(IDAO)2538":{"encoding":"inplace","label":"contract IDAO","numberOfBytes":"20"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"kind":"user","methods":{"dao()":{"notice":"Returns the DAO contract."},"pluginType()":{"notice":"Returns the plugin's type"},"protocolVersion()":{"notice":"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with."},"setTarget(address)":{"notice":"Can only be called by the current owner. TODO"},"supportsInterface(bytes4)":{"notice":"Checks if this or the parent contract supports an interface by its ID."}},"notice":"A mock cloneable plugin to be deployed via the minimal proxy pattern. v1.1 (Release 1, Build 1)","version":1}},"PluginCloneableMockBuild2":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousTarget","type":"address"},{"indexed":true,"internalType":"address","name":"newTarget","type":"address"}],"name":"TargetSet","type":"event"},{"inputs":[],"name":"dao","outputs":[{"internalType":"contract IDAO","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IDAO","name":"_dao","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pluginType","outputs":[{"internalType":"enum IPlugin.PluginType","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"protocolVersion","outputs":[{"internalType":"uint8[3]","name":"","type":"uint8[3]"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_target","type":"address"}],"name":"setTarget","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"state1","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"state2","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"target","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"DO NOT USE IN PRODUCTION!","kind":"dev","methods":{"dao()":{"returns":{"_0":"The DAO contract."}},"protocolVersion()":{"details":"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.","returns":{"_0":"Returns the semantic Aragon OSx protocol version number."}},"setTarget(address)":{"details":"Sets the target to a new target (`newTarget`)."},"supportsInterface(bytes4)":{"params":{"_interfaceId":"The ID of the interface."},"returns":{"_0":"Returns `true` if the interface is supported."}}},"version":1},"evm":{"bytecode":{"functionDebugData":{"@_4211":{"entryPoint":null,"id":4211,"parameterSlots":0,"returnSlots":0},"@_disableInitializers_515":{"entryPoint":30,"id":515,"parameterSlots":0,"returnSlots":0},"abi_encode_tuple_t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:608:50","statements":[{"nodeType":"YulBlock","src":"6:3:50","statements":[]},{"body":{"nodeType":"YulBlock","src":"188:229:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"205:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"216:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"198:6:50"},"nodeType":"YulFunctionCall","src":"198:21:50"},"nodeType":"YulExpressionStatement","src":"198:21:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"239:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"250:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"235:3:50"},"nodeType":"YulFunctionCall","src":"235:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"255:2:50","type":"","value":"39"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"228:6:50"},"nodeType":"YulFunctionCall","src":"228:30:50"},"nodeType":"YulExpressionStatement","src":"228:30:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"278:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"289:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"274:3:50"},"nodeType":"YulFunctionCall","src":"274:18:50"},{"hexValue":"496e697469616c697a61626c653a20636f6e747261637420697320696e697469","kind":"string","nodeType":"YulLiteral","src":"294:34:50","type":"","value":"Initializable: contract is initi"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"267:6:50"},"nodeType":"YulFunctionCall","src":"267:62:50"},"nodeType":"YulExpressionStatement","src":"267:62:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"349:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"360:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"345:3:50"},"nodeType":"YulFunctionCall","src":"345:18:50"},{"hexValue":"616c697a696e67","kind":"string","nodeType":"YulLiteral","src":"365:9:50","type":"","value":"alizing"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"338:6:50"},"nodeType":"YulFunctionCall","src":"338:37:50"},"nodeType":"YulExpressionStatement","src":"338:37:50"},{"nodeType":"YulAssignment","src":"384:27:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"396:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"407:3:50","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"392:3:50"},"nodeType":"YulFunctionCall","src":"392:19:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"384:4:50"}]}]},"name":"abi_encode_tuple_t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"165:9:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"179:4:50","type":""}],"src":"14:403:50"},{"body":{"nodeType":"YulBlock","src":"519:87:50","statements":[{"nodeType":"YulAssignment","src":"529:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"541:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"552:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"537:3:50"},"nodeType":"YulFunctionCall","src":"537:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"529:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"571:9:50"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"586:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"594:4:50","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"582:3:50"},"nodeType":"YulFunctionCall","src":"582:17:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"564:6:50"},"nodeType":"YulFunctionCall","src":"564:36:50"},"nodeType":"YulExpressionStatement","src":"564:36:50"}]},"name":"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"488:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"499:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"510:4:50","type":""}],"src":"422:184:50"}]},"contents":"{\n { }\n function abi_encode_tuple_t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 39)\n mstore(add(headStart, 64), \"Initializable: contract is initi\")\n mstore(add(headStart, 96), \"alizing\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xff))\n }\n}","id":50,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"608060405234801561001057600080fd5b5061001961001e565b6100dd565b600054610100900460ff161561008a5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116146100db576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b61057a806100ec6000396000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c80636accab8c11610076578063c4d66de81161005b578063c4d66de814610145578063d4b8399214610158578063efe51cca1461016b57600080fd5b80636accab8c14610119578063776d1a011461013057600080fd5b806301ffc9a7146100a85780632ae9c600146100d05780634162169f146100e557806341de68301461010a575b600080fd5b6100bb6100b63660046104ae565b610174565b60405190151581526020015b60405180910390f35b6100d86101c5565b6040516100c791906104df565b6065546001600160a01b03165b6040516001600160a01b0390911681526020016100c7565b60016040516100c79190610513565b61012260985481565b6040519081526020016100c7565b61014361013e366004610550565b6101ef565b005b610143610153366004610550565b61024e565b6097546100f2906001600160a01b031681565b61012260995481565b60006001600160e01b0319821663041de68360e41b14806101a457506001600160e01b03198216621574e360e91b145b806101bf57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6101cd610490565b5060408051606081018252600181526004602082015260009181019190915290565b609780546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d690600090a35050565b600054610100900460ff161580801561026e5750600054600160ff909116105b806102885750303b158015610288575060005460ff166001145b6102ff5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b6000805460ff191660011790558015610322576000805461ff0019166101001790555b61032b8261037f565b60016098556002609955801561037b576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b600054610100900460ff166103ea5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016102f6565b6103f3816103f6565b50565b600054610100900460ff166104615760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016102f6565b6065805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b60405180606001604052806003906020820280368337509192915050565b6000602082840312156104c057600080fd5b81356001600160e01b0319811681146104d857600080fd5b9392505050565b60608101818360005b600381101561050a57815160ff168352602092830192909101906001016104e8565b50505092915050565b602081016003831061053557634e487b7160e01b600052602160045260246000fd5b91905290565b6001600160a01b03811681146103f357600080fd5b60006020828403121561056257600080fd5b81356104d88161053b56fea164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x19 PUSH2 0x1E JUMP JUMPDEST PUSH2 0xDD JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x8A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x27 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320696E697469 PUSH1 0x44 DUP3 ADD MSTORE PUSH7 0x616C697A696E67 PUSH1 0xC8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xFF SWAP1 DUP2 AND EQ PUSH2 0xDB JUMPI PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST JUMP JUMPDEST PUSH2 0x57A DUP1 PUSH2 0xEC PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xA3 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6ACCAB8C GT PUSH2 0x76 JUMPI DUP1 PUSH4 0xC4D66DE8 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0x145 JUMPI DUP1 PUSH4 0xD4B83992 EQ PUSH2 0x158 JUMPI DUP1 PUSH4 0xEFE51CCA EQ PUSH2 0x16B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6ACCAB8C EQ PUSH2 0x119 JUMPI DUP1 PUSH4 0x776D1A01 EQ PUSH2 0x130 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xA8 JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0xD0 JUMPI DUP1 PUSH4 0x4162169F EQ PUSH2 0xE5 JUMPI DUP1 PUSH4 0x41DE6830 EQ PUSH2 0x10A JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xBB PUSH2 0xB6 CALLDATASIZE PUSH1 0x4 PUSH2 0x4AE JUMP JUMPDEST PUSH2 0x174 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xD8 PUSH2 0x1C5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xC7 SWAP2 SWAP1 PUSH2 0x4DF JUMP JUMPDEST PUSH1 0x65 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xC7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x40 MLOAD PUSH2 0xC7 SWAP2 SWAP1 PUSH2 0x513 JUMP JUMPDEST PUSH2 0x122 PUSH1 0x98 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xC7 JUMP JUMPDEST PUSH2 0x143 PUSH2 0x13E CALLDATASIZE PUSH1 0x4 PUSH2 0x550 JUMP JUMPDEST PUSH2 0x1EF JUMP JUMPDEST STOP JUMPDEST PUSH2 0x143 PUSH2 0x153 CALLDATASIZE PUSH1 0x4 PUSH2 0x550 JUMP JUMPDEST PUSH2 0x24E JUMP JUMPDEST PUSH1 0x97 SLOAD PUSH2 0xF2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x122 PUSH1 0x99 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x41DE683 PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x1A4 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x1BF JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1CD PUSH2 0x490 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x97 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP2 SWAP1 DUP3 SWAP1 PUSH32 0x90CC2F570A6EB594B1580EA3E41247D2D73A55281889E86BD4EC2FC29C7E62D6 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 DUP1 ISZERO PUSH2 0x26E JUMPI POP PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xFF SWAP1 SWAP2 AND LT JUMPDEST DUP1 PUSH2 0x288 JUMPI POP ADDRESS EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x288 JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF AND PUSH1 0x1 EQ JUMPDEST PUSH2 0x2FF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x647920696E697469616C697A6564000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE DUP1 ISZERO PUSH2 0x322 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND PUSH2 0x100 OR SWAP1 SSTORE JUMPDEST PUSH2 0x32B DUP3 PUSH2 0x37F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x98 SSTORE PUSH1 0x2 PUSH1 0x99 SSTORE DUP1 ISZERO PUSH2 0x37B JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x3EA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x2F6 JUMP JUMPDEST PUSH2 0x3F3 DUP2 PUSH2 0x3F6 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x461 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x2F6 JUMP JUMPDEST PUSH1 0x65 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x4D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0x50A JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x4E8 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH1 0x3 DUP4 LT PUSH2 0x535 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 SWAP1 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x3F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x562 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x4D8 DUP2 PUSH2 0x53B JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"727:254:26:-:0;;;;;;;;;;;;-1:-1:-1;1290:22:39;:20;:22::i;:::-;727:254:26;;5939:280:4;6007:13;;;;;;;6006:14;5998:66;;;;-1:-1:-1;;;5998:66:4;;216:2:50;5998:66:4;;;198:21:50;255:2;235:18;;;228:30;294:34;274:18;;;267:62;-1:-1:-1;;;345:18:50;;;338:37;392:19;;5998:66:4;;;;;;;;6078:12;;6094:15;6078:12;;;:31;6074:139;;6125:12;:30;;-1:-1:-1;;6125:30:4;6140:15;6125:30;;;;;;6174:28;;564:36:50;;;6174:28:4;;552:2:50;537:18;6174:28:4;;;;;;;6074:139;5939:280::o;422:184:50:-;727:254:26;;;;;;"},"deployedBytecode":{"functionDebugData":{"@__DaoAuthorizableUpgradeable_init_3901":{"entryPoint":1014,"id":3901,"parameterSlots":1,"returnSlots":0},"@__PluginCloneable_init_4225":{"entryPoint":895,"id":4225,"parameterSlots":1,"returnSlots":0},"@dao_3911":{"entryPoint":null,"id":3911,"parameterSlots":0,"returnSlots":1},"@initialize_2595":{"entryPoint":590,"id":2595,"parameterSlots":1,"returnSlots":0},"@isContract_689":{"entryPoint":null,"id":689,"parameterSlots":1,"returnSlots":1},"@pluginType_4257":{"entryPoint":null,"id":4257,"parameterSlots":0,"returnSlots":1},"@protocolVersion_5135":{"entryPoint":453,"id":5135,"parameterSlots":0,"returnSlots":1},"@setTarget_4245":{"entryPoint":495,"id":4245,"parameterSlots":1,"returnSlots":0},"@state1_2572":{"entryPoint":null,"id":2572,"parameterSlots":0,"returnSlots":0},"@state2_2574":{"entryPoint":null,"id":2574,"parameterSlots":0,"returnSlots":0},"@supportsInterface_1275":{"entryPoint":null,"id":1275,"parameterSlots":1,"returnSlots":1},"@supportsInterface_4286":{"entryPoint":372,"id":4286,"parameterSlots":1,"returnSlots":1},"@target_4196":{"entryPoint":null,"id":4196,"parameterSlots":0,"returnSlots":0},"abi_decode_tuple_t_address":{"entryPoint":1360,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes4":{"entryPoint":1198,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_contract$_IDAO_$2538":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed":{"entryPoint":1247,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_contract$_IDAO_$2538__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_enum$_PluginType_$3994__to_t_uint8__fromStack_reversed":{"entryPoint":1299,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_rational_1_by_1__to_t_uint8__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"validator_revert_address":{"entryPoint":1339,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:3707:50","statements":[{"nodeType":"YulBlock","src":"6:3:50","statements":[]},{"body":{"nodeType":"YulBlock","src":"83:217:50","statements":[{"body":{"nodeType":"YulBlock","src":"129:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"138:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"141:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"131:6:50"},"nodeType":"YulFunctionCall","src":"131:12:50"},"nodeType":"YulExpressionStatement","src":"131:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"104:7:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"113:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"100:3:50"},"nodeType":"YulFunctionCall","src":"100:23:50"},{"kind":"number","nodeType":"YulLiteral","src":"125:2:50","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"96:3:50"},"nodeType":"YulFunctionCall","src":"96:32:50"},"nodeType":"YulIf","src":"93:52:50"},{"nodeType":"YulVariableDeclaration","src":"154:36:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"180:9:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"167:12:50"},"nodeType":"YulFunctionCall","src":"167:23:50"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"158:5:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"254:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"263:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"266:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"256:6:50"},"nodeType":"YulFunctionCall","src":"256:12:50"},"nodeType":"YulExpressionStatement","src":"256:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"212:5:50"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"223:5:50"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"234:3:50","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"239:10:50","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"230:3:50"},"nodeType":"YulFunctionCall","src":"230:20:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"219:3:50"},"nodeType":"YulFunctionCall","src":"219:32:50"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"209:2:50"},"nodeType":"YulFunctionCall","src":"209:43:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"202:6:50"},"nodeType":"YulFunctionCall","src":"202:51:50"},"nodeType":"YulIf","src":"199:71:50"},{"nodeType":"YulAssignment","src":"279:15:50","value":{"name":"value","nodeType":"YulIdentifier","src":"289:5:50"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"279:6:50"}]}]},"name":"abi_decode_tuple_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"49:9:50","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"60:7:50","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"72:6:50","type":""}],"src":"14:286:50"},{"body":{"nodeType":"YulBlock","src":"400:92:50","statements":[{"nodeType":"YulAssignment","src":"410:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"422:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"433:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"418:3:50"},"nodeType":"YulFunctionCall","src":"418:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"410:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"452:9:50"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"477:6:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"470:6:50"},"nodeType":"YulFunctionCall","src":"470:14:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"463:6:50"},"nodeType":"YulFunctionCall","src":"463:22:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"445:6:50"},"nodeType":"YulFunctionCall","src":"445:41:50"},"nodeType":"YulExpressionStatement","src":"445:41:50"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"369:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"380:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"391:4:50","type":""}],"src":"305:187:50"},{"body":{"nodeType":"YulBlock","src":"640:358:50","statements":[{"nodeType":"YulAssignment","src":"650:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"662:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"673:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"658:3:50"},"nodeType":"YulFunctionCall","src":"658:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"650:4:50"}]},{"nodeType":"YulVariableDeclaration","src":"685:20:50","value":{"name":"headStart","nodeType":"YulIdentifier","src":"696:9:50"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"689:3:50","type":""}]},{"nodeType":"YulAssignment","src":"714:16:50","value":{"name":"headStart","nodeType":"YulIdentifier","src":"721:9:50"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"714:3:50"}]},{"nodeType":"YulVariableDeclaration","src":"739:20:50","value":{"name":"value0","nodeType":"YulIdentifier","src":"753:6:50"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"743:6:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"768:10:50","value":{"kind":"number","nodeType":"YulLiteral","src":"777:1:50","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"772:1:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"834:158:50","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"855:3:50"},{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"870:6:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"864:5:50"},"nodeType":"YulFunctionCall","src":"864:13:50"},{"kind":"number","nodeType":"YulLiteral","src":"879:4:50","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"860:3:50"},"nodeType":"YulFunctionCall","src":"860:24:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"848:6:50"},"nodeType":"YulFunctionCall","src":"848:37:50"},"nodeType":"YulExpressionStatement","src":"848:37:50"},{"nodeType":"YulVariableDeclaration","src":"898:14:50","value":{"kind":"number","nodeType":"YulLiteral","src":"908:4:50","type":"","value":"0x20"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"902:2:50","type":""}]},{"nodeType":"YulAssignment","src":"925:19:50","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"936:3:50"},{"name":"_1","nodeType":"YulIdentifier","src":"941:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"932:3:50"},"nodeType":"YulFunctionCall","src":"932:12:50"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"925:3:50"}]},{"nodeType":"YulAssignment","src":"957:25:50","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"971:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"979:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"967:3:50"},"nodeType":"YulFunctionCall","src":"967:15:50"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"957:6:50"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"798:1:50"},{"kind":"number","nodeType":"YulLiteral","src":"801:4:50","type":"","value":"0x03"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"795:2:50"},"nodeType":"YulFunctionCall","src":"795:11:50"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"807:18:50","statements":[{"nodeType":"YulAssignment","src":"809:14:50","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"818:1:50"},{"kind":"number","nodeType":"YulLiteral","src":"821:1:50","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"814:3:50"},"nodeType":"YulFunctionCall","src":"814:9:50"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"809:1:50"}]}]},"pre":{"nodeType":"YulBlock","src":"791:3:50","statements":[]},"src":"787:205:50"}]},"name":"abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"609:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"620:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"631:4:50","type":""}],"src":"497:501:50"},{"body":{"nodeType":"YulBlock","src":"1117:125:50","statements":[{"nodeType":"YulAssignment","src":"1127:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1139:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"1150:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1135:3:50"},"nodeType":"YulFunctionCall","src":"1135:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1127:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1169:9:50"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1184:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"1192:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1180:3:50"},"nodeType":"YulFunctionCall","src":"1180:55:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1162:6:50"},"nodeType":"YulFunctionCall","src":"1162:74:50"},"nodeType":"YulExpressionStatement","src":"1162:74:50"}]},"name":"abi_encode_tuple_t_contract$_IDAO_$2538__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1086:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1097:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1108:4:50","type":""}],"src":"1003:239:50"},{"body":{"nodeType":"YulBlock","src":"1361:229:50","statements":[{"nodeType":"YulAssignment","src":"1371:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1383:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"1394:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1379:3:50"},"nodeType":"YulFunctionCall","src":"1379:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1371:4:50"}]},{"body":{"nodeType":"YulBlock","src":"1439:111:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1460:1:50","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1467:3:50","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"1472:10:50","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1463:3:50"},"nodeType":"YulFunctionCall","src":"1463:20:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1453:6:50"},"nodeType":"YulFunctionCall","src":"1453:31:50"},"nodeType":"YulExpressionStatement","src":"1453:31:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1504:1:50","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"1507:4:50","type":"","value":"0x21"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1497:6:50"},"nodeType":"YulFunctionCall","src":"1497:15:50"},"nodeType":"YulExpressionStatement","src":"1497:15:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1532:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1535:4:50","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1525:6:50"},"nodeType":"YulFunctionCall","src":"1525:15:50"},"nodeType":"YulExpressionStatement","src":"1525:15:50"}]},"condition":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1419:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"1427:1:50","type":"","value":"3"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"1416:2:50"},"nodeType":"YulFunctionCall","src":"1416:13:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1409:6:50"},"nodeType":"YulFunctionCall","src":"1409:21:50"},"nodeType":"YulIf","src":"1406:144:50"},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1566:9:50"},{"name":"value0","nodeType":"YulIdentifier","src":"1577:6:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1559:6:50"},"nodeType":"YulFunctionCall","src":"1559:25:50"},"nodeType":"YulExpressionStatement","src":"1559:25:50"}]},"name":"abi_encode_tuple_t_enum$_PluginType_$3994__to_t_uint8__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1330:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1341:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1352:4:50","type":""}],"src":"1247:343:50"},{"body":{"nodeType":"YulBlock","src":"1696:76:50","statements":[{"nodeType":"YulAssignment","src":"1706:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1718:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"1729:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1714:3:50"},"nodeType":"YulFunctionCall","src":"1714:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1706:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1748:9:50"},{"name":"value0","nodeType":"YulIdentifier","src":"1759:6:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1741:6:50"},"nodeType":"YulFunctionCall","src":"1741:25:50"},"nodeType":"YulExpressionStatement","src":"1741:25:50"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1665:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1676:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1687:4:50","type":""}],"src":"1595:177:50"},{"body":{"nodeType":"YulBlock","src":"1822:109:50","statements":[{"body":{"nodeType":"YulBlock","src":"1909:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1918:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1921:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1911:6:50"},"nodeType":"YulFunctionCall","src":"1911:12:50"},"nodeType":"YulExpressionStatement","src":"1911:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1845:5:50"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1856:5:50"},{"kind":"number","nodeType":"YulLiteral","src":"1863:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1852:3:50"},"nodeType":"YulFunctionCall","src":"1852:54:50"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1842:2:50"},"nodeType":"YulFunctionCall","src":"1842:65:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1835:6:50"},"nodeType":"YulFunctionCall","src":"1835:73:50"},"nodeType":"YulIf","src":"1832:93:50"}]},"name":"validator_revert_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1811:5:50","type":""}],"src":"1777:154:50"},{"body":{"nodeType":"YulBlock","src":"2006:177:50","statements":[{"body":{"nodeType":"YulBlock","src":"2052:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2061:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2064:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2054:6:50"},"nodeType":"YulFunctionCall","src":"2054:12:50"},"nodeType":"YulExpressionStatement","src":"2054:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2027:7:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"2036:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2023:3:50"},"nodeType":"YulFunctionCall","src":"2023:23:50"},{"kind":"number","nodeType":"YulLiteral","src":"2048:2:50","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2019:3:50"},"nodeType":"YulFunctionCall","src":"2019:32:50"},"nodeType":"YulIf","src":"2016:52:50"},{"nodeType":"YulVariableDeclaration","src":"2077:36:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2103:9:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2090:12:50"},"nodeType":"YulFunctionCall","src":"2090:23:50"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"2081:5:50","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2147:5:50"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"2122:24:50"},"nodeType":"YulFunctionCall","src":"2122:31:50"},"nodeType":"YulExpressionStatement","src":"2122:31:50"},{"nodeType":"YulAssignment","src":"2162:15:50","value":{"name":"value","nodeType":"YulIdentifier","src":"2172:5:50"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2162:6:50"}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1972:9:50","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1983:7:50","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1995:6:50","type":""}],"src":"1936:247:50"},{"body":{"nodeType":"YulBlock","src":"2271:177:50","statements":[{"body":{"nodeType":"YulBlock","src":"2317:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2326:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2329:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2319:6:50"},"nodeType":"YulFunctionCall","src":"2319:12:50"},"nodeType":"YulExpressionStatement","src":"2319:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2292:7:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"2301:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2288:3:50"},"nodeType":"YulFunctionCall","src":"2288:23:50"},{"kind":"number","nodeType":"YulLiteral","src":"2313:2:50","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2284:3:50"},"nodeType":"YulFunctionCall","src":"2284:32:50"},"nodeType":"YulIf","src":"2281:52:50"},{"nodeType":"YulVariableDeclaration","src":"2342:36:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2368:9:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2355:12:50"},"nodeType":"YulFunctionCall","src":"2355:23:50"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"2346:5:50","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2412:5:50"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"2387:24:50"},"nodeType":"YulFunctionCall","src":"2387:31:50"},"nodeType":"YulExpressionStatement","src":"2387:31:50"},{"nodeType":"YulAssignment","src":"2427:15:50","value":{"name":"value","nodeType":"YulIdentifier","src":"2437:5:50"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2427:6:50"}]}]},"name":"abi_decode_tuple_t_contract$_IDAO_$2538","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2237:9:50","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2248:7:50","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2260:6:50","type":""}],"src":"2188:260:50"},{"body":{"nodeType":"YulBlock","src":"2554:125:50","statements":[{"nodeType":"YulAssignment","src":"2564:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2576:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"2587:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2572:3:50"},"nodeType":"YulFunctionCall","src":"2572:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2564:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2606:9:50"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2621:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"2629:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2617:3:50"},"nodeType":"YulFunctionCall","src":"2617:55:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2599:6:50"},"nodeType":"YulFunctionCall","src":"2599:74:50"},"nodeType":"YulExpressionStatement","src":"2599:74:50"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2523:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"2534:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2545:4:50","type":""}],"src":"2453:226:50"},{"body":{"nodeType":"YulBlock","src":"2858:236:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2875:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"2886:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2868:6:50"},"nodeType":"YulFunctionCall","src":"2868:21:50"},"nodeType":"YulExpressionStatement","src":"2868:21:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2909:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"2920:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2905:3:50"},"nodeType":"YulFunctionCall","src":"2905:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"2925:2:50","type":"","value":"46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2898:6:50"},"nodeType":"YulFunctionCall","src":"2898:30:50"},"nodeType":"YulExpressionStatement","src":"2898:30:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2948:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"2959:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2944:3:50"},"nodeType":"YulFunctionCall","src":"2944:18:50"},{"hexValue":"496e697469616c697a61626c653a20636f6e747261637420697320616c726561","kind":"string","nodeType":"YulLiteral","src":"2964:34:50","type":"","value":"Initializable: contract is alrea"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2937:6:50"},"nodeType":"YulFunctionCall","src":"2937:62:50"},"nodeType":"YulExpressionStatement","src":"2937:62:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3019:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"3030:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3015:3:50"},"nodeType":"YulFunctionCall","src":"3015:18:50"},{"hexValue":"647920696e697469616c697a6564","kind":"string","nodeType":"YulLiteral","src":"3035:16:50","type":"","value":"dy initialized"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3008:6:50"},"nodeType":"YulFunctionCall","src":"3008:44:50"},"nodeType":"YulExpressionStatement","src":"3008:44:50"},{"nodeType":"YulAssignment","src":"3061:27:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3073:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"3084:3:50","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3069:3:50"},"nodeType":"YulFunctionCall","src":"3069:19:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3061:4:50"}]}]},"name":"abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2835:9:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2849:4:50","type":""}],"src":"2684:410:50"},{"body":{"nodeType":"YulBlock","src":"3206:87:50","statements":[{"nodeType":"YulAssignment","src":"3216:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3228:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"3239:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3224:3:50"},"nodeType":"YulFunctionCall","src":"3224:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3216:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3258:9:50"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3273:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"3281:4:50","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3269:3:50"},"nodeType":"YulFunctionCall","src":"3269:17:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3251:6:50"},"nodeType":"YulFunctionCall","src":"3251:36:50"},"nodeType":"YulExpressionStatement","src":"3251:36:50"}]},"name":"abi_encode_tuple_t_rational_1_by_1__to_t_uint8__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3175:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3186:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3197:4:50","type":""}],"src":"3099:194:50"},{"body":{"nodeType":"YulBlock","src":"3472:233:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3489:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"3500:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3482:6:50"},"nodeType":"YulFunctionCall","src":"3482:21:50"},"nodeType":"YulExpressionStatement","src":"3482:21:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3523:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"3534:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3519:3:50"},"nodeType":"YulFunctionCall","src":"3519:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"3539:2:50","type":"","value":"43"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3512:6:50"},"nodeType":"YulFunctionCall","src":"3512:30:50"},"nodeType":"YulExpressionStatement","src":"3512:30:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3562:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"3573:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3558:3:50"},"nodeType":"YulFunctionCall","src":"3558:18:50"},{"hexValue":"496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069","kind":"string","nodeType":"YulLiteral","src":"3578:34:50","type":"","value":"Initializable: contract is not i"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3551:6:50"},"nodeType":"YulFunctionCall","src":"3551:62:50"},"nodeType":"YulExpressionStatement","src":"3551:62:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3633:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"3644:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3629:3:50"},"nodeType":"YulFunctionCall","src":"3629:18:50"},{"hexValue":"6e697469616c697a696e67","kind":"string","nodeType":"YulLiteral","src":"3649:13:50","type":"","value":"nitializing"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3622:6:50"},"nodeType":"YulFunctionCall","src":"3622:41:50"},"nodeType":"YulExpressionStatement","src":"3622:41:50"},{"nodeType":"YulAssignment","src":"3672:27:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3684:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"3695:3:50","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3680:3:50"},"nodeType":"YulFunctionCall","src":"3680:19:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3672:4:50"}]}]},"name":"abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3449:9:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3463:4:50","type":""}],"src":"3298:407:50"}]},"contents":"{\n { }\n function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n if iszero(eq(value, and(value, shl(224, 0xffffffff)))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 96)\n let pos := headStart\n pos := headStart\n let srcPtr := value0\n let i := 0\n for { } lt(i, 0x03) { i := add(i, 1) }\n {\n mstore(pos, and(mload(srcPtr), 0xff))\n let _1 := 0x20\n pos := add(pos, _1)\n srcPtr := add(srcPtr, _1)\n }\n }\n function abi_encode_tuple_t_contract$_IDAO_$2538__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_encode_tuple_t_enum$_PluginType_$3994__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n if iszero(lt(value0, 3))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x21)\n revert(0, 0x24)\n }\n mstore(headStart, value0)\n }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function validator_revert_address(value)\n {\n if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n }\n function abi_decode_tuple_t_contract$_IDAO_$2538(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 46)\n mstore(add(headStart, 64), \"Initializable: contract is alrea\")\n mstore(add(headStart, 96), \"dy initialized\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_rational_1_by_1__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xff))\n }\n function abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 43)\n mstore(add(headStart, 64), \"Initializable: contract is not i\")\n mstore(add(headStart, 96), \"nitializing\")\n tail := add(headStart, 128)\n }\n}","id":50,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100a35760003560e01c80636accab8c11610076578063c4d66de81161005b578063c4d66de814610145578063d4b8399214610158578063efe51cca1461016b57600080fd5b80636accab8c14610119578063776d1a011461013057600080fd5b806301ffc9a7146100a85780632ae9c600146100d05780634162169f146100e557806341de68301461010a575b600080fd5b6100bb6100b63660046104ae565b610174565b60405190151581526020015b60405180910390f35b6100d86101c5565b6040516100c791906104df565b6065546001600160a01b03165b6040516001600160a01b0390911681526020016100c7565b60016040516100c79190610513565b61012260985481565b6040519081526020016100c7565b61014361013e366004610550565b6101ef565b005b610143610153366004610550565b61024e565b6097546100f2906001600160a01b031681565b61012260995481565b60006001600160e01b0319821663041de68360e41b14806101a457506001600160e01b03198216621574e360e91b145b806101bf57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6101cd610490565b5060408051606081018252600181526004602082015260009181019190915290565b609780546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d690600090a35050565b600054610100900460ff161580801561026e5750600054600160ff909116105b806102885750303b158015610288575060005460ff166001145b6102ff5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b6000805460ff191660011790558015610322576000805461ff0019166101001790555b61032b8261037f565b60016098556002609955801561037b576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b600054610100900460ff166103ea5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016102f6565b6103f3816103f6565b50565b600054610100900460ff166104615760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016102f6565b6065805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b60405180606001604052806003906020820280368337509192915050565b6000602082840312156104c057600080fd5b81356001600160e01b0319811681146104d857600080fd5b9392505050565b60608101818360005b600381101561050a57815160ff168352602092830192909101906001016104e8565b50505092915050565b602081016003831061053557634e487b7160e01b600052602160045260246000fd5b91905290565b6001600160a01b03811681146103f357600080fd5b60006020828403121561056257600080fd5b81356104d88161053b56fea164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xA3 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6ACCAB8C GT PUSH2 0x76 JUMPI DUP1 PUSH4 0xC4D66DE8 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0x145 JUMPI DUP1 PUSH4 0xD4B83992 EQ PUSH2 0x158 JUMPI DUP1 PUSH4 0xEFE51CCA EQ PUSH2 0x16B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6ACCAB8C EQ PUSH2 0x119 JUMPI DUP1 PUSH4 0x776D1A01 EQ PUSH2 0x130 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xA8 JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0xD0 JUMPI DUP1 PUSH4 0x4162169F EQ PUSH2 0xE5 JUMPI DUP1 PUSH4 0x41DE6830 EQ PUSH2 0x10A JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xBB PUSH2 0xB6 CALLDATASIZE PUSH1 0x4 PUSH2 0x4AE JUMP JUMPDEST PUSH2 0x174 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xD8 PUSH2 0x1C5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xC7 SWAP2 SWAP1 PUSH2 0x4DF JUMP JUMPDEST PUSH1 0x65 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xC7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x40 MLOAD PUSH2 0xC7 SWAP2 SWAP1 PUSH2 0x513 JUMP JUMPDEST PUSH2 0x122 PUSH1 0x98 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xC7 JUMP JUMPDEST PUSH2 0x143 PUSH2 0x13E CALLDATASIZE PUSH1 0x4 PUSH2 0x550 JUMP JUMPDEST PUSH2 0x1EF JUMP JUMPDEST STOP JUMPDEST PUSH2 0x143 PUSH2 0x153 CALLDATASIZE PUSH1 0x4 PUSH2 0x550 JUMP JUMPDEST PUSH2 0x24E JUMP JUMPDEST PUSH1 0x97 SLOAD PUSH2 0xF2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x122 PUSH1 0x99 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x41DE683 PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x1A4 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x1BF JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1CD PUSH2 0x490 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x97 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP2 SWAP1 DUP3 SWAP1 PUSH32 0x90CC2F570A6EB594B1580EA3E41247D2D73A55281889E86BD4EC2FC29C7E62D6 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 DUP1 ISZERO PUSH2 0x26E JUMPI POP PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xFF SWAP1 SWAP2 AND LT JUMPDEST DUP1 PUSH2 0x288 JUMPI POP ADDRESS EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x288 JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF AND PUSH1 0x1 EQ JUMPDEST PUSH2 0x2FF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x647920696E697469616C697A6564000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE DUP1 ISZERO PUSH2 0x322 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND PUSH2 0x100 OR SWAP1 SSTORE JUMPDEST PUSH2 0x32B DUP3 PUSH2 0x37F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x98 SSTORE PUSH1 0x2 PUSH1 0x99 SSTORE DUP1 ISZERO PUSH2 0x37B JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x3EA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x2F6 JUMP JUMPDEST PUSH2 0x3F3 DUP2 PUSH2 0x3F6 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x461 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x2F6 JUMP JUMPDEST PUSH1 0x65 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x4D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0x50A JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x4E8 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH1 0x3 DUP4 LT PUSH2 0x535 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 SWAP1 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x3F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x562 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x4D8 DUP2 PUSH2 0x53B JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"727:254:26:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2263:288:39;;;;;;:::i;:::-;;:::i;:::-;;;470:14:50;;463:22;445:41;;433:2;418:18;2263:288:39;;;;;;;;631:98:49;;;:::i;:::-;;;;;;;:::i;1200:70:35:-;1259:4;;-1:-1:-1;;;;;1259:4:35;1200:70;;;-1:-1:-1;;;;;1180:55:50;;;1162:74;;1150:2;1135:18;1200:70:35;1003:239:50;1947:108:39;2028:20;1947:108;;;;;;:::i;787:21:26:-;;;;;;;;;1741:25:50;;;1729:2;1714:18;787:21:26;1595:177:50;1747:166:39;;;;;;:::i;:::-;;:::i;:::-;;842:137:26;;;;;;:::i;:::-;;:::i;936:21:39:-;;;;;-1:-1:-1;;;;;936:21:39;;;814::26;;;;;;2263:288:39;2349:4;-1:-1:-1;;;;;;2384:41:39;;-1:-1:-1;;;2384:41:39;;:107;;-1:-1:-1;;;;;;;2441:50:39;;-1:-1:-1;;;2441:50:39;2384:107;:160;;;-1:-1:-1;;;;;;;;;;1189:51:10;;;2507:37:39;2365:179;2263:288;-1:-1:-1;;2263:288:39:o;631:98:49:-;679:15;;:::i;:::-;-1:-1:-1;706:16:49;;;;;;;;714:1;706:16;;717:1;706:16;;;;-1:-1:-1;706:16:49;;;;;;;;631:98::o;1747:166:39:-;1825:6;;;-1:-1:-1;;;;;1841:16:39;;;-1:-1:-1;;1841:16:39;;;;;;;1872:34;;1825:6;;;1841:16;1825:6;;1872:34;;1800:22;;1872:34;1790:123;1747:166;:::o;842:137:26:-;3279:19:4;3302:13;;;;;;3301:14;;3347:34;;;;-1:-1:-1;3365:12:4;;3380:1;3365:12;;;;:16;3347:34;3346:108;;;-1:-1:-1;3426:4:4;1713:19:6;:23;;;3387:66:4;;-1:-1:-1;3436:12:4;;;;;:17;3387:66;3325:201;;;;-1:-1:-1;;;3325:201:4;;2886:2:50;3325:201:4;;;2868:21:50;2925:2;2905:18;;;2898:30;2964:34;2944:18;;;2937:62;3035:16;3015:18;;;3008:44;3069:19;;3325:201:4;;;;;;;;;3536:12;:16;;-1:-1:-1;;3536:16:4;3551:1;3536:16;;;3562:65;;;;3596:13;:20;;-1:-1:-1;;3596:20:4;;;;;3562:65;904:28:26::1;927:4;904:22;:28::i;:::-;951:1;942:6;:10:::0;971:1:::1;962:6;:10:::0;3647:99:4;;;;3697:5;3681:21;;-1:-1:-1;;3681:21:4;;;3721:14;;-1:-1:-1;3251:36:50;;3721:14:4;;3239:2:50;3224:18;3721:14:4;;;;;;;3647:99;3269:483;842:137:26;:::o;1486:133:39:-;5374:13:4;;;;;;;5366:69;;;;-1:-1:-1;;;5366:69:4;;3500:2:50;5366:69:4;;;3482:21:50;3539:2;3519:18;;;3512:30;3578:34;3558:18;;;3551:62;-1:-1:-1;;;3629:18:50;;;3622:41;3680:19;;5366:69:4;3298:407:50;5366:69:4;1573:39:39::1;1607:4;1573:33;:39::i;:::-;1486:133:::0;:::o;1010:108:35:-;5374:13:4;;;;;;;5366:69;;;;-1:-1:-1;;;5366:69:4;;3500:2:50;5366:69:4;;;3482:21:50;3539:2;3519:18;;;3512:30;3578:34;3558:18;;;3551:62;-1:-1:-1;;;3629:18:50;;;3622:41;3680:19;;5366:69:4;3298:407:50;5366:69:4;1100:4:35::1;:11:::0;;-1:-1:-1;;1100:11:35::1;-1:-1:-1::0;;;;;1100:11:35;;;::::1;::::0;;;::::1;::::0;;1010:108::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:286:50:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:50;;209:43;;199:71;;266:1;263;256:12;199:71;289:5;14:286;-1:-1:-1;;;14:286:50:o;497:501::-;673:2;658:18;;662:9;753:6;631:4;787:205;801:4;798:1;795:11;787:205;;;864:13;;879:4;860:24;848:37;;908:4;932:12;;;;967:15;;;;821:1;814:9;787:205;;;791:3;;;497:501;;;;:::o;1247:343::-;1394:2;1379:18;;1427:1;1416:13;;1406:144;;1472:10;1467:3;1463:20;1460:1;1453:31;1507:4;1504:1;1497:15;1535:4;1532:1;1525:15;1406:144;1559:25;;;1247:343;:::o;1777:154::-;-1:-1:-1;;;;;1856:5:50;1852:54;1845:5;1842:65;1832:93;;1921:1;1918;1911:12;1936:247;1995:6;2048:2;2036:9;2027:7;2023:23;2019:32;2016:52;;;2064:1;2061;2054:12;2016:52;2103:9;2090:23;2122:31;2147:5;2122:31;:::i"},"gasEstimates":{"creation":{"codeDepositCost":"280400","executionCost":"29907","totalCost":"310307"},"external":{"dao()":"2365","initialize(address)":"infinite","pluginType()":"294","protocolVersion()":"infinite","setTarget(address)":"26135","state1()":"2318","state2()":"2361","supportsInterface(bytes4)":"482","target()":"2381"}},"methodIdentifiers":{"dao()":"4162169f","initialize(address)":"c4d66de8","pluginType()":"41de6830","protocolVersion()":"2ae9c600","setTarget(address)":"776d1a01","state1()":"6accab8c","state2()":"efe51cca","supportsInterface(bytes4)":"01ffc9a7","target()":"d4b83992"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousTarget\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newTarget\",\"type\":\"address\"}],\"name\":\"TargetSet\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"dao\",\"outputs\":[{\"internalType\":\"contract IDAO\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IDAO\",\"name\":\"_dao\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pluginType\",\"outputs\":[{\"internalType\":\"enum IPlugin.PluginType\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"protocolVersion\",\"outputs\":[{\"internalType\":\"uint8[3]\",\"name\":\"\",\"type\":\"uint8[3]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_target\",\"type\":\"address\"}],\"name\":\"setTarget\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"state1\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"state2\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"target\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"DO NOT USE IN PRODUCTION!\",\"kind\":\"dev\",\"methods\":{\"dao()\":{\"returns\":{\"_0\":\"The DAO contract.\"}},\"protocolVersion()\":{\"details\":\"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\",\"returns\":{\"_0\":\"Returns the semantic Aragon OSx protocol version number.\"}},\"setTarget(address)\":{\"details\":\"Sets the target to a new target (`newTarget`).\"},\"supportsInterface(bytes4)\":{\"params\":{\"_interfaceId\":\"The ID of the interface.\"},\"returns\":{\"_0\":\"Returns `true` if the interface is supported.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"dao()\":{\"notice\":\"Returns the DAO contract.\"},\"pluginType()\":{\"notice\":\"Returns the plugin's type\"},\"protocolVersion()\":{\"notice\":\"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\"},\"setTarget(address)\":{\"notice\":\"Can only be called by the current owner. TODO\"},\"supportsInterface(bytes4)\":{\"notice\":\"Checks if this or the parent contract supports an interface by its ID.\"}},\"notice\":\"A mock cloneable plugin to be deployed via the minimal proxy pattern. v1.1 (Release 1, Build 2)\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/mocks/plugin/PluginCloneableMock.sol\":\"PluginCloneableMockBuild2\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n function __Context_init() internal onlyInitializing {\\n }\\n\\n function __Context_init_unchained() internal onlyInitializing {\\n }\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n function _contextSuffixLength() internal view virtual returns (uint256) {\\n return 0;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x75097e35253e7fb282ee4d7f27a80eaacfa759923185bf17302a89cbc059c5ef\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165Upgradeable.sol\\\";\\nimport {Initializable} from \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165Upgradeable is Initializable, IERC165Upgradeable {\\n function __ERC165_init() internal onlyInitializing {\\n }\\n\\n function __ERC165_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165Upgradeable).interfaceId;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0xd90d7723512df65ae417adaf0801042940f0dabd60039ceeaffe34aa5b238da1\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165Upgradeable {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\"},\"src/dao/IDAO.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IDAO\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for DAOs within the Aragon App DAO framework.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IDAO {\\n /// @notice The action struct to be consumed by the DAO's `execute` function resulting in an external call.\\n /// @param to The address to call.\\n /// @param value The native token value to be sent with the call.\\n /// @param data The bytes-encoded function selector and calldata for the call.\\n struct Action {\\n address to;\\n uint256 value;\\n bytes data;\\n }\\n\\n /// @notice Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\\n /// @param _where The address of the contract.\\n /// @param _who The address of a EOA or contract to give the permissions.\\n /// @param _permissionId The permission identifier.\\n /// @param _data The optional data passed to the `PermissionCondition` registered.\\n /// @return Returns true if the address has permission, false if not.\\n function hasPermission(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes memory _data\\n ) external view returns (bool);\\n\\n /// @notice Updates the DAO metadata (e.g., an IPFS hash).\\n /// @param _metadata The IPFS hash of the new metadata object.\\n function setMetadata(bytes calldata _metadata) external;\\n\\n /// @notice Emitted when the DAO metadata is updated.\\n /// @param metadata The IPFS hash of the new metadata object.\\n event MetadataSet(bytes metadata);\\n\\n /// @notice Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted.\\n /// @param _callId The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce.\\n /// @param _actions The array of actions.\\n /// @param _allowFailureMap A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @return The array of results obtained from the executed actions in `bytes`.\\n /// @return The resulting failure map containing the actions have actually failed.\\n function execute(\\n bytes32 _callId,\\n Action[] memory _actions,\\n uint256 _allowFailureMap\\n ) external returns (bytes[] memory, uint256);\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param actor The address of the caller.\\n /// @param callId The ID of the call.\\n /// @param actions The array of actions executed.\\n /// @param allowFailureMap The allow failure map encoding which actions are allowed to fail.\\n /// @param failureMap The failure map encoding which actions have failed.\\n /// @param execResults The array with the results of the executed actions.\\n /// @dev The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce.\\n event Executed(\\n address indexed actor,\\n bytes32 callId,\\n Action[] actions,\\n uint256 allowFailureMap,\\n uint256 failureMap,\\n bytes[] execResults\\n );\\n\\n /// @notice Emitted when a standard callback is registered.\\n /// @param interfaceId The ID of the interface.\\n /// @param callbackSelector The selector of the callback function.\\n /// @param magicNumber The magic number to be registered for the callback function selector.\\n event StandardCallbackRegistered(\\n bytes4 interfaceId,\\n bytes4 callbackSelector,\\n bytes4 magicNumber\\n );\\n\\n /// @notice Deposits (native) tokens to the DAO contract with a reference string.\\n /// @param _token The address of the token or address(0) in case of the native token.\\n /// @param _amount The amount of tokens to deposit.\\n /// @param _reference The reference describing the deposit reason.\\n function deposit(address _token, uint256 _amount, string calldata _reference) external payable;\\n\\n /// @notice Emitted when a token deposit has been made to the DAO.\\n /// @param sender The address of the sender.\\n /// @param token The address of the deposited token.\\n /// @param amount The amount of tokens deposited.\\n /// @param _reference The reference describing the deposit reason.\\n event Deposited(\\n address indexed sender,\\n address indexed token,\\n uint256 amount,\\n string _reference\\n );\\n\\n /// @notice Emitted when a native token deposit has been made to the DAO.\\n /// @dev This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).\\n /// @param sender The address of the sender.\\n /// @param amount The amount of native tokens deposited.\\n event NativeTokenDeposited(address sender, uint256 amount);\\n\\n /// @notice Setter for the trusted forwarder verifying the meta transaction.\\n /// @param _trustedForwarder The trusted forwarder address.\\n function setTrustedForwarder(address _trustedForwarder) external;\\n\\n /// @notice Getter for the trusted forwarder verifying the meta transaction.\\n /// @return The trusted forwarder address.\\n function getTrustedForwarder() external view returns (address);\\n\\n /// @notice Emitted when a new TrustedForwarder is set on the DAO.\\n /// @param forwarder the new forwarder address.\\n event TrustedForwarderSet(address forwarder);\\n\\n /// @notice Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\\n /// @param _hash The hash of the data to be signed.\\n /// @param _signature The signature byte array associated with `_hash`.\\n /// @return Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not.\\n function isValidSignature(bytes32 _hash, bytes memory _signature) external returns (bytes4);\\n\\n /// @notice Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\\n /// @param _interfaceId The ID of the interface.\\n /// @param _callbackSelector The selector of the callback function.\\n /// @param _magicNumber The magic number to be registered for the function signature.\\n function registerStandardCallback(\\n bytes4 _interfaceId,\\n bytes4 _callbackSelector,\\n bytes4 _magicNumber\\n ) external;\\n\\n /// @notice Removed function being left here to not corrupt the IDAO interface ID. Any call will revert.\\n /// @dev Introduced in v1.0.0. Removed in v1.4.0.\\n function setSignatureValidator(address) external;\\n}\\n\",\"keccak256\":\"0xb7f615523c26de042edce98731c658f44a1edb2464387ac1b642c4c69f57128e\",\"license\":\"AGPL-3.0-or-later\"},\"src/mocks/plugin/PluginCloneableMock.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\n/* solhint-disable one-contract-per-file */\\npragma solidity ^0.8.8;\\n\\nimport {PluginCloneable} from \\\"../../plugin/PluginCloneable.sol\\\";\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice A mock cloneable plugin to be deployed via the minimal proxy pattern.\\n/// v1.1 (Release 1, Build 1)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginCloneableMockBuild1 is PluginCloneable {\\n uint256 public state1;\\n\\n function initialize(IDAO _dao) external initializer {\\n __PluginCloneable_init(_dao);\\n state1 = 1;\\n }\\n}\\n\\n/// @notice A mock cloneable plugin to be deployed via the minimal proxy pattern.\\n/// v1.1 (Release 1, Build 2)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginCloneableMockBuild2 is PluginCloneable {\\n uint256 public state1;\\n uint256 public state2;\\n\\n function initialize(IDAO _dao) external initializer {\\n __PluginCloneable_init(_dao);\\n state1 = 1;\\n state2 = 2;\\n }\\n}\\n\\n/// @notice A mock cloneable plugin missing an initializer function.\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginCloneableMockBad is PluginCloneable {\\n uint256 public state1;\\n\\n function notAnInitializer(IDAO _dao) external {\\n __PluginCloneable_init(_dao);\\n state1 = 1;\\n }\\n}\\n\",\"keccak256\":\"0x1bb271f7b553040fad7907e97b860aa833aec9aefe7477e00ba7bdfd80d84e98\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/DaoAuthorizableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ContextUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\\\";\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\nimport {_auth} from \\\"./auth.sol\\\";\\n\\n/// @title DaoAuthorizableUpgradeable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract contract providing a meta-transaction compatible modifier for upgradeable or cloneable contracts to authorize function calls through an associated DAO.\\n/// @dev Make sure to call `__DaoAuthorizableUpgradeable_init` during initialization of the inheriting contract.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract DaoAuthorizableUpgradeable is ContextUpgradeable {\\n /// @notice The associated DAO managing the permissions of inheriting contracts.\\n IDAO private dao_;\\n\\n /// @notice Initializes the contract by setting the associated DAO.\\n /// @param _dao The associated DAO address.\\n // solhint-disable-next-line func-name-mixedcase\\n function __DaoAuthorizableUpgradeable_init(IDAO _dao) internal onlyInitializing {\\n dao_ = _dao;\\n }\\n\\n /// @notice Returns the DAO contract.\\n /// @return The DAO contract.\\n function dao() public view returns (IDAO) {\\n return dao_;\\n }\\n\\n /// @notice A modifier to make functions on inheriting contracts authorized. Permissions to call the function are checked through the associated DAO's permission manager.\\n /// @param _permissionId The permission identifier required to call the method this modifier is applied to.\\n modifier auth(bytes32 _permissionId) {\\n _auth(dao_, address(this), _msgSender(), _permissionId, _msgData());\\n _;\\n }\\n\\n /// @notice This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain (see [OpenZeppelin's guide about storage gaps](https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps)).\\n uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0x7fac6b01b037ba1cb9d6a22d3f43b0785037dcf496ffb672434d9bf7227d2585\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/auth.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice Thrown if a call is unauthorized in the associated DAO.\\n/// @param dao The associated DAO.\\n/// @param where The context in which the authorization reverted.\\n/// @param who The address (EOA or contract) missing the permission.\\n/// @param permissionId The permission identifier.\\nerror DaoUnauthorized(address dao, address where, address who, bytes32 permissionId);\\n\\n/// @notice A free function checking if a caller is granted permissions on a target contract via a permission identifier that redirects the approval to a `PermissionCondition` if this was specified in the setup.\\n/// @param _where The address of the target contract for which `who` receives permission.\\n/// @param _who The address (EOA or contract) owning the permission.\\n/// @param _permissionId The permission identifier.\\n/// @param _data The optional data passed to the `PermissionCondition` registered.\\n/// @custom:security-contact sirt@aragon.org\\nfunction _auth(\\n IDAO _dao,\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes calldata _data\\n) view {\\n if (!_dao.hasPermission(_where, _who, _permissionId, _data))\\n revert DaoUnauthorized({\\n dao: address(_dao),\\n where: _where,\\n who: _who,\\n permissionId: _permissionId\\n });\\n}\\n\",\"keccak256\":\"0x878764b4f87fe0651fb3798fb9cb87c952f8c6caf6ae79c7f09de84df6c00298\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/IPlugin.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IPlugin\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the traits of a plugin.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IPlugin {\\n enum PluginType {\\n UUPS,\\n Cloneable,\\n Constructable\\n }\\n\\n /// @notice Returns the plugin's type\\n function pluginType() external view returns (PluginType);\\n}\\n\",\"keccak256\":\"0xc57cd0d10b6380ab7f54c713a509e88fd8f4ad9288313a0e8e12b8887817ddfe\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/PluginCloneable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ERC165Upgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\\\";\\n\\nimport {IProtocolVersion} from \\\"../utils/versioning/IProtocolVersion.sol\\\";\\nimport {ProtocolVersion} from \\\"../utils/versioning/ProtocolVersion.sol\\\";\\nimport {DaoAuthorizableUpgradeable} from \\\"../permission/auth/DaoAuthorizableUpgradeable.sol\\\";\\nimport {IDAO} from \\\"../dao/IDAO.sol\\\";\\nimport {IPlugin} from \\\"./IPlugin.sol\\\";\\n\\n/// @title PluginCloneable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract, non-upgradeable contract to inherit from when creating a plugin being deployed via the minimal clones pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)).\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract PluginCloneable is\\n IPlugin,\\n ERC165Upgradeable,\\n DaoAuthorizableUpgradeable,\\n ProtocolVersion\\n{\\n address public target;\\n\\n /// @dev Emitted each time the Target is set.\\n event TargetSet(address indexed previousTarget, address indexed newTarget);\\n\\n /// @notice Disables the initializers on the implementation contract to prevent it from being left uninitialized.\\n /// @custom:oz-upgrades-unsafe-allow constructor\\n constructor() {\\n _disableInitializers();\\n }\\n\\n /// @notice Initializes the plugin by storing the associated DAO.\\n /// @param _dao The DAO contract.\\n // solhint-disable-next-line func-name-mixedcase\\n function __PluginCloneable_init(IDAO _dao) internal virtual onlyInitializing {\\n __DaoAuthorizableUpgradeable_init(_dao);\\n }\\n\\n /// @dev Sets the target to a new target (`newTarget`).\\n /// @notice Can only be called by the current owner. TODO\\n function setTarget(address _target) public {\\n address previousTarget = target;\\n target = _target;\\n emit TargetSet(previousTarget, _target);\\n }\\n\\n /// @inheritdoc IPlugin\\n function pluginType() public pure override returns (PluginType) {\\n return PluginType.Cloneable;\\n }\\n\\n /// @notice Checks if this or the parent contract supports an interface by its ID.\\n /// @param _interfaceId The ID of the interface.\\n /// @return Returns `true` if the interface is supported.\\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\\n return\\n _interfaceId == type(IPlugin).interfaceId ||\\n _interfaceId == type(IProtocolVersion).interfaceId ||\\n super.supportsInterface(_interfaceId);\\n }\\n\\n /// @notice Forwards the actions to the currently set `target` for the execution.\\n /// @param _callId Identifier for this execution.\\n /// @param _actions actions that will be eventually called.\\n /// @param _allowFailureMap Bitmap-encoded number. TODO:\\n /// @return execResults address of the implementation contract.\\n /// @return failureMap address of the implementation contract.\\n function _execute(\\n bytes32 _callId,\\n IDAO.Action[] calldata _actions,\\n uint256 _allowFailureMap\\n ) internal virtual returns (bytes[] memory execResults, uint256 failureMap) {\\n (execResults, failureMap) = IDAO(target).execute(_callId, _actions, _allowFailureMap);\\n }\\n\\n /// @notice Forwards the actions to the `target` for the execution.\\n /// @param _target Forwards the actions to the specific target.\\n /// @param _callId Identifier for this execution.\\n /// @param _actions actions that will be eventually called.\\n /// @param _allowFailureMap Bitmap-encoded number. TODO:\\n /// @return execResults address of the implementation contract.\\n /// @return failureMap address of the implementation contract.\\n function _execute(\\n address _target,\\n bytes32 _callId,\\n IDAO.Action[] calldata _actions,\\n uint256 _allowFailureMap\\n ) internal virtual returns (bytes[] memory execResults, uint256 failureMap) {\\n (execResults, failureMap) = IDAO(_target).execute(_callId, _actions, _allowFailureMap);\\n }\\n}\\n\",\"keccak256\":\"0x23fff653e79f6d079073bab2f878051cf85c8e3cfa7ef359f3be92fc65ca2501\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/IProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IProtocolVersion\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the semantic Aragon OSx protocol version number.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IProtocolVersion {\\n /// @notice Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\\n /// @return _version Returns the semantic Aragon OSx protocol version number.\\n /// @dev This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\\n function protocolVersion() external view returns (uint8[3] memory _version);\\n}\\n\",\"keccak256\":\"0x00a4da654d21dc1bdadbdc8bd54bb86c378c56f85e461ccc31303628ea621361\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/ProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IProtocolVersion} from \\\"./IProtocolVersion.sol\\\";\\n\\n/// @title ProtocolVersion\\n/// @author Aragon X - 2023\\n/// @notice An abstract, stateless, non-upgradeable contract providing the current Aragon OSx protocol version number.\\n/// @dev Do not add any new variables to this contract that would shift down storage in the inheritance chain.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract ProtocolVersion is IProtocolVersion {\\n // IMPORTANT: Do not add any storage variable, see the above notice.\\n\\n /// @inheritdoc IProtocolVersion\\n function protocolVersion() public pure returns (uint8[3] memory) {\\n return [1, 4, 0];\\n }\\n}\\n\",\"keccak256\":\"0x3975c937be935f687c6b6b8f379071232681e98cf04b175d72781b819ea52bdb\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[{"astId":372,"contract":"src/mocks/plugin/PluginCloneableMock.sol:PluginCloneableMockBuild2","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":375,"contract":"src/mocks/plugin/PluginCloneableMock.sol:PluginCloneableMockBuild2","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":1280,"contract":"src/mocks/plugin/PluginCloneableMock.sol:PluginCloneableMockBuild2","label":"__gap","offset":0,"slot":"1","type":"t_array(t_uint256)50_storage"},{"astId":1051,"contract":"src/mocks/plugin/PluginCloneableMock.sol:PluginCloneableMockBuild2","label":"__gap","offset":0,"slot":"51","type":"t_array(t_uint256)50_storage"},{"astId":3887,"contract":"src/mocks/plugin/PluginCloneableMock.sol:PluginCloneableMockBuild2","label":"dao_","offset":0,"slot":"101","type":"t_contract(IDAO)2538"},{"astId":3936,"contract":"src/mocks/plugin/PluginCloneableMock.sol:PluginCloneableMockBuild2","label":"__gap","offset":0,"slot":"102","type":"t_array(t_uint256)49_storage"},{"astId":4196,"contract":"src/mocks/plugin/PluginCloneableMock.sol:PluginCloneableMockBuild2","label":"target","offset":0,"slot":"151","type":"t_address"},{"astId":2572,"contract":"src/mocks/plugin/PluginCloneableMock.sol:PluginCloneableMockBuild2","label":"state1","offset":0,"slot":"152","type":"t_uint256"},{"astId":2574,"contract":"src/mocks/plugin/PluginCloneableMock.sol:PluginCloneableMockBuild2","label":"state2","offset":0,"slot":"153","type":"t_uint256"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_array(t_uint256)49_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[49]","numberOfBytes":"1568"},"t_array(t_uint256)50_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[50]","numberOfBytes":"1600"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_contract(IDAO)2538":{"encoding":"inplace","label":"contract IDAO","numberOfBytes":"20"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"kind":"user","methods":{"dao()":{"notice":"Returns the DAO contract."},"pluginType()":{"notice":"Returns the plugin's type"},"protocolVersion()":{"notice":"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with."},"setTarget(address)":{"notice":"Can only be called by the current owner. TODO"},"supportsInterface(bytes4)":{"notice":"Checks if this or the parent contract supports an interface by its ID."}},"notice":"A mock cloneable plugin to be deployed via the minimal proxy pattern. v1.1 (Release 1, Build 2)","version":1}}},"src/mocks/plugin/PluginCloneableSetupMock.sol":{"PluginCloneableSetupMockBuild1":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"ConflictingValues","type":"error"},{"inputs":[],"name":"NonUpgradeablePlugin","type":"error"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_dao","type":"address"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"prepareInstallation","outputs":[{"internalType":"address","name":"plugin","type":"address"},{"components":[{"internalType":"address[]","name":"helpers","type":"address[]"},{"components":[{"internalType":"enum PermissionLib.Operation","name":"operation","type":"uint8"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"condition","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"internalType":"struct PermissionLib.MultiTargetPermission[]","name":"permissions","type":"tuple[]"}],"internalType":"struct IPluginSetup.PreparedSetupData","name":"preparedSetupData","type":"tuple"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_dao","type":"address"},{"components":[{"internalType":"address","name":"plugin","type":"address"},{"internalType":"address[]","name":"currentHelpers","type":"address[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct IPluginSetup.SetupPayload","name":"_payload","type":"tuple"}],"name":"prepareUninstallation","outputs":[{"components":[{"internalType":"enum PermissionLib.Operation","name":"operation","type":"uint8"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"condition","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"internalType":"struct PermissionLib.MultiTargetPermission[]","name":"permissions","type":"tuple[]"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_dao","type":"address"},{"internalType":"uint16","name":"_fromBuild","type":"uint16"},{"components":[{"internalType":"address","name":"plugin","type":"address"},{"internalType":"address[]","name":"currentHelpers","type":"address[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct IPluginSetup.SetupPayload","name":"_payload","type":"tuple"}],"name":"prepareUpdate","outputs":[{"internalType":"bytes","name":"","type":"bytes"},{"components":[{"internalType":"address[]","name":"helpers","type":"address[]"},{"components":[{"internalType":"enum PermissionLib.Operation","name":"operation","type":"uint8"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"condition","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"internalType":"struct PermissionLib.MultiTargetPermission[]","name":"permissions","type":"tuple[]"}],"internalType":"struct IPluginSetup.PreparedSetupData","name":"","type":"tuple"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"protocolVersion","outputs":[{"internalType":"uint8[3]","name":"","type":"uint8[3]"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"DO NOT USE IN PRODUCTION!","kind":"dev","methods":{"implementation()":{"details":"The implementation can be instantiated via the `new` keyword, cloned via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)), or proxied via the UUPS proxy pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).","returns":{"_0":"The address of the plugin implementation contract."}},"prepareInstallation(address,bytes)":{"params":{"_dao":"The address of the installing DAO.","_data":"The bytes-encoded data containing the input parameters for the installation as specified in the plugin's build metadata JSON file."},"returns":{"plugin":"The address of the `Plugin` contract being prepared for installation.","preparedSetupData":"The deployed plugin's relevant data which consists of helpers and permissions."}},"prepareUninstallation(address,(address,address[],bytes))":{"params":{"_dao":"The address of the uninstalling DAO.","_payload":"The relevant data necessary for the `prepareUninstallation`. See above."},"returns":{"permissions":"The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the uninstalling DAO."}},"prepareUpdate(address,uint16,(address,address[],bytes))":{"details":"Since the underlying plugin is non-upgradeable, this non-virtual function must always revert.","params":{"_dao":"The address of the updating DAO.","_fromBuild":"The build number of the plugin to update from.","_payload":"The relevant data necessary for the `prepareUpdate`. See above."},"returns":{"_0":"The initialization data to be passed to upgradeable contracts when the update is applied in the `PluginSetupProcessor`.","_1":"The deployed plugin's relevant data which consists of helpers and permissions."}},"protocolVersion()":{"details":"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.","returns":{"_0":"Returns the semantic Aragon OSx protocol version number."}},"supportsInterface(bytes4)":{"params":{"_interfaceId":"The ID of the interface."},"returns":{"_0":"Returns `true` if the interface is supported."}}},"version":1},"evm":{"bytecode":{"functionDebugData":{"@_2657":{"entryPoint":null,"id":2657,"parameterSlots":0,"returnSlots":0},"@_4893":{"entryPoint":null,"id":4893,"parameterSlots":1,"returnSlots":0}},"generatedSources":[],"linkReferences":{},"object":"60a060405234801561001057600080fd5b5060405161001d9061004b565b604051809103906000f080158015610039573d6000803e3d6000fd5b506001600160a01b0316608052610058565b61063d80610d3083390190565b608051610cb76100796000396000818160c101526102970152610cb76000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c80639cb0a124116100505780639cb0a124146100eb578063a8a9c29e1461010b578063f10832f11461012c57600080fd5b806301ffc9a7146100775780632ae9c6001461009f5780635c60da1b146100b4575b600080fd5b61008a6100853660046107fd565b61014d565b60405190151581526020015b60405180910390f35b6100a761019e565b6040516100969190610827565b6040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152602001610096565b6100fe6100f9366004610884565b6101c8565b604051610096919061094e565b61011e610119366004610997565b6101de565b604051610096929190610ae1565b61013f61013a366004610b25565b610216565b604051610096929190610be7565b60006001600160e01b0319821663099718b560e41b148061017d57506001600160e01b03198216621574e360e91b145b8061019857506301ffc9a760e01b6001600160e01b03198316145b92915050565b6101a66107df565b5060408051606081018252600181526004602082015260009181019190915290565b60606101d760006001806102f2565b9392505050565b60606101fd604051806040016040528060608152602001606081525090565b60405163a112810160e01b815260040160405180910390fd5b6000610235604051806040016040528060608152602001606081525090565b6040516001600160a01b038516602482015260009060440160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663189acdbd60e31b17905290506102c8816102b97f000000000000000000000000000000000000000000000000000000000000000090565b6001600160a01b031690610477565b92506102d460016104af565b82526102e360006001816102f2565b60208301525090939092509050565b6060826001600160a01b0316846001600160a01b0316111561032757604051633a4013cd60e21b815260040160405180910390fd5b6103318484610c1f565b6001600160a01b031667ffffffffffffffff81111561035257610352610b0f565b6040519080825280602002602001820160405280156103ab57816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282526000199092019101816103705790505b509050835b836001600160a01b0316816001600160a01b0316101561046f576040518060a001604052808460028111156103e7576103e76108d2565b81526001600160a01b038316602082018190526040820152600060608201527fa280eec51ab8e1bc4b6b0c1b7f1bde785761b787a49db404e3e9338ed9b016ef608090910152826104388784610c1f565b6001600160a01b03168151811061045157610451610c3f565b6020026020010181905250808061046790610c55565b9150506103b0565b509392505050565b600061048b836001600160a01b0316610568565b825190915015610198576104a86001600160a01b0382168361060e565b5092915050565b6060816001600160a01b031667ffffffffffffffff8111156104d3576104d3610b0f565b6040519080825280602002602001820160405280156104fc578160200160208202803683370190505b50905060005b826001600160a01b0316816001600160a01b03161015610562578082826001600160a01b03168151811061053857610538610c3f565b6001600160a01b03909216602092830291909101909101528061055a81610c55565b915050610502565b50919050565b6000763d602d80600a3d3981f3363d3d373d3d3d363d730000008260601b60e81c176000526e5af43d82803e903d91602b57fd5bf38260781b17602052603760096000f090506001600160a01b0381166106095760405162461bcd60e51b815260206004820152601660248201527f455243313136373a20637265617465206661696c65640000000000000000000060448201526064015b60405180910390fd5b919050565b60606101d7838360006040518060400160405280601e81526020017f416464726573733a206c6f772d6c6576656c2063616c6c206661696c656400008152506060824710156106c55760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610600565b600080866001600160a01b031685876040516106e19190610c7b565b60006040518083038185875af1925050503d806000811461071e576040519150601f19603f3d011682016040523d82523d6000602084013e610723565b606091505b509150915061073487838387610741565b925050505b949350505050565b606083156107b05782516000036107a9576001600160a01b0385163b6107a95760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610600565b5081610739565b61073983838151156107c55781518083602001fd5b8060405162461bcd60e51b81526004016106009190610c97565b60405180606001604052806003906020820280368337509192915050565b60006020828403121561080f57600080fd5b81356001600160e01b0319811681146101d757600080fd5b60608101818360005b600381101561085257815160ff16835260209283019290910190600101610830565b50505092915050565b80356001600160a01b038116811461060957600080fd5b60006060828403121561056257600080fd5b6000806040838503121561089757600080fd5b6108a08361085b565b9150602083013567ffffffffffffffff8111156108bc57600080fd5b6108c885828601610872565b9150509250929050565b634e487b7160e01b600052602160045260246000fd5b600081516003811061090a57634e487b7160e01b600052602160045260246000fd5b8352506020818101516001600160a01b0390811691840191909152604080830151821690840152606080830151909116908301526080908101519082015260a00190565b6020808252825182820181905260009190848201906040850190845b8181101561098b5761097d8385516108e8565b93850193925060010161096a565b50909695505050505050565b6000806000606084860312156109ac57600080fd5b6109b58461085b565b9250602084013561ffff811681146109cc57600080fd5b9150604084013567ffffffffffffffff8111156109e857600080fd5b6109f486828701610872565b9150509250925092565b60005b83811015610a19578181015183820152602001610a01565b50506000910152565b60008151808452610a3a8160208601602086016109fe565b601f01601f19169290920160200192915050565b805160408084528151908401819052600091602091908201906060860190845b81811015610a935783516001600160a01b031683529284019291840191600101610a6e565b50508483015186820387850152805180835290840192506000918401905b80831015610ad657610ac48285516108e8565b91508484019350600183019250610ab1565b509695505050505050565b604081526000610af46040830185610a22565b8281036020840152610b068185610a4e565b95945050505050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215610b3857600080fd5b610b418361085b565b9150602083013567ffffffffffffffff80821115610b5e57600080fd5b818501915085601f830112610b7257600080fd5b813581811115610b8457610b84610b0f565b604051601f8201601f19908116603f01168101908382118183101715610bac57610bac610b0f565b81604052828152886020848701011115610bc557600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6001600160a01b03831681526040602082015260006107396040830184610a4e565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b038281168282160390808211156104a8576104a8610c09565b634e487b7160e01b600052603260045260246000fd5b60006001600160a01b03808316818103610c7157610c71610c09565b6001019392505050565b60008251610c8d8184602087016109fe565b9190910192915050565b6020815260006101d76020830184610a2256fea164736f6c6343000811000a608060405234801561001057600080fd5b5061001961001e565b6100dd565b600054610100900460ff161561008a5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116146100db576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b610551806100ec6000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c80636accab8c1161005b5780636accab8c146100fe578063776d1a0114610115578063c4d66de81461012a578063d4b839921461013d57600080fd5b806301ffc9a71461008d5780632ae9c600146100b55780634162169f146100ca57806341de6830146100ef575b600080fd5b6100a061009b366004610485565b610150565b60405190151581526020015b60405180910390f35b6100bd6101a1565b6040516100ac91906104b6565b6065546001600160a01b03165b6040516001600160a01b0390911681526020016100ac565b60016040516100ac91906104ea565b61010760985481565b6040519081526020016100ac565b610128610123366004610527565b6101cb565b005b610128610138366004610527565b61022a565b6097546100d7906001600160a01b031681565b60006001600160e01b0319821663041de68360e41b148061018057506001600160e01b03198216621574e360e91b145b8061019b57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6101a9610467565b5060408051606081018252600181526004602082015260009181019190915290565b609780546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d690600090a35050565b600054610100900460ff161580801561024a5750600054600160ff909116105b806102645750303b158015610264575060005460ff166001145b6102db5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b6000805460ff1916600117905580156102fe576000805461ff0019166101001790555b61030782610356565b60016098558015610352576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b600054610100900460ff166103c15760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016102d2565b6103ca816103cd565b50565b600054610100900460ff166104385760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016102d2565b6065805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b60405180606001604052806003906020820280368337509192915050565b60006020828403121561049757600080fd5b81356001600160e01b0319811681146104af57600080fd5b9392505050565b60608101818360005b60038110156104e157815160ff168352602092830192909101906001016104bf565b50505092915050565b602081016003831061050c57634e487b7160e01b600052602160045260246000fd5b91905290565b6001600160a01b03811681146103ca57600080fd5b60006020828403121561053957600080fd5b81356104af8161051256fea164736f6c6343000811000a","opcodes":"PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x1D SWAP1 PUSH2 0x4B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH2 0x39 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x80 MSTORE PUSH2 0x58 JUMP JUMPDEST PUSH2 0x63D DUP1 PUSH2 0xD30 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH2 0xCB7 PUSH2 0x79 PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH1 0xC1 ADD MSTORE PUSH2 0x297 ADD MSTORE PUSH2 0xCB7 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x72 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9CB0A124 GT PUSH2 0x50 JUMPI DUP1 PUSH4 0x9CB0A124 EQ PUSH2 0xEB JUMPI DUP1 PUSH4 0xA8A9C29E EQ PUSH2 0x10B JUMPI DUP1 PUSH4 0xF10832F1 EQ PUSH2 0x12C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x77 JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0x9F JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0xB4 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8A PUSH2 0x85 CALLDATASIZE PUSH1 0x4 PUSH2 0x7FD JUMP JUMPDEST PUSH2 0x14D JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xA7 PUSH2 0x19E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x96 SWAP2 SWAP1 PUSH2 0x827 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x96 JUMP JUMPDEST PUSH2 0xFE PUSH2 0xF9 CALLDATASIZE PUSH1 0x4 PUSH2 0x884 JUMP JUMPDEST PUSH2 0x1C8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x96 SWAP2 SWAP1 PUSH2 0x94E JUMP JUMPDEST PUSH2 0x11E PUSH2 0x119 CALLDATASIZE PUSH1 0x4 PUSH2 0x997 JUMP JUMPDEST PUSH2 0x1DE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x96 SWAP3 SWAP2 SWAP1 PUSH2 0xAE1 JUMP JUMPDEST PUSH2 0x13F PUSH2 0x13A CALLDATASIZE PUSH1 0x4 PUSH2 0xB25 JUMP JUMPDEST PUSH2 0x216 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x96 SWAP3 SWAP2 SWAP1 PUSH2 0xBE7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x99718B5 PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x17D JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x198 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1A6 PUSH2 0x7DF JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1D7 PUSH1 0x0 PUSH1 0x1 DUP1 PUSH2 0x2F2 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1FD PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xA1128101 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x235 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 PUSH1 0x44 ADD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x189ACDBD PUSH1 0xE3 SHL OR SWAP1 MSTORE SWAP1 POP PUSH2 0x2C8 DUP2 PUSH2 0x2B9 PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH2 0x477 JUMP JUMPDEST SWAP3 POP PUSH2 0x2D4 PUSH1 0x1 PUSH2 0x4AF JUMP JUMPDEST DUP3 MSTORE PUSH2 0x2E3 PUSH1 0x0 PUSH1 0x1 DUP2 PUSH2 0x2F2 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP SWAP1 SWAP4 SWAP1 SWAP3 POP SWAP1 POP JUMP JUMPDEST PUSH1 0x60 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH2 0x327 JUMPI PUSH1 0x40 MLOAD PUSH4 0x3A4013CD PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x331 DUP5 DUP5 PUSH2 0xC1F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x352 JUMPI PUSH2 0x352 PUSH2 0xB0F JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x3AB JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD DUP3 SWAP1 MSTORE SWAP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 DUP3 ADD MSTORE DUP3 MSTORE PUSH1 0x0 NOT SWAP1 SWAP3 ADD SWAP2 ADD DUP2 PUSH2 0x370 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP DUP4 JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT ISZERO PUSH2 0x46F JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 DUP5 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x3E7 JUMPI PUSH2 0x3E7 PUSH2 0x8D2 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x60 DUP3 ADD MSTORE PUSH32 0xA280EEC51AB8E1BC4B6B0C1B7F1BDE785761B787A49DB404E3E9338ED9B016EF PUSH1 0x80 SWAP1 SWAP2 ADD MSTORE DUP3 PUSH2 0x438 DUP8 DUP5 PUSH2 0xC1F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MLOAD DUP2 LT PUSH2 0x451 JUMPI PUSH2 0x451 PUSH2 0xC3F JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP DUP1 DUP1 PUSH2 0x467 SWAP1 PUSH2 0xC55 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x3B0 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x48B DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x568 JUMP JUMPDEST DUP3 MLOAD SWAP1 SWAP2 POP ISZERO PUSH2 0x198 JUMPI PUSH2 0x4A8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP4 PUSH2 0x60E JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x4D3 JUMPI PUSH2 0x4D3 PUSH2 0xB0F JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x4FC JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT ISZERO PUSH2 0x562 JUMPI DUP1 DUP3 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MLOAD DUP2 LT PUSH2 0x538 JUMPI PUSH2 0x538 PUSH2 0xC3F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE DUP1 PUSH2 0x55A DUP2 PUSH2 0xC55 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x502 JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH23 0x3D602D80600A3D3981F3363D3D373D3D3D363D73000000 DUP3 PUSH1 0x60 SHL PUSH1 0xE8 SHR OR PUSH1 0x0 MSTORE PUSH15 0x5AF43D82803E903D91602B57FD5BF3 DUP3 PUSH1 0x78 SHL OR PUSH1 0x20 MSTORE PUSH1 0x37 PUSH1 0x9 PUSH1 0x0 CREATE SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x609 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313136373A20637265617465206661696C656400000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1D7 DUP4 DUP4 PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x416464726573733A206C6F772D6C6576656C2063616C6C206661696C65640000 DUP2 MSTORE POP PUSH1 0x60 DUP3 SELFBALANCE LT ISZERO PUSH2 0x6C5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A20696E73756666696369656E742062616C616E636520666F PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x722063616C6C0000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x600 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP8 PUSH1 0x40 MLOAD PUSH2 0x6E1 SWAP2 SWAP1 PUSH2 0xC7B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x71E JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x723 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x734 DUP8 DUP4 DUP4 DUP8 PUSH2 0x741 JUMP JUMPDEST SWAP3 POP POP POP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x7B0 JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0x7A9 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0x7A9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x600 JUMP JUMPDEST POP DUP2 PUSH2 0x739 JUMP JUMPDEST PUSH2 0x739 DUP4 DUP4 DUP2 MLOAD ISZERO PUSH2 0x7C5 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x600 SWAP2 SWAP1 PUSH2 0xC97 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x80F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x1D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0x852 JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x830 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x609 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x562 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x897 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8A0 DUP4 PUSH2 0x85B JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x8BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8C8 DUP6 DUP3 DUP7 ADD PUSH2 0x872 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP2 MLOAD PUSH1 0x3 DUP2 LT PUSH2 0x90A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP4 MSTORE POP PUSH1 0x20 DUP2 DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP1 DUP4 ADD MLOAD DUP3 AND SWAP1 DUP5 ADD MSTORE PUSH1 0x60 DUP1 DUP4 ADD MLOAD SWAP1 SWAP2 AND SWAP1 DUP4 ADD MSTORE PUSH1 0x80 SWAP1 DUP2 ADD MLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x98B JUMPI PUSH2 0x97D DUP4 DUP6 MLOAD PUSH2 0x8E8 JUMP JUMPDEST SWAP4 DUP6 ADD SWAP4 SWAP3 POP PUSH1 0x1 ADD PUSH2 0x96A JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x9AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9B5 DUP5 PUSH2 0x85B JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH2 0x9CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x9E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9F4 DUP7 DUP3 DUP8 ADD PUSH2 0x872 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xA19 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xA01 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0xA3A DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x9FE JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x40 DUP1 DUP5 MSTORE DUP2 MLOAD SWAP1 DUP5 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x20 SWAP2 SWAP1 DUP3 ADD SWAP1 PUSH1 0x60 DUP7 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xA93 JUMPI DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0xA6E JUMP JUMPDEST POP POP DUP5 DUP4 ADD MLOAD DUP7 DUP3 SUB DUP8 DUP6 ADD MSTORE DUP1 MLOAD DUP1 DUP4 MSTORE SWAP1 DUP5 ADD SWAP3 POP PUSH1 0x0 SWAP2 DUP5 ADD SWAP1 JUMPDEST DUP1 DUP4 LT ISZERO PUSH2 0xAD6 JUMPI PUSH2 0xAC4 DUP3 DUP6 MLOAD PUSH2 0x8E8 JUMP JUMPDEST SWAP2 POP DUP5 DUP5 ADD SWAP4 POP PUSH1 0x1 DUP4 ADD SWAP3 POP PUSH2 0xAB1 JUMP JUMPDEST POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 PUSH2 0xAF4 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0xA22 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0xB06 DUP2 DUP6 PUSH2 0xA4E JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xB38 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB41 DUP4 PUSH2 0x85B JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xB5E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xB72 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0xB84 JUMPI PUSH2 0xB84 PUSH2 0xB0F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0xBAC JUMPI PUSH2 0xBAC PUSH2 0xB0F JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0xBC5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0x739 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0xA4E JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND DUP3 DUP3 AND SUB SWAP1 DUP1 DUP3 GT ISZERO PUSH2 0x4A8 JUMPI PUSH2 0x4A8 PUSH2 0xC09 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND DUP2 DUP2 SUB PUSH2 0xC71 JUMPI PUSH2 0xC71 PUSH2 0xC09 JUMP JUMPDEST PUSH1 0x1 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0xC8D DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x9FE JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x1D7 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0xA22 JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x19 PUSH2 0x1E JUMP JUMPDEST PUSH2 0xDD JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x8A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x27 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320696E697469 PUSH1 0x44 DUP3 ADD MSTORE PUSH7 0x616C697A696E67 PUSH1 0xC8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xFF SWAP1 DUP2 AND EQ PUSH2 0xDB JUMPI PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST JUMP JUMPDEST PUSH2 0x551 DUP1 PUSH2 0xEC PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x88 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6ACCAB8C GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x6ACCAB8C EQ PUSH2 0xFE JUMPI DUP1 PUSH4 0x776D1A01 EQ PUSH2 0x115 JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0x12A JUMPI DUP1 PUSH4 0xD4B83992 EQ PUSH2 0x13D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x8D JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0xB5 JUMPI DUP1 PUSH4 0x4162169F EQ PUSH2 0xCA JUMPI DUP1 PUSH4 0x41DE6830 EQ PUSH2 0xEF JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA0 PUSH2 0x9B CALLDATASIZE PUSH1 0x4 PUSH2 0x485 JUMP JUMPDEST PUSH2 0x150 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xBD PUSH2 0x1A1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xAC SWAP2 SWAP1 PUSH2 0x4B6 JUMP JUMPDEST PUSH1 0x65 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xAC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x40 MLOAD PUSH2 0xAC SWAP2 SWAP1 PUSH2 0x4EA JUMP JUMPDEST PUSH2 0x107 PUSH1 0x98 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xAC JUMP JUMPDEST PUSH2 0x128 PUSH2 0x123 CALLDATASIZE PUSH1 0x4 PUSH2 0x527 JUMP JUMPDEST PUSH2 0x1CB JUMP JUMPDEST STOP JUMPDEST PUSH2 0x128 PUSH2 0x138 CALLDATASIZE PUSH1 0x4 PUSH2 0x527 JUMP JUMPDEST PUSH2 0x22A JUMP JUMPDEST PUSH1 0x97 SLOAD PUSH2 0xD7 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x41DE683 PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x180 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x19B JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1A9 PUSH2 0x467 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x97 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP2 SWAP1 DUP3 SWAP1 PUSH32 0x90CC2F570A6EB594B1580EA3E41247D2D73A55281889E86BD4EC2FC29C7E62D6 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 DUP1 ISZERO PUSH2 0x24A JUMPI POP PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xFF SWAP1 SWAP2 AND LT JUMPDEST DUP1 PUSH2 0x264 JUMPI POP ADDRESS EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x264 JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF AND PUSH1 0x1 EQ JUMPDEST PUSH2 0x2DB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x647920696E697469616C697A6564000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE DUP1 ISZERO PUSH2 0x2FE JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND PUSH2 0x100 OR SWAP1 SSTORE JUMPDEST PUSH2 0x307 DUP3 PUSH2 0x356 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x98 SSTORE DUP1 ISZERO PUSH2 0x352 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x3C1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x2D2 JUMP JUMPDEST PUSH2 0x3CA DUP2 PUSH2 0x3CD JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x438 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x2D2 JUMP JUMPDEST PUSH1 0x65 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x497 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x4AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0x4E1 JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x4BF JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH1 0x3 DUP4 LT PUSH2 0x50C JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 SWAP1 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x3CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x539 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x4AF DUP2 PUSH2 0x512 JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"749:1127:27:-:0;;;889:70;;;;;;;;;;923:31;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1454:32:45;;;749:1127:27;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_revert_2136":{"entryPoint":null,"id":2136,"parameterSlots":2,"returnSlots":0},"@clone_1347":{"entryPoint":1384,"id":1347,"parameterSlots":1,"returnSlots":1},"@deployMinimalProxy_5101":{"entryPoint":1143,"id":5101,"parameterSlots":2,"returnSlots":1},"@functionCallWithValue_1961":{"entryPoint":null,"id":1961,"parameterSlots":4,"returnSlots":1},"@functionCall_1877":{"entryPoint":1550,"id":1877,"parameterSlots":2,"returnSlots":1},"@implementation_4956":{"entryPoint":null,"id":4956,"parameterSlots":0,"returnSlots":1},"@isContract_1825":{"entryPoint":null,"id":1825,"parameterSlots":1,"returnSlots":1},"@mockHelpers_3108":{"entryPoint":1199,"id":3108,"parameterSlots":1,"returnSlots":1},"@mockPermissions_3069":{"entryPoint":754,"id":3069,"parameterSlots":3,"returnSlots":1},"@prepareInstallation_2711":{"entryPoint":534,"id":2711,"parameterSlots":2,"returnSlots":2},"@prepareUninstallation_2739":{"entryPoint":456,"id":2739,"parameterSlots":2,"returnSlots":1},"@prepareUpdate_4918":{"entryPoint":478,"id":4918,"parameterSlots":3,"returnSlots":2},"@protocolVersion_5135":{"entryPoint":414,"id":5135,"parameterSlots":0,"returnSlots":1},"@supportsInterface_2374":{"entryPoint":null,"id":2374,"parameterSlots":1,"returnSlots":1},"@supportsInterface_4947":{"entryPoint":333,"id":4947,"parameterSlots":1,"returnSlots":1},"@verifyCallResultFromTarget_2092":{"entryPoint":1857,"id":2092,"parameterSlots":4,"returnSlots":1},"abi_decode_address":{"entryPoint":2139,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_struct_SetupPayload_calldata":{"entryPoint":2162,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_bytes_memory_ptr":{"entryPoint":2853,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_struct$_SetupPayload_$4810_calldata_ptr":{"entryPoint":2180,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_uint16t_struct$_SetupPayload_$4810_calldata_ptr":{"entryPoint":2455,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_bytes4":{"entryPoint":2045,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encodeUpdatedPos_struct_MultiTargetPermission":{"entryPoint":2280,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_bytes":{"entryPoint":2594,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_struct_PreparedSetupData":{"entryPoint":2638,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":3195,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address_t_struct$_PreparedSetupData_$4802_memory_ptr__to_t_address_t_struct$_PreparedSetupData_$4802_memory_ptr__fromStack_reversed":{"entryPoint":3047,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr__fromStack_reversed":{"entryPoint":2382,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed":{"entryPoint":2087,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$4802_memory_ptr__to_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$4802_memory_ptr__fromStack_reversed":{"entryPoint":2785,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_contract$_IDAO_$2538__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":3223,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_68ca40b61460257f14e69f48b1a4dbc812e9afc6932f127ef8084544457b3335__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"checked_sub_t_uint160":{"entryPoint":3103,"id":null,"parameterSlots":2,"returnSlots":1},"copy_memory_to_memory_with_cleanup":{"entryPoint":2558,"id":null,"parameterSlots":3,"returnSlots":0},"increment_t_uint160":{"entryPoint":3157,"id":null,"parameterSlots":1,"returnSlots":1},"panic_error_0x11":{"entryPoint":3081,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x21":{"entryPoint":2258,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x32":{"entryPoint":3135,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":2831,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:10500:50","statements":[{"nodeType":"YulBlock","src":"6:3:50","statements":[]},{"body":{"nodeType":"YulBlock","src":"83:217:50","statements":[{"body":{"nodeType":"YulBlock","src":"129:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"138:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"141:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"131:6:50"},"nodeType":"YulFunctionCall","src":"131:12:50"},"nodeType":"YulExpressionStatement","src":"131:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"104:7:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"113:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"100:3:50"},"nodeType":"YulFunctionCall","src":"100:23:50"},{"kind":"number","nodeType":"YulLiteral","src":"125:2:50","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"96:3:50"},"nodeType":"YulFunctionCall","src":"96:32:50"},"nodeType":"YulIf","src":"93:52:50"},{"nodeType":"YulVariableDeclaration","src":"154:36:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"180:9:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"167:12:50"},"nodeType":"YulFunctionCall","src":"167:23:50"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"158:5:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"254:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"263:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"266:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"256:6:50"},"nodeType":"YulFunctionCall","src":"256:12:50"},"nodeType":"YulExpressionStatement","src":"256:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"212:5:50"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"223:5:50"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"234:3:50","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"239:10:50","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"230:3:50"},"nodeType":"YulFunctionCall","src":"230:20:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"219:3:50"},"nodeType":"YulFunctionCall","src":"219:32:50"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"209:2:50"},"nodeType":"YulFunctionCall","src":"209:43:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"202:6:50"},"nodeType":"YulFunctionCall","src":"202:51:50"},"nodeType":"YulIf","src":"199:71:50"},{"nodeType":"YulAssignment","src":"279:15:50","value":{"name":"value","nodeType":"YulIdentifier","src":"289:5:50"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"279:6:50"}]}]},"name":"abi_decode_tuple_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"49:9:50","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"60:7:50","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"72:6:50","type":""}],"src":"14:286:50"},{"body":{"nodeType":"YulBlock","src":"400:92:50","statements":[{"nodeType":"YulAssignment","src":"410:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"422:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"433:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"418:3:50"},"nodeType":"YulFunctionCall","src":"418:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"410:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"452:9:50"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"477:6:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"470:6:50"},"nodeType":"YulFunctionCall","src":"470:14:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"463:6:50"},"nodeType":"YulFunctionCall","src":"463:22:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"445:6:50"},"nodeType":"YulFunctionCall","src":"445:41:50"},"nodeType":"YulExpressionStatement","src":"445:41:50"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"369:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"380:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"391:4:50","type":""}],"src":"305:187:50"},{"body":{"nodeType":"YulBlock","src":"640:358:50","statements":[{"nodeType":"YulAssignment","src":"650:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"662:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"673:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"658:3:50"},"nodeType":"YulFunctionCall","src":"658:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"650:4:50"}]},{"nodeType":"YulVariableDeclaration","src":"685:20:50","value":{"name":"headStart","nodeType":"YulIdentifier","src":"696:9:50"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"689:3:50","type":""}]},{"nodeType":"YulAssignment","src":"714:16:50","value":{"name":"headStart","nodeType":"YulIdentifier","src":"721:9:50"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"714:3:50"}]},{"nodeType":"YulVariableDeclaration","src":"739:20:50","value":{"name":"value0","nodeType":"YulIdentifier","src":"753:6:50"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"743:6:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"768:10:50","value":{"kind":"number","nodeType":"YulLiteral","src":"777:1:50","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"772:1:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"834:158:50","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"855:3:50"},{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"870:6:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"864:5:50"},"nodeType":"YulFunctionCall","src":"864:13:50"},{"kind":"number","nodeType":"YulLiteral","src":"879:4:50","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"860:3:50"},"nodeType":"YulFunctionCall","src":"860:24:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"848:6:50"},"nodeType":"YulFunctionCall","src":"848:37:50"},"nodeType":"YulExpressionStatement","src":"848:37:50"},{"nodeType":"YulVariableDeclaration","src":"898:14:50","value":{"kind":"number","nodeType":"YulLiteral","src":"908:4:50","type":"","value":"0x20"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"902:2:50","type":""}]},{"nodeType":"YulAssignment","src":"925:19:50","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"936:3:50"},{"name":"_1","nodeType":"YulIdentifier","src":"941:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"932:3:50"},"nodeType":"YulFunctionCall","src":"932:12:50"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"925:3:50"}]},{"nodeType":"YulAssignment","src":"957:25:50","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"971:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"979:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"967:3:50"},"nodeType":"YulFunctionCall","src":"967:15:50"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"957:6:50"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"798:1:50"},{"kind":"number","nodeType":"YulLiteral","src":"801:4:50","type":"","value":"0x03"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"795:2:50"},"nodeType":"YulFunctionCall","src":"795:11:50"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"807:18:50","statements":[{"nodeType":"YulAssignment","src":"809:14:50","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"818:1:50"},{"kind":"number","nodeType":"YulLiteral","src":"821:1:50","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"814:3:50"},"nodeType":"YulFunctionCall","src":"814:9:50"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"809:1:50"}]}]},"pre":{"nodeType":"YulBlock","src":"791:3:50","statements":[]},"src":"787:205:50"}]},"name":"abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"609:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"620:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"631:4:50","type":""}],"src":"497:501:50"},{"body":{"nodeType":"YulBlock","src":"1104:125:50","statements":[{"nodeType":"YulAssignment","src":"1114:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1126:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"1137:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1122:3:50"},"nodeType":"YulFunctionCall","src":"1122:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1114:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1156:9:50"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1171:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"1179:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1167:3:50"},"nodeType":"YulFunctionCall","src":"1167:55:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1149:6:50"},"nodeType":"YulFunctionCall","src":"1149:74:50"},"nodeType":"YulExpressionStatement","src":"1149:74:50"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1073:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1084:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1095:4:50","type":""}],"src":"1003:226:50"},{"body":{"nodeType":"YulBlock","src":"1283:147:50","statements":[{"nodeType":"YulAssignment","src":"1293:29:50","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1315:6:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1302:12:50"},"nodeType":"YulFunctionCall","src":"1302:20:50"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"1293:5:50"}]},{"body":{"nodeType":"YulBlock","src":"1408:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1417:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1420:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1410:6:50"},"nodeType":"YulFunctionCall","src":"1410:12:50"},"nodeType":"YulExpressionStatement","src":"1410:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1344:5:50"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1355:5:50"},{"kind":"number","nodeType":"YulLiteral","src":"1362:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1351:3:50"},"nodeType":"YulFunctionCall","src":"1351:54:50"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1341:2:50"},"nodeType":"YulFunctionCall","src":"1341:65:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1334:6:50"},"nodeType":"YulFunctionCall","src":"1334:73:50"},"nodeType":"YulIf","src":"1331:93:50"}]},"name":"abi_decode_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"1262:6:50","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"1273:5:50","type":""}],"src":"1234:196:50"},{"body":{"nodeType":"YulBlock","src":"1510:85:50","statements":[{"body":{"nodeType":"YulBlock","src":"1549:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1558:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1561:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1551:6:50"},"nodeType":"YulFunctionCall","src":"1551:12:50"},"nodeType":"YulExpressionStatement","src":"1551:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"end","nodeType":"YulIdentifier","src":"1531:3:50"},{"name":"offset","nodeType":"YulIdentifier","src":"1536:6:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1527:3:50"},"nodeType":"YulFunctionCall","src":"1527:16:50"},{"kind":"number","nodeType":"YulLiteral","src":"1545:2:50","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1523:3:50"},"nodeType":"YulFunctionCall","src":"1523:25:50"},"nodeType":"YulIf","src":"1520:45:50"},{"nodeType":"YulAssignment","src":"1574:15:50","value":{"name":"offset","nodeType":"YulIdentifier","src":"1583:6:50"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"1574:5:50"}]}]},"name":"abi_decode_struct_SetupPayload_calldata","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"1484:6:50","type":""},{"name":"end","nodeType":"YulTypedName","src":"1492:3:50","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"1500:5:50","type":""}],"src":"1435:160:50"},{"body":{"nodeType":"YulBlock","src":"1719:321:50","statements":[{"body":{"nodeType":"YulBlock","src":"1765:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1774:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1777:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1767:6:50"},"nodeType":"YulFunctionCall","src":"1767:12:50"},"nodeType":"YulExpressionStatement","src":"1767:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1740:7:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"1749:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1736:3:50"},"nodeType":"YulFunctionCall","src":"1736:23:50"},{"kind":"number","nodeType":"YulLiteral","src":"1761:2:50","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1732:3:50"},"nodeType":"YulFunctionCall","src":"1732:32:50"},"nodeType":"YulIf","src":"1729:52:50"},{"nodeType":"YulAssignment","src":"1790:39:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1819:9:50"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"1800:18:50"},"nodeType":"YulFunctionCall","src":"1800:29:50"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1790:6:50"}]},{"nodeType":"YulVariableDeclaration","src":"1838:46:50","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1869:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"1880:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1865:3:50"},"nodeType":"YulFunctionCall","src":"1865:18:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1852:12:50"},"nodeType":"YulFunctionCall","src":"1852:32:50"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1842:6:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"1927:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1936:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1939:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1929:6:50"},"nodeType":"YulFunctionCall","src":"1929:12:50"},"nodeType":"YulExpressionStatement","src":"1929:12:50"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1899:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"1907:18:50","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1896:2:50"},"nodeType":"YulFunctionCall","src":"1896:30:50"},"nodeType":"YulIf","src":"1893:50:50"},{"nodeType":"YulAssignment","src":"1952:82:50","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2006:9:50"},{"name":"offset","nodeType":"YulIdentifier","src":"2017:6:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2002:3:50"},"nodeType":"YulFunctionCall","src":"2002:22:50"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2026:7:50"}],"functionName":{"name":"abi_decode_struct_SetupPayload_calldata","nodeType":"YulIdentifier","src":"1962:39:50"},"nodeType":"YulFunctionCall","src":"1962:72:50"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1952:6:50"}]}]},"name":"abi_decode_tuple_t_addresst_struct$_SetupPayload_$4810_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1677:9:50","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1688:7:50","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1700:6:50","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1708:6:50","type":""}],"src":"1600:440:50"},{"body":{"nodeType":"YulBlock","src":"2077:95:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2094:1:50","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2101:3:50","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"2106:10:50","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2097:3:50"},"nodeType":"YulFunctionCall","src":"2097:20:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2087:6:50"},"nodeType":"YulFunctionCall","src":"2087:31:50"},"nodeType":"YulExpressionStatement","src":"2087:31:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2134:1:50","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"2137:4:50","type":"","value":"0x21"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2127:6:50"},"nodeType":"YulFunctionCall","src":"2127:15:50"},"nodeType":"YulExpressionStatement","src":"2127:15:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2158:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2161:4:50","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2151:6:50"},"nodeType":"YulFunctionCall","src":"2151:15:50"},"nodeType":"YulExpressionStatement","src":"2151:15:50"}]},"name":"panic_error_0x21","nodeType":"YulFunctionDefinition","src":"2045:127:50"},{"body":{"nodeType":"YulBlock","src":"2267:606:50","statements":[{"nodeType":"YulVariableDeclaration","src":"2277:23:50","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2293:6:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2287:5:50"},"nodeType":"YulFunctionCall","src":"2287:13:50"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"2281:2:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"2338:111:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2359:1:50","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2366:3:50","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"2371:10:50","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2362:3:50"},"nodeType":"YulFunctionCall","src":"2362:20:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2352:6:50"},"nodeType":"YulFunctionCall","src":"2352:31:50"},"nodeType":"YulExpressionStatement","src":"2352:31:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2403:1:50","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"2406:4:50","type":"","value":"0x21"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2396:6:50"},"nodeType":"YulFunctionCall","src":"2396:15:50"},"nodeType":"YulExpressionStatement","src":"2396:15:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2431:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2434:4:50","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2424:6:50"},"nodeType":"YulFunctionCall","src":"2424:15:50"},"nodeType":"YulExpressionStatement","src":"2424:15:50"}]},"condition":{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"2322:2:50"},{"kind":"number","nodeType":"YulLiteral","src":"2326:1:50","type":"","value":"3"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2319:2:50"},"nodeType":"YulFunctionCall","src":"2319:9:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2312:6:50"},"nodeType":"YulFunctionCall","src":"2312:17:50"},"nodeType":"YulIf","src":"2309:140:50"},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2465:3:50"},{"name":"_1","nodeType":"YulIdentifier","src":"2470:2:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2458:6:50"},"nodeType":"YulFunctionCall","src":"2458:15:50"},"nodeType":"YulExpressionStatement","src":"2458:15:50"},{"nodeType":"YulVariableDeclaration","src":"2482:44:50","value":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2512:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"2520:4:50","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2508:3:50"},"nodeType":"YulFunctionCall","src":"2508:17:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2502:5:50"},"nodeType":"YulFunctionCall","src":"2502:24:50"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"2486:12:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2535:52:50","value":{"kind":"number","nodeType":"YulLiteral","src":"2545:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"2539:2:50","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2607:3:50"},{"kind":"number","nodeType":"YulLiteral","src":"2612:4:50","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2603:3:50"},"nodeType":"YulFunctionCall","src":"2603:14:50"},{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"2623:12:50"},{"name":"_2","nodeType":"YulIdentifier","src":"2637:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2619:3:50"},"nodeType":"YulFunctionCall","src":"2619:21:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2596:6:50"},"nodeType":"YulFunctionCall","src":"2596:45:50"},"nodeType":"YulExpressionStatement","src":"2596:45:50"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2661:3:50"},{"kind":"number","nodeType":"YulLiteral","src":"2666:4:50","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2657:3:50"},"nodeType":"YulFunctionCall","src":"2657:14:50"},{"arguments":[{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2687:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"2695:4:50","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2683:3:50"},"nodeType":"YulFunctionCall","src":"2683:17:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2677:5:50"},"nodeType":"YulFunctionCall","src":"2677:24:50"},{"name":"_2","nodeType":"YulIdentifier","src":"2703:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2673:3:50"},"nodeType":"YulFunctionCall","src":"2673:33:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2650:6:50"},"nodeType":"YulFunctionCall","src":"2650:57:50"},"nodeType":"YulExpressionStatement","src":"2650:57:50"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2727:3:50"},{"kind":"number","nodeType":"YulLiteral","src":"2732:4:50","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2723:3:50"},"nodeType":"YulFunctionCall","src":"2723:14:50"},{"arguments":[{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2753:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"2761:4:50","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2749:3:50"},"nodeType":"YulFunctionCall","src":"2749:17:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2743:5:50"},"nodeType":"YulFunctionCall","src":"2743:24:50"},{"name":"_2","nodeType":"YulIdentifier","src":"2769:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2739:3:50"},"nodeType":"YulFunctionCall","src":"2739:33:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2716:6:50"},"nodeType":"YulFunctionCall","src":"2716:57:50"},"nodeType":"YulExpressionStatement","src":"2716:57:50"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2793:3:50"},{"kind":"number","nodeType":"YulLiteral","src":"2798:4:50","type":"","value":"0x80"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2789:3:50"},"nodeType":"YulFunctionCall","src":"2789:14:50"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2815:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"2823:4:50","type":"","value":"0x80"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2811:3:50"},"nodeType":"YulFunctionCall","src":"2811:17:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2805:5:50"},"nodeType":"YulFunctionCall","src":"2805:24:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2782:6:50"},"nodeType":"YulFunctionCall","src":"2782:48:50"},"nodeType":"YulExpressionStatement","src":"2782:48:50"},{"nodeType":"YulAssignment","src":"2839:28:50","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2857:3:50"},{"kind":"number","nodeType":"YulLiteral","src":"2862:4:50","type":"","value":"0xa0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2853:3:50"},"nodeType":"YulFunctionCall","src":"2853:14:50"},"variableNames":[{"name":"updatedPos","nodeType":"YulIdentifier","src":"2839:10:50"}]}]},"name":"abi_encodeUpdatedPos_struct_MultiTargetPermission","nodeType":"YulFunctionDefinition","parameters":[{"name":"value0","nodeType":"YulTypedName","src":"2236:6:50","type":""},{"name":"pos","nodeType":"YulTypedName","src":"2244:3:50","type":""}],"returnVariables":[{"name":"updatedPos","nodeType":"YulTypedName","src":"2252:10:50","type":""}],"src":"2177:696:50"},{"body":{"nodeType":"YulBlock","src":"3107:499:50","statements":[{"nodeType":"YulVariableDeclaration","src":"3117:12:50","value":{"kind":"number","nodeType":"YulLiteral","src":"3127:2:50","type":"","value":"32"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"3121:2:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3138:32:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3156:9:50"},{"name":"_1","nodeType":"YulIdentifier","src":"3167:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3152:3:50"},"nodeType":"YulFunctionCall","src":"3152:18:50"},"variables":[{"name":"tail_1","nodeType":"YulTypedName","src":"3142:6:50","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3186:9:50"},{"name":"_1","nodeType":"YulIdentifier","src":"3197:2:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3179:6:50"},"nodeType":"YulFunctionCall","src":"3179:21:50"},"nodeType":"YulExpressionStatement","src":"3179:21:50"},{"nodeType":"YulVariableDeclaration","src":"3209:17:50","value":{"name":"tail_1","nodeType":"YulIdentifier","src":"3220:6:50"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"3213:3:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3235:27:50","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3255:6:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3249:5:50"},"nodeType":"YulFunctionCall","src":"3249:13:50"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"3239:6:50","type":""}]},{"expression":{"arguments":[{"name":"tail_1","nodeType":"YulIdentifier","src":"3278:6:50"},{"name":"length","nodeType":"YulIdentifier","src":"3286:6:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3271:6:50"},"nodeType":"YulFunctionCall","src":"3271:22:50"},"nodeType":"YulExpressionStatement","src":"3271:22:50"},{"nodeType":"YulAssignment","src":"3302:25:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3313:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"3324:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3309:3:50"},"nodeType":"YulFunctionCall","src":"3309:18:50"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"3302:3:50"}]},{"nodeType":"YulVariableDeclaration","src":"3336:29:50","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3354:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"3362:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3350:3:50"},"nodeType":"YulFunctionCall","src":"3350:15:50"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"3340:6:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3374:10:50","value":{"kind":"number","nodeType":"YulLiteral","src":"3383:1:50","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"3378:1:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"3442:138:50","statements":[{"nodeType":"YulAssignment","src":"3456:76:50","value":{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"3519:6:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3513:5:50"},"nodeType":"YulFunctionCall","src":"3513:13:50"},{"name":"pos","nodeType":"YulIdentifier","src":"3528:3:50"}],"functionName":{"name":"abi_encodeUpdatedPos_struct_MultiTargetPermission","nodeType":"YulIdentifier","src":"3463:49:50"},"nodeType":"YulFunctionCall","src":"3463:69:50"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"3456:3:50"}]},{"nodeType":"YulAssignment","src":"3545:25:50","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"3559:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"3567:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3555:3:50"},"nodeType":"YulFunctionCall","src":"3555:15:50"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"3545:6:50"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3404:1:50"},{"name":"length","nodeType":"YulIdentifier","src":"3407:6:50"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"3401:2:50"},"nodeType":"YulFunctionCall","src":"3401:13:50"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"3415:18:50","statements":[{"nodeType":"YulAssignment","src":"3417:14:50","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3426:1:50"},{"kind":"number","nodeType":"YulLiteral","src":"3429:1:50","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3422:3:50"},"nodeType":"YulFunctionCall","src":"3422:9:50"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"3417:1:50"}]}]},"pre":{"nodeType":"YulBlock","src":"3397:3:50","statements":[]},"src":"3393:187:50"},{"nodeType":"YulAssignment","src":"3589:11:50","value":{"name":"pos","nodeType":"YulIdentifier","src":"3597:3:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3589:4:50"}]}]},"name":"abi_encode_tuple_t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3076:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3087:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3098:4:50","type":""}],"src":"2878:728:50"},{"body":{"nodeType":"YulBlock","src":"3746:465:50","statements":[{"body":{"nodeType":"YulBlock","src":"3792:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3801:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3804:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3794:6:50"},"nodeType":"YulFunctionCall","src":"3794:12:50"},"nodeType":"YulExpressionStatement","src":"3794:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3767:7:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"3776:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3763:3:50"},"nodeType":"YulFunctionCall","src":"3763:23:50"},{"kind":"number","nodeType":"YulLiteral","src":"3788:2:50","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3759:3:50"},"nodeType":"YulFunctionCall","src":"3759:32:50"},"nodeType":"YulIf","src":"3756:52:50"},{"nodeType":"YulAssignment","src":"3817:39:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3846:9:50"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"3827:18:50"},"nodeType":"YulFunctionCall","src":"3827:29:50"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3817:6:50"}]},{"nodeType":"YulVariableDeclaration","src":"3865:45:50","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3895:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"3906:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3891:3:50"},"nodeType":"YulFunctionCall","src":"3891:18:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3878:12:50"},"nodeType":"YulFunctionCall","src":"3878:32:50"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"3869:5:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"3960:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3969:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3972:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3962:6:50"},"nodeType":"YulFunctionCall","src":"3962:12:50"},"nodeType":"YulExpressionStatement","src":"3962:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3932:5:50"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3943:5:50"},{"kind":"number","nodeType":"YulLiteral","src":"3950:6:50","type":"","value":"0xffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3939:3:50"},"nodeType":"YulFunctionCall","src":"3939:18:50"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"3929:2:50"},"nodeType":"YulFunctionCall","src":"3929:29:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3922:6:50"},"nodeType":"YulFunctionCall","src":"3922:37:50"},"nodeType":"YulIf","src":"3919:57:50"},{"nodeType":"YulAssignment","src":"3985:15:50","value":{"name":"value","nodeType":"YulIdentifier","src":"3995:5:50"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"3985:6:50"}]},{"nodeType":"YulVariableDeclaration","src":"4009:46:50","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4040:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"4051:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4036:3:50"},"nodeType":"YulFunctionCall","src":"4036:18:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4023:12:50"},"nodeType":"YulFunctionCall","src":"4023:32:50"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4013:6:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"4098:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4107:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4110:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4100:6:50"},"nodeType":"YulFunctionCall","src":"4100:12:50"},"nodeType":"YulExpressionStatement","src":"4100:12:50"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"4070:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"4078:18:50","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4067:2:50"},"nodeType":"YulFunctionCall","src":"4067:30:50"},"nodeType":"YulIf","src":"4064:50:50"},{"nodeType":"YulAssignment","src":"4123:82:50","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4177:9:50"},{"name":"offset","nodeType":"YulIdentifier","src":"4188:6:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4173:3:50"},"nodeType":"YulFunctionCall","src":"4173:22:50"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4197:7:50"}],"functionName":{"name":"abi_decode_struct_SetupPayload_calldata","nodeType":"YulIdentifier","src":"4133:39:50"},"nodeType":"YulFunctionCall","src":"4133:72:50"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"4123:6:50"}]}]},"name":"abi_decode_tuple_t_addresst_uint16t_struct$_SetupPayload_$4810_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3696:9:50","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3707:7:50","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3719:6:50","type":""},{"name":"value1","nodeType":"YulTypedName","src":"3727:6:50","type":""},{"name":"value2","nodeType":"YulTypedName","src":"3735:6:50","type":""}],"src":"3611:600:50"},{"body":{"nodeType":"YulBlock","src":"4282:184:50","statements":[{"nodeType":"YulVariableDeclaration","src":"4292:10:50","value":{"kind":"number","nodeType":"YulLiteral","src":"4301:1:50","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"4296:1:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"4361:63:50","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"4386:3:50"},{"name":"i","nodeType":"YulIdentifier","src":"4391:1:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4382:3:50"},"nodeType":"YulFunctionCall","src":"4382:11:50"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"4405:3:50"},{"name":"i","nodeType":"YulIdentifier","src":"4410:1:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4401:3:50"},"nodeType":"YulFunctionCall","src":"4401:11:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4395:5:50"},"nodeType":"YulFunctionCall","src":"4395:18:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4375:6:50"},"nodeType":"YulFunctionCall","src":"4375:39:50"},"nodeType":"YulExpressionStatement","src":"4375:39:50"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"4322:1:50"},{"name":"length","nodeType":"YulIdentifier","src":"4325:6:50"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"4319:2:50"},"nodeType":"YulFunctionCall","src":"4319:13:50"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"4333:19:50","statements":[{"nodeType":"YulAssignment","src":"4335:15:50","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"4344:1:50"},{"kind":"number","nodeType":"YulLiteral","src":"4347:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4340:3:50"},"nodeType":"YulFunctionCall","src":"4340:10:50"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"4335:1:50"}]}]},"pre":{"nodeType":"YulBlock","src":"4315:3:50","statements":[]},"src":"4311:113:50"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"4444:3:50"},{"name":"length","nodeType":"YulIdentifier","src":"4449:6:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4440:3:50"},"nodeType":"YulFunctionCall","src":"4440:16:50"},{"kind":"number","nodeType":"YulLiteral","src":"4458:1:50","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4433:6:50"},"nodeType":"YulFunctionCall","src":"4433:27:50"},"nodeType":"YulExpressionStatement","src":"4433:27:50"}]},"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"4260:3:50","type":""},{"name":"dst","nodeType":"YulTypedName","src":"4265:3:50","type":""},{"name":"length","nodeType":"YulTypedName","src":"4270:6:50","type":""}],"src":"4216:250:50"},{"body":{"nodeType":"YulBlock","src":"4520:221:50","statements":[{"nodeType":"YulVariableDeclaration","src":"4530:26:50","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4550:5:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4544:5:50"},"nodeType":"YulFunctionCall","src":"4544:12:50"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"4534:6:50","type":""}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4572:3:50"},{"name":"length","nodeType":"YulIdentifier","src":"4577:6:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4565:6:50"},"nodeType":"YulFunctionCall","src":"4565:19:50"},"nodeType":"YulExpressionStatement","src":"4565:19:50"},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4632:5:50"},{"kind":"number","nodeType":"YulLiteral","src":"4639:4:50","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4628:3:50"},"nodeType":"YulFunctionCall","src":"4628:16:50"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4650:3:50"},{"kind":"number","nodeType":"YulLiteral","src":"4655:4:50","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4646:3:50"},"nodeType":"YulFunctionCall","src":"4646:14:50"},{"name":"length","nodeType":"YulIdentifier","src":"4662:6:50"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"4593:34:50"},"nodeType":"YulFunctionCall","src":"4593:76:50"},"nodeType":"YulExpressionStatement","src":"4593:76:50"},{"nodeType":"YulAssignment","src":"4678:57:50","value":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4693:3:50"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"4706:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"4714:2:50","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4702:3:50"},"nodeType":"YulFunctionCall","src":"4702:15:50"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4723:2:50","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"4719:3:50"},"nodeType":"YulFunctionCall","src":"4719:7:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4698:3:50"},"nodeType":"YulFunctionCall","src":"4698:29:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4689:3:50"},"nodeType":"YulFunctionCall","src":"4689:39:50"},{"kind":"number","nodeType":"YulLiteral","src":"4730:4:50","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4685:3:50"},"nodeType":"YulFunctionCall","src":"4685:50:50"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"4678:3:50"}]}]},"name":"abi_encode_bytes","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"4497:5:50","type":""},{"name":"pos","nodeType":"YulTypedName","src":"4504:3:50","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"4512:3:50","type":""}],"src":"4471:270:50"},{"body":{"nodeType":"YulBlock","src":"4814:1094:50","statements":[{"nodeType":"YulVariableDeclaration","src":"4824:26:50","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4840:3:50"},{"kind":"number","nodeType":"YulLiteral","src":"4845:4:50","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4836:3:50"},"nodeType":"YulFunctionCall","src":"4836:14:50"},"variables":[{"name":"tail","nodeType":"YulTypedName","src":"4828:4:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4859:32:50","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4885:5:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4879:5:50"},"nodeType":"YulFunctionCall","src":"4879:12:50"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"4863:12:50","type":""}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4907:3:50"},{"kind":"number","nodeType":"YulLiteral","src":"4912:4:50","type":"","value":"0x40"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4900:6:50"},"nodeType":"YulFunctionCall","src":"4900:17:50"},"nodeType":"YulExpressionStatement","src":"4900:17:50"},{"nodeType":"YulVariableDeclaration","src":"4926:17:50","value":{"name":"tail","nodeType":"YulIdentifier","src":"4939:4:50"},"variables":[{"name":"pos_1","nodeType":"YulTypedName","src":"4930:5:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4952:33:50","value":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"4972:12:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4966:5:50"},"nodeType":"YulFunctionCall","src":"4966:19:50"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"4956:6:50","type":""}]},{"expression":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"5001:4:50"},{"name":"length","nodeType":"YulIdentifier","src":"5007:6:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4994:6:50"},"nodeType":"YulFunctionCall","src":"4994:20:50"},"nodeType":"YulExpressionStatement","src":"4994:20:50"},{"nodeType":"YulAssignment","src":"5023:21:50","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5036:3:50"},{"kind":"number","nodeType":"YulLiteral","src":"5041:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5032:3:50"},"nodeType":"YulFunctionCall","src":"5032:12:50"},"variableNames":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5023:5:50"}]},{"nodeType":"YulVariableDeclaration","src":"5053:14:50","value":{"kind":"number","nodeType":"YulLiteral","src":"5063:4:50","type":"","value":"0x20"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"5057:2:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5076:35:50","value":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"5094:12:50"},{"name":"_1","nodeType":"YulIdentifier","src":"5108:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5090:3:50"},"nodeType":"YulFunctionCall","src":"5090:21:50"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"5080:6:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5120:10:50","value":{"kind":"number","nodeType":"YulLiteral","src":"5129:1:50","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"5124:1:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"5188:175:50","statements":[{"expression":{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5209:5:50"},{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"5226:6:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5220:5:50"},"nodeType":"YulFunctionCall","src":"5220:13:50"},{"kind":"number","nodeType":"YulLiteral","src":"5235:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5216:3:50"},"nodeType":"YulFunctionCall","src":"5216:62:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5202:6:50"},"nodeType":"YulFunctionCall","src":"5202:77:50"},"nodeType":"YulExpressionStatement","src":"5202:77:50"},{"nodeType":"YulAssignment","src":"5292:23:50","value":{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5305:5:50"},{"name":"_1","nodeType":"YulIdentifier","src":"5312:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5301:3:50"},"nodeType":"YulFunctionCall","src":"5301:14:50"},"variableNames":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5292:5:50"}]},{"nodeType":"YulAssignment","src":"5328:25:50","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"5342:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"5350:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5338:3:50"},"nodeType":"YulFunctionCall","src":"5338:15:50"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"5328:6:50"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"5150:1:50"},{"name":"length","nodeType":"YulIdentifier","src":"5153:6:50"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"5147:2:50"},"nodeType":"YulFunctionCall","src":"5147:13:50"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"5161:18:50","statements":[{"nodeType":"YulAssignment","src":"5163:14:50","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"5172:1:50"},{"kind":"number","nodeType":"YulLiteral","src":"5175:1:50","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5168:3:50"},"nodeType":"YulFunctionCall","src":"5168:9:50"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"5163:1:50"}]}]},"pre":{"nodeType":"YulBlock","src":"5143:3:50","statements":[]},"src":"5139:224:50"},{"nodeType":"YulVariableDeclaration","src":"5372:43:50","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5404:5:50"},{"name":"_1","nodeType":"YulIdentifier","src":"5411:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5400:3:50"},"nodeType":"YulFunctionCall","src":"5400:14:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5394:5:50"},"nodeType":"YulFunctionCall","src":"5394:21:50"},"variables":[{"name":"memberValue0_1","nodeType":"YulTypedName","src":"5376:14:50","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5435:3:50"},{"name":"_1","nodeType":"YulIdentifier","src":"5440:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5431:3:50"},"nodeType":"YulFunctionCall","src":"5431:12:50"},{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5449:5:50"},{"name":"pos","nodeType":"YulIdentifier","src":"5456:3:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5445:3:50"},"nodeType":"YulFunctionCall","src":"5445:15:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5424:6:50"},"nodeType":"YulFunctionCall","src":"5424:37:50"},"nodeType":"YulExpressionStatement","src":"5424:37:50"},{"nodeType":"YulVariableDeclaration","src":"5470:18:50","value":{"name":"pos_1","nodeType":"YulIdentifier","src":"5483:5:50"},"variables":[{"name":"pos_2","nodeType":"YulTypedName","src":"5474:5:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5497:37:50","value":{"arguments":[{"name":"memberValue0_1","nodeType":"YulIdentifier","src":"5519:14:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5513:5:50"},"nodeType":"YulFunctionCall","src":"5513:21:50"},"variables":[{"name":"length_1","nodeType":"YulTypedName","src":"5501:8:50","type":""}]},{"expression":{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5550:5:50"},{"name":"length_1","nodeType":"YulIdentifier","src":"5557:8:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5543:6:50"},"nodeType":"YulFunctionCall","src":"5543:23:50"},"nodeType":"YulExpressionStatement","src":"5543:23:50"},{"nodeType":"YulAssignment","src":"5575:23:50","value":{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5588:5:50"},{"name":"_1","nodeType":"YulIdentifier","src":"5595:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5584:3:50"},"nodeType":"YulFunctionCall","src":"5584:14:50"},"variableNames":[{"name":"pos_2","nodeType":"YulIdentifier","src":"5575:5:50"}]},{"nodeType":"YulVariableDeclaration","src":"5607:39:50","value":{"arguments":[{"name":"memberValue0_1","nodeType":"YulIdentifier","src":"5627:14:50"},{"name":"_1","nodeType":"YulIdentifier","src":"5643:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5623:3:50"},"nodeType":"YulFunctionCall","src":"5623:23:50"},"variables":[{"name":"srcPtr_1","nodeType":"YulTypedName","src":"5611:8:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5655:12:50","value":{"kind":"number","nodeType":"YulLiteral","src":"5666:1:50","type":"","value":"0"},"variables":[{"name":"i_1","nodeType":"YulTypedName","src":"5659:3:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"5733:148:50","statements":[{"nodeType":"YulAssignment","src":"5747:82:50","value":{"arguments":[{"arguments":[{"name":"srcPtr_1","nodeType":"YulIdentifier","src":"5812:8:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5806:5:50"},"nodeType":"YulFunctionCall","src":"5806:15:50"},{"name":"pos_2","nodeType":"YulIdentifier","src":"5823:5:50"}],"functionName":{"name":"abi_encodeUpdatedPos_struct_MultiTargetPermission","nodeType":"YulIdentifier","src":"5756:49:50"},"nodeType":"YulFunctionCall","src":"5756:73:50"},"variableNames":[{"name":"pos_2","nodeType":"YulIdentifier","src":"5747:5:50"}]},{"nodeType":"YulAssignment","src":"5842:29:50","value":{"arguments":[{"name":"srcPtr_1","nodeType":"YulIdentifier","src":"5858:8:50"},{"name":"_1","nodeType":"YulIdentifier","src":"5868:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5854:3:50"},"nodeType":"YulFunctionCall","src":"5854:17:50"},"variableNames":[{"name":"srcPtr_1","nodeType":"YulIdentifier","src":"5842:8:50"}]}]},"condition":{"arguments":[{"name":"i_1","nodeType":"YulIdentifier","src":"5687:3:50"},{"name":"length_1","nodeType":"YulIdentifier","src":"5692:8:50"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"5684:2:50"},"nodeType":"YulFunctionCall","src":"5684:17:50"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"5702:22:50","statements":[{"nodeType":"YulAssignment","src":"5704:18:50","value":{"arguments":[{"name":"i_1","nodeType":"YulIdentifier","src":"5715:3:50"},{"kind":"number","nodeType":"YulLiteral","src":"5720:1:50","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5711:3:50"},"nodeType":"YulFunctionCall","src":"5711:11:50"},"variableNames":[{"name":"i_1","nodeType":"YulIdentifier","src":"5704:3:50"}]}]},"pre":{"nodeType":"YulBlock","src":"5680:3:50","statements":[]},"src":"5676:205:50"},{"nodeType":"YulAssignment","src":"5890:12:50","value":{"name":"pos_2","nodeType":"YulIdentifier","src":"5897:5:50"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"5890:3:50"}]}]},"name":"abi_encode_struct_PreparedSetupData","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"4791:5:50","type":""},{"name":"pos","nodeType":"YulTypedName","src":"4798:3:50","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"4806:3:50","type":""}],"src":"4746:1162:50"},{"body":{"nodeType":"YulBlock","src":"6130:231:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6147:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"6158:2:50","type":"","value":"64"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6140:6:50"},"nodeType":"YulFunctionCall","src":"6140:21:50"},"nodeType":"YulExpressionStatement","src":"6140:21:50"},{"nodeType":"YulVariableDeclaration","src":"6170:58:50","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6201:6:50"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6213:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"6224:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6209:3:50"},"nodeType":"YulFunctionCall","src":"6209:18:50"}],"functionName":{"name":"abi_encode_bytes","nodeType":"YulIdentifier","src":"6184:16:50"},"nodeType":"YulFunctionCall","src":"6184:44:50"},"variables":[{"name":"tail_1","nodeType":"YulTypedName","src":"6174:6:50","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6248:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"6259:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6244:3:50"},"nodeType":"YulFunctionCall","src":"6244:18:50"},{"arguments":[{"name":"tail_1","nodeType":"YulIdentifier","src":"6268:6:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"6276:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6264:3:50"},"nodeType":"YulFunctionCall","src":"6264:22:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6237:6:50"},"nodeType":"YulFunctionCall","src":"6237:50:50"},"nodeType":"YulExpressionStatement","src":"6237:50:50"},{"nodeType":"YulAssignment","src":"6296:59:50","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"6340:6:50"},{"name":"tail_1","nodeType":"YulIdentifier","src":"6348:6:50"}],"functionName":{"name":"abi_encode_struct_PreparedSetupData","nodeType":"YulIdentifier","src":"6304:35:50"},"nodeType":"YulFunctionCall","src":"6304:51:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6296:4:50"}]}]},"name":"abi_encode_tuple_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$4802_memory_ptr__to_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$4802_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6091:9:50","type":""},{"name":"value1","nodeType":"YulTypedName","src":"6102:6:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"6110:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6121:4:50","type":""}],"src":"5913:448:50"},{"body":{"nodeType":"YulBlock","src":"6398:95:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6415:1:50","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6422:3:50","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"6427:10:50","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"6418:3:50"},"nodeType":"YulFunctionCall","src":"6418:20:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6408:6:50"},"nodeType":"YulFunctionCall","src":"6408:31:50"},"nodeType":"YulExpressionStatement","src":"6408:31:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6455:1:50","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"6458:4:50","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6448:6:50"},"nodeType":"YulFunctionCall","src":"6448:15:50"},"nodeType":"YulExpressionStatement","src":"6448:15:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6479:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6482:4:50","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6472:6:50"},"nodeType":"YulFunctionCall","src":"6472:15:50"},"nodeType":"YulExpressionStatement","src":"6472:15:50"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"6366:127:50"},{"body":{"nodeType":"YulBlock","src":"6594:899:50","statements":[{"body":{"nodeType":"YulBlock","src":"6640:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6649:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6652:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6642:6:50"},"nodeType":"YulFunctionCall","src":"6642:12:50"},"nodeType":"YulExpressionStatement","src":"6642:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"6615:7:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"6624:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6611:3:50"},"nodeType":"YulFunctionCall","src":"6611:23:50"},{"kind":"number","nodeType":"YulLiteral","src":"6636:2:50","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6607:3:50"},"nodeType":"YulFunctionCall","src":"6607:32:50"},"nodeType":"YulIf","src":"6604:52:50"},{"nodeType":"YulAssignment","src":"6665:39:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6694:9:50"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"6675:18:50"},"nodeType":"YulFunctionCall","src":"6675:29:50"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"6665:6:50"}]},{"nodeType":"YulVariableDeclaration","src":"6713:46:50","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6744:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"6755:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6740:3:50"},"nodeType":"YulFunctionCall","src":"6740:18:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6727:12:50"},"nodeType":"YulFunctionCall","src":"6727:32:50"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"6717:6:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"6768:28:50","value":{"kind":"number","nodeType":"YulLiteral","src":"6778:18:50","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"6772:2:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"6823:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6832:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6835:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6825:6:50"},"nodeType":"YulFunctionCall","src":"6825:12:50"},"nodeType":"YulExpressionStatement","src":"6825:12:50"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"6811:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"6819:2:50"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6808:2:50"},"nodeType":"YulFunctionCall","src":"6808:14:50"},"nodeType":"YulIf","src":"6805:34:50"},{"nodeType":"YulVariableDeclaration","src":"6848:32:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6862:9:50"},{"name":"offset","nodeType":"YulIdentifier","src":"6873:6:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6858:3:50"},"nodeType":"YulFunctionCall","src":"6858:22:50"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"6852:2:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"6928:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6937:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6940:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6930:6:50"},"nodeType":"YulFunctionCall","src":"6930:12:50"},"nodeType":"YulExpressionStatement","src":"6930:12:50"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"6907:2:50"},{"kind":"number","nodeType":"YulLiteral","src":"6911:4:50","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6903:3:50"},"nodeType":"YulFunctionCall","src":"6903:13:50"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"6918:7:50"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6899:3:50"},"nodeType":"YulFunctionCall","src":"6899:27:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"6892:6:50"},"nodeType":"YulFunctionCall","src":"6892:35:50"},"nodeType":"YulIf","src":"6889:55:50"},{"nodeType":"YulVariableDeclaration","src":"6953:26:50","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"6976:2:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6963:12:50"},"nodeType":"YulFunctionCall","src":"6963:16:50"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"6957:2:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"7002:22:50","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"7004:16:50"},"nodeType":"YulFunctionCall","src":"7004:18:50"},"nodeType":"YulExpressionStatement","src":"7004:18:50"}]},"condition":{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"6994:2:50"},{"name":"_1","nodeType":"YulIdentifier","src":"6998:2:50"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6991:2:50"},"nodeType":"YulFunctionCall","src":"6991:10:50"},"nodeType":"YulIf","src":"6988:36:50"},{"nodeType":"YulVariableDeclaration","src":"7033:17:50","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7047:2:50","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"7043:3:50"},"nodeType":"YulFunctionCall","src":"7043:7:50"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"7037:2:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"7059:23:50","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7079:2:50","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"7073:5:50"},"nodeType":"YulFunctionCall","src":"7073:9:50"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"7063:6:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"7091:71:50","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7113:6:50"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"7137:2:50"},{"kind":"number","nodeType":"YulLiteral","src":"7141:4:50","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7133:3:50"},"nodeType":"YulFunctionCall","src":"7133:13:50"},{"name":"_4","nodeType":"YulIdentifier","src":"7148:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7129:3:50"},"nodeType":"YulFunctionCall","src":"7129:22:50"},{"kind":"number","nodeType":"YulLiteral","src":"7153:2:50","type":"","value":"63"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7125:3:50"},"nodeType":"YulFunctionCall","src":"7125:31:50"},{"name":"_4","nodeType":"YulIdentifier","src":"7158:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7121:3:50"},"nodeType":"YulFunctionCall","src":"7121:40:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7109:3:50"},"nodeType":"YulFunctionCall","src":"7109:53:50"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"7095:10:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"7221:22:50","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"7223:16:50"},"nodeType":"YulFunctionCall","src":"7223:18:50"},"nodeType":"YulExpressionStatement","src":"7223:18:50"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"7180:10:50"},{"name":"_1","nodeType":"YulIdentifier","src":"7192:2:50"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"7177:2:50"},"nodeType":"YulFunctionCall","src":"7177:18:50"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"7200:10:50"},{"name":"memPtr","nodeType":"YulIdentifier","src":"7212:6:50"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"7197:2:50"},"nodeType":"YulFunctionCall","src":"7197:22:50"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"7174:2:50"},"nodeType":"YulFunctionCall","src":"7174:46:50"},"nodeType":"YulIf","src":"7171:72:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7259:2:50","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"7263:10:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7252:6:50"},"nodeType":"YulFunctionCall","src":"7252:22:50"},"nodeType":"YulExpressionStatement","src":"7252:22:50"},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7290:6:50"},{"name":"_3","nodeType":"YulIdentifier","src":"7298:2:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7283:6:50"},"nodeType":"YulFunctionCall","src":"7283:18:50"},"nodeType":"YulExpressionStatement","src":"7283:18:50"},{"body":{"nodeType":"YulBlock","src":"7347:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7356:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7359:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7349:6:50"},"nodeType":"YulFunctionCall","src":"7349:12:50"},"nodeType":"YulExpressionStatement","src":"7349:12:50"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"7324:2:50"},{"name":"_3","nodeType":"YulIdentifier","src":"7328:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7320:3:50"},"nodeType":"YulFunctionCall","src":"7320:11:50"},{"kind":"number","nodeType":"YulLiteral","src":"7333:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7316:3:50"},"nodeType":"YulFunctionCall","src":"7316:20:50"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"7338:7:50"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"7313:2:50"},"nodeType":"YulFunctionCall","src":"7313:33:50"},"nodeType":"YulIf","src":"7310:53:50"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7389:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"7397:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7385:3:50"},"nodeType":"YulFunctionCall","src":"7385:15:50"},{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"7406:2:50"},{"kind":"number","nodeType":"YulLiteral","src":"7410:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7402:3:50"},"nodeType":"YulFunctionCall","src":"7402:11:50"},{"name":"_3","nodeType":"YulIdentifier","src":"7415:2:50"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"7372:12:50"},"nodeType":"YulFunctionCall","src":"7372:46:50"},"nodeType":"YulExpressionStatement","src":"7372:46:50"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7442:6:50"},{"name":"_3","nodeType":"YulIdentifier","src":"7450:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7438:3:50"},"nodeType":"YulFunctionCall","src":"7438:15:50"},{"kind":"number","nodeType":"YulLiteral","src":"7455:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7434:3:50"},"nodeType":"YulFunctionCall","src":"7434:24:50"},{"kind":"number","nodeType":"YulLiteral","src":"7460:1:50","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7427:6:50"},"nodeType":"YulFunctionCall","src":"7427:35:50"},"nodeType":"YulExpressionStatement","src":"7427:35:50"},{"nodeType":"YulAssignment","src":"7471:16:50","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"7481:6:50"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"7471:6:50"}]}]},"name":"abi_decode_tuple_t_addresst_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6552:9:50","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"6563:7:50","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"6575:6:50","type":""},{"name":"value1","nodeType":"YulTypedName","src":"6583:6:50","type":""}],"src":"6498:995:50"},{"body":{"nodeType":"YulBlock","src":"7697:209:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7714:9:50"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7729:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"7737:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7725:3:50"},"nodeType":"YulFunctionCall","src":"7725:55:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7707:6:50"},"nodeType":"YulFunctionCall","src":"7707:74:50"},"nodeType":"YulExpressionStatement","src":"7707:74:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7801:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"7812:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7797:3:50"},"nodeType":"YulFunctionCall","src":"7797:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"7817:2:50","type":"","value":"64"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7790:6:50"},"nodeType":"YulFunctionCall","src":"7790:30:50"},"nodeType":"YulExpressionStatement","src":"7790:30:50"},{"nodeType":"YulAssignment","src":"7829:71:50","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"7873:6:50"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7885:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"7896:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7881:3:50"},"nodeType":"YulFunctionCall","src":"7881:18:50"}],"functionName":{"name":"abi_encode_struct_PreparedSetupData","nodeType":"YulIdentifier","src":"7837:35:50"},"nodeType":"YulFunctionCall","src":"7837:63:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7829:4:50"}]}]},"name":"abi_encode_tuple_t_address_t_struct$_PreparedSetupData_$4802_memory_ptr__to_t_address_t_struct$_PreparedSetupData_$4802_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7658:9:50","type":""},{"name":"value1","nodeType":"YulTypedName","src":"7669:6:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"7677:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7688:4:50","type":""}],"src":"7498:408:50"},{"body":{"nodeType":"YulBlock","src":"8025:125:50","statements":[{"nodeType":"YulAssignment","src":"8035:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8047:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"8058:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8043:3:50"},"nodeType":"YulFunctionCall","src":"8043:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"8035:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8077:9:50"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"8092:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"8100:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8088:3:50"},"nodeType":"YulFunctionCall","src":"8088:55:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8070:6:50"},"nodeType":"YulFunctionCall","src":"8070:74:50"},"nodeType":"YulExpressionStatement","src":"8070:74:50"}]},"name":"abi_encode_tuple_t_contract$_IDAO_$2538__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7994:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"8005:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"8016:4:50","type":""}],"src":"7911:239:50"},{"body":{"nodeType":"YulBlock","src":"8187:95:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8204:1:50","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8211:3:50","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"8216:10:50","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"8207:3:50"},"nodeType":"YulFunctionCall","src":"8207:20:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8197:6:50"},"nodeType":"YulFunctionCall","src":"8197:31:50"},"nodeType":"YulExpressionStatement","src":"8197:31:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8244:1:50","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"8247:4:50","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8237:6:50"},"nodeType":"YulFunctionCall","src":"8237:15:50"},"nodeType":"YulExpressionStatement","src":"8237:15:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8268:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8271:4:50","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8261:6:50"},"nodeType":"YulFunctionCall","src":"8261:15:50"},"nodeType":"YulExpressionStatement","src":"8261:15:50"}]},"name":"panic_error_0x11","nodeType":"YulFunctionDefinition","src":"8155:127:50"},{"body":{"nodeType":"YulBlock","src":"8336:159:50","statements":[{"nodeType":"YulVariableDeclaration","src":"8346:52:50","value":{"kind":"number","nodeType":"YulLiteral","src":"8356:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"8350:2:50","type":""}]},{"nodeType":"YulAssignment","src":"8407:35:50","value":{"arguments":[{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"8423:1:50"},{"name":"_1","nodeType":"YulIdentifier","src":"8426:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8419:3:50"},"nodeType":"YulFunctionCall","src":"8419:10:50"},{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"8435:1:50"},{"name":"_1","nodeType":"YulIdentifier","src":"8438:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8431:3:50"},"nodeType":"YulFunctionCall","src":"8431:10:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"8415:3:50"},"nodeType":"YulFunctionCall","src":"8415:27:50"},"variableNames":[{"name":"diff","nodeType":"YulIdentifier","src":"8407:4:50"}]},{"body":{"nodeType":"YulBlock","src":"8467:22:50","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"8469:16:50"},"nodeType":"YulFunctionCall","src":"8469:18:50"},"nodeType":"YulExpressionStatement","src":"8469:18:50"}]},"condition":{"arguments":[{"name":"diff","nodeType":"YulIdentifier","src":"8457:4:50"},{"name":"_1","nodeType":"YulIdentifier","src":"8463:2:50"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"8454:2:50"},"nodeType":"YulFunctionCall","src":"8454:12:50"},"nodeType":"YulIf","src":"8451:38:50"}]},"name":"checked_sub_t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"8318:1:50","type":""},{"name":"y","nodeType":"YulTypedName","src":"8321:1:50","type":""}],"returnVariables":[{"name":"diff","nodeType":"YulTypedName","src":"8327:4:50","type":""}],"src":"8287:208:50"},{"body":{"nodeType":"YulBlock","src":"8532:95:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8549:1:50","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8556:3:50","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"8561:10:50","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"8552:3:50"},"nodeType":"YulFunctionCall","src":"8552:20:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8542:6:50"},"nodeType":"YulFunctionCall","src":"8542:31:50"},"nodeType":"YulExpressionStatement","src":"8542:31:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8589:1:50","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"8592:4:50","type":"","value":"0x32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8582:6:50"},"nodeType":"YulFunctionCall","src":"8582:15:50"},"nodeType":"YulExpressionStatement","src":"8582:15:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8613:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8616:4:50","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8606:6:50"},"nodeType":"YulFunctionCall","src":"8606:15:50"},"nodeType":"YulExpressionStatement","src":"8606:15:50"}]},"name":"panic_error_0x32","nodeType":"YulFunctionDefinition","src":"8500:127:50"},{"body":{"nodeType":"YulBlock","src":"8679:187:50","statements":[{"nodeType":"YulVariableDeclaration","src":"8689:52:50","value":{"kind":"number","nodeType":"YulLiteral","src":"8699:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"8693:2:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"8750:29:50","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8769:5:50"},{"name":"_1","nodeType":"YulIdentifier","src":"8776:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8765:3:50"},"nodeType":"YulFunctionCall","src":"8765:14:50"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"8754:7:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"8807:22:50","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"8809:16:50"},"nodeType":"YulFunctionCall","src":"8809:18:50"},"nodeType":"YulExpressionStatement","src":"8809:18:50"}]},"condition":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"8794:7:50"},{"name":"_1","nodeType":"YulIdentifier","src":"8803:2:50"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"8791:2:50"},"nodeType":"YulFunctionCall","src":"8791:15:50"},"nodeType":"YulIf","src":"8788:41:50"},{"nodeType":"YulAssignment","src":"8838:22:50","value":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"8849:7:50"},{"kind":"number","nodeType":"YulLiteral","src":"8858:1:50","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8845:3:50"},"nodeType":"YulFunctionCall","src":"8845:15:50"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"8838:3:50"}]}]},"name":"increment_t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"8661:5:50","type":""}],"returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"8671:3:50","type":""}],"src":"8632:234:50"},{"body":{"nodeType":"YulBlock","src":"9045:172:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9062:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"9073:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9055:6:50"},"nodeType":"YulFunctionCall","src":"9055:21:50"},"nodeType":"YulExpressionStatement","src":"9055:21:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9096:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"9107:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9092:3:50"},"nodeType":"YulFunctionCall","src":"9092:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"9112:2:50","type":"","value":"22"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9085:6:50"},"nodeType":"YulFunctionCall","src":"9085:30:50"},"nodeType":"YulExpressionStatement","src":"9085:30:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9135:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"9146:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9131:3:50"},"nodeType":"YulFunctionCall","src":"9131:18:50"},{"hexValue":"455243313136373a20637265617465206661696c6564","kind":"string","nodeType":"YulLiteral","src":"9151:24:50","type":"","value":"ERC1167: create failed"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9124:6:50"},"nodeType":"YulFunctionCall","src":"9124:52:50"},"nodeType":"YulExpressionStatement","src":"9124:52:50"},{"nodeType":"YulAssignment","src":"9185:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9197:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"9208:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9193:3:50"},"nodeType":"YulFunctionCall","src":"9193:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"9185:4:50"}]}]},"name":"abi_encode_tuple_t_stringliteral_68ca40b61460257f14e69f48b1a4dbc812e9afc6932f127ef8084544457b3335__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9022:9:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"9036:4:50","type":""}],"src":"8871:346:50"},{"body":{"nodeType":"YulBlock","src":"9396:228:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9413:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"9424:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9406:6:50"},"nodeType":"YulFunctionCall","src":"9406:21:50"},"nodeType":"YulExpressionStatement","src":"9406:21:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9447:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"9458:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9443:3:50"},"nodeType":"YulFunctionCall","src":"9443:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"9463:2:50","type":"","value":"38"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9436:6:50"},"nodeType":"YulFunctionCall","src":"9436:30:50"},"nodeType":"YulExpressionStatement","src":"9436:30:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9486:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"9497:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9482:3:50"},"nodeType":"YulFunctionCall","src":"9482:18:50"},{"hexValue":"416464726573733a20696e73756666696369656e742062616c616e636520666f","kind":"string","nodeType":"YulLiteral","src":"9502:34:50","type":"","value":"Address: insufficient balance fo"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9475:6:50"},"nodeType":"YulFunctionCall","src":"9475:62:50"},"nodeType":"YulExpressionStatement","src":"9475:62:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9557:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"9568:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9553:3:50"},"nodeType":"YulFunctionCall","src":"9553:18:50"},{"hexValue":"722063616c6c","kind":"string","nodeType":"YulLiteral","src":"9573:8:50","type":"","value":"r call"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9546:6:50"},"nodeType":"YulFunctionCall","src":"9546:36:50"},"nodeType":"YulExpressionStatement","src":"9546:36:50"},{"nodeType":"YulAssignment","src":"9591:27:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9603:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"9614:3:50","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9599:3:50"},"nodeType":"YulFunctionCall","src":"9599:19:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"9591:4:50"}]}]},"name":"abi_encode_tuple_t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9373:9:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"9387:4:50","type":""}],"src":"9222:402:50"},{"body":{"nodeType":"YulBlock","src":"9766:150:50","statements":[{"nodeType":"YulVariableDeclaration","src":"9776:27:50","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"9796:6:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"9790:5:50"},"nodeType":"YulFunctionCall","src":"9790:13:50"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"9780:6:50","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"9851:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"9859:4:50","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9847:3:50"},"nodeType":"YulFunctionCall","src":"9847:17:50"},{"name":"pos","nodeType":"YulIdentifier","src":"9866:3:50"},{"name":"length","nodeType":"YulIdentifier","src":"9871:6:50"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"9812:34:50"},"nodeType":"YulFunctionCall","src":"9812:66:50"},"nodeType":"YulExpressionStatement","src":"9812:66:50"},{"nodeType":"YulAssignment","src":"9887:23:50","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"9898:3:50"},{"name":"length","nodeType":"YulIdentifier","src":"9903:6:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9894:3:50"},"nodeType":"YulFunctionCall","src":"9894:16:50"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"9887:3:50"}]}]},"name":"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"9742:3:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"9747:6:50","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"9758:3:50","type":""}],"src":"9629:287:50"},{"body":{"nodeType":"YulBlock","src":"10095:179:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10112:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"10123:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10105:6:50"},"nodeType":"YulFunctionCall","src":"10105:21:50"},"nodeType":"YulExpressionStatement","src":"10105:21:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10146:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"10157:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10142:3:50"},"nodeType":"YulFunctionCall","src":"10142:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"10162:2:50","type":"","value":"29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10135:6:50"},"nodeType":"YulFunctionCall","src":"10135:30:50"},"nodeType":"YulExpressionStatement","src":"10135:30:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10185:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"10196:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10181:3:50"},"nodeType":"YulFunctionCall","src":"10181:18:50"},{"hexValue":"416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374","kind":"string","nodeType":"YulLiteral","src":"10201:31:50","type":"","value":"Address: call to non-contract"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10174:6:50"},"nodeType":"YulFunctionCall","src":"10174:59:50"},"nodeType":"YulExpressionStatement","src":"10174:59:50"},{"nodeType":"YulAssignment","src":"10242:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10254:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"10265:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10250:3:50"},"nodeType":"YulFunctionCall","src":"10250:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"10242:4:50"}]}]},"name":"abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"10072:9:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"10086:4:50","type":""}],"src":"9921:353:50"},{"body":{"nodeType":"YulBlock","src":"10400:98:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10417:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"10428:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10410:6:50"},"nodeType":"YulFunctionCall","src":"10410:21:50"},"nodeType":"YulExpressionStatement","src":"10410:21:50"},{"nodeType":"YulAssignment","src":"10440:52:50","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"10465:6:50"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10477:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"10488:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10473:3:50"},"nodeType":"YulFunctionCall","src":"10473:18:50"}],"functionName":{"name":"abi_encode_bytes","nodeType":"YulIdentifier","src":"10448:16:50"},"nodeType":"YulFunctionCall","src":"10448:44:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"10440:4:50"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"10369:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"10380:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"10391:4:50","type":""}],"src":"10279:219:50"}]},"contents":"{\n { }\n function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n if iszero(eq(value, and(value, shl(224, 0xffffffff)))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 96)\n let pos := headStart\n pos := headStart\n let srcPtr := value0\n let i := 0\n for { } lt(i, 0x03) { i := add(i, 1) }\n {\n mstore(pos, and(mload(srcPtr), 0xff))\n let _1 := 0x20\n pos := add(pos, _1)\n srcPtr := add(srcPtr, _1)\n }\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_decode_address(offset) -> value\n {\n value := calldataload(offset)\n if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n }\n function abi_decode_struct_SetupPayload_calldata(offset, end) -> value\n {\n if slt(sub(end, offset), 96) { revert(0, 0) }\n value := offset\n }\n function abi_decode_tuple_t_addresst_struct$_SetupPayload_$4810_calldata_ptr(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n let offset := calldataload(add(headStart, 32))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n value1 := abi_decode_struct_SetupPayload_calldata(add(headStart, offset), dataEnd)\n }\n function panic_error_0x21()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x21)\n revert(0, 0x24)\n }\n function abi_encodeUpdatedPos_struct_MultiTargetPermission(value0, pos) -> updatedPos\n {\n let _1 := mload(value0)\n if iszero(lt(_1, 3))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x21)\n revert(0, 0x24)\n }\n mstore(pos, _1)\n let memberValue0 := mload(add(value0, 0x20))\n let _2 := 0xffffffffffffffffffffffffffffffffffffffff\n mstore(add(pos, 0x20), and(memberValue0, _2))\n mstore(add(pos, 0x40), and(mload(add(value0, 0x40)), _2))\n mstore(add(pos, 0x60), and(mload(add(value0, 0x60)), _2))\n mstore(add(pos, 0x80), mload(add(value0, 0x80)))\n updatedPos := add(pos, 0xa0)\n }\n function abi_encode_tuple_t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n let _1 := 32\n let tail_1 := add(headStart, _1)\n mstore(headStart, _1)\n let pos := tail_1\n let length := mload(value0)\n mstore(tail_1, length)\n pos := add(headStart, 64)\n let srcPtr := add(value0, _1)\n let i := 0\n for { } lt(i, length) { i := add(i, 1) }\n {\n pos := abi_encodeUpdatedPos_struct_MultiTargetPermission(mload(srcPtr), pos)\n srcPtr := add(srcPtr, _1)\n }\n tail := pos\n }\n function abi_decode_tuple_t_addresst_uint16t_struct$_SetupPayload_$4810_calldata_ptr(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n let value := calldataload(add(headStart, 32))\n if iszero(eq(value, and(value, 0xffff))) { revert(0, 0) }\n value1 := value\n let offset := calldataload(add(headStart, 64))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n value2 := abi_decode_struct_SetupPayload_calldata(add(headStart, offset), dataEnd)\n }\n function copy_memory_to_memory_with_cleanup(src, dst, length)\n {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n mstore(add(dst, length), 0)\n }\n function abi_encode_bytes(value, pos) -> end\n {\n let length := mload(value)\n mstore(pos, length)\n copy_memory_to_memory_with_cleanup(add(value, 0x20), add(pos, 0x20), length)\n end := add(add(pos, and(add(length, 31), not(31))), 0x20)\n }\n function abi_encode_struct_PreparedSetupData(value, pos) -> end\n {\n let tail := add(pos, 0x40)\n let memberValue0 := mload(value)\n mstore(pos, 0x40)\n let pos_1 := tail\n let length := mload(memberValue0)\n mstore(tail, length)\n pos_1 := add(pos, 96)\n let _1 := 0x20\n let srcPtr := add(memberValue0, _1)\n let i := 0\n for { } lt(i, length) { i := add(i, 1) }\n {\n mstore(pos_1, and(mload(srcPtr), 0xffffffffffffffffffffffffffffffffffffffff))\n pos_1 := add(pos_1, _1)\n srcPtr := add(srcPtr, _1)\n }\n let memberValue0_1 := mload(add(value, _1))\n mstore(add(pos, _1), sub(pos_1, pos))\n let pos_2 := pos_1\n let length_1 := mload(memberValue0_1)\n mstore(pos_1, length_1)\n pos_2 := add(pos_1, _1)\n let srcPtr_1 := add(memberValue0_1, _1)\n let i_1 := 0\n for { } lt(i_1, length_1) { i_1 := add(i_1, 1) }\n {\n pos_2 := abi_encodeUpdatedPos_struct_MultiTargetPermission(mload(srcPtr_1), pos_2)\n srcPtr_1 := add(srcPtr_1, _1)\n }\n end := pos_2\n }\n function abi_encode_tuple_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$4802_memory_ptr__to_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$4802_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n {\n mstore(headStart, 64)\n let tail_1 := abi_encode_bytes(value0, add(headStart, 64))\n mstore(add(headStart, 32), sub(tail_1, headStart))\n tail := abi_encode_struct_PreparedSetupData(value1, tail_1)\n }\n function panic_error_0x41()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function abi_decode_tuple_t_addresst_bytes_memory_ptr(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n let offset := calldataload(add(headStart, 32))\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n let _2 := add(headStart, offset)\n if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n let _3 := calldataload(_2)\n if gt(_3, _1) { panic_error_0x41() }\n let _4 := not(31)\n let memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n mstore(memPtr, _3)\n if gt(add(add(_2, _3), 32), dataEnd) { revert(0, 0) }\n calldatacopy(add(memPtr, 32), add(_2, 32), _3)\n mstore(add(add(memPtr, _3), 32), 0)\n value1 := memPtr\n }\n function abi_encode_tuple_t_address_t_struct$_PreparedSetupData_$4802_memory_ptr__to_t_address_t_struct$_PreparedSetupData_$4802_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n {\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n mstore(add(headStart, 32), 64)\n tail := abi_encode_struct_PreparedSetupData(value1, add(headStart, 64))\n }\n function abi_encode_tuple_t_contract$_IDAO_$2538__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function panic_error_0x11()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n function checked_sub_t_uint160(x, y) -> diff\n {\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n diff := sub(and(x, _1), and(y, _1))\n if gt(diff, _1) { panic_error_0x11() }\n }\n function panic_error_0x32()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n function increment_t_uint160(value) -> ret\n {\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n let value_1 := and(value, _1)\n if eq(value_1, _1) { panic_error_0x11() }\n ret := add(value_1, 1)\n }\n function abi_encode_tuple_t_stringliteral_68ca40b61460257f14e69f48b1a4dbc812e9afc6932f127ef8084544457b3335__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 22)\n mstore(add(headStart, 64), \"ERC1167: create failed\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 38)\n mstore(add(headStart, 64), \"Address: insufficient balance fo\")\n mstore(add(headStart, 96), \"r call\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n {\n let length := mload(value0)\n copy_memory_to_memory_with_cleanup(add(value0, 0x20), pos, length)\n end := add(pos, length)\n }\n function abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 29)\n mstore(add(headStart, 64), \"Address: call to non-contract\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n mstore(headStart, 32)\n tail := abi_encode_bytes(value0, add(headStart, 32))\n }\n}","id":50,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{"4879":[{"length":32,"start":193},{"length":32,"start":663}]},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100725760003560e01c80639cb0a124116100505780639cb0a124146100eb578063a8a9c29e1461010b578063f10832f11461012c57600080fd5b806301ffc9a7146100775780632ae9c6001461009f5780635c60da1b146100b4575b600080fd5b61008a6100853660046107fd565b61014d565b60405190151581526020015b60405180910390f35b6100a761019e565b6040516100969190610827565b6040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152602001610096565b6100fe6100f9366004610884565b6101c8565b604051610096919061094e565b61011e610119366004610997565b6101de565b604051610096929190610ae1565b61013f61013a366004610b25565b610216565b604051610096929190610be7565b60006001600160e01b0319821663099718b560e41b148061017d57506001600160e01b03198216621574e360e91b145b8061019857506301ffc9a760e01b6001600160e01b03198316145b92915050565b6101a66107df565b5060408051606081018252600181526004602082015260009181019190915290565b60606101d760006001806102f2565b9392505050565b60606101fd604051806040016040528060608152602001606081525090565b60405163a112810160e01b815260040160405180910390fd5b6000610235604051806040016040528060608152602001606081525090565b6040516001600160a01b038516602482015260009060440160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663189acdbd60e31b17905290506102c8816102b97f000000000000000000000000000000000000000000000000000000000000000090565b6001600160a01b031690610477565b92506102d460016104af565b82526102e360006001816102f2565b60208301525090939092509050565b6060826001600160a01b0316846001600160a01b0316111561032757604051633a4013cd60e21b815260040160405180910390fd5b6103318484610c1f565b6001600160a01b031667ffffffffffffffff81111561035257610352610b0f565b6040519080825280602002602001820160405280156103ab57816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282526000199092019101816103705790505b509050835b836001600160a01b0316816001600160a01b0316101561046f576040518060a001604052808460028111156103e7576103e76108d2565b81526001600160a01b038316602082018190526040820152600060608201527fa280eec51ab8e1bc4b6b0c1b7f1bde785761b787a49db404e3e9338ed9b016ef608090910152826104388784610c1f565b6001600160a01b03168151811061045157610451610c3f565b6020026020010181905250808061046790610c55565b9150506103b0565b509392505050565b600061048b836001600160a01b0316610568565b825190915015610198576104a86001600160a01b0382168361060e565b5092915050565b6060816001600160a01b031667ffffffffffffffff8111156104d3576104d3610b0f565b6040519080825280602002602001820160405280156104fc578160200160208202803683370190505b50905060005b826001600160a01b0316816001600160a01b03161015610562578082826001600160a01b03168151811061053857610538610c3f565b6001600160a01b03909216602092830291909101909101528061055a81610c55565b915050610502565b50919050565b6000763d602d80600a3d3981f3363d3d373d3d3d363d730000008260601b60e81c176000526e5af43d82803e903d91602b57fd5bf38260781b17602052603760096000f090506001600160a01b0381166106095760405162461bcd60e51b815260206004820152601660248201527f455243313136373a20637265617465206661696c65640000000000000000000060448201526064015b60405180910390fd5b919050565b60606101d7838360006040518060400160405280601e81526020017f416464726573733a206c6f772d6c6576656c2063616c6c206661696c656400008152506060824710156106c55760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610600565b600080866001600160a01b031685876040516106e19190610c7b565b60006040518083038185875af1925050503d806000811461071e576040519150601f19603f3d011682016040523d82523d6000602084013e610723565b606091505b509150915061073487838387610741565b925050505b949350505050565b606083156107b05782516000036107a9576001600160a01b0385163b6107a95760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610600565b5081610739565b61073983838151156107c55781518083602001fd5b8060405162461bcd60e51b81526004016106009190610c97565b60405180606001604052806003906020820280368337509192915050565b60006020828403121561080f57600080fd5b81356001600160e01b0319811681146101d757600080fd5b60608101818360005b600381101561085257815160ff16835260209283019290910190600101610830565b50505092915050565b80356001600160a01b038116811461060957600080fd5b60006060828403121561056257600080fd5b6000806040838503121561089757600080fd5b6108a08361085b565b9150602083013567ffffffffffffffff8111156108bc57600080fd5b6108c885828601610872565b9150509250929050565b634e487b7160e01b600052602160045260246000fd5b600081516003811061090a57634e487b7160e01b600052602160045260246000fd5b8352506020818101516001600160a01b0390811691840191909152604080830151821690840152606080830151909116908301526080908101519082015260a00190565b6020808252825182820181905260009190848201906040850190845b8181101561098b5761097d8385516108e8565b93850193925060010161096a565b50909695505050505050565b6000806000606084860312156109ac57600080fd5b6109b58461085b565b9250602084013561ffff811681146109cc57600080fd5b9150604084013567ffffffffffffffff8111156109e857600080fd5b6109f486828701610872565b9150509250925092565b60005b83811015610a19578181015183820152602001610a01565b50506000910152565b60008151808452610a3a8160208601602086016109fe565b601f01601f19169290920160200192915050565b805160408084528151908401819052600091602091908201906060860190845b81811015610a935783516001600160a01b031683529284019291840191600101610a6e565b50508483015186820387850152805180835290840192506000918401905b80831015610ad657610ac48285516108e8565b91508484019350600183019250610ab1565b509695505050505050565b604081526000610af46040830185610a22565b8281036020840152610b068185610a4e565b95945050505050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215610b3857600080fd5b610b418361085b565b9150602083013567ffffffffffffffff80821115610b5e57600080fd5b818501915085601f830112610b7257600080fd5b813581811115610b8457610b84610b0f565b604051601f8201601f19908116603f01168101908382118183101715610bac57610bac610b0f565b81604052828152886020848701011115610bc557600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6001600160a01b03831681526040602082015260006107396040830184610a4e565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b038281168282160390808211156104a8576104a8610c09565b634e487b7160e01b600052603260045260246000fd5b60006001600160a01b03808316818103610c7157610c71610c09565b6001019392505050565b60008251610c8d8184602087016109fe565b9190910192915050565b6020815260006101d76020830184610a2256fea164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x72 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9CB0A124 GT PUSH2 0x50 JUMPI DUP1 PUSH4 0x9CB0A124 EQ PUSH2 0xEB JUMPI DUP1 PUSH4 0xA8A9C29E EQ PUSH2 0x10B JUMPI DUP1 PUSH4 0xF10832F1 EQ PUSH2 0x12C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x77 JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0x9F JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0xB4 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8A PUSH2 0x85 CALLDATASIZE PUSH1 0x4 PUSH2 0x7FD JUMP JUMPDEST PUSH2 0x14D JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xA7 PUSH2 0x19E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x96 SWAP2 SWAP1 PUSH2 0x827 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x96 JUMP JUMPDEST PUSH2 0xFE PUSH2 0xF9 CALLDATASIZE PUSH1 0x4 PUSH2 0x884 JUMP JUMPDEST PUSH2 0x1C8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x96 SWAP2 SWAP1 PUSH2 0x94E JUMP JUMPDEST PUSH2 0x11E PUSH2 0x119 CALLDATASIZE PUSH1 0x4 PUSH2 0x997 JUMP JUMPDEST PUSH2 0x1DE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x96 SWAP3 SWAP2 SWAP1 PUSH2 0xAE1 JUMP JUMPDEST PUSH2 0x13F PUSH2 0x13A CALLDATASIZE PUSH1 0x4 PUSH2 0xB25 JUMP JUMPDEST PUSH2 0x216 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x96 SWAP3 SWAP2 SWAP1 PUSH2 0xBE7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x99718B5 PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x17D JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x198 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1A6 PUSH2 0x7DF JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1D7 PUSH1 0x0 PUSH1 0x1 DUP1 PUSH2 0x2F2 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1FD PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xA1128101 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x235 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 PUSH1 0x44 ADD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x189ACDBD PUSH1 0xE3 SHL OR SWAP1 MSTORE SWAP1 POP PUSH2 0x2C8 DUP2 PUSH2 0x2B9 PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH2 0x477 JUMP JUMPDEST SWAP3 POP PUSH2 0x2D4 PUSH1 0x1 PUSH2 0x4AF JUMP JUMPDEST DUP3 MSTORE PUSH2 0x2E3 PUSH1 0x0 PUSH1 0x1 DUP2 PUSH2 0x2F2 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP SWAP1 SWAP4 SWAP1 SWAP3 POP SWAP1 POP JUMP JUMPDEST PUSH1 0x60 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH2 0x327 JUMPI PUSH1 0x40 MLOAD PUSH4 0x3A4013CD PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x331 DUP5 DUP5 PUSH2 0xC1F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x352 JUMPI PUSH2 0x352 PUSH2 0xB0F JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x3AB JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD DUP3 SWAP1 MSTORE SWAP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 DUP3 ADD MSTORE DUP3 MSTORE PUSH1 0x0 NOT SWAP1 SWAP3 ADD SWAP2 ADD DUP2 PUSH2 0x370 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP DUP4 JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT ISZERO PUSH2 0x46F JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 DUP5 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x3E7 JUMPI PUSH2 0x3E7 PUSH2 0x8D2 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x60 DUP3 ADD MSTORE PUSH32 0xA280EEC51AB8E1BC4B6B0C1B7F1BDE785761B787A49DB404E3E9338ED9B016EF PUSH1 0x80 SWAP1 SWAP2 ADD MSTORE DUP3 PUSH2 0x438 DUP8 DUP5 PUSH2 0xC1F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MLOAD DUP2 LT PUSH2 0x451 JUMPI PUSH2 0x451 PUSH2 0xC3F JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP DUP1 DUP1 PUSH2 0x467 SWAP1 PUSH2 0xC55 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x3B0 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x48B DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x568 JUMP JUMPDEST DUP3 MLOAD SWAP1 SWAP2 POP ISZERO PUSH2 0x198 JUMPI PUSH2 0x4A8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP4 PUSH2 0x60E JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x4D3 JUMPI PUSH2 0x4D3 PUSH2 0xB0F JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x4FC JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT ISZERO PUSH2 0x562 JUMPI DUP1 DUP3 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MLOAD DUP2 LT PUSH2 0x538 JUMPI PUSH2 0x538 PUSH2 0xC3F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE DUP1 PUSH2 0x55A DUP2 PUSH2 0xC55 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x502 JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH23 0x3D602D80600A3D3981F3363D3D373D3D3D363D73000000 DUP3 PUSH1 0x60 SHL PUSH1 0xE8 SHR OR PUSH1 0x0 MSTORE PUSH15 0x5AF43D82803E903D91602B57FD5BF3 DUP3 PUSH1 0x78 SHL OR PUSH1 0x20 MSTORE PUSH1 0x37 PUSH1 0x9 PUSH1 0x0 CREATE SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x609 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313136373A20637265617465206661696C656400000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1D7 DUP4 DUP4 PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x416464726573733A206C6F772D6C6576656C2063616C6C206661696C65640000 DUP2 MSTORE POP PUSH1 0x60 DUP3 SELFBALANCE LT ISZERO PUSH2 0x6C5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A20696E73756666696369656E742062616C616E636520666F PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x722063616C6C0000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x600 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP8 PUSH1 0x40 MLOAD PUSH2 0x6E1 SWAP2 SWAP1 PUSH2 0xC7B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x71E JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x723 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x734 DUP8 DUP4 DUP4 DUP8 PUSH2 0x741 JUMP JUMPDEST SWAP3 POP POP POP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x7B0 JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0x7A9 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0x7A9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x600 JUMP JUMPDEST POP DUP2 PUSH2 0x739 JUMP JUMPDEST PUSH2 0x739 DUP4 DUP4 DUP2 MLOAD ISZERO PUSH2 0x7C5 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x600 SWAP2 SWAP1 PUSH2 0xC97 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x80F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x1D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0x852 JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x830 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x609 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x562 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x897 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8A0 DUP4 PUSH2 0x85B JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x8BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8C8 DUP6 DUP3 DUP7 ADD PUSH2 0x872 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP2 MLOAD PUSH1 0x3 DUP2 LT PUSH2 0x90A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP4 MSTORE POP PUSH1 0x20 DUP2 DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP1 DUP4 ADD MLOAD DUP3 AND SWAP1 DUP5 ADD MSTORE PUSH1 0x60 DUP1 DUP4 ADD MLOAD SWAP1 SWAP2 AND SWAP1 DUP4 ADD MSTORE PUSH1 0x80 SWAP1 DUP2 ADD MLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x98B JUMPI PUSH2 0x97D DUP4 DUP6 MLOAD PUSH2 0x8E8 JUMP JUMPDEST SWAP4 DUP6 ADD SWAP4 SWAP3 POP PUSH1 0x1 ADD PUSH2 0x96A JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x9AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9B5 DUP5 PUSH2 0x85B JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH2 0x9CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x9E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9F4 DUP7 DUP3 DUP8 ADD PUSH2 0x872 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xA19 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xA01 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0xA3A DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x9FE JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x40 DUP1 DUP5 MSTORE DUP2 MLOAD SWAP1 DUP5 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x20 SWAP2 SWAP1 DUP3 ADD SWAP1 PUSH1 0x60 DUP7 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xA93 JUMPI DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0xA6E JUMP JUMPDEST POP POP DUP5 DUP4 ADD MLOAD DUP7 DUP3 SUB DUP8 DUP6 ADD MSTORE DUP1 MLOAD DUP1 DUP4 MSTORE SWAP1 DUP5 ADD SWAP3 POP PUSH1 0x0 SWAP2 DUP5 ADD SWAP1 JUMPDEST DUP1 DUP4 LT ISZERO PUSH2 0xAD6 JUMPI PUSH2 0xAC4 DUP3 DUP6 MLOAD PUSH2 0x8E8 JUMP JUMPDEST SWAP2 POP DUP5 DUP5 ADD SWAP4 POP PUSH1 0x1 DUP4 ADD SWAP3 POP PUSH2 0xAB1 JUMP JUMPDEST POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 PUSH2 0xAF4 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0xA22 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0xB06 DUP2 DUP6 PUSH2 0xA4E JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xB38 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB41 DUP4 PUSH2 0x85B JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xB5E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xB72 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0xB84 JUMPI PUSH2 0xB84 PUSH2 0xB0F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0xBAC JUMPI PUSH2 0xBAC PUSH2 0xB0F JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0xBC5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0x739 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0xA4E JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND DUP3 DUP3 AND SUB SWAP1 DUP1 DUP3 GT ISZERO PUSH2 0x4A8 JUMPI PUSH2 0x4A8 PUSH2 0xC09 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND DUP2 DUP2 SUB PUSH2 0xC71 JUMPI PUSH2 0xC71 PUSH2 0xC09 JUMP JUMPDEST PUSH1 0x1 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0xC8D DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x9FE JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x1D7 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0xA22 JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"749:1127:27:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2112:293:45;;;;;;:::i;:::-;;:::i;:::-;;;470:14:50;;463:22;445:41;;433:2;418:18;2112:293:45;;;;;;;;631:98:49;;;:::i;:::-;;;;;;;:::i;2444:94:45:-;;;-1:-1:-1;;;;;2517:14:45;1167:55:50;1149:74;;1137:2;1122:18;2444:94:45;1003:226:50;1575:299:27;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1639:265:45:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;998:538:27:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;2112:293:45:-;2198:4;-1:-1:-1;;;;;;2233:46:45;;-1:-1:-1;;;2233:46:45;;:112;;-1:-1:-1;;;;;;;2295:50:45;;-1:-1:-1;;;2295:50:45;2233:112;:165;;;-1:-1:-1;;;;;;;;;;937:40:23;;;2361:37:45;2214:184;2112:293;-1:-1:-1;;2112:293:45:o;631:98:49:-;679:15;;:::i;:::-;-1:-1:-1;706:16:49;;;;;;;;714:1;706:16;;717:1;706:16;;;;-1:-1:-1;706:16:49;;;;;;;;631:98::o;1575:299:27:-;1697:56;1805:62;1821:1;881;;1805:15;:62::i;:::-;1791:76;1575:299;-1:-1:-1;;;1575:299:27:o;1639:265:45:-;1780:12;1794:24;-1:-1:-1;;;;;;;;;;;;;;;;;;;1794:24:45;1875:22;;-1:-1:-1;;;1875:22:45;;;;;;;;;;;998:538:27;1095:14;1111:42;-1:-1:-1;;;;;;;;;;;;;;;;;;;1111:42:27;1189:66;;-1:-1:-1;;;;;1167:55:50;;1189:66:27;;;1149:74:50;1165:21:27;;1122:18:50;;1189:66:27;;;-1:-1:-1;;1189:66:27;;;;;;;;;;;;;;;;-1:-1:-1;;;1189:66:27;;;;-1:-1:-1;1274:45:27;1189:66;1274:16;2517:14:45;;2444:94;1274:16:27;-1:-1:-1;;;;;1274:35:27;;;:45::i;:::-;1265:54;-1:-1:-1;1357:23:27;881:1;1357:11;:23::i;:::-;1329:51;;1422:107;1329:25;881:1;1329:25;1422:15;:107::i;:::-;1390:29;;;:139;-1:-1:-1;998:538:27;;1390:17;;-1:-1:-1;998:538:27;-1:-1:-1;998:538:27:o;580:666:30:-;699:56;780:8;-1:-1:-1;;;;;767:21:30;:10;-1:-1:-1;;;;;767:21:30;;763:53;;;797:19;;-1:-1:-1;;;797:19:30;;;;;;;;;;;763:53;879:21;890:10;879:8;:21;:::i;:::-;-1:-1:-1;;;;;837:64:30;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;837:64:30;;-1:-1:-1;;837:64:30;;;;;;;;;;;-1:-1:-1;823:78:30;-1:-1:-1;925:10:30;908:336;941:8;-1:-1:-1;;;;;937:12:30;:1;-1:-1:-1;;;;;937:12:30;;908:336;;;996:241;;;;;;;;1057:2;996:241;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;996:241:30;;;;;;;;;;;;-1:-1:-1;996:241:30;;;;1198:28;996:241;;;;;966:11;978:14;982:10;1088:1;978:14;:::i;:::-;-1:-1:-1;;;;;966:27:30;;;;;;;;;:::i;:::-;;;;;;:271;;;;951:3;;;;;:::i;:::-;;;;908:336;;;;580:666;;;;;:::o;2237:292:47:-;2349:20;2396:14;:6;-1:-1:-1;;;;;2396:12:47;;:14::i;:::-;2424:20;;2381:29;;-1:-1:-1;2424:24:47;2420:103;;2464:48;-1:-1:-1;;;;;2464:25:47;;2497:13;2464:25;:48::i;:::-;;2237:292;;;;:::o;1529:191:30:-;1577:24;1633:3;-1:-1:-1;;;;;1619:18:30;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1619:18:30;;1609:28;;1649:9;1644:74;1668:3;-1:-1:-1;;;;;1664:7:30;:1;-1:-1:-1;;;;;1664:7:30;;1644:74;;;1709:1;1688:7;1696:1;-1:-1:-1;;;;;1688:10:30;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1688:23:30;;;:10;;;;;;;;;;;:23;1673:3;;;;:::i;:::-;;;;1644:74;;;;1529:191;;;:::o;973:759:14:-;1030:16;1362:48;1344:14;1338:4;1334:25;1328:4;1324:36;1321:90;1315:4;1308:104;1569:32;1552:14;1546:4;1542:25;1539:63;1533:4;1526:77;1644:4;1638;1635:1;1628:21;1616:33;-1:-1:-1;;;;;;1676:22:14;;1668:57;;;;-1:-1:-1;;;1668:57:14;;9073:2:50;1668:57:14;;;9055:21:50;9112:2;9092:18;;;9085:30;9151:24;9131:18;;;9124:52;9193:18;;1668:57:14;;;;;;;;;973:759;;;:::o;3701:185:19:-;3776:12;3807:72;3829:6;3837:4;3843:1;3807:72;;;;;;;;;;;;;;;;;5330:12;5387:5;5362:21;:30;;5354:81;;;;-1:-1:-1;;;5354:81:19;;9424:2:50;5354:81:19;;;9406:21:50;9463:2;9443:18;;;9436:30;9502:34;9482:18;;;9475:62;9573:8;9553:18;;;9546:36;9599:19;;5354:81:19;9222:402:50;5354:81:19;5446:12;5460:23;5487:6;-1:-1:-1;;;;;5487:11:19;5506:5;5513:4;5487:31;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5445:73;;;;5535:69;5562:6;5570:7;5579:10;5591:12;5535:26;:69::i;:::-;5528:76;;;;5165:446;;;;;;;:::o;7671:628::-;7851:12;7879:7;7875:418;;;7906:10;:17;7927:1;7906:22;7902:286;;-1:-1:-1;;;;;1702:19:19;;;8113:60;;;;-1:-1:-1;;;8113:60:19;;10123:2:50;8113:60:19;;;10105:21:50;10162:2;10142:18;;;10135:30;10201:31;10181:18;;;10174:59;10250:18;;8113:60:19;9921:353:50;8113:60:19;-1:-1:-1;8208:10:19;8201:17;;7875:418;8249:33;8257:10;8269:12;8980:17;;:21;8976:379;;9208:10;9202:17;9264:15;9251:10;9247:2;9243:19;9236:44;8976:379;9331:12;9324:20;;-1:-1:-1;;;9324:20:19;;;;;;;;:::i;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:286:50:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:50;;209:43;;199:71;;266:1;263;256:12;497:501;673:2;658:18;;662:9;753:6;631:4;787:205;801:4;798:1;795:11;787:205;;;864:13;;879:4;860:24;848:37;;908:4;932:12;;;;967:15;;;;821:1;814:9;787:205;;;791:3;;;497:501;;;;:::o;1234:196::-;1302:20;;-1:-1:-1;;;;;1351:54:50;;1341:65;;1331:93;;1420:1;1417;1410:12;1435:160;1500:5;1545:2;1536:6;1531:3;1527:16;1523:25;1520:45;;;1561:1;1558;1551:12;1600:440;1700:6;1708;1761:2;1749:9;1740:7;1736:23;1732:32;1729:52;;;1777:1;1774;1767:12;1729:52;1800:29;1819:9;1800:29;:::i;:::-;1790:39;;1880:2;1869:9;1865:18;1852:32;1907:18;1899:6;1896:30;1893:50;;;1939:1;1936;1929:12;1893:50;1962:72;2026:7;2017:6;2006:9;2002:22;1962:72;:::i;:::-;1952:82;;;1600:440;;;;;:::o;2045:127::-;2106:10;2101:3;2097:20;2094:1;2087:31;2137:4;2134:1;2127:15;2161:4;2158:1;2151:15;2177:696;2252:10;2293:6;2287:13;2326:1;2322:2;2319:9;2309:140;;2371:10;2366:3;2362:20;2359:1;2352:31;2406:4;2403:1;2396:15;2434:4;2431:1;2424:15;2309:140;2458:15;;-1:-1:-1;2520:4:50;2508:17;;;2502:24;-1:-1:-1;;;;;2619:21:50;;;2603:14;;;2596:45;;;;2695:4;2683:17;;;2677:24;2673:33;;2657:14;;;2650:57;2761:4;2749:17;;;2743:24;2739:33;;;2723:14;;;2716:57;2823:4;2811:17;;;2805:24;2789:14;;;2782:48;2862:4;2853:14;;2177:696::o;2878:728::-;3127:2;3179:21;;;3249:13;;3152:18;;;3271:22;;;3098:4;;3127:2;3350:15;;;;3324:2;3309:18;;;3098:4;3393:187;3407:6;3404:1;3401:13;3393:187;;;3463:69;3528:3;3519:6;3513:13;3463:69;:::i;:::-;3555:15;;;;3456:76;-1:-1:-1;3429:1:50;3422:9;3393:187;;;-1:-1:-1;3597:3:50;;2878:728;-1:-1:-1;;;;;;2878:728:50:o;3611:600::-;3719:6;3727;3735;3788:2;3776:9;3767:7;3763:23;3759:32;3756:52;;;3804:1;3801;3794:12;3756:52;3827:29;3846:9;3827:29;:::i;:::-;3817:39;;3906:2;3895:9;3891:18;3878:32;3950:6;3943:5;3939:18;3932:5;3929:29;3919:57;;3972:1;3969;3962:12;3919:57;3995:5;-1:-1:-1;4051:2:50;4036:18;;4023:32;4078:18;4067:30;;4064:50;;;4110:1;4107;4100:12;4064:50;4133:72;4197:7;4188:6;4177:9;4173:22;4133:72;:::i;:::-;4123:82;;;3611:600;;;;;:::o;4216:250::-;4301:1;4311:113;4325:6;4322:1;4319:13;4311:113;;;4401:11;;;4395:18;4382:11;;;4375:39;4347:2;4340:10;4311:113;;;-1:-1:-1;;4458:1:50;4440:16;;4433:27;4216:250::o;4471:270::-;4512:3;4550:5;4544:12;4577:6;4572:3;4565:19;4593:76;4662:6;4655:4;4650:3;4646:14;4639:4;4632:5;4628:16;4593:76;:::i;:::-;4723:2;4702:15;-1:-1:-1;;4698:29:50;4689:39;;;;4730:4;4685:50;;4471:270;-1:-1:-1;;4471:270:50:o;4746:1162::-;4879:12;;4845:4;4900:17;;;4966:19;;4836:14;;;4994:20;;;4806:3;;5063:4;;5090:21;;;;5041:2;5032:12;;;4806:3;5139:224;5153:6;5150:1;5147:13;5139:224;;;5220:13;;-1:-1:-1;;;;;5216:62:50;5202:77;;5338:15;;;;5301:14;;;;5175:1;5168:9;5139:224;;;-1:-1:-1;;5400:14:50;;;5394:21;5445:15;;;5431:12;;;5424:37;5513:21;;5543:23;;;5623;;;;-1:-1:-1;5666:1:50;;5584:14;;;5676:205;5692:8;5687:3;5684:17;5676:205;;;5756:73;5823:5;5812:8;5806:15;5756:73;:::i;:::-;5747:82;;5868:2;5858:8;5854:17;5842:29;;5720:1;5715:3;5711:11;5704:18;;5676:205;;;-1:-1:-1;5897:5:50;4746:1162;-1:-1:-1;;;;;;4746:1162:50:o;5913:448::-;6158:2;6147:9;6140:21;6121:4;6184:44;6224:2;6213:9;6209:18;6201:6;6184:44;:::i;:::-;6276:9;6268:6;6264:22;6259:2;6248:9;6244:18;6237:50;6304:51;6348:6;6340;6304:51;:::i;:::-;6296:59;5913:448;-1:-1:-1;;;;;5913:448:50:o;6366:127::-;6427:10;6422:3;6418:20;6415:1;6408:31;6458:4;6455:1;6448:15;6482:4;6479:1;6472:15;6498:995;6575:6;6583;6636:2;6624:9;6615:7;6611:23;6607:32;6604:52;;;6652:1;6649;6642:12;6604:52;6675:29;6694:9;6675:29;:::i;:::-;6665:39;;6755:2;6744:9;6740:18;6727:32;6778:18;6819:2;6811:6;6808:14;6805:34;;;6835:1;6832;6825:12;6805:34;6873:6;6862:9;6858:22;6848:32;;6918:7;6911:4;6907:2;6903:13;6899:27;6889:55;;6940:1;6937;6930:12;6889:55;6976:2;6963:16;6998:2;6994;6991:10;6988:36;;;7004:18;;:::i;:::-;7079:2;7073:9;7047:2;7133:13;;-1:-1:-1;;7129:22:50;;;7153:2;7125:31;7121:40;7109:53;;;7177:18;;;7197:22;;;7174:46;7171:72;;;7223:18;;:::i;:::-;7263:10;7259:2;7252:22;7298:2;7290:6;7283:18;7338:7;7333:2;7328;7324;7320:11;7316:20;7313:33;7310:53;;;7359:1;7356;7349:12;7310:53;7415:2;7410;7406;7402:11;7397:2;7389:6;7385:15;7372:46;7460:1;7455:2;7450;7442:6;7438:15;7434:24;7427:35;7481:6;7471:16;;;;;;;6498:995;;;;;:::o;7498:408::-;-1:-1:-1;;;;;7729:6:50;7725:55;7714:9;7707:74;7817:2;7812;7801:9;7797:18;7790:30;7688:4;7837:63;7896:2;7885:9;7881:18;7873:6;7837:63;:::i;8155:127::-;8216:10;8211:3;8207:20;8204:1;8197:31;8247:4;8244:1;8237:15;8271:4;8268:1;8261:15;8287:208;-1:-1:-1;;;;;8431:10:50;;;8419;;;8415:27;;8454:12;;;8451:38;;;8469:18;;:::i;8500:127::-;8561:10;8556:3;8552:20;8549:1;8542:31;8592:4;8589:1;8582:15;8616:4;8613:1;8606:15;8632:234;8671:3;-1:-1:-1;;;;;8776:2:50;8769:5;8765:14;8803:2;8794:7;8791:15;8788:41;;8809:18;;:::i;:::-;8858:1;8845:15;;8632:234;-1:-1:-1;;;8632:234:50:o;9629:287::-;9758:3;9796:6;9790:13;9812:66;9871:6;9866:3;9859:4;9851:6;9847:17;9812:66;:::i;:::-;9894:16;;;;;9629:287;-1:-1:-1;;9629:287:50:o;10279:219::-;10428:2;10417:9;10410:21;10391:4;10448:44;10488:2;10477:9;10473:18;10465:6;10448:44;:::i"},"gasEstimates":{"creation":{"codeDepositCost":"651000","executionCost":"infinite","totalCost":"infinite"},"external":{"implementation()":"infinite","prepareInstallation(address,bytes)":"infinite","prepareUninstallation(address,(address,address[],bytes))":"infinite","prepareUpdate(address,uint16,(address,address[],bytes))":"624","protocolVersion()":"infinite","supportsInterface(bytes4)":"482"}},"methodIdentifiers":{"implementation()":"5c60da1b","prepareInstallation(address,bytes)":"f10832f1","prepareUninstallation(address,(address,address[],bytes))":"9cb0a124","prepareUpdate(address,uint16,(address,address[],bytes))":"a8a9c29e","protocolVersion()":"2ae9c600","supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ConflictingValues\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NonUpgradeablePlugin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_dao\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"prepareInstallation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"plugin\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address[]\",\"name\":\"helpers\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"enum PermissionLib.Operation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"condition\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PermissionLib.MultiTargetPermission[]\",\"name\":\"permissions\",\"type\":\"tuple[]\"}],\"internalType\":\"struct IPluginSetup.PreparedSetupData\",\"name\":\"preparedSetupData\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_dao\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"plugin\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"currentHelpers\",\"type\":\"address[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IPluginSetup.SetupPayload\",\"name\":\"_payload\",\"type\":\"tuple\"}],\"name\":\"prepareUninstallation\",\"outputs\":[{\"components\":[{\"internalType\":\"enum PermissionLib.Operation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"condition\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PermissionLib.MultiTargetPermission[]\",\"name\":\"permissions\",\"type\":\"tuple[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_dao\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"_fromBuild\",\"type\":\"uint16\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"plugin\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"currentHelpers\",\"type\":\"address[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IPluginSetup.SetupPayload\",\"name\":\"_payload\",\"type\":\"tuple\"}],\"name\":\"prepareUpdate\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address[]\",\"name\":\"helpers\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"enum PermissionLib.Operation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"condition\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PermissionLib.MultiTargetPermission[]\",\"name\":\"permissions\",\"type\":\"tuple[]\"}],\"internalType\":\"struct IPluginSetup.PreparedSetupData\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"protocolVersion\",\"outputs\":[{\"internalType\":\"uint8[3]\",\"name\":\"\",\"type\":\"uint8[3]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"DO NOT USE IN PRODUCTION!\",\"kind\":\"dev\",\"methods\":{\"implementation()\":{\"details\":\"The implementation can be instantiated via the `new` keyword, cloned via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)), or proxied via the UUPS proxy pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\",\"returns\":{\"_0\":\"The address of the plugin implementation contract.\"}},\"prepareInstallation(address,bytes)\":{\"params\":{\"_dao\":\"The address of the installing DAO.\",\"_data\":\"The bytes-encoded data containing the input parameters for the installation as specified in the plugin's build metadata JSON file.\"},\"returns\":{\"plugin\":\"The address of the `Plugin` contract being prepared for installation.\",\"preparedSetupData\":\"The deployed plugin's relevant data which consists of helpers and permissions.\"}},\"prepareUninstallation(address,(address,address[],bytes))\":{\"params\":{\"_dao\":\"The address of the uninstalling DAO.\",\"_payload\":\"The relevant data necessary for the `prepareUninstallation`. See above.\"},\"returns\":{\"permissions\":\"The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the uninstalling DAO.\"}},\"prepareUpdate(address,uint16,(address,address[],bytes))\":{\"details\":\"Since the underlying plugin is non-upgradeable, this non-virtual function must always revert.\",\"params\":{\"_dao\":\"The address of the updating DAO.\",\"_fromBuild\":\"The build number of the plugin to update from.\",\"_payload\":\"The relevant data necessary for the `prepareUpdate`. See above.\"},\"returns\":{\"_0\":\"The initialization data to be passed to upgradeable contracts when the update is applied in the `PluginSetupProcessor`.\",\"_1\":\"The deployed plugin's relevant data which consists of helpers and permissions.\"}},\"protocolVersion()\":{\"details\":\"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\",\"returns\":{\"_0\":\"Returns the semantic Aragon OSx protocol version number.\"}},\"supportsInterface(bytes4)\":{\"params\":{\"_interfaceId\":\"The ID of the interface.\"},\"returns\":{\"_0\":\"Returns `true` if the interface is supported.\"}}},\"version\":1},\"userdoc\":{\"errors\":{\"NonUpgradeablePlugin()\":[{\"notice\":\"Thrown when attempting to prepare an update on a non-upgradeable plugin.\"}]},\"kind\":\"user\",\"methods\":{\"implementation()\":{\"notice\":\"Returns the plugin implementation address.\"},\"prepareInstallation(address,bytes)\":{\"notice\":\"Prepares the installation of a plugin.\"},\"prepareUninstallation(address,(address,address[],bytes))\":{\"notice\":\"Prepares the uninstallation of a plugin.\"},\"prepareUpdate(address,uint16,(address,address[],bytes))\":{\"notice\":\"Prepares the update of a plugin.\"},\"protocolVersion()\":{\"notice\":\"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Checks if this or the parent contract supports an interface by its ID.\"}},\"notice\":\"A mock plugin setup of a cloneable plugin to be deployed via the minimal proxy pattern. v1.1 (Release 1, Build 1)\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/mocks/plugin/PluginCloneableSetupMock.sol\":\"PluginCloneableSetupMockBuild1\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n function __Context_init() internal onlyInitializing {\\n }\\n\\n function __Context_init_unchained() internal onlyInitializing {\\n }\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n function _contextSuffixLength() internal view virtual returns (uint256) {\\n return 0;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x75097e35253e7fb282ee4d7f27a80eaacfa759923185bf17302a89cbc059c5ef\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165Upgradeable.sol\\\";\\nimport {Initializable} from \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165Upgradeable is Initializable, IERC165Upgradeable {\\n function __ERC165_init() internal onlyInitializing {\\n }\\n\\n function __ERC165_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165Upgradeable).interfaceId;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0xd90d7723512df65ae417adaf0801042940f0dabd60039ceeaffe34aa5b238da1\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165Upgradeable {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/IERC1967.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (interfaces/IERC1967.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\\n *\\n * _Available since v4.8.3._\\n */\\ninterface IERC1967 {\\n /**\\n * @dev Emitted when the implementation is upgraded.\\n */\\n event Upgraded(address indexed implementation);\\n\\n /**\\n * @dev Emitted when the admin account has changed.\\n */\\n event AdminChanged(address previousAdmin, address newAdmin);\\n\\n /**\\n * @dev Emitted when the beacon is changed.\\n */\\n event BeaconUpgraded(address indexed beacon);\\n}\\n\",\"keccak256\":\"0x3cbef5ebc24b415252e2f8c0c9254555d30d9f085603b4b80d9b5ed20ab87e90\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822Proxiable {\\n /**\\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n * address.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy.\\n */\\n function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/Clones.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/Clones.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev https://eips.ethereum.org/EIPS/eip-1167[EIP 1167] is a standard for\\n * deploying minimal proxy contracts, also known as \\\"clones\\\".\\n *\\n * > To simply and cheaply clone contract functionality in an immutable way, this standard specifies\\n * > a minimal bytecode implementation that delegates all calls to a known, fixed address.\\n *\\n * The library includes functions to deploy a proxy using either `create` (traditional deployment) or `create2`\\n * (salted deterministic deployment). It also includes functions to predict the addresses of clones deployed using the\\n * deterministic method.\\n *\\n * _Available since v3.4._\\n */\\nlibrary Clones {\\n /**\\n * @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`.\\n *\\n * This function uses the create opcode, which should never revert.\\n */\\n function clone(address implementation) internal returns (address instance) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n // Cleans the upper 96 bits of the `implementation` word, then packs the first 3 bytes\\n // of the `implementation` address with the bytecode before the address.\\n mstore(0x00, or(shr(0xe8, shl(0x60, implementation)), 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000))\\n // Packs the remaining 17 bytes of `implementation` with the bytecode after the address.\\n mstore(0x20, or(shl(0x78, implementation), 0x5af43d82803e903d91602b57fd5bf3))\\n instance := create(0, 0x09, 0x37)\\n }\\n require(instance != address(0), \\\"ERC1167: create failed\\\");\\n }\\n\\n /**\\n * @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`.\\n *\\n * This function uses the create2 opcode and a `salt` to deterministically deploy\\n * the clone. Using the same `implementation` and `salt` multiple time will revert, since\\n * the clones cannot be deployed twice at the same address.\\n */\\n function cloneDeterministic(address implementation, bytes32 salt) internal returns (address instance) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n // Cleans the upper 96 bits of the `implementation` word, then packs the first 3 bytes\\n // of the `implementation` address with the bytecode before the address.\\n mstore(0x00, or(shr(0xe8, shl(0x60, implementation)), 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000))\\n // Packs the remaining 17 bytes of `implementation` with the bytecode after the address.\\n mstore(0x20, or(shl(0x78, implementation), 0x5af43d82803e903d91602b57fd5bf3))\\n instance := create2(0, 0x09, 0x37, salt)\\n }\\n require(instance != address(0), \\\"ERC1167: create2 failed\\\");\\n }\\n\\n /**\\n * @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}.\\n */\\n function predictDeterministicAddress(\\n address implementation,\\n bytes32 salt,\\n address deployer\\n ) internal pure returns (address predicted) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n let ptr := mload(0x40)\\n mstore(add(ptr, 0x38), deployer)\\n mstore(add(ptr, 0x24), 0x5af43d82803e903d91602b57fd5bf3ff)\\n mstore(add(ptr, 0x14), implementation)\\n mstore(ptr, 0x3d602d80600a3d3981f3363d3d373d3d3d363d73)\\n mstore(add(ptr, 0x58), salt)\\n mstore(add(ptr, 0x78), keccak256(add(ptr, 0x0c), 0x37))\\n predicted := keccak256(add(ptr, 0x43), 0x55)\\n }\\n }\\n\\n /**\\n * @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}.\\n */\\n function predictDeterministicAddress(\\n address implementation,\\n bytes32 salt\\n ) internal view returns (address predicted) {\\n return predictDeterministicAddress(implementation, salt, address(this));\\n }\\n}\\n\",\"keccak256\":\"0x01f055f5c26ba25d7f83e9aa9ba877fbea4d0bf22227de046ea67494bc932999\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (proxy/ERC1967/ERC1967Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../Proxy.sol\\\";\\nimport \\\"./ERC1967Upgrade.sol\\\";\\n\\n/**\\n * @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an\\n * implementation address that can be changed. This address is stored in storage in the location specified by\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the\\n * implementation behind the proxy.\\n */\\ncontract ERC1967Proxy is Proxy, ERC1967Upgrade {\\n /**\\n * @dev Initializes the upgradeable proxy with an initial implementation specified by `_logic`.\\n *\\n * If `_data` is nonempty, it's used as data in a delegate call to `_logic`. This will typically be an encoded\\n * function call, and allows initializing the storage of the proxy like a Solidity constructor.\\n */\\n constructor(address _logic, bytes memory _data) payable {\\n _upgradeToAndCall(_logic, _data, false);\\n }\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _implementation() internal view virtual override returns (address impl) {\\n return ERC1967Upgrade._getImplementation();\\n }\\n}\\n\",\"keccak256\":\"0xa2b22da3032e50b55f95ec1d13336102d675f341167aa76db571ef7f8bb7975d\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../beacon/IBeacon.sol\\\";\\nimport \\\"../../interfaces/IERC1967.sol\\\";\\nimport \\\"../../interfaces/draft-IERC1822.sol\\\";\\nimport \\\"../../utils/Address.sol\\\";\\nimport \\\"../../utils/StorageSlot.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n */\\nabstract contract ERC1967Upgrade is IERC1967 {\\n // This is the keccak-256 hash of \\\"eip1967.proxy.rollback\\\" subtracted by 1\\n bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n /**\\n * @dev Storage slot with the address of the current implementation.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _getImplementation() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 implementation slot.\\n */\\n function _setImplementation(address newImplementation) private {\\n require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n }\\n\\n /**\\n * @dev Perform implementation upgrade\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeTo(address newImplementation) internal {\\n _setImplementation(newImplementation);\\n emit Upgraded(newImplementation);\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCall(address newImplementation, bytes memory data, bool forceCall) internal {\\n _upgradeTo(newImplementation);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(newImplementation, data);\\n }\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCallUUPS(address newImplementation, bytes memory data, bool forceCall) internal {\\n // Upgrades from old implementations will perform a rollback test. This test requires the new\\n // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n // this special case will break upgrade paths from old UUPS implementation to new ones.\\n if (StorageSlot.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n _setImplementation(newImplementation);\\n } else {\\n try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n require(slot == _IMPLEMENTATION_SLOT, \\\"ERC1967Upgrade: unsupported proxiableUUID\\\");\\n } catch {\\n revert(\\\"ERC1967Upgrade: new implementation is not UUPS\\\");\\n }\\n _upgradeToAndCall(newImplementation, data, forceCall);\\n }\\n }\\n\\n /**\\n * @dev Storage slot with the admin of the contract.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _getAdmin() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_ADMIN_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 admin slot.\\n */\\n function _setAdmin(address newAdmin) private {\\n require(newAdmin != address(0), \\\"ERC1967: new admin is the zero address\\\");\\n StorageSlot.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n */\\n function _changeAdmin(address newAdmin) internal {\\n emit AdminChanged(_getAdmin(), newAdmin);\\n _setAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\\n */\\n bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n /**\\n * @dev Returns the current beacon.\\n */\\n function _getBeacon() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_BEACON_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new beacon in the EIP1967 beacon slot.\\n */\\n function _setBeacon(address newBeacon) private {\\n require(Address.isContract(newBeacon), \\\"ERC1967: new beacon is not a contract\\\");\\n require(\\n Address.isContract(IBeacon(newBeacon).implementation()),\\n \\\"ERC1967: beacon implementation is not a contract\\\"\\n );\\n StorageSlot.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n }\\n\\n /**\\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n *\\n * Emits a {BeaconUpgraded} event.\\n */\\n function _upgradeBeaconToAndCall(address newBeacon, bytes memory data, bool forceCall) internal {\\n _setBeacon(newBeacon);\\n emit BeaconUpgraded(newBeacon);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x3b21ae06bf5957f73fa16754b0669c77b7abd8ba6c072d35c3281d446fdb86c2\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (proxy/Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\\n * be specified by overriding the virtual {_implementation} function.\\n *\\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\\n * different contract through the {_delegate} function.\\n *\\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\\n */\\nabstract contract Proxy {\\n /**\\n * @dev Delegates the current call to `implementation`.\\n *\\n * This function does not return to its internal call site, it will return directly to the external caller.\\n */\\n function _delegate(address implementation) internal virtual {\\n assembly {\\n // Copy msg.data. We take full control of memory in this inline assembly\\n // block because it will not return to Solidity code. We overwrite the\\n // Solidity scratch pad at memory position 0.\\n calldatacopy(0, 0, calldatasize())\\n\\n // Call the implementation.\\n // out and outsize are 0 because we don't know the size yet.\\n let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)\\n\\n // Copy the returned data.\\n returndatacopy(0, 0, returndatasize())\\n\\n switch result\\n // delegatecall returns 0 on error.\\n case 0 {\\n revert(0, returndatasize())\\n }\\n default {\\n return(0, returndatasize())\\n }\\n }\\n }\\n\\n /**\\n * @dev This is a virtual function that should be overridden so it returns the address to which the fallback function\\n * and {_fallback} should delegate.\\n */\\n function _implementation() internal view virtual returns (address);\\n\\n /**\\n * @dev Delegates the current call to the address returned by `_implementation()`.\\n *\\n * This function does not return to its internal call site, it will return directly to the external caller.\\n */\\n function _fallback() internal virtual {\\n _beforeFallback();\\n _delegate(_implementation());\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\\n * function in the contract matches the call data.\\n */\\n fallback() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data\\n * is empty.\\n */\\n receive() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`\\n * call, or as part of the Solidity `fallback` or `receive` functions.\\n *\\n * If overridden should call `super._beforeFallback()`.\\n */\\n function _beforeFallback() internal virtual {}\\n}\\n\",\"keccak256\":\"0xc130fe33f1b2132158531a87734153293f6d07bc263ff4ac90e85da9c82c0e27\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeacon {\\n /**\\n * @dev Must return an address that can be used as a delegate call target.\\n *\\n * {BeaconProxy} will check that this address is a contract.\\n */\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/StorageSlot.sol)\\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```solidity\\n * contract ERC1967 {\\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n * function _getImplementation() internal view returns (address) {\\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n * }\\n *\\n * function _setImplementation(address newImplementation) internal {\\n * require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n * }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._\\n * _Available since v4.9 for `string`, `bytes`._\\n */\\nlibrary StorageSlot {\\n struct AddressSlot {\\n address value;\\n }\\n\\n struct BooleanSlot {\\n bool value;\\n }\\n\\n struct Bytes32Slot {\\n bytes32 value;\\n }\\n\\n struct Uint256Slot {\\n uint256 value;\\n }\\n\\n struct StringSlot {\\n string value;\\n }\\n\\n struct BytesSlot {\\n bytes value;\\n }\\n\\n /**\\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n */\\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n */\\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n */\\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n */\\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` with member `value` located at `slot`.\\n */\\n function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\\n */\\n function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` with member `value` located at `slot`.\\n */\\n function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\\n */\\n function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n}\\n\",\"keccak256\":\"0xf09e68aa0dc6722a25bc46490e8d48ed864466d17313b8a0b254c36b54e49899\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165 is IERC165 {\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165).interfaceId;\\n }\\n}\\n\",\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"src/dao/IDAO.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IDAO\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for DAOs within the Aragon App DAO framework.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IDAO {\\n /// @notice The action struct to be consumed by the DAO's `execute` function resulting in an external call.\\n /// @param to The address to call.\\n /// @param value The native token value to be sent with the call.\\n /// @param data The bytes-encoded function selector and calldata for the call.\\n struct Action {\\n address to;\\n uint256 value;\\n bytes data;\\n }\\n\\n /// @notice Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\\n /// @param _where The address of the contract.\\n /// @param _who The address of a EOA or contract to give the permissions.\\n /// @param _permissionId The permission identifier.\\n /// @param _data The optional data passed to the `PermissionCondition` registered.\\n /// @return Returns true if the address has permission, false if not.\\n function hasPermission(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes memory _data\\n ) external view returns (bool);\\n\\n /// @notice Updates the DAO metadata (e.g., an IPFS hash).\\n /// @param _metadata The IPFS hash of the new metadata object.\\n function setMetadata(bytes calldata _metadata) external;\\n\\n /// @notice Emitted when the DAO metadata is updated.\\n /// @param metadata The IPFS hash of the new metadata object.\\n event MetadataSet(bytes metadata);\\n\\n /// @notice Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted.\\n /// @param _callId The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce.\\n /// @param _actions The array of actions.\\n /// @param _allowFailureMap A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @return The array of results obtained from the executed actions in `bytes`.\\n /// @return The resulting failure map containing the actions have actually failed.\\n function execute(\\n bytes32 _callId,\\n Action[] memory _actions,\\n uint256 _allowFailureMap\\n ) external returns (bytes[] memory, uint256);\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param actor The address of the caller.\\n /// @param callId The ID of the call.\\n /// @param actions The array of actions executed.\\n /// @param allowFailureMap The allow failure map encoding which actions are allowed to fail.\\n /// @param failureMap The failure map encoding which actions have failed.\\n /// @param execResults The array with the results of the executed actions.\\n /// @dev The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce.\\n event Executed(\\n address indexed actor,\\n bytes32 callId,\\n Action[] actions,\\n uint256 allowFailureMap,\\n uint256 failureMap,\\n bytes[] execResults\\n );\\n\\n /// @notice Emitted when a standard callback is registered.\\n /// @param interfaceId The ID of the interface.\\n /// @param callbackSelector The selector of the callback function.\\n /// @param magicNumber The magic number to be registered for the callback function selector.\\n event StandardCallbackRegistered(\\n bytes4 interfaceId,\\n bytes4 callbackSelector,\\n bytes4 magicNumber\\n );\\n\\n /// @notice Deposits (native) tokens to the DAO contract with a reference string.\\n /// @param _token The address of the token or address(0) in case of the native token.\\n /// @param _amount The amount of tokens to deposit.\\n /// @param _reference The reference describing the deposit reason.\\n function deposit(address _token, uint256 _amount, string calldata _reference) external payable;\\n\\n /// @notice Emitted when a token deposit has been made to the DAO.\\n /// @param sender The address of the sender.\\n /// @param token The address of the deposited token.\\n /// @param amount The amount of tokens deposited.\\n /// @param _reference The reference describing the deposit reason.\\n event Deposited(\\n address indexed sender,\\n address indexed token,\\n uint256 amount,\\n string _reference\\n );\\n\\n /// @notice Emitted when a native token deposit has been made to the DAO.\\n /// @dev This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).\\n /// @param sender The address of the sender.\\n /// @param amount The amount of native tokens deposited.\\n event NativeTokenDeposited(address sender, uint256 amount);\\n\\n /// @notice Setter for the trusted forwarder verifying the meta transaction.\\n /// @param _trustedForwarder The trusted forwarder address.\\n function setTrustedForwarder(address _trustedForwarder) external;\\n\\n /// @notice Getter for the trusted forwarder verifying the meta transaction.\\n /// @return The trusted forwarder address.\\n function getTrustedForwarder() external view returns (address);\\n\\n /// @notice Emitted when a new TrustedForwarder is set on the DAO.\\n /// @param forwarder the new forwarder address.\\n event TrustedForwarderSet(address forwarder);\\n\\n /// @notice Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\\n /// @param _hash The hash of the data to be signed.\\n /// @param _signature The signature byte array associated with `_hash`.\\n /// @return Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not.\\n function isValidSignature(bytes32 _hash, bytes memory _signature) external returns (bytes4);\\n\\n /// @notice Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\\n /// @param _interfaceId The ID of the interface.\\n /// @param _callbackSelector The selector of the callback function.\\n /// @param _magicNumber The magic number to be registered for the function signature.\\n function registerStandardCallback(\\n bytes4 _interfaceId,\\n bytes4 _callbackSelector,\\n bytes4 _magicNumber\\n ) external;\\n\\n /// @notice Removed function being left here to not corrupt the IDAO interface ID. Any call will revert.\\n /// @dev Introduced in v1.0.0. Removed in v1.4.0.\\n function setSignatureValidator(address) external;\\n}\\n\",\"keccak256\":\"0xb7f615523c26de042edce98731c658f44a1edb2464387ac1b642c4c69f57128e\",\"license\":\"AGPL-3.0-or-later\"},\"src/mocks/plugin/PluginCloneableMock.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\n/* solhint-disable one-contract-per-file */\\npragma solidity ^0.8.8;\\n\\nimport {PluginCloneable} from \\\"../../plugin/PluginCloneable.sol\\\";\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice A mock cloneable plugin to be deployed via the minimal proxy pattern.\\n/// v1.1 (Release 1, Build 1)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginCloneableMockBuild1 is PluginCloneable {\\n uint256 public state1;\\n\\n function initialize(IDAO _dao) external initializer {\\n __PluginCloneable_init(_dao);\\n state1 = 1;\\n }\\n}\\n\\n/// @notice A mock cloneable plugin to be deployed via the minimal proxy pattern.\\n/// v1.1 (Release 1, Build 2)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginCloneableMockBuild2 is PluginCloneable {\\n uint256 public state1;\\n uint256 public state2;\\n\\n function initialize(IDAO _dao) external initializer {\\n __PluginCloneable_init(_dao);\\n state1 = 1;\\n state2 = 2;\\n }\\n}\\n\\n/// @notice A mock cloneable plugin missing an initializer function.\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginCloneableMockBad is PluginCloneable {\\n uint256 public state1;\\n\\n function notAnInitializer(IDAO _dao) external {\\n __PluginCloneable_init(_dao);\\n state1 = 1;\\n }\\n}\\n\",\"keccak256\":\"0x1bb271f7b553040fad7907e97b860aa833aec9aefe7477e00ba7bdfd80d84e98\",\"license\":\"AGPL-3.0-or-later\"},\"src/mocks/plugin/PluginCloneableSetupMock.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\n/* solhint-disable one-contract-per-file */\\npragma solidity ^0.8.8;\\n\\nimport {PermissionLib} from \\\"../../permission/PermissionLib.sol\\\";\\nimport {IPluginSetup} from \\\"../../plugin/setup/IPluginSetup.sol\\\";\\nimport {PluginSetup} from \\\"../../plugin/setup/PluginSetup.sol\\\";\\nimport {ProxyLib} from \\\"../../utils/deployment/ProxyLib.sol\\\";\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\nimport {mockPermissions, mockHelpers} from \\\"./PluginSetupMockData.sol\\\";\\nimport {PluginCloneableMockBuild1, PluginCloneableMockBuild2} from \\\"./PluginCloneableMock.sol\\\";\\n\\n/// @notice A mock plugin setup of a cloneable plugin to be deployed via the minimal proxy pattern.\\n/// v1.1 (Release 1, Build 1)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginCloneableSetupMockBuild1 is PluginSetup {\\n using ProxyLib for address;\\n\\n uint16 internal constant THIS_BUILD = 1;\\n\\n constructor() PluginSetup(address(new PluginCloneableMockBuild1())) {}\\n\\n /// @inheritdoc IPluginSetup\\n function prepareInstallation(\\n address _dao,\\n bytes memory\\n ) external returns (address plugin, PreparedSetupData memory preparedSetupData) {\\n bytes memory initData = abi.encodeCall(PluginCloneableMockBuild1.initialize, (IDAO(_dao)));\\n plugin = implementation().deployMinimalProxy(initData);\\n preparedSetupData.helpers = mockHelpers(THIS_BUILD);\\n preparedSetupData.permissions = mockPermissions(\\n 0,\\n THIS_BUILD,\\n PermissionLib.Operation.Grant\\n );\\n }\\n\\n /// @inheritdoc IPluginSetup\\n function prepareUninstallation(\\n address _dao,\\n SetupPayload calldata _payload\\n ) external pure returns (PermissionLib.MultiTargetPermission[] memory permissions) {\\n (_dao, _payload);\\n permissions = mockPermissions(0, THIS_BUILD, PermissionLib.Operation.Revoke);\\n }\\n}\\n\\n/// @notice A mock plugin setup of a cloneable plugin to be deployed via the minimal proxy pattern.\\n/// v1.2 (Release 1, Build 2)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginCloneableSetupMockBuild2 is PluginSetup {\\n using ProxyLib for address;\\n\\n uint16 internal constant THIS_BUILD = 2;\\n\\n constructor() PluginSetup(address(new PluginCloneableMockBuild2())) {}\\n\\n /// @inheritdoc IPluginSetup\\n function prepareInstallation(\\n address _dao,\\n bytes memory\\n ) external returns (address plugin, PreparedSetupData memory preparedSetupData) {\\n bytes memory initData = abi.encodeCall(PluginCloneableMockBuild2.initialize, (IDAO(_dao)));\\n plugin = implementation().deployMinimalProxy(initData);\\n preparedSetupData.helpers = mockHelpers(THIS_BUILD);\\n preparedSetupData.permissions = mockPermissions(\\n 0,\\n THIS_BUILD,\\n PermissionLib.Operation.Grant\\n );\\n }\\n\\n /// @inheritdoc IPluginSetup\\n function prepareUninstallation(\\n address _dao,\\n SetupPayload calldata _payload\\n ) external pure returns (PermissionLib.MultiTargetPermission[] memory permissions) {\\n (_dao, _payload);\\n permissions = mockPermissions(0, THIS_BUILD, PermissionLib.Operation.Revoke);\\n }\\n}\\n\",\"keccak256\":\"0xfac0ce75e9d665bc9e2900c5cfa3f2667e0ea73573c4f46147453c6582eac1de\",\"license\":\"AGPL-3.0-or-later\"},\"src/mocks/plugin/PluginSetupMockData.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {PermissionLib} from \\\"../../permission/PermissionLib.sol\\\";\\n\\naddress constant NO_CONDITION = address(0);\\n\\nerror ConflictingValues();\\n\\n/// @notice Creates a mock `MultiTargetPermission` array by converting a range of `uint160` values into `address` values.\\n/// @param rangeStart The start of the range.\\n/// @param rangeEnd The end of the range (that is not included).\\n/// @param op The permission operation type.\\n/// @return permissions The mock array of permissions.\\n/// @dev DO NOT USE IN PRODUCTION!\\nfunction mockPermissions(\\n uint160 rangeStart,\\n uint160 rangeEnd,\\n PermissionLib.Operation op\\n) pure returns (PermissionLib.MultiTargetPermission[] memory permissions) {\\n if (rangeStart > rangeEnd) revert ConflictingValues();\\n\\n permissions = new PermissionLib.MultiTargetPermission[](rangeEnd - rangeStart);\\n\\n for (uint160 i = rangeStart; i < rangeEnd; i++) {\\n permissions[i - rangeStart] = PermissionLib.MultiTargetPermission({\\n operation: op,\\n where: address(i),\\n who: address(i),\\n condition: PermissionLib.NO_CONDITION,\\n permissionId: keccak256(\\\"MOCK_PERMISSION\\\")\\n });\\n }\\n}\\n\\n/// @notice Creates a mock array of helper addresses of specified length by converting `uint160` values starting from 0 into `address` values.\\n/// @param len The length of the helper array.\\n/// @return helpers The mock array of helper addresses.\\n/// @dev DO NOT USE IN PRODUCTION!\\nfunction mockHelpers(uint160 len) pure returns (address[] memory helpers) {\\n helpers = new address[](len);\\n\\n for (uint160 i = 0; i < len; i++) {\\n helpers[i] = address(i);\\n }\\n}\\n\",\"keccak256\":\"0x529d1b7ea4c348fe18edf81a044792ca8aa1f6ad9a7d2edfd35e38bf8372abf9\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/PermissionLib.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title PermissionLib\\n/// @author Aragon X - 2021-2023\\n/// @notice A library containing objects for permission processing.\\n/// @custom:security-contact sirt@aragon.org\\nlibrary PermissionLib {\\n /// @notice A constant expressing that no condition is applied to a permission.\\n address public constant NO_CONDITION = address(0);\\n\\n /// @notice The types of permission operations available in the `PermissionManager`.\\n /// @param Grant The grant operation setting a permission without a condition.\\n /// @param Revoke The revoke operation removing a permission (that was granted with or without a condition).\\n /// @param GrantWithCondition The grant operation setting a permission with a condition.\\n enum Operation {\\n Grant,\\n Revoke,\\n GrantWithCondition\\n }\\n\\n /// @notice A struct containing the information for a permission to be applied on a single target contract without a condition.\\n /// @param operation The permission operation type.\\n /// @param who The address (EOA or contract) receiving the permission.\\n /// @param permissionId The permission identifier.\\n struct SingleTargetPermission {\\n Operation operation;\\n address who;\\n bytes32 permissionId;\\n }\\n\\n /// @notice A struct containing the information for a permission to be applied on multiple target contracts, optionally, with a condition.\\n /// @param operation The permission operation type.\\n /// @param where The address of the target contract for which `who` receives permission.\\n /// @param who The address (EOA or contract) receiving the permission.\\n /// @param condition The `PermissionCondition` that will be asked for authorization on calls connected to the specified permission identifier.\\n /// @param permissionId The permission identifier.\\n struct MultiTargetPermission {\\n Operation operation;\\n address where;\\n address who;\\n address condition;\\n bytes32 permissionId;\\n }\\n}\\n\",\"keccak256\":\"0x470faf3c4891ebc6420ef6cc09f6098917568ccc79268c90954d1478199b6097\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/DaoAuthorizableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ContextUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\\\";\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\nimport {_auth} from \\\"./auth.sol\\\";\\n\\n/// @title DaoAuthorizableUpgradeable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract contract providing a meta-transaction compatible modifier for upgradeable or cloneable contracts to authorize function calls through an associated DAO.\\n/// @dev Make sure to call `__DaoAuthorizableUpgradeable_init` during initialization of the inheriting contract.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract DaoAuthorizableUpgradeable is ContextUpgradeable {\\n /// @notice The associated DAO managing the permissions of inheriting contracts.\\n IDAO private dao_;\\n\\n /// @notice Initializes the contract by setting the associated DAO.\\n /// @param _dao The associated DAO address.\\n // solhint-disable-next-line func-name-mixedcase\\n function __DaoAuthorizableUpgradeable_init(IDAO _dao) internal onlyInitializing {\\n dao_ = _dao;\\n }\\n\\n /// @notice Returns the DAO contract.\\n /// @return The DAO contract.\\n function dao() public view returns (IDAO) {\\n return dao_;\\n }\\n\\n /// @notice A modifier to make functions on inheriting contracts authorized. Permissions to call the function are checked through the associated DAO's permission manager.\\n /// @param _permissionId The permission identifier required to call the method this modifier is applied to.\\n modifier auth(bytes32 _permissionId) {\\n _auth(dao_, address(this), _msgSender(), _permissionId, _msgData());\\n _;\\n }\\n\\n /// @notice This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain (see [OpenZeppelin's guide about storage gaps](https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps)).\\n uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0x7fac6b01b037ba1cb9d6a22d3f43b0785037dcf496ffb672434d9bf7227d2585\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/auth.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice Thrown if a call is unauthorized in the associated DAO.\\n/// @param dao The associated DAO.\\n/// @param where The context in which the authorization reverted.\\n/// @param who The address (EOA or contract) missing the permission.\\n/// @param permissionId The permission identifier.\\nerror DaoUnauthorized(address dao, address where, address who, bytes32 permissionId);\\n\\n/// @notice A free function checking if a caller is granted permissions on a target contract via a permission identifier that redirects the approval to a `PermissionCondition` if this was specified in the setup.\\n/// @param _where The address of the target contract for which `who` receives permission.\\n/// @param _who The address (EOA or contract) owning the permission.\\n/// @param _permissionId The permission identifier.\\n/// @param _data The optional data passed to the `PermissionCondition` registered.\\n/// @custom:security-contact sirt@aragon.org\\nfunction _auth(\\n IDAO _dao,\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes calldata _data\\n) view {\\n if (!_dao.hasPermission(_where, _who, _permissionId, _data))\\n revert DaoUnauthorized({\\n dao: address(_dao),\\n where: _where,\\n who: _who,\\n permissionId: _permissionId\\n });\\n}\\n\",\"keccak256\":\"0x878764b4f87fe0651fb3798fb9cb87c952f8c6caf6ae79c7f09de84df6c00298\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/IPlugin.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IPlugin\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the traits of a plugin.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IPlugin {\\n enum PluginType {\\n UUPS,\\n Cloneable,\\n Constructable\\n }\\n\\n /// @notice Returns the plugin's type\\n function pluginType() external view returns (PluginType);\\n}\\n\",\"keccak256\":\"0xc57cd0d10b6380ab7f54c713a509e88fd8f4ad9288313a0e8e12b8887817ddfe\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/PluginCloneable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ERC165Upgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\\\";\\n\\nimport {IProtocolVersion} from \\\"../utils/versioning/IProtocolVersion.sol\\\";\\nimport {ProtocolVersion} from \\\"../utils/versioning/ProtocolVersion.sol\\\";\\nimport {DaoAuthorizableUpgradeable} from \\\"../permission/auth/DaoAuthorizableUpgradeable.sol\\\";\\nimport {IDAO} from \\\"../dao/IDAO.sol\\\";\\nimport {IPlugin} from \\\"./IPlugin.sol\\\";\\n\\n/// @title PluginCloneable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract, non-upgradeable contract to inherit from when creating a plugin being deployed via the minimal clones pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)).\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract PluginCloneable is\\n IPlugin,\\n ERC165Upgradeable,\\n DaoAuthorizableUpgradeable,\\n ProtocolVersion\\n{\\n address public target;\\n\\n /// @dev Emitted each time the Target is set.\\n event TargetSet(address indexed previousTarget, address indexed newTarget);\\n\\n /// @notice Disables the initializers on the implementation contract to prevent it from being left uninitialized.\\n /// @custom:oz-upgrades-unsafe-allow constructor\\n constructor() {\\n _disableInitializers();\\n }\\n\\n /// @notice Initializes the plugin by storing the associated DAO.\\n /// @param _dao The DAO contract.\\n // solhint-disable-next-line func-name-mixedcase\\n function __PluginCloneable_init(IDAO _dao) internal virtual onlyInitializing {\\n __DaoAuthorizableUpgradeable_init(_dao);\\n }\\n\\n /// @dev Sets the target to a new target (`newTarget`).\\n /// @notice Can only be called by the current owner. TODO\\n function setTarget(address _target) public {\\n address previousTarget = target;\\n target = _target;\\n emit TargetSet(previousTarget, _target);\\n }\\n\\n /// @inheritdoc IPlugin\\n function pluginType() public pure override returns (PluginType) {\\n return PluginType.Cloneable;\\n }\\n\\n /// @notice Checks if this or the parent contract supports an interface by its ID.\\n /// @param _interfaceId The ID of the interface.\\n /// @return Returns `true` if the interface is supported.\\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\\n return\\n _interfaceId == type(IPlugin).interfaceId ||\\n _interfaceId == type(IProtocolVersion).interfaceId ||\\n super.supportsInterface(_interfaceId);\\n }\\n\\n /// @notice Forwards the actions to the currently set `target` for the execution.\\n /// @param _callId Identifier for this execution.\\n /// @param _actions actions that will be eventually called.\\n /// @param _allowFailureMap Bitmap-encoded number. TODO:\\n /// @return execResults address of the implementation contract.\\n /// @return failureMap address of the implementation contract.\\n function _execute(\\n bytes32 _callId,\\n IDAO.Action[] calldata _actions,\\n uint256 _allowFailureMap\\n ) internal virtual returns (bytes[] memory execResults, uint256 failureMap) {\\n (execResults, failureMap) = IDAO(target).execute(_callId, _actions, _allowFailureMap);\\n }\\n\\n /// @notice Forwards the actions to the `target` for the execution.\\n /// @param _target Forwards the actions to the specific target.\\n /// @param _callId Identifier for this execution.\\n /// @param _actions actions that will be eventually called.\\n /// @param _allowFailureMap Bitmap-encoded number. TODO:\\n /// @return execResults address of the implementation contract.\\n /// @return failureMap address of the implementation contract.\\n function _execute(\\n address _target,\\n bytes32 _callId,\\n IDAO.Action[] calldata _actions,\\n uint256 _allowFailureMap\\n ) internal virtual returns (bytes[] memory execResults, uint256 failureMap) {\\n (execResults, failureMap) = IDAO(_target).execute(_callId, _actions, _allowFailureMap);\\n }\\n}\\n\",\"keccak256\":\"0x23fff653e79f6d079073bab2f878051cf85c8e3cfa7ef359f3be92fc65ca2501\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/setup/IPluginSetup.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {PermissionLib} from \\\"../../permission/PermissionLib.sol\\\";\\n\\n// solhint-disable-next-line no-unused-import\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @title IPluginSetup\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for a plugin setup contract to be consumed by the `PluginSetupProcessor` for plugin installations, updates, and uninstallations.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IPluginSetup {\\n /// @notice The data associated with a prepared setup.\\n /// @param helpers The address array of helpers (contracts or EOAs) associated with this plugin version after the installation or update.\\n /// @param permissions The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the installing or updating DAO.\\n struct PreparedSetupData {\\n address[] helpers;\\n PermissionLib.MultiTargetPermission[] permissions;\\n }\\n\\n /// @notice The payload for plugin updates and uninstallations containing the existing contracts as well as optional data to be consumed by the plugin setup.\\n /// @param plugin The address of the `Plugin`.\\n /// @param currentHelpers The address array of all current helpers (contracts or EOAs) associated with the plugin to update from.\\n /// @param data The bytes-encoded data containing the input parameters for the preparation of update/uninstall as specified in the corresponding ABI on the version's metadata.\\n struct SetupPayload {\\n address plugin;\\n address[] currentHelpers;\\n bytes data;\\n }\\n\\n /// @notice Prepares the installation of a plugin.\\n /// @param _dao The address of the installing DAO.\\n /// @param _data The bytes-encoded data containing the input parameters for the installation as specified in the plugin's build metadata JSON file.\\n /// @return plugin The address of the `Plugin` contract being prepared for installation.\\n /// @return preparedSetupData The deployed plugin's relevant data which consists of helpers and permissions.\\n function prepareInstallation(\\n address _dao,\\n bytes calldata _data\\n ) external returns (address plugin, PreparedSetupData memory preparedSetupData);\\n\\n /// @notice Prepares the update of a plugin.\\n /// @param _dao The address of the updating DAO.\\n /// @param _fromBuild The build number of the plugin to update from.\\n /// @param _payload The relevant data necessary for the `prepareUpdate`. See above.\\n /// @return initData The initialization data to be passed to upgradeable contracts when the update is applied in the `PluginSetupProcessor`.\\n /// @return preparedSetupData The deployed plugin's relevant data which consists of helpers and permissions.\\n function prepareUpdate(\\n address _dao,\\n uint16 _fromBuild,\\n SetupPayload calldata _payload\\n ) external returns (bytes memory initData, PreparedSetupData memory preparedSetupData);\\n\\n /// @notice Prepares the uninstallation of a plugin.\\n /// @param _dao The address of the uninstalling DAO.\\n /// @param _payload The relevant data necessary for the `prepareUninstallation`. See above.\\n /// @return permissions The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the uninstalling DAO.\\n function prepareUninstallation(\\n address _dao,\\n SetupPayload calldata _payload\\n ) external returns (PermissionLib.MultiTargetPermission[] memory permissions);\\n\\n /// @notice Returns the plugin implementation address.\\n /// @return The address of the plugin implementation contract.\\n /// @dev The implementation can be instantiated via the `new` keyword, cloned via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)), or proxied via the UUPS proxy pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0x21c99995208039ac6ace219b6f273243811dc2aa66399e8e499e43ec30b82fa9\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/setup/PluginSetup.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ERC165} from \\\"@openzeppelin/contracts/utils/introspection/ERC165.sol\\\";\\n\\nimport {IProtocolVersion} from \\\"../../utils/versioning/IProtocolVersion.sol\\\";\\nimport {ProtocolVersion} from \\\"../../utils/versioning/ProtocolVersion.sol\\\";\\nimport {IPluginSetup} from \\\"./IPluginSetup.sol\\\";\\n\\n/// @title PluginSetup\\n/// @author Aragon X - 2022-2024\\n/// @notice An abstract contract to inherit from to implement the plugin setup for non-upgradeable plugins, i.e,\\n/// - `Plugin` being deployed via the `new` keyword\\n/// - `PluginCloneable` being deployed via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)).\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract PluginSetup is ERC165, IPluginSetup, ProtocolVersion {\\n /// @notice The address of the plugin implementation contract for initial block explorer verification and, in the case of `PluginClonable` implementations, to create [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167) clones from.\\n address internal immutable IMPLEMENTATION;\\n\\n /// @notice Thrown when attempting to prepare an update on a non-upgradeable plugin.\\n error NonUpgradeablePlugin();\\n\\n /// @notice The contract constructor, that setting the plugin implementation contract.\\n /// @param _implementation The address of the plugin implementation contract.\\n constructor(address _implementation) {\\n IMPLEMENTATION = _implementation;\\n }\\n\\n /// @inheritdoc IPluginSetup\\n /// @dev Since the underlying plugin is non-upgradeable, this non-virtual function must always revert.\\n function prepareUpdate(\\n address _dao,\\n uint16 _fromBuild,\\n SetupPayload calldata _payload\\n ) external pure returns (bytes memory, PreparedSetupData memory) {\\n (_dao, _fromBuild, _payload);\\n revert NonUpgradeablePlugin();\\n }\\n\\n /// @notice Checks if this or the parent contract supports an interface by its ID.\\n /// @param _interfaceId The ID of the interface.\\n /// @return Returns `true` if the interface is supported.\\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\\n return\\n _interfaceId == type(IPluginSetup).interfaceId ||\\n _interfaceId == type(IProtocolVersion).interfaceId ||\\n super.supportsInterface(_interfaceId);\\n }\\n\\n /// @inheritdoc IPluginSetup\\n function implementation() public view returns (address) {\\n return IMPLEMENTATION;\\n }\\n}\\n\",\"keccak256\":\"0x93044f8080758c5cf8d621e3614b8150f55572a1770880106a49dfa53784a9d2\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/deployment/ProxyLib.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ERC1967Proxy} from \\\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol\\\";\\nimport {Clones} from \\\"@openzeppelin/contracts/proxy/Clones.sol\\\";\\nimport {Address} from \\\"@openzeppelin/contracts/utils/Address.sol\\\";\\n\\n/// @title ProxyLib\\n/// @author Aragon X - 2024\\n/// @notice A library containing methods for the deployment of proxies via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)) and minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)).\\n/// @custom:security-contact sirt@aragon.org\\nlibrary ProxyLib {\\n using Address for address;\\n using Clones for address;\\n\\n /// @notice Creates an [ERC-1967](https://eips.ethereum.org/EIPS/eip-1967) UUPS proxy contract pointing to a logic contract and allows to immediately initialize it.\\n /// @param _logic The logic contract the proxy is pointing to.\\n /// @param _initCalldata The initialization data for this contract.\\n /// @return uupsProxy The address of the UUPS proxy contract created.\\n /// @dev If `_initCalldata` is non-empty, it is used in a delegate call to the `_logic` contract. This will typically be an encoded function call initializing the storage of the proxy (see [OpenZeppelin ERC1967Proxy-constructor](https://docs.openzeppelin.com/contracts/4.x/api/proxy#ERC1967Proxy-constructor-address-bytes-)).\\n function deployUUPSProxy(\\n address _logic,\\n bytes memory _initCalldata\\n ) internal returns (address uupsProxy) {\\n uupsProxy = address(new ERC1967Proxy({_logic: _logic, _data: _initCalldata}));\\n }\\n\\n /// @notice Creates an [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167) minimal proxy contract, also known as clones, pointing to a logic contract and allows to immediately initialize it.\\n /// @param _logic The logic contract the proxy is pointing to.\\n /// @param _initCalldata The initialization data for this contract.\\n /// @return minimalProxy The address of the minimal proxy contract created.\\n /// @dev If `_initCalldata` is non-empty, it is used in a call to the clone contract. This will typically be an encoded function call initializing the storage of the contract.\\n function deployMinimalProxy(\\n address _logic,\\n bytes memory _initCalldata\\n ) internal returns (address minimalProxy) {\\n minimalProxy = _logic.clone();\\n if (_initCalldata.length > 0) {\\n minimalProxy.functionCall({data: _initCalldata});\\n }\\n }\\n}\\n\",\"keccak256\":\"0xef0d1790dfa026381c021daa2ec7267357497f58cd4a2fa5c64e72e0dea95acc\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/IProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IProtocolVersion\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the semantic Aragon OSx protocol version number.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IProtocolVersion {\\n /// @notice Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\\n /// @return _version Returns the semantic Aragon OSx protocol version number.\\n /// @dev This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\\n function protocolVersion() external view returns (uint8[3] memory _version);\\n}\\n\",\"keccak256\":\"0x00a4da654d21dc1bdadbdc8bd54bb86c378c56f85e461ccc31303628ea621361\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/ProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IProtocolVersion} from \\\"./IProtocolVersion.sol\\\";\\n\\n/// @title ProtocolVersion\\n/// @author Aragon X - 2023\\n/// @notice An abstract, stateless, non-upgradeable contract providing the current Aragon OSx protocol version number.\\n/// @dev Do not add any new variables to this contract that would shift down storage in the inheritance chain.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract ProtocolVersion is IProtocolVersion {\\n // IMPORTANT: Do not add any storage variable, see the above notice.\\n\\n /// @inheritdoc IProtocolVersion\\n function protocolVersion() public pure returns (uint8[3] memory) {\\n return [1, 4, 0];\\n }\\n}\\n\",\"keccak256\":\"0x3975c937be935f687c6b6b8f379071232681e98cf04b175d72781b819ea52bdb\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"errors":{"NonUpgradeablePlugin()":[{"notice":"Thrown when attempting to prepare an update on a non-upgradeable plugin."}]},"kind":"user","methods":{"implementation()":{"notice":"Returns the plugin implementation address."},"prepareInstallation(address,bytes)":{"notice":"Prepares the installation of a plugin."},"prepareUninstallation(address,(address,address[],bytes))":{"notice":"Prepares the uninstallation of a plugin."},"prepareUpdate(address,uint16,(address,address[],bytes))":{"notice":"Prepares the update of a plugin."},"protocolVersion()":{"notice":"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with."},"supportsInterface(bytes4)":{"notice":"Checks if this or the parent contract supports an interface by its ID."}},"notice":"A mock plugin setup of a cloneable plugin to be deployed via the minimal proxy pattern. v1.1 (Release 1, Build 1)","version":1}},"PluginCloneableSetupMockBuild2":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"ConflictingValues","type":"error"},{"inputs":[],"name":"NonUpgradeablePlugin","type":"error"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_dao","type":"address"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"prepareInstallation","outputs":[{"internalType":"address","name":"plugin","type":"address"},{"components":[{"internalType":"address[]","name":"helpers","type":"address[]"},{"components":[{"internalType":"enum PermissionLib.Operation","name":"operation","type":"uint8"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"condition","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"internalType":"struct PermissionLib.MultiTargetPermission[]","name":"permissions","type":"tuple[]"}],"internalType":"struct IPluginSetup.PreparedSetupData","name":"preparedSetupData","type":"tuple"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_dao","type":"address"},{"components":[{"internalType":"address","name":"plugin","type":"address"},{"internalType":"address[]","name":"currentHelpers","type":"address[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct IPluginSetup.SetupPayload","name":"_payload","type":"tuple"}],"name":"prepareUninstallation","outputs":[{"components":[{"internalType":"enum PermissionLib.Operation","name":"operation","type":"uint8"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"condition","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"internalType":"struct PermissionLib.MultiTargetPermission[]","name":"permissions","type":"tuple[]"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_dao","type":"address"},{"internalType":"uint16","name":"_fromBuild","type":"uint16"},{"components":[{"internalType":"address","name":"plugin","type":"address"},{"internalType":"address[]","name":"currentHelpers","type":"address[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct IPluginSetup.SetupPayload","name":"_payload","type":"tuple"}],"name":"prepareUpdate","outputs":[{"internalType":"bytes","name":"","type":"bytes"},{"components":[{"internalType":"address[]","name":"helpers","type":"address[]"},{"components":[{"internalType":"enum PermissionLib.Operation","name":"operation","type":"uint8"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"condition","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"internalType":"struct PermissionLib.MultiTargetPermission[]","name":"permissions","type":"tuple[]"}],"internalType":"struct IPluginSetup.PreparedSetupData","name":"","type":"tuple"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"protocolVersion","outputs":[{"internalType":"uint8[3]","name":"","type":"uint8[3]"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"DO NOT USE IN PRODUCTION!","kind":"dev","methods":{"implementation()":{"details":"The implementation can be instantiated via the `new` keyword, cloned via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)), or proxied via the UUPS proxy pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).","returns":{"_0":"The address of the plugin implementation contract."}},"prepareInstallation(address,bytes)":{"params":{"_dao":"The address of the installing DAO.","_data":"The bytes-encoded data containing the input parameters for the installation as specified in the plugin's build metadata JSON file."},"returns":{"plugin":"The address of the `Plugin` contract being prepared for installation.","preparedSetupData":"The deployed plugin's relevant data which consists of helpers and permissions."}},"prepareUninstallation(address,(address,address[],bytes))":{"params":{"_dao":"The address of the uninstalling DAO.","_payload":"The relevant data necessary for the `prepareUninstallation`. See above."},"returns":{"permissions":"The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the uninstalling DAO."}},"prepareUpdate(address,uint16,(address,address[],bytes))":{"details":"Since the underlying plugin is non-upgradeable, this non-virtual function must always revert.","params":{"_dao":"The address of the updating DAO.","_fromBuild":"The build number of the plugin to update from.","_payload":"The relevant data necessary for the `prepareUpdate`. See above."},"returns":{"_0":"The initialization data to be passed to upgradeable contracts when the update is applied in the `PluginSetupProcessor`.","_1":"The deployed plugin's relevant data which consists of helpers and permissions."}},"protocolVersion()":{"details":"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.","returns":{"_0":"Returns the semantic Aragon OSx protocol version number."}},"supportsInterface(bytes4)":{"params":{"_interfaceId":"The ID of the interface."},"returns":{"_0":"Returns `true` if the interface is supported."}}},"version":1},"evm":{"bytecode":{"functionDebugData":{"@_2762":{"entryPoint":null,"id":2762,"parameterSlots":0,"returnSlots":0},"@_4893":{"entryPoint":null,"id":4893,"parameterSlots":1,"returnSlots":0}},"generatedSources":[],"linkReferences":{},"object":"60a060405234801561001057600080fd5b5060405161001d9061004b565b604051809103906000f080158015610039573d6000803e3d6000fd5b506001600160a01b0316608052610058565b61066680610d3183390190565b608051610cb86100796000396000818160c101526102980152610cb86000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c80639cb0a124116100505780639cb0a124146100eb578063a8a9c29e1461010b578063f10832f11461012c57600080fd5b806301ffc9a7146100775780632ae9c6001461009f5780635c60da1b146100b4575b600080fd5b61008a6100853660046107fe565b61014d565b60405190151581526020015b60405180910390f35b6100a761019e565b6040516100969190610828565b6040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152602001610096565b6100fe6100f9366004610885565b6101c8565b604051610096919061094f565b61011e610119366004610998565b6101df565b604051610096929190610ae2565b61013f61013a366004610b26565b610217565b604051610096929190610be8565b60006001600160e01b0319821663099718b560e41b148061017d57506001600160e01b03198216621574e360e91b145b8061019857506301ffc9a760e01b6001600160e01b03198316145b92915050565b6101a66107e0565b5060408051606081018252600181526004602082015260009181019190915290565b60606101d86000600260016102f3565b9392505050565b60606101fe604051806040016040528060608152602001606081525090565b60405163a112810160e01b815260040160405180910390fd5b6000610236604051806040016040528060608152602001606081525090565b6040516001600160a01b038516602482015260009060440160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663189acdbd60e31b17905290506102c9816102ba7f000000000000000000000000000000000000000000000000000000000000000090565b6001600160a01b031690610478565b92506102d560026104b0565b82526102e460006002816102f3565b60208301525090939092509050565b6060826001600160a01b0316846001600160a01b0316111561032857604051633a4013cd60e21b815260040160405180910390fd5b6103328484610c20565b6001600160a01b031667ffffffffffffffff81111561035357610353610b10565b6040519080825280602002602001820160405280156103ac57816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282526000199092019101816103715790505b509050835b836001600160a01b0316816001600160a01b03161015610470576040518060a001604052808460028111156103e8576103e86108d3565b81526001600160a01b038316602082018190526040820152600060608201527fa280eec51ab8e1bc4b6b0c1b7f1bde785761b787a49db404e3e9338ed9b016ef608090910152826104398784610c20565b6001600160a01b03168151811061045257610452610c40565b6020026020010181905250808061046890610c56565b9150506103b1565b509392505050565b600061048c836001600160a01b0316610569565b825190915015610198576104a96001600160a01b0382168361060f565b5092915050565b6060816001600160a01b031667ffffffffffffffff8111156104d4576104d4610b10565b6040519080825280602002602001820160405280156104fd578160200160208202803683370190505b50905060005b826001600160a01b0316816001600160a01b03161015610563578082826001600160a01b03168151811061053957610539610c40565b6001600160a01b03909216602092830291909101909101528061055b81610c56565b915050610503565b50919050565b6000763d602d80600a3d3981f3363d3d373d3d3d363d730000008260601b60e81c176000526e5af43d82803e903d91602b57fd5bf38260781b17602052603760096000f090506001600160a01b03811661060a5760405162461bcd60e51b815260206004820152601660248201527f455243313136373a20637265617465206661696c65640000000000000000000060448201526064015b60405180910390fd5b919050565b60606101d8838360006040518060400160405280601e81526020017f416464726573733a206c6f772d6c6576656c2063616c6c206661696c656400008152506060824710156106c65760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610601565b600080866001600160a01b031685876040516106e29190610c7c565b60006040518083038185875af1925050503d806000811461071f576040519150601f19603f3d011682016040523d82523d6000602084013e610724565b606091505b509150915061073587838387610742565b925050505b949350505050565b606083156107b15782516000036107aa576001600160a01b0385163b6107aa5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610601565b508161073a565b61073a83838151156107c65781518083602001fd5b8060405162461bcd60e51b81526004016106019190610c98565b60405180606001604052806003906020820280368337509192915050565b60006020828403121561081057600080fd5b81356001600160e01b0319811681146101d857600080fd5b60608101818360005b600381101561085357815160ff16835260209283019290910190600101610831565b50505092915050565b80356001600160a01b038116811461060a57600080fd5b60006060828403121561056357600080fd5b6000806040838503121561089857600080fd5b6108a18361085c565b9150602083013567ffffffffffffffff8111156108bd57600080fd5b6108c985828601610873565b9150509250929050565b634e487b7160e01b600052602160045260246000fd5b600081516003811061090b57634e487b7160e01b600052602160045260246000fd5b8352506020818101516001600160a01b0390811691840191909152604080830151821690840152606080830151909116908301526080908101519082015260a00190565b6020808252825182820181905260009190848201906040850190845b8181101561098c5761097e8385516108e9565b93850193925060010161096b565b50909695505050505050565b6000806000606084860312156109ad57600080fd5b6109b68461085c565b9250602084013561ffff811681146109cd57600080fd5b9150604084013567ffffffffffffffff8111156109e957600080fd5b6109f586828701610873565b9150509250925092565b60005b83811015610a1a578181015183820152602001610a02565b50506000910152565b60008151808452610a3b8160208601602086016109ff565b601f01601f19169290920160200192915050565b805160408084528151908401819052600091602091908201906060860190845b81811015610a945783516001600160a01b031683529284019291840191600101610a6f565b50508483015186820387850152805180835290840192506000918401905b80831015610ad757610ac58285516108e9565b91508484019350600183019250610ab2565b509695505050505050565b604081526000610af56040830185610a23565b8281036020840152610b078185610a4f565b95945050505050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215610b3957600080fd5b610b428361085c565b9150602083013567ffffffffffffffff80821115610b5f57600080fd5b818501915085601f830112610b7357600080fd5b813581811115610b8557610b85610b10565b604051601f8201601f19908116603f01168101908382118183101715610bad57610bad610b10565b81604052828152886020848701011115610bc657600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6001600160a01b038316815260406020820152600061073a6040830184610a4f565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b038281168282160390808211156104a9576104a9610c0a565b634e487b7160e01b600052603260045260246000fd5b60006001600160a01b03808316818103610c7257610c72610c0a565b6001019392505050565b60008251610c8e8184602087016109ff565b9190910192915050565b6020815260006101d86020830184610a2356fea164736f6c6343000811000a608060405234801561001057600080fd5b5061001961001e565b6100dd565b600054610100900460ff161561008a5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116146100db576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b61057a806100ec6000396000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c80636accab8c11610076578063c4d66de81161005b578063c4d66de814610145578063d4b8399214610158578063efe51cca1461016b57600080fd5b80636accab8c14610119578063776d1a011461013057600080fd5b806301ffc9a7146100a85780632ae9c600146100d05780634162169f146100e557806341de68301461010a575b600080fd5b6100bb6100b63660046104ae565b610174565b60405190151581526020015b60405180910390f35b6100d86101c5565b6040516100c791906104df565b6065546001600160a01b03165b6040516001600160a01b0390911681526020016100c7565b60016040516100c79190610513565b61012260985481565b6040519081526020016100c7565b61014361013e366004610550565b6101ef565b005b610143610153366004610550565b61024e565b6097546100f2906001600160a01b031681565b61012260995481565b60006001600160e01b0319821663041de68360e41b14806101a457506001600160e01b03198216621574e360e91b145b806101bf57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6101cd610490565b5060408051606081018252600181526004602082015260009181019190915290565b609780546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d690600090a35050565b600054610100900460ff161580801561026e5750600054600160ff909116105b806102885750303b158015610288575060005460ff166001145b6102ff5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b6000805460ff191660011790558015610322576000805461ff0019166101001790555b61032b8261037f565b60016098556002609955801561037b576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b600054610100900460ff166103ea5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016102f6565b6103f3816103f6565b50565b600054610100900460ff166104615760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016102f6565b6065805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b60405180606001604052806003906020820280368337509192915050565b6000602082840312156104c057600080fd5b81356001600160e01b0319811681146104d857600080fd5b9392505050565b60608101818360005b600381101561050a57815160ff168352602092830192909101906001016104e8565b50505092915050565b602081016003831061053557634e487b7160e01b600052602160045260246000fd5b91905290565b6001600160a01b03811681146103f357600080fd5b60006020828403121561056257600080fd5b81356104d88161053b56fea164736f6c6343000811000a","opcodes":"PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x1D SWAP1 PUSH2 0x4B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH2 0x39 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x80 MSTORE PUSH2 0x58 JUMP JUMPDEST PUSH2 0x666 DUP1 PUSH2 0xD31 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH2 0xCB8 PUSH2 0x79 PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH1 0xC1 ADD MSTORE PUSH2 0x298 ADD MSTORE PUSH2 0xCB8 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x72 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9CB0A124 GT PUSH2 0x50 JUMPI DUP1 PUSH4 0x9CB0A124 EQ PUSH2 0xEB JUMPI DUP1 PUSH4 0xA8A9C29E EQ PUSH2 0x10B JUMPI DUP1 PUSH4 0xF10832F1 EQ PUSH2 0x12C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x77 JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0x9F JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0xB4 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8A PUSH2 0x85 CALLDATASIZE PUSH1 0x4 PUSH2 0x7FE JUMP JUMPDEST PUSH2 0x14D JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xA7 PUSH2 0x19E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x96 SWAP2 SWAP1 PUSH2 0x828 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x96 JUMP JUMPDEST PUSH2 0xFE PUSH2 0xF9 CALLDATASIZE PUSH1 0x4 PUSH2 0x885 JUMP JUMPDEST PUSH2 0x1C8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x96 SWAP2 SWAP1 PUSH2 0x94F JUMP JUMPDEST PUSH2 0x11E PUSH2 0x119 CALLDATASIZE PUSH1 0x4 PUSH2 0x998 JUMP JUMPDEST PUSH2 0x1DF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x96 SWAP3 SWAP2 SWAP1 PUSH2 0xAE2 JUMP JUMPDEST PUSH2 0x13F PUSH2 0x13A CALLDATASIZE PUSH1 0x4 PUSH2 0xB26 JUMP JUMPDEST PUSH2 0x217 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x96 SWAP3 SWAP2 SWAP1 PUSH2 0xBE8 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x99718B5 PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x17D JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x198 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1A6 PUSH2 0x7E0 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1D8 PUSH1 0x0 PUSH1 0x2 PUSH1 0x1 PUSH2 0x2F3 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1FE PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xA1128101 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x236 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 PUSH1 0x44 ADD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x189ACDBD PUSH1 0xE3 SHL OR SWAP1 MSTORE SWAP1 POP PUSH2 0x2C9 DUP2 PUSH2 0x2BA PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH2 0x478 JUMP JUMPDEST SWAP3 POP PUSH2 0x2D5 PUSH1 0x2 PUSH2 0x4B0 JUMP JUMPDEST DUP3 MSTORE PUSH2 0x2E4 PUSH1 0x0 PUSH1 0x2 DUP2 PUSH2 0x2F3 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP SWAP1 SWAP4 SWAP1 SWAP3 POP SWAP1 POP JUMP JUMPDEST PUSH1 0x60 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH2 0x328 JUMPI PUSH1 0x40 MLOAD PUSH4 0x3A4013CD PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x332 DUP5 DUP5 PUSH2 0xC20 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x353 JUMPI PUSH2 0x353 PUSH2 0xB10 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x3AC JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD DUP3 SWAP1 MSTORE SWAP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 DUP3 ADD MSTORE DUP3 MSTORE PUSH1 0x0 NOT SWAP1 SWAP3 ADD SWAP2 ADD DUP2 PUSH2 0x371 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP DUP4 JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT ISZERO PUSH2 0x470 JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 DUP5 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x3E8 JUMPI PUSH2 0x3E8 PUSH2 0x8D3 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x60 DUP3 ADD MSTORE PUSH32 0xA280EEC51AB8E1BC4B6B0C1B7F1BDE785761B787A49DB404E3E9338ED9B016EF PUSH1 0x80 SWAP1 SWAP2 ADD MSTORE DUP3 PUSH2 0x439 DUP8 DUP5 PUSH2 0xC20 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MLOAD DUP2 LT PUSH2 0x452 JUMPI PUSH2 0x452 PUSH2 0xC40 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP DUP1 DUP1 PUSH2 0x468 SWAP1 PUSH2 0xC56 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x3B1 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x48C DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x569 JUMP JUMPDEST DUP3 MLOAD SWAP1 SWAP2 POP ISZERO PUSH2 0x198 JUMPI PUSH2 0x4A9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP4 PUSH2 0x60F JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x4D4 JUMPI PUSH2 0x4D4 PUSH2 0xB10 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x4FD JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT ISZERO PUSH2 0x563 JUMPI DUP1 DUP3 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MLOAD DUP2 LT PUSH2 0x539 JUMPI PUSH2 0x539 PUSH2 0xC40 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE DUP1 PUSH2 0x55B DUP2 PUSH2 0xC56 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x503 JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH23 0x3D602D80600A3D3981F3363D3D373D3D3D363D73000000 DUP3 PUSH1 0x60 SHL PUSH1 0xE8 SHR OR PUSH1 0x0 MSTORE PUSH15 0x5AF43D82803E903D91602B57FD5BF3 DUP3 PUSH1 0x78 SHL OR PUSH1 0x20 MSTORE PUSH1 0x37 PUSH1 0x9 PUSH1 0x0 CREATE SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x60A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313136373A20637265617465206661696C656400000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1D8 DUP4 DUP4 PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x416464726573733A206C6F772D6C6576656C2063616C6C206661696C65640000 DUP2 MSTORE POP PUSH1 0x60 DUP3 SELFBALANCE LT ISZERO PUSH2 0x6C6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A20696E73756666696369656E742062616C616E636520666F PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x722063616C6C0000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x601 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP8 PUSH1 0x40 MLOAD PUSH2 0x6E2 SWAP2 SWAP1 PUSH2 0xC7C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x71F JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x724 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x735 DUP8 DUP4 DUP4 DUP8 PUSH2 0x742 JUMP JUMPDEST SWAP3 POP POP POP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x7B1 JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0x7AA JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0x7AA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x601 JUMP JUMPDEST POP DUP2 PUSH2 0x73A JUMP JUMPDEST PUSH2 0x73A DUP4 DUP4 DUP2 MLOAD ISZERO PUSH2 0x7C6 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x601 SWAP2 SWAP1 PUSH2 0xC98 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x810 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x1D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0x853 JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x831 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x60A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x563 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x898 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8A1 DUP4 PUSH2 0x85C JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x8BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8C9 DUP6 DUP3 DUP7 ADD PUSH2 0x873 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP2 MLOAD PUSH1 0x3 DUP2 LT PUSH2 0x90B JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP4 MSTORE POP PUSH1 0x20 DUP2 DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP1 DUP4 ADD MLOAD DUP3 AND SWAP1 DUP5 ADD MSTORE PUSH1 0x60 DUP1 DUP4 ADD MLOAD SWAP1 SWAP2 AND SWAP1 DUP4 ADD MSTORE PUSH1 0x80 SWAP1 DUP2 ADD MLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x98C JUMPI PUSH2 0x97E DUP4 DUP6 MLOAD PUSH2 0x8E9 JUMP JUMPDEST SWAP4 DUP6 ADD SWAP4 SWAP3 POP PUSH1 0x1 ADD PUSH2 0x96B JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x9AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9B6 DUP5 PUSH2 0x85C JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH2 0x9CD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x9E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9F5 DUP7 DUP3 DUP8 ADD PUSH2 0x873 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xA1A JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xA02 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0xA3B DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x9FF JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x40 DUP1 DUP5 MSTORE DUP2 MLOAD SWAP1 DUP5 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x20 SWAP2 SWAP1 DUP3 ADD SWAP1 PUSH1 0x60 DUP7 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xA94 JUMPI DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0xA6F JUMP JUMPDEST POP POP DUP5 DUP4 ADD MLOAD DUP7 DUP3 SUB DUP8 DUP6 ADD MSTORE DUP1 MLOAD DUP1 DUP4 MSTORE SWAP1 DUP5 ADD SWAP3 POP PUSH1 0x0 SWAP2 DUP5 ADD SWAP1 JUMPDEST DUP1 DUP4 LT ISZERO PUSH2 0xAD7 JUMPI PUSH2 0xAC5 DUP3 DUP6 MLOAD PUSH2 0x8E9 JUMP JUMPDEST SWAP2 POP DUP5 DUP5 ADD SWAP4 POP PUSH1 0x1 DUP4 ADD SWAP3 POP PUSH2 0xAB2 JUMP JUMPDEST POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 PUSH2 0xAF5 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0xA23 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0xB07 DUP2 DUP6 PUSH2 0xA4F JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xB39 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB42 DUP4 PUSH2 0x85C JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xB5F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xB73 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0xB85 JUMPI PUSH2 0xB85 PUSH2 0xB10 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0xBAD JUMPI PUSH2 0xBAD PUSH2 0xB10 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0xBC6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0x73A PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0xA4F JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND DUP3 DUP3 AND SUB SWAP1 DUP1 DUP3 GT ISZERO PUSH2 0x4A9 JUMPI PUSH2 0x4A9 PUSH2 0xC0A JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND DUP2 DUP2 SUB PUSH2 0xC72 JUMPI PUSH2 0xC72 PUSH2 0xC0A JUMP JUMPDEST PUSH1 0x1 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0xC8E DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x9FF JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x1D8 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0xA23 JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x19 PUSH2 0x1E JUMP JUMPDEST PUSH2 0xDD JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x8A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x27 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320696E697469 PUSH1 0x44 DUP3 ADD MSTORE PUSH7 0x616C697A696E67 PUSH1 0xC8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xFF SWAP1 DUP2 AND EQ PUSH2 0xDB JUMPI PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST JUMP JUMPDEST PUSH2 0x57A DUP1 PUSH2 0xEC PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xA3 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6ACCAB8C GT PUSH2 0x76 JUMPI DUP1 PUSH4 0xC4D66DE8 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0x145 JUMPI DUP1 PUSH4 0xD4B83992 EQ PUSH2 0x158 JUMPI DUP1 PUSH4 0xEFE51CCA EQ PUSH2 0x16B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6ACCAB8C EQ PUSH2 0x119 JUMPI DUP1 PUSH4 0x776D1A01 EQ PUSH2 0x130 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xA8 JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0xD0 JUMPI DUP1 PUSH4 0x4162169F EQ PUSH2 0xE5 JUMPI DUP1 PUSH4 0x41DE6830 EQ PUSH2 0x10A JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xBB PUSH2 0xB6 CALLDATASIZE PUSH1 0x4 PUSH2 0x4AE JUMP JUMPDEST PUSH2 0x174 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xD8 PUSH2 0x1C5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xC7 SWAP2 SWAP1 PUSH2 0x4DF JUMP JUMPDEST PUSH1 0x65 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xC7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x40 MLOAD PUSH2 0xC7 SWAP2 SWAP1 PUSH2 0x513 JUMP JUMPDEST PUSH2 0x122 PUSH1 0x98 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xC7 JUMP JUMPDEST PUSH2 0x143 PUSH2 0x13E CALLDATASIZE PUSH1 0x4 PUSH2 0x550 JUMP JUMPDEST PUSH2 0x1EF JUMP JUMPDEST STOP JUMPDEST PUSH2 0x143 PUSH2 0x153 CALLDATASIZE PUSH1 0x4 PUSH2 0x550 JUMP JUMPDEST PUSH2 0x24E JUMP JUMPDEST PUSH1 0x97 SLOAD PUSH2 0xF2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x122 PUSH1 0x99 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x41DE683 PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x1A4 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x1BF JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1CD PUSH2 0x490 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x97 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP2 SWAP1 DUP3 SWAP1 PUSH32 0x90CC2F570A6EB594B1580EA3E41247D2D73A55281889E86BD4EC2FC29C7E62D6 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 DUP1 ISZERO PUSH2 0x26E JUMPI POP PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xFF SWAP1 SWAP2 AND LT JUMPDEST DUP1 PUSH2 0x288 JUMPI POP ADDRESS EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x288 JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF AND PUSH1 0x1 EQ JUMPDEST PUSH2 0x2FF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x647920696E697469616C697A6564000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE DUP1 ISZERO PUSH2 0x322 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND PUSH2 0x100 OR SWAP1 SSTORE JUMPDEST PUSH2 0x32B DUP3 PUSH2 0x37F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x98 SSTORE PUSH1 0x2 PUSH1 0x99 SSTORE DUP1 ISZERO PUSH2 0x37B JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x3EA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x2F6 JUMP JUMPDEST PUSH2 0x3F3 DUP2 PUSH2 0x3F6 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x461 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x2F6 JUMP JUMPDEST PUSH1 0x65 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x4D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0x50A JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x4E8 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH1 0x3 DUP4 LT PUSH2 0x535 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 SWAP1 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x3F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x562 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x4D8 DUP2 PUSH2 0x53B JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"2043:1127:27:-:0;;;2183:70;;;;;;;;;;2217:31;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1454:32:45;;;2043:1127:27;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_revert_2136":{"entryPoint":null,"id":2136,"parameterSlots":2,"returnSlots":0},"@clone_1347":{"entryPoint":1385,"id":1347,"parameterSlots":1,"returnSlots":1},"@deployMinimalProxy_5101":{"entryPoint":1144,"id":5101,"parameterSlots":2,"returnSlots":1},"@functionCallWithValue_1961":{"entryPoint":null,"id":1961,"parameterSlots":4,"returnSlots":1},"@functionCall_1877":{"entryPoint":1551,"id":1877,"parameterSlots":2,"returnSlots":1},"@implementation_4956":{"entryPoint":null,"id":4956,"parameterSlots":0,"returnSlots":1},"@isContract_1825":{"entryPoint":null,"id":1825,"parameterSlots":1,"returnSlots":1},"@mockHelpers_3108":{"entryPoint":1200,"id":3108,"parameterSlots":1,"returnSlots":1},"@mockPermissions_3069":{"entryPoint":755,"id":3069,"parameterSlots":3,"returnSlots":1},"@prepareInstallation_2816":{"entryPoint":535,"id":2816,"parameterSlots":2,"returnSlots":2},"@prepareUninstallation_2844":{"entryPoint":456,"id":2844,"parameterSlots":2,"returnSlots":1},"@prepareUpdate_4918":{"entryPoint":479,"id":4918,"parameterSlots":3,"returnSlots":2},"@protocolVersion_5135":{"entryPoint":414,"id":5135,"parameterSlots":0,"returnSlots":1},"@supportsInterface_2374":{"entryPoint":null,"id":2374,"parameterSlots":1,"returnSlots":1},"@supportsInterface_4947":{"entryPoint":333,"id":4947,"parameterSlots":1,"returnSlots":1},"@verifyCallResultFromTarget_2092":{"entryPoint":1858,"id":2092,"parameterSlots":4,"returnSlots":1},"abi_decode_address":{"entryPoint":2140,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_struct_SetupPayload_calldata":{"entryPoint":2163,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_bytes_memory_ptr":{"entryPoint":2854,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_struct$_SetupPayload_$4810_calldata_ptr":{"entryPoint":2181,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_uint16t_struct$_SetupPayload_$4810_calldata_ptr":{"entryPoint":2456,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_bytes4":{"entryPoint":2046,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encodeUpdatedPos_struct_MultiTargetPermission":{"entryPoint":2281,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_bytes":{"entryPoint":2595,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_struct_PreparedSetupData":{"entryPoint":2639,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":3196,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address_t_struct$_PreparedSetupData_$4802_memory_ptr__to_t_address_t_struct$_PreparedSetupData_$4802_memory_ptr__fromStack_reversed":{"entryPoint":3048,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr__fromStack_reversed":{"entryPoint":2383,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed":{"entryPoint":2088,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$4802_memory_ptr__to_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$4802_memory_ptr__fromStack_reversed":{"entryPoint":2786,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_contract$_IDAO_$2538__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":3224,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_68ca40b61460257f14e69f48b1a4dbc812e9afc6932f127ef8084544457b3335__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"checked_sub_t_uint160":{"entryPoint":3104,"id":null,"parameterSlots":2,"returnSlots":1},"copy_memory_to_memory_with_cleanup":{"entryPoint":2559,"id":null,"parameterSlots":3,"returnSlots":0},"increment_t_uint160":{"entryPoint":3158,"id":null,"parameterSlots":1,"returnSlots":1},"panic_error_0x11":{"entryPoint":3082,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x21":{"entryPoint":2259,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x32":{"entryPoint":3136,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":2832,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:10500:50","statements":[{"nodeType":"YulBlock","src":"6:3:50","statements":[]},{"body":{"nodeType":"YulBlock","src":"83:217:50","statements":[{"body":{"nodeType":"YulBlock","src":"129:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"138:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"141:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"131:6:50"},"nodeType":"YulFunctionCall","src":"131:12:50"},"nodeType":"YulExpressionStatement","src":"131:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"104:7:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"113:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"100:3:50"},"nodeType":"YulFunctionCall","src":"100:23:50"},{"kind":"number","nodeType":"YulLiteral","src":"125:2:50","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"96:3:50"},"nodeType":"YulFunctionCall","src":"96:32:50"},"nodeType":"YulIf","src":"93:52:50"},{"nodeType":"YulVariableDeclaration","src":"154:36:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"180:9:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"167:12:50"},"nodeType":"YulFunctionCall","src":"167:23:50"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"158:5:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"254:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"263:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"266:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"256:6:50"},"nodeType":"YulFunctionCall","src":"256:12:50"},"nodeType":"YulExpressionStatement","src":"256:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"212:5:50"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"223:5:50"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"234:3:50","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"239:10:50","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"230:3:50"},"nodeType":"YulFunctionCall","src":"230:20:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"219:3:50"},"nodeType":"YulFunctionCall","src":"219:32:50"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"209:2:50"},"nodeType":"YulFunctionCall","src":"209:43:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"202:6:50"},"nodeType":"YulFunctionCall","src":"202:51:50"},"nodeType":"YulIf","src":"199:71:50"},{"nodeType":"YulAssignment","src":"279:15:50","value":{"name":"value","nodeType":"YulIdentifier","src":"289:5:50"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"279:6:50"}]}]},"name":"abi_decode_tuple_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"49:9:50","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"60:7:50","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"72:6:50","type":""}],"src":"14:286:50"},{"body":{"nodeType":"YulBlock","src":"400:92:50","statements":[{"nodeType":"YulAssignment","src":"410:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"422:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"433:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"418:3:50"},"nodeType":"YulFunctionCall","src":"418:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"410:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"452:9:50"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"477:6:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"470:6:50"},"nodeType":"YulFunctionCall","src":"470:14:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"463:6:50"},"nodeType":"YulFunctionCall","src":"463:22:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"445:6:50"},"nodeType":"YulFunctionCall","src":"445:41:50"},"nodeType":"YulExpressionStatement","src":"445:41:50"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"369:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"380:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"391:4:50","type":""}],"src":"305:187:50"},{"body":{"nodeType":"YulBlock","src":"640:358:50","statements":[{"nodeType":"YulAssignment","src":"650:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"662:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"673:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"658:3:50"},"nodeType":"YulFunctionCall","src":"658:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"650:4:50"}]},{"nodeType":"YulVariableDeclaration","src":"685:20:50","value":{"name":"headStart","nodeType":"YulIdentifier","src":"696:9:50"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"689:3:50","type":""}]},{"nodeType":"YulAssignment","src":"714:16:50","value":{"name":"headStart","nodeType":"YulIdentifier","src":"721:9:50"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"714:3:50"}]},{"nodeType":"YulVariableDeclaration","src":"739:20:50","value":{"name":"value0","nodeType":"YulIdentifier","src":"753:6:50"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"743:6:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"768:10:50","value":{"kind":"number","nodeType":"YulLiteral","src":"777:1:50","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"772:1:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"834:158:50","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"855:3:50"},{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"870:6:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"864:5:50"},"nodeType":"YulFunctionCall","src":"864:13:50"},{"kind":"number","nodeType":"YulLiteral","src":"879:4:50","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"860:3:50"},"nodeType":"YulFunctionCall","src":"860:24:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"848:6:50"},"nodeType":"YulFunctionCall","src":"848:37:50"},"nodeType":"YulExpressionStatement","src":"848:37:50"},{"nodeType":"YulVariableDeclaration","src":"898:14:50","value":{"kind":"number","nodeType":"YulLiteral","src":"908:4:50","type":"","value":"0x20"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"902:2:50","type":""}]},{"nodeType":"YulAssignment","src":"925:19:50","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"936:3:50"},{"name":"_1","nodeType":"YulIdentifier","src":"941:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"932:3:50"},"nodeType":"YulFunctionCall","src":"932:12:50"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"925:3:50"}]},{"nodeType":"YulAssignment","src":"957:25:50","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"971:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"979:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"967:3:50"},"nodeType":"YulFunctionCall","src":"967:15:50"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"957:6:50"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"798:1:50"},{"kind":"number","nodeType":"YulLiteral","src":"801:4:50","type":"","value":"0x03"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"795:2:50"},"nodeType":"YulFunctionCall","src":"795:11:50"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"807:18:50","statements":[{"nodeType":"YulAssignment","src":"809:14:50","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"818:1:50"},{"kind":"number","nodeType":"YulLiteral","src":"821:1:50","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"814:3:50"},"nodeType":"YulFunctionCall","src":"814:9:50"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"809:1:50"}]}]},"pre":{"nodeType":"YulBlock","src":"791:3:50","statements":[]},"src":"787:205:50"}]},"name":"abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"609:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"620:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"631:4:50","type":""}],"src":"497:501:50"},{"body":{"nodeType":"YulBlock","src":"1104:125:50","statements":[{"nodeType":"YulAssignment","src":"1114:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1126:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"1137:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1122:3:50"},"nodeType":"YulFunctionCall","src":"1122:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1114:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1156:9:50"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1171:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"1179:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1167:3:50"},"nodeType":"YulFunctionCall","src":"1167:55:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1149:6:50"},"nodeType":"YulFunctionCall","src":"1149:74:50"},"nodeType":"YulExpressionStatement","src":"1149:74:50"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1073:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1084:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1095:4:50","type":""}],"src":"1003:226:50"},{"body":{"nodeType":"YulBlock","src":"1283:147:50","statements":[{"nodeType":"YulAssignment","src":"1293:29:50","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1315:6:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1302:12:50"},"nodeType":"YulFunctionCall","src":"1302:20:50"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"1293:5:50"}]},{"body":{"nodeType":"YulBlock","src":"1408:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1417:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1420:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1410:6:50"},"nodeType":"YulFunctionCall","src":"1410:12:50"},"nodeType":"YulExpressionStatement","src":"1410:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1344:5:50"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1355:5:50"},{"kind":"number","nodeType":"YulLiteral","src":"1362:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1351:3:50"},"nodeType":"YulFunctionCall","src":"1351:54:50"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1341:2:50"},"nodeType":"YulFunctionCall","src":"1341:65:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1334:6:50"},"nodeType":"YulFunctionCall","src":"1334:73:50"},"nodeType":"YulIf","src":"1331:93:50"}]},"name":"abi_decode_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"1262:6:50","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"1273:5:50","type":""}],"src":"1234:196:50"},{"body":{"nodeType":"YulBlock","src":"1510:85:50","statements":[{"body":{"nodeType":"YulBlock","src":"1549:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1558:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1561:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1551:6:50"},"nodeType":"YulFunctionCall","src":"1551:12:50"},"nodeType":"YulExpressionStatement","src":"1551:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"end","nodeType":"YulIdentifier","src":"1531:3:50"},{"name":"offset","nodeType":"YulIdentifier","src":"1536:6:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1527:3:50"},"nodeType":"YulFunctionCall","src":"1527:16:50"},{"kind":"number","nodeType":"YulLiteral","src":"1545:2:50","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1523:3:50"},"nodeType":"YulFunctionCall","src":"1523:25:50"},"nodeType":"YulIf","src":"1520:45:50"},{"nodeType":"YulAssignment","src":"1574:15:50","value":{"name":"offset","nodeType":"YulIdentifier","src":"1583:6:50"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"1574:5:50"}]}]},"name":"abi_decode_struct_SetupPayload_calldata","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"1484:6:50","type":""},{"name":"end","nodeType":"YulTypedName","src":"1492:3:50","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"1500:5:50","type":""}],"src":"1435:160:50"},{"body":{"nodeType":"YulBlock","src":"1719:321:50","statements":[{"body":{"nodeType":"YulBlock","src":"1765:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1774:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1777:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1767:6:50"},"nodeType":"YulFunctionCall","src":"1767:12:50"},"nodeType":"YulExpressionStatement","src":"1767:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1740:7:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"1749:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1736:3:50"},"nodeType":"YulFunctionCall","src":"1736:23:50"},{"kind":"number","nodeType":"YulLiteral","src":"1761:2:50","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1732:3:50"},"nodeType":"YulFunctionCall","src":"1732:32:50"},"nodeType":"YulIf","src":"1729:52:50"},{"nodeType":"YulAssignment","src":"1790:39:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1819:9:50"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"1800:18:50"},"nodeType":"YulFunctionCall","src":"1800:29:50"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1790:6:50"}]},{"nodeType":"YulVariableDeclaration","src":"1838:46:50","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1869:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"1880:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1865:3:50"},"nodeType":"YulFunctionCall","src":"1865:18:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1852:12:50"},"nodeType":"YulFunctionCall","src":"1852:32:50"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1842:6:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"1927:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1936:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1939:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1929:6:50"},"nodeType":"YulFunctionCall","src":"1929:12:50"},"nodeType":"YulExpressionStatement","src":"1929:12:50"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1899:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"1907:18:50","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1896:2:50"},"nodeType":"YulFunctionCall","src":"1896:30:50"},"nodeType":"YulIf","src":"1893:50:50"},{"nodeType":"YulAssignment","src":"1952:82:50","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2006:9:50"},{"name":"offset","nodeType":"YulIdentifier","src":"2017:6:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2002:3:50"},"nodeType":"YulFunctionCall","src":"2002:22:50"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2026:7:50"}],"functionName":{"name":"abi_decode_struct_SetupPayload_calldata","nodeType":"YulIdentifier","src":"1962:39:50"},"nodeType":"YulFunctionCall","src":"1962:72:50"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1952:6:50"}]}]},"name":"abi_decode_tuple_t_addresst_struct$_SetupPayload_$4810_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1677:9:50","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1688:7:50","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1700:6:50","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1708:6:50","type":""}],"src":"1600:440:50"},{"body":{"nodeType":"YulBlock","src":"2077:95:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2094:1:50","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2101:3:50","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"2106:10:50","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2097:3:50"},"nodeType":"YulFunctionCall","src":"2097:20:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2087:6:50"},"nodeType":"YulFunctionCall","src":"2087:31:50"},"nodeType":"YulExpressionStatement","src":"2087:31:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2134:1:50","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"2137:4:50","type":"","value":"0x21"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2127:6:50"},"nodeType":"YulFunctionCall","src":"2127:15:50"},"nodeType":"YulExpressionStatement","src":"2127:15:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2158:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2161:4:50","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2151:6:50"},"nodeType":"YulFunctionCall","src":"2151:15:50"},"nodeType":"YulExpressionStatement","src":"2151:15:50"}]},"name":"panic_error_0x21","nodeType":"YulFunctionDefinition","src":"2045:127:50"},{"body":{"nodeType":"YulBlock","src":"2267:606:50","statements":[{"nodeType":"YulVariableDeclaration","src":"2277:23:50","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2293:6:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2287:5:50"},"nodeType":"YulFunctionCall","src":"2287:13:50"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"2281:2:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"2338:111:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2359:1:50","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2366:3:50","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"2371:10:50","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2362:3:50"},"nodeType":"YulFunctionCall","src":"2362:20:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2352:6:50"},"nodeType":"YulFunctionCall","src":"2352:31:50"},"nodeType":"YulExpressionStatement","src":"2352:31:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2403:1:50","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"2406:4:50","type":"","value":"0x21"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2396:6:50"},"nodeType":"YulFunctionCall","src":"2396:15:50"},"nodeType":"YulExpressionStatement","src":"2396:15:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2431:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2434:4:50","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2424:6:50"},"nodeType":"YulFunctionCall","src":"2424:15:50"},"nodeType":"YulExpressionStatement","src":"2424:15:50"}]},"condition":{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"2322:2:50"},{"kind":"number","nodeType":"YulLiteral","src":"2326:1:50","type":"","value":"3"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2319:2:50"},"nodeType":"YulFunctionCall","src":"2319:9:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2312:6:50"},"nodeType":"YulFunctionCall","src":"2312:17:50"},"nodeType":"YulIf","src":"2309:140:50"},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2465:3:50"},{"name":"_1","nodeType":"YulIdentifier","src":"2470:2:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2458:6:50"},"nodeType":"YulFunctionCall","src":"2458:15:50"},"nodeType":"YulExpressionStatement","src":"2458:15:50"},{"nodeType":"YulVariableDeclaration","src":"2482:44:50","value":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2512:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"2520:4:50","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2508:3:50"},"nodeType":"YulFunctionCall","src":"2508:17:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2502:5:50"},"nodeType":"YulFunctionCall","src":"2502:24:50"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"2486:12:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2535:52:50","value":{"kind":"number","nodeType":"YulLiteral","src":"2545:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"2539:2:50","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2607:3:50"},{"kind":"number","nodeType":"YulLiteral","src":"2612:4:50","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2603:3:50"},"nodeType":"YulFunctionCall","src":"2603:14:50"},{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"2623:12:50"},{"name":"_2","nodeType":"YulIdentifier","src":"2637:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2619:3:50"},"nodeType":"YulFunctionCall","src":"2619:21:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2596:6:50"},"nodeType":"YulFunctionCall","src":"2596:45:50"},"nodeType":"YulExpressionStatement","src":"2596:45:50"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2661:3:50"},{"kind":"number","nodeType":"YulLiteral","src":"2666:4:50","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2657:3:50"},"nodeType":"YulFunctionCall","src":"2657:14:50"},{"arguments":[{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2687:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"2695:4:50","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2683:3:50"},"nodeType":"YulFunctionCall","src":"2683:17:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2677:5:50"},"nodeType":"YulFunctionCall","src":"2677:24:50"},{"name":"_2","nodeType":"YulIdentifier","src":"2703:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2673:3:50"},"nodeType":"YulFunctionCall","src":"2673:33:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2650:6:50"},"nodeType":"YulFunctionCall","src":"2650:57:50"},"nodeType":"YulExpressionStatement","src":"2650:57:50"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2727:3:50"},{"kind":"number","nodeType":"YulLiteral","src":"2732:4:50","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2723:3:50"},"nodeType":"YulFunctionCall","src":"2723:14:50"},{"arguments":[{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2753:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"2761:4:50","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2749:3:50"},"nodeType":"YulFunctionCall","src":"2749:17:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2743:5:50"},"nodeType":"YulFunctionCall","src":"2743:24:50"},{"name":"_2","nodeType":"YulIdentifier","src":"2769:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2739:3:50"},"nodeType":"YulFunctionCall","src":"2739:33:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2716:6:50"},"nodeType":"YulFunctionCall","src":"2716:57:50"},"nodeType":"YulExpressionStatement","src":"2716:57:50"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2793:3:50"},{"kind":"number","nodeType":"YulLiteral","src":"2798:4:50","type":"","value":"0x80"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2789:3:50"},"nodeType":"YulFunctionCall","src":"2789:14:50"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2815:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"2823:4:50","type":"","value":"0x80"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2811:3:50"},"nodeType":"YulFunctionCall","src":"2811:17:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2805:5:50"},"nodeType":"YulFunctionCall","src":"2805:24:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2782:6:50"},"nodeType":"YulFunctionCall","src":"2782:48:50"},"nodeType":"YulExpressionStatement","src":"2782:48:50"},{"nodeType":"YulAssignment","src":"2839:28:50","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2857:3:50"},{"kind":"number","nodeType":"YulLiteral","src":"2862:4:50","type":"","value":"0xa0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2853:3:50"},"nodeType":"YulFunctionCall","src":"2853:14:50"},"variableNames":[{"name":"updatedPos","nodeType":"YulIdentifier","src":"2839:10:50"}]}]},"name":"abi_encodeUpdatedPos_struct_MultiTargetPermission","nodeType":"YulFunctionDefinition","parameters":[{"name":"value0","nodeType":"YulTypedName","src":"2236:6:50","type":""},{"name":"pos","nodeType":"YulTypedName","src":"2244:3:50","type":""}],"returnVariables":[{"name":"updatedPos","nodeType":"YulTypedName","src":"2252:10:50","type":""}],"src":"2177:696:50"},{"body":{"nodeType":"YulBlock","src":"3107:499:50","statements":[{"nodeType":"YulVariableDeclaration","src":"3117:12:50","value":{"kind":"number","nodeType":"YulLiteral","src":"3127:2:50","type":"","value":"32"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"3121:2:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3138:32:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3156:9:50"},{"name":"_1","nodeType":"YulIdentifier","src":"3167:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3152:3:50"},"nodeType":"YulFunctionCall","src":"3152:18:50"},"variables":[{"name":"tail_1","nodeType":"YulTypedName","src":"3142:6:50","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3186:9:50"},{"name":"_1","nodeType":"YulIdentifier","src":"3197:2:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3179:6:50"},"nodeType":"YulFunctionCall","src":"3179:21:50"},"nodeType":"YulExpressionStatement","src":"3179:21:50"},{"nodeType":"YulVariableDeclaration","src":"3209:17:50","value":{"name":"tail_1","nodeType":"YulIdentifier","src":"3220:6:50"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"3213:3:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3235:27:50","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3255:6:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3249:5:50"},"nodeType":"YulFunctionCall","src":"3249:13:50"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"3239:6:50","type":""}]},{"expression":{"arguments":[{"name":"tail_1","nodeType":"YulIdentifier","src":"3278:6:50"},{"name":"length","nodeType":"YulIdentifier","src":"3286:6:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3271:6:50"},"nodeType":"YulFunctionCall","src":"3271:22:50"},"nodeType":"YulExpressionStatement","src":"3271:22:50"},{"nodeType":"YulAssignment","src":"3302:25:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3313:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"3324:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3309:3:50"},"nodeType":"YulFunctionCall","src":"3309:18:50"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"3302:3:50"}]},{"nodeType":"YulVariableDeclaration","src":"3336:29:50","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3354:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"3362:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3350:3:50"},"nodeType":"YulFunctionCall","src":"3350:15:50"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"3340:6:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3374:10:50","value":{"kind":"number","nodeType":"YulLiteral","src":"3383:1:50","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"3378:1:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"3442:138:50","statements":[{"nodeType":"YulAssignment","src":"3456:76:50","value":{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"3519:6:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3513:5:50"},"nodeType":"YulFunctionCall","src":"3513:13:50"},{"name":"pos","nodeType":"YulIdentifier","src":"3528:3:50"}],"functionName":{"name":"abi_encodeUpdatedPos_struct_MultiTargetPermission","nodeType":"YulIdentifier","src":"3463:49:50"},"nodeType":"YulFunctionCall","src":"3463:69:50"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"3456:3:50"}]},{"nodeType":"YulAssignment","src":"3545:25:50","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"3559:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"3567:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3555:3:50"},"nodeType":"YulFunctionCall","src":"3555:15:50"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"3545:6:50"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3404:1:50"},{"name":"length","nodeType":"YulIdentifier","src":"3407:6:50"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"3401:2:50"},"nodeType":"YulFunctionCall","src":"3401:13:50"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"3415:18:50","statements":[{"nodeType":"YulAssignment","src":"3417:14:50","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3426:1:50"},{"kind":"number","nodeType":"YulLiteral","src":"3429:1:50","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3422:3:50"},"nodeType":"YulFunctionCall","src":"3422:9:50"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"3417:1:50"}]}]},"pre":{"nodeType":"YulBlock","src":"3397:3:50","statements":[]},"src":"3393:187:50"},{"nodeType":"YulAssignment","src":"3589:11:50","value":{"name":"pos","nodeType":"YulIdentifier","src":"3597:3:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3589:4:50"}]}]},"name":"abi_encode_tuple_t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3076:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3087:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3098:4:50","type":""}],"src":"2878:728:50"},{"body":{"nodeType":"YulBlock","src":"3746:465:50","statements":[{"body":{"nodeType":"YulBlock","src":"3792:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3801:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3804:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3794:6:50"},"nodeType":"YulFunctionCall","src":"3794:12:50"},"nodeType":"YulExpressionStatement","src":"3794:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3767:7:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"3776:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3763:3:50"},"nodeType":"YulFunctionCall","src":"3763:23:50"},{"kind":"number","nodeType":"YulLiteral","src":"3788:2:50","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3759:3:50"},"nodeType":"YulFunctionCall","src":"3759:32:50"},"nodeType":"YulIf","src":"3756:52:50"},{"nodeType":"YulAssignment","src":"3817:39:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3846:9:50"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"3827:18:50"},"nodeType":"YulFunctionCall","src":"3827:29:50"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3817:6:50"}]},{"nodeType":"YulVariableDeclaration","src":"3865:45:50","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3895:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"3906:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3891:3:50"},"nodeType":"YulFunctionCall","src":"3891:18:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3878:12:50"},"nodeType":"YulFunctionCall","src":"3878:32:50"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"3869:5:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"3960:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3969:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3972:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3962:6:50"},"nodeType":"YulFunctionCall","src":"3962:12:50"},"nodeType":"YulExpressionStatement","src":"3962:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3932:5:50"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3943:5:50"},{"kind":"number","nodeType":"YulLiteral","src":"3950:6:50","type":"","value":"0xffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3939:3:50"},"nodeType":"YulFunctionCall","src":"3939:18:50"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"3929:2:50"},"nodeType":"YulFunctionCall","src":"3929:29:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3922:6:50"},"nodeType":"YulFunctionCall","src":"3922:37:50"},"nodeType":"YulIf","src":"3919:57:50"},{"nodeType":"YulAssignment","src":"3985:15:50","value":{"name":"value","nodeType":"YulIdentifier","src":"3995:5:50"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"3985:6:50"}]},{"nodeType":"YulVariableDeclaration","src":"4009:46:50","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4040:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"4051:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4036:3:50"},"nodeType":"YulFunctionCall","src":"4036:18:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4023:12:50"},"nodeType":"YulFunctionCall","src":"4023:32:50"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4013:6:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"4098:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4107:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4110:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4100:6:50"},"nodeType":"YulFunctionCall","src":"4100:12:50"},"nodeType":"YulExpressionStatement","src":"4100:12:50"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"4070:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"4078:18:50","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4067:2:50"},"nodeType":"YulFunctionCall","src":"4067:30:50"},"nodeType":"YulIf","src":"4064:50:50"},{"nodeType":"YulAssignment","src":"4123:82:50","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4177:9:50"},{"name":"offset","nodeType":"YulIdentifier","src":"4188:6:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4173:3:50"},"nodeType":"YulFunctionCall","src":"4173:22:50"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4197:7:50"}],"functionName":{"name":"abi_decode_struct_SetupPayload_calldata","nodeType":"YulIdentifier","src":"4133:39:50"},"nodeType":"YulFunctionCall","src":"4133:72:50"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"4123:6:50"}]}]},"name":"abi_decode_tuple_t_addresst_uint16t_struct$_SetupPayload_$4810_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3696:9:50","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3707:7:50","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3719:6:50","type":""},{"name":"value1","nodeType":"YulTypedName","src":"3727:6:50","type":""},{"name":"value2","nodeType":"YulTypedName","src":"3735:6:50","type":""}],"src":"3611:600:50"},{"body":{"nodeType":"YulBlock","src":"4282:184:50","statements":[{"nodeType":"YulVariableDeclaration","src":"4292:10:50","value":{"kind":"number","nodeType":"YulLiteral","src":"4301:1:50","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"4296:1:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"4361:63:50","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"4386:3:50"},{"name":"i","nodeType":"YulIdentifier","src":"4391:1:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4382:3:50"},"nodeType":"YulFunctionCall","src":"4382:11:50"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"4405:3:50"},{"name":"i","nodeType":"YulIdentifier","src":"4410:1:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4401:3:50"},"nodeType":"YulFunctionCall","src":"4401:11:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4395:5:50"},"nodeType":"YulFunctionCall","src":"4395:18:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4375:6:50"},"nodeType":"YulFunctionCall","src":"4375:39:50"},"nodeType":"YulExpressionStatement","src":"4375:39:50"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"4322:1:50"},{"name":"length","nodeType":"YulIdentifier","src":"4325:6:50"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"4319:2:50"},"nodeType":"YulFunctionCall","src":"4319:13:50"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"4333:19:50","statements":[{"nodeType":"YulAssignment","src":"4335:15:50","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"4344:1:50"},{"kind":"number","nodeType":"YulLiteral","src":"4347:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4340:3:50"},"nodeType":"YulFunctionCall","src":"4340:10:50"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"4335:1:50"}]}]},"pre":{"nodeType":"YulBlock","src":"4315:3:50","statements":[]},"src":"4311:113:50"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"4444:3:50"},{"name":"length","nodeType":"YulIdentifier","src":"4449:6:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4440:3:50"},"nodeType":"YulFunctionCall","src":"4440:16:50"},{"kind":"number","nodeType":"YulLiteral","src":"4458:1:50","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4433:6:50"},"nodeType":"YulFunctionCall","src":"4433:27:50"},"nodeType":"YulExpressionStatement","src":"4433:27:50"}]},"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"4260:3:50","type":""},{"name":"dst","nodeType":"YulTypedName","src":"4265:3:50","type":""},{"name":"length","nodeType":"YulTypedName","src":"4270:6:50","type":""}],"src":"4216:250:50"},{"body":{"nodeType":"YulBlock","src":"4520:221:50","statements":[{"nodeType":"YulVariableDeclaration","src":"4530:26:50","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4550:5:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4544:5:50"},"nodeType":"YulFunctionCall","src":"4544:12:50"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"4534:6:50","type":""}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4572:3:50"},{"name":"length","nodeType":"YulIdentifier","src":"4577:6:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4565:6:50"},"nodeType":"YulFunctionCall","src":"4565:19:50"},"nodeType":"YulExpressionStatement","src":"4565:19:50"},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4632:5:50"},{"kind":"number","nodeType":"YulLiteral","src":"4639:4:50","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4628:3:50"},"nodeType":"YulFunctionCall","src":"4628:16:50"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4650:3:50"},{"kind":"number","nodeType":"YulLiteral","src":"4655:4:50","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4646:3:50"},"nodeType":"YulFunctionCall","src":"4646:14:50"},{"name":"length","nodeType":"YulIdentifier","src":"4662:6:50"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"4593:34:50"},"nodeType":"YulFunctionCall","src":"4593:76:50"},"nodeType":"YulExpressionStatement","src":"4593:76:50"},{"nodeType":"YulAssignment","src":"4678:57:50","value":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4693:3:50"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"4706:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"4714:2:50","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4702:3:50"},"nodeType":"YulFunctionCall","src":"4702:15:50"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4723:2:50","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"4719:3:50"},"nodeType":"YulFunctionCall","src":"4719:7:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4698:3:50"},"nodeType":"YulFunctionCall","src":"4698:29:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4689:3:50"},"nodeType":"YulFunctionCall","src":"4689:39:50"},{"kind":"number","nodeType":"YulLiteral","src":"4730:4:50","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4685:3:50"},"nodeType":"YulFunctionCall","src":"4685:50:50"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"4678:3:50"}]}]},"name":"abi_encode_bytes","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"4497:5:50","type":""},{"name":"pos","nodeType":"YulTypedName","src":"4504:3:50","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"4512:3:50","type":""}],"src":"4471:270:50"},{"body":{"nodeType":"YulBlock","src":"4814:1094:50","statements":[{"nodeType":"YulVariableDeclaration","src":"4824:26:50","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4840:3:50"},{"kind":"number","nodeType":"YulLiteral","src":"4845:4:50","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4836:3:50"},"nodeType":"YulFunctionCall","src":"4836:14:50"},"variables":[{"name":"tail","nodeType":"YulTypedName","src":"4828:4:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4859:32:50","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4885:5:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4879:5:50"},"nodeType":"YulFunctionCall","src":"4879:12:50"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"4863:12:50","type":""}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4907:3:50"},{"kind":"number","nodeType":"YulLiteral","src":"4912:4:50","type":"","value":"0x40"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4900:6:50"},"nodeType":"YulFunctionCall","src":"4900:17:50"},"nodeType":"YulExpressionStatement","src":"4900:17:50"},{"nodeType":"YulVariableDeclaration","src":"4926:17:50","value":{"name":"tail","nodeType":"YulIdentifier","src":"4939:4:50"},"variables":[{"name":"pos_1","nodeType":"YulTypedName","src":"4930:5:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4952:33:50","value":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"4972:12:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4966:5:50"},"nodeType":"YulFunctionCall","src":"4966:19:50"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"4956:6:50","type":""}]},{"expression":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"5001:4:50"},{"name":"length","nodeType":"YulIdentifier","src":"5007:6:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4994:6:50"},"nodeType":"YulFunctionCall","src":"4994:20:50"},"nodeType":"YulExpressionStatement","src":"4994:20:50"},{"nodeType":"YulAssignment","src":"5023:21:50","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5036:3:50"},{"kind":"number","nodeType":"YulLiteral","src":"5041:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5032:3:50"},"nodeType":"YulFunctionCall","src":"5032:12:50"},"variableNames":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5023:5:50"}]},{"nodeType":"YulVariableDeclaration","src":"5053:14:50","value":{"kind":"number","nodeType":"YulLiteral","src":"5063:4:50","type":"","value":"0x20"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"5057:2:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5076:35:50","value":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"5094:12:50"},{"name":"_1","nodeType":"YulIdentifier","src":"5108:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5090:3:50"},"nodeType":"YulFunctionCall","src":"5090:21:50"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"5080:6:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5120:10:50","value":{"kind":"number","nodeType":"YulLiteral","src":"5129:1:50","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"5124:1:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"5188:175:50","statements":[{"expression":{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5209:5:50"},{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"5226:6:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5220:5:50"},"nodeType":"YulFunctionCall","src":"5220:13:50"},{"kind":"number","nodeType":"YulLiteral","src":"5235:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5216:3:50"},"nodeType":"YulFunctionCall","src":"5216:62:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5202:6:50"},"nodeType":"YulFunctionCall","src":"5202:77:50"},"nodeType":"YulExpressionStatement","src":"5202:77:50"},{"nodeType":"YulAssignment","src":"5292:23:50","value":{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5305:5:50"},{"name":"_1","nodeType":"YulIdentifier","src":"5312:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5301:3:50"},"nodeType":"YulFunctionCall","src":"5301:14:50"},"variableNames":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5292:5:50"}]},{"nodeType":"YulAssignment","src":"5328:25:50","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"5342:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"5350:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5338:3:50"},"nodeType":"YulFunctionCall","src":"5338:15:50"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"5328:6:50"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"5150:1:50"},{"name":"length","nodeType":"YulIdentifier","src":"5153:6:50"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"5147:2:50"},"nodeType":"YulFunctionCall","src":"5147:13:50"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"5161:18:50","statements":[{"nodeType":"YulAssignment","src":"5163:14:50","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"5172:1:50"},{"kind":"number","nodeType":"YulLiteral","src":"5175:1:50","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5168:3:50"},"nodeType":"YulFunctionCall","src":"5168:9:50"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"5163:1:50"}]}]},"pre":{"nodeType":"YulBlock","src":"5143:3:50","statements":[]},"src":"5139:224:50"},{"nodeType":"YulVariableDeclaration","src":"5372:43:50","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5404:5:50"},{"name":"_1","nodeType":"YulIdentifier","src":"5411:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5400:3:50"},"nodeType":"YulFunctionCall","src":"5400:14:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5394:5:50"},"nodeType":"YulFunctionCall","src":"5394:21:50"},"variables":[{"name":"memberValue0_1","nodeType":"YulTypedName","src":"5376:14:50","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5435:3:50"},{"name":"_1","nodeType":"YulIdentifier","src":"5440:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5431:3:50"},"nodeType":"YulFunctionCall","src":"5431:12:50"},{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5449:5:50"},{"name":"pos","nodeType":"YulIdentifier","src":"5456:3:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5445:3:50"},"nodeType":"YulFunctionCall","src":"5445:15:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5424:6:50"},"nodeType":"YulFunctionCall","src":"5424:37:50"},"nodeType":"YulExpressionStatement","src":"5424:37:50"},{"nodeType":"YulVariableDeclaration","src":"5470:18:50","value":{"name":"pos_1","nodeType":"YulIdentifier","src":"5483:5:50"},"variables":[{"name":"pos_2","nodeType":"YulTypedName","src":"5474:5:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5497:37:50","value":{"arguments":[{"name":"memberValue0_1","nodeType":"YulIdentifier","src":"5519:14:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5513:5:50"},"nodeType":"YulFunctionCall","src":"5513:21:50"},"variables":[{"name":"length_1","nodeType":"YulTypedName","src":"5501:8:50","type":""}]},{"expression":{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5550:5:50"},{"name":"length_1","nodeType":"YulIdentifier","src":"5557:8:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5543:6:50"},"nodeType":"YulFunctionCall","src":"5543:23:50"},"nodeType":"YulExpressionStatement","src":"5543:23:50"},{"nodeType":"YulAssignment","src":"5575:23:50","value":{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5588:5:50"},{"name":"_1","nodeType":"YulIdentifier","src":"5595:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5584:3:50"},"nodeType":"YulFunctionCall","src":"5584:14:50"},"variableNames":[{"name":"pos_2","nodeType":"YulIdentifier","src":"5575:5:50"}]},{"nodeType":"YulVariableDeclaration","src":"5607:39:50","value":{"arguments":[{"name":"memberValue0_1","nodeType":"YulIdentifier","src":"5627:14:50"},{"name":"_1","nodeType":"YulIdentifier","src":"5643:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5623:3:50"},"nodeType":"YulFunctionCall","src":"5623:23:50"},"variables":[{"name":"srcPtr_1","nodeType":"YulTypedName","src":"5611:8:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5655:12:50","value":{"kind":"number","nodeType":"YulLiteral","src":"5666:1:50","type":"","value":"0"},"variables":[{"name":"i_1","nodeType":"YulTypedName","src":"5659:3:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"5733:148:50","statements":[{"nodeType":"YulAssignment","src":"5747:82:50","value":{"arguments":[{"arguments":[{"name":"srcPtr_1","nodeType":"YulIdentifier","src":"5812:8:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5806:5:50"},"nodeType":"YulFunctionCall","src":"5806:15:50"},{"name":"pos_2","nodeType":"YulIdentifier","src":"5823:5:50"}],"functionName":{"name":"abi_encodeUpdatedPos_struct_MultiTargetPermission","nodeType":"YulIdentifier","src":"5756:49:50"},"nodeType":"YulFunctionCall","src":"5756:73:50"},"variableNames":[{"name":"pos_2","nodeType":"YulIdentifier","src":"5747:5:50"}]},{"nodeType":"YulAssignment","src":"5842:29:50","value":{"arguments":[{"name":"srcPtr_1","nodeType":"YulIdentifier","src":"5858:8:50"},{"name":"_1","nodeType":"YulIdentifier","src":"5868:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5854:3:50"},"nodeType":"YulFunctionCall","src":"5854:17:50"},"variableNames":[{"name":"srcPtr_1","nodeType":"YulIdentifier","src":"5842:8:50"}]}]},"condition":{"arguments":[{"name":"i_1","nodeType":"YulIdentifier","src":"5687:3:50"},{"name":"length_1","nodeType":"YulIdentifier","src":"5692:8:50"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"5684:2:50"},"nodeType":"YulFunctionCall","src":"5684:17:50"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"5702:22:50","statements":[{"nodeType":"YulAssignment","src":"5704:18:50","value":{"arguments":[{"name":"i_1","nodeType":"YulIdentifier","src":"5715:3:50"},{"kind":"number","nodeType":"YulLiteral","src":"5720:1:50","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5711:3:50"},"nodeType":"YulFunctionCall","src":"5711:11:50"},"variableNames":[{"name":"i_1","nodeType":"YulIdentifier","src":"5704:3:50"}]}]},"pre":{"nodeType":"YulBlock","src":"5680:3:50","statements":[]},"src":"5676:205:50"},{"nodeType":"YulAssignment","src":"5890:12:50","value":{"name":"pos_2","nodeType":"YulIdentifier","src":"5897:5:50"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"5890:3:50"}]}]},"name":"abi_encode_struct_PreparedSetupData","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"4791:5:50","type":""},{"name":"pos","nodeType":"YulTypedName","src":"4798:3:50","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"4806:3:50","type":""}],"src":"4746:1162:50"},{"body":{"nodeType":"YulBlock","src":"6130:231:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6147:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"6158:2:50","type":"","value":"64"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6140:6:50"},"nodeType":"YulFunctionCall","src":"6140:21:50"},"nodeType":"YulExpressionStatement","src":"6140:21:50"},{"nodeType":"YulVariableDeclaration","src":"6170:58:50","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6201:6:50"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6213:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"6224:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6209:3:50"},"nodeType":"YulFunctionCall","src":"6209:18:50"}],"functionName":{"name":"abi_encode_bytes","nodeType":"YulIdentifier","src":"6184:16:50"},"nodeType":"YulFunctionCall","src":"6184:44:50"},"variables":[{"name":"tail_1","nodeType":"YulTypedName","src":"6174:6:50","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6248:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"6259:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6244:3:50"},"nodeType":"YulFunctionCall","src":"6244:18:50"},{"arguments":[{"name":"tail_1","nodeType":"YulIdentifier","src":"6268:6:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"6276:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6264:3:50"},"nodeType":"YulFunctionCall","src":"6264:22:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6237:6:50"},"nodeType":"YulFunctionCall","src":"6237:50:50"},"nodeType":"YulExpressionStatement","src":"6237:50:50"},{"nodeType":"YulAssignment","src":"6296:59:50","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"6340:6:50"},{"name":"tail_1","nodeType":"YulIdentifier","src":"6348:6:50"}],"functionName":{"name":"abi_encode_struct_PreparedSetupData","nodeType":"YulIdentifier","src":"6304:35:50"},"nodeType":"YulFunctionCall","src":"6304:51:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6296:4:50"}]}]},"name":"abi_encode_tuple_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$4802_memory_ptr__to_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$4802_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6091:9:50","type":""},{"name":"value1","nodeType":"YulTypedName","src":"6102:6:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"6110:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6121:4:50","type":""}],"src":"5913:448:50"},{"body":{"nodeType":"YulBlock","src":"6398:95:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6415:1:50","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6422:3:50","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"6427:10:50","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"6418:3:50"},"nodeType":"YulFunctionCall","src":"6418:20:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6408:6:50"},"nodeType":"YulFunctionCall","src":"6408:31:50"},"nodeType":"YulExpressionStatement","src":"6408:31:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6455:1:50","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"6458:4:50","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6448:6:50"},"nodeType":"YulFunctionCall","src":"6448:15:50"},"nodeType":"YulExpressionStatement","src":"6448:15:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6479:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6482:4:50","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6472:6:50"},"nodeType":"YulFunctionCall","src":"6472:15:50"},"nodeType":"YulExpressionStatement","src":"6472:15:50"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"6366:127:50"},{"body":{"nodeType":"YulBlock","src":"6594:899:50","statements":[{"body":{"nodeType":"YulBlock","src":"6640:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6649:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6652:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6642:6:50"},"nodeType":"YulFunctionCall","src":"6642:12:50"},"nodeType":"YulExpressionStatement","src":"6642:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"6615:7:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"6624:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6611:3:50"},"nodeType":"YulFunctionCall","src":"6611:23:50"},{"kind":"number","nodeType":"YulLiteral","src":"6636:2:50","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6607:3:50"},"nodeType":"YulFunctionCall","src":"6607:32:50"},"nodeType":"YulIf","src":"6604:52:50"},{"nodeType":"YulAssignment","src":"6665:39:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6694:9:50"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"6675:18:50"},"nodeType":"YulFunctionCall","src":"6675:29:50"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"6665:6:50"}]},{"nodeType":"YulVariableDeclaration","src":"6713:46:50","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6744:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"6755:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6740:3:50"},"nodeType":"YulFunctionCall","src":"6740:18:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6727:12:50"},"nodeType":"YulFunctionCall","src":"6727:32:50"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"6717:6:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"6768:28:50","value":{"kind":"number","nodeType":"YulLiteral","src":"6778:18:50","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"6772:2:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"6823:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6832:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6835:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6825:6:50"},"nodeType":"YulFunctionCall","src":"6825:12:50"},"nodeType":"YulExpressionStatement","src":"6825:12:50"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"6811:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"6819:2:50"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6808:2:50"},"nodeType":"YulFunctionCall","src":"6808:14:50"},"nodeType":"YulIf","src":"6805:34:50"},{"nodeType":"YulVariableDeclaration","src":"6848:32:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6862:9:50"},{"name":"offset","nodeType":"YulIdentifier","src":"6873:6:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6858:3:50"},"nodeType":"YulFunctionCall","src":"6858:22:50"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"6852:2:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"6928:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6937:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6940:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6930:6:50"},"nodeType":"YulFunctionCall","src":"6930:12:50"},"nodeType":"YulExpressionStatement","src":"6930:12:50"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"6907:2:50"},{"kind":"number","nodeType":"YulLiteral","src":"6911:4:50","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6903:3:50"},"nodeType":"YulFunctionCall","src":"6903:13:50"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"6918:7:50"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6899:3:50"},"nodeType":"YulFunctionCall","src":"6899:27:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"6892:6:50"},"nodeType":"YulFunctionCall","src":"6892:35:50"},"nodeType":"YulIf","src":"6889:55:50"},{"nodeType":"YulVariableDeclaration","src":"6953:26:50","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"6976:2:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6963:12:50"},"nodeType":"YulFunctionCall","src":"6963:16:50"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"6957:2:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"7002:22:50","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"7004:16:50"},"nodeType":"YulFunctionCall","src":"7004:18:50"},"nodeType":"YulExpressionStatement","src":"7004:18:50"}]},"condition":{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"6994:2:50"},{"name":"_1","nodeType":"YulIdentifier","src":"6998:2:50"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6991:2:50"},"nodeType":"YulFunctionCall","src":"6991:10:50"},"nodeType":"YulIf","src":"6988:36:50"},{"nodeType":"YulVariableDeclaration","src":"7033:17:50","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7047:2:50","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"7043:3:50"},"nodeType":"YulFunctionCall","src":"7043:7:50"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"7037:2:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"7059:23:50","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7079:2:50","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"7073:5:50"},"nodeType":"YulFunctionCall","src":"7073:9:50"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"7063:6:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"7091:71:50","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7113:6:50"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"7137:2:50"},{"kind":"number","nodeType":"YulLiteral","src":"7141:4:50","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7133:3:50"},"nodeType":"YulFunctionCall","src":"7133:13:50"},{"name":"_4","nodeType":"YulIdentifier","src":"7148:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7129:3:50"},"nodeType":"YulFunctionCall","src":"7129:22:50"},{"kind":"number","nodeType":"YulLiteral","src":"7153:2:50","type":"","value":"63"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7125:3:50"},"nodeType":"YulFunctionCall","src":"7125:31:50"},{"name":"_4","nodeType":"YulIdentifier","src":"7158:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7121:3:50"},"nodeType":"YulFunctionCall","src":"7121:40:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7109:3:50"},"nodeType":"YulFunctionCall","src":"7109:53:50"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"7095:10:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"7221:22:50","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"7223:16:50"},"nodeType":"YulFunctionCall","src":"7223:18:50"},"nodeType":"YulExpressionStatement","src":"7223:18:50"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"7180:10:50"},{"name":"_1","nodeType":"YulIdentifier","src":"7192:2:50"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"7177:2:50"},"nodeType":"YulFunctionCall","src":"7177:18:50"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"7200:10:50"},{"name":"memPtr","nodeType":"YulIdentifier","src":"7212:6:50"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"7197:2:50"},"nodeType":"YulFunctionCall","src":"7197:22:50"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"7174:2:50"},"nodeType":"YulFunctionCall","src":"7174:46:50"},"nodeType":"YulIf","src":"7171:72:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7259:2:50","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"7263:10:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7252:6:50"},"nodeType":"YulFunctionCall","src":"7252:22:50"},"nodeType":"YulExpressionStatement","src":"7252:22:50"},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7290:6:50"},{"name":"_3","nodeType":"YulIdentifier","src":"7298:2:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7283:6:50"},"nodeType":"YulFunctionCall","src":"7283:18:50"},"nodeType":"YulExpressionStatement","src":"7283:18:50"},{"body":{"nodeType":"YulBlock","src":"7347:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7356:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7359:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7349:6:50"},"nodeType":"YulFunctionCall","src":"7349:12:50"},"nodeType":"YulExpressionStatement","src":"7349:12:50"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"7324:2:50"},{"name":"_3","nodeType":"YulIdentifier","src":"7328:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7320:3:50"},"nodeType":"YulFunctionCall","src":"7320:11:50"},{"kind":"number","nodeType":"YulLiteral","src":"7333:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7316:3:50"},"nodeType":"YulFunctionCall","src":"7316:20:50"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"7338:7:50"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"7313:2:50"},"nodeType":"YulFunctionCall","src":"7313:33:50"},"nodeType":"YulIf","src":"7310:53:50"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7389:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"7397:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7385:3:50"},"nodeType":"YulFunctionCall","src":"7385:15:50"},{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"7406:2:50"},{"kind":"number","nodeType":"YulLiteral","src":"7410:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7402:3:50"},"nodeType":"YulFunctionCall","src":"7402:11:50"},{"name":"_3","nodeType":"YulIdentifier","src":"7415:2:50"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"7372:12:50"},"nodeType":"YulFunctionCall","src":"7372:46:50"},"nodeType":"YulExpressionStatement","src":"7372:46:50"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7442:6:50"},{"name":"_3","nodeType":"YulIdentifier","src":"7450:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7438:3:50"},"nodeType":"YulFunctionCall","src":"7438:15:50"},{"kind":"number","nodeType":"YulLiteral","src":"7455:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7434:3:50"},"nodeType":"YulFunctionCall","src":"7434:24:50"},{"kind":"number","nodeType":"YulLiteral","src":"7460:1:50","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7427:6:50"},"nodeType":"YulFunctionCall","src":"7427:35:50"},"nodeType":"YulExpressionStatement","src":"7427:35:50"},{"nodeType":"YulAssignment","src":"7471:16:50","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"7481:6:50"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"7471:6:50"}]}]},"name":"abi_decode_tuple_t_addresst_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6552:9:50","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"6563:7:50","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"6575:6:50","type":""},{"name":"value1","nodeType":"YulTypedName","src":"6583:6:50","type":""}],"src":"6498:995:50"},{"body":{"nodeType":"YulBlock","src":"7697:209:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7714:9:50"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7729:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"7737:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7725:3:50"},"nodeType":"YulFunctionCall","src":"7725:55:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7707:6:50"},"nodeType":"YulFunctionCall","src":"7707:74:50"},"nodeType":"YulExpressionStatement","src":"7707:74:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7801:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"7812:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7797:3:50"},"nodeType":"YulFunctionCall","src":"7797:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"7817:2:50","type":"","value":"64"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7790:6:50"},"nodeType":"YulFunctionCall","src":"7790:30:50"},"nodeType":"YulExpressionStatement","src":"7790:30:50"},{"nodeType":"YulAssignment","src":"7829:71:50","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"7873:6:50"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7885:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"7896:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7881:3:50"},"nodeType":"YulFunctionCall","src":"7881:18:50"}],"functionName":{"name":"abi_encode_struct_PreparedSetupData","nodeType":"YulIdentifier","src":"7837:35:50"},"nodeType":"YulFunctionCall","src":"7837:63:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7829:4:50"}]}]},"name":"abi_encode_tuple_t_address_t_struct$_PreparedSetupData_$4802_memory_ptr__to_t_address_t_struct$_PreparedSetupData_$4802_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7658:9:50","type":""},{"name":"value1","nodeType":"YulTypedName","src":"7669:6:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"7677:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7688:4:50","type":""}],"src":"7498:408:50"},{"body":{"nodeType":"YulBlock","src":"8025:125:50","statements":[{"nodeType":"YulAssignment","src":"8035:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8047:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"8058:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8043:3:50"},"nodeType":"YulFunctionCall","src":"8043:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"8035:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8077:9:50"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"8092:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"8100:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8088:3:50"},"nodeType":"YulFunctionCall","src":"8088:55:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8070:6:50"},"nodeType":"YulFunctionCall","src":"8070:74:50"},"nodeType":"YulExpressionStatement","src":"8070:74:50"}]},"name":"abi_encode_tuple_t_contract$_IDAO_$2538__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7994:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"8005:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"8016:4:50","type":""}],"src":"7911:239:50"},{"body":{"nodeType":"YulBlock","src":"8187:95:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8204:1:50","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8211:3:50","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"8216:10:50","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"8207:3:50"},"nodeType":"YulFunctionCall","src":"8207:20:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8197:6:50"},"nodeType":"YulFunctionCall","src":"8197:31:50"},"nodeType":"YulExpressionStatement","src":"8197:31:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8244:1:50","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"8247:4:50","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8237:6:50"},"nodeType":"YulFunctionCall","src":"8237:15:50"},"nodeType":"YulExpressionStatement","src":"8237:15:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8268:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8271:4:50","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8261:6:50"},"nodeType":"YulFunctionCall","src":"8261:15:50"},"nodeType":"YulExpressionStatement","src":"8261:15:50"}]},"name":"panic_error_0x11","nodeType":"YulFunctionDefinition","src":"8155:127:50"},{"body":{"nodeType":"YulBlock","src":"8336:159:50","statements":[{"nodeType":"YulVariableDeclaration","src":"8346:52:50","value":{"kind":"number","nodeType":"YulLiteral","src":"8356:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"8350:2:50","type":""}]},{"nodeType":"YulAssignment","src":"8407:35:50","value":{"arguments":[{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"8423:1:50"},{"name":"_1","nodeType":"YulIdentifier","src":"8426:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8419:3:50"},"nodeType":"YulFunctionCall","src":"8419:10:50"},{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"8435:1:50"},{"name":"_1","nodeType":"YulIdentifier","src":"8438:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8431:3:50"},"nodeType":"YulFunctionCall","src":"8431:10:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"8415:3:50"},"nodeType":"YulFunctionCall","src":"8415:27:50"},"variableNames":[{"name":"diff","nodeType":"YulIdentifier","src":"8407:4:50"}]},{"body":{"nodeType":"YulBlock","src":"8467:22:50","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"8469:16:50"},"nodeType":"YulFunctionCall","src":"8469:18:50"},"nodeType":"YulExpressionStatement","src":"8469:18:50"}]},"condition":{"arguments":[{"name":"diff","nodeType":"YulIdentifier","src":"8457:4:50"},{"name":"_1","nodeType":"YulIdentifier","src":"8463:2:50"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"8454:2:50"},"nodeType":"YulFunctionCall","src":"8454:12:50"},"nodeType":"YulIf","src":"8451:38:50"}]},"name":"checked_sub_t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"8318:1:50","type":""},{"name":"y","nodeType":"YulTypedName","src":"8321:1:50","type":""}],"returnVariables":[{"name":"diff","nodeType":"YulTypedName","src":"8327:4:50","type":""}],"src":"8287:208:50"},{"body":{"nodeType":"YulBlock","src":"8532:95:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8549:1:50","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8556:3:50","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"8561:10:50","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"8552:3:50"},"nodeType":"YulFunctionCall","src":"8552:20:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8542:6:50"},"nodeType":"YulFunctionCall","src":"8542:31:50"},"nodeType":"YulExpressionStatement","src":"8542:31:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8589:1:50","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"8592:4:50","type":"","value":"0x32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8582:6:50"},"nodeType":"YulFunctionCall","src":"8582:15:50"},"nodeType":"YulExpressionStatement","src":"8582:15:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8613:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8616:4:50","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8606:6:50"},"nodeType":"YulFunctionCall","src":"8606:15:50"},"nodeType":"YulExpressionStatement","src":"8606:15:50"}]},"name":"panic_error_0x32","nodeType":"YulFunctionDefinition","src":"8500:127:50"},{"body":{"nodeType":"YulBlock","src":"8679:187:50","statements":[{"nodeType":"YulVariableDeclaration","src":"8689:52:50","value":{"kind":"number","nodeType":"YulLiteral","src":"8699:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"8693:2:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"8750:29:50","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8769:5:50"},{"name":"_1","nodeType":"YulIdentifier","src":"8776:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8765:3:50"},"nodeType":"YulFunctionCall","src":"8765:14:50"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"8754:7:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"8807:22:50","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"8809:16:50"},"nodeType":"YulFunctionCall","src":"8809:18:50"},"nodeType":"YulExpressionStatement","src":"8809:18:50"}]},"condition":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"8794:7:50"},{"name":"_1","nodeType":"YulIdentifier","src":"8803:2:50"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"8791:2:50"},"nodeType":"YulFunctionCall","src":"8791:15:50"},"nodeType":"YulIf","src":"8788:41:50"},{"nodeType":"YulAssignment","src":"8838:22:50","value":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"8849:7:50"},{"kind":"number","nodeType":"YulLiteral","src":"8858:1:50","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8845:3:50"},"nodeType":"YulFunctionCall","src":"8845:15:50"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"8838:3:50"}]}]},"name":"increment_t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"8661:5:50","type":""}],"returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"8671:3:50","type":""}],"src":"8632:234:50"},{"body":{"nodeType":"YulBlock","src":"9045:172:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9062:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"9073:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9055:6:50"},"nodeType":"YulFunctionCall","src":"9055:21:50"},"nodeType":"YulExpressionStatement","src":"9055:21:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9096:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"9107:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9092:3:50"},"nodeType":"YulFunctionCall","src":"9092:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"9112:2:50","type":"","value":"22"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9085:6:50"},"nodeType":"YulFunctionCall","src":"9085:30:50"},"nodeType":"YulExpressionStatement","src":"9085:30:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9135:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"9146:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9131:3:50"},"nodeType":"YulFunctionCall","src":"9131:18:50"},{"hexValue":"455243313136373a20637265617465206661696c6564","kind":"string","nodeType":"YulLiteral","src":"9151:24:50","type":"","value":"ERC1167: create failed"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9124:6:50"},"nodeType":"YulFunctionCall","src":"9124:52:50"},"nodeType":"YulExpressionStatement","src":"9124:52:50"},{"nodeType":"YulAssignment","src":"9185:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9197:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"9208:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9193:3:50"},"nodeType":"YulFunctionCall","src":"9193:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"9185:4:50"}]}]},"name":"abi_encode_tuple_t_stringliteral_68ca40b61460257f14e69f48b1a4dbc812e9afc6932f127ef8084544457b3335__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9022:9:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"9036:4:50","type":""}],"src":"8871:346:50"},{"body":{"nodeType":"YulBlock","src":"9396:228:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9413:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"9424:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9406:6:50"},"nodeType":"YulFunctionCall","src":"9406:21:50"},"nodeType":"YulExpressionStatement","src":"9406:21:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9447:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"9458:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9443:3:50"},"nodeType":"YulFunctionCall","src":"9443:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"9463:2:50","type":"","value":"38"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9436:6:50"},"nodeType":"YulFunctionCall","src":"9436:30:50"},"nodeType":"YulExpressionStatement","src":"9436:30:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9486:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"9497:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9482:3:50"},"nodeType":"YulFunctionCall","src":"9482:18:50"},{"hexValue":"416464726573733a20696e73756666696369656e742062616c616e636520666f","kind":"string","nodeType":"YulLiteral","src":"9502:34:50","type":"","value":"Address: insufficient balance fo"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9475:6:50"},"nodeType":"YulFunctionCall","src":"9475:62:50"},"nodeType":"YulExpressionStatement","src":"9475:62:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9557:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"9568:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9553:3:50"},"nodeType":"YulFunctionCall","src":"9553:18:50"},{"hexValue":"722063616c6c","kind":"string","nodeType":"YulLiteral","src":"9573:8:50","type":"","value":"r call"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9546:6:50"},"nodeType":"YulFunctionCall","src":"9546:36:50"},"nodeType":"YulExpressionStatement","src":"9546:36:50"},{"nodeType":"YulAssignment","src":"9591:27:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9603:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"9614:3:50","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9599:3:50"},"nodeType":"YulFunctionCall","src":"9599:19:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"9591:4:50"}]}]},"name":"abi_encode_tuple_t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9373:9:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"9387:4:50","type":""}],"src":"9222:402:50"},{"body":{"nodeType":"YulBlock","src":"9766:150:50","statements":[{"nodeType":"YulVariableDeclaration","src":"9776:27:50","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"9796:6:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"9790:5:50"},"nodeType":"YulFunctionCall","src":"9790:13:50"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"9780:6:50","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"9851:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"9859:4:50","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9847:3:50"},"nodeType":"YulFunctionCall","src":"9847:17:50"},{"name":"pos","nodeType":"YulIdentifier","src":"9866:3:50"},{"name":"length","nodeType":"YulIdentifier","src":"9871:6:50"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"9812:34:50"},"nodeType":"YulFunctionCall","src":"9812:66:50"},"nodeType":"YulExpressionStatement","src":"9812:66:50"},{"nodeType":"YulAssignment","src":"9887:23:50","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"9898:3:50"},{"name":"length","nodeType":"YulIdentifier","src":"9903:6:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9894:3:50"},"nodeType":"YulFunctionCall","src":"9894:16:50"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"9887:3:50"}]}]},"name":"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"9742:3:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"9747:6:50","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"9758:3:50","type":""}],"src":"9629:287:50"},{"body":{"nodeType":"YulBlock","src":"10095:179:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10112:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"10123:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10105:6:50"},"nodeType":"YulFunctionCall","src":"10105:21:50"},"nodeType":"YulExpressionStatement","src":"10105:21:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10146:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"10157:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10142:3:50"},"nodeType":"YulFunctionCall","src":"10142:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"10162:2:50","type":"","value":"29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10135:6:50"},"nodeType":"YulFunctionCall","src":"10135:30:50"},"nodeType":"YulExpressionStatement","src":"10135:30:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10185:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"10196:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10181:3:50"},"nodeType":"YulFunctionCall","src":"10181:18:50"},{"hexValue":"416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374","kind":"string","nodeType":"YulLiteral","src":"10201:31:50","type":"","value":"Address: call to non-contract"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10174:6:50"},"nodeType":"YulFunctionCall","src":"10174:59:50"},"nodeType":"YulExpressionStatement","src":"10174:59:50"},{"nodeType":"YulAssignment","src":"10242:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10254:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"10265:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10250:3:50"},"nodeType":"YulFunctionCall","src":"10250:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"10242:4:50"}]}]},"name":"abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"10072:9:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"10086:4:50","type":""}],"src":"9921:353:50"},{"body":{"nodeType":"YulBlock","src":"10400:98:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10417:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"10428:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10410:6:50"},"nodeType":"YulFunctionCall","src":"10410:21:50"},"nodeType":"YulExpressionStatement","src":"10410:21:50"},{"nodeType":"YulAssignment","src":"10440:52:50","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"10465:6:50"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10477:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"10488:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10473:3:50"},"nodeType":"YulFunctionCall","src":"10473:18:50"}],"functionName":{"name":"abi_encode_bytes","nodeType":"YulIdentifier","src":"10448:16:50"},"nodeType":"YulFunctionCall","src":"10448:44:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"10440:4:50"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"10369:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"10380:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"10391:4:50","type":""}],"src":"10279:219:50"}]},"contents":"{\n { }\n function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n if iszero(eq(value, and(value, shl(224, 0xffffffff)))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 96)\n let pos := headStart\n pos := headStart\n let srcPtr := value0\n let i := 0\n for { } lt(i, 0x03) { i := add(i, 1) }\n {\n mstore(pos, and(mload(srcPtr), 0xff))\n let _1 := 0x20\n pos := add(pos, _1)\n srcPtr := add(srcPtr, _1)\n }\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_decode_address(offset) -> value\n {\n value := calldataload(offset)\n if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n }\n function abi_decode_struct_SetupPayload_calldata(offset, end) -> value\n {\n if slt(sub(end, offset), 96) { revert(0, 0) }\n value := offset\n }\n function abi_decode_tuple_t_addresst_struct$_SetupPayload_$4810_calldata_ptr(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n let offset := calldataload(add(headStart, 32))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n value1 := abi_decode_struct_SetupPayload_calldata(add(headStart, offset), dataEnd)\n }\n function panic_error_0x21()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x21)\n revert(0, 0x24)\n }\n function abi_encodeUpdatedPos_struct_MultiTargetPermission(value0, pos) -> updatedPos\n {\n let _1 := mload(value0)\n if iszero(lt(_1, 3))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x21)\n revert(0, 0x24)\n }\n mstore(pos, _1)\n let memberValue0 := mload(add(value0, 0x20))\n let _2 := 0xffffffffffffffffffffffffffffffffffffffff\n mstore(add(pos, 0x20), and(memberValue0, _2))\n mstore(add(pos, 0x40), and(mload(add(value0, 0x40)), _2))\n mstore(add(pos, 0x60), and(mload(add(value0, 0x60)), _2))\n mstore(add(pos, 0x80), mload(add(value0, 0x80)))\n updatedPos := add(pos, 0xa0)\n }\n function abi_encode_tuple_t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n let _1 := 32\n let tail_1 := add(headStart, _1)\n mstore(headStart, _1)\n let pos := tail_1\n let length := mload(value0)\n mstore(tail_1, length)\n pos := add(headStart, 64)\n let srcPtr := add(value0, _1)\n let i := 0\n for { } lt(i, length) { i := add(i, 1) }\n {\n pos := abi_encodeUpdatedPos_struct_MultiTargetPermission(mload(srcPtr), pos)\n srcPtr := add(srcPtr, _1)\n }\n tail := pos\n }\n function abi_decode_tuple_t_addresst_uint16t_struct$_SetupPayload_$4810_calldata_ptr(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n let value := calldataload(add(headStart, 32))\n if iszero(eq(value, and(value, 0xffff))) { revert(0, 0) }\n value1 := value\n let offset := calldataload(add(headStart, 64))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n value2 := abi_decode_struct_SetupPayload_calldata(add(headStart, offset), dataEnd)\n }\n function copy_memory_to_memory_with_cleanup(src, dst, length)\n {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n mstore(add(dst, length), 0)\n }\n function abi_encode_bytes(value, pos) -> end\n {\n let length := mload(value)\n mstore(pos, length)\n copy_memory_to_memory_with_cleanup(add(value, 0x20), add(pos, 0x20), length)\n end := add(add(pos, and(add(length, 31), not(31))), 0x20)\n }\n function abi_encode_struct_PreparedSetupData(value, pos) -> end\n {\n let tail := add(pos, 0x40)\n let memberValue0 := mload(value)\n mstore(pos, 0x40)\n let pos_1 := tail\n let length := mload(memberValue0)\n mstore(tail, length)\n pos_1 := add(pos, 96)\n let _1 := 0x20\n let srcPtr := add(memberValue0, _1)\n let i := 0\n for { } lt(i, length) { i := add(i, 1) }\n {\n mstore(pos_1, and(mload(srcPtr), 0xffffffffffffffffffffffffffffffffffffffff))\n pos_1 := add(pos_1, _1)\n srcPtr := add(srcPtr, _1)\n }\n let memberValue0_1 := mload(add(value, _1))\n mstore(add(pos, _1), sub(pos_1, pos))\n let pos_2 := pos_1\n let length_1 := mload(memberValue0_1)\n mstore(pos_1, length_1)\n pos_2 := add(pos_1, _1)\n let srcPtr_1 := add(memberValue0_1, _1)\n let i_1 := 0\n for { } lt(i_1, length_1) { i_1 := add(i_1, 1) }\n {\n pos_2 := abi_encodeUpdatedPos_struct_MultiTargetPermission(mload(srcPtr_1), pos_2)\n srcPtr_1 := add(srcPtr_1, _1)\n }\n end := pos_2\n }\n function abi_encode_tuple_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$4802_memory_ptr__to_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$4802_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n {\n mstore(headStart, 64)\n let tail_1 := abi_encode_bytes(value0, add(headStart, 64))\n mstore(add(headStart, 32), sub(tail_1, headStart))\n tail := abi_encode_struct_PreparedSetupData(value1, tail_1)\n }\n function panic_error_0x41()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function abi_decode_tuple_t_addresst_bytes_memory_ptr(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n let offset := calldataload(add(headStart, 32))\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n let _2 := add(headStart, offset)\n if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n let _3 := calldataload(_2)\n if gt(_3, _1) { panic_error_0x41() }\n let _4 := not(31)\n let memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n mstore(memPtr, _3)\n if gt(add(add(_2, _3), 32), dataEnd) { revert(0, 0) }\n calldatacopy(add(memPtr, 32), add(_2, 32), _3)\n mstore(add(add(memPtr, _3), 32), 0)\n value1 := memPtr\n }\n function abi_encode_tuple_t_address_t_struct$_PreparedSetupData_$4802_memory_ptr__to_t_address_t_struct$_PreparedSetupData_$4802_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n {\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n mstore(add(headStart, 32), 64)\n tail := abi_encode_struct_PreparedSetupData(value1, add(headStart, 64))\n }\n function abi_encode_tuple_t_contract$_IDAO_$2538__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function panic_error_0x11()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n function checked_sub_t_uint160(x, y) -> diff\n {\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n diff := sub(and(x, _1), and(y, _1))\n if gt(diff, _1) { panic_error_0x11() }\n }\n function panic_error_0x32()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n function increment_t_uint160(value) -> ret\n {\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n let value_1 := and(value, _1)\n if eq(value_1, _1) { panic_error_0x11() }\n ret := add(value_1, 1)\n }\n function abi_encode_tuple_t_stringliteral_68ca40b61460257f14e69f48b1a4dbc812e9afc6932f127ef8084544457b3335__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 22)\n mstore(add(headStart, 64), \"ERC1167: create failed\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 38)\n mstore(add(headStart, 64), \"Address: insufficient balance fo\")\n mstore(add(headStart, 96), \"r call\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n {\n let length := mload(value0)\n copy_memory_to_memory_with_cleanup(add(value0, 0x20), pos, length)\n end := add(pos, length)\n }\n function abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 29)\n mstore(add(headStart, 64), \"Address: call to non-contract\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n mstore(headStart, 32)\n tail := abi_encode_bytes(value0, add(headStart, 32))\n }\n}","id":50,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{"4879":[{"length":32,"start":193},{"length":32,"start":664}]},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100725760003560e01c80639cb0a124116100505780639cb0a124146100eb578063a8a9c29e1461010b578063f10832f11461012c57600080fd5b806301ffc9a7146100775780632ae9c6001461009f5780635c60da1b146100b4575b600080fd5b61008a6100853660046107fe565b61014d565b60405190151581526020015b60405180910390f35b6100a761019e565b6040516100969190610828565b6040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152602001610096565b6100fe6100f9366004610885565b6101c8565b604051610096919061094f565b61011e610119366004610998565b6101df565b604051610096929190610ae2565b61013f61013a366004610b26565b610217565b604051610096929190610be8565b60006001600160e01b0319821663099718b560e41b148061017d57506001600160e01b03198216621574e360e91b145b8061019857506301ffc9a760e01b6001600160e01b03198316145b92915050565b6101a66107e0565b5060408051606081018252600181526004602082015260009181019190915290565b60606101d86000600260016102f3565b9392505050565b60606101fe604051806040016040528060608152602001606081525090565b60405163a112810160e01b815260040160405180910390fd5b6000610236604051806040016040528060608152602001606081525090565b6040516001600160a01b038516602482015260009060440160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663189acdbd60e31b17905290506102c9816102ba7f000000000000000000000000000000000000000000000000000000000000000090565b6001600160a01b031690610478565b92506102d560026104b0565b82526102e460006002816102f3565b60208301525090939092509050565b6060826001600160a01b0316846001600160a01b0316111561032857604051633a4013cd60e21b815260040160405180910390fd5b6103328484610c20565b6001600160a01b031667ffffffffffffffff81111561035357610353610b10565b6040519080825280602002602001820160405280156103ac57816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282526000199092019101816103715790505b509050835b836001600160a01b0316816001600160a01b03161015610470576040518060a001604052808460028111156103e8576103e86108d3565b81526001600160a01b038316602082018190526040820152600060608201527fa280eec51ab8e1bc4b6b0c1b7f1bde785761b787a49db404e3e9338ed9b016ef608090910152826104398784610c20565b6001600160a01b03168151811061045257610452610c40565b6020026020010181905250808061046890610c56565b9150506103b1565b509392505050565b600061048c836001600160a01b0316610569565b825190915015610198576104a96001600160a01b0382168361060f565b5092915050565b6060816001600160a01b031667ffffffffffffffff8111156104d4576104d4610b10565b6040519080825280602002602001820160405280156104fd578160200160208202803683370190505b50905060005b826001600160a01b0316816001600160a01b03161015610563578082826001600160a01b03168151811061053957610539610c40565b6001600160a01b03909216602092830291909101909101528061055b81610c56565b915050610503565b50919050565b6000763d602d80600a3d3981f3363d3d373d3d3d363d730000008260601b60e81c176000526e5af43d82803e903d91602b57fd5bf38260781b17602052603760096000f090506001600160a01b03811661060a5760405162461bcd60e51b815260206004820152601660248201527f455243313136373a20637265617465206661696c65640000000000000000000060448201526064015b60405180910390fd5b919050565b60606101d8838360006040518060400160405280601e81526020017f416464726573733a206c6f772d6c6576656c2063616c6c206661696c656400008152506060824710156106c65760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610601565b600080866001600160a01b031685876040516106e29190610c7c565b60006040518083038185875af1925050503d806000811461071f576040519150601f19603f3d011682016040523d82523d6000602084013e610724565b606091505b509150915061073587838387610742565b925050505b949350505050565b606083156107b15782516000036107aa576001600160a01b0385163b6107aa5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610601565b508161073a565b61073a83838151156107c65781518083602001fd5b8060405162461bcd60e51b81526004016106019190610c98565b60405180606001604052806003906020820280368337509192915050565b60006020828403121561081057600080fd5b81356001600160e01b0319811681146101d857600080fd5b60608101818360005b600381101561085357815160ff16835260209283019290910190600101610831565b50505092915050565b80356001600160a01b038116811461060a57600080fd5b60006060828403121561056357600080fd5b6000806040838503121561089857600080fd5b6108a18361085c565b9150602083013567ffffffffffffffff8111156108bd57600080fd5b6108c985828601610873565b9150509250929050565b634e487b7160e01b600052602160045260246000fd5b600081516003811061090b57634e487b7160e01b600052602160045260246000fd5b8352506020818101516001600160a01b0390811691840191909152604080830151821690840152606080830151909116908301526080908101519082015260a00190565b6020808252825182820181905260009190848201906040850190845b8181101561098c5761097e8385516108e9565b93850193925060010161096b565b50909695505050505050565b6000806000606084860312156109ad57600080fd5b6109b68461085c565b9250602084013561ffff811681146109cd57600080fd5b9150604084013567ffffffffffffffff8111156109e957600080fd5b6109f586828701610873565b9150509250925092565b60005b83811015610a1a578181015183820152602001610a02565b50506000910152565b60008151808452610a3b8160208601602086016109ff565b601f01601f19169290920160200192915050565b805160408084528151908401819052600091602091908201906060860190845b81811015610a945783516001600160a01b031683529284019291840191600101610a6f565b50508483015186820387850152805180835290840192506000918401905b80831015610ad757610ac58285516108e9565b91508484019350600183019250610ab2565b509695505050505050565b604081526000610af56040830185610a23565b8281036020840152610b078185610a4f565b95945050505050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215610b3957600080fd5b610b428361085c565b9150602083013567ffffffffffffffff80821115610b5f57600080fd5b818501915085601f830112610b7357600080fd5b813581811115610b8557610b85610b10565b604051601f8201601f19908116603f01168101908382118183101715610bad57610bad610b10565b81604052828152886020848701011115610bc657600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6001600160a01b038316815260406020820152600061073a6040830184610a4f565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b038281168282160390808211156104a9576104a9610c0a565b634e487b7160e01b600052603260045260246000fd5b60006001600160a01b03808316818103610c7257610c72610c0a565b6001019392505050565b60008251610c8e8184602087016109ff565b9190910192915050565b6020815260006101d86020830184610a2356fea164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x72 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9CB0A124 GT PUSH2 0x50 JUMPI DUP1 PUSH4 0x9CB0A124 EQ PUSH2 0xEB JUMPI DUP1 PUSH4 0xA8A9C29E EQ PUSH2 0x10B JUMPI DUP1 PUSH4 0xF10832F1 EQ PUSH2 0x12C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x77 JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0x9F JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0xB4 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8A PUSH2 0x85 CALLDATASIZE PUSH1 0x4 PUSH2 0x7FE JUMP JUMPDEST PUSH2 0x14D JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xA7 PUSH2 0x19E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x96 SWAP2 SWAP1 PUSH2 0x828 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x96 JUMP JUMPDEST PUSH2 0xFE PUSH2 0xF9 CALLDATASIZE PUSH1 0x4 PUSH2 0x885 JUMP JUMPDEST PUSH2 0x1C8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x96 SWAP2 SWAP1 PUSH2 0x94F JUMP JUMPDEST PUSH2 0x11E PUSH2 0x119 CALLDATASIZE PUSH1 0x4 PUSH2 0x998 JUMP JUMPDEST PUSH2 0x1DF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x96 SWAP3 SWAP2 SWAP1 PUSH2 0xAE2 JUMP JUMPDEST PUSH2 0x13F PUSH2 0x13A CALLDATASIZE PUSH1 0x4 PUSH2 0xB26 JUMP JUMPDEST PUSH2 0x217 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x96 SWAP3 SWAP2 SWAP1 PUSH2 0xBE8 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x99718B5 PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x17D JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x198 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1A6 PUSH2 0x7E0 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1D8 PUSH1 0x0 PUSH1 0x2 PUSH1 0x1 PUSH2 0x2F3 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1FE PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xA1128101 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x236 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 PUSH1 0x44 ADD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x189ACDBD PUSH1 0xE3 SHL OR SWAP1 MSTORE SWAP1 POP PUSH2 0x2C9 DUP2 PUSH2 0x2BA PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH2 0x478 JUMP JUMPDEST SWAP3 POP PUSH2 0x2D5 PUSH1 0x2 PUSH2 0x4B0 JUMP JUMPDEST DUP3 MSTORE PUSH2 0x2E4 PUSH1 0x0 PUSH1 0x2 DUP2 PUSH2 0x2F3 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP SWAP1 SWAP4 SWAP1 SWAP3 POP SWAP1 POP JUMP JUMPDEST PUSH1 0x60 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH2 0x328 JUMPI PUSH1 0x40 MLOAD PUSH4 0x3A4013CD PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x332 DUP5 DUP5 PUSH2 0xC20 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x353 JUMPI PUSH2 0x353 PUSH2 0xB10 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x3AC JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD DUP3 SWAP1 MSTORE SWAP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 DUP3 ADD MSTORE DUP3 MSTORE PUSH1 0x0 NOT SWAP1 SWAP3 ADD SWAP2 ADD DUP2 PUSH2 0x371 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP DUP4 JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT ISZERO PUSH2 0x470 JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 DUP5 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x3E8 JUMPI PUSH2 0x3E8 PUSH2 0x8D3 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x60 DUP3 ADD MSTORE PUSH32 0xA280EEC51AB8E1BC4B6B0C1B7F1BDE785761B787A49DB404E3E9338ED9B016EF PUSH1 0x80 SWAP1 SWAP2 ADD MSTORE DUP3 PUSH2 0x439 DUP8 DUP5 PUSH2 0xC20 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MLOAD DUP2 LT PUSH2 0x452 JUMPI PUSH2 0x452 PUSH2 0xC40 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP DUP1 DUP1 PUSH2 0x468 SWAP1 PUSH2 0xC56 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x3B1 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x48C DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x569 JUMP JUMPDEST DUP3 MLOAD SWAP1 SWAP2 POP ISZERO PUSH2 0x198 JUMPI PUSH2 0x4A9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP4 PUSH2 0x60F JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x4D4 JUMPI PUSH2 0x4D4 PUSH2 0xB10 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x4FD JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT ISZERO PUSH2 0x563 JUMPI DUP1 DUP3 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MLOAD DUP2 LT PUSH2 0x539 JUMPI PUSH2 0x539 PUSH2 0xC40 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE DUP1 PUSH2 0x55B DUP2 PUSH2 0xC56 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x503 JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH23 0x3D602D80600A3D3981F3363D3D373D3D3D363D73000000 DUP3 PUSH1 0x60 SHL PUSH1 0xE8 SHR OR PUSH1 0x0 MSTORE PUSH15 0x5AF43D82803E903D91602B57FD5BF3 DUP3 PUSH1 0x78 SHL OR PUSH1 0x20 MSTORE PUSH1 0x37 PUSH1 0x9 PUSH1 0x0 CREATE SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x60A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313136373A20637265617465206661696C656400000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1D8 DUP4 DUP4 PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x416464726573733A206C6F772D6C6576656C2063616C6C206661696C65640000 DUP2 MSTORE POP PUSH1 0x60 DUP3 SELFBALANCE LT ISZERO PUSH2 0x6C6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A20696E73756666696369656E742062616C616E636520666F PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x722063616C6C0000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x601 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP8 PUSH1 0x40 MLOAD PUSH2 0x6E2 SWAP2 SWAP1 PUSH2 0xC7C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x71F JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x724 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x735 DUP8 DUP4 DUP4 DUP8 PUSH2 0x742 JUMP JUMPDEST SWAP3 POP POP POP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x7B1 JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0x7AA JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0x7AA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x601 JUMP JUMPDEST POP DUP2 PUSH2 0x73A JUMP JUMPDEST PUSH2 0x73A DUP4 DUP4 DUP2 MLOAD ISZERO PUSH2 0x7C6 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x601 SWAP2 SWAP1 PUSH2 0xC98 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x810 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x1D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0x853 JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x831 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x60A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x563 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x898 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8A1 DUP4 PUSH2 0x85C JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x8BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8C9 DUP6 DUP3 DUP7 ADD PUSH2 0x873 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP2 MLOAD PUSH1 0x3 DUP2 LT PUSH2 0x90B JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP4 MSTORE POP PUSH1 0x20 DUP2 DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP1 DUP4 ADD MLOAD DUP3 AND SWAP1 DUP5 ADD MSTORE PUSH1 0x60 DUP1 DUP4 ADD MLOAD SWAP1 SWAP2 AND SWAP1 DUP4 ADD MSTORE PUSH1 0x80 SWAP1 DUP2 ADD MLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x98C JUMPI PUSH2 0x97E DUP4 DUP6 MLOAD PUSH2 0x8E9 JUMP JUMPDEST SWAP4 DUP6 ADD SWAP4 SWAP3 POP PUSH1 0x1 ADD PUSH2 0x96B JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x9AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9B6 DUP5 PUSH2 0x85C JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH2 0x9CD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x9E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9F5 DUP7 DUP3 DUP8 ADD PUSH2 0x873 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xA1A JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xA02 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0xA3B DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x9FF JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x40 DUP1 DUP5 MSTORE DUP2 MLOAD SWAP1 DUP5 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x20 SWAP2 SWAP1 DUP3 ADD SWAP1 PUSH1 0x60 DUP7 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xA94 JUMPI DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0xA6F JUMP JUMPDEST POP POP DUP5 DUP4 ADD MLOAD DUP7 DUP3 SUB DUP8 DUP6 ADD MSTORE DUP1 MLOAD DUP1 DUP4 MSTORE SWAP1 DUP5 ADD SWAP3 POP PUSH1 0x0 SWAP2 DUP5 ADD SWAP1 JUMPDEST DUP1 DUP4 LT ISZERO PUSH2 0xAD7 JUMPI PUSH2 0xAC5 DUP3 DUP6 MLOAD PUSH2 0x8E9 JUMP JUMPDEST SWAP2 POP DUP5 DUP5 ADD SWAP4 POP PUSH1 0x1 DUP4 ADD SWAP3 POP PUSH2 0xAB2 JUMP JUMPDEST POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 PUSH2 0xAF5 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0xA23 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0xB07 DUP2 DUP6 PUSH2 0xA4F JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xB39 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB42 DUP4 PUSH2 0x85C JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xB5F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xB73 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0xB85 JUMPI PUSH2 0xB85 PUSH2 0xB10 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0xBAD JUMPI PUSH2 0xBAD PUSH2 0xB10 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0xBC6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0x73A PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0xA4F JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND DUP3 DUP3 AND SUB SWAP1 DUP1 DUP3 GT ISZERO PUSH2 0x4A9 JUMPI PUSH2 0x4A9 PUSH2 0xC0A JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND DUP2 DUP2 SUB PUSH2 0xC72 JUMPI PUSH2 0xC72 PUSH2 0xC0A JUMP JUMPDEST PUSH1 0x1 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0xC8E DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x9FF JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x1D8 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0xA23 JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"2043:1127:27:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2112:293:45;;;;;;:::i;:::-;;:::i;:::-;;;470:14:50;;463:22;445:41;;433:2;418:18;2112:293:45;;;;;;;;631:98:49;;;:::i;:::-;;;;;;;:::i;2444:94:45:-;;;-1:-1:-1;;;;;2517:14:45;1167:55:50;1149:74;;1137:2;1122:18;2444:94:45;1003:226:50;2869:299:27;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1639:265:45:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;2292:538:27:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;2112:293:45:-;2198:4;-1:-1:-1;;;;;;2233:46:45;;-1:-1:-1;;;2233:46:45;;:112;;-1:-1:-1;;;;;;;2295:50:45;;-1:-1:-1;;;2295:50:45;2233:112;:165;;;-1:-1:-1;;;;;;;;;;937:40:23;;;2361:37:45;2214:184;2112:293;-1:-1:-1;;2112:293:45:o;631:98:49:-;679:15;;:::i;:::-;-1:-1:-1;706:16:49;;;;;;;;714:1;706:16;;717:1;706:16;;;;-1:-1:-1;706:16:49;;;;;;;;631:98::o;2869:299:27:-;2991:56;3099:62;3115:1;2175;3130:30;3099:15;:62::i;:::-;3085:76;2869:299;-1:-1:-1;;;2869:299:27:o;1639:265:45:-;1780:12;1794:24;-1:-1:-1;;;;;;;;;;;;;;;;;;;1794:24:45;1875:22;;-1:-1:-1;;;1875:22:45;;;;;;;;;;;2292:538:27;2389:14;2405:42;-1:-1:-1;;;;;;;;;;;;;;;;;;;2405:42:27;2483:66;;-1:-1:-1;;;;;1167:55:50;;2483:66:27;;;1149:74:50;2459:21:27;;1122:18:50;;2483:66:27;;;-1:-1:-1;;2483:66:27;;;;;;;;;;;;;;;;-1:-1:-1;;;2483:66:27;;;;-1:-1:-1;2568:45:27;2483:66;2568:16;2517:14:45;;2444:94;2568:16:27;-1:-1:-1;;;;;2568:35:27;;;:45::i;:::-;2559:54;-1:-1:-1;2651:23:27;2175:1;2651:11;:23::i;:::-;2623:51;;2716:107;2623:25;2175:1;2623:25;2716:15;:107::i;:::-;2684:29;;;:139;-1:-1:-1;2292:538:27;;2684:17;;-1:-1:-1;2292:538:27;-1:-1:-1;2292:538:27:o;580:666:30:-;699:56;780:8;-1:-1:-1;;;;;767:21:30;:10;-1:-1:-1;;;;;767:21:30;;763:53;;;797:19;;-1:-1:-1;;;797:19:30;;;;;;;;;;;763:53;879:21;890:10;879:8;:21;:::i;:::-;-1:-1:-1;;;;;837:64:30;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;837:64:30;;-1:-1:-1;;837:64:30;;;;;;;;;;;-1:-1:-1;823:78:30;-1:-1:-1;925:10:30;908:336;941:8;-1:-1:-1;;;;;937:12:30;:1;-1:-1:-1;;;;;937:12:30;;908:336;;;996:241;;;;;;;;1057:2;996:241;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;996:241:30;;;;;;;;;;;;-1:-1:-1;996:241:30;;;;1198:28;996:241;;;;;966:11;978:14;982:10;1088:1;978:14;:::i;:::-;-1:-1:-1;;;;;966:27:30;;;;;;;;;:::i;:::-;;;;;;:271;;;;951:3;;;;;:::i;:::-;;;;908:336;;;;580:666;;;;;:::o;2237:292:47:-;2349:20;2396:14;:6;-1:-1:-1;;;;;2396:12:47;;:14::i;:::-;2424:20;;2381:29;;-1:-1:-1;2424:24:47;2420:103;;2464:48;-1:-1:-1;;;;;2464:25:47;;2497:13;2464:25;:48::i;:::-;;2237:292;;;;:::o;1529:191:30:-;1577:24;1633:3;-1:-1:-1;;;;;1619:18:30;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1619:18:30;;1609:28;;1649:9;1644:74;1668:3;-1:-1:-1;;;;;1664:7:30;:1;-1:-1:-1;;;;;1664:7:30;;1644:74;;;1709:1;1688:7;1696:1;-1:-1:-1;;;;;1688:10:30;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1688:23:30;;;:10;;;;;;;;;;;:23;1673:3;;;;:::i;:::-;;;;1644:74;;;;1529:191;;;:::o;973:759:14:-;1030:16;1362:48;1344:14;1338:4;1334:25;1328:4;1324:36;1321:90;1315:4;1308:104;1569:32;1552:14;1546:4;1542:25;1539:63;1533:4;1526:77;1644:4;1638;1635:1;1628:21;1616:33;-1:-1:-1;;;;;;1676:22:14;;1668:57;;;;-1:-1:-1;;;1668:57:14;;9073:2:50;1668:57:14;;;9055:21:50;9112:2;9092:18;;;9085:30;9151:24;9131:18;;;9124:52;9193:18;;1668:57:14;;;;;;;;;973:759;;;:::o;3701:185:19:-;3776:12;3807:72;3829:6;3837:4;3843:1;3807:72;;;;;;;;;;;;;;;;;5330:12;5387:5;5362:21;:30;;5354:81;;;;-1:-1:-1;;;5354:81:19;;9424:2:50;5354:81:19;;;9406:21:50;9463:2;9443:18;;;9436:30;9502:34;9482:18;;;9475:62;9573:8;9553:18;;;9546:36;9599:19;;5354:81:19;9222:402:50;5354:81:19;5446:12;5460:23;5487:6;-1:-1:-1;;;;;5487:11:19;5506:5;5513:4;5487:31;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5445:73;;;;5535:69;5562:6;5570:7;5579:10;5591:12;5535:26;:69::i;:::-;5528:76;;;;5165:446;;;;;;;:::o;7671:628::-;7851:12;7879:7;7875:418;;;7906:10;:17;7927:1;7906:22;7902:286;;-1:-1:-1;;;;;1702:19:19;;;8113:60;;;;-1:-1:-1;;;8113:60:19;;10123:2:50;8113:60:19;;;10105:21:50;10162:2;10142:18;;;10135:30;10201:31;10181:18;;;10174:59;10250:18;;8113:60:19;9921:353:50;8113:60:19;-1:-1:-1;8208:10:19;8201:17;;7875:418;8249:33;8257:10;8269:12;8980:17;;:21;8976:379;;9208:10;9202:17;9264:15;9251:10;9247:2;9243:19;9236:44;8976:379;9331:12;9324:20;;-1:-1:-1;;;9324:20:19;;;;;;;;:::i;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:286:50:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:50;;209:43;;199:71;;266:1;263;256:12;497:501;673:2;658:18;;662:9;753:6;631:4;787:205;801:4;798:1;795:11;787:205;;;864:13;;879:4;860:24;848:37;;908:4;932:12;;;;967:15;;;;821:1;814:9;787:205;;;791:3;;;497:501;;;;:::o;1234:196::-;1302:20;;-1:-1:-1;;;;;1351:54:50;;1341:65;;1331:93;;1420:1;1417;1410:12;1435:160;1500:5;1545:2;1536:6;1531:3;1527:16;1523:25;1520:45;;;1561:1;1558;1551:12;1600:440;1700:6;1708;1761:2;1749:9;1740:7;1736:23;1732:32;1729:52;;;1777:1;1774;1767:12;1729:52;1800:29;1819:9;1800:29;:::i;:::-;1790:39;;1880:2;1869:9;1865:18;1852:32;1907:18;1899:6;1896:30;1893:50;;;1939:1;1936;1929:12;1893:50;1962:72;2026:7;2017:6;2006:9;2002:22;1962:72;:::i;:::-;1952:82;;;1600:440;;;;;:::o;2045:127::-;2106:10;2101:3;2097:20;2094:1;2087:31;2137:4;2134:1;2127:15;2161:4;2158:1;2151:15;2177:696;2252:10;2293:6;2287:13;2326:1;2322:2;2319:9;2309:140;;2371:10;2366:3;2362:20;2359:1;2352:31;2406:4;2403:1;2396:15;2434:4;2431:1;2424:15;2309:140;2458:15;;-1:-1:-1;2520:4:50;2508:17;;;2502:24;-1:-1:-1;;;;;2619:21:50;;;2603:14;;;2596:45;;;;2695:4;2683:17;;;2677:24;2673:33;;2657:14;;;2650:57;2761:4;2749:17;;;2743:24;2739:33;;;2723:14;;;2716:57;2823:4;2811:17;;;2805:24;2789:14;;;2782:48;2862:4;2853:14;;2177:696::o;2878:728::-;3127:2;3179:21;;;3249:13;;3152:18;;;3271:22;;;3098:4;;3127:2;3350:15;;;;3324:2;3309:18;;;3098:4;3393:187;3407:6;3404:1;3401:13;3393:187;;;3463:69;3528:3;3519:6;3513:13;3463:69;:::i;:::-;3555:15;;;;3456:76;-1:-1:-1;3429:1:50;3422:9;3393:187;;;-1:-1:-1;3597:3:50;;2878:728;-1:-1:-1;;;;;;2878:728:50:o;3611:600::-;3719:6;3727;3735;3788:2;3776:9;3767:7;3763:23;3759:32;3756:52;;;3804:1;3801;3794:12;3756:52;3827:29;3846:9;3827:29;:::i;:::-;3817:39;;3906:2;3895:9;3891:18;3878:32;3950:6;3943:5;3939:18;3932:5;3929:29;3919:57;;3972:1;3969;3962:12;3919:57;3995:5;-1:-1:-1;4051:2:50;4036:18;;4023:32;4078:18;4067:30;;4064:50;;;4110:1;4107;4100:12;4064:50;4133:72;4197:7;4188:6;4177:9;4173:22;4133:72;:::i;:::-;4123:82;;;3611:600;;;;;:::o;4216:250::-;4301:1;4311:113;4325:6;4322:1;4319:13;4311:113;;;4401:11;;;4395:18;4382:11;;;4375:39;4347:2;4340:10;4311:113;;;-1:-1:-1;;4458:1:50;4440:16;;4433:27;4216:250::o;4471:270::-;4512:3;4550:5;4544:12;4577:6;4572:3;4565:19;4593:76;4662:6;4655:4;4650:3;4646:14;4639:4;4632:5;4628:16;4593:76;:::i;:::-;4723:2;4702:15;-1:-1:-1;;4698:29:50;4689:39;;;;4730:4;4685:50;;4471:270;-1:-1:-1;;4471:270:50:o;4746:1162::-;4879:12;;4845:4;4900:17;;;4966:19;;4836:14;;;4994:20;;;4806:3;;5063:4;;5090:21;;;;5041:2;5032:12;;;4806:3;5139:224;5153:6;5150:1;5147:13;5139:224;;;5220:13;;-1:-1:-1;;;;;5216:62:50;5202:77;;5338:15;;;;5301:14;;;;5175:1;5168:9;5139:224;;;-1:-1:-1;;5400:14:50;;;5394:21;5445:15;;;5431:12;;;5424:37;5513:21;;5543:23;;;5623;;;;-1:-1:-1;5666:1:50;;5584:14;;;5676:205;5692:8;5687:3;5684:17;5676:205;;;5756:73;5823:5;5812:8;5806:15;5756:73;:::i;:::-;5747:82;;5868:2;5858:8;5854:17;5842:29;;5720:1;5715:3;5711:11;5704:18;;5676:205;;;-1:-1:-1;5897:5:50;4746:1162;-1:-1:-1;;;;;;4746:1162:50:o;5913:448::-;6158:2;6147:9;6140:21;6121:4;6184:44;6224:2;6213:9;6209:18;6201:6;6184:44;:::i;:::-;6276:9;6268:6;6264:22;6259:2;6248:9;6244:18;6237:50;6304:51;6348:6;6340;6304:51;:::i;:::-;6296:59;5913:448;-1:-1:-1;;;;;5913:448:50:o;6366:127::-;6427:10;6422:3;6418:20;6415:1;6408:31;6458:4;6455:1;6448:15;6482:4;6479:1;6472:15;6498:995;6575:6;6583;6636:2;6624:9;6615:7;6611:23;6607:32;6604:52;;;6652:1;6649;6642:12;6604:52;6675:29;6694:9;6675:29;:::i;:::-;6665:39;;6755:2;6744:9;6740:18;6727:32;6778:18;6819:2;6811:6;6808:14;6805:34;;;6835:1;6832;6825:12;6805:34;6873:6;6862:9;6858:22;6848:32;;6918:7;6911:4;6907:2;6903:13;6899:27;6889:55;;6940:1;6937;6930:12;6889:55;6976:2;6963:16;6998:2;6994;6991:10;6988:36;;;7004:18;;:::i;:::-;7079:2;7073:9;7047:2;7133:13;;-1:-1:-1;;7129:22:50;;;7153:2;7125:31;7121:40;7109:53;;;7177:18;;;7197:22;;;7174:46;7171:72;;;7223:18;;:::i;:::-;7263:10;7259:2;7252:22;7298:2;7290:6;7283:18;7338:7;7333:2;7328;7324;7320:11;7316:20;7313:33;7310:53;;;7359:1;7356;7349:12;7310:53;7415:2;7410;7406;7402:11;7397:2;7389:6;7385:15;7372:46;7460:1;7455:2;7450;7442:6;7438:15;7434:24;7427:35;7481:6;7471:16;;;;;;;6498:995;;;;;:::o;7498:408::-;-1:-1:-1;;;;;7729:6:50;7725:55;7714:9;7707:74;7817:2;7812;7801:9;7797:18;7790:30;7688:4;7837:63;7896:2;7885:9;7881:18;7873:6;7837:63;:::i;8155:127::-;8216:10;8211:3;8207:20;8204:1;8197:31;8247:4;8244:1;8237:15;8271:4;8268:1;8261:15;8287:208;-1:-1:-1;;;;;8431:10:50;;;8419;;;8415:27;;8454:12;;;8451:38;;;8469:18;;:::i;8500:127::-;8561:10;8556:3;8552:20;8549:1;8542:31;8592:4;8589:1;8582:15;8616:4;8613:1;8606:15;8632:234;8671:3;-1:-1:-1;;;;;8776:2:50;8769:5;8765:14;8803:2;8794:7;8791:15;8788:41;;8809:18;;:::i;:::-;8858:1;8845:15;;8632:234;-1:-1:-1;;;8632:234:50:o;9629:287::-;9758:3;9796:6;9790:13;9812:66;9871:6;9866:3;9859:4;9851:6;9847:17;9812:66;:::i;:::-;9894:16;;;;;9629:287;-1:-1:-1;;9629:287:50:o;10279:219::-;10428:2;10417:9;10410:21;10391:4;10448:44;10488:2;10477:9;10473:18;10465:6;10448:44;:::i"},"gasEstimates":{"creation":{"codeDepositCost":"651200","executionCost":"infinite","totalCost":"infinite"},"external":{"implementation()":"infinite","prepareInstallation(address,bytes)":"infinite","prepareUninstallation(address,(address,address[],bytes))":"infinite","prepareUpdate(address,uint16,(address,address[],bytes))":"624","protocolVersion()":"infinite","supportsInterface(bytes4)":"482"}},"methodIdentifiers":{"implementation()":"5c60da1b","prepareInstallation(address,bytes)":"f10832f1","prepareUninstallation(address,(address,address[],bytes))":"9cb0a124","prepareUpdate(address,uint16,(address,address[],bytes))":"a8a9c29e","protocolVersion()":"2ae9c600","supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ConflictingValues\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NonUpgradeablePlugin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_dao\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"prepareInstallation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"plugin\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address[]\",\"name\":\"helpers\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"enum PermissionLib.Operation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"condition\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PermissionLib.MultiTargetPermission[]\",\"name\":\"permissions\",\"type\":\"tuple[]\"}],\"internalType\":\"struct IPluginSetup.PreparedSetupData\",\"name\":\"preparedSetupData\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_dao\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"plugin\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"currentHelpers\",\"type\":\"address[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IPluginSetup.SetupPayload\",\"name\":\"_payload\",\"type\":\"tuple\"}],\"name\":\"prepareUninstallation\",\"outputs\":[{\"components\":[{\"internalType\":\"enum PermissionLib.Operation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"condition\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PermissionLib.MultiTargetPermission[]\",\"name\":\"permissions\",\"type\":\"tuple[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_dao\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"_fromBuild\",\"type\":\"uint16\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"plugin\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"currentHelpers\",\"type\":\"address[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IPluginSetup.SetupPayload\",\"name\":\"_payload\",\"type\":\"tuple\"}],\"name\":\"prepareUpdate\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address[]\",\"name\":\"helpers\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"enum PermissionLib.Operation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"condition\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PermissionLib.MultiTargetPermission[]\",\"name\":\"permissions\",\"type\":\"tuple[]\"}],\"internalType\":\"struct IPluginSetup.PreparedSetupData\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"protocolVersion\",\"outputs\":[{\"internalType\":\"uint8[3]\",\"name\":\"\",\"type\":\"uint8[3]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"DO NOT USE IN PRODUCTION!\",\"kind\":\"dev\",\"methods\":{\"implementation()\":{\"details\":\"The implementation can be instantiated via the `new` keyword, cloned via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)), or proxied via the UUPS proxy pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\",\"returns\":{\"_0\":\"The address of the plugin implementation contract.\"}},\"prepareInstallation(address,bytes)\":{\"params\":{\"_dao\":\"The address of the installing DAO.\",\"_data\":\"The bytes-encoded data containing the input parameters for the installation as specified in the plugin's build metadata JSON file.\"},\"returns\":{\"plugin\":\"The address of the `Plugin` contract being prepared for installation.\",\"preparedSetupData\":\"The deployed plugin's relevant data which consists of helpers and permissions.\"}},\"prepareUninstallation(address,(address,address[],bytes))\":{\"params\":{\"_dao\":\"The address of the uninstalling DAO.\",\"_payload\":\"The relevant data necessary for the `prepareUninstallation`. See above.\"},\"returns\":{\"permissions\":\"The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the uninstalling DAO.\"}},\"prepareUpdate(address,uint16,(address,address[],bytes))\":{\"details\":\"Since the underlying plugin is non-upgradeable, this non-virtual function must always revert.\",\"params\":{\"_dao\":\"The address of the updating DAO.\",\"_fromBuild\":\"The build number of the plugin to update from.\",\"_payload\":\"The relevant data necessary for the `prepareUpdate`. See above.\"},\"returns\":{\"_0\":\"The initialization data to be passed to upgradeable contracts when the update is applied in the `PluginSetupProcessor`.\",\"_1\":\"The deployed plugin's relevant data which consists of helpers and permissions.\"}},\"protocolVersion()\":{\"details\":\"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\",\"returns\":{\"_0\":\"Returns the semantic Aragon OSx protocol version number.\"}},\"supportsInterface(bytes4)\":{\"params\":{\"_interfaceId\":\"The ID of the interface.\"},\"returns\":{\"_0\":\"Returns `true` if the interface is supported.\"}}},\"version\":1},\"userdoc\":{\"errors\":{\"NonUpgradeablePlugin()\":[{\"notice\":\"Thrown when attempting to prepare an update on a non-upgradeable plugin.\"}]},\"kind\":\"user\",\"methods\":{\"implementation()\":{\"notice\":\"Returns the plugin implementation address.\"},\"prepareInstallation(address,bytes)\":{\"notice\":\"Prepares the installation of a plugin.\"},\"prepareUninstallation(address,(address,address[],bytes))\":{\"notice\":\"Prepares the uninstallation of a plugin.\"},\"prepareUpdate(address,uint16,(address,address[],bytes))\":{\"notice\":\"Prepares the update of a plugin.\"},\"protocolVersion()\":{\"notice\":\"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Checks if this or the parent contract supports an interface by its ID.\"}},\"notice\":\"A mock plugin setup of a cloneable plugin to be deployed via the minimal proxy pattern. v1.2 (Release 1, Build 2)\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/mocks/plugin/PluginCloneableSetupMock.sol\":\"PluginCloneableSetupMockBuild2\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n function __Context_init() internal onlyInitializing {\\n }\\n\\n function __Context_init_unchained() internal onlyInitializing {\\n }\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n function _contextSuffixLength() internal view virtual returns (uint256) {\\n return 0;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x75097e35253e7fb282ee4d7f27a80eaacfa759923185bf17302a89cbc059c5ef\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165Upgradeable.sol\\\";\\nimport {Initializable} from \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165Upgradeable is Initializable, IERC165Upgradeable {\\n function __ERC165_init() internal onlyInitializing {\\n }\\n\\n function __ERC165_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165Upgradeable).interfaceId;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0xd90d7723512df65ae417adaf0801042940f0dabd60039ceeaffe34aa5b238da1\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165Upgradeable {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/IERC1967.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (interfaces/IERC1967.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\\n *\\n * _Available since v4.8.3._\\n */\\ninterface IERC1967 {\\n /**\\n * @dev Emitted when the implementation is upgraded.\\n */\\n event Upgraded(address indexed implementation);\\n\\n /**\\n * @dev Emitted when the admin account has changed.\\n */\\n event AdminChanged(address previousAdmin, address newAdmin);\\n\\n /**\\n * @dev Emitted when the beacon is changed.\\n */\\n event BeaconUpgraded(address indexed beacon);\\n}\\n\",\"keccak256\":\"0x3cbef5ebc24b415252e2f8c0c9254555d30d9f085603b4b80d9b5ed20ab87e90\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822Proxiable {\\n /**\\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n * address.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy.\\n */\\n function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/Clones.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/Clones.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev https://eips.ethereum.org/EIPS/eip-1167[EIP 1167] is a standard for\\n * deploying minimal proxy contracts, also known as \\\"clones\\\".\\n *\\n * > To simply and cheaply clone contract functionality in an immutable way, this standard specifies\\n * > a minimal bytecode implementation that delegates all calls to a known, fixed address.\\n *\\n * The library includes functions to deploy a proxy using either `create` (traditional deployment) or `create2`\\n * (salted deterministic deployment). It also includes functions to predict the addresses of clones deployed using the\\n * deterministic method.\\n *\\n * _Available since v3.4._\\n */\\nlibrary Clones {\\n /**\\n * @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`.\\n *\\n * This function uses the create opcode, which should never revert.\\n */\\n function clone(address implementation) internal returns (address instance) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n // Cleans the upper 96 bits of the `implementation` word, then packs the first 3 bytes\\n // of the `implementation` address with the bytecode before the address.\\n mstore(0x00, or(shr(0xe8, shl(0x60, implementation)), 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000))\\n // Packs the remaining 17 bytes of `implementation` with the bytecode after the address.\\n mstore(0x20, or(shl(0x78, implementation), 0x5af43d82803e903d91602b57fd5bf3))\\n instance := create(0, 0x09, 0x37)\\n }\\n require(instance != address(0), \\\"ERC1167: create failed\\\");\\n }\\n\\n /**\\n * @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`.\\n *\\n * This function uses the create2 opcode and a `salt` to deterministically deploy\\n * the clone. Using the same `implementation` and `salt` multiple time will revert, since\\n * the clones cannot be deployed twice at the same address.\\n */\\n function cloneDeterministic(address implementation, bytes32 salt) internal returns (address instance) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n // Cleans the upper 96 bits of the `implementation` word, then packs the first 3 bytes\\n // of the `implementation` address with the bytecode before the address.\\n mstore(0x00, or(shr(0xe8, shl(0x60, implementation)), 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000))\\n // Packs the remaining 17 bytes of `implementation` with the bytecode after the address.\\n mstore(0x20, or(shl(0x78, implementation), 0x5af43d82803e903d91602b57fd5bf3))\\n instance := create2(0, 0x09, 0x37, salt)\\n }\\n require(instance != address(0), \\\"ERC1167: create2 failed\\\");\\n }\\n\\n /**\\n * @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}.\\n */\\n function predictDeterministicAddress(\\n address implementation,\\n bytes32 salt,\\n address deployer\\n ) internal pure returns (address predicted) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n let ptr := mload(0x40)\\n mstore(add(ptr, 0x38), deployer)\\n mstore(add(ptr, 0x24), 0x5af43d82803e903d91602b57fd5bf3ff)\\n mstore(add(ptr, 0x14), implementation)\\n mstore(ptr, 0x3d602d80600a3d3981f3363d3d373d3d3d363d73)\\n mstore(add(ptr, 0x58), salt)\\n mstore(add(ptr, 0x78), keccak256(add(ptr, 0x0c), 0x37))\\n predicted := keccak256(add(ptr, 0x43), 0x55)\\n }\\n }\\n\\n /**\\n * @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}.\\n */\\n function predictDeterministicAddress(\\n address implementation,\\n bytes32 salt\\n ) internal view returns (address predicted) {\\n return predictDeterministicAddress(implementation, salt, address(this));\\n }\\n}\\n\",\"keccak256\":\"0x01f055f5c26ba25d7f83e9aa9ba877fbea4d0bf22227de046ea67494bc932999\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (proxy/ERC1967/ERC1967Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../Proxy.sol\\\";\\nimport \\\"./ERC1967Upgrade.sol\\\";\\n\\n/**\\n * @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an\\n * implementation address that can be changed. This address is stored in storage in the location specified by\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the\\n * implementation behind the proxy.\\n */\\ncontract ERC1967Proxy is Proxy, ERC1967Upgrade {\\n /**\\n * @dev Initializes the upgradeable proxy with an initial implementation specified by `_logic`.\\n *\\n * If `_data` is nonempty, it's used as data in a delegate call to `_logic`. This will typically be an encoded\\n * function call, and allows initializing the storage of the proxy like a Solidity constructor.\\n */\\n constructor(address _logic, bytes memory _data) payable {\\n _upgradeToAndCall(_logic, _data, false);\\n }\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _implementation() internal view virtual override returns (address impl) {\\n return ERC1967Upgrade._getImplementation();\\n }\\n}\\n\",\"keccak256\":\"0xa2b22da3032e50b55f95ec1d13336102d675f341167aa76db571ef7f8bb7975d\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../beacon/IBeacon.sol\\\";\\nimport \\\"../../interfaces/IERC1967.sol\\\";\\nimport \\\"../../interfaces/draft-IERC1822.sol\\\";\\nimport \\\"../../utils/Address.sol\\\";\\nimport \\\"../../utils/StorageSlot.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n */\\nabstract contract ERC1967Upgrade is IERC1967 {\\n // This is the keccak-256 hash of \\\"eip1967.proxy.rollback\\\" subtracted by 1\\n bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n /**\\n * @dev Storage slot with the address of the current implementation.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _getImplementation() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 implementation slot.\\n */\\n function _setImplementation(address newImplementation) private {\\n require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n }\\n\\n /**\\n * @dev Perform implementation upgrade\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeTo(address newImplementation) internal {\\n _setImplementation(newImplementation);\\n emit Upgraded(newImplementation);\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCall(address newImplementation, bytes memory data, bool forceCall) internal {\\n _upgradeTo(newImplementation);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(newImplementation, data);\\n }\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCallUUPS(address newImplementation, bytes memory data, bool forceCall) internal {\\n // Upgrades from old implementations will perform a rollback test. This test requires the new\\n // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n // this special case will break upgrade paths from old UUPS implementation to new ones.\\n if (StorageSlot.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n _setImplementation(newImplementation);\\n } else {\\n try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n require(slot == _IMPLEMENTATION_SLOT, \\\"ERC1967Upgrade: unsupported proxiableUUID\\\");\\n } catch {\\n revert(\\\"ERC1967Upgrade: new implementation is not UUPS\\\");\\n }\\n _upgradeToAndCall(newImplementation, data, forceCall);\\n }\\n }\\n\\n /**\\n * @dev Storage slot with the admin of the contract.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _getAdmin() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_ADMIN_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 admin slot.\\n */\\n function _setAdmin(address newAdmin) private {\\n require(newAdmin != address(0), \\\"ERC1967: new admin is the zero address\\\");\\n StorageSlot.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n */\\n function _changeAdmin(address newAdmin) internal {\\n emit AdminChanged(_getAdmin(), newAdmin);\\n _setAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\\n */\\n bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n /**\\n * @dev Returns the current beacon.\\n */\\n function _getBeacon() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_BEACON_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new beacon in the EIP1967 beacon slot.\\n */\\n function _setBeacon(address newBeacon) private {\\n require(Address.isContract(newBeacon), \\\"ERC1967: new beacon is not a contract\\\");\\n require(\\n Address.isContract(IBeacon(newBeacon).implementation()),\\n \\\"ERC1967: beacon implementation is not a contract\\\"\\n );\\n StorageSlot.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n }\\n\\n /**\\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n *\\n * Emits a {BeaconUpgraded} event.\\n */\\n function _upgradeBeaconToAndCall(address newBeacon, bytes memory data, bool forceCall) internal {\\n _setBeacon(newBeacon);\\n emit BeaconUpgraded(newBeacon);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x3b21ae06bf5957f73fa16754b0669c77b7abd8ba6c072d35c3281d446fdb86c2\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (proxy/Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\\n * be specified by overriding the virtual {_implementation} function.\\n *\\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\\n * different contract through the {_delegate} function.\\n *\\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\\n */\\nabstract contract Proxy {\\n /**\\n * @dev Delegates the current call to `implementation`.\\n *\\n * This function does not return to its internal call site, it will return directly to the external caller.\\n */\\n function _delegate(address implementation) internal virtual {\\n assembly {\\n // Copy msg.data. We take full control of memory in this inline assembly\\n // block because it will not return to Solidity code. We overwrite the\\n // Solidity scratch pad at memory position 0.\\n calldatacopy(0, 0, calldatasize())\\n\\n // Call the implementation.\\n // out and outsize are 0 because we don't know the size yet.\\n let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)\\n\\n // Copy the returned data.\\n returndatacopy(0, 0, returndatasize())\\n\\n switch result\\n // delegatecall returns 0 on error.\\n case 0 {\\n revert(0, returndatasize())\\n }\\n default {\\n return(0, returndatasize())\\n }\\n }\\n }\\n\\n /**\\n * @dev This is a virtual function that should be overridden so it returns the address to which the fallback function\\n * and {_fallback} should delegate.\\n */\\n function _implementation() internal view virtual returns (address);\\n\\n /**\\n * @dev Delegates the current call to the address returned by `_implementation()`.\\n *\\n * This function does not return to its internal call site, it will return directly to the external caller.\\n */\\n function _fallback() internal virtual {\\n _beforeFallback();\\n _delegate(_implementation());\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\\n * function in the contract matches the call data.\\n */\\n fallback() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data\\n * is empty.\\n */\\n receive() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`\\n * call, or as part of the Solidity `fallback` or `receive` functions.\\n *\\n * If overridden should call `super._beforeFallback()`.\\n */\\n function _beforeFallback() internal virtual {}\\n}\\n\",\"keccak256\":\"0xc130fe33f1b2132158531a87734153293f6d07bc263ff4ac90e85da9c82c0e27\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeacon {\\n /**\\n * @dev Must return an address that can be used as a delegate call target.\\n *\\n * {BeaconProxy} will check that this address is a contract.\\n */\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/StorageSlot.sol)\\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```solidity\\n * contract ERC1967 {\\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n * function _getImplementation() internal view returns (address) {\\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n * }\\n *\\n * function _setImplementation(address newImplementation) internal {\\n * require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n * }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._\\n * _Available since v4.9 for `string`, `bytes`._\\n */\\nlibrary StorageSlot {\\n struct AddressSlot {\\n address value;\\n }\\n\\n struct BooleanSlot {\\n bool value;\\n }\\n\\n struct Bytes32Slot {\\n bytes32 value;\\n }\\n\\n struct Uint256Slot {\\n uint256 value;\\n }\\n\\n struct StringSlot {\\n string value;\\n }\\n\\n struct BytesSlot {\\n bytes value;\\n }\\n\\n /**\\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n */\\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n */\\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n */\\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n */\\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` with member `value` located at `slot`.\\n */\\n function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\\n */\\n function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` with member `value` located at `slot`.\\n */\\n function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\\n */\\n function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n}\\n\",\"keccak256\":\"0xf09e68aa0dc6722a25bc46490e8d48ed864466d17313b8a0b254c36b54e49899\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165 is IERC165 {\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165).interfaceId;\\n }\\n}\\n\",\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"src/dao/IDAO.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IDAO\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for DAOs within the Aragon App DAO framework.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IDAO {\\n /// @notice The action struct to be consumed by the DAO's `execute` function resulting in an external call.\\n /// @param to The address to call.\\n /// @param value The native token value to be sent with the call.\\n /// @param data The bytes-encoded function selector and calldata for the call.\\n struct Action {\\n address to;\\n uint256 value;\\n bytes data;\\n }\\n\\n /// @notice Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\\n /// @param _where The address of the contract.\\n /// @param _who The address of a EOA or contract to give the permissions.\\n /// @param _permissionId The permission identifier.\\n /// @param _data The optional data passed to the `PermissionCondition` registered.\\n /// @return Returns true if the address has permission, false if not.\\n function hasPermission(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes memory _data\\n ) external view returns (bool);\\n\\n /// @notice Updates the DAO metadata (e.g., an IPFS hash).\\n /// @param _metadata The IPFS hash of the new metadata object.\\n function setMetadata(bytes calldata _metadata) external;\\n\\n /// @notice Emitted when the DAO metadata is updated.\\n /// @param metadata The IPFS hash of the new metadata object.\\n event MetadataSet(bytes metadata);\\n\\n /// @notice Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted.\\n /// @param _callId The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce.\\n /// @param _actions The array of actions.\\n /// @param _allowFailureMap A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @return The array of results obtained from the executed actions in `bytes`.\\n /// @return The resulting failure map containing the actions have actually failed.\\n function execute(\\n bytes32 _callId,\\n Action[] memory _actions,\\n uint256 _allowFailureMap\\n ) external returns (bytes[] memory, uint256);\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param actor The address of the caller.\\n /// @param callId The ID of the call.\\n /// @param actions The array of actions executed.\\n /// @param allowFailureMap The allow failure map encoding which actions are allowed to fail.\\n /// @param failureMap The failure map encoding which actions have failed.\\n /// @param execResults The array with the results of the executed actions.\\n /// @dev The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce.\\n event Executed(\\n address indexed actor,\\n bytes32 callId,\\n Action[] actions,\\n uint256 allowFailureMap,\\n uint256 failureMap,\\n bytes[] execResults\\n );\\n\\n /// @notice Emitted when a standard callback is registered.\\n /// @param interfaceId The ID of the interface.\\n /// @param callbackSelector The selector of the callback function.\\n /// @param magicNumber The magic number to be registered for the callback function selector.\\n event StandardCallbackRegistered(\\n bytes4 interfaceId,\\n bytes4 callbackSelector,\\n bytes4 magicNumber\\n );\\n\\n /// @notice Deposits (native) tokens to the DAO contract with a reference string.\\n /// @param _token The address of the token or address(0) in case of the native token.\\n /// @param _amount The amount of tokens to deposit.\\n /// @param _reference The reference describing the deposit reason.\\n function deposit(address _token, uint256 _amount, string calldata _reference) external payable;\\n\\n /// @notice Emitted when a token deposit has been made to the DAO.\\n /// @param sender The address of the sender.\\n /// @param token The address of the deposited token.\\n /// @param amount The amount of tokens deposited.\\n /// @param _reference The reference describing the deposit reason.\\n event Deposited(\\n address indexed sender,\\n address indexed token,\\n uint256 amount,\\n string _reference\\n );\\n\\n /// @notice Emitted when a native token deposit has been made to the DAO.\\n /// @dev This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).\\n /// @param sender The address of the sender.\\n /// @param amount The amount of native tokens deposited.\\n event NativeTokenDeposited(address sender, uint256 amount);\\n\\n /// @notice Setter for the trusted forwarder verifying the meta transaction.\\n /// @param _trustedForwarder The trusted forwarder address.\\n function setTrustedForwarder(address _trustedForwarder) external;\\n\\n /// @notice Getter for the trusted forwarder verifying the meta transaction.\\n /// @return The trusted forwarder address.\\n function getTrustedForwarder() external view returns (address);\\n\\n /// @notice Emitted when a new TrustedForwarder is set on the DAO.\\n /// @param forwarder the new forwarder address.\\n event TrustedForwarderSet(address forwarder);\\n\\n /// @notice Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\\n /// @param _hash The hash of the data to be signed.\\n /// @param _signature The signature byte array associated with `_hash`.\\n /// @return Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not.\\n function isValidSignature(bytes32 _hash, bytes memory _signature) external returns (bytes4);\\n\\n /// @notice Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\\n /// @param _interfaceId The ID of the interface.\\n /// @param _callbackSelector The selector of the callback function.\\n /// @param _magicNumber The magic number to be registered for the function signature.\\n function registerStandardCallback(\\n bytes4 _interfaceId,\\n bytes4 _callbackSelector,\\n bytes4 _magicNumber\\n ) external;\\n\\n /// @notice Removed function being left here to not corrupt the IDAO interface ID. Any call will revert.\\n /// @dev Introduced in v1.0.0. Removed in v1.4.0.\\n function setSignatureValidator(address) external;\\n}\\n\",\"keccak256\":\"0xb7f615523c26de042edce98731c658f44a1edb2464387ac1b642c4c69f57128e\",\"license\":\"AGPL-3.0-or-later\"},\"src/mocks/plugin/PluginCloneableMock.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\n/* solhint-disable one-contract-per-file */\\npragma solidity ^0.8.8;\\n\\nimport {PluginCloneable} from \\\"../../plugin/PluginCloneable.sol\\\";\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice A mock cloneable plugin to be deployed via the minimal proxy pattern.\\n/// v1.1 (Release 1, Build 1)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginCloneableMockBuild1 is PluginCloneable {\\n uint256 public state1;\\n\\n function initialize(IDAO _dao) external initializer {\\n __PluginCloneable_init(_dao);\\n state1 = 1;\\n }\\n}\\n\\n/// @notice A mock cloneable plugin to be deployed via the minimal proxy pattern.\\n/// v1.1 (Release 1, Build 2)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginCloneableMockBuild2 is PluginCloneable {\\n uint256 public state1;\\n uint256 public state2;\\n\\n function initialize(IDAO _dao) external initializer {\\n __PluginCloneable_init(_dao);\\n state1 = 1;\\n state2 = 2;\\n }\\n}\\n\\n/// @notice A mock cloneable plugin missing an initializer function.\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginCloneableMockBad is PluginCloneable {\\n uint256 public state1;\\n\\n function notAnInitializer(IDAO _dao) external {\\n __PluginCloneable_init(_dao);\\n state1 = 1;\\n }\\n}\\n\",\"keccak256\":\"0x1bb271f7b553040fad7907e97b860aa833aec9aefe7477e00ba7bdfd80d84e98\",\"license\":\"AGPL-3.0-or-later\"},\"src/mocks/plugin/PluginCloneableSetupMock.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\n/* solhint-disable one-contract-per-file */\\npragma solidity ^0.8.8;\\n\\nimport {PermissionLib} from \\\"../../permission/PermissionLib.sol\\\";\\nimport {IPluginSetup} from \\\"../../plugin/setup/IPluginSetup.sol\\\";\\nimport {PluginSetup} from \\\"../../plugin/setup/PluginSetup.sol\\\";\\nimport {ProxyLib} from \\\"../../utils/deployment/ProxyLib.sol\\\";\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\nimport {mockPermissions, mockHelpers} from \\\"./PluginSetupMockData.sol\\\";\\nimport {PluginCloneableMockBuild1, PluginCloneableMockBuild2} from \\\"./PluginCloneableMock.sol\\\";\\n\\n/// @notice A mock plugin setup of a cloneable plugin to be deployed via the minimal proxy pattern.\\n/// v1.1 (Release 1, Build 1)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginCloneableSetupMockBuild1 is PluginSetup {\\n using ProxyLib for address;\\n\\n uint16 internal constant THIS_BUILD = 1;\\n\\n constructor() PluginSetup(address(new PluginCloneableMockBuild1())) {}\\n\\n /// @inheritdoc IPluginSetup\\n function prepareInstallation(\\n address _dao,\\n bytes memory\\n ) external returns (address plugin, PreparedSetupData memory preparedSetupData) {\\n bytes memory initData = abi.encodeCall(PluginCloneableMockBuild1.initialize, (IDAO(_dao)));\\n plugin = implementation().deployMinimalProxy(initData);\\n preparedSetupData.helpers = mockHelpers(THIS_BUILD);\\n preparedSetupData.permissions = mockPermissions(\\n 0,\\n THIS_BUILD,\\n PermissionLib.Operation.Grant\\n );\\n }\\n\\n /// @inheritdoc IPluginSetup\\n function prepareUninstallation(\\n address _dao,\\n SetupPayload calldata _payload\\n ) external pure returns (PermissionLib.MultiTargetPermission[] memory permissions) {\\n (_dao, _payload);\\n permissions = mockPermissions(0, THIS_BUILD, PermissionLib.Operation.Revoke);\\n }\\n}\\n\\n/// @notice A mock plugin setup of a cloneable plugin to be deployed via the minimal proxy pattern.\\n/// v1.2 (Release 1, Build 2)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginCloneableSetupMockBuild2 is PluginSetup {\\n using ProxyLib for address;\\n\\n uint16 internal constant THIS_BUILD = 2;\\n\\n constructor() PluginSetup(address(new PluginCloneableMockBuild2())) {}\\n\\n /// @inheritdoc IPluginSetup\\n function prepareInstallation(\\n address _dao,\\n bytes memory\\n ) external returns (address plugin, PreparedSetupData memory preparedSetupData) {\\n bytes memory initData = abi.encodeCall(PluginCloneableMockBuild2.initialize, (IDAO(_dao)));\\n plugin = implementation().deployMinimalProxy(initData);\\n preparedSetupData.helpers = mockHelpers(THIS_BUILD);\\n preparedSetupData.permissions = mockPermissions(\\n 0,\\n THIS_BUILD,\\n PermissionLib.Operation.Grant\\n );\\n }\\n\\n /// @inheritdoc IPluginSetup\\n function prepareUninstallation(\\n address _dao,\\n SetupPayload calldata _payload\\n ) external pure returns (PermissionLib.MultiTargetPermission[] memory permissions) {\\n (_dao, _payload);\\n permissions = mockPermissions(0, THIS_BUILD, PermissionLib.Operation.Revoke);\\n }\\n}\\n\",\"keccak256\":\"0xfac0ce75e9d665bc9e2900c5cfa3f2667e0ea73573c4f46147453c6582eac1de\",\"license\":\"AGPL-3.0-or-later\"},\"src/mocks/plugin/PluginSetupMockData.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {PermissionLib} from \\\"../../permission/PermissionLib.sol\\\";\\n\\naddress constant NO_CONDITION = address(0);\\n\\nerror ConflictingValues();\\n\\n/// @notice Creates a mock `MultiTargetPermission` array by converting a range of `uint160` values into `address` values.\\n/// @param rangeStart The start of the range.\\n/// @param rangeEnd The end of the range (that is not included).\\n/// @param op The permission operation type.\\n/// @return permissions The mock array of permissions.\\n/// @dev DO NOT USE IN PRODUCTION!\\nfunction mockPermissions(\\n uint160 rangeStart,\\n uint160 rangeEnd,\\n PermissionLib.Operation op\\n) pure returns (PermissionLib.MultiTargetPermission[] memory permissions) {\\n if (rangeStart > rangeEnd) revert ConflictingValues();\\n\\n permissions = new PermissionLib.MultiTargetPermission[](rangeEnd - rangeStart);\\n\\n for (uint160 i = rangeStart; i < rangeEnd; i++) {\\n permissions[i - rangeStart] = PermissionLib.MultiTargetPermission({\\n operation: op,\\n where: address(i),\\n who: address(i),\\n condition: PermissionLib.NO_CONDITION,\\n permissionId: keccak256(\\\"MOCK_PERMISSION\\\")\\n });\\n }\\n}\\n\\n/// @notice Creates a mock array of helper addresses of specified length by converting `uint160` values starting from 0 into `address` values.\\n/// @param len The length of the helper array.\\n/// @return helpers The mock array of helper addresses.\\n/// @dev DO NOT USE IN PRODUCTION!\\nfunction mockHelpers(uint160 len) pure returns (address[] memory helpers) {\\n helpers = new address[](len);\\n\\n for (uint160 i = 0; i < len; i++) {\\n helpers[i] = address(i);\\n }\\n}\\n\",\"keccak256\":\"0x529d1b7ea4c348fe18edf81a044792ca8aa1f6ad9a7d2edfd35e38bf8372abf9\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/PermissionLib.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title PermissionLib\\n/// @author Aragon X - 2021-2023\\n/// @notice A library containing objects for permission processing.\\n/// @custom:security-contact sirt@aragon.org\\nlibrary PermissionLib {\\n /// @notice A constant expressing that no condition is applied to a permission.\\n address public constant NO_CONDITION = address(0);\\n\\n /// @notice The types of permission operations available in the `PermissionManager`.\\n /// @param Grant The grant operation setting a permission without a condition.\\n /// @param Revoke The revoke operation removing a permission (that was granted with or without a condition).\\n /// @param GrantWithCondition The grant operation setting a permission with a condition.\\n enum Operation {\\n Grant,\\n Revoke,\\n GrantWithCondition\\n }\\n\\n /// @notice A struct containing the information for a permission to be applied on a single target contract without a condition.\\n /// @param operation The permission operation type.\\n /// @param who The address (EOA or contract) receiving the permission.\\n /// @param permissionId The permission identifier.\\n struct SingleTargetPermission {\\n Operation operation;\\n address who;\\n bytes32 permissionId;\\n }\\n\\n /// @notice A struct containing the information for a permission to be applied on multiple target contracts, optionally, with a condition.\\n /// @param operation The permission operation type.\\n /// @param where The address of the target contract for which `who` receives permission.\\n /// @param who The address (EOA or contract) receiving the permission.\\n /// @param condition The `PermissionCondition` that will be asked for authorization on calls connected to the specified permission identifier.\\n /// @param permissionId The permission identifier.\\n struct MultiTargetPermission {\\n Operation operation;\\n address where;\\n address who;\\n address condition;\\n bytes32 permissionId;\\n }\\n}\\n\",\"keccak256\":\"0x470faf3c4891ebc6420ef6cc09f6098917568ccc79268c90954d1478199b6097\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/DaoAuthorizableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ContextUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\\\";\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\nimport {_auth} from \\\"./auth.sol\\\";\\n\\n/// @title DaoAuthorizableUpgradeable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract contract providing a meta-transaction compatible modifier for upgradeable or cloneable contracts to authorize function calls through an associated DAO.\\n/// @dev Make sure to call `__DaoAuthorizableUpgradeable_init` during initialization of the inheriting contract.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract DaoAuthorizableUpgradeable is ContextUpgradeable {\\n /// @notice The associated DAO managing the permissions of inheriting contracts.\\n IDAO private dao_;\\n\\n /// @notice Initializes the contract by setting the associated DAO.\\n /// @param _dao The associated DAO address.\\n // solhint-disable-next-line func-name-mixedcase\\n function __DaoAuthorizableUpgradeable_init(IDAO _dao) internal onlyInitializing {\\n dao_ = _dao;\\n }\\n\\n /// @notice Returns the DAO contract.\\n /// @return The DAO contract.\\n function dao() public view returns (IDAO) {\\n return dao_;\\n }\\n\\n /// @notice A modifier to make functions on inheriting contracts authorized. Permissions to call the function are checked through the associated DAO's permission manager.\\n /// @param _permissionId The permission identifier required to call the method this modifier is applied to.\\n modifier auth(bytes32 _permissionId) {\\n _auth(dao_, address(this), _msgSender(), _permissionId, _msgData());\\n _;\\n }\\n\\n /// @notice This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain (see [OpenZeppelin's guide about storage gaps](https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps)).\\n uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0x7fac6b01b037ba1cb9d6a22d3f43b0785037dcf496ffb672434d9bf7227d2585\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/auth.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice Thrown if a call is unauthorized in the associated DAO.\\n/// @param dao The associated DAO.\\n/// @param where The context in which the authorization reverted.\\n/// @param who The address (EOA or contract) missing the permission.\\n/// @param permissionId The permission identifier.\\nerror DaoUnauthorized(address dao, address where, address who, bytes32 permissionId);\\n\\n/// @notice A free function checking if a caller is granted permissions on a target contract via a permission identifier that redirects the approval to a `PermissionCondition` if this was specified in the setup.\\n/// @param _where The address of the target contract for which `who` receives permission.\\n/// @param _who The address (EOA or contract) owning the permission.\\n/// @param _permissionId The permission identifier.\\n/// @param _data The optional data passed to the `PermissionCondition` registered.\\n/// @custom:security-contact sirt@aragon.org\\nfunction _auth(\\n IDAO _dao,\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes calldata _data\\n) view {\\n if (!_dao.hasPermission(_where, _who, _permissionId, _data))\\n revert DaoUnauthorized({\\n dao: address(_dao),\\n where: _where,\\n who: _who,\\n permissionId: _permissionId\\n });\\n}\\n\",\"keccak256\":\"0x878764b4f87fe0651fb3798fb9cb87c952f8c6caf6ae79c7f09de84df6c00298\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/IPlugin.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IPlugin\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the traits of a plugin.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IPlugin {\\n enum PluginType {\\n UUPS,\\n Cloneable,\\n Constructable\\n }\\n\\n /// @notice Returns the plugin's type\\n function pluginType() external view returns (PluginType);\\n}\\n\",\"keccak256\":\"0xc57cd0d10b6380ab7f54c713a509e88fd8f4ad9288313a0e8e12b8887817ddfe\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/PluginCloneable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ERC165Upgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\\\";\\n\\nimport {IProtocolVersion} from \\\"../utils/versioning/IProtocolVersion.sol\\\";\\nimport {ProtocolVersion} from \\\"../utils/versioning/ProtocolVersion.sol\\\";\\nimport {DaoAuthorizableUpgradeable} from \\\"../permission/auth/DaoAuthorizableUpgradeable.sol\\\";\\nimport {IDAO} from \\\"../dao/IDAO.sol\\\";\\nimport {IPlugin} from \\\"./IPlugin.sol\\\";\\n\\n/// @title PluginCloneable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract, non-upgradeable contract to inherit from when creating a plugin being deployed via the minimal clones pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)).\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract PluginCloneable is\\n IPlugin,\\n ERC165Upgradeable,\\n DaoAuthorizableUpgradeable,\\n ProtocolVersion\\n{\\n address public target;\\n\\n /// @dev Emitted each time the Target is set.\\n event TargetSet(address indexed previousTarget, address indexed newTarget);\\n\\n /// @notice Disables the initializers on the implementation contract to prevent it from being left uninitialized.\\n /// @custom:oz-upgrades-unsafe-allow constructor\\n constructor() {\\n _disableInitializers();\\n }\\n\\n /// @notice Initializes the plugin by storing the associated DAO.\\n /// @param _dao The DAO contract.\\n // solhint-disable-next-line func-name-mixedcase\\n function __PluginCloneable_init(IDAO _dao) internal virtual onlyInitializing {\\n __DaoAuthorizableUpgradeable_init(_dao);\\n }\\n\\n /// @dev Sets the target to a new target (`newTarget`).\\n /// @notice Can only be called by the current owner. TODO\\n function setTarget(address _target) public {\\n address previousTarget = target;\\n target = _target;\\n emit TargetSet(previousTarget, _target);\\n }\\n\\n /// @inheritdoc IPlugin\\n function pluginType() public pure override returns (PluginType) {\\n return PluginType.Cloneable;\\n }\\n\\n /// @notice Checks if this or the parent contract supports an interface by its ID.\\n /// @param _interfaceId The ID of the interface.\\n /// @return Returns `true` if the interface is supported.\\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\\n return\\n _interfaceId == type(IPlugin).interfaceId ||\\n _interfaceId == type(IProtocolVersion).interfaceId ||\\n super.supportsInterface(_interfaceId);\\n }\\n\\n /// @notice Forwards the actions to the currently set `target` for the execution.\\n /// @param _callId Identifier for this execution.\\n /// @param _actions actions that will be eventually called.\\n /// @param _allowFailureMap Bitmap-encoded number. TODO:\\n /// @return execResults address of the implementation contract.\\n /// @return failureMap address of the implementation contract.\\n function _execute(\\n bytes32 _callId,\\n IDAO.Action[] calldata _actions,\\n uint256 _allowFailureMap\\n ) internal virtual returns (bytes[] memory execResults, uint256 failureMap) {\\n (execResults, failureMap) = IDAO(target).execute(_callId, _actions, _allowFailureMap);\\n }\\n\\n /// @notice Forwards the actions to the `target` for the execution.\\n /// @param _target Forwards the actions to the specific target.\\n /// @param _callId Identifier for this execution.\\n /// @param _actions actions that will be eventually called.\\n /// @param _allowFailureMap Bitmap-encoded number. TODO:\\n /// @return execResults address of the implementation contract.\\n /// @return failureMap address of the implementation contract.\\n function _execute(\\n address _target,\\n bytes32 _callId,\\n IDAO.Action[] calldata _actions,\\n uint256 _allowFailureMap\\n ) internal virtual returns (bytes[] memory execResults, uint256 failureMap) {\\n (execResults, failureMap) = IDAO(_target).execute(_callId, _actions, _allowFailureMap);\\n }\\n}\\n\",\"keccak256\":\"0x23fff653e79f6d079073bab2f878051cf85c8e3cfa7ef359f3be92fc65ca2501\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/setup/IPluginSetup.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {PermissionLib} from \\\"../../permission/PermissionLib.sol\\\";\\n\\n// solhint-disable-next-line no-unused-import\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @title IPluginSetup\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for a plugin setup contract to be consumed by the `PluginSetupProcessor` for plugin installations, updates, and uninstallations.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IPluginSetup {\\n /// @notice The data associated with a prepared setup.\\n /// @param helpers The address array of helpers (contracts or EOAs) associated with this plugin version after the installation or update.\\n /// @param permissions The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the installing or updating DAO.\\n struct PreparedSetupData {\\n address[] helpers;\\n PermissionLib.MultiTargetPermission[] permissions;\\n }\\n\\n /// @notice The payload for plugin updates and uninstallations containing the existing contracts as well as optional data to be consumed by the plugin setup.\\n /// @param plugin The address of the `Plugin`.\\n /// @param currentHelpers The address array of all current helpers (contracts or EOAs) associated with the plugin to update from.\\n /// @param data The bytes-encoded data containing the input parameters for the preparation of update/uninstall as specified in the corresponding ABI on the version's metadata.\\n struct SetupPayload {\\n address plugin;\\n address[] currentHelpers;\\n bytes data;\\n }\\n\\n /// @notice Prepares the installation of a plugin.\\n /// @param _dao The address of the installing DAO.\\n /// @param _data The bytes-encoded data containing the input parameters for the installation as specified in the plugin's build metadata JSON file.\\n /// @return plugin The address of the `Plugin` contract being prepared for installation.\\n /// @return preparedSetupData The deployed plugin's relevant data which consists of helpers and permissions.\\n function prepareInstallation(\\n address _dao,\\n bytes calldata _data\\n ) external returns (address plugin, PreparedSetupData memory preparedSetupData);\\n\\n /// @notice Prepares the update of a plugin.\\n /// @param _dao The address of the updating DAO.\\n /// @param _fromBuild The build number of the plugin to update from.\\n /// @param _payload The relevant data necessary for the `prepareUpdate`. See above.\\n /// @return initData The initialization data to be passed to upgradeable contracts when the update is applied in the `PluginSetupProcessor`.\\n /// @return preparedSetupData The deployed plugin's relevant data which consists of helpers and permissions.\\n function prepareUpdate(\\n address _dao,\\n uint16 _fromBuild,\\n SetupPayload calldata _payload\\n ) external returns (bytes memory initData, PreparedSetupData memory preparedSetupData);\\n\\n /// @notice Prepares the uninstallation of a plugin.\\n /// @param _dao The address of the uninstalling DAO.\\n /// @param _payload The relevant data necessary for the `prepareUninstallation`. See above.\\n /// @return permissions The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the uninstalling DAO.\\n function prepareUninstallation(\\n address _dao,\\n SetupPayload calldata _payload\\n ) external returns (PermissionLib.MultiTargetPermission[] memory permissions);\\n\\n /// @notice Returns the plugin implementation address.\\n /// @return The address of the plugin implementation contract.\\n /// @dev The implementation can be instantiated via the `new` keyword, cloned via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)), or proxied via the UUPS proxy pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0x21c99995208039ac6ace219b6f273243811dc2aa66399e8e499e43ec30b82fa9\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/setup/PluginSetup.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ERC165} from \\\"@openzeppelin/contracts/utils/introspection/ERC165.sol\\\";\\n\\nimport {IProtocolVersion} from \\\"../../utils/versioning/IProtocolVersion.sol\\\";\\nimport {ProtocolVersion} from \\\"../../utils/versioning/ProtocolVersion.sol\\\";\\nimport {IPluginSetup} from \\\"./IPluginSetup.sol\\\";\\n\\n/// @title PluginSetup\\n/// @author Aragon X - 2022-2024\\n/// @notice An abstract contract to inherit from to implement the plugin setup for non-upgradeable plugins, i.e,\\n/// - `Plugin` being deployed via the `new` keyword\\n/// - `PluginCloneable` being deployed via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)).\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract PluginSetup is ERC165, IPluginSetup, ProtocolVersion {\\n /// @notice The address of the plugin implementation contract for initial block explorer verification and, in the case of `PluginClonable` implementations, to create [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167) clones from.\\n address internal immutable IMPLEMENTATION;\\n\\n /// @notice Thrown when attempting to prepare an update on a non-upgradeable plugin.\\n error NonUpgradeablePlugin();\\n\\n /// @notice The contract constructor, that setting the plugin implementation contract.\\n /// @param _implementation The address of the plugin implementation contract.\\n constructor(address _implementation) {\\n IMPLEMENTATION = _implementation;\\n }\\n\\n /// @inheritdoc IPluginSetup\\n /// @dev Since the underlying plugin is non-upgradeable, this non-virtual function must always revert.\\n function prepareUpdate(\\n address _dao,\\n uint16 _fromBuild,\\n SetupPayload calldata _payload\\n ) external pure returns (bytes memory, PreparedSetupData memory) {\\n (_dao, _fromBuild, _payload);\\n revert NonUpgradeablePlugin();\\n }\\n\\n /// @notice Checks if this or the parent contract supports an interface by its ID.\\n /// @param _interfaceId The ID of the interface.\\n /// @return Returns `true` if the interface is supported.\\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\\n return\\n _interfaceId == type(IPluginSetup).interfaceId ||\\n _interfaceId == type(IProtocolVersion).interfaceId ||\\n super.supportsInterface(_interfaceId);\\n }\\n\\n /// @inheritdoc IPluginSetup\\n function implementation() public view returns (address) {\\n return IMPLEMENTATION;\\n }\\n}\\n\",\"keccak256\":\"0x93044f8080758c5cf8d621e3614b8150f55572a1770880106a49dfa53784a9d2\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/deployment/ProxyLib.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ERC1967Proxy} from \\\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol\\\";\\nimport {Clones} from \\\"@openzeppelin/contracts/proxy/Clones.sol\\\";\\nimport {Address} from \\\"@openzeppelin/contracts/utils/Address.sol\\\";\\n\\n/// @title ProxyLib\\n/// @author Aragon X - 2024\\n/// @notice A library containing methods for the deployment of proxies via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)) and minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)).\\n/// @custom:security-contact sirt@aragon.org\\nlibrary ProxyLib {\\n using Address for address;\\n using Clones for address;\\n\\n /// @notice Creates an [ERC-1967](https://eips.ethereum.org/EIPS/eip-1967) UUPS proxy contract pointing to a logic contract and allows to immediately initialize it.\\n /// @param _logic The logic contract the proxy is pointing to.\\n /// @param _initCalldata The initialization data for this contract.\\n /// @return uupsProxy The address of the UUPS proxy contract created.\\n /// @dev If `_initCalldata` is non-empty, it is used in a delegate call to the `_logic` contract. This will typically be an encoded function call initializing the storage of the proxy (see [OpenZeppelin ERC1967Proxy-constructor](https://docs.openzeppelin.com/contracts/4.x/api/proxy#ERC1967Proxy-constructor-address-bytes-)).\\n function deployUUPSProxy(\\n address _logic,\\n bytes memory _initCalldata\\n ) internal returns (address uupsProxy) {\\n uupsProxy = address(new ERC1967Proxy({_logic: _logic, _data: _initCalldata}));\\n }\\n\\n /// @notice Creates an [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167) minimal proxy contract, also known as clones, pointing to a logic contract and allows to immediately initialize it.\\n /// @param _logic The logic contract the proxy is pointing to.\\n /// @param _initCalldata The initialization data for this contract.\\n /// @return minimalProxy The address of the minimal proxy contract created.\\n /// @dev If `_initCalldata` is non-empty, it is used in a call to the clone contract. This will typically be an encoded function call initializing the storage of the contract.\\n function deployMinimalProxy(\\n address _logic,\\n bytes memory _initCalldata\\n ) internal returns (address minimalProxy) {\\n minimalProxy = _logic.clone();\\n if (_initCalldata.length > 0) {\\n minimalProxy.functionCall({data: _initCalldata});\\n }\\n }\\n}\\n\",\"keccak256\":\"0xef0d1790dfa026381c021daa2ec7267357497f58cd4a2fa5c64e72e0dea95acc\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/IProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IProtocolVersion\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the semantic Aragon OSx protocol version number.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IProtocolVersion {\\n /// @notice Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\\n /// @return _version Returns the semantic Aragon OSx protocol version number.\\n /// @dev This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\\n function protocolVersion() external view returns (uint8[3] memory _version);\\n}\\n\",\"keccak256\":\"0x00a4da654d21dc1bdadbdc8bd54bb86c378c56f85e461ccc31303628ea621361\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/ProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IProtocolVersion} from \\\"./IProtocolVersion.sol\\\";\\n\\n/// @title ProtocolVersion\\n/// @author Aragon X - 2023\\n/// @notice An abstract, stateless, non-upgradeable contract providing the current Aragon OSx protocol version number.\\n/// @dev Do not add any new variables to this contract that would shift down storage in the inheritance chain.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract ProtocolVersion is IProtocolVersion {\\n // IMPORTANT: Do not add any storage variable, see the above notice.\\n\\n /// @inheritdoc IProtocolVersion\\n function protocolVersion() public pure returns (uint8[3] memory) {\\n return [1, 4, 0];\\n }\\n}\\n\",\"keccak256\":\"0x3975c937be935f687c6b6b8f379071232681e98cf04b175d72781b819ea52bdb\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"errors":{"NonUpgradeablePlugin()":[{"notice":"Thrown when attempting to prepare an update on a non-upgradeable plugin."}]},"kind":"user","methods":{"implementation()":{"notice":"Returns the plugin implementation address."},"prepareInstallation(address,bytes)":{"notice":"Prepares the installation of a plugin."},"prepareUninstallation(address,(address,address[],bytes))":{"notice":"Prepares the uninstallation of a plugin."},"prepareUpdate(address,uint16,(address,address[],bytes))":{"notice":"Prepares the update of a plugin."},"protocolVersion()":{"notice":"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with."},"supportsInterface(bytes4)":{"notice":"Checks if this or the parent contract supports an interface by its ID."}},"notice":"A mock plugin setup of a cloneable plugin to be deployed via the minimal proxy pattern. v1.2 (Release 1, Build 2)","version":1}}},"src/mocks/plugin/PluginMock.sol":{"PluginMockBuild1":{"abi":[{"inputs":[{"internalType":"contract IDAO","name":"_dao","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousTarget","type":"address"},{"indexed":true,"internalType":"address","name":"newTarget","type":"address"}],"name":"TargetSet","type":"event"},{"inputs":[],"name":"dao","outputs":[{"internalType":"contract IDAO","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pluginType","outputs":[{"internalType":"enum IPlugin.PluginType","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"protocolVersion","outputs":[{"internalType":"uint8[3]","name":"","type":"uint8[3]"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_target","type":"address"}],"name":"setTarget","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"state1","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"target","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"DO NOT USE IN PRODUCTION!","kind":"dev","methods":{"dao()":{"returns":{"_0":"The DAO contract."}},"protocolVersion()":{"details":"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.","returns":{"_0":"Returns the semantic Aragon OSx protocol version number."}},"setTarget(address)":{"details":"Sets the target to a new target (`newTarget`)."},"supportsInterface(bytes4)":{"params":{"_interfaceId":"The ID of the interface."},"returns":{"_0":"Returns `true` if the interface is supported."}}},"version":1},"evm":{"bytecode":{"functionDebugData":{"@_2870":{"entryPoint":null,"id":2870,"parameterSlots":1,"returnSlots":0},"@_3841":{"entryPoint":null,"id":3841,"parameterSlots":1,"returnSlots":0},"@_4045":{"entryPoint":null,"id":4045,"parameterSlots":1,"returnSlots":0},"abi_decode_tuple_t_contract$_IDAO_$2538_fromMemory":{"entryPoint":68,"id":null,"parameterSlots":2,"returnSlots":1}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:319:50","statements":[{"nodeType":"YulBlock","src":"6:3:50","statements":[]},{"body":{"nodeType":"YulBlock","src":"108:209:50","statements":[{"body":{"nodeType":"YulBlock","src":"154:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"163:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"166:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"156:6:50"},"nodeType":"YulFunctionCall","src":"156:12:50"},"nodeType":"YulExpressionStatement","src":"156:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"129:7:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"138:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"125:3:50"},"nodeType":"YulFunctionCall","src":"125:23:50"},{"kind":"number","nodeType":"YulLiteral","src":"150:2:50","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"121:3:50"},"nodeType":"YulFunctionCall","src":"121:32:50"},"nodeType":"YulIf","src":"118:52:50"},{"nodeType":"YulVariableDeclaration","src":"179:29:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"198:9:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"192:5:50"},"nodeType":"YulFunctionCall","src":"192:16:50"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"183:5:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"271:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"280:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"283:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"273:6:50"},"nodeType":"YulFunctionCall","src":"273:12:50"},"nodeType":"YulExpressionStatement","src":"273:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"230:5:50"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"241:5:50"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"256:3:50","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"261:1:50","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"252:3:50"},"nodeType":"YulFunctionCall","src":"252:11:50"},{"kind":"number","nodeType":"YulLiteral","src":"265:1:50","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"248:3:50"},"nodeType":"YulFunctionCall","src":"248:19:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"237:3:50"},"nodeType":"YulFunctionCall","src":"237:31:50"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"227:2:50"},"nodeType":"YulFunctionCall","src":"227:42:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"220:6:50"},"nodeType":"YulFunctionCall","src":"220:50:50"},"nodeType":"YulIf","src":"217:70:50"},{"nodeType":"YulAssignment","src":"296:15:50","value":{"name":"value","nodeType":"YulIdentifier","src":"306:5:50"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"296:6:50"}]}]},"name":"abi_decode_tuple_t_contract$_IDAO_$2538_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"74:9:50","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"85:7:50","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"97:6:50","type":""}],"src":"14:303:50"}]},"contents":"{\n { }\n function abi_decode_tuple_t_contract$_IDAO_$2538_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := mload(headStart)\n if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n value0 := value\n }\n}","id":50,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60a060405234801561001057600080fd5b5060405161039938038061039983398101604081905261002f91610044565b6001600160a01b031660805260018055610074565b60006020828403121561005657600080fd5b81516001600160a01b038116811461006d57600080fd5b9392505050565b60805161030b61008e600039600060c1015261030b6000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806341de68301161005b57806341de6830146100f95780636accab8c14610108578063776d1a011461011f578063d4b839921461013457600080fd5b806301ffc9a7146100825780632ae9c600146100aa5780634162169f146100bf575b600080fd5b610095610090366004610248565b610147565b60405190151581526020015b60405180910390f35b6100b2610198565b6040516100a19190610279565b7f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020016100a1565b60026040516100a191906102ad565b61011160015481565b6040519081526020016100a1565b61013261012d3660046102d5565b6101c2565b005b6000546100e1906001600160a01b031681565b60006001600160e01b0319821663041de68360e41b148061017757506001600160e01b03198216621574e360e91b145b8061019257506301ffc9a760e01b6001600160e01b03198316145b92915050565b6101a061022a565b5060408051606081018252600181526004602082015260009181019190915290565b600080546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d69190a35050565b60405180606001604052806003906020820280368337509192915050565b60006020828403121561025a57600080fd5b81356001600160e01b03198116811461027257600080fd5b9392505050565b60608101818360005b60038110156102a457815160ff16835260209283019290910190600101610282565b50505092915050565b60208101600383106102cf57634e487b7160e01b600052602160045260246000fd5b91905290565b6000602082840312156102e757600080fd5b81356001600160a01b038116811461027257600080fdfea164736f6c6343000811000a","opcodes":"PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x399 CODESIZE SUB DUP1 PUSH2 0x399 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0x44 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x80 MSTORE PUSH1 0x1 DUP1 SSTORE PUSH2 0x74 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x56 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x6D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH2 0x30B PUSH2 0x8E PUSH1 0x0 CODECOPY PUSH1 0x0 PUSH1 0xC1 ADD MSTORE PUSH2 0x30B PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x7D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x41DE6830 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x41DE6830 EQ PUSH2 0xF9 JUMPI DUP1 PUSH4 0x6ACCAB8C EQ PUSH2 0x108 JUMPI DUP1 PUSH4 0x776D1A01 EQ PUSH2 0x11F JUMPI DUP1 PUSH4 0xD4B83992 EQ PUSH2 0x134 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x82 JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0xAA JUMPI DUP1 PUSH4 0x4162169F EQ PUSH2 0xBF JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x95 PUSH2 0x90 CALLDATASIZE PUSH1 0x4 PUSH2 0x248 JUMP JUMPDEST PUSH2 0x147 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xB2 PUSH2 0x198 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA1 SWAP2 SWAP1 PUSH2 0x279 JUMP JUMPDEST PUSH32 0x0 JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xA1 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x40 MLOAD PUSH2 0xA1 SWAP2 SWAP1 PUSH2 0x2AD JUMP JUMPDEST PUSH2 0x111 PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xA1 JUMP JUMPDEST PUSH2 0x132 PUSH2 0x12D CALLDATASIZE PUSH1 0x4 PUSH2 0x2D5 JUMP JUMPDEST PUSH2 0x1C2 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0xE1 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x41DE683 PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x177 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x192 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1A0 PUSH2 0x22A JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 DUP4 AND DUP2 OR DUP5 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 DUP4 SWAP2 PUSH32 0x90CC2F570A6EB594B1580EA3E41247D2D73A55281889E86BD4EC2FC29C7E62D6 SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x25A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x272 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0x2A4 JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x282 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH1 0x3 DUP4 LT PUSH2 0x2CF JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 SWAP1 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x272 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"291:135:28:-:0;;;361:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;844:10:34;;;416:1:28::1;407:10:::0;;291:135;;14:303:50;97:6;150:2;138:9;129:7;125:23;121:32;118:52;;;166:1;163;156:12;118:52;192:16;;-1:-1:-1;;;;;237:31:50;;227:42;;217:70;;283:1;280;273:12;217:70;306:5;14:303;-1:-1:-1;;;14:303:50:o;:::-;291:135:28;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@dao_3851":{"entryPoint":null,"id":3851,"parameterSlots":0,"returnSlots":1},"@pluginType_4057":{"entryPoint":null,"id":4057,"parameterSlots":0,"returnSlots":1},"@protocolVersion_5135":{"entryPoint":408,"id":5135,"parameterSlots":0,"returnSlots":1},"@setTarget_4077":{"entryPoint":450,"id":4077,"parameterSlots":1,"returnSlots":0},"@state1_2856":{"entryPoint":null,"id":2856,"parameterSlots":0,"returnSlots":0},"@supportsInterface_2374":{"entryPoint":null,"id":2374,"parameterSlots":1,"returnSlots":1},"@supportsInterface_4106":{"entryPoint":327,"id":4106,"parameterSlots":1,"returnSlots":1},"@target_4027":{"entryPoint":null,"id":4027,"parameterSlots":0,"returnSlots":0},"abi_decode_tuple_t_address":{"entryPoint":725,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes4":{"entryPoint":584,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed":{"entryPoint":633,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_contract$_IDAO_$2538__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_enum$_PluginType_$3994__to_t_uint8__fromStack_reversed":{"entryPoint":685,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:2319:50","statements":[{"nodeType":"YulBlock","src":"6:3:50","statements":[]},{"body":{"nodeType":"YulBlock","src":"83:217:50","statements":[{"body":{"nodeType":"YulBlock","src":"129:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"138:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"141:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"131:6:50"},"nodeType":"YulFunctionCall","src":"131:12:50"},"nodeType":"YulExpressionStatement","src":"131:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"104:7:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"113:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"100:3:50"},"nodeType":"YulFunctionCall","src":"100:23:50"},{"kind":"number","nodeType":"YulLiteral","src":"125:2:50","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"96:3:50"},"nodeType":"YulFunctionCall","src":"96:32:50"},"nodeType":"YulIf","src":"93:52:50"},{"nodeType":"YulVariableDeclaration","src":"154:36:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"180:9:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"167:12:50"},"nodeType":"YulFunctionCall","src":"167:23:50"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"158:5:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"254:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"263:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"266:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"256:6:50"},"nodeType":"YulFunctionCall","src":"256:12:50"},"nodeType":"YulExpressionStatement","src":"256:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"212:5:50"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"223:5:50"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"234:3:50","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"239:10:50","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"230:3:50"},"nodeType":"YulFunctionCall","src":"230:20:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"219:3:50"},"nodeType":"YulFunctionCall","src":"219:32:50"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"209:2:50"},"nodeType":"YulFunctionCall","src":"209:43:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"202:6:50"},"nodeType":"YulFunctionCall","src":"202:51:50"},"nodeType":"YulIf","src":"199:71:50"},{"nodeType":"YulAssignment","src":"279:15:50","value":{"name":"value","nodeType":"YulIdentifier","src":"289:5:50"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"279:6:50"}]}]},"name":"abi_decode_tuple_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"49:9:50","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"60:7:50","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"72:6:50","type":""}],"src":"14:286:50"},{"body":{"nodeType":"YulBlock","src":"400:92:50","statements":[{"nodeType":"YulAssignment","src":"410:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"422:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"433:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"418:3:50"},"nodeType":"YulFunctionCall","src":"418:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"410:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"452:9:50"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"477:6:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"470:6:50"},"nodeType":"YulFunctionCall","src":"470:14:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"463:6:50"},"nodeType":"YulFunctionCall","src":"463:22:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"445:6:50"},"nodeType":"YulFunctionCall","src":"445:41:50"},"nodeType":"YulExpressionStatement","src":"445:41:50"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"369:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"380:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"391:4:50","type":""}],"src":"305:187:50"},{"body":{"nodeType":"YulBlock","src":"640:358:50","statements":[{"nodeType":"YulAssignment","src":"650:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"662:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"673:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"658:3:50"},"nodeType":"YulFunctionCall","src":"658:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"650:4:50"}]},{"nodeType":"YulVariableDeclaration","src":"685:20:50","value":{"name":"headStart","nodeType":"YulIdentifier","src":"696:9:50"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"689:3:50","type":""}]},{"nodeType":"YulAssignment","src":"714:16:50","value":{"name":"headStart","nodeType":"YulIdentifier","src":"721:9:50"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"714:3:50"}]},{"nodeType":"YulVariableDeclaration","src":"739:20:50","value":{"name":"value0","nodeType":"YulIdentifier","src":"753:6:50"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"743:6:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"768:10:50","value":{"kind":"number","nodeType":"YulLiteral","src":"777:1:50","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"772:1:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"834:158:50","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"855:3:50"},{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"870:6:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"864:5:50"},"nodeType":"YulFunctionCall","src":"864:13:50"},{"kind":"number","nodeType":"YulLiteral","src":"879:4:50","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"860:3:50"},"nodeType":"YulFunctionCall","src":"860:24:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"848:6:50"},"nodeType":"YulFunctionCall","src":"848:37:50"},"nodeType":"YulExpressionStatement","src":"848:37:50"},{"nodeType":"YulVariableDeclaration","src":"898:14:50","value":{"kind":"number","nodeType":"YulLiteral","src":"908:4:50","type":"","value":"0x20"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"902:2:50","type":""}]},{"nodeType":"YulAssignment","src":"925:19:50","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"936:3:50"},{"name":"_1","nodeType":"YulIdentifier","src":"941:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"932:3:50"},"nodeType":"YulFunctionCall","src":"932:12:50"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"925:3:50"}]},{"nodeType":"YulAssignment","src":"957:25:50","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"971:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"979:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"967:3:50"},"nodeType":"YulFunctionCall","src":"967:15:50"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"957:6:50"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"798:1:50"},{"kind":"number","nodeType":"YulLiteral","src":"801:4:50","type":"","value":"0x03"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"795:2:50"},"nodeType":"YulFunctionCall","src":"795:11:50"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"807:18:50","statements":[{"nodeType":"YulAssignment","src":"809:14:50","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"818:1:50"},{"kind":"number","nodeType":"YulLiteral","src":"821:1:50","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"814:3:50"},"nodeType":"YulFunctionCall","src":"814:9:50"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"809:1:50"}]}]},"pre":{"nodeType":"YulBlock","src":"791:3:50","statements":[]},"src":"787:205:50"}]},"name":"abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"609:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"620:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"631:4:50","type":""}],"src":"497:501:50"},{"body":{"nodeType":"YulBlock","src":"1117:125:50","statements":[{"nodeType":"YulAssignment","src":"1127:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1139:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"1150:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1135:3:50"},"nodeType":"YulFunctionCall","src":"1135:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1127:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1169:9:50"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1184:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"1192:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1180:3:50"},"nodeType":"YulFunctionCall","src":"1180:55:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1162:6:50"},"nodeType":"YulFunctionCall","src":"1162:74:50"},"nodeType":"YulExpressionStatement","src":"1162:74:50"}]},"name":"abi_encode_tuple_t_contract$_IDAO_$2538__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1086:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1097:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1108:4:50","type":""}],"src":"1003:239:50"},{"body":{"nodeType":"YulBlock","src":"1361:229:50","statements":[{"nodeType":"YulAssignment","src":"1371:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1383:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"1394:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1379:3:50"},"nodeType":"YulFunctionCall","src":"1379:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1371:4:50"}]},{"body":{"nodeType":"YulBlock","src":"1439:111:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1460:1:50","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1467:3:50","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"1472:10:50","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1463:3:50"},"nodeType":"YulFunctionCall","src":"1463:20:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1453:6:50"},"nodeType":"YulFunctionCall","src":"1453:31:50"},"nodeType":"YulExpressionStatement","src":"1453:31:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1504:1:50","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"1507:4:50","type":"","value":"0x21"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1497:6:50"},"nodeType":"YulFunctionCall","src":"1497:15:50"},"nodeType":"YulExpressionStatement","src":"1497:15:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1532:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1535:4:50","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1525:6:50"},"nodeType":"YulFunctionCall","src":"1525:15:50"},"nodeType":"YulExpressionStatement","src":"1525:15:50"}]},"condition":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1419:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"1427:1:50","type":"","value":"3"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"1416:2:50"},"nodeType":"YulFunctionCall","src":"1416:13:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1409:6:50"},"nodeType":"YulFunctionCall","src":"1409:21:50"},"nodeType":"YulIf","src":"1406:144:50"},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1566:9:50"},{"name":"value0","nodeType":"YulIdentifier","src":"1577:6:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1559:6:50"},"nodeType":"YulFunctionCall","src":"1559:25:50"},"nodeType":"YulExpressionStatement","src":"1559:25:50"}]},"name":"abi_encode_tuple_t_enum$_PluginType_$3994__to_t_uint8__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1330:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1341:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1352:4:50","type":""}],"src":"1247:343:50"},{"body":{"nodeType":"YulBlock","src":"1696:76:50","statements":[{"nodeType":"YulAssignment","src":"1706:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1718:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"1729:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1714:3:50"},"nodeType":"YulFunctionCall","src":"1714:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1706:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1748:9:50"},{"name":"value0","nodeType":"YulIdentifier","src":"1759:6:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1741:6:50"},"nodeType":"YulFunctionCall","src":"1741:25:50"},"nodeType":"YulExpressionStatement","src":"1741:25:50"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1665:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1676:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1687:4:50","type":""}],"src":"1595:177:50"},{"body":{"nodeType":"YulBlock","src":"1847:239:50","statements":[{"body":{"nodeType":"YulBlock","src":"1893:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1902:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1905:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1895:6:50"},"nodeType":"YulFunctionCall","src":"1895:12:50"},"nodeType":"YulExpressionStatement","src":"1895:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1868:7:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"1877:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1864:3:50"},"nodeType":"YulFunctionCall","src":"1864:23:50"},{"kind":"number","nodeType":"YulLiteral","src":"1889:2:50","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1860:3:50"},"nodeType":"YulFunctionCall","src":"1860:32:50"},"nodeType":"YulIf","src":"1857:52:50"},{"nodeType":"YulVariableDeclaration","src":"1918:36:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1944:9:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1931:12:50"},"nodeType":"YulFunctionCall","src":"1931:23:50"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"1922:5:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"2040:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2049:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2052:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2042:6:50"},"nodeType":"YulFunctionCall","src":"2042:12:50"},"nodeType":"YulExpressionStatement","src":"2042:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1976:5:50"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1987:5:50"},{"kind":"number","nodeType":"YulLiteral","src":"1994:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1983:3:50"},"nodeType":"YulFunctionCall","src":"1983:54:50"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1973:2:50"},"nodeType":"YulFunctionCall","src":"1973:65:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1966:6:50"},"nodeType":"YulFunctionCall","src":"1966:73:50"},"nodeType":"YulIf","src":"1963:93:50"},{"nodeType":"YulAssignment","src":"2065:15:50","value":{"name":"value","nodeType":"YulIdentifier","src":"2075:5:50"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2065:6:50"}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1813:9:50","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1824:7:50","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1836:6:50","type":""}],"src":"1777:309:50"},{"body":{"nodeType":"YulBlock","src":"2192:125:50","statements":[{"nodeType":"YulAssignment","src":"2202:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2214:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"2225:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2210:3:50"},"nodeType":"YulFunctionCall","src":"2210:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2202:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2244:9:50"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2259:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"2267:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2255:3:50"},"nodeType":"YulFunctionCall","src":"2255:55:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2237:6:50"},"nodeType":"YulFunctionCall","src":"2237:74:50"},"nodeType":"YulExpressionStatement","src":"2237:74:50"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2161:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"2172:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2183:4:50","type":""}],"src":"2091:226:50"}]},"contents":"{\n { }\n function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n if iszero(eq(value, and(value, shl(224, 0xffffffff)))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 96)\n let pos := headStart\n pos := headStart\n let srcPtr := value0\n let i := 0\n for { } lt(i, 0x03) { i := add(i, 1) }\n {\n mstore(pos, and(mload(srcPtr), 0xff))\n let _1 := 0x20\n pos := add(pos, _1)\n srcPtr := add(srcPtr, _1)\n }\n }\n function abi_encode_tuple_t_contract$_IDAO_$2538__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_encode_tuple_t_enum$_PluginType_$3994__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n if iszero(lt(value0, 3))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x21)\n revert(0, 0x24)\n }\n mstore(headStart, value0)\n }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n}","id":50,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{"3829":[{"length":32,"start":193}]},"linkReferences":{},"object":"608060405234801561001057600080fd5b506004361061007d5760003560e01c806341de68301161005b57806341de6830146100f95780636accab8c14610108578063776d1a011461011f578063d4b839921461013457600080fd5b806301ffc9a7146100825780632ae9c600146100aa5780634162169f146100bf575b600080fd5b610095610090366004610248565b610147565b60405190151581526020015b60405180910390f35b6100b2610198565b6040516100a19190610279565b7f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020016100a1565b60026040516100a191906102ad565b61011160015481565b6040519081526020016100a1565b61013261012d3660046102d5565b6101c2565b005b6000546100e1906001600160a01b031681565b60006001600160e01b0319821663041de68360e41b148061017757506001600160e01b03198216621574e360e91b145b8061019257506301ffc9a760e01b6001600160e01b03198316145b92915050565b6101a061022a565b5060408051606081018252600181526004602082015260009181019190915290565b600080546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d69190a35050565b60405180606001604052806003906020820280368337509192915050565b60006020828403121561025a57600080fd5b81356001600160e01b03198116811461027257600080fd5b9392505050565b60608101818360005b60038110156102a457815160ff16835260209283019290910190600101610282565b50505092915050565b60208101600383106102cf57634e487b7160e01b600052602160045260246000fd5b91905290565b6000602082840312156102e757600080fd5b81356001600160a01b038116811461027257600080fdfea164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x7D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x41DE6830 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x41DE6830 EQ PUSH2 0xF9 JUMPI DUP1 PUSH4 0x6ACCAB8C EQ PUSH2 0x108 JUMPI DUP1 PUSH4 0x776D1A01 EQ PUSH2 0x11F JUMPI DUP1 PUSH4 0xD4B83992 EQ PUSH2 0x134 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x82 JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0xAA JUMPI DUP1 PUSH4 0x4162169F EQ PUSH2 0xBF JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x95 PUSH2 0x90 CALLDATASIZE PUSH1 0x4 PUSH2 0x248 JUMP JUMPDEST PUSH2 0x147 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xB2 PUSH2 0x198 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA1 SWAP2 SWAP1 PUSH2 0x279 JUMP JUMPDEST PUSH32 0x0 JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xA1 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x40 MLOAD PUSH2 0xA1 SWAP2 SWAP1 PUSH2 0x2AD JUMP JUMPDEST PUSH2 0x111 PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xA1 JUMP JUMPDEST PUSH2 0x132 PUSH2 0x12D CALLDATASIZE PUSH1 0x4 PUSH2 0x2D5 JUMP JUMPDEST PUSH2 0x1C2 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0xE1 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x41DE683 PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x177 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x192 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1A0 PUSH2 0x22A JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 DUP4 AND DUP2 OR DUP5 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 DUP4 SWAP2 PUSH32 0x90CC2F570A6EB594B1580EA3E41247D2D73A55281889E86BD4EC2FC29C7E62D6 SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x25A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x272 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0x2A4 JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x282 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH1 0x3 DUP4 LT PUSH2 0x2CF JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 SWAP1 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x272 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"291:135:28:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1718:288:38;;;;;;:::i;:::-;;:::i;:::-;;;470:14:50;;463:22;445:41;;433:2;418:18;1718:288:38;;;;;;;;631:98:49;;;:::i;:::-;;;;;;;:::i;943:69:34:-;1002:3;943:69;;;-1:-1:-1;;;;;1180:55:50;;;1162:74;;1150:2;1135:18;943:69:34;1003:239:50;1104:112:38;1185:24;1104:112;;;;;;:::i;333:21:28:-;;;;;;;;;1741:25:50;;;1729:2;1714:18;333:21:28;1595:177:50;1344:166:38;;;;;;:::i;:::-;;:::i;:::-;;757:21;;;;;-1:-1:-1;;;;;757:21:38;;;1718:288;1804:4;-1:-1:-1;;;;;;1839:41:38;;-1:-1:-1;;;1839:41:38;;:107;;-1:-1:-1;;;;;;;1896:50:38;;-1:-1:-1;;;1896:50:38;1839:107;:160;;;-1:-1:-1;;;;;;;;;;937:40:23;;;1962:37:38;1820:179;1718:288;-1:-1:-1;;1718:288:38:o;631:98:49:-;679:15;;:::i;:::-;-1:-1:-1;706:16:49;;;;;;;;714:1;706:16;;717:1;706:16;;;;-1:-1:-1;706:16:49;;;;;;;;631:98::o;1344:166:38:-;1397:22;1422:6;;-1:-1:-1;;;;;1438:16:38;;;;;;;;;;1469:34;;1422:6;;;;;;;1469:34;;1397:22;1469:34;1387:123;1344:166;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:286:50:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:50;;209:43;;199:71;;266:1;263;256:12;199:71;289:5;14:286;-1:-1:-1;;;14:286:50:o;497:501::-;673:2;658:18;;662:9;753:6;631:4;787:205;801:4;798:1;795:11;787:205;;;864:13;;879:4;860:24;848:37;;908:4;932:12;;;;967:15;;;;821:1;814:9;787:205;;;791:3;;;497:501;;;;:::o;1247:343::-;1394:2;1379:18;;1427:1;1416:13;;1406:144;;1472:10;1467:3;1463:20;1460:1;1453:31;1507:4;1504:1;1497:15;1535:4;1532:1;1525:15;1406:144;1559:25;;;1247:343;:::o;1777:309::-;1836:6;1889:2;1877:9;1868:7;1864:23;1860:32;1857:52;;;1905:1;1902;1895:12;1857:52;1944:9;1931:23;-1:-1:-1;;;;;1987:5:50;1983:54;1976:5;1973:65;1963:93;;2052:1;2049;2042:12"},"gasEstimates":{"creation":{"codeDepositCost":"155800","executionCost":"infinite","totalCost":"infinite"},"external":{"dao()":"infinite","pluginType()":"227","protocolVersion()":"infinite","setTarget(address)":"26099","state1()":"2317","supportsInterface(bytes4)":"482","target()":"2403"}},"methodIdentifiers":{"dao()":"4162169f","pluginType()":"41de6830","protocolVersion()":"2ae9c600","setTarget(address)":"776d1a01","state1()":"6accab8c","supportsInterface(bytes4)":"01ffc9a7","target()":"d4b83992"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IDAO\",\"name\":\"_dao\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousTarget\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newTarget\",\"type\":\"address\"}],\"name\":\"TargetSet\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"dao\",\"outputs\":[{\"internalType\":\"contract IDAO\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pluginType\",\"outputs\":[{\"internalType\":\"enum IPlugin.PluginType\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"protocolVersion\",\"outputs\":[{\"internalType\":\"uint8[3]\",\"name\":\"\",\"type\":\"uint8[3]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_target\",\"type\":\"address\"}],\"name\":\"setTarget\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"state1\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"target\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"DO NOT USE IN PRODUCTION!\",\"kind\":\"dev\",\"methods\":{\"dao()\":{\"returns\":{\"_0\":\"The DAO contract.\"}},\"protocolVersion()\":{\"details\":\"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\",\"returns\":{\"_0\":\"Returns the semantic Aragon OSx protocol version number.\"}},\"setTarget(address)\":{\"details\":\"Sets the target to a new target (`newTarget`).\"},\"supportsInterface(bytes4)\":{\"params\":{\"_interfaceId\":\"The ID of the interface.\"},\"returns\":{\"_0\":\"Returns `true` if the interface is supported.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"dao()\":{\"notice\":\"Returns the DAO contract.\"},\"pluginType()\":{\"notice\":\"Returns the plugin's type\"},\"protocolVersion()\":{\"notice\":\"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\"},\"setTarget(address)\":{\"notice\":\"Can only be called by the current owner. TODO\"},\"supportsInterface(bytes4)\":{\"notice\":\"Checks if this or the parent contract supports an interface by its ID.\"}},\"notice\":\"A mock plugin to be deployed via the `new` keyword. v1.1 (Release 1, Build 1)\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/mocks/plugin/PluginMock.sol\":\"PluginMockBuild1\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n function _contextSuffixLength() internal view virtual returns (uint256) {\\n return 0;\\n }\\n}\\n\",\"keccak256\":\"0xa92e4fa126feb6907daa0513ddd816b2eb91f30a808de54f63c17d0e162c3439\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165 is IERC165 {\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165).interfaceId;\\n }\\n}\\n\",\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"src/dao/IDAO.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IDAO\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for DAOs within the Aragon App DAO framework.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IDAO {\\n /// @notice The action struct to be consumed by the DAO's `execute` function resulting in an external call.\\n /// @param to The address to call.\\n /// @param value The native token value to be sent with the call.\\n /// @param data The bytes-encoded function selector and calldata for the call.\\n struct Action {\\n address to;\\n uint256 value;\\n bytes data;\\n }\\n\\n /// @notice Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\\n /// @param _where The address of the contract.\\n /// @param _who The address of a EOA or contract to give the permissions.\\n /// @param _permissionId The permission identifier.\\n /// @param _data The optional data passed to the `PermissionCondition` registered.\\n /// @return Returns true if the address has permission, false if not.\\n function hasPermission(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes memory _data\\n ) external view returns (bool);\\n\\n /// @notice Updates the DAO metadata (e.g., an IPFS hash).\\n /// @param _metadata The IPFS hash of the new metadata object.\\n function setMetadata(bytes calldata _metadata) external;\\n\\n /// @notice Emitted when the DAO metadata is updated.\\n /// @param metadata The IPFS hash of the new metadata object.\\n event MetadataSet(bytes metadata);\\n\\n /// @notice Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted.\\n /// @param _callId The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce.\\n /// @param _actions The array of actions.\\n /// @param _allowFailureMap A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @return The array of results obtained from the executed actions in `bytes`.\\n /// @return The resulting failure map containing the actions have actually failed.\\n function execute(\\n bytes32 _callId,\\n Action[] memory _actions,\\n uint256 _allowFailureMap\\n ) external returns (bytes[] memory, uint256);\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param actor The address of the caller.\\n /// @param callId The ID of the call.\\n /// @param actions The array of actions executed.\\n /// @param allowFailureMap The allow failure map encoding which actions are allowed to fail.\\n /// @param failureMap The failure map encoding which actions have failed.\\n /// @param execResults The array with the results of the executed actions.\\n /// @dev The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce.\\n event Executed(\\n address indexed actor,\\n bytes32 callId,\\n Action[] actions,\\n uint256 allowFailureMap,\\n uint256 failureMap,\\n bytes[] execResults\\n );\\n\\n /// @notice Emitted when a standard callback is registered.\\n /// @param interfaceId The ID of the interface.\\n /// @param callbackSelector The selector of the callback function.\\n /// @param magicNumber The magic number to be registered for the callback function selector.\\n event StandardCallbackRegistered(\\n bytes4 interfaceId,\\n bytes4 callbackSelector,\\n bytes4 magicNumber\\n );\\n\\n /// @notice Deposits (native) tokens to the DAO contract with a reference string.\\n /// @param _token The address of the token or address(0) in case of the native token.\\n /// @param _amount The amount of tokens to deposit.\\n /// @param _reference The reference describing the deposit reason.\\n function deposit(address _token, uint256 _amount, string calldata _reference) external payable;\\n\\n /// @notice Emitted when a token deposit has been made to the DAO.\\n /// @param sender The address of the sender.\\n /// @param token The address of the deposited token.\\n /// @param amount The amount of tokens deposited.\\n /// @param _reference The reference describing the deposit reason.\\n event Deposited(\\n address indexed sender,\\n address indexed token,\\n uint256 amount,\\n string _reference\\n );\\n\\n /// @notice Emitted when a native token deposit has been made to the DAO.\\n /// @dev This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).\\n /// @param sender The address of the sender.\\n /// @param amount The amount of native tokens deposited.\\n event NativeTokenDeposited(address sender, uint256 amount);\\n\\n /// @notice Setter for the trusted forwarder verifying the meta transaction.\\n /// @param _trustedForwarder The trusted forwarder address.\\n function setTrustedForwarder(address _trustedForwarder) external;\\n\\n /// @notice Getter for the trusted forwarder verifying the meta transaction.\\n /// @return The trusted forwarder address.\\n function getTrustedForwarder() external view returns (address);\\n\\n /// @notice Emitted when a new TrustedForwarder is set on the DAO.\\n /// @param forwarder the new forwarder address.\\n event TrustedForwarderSet(address forwarder);\\n\\n /// @notice Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\\n /// @param _hash The hash of the data to be signed.\\n /// @param _signature The signature byte array associated with `_hash`.\\n /// @return Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not.\\n function isValidSignature(bytes32 _hash, bytes memory _signature) external returns (bytes4);\\n\\n /// @notice Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\\n /// @param _interfaceId The ID of the interface.\\n /// @param _callbackSelector The selector of the callback function.\\n /// @param _magicNumber The magic number to be registered for the function signature.\\n function registerStandardCallback(\\n bytes4 _interfaceId,\\n bytes4 _callbackSelector,\\n bytes4 _magicNumber\\n ) external;\\n\\n /// @notice Removed function being left here to not corrupt the IDAO interface ID. Any call will revert.\\n /// @dev Introduced in v1.0.0. Removed in v1.4.0.\\n function setSignatureValidator(address) external;\\n}\\n\",\"keccak256\":\"0xb7f615523c26de042edce98731c658f44a1edb2464387ac1b642c4c69f57128e\",\"license\":\"AGPL-3.0-or-later\"},\"src/mocks/plugin/PluginMock.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {Plugin} from \\\"../../plugin/Plugin.sol\\\";\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice A mock plugin to be deployed via the `new` keyword.\\n/// v1.1 (Release 1, Build 1)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginMockBuild1 is Plugin {\\n uint256 public state1;\\n\\n constructor(IDAO _dao) Plugin(_dao) {\\n state1 = 1;\\n }\\n}\\n\",\"keccak256\":\"0x9aca72aa9f93de6de6cc6a093aaaceb62649bea46fba7f07a01a067c145c35bd\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/DaoAuthorizable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {Context} from \\\"@openzeppelin/contracts/utils/Context.sol\\\";\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\nimport {_auth} from \\\"./auth.sol\\\";\\n\\n/// @title DaoAuthorizable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract contract providing a meta-transaction compatible modifier for non-upgradeable contracts instantiated via the `new` keyword to authorize function calls through an associated DAO.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract DaoAuthorizable is Context {\\n /// @notice The associated DAO managing the permissions of inheriting contracts.\\n IDAO private immutable DAO;\\n\\n /// @notice Constructs the contract by setting the associated DAO.\\n /// @param _dao The associated DAO address.\\n constructor(IDAO _dao) {\\n DAO = _dao;\\n }\\n\\n /// @notice Returns the DAO contract.\\n /// @return The DAO contract.\\n function dao() public view returns (IDAO) {\\n return DAO;\\n }\\n\\n /// @notice A modifier to make functions on inheriting contracts authorized. Permissions to call the function are checked through the associated DAO's permission manager.\\n /// @param _permissionId The permission identifier required to call the method this modifier is applied to.\\n modifier auth(bytes32 _permissionId) {\\n _auth(DAO, address(this), _msgSender(), _permissionId, _msgData());\\n _;\\n }\\n}\\n\",\"keccak256\":\"0x3d0be91b4f5854ed2d2c51b53fe7ffba58cc968e972015cf60eb3ea100543e64\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/auth.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice Thrown if a call is unauthorized in the associated DAO.\\n/// @param dao The associated DAO.\\n/// @param where The context in which the authorization reverted.\\n/// @param who The address (EOA or contract) missing the permission.\\n/// @param permissionId The permission identifier.\\nerror DaoUnauthorized(address dao, address where, address who, bytes32 permissionId);\\n\\n/// @notice A free function checking if a caller is granted permissions on a target contract via a permission identifier that redirects the approval to a `PermissionCondition` if this was specified in the setup.\\n/// @param _where The address of the target contract for which `who` receives permission.\\n/// @param _who The address (EOA or contract) owning the permission.\\n/// @param _permissionId The permission identifier.\\n/// @param _data The optional data passed to the `PermissionCondition` registered.\\n/// @custom:security-contact sirt@aragon.org\\nfunction _auth(\\n IDAO _dao,\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes calldata _data\\n) view {\\n if (!_dao.hasPermission(_where, _who, _permissionId, _data))\\n revert DaoUnauthorized({\\n dao: address(_dao),\\n where: _where,\\n who: _who,\\n permissionId: _permissionId\\n });\\n}\\n\",\"keccak256\":\"0x878764b4f87fe0651fb3798fb9cb87c952f8c6caf6ae79c7f09de84df6c00298\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/IPlugin.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IPlugin\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the traits of a plugin.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IPlugin {\\n enum PluginType {\\n UUPS,\\n Cloneable,\\n Constructable\\n }\\n\\n /// @notice Returns the plugin's type\\n function pluginType() external view returns (PluginType);\\n}\\n\",\"keccak256\":\"0xc57cd0d10b6380ab7f54c713a509e88fd8f4ad9288313a0e8e12b8887817ddfe\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/Plugin.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ERC165} from \\\"@openzeppelin/contracts/utils/introspection/ERC165.sol\\\";\\n\\nimport {IProtocolVersion} from \\\"../utils/versioning/IProtocolVersion.sol\\\";\\nimport {ProtocolVersion} from \\\"../utils/versioning/ProtocolVersion.sol\\\";\\nimport {DaoAuthorizable} from \\\"../permission/auth/DaoAuthorizable.sol\\\";\\nimport {IDAO} from \\\"../dao/IDAO.sol\\\";\\nimport {IPlugin} from \\\"./IPlugin.sol\\\";\\n\\n/// @title Plugin\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract, non-upgradeable contract to inherit from when creating a plugin being deployed via the `new` keyword.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract Plugin is IPlugin, ERC165, DaoAuthorizable, ProtocolVersion {\\n address public target;\\n\\n /// @dev Emitted each time the Target is set.\\n event TargetSet(address indexed previousTarget, address indexed newTarget);\\n\\n /// @notice Constructs the plugin by storing the associated DAO.\\n /// @param _dao The DAO contract.\\n constructor(IDAO _dao) DaoAuthorizable(_dao) {}\\n\\n /// @inheritdoc IPlugin\\n function pluginType() public pure override returns (PluginType) {\\n return PluginType.Constructable;\\n }\\n\\n /// @dev Sets the target to a new target (`newTarget`).\\n /// @notice Can only be called by the current owner. TODO\\n function setTarget(address _target) public {\\n address previousTarget = target;\\n target = _target;\\n emit TargetSet(previousTarget, _target);\\n }\\n\\n /// @notice Checks if this or the parent contract supports an interface by its ID.\\n /// @param _interfaceId The ID of the interface.\\n /// @return Returns `true` if the interface is supported.\\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\\n return\\n _interfaceId == type(IPlugin).interfaceId ||\\n _interfaceId == type(IProtocolVersion).interfaceId ||\\n super.supportsInterface(_interfaceId);\\n }\\n\\n /// @notice Forwards the actions to the currently set `target` for the execution.\\n /// @param _callId Identifier for this execution.\\n /// @param _actions actions that will be eventually called.\\n /// @param _allowFailureMap Bitmap-encoded number. TODO:\\n /// @return execResults address of the implementation contract.\\n /// @return failureMap address of the implementation contract.\\n function _execute(\\n bytes32 _callId,\\n IDAO.Action[] calldata _actions,\\n uint256 _allowFailureMap\\n ) internal virtual returns (bytes[] memory execResults, uint256 failureMap) {\\n (execResults, failureMap) = IDAO(target).execute(_callId, _actions, _allowFailureMap);\\n }\\n\\n /// @notice Forwards the actions to the `target` for the execution.\\n /// @param _target Forwards the actions to the specific target.\\n /// @param _callId Identifier for this execution.\\n /// @param _actions actions that will be eventually called.\\n /// @param _allowFailureMap Bitmap-encoded number. TODO:\\n /// @return execResults address of the implementation contract.\\n /// @return failureMap address of the implementation contract.\\n function _execute(\\n address _target,\\n bytes32 _callId,\\n IDAO.Action[] calldata _actions,\\n uint256 _allowFailureMap\\n ) internal virtual returns (bytes[] memory execResults, uint256 failureMap) {\\n (execResults, failureMap) = IDAO(_target).execute(_callId, _actions, _allowFailureMap);\\n }\\n}\\n\",\"keccak256\":\"0xaba248693127801c242cb55bdb8625c3f4138009c3e33fa5478c2d09efb309c3\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/IProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IProtocolVersion\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the semantic Aragon OSx protocol version number.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IProtocolVersion {\\n /// @notice Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\\n /// @return _version Returns the semantic Aragon OSx protocol version number.\\n /// @dev This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\\n function protocolVersion() external view returns (uint8[3] memory _version);\\n}\\n\",\"keccak256\":\"0x00a4da654d21dc1bdadbdc8bd54bb86c378c56f85e461ccc31303628ea621361\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/ProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IProtocolVersion} from \\\"./IProtocolVersion.sol\\\";\\n\\n/// @title ProtocolVersion\\n/// @author Aragon X - 2023\\n/// @notice An abstract, stateless, non-upgradeable contract providing the current Aragon OSx protocol version number.\\n/// @dev Do not add any new variables to this contract that would shift down storage in the inheritance chain.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract ProtocolVersion is IProtocolVersion {\\n // IMPORTANT: Do not add any storage variable, see the above notice.\\n\\n /// @inheritdoc IProtocolVersion\\n function protocolVersion() public pure returns (uint8[3] memory) {\\n return [1, 4, 0];\\n }\\n}\\n\",\"keccak256\":\"0x3975c937be935f687c6b6b8f379071232681e98cf04b175d72781b819ea52bdb\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[{"astId":4027,"contract":"src/mocks/plugin/PluginMock.sol:PluginMockBuild1","label":"target","offset":0,"slot":"0","type":"t_address"},{"astId":2856,"contract":"src/mocks/plugin/PluginMock.sol:PluginMockBuild1","label":"state1","offset":0,"slot":"1","type":"t_uint256"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"userdoc":{"kind":"user","methods":{"dao()":{"notice":"Returns the DAO contract."},"pluginType()":{"notice":"Returns the plugin's type"},"protocolVersion()":{"notice":"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with."},"setTarget(address)":{"notice":"Can only be called by the current owner. TODO"},"supportsInterface(bytes4)":{"notice":"Checks if this or the parent contract supports an interface by its ID."}},"notice":"A mock plugin to be deployed via the `new` keyword. v1.1 (Release 1, Build 1)","version":1}}},"src/mocks/plugin/PluginSetupMock.sol":{"PluginSetupMockBuild1":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"ConflictingValues","type":"error"},{"inputs":[],"name":"NonUpgradeablePlugin","type":"error"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_dao","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"prepareInstallation","outputs":[{"internalType":"address","name":"plugin","type":"address"},{"components":[{"internalType":"address[]","name":"helpers","type":"address[]"},{"components":[{"internalType":"enum PermissionLib.Operation","name":"operation","type":"uint8"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"condition","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"internalType":"struct PermissionLib.MultiTargetPermission[]","name":"permissions","type":"tuple[]"}],"internalType":"struct IPluginSetup.PreparedSetupData","name":"preparedSetupData","type":"tuple"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_dao","type":"address"},{"components":[{"internalType":"address","name":"plugin","type":"address"},{"internalType":"address[]","name":"currentHelpers","type":"address[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct IPluginSetup.SetupPayload","name":"_payload","type":"tuple"}],"name":"prepareUninstallation","outputs":[{"components":[{"internalType":"enum PermissionLib.Operation","name":"operation","type":"uint8"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"condition","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"internalType":"struct PermissionLib.MultiTargetPermission[]","name":"permissions","type":"tuple[]"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_dao","type":"address"},{"internalType":"uint16","name":"_fromBuild","type":"uint16"},{"components":[{"internalType":"address","name":"plugin","type":"address"},{"internalType":"address[]","name":"currentHelpers","type":"address[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct IPluginSetup.SetupPayload","name":"_payload","type":"tuple"}],"name":"prepareUpdate","outputs":[{"internalType":"bytes","name":"","type":"bytes"},{"components":[{"internalType":"address[]","name":"helpers","type":"address[]"},{"components":[{"internalType":"enum PermissionLib.Operation","name":"operation","type":"uint8"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"condition","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"internalType":"struct PermissionLib.MultiTargetPermission[]","name":"permissions","type":"tuple[]"}],"internalType":"struct IPluginSetup.PreparedSetupData","name":"","type":"tuple"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"protocolVersion","outputs":[{"internalType":"uint8[3]","name":"","type":"uint8[3]"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"DO NOT USE IN PRODUCTION!","kind":"dev","methods":{"implementation()":{"details":"The implementation can be instantiated via the `new` keyword, cloned via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)), or proxied via the UUPS proxy pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).","returns":{"_0":"The address of the plugin implementation contract."}},"prepareInstallation(address,bytes)":{"params":{"_dao":"The address of the installing DAO.","_data":"The bytes-encoded data containing the input parameters for the installation as specified in the plugin's build metadata JSON file."},"returns":{"plugin":"The address of the `Plugin` contract being prepared for installation.","preparedSetupData":"The deployed plugin's relevant data which consists of helpers and permissions."}},"prepareUninstallation(address,(address,address[],bytes))":{"params":{"_dao":"The address of the uninstalling DAO.","_payload":"The relevant data necessary for the `prepareUninstallation`. See above."},"returns":{"permissions":"The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the uninstalling DAO."}},"prepareUpdate(address,uint16,(address,address[],bytes))":{"details":"Since the underlying plugin is non-upgradeable, this non-virtual function must always revert.","params":{"_dao":"The address of the updating DAO.","_fromBuild":"The build number of the plugin to update from.","_payload":"The relevant data necessary for the `prepareUpdate`. See above."},"returns":{"_0":"The initialization data to be passed to upgradeable contracts when the update is applied in the `PluginSetupProcessor`.","_1":"The deployed plugin's relevant data which consists of helpers and permissions."}},"protocolVersion()":{"details":"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.","returns":{"_0":"Returns the semantic Aragon OSx protocol version number."}},"supportsInterface(bytes4)":{"params":{"_interfaceId":"The ID of the interface."},"returns":{"_0":"Returns `true` if the interface is supported."}}},"version":1},"evm":{"bytecode":{"functionDebugData":{"@_2908":{"entryPoint":null,"id":2908,"parameterSlots":0,"returnSlots":0},"@_4893":{"entryPoint":null,"id":4893,"parameterSlots":1,"returnSlots":0},"abi_encode_tuple_t_contract$_IDAO_$2538__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:232:50","statements":[{"nodeType":"YulBlock","src":"6:3:50","statements":[]},{"body":{"nodeType":"YulBlock","src":"128:102:50","statements":[{"nodeType":"YulAssignment","src":"138:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"150:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"161:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"146:3:50"},"nodeType":"YulFunctionCall","src":"146:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"138:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"180:9:50"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"195:6:50"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"211:3:50","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"216:1:50","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"207:3:50"},"nodeType":"YulFunctionCall","src":"207:11:50"},{"kind":"number","nodeType":"YulLiteral","src":"220:1:50","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"203:3:50"},"nodeType":"YulFunctionCall","src":"203:19:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"191:3:50"},"nodeType":"YulFunctionCall","src":"191:32:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"173:6:50"},"nodeType":"YulFunctionCall","src":"173:51:50"},"nodeType":"YulExpressionStatement","src":"173:51:50"}]},"name":"abi_encode_tuple_t_contract$_IDAO_$2538__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"97:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"108:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"119:4:50","type":""}],"src":"14:216:50"}]},"contents":"{\n { }\n function abi_encode_tuple_t_contract$_IDAO_$2538__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n }\n}","id":50,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60a060405234801561001057600080fd5b50600060405161001f9061005d565b6001600160a01b039091168152602001604051809103906000f08015801561004b573d6000803e3d6000fd5b506001600160a01b031660805261006a565b61039980610da483390190565b608051610d20610084600039600060c10152610d206000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c80639cb0a124116100505780639cb0a124146100eb578063a8a9c29e1461010b578063f10832f11461012c57600080fd5b806301ffc9a7146100775780632ae9c6001461009f5780635c60da1b146100b4575b600080fd5b61008a610085366004610501565b61014d565b60405190151581526020015b60405180910390f35b6100a761019e565b604051610096919061052b565b6040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152602001610096565b6100fe6100f936600461058d565b6101c8565b6040516100969190610657565b61011e6101193660046106a0565b6101de565b60405161009692919061079a565b61013f61013a366004610815565b610216565b6040516100969291906108d7565b60006001600160e01b0319821663099718b560e41b148061017d57506001600160e01b03198216621574e360e91b145b8061019857506301ffc9a760e01b6001600160e01b03198316145b92915050565b6101a66104d6565b5060408051606081018252600181526004602082015260009181019190915290565b60606101d76000600180610298565b9392505050565b60606101fd604051806040016040528060608152602001606081525090565b60405163a112810160e01b815260040160405180910390fd5b6000610235604051806040016040528060608152602001606081525090565b83604051610242906104f4565b6001600160a01b039091168152602001604051809103906000f08015801561026e573d6000803e3d6000fd5b50915061027b600161041d565b815261028a6000600181610298565b602082015290939092509050565b6060826001600160a01b0316846001600160a01b031611156102cd57604051633a4013cd60e21b815260040160405180910390fd5b6102d78484610917565b6001600160a01b031667ffffffffffffffff8111156102f8576102f86107ff565b60405190808252806020026020018201604052801561035157816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282526000199092019101816103165790505b509050835b836001600160a01b0316816001600160a01b03161015610415576040518060a0016040528084600281111561038d5761038d6105db565b81526001600160a01b038316602082018190526040820152600060608201527fa280eec51ab8e1bc4b6b0c1b7f1bde785761b787a49db404e3e9338ed9b016ef608090910152826103de8784610917565b6001600160a01b0316815181106103f7576103f761093e565b6020026020010181905250808061040d90610954565b915050610356565b509392505050565b6060816001600160a01b031667ffffffffffffffff811115610441576104416107ff565b60405190808252806020026020018201604052801561046a578160200160208202803683370190505b50905060005b826001600160a01b0316816001600160a01b031610156104d0578082826001600160a01b0316815181106104a6576104a661093e565b6001600160a01b0390921660209283029190910190910152806104c881610954565b915050610470565b50919050565b60405180606001604052806003906020820280368337509192915050565b6103998061097b83390190565b60006020828403121561051357600080fd5b81356001600160e01b0319811681146101d757600080fd5b60608101818360005b600381101561055657815160ff16835260209283019290910190600101610534565b50505092915050565b80356001600160a01b038116811461057657600080fd5b919050565b6000606082840312156104d057600080fd5b600080604083850312156105a057600080fd5b6105a98361055f565b9150602083013567ffffffffffffffff8111156105c557600080fd5b6105d18582860161057b565b9150509250929050565b634e487b7160e01b600052602160045260246000fd5b600081516003811061061357634e487b7160e01b600052602160045260246000fd5b8352506020818101516001600160a01b0390811691840191909152604080830151821690840152606080830151909116908301526080908101519082015260a00190565b6020808252825182820181905260009190848201906040850190845b81811015610694576106868385516105f1565b938501939250600101610673565b50909695505050505050565b6000806000606084860312156106b557600080fd5b6106be8461055f565b9250602084013561ffff811681146106d557600080fd5b9150604084013567ffffffffffffffff8111156106f157600080fd5b6106fd8682870161057b565b9150509250925092565b805160408084528151908401819052600091602091908201906060860190845b8181101561074c5783516001600160a01b031683529284019291840191600101610727565b50508483015186820387850152805180835290840192506000918401905b8083101561078f5761077d8285516105f1565b9150848401935060018301925061076a565b509695505050505050565b604081526000835180604084015260005b818110156107c857602081870181015160608684010152016107ab565b50600060608285010152601f19601f8201168301905060608382030160208401526107f66060820185610707565b95945050505050565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561082857600080fd5b6108318361055f565b9150602083013567ffffffffffffffff8082111561084e57600080fd5b818501915085601f83011261086257600080fd5b813581811115610874576108746107ff565b604051601f8201601f19908116603f0116810190838211818310171561089c5761089c6107ff565b816040528281528860208487010111156108b557600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6001600160a01b03831681526040602082015260006108f96040830184610707565b949350505050565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0382811682821603908082111561093757610937610901565b5092915050565b634e487b7160e01b600052603260045260246000fd5b60006001600160a01b0380831681810361097057610970610901565b600101939250505056fe60a060405234801561001057600080fd5b5060405161039938038061039983398101604081905261002f91610044565b6001600160a01b031660805260018055610074565b60006020828403121561005657600080fd5b81516001600160a01b038116811461006d57600080fd5b9392505050565b60805161030b61008e600039600060c1015261030b6000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806341de68301161005b57806341de6830146100f95780636accab8c14610108578063776d1a011461011f578063d4b839921461013457600080fd5b806301ffc9a7146100825780632ae9c600146100aa5780634162169f146100bf575b600080fd5b610095610090366004610248565b610147565b60405190151581526020015b60405180910390f35b6100b2610198565b6040516100a19190610279565b7f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020016100a1565b60026040516100a191906102ad565b61011160015481565b6040519081526020016100a1565b61013261012d3660046102d5565b6101c2565b005b6000546100e1906001600160a01b031681565b60006001600160e01b0319821663041de68360e41b148061017757506001600160e01b03198216621574e360e91b145b8061019257506301ffc9a760e01b6001600160e01b03198316145b92915050565b6101a061022a565b5060408051606081018252600181526004602082015260009181019190915290565b600080546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d69190a35050565b60405180606001604052806003906020820280368337509192915050565b60006020828403121561025a57600080fd5b81356001600160e01b03198116811461027257600080fd5b9392505050565b60608101818360005b60038110156102a457815160ff16835260209283019290910190600101610282565b50505092915050565b60208101600383106102cf57634e487b7160e01b600052602160045260246000fd5b91905290565b6000602082840312156102e757600080fd5b81356001600160a01b038116811461027257600080fdfea164736f6c6343000811000aa164736f6c6343000811000a60a060405234801561001057600080fd5b5060405161039938038061039983398101604081905261002f91610044565b6001600160a01b031660805260018055610074565b60006020828403121561005657600080fd5b81516001600160a01b038116811461006d57600080fd5b9392505050565b60805161030b61008e600039600060c1015261030b6000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806341de68301161005b57806341de6830146100f95780636accab8c14610108578063776d1a011461011f578063d4b839921461013457600080fd5b806301ffc9a7146100825780632ae9c600146100aa5780634162169f146100bf575b600080fd5b610095610090366004610248565b610147565b60405190151581526020015b60405180910390f35b6100b2610198565b6040516100a19190610279565b7f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020016100a1565b60026040516100a191906102ad565b61011160015481565b6040519081526020016100a1565b61013261012d3660046102d5565b6101c2565b005b6000546100e1906001600160a01b031681565b60006001600160e01b0319821663041de68360e41b148061017757506001600160e01b03198216621574e360e91b145b8061019257506301ffc9a760e01b6001600160e01b03198316145b92915050565b6101a061022a565b5060408051606081018252600181526004602082015260009181019190915290565b600080546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d69190a35050565b60405180606001604052806003906020820280368337509192915050565b60006020828403121561025a57600080fd5b81356001600160e01b03198116811461027257600080fd5b9392505050565b60608101818360005b60038110156102a457815160ff16835260209283019290910190600101610282565b50505092915050565b60208101600383106102cf57634e487b7160e01b600052602160045260246000fd5b91905290565b6000602082840312156102e757600080fd5b81356001600160a01b038116811461027257600080fdfea164736f6c6343000811000a","opcodes":"PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 PUSH1 0x40 MLOAD PUSH2 0x1F SWAP1 PUSH2 0x5D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH2 0x4B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x80 MSTORE PUSH2 0x6A JUMP JUMPDEST PUSH2 0x399 DUP1 PUSH2 0xDA4 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH2 0xD20 PUSH2 0x84 PUSH1 0x0 CODECOPY PUSH1 0x0 PUSH1 0xC1 ADD MSTORE PUSH2 0xD20 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x72 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9CB0A124 GT PUSH2 0x50 JUMPI DUP1 PUSH4 0x9CB0A124 EQ PUSH2 0xEB JUMPI DUP1 PUSH4 0xA8A9C29E EQ PUSH2 0x10B JUMPI DUP1 PUSH4 0xF10832F1 EQ PUSH2 0x12C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x77 JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0x9F JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0xB4 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8A PUSH2 0x85 CALLDATASIZE PUSH1 0x4 PUSH2 0x501 JUMP JUMPDEST PUSH2 0x14D JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xA7 PUSH2 0x19E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x96 SWAP2 SWAP1 PUSH2 0x52B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x96 JUMP JUMPDEST PUSH2 0xFE PUSH2 0xF9 CALLDATASIZE PUSH1 0x4 PUSH2 0x58D JUMP JUMPDEST PUSH2 0x1C8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x96 SWAP2 SWAP1 PUSH2 0x657 JUMP JUMPDEST PUSH2 0x11E PUSH2 0x119 CALLDATASIZE PUSH1 0x4 PUSH2 0x6A0 JUMP JUMPDEST PUSH2 0x1DE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x96 SWAP3 SWAP2 SWAP1 PUSH2 0x79A JUMP JUMPDEST PUSH2 0x13F PUSH2 0x13A CALLDATASIZE PUSH1 0x4 PUSH2 0x815 JUMP JUMPDEST PUSH2 0x216 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x96 SWAP3 SWAP2 SWAP1 PUSH2 0x8D7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x99718B5 PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x17D JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x198 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1A6 PUSH2 0x4D6 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1D7 PUSH1 0x0 PUSH1 0x1 DUP1 PUSH2 0x298 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1FD PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xA1128101 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x235 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST DUP4 PUSH1 0x40 MLOAD PUSH2 0x242 SWAP1 PUSH2 0x4F4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH2 0x26E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP SWAP2 POP PUSH2 0x27B PUSH1 0x1 PUSH2 0x41D JUMP JUMPDEST DUP2 MSTORE PUSH2 0x28A PUSH1 0x0 PUSH1 0x1 DUP2 PUSH2 0x298 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE SWAP1 SWAP4 SWAP1 SWAP3 POP SWAP1 POP JUMP JUMPDEST PUSH1 0x60 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH2 0x2CD JUMPI PUSH1 0x40 MLOAD PUSH4 0x3A4013CD PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2D7 DUP5 DUP5 PUSH2 0x917 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2F8 JUMPI PUSH2 0x2F8 PUSH2 0x7FF JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x351 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD DUP3 SWAP1 MSTORE SWAP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 DUP3 ADD MSTORE DUP3 MSTORE PUSH1 0x0 NOT SWAP1 SWAP3 ADD SWAP2 ADD DUP2 PUSH2 0x316 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP DUP4 JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT ISZERO PUSH2 0x415 JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 DUP5 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x38D JUMPI PUSH2 0x38D PUSH2 0x5DB JUMP JUMPDEST DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x60 DUP3 ADD MSTORE PUSH32 0xA280EEC51AB8E1BC4B6B0C1B7F1BDE785761B787A49DB404E3E9338ED9B016EF PUSH1 0x80 SWAP1 SWAP2 ADD MSTORE DUP3 PUSH2 0x3DE DUP8 DUP5 PUSH2 0x917 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MLOAD DUP2 LT PUSH2 0x3F7 JUMPI PUSH2 0x3F7 PUSH2 0x93E JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP DUP1 DUP1 PUSH2 0x40D SWAP1 PUSH2 0x954 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x356 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x441 JUMPI PUSH2 0x441 PUSH2 0x7FF JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x46A JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT ISZERO PUSH2 0x4D0 JUMPI DUP1 DUP3 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MLOAD DUP2 LT PUSH2 0x4A6 JUMPI PUSH2 0x4A6 PUSH2 0x93E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE DUP1 PUSH2 0x4C8 DUP2 PUSH2 0x954 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x470 JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x399 DUP1 PUSH2 0x97B DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x513 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x1D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0x556 JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x534 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x576 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x5A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5A9 DUP4 PUSH2 0x55F JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x5C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5D1 DUP6 DUP3 DUP7 ADD PUSH2 0x57B JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP2 MLOAD PUSH1 0x3 DUP2 LT PUSH2 0x613 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP4 MSTORE POP PUSH1 0x20 DUP2 DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP1 DUP4 ADD MLOAD DUP3 AND SWAP1 DUP5 ADD MSTORE PUSH1 0x60 DUP1 DUP4 ADD MLOAD SWAP1 SWAP2 AND SWAP1 DUP4 ADD MSTORE PUSH1 0x80 SWAP1 DUP2 ADD MLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x694 JUMPI PUSH2 0x686 DUP4 DUP6 MLOAD PUSH2 0x5F1 JUMP JUMPDEST SWAP4 DUP6 ADD SWAP4 SWAP3 POP PUSH1 0x1 ADD PUSH2 0x673 JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x6B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x6BE DUP5 PUSH2 0x55F JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH2 0x6D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x6F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x6FD DUP7 DUP3 DUP8 ADD PUSH2 0x57B JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x40 DUP1 DUP5 MSTORE DUP2 MLOAD SWAP1 DUP5 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x20 SWAP2 SWAP1 DUP3 ADD SWAP1 PUSH1 0x60 DUP7 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x74C JUMPI DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x727 JUMP JUMPDEST POP POP DUP5 DUP4 ADD MLOAD DUP7 DUP3 SUB DUP8 DUP6 ADD MSTORE DUP1 MLOAD DUP1 DUP4 MSTORE SWAP1 DUP5 ADD SWAP3 POP PUSH1 0x0 SWAP2 DUP5 ADD SWAP1 JUMPDEST DUP1 DUP4 LT ISZERO PUSH2 0x78F JUMPI PUSH2 0x77D DUP3 DUP6 MLOAD PUSH2 0x5F1 JUMP JUMPDEST SWAP2 POP DUP5 DUP5 ADD SWAP4 POP PUSH1 0x1 DUP4 ADD SWAP3 POP PUSH2 0x76A JUMP JUMPDEST POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 DUP4 MLOAD DUP1 PUSH1 0x40 DUP5 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x7C8 JUMPI PUSH1 0x20 DUP2 DUP8 ADD DUP2 ADD MLOAD PUSH1 0x60 DUP7 DUP5 ADD ADD MSTORE ADD PUSH2 0x7AB JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x60 DUP3 DUP6 ADD ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP4 ADD SWAP1 POP PUSH1 0x60 DUP4 DUP3 SUB ADD PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x7F6 PUSH1 0x60 DUP3 ADD DUP6 PUSH2 0x707 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x828 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x831 DUP4 PUSH2 0x55F JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x84E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x862 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x874 JUMPI PUSH2 0x874 PUSH2 0x7FF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x89C JUMPI PUSH2 0x89C PUSH2 0x7FF JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x8B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0x8F9 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x707 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND DUP3 DUP3 AND SUB SWAP1 DUP1 DUP3 GT ISZERO PUSH2 0x937 JUMPI PUSH2 0x937 PUSH2 0x901 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND DUP2 DUP2 SUB PUSH2 0x970 JUMPI PUSH2 0x970 PUSH2 0x901 JUMP JUMPDEST PUSH1 0x1 ADD SWAP4 SWAP3 POP POP POP JUMP INVALID PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x399 CODESIZE SUB DUP1 PUSH2 0x399 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0x44 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x80 MSTORE PUSH1 0x1 DUP1 SSTORE PUSH2 0x74 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x56 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x6D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH2 0x30B PUSH2 0x8E PUSH1 0x0 CODECOPY PUSH1 0x0 PUSH1 0xC1 ADD MSTORE PUSH2 0x30B PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x7D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x41DE6830 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x41DE6830 EQ PUSH2 0xF9 JUMPI DUP1 PUSH4 0x6ACCAB8C EQ PUSH2 0x108 JUMPI DUP1 PUSH4 0x776D1A01 EQ PUSH2 0x11F JUMPI DUP1 PUSH4 0xD4B83992 EQ PUSH2 0x134 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x82 JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0xAA JUMPI DUP1 PUSH4 0x4162169F EQ PUSH2 0xBF JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x95 PUSH2 0x90 CALLDATASIZE PUSH1 0x4 PUSH2 0x248 JUMP JUMPDEST PUSH2 0x147 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xB2 PUSH2 0x198 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA1 SWAP2 SWAP1 PUSH2 0x279 JUMP JUMPDEST PUSH32 0x0 JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xA1 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x40 MLOAD PUSH2 0xA1 SWAP2 SWAP1 PUSH2 0x2AD JUMP JUMPDEST PUSH2 0x111 PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xA1 JUMP JUMPDEST PUSH2 0x132 PUSH2 0x12D CALLDATASIZE PUSH1 0x4 PUSH2 0x2D5 JUMP JUMPDEST PUSH2 0x1C2 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0xE1 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x41DE683 PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x177 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x192 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1A0 PUSH2 0x22A JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 DUP4 AND DUP2 OR DUP5 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 DUP4 SWAP2 PUSH32 0x90CC2F570A6EB594B1580EA3E41247D2D73A55281889E86BD4EC2FC29C7E62D6 SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x25A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x272 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0x2A4 JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x282 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH1 0x3 DUP4 LT PUSH2 0x2CF JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 SWAP1 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x272 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x399 CODESIZE SUB DUP1 PUSH2 0x399 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0x44 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x80 MSTORE PUSH1 0x1 DUP1 SSTORE PUSH2 0x74 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x56 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x6D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH2 0x30B PUSH2 0x8E PUSH1 0x0 CODECOPY PUSH1 0x0 PUSH1 0xC1 ADD MSTORE PUSH2 0x30B PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x7D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x41DE6830 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x41DE6830 EQ PUSH2 0xF9 JUMPI DUP1 PUSH4 0x6ACCAB8C EQ PUSH2 0x108 JUMPI DUP1 PUSH4 0x776D1A01 EQ PUSH2 0x11F JUMPI DUP1 PUSH4 0xD4B83992 EQ PUSH2 0x134 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x82 JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0xAA JUMPI DUP1 PUSH4 0x4162169F EQ PUSH2 0xBF JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x95 PUSH2 0x90 CALLDATASIZE PUSH1 0x4 PUSH2 0x248 JUMP JUMPDEST PUSH2 0x147 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xB2 PUSH2 0x198 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA1 SWAP2 SWAP1 PUSH2 0x279 JUMP JUMPDEST PUSH32 0x0 JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xA1 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x40 MLOAD PUSH2 0xA1 SWAP2 SWAP1 PUSH2 0x2AD JUMP JUMPDEST PUSH2 0x111 PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xA1 JUMP JUMPDEST PUSH2 0x132 PUSH2 0x12D CALLDATASIZE PUSH1 0x4 PUSH2 0x2D5 JUMP JUMPDEST PUSH2 0x1C2 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0xE1 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x41DE683 PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x177 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x192 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1A0 PUSH2 0x22A JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 DUP4 AND DUP2 OR DUP5 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 DUP4 SWAP2 PUSH32 0x90CC2F570A6EB594B1580EA3E41247D2D73A55281889E86BD4EC2FC29C7E62D6 SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x25A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x272 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0x2A4 JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x282 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH1 0x3 DUP4 LT PUSH2 0x2CF JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 SWAP1 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x272 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"624:892:29:-:0;;;676:77;;;;;;;;;;744:1;710:38;;;;;:::i;:::-;-1:-1:-1;;;;;191:32:50;;;173:51;;161:2;146:18;710:38:29;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1454:32:45;;;624:892:29;;;;;;;;;;:::o;14:216:50:-;624:892:29;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@implementation_4956":{"entryPoint":null,"id":4956,"parameterSlots":0,"returnSlots":1},"@mockHelpers_3108":{"entryPoint":1053,"id":3108,"parameterSlots":1,"returnSlots":1},"@mockPermissions_3069":{"entryPoint":664,"id":3069,"parameterSlots":3,"returnSlots":1},"@prepareInstallation_2958":{"entryPoint":534,"id":2958,"parameterSlots":2,"returnSlots":2},"@prepareUninstallation_2986":{"entryPoint":456,"id":2986,"parameterSlots":2,"returnSlots":1},"@prepareUpdate_4918":{"entryPoint":478,"id":4918,"parameterSlots":3,"returnSlots":2},"@protocolVersion_5135":{"entryPoint":414,"id":5135,"parameterSlots":0,"returnSlots":1},"@supportsInterface_2374":{"entryPoint":null,"id":2374,"parameterSlots":1,"returnSlots":1},"@supportsInterface_4947":{"entryPoint":333,"id":4947,"parameterSlots":1,"returnSlots":1},"abi_decode_address":{"entryPoint":1375,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_struct_SetupPayload_calldata":{"entryPoint":1403,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_bytes_memory_ptr":{"entryPoint":2069,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_struct$_SetupPayload_$4810_calldata_ptr":{"entryPoint":1421,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_uint16t_struct$_SetupPayload_$4810_calldata_ptr":{"entryPoint":1696,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_bytes4":{"entryPoint":1281,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encodeUpdatedPos_struct_MultiTargetPermission":{"entryPoint":1521,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_struct_PreparedSetupData":{"entryPoint":1799,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address_t_struct$_PreparedSetupData_$4802_memory_ptr__to_t_address_t_struct$_PreparedSetupData_$4802_memory_ptr__fromStack_reversed":{"entryPoint":2263,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr__fromStack_reversed":{"entryPoint":1623,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed":{"entryPoint":1323,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$4802_memory_ptr__to_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$4802_memory_ptr__fromStack_reversed":{"entryPoint":1946,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_contract$_IDAO_$2538__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_t_uint160":{"entryPoint":2327,"id":null,"parameterSlots":2,"returnSlots":1},"increment_t_uint160":{"entryPoint":2388,"id":null,"parameterSlots":1,"returnSlots":1},"panic_error_0x11":{"entryPoint":2305,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x21":{"entryPoint":1499,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x32":{"entryPoint":2366,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":2047,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:8649:50","statements":[{"nodeType":"YulBlock","src":"6:3:50","statements":[]},{"body":{"nodeType":"YulBlock","src":"83:217:50","statements":[{"body":{"nodeType":"YulBlock","src":"129:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"138:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"141:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"131:6:50"},"nodeType":"YulFunctionCall","src":"131:12:50"},"nodeType":"YulExpressionStatement","src":"131:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"104:7:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"113:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"100:3:50"},"nodeType":"YulFunctionCall","src":"100:23:50"},{"kind":"number","nodeType":"YulLiteral","src":"125:2:50","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"96:3:50"},"nodeType":"YulFunctionCall","src":"96:32:50"},"nodeType":"YulIf","src":"93:52:50"},{"nodeType":"YulVariableDeclaration","src":"154:36:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"180:9:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"167:12:50"},"nodeType":"YulFunctionCall","src":"167:23:50"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"158:5:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"254:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"263:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"266:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"256:6:50"},"nodeType":"YulFunctionCall","src":"256:12:50"},"nodeType":"YulExpressionStatement","src":"256:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"212:5:50"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"223:5:50"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"234:3:50","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"239:10:50","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"230:3:50"},"nodeType":"YulFunctionCall","src":"230:20:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"219:3:50"},"nodeType":"YulFunctionCall","src":"219:32:50"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"209:2:50"},"nodeType":"YulFunctionCall","src":"209:43:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"202:6:50"},"nodeType":"YulFunctionCall","src":"202:51:50"},"nodeType":"YulIf","src":"199:71:50"},{"nodeType":"YulAssignment","src":"279:15:50","value":{"name":"value","nodeType":"YulIdentifier","src":"289:5:50"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"279:6:50"}]}]},"name":"abi_decode_tuple_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"49:9:50","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"60:7:50","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"72:6:50","type":""}],"src":"14:286:50"},{"body":{"nodeType":"YulBlock","src":"400:92:50","statements":[{"nodeType":"YulAssignment","src":"410:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"422:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"433:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"418:3:50"},"nodeType":"YulFunctionCall","src":"418:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"410:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"452:9:50"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"477:6:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"470:6:50"},"nodeType":"YulFunctionCall","src":"470:14:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"463:6:50"},"nodeType":"YulFunctionCall","src":"463:22:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"445:6:50"},"nodeType":"YulFunctionCall","src":"445:41:50"},"nodeType":"YulExpressionStatement","src":"445:41:50"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"369:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"380:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"391:4:50","type":""}],"src":"305:187:50"},{"body":{"nodeType":"YulBlock","src":"640:358:50","statements":[{"nodeType":"YulAssignment","src":"650:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"662:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"673:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"658:3:50"},"nodeType":"YulFunctionCall","src":"658:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"650:4:50"}]},{"nodeType":"YulVariableDeclaration","src":"685:20:50","value":{"name":"headStart","nodeType":"YulIdentifier","src":"696:9:50"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"689:3:50","type":""}]},{"nodeType":"YulAssignment","src":"714:16:50","value":{"name":"headStart","nodeType":"YulIdentifier","src":"721:9:50"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"714:3:50"}]},{"nodeType":"YulVariableDeclaration","src":"739:20:50","value":{"name":"value0","nodeType":"YulIdentifier","src":"753:6:50"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"743:6:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"768:10:50","value":{"kind":"number","nodeType":"YulLiteral","src":"777:1:50","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"772:1:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"834:158:50","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"855:3:50"},{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"870:6:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"864:5:50"},"nodeType":"YulFunctionCall","src":"864:13:50"},{"kind":"number","nodeType":"YulLiteral","src":"879:4:50","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"860:3:50"},"nodeType":"YulFunctionCall","src":"860:24:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"848:6:50"},"nodeType":"YulFunctionCall","src":"848:37:50"},"nodeType":"YulExpressionStatement","src":"848:37:50"},{"nodeType":"YulVariableDeclaration","src":"898:14:50","value":{"kind":"number","nodeType":"YulLiteral","src":"908:4:50","type":"","value":"0x20"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"902:2:50","type":""}]},{"nodeType":"YulAssignment","src":"925:19:50","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"936:3:50"},{"name":"_1","nodeType":"YulIdentifier","src":"941:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"932:3:50"},"nodeType":"YulFunctionCall","src":"932:12:50"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"925:3:50"}]},{"nodeType":"YulAssignment","src":"957:25:50","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"971:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"979:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"967:3:50"},"nodeType":"YulFunctionCall","src":"967:15:50"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"957:6:50"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"798:1:50"},{"kind":"number","nodeType":"YulLiteral","src":"801:4:50","type":"","value":"0x03"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"795:2:50"},"nodeType":"YulFunctionCall","src":"795:11:50"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"807:18:50","statements":[{"nodeType":"YulAssignment","src":"809:14:50","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"818:1:50"},{"kind":"number","nodeType":"YulLiteral","src":"821:1:50","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"814:3:50"},"nodeType":"YulFunctionCall","src":"814:9:50"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"809:1:50"}]}]},"pre":{"nodeType":"YulBlock","src":"791:3:50","statements":[]},"src":"787:205:50"}]},"name":"abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"609:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"620:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"631:4:50","type":""}],"src":"497:501:50"},{"body":{"nodeType":"YulBlock","src":"1104:125:50","statements":[{"nodeType":"YulAssignment","src":"1114:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1126:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"1137:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1122:3:50"},"nodeType":"YulFunctionCall","src":"1122:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1114:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1156:9:50"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1171:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"1179:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1167:3:50"},"nodeType":"YulFunctionCall","src":"1167:55:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1149:6:50"},"nodeType":"YulFunctionCall","src":"1149:74:50"},"nodeType":"YulExpressionStatement","src":"1149:74:50"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1073:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1084:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1095:4:50","type":""}],"src":"1003:226:50"},{"body":{"nodeType":"YulBlock","src":"1283:147:50","statements":[{"nodeType":"YulAssignment","src":"1293:29:50","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1315:6:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1302:12:50"},"nodeType":"YulFunctionCall","src":"1302:20:50"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"1293:5:50"}]},{"body":{"nodeType":"YulBlock","src":"1408:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1417:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1420:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1410:6:50"},"nodeType":"YulFunctionCall","src":"1410:12:50"},"nodeType":"YulExpressionStatement","src":"1410:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1344:5:50"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1355:5:50"},{"kind":"number","nodeType":"YulLiteral","src":"1362:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1351:3:50"},"nodeType":"YulFunctionCall","src":"1351:54:50"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1341:2:50"},"nodeType":"YulFunctionCall","src":"1341:65:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1334:6:50"},"nodeType":"YulFunctionCall","src":"1334:73:50"},"nodeType":"YulIf","src":"1331:93:50"}]},"name":"abi_decode_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"1262:6:50","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"1273:5:50","type":""}],"src":"1234:196:50"},{"body":{"nodeType":"YulBlock","src":"1510:85:50","statements":[{"body":{"nodeType":"YulBlock","src":"1549:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1558:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1561:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1551:6:50"},"nodeType":"YulFunctionCall","src":"1551:12:50"},"nodeType":"YulExpressionStatement","src":"1551:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"end","nodeType":"YulIdentifier","src":"1531:3:50"},{"name":"offset","nodeType":"YulIdentifier","src":"1536:6:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1527:3:50"},"nodeType":"YulFunctionCall","src":"1527:16:50"},{"kind":"number","nodeType":"YulLiteral","src":"1545:2:50","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1523:3:50"},"nodeType":"YulFunctionCall","src":"1523:25:50"},"nodeType":"YulIf","src":"1520:45:50"},{"nodeType":"YulAssignment","src":"1574:15:50","value":{"name":"offset","nodeType":"YulIdentifier","src":"1583:6:50"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"1574:5:50"}]}]},"name":"abi_decode_struct_SetupPayload_calldata","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"1484:6:50","type":""},{"name":"end","nodeType":"YulTypedName","src":"1492:3:50","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"1500:5:50","type":""}],"src":"1435:160:50"},{"body":{"nodeType":"YulBlock","src":"1719:321:50","statements":[{"body":{"nodeType":"YulBlock","src":"1765:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1774:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1777:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1767:6:50"},"nodeType":"YulFunctionCall","src":"1767:12:50"},"nodeType":"YulExpressionStatement","src":"1767:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1740:7:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"1749:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1736:3:50"},"nodeType":"YulFunctionCall","src":"1736:23:50"},{"kind":"number","nodeType":"YulLiteral","src":"1761:2:50","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1732:3:50"},"nodeType":"YulFunctionCall","src":"1732:32:50"},"nodeType":"YulIf","src":"1729:52:50"},{"nodeType":"YulAssignment","src":"1790:39:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1819:9:50"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"1800:18:50"},"nodeType":"YulFunctionCall","src":"1800:29:50"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1790:6:50"}]},{"nodeType":"YulVariableDeclaration","src":"1838:46:50","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1869:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"1880:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1865:3:50"},"nodeType":"YulFunctionCall","src":"1865:18:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1852:12:50"},"nodeType":"YulFunctionCall","src":"1852:32:50"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1842:6:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"1927:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1936:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1939:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1929:6:50"},"nodeType":"YulFunctionCall","src":"1929:12:50"},"nodeType":"YulExpressionStatement","src":"1929:12:50"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1899:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"1907:18:50","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1896:2:50"},"nodeType":"YulFunctionCall","src":"1896:30:50"},"nodeType":"YulIf","src":"1893:50:50"},{"nodeType":"YulAssignment","src":"1952:82:50","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2006:9:50"},{"name":"offset","nodeType":"YulIdentifier","src":"2017:6:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2002:3:50"},"nodeType":"YulFunctionCall","src":"2002:22:50"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2026:7:50"}],"functionName":{"name":"abi_decode_struct_SetupPayload_calldata","nodeType":"YulIdentifier","src":"1962:39:50"},"nodeType":"YulFunctionCall","src":"1962:72:50"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1952:6:50"}]}]},"name":"abi_decode_tuple_t_addresst_struct$_SetupPayload_$4810_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1677:9:50","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1688:7:50","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1700:6:50","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1708:6:50","type":""}],"src":"1600:440:50"},{"body":{"nodeType":"YulBlock","src":"2077:95:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2094:1:50","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2101:3:50","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"2106:10:50","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2097:3:50"},"nodeType":"YulFunctionCall","src":"2097:20:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2087:6:50"},"nodeType":"YulFunctionCall","src":"2087:31:50"},"nodeType":"YulExpressionStatement","src":"2087:31:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2134:1:50","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"2137:4:50","type":"","value":"0x21"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2127:6:50"},"nodeType":"YulFunctionCall","src":"2127:15:50"},"nodeType":"YulExpressionStatement","src":"2127:15:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2158:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2161:4:50","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2151:6:50"},"nodeType":"YulFunctionCall","src":"2151:15:50"},"nodeType":"YulExpressionStatement","src":"2151:15:50"}]},"name":"panic_error_0x21","nodeType":"YulFunctionDefinition","src":"2045:127:50"},{"body":{"nodeType":"YulBlock","src":"2267:606:50","statements":[{"nodeType":"YulVariableDeclaration","src":"2277:23:50","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2293:6:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2287:5:50"},"nodeType":"YulFunctionCall","src":"2287:13:50"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"2281:2:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"2338:111:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2359:1:50","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2366:3:50","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"2371:10:50","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2362:3:50"},"nodeType":"YulFunctionCall","src":"2362:20:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2352:6:50"},"nodeType":"YulFunctionCall","src":"2352:31:50"},"nodeType":"YulExpressionStatement","src":"2352:31:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2403:1:50","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"2406:4:50","type":"","value":"0x21"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2396:6:50"},"nodeType":"YulFunctionCall","src":"2396:15:50"},"nodeType":"YulExpressionStatement","src":"2396:15:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2431:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2434:4:50","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2424:6:50"},"nodeType":"YulFunctionCall","src":"2424:15:50"},"nodeType":"YulExpressionStatement","src":"2424:15:50"}]},"condition":{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"2322:2:50"},{"kind":"number","nodeType":"YulLiteral","src":"2326:1:50","type":"","value":"3"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2319:2:50"},"nodeType":"YulFunctionCall","src":"2319:9:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2312:6:50"},"nodeType":"YulFunctionCall","src":"2312:17:50"},"nodeType":"YulIf","src":"2309:140:50"},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2465:3:50"},{"name":"_1","nodeType":"YulIdentifier","src":"2470:2:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2458:6:50"},"nodeType":"YulFunctionCall","src":"2458:15:50"},"nodeType":"YulExpressionStatement","src":"2458:15:50"},{"nodeType":"YulVariableDeclaration","src":"2482:44:50","value":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2512:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"2520:4:50","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2508:3:50"},"nodeType":"YulFunctionCall","src":"2508:17:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2502:5:50"},"nodeType":"YulFunctionCall","src":"2502:24:50"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"2486:12:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2535:52:50","value":{"kind":"number","nodeType":"YulLiteral","src":"2545:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"2539:2:50","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2607:3:50"},{"kind":"number","nodeType":"YulLiteral","src":"2612:4:50","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2603:3:50"},"nodeType":"YulFunctionCall","src":"2603:14:50"},{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"2623:12:50"},{"name":"_2","nodeType":"YulIdentifier","src":"2637:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2619:3:50"},"nodeType":"YulFunctionCall","src":"2619:21:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2596:6:50"},"nodeType":"YulFunctionCall","src":"2596:45:50"},"nodeType":"YulExpressionStatement","src":"2596:45:50"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2661:3:50"},{"kind":"number","nodeType":"YulLiteral","src":"2666:4:50","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2657:3:50"},"nodeType":"YulFunctionCall","src":"2657:14:50"},{"arguments":[{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2687:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"2695:4:50","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2683:3:50"},"nodeType":"YulFunctionCall","src":"2683:17:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2677:5:50"},"nodeType":"YulFunctionCall","src":"2677:24:50"},{"name":"_2","nodeType":"YulIdentifier","src":"2703:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2673:3:50"},"nodeType":"YulFunctionCall","src":"2673:33:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2650:6:50"},"nodeType":"YulFunctionCall","src":"2650:57:50"},"nodeType":"YulExpressionStatement","src":"2650:57:50"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2727:3:50"},{"kind":"number","nodeType":"YulLiteral","src":"2732:4:50","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2723:3:50"},"nodeType":"YulFunctionCall","src":"2723:14:50"},{"arguments":[{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2753:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"2761:4:50","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2749:3:50"},"nodeType":"YulFunctionCall","src":"2749:17:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2743:5:50"},"nodeType":"YulFunctionCall","src":"2743:24:50"},{"name":"_2","nodeType":"YulIdentifier","src":"2769:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2739:3:50"},"nodeType":"YulFunctionCall","src":"2739:33:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2716:6:50"},"nodeType":"YulFunctionCall","src":"2716:57:50"},"nodeType":"YulExpressionStatement","src":"2716:57:50"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2793:3:50"},{"kind":"number","nodeType":"YulLiteral","src":"2798:4:50","type":"","value":"0x80"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2789:3:50"},"nodeType":"YulFunctionCall","src":"2789:14:50"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2815:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"2823:4:50","type":"","value":"0x80"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2811:3:50"},"nodeType":"YulFunctionCall","src":"2811:17:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2805:5:50"},"nodeType":"YulFunctionCall","src":"2805:24:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2782:6:50"},"nodeType":"YulFunctionCall","src":"2782:48:50"},"nodeType":"YulExpressionStatement","src":"2782:48:50"},{"nodeType":"YulAssignment","src":"2839:28:50","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2857:3:50"},{"kind":"number","nodeType":"YulLiteral","src":"2862:4:50","type":"","value":"0xa0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2853:3:50"},"nodeType":"YulFunctionCall","src":"2853:14:50"},"variableNames":[{"name":"updatedPos","nodeType":"YulIdentifier","src":"2839:10:50"}]}]},"name":"abi_encodeUpdatedPos_struct_MultiTargetPermission","nodeType":"YulFunctionDefinition","parameters":[{"name":"value0","nodeType":"YulTypedName","src":"2236:6:50","type":""},{"name":"pos","nodeType":"YulTypedName","src":"2244:3:50","type":""}],"returnVariables":[{"name":"updatedPos","nodeType":"YulTypedName","src":"2252:10:50","type":""}],"src":"2177:696:50"},{"body":{"nodeType":"YulBlock","src":"3107:499:50","statements":[{"nodeType":"YulVariableDeclaration","src":"3117:12:50","value":{"kind":"number","nodeType":"YulLiteral","src":"3127:2:50","type":"","value":"32"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"3121:2:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3138:32:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3156:9:50"},{"name":"_1","nodeType":"YulIdentifier","src":"3167:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3152:3:50"},"nodeType":"YulFunctionCall","src":"3152:18:50"},"variables":[{"name":"tail_1","nodeType":"YulTypedName","src":"3142:6:50","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3186:9:50"},{"name":"_1","nodeType":"YulIdentifier","src":"3197:2:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3179:6:50"},"nodeType":"YulFunctionCall","src":"3179:21:50"},"nodeType":"YulExpressionStatement","src":"3179:21:50"},{"nodeType":"YulVariableDeclaration","src":"3209:17:50","value":{"name":"tail_1","nodeType":"YulIdentifier","src":"3220:6:50"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"3213:3:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3235:27:50","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3255:6:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3249:5:50"},"nodeType":"YulFunctionCall","src":"3249:13:50"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"3239:6:50","type":""}]},{"expression":{"arguments":[{"name":"tail_1","nodeType":"YulIdentifier","src":"3278:6:50"},{"name":"length","nodeType":"YulIdentifier","src":"3286:6:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3271:6:50"},"nodeType":"YulFunctionCall","src":"3271:22:50"},"nodeType":"YulExpressionStatement","src":"3271:22:50"},{"nodeType":"YulAssignment","src":"3302:25:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3313:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"3324:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3309:3:50"},"nodeType":"YulFunctionCall","src":"3309:18:50"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"3302:3:50"}]},{"nodeType":"YulVariableDeclaration","src":"3336:29:50","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3354:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"3362:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3350:3:50"},"nodeType":"YulFunctionCall","src":"3350:15:50"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"3340:6:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3374:10:50","value":{"kind":"number","nodeType":"YulLiteral","src":"3383:1:50","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"3378:1:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"3442:138:50","statements":[{"nodeType":"YulAssignment","src":"3456:76:50","value":{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"3519:6:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3513:5:50"},"nodeType":"YulFunctionCall","src":"3513:13:50"},{"name":"pos","nodeType":"YulIdentifier","src":"3528:3:50"}],"functionName":{"name":"abi_encodeUpdatedPos_struct_MultiTargetPermission","nodeType":"YulIdentifier","src":"3463:49:50"},"nodeType":"YulFunctionCall","src":"3463:69:50"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"3456:3:50"}]},{"nodeType":"YulAssignment","src":"3545:25:50","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"3559:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"3567:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3555:3:50"},"nodeType":"YulFunctionCall","src":"3555:15:50"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"3545:6:50"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3404:1:50"},{"name":"length","nodeType":"YulIdentifier","src":"3407:6:50"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"3401:2:50"},"nodeType":"YulFunctionCall","src":"3401:13:50"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"3415:18:50","statements":[{"nodeType":"YulAssignment","src":"3417:14:50","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3426:1:50"},{"kind":"number","nodeType":"YulLiteral","src":"3429:1:50","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3422:3:50"},"nodeType":"YulFunctionCall","src":"3422:9:50"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"3417:1:50"}]}]},"pre":{"nodeType":"YulBlock","src":"3397:3:50","statements":[]},"src":"3393:187:50"},{"nodeType":"YulAssignment","src":"3589:11:50","value":{"name":"pos","nodeType":"YulIdentifier","src":"3597:3:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3589:4:50"}]}]},"name":"abi_encode_tuple_t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3076:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3087:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3098:4:50","type":""}],"src":"2878:728:50"},{"body":{"nodeType":"YulBlock","src":"3746:465:50","statements":[{"body":{"nodeType":"YulBlock","src":"3792:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3801:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3804:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3794:6:50"},"nodeType":"YulFunctionCall","src":"3794:12:50"},"nodeType":"YulExpressionStatement","src":"3794:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3767:7:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"3776:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3763:3:50"},"nodeType":"YulFunctionCall","src":"3763:23:50"},{"kind":"number","nodeType":"YulLiteral","src":"3788:2:50","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3759:3:50"},"nodeType":"YulFunctionCall","src":"3759:32:50"},"nodeType":"YulIf","src":"3756:52:50"},{"nodeType":"YulAssignment","src":"3817:39:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3846:9:50"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"3827:18:50"},"nodeType":"YulFunctionCall","src":"3827:29:50"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3817:6:50"}]},{"nodeType":"YulVariableDeclaration","src":"3865:45:50","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3895:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"3906:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3891:3:50"},"nodeType":"YulFunctionCall","src":"3891:18:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3878:12:50"},"nodeType":"YulFunctionCall","src":"3878:32:50"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"3869:5:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"3960:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3969:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3972:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3962:6:50"},"nodeType":"YulFunctionCall","src":"3962:12:50"},"nodeType":"YulExpressionStatement","src":"3962:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3932:5:50"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3943:5:50"},{"kind":"number","nodeType":"YulLiteral","src":"3950:6:50","type":"","value":"0xffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3939:3:50"},"nodeType":"YulFunctionCall","src":"3939:18:50"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"3929:2:50"},"nodeType":"YulFunctionCall","src":"3929:29:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3922:6:50"},"nodeType":"YulFunctionCall","src":"3922:37:50"},"nodeType":"YulIf","src":"3919:57:50"},{"nodeType":"YulAssignment","src":"3985:15:50","value":{"name":"value","nodeType":"YulIdentifier","src":"3995:5:50"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"3985:6:50"}]},{"nodeType":"YulVariableDeclaration","src":"4009:46:50","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4040:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"4051:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4036:3:50"},"nodeType":"YulFunctionCall","src":"4036:18:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4023:12:50"},"nodeType":"YulFunctionCall","src":"4023:32:50"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4013:6:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"4098:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4107:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4110:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4100:6:50"},"nodeType":"YulFunctionCall","src":"4100:12:50"},"nodeType":"YulExpressionStatement","src":"4100:12:50"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"4070:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"4078:18:50","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4067:2:50"},"nodeType":"YulFunctionCall","src":"4067:30:50"},"nodeType":"YulIf","src":"4064:50:50"},{"nodeType":"YulAssignment","src":"4123:82:50","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4177:9:50"},{"name":"offset","nodeType":"YulIdentifier","src":"4188:6:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4173:3:50"},"nodeType":"YulFunctionCall","src":"4173:22:50"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4197:7:50"}],"functionName":{"name":"abi_decode_struct_SetupPayload_calldata","nodeType":"YulIdentifier","src":"4133:39:50"},"nodeType":"YulFunctionCall","src":"4133:72:50"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"4123:6:50"}]}]},"name":"abi_decode_tuple_t_addresst_uint16t_struct$_SetupPayload_$4810_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3696:9:50","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3707:7:50","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3719:6:50","type":""},{"name":"value1","nodeType":"YulTypedName","src":"3727:6:50","type":""},{"name":"value2","nodeType":"YulTypedName","src":"3735:6:50","type":""}],"src":"3611:600:50"},{"body":{"nodeType":"YulBlock","src":"4284:1094:50","statements":[{"nodeType":"YulVariableDeclaration","src":"4294:26:50","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4310:3:50"},{"kind":"number","nodeType":"YulLiteral","src":"4315:4:50","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4306:3:50"},"nodeType":"YulFunctionCall","src":"4306:14:50"},"variables":[{"name":"tail","nodeType":"YulTypedName","src":"4298:4:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4329:32:50","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4355:5:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4349:5:50"},"nodeType":"YulFunctionCall","src":"4349:12:50"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"4333:12:50","type":""}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4377:3:50"},{"kind":"number","nodeType":"YulLiteral","src":"4382:4:50","type":"","value":"0x40"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4370:6:50"},"nodeType":"YulFunctionCall","src":"4370:17:50"},"nodeType":"YulExpressionStatement","src":"4370:17:50"},{"nodeType":"YulVariableDeclaration","src":"4396:17:50","value":{"name":"tail","nodeType":"YulIdentifier","src":"4409:4:50"},"variables":[{"name":"pos_1","nodeType":"YulTypedName","src":"4400:5:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4422:33:50","value":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"4442:12:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4436:5:50"},"nodeType":"YulFunctionCall","src":"4436:19:50"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"4426:6:50","type":""}]},{"expression":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"4471:4:50"},{"name":"length","nodeType":"YulIdentifier","src":"4477:6:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4464:6:50"},"nodeType":"YulFunctionCall","src":"4464:20:50"},"nodeType":"YulExpressionStatement","src":"4464:20:50"},{"nodeType":"YulAssignment","src":"4493:21:50","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4506:3:50"},{"kind":"number","nodeType":"YulLiteral","src":"4511:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4502:3:50"},"nodeType":"YulFunctionCall","src":"4502:12:50"},"variableNames":[{"name":"pos_1","nodeType":"YulIdentifier","src":"4493:5:50"}]},{"nodeType":"YulVariableDeclaration","src":"4523:14:50","value":{"kind":"number","nodeType":"YulLiteral","src":"4533:4:50","type":"","value":"0x20"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"4527:2:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4546:35:50","value":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"4564:12:50"},{"name":"_1","nodeType":"YulIdentifier","src":"4578:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4560:3:50"},"nodeType":"YulFunctionCall","src":"4560:21:50"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"4550:6:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4590:10:50","value":{"kind":"number","nodeType":"YulLiteral","src":"4599:1:50","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"4594:1:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"4658:175:50","statements":[{"expression":{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"4679:5:50"},{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"4696:6:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4690:5:50"},"nodeType":"YulFunctionCall","src":"4690:13:50"},{"kind":"number","nodeType":"YulLiteral","src":"4705:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4686:3:50"},"nodeType":"YulFunctionCall","src":"4686:62:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4672:6:50"},"nodeType":"YulFunctionCall","src":"4672:77:50"},"nodeType":"YulExpressionStatement","src":"4672:77:50"},{"nodeType":"YulAssignment","src":"4762:23:50","value":{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"4775:5:50"},{"name":"_1","nodeType":"YulIdentifier","src":"4782:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4771:3:50"},"nodeType":"YulFunctionCall","src":"4771:14:50"},"variableNames":[{"name":"pos_1","nodeType":"YulIdentifier","src":"4762:5:50"}]},{"nodeType":"YulAssignment","src":"4798:25:50","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"4812:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"4820:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4808:3:50"},"nodeType":"YulFunctionCall","src":"4808:15:50"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"4798:6:50"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"4620:1:50"},{"name":"length","nodeType":"YulIdentifier","src":"4623:6:50"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"4617:2:50"},"nodeType":"YulFunctionCall","src":"4617:13:50"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"4631:18:50","statements":[{"nodeType":"YulAssignment","src":"4633:14:50","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"4642:1:50"},{"kind":"number","nodeType":"YulLiteral","src":"4645:1:50","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4638:3:50"},"nodeType":"YulFunctionCall","src":"4638:9:50"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"4633:1:50"}]}]},"pre":{"nodeType":"YulBlock","src":"4613:3:50","statements":[]},"src":"4609:224:50"},{"nodeType":"YulVariableDeclaration","src":"4842:43:50","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4874:5:50"},{"name":"_1","nodeType":"YulIdentifier","src":"4881:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4870:3:50"},"nodeType":"YulFunctionCall","src":"4870:14:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4864:5:50"},"nodeType":"YulFunctionCall","src":"4864:21:50"},"variables":[{"name":"memberValue0_1","nodeType":"YulTypedName","src":"4846:14:50","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4905:3:50"},{"name":"_1","nodeType":"YulIdentifier","src":"4910:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4901:3:50"},"nodeType":"YulFunctionCall","src":"4901:12:50"},{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"4919:5:50"},{"name":"pos","nodeType":"YulIdentifier","src":"4926:3:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4915:3:50"},"nodeType":"YulFunctionCall","src":"4915:15:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4894:6:50"},"nodeType":"YulFunctionCall","src":"4894:37:50"},"nodeType":"YulExpressionStatement","src":"4894:37:50"},{"nodeType":"YulVariableDeclaration","src":"4940:18:50","value":{"name":"pos_1","nodeType":"YulIdentifier","src":"4953:5:50"},"variables":[{"name":"pos_2","nodeType":"YulTypedName","src":"4944:5:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4967:37:50","value":{"arguments":[{"name":"memberValue0_1","nodeType":"YulIdentifier","src":"4989:14:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4983:5:50"},"nodeType":"YulFunctionCall","src":"4983:21:50"},"variables":[{"name":"length_1","nodeType":"YulTypedName","src":"4971:8:50","type":""}]},{"expression":{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5020:5:50"},{"name":"length_1","nodeType":"YulIdentifier","src":"5027:8:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5013:6:50"},"nodeType":"YulFunctionCall","src":"5013:23:50"},"nodeType":"YulExpressionStatement","src":"5013:23:50"},{"nodeType":"YulAssignment","src":"5045:23:50","value":{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5058:5:50"},{"name":"_1","nodeType":"YulIdentifier","src":"5065:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5054:3:50"},"nodeType":"YulFunctionCall","src":"5054:14:50"},"variableNames":[{"name":"pos_2","nodeType":"YulIdentifier","src":"5045:5:50"}]},{"nodeType":"YulVariableDeclaration","src":"5077:39:50","value":{"arguments":[{"name":"memberValue0_1","nodeType":"YulIdentifier","src":"5097:14:50"},{"name":"_1","nodeType":"YulIdentifier","src":"5113:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5093:3:50"},"nodeType":"YulFunctionCall","src":"5093:23:50"},"variables":[{"name":"srcPtr_1","nodeType":"YulTypedName","src":"5081:8:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5125:12:50","value":{"kind":"number","nodeType":"YulLiteral","src":"5136:1:50","type":"","value":"0"},"variables":[{"name":"i_1","nodeType":"YulTypedName","src":"5129:3:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"5203:148:50","statements":[{"nodeType":"YulAssignment","src":"5217:82:50","value":{"arguments":[{"arguments":[{"name":"srcPtr_1","nodeType":"YulIdentifier","src":"5282:8:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5276:5:50"},"nodeType":"YulFunctionCall","src":"5276:15:50"},{"name":"pos_2","nodeType":"YulIdentifier","src":"5293:5:50"}],"functionName":{"name":"abi_encodeUpdatedPos_struct_MultiTargetPermission","nodeType":"YulIdentifier","src":"5226:49:50"},"nodeType":"YulFunctionCall","src":"5226:73:50"},"variableNames":[{"name":"pos_2","nodeType":"YulIdentifier","src":"5217:5:50"}]},{"nodeType":"YulAssignment","src":"5312:29:50","value":{"arguments":[{"name":"srcPtr_1","nodeType":"YulIdentifier","src":"5328:8:50"},{"name":"_1","nodeType":"YulIdentifier","src":"5338:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5324:3:50"},"nodeType":"YulFunctionCall","src":"5324:17:50"},"variableNames":[{"name":"srcPtr_1","nodeType":"YulIdentifier","src":"5312:8:50"}]}]},"condition":{"arguments":[{"name":"i_1","nodeType":"YulIdentifier","src":"5157:3:50"},{"name":"length_1","nodeType":"YulIdentifier","src":"5162:8:50"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"5154:2:50"},"nodeType":"YulFunctionCall","src":"5154:17:50"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"5172:22:50","statements":[{"nodeType":"YulAssignment","src":"5174:18:50","value":{"arguments":[{"name":"i_1","nodeType":"YulIdentifier","src":"5185:3:50"},{"kind":"number","nodeType":"YulLiteral","src":"5190:1:50","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5181:3:50"},"nodeType":"YulFunctionCall","src":"5181:11:50"},"variableNames":[{"name":"i_1","nodeType":"YulIdentifier","src":"5174:3:50"}]}]},"pre":{"nodeType":"YulBlock","src":"5150:3:50","statements":[]},"src":"5146:205:50"},{"nodeType":"YulAssignment","src":"5360:12:50","value":{"name":"pos_2","nodeType":"YulIdentifier","src":"5367:5:50"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"5360:3:50"}]}]},"name":"abi_encode_struct_PreparedSetupData","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"4261:5:50","type":""},{"name":"pos","nodeType":"YulTypedName","src":"4268:3:50","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"4276:3:50","type":""}],"src":"4216:1162:50"},{"body":{"nodeType":"YulBlock","src":"5600:542:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5617:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"5628:2:50","type":"","value":"64"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5610:6:50"},"nodeType":"YulFunctionCall","src":"5610:21:50"},"nodeType":"YulExpressionStatement","src":"5610:21:50"},{"nodeType":"YulVariableDeclaration","src":"5640:27:50","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5660:6:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5654:5:50"},"nodeType":"YulFunctionCall","src":"5654:13:50"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"5644:6:50","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5687:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"5698:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5683:3:50"},"nodeType":"YulFunctionCall","src":"5683:18:50"},{"name":"length","nodeType":"YulIdentifier","src":"5703:6:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5676:6:50"},"nodeType":"YulFunctionCall","src":"5676:34:50"},"nodeType":"YulExpressionStatement","src":"5676:34:50"},{"nodeType":"YulVariableDeclaration","src":"5719:10:50","value":{"kind":"number","nodeType":"YulLiteral","src":"5728:1:50","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"5723:1:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"5790:92:50","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5819:9:50"},{"name":"i","nodeType":"YulIdentifier","src":"5830:1:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5815:3:50"},"nodeType":"YulFunctionCall","src":"5815:17:50"},{"kind":"number","nodeType":"YulLiteral","src":"5834:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5811:3:50"},"nodeType":"YulFunctionCall","src":"5811:26:50"},{"arguments":[{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5853:6:50"},{"name":"i","nodeType":"YulIdentifier","src":"5861:1:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5849:3:50"},"nodeType":"YulFunctionCall","src":"5849:14:50"},{"kind":"number","nodeType":"YulLiteral","src":"5865:4:50","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5845:3:50"},"nodeType":"YulFunctionCall","src":"5845:25:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5839:5:50"},"nodeType":"YulFunctionCall","src":"5839:32:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5804:6:50"},"nodeType":"YulFunctionCall","src":"5804:68:50"},"nodeType":"YulExpressionStatement","src":"5804:68:50"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"5749:1:50"},{"name":"length","nodeType":"YulIdentifier","src":"5752:6:50"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"5746:2:50"},"nodeType":"YulFunctionCall","src":"5746:13:50"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"5760:21:50","statements":[{"nodeType":"YulAssignment","src":"5762:17:50","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"5771:1:50"},{"kind":"number","nodeType":"YulLiteral","src":"5774:4:50","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5767:3:50"},"nodeType":"YulFunctionCall","src":"5767:12:50"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"5762:1:50"}]}]},"pre":{"nodeType":"YulBlock","src":"5742:3:50","statements":[]},"src":"5738:144:50"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5906:9:50"},{"name":"length","nodeType":"YulIdentifier","src":"5917:6:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5902:3:50"},"nodeType":"YulFunctionCall","src":"5902:22:50"},{"kind":"number","nodeType":"YulLiteral","src":"5926:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5898:3:50"},"nodeType":"YulFunctionCall","src":"5898:31:50"},{"kind":"number","nodeType":"YulLiteral","src":"5931:1:50","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5891:6:50"},"nodeType":"YulFunctionCall","src":"5891:42:50"},"nodeType":"YulExpressionStatement","src":"5891:42:50"},{"nodeType":"YulVariableDeclaration","src":"5942:55:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5956:9:50"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"5975:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"5983:2:50","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5971:3:50"},"nodeType":"YulFunctionCall","src":"5971:15:50"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5992:2:50","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"5988:3:50"},"nodeType":"YulFunctionCall","src":"5988:7:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5967:3:50"},"nodeType":"YulFunctionCall","src":"5967:29:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5952:3:50"},"nodeType":"YulFunctionCall","src":"5952:45:50"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"5946:2:50","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6017:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"6028:4:50","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6013:3:50"},"nodeType":"YulFunctionCall","src":"6013:20:50"},{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"6043:2:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"6047:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6039:3:50"},"nodeType":"YulFunctionCall","src":"6039:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"6059:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6035:3:50"},"nodeType":"YulFunctionCall","src":"6035:27:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6006:6:50"},"nodeType":"YulFunctionCall","src":"6006:57:50"},"nodeType":"YulExpressionStatement","src":"6006:57:50"},{"nodeType":"YulAssignment","src":"6072:64:50","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"6116:6:50"},{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"6128:2:50"},{"kind":"number","nodeType":"YulLiteral","src":"6132:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6124:3:50"},"nodeType":"YulFunctionCall","src":"6124:11:50"}],"functionName":{"name":"abi_encode_struct_PreparedSetupData","nodeType":"YulIdentifier","src":"6080:35:50"},"nodeType":"YulFunctionCall","src":"6080:56:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6072:4:50"}]}]},"name":"abi_encode_tuple_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$4802_memory_ptr__to_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$4802_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5561:9:50","type":""},{"name":"value1","nodeType":"YulTypedName","src":"5572:6:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"5580:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5591:4:50","type":""}],"src":"5383:759:50"},{"body":{"nodeType":"YulBlock","src":"6179:95:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6196:1:50","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6203:3:50","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"6208:10:50","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"6199:3:50"},"nodeType":"YulFunctionCall","src":"6199:20:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6189:6:50"},"nodeType":"YulFunctionCall","src":"6189:31:50"},"nodeType":"YulExpressionStatement","src":"6189:31:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6236:1:50","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"6239:4:50","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6229:6:50"},"nodeType":"YulFunctionCall","src":"6229:15:50"},"nodeType":"YulExpressionStatement","src":"6229:15:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6260:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6263:4:50","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6253:6:50"},"nodeType":"YulFunctionCall","src":"6253:15:50"},"nodeType":"YulExpressionStatement","src":"6253:15:50"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"6147:127:50"},{"body":{"nodeType":"YulBlock","src":"6375:899:50","statements":[{"body":{"nodeType":"YulBlock","src":"6421:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6430:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6433:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6423:6:50"},"nodeType":"YulFunctionCall","src":"6423:12:50"},"nodeType":"YulExpressionStatement","src":"6423:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"6396:7:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"6405:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6392:3:50"},"nodeType":"YulFunctionCall","src":"6392:23:50"},{"kind":"number","nodeType":"YulLiteral","src":"6417:2:50","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6388:3:50"},"nodeType":"YulFunctionCall","src":"6388:32:50"},"nodeType":"YulIf","src":"6385:52:50"},{"nodeType":"YulAssignment","src":"6446:39:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6475:9:50"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"6456:18:50"},"nodeType":"YulFunctionCall","src":"6456:29:50"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"6446:6:50"}]},{"nodeType":"YulVariableDeclaration","src":"6494:46:50","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6525:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"6536:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6521:3:50"},"nodeType":"YulFunctionCall","src":"6521:18:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6508:12:50"},"nodeType":"YulFunctionCall","src":"6508:32:50"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"6498:6:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"6549:28:50","value":{"kind":"number","nodeType":"YulLiteral","src":"6559:18:50","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"6553:2:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"6604:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6613:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6616:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6606:6:50"},"nodeType":"YulFunctionCall","src":"6606:12:50"},"nodeType":"YulExpressionStatement","src":"6606:12:50"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"6592:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"6600:2:50"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6589:2:50"},"nodeType":"YulFunctionCall","src":"6589:14:50"},"nodeType":"YulIf","src":"6586:34:50"},{"nodeType":"YulVariableDeclaration","src":"6629:32:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6643:9:50"},{"name":"offset","nodeType":"YulIdentifier","src":"6654:6:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6639:3:50"},"nodeType":"YulFunctionCall","src":"6639:22:50"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"6633:2:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"6709:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6718:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6721:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6711:6:50"},"nodeType":"YulFunctionCall","src":"6711:12:50"},"nodeType":"YulExpressionStatement","src":"6711:12:50"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"6688:2:50"},{"kind":"number","nodeType":"YulLiteral","src":"6692:4:50","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6684:3:50"},"nodeType":"YulFunctionCall","src":"6684:13:50"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"6699:7:50"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6680:3:50"},"nodeType":"YulFunctionCall","src":"6680:27:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"6673:6:50"},"nodeType":"YulFunctionCall","src":"6673:35:50"},"nodeType":"YulIf","src":"6670:55:50"},{"nodeType":"YulVariableDeclaration","src":"6734:26:50","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"6757:2:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6744:12:50"},"nodeType":"YulFunctionCall","src":"6744:16:50"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"6738:2:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"6783:22:50","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"6785:16:50"},"nodeType":"YulFunctionCall","src":"6785:18:50"},"nodeType":"YulExpressionStatement","src":"6785:18:50"}]},"condition":{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"6775:2:50"},{"name":"_1","nodeType":"YulIdentifier","src":"6779:2:50"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6772:2:50"},"nodeType":"YulFunctionCall","src":"6772:10:50"},"nodeType":"YulIf","src":"6769:36:50"},{"nodeType":"YulVariableDeclaration","src":"6814:17:50","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6828:2:50","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"6824:3:50"},"nodeType":"YulFunctionCall","src":"6824:7:50"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"6818:2:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"6840:23:50","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6860:2:50","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6854:5:50"},"nodeType":"YulFunctionCall","src":"6854:9:50"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"6844:6:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"6872:71:50","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"6894:6:50"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"6918:2:50"},{"kind":"number","nodeType":"YulLiteral","src":"6922:4:50","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6914:3:50"},"nodeType":"YulFunctionCall","src":"6914:13:50"},{"name":"_4","nodeType":"YulIdentifier","src":"6929:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"6910:3:50"},"nodeType":"YulFunctionCall","src":"6910:22:50"},{"kind":"number","nodeType":"YulLiteral","src":"6934:2:50","type":"","value":"63"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6906:3:50"},"nodeType":"YulFunctionCall","src":"6906:31:50"},{"name":"_4","nodeType":"YulIdentifier","src":"6939:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"6902:3:50"},"nodeType":"YulFunctionCall","src":"6902:40:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6890:3:50"},"nodeType":"YulFunctionCall","src":"6890:53:50"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"6876:10:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"7002:22:50","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"7004:16:50"},"nodeType":"YulFunctionCall","src":"7004:18:50"},"nodeType":"YulExpressionStatement","src":"7004:18:50"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"6961:10:50"},{"name":"_1","nodeType":"YulIdentifier","src":"6973:2:50"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6958:2:50"},"nodeType":"YulFunctionCall","src":"6958:18:50"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"6981:10:50"},{"name":"memPtr","nodeType":"YulIdentifier","src":"6993:6:50"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"6978:2:50"},"nodeType":"YulFunctionCall","src":"6978:22:50"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"6955:2:50"},"nodeType":"YulFunctionCall","src":"6955:46:50"},"nodeType":"YulIf","src":"6952:72:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7040:2:50","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"7044:10:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7033:6:50"},"nodeType":"YulFunctionCall","src":"7033:22:50"},"nodeType":"YulExpressionStatement","src":"7033:22:50"},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7071:6:50"},{"name":"_3","nodeType":"YulIdentifier","src":"7079:2:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7064:6:50"},"nodeType":"YulFunctionCall","src":"7064:18:50"},"nodeType":"YulExpressionStatement","src":"7064:18:50"},{"body":{"nodeType":"YulBlock","src":"7128:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7137:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7140:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7130:6:50"},"nodeType":"YulFunctionCall","src":"7130:12:50"},"nodeType":"YulExpressionStatement","src":"7130:12:50"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"7105:2:50"},{"name":"_3","nodeType":"YulIdentifier","src":"7109:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7101:3:50"},"nodeType":"YulFunctionCall","src":"7101:11:50"},{"kind":"number","nodeType":"YulLiteral","src":"7114:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7097:3:50"},"nodeType":"YulFunctionCall","src":"7097:20:50"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"7119:7:50"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"7094:2:50"},"nodeType":"YulFunctionCall","src":"7094:33:50"},"nodeType":"YulIf","src":"7091:53:50"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7170:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"7178:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7166:3:50"},"nodeType":"YulFunctionCall","src":"7166:15:50"},{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"7187:2:50"},{"kind":"number","nodeType":"YulLiteral","src":"7191:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7183:3:50"},"nodeType":"YulFunctionCall","src":"7183:11:50"},{"name":"_3","nodeType":"YulIdentifier","src":"7196:2:50"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"7153:12:50"},"nodeType":"YulFunctionCall","src":"7153:46:50"},"nodeType":"YulExpressionStatement","src":"7153:46:50"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7223:6:50"},{"name":"_3","nodeType":"YulIdentifier","src":"7231:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7219:3:50"},"nodeType":"YulFunctionCall","src":"7219:15:50"},{"kind":"number","nodeType":"YulLiteral","src":"7236:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7215:3:50"},"nodeType":"YulFunctionCall","src":"7215:24:50"},{"kind":"number","nodeType":"YulLiteral","src":"7241:1:50","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7208:6:50"},"nodeType":"YulFunctionCall","src":"7208:35:50"},"nodeType":"YulExpressionStatement","src":"7208:35:50"},{"nodeType":"YulAssignment","src":"7252:16:50","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"7262:6:50"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"7252:6:50"}]}]},"name":"abi_decode_tuple_t_addresst_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6333:9:50","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"6344:7:50","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"6356:6:50","type":""},{"name":"value1","nodeType":"YulTypedName","src":"6364:6:50","type":""}],"src":"6279:995:50"},{"body":{"nodeType":"YulBlock","src":"7478:209:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7495:9:50"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7510:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"7518:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7506:3:50"},"nodeType":"YulFunctionCall","src":"7506:55:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7488:6:50"},"nodeType":"YulFunctionCall","src":"7488:74:50"},"nodeType":"YulExpressionStatement","src":"7488:74:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7582:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"7593:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7578:3:50"},"nodeType":"YulFunctionCall","src":"7578:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"7598:2:50","type":"","value":"64"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7571:6:50"},"nodeType":"YulFunctionCall","src":"7571:30:50"},"nodeType":"YulExpressionStatement","src":"7571:30:50"},{"nodeType":"YulAssignment","src":"7610:71:50","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"7654:6:50"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7666:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"7677:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7662:3:50"},"nodeType":"YulFunctionCall","src":"7662:18:50"}],"functionName":{"name":"abi_encode_struct_PreparedSetupData","nodeType":"YulIdentifier","src":"7618:35:50"},"nodeType":"YulFunctionCall","src":"7618:63:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7610:4:50"}]}]},"name":"abi_encode_tuple_t_address_t_struct$_PreparedSetupData_$4802_memory_ptr__to_t_address_t_struct$_PreparedSetupData_$4802_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7439:9:50","type":""},{"name":"value1","nodeType":"YulTypedName","src":"7450:6:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"7458:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7469:4:50","type":""}],"src":"7279:408:50"},{"body":{"nodeType":"YulBlock","src":"7806:125:50","statements":[{"nodeType":"YulAssignment","src":"7816:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7828:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"7839:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7824:3:50"},"nodeType":"YulFunctionCall","src":"7824:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7816:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7858:9:50"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7873:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"7881:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7869:3:50"},"nodeType":"YulFunctionCall","src":"7869:55:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7851:6:50"},"nodeType":"YulFunctionCall","src":"7851:74:50"},"nodeType":"YulExpressionStatement","src":"7851:74:50"}]},"name":"abi_encode_tuple_t_contract$_IDAO_$2538__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7775:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"7786:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7797:4:50","type":""}],"src":"7692:239:50"},{"body":{"nodeType":"YulBlock","src":"7968:95:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7985:1:50","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7992:3:50","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"7997:10:50","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"7988:3:50"},"nodeType":"YulFunctionCall","src":"7988:20:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7978:6:50"},"nodeType":"YulFunctionCall","src":"7978:31:50"},"nodeType":"YulExpressionStatement","src":"7978:31:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8025:1:50","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"8028:4:50","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8018:6:50"},"nodeType":"YulFunctionCall","src":"8018:15:50"},"nodeType":"YulExpressionStatement","src":"8018:15:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8049:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8052:4:50","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8042:6:50"},"nodeType":"YulFunctionCall","src":"8042:15:50"},"nodeType":"YulExpressionStatement","src":"8042:15:50"}]},"name":"panic_error_0x11","nodeType":"YulFunctionDefinition","src":"7936:127:50"},{"body":{"nodeType":"YulBlock","src":"8117:159:50","statements":[{"nodeType":"YulVariableDeclaration","src":"8127:52:50","value":{"kind":"number","nodeType":"YulLiteral","src":"8137:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"8131:2:50","type":""}]},{"nodeType":"YulAssignment","src":"8188:35:50","value":{"arguments":[{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"8204:1:50"},{"name":"_1","nodeType":"YulIdentifier","src":"8207:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8200:3:50"},"nodeType":"YulFunctionCall","src":"8200:10:50"},{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"8216:1:50"},{"name":"_1","nodeType":"YulIdentifier","src":"8219:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8212:3:50"},"nodeType":"YulFunctionCall","src":"8212:10:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"8196:3:50"},"nodeType":"YulFunctionCall","src":"8196:27:50"},"variableNames":[{"name":"diff","nodeType":"YulIdentifier","src":"8188:4:50"}]},{"body":{"nodeType":"YulBlock","src":"8248:22:50","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"8250:16:50"},"nodeType":"YulFunctionCall","src":"8250:18:50"},"nodeType":"YulExpressionStatement","src":"8250:18:50"}]},"condition":{"arguments":[{"name":"diff","nodeType":"YulIdentifier","src":"8238:4:50"},{"name":"_1","nodeType":"YulIdentifier","src":"8244:2:50"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"8235:2:50"},"nodeType":"YulFunctionCall","src":"8235:12:50"},"nodeType":"YulIf","src":"8232:38:50"}]},"name":"checked_sub_t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"8099:1:50","type":""},{"name":"y","nodeType":"YulTypedName","src":"8102:1:50","type":""}],"returnVariables":[{"name":"diff","nodeType":"YulTypedName","src":"8108:4:50","type":""}],"src":"8068:208:50"},{"body":{"nodeType":"YulBlock","src":"8313:95:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8330:1:50","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8337:3:50","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"8342:10:50","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"8333:3:50"},"nodeType":"YulFunctionCall","src":"8333:20:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8323:6:50"},"nodeType":"YulFunctionCall","src":"8323:31:50"},"nodeType":"YulExpressionStatement","src":"8323:31:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8370:1:50","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"8373:4:50","type":"","value":"0x32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8363:6:50"},"nodeType":"YulFunctionCall","src":"8363:15:50"},"nodeType":"YulExpressionStatement","src":"8363:15:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8394:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8397:4:50","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8387:6:50"},"nodeType":"YulFunctionCall","src":"8387:15:50"},"nodeType":"YulExpressionStatement","src":"8387:15:50"}]},"name":"panic_error_0x32","nodeType":"YulFunctionDefinition","src":"8281:127:50"},{"body":{"nodeType":"YulBlock","src":"8460:187:50","statements":[{"nodeType":"YulVariableDeclaration","src":"8470:52:50","value":{"kind":"number","nodeType":"YulLiteral","src":"8480:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"8474:2:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"8531:29:50","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8550:5:50"},{"name":"_1","nodeType":"YulIdentifier","src":"8557:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8546:3:50"},"nodeType":"YulFunctionCall","src":"8546:14:50"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"8535:7:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"8588:22:50","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"8590:16:50"},"nodeType":"YulFunctionCall","src":"8590:18:50"},"nodeType":"YulExpressionStatement","src":"8590:18:50"}]},"condition":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"8575:7:50"},{"name":"_1","nodeType":"YulIdentifier","src":"8584:2:50"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"8572:2:50"},"nodeType":"YulFunctionCall","src":"8572:15:50"},"nodeType":"YulIf","src":"8569:41:50"},{"nodeType":"YulAssignment","src":"8619:22:50","value":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"8630:7:50"},{"kind":"number","nodeType":"YulLiteral","src":"8639:1:50","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8626:3:50"},"nodeType":"YulFunctionCall","src":"8626:15:50"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"8619:3:50"}]}]},"name":"increment_t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"8442:5:50","type":""}],"returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"8452:3:50","type":""}],"src":"8413:234:50"}]},"contents":"{\n { }\n function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n if iszero(eq(value, and(value, shl(224, 0xffffffff)))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 96)\n let pos := headStart\n pos := headStart\n let srcPtr := value0\n let i := 0\n for { } lt(i, 0x03) { i := add(i, 1) }\n {\n mstore(pos, and(mload(srcPtr), 0xff))\n let _1 := 0x20\n pos := add(pos, _1)\n srcPtr := add(srcPtr, _1)\n }\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_decode_address(offset) -> value\n {\n value := calldataload(offset)\n if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n }\n function abi_decode_struct_SetupPayload_calldata(offset, end) -> value\n {\n if slt(sub(end, offset), 96) { revert(0, 0) }\n value := offset\n }\n function abi_decode_tuple_t_addresst_struct$_SetupPayload_$4810_calldata_ptr(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n let offset := calldataload(add(headStart, 32))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n value1 := abi_decode_struct_SetupPayload_calldata(add(headStart, offset), dataEnd)\n }\n function panic_error_0x21()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x21)\n revert(0, 0x24)\n }\n function abi_encodeUpdatedPos_struct_MultiTargetPermission(value0, pos) -> updatedPos\n {\n let _1 := mload(value0)\n if iszero(lt(_1, 3))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x21)\n revert(0, 0x24)\n }\n mstore(pos, _1)\n let memberValue0 := mload(add(value0, 0x20))\n let _2 := 0xffffffffffffffffffffffffffffffffffffffff\n mstore(add(pos, 0x20), and(memberValue0, _2))\n mstore(add(pos, 0x40), and(mload(add(value0, 0x40)), _2))\n mstore(add(pos, 0x60), and(mload(add(value0, 0x60)), _2))\n mstore(add(pos, 0x80), mload(add(value0, 0x80)))\n updatedPos := add(pos, 0xa0)\n }\n function abi_encode_tuple_t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n let _1 := 32\n let tail_1 := add(headStart, _1)\n mstore(headStart, _1)\n let pos := tail_1\n let length := mload(value0)\n mstore(tail_1, length)\n pos := add(headStart, 64)\n let srcPtr := add(value0, _1)\n let i := 0\n for { } lt(i, length) { i := add(i, 1) }\n {\n pos := abi_encodeUpdatedPos_struct_MultiTargetPermission(mload(srcPtr), pos)\n srcPtr := add(srcPtr, _1)\n }\n tail := pos\n }\n function abi_decode_tuple_t_addresst_uint16t_struct$_SetupPayload_$4810_calldata_ptr(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n let value := calldataload(add(headStart, 32))\n if iszero(eq(value, and(value, 0xffff))) { revert(0, 0) }\n value1 := value\n let offset := calldataload(add(headStart, 64))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n value2 := abi_decode_struct_SetupPayload_calldata(add(headStart, offset), dataEnd)\n }\n function abi_encode_struct_PreparedSetupData(value, pos) -> end\n {\n let tail := add(pos, 0x40)\n let memberValue0 := mload(value)\n mstore(pos, 0x40)\n let pos_1 := tail\n let length := mload(memberValue0)\n mstore(tail, length)\n pos_1 := add(pos, 96)\n let _1 := 0x20\n let srcPtr := add(memberValue0, _1)\n let i := 0\n for { } lt(i, length) { i := add(i, 1) }\n {\n mstore(pos_1, and(mload(srcPtr), 0xffffffffffffffffffffffffffffffffffffffff))\n pos_1 := add(pos_1, _1)\n srcPtr := add(srcPtr, _1)\n }\n let memberValue0_1 := mload(add(value, _1))\n mstore(add(pos, _1), sub(pos_1, pos))\n let pos_2 := pos_1\n let length_1 := mload(memberValue0_1)\n mstore(pos_1, length_1)\n pos_2 := add(pos_1, _1)\n let srcPtr_1 := add(memberValue0_1, _1)\n let i_1 := 0\n for { } lt(i_1, length_1) { i_1 := add(i_1, 1) }\n {\n pos_2 := abi_encodeUpdatedPos_struct_MultiTargetPermission(mload(srcPtr_1), pos_2)\n srcPtr_1 := add(srcPtr_1, _1)\n }\n end := pos_2\n }\n function abi_encode_tuple_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$4802_memory_ptr__to_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$4802_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n {\n mstore(headStart, 64)\n let length := mload(value0)\n mstore(add(headStart, 64), length)\n let i := 0\n for { } lt(i, length) { i := add(i, 0x20) }\n {\n mstore(add(add(headStart, i), 96), mload(add(add(value0, i), 0x20)))\n }\n mstore(add(add(headStart, length), 96), 0)\n let _1 := add(headStart, and(add(length, 31), not(31)))\n mstore(add(headStart, 0x20), add(sub(_1, headStart), 96))\n tail := abi_encode_struct_PreparedSetupData(value1, add(_1, 96))\n }\n function panic_error_0x41()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function abi_decode_tuple_t_addresst_bytes_memory_ptr(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n let offset := calldataload(add(headStart, 32))\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n let _2 := add(headStart, offset)\n if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n let _3 := calldataload(_2)\n if gt(_3, _1) { panic_error_0x41() }\n let _4 := not(31)\n let memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n mstore(memPtr, _3)\n if gt(add(add(_2, _3), 32), dataEnd) { revert(0, 0) }\n calldatacopy(add(memPtr, 32), add(_2, 32), _3)\n mstore(add(add(memPtr, _3), 32), 0)\n value1 := memPtr\n }\n function abi_encode_tuple_t_address_t_struct$_PreparedSetupData_$4802_memory_ptr__to_t_address_t_struct$_PreparedSetupData_$4802_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n {\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n mstore(add(headStart, 32), 64)\n tail := abi_encode_struct_PreparedSetupData(value1, add(headStart, 64))\n }\n function abi_encode_tuple_t_contract$_IDAO_$2538__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function panic_error_0x11()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n function checked_sub_t_uint160(x, y) -> diff\n {\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n diff := sub(and(x, _1), and(y, _1))\n if gt(diff, _1) { panic_error_0x11() }\n }\n function panic_error_0x32()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n function increment_t_uint160(value) -> ret\n {\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n let value_1 := and(value, _1)\n if eq(value_1, _1) { panic_error_0x11() }\n ret := add(value_1, 1)\n }\n}","id":50,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{"4879":[{"length":32,"start":193}]},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100725760003560e01c80639cb0a124116100505780639cb0a124146100eb578063a8a9c29e1461010b578063f10832f11461012c57600080fd5b806301ffc9a7146100775780632ae9c6001461009f5780635c60da1b146100b4575b600080fd5b61008a610085366004610501565b61014d565b60405190151581526020015b60405180910390f35b6100a761019e565b604051610096919061052b565b6040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152602001610096565b6100fe6100f936600461058d565b6101c8565b6040516100969190610657565b61011e6101193660046106a0565b6101de565b60405161009692919061079a565b61013f61013a366004610815565b610216565b6040516100969291906108d7565b60006001600160e01b0319821663099718b560e41b148061017d57506001600160e01b03198216621574e360e91b145b8061019857506301ffc9a760e01b6001600160e01b03198316145b92915050565b6101a66104d6565b5060408051606081018252600181526004602082015260009181019190915290565b60606101d76000600180610298565b9392505050565b60606101fd604051806040016040528060608152602001606081525090565b60405163a112810160e01b815260040160405180910390fd5b6000610235604051806040016040528060608152602001606081525090565b83604051610242906104f4565b6001600160a01b039091168152602001604051809103906000f08015801561026e573d6000803e3d6000fd5b50915061027b600161041d565b815261028a6000600181610298565b602082015290939092509050565b6060826001600160a01b0316846001600160a01b031611156102cd57604051633a4013cd60e21b815260040160405180910390fd5b6102d78484610917565b6001600160a01b031667ffffffffffffffff8111156102f8576102f86107ff565b60405190808252806020026020018201604052801561035157816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282526000199092019101816103165790505b509050835b836001600160a01b0316816001600160a01b03161015610415576040518060a0016040528084600281111561038d5761038d6105db565b81526001600160a01b038316602082018190526040820152600060608201527fa280eec51ab8e1bc4b6b0c1b7f1bde785761b787a49db404e3e9338ed9b016ef608090910152826103de8784610917565b6001600160a01b0316815181106103f7576103f761093e565b6020026020010181905250808061040d90610954565b915050610356565b509392505050565b6060816001600160a01b031667ffffffffffffffff811115610441576104416107ff565b60405190808252806020026020018201604052801561046a578160200160208202803683370190505b50905060005b826001600160a01b0316816001600160a01b031610156104d0578082826001600160a01b0316815181106104a6576104a661093e565b6001600160a01b0390921660209283029190910190910152806104c881610954565b915050610470565b50919050565b60405180606001604052806003906020820280368337509192915050565b6103998061097b83390190565b60006020828403121561051357600080fd5b81356001600160e01b0319811681146101d757600080fd5b60608101818360005b600381101561055657815160ff16835260209283019290910190600101610534565b50505092915050565b80356001600160a01b038116811461057657600080fd5b919050565b6000606082840312156104d057600080fd5b600080604083850312156105a057600080fd5b6105a98361055f565b9150602083013567ffffffffffffffff8111156105c557600080fd5b6105d18582860161057b565b9150509250929050565b634e487b7160e01b600052602160045260246000fd5b600081516003811061061357634e487b7160e01b600052602160045260246000fd5b8352506020818101516001600160a01b0390811691840191909152604080830151821690840152606080830151909116908301526080908101519082015260a00190565b6020808252825182820181905260009190848201906040850190845b81811015610694576106868385516105f1565b938501939250600101610673565b50909695505050505050565b6000806000606084860312156106b557600080fd5b6106be8461055f565b9250602084013561ffff811681146106d557600080fd5b9150604084013567ffffffffffffffff8111156106f157600080fd5b6106fd8682870161057b565b9150509250925092565b805160408084528151908401819052600091602091908201906060860190845b8181101561074c5783516001600160a01b031683529284019291840191600101610727565b50508483015186820387850152805180835290840192506000918401905b8083101561078f5761077d8285516105f1565b9150848401935060018301925061076a565b509695505050505050565b604081526000835180604084015260005b818110156107c857602081870181015160608684010152016107ab565b50600060608285010152601f19601f8201168301905060608382030160208401526107f66060820185610707565b95945050505050565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561082857600080fd5b6108318361055f565b9150602083013567ffffffffffffffff8082111561084e57600080fd5b818501915085601f83011261086257600080fd5b813581811115610874576108746107ff565b604051601f8201601f19908116603f0116810190838211818310171561089c5761089c6107ff565b816040528281528860208487010111156108b557600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6001600160a01b03831681526040602082015260006108f96040830184610707565b949350505050565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0382811682821603908082111561093757610937610901565b5092915050565b634e487b7160e01b600052603260045260246000fd5b60006001600160a01b0380831681810361097057610970610901565b600101939250505056fe60a060405234801561001057600080fd5b5060405161039938038061039983398101604081905261002f91610044565b6001600160a01b031660805260018055610074565b60006020828403121561005657600080fd5b81516001600160a01b038116811461006d57600080fd5b9392505050565b60805161030b61008e600039600060c1015261030b6000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806341de68301161005b57806341de6830146100f95780636accab8c14610108578063776d1a011461011f578063d4b839921461013457600080fd5b806301ffc9a7146100825780632ae9c600146100aa5780634162169f146100bf575b600080fd5b610095610090366004610248565b610147565b60405190151581526020015b60405180910390f35b6100b2610198565b6040516100a19190610279565b7f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020016100a1565b60026040516100a191906102ad565b61011160015481565b6040519081526020016100a1565b61013261012d3660046102d5565b6101c2565b005b6000546100e1906001600160a01b031681565b60006001600160e01b0319821663041de68360e41b148061017757506001600160e01b03198216621574e360e91b145b8061019257506301ffc9a760e01b6001600160e01b03198316145b92915050565b6101a061022a565b5060408051606081018252600181526004602082015260009181019190915290565b600080546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d69190a35050565b60405180606001604052806003906020820280368337509192915050565b60006020828403121561025a57600080fd5b81356001600160e01b03198116811461027257600080fd5b9392505050565b60608101818360005b60038110156102a457815160ff16835260209283019290910190600101610282565b50505092915050565b60208101600383106102cf57634e487b7160e01b600052602160045260246000fd5b91905290565b6000602082840312156102e757600080fd5b81356001600160a01b038116811461027257600080fdfea164736f6c6343000811000aa164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x72 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9CB0A124 GT PUSH2 0x50 JUMPI DUP1 PUSH4 0x9CB0A124 EQ PUSH2 0xEB JUMPI DUP1 PUSH4 0xA8A9C29E EQ PUSH2 0x10B JUMPI DUP1 PUSH4 0xF10832F1 EQ PUSH2 0x12C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x77 JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0x9F JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0xB4 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8A PUSH2 0x85 CALLDATASIZE PUSH1 0x4 PUSH2 0x501 JUMP JUMPDEST PUSH2 0x14D JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xA7 PUSH2 0x19E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x96 SWAP2 SWAP1 PUSH2 0x52B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x96 JUMP JUMPDEST PUSH2 0xFE PUSH2 0xF9 CALLDATASIZE PUSH1 0x4 PUSH2 0x58D JUMP JUMPDEST PUSH2 0x1C8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x96 SWAP2 SWAP1 PUSH2 0x657 JUMP JUMPDEST PUSH2 0x11E PUSH2 0x119 CALLDATASIZE PUSH1 0x4 PUSH2 0x6A0 JUMP JUMPDEST PUSH2 0x1DE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x96 SWAP3 SWAP2 SWAP1 PUSH2 0x79A JUMP JUMPDEST PUSH2 0x13F PUSH2 0x13A CALLDATASIZE PUSH1 0x4 PUSH2 0x815 JUMP JUMPDEST PUSH2 0x216 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x96 SWAP3 SWAP2 SWAP1 PUSH2 0x8D7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x99718B5 PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x17D JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x198 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1A6 PUSH2 0x4D6 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1D7 PUSH1 0x0 PUSH1 0x1 DUP1 PUSH2 0x298 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1FD PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xA1128101 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x235 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST DUP4 PUSH1 0x40 MLOAD PUSH2 0x242 SWAP1 PUSH2 0x4F4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH2 0x26E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP SWAP2 POP PUSH2 0x27B PUSH1 0x1 PUSH2 0x41D JUMP JUMPDEST DUP2 MSTORE PUSH2 0x28A PUSH1 0x0 PUSH1 0x1 DUP2 PUSH2 0x298 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE SWAP1 SWAP4 SWAP1 SWAP3 POP SWAP1 POP JUMP JUMPDEST PUSH1 0x60 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH2 0x2CD JUMPI PUSH1 0x40 MLOAD PUSH4 0x3A4013CD PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2D7 DUP5 DUP5 PUSH2 0x917 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2F8 JUMPI PUSH2 0x2F8 PUSH2 0x7FF JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x351 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD DUP3 SWAP1 MSTORE SWAP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 DUP3 ADD MSTORE DUP3 MSTORE PUSH1 0x0 NOT SWAP1 SWAP3 ADD SWAP2 ADD DUP2 PUSH2 0x316 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP DUP4 JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT ISZERO PUSH2 0x415 JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 DUP5 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x38D JUMPI PUSH2 0x38D PUSH2 0x5DB JUMP JUMPDEST DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x60 DUP3 ADD MSTORE PUSH32 0xA280EEC51AB8E1BC4B6B0C1B7F1BDE785761B787A49DB404E3E9338ED9B016EF PUSH1 0x80 SWAP1 SWAP2 ADD MSTORE DUP3 PUSH2 0x3DE DUP8 DUP5 PUSH2 0x917 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MLOAD DUP2 LT PUSH2 0x3F7 JUMPI PUSH2 0x3F7 PUSH2 0x93E JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP DUP1 DUP1 PUSH2 0x40D SWAP1 PUSH2 0x954 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x356 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x441 JUMPI PUSH2 0x441 PUSH2 0x7FF JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x46A JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT ISZERO PUSH2 0x4D0 JUMPI DUP1 DUP3 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MLOAD DUP2 LT PUSH2 0x4A6 JUMPI PUSH2 0x4A6 PUSH2 0x93E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE DUP1 PUSH2 0x4C8 DUP2 PUSH2 0x954 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x470 JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x399 DUP1 PUSH2 0x97B DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x513 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x1D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0x556 JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x534 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x576 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x5A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5A9 DUP4 PUSH2 0x55F JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x5C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5D1 DUP6 DUP3 DUP7 ADD PUSH2 0x57B JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP2 MLOAD PUSH1 0x3 DUP2 LT PUSH2 0x613 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP4 MSTORE POP PUSH1 0x20 DUP2 DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP1 DUP4 ADD MLOAD DUP3 AND SWAP1 DUP5 ADD MSTORE PUSH1 0x60 DUP1 DUP4 ADD MLOAD SWAP1 SWAP2 AND SWAP1 DUP4 ADD MSTORE PUSH1 0x80 SWAP1 DUP2 ADD MLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x694 JUMPI PUSH2 0x686 DUP4 DUP6 MLOAD PUSH2 0x5F1 JUMP JUMPDEST SWAP4 DUP6 ADD SWAP4 SWAP3 POP PUSH1 0x1 ADD PUSH2 0x673 JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x6B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x6BE DUP5 PUSH2 0x55F JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH2 0x6D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x6F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x6FD DUP7 DUP3 DUP8 ADD PUSH2 0x57B JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x40 DUP1 DUP5 MSTORE DUP2 MLOAD SWAP1 DUP5 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x20 SWAP2 SWAP1 DUP3 ADD SWAP1 PUSH1 0x60 DUP7 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x74C JUMPI DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x727 JUMP JUMPDEST POP POP DUP5 DUP4 ADD MLOAD DUP7 DUP3 SUB DUP8 DUP6 ADD MSTORE DUP1 MLOAD DUP1 DUP4 MSTORE SWAP1 DUP5 ADD SWAP3 POP PUSH1 0x0 SWAP2 DUP5 ADD SWAP1 JUMPDEST DUP1 DUP4 LT ISZERO PUSH2 0x78F JUMPI PUSH2 0x77D DUP3 DUP6 MLOAD PUSH2 0x5F1 JUMP JUMPDEST SWAP2 POP DUP5 DUP5 ADD SWAP4 POP PUSH1 0x1 DUP4 ADD SWAP3 POP PUSH2 0x76A JUMP JUMPDEST POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 DUP4 MLOAD DUP1 PUSH1 0x40 DUP5 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x7C8 JUMPI PUSH1 0x20 DUP2 DUP8 ADD DUP2 ADD MLOAD PUSH1 0x60 DUP7 DUP5 ADD ADD MSTORE ADD PUSH2 0x7AB JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x60 DUP3 DUP6 ADD ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP4 ADD SWAP1 POP PUSH1 0x60 DUP4 DUP3 SUB ADD PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x7F6 PUSH1 0x60 DUP3 ADD DUP6 PUSH2 0x707 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x828 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x831 DUP4 PUSH2 0x55F JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x84E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x862 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x874 JUMPI PUSH2 0x874 PUSH2 0x7FF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x89C JUMPI PUSH2 0x89C PUSH2 0x7FF JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x8B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0x8F9 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x707 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND DUP3 DUP3 AND SUB SWAP1 DUP1 DUP3 GT ISZERO PUSH2 0x937 JUMPI PUSH2 0x937 PUSH2 0x901 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND DUP2 DUP2 SUB PUSH2 0x970 JUMPI PUSH2 0x970 PUSH2 0x901 JUMP JUMPDEST PUSH1 0x1 ADD SWAP4 SWAP3 POP POP POP JUMP INVALID PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x399 CODESIZE SUB DUP1 PUSH2 0x399 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0x44 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x80 MSTORE PUSH1 0x1 DUP1 SSTORE PUSH2 0x74 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x56 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x6D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH2 0x30B PUSH2 0x8E PUSH1 0x0 CODECOPY PUSH1 0x0 PUSH1 0xC1 ADD MSTORE PUSH2 0x30B PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x7D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x41DE6830 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x41DE6830 EQ PUSH2 0xF9 JUMPI DUP1 PUSH4 0x6ACCAB8C EQ PUSH2 0x108 JUMPI DUP1 PUSH4 0x776D1A01 EQ PUSH2 0x11F JUMPI DUP1 PUSH4 0xD4B83992 EQ PUSH2 0x134 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x82 JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0xAA JUMPI DUP1 PUSH4 0x4162169F EQ PUSH2 0xBF JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x95 PUSH2 0x90 CALLDATASIZE PUSH1 0x4 PUSH2 0x248 JUMP JUMPDEST PUSH2 0x147 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xB2 PUSH2 0x198 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA1 SWAP2 SWAP1 PUSH2 0x279 JUMP JUMPDEST PUSH32 0x0 JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xA1 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x40 MLOAD PUSH2 0xA1 SWAP2 SWAP1 PUSH2 0x2AD JUMP JUMPDEST PUSH2 0x111 PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xA1 JUMP JUMPDEST PUSH2 0x132 PUSH2 0x12D CALLDATASIZE PUSH1 0x4 PUSH2 0x2D5 JUMP JUMPDEST PUSH2 0x1C2 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0xE1 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x41DE683 PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x177 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x192 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1A0 PUSH2 0x22A JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 DUP4 AND DUP2 OR DUP5 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 DUP4 SWAP2 PUSH32 0x90CC2F570A6EB594B1580EA3E41247D2D73A55281889E86BD4EC2FC29C7E62D6 SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x25A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x272 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0x2A4 JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x282 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH1 0x3 DUP4 LT PUSH2 0x2CF JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 SWAP1 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x272 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"624:892:29:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2112:293:45;;;;;;:::i;:::-;;:::i;:::-;;;470:14:50;;463:22;445:41;;433:2;418:18;2112:293:45;;;;;;;;631:98:49;;;:::i;:::-;;;;;;;:::i;2444:94:45:-;;;-1:-1:-1;;;;;2517:14:45;1167:55:50;1149:74;;1137:2;1122:18;2444:94:45;1003:226:50;1224:290:29;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1639:265:45:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;792:393:29:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;2112:293:45:-;2198:4;-1:-1:-1;;;;;;2233:46:45;;-1:-1:-1;;;2233:46:45;;:112;;-1:-1:-1;;;;;;;2295:50:45;;-1:-1:-1;;;2295:50:45;2233:112;:165;;;-1:-1:-1;;;;;;;;;;937:40:23;;;2361:37:45;2214:184;2112:293;-1:-1:-1;;2112:293:45:o;631:98:49:-;679:15;;:::i;:::-;-1:-1:-1;706:16:49;;;;;;;;714:1;706:16;;717:1;706:16;;;;-1:-1:-1;706:16:49;;;;;;;;631:98::o;1224:290:29:-;1346:56;1454:53;1470:1;1473;1476:30;1454:15;:53::i;:::-;1440:67;1224:290;-1:-1:-1;;;1224:290:29:o;1639:265:45:-;1780:12;1794:24;-1:-1:-1;;;;;;;;;;;;;;;;;;;1794:24:45;1875:22;;-1:-1:-1;;;1875:22:45;;;;;;;;;;;792:393:29;895:14;911:42;-1:-1:-1;;;;;;;;;;;;;;;;;;;911:42:29;1025:4;999:32;;;;;:::i;:::-;-1:-1:-1;;;;;1167:55:50;;;1149:74;;1137:2;1122:18;999:32:29;;;;;;;;;;;;;;;;;;;;;;;982:50;;1070:14;1082:1;1070:11;:14::i;:::-;1042:42;;1126:52;1042:25;1145:1;1042:25;1126:15;:52::i;:::-;1094:29;;;:84;792:393;;1094:17;;-1:-1:-1;792:393:29;-1:-1:-1;792:393:29:o;580:666:30:-;699:56;780:8;-1:-1:-1;;;;;767:21:30;:10;-1:-1:-1;;;;;767:21:30;;763:53;;;797:19;;-1:-1:-1;;;797:19:30;;;;;;;;;;;763:53;879:21;890:10;879:8;:21;:::i;:::-;-1:-1:-1;;;;;837:64:30;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;837:64:30;;-1:-1:-1;;837:64:30;;;;;;;;;;;-1:-1:-1;823:78:30;-1:-1:-1;925:10:30;908:336;941:8;-1:-1:-1;;;;;937:12:30;:1;-1:-1:-1;;;;;937:12:30;;908:336;;;996:241;;;;;;;;1057:2;996:241;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;996:241:30;;;;;;;;;;;;-1:-1:-1;996:241:30;;;;1198:28;996:241;;;;;966:11;978:14;982:10;1088:1;978:14;:::i;:::-;-1:-1:-1;;;;;966:27:30;;;;;;;;;:::i;:::-;;;;;;:271;;;;951:3;;;;;:::i;:::-;;;;908:336;;;;580:666;;;;;:::o;1529:191::-;1577:24;1633:3;-1:-1:-1;;;;;1619:18:30;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1619:18:30;;1609:28;;1649:9;1644:74;1668:3;-1:-1:-1;;;;;1664:7:30;:1;-1:-1:-1;;;;;1664:7:30;;1644:74;;;1709:1;1688:7;1696:1;-1:-1:-1;;;;;1688:10:30;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1688:23:30;;;:10;;;;;;;;;;;:23;1673:3;;;;:::i;:::-;;;;1644:74;;;;1529:191;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::o;14:286:50:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:50;;209:43;;199:71;;266:1;263;256:12;497:501;673:2;658:18;;662:9;753:6;631:4;787:205;801:4;798:1;795:11;787:205;;;864:13;;879:4;860:24;848:37;;908:4;932:12;;;;967:15;;;;821:1;814:9;787:205;;;791:3;;;497:501;;;;:::o;1234:196::-;1302:20;;-1:-1:-1;;;;;1351:54:50;;1341:65;;1331:93;;1420:1;1417;1410:12;1331:93;1234:196;;;:::o;1435:160::-;1500:5;1545:2;1536:6;1531:3;1527:16;1523:25;1520:45;;;1561:1;1558;1551:12;1600:440;1700:6;1708;1761:2;1749:9;1740:7;1736:23;1732:32;1729:52;;;1777:1;1774;1767:12;1729:52;1800:29;1819:9;1800:29;:::i;:::-;1790:39;;1880:2;1869:9;1865:18;1852:32;1907:18;1899:6;1896:30;1893:50;;;1939:1;1936;1929:12;1893:50;1962:72;2026:7;2017:6;2006:9;2002:22;1962:72;:::i;:::-;1952:82;;;1600:440;;;;;:::o;2045:127::-;2106:10;2101:3;2097:20;2094:1;2087:31;2137:4;2134:1;2127:15;2161:4;2158:1;2151:15;2177:696;2252:10;2293:6;2287:13;2326:1;2322:2;2319:9;2309:140;;2371:10;2366:3;2362:20;2359:1;2352:31;2406:4;2403:1;2396:15;2434:4;2431:1;2424:15;2309:140;2458:15;;-1:-1:-1;2520:4:50;2508:17;;;2502:24;-1:-1:-1;;;;;2619:21:50;;;2603:14;;;2596:45;;;;2695:4;2683:17;;;2677:24;2673:33;;2657:14;;;2650:57;2761:4;2749:17;;;2743:24;2739:33;;;2723:14;;;2716:57;2823:4;2811:17;;;2805:24;2789:14;;;2782:48;2862:4;2853:14;;2177:696::o;2878:728::-;3127:2;3179:21;;;3249:13;;3152:18;;;3271:22;;;3098:4;;3127:2;3350:15;;;;3324:2;3309:18;;;3098:4;3393:187;3407:6;3404:1;3401:13;3393:187;;;3463:69;3528:3;3519:6;3513:13;3463:69;:::i;:::-;3555:15;;;;3456:76;-1:-1:-1;3429:1:50;3422:9;3393:187;;;-1:-1:-1;3597:3:50;;2878:728;-1:-1:-1;;;;;;2878:728:50:o;3611:600::-;3719:6;3727;3735;3788:2;3776:9;3767:7;3763:23;3759:32;3756:52;;;3804:1;3801;3794:12;3756:52;3827:29;3846:9;3827:29;:::i;:::-;3817:39;;3906:2;3895:9;3891:18;3878:32;3950:6;3943:5;3939:18;3932:5;3929:29;3919:57;;3972:1;3969;3962:12;3919:57;3995:5;-1:-1:-1;4051:2:50;4036:18;;4023:32;4078:18;4067:30;;4064:50;;;4110:1;4107;4100:12;4064:50;4133:72;4197:7;4188:6;4177:9;4173:22;4133:72;:::i;:::-;4123:82;;;3611:600;;;;;:::o;4216:1162::-;4349:12;;4315:4;4370:17;;;4436:19;;4306:14;;;4464:20;;;4276:3;;4533:4;;4560:21;;;;4511:2;4502:12;;;4276:3;4609:224;4623:6;4620:1;4617:13;4609:224;;;4690:13;;-1:-1:-1;;;;;4686:62:50;4672:77;;4808:15;;;;4771:14;;;;4645:1;4638:9;4609:224;;;-1:-1:-1;;4870:14:50;;;4864:21;4915:15;;;4901:12;;;4894:37;4983:21;;5013:23;;;5093;;;;-1:-1:-1;5136:1:50;;5054:14;;;5146:205;5162:8;5157:3;5154:17;5146:205;;;5226:73;5293:5;5282:8;5276:15;5226:73;:::i;:::-;5217:82;;5338:2;5328:8;5324:17;5312:29;;5190:1;5185:3;5181:11;5174:18;;5146:205;;;-1:-1:-1;5367:5:50;4216:1162;-1:-1:-1;;;;;;4216:1162:50:o;5383:759::-;5628:2;5617:9;5610:21;5591:4;5660:6;5654:13;5703:6;5698:2;5687:9;5683:18;5676:34;5728:1;5738:144;5752:6;5749:1;5746:13;5738:144;;;5865:4;5849:14;;;5845:25;;5839:32;5834:2;5815:17;;;5811:26;5804:68;5767:12;5738:144;;;5742:3;5931:1;5926:2;5917:6;5906:9;5902:22;5898:31;5891:42;5992:2;5988:7;5983:2;5975:6;5971:15;5967:29;5956:9;5952:45;5942:55;;6059:2;6047:9;6043:2;6039:18;6035:27;6028:4;6017:9;6013:20;6006:57;6080:56;6132:2;6128;6124:11;6116:6;6080:56;:::i;:::-;6072:64;5383:759;-1:-1:-1;;;;;5383:759:50:o;6147:127::-;6208:10;6203:3;6199:20;6196:1;6189:31;6239:4;6236:1;6229:15;6263:4;6260:1;6253:15;6279:995;6356:6;6364;6417:2;6405:9;6396:7;6392:23;6388:32;6385:52;;;6433:1;6430;6423:12;6385:52;6456:29;6475:9;6456:29;:::i;:::-;6446:39;;6536:2;6525:9;6521:18;6508:32;6559:18;6600:2;6592:6;6589:14;6586:34;;;6616:1;6613;6606:12;6586:34;6654:6;6643:9;6639:22;6629:32;;6699:7;6692:4;6688:2;6684:13;6680:27;6670:55;;6721:1;6718;6711:12;6670:55;6757:2;6744:16;6779:2;6775;6772:10;6769:36;;;6785:18;;:::i;:::-;6860:2;6854:9;6828:2;6914:13;;-1:-1:-1;;6910:22:50;;;6934:2;6906:31;6902:40;6890:53;;;6958:18;;;6978:22;;;6955:46;6952:72;;;7004:18;;:::i;:::-;7044:10;7040:2;7033:22;7079:2;7071:6;7064:18;7119:7;7114:2;7109;7105;7101:11;7097:20;7094:33;7091:53;;;7140:1;7137;7130:12;7091:53;7196:2;7191;7187;7183:11;7178:2;7170:6;7166:15;7153:46;7241:1;7236:2;7231;7223:6;7219:15;7215:24;7208:35;7262:6;7252:16;;;;;;;6279:995;;;;;:::o;7279:408::-;-1:-1:-1;;;;;7510:6:50;7506:55;7495:9;7488:74;7598:2;7593;7582:9;7578:18;7571:30;7469:4;7618:63;7677:2;7666:9;7662:18;7654:6;7618:63;:::i;:::-;7610:71;7279:408;-1:-1:-1;;;;7279:408:50:o;7936:127::-;7997:10;7992:3;7988:20;7985:1;7978:31;8028:4;8025:1;8018:15;8052:4;8049:1;8042:15;8068:208;-1:-1:-1;;;;;8212:10:50;;;8200;;;8196:27;;8235:12;;;8232:38;;;8250:18;;:::i;:::-;8232:38;8068:208;;;;:::o;8281:127::-;8342:10;8337:3;8333:20;8330:1;8323:31;8373:4;8370:1;8363:15;8397:4;8394:1;8387:15;8413:234;8452:3;-1:-1:-1;;;;;8557:2:50;8550:5;8546:14;8584:2;8575:7;8572:15;8569:41;;8590:18;;:::i;:::-;8639:1;8626:15;;8413:234;-1:-1:-1;;;8413:234:50:o"},"gasEstimates":{"creation":{"codeDepositCost":"672000","executionCost":"infinite","totalCost":"infinite"},"external":{"implementation()":"infinite","prepareInstallation(address,bytes)":"infinite","prepareUninstallation(address,(address,address[],bytes))":"infinite","prepareUpdate(address,uint16,(address,address[],bytes))":"624","protocolVersion()":"infinite","supportsInterface(bytes4)":"482"}},"methodIdentifiers":{"implementation()":"5c60da1b","prepareInstallation(address,bytes)":"f10832f1","prepareUninstallation(address,(address,address[],bytes))":"9cb0a124","prepareUpdate(address,uint16,(address,address[],bytes))":"a8a9c29e","protocolVersion()":"2ae9c600","supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ConflictingValues\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NonUpgradeablePlugin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_dao\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"prepareInstallation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"plugin\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address[]\",\"name\":\"helpers\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"enum PermissionLib.Operation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"condition\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PermissionLib.MultiTargetPermission[]\",\"name\":\"permissions\",\"type\":\"tuple[]\"}],\"internalType\":\"struct IPluginSetup.PreparedSetupData\",\"name\":\"preparedSetupData\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_dao\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"plugin\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"currentHelpers\",\"type\":\"address[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IPluginSetup.SetupPayload\",\"name\":\"_payload\",\"type\":\"tuple\"}],\"name\":\"prepareUninstallation\",\"outputs\":[{\"components\":[{\"internalType\":\"enum PermissionLib.Operation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"condition\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PermissionLib.MultiTargetPermission[]\",\"name\":\"permissions\",\"type\":\"tuple[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_dao\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"_fromBuild\",\"type\":\"uint16\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"plugin\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"currentHelpers\",\"type\":\"address[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IPluginSetup.SetupPayload\",\"name\":\"_payload\",\"type\":\"tuple\"}],\"name\":\"prepareUpdate\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address[]\",\"name\":\"helpers\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"enum PermissionLib.Operation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"condition\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PermissionLib.MultiTargetPermission[]\",\"name\":\"permissions\",\"type\":\"tuple[]\"}],\"internalType\":\"struct IPluginSetup.PreparedSetupData\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"protocolVersion\",\"outputs\":[{\"internalType\":\"uint8[3]\",\"name\":\"\",\"type\":\"uint8[3]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"DO NOT USE IN PRODUCTION!\",\"kind\":\"dev\",\"methods\":{\"implementation()\":{\"details\":\"The implementation can be instantiated via the `new` keyword, cloned via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)), or proxied via the UUPS proxy pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\",\"returns\":{\"_0\":\"The address of the plugin implementation contract.\"}},\"prepareInstallation(address,bytes)\":{\"params\":{\"_dao\":\"The address of the installing DAO.\",\"_data\":\"The bytes-encoded data containing the input parameters for the installation as specified in the plugin's build metadata JSON file.\"},\"returns\":{\"plugin\":\"The address of the `Plugin` contract being prepared for installation.\",\"preparedSetupData\":\"The deployed plugin's relevant data which consists of helpers and permissions.\"}},\"prepareUninstallation(address,(address,address[],bytes))\":{\"params\":{\"_dao\":\"The address of the uninstalling DAO.\",\"_payload\":\"The relevant data necessary for the `prepareUninstallation`. See above.\"},\"returns\":{\"permissions\":\"The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the uninstalling DAO.\"}},\"prepareUpdate(address,uint16,(address,address[],bytes))\":{\"details\":\"Since the underlying plugin is non-upgradeable, this non-virtual function must always revert.\",\"params\":{\"_dao\":\"The address of the updating DAO.\",\"_fromBuild\":\"The build number of the plugin to update from.\",\"_payload\":\"The relevant data necessary for the `prepareUpdate`. See above.\"},\"returns\":{\"_0\":\"The initialization data to be passed to upgradeable contracts when the update is applied in the `PluginSetupProcessor`.\",\"_1\":\"The deployed plugin's relevant data which consists of helpers and permissions.\"}},\"protocolVersion()\":{\"details\":\"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\",\"returns\":{\"_0\":\"Returns the semantic Aragon OSx protocol version number.\"}},\"supportsInterface(bytes4)\":{\"params\":{\"_interfaceId\":\"The ID of the interface.\"},\"returns\":{\"_0\":\"Returns `true` if the interface is supported.\"}}},\"version\":1},\"userdoc\":{\"errors\":{\"NonUpgradeablePlugin()\":[{\"notice\":\"Thrown when attempting to prepare an update on a non-upgradeable plugin.\"}]},\"kind\":\"user\",\"methods\":{\"implementation()\":{\"notice\":\"Returns the plugin implementation address.\"},\"prepareInstallation(address,bytes)\":{\"notice\":\"Prepares the installation of a plugin.\"},\"prepareUninstallation(address,(address,address[],bytes))\":{\"notice\":\"Prepares the uninstallation of a plugin.\"},\"prepareUpdate(address,uint16,(address,address[],bytes))\":{\"notice\":\"Prepares the update of a plugin.\"},\"protocolVersion()\":{\"notice\":\"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Checks if this or the parent contract supports an interface by its ID.\"}},\"notice\":\"A mock plugin setup of a plugin to be deployed via the `new` keyword. v1.1 (Release 1, Build 1)\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/mocks/plugin/PluginSetupMock.sol\":\"PluginSetupMockBuild1\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n function _contextSuffixLength() internal view virtual returns (uint256) {\\n return 0;\\n }\\n}\\n\",\"keccak256\":\"0xa92e4fa126feb6907daa0513ddd816b2eb91f30a808de54f63c17d0e162c3439\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165 is IERC165 {\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165).interfaceId;\\n }\\n}\\n\",\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"src/dao/IDAO.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IDAO\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for DAOs within the Aragon App DAO framework.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IDAO {\\n /// @notice The action struct to be consumed by the DAO's `execute` function resulting in an external call.\\n /// @param to The address to call.\\n /// @param value The native token value to be sent with the call.\\n /// @param data The bytes-encoded function selector and calldata for the call.\\n struct Action {\\n address to;\\n uint256 value;\\n bytes data;\\n }\\n\\n /// @notice Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\\n /// @param _where The address of the contract.\\n /// @param _who The address of a EOA or contract to give the permissions.\\n /// @param _permissionId The permission identifier.\\n /// @param _data The optional data passed to the `PermissionCondition` registered.\\n /// @return Returns true if the address has permission, false if not.\\n function hasPermission(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes memory _data\\n ) external view returns (bool);\\n\\n /// @notice Updates the DAO metadata (e.g., an IPFS hash).\\n /// @param _metadata The IPFS hash of the new metadata object.\\n function setMetadata(bytes calldata _metadata) external;\\n\\n /// @notice Emitted when the DAO metadata is updated.\\n /// @param metadata The IPFS hash of the new metadata object.\\n event MetadataSet(bytes metadata);\\n\\n /// @notice Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted.\\n /// @param _callId The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce.\\n /// @param _actions The array of actions.\\n /// @param _allowFailureMap A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @return The array of results obtained from the executed actions in `bytes`.\\n /// @return The resulting failure map containing the actions have actually failed.\\n function execute(\\n bytes32 _callId,\\n Action[] memory _actions,\\n uint256 _allowFailureMap\\n ) external returns (bytes[] memory, uint256);\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param actor The address of the caller.\\n /// @param callId The ID of the call.\\n /// @param actions The array of actions executed.\\n /// @param allowFailureMap The allow failure map encoding which actions are allowed to fail.\\n /// @param failureMap The failure map encoding which actions have failed.\\n /// @param execResults The array with the results of the executed actions.\\n /// @dev The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce.\\n event Executed(\\n address indexed actor,\\n bytes32 callId,\\n Action[] actions,\\n uint256 allowFailureMap,\\n uint256 failureMap,\\n bytes[] execResults\\n );\\n\\n /// @notice Emitted when a standard callback is registered.\\n /// @param interfaceId The ID of the interface.\\n /// @param callbackSelector The selector of the callback function.\\n /// @param magicNumber The magic number to be registered for the callback function selector.\\n event StandardCallbackRegistered(\\n bytes4 interfaceId,\\n bytes4 callbackSelector,\\n bytes4 magicNumber\\n );\\n\\n /// @notice Deposits (native) tokens to the DAO contract with a reference string.\\n /// @param _token The address of the token or address(0) in case of the native token.\\n /// @param _amount The amount of tokens to deposit.\\n /// @param _reference The reference describing the deposit reason.\\n function deposit(address _token, uint256 _amount, string calldata _reference) external payable;\\n\\n /// @notice Emitted when a token deposit has been made to the DAO.\\n /// @param sender The address of the sender.\\n /// @param token The address of the deposited token.\\n /// @param amount The amount of tokens deposited.\\n /// @param _reference The reference describing the deposit reason.\\n event Deposited(\\n address indexed sender,\\n address indexed token,\\n uint256 amount,\\n string _reference\\n );\\n\\n /// @notice Emitted when a native token deposit has been made to the DAO.\\n /// @dev This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).\\n /// @param sender The address of the sender.\\n /// @param amount The amount of native tokens deposited.\\n event NativeTokenDeposited(address sender, uint256 amount);\\n\\n /// @notice Setter for the trusted forwarder verifying the meta transaction.\\n /// @param _trustedForwarder The trusted forwarder address.\\n function setTrustedForwarder(address _trustedForwarder) external;\\n\\n /// @notice Getter for the trusted forwarder verifying the meta transaction.\\n /// @return The trusted forwarder address.\\n function getTrustedForwarder() external view returns (address);\\n\\n /// @notice Emitted when a new TrustedForwarder is set on the DAO.\\n /// @param forwarder the new forwarder address.\\n event TrustedForwarderSet(address forwarder);\\n\\n /// @notice Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\\n /// @param _hash The hash of the data to be signed.\\n /// @param _signature The signature byte array associated with `_hash`.\\n /// @return Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not.\\n function isValidSignature(bytes32 _hash, bytes memory _signature) external returns (bytes4);\\n\\n /// @notice Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\\n /// @param _interfaceId The ID of the interface.\\n /// @param _callbackSelector The selector of the callback function.\\n /// @param _magicNumber The magic number to be registered for the function signature.\\n function registerStandardCallback(\\n bytes4 _interfaceId,\\n bytes4 _callbackSelector,\\n bytes4 _magicNumber\\n ) external;\\n\\n /// @notice Removed function being left here to not corrupt the IDAO interface ID. Any call will revert.\\n /// @dev Introduced in v1.0.0. Removed in v1.4.0.\\n function setSignatureValidator(address) external;\\n}\\n\",\"keccak256\":\"0xb7f615523c26de042edce98731c658f44a1edb2464387ac1b642c4c69f57128e\",\"license\":\"AGPL-3.0-or-later\"},\"src/mocks/plugin/PluginMock.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {Plugin} from \\\"../../plugin/Plugin.sol\\\";\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice A mock plugin to be deployed via the `new` keyword.\\n/// v1.1 (Release 1, Build 1)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginMockBuild1 is Plugin {\\n uint256 public state1;\\n\\n constructor(IDAO _dao) Plugin(_dao) {\\n state1 = 1;\\n }\\n}\\n\",\"keccak256\":\"0x9aca72aa9f93de6de6cc6a093aaaceb62649bea46fba7f07a01a067c145c35bd\",\"license\":\"AGPL-3.0-or-later\"},\"src/mocks/plugin/PluginSetupMock.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\n/* solhint-disable one-contract-per-file */\\npragma solidity ^0.8.8;\\n\\nimport {PermissionLib} from \\\"../../permission/PermissionLib.sol\\\";\\nimport {IPluginSetup} from \\\"../../plugin/setup/IPluginSetup.sol\\\";\\nimport {PluginSetup} from \\\"../../plugin/setup/PluginSetup.sol\\\";\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\nimport {mockPermissions, mockHelpers} from \\\"./PluginSetupMockData.sol\\\";\\nimport {PluginMockBuild1} from \\\"./PluginMock.sol\\\";\\n\\n/// @notice A mock plugin setup of a plugin to be deployed via the `new` keyword.\\n/// v1.1 (Release 1, Build 1)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginSetupMockBuild1 is PluginSetup {\\n constructor() PluginSetup(address(new PluginMockBuild1(IDAO(address(0))))) {}\\n\\n /// @inheritdoc IPluginSetup\\n function prepareInstallation(\\n address _dao,\\n bytes memory _data\\n ) external returns (address plugin, PreparedSetupData memory preparedSetupData) {\\n (_data);\\n plugin = address(new PluginMockBuild1(IDAO(_dao)));\\n preparedSetupData.helpers = mockHelpers(1);\\n preparedSetupData.permissions = mockPermissions(0, 1, PermissionLib.Operation.Grant);\\n }\\n\\n /// @inheritdoc IPluginSetup\\n function prepareUninstallation(\\n address _dao,\\n SetupPayload calldata _payload\\n ) external pure returns (PermissionLib.MultiTargetPermission[] memory permissions) {\\n (_dao, _payload);\\n permissions = mockPermissions(0, 1, PermissionLib.Operation.Revoke);\\n }\\n}\\n\",\"keccak256\":\"0xa6f273174c0824bf16728b127487e2e98e70068951de6989dc9bb6aac633e597\",\"license\":\"AGPL-3.0-or-later\"},\"src/mocks/plugin/PluginSetupMockData.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {PermissionLib} from \\\"../../permission/PermissionLib.sol\\\";\\n\\naddress constant NO_CONDITION = address(0);\\n\\nerror ConflictingValues();\\n\\n/// @notice Creates a mock `MultiTargetPermission` array by converting a range of `uint160` values into `address` values.\\n/// @param rangeStart The start of the range.\\n/// @param rangeEnd The end of the range (that is not included).\\n/// @param op The permission operation type.\\n/// @return permissions The mock array of permissions.\\n/// @dev DO NOT USE IN PRODUCTION!\\nfunction mockPermissions(\\n uint160 rangeStart,\\n uint160 rangeEnd,\\n PermissionLib.Operation op\\n) pure returns (PermissionLib.MultiTargetPermission[] memory permissions) {\\n if (rangeStart > rangeEnd) revert ConflictingValues();\\n\\n permissions = new PermissionLib.MultiTargetPermission[](rangeEnd - rangeStart);\\n\\n for (uint160 i = rangeStart; i < rangeEnd; i++) {\\n permissions[i - rangeStart] = PermissionLib.MultiTargetPermission({\\n operation: op,\\n where: address(i),\\n who: address(i),\\n condition: PermissionLib.NO_CONDITION,\\n permissionId: keccak256(\\\"MOCK_PERMISSION\\\")\\n });\\n }\\n}\\n\\n/// @notice Creates a mock array of helper addresses of specified length by converting `uint160` values starting from 0 into `address` values.\\n/// @param len The length of the helper array.\\n/// @return helpers The mock array of helper addresses.\\n/// @dev DO NOT USE IN PRODUCTION!\\nfunction mockHelpers(uint160 len) pure returns (address[] memory helpers) {\\n helpers = new address[](len);\\n\\n for (uint160 i = 0; i < len; i++) {\\n helpers[i] = address(i);\\n }\\n}\\n\",\"keccak256\":\"0x529d1b7ea4c348fe18edf81a044792ca8aa1f6ad9a7d2edfd35e38bf8372abf9\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/PermissionLib.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title PermissionLib\\n/// @author Aragon X - 2021-2023\\n/// @notice A library containing objects for permission processing.\\n/// @custom:security-contact sirt@aragon.org\\nlibrary PermissionLib {\\n /// @notice A constant expressing that no condition is applied to a permission.\\n address public constant NO_CONDITION = address(0);\\n\\n /// @notice The types of permission operations available in the `PermissionManager`.\\n /// @param Grant The grant operation setting a permission without a condition.\\n /// @param Revoke The revoke operation removing a permission (that was granted with or without a condition).\\n /// @param GrantWithCondition The grant operation setting a permission with a condition.\\n enum Operation {\\n Grant,\\n Revoke,\\n GrantWithCondition\\n }\\n\\n /// @notice A struct containing the information for a permission to be applied on a single target contract without a condition.\\n /// @param operation The permission operation type.\\n /// @param who The address (EOA or contract) receiving the permission.\\n /// @param permissionId The permission identifier.\\n struct SingleTargetPermission {\\n Operation operation;\\n address who;\\n bytes32 permissionId;\\n }\\n\\n /// @notice A struct containing the information for a permission to be applied on multiple target contracts, optionally, with a condition.\\n /// @param operation The permission operation type.\\n /// @param where The address of the target contract for which `who` receives permission.\\n /// @param who The address (EOA or contract) receiving the permission.\\n /// @param condition The `PermissionCondition` that will be asked for authorization on calls connected to the specified permission identifier.\\n /// @param permissionId The permission identifier.\\n struct MultiTargetPermission {\\n Operation operation;\\n address where;\\n address who;\\n address condition;\\n bytes32 permissionId;\\n }\\n}\\n\",\"keccak256\":\"0x470faf3c4891ebc6420ef6cc09f6098917568ccc79268c90954d1478199b6097\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/DaoAuthorizable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {Context} from \\\"@openzeppelin/contracts/utils/Context.sol\\\";\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\nimport {_auth} from \\\"./auth.sol\\\";\\n\\n/// @title DaoAuthorizable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract contract providing a meta-transaction compatible modifier for non-upgradeable contracts instantiated via the `new` keyword to authorize function calls through an associated DAO.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract DaoAuthorizable is Context {\\n /// @notice The associated DAO managing the permissions of inheriting contracts.\\n IDAO private immutable DAO;\\n\\n /// @notice Constructs the contract by setting the associated DAO.\\n /// @param _dao The associated DAO address.\\n constructor(IDAO _dao) {\\n DAO = _dao;\\n }\\n\\n /// @notice Returns the DAO contract.\\n /// @return The DAO contract.\\n function dao() public view returns (IDAO) {\\n return DAO;\\n }\\n\\n /// @notice A modifier to make functions on inheriting contracts authorized. Permissions to call the function are checked through the associated DAO's permission manager.\\n /// @param _permissionId The permission identifier required to call the method this modifier is applied to.\\n modifier auth(bytes32 _permissionId) {\\n _auth(DAO, address(this), _msgSender(), _permissionId, _msgData());\\n _;\\n }\\n}\\n\",\"keccak256\":\"0x3d0be91b4f5854ed2d2c51b53fe7ffba58cc968e972015cf60eb3ea100543e64\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/auth.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice Thrown if a call is unauthorized in the associated DAO.\\n/// @param dao The associated DAO.\\n/// @param where The context in which the authorization reverted.\\n/// @param who The address (EOA or contract) missing the permission.\\n/// @param permissionId The permission identifier.\\nerror DaoUnauthorized(address dao, address where, address who, bytes32 permissionId);\\n\\n/// @notice A free function checking if a caller is granted permissions on a target contract via a permission identifier that redirects the approval to a `PermissionCondition` if this was specified in the setup.\\n/// @param _where The address of the target contract for which `who` receives permission.\\n/// @param _who The address (EOA or contract) owning the permission.\\n/// @param _permissionId The permission identifier.\\n/// @param _data The optional data passed to the `PermissionCondition` registered.\\n/// @custom:security-contact sirt@aragon.org\\nfunction _auth(\\n IDAO _dao,\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes calldata _data\\n) view {\\n if (!_dao.hasPermission(_where, _who, _permissionId, _data))\\n revert DaoUnauthorized({\\n dao: address(_dao),\\n where: _where,\\n who: _who,\\n permissionId: _permissionId\\n });\\n}\\n\",\"keccak256\":\"0x878764b4f87fe0651fb3798fb9cb87c952f8c6caf6ae79c7f09de84df6c00298\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/IPlugin.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IPlugin\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the traits of a plugin.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IPlugin {\\n enum PluginType {\\n UUPS,\\n Cloneable,\\n Constructable\\n }\\n\\n /// @notice Returns the plugin's type\\n function pluginType() external view returns (PluginType);\\n}\\n\",\"keccak256\":\"0xc57cd0d10b6380ab7f54c713a509e88fd8f4ad9288313a0e8e12b8887817ddfe\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/Plugin.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ERC165} from \\\"@openzeppelin/contracts/utils/introspection/ERC165.sol\\\";\\n\\nimport {IProtocolVersion} from \\\"../utils/versioning/IProtocolVersion.sol\\\";\\nimport {ProtocolVersion} from \\\"../utils/versioning/ProtocolVersion.sol\\\";\\nimport {DaoAuthorizable} from \\\"../permission/auth/DaoAuthorizable.sol\\\";\\nimport {IDAO} from \\\"../dao/IDAO.sol\\\";\\nimport {IPlugin} from \\\"./IPlugin.sol\\\";\\n\\n/// @title Plugin\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract, non-upgradeable contract to inherit from when creating a plugin being deployed via the `new` keyword.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract Plugin is IPlugin, ERC165, DaoAuthorizable, ProtocolVersion {\\n address public target;\\n\\n /// @dev Emitted each time the Target is set.\\n event TargetSet(address indexed previousTarget, address indexed newTarget);\\n\\n /// @notice Constructs the plugin by storing the associated DAO.\\n /// @param _dao The DAO contract.\\n constructor(IDAO _dao) DaoAuthorizable(_dao) {}\\n\\n /// @inheritdoc IPlugin\\n function pluginType() public pure override returns (PluginType) {\\n return PluginType.Constructable;\\n }\\n\\n /// @dev Sets the target to a new target (`newTarget`).\\n /// @notice Can only be called by the current owner. TODO\\n function setTarget(address _target) public {\\n address previousTarget = target;\\n target = _target;\\n emit TargetSet(previousTarget, _target);\\n }\\n\\n /// @notice Checks if this or the parent contract supports an interface by its ID.\\n /// @param _interfaceId The ID of the interface.\\n /// @return Returns `true` if the interface is supported.\\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\\n return\\n _interfaceId == type(IPlugin).interfaceId ||\\n _interfaceId == type(IProtocolVersion).interfaceId ||\\n super.supportsInterface(_interfaceId);\\n }\\n\\n /// @notice Forwards the actions to the currently set `target` for the execution.\\n /// @param _callId Identifier for this execution.\\n /// @param _actions actions that will be eventually called.\\n /// @param _allowFailureMap Bitmap-encoded number. TODO:\\n /// @return execResults address of the implementation contract.\\n /// @return failureMap address of the implementation contract.\\n function _execute(\\n bytes32 _callId,\\n IDAO.Action[] calldata _actions,\\n uint256 _allowFailureMap\\n ) internal virtual returns (bytes[] memory execResults, uint256 failureMap) {\\n (execResults, failureMap) = IDAO(target).execute(_callId, _actions, _allowFailureMap);\\n }\\n\\n /// @notice Forwards the actions to the `target` for the execution.\\n /// @param _target Forwards the actions to the specific target.\\n /// @param _callId Identifier for this execution.\\n /// @param _actions actions that will be eventually called.\\n /// @param _allowFailureMap Bitmap-encoded number. TODO:\\n /// @return execResults address of the implementation contract.\\n /// @return failureMap address of the implementation contract.\\n function _execute(\\n address _target,\\n bytes32 _callId,\\n IDAO.Action[] calldata _actions,\\n uint256 _allowFailureMap\\n ) internal virtual returns (bytes[] memory execResults, uint256 failureMap) {\\n (execResults, failureMap) = IDAO(_target).execute(_callId, _actions, _allowFailureMap);\\n }\\n}\\n\",\"keccak256\":\"0xaba248693127801c242cb55bdb8625c3f4138009c3e33fa5478c2d09efb309c3\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/setup/IPluginSetup.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {PermissionLib} from \\\"../../permission/PermissionLib.sol\\\";\\n\\n// solhint-disable-next-line no-unused-import\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @title IPluginSetup\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for a plugin setup contract to be consumed by the `PluginSetupProcessor` for plugin installations, updates, and uninstallations.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IPluginSetup {\\n /// @notice The data associated with a prepared setup.\\n /// @param helpers The address array of helpers (contracts or EOAs) associated with this plugin version after the installation or update.\\n /// @param permissions The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the installing or updating DAO.\\n struct PreparedSetupData {\\n address[] helpers;\\n PermissionLib.MultiTargetPermission[] permissions;\\n }\\n\\n /// @notice The payload for plugin updates and uninstallations containing the existing contracts as well as optional data to be consumed by the plugin setup.\\n /// @param plugin The address of the `Plugin`.\\n /// @param currentHelpers The address array of all current helpers (contracts or EOAs) associated with the plugin to update from.\\n /// @param data The bytes-encoded data containing the input parameters for the preparation of update/uninstall as specified in the corresponding ABI on the version's metadata.\\n struct SetupPayload {\\n address plugin;\\n address[] currentHelpers;\\n bytes data;\\n }\\n\\n /// @notice Prepares the installation of a plugin.\\n /// @param _dao The address of the installing DAO.\\n /// @param _data The bytes-encoded data containing the input parameters for the installation as specified in the plugin's build metadata JSON file.\\n /// @return plugin The address of the `Plugin` contract being prepared for installation.\\n /// @return preparedSetupData The deployed plugin's relevant data which consists of helpers and permissions.\\n function prepareInstallation(\\n address _dao,\\n bytes calldata _data\\n ) external returns (address plugin, PreparedSetupData memory preparedSetupData);\\n\\n /// @notice Prepares the update of a plugin.\\n /// @param _dao The address of the updating DAO.\\n /// @param _fromBuild The build number of the plugin to update from.\\n /// @param _payload The relevant data necessary for the `prepareUpdate`. See above.\\n /// @return initData The initialization data to be passed to upgradeable contracts when the update is applied in the `PluginSetupProcessor`.\\n /// @return preparedSetupData The deployed plugin's relevant data which consists of helpers and permissions.\\n function prepareUpdate(\\n address _dao,\\n uint16 _fromBuild,\\n SetupPayload calldata _payload\\n ) external returns (bytes memory initData, PreparedSetupData memory preparedSetupData);\\n\\n /// @notice Prepares the uninstallation of a plugin.\\n /// @param _dao The address of the uninstalling DAO.\\n /// @param _payload The relevant data necessary for the `prepareUninstallation`. See above.\\n /// @return permissions The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the uninstalling DAO.\\n function prepareUninstallation(\\n address _dao,\\n SetupPayload calldata _payload\\n ) external returns (PermissionLib.MultiTargetPermission[] memory permissions);\\n\\n /// @notice Returns the plugin implementation address.\\n /// @return The address of the plugin implementation contract.\\n /// @dev The implementation can be instantiated via the `new` keyword, cloned via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)), or proxied via the UUPS proxy pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0x21c99995208039ac6ace219b6f273243811dc2aa66399e8e499e43ec30b82fa9\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/setup/PluginSetup.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ERC165} from \\\"@openzeppelin/contracts/utils/introspection/ERC165.sol\\\";\\n\\nimport {IProtocolVersion} from \\\"../../utils/versioning/IProtocolVersion.sol\\\";\\nimport {ProtocolVersion} from \\\"../../utils/versioning/ProtocolVersion.sol\\\";\\nimport {IPluginSetup} from \\\"./IPluginSetup.sol\\\";\\n\\n/// @title PluginSetup\\n/// @author Aragon X - 2022-2024\\n/// @notice An abstract contract to inherit from to implement the plugin setup for non-upgradeable plugins, i.e,\\n/// - `Plugin` being deployed via the `new` keyword\\n/// - `PluginCloneable` being deployed via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)).\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract PluginSetup is ERC165, IPluginSetup, ProtocolVersion {\\n /// @notice The address of the plugin implementation contract for initial block explorer verification and, in the case of `PluginClonable` implementations, to create [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167) clones from.\\n address internal immutable IMPLEMENTATION;\\n\\n /// @notice Thrown when attempting to prepare an update on a non-upgradeable plugin.\\n error NonUpgradeablePlugin();\\n\\n /// @notice The contract constructor, that setting the plugin implementation contract.\\n /// @param _implementation The address of the plugin implementation contract.\\n constructor(address _implementation) {\\n IMPLEMENTATION = _implementation;\\n }\\n\\n /// @inheritdoc IPluginSetup\\n /// @dev Since the underlying plugin is non-upgradeable, this non-virtual function must always revert.\\n function prepareUpdate(\\n address _dao,\\n uint16 _fromBuild,\\n SetupPayload calldata _payload\\n ) external pure returns (bytes memory, PreparedSetupData memory) {\\n (_dao, _fromBuild, _payload);\\n revert NonUpgradeablePlugin();\\n }\\n\\n /// @notice Checks if this or the parent contract supports an interface by its ID.\\n /// @param _interfaceId The ID of the interface.\\n /// @return Returns `true` if the interface is supported.\\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\\n return\\n _interfaceId == type(IPluginSetup).interfaceId ||\\n _interfaceId == type(IProtocolVersion).interfaceId ||\\n super.supportsInterface(_interfaceId);\\n }\\n\\n /// @inheritdoc IPluginSetup\\n function implementation() public view returns (address) {\\n return IMPLEMENTATION;\\n }\\n}\\n\",\"keccak256\":\"0x93044f8080758c5cf8d621e3614b8150f55572a1770880106a49dfa53784a9d2\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/IProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IProtocolVersion\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the semantic Aragon OSx protocol version number.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IProtocolVersion {\\n /// @notice Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\\n /// @return _version Returns the semantic Aragon OSx protocol version number.\\n /// @dev This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\\n function protocolVersion() external view returns (uint8[3] memory _version);\\n}\\n\",\"keccak256\":\"0x00a4da654d21dc1bdadbdc8bd54bb86c378c56f85e461ccc31303628ea621361\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/ProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IProtocolVersion} from \\\"./IProtocolVersion.sol\\\";\\n\\n/// @title ProtocolVersion\\n/// @author Aragon X - 2023\\n/// @notice An abstract, stateless, non-upgradeable contract providing the current Aragon OSx protocol version number.\\n/// @dev Do not add any new variables to this contract that would shift down storage in the inheritance chain.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract ProtocolVersion is IProtocolVersion {\\n // IMPORTANT: Do not add any storage variable, see the above notice.\\n\\n /// @inheritdoc IProtocolVersion\\n function protocolVersion() public pure returns (uint8[3] memory) {\\n return [1, 4, 0];\\n }\\n}\\n\",\"keccak256\":\"0x3975c937be935f687c6b6b8f379071232681e98cf04b175d72781b819ea52bdb\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"errors":{"NonUpgradeablePlugin()":[{"notice":"Thrown when attempting to prepare an update on a non-upgradeable plugin."}]},"kind":"user","methods":{"implementation()":{"notice":"Returns the plugin implementation address."},"prepareInstallation(address,bytes)":{"notice":"Prepares the installation of a plugin."},"prepareUninstallation(address,(address,address[],bytes))":{"notice":"Prepares the uninstallation of a plugin."},"prepareUpdate(address,uint16,(address,address[],bytes))":{"notice":"Prepares the update of a plugin."},"protocolVersion()":{"notice":"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with."},"supportsInterface(bytes4)":{"notice":"Checks if this or the parent contract supports an interface by its ID."}},"notice":"A mock plugin setup of a plugin to be deployed via the `new` keyword. v1.1 (Release 1, Build 1)","version":1}}},"src/mocks/plugin/PluginUUPSUpgradeableMock.sol":{"PluginUUPSUpgradeableMockBad":{"abi":[{"inputs":[{"internalType":"address","name":"dao","type":"address"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"name":"DaoUnauthorized","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"beacon","type":"address"}],"name":"BeaconUpgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousTarget","type":"address"},{"indexed":true,"internalType":"address","name":"newTarget","type":"address"}],"name":"TargetSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"inputs":[],"name":"UPGRADE_PLUGIN_PERMISSION_ID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dao","outputs":[{"internalType":"contract IDAO","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IDAO","name":"_dao","type":"address"}],"name":"notAnInitializer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pluginType","outputs":[{"internalType":"enum IPlugin.PluginType","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"protocolVersion","outputs":[{"internalType":"uint8[3]","name":"","type":"uint8[3]"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_target","type":"address"}],"name":"setTarget","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"state1","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"target","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"}],"name":"upgradeTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"}],"devdoc":{"details":"DO NOT USE IN PRODUCTION!","errors":{"DaoUnauthorized(address,address,address,bytes32)":[{"params":{"dao":"The associated DAO.","permissionId":"The permission identifier.","where":"The context in which the authorization reverted.","who":"The address (EOA or contract) missing the permission."}}]},"kind":"dev","methods":{"dao()":{"returns":{"_0":"The DAO contract."}},"implementation()":{"returns":{"_0":"The address of the implementation contract."}},"protocolVersion()":{"details":"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.","returns":{"_0":"Returns the semantic Aragon OSx protocol version number."}},"proxiableUUID()":{"details":"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier."},"setTarget(address)":{"details":"Sets the target to a new target (`newTarget`)."},"supportsInterface(bytes4)":{"params":{"_interfaceId":"The ID of the interface."},"returns":{"_0":"Returns `true` if the interface is supported."}},"upgradeTo(address)":{"custom:oz-upgrades-unsafe-allow-reachable":"delegatecall","details":"Upgrade the implementation of the proxy to `newImplementation`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."},"upgradeToAndCall(address,bytes)":{"custom:oz-upgrades-unsafe-allow-reachable":"delegatecall","details":"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."}},"version":1},"evm":{"bytecode":{"functionDebugData":{"@_4397":{"entryPoint":null,"id":4397,"parameterSlots":0,"returnSlots":0},"@_disableInitializers_515":{"entryPoint":34,"id":515,"parameterSlots":0,"returnSlots":0},"abi_encode_tuple_t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:608:50","statements":[{"nodeType":"YulBlock","src":"6:3:50","statements":[]},{"body":{"nodeType":"YulBlock","src":"188:229:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"205:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"216:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"198:6:50"},"nodeType":"YulFunctionCall","src":"198:21:50"},"nodeType":"YulExpressionStatement","src":"198:21:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"239:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"250:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"235:3:50"},"nodeType":"YulFunctionCall","src":"235:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"255:2:50","type":"","value":"39"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"228:6:50"},"nodeType":"YulFunctionCall","src":"228:30:50"},"nodeType":"YulExpressionStatement","src":"228:30:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"278:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"289:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"274:3:50"},"nodeType":"YulFunctionCall","src":"274:18:50"},{"hexValue":"496e697469616c697a61626c653a20636f6e747261637420697320696e697469","kind":"string","nodeType":"YulLiteral","src":"294:34:50","type":"","value":"Initializable: contract is initi"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"267:6:50"},"nodeType":"YulFunctionCall","src":"267:62:50"},"nodeType":"YulExpressionStatement","src":"267:62:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"349:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"360:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"345:3:50"},"nodeType":"YulFunctionCall","src":"345:18:50"},{"hexValue":"616c697a696e67","kind":"string","nodeType":"YulLiteral","src":"365:9:50","type":"","value":"alizing"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"338:6:50"},"nodeType":"YulFunctionCall","src":"338:37:50"},"nodeType":"YulExpressionStatement","src":"338:37:50"},{"nodeType":"YulAssignment","src":"384:27:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"396:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"407:3:50","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"392:3:50"},"nodeType":"YulFunctionCall","src":"392:19:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"384:4:50"}]}]},"name":"abi_encode_tuple_t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"165:9:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"179:4:50","type":""}],"src":"14:403:50"},{"body":{"nodeType":"YulBlock","src":"519:87:50","statements":[{"nodeType":"YulAssignment","src":"529:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"541:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"552:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"537:3:50"},"nodeType":"YulFunctionCall","src":"537:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"529:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"571:9:50"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"586:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"594:4:50","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"582:3:50"},"nodeType":"YulFunctionCall","src":"582:17:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"564:6:50"},"nodeType":"YulFunctionCall","src":"564:36:50"},"nodeType":"YulExpressionStatement","src":"564:36:50"}]},"name":"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"488:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"499:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"510:4:50","type":""}],"src":"422:184:50"}]},"contents":"{\n { }\n function abi_encode_tuple_t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 39)\n mstore(add(headStart, 64), \"Initializable: contract is initi\")\n mstore(add(headStart, 96), \"alizing\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xff))\n }\n}","id":50,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60a06040523060805234801561001457600080fd5b5061001d610022565b6100e1565b600054610100900460ff161561008e5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116146100df576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b60805161109b61011860003960008181610334015281816103be015281816104b4015281816105390152610623015261109b6000f3fe6080604052600436106100d25760003560e01c806352d1902d1161007f578063776d1a0111610059578063776d1a01146102005780638883bbd714610220578063c9c4bfca14610240578063d4b839921461027457600080fd5b806352d1902d146101b15780635c60da1b146101d45780636accab8c146101e957600080fd5b80634162169f116100b05780634162169f1461015057806341de6830146101825780634f1ef2861461019e57600080fd5b806301ffc9a7146100d75780632ae9c6001461010c5780633659cfe61461012e575b600080fd5b3480156100e357600080fd5b506100f76100f2366004610dd3565b610294565b60405190151581526020015b60405180910390f35b34801561011857600080fd5b50610121610300565b6040516101039190610dfd565b34801561013a57600080fd5b5061014e610149366004610e46565b61032a565b005b34801561015c57600080fd5b5060c9546001600160a01b03165b6040516001600160a01b039091168152602001610103565b34801561018e57600080fd5b5060006040516101039190610e63565b61014e6101ac366004610ea1565b6104aa565b3480156101bd57600080fd5b506101c6610616565b604051908152602001610103565b3480156101e057600080fd5b5061016a6106db565b3480156101f557600080fd5b506101c661012d5481565b34801561020c57600080fd5b5061014e61021b366004610e46565b610713565b34801561022c57600080fd5b5061014e61023b366004610e46565b610772565b34801561024c57600080fd5b506101c67f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f581565b34801561028057600080fd5b5060fb5461016a906001600160a01b031681565b60006001600160e01b0319821663041de68360e41b14806102c457506001600160e01b03198216621574e360e91b145b806102df57506001600160e01b031982166352d1902d60e01b145b806102fa57506301ffc9a760e01b6001600160e01b03198316145b92915050565b610308610db5565b5060408051606081018252600181526004602082015260009181019190915290565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036103bc5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b60648201526084015b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166104177f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b0316146104825760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b60648201526084016103b3565b61048b81610784565b604080516000808252602082019092526104a7918391906107c1565b50565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036105375760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b60648201526084016103b3565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166105927f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b0316146105fd5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b60648201526084016103b3565b61060682610784565b610612828260016107c1565b5050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106b65760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016103b3565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b600061070e7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b60fb80546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d690600090a35050565b61077b81610966565b50600161012d55565b60c9547f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f590610612906001600160a01b03163033846000366109da565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156107f9576107f483610a96565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610853575060408051601f3d908101601f1916820190925261085091810190610f65565b60015b6108c55760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201527f6f6e206973206e6f74205555505300000000000000000000000000000000000060648201526084016103b3565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc811461095a5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f7860448201527f6961626c6555554944000000000000000000000000000000000000000000000060648201526084016103b3565b506107f4838383610b61565b600054610100900460ff166109d15760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103b3565b6104a781610b8c565b604051637ef7c88360e11b81526001600160a01b0387169063fdef910690610a0e9088908890889088908890600401610f7e565b602060405180830381865afa158015610a2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4f9190610fd2565b610a8e57604051630cb6f8ed60e21b81526001600160a01b038088166004830152808716602483015285166044820152606481018490526084016103b3565b505050505050565b6001600160a01b0381163b610b135760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e74726163740000000000000000000000000000000000000060648201526084016103b3565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610b6a83610c26565b600082511180610b775750805b156107f457610b868383610c66565b50505050565b600054610100900460ff16610bf75760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103b3565b60c9805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610c2f81610a96565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060610c8b838360405180606001604052806027815260200161106860279139610c92565b9392505050565b6060600080856001600160a01b031685604051610caf9190611018565b600060405180830381855af49150503d8060008114610cea576040519150601f19603f3d011682016040523d82523d6000602084013e610cef565b606091505b5091509150610d0086838387610d0a565b9695505050505050565b60608315610d79578251600003610d72576001600160a01b0385163b610d725760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016103b3565b5081610d83565b610d838383610d8b565b949350505050565b815115610d9b5781518083602001fd5b8060405162461bcd60e51b81526004016103b39190611034565b60405180606001604052806003906020820280368337509192915050565b600060208284031215610de557600080fd5b81356001600160e01b031981168114610c8b57600080fd5b60608101818360005b6003811015610e2857815160ff16835260209283019290910190600101610e06565b50505092915050565b6001600160a01b03811681146104a757600080fd5b600060208284031215610e5857600080fd5b8135610c8b81610e31565b6020810160038310610e8557634e487b7160e01b600052602160045260246000fd5b91905290565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215610eb457600080fd5b8235610ebf81610e31565b9150602083013567ffffffffffffffff80821115610edc57600080fd5b818501915085601f830112610ef057600080fd5b813581811115610f0257610f02610e8b565b604051601f8201601f19908116603f01168101908382118183101715610f2a57610f2a610e8b565b81604052828152886020848701011115610f4357600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b600060208284031215610f7757600080fd5b5051919050565b60006001600160a01b03808816835280871660208401525084604083015260806060830152826080830152828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b600060208284031215610fe457600080fd5b81518015158114610c8b57600080fd5b60005b8381101561100f578181015183820152602001610ff7565b50506000910152565b6000825161102a818460208701610ff4565b9190910192915050565b6020815260008251806020840152611053816040850160208701610ff4565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a","opcodes":"PUSH1 0xA0 PUSH1 0x40 MSTORE ADDRESS PUSH1 0x80 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x14 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1D PUSH2 0x22 JUMP JUMPDEST PUSH2 0xE1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x8E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x27 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320696E697469 PUSH1 0x44 DUP3 ADD MSTORE PUSH7 0x616C697A696E67 PUSH1 0xC8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xFF SWAP1 DUP2 AND EQ PUSH2 0xDF JUMPI PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH2 0x109B PUSH2 0x118 PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH2 0x334 ADD MSTORE DUP2 DUP2 PUSH2 0x3BE ADD MSTORE DUP2 DUP2 PUSH2 0x4B4 ADD MSTORE DUP2 DUP2 PUSH2 0x539 ADD MSTORE PUSH2 0x623 ADD MSTORE PUSH2 0x109B PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xD2 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x52D1902D GT PUSH2 0x7F JUMPI DUP1 PUSH4 0x776D1A01 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0x776D1A01 EQ PUSH2 0x200 JUMPI DUP1 PUSH4 0x8883BBD7 EQ PUSH2 0x220 JUMPI DUP1 PUSH4 0xC9C4BFCA EQ PUSH2 0x240 JUMPI DUP1 PUSH4 0xD4B83992 EQ PUSH2 0x274 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x52D1902D EQ PUSH2 0x1B1 JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0x1D4 JUMPI DUP1 PUSH4 0x6ACCAB8C EQ PUSH2 0x1E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x4162169F GT PUSH2 0xB0 JUMPI DUP1 PUSH4 0x4162169F EQ PUSH2 0x150 JUMPI DUP1 PUSH4 0x41DE6830 EQ PUSH2 0x182 JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x19E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xD7 JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0x10C JUMPI DUP1 PUSH4 0x3659CFE6 EQ PUSH2 0x12E JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xE3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF7 PUSH2 0xF2 CALLDATASIZE PUSH1 0x4 PUSH2 0xDD3 JUMP JUMPDEST PUSH2 0x294 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x118 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x121 PUSH2 0x300 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x103 SWAP2 SWAP1 PUSH2 0xDFD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x13A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x14E PUSH2 0x149 CALLDATASIZE PUSH1 0x4 PUSH2 0xE46 JUMP JUMPDEST PUSH2 0x32A JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x15C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xC9 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x103 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x18E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 PUSH1 0x40 MLOAD PUSH2 0x103 SWAP2 SWAP1 PUSH2 0xE63 JUMP JUMPDEST PUSH2 0x14E PUSH2 0x1AC CALLDATASIZE PUSH1 0x4 PUSH2 0xEA1 JUMP JUMPDEST PUSH2 0x4AA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C6 PUSH2 0x616 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x103 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x16A PUSH2 0x6DB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C6 PUSH2 0x12D SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x20C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x14E PUSH2 0x21B CALLDATASIZE PUSH1 0x4 PUSH2 0xE46 JUMP JUMPDEST PUSH2 0x713 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x22C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x14E PUSH2 0x23B CALLDATASIZE PUSH1 0x4 PUSH2 0xE46 JUMP JUMPDEST PUSH2 0x772 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x24C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C6 PUSH32 0x821B6E3A557148015A918C89E5D092E878A69854A2D1A410635F771BD5A8A3F5 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x280 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xFB SLOAD PUSH2 0x16A SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x41DE683 PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x2C4 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x2DF JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x52D1902D PUSH1 0xE0 SHL EQ JUMPDEST DUP1 PUSH2 0x2FA JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x308 PUSH2 0xDB5 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x3BC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x19195B1959D85D1958D85B1B PUSH1 0xA2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x417 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x482 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x6163746976652070726F7879 PUSH1 0xA0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B3 JUMP JUMPDEST PUSH2 0x48B DUP2 PUSH2 0x784 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x4A7 SWAP2 DUP4 SWAP2 SWAP1 PUSH2 0x7C1 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x537 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x19195B1959D85D1958D85B1B PUSH1 0xA2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B3 JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x592 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x5FD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x6163746976652070726F7879 PUSH1 0xA0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B3 JUMP JUMPDEST PUSH2 0x606 DUP3 PUSH2 0x784 JUMP JUMPDEST PUSH2 0x612 DUP3 DUP3 PUSH1 0x1 PUSH2 0x7C1 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x6B6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x38 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x555550535570677261646561626C653A206D757374206E6F742062652063616C PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6C6564207468726F7567682064656C656761746563616C6C0000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B3 JUMP JUMPDEST POP PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x70E PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0xFB DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP2 SWAP1 DUP3 SWAP1 PUSH32 0x90CC2F570A6EB594B1580EA3E41247D2D73A55281889E86BD4EC2FC29C7E62D6 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH2 0x77B DUP2 PUSH2 0x966 JUMP JUMPDEST POP PUSH1 0x1 PUSH2 0x12D SSTORE JUMP JUMPDEST PUSH1 0xC9 SLOAD PUSH32 0x821B6E3A557148015A918C89E5D092E878A69854A2D1A410635F771BD5A8A3F5 SWAP1 PUSH2 0x612 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ADDRESS CALLER DUP5 PUSH1 0x0 CALLDATASIZE PUSH2 0x9DA JUMP JUMPDEST PUSH32 0x4910FDFA16FED3260ED0E7147F7CC6DA11A60208B5B9406D12A635614FFD9143 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x7F9 JUMPI PUSH2 0x7F4 DUP4 PUSH2 0xA96 JUMP JUMPDEST POP POP POP JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x52D1902D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x853 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x850 SWAP2 DUP2 ADD SWAP1 PUSH2 0xF65 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x8C5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524331393637557067726164653A206E657720696D706C656D656E74617469 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F6E206973206E6F742055555053000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B3 JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC DUP2 EQ PUSH2 0x95A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524331393637557067726164653A20756E737570706F727465642070726F78 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6961626C65555549440000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B3 JUMP JUMPDEST POP PUSH2 0x7F4 DUP4 DUP4 DUP4 PUSH2 0xB61 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x9D1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B3 JUMP JUMPDEST PUSH2 0x4A7 DUP2 PUSH2 0xB8C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x7EF7C883 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0xFDEF9106 SWAP1 PUSH2 0xA0E SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0xF7E JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xA2B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xA4F SWAP2 SWAP1 PUSH2 0xFD2 JUMP JUMPDEST PUSH2 0xA8E JUMPI PUSH1 0x40 MLOAD PUSH4 0xCB6F8ED PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND PUSH1 0x4 DUP4 ADD MSTORE DUP1 DUP8 AND PUSH1 0x24 DUP4 ADD MSTORE DUP6 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x84 ADD PUSH2 0x3B3 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND EXTCODESIZE PUSH2 0xB13 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313936373A206E657720696D706C656D656E746174696F6E206973206E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F74206120636F6E747261637400000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B3 JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xB6A DUP4 PUSH2 0xC26 JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD GT DUP1 PUSH2 0xB77 JUMPI POP DUP1 JUMPDEST ISZERO PUSH2 0x7F4 JUMPI PUSH2 0xB86 DUP4 DUP4 PUSH2 0xC66 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0xBF7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B3 JUMP JUMPDEST PUSH1 0xC9 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xC2F DUP2 PUSH2 0xA96 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xC8B DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1068 PUSH1 0x27 SWAP2 CODECOPY PUSH2 0xC92 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0xCAF SWAP2 SWAP1 PUSH2 0x1018 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xCEA JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xCEF JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0xD00 DUP7 DUP4 DUP4 DUP8 PUSH2 0xD0A JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0xD79 JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0xD72 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0xD72 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3B3 JUMP JUMPDEST POP DUP2 PUSH2 0xD83 JUMP JUMPDEST PUSH2 0xD83 DUP4 DUP4 PUSH2 0xD8B JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0xD9B JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3B3 SWAP2 SWAP1 PUSH2 0x1034 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xDE5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0xC8B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0xE28 JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0xE06 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x4A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xE58 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xC8B DUP2 PUSH2 0xE31 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH1 0x3 DUP4 LT PUSH2 0xE85 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 SWAP1 MSTORE SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xEB4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0xEBF DUP2 PUSH2 0xE31 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xEDC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xEF0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0xF02 JUMPI PUSH2 0xF02 PUSH2 0xE8B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0xF2A JUMPI PUSH2 0xF2A PUSH2 0xE8B JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0xF43 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xF77 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND DUP4 MSTORE DUP1 DUP8 AND PUSH1 0x20 DUP5 ADD MSTORE POP DUP5 PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x80 PUSH1 0x60 DUP4 ADD MSTORE DUP3 PUSH1 0x80 DUP4 ADD MSTORE DUP3 DUP5 PUSH1 0xA0 DUP5 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0xA0 DUP5 DUP5 ADD ADD MSTORE PUSH1 0xA0 PUSH1 0x1F NOT PUSH1 0x1F DUP6 ADD AND DUP4 ADD ADD SWAP1 POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xFE4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xC8B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x100F JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xFF7 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x102A DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0xFF4 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x1053 DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0xFF4 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A164 PUSH20 0x6F6C6343000811000A0000000000000000000000 ","sourceMap":"1988:216:31:-:0;;;1198:4:5;1155:48;;1988:216:31;;;;;;;;;-1:-1:-1;1647:22:40;:20;:22::i;:::-;1988:216:31;;5939:280:4;6007:13;;;;;;;6006:14;5998:66;;;;-1:-1:-1;;;5998:66:4;;216:2:50;5998:66:4;;;198:21:50;255:2;235:18;;;228:30;294:34;274:18;;;267:62;-1:-1:-1;;;345:18:50;;;338:37;392:19;;5998:66:4;;;;;;;;6078:12;;6094:15;6078:12;;;:31;6074:139;;6125:12;:30;;-1:-1:-1;;6125:30:4;6140:15;6125:30;;;;;;6174:28;;564:36:50;;;6174:28:4;;552:2:50;537:18;6174:28:4;;;;;;;6074:139;5939:280::o;422:184:50:-;1988:216:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@UPGRADE_PLUGIN_PERMISSION_ID_4415":{"entryPoint":null,"id":4415,"parameterSlots":0,"returnSlots":0},"@__DaoAuthorizableUpgradeable_init_3901":{"entryPoint":2956,"id":3901,"parameterSlots":1,"returnSlots":0},"@__PluginUUPSUpgradeable_init_4429":{"entryPoint":2406,"id":4429,"parameterSlots":1,"returnSlots":0},"@_auth_3987":{"entryPoint":2522,"id":3987,"parameterSlots":6,"returnSlots":0},"@_authorizeUpgrade_4570":{"entryPoint":1924,"id":4570,"parameterSlots":1,"returnSlots":0},"@_getImplementation_76":{"entryPoint":null,"id":76,"parameterSlots":0,"returnSlots":1},"@_msgData_1038":{"entryPoint":null,"id":1038,"parameterSlots":0,"returnSlots":2},"@_msgSender_1029":{"entryPoint":null,"id":1029,"parameterSlots":0,"returnSlots":1},"@_revert_1000":{"entryPoint":3467,"id":1000,"parameterSlots":2,"returnSlots":0},"@_setImplementation_100":{"entryPoint":2710,"id":100,"parameterSlots":1,"returnSlots":0},"@_upgradeToAndCallUUPS_198":{"entryPoint":1985,"id":198,"parameterSlots":3,"returnSlots":0},"@_upgradeToAndCall_145":{"entryPoint":2913,"id":145,"parameterSlots":3,"returnSlots":0},"@_upgradeTo_115":{"entryPoint":3110,"id":115,"parameterSlots":1,"returnSlots":0},"@dao_3911":{"entryPoint":null,"id":3911,"parameterSlots":0,"returnSlots":1},"@functionDelegateCall_888":{"entryPoint":3174,"id":888,"parameterSlots":2,"returnSlots":1},"@functionDelegateCall_917":{"entryPoint":3218,"id":917,"parameterSlots":3,"returnSlots":1},"@getAddressSlot_1158":{"entryPoint":null,"id":1158,"parameterSlots":1,"returnSlots":1},"@getBooleanSlot_1169":{"entryPoint":null,"id":1169,"parameterSlots":1,"returnSlots":1},"@implementation_4495":{"entryPoint":1755,"id":4495,"parameterSlots":0,"returnSlots":1},"@isContract_689":{"entryPoint":null,"id":689,"parameterSlots":1,"returnSlots":1},"@notAnInitializer_3268":{"entryPoint":1906,"id":3268,"parameterSlots":1,"returnSlots":0},"@pluginType_4409":{"entryPoint":null,"id":4409,"parameterSlots":0,"returnSlots":1},"@protocolVersion_5135":{"entryPoint":768,"id":5135,"parameterSlots":0,"returnSlots":1},"@proxiableUUID_616":{"entryPoint":1558,"id":616,"parameterSlots":0,"returnSlots":1},"@setTarget_4449":{"entryPoint":1811,"id":4449,"parameterSlots":1,"returnSlots":0},"@state1_3253":{"entryPoint":null,"id":3253,"parameterSlots":0,"returnSlots":0},"@supportsInterface_1275":{"entryPoint":null,"id":1275,"parameterSlots":1,"returnSlots":1},"@supportsInterface_4485":{"entryPoint":660,"id":4485,"parameterSlots":1,"returnSlots":1},"@target_4382":{"entryPoint":null,"id":4382,"parameterSlots":0,"returnSlots":0},"@upgradeToAndCall_659":{"entryPoint":1194,"id":659,"parameterSlots":2,"returnSlots":0},"@upgradeTo_638":{"entryPoint":810,"id":638,"parameterSlots":1,"returnSlots":0},"@verifyCallResultFromTarget_956":{"entryPoint":3338,"id":956,"parameterSlots":4,"returnSlots":1},"abi_decode_tuple_t_address":{"entryPoint":3654,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_bytes_memory_ptr":{"entryPoint":3745,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_bool_fromMemory":{"entryPoint":4050,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes32_fromMemory":{"entryPoint":3941,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes4":{"entryPoint":3539,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_contract$_IDAO_$2538":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":4120,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address_t_address_t_address_t_bytes32__to_t_address_t_address_t_address_t_bytes32__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":5,"returnSlots":1},"abi_encode_tuple_t_address_t_address_t_bytes32_t_bytes_calldata_ptr__to_t_address_t_address_t_bytes32_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":3966,"id":null,"parameterSlots":6,"returnSlots":1},"abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed":{"entryPoint":3581,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_contract$_IDAO_$2538__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_enum$_PluginType_$3994__to_t_uint8__fromStack_reversed":{"entryPoint":3683,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":4148,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_36e108fa7a809b52ab1951dd91c117a7bc9ac5250bdf1aa162d4e104f7edf9eb__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_52f1ead4d9653e13afbd2e90ef2587c30187cd50b2e97d784e3f7a7541247434__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_67f0151b4ad1dcfa0e3302a0cd6019f51582ef1807b37dceb00bd852a514f7f4__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_76b6b6debfc5febf101145a79ecf0b0d2e89e397dfdab2bca99888370411152c__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_8e8e2fbcb586f700b5b14e2c4a650c8d83b9773c31c5fe8962070ea544e11f24__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"copy_memory_to_memory_with_cleanup":{"entryPoint":4084,"id":null,"parameterSlots":3,"returnSlots":0},"panic_error_0x41":{"entryPoint":3723,"id":null,"parameterSlots":0,"returnSlots":0},"validator_revert_address":{"entryPoint":3633,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:9909:50","statements":[{"nodeType":"YulBlock","src":"6:3:50","statements":[]},{"body":{"nodeType":"YulBlock","src":"83:217:50","statements":[{"body":{"nodeType":"YulBlock","src":"129:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"138:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"141:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"131:6:50"},"nodeType":"YulFunctionCall","src":"131:12:50"},"nodeType":"YulExpressionStatement","src":"131:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"104:7:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"113:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"100:3:50"},"nodeType":"YulFunctionCall","src":"100:23:50"},{"kind":"number","nodeType":"YulLiteral","src":"125:2:50","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"96:3:50"},"nodeType":"YulFunctionCall","src":"96:32:50"},"nodeType":"YulIf","src":"93:52:50"},{"nodeType":"YulVariableDeclaration","src":"154:36:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"180:9:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"167:12:50"},"nodeType":"YulFunctionCall","src":"167:23:50"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"158:5:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"254:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"263:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"266:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"256:6:50"},"nodeType":"YulFunctionCall","src":"256:12:50"},"nodeType":"YulExpressionStatement","src":"256:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"212:5:50"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"223:5:50"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"234:3:50","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"239:10:50","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"230:3:50"},"nodeType":"YulFunctionCall","src":"230:20:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"219:3:50"},"nodeType":"YulFunctionCall","src":"219:32:50"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"209:2:50"},"nodeType":"YulFunctionCall","src":"209:43:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"202:6:50"},"nodeType":"YulFunctionCall","src":"202:51:50"},"nodeType":"YulIf","src":"199:71:50"},{"nodeType":"YulAssignment","src":"279:15:50","value":{"name":"value","nodeType":"YulIdentifier","src":"289:5:50"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"279:6:50"}]}]},"name":"abi_decode_tuple_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"49:9:50","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"60:7:50","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"72:6:50","type":""}],"src":"14:286:50"},{"body":{"nodeType":"YulBlock","src":"400:92:50","statements":[{"nodeType":"YulAssignment","src":"410:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"422:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"433:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"418:3:50"},"nodeType":"YulFunctionCall","src":"418:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"410:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"452:9:50"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"477:6:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"470:6:50"},"nodeType":"YulFunctionCall","src":"470:14:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"463:6:50"},"nodeType":"YulFunctionCall","src":"463:22:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"445:6:50"},"nodeType":"YulFunctionCall","src":"445:41:50"},"nodeType":"YulExpressionStatement","src":"445:41:50"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"369:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"380:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"391:4:50","type":""}],"src":"305:187:50"},{"body":{"nodeType":"YulBlock","src":"640:358:50","statements":[{"nodeType":"YulAssignment","src":"650:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"662:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"673:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"658:3:50"},"nodeType":"YulFunctionCall","src":"658:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"650:4:50"}]},{"nodeType":"YulVariableDeclaration","src":"685:20:50","value":{"name":"headStart","nodeType":"YulIdentifier","src":"696:9:50"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"689:3:50","type":""}]},{"nodeType":"YulAssignment","src":"714:16:50","value":{"name":"headStart","nodeType":"YulIdentifier","src":"721:9:50"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"714:3:50"}]},{"nodeType":"YulVariableDeclaration","src":"739:20:50","value":{"name":"value0","nodeType":"YulIdentifier","src":"753:6:50"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"743:6:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"768:10:50","value":{"kind":"number","nodeType":"YulLiteral","src":"777:1:50","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"772:1:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"834:158:50","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"855:3:50"},{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"870:6:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"864:5:50"},"nodeType":"YulFunctionCall","src":"864:13:50"},{"kind":"number","nodeType":"YulLiteral","src":"879:4:50","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"860:3:50"},"nodeType":"YulFunctionCall","src":"860:24:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"848:6:50"},"nodeType":"YulFunctionCall","src":"848:37:50"},"nodeType":"YulExpressionStatement","src":"848:37:50"},{"nodeType":"YulVariableDeclaration","src":"898:14:50","value":{"kind":"number","nodeType":"YulLiteral","src":"908:4:50","type":"","value":"0x20"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"902:2:50","type":""}]},{"nodeType":"YulAssignment","src":"925:19:50","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"936:3:50"},{"name":"_1","nodeType":"YulIdentifier","src":"941:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"932:3:50"},"nodeType":"YulFunctionCall","src":"932:12:50"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"925:3:50"}]},{"nodeType":"YulAssignment","src":"957:25:50","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"971:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"979:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"967:3:50"},"nodeType":"YulFunctionCall","src":"967:15:50"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"957:6:50"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"798:1:50"},{"kind":"number","nodeType":"YulLiteral","src":"801:4:50","type":"","value":"0x03"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"795:2:50"},"nodeType":"YulFunctionCall","src":"795:11:50"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"807:18:50","statements":[{"nodeType":"YulAssignment","src":"809:14:50","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"818:1:50"},{"kind":"number","nodeType":"YulLiteral","src":"821:1:50","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"814:3:50"},"nodeType":"YulFunctionCall","src":"814:9:50"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"809:1:50"}]}]},"pre":{"nodeType":"YulBlock","src":"791:3:50","statements":[]},"src":"787:205:50"}]},"name":"abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"609:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"620:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"631:4:50","type":""}],"src":"497:501:50"},{"body":{"nodeType":"YulBlock","src":"1048:109:50","statements":[{"body":{"nodeType":"YulBlock","src":"1135:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1144:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1147:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1137:6:50"},"nodeType":"YulFunctionCall","src":"1137:12:50"},"nodeType":"YulExpressionStatement","src":"1137:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1071:5:50"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1082:5:50"},{"kind":"number","nodeType":"YulLiteral","src":"1089:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1078:3:50"},"nodeType":"YulFunctionCall","src":"1078:54:50"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1068:2:50"},"nodeType":"YulFunctionCall","src":"1068:65:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1061:6:50"},"nodeType":"YulFunctionCall","src":"1061:73:50"},"nodeType":"YulIf","src":"1058:93:50"}]},"name":"validator_revert_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1037:5:50","type":""}],"src":"1003:154:50"},{"body":{"nodeType":"YulBlock","src":"1232:177:50","statements":[{"body":{"nodeType":"YulBlock","src":"1278:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1287:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1290:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1280:6:50"},"nodeType":"YulFunctionCall","src":"1280:12:50"},"nodeType":"YulExpressionStatement","src":"1280:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1253:7:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"1262:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1249:3:50"},"nodeType":"YulFunctionCall","src":"1249:23:50"},{"kind":"number","nodeType":"YulLiteral","src":"1274:2:50","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1245:3:50"},"nodeType":"YulFunctionCall","src":"1245:32:50"},"nodeType":"YulIf","src":"1242:52:50"},{"nodeType":"YulVariableDeclaration","src":"1303:36:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1329:9:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1316:12:50"},"nodeType":"YulFunctionCall","src":"1316:23:50"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"1307:5:50","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1373:5:50"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"1348:24:50"},"nodeType":"YulFunctionCall","src":"1348:31:50"},"nodeType":"YulExpressionStatement","src":"1348:31:50"},{"nodeType":"YulAssignment","src":"1388:15:50","value":{"name":"value","nodeType":"YulIdentifier","src":"1398:5:50"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1388:6:50"}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1198:9:50","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1209:7:50","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1221:6:50","type":""}],"src":"1162:247:50"},{"body":{"nodeType":"YulBlock","src":"1528:125:50","statements":[{"nodeType":"YulAssignment","src":"1538:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1550:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"1561:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1546:3:50"},"nodeType":"YulFunctionCall","src":"1546:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1538:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1580:9:50"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1595:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"1603:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1591:3:50"},"nodeType":"YulFunctionCall","src":"1591:55:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1573:6:50"},"nodeType":"YulFunctionCall","src":"1573:74:50"},"nodeType":"YulExpressionStatement","src":"1573:74:50"}]},"name":"abi_encode_tuple_t_contract$_IDAO_$2538__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1497:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1508:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1519:4:50","type":""}],"src":"1414:239:50"},{"body":{"nodeType":"YulBlock","src":"1772:229:50","statements":[{"nodeType":"YulAssignment","src":"1782:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1794:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"1805:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1790:3:50"},"nodeType":"YulFunctionCall","src":"1790:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1782:4:50"}]},{"body":{"nodeType":"YulBlock","src":"1850:111:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1871:1:50","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1878:3:50","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"1883:10:50","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1874:3:50"},"nodeType":"YulFunctionCall","src":"1874:20:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1864:6:50"},"nodeType":"YulFunctionCall","src":"1864:31:50"},"nodeType":"YulExpressionStatement","src":"1864:31:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1915:1:50","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"1918:4:50","type":"","value":"0x21"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1908:6:50"},"nodeType":"YulFunctionCall","src":"1908:15:50"},"nodeType":"YulExpressionStatement","src":"1908:15:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1943:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1946:4:50","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1936:6:50"},"nodeType":"YulFunctionCall","src":"1936:15:50"},"nodeType":"YulExpressionStatement","src":"1936:15:50"}]},"condition":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1830:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"1838:1:50","type":"","value":"3"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"1827:2:50"},"nodeType":"YulFunctionCall","src":"1827:13:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1820:6:50"},"nodeType":"YulFunctionCall","src":"1820:21:50"},"nodeType":"YulIf","src":"1817:144:50"},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1977:9:50"},{"name":"value0","nodeType":"YulIdentifier","src":"1988:6:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1970:6:50"},"nodeType":"YulFunctionCall","src":"1970:25:50"},"nodeType":"YulExpressionStatement","src":"1970:25:50"}]},"name":"abi_encode_tuple_t_enum$_PluginType_$3994__to_t_uint8__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1741:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1752:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1763:4:50","type":""}],"src":"1658:343:50"},{"body":{"nodeType":"YulBlock","src":"2038:95:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2055:1:50","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2062:3:50","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"2067:10:50","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2058:3:50"},"nodeType":"YulFunctionCall","src":"2058:20:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2048:6:50"},"nodeType":"YulFunctionCall","src":"2048:31:50"},"nodeType":"YulExpressionStatement","src":"2048:31:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2095:1:50","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"2098:4:50","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2088:6:50"},"nodeType":"YulFunctionCall","src":"2088:15:50"},"nodeType":"YulExpressionStatement","src":"2088:15:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2119:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2122:4:50","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2112:6:50"},"nodeType":"YulFunctionCall","src":"2112:15:50"},"nodeType":"YulExpressionStatement","src":"2112:15:50"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"2006:127:50"},{"body":{"nodeType":"YulBlock","src":"2234:960:50","statements":[{"body":{"nodeType":"YulBlock","src":"2280:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2289:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2292:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2282:6:50"},"nodeType":"YulFunctionCall","src":"2282:12:50"},"nodeType":"YulExpressionStatement","src":"2282:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2255:7:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"2264:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2251:3:50"},"nodeType":"YulFunctionCall","src":"2251:23:50"},{"kind":"number","nodeType":"YulLiteral","src":"2276:2:50","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2247:3:50"},"nodeType":"YulFunctionCall","src":"2247:32:50"},"nodeType":"YulIf","src":"2244:52:50"},{"nodeType":"YulVariableDeclaration","src":"2305:36:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2331:9:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2318:12:50"},"nodeType":"YulFunctionCall","src":"2318:23:50"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"2309:5:50","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2375:5:50"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"2350:24:50"},"nodeType":"YulFunctionCall","src":"2350:31:50"},"nodeType":"YulExpressionStatement","src":"2350:31:50"},{"nodeType":"YulAssignment","src":"2390:15:50","value":{"name":"value","nodeType":"YulIdentifier","src":"2400:5:50"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2390:6:50"}]},{"nodeType":"YulVariableDeclaration","src":"2414:46:50","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2445:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"2456:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2441:3:50"},"nodeType":"YulFunctionCall","src":"2441:18:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2428:12:50"},"nodeType":"YulFunctionCall","src":"2428:32:50"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"2418:6:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2469:28:50","value":{"kind":"number","nodeType":"YulLiteral","src":"2479:18:50","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"2473:2:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"2524:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2533:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2536:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2526:6:50"},"nodeType":"YulFunctionCall","src":"2526:12:50"},"nodeType":"YulExpressionStatement","src":"2526:12:50"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"2512:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"2520:2:50"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2509:2:50"},"nodeType":"YulFunctionCall","src":"2509:14:50"},"nodeType":"YulIf","src":"2506:34:50"},{"nodeType":"YulVariableDeclaration","src":"2549:32:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2563:9:50"},{"name":"offset","nodeType":"YulIdentifier","src":"2574:6:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2559:3:50"},"nodeType":"YulFunctionCall","src":"2559:22:50"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"2553:2:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"2629:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2638:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2641:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2631:6:50"},"nodeType":"YulFunctionCall","src":"2631:12:50"},"nodeType":"YulExpressionStatement","src":"2631:12:50"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"2608:2:50"},{"kind":"number","nodeType":"YulLiteral","src":"2612:4:50","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2604:3:50"},"nodeType":"YulFunctionCall","src":"2604:13:50"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2619:7:50"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2600:3:50"},"nodeType":"YulFunctionCall","src":"2600:27:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2593:6:50"},"nodeType":"YulFunctionCall","src":"2593:35:50"},"nodeType":"YulIf","src":"2590:55:50"},{"nodeType":"YulVariableDeclaration","src":"2654:26:50","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"2677:2:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2664:12:50"},"nodeType":"YulFunctionCall","src":"2664:16:50"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"2658:2:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"2703:22:50","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"2705:16:50"},"nodeType":"YulFunctionCall","src":"2705:18:50"},"nodeType":"YulExpressionStatement","src":"2705:18:50"}]},"condition":{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"2695:2:50"},{"name":"_1","nodeType":"YulIdentifier","src":"2699:2:50"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2692:2:50"},"nodeType":"YulFunctionCall","src":"2692:10:50"},"nodeType":"YulIf","src":"2689:36:50"},{"nodeType":"YulVariableDeclaration","src":"2734:17:50","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2748:2:50","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"2744:3:50"},"nodeType":"YulFunctionCall","src":"2744:7:50"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"2738:2:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2760:23:50","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2780:2:50","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2774:5:50"},"nodeType":"YulFunctionCall","src":"2774:9:50"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"2764:6:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2792:71:50","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"2814:6:50"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"2838:2:50"},{"kind":"number","nodeType":"YulLiteral","src":"2842:4:50","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2834:3:50"},"nodeType":"YulFunctionCall","src":"2834:13:50"},{"name":"_4","nodeType":"YulIdentifier","src":"2849:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2830:3:50"},"nodeType":"YulFunctionCall","src":"2830:22:50"},{"kind":"number","nodeType":"YulLiteral","src":"2854:2:50","type":"","value":"63"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2826:3:50"},"nodeType":"YulFunctionCall","src":"2826:31:50"},{"name":"_4","nodeType":"YulIdentifier","src":"2859:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2822:3:50"},"nodeType":"YulFunctionCall","src":"2822:40:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2810:3:50"},"nodeType":"YulFunctionCall","src":"2810:53:50"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"2796:10:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"2922:22:50","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"2924:16:50"},"nodeType":"YulFunctionCall","src":"2924:18:50"},"nodeType":"YulExpressionStatement","src":"2924:18:50"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"2881:10:50"},{"name":"_1","nodeType":"YulIdentifier","src":"2893:2:50"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2878:2:50"},"nodeType":"YulFunctionCall","src":"2878:18:50"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"2901:10:50"},{"name":"memPtr","nodeType":"YulIdentifier","src":"2913:6:50"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2898:2:50"},"nodeType":"YulFunctionCall","src":"2898:22:50"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"2875:2:50"},"nodeType":"YulFunctionCall","src":"2875:46:50"},"nodeType":"YulIf","src":"2872:72:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2960:2:50","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"2964:10:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2953:6:50"},"nodeType":"YulFunctionCall","src":"2953:22:50"},"nodeType":"YulExpressionStatement","src":"2953:22:50"},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"2991:6:50"},{"name":"_3","nodeType":"YulIdentifier","src":"2999:2:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2984:6:50"},"nodeType":"YulFunctionCall","src":"2984:18:50"},"nodeType":"YulExpressionStatement","src":"2984:18:50"},{"body":{"nodeType":"YulBlock","src":"3048:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3057:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3060:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3050:6:50"},"nodeType":"YulFunctionCall","src":"3050:12:50"},"nodeType":"YulExpressionStatement","src":"3050:12:50"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"3025:2:50"},{"name":"_3","nodeType":"YulIdentifier","src":"3029:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3021:3:50"},"nodeType":"YulFunctionCall","src":"3021:11:50"},{"kind":"number","nodeType":"YulLiteral","src":"3034:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3017:3:50"},"nodeType":"YulFunctionCall","src":"3017:20:50"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3039:7:50"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3014:2:50"},"nodeType":"YulFunctionCall","src":"3014:33:50"},"nodeType":"YulIf","src":"3011:53:50"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"3090:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"3098:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3086:3:50"},"nodeType":"YulFunctionCall","src":"3086:15:50"},{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"3107:2:50"},{"kind":"number","nodeType":"YulLiteral","src":"3111:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3103:3:50"},"nodeType":"YulFunctionCall","src":"3103:11:50"},{"name":"_3","nodeType":"YulIdentifier","src":"3116:2:50"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"3073:12:50"},"nodeType":"YulFunctionCall","src":"3073:46:50"},"nodeType":"YulExpressionStatement","src":"3073:46:50"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"3143:6:50"},{"name":"_3","nodeType":"YulIdentifier","src":"3151:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3139:3:50"},"nodeType":"YulFunctionCall","src":"3139:15:50"},{"kind":"number","nodeType":"YulLiteral","src":"3156:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3135:3:50"},"nodeType":"YulFunctionCall","src":"3135:24:50"},{"kind":"number","nodeType":"YulLiteral","src":"3161:1:50","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3128:6:50"},"nodeType":"YulFunctionCall","src":"3128:35:50"},"nodeType":"YulExpressionStatement","src":"3128:35:50"},{"nodeType":"YulAssignment","src":"3172:16:50","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"3182:6:50"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"3172:6:50"}]}]},"name":"abi_decode_tuple_t_addresst_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2192:9:50","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2203:7:50","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2215:6:50","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2223:6:50","type":""}],"src":"2138:1056:50"},{"body":{"nodeType":"YulBlock","src":"3300:76:50","statements":[{"nodeType":"YulAssignment","src":"3310:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3322:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"3333:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3318:3:50"},"nodeType":"YulFunctionCall","src":"3318:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3310:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3352:9:50"},{"name":"value0","nodeType":"YulIdentifier","src":"3363:6:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3345:6:50"},"nodeType":"YulFunctionCall","src":"3345:25:50"},"nodeType":"YulExpressionStatement","src":"3345:25:50"}]},"name":"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3269:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3280:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3291:4:50","type":""}],"src":"3199:177:50"},{"body":{"nodeType":"YulBlock","src":"3482:125:50","statements":[{"nodeType":"YulAssignment","src":"3492:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3504:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"3515:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3500:3:50"},"nodeType":"YulFunctionCall","src":"3500:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3492:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3534:9:50"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3549:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"3557:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3545:3:50"},"nodeType":"YulFunctionCall","src":"3545:55:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3527:6:50"},"nodeType":"YulFunctionCall","src":"3527:74:50"},"nodeType":"YulExpressionStatement","src":"3527:74:50"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3451:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3462:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3473:4:50","type":""}],"src":"3381:226:50"},{"body":{"nodeType":"YulBlock","src":"3713:76:50","statements":[{"nodeType":"YulAssignment","src":"3723:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3735:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"3746:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3731:3:50"},"nodeType":"YulFunctionCall","src":"3731:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3723:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3765:9:50"},{"name":"value0","nodeType":"YulIdentifier","src":"3776:6:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3758:6:50"},"nodeType":"YulFunctionCall","src":"3758:25:50"},"nodeType":"YulExpressionStatement","src":"3758:25:50"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3682:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3693:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3704:4:50","type":""}],"src":"3612:177:50"},{"body":{"nodeType":"YulBlock","src":"3877:177:50","statements":[{"body":{"nodeType":"YulBlock","src":"3923:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3932:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3935:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3925:6:50"},"nodeType":"YulFunctionCall","src":"3925:12:50"},"nodeType":"YulExpressionStatement","src":"3925:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3898:7:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"3907:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3894:3:50"},"nodeType":"YulFunctionCall","src":"3894:23:50"},{"kind":"number","nodeType":"YulLiteral","src":"3919:2:50","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3890:3:50"},"nodeType":"YulFunctionCall","src":"3890:32:50"},"nodeType":"YulIf","src":"3887:52:50"},{"nodeType":"YulVariableDeclaration","src":"3948:36:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3974:9:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3961:12:50"},"nodeType":"YulFunctionCall","src":"3961:23:50"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"3952:5:50","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4018:5:50"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"3993:24:50"},"nodeType":"YulFunctionCall","src":"3993:31:50"},"nodeType":"YulExpressionStatement","src":"3993:31:50"},{"nodeType":"YulAssignment","src":"4033:15:50","value":{"name":"value","nodeType":"YulIdentifier","src":"4043:5:50"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"4033:6:50"}]}]},"name":"abi_decode_tuple_t_contract$_IDAO_$2538","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3843:9:50","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3854:7:50","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3866:6:50","type":""}],"src":"3794:260:50"},{"body":{"nodeType":"YulBlock","src":"4233:234:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4250:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"4261:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4243:6:50"},"nodeType":"YulFunctionCall","src":"4243:21:50"},"nodeType":"YulExpressionStatement","src":"4243:21:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4284:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"4295:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4280:3:50"},"nodeType":"YulFunctionCall","src":"4280:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"4300:2:50","type":"","value":"44"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4273:6:50"},"nodeType":"YulFunctionCall","src":"4273:30:50"},"nodeType":"YulExpressionStatement","src":"4273:30:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4323:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"4334:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4319:3:50"},"nodeType":"YulFunctionCall","src":"4319:18:50"},{"hexValue":"46756e6374696f6e206d7573742062652063616c6c6564207468726f75676820","kind":"string","nodeType":"YulLiteral","src":"4339:34:50","type":"","value":"Function must be called through "}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4312:6:50"},"nodeType":"YulFunctionCall","src":"4312:62:50"},"nodeType":"YulExpressionStatement","src":"4312:62:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4394:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"4405:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4390:3:50"},"nodeType":"YulFunctionCall","src":"4390:18:50"},{"hexValue":"64656c656761746563616c6c","kind":"string","nodeType":"YulLiteral","src":"4410:14:50","type":"","value":"delegatecall"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4383:6:50"},"nodeType":"YulFunctionCall","src":"4383:42:50"},"nodeType":"YulExpressionStatement","src":"4383:42:50"},{"nodeType":"YulAssignment","src":"4434:27:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4446:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"4457:3:50","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4442:3:50"},"nodeType":"YulFunctionCall","src":"4442:19:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4434:4:50"}]}]},"name":"abi_encode_tuple_t_stringliteral_36e108fa7a809b52ab1951dd91c117a7bc9ac5250bdf1aa162d4e104f7edf9eb__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4210:9:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4224:4:50","type":""}],"src":"4059:408:50"},{"body":{"nodeType":"YulBlock","src":"4646:234:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4663:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"4674:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4656:6:50"},"nodeType":"YulFunctionCall","src":"4656:21:50"},"nodeType":"YulExpressionStatement","src":"4656:21:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4697:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"4708:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4693:3:50"},"nodeType":"YulFunctionCall","src":"4693:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"4713:2:50","type":"","value":"44"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4686:6:50"},"nodeType":"YulFunctionCall","src":"4686:30:50"},"nodeType":"YulExpressionStatement","src":"4686:30:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4736:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"4747:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4732:3:50"},"nodeType":"YulFunctionCall","src":"4732:18:50"},{"hexValue":"46756e6374696f6e206d7573742062652063616c6c6564207468726f75676820","kind":"string","nodeType":"YulLiteral","src":"4752:34:50","type":"","value":"Function must be called through "}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4725:6:50"},"nodeType":"YulFunctionCall","src":"4725:62:50"},"nodeType":"YulExpressionStatement","src":"4725:62:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4807:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"4818:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4803:3:50"},"nodeType":"YulFunctionCall","src":"4803:18:50"},{"hexValue":"6163746976652070726f7879","kind":"string","nodeType":"YulLiteral","src":"4823:14:50","type":"","value":"active proxy"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4796:6:50"},"nodeType":"YulFunctionCall","src":"4796:42:50"},"nodeType":"YulExpressionStatement","src":"4796:42:50"},{"nodeType":"YulAssignment","src":"4847:27:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4859:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"4870:3:50","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4855:3:50"},"nodeType":"YulFunctionCall","src":"4855:19:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4847:4:50"}]}]},"name":"abi_encode_tuple_t_stringliteral_52f1ead4d9653e13afbd2e90ef2587c30187cd50b2e97d784e3f7a7541247434__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4623:9:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4637:4:50","type":""}],"src":"4472:408:50"},{"body":{"nodeType":"YulBlock","src":"5059:246:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5076:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"5087:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5069:6:50"},"nodeType":"YulFunctionCall","src":"5069:21:50"},"nodeType":"YulExpressionStatement","src":"5069:21:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5110:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"5121:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5106:3:50"},"nodeType":"YulFunctionCall","src":"5106:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"5126:2:50","type":"","value":"56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5099:6:50"},"nodeType":"YulFunctionCall","src":"5099:30:50"},"nodeType":"YulExpressionStatement","src":"5099:30:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5149:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"5160:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5145:3:50"},"nodeType":"YulFunctionCall","src":"5145:18:50"},{"hexValue":"555550535570677261646561626c653a206d757374206e6f742062652063616c","kind":"string","nodeType":"YulLiteral","src":"5165:34:50","type":"","value":"UUPSUpgradeable: must not be cal"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5138:6:50"},"nodeType":"YulFunctionCall","src":"5138:62:50"},"nodeType":"YulExpressionStatement","src":"5138:62:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5220:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"5231:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5216:3:50"},"nodeType":"YulFunctionCall","src":"5216:18:50"},{"hexValue":"6c6564207468726f7567682064656c656761746563616c6c","kind":"string","nodeType":"YulLiteral","src":"5236:26:50","type":"","value":"led through delegatecall"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5209:6:50"},"nodeType":"YulFunctionCall","src":"5209:54:50"},"nodeType":"YulExpressionStatement","src":"5209:54:50"},{"nodeType":"YulAssignment","src":"5272:27:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5284:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"5295:3:50","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5280:3:50"},"nodeType":"YulFunctionCall","src":"5280:19:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5272:4:50"}]}]},"name":"abi_encode_tuple_t_stringliteral_67f0151b4ad1dcfa0e3302a0cd6019f51582ef1807b37dceb00bd852a514f7f4__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5036:9:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5050:4:50","type":""}],"src":"4885:420:50"},{"body":{"nodeType":"YulBlock","src":"5391:103:50","statements":[{"body":{"nodeType":"YulBlock","src":"5437:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5446:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5449:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5439:6:50"},"nodeType":"YulFunctionCall","src":"5439:12:50"},"nodeType":"YulExpressionStatement","src":"5439:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"5412:7:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"5421:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5408:3:50"},"nodeType":"YulFunctionCall","src":"5408:23:50"},{"kind":"number","nodeType":"YulLiteral","src":"5433:2:50","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"5404:3:50"},"nodeType":"YulFunctionCall","src":"5404:32:50"},"nodeType":"YulIf","src":"5401:52:50"},{"nodeType":"YulAssignment","src":"5462:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5478:9:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5472:5:50"},"nodeType":"YulFunctionCall","src":"5472:16:50"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"5462:6:50"}]}]},"name":"abi_decode_tuple_t_bytes32_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5357:9:50","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"5368:7:50","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"5380:6:50","type":""}],"src":"5310:184:50"},{"body":{"nodeType":"YulBlock","src":"5673:236:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5690:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"5701:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5683:6:50"},"nodeType":"YulFunctionCall","src":"5683:21:50"},"nodeType":"YulExpressionStatement","src":"5683:21:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5724:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"5735:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5720:3:50"},"nodeType":"YulFunctionCall","src":"5720:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"5740:2:50","type":"","value":"46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5713:6:50"},"nodeType":"YulFunctionCall","src":"5713:30:50"},"nodeType":"YulExpressionStatement","src":"5713:30:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5763:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"5774:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5759:3:50"},"nodeType":"YulFunctionCall","src":"5759:18:50"},{"hexValue":"45524331393637557067726164653a206e657720696d706c656d656e74617469","kind":"string","nodeType":"YulLiteral","src":"5779:34:50","type":"","value":"ERC1967Upgrade: new implementati"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5752:6:50"},"nodeType":"YulFunctionCall","src":"5752:62:50"},"nodeType":"YulExpressionStatement","src":"5752:62:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5834:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"5845:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5830:3:50"},"nodeType":"YulFunctionCall","src":"5830:18:50"},{"hexValue":"6f6e206973206e6f742055555053","kind":"string","nodeType":"YulLiteral","src":"5850:16:50","type":"","value":"on is not UUPS"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5823:6:50"},"nodeType":"YulFunctionCall","src":"5823:44:50"},"nodeType":"YulExpressionStatement","src":"5823:44:50"},{"nodeType":"YulAssignment","src":"5876:27:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5888:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"5899:3:50","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5884:3:50"},"nodeType":"YulFunctionCall","src":"5884:19:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5876:4:50"}]}]},"name":"abi_encode_tuple_t_stringliteral_8e8e2fbcb586f700b5b14e2c4a650c8d83b9773c31c5fe8962070ea544e11f24__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5650:9:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5664:4:50","type":""}],"src":"5499:410:50"},{"body":{"nodeType":"YulBlock","src":"6088:231:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6105:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"6116:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6098:6:50"},"nodeType":"YulFunctionCall","src":"6098:21:50"},"nodeType":"YulExpressionStatement","src":"6098:21:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6139:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"6150:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6135:3:50"},"nodeType":"YulFunctionCall","src":"6135:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"6155:2:50","type":"","value":"41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6128:6:50"},"nodeType":"YulFunctionCall","src":"6128:30:50"},"nodeType":"YulExpressionStatement","src":"6128:30:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6178:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"6189:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6174:3:50"},"nodeType":"YulFunctionCall","src":"6174:18:50"},{"hexValue":"45524331393637557067726164653a20756e737570706f727465642070726f78","kind":"string","nodeType":"YulLiteral","src":"6194:34:50","type":"","value":"ERC1967Upgrade: unsupported prox"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6167:6:50"},"nodeType":"YulFunctionCall","src":"6167:62:50"},"nodeType":"YulExpressionStatement","src":"6167:62:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6249:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"6260:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6245:3:50"},"nodeType":"YulFunctionCall","src":"6245:18:50"},{"hexValue":"6961626c6555554944","kind":"string","nodeType":"YulLiteral","src":"6265:11:50","type":"","value":"iableUUID"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6238:6:50"},"nodeType":"YulFunctionCall","src":"6238:39:50"},"nodeType":"YulExpressionStatement","src":"6238:39:50"},{"nodeType":"YulAssignment","src":"6286:27:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6298:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"6309:3:50","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6294:3:50"},"nodeType":"YulFunctionCall","src":"6294:19:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6286:4:50"}]}]},"name":"abi_encode_tuple_t_stringliteral_76b6b6debfc5febf101145a79ecf0b0d2e89e397dfdab2bca99888370411152c__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6065:9:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6079:4:50","type":""}],"src":"5914:405:50"},{"body":{"nodeType":"YulBlock","src":"6498:233:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6515:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"6526:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6508:6:50"},"nodeType":"YulFunctionCall","src":"6508:21:50"},"nodeType":"YulExpressionStatement","src":"6508:21:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6549:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"6560:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6545:3:50"},"nodeType":"YulFunctionCall","src":"6545:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"6565:2:50","type":"","value":"43"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6538:6:50"},"nodeType":"YulFunctionCall","src":"6538:30:50"},"nodeType":"YulExpressionStatement","src":"6538:30:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6588:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"6599:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6584:3:50"},"nodeType":"YulFunctionCall","src":"6584:18:50"},{"hexValue":"496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069","kind":"string","nodeType":"YulLiteral","src":"6604:34:50","type":"","value":"Initializable: contract is not i"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6577:6:50"},"nodeType":"YulFunctionCall","src":"6577:62:50"},"nodeType":"YulExpressionStatement","src":"6577:62:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6659:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"6670:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6655:3:50"},"nodeType":"YulFunctionCall","src":"6655:18:50"},{"hexValue":"6e697469616c697a696e67","kind":"string","nodeType":"YulLiteral","src":"6675:13:50","type":"","value":"nitializing"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6648:6:50"},"nodeType":"YulFunctionCall","src":"6648:41:50"},"nodeType":"YulExpressionStatement","src":"6648:41:50"},{"nodeType":"YulAssignment","src":"6698:27:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6710:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"6721:3:50","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6706:3:50"},"nodeType":"YulFunctionCall","src":"6706:19:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6698:4:50"}]}]},"name":"abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6475:9:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6489:4:50","type":""}],"src":"6324:407:50"},{"body":{"nodeType":"YulBlock","src":"6949:472:50","statements":[{"nodeType":"YulVariableDeclaration","src":"6959:52:50","value":{"kind":"number","nodeType":"YulLiteral","src":"6969:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"6963:2:50","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7027:9:50"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7042:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"7050:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7038:3:50"},"nodeType":"YulFunctionCall","src":"7038:15:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7020:6:50"},"nodeType":"YulFunctionCall","src":"7020:34:50"},"nodeType":"YulExpressionStatement","src":"7020:34:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7074:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"7085:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7070:3:50"},"nodeType":"YulFunctionCall","src":"7070:18:50"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"7094:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"7102:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7090:3:50"},"nodeType":"YulFunctionCall","src":"7090:15:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7063:6:50"},"nodeType":"YulFunctionCall","src":"7063:43:50"},"nodeType":"YulExpressionStatement","src":"7063:43:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7126:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"7137:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7122:3:50"},"nodeType":"YulFunctionCall","src":"7122:18:50"},{"name":"value2","nodeType":"YulIdentifier","src":"7142:6:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7115:6:50"},"nodeType":"YulFunctionCall","src":"7115:34:50"},"nodeType":"YulExpressionStatement","src":"7115:34:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7169:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"7180:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7165:3:50"},"nodeType":"YulFunctionCall","src":"7165:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"7185:3:50","type":"","value":"128"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7158:6:50"},"nodeType":"YulFunctionCall","src":"7158:31:50"},"nodeType":"YulExpressionStatement","src":"7158:31:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7209:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"7220:3:50","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7205:3:50"},"nodeType":"YulFunctionCall","src":"7205:19:50"},{"name":"value4","nodeType":"YulIdentifier","src":"7226:6:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7198:6:50"},"nodeType":"YulFunctionCall","src":"7198:35:50"},"nodeType":"YulExpressionStatement","src":"7198:35:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7259:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"7270:3:50","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7255:3:50"},"nodeType":"YulFunctionCall","src":"7255:19:50"},{"name":"value3","nodeType":"YulIdentifier","src":"7276:6:50"},{"name":"value4","nodeType":"YulIdentifier","src":"7284:6:50"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"7242:12:50"},"nodeType":"YulFunctionCall","src":"7242:49:50"},"nodeType":"YulExpressionStatement","src":"7242:49:50"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7315:9:50"},{"name":"value4","nodeType":"YulIdentifier","src":"7326:6:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7311:3:50"},"nodeType":"YulFunctionCall","src":"7311:22:50"},{"kind":"number","nodeType":"YulLiteral","src":"7335:3:50","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7307:3:50"},"nodeType":"YulFunctionCall","src":"7307:32:50"},{"kind":"number","nodeType":"YulLiteral","src":"7341:1:50","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7300:6:50"},"nodeType":"YulFunctionCall","src":"7300:43:50"},"nodeType":"YulExpressionStatement","src":"7300:43:50"},{"nodeType":"YulAssignment","src":"7352:63:50","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7368:9:50"},{"arguments":[{"arguments":[{"name":"value4","nodeType":"YulIdentifier","src":"7387:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"7395:2:50","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7383:3:50"},"nodeType":"YulFunctionCall","src":"7383:15:50"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7404:2:50","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"7400:3:50"},"nodeType":"YulFunctionCall","src":"7400:7:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7379:3:50"},"nodeType":"YulFunctionCall","src":"7379:29:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7364:3:50"},"nodeType":"YulFunctionCall","src":"7364:45:50"},{"kind":"number","nodeType":"YulLiteral","src":"7411:3:50","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7360:3:50"},"nodeType":"YulFunctionCall","src":"7360:55:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7352:4:50"}]}]},"name":"abi_encode_tuple_t_address_t_address_t_bytes32_t_bytes_calldata_ptr__to_t_address_t_address_t_bytes32_t_bytes_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6886:9:50","type":""},{"name":"value4","nodeType":"YulTypedName","src":"6897:6:50","type":""},{"name":"value3","nodeType":"YulTypedName","src":"6905:6:50","type":""},{"name":"value2","nodeType":"YulTypedName","src":"6913:6:50","type":""},{"name":"value1","nodeType":"YulTypedName","src":"6921:6:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"6929:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6940:4:50","type":""}],"src":"6736:685:50"},{"body":{"nodeType":"YulBlock","src":"7504:199:50","statements":[{"body":{"nodeType":"YulBlock","src":"7550:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7559:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7562:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7552:6:50"},"nodeType":"YulFunctionCall","src":"7552:12:50"},"nodeType":"YulExpressionStatement","src":"7552:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"7525:7:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"7534:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"7521:3:50"},"nodeType":"YulFunctionCall","src":"7521:23:50"},{"kind":"number","nodeType":"YulLiteral","src":"7546:2:50","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"7517:3:50"},"nodeType":"YulFunctionCall","src":"7517:32:50"},"nodeType":"YulIf","src":"7514:52:50"},{"nodeType":"YulVariableDeclaration","src":"7575:29:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7594:9:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"7588:5:50"},"nodeType":"YulFunctionCall","src":"7588:16:50"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"7579:5:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"7657:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7666:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7669:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7659:6:50"},"nodeType":"YulFunctionCall","src":"7659:12:50"},"nodeType":"YulExpressionStatement","src":"7659:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7626:5:50"},{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7647:5:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"7640:6:50"},"nodeType":"YulFunctionCall","src":"7640:13:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"7633:6:50"},"nodeType":"YulFunctionCall","src":"7633:21:50"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"7623:2:50"},"nodeType":"YulFunctionCall","src":"7623:32:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"7616:6:50"},"nodeType":"YulFunctionCall","src":"7616:40:50"},"nodeType":"YulIf","src":"7613:60:50"},{"nodeType":"YulAssignment","src":"7682:15:50","value":{"name":"value","nodeType":"YulIdentifier","src":"7692:5:50"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"7682:6:50"}]}]},"name":"abi_decode_tuple_t_bool_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7470:9:50","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"7481:7:50","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"7493:6:50","type":""}],"src":"7426:277:50"},{"body":{"nodeType":"YulBlock","src":"7893:294:50","statements":[{"nodeType":"YulAssignment","src":"7903:27:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7915:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"7926:3:50","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7911:3:50"},"nodeType":"YulFunctionCall","src":"7911:19:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7903:4:50"}]},{"nodeType":"YulVariableDeclaration","src":"7939:52:50","value":{"kind":"number","nodeType":"YulLiteral","src":"7949:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"7943:2:50","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8007:9:50"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"8022:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"8030:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8018:3:50"},"nodeType":"YulFunctionCall","src":"8018:15:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8000:6:50"},"nodeType":"YulFunctionCall","src":"8000:34:50"},"nodeType":"YulExpressionStatement","src":"8000:34:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8054:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"8065:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8050:3:50"},"nodeType":"YulFunctionCall","src":"8050:18:50"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"8074:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"8082:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8070:3:50"},"nodeType":"YulFunctionCall","src":"8070:15:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8043:6:50"},"nodeType":"YulFunctionCall","src":"8043:43:50"},"nodeType":"YulExpressionStatement","src":"8043:43:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8106:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"8117:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8102:3:50"},"nodeType":"YulFunctionCall","src":"8102:18:50"},{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"8126:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"8134:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8122:3:50"},"nodeType":"YulFunctionCall","src":"8122:15:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8095:6:50"},"nodeType":"YulFunctionCall","src":"8095:43:50"},"nodeType":"YulExpressionStatement","src":"8095:43:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8158:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"8169:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8154:3:50"},"nodeType":"YulFunctionCall","src":"8154:18:50"},{"name":"value3","nodeType":"YulIdentifier","src":"8174:6:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8147:6:50"},"nodeType":"YulFunctionCall","src":"8147:34:50"},"nodeType":"YulExpressionStatement","src":"8147:34:50"}]},"name":"abi_encode_tuple_t_address_t_address_t_address_t_bytes32__to_t_address_t_address_t_address_t_bytes32__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7838:9:50","type":""},{"name":"value3","nodeType":"YulTypedName","src":"7849:6:50","type":""},{"name":"value2","nodeType":"YulTypedName","src":"7857:6:50","type":""},{"name":"value1","nodeType":"YulTypedName","src":"7865:6:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"7873:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7884:4:50","type":""}],"src":"7708:479:50"},{"body":{"nodeType":"YulBlock","src":"8366:235:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8383:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"8394:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8376:6:50"},"nodeType":"YulFunctionCall","src":"8376:21:50"},"nodeType":"YulExpressionStatement","src":"8376:21:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8417:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"8428:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8413:3:50"},"nodeType":"YulFunctionCall","src":"8413:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"8433:2:50","type":"","value":"45"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8406:6:50"},"nodeType":"YulFunctionCall","src":"8406:30:50"},"nodeType":"YulExpressionStatement","src":"8406:30:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8456:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"8467:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8452:3:50"},"nodeType":"YulFunctionCall","src":"8452:18:50"},{"hexValue":"455243313936373a206e657720696d706c656d656e746174696f6e206973206e","kind":"string","nodeType":"YulLiteral","src":"8472:34:50","type":"","value":"ERC1967: new implementation is n"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8445:6:50"},"nodeType":"YulFunctionCall","src":"8445:62:50"},"nodeType":"YulExpressionStatement","src":"8445:62:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8527:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"8538:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8523:3:50"},"nodeType":"YulFunctionCall","src":"8523:18:50"},{"hexValue":"6f74206120636f6e7472616374","kind":"string","nodeType":"YulLiteral","src":"8543:15:50","type":"","value":"ot a contract"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8516:6:50"},"nodeType":"YulFunctionCall","src":"8516:43:50"},"nodeType":"YulExpressionStatement","src":"8516:43:50"},{"nodeType":"YulAssignment","src":"8568:27:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8580:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"8591:3:50","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8576:3:50"},"nodeType":"YulFunctionCall","src":"8576:19:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"8568:4:50"}]}]},"name":"abi_encode_tuple_t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8343:9:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"8357:4:50","type":""}],"src":"8192:409:50"},{"body":{"nodeType":"YulBlock","src":"8672:184:50","statements":[{"nodeType":"YulVariableDeclaration","src":"8682:10:50","value":{"kind":"number","nodeType":"YulLiteral","src":"8691:1:50","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"8686:1:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"8751:63:50","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"8776:3:50"},{"name":"i","nodeType":"YulIdentifier","src":"8781:1:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8772:3:50"},"nodeType":"YulFunctionCall","src":"8772:11:50"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"8795:3:50"},{"name":"i","nodeType":"YulIdentifier","src":"8800:1:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8791:3:50"},"nodeType":"YulFunctionCall","src":"8791:11:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"8785:5:50"},"nodeType":"YulFunctionCall","src":"8785:18:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8765:6:50"},"nodeType":"YulFunctionCall","src":"8765:39:50"},"nodeType":"YulExpressionStatement","src":"8765:39:50"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"8712:1:50"},{"name":"length","nodeType":"YulIdentifier","src":"8715:6:50"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"8709:2:50"},"nodeType":"YulFunctionCall","src":"8709:13:50"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"8723:19:50","statements":[{"nodeType":"YulAssignment","src":"8725:15:50","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"8734:1:50"},{"kind":"number","nodeType":"YulLiteral","src":"8737:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8730:3:50"},"nodeType":"YulFunctionCall","src":"8730:10:50"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"8725:1:50"}]}]},"pre":{"nodeType":"YulBlock","src":"8705:3:50","statements":[]},"src":"8701:113:50"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"8834:3:50"},{"name":"length","nodeType":"YulIdentifier","src":"8839:6:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8830:3:50"},"nodeType":"YulFunctionCall","src":"8830:16:50"},{"kind":"number","nodeType":"YulLiteral","src":"8848:1:50","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8823:6:50"},"nodeType":"YulFunctionCall","src":"8823:27:50"},"nodeType":"YulExpressionStatement","src":"8823:27:50"}]},"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"8650:3:50","type":""},{"name":"dst","nodeType":"YulTypedName","src":"8655:3:50","type":""},{"name":"length","nodeType":"YulTypedName","src":"8660:6:50","type":""}],"src":"8606:250:50"},{"body":{"nodeType":"YulBlock","src":"8998:150:50","statements":[{"nodeType":"YulVariableDeclaration","src":"9008:27:50","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"9028:6:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"9022:5:50"},"nodeType":"YulFunctionCall","src":"9022:13:50"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"9012:6:50","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"9083:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"9091:4:50","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9079:3:50"},"nodeType":"YulFunctionCall","src":"9079:17:50"},{"name":"pos","nodeType":"YulIdentifier","src":"9098:3:50"},{"name":"length","nodeType":"YulIdentifier","src":"9103:6:50"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"9044:34:50"},"nodeType":"YulFunctionCall","src":"9044:66:50"},"nodeType":"YulExpressionStatement","src":"9044:66:50"},{"nodeType":"YulAssignment","src":"9119:23:50","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"9130:3:50"},{"name":"length","nodeType":"YulIdentifier","src":"9135:6:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9126:3:50"},"nodeType":"YulFunctionCall","src":"9126:16:50"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"9119:3:50"}]}]},"name":"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"8974:3:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"8979:6:50","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"8990:3:50","type":""}],"src":"8861:287:50"},{"body":{"nodeType":"YulBlock","src":"9327:179:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9344:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"9355:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9337:6:50"},"nodeType":"YulFunctionCall","src":"9337:21:50"},"nodeType":"YulExpressionStatement","src":"9337:21:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9378:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"9389:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9374:3:50"},"nodeType":"YulFunctionCall","src":"9374:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"9394:2:50","type":"","value":"29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9367:6:50"},"nodeType":"YulFunctionCall","src":"9367:30:50"},"nodeType":"YulExpressionStatement","src":"9367:30:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9417:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"9428:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9413:3:50"},"nodeType":"YulFunctionCall","src":"9413:18:50"},{"hexValue":"416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374","kind":"string","nodeType":"YulLiteral","src":"9433:31:50","type":"","value":"Address: call to non-contract"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9406:6:50"},"nodeType":"YulFunctionCall","src":"9406:59:50"},"nodeType":"YulExpressionStatement","src":"9406:59:50"},{"nodeType":"YulAssignment","src":"9474:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9486:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"9497:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9482:3:50"},"nodeType":"YulFunctionCall","src":"9482:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"9474:4:50"}]}]},"name":"abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9304:9:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"9318:4:50","type":""}],"src":"9153:353:50"},{"body":{"nodeType":"YulBlock","src":"9632:275:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9649:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"9660:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9642:6:50"},"nodeType":"YulFunctionCall","src":"9642:21:50"},"nodeType":"YulExpressionStatement","src":"9642:21:50"},{"nodeType":"YulVariableDeclaration","src":"9672:27:50","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"9692:6:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"9686:5:50"},"nodeType":"YulFunctionCall","src":"9686:13:50"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"9676:6:50","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9719:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"9730:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9715:3:50"},"nodeType":"YulFunctionCall","src":"9715:18:50"},{"name":"length","nodeType":"YulIdentifier","src":"9735:6:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9708:6:50"},"nodeType":"YulFunctionCall","src":"9708:34:50"},"nodeType":"YulExpressionStatement","src":"9708:34:50"},{"expression":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"9790:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"9798:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9786:3:50"},"nodeType":"YulFunctionCall","src":"9786:15:50"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9807:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"9818:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9803:3:50"},"nodeType":"YulFunctionCall","src":"9803:18:50"},{"name":"length","nodeType":"YulIdentifier","src":"9823:6:50"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"9751:34:50"},"nodeType":"YulFunctionCall","src":"9751:79:50"},"nodeType":"YulExpressionStatement","src":"9751:79:50"},{"nodeType":"YulAssignment","src":"9839:62:50","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9855:9:50"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"9874:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"9882:2:50","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9870:3:50"},"nodeType":"YulFunctionCall","src":"9870:15:50"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9891:2:50","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"9887:3:50"},"nodeType":"YulFunctionCall","src":"9887:7:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"9866:3:50"},"nodeType":"YulFunctionCall","src":"9866:29:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9851:3:50"},"nodeType":"YulFunctionCall","src":"9851:45:50"},{"kind":"number","nodeType":"YulLiteral","src":"9898:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9847:3:50"},"nodeType":"YulFunctionCall","src":"9847:54:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"9839:4:50"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9601:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"9612:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"9623:4:50","type":""}],"src":"9511:396:50"}]},"contents":"{\n { }\n function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n if iszero(eq(value, and(value, shl(224, 0xffffffff)))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 96)\n let pos := headStart\n pos := headStart\n let srcPtr := value0\n let i := 0\n for { } lt(i, 0x03) { i := add(i, 1) }\n {\n mstore(pos, and(mload(srcPtr), 0xff))\n let _1 := 0x20\n pos := add(pos, _1)\n srcPtr := add(srcPtr, _1)\n }\n }\n function validator_revert_address(value)\n {\n if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n }\n function abi_encode_tuple_t_contract$_IDAO_$2538__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_encode_tuple_t_enum$_PluginType_$3994__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n if iszero(lt(value0, 3))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x21)\n revert(0, 0x24)\n }\n mstore(headStart, value0)\n }\n function panic_error_0x41()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function abi_decode_tuple_t_addresst_bytes_memory_ptr(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n let offset := calldataload(add(headStart, 32))\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n let _2 := add(headStart, offset)\n if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n let _3 := calldataload(_2)\n if gt(_3, _1) { panic_error_0x41() }\n let _4 := not(31)\n let memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n mstore(memPtr, _3)\n if gt(add(add(_2, _3), 32), dataEnd) { revert(0, 0) }\n calldatacopy(add(memPtr, 32), add(_2, 32), _3)\n mstore(add(add(memPtr, _3), 32), 0)\n value1 := memPtr\n }\n function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_decode_tuple_t_contract$_IDAO_$2538(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n }\n function abi_encode_tuple_t_stringliteral_36e108fa7a809b52ab1951dd91c117a7bc9ac5250bdf1aa162d4e104f7edf9eb__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 44)\n mstore(add(headStart, 64), \"Function must be called through \")\n mstore(add(headStart, 96), \"delegatecall\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_52f1ead4d9653e13afbd2e90ef2587c30187cd50b2e97d784e3f7a7541247434__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 44)\n mstore(add(headStart, 64), \"Function must be called through \")\n mstore(add(headStart, 96), \"active proxy\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_67f0151b4ad1dcfa0e3302a0cd6019f51582ef1807b37dceb00bd852a514f7f4__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 56)\n mstore(add(headStart, 64), \"UUPSUpgradeable: must not be cal\")\n mstore(add(headStart, 96), \"led through delegatecall\")\n tail := add(headStart, 128)\n }\n function abi_decode_tuple_t_bytes32_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := mload(headStart)\n }\n function abi_encode_tuple_t_stringliteral_8e8e2fbcb586f700b5b14e2c4a650c8d83b9773c31c5fe8962070ea544e11f24__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 46)\n mstore(add(headStart, 64), \"ERC1967Upgrade: new implementati\")\n mstore(add(headStart, 96), \"on is not UUPS\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_76b6b6debfc5febf101145a79ecf0b0d2e89e397dfdab2bca99888370411152c__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 41)\n mstore(add(headStart, 64), \"ERC1967Upgrade: unsupported prox\")\n mstore(add(headStart, 96), \"iableUUID\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 43)\n mstore(add(headStart, 64), \"Initializable: contract is not i\")\n mstore(add(headStart, 96), \"nitializing\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_address_t_address_t_bytes32_t_bytes_calldata_ptr__to_t_address_t_address_t_bytes32_t_bytes_memory_ptr__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n {\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n mstore(add(headStart, 64), value2)\n mstore(add(headStart, 96), 128)\n mstore(add(headStart, 128), value4)\n calldatacopy(add(headStart, 160), value3, value4)\n mstore(add(add(headStart, value4), 160), 0)\n tail := add(add(headStart, and(add(value4, 31), not(31))), 160)\n }\n function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := mload(headStart)\n if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_address_t_address_t_address_t_bytes32__to_t_address_t_address_t_address_t_bytes32__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n {\n tail := add(headStart, 128)\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n mstore(add(headStart, 64), and(value2, _1))\n mstore(add(headStart, 96), value3)\n }\n function abi_encode_tuple_t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 45)\n mstore(add(headStart, 64), \"ERC1967: new implementation is n\")\n mstore(add(headStart, 96), \"ot a contract\")\n tail := add(headStart, 128)\n }\n function copy_memory_to_memory_with_cleanup(src, dst, length)\n {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n mstore(add(dst, length), 0)\n }\n function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n {\n let length := mload(value0)\n copy_memory_to_memory_with_cleanup(add(value0, 0x20), pos, length)\n end := add(pos, length)\n }\n function abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 29)\n mstore(add(headStart, 64), \"Address: call to non-contract\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n mstore(headStart, 32)\n let length := mload(value0)\n mstore(add(headStart, 32), length)\n copy_memory_to_memory_with_cleanup(add(value0, 32), add(headStart, 64), length)\n tail := add(add(headStart, and(add(length, 31), not(31))), 64)\n }\n}","id":50,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{"554":[{"length":32,"start":820},{"length":32,"start":958},{"length":32,"start":1204},{"length":32,"start":1337},{"length":32,"start":1571}]},"linkReferences":{},"object":"6080604052600436106100d25760003560e01c806352d1902d1161007f578063776d1a0111610059578063776d1a01146102005780638883bbd714610220578063c9c4bfca14610240578063d4b839921461027457600080fd5b806352d1902d146101b15780635c60da1b146101d45780636accab8c146101e957600080fd5b80634162169f116100b05780634162169f1461015057806341de6830146101825780634f1ef2861461019e57600080fd5b806301ffc9a7146100d75780632ae9c6001461010c5780633659cfe61461012e575b600080fd5b3480156100e357600080fd5b506100f76100f2366004610dd3565b610294565b60405190151581526020015b60405180910390f35b34801561011857600080fd5b50610121610300565b6040516101039190610dfd565b34801561013a57600080fd5b5061014e610149366004610e46565b61032a565b005b34801561015c57600080fd5b5060c9546001600160a01b03165b6040516001600160a01b039091168152602001610103565b34801561018e57600080fd5b5060006040516101039190610e63565b61014e6101ac366004610ea1565b6104aa565b3480156101bd57600080fd5b506101c6610616565b604051908152602001610103565b3480156101e057600080fd5b5061016a6106db565b3480156101f557600080fd5b506101c661012d5481565b34801561020c57600080fd5b5061014e61021b366004610e46565b610713565b34801561022c57600080fd5b5061014e61023b366004610e46565b610772565b34801561024c57600080fd5b506101c67f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f581565b34801561028057600080fd5b5060fb5461016a906001600160a01b031681565b60006001600160e01b0319821663041de68360e41b14806102c457506001600160e01b03198216621574e360e91b145b806102df57506001600160e01b031982166352d1902d60e01b145b806102fa57506301ffc9a760e01b6001600160e01b03198316145b92915050565b610308610db5565b5060408051606081018252600181526004602082015260009181019190915290565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036103bc5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b60648201526084015b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166104177f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b0316146104825760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b60648201526084016103b3565b61048b81610784565b604080516000808252602082019092526104a7918391906107c1565b50565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036105375760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b60648201526084016103b3565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166105927f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b0316146105fd5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b60648201526084016103b3565b61060682610784565b610612828260016107c1565b5050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106b65760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016103b3565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b600061070e7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b60fb80546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d690600090a35050565b61077b81610966565b50600161012d55565b60c9547f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f590610612906001600160a01b03163033846000366109da565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156107f9576107f483610a96565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610853575060408051601f3d908101601f1916820190925261085091810190610f65565b60015b6108c55760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201527f6f6e206973206e6f74205555505300000000000000000000000000000000000060648201526084016103b3565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc811461095a5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f7860448201527f6961626c6555554944000000000000000000000000000000000000000000000060648201526084016103b3565b506107f4838383610b61565b600054610100900460ff166109d15760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103b3565b6104a781610b8c565b604051637ef7c88360e11b81526001600160a01b0387169063fdef910690610a0e9088908890889088908890600401610f7e565b602060405180830381865afa158015610a2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4f9190610fd2565b610a8e57604051630cb6f8ed60e21b81526001600160a01b038088166004830152808716602483015285166044820152606481018490526084016103b3565b505050505050565b6001600160a01b0381163b610b135760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e74726163740000000000000000000000000000000000000060648201526084016103b3565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610b6a83610c26565b600082511180610b775750805b156107f457610b868383610c66565b50505050565b600054610100900460ff16610bf75760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103b3565b60c9805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610c2f81610a96565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060610c8b838360405180606001604052806027815260200161106860279139610c92565b9392505050565b6060600080856001600160a01b031685604051610caf9190611018565b600060405180830381855af49150503d8060008114610cea576040519150601f19603f3d011682016040523d82523d6000602084013e610cef565b606091505b5091509150610d0086838387610d0a565b9695505050505050565b60608315610d79578251600003610d72576001600160a01b0385163b610d725760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016103b3565b5081610d83565b610d838383610d8b565b949350505050565b815115610d9b5781518083602001fd5b8060405162461bcd60e51b81526004016103b39190611034565b60405180606001604052806003906020820280368337509192915050565b600060208284031215610de557600080fd5b81356001600160e01b031981168114610c8b57600080fd5b60608101818360005b6003811015610e2857815160ff16835260209283019290910190600101610e06565b50505092915050565b6001600160a01b03811681146104a757600080fd5b600060208284031215610e5857600080fd5b8135610c8b81610e31565b6020810160038310610e8557634e487b7160e01b600052602160045260246000fd5b91905290565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215610eb457600080fd5b8235610ebf81610e31565b9150602083013567ffffffffffffffff80821115610edc57600080fd5b818501915085601f830112610ef057600080fd5b813581811115610f0257610f02610e8b565b604051601f8201601f19908116603f01168101908382118183101715610f2a57610f2a610e8b565b81604052828152886020848701011115610f4357600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b600060208284031215610f7757600080fd5b5051919050565b60006001600160a01b03808816835280871660208401525084604083015260806060830152826080830152828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b600060208284031215610fe457600080fd5b81518015158114610c8b57600080fd5b60005b8381101561100f578181015183820152602001610ff7565b50506000910152565b6000825161102a818460208701610ff4565b9190910192915050565b6020815260008251806020840152611053816040850160208701610ff4565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xD2 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x52D1902D GT PUSH2 0x7F JUMPI DUP1 PUSH4 0x776D1A01 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0x776D1A01 EQ PUSH2 0x200 JUMPI DUP1 PUSH4 0x8883BBD7 EQ PUSH2 0x220 JUMPI DUP1 PUSH4 0xC9C4BFCA EQ PUSH2 0x240 JUMPI DUP1 PUSH4 0xD4B83992 EQ PUSH2 0x274 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x52D1902D EQ PUSH2 0x1B1 JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0x1D4 JUMPI DUP1 PUSH4 0x6ACCAB8C EQ PUSH2 0x1E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x4162169F GT PUSH2 0xB0 JUMPI DUP1 PUSH4 0x4162169F EQ PUSH2 0x150 JUMPI DUP1 PUSH4 0x41DE6830 EQ PUSH2 0x182 JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x19E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xD7 JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0x10C JUMPI DUP1 PUSH4 0x3659CFE6 EQ PUSH2 0x12E JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xE3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF7 PUSH2 0xF2 CALLDATASIZE PUSH1 0x4 PUSH2 0xDD3 JUMP JUMPDEST PUSH2 0x294 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x118 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x121 PUSH2 0x300 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x103 SWAP2 SWAP1 PUSH2 0xDFD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x13A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x14E PUSH2 0x149 CALLDATASIZE PUSH1 0x4 PUSH2 0xE46 JUMP JUMPDEST PUSH2 0x32A JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x15C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xC9 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x103 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x18E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 PUSH1 0x40 MLOAD PUSH2 0x103 SWAP2 SWAP1 PUSH2 0xE63 JUMP JUMPDEST PUSH2 0x14E PUSH2 0x1AC CALLDATASIZE PUSH1 0x4 PUSH2 0xEA1 JUMP JUMPDEST PUSH2 0x4AA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C6 PUSH2 0x616 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x103 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x16A PUSH2 0x6DB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C6 PUSH2 0x12D SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x20C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x14E PUSH2 0x21B CALLDATASIZE PUSH1 0x4 PUSH2 0xE46 JUMP JUMPDEST PUSH2 0x713 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x22C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x14E PUSH2 0x23B CALLDATASIZE PUSH1 0x4 PUSH2 0xE46 JUMP JUMPDEST PUSH2 0x772 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x24C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C6 PUSH32 0x821B6E3A557148015A918C89E5D092E878A69854A2D1A410635F771BD5A8A3F5 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x280 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xFB SLOAD PUSH2 0x16A SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x41DE683 PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x2C4 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x2DF JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x52D1902D PUSH1 0xE0 SHL EQ JUMPDEST DUP1 PUSH2 0x2FA JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x308 PUSH2 0xDB5 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x3BC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x19195B1959D85D1958D85B1B PUSH1 0xA2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x417 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x482 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x6163746976652070726F7879 PUSH1 0xA0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B3 JUMP JUMPDEST PUSH2 0x48B DUP2 PUSH2 0x784 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x4A7 SWAP2 DUP4 SWAP2 SWAP1 PUSH2 0x7C1 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x537 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x19195B1959D85D1958D85B1B PUSH1 0xA2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B3 JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x592 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x5FD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x6163746976652070726F7879 PUSH1 0xA0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B3 JUMP JUMPDEST PUSH2 0x606 DUP3 PUSH2 0x784 JUMP JUMPDEST PUSH2 0x612 DUP3 DUP3 PUSH1 0x1 PUSH2 0x7C1 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x6B6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x38 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x555550535570677261646561626C653A206D757374206E6F742062652063616C PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6C6564207468726F7567682064656C656761746563616C6C0000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B3 JUMP JUMPDEST POP PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x70E PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0xFB DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP2 SWAP1 DUP3 SWAP1 PUSH32 0x90CC2F570A6EB594B1580EA3E41247D2D73A55281889E86BD4EC2FC29C7E62D6 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH2 0x77B DUP2 PUSH2 0x966 JUMP JUMPDEST POP PUSH1 0x1 PUSH2 0x12D SSTORE JUMP JUMPDEST PUSH1 0xC9 SLOAD PUSH32 0x821B6E3A557148015A918C89E5D092E878A69854A2D1A410635F771BD5A8A3F5 SWAP1 PUSH2 0x612 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ADDRESS CALLER DUP5 PUSH1 0x0 CALLDATASIZE PUSH2 0x9DA JUMP JUMPDEST PUSH32 0x4910FDFA16FED3260ED0E7147F7CC6DA11A60208B5B9406D12A635614FFD9143 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x7F9 JUMPI PUSH2 0x7F4 DUP4 PUSH2 0xA96 JUMP JUMPDEST POP POP POP JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x52D1902D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x853 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x850 SWAP2 DUP2 ADD SWAP1 PUSH2 0xF65 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x8C5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524331393637557067726164653A206E657720696D706C656D656E74617469 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F6E206973206E6F742055555053000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B3 JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC DUP2 EQ PUSH2 0x95A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524331393637557067726164653A20756E737570706F727465642070726F78 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6961626C65555549440000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B3 JUMP JUMPDEST POP PUSH2 0x7F4 DUP4 DUP4 DUP4 PUSH2 0xB61 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x9D1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B3 JUMP JUMPDEST PUSH2 0x4A7 DUP2 PUSH2 0xB8C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x7EF7C883 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0xFDEF9106 SWAP1 PUSH2 0xA0E SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0xF7E JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xA2B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xA4F SWAP2 SWAP1 PUSH2 0xFD2 JUMP JUMPDEST PUSH2 0xA8E JUMPI PUSH1 0x40 MLOAD PUSH4 0xCB6F8ED PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND PUSH1 0x4 DUP4 ADD MSTORE DUP1 DUP8 AND PUSH1 0x24 DUP4 ADD MSTORE DUP6 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x84 ADD PUSH2 0x3B3 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND EXTCODESIZE PUSH2 0xB13 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313936373A206E657720696D706C656D656E746174696F6E206973206E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F74206120636F6E747261637400000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B3 JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xB6A DUP4 PUSH2 0xC26 JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD GT DUP1 PUSH2 0xB77 JUMPI POP DUP1 JUMPDEST ISZERO PUSH2 0x7F4 JUMPI PUSH2 0xB86 DUP4 DUP4 PUSH2 0xC66 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0xBF7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B3 JUMP JUMPDEST PUSH1 0xC9 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xC2F DUP2 PUSH2 0xA96 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xC8B DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1068 PUSH1 0x27 SWAP2 CODECOPY PUSH2 0xC92 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0xCAF SWAP2 SWAP1 PUSH2 0x1018 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xCEA JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xCEF JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0xD00 DUP7 DUP4 DUP4 DUP8 PUSH2 0xD0A JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0xD79 JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0xD72 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0xD72 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3B3 JUMP JUMPDEST POP DUP2 PUSH2 0xD83 JUMP JUMPDEST PUSH2 0xD83 DUP4 DUP4 PUSH2 0xD8B JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0xD9B JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3B3 SWAP2 SWAP1 PUSH2 0x1034 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xDE5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0xC8B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0xE28 JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0xE06 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x4A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xE58 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xC8B DUP2 PUSH2 0xE31 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH1 0x3 DUP4 LT PUSH2 0xE85 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 SWAP1 MSTORE SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xEB4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0xEBF DUP2 PUSH2 0xE31 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xEDC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xEF0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0xF02 JUMPI PUSH2 0xF02 PUSH2 0xE8B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0xF2A JUMPI PUSH2 0xF2A PUSH2 0xE8B JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0xF43 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xF77 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND DUP4 MSTORE DUP1 DUP8 AND PUSH1 0x20 DUP5 ADD MSTORE POP DUP5 PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x80 PUSH1 0x60 DUP4 ADD MSTORE DUP3 PUSH1 0x80 DUP4 ADD MSTORE DUP3 DUP5 PUSH1 0xA0 DUP5 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0xA0 DUP5 DUP5 ADD ADD MSTORE PUSH1 0xA0 PUSH1 0x1F NOT PUSH1 0x1F DUP6 ADD AND DUP4 ADD ADD SWAP1 POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xFE4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xC8B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x100F JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xFF7 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x102A DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0xFF4 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x1053 DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0xFF4 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A164 PUSH20 0x6F6C6343000811000A0000000000000000000000 ","sourceMap":"1988:216:31:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2810:366:40;;;;;;;;;;-1:-1:-1;2810:366:40;;;;;:::i;:::-;;:::i;:::-;;;470:14:50;;463:22;445:41;;433:2;418:18;2810:366:40;;;;;;;;631:98:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;3408:195:5:-;;;;;;;;;;-1:-1:-1;3408:195:5;;;;;:::i;:::-;;:::i;:::-;;1200:70:35;;;;;;;;;;-1:-1:-1;1259:4:35;;-1:-1:-1;;;;;1259:4:35;1200:70;;;-1:-1:-1;;;;;1591:55:50;;;1573:74;;1561:2;1546:18;1200:70:35;1414:239:50;1710:103:40;;;;;;;;;;-1:-1:-1;1762:10:40;1710:103;;;;;;:::i;3922:220:5:-;;;;;;:::i;:::-;;:::i;3027:131::-;;;;;;;;;;;;;:::i;:::-;;;3345:25:50;;;3333:2;3318:18;3027:131:5;3199:177:50;3457:100:40;;;;;;;;;;;;;:::i;2057:21:31:-;;;;;;;;;;;;;;;;2439:166:40;;;;;;;;;;-1:-1:-1;2439:166:40;;;;;:::i;:::-;;:::i;2085:117:31:-;;;;;;;;;;-1:-1:-1;2085:117:31;;;;;:::i;:::-;;:::i;1911:93:40:-;;;;;;;;;;;;1966:38;1911:93;;1293:21;;;;;;;;;;-1:-1:-1;1293:21:40;;;;-1:-1:-1;;;;;1293:21:40;;;2810:366;2896:4;-1:-1:-1;;;;;;2931:41:40;;-1:-1:-1;;;2931:41:40;;:107;;-1:-1:-1;;;;;;;2988:50:40;;-1:-1:-1;;;2988:50:40;2931:107;:185;;;-1:-1:-1;;;;;;;3054:62:40;;-1:-1:-1;;;3054:62:40;2931:185;:238;;;-1:-1:-1;;;;;;;;;;1189:51:10;;;3132:37:40;2912:257;2810:366;-1:-1:-1;;2810:366:40:o;631:98:49:-;679:15;;:::i;:::-;-1:-1:-1;706:16:49;;;;;;;;714:1;706:16;;717:1;706:16;;;;-1:-1:-1;706:16:49;;;;;;;;631:98::o;3408:195:5:-;-1:-1:-1;;;;;1764:6:5;1747:23;1755:4;1747:23;1739:80;;;;-1:-1:-1;;;1739:80:5;;4261:2:50;1739:80:5;;;4243:21:50;4300:2;4280:18;;;4273:30;4339:34;4319:18;;;4312:62;-1:-1:-1;;;4390:18:50;;;4383:42;4442:19;;1739:80:5;;;;;;;;;1861:6;-1:-1:-1;;;;;1837:30:5;:20;1180:66:2;1557:65;-1:-1:-1;;;;;1557:65:2;;1478:151;1837:20:5;-1:-1:-1;;;;;1837:30:5;;1829:87;;;;-1:-1:-1;;;1829:87:5;;4674:2:50;1829:87:5;;;4656:21:50;4713:2;4693:18;;;4686:30;4752:34;4732:18;;;4725:62;-1:-1:-1;;;4803:18:50;;;4796:42;4855:19;;1829:87:5;4472:408:50;1829:87:5;3489:36:::1;3507:17;3489;:36::i;:::-;3576:12;::::0;;3586:1:::1;3576:12:::0;;;::::1;::::0;::::1;::::0;;;3535:61:::1;::::0;3557:17;;3576:12;3535:21:::1;:61::i;:::-;3408:195:::0;:::o;3922:220::-;-1:-1:-1;;;;;1764:6:5;1747:23;1755:4;1747:23;1739:80;;;;-1:-1:-1;;;1739:80:5;;4261:2:50;1739:80:5;;;4243:21:50;4300:2;4280:18;;;4273:30;4339:34;4319:18;;;4312:62;-1:-1:-1;;;4390:18:50;;;4383:42;4442:19;;1739:80:5;4059:408:50;1739:80:5;1861:6;-1:-1:-1;;;;;1837:30:5;:20;1180:66:2;1557:65;-1:-1:-1;;;;;1557:65:2;;1478:151;1837:20:5;-1:-1:-1;;;;;1837:30:5;;1829:87;;;;-1:-1:-1;;;1829:87:5;;4674:2:50;1829:87:5;;;4656:21:50;4713:2;4693:18;;;4686:30;4752:34;4732:18;;;4725:62;-1:-1:-1;;;4803:18:50;;;4796:42;4855:19;;1829:87:5;4472:408:50;1829:87:5;4037:36:::1;4055:17;4037;:36::i;:::-;4083:52;4105:17;4124:4;4130;4083:21;:52::i;:::-;3922:220:::0;;:::o;3027:131::-;3105:7;2190:4;-1:-1:-1;;;;;2199:6:5;2182:23;;2174:92;;;;-1:-1:-1;;;2174:92:5;;5087:2:50;2174:92:5;;;5069:21:50;5126:2;5106:18;;;5099:30;5165:34;5145:18;;;5138:62;5236:26;5216:18;;;5209:54;5280:19;;2174:92:5;4885:420:50;2174:92:5;-1:-1:-1;1180:66:2::1;3027:131:5::0;:::o;3457:100:40:-;3504:7;3530:20;1180:66:2;1557:65;-1:-1:-1;;;;;1557:65:2;;1478:151;3530:20:40;3523:27;;3457:100;:::o;2439:166::-;2517:6;;;-1:-1:-1;;;;;2533:16:40;;;-1:-1:-1;;2533:16:40;;;;;;;2564:34;;2517:6;;;2533:16;2517:6;;2564:34;;2492:22;;2564:34;2482:123;2439:166;:::o;2085:117:31:-;2141:34;2170:4;2141:28;:34::i;:::-;-1:-1:-1;2194:1:31;2185:6;:10;2085:117::o;5390:204:40:-;1616:4:35;;1966:38:40;;1610:67:35;;-1:-1:-1;;;;;1616:4:35;1630;965:10:7;1651:13:35;1039:14:7;;1610:5:35;:67::i;2841:944:2:-;839:66;3257:59;;;3253:526;;;3332:37;3351:17;3332:18;:37::i;:::-;2841:944;;;:::o;3253:526::-;3433:17;-1:-1:-1;;;;;3404:61:2;;:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3404:63:2;;;;;;;;-1:-1:-1;;3404:63:2;;;;;;;;;;;;:::i;:::-;;;3400:302;;3631:56;;-1:-1:-1;;;3631:56:2;;5701:2:50;3631:56:2;;;5683:21:50;5740:2;5720:18;;;5713:30;5779:34;5759:18;;;5752:62;5850:16;5830:18;;;5823:44;5884:19;;3631:56:2;5499:410:50;3400:302:2;1180:66;3517:28;;3509:82;;;;-1:-1:-1;;;3509:82:2;;6116:2:50;3509:82:2;;;6098:21:50;6155:2;6135:18;;;6128:30;6194:34;6174:18;;;6167:62;6265:11;6245:18;;;6238:39;6294:19;;3509:82:2;5914:405:50;3509:82:2;3468:138;3715:53;3733:17;3752:4;3758:9;3715:17;:53::i;2172:139:40:-;5374:13:4;;;;;;;5366:69;;;;-1:-1:-1;;;5366:69:4;;6526:2:50;5366:69:4;;;6508:21:50;6565:2;6545:18;;;6538:30;6604:34;6584:18;;;6577:62;-1:-1:-1;;;6655:18:50;;;6648:41;6706:19;;5366:69:4;6324:407:50;5366:69:4;2265:39:40::1;2299:4;2265:33;:39::i;1041:363:36:-:0;1180:54;;-1:-1:-1;;;1180:54:36;;-1:-1:-1;;;;;1180:18:36;;;;;:54;;1199:6;;1207:4;;1213:13;;1228:5;;;;1180:54;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1175:226;;1251:150;;-1:-1:-1;;;1251:150:36;;-1:-1:-1;;;;;8018:15:50;;;1251:150:36;;;8000:34:50;8070:15;;;8050:18;;;8043:43;8122:15;;8102:18;;;8095:43;8154:18;;;8147:34;;;7911:19;;1251:150:36;7708:479:50;1175:226:36;1041:363;;;;;;:::o;1720:281:2:-;-1:-1:-1;;;;;1713:19:6;;;1793:106:2;;;;-1:-1:-1;;;1793:106:2;;8394:2:50;1793:106:2;;;8376:21:50;8433:2;8413:18;;;8406:30;8472:34;8452:18;;;8445:62;8543:15;8523:18;;;8516:43;8576:19;;1793:106:2;8192:409:50;1793:106:2;1180:66;1909:85;;-1:-1:-1;;1909:85:2;-1:-1:-1;;;;;1909:85:2;;;;;;;;;;1720:281::o;2393:276::-;2501:29;2512:17;2501:10;:29::i;:::-;2558:1;2544:4;:11;:15;:28;;;;2563:9;2544:28;2540:123;;;2588:64;2628:17;2647:4;2588:39;:64::i;:::-;;2393:276;;;:::o;1010:108:35:-;5374:13:4;;;;;;;5366:69;;;;-1:-1:-1;;;5366:69:4;;6526:2:50;5366:69:4;;;6508:21:50;6565:2;6545:18;;;6538:30;6604:34;6584:18;;;6577:62;-1:-1:-1;;;6655:18:50;;;6648:41;6706:19;;5366:69:4;6324:407:50;5366:69:4;1100:4:35::1;:11:::0;;-1:-1:-1;;1100:11:35::1;-1:-1:-1::0;;;;;1100:11:35;;;::::1;::::0;;;::::1;::::0;;1010:108::o;2107:152:2:-;2173:37;2192:17;2173:18;:37::i;:::-;2225:27;;-1:-1:-1;;;;;2225:27:2;;;;;;;;2107:152;:::o;6685:198:6:-;6768:12;6799:77;6820:6;6828:4;6799:77;;;;;;;;;;;;;;;;;:20;:77::i;:::-;6792:84;6685:198;-1:-1:-1;;;6685:198:6:o;7069:325::-;7210:12;7235;7249:23;7276:6;-1:-1:-1;;;;;7276:19:6;7296:4;7276:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7234:67;;;;7318:69;7345:6;7353:7;7362:10;7374:12;7318:26;:69::i;:::-;7311:76;7069:325;-1:-1:-1;;;;;;7069:325:6:o;7682:628::-;7862:12;7890:7;7886:418;;;7917:10;:17;7938:1;7917:22;7913:286;;-1:-1:-1;;;;;1713:19:6;;;8124:60;;;;-1:-1:-1;;;8124:60:6;;9355:2:50;8124:60:6;;;9337:21:50;9394:2;9374:18;;;9367:30;9433:31;9413:18;;;9406:59;9482:18;;8124:60:6;9153:353:50;8124:60:6;-1:-1:-1;8219:10:6;8212:17;;7886:418;8260:33;8268:10;8280:12;8260:7;:33::i;:::-;7682:628;;;;;;:::o;8832:540::-;8991:17;;:21;8987:379;;9219:10;9213:17;9275:15;9262:10;9258:2;9254:19;9247:44;8987:379;9342:12;9335:20;;-1:-1:-1;;;9335:20:6;;;;;;;;:::i;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:286:50:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:50;;209:43;;199:71;;266:1;263;256:12;497:501;673:2;658:18;;662:9;753:6;631:4;787:205;801:4;798:1;795:11;787:205;;;864:13;;879:4;860:24;848:37;;908:4;932:12;;;;967:15;;;;821:1;814:9;787:205;;;791:3;;;497:501;;;;:::o;1003:154::-;-1:-1:-1;;;;;1082:5:50;1078:54;1071:5;1068:65;1058:93;;1147:1;1144;1137:12;1162:247;1221:6;1274:2;1262:9;1253:7;1249:23;1245:32;1242:52;;;1290:1;1287;1280:12;1242:52;1329:9;1316:23;1348:31;1373:5;1348:31;:::i;1658:343::-;1805:2;1790:18;;1838:1;1827:13;;1817:144;;1883:10;1878:3;1874:20;1871:1;1864:31;1918:4;1915:1;1908:15;1946:4;1943:1;1936:15;1817:144;1970:25;;;1658:343;:::o;2006:127::-;2067:10;2062:3;2058:20;2055:1;2048:31;2098:4;2095:1;2088:15;2122:4;2119:1;2112:15;2138:1056;2215:6;2223;2276:2;2264:9;2255:7;2251:23;2247:32;2244:52;;;2292:1;2289;2282:12;2244:52;2331:9;2318:23;2350:31;2375:5;2350:31;:::i;:::-;2400:5;-1:-1:-1;2456:2:50;2441:18;;2428:32;2479:18;2509:14;;;2506:34;;;2536:1;2533;2526:12;2506:34;2574:6;2563:9;2559:22;2549:32;;2619:7;2612:4;2608:2;2604:13;2600:27;2590:55;;2641:1;2638;2631:12;2590:55;2677:2;2664:16;2699:2;2695;2692:10;2689:36;;;2705:18;;:::i;:::-;2780:2;2774:9;2748:2;2834:13;;-1:-1:-1;;2830:22:50;;;2854:2;2826:31;2822:40;2810:53;;;2878:18;;;2898:22;;;2875:46;2872:72;;;2924:18;;:::i;:::-;2964:10;2960:2;2953:22;2999:2;2991:6;2984:18;3039:7;3034:2;3029;3025;3021:11;3017:20;3014:33;3011:53;;;3060:1;3057;3050:12;3011:53;3116:2;3111;3107;3103:11;3098:2;3090:6;3086:15;3073:46;3161:1;3156:2;3151;3143:6;3139:15;3135:24;3128:35;3182:6;3172:16;;;;;;;2138:1056;;;;;:::o;5310:184::-;5380:6;5433:2;5421:9;5412:7;5408:23;5404:32;5401:52;;;5449:1;5446;5439:12;5401:52;-1:-1:-1;5472:16:50;;5310:184;-1:-1:-1;5310:184:50:o;6736:685::-;6940:4;-1:-1:-1;;;;;7050:2:50;7042:6;7038:15;7027:9;7020:34;7102:2;7094:6;7090:15;7085:2;7074:9;7070:18;7063:43;;7142:6;7137:2;7126:9;7122:18;7115:34;7185:3;7180:2;7169:9;7165:18;7158:31;7226:6;7220:3;7209:9;7205:19;7198:35;7284:6;7276;7270:3;7259:9;7255:19;7242:49;7341:1;7335:3;7326:6;7315:9;7311:22;7307:32;7300:43;7411:3;7404:2;7400:7;7395:2;7387:6;7383:15;7379:29;7368:9;7364:45;7360:55;7352:63;;6736:685;;;;;;;;:::o;7426:277::-;7493:6;7546:2;7534:9;7525:7;7521:23;7517:32;7514:52;;;7562:1;7559;7552:12;7514:52;7594:9;7588:16;7647:5;7640:13;7633:21;7626:5;7623:32;7613:60;;7669:1;7666;7659:12;8606:250;8691:1;8701:113;8715:6;8712:1;8709:13;8701:113;;;8791:11;;;8785:18;8772:11;;;8765:39;8737:2;8730:10;8701:113;;;-1:-1:-1;;8848:1:50;8830:16;;8823:27;8606:250::o;8861:287::-;8990:3;9028:6;9022:13;9044:66;9103:6;9098:3;9091:4;9083:6;9079:17;9044:66;:::i;:::-;9126:16;;;;;8861:287;-1:-1:-1;;8861:287:50:o;9511:396::-;9660:2;9649:9;9642:21;9623:4;9692:6;9686:13;9735:6;9730:2;9719:9;9715:18;9708:34;9751:79;9823:6;9818:2;9807:9;9803:18;9798:2;9790:6;9786:15;9751:79;:::i;:::-;9891:2;9870:15;-1:-1:-1;;9866:29:50;9851:45;;;;9898:2;9847:54;;9511:396;-1:-1:-1;;9511:396:50:o"},"gasEstimates":{"creation":{"codeDepositCost":"850200","executionCost":"infinite","totalCost":"infinite"},"external":{"UPGRADE_PLUGIN_PERMISSION_ID()":"261","dao()":"2343","implementation()":"2414","notAnInitializer(address)":"infinite","pluginType()":"272","protocolVersion()":"infinite","proxiableUUID()":"infinite","setTarget(address)":"26112","state1()":"2362","supportsInterface(bytes4)":"560","target()":"2425","upgradeTo(address)":"infinite","upgradeToAndCall(address,bytes)":"infinite"}},"methodIdentifiers":{"UPGRADE_PLUGIN_PERMISSION_ID()":"c9c4bfca","dao()":"4162169f","implementation()":"5c60da1b","notAnInitializer(address)":"8883bbd7","pluginType()":"41de6830","protocolVersion()":"2ae9c600","proxiableUUID()":"52d1902d","setTarget(address)":"776d1a01","state1()":"6accab8c","supportsInterface(bytes4)":"01ffc9a7","target()":"d4b83992","upgradeTo(address)":"3659cfe6","upgradeToAndCall(address,bytes)":"4f1ef286"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"dao\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"name\":\"DaoUnauthorized\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousTarget\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newTarget\",\"type\":\"address\"}],\"name\":\"TargetSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"UPGRADE_PLUGIN_PERMISSION_ID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"dao\",\"outputs\":[{\"internalType\":\"contract IDAO\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IDAO\",\"name\":\"_dao\",\"type\":\"address\"}],\"name\":\"notAnInitializer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pluginType\",\"outputs\":[{\"internalType\":\"enum IPlugin.PluginType\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"protocolVersion\",\"outputs\":[{\"internalType\":\"uint8[3]\",\"name\":\"\",\"type\":\"uint8[3]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_target\",\"type\":\"address\"}],\"name\":\"setTarget\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"state1\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"target\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"upgradeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"DO NOT USE IN PRODUCTION!\",\"errors\":{\"DaoUnauthorized(address,address,address,bytes32)\":[{\"params\":{\"dao\":\"The associated DAO.\",\"permissionId\":\"The permission identifier.\",\"where\":\"The context in which the authorization reverted.\",\"who\":\"The address (EOA or contract) missing the permission.\"}}]},\"kind\":\"dev\",\"methods\":{\"dao()\":{\"returns\":{\"_0\":\"The DAO contract.\"}},\"implementation()\":{\"returns\":{\"_0\":\"The address of the implementation contract.\"}},\"protocolVersion()\":{\"details\":\"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\",\"returns\":{\"_0\":\"Returns the semantic Aragon OSx protocol version number.\"}},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"setTarget(address)\":{\"details\":\"Sets the target to a new target (`newTarget`).\"},\"supportsInterface(bytes4)\":{\"params\":{\"_interfaceId\":\"The ID of the interface.\"},\"returns\":{\"_0\":\"Returns `true` if the interface is supported.\"}},\"upgradeTo(address)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"},\"upgradeToAndCall(address,bytes)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"}},\"version\":1},\"userdoc\":{\"errors\":{\"DaoUnauthorized(address,address,address,bytes32)\":[{\"notice\":\"Thrown if a call is unauthorized in the associated DAO.\"}]},\"kind\":\"user\",\"methods\":{\"UPGRADE_PLUGIN_PERMISSION_ID()\":{\"notice\":\"The ID of the permission required to call the `_authorizeUpgrade` function.\"},\"dao()\":{\"notice\":\"Returns the DAO contract.\"},\"implementation()\":{\"notice\":\"Returns the address of the implementation contract in the [proxy storage slot](https://eips.ethereum.org/EIPS/eip-1967) slot the [UUPS proxy](https://eips.ethereum.org/EIPS/eip-1822) is pointing to.\"},\"pluginType()\":{\"notice\":\"Returns the plugin's type\"},\"protocolVersion()\":{\"notice\":\"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\"},\"setTarget(address)\":{\"notice\":\"Can only be called by the current owner. TODO\"},\"supportsInterface(bytes4)\":{\"notice\":\"Checks if an interface is supported by this or its parent contract.\"}},\"notice\":\"A mock upgradeable plugin missing an initializer function.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/mocks/plugin/PluginUUPSUpgradeableMock.sol\":\"PluginUUPSUpgradeableMockBad\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/interfaces/IERC1967Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (interfaces/IERC1967.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\\n *\\n * _Available since v4.8.3._\\n */\\ninterface IERC1967Upgradeable {\\n /**\\n * @dev Emitted when the implementation is upgraded.\\n */\\n event Upgraded(address indexed implementation);\\n\\n /**\\n * @dev Emitted when the admin account has changed.\\n */\\n event AdminChanged(address previousAdmin, address newAdmin);\\n\\n /**\\n * @dev Emitted when the beacon is changed.\\n */\\n event BeaconUpgraded(address indexed beacon);\\n}\\n\",\"keccak256\":\"0x47d6e06872b12e72c79d1b5eb55842f860b5fb1207b2317c2358d2766b950a7b\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822ProxiableUpgradeable {\\n /**\\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n * address.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy.\\n */\\n function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../beacon/IBeaconUpgradeable.sol\\\";\\nimport \\\"../../interfaces/IERC1967Upgradeable.sol\\\";\\nimport \\\"../../interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\nimport \\\"../../utils/StorageSlotUpgradeable.sol\\\";\\nimport {Initializable} from \\\"../utils/Initializable.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n */\\nabstract contract ERC1967UpgradeUpgradeable is Initializable, IERC1967Upgradeable {\\n // This is the keccak-256 hash of \\\"eip1967.proxy.rollback\\\" subtracted by 1\\n bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n /**\\n * @dev Storage slot with the address of the current implementation.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n function __ERC1967Upgrade_init() internal onlyInitializing {\\n }\\n\\n function __ERC1967Upgrade_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _getImplementation() internal view returns (address) {\\n return StorageSlotUpgradeable.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 implementation slot.\\n */\\n function _setImplementation(address newImplementation) private {\\n require(AddressUpgradeable.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n StorageSlotUpgradeable.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n }\\n\\n /**\\n * @dev Perform implementation upgrade\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeTo(address newImplementation) internal {\\n _setImplementation(newImplementation);\\n emit Upgraded(newImplementation);\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCall(address newImplementation, bytes memory data, bool forceCall) internal {\\n _upgradeTo(newImplementation);\\n if (data.length > 0 || forceCall) {\\n AddressUpgradeable.functionDelegateCall(newImplementation, data);\\n }\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCallUUPS(address newImplementation, bytes memory data, bool forceCall) internal {\\n // Upgrades from old implementations will perform a rollback test. This test requires the new\\n // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n // this special case will break upgrade paths from old UUPS implementation to new ones.\\n if (StorageSlotUpgradeable.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n _setImplementation(newImplementation);\\n } else {\\n try IERC1822ProxiableUpgradeable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n require(slot == _IMPLEMENTATION_SLOT, \\\"ERC1967Upgrade: unsupported proxiableUUID\\\");\\n } catch {\\n revert(\\\"ERC1967Upgrade: new implementation is not UUPS\\\");\\n }\\n _upgradeToAndCall(newImplementation, data, forceCall);\\n }\\n }\\n\\n /**\\n * @dev Storage slot with the admin of the contract.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _getAdmin() internal view returns (address) {\\n return StorageSlotUpgradeable.getAddressSlot(_ADMIN_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 admin slot.\\n */\\n function _setAdmin(address newAdmin) private {\\n require(newAdmin != address(0), \\\"ERC1967: new admin is the zero address\\\");\\n StorageSlotUpgradeable.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n */\\n function _changeAdmin(address newAdmin) internal {\\n emit AdminChanged(_getAdmin(), newAdmin);\\n _setAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\\n */\\n bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n /**\\n * @dev Returns the current beacon.\\n */\\n function _getBeacon() internal view returns (address) {\\n return StorageSlotUpgradeable.getAddressSlot(_BEACON_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new beacon in the EIP1967 beacon slot.\\n */\\n function _setBeacon(address newBeacon) private {\\n require(AddressUpgradeable.isContract(newBeacon), \\\"ERC1967: new beacon is not a contract\\\");\\n require(\\n AddressUpgradeable.isContract(IBeaconUpgradeable(newBeacon).implementation()),\\n \\\"ERC1967: beacon implementation is not a contract\\\"\\n );\\n StorageSlotUpgradeable.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n }\\n\\n /**\\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n *\\n * Emits a {BeaconUpgraded} event.\\n */\\n function _upgradeBeaconToAndCall(address newBeacon, bytes memory data, bool forceCall) internal {\\n _setBeacon(newBeacon);\\n emit BeaconUpgraded(newBeacon);\\n if (data.length > 0 || forceCall) {\\n AddressUpgradeable.functionDelegateCall(IBeaconUpgradeable(newBeacon).implementation(), data);\\n }\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x7795808e3899c805254e3ae58074b20f799b466e3f43e057e47bedee5fb771f8\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeaconUpgradeable {\\n /**\\n * @dev Must return an address that can be used as a delegate call target.\\n *\\n * {BeaconProxy} will check that this address is a contract.\\n */\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/UUPSUpgradeable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport \\\"../ERC1967/ERC1967UpgradeUpgradeable.sol\\\";\\nimport {Initializable} from \\\"./Initializable.sol\\\";\\n\\n/**\\n * @dev An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an\\n * {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy.\\n *\\n * A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is\\n * reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing\\n * `UUPSUpgradeable` with a custom implementation of upgrades.\\n *\\n * The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism.\\n *\\n * _Available since v4.1._\\n */\\nabstract contract UUPSUpgradeable is Initializable, IERC1822ProxiableUpgradeable, ERC1967UpgradeUpgradeable {\\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable state-variable-assignment\\n address private immutable __self = address(this);\\n\\n /**\\n * @dev Check that the execution is being performed through a delegatecall call and that the execution context is\\n * a proxy contract with an implementation (as defined in ERC1967) pointing to self. This should only be the case\\n * for UUPS and transparent proxies that are using the current contract as their implementation. Execution of a\\n * function through ERC1167 minimal proxies (clones) would not normally pass this test, but is not guaranteed to\\n * fail.\\n */\\n modifier onlyProxy() {\\n require(address(this) != __self, \\\"Function must be called through delegatecall\\\");\\n require(_getImplementation() == __self, \\\"Function must be called through active proxy\\\");\\n _;\\n }\\n\\n /**\\n * @dev Check that the execution is not being performed through a delegate call. This allows a function to be\\n * callable on the implementing contract but not through proxies.\\n */\\n modifier notDelegated() {\\n require(address(this) == __self, \\\"UUPSUpgradeable: must not be called through delegatecall\\\");\\n _;\\n }\\n\\n function __UUPSUpgradeable_init() internal onlyInitializing {\\n }\\n\\n function __UUPSUpgradeable_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the\\n * implementation. It is used to validate the implementation's compatibility when performing an upgrade.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\\n */\\n function proxiableUUID() external view virtual override notDelegated returns (bytes32) {\\n return _IMPLEMENTATION_SLOT;\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy to `newImplementation`.\\n *\\n * Calls {_authorizeUpgrade}.\\n *\\n * Emits an {Upgraded} event.\\n *\\n * @custom:oz-upgrades-unsafe-allow-reachable delegatecall\\n */\\n function upgradeTo(address newImplementation) public virtual onlyProxy {\\n _authorizeUpgrade(newImplementation);\\n _upgradeToAndCallUUPS(newImplementation, new bytes(0), false);\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call\\n * encoded in `data`.\\n *\\n * Calls {_authorizeUpgrade}.\\n *\\n * Emits an {Upgraded} event.\\n *\\n * @custom:oz-upgrades-unsafe-allow-reachable delegatecall\\n */\\n function upgradeToAndCall(address newImplementation, bytes memory data) public payable virtual onlyProxy {\\n _authorizeUpgrade(newImplementation);\\n _upgradeToAndCallUUPS(newImplementation, data, true);\\n }\\n\\n /**\\n * @dev Function that should revert when `msg.sender` is not authorized to upgrade the contract. Called by\\n * {upgradeTo} and {upgradeToAndCall}.\\n *\\n * Normally, this function will use an xref:access.adoc[access control] modifier such as {Ownable-onlyOwner}.\\n *\\n * ```solidity\\n * function _authorizeUpgrade(address) internal override onlyOwner {}\\n * ```\\n */\\n function _authorizeUpgrade(address newImplementation) internal virtual;\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0xefb41f5c1a00249b7a99f0782f8c557865605426a3fb6e5fe9ae334293ae4f33\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n function __Context_init() internal onlyInitializing {\\n }\\n\\n function __Context_init_unchained() internal onlyInitializing {\\n }\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n function _contextSuffixLength() internal view virtual returns (uint256) {\\n return 0;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x75097e35253e7fb282ee4d7f27a80eaacfa759923185bf17302a89cbc059c5ef\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/StorageSlot.sol)\\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```solidity\\n * contract ERC1967 {\\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n * function _getImplementation() internal view returns (address) {\\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n * }\\n *\\n * function _setImplementation(address newImplementation) internal {\\n * require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n * }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._\\n * _Available since v4.9 for `string`, `bytes`._\\n */\\nlibrary StorageSlotUpgradeable {\\n struct AddressSlot {\\n address value;\\n }\\n\\n struct BooleanSlot {\\n bool value;\\n }\\n\\n struct Bytes32Slot {\\n bytes32 value;\\n }\\n\\n struct Uint256Slot {\\n uint256 value;\\n }\\n\\n struct StringSlot {\\n string value;\\n }\\n\\n struct BytesSlot {\\n bytes value;\\n }\\n\\n /**\\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n */\\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n */\\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n */\\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n */\\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` with member `value` located at `slot`.\\n */\\n function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\\n */\\n function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` with member `value` located at `slot`.\\n */\\n function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\\n */\\n function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n}\\n\",\"keccak256\":\"0x07ac95acad040f1fb1f6120dd0aa5f702db69446e95f82613721879d30de0908\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165Upgradeable.sol\\\";\\nimport {Initializable} from \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165Upgradeable is Initializable, IERC165Upgradeable {\\n function __ERC165_init() internal onlyInitializing {\\n }\\n\\n function __ERC165_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165Upgradeable).interfaceId;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0xd90d7723512df65ae417adaf0801042940f0dabd60039ceeaffe34aa5b238da1\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165Upgradeable {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\"},\"src/dao/IDAO.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IDAO\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for DAOs within the Aragon App DAO framework.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IDAO {\\n /// @notice The action struct to be consumed by the DAO's `execute` function resulting in an external call.\\n /// @param to The address to call.\\n /// @param value The native token value to be sent with the call.\\n /// @param data The bytes-encoded function selector and calldata for the call.\\n struct Action {\\n address to;\\n uint256 value;\\n bytes data;\\n }\\n\\n /// @notice Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\\n /// @param _where The address of the contract.\\n /// @param _who The address of a EOA or contract to give the permissions.\\n /// @param _permissionId The permission identifier.\\n /// @param _data The optional data passed to the `PermissionCondition` registered.\\n /// @return Returns true if the address has permission, false if not.\\n function hasPermission(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes memory _data\\n ) external view returns (bool);\\n\\n /// @notice Updates the DAO metadata (e.g., an IPFS hash).\\n /// @param _metadata The IPFS hash of the new metadata object.\\n function setMetadata(bytes calldata _metadata) external;\\n\\n /// @notice Emitted when the DAO metadata is updated.\\n /// @param metadata The IPFS hash of the new metadata object.\\n event MetadataSet(bytes metadata);\\n\\n /// @notice Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted.\\n /// @param _callId The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce.\\n /// @param _actions The array of actions.\\n /// @param _allowFailureMap A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @return The array of results obtained from the executed actions in `bytes`.\\n /// @return The resulting failure map containing the actions have actually failed.\\n function execute(\\n bytes32 _callId,\\n Action[] memory _actions,\\n uint256 _allowFailureMap\\n ) external returns (bytes[] memory, uint256);\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param actor The address of the caller.\\n /// @param callId The ID of the call.\\n /// @param actions The array of actions executed.\\n /// @param allowFailureMap The allow failure map encoding which actions are allowed to fail.\\n /// @param failureMap The failure map encoding which actions have failed.\\n /// @param execResults The array with the results of the executed actions.\\n /// @dev The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce.\\n event Executed(\\n address indexed actor,\\n bytes32 callId,\\n Action[] actions,\\n uint256 allowFailureMap,\\n uint256 failureMap,\\n bytes[] execResults\\n );\\n\\n /// @notice Emitted when a standard callback is registered.\\n /// @param interfaceId The ID of the interface.\\n /// @param callbackSelector The selector of the callback function.\\n /// @param magicNumber The magic number to be registered for the callback function selector.\\n event StandardCallbackRegistered(\\n bytes4 interfaceId,\\n bytes4 callbackSelector,\\n bytes4 magicNumber\\n );\\n\\n /// @notice Deposits (native) tokens to the DAO contract with a reference string.\\n /// @param _token The address of the token or address(0) in case of the native token.\\n /// @param _amount The amount of tokens to deposit.\\n /// @param _reference The reference describing the deposit reason.\\n function deposit(address _token, uint256 _amount, string calldata _reference) external payable;\\n\\n /// @notice Emitted when a token deposit has been made to the DAO.\\n /// @param sender The address of the sender.\\n /// @param token The address of the deposited token.\\n /// @param amount The amount of tokens deposited.\\n /// @param _reference The reference describing the deposit reason.\\n event Deposited(\\n address indexed sender,\\n address indexed token,\\n uint256 amount,\\n string _reference\\n );\\n\\n /// @notice Emitted when a native token deposit has been made to the DAO.\\n /// @dev This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).\\n /// @param sender The address of the sender.\\n /// @param amount The amount of native tokens deposited.\\n event NativeTokenDeposited(address sender, uint256 amount);\\n\\n /// @notice Setter for the trusted forwarder verifying the meta transaction.\\n /// @param _trustedForwarder The trusted forwarder address.\\n function setTrustedForwarder(address _trustedForwarder) external;\\n\\n /// @notice Getter for the trusted forwarder verifying the meta transaction.\\n /// @return The trusted forwarder address.\\n function getTrustedForwarder() external view returns (address);\\n\\n /// @notice Emitted when a new TrustedForwarder is set on the DAO.\\n /// @param forwarder the new forwarder address.\\n event TrustedForwarderSet(address forwarder);\\n\\n /// @notice Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\\n /// @param _hash The hash of the data to be signed.\\n /// @param _signature The signature byte array associated with `_hash`.\\n /// @return Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not.\\n function isValidSignature(bytes32 _hash, bytes memory _signature) external returns (bytes4);\\n\\n /// @notice Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\\n /// @param _interfaceId The ID of the interface.\\n /// @param _callbackSelector The selector of the callback function.\\n /// @param _magicNumber The magic number to be registered for the function signature.\\n function registerStandardCallback(\\n bytes4 _interfaceId,\\n bytes4 _callbackSelector,\\n bytes4 _magicNumber\\n ) external;\\n\\n /// @notice Removed function being left here to not corrupt the IDAO interface ID. Any call will revert.\\n /// @dev Introduced in v1.0.0. Removed in v1.4.0.\\n function setSignatureValidator(address) external;\\n}\\n\",\"keccak256\":\"0xb7f615523c26de042edce98731c658f44a1edb2464387ac1b642c4c69f57128e\",\"license\":\"AGPL-3.0-or-later\"},\"src/mocks/plugin/PluginUUPSUpgradeableMock.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\n/* solhint-disable one-contract-per-file */\\npragma solidity ^0.8.8;\\n\\nimport {PluginUUPSUpgradeable} from \\\"../../plugin/PluginUUPSUpgradeable.sol\\\";\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice A mock upgradeable plugin to be deployed via the UUPS proxy pattern.\\n/// v1.1 (Release 1, Build 1)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableMockBuild1 is PluginUUPSUpgradeable {\\n uint256 public state1;\\n\\n function initialize(IDAO _dao) external initializer {\\n __PluginUUPSUpgradeable_init(_dao);\\n state1 = 1;\\n }\\n}\\n\\n/// @notice A mock upgradeable plugin to be deployed via the UUPS proxy pattern.\\n/// v1.1 (Release 1, Build 2)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableMockBuild2 is PluginUUPSUpgradeable {\\n uint256 public state1;\\n uint256 public state2;\\n\\n function initialize(IDAO _dao) external reinitializer(2) {\\n __PluginUUPSUpgradeable_init(_dao);\\n state1 = 1;\\n state2 = 2;\\n }\\n\\n function initializeFrom(uint16 _previousBuild) external reinitializer(2) {\\n if (_previousBuild < 2) {\\n state2 = 2;\\n }\\n }\\n}\\n\\n/// @notice A mock upgradeable plugin to be deployed via the UUPS proxy pattern.\\n/// v1.1 (Release 1, Build 3)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableMockBuild3 is PluginUUPSUpgradeable {\\n uint256 public state1;\\n uint256 public state2;\\n uint256 public state3;\\n\\n function initialize(IDAO _dao) external reinitializer(3) {\\n __PluginUUPSUpgradeable_init(_dao);\\n state1 = 1;\\n state2 = 2;\\n state3 = 3;\\n }\\n\\n function initializeFrom(uint16 _previousBuild) external reinitializer(3) {\\n if (_previousBuild < 2) {\\n state2 = 2;\\n }\\n if (_previousBuild < 3) {\\n state3 = 3;\\n }\\n }\\n}\\n\\n/// @notice A mock upgradeable plugin missing an initializer function.\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableMockBad is PluginUUPSUpgradeable {\\n uint256 public state1;\\n\\n function notAnInitializer(IDAO _dao) external {\\n __PluginUUPSUpgradeable_init(_dao);\\n state1 = 1;\\n }\\n}\\n\",\"keccak256\":\"0x2917df3b1da0de27f58cf531afeaa4e6c4285717247cbdd9ecc7880ae5cb9cb0\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/DaoAuthorizableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ContextUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\\\";\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\nimport {_auth} from \\\"./auth.sol\\\";\\n\\n/// @title DaoAuthorizableUpgradeable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract contract providing a meta-transaction compatible modifier for upgradeable or cloneable contracts to authorize function calls through an associated DAO.\\n/// @dev Make sure to call `__DaoAuthorizableUpgradeable_init` during initialization of the inheriting contract.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract DaoAuthorizableUpgradeable is ContextUpgradeable {\\n /// @notice The associated DAO managing the permissions of inheriting contracts.\\n IDAO private dao_;\\n\\n /// @notice Initializes the contract by setting the associated DAO.\\n /// @param _dao The associated DAO address.\\n // solhint-disable-next-line func-name-mixedcase\\n function __DaoAuthorizableUpgradeable_init(IDAO _dao) internal onlyInitializing {\\n dao_ = _dao;\\n }\\n\\n /// @notice Returns the DAO contract.\\n /// @return The DAO contract.\\n function dao() public view returns (IDAO) {\\n return dao_;\\n }\\n\\n /// @notice A modifier to make functions on inheriting contracts authorized. Permissions to call the function are checked through the associated DAO's permission manager.\\n /// @param _permissionId The permission identifier required to call the method this modifier is applied to.\\n modifier auth(bytes32 _permissionId) {\\n _auth(dao_, address(this), _msgSender(), _permissionId, _msgData());\\n _;\\n }\\n\\n /// @notice This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain (see [OpenZeppelin's guide about storage gaps](https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps)).\\n uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0x7fac6b01b037ba1cb9d6a22d3f43b0785037dcf496ffb672434d9bf7227d2585\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/auth.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice Thrown if a call is unauthorized in the associated DAO.\\n/// @param dao The associated DAO.\\n/// @param where The context in which the authorization reverted.\\n/// @param who The address (EOA or contract) missing the permission.\\n/// @param permissionId The permission identifier.\\nerror DaoUnauthorized(address dao, address where, address who, bytes32 permissionId);\\n\\n/// @notice A free function checking if a caller is granted permissions on a target contract via a permission identifier that redirects the approval to a `PermissionCondition` if this was specified in the setup.\\n/// @param _where The address of the target contract for which `who` receives permission.\\n/// @param _who The address (EOA or contract) owning the permission.\\n/// @param _permissionId The permission identifier.\\n/// @param _data The optional data passed to the `PermissionCondition` registered.\\n/// @custom:security-contact sirt@aragon.org\\nfunction _auth(\\n IDAO _dao,\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes calldata _data\\n) view {\\n if (!_dao.hasPermission(_where, _who, _permissionId, _data))\\n revert DaoUnauthorized({\\n dao: address(_dao),\\n where: _where,\\n who: _who,\\n permissionId: _permissionId\\n });\\n}\\n\",\"keccak256\":\"0x878764b4f87fe0651fb3798fb9cb87c952f8c6caf6ae79c7f09de84df6c00298\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/IPlugin.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IPlugin\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the traits of a plugin.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IPlugin {\\n enum PluginType {\\n UUPS,\\n Cloneable,\\n Constructable\\n }\\n\\n /// @notice Returns the plugin's type\\n function pluginType() external view returns (PluginType);\\n}\\n\",\"keccak256\":\"0xc57cd0d10b6380ab7f54c713a509e88fd8f4ad9288313a0e8e12b8887817ddfe\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/PluginUUPSUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {UUPSUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\\\";\\nimport {IERC1822ProxiableUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport {ERC165Upgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\\\";\\n\\nimport {IProtocolVersion} from \\\"../utils/versioning/IProtocolVersion.sol\\\";\\nimport {ProtocolVersion} from \\\"../utils/versioning/ProtocolVersion.sol\\\";\\nimport {DaoAuthorizableUpgradeable} from \\\"../permission/auth/DaoAuthorizableUpgradeable.sol\\\";\\nimport {IDAO} from \\\"../dao/IDAO.sol\\\";\\nimport {IPlugin} from \\\"./IPlugin.sol\\\";\\n\\n/// @title PluginUUPSUpgradeable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract, upgradeable contract to inherit from when creating a plugin being deployed via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract PluginUUPSUpgradeable is\\n IPlugin,\\n ERC165Upgradeable,\\n UUPSUpgradeable,\\n DaoAuthorizableUpgradeable,\\n ProtocolVersion\\n{\\n // NOTE: When adding new state variables to the contract, the size of `_gap` has to be adapted below as well.\\n address public target;\\n\\n /// @dev Emitted each time the Target is set.\\n event TargetSet(address indexed previousTarget, address indexed newTarget);\\n\\n /// @notice Disables the initializers on the implementation contract to prevent it from being left uninitialized.\\n /// @custom:oz-upgrades-unsafe-allow constructor\\n constructor() {\\n _disableInitializers();\\n }\\n\\n /// @inheritdoc IPlugin\\n function pluginType() public pure override returns (PluginType) {\\n return PluginType.UUPS;\\n }\\n\\n /// @notice The ID of the permission required to call the `_authorizeUpgrade` function.\\n bytes32 public constant UPGRADE_PLUGIN_PERMISSION_ID = keccak256(\\\"UPGRADE_PLUGIN_PERMISSION\\\");\\n\\n /// @notice Initializes the plugin by storing the associated DAO.\\n /// @param _dao The DAO contract.\\n // solhint-disable-next-line func-name-mixedcase\\n function __PluginUUPSUpgradeable_init(IDAO _dao) internal virtual onlyInitializing {\\n __DaoAuthorizableUpgradeable_init(_dao);\\n }\\n\\n /// @dev Sets the target to a new target (`newTarget`).\\n /// @notice Can only be called by the current owner. TODO\\n function setTarget(address _target) public {\\n address previousTarget = target;\\n target = _target;\\n emit TargetSet(previousTarget, _target);\\n }\\n\\n /// @notice Checks if an interface is supported by this or its parent contract.\\n /// @param _interfaceId The ID of the interface.\\n /// @return Returns `true` if the interface is supported.\\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\\n return\\n _interfaceId == type(IPlugin).interfaceId ||\\n _interfaceId == type(IProtocolVersion).interfaceId ||\\n _interfaceId == type(IERC1822ProxiableUpgradeable).interfaceId ||\\n super.supportsInterface(_interfaceId);\\n }\\n\\n /// @notice Returns the address of the implementation contract in the [proxy storage slot](https://eips.ethereum.org/EIPS/eip-1967) slot the [UUPS proxy](https://eips.ethereum.org/EIPS/eip-1822) is pointing to.\\n /// @return The address of the implementation contract.\\n function implementation() public view returns (address) {\\n return _getImplementation();\\n }\\n\\n /// @notice Forwards the actions to the currently set `target` for the execution.\\n /// @param _callId Identifier for this execution.\\n /// @param _actions actions that will be eventually called.\\n /// @param _allowFailureMap Bitmap-encoded number. TODO:\\n /// @return execResults address of the implementation contract.\\n /// @return failureMap address of the implementation contract.\\n function _execute(\\n bytes32 _callId,\\n IDAO.Action[] calldata _actions,\\n uint256 _allowFailureMap\\n ) internal virtual returns (bytes[] memory execResults, uint256 failureMap) {\\n (execResults, failureMap) = IDAO(target).execute(_callId, _actions, _allowFailureMap);\\n }\\n\\n /// @notice Forwards the actions to the `target` for the execution.\\n /// @param _target Forwards the actions to the specific target.\\n /// @param _callId Identifier for this execution.\\n /// @param _actions actions that will be eventually called.\\n /// @param _allowFailureMap Bitmap-encoded number. TODO:\\n /// @return execResults address of the implementation contract.\\n /// @return failureMap address of the implementation contract.\\n function _execute(\\n address _target,\\n bytes32 _callId,\\n IDAO.Action[] calldata _actions,\\n uint256 _allowFailureMap\\n ) internal virtual returns (bytes[] memory execResults, uint256 failureMap) {\\n (execResults, failureMap) = IDAO(_target).execute(_callId, _actions, _allowFailureMap);\\n }\\n\\n /// @notice Internal method authorizing the upgrade of the contract via the [upgradeability mechanism for UUPS proxies](https://docs.openzeppelin.com/contracts/4.x/api/proxy#UUPSUpgradeable) (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\\n /// @dev The caller must have the `UPGRADE_PLUGIN_PERMISSION_ID` permission.\\n function _authorizeUpgrade(\\n address\\n )\\n internal\\n virtual\\n override\\n auth(UPGRADE_PLUGIN_PERMISSION_ID)\\n // solhint-disable-next-line no-empty-blocks\\n {\\n\\n }\\n\\n /// @notice This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain (see [OpenZeppelin's guide about storage gaps](https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps)).\\n uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0xce1d0126b3ae8c8afc887fba9f49b1cc35f84f1c1d5bf4cadee330c7ae15014f\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/IProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IProtocolVersion\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the semantic Aragon OSx protocol version number.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IProtocolVersion {\\n /// @notice Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\\n /// @return _version Returns the semantic Aragon OSx protocol version number.\\n /// @dev This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\\n function protocolVersion() external view returns (uint8[3] memory _version);\\n}\\n\",\"keccak256\":\"0x00a4da654d21dc1bdadbdc8bd54bb86c378c56f85e461ccc31303628ea621361\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/ProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IProtocolVersion} from \\\"./IProtocolVersion.sol\\\";\\n\\n/// @title ProtocolVersion\\n/// @author Aragon X - 2023\\n/// @notice An abstract, stateless, non-upgradeable contract providing the current Aragon OSx protocol version number.\\n/// @dev Do not add any new variables to this contract that would shift down storage in the inheritance chain.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract ProtocolVersion is IProtocolVersion {\\n // IMPORTANT: Do not add any storage variable, see the above notice.\\n\\n /// @inheritdoc IProtocolVersion\\n function protocolVersion() public pure returns (uint8[3] memory) {\\n return [1, 4, 0];\\n }\\n}\\n\",\"keccak256\":\"0x3975c937be935f687c6b6b8f379071232681e98cf04b175d72781b819ea52bdb\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[{"astId":372,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBad","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":375,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBad","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":1280,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBad","label":"__gap","offset":0,"slot":"1","type":"t_array(t_uint256)50_storage"},{"astId":354,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBad","label":"__gap","offset":0,"slot":"51","type":"t_array(t_uint256)50_storage"},{"astId":670,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBad","label":"__gap","offset":0,"slot":"101","type":"t_array(t_uint256)50_storage"},{"astId":1051,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBad","label":"__gap","offset":0,"slot":"151","type":"t_array(t_uint256)50_storage"},{"astId":3887,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBad","label":"dao_","offset":0,"slot":"201","type":"t_contract(IDAO)2538"},{"astId":3936,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBad","label":"__gap","offset":0,"slot":"202","type":"t_array(t_uint256)49_storage"},{"astId":4382,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBad","label":"target","offset":0,"slot":"251","type":"t_address"},{"astId":4575,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBad","label":"__gap","offset":0,"slot":"252","type":"t_array(t_uint256)49_storage"},{"astId":3253,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBad","label":"state1","offset":0,"slot":"301","type":"t_uint256"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_array(t_uint256)49_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[49]","numberOfBytes":"1568"},"t_array(t_uint256)50_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[50]","numberOfBytes":"1600"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_contract(IDAO)2538":{"encoding":"inplace","label":"contract IDAO","numberOfBytes":"20"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"errors":{"DaoUnauthorized(address,address,address,bytes32)":[{"notice":"Thrown if a call is unauthorized in the associated DAO."}]},"kind":"user","methods":{"UPGRADE_PLUGIN_PERMISSION_ID()":{"notice":"The ID of the permission required to call the `_authorizeUpgrade` function."},"dao()":{"notice":"Returns the DAO contract."},"implementation()":{"notice":"Returns the address of the implementation contract in the [proxy storage slot](https://eips.ethereum.org/EIPS/eip-1967) slot the [UUPS proxy](https://eips.ethereum.org/EIPS/eip-1822) is pointing to."},"pluginType()":{"notice":"Returns the plugin's type"},"protocolVersion()":{"notice":"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with."},"setTarget(address)":{"notice":"Can only be called by the current owner. TODO"},"supportsInterface(bytes4)":{"notice":"Checks if an interface is supported by this or its parent contract."}},"notice":"A mock upgradeable plugin missing an initializer function.","version":1}},"PluginUUPSUpgradeableMockBuild1":{"abi":[{"inputs":[{"internalType":"address","name":"dao","type":"address"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"name":"DaoUnauthorized","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"beacon","type":"address"}],"name":"BeaconUpgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousTarget","type":"address"},{"indexed":true,"internalType":"address","name":"newTarget","type":"address"}],"name":"TargetSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"inputs":[],"name":"UPGRADE_PLUGIN_PERMISSION_ID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dao","outputs":[{"internalType":"contract IDAO","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IDAO","name":"_dao","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pluginType","outputs":[{"internalType":"enum IPlugin.PluginType","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"protocolVersion","outputs":[{"internalType":"uint8[3]","name":"","type":"uint8[3]"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_target","type":"address"}],"name":"setTarget","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"state1","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"target","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"}],"name":"upgradeTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"}],"devdoc":{"details":"DO NOT USE IN PRODUCTION!","errors":{"DaoUnauthorized(address,address,address,bytes32)":[{"params":{"dao":"The associated DAO.","permissionId":"The permission identifier.","where":"The context in which the authorization reverted.","who":"The address (EOA or contract) missing the permission."}}]},"kind":"dev","methods":{"dao()":{"returns":{"_0":"The DAO contract."}},"implementation()":{"returns":{"_0":"The address of the implementation contract."}},"protocolVersion()":{"details":"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.","returns":{"_0":"Returns the semantic Aragon OSx protocol version number."}},"proxiableUUID()":{"details":"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier."},"setTarget(address)":{"details":"Sets the target to a new target (`newTarget`)."},"supportsInterface(bytes4)":{"params":{"_interfaceId":"The ID of the interface."},"returns":{"_0":"Returns `true` if the interface is supported."}},"upgradeTo(address)":{"custom:oz-upgrades-unsafe-allow-reachable":"delegatecall","details":"Upgrade the implementation of the proxy to `newImplementation`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."},"upgradeToAndCall(address,bytes)":{"custom:oz-upgrades-unsafe-allow-reachable":"delegatecall","details":"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."}},"version":1},"evm":{"bytecode":{"functionDebugData":{"@_4397":{"entryPoint":null,"id":4397,"parameterSlots":0,"returnSlots":0},"@_disableInitializers_515":{"entryPoint":34,"id":515,"parameterSlots":0,"returnSlots":0},"abi_encode_tuple_t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:608:50","statements":[{"nodeType":"YulBlock","src":"6:3:50","statements":[]},{"body":{"nodeType":"YulBlock","src":"188:229:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"205:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"216:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"198:6:50"},"nodeType":"YulFunctionCall","src":"198:21:50"},"nodeType":"YulExpressionStatement","src":"198:21:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"239:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"250:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"235:3:50"},"nodeType":"YulFunctionCall","src":"235:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"255:2:50","type":"","value":"39"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"228:6:50"},"nodeType":"YulFunctionCall","src":"228:30:50"},"nodeType":"YulExpressionStatement","src":"228:30:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"278:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"289:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"274:3:50"},"nodeType":"YulFunctionCall","src":"274:18:50"},{"hexValue":"496e697469616c697a61626c653a20636f6e747261637420697320696e697469","kind":"string","nodeType":"YulLiteral","src":"294:34:50","type":"","value":"Initializable: contract is initi"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"267:6:50"},"nodeType":"YulFunctionCall","src":"267:62:50"},"nodeType":"YulExpressionStatement","src":"267:62:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"349:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"360:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"345:3:50"},"nodeType":"YulFunctionCall","src":"345:18:50"},{"hexValue":"616c697a696e67","kind":"string","nodeType":"YulLiteral","src":"365:9:50","type":"","value":"alizing"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"338:6:50"},"nodeType":"YulFunctionCall","src":"338:37:50"},"nodeType":"YulExpressionStatement","src":"338:37:50"},{"nodeType":"YulAssignment","src":"384:27:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"396:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"407:3:50","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"392:3:50"},"nodeType":"YulFunctionCall","src":"392:19:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"384:4:50"}]}]},"name":"abi_encode_tuple_t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"165:9:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"179:4:50","type":""}],"src":"14:403:50"},{"body":{"nodeType":"YulBlock","src":"519:87:50","statements":[{"nodeType":"YulAssignment","src":"529:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"541:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"552:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"537:3:50"},"nodeType":"YulFunctionCall","src":"537:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"529:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"571:9:50"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"586:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"594:4:50","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"582:3:50"},"nodeType":"YulFunctionCall","src":"582:17:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"564:6:50"},"nodeType":"YulFunctionCall","src":"564:36:50"},"nodeType":"YulExpressionStatement","src":"564:36:50"}]},"name":"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"488:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"499:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"510:4:50","type":""}],"src":"422:184:50"}]},"contents":"{\n { }\n function abi_encode_tuple_t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 39)\n mstore(add(headStart, 64), \"Initializable: contract is initi\")\n mstore(add(headStart, 96), \"alizing\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xff))\n }\n}","id":50,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60a06040523060805234801561001457600080fd5b5061001d610022565b6100e1565b600054610100900460ff161561008e5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116146100df576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6080516111b061011860003960008181610334015281816103be015281816104b401528181610539015261062301526111b06000f3fe6080604052600436106100d25760003560e01c806352d1902d1161007f578063776d1a0111610059578063776d1a0114610200578063c4d66de814610220578063c9c4bfca14610240578063d4b839921461027457600080fd5b806352d1902d146101b15780635c60da1b146101d45780636accab8c146101e957600080fd5b80634162169f116100b05780634162169f1461015057806341de6830146101825780634f1ef2861461019e57600080fd5b806301ffc9a7146100d75780632ae9c6001461010c5780633659cfe61461012e575b600080fd5b3480156100e357600080fd5b506100f76100f2366004610ee8565b610294565b60405190151581526020015b60405180910390f35b34801561011857600080fd5b50610121610300565b6040516101039190610f12565b34801561013a57600080fd5b5061014e610149366004610f5b565b61032a565b005b34801561015c57600080fd5b5060c9546001600160a01b03165b6040516001600160a01b039091168152602001610103565b34801561018e57600080fd5b5060006040516101039190610f78565b61014e6101ac366004610fb6565b6104aa565b3480156101bd57600080fd5b506101c6610616565b604051908152602001610103565b3480156101e057600080fd5b5061016a6106db565b3480156101f557600080fd5b506101c661012d5481565b34801561020c57600080fd5b5061014e61021b366004610f5b565b610713565b34801561022c57600080fd5b5061014e61023b366004610f5b565b610772565b34801561024c57600080fd5b506101c67f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f581565b34801561028057600080fd5b5060fb5461016a906001600160a01b031681565b60006001600160e01b0319821663041de68360e41b14806102c457506001600160e01b03198216621574e360e91b145b806102df57506001600160e01b031982166352d1902d60e01b145b806102fa57506301ffc9a760e01b6001600160e01b03198316145b92915050565b610308610eca565b5060408051606081018252600181526004602082015260009181019190915290565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036103bc5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b60648201526084015b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166104177f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b0316146104825760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b60648201526084016103b3565b61048b81610899565b604080516000808252602082019092526104a7918391906108d6565b50565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036105375760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b60648201526084016103b3565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166105927f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b0316146105fd5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b60648201526084016103b3565b61060682610899565b610612828260016108d6565b5050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106b65760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016103b3565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b600061070e7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b60fb80546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d690600090a35050565b600054610100900460ff16158080156107925750600054600160ff909116105b806107ac5750303b1580156107ac575060005460ff166001145b61081e5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016103b3565b6000805460ff191660011790558015610841576000805461ff0019166101001790555b61084a82610a7b565b600161012d558015610612576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b60c9547f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f590610612906001600160a01b0316303384600036610aef565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561090e5761090983610bab565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610968575060408051601f3d908101601f191682019092526109659181019061107a565b60015b6109da5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201527f6f6e206973206e6f74205555505300000000000000000000000000000000000060648201526084016103b3565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114610a6f5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f7860448201527f6961626c6555554944000000000000000000000000000000000000000000000060648201526084016103b3565b50610909838383610c76565b600054610100900460ff16610ae65760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103b3565b6104a781610ca1565b604051637ef7c88360e11b81526001600160a01b0387169063fdef910690610b239088908890889088908890600401611093565b602060405180830381865afa158015610b40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6491906110e7565b610ba357604051630cb6f8ed60e21b81526001600160a01b038088166004830152808716602483015285166044820152606481018490526084016103b3565b505050505050565b6001600160a01b0381163b610c285760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e74726163740000000000000000000000000000000000000060648201526084016103b3565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610c7f83610d3b565b600082511180610c8c5750805b1561090957610c9b8383610d7b565b50505050565b600054610100900460ff16610d0c5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103b3565b60c9805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610d4481610bab565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060610da0838360405180606001604052806027815260200161117d60279139610da7565b9392505050565b6060600080856001600160a01b031685604051610dc4919061112d565b600060405180830381855af49150503d8060008114610dff576040519150601f19603f3d011682016040523d82523d6000602084013e610e04565b606091505b5091509150610e1586838387610e1f565b9695505050505050565b60608315610e8e578251600003610e87576001600160a01b0385163b610e875760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016103b3565b5081610e98565b610e988383610ea0565b949350505050565b815115610eb05781518083602001fd5b8060405162461bcd60e51b81526004016103b39190611149565b60405180606001604052806003906020820280368337509192915050565b600060208284031215610efa57600080fd5b81356001600160e01b031981168114610da057600080fd5b60608101818360005b6003811015610f3d57815160ff16835260209283019290910190600101610f1b565b50505092915050565b6001600160a01b03811681146104a757600080fd5b600060208284031215610f6d57600080fd5b8135610da081610f46565b6020810160038310610f9a57634e487b7160e01b600052602160045260246000fd5b91905290565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215610fc957600080fd5b8235610fd481610f46565b9150602083013567ffffffffffffffff80821115610ff157600080fd5b818501915085601f83011261100557600080fd5b81358181111561101757611017610fa0565b604051601f8201601f19908116603f0116810190838211818310171561103f5761103f610fa0565b8160405282815288602084870101111561105857600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60006020828403121561108c57600080fd5b5051919050565b60006001600160a01b03808816835280871660208401525084604083015260806060830152826080830152828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b6000602082840312156110f957600080fd5b81518015158114610da057600080fd5b60005b8381101561112457818101518382015260200161110c565b50506000910152565b6000825161113f818460208701611109565b9190910192915050565b6020815260008251806020840152611168816040850160208701611109565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a","opcodes":"PUSH1 0xA0 PUSH1 0x40 MSTORE ADDRESS PUSH1 0x80 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x14 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1D PUSH2 0x22 JUMP JUMPDEST PUSH2 0xE1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x8E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x27 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320696E697469 PUSH1 0x44 DUP3 ADD MSTORE PUSH7 0x616C697A696E67 PUSH1 0xC8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xFF SWAP1 DUP2 AND EQ PUSH2 0xDF JUMPI PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH2 0x11B0 PUSH2 0x118 PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH2 0x334 ADD MSTORE DUP2 DUP2 PUSH2 0x3BE ADD MSTORE DUP2 DUP2 PUSH2 0x4B4 ADD MSTORE DUP2 DUP2 PUSH2 0x539 ADD MSTORE PUSH2 0x623 ADD MSTORE PUSH2 0x11B0 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xD2 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x52D1902D GT PUSH2 0x7F JUMPI DUP1 PUSH4 0x776D1A01 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0x776D1A01 EQ PUSH2 0x200 JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0x220 JUMPI DUP1 PUSH4 0xC9C4BFCA EQ PUSH2 0x240 JUMPI DUP1 PUSH4 0xD4B83992 EQ PUSH2 0x274 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x52D1902D EQ PUSH2 0x1B1 JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0x1D4 JUMPI DUP1 PUSH4 0x6ACCAB8C EQ PUSH2 0x1E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x4162169F GT PUSH2 0xB0 JUMPI DUP1 PUSH4 0x4162169F EQ PUSH2 0x150 JUMPI DUP1 PUSH4 0x41DE6830 EQ PUSH2 0x182 JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x19E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xD7 JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0x10C JUMPI DUP1 PUSH4 0x3659CFE6 EQ PUSH2 0x12E JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xE3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF7 PUSH2 0xF2 CALLDATASIZE PUSH1 0x4 PUSH2 0xEE8 JUMP JUMPDEST PUSH2 0x294 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x118 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x121 PUSH2 0x300 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x103 SWAP2 SWAP1 PUSH2 0xF12 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x13A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x14E PUSH2 0x149 CALLDATASIZE PUSH1 0x4 PUSH2 0xF5B JUMP JUMPDEST PUSH2 0x32A JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x15C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xC9 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x103 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x18E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 PUSH1 0x40 MLOAD PUSH2 0x103 SWAP2 SWAP1 PUSH2 0xF78 JUMP JUMPDEST PUSH2 0x14E PUSH2 0x1AC CALLDATASIZE PUSH1 0x4 PUSH2 0xFB6 JUMP JUMPDEST PUSH2 0x4AA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C6 PUSH2 0x616 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x103 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x16A PUSH2 0x6DB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C6 PUSH2 0x12D SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x20C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x14E PUSH2 0x21B CALLDATASIZE PUSH1 0x4 PUSH2 0xF5B JUMP JUMPDEST PUSH2 0x713 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x22C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x14E PUSH2 0x23B CALLDATASIZE PUSH1 0x4 PUSH2 0xF5B JUMP JUMPDEST PUSH2 0x772 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x24C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C6 PUSH32 0x821B6E3A557148015A918C89E5D092E878A69854A2D1A410635F771BD5A8A3F5 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x280 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xFB SLOAD PUSH2 0x16A SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x41DE683 PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x2C4 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x2DF JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x52D1902D PUSH1 0xE0 SHL EQ JUMPDEST DUP1 PUSH2 0x2FA JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x308 PUSH2 0xECA JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x3BC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x19195B1959D85D1958D85B1B PUSH1 0xA2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x417 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x482 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x6163746976652070726F7879 PUSH1 0xA0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B3 JUMP JUMPDEST PUSH2 0x48B DUP2 PUSH2 0x899 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x4A7 SWAP2 DUP4 SWAP2 SWAP1 PUSH2 0x8D6 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x537 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x19195B1959D85D1958D85B1B PUSH1 0xA2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B3 JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x592 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x5FD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x6163746976652070726F7879 PUSH1 0xA0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B3 JUMP JUMPDEST PUSH2 0x606 DUP3 PUSH2 0x899 JUMP JUMPDEST PUSH2 0x612 DUP3 DUP3 PUSH1 0x1 PUSH2 0x8D6 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x6B6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x38 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x555550535570677261646561626C653A206D757374206E6F742062652063616C PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6C6564207468726F7567682064656C656761746563616C6C0000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B3 JUMP JUMPDEST POP PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x70E PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0xFB DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP2 SWAP1 DUP3 SWAP1 PUSH32 0x90CC2F570A6EB594B1580EA3E41247D2D73A55281889E86BD4EC2FC29C7E62D6 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 DUP1 ISZERO PUSH2 0x792 JUMPI POP PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xFF SWAP1 SWAP2 AND LT JUMPDEST DUP1 PUSH2 0x7AC JUMPI POP ADDRESS EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x7AC JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF AND PUSH1 0x1 EQ JUMPDEST PUSH2 0x81E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x647920696E697469616C697A6564000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B3 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE DUP1 ISZERO PUSH2 0x841 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND PUSH2 0x100 OR SWAP1 SSTORE JUMPDEST PUSH2 0x84A DUP3 PUSH2 0xA7B JUMP JUMPDEST PUSH1 0x1 PUSH2 0x12D SSTORE DUP1 ISZERO PUSH2 0x612 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0xC9 SLOAD PUSH32 0x821B6E3A557148015A918C89E5D092E878A69854A2D1A410635F771BD5A8A3F5 SWAP1 PUSH2 0x612 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ADDRESS CALLER DUP5 PUSH1 0x0 CALLDATASIZE PUSH2 0xAEF JUMP JUMPDEST PUSH32 0x4910FDFA16FED3260ED0E7147F7CC6DA11A60208B5B9406D12A635614FFD9143 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x90E JUMPI PUSH2 0x909 DUP4 PUSH2 0xBAB JUMP JUMPDEST POP POP POP JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x52D1902D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x968 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x965 SWAP2 DUP2 ADD SWAP1 PUSH2 0x107A JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x9DA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524331393637557067726164653A206E657720696D706C656D656E74617469 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F6E206973206E6F742055555053000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B3 JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC DUP2 EQ PUSH2 0xA6F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524331393637557067726164653A20756E737570706F727465642070726F78 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6961626C65555549440000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B3 JUMP JUMPDEST POP PUSH2 0x909 DUP4 DUP4 DUP4 PUSH2 0xC76 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0xAE6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B3 JUMP JUMPDEST PUSH2 0x4A7 DUP2 PUSH2 0xCA1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x7EF7C883 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0xFDEF9106 SWAP1 PUSH2 0xB23 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x1093 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xB40 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xB64 SWAP2 SWAP1 PUSH2 0x10E7 JUMP JUMPDEST PUSH2 0xBA3 JUMPI PUSH1 0x40 MLOAD PUSH4 0xCB6F8ED PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND PUSH1 0x4 DUP4 ADD MSTORE DUP1 DUP8 AND PUSH1 0x24 DUP4 ADD MSTORE DUP6 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x84 ADD PUSH2 0x3B3 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND EXTCODESIZE PUSH2 0xC28 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313936373A206E657720696D706C656D656E746174696F6E206973206E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F74206120636F6E747261637400000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B3 JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xC7F DUP4 PUSH2 0xD3B JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD GT DUP1 PUSH2 0xC8C JUMPI POP DUP1 JUMPDEST ISZERO PUSH2 0x909 JUMPI PUSH2 0xC9B DUP4 DUP4 PUSH2 0xD7B JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0xD0C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B3 JUMP JUMPDEST PUSH1 0xC9 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xD44 DUP2 PUSH2 0xBAB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xDA0 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x117D PUSH1 0x27 SWAP2 CODECOPY PUSH2 0xDA7 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0xDC4 SWAP2 SWAP1 PUSH2 0x112D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xDFF JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xE04 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0xE15 DUP7 DUP4 DUP4 DUP8 PUSH2 0xE1F JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0xE8E JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0xE87 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0xE87 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3B3 JUMP JUMPDEST POP DUP2 PUSH2 0xE98 JUMP JUMPDEST PUSH2 0xE98 DUP4 DUP4 PUSH2 0xEA0 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0xEB0 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3B3 SWAP2 SWAP1 PUSH2 0x1149 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xEFA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0xDA0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0xF3D JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0xF1B JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x4A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xF6D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xDA0 DUP2 PUSH2 0xF46 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH1 0x3 DUP4 LT PUSH2 0xF9A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 SWAP1 MSTORE SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xFC9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0xFD4 DUP2 PUSH2 0xF46 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xFF1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1005 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x1017 JUMPI PUSH2 0x1017 PUSH2 0xFA0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x103F JUMPI PUSH2 0x103F PUSH2 0xFA0 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x1058 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x108C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND DUP4 MSTORE DUP1 DUP8 AND PUSH1 0x20 DUP5 ADD MSTORE POP DUP5 PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x80 PUSH1 0x60 DUP4 ADD MSTORE DUP3 PUSH1 0x80 DUP4 ADD MSTORE DUP3 DUP5 PUSH1 0xA0 DUP5 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0xA0 DUP5 DUP5 ADD ADD MSTORE PUSH1 0xA0 PUSH1 0x1F NOT PUSH1 0x1F DUP6 ADD AND DUP4 ADD ADD SWAP1 POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x10F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xDA0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1124 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x110C JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x113F DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x1109 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x1168 DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x1109 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A164 PUSH20 0x6F6C6343000811000A0000000000000000000000 ","sourceMap":"382:225:31:-:0;;;1198:4:5;1155:48;;382:225:31;;;;;;;;;-1:-1:-1;1647:22:40;:20;:22::i;:::-;382:225:31;;5939:280:4;6007:13;;;;;;;6006:14;5998:66;;;;-1:-1:-1;;;5998:66:4;;216:2:50;5998:66:4;;;198:21:50;255:2;235:18;;;228:30;294:34;274:18;;;267:62;-1:-1:-1;;;345:18:50;;;338:37;392:19;;5998:66:4;;;;;;;;6078:12;;6094:15;6078:12;;;:31;6074:139;;6125:12;:30;;-1:-1:-1;;6125:30:4;6140:15;6125:30;;;;;;6174:28;;564:36:50;;;6174:28:4;;552:2:50;537:18;6174:28:4;;;;;;;6074:139;5939:280::o;422:184:50:-;382:225:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@UPGRADE_PLUGIN_PERMISSION_ID_4415":{"entryPoint":null,"id":4415,"parameterSlots":0,"returnSlots":0},"@__DaoAuthorizableUpgradeable_init_3901":{"entryPoint":3233,"id":3901,"parameterSlots":1,"returnSlots":0},"@__PluginUUPSUpgradeable_init_4429":{"entryPoint":2683,"id":4429,"parameterSlots":1,"returnSlots":0},"@_auth_3987":{"entryPoint":2799,"id":3987,"parameterSlots":6,"returnSlots":0},"@_authorizeUpgrade_4570":{"entryPoint":2201,"id":4570,"parameterSlots":1,"returnSlots":0},"@_getImplementation_76":{"entryPoint":null,"id":76,"parameterSlots":0,"returnSlots":1},"@_msgData_1038":{"entryPoint":null,"id":1038,"parameterSlots":0,"returnSlots":2},"@_msgSender_1029":{"entryPoint":null,"id":1029,"parameterSlots":0,"returnSlots":1},"@_revert_1000":{"entryPoint":3744,"id":1000,"parameterSlots":2,"returnSlots":0},"@_setImplementation_100":{"entryPoint":2987,"id":100,"parameterSlots":1,"returnSlots":0},"@_upgradeToAndCallUUPS_198":{"entryPoint":2262,"id":198,"parameterSlots":3,"returnSlots":0},"@_upgradeToAndCall_145":{"entryPoint":3190,"id":145,"parameterSlots":3,"returnSlots":0},"@_upgradeTo_115":{"entryPoint":3387,"id":115,"parameterSlots":1,"returnSlots":0},"@dao_3911":{"entryPoint":null,"id":3911,"parameterSlots":0,"returnSlots":1},"@functionDelegateCall_888":{"entryPoint":3451,"id":888,"parameterSlots":2,"returnSlots":1},"@functionDelegateCall_917":{"entryPoint":3495,"id":917,"parameterSlots":3,"returnSlots":1},"@getAddressSlot_1158":{"entryPoint":null,"id":1158,"parameterSlots":1,"returnSlots":1},"@getBooleanSlot_1169":{"entryPoint":null,"id":1169,"parameterSlots":1,"returnSlots":1},"@implementation_4495":{"entryPoint":1755,"id":4495,"parameterSlots":0,"returnSlots":1},"@initialize_3136":{"entryPoint":1906,"id":3136,"parameterSlots":1,"returnSlots":0},"@isContract_689":{"entryPoint":null,"id":689,"parameterSlots":1,"returnSlots":1},"@pluginType_4409":{"entryPoint":null,"id":4409,"parameterSlots":0,"returnSlots":1},"@protocolVersion_5135":{"entryPoint":768,"id":5135,"parameterSlots":0,"returnSlots":1},"@proxiableUUID_616":{"entryPoint":1558,"id":616,"parameterSlots":0,"returnSlots":1},"@setTarget_4449":{"entryPoint":1811,"id":4449,"parameterSlots":1,"returnSlots":0},"@state1_3119":{"entryPoint":null,"id":3119,"parameterSlots":0,"returnSlots":0},"@supportsInterface_1275":{"entryPoint":null,"id":1275,"parameterSlots":1,"returnSlots":1},"@supportsInterface_4485":{"entryPoint":660,"id":4485,"parameterSlots":1,"returnSlots":1},"@target_4382":{"entryPoint":null,"id":4382,"parameterSlots":0,"returnSlots":0},"@upgradeToAndCall_659":{"entryPoint":1194,"id":659,"parameterSlots":2,"returnSlots":0},"@upgradeTo_638":{"entryPoint":810,"id":638,"parameterSlots":1,"returnSlots":0},"@verifyCallResultFromTarget_956":{"entryPoint":3615,"id":956,"parameterSlots":4,"returnSlots":1},"abi_decode_tuple_t_address":{"entryPoint":3931,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_bytes_memory_ptr":{"entryPoint":4022,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_bool_fromMemory":{"entryPoint":4327,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes32_fromMemory":{"entryPoint":4218,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes4":{"entryPoint":3816,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_contract$_IDAO_$2538":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":4397,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address_t_address_t_address_t_bytes32__to_t_address_t_address_t_address_t_bytes32__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":5,"returnSlots":1},"abi_encode_tuple_t_address_t_address_t_bytes32_t_bytes_calldata_ptr__to_t_address_t_address_t_bytes32_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":4243,"id":null,"parameterSlots":6,"returnSlots":1},"abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed":{"entryPoint":3858,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_contract$_IDAO_$2538__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_enum$_PluginType_$3994__to_t_uint8__fromStack_reversed":{"entryPoint":3960,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_rational_1_by_1__to_t_uint8__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":4425,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_36e108fa7a809b52ab1951dd91c117a7bc9ac5250bdf1aa162d4e104f7edf9eb__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_52f1ead4d9653e13afbd2e90ef2587c30187cd50b2e97d784e3f7a7541247434__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_67f0151b4ad1dcfa0e3302a0cd6019f51582ef1807b37dceb00bd852a514f7f4__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_76b6b6debfc5febf101145a79ecf0b0d2e89e397dfdab2bca99888370411152c__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_8e8e2fbcb586f700b5b14e2c4a650c8d83b9773c31c5fe8962070ea544e11f24__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"copy_memory_to_memory_with_cleanup":{"entryPoint":4361,"id":null,"parameterSlots":3,"returnSlots":0},"panic_error_0x41":{"entryPoint":4000,"id":null,"parameterSlots":0,"returnSlots":0},"validator_revert_address":{"entryPoint":3910,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:10523:50","statements":[{"nodeType":"YulBlock","src":"6:3:50","statements":[]},{"body":{"nodeType":"YulBlock","src":"83:217:50","statements":[{"body":{"nodeType":"YulBlock","src":"129:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"138:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"141:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"131:6:50"},"nodeType":"YulFunctionCall","src":"131:12:50"},"nodeType":"YulExpressionStatement","src":"131:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"104:7:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"113:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"100:3:50"},"nodeType":"YulFunctionCall","src":"100:23:50"},{"kind":"number","nodeType":"YulLiteral","src":"125:2:50","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"96:3:50"},"nodeType":"YulFunctionCall","src":"96:32:50"},"nodeType":"YulIf","src":"93:52:50"},{"nodeType":"YulVariableDeclaration","src":"154:36:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"180:9:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"167:12:50"},"nodeType":"YulFunctionCall","src":"167:23:50"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"158:5:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"254:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"263:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"266:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"256:6:50"},"nodeType":"YulFunctionCall","src":"256:12:50"},"nodeType":"YulExpressionStatement","src":"256:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"212:5:50"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"223:5:50"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"234:3:50","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"239:10:50","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"230:3:50"},"nodeType":"YulFunctionCall","src":"230:20:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"219:3:50"},"nodeType":"YulFunctionCall","src":"219:32:50"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"209:2:50"},"nodeType":"YulFunctionCall","src":"209:43:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"202:6:50"},"nodeType":"YulFunctionCall","src":"202:51:50"},"nodeType":"YulIf","src":"199:71:50"},{"nodeType":"YulAssignment","src":"279:15:50","value":{"name":"value","nodeType":"YulIdentifier","src":"289:5:50"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"279:6:50"}]}]},"name":"abi_decode_tuple_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"49:9:50","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"60:7:50","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"72:6:50","type":""}],"src":"14:286:50"},{"body":{"nodeType":"YulBlock","src":"400:92:50","statements":[{"nodeType":"YulAssignment","src":"410:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"422:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"433:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"418:3:50"},"nodeType":"YulFunctionCall","src":"418:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"410:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"452:9:50"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"477:6:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"470:6:50"},"nodeType":"YulFunctionCall","src":"470:14:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"463:6:50"},"nodeType":"YulFunctionCall","src":"463:22:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"445:6:50"},"nodeType":"YulFunctionCall","src":"445:41:50"},"nodeType":"YulExpressionStatement","src":"445:41:50"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"369:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"380:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"391:4:50","type":""}],"src":"305:187:50"},{"body":{"nodeType":"YulBlock","src":"640:358:50","statements":[{"nodeType":"YulAssignment","src":"650:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"662:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"673:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"658:3:50"},"nodeType":"YulFunctionCall","src":"658:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"650:4:50"}]},{"nodeType":"YulVariableDeclaration","src":"685:20:50","value":{"name":"headStart","nodeType":"YulIdentifier","src":"696:9:50"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"689:3:50","type":""}]},{"nodeType":"YulAssignment","src":"714:16:50","value":{"name":"headStart","nodeType":"YulIdentifier","src":"721:9:50"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"714:3:50"}]},{"nodeType":"YulVariableDeclaration","src":"739:20:50","value":{"name":"value0","nodeType":"YulIdentifier","src":"753:6:50"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"743:6:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"768:10:50","value":{"kind":"number","nodeType":"YulLiteral","src":"777:1:50","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"772:1:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"834:158:50","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"855:3:50"},{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"870:6:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"864:5:50"},"nodeType":"YulFunctionCall","src":"864:13:50"},{"kind":"number","nodeType":"YulLiteral","src":"879:4:50","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"860:3:50"},"nodeType":"YulFunctionCall","src":"860:24:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"848:6:50"},"nodeType":"YulFunctionCall","src":"848:37:50"},"nodeType":"YulExpressionStatement","src":"848:37:50"},{"nodeType":"YulVariableDeclaration","src":"898:14:50","value":{"kind":"number","nodeType":"YulLiteral","src":"908:4:50","type":"","value":"0x20"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"902:2:50","type":""}]},{"nodeType":"YulAssignment","src":"925:19:50","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"936:3:50"},{"name":"_1","nodeType":"YulIdentifier","src":"941:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"932:3:50"},"nodeType":"YulFunctionCall","src":"932:12:50"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"925:3:50"}]},{"nodeType":"YulAssignment","src":"957:25:50","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"971:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"979:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"967:3:50"},"nodeType":"YulFunctionCall","src":"967:15:50"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"957:6:50"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"798:1:50"},{"kind":"number","nodeType":"YulLiteral","src":"801:4:50","type":"","value":"0x03"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"795:2:50"},"nodeType":"YulFunctionCall","src":"795:11:50"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"807:18:50","statements":[{"nodeType":"YulAssignment","src":"809:14:50","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"818:1:50"},{"kind":"number","nodeType":"YulLiteral","src":"821:1:50","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"814:3:50"},"nodeType":"YulFunctionCall","src":"814:9:50"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"809:1:50"}]}]},"pre":{"nodeType":"YulBlock","src":"791:3:50","statements":[]},"src":"787:205:50"}]},"name":"abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"609:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"620:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"631:4:50","type":""}],"src":"497:501:50"},{"body":{"nodeType":"YulBlock","src":"1048:109:50","statements":[{"body":{"nodeType":"YulBlock","src":"1135:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1144:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1147:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1137:6:50"},"nodeType":"YulFunctionCall","src":"1137:12:50"},"nodeType":"YulExpressionStatement","src":"1137:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1071:5:50"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1082:5:50"},{"kind":"number","nodeType":"YulLiteral","src":"1089:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1078:3:50"},"nodeType":"YulFunctionCall","src":"1078:54:50"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1068:2:50"},"nodeType":"YulFunctionCall","src":"1068:65:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1061:6:50"},"nodeType":"YulFunctionCall","src":"1061:73:50"},"nodeType":"YulIf","src":"1058:93:50"}]},"name":"validator_revert_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1037:5:50","type":""}],"src":"1003:154:50"},{"body":{"nodeType":"YulBlock","src":"1232:177:50","statements":[{"body":{"nodeType":"YulBlock","src":"1278:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1287:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1290:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1280:6:50"},"nodeType":"YulFunctionCall","src":"1280:12:50"},"nodeType":"YulExpressionStatement","src":"1280:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1253:7:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"1262:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1249:3:50"},"nodeType":"YulFunctionCall","src":"1249:23:50"},{"kind":"number","nodeType":"YulLiteral","src":"1274:2:50","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1245:3:50"},"nodeType":"YulFunctionCall","src":"1245:32:50"},"nodeType":"YulIf","src":"1242:52:50"},{"nodeType":"YulVariableDeclaration","src":"1303:36:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1329:9:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1316:12:50"},"nodeType":"YulFunctionCall","src":"1316:23:50"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"1307:5:50","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1373:5:50"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"1348:24:50"},"nodeType":"YulFunctionCall","src":"1348:31:50"},"nodeType":"YulExpressionStatement","src":"1348:31:50"},{"nodeType":"YulAssignment","src":"1388:15:50","value":{"name":"value","nodeType":"YulIdentifier","src":"1398:5:50"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1388:6:50"}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1198:9:50","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1209:7:50","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1221:6:50","type":""}],"src":"1162:247:50"},{"body":{"nodeType":"YulBlock","src":"1528:125:50","statements":[{"nodeType":"YulAssignment","src":"1538:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1550:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"1561:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1546:3:50"},"nodeType":"YulFunctionCall","src":"1546:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1538:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1580:9:50"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1595:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"1603:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1591:3:50"},"nodeType":"YulFunctionCall","src":"1591:55:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1573:6:50"},"nodeType":"YulFunctionCall","src":"1573:74:50"},"nodeType":"YulExpressionStatement","src":"1573:74:50"}]},"name":"abi_encode_tuple_t_contract$_IDAO_$2538__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1497:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1508:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1519:4:50","type":""}],"src":"1414:239:50"},{"body":{"nodeType":"YulBlock","src":"1772:229:50","statements":[{"nodeType":"YulAssignment","src":"1782:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1794:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"1805:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1790:3:50"},"nodeType":"YulFunctionCall","src":"1790:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1782:4:50"}]},{"body":{"nodeType":"YulBlock","src":"1850:111:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1871:1:50","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1878:3:50","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"1883:10:50","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1874:3:50"},"nodeType":"YulFunctionCall","src":"1874:20:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1864:6:50"},"nodeType":"YulFunctionCall","src":"1864:31:50"},"nodeType":"YulExpressionStatement","src":"1864:31:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1915:1:50","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"1918:4:50","type":"","value":"0x21"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1908:6:50"},"nodeType":"YulFunctionCall","src":"1908:15:50"},"nodeType":"YulExpressionStatement","src":"1908:15:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1943:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1946:4:50","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1936:6:50"},"nodeType":"YulFunctionCall","src":"1936:15:50"},"nodeType":"YulExpressionStatement","src":"1936:15:50"}]},"condition":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1830:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"1838:1:50","type":"","value":"3"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"1827:2:50"},"nodeType":"YulFunctionCall","src":"1827:13:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1820:6:50"},"nodeType":"YulFunctionCall","src":"1820:21:50"},"nodeType":"YulIf","src":"1817:144:50"},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1977:9:50"},{"name":"value0","nodeType":"YulIdentifier","src":"1988:6:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1970:6:50"},"nodeType":"YulFunctionCall","src":"1970:25:50"},"nodeType":"YulExpressionStatement","src":"1970:25:50"}]},"name":"abi_encode_tuple_t_enum$_PluginType_$3994__to_t_uint8__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1741:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1752:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1763:4:50","type":""}],"src":"1658:343:50"},{"body":{"nodeType":"YulBlock","src":"2038:95:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2055:1:50","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2062:3:50","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"2067:10:50","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2058:3:50"},"nodeType":"YulFunctionCall","src":"2058:20:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2048:6:50"},"nodeType":"YulFunctionCall","src":"2048:31:50"},"nodeType":"YulExpressionStatement","src":"2048:31:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2095:1:50","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"2098:4:50","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2088:6:50"},"nodeType":"YulFunctionCall","src":"2088:15:50"},"nodeType":"YulExpressionStatement","src":"2088:15:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2119:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2122:4:50","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2112:6:50"},"nodeType":"YulFunctionCall","src":"2112:15:50"},"nodeType":"YulExpressionStatement","src":"2112:15:50"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"2006:127:50"},{"body":{"nodeType":"YulBlock","src":"2234:960:50","statements":[{"body":{"nodeType":"YulBlock","src":"2280:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2289:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2292:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2282:6:50"},"nodeType":"YulFunctionCall","src":"2282:12:50"},"nodeType":"YulExpressionStatement","src":"2282:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2255:7:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"2264:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2251:3:50"},"nodeType":"YulFunctionCall","src":"2251:23:50"},{"kind":"number","nodeType":"YulLiteral","src":"2276:2:50","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2247:3:50"},"nodeType":"YulFunctionCall","src":"2247:32:50"},"nodeType":"YulIf","src":"2244:52:50"},{"nodeType":"YulVariableDeclaration","src":"2305:36:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2331:9:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2318:12:50"},"nodeType":"YulFunctionCall","src":"2318:23:50"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"2309:5:50","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2375:5:50"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"2350:24:50"},"nodeType":"YulFunctionCall","src":"2350:31:50"},"nodeType":"YulExpressionStatement","src":"2350:31:50"},{"nodeType":"YulAssignment","src":"2390:15:50","value":{"name":"value","nodeType":"YulIdentifier","src":"2400:5:50"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2390:6:50"}]},{"nodeType":"YulVariableDeclaration","src":"2414:46:50","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2445:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"2456:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2441:3:50"},"nodeType":"YulFunctionCall","src":"2441:18:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2428:12:50"},"nodeType":"YulFunctionCall","src":"2428:32:50"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"2418:6:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2469:28:50","value":{"kind":"number","nodeType":"YulLiteral","src":"2479:18:50","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"2473:2:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"2524:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2533:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2536:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2526:6:50"},"nodeType":"YulFunctionCall","src":"2526:12:50"},"nodeType":"YulExpressionStatement","src":"2526:12:50"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"2512:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"2520:2:50"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2509:2:50"},"nodeType":"YulFunctionCall","src":"2509:14:50"},"nodeType":"YulIf","src":"2506:34:50"},{"nodeType":"YulVariableDeclaration","src":"2549:32:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2563:9:50"},{"name":"offset","nodeType":"YulIdentifier","src":"2574:6:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2559:3:50"},"nodeType":"YulFunctionCall","src":"2559:22:50"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"2553:2:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"2629:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2638:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2641:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2631:6:50"},"nodeType":"YulFunctionCall","src":"2631:12:50"},"nodeType":"YulExpressionStatement","src":"2631:12:50"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"2608:2:50"},{"kind":"number","nodeType":"YulLiteral","src":"2612:4:50","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2604:3:50"},"nodeType":"YulFunctionCall","src":"2604:13:50"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2619:7:50"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2600:3:50"},"nodeType":"YulFunctionCall","src":"2600:27:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2593:6:50"},"nodeType":"YulFunctionCall","src":"2593:35:50"},"nodeType":"YulIf","src":"2590:55:50"},{"nodeType":"YulVariableDeclaration","src":"2654:26:50","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"2677:2:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2664:12:50"},"nodeType":"YulFunctionCall","src":"2664:16:50"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"2658:2:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"2703:22:50","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"2705:16:50"},"nodeType":"YulFunctionCall","src":"2705:18:50"},"nodeType":"YulExpressionStatement","src":"2705:18:50"}]},"condition":{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"2695:2:50"},{"name":"_1","nodeType":"YulIdentifier","src":"2699:2:50"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2692:2:50"},"nodeType":"YulFunctionCall","src":"2692:10:50"},"nodeType":"YulIf","src":"2689:36:50"},{"nodeType":"YulVariableDeclaration","src":"2734:17:50","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2748:2:50","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"2744:3:50"},"nodeType":"YulFunctionCall","src":"2744:7:50"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"2738:2:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2760:23:50","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2780:2:50","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2774:5:50"},"nodeType":"YulFunctionCall","src":"2774:9:50"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"2764:6:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2792:71:50","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"2814:6:50"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"2838:2:50"},{"kind":"number","nodeType":"YulLiteral","src":"2842:4:50","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2834:3:50"},"nodeType":"YulFunctionCall","src":"2834:13:50"},{"name":"_4","nodeType":"YulIdentifier","src":"2849:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2830:3:50"},"nodeType":"YulFunctionCall","src":"2830:22:50"},{"kind":"number","nodeType":"YulLiteral","src":"2854:2:50","type":"","value":"63"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2826:3:50"},"nodeType":"YulFunctionCall","src":"2826:31:50"},{"name":"_4","nodeType":"YulIdentifier","src":"2859:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2822:3:50"},"nodeType":"YulFunctionCall","src":"2822:40:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2810:3:50"},"nodeType":"YulFunctionCall","src":"2810:53:50"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"2796:10:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"2922:22:50","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"2924:16:50"},"nodeType":"YulFunctionCall","src":"2924:18:50"},"nodeType":"YulExpressionStatement","src":"2924:18:50"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"2881:10:50"},{"name":"_1","nodeType":"YulIdentifier","src":"2893:2:50"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2878:2:50"},"nodeType":"YulFunctionCall","src":"2878:18:50"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"2901:10:50"},{"name":"memPtr","nodeType":"YulIdentifier","src":"2913:6:50"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2898:2:50"},"nodeType":"YulFunctionCall","src":"2898:22:50"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"2875:2:50"},"nodeType":"YulFunctionCall","src":"2875:46:50"},"nodeType":"YulIf","src":"2872:72:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2960:2:50","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"2964:10:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2953:6:50"},"nodeType":"YulFunctionCall","src":"2953:22:50"},"nodeType":"YulExpressionStatement","src":"2953:22:50"},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"2991:6:50"},{"name":"_3","nodeType":"YulIdentifier","src":"2999:2:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2984:6:50"},"nodeType":"YulFunctionCall","src":"2984:18:50"},"nodeType":"YulExpressionStatement","src":"2984:18:50"},{"body":{"nodeType":"YulBlock","src":"3048:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3057:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3060:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3050:6:50"},"nodeType":"YulFunctionCall","src":"3050:12:50"},"nodeType":"YulExpressionStatement","src":"3050:12:50"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"3025:2:50"},{"name":"_3","nodeType":"YulIdentifier","src":"3029:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3021:3:50"},"nodeType":"YulFunctionCall","src":"3021:11:50"},{"kind":"number","nodeType":"YulLiteral","src":"3034:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3017:3:50"},"nodeType":"YulFunctionCall","src":"3017:20:50"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3039:7:50"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3014:2:50"},"nodeType":"YulFunctionCall","src":"3014:33:50"},"nodeType":"YulIf","src":"3011:53:50"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"3090:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"3098:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3086:3:50"},"nodeType":"YulFunctionCall","src":"3086:15:50"},{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"3107:2:50"},{"kind":"number","nodeType":"YulLiteral","src":"3111:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3103:3:50"},"nodeType":"YulFunctionCall","src":"3103:11:50"},{"name":"_3","nodeType":"YulIdentifier","src":"3116:2:50"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"3073:12:50"},"nodeType":"YulFunctionCall","src":"3073:46:50"},"nodeType":"YulExpressionStatement","src":"3073:46:50"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"3143:6:50"},{"name":"_3","nodeType":"YulIdentifier","src":"3151:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3139:3:50"},"nodeType":"YulFunctionCall","src":"3139:15:50"},{"kind":"number","nodeType":"YulLiteral","src":"3156:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3135:3:50"},"nodeType":"YulFunctionCall","src":"3135:24:50"},{"kind":"number","nodeType":"YulLiteral","src":"3161:1:50","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3128:6:50"},"nodeType":"YulFunctionCall","src":"3128:35:50"},"nodeType":"YulExpressionStatement","src":"3128:35:50"},{"nodeType":"YulAssignment","src":"3172:16:50","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"3182:6:50"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"3172:6:50"}]}]},"name":"abi_decode_tuple_t_addresst_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2192:9:50","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2203:7:50","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2215:6:50","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2223:6:50","type":""}],"src":"2138:1056:50"},{"body":{"nodeType":"YulBlock","src":"3300:76:50","statements":[{"nodeType":"YulAssignment","src":"3310:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3322:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"3333:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3318:3:50"},"nodeType":"YulFunctionCall","src":"3318:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3310:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3352:9:50"},{"name":"value0","nodeType":"YulIdentifier","src":"3363:6:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3345:6:50"},"nodeType":"YulFunctionCall","src":"3345:25:50"},"nodeType":"YulExpressionStatement","src":"3345:25:50"}]},"name":"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3269:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3280:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3291:4:50","type":""}],"src":"3199:177:50"},{"body":{"nodeType":"YulBlock","src":"3482:125:50","statements":[{"nodeType":"YulAssignment","src":"3492:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3504:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"3515:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3500:3:50"},"nodeType":"YulFunctionCall","src":"3500:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3492:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3534:9:50"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3549:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"3557:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3545:3:50"},"nodeType":"YulFunctionCall","src":"3545:55:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3527:6:50"},"nodeType":"YulFunctionCall","src":"3527:74:50"},"nodeType":"YulExpressionStatement","src":"3527:74:50"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3451:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3462:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3473:4:50","type":""}],"src":"3381:226:50"},{"body":{"nodeType":"YulBlock","src":"3713:76:50","statements":[{"nodeType":"YulAssignment","src":"3723:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3735:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"3746:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3731:3:50"},"nodeType":"YulFunctionCall","src":"3731:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3723:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3765:9:50"},{"name":"value0","nodeType":"YulIdentifier","src":"3776:6:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3758:6:50"},"nodeType":"YulFunctionCall","src":"3758:25:50"},"nodeType":"YulExpressionStatement","src":"3758:25:50"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3682:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3693:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3704:4:50","type":""}],"src":"3612:177:50"},{"body":{"nodeType":"YulBlock","src":"3877:177:50","statements":[{"body":{"nodeType":"YulBlock","src":"3923:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3932:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3935:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3925:6:50"},"nodeType":"YulFunctionCall","src":"3925:12:50"},"nodeType":"YulExpressionStatement","src":"3925:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3898:7:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"3907:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3894:3:50"},"nodeType":"YulFunctionCall","src":"3894:23:50"},{"kind":"number","nodeType":"YulLiteral","src":"3919:2:50","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3890:3:50"},"nodeType":"YulFunctionCall","src":"3890:32:50"},"nodeType":"YulIf","src":"3887:52:50"},{"nodeType":"YulVariableDeclaration","src":"3948:36:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3974:9:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3961:12:50"},"nodeType":"YulFunctionCall","src":"3961:23:50"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"3952:5:50","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4018:5:50"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"3993:24:50"},"nodeType":"YulFunctionCall","src":"3993:31:50"},"nodeType":"YulExpressionStatement","src":"3993:31:50"},{"nodeType":"YulAssignment","src":"4033:15:50","value":{"name":"value","nodeType":"YulIdentifier","src":"4043:5:50"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"4033:6:50"}]}]},"name":"abi_decode_tuple_t_contract$_IDAO_$2538","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3843:9:50","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3854:7:50","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3866:6:50","type":""}],"src":"3794:260:50"},{"body":{"nodeType":"YulBlock","src":"4233:234:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4250:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"4261:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4243:6:50"},"nodeType":"YulFunctionCall","src":"4243:21:50"},"nodeType":"YulExpressionStatement","src":"4243:21:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4284:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"4295:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4280:3:50"},"nodeType":"YulFunctionCall","src":"4280:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"4300:2:50","type":"","value":"44"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4273:6:50"},"nodeType":"YulFunctionCall","src":"4273:30:50"},"nodeType":"YulExpressionStatement","src":"4273:30:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4323:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"4334:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4319:3:50"},"nodeType":"YulFunctionCall","src":"4319:18:50"},{"hexValue":"46756e6374696f6e206d7573742062652063616c6c6564207468726f75676820","kind":"string","nodeType":"YulLiteral","src":"4339:34:50","type":"","value":"Function must be called through "}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4312:6:50"},"nodeType":"YulFunctionCall","src":"4312:62:50"},"nodeType":"YulExpressionStatement","src":"4312:62:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4394:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"4405:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4390:3:50"},"nodeType":"YulFunctionCall","src":"4390:18:50"},{"hexValue":"64656c656761746563616c6c","kind":"string","nodeType":"YulLiteral","src":"4410:14:50","type":"","value":"delegatecall"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4383:6:50"},"nodeType":"YulFunctionCall","src":"4383:42:50"},"nodeType":"YulExpressionStatement","src":"4383:42:50"},{"nodeType":"YulAssignment","src":"4434:27:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4446:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"4457:3:50","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4442:3:50"},"nodeType":"YulFunctionCall","src":"4442:19:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4434:4:50"}]}]},"name":"abi_encode_tuple_t_stringliteral_36e108fa7a809b52ab1951dd91c117a7bc9ac5250bdf1aa162d4e104f7edf9eb__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4210:9:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4224:4:50","type":""}],"src":"4059:408:50"},{"body":{"nodeType":"YulBlock","src":"4646:234:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4663:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"4674:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4656:6:50"},"nodeType":"YulFunctionCall","src":"4656:21:50"},"nodeType":"YulExpressionStatement","src":"4656:21:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4697:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"4708:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4693:3:50"},"nodeType":"YulFunctionCall","src":"4693:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"4713:2:50","type":"","value":"44"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4686:6:50"},"nodeType":"YulFunctionCall","src":"4686:30:50"},"nodeType":"YulExpressionStatement","src":"4686:30:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4736:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"4747:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4732:3:50"},"nodeType":"YulFunctionCall","src":"4732:18:50"},{"hexValue":"46756e6374696f6e206d7573742062652063616c6c6564207468726f75676820","kind":"string","nodeType":"YulLiteral","src":"4752:34:50","type":"","value":"Function must be called through "}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4725:6:50"},"nodeType":"YulFunctionCall","src":"4725:62:50"},"nodeType":"YulExpressionStatement","src":"4725:62:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4807:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"4818:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4803:3:50"},"nodeType":"YulFunctionCall","src":"4803:18:50"},{"hexValue":"6163746976652070726f7879","kind":"string","nodeType":"YulLiteral","src":"4823:14:50","type":"","value":"active proxy"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4796:6:50"},"nodeType":"YulFunctionCall","src":"4796:42:50"},"nodeType":"YulExpressionStatement","src":"4796:42:50"},{"nodeType":"YulAssignment","src":"4847:27:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4859:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"4870:3:50","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4855:3:50"},"nodeType":"YulFunctionCall","src":"4855:19:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4847:4:50"}]}]},"name":"abi_encode_tuple_t_stringliteral_52f1ead4d9653e13afbd2e90ef2587c30187cd50b2e97d784e3f7a7541247434__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4623:9:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4637:4:50","type":""}],"src":"4472:408:50"},{"body":{"nodeType":"YulBlock","src":"5059:246:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5076:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"5087:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5069:6:50"},"nodeType":"YulFunctionCall","src":"5069:21:50"},"nodeType":"YulExpressionStatement","src":"5069:21:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5110:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"5121:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5106:3:50"},"nodeType":"YulFunctionCall","src":"5106:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"5126:2:50","type":"","value":"56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5099:6:50"},"nodeType":"YulFunctionCall","src":"5099:30:50"},"nodeType":"YulExpressionStatement","src":"5099:30:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5149:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"5160:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5145:3:50"},"nodeType":"YulFunctionCall","src":"5145:18:50"},{"hexValue":"555550535570677261646561626c653a206d757374206e6f742062652063616c","kind":"string","nodeType":"YulLiteral","src":"5165:34:50","type":"","value":"UUPSUpgradeable: must not be cal"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5138:6:50"},"nodeType":"YulFunctionCall","src":"5138:62:50"},"nodeType":"YulExpressionStatement","src":"5138:62:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5220:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"5231:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5216:3:50"},"nodeType":"YulFunctionCall","src":"5216:18:50"},{"hexValue":"6c6564207468726f7567682064656c656761746563616c6c","kind":"string","nodeType":"YulLiteral","src":"5236:26:50","type":"","value":"led through delegatecall"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5209:6:50"},"nodeType":"YulFunctionCall","src":"5209:54:50"},"nodeType":"YulExpressionStatement","src":"5209:54:50"},{"nodeType":"YulAssignment","src":"5272:27:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5284:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"5295:3:50","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5280:3:50"},"nodeType":"YulFunctionCall","src":"5280:19:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5272:4:50"}]}]},"name":"abi_encode_tuple_t_stringliteral_67f0151b4ad1dcfa0e3302a0cd6019f51582ef1807b37dceb00bd852a514f7f4__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5036:9:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5050:4:50","type":""}],"src":"4885:420:50"},{"body":{"nodeType":"YulBlock","src":"5484:236:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5501:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"5512:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5494:6:50"},"nodeType":"YulFunctionCall","src":"5494:21:50"},"nodeType":"YulExpressionStatement","src":"5494:21:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5535:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"5546:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5531:3:50"},"nodeType":"YulFunctionCall","src":"5531:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"5551:2:50","type":"","value":"46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5524:6:50"},"nodeType":"YulFunctionCall","src":"5524:30:50"},"nodeType":"YulExpressionStatement","src":"5524:30:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5574:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"5585:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5570:3:50"},"nodeType":"YulFunctionCall","src":"5570:18:50"},{"hexValue":"496e697469616c697a61626c653a20636f6e747261637420697320616c726561","kind":"string","nodeType":"YulLiteral","src":"5590:34:50","type":"","value":"Initializable: contract is alrea"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5563:6:50"},"nodeType":"YulFunctionCall","src":"5563:62:50"},"nodeType":"YulExpressionStatement","src":"5563:62:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5645:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"5656:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5641:3:50"},"nodeType":"YulFunctionCall","src":"5641:18:50"},{"hexValue":"647920696e697469616c697a6564","kind":"string","nodeType":"YulLiteral","src":"5661:16:50","type":"","value":"dy initialized"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5634:6:50"},"nodeType":"YulFunctionCall","src":"5634:44:50"},"nodeType":"YulExpressionStatement","src":"5634:44:50"},{"nodeType":"YulAssignment","src":"5687:27:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5699:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"5710:3:50","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5695:3:50"},"nodeType":"YulFunctionCall","src":"5695:19:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5687:4:50"}]}]},"name":"abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5461:9:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5475:4:50","type":""}],"src":"5310:410:50"},{"body":{"nodeType":"YulBlock","src":"5832:87:50","statements":[{"nodeType":"YulAssignment","src":"5842:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5854:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"5865:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5850:3:50"},"nodeType":"YulFunctionCall","src":"5850:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5842:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5884:9:50"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5899:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"5907:4:50","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5895:3:50"},"nodeType":"YulFunctionCall","src":"5895:17:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5877:6:50"},"nodeType":"YulFunctionCall","src":"5877:36:50"},"nodeType":"YulExpressionStatement","src":"5877:36:50"}]},"name":"abi_encode_tuple_t_rational_1_by_1__to_t_uint8__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5801:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"5812:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5823:4:50","type":""}],"src":"5725:194:50"},{"body":{"nodeType":"YulBlock","src":"6005:103:50","statements":[{"body":{"nodeType":"YulBlock","src":"6051:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6060:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6063:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6053:6:50"},"nodeType":"YulFunctionCall","src":"6053:12:50"},"nodeType":"YulExpressionStatement","src":"6053:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"6026:7:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"6035:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6022:3:50"},"nodeType":"YulFunctionCall","src":"6022:23:50"},{"kind":"number","nodeType":"YulLiteral","src":"6047:2:50","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6018:3:50"},"nodeType":"YulFunctionCall","src":"6018:32:50"},"nodeType":"YulIf","src":"6015:52:50"},{"nodeType":"YulAssignment","src":"6076:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6092:9:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6086:5:50"},"nodeType":"YulFunctionCall","src":"6086:16:50"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"6076:6:50"}]}]},"name":"abi_decode_tuple_t_bytes32_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5971:9:50","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"5982:7:50","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"5994:6:50","type":""}],"src":"5924:184:50"},{"body":{"nodeType":"YulBlock","src":"6287:236:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6304:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"6315:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6297:6:50"},"nodeType":"YulFunctionCall","src":"6297:21:50"},"nodeType":"YulExpressionStatement","src":"6297:21:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6338:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"6349:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6334:3:50"},"nodeType":"YulFunctionCall","src":"6334:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"6354:2:50","type":"","value":"46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6327:6:50"},"nodeType":"YulFunctionCall","src":"6327:30:50"},"nodeType":"YulExpressionStatement","src":"6327:30:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6377:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"6388:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6373:3:50"},"nodeType":"YulFunctionCall","src":"6373:18:50"},{"hexValue":"45524331393637557067726164653a206e657720696d706c656d656e74617469","kind":"string","nodeType":"YulLiteral","src":"6393:34:50","type":"","value":"ERC1967Upgrade: new implementati"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6366:6:50"},"nodeType":"YulFunctionCall","src":"6366:62:50"},"nodeType":"YulExpressionStatement","src":"6366:62:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6448:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"6459:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6444:3:50"},"nodeType":"YulFunctionCall","src":"6444:18:50"},{"hexValue":"6f6e206973206e6f742055555053","kind":"string","nodeType":"YulLiteral","src":"6464:16:50","type":"","value":"on is not UUPS"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6437:6:50"},"nodeType":"YulFunctionCall","src":"6437:44:50"},"nodeType":"YulExpressionStatement","src":"6437:44:50"},{"nodeType":"YulAssignment","src":"6490:27:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6502:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"6513:3:50","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6498:3:50"},"nodeType":"YulFunctionCall","src":"6498:19:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6490:4:50"}]}]},"name":"abi_encode_tuple_t_stringliteral_8e8e2fbcb586f700b5b14e2c4a650c8d83b9773c31c5fe8962070ea544e11f24__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6264:9:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6278:4:50","type":""}],"src":"6113:410:50"},{"body":{"nodeType":"YulBlock","src":"6702:231:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6719:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"6730:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6712:6:50"},"nodeType":"YulFunctionCall","src":"6712:21:50"},"nodeType":"YulExpressionStatement","src":"6712:21:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6753:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"6764:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6749:3:50"},"nodeType":"YulFunctionCall","src":"6749:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"6769:2:50","type":"","value":"41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6742:6:50"},"nodeType":"YulFunctionCall","src":"6742:30:50"},"nodeType":"YulExpressionStatement","src":"6742:30:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6792:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"6803:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6788:3:50"},"nodeType":"YulFunctionCall","src":"6788:18:50"},{"hexValue":"45524331393637557067726164653a20756e737570706f727465642070726f78","kind":"string","nodeType":"YulLiteral","src":"6808:34:50","type":"","value":"ERC1967Upgrade: unsupported prox"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6781:6:50"},"nodeType":"YulFunctionCall","src":"6781:62:50"},"nodeType":"YulExpressionStatement","src":"6781:62:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6863:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"6874:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6859:3:50"},"nodeType":"YulFunctionCall","src":"6859:18:50"},{"hexValue":"6961626c6555554944","kind":"string","nodeType":"YulLiteral","src":"6879:11:50","type":"","value":"iableUUID"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6852:6:50"},"nodeType":"YulFunctionCall","src":"6852:39:50"},"nodeType":"YulExpressionStatement","src":"6852:39:50"},{"nodeType":"YulAssignment","src":"6900:27:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6912:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"6923:3:50","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6908:3:50"},"nodeType":"YulFunctionCall","src":"6908:19:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6900:4:50"}]}]},"name":"abi_encode_tuple_t_stringliteral_76b6b6debfc5febf101145a79ecf0b0d2e89e397dfdab2bca99888370411152c__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6679:9:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6693:4:50","type":""}],"src":"6528:405:50"},{"body":{"nodeType":"YulBlock","src":"7112:233:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7129:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"7140:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7122:6:50"},"nodeType":"YulFunctionCall","src":"7122:21:50"},"nodeType":"YulExpressionStatement","src":"7122:21:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7163:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"7174:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7159:3:50"},"nodeType":"YulFunctionCall","src":"7159:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"7179:2:50","type":"","value":"43"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7152:6:50"},"nodeType":"YulFunctionCall","src":"7152:30:50"},"nodeType":"YulExpressionStatement","src":"7152:30:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7202:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"7213:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7198:3:50"},"nodeType":"YulFunctionCall","src":"7198:18:50"},{"hexValue":"496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069","kind":"string","nodeType":"YulLiteral","src":"7218:34:50","type":"","value":"Initializable: contract is not i"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7191:6:50"},"nodeType":"YulFunctionCall","src":"7191:62:50"},"nodeType":"YulExpressionStatement","src":"7191:62:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7273:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"7284:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7269:3:50"},"nodeType":"YulFunctionCall","src":"7269:18:50"},{"hexValue":"6e697469616c697a696e67","kind":"string","nodeType":"YulLiteral","src":"7289:13:50","type":"","value":"nitializing"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7262:6:50"},"nodeType":"YulFunctionCall","src":"7262:41:50"},"nodeType":"YulExpressionStatement","src":"7262:41:50"},{"nodeType":"YulAssignment","src":"7312:27:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7324:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"7335:3:50","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7320:3:50"},"nodeType":"YulFunctionCall","src":"7320:19:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7312:4:50"}]}]},"name":"abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7089:9:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7103:4:50","type":""}],"src":"6938:407:50"},{"body":{"nodeType":"YulBlock","src":"7563:472:50","statements":[{"nodeType":"YulVariableDeclaration","src":"7573:52:50","value":{"kind":"number","nodeType":"YulLiteral","src":"7583:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"7577:2:50","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7641:9:50"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7656:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"7664:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7652:3:50"},"nodeType":"YulFunctionCall","src":"7652:15:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7634:6:50"},"nodeType":"YulFunctionCall","src":"7634:34:50"},"nodeType":"YulExpressionStatement","src":"7634:34:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7688:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"7699:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7684:3:50"},"nodeType":"YulFunctionCall","src":"7684:18:50"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"7708:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"7716:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7704:3:50"},"nodeType":"YulFunctionCall","src":"7704:15:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7677:6:50"},"nodeType":"YulFunctionCall","src":"7677:43:50"},"nodeType":"YulExpressionStatement","src":"7677:43:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7740:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"7751:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7736:3:50"},"nodeType":"YulFunctionCall","src":"7736:18:50"},{"name":"value2","nodeType":"YulIdentifier","src":"7756:6:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7729:6:50"},"nodeType":"YulFunctionCall","src":"7729:34:50"},"nodeType":"YulExpressionStatement","src":"7729:34:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7783:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"7794:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7779:3:50"},"nodeType":"YulFunctionCall","src":"7779:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"7799:3:50","type":"","value":"128"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7772:6:50"},"nodeType":"YulFunctionCall","src":"7772:31:50"},"nodeType":"YulExpressionStatement","src":"7772:31:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7823:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"7834:3:50","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7819:3:50"},"nodeType":"YulFunctionCall","src":"7819:19:50"},{"name":"value4","nodeType":"YulIdentifier","src":"7840:6:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7812:6:50"},"nodeType":"YulFunctionCall","src":"7812:35:50"},"nodeType":"YulExpressionStatement","src":"7812:35:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7873:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"7884:3:50","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7869:3:50"},"nodeType":"YulFunctionCall","src":"7869:19:50"},{"name":"value3","nodeType":"YulIdentifier","src":"7890:6:50"},{"name":"value4","nodeType":"YulIdentifier","src":"7898:6:50"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"7856:12:50"},"nodeType":"YulFunctionCall","src":"7856:49:50"},"nodeType":"YulExpressionStatement","src":"7856:49:50"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7929:9:50"},{"name":"value4","nodeType":"YulIdentifier","src":"7940:6:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7925:3:50"},"nodeType":"YulFunctionCall","src":"7925:22:50"},{"kind":"number","nodeType":"YulLiteral","src":"7949:3:50","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7921:3:50"},"nodeType":"YulFunctionCall","src":"7921:32:50"},{"kind":"number","nodeType":"YulLiteral","src":"7955:1:50","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7914:6:50"},"nodeType":"YulFunctionCall","src":"7914:43:50"},"nodeType":"YulExpressionStatement","src":"7914:43:50"},{"nodeType":"YulAssignment","src":"7966:63:50","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7982:9:50"},{"arguments":[{"arguments":[{"name":"value4","nodeType":"YulIdentifier","src":"8001:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"8009:2:50","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7997:3:50"},"nodeType":"YulFunctionCall","src":"7997:15:50"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8018:2:50","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"8014:3:50"},"nodeType":"YulFunctionCall","src":"8014:7:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7993:3:50"},"nodeType":"YulFunctionCall","src":"7993:29:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7978:3:50"},"nodeType":"YulFunctionCall","src":"7978:45:50"},{"kind":"number","nodeType":"YulLiteral","src":"8025:3:50","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7974:3:50"},"nodeType":"YulFunctionCall","src":"7974:55:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7966:4:50"}]}]},"name":"abi_encode_tuple_t_address_t_address_t_bytes32_t_bytes_calldata_ptr__to_t_address_t_address_t_bytes32_t_bytes_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7500:9:50","type":""},{"name":"value4","nodeType":"YulTypedName","src":"7511:6:50","type":""},{"name":"value3","nodeType":"YulTypedName","src":"7519:6:50","type":""},{"name":"value2","nodeType":"YulTypedName","src":"7527:6:50","type":""},{"name":"value1","nodeType":"YulTypedName","src":"7535:6:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"7543:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7554:4:50","type":""}],"src":"7350:685:50"},{"body":{"nodeType":"YulBlock","src":"8118:199:50","statements":[{"body":{"nodeType":"YulBlock","src":"8164:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8173:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8176:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8166:6:50"},"nodeType":"YulFunctionCall","src":"8166:12:50"},"nodeType":"YulExpressionStatement","src":"8166:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"8139:7:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"8148:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"8135:3:50"},"nodeType":"YulFunctionCall","src":"8135:23:50"},{"kind":"number","nodeType":"YulLiteral","src":"8160:2:50","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"8131:3:50"},"nodeType":"YulFunctionCall","src":"8131:32:50"},"nodeType":"YulIf","src":"8128:52:50"},{"nodeType":"YulVariableDeclaration","src":"8189:29:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8208:9:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"8202:5:50"},"nodeType":"YulFunctionCall","src":"8202:16:50"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"8193:5:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"8271:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8280:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8283:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8273:6:50"},"nodeType":"YulFunctionCall","src":"8273:12:50"},"nodeType":"YulExpressionStatement","src":"8273:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8240:5:50"},{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8261:5:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"8254:6:50"},"nodeType":"YulFunctionCall","src":"8254:13:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"8247:6:50"},"nodeType":"YulFunctionCall","src":"8247:21:50"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"8237:2:50"},"nodeType":"YulFunctionCall","src":"8237:32:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"8230:6:50"},"nodeType":"YulFunctionCall","src":"8230:40:50"},"nodeType":"YulIf","src":"8227:60:50"},{"nodeType":"YulAssignment","src":"8296:15:50","value":{"name":"value","nodeType":"YulIdentifier","src":"8306:5:50"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"8296:6:50"}]}]},"name":"abi_decode_tuple_t_bool_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8084:9:50","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"8095:7:50","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"8107:6:50","type":""}],"src":"8040:277:50"},{"body":{"nodeType":"YulBlock","src":"8507:294:50","statements":[{"nodeType":"YulAssignment","src":"8517:27:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8529:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"8540:3:50","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8525:3:50"},"nodeType":"YulFunctionCall","src":"8525:19:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"8517:4:50"}]},{"nodeType":"YulVariableDeclaration","src":"8553:52:50","value":{"kind":"number","nodeType":"YulLiteral","src":"8563:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"8557:2:50","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8621:9:50"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"8636:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"8644:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8632:3:50"},"nodeType":"YulFunctionCall","src":"8632:15:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8614:6:50"},"nodeType":"YulFunctionCall","src":"8614:34:50"},"nodeType":"YulExpressionStatement","src":"8614:34:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8668:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"8679:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8664:3:50"},"nodeType":"YulFunctionCall","src":"8664:18:50"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"8688:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"8696:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8684:3:50"},"nodeType":"YulFunctionCall","src":"8684:15:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8657:6:50"},"nodeType":"YulFunctionCall","src":"8657:43:50"},"nodeType":"YulExpressionStatement","src":"8657:43:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8720:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"8731:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8716:3:50"},"nodeType":"YulFunctionCall","src":"8716:18:50"},{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"8740:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"8748:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8736:3:50"},"nodeType":"YulFunctionCall","src":"8736:15:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8709:6:50"},"nodeType":"YulFunctionCall","src":"8709:43:50"},"nodeType":"YulExpressionStatement","src":"8709:43:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8772:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"8783:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8768:3:50"},"nodeType":"YulFunctionCall","src":"8768:18:50"},{"name":"value3","nodeType":"YulIdentifier","src":"8788:6:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8761:6:50"},"nodeType":"YulFunctionCall","src":"8761:34:50"},"nodeType":"YulExpressionStatement","src":"8761:34:50"}]},"name":"abi_encode_tuple_t_address_t_address_t_address_t_bytes32__to_t_address_t_address_t_address_t_bytes32__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8452:9:50","type":""},{"name":"value3","nodeType":"YulTypedName","src":"8463:6:50","type":""},{"name":"value2","nodeType":"YulTypedName","src":"8471:6:50","type":""},{"name":"value1","nodeType":"YulTypedName","src":"8479:6:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"8487:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"8498:4:50","type":""}],"src":"8322:479:50"},{"body":{"nodeType":"YulBlock","src":"8980:235:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8997:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"9008:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8990:6:50"},"nodeType":"YulFunctionCall","src":"8990:21:50"},"nodeType":"YulExpressionStatement","src":"8990:21:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9031:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"9042:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9027:3:50"},"nodeType":"YulFunctionCall","src":"9027:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"9047:2:50","type":"","value":"45"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9020:6:50"},"nodeType":"YulFunctionCall","src":"9020:30:50"},"nodeType":"YulExpressionStatement","src":"9020:30:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9070:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"9081:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9066:3:50"},"nodeType":"YulFunctionCall","src":"9066:18:50"},{"hexValue":"455243313936373a206e657720696d706c656d656e746174696f6e206973206e","kind":"string","nodeType":"YulLiteral","src":"9086:34:50","type":"","value":"ERC1967: new implementation is n"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9059:6:50"},"nodeType":"YulFunctionCall","src":"9059:62:50"},"nodeType":"YulExpressionStatement","src":"9059:62:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9141:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"9152:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9137:3:50"},"nodeType":"YulFunctionCall","src":"9137:18:50"},{"hexValue":"6f74206120636f6e7472616374","kind":"string","nodeType":"YulLiteral","src":"9157:15:50","type":"","value":"ot a contract"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9130:6:50"},"nodeType":"YulFunctionCall","src":"9130:43:50"},"nodeType":"YulExpressionStatement","src":"9130:43:50"},{"nodeType":"YulAssignment","src":"9182:27:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9194:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"9205:3:50","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9190:3:50"},"nodeType":"YulFunctionCall","src":"9190:19:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"9182:4:50"}]}]},"name":"abi_encode_tuple_t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8957:9:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"8971:4:50","type":""}],"src":"8806:409:50"},{"body":{"nodeType":"YulBlock","src":"9286:184:50","statements":[{"nodeType":"YulVariableDeclaration","src":"9296:10:50","value":{"kind":"number","nodeType":"YulLiteral","src":"9305:1:50","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"9300:1:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"9365:63:50","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"9390:3:50"},{"name":"i","nodeType":"YulIdentifier","src":"9395:1:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9386:3:50"},"nodeType":"YulFunctionCall","src":"9386:11:50"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"9409:3:50"},{"name":"i","nodeType":"YulIdentifier","src":"9414:1:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9405:3:50"},"nodeType":"YulFunctionCall","src":"9405:11:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"9399:5:50"},"nodeType":"YulFunctionCall","src":"9399:18:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9379:6:50"},"nodeType":"YulFunctionCall","src":"9379:39:50"},"nodeType":"YulExpressionStatement","src":"9379:39:50"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"9326:1:50"},{"name":"length","nodeType":"YulIdentifier","src":"9329:6:50"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"9323:2:50"},"nodeType":"YulFunctionCall","src":"9323:13:50"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"9337:19:50","statements":[{"nodeType":"YulAssignment","src":"9339:15:50","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"9348:1:50"},{"kind":"number","nodeType":"YulLiteral","src":"9351:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9344:3:50"},"nodeType":"YulFunctionCall","src":"9344:10:50"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"9339:1:50"}]}]},"pre":{"nodeType":"YulBlock","src":"9319:3:50","statements":[]},"src":"9315:113:50"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"9448:3:50"},{"name":"length","nodeType":"YulIdentifier","src":"9453:6:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9444:3:50"},"nodeType":"YulFunctionCall","src":"9444:16:50"},{"kind":"number","nodeType":"YulLiteral","src":"9462:1:50","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9437:6:50"},"nodeType":"YulFunctionCall","src":"9437:27:50"},"nodeType":"YulExpressionStatement","src":"9437:27:50"}]},"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"9264:3:50","type":""},{"name":"dst","nodeType":"YulTypedName","src":"9269:3:50","type":""},{"name":"length","nodeType":"YulTypedName","src":"9274:6:50","type":""}],"src":"9220:250:50"},{"body":{"nodeType":"YulBlock","src":"9612:150:50","statements":[{"nodeType":"YulVariableDeclaration","src":"9622:27:50","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"9642:6:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"9636:5:50"},"nodeType":"YulFunctionCall","src":"9636:13:50"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"9626:6:50","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"9697:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"9705:4:50","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9693:3:50"},"nodeType":"YulFunctionCall","src":"9693:17:50"},{"name":"pos","nodeType":"YulIdentifier","src":"9712:3:50"},{"name":"length","nodeType":"YulIdentifier","src":"9717:6:50"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"9658:34:50"},"nodeType":"YulFunctionCall","src":"9658:66:50"},"nodeType":"YulExpressionStatement","src":"9658:66:50"},{"nodeType":"YulAssignment","src":"9733:23:50","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"9744:3:50"},{"name":"length","nodeType":"YulIdentifier","src":"9749:6:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9740:3:50"},"nodeType":"YulFunctionCall","src":"9740:16:50"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"9733:3:50"}]}]},"name":"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"9588:3:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"9593:6:50","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"9604:3:50","type":""}],"src":"9475:287:50"},{"body":{"nodeType":"YulBlock","src":"9941:179:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9958:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"9969:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9951:6:50"},"nodeType":"YulFunctionCall","src":"9951:21:50"},"nodeType":"YulExpressionStatement","src":"9951:21:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9992:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"10003:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9988:3:50"},"nodeType":"YulFunctionCall","src":"9988:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"10008:2:50","type":"","value":"29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9981:6:50"},"nodeType":"YulFunctionCall","src":"9981:30:50"},"nodeType":"YulExpressionStatement","src":"9981:30:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10031:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"10042:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10027:3:50"},"nodeType":"YulFunctionCall","src":"10027:18:50"},{"hexValue":"416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374","kind":"string","nodeType":"YulLiteral","src":"10047:31:50","type":"","value":"Address: call to non-contract"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10020:6:50"},"nodeType":"YulFunctionCall","src":"10020:59:50"},"nodeType":"YulExpressionStatement","src":"10020:59:50"},{"nodeType":"YulAssignment","src":"10088:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10100:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"10111:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10096:3:50"},"nodeType":"YulFunctionCall","src":"10096:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"10088:4:50"}]}]},"name":"abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9918:9:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"9932:4:50","type":""}],"src":"9767:353:50"},{"body":{"nodeType":"YulBlock","src":"10246:275:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10263:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"10274:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10256:6:50"},"nodeType":"YulFunctionCall","src":"10256:21:50"},"nodeType":"YulExpressionStatement","src":"10256:21:50"},{"nodeType":"YulVariableDeclaration","src":"10286:27:50","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"10306:6:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"10300:5:50"},"nodeType":"YulFunctionCall","src":"10300:13:50"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"10290:6:50","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10333:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"10344:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10329:3:50"},"nodeType":"YulFunctionCall","src":"10329:18:50"},{"name":"length","nodeType":"YulIdentifier","src":"10349:6:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10322:6:50"},"nodeType":"YulFunctionCall","src":"10322:34:50"},"nodeType":"YulExpressionStatement","src":"10322:34:50"},{"expression":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"10404:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"10412:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10400:3:50"},"nodeType":"YulFunctionCall","src":"10400:15:50"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10421:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"10432:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10417:3:50"},"nodeType":"YulFunctionCall","src":"10417:18:50"},{"name":"length","nodeType":"YulIdentifier","src":"10437:6:50"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"10365:34:50"},"nodeType":"YulFunctionCall","src":"10365:79:50"},"nodeType":"YulExpressionStatement","src":"10365:79:50"},{"nodeType":"YulAssignment","src":"10453:62:50","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10469:9:50"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"10488:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"10496:2:50","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10484:3:50"},"nodeType":"YulFunctionCall","src":"10484:15:50"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10505:2:50","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"10501:3:50"},"nodeType":"YulFunctionCall","src":"10501:7:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"10480:3:50"},"nodeType":"YulFunctionCall","src":"10480:29:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10465:3:50"},"nodeType":"YulFunctionCall","src":"10465:45:50"},{"kind":"number","nodeType":"YulLiteral","src":"10512:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10461:3:50"},"nodeType":"YulFunctionCall","src":"10461:54:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"10453:4:50"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"10215:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"10226:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"10237:4:50","type":""}],"src":"10125:396:50"}]},"contents":"{\n { }\n function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n if iszero(eq(value, and(value, shl(224, 0xffffffff)))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 96)\n let pos := headStart\n pos := headStart\n let srcPtr := value0\n let i := 0\n for { } lt(i, 0x03) { i := add(i, 1) }\n {\n mstore(pos, and(mload(srcPtr), 0xff))\n let _1 := 0x20\n pos := add(pos, _1)\n srcPtr := add(srcPtr, _1)\n }\n }\n function validator_revert_address(value)\n {\n if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n }\n function abi_encode_tuple_t_contract$_IDAO_$2538__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_encode_tuple_t_enum$_PluginType_$3994__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n if iszero(lt(value0, 3))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x21)\n revert(0, 0x24)\n }\n mstore(headStart, value0)\n }\n function panic_error_0x41()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function abi_decode_tuple_t_addresst_bytes_memory_ptr(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n let offset := calldataload(add(headStart, 32))\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n let _2 := add(headStart, offset)\n if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n let _3 := calldataload(_2)\n if gt(_3, _1) { panic_error_0x41() }\n let _4 := not(31)\n let memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n mstore(memPtr, _3)\n if gt(add(add(_2, _3), 32), dataEnd) { revert(0, 0) }\n calldatacopy(add(memPtr, 32), add(_2, 32), _3)\n mstore(add(add(memPtr, _3), 32), 0)\n value1 := memPtr\n }\n function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_decode_tuple_t_contract$_IDAO_$2538(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n }\n function abi_encode_tuple_t_stringliteral_36e108fa7a809b52ab1951dd91c117a7bc9ac5250bdf1aa162d4e104f7edf9eb__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 44)\n mstore(add(headStart, 64), \"Function must be called through \")\n mstore(add(headStart, 96), \"delegatecall\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_52f1ead4d9653e13afbd2e90ef2587c30187cd50b2e97d784e3f7a7541247434__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 44)\n mstore(add(headStart, 64), \"Function must be called through \")\n mstore(add(headStart, 96), \"active proxy\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_67f0151b4ad1dcfa0e3302a0cd6019f51582ef1807b37dceb00bd852a514f7f4__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 56)\n mstore(add(headStart, 64), \"UUPSUpgradeable: must not be cal\")\n mstore(add(headStart, 96), \"led through delegatecall\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 46)\n mstore(add(headStart, 64), \"Initializable: contract is alrea\")\n mstore(add(headStart, 96), \"dy initialized\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_rational_1_by_1__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xff))\n }\n function abi_decode_tuple_t_bytes32_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := mload(headStart)\n }\n function abi_encode_tuple_t_stringliteral_8e8e2fbcb586f700b5b14e2c4a650c8d83b9773c31c5fe8962070ea544e11f24__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 46)\n mstore(add(headStart, 64), \"ERC1967Upgrade: new implementati\")\n mstore(add(headStart, 96), \"on is not UUPS\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_76b6b6debfc5febf101145a79ecf0b0d2e89e397dfdab2bca99888370411152c__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 41)\n mstore(add(headStart, 64), \"ERC1967Upgrade: unsupported prox\")\n mstore(add(headStart, 96), \"iableUUID\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 43)\n mstore(add(headStart, 64), \"Initializable: contract is not i\")\n mstore(add(headStart, 96), \"nitializing\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_address_t_address_t_bytes32_t_bytes_calldata_ptr__to_t_address_t_address_t_bytes32_t_bytes_memory_ptr__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n {\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n mstore(add(headStart, 64), value2)\n mstore(add(headStart, 96), 128)\n mstore(add(headStart, 128), value4)\n calldatacopy(add(headStart, 160), value3, value4)\n mstore(add(add(headStart, value4), 160), 0)\n tail := add(add(headStart, and(add(value4, 31), not(31))), 160)\n }\n function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := mload(headStart)\n if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_address_t_address_t_address_t_bytes32__to_t_address_t_address_t_address_t_bytes32__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n {\n tail := add(headStart, 128)\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n mstore(add(headStart, 64), and(value2, _1))\n mstore(add(headStart, 96), value3)\n }\n function abi_encode_tuple_t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 45)\n mstore(add(headStart, 64), \"ERC1967: new implementation is n\")\n mstore(add(headStart, 96), \"ot a contract\")\n tail := add(headStart, 128)\n }\n function copy_memory_to_memory_with_cleanup(src, dst, length)\n {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n mstore(add(dst, length), 0)\n }\n function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n {\n let length := mload(value0)\n copy_memory_to_memory_with_cleanup(add(value0, 0x20), pos, length)\n end := add(pos, length)\n }\n function abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 29)\n mstore(add(headStart, 64), \"Address: call to non-contract\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n mstore(headStart, 32)\n let length := mload(value0)\n mstore(add(headStart, 32), length)\n copy_memory_to_memory_with_cleanup(add(value0, 32), add(headStart, 64), length)\n tail := add(add(headStart, and(add(length, 31), not(31))), 64)\n }\n}","id":50,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{"554":[{"length":32,"start":820},{"length":32,"start":958},{"length":32,"start":1204},{"length":32,"start":1337},{"length":32,"start":1571}]},"linkReferences":{},"object":"6080604052600436106100d25760003560e01c806352d1902d1161007f578063776d1a0111610059578063776d1a0114610200578063c4d66de814610220578063c9c4bfca14610240578063d4b839921461027457600080fd5b806352d1902d146101b15780635c60da1b146101d45780636accab8c146101e957600080fd5b80634162169f116100b05780634162169f1461015057806341de6830146101825780634f1ef2861461019e57600080fd5b806301ffc9a7146100d75780632ae9c6001461010c5780633659cfe61461012e575b600080fd5b3480156100e357600080fd5b506100f76100f2366004610ee8565b610294565b60405190151581526020015b60405180910390f35b34801561011857600080fd5b50610121610300565b6040516101039190610f12565b34801561013a57600080fd5b5061014e610149366004610f5b565b61032a565b005b34801561015c57600080fd5b5060c9546001600160a01b03165b6040516001600160a01b039091168152602001610103565b34801561018e57600080fd5b5060006040516101039190610f78565b61014e6101ac366004610fb6565b6104aa565b3480156101bd57600080fd5b506101c6610616565b604051908152602001610103565b3480156101e057600080fd5b5061016a6106db565b3480156101f557600080fd5b506101c661012d5481565b34801561020c57600080fd5b5061014e61021b366004610f5b565b610713565b34801561022c57600080fd5b5061014e61023b366004610f5b565b610772565b34801561024c57600080fd5b506101c67f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f581565b34801561028057600080fd5b5060fb5461016a906001600160a01b031681565b60006001600160e01b0319821663041de68360e41b14806102c457506001600160e01b03198216621574e360e91b145b806102df57506001600160e01b031982166352d1902d60e01b145b806102fa57506301ffc9a760e01b6001600160e01b03198316145b92915050565b610308610eca565b5060408051606081018252600181526004602082015260009181019190915290565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036103bc5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b60648201526084015b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166104177f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b0316146104825760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b60648201526084016103b3565b61048b81610899565b604080516000808252602082019092526104a7918391906108d6565b50565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036105375760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b60648201526084016103b3565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166105927f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b0316146105fd5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b60648201526084016103b3565b61060682610899565b610612828260016108d6565b5050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106b65760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016103b3565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b600061070e7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b60fb80546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d690600090a35050565b600054610100900460ff16158080156107925750600054600160ff909116105b806107ac5750303b1580156107ac575060005460ff166001145b61081e5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016103b3565b6000805460ff191660011790558015610841576000805461ff0019166101001790555b61084a82610a7b565b600161012d558015610612576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b60c9547f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f590610612906001600160a01b0316303384600036610aef565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561090e5761090983610bab565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610968575060408051601f3d908101601f191682019092526109659181019061107a565b60015b6109da5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201527f6f6e206973206e6f74205555505300000000000000000000000000000000000060648201526084016103b3565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114610a6f5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f7860448201527f6961626c6555554944000000000000000000000000000000000000000000000060648201526084016103b3565b50610909838383610c76565b600054610100900460ff16610ae65760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103b3565b6104a781610ca1565b604051637ef7c88360e11b81526001600160a01b0387169063fdef910690610b239088908890889088908890600401611093565b602060405180830381865afa158015610b40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6491906110e7565b610ba357604051630cb6f8ed60e21b81526001600160a01b038088166004830152808716602483015285166044820152606481018490526084016103b3565b505050505050565b6001600160a01b0381163b610c285760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e74726163740000000000000000000000000000000000000060648201526084016103b3565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610c7f83610d3b565b600082511180610c8c5750805b1561090957610c9b8383610d7b565b50505050565b600054610100900460ff16610d0c5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103b3565b60c9805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610d4481610bab565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060610da0838360405180606001604052806027815260200161117d60279139610da7565b9392505050565b6060600080856001600160a01b031685604051610dc4919061112d565b600060405180830381855af49150503d8060008114610dff576040519150601f19603f3d011682016040523d82523d6000602084013e610e04565b606091505b5091509150610e1586838387610e1f565b9695505050505050565b60608315610e8e578251600003610e87576001600160a01b0385163b610e875760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016103b3565b5081610e98565b610e988383610ea0565b949350505050565b815115610eb05781518083602001fd5b8060405162461bcd60e51b81526004016103b39190611149565b60405180606001604052806003906020820280368337509192915050565b600060208284031215610efa57600080fd5b81356001600160e01b031981168114610da057600080fd5b60608101818360005b6003811015610f3d57815160ff16835260209283019290910190600101610f1b565b50505092915050565b6001600160a01b03811681146104a757600080fd5b600060208284031215610f6d57600080fd5b8135610da081610f46565b6020810160038310610f9a57634e487b7160e01b600052602160045260246000fd5b91905290565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215610fc957600080fd5b8235610fd481610f46565b9150602083013567ffffffffffffffff80821115610ff157600080fd5b818501915085601f83011261100557600080fd5b81358181111561101757611017610fa0565b604051601f8201601f19908116603f0116810190838211818310171561103f5761103f610fa0565b8160405282815288602084870101111561105857600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60006020828403121561108c57600080fd5b5051919050565b60006001600160a01b03808816835280871660208401525084604083015260806060830152826080830152828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b6000602082840312156110f957600080fd5b81518015158114610da057600080fd5b60005b8381101561112457818101518382015260200161110c565b50506000910152565b6000825161113f818460208701611109565b9190910192915050565b6020815260008251806020840152611168816040850160208701611109565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xD2 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x52D1902D GT PUSH2 0x7F JUMPI DUP1 PUSH4 0x776D1A01 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0x776D1A01 EQ PUSH2 0x200 JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0x220 JUMPI DUP1 PUSH4 0xC9C4BFCA EQ PUSH2 0x240 JUMPI DUP1 PUSH4 0xD4B83992 EQ PUSH2 0x274 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x52D1902D EQ PUSH2 0x1B1 JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0x1D4 JUMPI DUP1 PUSH4 0x6ACCAB8C EQ PUSH2 0x1E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x4162169F GT PUSH2 0xB0 JUMPI DUP1 PUSH4 0x4162169F EQ PUSH2 0x150 JUMPI DUP1 PUSH4 0x41DE6830 EQ PUSH2 0x182 JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x19E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xD7 JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0x10C JUMPI DUP1 PUSH4 0x3659CFE6 EQ PUSH2 0x12E JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xE3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF7 PUSH2 0xF2 CALLDATASIZE PUSH1 0x4 PUSH2 0xEE8 JUMP JUMPDEST PUSH2 0x294 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x118 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x121 PUSH2 0x300 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x103 SWAP2 SWAP1 PUSH2 0xF12 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x13A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x14E PUSH2 0x149 CALLDATASIZE PUSH1 0x4 PUSH2 0xF5B JUMP JUMPDEST PUSH2 0x32A JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x15C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xC9 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x103 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x18E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 PUSH1 0x40 MLOAD PUSH2 0x103 SWAP2 SWAP1 PUSH2 0xF78 JUMP JUMPDEST PUSH2 0x14E PUSH2 0x1AC CALLDATASIZE PUSH1 0x4 PUSH2 0xFB6 JUMP JUMPDEST PUSH2 0x4AA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C6 PUSH2 0x616 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x103 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x16A PUSH2 0x6DB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C6 PUSH2 0x12D SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x20C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x14E PUSH2 0x21B CALLDATASIZE PUSH1 0x4 PUSH2 0xF5B JUMP JUMPDEST PUSH2 0x713 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x22C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x14E PUSH2 0x23B CALLDATASIZE PUSH1 0x4 PUSH2 0xF5B JUMP JUMPDEST PUSH2 0x772 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x24C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C6 PUSH32 0x821B6E3A557148015A918C89E5D092E878A69854A2D1A410635F771BD5A8A3F5 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x280 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xFB SLOAD PUSH2 0x16A SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x41DE683 PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x2C4 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x2DF JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x52D1902D PUSH1 0xE0 SHL EQ JUMPDEST DUP1 PUSH2 0x2FA JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x308 PUSH2 0xECA JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x3BC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x19195B1959D85D1958D85B1B PUSH1 0xA2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x417 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x482 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x6163746976652070726F7879 PUSH1 0xA0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B3 JUMP JUMPDEST PUSH2 0x48B DUP2 PUSH2 0x899 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x4A7 SWAP2 DUP4 SWAP2 SWAP1 PUSH2 0x8D6 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x537 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x19195B1959D85D1958D85B1B PUSH1 0xA2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B3 JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x592 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x5FD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x6163746976652070726F7879 PUSH1 0xA0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B3 JUMP JUMPDEST PUSH2 0x606 DUP3 PUSH2 0x899 JUMP JUMPDEST PUSH2 0x612 DUP3 DUP3 PUSH1 0x1 PUSH2 0x8D6 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x6B6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x38 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x555550535570677261646561626C653A206D757374206E6F742062652063616C PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6C6564207468726F7567682064656C656761746563616C6C0000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B3 JUMP JUMPDEST POP PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x70E PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0xFB DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP2 SWAP1 DUP3 SWAP1 PUSH32 0x90CC2F570A6EB594B1580EA3E41247D2D73A55281889E86BD4EC2FC29C7E62D6 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 DUP1 ISZERO PUSH2 0x792 JUMPI POP PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xFF SWAP1 SWAP2 AND LT JUMPDEST DUP1 PUSH2 0x7AC JUMPI POP ADDRESS EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x7AC JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF AND PUSH1 0x1 EQ JUMPDEST PUSH2 0x81E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x647920696E697469616C697A6564000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B3 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE DUP1 ISZERO PUSH2 0x841 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND PUSH2 0x100 OR SWAP1 SSTORE JUMPDEST PUSH2 0x84A DUP3 PUSH2 0xA7B JUMP JUMPDEST PUSH1 0x1 PUSH2 0x12D SSTORE DUP1 ISZERO PUSH2 0x612 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0xC9 SLOAD PUSH32 0x821B6E3A557148015A918C89E5D092E878A69854A2D1A410635F771BD5A8A3F5 SWAP1 PUSH2 0x612 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ADDRESS CALLER DUP5 PUSH1 0x0 CALLDATASIZE PUSH2 0xAEF JUMP JUMPDEST PUSH32 0x4910FDFA16FED3260ED0E7147F7CC6DA11A60208B5B9406D12A635614FFD9143 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x90E JUMPI PUSH2 0x909 DUP4 PUSH2 0xBAB JUMP JUMPDEST POP POP POP JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x52D1902D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x968 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x965 SWAP2 DUP2 ADD SWAP1 PUSH2 0x107A JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x9DA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524331393637557067726164653A206E657720696D706C656D656E74617469 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F6E206973206E6F742055555053000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B3 JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC DUP2 EQ PUSH2 0xA6F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524331393637557067726164653A20756E737570706F727465642070726F78 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6961626C65555549440000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B3 JUMP JUMPDEST POP PUSH2 0x909 DUP4 DUP4 DUP4 PUSH2 0xC76 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0xAE6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B3 JUMP JUMPDEST PUSH2 0x4A7 DUP2 PUSH2 0xCA1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x7EF7C883 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0xFDEF9106 SWAP1 PUSH2 0xB23 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x1093 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xB40 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xB64 SWAP2 SWAP1 PUSH2 0x10E7 JUMP JUMPDEST PUSH2 0xBA3 JUMPI PUSH1 0x40 MLOAD PUSH4 0xCB6F8ED PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND PUSH1 0x4 DUP4 ADD MSTORE DUP1 DUP8 AND PUSH1 0x24 DUP4 ADD MSTORE DUP6 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x84 ADD PUSH2 0x3B3 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND EXTCODESIZE PUSH2 0xC28 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313936373A206E657720696D706C656D656E746174696F6E206973206E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F74206120636F6E747261637400000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B3 JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xC7F DUP4 PUSH2 0xD3B JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD GT DUP1 PUSH2 0xC8C JUMPI POP DUP1 JUMPDEST ISZERO PUSH2 0x909 JUMPI PUSH2 0xC9B DUP4 DUP4 PUSH2 0xD7B JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0xD0C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B3 JUMP JUMPDEST PUSH1 0xC9 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xD44 DUP2 PUSH2 0xBAB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xDA0 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x117D PUSH1 0x27 SWAP2 CODECOPY PUSH2 0xDA7 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0xDC4 SWAP2 SWAP1 PUSH2 0x112D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xDFF JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xE04 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0xE15 DUP7 DUP4 DUP4 DUP8 PUSH2 0xE1F JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0xE8E JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0xE87 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0xE87 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3B3 JUMP JUMPDEST POP DUP2 PUSH2 0xE98 JUMP JUMPDEST PUSH2 0xE98 DUP4 DUP4 PUSH2 0xEA0 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0xEB0 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3B3 SWAP2 SWAP1 PUSH2 0x1149 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xEFA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0xDA0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0xF3D JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0xF1B JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x4A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xF6D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xDA0 DUP2 PUSH2 0xF46 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH1 0x3 DUP4 LT PUSH2 0xF9A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 SWAP1 MSTORE SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xFC9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0xFD4 DUP2 PUSH2 0xF46 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xFF1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1005 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x1017 JUMPI PUSH2 0x1017 PUSH2 0xFA0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x103F JUMPI PUSH2 0x103F PUSH2 0xFA0 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x1058 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x108C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND DUP4 MSTORE DUP1 DUP8 AND PUSH1 0x20 DUP5 ADD MSTORE POP DUP5 PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x80 PUSH1 0x60 DUP4 ADD MSTORE DUP3 PUSH1 0x80 DUP4 ADD MSTORE DUP3 DUP5 PUSH1 0xA0 DUP5 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0xA0 DUP5 DUP5 ADD ADD MSTORE PUSH1 0xA0 PUSH1 0x1F NOT PUSH1 0x1F DUP6 ADD AND DUP4 ADD ADD SWAP1 POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x10F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xDA0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1124 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x110C JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x113F DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x1109 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x1168 DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x1109 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A164 PUSH20 0x6F6C6343000811000A0000000000000000000000 ","sourceMap":"382:225:31:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2810:366:40;;;;;;;;;;-1:-1:-1;2810:366:40;;;;;:::i;:::-;;:::i;:::-;;;470:14:50;;463:22;445:41;;433:2;418:18;2810:366:40;;;;;;;;631:98:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;3408:195:5:-;;;;;;;;;;-1:-1:-1;3408:195:5;;;;;:::i;:::-;;:::i;:::-;;1200:70:35;;;;;;;;;;-1:-1:-1;1259:4:35;;-1:-1:-1;;;;;1259:4:35;1200:70;;;-1:-1:-1;;;;;1591:55:50;;;1573:74;;1561:2;1546:18;1200:70:35;1414:239:50;1710:103:40;;;;;;;;;;-1:-1:-1;1762:10:40;1710:103;;;;;;:::i;3922:220:5:-;;;;;;:::i;:::-;;:::i;3027:131::-;;;;;;;;;;;;;:::i;:::-;;;3345:25:50;;;3333:2;3318:18;3027:131:5;3199:177:50;3457:100:40;;;;;;;;;;;;;:::i;454:21:31:-;;;;;;;;;;;;;;;;2439:166:40;;;;;;;;;;-1:-1:-1;2439:166:40;;;;;:::i;:::-;;:::i;482:123:31:-;;;;;;;;;;-1:-1:-1;482:123:31;;;;;:::i;:::-;;:::i;1911:93:40:-;;;;;;;;;;;;1966:38;1911:93;;1293:21;;;;;;;;;;-1:-1:-1;1293:21:40;;;;-1:-1:-1;;;;;1293:21:40;;;2810:366;2896:4;-1:-1:-1;;;;;;2931:41:40;;-1:-1:-1;;;2931:41:40;;:107;;-1:-1:-1;;;;;;;2988:50:40;;-1:-1:-1;;;2988:50:40;2931:107;:185;;;-1:-1:-1;;;;;;;3054:62:40;;-1:-1:-1;;;3054:62:40;2931:185;:238;;;-1:-1:-1;;;;;;;;;;1189:51:10;;;3132:37:40;2912:257;2810:366;-1:-1:-1;;2810:366:40:o;631:98:49:-;679:15;;:::i;:::-;-1:-1:-1;706:16:49;;;;;;;;714:1;706:16;;717:1;706:16;;;;-1:-1:-1;706:16:49;;;;;;;;631:98::o;3408:195:5:-;-1:-1:-1;;;;;1764:6:5;1747:23;1755:4;1747:23;1739:80;;;;-1:-1:-1;;;1739:80:5;;4261:2:50;1739:80:5;;;4243:21:50;4300:2;4280:18;;;4273:30;4339:34;4319:18;;;4312:62;-1:-1:-1;;;4390:18:50;;;4383:42;4442:19;;1739:80:5;;;;;;;;;1861:6;-1:-1:-1;;;;;1837:30:5;:20;1180:66:2;1557:65;-1:-1:-1;;;;;1557:65:2;;1478:151;1837:20:5;-1:-1:-1;;;;;1837:30:5;;1829:87;;;;-1:-1:-1;;;1829:87:5;;4674:2:50;1829:87:5;;;4656:21:50;4713:2;4693:18;;;4686:30;4752:34;4732:18;;;4725:62;-1:-1:-1;;;4803:18:50;;;4796:42;4855:19;;1829:87:5;4472:408:50;1829:87:5;3489:36:::1;3507:17;3489;:36::i;:::-;3576:12;::::0;;3586:1:::1;3576:12:::0;;;::::1;::::0;::::1;::::0;;;3535:61:::1;::::0;3557:17;;3576:12;3535:21:::1;:61::i;:::-;3408:195:::0;:::o;3922:220::-;-1:-1:-1;;;;;1764:6:5;1747:23;1755:4;1747:23;1739:80;;;;-1:-1:-1;;;1739:80:5;;4261:2:50;1739:80:5;;;4243:21:50;4300:2;4280:18;;;4273:30;4339:34;4319:18;;;4312:62;-1:-1:-1;;;4390:18:50;;;4383:42;4442:19;;1739:80:5;4059:408:50;1739:80:5;1861:6;-1:-1:-1;;;;;1837:30:5;:20;1180:66:2;1557:65;-1:-1:-1;;;;;1557:65:2;;1478:151;1837:20:5;-1:-1:-1;;;;;1837:30:5;;1829:87;;;;-1:-1:-1;;;1829:87:5;;4674:2:50;1829:87:5;;;4656:21:50;4713:2;4693:18;;;4686:30;4752:34;4732:18;;;4725:62;-1:-1:-1;;;4803:18:50;;;4796:42;4855:19;;1829:87:5;4472:408:50;1829:87:5;4037:36:::1;4055:17;4037;:36::i;:::-;4083:52;4105:17;4124:4;4130;4083:21;:52::i;:::-;3922:220:::0;;:::o;3027:131::-;3105:7;2190:4;-1:-1:-1;;;;;2199:6:5;2182:23;;2174:92;;;;-1:-1:-1;;;2174:92:5;;5087:2:50;2174:92:5;;;5069:21:50;5126:2;5106:18;;;5099:30;5165:34;5145:18;;;5138:62;5236:26;5216:18;;;5209:54;5280:19;;2174:92:5;4885:420:50;2174:92:5;-1:-1:-1;1180:66:2::1;3027:131:5::0;:::o;3457:100:40:-;3504:7;3530:20;1180:66:2;1557:65;-1:-1:-1;;;;;1557:65:2;;1478:151;3530:20:40;3523:27;;3457:100;:::o;2439:166::-;2517:6;;;-1:-1:-1;;;;;2533:16:40;;;-1:-1:-1;;2533:16:40;;;;;;;2564:34;;2517:6;;;2533:16;2517:6;;2564:34;;2492:22;;2564:34;2482:123;2439:166;:::o;482:123:31:-;3279:19:4;3302:13;;;;;;3301:14;;3347:34;;;;-1:-1:-1;3365:12:4;;3380:1;3365:12;;;;:16;3347:34;3346:108;;;-1:-1:-1;3426:4:4;1713:19:6;:23;;;3387:66:4;;-1:-1:-1;3436:12:4;;;;;:17;3387:66;3325:201;;;;-1:-1:-1;;;3325:201:4;;5512:2:50;3325:201:4;;;5494:21:50;5551:2;5531:18;;;5524:30;5590:34;5570:18;;;5563:62;5661:16;5641:18;;;5634:44;5695:19;;3325:201:4;5310:410:50;3325:201:4;3536:12;:16;;-1:-1:-1;;3536:16:4;3551:1;3536:16;;;3562:65;;;;3596:13;:20;;-1:-1:-1;;3596:20:4;;;;;3562:65;544:34:31::1;573:4;544:28;:34::i;:::-;597:1;588:6;:10:::0;3647:99:4;;;;3697:5;3681:21;;-1:-1:-1;;3681:21:4;;;3721:14;;-1:-1:-1;5877:36:50;;3721:14:4;;5865:2:50;5850:18;3721:14:4;;;;;;;3269:483;482:123:31;:::o;5390:204:40:-;1616:4:35;;1966:38:40;;1610:67:35;;-1:-1:-1;;;;;1616:4:35;1630;965:10:7;1651:13:35;1039:14:7;;1610:5:35;:67::i;2841:944:2:-;839:66;3257:59;;;3253:526;;;3332:37;3351:17;3332:18;:37::i;:::-;2841:944;;;:::o;3253:526::-;3433:17;-1:-1:-1;;;;;3404:61:2;;:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3404:63:2;;;;;;;;-1:-1:-1;;3404:63:2;;;;;;;;;;;;:::i;:::-;;;3400:302;;3631:56;;-1:-1:-1;;;3631:56:2;;6315:2:50;3631:56:2;;;6297:21:50;6354:2;6334:18;;;6327:30;6393:34;6373:18;;;6366:62;6464:16;6444:18;;;6437:44;6498:19;;3631:56:2;6113:410:50;3400:302:2;1180:66;3517:28;;3509:82;;;;-1:-1:-1;;;3509:82:2;;6730:2:50;3509:82:2;;;6712:21:50;6769:2;6749:18;;;6742:30;6808:34;6788:18;;;6781:62;6879:11;6859:18;;;6852:39;6908:19;;3509:82:2;6528:405:50;3509:82:2;3468:138;3715:53;3733:17;3752:4;3758:9;3715:17;:53::i;2172:139:40:-;5374:13:4;;;;;;;5366:69;;;;-1:-1:-1;;;5366:69:4;;7140:2:50;5366:69:4;;;7122:21:50;7179:2;7159:18;;;7152:30;7218:34;7198:18;;;7191:62;-1:-1:-1;;;7269:18:50;;;7262:41;7320:19;;5366:69:4;6938:407:50;5366:69:4;2265:39:40::1;2299:4;2265:33;:39::i;1041:363:36:-:0;1180:54;;-1:-1:-1;;;1180:54:36;;-1:-1:-1;;;;;1180:18:36;;;;;:54;;1199:6;;1207:4;;1213:13;;1228:5;;;;1180:54;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1175:226;;1251:150;;-1:-1:-1;;;1251:150:36;;-1:-1:-1;;;;;8632:15:50;;;1251:150:36;;;8614:34:50;8684:15;;;8664:18;;;8657:43;8736:15;;8716:18;;;8709:43;8768:18;;;8761:34;;;8525:19;;1251:150:36;8322:479:50;1175:226:36;1041:363;;;;;;:::o;1720:281:2:-;-1:-1:-1;;;;;1713:19:6;;;1793:106:2;;;;-1:-1:-1;;;1793:106:2;;9008:2:50;1793:106:2;;;8990:21:50;9047:2;9027:18;;;9020:30;9086:34;9066:18;;;9059:62;9157:15;9137:18;;;9130:43;9190:19;;1793:106:2;8806:409:50;1793:106:2;1180:66;1909:85;;-1:-1:-1;;1909:85:2;-1:-1:-1;;;;;1909:85:2;;;;;;;;;;1720:281::o;2393:276::-;2501:29;2512:17;2501:10;:29::i;:::-;2558:1;2544:4;:11;:15;:28;;;;2563:9;2544:28;2540:123;;;2588:64;2628:17;2647:4;2588:39;:64::i;:::-;;2393:276;;;:::o;1010:108:35:-;5374:13:4;;;;;;;5366:69;;;;-1:-1:-1;;;5366:69:4;;7140:2:50;5366:69:4;;;7122:21:50;7179:2;7159:18;;;7152:30;7218:34;7198:18;;;7191:62;-1:-1:-1;;;7269:18:50;;;7262:41;7320:19;;5366:69:4;6938:407:50;5366:69:4;1100:4:35::1;:11:::0;;-1:-1:-1;;1100:11:35::1;-1:-1:-1::0;;;;;1100:11:35;;;::::1;::::0;;;::::1;::::0;;1010:108::o;2107:152:2:-;2173:37;2192:17;2173:18;:37::i;:::-;2225:27;;-1:-1:-1;;;;;2225:27:2;;;;;;;;2107:152;:::o;6685:198:6:-;6768:12;6799:77;6820:6;6828:4;6799:77;;;;;;;;;;;;;;;;;:20;:77::i;:::-;6792:84;6685:198;-1:-1:-1;;;6685:198:6:o;7069:325::-;7210:12;7235;7249:23;7276:6;-1:-1:-1;;;;;7276:19:6;7296:4;7276:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7234:67;;;;7318:69;7345:6;7353:7;7362:10;7374:12;7318:26;:69::i;:::-;7311:76;7069:325;-1:-1:-1;;;;;;7069:325:6:o;7682:628::-;7862:12;7890:7;7886:418;;;7917:10;:17;7938:1;7917:22;7913:286;;-1:-1:-1;;;;;1713:19:6;;;8124:60;;;;-1:-1:-1;;;8124:60:6;;9969:2:50;8124:60:6;;;9951:21:50;10008:2;9988:18;;;9981:30;10047:31;10027:18;;;10020:59;10096:18;;8124:60:6;9767:353:50;8124:60:6;-1:-1:-1;8219:10:6;8212:17;;7886:418;8260:33;8268:10;8280:12;8260:7;:33::i;:::-;7682:628;;;;;;:::o;8832:540::-;8991:17;;:21;8987:379;;9219:10;9213:17;9275:15;9262:10;9258:2;9254:19;9247:44;8987:379;9342:12;9335:20;;-1:-1:-1;;;9335:20:6;;;;;;;;:::i;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:286:50:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:50;;209:43;;199:71;;266:1;263;256:12;497:501;673:2;658:18;;662:9;753:6;631:4;787:205;801:4;798:1;795:11;787:205;;;864:13;;879:4;860:24;848:37;;908:4;932:12;;;;967:15;;;;821:1;814:9;787:205;;;791:3;;;497:501;;;;:::o;1003:154::-;-1:-1:-1;;;;;1082:5:50;1078:54;1071:5;1068:65;1058:93;;1147:1;1144;1137:12;1162:247;1221:6;1274:2;1262:9;1253:7;1249:23;1245:32;1242:52;;;1290:1;1287;1280:12;1242:52;1329:9;1316:23;1348:31;1373:5;1348:31;:::i;1658:343::-;1805:2;1790:18;;1838:1;1827:13;;1817:144;;1883:10;1878:3;1874:20;1871:1;1864:31;1918:4;1915:1;1908:15;1946:4;1943:1;1936:15;1817:144;1970:25;;;1658:343;:::o;2006:127::-;2067:10;2062:3;2058:20;2055:1;2048:31;2098:4;2095:1;2088:15;2122:4;2119:1;2112:15;2138:1056;2215:6;2223;2276:2;2264:9;2255:7;2251:23;2247:32;2244:52;;;2292:1;2289;2282:12;2244:52;2331:9;2318:23;2350:31;2375:5;2350:31;:::i;:::-;2400:5;-1:-1:-1;2456:2:50;2441:18;;2428:32;2479:18;2509:14;;;2506:34;;;2536:1;2533;2526:12;2506:34;2574:6;2563:9;2559:22;2549:32;;2619:7;2612:4;2608:2;2604:13;2600:27;2590:55;;2641:1;2638;2631:12;2590:55;2677:2;2664:16;2699:2;2695;2692:10;2689:36;;;2705:18;;:::i;:::-;2780:2;2774:9;2748:2;2834:13;;-1:-1:-1;;2830:22:50;;;2854:2;2826:31;2822:40;2810:53;;;2878:18;;;2898:22;;;2875:46;2872:72;;;2924:18;;:::i;:::-;2964:10;2960:2;2953:22;2999:2;2991:6;2984:18;3039:7;3034:2;3029;3025;3021:11;3017:20;3014:33;3011:53;;;3060:1;3057;3050:12;3011:53;3116:2;3111;3107;3103:11;3098:2;3090:6;3086:15;3073:46;3161:1;3156:2;3151;3143:6;3139:15;3135:24;3128:35;3182:6;3172:16;;;;;;;2138:1056;;;;;:::o;5924:184::-;5994:6;6047:2;6035:9;6026:7;6022:23;6018:32;6015:52;;;6063:1;6060;6053:12;6015:52;-1:-1:-1;6086:16:50;;5924:184;-1:-1:-1;5924:184:50:o;7350:685::-;7554:4;-1:-1:-1;;;;;7664:2:50;7656:6;7652:15;7641:9;7634:34;7716:2;7708:6;7704:15;7699:2;7688:9;7684:18;7677:43;;7756:6;7751:2;7740:9;7736:18;7729:34;7799:3;7794:2;7783:9;7779:18;7772:31;7840:6;7834:3;7823:9;7819:19;7812:35;7898:6;7890;7884:3;7873:9;7869:19;7856:49;7955:1;7949:3;7940:6;7929:9;7925:22;7921:32;7914:43;8025:3;8018:2;8014:7;8009:2;8001:6;7997:15;7993:29;7982:9;7978:45;7974:55;7966:63;;7350:685;;;;;;;;:::o;8040:277::-;8107:6;8160:2;8148:9;8139:7;8135:23;8131:32;8128:52;;;8176:1;8173;8166:12;8128:52;8208:9;8202:16;8261:5;8254:13;8247:21;8240:5;8237:32;8227:60;;8283:1;8280;8273:12;9220:250;9305:1;9315:113;9329:6;9326:1;9323:13;9315:113;;;9405:11;;;9399:18;9386:11;;;9379:39;9351:2;9344:10;9315:113;;;-1:-1:-1;;9462:1:50;9444:16;;9437:27;9220:250::o;9475:287::-;9604:3;9642:6;9636:13;9658:66;9717:6;9712:3;9705:4;9697:6;9693:17;9658:66;:::i;:::-;9740:16;;;;;9475:287;-1:-1:-1;;9475:287:50:o;10125:396::-;10274:2;10263:9;10256:21;10237:4;10306:6;10300:13;10349:6;10344:2;10333:9;10329:18;10322:34;10365:79;10437:6;10432:2;10421:9;10417:18;10412:2;10404:6;10400:15;10365:79;:::i;:::-;10505:2;10484:15;-1:-1:-1;;10480:29:50;10465:45;;;;10512:2;10461:54;;10125:396;-1:-1:-1;;10125:396:50:o"},"gasEstimates":{"creation":{"codeDepositCost":"905600","executionCost":"infinite","totalCost":"infinite"},"external":{"UPGRADE_PLUGIN_PERMISSION_ID()":"261","dao()":"2343","implementation()":"2414","initialize(address)":"infinite","pluginType()":"272","protocolVersion()":"infinite","proxiableUUID()":"infinite","setTarget(address)":"26112","state1()":"2362","supportsInterface(bytes4)":"560","target()":"2425","upgradeTo(address)":"infinite","upgradeToAndCall(address,bytes)":"infinite"}},"methodIdentifiers":{"UPGRADE_PLUGIN_PERMISSION_ID()":"c9c4bfca","dao()":"4162169f","implementation()":"5c60da1b","initialize(address)":"c4d66de8","pluginType()":"41de6830","protocolVersion()":"2ae9c600","proxiableUUID()":"52d1902d","setTarget(address)":"776d1a01","state1()":"6accab8c","supportsInterface(bytes4)":"01ffc9a7","target()":"d4b83992","upgradeTo(address)":"3659cfe6","upgradeToAndCall(address,bytes)":"4f1ef286"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"dao\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"name\":\"DaoUnauthorized\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousTarget\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newTarget\",\"type\":\"address\"}],\"name\":\"TargetSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"UPGRADE_PLUGIN_PERMISSION_ID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"dao\",\"outputs\":[{\"internalType\":\"contract IDAO\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IDAO\",\"name\":\"_dao\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pluginType\",\"outputs\":[{\"internalType\":\"enum IPlugin.PluginType\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"protocolVersion\",\"outputs\":[{\"internalType\":\"uint8[3]\",\"name\":\"\",\"type\":\"uint8[3]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_target\",\"type\":\"address\"}],\"name\":\"setTarget\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"state1\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"target\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"upgradeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"DO NOT USE IN PRODUCTION!\",\"errors\":{\"DaoUnauthorized(address,address,address,bytes32)\":[{\"params\":{\"dao\":\"The associated DAO.\",\"permissionId\":\"The permission identifier.\",\"where\":\"The context in which the authorization reverted.\",\"who\":\"The address (EOA or contract) missing the permission.\"}}]},\"kind\":\"dev\",\"methods\":{\"dao()\":{\"returns\":{\"_0\":\"The DAO contract.\"}},\"implementation()\":{\"returns\":{\"_0\":\"The address of the implementation contract.\"}},\"protocolVersion()\":{\"details\":\"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\",\"returns\":{\"_0\":\"Returns the semantic Aragon OSx protocol version number.\"}},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"setTarget(address)\":{\"details\":\"Sets the target to a new target (`newTarget`).\"},\"supportsInterface(bytes4)\":{\"params\":{\"_interfaceId\":\"The ID of the interface.\"},\"returns\":{\"_0\":\"Returns `true` if the interface is supported.\"}},\"upgradeTo(address)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"},\"upgradeToAndCall(address,bytes)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"}},\"version\":1},\"userdoc\":{\"errors\":{\"DaoUnauthorized(address,address,address,bytes32)\":[{\"notice\":\"Thrown if a call is unauthorized in the associated DAO.\"}]},\"kind\":\"user\",\"methods\":{\"UPGRADE_PLUGIN_PERMISSION_ID()\":{\"notice\":\"The ID of the permission required to call the `_authorizeUpgrade` function.\"},\"dao()\":{\"notice\":\"Returns the DAO contract.\"},\"implementation()\":{\"notice\":\"Returns the address of the implementation contract in the [proxy storage slot](https://eips.ethereum.org/EIPS/eip-1967) slot the [UUPS proxy](https://eips.ethereum.org/EIPS/eip-1822) is pointing to.\"},\"pluginType()\":{\"notice\":\"Returns the plugin's type\"},\"protocolVersion()\":{\"notice\":\"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\"},\"setTarget(address)\":{\"notice\":\"Can only be called by the current owner. TODO\"},\"supportsInterface(bytes4)\":{\"notice\":\"Checks if an interface is supported by this or its parent contract.\"}},\"notice\":\"A mock upgradeable plugin to be deployed via the UUPS proxy pattern. v1.1 (Release 1, Build 1)\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/mocks/plugin/PluginUUPSUpgradeableMock.sol\":\"PluginUUPSUpgradeableMockBuild1\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/interfaces/IERC1967Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (interfaces/IERC1967.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\\n *\\n * _Available since v4.8.3._\\n */\\ninterface IERC1967Upgradeable {\\n /**\\n * @dev Emitted when the implementation is upgraded.\\n */\\n event Upgraded(address indexed implementation);\\n\\n /**\\n * @dev Emitted when the admin account has changed.\\n */\\n event AdminChanged(address previousAdmin, address newAdmin);\\n\\n /**\\n * @dev Emitted when the beacon is changed.\\n */\\n event BeaconUpgraded(address indexed beacon);\\n}\\n\",\"keccak256\":\"0x47d6e06872b12e72c79d1b5eb55842f860b5fb1207b2317c2358d2766b950a7b\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822ProxiableUpgradeable {\\n /**\\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n * address.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy.\\n */\\n function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../beacon/IBeaconUpgradeable.sol\\\";\\nimport \\\"../../interfaces/IERC1967Upgradeable.sol\\\";\\nimport \\\"../../interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\nimport \\\"../../utils/StorageSlotUpgradeable.sol\\\";\\nimport {Initializable} from \\\"../utils/Initializable.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n */\\nabstract contract ERC1967UpgradeUpgradeable is Initializable, IERC1967Upgradeable {\\n // This is the keccak-256 hash of \\\"eip1967.proxy.rollback\\\" subtracted by 1\\n bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n /**\\n * @dev Storage slot with the address of the current implementation.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n function __ERC1967Upgrade_init() internal onlyInitializing {\\n }\\n\\n function __ERC1967Upgrade_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _getImplementation() internal view returns (address) {\\n return StorageSlotUpgradeable.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 implementation slot.\\n */\\n function _setImplementation(address newImplementation) private {\\n require(AddressUpgradeable.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n StorageSlotUpgradeable.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n }\\n\\n /**\\n * @dev Perform implementation upgrade\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeTo(address newImplementation) internal {\\n _setImplementation(newImplementation);\\n emit Upgraded(newImplementation);\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCall(address newImplementation, bytes memory data, bool forceCall) internal {\\n _upgradeTo(newImplementation);\\n if (data.length > 0 || forceCall) {\\n AddressUpgradeable.functionDelegateCall(newImplementation, data);\\n }\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCallUUPS(address newImplementation, bytes memory data, bool forceCall) internal {\\n // Upgrades from old implementations will perform a rollback test. This test requires the new\\n // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n // this special case will break upgrade paths from old UUPS implementation to new ones.\\n if (StorageSlotUpgradeable.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n _setImplementation(newImplementation);\\n } else {\\n try IERC1822ProxiableUpgradeable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n require(slot == _IMPLEMENTATION_SLOT, \\\"ERC1967Upgrade: unsupported proxiableUUID\\\");\\n } catch {\\n revert(\\\"ERC1967Upgrade: new implementation is not UUPS\\\");\\n }\\n _upgradeToAndCall(newImplementation, data, forceCall);\\n }\\n }\\n\\n /**\\n * @dev Storage slot with the admin of the contract.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _getAdmin() internal view returns (address) {\\n return StorageSlotUpgradeable.getAddressSlot(_ADMIN_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 admin slot.\\n */\\n function _setAdmin(address newAdmin) private {\\n require(newAdmin != address(0), \\\"ERC1967: new admin is the zero address\\\");\\n StorageSlotUpgradeable.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n */\\n function _changeAdmin(address newAdmin) internal {\\n emit AdminChanged(_getAdmin(), newAdmin);\\n _setAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\\n */\\n bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n /**\\n * @dev Returns the current beacon.\\n */\\n function _getBeacon() internal view returns (address) {\\n return StorageSlotUpgradeable.getAddressSlot(_BEACON_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new beacon in the EIP1967 beacon slot.\\n */\\n function _setBeacon(address newBeacon) private {\\n require(AddressUpgradeable.isContract(newBeacon), \\\"ERC1967: new beacon is not a contract\\\");\\n require(\\n AddressUpgradeable.isContract(IBeaconUpgradeable(newBeacon).implementation()),\\n \\\"ERC1967: beacon implementation is not a contract\\\"\\n );\\n StorageSlotUpgradeable.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n }\\n\\n /**\\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n *\\n * Emits a {BeaconUpgraded} event.\\n */\\n function _upgradeBeaconToAndCall(address newBeacon, bytes memory data, bool forceCall) internal {\\n _setBeacon(newBeacon);\\n emit BeaconUpgraded(newBeacon);\\n if (data.length > 0 || forceCall) {\\n AddressUpgradeable.functionDelegateCall(IBeaconUpgradeable(newBeacon).implementation(), data);\\n }\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x7795808e3899c805254e3ae58074b20f799b466e3f43e057e47bedee5fb771f8\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeaconUpgradeable {\\n /**\\n * @dev Must return an address that can be used as a delegate call target.\\n *\\n * {BeaconProxy} will check that this address is a contract.\\n */\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/UUPSUpgradeable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport \\\"../ERC1967/ERC1967UpgradeUpgradeable.sol\\\";\\nimport {Initializable} from \\\"./Initializable.sol\\\";\\n\\n/**\\n * @dev An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an\\n * {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy.\\n *\\n * A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is\\n * reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing\\n * `UUPSUpgradeable` with a custom implementation of upgrades.\\n *\\n * The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism.\\n *\\n * _Available since v4.1._\\n */\\nabstract contract UUPSUpgradeable is Initializable, IERC1822ProxiableUpgradeable, ERC1967UpgradeUpgradeable {\\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable state-variable-assignment\\n address private immutable __self = address(this);\\n\\n /**\\n * @dev Check that the execution is being performed through a delegatecall call and that the execution context is\\n * a proxy contract with an implementation (as defined in ERC1967) pointing to self. This should only be the case\\n * for UUPS and transparent proxies that are using the current contract as their implementation. Execution of a\\n * function through ERC1167 minimal proxies (clones) would not normally pass this test, but is not guaranteed to\\n * fail.\\n */\\n modifier onlyProxy() {\\n require(address(this) != __self, \\\"Function must be called through delegatecall\\\");\\n require(_getImplementation() == __self, \\\"Function must be called through active proxy\\\");\\n _;\\n }\\n\\n /**\\n * @dev Check that the execution is not being performed through a delegate call. This allows a function to be\\n * callable on the implementing contract but not through proxies.\\n */\\n modifier notDelegated() {\\n require(address(this) == __self, \\\"UUPSUpgradeable: must not be called through delegatecall\\\");\\n _;\\n }\\n\\n function __UUPSUpgradeable_init() internal onlyInitializing {\\n }\\n\\n function __UUPSUpgradeable_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the\\n * implementation. It is used to validate the implementation's compatibility when performing an upgrade.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\\n */\\n function proxiableUUID() external view virtual override notDelegated returns (bytes32) {\\n return _IMPLEMENTATION_SLOT;\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy to `newImplementation`.\\n *\\n * Calls {_authorizeUpgrade}.\\n *\\n * Emits an {Upgraded} event.\\n *\\n * @custom:oz-upgrades-unsafe-allow-reachable delegatecall\\n */\\n function upgradeTo(address newImplementation) public virtual onlyProxy {\\n _authorizeUpgrade(newImplementation);\\n _upgradeToAndCallUUPS(newImplementation, new bytes(0), false);\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call\\n * encoded in `data`.\\n *\\n * Calls {_authorizeUpgrade}.\\n *\\n * Emits an {Upgraded} event.\\n *\\n * @custom:oz-upgrades-unsafe-allow-reachable delegatecall\\n */\\n function upgradeToAndCall(address newImplementation, bytes memory data) public payable virtual onlyProxy {\\n _authorizeUpgrade(newImplementation);\\n _upgradeToAndCallUUPS(newImplementation, data, true);\\n }\\n\\n /**\\n * @dev Function that should revert when `msg.sender` is not authorized to upgrade the contract. Called by\\n * {upgradeTo} and {upgradeToAndCall}.\\n *\\n * Normally, this function will use an xref:access.adoc[access control] modifier such as {Ownable-onlyOwner}.\\n *\\n * ```solidity\\n * function _authorizeUpgrade(address) internal override onlyOwner {}\\n * ```\\n */\\n function _authorizeUpgrade(address newImplementation) internal virtual;\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0xefb41f5c1a00249b7a99f0782f8c557865605426a3fb6e5fe9ae334293ae4f33\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n function __Context_init() internal onlyInitializing {\\n }\\n\\n function __Context_init_unchained() internal onlyInitializing {\\n }\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n function _contextSuffixLength() internal view virtual returns (uint256) {\\n return 0;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x75097e35253e7fb282ee4d7f27a80eaacfa759923185bf17302a89cbc059c5ef\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/StorageSlot.sol)\\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```solidity\\n * contract ERC1967 {\\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n * function _getImplementation() internal view returns (address) {\\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n * }\\n *\\n * function _setImplementation(address newImplementation) internal {\\n * require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n * }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._\\n * _Available since v4.9 for `string`, `bytes`._\\n */\\nlibrary StorageSlotUpgradeable {\\n struct AddressSlot {\\n address value;\\n }\\n\\n struct BooleanSlot {\\n bool value;\\n }\\n\\n struct Bytes32Slot {\\n bytes32 value;\\n }\\n\\n struct Uint256Slot {\\n uint256 value;\\n }\\n\\n struct StringSlot {\\n string value;\\n }\\n\\n struct BytesSlot {\\n bytes value;\\n }\\n\\n /**\\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n */\\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n */\\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n */\\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n */\\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` with member `value` located at `slot`.\\n */\\n function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\\n */\\n function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` with member `value` located at `slot`.\\n */\\n function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\\n */\\n function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n}\\n\",\"keccak256\":\"0x07ac95acad040f1fb1f6120dd0aa5f702db69446e95f82613721879d30de0908\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165Upgradeable.sol\\\";\\nimport {Initializable} from \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165Upgradeable is Initializable, IERC165Upgradeable {\\n function __ERC165_init() internal onlyInitializing {\\n }\\n\\n function __ERC165_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165Upgradeable).interfaceId;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0xd90d7723512df65ae417adaf0801042940f0dabd60039ceeaffe34aa5b238da1\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165Upgradeable {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\"},\"src/dao/IDAO.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IDAO\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for DAOs within the Aragon App DAO framework.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IDAO {\\n /// @notice The action struct to be consumed by the DAO's `execute` function resulting in an external call.\\n /// @param to The address to call.\\n /// @param value The native token value to be sent with the call.\\n /// @param data The bytes-encoded function selector and calldata for the call.\\n struct Action {\\n address to;\\n uint256 value;\\n bytes data;\\n }\\n\\n /// @notice Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\\n /// @param _where The address of the contract.\\n /// @param _who The address of a EOA or contract to give the permissions.\\n /// @param _permissionId The permission identifier.\\n /// @param _data The optional data passed to the `PermissionCondition` registered.\\n /// @return Returns true if the address has permission, false if not.\\n function hasPermission(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes memory _data\\n ) external view returns (bool);\\n\\n /// @notice Updates the DAO metadata (e.g., an IPFS hash).\\n /// @param _metadata The IPFS hash of the new metadata object.\\n function setMetadata(bytes calldata _metadata) external;\\n\\n /// @notice Emitted when the DAO metadata is updated.\\n /// @param metadata The IPFS hash of the new metadata object.\\n event MetadataSet(bytes metadata);\\n\\n /// @notice Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted.\\n /// @param _callId The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce.\\n /// @param _actions The array of actions.\\n /// @param _allowFailureMap A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @return The array of results obtained from the executed actions in `bytes`.\\n /// @return The resulting failure map containing the actions have actually failed.\\n function execute(\\n bytes32 _callId,\\n Action[] memory _actions,\\n uint256 _allowFailureMap\\n ) external returns (bytes[] memory, uint256);\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param actor The address of the caller.\\n /// @param callId The ID of the call.\\n /// @param actions The array of actions executed.\\n /// @param allowFailureMap The allow failure map encoding which actions are allowed to fail.\\n /// @param failureMap The failure map encoding which actions have failed.\\n /// @param execResults The array with the results of the executed actions.\\n /// @dev The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce.\\n event Executed(\\n address indexed actor,\\n bytes32 callId,\\n Action[] actions,\\n uint256 allowFailureMap,\\n uint256 failureMap,\\n bytes[] execResults\\n );\\n\\n /// @notice Emitted when a standard callback is registered.\\n /// @param interfaceId The ID of the interface.\\n /// @param callbackSelector The selector of the callback function.\\n /// @param magicNumber The magic number to be registered for the callback function selector.\\n event StandardCallbackRegistered(\\n bytes4 interfaceId,\\n bytes4 callbackSelector,\\n bytes4 magicNumber\\n );\\n\\n /// @notice Deposits (native) tokens to the DAO contract with a reference string.\\n /// @param _token The address of the token or address(0) in case of the native token.\\n /// @param _amount The amount of tokens to deposit.\\n /// @param _reference The reference describing the deposit reason.\\n function deposit(address _token, uint256 _amount, string calldata _reference) external payable;\\n\\n /// @notice Emitted when a token deposit has been made to the DAO.\\n /// @param sender The address of the sender.\\n /// @param token The address of the deposited token.\\n /// @param amount The amount of tokens deposited.\\n /// @param _reference The reference describing the deposit reason.\\n event Deposited(\\n address indexed sender,\\n address indexed token,\\n uint256 amount,\\n string _reference\\n );\\n\\n /// @notice Emitted when a native token deposit has been made to the DAO.\\n /// @dev This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).\\n /// @param sender The address of the sender.\\n /// @param amount The amount of native tokens deposited.\\n event NativeTokenDeposited(address sender, uint256 amount);\\n\\n /// @notice Setter for the trusted forwarder verifying the meta transaction.\\n /// @param _trustedForwarder The trusted forwarder address.\\n function setTrustedForwarder(address _trustedForwarder) external;\\n\\n /// @notice Getter for the trusted forwarder verifying the meta transaction.\\n /// @return The trusted forwarder address.\\n function getTrustedForwarder() external view returns (address);\\n\\n /// @notice Emitted when a new TrustedForwarder is set on the DAO.\\n /// @param forwarder the new forwarder address.\\n event TrustedForwarderSet(address forwarder);\\n\\n /// @notice Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\\n /// @param _hash The hash of the data to be signed.\\n /// @param _signature The signature byte array associated with `_hash`.\\n /// @return Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not.\\n function isValidSignature(bytes32 _hash, bytes memory _signature) external returns (bytes4);\\n\\n /// @notice Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\\n /// @param _interfaceId The ID of the interface.\\n /// @param _callbackSelector The selector of the callback function.\\n /// @param _magicNumber The magic number to be registered for the function signature.\\n function registerStandardCallback(\\n bytes4 _interfaceId,\\n bytes4 _callbackSelector,\\n bytes4 _magicNumber\\n ) external;\\n\\n /// @notice Removed function being left here to not corrupt the IDAO interface ID. Any call will revert.\\n /// @dev Introduced in v1.0.0. Removed in v1.4.0.\\n function setSignatureValidator(address) external;\\n}\\n\",\"keccak256\":\"0xb7f615523c26de042edce98731c658f44a1edb2464387ac1b642c4c69f57128e\",\"license\":\"AGPL-3.0-or-later\"},\"src/mocks/plugin/PluginUUPSUpgradeableMock.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\n/* solhint-disable one-contract-per-file */\\npragma solidity ^0.8.8;\\n\\nimport {PluginUUPSUpgradeable} from \\\"../../plugin/PluginUUPSUpgradeable.sol\\\";\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice A mock upgradeable plugin to be deployed via the UUPS proxy pattern.\\n/// v1.1 (Release 1, Build 1)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableMockBuild1 is PluginUUPSUpgradeable {\\n uint256 public state1;\\n\\n function initialize(IDAO _dao) external initializer {\\n __PluginUUPSUpgradeable_init(_dao);\\n state1 = 1;\\n }\\n}\\n\\n/// @notice A mock upgradeable plugin to be deployed via the UUPS proxy pattern.\\n/// v1.1 (Release 1, Build 2)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableMockBuild2 is PluginUUPSUpgradeable {\\n uint256 public state1;\\n uint256 public state2;\\n\\n function initialize(IDAO _dao) external reinitializer(2) {\\n __PluginUUPSUpgradeable_init(_dao);\\n state1 = 1;\\n state2 = 2;\\n }\\n\\n function initializeFrom(uint16 _previousBuild) external reinitializer(2) {\\n if (_previousBuild < 2) {\\n state2 = 2;\\n }\\n }\\n}\\n\\n/// @notice A mock upgradeable plugin to be deployed via the UUPS proxy pattern.\\n/// v1.1 (Release 1, Build 3)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableMockBuild3 is PluginUUPSUpgradeable {\\n uint256 public state1;\\n uint256 public state2;\\n uint256 public state3;\\n\\n function initialize(IDAO _dao) external reinitializer(3) {\\n __PluginUUPSUpgradeable_init(_dao);\\n state1 = 1;\\n state2 = 2;\\n state3 = 3;\\n }\\n\\n function initializeFrom(uint16 _previousBuild) external reinitializer(3) {\\n if (_previousBuild < 2) {\\n state2 = 2;\\n }\\n if (_previousBuild < 3) {\\n state3 = 3;\\n }\\n }\\n}\\n\\n/// @notice A mock upgradeable plugin missing an initializer function.\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableMockBad is PluginUUPSUpgradeable {\\n uint256 public state1;\\n\\n function notAnInitializer(IDAO _dao) external {\\n __PluginUUPSUpgradeable_init(_dao);\\n state1 = 1;\\n }\\n}\\n\",\"keccak256\":\"0x2917df3b1da0de27f58cf531afeaa4e6c4285717247cbdd9ecc7880ae5cb9cb0\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/DaoAuthorizableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ContextUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\\\";\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\nimport {_auth} from \\\"./auth.sol\\\";\\n\\n/// @title DaoAuthorizableUpgradeable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract contract providing a meta-transaction compatible modifier for upgradeable or cloneable contracts to authorize function calls through an associated DAO.\\n/// @dev Make sure to call `__DaoAuthorizableUpgradeable_init` during initialization of the inheriting contract.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract DaoAuthorizableUpgradeable is ContextUpgradeable {\\n /// @notice The associated DAO managing the permissions of inheriting contracts.\\n IDAO private dao_;\\n\\n /// @notice Initializes the contract by setting the associated DAO.\\n /// @param _dao The associated DAO address.\\n // solhint-disable-next-line func-name-mixedcase\\n function __DaoAuthorizableUpgradeable_init(IDAO _dao) internal onlyInitializing {\\n dao_ = _dao;\\n }\\n\\n /// @notice Returns the DAO contract.\\n /// @return The DAO contract.\\n function dao() public view returns (IDAO) {\\n return dao_;\\n }\\n\\n /// @notice A modifier to make functions on inheriting contracts authorized. Permissions to call the function are checked through the associated DAO's permission manager.\\n /// @param _permissionId The permission identifier required to call the method this modifier is applied to.\\n modifier auth(bytes32 _permissionId) {\\n _auth(dao_, address(this), _msgSender(), _permissionId, _msgData());\\n _;\\n }\\n\\n /// @notice This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain (see [OpenZeppelin's guide about storage gaps](https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps)).\\n uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0x7fac6b01b037ba1cb9d6a22d3f43b0785037dcf496ffb672434d9bf7227d2585\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/auth.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice Thrown if a call is unauthorized in the associated DAO.\\n/// @param dao The associated DAO.\\n/// @param where The context in which the authorization reverted.\\n/// @param who The address (EOA or contract) missing the permission.\\n/// @param permissionId The permission identifier.\\nerror DaoUnauthorized(address dao, address where, address who, bytes32 permissionId);\\n\\n/// @notice A free function checking if a caller is granted permissions on a target contract via a permission identifier that redirects the approval to a `PermissionCondition` if this was specified in the setup.\\n/// @param _where The address of the target contract for which `who` receives permission.\\n/// @param _who The address (EOA or contract) owning the permission.\\n/// @param _permissionId The permission identifier.\\n/// @param _data The optional data passed to the `PermissionCondition` registered.\\n/// @custom:security-contact sirt@aragon.org\\nfunction _auth(\\n IDAO _dao,\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes calldata _data\\n) view {\\n if (!_dao.hasPermission(_where, _who, _permissionId, _data))\\n revert DaoUnauthorized({\\n dao: address(_dao),\\n where: _where,\\n who: _who,\\n permissionId: _permissionId\\n });\\n}\\n\",\"keccak256\":\"0x878764b4f87fe0651fb3798fb9cb87c952f8c6caf6ae79c7f09de84df6c00298\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/IPlugin.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IPlugin\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the traits of a plugin.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IPlugin {\\n enum PluginType {\\n UUPS,\\n Cloneable,\\n Constructable\\n }\\n\\n /// @notice Returns the plugin's type\\n function pluginType() external view returns (PluginType);\\n}\\n\",\"keccak256\":\"0xc57cd0d10b6380ab7f54c713a509e88fd8f4ad9288313a0e8e12b8887817ddfe\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/PluginUUPSUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {UUPSUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\\\";\\nimport {IERC1822ProxiableUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport {ERC165Upgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\\\";\\n\\nimport {IProtocolVersion} from \\\"../utils/versioning/IProtocolVersion.sol\\\";\\nimport {ProtocolVersion} from \\\"../utils/versioning/ProtocolVersion.sol\\\";\\nimport {DaoAuthorizableUpgradeable} from \\\"../permission/auth/DaoAuthorizableUpgradeable.sol\\\";\\nimport {IDAO} from \\\"../dao/IDAO.sol\\\";\\nimport {IPlugin} from \\\"./IPlugin.sol\\\";\\n\\n/// @title PluginUUPSUpgradeable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract, upgradeable contract to inherit from when creating a plugin being deployed via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract PluginUUPSUpgradeable is\\n IPlugin,\\n ERC165Upgradeable,\\n UUPSUpgradeable,\\n DaoAuthorizableUpgradeable,\\n ProtocolVersion\\n{\\n // NOTE: When adding new state variables to the contract, the size of `_gap` has to be adapted below as well.\\n address public target;\\n\\n /// @dev Emitted each time the Target is set.\\n event TargetSet(address indexed previousTarget, address indexed newTarget);\\n\\n /// @notice Disables the initializers on the implementation contract to prevent it from being left uninitialized.\\n /// @custom:oz-upgrades-unsafe-allow constructor\\n constructor() {\\n _disableInitializers();\\n }\\n\\n /// @inheritdoc IPlugin\\n function pluginType() public pure override returns (PluginType) {\\n return PluginType.UUPS;\\n }\\n\\n /// @notice The ID of the permission required to call the `_authorizeUpgrade` function.\\n bytes32 public constant UPGRADE_PLUGIN_PERMISSION_ID = keccak256(\\\"UPGRADE_PLUGIN_PERMISSION\\\");\\n\\n /// @notice Initializes the plugin by storing the associated DAO.\\n /// @param _dao The DAO contract.\\n // solhint-disable-next-line func-name-mixedcase\\n function __PluginUUPSUpgradeable_init(IDAO _dao) internal virtual onlyInitializing {\\n __DaoAuthorizableUpgradeable_init(_dao);\\n }\\n\\n /// @dev Sets the target to a new target (`newTarget`).\\n /// @notice Can only be called by the current owner. TODO\\n function setTarget(address _target) public {\\n address previousTarget = target;\\n target = _target;\\n emit TargetSet(previousTarget, _target);\\n }\\n\\n /// @notice Checks if an interface is supported by this or its parent contract.\\n /// @param _interfaceId The ID of the interface.\\n /// @return Returns `true` if the interface is supported.\\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\\n return\\n _interfaceId == type(IPlugin).interfaceId ||\\n _interfaceId == type(IProtocolVersion).interfaceId ||\\n _interfaceId == type(IERC1822ProxiableUpgradeable).interfaceId ||\\n super.supportsInterface(_interfaceId);\\n }\\n\\n /// @notice Returns the address of the implementation contract in the [proxy storage slot](https://eips.ethereum.org/EIPS/eip-1967) slot the [UUPS proxy](https://eips.ethereum.org/EIPS/eip-1822) is pointing to.\\n /// @return The address of the implementation contract.\\n function implementation() public view returns (address) {\\n return _getImplementation();\\n }\\n\\n /// @notice Forwards the actions to the currently set `target` for the execution.\\n /// @param _callId Identifier for this execution.\\n /// @param _actions actions that will be eventually called.\\n /// @param _allowFailureMap Bitmap-encoded number. TODO:\\n /// @return execResults address of the implementation contract.\\n /// @return failureMap address of the implementation contract.\\n function _execute(\\n bytes32 _callId,\\n IDAO.Action[] calldata _actions,\\n uint256 _allowFailureMap\\n ) internal virtual returns (bytes[] memory execResults, uint256 failureMap) {\\n (execResults, failureMap) = IDAO(target).execute(_callId, _actions, _allowFailureMap);\\n }\\n\\n /// @notice Forwards the actions to the `target` for the execution.\\n /// @param _target Forwards the actions to the specific target.\\n /// @param _callId Identifier for this execution.\\n /// @param _actions actions that will be eventually called.\\n /// @param _allowFailureMap Bitmap-encoded number. TODO:\\n /// @return execResults address of the implementation contract.\\n /// @return failureMap address of the implementation contract.\\n function _execute(\\n address _target,\\n bytes32 _callId,\\n IDAO.Action[] calldata _actions,\\n uint256 _allowFailureMap\\n ) internal virtual returns (bytes[] memory execResults, uint256 failureMap) {\\n (execResults, failureMap) = IDAO(_target).execute(_callId, _actions, _allowFailureMap);\\n }\\n\\n /// @notice Internal method authorizing the upgrade of the contract via the [upgradeability mechanism for UUPS proxies](https://docs.openzeppelin.com/contracts/4.x/api/proxy#UUPSUpgradeable) (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\\n /// @dev The caller must have the `UPGRADE_PLUGIN_PERMISSION_ID` permission.\\n function _authorizeUpgrade(\\n address\\n )\\n internal\\n virtual\\n override\\n auth(UPGRADE_PLUGIN_PERMISSION_ID)\\n // solhint-disable-next-line no-empty-blocks\\n {\\n\\n }\\n\\n /// @notice This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain (see [OpenZeppelin's guide about storage gaps](https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps)).\\n uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0xce1d0126b3ae8c8afc887fba9f49b1cc35f84f1c1d5bf4cadee330c7ae15014f\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/IProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IProtocolVersion\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the semantic Aragon OSx protocol version number.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IProtocolVersion {\\n /// @notice Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\\n /// @return _version Returns the semantic Aragon OSx protocol version number.\\n /// @dev This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\\n function protocolVersion() external view returns (uint8[3] memory _version);\\n}\\n\",\"keccak256\":\"0x00a4da654d21dc1bdadbdc8bd54bb86c378c56f85e461ccc31303628ea621361\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/ProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IProtocolVersion} from \\\"./IProtocolVersion.sol\\\";\\n\\n/// @title ProtocolVersion\\n/// @author Aragon X - 2023\\n/// @notice An abstract, stateless, non-upgradeable contract providing the current Aragon OSx protocol version number.\\n/// @dev Do not add any new variables to this contract that would shift down storage in the inheritance chain.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract ProtocolVersion is IProtocolVersion {\\n // IMPORTANT: Do not add any storage variable, see the above notice.\\n\\n /// @inheritdoc IProtocolVersion\\n function protocolVersion() public pure returns (uint8[3] memory) {\\n return [1, 4, 0];\\n }\\n}\\n\",\"keccak256\":\"0x3975c937be935f687c6b6b8f379071232681e98cf04b175d72781b819ea52bdb\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[{"astId":372,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild1","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":375,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild1","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":1280,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild1","label":"__gap","offset":0,"slot":"1","type":"t_array(t_uint256)50_storage"},{"astId":354,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild1","label":"__gap","offset":0,"slot":"51","type":"t_array(t_uint256)50_storage"},{"astId":670,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild1","label":"__gap","offset":0,"slot":"101","type":"t_array(t_uint256)50_storage"},{"astId":1051,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild1","label":"__gap","offset":0,"slot":"151","type":"t_array(t_uint256)50_storage"},{"astId":3887,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild1","label":"dao_","offset":0,"slot":"201","type":"t_contract(IDAO)2538"},{"astId":3936,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild1","label":"__gap","offset":0,"slot":"202","type":"t_array(t_uint256)49_storage"},{"astId":4382,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild1","label":"target","offset":0,"slot":"251","type":"t_address"},{"astId":4575,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild1","label":"__gap","offset":0,"slot":"252","type":"t_array(t_uint256)49_storage"},{"astId":3119,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild1","label":"state1","offset":0,"slot":"301","type":"t_uint256"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_array(t_uint256)49_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[49]","numberOfBytes":"1568"},"t_array(t_uint256)50_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[50]","numberOfBytes":"1600"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_contract(IDAO)2538":{"encoding":"inplace","label":"contract IDAO","numberOfBytes":"20"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"errors":{"DaoUnauthorized(address,address,address,bytes32)":[{"notice":"Thrown if a call is unauthorized in the associated DAO."}]},"kind":"user","methods":{"UPGRADE_PLUGIN_PERMISSION_ID()":{"notice":"The ID of the permission required to call the `_authorizeUpgrade` function."},"dao()":{"notice":"Returns the DAO contract."},"implementation()":{"notice":"Returns the address of the implementation contract in the [proxy storage slot](https://eips.ethereum.org/EIPS/eip-1967) slot the [UUPS proxy](https://eips.ethereum.org/EIPS/eip-1822) is pointing to."},"pluginType()":{"notice":"Returns the plugin's type"},"protocolVersion()":{"notice":"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with."},"setTarget(address)":{"notice":"Can only be called by the current owner. TODO"},"supportsInterface(bytes4)":{"notice":"Checks if an interface is supported by this or its parent contract."}},"notice":"A mock upgradeable plugin to be deployed via the UUPS proxy pattern. v1.1 (Release 1, Build 1)","version":1}},"PluginUUPSUpgradeableMockBuild2":{"abi":[{"inputs":[{"internalType":"address","name":"dao","type":"address"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"name":"DaoUnauthorized","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"beacon","type":"address"}],"name":"BeaconUpgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousTarget","type":"address"},{"indexed":true,"internalType":"address","name":"newTarget","type":"address"}],"name":"TargetSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"inputs":[],"name":"UPGRADE_PLUGIN_PERMISSION_ID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dao","outputs":[{"internalType":"contract IDAO","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IDAO","name":"_dao","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"_previousBuild","type":"uint16"}],"name":"initializeFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pluginType","outputs":[{"internalType":"enum IPlugin.PluginType","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"protocolVersion","outputs":[{"internalType":"uint8[3]","name":"","type":"uint8[3]"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_target","type":"address"}],"name":"setTarget","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"state1","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"state2","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"target","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"}],"name":"upgradeTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"}],"devdoc":{"details":"DO NOT USE IN PRODUCTION!","errors":{"DaoUnauthorized(address,address,address,bytes32)":[{"params":{"dao":"The associated DAO.","permissionId":"The permission identifier.","where":"The context in which the authorization reverted.","who":"The address (EOA or contract) missing the permission."}}]},"kind":"dev","methods":{"dao()":{"returns":{"_0":"The DAO contract."}},"implementation()":{"returns":{"_0":"The address of the implementation contract."}},"protocolVersion()":{"details":"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.","returns":{"_0":"Returns the semantic Aragon OSx protocol version number."}},"proxiableUUID()":{"details":"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier."},"setTarget(address)":{"details":"Sets the target to a new target (`newTarget`)."},"supportsInterface(bytes4)":{"params":{"_interfaceId":"The ID of the interface."},"returns":{"_0":"Returns `true` if the interface is supported."}},"upgradeTo(address)":{"custom:oz-upgrades-unsafe-allow-reachable":"delegatecall","details":"Upgrade the implementation of the proxy to `newImplementation`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."},"upgradeToAndCall(address,bytes)":{"custom:oz-upgrades-unsafe-allow-reachable":"delegatecall","details":"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."}},"version":1},"evm":{"bytecode":{"functionDebugData":{"@_4397":{"entryPoint":null,"id":4397,"parameterSlots":0,"returnSlots":0},"@_disableInitializers_515":{"entryPoint":34,"id":515,"parameterSlots":0,"returnSlots":0},"abi_encode_tuple_t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:608:50","statements":[{"nodeType":"YulBlock","src":"6:3:50","statements":[]},{"body":{"nodeType":"YulBlock","src":"188:229:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"205:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"216:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"198:6:50"},"nodeType":"YulFunctionCall","src":"198:21:50"},"nodeType":"YulExpressionStatement","src":"198:21:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"239:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"250:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"235:3:50"},"nodeType":"YulFunctionCall","src":"235:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"255:2:50","type":"","value":"39"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"228:6:50"},"nodeType":"YulFunctionCall","src":"228:30:50"},"nodeType":"YulExpressionStatement","src":"228:30:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"278:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"289:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"274:3:50"},"nodeType":"YulFunctionCall","src":"274:18:50"},{"hexValue":"496e697469616c697a61626c653a20636f6e747261637420697320696e697469","kind":"string","nodeType":"YulLiteral","src":"294:34:50","type":"","value":"Initializable: contract is initi"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"267:6:50"},"nodeType":"YulFunctionCall","src":"267:62:50"},"nodeType":"YulExpressionStatement","src":"267:62:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"349:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"360:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"345:3:50"},"nodeType":"YulFunctionCall","src":"345:18:50"},{"hexValue":"616c697a696e67","kind":"string","nodeType":"YulLiteral","src":"365:9:50","type":"","value":"alizing"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"338:6:50"},"nodeType":"YulFunctionCall","src":"338:37:50"},"nodeType":"YulExpressionStatement","src":"338:37:50"},{"nodeType":"YulAssignment","src":"384:27:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"396:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"407:3:50","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"392:3:50"},"nodeType":"YulFunctionCall","src":"392:19:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"384:4:50"}]}]},"name":"abi_encode_tuple_t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"165:9:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"179:4:50","type":""}],"src":"14:403:50"},{"body":{"nodeType":"YulBlock","src":"519:87:50","statements":[{"nodeType":"YulAssignment","src":"529:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"541:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"552:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"537:3:50"},"nodeType":"YulFunctionCall","src":"537:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"529:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"571:9:50"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"586:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"594:4:50","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"582:3:50"},"nodeType":"YulFunctionCall","src":"582:17:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"564:6:50"},"nodeType":"YulFunctionCall","src":"564:36:50"},"nodeType":"YulExpressionStatement","src":"564:36:50"}]},"name":"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"488:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"499:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"510:4:50","type":""}],"src":"422:184:50"}]},"contents":"{\n { }\n function abi_encode_tuple_t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 39)\n mstore(add(headStart, 64), \"Initializable: contract is initi\")\n mstore(add(headStart, 96), \"alizing\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xff))\n }\n}","id":50,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60a06040523060805234801561001457600080fd5b5061001d610022565b6100e1565b600054610100900460ff161561008e5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116146100df576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6080516112d961011860003960008181610479015281816104fe015281816105f401528181610679015261076301526112d96000f3fe6080604052600436106100e85760003560e01c806352d1902d1161008a578063c4d66de811610059578063c4d66de814610256578063c9c4bfca14610276578063d4b83992146102aa578063efe51cca146102ca57600080fd5b806352d1902d146101e75780635c60da1b1461020a5780636accab8c1461021f578063776d1a011461023657600080fd5b80633659cfe6116100c65780633659cfe6146101665780634162169f1461018657806341de6830146101b85780634f1ef286146101d457600080fd5b806301ffc9a7146100ed578063039a8c50146101225780632ae9c60014610144575b600080fd5b3480156100f957600080fd5b5061010d610108366004610fed565b6102e1565b60405190151581526020015b60405180910390f35b34801561012e57600080fd5b5061014261013d366004611017565b61034d565b005b34801561015057600080fd5b50610159610445565b604051610119919061103b565b34801561017257600080fd5b50610142610181366004611084565b61046f565b34801561019257600080fd5b5060c9546001600160a01b03165b6040516001600160a01b039091168152602001610119565b3480156101c457600080fd5b50600060405161011991906110a1565b6101426101e23660046110df565b6105ea565b3480156101f357600080fd5b506101fc610756565b604051908152602001610119565b34801561021657600080fd5b506101a061081b565b34801561022b57600080fd5b506101fc61012d5481565b34801561024257600080fd5b50610142610251366004611084565b610853565b34801561026257600080fd5b50610142610271366004611084565b6108b2565b34801561028257600080fd5b506101fc7f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f581565b3480156102b657600080fd5b5060fb546101a0906001600160a01b031681565b3480156102d657600080fd5b506101fc61012e5481565b60006001600160e01b0319821663041de68360e41b148061031157506001600160e01b03198216621574e360e91b145b8061032c57506001600160e01b031982166352d1902d60e01b145b8061034757506301ffc9a760e01b6001600160e01b03198316145b92915050565b600054600290610100900460ff1615801561036f575060005460ff8083169116105b6103d75760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805461ffff191660ff831617610100179055600261ffff831610156103ff57600261012e555b6000805461ff001916905560405160ff821681527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b61044d610fcf565b5060408051606081018252600181526004602082015260009181019190915290565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036104fc5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b60648201526084016103ce565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166105577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b0316146105c25760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b60648201526084016103ce565b6105cb8161099e565b604080516000808252602082019092526105e7918391906109db565b50565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036106775760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b60648201526084016103ce565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166106d27f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b03161461073d5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b60648201526084016103ce565b6107468261099e565b610752828260016109db565b5050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146107f65760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016103ce565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b600061084e7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b60fb80546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d690600090a35050565b600054600290610100900460ff161580156108d4575060005460ff8083169116105b6109375760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016103ce565b6000805461ffff191660ff83161761010017905561095482610b80565b600161012d55600261012e556000805461ff001916905560405160ff821681527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602001610439565b60c9547f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f590610752906001600160a01b0316303384600036610bf4565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610a1357610a0e83610cb0565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610a6d575060408051601f3d908101601f19168201909252610a6a918101906111a3565b60015b610adf5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201527f6f6e206973206e6f74205555505300000000000000000000000000000000000060648201526084016103ce565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114610b745760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f7860448201527f6961626c6555554944000000000000000000000000000000000000000000000060648201526084016103ce565b50610a0e838383610d7b565b600054610100900460ff16610beb5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103ce565b6105e781610da6565b604051637ef7c88360e11b81526001600160a01b0387169063fdef910690610c2890889088908890889088906004016111bc565b602060405180830381865afa158015610c45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c699190611210565b610ca857604051630cb6f8ed60e21b81526001600160a01b038088166004830152808716602483015285166044820152606481018490526084016103ce565b505050505050565b6001600160a01b0381163b610d2d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e74726163740000000000000000000000000000000000000060648201526084016103ce565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610d8483610e40565b600082511180610d915750805b15610a0e57610da08383610e80565b50505050565b600054610100900460ff16610e115760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103ce565b60c9805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610e4981610cb0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060610ea583836040518060600160405280602781526020016112a660279139610eac565b9392505050565b6060600080856001600160a01b031685604051610ec99190611256565b600060405180830381855af49150503d8060008114610f04576040519150601f19603f3d011682016040523d82523d6000602084013e610f09565b606091505b5091509150610f1a86838387610f24565b9695505050505050565b60608315610f93578251600003610f8c576001600160a01b0385163b610f8c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016103ce565b5081610f9d565b610f9d8383610fa5565b949350505050565b815115610fb55781518083602001fd5b8060405162461bcd60e51b81526004016103ce9190611272565b60405180606001604052806003906020820280368337509192915050565b600060208284031215610fff57600080fd5b81356001600160e01b031981168114610ea557600080fd5b60006020828403121561102957600080fd5b813561ffff81168114610ea557600080fd5b60608101818360005b600381101561106657815160ff16835260209283019290910190600101611044565b50505092915050565b6001600160a01b03811681146105e757600080fd5b60006020828403121561109657600080fd5b8135610ea58161106f565b60208101600383106110c357634e487b7160e01b600052602160045260246000fd5b91905290565b634e487b7160e01b600052604160045260246000fd5b600080604083850312156110f257600080fd5b82356110fd8161106f565b9150602083013567ffffffffffffffff8082111561111a57600080fd5b818501915085601f83011261112e57600080fd5b813581811115611140576111406110c9565b604051601f8201601f19908116603f01168101908382118183101715611168576111686110c9565b8160405282815288602084870101111561118157600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6000602082840312156111b557600080fd5b5051919050565b60006001600160a01b03808816835280871660208401525084604083015260806060830152826080830152828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b60006020828403121561122257600080fd5b81518015158114610ea557600080fd5b60005b8381101561124d578181015183820152602001611235565b50506000910152565b60008251611268818460208701611232565b9190910192915050565b6020815260008251806020840152611291816040850160208701611232565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a","opcodes":"PUSH1 0xA0 PUSH1 0x40 MSTORE ADDRESS PUSH1 0x80 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x14 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1D PUSH2 0x22 JUMP JUMPDEST PUSH2 0xE1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x8E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x27 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320696E697469 PUSH1 0x44 DUP3 ADD MSTORE PUSH7 0x616C697A696E67 PUSH1 0xC8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xFF SWAP1 DUP2 AND EQ PUSH2 0xDF JUMPI PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH2 0x12D9 PUSH2 0x118 PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH2 0x479 ADD MSTORE DUP2 DUP2 PUSH2 0x4FE ADD MSTORE DUP2 DUP2 PUSH2 0x5F4 ADD MSTORE DUP2 DUP2 PUSH2 0x679 ADD MSTORE PUSH2 0x763 ADD MSTORE PUSH2 0x12D9 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xE8 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x52D1902D GT PUSH2 0x8A JUMPI DUP1 PUSH4 0xC4D66DE8 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0x256 JUMPI DUP1 PUSH4 0xC9C4BFCA EQ PUSH2 0x276 JUMPI DUP1 PUSH4 0xD4B83992 EQ PUSH2 0x2AA JUMPI DUP1 PUSH4 0xEFE51CCA EQ PUSH2 0x2CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x52D1902D EQ PUSH2 0x1E7 JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0x20A JUMPI DUP1 PUSH4 0x6ACCAB8C EQ PUSH2 0x21F JUMPI DUP1 PUSH4 0x776D1A01 EQ PUSH2 0x236 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x3659CFE6 GT PUSH2 0xC6 JUMPI DUP1 PUSH4 0x3659CFE6 EQ PUSH2 0x166 JUMPI DUP1 PUSH4 0x4162169F EQ PUSH2 0x186 JUMPI DUP1 PUSH4 0x41DE6830 EQ PUSH2 0x1B8 JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x1D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xED JUMPI DUP1 PUSH4 0x39A8C50 EQ PUSH2 0x122 JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0x144 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xF9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x10D PUSH2 0x108 CALLDATASIZE PUSH1 0x4 PUSH2 0xFED JUMP JUMPDEST PUSH2 0x2E1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x12E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x142 PUSH2 0x13D CALLDATASIZE PUSH1 0x4 PUSH2 0x1017 JUMP JUMPDEST PUSH2 0x34D JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x150 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x159 PUSH2 0x445 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x119 SWAP2 SWAP1 PUSH2 0x103B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x172 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x142 PUSH2 0x181 CALLDATASIZE PUSH1 0x4 PUSH2 0x1084 JUMP JUMPDEST PUSH2 0x46F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x192 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xC9 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x119 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 PUSH1 0x40 MLOAD PUSH2 0x119 SWAP2 SWAP1 PUSH2 0x10A1 JUMP JUMPDEST PUSH2 0x142 PUSH2 0x1E2 CALLDATASIZE PUSH1 0x4 PUSH2 0x10DF JUMP JUMPDEST PUSH2 0x5EA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FC PUSH2 0x756 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x119 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x216 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1A0 PUSH2 0x81B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x22B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FC PUSH2 0x12D SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x242 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x142 PUSH2 0x251 CALLDATASIZE PUSH1 0x4 PUSH2 0x1084 JUMP JUMPDEST PUSH2 0x853 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x262 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x142 PUSH2 0x271 CALLDATASIZE PUSH1 0x4 PUSH2 0x1084 JUMP JUMPDEST PUSH2 0x8B2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x282 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FC PUSH32 0x821B6E3A557148015A918C89E5D092E878A69854A2D1A410635F771BD5A8A3F5 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xFB SLOAD PUSH2 0x1A0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FC PUSH2 0x12E SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x41DE683 PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x311 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x32C JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x52D1902D PUSH1 0xE0 SHL EQ JUMPDEST DUP1 PUSH2 0x347 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x2 SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH2 0x36F JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF DUP1 DUP4 AND SWAP2 AND LT JUMPDEST PUSH2 0x3D7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x44 DUP3 ADD MSTORE PUSH14 0x191E481A5B9A5D1A585B1A5E9959 PUSH1 0x92 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH2 0xFFFF NOT AND PUSH1 0xFF DUP4 AND OR PUSH2 0x100 OR SWAP1 SSTORE PUSH1 0x2 PUSH2 0xFFFF DUP4 AND LT ISZERO PUSH2 0x3FF JUMPI PUSH1 0x2 PUSH2 0x12E SSTORE JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH1 0xFF DUP3 AND DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH2 0x44D PUSH2 0xFCF JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x4FC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x19195B1959D85D1958D85B1B PUSH1 0xA2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3CE JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x557 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x5C2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x6163746976652070726F7879 PUSH1 0xA0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3CE JUMP JUMPDEST PUSH2 0x5CB DUP2 PUSH2 0x99E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x5E7 SWAP2 DUP4 SWAP2 SWAP1 PUSH2 0x9DB JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x677 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x19195B1959D85D1958D85B1B PUSH1 0xA2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3CE JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x6D2 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x73D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x6163746976652070726F7879 PUSH1 0xA0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3CE JUMP JUMPDEST PUSH2 0x746 DUP3 PUSH2 0x99E JUMP JUMPDEST PUSH2 0x752 DUP3 DUP3 PUSH1 0x1 PUSH2 0x9DB JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x7F6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x38 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x555550535570677261646561626C653A206D757374206E6F742062652063616C PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6C6564207468726F7567682064656C656761746563616C6C0000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3CE JUMP JUMPDEST POP PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x84E PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0xFB DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP2 SWAP1 DUP3 SWAP1 PUSH32 0x90CC2F570A6EB594B1580EA3E41247D2D73A55281889E86BD4EC2FC29C7E62D6 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x2 SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH2 0x8D4 JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF DUP1 DUP4 AND SWAP2 AND LT JUMPDEST PUSH2 0x937 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x44 DUP3 ADD MSTORE PUSH14 0x191E481A5B9A5D1A585B1A5E9959 PUSH1 0x92 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3CE JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH2 0xFFFF NOT AND PUSH1 0xFF DUP4 AND OR PUSH2 0x100 OR SWAP1 SSTORE PUSH2 0x954 DUP3 PUSH2 0xB80 JUMP JUMPDEST PUSH1 0x1 PUSH2 0x12D SSTORE PUSH1 0x2 PUSH2 0x12E SSTORE PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH1 0xFF DUP3 AND DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH2 0x439 JUMP JUMPDEST PUSH1 0xC9 SLOAD PUSH32 0x821B6E3A557148015A918C89E5D092E878A69854A2D1A410635F771BD5A8A3F5 SWAP1 PUSH2 0x752 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ADDRESS CALLER DUP5 PUSH1 0x0 CALLDATASIZE PUSH2 0xBF4 JUMP JUMPDEST PUSH32 0x4910FDFA16FED3260ED0E7147F7CC6DA11A60208B5B9406D12A635614FFD9143 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0xA13 JUMPI PUSH2 0xA0E DUP4 PUSH2 0xCB0 JUMP JUMPDEST POP POP POP JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x52D1902D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0xA6D JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0xA6A SWAP2 DUP2 ADD SWAP1 PUSH2 0x11A3 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0xADF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524331393637557067726164653A206E657720696D706C656D656E74617469 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F6E206973206E6F742055555053000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3CE JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC DUP2 EQ PUSH2 0xB74 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524331393637557067726164653A20756E737570706F727465642070726F78 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6961626C65555549440000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3CE JUMP JUMPDEST POP PUSH2 0xA0E DUP4 DUP4 DUP4 PUSH2 0xD7B JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0xBEB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3CE JUMP JUMPDEST PUSH2 0x5E7 DUP2 PUSH2 0xDA6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x7EF7C883 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0xFDEF9106 SWAP1 PUSH2 0xC28 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x11BC JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC45 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xC69 SWAP2 SWAP1 PUSH2 0x1210 JUMP JUMPDEST PUSH2 0xCA8 JUMPI PUSH1 0x40 MLOAD PUSH4 0xCB6F8ED PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND PUSH1 0x4 DUP4 ADD MSTORE DUP1 DUP8 AND PUSH1 0x24 DUP4 ADD MSTORE DUP6 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x84 ADD PUSH2 0x3CE JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND EXTCODESIZE PUSH2 0xD2D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313936373A206E657720696D706C656D656E746174696F6E206973206E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F74206120636F6E747261637400000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3CE JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xD84 DUP4 PUSH2 0xE40 JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD GT DUP1 PUSH2 0xD91 JUMPI POP DUP1 JUMPDEST ISZERO PUSH2 0xA0E JUMPI PUSH2 0xDA0 DUP4 DUP4 PUSH2 0xE80 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0xE11 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3CE JUMP JUMPDEST PUSH1 0xC9 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xE49 DUP2 PUSH2 0xCB0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xEA5 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x12A6 PUSH1 0x27 SWAP2 CODECOPY PUSH2 0xEAC JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0xEC9 SWAP2 SWAP1 PUSH2 0x1256 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xF04 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xF09 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0xF1A DUP7 DUP4 DUP4 DUP8 PUSH2 0xF24 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0xF93 JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0xF8C JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0xF8C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3CE JUMP JUMPDEST POP DUP2 PUSH2 0xF9D JUMP JUMPDEST PUSH2 0xF9D DUP4 DUP4 PUSH2 0xFA5 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0xFB5 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3CE SWAP2 SWAP1 PUSH2 0x1272 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xFFF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0xEA5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1029 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH2 0xEA5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0x1066 JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x1044 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x5E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1096 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xEA5 DUP2 PUSH2 0x106F JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH1 0x3 DUP4 LT PUSH2 0x10C3 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 SWAP1 MSTORE SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x10F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x10FD DUP2 PUSH2 0x106F JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x111A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x112E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x1140 JUMPI PUSH2 0x1140 PUSH2 0x10C9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x1168 JUMPI PUSH2 0x1168 PUSH2 0x10C9 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x1181 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x11B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND DUP4 MSTORE DUP1 DUP8 AND PUSH1 0x20 DUP5 ADD MSTORE POP DUP5 PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x80 PUSH1 0x60 DUP4 ADD MSTORE DUP3 PUSH1 0x80 DUP4 ADD MSTORE DUP3 DUP5 PUSH1 0xA0 DUP5 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0xA0 DUP5 DUP5 ADD ADD MSTORE PUSH1 0xA0 PUSH1 0x1F NOT PUSH1 0x1F DUP6 ADD AND DUP4 ADD ADD SWAP1 POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1222 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xEA5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x124D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1235 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x1268 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x1232 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x1291 DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x1232 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A164 PUSH20 0x6F6C6343000811000A0000000000000000000000 ","sourceMap":"755:431:31:-:0;;;1198:4:5;1155:48;;755:431:31;;;;;;;;;-1:-1:-1;1647:22:40;:20;:22::i;:::-;755:431:31;;5939:280:4;6007:13;;;;;;;6006:14;5998:66;;;;-1:-1:-1;;;5998:66:4;;216:2:50;5998:66:4;;;198:21:50;255:2;235:18;;;228:30;294:34;274:18;;;267:62;-1:-1:-1;;;345:18:50;;;338:37;392:19;;5998:66:4;;;;;;;;6078:12;;6094:15;6078:12;;;:31;6074:139;;6125:12;:30;;-1:-1:-1;;6125:30:4;6140:15;6125:30;;;;;;6174:28;;564:36:50;;;6174:28:4;;552:2:50;537:18;6174:28:4;;;;;;;6074:139;5939:280::o;422:184:50:-;755:431:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@UPGRADE_PLUGIN_PERMISSION_ID_4415":{"entryPoint":null,"id":4415,"parameterSlots":0,"returnSlots":0},"@__DaoAuthorizableUpgradeable_init_3901":{"entryPoint":3494,"id":3901,"parameterSlots":1,"returnSlots":0},"@__PluginUUPSUpgradeable_init_4429":{"entryPoint":2944,"id":4429,"parameterSlots":1,"returnSlots":0},"@_auth_3987":{"entryPoint":3060,"id":3987,"parameterSlots":6,"returnSlots":0},"@_authorizeUpgrade_4570":{"entryPoint":2462,"id":4570,"parameterSlots":1,"returnSlots":0},"@_getImplementation_76":{"entryPoint":null,"id":76,"parameterSlots":0,"returnSlots":1},"@_msgData_1038":{"entryPoint":null,"id":1038,"parameterSlots":0,"returnSlots":2},"@_msgSender_1029":{"entryPoint":null,"id":1029,"parameterSlots":0,"returnSlots":1},"@_revert_1000":{"entryPoint":4005,"id":1000,"parameterSlots":2,"returnSlots":0},"@_setImplementation_100":{"entryPoint":3248,"id":100,"parameterSlots":1,"returnSlots":0},"@_upgradeToAndCallUUPS_198":{"entryPoint":2523,"id":198,"parameterSlots":3,"returnSlots":0},"@_upgradeToAndCall_145":{"entryPoint":3451,"id":145,"parameterSlots":3,"returnSlots":0},"@_upgradeTo_115":{"entryPoint":3648,"id":115,"parameterSlots":1,"returnSlots":0},"@dao_3911":{"entryPoint":null,"id":3911,"parameterSlots":0,"returnSlots":1},"@functionDelegateCall_888":{"entryPoint":3712,"id":888,"parameterSlots":2,"returnSlots":1},"@functionDelegateCall_917":{"entryPoint":3756,"id":917,"parameterSlots":3,"returnSlots":1},"@getAddressSlot_1158":{"entryPoint":null,"id":1158,"parameterSlots":1,"returnSlots":1},"@getBooleanSlot_1169":{"entryPoint":null,"id":1169,"parameterSlots":1,"returnSlots":1},"@implementation_4495":{"entryPoint":2075,"id":4495,"parameterSlots":0,"returnSlots":1},"@initializeFrom_3184":{"entryPoint":845,"id":3184,"parameterSlots":1,"returnSlots":0},"@initialize_3166":{"entryPoint":2226,"id":3166,"parameterSlots":1,"returnSlots":0},"@isContract_689":{"entryPoint":null,"id":689,"parameterSlots":1,"returnSlots":1},"@pluginType_4409":{"entryPoint":null,"id":4409,"parameterSlots":0,"returnSlots":1},"@protocolVersion_5135":{"entryPoint":1093,"id":5135,"parameterSlots":0,"returnSlots":1},"@proxiableUUID_616":{"entryPoint":1878,"id":616,"parameterSlots":0,"returnSlots":1},"@setTarget_4449":{"entryPoint":2131,"id":4449,"parameterSlots":1,"returnSlots":0},"@state1_3142":{"entryPoint":null,"id":3142,"parameterSlots":0,"returnSlots":0},"@state2_3144":{"entryPoint":null,"id":3144,"parameterSlots":0,"returnSlots":0},"@supportsInterface_1275":{"entryPoint":null,"id":1275,"parameterSlots":1,"returnSlots":1},"@supportsInterface_4485":{"entryPoint":737,"id":4485,"parameterSlots":1,"returnSlots":1},"@target_4382":{"entryPoint":null,"id":4382,"parameterSlots":0,"returnSlots":0},"@upgradeToAndCall_659":{"entryPoint":1514,"id":659,"parameterSlots":2,"returnSlots":0},"@upgradeTo_638":{"entryPoint":1135,"id":638,"parameterSlots":1,"returnSlots":0},"@verifyCallResultFromTarget_956":{"entryPoint":3876,"id":956,"parameterSlots":4,"returnSlots":1},"abi_decode_tuple_t_address":{"entryPoint":4228,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_bytes_memory_ptr":{"entryPoint":4319,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_bool_fromMemory":{"entryPoint":4624,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes32_fromMemory":{"entryPoint":4515,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes4":{"entryPoint":4077,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_contract$_IDAO_$2538":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint16":{"entryPoint":4119,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":4694,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address_t_address_t_address_t_bytes32__to_t_address_t_address_t_address_t_bytes32__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":5,"returnSlots":1},"abi_encode_tuple_t_address_t_address_t_bytes32_t_bytes_calldata_ptr__to_t_address_t_address_t_bytes32_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":4540,"id":null,"parameterSlots":6,"returnSlots":1},"abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed":{"entryPoint":4155,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_contract$_IDAO_$2538__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_enum$_PluginType_$3994__to_t_uint8__fromStack_reversed":{"entryPoint":4257,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":4722,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_36e108fa7a809b52ab1951dd91c117a7bc9ac5250bdf1aa162d4e104f7edf9eb__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_52f1ead4d9653e13afbd2e90ef2587c30187cd50b2e97d784e3f7a7541247434__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_67f0151b4ad1dcfa0e3302a0cd6019f51582ef1807b37dceb00bd852a514f7f4__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_76b6b6debfc5febf101145a79ecf0b0d2e89e397dfdab2bca99888370411152c__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_8e8e2fbcb586f700b5b14e2c4a650c8d83b9773c31c5fe8962070ea544e11f24__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"copy_memory_to_memory_with_cleanup":{"entryPoint":4658,"id":null,"parameterSlots":3,"returnSlots":0},"panic_error_0x41":{"entryPoint":4297,"id":null,"parameterSlots":0,"returnSlots":0},"validator_revert_address":{"entryPoint":4207,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:10790:50","statements":[{"nodeType":"YulBlock","src":"6:3:50","statements":[]},{"body":{"nodeType":"YulBlock","src":"83:217:50","statements":[{"body":{"nodeType":"YulBlock","src":"129:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"138:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"141:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"131:6:50"},"nodeType":"YulFunctionCall","src":"131:12:50"},"nodeType":"YulExpressionStatement","src":"131:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"104:7:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"113:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"100:3:50"},"nodeType":"YulFunctionCall","src":"100:23:50"},{"kind":"number","nodeType":"YulLiteral","src":"125:2:50","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"96:3:50"},"nodeType":"YulFunctionCall","src":"96:32:50"},"nodeType":"YulIf","src":"93:52:50"},{"nodeType":"YulVariableDeclaration","src":"154:36:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"180:9:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"167:12:50"},"nodeType":"YulFunctionCall","src":"167:23:50"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"158:5:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"254:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"263:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"266:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"256:6:50"},"nodeType":"YulFunctionCall","src":"256:12:50"},"nodeType":"YulExpressionStatement","src":"256:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"212:5:50"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"223:5:50"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"234:3:50","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"239:10:50","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"230:3:50"},"nodeType":"YulFunctionCall","src":"230:20:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"219:3:50"},"nodeType":"YulFunctionCall","src":"219:32:50"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"209:2:50"},"nodeType":"YulFunctionCall","src":"209:43:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"202:6:50"},"nodeType":"YulFunctionCall","src":"202:51:50"},"nodeType":"YulIf","src":"199:71:50"},{"nodeType":"YulAssignment","src":"279:15:50","value":{"name":"value","nodeType":"YulIdentifier","src":"289:5:50"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"279:6:50"}]}]},"name":"abi_decode_tuple_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"49:9:50","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"60:7:50","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"72:6:50","type":""}],"src":"14:286:50"},{"body":{"nodeType":"YulBlock","src":"400:92:50","statements":[{"nodeType":"YulAssignment","src":"410:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"422:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"433:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"418:3:50"},"nodeType":"YulFunctionCall","src":"418:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"410:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"452:9:50"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"477:6:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"470:6:50"},"nodeType":"YulFunctionCall","src":"470:14:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"463:6:50"},"nodeType":"YulFunctionCall","src":"463:22:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"445:6:50"},"nodeType":"YulFunctionCall","src":"445:41:50"},"nodeType":"YulExpressionStatement","src":"445:41:50"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"369:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"380:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"391:4:50","type":""}],"src":"305:187:50"},{"body":{"nodeType":"YulBlock","src":"566:203:50","statements":[{"body":{"nodeType":"YulBlock","src":"612:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"621:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"624:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"614:6:50"},"nodeType":"YulFunctionCall","src":"614:12:50"},"nodeType":"YulExpressionStatement","src":"614:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"587:7:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"596:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"583:3:50"},"nodeType":"YulFunctionCall","src":"583:23:50"},{"kind":"number","nodeType":"YulLiteral","src":"608:2:50","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"579:3:50"},"nodeType":"YulFunctionCall","src":"579:32:50"},"nodeType":"YulIf","src":"576:52:50"},{"nodeType":"YulVariableDeclaration","src":"637:36:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"663:9:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"650:12:50"},"nodeType":"YulFunctionCall","src":"650:23:50"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"641:5:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"723:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"732:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"735:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"725:6:50"},"nodeType":"YulFunctionCall","src":"725:12:50"},"nodeType":"YulExpressionStatement","src":"725:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"695:5:50"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"706:5:50"},{"kind":"number","nodeType":"YulLiteral","src":"713:6:50","type":"","value":"0xffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"702:3:50"},"nodeType":"YulFunctionCall","src":"702:18:50"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"692:2:50"},"nodeType":"YulFunctionCall","src":"692:29:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"685:6:50"},"nodeType":"YulFunctionCall","src":"685:37:50"},"nodeType":"YulIf","src":"682:57:50"},{"nodeType":"YulAssignment","src":"748:15:50","value":{"name":"value","nodeType":"YulIdentifier","src":"758:5:50"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"748:6:50"}]}]},"name":"abi_decode_tuple_t_uint16","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"532:9:50","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"543:7:50","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"555:6:50","type":""}],"src":"497:272:50"},{"body":{"nodeType":"YulBlock","src":"917:358:50","statements":[{"nodeType":"YulAssignment","src":"927:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"939:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"950:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"935:3:50"},"nodeType":"YulFunctionCall","src":"935:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"927:4:50"}]},{"nodeType":"YulVariableDeclaration","src":"962:20:50","value":{"name":"headStart","nodeType":"YulIdentifier","src":"973:9:50"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"966:3:50","type":""}]},{"nodeType":"YulAssignment","src":"991:16:50","value":{"name":"headStart","nodeType":"YulIdentifier","src":"998:9:50"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"991:3:50"}]},{"nodeType":"YulVariableDeclaration","src":"1016:20:50","value":{"name":"value0","nodeType":"YulIdentifier","src":"1030:6:50"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"1020:6:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"1045:10:50","value":{"kind":"number","nodeType":"YulLiteral","src":"1054:1:50","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"1049:1:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"1111:158:50","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1132:3:50"},{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"1147:6:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1141:5:50"},"nodeType":"YulFunctionCall","src":"1141:13:50"},{"kind":"number","nodeType":"YulLiteral","src":"1156:4:50","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1137:3:50"},"nodeType":"YulFunctionCall","src":"1137:24:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1125:6:50"},"nodeType":"YulFunctionCall","src":"1125:37:50"},"nodeType":"YulExpressionStatement","src":"1125:37:50"},{"nodeType":"YulVariableDeclaration","src":"1175:14:50","value":{"kind":"number","nodeType":"YulLiteral","src":"1185:4:50","type":"","value":"0x20"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"1179:2:50","type":""}]},{"nodeType":"YulAssignment","src":"1202:19:50","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1213:3:50"},{"name":"_1","nodeType":"YulIdentifier","src":"1218:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1209:3:50"},"nodeType":"YulFunctionCall","src":"1209:12:50"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"1202:3:50"}]},{"nodeType":"YulAssignment","src":"1234:25:50","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"1248:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"1256:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1244:3:50"},"nodeType":"YulFunctionCall","src":"1244:15:50"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"1234:6:50"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"1075:1:50"},{"kind":"number","nodeType":"YulLiteral","src":"1078:4:50","type":"","value":"0x03"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"1072:2:50"},"nodeType":"YulFunctionCall","src":"1072:11:50"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"1084:18:50","statements":[{"nodeType":"YulAssignment","src":"1086:14:50","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"1095:1:50"},{"kind":"number","nodeType":"YulLiteral","src":"1098:1:50","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1091:3:50"},"nodeType":"YulFunctionCall","src":"1091:9:50"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"1086:1:50"}]}]},"pre":{"nodeType":"YulBlock","src":"1068:3:50","statements":[]},"src":"1064:205:50"}]},"name":"abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"886:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"897:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"908:4:50","type":""}],"src":"774:501:50"},{"body":{"nodeType":"YulBlock","src":"1325:109:50","statements":[{"body":{"nodeType":"YulBlock","src":"1412:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1421:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1424:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1414:6:50"},"nodeType":"YulFunctionCall","src":"1414:12:50"},"nodeType":"YulExpressionStatement","src":"1414:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1348:5:50"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1359:5:50"},{"kind":"number","nodeType":"YulLiteral","src":"1366:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1355:3:50"},"nodeType":"YulFunctionCall","src":"1355:54:50"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1345:2:50"},"nodeType":"YulFunctionCall","src":"1345:65:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1338:6:50"},"nodeType":"YulFunctionCall","src":"1338:73:50"},"nodeType":"YulIf","src":"1335:93:50"}]},"name":"validator_revert_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1314:5:50","type":""}],"src":"1280:154:50"},{"body":{"nodeType":"YulBlock","src":"1509:177:50","statements":[{"body":{"nodeType":"YulBlock","src":"1555:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1564:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1567:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1557:6:50"},"nodeType":"YulFunctionCall","src":"1557:12:50"},"nodeType":"YulExpressionStatement","src":"1557:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1530:7:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"1539:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1526:3:50"},"nodeType":"YulFunctionCall","src":"1526:23:50"},{"kind":"number","nodeType":"YulLiteral","src":"1551:2:50","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1522:3:50"},"nodeType":"YulFunctionCall","src":"1522:32:50"},"nodeType":"YulIf","src":"1519:52:50"},{"nodeType":"YulVariableDeclaration","src":"1580:36:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1606:9:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1593:12:50"},"nodeType":"YulFunctionCall","src":"1593:23:50"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"1584:5:50","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1650:5:50"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"1625:24:50"},"nodeType":"YulFunctionCall","src":"1625:31:50"},"nodeType":"YulExpressionStatement","src":"1625:31:50"},{"nodeType":"YulAssignment","src":"1665:15:50","value":{"name":"value","nodeType":"YulIdentifier","src":"1675:5:50"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1665:6:50"}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1475:9:50","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1486:7:50","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1498:6:50","type":""}],"src":"1439:247:50"},{"body":{"nodeType":"YulBlock","src":"1805:125:50","statements":[{"nodeType":"YulAssignment","src":"1815:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1827:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"1838:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1823:3:50"},"nodeType":"YulFunctionCall","src":"1823:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1815:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1857:9:50"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1872:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"1880:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1868:3:50"},"nodeType":"YulFunctionCall","src":"1868:55:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1850:6:50"},"nodeType":"YulFunctionCall","src":"1850:74:50"},"nodeType":"YulExpressionStatement","src":"1850:74:50"}]},"name":"abi_encode_tuple_t_contract$_IDAO_$2538__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1774:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1785:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1796:4:50","type":""}],"src":"1691:239:50"},{"body":{"nodeType":"YulBlock","src":"2049:229:50","statements":[{"nodeType":"YulAssignment","src":"2059:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2071:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"2082:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2067:3:50"},"nodeType":"YulFunctionCall","src":"2067:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2059:4:50"}]},{"body":{"nodeType":"YulBlock","src":"2127:111:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2148:1:50","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2155:3:50","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"2160:10:50","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2151:3:50"},"nodeType":"YulFunctionCall","src":"2151:20:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2141:6:50"},"nodeType":"YulFunctionCall","src":"2141:31:50"},"nodeType":"YulExpressionStatement","src":"2141:31:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2192:1:50","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"2195:4:50","type":"","value":"0x21"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2185:6:50"},"nodeType":"YulFunctionCall","src":"2185:15:50"},"nodeType":"YulExpressionStatement","src":"2185:15:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2220:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2223:4:50","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2213:6:50"},"nodeType":"YulFunctionCall","src":"2213:15:50"},"nodeType":"YulExpressionStatement","src":"2213:15:50"}]},"condition":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2107:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"2115:1:50","type":"","value":"3"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2104:2:50"},"nodeType":"YulFunctionCall","src":"2104:13:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2097:6:50"},"nodeType":"YulFunctionCall","src":"2097:21:50"},"nodeType":"YulIf","src":"2094:144:50"},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2254:9:50"},{"name":"value0","nodeType":"YulIdentifier","src":"2265:6:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2247:6:50"},"nodeType":"YulFunctionCall","src":"2247:25:50"},"nodeType":"YulExpressionStatement","src":"2247:25:50"}]},"name":"abi_encode_tuple_t_enum$_PluginType_$3994__to_t_uint8__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2018:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"2029:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2040:4:50","type":""}],"src":"1935:343:50"},{"body":{"nodeType":"YulBlock","src":"2315:95:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2332:1:50","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2339:3:50","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"2344:10:50","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2335:3:50"},"nodeType":"YulFunctionCall","src":"2335:20:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2325:6:50"},"nodeType":"YulFunctionCall","src":"2325:31:50"},"nodeType":"YulExpressionStatement","src":"2325:31:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2372:1:50","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"2375:4:50","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2365:6:50"},"nodeType":"YulFunctionCall","src":"2365:15:50"},"nodeType":"YulExpressionStatement","src":"2365:15:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2396:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2399:4:50","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2389:6:50"},"nodeType":"YulFunctionCall","src":"2389:15:50"},"nodeType":"YulExpressionStatement","src":"2389:15:50"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"2283:127:50"},{"body":{"nodeType":"YulBlock","src":"2511:960:50","statements":[{"body":{"nodeType":"YulBlock","src":"2557:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2566:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2569:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2559:6:50"},"nodeType":"YulFunctionCall","src":"2559:12:50"},"nodeType":"YulExpressionStatement","src":"2559:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2532:7:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"2541:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2528:3:50"},"nodeType":"YulFunctionCall","src":"2528:23:50"},{"kind":"number","nodeType":"YulLiteral","src":"2553:2:50","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2524:3:50"},"nodeType":"YulFunctionCall","src":"2524:32:50"},"nodeType":"YulIf","src":"2521:52:50"},{"nodeType":"YulVariableDeclaration","src":"2582:36:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2608:9:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2595:12:50"},"nodeType":"YulFunctionCall","src":"2595:23:50"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"2586:5:50","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2652:5:50"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"2627:24:50"},"nodeType":"YulFunctionCall","src":"2627:31:50"},"nodeType":"YulExpressionStatement","src":"2627:31:50"},{"nodeType":"YulAssignment","src":"2667:15:50","value":{"name":"value","nodeType":"YulIdentifier","src":"2677:5:50"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2667:6:50"}]},{"nodeType":"YulVariableDeclaration","src":"2691:46:50","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2722:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"2733:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2718:3:50"},"nodeType":"YulFunctionCall","src":"2718:18:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2705:12:50"},"nodeType":"YulFunctionCall","src":"2705:32:50"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"2695:6:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2746:28:50","value":{"kind":"number","nodeType":"YulLiteral","src":"2756:18:50","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"2750:2:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"2801:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2810:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2813:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2803:6:50"},"nodeType":"YulFunctionCall","src":"2803:12:50"},"nodeType":"YulExpressionStatement","src":"2803:12:50"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"2789:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"2797:2:50"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2786:2:50"},"nodeType":"YulFunctionCall","src":"2786:14:50"},"nodeType":"YulIf","src":"2783:34:50"},{"nodeType":"YulVariableDeclaration","src":"2826:32:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2840:9:50"},{"name":"offset","nodeType":"YulIdentifier","src":"2851:6:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2836:3:50"},"nodeType":"YulFunctionCall","src":"2836:22:50"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"2830:2:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"2906:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2915:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2918:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2908:6:50"},"nodeType":"YulFunctionCall","src":"2908:12:50"},"nodeType":"YulExpressionStatement","src":"2908:12:50"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"2885:2:50"},{"kind":"number","nodeType":"YulLiteral","src":"2889:4:50","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2881:3:50"},"nodeType":"YulFunctionCall","src":"2881:13:50"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2896:7:50"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2877:3:50"},"nodeType":"YulFunctionCall","src":"2877:27:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2870:6:50"},"nodeType":"YulFunctionCall","src":"2870:35:50"},"nodeType":"YulIf","src":"2867:55:50"},{"nodeType":"YulVariableDeclaration","src":"2931:26:50","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"2954:2:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2941:12:50"},"nodeType":"YulFunctionCall","src":"2941:16:50"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"2935:2:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"2980:22:50","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"2982:16:50"},"nodeType":"YulFunctionCall","src":"2982:18:50"},"nodeType":"YulExpressionStatement","src":"2982:18:50"}]},"condition":{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"2972:2:50"},{"name":"_1","nodeType":"YulIdentifier","src":"2976:2:50"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2969:2:50"},"nodeType":"YulFunctionCall","src":"2969:10:50"},"nodeType":"YulIf","src":"2966:36:50"},{"nodeType":"YulVariableDeclaration","src":"3011:17:50","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3025:2:50","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"3021:3:50"},"nodeType":"YulFunctionCall","src":"3021:7:50"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"3015:2:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3037:23:50","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3057:2:50","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3051:5:50"},"nodeType":"YulFunctionCall","src":"3051:9:50"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"3041:6:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3069:71:50","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"3091:6:50"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"3115:2:50"},{"kind":"number","nodeType":"YulLiteral","src":"3119:4:50","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3111:3:50"},"nodeType":"YulFunctionCall","src":"3111:13:50"},{"name":"_4","nodeType":"YulIdentifier","src":"3126:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3107:3:50"},"nodeType":"YulFunctionCall","src":"3107:22:50"},{"kind":"number","nodeType":"YulLiteral","src":"3131:2:50","type":"","value":"63"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3103:3:50"},"nodeType":"YulFunctionCall","src":"3103:31:50"},{"name":"_4","nodeType":"YulIdentifier","src":"3136:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3099:3:50"},"nodeType":"YulFunctionCall","src":"3099:40:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3087:3:50"},"nodeType":"YulFunctionCall","src":"3087:53:50"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"3073:10:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"3199:22:50","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"3201:16:50"},"nodeType":"YulFunctionCall","src":"3201:18:50"},"nodeType":"YulExpressionStatement","src":"3201:18:50"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"3158:10:50"},{"name":"_1","nodeType":"YulIdentifier","src":"3170:2:50"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3155:2:50"},"nodeType":"YulFunctionCall","src":"3155:18:50"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"3178:10:50"},{"name":"memPtr","nodeType":"YulIdentifier","src":"3190:6:50"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"3175:2:50"},"nodeType":"YulFunctionCall","src":"3175:22:50"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"3152:2:50"},"nodeType":"YulFunctionCall","src":"3152:46:50"},"nodeType":"YulIf","src":"3149:72:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3237:2:50","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"3241:10:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3230:6:50"},"nodeType":"YulFunctionCall","src":"3230:22:50"},"nodeType":"YulExpressionStatement","src":"3230:22:50"},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"3268:6:50"},{"name":"_3","nodeType":"YulIdentifier","src":"3276:2:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3261:6:50"},"nodeType":"YulFunctionCall","src":"3261:18:50"},"nodeType":"YulExpressionStatement","src":"3261:18:50"},{"body":{"nodeType":"YulBlock","src":"3325:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3334:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3337:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3327:6:50"},"nodeType":"YulFunctionCall","src":"3327:12:50"},"nodeType":"YulExpressionStatement","src":"3327:12:50"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"3302:2:50"},{"name":"_3","nodeType":"YulIdentifier","src":"3306:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3298:3:50"},"nodeType":"YulFunctionCall","src":"3298:11:50"},{"kind":"number","nodeType":"YulLiteral","src":"3311:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3294:3:50"},"nodeType":"YulFunctionCall","src":"3294:20:50"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3316:7:50"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3291:2:50"},"nodeType":"YulFunctionCall","src":"3291:33:50"},"nodeType":"YulIf","src":"3288:53:50"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"3367:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"3375:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3363:3:50"},"nodeType":"YulFunctionCall","src":"3363:15:50"},{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"3384:2:50"},{"kind":"number","nodeType":"YulLiteral","src":"3388:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3380:3:50"},"nodeType":"YulFunctionCall","src":"3380:11:50"},{"name":"_3","nodeType":"YulIdentifier","src":"3393:2:50"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"3350:12:50"},"nodeType":"YulFunctionCall","src":"3350:46:50"},"nodeType":"YulExpressionStatement","src":"3350:46:50"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"3420:6:50"},{"name":"_3","nodeType":"YulIdentifier","src":"3428:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3416:3:50"},"nodeType":"YulFunctionCall","src":"3416:15:50"},{"kind":"number","nodeType":"YulLiteral","src":"3433:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3412:3:50"},"nodeType":"YulFunctionCall","src":"3412:24:50"},{"kind":"number","nodeType":"YulLiteral","src":"3438:1:50","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3405:6:50"},"nodeType":"YulFunctionCall","src":"3405:35:50"},"nodeType":"YulExpressionStatement","src":"3405:35:50"},{"nodeType":"YulAssignment","src":"3449:16:50","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"3459:6:50"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"3449:6:50"}]}]},"name":"abi_decode_tuple_t_addresst_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2469:9:50","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2480:7:50","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2492:6:50","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2500:6:50","type":""}],"src":"2415:1056:50"},{"body":{"nodeType":"YulBlock","src":"3577:76:50","statements":[{"nodeType":"YulAssignment","src":"3587:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3599:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"3610:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3595:3:50"},"nodeType":"YulFunctionCall","src":"3595:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3587:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3629:9:50"},{"name":"value0","nodeType":"YulIdentifier","src":"3640:6:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3622:6:50"},"nodeType":"YulFunctionCall","src":"3622:25:50"},"nodeType":"YulExpressionStatement","src":"3622:25:50"}]},"name":"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3546:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3557:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3568:4:50","type":""}],"src":"3476:177:50"},{"body":{"nodeType":"YulBlock","src":"3759:125:50","statements":[{"nodeType":"YulAssignment","src":"3769:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3781:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"3792:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3777:3:50"},"nodeType":"YulFunctionCall","src":"3777:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3769:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3811:9:50"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3826:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"3834:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3822:3:50"},"nodeType":"YulFunctionCall","src":"3822:55:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3804:6:50"},"nodeType":"YulFunctionCall","src":"3804:74:50"},"nodeType":"YulExpressionStatement","src":"3804:74:50"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3728:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3739:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3750:4:50","type":""}],"src":"3658:226:50"},{"body":{"nodeType":"YulBlock","src":"3990:76:50","statements":[{"nodeType":"YulAssignment","src":"4000:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4012:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"4023:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4008:3:50"},"nodeType":"YulFunctionCall","src":"4008:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4000:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4042:9:50"},{"name":"value0","nodeType":"YulIdentifier","src":"4053:6:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4035:6:50"},"nodeType":"YulFunctionCall","src":"4035:25:50"},"nodeType":"YulExpressionStatement","src":"4035:25:50"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3959:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3970:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3981:4:50","type":""}],"src":"3889:177:50"},{"body":{"nodeType":"YulBlock","src":"4154:177:50","statements":[{"body":{"nodeType":"YulBlock","src":"4200:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4209:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4212:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4202:6:50"},"nodeType":"YulFunctionCall","src":"4202:12:50"},"nodeType":"YulExpressionStatement","src":"4202:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"4175:7:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"4184:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4171:3:50"},"nodeType":"YulFunctionCall","src":"4171:23:50"},{"kind":"number","nodeType":"YulLiteral","src":"4196:2:50","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4167:3:50"},"nodeType":"YulFunctionCall","src":"4167:32:50"},"nodeType":"YulIf","src":"4164:52:50"},{"nodeType":"YulVariableDeclaration","src":"4225:36:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4251:9:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4238:12:50"},"nodeType":"YulFunctionCall","src":"4238:23:50"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"4229:5:50","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4295:5:50"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"4270:24:50"},"nodeType":"YulFunctionCall","src":"4270:31:50"},"nodeType":"YulExpressionStatement","src":"4270:31:50"},{"nodeType":"YulAssignment","src":"4310:15:50","value":{"name":"value","nodeType":"YulIdentifier","src":"4320:5:50"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"4310:6:50"}]}]},"name":"abi_decode_tuple_t_contract$_IDAO_$2538","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4120:9:50","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"4131:7:50","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"4143:6:50","type":""}],"src":"4071:260:50"},{"body":{"nodeType":"YulBlock","src":"4510:236:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4527:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"4538:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4520:6:50"},"nodeType":"YulFunctionCall","src":"4520:21:50"},"nodeType":"YulExpressionStatement","src":"4520:21:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4561:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"4572:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4557:3:50"},"nodeType":"YulFunctionCall","src":"4557:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"4577:2:50","type":"","value":"46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4550:6:50"},"nodeType":"YulFunctionCall","src":"4550:30:50"},"nodeType":"YulExpressionStatement","src":"4550:30:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4600:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"4611:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4596:3:50"},"nodeType":"YulFunctionCall","src":"4596:18:50"},{"hexValue":"496e697469616c697a61626c653a20636f6e747261637420697320616c726561","kind":"string","nodeType":"YulLiteral","src":"4616:34:50","type":"","value":"Initializable: contract is alrea"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4589:6:50"},"nodeType":"YulFunctionCall","src":"4589:62:50"},"nodeType":"YulExpressionStatement","src":"4589:62:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4671:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"4682:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4667:3:50"},"nodeType":"YulFunctionCall","src":"4667:18:50"},{"hexValue":"647920696e697469616c697a6564","kind":"string","nodeType":"YulLiteral","src":"4687:16:50","type":"","value":"dy initialized"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4660:6:50"},"nodeType":"YulFunctionCall","src":"4660:44:50"},"nodeType":"YulExpressionStatement","src":"4660:44:50"},{"nodeType":"YulAssignment","src":"4713:27:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4725:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"4736:3:50","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4721:3:50"},"nodeType":"YulFunctionCall","src":"4721:19:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4713:4:50"}]}]},"name":"abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4487:9:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4501:4:50","type":""}],"src":"4336:410:50"},{"body":{"nodeType":"YulBlock","src":"4848:87:50","statements":[{"nodeType":"YulAssignment","src":"4858:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4870:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"4881:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4866:3:50"},"nodeType":"YulFunctionCall","src":"4866:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4858:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4900:9:50"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4915:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"4923:4:50","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4911:3:50"},"nodeType":"YulFunctionCall","src":"4911:17:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4893:6:50"},"nodeType":"YulFunctionCall","src":"4893:36:50"},"nodeType":"YulExpressionStatement","src":"4893:36:50"}]},"name":"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4817:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"4828:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4839:4:50","type":""}],"src":"4751:184:50"},{"body":{"nodeType":"YulBlock","src":"5114:234:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5131:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"5142:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5124:6:50"},"nodeType":"YulFunctionCall","src":"5124:21:50"},"nodeType":"YulExpressionStatement","src":"5124:21:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5165:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"5176:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5161:3:50"},"nodeType":"YulFunctionCall","src":"5161:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"5181:2:50","type":"","value":"44"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5154:6:50"},"nodeType":"YulFunctionCall","src":"5154:30:50"},"nodeType":"YulExpressionStatement","src":"5154:30:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5204:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"5215:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5200:3:50"},"nodeType":"YulFunctionCall","src":"5200:18:50"},{"hexValue":"46756e6374696f6e206d7573742062652063616c6c6564207468726f75676820","kind":"string","nodeType":"YulLiteral","src":"5220:34:50","type":"","value":"Function must be called through "}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5193:6:50"},"nodeType":"YulFunctionCall","src":"5193:62:50"},"nodeType":"YulExpressionStatement","src":"5193:62:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5275:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"5286:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5271:3:50"},"nodeType":"YulFunctionCall","src":"5271:18:50"},{"hexValue":"64656c656761746563616c6c","kind":"string","nodeType":"YulLiteral","src":"5291:14:50","type":"","value":"delegatecall"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5264:6:50"},"nodeType":"YulFunctionCall","src":"5264:42:50"},"nodeType":"YulExpressionStatement","src":"5264:42:50"},{"nodeType":"YulAssignment","src":"5315:27:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5327:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"5338:3:50","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5323:3:50"},"nodeType":"YulFunctionCall","src":"5323:19:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5315:4:50"}]}]},"name":"abi_encode_tuple_t_stringliteral_36e108fa7a809b52ab1951dd91c117a7bc9ac5250bdf1aa162d4e104f7edf9eb__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5091:9:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5105:4:50","type":""}],"src":"4940:408:50"},{"body":{"nodeType":"YulBlock","src":"5527:234:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5544:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"5555:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5537:6:50"},"nodeType":"YulFunctionCall","src":"5537:21:50"},"nodeType":"YulExpressionStatement","src":"5537:21:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5578:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"5589:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5574:3:50"},"nodeType":"YulFunctionCall","src":"5574:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"5594:2:50","type":"","value":"44"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5567:6:50"},"nodeType":"YulFunctionCall","src":"5567:30:50"},"nodeType":"YulExpressionStatement","src":"5567:30:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5617:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"5628:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5613:3:50"},"nodeType":"YulFunctionCall","src":"5613:18:50"},{"hexValue":"46756e6374696f6e206d7573742062652063616c6c6564207468726f75676820","kind":"string","nodeType":"YulLiteral","src":"5633:34:50","type":"","value":"Function must be called through "}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5606:6:50"},"nodeType":"YulFunctionCall","src":"5606:62:50"},"nodeType":"YulExpressionStatement","src":"5606:62:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5688:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"5699:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5684:3:50"},"nodeType":"YulFunctionCall","src":"5684:18:50"},{"hexValue":"6163746976652070726f7879","kind":"string","nodeType":"YulLiteral","src":"5704:14:50","type":"","value":"active proxy"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5677:6:50"},"nodeType":"YulFunctionCall","src":"5677:42:50"},"nodeType":"YulExpressionStatement","src":"5677:42:50"},{"nodeType":"YulAssignment","src":"5728:27:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5740:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"5751:3:50","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5736:3:50"},"nodeType":"YulFunctionCall","src":"5736:19:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5728:4:50"}]}]},"name":"abi_encode_tuple_t_stringliteral_52f1ead4d9653e13afbd2e90ef2587c30187cd50b2e97d784e3f7a7541247434__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5504:9:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5518:4:50","type":""}],"src":"5353:408:50"},{"body":{"nodeType":"YulBlock","src":"5940:246:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5957:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"5968:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5950:6:50"},"nodeType":"YulFunctionCall","src":"5950:21:50"},"nodeType":"YulExpressionStatement","src":"5950:21:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5991:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"6002:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5987:3:50"},"nodeType":"YulFunctionCall","src":"5987:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"6007:2:50","type":"","value":"56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5980:6:50"},"nodeType":"YulFunctionCall","src":"5980:30:50"},"nodeType":"YulExpressionStatement","src":"5980:30:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6030:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"6041:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6026:3:50"},"nodeType":"YulFunctionCall","src":"6026:18:50"},{"hexValue":"555550535570677261646561626c653a206d757374206e6f742062652063616c","kind":"string","nodeType":"YulLiteral","src":"6046:34:50","type":"","value":"UUPSUpgradeable: must not be cal"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6019:6:50"},"nodeType":"YulFunctionCall","src":"6019:62:50"},"nodeType":"YulExpressionStatement","src":"6019:62:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6101:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"6112:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6097:3:50"},"nodeType":"YulFunctionCall","src":"6097:18:50"},{"hexValue":"6c6564207468726f7567682064656c656761746563616c6c","kind":"string","nodeType":"YulLiteral","src":"6117:26:50","type":"","value":"led through delegatecall"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6090:6:50"},"nodeType":"YulFunctionCall","src":"6090:54:50"},"nodeType":"YulExpressionStatement","src":"6090:54:50"},{"nodeType":"YulAssignment","src":"6153:27:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6165:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"6176:3:50","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6161:3:50"},"nodeType":"YulFunctionCall","src":"6161:19:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6153:4:50"}]}]},"name":"abi_encode_tuple_t_stringliteral_67f0151b4ad1dcfa0e3302a0cd6019f51582ef1807b37dceb00bd852a514f7f4__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5917:9:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5931:4:50","type":""}],"src":"5766:420:50"},{"body":{"nodeType":"YulBlock","src":"6272:103:50","statements":[{"body":{"nodeType":"YulBlock","src":"6318:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6327:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6330:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6320:6:50"},"nodeType":"YulFunctionCall","src":"6320:12:50"},"nodeType":"YulExpressionStatement","src":"6320:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"6293:7:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"6302:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6289:3:50"},"nodeType":"YulFunctionCall","src":"6289:23:50"},{"kind":"number","nodeType":"YulLiteral","src":"6314:2:50","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6285:3:50"},"nodeType":"YulFunctionCall","src":"6285:32:50"},"nodeType":"YulIf","src":"6282:52:50"},{"nodeType":"YulAssignment","src":"6343:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6359:9:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6353:5:50"},"nodeType":"YulFunctionCall","src":"6353:16:50"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"6343:6:50"}]}]},"name":"abi_decode_tuple_t_bytes32_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6238:9:50","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"6249:7:50","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"6261:6:50","type":""}],"src":"6191:184:50"},{"body":{"nodeType":"YulBlock","src":"6554:236:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6571:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"6582:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6564:6:50"},"nodeType":"YulFunctionCall","src":"6564:21:50"},"nodeType":"YulExpressionStatement","src":"6564:21:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6605:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"6616:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6601:3:50"},"nodeType":"YulFunctionCall","src":"6601:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"6621:2:50","type":"","value":"46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6594:6:50"},"nodeType":"YulFunctionCall","src":"6594:30:50"},"nodeType":"YulExpressionStatement","src":"6594:30:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6644:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"6655:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6640:3:50"},"nodeType":"YulFunctionCall","src":"6640:18:50"},{"hexValue":"45524331393637557067726164653a206e657720696d706c656d656e74617469","kind":"string","nodeType":"YulLiteral","src":"6660:34:50","type":"","value":"ERC1967Upgrade: new implementati"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6633:6:50"},"nodeType":"YulFunctionCall","src":"6633:62:50"},"nodeType":"YulExpressionStatement","src":"6633:62:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6715:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"6726:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6711:3:50"},"nodeType":"YulFunctionCall","src":"6711:18:50"},{"hexValue":"6f6e206973206e6f742055555053","kind":"string","nodeType":"YulLiteral","src":"6731:16:50","type":"","value":"on is not UUPS"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6704:6:50"},"nodeType":"YulFunctionCall","src":"6704:44:50"},"nodeType":"YulExpressionStatement","src":"6704:44:50"},{"nodeType":"YulAssignment","src":"6757:27:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6769:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"6780:3:50","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6765:3:50"},"nodeType":"YulFunctionCall","src":"6765:19:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6757:4:50"}]}]},"name":"abi_encode_tuple_t_stringliteral_8e8e2fbcb586f700b5b14e2c4a650c8d83b9773c31c5fe8962070ea544e11f24__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6531:9:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6545:4:50","type":""}],"src":"6380:410:50"},{"body":{"nodeType":"YulBlock","src":"6969:231:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6986:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"6997:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6979:6:50"},"nodeType":"YulFunctionCall","src":"6979:21:50"},"nodeType":"YulExpressionStatement","src":"6979:21:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7020:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"7031:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7016:3:50"},"nodeType":"YulFunctionCall","src":"7016:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"7036:2:50","type":"","value":"41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7009:6:50"},"nodeType":"YulFunctionCall","src":"7009:30:50"},"nodeType":"YulExpressionStatement","src":"7009:30:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7059:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"7070:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7055:3:50"},"nodeType":"YulFunctionCall","src":"7055:18:50"},{"hexValue":"45524331393637557067726164653a20756e737570706f727465642070726f78","kind":"string","nodeType":"YulLiteral","src":"7075:34:50","type":"","value":"ERC1967Upgrade: unsupported prox"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7048:6:50"},"nodeType":"YulFunctionCall","src":"7048:62:50"},"nodeType":"YulExpressionStatement","src":"7048:62:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7130:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"7141:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7126:3:50"},"nodeType":"YulFunctionCall","src":"7126:18:50"},{"hexValue":"6961626c6555554944","kind":"string","nodeType":"YulLiteral","src":"7146:11:50","type":"","value":"iableUUID"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7119:6:50"},"nodeType":"YulFunctionCall","src":"7119:39:50"},"nodeType":"YulExpressionStatement","src":"7119:39:50"},{"nodeType":"YulAssignment","src":"7167:27:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7179:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"7190:3:50","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7175:3:50"},"nodeType":"YulFunctionCall","src":"7175:19:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7167:4:50"}]}]},"name":"abi_encode_tuple_t_stringliteral_76b6b6debfc5febf101145a79ecf0b0d2e89e397dfdab2bca99888370411152c__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6946:9:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6960:4:50","type":""}],"src":"6795:405:50"},{"body":{"nodeType":"YulBlock","src":"7379:233:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7396:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"7407:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7389:6:50"},"nodeType":"YulFunctionCall","src":"7389:21:50"},"nodeType":"YulExpressionStatement","src":"7389:21:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7430:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"7441:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7426:3:50"},"nodeType":"YulFunctionCall","src":"7426:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"7446:2:50","type":"","value":"43"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7419:6:50"},"nodeType":"YulFunctionCall","src":"7419:30:50"},"nodeType":"YulExpressionStatement","src":"7419:30:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7469:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"7480:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7465:3:50"},"nodeType":"YulFunctionCall","src":"7465:18:50"},{"hexValue":"496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069","kind":"string","nodeType":"YulLiteral","src":"7485:34:50","type":"","value":"Initializable: contract is not i"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7458:6:50"},"nodeType":"YulFunctionCall","src":"7458:62:50"},"nodeType":"YulExpressionStatement","src":"7458:62:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7540:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"7551:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7536:3:50"},"nodeType":"YulFunctionCall","src":"7536:18:50"},{"hexValue":"6e697469616c697a696e67","kind":"string","nodeType":"YulLiteral","src":"7556:13:50","type":"","value":"nitializing"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7529:6:50"},"nodeType":"YulFunctionCall","src":"7529:41:50"},"nodeType":"YulExpressionStatement","src":"7529:41:50"},{"nodeType":"YulAssignment","src":"7579:27:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7591:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"7602:3:50","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7587:3:50"},"nodeType":"YulFunctionCall","src":"7587:19:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7579:4:50"}]}]},"name":"abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7356:9:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7370:4:50","type":""}],"src":"7205:407:50"},{"body":{"nodeType":"YulBlock","src":"7830:472:50","statements":[{"nodeType":"YulVariableDeclaration","src":"7840:52:50","value":{"kind":"number","nodeType":"YulLiteral","src":"7850:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"7844:2:50","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7908:9:50"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7923:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"7931:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7919:3:50"},"nodeType":"YulFunctionCall","src":"7919:15:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7901:6:50"},"nodeType":"YulFunctionCall","src":"7901:34:50"},"nodeType":"YulExpressionStatement","src":"7901:34:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7955:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"7966:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7951:3:50"},"nodeType":"YulFunctionCall","src":"7951:18:50"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"7975:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"7983:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7971:3:50"},"nodeType":"YulFunctionCall","src":"7971:15:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7944:6:50"},"nodeType":"YulFunctionCall","src":"7944:43:50"},"nodeType":"YulExpressionStatement","src":"7944:43:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8007:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"8018:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8003:3:50"},"nodeType":"YulFunctionCall","src":"8003:18:50"},{"name":"value2","nodeType":"YulIdentifier","src":"8023:6:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7996:6:50"},"nodeType":"YulFunctionCall","src":"7996:34:50"},"nodeType":"YulExpressionStatement","src":"7996:34:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8050:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"8061:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8046:3:50"},"nodeType":"YulFunctionCall","src":"8046:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"8066:3:50","type":"","value":"128"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8039:6:50"},"nodeType":"YulFunctionCall","src":"8039:31:50"},"nodeType":"YulExpressionStatement","src":"8039:31:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8090:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"8101:3:50","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8086:3:50"},"nodeType":"YulFunctionCall","src":"8086:19:50"},{"name":"value4","nodeType":"YulIdentifier","src":"8107:6:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8079:6:50"},"nodeType":"YulFunctionCall","src":"8079:35:50"},"nodeType":"YulExpressionStatement","src":"8079:35:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8140:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"8151:3:50","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8136:3:50"},"nodeType":"YulFunctionCall","src":"8136:19:50"},{"name":"value3","nodeType":"YulIdentifier","src":"8157:6:50"},{"name":"value4","nodeType":"YulIdentifier","src":"8165:6:50"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"8123:12:50"},"nodeType":"YulFunctionCall","src":"8123:49:50"},"nodeType":"YulExpressionStatement","src":"8123:49:50"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8196:9:50"},{"name":"value4","nodeType":"YulIdentifier","src":"8207:6:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8192:3:50"},"nodeType":"YulFunctionCall","src":"8192:22:50"},{"kind":"number","nodeType":"YulLiteral","src":"8216:3:50","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8188:3:50"},"nodeType":"YulFunctionCall","src":"8188:32:50"},{"kind":"number","nodeType":"YulLiteral","src":"8222:1:50","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8181:6:50"},"nodeType":"YulFunctionCall","src":"8181:43:50"},"nodeType":"YulExpressionStatement","src":"8181:43:50"},{"nodeType":"YulAssignment","src":"8233:63:50","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8249:9:50"},{"arguments":[{"arguments":[{"name":"value4","nodeType":"YulIdentifier","src":"8268:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"8276:2:50","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8264:3:50"},"nodeType":"YulFunctionCall","src":"8264:15:50"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8285:2:50","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"8281:3:50"},"nodeType":"YulFunctionCall","src":"8281:7:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8260:3:50"},"nodeType":"YulFunctionCall","src":"8260:29:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8245:3:50"},"nodeType":"YulFunctionCall","src":"8245:45:50"},{"kind":"number","nodeType":"YulLiteral","src":"8292:3:50","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8241:3:50"},"nodeType":"YulFunctionCall","src":"8241:55:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"8233:4:50"}]}]},"name":"abi_encode_tuple_t_address_t_address_t_bytes32_t_bytes_calldata_ptr__to_t_address_t_address_t_bytes32_t_bytes_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7767:9:50","type":""},{"name":"value4","nodeType":"YulTypedName","src":"7778:6:50","type":""},{"name":"value3","nodeType":"YulTypedName","src":"7786:6:50","type":""},{"name":"value2","nodeType":"YulTypedName","src":"7794:6:50","type":""},{"name":"value1","nodeType":"YulTypedName","src":"7802:6:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"7810:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7821:4:50","type":""}],"src":"7617:685:50"},{"body":{"nodeType":"YulBlock","src":"8385:199:50","statements":[{"body":{"nodeType":"YulBlock","src":"8431:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8440:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8443:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8433:6:50"},"nodeType":"YulFunctionCall","src":"8433:12:50"},"nodeType":"YulExpressionStatement","src":"8433:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"8406:7:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"8415:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"8402:3:50"},"nodeType":"YulFunctionCall","src":"8402:23:50"},{"kind":"number","nodeType":"YulLiteral","src":"8427:2:50","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"8398:3:50"},"nodeType":"YulFunctionCall","src":"8398:32:50"},"nodeType":"YulIf","src":"8395:52:50"},{"nodeType":"YulVariableDeclaration","src":"8456:29:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8475:9:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"8469:5:50"},"nodeType":"YulFunctionCall","src":"8469:16:50"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"8460:5:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"8538:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8547:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8550:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8540:6:50"},"nodeType":"YulFunctionCall","src":"8540:12:50"},"nodeType":"YulExpressionStatement","src":"8540:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8507:5:50"},{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8528:5:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"8521:6:50"},"nodeType":"YulFunctionCall","src":"8521:13:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"8514:6:50"},"nodeType":"YulFunctionCall","src":"8514:21:50"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"8504:2:50"},"nodeType":"YulFunctionCall","src":"8504:32:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"8497:6:50"},"nodeType":"YulFunctionCall","src":"8497:40:50"},"nodeType":"YulIf","src":"8494:60:50"},{"nodeType":"YulAssignment","src":"8563:15:50","value":{"name":"value","nodeType":"YulIdentifier","src":"8573:5:50"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"8563:6:50"}]}]},"name":"abi_decode_tuple_t_bool_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8351:9:50","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"8362:7:50","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"8374:6:50","type":""}],"src":"8307:277:50"},{"body":{"nodeType":"YulBlock","src":"8774:294:50","statements":[{"nodeType":"YulAssignment","src":"8784:27:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8796:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"8807:3:50","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8792:3:50"},"nodeType":"YulFunctionCall","src":"8792:19:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"8784:4:50"}]},{"nodeType":"YulVariableDeclaration","src":"8820:52:50","value":{"kind":"number","nodeType":"YulLiteral","src":"8830:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"8824:2:50","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8888:9:50"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"8903:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"8911:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8899:3:50"},"nodeType":"YulFunctionCall","src":"8899:15:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8881:6:50"},"nodeType":"YulFunctionCall","src":"8881:34:50"},"nodeType":"YulExpressionStatement","src":"8881:34:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8935:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"8946:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8931:3:50"},"nodeType":"YulFunctionCall","src":"8931:18:50"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"8955:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"8963:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8951:3:50"},"nodeType":"YulFunctionCall","src":"8951:15:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8924:6:50"},"nodeType":"YulFunctionCall","src":"8924:43:50"},"nodeType":"YulExpressionStatement","src":"8924:43:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8987:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"8998:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8983:3:50"},"nodeType":"YulFunctionCall","src":"8983:18:50"},{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"9007:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"9015:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"9003:3:50"},"nodeType":"YulFunctionCall","src":"9003:15:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8976:6:50"},"nodeType":"YulFunctionCall","src":"8976:43:50"},"nodeType":"YulExpressionStatement","src":"8976:43:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9039:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"9050:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9035:3:50"},"nodeType":"YulFunctionCall","src":"9035:18:50"},{"name":"value3","nodeType":"YulIdentifier","src":"9055:6:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9028:6:50"},"nodeType":"YulFunctionCall","src":"9028:34:50"},"nodeType":"YulExpressionStatement","src":"9028:34:50"}]},"name":"abi_encode_tuple_t_address_t_address_t_address_t_bytes32__to_t_address_t_address_t_address_t_bytes32__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8719:9:50","type":""},{"name":"value3","nodeType":"YulTypedName","src":"8730:6:50","type":""},{"name":"value2","nodeType":"YulTypedName","src":"8738:6:50","type":""},{"name":"value1","nodeType":"YulTypedName","src":"8746:6:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"8754:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"8765:4:50","type":""}],"src":"8589:479:50"},{"body":{"nodeType":"YulBlock","src":"9247:235:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9264:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"9275:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9257:6:50"},"nodeType":"YulFunctionCall","src":"9257:21:50"},"nodeType":"YulExpressionStatement","src":"9257:21:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9298:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"9309:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9294:3:50"},"nodeType":"YulFunctionCall","src":"9294:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"9314:2:50","type":"","value":"45"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9287:6:50"},"nodeType":"YulFunctionCall","src":"9287:30:50"},"nodeType":"YulExpressionStatement","src":"9287:30:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9337:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"9348:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9333:3:50"},"nodeType":"YulFunctionCall","src":"9333:18:50"},{"hexValue":"455243313936373a206e657720696d706c656d656e746174696f6e206973206e","kind":"string","nodeType":"YulLiteral","src":"9353:34:50","type":"","value":"ERC1967: new implementation is n"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9326:6:50"},"nodeType":"YulFunctionCall","src":"9326:62:50"},"nodeType":"YulExpressionStatement","src":"9326:62:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9408:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"9419:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9404:3:50"},"nodeType":"YulFunctionCall","src":"9404:18:50"},{"hexValue":"6f74206120636f6e7472616374","kind":"string","nodeType":"YulLiteral","src":"9424:15:50","type":"","value":"ot a contract"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9397:6:50"},"nodeType":"YulFunctionCall","src":"9397:43:50"},"nodeType":"YulExpressionStatement","src":"9397:43:50"},{"nodeType":"YulAssignment","src":"9449:27:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9461:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"9472:3:50","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9457:3:50"},"nodeType":"YulFunctionCall","src":"9457:19:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"9449:4:50"}]}]},"name":"abi_encode_tuple_t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9224:9:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"9238:4:50","type":""}],"src":"9073:409:50"},{"body":{"nodeType":"YulBlock","src":"9553:184:50","statements":[{"nodeType":"YulVariableDeclaration","src":"9563:10:50","value":{"kind":"number","nodeType":"YulLiteral","src":"9572:1:50","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"9567:1:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"9632:63:50","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"9657:3:50"},{"name":"i","nodeType":"YulIdentifier","src":"9662:1:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9653:3:50"},"nodeType":"YulFunctionCall","src":"9653:11:50"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"9676:3:50"},{"name":"i","nodeType":"YulIdentifier","src":"9681:1:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9672:3:50"},"nodeType":"YulFunctionCall","src":"9672:11:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"9666:5:50"},"nodeType":"YulFunctionCall","src":"9666:18:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9646:6:50"},"nodeType":"YulFunctionCall","src":"9646:39:50"},"nodeType":"YulExpressionStatement","src":"9646:39:50"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"9593:1:50"},{"name":"length","nodeType":"YulIdentifier","src":"9596:6:50"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"9590:2:50"},"nodeType":"YulFunctionCall","src":"9590:13:50"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"9604:19:50","statements":[{"nodeType":"YulAssignment","src":"9606:15:50","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"9615:1:50"},{"kind":"number","nodeType":"YulLiteral","src":"9618:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9611:3:50"},"nodeType":"YulFunctionCall","src":"9611:10:50"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"9606:1:50"}]}]},"pre":{"nodeType":"YulBlock","src":"9586:3:50","statements":[]},"src":"9582:113:50"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"9715:3:50"},{"name":"length","nodeType":"YulIdentifier","src":"9720:6:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9711:3:50"},"nodeType":"YulFunctionCall","src":"9711:16:50"},{"kind":"number","nodeType":"YulLiteral","src":"9729:1:50","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9704:6:50"},"nodeType":"YulFunctionCall","src":"9704:27:50"},"nodeType":"YulExpressionStatement","src":"9704:27:50"}]},"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"9531:3:50","type":""},{"name":"dst","nodeType":"YulTypedName","src":"9536:3:50","type":""},{"name":"length","nodeType":"YulTypedName","src":"9541:6:50","type":""}],"src":"9487:250:50"},{"body":{"nodeType":"YulBlock","src":"9879:150:50","statements":[{"nodeType":"YulVariableDeclaration","src":"9889:27:50","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"9909:6:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"9903:5:50"},"nodeType":"YulFunctionCall","src":"9903:13:50"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"9893:6:50","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"9964:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"9972:4:50","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9960:3:50"},"nodeType":"YulFunctionCall","src":"9960:17:50"},{"name":"pos","nodeType":"YulIdentifier","src":"9979:3:50"},{"name":"length","nodeType":"YulIdentifier","src":"9984:6:50"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"9925:34:50"},"nodeType":"YulFunctionCall","src":"9925:66:50"},"nodeType":"YulExpressionStatement","src":"9925:66:50"},{"nodeType":"YulAssignment","src":"10000:23:50","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"10011:3:50"},{"name":"length","nodeType":"YulIdentifier","src":"10016:6:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10007:3:50"},"nodeType":"YulFunctionCall","src":"10007:16:50"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"10000:3:50"}]}]},"name":"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"9855:3:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"9860:6:50","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"9871:3:50","type":""}],"src":"9742:287:50"},{"body":{"nodeType":"YulBlock","src":"10208:179:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10225:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"10236:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10218:6:50"},"nodeType":"YulFunctionCall","src":"10218:21:50"},"nodeType":"YulExpressionStatement","src":"10218:21:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10259:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"10270:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10255:3:50"},"nodeType":"YulFunctionCall","src":"10255:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"10275:2:50","type":"","value":"29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10248:6:50"},"nodeType":"YulFunctionCall","src":"10248:30:50"},"nodeType":"YulExpressionStatement","src":"10248:30:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10298:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"10309:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10294:3:50"},"nodeType":"YulFunctionCall","src":"10294:18:50"},{"hexValue":"416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374","kind":"string","nodeType":"YulLiteral","src":"10314:31:50","type":"","value":"Address: call to non-contract"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10287:6:50"},"nodeType":"YulFunctionCall","src":"10287:59:50"},"nodeType":"YulExpressionStatement","src":"10287:59:50"},{"nodeType":"YulAssignment","src":"10355:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10367:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"10378:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10363:3:50"},"nodeType":"YulFunctionCall","src":"10363:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"10355:4:50"}]}]},"name":"abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"10185:9:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"10199:4:50","type":""}],"src":"10034:353:50"},{"body":{"nodeType":"YulBlock","src":"10513:275:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10530:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"10541:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10523:6:50"},"nodeType":"YulFunctionCall","src":"10523:21:50"},"nodeType":"YulExpressionStatement","src":"10523:21:50"},{"nodeType":"YulVariableDeclaration","src":"10553:27:50","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"10573:6:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"10567:5:50"},"nodeType":"YulFunctionCall","src":"10567:13:50"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"10557:6:50","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10600:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"10611:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10596:3:50"},"nodeType":"YulFunctionCall","src":"10596:18:50"},{"name":"length","nodeType":"YulIdentifier","src":"10616:6:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10589:6:50"},"nodeType":"YulFunctionCall","src":"10589:34:50"},"nodeType":"YulExpressionStatement","src":"10589:34:50"},{"expression":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"10671:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"10679:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10667:3:50"},"nodeType":"YulFunctionCall","src":"10667:15:50"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10688:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"10699:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10684:3:50"},"nodeType":"YulFunctionCall","src":"10684:18:50"},{"name":"length","nodeType":"YulIdentifier","src":"10704:6:50"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"10632:34:50"},"nodeType":"YulFunctionCall","src":"10632:79:50"},"nodeType":"YulExpressionStatement","src":"10632:79:50"},{"nodeType":"YulAssignment","src":"10720:62:50","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10736:9:50"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"10755:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"10763:2:50","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10751:3:50"},"nodeType":"YulFunctionCall","src":"10751:15:50"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10772:2:50","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"10768:3:50"},"nodeType":"YulFunctionCall","src":"10768:7:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"10747:3:50"},"nodeType":"YulFunctionCall","src":"10747:29:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10732:3:50"},"nodeType":"YulFunctionCall","src":"10732:45:50"},{"kind":"number","nodeType":"YulLiteral","src":"10779:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10728:3:50"},"nodeType":"YulFunctionCall","src":"10728:54:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"10720:4:50"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"10482:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"10493:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"10504:4:50","type":""}],"src":"10392:396:50"}]},"contents":"{\n { }\n function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n if iszero(eq(value, and(value, shl(224, 0xffffffff)))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function abi_decode_tuple_t_uint16(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n if iszero(eq(value, and(value, 0xffff))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 96)\n let pos := headStart\n pos := headStart\n let srcPtr := value0\n let i := 0\n for { } lt(i, 0x03) { i := add(i, 1) }\n {\n mstore(pos, and(mload(srcPtr), 0xff))\n let _1 := 0x20\n pos := add(pos, _1)\n srcPtr := add(srcPtr, _1)\n }\n }\n function validator_revert_address(value)\n {\n if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n }\n function abi_encode_tuple_t_contract$_IDAO_$2538__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_encode_tuple_t_enum$_PluginType_$3994__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n if iszero(lt(value0, 3))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x21)\n revert(0, 0x24)\n }\n mstore(headStart, value0)\n }\n function panic_error_0x41()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function abi_decode_tuple_t_addresst_bytes_memory_ptr(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n let offset := calldataload(add(headStart, 32))\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n let _2 := add(headStart, offset)\n if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n let _3 := calldataload(_2)\n if gt(_3, _1) { panic_error_0x41() }\n let _4 := not(31)\n let memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n mstore(memPtr, _3)\n if gt(add(add(_2, _3), 32), dataEnd) { revert(0, 0) }\n calldatacopy(add(memPtr, 32), add(_2, 32), _3)\n mstore(add(add(memPtr, _3), 32), 0)\n value1 := memPtr\n }\n function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_decode_tuple_t_contract$_IDAO_$2538(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n }\n function abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 46)\n mstore(add(headStart, 64), \"Initializable: contract is alrea\")\n mstore(add(headStart, 96), \"dy initialized\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xff))\n }\n function abi_encode_tuple_t_stringliteral_36e108fa7a809b52ab1951dd91c117a7bc9ac5250bdf1aa162d4e104f7edf9eb__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 44)\n mstore(add(headStart, 64), \"Function must be called through \")\n mstore(add(headStart, 96), \"delegatecall\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_52f1ead4d9653e13afbd2e90ef2587c30187cd50b2e97d784e3f7a7541247434__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 44)\n mstore(add(headStart, 64), \"Function must be called through \")\n mstore(add(headStart, 96), \"active proxy\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_67f0151b4ad1dcfa0e3302a0cd6019f51582ef1807b37dceb00bd852a514f7f4__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 56)\n mstore(add(headStart, 64), \"UUPSUpgradeable: must not be cal\")\n mstore(add(headStart, 96), \"led through delegatecall\")\n tail := add(headStart, 128)\n }\n function abi_decode_tuple_t_bytes32_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := mload(headStart)\n }\n function abi_encode_tuple_t_stringliteral_8e8e2fbcb586f700b5b14e2c4a650c8d83b9773c31c5fe8962070ea544e11f24__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 46)\n mstore(add(headStart, 64), \"ERC1967Upgrade: new implementati\")\n mstore(add(headStart, 96), \"on is not UUPS\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_76b6b6debfc5febf101145a79ecf0b0d2e89e397dfdab2bca99888370411152c__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 41)\n mstore(add(headStart, 64), \"ERC1967Upgrade: unsupported prox\")\n mstore(add(headStart, 96), \"iableUUID\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 43)\n mstore(add(headStart, 64), \"Initializable: contract is not i\")\n mstore(add(headStart, 96), \"nitializing\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_address_t_address_t_bytes32_t_bytes_calldata_ptr__to_t_address_t_address_t_bytes32_t_bytes_memory_ptr__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n {\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n mstore(add(headStart, 64), value2)\n mstore(add(headStart, 96), 128)\n mstore(add(headStart, 128), value4)\n calldatacopy(add(headStart, 160), value3, value4)\n mstore(add(add(headStart, value4), 160), 0)\n tail := add(add(headStart, and(add(value4, 31), not(31))), 160)\n }\n function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := mload(headStart)\n if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_address_t_address_t_address_t_bytes32__to_t_address_t_address_t_address_t_bytes32__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n {\n tail := add(headStart, 128)\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n mstore(add(headStart, 64), and(value2, _1))\n mstore(add(headStart, 96), value3)\n }\n function abi_encode_tuple_t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 45)\n mstore(add(headStart, 64), \"ERC1967: new implementation is n\")\n mstore(add(headStart, 96), \"ot a contract\")\n tail := add(headStart, 128)\n }\n function copy_memory_to_memory_with_cleanup(src, dst, length)\n {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n mstore(add(dst, length), 0)\n }\n function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n {\n let length := mload(value0)\n copy_memory_to_memory_with_cleanup(add(value0, 0x20), pos, length)\n end := add(pos, length)\n }\n function abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 29)\n mstore(add(headStart, 64), \"Address: call to non-contract\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n mstore(headStart, 32)\n let length := mload(value0)\n mstore(add(headStart, 32), length)\n copy_memory_to_memory_with_cleanup(add(value0, 32), add(headStart, 64), length)\n tail := add(add(headStart, and(add(length, 31), not(31))), 64)\n }\n}","id":50,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{"554":[{"length":32,"start":1145},{"length":32,"start":1278},{"length":32,"start":1524},{"length":32,"start":1657},{"length":32,"start":1891}]},"linkReferences":{},"object":"6080604052600436106100e85760003560e01c806352d1902d1161008a578063c4d66de811610059578063c4d66de814610256578063c9c4bfca14610276578063d4b83992146102aa578063efe51cca146102ca57600080fd5b806352d1902d146101e75780635c60da1b1461020a5780636accab8c1461021f578063776d1a011461023657600080fd5b80633659cfe6116100c65780633659cfe6146101665780634162169f1461018657806341de6830146101b85780634f1ef286146101d457600080fd5b806301ffc9a7146100ed578063039a8c50146101225780632ae9c60014610144575b600080fd5b3480156100f957600080fd5b5061010d610108366004610fed565b6102e1565b60405190151581526020015b60405180910390f35b34801561012e57600080fd5b5061014261013d366004611017565b61034d565b005b34801561015057600080fd5b50610159610445565b604051610119919061103b565b34801561017257600080fd5b50610142610181366004611084565b61046f565b34801561019257600080fd5b5060c9546001600160a01b03165b6040516001600160a01b039091168152602001610119565b3480156101c457600080fd5b50600060405161011991906110a1565b6101426101e23660046110df565b6105ea565b3480156101f357600080fd5b506101fc610756565b604051908152602001610119565b34801561021657600080fd5b506101a061081b565b34801561022b57600080fd5b506101fc61012d5481565b34801561024257600080fd5b50610142610251366004611084565b610853565b34801561026257600080fd5b50610142610271366004611084565b6108b2565b34801561028257600080fd5b506101fc7f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f581565b3480156102b657600080fd5b5060fb546101a0906001600160a01b031681565b3480156102d657600080fd5b506101fc61012e5481565b60006001600160e01b0319821663041de68360e41b148061031157506001600160e01b03198216621574e360e91b145b8061032c57506001600160e01b031982166352d1902d60e01b145b8061034757506301ffc9a760e01b6001600160e01b03198316145b92915050565b600054600290610100900460ff1615801561036f575060005460ff8083169116105b6103d75760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805461ffff191660ff831617610100179055600261ffff831610156103ff57600261012e555b6000805461ff001916905560405160ff821681527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b61044d610fcf565b5060408051606081018252600181526004602082015260009181019190915290565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036104fc5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b60648201526084016103ce565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166105577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b0316146105c25760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b60648201526084016103ce565b6105cb8161099e565b604080516000808252602082019092526105e7918391906109db565b50565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036106775760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b60648201526084016103ce565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166106d27f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b03161461073d5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b60648201526084016103ce565b6107468261099e565b610752828260016109db565b5050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146107f65760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016103ce565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b600061084e7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b60fb80546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d690600090a35050565b600054600290610100900460ff161580156108d4575060005460ff8083169116105b6109375760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016103ce565b6000805461ffff191660ff83161761010017905561095482610b80565b600161012d55600261012e556000805461ff001916905560405160ff821681527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602001610439565b60c9547f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f590610752906001600160a01b0316303384600036610bf4565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610a1357610a0e83610cb0565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610a6d575060408051601f3d908101601f19168201909252610a6a918101906111a3565b60015b610adf5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201527f6f6e206973206e6f74205555505300000000000000000000000000000000000060648201526084016103ce565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114610b745760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f7860448201527f6961626c6555554944000000000000000000000000000000000000000000000060648201526084016103ce565b50610a0e838383610d7b565b600054610100900460ff16610beb5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103ce565b6105e781610da6565b604051637ef7c88360e11b81526001600160a01b0387169063fdef910690610c2890889088908890889088906004016111bc565b602060405180830381865afa158015610c45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c699190611210565b610ca857604051630cb6f8ed60e21b81526001600160a01b038088166004830152808716602483015285166044820152606481018490526084016103ce565b505050505050565b6001600160a01b0381163b610d2d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e74726163740000000000000000000000000000000000000060648201526084016103ce565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610d8483610e40565b600082511180610d915750805b15610a0e57610da08383610e80565b50505050565b600054610100900460ff16610e115760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103ce565b60c9805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610e4981610cb0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060610ea583836040518060600160405280602781526020016112a660279139610eac565b9392505050565b6060600080856001600160a01b031685604051610ec99190611256565b600060405180830381855af49150503d8060008114610f04576040519150601f19603f3d011682016040523d82523d6000602084013e610f09565b606091505b5091509150610f1a86838387610f24565b9695505050505050565b60608315610f93578251600003610f8c576001600160a01b0385163b610f8c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016103ce565b5081610f9d565b610f9d8383610fa5565b949350505050565b815115610fb55781518083602001fd5b8060405162461bcd60e51b81526004016103ce9190611272565b60405180606001604052806003906020820280368337509192915050565b600060208284031215610fff57600080fd5b81356001600160e01b031981168114610ea557600080fd5b60006020828403121561102957600080fd5b813561ffff81168114610ea557600080fd5b60608101818360005b600381101561106657815160ff16835260209283019290910190600101611044565b50505092915050565b6001600160a01b03811681146105e757600080fd5b60006020828403121561109657600080fd5b8135610ea58161106f565b60208101600383106110c357634e487b7160e01b600052602160045260246000fd5b91905290565b634e487b7160e01b600052604160045260246000fd5b600080604083850312156110f257600080fd5b82356110fd8161106f565b9150602083013567ffffffffffffffff8082111561111a57600080fd5b818501915085601f83011261112e57600080fd5b813581811115611140576111406110c9565b604051601f8201601f19908116603f01168101908382118183101715611168576111686110c9565b8160405282815288602084870101111561118157600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6000602082840312156111b557600080fd5b5051919050565b60006001600160a01b03808816835280871660208401525084604083015260806060830152826080830152828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b60006020828403121561122257600080fd5b81518015158114610ea557600080fd5b60005b8381101561124d578181015183820152602001611235565b50506000910152565b60008251611268818460208701611232565b9190910192915050565b6020815260008251806020840152611291816040850160208701611232565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xE8 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x52D1902D GT PUSH2 0x8A JUMPI DUP1 PUSH4 0xC4D66DE8 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0x256 JUMPI DUP1 PUSH4 0xC9C4BFCA EQ PUSH2 0x276 JUMPI DUP1 PUSH4 0xD4B83992 EQ PUSH2 0x2AA JUMPI DUP1 PUSH4 0xEFE51CCA EQ PUSH2 0x2CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x52D1902D EQ PUSH2 0x1E7 JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0x20A JUMPI DUP1 PUSH4 0x6ACCAB8C EQ PUSH2 0x21F JUMPI DUP1 PUSH4 0x776D1A01 EQ PUSH2 0x236 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x3659CFE6 GT PUSH2 0xC6 JUMPI DUP1 PUSH4 0x3659CFE6 EQ PUSH2 0x166 JUMPI DUP1 PUSH4 0x4162169F EQ PUSH2 0x186 JUMPI DUP1 PUSH4 0x41DE6830 EQ PUSH2 0x1B8 JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x1D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xED JUMPI DUP1 PUSH4 0x39A8C50 EQ PUSH2 0x122 JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0x144 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xF9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x10D PUSH2 0x108 CALLDATASIZE PUSH1 0x4 PUSH2 0xFED JUMP JUMPDEST PUSH2 0x2E1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x12E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x142 PUSH2 0x13D CALLDATASIZE PUSH1 0x4 PUSH2 0x1017 JUMP JUMPDEST PUSH2 0x34D JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x150 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x159 PUSH2 0x445 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x119 SWAP2 SWAP1 PUSH2 0x103B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x172 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x142 PUSH2 0x181 CALLDATASIZE PUSH1 0x4 PUSH2 0x1084 JUMP JUMPDEST PUSH2 0x46F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x192 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xC9 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x119 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 PUSH1 0x40 MLOAD PUSH2 0x119 SWAP2 SWAP1 PUSH2 0x10A1 JUMP JUMPDEST PUSH2 0x142 PUSH2 0x1E2 CALLDATASIZE PUSH1 0x4 PUSH2 0x10DF JUMP JUMPDEST PUSH2 0x5EA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FC PUSH2 0x756 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x119 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x216 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1A0 PUSH2 0x81B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x22B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FC PUSH2 0x12D SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x242 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x142 PUSH2 0x251 CALLDATASIZE PUSH1 0x4 PUSH2 0x1084 JUMP JUMPDEST PUSH2 0x853 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x262 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x142 PUSH2 0x271 CALLDATASIZE PUSH1 0x4 PUSH2 0x1084 JUMP JUMPDEST PUSH2 0x8B2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x282 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FC PUSH32 0x821B6E3A557148015A918C89E5D092E878A69854A2D1A410635F771BD5A8A3F5 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xFB SLOAD PUSH2 0x1A0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FC PUSH2 0x12E SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x41DE683 PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x311 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x32C JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x52D1902D PUSH1 0xE0 SHL EQ JUMPDEST DUP1 PUSH2 0x347 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x2 SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH2 0x36F JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF DUP1 DUP4 AND SWAP2 AND LT JUMPDEST PUSH2 0x3D7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x44 DUP3 ADD MSTORE PUSH14 0x191E481A5B9A5D1A585B1A5E9959 PUSH1 0x92 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH2 0xFFFF NOT AND PUSH1 0xFF DUP4 AND OR PUSH2 0x100 OR SWAP1 SSTORE PUSH1 0x2 PUSH2 0xFFFF DUP4 AND LT ISZERO PUSH2 0x3FF JUMPI PUSH1 0x2 PUSH2 0x12E SSTORE JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH1 0xFF DUP3 AND DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH2 0x44D PUSH2 0xFCF JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x4FC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x19195B1959D85D1958D85B1B PUSH1 0xA2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3CE JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x557 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x5C2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x6163746976652070726F7879 PUSH1 0xA0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3CE JUMP JUMPDEST PUSH2 0x5CB DUP2 PUSH2 0x99E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x5E7 SWAP2 DUP4 SWAP2 SWAP1 PUSH2 0x9DB JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x677 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x19195B1959D85D1958D85B1B PUSH1 0xA2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3CE JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x6D2 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x73D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x6163746976652070726F7879 PUSH1 0xA0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3CE JUMP JUMPDEST PUSH2 0x746 DUP3 PUSH2 0x99E JUMP JUMPDEST PUSH2 0x752 DUP3 DUP3 PUSH1 0x1 PUSH2 0x9DB JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x7F6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x38 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x555550535570677261646561626C653A206D757374206E6F742062652063616C PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6C6564207468726F7567682064656C656761746563616C6C0000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3CE JUMP JUMPDEST POP PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x84E PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0xFB DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP2 SWAP1 DUP3 SWAP1 PUSH32 0x90CC2F570A6EB594B1580EA3E41247D2D73A55281889E86BD4EC2FC29C7E62D6 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x2 SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH2 0x8D4 JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF DUP1 DUP4 AND SWAP2 AND LT JUMPDEST PUSH2 0x937 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x44 DUP3 ADD MSTORE PUSH14 0x191E481A5B9A5D1A585B1A5E9959 PUSH1 0x92 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3CE JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH2 0xFFFF NOT AND PUSH1 0xFF DUP4 AND OR PUSH2 0x100 OR SWAP1 SSTORE PUSH2 0x954 DUP3 PUSH2 0xB80 JUMP JUMPDEST PUSH1 0x1 PUSH2 0x12D SSTORE PUSH1 0x2 PUSH2 0x12E SSTORE PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH1 0xFF DUP3 AND DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH2 0x439 JUMP JUMPDEST PUSH1 0xC9 SLOAD PUSH32 0x821B6E3A557148015A918C89E5D092E878A69854A2D1A410635F771BD5A8A3F5 SWAP1 PUSH2 0x752 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ADDRESS CALLER DUP5 PUSH1 0x0 CALLDATASIZE PUSH2 0xBF4 JUMP JUMPDEST PUSH32 0x4910FDFA16FED3260ED0E7147F7CC6DA11A60208B5B9406D12A635614FFD9143 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0xA13 JUMPI PUSH2 0xA0E DUP4 PUSH2 0xCB0 JUMP JUMPDEST POP POP POP JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x52D1902D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0xA6D JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0xA6A SWAP2 DUP2 ADD SWAP1 PUSH2 0x11A3 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0xADF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524331393637557067726164653A206E657720696D706C656D656E74617469 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F6E206973206E6F742055555053000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3CE JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC DUP2 EQ PUSH2 0xB74 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524331393637557067726164653A20756E737570706F727465642070726F78 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6961626C65555549440000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3CE JUMP JUMPDEST POP PUSH2 0xA0E DUP4 DUP4 DUP4 PUSH2 0xD7B JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0xBEB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3CE JUMP JUMPDEST PUSH2 0x5E7 DUP2 PUSH2 0xDA6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x7EF7C883 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0xFDEF9106 SWAP1 PUSH2 0xC28 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x11BC JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC45 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xC69 SWAP2 SWAP1 PUSH2 0x1210 JUMP JUMPDEST PUSH2 0xCA8 JUMPI PUSH1 0x40 MLOAD PUSH4 0xCB6F8ED PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND PUSH1 0x4 DUP4 ADD MSTORE DUP1 DUP8 AND PUSH1 0x24 DUP4 ADD MSTORE DUP6 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x84 ADD PUSH2 0x3CE JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND EXTCODESIZE PUSH2 0xD2D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313936373A206E657720696D706C656D656E746174696F6E206973206E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F74206120636F6E747261637400000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3CE JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xD84 DUP4 PUSH2 0xE40 JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD GT DUP1 PUSH2 0xD91 JUMPI POP DUP1 JUMPDEST ISZERO PUSH2 0xA0E JUMPI PUSH2 0xDA0 DUP4 DUP4 PUSH2 0xE80 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0xE11 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3CE JUMP JUMPDEST PUSH1 0xC9 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xE49 DUP2 PUSH2 0xCB0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xEA5 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x12A6 PUSH1 0x27 SWAP2 CODECOPY PUSH2 0xEAC JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0xEC9 SWAP2 SWAP1 PUSH2 0x1256 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xF04 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xF09 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0xF1A DUP7 DUP4 DUP4 DUP8 PUSH2 0xF24 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0xF93 JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0xF8C JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0xF8C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3CE JUMP JUMPDEST POP DUP2 PUSH2 0xF9D JUMP JUMPDEST PUSH2 0xF9D DUP4 DUP4 PUSH2 0xFA5 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0xFB5 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3CE SWAP2 SWAP1 PUSH2 0x1272 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xFFF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0xEA5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1029 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH2 0xEA5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0x1066 JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x1044 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x5E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1096 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xEA5 DUP2 PUSH2 0x106F JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH1 0x3 DUP4 LT PUSH2 0x10C3 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 SWAP1 MSTORE SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x10F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x10FD DUP2 PUSH2 0x106F JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x111A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x112E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x1140 JUMPI PUSH2 0x1140 PUSH2 0x10C9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x1168 JUMPI PUSH2 0x1168 PUSH2 0x10C9 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x1181 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x11B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND DUP4 MSTORE DUP1 DUP8 AND PUSH1 0x20 DUP5 ADD MSTORE POP DUP5 PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x80 PUSH1 0x60 DUP4 ADD MSTORE DUP3 PUSH1 0x80 DUP4 ADD MSTORE DUP3 DUP5 PUSH1 0xA0 DUP5 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0xA0 DUP5 DUP5 ADD ADD MSTORE PUSH1 0xA0 PUSH1 0x1F NOT PUSH1 0x1F DUP6 ADD AND DUP4 ADD ADD SWAP1 POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1222 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xEA5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x124D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1235 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x1268 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x1232 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x1291 DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x1232 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A164 PUSH20 0x6F6C6343000811000A0000000000000000000000 ","sourceMap":"755:431:31:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2810:366:40;;;;;;;;;;-1:-1:-1;2810:366:40;;;;;:::i;:::-;;:::i;:::-;;;470:14:50;;463:22;445:41;;433:2;418:18;2810:366:40;;;;;;;;1036:148:31;;;;;;;;;;-1:-1:-1;1036:148:31;;;;;:::i;:::-;;:::i;:::-;;631:98:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;3408:195:5:-;;;;;;;;;;-1:-1:-1;3408:195:5;;;;;:::i;:::-;;:::i;1200:70:35:-;;;;;;;;;;-1:-1:-1;1259:4:35;;-1:-1:-1;;;;;1259:4:35;1200:70;;;-1:-1:-1;;;;;1868:55:50;;;1850:74;;1838:2;1823:18;1200:70:35;1691:239:50;1710:103:40;;;;;;;;;;-1:-1:-1;1762:10:40;1710:103;;;;;;:::i;3922:220:5:-;;;;;;:::i;:::-;;:::i;3027:131::-;;;;;;;;;;;;;:::i;:::-;;;3622:25:50;;;3610:2;3595:18;3027:131:5;3476:177:50;3457:100:40;;;;;;;;;;;;;:::i;827:21:31:-;;;;;;;;;;;;;;;;2439:166:40;;;;;;;;;;-1:-1:-1;2439:166:40;;;;;:::i;:::-;;:::i;882:148:31:-;;;;;;;;;;-1:-1:-1;882:148:31;;;;;:::i;:::-;;:::i;1911:93:40:-;;;;;;;;;;;;1966:38;1911:93;;1293:21;;;;;;;;;;-1:-1:-1;1293:21:40;;;;-1:-1:-1;;;;;1293:21:40;;;854::31;;;;;;;;;;;;;;;;2810:366:40;2896:4;-1:-1:-1;;;;;;2931:41:40;;-1:-1:-1;;;2931:41:40;;:107;;-1:-1:-1;;;;;;;2988:50:40;;-1:-1:-1;;;2988:50:40;2931:107;:185;;;-1:-1:-1;;;;;;;3054:62:40;;-1:-1:-1;;;3054:62:40;2931:185;:238;;;-1:-1:-1;;;;;;;;;;1189:51:10;;;3132:37:40;2912:257;2810:366;-1:-1:-1;;2810:366:40:o;1036:148:31:-;4882:13:4;;1106:1:31;;4882:13:4;;;;;4881:14;:40;;;;-1:-1:-1;4899:12:4;;:22;;;;:12;;:22;4881:40;4873:99;;;;-1:-1:-1;;;4873:99:4;;4538:2:50;4873:99:4;;;4520:21:50;4577:2;4557:18;;;4550:30;4616:34;4596:18;;;4589:62;-1:-1:-1;;;4667:18:50;;;4660:44;4721:19;;4873:99:4;;;;;;;;;4982:12;:22;;-1:-1:-1;;5014:20:4;4982:22;;;5014:20;4982:22;5014:20;;;1140:1:31::1;1123:18;::::0;::::1;;1119:59;;;1166:1;1157:6;:10:::0;1119:59:::1;5071:5:4::0;5055:21;;-1:-1:-1;;5055:21:4;;;5091:20;;4923:4:50;4911:17;;4893:36;;5091:20:4;;4881:2:50;4866:18;5091:20:4;;;;;;;;1036:148:31;;:::o;631:98:49:-;679:15;;:::i;:::-;-1:-1:-1;706:16:49;;;;;;;;714:1;706:16;;717:1;706:16;;;;-1:-1:-1;706:16:49;;;;;;;;631:98::o;3408:195:5:-;-1:-1:-1;;;;;1764:6:5;1747:23;1755:4;1747:23;1739:80;;;;-1:-1:-1;;;1739:80:5;;5142:2:50;1739:80:5;;;5124:21:50;5181:2;5161:18;;;5154:30;5220:34;5200:18;;;5193:62;-1:-1:-1;;;5271:18:50;;;5264:42;5323:19;;1739:80:5;4940:408:50;1739:80:5;1861:6;-1:-1:-1;;;;;1837:30:5;:20;1180:66:2;1557:65;-1:-1:-1;;;;;1557:65:2;;1478:151;1837:20:5;-1:-1:-1;;;;;1837:30:5;;1829:87;;;;-1:-1:-1;;;1829:87:5;;5555:2:50;1829:87:5;;;5537:21:50;5594:2;5574:18;;;5567:30;5633:34;5613:18;;;5606:62;-1:-1:-1;;;5684:18:50;;;5677:42;5736:19;;1829:87:5;5353:408:50;1829:87:5;3489:36:::1;3507:17;3489;:36::i;:::-;3576:12;::::0;;3586:1:::1;3576:12:::0;;;::::1;::::0;::::1;::::0;;;3535:61:::1;::::0;3557:17;;3576:12;3535:21:::1;:61::i;:::-;3408:195:::0;:::o;3922:220::-;-1:-1:-1;;;;;1764:6:5;1747:23;1755:4;1747:23;1739:80;;;;-1:-1:-1;;;1739:80:5;;5142:2:50;1739:80:5;;;5124:21:50;5181:2;5161:18;;;5154:30;5220:34;5200:18;;;5193:62;-1:-1:-1;;;5271:18:50;;;5264:42;5323:19;;1739:80:5;4940:408:50;1739:80:5;1861:6;-1:-1:-1;;;;;1837:30:5;:20;1180:66:2;1557:65;-1:-1:-1;;;;;1557:65:2;;1478:151;1837:20:5;-1:-1:-1;;;;;1837:30:5;;1829:87;;;;-1:-1:-1;;;1829:87:5;;5555:2:50;1829:87:5;;;5537:21:50;5594:2;5574:18;;;5567:30;5633:34;5613:18;;;5606:62;-1:-1:-1;;;5684:18:50;;;5677:42;5736:19;;1829:87:5;5353:408:50;1829:87:5;4037:36:::1;4055:17;4037;:36::i;:::-;4083:52;4105:17;4124:4;4130;4083:21;:52::i;:::-;3922:220:::0;;:::o;3027:131::-;3105:7;2190:4;-1:-1:-1;;;;;2199:6:5;2182:23;;2174:92;;;;-1:-1:-1;;;2174:92:5;;5968:2:50;2174:92:5;;;5950:21:50;6007:2;5987:18;;;5980:30;6046:34;6026:18;;;6019:62;6117:26;6097:18;;;6090:54;6161:19;;2174:92:5;5766:420:50;2174:92:5;-1:-1:-1;1180:66:2::1;3027:131:5::0;:::o;3457:100:40:-;3504:7;3530:20;1180:66:2;1557:65;-1:-1:-1;;;;;1557:65:2;;1478:151;3530:20:40;3523:27;;3457:100;:::o;2439:166::-;2517:6;;;-1:-1:-1;;;;;2533:16:40;;;-1:-1:-1;;2533:16:40;;;;;;;2564:34;;2517:6;;;2533:16;2517:6;;2564:34;;2492:22;;2564:34;2482:123;2439:166;:::o;882:148:31:-;4882:13:4;;936:1:31;;4882:13:4;;;;;4881:14;:40;;;;-1:-1:-1;4899:12:4;;:22;;;;:12;;:22;4881:40;4873:99;;;;-1:-1:-1;;;4873:99:4;;4538:2:50;4873:99:4;;;4520:21:50;4577:2;4557:18;;;4550:30;4616:34;4596:18;;;4589:62;-1:-1:-1;;;4667:18:50;;;4660:44;4721:19;;4873:99:4;4336:410:50;4873:99:4;4982:12;:22;;-1:-1:-1;;5014:20:4;4982:22;;;5014:20;4982:22;5014:20;;;949:34:31::1;978:4:::0;949:28:::1;:34::i;:::-;1002:1;993:6;:10:::0;1022:1:::1;1013:6;:10:::0;-1:-1:-1;5055:21:4;;-1:-1:-1;;5055:21:4;;;5091:20;;4923:4:50;4911:17;;4893:36;;5091:20:4;;4881:2:50;4866:18;5091:20:4;4751:184:50;5390:204:40;1616:4:35;;1966:38:40;;1610:67:35;;-1:-1:-1;;;;;1616:4:35;1630;965:10:7;1651:13:35;1039:14:7;;1610:5:35;:67::i;2841:944:2:-;839:66;3257:59;;;3253:526;;;3332:37;3351:17;3332:18;:37::i;:::-;2841:944;;;:::o;3253:526::-;3433:17;-1:-1:-1;;;;;3404:61:2;;:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3404:63:2;;;;;;;;-1:-1:-1;;3404:63:2;;;;;;;;;;;;:::i;:::-;;;3400:302;;3631:56;;-1:-1:-1;;;3631:56:2;;6582:2:50;3631:56:2;;;6564:21:50;6621:2;6601:18;;;6594:30;6660:34;6640:18;;;6633:62;6731:16;6711:18;;;6704:44;6765:19;;3631:56:2;6380:410:50;3400:302:2;1180:66;3517:28;;3509:82;;;;-1:-1:-1;;;3509:82:2;;6997:2:50;3509:82:2;;;6979:21:50;7036:2;7016:18;;;7009:30;7075:34;7055:18;;;7048:62;7146:11;7126:18;;;7119:39;7175:19;;3509:82:2;6795:405:50;3509:82:2;3468:138;3715:53;3733:17;3752:4;3758:9;3715:17;:53::i;2172:139:40:-;5374:13:4;;;;;;;5366:69;;;;-1:-1:-1;;;5366:69:4;;7407:2:50;5366:69:4;;;7389:21:50;7446:2;7426:18;;;7419:30;7485:34;7465:18;;;7458:62;-1:-1:-1;;;7536:18:50;;;7529:41;7587:19;;5366:69:4;7205:407:50;5366:69:4;2265:39:40::1;2299:4;2265:33;:39::i;1041:363:36:-:0;1180:54;;-1:-1:-1;;;1180:54:36;;-1:-1:-1;;;;;1180:18:36;;;;;:54;;1199:6;;1207:4;;1213:13;;1228:5;;;;1180:54;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1175:226;;1251:150;;-1:-1:-1;;;1251:150:36;;-1:-1:-1;;;;;8899:15:50;;;1251:150:36;;;8881:34:50;8951:15;;;8931:18;;;8924:43;9003:15;;8983:18;;;8976:43;9035:18;;;9028:34;;;8792:19;;1251:150:36;8589:479:50;1175:226:36;1041:363;;;;;;:::o;1720:281:2:-;-1:-1:-1;;;;;1713:19:6;;;1793:106:2;;;;-1:-1:-1;;;1793:106:2;;9275:2:50;1793:106:2;;;9257:21:50;9314:2;9294:18;;;9287:30;9353:34;9333:18;;;9326:62;9424:15;9404:18;;;9397:43;9457:19;;1793:106:2;9073:409:50;1793:106:2;1180:66;1909:85;;-1:-1:-1;;1909:85:2;-1:-1:-1;;;;;1909:85:2;;;;;;;;;;1720:281::o;2393:276::-;2501:29;2512:17;2501:10;:29::i;:::-;2558:1;2544:4;:11;:15;:28;;;;2563:9;2544:28;2540:123;;;2588:64;2628:17;2647:4;2588:39;:64::i;:::-;;2393:276;;;:::o;1010:108:35:-;5374:13:4;;;;;;;5366:69;;;;-1:-1:-1;;;5366:69:4;;7407:2:50;5366:69:4;;;7389:21:50;7446:2;7426:18;;;7419:30;7485:34;7465:18;;;7458:62;-1:-1:-1;;;7536:18:50;;;7529:41;7587:19;;5366:69:4;7205:407:50;5366:69:4;1100:4:35::1;:11:::0;;-1:-1:-1;;1100:11:35::1;-1:-1:-1::0;;;;;1100:11:35;;;::::1;::::0;;;::::1;::::0;;1010:108::o;2107:152:2:-;2173:37;2192:17;2173:18;:37::i;:::-;2225:27;;-1:-1:-1;;;;;2225:27:2;;;;;;;;2107:152;:::o;6685:198:6:-;6768:12;6799:77;6820:6;6828:4;6799:77;;;;;;;;;;;;;;;;;:20;:77::i;:::-;6792:84;6685:198;-1:-1:-1;;;6685:198:6:o;7069:325::-;7210:12;7235;7249:23;7276:6;-1:-1:-1;;;;;7276:19:6;7296:4;7276:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7234:67;;;;7318:69;7345:6;7353:7;7362:10;7374:12;7318:26;:69::i;:::-;7311:76;7069:325;-1:-1:-1;;;;;;7069:325:6:o;7682:628::-;7862:12;7890:7;7886:418;;;7917:10;:17;7938:1;7917:22;7913:286;;-1:-1:-1;;;;;1713:19:6;;;8124:60;;;;-1:-1:-1;;;8124:60:6;;10236:2:50;8124:60:6;;;10218:21:50;10275:2;10255:18;;;10248:30;10314:31;10294:18;;;10287:59;10363:18;;8124:60:6;10034:353:50;8124:60:6;-1:-1:-1;8219:10:6;8212:17;;7886:418;8260:33;8268:10;8280:12;8260:7;:33::i;:::-;7682:628;;;;;;:::o;8832:540::-;8991:17;;:21;8987:379;;9219:10;9213:17;9275:15;9262:10;9258:2;9254:19;9247:44;8987:379;9342:12;9335:20;;-1:-1:-1;;;9335:20:6;;;;;;;;:::i;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:286:50:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:50;;209:43;;199:71;;266:1;263;256:12;497:272;555:6;608:2;596:9;587:7;583:23;579:32;576:52;;;624:1;621;614:12;576:52;663:9;650:23;713:6;706:5;702:18;695:5;692:29;682:57;;735:1;732;725:12;774:501;950:2;935:18;;939:9;1030:6;908:4;1064:205;1078:4;1075:1;1072:11;1064:205;;;1141:13;;1156:4;1137:24;1125:37;;1185:4;1209:12;;;;1244:15;;;;1098:1;1091:9;1064:205;;;1068:3;;;774:501;;;;:::o;1280:154::-;-1:-1:-1;;;;;1359:5:50;1355:54;1348:5;1345:65;1335:93;;1424:1;1421;1414:12;1439:247;1498:6;1551:2;1539:9;1530:7;1526:23;1522:32;1519:52;;;1567:1;1564;1557:12;1519:52;1606:9;1593:23;1625:31;1650:5;1625:31;:::i;1935:343::-;2082:2;2067:18;;2115:1;2104:13;;2094:144;;2160:10;2155:3;2151:20;2148:1;2141:31;2195:4;2192:1;2185:15;2223:4;2220:1;2213:15;2094:144;2247:25;;;1935:343;:::o;2283:127::-;2344:10;2339:3;2335:20;2332:1;2325:31;2375:4;2372:1;2365:15;2399:4;2396:1;2389:15;2415:1056;2492:6;2500;2553:2;2541:9;2532:7;2528:23;2524:32;2521:52;;;2569:1;2566;2559:12;2521:52;2608:9;2595:23;2627:31;2652:5;2627:31;:::i;:::-;2677:5;-1:-1:-1;2733:2:50;2718:18;;2705:32;2756:18;2786:14;;;2783:34;;;2813:1;2810;2803:12;2783:34;2851:6;2840:9;2836:22;2826:32;;2896:7;2889:4;2885:2;2881:13;2877:27;2867:55;;2918:1;2915;2908:12;2867:55;2954:2;2941:16;2976:2;2972;2969:10;2966:36;;;2982:18;;:::i;:::-;3057:2;3051:9;3025:2;3111:13;;-1:-1:-1;;3107:22:50;;;3131:2;3103:31;3099:40;3087:53;;;3155:18;;;3175:22;;;3152:46;3149:72;;;3201:18;;:::i;:::-;3241:10;3237:2;3230:22;3276:2;3268:6;3261:18;3316:7;3311:2;3306;3302;3298:11;3294:20;3291:33;3288:53;;;3337:1;3334;3327:12;3288:53;3393:2;3388;3384;3380:11;3375:2;3367:6;3363:15;3350:46;3438:1;3433:2;3428;3420:6;3416:15;3412:24;3405:35;3459:6;3449:16;;;;;;;2415:1056;;;;;:::o;6191:184::-;6261:6;6314:2;6302:9;6293:7;6289:23;6285:32;6282:52;;;6330:1;6327;6320:12;6282:52;-1:-1:-1;6353:16:50;;6191:184;-1:-1:-1;6191:184:50:o;7617:685::-;7821:4;-1:-1:-1;;;;;7931:2:50;7923:6;7919:15;7908:9;7901:34;7983:2;7975:6;7971:15;7966:2;7955:9;7951:18;7944:43;;8023:6;8018:2;8007:9;8003:18;7996:34;8066:3;8061:2;8050:9;8046:18;8039:31;8107:6;8101:3;8090:9;8086:19;8079:35;8165:6;8157;8151:3;8140:9;8136:19;8123:49;8222:1;8216:3;8207:6;8196:9;8192:22;8188:32;8181:43;8292:3;8285:2;8281:7;8276:2;8268:6;8264:15;8260:29;8249:9;8245:45;8241:55;8233:63;;7617:685;;;;;;;;:::o;8307:277::-;8374:6;8427:2;8415:9;8406:7;8402:23;8398:32;8395:52;;;8443:1;8440;8433:12;8395:52;8475:9;8469:16;8528:5;8521:13;8514:21;8507:5;8504:32;8494:60;;8550:1;8547;8540:12;9487:250;9572:1;9582:113;9596:6;9593:1;9590:13;9582:113;;;9672:11;;;9666:18;9653:11;;;9646:39;9618:2;9611:10;9582:113;;;-1:-1:-1;;9729:1:50;9711:16;;9704:27;9487:250::o;9742:287::-;9871:3;9909:6;9903:13;9925:66;9984:6;9979:3;9972:4;9964:6;9960:17;9925:66;:::i;:::-;10007:16;;;;;9742:287;-1:-1:-1;;9742:287:50:o;10392:396::-;10541:2;10530:9;10523:21;10504:4;10573:6;10567:13;10616:6;10611:2;10600:9;10596:18;10589:34;10632:79;10704:6;10699:2;10688:9;10684:18;10679:2;10671:6;10667:15;10632:79;:::i;:::-;10772:2;10751:15;-1:-1:-1;;10747:29:50;10732:45;;;;10779:2;10728:54;;10392:396;-1:-1:-1;;10392:396:50:o"},"gasEstimates":{"creation":{"codeDepositCost":"965000","executionCost":"infinite","totalCost":"infinite"},"external":{"UPGRADE_PLUGIN_PERMISSION_ID()":"239","dao()":"2365","implementation()":"2414","initialize(address)":"infinite","initializeFrom(uint16)":"76250","pluginType()":"294","protocolVersion()":"infinite","proxiableUUID()":"infinite","setTarget(address)":"26179","state1()":"2362","state2()":"2383","supportsInterface(bytes4)":"560","target()":"2403","upgradeTo(address)":"infinite","upgradeToAndCall(address,bytes)":"infinite"}},"methodIdentifiers":{"UPGRADE_PLUGIN_PERMISSION_ID()":"c9c4bfca","dao()":"4162169f","implementation()":"5c60da1b","initialize(address)":"c4d66de8","initializeFrom(uint16)":"039a8c50","pluginType()":"41de6830","protocolVersion()":"2ae9c600","proxiableUUID()":"52d1902d","setTarget(address)":"776d1a01","state1()":"6accab8c","state2()":"efe51cca","supportsInterface(bytes4)":"01ffc9a7","target()":"d4b83992","upgradeTo(address)":"3659cfe6","upgradeToAndCall(address,bytes)":"4f1ef286"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"dao\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"name\":\"DaoUnauthorized\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousTarget\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newTarget\",\"type\":\"address\"}],\"name\":\"TargetSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"UPGRADE_PLUGIN_PERMISSION_ID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"dao\",\"outputs\":[{\"internalType\":\"contract IDAO\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IDAO\",\"name\":\"_dao\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"_previousBuild\",\"type\":\"uint16\"}],\"name\":\"initializeFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pluginType\",\"outputs\":[{\"internalType\":\"enum IPlugin.PluginType\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"protocolVersion\",\"outputs\":[{\"internalType\":\"uint8[3]\",\"name\":\"\",\"type\":\"uint8[3]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_target\",\"type\":\"address\"}],\"name\":\"setTarget\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"state1\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"state2\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"target\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"upgradeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"DO NOT USE IN PRODUCTION!\",\"errors\":{\"DaoUnauthorized(address,address,address,bytes32)\":[{\"params\":{\"dao\":\"The associated DAO.\",\"permissionId\":\"The permission identifier.\",\"where\":\"The context in which the authorization reverted.\",\"who\":\"The address (EOA or contract) missing the permission.\"}}]},\"kind\":\"dev\",\"methods\":{\"dao()\":{\"returns\":{\"_0\":\"The DAO contract.\"}},\"implementation()\":{\"returns\":{\"_0\":\"The address of the implementation contract.\"}},\"protocolVersion()\":{\"details\":\"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\",\"returns\":{\"_0\":\"Returns the semantic Aragon OSx protocol version number.\"}},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"setTarget(address)\":{\"details\":\"Sets the target to a new target (`newTarget`).\"},\"supportsInterface(bytes4)\":{\"params\":{\"_interfaceId\":\"The ID of the interface.\"},\"returns\":{\"_0\":\"Returns `true` if the interface is supported.\"}},\"upgradeTo(address)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"},\"upgradeToAndCall(address,bytes)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"}},\"version\":1},\"userdoc\":{\"errors\":{\"DaoUnauthorized(address,address,address,bytes32)\":[{\"notice\":\"Thrown if a call is unauthorized in the associated DAO.\"}]},\"kind\":\"user\",\"methods\":{\"UPGRADE_PLUGIN_PERMISSION_ID()\":{\"notice\":\"The ID of the permission required to call the `_authorizeUpgrade` function.\"},\"dao()\":{\"notice\":\"Returns the DAO contract.\"},\"implementation()\":{\"notice\":\"Returns the address of the implementation contract in the [proxy storage slot](https://eips.ethereum.org/EIPS/eip-1967) slot the [UUPS proxy](https://eips.ethereum.org/EIPS/eip-1822) is pointing to.\"},\"pluginType()\":{\"notice\":\"Returns the plugin's type\"},\"protocolVersion()\":{\"notice\":\"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\"},\"setTarget(address)\":{\"notice\":\"Can only be called by the current owner. TODO\"},\"supportsInterface(bytes4)\":{\"notice\":\"Checks if an interface is supported by this or its parent contract.\"}},\"notice\":\"A mock upgradeable plugin to be deployed via the UUPS proxy pattern. v1.1 (Release 1, Build 2)\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/mocks/plugin/PluginUUPSUpgradeableMock.sol\":\"PluginUUPSUpgradeableMockBuild2\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/interfaces/IERC1967Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (interfaces/IERC1967.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\\n *\\n * _Available since v4.8.3._\\n */\\ninterface IERC1967Upgradeable {\\n /**\\n * @dev Emitted when the implementation is upgraded.\\n */\\n event Upgraded(address indexed implementation);\\n\\n /**\\n * @dev Emitted when the admin account has changed.\\n */\\n event AdminChanged(address previousAdmin, address newAdmin);\\n\\n /**\\n * @dev Emitted when the beacon is changed.\\n */\\n event BeaconUpgraded(address indexed beacon);\\n}\\n\",\"keccak256\":\"0x47d6e06872b12e72c79d1b5eb55842f860b5fb1207b2317c2358d2766b950a7b\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822ProxiableUpgradeable {\\n /**\\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n * address.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy.\\n */\\n function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../beacon/IBeaconUpgradeable.sol\\\";\\nimport \\\"../../interfaces/IERC1967Upgradeable.sol\\\";\\nimport \\\"../../interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\nimport \\\"../../utils/StorageSlotUpgradeable.sol\\\";\\nimport {Initializable} from \\\"../utils/Initializable.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n */\\nabstract contract ERC1967UpgradeUpgradeable is Initializable, IERC1967Upgradeable {\\n // This is the keccak-256 hash of \\\"eip1967.proxy.rollback\\\" subtracted by 1\\n bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n /**\\n * @dev Storage slot with the address of the current implementation.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n function __ERC1967Upgrade_init() internal onlyInitializing {\\n }\\n\\n function __ERC1967Upgrade_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _getImplementation() internal view returns (address) {\\n return StorageSlotUpgradeable.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 implementation slot.\\n */\\n function _setImplementation(address newImplementation) private {\\n require(AddressUpgradeable.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n StorageSlotUpgradeable.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n }\\n\\n /**\\n * @dev Perform implementation upgrade\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeTo(address newImplementation) internal {\\n _setImplementation(newImplementation);\\n emit Upgraded(newImplementation);\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCall(address newImplementation, bytes memory data, bool forceCall) internal {\\n _upgradeTo(newImplementation);\\n if (data.length > 0 || forceCall) {\\n AddressUpgradeable.functionDelegateCall(newImplementation, data);\\n }\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCallUUPS(address newImplementation, bytes memory data, bool forceCall) internal {\\n // Upgrades from old implementations will perform a rollback test. This test requires the new\\n // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n // this special case will break upgrade paths from old UUPS implementation to new ones.\\n if (StorageSlotUpgradeable.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n _setImplementation(newImplementation);\\n } else {\\n try IERC1822ProxiableUpgradeable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n require(slot == _IMPLEMENTATION_SLOT, \\\"ERC1967Upgrade: unsupported proxiableUUID\\\");\\n } catch {\\n revert(\\\"ERC1967Upgrade: new implementation is not UUPS\\\");\\n }\\n _upgradeToAndCall(newImplementation, data, forceCall);\\n }\\n }\\n\\n /**\\n * @dev Storage slot with the admin of the contract.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _getAdmin() internal view returns (address) {\\n return StorageSlotUpgradeable.getAddressSlot(_ADMIN_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 admin slot.\\n */\\n function _setAdmin(address newAdmin) private {\\n require(newAdmin != address(0), \\\"ERC1967: new admin is the zero address\\\");\\n StorageSlotUpgradeable.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n */\\n function _changeAdmin(address newAdmin) internal {\\n emit AdminChanged(_getAdmin(), newAdmin);\\n _setAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\\n */\\n bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n /**\\n * @dev Returns the current beacon.\\n */\\n function _getBeacon() internal view returns (address) {\\n return StorageSlotUpgradeable.getAddressSlot(_BEACON_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new beacon in the EIP1967 beacon slot.\\n */\\n function _setBeacon(address newBeacon) private {\\n require(AddressUpgradeable.isContract(newBeacon), \\\"ERC1967: new beacon is not a contract\\\");\\n require(\\n AddressUpgradeable.isContract(IBeaconUpgradeable(newBeacon).implementation()),\\n \\\"ERC1967: beacon implementation is not a contract\\\"\\n );\\n StorageSlotUpgradeable.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n }\\n\\n /**\\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n *\\n * Emits a {BeaconUpgraded} event.\\n */\\n function _upgradeBeaconToAndCall(address newBeacon, bytes memory data, bool forceCall) internal {\\n _setBeacon(newBeacon);\\n emit BeaconUpgraded(newBeacon);\\n if (data.length > 0 || forceCall) {\\n AddressUpgradeable.functionDelegateCall(IBeaconUpgradeable(newBeacon).implementation(), data);\\n }\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x7795808e3899c805254e3ae58074b20f799b466e3f43e057e47bedee5fb771f8\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeaconUpgradeable {\\n /**\\n * @dev Must return an address that can be used as a delegate call target.\\n *\\n * {BeaconProxy} will check that this address is a contract.\\n */\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/UUPSUpgradeable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport \\\"../ERC1967/ERC1967UpgradeUpgradeable.sol\\\";\\nimport {Initializable} from \\\"./Initializable.sol\\\";\\n\\n/**\\n * @dev An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an\\n * {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy.\\n *\\n * A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is\\n * reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing\\n * `UUPSUpgradeable` with a custom implementation of upgrades.\\n *\\n * The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism.\\n *\\n * _Available since v4.1._\\n */\\nabstract contract UUPSUpgradeable is Initializable, IERC1822ProxiableUpgradeable, ERC1967UpgradeUpgradeable {\\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable state-variable-assignment\\n address private immutable __self = address(this);\\n\\n /**\\n * @dev Check that the execution is being performed through a delegatecall call and that the execution context is\\n * a proxy contract with an implementation (as defined in ERC1967) pointing to self. This should only be the case\\n * for UUPS and transparent proxies that are using the current contract as their implementation. Execution of a\\n * function through ERC1167 minimal proxies (clones) would not normally pass this test, but is not guaranteed to\\n * fail.\\n */\\n modifier onlyProxy() {\\n require(address(this) != __self, \\\"Function must be called through delegatecall\\\");\\n require(_getImplementation() == __self, \\\"Function must be called through active proxy\\\");\\n _;\\n }\\n\\n /**\\n * @dev Check that the execution is not being performed through a delegate call. This allows a function to be\\n * callable on the implementing contract but not through proxies.\\n */\\n modifier notDelegated() {\\n require(address(this) == __self, \\\"UUPSUpgradeable: must not be called through delegatecall\\\");\\n _;\\n }\\n\\n function __UUPSUpgradeable_init() internal onlyInitializing {\\n }\\n\\n function __UUPSUpgradeable_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the\\n * implementation. It is used to validate the implementation's compatibility when performing an upgrade.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\\n */\\n function proxiableUUID() external view virtual override notDelegated returns (bytes32) {\\n return _IMPLEMENTATION_SLOT;\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy to `newImplementation`.\\n *\\n * Calls {_authorizeUpgrade}.\\n *\\n * Emits an {Upgraded} event.\\n *\\n * @custom:oz-upgrades-unsafe-allow-reachable delegatecall\\n */\\n function upgradeTo(address newImplementation) public virtual onlyProxy {\\n _authorizeUpgrade(newImplementation);\\n _upgradeToAndCallUUPS(newImplementation, new bytes(0), false);\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call\\n * encoded in `data`.\\n *\\n * Calls {_authorizeUpgrade}.\\n *\\n * Emits an {Upgraded} event.\\n *\\n * @custom:oz-upgrades-unsafe-allow-reachable delegatecall\\n */\\n function upgradeToAndCall(address newImplementation, bytes memory data) public payable virtual onlyProxy {\\n _authorizeUpgrade(newImplementation);\\n _upgradeToAndCallUUPS(newImplementation, data, true);\\n }\\n\\n /**\\n * @dev Function that should revert when `msg.sender` is not authorized to upgrade the contract. Called by\\n * {upgradeTo} and {upgradeToAndCall}.\\n *\\n * Normally, this function will use an xref:access.adoc[access control] modifier such as {Ownable-onlyOwner}.\\n *\\n * ```solidity\\n * function _authorizeUpgrade(address) internal override onlyOwner {}\\n * ```\\n */\\n function _authorizeUpgrade(address newImplementation) internal virtual;\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0xefb41f5c1a00249b7a99f0782f8c557865605426a3fb6e5fe9ae334293ae4f33\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n function __Context_init() internal onlyInitializing {\\n }\\n\\n function __Context_init_unchained() internal onlyInitializing {\\n }\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n function _contextSuffixLength() internal view virtual returns (uint256) {\\n return 0;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x75097e35253e7fb282ee4d7f27a80eaacfa759923185bf17302a89cbc059c5ef\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/StorageSlot.sol)\\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```solidity\\n * contract ERC1967 {\\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n * function _getImplementation() internal view returns (address) {\\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n * }\\n *\\n * function _setImplementation(address newImplementation) internal {\\n * require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n * }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._\\n * _Available since v4.9 for `string`, `bytes`._\\n */\\nlibrary StorageSlotUpgradeable {\\n struct AddressSlot {\\n address value;\\n }\\n\\n struct BooleanSlot {\\n bool value;\\n }\\n\\n struct Bytes32Slot {\\n bytes32 value;\\n }\\n\\n struct Uint256Slot {\\n uint256 value;\\n }\\n\\n struct StringSlot {\\n string value;\\n }\\n\\n struct BytesSlot {\\n bytes value;\\n }\\n\\n /**\\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n */\\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n */\\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n */\\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n */\\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` with member `value` located at `slot`.\\n */\\n function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\\n */\\n function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` with member `value` located at `slot`.\\n */\\n function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\\n */\\n function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n}\\n\",\"keccak256\":\"0x07ac95acad040f1fb1f6120dd0aa5f702db69446e95f82613721879d30de0908\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165Upgradeable.sol\\\";\\nimport {Initializable} from \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165Upgradeable is Initializable, IERC165Upgradeable {\\n function __ERC165_init() internal onlyInitializing {\\n }\\n\\n function __ERC165_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165Upgradeable).interfaceId;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0xd90d7723512df65ae417adaf0801042940f0dabd60039ceeaffe34aa5b238da1\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165Upgradeable {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\"},\"src/dao/IDAO.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IDAO\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for DAOs within the Aragon App DAO framework.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IDAO {\\n /// @notice The action struct to be consumed by the DAO's `execute` function resulting in an external call.\\n /// @param to The address to call.\\n /// @param value The native token value to be sent with the call.\\n /// @param data The bytes-encoded function selector and calldata for the call.\\n struct Action {\\n address to;\\n uint256 value;\\n bytes data;\\n }\\n\\n /// @notice Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\\n /// @param _where The address of the contract.\\n /// @param _who The address of a EOA or contract to give the permissions.\\n /// @param _permissionId The permission identifier.\\n /// @param _data The optional data passed to the `PermissionCondition` registered.\\n /// @return Returns true if the address has permission, false if not.\\n function hasPermission(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes memory _data\\n ) external view returns (bool);\\n\\n /// @notice Updates the DAO metadata (e.g., an IPFS hash).\\n /// @param _metadata The IPFS hash of the new metadata object.\\n function setMetadata(bytes calldata _metadata) external;\\n\\n /// @notice Emitted when the DAO metadata is updated.\\n /// @param metadata The IPFS hash of the new metadata object.\\n event MetadataSet(bytes metadata);\\n\\n /// @notice Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted.\\n /// @param _callId The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce.\\n /// @param _actions The array of actions.\\n /// @param _allowFailureMap A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @return The array of results obtained from the executed actions in `bytes`.\\n /// @return The resulting failure map containing the actions have actually failed.\\n function execute(\\n bytes32 _callId,\\n Action[] memory _actions,\\n uint256 _allowFailureMap\\n ) external returns (bytes[] memory, uint256);\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param actor The address of the caller.\\n /// @param callId The ID of the call.\\n /// @param actions The array of actions executed.\\n /// @param allowFailureMap The allow failure map encoding which actions are allowed to fail.\\n /// @param failureMap The failure map encoding which actions have failed.\\n /// @param execResults The array with the results of the executed actions.\\n /// @dev The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce.\\n event Executed(\\n address indexed actor,\\n bytes32 callId,\\n Action[] actions,\\n uint256 allowFailureMap,\\n uint256 failureMap,\\n bytes[] execResults\\n );\\n\\n /// @notice Emitted when a standard callback is registered.\\n /// @param interfaceId The ID of the interface.\\n /// @param callbackSelector The selector of the callback function.\\n /// @param magicNumber The magic number to be registered for the callback function selector.\\n event StandardCallbackRegistered(\\n bytes4 interfaceId,\\n bytes4 callbackSelector,\\n bytes4 magicNumber\\n );\\n\\n /// @notice Deposits (native) tokens to the DAO contract with a reference string.\\n /// @param _token The address of the token or address(0) in case of the native token.\\n /// @param _amount The amount of tokens to deposit.\\n /// @param _reference The reference describing the deposit reason.\\n function deposit(address _token, uint256 _amount, string calldata _reference) external payable;\\n\\n /// @notice Emitted when a token deposit has been made to the DAO.\\n /// @param sender The address of the sender.\\n /// @param token The address of the deposited token.\\n /// @param amount The amount of tokens deposited.\\n /// @param _reference The reference describing the deposit reason.\\n event Deposited(\\n address indexed sender,\\n address indexed token,\\n uint256 amount,\\n string _reference\\n );\\n\\n /// @notice Emitted when a native token deposit has been made to the DAO.\\n /// @dev This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).\\n /// @param sender The address of the sender.\\n /// @param amount The amount of native tokens deposited.\\n event NativeTokenDeposited(address sender, uint256 amount);\\n\\n /// @notice Setter for the trusted forwarder verifying the meta transaction.\\n /// @param _trustedForwarder The trusted forwarder address.\\n function setTrustedForwarder(address _trustedForwarder) external;\\n\\n /// @notice Getter for the trusted forwarder verifying the meta transaction.\\n /// @return The trusted forwarder address.\\n function getTrustedForwarder() external view returns (address);\\n\\n /// @notice Emitted when a new TrustedForwarder is set on the DAO.\\n /// @param forwarder the new forwarder address.\\n event TrustedForwarderSet(address forwarder);\\n\\n /// @notice Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\\n /// @param _hash The hash of the data to be signed.\\n /// @param _signature The signature byte array associated with `_hash`.\\n /// @return Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not.\\n function isValidSignature(bytes32 _hash, bytes memory _signature) external returns (bytes4);\\n\\n /// @notice Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\\n /// @param _interfaceId The ID of the interface.\\n /// @param _callbackSelector The selector of the callback function.\\n /// @param _magicNumber The magic number to be registered for the function signature.\\n function registerStandardCallback(\\n bytes4 _interfaceId,\\n bytes4 _callbackSelector,\\n bytes4 _magicNumber\\n ) external;\\n\\n /// @notice Removed function being left here to not corrupt the IDAO interface ID. Any call will revert.\\n /// @dev Introduced in v1.0.0. Removed in v1.4.0.\\n function setSignatureValidator(address) external;\\n}\\n\",\"keccak256\":\"0xb7f615523c26de042edce98731c658f44a1edb2464387ac1b642c4c69f57128e\",\"license\":\"AGPL-3.0-or-later\"},\"src/mocks/plugin/PluginUUPSUpgradeableMock.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\n/* solhint-disable one-contract-per-file */\\npragma solidity ^0.8.8;\\n\\nimport {PluginUUPSUpgradeable} from \\\"../../plugin/PluginUUPSUpgradeable.sol\\\";\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice A mock upgradeable plugin to be deployed via the UUPS proxy pattern.\\n/// v1.1 (Release 1, Build 1)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableMockBuild1 is PluginUUPSUpgradeable {\\n uint256 public state1;\\n\\n function initialize(IDAO _dao) external initializer {\\n __PluginUUPSUpgradeable_init(_dao);\\n state1 = 1;\\n }\\n}\\n\\n/// @notice A mock upgradeable plugin to be deployed via the UUPS proxy pattern.\\n/// v1.1 (Release 1, Build 2)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableMockBuild2 is PluginUUPSUpgradeable {\\n uint256 public state1;\\n uint256 public state2;\\n\\n function initialize(IDAO _dao) external reinitializer(2) {\\n __PluginUUPSUpgradeable_init(_dao);\\n state1 = 1;\\n state2 = 2;\\n }\\n\\n function initializeFrom(uint16 _previousBuild) external reinitializer(2) {\\n if (_previousBuild < 2) {\\n state2 = 2;\\n }\\n }\\n}\\n\\n/// @notice A mock upgradeable plugin to be deployed via the UUPS proxy pattern.\\n/// v1.1 (Release 1, Build 3)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableMockBuild3 is PluginUUPSUpgradeable {\\n uint256 public state1;\\n uint256 public state2;\\n uint256 public state3;\\n\\n function initialize(IDAO _dao) external reinitializer(3) {\\n __PluginUUPSUpgradeable_init(_dao);\\n state1 = 1;\\n state2 = 2;\\n state3 = 3;\\n }\\n\\n function initializeFrom(uint16 _previousBuild) external reinitializer(3) {\\n if (_previousBuild < 2) {\\n state2 = 2;\\n }\\n if (_previousBuild < 3) {\\n state3 = 3;\\n }\\n }\\n}\\n\\n/// @notice A mock upgradeable plugin missing an initializer function.\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableMockBad is PluginUUPSUpgradeable {\\n uint256 public state1;\\n\\n function notAnInitializer(IDAO _dao) external {\\n __PluginUUPSUpgradeable_init(_dao);\\n state1 = 1;\\n }\\n}\\n\",\"keccak256\":\"0x2917df3b1da0de27f58cf531afeaa4e6c4285717247cbdd9ecc7880ae5cb9cb0\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/DaoAuthorizableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ContextUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\\\";\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\nimport {_auth} from \\\"./auth.sol\\\";\\n\\n/// @title DaoAuthorizableUpgradeable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract contract providing a meta-transaction compatible modifier for upgradeable or cloneable contracts to authorize function calls through an associated DAO.\\n/// @dev Make sure to call `__DaoAuthorizableUpgradeable_init` during initialization of the inheriting contract.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract DaoAuthorizableUpgradeable is ContextUpgradeable {\\n /// @notice The associated DAO managing the permissions of inheriting contracts.\\n IDAO private dao_;\\n\\n /// @notice Initializes the contract by setting the associated DAO.\\n /// @param _dao The associated DAO address.\\n // solhint-disable-next-line func-name-mixedcase\\n function __DaoAuthorizableUpgradeable_init(IDAO _dao) internal onlyInitializing {\\n dao_ = _dao;\\n }\\n\\n /// @notice Returns the DAO contract.\\n /// @return The DAO contract.\\n function dao() public view returns (IDAO) {\\n return dao_;\\n }\\n\\n /// @notice A modifier to make functions on inheriting contracts authorized. Permissions to call the function are checked through the associated DAO's permission manager.\\n /// @param _permissionId The permission identifier required to call the method this modifier is applied to.\\n modifier auth(bytes32 _permissionId) {\\n _auth(dao_, address(this), _msgSender(), _permissionId, _msgData());\\n _;\\n }\\n\\n /// @notice This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain (see [OpenZeppelin's guide about storage gaps](https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps)).\\n uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0x7fac6b01b037ba1cb9d6a22d3f43b0785037dcf496ffb672434d9bf7227d2585\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/auth.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice Thrown if a call is unauthorized in the associated DAO.\\n/// @param dao The associated DAO.\\n/// @param where The context in which the authorization reverted.\\n/// @param who The address (EOA or contract) missing the permission.\\n/// @param permissionId The permission identifier.\\nerror DaoUnauthorized(address dao, address where, address who, bytes32 permissionId);\\n\\n/// @notice A free function checking if a caller is granted permissions on a target contract via a permission identifier that redirects the approval to a `PermissionCondition` if this was specified in the setup.\\n/// @param _where The address of the target contract for which `who` receives permission.\\n/// @param _who The address (EOA or contract) owning the permission.\\n/// @param _permissionId The permission identifier.\\n/// @param _data The optional data passed to the `PermissionCondition` registered.\\n/// @custom:security-contact sirt@aragon.org\\nfunction _auth(\\n IDAO _dao,\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes calldata _data\\n) view {\\n if (!_dao.hasPermission(_where, _who, _permissionId, _data))\\n revert DaoUnauthorized({\\n dao: address(_dao),\\n where: _where,\\n who: _who,\\n permissionId: _permissionId\\n });\\n}\\n\",\"keccak256\":\"0x878764b4f87fe0651fb3798fb9cb87c952f8c6caf6ae79c7f09de84df6c00298\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/IPlugin.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IPlugin\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the traits of a plugin.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IPlugin {\\n enum PluginType {\\n UUPS,\\n Cloneable,\\n Constructable\\n }\\n\\n /// @notice Returns the plugin's type\\n function pluginType() external view returns (PluginType);\\n}\\n\",\"keccak256\":\"0xc57cd0d10b6380ab7f54c713a509e88fd8f4ad9288313a0e8e12b8887817ddfe\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/PluginUUPSUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {UUPSUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\\\";\\nimport {IERC1822ProxiableUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport {ERC165Upgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\\\";\\n\\nimport {IProtocolVersion} from \\\"../utils/versioning/IProtocolVersion.sol\\\";\\nimport {ProtocolVersion} from \\\"../utils/versioning/ProtocolVersion.sol\\\";\\nimport {DaoAuthorizableUpgradeable} from \\\"../permission/auth/DaoAuthorizableUpgradeable.sol\\\";\\nimport {IDAO} from \\\"../dao/IDAO.sol\\\";\\nimport {IPlugin} from \\\"./IPlugin.sol\\\";\\n\\n/// @title PluginUUPSUpgradeable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract, upgradeable contract to inherit from when creating a plugin being deployed via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract PluginUUPSUpgradeable is\\n IPlugin,\\n ERC165Upgradeable,\\n UUPSUpgradeable,\\n DaoAuthorizableUpgradeable,\\n ProtocolVersion\\n{\\n // NOTE: When adding new state variables to the contract, the size of `_gap` has to be adapted below as well.\\n address public target;\\n\\n /// @dev Emitted each time the Target is set.\\n event TargetSet(address indexed previousTarget, address indexed newTarget);\\n\\n /// @notice Disables the initializers on the implementation contract to prevent it from being left uninitialized.\\n /// @custom:oz-upgrades-unsafe-allow constructor\\n constructor() {\\n _disableInitializers();\\n }\\n\\n /// @inheritdoc IPlugin\\n function pluginType() public pure override returns (PluginType) {\\n return PluginType.UUPS;\\n }\\n\\n /// @notice The ID of the permission required to call the `_authorizeUpgrade` function.\\n bytes32 public constant UPGRADE_PLUGIN_PERMISSION_ID = keccak256(\\\"UPGRADE_PLUGIN_PERMISSION\\\");\\n\\n /// @notice Initializes the plugin by storing the associated DAO.\\n /// @param _dao The DAO contract.\\n // solhint-disable-next-line func-name-mixedcase\\n function __PluginUUPSUpgradeable_init(IDAO _dao) internal virtual onlyInitializing {\\n __DaoAuthorizableUpgradeable_init(_dao);\\n }\\n\\n /// @dev Sets the target to a new target (`newTarget`).\\n /// @notice Can only be called by the current owner. TODO\\n function setTarget(address _target) public {\\n address previousTarget = target;\\n target = _target;\\n emit TargetSet(previousTarget, _target);\\n }\\n\\n /// @notice Checks if an interface is supported by this or its parent contract.\\n /// @param _interfaceId The ID of the interface.\\n /// @return Returns `true` if the interface is supported.\\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\\n return\\n _interfaceId == type(IPlugin).interfaceId ||\\n _interfaceId == type(IProtocolVersion).interfaceId ||\\n _interfaceId == type(IERC1822ProxiableUpgradeable).interfaceId ||\\n super.supportsInterface(_interfaceId);\\n }\\n\\n /// @notice Returns the address of the implementation contract in the [proxy storage slot](https://eips.ethereum.org/EIPS/eip-1967) slot the [UUPS proxy](https://eips.ethereum.org/EIPS/eip-1822) is pointing to.\\n /// @return The address of the implementation contract.\\n function implementation() public view returns (address) {\\n return _getImplementation();\\n }\\n\\n /// @notice Forwards the actions to the currently set `target` for the execution.\\n /// @param _callId Identifier for this execution.\\n /// @param _actions actions that will be eventually called.\\n /// @param _allowFailureMap Bitmap-encoded number. TODO:\\n /// @return execResults address of the implementation contract.\\n /// @return failureMap address of the implementation contract.\\n function _execute(\\n bytes32 _callId,\\n IDAO.Action[] calldata _actions,\\n uint256 _allowFailureMap\\n ) internal virtual returns (bytes[] memory execResults, uint256 failureMap) {\\n (execResults, failureMap) = IDAO(target).execute(_callId, _actions, _allowFailureMap);\\n }\\n\\n /// @notice Forwards the actions to the `target` for the execution.\\n /// @param _target Forwards the actions to the specific target.\\n /// @param _callId Identifier for this execution.\\n /// @param _actions actions that will be eventually called.\\n /// @param _allowFailureMap Bitmap-encoded number. TODO:\\n /// @return execResults address of the implementation contract.\\n /// @return failureMap address of the implementation contract.\\n function _execute(\\n address _target,\\n bytes32 _callId,\\n IDAO.Action[] calldata _actions,\\n uint256 _allowFailureMap\\n ) internal virtual returns (bytes[] memory execResults, uint256 failureMap) {\\n (execResults, failureMap) = IDAO(_target).execute(_callId, _actions, _allowFailureMap);\\n }\\n\\n /// @notice Internal method authorizing the upgrade of the contract via the [upgradeability mechanism for UUPS proxies](https://docs.openzeppelin.com/contracts/4.x/api/proxy#UUPSUpgradeable) (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\\n /// @dev The caller must have the `UPGRADE_PLUGIN_PERMISSION_ID` permission.\\n function _authorizeUpgrade(\\n address\\n )\\n internal\\n virtual\\n override\\n auth(UPGRADE_PLUGIN_PERMISSION_ID)\\n // solhint-disable-next-line no-empty-blocks\\n {\\n\\n }\\n\\n /// @notice This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain (see [OpenZeppelin's guide about storage gaps](https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps)).\\n uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0xce1d0126b3ae8c8afc887fba9f49b1cc35f84f1c1d5bf4cadee330c7ae15014f\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/IProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IProtocolVersion\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the semantic Aragon OSx protocol version number.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IProtocolVersion {\\n /// @notice Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\\n /// @return _version Returns the semantic Aragon OSx protocol version number.\\n /// @dev This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\\n function protocolVersion() external view returns (uint8[3] memory _version);\\n}\\n\",\"keccak256\":\"0x00a4da654d21dc1bdadbdc8bd54bb86c378c56f85e461ccc31303628ea621361\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/ProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IProtocolVersion} from \\\"./IProtocolVersion.sol\\\";\\n\\n/// @title ProtocolVersion\\n/// @author Aragon X - 2023\\n/// @notice An abstract, stateless, non-upgradeable contract providing the current Aragon OSx protocol version number.\\n/// @dev Do not add any new variables to this contract that would shift down storage in the inheritance chain.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract ProtocolVersion is IProtocolVersion {\\n // IMPORTANT: Do not add any storage variable, see the above notice.\\n\\n /// @inheritdoc IProtocolVersion\\n function protocolVersion() public pure returns (uint8[3] memory) {\\n return [1, 4, 0];\\n }\\n}\\n\",\"keccak256\":\"0x3975c937be935f687c6b6b8f379071232681e98cf04b175d72781b819ea52bdb\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[{"astId":372,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild2","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":375,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild2","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":1280,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild2","label":"__gap","offset":0,"slot":"1","type":"t_array(t_uint256)50_storage"},{"astId":354,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild2","label":"__gap","offset":0,"slot":"51","type":"t_array(t_uint256)50_storage"},{"astId":670,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild2","label":"__gap","offset":0,"slot":"101","type":"t_array(t_uint256)50_storage"},{"astId":1051,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild2","label":"__gap","offset":0,"slot":"151","type":"t_array(t_uint256)50_storage"},{"astId":3887,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild2","label":"dao_","offset":0,"slot":"201","type":"t_contract(IDAO)2538"},{"astId":3936,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild2","label":"__gap","offset":0,"slot":"202","type":"t_array(t_uint256)49_storage"},{"astId":4382,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild2","label":"target","offset":0,"slot":"251","type":"t_address"},{"astId":4575,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild2","label":"__gap","offset":0,"slot":"252","type":"t_array(t_uint256)49_storage"},{"astId":3142,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild2","label":"state1","offset":0,"slot":"301","type":"t_uint256"},{"astId":3144,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild2","label":"state2","offset":0,"slot":"302","type":"t_uint256"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_array(t_uint256)49_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[49]","numberOfBytes":"1568"},"t_array(t_uint256)50_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[50]","numberOfBytes":"1600"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_contract(IDAO)2538":{"encoding":"inplace","label":"contract IDAO","numberOfBytes":"20"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"errors":{"DaoUnauthorized(address,address,address,bytes32)":[{"notice":"Thrown if a call is unauthorized in the associated DAO."}]},"kind":"user","methods":{"UPGRADE_PLUGIN_PERMISSION_ID()":{"notice":"The ID of the permission required to call the `_authorizeUpgrade` function."},"dao()":{"notice":"Returns the DAO contract."},"implementation()":{"notice":"Returns the address of the implementation contract in the [proxy storage slot](https://eips.ethereum.org/EIPS/eip-1967) slot the [UUPS proxy](https://eips.ethereum.org/EIPS/eip-1822) is pointing to."},"pluginType()":{"notice":"Returns the plugin's type"},"protocolVersion()":{"notice":"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with."},"setTarget(address)":{"notice":"Can only be called by the current owner. TODO"},"supportsInterface(bytes4)":{"notice":"Checks if an interface is supported by this or its parent contract."}},"notice":"A mock upgradeable plugin to be deployed via the UUPS proxy pattern. v1.1 (Release 1, Build 2)","version":1}},"PluginUUPSUpgradeableMockBuild3":{"abi":[{"inputs":[{"internalType":"address","name":"dao","type":"address"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"name":"DaoUnauthorized","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"beacon","type":"address"}],"name":"BeaconUpgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousTarget","type":"address"},{"indexed":true,"internalType":"address","name":"newTarget","type":"address"}],"name":"TargetSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"inputs":[],"name":"UPGRADE_PLUGIN_PERMISSION_ID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dao","outputs":[{"internalType":"contract IDAO","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IDAO","name":"_dao","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"_previousBuild","type":"uint16"}],"name":"initializeFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pluginType","outputs":[{"internalType":"enum IPlugin.PluginType","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"protocolVersion","outputs":[{"internalType":"uint8[3]","name":"","type":"uint8[3]"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_target","type":"address"}],"name":"setTarget","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"state1","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"state2","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"state3","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"target","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"}],"name":"upgradeTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"}],"devdoc":{"details":"DO NOT USE IN PRODUCTION!","errors":{"DaoUnauthorized(address,address,address,bytes32)":[{"params":{"dao":"The associated DAO.","permissionId":"The permission identifier.","where":"The context in which the authorization reverted.","who":"The address (EOA or contract) missing the permission."}}]},"kind":"dev","methods":{"dao()":{"returns":{"_0":"The DAO contract."}},"implementation()":{"returns":{"_0":"The address of the implementation contract."}},"protocolVersion()":{"details":"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.","returns":{"_0":"Returns the semantic Aragon OSx protocol version number."}},"proxiableUUID()":{"details":"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier."},"setTarget(address)":{"details":"Sets the target to a new target (`newTarget`)."},"supportsInterface(bytes4)":{"params":{"_interfaceId":"The ID of the interface."},"returns":{"_0":"Returns `true` if the interface is supported."}},"upgradeTo(address)":{"custom:oz-upgrades-unsafe-allow-reachable":"delegatecall","details":"Upgrade the implementation of the proxy to `newImplementation`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."},"upgradeToAndCall(address,bytes)":{"custom:oz-upgrades-unsafe-allow-reachable":"delegatecall","details":"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."}},"version":1},"evm":{"bytecode":{"functionDebugData":{"@_4397":{"entryPoint":null,"id":4397,"parameterSlots":0,"returnSlots":0},"@_disableInitializers_515":{"entryPoint":34,"id":515,"parameterSlots":0,"returnSlots":0},"abi_encode_tuple_t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:608:50","statements":[{"nodeType":"YulBlock","src":"6:3:50","statements":[]},{"body":{"nodeType":"YulBlock","src":"188:229:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"205:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"216:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"198:6:50"},"nodeType":"YulFunctionCall","src":"198:21:50"},"nodeType":"YulExpressionStatement","src":"198:21:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"239:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"250:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"235:3:50"},"nodeType":"YulFunctionCall","src":"235:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"255:2:50","type":"","value":"39"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"228:6:50"},"nodeType":"YulFunctionCall","src":"228:30:50"},"nodeType":"YulExpressionStatement","src":"228:30:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"278:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"289:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"274:3:50"},"nodeType":"YulFunctionCall","src":"274:18:50"},{"hexValue":"496e697469616c697a61626c653a20636f6e747261637420697320696e697469","kind":"string","nodeType":"YulLiteral","src":"294:34:50","type":"","value":"Initializable: contract is initi"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"267:6:50"},"nodeType":"YulFunctionCall","src":"267:62:50"},"nodeType":"YulExpressionStatement","src":"267:62:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"349:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"360:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"345:3:50"},"nodeType":"YulFunctionCall","src":"345:18:50"},{"hexValue":"616c697a696e67","kind":"string","nodeType":"YulLiteral","src":"365:9:50","type":"","value":"alizing"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"338:6:50"},"nodeType":"YulFunctionCall","src":"338:37:50"},"nodeType":"YulExpressionStatement","src":"338:37:50"},{"nodeType":"YulAssignment","src":"384:27:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"396:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"407:3:50","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"392:3:50"},"nodeType":"YulFunctionCall","src":"392:19:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"384:4:50"}]}]},"name":"abi_encode_tuple_t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"165:9:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"179:4:50","type":""}],"src":"14:403:50"},{"body":{"nodeType":"YulBlock","src":"519:87:50","statements":[{"nodeType":"YulAssignment","src":"529:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"541:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"552:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"537:3:50"},"nodeType":"YulFunctionCall","src":"537:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"529:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"571:9:50"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"586:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"594:4:50","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"582:3:50"},"nodeType":"YulFunctionCall","src":"582:17:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"564:6:50"},"nodeType":"YulFunctionCall","src":"564:36:50"},"nodeType":"YulExpressionStatement","src":"564:36:50"}]},"name":"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"488:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"499:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"510:4:50","type":""}],"src":"422:184:50"}]},"contents":"{\n { }\n function abi_encode_tuple_t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 39)\n mstore(add(headStart, 64), \"Initializable: contract is initi\")\n mstore(add(headStart, 96), \"alizing\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xff))\n }\n}","id":50,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60a06040523060805234801561001457600080fd5b5061001d610022565b6100e1565b600054610100900460ff161561008e5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116146100df576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b608051611315610118600039600081816104af015281816105340152818161062a015281816106af015261079901526113156000f3fe6080604052600436106100f35760003560e01c806352d1902d1161008a578063c4d66de811610059578063c4d66de814610278578063c9c4bfca14610298578063d4b83992146102cc578063efe51cca146102ec57600080fd5b806352d1902d146102175780635c60da1b1461022c5780636accab8c14610241578063776d1a011461025857600080fd5b80633659cfe6116100c65780633659cfe6146101965780634162169f146101b657806341de6830146101e85780634f1ef2861461020457600080fd5b806301ffc9a7146100f8578063039a8c501461012d5780632491118d1461014f5780632ae9c60014610174575b600080fd5b34801561010457600080fd5b50610118610113366004611029565b610303565b60405190151581526020015b60405180910390f35b34801561013957600080fd5b5061014d610148366004611053565b61036f565b005b34801561015b57600080fd5b5061016661012f5481565b604051908152602001610124565b34801561018057600080fd5b5061018961047b565b6040516101249190611077565b3480156101a257600080fd5b5061014d6101b13660046110c0565b6104a5565b3480156101c257600080fd5b5060c9546001600160a01b03165b6040516001600160a01b039091168152602001610124565b3480156101f457600080fd5b50600060405161012491906110dd565b61014d61021236600461111b565b610620565b34801561022357600080fd5b5061016661078c565b34801561023857600080fd5b506101d0610851565b34801561024d57600080fd5b5061016661012d5481565b34801561026457600080fd5b5061014d6102733660046110c0565b610889565b34801561028457600080fd5b5061014d6102933660046110c0565b6108e8565b3480156102a457600080fd5b506101667f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f581565b3480156102d857600080fd5b5060fb546101d0906001600160a01b031681565b3480156102f857600080fd5b5061016661012e5481565b60006001600160e01b0319821663041de68360e41b148061033357506001600160e01b03198216621574e360e91b145b8061034e57506001600160e01b031982166352d1902d60e01b145b8061036957506301ffc9a760e01b6001600160e01b03198316145b92915050565b600054600390610100900460ff16158015610391575060005460ff8083169116105b6103f95760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805461ffff191660ff831617610100179055600261ffff8316101561042157600261012e555b60038261ffff16101561043557600361012f555b6000805461ff001916905560405160ff821681527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b61048361100b565b5060408051606081018252600181526004602082015260009181019190915290565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036105325760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b60648201526084016103f0565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661058d7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b0316146105f85760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b60648201526084016103f0565b610601816109da565b6040805160008082526020820190925261061d91839190610a17565b50565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036106ad5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b60648201526084016103f0565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166107087f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b0316146107735760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b60648201526084016103f0565b61077c826109da565b61078882826001610a17565b5050565b6000306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461082c5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016103f0565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b60006108847f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b60fb80546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d690600090a35050565b600054600390610100900460ff1615801561090a575060005460ff8083169116105b61096d5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016103f0565b6000805461ffff191660ff83161761010017905561098a82610bbc565b600161012d55600261012e55600361012f556000805461ff001916905560405160ff821681527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200161046f565b60c9547f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f590610788906001600160a01b0316303384600036610c30565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610a4f57610a4a83610cec565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610aa9575060408051601f3d908101601f19168201909252610aa6918101906111df565b60015b610b1b5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201527f6f6e206973206e6f74205555505300000000000000000000000000000000000060648201526084016103f0565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114610bb05760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f7860448201527f6961626c6555554944000000000000000000000000000000000000000000000060648201526084016103f0565b50610a4a838383610db7565b600054610100900460ff16610c275760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103f0565b61061d81610de2565b604051637ef7c88360e11b81526001600160a01b0387169063fdef910690610c6490889088908890889088906004016111f8565b602060405180830381865afa158015610c81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca5919061124c565b610ce457604051630cb6f8ed60e21b81526001600160a01b038088166004830152808716602483015285166044820152606481018490526084016103f0565b505050505050565b6001600160a01b0381163b610d695760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e74726163740000000000000000000000000000000000000060648201526084016103f0565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610dc083610e7c565b600082511180610dcd5750805b15610a4a57610ddc8383610ebc565b50505050565b600054610100900460ff16610e4d5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103f0565b60c9805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610e8581610cec565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060610ee183836040518060600160405280602781526020016112e260279139610ee8565b9392505050565b6060600080856001600160a01b031685604051610f059190611292565b600060405180830381855af49150503d8060008114610f40576040519150601f19603f3d011682016040523d82523d6000602084013e610f45565b606091505b5091509150610f5686838387610f60565b9695505050505050565b60608315610fcf578251600003610fc8576001600160a01b0385163b610fc85760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016103f0565b5081610fd9565b610fd98383610fe1565b949350505050565b815115610ff15781518083602001fd5b8060405162461bcd60e51b81526004016103f091906112ae565b60405180606001604052806003906020820280368337509192915050565b60006020828403121561103b57600080fd5b81356001600160e01b031981168114610ee157600080fd5b60006020828403121561106557600080fd5b813561ffff81168114610ee157600080fd5b60608101818360005b60038110156110a257815160ff16835260209283019290910190600101611080565b50505092915050565b6001600160a01b038116811461061d57600080fd5b6000602082840312156110d257600080fd5b8135610ee1816110ab565b60208101600383106110ff57634e487b7160e01b600052602160045260246000fd5b91905290565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561112e57600080fd5b8235611139816110ab565b9150602083013567ffffffffffffffff8082111561115657600080fd5b818501915085601f83011261116a57600080fd5b81358181111561117c5761117c611105565b604051601f8201601f19908116603f011681019083821181831017156111a4576111a4611105565b816040528281528860208487010111156111bd57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6000602082840312156111f157600080fd5b5051919050565b60006001600160a01b03808816835280871660208401525084604083015260806060830152826080830152828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b60006020828403121561125e57600080fd5b81518015158114610ee157600080fd5b60005b83811015611289578181015183820152602001611271565b50506000910152565b600082516112a481846020870161126e565b9190910192915050565b60208152600082518060208401526112cd81604085016020870161126e565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a","opcodes":"PUSH1 0xA0 PUSH1 0x40 MSTORE ADDRESS PUSH1 0x80 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x14 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1D PUSH2 0x22 JUMP JUMPDEST PUSH2 0xE1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x8E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x27 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320696E697469 PUSH1 0x44 DUP3 ADD MSTORE PUSH7 0x616C697A696E67 PUSH1 0xC8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xFF SWAP1 DUP2 AND EQ PUSH2 0xDF JUMPI PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH2 0x1315 PUSH2 0x118 PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH2 0x4AF ADD MSTORE DUP2 DUP2 PUSH2 0x534 ADD MSTORE DUP2 DUP2 PUSH2 0x62A ADD MSTORE DUP2 DUP2 PUSH2 0x6AF ADD MSTORE PUSH2 0x799 ADD MSTORE PUSH2 0x1315 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xF3 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x52D1902D GT PUSH2 0x8A JUMPI DUP1 PUSH4 0xC4D66DE8 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0x278 JUMPI DUP1 PUSH4 0xC9C4BFCA EQ PUSH2 0x298 JUMPI DUP1 PUSH4 0xD4B83992 EQ PUSH2 0x2CC JUMPI DUP1 PUSH4 0xEFE51CCA EQ PUSH2 0x2EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x52D1902D EQ PUSH2 0x217 JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0x22C JUMPI DUP1 PUSH4 0x6ACCAB8C EQ PUSH2 0x241 JUMPI DUP1 PUSH4 0x776D1A01 EQ PUSH2 0x258 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x3659CFE6 GT PUSH2 0xC6 JUMPI DUP1 PUSH4 0x3659CFE6 EQ PUSH2 0x196 JUMPI DUP1 PUSH4 0x4162169F EQ PUSH2 0x1B6 JUMPI DUP1 PUSH4 0x41DE6830 EQ PUSH2 0x1E8 JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x204 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xF8 JUMPI DUP1 PUSH4 0x39A8C50 EQ PUSH2 0x12D JUMPI DUP1 PUSH4 0x2491118D EQ PUSH2 0x14F JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0x174 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x104 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x118 PUSH2 0x113 CALLDATASIZE PUSH1 0x4 PUSH2 0x1029 JUMP JUMPDEST PUSH2 0x303 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x139 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x14D PUSH2 0x148 CALLDATASIZE PUSH1 0x4 PUSH2 0x1053 JUMP JUMPDEST PUSH2 0x36F JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x15B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x166 PUSH2 0x12F SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x124 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x180 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x189 PUSH2 0x47B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x124 SWAP2 SWAP1 PUSH2 0x1077 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x14D PUSH2 0x1B1 CALLDATASIZE PUSH1 0x4 PUSH2 0x10C0 JUMP JUMPDEST PUSH2 0x4A5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1C2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xC9 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x124 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 PUSH1 0x40 MLOAD PUSH2 0x124 SWAP2 SWAP1 PUSH2 0x10DD JUMP JUMPDEST PUSH2 0x14D PUSH2 0x212 CALLDATASIZE PUSH1 0x4 PUSH2 0x111B JUMP JUMPDEST PUSH2 0x620 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x223 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x166 PUSH2 0x78C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x238 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1D0 PUSH2 0x851 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x24D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x166 PUSH2 0x12D SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x264 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x14D PUSH2 0x273 CALLDATASIZE PUSH1 0x4 PUSH2 0x10C0 JUMP JUMPDEST PUSH2 0x889 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x284 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x14D PUSH2 0x293 CALLDATASIZE PUSH1 0x4 PUSH2 0x10C0 JUMP JUMPDEST PUSH2 0x8E8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x166 PUSH32 0x821B6E3A557148015A918C89E5D092E878A69854A2D1A410635F771BD5A8A3F5 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xFB SLOAD PUSH2 0x1D0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x166 PUSH2 0x12E SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x41DE683 PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x333 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x34E JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x52D1902D PUSH1 0xE0 SHL EQ JUMPDEST DUP1 PUSH2 0x369 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x3 SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH2 0x391 JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF DUP1 DUP4 AND SWAP2 AND LT JUMPDEST PUSH2 0x3F9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x44 DUP3 ADD MSTORE PUSH14 0x191E481A5B9A5D1A585B1A5E9959 PUSH1 0x92 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH2 0xFFFF NOT AND PUSH1 0xFF DUP4 AND OR PUSH2 0x100 OR SWAP1 SSTORE PUSH1 0x2 PUSH2 0xFFFF DUP4 AND LT ISZERO PUSH2 0x421 JUMPI PUSH1 0x2 PUSH2 0x12E SSTORE JUMPDEST PUSH1 0x3 DUP3 PUSH2 0xFFFF AND LT ISZERO PUSH2 0x435 JUMPI PUSH1 0x3 PUSH2 0x12F SSTORE JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH1 0xFF DUP3 AND DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH2 0x483 PUSH2 0x100B JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x532 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x19195B1959D85D1958D85B1B PUSH1 0xA2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3F0 JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x58D PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x5F8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x6163746976652070726F7879 PUSH1 0xA0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3F0 JUMP JUMPDEST PUSH2 0x601 DUP2 PUSH2 0x9DA JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x61D SWAP2 DUP4 SWAP2 SWAP1 PUSH2 0xA17 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x6AD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x19195B1959D85D1958D85B1B PUSH1 0xA2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3F0 JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x708 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x773 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x6163746976652070726F7879 PUSH1 0xA0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3F0 JUMP JUMPDEST PUSH2 0x77C DUP3 PUSH2 0x9DA JUMP JUMPDEST PUSH2 0x788 DUP3 DUP3 PUSH1 0x1 PUSH2 0xA17 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x82C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x38 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x555550535570677261646561626C653A206D757374206E6F742062652063616C PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6C6564207468726F7567682064656C656761746563616C6C0000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3F0 JUMP JUMPDEST POP PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x884 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0xFB DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP2 SWAP1 DUP3 SWAP1 PUSH32 0x90CC2F570A6EB594B1580EA3E41247D2D73A55281889E86BD4EC2FC29C7E62D6 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x3 SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH2 0x90A JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF DUP1 DUP4 AND SWAP2 AND LT JUMPDEST PUSH2 0x96D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x44 DUP3 ADD MSTORE PUSH14 0x191E481A5B9A5D1A585B1A5E9959 PUSH1 0x92 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3F0 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH2 0xFFFF NOT AND PUSH1 0xFF DUP4 AND OR PUSH2 0x100 OR SWAP1 SSTORE PUSH2 0x98A DUP3 PUSH2 0xBBC JUMP JUMPDEST PUSH1 0x1 PUSH2 0x12D SSTORE PUSH1 0x2 PUSH2 0x12E SSTORE PUSH1 0x3 PUSH2 0x12F SSTORE PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH1 0xFF DUP3 AND DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH2 0x46F JUMP JUMPDEST PUSH1 0xC9 SLOAD PUSH32 0x821B6E3A557148015A918C89E5D092E878A69854A2D1A410635F771BD5A8A3F5 SWAP1 PUSH2 0x788 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ADDRESS CALLER DUP5 PUSH1 0x0 CALLDATASIZE PUSH2 0xC30 JUMP JUMPDEST PUSH32 0x4910FDFA16FED3260ED0E7147F7CC6DA11A60208B5B9406D12A635614FFD9143 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0xA4F JUMPI PUSH2 0xA4A DUP4 PUSH2 0xCEC JUMP JUMPDEST POP POP POP JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x52D1902D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0xAA9 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0xAA6 SWAP2 DUP2 ADD SWAP1 PUSH2 0x11DF JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0xB1B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524331393637557067726164653A206E657720696D706C656D656E74617469 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F6E206973206E6F742055555053000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3F0 JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC DUP2 EQ PUSH2 0xBB0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524331393637557067726164653A20756E737570706F727465642070726F78 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6961626C65555549440000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3F0 JUMP JUMPDEST POP PUSH2 0xA4A DUP4 DUP4 DUP4 PUSH2 0xDB7 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0xC27 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3F0 JUMP JUMPDEST PUSH2 0x61D DUP2 PUSH2 0xDE2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x7EF7C883 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0xFDEF9106 SWAP1 PUSH2 0xC64 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x11F8 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC81 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xCA5 SWAP2 SWAP1 PUSH2 0x124C JUMP JUMPDEST PUSH2 0xCE4 JUMPI PUSH1 0x40 MLOAD PUSH4 0xCB6F8ED PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND PUSH1 0x4 DUP4 ADD MSTORE DUP1 DUP8 AND PUSH1 0x24 DUP4 ADD MSTORE DUP6 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x84 ADD PUSH2 0x3F0 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND EXTCODESIZE PUSH2 0xD69 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313936373A206E657720696D706C656D656E746174696F6E206973206E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F74206120636F6E747261637400000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3F0 JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xDC0 DUP4 PUSH2 0xE7C JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD GT DUP1 PUSH2 0xDCD JUMPI POP DUP1 JUMPDEST ISZERO PUSH2 0xA4A JUMPI PUSH2 0xDDC DUP4 DUP4 PUSH2 0xEBC JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0xE4D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3F0 JUMP JUMPDEST PUSH1 0xC9 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xE85 DUP2 PUSH2 0xCEC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xEE1 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x12E2 PUSH1 0x27 SWAP2 CODECOPY PUSH2 0xEE8 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0xF05 SWAP2 SWAP1 PUSH2 0x1292 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xF40 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xF45 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0xF56 DUP7 DUP4 DUP4 DUP8 PUSH2 0xF60 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0xFCF JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0xFC8 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0xFC8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3F0 JUMP JUMPDEST POP DUP2 PUSH2 0xFD9 JUMP JUMPDEST PUSH2 0xFD9 DUP4 DUP4 PUSH2 0xFE1 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0xFF1 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3F0 SWAP2 SWAP1 PUSH2 0x12AE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x103B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0xEE1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1065 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH2 0xEE1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0x10A2 JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x1080 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x61D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x10D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xEE1 DUP2 PUSH2 0x10AB JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH1 0x3 DUP4 LT PUSH2 0x10FF JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 SWAP1 MSTORE SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x112E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x1139 DUP2 PUSH2 0x10AB JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1156 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x116A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x117C JUMPI PUSH2 0x117C PUSH2 0x1105 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x11A4 JUMPI PUSH2 0x11A4 PUSH2 0x1105 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x11BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x11F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND DUP4 MSTORE DUP1 DUP8 AND PUSH1 0x20 DUP5 ADD MSTORE POP DUP5 PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x80 PUSH1 0x60 DUP4 ADD MSTORE DUP3 PUSH1 0x80 DUP4 ADD MSTORE DUP3 DUP5 PUSH1 0xA0 DUP5 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0xA0 DUP5 DUP5 ADD ADD MSTORE PUSH1 0xA0 PUSH1 0x1F NOT PUSH1 0x1F DUP6 ADD AND DUP4 ADD ADD SWAP1 POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x125E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xEE1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1289 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1271 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x12A4 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x126E JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x12CD DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x126E JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A164 PUSH20 0x6F6C6343000811000A0000000000000000000000 ","sourceMap":"1334:546:31:-:0;;;1198:4:5;1155:48;;1334:546:31;;;;;;;;;-1:-1:-1;1647:22:40;:20;:22::i;:::-;1334:546:31;;5939:280:4;6007:13;;;;;;;6006:14;5998:66;;;;-1:-1:-1;;;5998:66:4;;216:2:50;5998:66:4;;;198:21:50;255:2;235:18;;;228:30;294:34;274:18;;;267:62;-1:-1:-1;;;345:18:50;;;338:37;392:19;;5998:66:4;;;;;;;;6078:12;;6094:15;6078:12;;;:31;6074:139;;6125:12;:30;;-1:-1:-1;;6125:30:4;6140:15;6125:30;;;;;;6174:28;;564:36:50;;;6174:28:4;;552:2:50;537:18;6174:28:4;;;;;;;6074:139;5939:280::o;422:184:50:-;1334:546:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@UPGRADE_PLUGIN_PERMISSION_ID_4415":{"entryPoint":null,"id":4415,"parameterSlots":0,"returnSlots":0},"@__DaoAuthorizableUpgradeable_init_3901":{"entryPoint":3554,"id":3901,"parameterSlots":1,"returnSlots":0},"@__PluginUUPSUpgradeable_init_4429":{"entryPoint":3004,"id":4429,"parameterSlots":1,"returnSlots":0},"@_auth_3987":{"entryPoint":3120,"id":3987,"parameterSlots":6,"returnSlots":0},"@_authorizeUpgrade_4570":{"entryPoint":2522,"id":4570,"parameterSlots":1,"returnSlots":0},"@_getImplementation_76":{"entryPoint":null,"id":76,"parameterSlots":0,"returnSlots":1},"@_msgData_1038":{"entryPoint":null,"id":1038,"parameterSlots":0,"returnSlots":2},"@_msgSender_1029":{"entryPoint":null,"id":1029,"parameterSlots":0,"returnSlots":1},"@_revert_1000":{"entryPoint":4065,"id":1000,"parameterSlots":2,"returnSlots":0},"@_setImplementation_100":{"entryPoint":3308,"id":100,"parameterSlots":1,"returnSlots":0},"@_upgradeToAndCallUUPS_198":{"entryPoint":2583,"id":198,"parameterSlots":3,"returnSlots":0},"@_upgradeToAndCall_145":{"entryPoint":3511,"id":145,"parameterSlots":3,"returnSlots":0},"@_upgradeTo_115":{"entryPoint":3708,"id":115,"parameterSlots":1,"returnSlots":0},"@dao_3911":{"entryPoint":null,"id":3911,"parameterSlots":0,"returnSlots":1},"@functionDelegateCall_888":{"entryPoint":3772,"id":888,"parameterSlots":2,"returnSlots":1},"@functionDelegateCall_917":{"entryPoint":3816,"id":917,"parameterSlots":3,"returnSlots":1},"@getAddressSlot_1158":{"entryPoint":null,"id":1158,"parameterSlots":1,"returnSlots":1},"@getBooleanSlot_1169":{"entryPoint":null,"id":1169,"parameterSlots":1,"returnSlots":1},"@implementation_4495":{"entryPoint":2129,"id":4495,"parameterSlots":0,"returnSlots":1},"@initializeFrom_3247":{"entryPoint":879,"id":3247,"parameterSlots":1,"returnSlots":0},"@initialize_3220":{"entryPoint":2280,"id":3220,"parameterSlots":1,"returnSlots":0},"@isContract_689":{"entryPoint":null,"id":689,"parameterSlots":1,"returnSlots":1},"@pluginType_4409":{"entryPoint":null,"id":4409,"parameterSlots":0,"returnSlots":1},"@protocolVersion_5135":{"entryPoint":1147,"id":5135,"parameterSlots":0,"returnSlots":1},"@proxiableUUID_616":{"entryPoint":1932,"id":616,"parameterSlots":0,"returnSlots":1},"@setTarget_4449":{"entryPoint":2185,"id":4449,"parameterSlots":1,"returnSlots":0},"@state1_3190":{"entryPoint":null,"id":3190,"parameterSlots":0,"returnSlots":0},"@state2_3192":{"entryPoint":null,"id":3192,"parameterSlots":0,"returnSlots":0},"@state3_3194":{"entryPoint":null,"id":3194,"parameterSlots":0,"returnSlots":0},"@supportsInterface_1275":{"entryPoint":null,"id":1275,"parameterSlots":1,"returnSlots":1},"@supportsInterface_4485":{"entryPoint":771,"id":4485,"parameterSlots":1,"returnSlots":1},"@target_4382":{"entryPoint":null,"id":4382,"parameterSlots":0,"returnSlots":0},"@upgradeToAndCall_659":{"entryPoint":1568,"id":659,"parameterSlots":2,"returnSlots":0},"@upgradeTo_638":{"entryPoint":1189,"id":638,"parameterSlots":1,"returnSlots":0},"@verifyCallResultFromTarget_956":{"entryPoint":3936,"id":956,"parameterSlots":4,"returnSlots":1},"abi_decode_tuple_t_address":{"entryPoint":4288,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_bytes_memory_ptr":{"entryPoint":4379,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_bool_fromMemory":{"entryPoint":4684,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes32_fromMemory":{"entryPoint":4575,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes4":{"entryPoint":4137,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_contract$_IDAO_$2538":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint16":{"entryPoint":4179,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":4754,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address_t_address_t_address_t_bytes32__to_t_address_t_address_t_address_t_bytes32__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":5,"returnSlots":1},"abi_encode_tuple_t_address_t_address_t_bytes32_t_bytes_calldata_ptr__to_t_address_t_address_t_bytes32_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":4600,"id":null,"parameterSlots":6,"returnSlots":1},"abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed":{"entryPoint":4215,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_contract$_IDAO_$2538__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_enum$_PluginType_$3994__to_t_uint8__fromStack_reversed":{"entryPoint":4317,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":4782,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_36e108fa7a809b52ab1951dd91c117a7bc9ac5250bdf1aa162d4e104f7edf9eb__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_52f1ead4d9653e13afbd2e90ef2587c30187cd50b2e97d784e3f7a7541247434__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_67f0151b4ad1dcfa0e3302a0cd6019f51582ef1807b37dceb00bd852a514f7f4__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_76b6b6debfc5febf101145a79ecf0b0d2e89e397dfdab2bca99888370411152c__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_8e8e2fbcb586f700b5b14e2c4a650c8d83b9773c31c5fe8962070ea544e11f24__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"copy_memory_to_memory_with_cleanup":{"entryPoint":4718,"id":null,"parameterSlots":3,"returnSlots":0},"panic_error_0x41":{"entryPoint":4357,"id":null,"parameterSlots":0,"returnSlots":0},"validator_revert_address":{"entryPoint":4267,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:10790:50","statements":[{"nodeType":"YulBlock","src":"6:3:50","statements":[]},{"body":{"nodeType":"YulBlock","src":"83:217:50","statements":[{"body":{"nodeType":"YulBlock","src":"129:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"138:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"141:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"131:6:50"},"nodeType":"YulFunctionCall","src":"131:12:50"},"nodeType":"YulExpressionStatement","src":"131:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"104:7:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"113:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"100:3:50"},"nodeType":"YulFunctionCall","src":"100:23:50"},{"kind":"number","nodeType":"YulLiteral","src":"125:2:50","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"96:3:50"},"nodeType":"YulFunctionCall","src":"96:32:50"},"nodeType":"YulIf","src":"93:52:50"},{"nodeType":"YulVariableDeclaration","src":"154:36:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"180:9:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"167:12:50"},"nodeType":"YulFunctionCall","src":"167:23:50"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"158:5:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"254:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"263:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"266:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"256:6:50"},"nodeType":"YulFunctionCall","src":"256:12:50"},"nodeType":"YulExpressionStatement","src":"256:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"212:5:50"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"223:5:50"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"234:3:50","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"239:10:50","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"230:3:50"},"nodeType":"YulFunctionCall","src":"230:20:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"219:3:50"},"nodeType":"YulFunctionCall","src":"219:32:50"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"209:2:50"},"nodeType":"YulFunctionCall","src":"209:43:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"202:6:50"},"nodeType":"YulFunctionCall","src":"202:51:50"},"nodeType":"YulIf","src":"199:71:50"},{"nodeType":"YulAssignment","src":"279:15:50","value":{"name":"value","nodeType":"YulIdentifier","src":"289:5:50"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"279:6:50"}]}]},"name":"abi_decode_tuple_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"49:9:50","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"60:7:50","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"72:6:50","type":""}],"src":"14:286:50"},{"body":{"nodeType":"YulBlock","src":"400:92:50","statements":[{"nodeType":"YulAssignment","src":"410:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"422:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"433:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"418:3:50"},"nodeType":"YulFunctionCall","src":"418:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"410:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"452:9:50"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"477:6:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"470:6:50"},"nodeType":"YulFunctionCall","src":"470:14:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"463:6:50"},"nodeType":"YulFunctionCall","src":"463:22:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"445:6:50"},"nodeType":"YulFunctionCall","src":"445:41:50"},"nodeType":"YulExpressionStatement","src":"445:41:50"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"369:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"380:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"391:4:50","type":""}],"src":"305:187:50"},{"body":{"nodeType":"YulBlock","src":"566:203:50","statements":[{"body":{"nodeType":"YulBlock","src":"612:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"621:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"624:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"614:6:50"},"nodeType":"YulFunctionCall","src":"614:12:50"},"nodeType":"YulExpressionStatement","src":"614:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"587:7:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"596:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"583:3:50"},"nodeType":"YulFunctionCall","src":"583:23:50"},{"kind":"number","nodeType":"YulLiteral","src":"608:2:50","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"579:3:50"},"nodeType":"YulFunctionCall","src":"579:32:50"},"nodeType":"YulIf","src":"576:52:50"},{"nodeType":"YulVariableDeclaration","src":"637:36:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"663:9:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"650:12:50"},"nodeType":"YulFunctionCall","src":"650:23:50"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"641:5:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"723:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"732:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"735:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"725:6:50"},"nodeType":"YulFunctionCall","src":"725:12:50"},"nodeType":"YulExpressionStatement","src":"725:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"695:5:50"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"706:5:50"},{"kind":"number","nodeType":"YulLiteral","src":"713:6:50","type":"","value":"0xffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"702:3:50"},"nodeType":"YulFunctionCall","src":"702:18:50"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"692:2:50"},"nodeType":"YulFunctionCall","src":"692:29:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"685:6:50"},"nodeType":"YulFunctionCall","src":"685:37:50"},"nodeType":"YulIf","src":"682:57:50"},{"nodeType":"YulAssignment","src":"748:15:50","value":{"name":"value","nodeType":"YulIdentifier","src":"758:5:50"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"748:6:50"}]}]},"name":"abi_decode_tuple_t_uint16","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"532:9:50","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"543:7:50","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"555:6:50","type":""}],"src":"497:272:50"},{"body":{"nodeType":"YulBlock","src":"875:76:50","statements":[{"nodeType":"YulAssignment","src":"885:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"897:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"908:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"893:3:50"},"nodeType":"YulFunctionCall","src":"893:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"885:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"927:9:50"},{"name":"value0","nodeType":"YulIdentifier","src":"938:6:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"920:6:50"},"nodeType":"YulFunctionCall","src":"920:25:50"},"nodeType":"YulExpressionStatement","src":"920:25:50"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"844:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"855:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"866:4:50","type":""}],"src":"774:177:50"},{"body":{"nodeType":"YulBlock","src":"1099:358:50","statements":[{"nodeType":"YulAssignment","src":"1109:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1121:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"1132:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1117:3:50"},"nodeType":"YulFunctionCall","src":"1117:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1109:4:50"}]},{"nodeType":"YulVariableDeclaration","src":"1144:20:50","value":{"name":"headStart","nodeType":"YulIdentifier","src":"1155:9:50"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"1148:3:50","type":""}]},{"nodeType":"YulAssignment","src":"1173:16:50","value":{"name":"headStart","nodeType":"YulIdentifier","src":"1180:9:50"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"1173:3:50"}]},{"nodeType":"YulVariableDeclaration","src":"1198:20:50","value":{"name":"value0","nodeType":"YulIdentifier","src":"1212:6:50"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"1202:6:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"1227:10:50","value":{"kind":"number","nodeType":"YulLiteral","src":"1236:1:50","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"1231:1:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"1293:158:50","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1314:3:50"},{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"1329:6:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1323:5:50"},"nodeType":"YulFunctionCall","src":"1323:13:50"},{"kind":"number","nodeType":"YulLiteral","src":"1338:4:50","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1319:3:50"},"nodeType":"YulFunctionCall","src":"1319:24:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1307:6:50"},"nodeType":"YulFunctionCall","src":"1307:37:50"},"nodeType":"YulExpressionStatement","src":"1307:37:50"},{"nodeType":"YulVariableDeclaration","src":"1357:14:50","value":{"kind":"number","nodeType":"YulLiteral","src":"1367:4:50","type":"","value":"0x20"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"1361:2:50","type":""}]},{"nodeType":"YulAssignment","src":"1384:19:50","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1395:3:50"},{"name":"_1","nodeType":"YulIdentifier","src":"1400:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1391:3:50"},"nodeType":"YulFunctionCall","src":"1391:12:50"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"1384:3:50"}]},{"nodeType":"YulAssignment","src":"1416:25:50","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"1430:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"1438:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1426:3:50"},"nodeType":"YulFunctionCall","src":"1426:15:50"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"1416:6:50"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"1257:1:50"},{"kind":"number","nodeType":"YulLiteral","src":"1260:4:50","type":"","value":"0x03"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"1254:2:50"},"nodeType":"YulFunctionCall","src":"1254:11:50"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"1266:18:50","statements":[{"nodeType":"YulAssignment","src":"1268:14:50","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"1277:1:50"},{"kind":"number","nodeType":"YulLiteral","src":"1280:1:50","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1273:3:50"},"nodeType":"YulFunctionCall","src":"1273:9:50"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"1268:1:50"}]}]},"pre":{"nodeType":"YulBlock","src":"1250:3:50","statements":[]},"src":"1246:205:50"}]},"name":"abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1068:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1079:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1090:4:50","type":""}],"src":"956:501:50"},{"body":{"nodeType":"YulBlock","src":"1507:109:50","statements":[{"body":{"nodeType":"YulBlock","src":"1594:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1603:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1606:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1596:6:50"},"nodeType":"YulFunctionCall","src":"1596:12:50"},"nodeType":"YulExpressionStatement","src":"1596:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1530:5:50"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1541:5:50"},{"kind":"number","nodeType":"YulLiteral","src":"1548:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1537:3:50"},"nodeType":"YulFunctionCall","src":"1537:54:50"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1527:2:50"},"nodeType":"YulFunctionCall","src":"1527:65:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1520:6:50"},"nodeType":"YulFunctionCall","src":"1520:73:50"},"nodeType":"YulIf","src":"1517:93:50"}]},"name":"validator_revert_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1496:5:50","type":""}],"src":"1462:154:50"},{"body":{"nodeType":"YulBlock","src":"1691:177:50","statements":[{"body":{"nodeType":"YulBlock","src":"1737:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1746:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1749:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1739:6:50"},"nodeType":"YulFunctionCall","src":"1739:12:50"},"nodeType":"YulExpressionStatement","src":"1739:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1712:7:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"1721:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1708:3:50"},"nodeType":"YulFunctionCall","src":"1708:23:50"},{"kind":"number","nodeType":"YulLiteral","src":"1733:2:50","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1704:3:50"},"nodeType":"YulFunctionCall","src":"1704:32:50"},"nodeType":"YulIf","src":"1701:52:50"},{"nodeType":"YulVariableDeclaration","src":"1762:36:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1788:9:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1775:12:50"},"nodeType":"YulFunctionCall","src":"1775:23:50"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"1766:5:50","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1832:5:50"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"1807:24:50"},"nodeType":"YulFunctionCall","src":"1807:31:50"},"nodeType":"YulExpressionStatement","src":"1807:31:50"},{"nodeType":"YulAssignment","src":"1847:15:50","value":{"name":"value","nodeType":"YulIdentifier","src":"1857:5:50"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1847:6:50"}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1657:9:50","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1668:7:50","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1680:6:50","type":""}],"src":"1621:247:50"},{"body":{"nodeType":"YulBlock","src":"1987:125:50","statements":[{"nodeType":"YulAssignment","src":"1997:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2009:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"2020:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2005:3:50"},"nodeType":"YulFunctionCall","src":"2005:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1997:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2039:9:50"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2054:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"2062:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2050:3:50"},"nodeType":"YulFunctionCall","src":"2050:55:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2032:6:50"},"nodeType":"YulFunctionCall","src":"2032:74:50"},"nodeType":"YulExpressionStatement","src":"2032:74:50"}]},"name":"abi_encode_tuple_t_contract$_IDAO_$2538__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1956:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1967:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1978:4:50","type":""}],"src":"1873:239:50"},{"body":{"nodeType":"YulBlock","src":"2231:229:50","statements":[{"nodeType":"YulAssignment","src":"2241:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2253:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"2264:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2249:3:50"},"nodeType":"YulFunctionCall","src":"2249:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2241:4:50"}]},{"body":{"nodeType":"YulBlock","src":"2309:111:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2330:1:50","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2337:3:50","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"2342:10:50","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2333:3:50"},"nodeType":"YulFunctionCall","src":"2333:20:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2323:6:50"},"nodeType":"YulFunctionCall","src":"2323:31:50"},"nodeType":"YulExpressionStatement","src":"2323:31:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2374:1:50","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"2377:4:50","type":"","value":"0x21"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2367:6:50"},"nodeType":"YulFunctionCall","src":"2367:15:50"},"nodeType":"YulExpressionStatement","src":"2367:15:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2402:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2405:4:50","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2395:6:50"},"nodeType":"YulFunctionCall","src":"2395:15:50"},"nodeType":"YulExpressionStatement","src":"2395:15:50"}]},"condition":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2289:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"2297:1:50","type":"","value":"3"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2286:2:50"},"nodeType":"YulFunctionCall","src":"2286:13:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2279:6:50"},"nodeType":"YulFunctionCall","src":"2279:21:50"},"nodeType":"YulIf","src":"2276:144:50"},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2436:9:50"},{"name":"value0","nodeType":"YulIdentifier","src":"2447:6:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2429:6:50"},"nodeType":"YulFunctionCall","src":"2429:25:50"},"nodeType":"YulExpressionStatement","src":"2429:25:50"}]},"name":"abi_encode_tuple_t_enum$_PluginType_$3994__to_t_uint8__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2200:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"2211:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2222:4:50","type":""}],"src":"2117:343:50"},{"body":{"nodeType":"YulBlock","src":"2497:95:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2514:1:50","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2521:3:50","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"2526:10:50","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2517:3:50"},"nodeType":"YulFunctionCall","src":"2517:20:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2507:6:50"},"nodeType":"YulFunctionCall","src":"2507:31:50"},"nodeType":"YulExpressionStatement","src":"2507:31:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2554:1:50","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"2557:4:50","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2547:6:50"},"nodeType":"YulFunctionCall","src":"2547:15:50"},"nodeType":"YulExpressionStatement","src":"2547:15:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2578:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2581:4:50","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2571:6:50"},"nodeType":"YulFunctionCall","src":"2571:15:50"},"nodeType":"YulExpressionStatement","src":"2571:15:50"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"2465:127:50"},{"body":{"nodeType":"YulBlock","src":"2693:960:50","statements":[{"body":{"nodeType":"YulBlock","src":"2739:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2748:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2751:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2741:6:50"},"nodeType":"YulFunctionCall","src":"2741:12:50"},"nodeType":"YulExpressionStatement","src":"2741:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2714:7:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"2723:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2710:3:50"},"nodeType":"YulFunctionCall","src":"2710:23:50"},{"kind":"number","nodeType":"YulLiteral","src":"2735:2:50","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2706:3:50"},"nodeType":"YulFunctionCall","src":"2706:32:50"},"nodeType":"YulIf","src":"2703:52:50"},{"nodeType":"YulVariableDeclaration","src":"2764:36:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2790:9:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2777:12:50"},"nodeType":"YulFunctionCall","src":"2777:23:50"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"2768:5:50","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2834:5:50"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"2809:24:50"},"nodeType":"YulFunctionCall","src":"2809:31:50"},"nodeType":"YulExpressionStatement","src":"2809:31:50"},{"nodeType":"YulAssignment","src":"2849:15:50","value":{"name":"value","nodeType":"YulIdentifier","src":"2859:5:50"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2849:6:50"}]},{"nodeType":"YulVariableDeclaration","src":"2873:46:50","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2904:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"2915:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2900:3:50"},"nodeType":"YulFunctionCall","src":"2900:18:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2887:12:50"},"nodeType":"YulFunctionCall","src":"2887:32:50"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"2877:6:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2928:28:50","value":{"kind":"number","nodeType":"YulLiteral","src":"2938:18:50","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"2932:2:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"2983:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2992:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2995:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2985:6:50"},"nodeType":"YulFunctionCall","src":"2985:12:50"},"nodeType":"YulExpressionStatement","src":"2985:12:50"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"2971:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"2979:2:50"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2968:2:50"},"nodeType":"YulFunctionCall","src":"2968:14:50"},"nodeType":"YulIf","src":"2965:34:50"},{"nodeType":"YulVariableDeclaration","src":"3008:32:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3022:9:50"},{"name":"offset","nodeType":"YulIdentifier","src":"3033:6:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3018:3:50"},"nodeType":"YulFunctionCall","src":"3018:22:50"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"3012:2:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"3088:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3097:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3100:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3090:6:50"},"nodeType":"YulFunctionCall","src":"3090:12:50"},"nodeType":"YulExpressionStatement","src":"3090:12:50"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"3067:2:50"},{"kind":"number","nodeType":"YulLiteral","src":"3071:4:50","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3063:3:50"},"nodeType":"YulFunctionCall","src":"3063:13:50"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3078:7:50"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3059:3:50"},"nodeType":"YulFunctionCall","src":"3059:27:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3052:6:50"},"nodeType":"YulFunctionCall","src":"3052:35:50"},"nodeType":"YulIf","src":"3049:55:50"},{"nodeType":"YulVariableDeclaration","src":"3113:26:50","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"3136:2:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3123:12:50"},"nodeType":"YulFunctionCall","src":"3123:16:50"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"3117:2:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"3162:22:50","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"3164:16:50"},"nodeType":"YulFunctionCall","src":"3164:18:50"},"nodeType":"YulExpressionStatement","src":"3164:18:50"}]},"condition":{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"3154:2:50"},{"name":"_1","nodeType":"YulIdentifier","src":"3158:2:50"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3151:2:50"},"nodeType":"YulFunctionCall","src":"3151:10:50"},"nodeType":"YulIf","src":"3148:36:50"},{"nodeType":"YulVariableDeclaration","src":"3193:17:50","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3207:2:50","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"3203:3:50"},"nodeType":"YulFunctionCall","src":"3203:7:50"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"3197:2:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3219:23:50","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3239:2:50","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3233:5:50"},"nodeType":"YulFunctionCall","src":"3233:9:50"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"3223:6:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3251:71:50","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"3273:6:50"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"3297:2:50"},{"kind":"number","nodeType":"YulLiteral","src":"3301:4:50","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3293:3:50"},"nodeType":"YulFunctionCall","src":"3293:13:50"},{"name":"_4","nodeType":"YulIdentifier","src":"3308:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3289:3:50"},"nodeType":"YulFunctionCall","src":"3289:22:50"},{"kind":"number","nodeType":"YulLiteral","src":"3313:2:50","type":"","value":"63"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3285:3:50"},"nodeType":"YulFunctionCall","src":"3285:31:50"},{"name":"_4","nodeType":"YulIdentifier","src":"3318:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3281:3:50"},"nodeType":"YulFunctionCall","src":"3281:40:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3269:3:50"},"nodeType":"YulFunctionCall","src":"3269:53:50"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"3255:10:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"3381:22:50","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"3383:16:50"},"nodeType":"YulFunctionCall","src":"3383:18:50"},"nodeType":"YulExpressionStatement","src":"3383:18:50"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"3340:10:50"},{"name":"_1","nodeType":"YulIdentifier","src":"3352:2:50"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3337:2:50"},"nodeType":"YulFunctionCall","src":"3337:18:50"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"3360:10:50"},{"name":"memPtr","nodeType":"YulIdentifier","src":"3372:6:50"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"3357:2:50"},"nodeType":"YulFunctionCall","src":"3357:22:50"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"3334:2:50"},"nodeType":"YulFunctionCall","src":"3334:46:50"},"nodeType":"YulIf","src":"3331:72:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3419:2:50","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"3423:10:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3412:6:50"},"nodeType":"YulFunctionCall","src":"3412:22:50"},"nodeType":"YulExpressionStatement","src":"3412:22:50"},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"3450:6:50"},{"name":"_3","nodeType":"YulIdentifier","src":"3458:2:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3443:6:50"},"nodeType":"YulFunctionCall","src":"3443:18:50"},"nodeType":"YulExpressionStatement","src":"3443:18:50"},{"body":{"nodeType":"YulBlock","src":"3507:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3516:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3519:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3509:6:50"},"nodeType":"YulFunctionCall","src":"3509:12:50"},"nodeType":"YulExpressionStatement","src":"3509:12:50"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"3484:2:50"},{"name":"_3","nodeType":"YulIdentifier","src":"3488:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3480:3:50"},"nodeType":"YulFunctionCall","src":"3480:11:50"},{"kind":"number","nodeType":"YulLiteral","src":"3493:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3476:3:50"},"nodeType":"YulFunctionCall","src":"3476:20:50"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3498:7:50"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3473:2:50"},"nodeType":"YulFunctionCall","src":"3473:33:50"},"nodeType":"YulIf","src":"3470:53:50"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"3549:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"3557:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3545:3:50"},"nodeType":"YulFunctionCall","src":"3545:15:50"},{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"3566:2:50"},{"kind":"number","nodeType":"YulLiteral","src":"3570:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3562:3:50"},"nodeType":"YulFunctionCall","src":"3562:11:50"},{"name":"_3","nodeType":"YulIdentifier","src":"3575:2:50"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"3532:12:50"},"nodeType":"YulFunctionCall","src":"3532:46:50"},"nodeType":"YulExpressionStatement","src":"3532:46:50"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"3602:6:50"},{"name":"_3","nodeType":"YulIdentifier","src":"3610:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3598:3:50"},"nodeType":"YulFunctionCall","src":"3598:15:50"},{"kind":"number","nodeType":"YulLiteral","src":"3615:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3594:3:50"},"nodeType":"YulFunctionCall","src":"3594:24:50"},{"kind":"number","nodeType":"YulLiteral","src":"3620:1:50","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3587:6:50"},"nodeType":"YulFunctionCall","src":"3587:35:50"},"nodeType":"YulExpressionStatement","src":"3587:35:50"},{"nodeType":"YulAssignment","src":"3631:16:50","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"3641:6:50"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"3631:6:50"}]}]},"name":"abi_decode_tuple_t_addresst_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2651:9:50","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2662:7:50","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2674:6:50","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2682:6:50","type":""}],"src":"2597:1056:50"},{"body":{"nodeType":"YulBlock","src":"3759:76:50","statements":[{"nodeType":"YulAssignment","src":"3769:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3781:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"3792:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3777:3:50"},"nodeType":"YulFunctionCall","src":"3777:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3769:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3811:9:50"},{"name":"value0","nodeType":"YulIdentifier","src":"3822:6:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3804:6:50"},"nodeType":"YulFunctionCall","src":"3804:25:50"},"nodeType":"YulExpressionStatement","src":"3804:25:50"}]},"name":"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3728:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3739:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3750:4:50","type":""}],"src":"3658:177:50"},{"body":{"nodeType":"YulBlock","src":"3941:125:50","statements":[{"nodeType":"YulAssignment","src":"3951:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3963:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"3974:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3959:3:50"},"nodeType":"YulFunctionCall","src":"3959:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3951:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3993:9:50"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4008:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"4016:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4004:3:50"},"nodeType":"YulFunctionCall","src":"4004:55:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3986:6:50"},"nodeType":"YulFunctionCall","src":"3986:74:50"},"nodeType":"YulExpressionStatement","src":"3986:74:50"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3910:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3921:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3932:4:50","type":""}],"src":"3840:226:50"},{"body":{"nodeType":"YulBlock","src":"4154:177:50","statements":[{"body":{"nodeType":"YulBlock","src":"4200:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4209:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4212:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4202:6:50"},"nodeType":"YulFunctionCall","src":"4202:12:50"},"nodeType":"YulExpressionStatement","src":"4202:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"4175:7:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"4184:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4171:3:50"},"nodeType":"YulFunctionCall","src":"4171:23:50"},{"kind":"number","nodeType":"YulLiteral","src":"4196:2:50","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4167:3:50"},"nodeType":"YulFunctionCall","src":"4167:32:50"},"nodeType":"YulIf","src":"4164:52:50"},{"nodeType":"YulVariableDeclaration","src":"4225:36:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4251:9:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4238:12:50"},"nodeType":"YulFunctionCall","src":"4238:23:50"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"4229:5:50","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4295:5:50"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"4270:24:50"},"nodeType":"YulFunctionCall","src":"4270:31:50"},"nodeType":"YulExpressionStatement","src":"4270:31:50"},{"nodeType":"YulAssignment","src":"4310:15:50","value":{"name":"value","nodeType":"YulIdentifier","src":"4320:5:50"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"4310:6:50"}]}]},"name":"abi_decode_tuple_t_contract$_IDAO_$2538","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4120:9:50","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"4131:7:50","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"4143:6:50","type":""}],"src":"4071:260:50"},{"body":{"nodeType":"YulBlock","src":"4510:236:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4527:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"4538:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4520:6:50"},"nodeType":"YulFunctionCall","src":"4520:21:50"},"nodeType":"YulExpressionStatement","src":"4520:21:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4561:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"4572:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4557:3:50"},"nodeType":"YulFunctionCall","src":"4557:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"4577:2:50","type":"","value":"46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4550:6:50"},"nodeType":"YulFunctionCall","src":"4550:30:50"},"nodeType":"YulExpressionStatement","src":"4550:30:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4600:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"4611:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4596:3:50"},"nodeType":"YulFunctionCall","src":"4596:18:50"},{"hexValue":"496e697469616c697a61626c653a20636f6e747261637420697320616c726561","kind":"string","nodeType":"YulLiteral","src":"4616:34:50","type":"","value":"Initializable: contract is alrea"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4589:6:50"},"nodeType":"YulFunctionCall","src":"4589:62:50"},"nodeType":"YulExpressionStatement","src":"4589:62:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4671:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"4682:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4667:3:50"},"nodeType":"YulFunctionCall","src":"4667:18:50"},{"hexValue":"647920696e697469616c697a6564","kind":"string","nodeType":"YulLiteral","src":"4687:16:50","type":"","value":"dy initialized"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4660:6:50"},"nodeType":"YulFunctionCall","src":"4660:44:50"},"nodeType":"YulExpressionStatement","src":"4660:44:50"},{"nodeType":"YulAssignment","src":"4713:27:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4725:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"4736:3:50","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4721:3:50"},"nodeType":"YulFunctionCall","src":"4721:19:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4713:4:50"}]}]},"name":"abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4487:9:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4501:4:50","type":""}],"src":"4336:410:50"},{"body":{"nodeType":"YulBlock","src":"4848:87:50","statements":[{"nodeType":"YulAssignment","src":"4858:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4870:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"4881:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4866:3:50"},"nodeType":"YulFunctionCall","src":"4866:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4858:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4900:9:50"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4915:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"4923:4:50","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4911:3:50"},"nodeType":"YulFunctionCall","src":"4911:17:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4893:6:50"},"nodeType":"YulFunctionCall","src":"4893:36:50"},"nodeType":"YulExpressionStatement","src":"4893:36:50"}]},"name":"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4817:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"4828:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4839:4:50","type":""}],"src":"4751:184:50"},{"body":{"nodeType":"YulBlock","src":"5114:234:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5131:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"5142:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5124:6:50"},"nodeType":"YulFunctionCall","src":"5124:21:50"},"nodeType":"YulExpressionStatement","src":"5124:21:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5165:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"5176:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5161:3:50"},"nodeType":"YulFunctionCall","src":"5161:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"5181:2:50","type":"","value":"44"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5154:6:50"},"nodeType":"YulFunctionCall","src":"5154:30:50"},"nodeType":"YulExpressionStatement","src":"5154:30:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5204:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"5215:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5200:3:50"},"nodeType":"YulFunctionCall","src":"5200:18:50"},{"hexValue":"46756e6374696f6e206d7573742062652063616c6c6564207468726f75676820","kind":"string","nodeType":"YulLiteral","src":"5220:34:50","type":"","value":"Function must be called through "}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5193:6:50"},"nodeType":"YulFunctionCall","src":"5193:62:50"},"nodeType":"YulExpressionStatement","src":"5193:62:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5275:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"5286:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5271:3:50"},"nodeType":"YulFunctionCall","src":"5271:18:50"},{"hexValue":"64656c656761746563616c6c","kind":"string","nodeType":"YulLiteral","src":"5291:14:50","type":"","value":"delegatecall"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5264:6:50"},"nodeType":"YulFunctionCall","src":"5264:42:50"},"nodeType":"YulExpressionStatement","src":"5264:42:50"},{"nodeType":"YulAssignment","src":"5315:27:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5327:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"5338:3:50","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5323:3:50"},"nodeType":"YulFunctionCall","src":"5323:19:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5315:4:50"}]}]},"name":"abi_encode_tuple_t_stringliteral_36e108fa7a809b52ab1951dd91c117a7bc9ac5250bdf1aa162d4e104f7edf9eb__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5091:9:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5105:4:50","type":""}],"src":"4940:408:50"},{"body":{"nodeType":"YulBlock","src":"5527:234:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5544:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"5555:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5537:6:50"},"nodeType":"YulFunctionCall","src":"5537:21:50"},"nodeType":"YulExpressionStatement","src":"5537:21:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5578:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"5589:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5574:3:50"},"nodeType":"YulFunctionCall","src":"5574:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"5594:2:50","type":"","value":"44"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5567:6:50"},"nodeType":"YulFunctionCall","src":"5567:30:50"},"nodeType":"YulExpressionStatement","src":"5567:30:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5617:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"5628:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5613:3:50"},"nodeType":"YulFunctionCall","src":"5613:18:50"},{"hexValue":"46756e6374696f6e206d7573742062652063616c6c6564207468726f75676820","kind":"string","nodeType":"YulLiteral","src":"5633:34:50","type":"","value":"Function must be called through "}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5606:6:50"},"nodeType":"YulFunctionCall","src":"5606:62:50"},"nodeType":"YulExpressionStatement","src":"5606:62:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5688:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"5699:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5684:3:50"},"nodeType":"YulFunctionCall","src":"5684:18:50"},{"hexValue":"6163746976652070726f7879","kind":"string","nodeType":"YulLiteral","src":"5704:14:50","type":"","value":"active proxy"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5677:6:50"},"nodeType":"YulFunctionCall","src":"5677:42:50"},"nodeType":"YulExpressionStatement","src":"5677:42:50"},{"nodeType":"YulAssignment","src":"5728:27:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5740:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"5751:3:50","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5736:3:50"},"nodeType":"YulFunctionCall","src":"5736:19:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5728:4:50"}]}]},"name":"abi_encode_tuple_t_stringliteral_52f1ead4d9653e13afbd2e90ef2587c30187cd50b2e97d784e3f7a7541247434__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5504:9:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5518:4:50","type":""}],"src":"5353:408:50"},{"body":{"nodeType":"YulBlock","src":"5940:246:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5957:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"5968:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5950:6:50"},"nodeType":"YulFunctionCall","src":"5950:21:50"},"nodeType":"YulExpressionStatement","src":"5950:21:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5991:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"6002:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5987:3:50"},"nodeType":"YulFunctionCall","src":"5987:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"6007:2:50","type":"","value":"56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5980:6:50"},"nodeType":"YulFunctionCall","src":"5980:30:50"},"nodeType":"YulExpressionStatement","src":"5980:30:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6030:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"6041:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6026:3:50"},"nodeType":"YulFunctionCall","src":"6026:18:50"},{"hexValue":"555550535570677261646561626c653a206d757374206e6f742062652063616c","kind":"string","nodeType":"YulLiteral","src":"6046:34:50","type":"","value":"UUPSUpgradeable: must not be cal"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6019:6:50"},"nodeType":"YulFunctionCall","src":"6019:62:50"},"nodeType":"YulExpressionStatement","src":"6019:62:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6101:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"6112:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6097:3:50"},"nodeType":"YulFunctionCall","src":"6097:18:50"},{"hexValue":"6c6564207468726f7567682064656c656761746563616c6c","kind":"string","nodeType":"YulLiteral","src":"6117:26:50","type":"","value":"led through delegatecall"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6090:6:50"},"nodeType":"YulFunctionCall","src":"6090:54:50"},"nodeType":"YulExpressionStatement","src":"6090:54:50"},{"nodeType":"YulAssignment","src":"6153:27:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6165:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"6176:3:50","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6161:3:50"},"nodeType":"YulFunctionCall","src":"6161:19:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6153:4:50"}]}]},"name":"abi_encode_tuple_t_stringliteral_67f0151b4ad1dcfa0e3302a0cd6019f51582ef1807b37dceb00bd852a514f7f4__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5917:9:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5931:4:50","type":""}],"src":"5766:420:50"},{"body":{"nodeType":"YulBlock","src":"6272:103:50","statements":[{"body":{"nodeType":"YulBlock","src":"6318:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6327:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6330:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6320:6:50"},"nodeType":"YulFunctionCall","src":"6320:12:50"},"nodeType":"YulExpressionStatement","src":"6320:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"6293:7:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"6302:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6289:3:50"},"nodeType":"YulFunctionCall","src":"6289:23:50"},{"kind":"number","nodeType":"YulLiteral","src":"6314:2:50","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6285:3:50"},"nodeType":"YulFunctionCall","src":"6285:32:50"},"nodeType":"YulIf","src":"6282:52:50"},{"nodeType":"YulAssignment","src":"6343:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6359:9:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6353:5:50"},"nodeType":"YulFunctionCall","src":"6353:16:50"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"6343:6:50"}]}]},"name":"abi_decode_tuple_t_bytes32_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6238:9:50","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"6249:7:50","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"6261:6:50","type":""}],"src":"6191:184:50"},{"body":{"nodeType":"YulBlock","src":"6554:236:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6571:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"6582:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6564:6:50"},"nodeType":"YulFunctionCall","src":"6564:21:50"},"nodeType":"YulExpressionStatement","src":"6564:21:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6605:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"6616:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6601:3:50"},"nodeType":"YulFunctionCall","src":"6601:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"6621:2:50","type":"","value":"46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6594:6:50"},"nodeType":"YulFunctionCall","src":"6594:30:50"},"nodeType":"YulExpressionStatement","src":"6594:30:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6644:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"6655:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6640:3:50"},"nodeType":"YulFunctionCall","src":"6640:18:50"},{"hexValue":"45524331393637557067726164653a206e657720696d706c656d656e74617469","kind":"string","nodeType":"YulLiteral","src":"6660:34:50","type":"","value":"ERC1967Upgrade: new implementati"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6633:6:50"},"nodeType":"YulFunctionCall","src":"6633:62:50"},"nodeType":"YulExpressionStatement","src":"6633:62:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6715:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"6726:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6711:3:50"},"nodeType":"YulFunctionCall","src":"6711:18:50"},{"hexValue":"6f6e206973206e6f742055555053","kind":"string","nodeType":"YulLiteral","src":"6731:16:50","type":"","value":"on is not UUPS"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6704:6:50"},"nodeType":"YulFunctionCall","src":"6704:44:50"},"nodeType":"YulExpressionStatement","src":"6704:44:50"},{"nodeType":"YulAssignment","src":"6757:27:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6769:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"6780:3:50","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6765:3:50"},"nodeType":"YulFunctionCall","src":"6765:19:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6757:4:50"}]}]},"name":"abi_encode_tuple_t_stringliteral_8e8e2fbcb586f700b5b14e2c4a650c8d83b9773c31c5fe8962070ea544e11f24__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6531:9:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6545:4:50","type":""}],"src":"6380:410:50"},{"body":{"nodeType":"YulBlock","src":"6969:231:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6986:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"6997:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6979:6:50"},"nodeType":"YulFunctionCall","src":"6979:21:50"},"nodeType":"YulExpressionStatement","src":"6979:21:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7020:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"7031:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7016:3:50"},"nodeType":"YulFunctionCall","src":"7016:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"7036:2:50","type":"","value":"41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7009:6:50"},"nodeType":"YulFunctionCall","src":"7009:30:50"},"nodeType":"YulExpressionStatement","src":"7009:30:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7059:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"7070:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7055:3:50"},"nodeType":"YulFunctionCall","src":"7055:18:50"},{"hexValue":"45524331393637557067726164653a20756e737570706f727465642070726f78","kind":"string","nodeType":"YulLiteral","src":"7075:34:50","type":"","value":"ERC1967Upgrade: unsupported prox"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7048:6:50"},"nodeType":"YulFunctionCall","src":"7048:62:50"},"nodeType":"YulExpressionStatement","src":"7048:62:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7130:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"7141:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7126:3:50"},"nodeType":"YulFunctionCall","src":"7126:18:50"},{"hexValue":"6961626c6555554944","kind":"string","nodeType":"YulLiteral","src":"7146:11:50","type":"","value":"iableUUID"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7119:6:50"},"nodeType":"YulFunctionCall","src":"7119:39:50"},"nodeType":"YulExpressionStatement","src":"7119:39:50"},{"nodeType":"YulAssignment","src":"7167:27:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7179:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"7190:3:50","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7175:3:50"},"nodeType":"YulFunctionCall","src":"7175:19:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7167:4:50"}]}]},"name":"abi_encode_tuple_t_stringliteral_76b6b6debfc5febf101145a79ecf0b0d2e89e397dfdab2bca99888370411152c__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6946:9:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6960:4:50","type":""}],"src":"6795:405:50"},{"body":{"nodeType":"YulBlock","src":"7379:233:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7396:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"7407:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7389:6:50"},"nodeType":"YulFunctionCall","src":"7389:21:50"},"nodeType":"YulExpressionStatement","src":"7389:21:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7430:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"7441:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7426:3:50"},"nodeType":"YulFunctionCall","src":"7426:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"7446:2:50","type":"","value":"43"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7419:6:50"},"nodeType":"YulFunctionCall","src":"7419:30:50"},"nodeType":"YulExpressionStatement","src":"7419:30:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7469:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"7480:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7465:3:50"},"nodeType":"YulFunctionCall","src":"7465:18:50"},{"hexValue":"496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069","kind":"string","nodeType":"YulLiteral","src":"7485:34:50","type":"","value":"Initializable: contract is not i"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7458:6:50"},"nodeType":"YulFunctionCall","src":"7458:62:50"},"nodeType":"YulExpressionStatement","src":"7458:62:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7540:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"7551:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7536:3:50"},"nodeType":"YulFunctionCall","src":"7536:18:50"},{"hexValue":"6e697469616c697a696e67","kind":"string","nodeType":"YulLiteral","src":"7556:13:50","type":"","value":"nitializing"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7529:6:50"},"nodeType":"YulFunctionCall","src":"7529:41:50"},"nodeType":"YulExpressionStatement","src":"7529:41:50"},{"nodeType":"YulAssignment","src":"7579:27:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7591:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"7602:3:50","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7587:3:50"},"nodeType":"YulFunctionCall","src":"7587:19:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7579:4:50"}]}]},"name":"abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7356:9:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7370:4:50","type":""}],"src":"7205:407:50"},{"body":{"nodeType":"YulBlock","src":"7830:472:50","statements":[{"nodeType":"YulVariableDeclaration","src":"7840:52:50","value":{"kind":"number","nodeType":"YulLiteral","src":"7850:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"7844:2:50","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7908:9:50"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7923:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"7931:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7919:3:50"},"nodeType":"YulFunctionCall","src":"7919:15:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7901:6:50"},"nodeType":"YulFunctionCall","src":"7901:34:50"},"nodeType":"YulExpressionStatement","src":"7901:34:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7955:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"7966:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7951:3:50"},"nodeType":"YulFunctionCall","src":"7951:18:50"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"7975:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"7983:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7971:3:50"},"nodeType":"YulFunctionCall","src":"7971:15:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7944:6:50"},"nodeType":"YulFunctionCall","src":"7944:43:50"},"nodeType":"YulExpressionStatement","src":"7944:43:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8007:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"8018:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8003:3:50"},"nodeType":"YulFunctionCall","src":"8003:18:50"},{"name":"value2","nodeType":"YulIdentifier","src":"8023:6:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7996:6:50"},"nodeType":"YulFunctionCall","src":"7996:34:50"},"nodeType":"YulExpressionStatement","src":"7996:34:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8050:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"8061:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8046:3:50"},"nodeType":"YulFunctionCall","src":"8046:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"8066:3:50","type":"","value":"128"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8039:6:50"},"nodeType":"YulFunctionCall","src":"8039:31:50"},"nodeType":"YulExpressionStatement","src":"8039:31:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8090:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"8101:3:50","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8086:3:50"},"nodeType":"YulFunctionCall","src":"8086:19:50"},{"name":"value4","nodeType":"YulIdentifier","src":"8107:6:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8079:6:50"},"nodeType":"YulFunctionCall","src":"8079:35:50"},"nodeType":"YulExpressionStatement","src":"8079:35:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8140:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"8151:3:50","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8136:3:50"},"nodeType":"YulFunctionCall","src":"8136:19:50"},{"name":"value3","nodeType":"YulIdentifier","src":"8157:6:50"},{"name":"value4","nodeType":"YulIdentifier","src":"8165:6:50"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"8123:12:50"},"nodeType":"YulFunctionCall","src":"8123:49:50"},"nodeType":"YulExpressionStatement","src":"8123:49:50"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8196:9:50"},{"name":"value4","nodeType":"YulIdentifier","src":"8207:6:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8192:3:50"},"nodeType":"YulFunctionCall","src":"8192:22:50"},{"kind":"number","nodeType":"YulLiteral","src":"8216:3:50","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8188:3:50"},"nodeType":"YulFunctionCall","src":"8188:32:50"},{"kind":"number","nodeType":"YulLiteral","src":"8222:1:50","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8181:6:50"},"nodeType":"YulFunctionCall","src":"8181:43:50"},"nodeType":"YulExpressionStatement","src":"8181:43:50"},{"nodeType":"YulAssignment","src":"8233:63:50","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8249:9:50"},{"arguments":[{"arguments":[{"name":"value4","nodeType":"YulIdentifier","src":"8268:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"8276:2:50","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8264:3:50"},"nodeType":"YulFunctionCall","src":"8264:15:50"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8285:2:50","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"8281:3:50"},"nodeType":"YulFunctionCall","src":"8281:7:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8260:3:50"},"nodeType":"YulFunctionCall","src":"8260:29:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8245:3:50"},"nodeType":"YulFunctionCall","src":"8245:45:50"},{"kind":"number","nodeType":"YulLiteral","src":"8292:3:50","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8241:3:50"},"nodeType":"YulFunctionCall","src":"8241:55:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"8233:4:50"}]}]},"name":"abi_encode_tuple_t_address_t_address_t_bytes32_t_bytes_calldata_ptr__to_t_address_t_address_t_bytes32_t_bytes_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7767:9:50","type":""},{"name":"value4","nodeType":"YulTypedName","src":"7778:6:50","type":""},{"name":"value3","nodeType":"YulTypedName","src":"7786:6:50","type":""},{"name":"value2","nodeType":"YulTypedName","src":"7794:6:50","type":""},{"name":"value1","nodeType":"YulTypedName","src":"7802:6:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"7810:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7821:4:50","type":""}],"src":"7617:685:50"},{"body":{"nodeType":"YulBlock","src":"8385:199:50","statements":[{"body":{"nodeType":"YulBlock","src":"8431:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8440:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8443:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8433:6:50"},"nodeType":"YulFunctionCall","src":"8433:12:50"},"nodeType":"YulExpressionStatement","src":"8433:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"8406:7:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"8415:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"8402:3:50"},"nodeType":"YulFunctionCall","src":"8402:23:50"},{"kind":"number","nodeType":"YulLiteral","src":"8427:2:50","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"8398:3:50"},"nodeType":"YulFunctionCall","src":"8398:32:50"},"nodeType":"YulIf","src":"8395:52:50"},{"nodeType":"YulVariableDeclaration","src":"8456:29:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8475:9:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"8469:5:50"},"nodeType":"YulFunctionCall","src":"8469:16:50"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"8460:5:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"8538:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8547:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8550:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8540:6:50"},"nodeType":"YulFunctionCall","src":"8540:12:50"},"nodeType":"YulExpressionStatement","src":"8540:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8507:5:50"},{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8528:5:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"8521:6:50"},"nodeType":"YulFunctionCall","src":"8521:13:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"8514:6:50"},"nodeType":"YulFunctionCall","src":"8514:21:50"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"8504:2:50"},"nodeType":"YulFunctionCall","src":"8504:32:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"8497:6:50"},"nodeType":"YulFunctionCall","src":"8497:40:50"},"nodeType":"YulIf","src":"8494:60:50"},{"nodeType":"YulAssignment","src":"8563:15:50","value":{"name":"value","nodeType":"YulIdentifier","src":"8573:5:50"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"8563:6:50"}]}]},"name":"abi_decode_tuple_t_bool_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8351:9:50","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"8362:7:50","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"8374:6:50","type":""}],"src":"8307:277:50"},{"body":{"nodeType":"YulBlock","src":"8774:294:50","statements":[{"nodeType":"YulAssignment","src":"8784:27:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8796:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"8807:3:50","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8792:3:50"},"nodeType":"YulFunctionCall","src":"8792:19:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"8784:4:50"}]},{"nodeType":"YulVariableDeclaration","src":"8820:52:50","value":{"kind":"number","nodeType":"YulLiteral","src":"8830:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"8824:2:50","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8888:9:50"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"8903:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"8911:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8899:3:50"},"nodeType":"YulFunctionCall","src":"8899:15:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8881:6:50"},"nodeType":"YulFunctionCall","src":"8881:34:50"},"nodeType":"YulExpressionStatement","src":"8881:34:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8935:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"8946:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8931:3:50"},"nodeType":"YulFunctionCall","src":"8931:18:50"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"8955:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"8963:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8951:3:50"},"nodeType":"YulFunctionCall","src":"8951:15:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8924:6:50"},"nodeType":"YulFunctionCall","src":"8924:43:50"},"nodeType":"YulExpressionStatement","src":"8924:43:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8987:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"8998:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8983:3:50"},"nodeType":"YulFunctionCall","src":"8983:18:50"},{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"9007:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"9015:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"9003:3:50"},"nodeType":"YulFunctionCall","src":"9003:15:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8976:6:50"},"nodeType":"YulFunctionCall","src":"8976:43:50"},"nodeType":"YulExpressionStatement","src":"8976:43:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9039:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"9050:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9035:3:50"},"nodeType":"YulFunctionCall","src":"9035:18:50"},{"name":"value3","nodeType":"YulIdentifier","src":"9055:6:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9028:6:50"},"nodeType":"YulFunctionCall","src":"9028:34:50"},"nodeType":"YulExpressionStatement","src":"9028:34:50"}]},"name":"abi_encode_tuple_t_address_t_address_t_address_t_bytes32__to_t_address_t_address_t_address_t_bytes32__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8719:9:50","type":""},{"name":"value3","nodeType":"YulTypedName","src":"8730:6:50","type":""},{"name":"value2","nodeType":"YulTypedName","src":"8738:6:50","type":""},{"name":"value1","nodeType":"YulTypedName","src":"8746:6:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"8754:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"8765:4:50","type":""}],"src":"8589:479:50"},{"body":{"nodeType":"YulBlock","src":"9247:235:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9264:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"9275:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9257:6:50"},"nodeType":"YulFunctionCall","src":"9257:21:50"},"nodeType":"YulExpressionStatement","src":"9257:21:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9298:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"9309:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9294:3:50"},"nodeType":"YulFunctionCall","src":"9294:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"9314:2:50","type":"","value":"45"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9287:6:50"},"nodeType":"YulFunctionCall","src":"9287:30:50"},"nodeType":"YulExpressionStatement","src":"9287:30:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9337:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"9348:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9333:3:50"},"nodeType":"YulFunctionCall","src":"9333:18:50"},{"hexValue":"455243313936373a206e657720696d706c656d656e746174696f6e206973206e","kind":"string","nodeType":"YulLiteral","src":"9353:34:50","type":"","value":"ERC1967: new implementation is n"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9326:6:50"},"nodeType":"YulFunctionCall","src":"9326:62:50"},"nodeType":"YulExpressionStatement","src":"9326:62:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9408:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"9419:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9404:3:50"},"nodeType":"YulFunctionCall","src":"9404:18:50"},{"hexValue":"6f74206120636f6e7472616374","kind":"string","nodeType":"YulLiteral","src":"9424:15:50","type":"","value":"ot a contract"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9397:6:50"},"nodeType":"YulFunctionCall","src":"9397:43:50"},"nodeType":"YulExpressionStatement","src":"9397:43:50"},{"nodeType":"YulAssignment","src":"9449:27:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9461:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"9472:3:50","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9457:3:50"},"nodeType":"YulFunctionCall","src":"9457:19:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"9449:4:50"}]}]},"name":"abi_encode_tuple_t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9224:9:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"9238:4:50","type":""}],"src":"9073:409:50"},{"body":{"nodeType":"YulBlock","src":"9553:184:50","statements":[{"nodeType":"YulVariableDeclaration","src":"9563:10:50","value":{"kind":"number","nodeType":"YulLiteral","src":"9572:1:50","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"9567:1:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"9632:63:50","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"9657:3:50"},{"name":"i","nodeType":"YulIdentifier","src":"9662:1:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9653:3:50"},"nodeType":"YulFunctionCall","src":"9653:11:50"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"9676:3:50"},{"name":"i","nodeType":"YulIdentifier","src":"9681:1:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9672:3:50"},"nodeType":"YulFunctionCall","src":"9672:11:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"9666:5:50"},"nodeType":"YulFunctionCall","src":"9666:18:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9646:6:50"},"nodeType":"YulFunctionCall","src":"9646:39:50"},"nodeType":"YulExpressionStatement","src":"9646:39:50"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"9593:1:50"},{"name":"length","nodeType":"YulIdentifier","src":"9596:6:50"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"9590:2:50"},"nodeType":"YulFunctionCall","src":"9590:13:50"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"9604:19:50","statements":[{"nodeType":"YulAssignment","src":"9606:15:50","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"9615:1:50"},{"kind":"number","nodeType":"YulLiteral","src":"9618:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9611:3:50"},"nodeType":"YulFunctionCall","src":"9611:10:50"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"9606:1:50"}]}]},"pre":{"nodeType":"YulBlock","src":"9586:3:50","statements":[]},"src":"9582:113:50"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"9715:3:50"},{"name":"length","nodeType":"YulIdentifier","src":"9720:6:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9711:3:50"},"nodeType":"YulFunctionCall","src":"9711:16:50"},{"kind":"number","nodeType":"YulLiteral","src":"9729:1:50","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9704:6:50"},"nodeType":"YulFunctionCall","src":"9704:27:50"},"nodeType":"YulExpressionStatement","src":"9704:27:50"}]},"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"9531:3:50","type":""},{"name":"dst","nodeType":"YulTypedName","src":"9536:3:50","type":""},{"name":"length","nodeType":"YulTypedName","src":"9541:6:50","type":""}],"src":"9487:250:50"},{"body":{"nodeType":"YulBlock","src":"9879:150:50","statements":[{"nodeType":"YulVariableDeclaration","src":"9889:27:50","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"9909:6:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"9903:5:50"},"nodeType":"YulFunctionCall","src":"9903:13:50"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"9893:6:50","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"9964:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"9972:4:50","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9960:3:50"},"nodeType":"YulFunctionCall","src":"9960:17:50"},{"name":"pos","nodeType":"YulIdentifier","src":"9979:3:50"},{"name":"length","nodeType":"YulIdentifier","src":"9984:6:50"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"9925:34:50"},"nodeType":"YulFunctionCall","src":"9925:66:50"},"nodeType":"YulExpressionStatement","src":"9925:66:50"},{"nodeType":"YulAssignment","src":"10000:23:50","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"10011:3:50"},{"name":"length","nodeType":"YulIdentifier","src":"10016:6:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10007:3:50"},"nodeType":"YulFunctionCall","src":"10007:16:50"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"10000:3:50"}]}]},"name":"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"9855:3:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"9860:6:50","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"9871:3:50","type":""}],"src":"9742:287:50"},{"body":{"nodeType":"YulBlock","src":"10208:179:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10225:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"10236:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10218:6:50"},"nodeType":"YulFunctionCall","src":"10218:21:50"},"nodeType":"YulExpressionStatement","src":"10218:21:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10259:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"10270:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10255:3:50"},"nodeType":"YulFunctionCall","src":"10255:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"10275:2:50","type":"","value":"29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10248:6:50"},"nodeType":"YulFunctionCall","src":"10248:30:50"},"nodeType":"YulExpressionStatement","src":"10248:30:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10298:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"10309:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10294:3:50"},"nodeType":"YulFunctionCall","src":"10294:18:50"},{"hexValue":"416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374","kind":"string","nodeType":"YulLiteral","src":"10314:31:50","type":"","value":"Address: call to non-contract"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10287:6:50"},"nodeType":"YulFunctionCall","src":"10287:59:50"},"nodeType":"YulExpressionStatement","src":"10287:59:50"},{"nodeType":"YulAssignment","src":"10355:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10367:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"10378:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10363:3:50"},"nodeType":"YulFunctionCall","src":"10363:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"10355:4:50"}]}]},"name":"abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"10185:9:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"10199:4:50","type":""}],"src":"10034:353:50"},{"body":{"nodeType":"YulBlock","src":"10513:275:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10530:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"10541:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10523:6:50"},"nodeType":"YulFunctionCall","src":"10523:21:50"},"nodeType":"YulExpressionStatement","src":"10523:21:50"},{"nodeType":"YulVariableDeclaration","src":"10553:27:50","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"10573:6:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"10567:5:50"},"nodeType":"YulFunctionCall","src":"10567:13:50"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"10557:6:50","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10600:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"10611:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10596:3:50"},"nodeType":"YulFunctionCall","src":"10596:18:50"},{"name":"length","nodeType":"YulIdentifier","src":"10616:6:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10589:6:50"},"nodeType":"YulFunctionCall","src":"10589:34:50"},"nodeType":"YulExpressionStatement","src":"10589:34:50"},{"expression":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"10671:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"10679:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10667:3:50"},"nodeType":"YulFunctionCall","src":"10667:15:50"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10688:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"10699:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10684:3:50"},"nodeType":"YulFunctionCall","src":"10684:18:50"},{"name":"length","nodeType":"YulIdentifier","src":"10704:6:50"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"10632:34:50"},"nodeType":"YulFunctionCall","src":"10632:79:50"},"nodeType":"YulExpressionStatement","src":"10632:79:50"},{"nodeType":"YulAssignment","src":"10720:62:50","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10736:9:50"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"10755:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"10763:2:50","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10751:3:50"},"nodeType":"YulFunctionCall","src":"10751:15:50"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10772:2:50","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"10768:3:50"},"nodeType":"YulFunctionCall","src":"10768:7:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"10747:3:50"},"nodeType":"YulFunctionCall","src":"10747:29:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10732:3:50"},"nodeType":"YulFunctionCall","src":"10732:45:50"},{"kind":"number","nodeType":"YulLiteral","src":"10779:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10728:3:50"},"nodeType":"YulFunctionCall","src":"10728:54:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"10720:4:50"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"10482:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"10493:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"10504:4:50","type":""}],"src":"10392:396:50"}]},"contents":"{\n { }\n function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n if iszero(eq(value, and(value, shl(224, 0xffffffff)))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function abi_decode_tuple_t_uint16(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n if iszero(eq(value, and(value, 0xffff))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 96)\n let pos := headStart\n pos := headStart\n let srcPtr := value0\n let i := 0\n for { } lt(i, 0x03) { i := add(i, 1) }\n {\n mstore(pos, and(mload(srcPtr), 0xff))\n let _1 := 0x20\n pos := add(pos, _1)\n srcPtr := add(srcPtr, _1)\n }\n }\n function validator_revert_address(value)\n {\n if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n }\n function abi_encode_tuple_t_contract$_IDAO_$2538__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_encode_tuple_t_enum$_PluginType_$3994__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n if iszero(lt(value0, 3))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x21)\n revert(0, 0x24)\n }\n mstore(headStart, value0)\n }\n function panic_error_0x41()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function abi_decode_tuple_t_addresst_bytes_memory_ptr(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n let offset := calldataload(add(headStart, 32))\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n let _2 := add(headStart, offset)\n if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n let _3 := calldataload(_2)\n if gt(_3, _1) { panic_error_0x41() }\n let _4 := not(31)\n let memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n mstore(memPtr, _3)\n if gt(add(add(_2, _3), 32), dataEnd) { revert(0, 0) }\n calldatacopy(add(memPtr, 32), add(_2, 32), _3)\n mstore(add(add(memPtr, _3), 32), 0)\n value1 := memPtr\n }\n function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_decode_tuple_t_contract$_IDAO_$2538(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n }\n function abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 46)\n mstore(add(headStart, 64), \"Initializable: contract is alrea\")\n mstore(add(headStart, 96), \"dy initialized\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xff))\n }\n function abi_encode_tuple_t_stringliteral_36e108fa7a809b52ab1951dd91c117a7bc9ac5250bdf1aa162d4e104f7edf9eb__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 44)\n mstore(add(headStart, 64), \"Function must be called through \")\n mstore(add(headStart, 96), \"delegatecall\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_52f1ead4d9653e13afbd2e90ef2587c30187cd50b2e97d784e3f7a7541247434__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 44)\n mstore(add(headStart, 64), \"Function must be called through \")\n mstore(add(headStart, 96), \"active proxy\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_67f0151b4ad1dcfa0e3302a0cd6019f51582ef1807b37dceb00bd852a514f7f4__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 56)\n mstore(add(headStart, 64), \"UUPSUpgradeable: must not be cal\")\n mstore(add(headStart, 96), \"led through delegatecall\")\n tail := add(headStart, 128)\n }\n function abi_decode_tuple_t_bytes32_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := mload(headStart)\n }\n function abi_encode_tuple_t_stringliteral_8e8e2fbcb586f700b5b14e2c4a650c8d83b9773c31c5fe8962070ea544e11f24__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 46)\n mstore(add(headStart, 64), \"ERC1967Upgrade: new implementati\")\n mstore(add(headStart, 96), \"on is not UUPS\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_76b6b6debfc5febf101145a79ecf0b0d2e89e397dfdab2bca99888370411152c__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 41)\n mstore(add(headStart, 64), \"ERC1967Upgrade: unsupported prox\")\n mstore(add(headStart, 96), \"iableUUID\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 43)\n mstore(add(headStart, 64), \"Initializable: contract is not i\")\n mstore(add(headStart, 96), \"nitializing\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_address_t_address_t_bytes32_t_bytes_calldata_ptr__to_t_address_t_address_t_bytes32_t_bytes_memory_ptr__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n {\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n mstore(add(headStart, 64), value2)\n mstore(add(headStart, 96), 128)\n mstore(add(headStart, 128), value4)\n calldatacopy(add(headStart, 160), value3, value4)\n mstore(add(add(headStart, value4), 160), 0)\n tail := add(add(headStart, and(add(value4, 31), not(31))), 160)\n }\n function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := mload(headStart)\n if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_address_t_address_t_address_t_bytes32__to_t_address_t_address_t_address_t_bytes32__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n {\n tail := add(headStart, 128)\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n mstore(add(headStart, 64), and(value2, _1))\n mstore(add(headStart, 96), value3)\n }\n function abi_encode_tuple_t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 45)\n mstore(add(headStart, 64), \"ERC1967: new implementation is n\")\n mstore(add(headStart, 96), \"ot a contract\")\n tail := add(headStart, 128)\n }\n function copy_memory_to_memory_with_cleanup(src, dst, length)\n {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n mstore(add(dst, length), 0)\n }\n function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n {\n let length := mload(value0)\n copy_memory_to_memory_with_cleanup(add(value0, 0x20), pos, length)\n end := add(pos, length)\n }\n function abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 29)\n mstore(add(headStart, 64), \"Address: call to non-contract\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n mstore(headStart, 32)\n let length := mload(value0)\n mstore(add(headStart, 32), length)\n copy_memory_to_memory_with_cleanup(add(value0, 32), add(headStart, 64), length)\n tail := add(add(headStart, and(add(length, 31), not(31))), 64)\n }\n}","id":50,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{"554":[{"length":32,"start":1199},{"length":32,"start":1332},{"length":32,"start":1578},{"length":32,"start":1711},{"length":32,"start":1945}]},"linkReferences":{},"object":"6080604052600436106100f35760003560e01c806352d1902d1161008a578063c4d66de811610059578063c4d66de814610278578063c9c4bfca14610298578063d4b83992146102cc578063efe51cca146102ec57600080fd5b806352d1902d146102175780635c60da1b1461022c5780636accab8c14610241578063776d1a011461025857600080fd5b80633659cfe6116100c65780633659cfe6146101965780634162169f146101b657806341de6830146101e85780634f1ef2861461020457600080fd5b806301ffc9a7146100f8578063039a8c501461012d5780632491118d1461014f5780632ae9c60014610174575b600080fd5b34801561010457600080fd5b50610118610113366004611029565b610303565b60405190151581526020015b60405180910390f35b34801561013957600080fd5b5061014d610148366004611053565b61036f565b005b34801561015b57600080fd5b5061016661012f5481565b604051908152602001610124565b34801561018057600080fd5b5061018961047b565b6040516101249190611077565b3480156101a257600080fd5b5061014d6101b13660046110c0565b6104a5565b3480156101c257600080fd5b5060c9546001600160a01b03165b6040516001600160a01b039091168152602001610124565b3480156101f457600080fd5b50600060405161012491906110dd565b61014d61021236600461111b565b610620565b34801561022357600080fd5b5061016661078c565b34801561023857600080fd5b506101d0610851565b34801561024d57600080fd5b5061016661012d5481565b34801561026457600080fd5b5061014d6102733660046110c0565b610889565b34801561028457600080fd5b5061014d6102933660046110c0565b6108e8565b3480156102a457600080fd5b506101667f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f581565b3480156102d857600080fd5b5060fb546101d0906001600160a01b031681565b3480156102f857600080fd5b5061016661012e5481565b60006001600160e01b0319821663041de68360e41b148061033357506001600160e01b03198216621574e360e91b145b8061034e57506001600160e01b031982166352d1902d60e01b145b8061036957506301ffc9a760e01b6001600160e01b03198316145b92915050565b600054600390610100900460ff16158015610391575060005460ff8083169116105b6103f95760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805461ffff191660ff831617610100179055600261ffff8316101561042157600261012e555b60038261ffff16101561043557600361012f555b6000805461ff001916905560405160ff821681527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b61048361100b565b5060408051606081018252600181526004602082015260009181019190915290565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036105325760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b60648201526084016103f0565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661058d7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b0316146105f85760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b60648201526084016103f0565b610601816109da565b6040805160008082526020820190925261061d91839190610a17565b50565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036106ad5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b60648201526084016103f0565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166107087f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b0316146107735760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b60648201526084016103f0565b61077c826109da565b61078882826001610a17565b5050565b6000306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461082c5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016103f0565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b60006108847f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b60fb80546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d690600090a35050565b600054600390610100900460ff1615801561090a575060005460ff8083169116105b61096d5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016103f0565b6000805461ffff191660ff83161761010017905561098a82610bbc565b600161012d55600261012e55600361012f556000805461ff001916905560405160ff821681527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200161046f565b60c9547f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f590610788906001600160a01b0316303384600036610c30565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610a4f57610a4a83610cec565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610aa9575060408051601f3d908101601f19168201909252610aa6918101906111df565b60015b610b1b5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201527f6f6e206973206e6f74205555505300000000000000000000000000000000000060648201526084016103f0565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114610bb05760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f7860448201527f6961626c6555554944000000000000000000000000000000000000000000000060648201526084016103f0565b50610a4a838383610db7565b600054610100900460ff16610c275760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103f0565b61061d81610de2565b604051637ef7c88360e11b81526001600160a01b0387169063fdef910690610c6490889088908890889088906004016111f8565b602060405180830381865afa158015610c81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca5919061124c565b610ce457604051630cb6f8ed60e21b81526001600160a01b038088166004830152808716602483015285166044820152606481018490526084016103f0565b505050505050565b6001600160a01b0381163b610d695760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e74726163740000000000000000000000000000000000000060648201526084016103f0565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610dc083610e7c565b600082511180610dcd5750805b15610a4a57610ddc8383610ebc565b50505050565b600054610100900460ff16610e4d5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103f0565b60c9805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610e8581610cec565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060610ee183836040518060600160405280602781526020016112e260279139610ee8565b9392505050565b6060600080856001600160a01b031685604051610f059190611292565b600060405180830381855af49150503d8060008114610f40576040519150601f19603f3d011682016040523d82523d6000602084013e610f45565b606091505b5091509150610f5686838387610f60565b9695505050505050565b60608315610fcf578251600003610fc8576001600160a01b0385163b610fc85760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016103f0565b5081610fd9565b610fd98383610fe1565b949350505050565b815115610ff15781518083602001fd5b8060405162461bcd60e51b81526004016103f091906112ae565b60405180606001604052806003906020820280368337509192915050565b60006020828403121561103b57600080fd5b81356001600160e01b031981168114610ee157600080fd5b60006020828403121561106557600080fd5b813561ffff81168114610ee157600080fd5b60608101818360005b60038110156110a257815160ff16835260209283019290910190600101611080565b50505092915050565b6001600160a01b038116811461061d57600080fd5b6000602082840312156110d257600080fd5b8135610ee1816110ab565b60208101600383106110ff57634e487b7160e01b600052602160045260246000fd5b91905290565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561112e57600080fd5b8235611139816110ab565b9150602083013567ffffffffffffffff8082111561115657600080fd5b818501915085601f83011261116a57600080fd5b81358181111561117c5761117c611105565b604051601f8201601f19908116603f011681019083821181831017156111a4576111a4611105565b816040528281528860208487010111156111bd57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6000602082840312156111f157600080fd5b5051919050565b60006001600160a01b03808816835280871660208401525084604083015260806060830152826080830152828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b60006020828403121561125e57600080fd5b81518015158114610ee157600080fd5b60005b83811015611289578181015183820152602001611271565b50506000910152565b600082516112a481846020870161126e565b9190910192915050565b60208152600082518060208401526112cd81604085016020870161126e565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xF3 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x52D1902D GT PUSH2 0x8A JUMPI DUP1 PUSH4 0xC4D66DE8 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0x278 JUMPI DUP1 PUSH4 0xC9C4BFCA EQ PUSH2 0x298 JUMPI DUP1 PUSH4 0xD4B83992 EQ PUSH2 0x2CC JUMPI DUP1 PUSH4 0xEFE51CCA EQ PUSH2 0x2EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x52D1902D EQ PUSH2 0x217 JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0x22C JUMPI DUP1 PUSH4 0x6ACCAB8C EQ PUSH2 0x241 JUMPI DUP1 PUSH4 0x776D1A01 EQ PUSH2 0x258 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x3659CFE6 GT PUSH2 0xC6 JUMPI DUP1 PUSH4 0x3659CFE6 EQ PUSH2 0x196 JUMPI DUP1 PUSH4 0x4162169F EQ PUSH2 0x1B6 JUMPI DUP1 PUSH4 0x41DE6830 EQ PUSH2 0x1E8 JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x204 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xF8 JUMPI DUP1 PUSH4 0x39A8C50 EQ PUSH2 0x12D JUMPI DUP1 PUSH4 0x2491118D EQ PUSH2 0x14F JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0x174 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x104 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x118 PUSH2 0x113 CALLDATASIZE PUSH1 0x4 PUSH2 0x1029 JUMP JUMPDEST PUSH2 0x303 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x139 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x14D PUSH2 0x148 CALLDATASIZE PUSH1 0x4 PUSH2 0x1053 JUMP JUMPDEST PUSH2 0x36F JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x15B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x166 PUSH2 0x12F SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x124 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x180 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x189 PUSH2 0x47B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x124 SWAP2 SWAP1 PUSH2 0x1077 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x14D PUSH2 0x1B1 CALLDATASIZE PUSH1 0x4 PUSH2 0x10C0 JUMP JUMPDEST PUSH2 0x4A5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1C2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xC9 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x124 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 PUSH1 0x40 MLOAD PUSH2 0x124 SWAP2 SWAP1 PUSH2 0x10DD JUMP JUMPDEST PUSH2 0x14D PUSH2 0x212 CALLDATASIZE PUSH1 0x4 PUSH2 0x111B JUMP JUMPDEST PUSH2 0x620 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x223 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x166 PUSH2 0x78C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x238 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1D0 PUSH2 0x851 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x24D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x166 PUSH2 0x12D SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x264 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x14D PUSH2 0x273 CALLDATASIZE PUSH1 0x4 PUSH2 0x10C0 JUMP JUMPDEST PUSH2 0x889 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x284 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x14D PUSH2 0x293 CALLDATASIZE PUSH1 0x4 PUSH2 0x10C0 JUMP JUMPDEST PUSH2 0x8E8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x166 PUSH32 0x821B6E3A557148015A918C89E5D092E878A69854A2D1A410635F771BD5A8A3F5 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xFB SLOAD PUSH2 0x1D0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x166 PUSH2 0x12E SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x41DE683 PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x333 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x34E JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x52D1902D PUSH1 0xE0 SHL EQ JUMPDEST DUP1 PUSH2 0x369 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x3 SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH2 0x391 JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF DUP1 DUP4 AND SWAP2 AND LT JUMPDEST PUSH2 0x3F9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x44 DUP3 ADD MSTORE PUSH14 0x191E481A5B9A5D1A585B1A5E9959 PUSH1 0x92 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH2 0xFFFF NOT AND PUSH1 0xFF DUP4 AND OR PUSH2 0x100 OR SWAP1 SSTORE PUSH1 0x2 PUSH2 0xFFFF DUP4 AND LT ISZERO PUSH2 0x421 JUMPI PUSH1 0x2 PUSH2 0x12E SSTORE JUMPDEST PUSH1 0x3 DUP3 PUSH2 0xFFFF AND LT ISZERO PUSH2 0x435 JUMPI PUSH1 0x3 PUSH2 0x12F SSTORE JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH1 0xFF DUP3 AND DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH2 0x483 PUSH2 0x100B JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x532 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x19195B1959D85D1958D85B1B PUSH1 0xA2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3F0 JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x58D PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x5F8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x6163746976652070726F7879 PUSH1 0xA0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3F0 JUMP JUMPDEST PUSH2 0x601 DUP2 PUSH2 0x9DA JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x61D SWAP2 DUP4 SWAP2 SWAP1 PUSH2 0xA17 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x6AD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x19195B1959D85D1958D85B1B PUSH1 0xA2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3F0 JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x708 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x773 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x6163746976652070726F7879 PUSH1 0xA0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3F0 JUMP JUMPDEST PUSH2 0x77C DUP3 PUSH2 0x9DA JUMP JUMPDEST PUSH2 0x788 DUP3 DUP3 PUSH1 0x1 PUSH2 0xA17 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x82C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x38 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x555550535570677261646561626C653A206D757374206E6F742062652063616C PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6C6564207468726F7567682064656C656761746563616C6C0000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3F0 JUMP JUMPDEST POP PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x884 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0xFB DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP2 SWAP1 DUP3 SWAP1 PUSH32 0x90CC2F570A6EB594B1580EA3E41247D2D73A55281889E86BD4EC2FC29C7E62D6 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x3 SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH2 0x90A JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF DUP1 DUP4 AND SWAP2 AND LT JUMPDEST PUSH2 0x96D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x44 DUP3 ADD MSTORE PUSH14 0x191E481A5B9A5D1A585B1A5E9959 PUSH1 0x92 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3F0 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH2 0xFFFF NOT AND PUSH1 0xFF DUP4 AND OR PUSH2 0x100 OR SWAP1 SSTORE PUSH2 0x98A DUP3 PUSH2 0xBBC JUMP JUMPDEST PUSH1 0x1 PUSH2 0x12D SSTORE PUSH1 0x2 PUSH2 0x12E SSTORE PUSH1 0x3 PUSH2 0x12F SSTORE PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH1 0xFF DUP3 AND DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH2 0x46F JUMP JUMPDEST PUSH1 0xC9 SLOAD PUSH32 0x821B6E3A557148015A918C89E5D092E878A69854A2D1A410635F771BD5A8A3F5 SWAP1 PUSH2 0x788 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ADDRESS CALLER DUP5 PUSH1 0x0 CALLDATASIZE PUSH2 0xC30 JUMP JUMPDEST PUSH32 0x4910FDFA16FED3260ED0E7147F7CC6DA11A60208B5B9406D12A635614FFD9143 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0xA4F JUMPI PUSH2 0xA4A DUP4 PUSH2 0xCEC JUMP JUMPDEST POP POP POP JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x52D1902D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0xAA9 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0xAA6 SWAP2 DUP2 ADD SWAP1 PUSH2 0x11DF JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0xB1B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524331393637557067726164653A206E657720696D706C656D656E74617469 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F6E206973206E6F742055555053000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3F0 JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC DUP2 EQ PUSH2 0xBB0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524331393637557067726164653A20756E737570706F727465642070726F78 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6961626C65555549440000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3F0 JUMP JUMPDEST POP PUSH2 0xA4A DUP4 DUP4 DUP4 PUSH2 0xDB7 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0xC27 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3F0 JUMP JUMPDEST PUSH2 0x61D DUP2 PUSH2 0xDE2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x7EF7C883 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0xFDEF9106 SWAP1 PUSH2 0xC64 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x11F8 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC81 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xCA5 SWAP2 SWAP1 PUSH2 0x124C JUMP JUMPDEST PUSH2 0xCE4 JUMPI PUSH1 0x40 MLOAD PUSH4 0xCB6F8ED PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND PUSH1 0x4 DUP4 ADD MSTORE DUP1 DUP8 AND PUSH1 0x24 DUP4 ADD MSTORE DUP6 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x84 ADD PUSH2 0x3F0 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND EXTCODESIZE PUSH2 0xD69 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313936373A206E657720696D706C656D656E746174696F6E206973206E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F74206120636F6E747261637400000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3F0 JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xDC0 DUP4 PUSH2 0xE7C JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD GT DUP1 PUSH2 0xDCD JUMPI POP DUP1 JUMPDEST ISZERO PUSH2 0xA4A JUMPI PUSH2 0xDDC DUP4 DUP4 PUSH2 0xEBC JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0xE4D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3F0 JUMP JUMPDEST PUSH1 0xC9 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xE85 DUP2 PUSH2 0xCEC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xEE1 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x12E2 PUSH1 0x27 SWAP2 CODECOPY PUSH2 0xEE8 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0xF05 SWAP2 SWAP1 PUSH2 0x1292 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xF40 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xF45 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0xF56 DUP7 DUP4 DUP4 DUP8 PUSH2 0xF60 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0xFCF JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0xFC8 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0xFC8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3F0 JUMP JUMPDEST POP DUP2 PUSH2 0xFD9 JUMP JUMPDEST PUSH2 0xFD9 DUP4 DUP4 PUSH2 0xFE1 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0xFF1 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3F0 SWAP2 SWAP1 PUSH2 0x12AE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x103B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0xEE1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1065 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH2 0xEE1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0x10A2 JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x1080 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x61D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x10D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xEE1 DUP2 PUSH2 0x10AB JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH1 0x3 DUP4 LT PUSH2 0x10FF JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 SWAP1 MSTORE SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x112E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x1139 DUP2 PUSH2 0x10AB JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1156 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x116A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x117C JUMPI PUSH2 0x117C PUSH2 0x1105 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x11A4 JUMPI PUSH2 0x11A4 PUSH2 0x1105 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x11BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x11F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND DUP4 MSTORE DUP1 DUP8 AND PUSH1 0x20 DUP5 ADD MSTORE POP DUP5 PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x80 PUSH1 0x60 DUP4 ADD MSTORE DUP3 PUSH1 0x80 DUP4 ADD MSTORE DUP3 DUP5 PUSH1 0xA0 DUP5 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0xA0 DUP5 DUP5 ADD ADD MSTORE PUSH1 0xA0 PUSH1 0x1F NOT PUSH1 0x1F DUP6 ADD AND DUP4 ADD ADD SWAP1 POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x125E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xEE1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1289 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1271 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x12A4 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x126E JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x12CD DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x126E JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A164 PUSH20 0x6F6C6343000811000A0000000000000000000000 ","sourceMap":"1334:546:31:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2810:366:40;;;;;;;;;;-1:-1:-1;2810:366:40;;;;;:::i;:::-;;:::i;:::-;;;470:14:50;;463:22;445:41;;433:2;418:18;2810:366:40;;;;;;;;1662:216:31;;;;;;;;;;-1:-1:-1;1662:216:31;;;;;:::i;:::-;;:::i;:::-;;1460:21;;;;;;;;;;;;;;;;;;;920:25:50;;;908:2;893:18;1460:21:31;774:177:50;631:98:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;3408:195:5:-;;;;;;;;;;-1:-1:-1;3408:195:5;;;;;:::i;:::-;;:::i;1200:70:35:-;;;;;;;;;;-1:-1:-1;1259:4:35;;-1:-1:-1;;;;;1259:4:35;1200:70;;;-1:-1:-1;;;;;2050:55:50;;;2032:74;;2020:2;2005:18;1200:70:35;1873:239:50;1710:103:40;;;;;;;;;;-1:-1:-1;1762:10:40;1710:103;;;;;;:::i;3922:220:5:-;;;;;;:::i;:::-;;:::i;3027:131::-;;;;;;;;;;;;;:::i;3457:100:40:-;;;;;;;;;;;;;:::i;1406:21:31:-;;;;;;;;;;;;;;;;2439:166:40;;;;;;;;;;-1:-1:-1;2439:166:40;;;;;:::i;:::-;;:::i;1488:168:31:-;;;;;;;;;;-1:-1:-1;1488:168:31;;;;;:::i;:::-;;:::i;1911:93:40:-;;;;;;;;;;;;1966:38;1911:93;;1293:21;;;;;;;;;;-1:-1:-1;1293:21:40;;;;-1:-1:-1;;;;;1293:21:40;;;1433::31;;;;;;;;;;;;;;;;2810:366:40;2896:4;-1:-1:-1;;;;;;2931:41:40;;-1:-1:-1;;;2931:41:40;;:107;;-1:-1:-1;;;;;;;2988:50:40;;-1:-1:-1;;;2988:50:40;2931:107;:185;;;-1:-1:-1;;;;;;;3054:62:40;;-1:-1:-1;;;3054:62:40;2931:185;:238;;;-1:-1:-1;;;;;;;;;;1189:51:10;;;3132:37:40;2912:257;2810:366;-1:-1:-1;;2810:366:40:o;1662:216:31:-;4882:13:4;;1732:1:31;;4882:13:4;;;;;4881:14;:40;;;;-1:-1:-1;4899:12:4;;:22;;;;:12;;:22;4881:40;4873:99;;;;-1:-1:-1;;;4873:99:4;;4538:2:50;4873:99:4;;;4520:21:50;4577:2;4557:18;;;4550:30;4616:34;4596:18;;;4589:62;-1:-1:-1;;;4667:18:50;;;4660:44;4721:19;;4873:99:4;;;;;;;;;4982:12;:22;;-1:-1:-1;;5014:20:4;4982:22;;;5014:20;4982:22;5014:20;;;1766:1:31::1;1749:18;::::0;::::1;;1745:59;;;1792:1;1783:6;:10:::0;1745:59:::1;1834:1;1817:14;:18;;;1813:59;;;1860:1;1851:6;:10:::0;1813:59:::1;5071:5:4::0;5055:21;;-1:-1:-1;;5055:21:4;;;5091:20;;4923:4:50;4911:17;;4893:36;;5091:20:4;;4881:2:50;4866:18;5091:20:4;;;;;;;;1662:216:31;;:::o;631:98:49:-;679:15;;:::i;:::-;-1:-1:-1;706:16:49;;;;;;;;714:1;706:16;;717:1;706:16;;;;-1:-1:-1;706:16:49;;;;;;;;631:98::o;3408:195:5:-;-1:-1:-1;;;;;1764:6:5;1747:23;1755:4;1747:23;1739:80;;;;-1:-1:-1;;;1739:80:5;;5142:2:50;1739:80:5;;;5124:21:50;5181:2;5161:18;;;5154:30;5220:34;5200:18;;;5193:62;-1:-1:-1;;;5271:18:50;;;5264:42;5323:19;;1739:80:5;4940:408:50;1739:80:5;1861:6;-1:-1:-1;;;;;1837:30:5;:20;1180:66:2;1557:65;-1:-1:-1;;;;;1557:65:2;;1478:151;1837:20:5;-1:-1:-1;;;;;1837:30:5;;1829:87;;;;-1:-1:-1;;;1829:87:5;;5555:2:50;1829:87:5;;;5537:21:50;5594:2;5574:18;;;5567:30;5633:34;5613:18;;;5606:62;-1:-1:-1;;;5684:18:50;;;5677:42;5736:19;;1829:87:5;5353:408:50;1829:87:5;3489:36:::1;3507:17;3489;:36::i;:::-;3576:12;::::0;;3586:1:::1;3576:12:::0;;;::::1;::::0;::::1;::::0;;;3535:61:::1;::::0;3557:17;;3576:12;3535:21:::1;:61::i;:::-;3408:195:::0;:::o;3922:220::-;-1:-1:-1;;;;;1764:6:5;1747:23;1755:4;1747:23;1739:80;;;;-1:-1:-1;;;1739:80:5;;5142:2:50;1739:80:5;;;5124:21:50;5181:2;5161:18;;;5154:30;5220:34;5200:18;;;5193:62;-1:-1:-1;;;5271:18:50;;;5264:42;5323:19;;1739:80:5;4940:408:50;1739:80:5;1861:6;-1:-1:-1;;;;;1837:30:5;:20;1180:66:2;1557:65;-1:-1:-1;;;;;1557:65:2;;1478:151;1837:20:5;-1:-1:-1;;;;;1837:30:5;;1829:87;;;;-1:-1:-1;;;1829:87:5;;5555:2:50;1829:87:5;;;5537:21:50;5594:2;5574:18;;;5567:30;5633:34;5613:18;;;5606:62;-1:-1:-1;;;5684:18:50;;;5677:42;5736:19;;1829:87:5;5353:408:50;1829:87:5;4037:36:::1;4055:17;4037;:36::i;:::-;4083:52;4105:17;4124:4;4130;4083:21;:52::i;:::-;3922:220:::0;;:::o;3027:131::-;3105:7;2190:4;-1:-1:-1;;;;;2199:6:5;2182:23;;2174:92;;;;-1:-1:-1;;;2174:92:5;;5968:2:50;2174:92:5;;;5950:21:50;6007:2;5987:18;;;5980:30;6046:34;6026:18;;;6019:62;6117:26;6097:18;;;6090:54;6161:19;;2174:92:5;5766:420:50;2174:92:5;-1:-1:-1;1180:66:2::1;3027:131:5::0;:::o;3457:100:40:-;3504:7;3530:20;1180:66:2;1557:65;-1:-1:-1;;;;;1557:65:2;;1478:151;3530:20:40;3523:27;;3457:100;:::o;2439:166::-;2517:6;;;-1:-1:-1;;;;;2533:16:40;;;-1:-1:-1;;2533:16:40;;;;;;;2564:34;;2517:6;;;2533:16;2517:6;;2564:34;;2492:22;;2564:34;2482:123;2439:166;:::o;1488:168:31:-;4882:13:4;;1542:1:31;;4882:13:4;;;;;4881:14;:40;;;;-1:-1:-1;4899:12:4;;:22;;;;:12;;:22;4881:40;4873:99;;;;-1:-1:-1;;;4873:99:4;;4538:2:50;4873:99:4;;;4520:21:50;4577:2;4557:18;;;4550:30;4616:34;4596:18;;;4589:62;-1:-1:-1;;;4667:18:50;;;4660:44;4721:19;;4873:99:4;4336:410:50;4873:99:4;4982:12;:22;;-1:-1:-1;;5014:20:4;4982:22;;;5014:20;4982:22;5014:20;;;1555:34:31::1;1584:4:::0;1555:28:::1;:34::i;:::-;1608:1;1599:6;:10:::0;1628:1:::1;1619:6;:10:::0;1648:1:::1;1639:6;:10:::0;-1:-1:-1;5055:21:4;;-1:-1:-1;;5055:21:4;;;5091:20;;4923:4:50;4911:17;;4893:36;;5091:20:4;;4881:2:50;4866:18;5091:20:4;4751:184:50;5390:204:40;1616:4:35;;1966:38:40;;1610:67:35;;-1:-1:-1;;;;;1616:4:35;1630;965:10:7;1651:13:35;1039:14:7;;1610:5:35;:67::i;2841:944:2:-;839:66;3257:59;;;3253:526;;;3332:37;3351:17;3332:18;:37::i;:::-;2841:944;;;:::o;3253:526::-;3433:17;-1:-1:-1;;;;;3404:61:2;;:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3404:63:2;;;;;;;;-1:-1:-1;;3404:63:2;;;;;;;;;;;;:::i;:::-;;;3400:302;;3631:56;;-1:-1:-1;;;3631:56:2;;6582:2:50;3631:56:2;;;6564:21:50;6621:2;6601:18;;;6594:30;6660:34;6640:18;;;6633:62;6731:16;6711:18;;;6704:44;6765:19;;3631:56:2;6380:410:50;3400:302:2;1180:66;3517:28;;3509:82;;;;-1:-1:-1;;;3509:82:2;;6997:2:50;3509:82:2;;;6979:21:50;7036:2;7016:18;;;7009:30;7075:34;7055:18;;;7048:62;7146:11;7126:18;;;7119:39;7175:19;;3509:82:2;6795:405:50;3509:82:2;3468:138;3715:53;3733:17;3752:4;3758:9;3715:17;:53::i;2172:139:40:-;5374:13:4;;;;;;;5366:69;;;;-1:-1:-1;;;5366:69:4;;7407:2:50;5366:69:4;;;7389:21:50;7446:2;7426:18;;;7419:30;7485:34;7465:18;;;7458:62;-1:-1:-1;;;7536:18:50;;;7529:41;7587:19;;5366:69:4;7205:407:50;5366:69:4;2265:39:40::1;2299:4;2265:33;:39::i;1041:363:36:-:0;1180:54;;-1:-1:-1;;;1180:54:36;;-1:-1:-1;;;;;1180:18:36;;;;;:54;;1199:6;;1207:4;;1213:13;;1228:5;;;;1180:54;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1175:226;;1251:150;;-1:-1:-1;;;1251:150:36;;-1:-1:-1;;;;;8899:15:50;;;1251:150:36;;;8881:34:50;8951:15;;;8931:18;;;8924:43;9003:15;;8983:18;;;8976:43;9035:18;;;9028:34;;;8792:19;;1251:150:36;8589:479:50;1175:226:36;1041:363;;;;;;:::o;1720:281:2:-;-1:-1:-1;;;;;1713:19:6;;;1793:106:2;;;;-1:-1:-1;;;1793:106:2;;9275:2:50;1793:106:2;;;9257:21:50;9314:2;9294:18;;;9287:30;9353:34;9333:18;;;9326:62;9424:15;9404:18;;;9397:43;9457:19;;1793:106:2;9073:409:50;1793:106:2;1180:66;1909:85;;-1:-1:-1;;1909:85:2;-1:-1:-1;;;;;1909:85:2;;;;;;;;;;1720:281::o;2393:276::-;2501:29;2512:17;2501:10;:29::i;:::-;2558:1;2544:4;:11;:15;:28;;;;2563:9;2544:28;2540:123;;;2588:64;2628:17;2647:4;2588:39;:64::i;:::-;;2393:276;;;:::o;1010:108:35:-;5374:13:4;;;;;;;5366:69;;;;-1:-1:-1;;;5366:69:4;;7407:2:50;5366:69:4;;;7389:21:50;7446:2;7426:18;;;7419:30;7485:34;7465:18;;;7458:62;-1:-1:-1;;;7536:18:50;;;7529:41;7587:19;;5366:69:4;7205:407:50;5366:69:4;1100:4:35::1;:11:::0;;-1:-1:-1;;1100:11:35::1;-1:-1:-1::0;;;;;1100:11:35;;;::::1;::::0;;;::::1;::::0;;1010:108::o;2107:152:2:-;2173:37;2192:17;2173:18;:37::i;:::-;2225:27;;-1:-1:-1;;;;;2225:27:2;;;;;;;;2107:152;:::o;6685:198:6:-;6768:12;6799:77;6820:6;6828:4;6799:77;;;;;;;;;;;;;;;;;:20;:77::i;:::-;6792:84;6685:198;-1:-1:-1;;;6685:198:6:o;7069:325::-;7210:12;7235;7249:23;7276:6;-1:-1:-1;;;;;7276:19:6;7296:4;7276:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7234:67;;;;7318:69;7345:6;7353:7;7362:10;7374:12;7318:26;:69::i;:::-;7311:76;7069:325;-1:-1:-1;;;;;;7069:325:6:o;7682:628::-;7862:12;7890:7;7886:418;;;7917:10;:17;7938:1;7917:22;7913:286;;-1:-1:-1;;;;;1713:19:6;;;8124:60;;;;-1:-1:-1;;;8124:60:6;;10236:2:50;8124:60:6;;;10218:21:50;10275:2;10255:18;;;10248:30;10314:31;10294:18;;;10287:59;10363:18;;8124:60:6;10034:353:50;8124:60:6;-1:-1:-1;8219:10:6;8212:17;;7886:418;8260:33;8268:10;8280:12;8260:7;:33::i;:::-;7682:628;;;;;;:::o;8832:540::-;8991:17;;:21;8987:379;;9219:10;9213:17;9275:15;9262:10;9258:2;9254:19;9247:44;8987:379;9342:12;9335:20;;-1:-1:-1;;;9335:20:6;;;;;;;;:::i;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:286:50:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:50;;209:43;;199:71;;266:1;263;256:12;497:272;555:6;608:2;596:9;587:7;583:23;579:32;576:52;;;624:1;621;614:12;576:52;663:9;650:23;713:6;706:5;702:18;695:5;692:29;682:57;;735:1;732;725:12;956:501;1132:2;1117:18;;1121:9;1212:6;1090:4;1246:205;1260:4;1257:1;1254:11;1246:205;;;1323:13;;1338:4;1319:24;1307:37;;1367:4;1391:12;;;;1426:15;;;;1280:1;1273:9;1246:205;;;1250:3;;;956:501;;;;:::o;1462:154::-;-1:-1:-1;;;;;1541:5:50;1537:54;1530:5;1527:65;1517:93;;1606:1;1603;1596:12;1621:247;1680:6;1733:2;1721:9;1712:7;1708:23;1704:32;1701:52;;;1749:1;1746;1739:12;1701:52;1788:9;1775:23;1807:31;1832:5;1807:31;:::i;2117:343::-;2264:2;2249:18;;2297:1;2286:13;;2276:144;;2342:10;2337:3;2333:20;2330:1;2323:31;2377:4;2374:1;2367:15;2405:4;2402:1;2395:15;2276:144;2429:25;;;2117:343;:::o;2465:127::-;2526:10;2521:3;2517:20;2514:1;2507:31;2557:4;2554:1;2547:15;2581:4;2578:1;2571:15;2597:1056;2674:6;2682;2735:2;2723:9;2714:7;2710:23;2706:32;2703:52;;;2751:1;2748;2741:12;2703:52;2790:9;2777:23;2809:31;2834:5;2809:31;:::i;:::-;2859:5;-1:-1:-1;2915:2:50;2900:18;;2887:32;2938:18;2968:14;;;2965:34;;;2995:1;2992;2985:12;2965:34;3033:6;3022:9;3018:22;3008:32;;3078:7;3071:4;3067:2;3063:13;3059:27;3049:55;;3100:1;3097;3090:12;3049:55;3136:2;3123:16;3158:2;3154;3151:10;3148:36;;;3164:18;;:::i;:::-;3239:2;3233:9;3207:2;3293:13;;-1:-1:-1;;3289:22:50;;;3313:2;3285:31;3281:40;3269:53;;;3337:18;;;3357:22;;;3334:46;3331:72;;;3383:18;;:::i;:::-;3423:10;3419:2;3412:22;3458:2;3450:6;3443:18;3498:7;3493:2;3488;3484;3480:11;3476:20;3473:33;3470:53;;;3519:1;3516;3509:12;3470:53;3575:2;3570;3566;3562:11;3557:2;3549:6;3545:15;3532:46;3620:1;3615:2;3610;3602:6;3598:15;3594:24;3587:35;3641:6;3631:16;;;;;;;2597:1056;;;;;:::o;6191:184::-;6261:6;6314:2;6302:9;6293:7;6289:23;6285:32;6282:52;;;6330:1;6327;6320:12;6282:52;-1:-1:-1;6353:16:50;;6191:184;-1:-1:-1;6191:184:50:o;7617:685::-;7821:4;-1:-1:-1;;;;;7931:2:50;7923:6;7919:15;7908:9;7901:34;7983:2;7975:6;7971:15;7966:2;7955:9;7951:18;7944:43;;8023:6;8018:2;8007:9;8003:18;7996:34;8066:3;8061:2;8050:9;8046:18;8039:31;8107:6;8101:3;8090:9;8086:19;8079:35;8165:6;8157;8151:3;8140:9;8136:19;8123:49;8222:1;8216:3;8207:6;8196:9;8192:22;8188:32;8181:43;8292:3;8285:2;8281:7;8276:2;8268:6;8264:15;8260:29;8249:9;8245:45;8241:55;8233:63;;7617:685;;;;;;;;:::o;8307:277::-;8374:6;8427:2;8415:9;8406:7;8402:23;8398:32;8395:52;;;8443:1;8440;8433:12;8395:52;8475:9;8469:16;8528:5;8521:13;8514:21;8507:5;8504:32;8494:60;;8550:1;8547;8540:12;9487:250;9572:1;9582:113;9596:6;9593:1;9590:13;9582:113;;;9672:11;;;9666:18;9653:11;;;9646:39;9618:2;9611:10;9582:113;;;-1:-1:-1;;9729:1:50;9711:16;;9704:27;9487:250::o;9742:287::-;9871:3;9909:6;9903:13;9925:66;9984:6;9979:3;9972:4;9964:6;9960:17;9925:66;:::i;:::-;10007:16;;;;;9742:287;-1:-1:-1;;9742:287:50:o;10392:396::-;10541:2;10530:9;10523:21;10504:4;10573:6;10567:13;10616:6;10611:2;10600:9;10596:18;10589:34;10632:79;10704:6;10699:2;10688:9;10684:18;10679:2;10671:6;10667:15;10632:79;:::i;:::-;10772:2;10751:15;-1:-1:-1;;10747:29:50;10732:45;;;;10779:2;10728:54;;10392:396;-1:-1:-1;;10392:396:50:o"},"gasEstimates":{"creation":{"codeDepositCost":"977000","executionCost":"infinite","totalCost":"infinite"},"external":{"UPGRADE_PLUGIN_PERMISSION_ID()":"239","dao()":"2365","implementation()":"2414","initialize(address)":"infinite","initializeFrom(uint16)":"98388","pluginType()":"294","protocolVersion()":"infinite","proxiableUUID()":"infinite","setTarget(address)":"26179","state1()":"2362","state2()":"2383","state3()":"2363","supportsInterface(bytes4)":"560","target()":"2403","upgradeTo(address)":"infinite","upgradeToAndCall(address,bytes)":"infinite"}},"methodIdentifiers":{"UPGRADE_PLUGIN_PERMISSION_ID()":"c9c4bfca","dao()":"4162169f","implementation()":"5c60da1b","initialize(address)":"c4d66de8","initializeFrom(uint16)":"039a8c50","pluginType()":"41de6830","protocolVersion()":"2ae9c600","proxiableUUID()":"52d1902d","setTarget(address)":"776d1a01","state1()":"6accab8c","state2()":"efe51cca","state3()":"2491118d","supportsInterface(bytes4)":"01ffc9a7","target()":"d4b83992","upgradeTo(address)":"3659cfe6","upgradeToAndCall(address,bytes)":"4f1ef286"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"dao\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"name\":\"DaoUnauthorized\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousTarget\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newTarget\",\"type\":\"address\"}],\"name\":\"TargetSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"UPGRADE_PLUGIN_PERMISSION_ID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"dao\",\"outputs\":[{\"internalType\":\"contract IDAO\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IDAO\",\"name\":\"_dao\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"_previousBuild\",\"type\":\"uint16\"}],\"name\":\"initializeFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pluginType\",\"outputs\":[{\"internalType\":\"enum IPlugin.PluginType\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"protocolVersion\",\"outputs\":[{\"internalType\":\"uint8[3]\",\"name\":\"\",\"type\":\"uint8[3]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_target\",\"type\":\"address\"}],\"name\":\"setTarget\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"state1\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"state2\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"state3\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"target\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"upgradeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"DO NOT USE IN PRODUCTION!\",\"errors\":{\"DaoUnauthorized(address,address,address,bytes32)\":[{\"params\":{\"dao\":\"The associated DAO.\",\"permissionId\":\"The permission identifier.\",\"where\":\"The context in which the authorization reverted.\",\"who\":\"The address (EOA or contract) missing the permission.\"}}]},\"kind\":\"dev\",\"methods\":{\"dao()\":{\"returns\":{\"_0\":\"The DAO contract.\"}},\"implementation()\":{\"returns\":{\"_0\":\"The address of the implementation contract.\"}},\"protocolVersion()\":{\"details\":\"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\",\"returns\":{\"_0\":\"Returns the semantic Aragon OSx protocol version number.\"}},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"setTarget(address)\":{\"details\":\"Sets the target to a new target (`newTarget`).\"},\"supportsInterface(bytes4)\":{\"params\":{\"_interfaceId\":\"The ID of the interface.\"},\"returns\":{\"_0\":\"Returns `true` if the interface is supported.\"}},\"upgradeTo(address)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"},\"upgradeToAndCall(address,bytes)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"}},\"version\":1},\"userdoc\":{\"errors\":{\"DaoUnauthorized(address,address,address,bytes32)\":[{\"notice\":\"Thrown if a call is unauthorized in the associated DAO.\"}]},\"kind\":\"user\",\"methods\":{\"UPGRADE_PLUGIN_PERMISSION_ID()\":{\"notice\":\"The ID of the permission required to call the `_authorizeUpgrade` function.\"},\"dao()\":{\"notice\":\"Returns the DAO contract.\"},\"implementation()\":{\"notice\":\"Returns the address of the implementation contract in the [proxy storage slot](https://eips.ethereum.org/EIPS/eip-1967) slot the [UUPS proxy](https://eips.ethereum.org/EIPS/eip-1822) is pointing to.\"},\"pluginType()\":{\"notice\":\"Returns the plugin's type\"},\"protocolVersion()\":{\"notice\":\"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\"},\"setTarget(address)\":{\"notice\":\"Can only be called by the current owner. TODO\"},\"supportsInterface(bytes4)\":{\"notice\":\"Checks if an interface is supported by this or its parent contract.\"}},\"notice\":\"A mock upgradeable plugin to be deployed via the UUPS proxy pattern. v1.1 (Release 1, Build 3)\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/mocks/plugin/PluginUUPSUpgradeableMock.sol\":\"PluginUUPSUpgradeableMockBuild3\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/interfaces/IERC1967Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (interfaces/IERC1967.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\\n *\\n * _Available since v4.8.3._\\n */\\ninterface IERC1967Upgradeable {\\n /**\\n * @dev Emitted when the implementation is upgraded.\\n */\\n event Upgraded(address indexed implementation);\\n\\n /**\\n * @dev Emitted when the admin account has changed.\\n */\\n event AdminChanged(address previousAdmin, address newAdmin);\\n\\n /**\\n * @dev Emitted when the beacon is changed.\\n */\\n event BeaconUpgraded(address indexed beacon);\\n}\\n\",\"keccak256\":\"0x47d6e06872b12e72c79d1b5eb55842f860b5fb1207b2317c2358d2766b950a7b\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822ProxiableUpgradeable {\\n /**\\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n * address.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy.\\n */\\n function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../beacon/IBeaconUpgradeable.sol\\\";\\nimport \\\"../../interfaces/IERC1967Upgradeable.sol\\\";\\nimport \\\"../../interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\nimport \\\"../../utils/StorageSlotUpgradeable.sol\\\";\\nimport {Initializable} from \\\"../utils/Initializable.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n */\\nabstract contract ERC1967UpgradeUpgradeable is Initializable, IERC1967Upgradeable {\\n // This is the keccak-256 hash of \\\"eip1967.proxy.rollback\\\" subtracted by 1\\n bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n /**\\n * @dev Storage slot with the address of the current implementation.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n function __ERC1967Upgrade_init() internal onlyInitializing {\\n }\\n\\n function __ERC1967Upgrade_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _getImplementation() internal view returns (address) {\\n return StorageSlotUpgradeable.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 implementation slot.\\n */\\n function _setImplementation(address newImplementation) private {\\n require(AddressUpgradeable.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n StorageSlotUpgradeable.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n }\\n\\n /**\\n * @dev Perform implementation upgrade\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeTo(address newImplementation) internal {\\n _setImplementation(newImplementation);\\n emit Upgraded(newImplementation);\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCall(address newImplementation, bytes memory data, bool forceCall) internal {\\n _upgradeTo(newImplementation);\\n if (data.length > 0 || forceCall) {\\n AddressUpgradeable.functionDelegateCall(newImplementation, data);\\n }\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCallUUPS(address newImplementation, bytes memory data, bool forceCall) internal {\\n // Upgrades from old implementations will perform a rollback test. This test requires the new\\n // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n // this special case will break upgrade paths from old UUPS implementation to new ones.\\n if (StorageSlotUpgradeable.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n _setImplementation(newImplementation);\\n } else {\\n try IERC1822ProxiableUpgradeable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n require(slot == _IMPLEMENTATION_SLOT, \\\"ERC1967Upgrade: unsupported proxiableUUID\\\");\\n } catch {\\n revert(\\\"ERC1967Upgrade: new implementation is not UUPS\\\");\\n }\\n _upgradeToAndCall(newImplementation, data, forceCall);\\n }\\n }\\n\\n /**\\n * @dev Storage slot with the admin of the contract.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _getAdmin() internal view returns (address) {\\n return StorageSlotUpgradeable.getAddressSlot(_ADMIN_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 admin slot.\\n */\\n function _setAdmin(address newAdmin) private {\\n require(newAdmin != address(0), \\\"ERC1967: new admin is the zero address\\\");\\n StorageSlotUpgradeable.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n */\\n function _changeAdmin(address newAdmin) internal {\\n emit AdminChanged(_getAdmin(), newAdmin);\\n _setAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\\n */\\n bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n /**\\n * @dev Returns the current beacon.\\n */\\n function _getBeacon() internal view returns (address) {\\n return StorageSlotUpgradeable.getAddressSlot(_BEACON_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new beacon in the EIP1967 beacon slot.\\n */\\n function _setBeacon(address newBeacon) private {\\n require(AddressUpgradeable.isContract(newBeacon), \\\"ERC1967: new beacon is not a contract\\\");\\n require(\\n AddressUpgradeable.isContract(IBeaconUpgradeable(newBeacon).implementation()),\\n \\\"ERC1967: beacon implementation is not a contract\\\"\\n );\\n StorageSlotUpgradeable.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n }\\n\\n /**\\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n *\\n * Emits a {BeaconUpgraded} event.\\n */\\n function _upgradeBeaconToAndCall(address newBeacon, bytes memory data, bool forceCall) internal {\\n _setBeacon(newBeacon);\\n emit BeaconUpgraded(newBeacon);\\n if (data.length > 0 || forceCall) {\\n AddressUpgradeable.functionDelegateCall(IBeaconUpgradeable(newBeacon).implementation(), data);\\n }\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x7795808e3899c805254e3ae58074b20f799b466e3f43e057e47bedee5fb771f8\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeaconUpgradeable {\\n /**\\n * @dev Must return an address that can be used as a delegate call target.\\n *\\n * {BeaconProxy} will check that this address is a contract.\\n */\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/UUPSUpgradeable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport \\\"../ERC1967/ERC1967UpgradeUpgradeable.sol\\\";\\nimport {Initializable} from \\\"./Initializable.sol\\\";\\n\\n/**\\n * @dev An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an\\n * {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy.\\n *\\n * A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is\\n * reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing\\n * `UUPSUpgradeable` with a custom implementation of upgrades.\\n *\\n * The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism.\\n *\\n * _Available since v4.1._\\n */\\nabstract contract UUPSUpgradeable is Initializable, IERC1822ProxiableUpgradeable, ERC1967UpgradeUpgradeable {\\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable state-variable-assignment\\n address private immutable __self = address(this);\\n\\n /**\\n * @dev Check that the execution is being performed through a delegatecall call and that the execution context is\\n * a proxy contract with an implementation (as defined in ERC1967) pointing to self. This should only be the case\\n * for UUPS and transparent proxies that are using the current contract as their implementation. Execution of a\\n * function through ERC1167 minimal proxies (clones) would not normally pass this test, but is not guaranteed to\\n * fail.\\n */\\n modifier onlyProxy() {\\n require(address(this) != __self, \\\"Function must be called through delegatecall\\\");\\n require(_getImplementation() == __self, \\\"Function must be called through active proxy\\\");\\n _;\\n }\\n\\n /**\\n * @dev Check that the execution is not being performed through a delegate call. This allows a function to be\\n * callable on the implementing contract but not through proxies.\\n */\\n modifier notDelegated() {\\n require(address(this) == __self, \\\"UUPSUpgradeable: must not be called through delegatecall\\\");\\n _;\\n }\\n\\n function __UUPSUpgradeable_init() internal onlyInitializing {\\n }\\n\\n function __UUPSUpgradeable_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the\\n * implementation. It is used to validate the implementation's compatibility when performing an upgrade.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\\n */\\n function proxiableUUID() external view virtual override notDelegated returns (bytes32) {\\n return _IMPLEMENTATION_SLOT;\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy to `newImplementation`.\\n *\\n * Calls {_authorizeUpgrade}.\\n *\\n * Emits an {Upgraded} event.\\n *\\n * @custom:oz-upgrades-unsafe-allow-reachable delegatecall\\n */\\n function upgradeTo(address newImplementation) public virtual onlyProxy {\\n _authorizeUpgrade(newImplementation);\\n _upgradeToAndCallUUPS(newImplementation, new bytes(0), false);\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call\\n * encoded in `data`.\\n *\\n * Calls {_authorizeUpgrade}.\\n *\\n * Emits an {Upgraded} event.\\n *\\n * @custom:oz-upgrades-unsafe-allow-reachable delegatecall\\n */\\n function upgradeToAndCall(address newImplementation, bytes memory data) public payable virtual onlyProxy {\\n _authorizeUpgrade(newImplementation);\\n _upgradeToAndCallUUPS(newImplementation, data, true);\\n }\\n\\n /**\\n * @dev Function that should revert when `msg.sender` is not authorized to upgrade the contract. Called by\\n * {upgradeTo} and {upgradeToAndCall}.\\n *\\n * Normally, this function will use an xref:access.adoc[access control] modifier such as {Ownable-onlyOwner}.\\n *\\n * ```solidity\\n * function _authorizeUpgrade(address) internal override onlyOwner {}\\n * ```\\n */\\n function _authorizeUpgrade(address newImplementation) internal virtual;\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0xefb41f5c1a00249b7a99f0782f8c557865605426a3fb6e5fe9ae334293ae4f33\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n function __Context_init() internal onlyInitializing {\\n }\\n\\n function __Context_init_unchained() internal onlyInitializing {\\n }\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n function _contextSuffixLength() internal view virtual returns (uint256) {\\n return 0;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x75097e35253e7fb282ee4d7f27a80eaacfa759923185bf17302a89cbc059c5ef\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/StorageSlot.sol)\\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```solidity\\n * contract ERC1967 {\\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n * function _getImplementation() internal view returns (address) {\\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n * }\\n *\\n * function _setImplementation(address newImplementation) internal {\\n * require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n * }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._\\n * _Available since v4.9 for `string`, `bytes`._\\n */\\nlibrary StorageSlotUpgradeable {\\n struct AddressSlot {\\n address value;\\n }\\n\\n struct BooleanSlot {\\n bool value;\\n }\\n\\n struct Bytes32Slot {\\n bytes32 value;\\n }\\n\\n struct Uint256Slot {\\n uint256 value;\\n }\\n\\n struct StringSlot {\\n string value;\\n }\\n\\n struct BytesSlot {\\n bytes value;\\n }\\n\\n /**\\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n */\\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n */\\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n */\\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n */\\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` with member `value` located at `slot`.\\n */\\n function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\\n */\\n function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` with member `value` located at `slot`.\\n */\\n function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\\n */\\n function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n}\\n\",\"keccak256\":\"0x07ac95acad040f1fb1f6120dd0aa5f702db69446e95f82613721879d30de0908\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165Upgradeable.sol\\\";\\nimport {Initializable} from \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165Upgradeable is Initializable, IERC165Upgradeable {\\n function __ERC165_init() internal onlyInitializing {\\n }\\n\\n function __ERC165_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165Upgradeable).interfaceId;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0xd90d7723512df65ae417adaf0801042940f0dabd60039ceeaffe34aa5b238da1\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165Upgradeable {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\"},\"src/dao/IDAO.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IDAO\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for DAOs within the Aragon App DAO framework.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IDAO {\\n /// @notice The action struct to be consumed by the DAO's `execute` function resulting in an external call.\\n /// @param to The address to call.\\n /// @param value The native token value to be sent with the call.\\n /// @param data The bytes-encoded function selector and calldata for the call.\\n struct Action {\\n address to;\\n uint256 value;\\n bytes data;\\n }\\n\\n /// @notice Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\\n /// @param _where The address of the contract.\\n /// @param _who The address of a EOA or contract to give the permissions.\\n /// @param _permissionId The permission identifier.\\n /// @param _data The optional data passed to the `PermissionCondition` registered.\\n /// @return Returns true if the address has permission, false if not.\\n function hasPermission(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes memory _data\\n ) external view returns (bool);\\n\\n /// @notice Updates the DAO metadata (e.g., an IPFS hash).\\n /// @param _metadata The IPFS hash of the new metadata object.\\n function setMetadata(bytes calldata _metadata) external;\\n\\n /// @notice Emitted when the DAO metadata is updated.\\n /// @param metadata The IPFS hash of the new metadata object.\\n event MetadataSet(bytes metadata);\\n\\n /// @notice Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted.\\n /// @param _callId The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce.\\n /// @param _actions The array of actions.\\n /// @param _allowFailureMap A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @return The array of results obtained from the executed actions in `bytes`.\\n /// @return The resulting failure map containing the actions have actually failed.\\n function execute(\\n bytes32 _callId,\\n Action[] memory _actions,\\n uint256 _allowFailureMap\\n ) external returns (bytes[] memory, uint256);\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param actor The address of the caller.\\n /// @param callId The ID of the call.\\n /// @param actions The array of actions executed.\\n /// @param allowFailureMap The allow failure map encoding which actions are allowed to fail.\\n /// @param failureMap The failure map encoding which actions have failed.\\n /// @param execResults The array with the results of the executed actions.\\n /// @dev The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce.\\n event Executed(\\n address indexed actor,\\n bytes32 callId,\\n Action[] actions,\\n uint256 allowFailureMap,\\n uint256 failureMap,\\n bytes[] execResults\\n );\\n\\n /// @notice Emitted when a standard callback is registered.\\n /// @param interfaceId The ID of the interface.\\n /// @param callbackSelector The selector of the callback function.\\n /// @param magicNumber The magic number to be registered for the callback function selector.\\n event StandardCallbackRegistered(\\n bytes4 interfaceId,\\n bytes4 callbackSelector,\\n bytes4 magicNumber\\n );\\n\\n /// @notice Deposits (native) tokens to the DAO contract with a reference string.\\n /// @param _token The address of the token or address(0) in case of the native token.\\n /// @param _amount The amount of tokens to deposit.\\n /// @param _reference The reference describing the deposit reason.\\n function deposit(address _token, uint256 _amount, string calldata _reference) external payable;\\n\\n /// @notice Emitted when a token deposit has been made to the DAO.\\n /// @param sender The address of the sender.\\n /// @param token The address of the deposited token.\\n /// @param amount The amount of tokens deposited.\\n /// @param _reference The reference describing the deposit reason.\\n event Deposited(\\n address indexed sender,\\n address indexed token,\\n uint256 amount,\\n string _reference\\n );\\n\\n /// @notice Emitted when a native token deposit has been made to the DAO.\\n /// @dev This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).\\n /// @param sender The address of the sender.\\n /// @param amount The amount of native tokens deposited.\\n event NativeTokenDeposited(address sender, uint256 amount);\\n\\n /// @notice Setter for the trusted forwarder verifying the meta transaction.\\n /// @param _trustedForwarder The trusted forwarder address.\\n function setTrustedForwarder(address _trustedForwarder) external;\\n\\n /// @notice Getter for the trusted forwarder verifying the meta transaction.\\n /// @return The trusted forwarder address.\\n function getTrustedForwarder() external view returns (address);\\n\\n /// @notice Emitted when a new TrustedForwarder is set on the DAO.\\n /// @param forwarder the new forwarder address.\\n event TrustedForwarderSet(address forwarder);\\n\\n /// @notice Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\\n /// @param _hash The hash of the data to be signed.\\n /// @param _signature The signature byte array associated with `_hash`.\\n /// @return Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not.\\n function isValidSignature(bytes32 _hash, bytes memory _signature) external returns (bytes4);\\n\\n /// @notice Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\\n /// @param _interfaceId The ID of the interface.\\n /// @param _callbackSelector The selector of the callback function.\\n /// @param _magicNumber The magic number to be registered for the function signature.\\n function registerStandardCallback(\\n bytes4 _interfaceId,\\n bytes4 _callbackSelector,\\n bytes4 _magicNumber\\n ) external;\\n\\n /// @notice Removed function being left here to not corrupt the IDAO interface ID. Any call will revert.\\n /// @dev Introduced in v1.0.0. Removed in v1.4.0.\\n function setSignatureValidator(address) external;\\n}\\n\",\"keccak256\":\"0xb7f615523c26de042edce98731c658f44a1edb2464387ac1b642c4c69f57128e\",\"license\":\"AGPL-3.0-or-later\"},\"src/mocks/plugin/PluginUUPSUpgradeableMock.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\n/* solhint-disable one-contract-per-file */\\npragma solidity ^0.8.8;\\n\\nimport {PluginUUPSUpgradeable} from \\\"../../plugin/PluginUUPSUpgradeable.sol\\\";\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice A mock upgradeable plugin to be deployed via the UUPS proxy pattern.\\n/// v1.1 (Release 1, Build 1)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableMockBuild1 is PluginUUPSUpgradeable {\\n uint256 public state1;\\n\\n function initialize(IDAO _dao) external initializer {\\n __PluginUUPSUpgradeable_init(_dao);\\n state1 = 1;\\n }\\n}\\n\\n/// @notice A mock upgradeable plugin to be deployed via the UUPS proxy pattern.\\n/// v1.1 (Release 1, Build 2)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableMockBuild2 is PluginUUPSUpgradeable {\\n uint256 public state1;\\n uint256 public state2;\\n\\n function initialize(IDAO _dao) external reinitializer(2) {\\n __PluginUUPSUpgradeable_init(_dao);\\n state1 = 1;\\n state2 = 2;\\n }\\n\\n function initializeFrom(uint16 _previousBuild) external reinitializer(2) {\\n if (_previousBuild < 2) {\\n state2 = 2;\\n }\\n }\\n}\\n\\n/// @notice A mock upgradeable plugin to be deployed via the UUPS proxy pattern.\\n/// v1.1 (Release 1, Build 3)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableMockBuild3 is PluginUUPSUpgradeable {\\n uint256 public state1;\\n uint256 public state2;\\n uint256 public state3;\\n\\n function initialize(IDAO _dao) external reinitializer(3) {\\n __PluginUUPSUpgradeable_init(_dao);\\n state1 = 1;\\n state2 = 2;\\n state3 = 3;\\n }\\n\\n function initializeFrom(uint16 _previousBuild) external reinitializer(3) {\\n if (_previousBuild < 2) {\\n state2 = 2;\\n }\\n if (_previousBuild < 3) {\\n state3 = 3;\\n }\\n }\\n}\\n\\n/// @notice A mock upgradeable plugin missing an initializer function.\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableMockBad is PluginUUPSUpgradeable {\\n uint256 public state1;\\n\\n function notAnInitializer(IDAO _dao) external {\\n __PluginUUPSUpgradeable_init(_dao);\\n state1 = 1;\\n }\\n}\\n\",\"keccak256\":\"0x2917df3b1da0de27f58cf531afeaa4e6c4285717247cbdd9ecc7880ae5cb9cb0\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/DaoAuthorizableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ContextUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\\\";\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\nimport {_auth} from \\\"./auth.sol\\\";\\n\\n/// @title DaoAuthorizableUpgradeable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract contract providing a meta-transaction compatible modifier for upgradeable or cloneable contracts to authorize function calls through an associated DAO.\\n/// @dev Make sure to call `__DaoAuthorizableUpgradeable_init` during initialization of the inheriting contract.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract DaoAuthorizableUpgradeable is ContextUpgradeable {\\n /// @notice The associated DAO managing the permissions of inheriting contracts.\\n IDAO private dao_;\\n\\n /// @notice Initializes the contract by setting the associated DAO.\\n /// @param _dao The associated DAO address.\\n // solhint-disable-next-line func-name-mixedcase\\n function __DaoAuthorizableUpgradeable_init(IDAO _dao) internal onlyInitializing {\\n dao_ = _dao;\\n }\\n\\n /// @notice Returns the DAO contract.\\n /// @return The DAO contract.\\n function dao() public view returns (IDAO) {\\n return dao_;\\n }\\n\\n /// @notice A modifier to make functions on inheriting contracts authorized. Permissions to call the function are checked through the associated DAO's permission manager.\\n /// @param _permissionId The permission identifier required to call the method this modifier is applied to.\\n modifier auth(bytes32 _permissionId) {\\n _auth(dao_, address(this), _msgSender(), _permissionId, _msgData());\\n _;\\n }\\n\\n /// @notice This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain (see [OpenZeppelin's guide about storage gaps](https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps)).\\n uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0x7fac6b01b037ba1cb9d6a22d3f43b0785037dcf496ffb672434d9bf7227d2585\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/auth.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice Thrown if a call is unauthorized in the associated DAO.\\n/// @param dao The associated DAO.\\n/// @param where The context in which the authorization reverted.\\n/// @param who The address (EOA or contract) missing the permission.\\n/// @param permissionId The permission identifier.\\nerror DaoUnauthorized(address dao, address where, address who, bytes32 permissionId);\\n\\n/// @notice A free function checking if a caller is granted permissions on a target contract via a permission identifier that redirects the approval to a `PermissionCondition` if this was specified in the setup.\\n/// @param _where The address of the target contract for which `who` receives permission.\\n/// @param _who The address (EOA or contract) owning the permission.\\n/// @param _permissionId The permission identifier.\\n/// @param _data The optional data passed to the `PermissionCondition` registered.\\n/// @custom:security-contact sirt@aragon.org\\nfunction _auth(\\n IDAO _dao,\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes calldata _data\\n) view {\\n if (!_dao.hasPermission(_where, _who, _permissionId, _data))\\n revert DaoUnauthorized({\\n dao: address(_dao),\\n where: _where,\\n who: _who,\\n permissionId: _permissionId\\n });\\n}\\n\",\"keccak256\":\"0x878764b4f87fe0651fb3798fb9cb87c952f8c6caf6ae79c7f09de84df6c00298\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/IPlugin.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IPlugin\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the traits of a plugin.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IPlugin {\\n enum PluginType {\\n UUPS,\\n Cloneable,\\n Constructable\\n }\\n\\n /// @notice Returns the plugin's type\\n function pluginType() external view returns (PluginType);\\n}\\n\",\"keccak256\":\"0xc57cd0d10b6380ab7f54c713a509e88fd8f4ad9288313a0e8e12b8887817ddfe\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/PluginUUPSUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {UUPSUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\\\";\\nimport {IERC1822ProxiableUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport {ERC165Upgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\\\";\\n\\nimport {IProtocolVersion} from \\\"../utils/versioning/IProtocolVersion.sol\\\";\\nimport {ProtocolVersion} from \\\"../utils/versioning/ProtocolVersion.sol\\\";\\nimport {DaoAuthorizableUpgradeable} from \\\"../permission/auth/DaoAuthorizableUpgradeable.sol\\\";\\nimport {IDAO} from \\\"../dao/IDAO.sol\\\";\\nimport {IPlugin} from \\\"./IPlugin.sol\\\";\\n\\n/// @title PluginUUPSUpgradeable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract, upgradeable contract to inherit from when creating a plugin being deployed via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract PluginUUPSUpgradeable is\\n IPlugin,\\n ERC165Upgradeable,\\n UUPSUpgradeable,\\n DaoAuthorizableUpgradeable,\\n ProtocolVersion\\n{\\n // NOTE: When adding new state variables to the contract, the size of `_gap` has to be adapted below as well.\\n address public target;\\n\\n /// @dev Emitted each time the Target is set.\\n event TargetSet(address indexed previousTarget, address indexed newTarget);\\n\\n /// @notice Disables the initializers on the implementation contract to prevent it from being left uninitialized.\\n /// @custom:oz-upgrades-unsafe-allow constructor\\n constructor() {\\n _disableInitializers();\\n }\\n\\n /// @inheritdoc IPlugin\\n function pluginType() public pure override returns (PluginType) {\\n return PluginType.UUPS;\\n }\\n\\n /// @notice The ID of the permission required to call the `_authorizeUpgrade` function.\\n bytes32 public constant UPGRADE_PLUGIN_PERMISSION_ID = keccak256(\\\"UPGRADE_PLUGIN_PERMISSION\\\");\\n\\n /// @notice Initializes the plugin by storing the associated DAO.\\n /// @param _dao The DAO contract.\\n // solhint-disable-next-line func-name-mixedcase\\n function __PluginUUPSUpgradeable_init(IDAO _dao) internal virtual onlyInitializing {\\n __DaoAuthorizableUpgradeable_init(_dao);\\n }\\n\\n /// @dev Sets the target to a new target (`newTarget`).\\n /// @notice Can only be called by the current owner. TODO\\n function setTarget(address _target) public {\\n address previousTarget = target;\\n target = _target;\\n emit TargetSet(previousTarget, _target);\\n }\\n\\n /// @notice Checks if an interface is supported by this or its parent contract.\\n /// @param _interfaceId The ID of the interface.\\n /// @return Returns `true` if the interface is supported.\\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\\n return\\n _interfaceId == type(IPlugin).interfaceId ||\\n _interfaceId == type(IProtocolVersion).interfaceId ||\\n _interfaceId == type(IERC1822ProxiableUpgradeable).interfaceId ||\\n super.supportsInterface(_interfaceId);\\n }\\n\\n /// @notice Returns the address of the implementation contract in the [proxy storage slot](https://eips.ethereum.org/EIPS/eip-1967) slot the [UUPS proxy](https://eips.ethereum.org/EIPS/eip-1822) is pointing to.\\n /// @return The address of the implementation contract.\\n function implementation() public view returns (address) {\\n return _getImplementation();\\n }\\n\\n /// @notice Forwards the actions to the currently set `target` for the execution.\\n /// @param _callId Identifier for this execution.\\n /// @param _actions actions that will be eventually called.\\n /// @param _allowFailureMap Bitmap-encoded number. TODO:\\n /// @return execResults address of the implementation contract.\\n /// @return failureMap address of the implementation contract.\\n function _execute(\\n bytes32 _callId,\\n IDAO.Action[] calldata _actions,\\n uint256 _allowFailureMap\\n ) internal virtual returns (bytes[] memory execResults, uint256 failureMap) {\\n (execResults, failureMap) = IDAO(target).execute(_callId, _actions, _allowFailureMap);\\n }\\n\\n /// @notice Forwards the actions to the `target` for the execution.\\n /// @param _target Forwards the actions to the specific target.\\n /// @param _callId Identifier for this execution.\\n /// @param _actions actions that will be eventually called.\\n /// @param _allowFailureMap Bitmap-encoded number. TODO:\\n /// @return execResults address of the implementation contract.\\n /// @return failureMap address of the implementation contract.\\n function _execute(\\n address _target,\\n bytes32 _callId,\\n IDAO.Action[] calldata _actions,\\n uint256 _allowFailureMap\\n ) internal virtual returns (bytes[] memory execResults, uint256 failureMap) {\\n (execResults, failureMap) = IDAO(_target).execute(_callId, _actions, _allowFailureMap);\\n }\\n\\n /// @notice Internal method authorizing the upgrade of the contract via the [upgradeability mechanism for UUPS proxies](https://docs.openzeppelin.com/contracts/4.x/api/proxy#UUPSUpgradeable) (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\\n /// @dev The caller must have the `UPGRADE_PLUGIN_PERMISSION_ID` permission.\\n function _authorizeUpgrade(\\n address\\n )\\n internal\\n virtual\\n override\\n auth(UPGRADE_PLUGIN_PERMISSION_ID)\\n // solhint-disable-next-line no-empty-blocks\\n {\\n\\n }\\n\\n /// @notice This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain (see [OpenZeppelin's guide about storage gaps](https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps)).\\n uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0xce1d0126b3ae8c8afc887fba9f49b1cc35f84f1c1d5bf4cadee330c7ae15014f\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/IProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IProtocolVersion\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the semantic Aragon OSx protocol version number.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IProtocolVersion {\\n /// @notice Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\\n /// @return _version Returns the semantic Aragon OSx protocol version number.\\n /// @dev This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\\n function protocolVersion() external view returns (uint8[3] memory _version);\\n}\\n\",\"keccak256\":\"0x00a4da654d21dc1bdadbdc8bd54bb86c378c56f85e461ccc31303628ea621361\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/ProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IProtocolVersion} from \\\"./IProtocolVersion.sol\\\";\\n\\n/// @title ProtocolVersion\\n/// @author Aragon X - 2023\\n/// @notice An abstract, stateless, non-upgradeable contract providing the current Aragon OSx protocol version number.\\n/// @dev Do not add any new variables to this contract that would shift down storage in the inheritance chain.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract ProtocolVersion is IProtocolVersion {\\n // IMPORTANT: Do not add any storage variable, see the above notice.\\n\\n /// @inheritdoc IProtocolVersion\\n function protocolVersion() public pure returns (uint8[3] memory) {\\n return [1, 4, 0];\\n }\\n}\\n\",\"keccak256\":\"0x3975c937be935f687c6b6b8f379071232681e98cf04b175d72781b819ea52bdb\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[{"astId":372,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild3","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":375,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild3","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":1280,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild3","label":"__gap","offset":0,"slot":"1","type":"t_array(t_uint256)50_storage"},{"astId":354,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild3","label":"__gap","offset":0,"slot":"51","type":"t_array(t_uint256)50_storage"},{"astId":670,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild3","label":"__gap","offset":0,"slot":"101","type":"t_array(t_uint256)50_storage"},{"astId":1051,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild3","label":"__gap","offset":0,"slot":"151","type":"t_array(t_uint256)50_storage"},{"astId":3887,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild3","label":"dao_","offset":0,"slot":"201","type":"t_contract(IDAO)2538"},{"astId":3936,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild3","label":"__gap","offset":0,"slot":"202","type":"t_array(t_uint256)49_storage"},{"astId":4382,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild3","label":"target","offset":0,"slot":"251","type":"t_address"},{"astId":4575,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild3","label":"__gap","offset":0,"slot":"252","type":"t_array(t_uint256)49_storage"},{"astId":3190,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild3","label":"state1","offset":0,"slot":"301","type":"t_uint256"},{"astId":3192,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild3","label":"state2","offset":0,"slot":"302","type":"t_uint256"},{"astId":3194,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild3","label":"state3","offset":0,"slot":"303","type":"t_uint256"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_array(t_uint256)49_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[49]","numberOfBytes":"1568"},"t_array(t_uint256)50_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[50]","numberOfBytes":"1600"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_contract(IDAO)2538":{"encoding":"inplace","label":"contract IDAO","numberOfBytes":"20"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"errors":{"DaoUnauthorized(address,address,address,bytes32)":[{"notice":"Thrown if a call is unauthorized in the associated DAO."}]},"kind":"user","methods":{"UPGRADE_PLUGIN_PERMISSION_ID()":{"notice":"The ID of the permission required to call the `_authorizeUpgrade` function."},"dao()":{"notice":"Returns the DAO contract."},"implementation()":{"notice":"Returns the address of the implementation contract in the [proxy storage slot](https://eips.ethereum.org/EIPS/eip-1967) slot the [UUPS proxy](https://eips.ethereum.org/EIPS/eip-1822) is pointing to."},"pluginType()":{"notice":"Returns the plugin's type"},"protocolVersion()":{"notice":"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with."},"setTarget(address)":{"notice":"Can only be called by the current owner. TODO"},"supportsInterface(bytes4)":{"notice":"Checks if an interface is supported by this or its parent contract."}},"notice":"A mock upgradeable plugin to be deployed via the UUPS proxy pattern. v1.1 (Release 1, Build 3)","version":1}}},"src/mocks/plugin/PluginUUPSUpgradeableSetupMock.sol":{"PluginUUPSUpgradeableSetupMockBuild1":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"ConflictingValues","type":"error"},{"inputs":[{"internalType":"uint16","name":"fromBuild","type":"uint16"},{"internalType":"uint16","name":"thisBuild","type":"uint16"}],"name":"InvalidUpdatePath","type":"error"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_dao","type":"address"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"prepareInstallation","outputs":[{"internalType":"address","name":"plugin","type":"address"},{"components":[{"internalType":"address[]","name":"helpers","type":"address[]"},{"components":[{"internalType":"enum PermissionLib.Operation","name":"operation","type":"uint8"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"condition","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"internalType":"struct PermissionLib.MultiTargetPermission[]","name":"permissions","type":"tuple[]"}],"internalType":"struct IPluginSetup.PreparedSetupData","name":"preparedSetupData","type":"tuple"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_dao","type":"address"},{"components":[{"internalType":"address","name":"plugin","type":"address"},{"internalType":"address[]","name":"currentHelpers","type":"address[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct IPluginSetup.SetupPayload","name":"_payload","type":"tuple"}],"name":"prepareUninstallation","outputs":[{"components":[{"internalType":"enum PermissionLib.Operation","name":"operation","type":"uint8"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"condition","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"internalType":"struct PermissionLib.MultiTargetPermission[]","name":"permissions","type":"tuple[]"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_dao","type":"address"},{"internalType":"uint16","name":"_fromBuild","type":"uint16"},{"components":[{"internalType":"address","name":"plugin","type":"address"},{"internalType":"address[]","name":"currentHelpers","type":"address[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct IPluginSetup.SetupPayload","name":"_payload","type":"tuple"}],"name":"prepareUpdate","outputs":[{"internalType":"bytes","name":"","type":"bytes"},{"components":[{"internalType":"address[]","name":"helpers","type":"address[]"},{"components":[{"internalType":"enum PermissionLib.Operation","name":"operation","type":"uint8"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"condition","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"internalType":"struct PermissionLib.MultiTargetPermission[]","name":"permissions","type":"tuple[]"}],"internalType":"struct IPluginSetup.PreparedSetupData","name":"","type":"tuple"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"protocolVersion","outputs":[{"internalType":"uint8[3]","name":"","type":"uint8[3]"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"DO NOT USE IN PRODUCTION!","errors":{"InvalidUpdatePath(uint16,uint16)":[{"params":{"fromBuild":"The build number to update from.","thisBuild":"The build number of this setup to update to."}}]},"kind":"dev","methods":{"implementation()":{"details":"The implementation can be instantiated via the `new` keyword, cloned via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)), or proxied via the UUPS proxy pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).","returns":{"_0":"The address of the plugin implementation contract."}},"prepareInstallation(address,bytes)":{"params":{"_dao":"The address of the installing DAO.","_data":"The bytes-encoded data containing the input parameters for the installation as specified in the plugin's build metadata JSON file."},"returns":{"plugin":"The address of the `Plugin` contract being prepared for installation.","preparedSetupData":"The deployed plugin's relevant data which consists of helpers and permissions."}},"prepareUninstallation(address,(address,address[],bytes))":{"params":{"_dao":"The address of the uninstalling DAO.","_payload":"The relevant data necessary for the `prepareUninstallation`. See above."},"returns":{"permissions":"The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the uninstalling DAO."}},"prepareUpdate(address,uint16,(address,address[],bytes))":{"details":"The default implementation for the initial build 1 that reverts because no earlier build exists.","params":{"_dao":"The address of the updating DAO.","_fromBuild":"The build number of the plugin to update from.","_payload":"The relevant data necessary for the `prepareUpdate`. See above."},"returns":{"_0":"The initialization data to be passed to upgradeable contracts when the update is applied in the `PluginSetupProcessor`.","_1":"The deployed plugin's relevant data which consists of helpers and permissions."}},"protocolVersion()":{"details":"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.","returns":{"_0":"Returns the semantic Aragon OSx protocol version number."}},"supportsInterface(bytes4)":{"params":{"_interfaceId":"The ID of the interface."},"returns":{"_0":"Returns `true` if the interface is supported."}}},"version":1},"evm":{"bytecode":{"functionDebugData":{"@_3310":{"entryPoint":null,"id":3310,"parameterSlots":0,"returnSlots":0},"@_4995":{"entryPoint":null,"id":4995,"parameterSlots":1,"returnSlots":0}},"generatedSources":[],"linkReferences":{},"object":"60a060405234801561001057600080fd5b5060405161001d9061004b565b604051809103906000f080158015610039573d6000803e3d6000fd5b506001600160a01b0316608052610058565b6112c88061126083390190565b6080516111e76100796000396000818160d201526102d301526111e76000f3fe60806040523480156200001157600080fd5b50600436106200007b5760003560e01c80639cb0a12411620000565780639cb0a12414620000fd578063a8a9c29e1462000123578063f10832f1146200014a57600080fd5b806301ffc9a714620000805780632ae9c60014620000ac5780635c60da1b14620000c5575b600080fd5b6200009762000091366004620005f8565b62000171565b60405190151581526020015b60405180910390f35b620000b6620001c4565b604051620000a3919062000624565b6040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152602001620000a3565b620001146200010e3660046200068a565b620001f0565b604051620000a391906200075b565b6200013a62000134366004620007a8565b62000208565b604051620000a3929190620008f7565b620001616200015b3660046200093f565b6200024f565b604051620000a392919062000a0d565b60006001600160e01b0319821663099718b560e41b1480620001a257506001600160e01b03198216621574e360e91b145b80620001be57506301ffc9a760e01b6001600160e01b03198316145b92915050565b620001ce620005cc565b5060408051606081018252600181526004602082015260009181019190915290565b606062000201600060018062000333565b9392505050565b606062000228604051806040016040528060608152602001606081525090565b60405163098990c560e11b8152600060048201526001602482015260440160405180910390fd5b60006200026f604051806040016040528060608152602001606081525090565b6040516001600160a01b038516602482015260009060440160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663189acdbd60e31b17905290506200030581620002f57f000000000000000000000000000000000000000000000000000000000000000090565b6001600160a01b031690620004cc565b925062000313600162000508565b825262000324600060018162000333565b60208301525090939092509050565b6060826001600160a01b0316846001600160a01b031611156200036957604051633a4013cd60e21b815260040160405180910390fd5b62000375848462000a4f565b6001600160a01b031667ffffffffffffffff81111562000399576200039962000929565b604051908082528060200260200182016040528015620003f457816020015b6040805160a081018252600080825260208083018290529282018190526060820181905260808201528252600019909201910181620003b85790505b509050835b836001600160a01b0316816001600160a01b03161015620004c4576040518060a00160405280846002811115620004345762000434620006de565b81526001600160a01b038316602082018190526040820152600060608201527fa280eec51ab8e1bc4b6b0c1b7f1bde785761b787a49db404e3e9338ed9b016ef6080909101528262000487878462000a4f565b6001600160a01b031681518110620004a357620004a362000a79565b60200260200101819052508080620004bb9062000a8f565b915050620003f9565b509392505050565b60008282604051620004de90620005ea565b620004eb92919062000ab8565b604051809103906000f080158015620004c4573d6000803e3d6000fd5b6060816001600160a01b031667ffffffffffffffff8111156200052f576200052f62000929565b60405190808252806020026020018201604052801562000559578160200160208202803683370190505b50905060005b826001600160a01b0316816001600160a01b03161015620005c6578082826001600160a01b03168151811062000599576200059962000a79565b6001600160a01b039092166020928302919091019091015280620005bd8162000a8f565b9150506200055f565b50919050565b60405180606001604052806003906020820280368337509192915050565b6106fe8062000add83390190565b6000602082840312156200060b57600080fd5b81356001600160e01b0319811681146200020157600080fd5b60608101818360005b60038110156200065157815160ff168352602092830192909101906001016200062d565b50505092915050565b80356001600160a01b03811681146200067257600080fd5b919050565b600060608284031215620005c657600080fd5b600080604083850312156200069e57600080fd5b620006a9836200065a565b9150602083013567ffffffffffffffff811115620006c657600080fd5b620006d48582860162000677565b9150509250929050565b634e487b7160e01b600052602160045260246000fd5b60008151600381106200071757634e487b7160e01b600052602160045260246000fd5b8352506020818101516001600160a01b0390811691840191909152604080830151821690840152606080830151909116908301526080908101519082015260a00190565b6020808252825182820181905260009190848201906040850190845b818110156200079c576200078d838551620006f4565b93850193925060010162000777565b50909695505050505050565b600080600060608486031215620007be57600080fd5b620007c9846200065a565b9250602084013561ffff81168114620007e157600080fd5b9150604084013567ffffffffffffffff811115620007fe57600080fd5b6200080c8682870162000677565b9150509250925092565b6000815180845260005b818110156200083e5760208185018101518683018201520162000820565b506000602082860101526020601f19601f83011685010191505092915050565b805160408084528151908401819052600091602091908201906060860190845b81811015620008a55783516001600160a01b0316835292840192918401916001016200087e565b50508483015186820387850152805180835290840192506000918401905b80831015620008ec57620008d9828551620006f4565b91508484019350600183019250620008c3565b509695505050505050565b6040815260006200090c604083018562000816565b82810360208401526200092081856200085e565b95945050505050565b634e487b7160e01b600052604160045260246000fd5b600080604083850312156200095357600080fd5b6200095e836200065a565b9150602083013567ffffffffffffffff808211156200097c57600080fd5b818501915085601f8301126200099157600080fd5b813581811115620009a657620009a662000929565b604051601f8201601f19908116603f01168101908382118183101715620009d157620009d162000929565b81604052828152886020848701011115620009eb57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6001600160a01b038316815260406020820152600062000a3160408301846200085e565b949350505050565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0382811682821603908082111562000a725762000a7262000a39565b5092915050565b634e487b7160e01b600052603260045260246000fd5b60006001600160a01b0380831681810362000aae5762000aae62000a39565b6001019392505050565b6001600160a01b038316815260406020820152600062000a3160408301846200081656fe60806040526040516106fe3803806106fe83398101604081905261002291610319565b61002e82826000610035565b5050610436565b61003e8361006b565b60008251118061004b5750805b156100665761006483836100ab60201b6100291760201c565b505b505050565b610074816100d7565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606100d083836040518060600160405280602781526020016106d7602791396101a9565b9392505050565b6100ea8161022260201b6100551760201c565b6101515760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b806101887f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61023160201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6060600080856001600160a01b0316856040516101c691906103e7565b600060405180830381855af49150503d8060008114610201576040519150601f19603f3d011682016040523d82523d6000602084013e610206565b606091505b50909250905061021886838387610234565b9695505050505050565b6001600160a01b03163b151590565b90565b606083156102a357825160000361029c576001600160a01b0385163b61029c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610148565b50816102ad565b6102ad83836102b5565b949350505050565b8151156102c55781518083602001fd5b8060405162461bcd60e51b81526004016101489190610403565b634e487b7160e01b600052604160045260246000fd5b60005b838110156103105781810151838201526020016102f8565b50506000910152565b6000806040838503121561032c57600080fd5b82516001600160a01b038116811461034357600080fd5b60208401519092506001600160401b038082111561036057600080fd5b818501915085601f83011261037457600080fd5b815181811115610386576103866102df565b604051601f8201601f19908116603f011681019083821181831017156103ae576103ae6102df565b816040528281528860208487010111156103c757600080fd5b6103d88360208301602088016102f5565b80955050505050509250929050565b600082516103f98184602087016102f5565b9190910192915050565b60208152600082518060208401526104228160408501602087016102f5565b601f01601f19169190910160400192915050565b610292806104456000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b61009f565b565b606061004e838360405180606001604052806027815260200161025f602791396100c3565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e8080156100be573d6000f35b3d6000fd5b6060600080856001600160a01b0316856040516100e0919061020f565b600060405180830381855af49150503d806000811461011b576040519150601f19603f3d011682016040523d82523d6000602084013e610120565b606091505b50915091506101318683838761013b565b9695505050505050565b606083156101af5782516000036101a8576001600160a01b0385163b6101a85760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b50816101b9565b6101b983836101c1565b949350505050565b8151156101d15781518083602001fd5b8060405162461bcd60e51b815260040161019f919061022b565b60005b838110156102065781810151838201526020016101ee565b50506000910152565b600082516102218184602087016101eb565b9190910192915050565b602081526000825180602084015261024a8160408501602087016101eb565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a60a06040523060805234801561001457600080fd5b5061001d610022565b6100e1565b600054610100900460ff161561008e5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116146100df576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6080516111b061011860003960008181610334015281816103be015281816104b401528181610539015261062301526111b06000f3fe6080604052600436106100d25760003560e01c806352d1902d1161007f578063776d1a0111610059578063776d1a0114610200578063c4d66de814610220578063c9c4bfca14610240578063d4b839921461027457600080fd5b806352d1902d146101b15780635c60da1b146101d45780636accab8c146101e957600080fd5b80634162169f116100b05780634162169f1461015057806341de6830146101825780634f1ef2861461019e57600080fd5b806301ffc9a7146100d75780632ae9c6001461010c5780633659cfe61461012e575b600080fd5b3480156100e357600080fd5b506100f76100f2366004610ee8565b610294565b60405190151581526020015b60405180910390f35b34801561011857600080fd5b50610121610300565b6040516101039190610f12565b34801561013a57600080fd5b5061014e610149366004610f5b565b61032a565b005b34801561015c57600080fd5b5060c9546001600160a01b03165b6040516001600160a01b039091168152602001610103565b34801561018e57600080fd5b5060006040516101039190610f78565b61014e6101ac366004610fb6565b6104aa565b3480156101bd57600080fd5b506101c6610616565b604051908152602001610103565b3480156101e057600080fd5b5061016a6106db565b3480156101f557600080fd5b506101c661012d5481565b34801561020c57600080fd5b5061014e61021b366004610f5b565b610713565b34801561022c57600080fd5b5061014e61023b366004610f5b565b610772565b34801561024c57600080fd5b506101c67f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f581565b34801561028057600080fd5b5060fb5461016a906001600160a01b031681565b60006001600160e01b0319821663041de68360e41b14806102c457506001600160e01b03198216621574e360e91b145b806102df57506001600160e01b031982166352d1902d60e01b145b806102fa57506301ffc9a760e01b6001600160e01b03198316145b92915050565b610308610eca565b5060408051606081018252600181526004602082015260009181019190915290565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036103bc5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b60648201526084015b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166104177f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b0316146104825760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b60648201526084016103b3565b61048b81610899565b604080516000808252602082019092526104a7918391906108d6565b50565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036105375760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b60648201526084016103b3565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166105927f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b0316146105fd5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b60648201526084016103b3565b61060682610899565b610612828260016108d6565b5050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106b65760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016103b3565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b600061070e7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b60fb80546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d690600090a35050565b600054610100900460ff16158080156107925750600054600160ff909116105b806107ac5750303b1580156107ac575060005460ff166001145b61081e5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016103b3565b6000805460ff191660011790558015610841576000805461ff0019166101001790555b61084a82610a7b565b600161012d558015610612576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b60c9547f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f590610612906001600160a01b0316303384600036610aef565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561090e5761090983610bab565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610968575060408051601f3d908101601f191682019092526109659181019061107a565b60015b6109da5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201527f6f6e206973206e6f74205555505300000000000000000000000000000000000060648201526084016103b3565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114610a6f5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f7860448201527f6961626c6555554944000000000000000000000000000000000000000000000060648201526084016103b3565b50610909838383610c76565b600054610100900460ff16610ae65760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103b3565b6104a781610ca1565b604051637ef7c88360e11b81526001600160a01b0387169063fdef910690610b239088908890889088908890600401611093565b602060405180830381865afa158015610b40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6491906110e7565b610ba357604051630cb6f8ed60e21b81526001600160a01b038088166004830152808716602483015285166044820152606481018490526084016103b3565b505050505050565b6001600160a01b0381163b610c285760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e74726163740000000000000000000000000000000000000060648201526084016103b3565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610c7f83610d3b565b600082511180610c8c5750805b1561090957610c9b8383610d7b565b50505050565b600054610100900460ff16610d0c5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103b3565b60c9805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610d4481610bab565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060610da0838360405180606001604052806027815260200161117d60279139610da7565b9392505050565b6060600080856001600160a01b031685604051610dc4919061112d565b600060405180830381855af49150503d8060008114610dff576040519150601f19603f3d011682016040523d82523d6000602084013e610e04565b606091505b5091509150610e1586838387610e1f565b9695505050505050565b60608315610e8e578251600003610e87576001600160a01b0385163b610e875760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016103b3565b5081610e98565b610e988383610ea0565b949350505050565b815115610eb05781518083602001fd5b8060405162461bcd60e51b81526004016103b39190611149565b60405180606001604052806003906020820280368337509192915050565b600060208284031215610efa57600080fd5b81356001600160e01b031981168114610da057600080fd5b60608101818360005b6003811015610f3d57815160ff16835260209283019290910190600101610f1b565b50505092915050565b6001600160a01b03811681146104a757600080fd5b600060208284031215610f6d57600080fd5b8135610da081610f46565b6020810160038310610f9a57634e487b7160e01b600052602160045260246000fd5b91905290565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215610fc957600080fd5b8235610fd481610f46565b9150602083013567ffffffffffffffff80821115610ff157600080fd5b818501915085601f83011261100557600080fd5b81358181111561101757611017610fa0565b604051601f8201601f19908116603f0116810190838211818310171561103f5761103f610fa0565b8160405282815288602084870101111561105857600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60006020828403121561108c57600080fd5b5051919050565b60006001600160a01b03808816835280871660208401525084604083015260806060830152826080830152828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b6000602082840312156110f957600080fd5b81518015158114610da057600080fd5b60005b8381101561112457818101518382015260200161110c565b50506000910152565b6000825161113f818460208701611109565b9190910192915050565b6020815260008251806020840152611168816040850160208701611109565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a","opcodes":"PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x1D SWAP1 PUSH2 0x4B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH2 0x39 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x80 MSTORE PUSH2 0x58 JUMP JUMPDEST PUSH2 0x12C8 DUP1 PUSH2 0x1260 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH2 0x11E7 PUSH2 0x79 PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH1 0xD2 ADD MSTORE PUSH2 0x2D3 ADD MSTORE PUSH2 0x11E7 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH3 0x7B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9CB0A124 GT PUSH3 0x56 JUMPI DUP1 PUSH4 0x9CB0A124 EQ PUSH3 0xFD JUMPI DUP1 PUSH4 0xA8A9C29E EQ PUSH3 0x123 JUMPI DUP1 PUSH4 0xF10832F1 EQ PUSH3 0x14A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH3 0x80 JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH3 0xAC JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH3 0xC5 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x97 PUSH3 0x91 CALLDATASIZE PUSH1 0x4 PUSH3 0x5F8 JUMP JUMPDEST PUSH3 0x171 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0xB6 PUSH3 0x1C4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0xA3 SWAP2 SWAP1 PUSH3 0x624 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH3 0xA3 JUMP JUMPDEST PUSH3 0x114 PUSH3 0x10E CALLDATASIZE PUSH1 0x4 PUSH3 0x68A JUMP JUMPDEST PUSH3 0x1F0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0xA3 SWAP2 SWAP1 PUSH3 0x75B JUMP JUMPDEST PUSH3 0x13A PUSH3 0x134 CALLDATASIZE PUSH1 0x4 PUSH3 0x7A8 JUMP JUMPDEST PUSH3 0x208 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0xA3 SWAP3 SWAP2 SWAP1 PUSH3 0x8F7 JUMP JUMPDEST PUSH3 0x161 PUSH3 0x15B CALLDATASIZE PUSH1 0x4 PUSH3 0x93F JUMP JUMPDEST PUSH3 0x24F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0xA3 SWAP3 SWAP2 SWAP1 PUSH3 0xA0D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x99718B5 PUSH1 0xE4 SHL EQ DUP1 PUSH3 0x1A2 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH3 0x1BE JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH3 0x1CE PUSH3 0x5CC JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH3 0x201 PUSH1 0x0 PUSH1 0x1 DUP1 PUSH3 0x333 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH3 0x228 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x98990C5 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH3 0x26F PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 PUSH1 0x44 ADD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x189ACDBD PUSH1 0xE3 SHL OR SWAP1 MSTORE SWAP1 POP PUSH3 0x305 DUP2 PUSH3 0x2F5 PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH3 0x4CC JUMP JUMPDEST SWAP3 POP PUSH3 0x313 PUSH1 0x1 PUSH3 0x508 JUMP JUMPDEST DUP3 MSTORE PUSH3 0x324 PUSH1 0x0 PUSH1 0x1 DUP2 PUSH3 0x333 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP SWAP1 SWAP4 SWAP1 SWAP3 POP SWAP1 POP JUMP JUMPDEST PUSH1 0x60 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH3 0x369 JUMPI PUSH1 0x40 MLOAD PUSH4 0x3A4013CD PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0x375 DUP5 DUP5 PUSH3 0xA4F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x399 JUMPI PUSH3 0x399 PUSH3 0x929 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH3 0x3F4 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD DUP3 SWAP1 MSTORE SWAP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 DUP3 ADD MSTORE DUP3 MSTORE PUSH1 0x0 NOT SWAP1 SWAP3 ADD SWAP2 ADD DUP2 PUSH3 0x3B8 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP DUP4 JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT ISZERO PUSH3 0x4C4 JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 DUP5 PUSH1 0x2 DUP2 GT ISZERO PUSH3 0x434 JUMPI PUSH3 0x434 PUSH3 0x6DE JUMP JUMPDEST DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x60 DUP3 ADD MSTORE PUSH32 0xA280EEC51AB8E1BC4B6B0C1B7F1BDE785761B787A49DB404E3E9338ED9B016EF PUSH1 0x80 SWAP1 SWAP2 ADD MSTORE DUP3 PUSH3 0x487 DUP8 DUP5 PUSH3 0xA4F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MLOAD DUP2 LT PUSH3 0x4A3 JUMPI PUSH3 0x4A3 PUSH3 0xA79 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP DUP1 DUP1 PUSH3 0x4BB SWAP1 PUSH3 0xA8F JUMP JUMPDEST SWAP2 POP POP PUSH3 0x3F9 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH3 0x4DE SWAP1 PUSH3 0x5EA JUMP JUMPDEST PUSH3 0x4EB SWAP3 SWAP2 SWAP1 PUSH3 0xAB8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH3 0x4C4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x60 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x52F JUMPI PUSH3 0x52F PUSH3 0x929 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH3 0x559 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT ISZERO PUSH3 0x5C6 JUMPI DUP1 DUP3 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MLOAD DUP2 LT PUSH3 0x599 JUMPI PUSH3 0x599 PUSH3 0xA79 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE DUP1 PUSH3 0x5BD DUP2 PUSH3 0xA8F JUMP JUMPDEST SWAP2 POP POP PUSH3 0x55F JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x6FE DUP1 PUSH3 0xADD DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x60B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH3 0x201 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH3 0x651 JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH3 0x62D JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x672 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x5C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x69E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x6A9 DUP4 PUSH3 0x65A JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x6C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x6D4 DUP6 DUP3 DUP7 ADD PUSH3 0x677 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP2 MLOAD PUSH1 0x3 DUP2 LT PUSH3 0x717 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP4 MSTORE POP PUSH1 0x20 DUP2 DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP1 DUP4 ADD MLOAD DUP3 AND SWAP1 DUP5 ADD MSTORE PUSH1 0x60 DUP1 DUP4 ADD MLOAD SWAP1 SWAP2 AND SWAP1 DUP4 ADD MSTORE PUSH1 0x80 SWAP1 DUP2 ADD MLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x79C JUMPI PUSH3 0x78D DUP4 DUP6 MLOAD PUSH3 0x6F4 JUMP JUMPDEST SWAP4 DUP6 ADD SWAP4 SWAP3 POP PUSH1 0x1 ADD PUSH3 0x777 JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH3 0x7BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x7C9 DUP5 PUSH3 0x65A JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH3 0x7E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x7FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x80C DUP7 DUP3 DUP8 ADD PUSH3 0x677 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x83E JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD DUP3 ADD MSTORE ADD PUSH3 0x820 JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x20 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x20 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x40 DUP1 DUP5 MSTORE DUP2 MLOAD SWAP1 DUP5 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x20 SWAP2 SWAP1 DUP3 ADD SWAP1 PUSH1 0x60 DUP7 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x8A5 JUMPI DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH3 0x87E JUMP JUMPDEST POP POP DUP5 DUP4 ADD MLOAD DUP7 DUP3 SUB DUP8 DUP6 ADD MSTORE DUP1 MLOAD DUP1 DUP4 MSTORE SWAP1 DUP5 ADD SWAP3 POP PUSH1 0x0 SWAP2 DUP5 ADD SWAP1 JUMPDEST DUP1 DUP4 LT ISZERO PUSH3 0x8EC JUMPI PUSH3 0x8D9 DUP3 DUP6 MLOAD PUSH3 0x6F4 JUMP JUMPDEST SWAP2 POP DUP5 DUP5 ADD SWAP4 POP PUSH1 0x1 DUP4 ADD SWAP3 POP PUSH3 0x8C3 JUMP JUMPDEST POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 PUSH3 0x90C PUSH1 0x40 DUP4 ADD DUP6 PUSH3 0x816 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 ADD MSTORE PUSH3 0x920 DUP2 DUP6 PUSH3 0x85E JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x953 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x95E DUP4 PUSH3 0x65A JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH3 0x97C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x991 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH3 0x9A6 JUMPI PUSH3 0x9A6 PUSH3 0x929 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH3 0x9D1 JUMPI PUSH3 0x9D1 PUSH3 0x929 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH3 0x9EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH3 0xA31 PUSH1 0x40 DUP4 ADD DUP5 PUSH3 0x85E JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND DUP3 DUP3 AND SUB SWAP1 DUP1 DUP3 GT ISZERO PUSH3 0xA72 JUMPI PUSH3 0xA72 PUSH3 0xA39 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND DUP2 DUP2 SUB PUSH3 0xAAE JUMPI PUSH3 0xAAE PUSH3 0xA39 JUMP JUMPDEST PUSH1 0x1 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH3 0xA31 PUSH1 0x40 DUP4 ADD DUP5 PUSH3 0x816 JUMP INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH2 0x6FE CODESIZE SUB DUP1 PUSH2 0x6FE DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x22 SWAP2 PUSH2 0x319 JUMP JUMPDEST PUSH2 0x2E DUP3 DUP3 PUSH1 0x0 PUSH2 0x35 JUMP JUMPDEST POP POP PUSH2 0x436 JUMP JUMPDEST PUSH2 0x3E DUP4 PUSH2 0x6B JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD GT DUP1 PUSH2 0x4B JUMPI POP DUP1 JUMPDEST ISZERO PUSH2 0x66 JUMPI PUSH2 0x64 DUP4 DUP4 PUSH2 0xAB PUSH1 0x20 SHL PUSH2 0x29 OR PUSH1 0x20 SHR JUMP JUMPDEST POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x74 DUP2 PUSH2 0xD7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xD0 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x6D7 PUSH1 0x27 SWAP2 CODECOPY PUSH2 0x1A9 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xEA DUP2 PUSH2 0x222 PUSH1 0x20 SHL PUSH2 0x55 OR PUSH1 0x20 SHR JUMP JUMPDEST PUSH2 0x151 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313936373A206E657720696D706C656D656E746174696F6E206973206E PUSH1 0x44 DUP3 ADD MSTORE PUSH13 0x1BDD08184818DBDB9D1C9858DD PUSH1 0x9A SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH2 0x188 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC PUSH1 0x0 SHL PUSH2 0x231 PUSH1 0x20 SHL PUSH2 0x64 OR PUSH1 0x20 SHR JUMP JUMPDEST DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0x1C6 SWAP2 SWAP1 PUSH2 0x3E7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x201 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x206 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x218 DUP7 DUP4 DUP4 DUP8 PUSH2 0x234 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x2A3 JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0x29C JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0x29C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x148 JUMP JUMPDEST POP DUP2 PUSH2 0x2AD JUMP JUMPDEST PUSH2 0x2AD DUP4 DUP4 PUSH2 0x2B5 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x2C5 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x148 SWAP2 SWAP1 PUSH2 0x403 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x310 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2F8 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x32C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x343 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x360 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x374 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x386 JUMPI PUSH2 0x386 PUSH2 0x2DF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x3AE JUMPI PUSH2 0x3AE PUSH2 0x2DF JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x3C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3D8 DUP4 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x2F5 JUMP JUMPDEST DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x3F9 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x2F5 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x422 DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x2F5 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x292 DUP1 PUSH2 0x445 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLDATASIZE PUSH2 0x13 JUMPI PUSH2 0x11 PUSH2 0x17 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x11 JUMPDEST PUSH2 0x27 PUSH2 0x22 PUSH2 0x67 JUMP JUMPDEST PUSH2 0x9F JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x60 PUSH2 0x4E DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x25F PUSH1 0x27 SWAP2 CODECOPY PUSH2 0xC3 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9A PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 DUP1 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE PUSH1 0x0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH2 0xBE JUMPI RETURNDATASIZE PUSH1 0x0 RETURN JUMPDEST RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0xE0 SWAP2 SWAP1 PUSH2 0x20F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x11B JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x120 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x131 DUP7 DUP4 DUP4 DUP8 PUSH2 0x13B JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x1AF JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0x1A8 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0x1A8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP DUP2 PUSH2 0x1B9 JUMP JUMPDEST PUSH2 0x1B9 DUP4 DUP4 PUSH2 0x1C1 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x1D1 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x19F SWAP2 SWAP1 PUSH2 0x22B JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x206 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1EE JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x221 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x1EB JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x24A DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x1EB JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A164 PUSH20 0x6F6C6343000811000A416464726573733A206C6F PUSH24 0x2D6C6576656C2064656C65676174652063616C6C20666169 PUSH13 0x6564A164736F6C634300081100 EXP PUSH1 0xA0 PUSH1 0x40 MSTORE ADDRESS PUSH1 0x80 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x14 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1D PUSH2 0x22 JUMP JUMPDEST PUSH2 0xE1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x8E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x27 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320696E697469 PUSH1 0x44 DUP3 ADD MSTORE PUSH7 0x616C697A696E67 PUSH1 0xC8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xFF SWAP1 DUP2 AND EQ PUSH2 0xDF JUMPI PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH2 0x11B0 PUSH2 0x118 PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH2 0x334 ADD MSTORE DUP2 DUP2 PUSH2 0x3BE ADD MSTORE DUP2 DUP2 PUSH2 0x4B4 ADD MSTORE DUP2 DUP2 PUSH2 0x539 ADD MSTORE PUSH2 0x623 ADD MSTORE PUSH2 0x11B0 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xD2 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x52D1902D GT PUSH2 0x7F JUMPI DUP1 PUSH4 0x776D1A01 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0x776D1A01 EQ PUSH2 0x200 JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0x220 JUMPI DUP1 PUSH4 0xC9C4BFCA EQ PUSH2 0x240 JUMPI DUP1 PUSH4 0xD4B83992 EQ PUSH2 0x274 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x52D1902D EQ PUSH2 0x1B1 JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0x1D4 JUMPI DUP1 PUSH4 0x6ACCAB8C EQ PUSH2 0x1E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x4162169F GT PUSH2 0xB0 JUMPI DUP1 PUSH4 0x4162169F EQ PUSH2 0x150 JUMPI DUP1 PUSH4 0x41DE6830 EQ PUSH2 0x182 JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x19E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xD7 JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0x10C JUMPI DUP1 PUSH4 0x3659CFE6 EQ PUSH2 0x12E JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xE3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF7 PUSH2 0xF2 CALLDATASIZE PUSH1 0x4 PUSH2 0xEE8 JUMP JUMPDEST PUSH2 0x294 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x118 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x121 PUSH2 0x300 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x103 SWAP2 SWAP1 PUSH2 0xF12 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x13A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x14E PUSH2 0x149 CALLDATASIZE PUSH1 0x4 PUSH2 0xF5B JUMP JUMPDEST PUSH2 0x32A JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x15C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xC9 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x103 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x18E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 PUSH1 0x40 MLOAD PUSH2 0x103 SWAP2 SWAP1 PUSH2 0xF78 JUMP JUMPDEST PUSH2 0x14E PUSH2 0x1AC CALLDATASIZE PUSH1 0x4 PUSH2 0xFB6 JUMP JUMPDEST PUSH2 0x4AA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C6 PUSH2 0x616 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x103 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x16A PUSH2 0x6DB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C6 PUSH2 0x12D SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x20C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x14E PUSH2 0x21B CALLDATASIZE PUSH1 0x4 PUSH2 0xF5B JUMP JUMPDEST PUSH2 0x713 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x22C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x14E PUSH2 0x23B CALLDATASIZE PUSH1 0x4 PUSH2 0xF5B JUMP JUMPDEST PUSH2 0x772 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x24C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C6 PUSH32 0x821B6E3A557148015A918C89E5D092E878A69854A2D1A410635F771BD5A8A3F5 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x280 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xFB SLOAD PUSH2 0x16A SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x41DE683 PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x2C4 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x2DF JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x52D1902D PUSH1 0xE0 SHL EQ JUMPDEST DUP1 PUSH2 0x2FA JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x308 PUSH2 0xECA JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x3BC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x19195B1959D85D1958D85B1B PUSH1 0xA2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x417 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x482 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x6163746976652070726F7879 PUSH1 0xA0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B3 JUMP JUMPDEST PUSH2 0x48B DUP2 PUSH2 0x899 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x4A7 SWAP2 DUP4 SWAP2 SWAP1 PUSH2 0x8D6 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x537 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x19195B1959D85D1958D85B1B PUSH1 0xA2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B3 JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x592 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x5FD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x6163746976652070726F7879 PUSH1 0xA0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B3 JUMP JUMPDEST PUSH2 0x606 DUP3 PUSH2 0x899 JUMP JUMPDEST PUSH2 0x612 DUP3 DUP3 PUSH1 0x1 PUSH2 0x8D6 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x6B6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x38 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x555550535570677261646561626C653A206D757374206E6F742062652063616C PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6C6564207468726F7567682064656C656761746563616C6C0000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B3 JUMP JUMPDEST POP PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x70E PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0xFB DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP2 SWAP1 DUP3 SWAP1 PUSH32 0x90CC2F570A6EB594B1580EA3E41247D2D73A55281889E86BD4EC2FC29C7E62D6 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 DUP1 ISZERO PUSH2 0x792 JUMPI POP PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xFF SWAP1 SWAP2 AND LT JUMPDEST DUP1 PUSH2 0x7AC JUMPI POP ADDRESS EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x7AC JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF AND PUSH1 0x1 EQ JUMPDEST PUSH2 0x81E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x647920696E697469616C697A6564000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B3 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE DUP1 ISZERO PUSH2 0x841 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND PUSH2 0x100 OR SWAP1 SSTORE JUMPDEST PUSH2 0x84A DUP3 PUSH2 0xA7B JUMP JUMPDEST PUSH1 0x1 PUSH2 0x12D SSTORE DUP1 ISZERO PUSH2 0x612 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0xC9 SLOAD PUSH32 0x821B6E3A557148015A918C89E5D092E878A69854A2D1A410635F771BD5A8A3F5 SWAP1 PUSH2 0x612 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ADDRESS CALLER DUP5 PUSH1 0x0 CALLDATASIZE PUSH2 0xAEF JUMP JUMPDEST PUSH32 0x4910FDFA16FED3260ED0E7147F7CC6DA11A60208B5B9406D12A635614FFD9143 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x90E JUMPI PUSH2 0x909 DUP4 PUSH2 0xBAB JUMP JUMPDEST POP POP POP JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x52D1902D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x968 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x965 SWAP2 DUP2 ADD SWAP1 PUSH2 0x107A JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x9DA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524331393637557067726164653A206E657720696D706C656D656E74617469 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F6E206973206E6F742055555053000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B3 JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC DUP2 EQ PUSH2 0xA6F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524331393637557067726164653A20756E737570706F727465642070726F78 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6961626C65555549440000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B3 JUMP JUMPDEST POP PUSH2 0x909 DUP4 DUP4 DUP4 PUSH2 0xC76 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0xAE6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B3 JUMP JUMPDEST PUSH2 0x4A7 DUP2 PUSH2 0xCA1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x7EF7C883 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0xFDEF9106 SWAP1 PUSH2 0xB23 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x1093 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xB40 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xB64 SWAP2 SWAP1 PUSH2 0x10E7 JUMP JUMPDEST PUSH2 0xBA3 JUMPI PUSH1 0x40 MLOAD PUSH4 0xCB6F8ED PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND PUSH1 0x4 DUP4 ADD MSTORE DUP1 DUP8 AND PUSH1 0x24 DUP4 ADD MSTORE DUP6 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x84 ADD PUSH2 0x3B3 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND EXTCODESIZE PUSH2 0xC28 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313936373A206E657720696D706C656D656E746174696F6E206973206E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F74206120636F6E747261637400000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B3 JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xC7F DUP4 PUSH2 0xD3B JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD GT DUP1 PUSH2 0xC8C JUMPI POP DUP1 JUMPDEST ISZERO PUSH2 0x909 JUMPI PUSH2 0xC9B DUP4 DUP4 PUSH2 0xD7B JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0xD0C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B3 JUMP JUMPDEST PUSH1 0xC9 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xD44 DUP2 PUSH2 0xBAB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xDA0 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x117D PUSH1 0x27 SWAP2 CODECOPY PUSH2 0xDA7 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0xDC4 SWAP2 SWAP1 PUSH2 0x112D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xDFF JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xE04 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0xE15 DUP7 DUP4 DUP4 DUP8 PUSH2 0xE1F JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0xE8E JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0xE87 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0xE87 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3B3 JUMP JUMPDEST POP DUP2 PUSH2 0xE98 JUMP JUMPDEST PUSH2 0xE98 DUP4 DUP4 PUSH2 0xEA0 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0xEB0 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3B3 SWAP2 SWAP1 PUSH2 0x1149 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xEFA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0xDA0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0xF3D JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0xF1B JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x4A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xF6D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xDA0 DUP2 PUSH2 0xF46 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH1 0x3 DUP4 LT PUSH2 0xF9A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 SWAP1 MSTORE SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xFC9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0xFD4 DUP2 PUSH2 0xF46 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xFF1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1005 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x1017 JUMPI PUSH2 0x1017 PUSH2 0xFA0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x103F JUMPI PUSH2 0x103F PUSH2 0xFA0 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x1058 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x108C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND DUP4 MSTORE DUP1 DUP8 AND PUSH1 0x20 DUP5 ADD MSTORE POP DUP5 PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x80 PUSH1 0x60 DUP4 ADD MSTORE DUP3 PUSH1 0x80 DUP4 ADD MSTORE DUP3 DUP5 PUSH1 0xA0 DUP5 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0xA0 DUP5 DUP5 ADD ADD MSTORE PUSH1 0xA0 PUSH1 0x1F NOT PUSH1 0x1F DUP6 ADD AND DUP4 ADD ADD SWAP1 POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x10F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xDA0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1124 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x110C JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x113F DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x1109 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x1168 DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x1109 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A164 PUSH20 0x6F6C6343000811000A0000000000000000000000 ","sourceMap":"816:1588:32:-:0;;;973:87;;;;;;;;;;1018:37;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1605:32:46;;;816:1588:32;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@deployUUPSProxy_5072":{"entryPoint":1228,"id":5072,"parameterSlots":2,"returnSlots":1},"@implementation_5033":{"entryPoint":null,"id":5033,"parameterSlots":0,"returnSlots":1},"@mockHelpers_3108":{"entryPoint":1288,"id":3108,"parameterSlots":1,"returnSlots":1},"@mockPermissions_3069":{"entryPoint":819,"id":3069,"parameterSlots":3,"returnSlots":1},"@prepareInstallation_3364":{"entryPoint":591,"id":3364,"parameterSlots":2,"returnSlots":2},"@prepareUninstallation_3419":{"entryPoint":496,"id":3419,"parameterSlots":2,"returnSlots":1},"@prepareUpdate_3391":{"entryPoint":520,"id":3391,"parameterSlots":3,"returnSlots":2},"@protocolVersion_5135":{"entryPoint":452,"id":5135,"parameterSlots":0,"returnSlots":1},"@supportsInterface_2374":{"entryPoint":null,"id":2374,"parameterSlots":1,"returnSlots":1},"@supportsInterface_5024":{"entryPoint":369,"id":5024,"parameterSlots":1,"returnSlots":1},"abi_decode_address":{"entryPoint":1626,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_struct_SetupPayload_calldata":{"entryPoint":1655,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_bytes_memory_ptr":{"entryPoint":2367,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_struct$_SetupPayload_$4810_calldata_ptr":{"entryPoint":1674,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_uint16t_struct$_SetupPayload_$4810_calldata_ptr":{"entryPoint":1960,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_bytes4":{"entryPoint":1528,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encodeUpdatedPos_struct_MultiTargetPermission":{"entryPoint":1780,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_bytes":{"entryPoint":2070,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_struct_PreparedSetupData":{"entryPoint":2142,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address_t_bytes_memory_ptr__to_t_address_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":2744,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_address_t_struct$_PreparedSetupData_$4802_memory_ptr__to_t_address_t_struct$_PreparedSetupData_$4802_memory_ptr__fromStack_reversed":{"entryPoint":2573,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr__fromStack_reversed":{"entryPoint":1883,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed":{"entryPoint":1572,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$4802_memory_ptr__to_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$4802_memory_ptr__fromStack_reversed":{"entryPoint":2295,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_contract$_IDAO_$2538__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_rational_0_by_1_t_uint16__to_t_uint16_t_uint16__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"checked_sub_t_uint160":{"entryPoint":2639,"id":null,"parameterSlots":2,"returnSlots":1},"increment_t_uint160":{"entryPoint":2703,"id":null,"parameterSlots":1,"returnSlots":1},"panic_error_0x11":{"entryPoint":2617,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x21":{"entryPoint":1758,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x32":{"entryPoint":2681,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":2345,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:9408:50","statements":[{"nodeType":"YulBlock","src":"6:3:50","statements":[]},{"body":{"nodeType":"YulBlock","src":"83:217:50","statements":[{"body":{"nodeType":"YulBlock","src":"129:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"138:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"141:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"131:6:50"},"nodeType":"YulFunctionCall","src":"131:12:50"},"nodeType":"YulExpressionStatement","src":"131:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"104:7:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"113:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"100:3:50"},"nodeType":"YulFunctionCall","src":"100:23:50"},{"kind":"number","nodeType":"YulLiteral","src":"125:2:50","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"96:3:50"},"nodeType":"YulFunctionCall","src":"96:32:50"},"nodeType":"YulIf","src":"93:52:50"},{"nodeType":"YulVariableDeclaration","src":"154:36:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"180:9:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"167:12:50"},"nodeType":"YulFunctionCall","src":"167:23:50"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"158:5:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"254:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"263:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"266:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"256:6:50"},"nodeType":"YulFunctionCall","src":"256:12:50"},"nodeType":"YulExpressionStatement","src":"256:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"212:5:50"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"223:5:50"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"234:3:50","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"239:10:50","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"230:3:50"},"nodeType":"YulFunctionCall","src":"230:20:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"219:3:50"},"nodeType":"YulFunctionCall","src":"219:32:50"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"209:2:50"},"nodeType":"YulFunctionCall","src":"209:43:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"202:6:50"},"nodeType":"YulFunctionCall","src":"202:51:50"},"nodeType":"YulIf","src":"199:71:50"},{"nodeType":"YulAssignment","src":"279:15:50","value":{"name":"value","nodeType":"YulIdentifier","src":"289:5:50"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"279:6:50"}]}]},"name":"abi_decode_tuple_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"49:9:50","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"60:7:50","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"72:6:50","type":""}],"src":"14:286:50"},{"body":{"nodeType":"YulBlock","src":"400:92:50","statements":[{"nodeType":"YulAssignment","src":"410:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"422:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"433:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"418:3:50"},"nodeType":"YulFunctionCall","src":"418:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"410:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"452:9:50"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"477:6:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"470:6:50"},"nodeType":"YulFunctionCall","src":"470:14:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"463:6:50"},"nodeType":"YulFunctionCall","src":"463:22:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"445:6:50"},"nodeType":"YulFunctionCall","src":"445:41:50"},"nodeType":"YulExpressionStatement","src":"445:41:50"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"369:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"380:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"391:4:50","type":""}],"src":"305:187:50"},{"body":{"nodeType":"YulBlock","src":"640:358:50","statements":[{"nodeType":"YulAssignment","src":"650:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"662:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"673:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"658:3:50"},"nodeType":"YulFunctionCall","src":"658:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"650:4:50"}]},{"nodeType":"YulVariableDeclaration","src":"685:20:50","value":{"name":"headStart","nodeType":"YulIdentifier","src":"696:9:50"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"689:3:50","type":""}]},{"nodeType":"YulAssignment","src":"714:16:50","value":{"name":"headStart","nodeType":"YulIdentifier","src":"721:9:50"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"714:3:50"}]},{"nodeType":"YulVariableDeclaration","src":"739:20:50","value":{"name":"value0","nodeType":"YulIdentifier","src":"753:6:50"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"743:6:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"768:10:50","value":{"kind":"number","nodeType":"YulLiteral","src":"777:1:50","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"772:1:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"834:158:50","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"855:3:50"},{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"870:6:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"864:5:50"},"nodeType":"YulFunctionCall","src":"864:13:50"},{"kind":"number","nodeType":"YulLiteral","src":"879:4:50","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"860:3:50"},"nodeType":"YulFunctionCall","src":"860:24:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"848:6:50"},"nodeType":"YulFunctionCall","src":"848:37:50"},"nodeType":"YulExpressionStatement","src":"848:37:50"},{"nodeType":"YulVariableDeclaration","src":"898:14:50","value":{"kind":"number","nodeType":"YulLiteral","src":"908:4:50","type":"","value":"0x20"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"902:2:50","type":""}]},{"nodeType":"YulAssignment","src":"925:19:50","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"936:3:50"},{"name":"_1","nodeType":"YulIdentifier","src":"941:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"932:3:50"},"nodeType":"YulFunctionCall","src":"932:12:50"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"925:3:50"}]},{"nodeType":"YulAssignment","src":"957:25:50","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"971:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"979:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"967:3:50"},"nodeType":"YulFunctionCall","src":"967:15:50"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"957:6:50"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"798:1:50"},{"kind":"number","nodeType":"YulLiteral","src":"801:4:50","type":"","value":"0x03"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"795:2:50"},"nodeType":"YulFunctionCall","src":"795:11:50"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"807:18:50","statements":[{"nodeType":"YulAssignment","src":"809:14:50","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"818:1:50"},{"kind":"number","nodeType":"YulLiteral","src":"821:1:50","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"814:3:50"},"nodeType":"YulFunctionCall","src":"814:9:50"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"809:1:50"}]}]},"pre":{"nodeType":"YulBlock","src":"791:3:50","statements":[]},"src":"787:205:50"}]},"name":"abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"609:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"620:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"631:4:50","type":""}],"src":"497:501:50"},{"body":{"nodeType":"YulBlock","src":"1104:125:50","statements":[{"nodeType":"YulAssignment","src":"1114:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1126:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"1137:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1122:3:50"},"nodeType":"YulFunctionCall","src":"1122:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1114:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1156:9:50"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1171:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"1179:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1167:3:50"},"nodeType":"YulFunctionCall","src":"1167:55:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1149:6:50"},"nodeType":"YulFunctionCall","src":"1149:74:50"},"nodeType":"YulExpressionStatement","src":"1149:74:50"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1073:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1084:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1095:4:50","type":""}],"src":"1003:226:50"},{"body":{"nodeType":"YulBlock","src":"1283:147:50","statements":[{"nodeType":"YulAssignment","src":"1293:29:50","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1315:6:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1302:12:50"},"nodeType":"YulFunctionCall","src":"1302:20:50"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"1293:5:50"}]},{"body":{"nodeType":"YulBlock","src":"1408:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1417:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1420:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1410:6:50"},"nodeType":"YulFunctionCall","src":"1410:12:50"},"nodeType":"YulExpressionStatement","src":"1410:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1344:5:50"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1355:5:50"},{"kind":"number","nodeType":"YulLiteral","src":"1362:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1351:3:50"},"nodeType":"YulFunctionCall","src":"1351:54:50"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1341:2:50"},"nodeType":"YulFunctionCall","src":"1341:65:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1334:6:50"},"nodeType":"YulFunctionCall","src":"1334:73:50"},"nodeType":"YulIf","src":"1331:93:50"}]},"name":"abi_decode_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"1262:6:50","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"1273:5:50","type":""}],"src":"1234:196:50"},{"body":{"nodeType":"YulBlock","src":"1510:85:50","statements":[{"body":{"nodeType":"YulBlock","src":"1549:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1558:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1561:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1551:6:50"},"nodeType":"YulFunctionCall","src":"1551:12:50"},"nodeType":"YulExpressionStatement","src":"1551:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"end","nodeType":"YulIdentifier","src":"1531:3:50"},{"name":"offset","nodeType":"YulIdentifier","src":"1536:6:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1527:3:50"},"nodeType":"YulFunctionCall","src":"1527:16:50"},{"kind":"number","nodeType":"YulLiteral","src":"1545:2:50","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1523:3:50"},"nodeType":"YulFunctionCall","src":"1523:25:50"},"nodeType":"YulIf","src":"1520:45:50"},{"nodeType":"YulAssignment","src":"1574:15:50","value":{"name":"offset","nodeType":"YulIdentifier","src":"1583:6:50"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"1574:5:50"}]}]},"name":"abi_decode_struct_SetupPayload_calldata","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"1484:6:50","type":""},{"name":"end","nodeType":"YulTypedName","src":"1492:3:50","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"1500:5:50","type":""}],"src":"1435:160:50"},{"body":{"nodeType":"YulBlock","src":"1719:321:50","statements":[{"body":{"nodeType":"YulBlock","src":"1765:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1774:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1777:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1767:6:50"},"nodeType":"YulFunctionCall","src":"1767:12:50"},"nodeType":"YulExpressionStatement","src":"1767:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1740:7:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"1749:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1736:3:50"},"nodeType":"YulFunctionCall","src":"1736:23:50"},{"kind":"number","nodeType":"YulLiteral","src":"1761:2:50","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1732:3:50"},"nodeType":"YulFunctionCall","src":"1732:32:50"},"nodeType":"YulIf","src":"1729:52:50"},{"nodeType":"YulAssignment","src":"1790:39:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1819:9:50"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"1800:18:50"},"nodeType":"YulFunctionCall","src":"1800:29:50"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1790:6:50"}]},{"nodeType":"YulVariableDeclaration","src":"1838:46:50","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1869:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"1880:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1865:3:50"},"nodeType":"YulFunctionCall","src":"1865:18:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1852:12:50"},"nodeType":"YulFunctionCall","src":"1852:32:50"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1842:6:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"1927:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1936:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1939:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1929:6:50"},"nodeType":"YulFunctionCall","src":"1929:12:50"},"nodeType":"YulExpressionStatement","src":"1929:12:50"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1899:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"1907:18:50","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1896:2:50"},"nodeType":"YulFunctionCall","src":"1896:30:50"},"nodeType":"YulIf","src":"1893:50:50"},{"nodeType":"YulAssignment","src":"1952:82:50","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2006:9:50"},{"name":"offset","nodeType":"YulIdentifier","src":"2017:6:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2002:3:50"},"nodeType":"YulFunctionCall","src":"2002:22:50"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2026:7:50"}],"functionName":{"name":"abi_decode_struct_SetupPayload_calldata","nodeType":"YulIdentifier","src":"1962:39:50"},"nodeType":"YulFunctionCall","src":"1962:72:50"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1952:6:50"}]}]},"name":"abi_decode_tuple_t_addresst_struct$_SetupPayload_$4810_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1677:9:50","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1688:7:50","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1700:6:50","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1708:6:50","type":""}],"src":"1600:440:50"},{"body":{"nodeType":"YulBlock","src":"2077:95:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2094:1:50","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2101:3:50","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"2106:10:50","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2097:3:50"},"nodeType":"YulFunctionCall","src":"2097:20:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2087:6:50"},"nodeType":"YulFunctionCall","src":"2087:31:50"},"nodeType":"YulExpressionStatement","src":"2087:31:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2134:1:50","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"2137:4:50","type":"","value":"0x21"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2127:6:50"},"nodeType":"YulFunctionCall","src":"2127:15:50"},"nodeType":"YulExpressionStatement","src":"2127:15:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2158:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2161:4:50","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2151:6:50"},"nodeType":"YulFunctionCall","src":"2151:15:50"},"nodeType":"YulExpressionStatement","src":"2151:15:50"}]},"name":"panic_error_0x21","nodeType":"YulFunctionDefinition","src":"2045:127:50"},{"body":{"nodeType":"YulBlock","src":"2267:606:50","statements":[{"nodeType":"YulVariableDeclaration","src":"2277:23:50","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2293:6:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2287:5:50"},"nodeType":"YulFunctionCall","src":"2287:13:50"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"2281:2:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"2338:111:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2359:1:50","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2366:3:50","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"2371:10:50","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2362:3:50"},"nodeType":"YulFunctionCall","src":"2362:20:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2352:6:50"},"nodeType":"YulFunctionCall","src":"2352:31:50"},"nodeType":"YulExpressionStatement","src":"2352:31:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2403:1:50","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"2406:4:50","type":"","value":"0x21"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2396:6:50"},"nodeType":"YulFunctionCall","src":"2396:15:50"},"nodeType":"YulExpressionStatement","src":"2396:15:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2431:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2434:4:50","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2424:6:50"},"nodeType":"YulFunctionCall","src":"2424:15:50"},"nodeType":"YulExpressionStatement","src":"2424:15:50"}]},"condition":{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"2322:2:50"},{"kind":"number","nodeType":"YulLiteral","src":"2326:1:50","type":"","value":"3"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2319:2:50"},"nodeType":"YulFunctionCall","src":"2319:9:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2312:6:50"},"nodeType":"YulFunctionCall","src":"2312:17:50"},"nodeType":"YulIf","src":"2309:140:50"},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2465:3:50"},{"name":"_1","nodeType":"YulIdentifier","src":"2470:2:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2458:6:50"},"nodeType":"YulFunctionCall","src":"2458:15:50"},"nodeType":"YulExpressionStatement","src":"2458:15:50"},{"nodeType":"YulVariableDeclaration","src":"2482:44:50","value":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2512:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"2520:4:50","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2508:3:50"},"nodeType":"YulFunctionCall","src":"2508:17:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2502:5:50"},"nodeType":"YulFunctionCall","src":"2502:24:50"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"2486:12:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2535:52:50","value":{"kind":"number","nodeType":"YulLiteral","src":"2545:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"2539:2:50","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2607:3:50"},{"kind":"number","nodeType":"YulLiteral","src":"2612:4:50","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2603:3:50"},"nodeType":"YulFunctionCall","src":"2603:14:50"},{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"2623:12:50"},{"name":"_2","nodeType":"YulIdentifier","src":"2637:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2619:3:50"},"nodeType":"YulFunctionCall","src":"2619:21:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2596:6:50"},"nodeType":"YulFunctionCall","src":"2596:45:50"},"nodeType":"YulExpressionStatement","src":"2596:45:50"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2661:3:50"},{"kind":"number","nodeType":"YulLiteral","src":"2666:4:50","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2657:3:50"},"nodeType":"YulFunctionCall","src":"2657:14:50"},{"arguments":[{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2687:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"2695:4:50","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2683:3:50"},"nodeType":"YulFunctionCall","src":"2683:17:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2677:5:50"},"nodeType":"YulFunctionCall","src":"2677:24:50"},{"name":"_2","nodeType":"YulIdentifier","src":"2703:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2673:3:50"},"nodeType":"YulFunctionCall","src":"2673:33:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2650:6:50"},"nodeType":"YulFunctionCall","src":"2650:57:50"},"nodeType":"YulExpressionStatement","src":"2650:57:50"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2727:3:50"},{"kind":"number","nodeType":"YulLiteral","src":"2732:4:50","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2723:3:50"},"nodeType":"YulFunctionCall","src":"2723:14:50"},{"arguments":[{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2753:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"2761:4:50","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2749:3:50"},"nodeType":"YulFunctionCall","src":"2749:17:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2743:5:50"},"nodeType":"YulFunctionCall","src":"2743:24:50"},{"name":"_2","nodeType":"YulIdentifier","src":"2769:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2739:3:50"},"nodeType":"YulFunctionCall","src":"2739:33:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2716:6:50"},"nodeType":"YulFunctionCall","src":"2716:57:50"},"nodeType":"YulExpressionStatement","src":"2716:57:50"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2793:3:50"},{"kind":"number","nodeType":"YulLiteral","src":"2798:4:50","type":"","value":"0x80"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2789:3:50"},"nodeType":"YulFunctionCall","src":"2789:14:50"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2815:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"2823:4:50","type":"","value":"0x80"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2811:3:50"},"nodeType":"YulFunctionCall","src":"2811:17:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2805:5:50"},"nodeType":"YulFunctionCall","src":"2805:24:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2782:6:50"},"nodeType":"YulFunctionCall","src":"2782:48:50"},"nodeType":"YulExpressionStatement","src":"2782:48:50"},{"nodeType":"YulAssignment","src":"2839:28:50","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2857:3:50"},{"kind":"number","nodeType":"YulLiteral","src":"2862:4:50","type":"","value":"0xa0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2853:3:50"},"nodeType":"YulFunctionCall","src":"2853:14:50"},"variableNames":[{"name":"updatedPos","nodeType":"YulIdentifier","src":"2839:10:50"}]}]},"name":"abi_encodeUpdatedPos_struct_MultiTargetPermission","nodeType":"YulFunctionDefinition","parameters":[{"name":"value0","nodeType":"YulTypedName","src":"2236:6:50","type":""},{"name":"pos","nodeType":"YulTypedName","src":"2244:3:50","type":""}],"returnVariables":[{"name":"updatedPos","nodeType":"YulTypedName","src":"2252:10:50","type":""}],"src":"2177:696:50"},{"body":{"nodeType":"YulBlock","src":"3107:499:50","statements":[{"nodeType":"YulVariableDeclaration","src":"3117:12:50","value":{"kind":"number","nodeType":"YulLiteral","src":"3127:2:50","type":"","value":"32"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"3121:2:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3138:32:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3156:9:50"},{"name":"_1","nodeType":"YulIdentifier","src":"3167:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3152:3:50"},"nodeType":"YulFunctionCall","src":"3152:18:50"},"variables":[{"name":"tail_1","nodeType":"YulTypedName","src":"3142:6:50","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3186:9:50"},{"name":"_1","nodeType":"YulIdentifier","src":"3197:2:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3179:6:50"},"nodeType":"YulFunctionCall","src":"3179:21:50"},"nodeType":"YulExpressionStatement","src":"3179:21:50"},{"nodeType":"YulVariableDeclaration","src":"3209:17:50","value":{"name":"tail_1","nodeType":"YulIdentifier","src":"3220:6:50"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"3213:3:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3235:27:50","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3255:6:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3249:5:50"},"nodeType":"YulFunctionCall","src":"3249:13:50"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"3239:6:50","type":""}]},{"expression":{"arguments":[{"name":"tail_1","nodeType":"YulIdentifier","src":"3278:6:50"},{"name":"length","nodeType":"YulIdentifier","src":"3286:6:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3271:6:50"},"nodeType":"YulFunctionCall","src":"3271:22:50"},"nodeType":"YulExpressionStatement","src":"3271:22:50"},{"nodeType":"YulAssignment","src":"3302:25:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3313:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"3324:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3309:3:50"},"nodeType":"YulFunctionCall","src":"3309:18:50"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"3302:3:50"}]},{"nodeType":"YulVariableDeclaration","src":"3336:29:50","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3354:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"3362:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3350:3:50"},"nodeType":"YulFunctionCall","src":"3350:15:50"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"3340:6:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3374:10:50","value":{"kind":"number","nodeType":"YulLiteral","src":"3383:1:50","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"3378:1:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"3442:138:50","statements":[{"nodeType":"YulAssignment","src":"3456:76:50","value":{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"3519:6:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3513:5:50"},"nodeType":"YulFunctionCall","src":"3513:13:50"},{"name":"pos","nodeType":"YulIdentifier","src":"3528:3:50"}],"functionName":{"name":"abi_encodeUpdatedPos_struct_MultiTargetPermission","nodeType":"YulIdentifier","src":"3463:49:50"},"nodeType":"YulFunctionCall","src":"3463:69:50"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"3456:3:50"}]},{"nodeType":"YulAssignment","src":"3545:25:50","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"3559:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"3567:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3555:3:50"},"nodeType":"YulFunctionCall","src":"3555:15:50"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"3545:6:50"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3404:1:50"},{"name":"length","nodeType":"YulIdentifier","src":"3407:6:50"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"3401:2:50"},"nodeType":"YulFunctionCall","src":"3401:13:50"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"3415:18:50","statements":[{"nodeType":"YulAssignment","src":"3417:14:50","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3426:1:50"},{"kind":"number","nodeType":"YulLiteral","src":"3429:1:50","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3422:3:50"},"nodeType":"YulFunctionCall","src":"3422:9:50"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"3417:1:50"}]}]},"pre":{"nodeType":"YulBlock","src":"3397:3:50","statements":[]},"src":"3393:187:50"},{"nodeType":"YulAssignment","src":"3589:11:50","value":{"name":"pos","nodeType":"YulIdentifier","src":"3597:3:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3589:4:50"}]}]},"name":"abi_encode_tuple_t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3076:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3087:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3098:4:50","type":""}],"src":"2878:728:50"},{"body":{"nodeType":"YulBlock","src":"3746:465:50","statements":[{"body":{"nodeType":"YulBlock","src":"3792:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3801:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3804:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3794:6:50"},"nodeType":"YulFunctionCall","src":"3794:12:50"},"nodeType":"YulExpressionStatement","src":"3794:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3767:7:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"3776:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3763:3:50"},"nodeType":"YulFunctionCall","src":"3763:23:50"},{"kind":"number","nodeType":"YulLiteral","src":"3788:2:50","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3759:3:50"},"nodeType":"YulFunctionCall","src":"3759:32:50"},"nodeType":"YulIf","src":"3756:52:50"},{"nodeType":"YulAssignment","src":"3817:39:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3846:9:50"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"3827:18:50"},"nodeType":"YulFunctionCall","src":"3827:29:50"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3817:6:50"}]},{"nodeType":"YulVariableDeclaration","src":"3865:45:50","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3895:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"3906:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3891:3:50"},"nodeType":"YulFunctionCall","src":"3891:18:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3878:12:50"},"nodeType":"YulFunctionCall","src":"3878:32:50"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"3869:5:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"3960:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3969:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3972:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3962:6:50"},"nodeType":"YulFunctionCall","src":"3962:12:50"},"nodeType":"YulExpressionStatement","src":"3962:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3932:5:50"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3943:5:50"},{"kind":"number","nodeType":"YulLiteral","src":"3950:6:50","type":"","value":"0xffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3939:3:50"},"nodeType":"YulFunctionCall","src":"3939:18:50"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"3929:2:50"},"nodeType":"YulFunctionCall","src":"3929:29:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3922:6:50"},"nodeType":"YulFunctionCall","src":"3922:37:50"},"nodeType":"YulIf","src":"3919:57:50"},{"nodeType":"YulAssignment","src":"3985:15:50","value":{"name":"value","nodeType":"YulIdentifier","src":"3995:5:50"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"3985:6:50"}]},{"nodeType":"YulVariableDeclaration","src":"4009:46:50","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4040:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"4051:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4036:3:50"},"nodeType":"YulFunctionCall","src":"4036:18:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4023:12:50"},"nodeType":"YulFunctionCall","src":"4023:32:50"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4013:6:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"4098:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4107:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4110:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4100:6:50"},"nodeType":"YulFunctionCall","src":"4100:12:50"},"nodeType":"YulExpressionStatement","src":"4100:12:50"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"4070:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"4078:18:50","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4067:2:50"},"nodeType":"YulFunctionCall","src":"4067:30:50"},"nodeType":"YulIf","src":"4064:50:50"},{"nodeType":"YulAssignment","src":"4123:82:50","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4177:9:50"},{"name":"offset","nodeType":"YulIdentifier","src":"4188:6:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4173:3:50"},"nodeType":"YulFunctionCall","src":"4173:22:50"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4197:7:50"}],"functionName":{"name":"abi_decode_struct_SetupPayload_calldata","nodeType":"YulIdentifier","src":"4133:39:50"},"nodeType":"YulFunctionCall","src":"4133:72:50"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"4123:6:50"}]}]},"name":"abi_decode_tuple_t_addresst_uint16t_struct$_SetupPayload_$4810_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3696:9:50","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3707:7:50","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3719:6:50","type":""},{"name":"value1","nodeType":"YulTypedName","src":"3727:6:50","type":""},{"name":"value2","nodeType":"YulTypedName","src":"3735:6:50","type":""}],"src":"3611:600:50"},{"body":{"nodeType":"YulBlock","src":"4265:373:50","statements":[{"nodeType":"YulVariableDeclaration","src":"4275:26:50","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4295:5:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4289:5:50"},"nodeType":"YulFunctionCall","src":"4289:12:50"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"4279:6:50","type":""}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4317:3:50"},{"name":"length","nodeType":"YulIdentifier","src":"4322:6:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4310:6:50"},"nodeType":"YulFunctionCall","src":"4310:19:50"},"nodeType":"YulExpressionStatement","src":"4310:19:50"},{"nodeType":"YulVariableDeclaration","src":"4338:10:50","value":{"kind":"number","nodeType":"YulLiteral","src":"4347:1:50","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"4342:1:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"4409:110:50","statements":[{"nodeType":"YulVariableDeclaration","src":"4423:14:50","value":{"kind":"number","nodeType":"YulLiteral","src":"4433:4:50","type":"","value":"0x20"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"4427:2:50","type":""}]},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4465:3:50"},{"name":"i","nodeType":"YulIdentifier","src":"4470:1:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4461:3:50"},"nodeType":"YulFunctionCall","src":"4461:11:50"},{"name":"_1","nodeType":"YulIdentifier","src":"4474:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4457:3:50"},"nodeType":"YulFunctionCall","src":"4457:20:50"},{"arguments":[{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4493:5:50"},{"name":"i","nodeType":"YulIdentifier","src":"4500:1:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4489:3:50"},"nodeType":"YulFunctionCall","src":"4489:13:50"},{"name":"_1","nodeType":"YulIdentifier","src":"4504:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4485:3:50"},"nodeType":"YulFunctionCall","src":"4485:22:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4479:5:50"},"nodeType":"YulFunctionCall","src":"4479:29:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4450:6:50"},"nodeType":"YulFunctionCall","src":"4450:59:50"},"nodeType":"YulExpressionStatement","src":"4450:59:50"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"4368:1:50"},{"name":"length","nodeType":"YulIdentifier","src":"4371:6:50"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"4365:2:50"},"nodeType":"YulFunctionCall","src":"4365:13:50"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"4379:21:50","statements":[{"nodeType":"YulAssignment","src":"4381:17:50","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"4390:1:50"},{"kind":"number","nodeType":"YulLiteral","src":"4393:4:50","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4386:3:50"},"nodeType":"YulFunctionCall","src":"4386:12:50"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"4381:1:50"}]}]},"pre":{"nodeType":"YulBlock","src":"4361:3:50","statements":[]},"src":"4357:162:50"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4543:3:50"},{"name":"length","nodeType":"YulIdentifier","src":"4548:6:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4539:3:50"},"nodeType":"YulFunctionCall","src":"4539:16:50"},{"kind":"number","nodeType":"YulLiteral","src":"4557:4:50","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4535:3:50"},"nodeType":"YulFunctionCall","src":"4535:27:50"},{"kind":"number","nodeType":"YulLiteral","src":"4564:1:50","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4528:6:50"},"nodeType":"YulFunctionCall","src":"4528:38:50"},"nodeType":"YulExpressionStatement","src":"4528:38:50"},{"nodeType":"YulAssignment","src":"4575:57:50","value":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4590:3:50"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"4603:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"4611:2:50","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4599:3:50"},"nodeType":"YulFunctionCall","src":"4599:15:50"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4620:2:50","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"4616:3:50"},"nodeType":"YulFunctionCall","src":"4616:7:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4595:3:50"},"nodeType":"YulFunctionCall","src":"4595:29:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4586:3:50"},"nodeType":"YulFunctionCall","src":"4586:39:50"},{"kind":"number","nodeType":"YulLiteral","src":"4627:4:50","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4582:3:50"},"nodeType":"YulFunctionCall","src":"4582:50:50"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"4575:3:50"}]}]},"name":"abi_encode_bytes","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"4242:5:50","type":""},{"name":"pos","nodeType":"YulTypedName","src":"4249:3:50","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"4257:3:50","type":""}],"src":"4216:422:50"},{"body":{"nodeType":"YulBlock","src":"4711:1094:50","statements":[{"nodeType":"YulVariableDeclaration","src":"4721:26:50","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4737:3:50"},{"kind":"number","nodeType":"YulLiteral","src":"4742:4:50","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4733:3:50"},"nodeType":"YulFunctionCall","src":"4733:14:50"},"variables":[{"name":"tail","nodeType":"YulTypedName","src":"4725:4:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4756:32:50","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4782:5:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4776:5:50"},"nodeType":"YulFunctionCall","src":"4776:12:50"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"4760:12:50","type":""}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4804:3:50"},{"kind":"number","nodeType":"YulLiteral","src":"4809:4:50","type":"","value":"0x40"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4797:6:50"},"nodeType":"YulFunctionCall","src":"4797:17:50"},"nodeType":"YulExpressionStatement","src":"4797:17:50"},{"nodeType":"YulVariableDeclaration","src":"4823:17:50","value":{"name":"tail","nodeType":"YulIdentifier","src":"4836:4:50"},"variables":[{"name":"pos_1","nodeType":"YulTypedName","src":"4827:5:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4849:33:50","value":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"4869:12:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4863:5:50"},"nodeType":"YulFunctionCall","src":"4863:19:50"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"4853:6:50","type":""}]},{"expression":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"4898:4:50"},{"name":"length","nodeType":"YulIdentifier","src":"4904:6:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4891:6:50"},"nodeType":"YulFunctionCall","src":"4891:20:50"},"nodeType":"YulExpressionStatement","src":"4891:20:50"},{"nodeType":"YulAssignment","src":"4920:21:50","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4933:3:50"},{"kind":"number","nodeType":"YulLiteral","src":"4938:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4929:3:50"},"nodeType":"YulFunctionCall","src":"4929:12:50"},"variableNames":[{"name":"pos_1","nodeType":"YulIdentifier","src":"4920:5:50"}]},{"nodeType":"YulVariableDeclaration","src":"4950:14:50","value":{"kind":"number","nodeType":"YulLiteral","src":"4960:4:50","type":"","value":"0x20"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"4954:2:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4973:35:50","value":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"4991:12:50"},{"name":"_1","nodeType":"YulIdentifier","src":"5005:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4987:3:50"},"nodeType":"YulFunctionCall","src":"4987:21:50"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"4977:6:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5017:10:50","value":{"kind":"number","nodeType":"YulLiteral","src":"5026:1:50","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"5021:1:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"5085:175:50","statements":[{"expression":{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5106:5:50"},{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"5123:6:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5117:5:50"},"nodeType":"YulFunctionCall","src":"5117:13:50"},{"kind":"number","nodeType":"YulLiteral","src":"5132:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5113:3:50"},"nodeType":"YulFunctionCall","src":"5113:62:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5099:6:50"},"nodeType":"YulFunctionCall","src":"5099:77:50"},"nodeType":"YulExpressionStatement","src":"5099:77:50"},{"nodeType":"YulAssignment","src":"5189:23:50","value":{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5202:5:50"},{"name":"_1","nodeType":"YulIdentifier","src":"5209:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5198:3:50"},"nodeType":"YulFunctionCall","src":"5198:14:50"},"variableNames":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5189:5:50"}]},{"nodeType":"YulAssignment","src":"5225:25:50","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"5239:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"5247:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5235:3:50"},"nodeType":"YulFunctionCall","src":"5235:15:50"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"5225:6:50"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"5047:1:50"},{"name":"length","nodeType":"YulIdentifier","src":"5050:6:50"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"5044:2:50"},"nodeType":"YulFunctionCall","src":"5044:13:50"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"5058:18:50","statements":[{"nodeType":"YulAssignment","src":"5060:14:50","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"5069:1:50"},{"kind":"number","nodeType":"YulLiteral","src":"5072:1:50","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5065:3:50"},"nodeType":"YulFunctionCall","src":"5065:9:50"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"5060:1:50"}]}]},"pre":{"nodeType":"YulBlock","src":"5040:3:50","statements":[]},"src":"5036:224:50"},{"nodeType":"YulVariableDeclaration","src":"5269:43:50","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5301:5:50"},{"name":"_1","nodeType":"YulIdentifier","src":"5308:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5297:3:50"},"nodeType":"YulFunctionCall","src":"5297:14:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5291:5:50"},"nodeType":"YulFunctionCall","src":"5291:21:50"},"variables":[{"name":"memberValue0_1","nodeType":"YulTypedName","src":"5273:14:50","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5332:3:50"},{"name":"_1","nodeType":"YulIdentifier","src":"5337:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5328:3:50"},"nodeType":"YulFunctionCall","src":"5328:12:50"},{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5346:5:50"},{"name":"pos","nodeType":"YulIdentifier","src":"5353:3:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5342:3:50"},"nodeType":"YulFunctionCall","src":"5342:15:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5321:6:50"},"nodeType":"YulFunctionCall","src":"5321:37:50"},"nodeType":"YulExpressionStatement","src":"5321:37:50"},{"nodeType":"YulVariableDeclaration","src":"5367:18:50","value":{"name":"pos_1","nodeType":"YulIdentifier","src":"5380:5:50"},"variables":[{"name":"pos_2","nodeType":"YulTypedName","src":"5371:5:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5394:37:50","value":{"arguments":[{"name":"memberValue0_1","nodeType":"YulIdentifier","src":"5416:14:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5410:5:50"},"nodeType":"YulFunctionCall","src":"5410:21:50"},"variables":[{"name":"length_1","nodeType":"YulTypedName","src":"5398:8:50","type":""}]},{"expression":{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5447:5:50"},{"name":"length_1","nodeType":"YulIdentifier","src":"5454:8:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5440:6:50"},"nodeType":"YulFunctionCall","src":"5440:23:50"},"nodeType":"YulExpressionStatement","src":"5440:23:50"},{"nodeType":"YulAssignment","src":"5472:23:50","value":{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5485:5:50"},{"name":"_1","nodeType":"YulIdentifier","src":"5492:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5481:3:50"},"nodeType":"YulFunctionCall","src":"5481:14:50"},"variableNames":[{"name":"pos_2","nodeType":"YulIdentifier","src":"5472:5:50"}]},{"nodeType":"YulVariableDeclaration","src":"5504:39:50","value":{"arguments":[{"name":"memberValue0_1","nodeType":"YulIdentifier","src":"5524:14:50"},{"name":"_1","nodeType":"YulIdentifier","src":"5540:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5520:3:50"},"nodeType":"YulFunctionCall","src":"5520:23:50"},"variables":[{"name":"srcPtr_1","nodeType":"YulTypedName","src":"5508:8:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5552:12:50","value":{"kind":"number","nodeType":"YulLiteral","src":"5563:1:50","type":"","value":"0"},"variables":[{"name":"i_1","nodeType":"YulTypedName","src":"5556:3:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"5630:148:50","statements":[{"nodeType":"YulAssignment","src":"5644:82:50","value":{"arguments":[{"arguments":[{"name":"srcPtr_1","nodeType":"YulIdentifier","src":"5709:8:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5703:5:50"},"nodeType":"YulFunctionCall","src":"5703:15:50"},{"name":"pos_2","nodeType":"YulIdentifier","src":"5720:5:50"}],"functionName":{"name":"abi_encodeUpdatedPos_struct_MultiTargetPermission","nodeType":"YulIdentifier","src":"5653:49:50"},"nodeType":"YulFunctionCall","src":"5653:73:50"},"variableNames":[{"name":"pos_2","nodeType":"YulIdentifier","src":"5644:5:50"}]},{"nodeType":"YulAssignment","src":"5739:29:50","value":{"arguments":[{"name":"srcPtr_1","nodeType":"YulIdentifier","src":"5755:8:50"},{"name":"_1","nodeType":"YulIdentifier","src":"5765:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5751:3:50"},"nodeType":"YulFunctionCall","src":"5751:17:50"},"variableNames":[{"name":"srcPtr_1","nodeType":"YulIdentifier","src":"5739:8:50"}]}]},"condition":{"arguments":[{"name":"i_1","nodeType":"YulIdentifier","src":"5584:3:50"},{"name":"length_1","nodeType":"YulIdentifier","src":"5589:8:50"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"5581:2:50"},"nodeType":"YulFunctionCall","src":"5581:17:50"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"5599:22:50","statements":[{"nodeType":"YulAssignment","src":"5601:18:50","value":{"arguments":[{"name":"i_1","nodeType":"YulIdentifier","src":"5612:3:50"},{"kind":"number","nodeType":"YulLiteral","src":"5617:1:50","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5608:3:50"},"nodeType":"YulFunctionCall","src":"5608:11:50"},"variableNames":[{"name":"i_1","nodeType":"YulIdentifier","src":"5601:3:50"}]}]},"pre":{"nodeType":"YulBlock","src":"5577:3:50","statements":[]},"src":"5573:205:50"},{"nodeType":"YulAssignment","src":"5787:12:50","value":{"name":"pos_2","nodeType":"YulIdentifier","src":"5794:5:50"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"5787:3:50"}]}]},"name":"abi_encode_struct_PreparedSetupData","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"4688:5:50","type":""},{"name":"pos","nodeType":"YulTypedName","src":"4695:3:50","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"4703:3:50","type":""}],"src":"4643:1162:50"},{"body":{"nodeType":"YulBlock","src":"6027:231:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6044:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"6055:2:50","type":"","value":"64"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6037:6:50"},"nodeType":"YulFunctionCall","src":"6037:21:50"},"nodeType":"YulExpressionStatement","src":"6037:21:50"},{"nodeType":"YulVariableDeclaration","src":"6067:58:50","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6098:6:50"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6110:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"6121:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6106:3:50"},"nodeType":"YulFunctionCall","src":"6106:18:50"}],"functionName":{"name":"abi_encode_bytes","nodeType":"YulIdentifier","src":"6081:16:50"},"nodeType":"YulFunctionCall","src":"6081:44:50"},"variables":[{"name":"tail_1","nodeType":"YulTypedName","src":"6071:6:50","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6145:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"6156:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6141:3:50"},"nodeType":"YulFunctionCall","src":"6141:18:50"},{"arguments":[{"name":"tail_1","nodeType":"YulIdentifier","src":"6165:6:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"6173:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6161:3:50"},"nodeType":"YulFunctionCall","src":"6161:22:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6134:6:50"},"nodeType":"YulFunctionCall","src":"6134:50:50"},"nodeType":"YulExpressionStatement","src":"6134:50:50"},{"nodeType":"YulAssignment","src":"6193:59:50","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"6237:6:50"},{"name":"tail_1","nodeType":"YulIdentifier","src":"6245:6:50"}],"functionName":{"name":"abi_encode_struct_PreparedSetupData","nodeType":"YulIdentifier","src":"6201:35:50"},"nodeType":"YulFunctionCall","src":"6201:51:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6193:4:50"}]}]},"name":"abi_encode_tuple_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$4802_memory_ptr__to_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$4802_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5988:9:50","type":""},{"name":"value1","nodeType":"YulTypedName","src":"5999:6:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"6007:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6018:4:50","type":""}],"src":"5810:448:50"},{"body":{"nodeType":"YulBlock","src":"6295:95:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6312:1:50","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6319:3:50","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"6324:10:50","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"6315:3:50"},"nodeType":"YulFunctionCall","src":"6315:20:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6305:6:50"},"nodeType":"YulFunctionCall","src":"6305:31:50"},"nodeType":"YulExpressionStatement","src":"6305:31:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6352:1:50","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"6355:4:50","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6345:6:50"},"nodeType":"YulFunctionCall","src":"6345:15:50"},"nodeType":"YulExpressionStatement","src":"6345:15:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6376:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6379:4:50","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6369:6:50"},"nodeType":"YulFunctionCall","src":"6369:15:50"},"nodeType":"YulExpressionStatement","src":"6369:15:50"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"6263:127:50"},{"body":{"nodeType":"YulBlock","src":"6491:899:50","statements":[{"body":{"nodeType":"YulBlock","src":"6537:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6546:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6549:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6539:6:50"},"nodeType":"YulFunctionCall","src":"6539:12:50"},"nodeType":"YulExpressionStatement","src":"6539:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"6512:7:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"6521:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6508:3:50"},"nodeType":"YulFunctionCall","src":"6508:23:50"},{"kind":"number","nodeType":"YulLiteral","src":"6533:2:50","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6504:3:50"},"nodeType":"YulFunctionCall","src":"6504:32:50"},"nodeType":"YulIf","src":"6501:52:50"},{"nodeType":"YulAssignment","src":"6562:39:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6591:9:50"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"6572:18:50"},"nodeType":"YulFunctionCall","src":"6572:29:50"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"6562:6:50"}]},{"nodeType":"YulVariableDeclaration","src":"6610:46:50","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6641:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"6652:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6637:3:50"},"nodeType":"YulFunctionCall","src":"6637:18:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6624:12:50"},"nodeType":"YulFunctionCall","src":"6624:32:50"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"6614:6:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"6665:28:50","value":{"kind":"number","nodeType":"YulLiteral","src":"6675:18:50","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"6669:2:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"6720:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6729:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6732:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6722:6:50"},"nodeType":"YulFunctionCall","src":"6722:12:50"},"nodeType":"YulExpressionStatement","src":"6722:12:50"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"6708:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"6716:2:50"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6705:2:50"},"nodeType":"YulFunctionCall","src":"6705:14:50"},"nodeType":"YulIf","src":"6702:34:50"},{"nodeType":"YulVariableDeclaration","src":"6745:32:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6759:9:50"},{"name":"offset","nodeType":"YulIdentifier","src":"6770:6:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6755:3:50"},"nodeType":"YulFunctionCall","src":"6755:22:50"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"6749:2:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"6825:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6834:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6837:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6827:6:50"},"nodeType":"YulFunctionCall","src":"6827:12:50"},"nodeType":"YulExpressionStatement","src":"6827:12:50"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"6804:2:50"},{"kind":"number","nodeType":"YulLiteral","src":"6808:4:50","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6800:3:50"},"nodeType":"YulFunctionCall","src":"6800:13:50"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"6815:7:50"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6796:3:50"},"nodeType":"YulFunctionCall","src":"6796:27:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"6789:6:50"},"nodeType":"YulFunctionCall","src":"6789:35:50"},"nodeType":"YulIf","src":"6786:55:50"},{"nodeType":"YulVariableDeclaration","src":"6850:26:50","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"6873:2:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6860:12:50"},"nodeType":"YulFunctionCall","src":"6860:16:50"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"6854:2:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"6899:22:50","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"6901:16:50"},"nodeType":"YulFunctionCall","src":"6901:18:50"},"nodeType":"YulExpressionStatement","src":"6901:18:50"}]},"condition":{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"6891:2:50"},{"name":"_1","nodeType":"YulIdentifier","src":"6895:2:50"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6888:2:50"},"nodeType":"YulFunctionCall","src":"6888:10:50"},"nodeType":"YulIf","src":"6885:36:50"},{"nodeType":"YulVariableDeclaration","src":"6930:17:50","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6944:2:50","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"6940:3:50"},"nodeType":"YulFunctionCall","src":"6940:7:50"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"6934:2:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"6956:23:50","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6976:2:50","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6970:5:50"},"nodeType":"YulFunctionCall","src":"6970:9:50"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"6960:6:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"6988:71:50","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7010:6:50"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"7034:2:50"},{"kind":"number","nodeType":"YulLiteral","src":"7038:4:50","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7030:3:50"},"nodeType":"YulFunctionCall","src":"7030:13:50"},{"name":"_4","nodeType":"YulIdentifier","src":"7045:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7026:3:50"},"nodeType":"YulFunctionCall","src":"7026:22:50"},{"kind":"number","nodeType":"YulLiteral","src":"7050:2:50","type":"","value":"63"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7022:3:50"},"nodeType":"YulFunctionCall","src":"7022:31:50"},{"name":"_4","nodeType":"YulIdentifier","src":"7055:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7018:3:50"},"nodeType":"YulFunctionCall","src":"7018:40:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7006:3:50"},"nodeType":"YulFunctionCall","src":"7006:53:50"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"6992:10:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"7118:22:50","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"7120:16:50"},"nodeType":"YulFunctionCall","src":"7120:18:50"},"nodeType":"YulExpressionStatement","src":"7120:18:50"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"7077:10:50"},{"name":"_1","nodeType":"YulIdentifier","src":"7089:2:50"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"7074:2:50"},"nodeType":"YulFunctionCall","src":"7074:18:50"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"7097:10:50"},{"name":"memPtr","nodeType":"YulIdentifier","src":"7109:6:50"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"7094:2:50"},"nodeType":"YulFunctionCall","src":"7094:22:50"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"7071:2:50"},"nodeType":"YulFunctionCall","src":"7071:46:50"},"nodeType":"YulIf","src":"7068:72:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7156:2:50","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"7160:10:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7149:6:50"},"nodeType":"YulFunctionCall","src":"7149:22:50"},"nodeType":"YulExpressionStatement","src":"7149:22:50"},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7187:6:50"},{"name":"_3","nodeType":"YulIdentifier","src":"7195:2:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7180:6:50"},"nodeType":"YulFunctionCall","src":"7180:18:50"},"nodeType":"YulExpressionStatement","src":"7180:18:50"},{"body":{"nodeType":"YulBlock","src":"7244:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7253:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7256:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7246:6:50"},"nodeType":"YulFunctionCall","src":"7246:12:50"},"nodeType":"YulExpressionStatement","src":"7246:12:50"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"7221:2:50"},{"name":"_3","nodeType":"YulIdentifier","src":"7225:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7217:3:50"},"nodeType":"YulFunctionCall","src":"7217:11:50"},{"kind":"number","nodeType":"YulLiteral","src":"7230:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7213:3:50"},"nodeType":"YulFunctionCall","src":"7213:20:50"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"7235:7:50"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"7210:2:50"},"nodeType":"YulFunctionCall","src":"7210:33:50"},"nodeType":"YulIf","src":"7207:53:50"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7286:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"7294:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7282:3:50"},"nodeType":"YulFunctionCall","src":"7282:15:50"},{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"7303:2:50"},{"kind":"number","nodeType":"YulLiteral","src":"7307:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7299:3:50"},"nodeType":"YulFunctionCall","src":"7299:11:50"},{"name":"_3","nodeType":"YulIdentifier","src":"7312:2:50"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"7269:12:50"},"nodeType":"YulFunctionCall","src":"7269:46:50"},"nodeType":"YulExpressionStatement","src":"7269:46:50"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7339:6:50"},{"name":"_3","nodeType":"YulIdentifier","src":"7347:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7335:3:50"},"nodeType":"YulFunctionCall","src":"7335:15:50"},{"kind":"number","nodeType":"YulLiteral","src":"7352:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7331:3:50"},"nodeType":"YulFunctionCall","src":"7331:24:50"},{"kind":"number","nodeType":"YulLiteral","src":"7357:1:50","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7324:6:50"},"nodeType":"YulFunctionCall","src":"7324:35:50"},"nodeType":"YulExpressionStatement","src":"7324:35:50"},{"nodeType":"YulAssignment","src":"7368:16:50","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"7378:6:50"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"7368:6:50"}]}]},"name":"abi_decode_tuple_t_addresst_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6449:9:50","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"6460:7:50","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"6472:6:50","type":""},{"name":"value1","nodeType":"YulTypedName","src":"6480:6:50","type":""}],"src":"6395:995:50"},{"body":{"nodeType":"YulBlock","src":"7594:209:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7611:9:50"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7626:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"7634:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7622:3:50"},"nodeType":"YulFunctionCall","src":"7622:55:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7604:6:50"},"nodeType":"YulFunctionCall","src":"7604:74:50"},"nodeType":"YulExpressionStatement","src":"7604:74:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7698:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"7709:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7694:3:50"},"nodeType":"YulFunctionCall","src":"7694:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"7714:2:50","type":"","value":"64"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7687:6:50"},"nodeType":"YulFunctionCall","src":"7687:30:50"},"nodeType":"YulExpressionStatement","src":"7687:30:50"},{"nodeType":"YulAssignment","src":"7726:71:50","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"7770:6:50"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7782:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"7793:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7778:3:50"},"nodeType":"YulFunctionCall","src":"7778:18:50"}],"functionName":{"name":"abi_encode_struct_PreparedSetupData","nodeType":"YulIdentifier","src":"7734:35:50"},"nodeType":"YulFunctionCall","src":"7734:63:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7726:4:50"}]}]},"name":"abi_encode_tuple_t_address_t_struct$_PreparedSetupData_$4802_memory_ptr__to_t_address_t_struct$_PreparedSetupData_$4802_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7555:9:50","type":""},{"name":"value1","nodeType":"YulTypedName","src":"7566:6:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"7574:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7585:4:50","type":""}],"src":"7395:408:50"},{"body":{"nodeType":"YulBlock","src":"7942:162:50","statements":[{"nodeType":"YulAssignment","src":"7952:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7964:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"7975:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7960:3:50"},"nodeType":"YulFunctionCall","src":"7960:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7952:4:50"}]},{"nodeType":"YulVariableDeclaration","src":"7987:16:50","value":{"kind":"number","nodeType":"YulLiteral","src":"7997:6:50","type":"","value":"0xffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"7991:2:50","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8019:9:50"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"8034:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"8042:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8030:3:50"},"nodeType":"YulFunctionCall","src":"8030:15:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8012:6:50"},"nodeType":"YulFunctionCall","src":"8012:34:50"},"nodeType":"YulExpressionStatement","src":"8012:34:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8066:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"8077:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8062:3:50"},"nodeType":"YulFunctionCall","src":"8062:18:50"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"8086:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"8094:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8082:3:50"},"nodeType":"YulFunctionCall","src":"8082:15:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8055:6:50"},"nodeType":"YulFunctionCall","src":"8055:43:50"},"nodeType":"YulExpressionStatement","src":"8055:43:50"}]},"name":"abi_encode_tuple_t_rational_0_by_1_t_uint16__to_t_uint16_t_uint16__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7903:9:50","type":""},{"name":"value1","nodeType":"YulTypedName","src":"7914:6:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"7922:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7933:4:50","type":""}],"src":"7808:296:50"},{"body":{"nodeType":"YulBlock","src":"8223:125:50","statements":[{"nodeType":"YulAssignment","src":"8233:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8245:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"8256:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8241:3:50"},"nodeType":"YulFunctionCall","src":"8241:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"8233:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8275:9:50"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"8290:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"8298:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8286:3:50"},"nodeType":"YulFunctionCall","src":"8286:55:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8268:6:50"},"nodeType":"YulFunctionCall","src":"8268:74:50"},"nodeType":"YulExpressionStatement","src":"8268:74:50"}]},"name":"abi_encode_tuple_t_contract$_IDAO_$2538__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8192:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"8203:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"8214:4:50","type":""}],"src":"8109:239:50"},{"body":{"nodeType":"YulBlock","src":"8385:95:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8402:1:50","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8409:3:50","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"8414:10:50","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"8405:3:50"},"nodeType":"YulFunctionCall","src":"8405:20:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8395:6:50"},"nodeType":"YulFunctionCall","src":"8395:31:50"},"nodeType":"YulExpressionStatement","src":"8395:31:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8442:1:50","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"8445:4:50","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8435:6:50"},"nodeType":"YulFunctionCall","src":"8435:15:50"},"nodeType":"YulExpressionStatement","src":"8435:15:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8466:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8469:4:50","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8459:6:50"},"nodeType":"YulFunctionCall","src":"8459:15:50"},"nodeType":"YulExpressionStatement","src":"8459:15:50"}]},"name":"panic_error_0x11","nodeType":"YulFunctionDefinition","src":"8353:127:50"},{"body":{"nodeType":"YulBlock","src":"8534:159:50","statements":[{"nodeType":"YulVariableDeclaration","src":"8544:52:50","value":{"kind":"number","nodeType":"YulLiteral","src":"8554:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"8548:2:50","type":""}]},{"nodeType":"YulAssignment","src":"8605:35:50","value":{"arguments":[{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"8621:1:50"},{"name":"_1","nodeType":"YulIdentifier","src":"8624:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8617:3:50"},"nodeType":"YulFunctionCall","src":"8617:10:50"},{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"8633:1:50"},{"name":"_1","nodeType":"YulIdentifier","src":"8636:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8629:3:50"},"nodeType":"YulFunctionCall","src":"8629:10:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"8613:3:50"},"nodeType":"YulFunctionCall","src":"8613:27:50"},"variableNames":[{"name":"diff","nodeType":"YulIdentifier","src":"8605:4:50"}]},{"body":{"nodeType":"YulBlock","src":"8665:22:50","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"8667:16:50"},"nodeType":"YulFunctionCall","src":"8667:18:50"},"nodeType":"YulExpressionStatement","src":"8667:18:50"}]},"condition":{"arguments":[{"name":"diff","nodeType":"YulIdentifier","src":"8655:4:50"},{"name":"_1","nodeType":"YulIdentifier","src":"8661:2:50"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"8652:2:50"},"nodeType":"YulFunctionCall","src":"8652:12:50"},"nodeType":"YulIf","src":"8649:38:50"}]},"name":"checked_sub_t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"8516:1:50","type":""},{"name":"y","nodeType":"YulTypedName","src":"8519:1:50","type":""}],"returnVariables":[{"name":"diff","nodeType":"YulTypedName","src":"8525:4:50","type":""}],"src":"8485:208:50"},{"body":{"nodeType":"YulBlock","src":"8730:95:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8747:1:50","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8754:3:50","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"8759:10:50","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"8750:3:50"},"nodeType":"YulFunctionCall","src":"8750:20:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8740:6:50"},"nodeType":"YulFunctionCall","src":"8740:31:50"},"nodeType":"YulExpressionStatement","src":"8740:31:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8787:1:50","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"8790:4:50","type":"","value":"0x32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8780:6:50"},"nodeType":"YulFunctionCall","src":"8780:15:50"},"nodeType":"YulExpressionStatement","src":"8780:15:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8811:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8814:4:50","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8804:6:50"},"nodeType":"YulFunctionCall","src":"8804:15:50"},"nodeType":"YulExpressionStatement","src":"8804:15:50"}]},"name":"panic_error_0x32","nodeType":"YulFunctionDefinition","src":"8698:127:50"},{"body":{"nodeType":"YulBlock","src":"8877:187:50","statements":[{"nodeType":"YulVariableDeclaration","src":"8887:52:50","value":{"kind":"number","nodeType":"YulLiteral","src":"8897:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"8891:2:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"8948:29:50","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8967:5:50"},{"name":"_1","nodeType":"YulIdentifier","src":"8974:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8963:3:50"},"nodeType":"YulFunctionCall","src":"8963:14:50"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"8952:7:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"9005:22:50","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"9007:16:50"},"nodeType":"YulFunctionCall","src":"9007:18:50"},"nodeType":"YulExpressionStatement","src":"9007:18:50"}]},"condition":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"8992:7:50"},{"name":"_1","nodeType":"YulIdentifier","src":"9001:2:50"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"8989:2:50"},"nodeType":"YulFunctionCall","src":"8989:15:50"},"nodeType":"YulIf","src":"8986:41:50"},{"nodeType":"YulAssignment","src":"9036:22:50","value":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"9047:7:50"},{"kind":"number","nodeType":"YulLiteral","src":"9056:1:50","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9043:3:50"},"nodeType":"YulFunctionCall","src":"9043:15:50"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"9036:3:50"}]}]},"name":"increment_t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"8859:5:50","type":""}],"returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"8869:3:50","type":""}],"src":"8830:234:50"},{"body":{"nodeType":"YulBlock","src":"9216:190:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9233:9:50"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"9248:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"9256:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"9244:3:50"},"nodeType":"YulFunctionCall","src":"9244:55:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9226:6:50"},"nodeType":"YulFunctionCall","src":"9226:74:50"},"nodeType":"YulExpressionStatement","src":"9226:74:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9320:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"9331:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9316:3:50"},"nodeType":"YulFunctionCall","src":"9316:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"9336:2:50","type":"","value":"64"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9309:6:50"},"nodeType":"YulFunctionCall","src":"9309:30:50"},"nodeType":"YulExpressionStatement","src":"9309:30:50"},{"nodeType":"YulAssignment","src":"9348:52:50","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"9373:6:50"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9385:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"9396:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9381:3:50"},"nodeType":"YulFunctionCall","src":"9381:18:50"}],"functionName":{"name":"abi_encode_bytes","nodeType":"YulIdentifier","src":"9356:16:50"},"nodeType":"YulFunctionCall","src":"9356:44:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"9348:4:50"}]}]},"name":"abi_encode_tuple_t_address_t_bytes_memory_ptr__to_t_address_t_bytes_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9177:9:50","type":""},{"name":"value1","nodeType":"YulTypedName","src":"9188:6:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"9196:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"9207:4:50","type":""}],"src":"9069:337:50"}]},"contents":"{\n { }\n function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n if iszero(eq(value, and(value, shl(224, 0xffffffff)))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 96)\n let pos := headStart\n pos := headStart\n let srcPtr := value0\n let i := 0\n for { } lt(i, 0x03) { i := add(i, 1) }\n {\n mstore(pos, and(mload(srcPtr), 0xff))\n let _1 := 0x20\n pos := add(pos, _1)\n srcPtr := add(srcPtr, _1)\n }\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_decode_address(offset) -> value\n {\n value := calldataload(offset)\n if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n }\n function abi_decode_struct_SetupPayload_calldata(offset, end) -> value\n {\n if slt(sub(end, offset), 96) { revert(0, 0) }\n value := offset\n }\n function abi_decode_tuple_t_addresst_struct$_SetupPayload_$4810_calldata_ptr(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n let offset := calldataload(add(headStart, 32))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n value1 := abi_decode_struct_SetupPayload_calldata(add(headStart, offset), dataEnd)\n }\n function panic_error_0x21()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x21)\n revert(0, 0x24)\n }\n function abi_encodeUpdatedPos_struct_MultiTargetPermission(value0, pos) -> updatedPos\n {\n let _1 := mload(value0)\n if iszero(lt(_1, 3))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x21)\n revert(0, 0x24)\n }\n mstore(pos, _1)\n let memberValue0 := mload(add(value0, 0x20))\n let _2 := 0xffffffffffffffffffffffffffffffffffffffff\n mstore(add(pos, 0x20), and(memberValue0, _2))\n mstore(add(pos, 0x40), and(mload(add(value0, 0x40)), _2))\n mstore(add(pos, 0x60), and(mload(add(value0, 0x60)), _2))\n mstore(add(pos, 0x80), mload(add(value0, 0x80)))\n updatedPos := add(pos, 0xa0)\n }\n function abi_encode_tuple_t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n let _1 := 32\n let tail_1 := add(headStart, _1)\n mstore(headStart, _1)\n let pos := tail_1\n let length := mload(value0)\n mstore(tail_1, length)\n pos := add(headStart, 64)\n let srcPtr := add(value0, _1)\n let i := 0\n for { } lt(i, length) { i := add(i, 1) }\n {\n pos := abi_encodeUpdatedPos_struct_MultiTargetPermission(mload(srcPtr), pos)\n srcPtr := add(srcPtr, _1)\n }\n tail := pos\n }\n function abi_decode_tuple_t_addresst_uint16t_struct$_SetupPayload_$4810_calldata_ptr(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n let value := calldataload(add(headStart, 32))\n if iszero(eq(value, and(value, 0xffff))) { revert(0, 0) }\n value1 := value\n let offset := calldataload(add(headStart, 64))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n value2 := abi_decode_struct_SetupPayload_calldata(add(headStart, offset), dataEnd)\n }\n function abi_encode_bytes(value, pos) -> end\n {\n let length := mload(value)\n mstore(pos, length)\n let i := 0\n for { } lt(i, length) { i := add(i, 0x20) }\n {\n let _1 := 0x20\n mstore(add(add(pos, i), _1), mload(add(add(value, i), _1)))\n }\n mstore(add(add(pos, length), 0x20), 0)\n end := add(add(pos, and(add(length, 31), not(31))), 0x20)\n }\n function abi_encode_struct_PreparedSetupData(value, pos) -> end\n {\n let tail := add(pos, 0x40)\n let memberValue0 := mload(value)\n mstore(pos, 0x40)\n let pos_1 := tail\n let length := mload(memberValue0)\n mstore(tail, length)\n pos_1 := add(pos, 96)\n let _1 := 0x20\n let srcPtr := add(memberValue0, _1)\n let i := 0\n for { } lt(i, length) { i := add(i, 1) }\n {\n mstore(pos_1, and(mload(srcPtr), 0xffffffffffffffffffffffffffffffffffffffff))\n pos_1 := add(pos_1, _1)\n srcPtr := add(srcPtr, _1)\n }\n let memberValue0_1 := mload(add(value, _1))\n mstore(add(pos, _1), sub(pos_1, pos))\n let pos_2 := pos_1\n let length_1 := mload(memberValue0_1)\n mstore(pos_1, length_1)\n pos_2 := add(pos_1, _1)\n let srcPtr_1 := add(memberValue0_1, _1)\n let i_1 := 0\n for { } lt(i_1, length_1) { i_1 := add(i_1, 1) }\n {\n pos_2 := abi_encodeUpdatedPos_struct_MultiTargetPermission(mload(srcPtr_1), pos_2)\n srcPtr_1 := add(srcPtr_1, _1)\n }\n end := pos_2\n }\n function abi_encode_tuple_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$4802_memory_ptr__to_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$4802_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n {\n mstore(headStart, 64)\n let tail_1 := abi_encode_bytes(value0, add(headStart, 64))\n mstore(add(headStart, 32), sub(tail_1, headStart))\n tail := abi_encode_struct_PreparedSetupData(value1, tail_1)\n }\n function panic_error_0x41()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function abi_decode_tuple_t_addresst_bytes_memory_ptr(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n let offset := calldataload(add(headStart, 32))\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n let _2 := add(headStart, offset)\n if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n let _3 := calldataload(_2)\n if gt(_3, _1) { panic_error_0x41() }\n let _4 := not(31)\n let memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n mstore(memPtr, _3)\n if gt(add(add(_2, _3), 32), dataEnd) { revert(0, 0) }\n calldatacopy(add(memPtr, 32), add(_2, 32), _3)\n mstore(add(add(memPtr, _3), 32), 0)\n value1 := memPtr\n }\n function abi_encode_tuple_t_address_t_struct$_PreparedSetupData_$4802_memory_ptr__to_t_address_t_struct$_PreparedSetupData_$4802_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n {\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n mstore(add(headStart, 32), 64)\n tail := abi_encode_struct_PreparedSetupData(value1, add(headStart, 64))\n }\n function abi_encode_tuple_t_rational_0_by_1_t_uint16__to_t_uint16_t_uint16__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n let _1 := 0xffff\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n }\n function abi_encode_tuple_t_contract$_IDAO_$2538__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function panic_error_0x11()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n function checked_sub_t_uint160(x, y) -> diff\n {\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n diff := sub(and(x, _1), and(y, _1))\n if gt(diff, _1) { panic_error_0x11() }\n }\n function panic_error_0x32()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n function increment_t_uint160(value) -> ret\n {\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n let value_1 := and(value, _1)\n if eq(value_1, _1) { panic_error_0x11() }\n ret := add(value_1, 1)\n }\n function abi_encode_tuple_t_address_t_bytes_memory_ptr__to_t_address_t_bytes_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n {\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n mstore(add(headStart, 32), 64)\n tail := abi_encode_bytes(value1, add(headStart, 64))\n }\n}","id":50,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{"4977":[{"length":32,"start":210},{"length":32,"start":723}]},"linkReferences":{},"object":"60806040523480156200001157600080fd5b50600436106200007b5760003560e01c80639cb0a12411620000565780639cb0a12414620000fd578063a8a9c29e1462000123578063f10832f1146200014a57600080fd5b806301ffc9a714620000805780632ae9c60014620000ac5780635c60da1b14620000c5575b600080fd5b6200009762000091366004620005f8565b62000171565b60405190151581526020015b60405180910390f35b620000b6620001c4565b604051620000a3919062000624565b6040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152602001620000a3565b620001146200010e3660046200068a565b620001f0565b604051620000a391906200075b565b6200013a62000134366004620007a8565b62000208565b604051620000a3929190620008f7565b620001616200015b3660046200093f565b6200024f565b604051620000a392919062000a0d565b60006001600160e01b0319821663099718b560e41b1480620001a257506001600160e01b03198216621574e360e91b145b80620001be57506301ffc9a760e01b6001600160e01b03198316145b92915050565b620001ce620005cc565b5060408051606081018252600181526004602082015260009181019190915290565b606062000201600060018062000333565b9392505050565b606062000228604051806040016040528060608152602001606081525090565b60405163098990c560e11b8152600060048201526001602482015260440160405180910390fd5b60006200026f604051806040016040528060608152602001606081525090565b6040516001600160a01b038516602482015260009060440160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663189acdbd60e31b17905290506200030581620002f57f000000000000000000000000000000000000000000000000000000000000000090565b6001600160a01b031690620004cc565b925062000313600162000508565b825262000324600060018162000333565b60208301525090939092509050565b6060826001600160a01b0316846001600160a01b031611156200036957604051633a4013cd60e21b815260040160405180910390fd5b62000375848462000a4f565b6001600160a01b031667ffffffffffffffff81111562000399576200039962000929565b604051908082528060200260200182016040528015620003f457816020015b6040805160a081018252600080825260208083018290529282018190526060820181905260808201528252600019909201910181620003b85790505b509050835b836001600160a01b0316816001600160a01b03161015620004c4576040518060a00160405280846002811115620004345762000434620006de565b81526001600160a01b038316602082018190526040820152600060608201527fa280eec51ab8e1bc4b6b0c1b7f1bde785761b787a49db404e3e9338ed9b016ef6080909101528262000487878462000a4f565b6001600160a01b031681518110620004a357620004a362000a79565b60200260200101819052508080620004bb9062000a8f565b915050620003f9565b509392505050565b60008282604051620004de90620005ea565b620004eb92919062000ab8565b604051809103906000f080158015620004c4573d6000803e3d6000fd5b6060816001600160a01b031667ffffffffffffffff8111156200052f576200052f62000929565b60405190808252806020026020018201604052801562000559578160200160208202803683370190505b50905060005b826001600160a01b0316816001600160a01b03161015620005c6578082826001600160a01b03168151811062000599576200059962000a79565b6001600160a01b039092166020928302919091019091015280620005bd8162000a8f565b9150506200055f565b50919050565b60405180606001604052806003906020820280368337509192915050565b6106fe8062000add83390190565b6000602082840312156200060b57600080fd5b81356001600160e01b0319811681146200020157600080fd5b60608101818360005b60038110156200065157815160ff168352602092830192909101906001016200062d565b50505092915050565b80356001600160a01b03811681146200067257600080fd5b919050565b600060608284031215620005c657600080fd5b600080604083850312156200069e57600080fd5b620006a9836200065a565b9150602083013567ffffffffffffffff811115620006c657600080fd5b620006d48582860162000677565b9150509250929050565b634e487b7160e01b600052602160045260246000fd5b60008151600381106200071757634e487b7160e01b600052602160045260246000fd5b8352506020818101516001600160a01b0390811691840191909152604080830151821690840152606080830151909116908301526080908101519082015260a00190565b6020808252825182820181905260009190848201906040850190845b818110156200079c576200078d838551620006f4565b93850193925060010162000777565b50909695505050505050565b600080600060608486031215620007be57600080fd5b620007c9846200065a565b9250602084013561ffff81168114620007e157600080fd5b9150604084013567ffffffffffffffff811115620007fe57600080fd5b6200080c8682870162000677565b9150509250925092565b6000815180845260005b818110156200083e5760208185018101518683018201520162000820565b506000602082860101526020601f19601f83011685010191505092915050565b805160408084528151908401819052600091602091908201906060860190845b81811015620008a55783516001600160a01b0316835292840192918401916001016200087e565b50508483015186820387850152805180835290840192506000918401905b80831015620008ec57620008d9828551620006f4565b91508484019350600183019250620008c3565b509695505050505050565b6040815260006200090c604083018562000816565b82810360208401526200092081856200085e565b95945050505050565b634e487b7160e01b600052604160045260246000fd5b600080604083850312156200095357600080fd5b6200095e836200065a565b9150602083013567ffffffffffffffff808211156200097c57600080fd5b818501915085601f8301126200099157600080fd5b813581811115620009a657620009a662000929565b604051601f8201601f19908116603f01168101908382118183101715620009d157620009d162000929565b81604052828152886020848701011115620009eb57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6001600160a01b038316815260406020820152600062000a3160408301846200085e565b949350505050565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0382811682821603908082111562000a725762000a7262000a39565b5092915050565b634e487b7160e01b600052603260045260246000fd5b60006001600160a01b0380831681810362000aae5762000aae62000a39565b6001019392505050565b6001600160a01b038316815260406020820152600062000a3160408301846200081656fe60806040526040516106fe3803806106fe83398101604081905261002291610319565b61002e82826000610035565b5050610436565b61003e8361006b565b60008251118061004b5750805b156100665761006483836100ab60201b6100291760201c565b505b505050565b610074816100d7565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606100d083836040518060600160405280602781526020016106d7602791396101a9565b9392505050565b6100ea8161022260201b6100551760201c565b6101515760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b806101887f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61023160201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6060600080856001600160a01b0316856040516101c691906103e7565b600060405180830381855af49150503d8060008114610201576040519150601f19603f3d011682016040523d82523d6000602084013e610206565b606091505b50909250905061021886838387610234565b9695505050505050565b6001600160a01b03163b151590565b90565b606083156102a357825160000361029c576001600160a01b0385163b61029c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610148565b50816102ad565b6102ad83836102b5565b949350505050565b8151156102c55781518083602001fd5b8060405162461bcd60e51b81526004016101489190610403565b634e487b7160e01b600052604160045260246000fd5b60005b838110156103105781810151838201526020016102f8565b50506000910152565b6000806040838503121561032c57600080fd5b82516001600160a01b038116811461034357600080fd5b60208401519092506001600160401b038082111561036057600080fd5b818501915085601f83011261037457600080fd5b815181811115610386576103866102df565b604051601f8201601f19908116603f011681019083821181831017156103ae576103ae6102df565b816040528281528860208487010111156103c757600080fd5b6103d88360208301602088016102f5565b80955050505050509250929050565b600082516103f98184602087016102f5565b9190910192915050565b60208152600082518060208401526104228160408501602087016102f5565b601f01601f19169190910160400192915050565b610292806104456000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b61009f565b565b606061004e838360405180606001604052806027815260200161025f602791396100c3565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e8080156100be573d6000f35b3d6000fd5b6060600080856001600160a01b0316856040516100e0919061020f565b600060405180830381855af49150503d806000811461011b576040519150601f19603f3d011682016040523d82523d6000602084013e610120565b606091505b50915091506101318683838761013b565b9695505050505050565b606083156101af5782516000036101a8576001600160a01b0385163b6101a85760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b50816101b9565b6101b983836101c1565b949350505050565b8151156101d15781518083602001fd5b8060405162461bcd60e51b815260040161019f919061022b565b60005b838110156102065781810151838201526020016101ee565b50506000910152565b600082516102218184602087016101eb565b9190910192915050565b602081526000825180602084015261024a8160408501602087016101eb565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH3 0x7B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9CB0A124 GT PUSH3 0x56 JUMPI DUP1 PUSH4 0x9CB0A124 EQ PUSH3 0xFD JUMPI DUP1 PUSH4 0xA8A9C29E EQ PUSH3 0x123 JUMPI DUP1 PUSH4 0xF10832F1 EQ PUSH3 0x14A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH3 0x80 JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH3 0xAC JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH3 0xC5 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x97 PUSH3 0x91 CALLDATASIZE PUSH1 0x4 PUSH3 0x5F8 JUMP JUMPDEST PUSH3 0x171 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0xB6 PUSH3 0x1C4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0xA3 SWAP2 SWAP1 PUSH3 0x624 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH3 0xA3 JUMP JUMPDEST PUSH3 0x114 PUSH3 0x10E CALLDATASIZE PUSH1 0x4 PUSH3 0x68A JUMP JUMPDEST PUSH3 0x1F0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0xA3 SWAP2 SWAP1 PUSH3 0x75B JUMP JUMPDEST PUSH3 0x13A PUSH3 0x134 CALLDATASIZE PUSH1 0x4 PUSH3 0x7A8 JUMP JUMPDEST PUSH3 0x208 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0xA3 SWAP3 SWAP2 SWAP1 PUSH3 0x8F7 JUMP JUMPDEST PUSH3 0x161 PUSH3 0x15B CALLDATASIZE PUSH1 0x4 PUSH3 0x93F JUMP JUMPDEST PUSH3 0x24F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0xA3 SWAP3 SWAP2 SWAP1 PUSH3 0xA0D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x99718B5 PUSH1 0xE4 SHL EQ DUP1 PUSH3 0x1A2 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH3 0x1BE JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH3 0x1CE PUSH3 0x5CC JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH3 0x201 PUSH1 0x0 PUSH1 0x1 DUP1 PUSH3 0x333 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH3 0x228 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x98990C5 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH3 0x26F PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 PUSH1 0x44 ADD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x189ACDBD PUSH1 0xE3 SHL OR SWAP1 MSTORE SWAP1 POP PUSH3 0x305 DUP2 PUSH3 0x2F5 PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH3 0x4CC JUMP JUMPDEST SWAP3 POP PUSH3 0x313 PUSH1 0x1 PUSH3 0x508 JUMP JUMPDEST DUP3 MSTORE PUSH3 0x324 PUSH1 0x0 PUSH1 0x1 DUP2 PUSH3 0x333 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP SWAP1 SWAP4 SWAP1 SWAP3 POP SWAP1 POP JUMP JUMPDEST PUSH1 0x60 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH3 0x369 JUMPI PUSH1 0x40 MLOAD PUSH4 0x3A4013CD PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0x375 DUP5 DUP5 PUSH3 0xA4F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x399 JUMPI PUSH3 0x399 PUSH3 0x929 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH3 0x3F4 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD DUP3 SWAP1 MSTORE SWAP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 DUP3 ADD MSTORE DUP3 MSTORE PUSH1 0x0 NOT SWAP1 SWAP3 ADD SWAP2 ADD DUP2 PUSH3 0x3B8 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP DUP4 JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT ISZERO PUSH3 0x4C4 JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 DUP5 PUSH1 0x2 DUP2 GT ISZERO PUSH3 0x434 JUMPI PUSH3 0x434 PUSH3 0x6DE JUMP JUMPDEST DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x60 DUP3 ADD MSTORE PUSH32 0xA280EEC51AB8E1BC4B6B0C1B7F1BDE785761B787A49DB404E3E9338ED9B016EF PUSH1 0x80 SWAP1 SWAP2 ADD MSTORE DUP3 PUSH3 0x487 DUP8 DUP5 PUSH3 0xA4F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MLOAD DUP2 LT PUSH3 0x4A3 JUMPI PUSH3 0x4A3 PUSH3 0xA79 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP DUP1 DUP1 PUSH3 0x4BB SWAP1 PUSH3 0xA8F JUMP JUMPDEST SWAP2 POP POP PUSH3 0x3F9 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH3 0x4DE SWAP1 PUSH3 0x5EA JUMP JUMPDEST PUSH3 0x4EB SWAP3 SWAP2 SWAP1 PUSH3 0xAB8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH3 0x4C4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x60 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x52F JUMPI PUSH3 0x52F PUSH3 0x929 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH3 0x559 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT ISZERO PUSH3 0x5C6 JUMPI DUP1 DUP3 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MLOAD DUP2 LT PUSH3 0x599 JUMPI PUSH3 0x599 PUSH3 0xA79 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE DUP1 PUSH3 0x5BD DUP2 PUSH3 0xA8F JUMP JUMPDEST SWAP2 POP POP PUSH3 0x55F JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x6FE DUP1 PUSH3 0xADD DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x60B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH3 0x201 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH3 0x651 JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH3 0x62D JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x672 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x5C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x69E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x6A9 DUP4 PUSH3 0x65A JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x6C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x6D4 DUP6 DUP3 DUP7 ADD PUSH3 0x677 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP2 MLOAD PUSH1 0x3 DUP2 LT PUSH3 0x717 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP4 MSTORE POP PUSH1 0x20 DUP2 DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP1 DUP4 ADD MLOAD DUP3 AND SWAP1 DUP5 ADD MSTORE PUSH1 0x60 DUP1 DUP4 ADD MLOAD SWAP1 SWAP2 AND SWAP1 DUP4 ADD MSTORE PUSH1 0x80 SWAP1 DUP2 ADD MLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x79C JUMPI PUSH3 0x78D DUP4 DUP6 MLOAD PUSH3 0x6F4 JUMP JUMPDEST SWAP4 DUP6 ADD SWAP4 SWAP3 POP PUSH1 0x1 ADD PUSH3 0x777 JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH3 0x7BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x7C9 DUP5 PUSH3 0x65A JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH3 0x7E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x7FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x80C DUP7 DUP3 DUP8 ADD PUSH3 0x677 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x83E JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD DUP3 ADD MSTORE ADD PUSH3 0x820 JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x20 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x20 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x40 DUP1 DUP5 MSTORE DUP2 MLOAD SWAP1 DUP5 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x20 SWAP2 SWAP1 DUP3 ADD SWAP1 PUSH1 0x60 DUP7 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x8A5 JUMPI DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH3 0x87E JUMP JUMPDEST POP POP DUP5 DUP4 ADD MLOAD DUP7 DUP3 SUB DUP8 DUP6 ADD MSTORE DUP1 MLOAD DUP1 DUP4 MSTORE SWAP1 DUP5 ADD SWAP3 POP PUSH1 0x0 SWAP2 DUP5 ADD SWAP1 JUMPDEST DUP1 DUP4 LT ISZERO PUSH3 0x8EC JUMPI PUSH3 0x8D9 DUP3 DUP6 MLOAD PUSH3 0x6F4 JUMP JUMPDEST SWAP2 POP DUP5 DUP5 ADD SWAP4 POP PUSH1 0x1 DUP4 ADD SWAP3 POP PUSH3 0x8C3 JUMP JUMPDEST POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 PUSH3 0x90C PUSH1 0x40 DUP4 ADD DUP6 PUSH3 0x816 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 ADD MSTORE PUSH3 0x920 DUP2 DUP6 PUSH3 0x85E JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x953 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x95E DUP4 PUSH3 0x65A JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH3 0x97C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x991 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH3 0x9A6 JUMPI PUSH3 0x9A6 PUSH3 0x929 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH3 0x9D1 JUMPI PUSH3 0x9D1 PUSH3 0x929 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH3 0x9EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH3 0xA31 PUSH1 0x40 DUP4 ADD DUP5 PUSH3 0x85E JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND DUP3 DUP3 AND SUB SWAP1 DUP1 DUP3 GT ISZERO PUSH3 0xA72 JUMPI PUSH3 0xA72 PUSH3 0xA39 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND DUP2 DUP2 SUB PUSH3 0xAAE JUMPI PUSH3 0xAAE PUSH3 0xA39 JUMP JUMPDEST PUSH1 0x1 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH3 0xA31 PUSH1 0x40 DUP4 ADD DUP5 PUSH3 0x816 JUMP INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH2 0x6FE CODESIZE SUB DUP1 PUSH2 0x6FE DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x22 SWAP2 PUSH2 0x319 JUMP JUMPDEST PUSH2 0x2E DUP3 DUP3 PUSH1 0x0 PUSH2 0x35 JUMP JUMPDEST POP POP PUSH2 0x436 JUMP JUMPDEST PUSH2 0x3E DUP4 PUSH2 0x6B JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD GT DUP1 PUSH2 0x4B JUMPI POP DUP1 JUMPDEST ISZERO PUSH2 0x66 JUMPI PUSH2 0x64 DUP4 DUP4 PUSH2 0xAB PUSH1 0x20 SHL PUSH2 0x29 OR PUSH1 0x20 SHR JUMP JUMPDEST POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x74 DUP2 PUSH2 0xD7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xD0 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x6D7 PUSH1 0x27 SWAP2 CODECOPY PUSH2 0x1A9 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xEA DUP2 PUSH2 0x222 PUSH1 0x20 SHL PUSH2 0x55 OR PUSH1 0x20 SHR JUMP JUMPDEST PUSH2 0x151 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313936373A206E657720696D706C656D656E746174696F6E206973206E PUSH1 0x44 DUP3 ADD MSTORE PUSH13 0x1BDD08184818DBDB9D1C9858DD PUSH1 0x9A SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH2 0x188 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC PUSH1 0x0 SHL PUSH2 0x231 PUSH1 0x20 SHL PUSH2 0x64 OR PUSH1 0x20 SHR JUMP JUMPDEST DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0x1C6 SWAP2 SWAP1 PUSH2 0x3E7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x201 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x206 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x218 DUP7 DUP4 DUP4 DUP8 PUSH2 0x234 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x2A3 JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0x29C JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0x29C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x148 JUMP JUMPDEST POP DUP2 PUSH2 0x2AD JUMP JUMPDEST PUSH2 0x2AD DUP4 DUP4 PUSH2 0x2B5 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x2C5 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x148 SWAP2 SWAP1 PUSH2 0x403 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x310 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2F8 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x32C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x343 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x360 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x374 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x386 JUMPI PUSH2 0x386 PUSH2 0x2DF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x3AE JUMPI PUSH2 0x3AE PUSH2 0x2DF JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x3C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3D8 DUP4 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x2F5 JUMP JUMPDEST DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x3F9 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x2F5 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x422 DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x2F5 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x292 DUP1 PUSH2 0x445 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLDATASIZE PUSH2 0x13 JUMPI PUSH2 0x11 PUSH2 0x17 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x11 JUMPDEST PUSH2 0x27 PUSH2 0x22 PUSH2 0x67 JUMP JUMPDEST PUSH2 0x9F JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x60 PUSH2 0x4E DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x25F PUSH1 0x27 SWAP2 CODECOPY PUSH2 0xC3 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9A PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 DUP1 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE PUSH1 0x0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH2 0xBE JUMPI RETURNDATASIZE PUSH1 0x0 RETURN JUMPDEST RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0xE0 SWAP2 SWAP1 PUSH2 0x20F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x11B JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x120 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x131 DUP7 DUP4 DUP4 DUP8 PUSH2 0x13B JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x1AF JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0x1A8 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0x1A8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP DUP2 PUSH2 0x1B9 JUMP JUMPDEST PUSH2 0x1B9 DUP4 DUP4 PUSH2 0x1C1 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x1D1 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x19F SWAP2 SWAP1 PUSH2 0x22B JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x206 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1EE JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x221 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x1EB JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x24A DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x1EB JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A164 PUSH20 0x6F6C6343000811000A416464726573733A206C6F PUSH24 0x2D6C6576656C2064656C65676174652063616C6C20666169 PUSH13 0x6564A164736F6C634300081100 EXP ","sourceMap":"816:1588:32:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1852:293:46;;;;;;:::i;:::-;;:::i;:::-;;;470:14:50;;463:22;445:41;;433:2;418:18;1852:293:46;;;;;;;;631:98:49;;;:::i;:::-;;;;;;;:::i;2184:94:46:-;;;-1:-1:-1;;;;;2257:14:46;1167:55:50;1149:74;;1137:2;1122:18;2184:94:46;1003:226:50;2103:299:32;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1757:307::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;1099:509::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;1852:293:46:-;1938:4;-1:-1:-1;;;;;;1973:46:46;;-1:-1:-1;;;1973:46:46;;:112;;-1:-1:-1;;;;;;;2035:50:46;;-1:-1:-1;;;2035:50:46;1973:112;:165;;;-1:-1:-1;;;;;;;;;;937:40:23;;;2101:37:46;1954:184;1852:293;-1:-1:-1;;1852:293:46:o;631:98:49:-;679:15;;:::i;:::-;-1:-1:-1;706:16:49;;;;;;;;714:1;706:16;;717:1;706:16;;;;-1:-1:-1;706:16:49;;;;;;;;631:98::o;2103:299:32:-;2225:56;2333:62;2349:1;965;;2333:15;:62::i;:::-;2319:76;2103:299;-1:-1:-1;;;2103:299:32:o;1757:307::-;1906:12;1920:24;-1:-1:-1;;;;;;;;;;;;;;;;;;;1920:24:32;2001:56;;-1:-1:-1;;;2001:56:32;;2031:1;2001:56;;;8012:34:50;965:1:32;8062:18:50;;;8055:43;7960:18;;2001:56:32;;;;;;;1099:509;1194:14;1210:42;-1:-1:-1;;;;;;;;;;;;;;;;;;;1210:42:32;1288:106;;-1:-1:-1;;;;;1167:55:50;;1288:106:32;;;1149:74:50;1264:21:32;;1122:18:50;;1288:106:32;;;-1:-1:-1;;1288:106:32;;;;;;;;;;;;;;;;-1:-1:-1;;;1288:106:32;;;;-1:-1:-1;1413:42:32;1288:106;1413:16;2257:14:46;;2184:94;1413:16:32;-1:-1:-1;;;;;1413:32:32;;;:42::i;:::-;1404:51;;1493:14;1505:1;1493:11;:14::i;:::-;1465:42;;1549:52;1465:25;1568:1;1465:25;1549:15;:52::i;:::-;1517:29;;;:84;-1:-1:-1;1099:509:32;;1517:17;;-1:-1:-1;1099:509:32;-1:-1:-1;1099:509:32:o;580:666:30:-;699:56;780:8;-1:-1:-1;;;;;767:21:30;:10;-1:-1:-1;;;;;767:21:30;;763:53;;;797:19;;-1:-1:-1;;;797:19:30;;;;;;;;;;;763:53;879:21;890:10;879:8;:21;:::i;:::-;-1:-1:-1;;;;;837:64:30;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;837:64:30;;-1:-1:-1;;837:64:30;;;;;;;;;;;-1:-1:-1;823:78:30;-1:-1:-1;925:10:30;908:336;941:8;-1:-1:-1;;;;;937:12:30;:1;-1:-1:-1;;;;;937:12:30;;908:336;;;996:241;;;;;;;;1057:2;996:241;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;996:241:30;;;;;;;;;;;;-1:-1:-1;996:241:30;;;;1198:28;996:241;;;;;966:11;978:14;982:10;1088:1;978:14;:::i;:::-;-1:-1:-1;;;;;966:27:30;;;;;;;;;:::i;:::-;;;;;;:271;;;;951:3;;;;;:::i;:::-;;;;908:336;;;;580:666;;;;;:::o;1415:222:47:-;1524:17;1599:6;1614:13;1573:56;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;1529:191:30;1577:24;1633:3;-1:-1:-1;;;;;1619:18:30;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1619:18:30;;1609:28;;1649:9;1644:74;1668:3;-1:-1:-1;;;;;1664:7:30;:1;-1:-1:-1;;;;;1664:7:30;;1644:74;;;1709:1;1688:7;1696:1;-1:-1:-1;;;;;1688:10:30;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1688:23:30;;;:10;;;;;;;;;;;:23;1673:3;;;;:::i;:::-;;;;1644:74;;;;1529:191;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::o;14:286:50:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:50;;209:43;;199:71;;266:1;263;256:12;497:501;673:2;658:18;;662:9;753:6;631:4;787:205;801:4;798:1;795:11;787:205;;;864:13;;879:4;860:24;848:37;;908:4;932:12;;;;967:15;;;;821:1;814:9;787:205;;;791:3;;;497:501;;;;:::o;1234:196::-;1302:20;;-1:-1:-1;;;;;1351:54:50;;1341:65;;1331:93;;1420:1;1417;1410:12;1331:93;1234:196;;;:::o;1435:160::-;1500:5;1545:2;1536:6;1531:3;1527:16;1523:25;1520:45;;;1561:1;1558;1551:12;1600:440;1700:6;1708;1761:2;1749:9;1740:7;1736:23;1732:32;1729:52;;;1777:1;1774;1767:12;1729:52;1800:29;1819:9;1800:29;:::i;:::-;1790:39;;1880:2;1869:9;1865:18;1852:32;1907:18;1899:6;1896:30;1893:50;;;1939:1;1936;1929:12;1893:50;1962:72;2026:7;2017:6;2006:9;2002:22;1962:72;:::i;:::-;1952:82;;;1600:440;;;;;:::o;2045:127::-;2106:10;2101:3;2097:20;2094:1;2087:31;2137:4;2134:1;2127:15;2161:4;2158:1;2151:15;2177:696;2252:10;2293:6;2287:13;2326:1;2322:2;2319:9;2309:140;;2371:10;2366:3;2362:20;2359:1;2352:31;2406:4;2403:1;2396:15;2434:4;2431:1;2424:15;2309:140;2458:15;;-1:-1:-1;2520:4:50;2508:17;;;2502:24;-1:-1:-1;;;;;2619:21:50;;;2603:14;;;2596:45;;;;2695:4;2683:17;;;2677:24;2673:33;;2657:14;;;2650:57;2761:4;2749:17;;;2743:24;2739:33;;;2723:14;;;2716:57;2823:4;2811:17;;;2805:24;2789:14;;;2782:48;2862:4;2853:14;;2177:696::o;2878:728::-;3127:2;3179:21;;;3249:13;;3152:18;;;3271:22;;;3098:4;;3127:2;3350:15;;;;3324:2;3309:18;;;3098:4;3393:187;3407:6;3404:1;3401:13;3393:187;;;3463:69;3528:3;3519:6;3513:13;3463:69;:::i;:::-;3555:15;;;;3456:76;-1:-1:-1;3429:1:50;3422:9;3393:187;;;-1:-1:-1;3597:3:50;;2878:728;-1:-1:-1;;;;;;2878:728:50:o;3611:600::-;3719:6;3727;3735;3788:2;3776:9;3767:7;3763:23;3759:32;3756:52;;;3804:1;3801;3794:12;3756:52;3827:29;3846:9;3827:29;:::i;:::-;3817:39;;3906:2;3895:9;3891:18;3878:32;3950:6;3943:5;3939:18;3932:5;3929:29;3919:57;;3972:1;3969;3962:12;3919:57;3995:5;-1:-1:-1;4051:2:50;4036:18;;4023:32;4078:18;4067:30;;4064:50;;;4110:1;4107;4100:12;4064:50;4133:72;4197:7;4188:6;4177:9;4173:22;4133:72;:::i;:::-;4123:82;;;3611:600;;;;;:::o;4216:422::-;4257:3;4295:5;4289:12;4322:6;4317:3;4310:19;4347:1;4357:162;4371:6;4368:1;4365:13;4357:162;;;4433:4;4489:13;;;4485:22;;4479:29;4461:11;;;4457:20;;4450:59;4386:12;4357:162;;;4361:3;4564:1;4557:4;4548:6;4543:3;4539:16;4535:27;4528:38;4627:4;4620:2;4616:7;4611:2;4603:6;4599:15;4595:29;4590:3;4586:39;4582:50;4575:57;;;4216:422;;;;:::o;4643:1162::-;4776:12;;4742:4;4797:17;;;4863:19;;4733:14;;;4891:20;;;4703:3;;4960:4;;4987:21;;;;4938:2;4929:12;;;4703:3;5036:224;5050:6;5047:1;5044:13;5036:224;;;5117:13;;-1:-1:-1;;;;;5113:62:50;5099:77;;5235:15;;;;5198:14;;;;5072:1;5065:9;5036:224;;;-1:-1:-1;;5297:14:50;;;5291:21;5342:15;;;5328:12;;;5321:37;5410:21;;5440:23;;;5520;;;;-1:-1:-1;5563:1:50;;5481:14;;;5573:205;5589:8;5584:3;5581:17;5573:205;;;5653:73;5720:5;5709:8;5703:15;5653:73;:::i;:::-;5644:82;;5765:2;5755:8;5751:17;5739:29;;5617:1;5612:3;5608:11;5601:18;;5573:205;;;-1:-1:-1;5794:5:50;4643:1162;-1:-1:-1;;;;;;4643:1162:50:o;5810:448::-;6055:2;6044:9;6037:21;6018:4;6081:44;6121:2;6110:9;6106:18;6098:6;6081:44;:::i;:::-;6173:9;6165:6;6161:22;6156:2;6145:9;6141:18;6134:50;6201:51;6245:6;6237;6201:51;:::i;:::-;6193:59;5810:448;-1:-1:-1;;;;;5810:448:50:o;6263:127::-;6324:10;6319:3;6315:20;6312:1;6305:31;6355:4;6352:1;6345:15;6379:4;6376:1;6369:15;6395:995;6472:6;6480;6533:2;6521:9;6512:7;6508:23;6504:32;6501:52;;;6549:1;6546;6539:12;6501:52;6572:29;6591:9;6572:29;:::i;:::-;6562:39;;6652:2;6641:9;6637:18;6624:32;6675:18;6716:2;6708:6;6705:14;6702:34;;;6732:1;6729;6722:12;6702:34;6770:6;6759:9;6755:22;6745:32;;6815:7;6808:4;6804:2;6800:13;6796:27;6786:55;;6837:1;6834;6827:12;6786:55;6873:2;6860:16;6895:2;6891;6888:10;6885:36;;;6901:18;;:::i;:::-;6976:2;6970:9;6944:2;7030:13;;-1:-1:-1;;7026:22:50;;;7050:2;7022:31;7018:40;7006:53;;;7074:18;;;7094:22;;;7071:46;7068:72;;;7120:18;;:::i;:::-;7160:10;7156:2;7149:22;7195:2;7187:6;7180:18;7235:7;7230:2;7225;7221;7217:11;7213:20;7210:33;7207:53;;;7256:1;7253;7246:12;7207:53;7312:2;7307;7303;7299:11;7294:2;7286:6;7282:15;7269:46;7357:1;7352:2;7347;7339:6;7335:15;7331:24;7324:35;7378:6;7368:16;;;;;;;6395:995;;;;;:::o;7395:408::-;-1:-1:-1;;;;;7626:6:50;7622:55;7611:9;7604:74;7714:2;7709;7698:9;7694:18;7687:30;7585:4;7734:63;7793:2;7782:9;7778:18;7770:6;7734:63;:::i;:::-;7726:71;7395:408;-1:-1:-1;;;;7395:408:50:o;8353:127::-;8414:10;8409:3;8405:20;8402:1;8395:31;8445:4;8442:1;8435:15;8469:4;8466:1;8459:15;8485:208;-1:-1:-1;;;;;8629:10:50;;;8617;;;8613:27;;8652:12;;;8649:38;;;8667:18;;:::i;:::-;8649:38;8485:208;;;;:::o;8698:127::-;8759:10;8754:3;8750:20;8747:1;8740:31;8790:4;8787:1;8780:15;8814:4;8811:1;8804:15;8830:234;8869:3;-1:-1:-1;;;;;8974:2:50;8967:5;8963:14;9001:2;8992:7;8989:15;8986:41;;9007:18;;:::i;:::-;9056:1;9043:15;;8830:234;-1:-1:-1;;;8830:234:50:o;9069:337::-;-1:-1:-1;;;;;9248:6:50;9244:55;9233:9;9226:74;9336:2;9331;9320:9;9316:18;9309:30;9207:4;9356:44;9396:2;9385:9;9381:18;9373:6;9356:44;:::i"},"gasEstimates":{"creation":{"codeDepositCost":"916600","executionCost":"infinite","totalCost":"infinite"},"external":{"implementation()":"infinite","prepareInstallation(address,bytes)":"infinite","prepareUninstallation(address,(address,address[],bytes))":"infinite","prepareUpdate(address,uint16,(address,address[],bytes))":"660","protocolVersion()":"infinite","supportsInterface(bytes4)":"482"}},"methodIdentifiers":{"implementation()":"5c60da1b","prepareInstallation(address,bytes)":"f10832f1","prepareUninstallation(address,(address,address[],bytes))":"9cb0a124","prepareUpdate(address,uint16,(address,address[],bytes))":"a8a9c29e","protocolVersion()":"2ae9c600","supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ConflictingValues\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"fromBuild\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"thisBuild\",\"type\":\"uint16\"}],\"name\":\"InvalidUpdatePath\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_dao\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"prepareInstallation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"plugin\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address[]\",\"name\":\"helpers\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"enum PermissionLib.Operation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"condition\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PermissionLib.MultiTargetPermission[]\",\"name\":\"permissions\",\"type\":\"tuple[]\"}],\"internalType\":\"struct IPluginSetup.PreparedSetupData\",\"name\":\"preparedSetupData\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_dao\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"plugin\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"currentHelpers\",\"type\":\"address[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IPluginSetup.SetupPayload\",\"name\":\"_payload\",\"type\":\"tuple\"}],\"name\":\"prepareUninstallation\",\"outputs\":[{\"components\":[{\"internalType\":\"enum PermissionLib.Operation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"condition\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PermissionLib.MultiTargetPermission[]\",\"name\":\"permissions\",\"type\":\"tuple[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_dao\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"_fromBuild\",\"type\":\"uint16\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"plugin\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"currentHelpers\",\"type\":\"address[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IPluginSetup.SetupPayload\",\"name\":\"_payload\",\"type\":\"tuple\"}],\"name\":\"prepareUpdate\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address[]\",\"name\":\"helpers\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"enum PermissionLib.Operation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"condition\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PermissionLib.MultiTargetPermission[]\",\"name\":\"permissions\",\"type\":\"tuple[]\"}],\"internalType\":\"struct IPluginSetup.PreparedSetupData\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"protocolVersion\",\"outputs\":[{\"internalType\":\"uint8[3]\",\"name\":\"\",\"type\":\"uint8[3]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"DO NOT USE IN PRODUCTION!\",\"errors\":{\"InvalidUpdatePath(uint16,uint16)\":[{\"params\":{\"fromBuild\":\"The build number to update from.\",\"thisBuild\":\"The build number of this setup to update to.\"}}]},\"kind\":\"dev\",\"methods\":{\"implementation()\":{\"details\":\"The implementation can be instantiated via the `new` keyword, cloned via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)), or proxied via the UUPS proxy pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\",\"returns\":{\"_0\":\"The address of the plugin implementation contract.\"}},\"prepareInstallation(address,bytes)\":{\"params\":{\"_dao\":\"The address of the installing DAO.\",\"_data\":\"The bytes-encoded data containing the input parameters for the installation as specified in the plugin's build metadata JSON file.\"},\"returns\":{\"plugin\":\"The address of the `Plugin` contract being prepared for installation.\",\"preparedSetupData\":\"The deployed plugin's relevant data which consists of helpers and permissions.\"}},\"prepareUninstallation(address,(address,address[],bytes))\":{\"params\":{\"_dao\":\"The address of the uninstalling DAO.\",\"_payload\":\"The relevant data necessary for the `prepareUninstallation`. See above.\"},\"returns\":{\"permissions\":\"The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the uninstalling DAO.\"}},\"prepareUpdate(address,uint16,(address,address[],bytes))\":{\"details\":\"The default implementation for the initial build 1 that reverts because no earlier build exists.\",\"params\":{\"_dao\":\"The address of the updating DAO.\",\"_fromBuild\":\"The build number of the plugin to update from.\",\"_payload\":\"The relevant data necessary for the `prepareUpdate`. See above.\"},\"returns\":{\"_0\":\"The initialization data to be passed to upgradeable contracts when the update is applied in the `PluginSetupProcessor`.\",\"_1\":\"The deployed plugin's relevant data which consists of helpers and permissions.\"}},\"protocolVersion()\":{\"details\":\"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\",\"returns\":{\"_0\":\"Returns the semantic Aragon OSx protocol version number.\"}},\"supportsInterface(bytes4)\":{\"params\":{\"_interfaceId\":\"The ID of the interface.\"},\"returns\":{\"_0\":\"Returns `true` if the interface is supported.\"}}},\"version\":1},\"userdoc\":{\"errors\":{\"InvalidUpdatePath(uint16,uint16)\":[{\"notice\":\"Thrown when an update path is not available, for example, if this is the initial build.\"}]},\"kind\":\"user\",\"methods\":{\"implementation()\":{\"notice\":\"Returns the plugin implementation address.\"},\"prepareInstallation(address,bytes)\":{\"notice\":\"Prepares the installation of a plugin.\"},\"prepareUninstallation(address,(address,address[],bytes))\":{\"notice\":\"Prepares the uninstallation of a plugin.\"},\"prepareUpdate(address,uint16,(address,address[],bytes))\":{\"notice\":\"Prepares the update of a plugin.\"},\"protocolVersion()\":{\"notice\":\"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Checks if this or the parent contract supports an interface by its ID.\"}},\"notice\":\"A mock plugin setup of an upgradeable plugin to be deployed via the UUPS pattern. v1.1 (Release 1, Build 1)\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/mocks/plugin/PluginUUPSUpgradeableSetupMock.sol\":\"PluginUUPSUpgradeableSetupMockBuild1\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/interfaces/IERC1967Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (interfaces/IERC1967.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\\n *\\n * _Available since v4.8.3._\\n */\\ninterface IERC1967Upgradeable {\\n /**\\n * @dev Emitted when the implementation is upgraded.\\n */\\n event Upgraded(address indexed implementation);\\n\\n /**\\n * @dev Emitted when the admin account has changed.\\n */\\n event AdminChanged(address previousAdmin, address newAdmin);\\n\\n /**\\n * @dev Emitted when the beacon is changed.\\n */\\n event BeaconUpgraded(address indexed beacon);\\n}\\n\",\"keccak256\":\"0x47d6e06872b12e72c79d1b5eb55842f860b5fb1207b2317c2358d2766b950a7b\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822ProxiableUpgradeable {\\n /**\\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n * address.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy.\\n */\\n function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../beacon/IBeaconUpgradeable.sol\\\";\\nimport \\\"../../interfaces/IERC1967Upgradeable.sol\\\";\\nimport \\\"../../interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\nimport \\\"../../utils/StorageSlotUpgradeable.sol\\\";\\nimport {Initializable} from \\\"../utils/Initializable.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n */\\nabstract contract ERC1967UpgradeUpgradeable is Initializable, IERC1967Upgradeable {\\n // This is the keccak-256 hash of \\\"eip1967.proxy.rollback\\\" subtracted by 1\\n bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n /**\\n * @dev Storage slot with the address of the current implementation.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n function __ERC1967Upgrade_init() internal onlyInitializing {\\n }\\n\\n function __ERC1967Upgrade_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _getImplementation() internal view returns (address) {\\n return StorageSlotUpgradeable.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 implementation slot.\\n */\\n function _setImplementation(address newImplementation) private {\\n require(AddressUpgradeable.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n StorageSlotUpgradeable.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n }\\n\\n /**\\n * @dev Perform implementation upgrade\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeTo(address newImplementation) internal {\\n _setImplementation(newImplementation);\\n emit Upgraded(newImplementation);\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCall(address newImplementation, bytes memory data, bool forceCall) internal {\\n _upgradeTo(newImplementation);\\n if (data.length > 0 || forceCall) {\\n AddressUpgradeable.functionDelegateCall(newImplementation, data);\\n }\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCallUUPS(address newImplementation, bytes memory data, bool forceCall) internal {\\n // Upgrades from old implementations will perform a rollback test. This test requires the new\\n // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n // this special case will break upgrade paths from old UUPS implementation to new ones.\\n if (StorageSlotUpgradeable.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n _setImplementation(newImplementation);\\n } else {\\n try IERC1822ProxiableUpgradeable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n require(slot == _IMPLEMENTATION_SLOT, \\\"ERC1967Upgrade: unsupported proxiableUUID\\\");\\n } catch {\\n revert(\\\"ERC1967Upgrade: new implementation is not UUPS\\\");\\n }\\n _upgradeToAndCall(newImplementation, data, forceCall);\\n }\\n }\\n\\n /**\\n * @dev Storage slot with the admin of the contract.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _getAdmin() internal view returns (address) {\\n return StorageSlotUpgradeable.getAddressSlot(_ADMIN_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 admin slot.\\n */\\n function _setAdmin(address newAdmin) private {\\n require(newAdmin != address(0), \\\"ERC1967: new admin is the zero address\\\");\\n StorageSlotUpgradeable.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n */\\n function _changeAdmin(address newAdmin) internal {\\n emit AdminChanged(_getAdmin(), newAdmin);\\n _setAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\\n */\\n bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n /**\\n * @dev Returns the current beacon.\\n */\\n function _getBeacon() internal view returns (address) {\\n return StorageSlotUpgradeable.getAddressSlot(_BEACON_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new beacon in the EIP1967 beacon slot.\\n */\\n function _setBeacon(address newBeacon) private {\\n require(AddressUpgradeable.isContract(newBeacon), \\\"ERC1967: new beacon is not a contract\\\");\\n require(\\n AddressUpgradeable.isContract(IBeaconUpgradeable(newBeacon).implementation()),\\n \\\"ERC1967: beacon implementation is not a contract\\\"\\n );\\n StorageSlotUpgradeable.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n }\\n\\n /**\\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n *\\n * Emits a {BeaconUpgraded} event.\\n */\\n function _upgradeBeaconToAndCall(address newBeacon, bytes memory data, bool forceCall) internal {\\n _setBeacon(newBeacon);\\n emit BeaconUpgraded(newBeacon);\\n if (data.length > 0 || forceCall) {\\n AddressUpgradeable.functionDelegateCall(IBeaconUpgradeable(newBeacon).implementation(), data);\\n }\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x7795808e3899c805254e3ae58074b20f799b466e3f43e057e47bedee5fb771f8\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeaconUpgradeable {\\n /**\\n * @dev Must return an address that can be used as a delegate call target.\\n *\\n * {BeaconProxy} will check that this address is a contract.\\n */\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/UUPSUpgradeable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport \\\"../ERC1967/ERC1967UpgradeUpgradeable.sol\\\";\\nimport {Initializable} from \\\"./Initializable.sol\\\";\\n\\n/**\\n * @dev An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an\\n * {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy.\\n *\\n * A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is\\n * reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing\\n * `UUPSUpgradeable` with a custom implementation of upgrades.\\n *\\n * The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism.\\n *\\n * _Available since v4.1._\\n */\\nabstract contract UUPSUpgradeable is Initializable, IERC1822ProxiableUpgradeable, ERC1967UpgradeUpgradeable {\\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable state-variable-assignment\\n address private immutable __self = address(this);\\n\\n /**\\n * @dev Check that the execution is being performed through a delegatecall call and that the execution context is\\n * a proxy contract with an implementation (as defined in ERC1967) pointing to self. This should only be the case\\n * for UUPS and transparent proxies that are using the current contract as their implementation. Execution of a\\n * function through ERC1167 minimal proxies (clones) would not normally pass this test, but is not guaranteed to\\n * fail.\\n */\\n modifier onlyProxy() {\\n require(address(this) != __self, \\\"Function must be called through delegatecall\\\");\\n require(_getImplementation() == __self, \\\"Function must be called through active proxy\\\");\\n _;\\n }\\n\\n /**\\n * @dev Check that the execution is not being performed through a delegate call. This allows a function to be\\n * callable on the implementing contract but not through proxies.\\n */\\n modifier notDelegated() {\\n require(address(this) == __self, \\\"UUPSUpgradeable: must not be called through delegatecall\\\");\\n _;\\n }\\n\\n function __UUPSUpgradeable_init() internal onlyInitializing {\\n }\\n\\n function __UUPSUpgradeable_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the\\n * implementation. It is used to validate the implementation's compatibility when performing an upgrade.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\\n */\\n function proxiableUUID() external view virtual override notDelegated returns (bytes32) {\\n return _IMPLEMENTATION_SLOT;\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy to `newImplementation`.\\n *\\n * Calls {_authorizeUpgrade}.\\n *\\n * Emits an {Upgraded} event.\\n *\\n * @custom:oz-upgrades-unsafe-allow-reachable delegatecall\\n */\\n function upgradeTo(address newImplementation) public virtual onlyProxy {\\n _authorizeUpgrade(newImplementation);\\n _upgradeToAndCallUUPS(newImplementation, new bytes(0), false);\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call\\n * encoded in `data`.\\n *\\n * Calls {_authorizeUpgrade}.\\n *\\n * Emits an {Upgraded} event.\\n *\\n * @custom:oz-upgrades-unsafe-allow-reachable delegatecall\\n */\\n function upgradeToAndCall(address newImplementation, bytes memory data) public payable virtual onlyProxy {\\n _authorizeUpgrade(newImplementation);\\n _upgradeToAndCallUUPS(newImplementation, data, true);\\n }\\n\\n /**\\n * @dev Function that should revert when `msg.sender` is not authorized to upgrade the contract. Called by\\n * {upgradeTo} and {upgradeToAndCall}.\\n *\\n * Normally, this function will use an xref:access.adoc[access control] modifier such as {Ownable-onlyOwner}.\\n *\\n * ```solidity\\n * function _authorizeUpgrade(address) internal override onlyOwner {}\\n * ```\\n */\\n function _authorizeUpgrade(address newImplementation) internal virtual;\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0xefb41f5c1a00249b7a99f0782f8c557865605426a3fb6e5fe9ae334293ae4f33\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n function __Context_init() internal onlyInitializing {\\n }\\n\\n function __Context_init_unchained() internal onlyInitializing {\\n }\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n function _contextSuffixLength() internal view virtual returns (uint256) {\\n return 0;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x75097e35253e7fb282ee4d7f27a80eaacfa759923185bf17302a89cbc059c5ef\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/StorageSlot.sol)\\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```solidity\\n * contract ERC1967 {\\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n * function _getImplementation() internal view returns (address) {\\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n * }\\n *\\n * function _setImplementation(address newImplementation) internal {\\n * require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n * }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._\\n * _Available since v4.9 for `string`, `bytes`._\\n */\\nlibrary StorageSlotUpgradeable {\\n struct AddressSlot {\\n address value;\\n }\\n\\n struct BooleanSlot {\\n bool value;\\n }\\n\\n struct Bytes32Slot {\\n bytes32 value;\\n }\\n\\n struct Uint256Slot {\\n uint256 value;\\n }\\n\\n struct StringSlot {\\n string value;\\n }\\n\\n struct BytesSlot {\\n bytes value;\\n }\\n\\n /**\\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n */\\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n */\\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n */\\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n */\\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` with member `value` located at `slot`.\\n */\\n function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\\n */\\n function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` with member `value` located at `slot`.\\n */\\n function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\\n */\\n function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n}\\n\",\"keccak256\":\"0x07ac95acad040f1fb1f6120dd0aa5f702db69446e95f82613721879d30de0908\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165Upgradeable.sol\\\";\\nimport {Initializable} from \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165Upgradeable is Initializable, IERC165Upgradeable {\\n function __ERC165_init() internal onlyInitializing {\\n }\\n\\n function __ERC165_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165Upgradeable).interfaceId;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0xd90d7723512df65ae417adaf0801042940f0dabd60039ceeaffe34aa5b238da1\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165Upgradeable {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/IERC1967.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (interfaces/IERC1967.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\\n *\\n * _Available since v4.8.3._\\n */\\ninterface IERC1967 {\\n /**\\n * @dev Emitted when the implementation is upgraded.\\n */\\n event Upgraded(address indexed implementation);\\n\\n /**\\n * @dev Emitted when the admin account has changed.\\n */\\n event AdminChanged(address previousAdmin, address newAdmin);\\n\\n /**\\n * @dev Emitted when the beacon is changed.\\n */\\n event BeaconUpgraded(address indexed beacon);\\n}\\n\",\"keccak256\":\"0x3cbef5ebc24b415252e2f8c0c9254555d30d9f085603b4b80d9b5ed20ab87e90\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822Proxiable {\\n /**\\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n * address.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy.\\n */\\n function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/Clones.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/Clones.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev https://eips.ethereum.org/EIPS/eip-1167[EIP 1167] is a standard for\\n * deploying minimal proxy contracts, also known as \\\"clones\\\".\\n *\\n * > To simply and cheaply clone contract functionality in an immutable way, this standard specifies\\n * > a minimal bytecode implementation that delegates all calls to a known, fixed address.\\n *\\n * The library includes functions to deploy a proxy using either `create` (traditional deployment) or `create2`\\n * (salted deterministic deployment). It also includes functions to predict the addresses of clones deployed using the\\n * deterministic method.\\n *\\n * _Available since v3.4._\\n */\\nlibrary Clones {\\n /**\\n * @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`.\\n *\\n * This function uses the create opcode, which should never revert.\\n */\\n function clone(address implementation) internal returns (address instance) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n // Cleans the upper 96 bits of the `implementation` word, then packs the first 3 bytes\\n // of the `implementation` address with the bytecode before the address.\\n mstore(0x00, or(shr(0xe8, shl(0x60, implementation)), 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000))\\n // Packs the remaining 17 bytes of `implementation` with the bytecode after the address.\\n mstore(0x20, or(shl(0x78, implementation), 0x5af43d82803e903d91602b57fd5bf3))\\n instance := create(0, 0x09, 0x37)\\n }\\n require(instance != address(0), \\\"ERC1167: create failed\\\");\\n }\\n\\n /**\\n * @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`.\\n *\\n * This function uses the create2 opcode and a `salt` to deterministically deploy\\n * the clone. Using the same `implementation` and `salt` multiple time will revert, since\\n * the clones cannot be deployed twice at the same address.\\n */\\n function cloneDeterministic(address implementation, bytes32 salt) internal returns (address instance) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n // Cleans the upper 96 bits of the `implementation` word, then packs the first 3 bytes\\n // of the `implementation` address with the bytecode before the address.\\n mstore(0x00, or(shr(0xe8, shl(0x60, implementation)), 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000))\\n // Packs the remaining 17 bytes of `implementation` with the bytecode after the address.\\n mstore(0x20, or(shl(0x78, implementation), 0x5af43d82803e903d91602b57fd5bf3))\\n instance := create2(0, 0x09, 0x37, salt)\\n }\\n require(instance != address(0), \\\"ERC1167: create2 failed\\\");\\n }\\n\\n /**\\n * @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}.\\n */\\n function predictDeterministicAddress(\\n address implementation,\\n bytes32 salt,\\n address deployer\\n ) internal pure returns (address predicted) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n let ptr := mload(0x40)\\n mstore(add(ptr, 0x38), deployer)\\n mstore(add(ptr, 0x24), 0x5af43d82803e903d91602b57fd5bf3ff)\\n mstore(add(ptr, 0x14), implementation)\\n mstore(ptr, 0x3d602d80600a3d3981f3363d3d373d3d3d363d73)\\n mstore(add(ptr, 0x58), salt)\\n mstore(add(ptr, 0x78), keccak256(add(ptr, 0x0c), 0x37))\\n predicted := keccak256(add(ptr, 0x43), 0x55)\\n }\\n }\\n\\n /**\\n * @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}.\\n */\\n function predictDeterministicAddress(\\n address implementation,\\n bytes32 salt\\n ) internal view returns (address predicted) {\\n return predictDeterministicAddress(implementation, salt, address(this));\\n }\\n}\\n\",\"keccak256\":\"0x01f055f5c26ba25d7f83e9aa9ba877fbea4d0bf22227de046ea67494bc932999\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (proxy/ERC1967/ERC1967Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../Proxy.sol\\\";\\nimport \\\"./ERC1967Upgrade.sol\\\";\\n\\n/**\\n * @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an\\n * implementation address that can be changed. This address is stored in storage in the location specified by\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the\\n * implementation behind the proxy.\\n */\\ncontract ERC1967Proxy is Proxy, ERC1967Upgrade {\\n /**\\n * @dev Initializes the upgradeable proxy with an initial implementation specified by `_logic`.\\n *\\n * If `_data` is nonempty, it's used as data in a delegate call to `_logic`. This will typically be an encoded\\n * function call, and allows initializing the storage of the proxy like a Solidity constructor.\\n */\\n constructor(address _logic, bytes memory _data) payable {\\n _upgradeToAndCall(_logic, _data, false);\\n }\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _implementation() internal view virtual override returns (address impl) {\\n return ERC1967Upgrade._getImplementation();\\n }\\n}\\n\",\"keccak256\":\"0xa2b22da3032e50b55f95ec1d13336102d675f341167aa76db571ef7f8bb7975d\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../beacon/IBeacon.sol\\\";\\nimport \\\"../../interfaces/IERC1967.sol\\\";\\nimport \\\"../../interfaces/draft-IERC1822.sol\\\";\\nimport \\\"../../utils/Address.sol\\\";\\nimport \\\"../../utils/StorageSlot.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n */\\nabstract contract ERC1967Upgrade is IERC1967 {\\n // This is the keccak-256 hash of \\\"eip1967.proxy.rollback\\\" subtracted by 1\\n bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n /**\\n * @dev Storage slot with the address of the current implementation.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _getImplementation() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 implementation slot.\\n */\\n function _setImplementation(address newImplementation) private {\\n require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n }\\n\\n /**\\n * @dev Perform implementation upgrade\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeTo(address newImplementation) internal {\\n _setImplementation(newImplementation);\\n emit Upgraded(newImplementation);\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCall(address newImplementation, bytes memory data, bool forceCall) internal {\\n _upgradeTo(newImplementation);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(newImplementation, data);\\n }\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCallUUPS(address newImplementation, bytes memory data, bool forceCall) internal {\\n // Upgrades from old implementations will perform a rollback test. This test requires the new\\n // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n // this special case will break upgrade paths from old UUPS implementation to new ones.\\n if (StorageSlot.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n _setImplementation(newImplementation);\\n } else {\\n try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n require(slot == _IMPLEMENTATION_SLOT, \\\"ERC1967Upgrade: unsupported proxiableUUID\\\");\\n } catch {\\n revert(\\\"ERC1967Upgrade: new implementation is not UUPS\\\");\\n }\\n _upgradeToAndCall(newImplementation, data, forceCall);\\n }\\n }\\n\\n /**\\n * @dev Storage slot with the admin of the contract.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _getAdmin() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_ADMIN_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 admin slot.\\n */\\n function _setAdmin(address newAdmin) private {\\n require(newAdmin != address(0), \\\"ERC1967: new admin is the zero address\\\");\\n StorageSlot.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n */\\n function _changeAdmin(address newAdmin) internal {\\n emit AdminChanged(_getAdmin(), newAdmin);\\n _setAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\\n */\\n bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n /**\\n * @dev Returns the current beacon.\\n */\\n function _getBeacon() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_BEACON_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new beacon in the EIP1967 beacon slot.\\n */\\n function _setBeacon(address newBeacon) private {\\n require(Address.isContract(newBeacon), \\\"ERC1967: new beacon is not a contract\\\");\\n require(\\n Address.isContract(IBeacon(newBeacon).implementation()),\\n \\\"ERC1967: beacon implementation is not a contract\\\"\\n );\\n StorageSlot.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n }\\n\\n /**\\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n *\\n * Emits a {BeaconUpgraded} event.\\n */\\n function _upgradeBeaconToAndCall(address newBeacon, bytes memory data, bool forceCall) internal {\\n _setBeacon(newBeacon);\\n emit BeaconUpgraded(newBeacon);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x3b21ae06bf5957f73fa16754b0669c77b7abd8ba6c072d35c3281d446fdb86c2\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (proxy/Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\\n * be specified by overriding the virtual {_implementation} function.\\n *\\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\\n * different contract through the {_delegate} function.\\n *\\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\\n */\\nabstract contract Proxy {\\n /**\\n * @dev Delegates the current call to `implementation`.\\n *\\n * This function does not return to its internal call site, it will return directly to the external caller.\\n */\\n function _delegate(address implementation) internal virtual {\\n assembly {\\n // Copy msg.data. We take full control of memory in this inline assembly\\n // block because it will not return to Solidity code. We overwrite the\\n // Solidity scratch pad at memory position 0.\\n calldatacopy(0, 0, calldatasize())\\n\\n // Call the implementation.\\n // out and outsize are 0 because we don't know the size yet.\\n let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)\\n\\n // Copy the returned data.\\n returndatacopy(0, 0, returndatasize())\\n\\n switch result\\n // delegatecall returns 0 on error.\\n case 0 {\\n revert(0, returndatasize())\\n }\\n default {\\n return(0, returndatasize())\\n }\\n }\\n }\\n\\n /**\\n * @dev This is a virtual function that should be overridden so it returns the address to which the fallback function\\n * and {_fallback} should delegate.\\n */\\n function _implementation() internal view virtual returns (address);\\n\\n /**\\n * @dev Delegates the current call to the address returned by `_implementation()`.\\n *\\n * This function does not return to its internal call site, it will return directly to the external caller.\\n */\\n function _fallback() internal virtual {\\n _beforeFallback();\\n _delegate(_implementation());\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\\n * function in the contract matches the call data.\\n */\\n fallback() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data\\n * is empty.\\n */\\n receive() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`\\n * call, or as part of the Solidity `fallback` or `receive` functions.\\n *\\n * If overridden should call `super._beforeFallback()`.\\n */\\n function _beforeFallback() internal virtual {}\\n}\\n\",\"keccak256\":\"0xc130fe33f1b2132158531a87734153293f6d07bc263ff4ac90e85da9c82c0e27\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeacon {\\n /**\\n * @dev Must return an address that can be used as a delegate call target.\\n *\\n * {BeaconProxy} will check that this address is a contract.\\n */\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/StorageSlot.sol)\\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```solidity\\n * contract ERC1967 {\\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n * function _getImplementation() internal view returns (address) {\\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n * }\\n *\\n * function _setImplementation(address newImplementation) internal {\\n * require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n * }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._\\n * _Available since v4.9 for `string`, `bytes`._\\n */\\nlibrary StorageSlot {\\n struct AddressSlot {\\n address value;\\n }\\n\\n struct BooleanSlot {\\n bool value;\\n }\\n\\n struct Bytes32Slot {\\n bytes32 value;\\n }\\n\\n struct Uint256Slot {\\n uint256 value;\\n }\\n\\n struct StringSlot {\\n string value;\\n }\\n\\n struct BytesSlot {\\n bytes value;\\n }\\n\\n /**\\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n */\\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n */\\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n */\\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n */\\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` with member `value` located at `slot`.\\n */\\n function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\\n */\\n function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` with member `value` located at `slot`.\\n */\\n function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\\n */\\n function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n}\\n\",\"keccak256\":\"0xf09e68aa0dc6722a25bc46490e8d48ed864466d17313b8a0b254c36b54e49899\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165 is IERC165 {\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165).interfaceId;\\n }\\n}\\n\",\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"src/dao/IDAO.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IDAO\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for DAOs within the Aragon App DAO framework.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IDAO {\\n /// @notice The action struct to be consumed by the DAO's `execute` function resulting in an external call.\\n /// @param to The address to call.\\n /// @param value The native token value to be sent with the call.\\n /// @param data The bytes-encoded function selector and calldata for the call.\\n struct Action {\\n address to;\\n uint256 value;\\n bytes data;\\n }\\n\\n /// @notice Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\\n /// @param _where The address of the contract.\\n /// @param _who The address of a EOA or contract to give the permissions.\\n /// @param _permissionId The permission identifier.\\n /// @param _data The optional data passed to the `PermissionCondition` registered.\\n /// @return Returns true if the address has permission, false if not.\\n function hasPermission(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes memory _data\\n ) external view returns (bool);\\n\\n /// @notice Updates the DAO metadata (e.g., an IPFS hash).\\n /// @param _metadata The IPFS hash of the new metadata object.\\n function setMetadata(bytes calldata _metadata) external;\\n\\n /// @notice Emitted when the DAO metadata is updated.\\n /// @param metadata The IPFS hash of the new metadata object.\\n event MetadataSet(bytes metadata);\\n\\n /// @notice Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted.\\n /// @param _callId The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce.\\n /// @param _actions The array of actions.\\n /// @param _allowFailureMap A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @return The array of results obtained from the executed actions in `bytes`.\\n /// @return The resulting failure map containing the actions have actually failed.\\n function execute(\\n bytes32 _callId,\\n Action[] memory _actions,\\n uint256 _allowFailureMap\\n ) external returns (bytes[] memory, uint256);\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param actor The address of the caller.\\n /// @param callId The ID of the call.\\n /// @param actions The array of actions executed.\\n /// @param allowFailureMap The allow failure map encoding which actions are allowed to fail.\\n /// @param failureMap The failure map encoding which actions have failed.\\n /// @param execResults The array with the results of the executed actions.\\n /// @dev The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce.\\n event Executed(\\n address indexed actor,\\n bytes32 callId,\\n Action[] actions,\\n uint256 allowFailureMap,\\n uint256 failureMap,\\n bytes[] execResults\\n );\\n\\n /// @notice Emitted when a standard callback is registered.\\n /// @param interfaceId The ID of the interface.\\n /// @param callbackSelector The selector of the callback function.\\n /// @param magicNumber The magic number to be registered for the callback function selector.\\n event StandardCallbackRegistered(\\n bytes4 interfaceId,\\n bytes4 callbackSelector,\\n bytes4 magicNumber\\n );\\n\\n /// @notice Deposits (native) tokens to the DAO contract with a reference string.\\n /// @param _token The address of the token or address(0) in case of the native token.\\n /// @param _amount The amount of tokens to deposit.\\n /// @param _reference The reference describing the deposit reason.\\n function deposit(address _token, uint256 _amount, string calldata _reference) external payable;\\n\\n /// @notice Emitted when a token deposit has been made to the DAO.\\n /// @param sender The address of the sender.\\n /// @param token The address of the deposited token.\\n /// @param amount The amount of tokens deposited.\\n /// @param _reference The reference describing the deposit reason.\\n event Deposited(\\n address indexed sender,\\n address indexed token,\\n uint256 amount,\\n string _reference\\n );\\n\\n /// @notice Emitted when a native token deposit has been made to the DAO.\\n /// @dev This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).\\n /// @param sender The address of the sender.\\n /// @param amount The amount of native tokens deposited.\\n event NativeTokenDeposited(address sender, uint256 amount);\\n\\n /// @notice Setter for the trusted forwarder verifying the meta transaction.\\n /// @param _trustedForwarder The trusted forwarder address.\\n function setTrustedForwarder(address _trustedForwarder) external;\\n\\n /// @notice Getter for the trusted forwarder verifying the meta transaction.\\n /// @return The trusted forwarder address.\\n function getTrustedForwarder() external view returns (address);\\n\\n /// @notice Emitted when a new TrustedForwarder is set on the DAO.\\n /// @param forwarder the new forwarder address.\\n event TrustedForwarderSet(address forwarder);\\n\\n /// @notice Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\\n /// @param _hash The hash of the data to be signed.\\n /// @param _signature The signature byte array associated with `_hash`.\\n /// @return Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not.\\n function isValidSignature(bytes32 _hash, bytes memory _signature) external returns (bytes4);\\n\\n /// @notice Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\\n /// @param _interfaceId The ID of the interface.\\n /// @param _callbackSelector The selector of the callback function.\\n /// @param _magicNumber The magic number to be registered for the function signature.\\n function registerStandardCallback(\\n bytes4 _interfaceId,\\n bytes4 _callbackSelector,\\n bytes4 _magicNumber\\n ) external;\\n\\n /// @notice Removed function being left here to not corrupt the IDAO interface ID. Any call will revert.\\n /// @dev Introduced in v1.0.0. Removed in v1.4.0.\\n function setSignatureValidator(address) external;\\n}\\n\",\"keccak256\":\"0xb7f615523c26de042edce98731c658f44a1edb2464387ac1b642c4c69f57128e\",\"license\":\"AGPL-3.0-or-later\"},\"src/mocks/plugin/PluginSetupMockData.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {PermissionLib} from \\\"../../permission/PermissionLib.sol\\\";\\n\\naddress constant NO_CONDITION = address(0);\\n\\nerror ConflictingValues();\\n\\n/// @notice Creates a mock `MultiTargetPermission` array by converting a range of `uint160` values into `address` values.\\n/// @param rangeStart The start of the range.\\n/// @param rangeEnd The end of the range (that is not included).\\n/// @param op The permission operation type.\\n/// @return permissions The mock array of permissions.\\n/// @dev DO NOT USE IN PRODUCTION!\\nfunction mockPermissions(\\n uint160 rangeStart,\\n uint160 rangeEnd,\\n PermissionLib.Operation op\\n) pure returns (PermissionLib.MultiTargetPermission[] memory permissions) {\\n if (rangeStart > rangeEnd) revert ConflictingValues();\\n\\n permissions = new PermissionLib.MultiTargetPermission[](rangeEnd - rangeStart);\\n\\n for (uint160 i = rangeStart; i < rangeEnd; i++) {\\n permissions[i - rangeStart] = PermissionLib.MultiTargetPermission({\\n operation: op,\\n where: address(i),\\n who: address(i),\\n condition: PermissionLib.NO_CONDITION,\\n permissionId: keccak256(\\\"MOCK_PERMISSION\\\")\\n });\\n }\\n}\\n\\n/// @notice Creates a mock array of helper addresses of specified length by converting `uint160` values starting from 0 into `address` values.\\n/// @param len The length of the helper array.\\n/// @return helpers The mock array of helper addresses.\\n/// @dev DO NOT USE IN PRODUCTION!\\nfunction mockHelpers(uint160 len) pure returns (address[] memory helpers) {\\n helpers = new address[](len);\\n\\n for (uint160 i = 0; i < len; i++) {\\n helpers[i] = address(i);\\n }\\n}\\n\",\"keccak256\":\"0x529d1b7ea4c348fe18edf81a044792ca8aa1f6ad9a7d2edfd35e38bf8372abf9\",\"license\":\"AGPL-3.0-or-later\"},\"src/mocks/plugin/PluginUUPSUpgradeableMock.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\n/* solhint-disable one-contract-per-file */\\npragma solidity ^0.8.8;\\n\\nimport {PluginUUPSUpgradeable} from \\\"../../plugin/PluginUUPSUpgradeable.sol\\\";\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice A mock upgradeable plugin to be deployed via the UUPS proxy pattern.\\n/// v1.1 (Release 1, Build 1)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableMockBuild1 is PluginUUPSUpgradeable {\\n uint256 public state1;\\n\\n function initialize(IDAO _dao) external initializer {\\n __PluginUUPSUpgradeable_init(_dao);\\n state1 = 1;\\n }\\n}\\n\\n/// @notice A mock upgradeable plugin to be deployed via the UUPS proxy pattern.\\n/// v1.1 (Release 1, Build 2)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableMockBuild2 is PluginUUPSUpgradeable {\\n uint256 public state1;\\n uint256 public state2;\\n\\n function initialize(IDAO _dao) external reinitializer(2) {\\n __PluginUUPSUpgradeable_init(_dao);\\n state1 = 1;\\n state2 = 2;\\n }\\n\\n function initializeFrom(uint16 _previousBuild) external reinitializer(2) {\\n if (_previousBuild < 2) {\\n state2 = 2;\\n }\\n }\\n}\\n\\n/// @notice A mock upgradeable plugin to be deployed via the UUPS proxy pattern.\\n/// v1.1 (Release 1, Build 3)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableMockBuild3 is PluginUUPSUpgradeable {\\n uint256 public state1;\\n uint256 public state2;\\n uint256 public state3;\\n\\n function initialize(IDAO _dao) external reinitializer(3) {\\n __PluginUUPSUpgradeable_init(_dao);\\n state1 = 1;\\n state2 = 2;\\n state3 = 3;\\n }\\n\\n function initializeFrom(uint16 _previousBuild) external reinitializer(3) {\\n if (_previousBuild < 2) {\\n state2 = 2;\\n }\\n if (_previousBuild < 3) {\\n state3 = 3;\\n }\\n }\\n}\\n\\n/// @notice A mock upgradeable plugin missing an initializer function.\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableMockBad is PluginUUPSUpgradeable {\\n uint256 public state1;\\n\\n function notAnInitializer(IDAO _dao) external {\\n __PluginUUPSUpgradeable_init(_dao);\\n state1 = 1;\\n }\\n}\\n\",\"keccak256\":\"0x2917df3b1da0de27f58cf531afeaa4e6c4285717247cbdd9ecc7880ae5cb9cb0\",\"license\":\"AGPL-3.0-or-later\"},\"src/mocks/plugin/PluginUUPSUpgradeableSetupMock.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\n/* solhint-disable one-contract-per-file */\\npragma solidity ^0.8.8;\\n\\nimport {PermissionLib} from \\\"../../permission/PermissionLib.sol\\\";\\nimport {IPluginSetup} from \\\"../../plugin/setup/IPluginSetup.sol\\\";\\nimport {PluginUpgradeableSetup} from \\\"../../plugin/setup/PluginUpgradeableSetup.sol\\\";\\nimport {ProxyLib} from \\\"../../utils/deployment/ProxyLib.sol\\\";\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\nimport {mockPermissions, mockHelpers} from \\\"./PluginSetupMockData.sol\\\";\\nimport {PluginUUPSUpgradeableMockBuild1, PluginUUPSUpgradeableMockBuild2, PluginUUPSUpgradeableMockBuild3} from \\\"./PluginUUPSUpgradeableMock.sol\\\";\\n\\n/// @notice A mock plugin setup of an upgradeable plugin to be deployed via the UUPS pattern.\\n/// v1.1 (Release 1, Build 1)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableSetupMockBuild1 is PluginUpgradeableSetup {\\n using ProxyLib for address;\\n\\n uint16 internal constant THIS_BUILD = 1;\\n\\n constructor() PluginUpgradeableSetup(address(new PluginUUPSUpgradeableMockBuild1())) {}\\n\\n /// @inheritdoc IPluginSetup\\n function prepareInstallation(\\n address _dao,\\n bytes memory\\n ) public returns (address plugin, PreparedSetupData memory preparedSetupData) {\\n bytes memory initData = abi.encodeCall(\\n PluginUUPSUpgradeableMockBuild1.initialize,\\n (IDAO(_dao))\\n );\\n plugin = implementation().deployUUPSProxy(initData);\\n preparedSetupData.helpers = mockHelpers(1);\\n preparedSetupData.permissions = mockPermissions(0, 1, PermissionLib.Operation.Grant);\\n }\\n\\n /// @inheritdoc IPluginSetup\\n /// @dev The default implementation for the initial build 1 that reverts because no earlier build exists.\\n function prepareUpdate(\\n address _dao,\\n uint16 _fromBuild,\\n SetupPayload calldata _payload\\n ) external pure virtual returns (bytes memory, PreparedSetupData memory) {\\n (_dao, _fromBuild, _payload);\\n revert InvalidUpdatePath({fromBuild: 0, thisBuild: THIS_BUILD});\\n }\\n\\n /// @inheritdoc IPluginSetup\\n function prepareUninstallation(\\n address _dao,\\n SetupPayload calldata _payload\\n ) external pure returns (PermissionLib.MultiTargetPermission[] memory permissions) {\\n (_dao, _payload);\\n permissions = mockPermissions(0, THIS_BUILD, PermissionLib.Operation.Revoke);\\n }\\n}\\n\\n/// @notice A mock plugin setup of an upgradeable plugin to be deployed via the UUPS pattern.\\n/// v1.2 (Release 1, Build 2)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableSetupMockBuild2 is PluginUpgradeableSetup {\\n using ProxyLib for address;\\n\\n uint16 internal constant THIS_BUILD = 2;\\n\\n constructor() PluginUpgradeableSetup(address(new PluginUUPSUpgradeableMockBuild2())) {}\\n\\n /// @inheritdoc IPluginSetup\\n function prepareInstallation(\\n address _dao,\\n bytes memory\\n ) external returns (address plugin, PreparedSetupData memory preparedSetupData) {\\n bytes memory initData = abi.encodeCall(\\n PluginUUPSUpgradeableMockBuild2.initialize,\\n (IDAO(_dao))\\n );\\n plugin = implementation().deployUUPSProxy(initData);\\n preparedSetupData.helpers = mockHelpers(THIS_BUILD);\\n preparedSetupData.permissions = mockPermissions(\\n 0,\\n THIS_BUILD,\\n PermissionLib.Operation.Grant\\n );\\n }\\n\\n /// @inheritdoc IPluginSetup\\n function prepareUpdate(\\n address _dao,\\n uint16 _fromBuild,\\n SetupPayload calldata _payload\\n )\\n external\\n pure\\n override\\n returns (bytes memory initData, PreparedSetupData memory preparedSetupData)\\n {\\n (_dao, _payload);\\n\\n // Update from Build 1\\n if (_fromBuild == 1) {\\n preparedSetupData.helpers = mockHelpers(THIS_BUILD);\\n initData = abi.encodeCall(PluginUUPSUpgradeableMockBuild2.initializeFrom, (_fromBuild));\\n preparedSetupData.permissions = mockPermissions(\\n _fromBuild,\\n THIS_BUILD,\\n PermissionLib.Operation.Grant\\n );\\n }\\n }\\n\\n /// @inheritdoc IPluginSetup\\n function prepareUninstallation(\\n address _dao,\\n SetupPayload calldata _payload\\n ) external pure returns (PermissionLib.MultiTargetPermission[] memory permissions) {\\n (_dao, _payload);\\n permissions = mockPermissions(0, THIS_BUILD, PermissionLib.Operation.Revoke);\\n }\\n}\\n\\n/// @notice A mock plugin setup of an upgradeable plugin to be deployed via the UUPS pattern.\\n/// v1.3 (Release 1, Build 3)\\ncontract PluginUUPSUpgradeableSetupMockBuild3 is PluginUpgradeableSetup {\\n using ProxyLib for address;\\n\\n uint16 internal constant THIS_BUILD = 3;\\n\\n constructor() PluginUpgradeableSetup(address(new PluginUUPSUpgradeableMockBuild3())) {}\\n\\n /// @inheritdoc IPluginSetup\\n function prepareInstallation(\\n address _dao,\\n bytes memory\\n ) external returns (address plugin, PreparedSetupData memory preparedSetupData) {\\n bytes memory initData = abi.encodeCall(\\n PluginUUPSUpgradeableMockBuild3.initialize,\\n (IDAO(_dao))\\n );\\n plugin = implementation().deployUUPSProxy(initData);\\n preparedSetupData.helpers = mockHelpers(THIS_BUILD);\\n preparedSetupData.permissions = mockPermissions(\\n 0,\\n THIS_BUILD,\\n PermissionLib.Operation.Grant\\n );\\n }\\n\\n /// @inheritdoc IPluginSetup\\n function prepareUpdate(\\n address _dao,\\n uint16 _fromBuild,\\n SetupPayload calldata _payload\\n )\\n external\\n pure\\n override\\n returns (bytes memory initData, PreparedSetupData memory preparedSetupData)\\n {\\n (_dao, _payload);\\n\\n // Update from Build 1\\n if (_fromBuild == 1) {\\n preparedSetupData.helpers = mockHelpers(THIS_BUILD);\\n initData = abi.encodeCall(PluginUUPSUpgradeableMockBuild3.initializeFrom, (_fromBuild));\\n preparedSetupData.permissions = mockPermissions(\\n _fromBuild,\\n THIS_BUILD,\\n PermissionLib.Operation.Grant\\n );\\n\\n // If this update path should not be supported, you can revert with an error, e.g.,\\n // revert InvalidUpdatePath({fromBuild: _fromBuild, thisBuild: THIS_BUILD});\\n }\\n\\n // Update from Build 2\\n if (_fromBuild == 2) {\\n preparedSetupData.helpers = mockHelpers(THIS_BUILD);\\n initData = abi.encodeCall(PluginUUPSUpgradeableMockBuild3.initializeFrom, (_fromBuild));\\n preparedSetupData.permissions = mockPermissions(\\n _fromBuild,\\n THIS_BUILD,\\n PermissionLib.Operation.Grant\\n );\\n }\\n }\\n\\n /// @inheritdoc IPluginSetup\\n function prepareUninstallation(\\n address _dao,\\n SetupPayload calldata _payload\\n ) external pure returns (PermissionLib.MultiTargetPermission[] memory permissions) {\\n (_dao, _payload);\\n permissions = mockPermissions(0, THIS_BUILD, PermissionLib.Operation.Revoke);\\n }\\n}\\n\",\"keccak256\":\"0x6be5a7611fe85f0e6e1ea08f42bcce810bc4973da1eaa04c88445b8d9af130ba\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/PermissionLib.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title PermissionLib\\n/// @author Aragon X - 2021-2023\\n/// @notice A library containing objects for permission processing.\\n/// @custom:security-contact sirt@aragon.org\\nlibrary PermissionLib {\\n /// @notice A constant expressing that no condition is applied to a permission.\\n address public constant NO_CONDITION = address(0);\\n\\n /// @notice The types of permission operations available in the `PermissionManager`.\\n /// @param Grant The grant operation setting a permission without a condition.\\n /// @param Revoke The revoke operation removing a permission (that was granted with or without a condition).\\n /// @param GrantWithCondition The grant operation setting a permission with a condition.\\n enum Operation {\\n Grant,\\n Revoke,\\n GrantWithCondition\\n }\\n\\n /// @notice A struct containing the information for a permission to be applied on a single target contract without a condition.\\n /// @param operation The permission operation type.\\n /// @param who The address (EOA or contract) receiving the permission.\\n /// @param permissionId The permission identifier.\\n struct SingleTargetPermission {\\n Operation operation;\\n address who;\\n bytes32 permissionId;\\n }\\n\\n /// @notice A struct containing the information for a permission to be applied on multiple target contracts, optionally, with a condition.\\n /// @param operation The permission operation type.\\n /// @param where The address of the target contract for which `who` receives permission.\\n /// @param who The address (EOA or contract) receiving the permission.\\n /// @param condition The `PermissionCondition` that will be asked for authorization on calls connected to the specified permission identifier.\\n /// @param permissionId The permission identifier.\\n struct MultiTargetPermission {\\n Operation operation;\\n address where;\\n address who;\\n address condition;\\n bytes32 permissionId;\\n }\\n}\\n\",\"keccak256\":\"0x470faf3c4891ebc6420ef6cc09f6098917568ccc79268c90954d1478199b6097\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/DaoAuthorizableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ContextUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\\\";\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\nimport {_auth} from \\\"./auth.sol\\\";\\n\\n/// @title DaoAuthorizableUpgradeable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract contract providing a meta-transaction compatible modifier for upgradeable or cloneable contracts to authorize function calls through an associated DAO.\\n/// @dev Make sure to call `__DaoAuthorizableUpgradeable_init` during initialization of the inheriting contract.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract DaoAuthorizableUpgradeable is ContextUpgradeable {\\n /// @notice The associated DAO managing the permissions of inheriting contracts.\\n IDAO private dao_;\\n\\n /// @notice Initializes the contract by setting the associated DAO.\\n /// @param _dao The associated DAO address.\\n // solhint-disable-next-line func-name-mixedcase\\n function __DaoAuthorizableUpgradeable_init(IDAO _dao) internal onlyInitializing {\\n dao_ = _dao;\\n }\\n\\n /// @notice Returns the DAO contract.\\n /// @return The DAO contract.\\n function dao() public view returns (IDAO) {\\n return dao_;\\n }\\n\\n /// @notice A modifier to make functions on inheriting contracts authorized. Permissions to call the function are checked through the associated DAO's permission manager.\\n /// @param _permissionId The permission identifier required to call the method this modifier is applied to.\\n modifier auth(bytes32 _permissionId) {\\n _auth(dao_, address(this), _msgSender(), _permissionId, _msgData());\\n _;\\n }\\n\\n /// @notice This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain (see [OpenZeppelin's guide about storage gaps](https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps)).\\n uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0x7fac6b01b037ba1cb9d6a22d3f43b0785037dcf496ffb672434d9bf7227d2585\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/auth.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice Thrown if a call is unauthorized in the associated DAO.\\n/// @param dao The associated DAO.\\n/// @param where The context in which the authorization reverted.\\n/// @param who The address (EOA or contract) missing the permission.\\n/// @param permissionId The permission identifier.\\nerror DaoUnauthorized(address dao, address where, address who, bytes32 permissionId);\\n\\n/// @notice A free function checking if a caller is granted permissions on a target contract via a permission identifier that redirects the approval to a `PermissionCondition` if this was specified in the setup.\\n/// @param _where The address of the target contract for which `who` receives permission.\\n/// @param _who The address (EOA or contract) owning the permission.\\n/// @param _permissionId The permission identifier.\\n/// @param _data The optional data passed to the `PermissionCondition` registered.\\n/// @custom:security-contact sirt@aragon.org\\nfunction _auth(\\n IDAO _dao,\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes calldata _data\\n) view {\\n if (!_dao.hasPermission(_where, _who, _permissionId, _data))\\n revert DaoUnauthorized({\\n dao: address(_dao),\\n where: _where,\\n who: _who,\\n permissionId: _permissionId\\n });\\n}\\n\",\"keccak256\":\"0x878764b4f87fe0651fb3798fb9cb87c952f8c6caf6ae79c7f09de84df6c00298\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/IPlugin.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IPlugin\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the traits of a plugin.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IPlugin {\\n enum PluginType {\\n UUPS,\\n Cloneable,\\n Constructable\\n }\\n\\n /// @notice Returns the plugin's type\\n function pluginType() external view returns (PluginType);\\n}\\n\",\"keccak256\":\"0xc57cd0d10b6380ab7f54c713a509e88fd8f4ad9288313a0e8e12b8887817ddfe\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/PluginUUPSUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {UUPSUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\\\";\\nimport {IERC1822ProxiableUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport {ERC165Upgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\\\";\\n\\nimport {IProtocolVersion} from \\\"../utils/versioning/IProtocolVersion.sol\\\";\\nimport {ProtocolVersion} from \\\"../utils/versioning/ProtocolVersion.sol\\\";\\nimport {DaoAuthorizableUpgradeable} from \\\"../permission/auth/DaoAuthorizableUpgradeable.sol\\\";\\nimport {IDAO} from \\\"../dao/IDAO.sol\\\";\\nimport {IPlugin} from \\\"./IPlugin.sol\\\";\\n\\n/// @title PluginUUPSUpgradeable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract, upgradeable contract to inherit from when creating a plugin being deployed via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract PluginUUPSUpgradeable is\\n IPlugin,\\n ERC165Upgradeable,\\n UUPSUpgradeable,\\n DaoAuthorizableUpgradeable,\\n ProtocolVersion\\n{\\n // NOTE: When adding new state variables to the contract, the size of `_gap` has to be adapted below as well.\\n address public target;\\n\\n /// @dev Emitted each time the Target is set.\\n event TargetSet(address indexed previousTarget, address indexed newTarget);\\n\\n /// @notice Disables the initializers on the implementation contract to prevent it from being left uninitialized.\\n /// @custom:oz-upgrades-unsafe-allow constructor\\n constructor() {\\n _disableInitializers();\\n }\\n\\n /// @inheritdoc IPlugin\\n function pluginType() public pure override returns (PluginType) {\\n return PluginType.UUPS;\\n }\\n\\n /// @notice The ID of the permission required to call the `_authorizeUpgrade` function.\\n bytes32 public constant UPGRADE_PLUGIN_PERMISSION_ID = keccak256(\\\"UPGRADE_PLUGIN_PERMISSION\\\");\\n\\n /// @notice Initializes the plugin by storing the associated DAO.\\n /// @param _dao The DAO contract.\\n // solhint-disable-next-line func-name-mixedcase\\n function __PluginUUPSUpgradeable_init(IDAO _dao) internal virtual onlyInitializing {\\n __DaoAuthorizableUpgradeable_init(_dao);\\n }\\n\\n /// @dev Sets the target to a new target (`newTarget`).\\n /// @notice Can only be called by the current owner. TODO\\n function setTarget(address _target) public {\\n address previousTarget = target;\\n target = _target;\\n emit TargetSet(previousTarget, _target);\\n }\\n\\n /// @notice Checks if an interface is supported by this or its parent contract.\\n /// @param _interfaceId The ID of the interface.\\n /// @return Returns `true` if the interface is supported.\\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\\n return\\n _interfaceId == type(IPlugin).interfaceId ||\\n _interfaceId == type(IProtocolVersion).interfaceId ||\\n _interfaceId == type(IERC1822ProxiableUpgradeable).interfaceId ||\\n super.supportsInterface(_interfaceId);\\n }\\n\\n /// @notice Returns the address of the implementation contract in the [proxy storage slot](https://eips.ethereum.org/EIPS/eip-1967) slot the [UUPS proxy](https://eips.ethereum.org/EIPS/eip-1822) is pointing to.\\n /// @return The address of the implementation contract.\\n function implementation() public view returns (address) {\\n return _getImplementation();\\n }\\n\\n /// @notice Forwards the actions to the currently set `target` for the execution.\\n /// @param _callId Identifier for this execution.\\n /// @param _actions actions that will be eventually called.\\n /// @param _allowFailureMap Bitmap-encoded number. TODO:\\n /// @return execResults address of the implementation contract.\\n /// @return failureMap address of the implementation contract.\\n function _execute(\\n bytes32 _callId,\\n IDAO.Action[] calldata _actions,\\n uint256 _allowFailureMap\\n ) internal virtual returns (bytes[] memory execResults, uint256 failureMap) {\\n (execResults, failureMap) = IDAO(target).execute(_callId, _actions, _allowFailureMap);\\n }\\n\\n /// @notice Forwards the actions to the `target` for the execution.\\n /// @param _target Forwards the actions to the specific target.\\n /// @param _callId Identifier for this execution.\\n /// @param _actions actions that will be eventually called.\\n /// @param _allowFailureMap Bitmap-encoded number. TODO:\\n /// @return execResults address of the implementation contract.\\n /// @return failureMap address of the implementation contract.\\n function _execute(\\n address _target,\\n bytes32 _callId,\\n IDAO.Action[] calldata _actions,\\n uint256 _allowFailureMap\\n ) internal virtual returns (bytes[] memory execResults, uint256 failureMap) {\\n (execResults, failureMap) = IDAO(_target).execute(_callId, _actions, _allowFailureMap);\\n }\\n\\n /// @notice Internal method authorizing the upgrade of the contract via the [upgradeability mechanism for UUPS proxies](https://docs.openzeppelin.com/contracts/4.x/api/proxy#UUPSUpgradeable) (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\\n /// @dev The caller must have the `UPGRADE_PLUGIN_PERMISSION_ID` permission.\\n function _authorizeUpgrade(\\n address\\n )\\n internal\\n virtual\\n override\\n auth(UPGRADE_PLUGIN_PERMISSION_ID)\\n // solhint-disable-next-line no-empty-blocks\\n {\\n\\n }\\n\\n /// @notice This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain (see [OpenZeppelin's guide about storage gaps](https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps)).\\n uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0xce1d0126b3ae8c8afc887fba9f49b1cc35f84f1c1d5bf4cadee330c7ae15014f\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/setup/IPluginSetup.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {PermissionLib} from \\\"../../permission/PermissionLib.sol\\\";\\n\\n// solhint-disable-next-line no-unused-import\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @title IPluginSetup\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for a plugin setup contract to be consumed by the `PluginSetupProcessor` for plugin installations, updates, and uninstallations.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IPluginSetup {\\n /// @notice The data associated with a prepared setup.\\n /// @param helpers The address array of helpers (contracts or EOAs) associated with this plugin version after the installation or update.\\n /// @param permissions The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the installing or updating DAO.\\n struct PreparedSetupData {\\n address[] helpers;\\n PermissionLib.MultiTargetPermission[] permissions;\\n }\\n\\n /// @notice The payload for plugin updates and uninstallations containing the existing contracts as well as optional data to be consumed by the plugin setup.\\n /// @param plugin The address of the `Plugin`.\\n /// @param currentHelpers The address array of all current helpers (contracts or EOAs) associated with the plugin to update from.\\n /// @param data The bytes-encoded data containing the input parameters for the preparation of update/uninstall as specified in the corresponding ABI on the version's metadata.\\n struct SetupPayload {\\n address plugin;\\n address[] currentHelpers;\\n bytes data;\\n }\\n\\n /// @notice Prepares the installation of a plugin.\\n /// @param _dao The address of the installing DAO.\\n /// @param _data The bytes-encoded data containing the input parameters for the installation as specified in the plugin's build metadata JSON file.\\n /// @return plugin The address of the `Plugin` contract being prepared for installation.\\n /// @return preparedSetupData The deployed plugin's relevant data which consists of helpers and permissions.\\n function prepareInstallation(\\n address _dao,\\n bytes calldata _data\\n ) external returns (address plugin, PreparedSetupData memory preparedSetupData);\\n\\n /// @notice Prepares the update of a plugin.\\n /// @param _dao The address of the updating DAO.\\n /// @param _fromBuild The build number of the plugin to update from.\\n /// @param _payload The relevant data necessary for the `prepareUpdate`. See above.\\n /// @return initData The initialization data to be passed to upgradeable contracts when the update is applied in the `PluginSetupProcessor`.\\n /// @return preparedSetupData The deployed plugin's relevant data which consists of helpers and permissions.\\n function prepareUpdate(\\n address _dao,\\n uint16 _fromBuild,\\n SetupPayload calldata _payload\\n ) external returns (bytes memory initData, PreparedSetupData memory preparedSetupData);\\n\\n /// @notice Prepares the uninstallation of a plugin.\\n /// @param _dao The address of the uninstalling DAO.\\n /// @param _payload The relevant data necessary for the `prepareUninstallation`. See above.\\n /// @return permissions The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the uninstalling DAO.\\n function prepareUninstallation(\\n address _dao,\\n SetupPayload calldata _payload\\n ) external returns (PermissionLib.MultiTargetPermission[] memory permissions);\\n\\n /// @notice Returns the plugin implementation address.\\n /// @return The address of the plugin implementation contract.\\n /// @dev The implementation can be instantiated via the `new` keyword, cloned via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)), or proxied via the UUPS proxy pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0x21c99995208039ac6ace219b6f273243811dc2aa66399e8e499e43ec30b82fa9\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/setup/PluginUpgradeableSetup.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ERC165} from \\\"@openzeppelin/contracts/utils/introspection/ERC165.sol\\\";\\n\\nimport {IProtocolVersion} from \\\"../../utils/versioning/IProtocolVersion.sol\\\";\\nimport {ProtocolVersion} from \\\"../../utils/versioning/ProtocolVersion.sol\\\";\\nimport {IPluginSetup} from \\\"./IPluginSetup.sol\\\";\\n\\n/// @title PluginUpgradeableSetup\\n/// @author Aragon X - 2022-2024\\n/// @notice An abstract contract to inherit from to implement the plugin setup for upgradeable plugins, i.e, `PluginUUPSUpgradeable` being deployed via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822) and [ERC-1967](https://eips.ethereum.org/EIPS/eip-1967)).\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract PluginUpgradeableSetup is ERC165, IPluginSetup, ProtocolVersion {\\n /// @notice The address of the plugin implementation contract for initial block explorer verification\\n /// and to create [ERC-1967](https://eips.ethereum.org/EIPS/eip-1967) UUPS proxies from.\\n address internal immutable IMPLEMENTATION;\\n\\n /// @notice Thrown when an update path is not available, for example, if this is the initial build.\\n /// @param fromBuild The build number to update from.\\n /// @param thisBuild The build number of this setup to update to.\\n error InvalidUpdatePath(uint16 fromBuild, uint16 thisBuild);\\n\\n /// @notice The contract constructor, that setting the plugin implementation contract.\\n /// @param _implementation The address of the plugin implementation contract.\\n constructor(address _implementation) {\\n IMPLEMENTATION = _implementation;\\n }\\n\\n /// @notice Checks if this or the parent contract supports an interface by its ID.\\n /// @param _interfaceId The ID of the interface.\\n /// @return Returns `true` if the interface is supported.\\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\\n return\\n _interfaceId == type(IPluginSetup).interfaceId ||\\n _interfaceId == type(IProtocolVersion).interfaceId ||\\n super.supportsInterface(_interfaceId);\\n }\\n\\n /// @inheritdoc IPluginSetup\\n function implementation() public view returns (address) {\\n return IMPLEMENTATION;\\n }\\n}\\n\",\"keccak256\":\"0x2842d919d1ecb4fbeb40953128c3da3b36dcf6e91255089e987c2f11ff8d061e\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/deployment/ProxyLib.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ERC1967Proxy} from \\\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol\\\";\\nimport {Clones} from \\\"@openzeppelin/contracts/proxy/Clones.sol\\\";\\nimport {Address} from \\\"@openzeppelin/contracts/utils/Address.sol\\\";\\n\\n/// @title ProxyLib\\n/// @author Aragon X - 2024\\n/// @notice A library containing methods for the deployment of proxies via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)) and minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)).\\n/// @custom:security-contact sirt@aragon.org\\nlibrary ProxyLib {\\n using Address for address;\\n using Clones for address;\\n\\n /// @notice Creates an [ERC-1967](https://eips.ethereum.org/EIPS/eip-1967) UUPS proxy contract pointing to a logic contract and allows to immediately initialize it.\\n /// @param _logic The logic contract the proxy is pointing to.\\n /// @param _initCalldata The initialization data for this contract.\\n /// @return uupsProxy The address of the UUPS proxy contract created.\\n /// @dev If `_initCalldata` is non-empty, it is used in a delegate call to the `_logic` contract. This will typically be an encoded function call initializing the storage of the proxy (see [OpenZeppelin ERC1967Proxy-constructor](https://docs.openzeppelin.com/contracts/4.x/api/proxy#ERC1967Proxy-constructor-address-bytes-)).\\n function deployUUPSProxy(\\n address _logic,\\n bytes memory _initCalldata\\n ) internal returns (address uupsProxy) {\\n uupsProxy = address(new ERC1967Proxy({_logic: _logic, _data: _initCalldata}));\\n }\\n\\n /// @notice Creates an [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167) minimal proxy contract, also known as clones, pointing to a logic contract and allows to immediately initialize it.\\n /// @param _logic The logic contract the proxy is pointing to.\\n /// @param _initCalldata The initialization data for this contract.\\n /// @return minimalProxy The address of the minimal proxy contract created.\\n /// @dev If `_initCalldata` is non-empty, it is used in a call to the clone contract. This will typically be an encoded function call initializing the storage of the contract.\\n function deployMinimalProxy(\\n address _logic,\\n bytes memory _initCalldata\\n ) internal returns (address minimalProxy) {\\n minimalProxy = _logic.clone();\\n if (_initCalldata.length > 0) {\\n minimalProxy.functionCall({data: _initCalldata});\\n }\\n }\\n}\\n\",\"keccak256\":\"0xef0d1790dfa026381c021daa2ec7267357497f58cd4a2fa5c64e72e0dea95acc\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/IProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IProtocolVersion\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the semantic Aragon OSx protocol version number.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IProtocolVersion {\\n /// @notice Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\\n /// @return _version Returns the semantic Aragon OSx protocol version number.\\n /// @dev This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\\n function protocolVersion() external view returns (uint8[3] memory _version);\\n}\\n\",\"keccak256\":\"0x00a4da654d21dc1bdadbdc8bd54bb86c378c56f85e461ccc31303628ea621361\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/ProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IProtocolVersion} from \\\"./IProtocolVersion.sol\\\";\\n\\n/// @title ProtocolVersion\\n/// @author Aragon X - 2023\\n/// @notice An abstract, stateless, non-upgradeable contract providing the current Aragon OSx protocol version number.\\n/// @dev Do not add any new variables to this contract that would shift down storage in the inheritance chain.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract ProtocolVersion is IProtocolVersion {\\n // IMPORTANT: Do not add any storage variable, see the above notice.\\n\\n /// @inheritdoc IProtocolVersion\\n function protocolVersion() public pure returns (uint8[3] memory) {\\n return [1, 4, 0];\\n }\\n}\\n\",\"keccak256\":\"0x3975c937be935f687c6b6b8f379071232681e98cf04b175d72781b819ea52bdb\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"errors":{"InvalidUpdatePath(uint16,uint16)":[{"notice":"Thrown when an update path is not available, for example, if this is the initial build."}]},"kind":"user","methods":{"implementation()":{"notice":"Returns the plugin implementation address."},"prepareInstallation(address,bytes)":{"notice":"Prepares the installation of a plugin."},"prepareUninstallation(address,(address,address[],bytes))":{"notice":"Prepares the uninstallation of a plugin."},"prepareUpdate(address,uint16,(address,address[],bytes))":{"notice":"Prepares the update of a plugin."},"protocolVersion()":{"notice":"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with."},"supportsInterface(bytes4)":{"notice":"Checks if this or the parent contract supports an interface by its ID."}},"notice":"A mock plugin setup of an upgradeable plugin to be deployed via the UUPS pattern. v1.1 (Release 1, Build 1)","version":1}},"PluginUUPSUpgradeableSetupMockBuild2":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"ConflictingValues","type":"error"},{"inputs":[{"internalType":"uint16","name":"fromBuild","type":"uint16"},{"internalType":"uint16","name":"thisBuild","type":"uint16"}],"name":"InvalidUpdatePath","type":"error"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_dao","type":"address"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"prepareInstallation","outputs":[{"internalType":"address","name":"plugin","type":"address"},{"components":[{"internalType":"address[]","name":"helpers","type":"address[]"},{"components":[{"internalType":"enum PermissionLib.Operation","name":"operation","type":"uint8"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"condition","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"internalType":"struct PermissionLib.MultiTargetPermission[]","name":"permissions","type":"tuple[]"}],"internalType":"struct IPluginSetup.PreparedSetupData","name":"preparedSetupData","type":"tuple"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_dao","type":"address"},{"components":[{"internalType":"address","name":"plugin","type":"address"},{"internalType":"address[]","name":"currentHelpers","type":"address[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct IPluginSetup.SetupPayload","name":"_payload","type":"tuple"}],"name":"prepareUninstallation","outputs":[{"components":[{"internalType":"enum PermissionLib.Operation","name":"operation","type":"uint8"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"condition","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"internalType":"struct PermissionLib.MultiTargetPermission[]","name":"permissions","type":"tuple[]"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_dao","type":"address"},{"internalType":"uint16","name":"_fromBuild","type":"uint16"},{"components":[{"internalType":"address","name":"plugin","type":"address"},{"internalType":"address[]","name":"currentHelpers","type":"address[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct IPluginSetup.SetupPayload","name":"_payload","type":"tuple"}],"name":"prepareUpdate","outputs":[{"internalType":"bytes","name":"initData","type":"bytes"},{"components":[{"internalType":"address[]","name":"helpers","type":"address[]"},{"components":[{"internalType":"enum PermissionLib.Operation","name":"operation","type":"uint8"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"condition","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"internalType":"struct PermissionLib.MultiTargetPermission[]","name":"permissions","type":"tuple[]"}],"internalType":"struct IPluginSetup.PreparedSetupData","name":"preparedSetupData","type":"tuple"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"protocolVersion","outputs":[{"internalType":"uint8[3]","name":"","type":"uint8[3]"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"DO NOT USE IN PRODUCTION!","errors":{"InvalidUpdatePath(uint16,uint16)":[{"params":{"fromBuild":"The build number to update from.","thisBuild":"The build number of this setup to update to."}}]},"kind":"dev","methods":{"implementation()":{"details":"The implementation can be instantiated via the `new` keyword, cloned via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)), or proxied via the UUPS proxy pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).","returns":{"_0":"The address of the plugin implementation contract."}},"prepareInstallation(address,bytes)":{"params":{"_dao":"The address of the installing DAO.","_data":"The bytes-encoded data containing the input parameters for the installation as specified in the plugin's build metadata JSON file."},"returns":{"plugin":"The address of the `Plugin` contract being prepared for installation.","preparedSetupData":"The deployed plugin's relevant data which consists of helpers and permissions."}},"prepareUninstallation(address,(address,address[],bytes))":{"params":{"_dao":"The address of the uninstalling DAO.","_payload":"The relevant data necessary for the `prepareUninstallation`. See above."},"returns":{"permissions":"The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the uninstalling DAO."}},"prepareUpdate(address,uint16,(address,address[],bytes))":{"params":{"_dao":"The address of the updating DAO.","_fromBuild":"The build number of the plugin to update from.","_payload":"The relevant data necessary for the `prepareUpdate`. See above."},"returns":{"initData":"The initialization data to be passed to upgradeable contracts when the update is applied in the `PluginSetupProcessor`.","preparedSetupData":"The deployed plugin's relevant data which consists of helpers and permissions."}},"protocolVersion()":{"details":"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.","returns":{"_0":"Returns the semantic Aragon OSx protocol version number."}},"supportsInterface(bytes4)":{"params":{"_interfaceId":"The ID of the interface."},"returns":{"_0":"Returns `true` if the interface is supported."}}},"version":1},"evm":{"bytecode":{"functionDebugData":{"@_3442":{"entryPoint":null,"id":3442,"parameterSlots":0,"returnSlots":0},"@_4995":{"entryPoint":null,"id":4995,"parameterSlots":1,"returnSlots":0}},"generatedSources":[],"linkReferences":{},"object":"60a060405234801561001057600080fd5b5060405161001d9061004b565b604051809103906000f080158015610039573d6000803e3d6000fd5b506001600160a01b0316608052610058565b6113f1806112c683390190565b60805161124d6100796000396000818160d20152610339015261124d6000f3fe60806040523480156200001157600080fd5b50600436106200007b5760003560e01c80639cb0a12411620000565780639cb0a12414620000fd578063a8a9c29e1462000123578063f10832f1146200014a57600080fd5b806301ffc9a714620000805780632ae9c60014620000ac5780635c60da1b14620000c5575b600080fd5b62000097620000913660046200065e565b62000171565b60405190151581526020015b60405180910390f35b620000b6620001c4565b604051620000a391906200068a565b6040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152602001620000a3565b620001146200010e366004620006f0565b620001f0565b604051620000a39190620007c1565b6200013a620001343660046200080e565b62000209565b604051620000a39291906200095d565b620001616200015b366004620009a5565b620002b5565b604051620000a392919062000a73565b60006001600160e01b0319821663099718b560e41b1480620001a257506001600160e01b03198216621574e360e91b145b80620001be57506301ffc9a760e01b6001600160e01b03198316145b92915050565b620001ce62000632565b5060408051606081018252600181526004602082015260009181019190915290565b60606200020260006002600162000399565b9392505050565b606062000229604051806040016040528060608152602001606081525090565b8361ffff16600103620002ad5762000242600262000532565b815260405161ffff8516602482015260440160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166239a8c560e41b1790529150620002a761ffff85166002600062000399565b60208201525b935093915050565b6000620002d5604051806040016040528060608152602001606081525090565b6040516001600160a01b038516602482015260009060440160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663189acdbd60e31b17905290506200036b816200035b7f000000000000000000000000000000000000000000000000000000000000000090565b6001600160a01b031690620005f6565b925062000379600262000532565b82526200038a600060028162000399565b60208301525090939092509050565b6060826001600160a01b0316846001600160a01b03161115620003cf57604051633a4013cd60e21b815260040160405180910390fd5b620003db848462000ab5565b6001600160a01b031667ffffffffffffffff811115620003ff57620003ff6200098f565b6040519080825280602002602001820160405280156200045a57816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282526000199092019101816200041e5790505b509050835b836001600160a01b0316816001600160a01b031610156200052a576040518060a001604052808460028111156200049a576200049a62000744565b81526001600160a01b038316602082018190526040820152600060608201527fa280eec51ab8e1bc4b6b0c1b7f1bde785761b787a49db404e3e9338ed9b016ef60809091015282620004ed878462000ab5565b6001600160a01b03168151811062000509576200050962000adf565b60200260200101819052508080620005219062000af5565b9150506200045f565b509392505050565b6060816001600160a01b031667ffffffffffffffff8111156200055957620005596200098f565b60405190808252806020026020018201604052801562000583578160200160208202803683370190505b50905060005b826001600160a01b0316816001600160a01b03161015620005f0578082826001600160a01b031681518110620005c357620005c362000adf565b6001600160a01b039092166020928302919091019091015280620005e78162000af5565b91505062000589565b50919050565b60008282604051620006089062000650565b6200061592919062000b1e565b604051809103906000f0801580156200052a573d6000803e3d6000fd5b60405180606001604052806003906020820280368337509192915050565b6106fe8062000b4383390190565b6000602082840312156200067157600080fd5b81356001600160e01b0319811681146200020257600080fd5b60608101818360005b6003811015620006b757815160ff1683526020928301929091019060010162000693565b50505092915050565b80356001600160a01b0381168114620006d857600080fd5b919050565b600060608284031215620005f057600080fd5b600080604083850312156200070457600080fd5b6200070f83620006c0565b9150602083013567ffffffffffffffff8111156200072c57600080fd5b6200073a85828601620006dd565b9150509250929050565b634e487b7160e01b600052602160045260246000fd5b60008151600381106200077d57634e487b7160e01b600052602160045260246000fd5b8352506020818101516001600160a01b0390811691840191909152604080830151821690840152606080830151909116908301526080908101519082015260a00190565b6020808252825182820181905260009190848201906040850190845b818110156200080257620007f38385516200075a565b938501939250600101620007dd565b50909695505050505050565b6000806000606084860312156200082457600080fd5b6200082f84620006c0565b9250602084013561ffff811681146200084757600080fd5b9150604084013567ffffffffffffffff8111156200086457600080fd5b6200087286828701620006dd565b9150509250925092565b6000815180845260005b81811015620008a45760208185018101518683018201520162000886565b506000602082860101526020601f19601f83011685010191505092915050565b805160408084528151908401819052600091602091908201906060860190845b818110156200090b5783516001600160a01b031683529284019291840191600101620008e4565b50508483015186820387850152805180835290840192506000918401905b8083101562000952576200093f8285516200075a565b9150848401935060018301925062000929565b509695505050505050565b6040815260006200097260408301856200087c565b8281036020840152620009868185620008c4565b95945050505050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215620009b957600080fd5b620009c483620006c0565b9150602083013567ffffffffffffffff80821115620009e257600080fd5b818501915085601f830112620009f757600080fd5b81358181111562000a0c5762000a0c6200098f565b604051601f8201601f19908116603f0116810190838211818310171562000a375762000a376200098f565b8160405282815288602084870101111562000a5157600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6001600160a01b038316815260406020820152600062000a976040830184620008c4565b949350505050565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0382811682821603908082111562000ad85762000ad862000a9f565b5092915050565b634e487b7160e01b600052603260045260246000fd5b60006001600160a01b0380831681810362000b145762000b1462000a9f565b6001019392505050565b6001600160a01b038316815260406020820152600062000a9760408301846200087c56fe60806040526040516106fe3803806106fe83398101604081905261002291610319565b61002e82826000610035565b5050610436565b61003e8361006b565b60008251118061004b5750805b156100665761006483836100ab60201b6100291760201c565b505b505050565b610074816100d7565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606100d083836040518060600160405280602781526020016106d7602791396101a9565b9392505050565b6100ea8161022260201b6100551760201c565b6101515760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b806101887f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61023160201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6060600080856001600160a01b0316856040516101c691906103e7565b600060405180830381855af49150503d8060008114610201576040519150601f19603f3d011682016040523d82523d6000602084013e610206565b606091505b50909250905061021886838387610234565b9695505050505050565b6001600160a01b03163b151590565b90565b606083156102a357825160000361029c576001600160a01b0385163b61029c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610148565b50816102ad565b6102ad83836102b5565b949350505050565b8151156102c55781518083602001fd5b8060405162461bcd60e51b81526004016101489190610403565b634e487b7160e01b600052604160045260246000fd5b60005b838110156103105781810151838201526020016102f8565b50506000910152565b6000806040838503121561032c57600080fd5b82516001600160a01b038116811461034357600080fd5b60208401519092506001600160401b038082111561036057600080fd5b818501915085601f83011261037457600080fd5b815181811115610386576103866102df565b604051601f8201601f19908116603f011681019083821181831017156103ae576103ae6102df565b816040528281528860208487010111156103c757600080fd5b6103d88360208301602088016102f5565b80955050505050509250929050565b600082516103f98184602087016102f5565b9190910192915050565b60208152600082518060208401526104228160408501602087016102f5565b601f01601f19169190910160400192915050565b610292806104456000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b61009f565b565b606061004e838360405180606001604052806027815260200161025f602791396100c3565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e8080156100be573d6000f35b3d6000fd5b6060600080856001600160a01b0316856040516100e0919061020f565b600060405180830381855af49150503d806000811461011b576040519150601f19603f3d011682016040523d82523d6000602084013e610120565b606091505b50915091506101318683838761013b565b9695505050505050565b606083156101af5782516000036101a8576001600160a01b0385163b6101a85760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b50816101b9565b6101b983836101c1565b949350505050565b8151156101d15781518083602001fd5b8060405162461bcd60e51b815260040161019f919061022b565b60005b838110156102065781810151838201526020016101ee565b50506000910152565b600082516102218184602087016101eb565b9190910192915050565b602081526000825180602084015261024a8160408501602087016101eb565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a60a06040523060805234801561001457600080fd5b5061001d610022565b6100e1565b600054610100900460ff161561008e5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116146100df576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6080516112d961011860003960008181610479015281816104fe015281816105f401528181610679015261076301526112d96000f3fe6080604052600436106100e85760003560e01c806352d1902d1161008a578063c4d66de811610059578063c4d66de814610256578063c9c4bfca14610276578063d4b83992146102aa578063efe51cca146102ca57600080fd5b806352d1902d146101e75780635c60da1b1461020a5780636accab8c1461021f578063776d1a011461023657600080fd5b80633659cfe6116100c65780633659cfe6146101665780634162169f1461018657806341de6830146101b85780634f1ef286146101d457600080fd5b806301ffc9a7146100ed578063039a8c50146101225780632ae9c60014610144575b600080fd5b3480156100f957600080fd5b5061010d610108366004610fed565b6102e1565b60405190151581526020015b60405180910390f35b34801561012e57600080fd5b5061014261013d366004611017565b61034d565b005b34801561015057600080fd5b50610159610445565b604051610119919061103b565b34801561017257600080fd5b50610142610181366004611084565b61046f565b34801561019257600080fd5b5060c9546001600160a01b03165b6040516001600160a01b039091168152602001610119565b3480156101c457600080fd5b50600060405161011991906110a1565b6101426101e23660046110df565b6105ea565b3480156101f357600080fd5b506101fc610756565b604051908152602001610119565b34801561021657600080fd5b506101a061081b565b34801561022b57600080fd5b506101fc61012d5481565b34801561024257600080fd5b50610142610251366004611084565b610853565b34801561026257600080fd5b50610142610271366004611084565b6108b2565b34801561028257600080fd5b506101fc7f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f581565b3480156102b657600080fd5b5060fb546101a0906001600160a01b031681565b3480156102d657600080fd5b506101fc61012e5481565b60006001600160e01b0319821663041de68360e41b148061031157506001600160e01b03198216621574e360e91b145b8061032c57506001600160e01b031982166352d1902d60e01b145b8061034757506301ffc9a760e01b6001600160e01b03198316145b92915050565b600054600290610100900460ff1615801561036f575060005460ff8083169116105b6103d75760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805461ffff191660ff831617610100179055600261ffff831610156103ff57600261012e555b6000805461ff001916905560405160ff821681527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b61044d610fcf565b5060408051606081018252600181526004602082015260009181019190915290565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036104fc5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b60648201526084016103ce565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166105577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b0316146105c25760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b60648201526084016103ce565b6105cb8161099e565b604080516000808252602082019092526105e7918391906109db565b50565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036106775760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b60648201526084016103ce565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166106d27f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b03161461073d5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b60648201526084016103ce565b6107468261099e565b610752828260016109db565b5050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146107f65760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016103ce565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b600061084e7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b60fb80546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d690600090a35050565b600054600290610100900460ff161580156108d4575060005460ff8083169116105b6109375760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016103ce565b6000805461ffff191660ff83161761010017905561095482610b80565b600161012d55600261012e556000805461ff001916905560405160ff821681527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602001610439565b60c9547f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f590610752906001600160a01b0316303384600036610bf4565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610a1357610a0e83610cb0565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610a6d575060408051601f3d908101601f19168201909252610a6a918101906111a3565b60015b610adf5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201527f6f6e206973206e6f74205555505300000000000000000000000000000000000060648201526084016103ce565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114610b745760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f7860448201527f6961626c6555554944000000000000000000000000000000000000000000000060648201526084016103ce565b50610a0e838383610d7b565b600054610100900460ff16610beb5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103ce565b6105e781610da6565b604051637ef7c88360e11b81526001600160a01b0387169063fdef910690610c2890889088908890889088906004016111bc565b602060405180830381865afa158015610c45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c699190611210565b610ca857604051630cb6f8ed60e21b81526001600160a01b038088166004830152808716602483015285166044820152606481018490526084016103ce565b505050505050565b6001600160a01b0381163b610d2d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e74726163740000000000000000000000000000000000000060648201526084016103ce565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610d8483610e40565b600082511180610d915750805b15610a0e57610da08383610e80565b50505050565b600054610100900460ff16610e115760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103ce565b60c9805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610e4981610cb0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060610ea583836040518060600160405280602781526020016112a660279139610eac565b9392505050565b6060600080856001600160a01b031685604051610ec99190611256565b600060405180830381855af49150503d8060008114610f04576040519150601f19603f3d011682016040523d82523d6000602084013e610f09565b606091505b5091509150610f1a86838387610f24565b9695505050505050565b60608315610f93578251600003610f8c576001600160a01b0385163b610f8c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016103ce565b5081610f9d565b610f9d8383610fa5565b949350505050565b815115610fb55781518083602001fd5b8060405162461bcd60e51b81526004016103ce9190611272565b60405180606001604052806003906020820280368337509192915050565b600060208284031215610fff57600080fd5b81356001600160e01b031981168114610ea557600080fd5b60006020828403121561102957600080fd5b813561ffff81168114610ea557600080fd5b60608101818360005b600381101561106657815160ff16835260209283019290910190600101611044565b50505092915050565b6001600160a01b03811681146105e757600080fd5b60006020828403121561109657600080fd5b8135610ea58161106f565b60208101600383106110c357634e487b7160e01b600052602160045260246000fd5b91905290565b634e487b7160e01b600052604160045260246000fd5b600080604083850312156110f257600080fd5b82356110fd8161106f565b9150602083013567ffffffffffffffff8082111561111a57600080fd5b818501915085601f83011261112e57600080fd5b813581811115611140576111406110c9565b604051601f8201601f19908116603f01168101908382118183101715611168576111686110c9565b8160405282815288602084870101111561118157600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6000602082840312156111b557600080fd5b5051919050565b60006001600160a01b03808816835280871660208401525084604083015260806060830152826080830152828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b60006020828403121561122257600080fd5b81518015158114610ea557600080fd5b60005b8381101561124d578181015183820152602001611235565b50506000910152565b60008251611268818460208701611232565b9190910192915050565b6020815260008251806020840152611291816040850160208701611232565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a","opcodes":"PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x1D SWAP1 PUSH2 0x4B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH2 0x39 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x80 MSTORE PUSH2 0x58 JUMP JUMPDEST PUSH2 0x13F1 DUP1 PUSH2 0x12C6 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH2 0x124D PUSH2 0x79 PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH1 0xD2 ADD MSTORE PUSH2 0x339 ADD MSTORE PUSH2 0x124D PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH3 0x7B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9CB0A124 GT PUSH3 0x56 JUMPI DUP1 PUSH4 0x9CB0A124 EQ PUSH3 0xFD JUMPI DUP1 PUSH4 0xA8A9C29E EQ PUSH3 0x123 JUMPI DUP1 PUSH4 0xF10832F1 EQ PUSH3 0x14A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH3 0x80 JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH3 0xAC JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH3 0xC5 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x97 PUSH3 0x91 CALLDATASIZE PUSH1 0x4 PUSH3 0x65E JUMP JUMPDEST PUSH3 0x171 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0xB6 PUSH3 0x1C4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0xA3 SWAP2 SWAP1 PUSH3 0x68A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH3 0xA3 JUMP JUMPDEST PUSH3 0x114 PUSH3 0x10E CALLDATASIZE PUSH1 0x4 PUSH3 0x6F0 JUMP JUMPDEST PUSH3 0x1F0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0xA3 SWAP2 SWAP1 PUSH3 0x7C1 JUMP JUMPDEST PUSH3 0x13A PUSH3 0x134 CALLDATASIZE PUSH1 0x4 PUSH3 0x80E JUMP JUMPDEST PUSH3 0x209 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0xA3 SWAP3 SWAP2 SWAP1 PUSH3 0x95D JUMP JUMPDEST PUSH3 0x161 PUSH3 0x15B CALLDATASIZE PUSH1 0x4 PUSH3 0x9A5 JUMP JUMPDEST PUSH3 0x2B5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0xA3 SWAP3 SWAP2 SWAP1 PUSH3 0xA73 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x99718B5 PUSH1 0xE4 SHL EQ DUP1 PUSH3 0x1A2 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH3 0x1BE JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH3 0x1CE PUSH3 0x632 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH3 0x202 PUSH1 0x0 PUSH1 0x2 PUSH1 0x1 PUSH3 0x399 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH3 0x229 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST DUP4 PUSH2 0xFFFF AND PUSH1 0x1 SUB PUSH3 0x2AD JUMPI PUSH3 0x242 PUSH1 0x2 PUSH3 0x532 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x40 MLOAD PUSH2 0xFFFF DUP6 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH3 0x39A8C5 PUSH1 0xE4 SHL OR SWAP1 MSTORE SWAP2 POP PUSH3 0x2A7 PUSH2 0xFFFF DUP6 AND PUSH1 0x2 PUSH1 0x0 PUSH3 0x399 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE JUMPDEST SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x2D5 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 PUSH1 0x44 ADD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x189ACDBD PUSH1 0xE3 SHL OR SWAP1 MSTORE SWAP1 POP PUSH3 0x36B DUP2 PUSH3 0x35B PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH3 0x5F6 JUMP JUMPDEST SWAP3 POP PUSH3 0x379 PUSH1 0x2 PUSH3 0x532 JUMP JUMPDEST DUP3 MSTORE PUSH3 0x38A PUSH1 0x0 PUSH1 0x2 DUP2 PUSH3 0x399 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP SWAP1 SWAP4 SWAP1 SWAP3 POP SWAP1 POP JUMP JUMPDEST PUSH1 0x60 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH3 0x3CF JUMPI PUSH1 0x40 MLOAD PUSH4 0x3A4013CD PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0x3DB DUP5 DUP5 PUSH3 0xAB5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x3FF JUMPI PUSH3 0x3FF PUSH3 0x98F JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH3 0x45A JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD DUP3 SWAP1 MSTORE SWAP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 DUP3 ADD MSTORE DUP3 MSTORE PUSH1 0x0 NOT SWAP1 SWAP3 ADD SWAP2 ADD DUP2 PUSH3 0x41E JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP DUP4 JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT ISZERO PUSH3 0x52A JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 DUP5 PUSH1 0x2 DUP2 GT ISZERO PUSH3 0x49A JUMPI PUSH3 0x49A PUSH3 0x744 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x60 DUP3 ADD MSTORE PUSH32 0xA280EEC51AB8E1BC4B6B0C1B7F1BDE785761B787A49DB404E3E9338ED9B016EF PUSH1 0x80 SWAP1 SWAP2 ADD MSTORE DUP3 PUSH3 0x4ED DUP8 DUP5 PUSH3 0xAB5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MLOAD DUP2 LT PUSH3 0x509 JUMPI PUSH3 0x509 PUSH3 0xADF JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP DUP1 DUP1 PUSH3 0x521 SWAP1 PUSH3 0xAF5 JUMP JUMPDEST SWAP2 POP POP PUSH3 0x45F JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x559 JUMPI PUSH3 0x559 PUSH3 0x98F JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH3 0x583 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT ISZERO PUSH3 0x5F0 JUMPI DUP1 DUP3 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MLOAD DUP2 LT PUSH3 0x5C3 JUMPI PUSH3 0x5C3 PUSH3 0xADF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE DUP1 PUSH3 0x5E7 DUP2 PUSH3 0xAF5 JUMP JUMPDEST SWAP2 POP POP PUSH3 0x589 JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH3 0x608 SWAP1 PUSH3 0x650 JUMP JUMPDEST PUSH3 0x615 SWAP3 SWAP2 SWAP1 PUSH3 0xB1E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH3 0x52A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x6FE DUP1 PUSH3 0xB43 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x671 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH3 0x202 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH3 0x6B7 JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH3 0x693 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x6D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x5F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x704 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x70F DUP4 PUSH3 0x6C0 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x72C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x73A DUP6 DUP3 DUP7 ADD PUSH3 0x6DD JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP2 MLOAD PUSH1 0x3 DUP2 LT PUSH3 0x77D JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP4 MSTORE POP PUSH1 0x20 DUP2 DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP1 DUP4 ADD MLOAD DUP3 AND SWAP1 DUP5 ADD MSTORE PUSH1 0x60 DUP1 DUP4 ADD MLOAD SWAP1 SWAP2 AND SWAP1 DUP4 ADD MSTORE PUSH1 0x80 SWAP1 DUP2 ADD MLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x802 JUMPI PUSH3 0x7F3 DUP4 DUP6 MLOAD PUSH3 0x75A JUMP JUMPDEST SWAP4 DUP6 ADD SWAP4 SWAP3 POP PUSH1 0x1 ADD PUSH3 0x7DD JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH3 0x824 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x82F DUP5 PUSH3 0x6C0 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH3 0x847 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x864 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x872 DUP7 DUP3 DUP8 ADD PUSH3 0x6DD JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x8A4 JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD DUP3 ADD MSTORE ADD PUSH3 0x886 JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x20 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x20 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x40 DUP1 DUP5 MSTORE DUP2 MLOAD SWAP1 DUP5 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x20 SWAP2 SWAP1 DUP3 ADD SWAP1 PUSH1 0x60 DUP7 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x90B JUMPI DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH3 0x8E4 JUMP JUMPDEST POP POP DUP5 DUP4 ADD MLOAD DUP7 DUP3 SUB DUP8 DUP6 ADD MSTORE DUP1 MLOAD DUP1 DUP4 MSTORE SWAP1 DUP5 ADD SWAP3 POP PUSH1 0x0 SWAP2 DUP5 ADD SWAP1 JUMPDEST DUP1 DUP4 LT ISZERO PUSH3 0x952 JUMPI PUSH3 0x93F DUP3 DUP6 MLOAD PUSH3 0x75A JUMP JUMPDEST SWAP2 POP DUP5 DUP5 ADD SWAP4 POP PUSH1 0x1 DUP4 ADD SWAP3 POP PUSH3 0x929 JUMP JUMPDEST POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 PUSH3 0x972 PUSH1 0x40 DUP4 ADD DUP6 PUSH3 0x87C JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 ADD MSTORE PUSH3 0x986 DUP2 DUP6 PUSH3 0x8C4 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x9B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x9C4 DUP4 PUSH3 0x6C0 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH3 0x9E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x9F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH3 0xA0C JUMPI PUSH3 0xA0C PUSH3 0x98F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH3 0xA37 JUMPI PUSH3 0xA37 PUSH3 0x98F JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH3 0xA51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH3 0xA97 PUSH1 0x40 DUP4 ADD DUP5 PUSH3 0x8C4 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND DUP3 DUP3 AND SUB SWAP1 DUP1 DUP3 GT ISZERO PUSH3 0xAD8 JUMPI PUSH3 0xAD8 PUSH3 0xA9F JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND DUP2 DUP2 SUB PUSH3 0xB14 JUMPI PUSH3 0xB14 PUSH3 0xA9F JUMP JUMPDEST PUSH1 0x1 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH3 0xA97 PUSH1 0x40 DUP4 ADD DUP5 PUSH3 0x87C JUMP INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH2 0x6FE CODESIZE SUB DUP1 PUSH2 0x6FE DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x22 SWAP2 PUSH2 0x319 JUMP JUMPDEST PUSH2 0x2E DUP3 DUP3 PUSH1 0x0 PUSH2 0x35 JUMP JUMPDEST POP POP PUSH2 0x436 JUMP JUMPDEST PUSH2 0x3E DUP4 PUSH2 0x6B JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD GT DUP1 PUSH2 0x4B JUMPI POP DUP1 JUMPDEST ISZERO PUSH2 0x66 JUMPI PUSH2 0x64 DUP4 DUP4 PUSH2 0xAB PUSH1 0x20 SHL PUSH2 0x29 OR PUSH1 0x20 SHR JUMP JUMPDEST POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x74 DUP2 PUSH2 0xD7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xD0 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x6D7 PUSH1 0x27 SWAP2 CODECOPY PUSH2 0x1A9 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xEA DUP2 PUSH2 0x222 PUSH1 0x20 SHL PUSH2 0x55 OR PUSH1 0x20 SHR JUMP JUMPDEST PUSH2 0x151 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313936373A206E657720696D706C656D656E746174696F6E206973206E PUSH1 0x44 DUP3 ADD MSTORE PUSH13 0x1BDD08184818DBDB9D1C9858DD PUSH1 0x9A SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH2 0x188 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC PUSH1 0x0 SHL PUSH2 0x231 PUSH1 0x20 SHL PUSH2 0x64 OR PUSH1 0x20 SHR JUMP JUMPDEST DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0x1C6 SWAP2 SWAP1 PUSH2 0x3E7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x201 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x206 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x218 DUP7 DUP4 DUP4 DUP8 PUSH2 0x234 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x2A3 JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0x29C JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0x29C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x148 JUMP JUMPDEST POP DUP2 PUSH2 0x2AD JUMP JUMPDEST PUSH2 0x2AD DUP4 DUP4 PUSH2 0x2B5 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x2C5 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x148 SWAP2 SWAP1 PUSH2 0x403 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x310 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2F8 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x32C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x343 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x360 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x374 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x386 JUMPI PUSH2 0x386 PUSH2 0x2DF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x3AE JUMPI PUSH2 0x3AE PUSH2 0x2DF JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x3C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3D8 DUP4 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x2F5 JUMP JUMPDEST DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x3F9 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x2F5 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x422 DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x2F5 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x292 DUP1 PUSH2 0x445 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLDATASIZE PUSH2 0x13 JUMPI PUSH2 0x11 PUSH2 0x17 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x11 JUMPDEST PUSH2 0x27 PUSH2 0x22 PUSH2 0x67 JUMP JUMPDEST PUSH2 0x9F JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x60 PUSH2 0x4E DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x25F PUSH1 0x27 SWAP2 CODECOPY PUSH2 0xC3 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9A PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 DUP1 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE PUSH1 0x0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH2 0xBE JUMPI RETURNDATASIZE PUSH1 0x0 RETURN JUMPDEST RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0xE0 SWAP2 SWAP1 PUSH2 0x20F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x11B JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x120 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x131 DUP7 DUP4 DUP4 DUP8 PUSH2 0x13B JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x1AF JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0x1A8 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0x1A8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP DUP2 PUSH2 0x1B9 JUMP JUMPDEST PUSH2 0x1B9 DUP4 DUP4 PUSH2 0x1C1 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x1D1 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x19F SWAP2 SWAP1 PUSH2 0x22B JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x206 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1EE JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x221 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x1EB JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x24A DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x1EB JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A164 PUSH20 0x6F6C6343000811000A416464726573733A206C6F PUSH24 0x2D6C6576656C2064656C65676174652063616C6C20666169 PUSH13 0x6564A164736F6C634300081100 EXP PUSH1 0xA0 PUSH1 0x40 MSTORE ADDRESS PUSH1 0x80 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x14 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1D PUSH2 0x22 JUMP JUMPDEST PUSH2 0xE1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x8E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x27 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320696E697469 PUSH1 0x44 DUP3 ADD MSTORE PUSH7 0x616C697A696E67 PUSH1 0xC8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xFF SWAP1 DUP2 AND EQ PUSH2 0xDF JUMPI PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH2 0x12D9 PUSH2 0x118 PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH2 0x479 ADD MSTORE DUP2 DUP2 PUSH2 0x4FE ADD MSTORE DUP2 DUP2 PUSH2 0x5F4 ADD MSTORE DUP2 DUP2 PUSH2 0x679 ADD MSTORE PUSH2 0x763 ADD MSTORE PUSH2 0x12D9 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xE8 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x52D1902D GT PUSH2 0x8A JUMPI DUP1 PUSH4 0xC4D66DE8 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0x256 JUMPI DUP1 PUSH4 0xC9C4BFCA EQ PUSH2 0x276 JUMPI DUP1 PUSH4 0xD4B83992 EQ PUSH2 0x2AA JUMPI DUP1 PUSH4 0xEFE51CCA EQ PUSH2 0x2CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x52D1902D EQ PUSH2 0x1E7 JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0x20A JUMPI DUP1 PUSH4 0x6ACCAB8C EQ PUSH2 0x21F JUMPI DUP1 PUSH4 0x776D1A01 EQ PUSH2 0x236 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x3659CFE6 GT PUSH2 0xC6 JUMPI DUP1 PUSH4 0x3659CFE6 EQ PUSH2 0x166 JUMPI DUP1 PUSH4 0x4162169F EQ PUSH2 0x186 JUMPI DUP1 PUSH4 0x41DE6830 EQ PUSH2 0x1B8 JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x1D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xED JUMPI DUP1 PUSH4 0x39A8C50 EQ PUSH2 0x122 JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0x144 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xF9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x10D PUSH2 0x108 CALLDATASIZE PUSH1 0x4 PUSH2 0xFED JUMP JUMPDEST PUSH2 0x2E1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x12E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x142 PUSH2 0x13D CALLDATASIZE PUSH1 0x4 PUSH2 0x1017 JUMP JUMPDEST PUSH2 0x34D JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x150 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x159 PUSH2 0x445 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x119 SWAP2 SWAP1 PUSH2 0x103B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x172 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x142 PUSH2 0x181 CALLDATASIZE PUSH1 0x4 PUSH2 0x1084 JUMP JUMPDEST PUSH2 0x46F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x192 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xC9 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x119 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 PUSH1 0x40 MLOAD PUSH2 0x119 SWAP2 SWAP1 PUSH2 0x10A1 JUMP JUMPDEST PUSH2 0x142 PUSH2 0x1E2 CALLDATASIZE PUSH1 0x4 PUSH2 0x10DF JUMP JUMPDEST PUSH2 0x5EA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FC PUSH2 0x756 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x119 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x216 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1A0 PUSH2 0x81B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x22B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FC PUSH2 0x12D SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x242 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x142 PUSH2 0x251 CALLDATASIZE PUSH1 0x4 PUSH2 0x1084 JUMP JUMPDEST PUSH2 0x853 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x262 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x142 PUSH2 0x271 CALLDATASIZE PUSH1 0x4 PUSH2 0x1084 JUMP JUMPDEST PUSH2 0x8B2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x282 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FC PUSH32 0x821B6E3A557148015A918C89E5D092E878A69854A2D1A410635F771BD5A8A3F5 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xFB SLOAD PUSH2 0x1A0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FC PUSH2 0x12E SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x41DE683 PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x311 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x32C JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x52D1902D PUSH1 0xE0 SHL EQ JUMPDEST DUP1 PUSH2 0x347 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x2 SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH2 0x36F JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF DUP1 DUP4 AND SWAP2 AND LT JUMPDEST PUSH2 0x3D7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x44 DUP3 ADD MSTORE PUSH14 0x191E481A5B9A5D1A585B1A5E9959 PUSH1 0x92 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH2 0xFFFF NOT AND PUSH1 0xFF DUP4 AND OR PUSH2 0x100 OR SWAP1 SSTORE PUSH1 0x2 PUSH2 0xFFFF DUP4 AND LT ISZERO PUSH2 0x3FF JUMPI PUSH1 0x2 PUSH2 0x12E SSTORE JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH1 0xFF DUP3 AND DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH2 0x44D PUSH2 0xFCF JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x4FC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x19195B1959D85D1958D85B1B PUSH1 0xA2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3CE JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x557 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x5C2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x6163746976652070726F7879 PUSH1 0xA0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3CE JUMP JUMPDEST PUSH2 0x5CB DUP2 PUSH2 0x99E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x5E7 SWAP2 DUP4 SWAP2 SWAP1 PUSH2 0x9DB JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x677 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x19195B1959D85D1958D85B1B PUSH1 0xA2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3CE JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x6D2 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x73D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x6163746976652070726F7879 PUSH1 0xA0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3CE JUMP JUMPDEST PUSH2 0x746 DUP3 PUSH2 0x99E JUMP JUMPDEST PUSH2 0x752 DUP3 DUP3 PUSH1 0x1 PUSH2 0x9DB JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x7F6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x38 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x555550535570677261646561626C653A206D757374206E6F742062652063616C PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6C6564207468726F7567682064656C656761746563616C6C0000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3CE JUMP JUMPDEST POP PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x84E PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0xFB DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP2 SWAP1 DUP3 SWAP1 PUSH32 0x90CC2F570A6EB594B1580EA3E41247D2D73A55281889E86BD4EC2FC29C7E62D6 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x2 SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH2 0x8D4 JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF DUP1 DUP4 AND SWAP2 AND LT JUMPDEST PUSH2 0x937 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x44 DUP3 ADD MSTORE PUSH14 0x191E481A5B9A5D1A585B1A5E9959 PUSH1 0x92 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3CE JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH2 0xFFFF NOT AND PUSH1 0xFF DUP4 AND OR PUSH2 0x100 OR SWAP1 SSTORE PUSH2 0x954 DUP3 PUSH2 0xB80 JUMP JUMPDEST PUSH1 0x1 PUSH2 0x12D SSTORE PUSH1 0x2 PUSH2 0x12E SSTORE PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH1 0xFF DUP3 AND DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH2 0x439 JUMP JUMPDEST PUSH1 0xC9 SLOAD PUSH32 0x821B6E3A557148015A918C89E5D092E878A69854A2D1A410635F771BD5A8A3F5 SWAP1 PUSH2 0x752 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ADDRESS CALLER DUP5 PUSH1 0x0 CALLDATASIZE PUSH2 0xBF4 JUMP JUMPDEST PUSH32 0x4910FDFA16FED3260ED0E7147F7CC6DA11A60208B5B9406D12A635614FFD9143 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0xA13 JUMPI PUSH2 0xA0E DUP4 PUSH2 0xCB0 JUMP JUMPDEST POP POP POP JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x52D1902D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0xA6D JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0xA6A SWAP2 DUP2 ADD SWAP1 PUSH2 0x11A3 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0xADF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524331393637557067726164653A206E657720696D706C656D656E74617469 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F6E206973206E6F742055555053000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3CE JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC DUP2 EQ PUSH2 0xB74 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524331393637557067726164653A20756E737570706F727465642070726F78 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6961626C65555549440000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3CE JUMP JUMPDEST POP PUSH2 0xA0E DUP4 DUP4 DUP4 PUSH2 0xD7B JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0xBEB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3CE JUMP JUMPDEST PUSH2 0x5E7 DUP2 PUSH2 0xDA6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x7EF7C883 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0xFDEF9106 SWAP1 PUSH2 0xC28 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x11BC JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC45 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xC69 SWAP2 SWAP1 PUSH2 0x1210 JUMP JUMPDEST PUSH2 0xCA8 JUMPI PUSH1 0x40 MLOAD PUSH4 0xCB6F8ED PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND PUSH1 0x4 DUP4 ADD MSTORE DUP1 DUP8 AND PUSH1 0x24 DUP4 ADD MSTORE DUP6 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x84 ADD PUSH2 0x3CE JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND EXTCODESIZE PUSH2 0xD2D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313936373A206E657720696D706C656D656E746174696F6E206973206E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F74206120636F6E747261637400000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3CE JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xD84 DUP4 PUSH2 0xE40 JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD GT DUP1 PUSH2 0xD91 JUMPI POP DUP1 JUMPDEST ISZERO PUSH2 0xA0E JUMPI PUSH2 0xDA0 DUP4 DUP4 PUSH2 0xE80 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0xE11 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3CE JUMP JUMPDEST PUSH1 0xC9 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xE49 DUP2 PUSH2 0xCB0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xEA5 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x12A6 PUSH1 0x27 SWAP2 CODECOPY PUSH2 0xEAC JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0xEC9 SWAP2 SWAP1 PUSH2 0x1256 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xF04 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xF09 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0xF1A DUP7 DUP4 DUP4 DUP8 PUSH2 0xF24 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0xF93 JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0xF8C JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0xF8C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3CE JUMP JUMPDEST POP DUP2 PUSH2 0xF9D JUMP JUMPDEST PUSH2 0xF9D DUP4 DUP4 PUSH2 0xFA5 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0xFB5 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3CE SWAP2 SWAP1 PUSH2 0x1272 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xFFF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0xEA5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1029 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH2 0xEA5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0x1066 JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x1044 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x5E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1096 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xEA5 DUP2 PUSH2 0x106F JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH1 0x3 DUP4 LT PUSH2 0x10C3 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 SWAP1 MSTORE SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x10F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x10FD DUP2 PUSH2 0x106F JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x111A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x112E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x1140 JUMPI PUSH2 0x1140 PUSH2 0x10C9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x1168 JUMPI PUSH2 0x1168 PUSH2 0x10C9 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x1181 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x11B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND DUP4 MSTORE DUP1 DUP8 AND PUSH1 0x20 DUP5 ADD MSTORE POP DUP5 PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x80 PUSH1 0x60 DUP4 ADD MSTORE DUP3 PUSH1 0x80 DUP4 ADD MSTORE DUP3 DUP5 PUSH1 0xA0 DUP5 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0xA0 DUP5 DUP5 ADD ADD MSTORE PUSH1 0xA0 PUSH1 0x1F NOT PUSH1 0x1F DUP6 ADD AND DUP4 ADD ADD SWAP1 POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1222 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xEA5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x124D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1235 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x1268 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x1232 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x1291 DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x1232 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A164 PUSH20 0x6F6C6343000811000A0000000000000000000000 ","sourceMap":"2565:1940:32:-:0;;;2722:87;;;;;;;;;;2767:37;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1605:32:46;;;2565:1940:32;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@deployUUPSProxy_5072":{"entryPoint":1526,"id":5072,"parameterSlots":2,"returnSlots":1},"@implementation_5033":{"entryPoint":null,"id":5033,"parameterSlots":0,"returnSlots":1},"@mockHelpers_3108":{"entryPoint":1330,"id":3108,"parameterSlots":1,"returnSlots":1},"@mockPermissions_3069":{"entryPoint":921,"id":3069,"parameterSlots":3,"returnSlots":1},"@prepareInstallation_3496":{"entryPoint":693,"id":3496,"parameterSlots":2,"returnSlots":2},"@prepareUninstallation_3581":{"entryPoint":496,"id":3581,"parameterSlots":2,"returnSlots":1},"@prepareUpdate_3553":{"entryPoint":521,"id":3553,"parameterSlots":3,"returnSlots":2},"@protocolVersion_5135":{"entryPoint":452,"id":5135,"parameterSlots":0,"returnSlots":1},"@supportsInterface_2374":{"entryPoint":null,"id":2374,"parameterSlots":1,"returnSlots":1},"@supportsInterface_5024":{"entryPoint":369,"id":5024,"parameterSlots":1,"returnSlots":1},"abi_decode_address":{"entryPoint":1728,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_struct_SetupPayload_calldata":{"entryPoint":1757,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_bytes_memory_ptr":{"entryPoint":2469,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_struct$_SetupPayload_$4810_calldata_ptr":{"entryPoint":1776,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_uint16t_struct$_SetupPayload_$4810_calldata_ptr":{"entryPoint":2062,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_bytes4":{"entryPoint":1630,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encodeUpdatedPos_struct_MultiTargetPermission":{"entryPoint":1882,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_bytes":{"entryPoint":2172,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_struct_PreparedSetupData":{"entryPoint":2244,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address_t_bytes_memory_ptr__to_t_address_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":2846,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_address_t_struct$_PreparedSetupData_$4802_memory_ptr__to_t_address_t_struct$_PreparedSetupData_$4802_memory_ptr__fromStack_reversed":{"entryPoint":2675,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr__fromStack_reversed":{"entryPoint":1985,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed":{"entryPoint":1674,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$4802_memory_ptr__to_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$4802_memory_ptr__fromStack_reversed":{"entryPoint":2397,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_contract$_IDAO_$2538__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_uint16__to_t_uint16__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_t_uint160":{"entryPoint":2741,"id":null,"parameterSlots":2,"returnSlots":1},"increment_t_uint160":{"entryPoint":2805,"id":null,"parameterSlots":1,"returnSlots":1},"panic_error_0x11":{"entryPoint":2719,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x21":{"entryPoint":1860,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x32":{"entryPoint":2783,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":2447,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:9300:50","statements":[{"nodeType":"YulBlock","src":"6:3:50","statements":[]},{"body":{"nodeType":"YulBlock","src":"83:217:50","statements":[{"body":{"nodeType":"YulBlock","src":"129:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"138:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"141:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"131:6:50"},"nodeType":"YulFunctionCall","src":"131:12:50"},"nodeType":"YulExpressionStatement","src":"131:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"104:7:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"113:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"100:3:50"},"nodeType":"YulFunctionCall","src":"100:23:50"},{"kind":"number","nodeType":"YulLiteral","src":"125:2:50","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"96:3:50"},"nodeType":"YulFunctionCall","src":"96:32:50"},"nodeType":"YulIf","src":"93:52:50"},{"nodeType":"YulVariableDeclaration","src":"154:36:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"180:9:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"167:12:50"},"nodeType":"YulFunctionCall","src":"167:23:50"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"158:5:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"254:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"263:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"266:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"256:6:50"},"nodeType":"YulFunctionCall","src":"256:12:50"},"nodeType":"YulExpressionStatement","src":"256:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"212:5:50"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"223:5:50"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"234:3:50","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"239:10:50","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"230:3:50"},"nodeType":"YulFunctionCall","src":"230:20:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"219:3:50"},"nodeType":"YulFunctionCall","src":"219:32:50"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"209:2:50"},"nodeType":"YulFunctionCall","src":"209:43:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"202:6:50"},"nodeType":"YulFunctionCall","src":"202:51:50"},"nodeType":"YulIf","src":"199:71:50"},{"nodeType":"YulAssignment","src":"279:15:50","value":{"name":"value","nodeType":"YulIdentifier","src":"289:5:50"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"279:6:50"}]}]},"name":"abi_decode_tuple_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"49:9:50","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"60:7:50","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"72:6:50","type":""}],"src":"14:286:50"},{"body":{"nodeType":"YulBlock","src":"400:92:50","statements":[{"nodeType":"YulAssignment","src":"410:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"422:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"433:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"418:3:50"},"nodeType":"YulFunctionCall","src":"418:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"410:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"452:9:50"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"477:6:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"470:6:50"},"nodeType":"YulFunctionCall","src":"470:14:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"463:6:50"},"nodeType":"YulFunctionCall","src":"463:22:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"445:6:50"},"nodeType":"YulFunctionCall","src":"445:41:50"},"nodeType":"YulExpressionStatement","src":"445:41:50"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"369:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"380:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"391:4:50","type":""}],"src":"305:187:50"},{"body":{"nodeType":"YulBlock","src":"640:358:50","statements":[{"nodeType":"YulAssignment","src":"650:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"662:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"673:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"658:3:50"},"nodeType":"YulFunctionCall","src":"658:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"650:4:50"}]},{"nodeType":"YulVariableDeclaration","src":"685:20:50","value":{"name":"headStart","nodeType":"YulIdentifier","src":"696:9:50"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"689:3:50","type":""}]},{"nodeType":"YulAssignment","src":"714:16:50","value":{"name":"headStart","nodeType":"YulIdentifier","src":"721:9:50"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"714:3:50"}]},{"nodeType":"YulVariableDeclaration","src":"739:20:50","value":{"name":"value0","nodeType":"YulIdentifier","src":"753:6:50"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"743:6:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"768:10:50","value":{"kind":"number","nodeType":"YulLiteral","src":"777:1:50","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"772:1:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"834:158:50","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"855:3:50"},{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"870:6:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"864:5:50"},"nodeType":"YulFunctionCall","src":"864:13:50"},{"kind":"number","nodeType":"YulLiteral","src":"879:4:50","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"860:3:50"},"nodeType":"YulFunctionCall","src":"860:24:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"848:6:50"},"nodeType":"YulFunctionCall","src":"848:37:50"},"nodeType":"YulExpressionStatement","src":"848:37:50"},{"nodeType":"YulVariableDeclaration","src":"898:14:50","value":{"kind":"number","nodeType":"YulLiteral","src":"908:4:50","type":"","value":"0x20"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"902:2:50","type":""}]},{"nodeType":"YulAssignment","src":"925:19:50","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"936:3:50"},{"name":"_1","nodeType":"YulIdentifier","src":"941:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"932:3:50"},"nodeType":"YulFunctionCall","src":"932:12:50"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"925:3:50"}]},{"nodeType":"YulAssignment","src":"957:25:50","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"971:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"979:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"967:3:50"},"nodeType":"YulFunctionCall","src":"967:15:50"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"957:6:50"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"798:1:50"},{"kind":"number","nodeType":"YulLiteral","src":"801:4:50","type":"","value":"0x03"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"795:2:50"},"nodeType":"YulFunctionCall","src":"795:11:50"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"807:18:50","statements":[{"nodeType":"YulAssignment","src":"809:14:50","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"818:1:50"},{"kind":"number","nodeType":"YulLiteral","src":"821:1:50","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"814:3:50"},"nodeType":"YulFunctionCall","src":"814:9:50"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"809:1:50"}]}]},"pre":{"nodeType":"YulBlock","src":"791:3:50","statements":[]},"src":"787:205:50"}]},"name":"abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"609:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"620:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"631:4:50","type":""}],"src":"497:501:50"},{"body":{"nodeType":"YulBlock","src":"1104:125:50","statements":[{"nodeType":"YulAssignment","src":"1114:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1126:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"1137:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1122:3:50"},"nodeType":"YulFunctionCall","src":"1122:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1114:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1156:9:50"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1171:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"1179:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1167:3:50"},"nodeType":"YulFunctionCall","src":"1167:55:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1149:6:50"},"nodeType":"YulFunctionCall","src":"1149:74:50"},"nodeType":"YulExpressionStatement","src":"1149:74:50"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1073:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1084:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1095:4:50","type":""}],"src":"1003:226:50"},{"body":{"nodeType":"YulBlock","src":"1283:147:50","statements":[{"nodeType":"YulAssignment","src":"1293:29:50","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1315:6:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1302:12:50"},"nodeType":"YulFunctionCall","src":"1302:20:50"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"1293:5:50"}]},{"body":{"nodeType":"YulBlock","src":"1408:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1417:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1420:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1410:6:50"},"nodeType":"YulFunctionCall","src":"1410:12:50"},"nodeType":"YulExpressionStatement","src":"1410:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1344:5:50"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1355:5:50"},{"kind":"number","nodeType":"YulLiteral","src":"1362:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1351:3:50"},"nodeType":"YulFunctionCall","src":"1351:54:50"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1341:2:50"},"nodeType":"YulFunctionCall","src":"1341:65:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1334:6:50"},"nodeType":"YulFunctionCall","src":"1334:73:50"},"nodeType":"YulIf","src":"1331:93:50"}]},"name":"abi_decode_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"1262:6:50","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"1273:5:50","type":""}],"src":"1234:196:50"},{"body":{"nodeType":"YulBlock","src":"1510:85:50","statements":[{"body":{"nodeType":"YulBlock","src":"1549:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1558:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1561:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1551:6:50"},"nodeType":"YulFunctionCall","src":"1551:12:50"},"nodeType":"YulExpressionStatement","src":"1551:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"end","nodeType":"YulIdentifier","src":"1531:3:50"},{"name":"offset","nodeType":"YulIdentifier","src":"1536:6:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1527:3:50"},"nodeType":"YulFunctionCall","src":"1527:16:50"},{"kind":"number","nodeType":"YulLiteral","src":"1545:2:50","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1523:3:50"},"nodeType":"YulFunctionCall","src":"1523:25:50"},"nodeType":"YulIf","src":"1520:45:50"},{"nodeType":"YulAssignment","src":"1574:15:50","value":{"name":"offset","nodeType":"YulIdentifier","src":"1583:6:50"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"1574:5:50"}]}]},"name":"abi_decode_struct_SetupPayload_calldata","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"1484:6:50","type":""},{"name":"end","nodeType":"YulTypedName","src":"1492:3:50","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"1500:5:50","type":""}],"src":"1435:160:50"},{"body":{"nodeType":"YulBlock","src":"1719:321:50","statements":[{"body":{"nodeType":"YulBlock","src":"1765:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1774:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1777:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1767:6:50"},"nodeType":"YulFunctionCall","src":"1767:12:50"},"nodeType":"YulExpressionStatement","src":"1767:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1740:7:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"1749:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1736:3:50"},"nodeType":"YulFunctionCall","src":"1736:23:50"},{"kind":"number","nodeType":"YulLiteral","src":"1761:2:50","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1732:3:50"},"nodeType":"YulFunctionCall","src":"1732:32:50"},"nodeType":"YulIf","src":"1729:52:50"},{"nodeType":"YulAssignment","src":"1790:39:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1819:9:50"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"1800:18:50"},"nodeType":"YulFunctionCall","src":"1800:29:50"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1790:6:50"}]},{"nodeType":"YulVariableDeclaration","src":"1838:46:50","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1869:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"1880:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1865:3:50"},"nodeType":"YulFunctionCall","src":"1865:18:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1852:12:50"},"nodeType":"YulFunctionCall","src":"1852:32:50"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1842:6:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"1927:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1936:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1939:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1929:6:50"},"nodeType":"YulFunctionCall","src":"1929:12:50"},"nodeType":"YulExpressionStatement","src":"1929:12:50"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1899:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"1907:18:50","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1896:2:50"},"nodeType":"YulFunctionCall","src":"1896:30:50"},"nodeType":"YulIf","src":"1893:50:50"},{"nodeType":"YulAssignment","src":"1952:82:50","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2006:9:50"},{"name":"offset","nodeType":"YulIdentifier","src":"2017:6:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2002:3:50"},"nodeType":"YulFunctionCall","src":"2002:22:50"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2026:7:50"}],"functionName":{"name":"abi_decode_struct_SetupPayload_calldata","nodeType":"YulIdentifier","src":"1962:39:50"},"nodeType":"YulFunctionCall","src":"1962:72:50"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1952:6:50"}]}]},"name":"abi_decode_tuple_t_addresst_struct$_SetupPayload_$4810_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1677:9:50","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1688:7:50","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1700:6:50","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1708:6:50","type":""}],"src":"1600:440:50"},{"body":{"nodeType":"YulBlock","src":"2077:95:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2094:1:50","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2101:3:50","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"2106:10:50","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2097:3:50"},"nodeType":"YulFunctionCall","src":"2097:20:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2087:6:50"},"nodeType":"YulFunctionCall","src":"2087:31:50"},"nodeType":"YulExpressionStatement","src":"2087:31:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2134:1:50","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"2137:4:50","type":"","value":"0x21"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2127:6:50"},"nodeType":"YulFunctionCall","src":"2127:15:50"},"nodeType":"YulExpressionStatement","src":"2127:15:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2158:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2161:4:50","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2151:6:50"},"nodeType":"YulFunctionCall","src":"2151:15:50"},"nodeType":"YulExpressionStatement","src":"2151:15:50"}]},"name":"panic_error_0x21","nodeType":"YulFunctionDefinition","src":"2045:127:50"},{"body":{"nodeType":"YulBlock","src":"2267:606:50","statements":[{"nodeType":"YulVariableDeclaration","src":"2277:23:50","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2293:6:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2287:5:50"},"nodeType":"YulFunctionCall","src":"2287:13:50"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"2281:2:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"2338:111:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2359:1:50","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2366:3:50","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"2371:10:50","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2362:3:50"},"nodeType":"YulFunctionCall","src":"2362:20:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2352:6:50"},"nodeType":"YulFunctionCall","src":"2352:31:50"},"nodeType":"YulExpressionStatement","src":"2352:31:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2403:1:50","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"2406:4:50","type":"","value":"0x21"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2396:6:50"},"nodeType":"YulFunctionCall","src":"2396:15:50"},"nodeType":"YulExpressionStatement","src":"2396:15:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2431:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2434:4:50","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2424:6:50"},"nodeType":"YulFunctionCall","src":"2424:15:50"},"nodeType":"YulExpressionStatement","src":"2424:15:50"}]},"condition":{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"2322:2:50"},{"kind":"number","nodeType":"YulLiteral","src":"2326:1:50","type":"","value":"3"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2319:2:50"},"nodeType":"YulFunctionCall","src":"2319:9:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2312:6:50"},"nodeType":"YulFunctionCall","src":"2312:17:50"},"nodeType":"YulIf","src":"2309:140:50"},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2465:3:50"},{"name":"_1","nodeType":"YulIdentifier","src":"2470:2:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2458:6:50"},"nodeType":"YulFunctionCall","src":"2458:15:50"},"nodeType":"YulExpressionStatement","src":"2458:15:50"},{"nodeType":"YulVariableDeclaration","src":"2482:44:50","value":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2512:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"2520:4:50","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2508:3:50"},"nodeType":"YulFunctionCall","src":"2508:17:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2502:5:50"},"nodeType":"YulFunctionCall","src":"2502:24:50"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"2486:12:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2535:52:50","value":{"kind":"number","nodeType":"YulLiteral","src":"2545:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"2539:2:50","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2607:3:50"},{"kind":"number","nodeType":"YulLiteral","src":"2612:4:50","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2603:3:50"},"nodeType":"YulFunctionCall","src":"2603:14:50"},{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"2623:12:50"},{"name":"_2","nodeType":"YulIdentifier","src":"2637:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2619:3:50"},"nodeType":"YulFunctionCall","src":"2619:21:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2596:6:50"},"nodeType":"YulFunctionCall","src":"2596:45:50"},"nodeType":"YulExpressionStatement","src":"2596:45:50"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2661:3:50"},{"kind":"number","nodeType":"YulLiteral","src":"2666:4:50","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2657:3:50"},"nodeType":"YulFunctionCall","src":"2657:14:50"},{"arguments":[{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2687:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"2695:4:50","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2683:3:50"},"nodeType":"YulFunctionCall","src":"2683:17:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2677:5:50"},"nodeType":"YulFunctionCall","src":"2677:24:50"},{"name":"_2","nodeType":"YulIdentifier","src":"2703:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2673:3:50"},"nodeType":"YulFunctionCall","src":"2673:33:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2650:6:50"},"nodeType":"YulFunctionCall","src":"2650:57:50"},"nodeType":"YulExpressionStatement","src":"2650:57:50"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2727:3:50"},{"kind":"number","nodeType":"YulLiteral","src":"2732:4:50","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2723:3:50"},"nodeType":"YulFunctionCall","src":"2723:14:50"},{"arguments":[{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2753:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"2761:4:50","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2749:3:50"},"nodeType":"YulFunctionCall","src":"2749:17:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2743:5:50"},"nodeType":"YulFunctionCall","src":"2743:24:50"},{"name":"_2","nodeType":"YulIdentifier","src":"2769:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2739:3:50"},"nodeType":"YulFunctionCall","src":"2739:33:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2716:6:50"},"nodeType":"YulFunctionCall","src":"2716:57:50"},"nodeType":"YulExpressionStatement","src":"2716:57:50"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2793:3:50"},{"kind":"number","nodeType":"YulLiteral","src":"2798:4:50","type":"","value":"0x80"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2789:3:50"},"nodeType":"YulFunctionCall","src":"2789:14:50"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2815:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"2823:4:50","type":"","value":"0x80"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2811:3:50"},"nodeType":"YulFunctionCall","src":"2811:17:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2805:5:50"},"nodeType":"YulFunctionCall","src":"2805:24:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2782:6:50"},"nodeType":"YulFunctionCall","src":"2782:48:50"},"nodeType":"YulExpressionStatement","src":"2782:48:50"},{"nodeType":"YulAssignment","src":"2839:28:50","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2857:3:50"},{"kind":"number","nodeType":"YulLiteral","src":"2862:4:50","type":"","value":"0xa0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2853:3:50"},"nodeType":"YulFunctionCall","src":"2853:14:50"},"variableNames":[{"name":"updatedPos","nodeType":"YulIdentifier","src":"2839:10:50"}]}]},"name":"abi_encodeUpdatedPos_struct_MultiTargetPermission","nodeType":"YulFunctionDefinition","parameters":[{"name":"value0","nodeType":"YulTypedName","src":"2236:6:50","type":""},{"name":"pos","nodeType":"YulTypedName","src":"2244:3:50","type":""}],"returnVariables":[{"name":"updatedPos","nodeType":"YulTypedName","src":"2252:10:50","type":""}],"src":"2177:696:50"},{"body":{"nodeType":"YulBlock","src":"3107:499:50","statements":[{"nodeType":"YulVariableDeclaration","src":"3117:12:50","value":{"kind":"number","nodeType":"YulLiteral","src":"3127:2:50","type":"","value":"32"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"3121:2:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3138:32:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3156:9:50"},{"name":"_1","nodeType":"YulIdentifier","src":"3167:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3152:3:50"},"nodeType":"YulFunctionCall","src":"3152:18:50"},"variables":[{"name":"tail_1","nodeType":"YulTypedName","src":"3142:6:50","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3186:9:50"},{"name":"_1","nodeType":"YulIdentifier","src":"3197:2:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3179:6:50"},"nodeType":"YulFunctionCall","src":"3179:21:50"},"nodeType":"YulExpressionStatement","src":"3179:21:50"},{"nodeType":"YulVariableDeclaration","src":"3209:17:50","value":{"name":"tail_1","nodeType":"YulIdentifier","src":"3220:6:50"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"3213:3:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3235:27:50","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3255:6:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3249:5:50"},"nodeType":"YulFunctionCall","src":"3249:13:50"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"3239:6:50","type":""}]},{"expression":{"arguments":[{"name":"tail_1","nodeType":"YulIdentifier","src":"3278:6:50"},{"name":"length","nodeType":"YulIdentifier","src":"3286:6:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3271:6:50"},"nodeType":"YulFunctionCall","src":"3271:22:50"},"nodeType":"YulExpressionStatement","src":"3271:22:50"},{"nodeType":"YulAssignment","src":"3302:25:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3313:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"3324:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3309:3:50"},"nodeType":"YulFunctionCall","src":"3309:18:50"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"3302:3:50"}]},{"nodeType":"YulVariableDeclaration","src":"3336:29:50","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3354:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"3362:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3350:3:50"},"nodeType":"YulFunctionCall","src":"3350:15:50"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"3340:6:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3374:10:50","value":{"kind":"number","nodeType":"YulLiteral","src":"3383:1:50","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"3378:1:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"3442:138:50","statements":[{"nodeType":"YulAssignment","src":"3456:76:50","value":{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"3519:6:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3513:5:50"},"nodeType":"YulFunctionCall","src":"3513:13:50"},{"name":"pos","nodeType":"YulIdentifier","src":"3528:3:50"}],"functionName":{"name":"abi_encodeUpdatedPos_struct_MultiTargetPermission","nodeType":"YulIdentifier","src":"3463:49:50"},"nodeType":"YulFunctionCall","src":"3463:69:50"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"3456:3:50"}]},{"nodeType":"YulAssignment","src":"3545:25:50","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"3559:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"3567:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3555:3:50"},"nodeType":"YulFunctionCall","src":"3555:15:50"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"3545:6:50"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3404:1:50"},{"name":"length","nodeType":"YulIdentifier","src":"3407:6:50"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"3401:2:50"},"nodeType":"YulFunctionCall","src":"3401:13:50"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"3415:18:50","statements":[{"nodeType":"YulAssignment","src":"3417:14:50","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3426:1:50"},{"kind":"number","nodeType":"YulLiteral","src":"3429:1:50","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3422:3:50"},"nodeType":"YulFunctionCall","src":"3422:9:50"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"3417:1:50"}]}]},"pre":{"nodeType":"YulBlock","src":"3397:3:50","statements":[]},"src":"3393:187:50"},{"nodeType":"YulAssignment","src":"3589:11:50","value":{"name":"pos","nodeType":"YulIdentifier","src":"3597:3:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3589:4:50"}]}]},"name":"abi_encode_tuple_t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3076:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3087:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3098:4:50","type":""}],"src":"2878:728:50"},{"body":{"nodeType":"YulBlock","src":"3746:465:50","statements":[{"body":{"nodeType":"YulBlock","src":"3792:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3801:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3804:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3794:6:50"},"nodeType":"YulFunctionCall","src":"3794:12:50"},"nodeType":"YulExpressionStatement","src":"3794:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3767:7:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"3776:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3763:3:50"},"nodeType":"YulFunctionCall","src":"3763:23:50"},{"kind":"number","nodeType":"YulLiteral","src":"3788:2:50","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3759:3:50"},"nodeType":"YulFunctionCall","src":"3759:32:50"},"nodeType":"YulIf","src":"3756:52:50"},{"nodeType":"YulAssignment","src":"3817:39:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3846:9:50"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"3827:18:50"},"nodeType":"YulFunctionCall","src":"3827:29:50"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3817:6:50"}]},{"nodeType":"YulVariableDeclaration","src":"3865:45:50","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3895:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"3906:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3891:3:50"},"nodeType":"YulFunctionCall","src":"3891:18:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3878:12:50"},"nodeType":"YulFunctionCall","src":"3878:32:50"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"3869:5:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"3960:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3969:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3972:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3962:6:50"},"nodeType":"YulFunctionCall","src":"3962:12:50"},"nodeType":"YulExpressionStatement","src":"3962:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3932:5:50"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3943:5:50"},{"kind":"number","nodeType":"YulLiteral","src":"3950:6:50","type":"","value":"0xffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3939:3:50"},"nodeType":"YulFunctionCall","src":"3939:18:50"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"3929:2:50"},"nodeType":"YulFunctionCall","src":"3929:29:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3922:6:50"},"nodeType":"YulFunctionCall","src":"3922:37:50"},"nodeType":"YulIf","src":"3919:57:50"},{"nodeType":"YulAssignment","src":"3985:15:50","value":{"name":"value","nodeType":"YulIdentifier","src":"3995:5:50"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"3985:6:50"}]},{"nodeType":"YulVariableDeclaration","src":"4009:46:50","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4040:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"4051:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4036:3:50"},"nodeType":"YulFunctionCall","src":"4036:18:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4023:12:50"},"nodeType":"YulFunctionCall","src":"4023:32:50"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4013:6:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"4098:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4107:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4110:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4100:6:50"},"nodeType":"YulFunctionCall","src":"4100:12:50"},"nodeType":"YulExpressionStatement","src":"4100:12:50"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"4070:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"4078:18:50","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4067:2:50"},"nodeType":"YulFunctionCall","src":"4067:30:50"},"nodeType":"YulIf","src":"4064:50:50"},{"nodeType":"YulAssignment","src":"4123:82:50","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4177:9:50"},{"name":"offset","nodeType":"YulIdentifier","src":"4188:6:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4173:3:50"},"nodeType":"YulFunctionCall","src":"4173:22:50"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4197:7:50"}],"functionName":{"name":"abi_decode_struct_SetupPayload_calldata","nodeType":"YulIdentifier","src":"4133:39:50"},"nodeType":"YulFunctionCall","src":"4133:72:50"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"4123:6:50"}]}]},"name":"abi_decode_tuple_t_addresst_uint16t_struct$_SetupPayload_$4810_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3696:9:50","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3707:7:50","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3719:6:50","type":""},{"name":"value1","nodeType":"YulTypedName","src":"3727:6:50","type":""},{"name":"value2","nodeType":"YulTypedName","src":"3735:6:50","type":""}],"src":"3611:600:50"},{"body":{"nodeType":"YulBlock","src":"4265:373:50","statements":[{"nodeType":"YulVariableDeclaration","src":"4275:26:50","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4295:5:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4289:5:50"},"nodeType":"YulFunctionCall","src":"4289:12:50"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"4279:6:50","type":""}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4317:3:50"},{"name":"length","nodeType":"YulIdentifier","src":"4322:6:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4310:6:50"},"nodeType":"YulFunctionCall","src":"4310:19:50"},"nodeType":"YulExpressionStatement","src":"4310:19:50"},{"nodeType":"YulVariableDeclaration","src":"4338:10:50","value":{"kind":"number","nodeType":"YulLiteral","src":"4347:1:50","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"4342:1:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"4409:110:50","statements":[{"nodeType":"YulVariableDeclaration","src":"4423:14:50","value":{"kind":"number","nodeType":"YulLiteral","src":"4433:4:50","type":"","value":"0x20"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"4427:2:50","type":""}]},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4465:3:50"},{"name":"i","nodeType":"YulIdentifier","src":"4470:1:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4461:3:50"},"nodeType":"YulFunctionCall","src":"4461:11:50"},{"name":"_1","nodeType":"YulIdentifier","src":"4474:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4457:3:50"},"nodeType":"YulFunctionCall","src":"4457:20:50"},{"arguments":[{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4493:5:50"},{"name":"i","nodeType":"YulIdentifier","src":"4500:1:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4489:3:50"},"nodeType":"YulFunctionCall","src":"4489:13:50"},{"name":"_1","nodeType":"YulIdentifier","src":"4504:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4485:3:50"},"nodeType":"YulFunctionCall","src":"4485:22:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4479:5:50"},"nodeType":"YulFunctionCall","src":"4479:29:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4450:6:50"},"nodeType":"YulFunctionCall","src":"4450:59:50"},"nodeType":"YulExpressionStatement","src":"4450:59:50"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"4368:1:50"},{"name":"length","nodeType":"YulIdentifier","src":"4371:6:50"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"4365:2:50"},"nodeType":"YulFunctionCall","src":"4365:13:50"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"4379:21:50","statements":[{"nodeType":"YulAssignment","src":"4381:17:50","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"4390:1:50"},{"kind":"number","nodeType":"YulLiteral","src":"4393:4:50","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4386:3:50"},"nodeType":"YulFunctionCall","src":"4386:12:50"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"4381:1:50"}]}]},"pre":{"nodeType":"YulBlock","src":"4361:3:50","statements":[]},"src":"4357:162:50"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4543:3:50"},{"name":"length","nodeType":"YulIdentifier","src":"4548:6:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4539:3:50"},"nodeType":"YulFunctionCall","src":"4539:16:50"},{"kind":"number","nodeType":"YulLiteral","src":"4557:4:50","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4535:3:50"},"nodeType":"YulFunctionCall","src":"4535:27:50"},{"kind":"number","nodeType":"YulLiteral","src":"4564:1:50","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4528:6:50"},"nodeType":"YulFunctionCall","src":"4528:38:50"},"nodeType":"YulExpressionStatement","src":"4528:38:50"},{"nodeType":"YulAssignment","src":"4575:57:50","value":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4590:3:50"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"4603:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"4611:2:50","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4599:3:50"},"nodeType":"YulFunctionCall","src":"4599:15:50"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4620:2:50","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"4616:3:50"},"nodeType":"YulFunctionCall","src":"4616:7:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4595:3:50"},"nodeType":"YulFunctionCall","src":"4595:29:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4586:3:50"},"nodeType":"YulFunctionCall","src":"4586:39:50"},{"kind":"number","nodeType":"YulLiteral","src":"4627:4:50","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4582:3:50"},"nodeType":"YulFunctionCall","src":"4582:50:50"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"4575:3:50"}]}]},"name":"abi_encode_bytes","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"4242:5:50","type":""},{"name":"pos","nodeType":"YulTypedName","src":"4249:3:50","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"4257:3:50","type":""}],"src":"4216:422:50"},{"body":{"nodeType":"YulBlock","src":"4711:1094:50","statements":[{"nodeType":"YulVariableDeclaration","src":"4721:26:50","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4737:3:50"},{"kind":"number","nodeType":"YulLiteral","src":"4742:4:50","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4733:3:50"},"nodeType":"YulFunctionCall","src":"4733:14:50"},"variables":[{"name":"tail","nodeType":"YulTypedName","src":"4725:4:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4756:32:50","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4782:5:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4776:5:50"},"nodeType":"YulFunctionCall","src":"4776:12:50"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"4760:12:50","type":""}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4804:3:50"},{"kind":"number","nodeType":"YulLiteral","src":"4809:4:50","type":"","value":"0x40"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4797:6:50"},"nodeType":"YulFunctionCall","src":"4797:17:50"},"nodeType":"YulExpressionStatement","src":"4797:17:50"},{"nodeType":"YulVariableDeclaration","src":"4823:17:50","value":{"name":"tail","nodeType":"YulIdentifier","src":"4836:4:50"},"variables":[{"name":"pos_1","nodeType":"YulTypedName","src":"4827:5:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4849:33:50","value":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"4869:12:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4863:5:50"},"nodeType":"YulFunctionCall","src":"4863:19:50"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"4853:6:50","type":""}]},{"expression":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"4898:4:50"},{"name":"length","nodeType":"YulIdentifier","src":"4904:6:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4891:6:50"},"nodeType":"YulFunctionCall","src":"4891:20:50"},"nodeType":"YulExpressionStatement","src":"4891:20:50"},{"nodeType":"YulAssignment","src":"4920:21:50","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4933:3:50"},{"kind":"number","nodeType":"YulLiteral","src":"4938:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4929:3:50"},"nodeType":"YulFunctionCall","src":"4929:12:50"},"variableNames":[{"name":"pos_1","nodeType":"YulIdentifier","src":"4920:5:50"}]},{"nodeType":"YulVariableDeclaration","src":"4950:14:50","value":{"kind":"number","nodeType":"YulLiteral","src":"4960:4:50","type":"","value":"0x20"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"4954:2:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4973:35:50","value":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"4991:12:50"},{"name":"_1","nodeType":"YulIdentifier","src":"5005:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4987:3:50"},"nodeType":"YulFunctionCall","src":"4987:21:50"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"4977:6:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5017:10:50","value":{"kind":"number","nodeType":"YulLiteral","src":"5026:1:50","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"5021:1:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"5085:175:50","statements":[{"expression":{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5106:5:50"},{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"5123:6:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5117:5:50"},"nodeType":"YulFunctionCall","src":"5117:13:50"},{"kind":"number","nodeType":"YulLiteral","src":"5132:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5113:3:50"},"nodeType":"YulFunctionCall","src":"5113:62:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5099:6:50"},"nodeType":"YulFunctionCall","src":"5099:77:50"},"nodeType":"YulExpressionStatement","src":"5099:77:50"},{"nodeType":"YulAssignment","src":"5189:23:50","value":{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5202:5:50"},{"name":"_1","nodeType":"YulIdentifier","src":"5209:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5198:3:50"},"nodeType":"YulFunctionCall","src":"5198:14:50"},"variableNames":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5189:5:50"}]},{"nodeType":"YulAssignment","src":"5225:25:50","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"5239:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"5247:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5235:3:50"},"nodeType":"YulFunctionCall","src":"5235:15:50"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"5225:6:50"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"5047:1:50"},{"name":"length","nodeType":"YulIdentifier","src":"5050:6:50"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"5044:2:50"},"nodeType":"YulFunctionCall","src":"5044:13:50"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"5058:18:50","statements":[{"nodeType":"YulAssignment","src":"5060:14:50","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"5069:1:50"},{"kind":"number","nodeType":"YulLiteral","src":"5072:1:50","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5065:3:50"},"nodeType":"YulFunctionCall","src":"5065:9:50"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"5060:1:50"}]}]},"pre":{"nodeType":"YulBlock","src":"5040:3:50","statements":[]},"src":"5036:224:50"},{"nodeType":"YulVariableDeclaration","src":"5269:43:50","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5301:5:50"},{"name":"_1","nodeType":"YulIdentifier","src":"5308:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5297:3:50"},"nodeType":"YulFunctionCall","src":"5297:14:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5291:5:50"},"nodeType":"YulFunctionCall","src":"5291:21:50"},"variables":[{"name":"memberValue0_1","nodeType":"YulTypedName","src":"5273:14:50","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5332:3:50"},{"name":"_1","nodeType":"YulIdentifier","src":"5337:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5328:3:50"},"nodeType":"YulFunctionCall","src":"5328:12:50"},{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5346:5:50"},{"name":"pos","nodeType":"YulIdentifier","src":"5353:3:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5342:3:50"},"nodeType":"YulFunctionCall","src":"5342:15:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5321:6:50"},"nodeType":"YulFunctionCall","src":"5321:37:50"},"nodeType":"YulExpressionStatement","src":"5321:37:50"},{"nodeType":"YulVariableDeclaration","src":"5367:18:50","value":{"name":"pos_1","nodeType":"YulIdentifier","src":"5380:5:50"},"variables":[{"name":"pos_2","nodeType":"YulTypedName","src":"5371:5:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5394:37:50","value":{"arguments":[{"name":"memberValue0_1","nodeType":"YulIdentifier","src":"5416:14:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5410:5:50"},"nodeType":"YulFunctionCall","src":"5410:21:50"},"variables":[{"name":"length_1","nodeType":"YulTypedName","src":"5398:8:50","type":""}]},{"expression":{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5447:5:50"},{"name":"length_1","nodeType":"YulIdentifier","src":"5454:8:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5440:6:50"},"nodeType":"YulFunctionCall","src":"5440:23:50"},"nodeType":"YulExpressionStatement","src":"5440:23:50"},{"nodeType":"YulAssignment","src":"5472:23:50","value":{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5485:5:50"},{"name":"_1","nodeType":"YulIdentifier","src":"5492:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5481:3:50"},"nodeType":"YulFunctionCall","src":"5481:14:50"},"variableNames":[{"name":"pos_2","nodeType":"YulIdentifier","src":"5472:5:50"}]},{"nodeType":"YulVariableDeclaration","src":"5504:39:50","value":{"arguments":[{"name":"memberValue0_1","nodeType":"YulIdentifier","src":"5524:14:50"},{"name":"_1","nodeType":"YulIdentifier","src":"5540:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5520:3:50"},"nodeType":"YulFunctionCall","src":"5520:23:50"},"variables":[{"name":"srcPtr_1","nodeType":"YulTypedName","src":"5508:8:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5552:12:50","value":{"kind":"number","nodeType":"YulLiteral","src":"5563:1:50","type":"","value":"0"},"variables":[{"name":"i_1","nodeType":"YulTypedName","src":"5556:3:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"5630:148:50","statements":[{"nodeType":"YulAssignment","src":"5644:82:50","value":{"arguments":[{"arguments":[{"name":"srcPtr_1","nodeType":"YulIdentifier","src":"5709:8:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5703:5:50"},"nodeType":"YulFunctionCall","src":"5703:15:50"},{"name":"pos_2","nodeType":"YulIdentifier","src":"5720:5:50"}],"functionName":{"name":"abi_encodeUpdatedPos_struct_MultiTargetPermission","nodeType":"YulIdentifier","src":"5653:49:50"},"nodeType":"YulFunctionCall","src":"5653:73:50"},"variableNames":[{"name":"pos_2","nodeType":"YulIdentifier","src":"5644:5:50"}]},{"nodeType":"YulAssignment","src":"5739:29:50","value":{"arguments":[{"name":"srcPtr_1","nodeType":"YulIdentifier","src":"5755:8:50"},{"name":"_1","nodeType":"YulIdentifier","src":"5765:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5751:3:50"},"nodeType":"YulFunctionCall","src":"5751:17:50"},"variableNames":[{"name":"srcPtr_1","nodeType":"YulIdentifier","src":"5739:8:50"}]}]},"condition":{"arguments":[{"name":"i_1","nodeType":"YulIdentifier","src":"5584:3:50"},{"name":"length_1","nodeType":"YulIdentifier","src":"5589:8:50"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"5581:2:50"},"nodeType":"YulFunctionCall","src":"5581:17:50"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"5599:22:50","statements":[{"nodeType":"YulAssignment","src":"5601:18:50","value":{"arguments":[{"name":"i_1","nodeType":"YulIdentifier","src":"5612:3:50"},{"kind":"number","nodeType":"YulLiteral","src":"5617:1:50","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5608:3:50"},"nodeType":"YulFunctionCall","src":"5608:11:50"},"variableNames":[{"name":"i_1","nodeType":"YulIdentifier","src":"5601:3:50"}]}]},"pre":{"nodeType":"YulBlock","src":"5577:3:50","statements":[]},"src":"5573:205:50"},{"nodeType":"YulAssignment","src":"5787:12:50","value":{"name":"pos_2","nodeType":"YulIdentifier","src":"5794:5:50"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"5787:3:50"}]}]},"name":"abi_encode_struct_PreparedSetupData","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"4688:5:50","type":""},{"name":"pos","nodeType":"YulTypedName","src":"4695:3:50","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"4703:3:50","type":""}],"src":"4643:1162:50"},{"body":{"nodeType":"YulBlock","src":"6027:231:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6044:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"6055:2:50","type":"","value":"64"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6037:6:50"},"nodeType":"YulFunctionCall","src":"6037:21:50"},"nodeType":"YulExpressionStatement","src":"6037:21:50"},{"nodeType":"YulVariableDeclaration","src":"6067:58:50","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6098:6:50"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6110:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"6121:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6106:3:50"},"nodeType":"YulFunctionCall","src":"6106:18:50"}],"functionName":{"name":"abi_encode_bytes","nodeType":"YulIdentifier","src":"6081:16:50"},"nodeType":"YulFunctionCall","src":"6081:44:50"},"variables":[{"name":"tail_1","nodeType":"YulTypedName","src":"6071:6:50","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6145:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"6156:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6141:3:50"},"nodeType":"YulFunctionCall","src":"6141:18:50"},{"arguments":[{"name":"tail_1","nodeType":"YulIdentifier","src":"6165:6:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"6173:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6161:3:50"},"nodeType":"YulFunctionCall","src":"6161:22:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6134:6:50"},"nodeType":"YulFunctionCall","src":"6134:50:50"},"nodeType":"YulExpressionStatement","src":"6134:50:50"},{"nodeType":"YulAssignment","src":"6193:59:50","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"6237:6:50"},{"name":"tail_1","nodeType":"YulIdentifier","src":"6245:6:50"}],"functionName":{"name":"abi_encode_struct_PreparedSetupData","nodeType":"YulIdentifier","src":"6201:35:50"},"nodeType":"YulFunctionCall","src":"6201:51:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6193:4:50"}]}]},"name":"abi_encode_tuple_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$4802_memory_ptr__to_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$4802_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5988:9:50","type":""},{"name":"value1","nodeType":"YulTypedName","src":"5999:6:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"6007:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6018:4:50","type":""}],"src":"5810:448:50"},{"body":{"nodeType":"YulBlock","src":"6295:95:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6312:1:50","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6319:3:50","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"6324:10:50","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"6315:3:50"},"nodeType":"YulFunctionCall","src":"6315:20:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6305:6:50"},"nodeType":"YulFunctionCall","src":"6305:31:50"},"nodeType":"YulExpressionStatement","src":"6305:31:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6352:1:50","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"6355:4:50","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6345:6:50"},"nodeType":"YulFunctionCall","src":"6345:15:50"},"nodeType":"YulExpressionStatement","src":"6345:15:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6376:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6379:4:50","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6369:6:50"},"nodeType":"YulFunctionCall","src":"6369:15:50"},"nodeType":"YulExpressionStatement","src":"6369:15:50"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"6263:127:50"},{"body":{"nodeType":"YulBlock","src":"6491:899:50","statements":[{"body":{"nodeType":"YulBlock","src":"6537:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6546:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6549:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6539:6:50"},"nodeType":"YulFunctionCall","src":"6539:12:50"},"nodeType":"YulExpressionStatement","src":"6539:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"6512:7:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"6521:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6508:3:50"},"nodeType":"YulFunctionCall","src":"6508:23:50"},{"kind":"number","nodeType":"YulLiteral","src":"6533:2:50","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6504:3:50"},"nodeType":"YulFunctionCall","src":"6504:32:50"},"nodeType":"YulIf","src":"6501:52:50"},{"nodeType":"YulAssignment","src":"6562:39:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6591:9:50"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"6572:18:50"},"nodeType":"YulFunctionCall","src":"6572:29:50"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"6562:6:50"}]},{"nodeType":"YulVariableDeclaration","src":"6610:46:50","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6641:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"6652:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6637:3:50"},"nodeType":"YulFunctionCall","src":"6637:18:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6624:12:50"},"nodeType":"YulFunctionCall","src":"6624:32:50"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"6614:6:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"6665:28:50","value":{"kind":"number","nodeType":"YulLiteral","src":"6675:18:50","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"6669:2:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"6720:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6729:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6732:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6722:6:50"},"nodeType":"YulFunctionCall","src":"6722:12:50"},"nodeType":"YulExpressionStatement","src":"6722:12:50"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"6708:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"6716:2:50"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6705:2:50"},"nodeType":"YulFunctionCall","src":"6705:14:50"},"nodeType":"YulIf","src":"6702:34:50"},{"nodeType":"YulVariableDeclaration","src":"6745:32:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6759:9:50"},{"name":"offset","nodeType":"YulIdentifier","src":"6770:6:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6755:3:50"},"nodeType":"YulFunctionCall","src":"6755:22:50"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"6749:2:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"6825:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6834:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6837:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6827:6:50"},"nodeType":"YulFunctionCall","src":"6827:12:50"},"nodeType":"YulExpressionStatement","src":"6827:12:50"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"6804:2:50"},{"kind":"number","nodeType":"YulLiteral","src":"6808:4:50","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6800:3:50"},"nodeType":"YulFunctionCall","src":"6800:13:50"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"6815:7:50"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6796:3:50"},"nodeType":"YulFunctionCall","src":"6796:27:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"6789:6:50"},"nodeType":"YulFunctionCall","src":"6789:35:50"},"nodeType":"YulIf","src":"6786:55:50"},{"nodeType":"YulVariableDeclaration","src":"6850:26:50","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"6873:2:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6860:12:50"},"nodeType":"YulFunctionCall","src":"6860:16:50"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"6854:2:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"6899:22:50","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"6901:16:50"},"nodeType":"YulFunctionCall","src":"6901:18:50"},"nodeType":"YulExpressionStatement","src":"6901:18:50"}]},"condition":{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"6891:2:50"},{"name":"_1","nodeType":"YulIdentifier","src":"6895:2:50"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6888:2:50"},"nodeType":"YulFunctionCall","src":"6888:10:50"},"nodeType":"YulIf","src":"6885:36:50"},{"nodeType":"YulVariableDeclaration","src":"6930:17:50","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6944:2:50","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"6940:3:50"},"nodeType":"YulFunctionCall","src":"6940:7:50"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"6934:2:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"6956:23:50","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6976:2:50","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6970:5:50"},"nodeType":"YulFunctionCall","src":"6970:9:50"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"6960:6:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"6988:71:50","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7010:6:50"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"7034:2:50"},{"kind":"number","nodeType":"YulLiteral","src":"7038:4:50","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7030:3:50"},"nodeType":"YulFunctionCall","src":"7030:13:50"},{"name":"_4","nodeType":"YulIdentifier","src":"7045:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7026:3:50"},"nodeType":"YulFunctionCall","src":"7026:22:50"},{"kind":"number","nodeType":"YulLiteral","src":"7050:2:50","type":"","value":"63"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7022:3:50"},"nodeType":"YulFunctionCall","src":"7022:31:50"},{"name":"_4","nodeType":"YulIdentifier","src":"7055:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7018:3:50"},"nodeType":"YulFunctionCall","src":"7018:40:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7006:3:50"},"nodeType":"YulFunctionCall","src":"7006:53:50"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"6992:10:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"7118:22:50","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"7120:16:50"},"nodeType":"YulFunctionCall","src":"7120:18:50"},"nodeType":"YulExpressionStatement","src":"7120:18:50"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"7077:10:50"},{"name":"_1","nodeType":"YulIdentifier","src":"7089:2:50"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"7074:2:50"},"nodeType":"YulFunctionCall","src":"7074:18:50"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"7097:10:50"},{"name":"memPtr","nodeType":"YulIdentifier","src":"7109:6:50"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"7094:2:50"},"nodeType":"YulFunctionCall","src":"7094:22:50"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"7071:2:50"},"nodeType":"YulFunctionCall","src":"7071:46:50"},"nodeType":"YulIf","src":"7068:72:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7156:2:50","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"7160:10:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7149:6:50"},"nodeType":"YulFunctionCall","src":"7149:22:50"},"nodeType":"YulExpressionStatement","src":"7149:22:50"},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7187:6:50"},{"name":"_3","nodeType":"YulIdentifier","src":"7195:2:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7180:6:50"},"nodeType":"YulFunctionCall","src":"7180:18:50"},"nodeType":"YulExpressionStatement","src":"7180:18:50"},{"body":{"nodeType":"YulBlock","src":"7244:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7253:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7256:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7246:6:50"},"nodeType":"YulFunctionCall","src":"7246:12:50"},"nodeType":"YulExpressionStatement","src":"7246:12:50"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"7221:2:50"},{"name":"_3","nodeType":"YulIdentifier","src":"7225:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7217:3:50"},"nodeType":"YulFunctionCall","src":"7217:11:50"},{"kind":"number","nodeType":"YulLiteral","src":"7230:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7213:3:50"},"nodeType":"YulFunctionCall","src":"7213:20:50"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"7235:7:50"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"7210:2:50"},"nodeType":"YulFunctionCall","src":"7210:33:50"},"nodeType":"YulIf","src":"7207:53:50"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7286:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"7294:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7282:3:50"},"nodeType":"YulFunctionCall","src":"7282:15:50"},{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"7303:2:50"},{"kind":"number","nodeType":"YulLiteral","src":"7307:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7299:3:50"},"nodeType":"YulFunctionCall","src":"7299:11:50"},{"name":"_3","nodeType":"YulIdentifier","src":"7312:2:50"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"7269:12:50"},"nodeType":"YulFunctionCall","src":"7269:46:50"},"nodeType":"YulExpressionStatement","src":"7269:46:50"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7339:6:50"},{"name":"_3","nodeType":"YulIdentifier","src":"7347:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7335:3:50"},"nodeType":"YulFunctionCall","src":"7335:15:50"},{"kind":"number","nodeType":"YulLiteral","src":"7352:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7331:3:50"},"nodeType":"YulFunctionCall","src":"7331:24:50"},{"kind":"number","nodeType":"YulLiteral","src":"7357:1:50","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7324:6:50"},"nodeType":"YulFunctionCall","src":"7324:35:50"},"nodeType":"YulExpressionStatement","src":"7324:35:50"},{"nodeType":"YulAssignment","src":"7368:16:50","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"7378:6:50"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"7368:6:50"}]}]},"name":"abi_decode_tuple_t_addresst_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6449:9:50","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"6460:7:50","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"6472:6:50","type":""},{"name":"value1","nodeType":"YulTypedName","src":"6480:6:50","type":""}],"src":"6395:995:50"},{"body":{"nodeType":"YulBlock","src":"7594:209:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7611:9:50"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7626:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"7634:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7622:3:50"},"nodeType":"YulFunctionCall","src":"7622:55:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7604:6:50"},"nodeType":"YulFunctionCall","src":"7604:74:50"},"nodeType":"YulExpressionStatement","src":"7604:74:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7698:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"7709:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7694:3:50"},"nodeType":"YulFunctionCall","src":"7694:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"7714:2:50","type":"","value":"64"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7687:6:50"},"nodeType":"YulFunctionCall","src":"7687:30:50"},"nodeType":"YulExpressionStatement","src":"7687:30:50"},{"nodeType":"YulAssignment","src":"7726:71:50","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"7770:6:50"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7782:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"7793:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7778:3:50"},"nodeType":"YulFunctionCall","src":"7778:18:50"}],"functionName":{"name":"abi_encode_struct_PreparedSetupData","nodeType":"YulIdentifier","src":"7734:35:50"},"nodeType":"YulFunctionCall","src":"7734:63:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7726:4:50"}]}]},"name":"abi_encode_tuple_t_address_t_struct$_PreparedSetupData_$4802_memory_ptr__to_t_address_t_struct$_PreparedSetupData_$4802_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7555:9:50","type":""},{"name":"value1","nodeType":"YulTypedName","src":"7566:6:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"7574:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7585:4:50","type":""}],"src":"7395:408:50"},{"body":{"nodeType":"YulBlock","src":"7907:89:50","statements":[{"nodeType":"YulAssignment","src":"7917:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7929:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"7940:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7925:3:50"},"nodeType":"YulFunctionCall","src":"7925:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7917:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7959:9:50"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7974:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"7982:6:50","type":"","value":"0xffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7970:3:50"},"nodeType":"YulFunctionCall","src":"7970:19:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7952:6:50"},"nodeType":"YulFunctionCall","src":"7952:38:50"},"nodeType":"YulExpressionStatement","src":"7952:38:50"}]},"name":"abi_encode_tuple_t_uint16__to_t_uint16__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7876:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"7887:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7898:4:50","type":""}],"src":"7808:188:50"},{"body":{"nodeType":"YulBlock","src":"8115:125:50","statements":[{"nodeType":"YulAssignment","src":"8125:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8137:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"8148:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8133:3:50"},"nodeType":"YulFunctionCall","src":"8133:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"8125:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8167:9:50"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"8182:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"8190:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8178:3:50"},"nodeType":"YulFunctionCall","src":"8178:55:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8160:6:50"},"nodeType":"YulFunctionCall","src":"8160:74:50"},"nodeType":"YulExpressionStatement","src":"8160:74:50"}]},"name":"abi_encode_tuple_t_contract$_IDAO_$2538__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8084:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"8095:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"8106:4:50","type":""}],"src":"8001:239:50"},{"body":{"nodeType":"YulBlock","src":"8277:95:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8294:1:50","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8301:3:50","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"8306:10:50","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"8297:3:50"},"nodeType":"YulFunctionCall","src":"8297:20:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8287:6:50"},"nodeType":"YulFunctionCall","src":"8287:31:50"},"nodeType":"YulExpressionStatement","src":"8287:31:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8334:1:50","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"8337:4:50","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8327:6:50"},"nodeType":"YulFunctionCall","src":"8327:15:50"},"nodeType":"YulExpressionStatement","src":"8327:15:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8358:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8361:4:50","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8351:6:50"},"nodeType":"YulFunctionCall","src":"8351:15:50"},"nodeType":"YulExpressionStatement","src":"8351:15:50"}]},"name":"panic_error_0x11","nodeType":"YulFunctionDefinition","src":"8245:127:50"},{"body":{"nodeType":"YulBlock","src":"8426:159:50","statements":[{"nodeType":"YulVariableDeclaration","src":"8436:52:50","value":{"kind":"number","nodeType":"YulLiteral","src":"8446:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"8440:2:50","type":""}]},{"nodeType":"YulAssignment","src":"8497:35:50","value":{"arguments":[{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"8513:1:50"},{"name":"_1","nodeType":"YulIdentifier","src":"8516:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8509:3:50"},"nodeType":"YulFunctionCall","src":"8509:10:50"},{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"8525:1:50"},{"name":"_1","nodeType":"YulIdentifier","src":"8528:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8521:3:50"},"nodeType":"YulFunctionCall","src":"8521:10:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"8505:3:50"},"nodeType":"YulFunctionCall","src":"8505:27:50"},"variableNames":[{"name":"diff","nodeType":"YulIdentifier","src":"8497:4:50"}]},{"body":{"nodeType":"YulBlock","src":"8557:22:50","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"8559:16:50"},"nodeType":"YulFunctionCall","src":"8559:18:50"},"nodeType":"YulExpressionStatement","src":"8559:18:50"}]},"condition":{"arguments":[{"name":"diff","nodeType":"YulIdentifier","src":"8547:4:50"},{"name":"_1","nodeType":"YulIdentifier","src":"8553:2:50"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"8544:2:50"},"nodeType":"YulFunctionCall","src":"8544:12:50"},"nodeType":"YulIf","src":"8541:38:50"}]},"name":"checked_sub_t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"8408:1:50","type":""},{"name":"y","nodeType":"YulTypedName","src":"8411:1:50","type":""}],"returnVariables":[{"name":"diff","nodeType":"YulTypedName","src":"8417:4:50","type":""}],"src":"8377:208:50"},{"body":{"nodeType":"YulBlock","src":"8622:95:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8639:1:50","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8646:3:50","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"8651:10:50","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"8642:3:50"},"nodeType":"YulFunctionCall","src":"8642:20:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8632:6:50"},"nodeType":"YulFunctionCall","src":"8632:31:50"},"nodeType":"YulExpressionStatement","src":"8632:31:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8679:1:50","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"8682:4:50","type":"","value":"0x32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8672:6:50"},"nodeType":"YulFunctionCall","src":"8672:15:50"},"nodeType":"YulExpressionStatement","src":"8672:15:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8703:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8706:4:50","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8696:6:50"},"nodeType":"YulFunctionCall","src":"8696:15:50"},"nodeType":"YulExpressionStatement","src":"8696:15:50"}]},"name":"panic_error_0x32","nodeType":"YulFunctionDefinition","src":"8590:127:50"},{"body":{"nodeType":"YulBlock","src":"8769:187:50","statements":[{"nodeType":"YulVariableDeclaration","src":"8779:52:50","value":{"kind":"number","nodeType":"YulLiteral","src":"8789:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"8783:2:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"8840:29:50","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8859:5:50"},{"name":"_1","nodeType":"YulIdentifier","src":"8866:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8855:3:50"},"nodeType":"YulFunctionCall","src":"8855:14:50"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"8844:7:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"8897:22:50","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"8899:16:50"},"nodeType":"YulFunctionCall","src":"8899:18:50"},"nodeType":"YulExpressionStatement","src":"8899:18:50"}]},"condition":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"8884:7:50"},{"name":"_1","nodeType":"YulIdentifier","src":"8893:2:50"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"8881:2:50"},"nodeType":"YulFunctionCall","src":"8881:15:50"},"nodeType":"YulIf","src":"8878:41:50"},{"nodeType":"YulAssignment","src":"8928:22:50","value":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"8939:7:50"},{"kind":"number","nodeType":"YulLiteral","src":"8948:1:50","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8935:3:50"},"nodeType":"YulFunctionCall","src":"8935:15:50"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"8928:3:50"}]}]},"name":"increment_t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"8751:5:50","type":""}],"returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"8761:3:50","type":""}],"src":"8722:234:50"},{"body":{"nodeType":"YulBlock","src":"9108:190:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9125:9:50"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"9140:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"9148:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"9136:3:50"},"nodeType":"YulFunctionCall","src":"9136:55:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9118:6:50"},"nodeType":"YulFunctionCall","src":"9118:74:50"},"nodeType":"YulExpressionStatement","src":"9118:74:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9212:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"9223:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9208:3:50"},"nodeType":"YulFunctionCall","src":"9208:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"9228:2:50","type":"","value":"64"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9201:6:50"},"nodeType":"YulFunctionCall","src":"9201:30:50"},"nodeType":"YulExpressionStatement","src":"9201:30:50"},{"nodeType":"YulAssignment","src":"9240:52:50","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"9265:6:50"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9277:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"9288:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9273:3:50"},"nodeType":"YulFunctionCall","src":"9273:18:50"}],"functionName":{"name":"abi_encode_bytes","nodeType":"YulIdentifier","src":"9248:16:50"},"nodeType":"YulFunctionCall","src":"9248:44:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"9240:4:50"}]}]},"name":"abi_encode_tuple_t_address_t_bytes_memory_ptr__to_t_address_t_bytes_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9069:9:50","type":""},{"name":"value1","nodeType":"YulTypedName","src":"9080:6:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"9088:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"9099:4:50","type":""}],"src":"8961:337:50"}]},"contents":"{\n { }\n function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n if iszero(eq(value, and(value, shl(224, 0xffffffff)))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 96)\n let pos := headStart\n pos := headStart\n let srcPtr := value0\n let i := 0\n for { } lt(i, 0x03) { i := add(i, 1) }\n {\n mstore(pos, and(mload(srcPtr), 0xff))\n let _1 := 0x20\n pos := add(pos, _1)\n srcPtr := add(srcPtr, _1)\n }\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_decode_address(offset) -> value\n {\n value := calldataload(offset)\n if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n }\n function abi_decode_struct_SetupPayload_calldata(offset, end) -> value\n {\n if slt(sub(end, offset), 96) { revert(0, 0) }\n value := offset\n }\n function abi_decode_tuple_t_addresst_struct$_SetupPayload_$4810_calldata_ptr(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n let offset := calldataload(add(headStart, 32))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n value1 := abi_decode_struct_SetupPayload_calldata(add(headStart, offset), dataEnd)\n }\n function panic_error_0x21()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x21)\n revert(0, 0x24)\n }\n function abi_encodeUpdatedPos_struct_MultiTargetPermission(value0, pos) -> updatedPos\n {\n let _1 := mload(value0)\n if iszero(lt(_1, 3))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x21)\n revert(0, 0x24)\n }\n mstore(pos, _1)\n let memberValue0 := mload(add(value0, 0x20))\n let _2 := 0xffffffffffffffffffffffffffffffffffffffff\n mstore(add(pos, 0x20), and(memberValue0, _2))\n mstore(add(pos, 0x40), and(mload(add(value0, 0x40)), _2))\n mstore(add(pos, 0x60), and(mload(add(value0, 0x60)), _2))\n mstore(add(pos, 0x80), mload(add(value0, 0x80)))\n updatedPos := add(pos, 0xa0)\n }\n function abi_encode_tuple_t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n let _1 := 32\n let tail_1 := add(headStart, _1)\n mstore(headStart, _1)\n let pos := tail_1\n let length := mload(value0)\n mstore(tail_1, length)\n pos := add(headStart, 64)\n let srcPtr := add(value0, _1)\n let i := 0\n for { } lt(i, length) { i := add(i, 1) }\n {\n pos := abi_encodeUpdatedPos_struct_MultiTargetPermission(mload(srcPtr), pos)\n srcPtr := add(srcPtr, _1)\n }\n tail := pos\n }\n function abi_decode_tuple_t_addresst_uint16t_struct$_SetupPayload_$4810_calldata_ptr(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n let value := calldataload(add(headStart, 32))\n if iszero(eq(value, and(value, 0xffff))) { revert(0, 0) }\n value1 := value\n let offset := calldataload(add(headStart, 64))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n value2 := abi_decode_struct_SetupPayload_calldata(add(headStart, offset), dataEnd)\n }\n function abi_encode_bytes(value, pos) -> end\n {\n let length := mload(value)\n mstore(pos, length)\n let i := 0\n for { } lt(i, length) { i := add(i, 0x20) }\n {\n let _1 := 0x20\n mstore(add(add(pos, i), _1), mload(add(add(value, i), _1)))\n }\n mstore(add(add(pos, length), 0x20), 0)\n end := add(add(pos, and(add(length, 31), not(31))), 0x20)\n }\n function abi_encode_struct_PreparedSetupData(value, pos) -> end\n {\n let tail := add(pos, 0x40)\n let memberValue0 := mload(value)\n mstore(pos, 0x40)\n let pos_1 := tail\n let length := mload(memberValue0)\n mstore(tail, length)\n pos_1 := add(pos, 96)\n let _1 := 0x20\n let srcPtr := add(memberValue0, _1)\n let i := 0\n for { } lt(i, length) { i := add(i, 1) }\n {\n mstore(pos_1, and(mload(srcPtr), 0xffffffffffffffffffffffffffffffffffffffff))\n pos_1 := add(pos_1, _1)\n srcPtr := add(srcPtr, _1)\n }\n let memberValue0_1 := mload(add(value, _1))\n mstore(add(pos, _1), sub(pos_1, pos))\n let pos_2 := pos_1\n let length_1 := mload(memberValue0_1)\n mstore(pos_1, length_1)\n pos_2 := add(pos_1, _1)\n let srcPtr_1 := add(memberValue0_1, _1)\n let i_1 := 0\n for { } lt(i_1, length_1) { i_1 := add(i_1, 1) }\n {\n pos_2 := abi_encodeUpdatedPos_struct_MultiTargetPermission(mload(srcPtr_1), pos_2)\n srcPtr_1 := add(srcPtr_1, _1)\n }\n end := pos_2\n }\n function abi_encode_tuple_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$4802_memory_ptr__to_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$4802_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n {\n mstore(headStart, 64)\n let tail_1 := abi_encode_bytes(value0, add(headStart, 64))\n mstore(add(headStart, 32), sub(tail_1, headStart))\n tail := abi_encode_struct_PreparedSetupData(value1, tail_1)\n }\n function panic_error_0x41()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function abi_decode_tuple_t_addresst_bytes_memory_ptr(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n let offset := calldataload(add(headStart, 32))\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n let _2 := add(headStart, offset)\n if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n let _3 := calldataload(_2)\n if gt(_3, _1) { panic_error_0x41() }\n let _4 := not(31)\n let memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n mstore(memPtr, _3)\n if gt(add(add(_2, _3), 32), dataEnd) { revert(0, 0) }\n calldatacopy(add(memPtr, 32), add(_2, 32), _3)\n mstore(add(add(memPtr, _3), 32), 0)\n value1 := memPtr\n }\n function abi_encode_tuple_t_address_t_struct$_PreparedSetupData_$4802_memory_ptr__to_t_address_t_struct$_PreparedSetupData_$4802_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n {\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n mstore(add(headStart, 32), 64)\n tail := abi_encode_struct_PreparedSetupData(value1, add(headStart, 64))\n }\n function abi_encode_tuple_t_uint16__to_t_uint16__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffff))\n }\n function abi_encode_tuple_t_contract$_IDAO_$2538__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function panic_error_0x11()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n function checked_sub_t_uint160(x, y) -> diff\n {\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n diff := sub(and(x, _1), and(y, _1))\n if gt(diff, _1) { panic_error_0x11() }\n }\n function panic_error_0x32()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n function increment_t_uint160(value) -> ret\n {\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n let value_1 := and(value, _1)\n if eq(value_1, _1) { panic_error_0x11() }\n ret := add(value_1, 1)\n }\n function abi_encode_tuple_t_address_t_bytes_memory_ptr__to_t_address_t_bytes_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n {\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n mstore(add(headStart, 32), 64)\n tail := abi_encode_bytes(value1, add(headStart, 64))\n }\n}","id":50,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{"4977":[{"length":32,"start":210},{"length":32,"start":825}]},"linkReferences":{},"object":"60806040523480156200001157600080fd5b50600436106200007b5760003560e01c80639cb0a12411620000565780639cb0a12414620000fd578063a8a9c29e1462000123578063f10832f1146200014a57600080fd5b806301ffc9a714620000805780632ae9c60014620000ac5780635c60da1b14620000c5575b600080fd5b62000097620000913660046200065e565b62000171565b60405190151581526020015b60405180910390f35b620000b6620001c4565b604051620000a391906200068a565b6040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152602001620000a3565b620001146200010e366004620006f0565b620001f0565b604051620000a39190620007c1565b6200013a620001343660046200080e565b62000209565b604051620000a39291906200095d565b620001616200015b366004620009a5565b620002b5565b604051620000a392919062000a73565b60006001600160e01b0319821663099718b560e41b1480620001a257506001600160e01b03198216621574e360e91b145b80620001be57506301ffc9a760e01b6001600160e01b03198316145b92915050565b620001ce62000632565b5060408051606081018252600181526004602082015260009181019190915290565b60606200020260006002600162000399565b9392505050565b606062000229604051806040016040528060608152602001606081525090565b8361ffff16600103620002ad5762000242600262000532565b815260405161ffff8516602482015260440160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166239a8c560e41b1790529150620002a761ffff85166002600062000399565b60208201525b935093915050565b6000620002d5604051806040016040528060608152602001606081525090565b6040516001600160a01b038516602482015260009060440160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663189acdbd60e31b17905290506200036b816200035b7f000000000000000000000000000000000000000000000000000000000000000090565b6001600160a01b031690620005f6565b925062000379600262000532565b82526200038a600060028162000399565b60208301525090939092509050565b6060826001600160a01b0316846001600160a01b03161115620003cf57604051633a4013cd60e21b815260040160405180910390fd5b620003db848462000ab5565b6001600160a01b031667ffffffffffffffff811115620003ff57620003ff6200098f565b6040519080825280602002602001820160405280156200045a57816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282526000199092019101816200041e5790505b509050835b836001600160a01b0316816001600160a01b031610156200052a576040518060a001604052808460028111156200049a576200049a62000744565b81526001600160a01b038316602082018190526040820152600060608201527fa280eec51ab8e1bc4b6b0c1b7f1bde785761b787a49db404e3e9338ed9b016ef60809091015282620004ed878462000ab5565b6001600160a01b03168151811062000509576200050962000adf565b60200260200101819052508080620005219062000af5565b9150506200045f565b509392505050565b6060816001600160a01b031667ffffffffffffffff8111156200055957620005596200098f565b60405190808252806020026020018201604052801562000583578160200160208202803683370190505b50905060005b826001600160a01b0316816001600160a01b03161015620005f0578082826001600160a01b031681518110620005c357620005c362000adf565b6001600160a01b039092166020928302919091019091015280620005e78162000af5565b91505062000589565b50919050565b60008282604051620006089062000650565b6200061592919062000b1e565b604051809103906000f0801580156200052a573d6000803e3d6000fd5b60405180606001604052806003906020820280368337509192915050565b6106fe8062000b4383390190565b6000602082840312156200067157600080fd5b81356001600160e01b0319811681146200020257600080fd5b60608101818360005b6003811015620006b757815160ff1683526020928301929091019060010162000693565b50505092915050565b80356001600160a01b0381168114620006d857600080fd5b919050565b600060608284031215620005f057600080fd5b600080604083850312156200070457600080fd5b6200070f83620006c0565b9150602083013567ffffffffffffffff8111156200072c57600080fd5b6200073a85828601620006dd565b9150509250929050565b634e487b7160e01b600052602160045260246000fd5b60008151600381106200077d57634e487b7160e01b600052602160045260246000fd5b8352506020818101516001600160a01b0390811691840191909152604080830151821690840152606080830151909116908301526080908101519082015260a00190565b6020808252825182820181905260009190848201906040850190845b818110156200080257620007f38385516200075a565b938501939250600101620007dd565b50909695505050505050565b6000806000606084860312156200082457600080fd5b6200082f84620006c0565b9250602084013561ffff811681146200084757600080fd5b9150604084013567ffffffffffffffff8111156200086457600080fd5b6200087286828701620006dd565b9150509250925092565b6000815180845260005b81811015620008a45760208185018101518683018201520162000886565b506000602082860101526020601f19601f83011685010191505092915050565b805160408084528151908401819052600091602091908201906060860190845b818110156200090b5783516001600160a01b031683529284019291840191600101620008e4565b50508483015186820387850152805180835290840192506000918401905b8083101562000952576200093f8285516200075a565b9150848401935060018301925062000929565b509695505050505050565b6040815260006200097260408301856200087c565b8281036020840152620009868185620008c4565b95945050505050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215620009b957600080fd5b620009c483620006c0565b9150602083013567ffffffffffffffff80821115620009e257600080fd5b818501915085601f830112620009f757600080fd5b81358181111562000a0c5762000a0c6200098f565b604051601f8201601f19908116603f0116810190838211818310171562000a375762000a376200098f565b8160405282815288602084870101111562000a5157600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6001600160a01b038316815260406020820152600062000a976040830184620008c4565b949350505050565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0382811682821603908082111562000ad85762000ad862000a9f565b5092915050565b634e487b7160e01b600052603260045260246000fd5b60006001600160a01b0380831681810362000b145762000b1462000a9f565b6001019392505050565b6001600160a01b038316815260406020820152600062000a9760408301846200087c56fe60806040526040516106fe3803806106fe83398101604081905261002291610319565b61002e82826000610035565b5050610436565b61003e8361006b565b60008251118061004b5750805b156100665761006483836100ab60201b6100291760201c565b505b505050565b610074816100d7565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606100d083836040518060600160405280602781526020016106d7602791396101a9565b9392505050565b6100ea8161022260201b6100551760201c565b6101515760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b806101887f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61023160201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6060600080856001600160a01b0316856040516101c691906103e7565b600060405180830381855af49150503d8060008114610201576040519150601f19603f3d011682016040523d82523d6000602084013e610206565b606091505b50909250905061021886838387610234565b9695505050505050565b6001600160a01b03163b151590565b90565b606083156102a357825160000361029c576001600160a01b0385163b61029c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610148565b50816102ad565b6102ad83836102b5565b949350505050565b8151156102c55781518083602001fd5b8060405162461bcd60e51b81526004016101489190610403565b634e487b7160e01b600052604160045260246000fd5b60005b838110156103105781810151838201526020016102f8565b50506000910152565b6000806040838503121561032c57600080fd5b82516001600160a01b038116811461034357600080fd5b60208401519092506001600160401b038082111561036057600080fd5b818501915085601f83011261037457600080fd5b815181811115610386576103866102df565b604051601f8201601f19908116603f011681019083821181831017156103ae576103ae6102df565b816040528281528860208487010111156103c757600080fd5b6103d88360208301602088016102f5565b80955050505050509250929050565b600082516103f98184602087016102f5565b9190910192915050565b60208152600082518060208401526104228160408501602087016102f5565b601f01601f19169190910160400192915050565b610292806104456000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b61009f565b565b606061004e838360405180606001604052806027815260200161025f602791396100c3565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e8080156100be573d6000f35b3d6000fd5b6060600080856001600160a01b0316856040516100e0919061020f565b600060405180830381855af49150503d806000811461011b576040519150601f19603f3d011682016040523d82523d6000602084013e610120565b606091505b50915091506101318683838761013b565b9695505050505050565b606083156101af5782516000036101a8576001600160a01b0385163b6101a85760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b50816101b9565b6101b983836101c1565b949350505050565b8151156101d15781518083602001fd5b8060405162461bcd60e51b815260040161019f919061022b565b60005b838110156102065781810151838201526020016101ee565b50506000910152565b600082516102218184602087016101eb565b9190910192915050565b602081526000825180602084015261024a8160408501602087016101eb565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH3 0x7B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9CB0A124 GT PUSH3 0x56 JUMPI DUP1 PUSH4 0x9CB0A124 EQ PUSH3 0xFD JUMPI DUP1 PUSH4 0xA8A9C29E EQ PUSH3 0x123 JUMPI DUP1 PUSH4 0xF10832F1 EQ PUSH3 0x14A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH3 0x80 JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH3 0xAC JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH3 0xC5 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x97 PUSH3 0x91 CALLDATASIZE PUSH1 0x4 PUSH3 0x65E JUMP JUMPDEST PUSH3 0x171 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0xB6 PUSH3 0x1C4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0xA3 SWAP2 SWAP1 PUSH3 0x68A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH3 0xA3 JUMP JUMPDEST PUSH3 0x114 PUSH3 0x10E CALLDATASIZE PUSH1 0x4 PUSH3 0x6F0 JUMP JUMPDEST PUSH3 0x1F0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0xA3 SWAP2 SWAP1 PUSH3 0x7C1 JUMP JUMPDEST PUSH3 0x13A PUSH3 0x134 CALLDATASIZE PUSH1 0x4 PUSH3 0x80E JUMP JUMPDEST PUSH3 0x209 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0xA3 SWAP3 SWAP2 SWAP1 PUSH3 0x95D JUMP JUMPDEST PUSH3 0x161 PUSH3 0x15B CALLDATASIZE PUSH1 0x4 PUSH3 0x9A5 JUMP JUMPDEST PUSH3 0x2B5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0xA3 SWAP3 SWAP2 SWAP1 PUSH3 0xA73 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x99718B5 PUSH1 0xE4 SHL EQ DUP1 PUSH3 0x1A2 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH3 0x1BE JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH3 0x1CE PUSH3 0x632 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH3 0x202 PUSH1 0x0 PUSH1 0x2 PUSH1 0x1 PUSH3 0x399 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH3 0x229 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST DUP4 PUSH2 0xFFFF AND PUSH1 0x1 SUB PUSH3 0x2AD JUMPI PUSH3 0x242 PUSH1 0x2 PUSH3 0x532 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x40 MLOAD PUSH2 0xFFFF DUP6 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH3 0x39A8C5 PUSH1 0xE4 SHL OR SWAP1 MSTORE SWAP2 POP PUSH3 0x2A7 PUSH2 0xFFFF DUP6 AND PUSH1 0x2 PUSH1 0x0 PUSH3 0x399 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE JUMPDEST SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x2D5 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 PUSH1 0x44 ADD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x189ACDBD PUSH1 0xE3 SHL OR SWAP1 MSTORE SWAP1 POP PUSH3 0x36B DUP2 PUSH3 0x35B PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH3 0x5F6 JUMP JUMPDEST SWAP3 POP PUSH3 0x379 PUSH1 0x2 PUSH3 0x532 JUMP JUMPDEST DUP3 MSTORE PUSH3 0x38A PUSH1 0x0 PUSH1 0x2 DUP2 PUSH3 0x399 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP SWAP1 SWAP4 SWAP1 SWAP3 POP SWAP1 POP JUMP JUMPDEST PUSH1 0x60 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH3 0x3CF JUMPI PUSH1 0x40 MLOAD PUSH4 0x3A4013CD PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0x3DB DUP5 DUP5 PUSH3 0xAB5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x3FF JUMPI PUSH3 0x3FF PUSH3 0x98F JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH3 0x45A JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD DUP3 SWAP1 MSTORE SWAP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 DUP3 ADD MSTORE DUP3 MSTORE PUSH1 0x0 NOT SWAP1 SWAP3 ADD SWAP2 ADD DUP2 PUSH3 0x41E JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP DUP4 JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT ISZERO PUSH3 0x52A JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 DUP5 PUSH1 0x2 DUP2 GT ISZERO PUSH3 0x49A JUMPI PUSH3 0x49A PUSH3 0x744 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x60 DUP3 ADD MSTORE PUSH32 0xA280EEC51AB8E1BC4B6B0C1B7F1BDE785761B787A49DB404E3E9338ED9B016EF PUSH1 0x80 SWAP1 SWAP2 ADD MSTORE DUP3 PUSH3 0x4ED DUP8 DUP5 PUSH3 0xAB5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MLOAD DUP2 LT PUSH3 0x509 JUMPI PUSH3 0x509 PUSH3 0xADF JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP DUP1 DUP1 PUSH3 0x521 SWAP1 PUSH3 0xAF5 JUMP JUMPDEST SWAP2 POP POP PUSH3 0x45F JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x559 JUMPI PUSH3 0x559 PUSH3 0x98F JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH3 0x583 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT ISZERO PUSH3 0x5F0 JUMPI DUP1 DUP3 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MLOAD DUP2 LT PUSH3 0x5C3 JUMPI PUSH3 0x5C3 PUSH3 0xADF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE DUP1 PUSH3 0x5E7 DUP2 PUSH3 0xAF5 JUMP JUMPDEST SWAP2 POP POP PUSH3 0x589 JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH3 0x608 SWAP1 PUSH3 0x650 JUMP JUMPDEST PUSH3 0x615 SWAP3 SWAP2 SWAP1 PUSH3 0xB1E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH3 0x52A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x6FE DUP1 PUSH3 0xB43 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x671 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH3 0x202 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH3 0x6B7 JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH3 0x693 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x6D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x5F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x704 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x70F DUP4 PUSH3 0x6C0 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x72C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x73A DUP6 DUP3 DUP7 ADD PUSH3 0x6DD JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP2 MLOAD PUSH1 0x3 DUP2 LT PUSH3 0x77D JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP4 MSTORE POP PUSH1 0x20 DUP2 DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP1 DUP4 ADD MLOAD DUP3 AND SWAP1 DUP5 ADD MSTORE PUSH1 0x60 DUP1 DUP4 ADD MLOAD SWAP1 SWAP2 AND SWAP1 DUP4 ADD MSTORE PUSH1 0x80 SWAP1 DUP2 ADD MLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x802 JUMPI PUSH3 0x7F3 DUP4 DUP6 MLOAD PUSH3 0x75A JUMP JUMPDEST SWAP4 DUP6 ADD SWAP4 SWAP3 POP PUSH1 0x1 ADD PUSH3 0x7DD JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH3 0x824 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x82F DUP5 PUSH3 0x6C0 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH3 0x847 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x864 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x872 DUP7 DUP3 DUP8 ADD PUSH3 0x6DD JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x8A4 JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD DUP3 ADD MSTORE ADD PUSH3 0x886 JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x20 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x20 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x40 DUP1 DUP5 MSTORE DUP2 MLOAD SWAP1 DUP5 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x20 SWAP2 SWAP1 DUP3 ADD SWAP1 PUSH1 0x60 DUP7 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x90B JUMPI DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH3 0x8E4 JUMP JUMPDEST POP POP DUP5 DUP4 ADD MLOAD DUP7 DUP3 SUB DUP8 DUP6 ADD MSTORE DUP1 MLOAD DUP1 DUP4 MSTORE SWAP1 DUP5 ADD SWAP3 POP PUSH1 0x0 SWAP2 DUP5 ADD SWAP1 JUMPDEST DUP1 DUP4 LT ISZERO PUSH3 0x952 JUMPI PUSH3 0x93F DUP3 DUP6 MLOAD PUSH3 0x75A JUMP JUMPDEST SWAP2 POP DUP5 DUP5 ADD SWAP4 POP PUSH1 0x1 DUP4 ADD SWAP3 POP PUSH3 0x929 JUMP JUMPDEST POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 PUSH3 0x972 PUSH1 0x40 DUP4 ADD DUP6 PUSH3 0x87C JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 ADD MSTORE PUSH3 0x986 DUP2 DUP6 PUSH3 0x8C4 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x9B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x9C4 DUP4 PUSH3 0x6C0 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH3 0x9E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x9F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH3 0xA0C JUMPI PUSH3 0xA0C PUSH3 0x98F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH3 0xA37 JUMPI PUSH3 0xA37 PUSH3 0x98F JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH3 0xA51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH3 0xA97 PUSH1 0x40 DUP4 ADD DUP5 PUSH3 0x8C4 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND DUP3 DUP3 AND SUB SWAP1 DUP1 DUP3 GT ISZERO PUSH3 0xAD8 JUMPI PUSH3 0xAD8 PUSH3 0xA9F JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND DUP2 DUP2 SUB PUSH3 0xB14 JUMPI PUSH3 0xB14 PUSH3 0xA9F JUMP JUMPDEST PUSH1 0x1 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH3 0xA97 PUSH1 0x40 DUP4 ADD DUP5 PUSH3 0x87C JUMP INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH2 0x6FE CODESIZE SUB DUP1 PUSH2 0x6FE DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x22 SWAP2 PUSH2 0x319 JUMP JUMPDEST PUSH2 0x2E DUP3 DUP3 PUSH1 0x0 PUSH2 0x35 JUMP JUMPDEST POP POP PUSH2 0x436 JUMP JUMPDEST PUSH2 0x3E DUP4 PUSH2 0x6B JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD GT DUP1 PUSH2 0x4B JUMPI POP DUP1 JUMPDEST ISZERO PUSH2 0x66 JUMPI PUSH2 0x64 DUP4 DUP4 PUSH2 0xAB PUSH1 0x20 SHL PUSH2 0x29 OR PUSH1 0x20 SHR JUMP JUMPDEST POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x74 DUP2 PUSH2 0xD7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xD0 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x6D7 PUSH1 0x27 SWAP2 CODECOPY PUSH2 0x1A9 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xEA DUP2 PUSH2 0x222 PUSH1 0x20 SHL PUSH2 0x55 OR PUSH1 0x20 SHR JUMP JUMPDEST PUSH2 0x151 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313936373A206E657720696D706C656D656E746174696F6E206973206E PUSH1 0x44 DUP3 ADD MSTORE PUSH13 0x1BDD08184818DBDB9D1C9858DD PUSH1 0x9A SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH2 0x188 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC PUSH1 0x0 SHL PUSH2 0x231 PUSH1 0x20 SHL PUSH2 0x64 OR PUSH1 0x20 SHR JUMP JUMPDEST DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0x1C6 SWAP2 SWAP1 PUSH2 0x3E7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x201 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x206 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x218 DUP7 DUP4 DUP4 DUP8 PUSH2 0x234 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x2A3 JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0x29C JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0x29C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x148 JUMP JUMPDEST POP DUP2 PUSH2 0x2AD JUMP JUMPDEST PUSH2 0x2AD DUP4 DUP4 PUSH2 0x2B5 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x2C5 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x148 SWAP2 SWAP1 PUSH2 0x403 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x310 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2F8 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x32C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x343 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x360 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x374 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x386 JUMPI PUSH2 0x386 PUSH2 0x2DF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x3AE JUMPI PUSH2 0x3AE PUSH2 0x2DF JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x3C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3D8 DUP4 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x2F5 JUMP JUMPDEST DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x3F9 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x2F5 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x422 DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x2F5 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x292 DUP1 PUSH2 0x445 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLDATASIZE PUSH2 0x13 JUMPI PUSH2 0x11 PUSH2 0x17 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x11 JUMPDEST PUSH2 0x27 PUSH2 0x22 PUSH2 0x67 JUMP JUMPDEST PUSH2 0x9F JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x60 PUSH2 0x4E DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x25F PUSH1 0x27 SWAP2 CODECOPY PUSH2 0xC3 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9A PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 DUP1 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE PUSH1 0x0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH2 0xBE JUMPI RETURNDATASIZE PUSH1 0x0 RETURN JUMPDEST RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0xE0 SWAP2 SWAP1 PUSH2 0x20F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x11B JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x120 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x131 DUP7 DUP4 DUP4 DUP8 PUSH2 0x13B JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x1AF JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0x1A8 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0x1A8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP DUP2 PUSH2 0x1B9 JUMP JUMPDEST PUSH2 0x1B9 DUP4 DUP4 PUSH2 0x1C1 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x1D1 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x19F SWAP2 SWAP1 PUSH2 0x22B JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x206 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1EE JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x221 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x1EB JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x24A DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x1EB JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A164 PUSH20 0x6F6C6343000811000A416464726573733A206C6F PUSH24 0x2D6C6576656C2064656C65676174652063616C6C20666169 PUSH13 0x6564A164736F6C634300081100 EXP ","sourceMap":"2565:1940:32:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1852:293:46;;;;;;:::i;:::-;;:::i;:::-;;;470:14:50;;463:22;445:41;;433:2;418:18;1852:293:46;;;;;;;;631:98:49;;;:::i;:::-;;;;;;;:::i;2184:94:46:-;;;-1:-1:-1;;;;;2257:14:46;1167:55:50;1149:74;;1137:2;1122:18;2184:94:46;1003:226:50;4204:299:32;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;3462:703::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;2848:575::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;1852:293:46:-;1938:4;-1:-1:-1;;;;;;1973:46:46;;-1:-1:-1;;;1973:46:46;;:112;;-1:-1:-1;;;;;;;2035:50:46;;-1:-1:-1;;;2035:50:46;1973:112;:165;;;-1:-1:-1;;;;;;;;;;937:40:23;;;2101:37:46;1954:184;1852:293;-1:-1:-1;;1852:293:46:o;631:98:49:-;679:15;;:::i;:::-;-1:-1:-1;706:16:49;;;;;;;;714:1;706:16;;717:1;706:16;;;;-1:-1:-1;706:16:49;;;;;;;;631:98::o;4204:299:32:-;4326:56;4434:62;4450:1;2714;4465:30;4434:15;:62::i;:::-;4420:76;4204:299;-1:-1:-1;;;4204:299:32:o;3462:703::-;3644:21;3667:42;-1:-1:-1;;;;;;;;;;;;;;;;;;;3667:42:32;3787:10;:15;;3801:1;3787:15;3783:376;;3846:23;2714:1;3846:11;:23::i;:::-;3818:51;;3894:76;;7982:6:50;7970:19;;3894:76:32;;;7952:38:50;7925:18;;3894:76:32;;;-1:-1:-1;;3894:76:32;;;;;;;;;;;;;;;;-1:-1:-1;;;3894:76:32;;;;-1:-1:-1;4016:132:32;;;;2714:1;-1:-1:-1;4016:15:32;:132::i;:::-;3984:29;;;:164;3783:376;3462:703;;;;;;:::o;2848:575::-;2945:14;2961:42;-1:-1:-1;;;;;;;;;;;;;;;;;;;2961:42:32;3039:106;;-1:-1:-1;;;;;1167:55:50;;3039:106:32;;;1149:74:50;3015:21:32;;1122:18:50;;3039:106:32;;;-1:-1:-1;;3039:106:32;;;;;;;;;;;;;;;;-1:-1:-1;;;3039:106:32;;;;-1:-1:-1;3164:42:32;3039:106;3164:16;2257:14:46;;2184:94;3164:16:32;-1:-1:-1;;;;;3164:32:32;;;:42::i;:::-;3155:51;-1:-1:-1;3244:23:32;2714:1;3244:11;:23::i;:::-;3216:51;;3309:107;3216:25;2714:1;3216:25;3309:15;:107::i;:::-;3277:29;;;:139;-1:-1:-1;2848:575:32;;3277:17;;-1:-1:-1;2848:575:32;-1:-1:-1;2848:575:32:o;580:666:30:-;699:56;780:8;-1:-1:-1;;;;;767:21:30;:10;-1:-1:-1;;;;;767:21:30;;763:53;;;797:19;;-1:-1:-1;;;797:19:30;;;;;;;;;;;763:53;879:21;890:10;879:8;:21;:::i;:::-;-1:-1:-1;;;;;837:64:30;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;837:64:30;;-1:-1:-1;;837:64:30;;;;;;;;;;;-1:-1:-1;823:78:30;-1:-1:-1;925:10:30;908:336;941:8;-1:-1:-1;;;;;937:12:30;:1;-1:-1:-1;;;;;937:12:30;;908:336;;;996:241;;;;;;;;1057:2;996:241;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;996:241:30;;;;;;;;;;;;-1:-1:-1;996:241:30;;;;1198:28;996:241;;;;;966:11;978:14;982:10;1088:1;978:14;:::i;:::-;-1:-1:-1;;;;;966:27:30;;;;;;;;;:::i;:::-;;;;;;:271;;;;951:3;;;;;:::i;:::-;;;;908:336;;;;580:666;;;;;:::o;1529:191::-;1577:24;1633:3;-1:-1:-1;;;;;1619:18:30;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1619:18:30;;1609:28;;1649:9;1644:74;1668:3;-1:-1:-1;;;;;1664:7:30;:1;-1:-1:-1;;;;;1664:7:30;;1644:74;;;1709:1;1688:7;1696:1;-1:-1:-1;;;;;1688:10:30;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1688:23:30;;;:10;;;;;;;;;;;:23;1673:3;;;;:::i;:::-;;;;1644:74;;;;1529:191;;;:::o;1415:222:47:-;1524:17;1599:6;1614:13;1573:56;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::o;14:286:50:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:50;;209:43;;199:71;;266:1;263;256:12;497:501;673:2;658:18;;662:9;753:6;631:4;787:205;801:4;798:1;795:11;787:205;;;864:13;;879:4;860:24;848:37;;908:4;932:12;;;;967:15;;;;821:1;814:9;787:205;;;791:3;;;497:501;;;;:::o;1234:196::-;1302:20;;-1:-1:-1;;;;;1351:54:50;;1341:65;;1331:93;;1420:1;1417;1410:12;1331:93;1234:196;;;:::o;1435:160::-;1500:5;1545:2;1536:6;1531:3;1527:16;1523:25;1520:45;;;1561:1;1558;1551:12;1600:440;1700:6;1708;1761:2;1749:9;1740:7;1736:23;1732:32;1729:52;;;1777:1;1774;1767:12;1729:52;1800:29;1819:9;1800:29;:::i;:::-;1790:39;;1880:2;1869:9;1865:18;1852:32;1907:18;1899:6;1896:30;1893:50;;;1939:1;1936;1929:12;1893:50;1962:72;2026:7;2017:6;2006:9;2002:22;1962:72;:::i;:::-;1952:82;;;1600:440;;;;;:::o;2045:127::-;2106:10;2101:3;2097:20;2094:1;2087:31;2137:4;2134:1;2127:15;2161:4;2158:1;2151:15;2177:696;2252:10;2293:6;2287:13;2326:1;2322:2;2319:9;2309:140;;2371:10;2366:3;2362:20;2359:1;2352:31;2406:4;2403:1;2396:15;2434:4;2431:1;2424:15;2309:140;2458:15;;-1:-1:-1;2520:4:50;2508:17;;;2502:24;-1:-1:-1;;;;;2619:21:50;;;2603:14;;;2596:45;;;;2695:4;2683:17;;;2677:24;2673:33;;2657:14;;;2650:57;2761:4;2749:17;;;2743:24;2739:33;;;2723:14;;;2716:57;2823:4;2811:17;;;2805:24;2789:14;;;2782:48;2862:4;2853:14;;2177:696::o;2878:728::-;3127:2;3179:21;;;3249:13;;3152:18;;;3271:22;;;3098:4;;3127:2;3350:15;;;;3324:2;3309:18;;;3098:4;3393:187;3407:6;3404:1;3401:13;3393:187;;;3463:69;3528:3;3519:6;3513:13;3463:69;:::i;:::-;3555:15;;;;3456:76;-1:-1:-1;3429:1:50;3422:9;3393:187;;;-1:-1:-1;3597:3:50;;2878:728;-1:-1:-1;;;;;;2878:728:50:o;3611:600::-;3719:6;3727;3735;3788:2;3776:9;3767:7;3763:23;3759:32;3756:52;;;3804:1;3801;3794:12;3756:52;3827:29;3846:9;3827:29;:::i;:::-;3817:39;;3906:2;3895:9;3891:18;3878:32;3950:6;3943:5;3939:18;3932:5;3929:29;3919:57;;3972:1;3969;3962:12;3919:57;3995:5;-1:-1:-1;4051:2:50;4036:18;;4023:32;4078:18;4067:30;;4064:50;;;4110:1;4107;4100:12;4064:50;4133:72;4197:7;4188:6;4177:9;4173:22;4133:72;:::i;:::-;4123:82;;;3611:600;;;;;:::o;4216:422::-;4257:3;4295:5;4289:12;4322:6;4317:3;4310:19;4347:1;4357:162;4371:6;4368:1;4365:13;4357:162;;;4433:4;4489:13;;;4485:22;;4479:29;4461:11;;;4457:20;;4450:59;4386:12;4357:162;;;4361:3;4564:1;4557:4;4548:6;4543:3;4539:16;4535:27;4528:38;4627:4;4620:2;4616:7;4611:2;4603:6;4599:15;4595:29;4590:3;4586:39;4582:50;4575:57;;;4216:422;;;;:::o;4643:1162::-;4776:12;;4742:4;4797:17;;;4863:19;;4733:14;;;4891:20;;;4703:3;;4960:4;;4987:21;;;;4938:2;4929:12;;;4703:3;5036:224;5050:6;5047:1;5044:13;5036:224;;;5117:13;;-1:-1:-1;;;;;5113:62:50;5099:77;;5235:15;;;;5198:14;;;;5072:1;5065:9;5036:224;;;-1:-1:-1;;5297:14:50;;;5291:21;5342:15;;;5328:12;;;5321:37;5410:21;;5440:23;;;5520;;;;-1:-1:-1;5563:1:50;;5481:14;;;5573:205;5589:8;5584:3;5581:17;5573:205;;;5653:73;5720:5;5709:8;5703:15;5653:73;:::i;:::-;5644:82;;5765:2;5755:8;5751:17;5739:29;;5617:1;5612:3;5608:11;5601:18;;5573:205;;;-1:-1:-1;5794:5:50;4643:1162;-1:-1:-1;;;;;;4643:1162:50:o;5810:448::-;6055:2;6044:9;6037:21;6018:4;6081:44;6121:2;6110:9;6106:18;6098:6;6081:44;:::i;:::-;6173:9;6165:6;6161:22;6156:2;6145:9;6141:18;6134:50;6201:51;6245:6;6237;6201:51;:::i;:::-;6193:59;5810:448;-1:-1:-1;;;;;5810:448:50:o;6263:127::-;6324:10;6319:3;6315:20;6312:1;6305:31;6355:4;6352:1;6345:15;6379:4;6376:1;6369:15;6395:995;6472:6;6480;6533:2;6521:9;6512:7;6508:23;6504:32;6501:52;;;6549:1;6546;6539:12;6501:52;6572:29;6591:9;6572:29;:::i;:::-;6562:39;;6652:2;6641:9;6637:18;6624:32;6675:18;6716:2;6708:6;6705:14;6702:34;;;6732:1;6729;6722:12;6702:34;6770:6;6759:9;6755:22;6745:32;;6815:7;6808:4;6804:2;6800:13;6796:27;6786:55;;6837:1;6834;6827:12;6786:55;6873:2;6860:16;6895:2;6891;6888:10;6885:36;;;6901:18;;:::i;:::-;6976:2;6970:9;6944:2;7030:13;;-1:-1:-1;;7026:22:50;;;7050:2;7022:31;7018:40;7006:53;;;7074:18;;;7094:22;;;7071:46;7068:72;;;7120:18;;:::i;:::-;7160:10;7156:2;7149:22;7195:2;7187:6;7180:18;7235:7;7230:2;7225;7221;7217:11;7213:20;7210:33;7207:53;;;7256:1;7253;7246:12;7207:53;7312:2;7307;7303;7299:11;7294:2;7286:6;7282:15;7269:46;7357:1;7352:2;7347;7339:6;7335:15;7331:24;7324:35;7378:6;7368:16;;;;;;;6395:995;;;;;:::o;7395:408::-;-1:-1:-1;;;;;7626:6:50;7622:55;7611:9;7604:74;7714:2;7709;7698:9;7694:18;7687:30;7585:4;7734:63;7793:2;7782:9;7778:18;7770:6;7734:63;:::i;:::-;7726:71;7395:408;-1:-1:-1;;;;7395:408:50:o;8245:127::-;8306:10;8301:3;8297:20;8294:1;8287:31;8337:4;8334:1;8327:15;8361:4;8358:1;8351:15;8377:208;-1:-1:-1;;;;;8521:10:50;;;8509;;;8505:27;;8544:12;;;8541:38;;;8559:18;;:::i;:::-;8541:38;8377:208;;;;:::o;8590:127::-;8651:10;8646:3;8642:20;8639:1;8632:31;8682:4;8679:1;8672:15;8706:4;8703:1;8696:15;8722:234;8761:3;-1:-1:-1;;;;;8866:2:50;8859:5;8855:14;8893:2;8884:7;8881:15;8878:41;;8899:18;;:::i;:::-;8948:1;8935:15;;8722:234;-1:-1:-1;;;8722:234:50:o;8961:337::-;-1:-1:-1;;;;;9140:6:50;9136:55;9125:9;9118:74;9228:2;9223;9212:9;9208:18;9201:30;9099:4;9248:44;9288:2;9277:9;9273:18;9265:6;9248:44;:::i"},"gasEstimates":{"creation":{"codeDepositCost":"937000","executionCost":"infinite","totalCost":"infinite"},"external":{"implementation()":"infinite","prepareInstallation(address,bytes)":"infinite","prepareUninstallation(address,(address,address[],bytes))":"infinite","prepareUpdate(address,uint16,(address,address[],bytes))":"infinite","protocolVersion()":"infinite","supportsInterface(bytes4)":"482"}},"methodIdentifiers":{"implementation()":"5c60da1b","prepareInstallation(address,bytes)":"f10832f1","prepareUninstallation(address,(address,address[],bytes))":"9cb0a124","prepareUpdate(address,uint16,(address,address[],bytes))":"a8a9c29e","protocolVersion()":"2ae9c600","supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ConflictingValues\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"fromBuild\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"thisBuild\",\"type\":\"uint16\"}],\"name\":\"InvalidUpdatePath\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_dao\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"prepareInstallation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"plugin\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address[]\",\"name\":\"helpers\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"enum PermissionLib.Operation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"condition\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PermissionLib.MultiTargetPermission[]\",\"name\":\"permissions\",\"type\":\"tuple[]\"}],\"internalType\":\"struct IPluginSetup.PreparedSetupData\",\"name\":\"preparedSetupData\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_dao\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"plugin\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"currentHelpers\",\"type\":\"address[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IPluginSetup.SetupPayload\",\"name\":\"_payload\",\"type\":\"tuple\"}],\"name\":\"prepareUninstallation\",\"outputs\":[{\"components\":[{\"internalType\":\"enum PermissionLib.Operation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"condition\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PermissionLib.MultiTargetPermission[]\",\"name\":\"permissions\",\"type\":\"tuple[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_dao\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"_fromBuild\",\"type\":\"uint16\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"plugin\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"currentHelpers\",\"type\":\"address[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IPluginSetup.SetupPayload\",\"name\":\"_payload\",\"type\":\"tuple\"}],\"name\":\"prepareUpdate\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"initData\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address[]\",\"name\":\"helpers\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"enum PermissionLib.Operation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"condition\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PermissionLib.MultiTargetPermission[]\",\"name\":\"permissions\",\"type\":\"tuple[]\"}],\"internalType\":\"struct IPluginSetup.PreparedSetupData\",\"name\":\"preparedSetupData\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"protocolVersion\",\"outputs\":[{\"internalType\":\"uint8[3]\",\"name\":\"\",\"type\":\"uint8[3]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"DO NOT USE IN PRODUCTION!\",\"errors\":{\"InvalidUpdatePath(uint16,uint16)\":[{\"params\":{\"fromBuild\":\"The build number to update from.\",\"thisBuild\":\"The build number of this setup to update to.\"}}]},\"kind\":\"dev\",\"methods\":{\"implementation()\":{\"details\":\"The implementation can be instantiated via the `new` keyword, cloned via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)), or proxied via the UUPS proxy pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\",\"returns\":{\"_0\":\"The address of the plugin implementation contract.\"}},\"prepareInstallation(address,bytes)\":{\"params\":{\"_dao\":\"The address of the installing DAO.\",\"_data\":\"The bytes-encoded data containing the input parameters for the installation as specified in the plugin's build metadata JSON file.\"},\"returns\":{\"plugin\":\"The address of the `Plugin` contract being prepared for installation.\",\"preparedSetupData\":\"The deployed plugin's relevant data which consists of helpers and permissions.\"}},\"prepareUninstallation(address,(address,address[],bytes))\":{\"params\":{\"_dao\":\"The address of the uninstalling DAO.\",\"_payload\":\"The relevant data necessary for the `prepareUninstallation`. See above.\"},\"returns\":{\"permissions\":\"The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the uninstalling DAO.\"}},\"prepareUpdate(address,uint16,(address,address[],bytes))\":{\"params\":{\"_dao\":\"The address of the updating DAO.\",\"_fromBuild\":\"The build number of the plugin to update from.\",\"_payload\":\"The relevant data necessary for the `prepareUpdate`. See above.\"},\"returns\":{\"initData\":\"The initialization data to be passed to upgradeable contracts when the update is applied in the `PluginSetupProcessor`.\",\"preparedSetupData\":\"The deployed plugin's relevant data which consists of helpers and permissions.\"}},\"protocolVersion()\":{\"details\":\"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\",\"returns\":{\"_0\":\"Returns the semantic Aragon OSx protocol version number.\"}},\"supportsInterface(bytes4)\":{\"params\":{\"_interfaceId\":\"The ID of the interface.\"},\"returns\":{\"_0\":\"Returns `true` if the interface is supported.\"}}},\"version\":1},\"userdoc\":{\"errors\":{\"InvalidUpdatePath(uint16,uint16)\":[{\"notice\":\"Thrown when an update path is not available, for example, if this is the initial build.\"}]},\"kind\":\"user\",\"methods\":{\"implementation()\":{\"notice\":\"Returns the plugin implementation address.\"},\"prepareInstallation(address,bytes)\":{\"notice\":\"Prepares the installation of a plugin.\"},\"prepareUninstallation(address,(address,address[],bytes))\":{\"notice\":\"Prepares the uninstallation of a plugin.\"},\"prepareUpdate(address,uint16,(address,address[],bytes))\":{\"notice\":\"Prepares the update of a plugin.\"},\"protocolVersion()\":{\"notice\":\"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Checks if this or the parent contract supports an interface by its ID.\"}},\"notice\":\"A mock plugin setup of an upgradeable plugin to be deployed via the UUPS pattern. v1.2 (Release 1, Build 2)\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/mocks/plugin/PluginUUPSUpgradeableSetupMock.sol\":\"PluginUUPSUpgradeableSetupMockBuild2\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/interfaces/IERC1967Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (interfaces/IERC1967.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\\n *\\n * _Available since v4.8.3._\\n */\\ninterface IERC1967Upgradeable {\\n /**\\n * @dev Emitted when the implementation is upgraded.\\n */\\n event Upgraded(address indexed implementation);\\n\\n /**\\n * @dev Emitted when the admin account has changed.\\n */\\n event AdminChanged(address previousAdmin, address newAdmin);\\n\\n /**\\n * @dev Emitted when the beacon is changed.\\n */\\n event BeaconUpgraded(address indexed beacon);\\n}\\n\",\"keccak256\":\"0x47d6e06872b12e72c79d1b5eb55842f860b5fb1207b2317c2358d2766b950a7b\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822ProxiableUpgradeable {\\n /**\\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n * address.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy.\\n */\\n function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../beacon/IBeaconUpgradeable.sol\\\";\\nimport \\\"../../interfaces/IERC1967Upgradeable.sol\\\";\\nimport \\\"../../interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\nimport \\\"../../utils/StorageSlotUpgradeable.sol\\\";\\nimport {Initializable} from \\\"../utils/Initializable.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n */\\nabstract contract ERC1967UpgradeUpgradeable is Initializable, IERC1967Upgradeable {\\n // This is the keccak-256 hash of \\\"eip1967.proxy.rollback\\\" subtracted by 1\\n bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n /**\\n * @dev Storage slot with the address of the current implementation.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n function __ERC1967Upgrade_init() internal onlyInitializing {\\n }\\n\\n function __ERC1967Upgrade_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _getImplementation() internal view returns (address) {\\n return StorageSlotUpgradeable.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 implementation slot.\\n */\\n function _setImplementation(address newImplementation) private {\\n require(AddressUpgradeable.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n StorageSlotUpgradeable.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n }\\n\\n /**\\n * @dev Perform implementation upgrade\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeTo(address newImplementation) internal {\\n _setImplementation(newImplementation);\\n emit Upgraded(newImplementation);\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCall(address newImplementation, bytes memory data, bool forceCall) internal {\\n _upgradeTo(newImplementation);\\n if (data.length > 0 || forceCall) {\\n AddressUpgradeable.functionDelegateCall(newImplementation, data);\\n }\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCallUUPS(address newImplementation, bytes memory data, bool forceCall) internal {\\n // Upgrades from old implementations will perform a rollback test. This test requires the new\\n // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n // this special case will break upgrade paths from old UUPS implementation to new ones.\\n if (StorageSlotUpgradeable.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n _setImplementation(newImplementation);\\n } else {\\n try IERC1822ProxiableUpgradeable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n require(slot == _IMPLEMENTATION_SLOT, \\\"ERC1967Upgrade: unsupported proxiableUUID\\\");\\n } catch {\\n revert(\\\"ERC1967Upgrade: new implementation is not UUPS\\\");\\n }\\n _upgradeToAndCall(newImplementation, data, forceCall);\\n }\\n }\\n\\n /**\\n * @dev Storage slot with the admin of the contract.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _getAdmin() internal view returns (address) {\\n return StorageSlotUpgradeable.getAddressSlot(_ADMIN_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 admin slot.\\n */\\n function _setAdmin(address newAdmin) private {\\n require(newAdmin != address(0), \\\"ERC1967: new admin is the zero address\\\");\\n StorageSlotUpgradeable.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n */\\n function _changeAdmin(address newAdmin) internal {\\n emit AdminChanged(_getAdmin(), newAdmin);\\n _setAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\\n */\\n bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n /**\\n * @dev Returns the current beacon.\\n */\\n function _getBeacon() internal view returns (address) {\\n return StorageSlotUpgradeable.getAddressSlot(_BEACON_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new beacon in the EIP1967 beacon slot.\\n */\\n function _setBeacon(address newBeacon) private {\\n require(AddressUpgradeable.isContract(newBeacon), \\\"ERC1967: new beacon is not a contract\\\");\\n require(\\n AddressUpgradeable.isContract(IBeaconUpgradeable(newBeacon).implementation()),\\n \\\"ERC1967: beacon implementation is not a contract\\\"\\n );\\n StorageSlotUpgradeable.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n }\\n\\n /**\\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n *\\n * Emits a {BeaconUpgraded} event.\\n */\\n function _upgradeBeaconToAndCall(address newBeacon, bytes memory data, bool forceCall) internal {\\n _setBeacon(newBeacon);\\n emit BeaconUpgraded(newBeacon);\\n if (data.length > 0 || forceCall) {\\n AddressUpgradeable.functionDelegateCall(IBeaconUpgradeable(newBeacon).implementation(), data);\\n }\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x7795808e3899c805254e3ae58074b20f799b466e3f43e057e47bedee5fb771f8\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeaconUpgradeable {\\n /**\\n * @dev Must return an address that can be used as a delegate call target.\\n *\\n * {BeaconProxy} will check that this address is a contract.\\n */\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/UUPSUpgradeable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport \\\"../ERC1967/ERC1967UpgradeUpgradeable.sol\\\";\\nimport {Initializable} from \\\"./Initializable.sol\\\";\\n\\n/**\\n * @dev An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an\\n * {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy.\\n *\\n * A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is\\n * reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing\\n * `UUPSUpgradeable` with a custom implementation of upgrades.\\n *\\n * The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism.\\n *\\n * _Available since v4.1._\\n */\\nabstract contract UUPSUpgradeable is Initializable, IERC1822ProxiableUpgradeable, ERC1967UpgradeUpgradeable {\\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable state-variable-assignment\\n address private immutable __self = address(this);\\n\\n /**\\n * @dev Check that the execution is being performed through a delegatecall call and that the execution context is\\n * a proxy contract with an implementation (as defined in ERC1967) pointing to self. This should only be the case\\n * for UUPS and transparent proxies that are using the current contract as their implementation. Execution of a\\n * function through ERC1167 minimal proxies (clones) would not normally pass this test, but is not guaranteed to\\n * fail.\\n */\\n modifier onlyProxy() {\\n require(address(this) != __self, \\\"Function must be called through delegatecall\\\");\\n require(_getImplementation() == __self, \\\"Function must be called through active proxy\\\");\\n _;\\n }\\n\\n /**\\n * @dev Check that the execution is not being performed through a delegate call. This allows a function to be\\n * callable on the implementing contract but not through proxies.\\n */\\n modifier notDelegated() {\\n require(address(this) == __self, \\\"UUPSUpgradeable: must not be called through delegatecall\\\");\\n _;\\n }\\n\\n function __UUPSUpgradeable_init() internal onlyInitializing {\\n }\\n\\n function __UUPSUpgradeable_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the\\n * implementation. It is used to validate the implementation's compatibility when performing an upgrade.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\\n */\\n function proxiableUUID() external view virtual override notDelegated returns (bytes32) {\\n return _IMPLEMENTATION_SLOT;\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy to `newImplementation`.\\n *\\n * Calls {_authorizeUpgrade}.\\n *\\n * Emits an {Upgraded} event.\\n *\\n * @custom:oz-upgrades-unsafe-allow-reachable delegatecall\\n */\\n function upgradeTo(address newImplementation) public virtual onlyProxy {\\n _authorizeUpgrade(newImplementation);\\n _upgradeToAndCallUUPS(newImplementation, new bytes(0), false);\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call\\n * encoded in `data`.\\n *\\n * Calls {_authorizeUpgrade}.\\n *\\n * Emits an {Upgraded} event.\\n *\\n * @custom:oz-upgrades-unsafe-allow-reachable delegatecall\\n */\\n function upgradeToAndCall(address newImplementation, bytes memory data) public payable virtual onlyProxy {\\n _authorizeUpgrade(newImplementation);\\n _upgradeToAndCallUUPS(newImplementation, data, true);\\n }\\n\\n /**\\n * @dev Function that should revert when `msg.sender` is not authorized to upgrade the contract. Called by\\n * {upgradeTo} and {upgradeToAndCall}.\\n *\\n * Normally, this function will use an xref:access.adoc[access control] modifier such as {Ownable-onlyOwner}.\\n *\\n * ```solidity\\n * function _authorizeUpgrade(address) internal override onlyOwner {}\\n * ```\\n */\\n function _authorizeUpgrade(address newImplementation) internal virtual;\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0xefb41f5c1a00249b7a99f0782f8c557865605426a3fb6e5fe9ae334293ae4f33\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n function __Context_init() internal onlyInitializing {\\n }\\n\\n function __Context_init_unchained() internal onlyInitializing {\\n }\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n function _contextSuffixLength() internal view virtual returns (uint256) {\\n return 0;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x75097e35253e7fb282ee4d7f27a80eaacfa759923185bf17302a89cbc059c5ef\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/StorageSlot.sol)\\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```solidity\\n * contract ERC1967 {\\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n * function _getImplementation() internal view returns (address) {\\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n * }\\n *\\n * function _setImplementation(address newImplementation) internal {\\n * require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n * }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._\\n * _Available since v4.9 for `string`, `bytes`._\\n */\\nlibrary StorageSlotUpgradeable {\\n struct AddressSlot {\\n address value;\\n }\\n\\n struct BooleanSlot {\\n bool value;\\n }\\n\\n struct Bytes32Slot {\\n bytes32 value;\\n }\\n\\n struct Uint256Slot {\\n uint256 value;\\n }\\n\\n struct StringSlot {\\n string value;\\n }\\n\\n struct BytesSlot {\\n bytes value;\\n }\\n\\n /**\\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n */\\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n */\\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n */\\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n */\\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` with member `value` located at `slot`.\\n */\\n function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\\n */\\n function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` with member `value` located at `slot`.\\n */\\n function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\\n */\\n function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n}\\n\",\"keccak256\":\"0x07ac95acad040f1fb1f6120dd0aa5f702db69446e95f82613721879d30de0908\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165Upgradeable.sol\\\";\\nimport {Initializable} from \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165Upgradeable is Initializable, IERC165Upgradeable {\\n function __ERC165_init() internal onlyInitializing {\\n }\\n\\n function __ERC165_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165Upgradeable).interfaceId;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0xd90d7723512df65ae417adaf0801042940f0dabd60039ceeaffe34aa5b238da1\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165Upgradeable {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/IERC1967.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (interfaces/IERC1967.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\\n *\\n * _Available since v4.8.3._\\n */\\ninterface IERC1967 {\\n /**\\n * @dev Emitted when the implementation is upgraded.\\n */\\n event Upgraded(address indexed implementation);\\n\\n /**\\n * @dev Emitted when the admin account has changed.\\n */\\n event AdminChanged(address previousAdmin, address newAdmin);\\n\\n /**\\n * @dev Emitted when the beacon is changed.\\n */\\n event BeaconUpgraded(address indexed beacon);\\n}\\n\",\"keccak256\":\"0x3cbef5ebc24b415252e2f8c0c9254555d30d9f085603b4b80d9b5ed20ab87e90\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822Proxiable {\\n /**\\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n * address.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy.\\n */\\n function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/Clones.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/Clones.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev https://eips.ethereum.org/EIPS/eip-1167[EIP 1167] is a standard for\\n * deploying minimal proxy contracts, also known as \\\"clones\\\".\\n *\\n * > To simply and cheaply clone contract functionality in an immutable way, this standard specifies\\n * > a minimal bytecode implementation that delegates all calls to a known, fixed address.\\n *\\n * The library includes functions to deploy a proxy using either `create` (traditional deployment) or `create2`\\n * (salted deterministic deployment). It also includes functions to predict the addresses of clones deployed using the\\n * deterministic method.\\n *\\n * _Available since v3.4._\\n */\\nlibrary Clones {\\n /**\\n * @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`.\\n *\\n * This function uses the create opcode, which should never revert.\\n */\\n function clone(address implementation) internal returns (address instance) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n // Cleans the upper 96 bits of the `implementation` word, then packs the first 3 bytes\\n // of the `implementation` address with the bytecode before the address.\\n mstore(0x00, or(shr(0xe8, shl(0x60, implementation)), 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000))\\n // Packs the remaining 17 bytes of `implementation` with the bytecode after the address.\\n mstore(0x20, or(shl(0x78, implementation), 0x5af43d82803e903d91602b57fd5bf3))\\n instance := create(0, 0x09, 0x37)\\n }\\n require(instance != address(0), \\\"ERC1167: create failed\\\");\\n }\\n\\n /**\\n * @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`.\\n *\\n * This function uses the create2 opcode and a `salt` to deterministically deploy\\n * the clone. Using the same `implementation` and `salt` multiple time will revert, since\\n * the clones cannot be deployed twice at the same address.\\n */\\n function cloneDeterministic(address implementation, bytes32 salt) internal returns (address instance) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n // Cleans the upper 96 bits of the `implementation` word, then packs the first 3 bytes\\n // of the `implementation` address with the bytecode before the address.\\n mstore(0x00, or(shr(0xe8, shl(0x60, implementation)), 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000))\\n // Packs the remaining 17 bytes of `implementation` with the bytecode after the address.\\n mstore(0x20, or(shl(0x78, implementation), 0x5af43d82803e903d91602b57fd5bf3))\\n instance := create2(0, 0x09, 0x37, salt)\\n }\\n require(instance != address(0), \\\"ERC1167: create2 failed\\\");\\n }\\n\\n /**\\n * @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}.\\n */\\n function predictDeterministicAddress(\\n address implementation,\\n bytes32 salt,\\n address deployer\\n ) internal pure returns (address predicted) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n let ptr := mload(0x40)\\n mstore(add(ptr, 0x38), deployer)\\n mstore(add(ptr, 0x24), 0x5af43d82803e903d91602b57fd5bf3ff)\\n mstore(add(ptr, 0x14), implementation)\\n mstore(ptr, 0x3d602d80600a3d3981f3363d3d373d3d3d363d73)\\n mstore(add(ptr, 0x58), salt)\\n mstore(add(ptr, 0x78), keccak256(add(ptr, 0x0c), 0x37))\\n predicted := keccak256(add(ptr, 0x43), 0x55)\\n }\\n }\\n\\n /**\\n * @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}.\\n */\\n function predictDeterministicAddress(\\n address implementation,\\n bytes32 salt\\n ) internal view returns (address predicted) {\\n return predictDeterministicAddress(implementation, salt, address(this));\\n }\\n}\\n\",\"keccak256\":\"0x01f055f5c26ba25d7f83e9aa9ba877fbea4d0bf22227de046ea67494bc932999\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (proxy/ERC1967/ERC1967Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../Proxy.sol\\\";\\nimport \\\"./ERC1967Upgrade.sol\\\";\\n\\n/**\\n * @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an\\n * implementation address that can be changed. This address is stored in storage in the location specified by\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the\\n * implementation behind the proxy.\\n */\\ncontract ERC1967Proxy is Proxy, ERC1967Upgrade {\\n /**\\n * @dev Initializes the upgradeable proxy with an initial implementation specified by `_logic`.\\n *\\n * If `_data` is nonempty, it's used as data in a delegate call to `_logic`. This will typically be an encoded\\n * function call, and allows initializing the storage of the proxy like a Solidity constructor.\\n */\\n constructor(address _logic, bytes memory _data) payable {\\n _upgradeToAndCall(_logic, _data, false);\\n }\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _implementation() internal view virtual override returns (address impl) {\\n return ERC1967Upgrade._getImplementation();\\n }\\n}\\n\",\"keccak256\":\"0xa2b22da3032e50b55f95ec1d13336102d675f341167aa76db571ef7f8bb7975d\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../beacon/IBeacon.sol\\\";\\nimport \\\"../../interfaces/IERC1967.sol\\\";\\nimport \\\"../../interfaces/draft-IERC1822.sol\\\";\\nimport \\\"../../utils/Address.sol\\\";\\nimport \\\"../../utils/StorageSlot.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n */\\nabstract contract ERC1967Upgrade is IERC1967 {\\n // This is the keccak-256 hash of \\\"eip1967.proxy.rollback\\\" subtracted by 1\\n bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n /**\\n * @dev Storage slot with the address of the current implementation.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _getImplementation() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 implementation slot.\\n */\\n function _setImplementation(address newImplementation) private {\\n require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n }\\n\\n /**\\n * @dev Perform implementation upgrade\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeTo(address newImplementation) internal {\\n _setImplementation(newImplementation);\\n emit Upgraded(newImplementation);\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCall(address newImplementation, bytes memory data, bool forceCall) internal {\\n _upgradeTo(newImplementation);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(newImplementation, data);\\n }\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCallUUPS(address newImplementation, bytes memory data, bool forceCall) internal {\\n // Upgrades from old implementations will perform a rollback test. This test requires the new\\n // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n // this special case will break upgrade paths from old UUPS implementation to new ones.\\n if (StorageSlot.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n _setImplementation(newImplementation);\\n } else {\\n try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n require(slot == _IMPLEMENTATION_SLOT, \\\"ERC1967Upgrade: unsupported proxiableUUID\\\");\\n } catch {\\n revert(\\\"ERC1967Upgrade: new implementation is not UUPS\\\");\\n }\\n _upgradeToAndCall(newImplementation, data, forceCall);\\n }\\n }\\n\\n /**\\n * @dev Storage slot with the admin of the contract.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _getAdmin() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_ADMIN_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 admin slot.\\n */\\n function _setAdmin(address newAdmin) private {\\n require(newAdmin != address(0), \\\"ERC1967: new admin is the zero address\\\");\\n StorageSlot.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n */\\n function _changeAdmin(address newAdmin) internal {\\n emit AdminChanged(_getAdmin(), newAdmin);\\n _setAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\\n */\\n bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n /**\\n * @dev Returns the current beacon.\\n */\\n function _getBeacon() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_BEACON_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new beacon in the EIP1967 beacon slot.\\n */\\n function _setBeacon(address newBeacon) private {\\n require(Address.isContract(newBeacon), \\\"ERC1967: new beacon is not a contract\\\");\\n require(\\n Address.isContract(IBeacon(newBeacon).implementation()),\\n \\\"ERC1967: beacon implementation is not a contract\\\"\\n );\\n StorageSlot.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n }\\n\\n /**\\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n *\\n * Emits a {BeaconUpgraded} event.\\n */\\n function _upgradeBeaconToAndCall(address newBeacon, bytes memory data, bool forceCall) internal {\\n _setBeacon(newBeacon);\\n emit BeaconUpgraded(newBeacon);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x3b21ae06bf5957f73fa16754b0669c77b7abd8ba6c072d35c3281d446fdb86c2\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (proxy/Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\\n * be specified by overriding the virtual {_implementation} function.\\n *\\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\\n * different contract through the {_delegate} function.\\n *\\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\\n */\\nabstract contract Proxy {\\n /**\\n * @dev Delegates the current call to `implementation`.\\n *\\n * This function does not return to its internal call site, it will return directly to the external caller.\\n */\\n function _delegate(address implementation) internal virtual {\\n assembly {\\n // Copy msg.data. We take full control of memory in this inline assembly\\n // block because it will not return to Solidity code. We overwrite the\\n // Solidity scratch pad at memory position 0.\\n calldatacopy(0, 0, calldatasize())\\n\\n // Call the implementation.\\n // out and outsize are 0 because we don't know the size yet.\\n let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)\\n\\n // Copy the returned data.\\n returndatacopy(0, 0, returndatasize())\\n\\n switch result\\n // delegatecall returns 0 on error.\\n case 0 {\\n revert(0, returndatasize())\\n }\\n default {\\n return(0, returndatasize())\\n }\\n }\\n }\\n\\n /**\\n * @dev This is a virtual function that should be overridden so it returns the address to which the fallback function\\n * and {_fallback} should delegate.\\n */\\n function _implementation() internal view virtual returns (address);\\n\\n /**\\n * @dev Delegates the current call to the address returned by `_implementation()`.\\n *\\n * This function does not return to its internal call site, it will return directly to the external caller.\\n */\\n function _fallback() internal virtual {\\n _beforeFallback();\\n _delegate(_implementation());\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\\n * function in the contract matches the call data.\\n */\\n fallback() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data\\n * is empty.\\n */\\n receive() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`\\n * call, or as part of the Solidity `fallback` or `receive` functions.\\n *\\n * If overridden should call `super._beforeFallback()`.\\n */\\n function _beforeFallback() internal virtual {}\\n}\\n\",\"keccak256\":\"0xc130fe33f1b2132158531a87734153293f6d07bc263ff4ac90e85da9c82c0e27\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeacon {\\n /**\\n * @dev Must return an address that can be used as a delegate call target.\\n *\\n * {BeaconProxy} will check that this address is a contract.\\n */\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/StorageSlot.sol)\\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```solidity\\n * contract ERC1967 {\\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n * function _getImplementation() internal view returns (address) {\\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n * }\\n *\\n * function _setImplementation(address newImplementation) internal {\\n * require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n * }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._\\n * _Available since v4.9 for `string`, `bytes`._\\n */\\nlibrary StorageSlot {\\n struct AddressSlot {\\n address value;\\n }\\n\\n struct BooleanSlot {\\n bool value;\\n }\\n\\n struct Bytes32Slot {\\n bytes32 value;\\n }\\n\\n struct Uint256Slot {\\n uint256 value;\\n }\\n\\n struct StringSlot {\\n string value;\\n }\\n\\n struct BytesSlot {\\n bytes value;\\n }\\n\\n /**\\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n */\\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n */\\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n */\\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n */\\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` with member `value` located at `slot`.\\n */\\n function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\\n */\\n function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` with member `value` located at `slot`.\\n */\\n function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\\n */\\n function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n}\\n\",\"keccak256\":\"0xf09e68aa0dc6722a25bc46490e8d48ed864466d17313b8a0b254c36b54e49899\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165 is IERC165 {\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165).interfaceId;\\n }\\n}\\n\",\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"src/dao/IDAO.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IDAO\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for DAOs within the Aragon App DAO framework.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IDAO {\\n /// @notice The action struct to be consumed by the DAO's `execute` function resulting in an external call.\\n /// @param to The address to call.\\n /// @param value The native token value to be sent with the call.\\n /// @param data The bytes-encoded function selector and calldata for the call.\\n struct Action {\\n address to;\\n uint256 value;\\n bytes data;\\n }\\n\\n /// @notice Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\\n /// @param _where The address of the contract.\\n /// @param _who The address of a EOA or contract to give the permissions.\\n /// @param _permissionId The permission identifier.\\n /// @param _data The optional data passed to the `PermissionCondition` registered.\\n /// @return Returns true if the address has permission, false if not.\\n function hasPermission(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes memory _data\\n ) external view returns (bool);\\n\\n /// @notice Updates the DAO metadata (e.g., an IPFS hash).\\n /// @param _metadata The IPFS hash of the new metadata object.\\n function setMetadata(bytes calldata _metadata) external;\\n\\n /// @notice Emitted when the DAO metadata is updated.\\n /// @param metadata The IPFS hash of the new metadata object.\\n event MetadataSet(bytes metadata);\\n\\n /// @notice Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted.\\n /// @param _callId The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce.\\n /// @param _actions The array of actions.\\n /// @param _allowFailureMap A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @return The array of results obtained from the executed actions in `bytes`.\\n /// @return The resulting failure map containing the actions have actually failed.\\n function execute(\\n bytes32 _callId,\\n Action[] memory _actions,\\n uint256 _allowFailureMap\\n ) external returns (bytes[] memory, uint256);\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param actor The address of the caller.\\n /// @param callId The ID of the call.\\n /// @param actions The array of actions executed.\\n /// @param allowFailureMap The allow failure map encoding which actions are allowed to fail.\\n /// @param failureMap The failure map encoding which actions have failed.\\n /// @param execResults The array with the results of the executed actions.\\n /// @dev The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce.\\n event Executed(\\n address indexed actor,\\n bytes32 callId,\\n Action[] actions,\\n uint256 allowFailureMap,\\n uint256 failureMap,\\n bytes[] execResults\\n );\\n\\n /// @notice Emitted when a standard callback is registered.\\n /// @param interfaceId The ID of the interface.\\n /// @param callbackSelector The selector of the callback function.\\n /// @param magicNumber The magic number to be registered for the callback function selector.\\n event StandardCallbackRegistered(\\n bytes4 interfaceId,\\n bytes4 callbackSelector,\\n bytes4 magicNumber\\n );\\n\\n /// @notice Deposits (native) tokens to the DAO contract with a reference string.\\n /// @param _token The address of the token or address(0) in case of the native token.\\n /// @param _amount The amount of tokens to deposit.\\n /// @param _reference The reference describing the deposit reason.\\n function deposit(address _token, uint256 _amount, string calldata _reference) external payable;\\n\\n /// @notice Emitted when a token deposit has been made to the DAO.\\n /// @param sender The address of the sender.\\n /// @param token The address of the deposited token.\\n /// @param amount The amount of tokens deposited.\\n /// @param _reference The reference describing the deposit reason.\\n event Deposited(\\n address indexed sender,\\n address indexed token,\\n uint256 amount,\\n string _reference\\n );\\n\\n /// @notice Emitted when a native token deposit has been made to the DAO.\\n /// @dev This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).\\n /// @param sender The address of the sender.\\n /// @param amount The amount of native tokens deposited.\\n event NativeTokenDeposited(address sender, uint256 amount);\\n\\n /// @notice Setter for the trusted forwarder verifying the meta transaction.\\n /// @param _trustedForwarder The trusted forwarder address.\\n function setTrustedForwarder(address _trustedForwarder) external;\\n\\n /// @notice Getter for the trusted forwarder verifying the meta transaction.\\n /// @return The trusted forwarder address.\\n function getTrustedForwarder() external view returns (address);\\n\\n /// @notice Emitted when a new TrustedForwarder is set on the DAO.\\n /// @param forwarder the new forwarder address.\\n event TrustedForwarderSet(address forwarder);\\n\\n /// @notice Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\\n /// @param _hash The hash of the data to be signed.\\n /// @param _signature The signature byte array associated with `_hash`.\\n /// @return Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not.\\n function isValidSignature(bytes32 _hash, bytes memory _signature) external returns (bytes4);\\n\\n /// @notice Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\\n /// @param _interfaceId The ID of the interface.\\n /// @param _callbackSelector The selector of the callback function.\\n /// @param _magicNumber The magic number to be registered for the function signature.\\n function registerStandardCallback(\\n bytes4 _interfaceId,\\n bytes4 _callbackSelector,\\n bytes4 _magicNumber\\n ) external;\\n\\n /// @notice Removed function being left here to not corrupt the IDAO interface ID. Any call will revert.\\n /// @dev Introduced in v1.0.0. Removed in v1.4.0.\\n function setSignatureValidator(address) external;\\n}\\n\",\"keccak256\":\"0xb7f615523c26de042edce98731c658f44a1edb2464387ac1b642c4c69f57128e\",\"license\":\"AGPL-3.0-or-later\"},\"src/mocks/plugin/PluginSetupMockData.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {PermissionLib} from \\\"../../permission/PermissionLib.sol\\\";\\n\\naddress constant NO_CONDITION = address(0);\\n\\nerror ConflictingValues();\\n\\n/// @notice Creates a mock `MultiTargetPermission` array by converting a range of `uint160` values into `address` values.\\n/// @param rangeStart The start of the range.\\n/// @param rangeEnd The end of the range (that is not included).\\n/// @param op The permission operation type.\\n/// @return permissions The mock array of permissions.\\n/// @dev DO NOT USE IN PRODUCTION!\\nfunction mockPermissions(\\n uint160 rangeStart,\\n uint160 rangeEnd,\\n PermissionLib.Operation op\\n) pure returns (PermissionLib.MultiTargetPermission[] memory permissions) {\\n if (rangeStart > rangeEnd) revert ConflictingValues();\\n\\n permissions = new PermissionLib.MultiTargetPermission[](rangeEnd - rangeStart);\\n\\n for (uint160 i = rangeStart; i < rangeEnd; i++) {\\n permissions[i - rangeStart] = PermissionLib.MultiTargetPermission({\\n operation: op,\\n where: address(i),\\n who: address(i),\\n condition: PermissionLib.NO_CONDITION,\\n permissionId: keccak256(\\\"MOCK_PERMISSION\\\")\\n });\\n }\\n}\\n\\n/// @notice Creates a mock array of helper addresses of specified length by converting `uint160` values starting from 0 into `address` values.\\n/// @param len The length of the helper array.\\n/// @return helpers The mock array of helper addresses.\\n/// @dev DO NOT USE IN PRODUCTION!\\nfunction mockHelpers(uint160 len) pure returns (address[] memory helpers) {\\n helpers = new address[](len);\\n\\n for (uint160 i = 0; i < len; i++) {\\n helpers[i] = address(i);\\n }\\n}\\n\",\"keccak256\":\"0x529d1b7ea4c348fe18edf81a044792ca8aa1f6ad9a7d2edfd35e38bf8372abf9\",\"license\":\"AGPL-3.0-or-later\"},\"src/mocks/plugin/PluginUUPSUpgradeableMock.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\n/* solhint-disable one-contract-per-file */\\npragma solidity ^0.8.8;\\n\\nimport {PluginUUPSUpgradeable} from \\\"../../plugin/PluginUUPSUpgradeable.sol\\\";\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice A mock upgradeable plugin to be deployed via the UUPS proxy pattern.\\n/// v1.1 (Release 1, Build 1)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableMockBuild1 is PluginUUPSUpgradeable {\\n uint256 public state1;\\n\\n function initialize(IDAO _dao) external initializer {\\n __PluginUUPSUpgradeable_init(_dao);\\n state1 = 1;\\n }\\n}\\n\\n/// @notice A mock upgradeable plugin to be deployed via the UUPS proxy pattern.\\n/// v1.1 (Release 1, Build 2)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableMockBuild2 is PluginUUPSUpgradeable {\\n uint256 public state1;\\n uint256 public state2;\\n\\n function initialize(IDAO _dao) external reinitializer(2) {\\n __PluginUUPSUpgradeable_init(_dao);\\n state1 = 1;\\n state2 = 2;\\n }\\n\\n function initializeFrom(uint16 _previousBuild) external reinitializer(2) {\\n if (_previousBuild < 2) {\\n state2 = 2;\\n }\\n }\\n}\\n\\n/// @notice A mock upgradeable plugin to be deployed via the UUPS proxy pattern.\\n/// v1.1 (Release 1, Build 3)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableMockBuild3 is PluginUUPSUpgradeable {\\n uint256 public state1;\\n uint256 public state2;\\n uint256 public state3;\\n\\n function initialize(IDAO _dao) external reinitializer(3) {\\n __PluginUUPSUpgradeable_init(_dao);\\n state1 = 1;\\n state2 = 2;\\n state3 = 3;\\n }\\n\\n function initializeFrom(uint16 _previousBuild) external reinitializer(3) {\\n if (_previousBuild < 2) {\\n state2 = 2;\\n }\\n if (_previousBuild < 3) {\\n state3 = 3;\\n }\\n }\\n}\\n\\n/// @notice A mock upgradeable plugin missing an initializer function.\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableMockBad is PluginUUPSUpgradeable {\\n uint256 public state1;\\n\\n function notAnInitializer(IDAO _dao) external {\\n __PluginUUPSUpgradeable_init(_dao);\\n state1 = 1;\\n }\\n}\\n\",\"keccak256\":\"0x2917df3b1da0de27f58cf531afeaa4e6c4285717247cbdd9ecc7880ae5cb9cb0\",\"license\":\"AGPL-3.0-or-later\"},\"src/mocks/plugin/PluginUUPSUpgradeableSetupMock.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\n/* solhint-disable one-contract-per-file */\\npragma solidity ^0.8.8;\\n\\nimport {PermissionLib} from \\\"../../permission/PermissionLib.sol\\\";\\nimport {IPluginSetup} from \\\"../../plugin/setup/IPluginSetup.sol\\\";\\nimport {PluginUpgradeableSetup} from \\\"../../plugin/setup/PluginUpgradeableSetup.sol\\\";\\nimport {ProxyLib} from \\\"../../utils/deployment/ProxyLib.sol\\\";\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\nimport {mockPermissions, mockHelpers} from \\\"./PluginSetupMockData.sol\\\";\\nimport {PluginUUPSUpgradeableMockBuild1, PluginUUPSUpgradeableMockBuild2, PluginUUPSUpgradeableMockBuild3} from \\\"./PluginUUPSUpgradeableMock.sol\\\";\\n\\n/// @notice A mock plugin setup of an upgradeable plugin to be deployed via the UUPS pattern.\\n/// v1.1 (Release 1, Build 1)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableSetupMockBuild1 is PluginUpgradeableSetup {\\n using ProxyLib for address;\\n\\n uint16 internal constant THIS_BUILD = 1;\\n\\n constructor() PluginUpgradeableSetup(address(new PluginUUPSUpgradeableMockBuild1())) {}\\n\\n /// @inheritdoc IPluginSetup\\n function prepareInstallation(\\n address _dao,\\n bytes memory\\n ) public returns (address plugin, PreparedSetupData memory preparedSetupData) {\\n bytes memory initData = abi.encodeCall(\\n PluginUUPSUpgradeableMockBuild1.initialize,\\n (IDAO(_dao))\\n );\\n plugin = implementation().deployUUPSProxy(initData);\\n preparedSetupData.helpers = mockHelpers(1);\\n preparedSetupData.permissions = mockPermissions(0, 1, PermissionLib.Operation.Grant);\\n }\\n\\n /// @inheritdoc IPluginSetup\\n /// @dev The default implementation for the initial build 1 that reverts because no earlier build exists.\\n function prepareUpdate(\\n address _dao,\\n uint16 _fromBuild,\\n SetupPayload calldata _payload\\n ) external pure virtual returns (bytes memory, PreparedSetupData memory) {\\n (_dao, _fromBuild, _payload);\\n revert InvalidUpdatePath({fromBuild: 0, thisBuild: THIS_BUILD});\\n }\\n\\n /// @inheritdoc IPluginSetup\\n function prepareUninstallation(\\n address _dao,\\n SetupPayload calldata _payload\\n ) external pure returns (PermissionLib.MultiTargetPermission[] memory permissions) {\\n (_dao, _payload);\\n permissions = mockPermissions(0, THIS_BUILD, PermissionLib.Operation.Revoke);\\n }\\n}\\n\\n/// @notice A mock plugin setup of an upgradeable plugin to be deployed via the UUPS pattern.\\n/// v1.2 (Release 1, Build 2)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableSetupMockBuild2 is PluginUpgradeableSetup {\\n using ProxyLib for address;\\n\\n uint16 internal constant THIS_BUILD = 2;\\n\\n constructor() PluginUpgradeableSetup(address(new PluginUUPSUpgradeableMockBuild2())) {}\\n\\n /// @inheritdoc IPluginSetup\\n function prepareInstallation(\\n address _dao,\\n bytes memory\\n ) external returns (address plugin, PreparedSetupData memory preparedSetupData) {\\n bytes memory initData = abi.encodeCall(\\n PluginUUPSUpgradeableMockBuild2.initialize,\\n (IDAO(_dao))\\n );\\n plugin = implementation().deployUUPSProxy(initData);\\n preparedSetupData.helpers = mockHelpers(THIS_BUILD);\\n preparedSetupData.permissions = mockPermissions(\\n 0,\\n THIS_BUILD,\\n PermissionLib.Operation.Grant\\n );\\n }\\n\\n /// @inheritdoc IPluginSetup\\n function prepareUpdate(\\n address _dao,\\n uint16 _fromBuild,\\n SetupPayload calldata _payload\\n )\\n external\\n pure\\n override\\n returns (bytes memory initData, PreparedSetupData memory preparedSetupData)\\n {\\n (_dao, _payload);\\n\\n // Update from Build 1\\n if (_fromBuild == 1) {\\n preparedSetupData.helpers = mockHelpers(THIS_BUILD);\\n initData = abi.encodeCall(PluginUUPSUpgradeableMockBuild2.initializeFrom, (_fromBuild));\\n preparedSetupData.permissions = mockPermissions(\\n _fromBuild,\\n THIS_BUILD,\\n PermissionLib.Operation.Grant\\n );\\n }\\n }\\n\\n /// @inheritdoc IPluginSetup\\n function prepareUninstallation(\\n address _dao,\\n SetupPayload calldata _payload\\n ) external pure returns (PermissionLib.MultiTargetPermission[] memory permissions) {\\n (_dao, _payload);\\n permissions = mockPermissions(0, THIS_BUILD, PermissionLib.Operation.Revoke);\\n }\\n}\\n\\n/// @notice A mock plugin setup of an upgradeable plugin to be deployed via the UUPS pattern.\\n/// v1.3 (Release 1, Build 3)\\ncontract PluginUUPSUpgradeableSetupMockBuild3 is PluginUpgradeableSetup {\\n using ProxyLib for address;\\n\\n uint16 internal constant THIS_BUILD = 3;\\n\\n constructor() PluginUpgradeableSetup(address(new PluginUUPSUpgradeableMockBuild3())) {}\\n\\n /// @inheritdoc IPluginSetup\\n function prepareInstallation(\\n address _dao,\\n bytes memory\\n ) external returns (address plugin, PreparedSetupData memory preparedSetupData) {\\n bytes memory initData = abi.encodeCall(\\n PluginUUPSUpgradeableMockBuild3.initialize,\\n (IDAO(_dao))\\n );\\n plugin = implementation().deployUUPSProxy(initData);\\n preparedSetupData.helpers = mockHelpers(THIS_BUILD);\\n preparedSetupData.permissions = mockPermissions(\\n 0,\\n THIS_BUILD,\\n PermissionLib.Operation.Grant\\n );\\n }\\n\\n /// @inheritdoc IPluginSetup\\n function prepareUpdate(\\n address _dao,\\n uint16 _fromBuild,\\n SetupPayload calldata _payload\\n )\\n external\\n pure\\n override\\n returns (bytes memory initData, PreparedSetupData memory preparedSetupData)\\n {\\n (_dao, _payload);\\n\\n // Update from Build 1\\n if (_fromBuild == 1) {\\n preparedSetupData.helpers = mockHelpers(THIS_BUILD);\\n initData = abi.encodeCall(PluginUUPSUpgradeableMockBuild3.initializeFrom, (_fromBuild));\\n preparedSetupData.permissions = mockPermissions(\\n _fromBuild,\\n THIS_BUILD,\\n PermissionLib.Operation.Grant\\n );\\n\\n // If this update path should not be supported, you can revert with an error, e.g.,\\n // revert InvalidUpdatePath({fromBuild: _fromBuild, thisBuild: THIS_BUILD});\\n }\\n\\n // Update from Build 2\\n if (_fromBuild == 2) {\\n preparedSetupData.helpers = mockHelpers(THIS_BUILD);\\n initData = abi.encodeCall(PluginUUPSUpgradeableMockBuild3.initializeFrom, (_fromBuild));\\n preparedSetupData.permissions = mockPermissions(\\n _fromBuild,\\n THIS_BUILD,\\n PermissionLib.Operation.Grant\\n );\\n }\\n }\\n\\n /// @inheritdoc IPluginSetup\\n function prepareUninstallation(\\n address _dao,\\n SetupPayload calldata _payload\\n ) external pure returns (PermissionLib.MultiTargetPermission[] memory permissions) {\\n (_dao, _payload);\\n permissions = mockPermissions(0, THIS_BUILD, PermissionLib.Operation.Revoke);\\n }\\n}\\n\",\"keccak256\":\"0x6be5a7611fe85f0e6e1ea08f42bcce810bc4973da1eaa04c88445b8d9af130ba\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/PermissionLib.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title PermissionLib\\n/// @author Aragon X - 2021-2023\\n/// @notice A library containing objects for permission processing.\\n/// @custom:security-contact sirt@aragon.org\\nlibrary PermissionLib {\\n /// @notice A constant expressing that no condition is applied to a permission.\\n address public constant NO_CONDITION = address(0);\\n\\n /// @notice The types of permission operations available in the `PermissionManager`.\\n /// @param Grant The grant operation setting a permission without a condition.\\n /// @param Revoke The revoke operation removing a permission (that was granted with or without a condition).\\n /// @param GrantWithCondition The grant operation setting a permission with a condition.\\n enum Operation {\\n Grant,\\n Revoke,\\n GrantWithCondition\\n }\\n\\n /// @notice A struct containing the information for a permission to be applied on a single target contract without a condition.\\n /// @param operation The permission operation type.\\n /// @param who The address (EOA or contract) receiving the permission.\\n /// @param permissionId The permission identifier.\\n struct SingleTargetPermission {\\n Operation operation;\\n address who;\\n bytes32 permissionId;\\n }\\n\\n /// @notice A struct containing the information for a permission to be applied on multiple target contracts, optionally, with a condition.\\n /// @param operation The permission operation type.\\n /// @param where The address of the target contract for which `who` receives permission.\\n /// @param who The address (EOA or contract) receiving the permission.\\n /// @param condition The `PermissionCondition` that will be asked for authorization on calls connected to the specified permission identifier.\\n /// @param permissionId The permission identifier.\\n struct MultiTargetPermission {\\n Operation operation;\\n address where;\\n address who;\\n address condition;\\n bytes32 permissionId;\\n }\\n}\\n\",\"keccak256\":\"0x470faf3c4891ebc6420ef6cc09f6098917568ccc79268c90954d1478199b6097\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/DaoAuthorizableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ContextUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\\\";\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\nimport {_auth} from \\\"./auth.sol\\\";\\n\\n/// @title DaoAuthorizableUpgradeable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract contract providing a meta-transaction compatible modifier for upgradeable or cloneable contracts to authorize function calls through an associated DAO.\\n/// @dev Make sure to call `__DaoAuthorizableUpgradeable_init` during initialization of the inheriting contract.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract DaoAuthorizableUpgradeable is ContextUpgradeable {\\n /// @notice The associated DAO managing the permissions of inheriting contracts.\\n IDAO private dao_;\\n\\n /// @notice Initializes the contract by setting the associated DAO.\\n /// @param _dao The associated DAO address.\\n // solhint-disable-next-line func-name-mixedcase\\n function __DaoAuthorizableUpgradeable_init(IDAO _dao) internal onlyInitializing {\\n dao_ = _dao;\\n }\\n\\n /// @notice Returns the DAO contract.\\n /// @return The DAO contract.\\n function dao() public view returns (IDAO) {\\n return dao_;\\n }\\n\\n /// @notice A modifier to make functions on inheriting contracts authorized. Permissions to call the function are checked through the associated DAO's permission manager.\\n /// @param _permissionId The permission identifier required to call the method this modifier is applied to.\\n modifier auth(bytes32 _permissionId) {\\n _auth(dao_, address(this), _msgSender(), _permissionId, _msgData());\\n _;\\n }\\n\\n /// @notice This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain (see [OpenZeppelin's guide about storage gaps](https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps)).\\n uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0x7fac6b01b037ba1cb9d6a22d3f43b0785037dcf496ffb672434d9bf7227d2585\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/auth.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice Thrown if a call is unauthorized in the associated DAO.\\n/// @param dao The associated DAO.\\n/// @param where The context in which the authorization reverted.\\n/// @param who The address (EOA or contract) missing the permission.\\n/// @param permissionId The permission identifier.\\nerror DaoUnauthorized(address dao, address where, address who, bytes32 permissionId);\\n\\n/// @notice A free function checking if a caller is granted permissions on a target contract via a permission identifier that redirects the approval to a `PermissionCondition` if this was specified in the setup.\\n/// @param _where The address of the target contract for which `who` receives permission.\\n/// @param _who The address (EOA or contract) owning the permission.\\n/// @param _permissionId The permission identifier.\\n/// @param _data The optional data passed to the `PermissionCondition` registered.\\n/// @custom:security-contact sirt@aragon.org\\nfunction _auth(\\n IDAO _dao,\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes calldata _data\\n) view {\\n if (!_dao.hasPermission(_where, _who, _permissionId, _data))\\n revert DaoUnauthorized({\\n dao: address(_dao),\\n where: _where,\\n who: _who,\\n permissionId: _permissionId\\n });\\n}\\n\",\"keccak256\":\"0x878764b4f87fe0651fb3798fb9cb87c952f8c6caf6ae79c7f09de84df6c00298\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/IPlugin.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IPlugin\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the traits of a plugin.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IPlugin {\\n enum PluginType {\\n UUPS,\\n Cloneable,\\n Constructable\\n }\\n\\n /// @notice Returns the plugin's type\\n function pluginType() external view returns (PluginType);\\n}\\n\",\"keccak256\":\"0xc57cd0d10b6380ab7f54c713a509e88fd8f4ad9288313a0e8e12b8887817ddfe\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/PluginUUPSUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {UUPSUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\\\";\\nimport {IERC1822ProxiableUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport {ERC165Upgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\\\";\\n\\nimport {IProtocolVersion} from \\\"../utils/versioning/IProtocolVersion.sol\\\";\\nimport {ProtocolVersion} from \\\"../utils/versioning/ProtocolVersion.sol\\\";\\nimport {DaoAuthorizableUpgradeable} from \\\"../permission/auth/DaoAuthorizableUpgradeable.sol\\\";\\nimport {IDAO} from \\\"../dao/IDAO.sol\\\";\\nimport {IPlugin} from \\\"./IPlugin.sol\\\";\\n\\n/// @title PluginUUPSUpgradeable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract, upgradeable contract to inherit from when creating a plugin being deployed via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract PluginUUPSUpgradeable is\\n IPlugin,\\n ERC165Upgradeable,\\n UUPSUpgradeable,\\n DaoAuthorizableUpgradeable,\\n ProtocolVersion\\n{\\n // NOTE: When adding new state variables to the contract, the size of `_gap` has to be adapted below as well.\\n address public target;\\n\\n /// @dev Emitted each time the Target is set.\\n event TargetSet(address indexed previousTarget, address indexed newTarget);\\n\\n /// @notice Disables the initializers on the implementation contract to prevent it from being left uninitialized.\\n /// @custom:oz-upgrades-unsafe-allow constructor\\n constructor() {\\n _disableInitializers();\\n }\\n\\n /// @inheritdoc IPlugin\\n function pluginType() public pure override returns (PluginType) {\\n return PluginType.UUPS;\\n }\\n\\n /// @notice The ID of the permission required to call the `_authorizeUpgrade` function.\\n bytes32 public constant UPGRADE_PLUGIN_PERMISSION_ID = keccak256(\\\"UPGRADE_PLUGIN_PERMISSION\\\");\\n\\n /// @notice Initializes the plugin by storing the associated DAO.\\n /// @param _dao The DAO contract.\\n // solhint-disable-next-line func-name-mixedcase\\n function __PluginUUPSUpgradeable_init(IDAO _dao) internal virtual onlyInitializing {\\n __DaoAuthorizableUpgradeable_init(_dao);\\n }\\n\\n /// @dev Sets the target to a new target (`newTarget`).\\n /// @notice Can only be called by the current owner. TODO\\n function setTarget(address _target) public {\\n address previousTarget = target;\\n target = _target;\\n emit TargetSet(previousTarget, _target);\\n }\\n\\n /// @notice Checks if an interface is supported by this or its parent contract.\\n /// @param _interfaceId The ID of the interface.\\n /// @return Returns `true` if the interface is supported.\\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\\n return\\n _interfaceId == type(IPlugin).interfaceId ||\\n _interfaceId == type(IProtocolVersion).interfaceId ||\\n _interfaceId == type(IERC1822ProxiableUpgradeable).interfaceId ||\\n super.supportsInterface(_interfaceId);\\n }\\n\\n /// @notice Returns the address of the implementation contract in the [proxy storage slot](https://eips.ethereum.org/EIPS/eip-1967) slot the [UUPS proxy](https://eips.ethereum.org/EIPS/eip-1822) is pointing to.\\n /// @return The address of the implementation contract.\\n function implementation() public view returns (address) {\\n return _getImplementation();\\n }\\n\\n /// @notice Forwards the actions to the currently set `target` for the execution.\\n /// @param _callId Identifier for this execution.\\n /// @param _actions actions that will be eventually called.\\n /// @param _allowFailureMap Bitmap-encoded number. TODO:\\n /// @return execResults address of the implementation contract.\\n /// @return failureMap address of the implementation contract.\\n function _execute(\\n bytes32 _callId,\\n IDAO.Action[] calldata _actions,\\n uint256 _allowFailureMap\\n ) internal virtual returns (bytes[] memory execResults, uint256 failureMap) {\\n (execResults, failureMap) = IDAO(target).execute(_callId, _actions, _allowFailureMap);\\n }\\n\\n /// @notice Forwards the actions to the `target` for the execution.\\n /// @param _target Forwards the actions to the specific target.\\n /// @param _callId Identifier for this execution.\\n /// @param _actions actions that will be eventually called.\\n /// @param _allowFailureMap Bitmap-encoded number. TODO:\\n /// @return execResults address of the implementation contract.\\n /// @return failureMap address of the implementation contract.\\n function _execute(\\n address _target,\\n bytes32 _callId,\\n IDAO.Action[] calldata _actions,\\n uint256 _allowFailureMap\\n ) internal virtual returns (bytes[] memory execResults, uint256 failureMap) {\\n (execResults, failureMap) = IDAO(_target).execute(_callId, _actions, _allowFailureMap);\\n }\\n\\n /// @notice Internal method authorizing the upgrade of the contract via the [upgradeability mechanism for UUPS proxies](https://docs.openzeppelin.com/contracts/4.x/api/proxy#UUPSUpgradeable) (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\\n /// @dev The caller must have the `UPGRADE_PLUGIN_PERMISSION_ID` permission.\\n function _authorizeUpgrade(\\n address\\n )\\n internal\\n virtual\\n override\\n auth(UPGRADE_PLUGIN_PERMISSION_ID)\\n // solhint-disable-next-line no-empty-blocks\\n {\\n\\n }\\n\\n /// @notice This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain (see [OpenZeppelin's guide about storage gaps](https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps)).\\n uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0xce1d0126b3ae8c8afc887fba9f49b1cc35f84f1c1d5bf4cadee330c7ae15014f\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/setup/IPluginSetup.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {PermissionLib} from \\\"../../permission/PermissionLib.sol\\\";\\n\\n// solhint-disable-next-line no-unused-import\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @title IPluginSetup\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for a plugin setup contract to be consumed by the `PluginSetupProcessor` for plugin installations, updates, and uninstallations.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IPluginSetup {\\n /// @notice The data associated with a prepared setup.\\n /// @param helpers The address array of helpers (contracts or EOAs) associated with this plugin version after the installation or update.\\n /// @param permissions The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the installing or updating DAO.\\n struct PreparedSetupData {\\n address[] helpers;\\n PermissionLib.MultiTargetPermission[] permissions;\\n }\\n\\n /// @notice The payload for plugin updates and uninstallations containing the existing contracts as well as optional data to be consumed by the plugin setup.\\n /// @param plugin The address of the `Plugin`.\\n /// @param currentHelpers The address array of all current helpers (contracts or EOAs) associated with the plugin to update from.\\n /// @param data The bytes-encoded data containing the input parameters for the preparation of update/uninstall as specified in the corresponding ABI on the version's metadata.\\n struct SetupPayload {\\n address plugin;\\n address[] currentHelpers;\\n bytes data;\\n }\\n\\n /// @notice Prepares the installation of a plugin.\\n /// @param _dao The address of the installing DAO.\\n /// @param _data The bytes-encoded data containing the input parameters for the installation as specified in the plugin's build metadata JSON file.\\n /// @return plugin The address of the `Plugin` contract being prepared for installation.\\n /// @return preparedSetupData The deployed plugin's relevant data which consists of helpers and permissions.\\n function prepareInstallation(\\n address _dao,\\n bytes calldata _data\\n ) external returns (address plugin, PreparedSetupData memory preparedSetupData);\\n\\n /// @notice Prepares the update of a plugin.\\n /// @param _dao The address of the updating DAO.\\n /// @param _fromBuild The build number of the plugin to update from.\\n /// @param _payload The relevant data necessary for the `prepareUpdate`. See above.\\n /// @return initData The initialization data to be passed to upgradeable contracts when the update is applied in the `PluginSetupProcessor`.\\n /// @return preparedSetupData The deployed plugin's relevant data which consists of helpers and permissions.\\n function prepareUpdate(\\n address _dao,\\n uint16 _fromBuild,\\n SetupPayload calldata _payload\\n ) external returns (bytes memory initData, PreparedSetupData memory preparedSetupData);\\n\\n /// @notice Prepares the uninstallation of a plugin.\\n /// @param _dao The address of the uninstalling DAO.\\n /// @param _payload The relevant data necessary for the `prepareUninstallation`. See above.\\n /// @return permissions The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the uninstalling DAO.\\n function prepareUninstallation(\\n address _dao,\\n SetupPayload calldata _payload\\n ) external returns (PermissionLib.MultiTargetPermission[] memory permissions);\\n\\n /// @notice Returns the plugin implementation address.\\n /// @return The address of the plugin implementation contract.\\n /// @dev The implementation can be instantiated via the `new` keyword, cloned via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)), or proxied via the UUPS proxy pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0x21c99995208039ac6ace219b6f273243811dc2aa66399e8e499e43ec30b82fa9\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/setup/PluginUpgradeableSetup.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ERC165} from \\\"@openzeppelin/contracts/utils/introspection/ERC165.sol\\\";\\n\\nimport {IProtocolVersion} from \\\"../../utils/versioning/IProtocolVersion.sol\\\";\\nimport {ProtocolVersion} from \\\"../../utils/versioning/ProtocolVersion.sol\\\";\\nimport {IPluginSetup} from \\\"./IPluginSetup.sol\\\";\\n\\n/// @title PluginUpgradeableSetup\\n/// @author Aragon X - 2022-2024\\n/// @notice An abstract contract to inherit from to implement the plugin setup for upgradeable plugins, i.e, `PluginUUPSUpgradeable` being deployed via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822) and [ERC-1967](https://eips.ethereum.org/EIPS/eip-1967)).\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract PluginUpgradeableSetup is ERC165, IPluginSetup, ProtocolVersion {\\n /// @notice The address of the plugin implementation contract for initial block explorer verification\\n /// and to create [ERC-1967](https://eips.ethereum.org/EIPS/eip-1967) UUPS proxies from.\\n address internal immutable IMPLEMENTATION;\\n\\n /// @notice Thrown when an update path is not available, for example, if this is the initial build.\\n /// @param fromBuild The build number to update from.\\n /// @param thisBuild The build number of this setup to update to.\\n error InvalidUpdatePath(uint16 fromBuild, uint16 thisBuild);\\n\\n /// @notice The contract constructor, that setting the plugin implementation contract.\\n /// @param _implementation The address of the plugin implementation contract.\\n constructor(address _implementation) {\\n IMPLEMENTATION = _implementation;\\n }\\n\\n /// @notice Checks if this or the parent contract supports an interface by its ID.\\n /// @param _interfaceId The ID of the interface.\\n /// @return Returns `true` if the interface is supported.\\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\\n return\\n _interfaceId == type(IPluginSetup).interfaceId ||\\n _interfaceId == type(IProtocolVersion).interfaceId ||\\n super.supportsInterface(_interfaceId);\\n }\\n\\n /// @inheritdoc IPluginSetup\\n function implementation() public view returns (address) {\\n return IMPLEMENTATION;\\n }\\n}\\n\",\"keccak256\":\"0x2842d919d1ecb4fbeb40953128c3da3b36dcf6e91255089e987c2f11ff8d061e\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/deployment/ProxyLib.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ERC1967Proxy} from \\\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol\\\";\\nimport {Clones} from \\\"@openzeppelin/contracts/proxy/Clones.sol\\\";\\nimport {Address} from \\\"@openzeppelin/contracts/utils/Address.sol\\\";\\n\\n/// @title ProxyLib\\n/// @author Aragon X - 2024\\n/// @notice A library containing methods for the deployment of proxies via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)) and minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)).\\n/// @custom:security-contact sirt@aragon.org\\nlibrary ProxyLib {\\n using Address for address;\\n using Clones for address;\\n\\n /// @notice Creates an [ERC-1967](https://eips.ethereum.org/EIPS/eip-1967) UUPS proxy contract pointing to a logic contract and allows to immediately initialize it.\\n /// @param _logic The logic contract the proxy is pointing to.\\n /// @param _initCalldata The initialization data for this contract.\\n /// @return uupsProxy The address of the UUPS proxy contract created.\\n /// @dev If `_initCalldata` is non-empty, it is used in a delegate call to the `_logic` contract. This will typically be an encoded function call initializing the storage of the proxy (see [OpenZeppelin ERC1967Proxy-constructor](https://docs.openzeppelin.com/contracts/4.x/api/proxy#ERC1967Proxy-constructor-address-bytes-)).\\n function deployUUPSProxy(\\n address _logic,\\n bytes memory _initCalldata\\n ) internal returns (address uupsProxy) {\\n uupsProxy = address(new ERC1967Proxy({_logic: _logic, _data: _initCalldata}));\\n }\\n\\n /// @notice Creates an [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167) minimal proxy contract, also known as clones, pointing to a logic contract and allows to immediately initialize it.\\n /// @param _logic The logic contract the proxy is pointing to.\\n /// @param _initCalldata The initialization data for this contract.\\n /// @return minimalProxy The address of the minimal proxy contract created.\\n /// @dev If `_initCalldata` is non-empty, it is used in a call to the clone contract. This will typically be an encoded function call initializing the storage of the contract.\\n function deployMinimalProxy(\\n address _logic,\\n bytes memory _initCalldata\\n ) internal returns (address minimalProxy) {\\n minimalProxy = _logic.clone();\\n if (_initCalldata.length > 0) {\\n minimalProxy.functionCall({data: _initCalldata});\\n }\\n }\\n}\\n\",\"keccak256\":\"0xef0d1790dfa026381c021daa2ec7267357497f58cd4a2fa5c64e72e0dea95acc\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/IProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IProtocolVersion\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the semantic Aragon OSx protocol version number.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IProtocolVersion {\\n /// @notice Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\\n /// @return _version Returns the semantic Aragon OSx protocol version number.\\n /// @dev This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\\n function protocolVersion() external view returns (uint8[3] memory _version);\\n}\\n\",\"keccak256\":\"0x00a4da654d21dc1bdadbdc8bd54bb86c378c56f85e461ccc31303628ea621361\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/ProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IProtocolVersion} from \\\"./IProtocolVersion.sol\\\";\\n\\n/// @title ProtocolVersion\\n/// @author Aragon X - 2023\\n/// @notice An abstract, stateless, non-upgradeable contract providing the current Aragon OSx protocol version number.\\n/// @dev Do not add any new variables to this contract that would shift down storage in the inheritance chain.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract ProtocolVersion is IProtocolVersion {\\n // IMPORTANT: Do not add any storage variable, see the above notice.\\n\\n /// @inheritdoc IProtocolVersion\\n function protocolVersion() public pure returns (uint8[3] memory) {\\n return [1, 4, 0];\\n }\\n}\\n\",\"keccak256\":\"0x3975c937be935f687c6b6b8f379071232681e98cf04b175d72781b819ea52bdb\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"errors":{"InvalidUpdatePath(uint16,uint16)":[{"notice":"Thrown when an update path is not available, for example, if this is the initial build."}]},"kind":"user","methods":{"implementation()":{"notice":"Returns the plugin implementation address."},"prepareInstallation(address,bytes)":{"notice":"Prepares the installation of a plugin."},"prepareUninstallation(address,(address,address[],bytes))":{"notice":"Prepares the uninstallation of a plugin."},"prepareUpdate(address,uint16,(address,address[],bytes))":{"notice":"Prepares the update of a plugin."},"protocolVersion()":{"notice":"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with."},"supportsInterface(bytes4)":{"notice":"Checks if this or the parent contract supports an interface by its ID."}},"notice":"A mock plugin setup of an upgradeable plugin to be deployed via the UUPS pattern. v1.2 (Release 1, Build 2)","version":1}},"PluginUUPSUpgradeableSetupMockBuild3":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"ConflictingValues","type":"error"},{"inputs":[{"internalType":"uint16","name":"fromBuild","type":"uint16"},{"internalType":"uint16","name":"thisBuild","type":"uint16"}],"name":"InvalidUpdatePath","type":"error"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_dao","type":"address"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"prepareInstallation","outputs":[{"internalType":"address","name":"plugin","type":"address"},{"components":[{"internalType":"address[]","name":"helpers","type":"address[]"},{"components":[{"internalType":"enum PermissionLib.Operation","name":"operation","type":"uint8"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"condition","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"internalType":"struct PermissionLib.MultiTargetPermission[]","name":"permissions","type":"tuple[]"}],"internalType":"struct IPluginSetup.PreparedSetupData","name":"preparedSetupData","type":"tuple"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_dao","type":"address"},{"components":[{"internalType":"address","name":"plugin","type":"address"},{"internalType":"address[]","name":"currentHelpers","type":"address[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct IPluginSetup.SetupPayload","name":"_payload","type":"tuple"}],"name":"prepareUninstallation","outputs":[{"components":[{"internalType":"enum PermissionLib.Operation","name":"operation","type":"uint8"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"condition","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"internalType":"struct PermissionLib.MultiTargetPermission[]","name":"permissions","type":"tuple[]"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_dao","type":"address"},{"internalType":"uint16","name":"_fromBuild","type":"uint16"},{"components":[{"internalType":"address","name":"plugin","type":"address"},{"internalType":"address[]","name":"currentHelpers","type":"address[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct IPluginSetup.SetupPayload","name":"_payload","type":"tuple"}],"name":"prepareUpdate","outputs":[{"internalType":"bytes","name":"initData","type":"bytes"},{"components":[{"internalType":"address[]","name":"helpers","type":"address[]"},{"components":[{"internalType":"enum PermissionLib.Operation","name":"operation","type":"uint8"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"condition","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"internalType":"struct PermissionLib.MultiTargetPermission[]","name":"permissions","type":"tuple[]"}],"internalType":"struct IPluginSetup.PreparedSetupData","name":"preparedSetupData","type":"tuple"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"protocolVersion","outputs":[{"internalType":"uint8[3]","name":"","type":"uint8[3]"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"errors":{"InvalidUpdatePath(uint16,uint16)":[{"params":{"fromBuild":"The build number to update from.","thisBuild":"The build number of this setup to update to."}}]},"kind":"dev","methods":{"implementation()":{"details":"The implementation can be instantiated via the `new` keyword, cloned via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)), or proxied via the UUPS proxy pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).","returns":{"_0":"The address of the plugin implementation contract."}},"prepareInstallation(address,bytes)":{"params":{"_dao":"The address of the installing DAO.","_data":"The bytes-encoded data containing the input parameters for the installation as specified in the plugin's build metadata JSON file."},"returns":{"plugin":"The address of the `Plugin` contract being prepared for installation.","preparedSetupData":"The deployed plugin's relevant data which consists of helpers and permissions."}},"prepareUninstallation(address,(address,address[],bytes))":{"params":{"_dao":"The address of the uninstalling DAO.","_payload":"The relevant data necessary for the `prepareUninstallation`. See above."},"returns":{"permissions":"The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the uninstalling DAO."}},"prepareUpdate(address,uint16,(address,address[],bytes))":{"params":{"_dao":"The address of the updating DAO.","_fromBuild":"The build number of the plugin to update from.","_payload":"The relevant data necessary for the `prepareUpdate`. See above."},"returns":{"initData":"The initialization data to be passed to upgradeable contracts when the update is applied in the `PluginSetupProcessor`.","preparedSetupData":"The deployed plugin's relevant data which consists of helpers and permissions."}},"protocolVersion()":{"details":"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.","returns":{"_0":"Returns the semantic Aragon OSx protocol version number."}},"supportsInterface(bytes4)":{"params":{"_interfaceId":"The ID of the interface."},"returns":{"_0":"Returns `true` if the interface is supported."}}},"version":1},"evm":{"bytecode":{"functionDebugData":{"@_3604":{"entryPoint":null,"id":3604,"parameterSlots":0,"returnSlots":0},"@_4995":{"entryPoint":null,"id":4995,"parameterSlots":1,"returnSlots":0}},"generatedSources":[],"linkReferences":{},"object":"60a060405234801561001057600080fd5b5060405161001d9061004b565b604051809103906000f080158015610039573d6000803e3d6000fd5b506001600160a01b0316608052610058565b61142d8061130b83390190565b6080516112926100796000396000818160d2015261037e01526112926000f3fe60806040523480156200001157600080fd5b50600436106200007b5760003560e01c80639cb0a12411620000565780639cb0a12414620000fd578063a8a9c29e1462000123578063f10832f1146200014a57600080fd5b806301ffc9a714620000805780632ae9c60014620000ac5780635c60da1b14620000c5575b600080fd5b6200009762000091366004620006a3565b62000171565b60405190151581526020015b60405180910390f35b620000b6620001c4565b604051620000a39190620006cf565b6040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152602001620000a3565b620001146200010e36600462000735565b620001f0565b604051620000a3919062000806565b6200013a6200013436600462000853565b62000209565b604051620000a3929190620009a2565b620001616200015b366004620009ea565b6200030f565b604051620000a392919062000ab8565b60006001600160e01b0319821663099718b560e41b1480620001a257506001600160e01b03198216621574e360e91b145b80620001be57506301ffc9a760e01b6001600160e01b03198316145b92915050565b620001ce62000677565b5060408051606081018252600181526004602082015260009181019190915290565b606062000202600060036001620003de565b9392505050565b606062000229604051806040016040528060608152602001606081525090565b8361ffff16600103620002985762000242600362000577565b815260405161ffff8516602482015260440160408051601f198184030181529190526020810180516001600160e01b03166239a8c560e41b17905291506200029261ffff851660036000620003de565b60208201525b8361ffff166002036200030757620002b1600362000577565b815260405161ffff8516602482015260440160408051601f198184030181529190526020810180516001600160e01b03166239a8c560e41b17905291506200030161ffff851660036000620003de565b60208201525b935093915050565b60006200032f604051806040016040528060608152602001606081525090565b6040516001600160a01b038516602482015260009060440160408051601f198184030181529190526020810180516001600160e01b031663189acdbd60e31b1790529050620003b081620003a07f000000000000000000000000000000000000000000000000000000000000000090565b6001600160a01b0316906200063b565b9250620003be600362000577565b8252620003cf6000600381620003de565b60208301525090939092509050565b6060826001600160a01b0316846001600160a01b031611156200041457604051633a4013cd60e21b815260040160405180910390fd5b62000420848462000afa565b6001600160a01b031667ffffffffffffffff811115620004445762000444620009d4565b6040519080825280602002602001820160405280156200049f57816020015b6040805160a081018252600080825260208083018290529282018190526060820181905260808201528252600019909201910181620004635790505b509050835b836001600160a01b0316816001600160a01b031610156200056f576040518060a00160405280846002811115620004df57620004df62000789565b81526001600160a01b038316602082018190526040820152600060608201527fa280eec51ab8e1bc4b6b0c1b7f1bde785761b787a49db404e3e9338ed9b016ef6080909101528262000532878462000afa565b6001600160a01b0316815181106200054e576200054e62000b24565b60200260200101819052508080620005669062000b3a565b915050620004a4565b509392505050565b6060816001600160a01b031667ffffffffffffffff8111156200059e576200059e620009d4565b604051908082528060200260200182016040528015620005c8578160200160208202803683370190505b50905060005b826001600160a01b0316816001600160a01b0316101562000635578082826001600160a01b03168151811062000608576200060862000b24565b6001600160a01b0390921660209283029190910190910152806200062c8162000b3a565b915050620005ce565b50919050565b600082826040516200064d9062000695565b6200065a92919062000b63565b604051809103906000f0801580156200056f573d6000803e3d6000fd5b60405180606001604052806003906020820280368337509192915050565b6106fe8062000b8883390190565b600060208284031215620006b657600080fd5b81356001600160e01b0319811681146200020257600080fd5b60608101818360005b6003811015620006fc57815160ff16835260209283019290910190600101620006d8565b50505092915050565b80356001600160a01b03811681146200071d57600080fd5b919050565b6000606082840312156200063557600080fd5b600080604083850312156200074957600080fd5b620007548362000705565b9150602083013567ffffffffffffffff8111156200077157600080fd5b6200077f8582860162000722565b9150509250929050565b634e487b7160e01b600052602160045260246000fd5b6000815160038110620007c257634e487b7160e01b600052602160045260246000fd5b8352506020818101516001600160a01b0390811691840191909152604080830151821690840152606080830151909116908301526080908101519082015260a00190565b6020808252825182820181905260009190848201906040850190845b818110156200084757620008388385516200079f565b93850193925060010162000822565b50909695505050505050565b6000806000606084860312156200086957600080fd5b620008748462000705565b9250602084013561ffff811681146200088c57600080fd5b9150604084013567ffffffffffffffff811115620008a957600080fd5b620008b78682870162000722565b9150509250925092565b6000815180845260005b81811015620008e957602081850181015186830182015201620008cb565b506000602082860101526020601f19601f83011685010191505092915050565b805160408084528151908401819052600091602091908201906060860190845b81811015620009505783516001600160a01b03168352928401929184019160010162000929565b50508483015186820387850152805180835290840192506000918401905b808310156200099757620009848285516200079f565b915084840193506001830192506200096e565b509695505050505050565b604081526000620009b76040830185620008c1565b8281036020840152620009cb818562000909565b95945050505050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215620009fe57600080fd5b62000a098362000705565b9150602083013567ffffffffffffffff8082111562000a2757600080fd5b818501915085601f83011262000a3c57600080fd5b81358181111562000a515762000a51620009d4565b604051601f8201601f19908116603f0116810190838211818310171562000a7c5762000a7c620009d4565b8160405282815288602084870101111562000a9657600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6001600160a01b038316815260406020820152600062000adc604083018462000909565b949350505050565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0382811682821603908082111562000b1d5762000b1d62000ae4565b5092915050565b634e487b7160e01b600052603260045260246000fd5b60006001600160a01b0380831681810362000b595762000b5962000ae4565b6001019392505050565b6001600160a01b038316815260406020820152600062000adc6040830184620008c156fe60806040526040516106fe3803806106fe83398101604081905261002291610319565b61002e82826000610035565b5050610436565b61003e8361006b565b60008251118061004b5750805b156100665761006483836100ab60201b6100291760201c565b505b505050565b610074816100d7565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606100d083836040518060600160405280602781526020016106d7602791396101a9565b9392505050565b6100ea8161022260201b6100551760201c565b6101515760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b806101887f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61023160201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6060600080856001600160a01b0316856040516101c691906103e7565b600060405180830381855af49150503d8060008114610201576040519150601f19603f3d011682016040523d82523d6000602084013e610206565b606091505b50909250905061021886838387610234565b9695505050505050565b6001600160a01b03163b151590565b90565b606083156102a357825160000361029c576001600160a01b0385163b61029c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610148565b50816102ad565b6102ad83836102b5565b949350505050565b8151156102c55781518083602001fd5b8060405162461bcd60e51b81526004016101489190610403565b634e487b7160e01b600052604160045260246000fd5b60005b838110156103105781810151838201526020016102f8565b50506000910152565b6000806040838503121561032c57600080fd5b82516001600160a01b038116811461034357600080fd5b60208401519092506001600160401b038082111561036057600080fd5b818501915085601f83011261037457600080fd5b815181811115610386576103866102df565b604051601f8201601f19908116603f011681019083821181831017156103ae576103ae6102df565b816040528281528860208487010111156103c757600080fd5b6103d88360208301602088016102f5565b80955050505050509250929050565b600082516103f98184602087016102f5565b9190910192915050565b60208152600082518060208401526104228160408501602087016102f5565b601f01601f19169190910160400192915050565b610292806104456000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b61009f565b565b606061004e838360405180606001604052806027815260200161025f602791396100c3565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e8080156100be573d6000f35b3d6000fd5b6060600080856001600160a01b0316856040516100e0919061020f565b600060405180830381855af49150503d806000811461011b576040519150601f19603f3d011682016040523d82523d6000602084013e610120565b606091505b50915091506101318683838761013b565b9695505050505050565b606083156101af5782516000036101a8576001600160a01b0385163b6101a85760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b50816101b9565b6101b983836101c1565b949350505050565b8151156101d15781518083602001fd5b8060405162461bcd60e51b815260040161019f919061022b565b60005b838110156102065781810151838201526020016101ee565b50506000910152565b600082516102218184602087016101eb565b9190910192915050565b602081526000825180602084015261024a8160408501602087016101eb565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a60a06040523060805234801561001457600080fd5b5061001d610022565b6100e1565b600054610100900460ff161561008e5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116146100df576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b608051611315610118600039600081816104af015281816105340152818161062a015281816106af015261079901526113156000f3fe6080604052600436106100f35760003560e01c806352d1902d1161008a578063c4d66de811610059578063c4d66de814610278578063c9c4bfca14610298578063d4b83992146102cc578063efe51cca146102ec57600080fd5b806352d1902d146102175780635c60da1b1461022c5780636accab8c14610241578063776d1a011461025857600080fd5b80633659cfe6116100c65780633659cfe6146101965780634162169f146101b657806341de6830146101e85780634f1ef2861461020457600080fd5b806301ffc9a7146100f8578063039a8c501461012d5780632491118d1461014f5780632ae9c60014610174575b600080fd5b34801561010457600080fd5b50610118610113366004611029565b610303565b60405190151581526020015b60405180910390f35b34801561013957600080fd5b5061014d610148366004611053565b61036f565b005b34801561015b57600080fd5b5061016661012f5481565b604051908152602001610124565b34801561018057600080fd5b5061018961047b565b6040516101249190611077565b3480156101a257600080fd5b5061014d6101b13660046110c0565b6104a5565b3480156101c257600080fd5b5060c9546001600160a01b03165b6040516001600160a01b039091168152602001610124565b3480156101f457600080fd5b50600060405161012491906110dd565b61014d61021236600461111b565b610620565b34801561022357600080fd5b5061016661078c565b34801561023857600080fd5b506101d0610851565b34801561024d57600080fd5b5061016661012d5481565b34801561026457600080fd5b5061014d6102733660046110c0565b610889565b34801561028457600080fd5b5061014d6102933660046110c0565b6108e8565b3480156102a457600080fd5b506101667f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f581565b3480156102d857600080fd5b5060fb546101d0906001600160a01b031681565b3480156102f857600080fd5b5061016661012e5481565b60006001600160e01b0319821663041de68360e41b148061033357506001600160e01b03198216621574e360e91b145b8061034e57506001600160e01b031982166352d1902d60e01b145b8061036957506301ffc9a760e01b6001600160e01b03198316145b92915050565b600054600390610100900460ff16158015610391575060005460ff8083169116105b6103f95760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805461ffff191660ff831617610100179055600261ffff8316101561042157600261012e555b60038261ffff16101561043557600361012f555b6000805461ff001916905560405160ff821681527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b61048361100b565b5060408051606081018252600181526004602082015260009181019190915290565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036105325760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b60648201526084016103f0565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661058d7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b0316146105f85760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b60648201526084016103f0565b610601816109da565b6040805160008082526020820190925261061d91839190610a17565b50565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036106ad5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b60648201526084016103f0565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166107087f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b0316146107735760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b60648201526084016103f0565b61077c826109da565b61078882826001610a17565b5050565b6000306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461082c5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016103f0565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b60006108847f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b60fb80546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d690600090a35050565b600054600390610100900460ff1615801561090a575060005460ff8083169116105b61096d5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016103f0565b6000805461ffff191660ff83161761010017905561098a82610bbc565b600161012d55600261012e55600361012f556000805461ff001916905560405160ff821681527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200161046f565b60c9547f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f590610788906001600160a01b0316303384600036610c30565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610a4f57610a4a83610cec565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610aa9575060408051601f3d908101601f19168201909252610aa6918101906111df565b60015b610b1b5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201527f6f6e206973206e6f74205555505300000000000000000000000000000000000060648201526084016103f0565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114610bb05760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f7860448201527f6961626c6555554944000000000000000000000000000000000000000000000060648201526084016103f0565b50610a4a838383610db7565b600054610100900460ff16610c275760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103f0565b61061d81610de2565b604051637ef7c88360e11b81526001600160a01b0387169063fdef910690610c6490889088908890889088906004016111f8565b602060405180830381865afa158015610c81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca5919061124c565b610ce457604051630cb6f8ed60e21b81526001600160a01b038088166004830152808716602483015285166044820152606481018490526084016103f0565b505050505050565b6001600160a01b0381163b610d695760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e74726163740000000000000000000000000000000000000060648201526084016103f0565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610dc083610e7c565b600082511180610dcd5750805b15610a4a57610ddc8383610ebc565b50505050565b600054610100900460ff16610e4d5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103f0565b60c9805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610e8581610cec565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060610ee183836040518060600160405280602781526020016112e260279139610ee8565b9392505050565b6060600080856001600160a01b031685604051610f059190611292565b600060405180830381855af49150503d8060008114610f40576040519150601f19603f3d011682016040523d82523d6000602084013e610f45565b606091505b5091509150610f5686838387610f60565b9695505050505050565b60608315610fcf578251600003610fc8576001600160a01b0385163b610fc85760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016103f0565b5081610fd9565b610fd98383610fe1565b949350505050565b815115610ff15781518083602001fd5b8060405162461bcd60e51b81526004016103f091906112ae565b60405180606001604052806003906020820280368337509192915050565b60006020828403121561103b57600080fd5b81356001600160e01b031981168114610ee157600080fd5b60006020828403121561106557600080fd5b813561ffff81168114610ee157600080fd5b60608101818360005b60038110156110a257815160ff16835260209283019290910190600101611080565b50505092915050565b6001600160a01b038116811461061d57600080fd5b6000602082840312156110d257600080fd5b8135610ee1816110ab565b60208101600383106110ff57634e487b7160e01b600052602160045260246000fd5b91905290565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561112e57600080fd5b8235611139816110ab565b9150602083013567ffffffffffffffff8082111561115657600080fd5b818501915085601f83011261116a57600080fd5b81358181111561117c5761117c611105565b604051601f8201601f19908116603f011681019083821181831017156111a4576111a4611105565b816040528281528860208487010111156111bd57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6000602082840312156111f157600080fd5b5051919050565b60006001600160a01b03808816835280871660208401525084604083015260806060830152826080830152828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b60006020828403121561125e57600080fd5b81518015158114610ee157600080fd5b60005b83811015611289578181015183820152602001611271565b50506000910152565b600082516112a481846020870161126e565b9190910192915050565b60208152600082518060208401526112cd81604085016020870161126e565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a","opcodes":"PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x1D SWAP1 PUSH2 0x4B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH2 0x39 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x80 MSTORE PUSH2 0x58 JUMP JUMPDEST PUSH2 0x142D DUP1 PUSH2 0x130B DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH2 0x1292 PUSH2 0x79 PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH1 0xD2 ADD MSTORE PUSH2 0x37E ADD MSTORE PUSH2 0x1292 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH3 0x7B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9CB0A124 GT PUSH3 0x56 JUMPI DUP1 PUSH4 0x9CB0A124 EQ PUSH3 0xFD JUMPI DUP1 PUSH4 0xA8A9C29E EQ PUSH3 0x123 JUMPI DUP1 PUSH4 0xF10832F1 EQ PUSH3 0x14A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH3 0x80 JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH3 0xAC JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH3 0xC5 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x97 PUSH3 0x91 CALLDATASIZE PUSH1 0x4 PUSH3 0x6A3 JUMP JUMPDEST PUSH3 0x171 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0xB6 PUSH3 0x1C4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0xA3 SWAP2 SWAP1 PUSH3 0x6CF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH3 0xA3 JUMP JUMPDEST PUSH3 0x114 PUSH3 0x10E CALLDATASIZE PUSH1 0x4 PUSH3 0x735 JUMP JUMPDEST PUSH3 0x1F0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0xA3 SWAP2 SWAP1 PUSH3 0x806 JUMP JUMPDEST PUSH3 0x13A PUSH3 0x134 CALLDATASIZE PUSH1 0x4 PUSH3 0x853 JUMP JUMPDEST PUSH3 0x209 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0xA3 SWAP3 SWAP2 SWAP1 PUSH3 0x9A2 JUMP JUMPDEST PUSH3 0x161 PUSH3 0x15B CALLDATASIZE PUSH1 0x4 PUSH3 0x9EA JUMP JUMPDEST PUSH3 0x30F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0xA3 SWAP3 SWAP2 SWAP1 PUSH3 0xAB8 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x99718B5 PUSH1 0xE4 SHL EQ DUP1 PUSH3 0x1A2 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH3 0x1BE JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH3 0x1CE PUSH3 0x677 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH3 0x202 PUSH1 0x0 PUSH1 0x3 PUSH1 0x1 PUSH3 0x3DE JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH3 0x229 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST DUP4 PUSH2 0xFFFF AND PUSH1 0x1 SUB PUSH3 0x298 JUMPI PUSH3 0x242 PUSH1 0x3 PUSH3 0x577 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x40 MLOAD PUSH2 0xFFFF DUP6 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH3 0x39A8C5 PUSH1 0xE4 SHL OR SWAP1 MSTORE SWAP2 POP PUSH3 0x292 PUSH2 0xFFFF DUP6 AND PUSH1 0x3 PUSH1 0x0 PUSH3 0x3DE JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE JUMPDEST DUP4 PUSH2 0xFFFF AND PUSH1 0x2 SUB PUSH3 0x307 JUMPI PUSH3 0x2B1 PUSH1 0x3 PUSH3 0x577 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x40 MLOAD PUSH2 0xFFFF DUP6 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH3 0x39A8C5 PUSH1 0xE4 SHL OR SWAP1 MSTORE SWAP2 POP PUSH3 0x301 PUSH2 0xFFFF DUP6 AND PUSH1 0x3 PUSH1 0x0 PUSH3 0x3DE JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE JUMPDEST SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x32F PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 PUSH1 0x44 ADD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x189ACDBD PUSH1 0xE3 SHL OR SWAP1 MSTORE SWAP1 POP PUSH3 0x3B0 DUP2 PUSH3 0x3A0 PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH3 0x63B JUMP JUMPDEST SWAP3 POP PUSH3 0x3BE PUSH1 0x3 PUSH3 0x577 JUMP JUMPDEST DUP3 MSTORE PUSH3 0x3CF PUSH1 0x0 PUSH1 0x3 DUP2 PUSH3 0x3DE JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP SWAP1 SWAP4 SWAP1 SWAP3 POP SWAP1 POP JUMP JUMPDEST PUSH1 0x60 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH3 0x414 JUMPI PUSH1 0x40 MLOAD PUSH4 0x3A4013CD PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0x420 DUP5 DUP5 PUSH3 0xAFA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x444 JUMPI PUSH3 0x444 PUSH3 0x9D4 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH3 0x49F JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD DUP3 SWAP1 MSTORE SWAP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 DUP3 ADD MSTORE DUP3 MSTORE PUSH1 0x0 NOT SWAP1 SWAP3 ADD SWAP2 ADD DUP2 PUSH3 0x463 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP DUP4 JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT ISZERO PUSH3 0x56F JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 DUP5 PUSH1 0x2 DUP2 GT ISZERO PUSH3 0x4DF JUMPI PUSH3 0x4DF PUSH3 0x789 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x60 DUP3 ADD MSTORE PUSH32 0xA280EEC51AB8E1BC4B6B0C1B7F1BDE785761B787A49DB404E3E9338ED9B016EF PUSH1 0x80 SWAP1 SWAP2 ADD MSTORE DUP3 PUSH3 0x532 DUP8 DUP5 PUSH3 0xAFA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MLOAD DUP2 LT PUSH3 0x54E JUMPI PUSH3 0x54E PUSH3 0xB24 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP DUP1 DUP1 PUSH3 0x566 SWAP1 PUSH3 0xB3A JUMP JUMPDEST SWAP2 POP POP PUSH3 0x4A4 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x59E JUMPI PUSH3 0x59E PUSH3 0x9D4 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH3 0x5C8 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT ISZERO PUSH3 0x635 JUMPI DUP1 DUP3 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MLOAD DUP2 LT PUSH3 0x608 JUMPI PUSH3 0x608 PUSH3 0xB24 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE DUP1 PUSH3 0x62C DUP2 PUSH3 0xB3A JUMP JUMPDEST SWAP2 POP POP PUSH3 0x5CE JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH3 0x64D SWAP1 PUSH3 0x695 JUMP JUMPDEST PUSH3 0x65A SWAP3 SWAP2 SWAP1 PUSH3 0xB63 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH3 0x56F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x6FE DUP1 PUSH3 0xB88 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x6B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH3 0x202 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH3 0x6FC JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH3 0x6D8 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x71D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x635 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x749 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x754 DUP4 PUSH3 0x705 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x771 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x77F DUP6 DUP3 DUP7 ADD PUSH3 0x722 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP2 MLOAD PUSH1 0x3 DUP2 LT PUSH3 0x7C2 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP4 MSTORE POP PUSH1 0x20 DUP2 DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP1 DUP4 ADD MLOAD DUP3 AND SWAP1 DUP5 ADD MSTORE PUSH1 0x60 DUP1 DUP4 ADD MLOAD SWAP1 SWAP2 AND SWAP1 DUP4 ADD MSTORE PUSH1 0x80 SWAP1 DUP2 ADD MLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x847 JUMPI PUSH3 0x838 DUP4 DUP6 MLOAD PUSH3 0x79F JUMP JUMPDEST SWAP4 DUP6 ADD SWAP4 SWAP3 POP PUSH1 0x1 ADD PUSH3 0x822 JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH3 0x869 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x874 DUP5 PUSH3 0x705 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH3 0x88C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x8A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x8B7 DUP7 DUP3 DUP8 ADD PUSH3 0x722 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x8E9 JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD DUP3 ADD MSTORE ADD PUSH3 0x8CB JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x20 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x20 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x40 DUP1 DUP5 MSTORE DUP2 MLOAD SWAP1 DUP5 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x20 SWAP2 SWAP1 DUP3 ADD SWAP1 PUSH1 0x60 DUP7 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x950 JUMPI DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH3 0x929 JUMP JUMPDEST POP POP DUP5 DUP4 ADD MLOAD DUP7 DUP3 SUB DUP8 DUP6 ADD MSTORE DUP1 MLOAD DUP1 DUP4 MSTORE SWAP1 DUP5 ADD SWAP3 POP PUSH1 0x0 SWAP2 DUP5 ADD SWAP1 JUMPDEST DUP1 DUP4 LT ISZERO PUSH3 0x997 JUMPI PUSH3 0x984 DUP3 DUP6 MLOAD PUSH3 0x79F JUMP JUMPDEST SWAP2 POP DUP5 DUP5 ADD SWAP4 POP PUSH1 0x1 DUP4 ADD SWAP3 POP PUSH3 0x96E JUMP JUMPDEST POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 PUSH3 0x9B7 PUSH1 0x40 DUP4 ADD DUP6 PUSH3 0x8C1 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 ADD MSTORE PUSH3 0x9CB DUP2 DUP6 PUSH3 0x909 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x9FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0xA09 DUP4 PUSH3 0x705 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH3 0xA27 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH3 0xA3C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH3 0xA51 JUMPI PUSH3 0xA51 PUSH3 0x9D4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH3 0xA7C JUMPI PUSH3 0xA7C PUSH3 0x9D4 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH3 0xA96 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH3 0xADC PUSH1 0x40 DUP4 ADD DUP5 PUSH3 0x909 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND DUP3 DUP3 AND SUB SWAP1 DUP1 DUP3 GT ISZERO PUSH3 0xB1D JUMPI PUSH3 0xB1D PUSH3 0xAE4 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND DUP2 DUP2 SUB PUSH3 0xB59 JUMPI PUSH3 0xB59 PUSH3 0xAE4 JUMP JUMPDEST PUSH1 0x1 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH3 0xADC PUSH1 0x40 DUP4 ADD DUP5 PUSH3 0x8C1 JUMP INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH2 0x6FE CODESIZE SUB DUP1 PUSH2 0x6FE DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x22 SWAP2 PUSH2 0x319 JUMP JUMPDEST PUSH2 0x2E DUP3 DUP3 PUSH1 0x0 PUSH2 0x35 JUMP JUMPDEST POP POP PUSH2 0x436 JUMP JUMPDEST PUSH2 0x3E DUP4 PUSH2 0x6B JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD GT DUP1 PUSH2 0x4B JUMPI POP DUP1 JUMPDEST ISZERO PUSH2 0x66 JUMPI PUSH2 0x64 DUP4 DUP4 PUSH2 0xAB PUSH1 0x20 SHL PUSH2 0x29 OR PUSH1 0x20 SHR JUMP JUMPDEST POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x74 DUP2 PUSH2 0xD7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xD0 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x6D7 PUSH1 0x27 SWAP2 CODECOPY PUSH2 0x1A9 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xEA DUP2 PUSH2 0x222 PUSH1 0x20 SHL PUSH2 0x55 OR PUSH1 0x20 SHR JUMP JUMPDEST PUSH2 0x151 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313936373A206E657720696D706C656D656E746174696F6E206973206E PUSH1 0x44 DUP3 ADD MSTORE PUSH13 0x1BDD08184818DBDB9D1C9858DD PUSH1 0x9A SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH2 0x188 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC PUSH1 0x0 SHL PUSH2 0x231 PUSH1 0x20 SHL PUSH2 0x64 OR PUSH1 0x20 SHR JUMP JUMPDEST DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0x1C6 SWAP2 SWAP1 PUSH2 0x3E7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x201 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x206 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x218 DUP7 DUP4 DUP4 DUP8 PUSH2 0x234 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x2A3 JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0x29C JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0x29C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x148 JUMP JUMPDEST POP DUP2 PUSH2 0x2AD JUMP JUMPDEST PUSH2 0x2AD DUP4 DUP4 PUSH2 0x2B5 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x2C5 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x148 SWAP2 SWAP1 PUSH2 0x403 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x310 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2F8 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x32C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x343 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x360 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x374 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x386 JUMPI PUSH2 0x386 PUSH2 0x2DF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x3AE JUMPI PUSH2 0x3AE PUSH2 0x2DF JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x3C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3D8 DUP4 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x2F5 JUMP JUMPDEST DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x3F9 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x2F5 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x422 DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x2F5 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x292 DUP1 PUSH2 0x445 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLDATASIZE PUSH2 0x13 JUMPI PUSH2 0x11 PUSH2 0x17 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x11 JUMPDEST PUSH2 0x27 PUSH2 0x22 PUSH2 0x67 JUMP JUMPDEST PUSH2 0x9F JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x60 PUSH2 0x4E DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x25F PUSH1 0x27 SWAP2 CODECOPY PUSH2 0xC3 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9A PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 DUP1 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE PUSH1 0x0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH2 0xBE JUMPI RETURNDATASIZE PUSH1 0x0 RETURN JUMPDEST RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0xE0 SWAP2 SWAP1 PUSH2 0x20F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x11B JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x120 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x131 DUP7 DUP4 DUP4 DUP8 PUSH2 0x13B JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x1AF JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0x1A8 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0x1A8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP DUP2 PUSH2 0x1B9 JUMP JUMPDEST PUSH2 0x1B9 DUP4 DUP4 PUSH2 0x1C1 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x1D1 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x19F SWAP2 SWAP1 PUSH2 0x22B JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x206 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1EE JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x221 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x1EB JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x24A DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x1EB JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A164 PUSH20 0x6F6C6343000811000A416464726573733A206C6F PUSH24 0x2D6C6576656C2064656C65676174652063616C6C20666169 PUSH13 0x6564A164736F6C634300081100 EXP PUSH1 0xA0 PUSH1 0x40 MSTORE ADDRESS PUSH1 0x80 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x14 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1D PUSH2 0x22 JUMP JUMPDEST PUSH2 0xE1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x8E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x27 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320696E697469 PUSH1 0x44 DUP3 ADD MSTORE PUSH7 0x616C697A696E67 PUSH1 0xC8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xFF SWAP1 DUP2 AND EQ PUSH2 0xDF JUMPI PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH2 0x1315 PUSH2 0x118 PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH2 0x4AF ADD MSTORE DUP2 DUP2 PUSH2 0x534 ADD MSTORE DUP2 DUP2 PUSH2 0x62A ADD MSTORE DUP2 DUP2 PUSH2 0x6AF ADD MSTORE PUSH2 0x799 ADD MSTORE PUSH2 0x1315 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xF3 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x52D1902D GT PUSH2 0x8A JUMPI DUP1 PUSH4 0xC4D66DE8 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0x278 JUMPI DUP1 PUSH4 0xC9C4BFCA EQ PUSH2 0x298 JUMPI DUP1 PUSH4 0xD4B83992 EQ PUSH2 0x2CC JUMPI DUP1 PUSH4 0xEFE51CCA EQ PUSH2 0x2EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x52D1902D EQ PUSH2 0x217 JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0x22C JUMPI DUP1 PUSH4 0x6ACCAB8C EQ PUSH2 0x241 JUMPI DUP1 PUSH4 0x776D1A01 EQ PUSH2 0x258 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x3659CFE6 GT PUSH2 0xC6 JUMPI DUP1 PUSH4 0x3659CFE6 EQ PUSH2 0x196 JUMPI DUP1 PUSH4 0x4162169F EQ PUSH2 0x1B6 JUMPI DUP1 PUSH4 0x41DE6830 EQ PUSH2 0x1E8 JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x204 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xF8 JUMPI DUP1 PUSH4 0x39A8C50 EQ PUSH2 0x12D JUMPI DUP1 PUSH4 0x2491118D EQ PUSH2 0x14F JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0x174 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x104 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x118 PUSH2 0x113 CALLDATASIZE PUSH1 0x4 PUSH2 0x1029 JUMP JUMPDEST PUSH2 0x303 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x139 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x14D PUSH2 0x148 CALLDATASIZE PUSH1 0x4 PUSH2 0x1053 JUMP JUMPDEST PUSH2 0x36F JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x15B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x166 PUSH2 0x12F SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x124 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x180 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x189 PUSH2 0x47B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x124 SWAP2 SWAP1 PUSH2 0x1077 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x14D PUSH2 0x1B1 CALLDATASIZE PUSH1 0x4 PUSH2 0x10C0 JUMP JUMPDEST PUSH2 0x4A5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1C2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xC9 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x124 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 PUSH1 0x40 MLOAD PUSH2 0x124 SWAP2 SWAP1 PUSH2 0x10DD JUMP JUMPDEST PUSH2 0x14D PUSH2 0x212 CALLDATASIZE PUSH1 0x4 PUSH2 0x111B JUMP JUMPDEST PUSH2 0x620 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x223 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x166 PUSH2 0x78C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x238 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1D0 PUSH2 0x851 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x24D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x166 PUSH2 0x12D SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x264 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x14D PUSH2 0x273 CALLDATASIZE PUSH1 0x4 PUSH2 0x10C0 JUMP JUMPDEST PUSH2 0x889 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x284 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x14D PUSH2 0x293 CALLDATASIZE PUSH1 0x4 PUSH2 0x10C0 JUMP JUMPDEST PUSH2 0x8E8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x166 PUSH32 0x821B6E3A557148015A918C89E5D092E878A69854A2D1A410635F771BD5A8A3F5 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xFB SLOAD PUSH2 0x1D0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x166 PUSH2 0x12E SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x41DE683 PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x333 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x34E JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x52D1902D PUSH1 0xE0 SHL EQ JUMPDEST DUP1 PUSH2 0x369 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x3 SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH2 0x391 JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF DUP1 DUP4 AND SWAP2 AND LT JUMPDEST PUSH2 0x3F9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x44 DUP3 ADD MSTORE PUSH14 0x191E481A5B9A5D1A585B1A5E9959 PUSH1 0x92 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH2 0xFFFF NOT AND PUSH1 0xFF DUP4 AND OR PUSH2 0x100 OR SWAP1 SSTORE PUSH1 0x2 PUSH2 0xFFFF DUP4 AND LT ISZERO PUSH2 0x421 JUMPI PUSH1 0x2 PUSH2 0x12E SSTORE JUMPDEST PUSH1 0x3 DUP3 PUSH2 0xFFFF AND LT ISZERO PUSH2 0x435 JUMPI PUSH1 0x3 PUSH2 0x12F SSTORE JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH1 0xFF DUP3 AND DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH2 0x483 PUSH2 0x100B JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x532 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x19195B1959D85D1958D85B1B PUSH1 0xA2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3F0 JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x58D PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x5F8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x6163746976652070726F7879 PUSH1 0xA0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3F0 JUMP JUMPDEST PUSH2 0x601 DUP2 PUSH2 0x9DA JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x61D SWAP2 DUP4 SWAP2 SWAP1 PUSH2 0xA17 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x6AD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x19195B1959D85D1958D85B1B PUSH1 0xA2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3F0 JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x708 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x773 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x6163746976652070726F7879 PUSH1 0xA0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3F0 JUMP JUMPDEST PUSH2 0x77C DUP3 PUSH2 0x9DA JUMP JUMPDEST PUSH2 0x788 DUP3 DUP3 PUSH1 0x1 PUSH2 0xA17 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x82C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x38 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x555550535570677261646561626C653A206D757374206E6F742062652063616C PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6C6564207468726F7567682064656C656761746563616C6C0000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3F0 JUMP JUMPDEST POP PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x884 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0xFB DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP2 SWAP1 DUP3 SWAP1 PUSH32 0x90CC2F570A6EB594B1580EA3E41247D2D73A55281889E86BD4EC2FC29C7E62D6 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x3 SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH2 0x90A JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF DUP1 DUP4 AND SWAP2 AND LT JUMPDEST PUSH2 0x96D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x44 DUP3 ADD MSTORE PUSH14 0x191E481A5B9A5D1A585B1A5E9959 PUSH1 0x92 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3F0 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH2 0xFFFF NOT AND PUSH1 0xFF DUP4 AND OR PUSH2 0x100 OR SWAP1 SSTORE PUSH2 0x98A DUP3 PUSH2 0xBBC JUMP JUMPDEST PUSH1 0x1 PUSH2 0x12D SSTORE PUSH1 0x2 PUSH2 0x12E SSTORE PUSH1 0x3 PUSH2 0x12F SSTORE PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH1 0xFF DUP3 AND DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH2 0x46F JUMP JUMPDEST PUSH1 0xC9 SLOAD PUSH32 0x821B6E3A557148015A918C89E5D092E878A69854A2D1A410635F771BD5A8A3F5 SWAP1 PUSH2 0x788 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ADDRESS CALLER DUP5 PUSH1 0x0 CALLDATASIZE PUSH2 0xC30 JUMP JUMPDEST PUSH32 0x4910FDFA16FED3260ED0E7147F7CC6DA11A60208B5B9406D12A635614FFD9143 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0xA4F JUMPI PUSH2 0xA4A DUP4 PUSH2 0xCEC JUMP JUMPDEST POP POP POP JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x52D1902D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0xAA9 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0xAA6 SWAP2 DUP2 ADD SWAP1 PUSH2 0x11DF JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0xB1B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524331393637557067726164653A206E657720696D706C656D656E74617469 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F6E206973206E6F742055555053000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3F0 JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC DUP2 EQ PUSH2 0xBB0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524331393637557067726164653A20756E737570706F727465642070726F78 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6961626C65555549440000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3F0 JUMP JUMPDEST POP PUSH2 0xA4A DUP4 DUP4 DUP4 PUSH2 0xDB7 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0xC27 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3F0 JUMP JUMPDEST PUSH2 0x61D DUP2 PUSH2 0xDE2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x7EF7C883 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0xFDEF9106 SWAP1 PUSH2 0xC64 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x11F8 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC81 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xCA5 SWAP2 SWAP1 PUSH2 0x124C JUMP JUMPDEST PUSH2 0xCE4 JUMPI PUSH1 0x40 MLOAD PUSH4 0xCB6F8ED PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND PUSH1 0x4 DUP4 ADD MSTORE DUP1 DUP8 AND PUSH1 0x24 DUP4 ADD MSTORE DUP6 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x84 ADD PUSH2 0x3F0 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND EXTCODESIZE PUSH2 0xD69 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313936373A206E657720696D706C656D656E746174696F6E206973206E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F74206120636F6E747261637400000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3F0 JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xDC0 DUP4 PUSH2 0xE7C JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD GT DUP1 PUSH2 0xDCD JUMPI POP DUP1 JUMPDEST ISZERO PUSH2 0xA4A JUMPI PUSH2 0xDDC DUP4 DUP4 PUSH2 0xEBC JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0xE4D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3F0 JUMP JUMPDEST PUSH1 0xC9 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xE85 DUP2 PUSH2 0xCEC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xEE1 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x12E2 PUSH1 0x27 SWAP2 CODECOPY PUSH2 0xEE8 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0xF05 SWAP2 SWAP1 PUSH2 0x1292 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xF40 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xF45 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0xF56 DUP7 DUP4 DUP4 DUP8 PUSH2 0xF60 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0xFCF JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0xFC8 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0xFC8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3F0 JUMP JUMPDEST POP DUP2 PUSH2 0xFD9 JUMP JUMPDEST PUSH2 0xFD9 DUP4 DUP4 PUSH2 0xFE1 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0xFF1 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3F0 SWAP2 SWAP1 PUSH2 0x12AE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x103B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0xEE1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1065 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH2 0xEE1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0x10A2 JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x1080 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x61D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x10D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xEE1 DUP2 PUSH2 0x10AB JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH1 0x3 DUP4 LT PUSH2 0x10FF JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 SWAP1 MSTORE SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x112E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x1139 DUP2 PUSH2 0x10AB JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1156 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x116A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x117C JUMPI PUSH2 0x117C PUSH2 0x1105 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x11A4 JUMPI PUSH2 0x11A4 PUSH2 0x1105 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x11BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x11F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND DUP4 MSTORE DUP1 DUP8 AND PUSH1 0x20 DUP5 ADD MSTORE POP DUP5 PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x80 PUSH1 0x60 DUP4 ADD MSTORE DUP3 PUSH1 0x80 DUP4 ADD MSTORE DUP3 DUP5 PUSH1 0xA0 DUP5 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0xA0 DUP5 DUP5 ADD ADD MSTORE PUSH1 0xA0 PUSH1 0x1F NOT PUSH1 0x1F DUP6 ADD AND DUP4 ADD ADD SWAP1 POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x125E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xEE1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1289 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1271 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x12A4 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x126E JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x12CD DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x126E JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A164 PUSH20 0x6F6C6343000811000A0000000000000000000000 ","sourceMap":"4631:2543:32:-:0;;;4788:87;;;;;;;;;;4833:37;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1605:32:46;;;4631:2543:32;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@deployUUPSProxy_5072":{"entryPoint":1595,"id":5072,"parameterSlots":2,"returnSlots":1},"@implementation_5033":{"entryPoint":null,"id":5033,"parameterSlots":0,"returnSlots":1},"@mockHelpers_3108":{"entryPoint":1399,"id":3108,"parameterSlots":1,"returnSlots":1},"@mockPermissions_3069":{"entryPoint":990,"id":3069,"parameterSlots":3,"returnSlots":1},"@prepareInstallation_3658":{"entryPoint":783,"id":3658,"parameterSlots":2,"returnSlots":2},"@prepareUninstallation_3778":{"entryPoint":496,"id":3778,"parameterSlots":2,"returnSlots":1},"@prepareUpdate_3750":{"entryPoint":521,"id":3750,"parameterSlots":3,"returnSlots":2},"@protocolVersion_5135":{"entryPoint":452,"id":5135,"parameterSlots":0,"returnSlots":1},"@supportsInterface_2374":{"entryPoint":null,"id":2374,"parameterSlots":1,"returnSlots":1},"@supportsInterface_5024":{"entryPoint":369,"id":5024,"parameterSlots":1,"returnSlots":1},"abi_decode_address":{"entryPoint":1797,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_struct_SetupPayload_calldata":{"entryPoint":1826,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_bytes_memory_ptr":{"entryPoint":2538,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_struct$_SetupPayload_$4810_calldata_ptr":{"entryPoint":1845,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_uint16t_struct$_SetupPayload_$4810_calldata_ptr":{"entryPoint":2131,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_bytes4":{"entryPoint":1699,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encodeUpdatedPos_struct_MultiTargetPermission":{"entryPoint":1951,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_bytes":{"entryPoint":2241,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_struct_PreparedSetupData":{"entryPoint":2313,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address_t_bytes_memory_ptr__to_t_address_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":2915,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_address_t_struct$_PreparedSetupData_$4802_memory_ptr__to_t_address_t_struct$_PreparedSetupData_$4802_memory_ptr__fromStack_reversed":{"entryPoint":2744,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr__fromStack_reversed":{"entryPoint":2054,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed":{"entryPoint":1743,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$4802_memory_ptr__to_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$4802_memory_ptr__fromStack_reversed":{"entryPoint":2466,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_contract$_IDAO_$2538__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_uint16__to_t_uint16__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_t_uint160":{"entryPoint":2810,"id":null,"parameterSlots":2,"returnSlots":1},"increment_t_uint160":{"entryPoint":2874,"id":null,"parameterSlots":1,"returnSlots":1},"panic_error_0x11":{"entryPoint":2788,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x21":{"entryPoint":1929,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x32":{"entryPoint":2852,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":2516,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:9300:50","statements":[{"nodeType":"YulBlock","src":"6:3:50","statements":[]},{"body":{"nodeType":"YulBlock","src":"83:217:50","statements":[{"body":{"nodeType":"YulBlock","src":"129:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"138:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"141:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"131:6:50"},"nodeType":"YulFunctionCall","src":"131:12:50"},"nodeType":"YulExpressionStatement","src":"131:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"104:7:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"113:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"100:3:50"},"nodeType":"YulFunctionCall","src":"100:23:50"},{"kind":"number","nodeType":"YulLiteral","src":"125:2:50","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"96:3:50"},"nodeType":"YulFunctionCall","src":"96:32:50"},"nodeType":"YulIf","src":"93:52:50"},{"nodeType":"YulVariableDeclaration","src":"154:36:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"180:9:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"167:12:50"},"nodeType":"YulFunctionCall","src":"167:23:50"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"158:5:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"254:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"263:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"266:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"256:6:50"},"nodeType":"YulFunctionCall","src":"256:12:50"},"nodeType":"YulExpressionStatement","src":"256:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"212:5:50"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"223:5:50"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"234:3:50","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"239:10:50","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"230:3:50"},"nodeType":"YulFunctionCall","src":"230:20:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"219:3:50"},"nodeType":"YulFunctionCall","src":"219:32:50"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"209:2:50"},"nodeType":"YulFunctionCall","src":"209:43:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"202:6:50"},"nodeType":"YulFunctionCall","src":"202:51:50"},"nodeType":"YulIf","src":"199:71:50"},{"nodeType":"YulAssignment","src":"279:15:50","value":{"name":"value","nodeType":"YulIdentifier","src":"289:5:50"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"279:6:50"}]}]},"name":"abi_decode_tuple_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"49:9:50","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"60:7:50","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"72:6:50","type":""}],"src":"14:286:50"},{"body":{"nodeType":"YulBlock","src":"400:92:50","statements":[{"nodeType":"YulAssignment","src":"410:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"422:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"433:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"418:3:50"},"nodeType":"YulFunctionCall","src":"418:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"410:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"452:9:50"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"477:6:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"470:6:50"},"nodeType":"YulFunctionCall","src":"470:14:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"463:6:50"},"nodeType":"YulFunctionCall","src":"463:22:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"445:6:50"},"nodeType":"YulFunctionCall","src":"445:41:50"},"nodeType":"YulExpressionStatement","src":"445:41:50"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"369:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"380:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"391:4:50","type":""}],"src":"305:187:50"},{"body":{"nodeType":"YulBlock","src":"640:358:50","statements":[{"nodeType":"YulAssignment","src":"650:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"662:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"673:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"658:3:50"},"nodeType":"YulFunctionCall","src":"658:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"650:4:50"}]},{"nodeType":"YulVariableDeclaration","src":"685:20:50","value":{"name":"headStart","nodeType":"YulIdentifier","src":"696:9:50"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"689:3:50","type":""}]},{"nodeType":"YulAssignment","src":"714:16:50","value":{"name":"headStart","nodeType":"YulIdentifier","src":"721:9:50"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"714:3:50"}]},{"nodeType":"YulVariableDeclaration","src":"739:20:50","value":{"name":"value0","nodeType":"YulIdentifier","src":"753:6:50"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"743:6:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"768:10:50","value":{"kind":"number","nodeType":"YulLiteral","src":"777:1:50","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"772:1:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"834:158:50","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"855:3:50"},{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"870:6:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"864:5:50"},"nodeType":"YulFunctionCall","src":"864:13:50"},{"kind":"number","nodeType":"YulLiteral","src":"879:4:50","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"860:3:50"},"nodeType":"YulFunctionCall","src":"860:24:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"848:6:50"},"nodeType":"YulFunctionCall","src":"848:37:50"},"nodeType":"YulExpressionStatement","src":"848:37:50"},{"nodeType":"YulVariableDeclaration","src":"898:14:50","value":{"kind":"number","nodeType":"YulLiteral","src":"908:4:50","type":"","value":"0x20"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"902:2:50","type":""}]},{"nodeType":"YulAssignment","src":"925:19:50","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"936:3:50"},{"name":"_1","nodeType":"YulIdentifier","src":"941:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"932:3:50"},"nodeType":"YulFunctionCall","src":"932:12:50"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"925:3:50"}]},{"nodeType":"YulAssignment","src":"957:25:50","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"971:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"979:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"967:3:50"},"nodeType":"YulFunctionCall","src":"967:15:50"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"957:6:50"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"798:1:50"},{"kind":"number","nodeType":"YulLiteral","src":"801:4:50","type":"","value":"0x03"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"795:2:50"},"nodeType":"YulFunctionCall","src":"795:11:50"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"807:18:50","statements":[{"nodeType":"YulAssignment","src":"809:14:50","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"818:1:50"},{"kind":"number","nodeType":"YulLiteral","src":"821:1:50","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"814:3:50"},"nodeType":"YulFunctionCall","src":"814:9:50"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"809:1:50"}]}]},"pre":{"nodeType":"YulBlock","src":"791:3:50","statements":[]},"src":"787:205:50"}]},"name":"abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"609:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"620:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"631:4:50","type":""}],"src":"497:501:50"},{"body":{"nodeType":"YulBlock","src":"1104:125:50","statements":[{"nodeType":"YulAssignment","src":"1114:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1126:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"1137:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1122:3:50"},"nodeType":"YulFunctionCall","src":"1122:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1114:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1156:9:50"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1171:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"1179:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1167:3:50"},"nodeType":"YulFunctionCall","src":"1167:55:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1149:6:50"},"nodeType":"YulFunctionCall","src":"1149:74:50"},"nodeType":"YulExpressionStatement","src":"1149:74:50"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1073:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1084:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1095:4:50","type":""}],"src":"1003:226:50"},{"body":{"nodeType":"YulBlock","src":"1283:147:50","statements":[{"nodeType":"YulAssignment","src":"1293:29:50","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1315:6:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1302:12:50"},"nodeType":"YulFunctionCall","src":"1302:20:50"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"1293:5:50"}]},{"body":{"nodeType":"YulBlock","src":"1408:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1417:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1420:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1410:6:50"},"nodeType":"YulFunctionCall","src":"1410:12:50"},"nodeType":"YulExpressionStatement","src":"1410:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1344:5:50"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1355:5:50"},{"kind":"number","nodeType":"YulLiteral","src":"1362:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1351:3:50"},"nodeType":"YulFunctionCall","src":"1351:54:50"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1341:2:50"},"nodeType":"YulFunctionCall","src":"1341:65:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1334:6:50"},"nodeType":"YulFunctionCall","src":"1334:73:50"},"nodeType":"YulIf","src":"1331:93:50"}]},"name":"abi_decode_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"1262:6:50","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"1273:5:50","type":""}],"src":"1234:196:50"},{"body":{"nodeType":"YulBlock","src":"1510:85:50","statements":[{"body":{"nodeType":"YulBlock","src":"1549:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1558:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1561:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1551:6:50"},"nodeType":"YulFunctionCall","src":"1551:12:50"},"nodeType":"YulExpressionStatement","src":"1551:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"end","nodeType":"YulIdentifier","src":"1531:3:50"},{"name":"offset","nodeType":"YulIdentifier","src":"1536:6:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1527:3:50"},"nodeType":"YulFunctionCall","src":"1527:16:50"},{"kind":"number","nodeType":"YulLiteral","src":"1545:2:50","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1523:3:50"},"nodeType":"YulFunctionCall","src":"1523:25:50"},"nodeType":"YulIf","src":"1520:45:50"},{"nodeType":"YulAssignment","src":"1574:15:50","value":{"name":"offset","nodeType":"YulIdentifier","src":"1583:6:50"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"1574:5:50"}]}]},"name":"abi_decode_struct_SetupPayload_calldata","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"1484:6:50","type":""},{"name":"end","nodeType":"YulTypedName","src":"1492:3:50","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"1500:5:50","type":""}],"src":"1435:160:50"},{"body":{"nodeType":"YulBlock","src":"1719:321:50","statements":[{"body":{"nodeType":"YulBlock","src":"1765:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1774:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1777:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1767:6:50"},"nodeType":"YulFunctionCall","src":"1767:12:50"},"nodeType":"YulExpressionStatement","src":"1767:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1740:7:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"1749:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1736:3:50"},"nodeType":"YulFunctionCall","src":"1736:23:50"},{"kind":"number","nodeType":"YulLiteral","src":"1761:2:50","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1732:3:50"},"nodeType":"YulFunctionCall","src":"1732:32:50"},"nodeType":"YulIf","src":"1729:52:50"},{"nodeType":"YulAssignment","src":"1790:39:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1819:9:50"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"1800:18:50"},"nodeType":"YulFunctionCall","src":"1800:29:50"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1790:6:50"}]},{"nodeType":"YulVariableDeclaration","src":"1838:46:50","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1869:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"1880:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1865:3:50"},"nodeType":"YulFunctionCall","src":"1865:18:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1852:12:50"},"nodeType":"YulFunctionCall","src":"1852:32:50"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1842:6:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"1927:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1936:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1939:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1929:6:50"},"nodeType":"YulFunctionCall","src":"1929:12:50"},"nodeType":"YulExpressionStatement","src":"1929:12:50"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1899:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"1907:18:50","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1896:2:50"},"nodeType":"YulFunctionCall","src":"1896:30:50"},"nodeType":"YulIf","src":"1893:50:50"},{"nodeType":"YulAssignment","src":"1952:82:50","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2006:9:50"},{"name":"offset","nodeType":"YulIdentifier","src":"2017:6:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2002:3:50"},"nodeType":"YulFunctionCall","src":"2002:22:50"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2026:7:50"}],"functionName":{"name":"abi_decode_struct_SetupPayload_calldata","nodeType":"YulIdentifier","src":"1962:39:50"},"nodeType":"YulFunctionCall","src":"1962:72:50"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1952:6:50"}]}]},"name":"abi_decode_tuple_t_addresst_struct$_SetupPayload_$4810_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1677:9:50","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1688:7:50","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1700:6:50","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1708:6:50","type":""}],"src":"1600:440:50"},{"body":{"nodeType":"YulBlock","src":"2077:95:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2094:1:50","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2101:3:50","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"2106:10:50","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2097:3:50"},"nodeType":"YulFunctionCall","src":"2097:20:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2087:6:50"},"nodeType":"YulFunctionCall","src":"2087:31:50"},"nodeType":"YulExpressionStatement","src":"2087:31:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2134:1:50","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"2137:4:50","type":"","value":"0x21"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2127:6:50"},"nodeType":"YulFunctionCall","src":"2127:15:50"},"nodeType":"YulExpressionStatement","src":"2127:15:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2158:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2161:4:50","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2151:6:50"},"nodeType":"YulFunctionCall","src":"2151:15:50"},"nodeType":"YulExpressionStatement","src":"2151:15:50"}]},"name":"panic_error_0x21","nodeType":"YulFunctionDefinition","src":"2045:127:50"},{"body":{"nodeType":"YulBlock","src":"2267:606:50","statements":[{"nodeType":"YulVariableDeclaration","src":"2277:23:50","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2293:6:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2287:5:50"},"nodeType":"YulFunctionCall","src":"2287:13:50"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"2281:2:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"2338:111:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2359:1:50","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2366:3:50","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"2371:10:50","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2362:3:50"},"nodeType":"YulFunctionCall","src":"2362:20:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2352:6:50"},"nodeType":"YulFunctionCall","src":"2352:31:50"},"nodeType":"YulExpressionStatement","src":"2352:31:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2403:1:50","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"2406:4:50","type":"","value":"0x21"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2396:6:50"},"nodeType":"YulFunctionCall","src":"2396:15:50"},"nodeType":"YulExpressionStatement","src":"2396:15:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2431:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2434:4:50","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2424:6:50"},"nodeType":"YulFunctionCall","src":"2424:15:50"},"nodeType":"YulExpressionStatement","src":"2424:15:50"}]},"condition":{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"2322:2:50"},{"kind":"number","nodeType":"YulLiteral","src":"2326:1:50","type":"","value":"3"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2319:2:50"},"nodeType":"YulFunctionCall","src":"2319:9:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2312:6:50"},"nodeType":"YulFunctionCall","src":"2312:17:50"},"nodeType":"YulIf","src":"2309:140:50"},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2465:3:50"},{"name":"_1","nodeType":"YulIdentifier","src":"2470:2:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2458:6:50"},"nodeType":"YulFunctionCall","src":"2458:15:50"},"nodeType":"YulExpressionStatement","src":"2458:15:50"},{"nodeType":"YulVariableDeclaration","src":"2482:44:50","value":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2512:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"2520:4:50","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2508:3:50"},"nodeType":"YulFunctionCall","src":"2508:17:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2502:5:50"},"nodeType":"YulFunctionCall","src":"2502:24:50"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"2486:12:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2535:52:50","value":{"kind":"number","nodeType":"YulLiteral","src":"2545:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"2539:2:50","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2607:3:50"},{"kind":"number","nodeType":"YulLiteral","src":"2612:4:50","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2603:3:50"},"nodeType":"YulFunctionCall","src":"2603:14:50"},{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"2623:12:50"},{"name":"_2","nodeType":"YulIdentifier","src":"2637:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2619:3:50"},"nodeType":"YulFunctionCall","src":"2619:21:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2596:6:50"},"nodeType":"YulFunctionCall","src":"2596:45:50"},"nodeType":"YulExpressionStatement","src":"2596:45:50"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2661:3:50"},{"kind":"number","nodeType":"YulLiteral","src":"2666:4:50","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2657:3:50"},"nodeType":"YulFunctionCall","src":"2657:14:50"},{"arguments":[{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2687:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"2695:4:50","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2683:3:50"},"nodeType":"YulFunctionCall","src":"2683:17:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2677:5:50"},"nodeType":"YulFunctionCall","src":"2677:24:50"},{"name":"_2","nodeType":"YulIdentifier","src":"2703:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2673:3:50"},"nodeType":"YulFunctionCall","src":"2673:33:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2650:6:50"},"nodeType":"YulFunctionCall","src":"2650:57:50"},"nodeType":"YulExpressionStatement","src":"2650:57:50"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2727:3:50"},{"kind":"number","nodeType":"YulLiteral","src":"2732:4:50","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2723:3:50"},"nodeType":"YulFunctionCall","src":"2723:14:50"},{"arguments":[{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2753:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"2761:4:50","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2749:3:50"},"nodeType":"YulFunctionCall","src":"2749:17:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2743:5:50"},"nodeType":"YulFunctionCall","src":"2743:24:50"},{"name":"_2","nodeType":"YulIdentifier","src":"2769:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2739:3:50"},"nodeType":"YulFunctionCall","src":"2739:33:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2716:6:50"},"nodeType":"YulFunctionCall","src":"2716:57:50"},"nodeType":"YulExpressionStatement","src":"2716:57:50"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2793:3:50"},{"kind":"number","nodeType":"YulLiteral","src":"2798:4:50","type":"","value":"0x80"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2789:3:50"},"nodeType":"YulFunctionCall","src":"2789:14:50"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2815:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"2823:4:50","type":"","value":"0x80"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2811:3:50"},"nodeType":"YulFunctionCall","src":"2811:17:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2805:5:50"},"nodeType":"YulFunctionCall","src":"2805:24:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2782:6:50"},"nodeType":"YulFunctionCall","src":"2782:48:50"},"nodeType":"YulExpressionStatement","src":"2782:48:50"},{"nodeType":"YulAssignment","src":"2839:28:50","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2857:3:50"},{"kind":"number","nodeType":"YulLiteral","src":"2862:4:50","type":"","value":"0xa0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2853:3:50"},"nodeType":"YulFunctionCall","src":"2853:14:50"},"variableNames":[{"name":"updatedPos","nodeType":"YulIdentifier","src":"2839:10:50"}]}]},"name":"abi_encodeUpdatedPos_struct_MultiTargetPermission","nodeType":"YulFunctionDefinition","parameters":[{"name":"value0","nodeType":"YulTypedName","src":"2236:6:50","type":""},{"name":"pos","nodeType":"YulTypedName","src":"2244:3:50","type":""}],"returnVariables":[{"name":"updatedPos","nodeType":"YulTypedName","src":"2252:10:50","type":""}],"src":"2177:696:50"},{"body":{"nodeType":"YulBlock","src":"3107:499:50","statements":[{"nodeType":"YulVariableDeclaration","src":"3117:12:50","value":{"kind":"number","nodeType":"YulLiteral","src":"3127:2:50","type":"","value":"32"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"3121:2:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3138:32:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3156:9:50"},{"name":"_1","nodeType":"YulIdentifier","src":"3167:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3152:3:50"},"nodeType":"YulFunctionCall","src":"3152:18:50"},"variables":[{"name":"tail_1","nodeType":"YulTypedName","src":"3142:6:50","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3186:9:50"},{"name":"_1","nodeType":"YulIdentifier","src":"3197:2:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3179:6:50"},"nodeType":"YulFunctionCall","src":"3179:21:50"},"nodeType":"YulExpressionStatement","src":"3179:21:50"},{"nodeType":"YulVariableDeclaration","src":"3209:17:50","value":{"name":"tail_1","nodeType":"YulIdentifier","src":"3220:6:50"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"3213:3:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3235:27:50","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3255:6:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3249:5:50"},"nodeType":"YulFunctionCall","src":"3249:13:50"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"3239:6:50","type":""}]},{"expression":{"arguments":[{"name":"tail_1","nodeType":"YulIdentifier","src":"3278:6:50"},{"name":"length","nodeType":"YulIdentifier","src":"3286:6:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3271:6:50"},"nodeType":"YulFunctionCall","src":"3271:22:50"},"nodeType":"YulExpressionStatement","src":"3271:22:50"},{"nodeType":"YulAssignment","src":"3302:25:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3313:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"3324:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3309:3:50"},"nodeType":"YulFunctionCall","src":"3309:18:50"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"3302:3:50"}]},{"nodeType":"YulVariableDeclaration","src":"3336:29:50","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3354:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"3362:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3350:3:50"},"nodeType":"YulFunctionCall","src":"3350:15:50"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"3340:6:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3374:10:50","value":{"kind":"number","nodeType":"YulLiteral","src":"3383:1:50","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"3378:1:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"3442:138:50","statements":[{"nodeType":"YulAssignment","src":"3456:76:50","value":{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"3519:6:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3513:5:50"},"nodeType":"YulFunctionCall","src":"3513:13:50"},{"name":"pos","nodeType":"YulIdentifier","src":"3528:3:50"}],"functionName":{"name":"abi_encodeUpdatedPos_struct_MultiTargetPermission","nodeType":"YulIdentifier","src":"3463:49:50"},"nodeType":"YulFunctionCall","src":"3463:69:50"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"3456:3:50"}]},{"nodeType":"YulAssignment","src":"3545:25:50","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"3559:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"3567:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3555:3:50"},"nodeType":"YulFunctionCall","src":"3555:15:50"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"3545:6:50"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3404:1:50"},{"name":"length","nodeType":"YulIdentifier","src":"3407:6:50"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"3401:2:50"},"nodeType":"YulFunctionCall","src":"3401:13:50"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"3415:18:50","statements":[{"nodeType":"YulAssignment","src":"3417:14:50","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3426:1:50"},{"kind":"number","nodeType":"YulLiteral","src":"3429:1:50","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3422:3:50"},"nodeType":"YulFunctionCall","src":"3422:9:50"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"3417:1:50"}]}]},"pre":{"nodeType":"YulBlock","src":"3397:3:50","statements":[]},"src":"3393:187:50"},{"nodeType":"YulAssignment","src":"3589:11:50","value":{"name":"pos","nodeType":"YulIdentifier","src":"3597:3:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3589:4:50"}]}]},"name":"abi_encode_tuple_t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3076:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3087:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3098:4:50","type":""}],"src":"2878:728:50"},{"body":{"nodeType":"YulBlock","src":"3746:465:50","statements":[{"body":{"nodeType":"YulBlock","src":"3792:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3801:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3804:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3794:6:50"},"nodeType":"YulFunctionCall","src":"3794:12:50"},"nodeType":"YulExpressionStatement","src":"3794:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3767:7:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"3776:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3763:3:50"},"nodeType":"YulFunctionCall","src":"3763:23:50"},{"kind":"number","nodeType":"YulLiteral","src":"3788:2:50","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3759:3:50"},"nodeType":"YulFunctionCall","src":"3759:32:50"},"nodeType":"YulIf","src":"3756:52:50"},{"nodeType":"YulAssignment","src":"3817:39:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3846:9:50"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"3827:18:50"},"nodeType":"YulFunctionCall","src":"3827:29:50"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3817:6:50"}]},{"nodeType":"YulVariableDeclaration","src":"3865:45:50","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3895:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"3906:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3891:3:50"},"nodeType":"YulFunctionCall","src":"3891:18:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3878:12:50"},"nodeType":"YulFunctionCall","src":"3878:32:50"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"3869:5:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"3960:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3969:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3972:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3962:6:50"},"nodeType":"YulFunctionCall","src":"3962:12:50"},"nodeType":"YulExpressionStatement","src":"3962:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3932:5:50"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3943:5:50"},{"kind":"number","nodeType":"YulLiteral","src":"3950:6:50","type":"","value":"0xffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3939:3:50"},"nodeType":"YulFunctionCall","src":"3939:18:50"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"3929:2:50"},"nodeType":"YulFunctionCall","src":"3929:29:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3922:6:50"},"nodeType":"YulFunctionCall","src":"3922:37:50"},"nodeType":"YulIf","src":"3919:57:50"},{"nodeType":"YulAssignment","src":"3985:15:50","value":{"name":"value","nodeType":"YulIdentifier","src":"3995:5:50"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"3985:6:50"}]},{"nodeType":"YulVariableDeclaration","src":"4009:46:50","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4040:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"4051:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4036:3:50"},"nodeType":"YulFunctionCall","src":"4036:18:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4023:12:50"},"nodeType":"YulFunctionCall","src":"4023:32:50"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4013:6:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"4098:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4107:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4110:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4100:6:50"},"nodeType":"YulFunctionCall","src":"4100:12:50"},"nodeType":"YulExpressionStatement","src":"4100:12:50"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"4070:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"4078:18:50","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4067:2:50"},"nodeType":"YulFunctionCall","src":"4067:30:50"},"nodeType":"YulIf","src":"4064:50:50"},{"nodeType":"YulAssignment","src":"4123:82:50","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4177:9:50"},{"name":"offset","nodeType":"YulIdentifier","src":"4188:6:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4173:3:50"},"nodeType":"YulFunctionCall","src":"4173:22:50"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4197:7:50"}],"functionName":{"name":"abi_decode_struct_SetupPayload_calldata","nodeType":"YulIdentifier","src":"4133:39:50"},"nodeType":"YulFunctionCall","src":"4133:72:50"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"4123:6:50"}]}]},"name":"abi_decode_tuple_t_addresst_uint16t_struct$_SetupPayload_$4810_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3696:9:50","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3707:7:50","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3719:6:50","type":""},{"name":"value1","nodeType":"YulTypedName","src":"3727:6:50","type":""},{"name":"value2","nodeType":"YulTypedName","src":"3735:6:50","type":""}],"src":"3611:600:50"},{"body":{"nodeType":"YulBlock","src":"4265:373:50","statements":[{"nodeType":"YulVariableDeclaration","src":"4275:26:50","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4295:5:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4289:5:50"},"nodeType":"YulFunctionCall","src":"4289:12:50"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"4279:6:50","type":""}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4317:3:50"},{"name":"length","nodeType":"YulIdentifier","src":"4322:6:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4310:6:50"},"nodeType":"YulFunctionCall","src":"4310:19:50"},"nodeType":"YulExpressionStatement","src":"4310:19:50"},{"nodeType":"YulVariableDeclaration","src":"4338:10:50","value":{"kind":"number","nodeType":"YulLiteral","src":"4347:1:50","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"4342:1:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"4409:110:50","statements":[{"nodeType":"YulVariableDeclaration","src":"4423:14:50","value":{"kind":"number","nodeType":"YulLiteral","src":"4433:4:50","type":"","value":"0x20"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"4427:2:50","type":""}]},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4465:3:50"},{"name":"i","nodeType":"YulIdentifier","src":"4470:1:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4461:3:50"},"nodeType":"YulFunctionCall","src":"4461:11:50"},{"name":"_1","nodeType":"YulIdentifier","src":"4474:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4457:3:50"},"nodeType":"YulFunctionCall","src":"4457:20:50"},{"arguments":[{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4493:5:50"},{"name":"i","nodeType":"YulIdentifier","src":"4500:1:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4489:3:50"},"nodeType":"YulFunctionCall","src":"4489:13:50"},{"name":"_1","nodeType":"YulIdentifier","src":"4504:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4485:3:50"},"nodeType":"YulFunctionCall","src":"4485:22:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4479:5:50"},"nodeType":"YulFunctionCall","src":"4479:29:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4450:6:50"},"nodeType":"YulFunctionCall","src":"4450:59:50"},"nodeType":"YulExpressionStatement","src":"4450:59:50"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"4368:1:50"},{"name":"length","nodeType":"YulIdentifier","src":"4371:6:50"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"4365:2:50"},"nodeType":"YulFunctionCall","src":"4365:13:50"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"4379:21:50","statements":[{"nodeType":"YulAssignment","src":"4381:17:50","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"4390:1:50"},{"kind":"number","nodeType":"YulLiteral","src":"4393:4:50","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4386:3:50"},"nodeType":"YulFunctionCall","src":"4386:12:50"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"4381:1:50"}]}]},"pre":{"nodeType":"YulBlock","src":"4361:3:50","statements":[]},"src":"4357:162:50"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4543:3:50"},{"name":"length","nodeType":"YulIdentifier","src":"4548:6:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4539:3:50"},"nodeType":"YulFunctionCall","src":"4539:16:50"},{"kind":"number","nodeType":"YulLiteral","src":"4557:4:50","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4535:3:50"},"nodeType":"YulFunctionCall","src":"4535:27:50"},{"kind":"number","nodeType":"YulLiteral","src":"4564:1:50","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4528:6:50"},"nodeType":"YulFunctionCall","src":"4528:38:50"},"nodeType":"YulExpressionStatement","src":"4528:38:50"},{"nodeType":"YulAssignment","src":"4575:57:50","value":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4590:3:50"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"4603:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"4611:2:50","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4599:3:50"},"nodeType":"YulFunctionCall","src":"4599:15:50"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4620:2:50","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"4616:3:50"},"nodeType":"YulFunctionCall","src":"4616:7:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4595:3:50"},"nodeType":"YulFunctionCall","src":"4595:29:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4586:3:50"},"nodeType":"YulFunctionCall","src":"4586:39:50"},{"kind":"number","nodeType":"YulLiteral","src":"4627:4:50","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4582:3:50"},"nodeType":"YulFunctionCall","src":"4582:50:50"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"4575:3:50"}]}]},"name":"abi_encode_bytes","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"4242:5:50","type":""},{"name":"pos","nodeType":"YulTypedName","src":"4249:3:50","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"4257:3:50","type":""}],"src":"4216:422:50"},{"body":{"nodeType":"YulBlock","src":"4711:1094:50","statements":[{"nodeType":"YulVariableDeclaration","src":"4721:26:50","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4737:3:50"},{"kind":"number","nodeType":"YulLiteral","src":"4742:4:50","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4733:3:50"},"nodeType":"YulFunctionCall","src":"4733:14:50"},"variables":[{"name":"tail","nodeType":"YulTypedName","src":"4725:4:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4756:32:50","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4782:5:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4776:5:50"},"nodeType":"YulFunctionCall","src":"4776:12:50"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"4760:12:50","type":""}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4804:3:50"},{"kind":"number","nodeType":"YulLiteral","src":"4809:4:50","type":"","value":"0x40"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4797:6:50"},"nodeType":"YulFunctionCall","src":"4797:17:50"},"nodeType":"YulExpressionStatement","src":"4797:17:50"},{"nodeType":"YulVariableDeclaration","src":"4823:17:50","value":{"name":"tail","nodeType":"YulIdentifier","src":"4836:4:50"},"variables":[{"name":"pos_1","nodeType":"YulTypedName","src":"4827:5:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4849:33:50","value":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"4869:12:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4863:5:50"},"nodeType":"YulFunctionCall","src":"4863:19:50"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"4853:6:50","type":""}]},{"expression":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"4898:4:50"},{"name":"length","nodeType":"YulIdentifier","src":"4904:6:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4891:6:50"},"nodeType":"YulFunctionCall","src":"4891:20:50"},"nodeType":"YulExpressionStatement","src":"4891:20:50"},{"nodeType":"YulAssignment","src":"4920:21:50","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4933:3:50"},{"kind":"number","nodeType":"YulLiteral","src":"4938:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4929:3:50"},"nodeType":"YulFunctionCall","src":"4929:12:50"},"variableNames":[{"name":"pos_1","nodeType":"YulIdentifier","src":"4920:5:50"}]},{"nodeType":"YulVariableDeclaration","src":"4950:14:50","value":{"kind":"number","nodeType":"YulLiteral","src":"4960:4:50","type":"","value":"0x20"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"4954:2:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4973:35:50","value":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"4991:12:50"},{"name":"_1","nodeType":"YulIdentifier","src":"5005:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4987:3:50"},"nodeType":"YulFunctionCall","src":"4987:21:50"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"4977:6:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5017:10:50","value":{"kind":"number","nodeType":"YulLiteral","src":"5026:1:50","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"5021:1:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"5085:175:50","statements":[{"expression":{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5106:5:50"},{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"5123:6:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5117:5:50"},"nodeType":"YulFunctionCall","src":"5117:13:50"},{"kind":"number","nodeType":"YulLiteral","src":"5132:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5113:3:50"},"nodeType":"YulFunctionCall","src":"5113:62:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5099:6:50"},"nodeType":"YulFunctionCall","src":"5099:77:50"},"nodeType":"YulExpressionStatement","src":"5099:77:50"},{"nodeType":"YulAssignment","src":"5189:23:50","value":{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5202:5:50"},{"name":"_1","nodeType":"YulIdentifier","src":"5209:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5198:3:50"},"nodeType":"YulFunctionCall","src":"5198:14:50"},"variableNames":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5189:5:50"}]},{"nodeType":"YulAssignment","src":"5225:25:50","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"5239:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"5247:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5235:3:50"},"nodeType":"YulFunctionCall","src":"5235:15:50"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"5225:6:50"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"5047:1:50"},{"name":"length","nodeType":"YulIdentifier","src":"5050:6:50"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"5044:2:50"},"nodeType":"YulFunctionCall","src":"5044:13:50"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"5058:18:50","statements":[{"nodeType":"YulAssignment","src":"5060:14:50","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"5069:1:50"},{"kind":"number","nodeType":"YulLiteral","src":"5072:1:50","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5065:3:50"},"nodeType":"YulFunctionCall","src":"5065:9:50"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"5060:1:50"}]}]},"pre":{"nodeType":"YulBlock","src":"5040:3:50","statements":[]},"src":"5036:224:50"},{"nodeType":"YulVariableDeclaration","src":"5269:43:50","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5301:5:50"},{"name":"_1","nodeType":"YulIdentifier","src":"5308:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5297:3:50"},"nodeType":"YulFunctionCall","src":"5297:14:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5291:5:50"},"nodeType":"YulFunctionCall","src":"5291:21:50"},"variables":[{"name":"memberValue0_1","nodeType":"YulTypedName","src":"5273:14:50","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5332:3:50"},{"name":"_1","nodeType":"YulIdentifier","src":"5337:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5328:3:50"},"nodeType":"YulFunctionCall","src":"5328:12:50"},{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5346:5:50"},{"name":"pos","nodeType":"YulIdentifier","src":"5353:3:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5342:3:50"},"nodeType":"YulFunctionCall","src":"5342:15:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5321:6:50"},"nodeType":"YulFunctionCall","src":"5321:37:50"},"nodeType":"YulExpressionStatement","src":"5321:37:50"},{"nodeType":"YulVariableDeclaration","src":"5367:18:50","value":{"name":"pos_1","nodeType":"YulIdentifier","src":"5380:5:50"},"variables":[{"name":"pos_2","nodeType":"YulTypedName","src":"5371:5:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5394:37:50","value":{"arguments":[{"name":"memberValue0_1","nodeType":"YulIdentifier","src":"5416:14:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5410:5:50"},"nodeType":"YulFunctionCall","src":"5410:21:50"},"variables":[{"name":"length_1","nodeType":"YulTypedName","src":"5398:8:50","type":""}]},{"expression":{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5447:5:50"},{"name":"length_1","nodeType":"YulIdentifier","src":"5454:8:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5440:6:50"},"nodeType":"YulFunctionCall","src":"5440:23:50"},"nodeType":"YulExpressionStatement","src":"5440:23:50"},{"nodeType":"YulAssignment","src":"5472:23:50","value":{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5485:5:50"},{"name":"_1","nodeType":"YulIdentifier","src":"5492:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5481:3:50"},"nodeType":"YulFunctionCall","src":"5481:14:50"},"variableNames":[{"name":"pos_2","nodeType":"YulIdentifier","src":"5472:5:50"}]},{"nodeType":"YulVariableDeclaration","src":"5504:39:50","value":{"arguments":[{"name":"memberValue0_1","nodeType":"YulIdentifier","src":"5524:14:50"},{"name":"_1","nodeType":"YulIdentifier","src":"5540:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5520:3:50"},"nodeType":"YulFunctionCall","src":"5520:23:50"},"variables":[{"name":"srcPtr_1","nodeType":"YulTypedName","src":"5508:8:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5552:12:50","value":{"kind":"number","nodeType":"YulLiteral","src":"5563:1:50","type":"","value":"0"},"variables":[{"name":"i_1","nodeType":"YulTypedName","src":"5556:3:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"5630:148:50","statements":[{"nodeType":"YulAssignment","src":"5644:82:50","value":{"arguments":[{"arguments":[{"name":"srcPtr_1","nodeType":"YulIdentifier","src":"5709:8:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5703:5:50"},"nodeType":"YulFunctionCall","src":"5703:15:50"},{"name":"pos_2","nodeType":"YulIdentifier","src":"5720:5:50"}],"functionName":{"name":"abi_encodeUpdatedPos_struct_MultiTargetPermission","nodeType":"YulIdentifier","src":"5653:49:50"},"nodeType":"YulFunctionCall","src":"5653:73:50"},"variableNames":[{"name":"pos_2","nodeType":"YulIdentifier","src":"5644:5:50"}]},{"nodeType":"YulAssignment","src":"5739:29:50","value":{"arguments":[{"name":"srcPtr_1","nodeType":"YulIdentifier","src":"5755:8:50"},{"name":"_1","nodeType":"YulIdentifier","src":"5765:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5751:3:50"},"nodeType":"YulFunctionCall","src":"5751:17:50"},"variableNames":[{"name":"srcPtr_1","nodeType":"YulIdentifier","src":"5739:8:50"}]}]},"condition":{"arguments":[{"name":"i_1","nodeType":"YulIdentifier","src":"5584:3:50"},{"name":"length_1","nodeType":"YulIdentifier","src":"5589:8:50"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"5581:2:50"},"nodeType":"YulFunctionCall","src":"5581:17:50"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"5599:22:50","statements":[{"nodeType":"YulAssignment","src":"5601:18:50","value":{"arguments":[{"name":"i_1","nodeType":"YulIdentifier","src":"5612:3:50"},{"kind":"number","nodeType":"YulLiteral","src":"5617:1:50","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5608:3:50"},"nodeType":"YulFunctionCall","src":"5608:11:50"},"variableNames":[{"name":"i_1","nodeType":"YulIdentifier","src":"5601:3:50"}]}]},"pre":{"nodeType":"YulBlock","src":"5577:3:50","statements":[]},"src":"5573:205:50"},{"nodeType":"YulAssignment","src":"5787:12:50","value":{"name":"pos_2","nodeType":"YulIdentifier","src":"5794:5:50"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"5787:3:50"}]}]},"name":"abi_encode_struct_PreparedSetupData","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"4688:5:50","type":""},{"name":"pos","nodeType":"YulTypedName","src":"4695:3:50","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"4703:3:50","type":""}],"src":"4643:1162:50"},{"body":{"nodeType":"YulBlock","src":"6027:231:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6044:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"6055:2:50","type":"","value":"64"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6037:6:50"},"nodeType":"YulFunctionCall","src":"6037:21:50"},"nodeType":"YulExpressionStatement","src":"6037:21:50"},{"nodeType":"YulVariableDeclaration","src":"6067:58:50","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6098:6:50"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6110:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"6121:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6106:3:50"},"nodeType":"YulFunctionCall","src":"6106:18:50"}],"functionName":{"name":"abi_encode_bytes","nodeType":"YulIdentifier","src":"6081:16:50"},"nodeType":"YulFunctionCall","src":"6081:44:50"},"variables":[{"name":"tail_1","nodeType":"YulTypedName","src":"6071:6:50","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6145:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"6156:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6141:3:50"},"nodeType":"YulFunctionCall","src":"6141:18:50"},{"arguments":[{"name":"tail_1","nodeType":"YulIdentifier","src":"6165:6:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"6173:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6161:3:50"},"nodeType":"YulFunctionCall","src":"6161:22:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6134:6:50"},"nodeType":"YulFunctionCall","src":"6134:50:50"},"nodeType":"YulExpressionStatement","src":"6134:50:50"},{"nodeType":"YulAssignment","src":"6193:59:50","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"6237:6:50"},{"name":"tail_1","nodeType":"YulIdentifier","src":"6245:6:50"}],"functionName":{"name":"abi_encode_struct_PreparedSetupData","nodeType":"YulIdentifier","src":"6201:35:50"},"nodeType":"YulFunctionCall","src":"6201:51:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6193:4:50"}]}]},"name":"abi_encode_tuple_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$4802_memory_ptr__to_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$4802_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5988:9:50","type":""},{"name":"value1","nodeType":"YulTypedName","src":"5999:6:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"6007:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6018:4:50","type":""}],"src":"5810:448:50"},{"body":{"nodeType":"YulBlock","src":"6295:95:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6312:1:50","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6319:3:50","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"6324:10:50","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"6315:3:50"},"nodeType":"YulFunctionCall","src":"6315:20:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6305:6:50"},"nodeType":"YulFunctionCall","src":"6305:31:50"},"nodeType":"YulExpressionStatement","src":"6305:31:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6352:1:50","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"6355:4:50","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6345:6:50"},"nodeType":"YulFunctionCall","src":"6345:15:50"},"nodeType":"YulExpressionStatement","src":"6345:15:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6376:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6379:4:50","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6369:6:50"},"nodeType":"YulFunctionCall","src":"6369:15:50"},"nodeType":"YulExpressionStatement","src":"6369:15:50"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"6263:127:50"},{"body":{"nodeType":"YulBlock","src":"6491:899:50","statements":[{"body":{"nodeType":"YulBlock","src":"6537:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6546:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6549:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6539:6:50"},"nodeType":"YulFunctionCall","src":"6539:12:50"},"nodeType":"YulExpressionStatement","src":"6539:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"6512:7:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"6521:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6508:3:50"},"nodeType":"YulFunctionCall","src":"6508:23:50"},{"kind":"number","nodeType":"YulLiteral","src":"6533:2:50","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6504:3:50"},"nodeType":"YulFunctionCall","src":"6504:32:50"},"nodeType":"YulIf","src":"6501:52:50"},{"nodeType":"YulAssignment","src":"6562:39:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6591:9:50"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"6572:18:50"},"nodeType":"YulFunctionCall","src":"6572:29:50"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"6562:6:50"}]},{"nodeType":"YulVariableDeclaration","src":"6610:46:50","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6641:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"6652:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6637:3:50"},"nodeType":"YulFunctionCall","src":"6637:18:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6624:12:50"},"nodeType":"YulFunctionCall","src":"6624:32:50"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"6614:6:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"6665:28:50","value":{"kind":"number","nodeType":"YulLiteral","src":"6675:18:50","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"6669:2:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"6720:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6729:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6732:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6722:6:50"},"nodeType":"YulFunctionCall","src":"6722:12:50"},"nodeType":"YulExpressionStatement","src":"6722:12:50"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"6708:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"6716:2:50"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6705:2:50"},"nodeType":"YulFunctionCall","src":"6705:14:50"},"nodeType":"YulIf","src":"6702:34:50"},{"nodeType":"YulVariableDeclaration","src":"6745:32:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6759:9:50"},{"name":"offset","nodeType":"YulIdentifier","src":"6770:6:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6755:3:50"},"nodeType":"YulFunctionCall","src":"6755:22:50"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"6749:2:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"6825:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6834:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6837:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6827:6:50"},"nodeType":"YulFunctionCall","src":"6827:12:50"},"nodeType":"YulExpressionStatement","src":"6827:12:50"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"6804:2:50"},{"kind":"number","nodeType":"YulLiteral","src":"6808:4:50","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6800:3:50"},"nodeType":"YulFunctionCall","src":"6800:13:50"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"6815:7:50"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6796:3:50"},"nodeType":"YulFunctionCall","src":"6796:27:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"6789:6:50"},"nodeType":"YulFunctionCall","src":"6789:35:50"},"nodeType":"YulIf","src":"6786:55:50"},{"nodeType":"YulVariableDeclaration","src":"6850:26:50","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"6873:2:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6860:12:50"},"nodeType":"YulFunctionCall","src":"6860:16:50"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"6854:2:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"6899:22:50","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"6901:16:50"},"nodeType":"YulFunctionCall","src":"6901:18:50"},"nodeType":"YulExpressionStatement","src":"6901:18:50"}]},"condition":{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"6891:2:50"},{"name":"_1","nodeType":"YulIdentifier","src":"6895:2:50"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6888:2:50"},"nodeType":"YulFunctionCall","src":"6888:10:50"},"nodeType":"YulIf","src":"6885:36:50"},{"nodeType":"YulVariableDeclaration","src":"6930:17:50","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6944:2:50","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"6940:3:50"},"nodeType":"YulFunctionCall","src":"6940:7:50"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"6934:2:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"6956:23:50","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6976:2:50","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6970:5:50"},"nodeType":"YulFunctionCall","src":"6970:9:50"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"6960:6:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"6988:71:50","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7010:6:50"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"7034:2:50"},{"kind":"number","nodeType":"YulLiteral","src":"7038:4:50","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7030:3:50"},"nodeType":"YulFunctionCall","src":"7030:13:50"},{"name":"_4","nodeType":"YulIdentifier","src":"7045:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7026:3:50"},"nodeType":"YulFunctionCall","src":"7026:22:50"},{"kind":"number","nodeType":"YulLiteral","src":"7050:2:50","type":"","value":"63"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7022:3:50"},"nodeType":"YulFunctionCall","src":"7022:31:50"},{"name":"_4","nodeType":"YulIdentifier","src":"7055:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7018:3:50"},"nodeType":"YulFunctionCall","src":"7018:40:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7006:3:50"},"nodeType":"YulFunctionCall","src":"7006:53:50"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"6992:10:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"7118:22:50","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"7120:16:50"},"nodeType":"YulFunctionCall","src":"7120:18:50"},"nodeType":"YulExpressionStatement","src":"7120:18:50"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"7077:10:50"},{"name":"_1","nodeType":"YulIdentifier","src":"7089:2:50"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"7074:2:50"},"nodeType":"YulFunctionCall","src":"7074:18:50"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"7097:10:50"},{"name":"memPtr","nodeType":"YulIdentifier","src":"7109:6:50"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"7094:2:50"},"nodeType":"YulFunctionCall","src":"7094:22:50"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"7071:2:50"},"nodeType":"YulFunctionCall","src":"7071:46:50"},"nodeType":"YulIf","src":"7068:72:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7156:2:50","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"7160:10:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7149:6:50"},"nodeType":"YulFunctionCall","src":"7149:22:50"},"nodeType":"YulExpressionStatement","src":"7149:22:50"},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7187:6:50"},{"name":"_3","nodeType":"YulIdentifier","src":"7195:2:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7180:6:50"},"nodeType":"YulFunctionCall","src":"7180:18:50"},"nodeType":"YulExpressionStatement","src":"7180:18:50"},{"body":{"nodeType":"YulBlock","src":"7244:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7253:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7256:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7246:6:50"},"nodeType":"YulFunctionCall","src":"7246:12:50"},"nodeType":"YulExpressionStatement","src":"7246:12:50"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"7221:2:50"},{"name":"_3","nodeType":"YulIdentifier","src":"7225:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7217:3:50"},"nodeType":"YulFunctionCall","src":"7217:11:50"},{"kind":"number","nodeType":"YulLiteral","src":"7230:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7213:3:50"},"nodeType":"YulFunctionCall","src":"7213:20:50"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"7235:7:50"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"7210:2:50"},"nodeType":"YulFunctionCall","src":"7210:33:50"},"nodeType":"YulIf","src":"7207:53:50"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7286:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"7294:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7282:3:50"},"nodeType":"YulFunctionCall","src":"7282:15:50"},{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"7303:2:50"},{"kind":"number","nodeType":"YulLiteral","src":"7307:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7299:3:50"},"nodeType":"YulFunctionCall","src":"7299:11:50"},{"name":"_3","nodeType":"YulIdentifier","src":"7312:2:50"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"7269:12:50"},"nodeType":"YulFunctionCall","src":"7269:46:50"},"nodeType":"YulExpressionStatement","src":"7269:46:50"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7339:6:50"},{"name":"_3","nodeType":"YulIdentifier","src":"7347:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7335:3:50"},"nodeType":"YulFunctionCall","src":"7335:15:50"},{"kind":"number","nodeType":"YulLiteral","src":"7352:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7331:3:50"},"nodeType":"YulFunctionCall","src":"7331:24:50"},{"kind":"number","nodeType":"YulLiteral","src":"7357:1:50","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7324:6:50"},"nodeType":"YulFunctionCall","src":"7324:35:50"},"nodeType":"YulExpressionStatement","src":"7324:35:50"},{"nodeType":"YulAssignment","src":"7368:16:50","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"7378:6:50"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"7368:6:50"}]}]},"name":"abi_decode_tuple_t_addresst_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6449:9:50","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"6460:7:50","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"6472:6:50","type":""},{"name":"value1","nodeType":"YulTypedName","src":"6480:6:50","type":""}],"src":"6395:995:50"},{"body":{"nodeType":"YulBlock","src":"7594:209:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7611:9:50"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7626:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"7634:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7622:3:50"},"nodeType":"YulFunctionCall","src":"7622:55:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7604:6:50"},"nodeType":"YulFunctionCall","src":"7604:74:50"},"nodeType":"YulExpressionStatement","src":"7604:74:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7698:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"7709:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7694:3:50"},"nodeType":"YulFunctionCall","src":"7694:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"7714:2:50","type":"","value":"64"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7687:6:50"},"nodeType":"YulFunctionCall","src":"7687:30:50"},"nodeType":"YulExpressionStatement","src":"7687:30:50"},{"nodeType":"YulAssignment","src":"7726:71:50","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"7770:6:50"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7782:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"7793:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7778:3:50"},"nodeType":"YulFunctionCall","src":"7778:18:50"}],"functionName":{"name":"abi_encode_struct_PreparedSetupData","nodeType":"YulIdentifier","src":"7734:35:50"},"nodeType":"YulFunctionCall","src":"7734:63:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7726:4:50"}]}]},"name":"abi_encode_tuple_t_address_t_struct$_PreparedSetupData_$4802_memory_ptr__to_t_address_t_struct$_PreparedSetupData_$4802_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7555:9:50","type":""},{"name":"value1","nodeType":"YulTypedName","src":"7566:6:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"7574:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7585:4:50","type":""}],"src":"7395:408:50"},{"body":{"nodeType":"YulBlock","src":"7907:89:50","statements":[{"nodeType":"YulAssignment","src":"7917:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7929:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"7940:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7925:3:50"},"nodeType":"YulFunctionCall","src":"7925:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7917:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7959:9:50"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7974:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"7982:6:50","type":"","value":"0xffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7970:3:50"},"nodeType":"YulFunctionCall","src":"7970:19:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7952:6:50"},"nodeType":"YulFunctionCall","src":"7952:38:50"},"nodeType":"YulExpressionStatement","src":"7952:38:50"}]},"name":"abi_encode_tuple_t_uint16__to_t_uint16__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7876:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"7887:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7898:4:50","type":""}],"src":"7808:188:50"},{"body":{"nodeType":"YulBlock","src":"8115:125:50","statements":[{"nodeType":"YulAssignment","src":"8125:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8137:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"8148:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8133:3:50"},"nodeType":"YulFunctionCall","src":"8133:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"8125:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8167:9:50"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"8182:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"8190:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8178:3:50"},"nodeType":"YulFunctionCall","src":"8178:55:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8160:6:50"},"nodeType":"YulFunctionCall","src":"8160:74:50"},"nodeType":"YulExpressionStatement","src":"8160:74:50"}]},"name":"abi_encode_tuple_t_contract$_IDAO_$2538__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8084:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"8095:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"8106:4:50","type":""}],"src":"8001:239:50"},{"body":{"nodeType":"YulBlock","src":"8277:95:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8294:1:50","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8301:3:50","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"8306:10:50","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"8297:3:50"},"nodeType":"YulFunctionCall","src":"8297:20:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8287:6:50"},"nodeType":"YulFunctionCall","src":"8287:31:50"},"nodeType":"YulExpressionStatement","src":"8287:31:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8334:1:50","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"8337:4:50","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8327:6:50"},"nodeType":"YulFunctionCall","src":"8327:15:50"},"nodeType":"YulExpressionStatement","src":"8327:15:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8358:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8361:4:50","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8351:6:50"},"nodeType":"YulFunctionCall","src":"8351:15:50"},"nodeType":"YulExpressionStatement","src":"8351:15:50"}]},"name":"panic_error_0x11","nodeType":"YulFunctionDefinition","src":"8245:127:50"},{"body":{"nodeType":"YulBlock","src":"8426:159:50","statements":[{"nodeType":"YulVariableDeclaration","src":"8436:52:50","value":{"kind":"number","nodeType":"YulLiteral","src":"8446:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"8440:2:50","type":""}]},{"nodeType":"YulAssignment","src":"8497:35:50","value":{"arguments":[{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"8513:1:50"},{"name":"_1","nodeType":"YulIdentifier","src":"8516:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8509:3:50"},"nodeType":"YulFunctionCall","src":"8509:10:50"},{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"8525:1:50"},{"name":"_1","nodeType":"YulIdentifier","src":"8528:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8521:3:50"},"nodeType":"YulFunctionCall","src":"8521:10:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"8505:3:50"},"nodeType":"YulFunctionCall","src":"8505:27:50"},"variableNames":[{"name":"diff","nodeType":"YulIdentifier","src":"8497:4:50"}]},{"body":{"nodeType":"YulBlock","src":"8557:22:50","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"8559:16:50"},"nodeType":"YulFunctionCall","src":"8559:18:50"},"nodeType":"YulExpressionStatement","src":"8559:18:50"}]},"condition":{"arguments":[{"name":"diff","nodeType":"YulIdentifier","src":"8547:4:50"},{"name":"_1","nodeType":"YulIdentifier","src":"8553:2:50"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"8544:2:50"},"nodeType":"YulFunctionCall","src":"8544:12:50"},"nodeType":"YulIf","src":"8541:38:50"}]},"name":"checked_sub_t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"8408:1:50","type":""},{"name":"y","nodeType":"YulTypedName","src":"8411:1:50","type":""}],"returnVariables":[{"name":"diff","nodeType":"YulTypedName","src":"8417:4:50","type":""}],"src":"8377:208:50"},{"body":{"nodeType":"YulBlock","src":"8622:95:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8639:1:50","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8646:3:50","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"8651:10:50","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"8642:3:50"},"nodeType":"YulFunctionCall","src":"8642:20:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8632:6:50"},"nodeType":"YulFunctionCall","src":"8632:31:50"},"nodeType":"YulExpressionStatement","src":"8632:31:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8679:1:50","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"8682:4:50","type":"","value":"0x32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8672:6:50"},"nodeType":"YulFunctionCall","src":"8672:15:50"},"nodeType":"YulExpressionStatement","src":"8672:15:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8703:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8706:4:50","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8696:6:50"},"nodeType":"YulFunctionCall","src":"8696:15:50"},"nodeType":"YulExpressionStatement","src":"8696:15:50"}]},"name":"panic_error_0x32","nodeType":"YulFunctionDefinition","src":"8590:127:50"},{"body":{"nodeType":"YulBlock","src":"8769:187:50","statements":[{"nodeType":"YulVariableDeclaration","src":"8779:52:50","value":{"kind":"number","nodeType":"YulLiteral","src":"8789:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"8783:2:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"8840:29:50","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8859:5:50"},{"name":"_1","nodeType":"YulIdentifier","src":"8866:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8855:3:50"},"nodeType":"YulFunctionCall","src":"8855:14:50"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"8844:7:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"8897:22:50","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"8899:16:50"},"nodeType":"YulFunctionCall","src":"8899:18:50"},"nodeType":"YulExpressionStatement","src":"8899:18:50"}]},"condition":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"8884:7:50"},{"name":"_1","nodeType":"YulIdentifier","src":"8893:2:50"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"8881:2:50"},"nodeType":"YulFunctionCall","src":"8881:15:50"},"nodeType":"YulIf","src":"8878:41:50"},{"nodeType":"YulAssignment","src":"8928:22:50","value":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"8939:7:50"},{"kind":"number","nodeType":"YulLiteral","src":"8948:1:50","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8935:3:50"},"nodeType":"YulFunctionCall","src":"8935:15:50"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"8928:3:50"}]}]},"name":"increment_t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"8751:5:50","type":""}],"returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"8761:3:50","type":""}],"src":"8722:234:50"},{"body":{"nodeType":"YulBlock","src":"9108:190:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9125:9:50"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"9140:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"9148:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"9136:3:50"},"nodeType":"YulFunctionCall","src":"9136:55:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9118:6:50"},"nodeType":"YulFunctionCall","src":"9118:74:50"},"nodeType":"YulExpressionStatement","src":"9118:74:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9212:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"9223:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9208:3:50"},"nodeType":"YulFunctionCall","src":"9208:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"9228:2:50","type":"","value":"64"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9201:6:50"},"nodeType":"YulFunctionCall","src":"9201:30:50"},"nodeType":"YulExpressionStatement","src":"9201:30:50"},{"nodeType":"YulAssignment","src":"9240:52:50","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"9265:6:50"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9277:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"9288:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9273:3:50"},"nodeType":"YulFunctionCall","src":"9273:18:50"}],"functionName":{"name":"abi_encode_bytes","nodeType":"YulIdentifier","src":"9248:16:50"},"nodeType":"YulFunctionCall","src":"9248:44:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"9240:4:50"}]}]},"name":"abi_encode_tuple_t_address_t_bytes_memory_ptr__to_t_address_t_bytes_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9069:9:50","type":""},{"name":"value1","nodeType":"YulTypedName","src":"9080:6:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"9088:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"9099:4:50","type":""}],"src":"8961:337:50"}]},"contents":"{\n { }\n function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n if iszero(eq(value, and(value, shl(224, 0xffffffff)))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 96)\n let pos := headStart\n pos := headStart\n let srcPtr := value0\n let i := 0\n for { } lt(i, 0x03) { i := add(i, 1) }\n {\n mstore(pos, and(mload(srcPtr), 0xff))\n let _1 := 0x20\n pos := add(pos, _1)\n srcPtr := add(srcPtr, _1)\n }\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_decode_address(offset) -> value\n {\n value := calldataload(offset)\n if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n }\n function abi_decode_struct_SetupPayload_calldata(offset, end) -> value\n {\n if slt(sub(end, offset), 96) { revert(0, 0) }\n value := offset\n }\n function abi_decode_tuple_t_addresst_struct$_SetupPayload_$4810_calldata_ptr(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n let offset := calldataload(add(headStart, 32))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n value1 := abi_decode_struct_SetupPayload_calldata(add(headStart, offset), dataEnd)\n }\n function panic_error_0x21()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x21)\n revert(0, 0x24)\n }\n function abi_encodeUpdatedPos_struct_MultiTargetPermission(value0, pos) -> updatedPos\n {\n let _1 := mload(value0)\n if iszero(lt(_1, 3))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x21)\n revert(0, 0x24)\n }\n mstore(pos, _1)\n let memberValue0 := mload(add(value0, 0x20))\n let _2 := 0xffffffffffffffffffffffffffffffffffffffff\n mstore(add(pos, 0x20), and(memberValue0, _2))\n mstore(add(pos, 0x40), and(mload(add(value0, 0x40)), _2))\n mstore(add(pos, 0x60), and(mload(add(value0, 0x60)), _2))\n mstore(add(pos, 0x80), mload(add(value0, 0x80)))\n updatedPos := add(pos, 0xa0)\n }\n function abi_encode_tuple_t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n let _1 := 32\n let tail_1 := add(headStart, _1)\n mstore(headStart, _1)\n let pos := tail_1\n let length := mload(value0)\n mstore(tail_1, length)\n pos := add(headStart, 64)\n let srcPtr := add(value0, _1)\n let i := 0\n for { } lt(i, length) { i := add(i, 1) }\n {\n pos := abi_encodeUpdatedPos_struct_MultiTargetPermission(mload(srcPtr), pos)\n srcPtr := add(srcPtr, _1)\n }\n tail := pos\n }\n function abi_decode_tuple_t_addresst_uint16t_struct$_SetupPayload_$4810_calldata_ptr(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n let value := calldataload(add(headStart, 32))\n if iszero(eq(value, and(value, 0xffff))) { revert(0, 0) }\n value1 := value\n let offset := calldataload(add(headStart, 64))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n value2 := abi_decode_struct_SetupPayload_calldata(add(headStart, offset), dataEnd)\n }\n function abi_encode_bytes(value, pos) -> end\n {\n let length := mload(value)\n mstore(pos, length)\n let i := 0\n for { } lt(i, length) { i := add(i, 0x20) }\n {\n let _1 := 0x20\n mstore(add(add(pos, i), _1), mload(add(add(value, i), _1)))\n }\n mstore(add(add(pos, length), 0x20), 0)\n end := add(add(pos, and(add(length, 31), not(31))), 0x20)\n }\n function abi_encode_struct_PreparedSetupData(value, pos) -> end\n {\n let tail := add(pos, 0x40)\n let memberValue0 := mload(value)\n mstore(pos, 0x40)\n let pos_1 := tail\n let length := mload(memberValue0)\n mstore(tail, length)\n pos_1 := add(pos, 96)\n let _1 := 0x20\n let srcPtr := add(memberValue0, _1)\n let i := 0\n for { } lt(i, length) { i := add(i, 1) }\n {\n mstore(pos_1, and(mload(srcPtr), 0xffffffffffffffffffffffffffffffffffffffff))\n pos_1 := add(pos_1, _1)\n srcPtr := add(srcPtr, _1)\n }\n let memberValue0_1 := mload(add(value, _1))\n mstore(add(pos, _1), sub(pos_1, pos))\n let pos_2 := pos_1\n let length_1 := mload(memberValue0_1)\n mstore(pos_1, length_1)\n pos_2 := add(pos_1, _1)\n let srcPtr_1 := add(memberValue0_1, _1)\n let i_1 := 0\n for { } lt(i_1, length_1) { i_1 := add(i_1, 1) }\n {\n pos_2 := abi_encodeUpdatedPos_struct_MultiTargetPermission(mload(srcPtr_1), pos_2)\n srcPtr_1 := add(srcPtr_1, _1)\n }\n end := pos_2\n }\n function abi_encode_tuple_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$4802_memory_ptr__to_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$4802_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n {\n mstore(headStart, 64)\n let tail_1 := abi_encode_bytes(value0, add(headStart, 64))\n mstore(add(headStart, 32), sub(tail_1, headStart))\n tail := abi_encode_struct_PreparedSetupData(value1, tail_1)\n }\n function panic_error_0x41()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function abi_decode_tuple_t_addresst_bytes_memory_ptr(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n let offset := calldataload(add(headStart, 32))\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n let _2 := add(headStart, offset)\n if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n let _3 := calldataload(_2)\n if gt(_3, _1) { panic_error_0x41() }\n let _4 := not(31)\n let memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n mstore(memPtr, _3)\n if gt(add(add(_2, _3), 32), dataEnd) { revert(0, 0) }\n calldatacopy(add(memPtr, 32), add(_2, 32), _3)\n mstore(add(add(memPtr, _3), 32), 0)\n value1 := memPtr\n }\n function abi_encode_tuple_t_address_t_struct$_PreparedSetupData_$4802_memory_ptr__to_t_address_t_struct$_PreparedSetupData_$4802_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n {\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n mstore(add(headStart, 32), 64)\n tail := abi_encode_struct_PreparedSetupData(value1, add(headStart, 64))\n }\n function abi_encode_tuple_t_uint16__to_t_uint16__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffff))\n }\n function abi_encode_tuple_t_contract$_IDAO_$2538__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function panic_error_0x11()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n function checked_sub_t_uint160(x, y) -> diff\n {\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n diff := sub(and(x, _1), and(y, _1))\n if gt(diff, _1) { panic_error_0x11() }\n }\n function panic_error_0x32()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n function increment_t_uint160(value) -> ret\n {\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n let value_1 := and(value, _1)\n if eq(value_1, _1) { panic_error_0x11() }\n ret := add(value_1, 1)\n }\n function abi_encode_tuple_t_address_t_bytes_memory_ptr__to_t_address_t_bytes_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n {\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n mstore(add(headStart, 32), 64)\n tail := abi_encode_bytes(value1, add(headStart, 64))\n }\n}","id":50,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{"4977":[{"length":32,"start":210},{"length":32,"start":894}]},"linkReferences":{},"object":"60806040523480156200001157600080fd5b50600436106200007b5760003560e01c80639cb0a12411620000565780639cb0a12414620000fd578063a8a9c29e1462000123578063f10832f1146200014a57600080fd5b806301ffc9a714620000805780632ae9c60014620000ac5780635c60da1b14620000c5575b600080fd5b6200009762000091366004620006a3565b62000171565b60405190151581526020015b60405180910390f35b620000b6620001c4565b604051620000a39190620006cf565b6040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152602001620000a3565b620001146200010e36600462000735565b620001f0565b604051620000a3919062000806565b6200013a6200013436600462000853565b62000209565b604051620000a3929190620009a2565b620001616200015b366004620009ea565b6200030f565b604051620000a392919062000ab8565b60006001600160e01b0319821663099718b560e41b1480620001a257506001600160e01b03198216621574e360e91b145b80620001be57506301ffc9a760e01b6001600160e01b03198316145b92915050565b620001ce62000677565b5060408051606081018252600181526004602082015260009181019190915290565b606062000202600060036001620003de565b9392505050565b606062000229604051806040016040528060608152602001606081525090565b8361ffff16600103620002985762000242600362000577565b815260405161ffff8516602482015260440160408051601f198184030181529190526020810180516001600160e01b03166239a8c560e41b17905291506200029261ffff851660036000620003de565b60208201525b8361ffff166002036200030757620002b1600362000577565b815260405161ffff8516602482015260440160408051601f198184030181529190526020810180516001600160e01b03166239a8c560e41b17905291506200030161ffff851660036000620003de565b60208201525b935093915050565b60006200032f604051806040016040528060608152602001606081525090565b6040516001600160a01b038516602482015260009060440160408051601f198184030181529190526020810180516001600160e01b031663189acdbd60e31b1790529050620003b081620003a07f000000000000000000000000000000000000000000000000000000000000000090565b6001600160a01b0316906200063b565b9250620003be600362000577565b8252620003cf6000600381620003de565b60208301525090939092509050565b6060826001600160a01b0316846001600160a01b031611156200041457604051633a4013cd60e21b815260040160405180910390fd5b62000420848462000afa565b6001600160a01b031667ffffffffffffffff811115620004445762000444620009d4565b6040519080825280602002602001820160405280156200049f57816020015b6040805160a081018252600080825260208083018290529282018190526060820181905260808201528252600019909201910181620004635790505b509050835b836001600160a01b0316816001600160a01b031610156200056f576040518060a00160405280846002811115620004df57620004df62000789565b81526001600160a01b038316602082018190526040820152600060608201527fa280eec51ab8e1bc4b6b0c1b7f1bde785761b787a49db404e3e9338ed9b016ef6080909101528262000532878462000afa565b6001600160a01b0316815181106200054e576200054e62000b24565b60200260200101819052508080620005669062000b3a565b915050620004a4565b509392505050565b6060816001600160a01b031667ffffffffffffffff8111156200059e576200059e620009d4565b604051908082528060200260200182016040528015620005c8578160200160208202803683370190505b50905060005b826001600160a01b0316816001600160a01b0316101562000635578082826001600160a01b03168151811062000608576200060862000b24565b6001600160a01b0390921660209283029190910190910152806200062c8162000b3a565b915050620005ce565b50919050565b600082826040516200064d9062000695565b6200065a92919062000b63565b604051809103906000f0801580156200056f573d6000803e3d6000fd5b60405180606001604052806003906020820280368337509192915050565b6106fe8062000b8883390190565b600060208284031215620006b657600080fd5b81356001600160e01b0319811681146200020257600080fd5b60608101818360005b6003811015620006fc57815160ff16835260209283019290910190600101620006d8565b50505092915050565b80356001600160a01b03811681146200071d57600080fd5b919050565b6000606082840312156200063557600080fd5b600080604083850312156200074957600080fd5b620007548362000705565b9150602083013567ffffffffffffffff8111156200077157600080fd5b6200077f8582860162000722565b9150509250929050565b634e487b7160e01b600052602160045260246000fd5b6000815160038110620007c257634e487b7160e01b600052602160045260246000fd5b8352506020818101516001600160a01b0390811691840191909152604080830151821690840152606080830151909116908301526080908101519082015260a00190565b6020808252825182820181905260009190848201906040850190845b818110156200084757620008388385516200079f565b93850193925060010162000822565b50909695505050505050565b6000806000606084860312156200086957600080fd5b620008748462000705565b9250602084013561ffff811681146200088c57600080fd5b9150604084013567ffffffffffffffff811115620008a957600080fd5b620008b78682870162000722565b9150509250925092565b6000815180845260005b81811015620008e957602081850181015186830182015201620008cb565b506000602082860101526020601f19601f83011685010191505092915050565b805160408084528151908401819052600091602091908201906060860190845b81811015620009505783516001600160a01b03168352928401929184019160010162000929565b50508483015186820387850152805180835290840192506000918401905b808310156200099757620009848285516200079f565b915084840193506001830192506200096e565b509695505050505050565b604081526000620009b76040830185620008c1565b8281036020840152620009cb818562000909565b95945050505050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215620009fe57600080fd5b62000a098362000705565b9150602083013567ffffffffffffffff8082111562000a2757600080fd5b818501915085601f83011262000a3c57600080fd5b81358181111562000a515762000a51620009d4565b604051601f8201601f19908116603f0116810190838211818310171562000a7c5762000a7c620009d4565b8160405282815288602084870101111562000a9657600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6001600160a01b038316815260406020820152600062000adc604083018462000909565b949350505050565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0382811682821603908082111562000b1d5762000b1d62000ae4565b5092915050565b634e487b7160e01b600052603260045260246000fd5b60006001600160a01b0380831681810362000b595762000b5962000ae4565b6001019392505050565b6001600160a01b038316815260406020820152600062000adc6040830184620008c156fe60806040526040516106fe3803806106fe83398101604081905261002291610319565b61002e82826000610035565b5050610436565b61003e8361006b565b60008251118061004b5750805b156100665761006483836100ab60201b6100291760201c565b505b505050565b610074816100d7565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606100d083836040518060600160405280602781526020016106d7602791396101a9565b9392505050565b6100ea8161022260201b6100551760201c565b6101515760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b806101887f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61023160201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6060600080856001600160a01b0316856040516101c691906103e7565b600060405180830381855af49150503d8060008114610201576040519150601f19603f3d011682016040523d82523d6000602084013e610206565b606091505b50909250905061021886838387610234565b9695505050505050565b6001600160a01b03163b151590565b90565b606083156102a357825160000361029c576001600160a01b0385163b61029c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610148565b50816102ad565b6102ad83836102b5565b949350505050565b8151156102c55781518083602001fd5b8060405162461bcd60e51b81526004016101489190610403565b634e487b7160e01b600052604160045260246000fd5b60005b838110156103105781810151838201526020016102f8565b50506000910152565b6000806040838503121561032c57600080fd5b82516001600160a01b038116811461034357600080fd5b60208401519092506001600160401b038082111561036057600080fd5b818501915085601f83011261037457600080fd5b815181811115610386576103866102df565b604051601f8201601f19908116603f011681019083821181831017156103ae576103ae6102df565b816040528281528860208487010111156103c757600080fd5b6103d88360208301602088016102f5565b80955050505050509250929050565b600082516103f98184602087016102f5565b9190910192915050565b60208152600082518060208401526104228160408501602087016102f5565b601f01601f19169190910160400192915050565b610292806104456000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b61009f565b565b606061004e838360405180606001604052806027815260200161025f602791396100c3565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e8080156100be573d6000f35b3d6000fd5b6060600080856001600160a01b0316856040516100e0919061020f565b600060405180830381855af49150503d806000811461011b576040519150601f19603f3d011682016040523d82523d6000602084013e610120565b606091505b50915091506101318683838761013b565b9695505050505050565b606083156101af5782516000036101a8576001600160a01b0385163b6101a85760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b50816101b9565b6101b983836101c1565b949350505050565b8151156101d15781518083602001fd5b8060405162461bcd60e51b815260040161019f919061022b565b60005b838110156102065781810151838201526020016101ee565b50506000910152565b600082516102218184602087016101eb565b9190910192915050565b602081526000825180602084015261024a8160408501602087016101eb565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH3 0x7B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9CB0A124 GT PUSH3 0x56 JUMPI DUP1 PUSH4 0x9CB0A124 EQ PUSH3 0xFD JUMPI DUP1 PUSH4 0xA8A9C29E EQ PUSH3 0x123 JUMPI DUP1 PUSH4 0xF10832F1 EQ PUSH3 0x14A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH3 0x80 JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH3 0xAC JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH3 0xC5 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x97 PUSH3 0x91 CALLDATASIZE PUSH1 0x4 PUSH3 0x6A3 JUMP JUMPDEST PUSH3 0x171 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0xB6 PUSH3 0x1C4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0xA3 SWAP2 SWAP1 PUSH3 0x6CF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH3 0xA3 JUMP JUMPDEST PUSH3 0x114 PUSH3 0x10E CALLDATASIZE PUSH1 0x4 PUSH3 0x735 JUMP JUMPDEST PUSH3 0x1F0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0xA3 SWAP2 SWAP1 PUSH3 0x806 JUMP JUMPDEST PUSH3 0x13A PUSH3 0x134 CALLDATASIZE PUSH1 0x4 PUSH3 0x853 JUMP JUMPDEST PUSH3 0x209 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0xA3 SWAP3 SWAP2 SWAP1 PUSH3 0x9A2 JUMP JUMPDEST PUSH3 0x161 PUSH3 0x15B CALLDATASIZE PUSH1 0x4 PUSH3 0x9EA JUMP JUMPDEST PUSH3 0x30F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0xA3 SWAP3 SWAP2 SWAP1 PUSH3 0xAB8 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x99718B5 PUSH1 0xE4 SHL EQ DUP1 PUSH3 0x1A2 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH3 0x1BE JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH3 0x1CE PUSH3 0x677 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH3 0x202 PUSH1 0x0 PUSH1 0x3 PUSH1 0x1 PUSH3 0x3DE JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH3 0x229 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST DUP4 PUSH2 0xFFFF AND PUSH1 0x1 SUB PUSH3 0x298 JUMPI PUSH3 0x242 PUSH1 0x3 PUSH3 0x577 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x40 MLOAD PUSH2 0xFFFF DUP6 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH3 0x39A8C5 PUSH1 0xE4 SHL OR SWAP1 MSTORE SWAP2 POP PUSH3 0x292 PUSH2 0xFFFF DUP6 AND PUSH1 0x3 PUSH1 0x0 PUSH3 0x3DE JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE JUMPDEST DUP4 PUSH2 0xFFFF AND PUSH1 0x2 SUB PUSH3 0x307 JUMPI PUSH3 0x2B1 PUSH1 0x3 PUSH3 0x577 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x40 MLOAD PUSH2 0xFFFF DUP6 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH3 0x39A8C5 PUSH1 0xE4 SHL OR SWAP1 MSTORE SWAP2 POP PUSH3 0x301 PUSH2 0xFFFF DUP6 AND PUSH1 0x3 PUSH1 0x0 PUSH3 0x3DE JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE JUMPDEST SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x32F PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 PUSH1 0x44 ADD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x189ACDBD PUSH1 0xE3 SHL OR SWAP1 MSTORE SWAP1 POP PUSH3 0x3B0 DUP2 PUSH3 0x3A0 PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH3 0x63B JUMP JUMPDEST SWAP3 POP PUSH3 0x3BE PUSH1 0x3 PUSH3 0x577 JUMP JUMPDEST DUP3 MSTORE PUSH3 0x3CF PUSH1 0x0 PUSH1 0x3 DUP2 PUSH3 0x3DE JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP SWAP1 SWAP4 SWAP1 SWAP3 POP SWAP1 POP JUMP JUMPDEST PUSH1 0x60 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH3 0x414 JUMPI PUSH1 0x40 MLOAD PUSH4 0x3A4013CD PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0x420 DUP5 DUP5 PUSH3 0xAFA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x444 JUMPI PUSH3 0x444 PUSH3 0x9D4 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH3 0x49F JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD DUP3 SWAP1 MSTORE SWAP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 DUP3 ADD MSTORE DUP3 MSTORE PUSH1 0x0 NOT SWAP1 SWAP3 ADD SWAP2 ADD DUP2 PUSH3 0x463 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP DUP4 JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT ISZERO PUSH3 0x56F JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 DUP5 PUSH1 0x2 DUP2 GT ISZERO PUSH3 0x4DF JUMPI PUSH3 0x4DF PUSH3 0x789 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x60 DUP3 ADD MSTORE PUSH32 0xA280EEC51AB8E1BC4B6B0C1B7F1BDE785761B787A49DB404E3E9338ED9B016EF PUSH1 0x80 SWAP1 SWAP2 ADD MSTORE DUP3 PUSH3 0x532 DUP8 DUP5 PUSH3 0xAFA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MLOAD DUP2 LT PUSH3 0x54E JUMPI PUSH3 0x54E PUSH3 0xB24 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP DUP1 DUP1 PUSH3 0x566 SWAP1 PUSH3 0xB3A JUMP JUMPDEST SWAP2 POP POP PUSH3 0x4A4 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x59E JUMPI PUSH3 0x59E PUSH3 0x9D4 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH3 0x5C8 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT ISZERO PUSH3 0x635 JUMPI DUP1 DUP3 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MLOAD DUP2 LT PUSH3 0x608 JUMPI PUSH3 0x608 PUSH3 0xB24 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE DUP1 PUSH3 0x62C DUP2 PUSH3 0xB3A JUMP JUMPDEST SWAP2 POP POP PUSH3 0x5CE JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH3 0x64D SWAP1 PUSH3 0x695 JUMP JUMPDEST PUSH3 0x65A SWAP3 SWAP2 SWAP1 PUSH3 0xB63 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH3 0x56F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x6FE DUP1 PUSH3 0xB88 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x6B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH3 0x202 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH3 0x6FC JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH3 0x6D8 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x71D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x635 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x749 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x754 DUP4 PUSH3 0x705 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x771 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x77F DUP6 DUP3 DUP7 ADD PUSH3 0x722 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP2 MLOAD PUSH1 0x3 DUP2 LT PUSH3 0x7C2 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP4 MSTORE POP PUSH1 0x20 DUP2 DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP1 DUP4 ADD MLOAD DUP3 AND SWAP1 DUP5 ADD MSTORE PUSH1 0x60 DUP1 DUP4 ADD MLOAD SWAP1 SWAP2 AND SWAP1 DUP4 ADD MSTORE PUSH1 0x80 SWAP1 DUP2 ADD MLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x847 JUMPI PUSH3 0x838 DUP4 DUP6 MLOAD PUSH3 0x79F JUMP JUMPDEST SWAP4 DUP6 ADD SWAP4 SWAP3 POP PUSH1 0x1 ADD PUSH3 0x822 JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH3 0x869 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x874 DUP5 PUSH3 0x705 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH3 0x88C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x8A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x8B7 DUP7 DUP3 DUP8 ADD PUSH3 0x722 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x8E9 JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD DUP3 ADD MSTORE ADD PUSH3 0x8CB JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x20 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x20 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x40 DUP1 DUP5 MSTORE DUP2 MLOAD SWAP1 DUP5 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x20 SWAP2 SWAP1 DUP3 ADD SWAP1 PUSH1 0x60 DUP7 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x950 JUMPI DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH3 0x929 JUMP JUMPDEST POP POP DUP5 DUP4 ADD MLOAD DUP7 DUP3 SUB DUP8 DUP6 ADD MSTORE DUP1 MLOAD DUP1 DUP4 MSTORE SWAP1 DUP5 ADD SWAP3 POP PUSH1 0x0 SWAP2 DUP5 ADD SWAP1 JUMPDEST DUP1 DUP4 LT ISZERO PUSH3 0x997 JUMPI PUSH3 0x984 DUP3 DUP6 MLOAD PUSH3 0x79F JUMP JUMPDEST SWAP2 POP DUP5 DUP5 ADD SWAP4 POP PUSH1 0x1 DUP4 ADD SWAP3 POP PUSH3 0x96E JUMP JUMPDEST POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 PUSH3 0x9B7 PUSH1 0x40 DUP4 ADD DUP6 PUSH3 0x8C1 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 ADD MSTORE PUSH3 0x9CB DUP2 DUP6 PUSH3 0x909 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x9FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0xA09 DUP4 PUSH3 0x705 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH3 0xA27 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH3 0xA3C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH3 0xA51 JUMPI PUSH3 0xA51 PUSH3 0x9D4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH3 0xA7C JUMPI PUSH3 0xA7C PUSH3 0x9D4 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH3 0xA96 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH3 0xADC PUSH1 0x40 DUP4 ADD DUP5 PUSH3 0x909 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND DUP3 DUP3 AND SUB SWAP1 DUP1 DUP3 GT ISZERO PUSH3 0xB1D JUMPI PUSH3 0xB1D PUSH3 0xAE4 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND DUP2 DUP2 SUB PUSH3 0xB59 JUMPI PUSH3 0xB59 PUSH3 0xAE4 JUMP JUMPDEST PUSH1 0x1 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH3 0xADC PUSH1 0x40 DUP4 ADD DUP5 PUSH3 0x8C1 JUMP INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH2 0x6FE CODESIZE SUB DUP1 PUSH2 0x6FE DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x22 SWAP2 PUSH2 0x319 JUMP JUMPDEST PUSH2 0x2E DUP3 DUP3 PUSH1 0x0 PUSH2 0x35 JUMP JUMPDEST POP POP PUSH2 0x436 JUMP JUMPDEST PUSH2 0x3E DUP4 PUSH2 0x6B JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD GT DUP1 PUSH2 0x4B JUMPI POP DUP1 JUMPDEST ISZERO PUSH2 0x66 JUMPI PUSH2 0x64 DUP4 DUP4 PUSH2 0xAB PUSH1 0x20 SHL PUSH2 0x29 OR PUSH1 0x20 SHR JUMP JUMPDEST POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x74 DUP2 PUSH2 0xD7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xD0 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x6D7 PUSH1 0x27 SWAP2 CODECOPY PUSH2 0x1A9 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xEA DUP2 PUSH2 0x222 PUSH1 0x20 SHL PUSH2 0x55 OR PUSH1 0x20 SHR JUMP JUMPDEST PUSH2 0x151 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313936373A206E657720696D706C656D656E746174696F6E206973206E PUSH1 0x44 DUP3 ADD MSTORE PUSH13 0x1BDD08184818DBDB9D1C9858DD PUSH1 0x9A SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH2 0x188 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC PUSH1 0x0 SHL PUSH2 0x231 PUSH1 0x20 SHL PUSH2 0x64 OR PUSH1 0x20 SHR JUMP JUMPDEST DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0x1C6 SWAP2 SWAP1 PUSH2 0x3E7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x201 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x206 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x218 DUP7 DUP4 DUP4 DUP8 PUSH2 0x234 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x2A3 JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0x29C JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0x29C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x148 JUMP JUMPDEST POP DUP2 PUSH2 0x2AD JUMP JUMPDEST PUSH2 0x2AD DUP4 DUP4 PUSH2 0x2B5 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x2C5 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x148 SWAP2 SWAP1 PUSH2 0x403 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x310 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2F8 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x32C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x343 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x360 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x374 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x386 JUMPI PUSH2 0x386 PUSH2 0x2DF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x3AE JUMPI PUSH2 0x3AE PUSH2 0x2DF JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x3C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3D8 DUP4 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x2F5 JUMP JUMPDEST DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x3F9 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x2F5 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x422 DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x2F5 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x292 DUP1 PUSH2 0x445 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLDATASIZE PUSH2 0x13 JUMPI PUSH2 0x11 PUSH2 0x17 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x11 JUMPDEST PUSH2 0x27 PUSH2 0x22 PUSH2 0x67 JUMP JUMPDEST PUSH2 0x9F JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x60 PUSH2 0x4E DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x25F PUSH1 0x27 SWAP2 CODECOPY PUSH2 0xC3 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9A PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 DUP1 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE PUSH1 0x0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH2 0xBE JUMPI RETURNDATASIZE PUSH1 0x0 RETURN JUMPDEST RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0xE0 SWAP2 SWAP1 PUSH2 0x20F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x11B JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x120 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x131 DUP7 DUP4 DUP4 DUP8 PUSH2 0x13B JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x1AF JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0x1A8 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0x1A8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP DUP2 PUSH2 0x1B9 JUMP JUMPDEST PUSH2 0x1B9 DUP4 DUP4 PUSH2 0x1C1 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x1D1 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x19F SWAP2 SWAP1 PUSH2 0x22B JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x206 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1EE JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x221 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x1EB JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x24A DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x1EB JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A164 PUSH20 0x6F6C6343000811000A416464726573733A206C6F PUSH24 0x2D6C6576656C2064656C65676174652063616C6C20666169 PUSH13 0x6564A164736F6C634300081100 EXP ","sourceMap":"4631:2543:32:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1852:293:46;;;;;;:::i;:::-;;:::i;:::-;;;470:14:50;;463:22;445:41;;433:2;418:18;1852:293:46;;;;;;;;631:98:49;;;:::i;:::-;;;;;;;:::i;2184:94:46:-;;;-1:-1:-1;;;;;2257:14:46;1167:55:50;1149:74;;1137:2;1122:18;2184:94:46;1003:226:50;6873:299:32;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;5528:1306::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;4914:575::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;1852:293:46:-;1938:4;-1:-1:-1;;;;;;1973:46:46;;-1:-1:-1;;;1973:46:46;;:112;;-1:-1:-1;;;;;;;2035:50:46;;-1:-1:-1;;;2035:50:46;1973:112;:165;;;-1:-1:-1;;;;;;;;;;937:40:23;;;2101:37:46;1954:184;1852:293;-1:-1:-1;;1852:293:46:o;631:98:49:-;679:15;;:::i;:::-;-1:-1:-1;706:16:49;;;;;;;;714:1;706:16;;717:1;706:16;;;;-1:-1:-1;706:16:49;;;;;;;;631:98::o;6873:299:32:-;6995:56;7103:62;7119:1;4780;7134:30;7103:15;:62::i;:::-;7089:76;6873:299;-1:-1:-1;;;6873:299:32:o;5528:1306::-;5710:21;5733:42;-1:-1:-1;;;;;;;;;;;;;;;;;;;5733:42:32;5853:10;:15;;5867:1;5853:15;5849:562;;5912:23;4780:1;5912:11;:23::i;:::-;5884:51;;5960:76;;7982:6:50;7970:19;;5960:76:32;;;7952:38:50;7925:18;;5960:76:32;;;-1:-1:-1;;5960:76:32;;;;;;;;;;;;;;-1:-1:-1;;;;;5960:76:32;-1:-1:-1;;;5960:76:32;;;;-1:-1:-1;6082:132:32;;;;4780:1;-1:-1:-1;6082:15:32;:132::i;:::-;6050:29;;;:164;5849:562;6456:10;:15;;6470:1;6456:15;6452:376;;6515:23;4780:1;6515:11;:23::i;:::-;6487:51;;6563:76;;7982:6:50;7970:19;;6563:76:32;;;7952:38:50;7925:18;;6563:76:32;;;-1:-1:-1;;6563:76:32;;;;;;;;;;;;;;-1:-1:-1;;;;;6563:76:32;-1:-1:-1;;;6563:76:32;;;;-1:-1:-1;6685:132:32;;;;4780:1;-1:-1:-1;6685:15:32;:132::i;:::-;6653:29;;;:164;6452:376;5528:1306;;;;;;:::o;4914:575::-;5011:14;5027:42;-1:-1:-1;;;;;;;;;;;;;;;;;;;5027:42:32;5105:106;;-1:-1:-1;;;;;1167:55:50;;5105:106:32;;;1149:74:50;5081:21:32;;1122:18:50;;5105:106:32;;;-1:-1:-1;;5105:106:32;;;;;;;;;;;;;;-1:-1:-1;;;;;5105:106:32;-1:-1:-1;;;5105:106:32;;;;-1:-1:-1;5230:42:32;5105:106;5230:16;2257:14:46;;2184:94;5230:16:32;-1:-1:-1;;;;;5230:32:32;;;:42::i;:::-;5221:51;-1:-1:-1;5310:23:32;4780:1;5310:11;:23::i;:::-;5282:51;;5375:107;5282:25;4780:1;5282:25;5375:15;:107::i;:::-;5343:29;;;:139;-1:-1:-1;4914:575:32;;5343:17;;-1:-1:-1;4914:575:32;-1:-1:-1;4914:575:32:o;580:666:30:-;699:56;780:8;-1:-1:-1;;;;;767:21:30;:10;-1:-1:-1;;;;;767:21:30;;763:53;;;797:19;;-1:-1:-1;;;797:19:30;;;;;;;;;;;763:53;879:21;890:10;879:8;:21;:::i;:::-;-1:-1:-1;;;;;837:64:30;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;837:64:30;;-1:-1:-1;;837:64:30;;;;;;;;;;;-1:-1:-1;823:78:30;-1:-1:-1;925:10:30;908:336;941:8;-1:-1:-1;;;;;937:12:30;:1;-1:-1:-1;;;;;937:12:30;;908:336;;;996:241;;;;;;;;1057:2;996:241;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;996:241:30;;;;;;;;;;;;-1:-1:-1;996:241:30;;;;1198:28;996:241;;;;;966:11;978:14;982:10;1088:1;978:14;:::i;:::-;-1:-1:-1;;;;;966:27:30;;;;;;;;;:::i;:::-;;;;;;:271;;;;951:3;;;;;:::i;:::-;;;;908:336;;;;580:666;;;;;:::o;1529:191::-;1577:24;1633:3;-1:-1:-1;;;;;1619:18:30;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1619:18:30;;1609:28;;1649:9;1644:74;1668:3;-1:-1:-1;;;;;1664:7:30;:1;-1:-1:-1;;;;;1664:7:30;;1644:74;;;1709:1;1688:7;1696:1;-1:-1:-1;;;;;1688:10:30;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1688:23:30;;;:10;;;;;;;;;;;:23;1673:3;;;;:::i;:::-;;;;1644:74;;;;1529:191;;;:::o;1415:222:47:-;1524:17;1599:6;1614:13;1573:56;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::o;14:286:50:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:50;;209:43;;199:71;;266:1;263;256:12;497:501;673:2;658:18;;662:9;753:6;631:4;787:205;801:4;798:1;795:11;787:205;;;864:13;;879:4;860:24;848:37;;908:4;932:12;;;;967:15;;;;821:1;814:9;787:205;;;791:3;;;497:501;;;;:::o;1234:196::-;1302:20;;-1:-1:-1;;;;;1351:54:50;;1341:65;;1331:93;;1420:1;1417;1410:12;1331:93;1234:196;;;:::o;1435:160::-;1500:5;1545:2;1536:6;1531:3;1527:16;1523:25;1520:45;;;1561:1;1558;1551:12;1600:440;1700:6;1708;1761:2;1749:9;1740:7;1736:23;1732:32;1729:52;;;1777:1;1774;1767:12;1729:52;1800:29;1819:9;1800:29;:::i;:::-;1790:39;;1880:2;1869:9;1865:18;1852:32;1907:18;1899:6;1896:30;1893:50;;;1939:1;1936;1929:12;1893:50;1962:72;2026:7;2017:6;2006:9;2002:22;1962:72;:::i;:::-;1952:82;;;1600:440;;;;;:::o;2045:127::-;2106:10;2101:3;2097:20;2094:1;2087:31;2137:4;2134:1;2127:15;2161:4;2158:1;2151:15;2177:696;2252:10;2293:6;2287:13;2326:1;2322:2;2319:9;2309:140;;2371:10;2366:3;2362:20;2359:1;2352:31;2406:4;2403:1;2396:15;2434:4;2431:1;2424:15;2309:140;2458:15;;-1:-1:-1;2520:4:50;2508:17;;;2502:24;-1:-1:-1;;;;;2619:21:50;;;2603:14;;;2596:45;;;;2695:4;2683:17;;;2677:24;2673:33;;2657:14;;;2650:57;2761:4;2749:17;;;2743:24;2739:33;;;2723:14;;;2716:57;2823:4;2811:17;;;2805:24;2789:14;;;2782:48;2862:4;2853:14;;2177:696::o;2878:728::-;3127:2;3179:21;;;3249:13;;3152:18;;;3271:22;;;3098:4;;3127:2;3350:15;;;;3324:2;3309:18;;;3098:4;3393:187;3407:6;3404:1;3401:13;3393:187;;;3463:69;3528:3;3519:6;3513:13;3463:69;:::i;:::-;3555:15;;;;3456:76;-1:-1:-1;3429:1:50;3422:9;3393:187;;;-1:-1:-1;3597:3:50;;2878:728;-1:-1:-1;;;;;;2878:728:50:o;3611:600::-;3719:6;3727;3735;3788:2;3776:9;3767:7;3763:23;3759:32;3756:52;;;3804:1;3801;3794:12;3756:52;3827:29;3846:9;3827:29;:::i;:::-;3817:39;;3906:2;3895:9;3891:18;3878:32;3950:6;3943:5;3939:18;3932:5;3929:29;3919:57;;3972:1;3969;3962:12;3919:57;3995:5;-1:-1:-1;4051:2:50;4036:18;;4023:32;4078:18;4067:30;;4064:50;;;4110:1;4107;4100:12;4064:50;4133:72;4197:7;4188:6;4177:9;4173:22;4133:72;:::i;:::-;4123:82;;;3611:600;;;;;:::o;4216:422::-;4257:3;4295:5;4289:12;4322:6;4317:3;4310:19;4347:1;4357:162;4371:6;4368:1;4365:13;4357:162;;;4433:4;4489:13;;;4485:22;;4479:29;4461:11;;;4457:20;;4450:59;4386:12;4357:162;;;4361:3;4564:1;4557:4;4548:6;4543:3;4539:16;4535:27;4528:38;4627:4;4620:2;4616:7;4611:2;4603:6;4599:15;4595:29;4590:3;4586:39;4582:50;4575:57;;;4216:422;;;;:::o;4643:1162::-;4776:12;;4742:4;4797:17;;;4863:19;;4733:14;;;4891:20;;;4703:3;;4960:4;;4987:21;;;;4938:2;4929:12;;;4703:3;5036:224;5050:6;5047:1;5044:13;5036:224;;;5117:13;;-1:-1:-1;;;;;5113:62:50;5099:77;;5235:15;;;;5198:14;;;;5072:1;5065:9;5036:224;;;-1:-1:-1;;5297:14:50;;;5291:21;5342:15;;;5328:12;;;5321:37;5410:21;;5440:23;;;5520;;;;-1:-1:-1;5563:1:50;;5481:14;;;5573:205;5589:8;5584:3;5581:17;5573:205;;;5653:73;5720:5;5709:8;5703:15;5653:73;:::i;:::-;5644:82;;5765:2;5755:8;5751:17;5739:29;;5617:1;5612:3;5608:11;5601:18;;5573:205;;;-1:-1:-1;5794:5:50;4643:1162;-1:-1:-1;;;;;;4643:1162:50:o;5810:448::-;6055:2;6044:9;6037:21;6018:4;6081:44;6121:2;6110:9;6106:18;6098:6;6081:44;:::i;:::-;6173:9;6165:6;6161:22;6156:2;6145:9;6141:18;6134:50;6201:51;6245:6;6237;6201:51;:::i;:::-;6193:59;5810:448;-1:-1:-1;;;;;5810:448:50:o;6263:127::-;6324:10;6319:3;6315:20;6312:1;6305:31;6355:4;6352:1;6345:15;6379:4;6376:1;6369:15;6395:995;6472:6;6480;6533:2;6521:9;6512:7;6508:23;6504:32;6501:52;;;6549:1;6546;6539:12;6501:52;6572:29;6591:9;6572:29;:::i;:::-;6562:39;;6652:2;6641:9;6637:18;6624:32;6675:18;6716:2;6708:6;6705:14;6702:34;;;6732:1;6729;6722:12;6702:34;6770:6;6759:9;6755:22;6745:32;;6815:7;6808:4;6804:2;6800:13;6796:27;6786:55;;6837:1;6834;6827:12;6786:55;6873:2;6860:16;6895:2;6891;6888:10;6885:36;;;6901:18;;:::i;:::-;6976:2;6970:9;6944:2;7030:13;;-1:-1:-1;;7026:22:50;;;7050:2;7022:31;7018:40;7006:53;;;7074:18;;;7094:22;;;7071:46;7068:72;;;7120:18;;:::i;:::-;7160:10;7156:2;7149:22;7195:2;7187:6;7180:18;7235:7;7230:2;7225;7221;7217:11;7213:20;7210:33;7207:53;;;7256:1;7253;7246:12;7207:53;7312:2;7307;7303;7299:11;7294:2;7286:6;7282:15;7269:46;7357:1;7352:2;7347;7339:6;7335:15;7331:24;7324:35;7378:6;7368:16;;;;;;;6395:995;;;;;:::o;7395:408::-;-1:-1:-1;;;;;7626:6:50;7622:55;7611:9;7604:74;7714:2;7709;7698:9;7694:18;7687:30;7585:4;7734:63;7793:2;7782:9;7778:18;7770:6;7734:63;:::i;:::-;7726:71;7395:408;-1:-1:-1;;;;7395:408:50:o;8245:127::-;8306:10;8301:3;8297:20;8294:1;8287:31;8337:4;8334:1;8327:15;8361:4;8358:1;8351:15;8377:208;-1:-1:-1;;;;;8521:10:50;;;8509;;;8505:27;;8544:12;;;8541:38;;;8559:18;;:::i;:::-;8541:38;8377:208;;;;:::o;8590:127::-;8651:10;8646:3;8642:20;8639:1;8632:31;8682:4;8679:1;8672:15;8706:4;8703:1;8696:15;8722:234;8761:3;-1:-1:-1;;;;;8866:2:50;8859:5;8855:14;8893:2;8884:7;8881:15;8878:41;;8899:18;;:::i;:::-;8948:1;8935:15;;8722:234;-1:-1:-1;;;8722:234:50:o;8961:337::-;-1:-1:-1;;;;;9140:6:50;9136:55;9125:9;9118:74;9228:2;9223;9212:9;9208:18;9201:30;9099:4;9248:44;9288:2;9277:9;9273:18;9265:6;9248:44;:::i"},"gasEstimates":{"creation":{"codeDepositCost":"950800","executionCost":"infinite","totalCost":"infinite"},"external":{"implementation()":"infinite","prepareInstallation(address,bytes)":"infinite","prepareUninstallation(address,(address,address[],bytes))":"infinite","prepareUpdate(address,uint16,(address,address[],bytes))":"infinite","protocolVersion()":"infinite","supportsInterface(bytes4)":"482"}},"methodIdentifiers":{"implementation()":"5c60da1b","prepareInstallation(address,bytes)":"f10832f1","prepareUninstallation(address,(address,address[],bytes))":"9cb0a124","prepareUpdate(address,uint16,(address,address[],bytes))":"a8a9c29e","protocolVersion()":"2ae9c600","supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ConflictingValues\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"fromBuild\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"thisBuild\",\"type\":\"uint16\"}],\"name\":\"InvalidUpdatePath\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_dao\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"prepareInstallation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"plugin\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address[]\",\"name\":\"helpers\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"enum PermissionLib.Operation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"condition\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PermissionLib.MultiTargetPermission[]\",\"name\":\"permissions\",\"type\":\"tuple[]\"}],\"internalType\":\"struct IPluginSetup.PreparedSetupData\",\"name\":\"preparedSetupData\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_dao\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"plugin\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"currentHelpers\",\"type\":\"address[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IPluginSetup.SetupPayload\",\"name\":\"_payload\",\"type\":\"tuple\"}],\"name\":\"prepareUninstallation\",\"outputs\":[{\"components\":[{\"internalType\":\"enum PermissionLib.Operation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"condition\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PermissionLib.MultiTargetPermission[]\",\"name\":\"permissions\",\"type\":\"tuple[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_dao\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"_fromBuild\",\"type\":\"uint16\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"plugin\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"currentHelpers\",\"type\":\"address[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IPluginSetup.SetupPayload\",\"name\":\"_payload\",\"type\":\"tuple\"}],\"name\":\"prepareUpdate\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"initData\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address[]\",\"name\":\"helpers\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"enum PermissionLib.Operation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"condition\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PermissionLib.MultiTargetPermission[]\",\"name\":\"permissions\",\"type\":\"tuple[]\"}],\"internalType\":\"struct IPluginSetup.PreparedSetupData\",\"name\":\"preparedSetupData\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"protocolVersion\",\"outputs\":[{\"internalType\":\"uint8[3]\",\"name\":\"\",\"type\":\"uint8[3]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"InvalidUpdatePath(uint16,uint16)\":[{\"params\":{\"fromBuild\":\"The build number to update from.\",\"thisBuild\":\"The build number of this setup to update to.\"}}]},\"kind\":\"dev\",\"methods\":{\"implementation()\":{\"details\":\"The implementation can be instantiated via the `new` keyword, cloned via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)), or proxied via the UUPS proxy pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\",\"returns\":{\"_0\":\"The address of the plugin implementation contract.\"}},\"prepareInstallation(address,bytes)\":{\"params\":{\"_dao\":\"The address of the installing DAO.\",\"_data\":\"The bytes-encoded data containing the input parameters for the installation as specified in the plugin's build metadata JSON file.\"},\"returns\":{\"plugin\":\"The address of the `Plugin` contract being prepared for installation.\",\"preparedSetupData\":\"The deployed plugin's relevant data which consists of helpers and permissions.\"}},\"prepareUninstallation(address,(address,address[],bytes))\":{\"params\":{\"_dao\":\"The address of the uninstalling DAO.\",\"_payload\":\"The relevant data necessary for the `prepareUninstallation`. See above.\"},\"returns\":{\"permissions\":\"The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the uninstalling DAO.\"}},\"prepareUpdate(address,uint16,(address,address[],bytes))\":{\"params\":{\"_dao\":\"The address of the updating DAO.\",\"_fromBuild\":\"The build number of the plugin to update from.\",\"_payload\":\"The relevant data necessary for the `prepareUpdate`. See above.\"},\"returns\":{\"initData\":\"The initialization data to be passed to upgradeable contracts when the update is applied in the `PluginSetupProcessor`.\",\"preparedSetupData\":\"The deployed plugin's relevant data which consists of helpers and permissions.\"}},\"protocolVersion()\":{\"details\":\"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\",\"returns\":{\"_0\":\"Returns the semantic Aragon OSx protocol version number.\"}},\"supportsInterface(bytes4)\":{\"params\":{\"_interfaceId\":\"The ID of the interface.\"},\"returns\":{\"_0\":\"Returns `true` if the interface is supported.\"}}},\"version\":1},\"userdoc\":{\"errors\":{\"InvalidUpdatePath(uint16,uint16)\":[{\"notice\":\"Thrown when an update path is not available, for example, if this is the initial build.\"}]},\"kind\":\"user\",\"methods\":{\"implementation()\":{\"notice\":\"Returns the plugin implementation address.\"},\"prepareInstallation(address,bytes)\":{\"notice\":\"Prepares the installation of a plugin.\"},\"prepareUninstallation(address,(address,address[],bytes))\":{\"notice\":\"Prepares the uninstallation of a plugin.\"},\"prepareUpdate(address,uint16,(address,address[],bytes))\":{\"notice\":\"Prepares the update of a plugin.\"},\"protocolVersion()\":{\"notice\":\"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Checks if this or the parent contract supports an interface by its ID.\"}},\"notice\":\"A mock plugin setup of an upgradeable plugin to be deployed via the UUPS pattern. v1.3 (Release 1, Build 3)\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/mocks/plugin/PluginUUPSUpgradeableSetupMock.sol\":\"PluginUUPSUpgradeableSetupMockBuild3\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/interfaces/IERC1967Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (interfaces/IERC1967.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\\n *\\n * _Available since v4.8.3._\\n */\\ninterface IERC1967Upgradeable {\\n /**\\n * @dev Emitted when the implementation is upgraded.\\n */\\n event Upgraded(address indexed implementation);\\n\\n /**\\n * @dev Emitted when the admin account has changed.\\n */\\n event AdminChanged(address previousAdmin, address newAdmin);\\n\\n /**\\n * @dev Emitted when the beacon is changed.\\n */\\n event BeaconUpgraded(address indexed beacon);\\n}\\n\",\"keccak256\":\"0x47d6e06872b12e72c79d1b5eb55842f860b5fb1207b2317c2358d2766b950a7b\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822ProxiableUpgradeable {\\n /**\\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n * address.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy.\\n */\\n function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../beacon/IBeaconUpgradeable.sol\\\";\\nimport \\\"../../interfaces/IERC1967Upgradeable.sol\\\";\\nimport \\\"../../interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\nimport \\\"../../utils/StorageSlotUpgradeable.sol\\\";\\nimport {Initializable} from \\\"../utils/Initializable.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n */\\nabstract contract ERC1967UpgradeUpgradeable is Initializable, IERC1967Upgradeable {\\n // This is the keccak-256 hash of \\\"eip1967.proxy.rollback\\\" subtracted by 1\\n bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n /**\\n * @dev Storage slot with the address of the current implementation.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n function __ERC1967Upgrade_init() internal onlyInitializing {\\n }\\n\\n function __ERC1967Upgrade_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _getImplementation() internal view returns (address) {\\n return StorageSlotUpgradeable.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 implementation slot.\\n */\\n function _setImplementation(address newImplementation) private {\\n require(AddressUpgradeable.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n StorageSlotUpgradeable.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n }\\n\\n /**\\n * @dev Perform implementation upgrade\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeTo(address newImplementation) internal {\\n _setImplementation(newImplementation);\\n emit Upgraded(newImplementation);\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCall(address newImplementation, bytes memory data, bool forceCall) internal {\\n _upgradeTo(newImplementation);\\n if (data.length > 0 || forceCall) {\\n AddressUpgradeable.functionDelegateCall(newImplementation, data);\\n }\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCallUUPS(address newImplementation, bytes memory data, bool forceCall) internal {\\n // Upgrades from old implementations will perform a rollback test. This test requires the new\\n // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n // this special case will break upgrade paths from old UUPS implementation to new ones.\\n if (StorageSlotUpgradeable.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n _setImplementation(newImplementation);\\n } else {\\n try IERC1822ProxiableUpgradeable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n require(slot == _IMPLEMENTATION_SLOT, \\\"ERC1967Upgrade: unsupported proxiableUUID\\\");\\n } catch {\\n revert(\\\"ERC1967Upgrade: new implementation is not UUPS\\\");\\n }\\n _upgradeToAndCall(newImplementation, data, forceCall);\\n }\\n }\\n\\n /**\\n * @dev Storage slot with the admin of the contract.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _getAdmin() internal view returns (address) {\\n return StorageSlotUpgradeable.getAddressSlot(_ADMIN_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 admin slot.\\n */\\n function _setAdmin(address newAdmin) private {\\n require(newAdmin != address(0), \\\"ERC1967: new admin is the zero address\\\");\\n StorageSlotUpgradeable.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n */\\n function _changeAdmin(address newAdmin) internal {\\n emit AdminChanged(_getAdmin(), newAdmin);\\n _setAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\\n */\\n bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n /**\\n * @dev Returns the current beacon.\\n */\\n function _getBeacon() internal view returns (address) {\\n return StorageSlotUpgradeable.getAddressSlot(_BEACON_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new beacon in the EIP1967 beacon slot.\\n */\\n function _setBeacon(address newBeacon) private {\\n require(AddressUpgradeable.isContract(newBeacon), \\\"ERC1967: new beacon is not a contract\\\");\\n require(\\n AddressUpgradeable.isContract(IBeaconUpgradeable(newBeacon).implementation()),\\n \\\"ERC1967: beacon implementation is not a contract\\\"\\n );\\n StorageSlotUpgradeable.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n }\\n\\n /**\\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n *\\n * Emits a {BeaconUpgraded} event.\\n */\\n function _upgradeBeaconToAndCall(address newBeacon, bytes memory data, bool forceCall) internal {\\n _setBeacon(newBeacon);\\n emit BeaconUpgraded(newBeacon);\\n if (data.length > 0 || forceCall) {\\n AddressUpgradeable.functionDelegateCall(IBeaconUpgradeable(newBeacon).implementation(), data);\\n }\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x7795808e3899c805254e3ae58074b20f799b466e3f43e057e47bedee5fb771f8\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeaconUpgradeable {\\n /**\\n * @dev Must return an address that can be used as a delegate call target.\\n *\\n * {BeaconProxy} will check that this address is a contract.\\n */\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/UUPSUpgradeable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport \\\"../ERC1967/ERC1967UpgradeUpgradeable.sol\\\";\\nimport {Initializable} from \\\"./Initializable.sol\\\";\\n\\n/**\\n * @dev An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an\\n * {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy.\\n *\\n * A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is\\n * reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing\\n * `UUPSUpgradeable` with a custom implementation of upgrades.\\n *\\n * The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism.\\n *\\n * _Available since v4.1._\\n */\\nabstract contract UUPSUpgradeable is Initializable, IERC1822ProxiableUpgradeable, ERC1967UpgradeUpgradeable {\\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable state-variable-assignment\\n address private immutable __self = address(this);\\n\\n /**\\n * @dev Check that the execution is being performed through a delegatecall call and that the execution context is\\n * a proxy contract with an implementation (as defined in ERC1967) pointing to self. This should only be the case\\n * for UUPS and transparent proxies that are using the current contract as their implementation. Execution of a\\n * function through ERC1167 minimal proxies (clones) would not normally pass this test, but is not guaranteed to\\n * fail.\\n */\\n modifier onlyProxy() {\\n require(address(this) != __self, \\\"Function must be called through delegatecall\\\");\\n require(_getImplementation() == __self, \\\"Function must be called through active proxy\\\");\\n _;\\n }\\n\\n /**\\n * @dev Check that the execution is not being performed through a delegate call. This allows a function to be\\n * callable on the implementing contract but not through proxies.\\n */\\n modifier notDelegated() {\\n require(address(this) == __self, \\\"UUPSUpgradeable: must not be called through delegatecall\\\");\\n _;\\n }\\n\\n function __UUPSUpgradeable_init() internal onlyInitializing {\\n }\\n\\n function __UUPSUpgradeable_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the\\n * implementation. It is used to validate the implementation's compatibility when performing an upgrade.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\\n */\\n function proxiableUUID() external view virtual override notDelegated returns (bytes32) {\\n return _IMPLEMENTATION_SLOT;\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy to `newImplementation`.\\n *\\n * Calls {_authorizeUpgrade}.\\n *\\n * Emits an {Upgraded} event.\\n *\\n * @custom:oz-upgrades-unsafe-allow-reachable delegatecall\\n */\\n function upgradeTo(address newImplementation) public virtual onlyProxy {\\n _authorizeUpgrade(newImplementation);\\n _upgradeToAndCallUUPS(newImplementation, new bytes(0), false);\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call\\n * encoded in `data`.\\n *\\n * Calls {_authorizeUpgrade}.\\n *\\n * Emits an {Upgraded} event.\\n *\\n * @custom:oz-upgrades-unsafe-allow-reachable delegatecall\\n */\\n function upgradeToAndCall(address newImplementation, bytes memory data) public payable virtual onlyProxy {\\n _authorizeUpgrade(newImplementation);\\n _upgradeToAndCallUUPS(newImplementation, data, true);\\n }\\n\\n /**\\n * @dev Function that should revert when `msg.sender` is not authorized to upgrade the contract. Called by\\n * {upgradeTo} and {upgradeToAndCall}.\\n *\\n * Normally, this function will use an xref:access.adoc[access control] modifier such as {Ownable-onlyOwner}.\\n *\\n * ```solidity\\n * function _authorizeUpgrade(address) internal override onlyOwner {}\\n * ```\\n */\\n function _authorizeUpgrade(address newImplementation) internal virtual;\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0xefb41f5c1a00249b7a99f0782f8c557865605426a3fb6e5fe9ae334293ae4f33\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n function __Context_init() internal onlyInitializing {\\n }\\n\\n function __Context_init_unchained() internal onlyInitializing {\\n }\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n function _contextSuffixLength() internal view virtual returns (uint256) {\\n return 0;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x75097e35253e7fb282ee4d7f27a80eaacfa759923185bf17302a89cbc059c5ef\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/StorageSlot.sol)\\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```solidity\\n * contract ERC1967 {\\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n * function _getImplementation() internal view returns (address) {\\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n * }\\n *\\n * function _setImplementation(address newImplementation) internal {\\n * require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n * }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._\\n * _Available since v4.9 for `string`, `bytes`._\\n */\\nlibrary StorageSlotUpgradeable {\\n struct AddressSlot {\\n address value;\\n }\\n\\n struct BooleanSlot {\\n bool value;\\n }\\n\\n struct Bytes32Slot {\\n bytes32 value;\\n }\\n\\n struct Uint256Slot {\\n uint256 value;\\n }\\n\\n struct StringSlot {\\n string value;\\n }\\n\\n struct BytesSlot {\\n bytes value;\\n }\\n\\n /**\\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n */\\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n */\\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n */\\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n */\\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` with member `value` located at `slot`.\\n */\\n function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\\n */\\n function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` with member `value` located at `slot`.\\n */\\n function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\\n */\\n function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n}\\n\",\"keccak256\":\"0x07ac95acad040f1fb1f6120dd0aa5f702db69446e95f82613721879d30de0908\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165Upgradeable.sol\\\";\\nimport {Initializable} from \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165Upgradeable is Initializable, IERC165Upgradeable {\\n function __ERC165_init() internal onlyInitializing {\\n }\\n\\n function __ERC165_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165Upgradeable).interfaceId;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0xd90d7723512df65ae417adaf0801042940f0dabd60039ceeaffe34aa5b238da1\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165Upgradeable {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/IERC1967.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (interfaces/IERC1967.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\\n *\\n * _Available since v4.8.3._\\n */\\ninterface IERC1967 {\\n /**\\n * @dev Emitted when the implementation is upgraded.\\n */\\n event Upgraded(address indexed implementation);\\n\\n /**\\n * @dev Emitted when the admin account has changed.\\n */\\n event AdminChanged(address previousAdmin, address newAdmin);\\n\\n /**\\n * @dev Emitted when the beacon is changed.\\n */\\n event BeaconUpgraded(address indexed beacon);\\n}\\n\",\"keccak256\":\"0x3cbef5ebc24b415252e2f8c0c9254555d30d9f085603b4b80d9b5ed20ab87e90\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822Proxiable {\\n /**\\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n * address.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy.\\n */\\n function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/Clones.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/Clones.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev https://eips.ethereum.org/EIPS/eip-1167[EIP 1167] is a standard for\\n * deploying minimal proxy contracts, also known as \\\"clones\\\".\\n *\\n * > To simply and cheaply clone contract functionality in an immutable way, this standard specifies\\n * > a minimal bytecode implementation that delegates all calls to a known, fixed address.\\n *\\n * The library includes functions to deploy a proxy using either `create` (traditional deployment) or `create2`\\n * (salted deterministic deployment). It also includes functions to predict the addresses of clones deployed using the\\n * deterministic method.\\n *\\n * _Available since v3.4._\\n */\\nlibrary Clones {\\n /**\\n * @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`.\\n *\\n * This function uses the create opcode, which should never revert.\\n */\\n function clone(address implementation) internal returns (address instance) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n // Cleans the upper 96 bits of the `implementation` word, then packs the first 3 bytes\\n // of the `implementation` address with the bytecode before the address.\\n mstore(0x00, or(shr(0xe8, shl(0x60, implementation)), 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000))\\n // Packs the remaining 17 bytes of `implementation` with the bytecode after the address.\\n mstore(0x20, or(shl(0x78, implementation), 0x5af43d82803e903d91602b57fd5bf3))\\n instance := create(0, 0x09, 0x37)\\n }\\n require(instance != address(0), \\\"ERC1167: create failed\\\");\\n }\\n\\n /**\\n * @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`.\\n *\\n * This function uses the create2 opcode and a `salt` to deterministically deploy\\n * the clone. Using the same `implementation` and `salt` multiple time will revert, since\\n * the clones cannot be deployed twice at the same address.\\n */\\n function cloneDeterministic(address implementation, bytes32 salt) internal returns (address instance) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n // Cleans the upper 96 bits of the `implementation` word, then packs the first 3 bytes\\n // of the `implementation` address with the bytecode before the address.\\n mstore(0x00, or(shr(0xe8, shl(0x60, implementation)), 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000))\\n // Packs the remaining 17 bytes of `implementation` with the bytecode after the address.\\n mstore(0x20, or(shl(0x78, implementation), 0x5af43d82803e903d91602b57fd5bf3))\\n instance := create2(0, 0x09, 0x37, salt)\\n }\\n require(instance != address(0), \\\"ERC1167: create2 failed\\\");\\n }\\n\\n /**\\n * @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}.\\n */\\n function predictDeterministicAddress(\\n address implementation,\\n bytes32 salt,\\n address deployer\\n ) internal pure returns (address predicted) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n let ptr := mload(0x40)\\n mstore(add(ptr, 0x38), deployer)\\n mstore(add(ptr, 0x24), 0x5af43d82803e903d91602b57fd5bf3ff)\\n mstore(add(ptr, 0x14), implementation)\\n mstore(ptr, 0x3d602d80600a3d3981f3363d3d373d3d3d363d73)\\n mstore(add(ptr, 0x58), salt)\\n mstore(add(ptr, 0x78), keccak256(add(ptr, 0x0c), 0x37))\\n predicted := keccak256(add(ptr, 0x43), 0x55)\\n }\\n }\\n\\n /**\\n * @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}.\\n */\\n function predictDeterministicAddress(\\n address implementation,\\n bytes32 salt\\n ) internal view returns (address predicted) {\\n return predictDeterministicAddress(implementation, salt, address(this));\\n }\\n}\\n\",\"keccak256\":\"0x01f055f5c26ba25d7f83e9aa9ba877fbea4d0bf22227de046ea67494bc932999\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (proxy/ERC1967/ERC1967Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../Proxy.sol\\\";\\nimport \\\"./ERC1967Upgrade.sol\\\";\\n\\n/**\\n * @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an\\n * implementation address that can be changed. This address is stored in storage in the location specified by\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the\\n * implementation behind the proxy.\\n */\\ncontract ERC1967Proxy is Proxy, ERC1967Upgrade {\\n /**\\n * @dev Initializes the upgradeable proxy with an initial implementation specified by `_logic`.\\n *\\n * If `_data` is nonempty, it's used as data in a delegate call to `_logic`. This will typically be an encoded\\n * function call, and allows initializing the storage of the proxy like a Solidity constructor.\\n */\\n constructor(address _logic, bytes memory _data) payable {\\n _upgradeToAndCall(_logic, _data, false);\\n }\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _implementation() internal view virtual override returns (address impl) {\\n return ERC1967Upgrade._getImplementation();\\n }\\n}\\n\",\"keccak256\":\"0xa2b22da3032e50b55f95ec1d13336102d675f341167aa76db571ef7f8bb7975d\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../beacon/IBeacon.sol\\\";\\nimport \\\"../../interfaces/IERC1967.sol\\\";\\nimport \\\"../../interfaces/draft-IERC1822.sol\\\";\\nimport \\\"../../utils/Address.sol\\\";\\nimport \\\"../../utils/StorageSlot.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n */\\nabstract contract ERC1967Upgrade is IERC1967 {\\n // This is the keccak-256 hash of \\\"eip1967.proxy.rollback\\\" subtracted by 1\\n bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n /**\\n * @dev Storage slot with the address of the current implementation.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _getImplementation() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 implementation slot.\\n */\\n function _setImplementation(address newImplementation) private {\\n require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n }\\n\\n /**\\n * @dev Perform implementation upgrade\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeTo(address newImplementation) internal {\\n _setImplementation(newImplementation);\\n emit Upgraded(newImplementation);\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCall(address newImplementation, bytes memory data, bool forceCall) internal {\\n _upgradeTo(newImplementation);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(newImplementation, data);\\n }\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCallUUPS(address newImplementation, bytes memory data, bool forceCall) internal {\\n // Upgrades from old implementations will perform a rollback test. This test requires the new\\n // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n // this special case will break upgrade paths from old UUPS implementation to new ones.\\n if (StorageSlot.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n _setImplementation(newImplementation);\\n } else {\\n try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n require(slot == _IMPLEMENTATION_SLOT, \\\"ERC1967Upgrade: unsupported proxiableUUID\\\");\\n } catch {\\n revert(\\\"ERC1967Upgrade: new implementation is not UUPS\\\");\\n }\\n _upgradeToAndCall(newImplementation, data, forceCall);\\n }\\n }\\n\\n /**\\n * @dev Storage slot with the admin of the contract.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _getAdmin() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_ADMIN_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 admin slot.\\n */\\n function _setAdmin(address newAdmin) private {\\n require(newAdmin != address(0), \\\"ERC1967: new admin is the zero address\\\");\\n StorageSlot.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n */\\n function _changeAdmin(address newAdmin) internal {\\n emit AdminChanged(_getAdmin(), newAdmin);\\n _setAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\\n */\\n bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n /**\\n * @dev Returns the current beacon.\\n */\\n function _getBeacon() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_BEACON_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new beacon in the EIP1967 beacon slot.\\n */\\n function _setBeacon(address newBeacon) private {\\n require(Address.isContract(newBeacon), \\\"ERC1967: new beacon is not a contract\\\");\\n require(\\n Address.isContract(IBeacon(newBeacon).implementation()),\\n \\\"ERC1967: beacon implementation is not a contract\\\"\\n );\\n StorageSlot.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n }\\n\\n /**\\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n *\\n * Emits a {BeaconUpgraded} event.\\n */\\n function _upgradeBeaconToAndCall(address newBeacon, bytes memory data, bool forceCall) internal {\\n _setBeacon(newBeacon);\\n emit BeaconUpgraded(newBeacon);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x3b21ae06bf5957f73fa16754b0669c77b7abd8ba6c072d35c3281d446fdb86c2\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (proxy/Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\\n * be specified by overriding the virtual {_implementation} function.\\n *\\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\\n * different contract through the {_delegate} function.\\n *\\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\\n */\\nabstract contract Proxy {\\n /**\\n * @dev Delegates the current call to `implementation`.\\n *\\n * This function does not return to its internal call site, it will return directly to the external caller.\\n */\\n function _delegate(address implementation) internal virtual {\\n assembly {\\n // Copy msg.data. We take full control of memory in this inline assembly\\n // block because it will not return to Solidity code. We overwrite the\\n // Solidity scratch pad at memory position 0.\\n calldatacopy(0, 0, calldatasize())\\n\\n // Call the implementation.\\n // out and outsize are 0 because we don't know the size yet.\\n let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)\\n\\n // Copy the returned data.\\n returndatacopy(0, 0, returndatasize())\\n\\n switch result\\n // delegatecall returns 0 on error.\\n case 0 {\\n revert(0, returndatasize())\\n }\\n default {\\n return(0, returndatasize())\\n }\\n }\\n }\\n\\n /**\\n * @dev This is a virtual function that should be overridden so it returns the address to which the fallback function\\n * and {_fallback} should delegate.\\n */\\n function _implementation() internal view virtual returns (address);\\n\\n /**\\n * @dev Delegates the current call to the address returned by `_implementation()`.\\n *\\n * This function does not return to its internal call site, it will return directly to the external caller.\\n */\\n function _fallback() internal virtual {\\n _beforeFallback();\\n _delegate(_implementation());\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\\n * function in the contract matches the call data.\\n */\\n fallback() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data\\n * is empty.\\n */\\n receive() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`\\n * call, or as part of the Solidity `fallback` or `receive` functions.\\n *\\n * If overridden should call `super._beforeFallback()`.\\n */\\n function _beforeFallback() internal virtual {}\\n}\\n\",\"keccak256\":\"0xc130fe33f1b2132158531a87734153293f6d07bc263ff4ac90e85da9c82c0e27\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeacon {\\n /**\\n * @dev Must return an address that can be used as a delegate call target.\\n *\\n * {BeaconProxy} will check that this address is a contract.\\n */\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/StorageSlot.sol)\\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```solidity\\n * contract ERC1967 {\\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n * function _getImplementation() internal view returns (address) {\\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n * }\\n *\\n * function _setImplementation(address newImplementation) internal {\\n * require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n * }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._\\n * _Available since v4.9 for `string`, `bytes`._\\n */\\nlibrary StorageSlot {\\n struct AddressSlot {\\n address value;\\n }\\n\\n struct BooleanSlot {\\n bool value;\\n }\\n\\n struct Bytes32Slot {\\n bytes32 value;\\n }\\n\\n struct Uint256Slot {\\n uint256 value;\\n }\\n\\n struct StringSlot {\\n string value;\\n }\\n\\n struct BytesSlot {\\n bytes value;\\n }\\n\\n /**\\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n */\\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n */\\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n */\\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n */\\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` with member `value` located at `slot`.\\n */\\n function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\\n */\\n function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` with member `value` located at `slot`.\\n */\\n function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\\n */\\n function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n}\\n\",\"keccak256\":\"0xf09e68aa0dc6722a25bc46490e8d48ed864466d17313b8a0b254c36b54e49899\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165 is IERC165 {\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165).interfaceId;\\n }\\n}\\n\",\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"src/dao/IDAO.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IDAO\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for DAOs within the Aragon App DAO framework.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IDAO {\\n /// @notice The action struct to be consumed by the DAO's `execute` function resulting in an external call.\\n /// @param to The address to call.\\n /// @param value The native token value to be sent with the call.\\n /// @param data The bytes-encoded function selector and calldata for the call.\\n struct Action {\\n address to;\\n uint256 value;\\n bytes data;\\n }\\n\\n /// @notice Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\\n /// @param _where The address of the contract.\\n /// @param _who The address of a EOA or contract to give the permissions.\\n /// @param _permissionId The permission identifier.\\n /// @param _data The optional data passed to the `PermissionCondition` registered.\\n /// @return Returns true if the address has permission, false if not.\\n function hasPermission(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes memory _data\\n ) external view returns (bool);\\n\\n /// @notice Updates the DAO metadata (e.g., an IPFS hash).\\n /// @param _metadata The IPFS hash of the new metadata object.\\n function setMetadata(bytes calldata _metadata) external;\\n\\n /// @notice Emitted when the DAO metadata is updated.\\n /// @param metadata The IPFS hash of the new metadata object.\\n event MetadataSet(bytes metadata);\\n\\n /// @notice Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted.\\n /// @param _callId The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce.\\n /// @param _actions The array of actions.\\n /// @param _allowFailureMap A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @return The array of results obtained from the executed actions in `bytes`.\\n /// @return The resulting failure map containing the actions have actually failed.\\n function execute(\\n bytes32 _callId,\\n Action[] memory _actions,\\n uint256 _allowFailureMap\\n ) external returns (bytes[] memory, uint256);\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param actor The address of the caller.\\n /// @param callId The ID of the call.\\n /// @param actions The array of actions executed.\\n /// @param allowFailureMap The allow failure map encoding which actions are allowed to fail.\\n /// @param failureMap The failure map encoding which actions have failed.\\n /// @param execResults The array with the results of the executed actions.\\n /// @dev The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce.\\n event Executed(\\n address indexed actor,\\n bytes32 callId,\\n Action[] actions,\\n uint256 allowFailureMap,\\n uint256 failureMap,\\n bytes[] execResults\\n );\\n\\n /// @notice Emitted when a standard callback is registered.\\n /// @param interfaceId The ID of the interface.\\n /// @param callbackSelector The selector of the callback function.\\n /// @param magicNumber The magic number to be registered for the callback function selector.\\n event StandardCallbackRegistered(\\n bytes4 interfaceId,\\n bytes4 callbackSelector,\\n bytes4 magicNumber\\n );\\n\\n /// @notice Deposits (native) tokens to the DAO contract with a reference string.\\n /// @param _token The address of the token or address(0) in case of the native token.\\n /// @param _amount The amount of tokens to deposit.\\n /// @param _reference The reference describing the deposit reason.\\n function deposit(address _token, uint256 _amount, string calldata _reference) external payable;\\n\\n /// @notice Emitted when a token deposit has been made to the DAO.\\n /// @param sender The address of the sender.\\n /// @param token The address of the deposited token.\\n /// @param amount The amount of tokens deposited.\\n /// @param _reference The reference describing the deposit reason.\\n event Deposited(\\n address indexed sender,\\n address indexed token,\\n uint256 amount,\\n string _reference\\n );\\n\\n /// @notice Emitted when a native token deposit has been made to the DAO.\\n /// @dev This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).\\n /// @param sender The address of the sender.\\n /// @param amount The amount of native tokens deposited.\\n event NativeTokenDeposited(address sender, uint256 amount);\\n\\n /// @notice Setter for the trusted forwarder verifying the meta transaction.\\n /// @param _trustedForwarder The trusted forwarder address.\\n function setTrustedForwarder(address _trustedForwarder) external;\\n\\n /// @notice Getter for the trusted forwarder verifying the meta transaction.\\n /// @return The trusted forwarder address.\\n function getTrustedForwarder() external view returns (address);\\n\\n /// @notice Emitted when a new TrustedForwarder is set on the DAO.\\n /// @param forwarder the new forwarder address.\\n event TrustedForwarderSet(address forwarder);\\n\\n /// @notice Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\\n /// @param _hash The hash of the data to be signed.\\n /// @param _signature The signature byte array associated with `_hash`.\\n /// @return Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not.\\n function isValidSignature(bytes32 _hash, bytes memory _signature) external returns (bytes4);\\n\\n /// @notice Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\\n /// @param _interfaceId The ID of the interface.\\n /// @param _callbackSelector The selector of the callback function.\\n /// @param _magicNumber The magic number to be registered for the function signature.\\n function registerStandardCallback(\\n bytes4 _interfaceId,\\n bytes4 _callbackSelector,\\n bytes4 _magicNumber\\n ) external;\\n\\n /// @notice Removed function being left here to not corrupt the IDAO interface ID. Any call will revert.\\n /// @dev Introduced in v1.0.0. Removed in v1.4.0.\\n function setSignatureValidator(address) external;\\n}\\n\",\"keccak256\":\"0xb7f615523c26de042edce98731c658f44a1edb2464387ac1b642c4c69f57128e\",\"license\":\"AGPL-3.0-or-later\"},\"src/mocks/plugin/PluginSetupMockData.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {PermissionLib} from \\\"../../permission/PermissionLib.sol\\\";\\n\\naddress constant NO_CONDITION = address(0);\\n\\nerror ConflictingValues();\\n\\n/// @notice Creates a mock `MultiTargetPermission` array by converting a range of `uint160` values into `address` values.\\n/// @param rangeStart The start of the range.\\n/// @param rangeEnd The end of the range (that is not included).\\n/// @param op The permission operation type.\\n/// @return permissions The mock array of permissions.\\n/// @dev DO NOT USE IN PRODUCTION!\\nfunction mockPermissions(\\n uint160 rangeStart,\\n uint160 rangeEnd,\\n PermissionLib.Operation op\\n) pure returns (PermissionLib.MultiTargetPermission[] memory permissions) {\\n if (rangeStart > rangeEnd) revert ConflictingValues();\\n\\n permissions = new PermissionLib.MultiTargetPermission[](rangeEnd - rangeStart);\\n\\n for (uint160 i = rangeStart; i < rangeEnd; i++) {\\n permissions[i - rangeStart] = PermissionLib.MultiTargetPermission({\\n operation: op,\\n where: address(i),\\n who: address(i),\\n condition: PermissionLib.NO_CONDITION,\\n permissionId: keccak256(\\\"MOCK_PERMISSION\\\")\\n });\\n }\\n}\\n\\n/// @notice Creates a mock array of helper addresses of specified length by converting `uint160` values starting from 0 into `address` values.\\n/// @param len The length of the helper array.\\n/// @return helpers The mock array of helper addresses.\\n/// @dev DO NOT USE IN PRODUCTION!\\nfunction mockHelpers(uint160 len) pure returns (address[] memory helpers) {\\n helpers = new address[](len);\\n\\n for (uint160 i = 0; i < len; i++) {\\n helpers[i] = address(i);\\n }\\n}\\n\",\"keccak256\":\"0x529d1b7ea4c348fe18edf81a044792ca8aa1f6ad9a7d2edfd35e38bf8372abf9\",\"license\":\"AGPL-3.0-or-later\"},\"src/mocks/plugin/PluginUUPSUpgradeableMock.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\n/* solhint-disable one-contract-per-file */\\npragma solidity ^0.8.8;\\n\\nimport {PluginUUPSUpgradeable} from \\\"../../plugin/PluginUUPSUpgradeable.sol\\\";\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice A mock upgradeable plugin to be deployed via the UUPS proxy pattern.\\n/// v1.1 (Release 1, Build 1)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableMockBuild1 is PluginUUPSUpgradeable {\\n uint256 public state1;\\n\\n function initialize(IDAO _dao) external initializer {\\n __PluginUUPSUpgradeable_init(_dao);\\n state1 = 1;\\n }\\n}\\n\\n/// @notice A mock upgradeable plugin to be deployed via the UUPS proxy pattern.\\n/// v1.1 (Release 1, Build 2)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableMockBuild2 is PluginUUPSUpgradeable {\\n uint256 public state1;\\n uint256 public state2;\\n\\n function initialize(IDAO _dao) external reinitializer(2) {\\n __PluginUUPSUpgradeable_init(_dao);\\n state1 = 1;\\n state2 = 2;\\n }\\n\\n function initializeFrom(uint16 _previousBuild) external reinitializer(2) {\\n if (_previousBuild < 2) {\\n state2 = 2;\\n }\\n }\\n}\\n\\n/// @notice A mock upgradeable plugin to be deployed via the UUPS proxy pattern.\\n/// v1.1 (Release 1, Build 3)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableMockBuild3 is PluginUUPSUpgradeable {\\n uint256 public state1;\\n uint256 public state2;\\n uint256 public state3;\\n\\n function initialize(IDAO _dao) external reinitializer(3) {\\n __PluginUUPSUpgradeable_init(_dao);\\n state1 = 1;\\n state2 = 2;\\n state3 = 3;\\n }\\n\\n function initializeFrom(uint16 _previousBuild) external reinitializer(3) {\\n if (_previousBuild < 2) {\\n state2 = 2;\\n }\\n if (_previousBuild < 3) {\\n state3 = 3;\\n }\\n }\\n}\\n\\n/// @notice A mock upgradeable plugin missing an initializer function.\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableMockBad is PluginUUPSUpgradeable {\\n uint256 public state1;\\n\\n function notAnInitializer(IDAO _dao) external {\\n __PluginUUPSUpgradeable_init(_dao);\\n state1 = 1;\\n }\\n}\\n\",\"keccak256\":\"0x2917df3b1da0de27f58cf531afeaa4e6c4285717247cbdd9ecc7880ae5cb9cb0\",\"license\":\"AGPL-3.0-or-later\"},\"src/mocks/plugin/PluginUUPSUpgradeableSetupMock.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\n/* solhint-disable one-contract-per-file */\\npragma solidity ^0.8.8;\\n\\nimport {PermissionLib} from \\\"../../permission/PermissionLib.sol\\\";\\nimport {IPluginSetup} from \\\"../../plugin/setup/IPluginSetup.sol\\\";\\nimport {PluginUpgradeableSetup} from \\\"../../plugin/setup/PluginUpgradeableSetup.sol\\\";\\nimport {ProxyLib} from \\\"../../utils/deployment/ProxyLib.sol\\\";\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\nimport {mockPermissions, mockHelpers} from \\\"./PluginSetupMockData.sol\\\";\\nimport {PluginUUPSUpgradeableMockBuild1, PluginUUPSUpgradeableMockBuild2, PluginUUPSUpgradeableMockBuild3} from \\\"./PluginUUPSUpgradeableMock.sol\\\";\\n\\n/// @notice A mock plugin setup of an upgradeable plugin to be deployed via the UUPS pattern.\\n/// v1.1 (Release 1, Build 1)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableSetupMockBuild1 is PluginUpgradeableSetup {\\n using ProxyLib for address;\\n\\n uint16 internal constant THIS_BUILD = 1;\\n\\n constructor() PluginUpgradeableSetup(address(new PluginUUPSUpgradeableMockBuild1())) {}\\n\\n /// @inheritdoc IPluginSetup\\n function prepareInstallation(\\n address _dao,\\n bytes memory\\n ) public returns (address plugin, PreparedSetupData memory preparedSetupData) {\\n bytes memory initData = abi.encodeCall(\\n PluginUUPSUpgradeableMockBuild1.initialize,\\n (IDAO(_dao))\\n );\\n plugin = implementation().deployUUPSProxy(initData);\\n preparedSetupData.helpers = mockHelpers(1);\\n preparedSetupData.permissions = mockPermissions(0, 1, PermissionLib.Operation.Grant);\\n }\\n\\n /// @inheritdoc IPluginSetup\\n /// @dev The default implementation for the initial build 1 that reverts because no earlier build exists.\\n function prepareUpdate(\\n address _dao,\\n uint16 _fromBuild,\\n SetupPayload calldata _payload\\n ) external pure virtual returns (bytes memory, PreparedSetupData memory) {\\n (_dao, _fromBuild, _payload);\\n revert InvalidUpdatePath({fromBuild: 0, thisBuild: THIS_BUILD});\\n }\\n\\n /// @inheritdoc IPluginSetup\\n function prepareUninstallation(\\n address _dao,\\n SetupPayload calldata _payload\\n ) external pure returns (PermissionLib.MultiTargetPermission[] memory permissions) {\\n (_dao, _payload);\\n permissions = mockPermissions(0, THIS_BUILD, PermissionLib.Operation.Revoke);\\n }\\n}\\n\\n/// @notice A mock plugin setup of an upgradeable plugin to be deployed via the UUPS pattern.\\n/// v1.2 (Release 1, Build 2)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableSetupMockBuild2 is PluginUpgradeableSetup {\\n using ProxyLib for address;\\n\\n uint16 internal constant THIS_BUILD = 2;\\n\\n constructor() PluginUpgradeableSetup(address(new PluginUUPSUpgradeableMockBuild2())) {}\\n\\n /// @inheritdoc IPluginSetup\\n function prepareInstallation(\\n address _dao,\\n bytes memory\\n ) external returns (address plugin, PreparedSetupData memory preparedSetupData) {\\n bytes memory initData = abi.encodeCall(\\n PluginUUPSUpgradeableMockBuild2.initialize,\\n (IDAO(_dao))\\n );\\n plugin = implementation().deployUUPSProxy(initData);\\n preparedSetupData.helpers = mockHelpers(THIS_BUILD);\\n preparedSetupData.permissions = mockPermissions(\\n 0,\\n THIS_BUILD,\\n PermissionLib.Operation.Grant\\n );\\n }\\n\\n /// @inheritdoc IPluginSetup\\n function prepareUpdate(\\n address _dao,\\n uint16 _fromBuild,\\n SetupPayload calldata _payload\\n )\\n external\\n pure\\n override\\n returns (bytes memory initData, PreparedSetupData memory preparedSetupData)\\n {\\n (_dao, _payload);\\n\\n // Update from Build 1\\n if (_fromBuild == 1) {\\n preparedSetupData.helpers = mockHelpers(THIS_BUILD);\\n initData = abi.encodeCall(PluginUUPSUpgradeableMockBuild2.initializeFrom, (_fromBuild));\\n preparedSetupData.permissions = mockPermissions(\\n _fromBuild,\\n THIS_BUILD,\\n PermissionLib.Operation.Grant\\n );\\n }\\n }\\n\\n /// @inheritdoc IPluginSetup\\n function prepareUninstallation(\\n address _dao,\\n SetupPayload calldata _payload\\n ) external pure returns (PermissionLib.MultiTargetPermission[] memory permissions) {\\n (_dao, _payload);\\n permissions = mockPermissions(0, THIS_BUILD, PermissionLib.Operation.Revoke);\\n }\\n}\\n\\n/// @notice A mock plugin setup of an upgradeable plugin to be deployed via the UUPS pattern.\\n/// v1.3 (Release 1, Build 3)\\ncontract PluginUUPSUpgradeableSetupMockBuild3 is PluginUpgradeableSetup {\\n using ProxyLib for address;\\n\\n uint16 internal constant THIS_BUILD = 3;\\n\\n constructor() PluginUpgradeableSetup(address(new PluginUUPSUpgradeableMockBuild3())) {}\\n\\n /// @inheritdoc IPluginSetup\\n function prepareInstallation(\\n address _dao,\\n bytes memory\\n ) external returns (address plugin, PreparedSetupData memory preparedSetupData) {\\n bytes memory initData = abi.encodeCall(\\n PluginUUPSUpgradeableMockBuild3.initialize,\\n (IDAO(_dao))\\n );\\n plugin = implementation().deployUUPSProxy(initData);\\n preparedSetupData.helpers = mockHelpers(THIS_BUILD);\\n preparedSetupData.permissions = mockPermissions(\\n 0,\\n THIS_BUILD,\\n PermissionLib.Operation.Grant\\n );\\n }\\n\\n /// @inheritdoc IPluginSetup\\n function prepareUpdate(\\n address _dao,\\n uint16 _fromBuild,\\n SetupPayload calldata _payload\\n )\\n external\\n pure\\n override\\n returns (bytes memory initData, PreparedSetupData memory preparedSetupData)\\n {\\n (_dao, _payload);\\n\\n // Update from Build 1\\n if (_fromBuild == 1) {\\n preparedSetupData.helpers = mockHelpers(THIS_BUILD);\\n initData = abi.encodeCall(PluginUUPSUpgradeableMockBuild3.initializeFrom, (_fromBuild));\\n preparedSetupData.permissions = mockPermissions(\\n _fromBuild,\\n THIS_BUILD,\\n PermissionLib.Operation.Grant\\n );\\n\\n // If this update path should not be supported, you can revert with an error, e.g.,\\n // revert InvalidUpdatePath({fromBuild: _fromBuild, thisBuild: THIS_BUILD});\\n }\\n\\n // Update from Build 2\\n if (_fromBuild == 2) {\\n preparedSetupData.helpers = mockHelpers(THIS_BUILD);\\n initData = abi.encodeCall(PluginUUPSUpgradeableMockBuild3.initializeFrom, (_fromBuild));\\n preparedSetupData.permissions = mockPermissions(\\n _fromBuild,\\n THIS_BUILD,\\n PermissionLib.Operation.Grant\\n );\\n }\\n }\\n\\n /// @inheritdoc IPluginSetup\\n function prepareUninstallation(\\n address _dao,\\n SetupPayload calldata _payload\\n ) external pure returns (PermissionLib.MultiTargetPermission[] memory permissions) {\\n (_dao, _payload);\\n permissions = mockPermissions(0, THIS_BUILD, PermissionLib.Operation.Revoke);\\n }\\n}\\n\",\"keccak256\":\"0x6be5a7611fe85f0e6e1ea08f42bcce810bc4973da1eaa04c88445b8d9af130ba\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/PermissionLib.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title PermissionLib\\n/// @author Aragon X - 2021-2023\\n/// @notice A library containing objects for permission processing.\\n/// @custom:security-contact sirt@aragon.org\\nlibrary PermissionLib {\\n /// @notice A constant expressing that no condition is applied to a permission.\\n address public constant NO_CONDITION = address(0);\\n\\n /// @notice The types of permission operations available in the `PermissionManager`.\\n /// @param Grant The grant operation setting a permission without a condition.\\n /// @param Revoke The revoke operation removing a permission (that was granted with or without a condition).\\n /// @param GrantWithCondition The grant operation setting a permission with a condition.\\n enum Operation {\\n Grant,\\n Revoke,\\n GrantWithCondition\\n }\\n\\n /// @notice A struct containing the information for a permission to be applied on a single target contract without a condition.\\n /// @param operation The permission operation type.\\n /// @param who The address (EOA or contract) receiving the permission.\\n /// @param permissionId The permission identifier.\\n struct SingleTargetPermission {\\n Operation operation;\\n address who;\\n bytes32 permissionId;\\n }\\n\\n /// @notice A struct containing the information for a permission to be applied on multiple target contracts, optionally, with a condition.\\n /// @param operation The permission operation type.\\n /// @param where The address of the target contract for which `who` receives permission.\\n /// @param who The address (EOA or contract) receiving the permission.\\n /// @param condition The `PermissionCondition` that will be asked for authorization on calls connected to the specified permission identifier.\\n /// @param permissionId The permission identifier.\\n struct MultiTargetPermission {\\n Operation operation;\\n address where;\\n address who;\\n address condition;\\n bytes32 permissionId;\\n }\\n}\\n\",\"keccak256\":\"0x470faf3c4891ebc6420ef6cc09f6098917568ccc79268c90954d1478199b6097\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/DaoAuthorizableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ContextUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\\\";\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\nimport {_auth} from \\\"./auth.sol\\\";\\n\\n/// @title DaoAuthorizableUpgradeable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract contract providing a meta-transaction compatible modifier for upgradeable or cloneable contracts to authorize function calls through an associated DAO.\\n/// @dev Make sure to call `__DaoAuthorizableUpgradeable_init` during initialization of the inheriting contract.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract DaoAuthorizableUpgradeable is ContextUpgradeable {\\n /// @notice The associated DAO managing the permissions of inheriting contracts.\\n IDAO private dao_;\\n\\n /// @notice Initializes the contract by setting the associated DAO.\\n /// @param _dao The associated DAO address.\\n // solhint-disable-next-line func-name-mixedcase\\n function __DaoAuthorizableUpgradeable_init(IDAO _dao) internal onlyInitializing {\\n dao_ = _dao;\\n }\\n\\n /// @notice Returns the DAO contract.\\n /// @return The DAO contract.\\n function dao() public view returns (IDAO) {\\n return dao_;\\n }\\n\\n /// @notice A modifier to make functions on inheriting contracts authorized. Permissions to call the function are checked through the associated DAO's permission manager.\\n /// @param _permissionId The permission identifier required to call the method this modifier is applied to.\\n modifier auth(bytes32 _permissionId) {\\n _auth(dao_, address(this), _msgSender(), _permissionId, _msgData());\\n _;\\n }\\n\\n /// @notice This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain (see [OpenZeppelin's guide about storage gaps](https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps)).\\n uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0x7fac6b01b037ba1cb9d6a22d3f43b0785037dcf496ffb672434d9bf7227d2585\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/auth.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice Thrown if a call is unauthorized in the associated DAO.\\n/// @param dao The associated DAO.\\n/// @param where The context in which the authorization reverted.\\n/// @param who The address (EOA or contract) missing the permission.\\n/// @param permissionId The permission identifier.\\nerror DaoUnauthorized(address dao, address where, address who, bytes32 permissionId);\\n\\n/// @notice A free function checking if a caller is granted permissions on a target contract via a permission identifier that redirects the approval to a `PermissionCondition` if this was specified in the setup.\\n/// @param _where The address of the target contract for which `who` receives permission.\\n/// @param _who The address (EOA or contract) owning the permission.\\n/// @param _permissionId The permission identifier.\\n/// @param _data The optional data passed to the `PermissionCondition` registered.\\n/// @custom:security-contact sirt@aragon.org\\nfunction _auth(\\n IDAO _dao,\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes calldata _data\\n) view {\\n if (!_dao.hasPermission(_where, _who, _permissionId, _data))\\n revert DaoUnauthorized({\\n dao: address(_dao),\\n where: _where,\\n who: _who,\\n permissionId: _permissionId\\n });\\n}\\n\",\"keccak256\":\"0x878764b4f87fe0651fb3798fb9cb87c952f8c6caf6ae79c7f09de84df6c00298\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/IPlugin.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IPlugin\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the traits of a plugin.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IPlugin {\\n enum PluginType {\\n UUPS,\\n Cloneable,\\n Constructable\\n }\\n\\n /// @notice Returns the plugin's type\\n function pluginType() external view returns (PluginType);\\n}\\n\",\"keccak256\":\"0xc57cd0d10b6380ab7f54c713a509e88fd8f4ad9288313a0e8e12b8887817ddfe\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/PluginUUPSUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {UUPSUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\\\";\\nimport {IERC1822ProxiableUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport {ERC165Upgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\\\";\\n\\nimport {IProtocolVersion} from \\\"../utils/versioning/IProtocolVersion.sol\\\";\\nimport {ProtocolVersion} from \\\"../utils/versioning/ProtocolVersion.sol\\\";\\nimport {DaoAuthorizableUpgradeable} from \\\"../permission/auth/DaoAuthorizableUpgradeable.sol\\\";\\nimport {IDAO} from \\\"../dao/IDAO.sol\\\";\\nimport {IPlugin} from \\\"./IPlugin.sol\\\";\\n\\n/// @title PluginUUPSUpgradeable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract, upgradeable contract to inherit from when creating a plugin being deployed via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract PluginUUPSUpgradeable is\\n IPlugin,\\n ERC165Upgradeable,\\n UUPSUpgradeable,\\n DaoAuthorizableUpgradeable,\\n ProtocolVersion\\n{\\n // NOTE: When adding new state variables to the contract, the size of `_gap` has to be adapted below as well.\\n address public target;\\n\\n /// @dev Emitted each time the Target is set.\\n event TargetSet(address indexed previousTarget, address indexed newTarget);\\n\\n /// @notice Disables the initializers on the implementation contract to prevent it from being left uninitialized.\\n /// @custom:oz-upgrades-unsafe-allow constructor\\n constructor() {\\n _disableInitializers();\\n }\\n\\n /// @inheritdoc IPlugin\\n function pluginType() public pure override returns (PluginType) {\\n return PluginType.UUPS;\\n }\\n\\n /// @notice The ID of the permission required to call the `_authorizeUpgrade` function.\\n bytes32 public constant UPGRADE_PLUGIN_PERMISSION_ID = keccak256(\\\"UPGRADE_PLUGIN_PERMISSION\\\");\\n\\n /// @notice Initializes the plugin by storing the associated DAO.\\n /// @param _dao The DAO contract.\\n // solhint-disable-next-line func-name-mixedcase\\n function __PluginUUPSUpgradeable_init(IDAO _dao) internal virtual onlyInitializing {\\n __DaoAuthorizableUpgradeable_init(_dao);\\n }\\n\\n /// @dev Sets the target to a new target (`newTarget`).\\n /// @notice Can only be called by the current owner. TODO\\n function setTarget(address _target) public {\\n address previousTarget = target;\\n target = _target;\\n emit TargetSet(previousTarget, _target);\\n }\\n\\n /// @notice Checks if an interface is supported by this or its parent contract.\\n /// @param _interfaceId The ID of the interface.\\n /// @return Returns `true` if the interface is supported.\\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\\n return\\n _interfaceId == type(IPlugin).interfaceId ||\\n _interfaceId == type(IProtocolVersion).interfaceId ||\\n _interfaceId == type(IERC1822ProxiableUpgradeable).interfaceId ||\\n super.supportsInterface(_interfaceId);\\n }\\n\\n /// @notice Returns the address of the implementation contract in the [proxy storage slot](https://eips.ethereum.org/EIPS/eip-1967) slot the [UUPS proxy](https://eips.ethereum.org/EIPS/eip-1822) is pointing to.\\n /// @return The address of the implementation contract.\\n function implementation() public view returns (address) {\\n return _getImplementation();\\n }\\n\\n /// @notice Forwards the actions to the currently set `target` for the execution.\\n /// @param _callId Identifier for this execution.\\n /// @param _actions actions that will be eventually called.\\n /// @param _allowFailureMap Bitmap-encoded number. TODO:\\n /// @return execResults address of the implementation contract.\\n /// @return failureMap address of the implementation contract.\\n function _execute(\\n bytes32 _callId,\\n IDAO.Action[] calldata _actions,\\n uint256 _allowFailureMap\\n ) internal virtual returns (bytes[] memory execResults, uint256 failureMap) {\\n (execResults, failureMap) = IDAO(target).execute(_callId, _actions, _allowFailureMap);\\n }\\n\\n /// @notice Forwards the actions to the `target` for the execution.\\n /// @param _target Forwards the actions to the specific target.\\n /// @param _callId Identifier for this execution.\\n /// @param _actions actions that will be eventually called.\\n /// @param _allowFailureMap Bitmap-encoded number. TODO:\\n /// @return execResults address of the implementation contract.\\n /// @return failureMap address of the implementation contract.\\n function _execute(\\n address _target,\\n bytes32 _callId,\\n IDAO.Action[] calldata _actions,\\n uint256 _allowFailureMap\\n ) internal virtual returns (bytes[] memory execResults, uint256 failureMap) {\\n (execResults, failureMap) = IDAO(_target).execute(_callId, _actions, _allowFailureMap);\\n }\\n\\n /// @notice Internal method authorizing the upgrade of the contract via the [upgradeability mechanism for UUPS proxies](https://docs.openzeppelin.com/contracts/4.x/api/proxy#UUPSUpgradeable) (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\\n /// @dev The caller must have the `UPGRADE_PLUGIN_PERMISSION_ID` permission.\\n function _authorizeUpgrade(\\n address\\n )\\n internal\\n virtual\\n override\\n auth(UPGRADE_PLUGIN_PERMISSION_ID)\\n // solhint-disable-next-line no-empty-blocks\\n {\\n\\n }\\n\\n /// @notice This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain (see [OpenZeppelin's guide about storage gaps](https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps)).\\n uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0xce1d0126b3ae8c8afc887fba9f49b1cc35f84f1c1d5bf4cadee330c7ae15014f\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/setup/IPluginSetup.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {PermissionLib} from \\\"../../permission/PermissionLib.sol\\\";\\n\\n// solhint-disable-next-line no-unused-import\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @title IPluginSetup\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for a plugin setup contract to be consumed by the `PluginSetupProcessor` for plugin installations, updates, and uninstallations.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IPluginSetup {\\n /// @notice The data associated with a prepared setup.\\n /// @param helpers The address array of helpers (contracts or EOAs) associated with this plugin version after the installation or update.\\n /// @param permissions The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the installing or updating DAO.\\n struct PreparedSetupData {\\n address[] helpers;\\n PermissionLib.MultiTargetPermission[] permissions;\\n }\\n\\n /// @notice The payload for plugin updates and uninstallations containing the existing contracts as well as optional data to be consumed by the plugin setup.\\n /// @param plugin The address of the `Plugin`.\\n /// @param currentHelpers The address array of all current helpers (contracts or EOAs) associated with the plugin to update from.\\n /// @param data The bytes-encoded data containing the input parameters for the preparation of update/uninstall as specified in the corresponding ABI on the version's metadata.\\n struct SetupPayload {\\n address plugin;\\n address[] currentHelpers;\\n bytes data;\\n }\\n\\n /// @notice Prepares the installation of a plugin.\\n /// @param _dao The address of the installing DAO.\\n /// @param _data The bytes-encoded data containing the input parameters for the installation as specified in the plugin's build metadata JSON file.\\n /// @return plugin The address of the `Plugin` contract being prepared for installation.\\n /// @return preparedSetupData The deployed plugin's relevant data which consists of helpers and permissions.\\n function prepareInstallation(\\n address _dao,\\n bytes calldata _data\\n ) external returns (address plugin, PreparedSetupData memory preparedSetupData);\\n\\n /// @notice Prepares the update of a plugin.\\n /// @param _dao The address of the updating DAO.\\n /// @param _fromBuild The build number of the plugin to update from.\\n /// @param _payload The relevant data necessary for the `prepareUpdate`. See above.\\n /// @return initData The initialization data to be passed to upgradeable contracts when the update is applied in the `PluginSetupProcessor`.\\n /// @return preparedSetupData The deployed plugin's relevant data which consists of helpers and permissions.\\n function prepareUpdate(\\n address _dao,\\n uint16 _fromBuild,\\n SetupPayload calldata _payload\\n ) external returns (bytes memory initData, PreparedSetupData memory preparedSetupData);\\n\\n /// @notice Prepares the uninstallation of a plugin.\\n /// @param _dao The address of the uninstalling DAO.\\n /// @param _payload The relevant data necessary for the `prepareUninstallation`. See above.\\n /// @return permissions The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the uninstalling DAO.\\n function prepareUninstallation(\\n address _dao,\\n SetupPayload calldata _payload\\n ) external returns (PermissionLib.MultiTargetPermission[] memory permissions);\\n\\n /// @notice Returns the plugin implementation address.\\n /// @return The address of the plugin implementation contract.\\n /// @dev The implementation can be instantiated via the `new` keyword, cloned via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)), or proxied via the UUPS proxy pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0x21c99995208039ac6ace219b6f273243811dc2aa66399e8e499e43ec30b82fa9\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/setup/PluginUpgradeableSetup.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ERC165} from \\\"@openzeppelin/contracts/utils/introspection/ERC165.sol\\\";\\n\\nimport {IProtocolVersion} from \\\"../../utils/versioning/IProtocolVersion.sol\\\";\\nimport {ProtocolVersion} from \\\"../../utils/versioning/ProtocolVersion.sol\\\";\\nimport {IPluginSetup} from \\\"./IPluginSetup.sol\\\";\\n\\n/// @title PluginUpgradeableSetup\\n/// @author Aragon X - 2022-2024\\n/// @notice An abstract contract to inherit from to implement the plugin setup for upgradeable plugins, i.e, `PluginUUPSUpgradeable` being deployed via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822) and [ERC-1967](https://eips.ethereum.org/EIPS/eip-1967)).\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract PluginUpgradeableSetup is ERC165, IPluginSetup, ProtocolVersion {\\n /// @notice The address of the plugin implementation contract for initial block explorer verification\\n /// and to create [ERC-1967](https://eips.ethereum.org/EIPS/eip-1967) UUPS proxies from.\\n address internal immutable IMPLEMENTATION;\\n\\n /// @notice Thrown when an update path is not available, for example, if this is the initial build.\\n /// @param fromBuild The build number to update from.\\n /// @param thisBuild The build number of this setup to update to.\\n error InvalidUpdatePath(uint16 fromBuild, uint16 thisBuild);\\n\\n /// @notice The contract constructor, that setting the plugin implementation contract.\\n /// @param _implementation The address of the plugin implementation contract.\\n constructor(address _implementation) {\\n IMPLEMENTATION = _implementation;\\n }\\n\\n /// @notice Checks if this or the parent contract supports an interface by its ID.\\n /// @param _interfaceId The ID of the interface.\\n /// @return Returns `true` if the interface is supported.\\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\\n return\\n _interfaceId == type(IPluginSetup).interfaceId ||\\n _interfaceId == type(IProtocolVersion).interfaceId ||\\n super.supportsInterface(_interfaceId);\\n }\\n\\n /// @inheritdoc IPluginSetup\\n function implementation() public view returns (address) {\\n return IMPLEMENTATION;\\n }\\n}\\n\",\"keccak256\":\"0x2842d919d1ecb4fbeb40953128c3da3b36dcf6e91255089e987c2f11ff8d061e\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/deployment/ProxyLib.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ERC1967Proxy} from \\\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol\\\";\\nimport {Clones} from \\\"@openzeppelin/contracts/proxy/Clones.sol\\\";\\nimport {Address} from \\\"@openzeppelin/contracts/utils/Address.sol\\\";\\n\\n/// @title ProxyLib\\n/// @author Aragon X - 2024\\n/// @notice A library containing methods for the deployment of proxies via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)) and minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)).\\n/// @custom:security-contact sirt@aragon.org\\nlibrary ProxyLib {\\n using Address for address;\\n using Clones for address;\\n\\n /// @notice Creates an [ERC-1967](https://eips.ethereum.org/EIPS/eip-1967) UUPS proxy contract pointing to a logic contract and allows to immediately initialize it.\\n /// @param _logic The logic contract the proxy is pointing to.\\n /// @param _initCalldata The initialization data for this contract.\\n /// @return uupsProxy The address of the UUPS proxy contract created.\\n /// @dev If `_initCalldata` is non-empty, it is used in a delegate call to the `_logic` contract. This will typically be an encoded function call initializing the storage of the proxy (see [OpenZeppelin ERC1967Proxy-constructor](https://docs.openzeppelin.com/contracts/4.x/api/proxy#ERC1967Proxy-constructor-address-bytes-)).\\n function deployUUPSProxy(\\n address _logic,\\n bytes memory _initCalldata\\n ) internal returns (address uupsProxy) {\\n uupsProxy = address(new ERC1967Proxy({_logic: _logic, _data: _initCalldata}));\\n }\\n\\n /// @notice Creates an [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167) minimal proxy contract, also known as clones, pointing to a logic contract and allows to immediately initialize it.\\n /// @param _logic The logic contract the proxy is pointing to.\\n /// @param _initCalldata The initialization data for this contract.\\n /// @return minimalProxy The address of the minimal proxy contract created.\\n /// @dev If `_initCalldata` is non-empty, it is used in a call to the clone contract. This will typically be an encoded function call initializing the storage of the contract.\\n function deployMinimalProxy(\\n address _logic,\\n bytes memory _initCalldata\\n ) internal returns (address minimalProxy) {\\n minimalProxy = _logic.clone();\\n if (_initCalldata.length > 0) {\\n minimalProxy.functionCall({data: _initCalldata});\\n }\\n }\\n}\\n\",\"keccak256\":\"0xef0d1790dfa026381c021daa2ec7267357497f58cd4a2fa5c64e72e0dea95acc\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/IProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IProtocolVersion\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the semantic Aragon OSx protocol version number.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IProtocolVersion {\\n /// @notice Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\\n /// @return _version Returns the semantic Aragon OSx protocol version number.\\n /// @dev This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\\n function protocolVersion() external view returns (uint8[3] memory _version);\\n}\\n\",\"keccak256\":\"0x00a4da654d21dc1bdadbdc8bd54bb86c378c56f85e461ccc31303628ea621361\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/ProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IProtocolVersion} from \\\"./IProtocolVersion.sol\\\";\\n\\n/// @title ProtocolVersion\\n/// @author Aragon X - 2023\\n/// @notice An abstract, stateless, non-upgradeable contract providing the current Aragon OSx protocol version number.\\n/// @dev Do not add any new variables to this contract that would shift down storage in the inheritance chain.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract ProtocolVersion is IProtocolVersion {\\n // IMPORTANT: Do not add any storage variable, see the above notice.\\n\\n /// @inheritdoc IProtocolVersion\\n function protocolVersion() public pure returns (uint8[3] memory) {\\n return [1, 4, 0];\\n }\\n}\\n\",\"keccak256\":\"0x3975c937be935f687c6b6b8f379071232681e98cf04b175d72781b819ea52bdb\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"errors":{"InvalidUpdatePath(uint16,uint16)":[{"notice":"Thrown when an update path is not available, for example, if this is the initial build."}]},"kind":"user","methods":{"implementation()":{"notice":"Returns the plugin implementation address."},"prepareInstallation(address,bytes)":{"notice":"Prepares the installation of a plugin."},"prepareUninstallation(address,(address,address[],bytes))":{"notice":"Prepares the uninstallation of a plugin."},"prepareUpdate(address,uint16,(address,address[],bytes))":{"notice":"Prepares the update of a plugin."},"protocolVersion()":{"notice":"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with."},"supportsInterface(bytes4)":{"notice":"Checks if this or the parent contract supports an interface by its ID."}},"notice":"A mock plugin setup of an upgradeable plugin to be deployed via the UUPS pattern. v1.3 (Release 1, Build 3)","version":1}}},"src/permission/PermissionLib.sol":{"PermissionLib":{"abi":[{"inputs":[],"name":"NO_CONDITION","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"devdoc":{"author":"Aragon X - 2021-2023","custom:security-contact":"sirt@aragon.org","kind":"dev","methods":{},"title":"PermissionLib","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"6075610038600b82828239805160001a607314602b57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe730000000000000000000000000000000000000000301460806040526004361060335760003560e01c80636dd02a5b146038575b600080fd5b603f600081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f3fea164736f6c6343000811000a","opcodes":"PUSH1 0x75 PUSH2 0x38 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2B JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH1 0x33 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6DD02A5B EQ PUSH1 0x38 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3F PUSH1 0x0 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"243:1810:33:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;243:1810:33;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@NO_CONDITION_3789":{"entryPoint":null,"id":3789,"parameterSlots":0,"returnSlots":0},"abi_encode_tuple_t_address__to_t_address__fromStack_library_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:250:50","statements":[{"nodeType":"YulBlock","src":"6:3:50","statements":[]},{"body":{"nodeType":"YulBlock","src":"123:125:50","statements":[{"nodeType":"YulAssignment","src":"133:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"145:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"156:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"141:3:50"},"nodeType":"YulFunctionCall","src":"141:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"133:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"175:9:50"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"190:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"198:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"186:3:50"},"nodeType":"YulFunctionCall","src":"186:55:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"168:6:50"},"nodeType":"YulFunctionCall","src":"168:74:50"},"nodeType":"YulExpressionStatement","src":"168:74:50"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_library_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"92:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"103:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"114:4:50","type":""}],"src":"14:234:50"}]},"contents":"{\n { }\n function abi_encode_tuple_t_address__to_t_address__fromStack_library_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n}","id":50,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"730000000000000000000000000000000000000000301460806040526004361060335760003560e01c80636dd02a5b146038575b600080fd5b603f600081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f3fea164736f6c6343000811000a","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH1 0x33 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6DD02A5B EQ PUSH1 0x38 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3F PUSH1 0x0 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"243:1810:33:-:0;;;;;;;;;;;;;;;;;;;;;;;;355:49;;402:1;355:49;;;;;198:42:50;186:55;;;168:74;;156:2;141:18;355:49:33;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"23400","executionCost":"106","totalCost":"23506"},"external":{"NO_CONDITION()":"154"}},"methodIdentifiers":{"NO_CONDITION()":"6dd02a5b"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"NO_CONDITION\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Aragon X - 2021-2023\",\"custom:security-contact\":\"sirt@aragon.org\",\"kind\":\"dev\",\"methods\":{},\"title\":\"PermissionLib\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"NO_CONDITION()\":{\"notice\":\"A constant expressing that no condition is applied to a permission.\"}},\"notice\":\"A library containing objects for permission processing.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/permission/PermissionLib.sol\":\"PermissionLib\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"src/permission/PermissionLib.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title PermissionLib\\n/// @author Aragon X - 2021-2023\\n/// @notice A library containing objects for permission processing.\\n/// @custom:security-contact sirt@aragon.org\\nlibrary PermissionLib {\\n /// @notice A constant expressing that no condition is applied to a permission.\\n address public constant NO_CONDITION = address(0);\\n\\n /// @notice The types of permission operations available in the `PermissionManager`.\\n /// @param Grant The grant operation setting a permission without a condition.\\n /// @param Revoke The revoke operation removing a permission (that was granted with or without a condition).\\n /// @param GrantWithCondition The grant operation setting a permission with a condition.\\n enum Operation {\\n Grant,\\n Revoke,\\n GrantWithCondition\\n }\\n\\n /// @notice A struct containing the information for a permission to be applied on a single target contract without a condition.\\n /// @param operation The permission operation type.\\n /// @param who The address (EOA or contract) receiving the permission.\\n /// @param permissionId The permission identifier.\\n struct SingleTargetPermission {\\n Operation operation;\\n address who;\\n bytes32 permissionId;\\n }\\n\\n /// @notice A struct containing the information for a permission to be applied on multiple target contracts, optionally, with a condition.\\n /// @param operation The permission operation type.\\n /// @param where The address of the target contract for which `who` receives permission.\\n /// @param who The address (EOA or contract) receiving the permission.\\n /// @param condition The `PermissionCondition` that will be asked for authorization on calls connected to the specified permission identifier.\\n /// @param permissionId The permission identifier.\\n struct MultiTargetPermission {\\n Operation operation;\\n address where;\\n address who;\\n address condition;\\n bytes32 permissionId;\\n }\\n}\\n\",\"keccak256\":\"0x470faf3c4891ebc6420ef6cc09f6098917568ccc79268c90954d1478199b6097\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{"NO_CONDITION()":{"notice":"A constant expressing that no condition is applied to a permission."}},"notice":"A library containing objects for permission processing.","version":1}}},"src/permission/auth/DaoAuthorizable.sol":{"DaoAuthorizable":{"abi":[{"inputs":[],"name":"dao","outputs":[{"internalType":"contract IDAO","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"devdoc":{"author":"Aragon X - 2022-2023","custom:security-contact":"sirt@aragon.org","kind":"dev","methods":{"constructor":{"params":{"_dao":"The associated DAO address."}},"dao()":{"returns":{"_0":"The DAO contract."}}},"title":"DaoAuthorizable","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"dao()":"4162169f"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"dao\",\"outputs\":[{\"internalType\":\"contract IDAO\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Aragon X - 2022-2023\",\"custom:security-contact\":\"sirt@aragon.org\",\"kind\":\"dev\",\"methods\":{\"constructor\":{\"params\":{\"_dao\":\"The associated DAO address.\"}},\"dao()\":{\"returns\":{\"_0\":\"The DAO contract.\"}}},\"title\":\"DaoAuthorizable\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"constructor\":{\"notice\":\"Constructs the contract by setting the associated DAO.\"},\"dao()\":{\"notice\":\"Returns the DAO contract.\"}},\"notice\":\"An abstract contract providing a meta-transaction compatible modifier for non-upgradeable contracts instantiated via the `new` keyword to authorize function calls through an associated DAO.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/permission/auth/DaoAuthorizable.sol\":\"DaoAuthorizable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n function _contextSuffixLength() internal view virtual returns (uint256) {\\n return 0;\\n }\\n}\\n\",\"keccak256\":\"0xa92e4fa126feb6907daa0513ddd816b2eb91f30a808de54f63c17d0e162c3439\",\"license\":\"MIT\"},\"src/dao/IDAO.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IDAO\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for DAOs within the Aragon App DAO framework.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IDAO {\\n /// @notice The action struct to be consumed by the DAO's `execute` function resulting in an external call.\\n /// @param to The address to call.\\n /// @param value The native token value to be sent with the call.\\n /// @param data The bytes-encoded function selector and calldata for the call.\\n struct Action {\\n address to;\\n uint256 value;\\n bytes data;\\n }\\n\\n /// @notice Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\\n /// @param _where The address of the contract.\\n /// @param _who The address of a EOA or contract to give the permissions.\\n /// @param _permissionId The permission identifier.\\n /// @param _data The optional data passed to the `PermissionCondition` registered.\\n /// @return Returns true if the address has permission, false if not.\\n function hasPermission(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes memory _data\\n ) external view returns (bool);\\n\\n /// @notice Updates the DAO metadata (e.g., an IPFS hash).\\n /// @param _metadata The IPFS hash of the new metadata object.\\n function setMetadata(bytes calldata _metadata) external;\\n\\n /// @notice Emitted when the DAO metadata is updated.\\n /// @param metadata The IPFS hash of the new metadata object.\\n event MetadataSet(bytes metadata);\\n\\n /// @notice Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted.\\n /// @param _callId The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce.\\n /// @param _actions The array of actions.\\n /// @param _allowFailureMap A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @return The array of results obtained from the executed actions in `bytes`.\\n /// @return The resulting failure map containing the actions have actually failed.\\n function execute(\\n bytes32 _callId,\\n Action[] memory _actions,\\n uint256 _allowFailureMap\\n ) external returns (bytes[] memory, uint256);\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param actor The address of the caller.\\n /// @param callId The ID of the call.\\n /// @param actions The array of actions executed.\\n /// @param allowFailureMap The allow failure map encoding which actions are allowed to fail.\\n /// @param failureMap The failure map encoding which actions have failed.\\n /// @param execResults The array with the results of the executed actions.\\n /// @dev The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce.\\n event Executed(\\n address indexed actor,\\n bytes32 callId,\\n Action[] actions,\\n uint256 allowFailureMap,\\n uint256 failureMap,\\n bytes[] execResults\\n );\\n\\n /// @notice Emitted when a standard callback is registered.\\n /// @param interfaceId The ID of the interface.\\n /// @param callbackSelector The selector of the callback function.\\n /// @param magicNumber The magic number to be registered for the callback function selector.\\n event StandardCallbackRegistered(\\n bytes4 interfaceId,\\n bytes4 callbackSelector,\\n bytes4 magicNumber\\n );\\n\\n /// @notice Deposits (native) tokens to the DAO contract with a reference string.\\n /// @param _token The address of the token or address(0) in case of the native token.\\n /// @param _amount The amount of tokens to deposit.\\n /// @param _reference The reference describing the deposit reason.\\n function deposit(address _token, uint256 _amount, string calldata _reference) external payable;\\n\\n /// @notice Emitted when a token deposit has been made to the DAO.\\n /// @param sender The address of the sender.\\n /// @param token The address of the deposited token.\\n /// @param amount The amount of tokens deposited.\\n /// @param _reference The reference describing the deposit reason.\\n event Deposited(\\n address indexed sender,\\n address indexed token,\\n uint256 amount,\\n string _reference\\n );\\n\\n /// @notice Emitted when a native token deposit has been made to the DAO.\\n /// @dev This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).\\n /// @param sender The address of the sender.\\n /// @param amount The amount of native tokens deposited.\\n event NativeTokenDeposited(address sender, uint256 amount);\\n\\n /// @notice Setter for the trusted forwarder verifying the meta transaction.\\n /// @param _trustedForwarder The trusted forwarder address.\\n function setTrustedForwarder(address _trustedForwarder) external;\\n\\n /// @notice Getter for the trusted forwarder verifying the meta transaction.\\n /// @return The trusted forwarder address.\\n function getTrustedForwarder() external view returns (address);\\n\\n /// @notice Emitted when a new TrustedForwarder is set on the DAO.\\n /// @param forwarder the new forwarder address.\\n event TrustedForwarderSet(address forwarder);\\n\\n /// @notice Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\\n /// @param _hash The hash of the data to be signed.\\n /// @param _signature The signature byte array associated with `_hash`.\\n /// @return Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not.\\n function isValidSignature(bytes32 _hash, bytes memory _signature) external returns (bytes4);\\n\\n /// @notice Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\\n /// @param _interfaceId The ID of the interface.\\n /// @param _callbackSelector The selector of the callback function.\\n /// @param _magicNumber The magic number to be registered for the function signature.\\n function registerStandardCallback(\\n bytes4 _interfaceId,\\n bytes4 _callbackSelector,\\n bytes4 _magicNumber\\n ) external;\\n\\n /// @notice Removed function being left here to not corrupt the IDAO interface ID. Any call will revert.\\n /// @dev Introduced in v1.0.0. Removed in v1.4.0.\\n function setSignatureValidator(address) external;\\n}\\n\",\"keccak256\":\"0xb7f615523c26de042edce98731c658f44a1edb2464387ac1b642c4c69f57128e\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/DaoAuthorizable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {Context} from \\\"@openzeppelin/contracts/utils/Context.sol\\\";\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\nimport {_auth} from \\\"./auth.sol\\\";\\n\\n/// @title DaoAuthorizable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract contract providing a meta-transaction compatible modifier for non-upgradeable contracts instantiated via the `new` keyword to authorize function calls through an associated DAO.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract DaoAuthorizable is Context {\\n /// @notice The associated DAO managing the permissions of inheriting contracts.\\n IDAO private immutable DAO;\\n\\n /// @notice Constructs the contract by setting the associated DAO.\\n /// @param _dao The associated DAO address.\\n constructor(IDAO _dao) {\\n DAO = _dao;\\n }\\n\\n /// @notice Returns the DAO contract.\\n /// @return The DAO contract.\\n function dao() public view returns (IDAO) {\\n return DAO;\\n }\\n\\n /// @notice A modifier to make functions on inheriting contracts authorized. Permissions to call the function are checked through the associated DAO's permission manager.\\n /// @param _permissionId The permission identifier required to call the method this modifier is applied to.\\n modifier auth(bytes32 _permissionId) {\\n _auth(DAO, address(this), _msgSender(), _permissionId, _msgData());\\n _;\\n }\\n}\\n\",\"keccak256\":\"0x3d0be91b4f5854ed2d2c51b53fe7ffba58cc968e972015cf60eb3ea100543e64\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/auth.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice Thrown if a call is unauthorized in the associated DAO.\\n/// @param dao The associated DAO.\\n/// @param where The context in which the authorization reverted.\\n/// @param who The address (EOA or contract) missing the permission.\\n/// @param permissionId The permission identifier.\\nerror DaoUnauthorized(address dao, address where, address who, bytes32 permissionId);\\n\\n/// @notice A free function checking if a caller is granted permissions on a target contract via a permission identifier that redirects the approval to a `PermissionCondition` if this was specified in the setup.\\n/// @param _where The address of the target contract for which `who` receives permission.\\n/// @param _who The address (EOA or contract) owning the permission.\\n/// @param _permissionId The permission identifier.\\n/// @param _data The optional data passed to the `PermissionCondition` registered.\\n/// @custom:security-contact sirt@aragon.org\\nfunction _auth(\\n IDAO _dao,\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes calldata _data\\n) view {\\n if (!_dao.hasPermission(_where, _who, _permissionId, _data))\\n revert DaoUnauthorized({\\n dao: address(_dao),\\n where: _where,\\n who: _who,\\n permissionId: _permissionId\\n });\\n}\\n\",\"keccak256\":\"0x878764b4f87fe0651fb3798fb9cb87c952f8c6caf6ae79c7f09de84df6c00298\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{"constructor":{"notice":"Constructs the contract by setting the associated DAO."},"dao()":{"notice":"Returns the DAO contract."}},"notice":"An abstract contract providing a meta-transaction compatible modifier for non-upgradeable contracts instantiated via the `new` keyword to authorize function calls through an associated DAO.","version":1}}},"src/permission/auth/DaoAuthorizableUpgradeable.sol":{"DaoAuthorizableUpgradeable":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"inputs":[],"name":"dao","outputs":[{"internalType":"contract IDAO","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"devdoc":{"author":"Aragon X - 2022-2023","custom:security-contact":"sirt@aragon.org","details":"Make sure to call `__DaoAuthorizableUpgradeable_init` during initialization of the inheriting contract.","kind":"dev","methods":{"dao()":{"returns":{"_0":"The DAO contract."}}},"title":"DaoAuthorizableUpgradeable","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"dao()":"4162169f"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"dao\",\"outputs\":[{\"internalType\":\"contract IDAO\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Aragon X - 2022-2023\",\"custom:security-contact\":\"sirt@aragon.org\",\"details\":\"Make sure to call `__DaoAuthorizableUpgradeable_init` during initialization of the inheriting contract.\",\"kind\":\"dev\",\"methods\":{\"dao()\":{\"returns\":{\"_0\":\"The DAO contract.\"}}},\"title\":\"DaoAuthorizableUpgradeable\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"dao()\":{\"notice\":\"Returns the DAO contract.\"}},\"notice\":\"An abstract contract providing a meta-transaction compatible modifier for upgradeable or cloneable contracts to authorize function calls through an associated DAO.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/permission/auth/DaoAuthorizableUpgradeable.sol\":\"DaoAuthorizableUpgradeable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n function __Context_init() internal onlyInitializing {\\n }\\n\\n function __Context_init_unchained() internal onlyInitializing {\\n }\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n function _contextSuffixLength() internal view virtual returns (uint256) {\\n return 0;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x75097e35253e7fb282ee4d7f27a80eaacfa759923185bf17302a89cbc059c5ef\",\"license\":\"MIT\"},\"src/dao/IDAO.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IDAO\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for DAOs within the Aragon App DAO framework.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IDAO {\\n /// @notice The action struct to be consumed by the DAO's `execute` function resulting in an external call.\\n /// @param to The address to call.\\n /// @param value The native token value to be sent with the call.\\n /// @param data The bytes-encoded function selector and calldata for the call.\\n struct Action {\\n address to;\\n uint256 value;\\n bytes data;\\n }\\n\\n /// @notice Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\\n /// @param _where The address of the contract.\\n /// @param _who The address of a EOA or contract to give the permissions.\\n /// @param _permissionId The permission identifier.\\n /// @param _data The optional data passed to the `PermissionCondition` registered.\\n /// @return Returns true if the address has permission, false if not.\\n function hasPermission(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes memory _data\\n ) external view returns (bool);\\n\\n /// @notice Updates the DAO metadata (e.g., an IPFS hash).\\n /// @param _metadata The IPFS hash of the new metadata object.\\n function setMetadata(bytes calldata _metadata) external;\\n\\n /// @notice Emitted when the DAO metadata is updated.\\n /// @param metadata The IPFS hash of the new metadata object.\\n event MetadataSet(bytes metadata);\\n\\n /// @notice Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted.\\n /// @param _callId The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce.\\n /// @param _actions The array of actions.\\n /// @param _allowFailureMap A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @return The array of results obtained from the executed actions in `bytes`.\\n /// @return The resulting failure map containing the actions have actually failed.\\n function execute(\\n bytes32 _callId,\\n Action[] memory _actions,\\n uint256 _allowFailureMap\\n ) external returns (bytes[] memory, uint256);\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param actor The address of the caller.\\n /// @param callId The ID of the call.\\n /// @param actions The array of actions executed.\\n /// @param allowFailureMap The allow failure map encoding which actions are allowed to fail.\\n /// @param failureMap The failure map encoding which actions have failed.\\n /// @param execResults The array with the results of the executed actions.\\n /// @dev The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce.\\n event Executed(\\n address indexed actor,\\n bytes32 callId,\\n Action[] actions,\\n uint256 allowFailureMap,\\n uint256 failureMap,\\n bytes[] execResults\\n );\\n\\n /// @notice Emitted when a standard callback is registered.\\n /// @param interfaceId The ID of the interface.\\n /// @param callbackSelector The selector of the callback function.\\n /// @param magicNumber The magic number to be registered for the callback function selector.\\n event StandardCallbackRegistered(\\n bytes4 interfaceId,\\n bytes4 callbackSelector,\\n bytes4 magicNumber\\n );\\n\\n /// @notice Deposits (native) tokens to the DAO contract with a reference string.\\n /// @param _token The address of the token or address(0) in case of the native token.\\n /// @param _amount The amount of tokens to deposit.\\n /// @param _reference The reference describing the deposit reason.\\n function deposit(address _token, uint256 _amount, string calldata _reference) external payable;\\n\\n /// @notice Emitted when a token deposit has been made to the DAO.\\n /// @param sender The address of the sender.\\n /// @param token The address of the deposited token.\\n /// @param amount The amount of tokens deposited.\\n /// @param _reference The reference describing the deposit reason.\\n event Deposited(\\n address indexed sender,\\n address indexed token,\\n uint256 amount,\\n string _reference\\n );\\n\\n /// @notice Emitted when a native token deposit has been made to the DAO.\\n /// @dev This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).\\n /// @param sender The address of the sender.\\n /// @param amount The amount of native tokens deposited.\\n event NativeTokenDeposited(address sender, uint256 amount);\\n\\n /// @notice Setter for the trusted forwarder verifying the meta transaction.\\n /// @param _trustedForwarder The trusted forwarder address.\\n function setTrustedForwarder(address _trustedForwarder) external;\\n\\n /// @notice Getter for the trusted forwarder verifying the meta transaction.\\n /// @return The trusted forwarder address.\\n function getTrustedForwarder() external view returns (address);\\n\\n /// @notice Emitted when a new TrustedForwarder is set on the DAO.\\n /// @param forwarder the new forwarder address.\\n event TrustedForwarderSet(address forwarder);\\n\\n /// @notice Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\\n /// @param _hash The hash of the data to be signed.\\n /// @param _signature The signature byte array associated with `_hash`.\\n /// @return Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not.\\n function isValidSignature(bytes32 _hash, bytes memory _signature) external returns (bytes4);\\n\\n /// @notice Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\\n /// @param _interfaceId The ID of the interface.\\n /// @param _callbackSelector The selector of the callback function.\\n /// @param _magicNumber The magic number to be registered for the function signature.\\n function registerStandardCallback(\\n bytes4 _interfaceId,\\n bytes4 _callbackSelector,\\n bytes4 _magicNumber\\n ) external;\\n\\n /// @notice Removed function being left here to not corrupt the IDAO interface ID. Any call will revert.\\n /// @dev Introduced in v1.0.0. Removed in v1.4.0.\\n function setSignatureValidator(address) external;\\n}\\n\",\"keccak256\":\"0xb7f615523c26de042edce98731c658f44a1edb2464387ac1b642c4c69f57128e\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/DaoAuthorizableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ContextUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\\\";\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\nimport {_auth} from \\\"./auth.sol\\\";\\n\\n/// @title DaoAuthorizableUpgradeable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract contract providing a meta-transaction compatible modifier for upgradeable or cloneable contracts to authorize function calls through an associated DAO.\\n/// @dev Make sure to call `__DaoAuthorizableUpgradeable_init` during initialization of the inheriting contract.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract DaoAuthorizableUpgradeable is ContextUpgradeable {\\n /// @notice The associated DAO managing the permissions of inheriting contracts.\\n IDAO private dao_;\\n\\n /// @notice Initializes the contract by setting the associated DAO.\\n /// @param _dao The associated DAO address.\\n // solhint-disable-next-line func-name-mixedcase\\n function __DaoAuthorizableUpgradeable_init(IDAO _dao) internal onlyInitializing {\\n dao_ = _dao;\\n }\\n\\n /// @notice Returns the DAO contract.\\n /// @return The DAO contract.\\n function dao() public view returns (IDAO) {\\n return dao_;\\n }\\n\\n /// @notice A modifier to make functions on inheriting contracts authorized. Permissions to call the function are checked through the associated DAO's permission manager.\\n /// @param _permissionId The permission identifier required to call the method this modifier is applied to.\\n modifier auth(bytes32 _permissionId) {\\n _auth(dao_, address(this), _msgSender(), _permissionId, _msgData());\\n _;\\n }\\n\\n /// @notice This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain (see [OpenZeppelin's guide about storage gaps](https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps)).\\n uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0x7fac6b01b037ba1cb9d6a22d3f43b0785037dcf496ffb672434d9bf7227d2585\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/auth.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice Thrown if a call is unauthorized in the associated DAO.\\n/// @param dao The associated DAO.\\n/// @param where The context in which the authorization reverted.\\n/// @param who The address (EOA or contract) missing the permission.\\n/// @param permissionId The permission identifier.\\nerror DaoUnauthorized(address dao, address where, address who, bytes32 permissionId);\\n\\n/// @notice A free function checking if a caller is granted permissions on a target contract via a permission identifier that redirects the approval to a `PermissionCondition` if this was specified in the setup.\\n/// @param _where The address of the target contract for which `who` receives permission.\\n/// @param _who The address (EOA or contract) owning the permission.\\n/// @param _permissionId The permission identifier.\\n/// @param _data The optional data passed to the `PermissionCondition` registered.\\n/// @custom:security-contact sirt@aragon.org\\nfunction _auth(\\n IDAO _dao,\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes calldata _data\\n) view {\\n if (!_dao.hasPermission(_where, _who, _permissionId, _data))\\n revert DaoUnauthorized({\\n dao: address(_dao),\\n where: _where,\\n who: _who,\\n permissionId: _permissionId\\n });\\n}\\n\",\"keccak256\":\"0x878764b4f87fe0651fb3798fb9cb87c952f8c6caf6ae79c7f09de84df6c00298\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[{"astId":372,"contract":"src/permission/auth/DaoAuthorizableUpgradeable.sol:DaoAuthorizableUpgradeable","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":375,"contract":"src/permission/auth/DaoAuthorizableUpgradeable.sol:DaoAuthorizableUpgradeable","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":1051,"contract":"src/permission/auth/DaoAuthorizableUpgradeable.sol:DaoAuthorizableUpgradeable","label":"__gap","offset":0,"slot":"1","type":"t_array(t_uint256)50_storage"},{"astId":3887,"contract":"src/permission/auth/DaoAuthorizableUpgradeable.sol:DaoAuthorizableUpgradeable","label":"dao_","offset":0,"slot":"51","type":"t_contract(IDAO)2538"},{"astId":3936,"contract":"src/permission/auth/DaoAuthorizableUpgradeable.sol:DaoAuthorizableUpgradeable","label":"__gap","offset":0,"slot":"52","type":"t_array(t_uint256)49_storage"}],"types":{"t_array(t_uint256)49_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[49]","numberOfBytes":"1568"},"t_array(t_uint256)50_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[50]","numberOfBytes":"1600"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_contract(IDAO)2538":{"encoding":"inplace","label":"contract IDAO","numberOfBytes":"20"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"kind":"user","methods":{"dao()":{"notice":"Returns the DAO contract."}},"notice":"An abstract contract providing a meta-transaction compatible modifier for upgradeable or cloneable contracts to authorize function calls through an associated DAO.","version":1}}},"src/plugin/IPlugin.sol":{"IPlugin":{"abi":[{"inputs":[],"name":"pluginType","outputs":[{"internalType":"enum IPlugin.PluginType","name":"","type":"uint8"}],"stateMutability":"view","type":"function"}],"devdoc":{"author":"Aragon X - 2022-2023","custom:security-contact":"sirt@aragon.org","kind":"dev","methods":{},"title":"IPlugin","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"pluginType()":"41de6830"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"pluginType\",\"outputs\":[{\"internalType\":\"enum IPlugin.PluginType\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Aragon X - 2022-2023\",\"custom:security-contact\":\"sirt@aragon.org\",\"kind\":\"dev\",\"methods\":{},\"title\":\"IPlugin\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"pluginType()\":{\"notice\":\"Returns the plugin's type\"}},\"notice\":\"An interface defining the traits of a plugin.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/plugin/IPlugin.sol\":\"IPlugin\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"src/plugin/IPlugin.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IPlugin\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the traits of a plugin.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IPlugin {\\n enum PluginType {\\n UUPS,\\n Cloneable,\\n Constructable\\n }\\n\\n /// @notice Returns the plugin's type\\n function pluginType() external view returns (PluginType);\\n}\\n\",\"keccak256\":\"0xc57cd0d10b6380ab7f54c713a509e88fd8f4ad9288313a0e8e12b8887817ddfe\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{"pluginType()":{"notice":"Returns the plugin's type"}},"notice":"An interface defining the traits of a plugin.","version":1}}},"src/plugin/Plugin.sol":{"Plugin":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousTarget","type":"address"},{"indexed":true,"internalType":"address","name":"newTarget","type":"address"}],"name":"TargetSet","type":"event"},{"inputs":[],"name":"dao","outputs":[{"internalType":"contract IDAO","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pluginType","outputs":[{"internalType":"enum IPlugin.PluginType","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"protocolVersion","outputs":[{"internalType":"uint8[3]","name":"","type":"uint8[3]"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_target","type":"address"}],"name":"setTarget","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"target","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"devdoc":{"author":"Aragon X - 2022-2023","custom:security-contact":"sirt@aragon.org","events":{"TargetSet(address,address)":{"details":"Emitted each time the Target is set."}},"kind":"dev","methods":{"constructor":{"params":{"_dao":"The DAO contract."}},"dao()":{"returns":{"_0":"The DAO contract."}},"protocolVersion()":{"details":"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.","returns":{"_0":"Returns the semantic Aragon OSx protocol version number."}},"setTarget(address)":{"details":"Sets the target to a new target (`newTarget`)."},"supportsInterface(bytes4)":{"params":{"_interfaceId":"The ID of the interface."},"returns":{"_0":"Returns `true` if the interface is supported."}}},"title":"Plugin","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"dao()":"4162169f","pluginType()":"41de6830","protocolVersion()":"2ae9c600","setTarget(address)":"776d1a01","supportsInterface(bytes4)":"01ffc9a7","target()":"d4b83992"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousTarget\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newTarget\",\"type\":\"address\"}],\"name\":\"TargetSet\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"dao\",\"outputs\":[{\"internalType\":\"contract IDAO\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pluginType\",\"outputs\":[{\"internalType\":\"enum IPlugin.PluginType\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"protocolVersion\",\"outputs\":[{\"internalType\":\"uint8[3]\",\"name\":\"\",\"type\":\"uint8[3]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_target\",\"type\":\"address\"}],\"name\":\"setTarget\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"target\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Aragon X - 2022-2023\",\"custom:security-contact\":\"sirt@aragon.org\",\"events\":{\"TargetSet(address,address)\":{\"details\":\"Emitted each time the Target is set.\"}},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"params\":{\"_dao\":\"The DAO contract.\"}},\"dao()\":{\"returns\":{\"_0\":\"The DAO contract.\"}},\"protocolVersion()\":{\"details\":\"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\",\"returns\":{\"_0\":\"Returns the semantic Aragon OSx protocol version number.\"}},\"setTarget(address)\":{\"details\":\"Sets the target to a new target (`newTarget`).\"},\"supportsInterface(bytes4)\":{\"params\":{\"_interfaceId\":\"The ID of the interface.\"},\"returns\":{\"_0\":\"Returns `true` if the interface is supported.\"}}},\"title\":\"Plugin\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"constructor\":{\"notice\":\"Constructs the plugin by storing the associated DAO.\"},\"dao()\":{\"notice\":\"Returns the DAO contract.\"},\"pluginType()\":{\"notice\":\"Returns the plugin's type\"},\"protocolVersion()\":{\"notice\":\"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\"},\"setTarget(address)\":{\"notice\":\"Can only be called by the current owner. TODO\"},\"supportsInterface(bytes4)\":{\"notice\":\"Checks if this or the parent contract supports an interface by its ID.\"}},\"notice\":\"An abstract, non-upgradeable contract to inherit from when creating a plugin being deployed via the `new` keyword.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/plugin/Plugin.sol\":\"Plugin\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n function _contextSuffixLength() internal view virtual returns (uint256) {\\n return 0;\\n }\\n}\\n\",\"keccak256\":\"0xa92e4fa126feb6907daa0513ddd816b2eb91f30a808de54f63c17d0e162c3439\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165 is IERC165 {\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165).interfaceId;\\n }\\n}\\n\",\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"src/dao/IDAO.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IDAO\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for DAOs within the Aragon App DAO framework.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IDAO {\\n /// @notice The action struct to be consumed by the DAO's `execute` function resulting in an external call.\\n /// @param to The address to call.\\n /// @param value The native token value to be sent with the call.\\n /// @param data The bytes-encoded function selector and calldata for the call.\\n struct Action {\\n address to;\\n uint256 value;\\n bytes data;\\n }\\n\\n /// @notice Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\\n /// @param _where The address of the contract.\\n /// @param _who The address of a EOA or contract to give the permissions.\\n /// @param _permissionId The permission identifier.\\n /// @param _data The optional data passed to the `PermissionCondition` registered.\\n /// @return Returns true if the address has permission, false if not.\\n function hasPermission(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes memory _data\\n ) external view returns (bool);\\n\\n /// @notice Updates the DAO metadata (e.g., an IPFS hash).\\n /// @param _metadata The IPFS hash of the new metadata object.\\n function setMetadata(bytes calldata _metadata) external;\\n\\n /// @notice Emitted when the DAO metadata is updated.\\n /// @param metadata The IPFS hash of the new metadata object.\\n event MetadataSet(bytes metadata);\\n\\n /// @notice Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted.\\n /// @param _callId The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce.\\n /// @param _actions The array of actions.\\n /// @param _allowFailureMap A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @return The array of results obtained from the executed actions in `bytes`.\\n /// @return The resulting failure map containing the actions have actually failed.\\n function execute(\\n bytes32 _callId,\\n Action[] memory _actions,\\n uint256 _allowFailureMap\\n ) external returns (bytes[] memory, uint256);\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param actor The address of the caller.\\n /// @param callId The ID of the call.\\n /// @param actions The array of actions executed.\\n /// @param allowFailureMap The allow failure map encoding which actions are allowed to fail.\\n /// @param failureMap The failure map encoding which actions have failed.\\n /// @param execResults The array with the results of the executed actions.\\n /// @dev The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce.\\n event Executed(\\n address indexed actor,\\n bytes32 callId,\\n Action[] actions,\\n uint256 allowFailureMap,\\n uint256 failureMap,\\n bytes[] execResults\\n );\\n\\n /// @notice Emitted when a standard callback is registered.\\n /// @param interfaceId The ID of the interface.\\n /// @param callbackSelector The selector of the callback function.\\n /// @param magicNumber The magic number to be registered for the callback function selector.\\n event StandardCallbackRegistered(\\n bytes4 interfaceId,\\n bytes4 callbackSelector,\\n bytes4 magicNumber\\n );\\n\\n /// @notice Deposits (native) tokens to the DAO contract with a reference string.\\n /// @param _token The address of the token or address(0) in case of the native token.\\n /// @param _amount The amount of tokens to deposit.\\n /// @param _reference The reference describing the deposit reason.\\n function deposit(address _token, uint256 _amount, string calldata _reference) external payable;\\n\\n /// @notice Emitted when a token deposit has been made to the DAO.\\n /// @param sender The address of the sender.\\n /// @param token The address of the deposited token.\\n /// @param amount The amount of tokens deposited.\\n /// @param _reference The reference describing the deposit reason.\\n event Deposited(\\n address indexed sender,\\n address indexed token,\\n uint256 amount,\\n string _reference\\n );\\n\\n /// @notice Emitted when a native token deposit has been made to the DAO.\\n /// @dev This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).\\n /// @param sender The address of the sender.\\n /// @param amount The amount of native tokens deposited.\\n event NativeTokenDeposited(address sender, uint256 amount);\\n\\n /// @notice Setter for the trusted forwarder verifying the meta transaction.\\n /// @param _trustedForwarder The trusted forwarder address.\\n function setTrustedForwarder(address _trustedForwarder) external;\\n\\n /// @notice Getter for the trusted forwarder verifying the meta transaction.\\n /// @return The trusted forwarder address.\\n function getTrustedForwarder() external view returns (address);\\n\\n /// @notice Emitted when a new TrustedForwarder is set on the DAO.\\n /// @param forwarder the new forwarder address.\\n event TrustedForwarderSet(address forwarder);\\n\\n /// @notice Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\\n /// @param _hash The hash of the data to be signed.\\n /// @param _signature The signature byte array associated with `_hash`.\\n /// @return Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not.\\n function isValidSignature(bytes32 _hash, bytes memory _signature) external returns (bytes4);\\n\\n /// @notice Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\\n /// @param _interfaceId The ID of the interface.\\n /// @param _callbackSelector The selector of the callback function.\\n /// @param _magicNumber The magic number to be registered for the function signature.\\n function registerStandardCallback(\\n bytes4 _interfaceId,\\n bytes4 _callbackSelector,\\n bytes4 _magicNumber\\n ) external;\\n\\n /// @notice Removed function being left here to not corrupt the IDAO interface ID. Any call will revert.\\n /// @dev Introduced in v1.0.0. Removed in v1.4.0.\\n function setSignatureValidator(address) external;\\n}\\n\",\"keccak256\":\"0xb7f615523c26de042edce98731c658f44a1edb2464387ac1b642c4c69f57128e\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/DaoAuthorizable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {Context} from \\\"@openzeppelin/contracts/utils/Context.sol\\\";\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\nimport {_auth} from \\\"./auth.sol\\\";\\n\\n/// @title DaoAuthorizable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract contract providing a meta-transaction compatible modifier for non-upgradeable contracts instantiated via the `new` keyword to authorize function calls through an associated DAO.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract DaoAuthorizable is Context {\\n /// @notice The associated DAO managing the permissions of inheriting contracts.\\n IDAO private immutable DAO;\\n\\n /// @notice Constructs the contract by setting the associated DAO.\\n /// @param _dao The associated DAO address.\\n constructor(IDAO _dao) {\\n DAO = _dao;\\n }\\n\\n /// @notice Returns the DAO contract.\\n /// @return The DAO contract.\\n function dao() public view returns (IDAO) {\\n return DAO;\\n }\\n\\n /// @notice A modifier to make functions on inheriting contracts authorized. Permissions to call the function are checked through the associated DAO's permission manager.\\n /// @param _permissionId The permission identifier required to call the method this modifier is applied to.\\n modifier auth(bytes32 _permissionId) {\\n _auth(DAO, address(this), _msgSender(), _permissionId, _msgData());\\n _;\\n }\\n}\\n\",\"keccak256\":\"0x3d0be91b4f5854ed2d2c51b53fe7ffba58cc968e972015cf60eb3ea100543e64\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/auth.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice Thrown if a call is unauthorized in the associated DAO.\\n/// @param dao The associated DAO.\\n/// @param where The context in which the authorization reverted.\\n/// @param who The address (EOA or contract) missing the permission.\\n/// @param permissionId The permission identifier.\\nerror DaoUnauthorized(address dao, address where, address who, bytes32 permissionId);\\n\\n/// @notice A free function checking if a caller is granted permissions on a target contract via a permission identifier that redirects the approval to a `PermissionCondition` if this was specified in the setup.\\n/// @param _where The address of the target contract for which `who` receives permission.\\n/// @param _who The address (EOA or contract) owning the permission.\\n/// @param _permissionId The permission identifier.\\n/// @param _data The optional data passed to the `PermissionCondition` registered.\\n/// @custom:security-contact sirt@aragon.org\\nfunction _auth(\\n IDAO _dao,\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes calldata _data\\n) view {\\n if (!_dao.hasPermission(_where, _who, _permissionId, _data))\\n revert DaoUnauthorized({\\n dao: address(_dao),\\n where: _where,\\n who: _who,\\n permissionId: _permissionId\\n });\\n}\\n\",\"keccak256\":\"0x878764b4f87fe0651fb3798fb9cb87c952f8c6caf6ae79c7f09de84df6c00298\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/IPlugin.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IPlugin\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the traits of a plugin.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IPlugin {\\n enum PluginType {\\n UUPS,\\n Cloneable,\\n Constructable\\n }\\n\\n /// @notice Returns the plugin's type\\n function pluginType() external view returns (PluginType);\\n}\\n\",\"keccak256\":\"0xc57cd0d10b6380ab7f54c713a509e88fd8f4ad9288313a0e8e12b8887817ddfe\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/Plugin.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ERC165} from \\\"@openzeppelin/contracts/utils/introspection/ERC165.sol\\\";\\n\\nimport {IProtocolVersion} from \\\"../utils/versioning/IProtocolVersion.sol\\\";\\nimport {ProtocolVersion} from \\\"../utils/versioning/ProtocolVersion.sol\\\";\\nimport {DaoAuthorizable} from \\\"../permission/auth/DaoAuthorizable.sol\\\";\\nimport {IDAO} from \\\"../dao/IDAO.sol\\\";\\nimport {IPlugin} from \\\"./IPlugin.sol\\\";\\n\\n/// @title Plugin\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract, non-upgradeable contract to inherit from when creating a plugin being deployed via the `new` keyword.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract Plugin is IPlugin, ERC165, DaoAuthorizable, ProtocolVersion {\\n address public target;\\n\\n /// @dev Emitted each time the Target is set.\\n event TargetSet(address indexed previousTarget, address indexed newTarget);\\n\\n /// @notice Constructs the plugin by storing the associated DAO.\\n /// @param _dao The DAO contract.\\n constructor(IDAO _dao) DaoAuthorizable(_dao) {}\\n\\n /// @inheritdoc IPlugin\\n function pluginType() public pure override returns (PluginType) {\\n return PluginType.Constructable;\\n }\\n\\n /// @dev Sets the target to a new target (`newTarget`).\\n /// @notice Can only be called by the current owner. TODO\\n function setTarget(address _target) public {\\n address previousTarget = target;\\n target = _target;\\n emit TargetSet(previousTarget, _target);\\n }\\n\\n /// @notice Checks if this or the parent contract supports an interface by its ID.\\n /// @param _interfaceId The ID of the interface.\\n /// @return Returns `true` if the interface is supported.\\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\\n return\\n _interfaceId == type(IPlugin).interfaceId ||\\n _interfaceId == type(IProtocolVersion).interfaceId ||\\n super.supportsInterface(_interfaceId);\\n }\\n\\n /// @notice Forwards the actions to the currently set `target` for the execution.\\n /// @param _callId Identifier for this execution.\\n /// @param _actions actions that will be eventually called.\\n /// @param _allowFailureMap Bitmap-encoded number. TODO:\\n /// @return execResults address of the implementation contract.\\n /// @return failureMap address of the implementation contract.\\n function _execute(\\n bytes32 _callId,\\n IDAO.Action[] calldata _actions,\\n uint256 _allowFailureMap\\n ) internal virtual returns (bytes[] memory execResults, uint256 failureMap) {\\n (execResults, failureMap) = IDAO(target).execute(_callId, _actions, _allowFailureMap);\\n }\\n\\n /// @notice Forwards the actions to the `target` for the execution.\\n /// @param _target Forwards the actions to the specific target.\\n /// @param _callId Identifier for this execution.\\n /// @param _actions actions that will be eventually called.\\n /// @param _allowFailureMap Bitmap-encoded number. TODO:\\n /// @return execResults address of the implementation contract.\\n /// @return failureMap address of the implementation contract.\\n function _execute(\\n address _target,\\n bytes32 _callId,\\n IDAO.Action[] calldata _actions,\\n uint256 _allowFailureMap\\n ) internal virtual returns (bytes[] memory execResults, uint256 failureMap) {\\n (execResults, failureMap) = IDAO(_target).execute(_callId, _actions, _allowFailureMap);\\n }\\n}\\n\",\"keccak256\":\"0xaba248693127801c242cb55bdb8625c3f4138009c3e33fa5478c2d09efb309c3\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/IProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IProtocolVersion\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the semantic Aragon OSx protocol version number.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IProtocolVersion {\\n /// @notice Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\\n /// @return _version Returns the semantic Aragon OSx protocol version number.\\n /// @dev This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\\n function protocolVersion() external view returns (uint8[3] memory _version);\\n}\\n\",\"keccak256\":\"0x00a4da654d21dc1bdadbdc8bd54bb86c378c56f85e461ccc31303628ea621361\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/ProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IProtocolVersion} from \\\"./IProtocolVersion.sol\\\";\\n\\n/// @title ProtocolVersion\\n/// @author Aragon X - 2023\\n/// @notice An abstract, stateless, non-upgradeable contract providing the current Aragon OSx protocol version number.\\n/// @dev Do not add any new variables to this contract that would shift down storage in the inheritance chain.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract ProtocolVersion is IProtocolVersion {\\n // IMPORTANT: Do not add any storage variable, see the above notice.\\n\\n /// @inheritdoc IProtocolVersion\\n function protocolVersion() public pure returns (uint8[3] memory) {\\n return [1, 4, 0];\\n }\\n}\\n\",\"keccak256\":\"0x3975c937be935f687c6b6b8f379071232681e98cf04b175d72781b819ea52bdb\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[{"astId":4027,"contract":"src/plugin/Plugin.sol:Plugin","label":"target","offset":0,"slot":"0","type":"t_address"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"}}},"userdoc":{"kind":"user","methods":{"constructor":{"notice":"Constructs the plugin by storing the associated DAO."},"dao()":{"notice":"Returns the DAO contract."},"pluginType()":{"notice":"Returns the plugin's type"},"protocolVersion()":{"notice":"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with."},"setTarget(address)":{"notice":"Can only be called by the current owner. TODO"},"supportsInterface(bytes4)":{"notice":"Checks if this or the parent contract supports an interface by its ID."}},"notice":"An abstract, non-upgradeable contract to inherit from when creating a plugin being deployed via the `new` keyword.","version":1}}},"src/plugin/PluginCloneable.sol":{"PluginCloneable":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousTarget","type":"address"},{"indexed":true,"internalType":"address","name":"newTarget","type":"address"}],"name":"TargetSet","type":"event"},{"inputs":[],"name":"dao","outputs":[{"internalType":"contract IDAO","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pluginType","outputs":[{"internalType":"enum IPlugin.PluginType","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"protocolVersion","outputs":[{"internalType":"uint8[3]","name":"","type":"uint8[3]"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_target","type":"address"}],"name":"setTarget","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"target","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"devdoc":{"author":"Aragon X - 2022-2023","custom:security-contact":"sirt@aragon.org","events":{"TargetSet(address,address)":{"details":"Emitted each time the Target is set."}},"kind":"dev","methods":{"constructor":{"custom:oz-upgrades-unsafe-allow":"constructor"},"dao()":{"returns":{"_0":"The DAO contract."}},"protocolVersion()":{"details":"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.","returns":{"_0":"Returns the semantic Aragon OSx protocol version number."}},"setTarget(address)":{"details":"Sets the target to a new target (`newTarget`)."},"supportsInterface(bytes4)":{"params":{"_interfaceId":"The ID of the interface."},"returns":{"_0":"Returns `true` if the interface is supported."}}},"title":"PluginCloneable","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"dao()":"4162169f","pluginType()":"41de6830","protocolVersion()":"2ae9c600","setTarget(address)":"776d1a01","supportsInterface(bytes4)":"01ffc9a7","target()":"d4b83992"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousTarget\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newTarget\",\"type\":\"address\"}],\"name\":\"TargetSet\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"dao\",\"outputs\":[{\"internalType\":\"contract IDAO\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pluginType\",\"outputs\":[{\"internalType\":\"enum IPlugin.PluginType\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"protocolVersion\",\"outputs\":[{\"internalType\":\"uint8[3]\",\"name\":\"\",\"type\":\"uint8[3]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_target\",\"type\":\"address\"}],\"name\":\"setTarget\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"target\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Aragon X - 2022-2023\",\"custom:security-contact\":\"sirt@aragon.org\",\"events\":{\"TargetSet(address,address)\":{\"details\":\"Emitted each time the Target is set.\"}},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor\"},\"dao()\":{\"returns\":{\"_0\":\"The DAO contract.\"}},\"protocolVersion()\":{\"details\":\"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\",\"returns\":{\"_0\":\"Returns the semantic Aragon OSx protocol version number.\"}},\"setTarget(address)\":{\"details\":\"Sets the target to a new target (`newTarget`).\"},\"supportsInterface(bytes4)\":{\"params\":{\"_interfaceId\":\"The ID of the interface.\"},\"returns\":{\"_0\":\"Returns `true` if the interface is supported.\"}}},\"title\":\"PluginCloneable\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"constructor\":{\"notice\":\"Disables the initializers on the implementation contract to prevent it from being left uninitialized.\"},\"dao()\":{\"notice\":\"Returns the DAO contract.\"},\"pluginType()\":{\"notice\":\"Returns the plugin's type\"},\"protocolVersion()\":{\"notice\":\"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\"},\"setTarget(address)\":{\"notice\":\"Can only be called by the current owner. TODO\"},\"supportsInterface(bytes4)\":{\"notice\":\"Checks if this or the parent contract supports an interface by its ID.\"}},\"notice\":\"An abstract, non-upgradeable contract to inherit from when creating a plugin being deployed via the minimal clones pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)).\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/plugin/PluginCloneable.sol\":\"PluginCloneable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n function __Context_init() internal onlyInitializing {\\n }\\n\\n function __Context_init_unchained() internal onlyInitializing {\\n }\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n function _contextSuffixLength() internal view virtual returns (uint256) {\\n return 0;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x75097e35253e7fb282ee4d7f27a80eaacfa759923185bf17302a89cbc059c5ef\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165Upgradeable.sol\\\";\\nimport {Initializable} from \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165Upgradeable is Initializable, IERC165Upgradeable {\\n function __ERC165_init() internal onlyInitializing {\\n }\\n\\n function __ERC165_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165Upgradeable).interfaceId;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0xd90d7723512df65ae417adaf0801042940f0dabd60039ceeaffe34aa5b238da1\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165Upgradeable {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\"},\"src/dao/IDAO.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IDAO\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for DAOs within the Aragon App DAO framework.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IDAO {\\n /// @notice The action struct to be consumed by the DAO's `execute` function resulting in an external call.\\n /// @param to The address to call.\\n /// @param value The native token value to be sent with the call.\\n /// @param data The bytes-encoded function selector and calldata for the call.\\n struct Action {\\n address to;\\n uint256 value;\\n bytes data;\\n }\\n\\n /// @notice Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\\n /// @param _where The address of the contract.\\n /// @param _who The address of a EOA or contract to give the permissions.\\n /// @param _permissionId The permission identifier.\\n /// @param _data The optional data passed to the `PermissionCondition` registered.\\n /// @return Returns true if the address has permission, false if not.\\n function hasPermission(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes memory _data\\n ) external view returns (bool);\\n\\n /// @notice Updates the DAO metadata (e.g., an IPFS hash).\\n /// @param _metadata The IPFS hash of the new metadata object.\\n function setMetadata(bytes calldata _metadata) external;\\n\\n /// @notice Emitted when the DAO metadata is updated.\\n /// @param metadata The IPFS hash of the new metadata object.\\n event MetadataSet(bytes metadata);\\n\\n /// @notice Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted.\\n /// @param _callId The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce.\\n /// @param _actions The array of actions.\\n /// @param _allowFailureMap A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @return The array of results obtained from the executed actions in `bytes`.\\n /// @return The resulting failure map containing the actions have actually failed.\\n function execute(\\n bytes32 _callId,\\n Action[] memory _actions,\\n uint256 _allowFailureMap\\n ) external returns (bytes[] memory, uint256);\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param actor The address of the caller.\\n /// @param callId The ID of the call.\\n /// @param actions The array of actions executed.\\n /// @param allowFailureMap The allow failure map encoding which actions are allowed to fail.\\n /// @param failureMap The failure map encoding which actions have failed.\\n /// @param execResults The array with the results of the executed actions.\\n /// @dev The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce.\\n event Executed(\\n address indexed actor,\\n bytes32 callId,\\n Action[] actions,\\n uint256 allowFailureMap,\\n uint256 failureMap,\\n bytes[] execResults\\n );\\n\\n /// @notice Emitted when a standard callback is registered.\\n /// @param interfaceId The ID of the interface.\\n /// @param callbackSelector The selector of the callback function.\\n /// @param magicNumber The magic number to be registered for the callback function selector.\\n event StandardCallbackRegistered(\\n bytes4 interfaceId,\\n bytes4 callbackSelector,\\n bytes4 magicNumber\\n );\\n\\n /// @notice Deposits (native) tokens to the DAO contract with a reference string.\\n /// @param _token The address of the token or address(0) in case of the native token.\\n /// @param _amount The amount of tokens to deposit.\\n /// @param _reference The reference describing the deposit reason.\\n function deposit(address _token, uint256 _amount, string calldata _reference) external payable;\\n\\n /// @notice Emitted when a token deposit has been made to the DAO.\\n /// @param sender The address of the sender.\\n /// @param token The address of the deposited token.\\n /// @param amount The amount of tokens deposited.\\n /// @param _reference The reference describing the deposit reason.\\n event Deposited(\\n address indexed sender,\\n address indexed token,\\n uint256 amount,\\n string _reference\\n );\\n\\n /// @notice Emitted when a native token deposit has been made to the DAO.\\n /// @dev This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).\\n /// @param sender The address of the sender.\\n /// @param amount The amount of native tokens deposited.\\n event NativeTokenDeposited(address sender, uint256 amount);\\n\\n /// @notice Setter for the trusted forwarder verifying the meta transaction.\\n /// @param _trustedForwarder The trusted forwarder address.\\n function setTrustedForwarder(address _trustedForwarder) external;\\n\\n /// @notice Getter for the trusted forwarder verifying the meta transaction.\\n /// @return The trusted forwarder address.\\n function getTrustedForwarder() external view returns (address);\\n\\n /// @notice Emitted when a new TrustedForwarder is set on the DAO.\\n /// @param forwarder the new forwarder address.\\n event TrustedForwarderSet(address forwarder);\\n\\n /// @notice Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\\n /// @param _hash The hash of the data to be signed.\\n /// @param _signature The signature byte array associated with `_hash`.\\n /// @return Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not.\\n function isValidSignature(bytes32 _hash, bytes memory _signature) external returns (bytes4);\\n\\n /// @notice Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\\n /// @param _interfaceId The ID of the interface.\\n /// @param _callbackSelector The selector of the callback function.\\n /// @param _magicNumber The magic number to be registered for the function signature.\\n function registerStandardCallback(\\n bytes4 _interfaceId,\\n bytes4 _callbackSelector,\\n bytes4 _magicNumber\\n ) external;\\n\\n /// @notice Removed function being left here to not corrupt the IDAO interface ID. Any call will revert.\\n /// @dev Introduced in v1.0.0. Removed in v1.4.0.\\n function setSignatureValidator(address) external;\\n}\\n\",\"keccak256\":\"0xb7f615523c26de042edce98731c658f44a1edb2464387ac1b642c4c69f57128e\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/DaoAuthorizableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ContextUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\\\";\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\nimport {_auth} from \\\"./auth.sol\\\";\\n\\n/// @title DaoAuthorizableUpgradeable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract contract providing a meta-transaction compatible modifier for upgradeable or cloneable contracts to authorize function calls through an associated DAO.\\n/// @dev Make sure to call `__DaoAuthorizableUpgradeable_init` during initialization of the inheriting contract.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract DaoAuthorizableUpgradeable is ContextUpgradeable {\\n /// @notice The associated DAO managing the permissions of inheriting contracts.\\n IDAO private dao_;\\n\\n /// @notice Initializes the contract by setting the associated DAO.\\n /// @param _dao The associated DAO address.\\n // solhint-disable-next-line func-name-mixedcase\\n function __DaoAuthorizableUpgradeable_init(IDAO _dao) internal onlyInitializing {\\n dao_ = _dao;\\n }\\n\\n /// @notice Returns the DAO contract.\\n /// @return The DAO contract.\\n function dao() public view returns (IDAO) {\\n return dao_;\\n }\\n\\n /// @notice A modifier to make functions on inheriting contracts authorized. Permissions to call the function are checked through the associated DAO's permission manager.\\n /// @param _permissionId The permission identifier required to call the method this modifier is applied to.\\n modifier auth(bytes32 _permissionId) {\\n _auth(dao_, address(this), _msgSender(), _permissionId, _msgData());\\n _;\\n }\\n\\n /// @notice This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain (see [OpenZeppelin's guide about storage gaps](https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps)).\\n uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0x7fac6b01b037ba1cb9d6a22d3f43b0785037dcf496ffb672434d9bf7227d2585\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/auth.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice Thrown if a call is unauthorized in the associated DAO.\\n/// @param dao The associated DAO.\\n/// @param where The context in which the authorization reverted.\\n/// @param who The address (EOA or contract) missing the permission.\\n/// @param permissionId The permission identifier.\\nerror DaoUnauthorized(address dao, address where, address who, bytes32 permissionId);\\n\\n/// @notice A free function checking if a caller is granted permissions on a target contract via a permission identifier that redirects the approval to a `PermissionCondition` if this was specified in the setup.\\n/// @param _where The address of the target contract for which `who` receives permission.\\n/// @param _who The address (EOA or contract) owning the permission.\\n/// @param _permissionId The permission identifier.\\n/// @param _data The optional data passed to the `PermissionCondition` registered.\\n/// @custom:security-contact sirt@aragon.org\\nfunction _auth(\\n IDAO _dao,\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes calldata _data\\n) view {\\n if (!_dao.hasPermission(_where, _who, _permissionId, _data))\\n revert DaoUnauthorized({\\n dao: address(_dao),\\n where: _where,\\n who: _who,\\n permissionId: _permissionId\\n });\\n}\\n\",\"keccak256\":\"0x878764b4f87fe0651fb3798fb9cb87c952f8c6caf6ae79c7f09de84df6c00298\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/IPlugin.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IPlugin\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the traits of a plugin.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IPlugin {\\n enum PluginType {\\n UUPS,\\n Cloneable,\\n Constructable\\n }\\n\\n /// @notice Returns the plugin's type\\n function pluginType() external view returns (PluginType);\\n}\\n\",\"keccak256\":\"0xc57cd0d10b6380ab7f54c713a509e88fd8f4ad9288313a0e8e12b8887817ddfe\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/PluginCloneable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ERC165Upgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\\\";\\n\\nimport {IProtocolVersion} from \\\"../utils/versioning/IProtocolVersion.sol\\\";\\nimport {ProtocolVersion} from \\\"../utils/versioning/ProtocolVersion.sol\\\";\\nimport {DaoAuthorizableUpgradeable} from \\\"../permission/auth/DaoAuthorizableUpgradeable.sol\\\";\\nimport {IDAO} from \\\"../dao/IDAO.sol\\\";\\nimport {IPlugin} from \\\"./IPlugin.sol\\\";\\n\\n/// @title PluginCloneable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract, non-upgradeable contract to inherit from when creating a plugin being deployed via the minimal clones pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)).\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract PluginCloneable is\\n IPlugin,\\n ERC165Upgradeable,\\n DaoAuthorizableUpgradeable,\\n ProtocolVersion\\n{\\n address public target;\\n\\n /// @dev Emitted each time the Target is set.\\n event TargetSet(address indexed previousTarget, address indexed newTarget);\\n\\n /// @notice Disables the initializers on the implementation contract to prevent it from being left uninitialized.\\n /// @custom:oz-upgrades-unsafe-allow constructor\\n constructor() {\\n _disableInitializers();\\n }\\n\\n /// @notice Initializes the plugin by storing the associated DAO.\\n /// @param _dao The DAO contract.\\n // solhint-disable-next-line func-name-mixedcase\\n function __PluginCloneable_init(IDAO _dao) internal virtual onlyInitializing {\\n __DaoAuthorizableUpgradeable_init(_dao);\\n }\\n\\n /// @dev Sets the target to a new target (`newTarget`).\\n /// @notice Can only be called by the current owner. TODO\\n function setTarget(address _target) public {\\n address previousTarget = target;\\n target = _target;\\n emit TargetSet(previousTarget, _target);\\n }\\n\\n /// @inheritdoc IPlugin\\n function pluginType() public pure override returns (PluginType) {\\n return PluginType.Cloneable;\\n }\\n\\n /// @notice Checks if this or the parent contract supports an interface by its ID.\\n /// @param _interfaceId The ID of the interface.\\n /// @return Returns `true` if the interface is supported.\\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\\n return\\n _interfaceId == type(IPlugin).interfaceId ||\\n _interfaceId == type(IProtocolVersion).interfaceId ||\\n super.supportsInterface(_interfaceId);\\n }\\n\\n /// @notice Forwards the actions to the currently set `target` for the execution.\\n /// @param _callId Identifier for this execution.\\n /// @param _actions actions that will be eventually called.\\n /// @param _allowFailureMap Bitmap-encoded number. TODO:\\n /// @return execResults address of the implementation contract.\\n /// @return failureMap address of the implementation contract.\\n function _execute(\\n bytes32 _callId,\\n IDAO.Action[] calldata _actions,\\n uint256 _allowFailureMap\\n ) internal virtual returns (bytes[] memory execResults, uint256 failureMap) {\\n (execResults, failureMap) = IDAO(target).execute(_callId, _actions, _allowFailureMap);\\n }\\n\\n /// @notice Forwards the actions to the `target` for the execution.\\n /// @param _target Forwards the actions to the specific target.\\n /// @param _callId Identifier for this execution.\\n /// @param _actions actions that will be eventually called.\\n /// @param _allowFailureMap Bitmap-encoded number. TODO:\\n /// @return execResults address of the implementation contract.\\n /// @return failureMap address of the implementation contract.\\n function _execute(\\n address _target,\\n bytes32 _callId,\\n IDAO.Action[] calldata _actions,\\n uint256 _allowFailureMap\\n ) internal virtual returns (bytes[] memory execResults, uint256 failureMap) {\\n (execResults, failureMap) = IDAO(_target).execute(_callId, _actions, _allowFailureMap);\\n }\\n}\\n\",\"keccak256\":\"0x23fff653e79f6d079073bab2f878051cf85c8e3cfa7ef359f3be92fc65ca2501\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/IProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IProtocolVersion\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the semantic Aragon OSx protocol version number.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IProtocolVersion {\\n /// @notice Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\\n /// @return _version Returns the semantic Aragon OSx protocol version number.\\n /// @dev This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\\n function protocolVersion() external view returns (uint8[3] memory _version);\\n}\\n\",\"keccak256\":\"0x00a4da654d21dc1bdadbdc8bd54bb86c378c56f85e461ccc31303628ea621361\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/ProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IProtocolVersion} from \\\"./IProtocolVersion.sol\\\";\\n\\n/// @title ProtocolVersion\\n/// @author Aragon X - 2023\\n/// @notice An abstract, stateless, non-upgradeable contract providing the current Aragon OSx protocol version number.\\n/// @dev Do not add any new variables to this contract that would shift down storage in the inheritance chain.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract ProtocolVersion is IProtocolVersion {\\n // IMPORTANT: Do not add any storage variable, see the above notice.\\n\\n /// @inheritdoc IProtocolVersion\\n function protocolVersion() public pure returns (uint8[3] memory) {\\n return [1, 4, 0];\\n }\\n}\\n\",\"keccak256\":\"0x3975c937be935f687c6b6b8f379071232681e98cf04b175d72781b819ea52bdb\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[{"astId":372,"contract":"src/plugin/PluginCloneable.sol:PluginCloneable","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":375,"contract":"src/plugin/PluginCloneable.sol:PluginCloneable","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":1280,"contract":"src/plugin/PluginCloneable.sol:PluginCloneable","label":"__gap","offset":0,"slot":"1","type":"t_array(t_uint256)50_storage"},{"astId":1051,"contract":"src/plugin/PluginCloneable.sol:PluginCloneable","label":"__gap","offset":0,"slot":"51","type":"t_array(t_uint256)50_storage"},{"astId":3887,"contract":"src/plugin/PluginCloneable.sol:PluginCloneable","label":"dao_","offset":0,"slot":"101","type":"t_contract(IDAO)2538"},{"astId":3936,"contract":"src/plugin/PluginCloneable.sol:PluginCloneable","label":"__gap","offset":0,"slot":"102","type":"t_array(t_uint256)49_storage"},{"astId":4196,"contract":"src/plugin/PluginCloneable.sol:PluginCloneable","label":"target","offset":0,"slot":"151","type":"t_address"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_array(t_uint256)49_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[49]","numberOfBytes":"1568"},"t_array(t_uint256)50_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[50]","numberOfBytes":"1600"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_contract(IDAO)2538":{"encoding":"inplace","label":"contract IDAO","numberOfBytes":"20"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"kind":"user","methods":{"constructor":{"notice":"Disables the initializers on the implementation contract to prevent it from being left uninitialized."},"dao()":{"notice":"Returns the DAO contract."},"pluginType()":{"notice":"Returns the plugin's type"},"protocolVersion()":{"notice":"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with."},"setTarget(address)":{"notice":"Can only be called by the current owner. TODO"},"supportsInterface(bytes4)":{"notice":"Checks if this or the parent contract supports an interface by its ID."}},"notice":"An abstract, non-upgradeable contract to inherit from when creating a plugin being deployed via the minimal clones pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)).","version":1}}},"src/plugin/PluginUUPSUpgradeable.sol":{"PluginUUPSUpgradeable":{"abi":[{"inputs":[{"internalType":"address","name":"dao","type":"address"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"name":"DaoUnauthorized","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"beacon","type":"address"}],"name":"BeaconUpgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousTarget","type":"address"},{"indexed":true,"internalType":"address","name":"newTarget","type":"address"}],"name":"TargetSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"inputs":[],"name":"UPGRADE_PLUGIN_PERMISSION_ID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dao","outputs":[{"internalType":"contract IDAO","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pluginType","outputs":[{"internalType":"enum IPlugin.PluginType","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"protocolVersion","outputs":[{"internalType":"uint8[3]","name":"","type":"uint8[3]"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_target","type":"address"}],"name":"setTarget","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"target","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"}],"name":"upgradeTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"}],"devdoc":{"author":"Aragon X - 2022-2023","custom:security-contact":"sirt@aragon.org","errors":{"DaoUnauthorized(address,address,address,bytes32)":[{"params":{"dao":"The associated DAO.","permissionId":"The permission identifier.","where":"The context in which the authorization reverted.","who":"The address (EOA or contract) missing the permission."}}]},"events":{"TargetSet(address,address)":{"details":"Emitted each time the Target is set."}},"kind":"dev","methods":{"constructor":{"custom:oz-upgrades-unsafe-allow":"constructor"},"dao()":{"returns":{"_0":"The DAO contract."}},"implementation()":{"returns":{"_0":"The address of the implementation contract."}},"protocolVersion()":{"details":"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.","returns":{"_0":"Returns the semantic Aragon OSx protocol version number."}},"proxiableUUID()":{"details":"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier."},"setTarget(address)":{"details":"Sets the target to a new target (`newTarget`)."},"supportsInterface(bytes4)":{"params":{"_interfaceId":"The ID of the interface."},"returns":{"_0":"Returns `true` if the interface is supported."}},"upgradeTo(address)":{"custom:oz-upgrades-unsafe-allow-reachable":"delegatecall","details":"Upgrade the implementation of the proxy to `newImplementation`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."},"upgradeToAndCall(address,bytes)":{"custom:oz-upgrades-unsafe-allow-reachable":"delegatecall","details":"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."}},"title":"PluginUUPSUpgradeable","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"UPGRADE_PLUGIN_PERMISSION_ID()":"c9c4bfca","dao()":"4162169f","implementation()":"5c60da1b","pluginType()":"41de6830","protocolVersion()":"2ae9c600","proxiableUUID()":"52d1902d","setTarget(address)":"776d1a01","supportsInterface(bytes4)":"01ffc9a7","target()":"d4b83992","upgradeTo(address)":"3659cfe6","upgradeToAndCall(address,bytes)":"4f1ef286"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"dao\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"name\":\"DaoUnauthorized\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousTarget\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newTarget\",\"type\":\"address\"}],\"name\":\"TargetSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"UPGRADE_PLUGIN_PERMISSION_ID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"dao\",\"outputs\":[{\"internalType\":\"contract IDAO\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pluginType\",\"outputs\":[{\"internalType\":\"enum IPlugin.PluginType\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"protocolVersion\",\"outputs\":[{\"internalType\":\"uint8[3]\",\"name\":\"\",\"type\":\"uint8[3]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_target\",\"type\":\"address\"}],\"name\":\"setTarget\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"target\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"upgradeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Aragon X - 2022-2023\",\"custom:security-contact\":\"sirt@aragon.org\",\"errors\":{\"DaoUnauthorized(address,address,address,bytes32)\":[{\"params\":{\"dao\":\"The associated DAO.\",\"permissionId\":\"The permission identifier.\",\"where\":\"The context in which the authorization reverted.\",\"who\":\"The address (EOA or contract) missing the permission.\"}}]},\"events\":{\"TargetSet(address,address)\":{\"details\":\"Emitted each time the Target is set.\"}},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor\"},\"dao()\":{\"returns\":{\"_0\":\"The DAO contract.\"}},\"implementation()\":{\"returns\":{\"_0\":\"The address of the implementation contract.\"}},\"protocolVersion()\":{\"details\":\"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\",\"returns\":{\"_0\":\"Returns the semantic Aragon OSx protocol version number.\"}},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"setTarget(address)\":{\"details\":\"Sets the target to a new target (`newTarget`).\"},\"supportsInterface(bytes4)\":{\"params\":{\"_interfaceId\":\"The ID of the interface.\"},\"returns\":{\"_0\":\"Returns `true` if the interface is supported.\"}},\"upgradeTo(address)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"},\"upgradeToAndCall(address,bytes)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"}},\"title\":\"PluginUUPSUpgradeable\",\"version\":1},\"userdoc\":{\"errors\":{\"DaoUnauthorized(address,address,address,bytes32)\":[{\"notice\":\"Thrown if a call is unauthorized in the associated DAO.\"}]},\"kind\":\"user\",\"methods\":{\"UPGRADE_PLUGIN_PERMISSION_ID()\":{\"notice\":\"The ID of the permission required to call the `_authorizeUpgrade` function.\"},\"constructor\":{\"notice\":\"Disables the initializers on the implementation contract to prevent it from being left uninitialized.\"},\"dao()\":{\"notice\":\"Returns the DAO contract.\"},\"implementation()\":{\"notice\":\"Returns the address of the implementation contract in the [proxy storage slot](https://eips.ethereum.org/EIPS/eip-1967) slot the [UUPS proxy](https://eips.ethereum.org/EIPS/eip-1822) is pointing to.\"},\"pluginType()\":{\"notice\":\"Returns the plugin's type\"},\"protocolVersion()\":{\"notice\":\"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\"},\"setTarget(address)\":{\"notice\":\"Can only be called by the current owner. TODO\"},\"supportsInterface(bytes4)\":{\"notice\":\"Checks if an interface is supported by this or its parent contract.\"}},\"notice\":\"An abstract, upgradeable contract to inherit from when creating a plugin being deployed via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/plugin/PluginUUPSUpgradeable.sol\":\"PluginUUPSUpgradeable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/interfaces/IERC1967Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (interfaces/IERC1967.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\\n *\\n * _Available since v4.8.3._\\n */\\ninterface IERC1967Upgradeable {\\n /**\\n * @dev Emitted when the implementation is upgraded.\\n */\\n event Upgraded(address indexed implementation);\\n\\n /**\\n * @dev Emitted when the admin account has changed.\\n */\\n event AdminChanged(address previousAdmin, address newAdmin);\\n\\n /**\\n * @dev Emitted when the beacon is changed.\\n */\\n event BeaconUpgraded(address indexed beacon);\\n}\\n\",\"keccak256\":\"0x47d6e06872b12e72c79d1b5eb55842f860b5fb1207b2317c2358d2766b950a7b\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822ProxiableUpgradeable {\\n /**\\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n * address.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy.\\n */\\n function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../beacon/IBeaconUpgradeable.sol\\\";\\nimport \\\"../../interfaces/IERC1967Upgradeable.sol\\\";\\nimport \\\"../../interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\nimport \\\"../../utils/StorageSlotUpgradeable.sol\\\";\\nimport {Initializable} from \\\"../utils/Initializable.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n */\\nabstract contract ERC1967UpgradeUpgradeable is Initializable, IERC1967Upgradeable {\\n // This is the keccak-256 hash of \\\"eip1967.proxy.rollback\\\" subtracted by 1\\n bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n /**\\n * @dev Storage slot with the address of the current implementation.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n function __ERC1967Upgrade_init() internal onlyInitializing {\\n }\\n\\n function __ERC1967Upgrade_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _getImplementation() internal view returns (address) {\\n return StorageSlotUpgradeable.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 implementation slot.\\n */\\n function _setImplementation(address newImplementation) private {\\n require(AddressUpgradeable.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n StorageSlotUpgradeable.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n }\\n\\n /**\\n * @dev Perform implementation upgrade\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeTo(address newImplementation) internal {\\n _setImplementation(newImplementation);\\n emit Upgraded(newImplementation);\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCall(address newImplementation, bytes memory data, bool forceCall) internal {\\n _upgradeTo(newImplementation);\\n if (data.length > 0 || forceCall) {\\n AddressUpgradeable.functionDelegateCall(newImplementation, data);\\n }\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCallUUPS(address newImplementation, bytes memory data, bool forceCall) internal {\\n // Upgrades from old implementations will perform a rollback test. This test requires the new\\n // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n // this special case will break upgrade paths from old UUPS implementation to new ones.\\n if (StorageSlotUpgradeable.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n _setImplementation(newImplementation);\\n } else {\\n try IERC1822ProxiableUpgradeable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n require(slot == _IMPLEMENTATION_SLOT, \\\"ERC1967Upgrade: unsupported proxiableUUID\\\");\\n } catch {\\n revert(\\\"ERC1967Upgrade: new implementation is not UUPS\\\");\\n }\\n _upgradeToAndCall(newImplementation, data, forceCall);\\n }\\n }\\n\\n /**\\n * @dev Storage slot with the admin of the contract.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _getAdmin() internal view returns (address) {\\n return StorageSlotUpgradeable.getAddressSlot(_ADMIN_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 admin slot.\\n */\\n function _setAdmin(address newAdmin) private {\\n require(newAdmin != address(0), \\\"ERC1967: new admin is the zero address\\\");\\n StorageSlotUpgradeable.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n */\\n function _changeAdmin(address newAdmin) internal {\\n emit AdminChanged(_getAdmin(), newAdmin);\\n _setAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\\n */\\n bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n /**\\n * @dev Returns the current beacon.\\n */\\n function _getBeacon() internal view returns (address) {\\n return StorageSlotUpgradeable.getAddressSlot(_BEACON_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new beacon in the EIP1967 beacon slot.\\n */\\n function _setBeacon(address newBeacon) private {\\n require(AddressUpgradeable.isContract(newBeacon), \\\"ERC1967: new beacon is not a contract\\\");\\n require(\\n AddressUpgradeable.isContract(IBeaconUpgradeable(newBeacon).implementation()),\\n \\\"ERC1967: beacon implementation is not a contract\\\"\\n );\\n StorageSlotUpgradeable.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n }\\n\\n /**\\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n *\\n * Emits a {BeaconUpgraded} event.\\n */\\n function _upgradeBeaconToAndCall(address newBeacon, bytes memory data, bool forceCall) internal {\\n _setBeacon(newBeacon);\\n emit BeaconUpgraded(newBeacon);\\n if (data.length > 0 || forceCall) {\\n AddressUpgradeable.functionDelegateCall(IBeaconUpgradeable(newBeacon).implementation(), data);\\n }\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x7795808e3899c805254e3ae58074b20f799b466e3f43e057e47bedee5fb771f8\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeaconUpgradeable {\\n /**\\n * @dev Must return an address that can be used as a delegate call target.\\n *\\n * {BeaconProxy} will check that this address is a contract.\\n */\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/UUPSUpgradeable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport \\\"../ERC1967/ERC1967UpgradeUpgradeable.sol\\\";\\nimport {Initializable} from \\\"./Initializable.sol\\\";\\n\\n/**\\n * @dev An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an\\n * {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy.\\n *\\n * A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is\\n * reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing\\n * `UUPSUpgradeable` with a custom implementation of upgrades.\\n *\\n * The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism.\\n *\\n * _Available since v4.1._\\n */\\nabstract contract UUPSUpgradeable is Initializable, IERC1822ProxiableUpgradeable, ERC1967UpgradeUpgradeable {\\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable state-variable-assignment\\n address private immutable __self = address(this);\\n\\n /**\\n * @dev Check that the execution is being performed through a delegatecall call and that the execution context is\\n * a proxy contract with an implementation (as defined in ERC1967) pointing to self. This should only be the case\\n * for UUPS and transparent proxies that are using the current contract as their implementation. Execution of a\\n * function through ERC1167 minimal proxies (clones) would not normally pass this test, but is not guaranteed to\\n * fail.\\n */\\n modifier onlyProxy() {\\n require(address(this) != __self, \\\"Function must be called through delegatecall\\\");\\n require(_getImplementation() == __self, \\\"Function must be called through active proxy\\\");\\n _;\\n }\\n\\n /**\\n * @dev Check that the execution is not being performed through a delegate call. This allows a function to be\\n * callable on the implementing contract but not through proxies.\\n */\\n modifier notDelegated() {\\n require(address(this) == __self, \\\"UUPSUpgradeable: must not be called through delegatecall\\\");\\n _;\\n }\\n\\n function __UUPSUpgradeable_init() internal onlyInitializing {\\n }\\n\\n function __UUPSUpgradeable_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the\\n * implementation. It is used to validate the implementation's compatibility when performing an upgrade.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\\n */\\n function proxiableUUID() external view virtual override notDelegated returns (bytes32) {\\n return _IMPLEMENTATION_SLOT;\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy to `newImplementation`.\\n *\\n * Calls {_authorizeUpgrade}.\\n *\\n * Emits an {Upgraded} event.\\n *\\n * @custom:oz-upgrades-unsafe-allow-reachable delegatecall\\n */\\n function upgradeTo(address newImplementation) public virtual onlyProxy {\\n _authorizeUpgrade(newImplementation);\\n _upgradeToAndCallUUPS(newImplementation, new bytes(0), false);\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call\\n * encoded in `data`.\\n *\\n * Calls {_authorizeUpgrade}.\\n *\\n * Emits an {Upgraded} event.\\n *\\n * @custom:oz-upgrades-unsafe-allow-reachable delegatecall\\n */\\n function upgradeToAndCall(address newImplementation, bytes memory data) public payable virtual onlyProxy {\\n _authorizeUpgrade(newImplementation);\\n _upgradeToAndCallUUPS(newImplementation, data, true);\\n }\\n\\n /**\\n * @dev Function that should revert when `msg.sender` is not authorized to upgrade the contract. Called by\\n * {upgradeTo} and {upgradeToAndCall}.\\n *\\n * Normally, this function will use an xref:access.adoc[access control] modifier such as {Ownable-onlyOwner}.\\n *\\n * ```solidity\\n * function _authorizeUpgrade(address) internal override onlyOwner {}\\n * ```\\n */\\n function _authorizeUpgrade(address newImplementation) internal virtual;\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0xefb41f5c1a00249b7a99f0782f8c557865605426a3fb6e5fe9ae334293ae4f33\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n function __Context_init() internal onlyInitializing {\\n }\\n\\n function __Context_init_unchained() internal onlyInitializing {\\n }\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n function _contextSuffixLength() internal view virtual returns (uint256) {\\n return 0;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x75097e35253e7fb282ee4d7f27a80eaacfa759923185bf17302a89cbc059c5ef\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/StorageSlot.sol)\\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```solidity\\n * contract ERC1967 {\\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n * function _getImplementation() internal view returns (address) {\\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n * }\\n *\\n * function _setImplementation(address newImplementation) internal {\\n * require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n * }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._\\n * _Available since v4.9 for `string`, `bytes`._\\n */\\nlibrary StorageSlotUpgradeable {\\n struct AddressSlot {\\n address value;\\n }\\n\\n struct BooleanSlot {\\n bool value;\\n }\\n\\n struct Bytes32Slot {\\n bytes32 value;\\n }\\n\\n struct Uint256Slot {\\n uint256 value;\\n }\\n\\n struct StringSlot {\\n string value;\\n }\\n\\n struct BytesSlot {\\n bytes value;\\n }\\n\\n /**\\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n */\\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n */\\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n */\\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n */\\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` with member `value` located at `slot`.\\n */\\n function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\\n */\\n function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` with member `value` located at `slot`.\\n */\\n function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\\n */\\n function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n}\\n\",\"keccak256\":\"0x07ac95acad040f1fb1f6120dd0aa5f702db69446e95f82613721879d30de0908\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165Upgradeable.sol\\\";\\nimport {Initializable} from \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165Upgradeable is Initializable, IERC165Upgradeable {\\n function __ERC165_init() internal onlyInitializing {\\n }\\n\\n function __ERC165_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165Upgradeable).interfaceId;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0xd90d7723512df65ae417adaf0801042940f0dabd60039ceeaffe34aa5b238da1\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165Upgradeable {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\"},\"src/dao/IDAO.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IDAO\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for DAOs within the Aragon App DAO framework.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IDAO {\\n /// @notice The action struct to be consumed by the DAO's `execute` function resulting in an external call.\\n /// @param to The address to call.\\n /// @param value The native token value to be sent with the call.\\n /// @param data The bytes-encoded function selector and calldata for the call.\\n struct Action {\\n address to;\\n uint256 value;\\n bytes data;\\n }\\n\\n /// @notice Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\\n /// @param _where The address of the contract.\\n /// @param _who The address of a EOA or contract to give the permissions.\\n /// @param _permissionId The permission identifier.\\n /// @param _data The optional data passed to the `PermissionCondition` registered.\\n /// @return Returns true if the address has permission, false if not.\\n function hasPermission(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes memory _data\\n ) external view returns (bool);\\n\\n /// @notice Updates the DAO metadata (e.g., an IPFS hash).\\n /// @param _metadata The IPFS hash of the new metadata object.\\n function setMetadata(bytes calldata _metadata) external;\\n\\n /// @notice Emitted when the DAO metadata is updated.\\n /// @param metadata The IPFS hash of the new metadata object.\\n event MetadataSet(bytes metadata);\\n\\n /// @notice Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted.\\n /// @param _callId The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce.\\n /// @param _actions The array of actions.\\n /// @param _allowFailureMap A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @return The array of results obtained from the executed actions in `bytes`.\\n /// @return The resulting failure map containing the actions have actually failed.\\n function execute(\\n bytes32 _callId,\\n Action[] memory _actions,\\n uint256 _allowFailureMap\\n ) external returns (bytes[] memory, uint256);\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param actor The address of the caller.\\n /// @param callId The ID of the call.\\n /// @param actions The array of actions executed.\\n /// @param allowFailureMap The allow failure map encoding which actions are allowed to fail.\\n /// @param failureMap The failure map encoding which actions have failed.\\n /// @param execResults The array with the results of the executed actions.\\n /// @dev The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce.\\n event Executed(\\n address indexed actor,\\n bytes32 callId,\\n Action[] actions,\\n uint256 allowFailureMap,\\n uint256 failureMap,\\n bytes[] execResults\\n );\\n\\n /// @notice Emitted when a standard callback is registered.\\n /// @param interfaceId The ID of the interface.\\n /// @param callbackSelector The selector of the callback function.\\n /// @param magicNumber The magic number to be registered for the callback function selector.\\n event StandardCallbackRegistered(\\n bytes4 interfaceId,\\n bytes4 callbackSelector,\\n bytes4 magicNumber\\n );\\n\\n /// @notice Deposits (native) tokens to the DAO contract with a reference string.\\n /// @param _token The address of the token or address(0) in case of the native token.\\n /// @param _amount The amount of tokens to deposit.\\n /// @param _reference The reference describing the deposit reason.\\n function deposit(address _token, uint256 _amount, string calldata _reference) external payable;\\n\\n /// @notice Emitted when a token deposit has been made to the DAO.\\n /// @param sender The address of the sender.\\n /// @param token The address of the deposited token.\\n /// @param amount The amount of tokens deposited.\\n /// @param _reference The reference describing the deposit reason.\\n event Deposited(\\n address indexed sender,\\n address indexed token,\\n uint256 amount,\\n string _reference\\n );\\n\\n /// @notice Emitted when a native token deposit has been made to the DAO.\\n /// @dev This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).\\n /// @param sender The address of the sender.\\n /// @param amount The amount of native tokens deposited.\\n event NativeTokenDeposited(address sender, uint256 amount);\\n\\n /// @notice Setter for the trusted forwarder verifying the meta transaction.\\n /// @param _trustedForwarder The trusted forwarder address.\\n function setTrustedForwarder(address _trustedForwarder) external;\\n\\n /// @notice Getter for the trusted forwarder verifying the meta transaction.\\n /// @return The trusted forwarder address.\\n function getTrustedForwarder() external view returns (address);\\n\\n /// @notice Emitted when a new TrustedForwarder is set on the DAO.\\n /// @param forwarder the new forwarder address.\\n event TrustedForwarderSet(address forwarder);\\n\\n /// @notice Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\\n /// @param _hash The hash of the data to be signed.\\n /// @param _signature The signature byte array associated with `_hash`.\\n /// @return Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not.\\n function isValidSignature(bytes32 _hash, bytes memory _signature) external returns (bytes4);\\n\\n /// @notice Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\\n /// @param _interfaceId The ID of the interface.\\n /// @param _callbackSelector The selector of the callback function.\\n /// @param _magicNumber The magic number to be registered for the function signature.\\n function registerStandardCallback(\\n bytes4 _interfaceId,\\n bytes4 _callbackSelector,\\n bytes4 _magicNumber\\n ) external;\\n\\n /// @notice Removed function being left here to not corrupt the IDAO interface ID. Any call will revert.\\n /// @dev Introduced in v1.0.0. Removed in v1.4.0.\\n function setSignatureValidator(address) external;\\n}\\n\",\"keccak256\":\"0xb7f615523c26de042edce98731c658f44a1edb2464387ac1b642c4c69f57128e\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/DaoAuthorizableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ContextUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\\\";\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\nimport {_auth} from \\\"./auth.sol\\\";\\n\\n/// @title DaoAuthorizableUpgradeable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract contract providing a meta-transaction compatible modifier for upgradeable or cloneable contracts to authorize function calls through an associated DAO.\\n/// @dev Make sure to call `__DaoAuthorizableUpgradeable_init` during initialization of the inheriting contract.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract DaoAuthorizableUpgradeable is ContextUpgradeable {\\n /// @notice The associated DAO managing the permissions of inheriting contracts.\\n IDAO private dao_;\\n\\n /// @notice Initializes the contract by setting the associated DAO.\\n /// @param _dao The associated DAO address.\\n // solhint-disable-next-line func-name-mixedcase\\n function __DaoAuthorizableUpgradeable_init(IDAO _dao) internal onlyInitializing {\\n dao_ = _dao;\\n }\\n\\n /// @notice Returns the DAO contract.\\n /// @return The DAO contract.\\n function dao() public view returns (IDAO) {\\n return dao_;\\n }\\n\\n /// @notice A modifier to make functions on inheriting contracts authorized. Permissions to call the function are checked through the associated DAO's permission manager.\\n /// @param _permissionId The permission identifier required to call the method this modifier is applied to.\\n modifier auth(bytes32 _permissionId) {\\n _auth(dao_, address(this), _msgSender(), _permissionId, _msgData());\\n _;\\n }\\n\\n /// @notice This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain (see [OpenZeppelin's guide about storage gaps](https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps)).\\n uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0x7fac6b01b037ba1cb9d6a22d3f43b0785037dcf496ffb672434d9bf7227d2585\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/auth.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice Thrown if a call is unauthorized in the associated DAO.\\n/// @param dao The associated DAO.\\n/// @param where The context in which the authorization reverted.\\n/// @param who The address (EOA or contract) missing the permission.\\n/// @param permissionId The permission identifier.\\nerror DaoUnauthorized(address dao, address where, address who, bytes32 permissionId);\\n\\n/// @notice A free function checking if a caller is granted permissions on a target contract via a permission identifier that redirects the approval to a `PermissionCondition` if this was specified in the setup.\\n/// @param _where The address of the target contract for which `who` receives permission.\\n/// @param _who The address (EOA or contract) owning the permission.\\n/// @param _permissionId The permission identifier.\\n/// @param _data The optional data passed to the `PermissionCondition` registered.\\n/// @custom:security-contact sirt@aragon.org\\nfunction _auth(\\n IDAO _dao,\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes calldata _data\\n) view {\\n if (!_dao.hasPermission(_where, _who, _permissionId, _data))\\n revert DaoUnauthorized({\\n dao: address(_dao),\\n where: _where,\\n who: _who,\\n permissionId: _permissionId\\n });\\n}\\n\",\"keccak256\":\"0x878764b4f87fe0651fb3798fb9cb87c952f8c6caf6ae79c7f09de84df6c00298\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/IPlugin.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IPlugin\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the traits of a plugin.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IPlugin {\\n enum PluginType {\\n UUPS,\\n Cloneable,\\n Constructable\\n }\\n\\n /// @notice Returns the plugin's type\\n function pluginType() external view returns (PluginType);\\n}\\n\",\"keccak256\":\"0xc57cd0d10b6380ab7f54c713a509e88fd8f4ad9288313a0e8e12b8887817ddfe\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/PluginUUPSUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {UUPSUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\\\";\\nimport {IERC1822ProxiableUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport {ERC165Upgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\\\";\\n\\nimport {IProtocolVersion} from \\\"../utils/versioning/IProtocolVersion.sol\\\";\\nimport {ProtocolVersion} from \\\"../utils/versioning/ProtocolVersion.sol\\\";\\nimport {DaoAuthorizableUpgradeable} from \\\"../permission/auth/DaoAuthorizableUpgradeable.sol\\\";\\nimport {IDAO} from \\\"../dao/IDAO.sol\\\";\\nimport {IPlugin} from \\\"./IPlugin.sol\\\";\\n\\n/// @title PluginUUPSUpgradeable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract, upgradeable contract to inherit from when creating a plugin being deployed via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract PluginUUPSUpgradeable is\\n IPlugin,\\n ERC165Upgradeable,\\n UUPSUpgradeable,\\n DaoAuthorizableUpgradeable,\\n ProtocolVersion\\n{\\n // NOTE: When adding new state variables to the contract, the size of `_gap` has to be adapted below as well.\\n address public target;\\n\\n /// @dev Emitted each time the Target is set.\\n event TargetSet(address indexed previousTarget, address indexed newTarget);\\n\\n /// @notice Disables the initializers on the implementation contract to prevent it from being left uninitialized.\\n /// @custom:oz-upgrades-unsafe-allow constructor\\n constructor() {\\n _disableInitializers();\\n }\\n\\n /// @inheritdoc IPlugin\\n function pluginType() public pure override returns (PluginType) {\\n return PluginType.UUPS;\\n }\\n\\n /// @notice The ID of the permission required to call the `_authorizeUpgrade` function.\\n bytes32 public constant UPGRADE_PLUGIN_PERMISSION_ID = keccak256(\\\"UPGRADE_PLUGIN_PERMISSION\\\");\\n\\n /// @notice Initializes the plugin by storing the associated DAO.\\n /// @param _dao The DAO contract.\\n // solhint-disable-next-line func-name-mixedcase\\n function __PluginUUPSUpgradeable_init(IDAO _dao) internal virtual onlyInitializing {\\n __DaoAuthorizableUpgradeable_init(_dao);\\n }\\n\\n /// @dev Sets the target to a new target (`newTarget`).\\n /// @notice Can only be called by the current owner. TODO\\n function setTarget(address _target) public {\\n address previousTarget = target;\\n target = _target;\\n emit TargetSet(previousTarget, _target);\\n }\\n\\n /// @notice Checks if an interface is supported by this or its parent contract.\\n /// @param _interfaceId The ID of the interface.\\n /// @return Returns `true` if the interface is supported.\\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\\n return\\n _interfaceId == type(IPlugin).interfaceId ||\\n _interfaceId == type(IProtocolVersion).interfaceId ||\\n _interfaceId == type(IERC1822ProxiableUpgradeable).interfaceId ||\\n super.supportsInterface(_interfaceId);\\n }\\n\\n /// @notice Returns the address of the implementation contract in the [proxy storage slot](https://eips.ethereum.org/EIPS/eip-1967) slot the [UUPS proxy](https://eips.ethereum.org/EIPS/eip-1822) is pointing to.\\n /// @return The address of the implementation contract.\\n function implementation() public view returns (address) {\\n return _getImplementation();\\n }\\n\\n /// @notice Forwards the actions to the currently set `target` for the execution.\\n /// @param _callId Identifier for this execution.\\n /// @param _actions actions that will be eventually called.\\n /// @param _allowFailureMap Bitmap-encoded number. TODO:\\n /// @return execResults address of the implementation contract.\\n /// @return failureMap address of the implementation contract.\\n function _execute(\\n bytes32 _callId,\\n IDAO.Action[] calldata _actions,\\n uint256 _allowFailureMap\\n ) internal virtual returns (bytes[] memory execResults, uint256 failureMap) {\\n (execResults, failureMap) = IDAO(target).execute(_callId, _actions, _allowFailureMap);\\n }\\n\\n /// @notice Forwards the actions to the `target` for the execution.\\n /// @param _target Forwards the actions to the specific target.\\n /// @param _callId Identifier for this execution.\\n /// @param _actions actions that will be eventually called.\\n /// @param _allowFailureMap Bitmap-encoded number. TODO:\\n /// @return execResults address of the implementation contract.\\n /// @return failureMap address of the implementation contract.\\n function _execute(\\n address _target,\\n bytes32 _callId,\\n IDAO.Action[] calldata _actions,\\n uint256 _allowFailureMap\\n ) internal virtual returns (bytes[] memory execResults, uint256 failureMap) {\\n (execResults, failureMap) = IDAO(_target).execute(_callId, _actions, _allowFailureMap);\\n }\\n\\n /// @notice Internal method authorizing the upgrade of the contract via the [upgradeability mechanism for UUPS proxies](https://docs.openzeppelin.com/contracts/4.x/api/proxy#UUPSUpgradeable) (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\\n /// @dev The caller must have the `UPGRADE_PLUGIN_PERMISSION_ID` permission.\\n function _authorizeUpgrade(\\n address\\n )\\n internal\\n virtual\\n override\\n auth(UPGRADE_PLUGIN_PERMISSION_ID)\\n // solhint-disable-next-line no-empty-blocks\\n {\\n\\n }\\n\\n /// @notice This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain (see [OpenZeppelin's guide about storage gaps](https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps)).\\n uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0xce1d0126b3ae8c8afc887fba9f49b1cc35f84f1c1d5bf4cadee330c7ae15014f\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/IProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IProtocolVersion\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the semantic Aragon OSx protocol version number.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IProtocolVersion {\\n /// @notice Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\\n /// @return _version Returns the semantic Aragon OSx protocol version number.\\n /// @dev This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\\n function protocolVersion() external view returns (uint8[3] memory _version);\\n}\\n\",\"keccak256\":\"0x00a4da654d21dc1bdadbdc8bd54bb86c378c56f85e461ccc31303628ea621361\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/ProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IProtocolVersion} from \\\"./IProtocolVersion.sol\\\";\\n\\n/// @title ProtocolVersion\\n/// @author Aragon X - 2023\\n/// @notice An abstract, stateless, non-upgradeable contract providing the current Aragon OSx protocol version number.\\n/// @dev Do not add any new variables to this contract that would shift down storage in the inheritance chain.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract ProtocolVersion is IProtocolVersion {\\n // IMPORTANT: Do not add any storage variable, see the above notice.\\n\\n /// @inheritdoc IProtocolVersion\\n function protocolVersion() public pure returns (uint8[3] memory) {\\n return [1, 4, 0];\\n }\\n}\\n\",\"keccak256\":\"0x3975c937be935f687c6b6b8f379071232681e98cf04b175d72781b819ea52bdb\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[{"astId":372,"contract":"src/plugin/PluginUUPSUpgradeable.sol:PluginUUPSUpgradeable","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":375,"contract":"src/plugin/PluginUUPSUpgradeable.sol:PluginUUPSUpgradeable","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":1280,"contract":"src/plugin/PluginUUPSUpgradeable.sol:PluginUUPSUpgradeable","label":"__gap","offset":0,"slot":"1","type":"t_array(t_uint256)50_storage"},{"astId":354,"contract":"src/plugin/PluginUUPSUpgradeable.sol:PluginUUPSUpgradeable","label":"__gap","offset":0,"slot":"51","type":"t_array(t_uint256)50_storage"},{"astId":670,"contract":"src/plugin/PluginUUPSUpgradeable.sol:PluginUUPSUpgradeable","label":"__gap","offset":0,"slot":"101","type":"t_array(t_uint256)50_storage"},{"astId":1051,"contract":"src/plugin/PluginUUPSUpgradeable.sol:PluginUUPSUpgradeable","label":"__gap","offset":0,"slot":"151","type":"t_array(t_uint256)50_storage"},{"astId":3887,"contract":"src/plugin/PluginUUPSUpgradeable.sol:PluginUUPSUpgradeable","label":"dao_","offset":0,"slot":"201","type":"t_contract(IDAO)2538"},{"astId":3936,"contract":"src/plugin/PluginUUPSUpgradeable.sol:PluginUUPSUpgradeable","label":"__gap","offset":0,"slot":"202","type":"t_array(t_uint256)49_storage"},{"astId":4382,"contract":"src/plugin/PluginUUPSUpgradeable.sol:PluginUUPSUpgradeable","label":"target","offset":0,"slot":"251","type":"t_address"},{"astId":4575,"contract":"src/plugin/PluginUUPSUpgradeable.sol:PluginUUPSUpgradeable","label":"__gap","offset":0,"slot":"252","type":"t_array(t_uint256)49_storage"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_array(t_uint256)49_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[49]","numberOfBytes":"1568"},"t_array(t_uint256)50_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[50]","numberOfBytes":"1600"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_contract(IDAO)2538":{"encoding":"inplace","label":"contract IDAO","numberOfBytes":"20"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"errors":{"DaoUnauthorized(address,address,address,bytes32)":[{"notice":"Thrown if a call is unauthorized in the associated DAO."}]},"kind":"user","methods":{"UPGRADE_PLUGIN_PERMISSION_ID()":{"notice":"The ID of the permission required to call the `_authorizeUpgrade` function."},"constructor":{"notice":"Disables the initializers on the implementation contract to prevent it from being left uninitialized."},"dao()":{"notice":"Returns the DAO contract."},"implementation()":{"notice":"Returns the address of the implementation contract in the [proxy storage slot](https://eips.ethereum.org/EIPS/eip-1967) slot the [UUPS proxy](https://eips.ethereum.org/EIPS/eip-1822) is pointing to."},"pluginType()":{"notice":"Returns the plugin's type"},"protocolVersion()":{"notice":"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with."},"setTarget(address)":{"notice":"Can only be called by the current owner. TODO"},"supportsInterface(bytes4)":{"notice":"Checks if an interface is supported by this or its parent contract."}},"notice":"An abstract, upgradeable contract to inherit from when creating a plugin being deployed via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).","version":1}}},"src/plugin/extensions/proposal/IProposal.sol":{"IProposal":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":true,"internalType":"address","name":"creator","type":"address"},{"indexed":false,"internalType":"uint64","name":"startDate","type":"uint64"},{"indexed":false,"internalType":"uint64","name":"endDate","type":"uint64"},{"indexed":false,"internalType":"bytes","name":"metadata","type":"bytes"},{"components":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"indexed":false,"internalType":"struct IDAO.Action[]","name":"actions","type":"tuple[]"},{"indexed":false,"internalType":"uint256","name":"allowFailureMap","type":"uint256"}],"name":"ProposalCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalExecuted","type":"event"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"canExecute","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"data","type":"bytes"},{"components":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct IDAO.Action[]","name":"actions","type":"tuple[]"},{"internalType":"uint64","name":"startDate","type":"uint64"},{"internalType":"uint64","name":"endDate","type":"uint64"}],"name":"createProposal","outputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"proposalCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"devdoc":{"author":"Aragon X - 2022-2023","custom:security-contact":"sirt@aragon.org","events":{"ProposalCreated(uint256,address,uint64,uint64,bytes,(address,uint256,bytes)[],uint256)":{"params":{"actions":"The actions that will be executed if the proposal passes.","allowFailureMap":"A bitmap allowing the proposal to succeed, even if individual actions might revert. If the bit at index `i` is 1, the proposal succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.","creator":"The creator of the proposal.","endDate":"The end date of the proposal in seconds.","metadata":"The metadata of the proposal.","proposalId":"The ID of the proposal.","startDate":"The start date of the proposal in seconds."}},"ProposalExecuted(uint256)":{"params":{"proposalId":"The ID of the proposal."}}},"kind":"dev","methods":{"canExecute(uint256)":{"params":{"proposalId":"The id of the proposal."},"returns":{"_0":"bool Returns if proposal can be executed or not."}},"createProposal(bytes,(address,uint256,bytes)[],uint64,uint64)":{"params":{"actions":"The actions that will be executed after the proposal passes.","data":"The metadata of the proposal.","endDate":"The end date of the proposal.","startDate":"The start date of the proposal."},"returns":{"proposalId":"The id of the proposal."}},"proposalCount()":{"details":"This function is deprecated TODO:","returns":{"_0":"The proposal count."}}},"title":"IProposal","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"canExecute(uint256)":"cc63604a","createProposal(bytes,(address,uint256,bytes)[],uint64,uint64)":"74d786be","proposalCount()":"da35c664"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"proposalId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"creator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"startDate\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"endDate\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"struct IDAO.Action[]\",\"name\":\"actions\",\"type\":\"tuple[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"allowFailureMap\",\"type\":\"uint256\"}],\"name\":\"ProposalCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"proposalId\",\"type\":\"uint256\"}],\"name\":\"ProposalExecuted\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"proposalId\",\"type\":\"uint256\"}],\"name\":\"canExecute\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IDAO.Action[]\",\"name\":\"actions\",\"type\":\"tuple[]\"},{\"internalType\":\"uint64\",\"name\":\"startDate\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"endDate\",\"type\":\"uint64\"}],\"name\":\"createProposal\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"proposalId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proposalCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Aragon X - 2022-2023\",\"custom:security-contact\":\"sirt@aragon.org\",\"events\":{\"ProposalCreated(uint256,address,uint64,uint64,bytes,(address,uint256,bytes)[],uint256)\":{\"params\":{\"actions\":\"The actions that will be executed if the proposal passes.\",\"allowFailureMap\":\"A bitmap allowing the proposal to succeed, even if individual actions might revert. If the bit at index `i` is 1, the proposal succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\",\"creator\":\"The creator of the proposal.\",\"endDate\":\"The end date of the proposal in seconds.\",\"metadata\":\"The metadata of the proposal.\",\"proposalId\":\"The ID of the proposal.\",\"startDate\":\"The start date of the proposal in seconds.\"}},\"ProposalExecuted(uint256)\":{\"params\":{\"proposalId\":\"The ID of the proposal.\"}}},\"kind\":\"dev\",\"methods\":{\"canExecute(uint256)\":{\"params\":{\"proposalId\":\"The id of the proposal.\"},\"returns\":{\"_0\":\"bool Returns if proposal can be executed or not.\"}},\"createProposal(bytes,(address,uint256,bytes)[],uint64,uint64)\":{\"params\":{\"actions\":\"The actions that will be executed after the proposal passes.\",\"data\":\"The metadata of the proposal.\",\"endDate\":\"The end date of the proposal.\",\"startDate\":\"The start date of the proposal.\"},\"returns\":{\"proposalId\":\"The id of the proposal.\"}},\"proposalCount()\":{\"details\":\"This function is deprecated TODO:\",\"returns\":{\"_0\":\"The proposal count.\"}}},\"title\":\"IProposal\",\"version\":1},\"userdoc\":{\"events\":{\"ProposalCreated(uint256,address,uint64,uint64,bytes,(address,uint256,bytes)[],uint256)\":{\"notice\":\"Emitted when a proposal is created.\"},\"ProposalExecuted(uint256)\":{\"notice\":\"Emitted when a proposal is executed.\"}},\"kind\":\"user\",\"methods\":{\"canExecute(uint256)\":{\"notice\":\"Whether proposal can be executed or not.\"},\"createProposal(bytes,(address,uint256,bytes)[],uint64,uint64)\":{\"notice\":\"Creates a new proposal.\"},\"proposalCount()\":{\"notice\":\"Returns the proposal count determining the next proposal ID.\"}},\"notice\":\"An interface to be implemented by DAO plugins that create and execute proposals.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/plugin/extensions/proposal/IProposal.sol\":\"IProposal\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"src/dao/IDAO.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IDAO\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for DAOs within the Aragon App DAO framework.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IDAO {\\n /// @notice The action struct to be consumed by the DAO's `execute` function resulting in an external call.\\n /// @param to The address to call.\\n /// @param value The native token value to be sent with the call.\\n /// @param data The bytes-encoded function selector and calldata for the call.\\n struct Action {\\n address to;\\n uint256 value;\\n bytes data;\\n }\\n\\n /// @notice Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\\n /// @param _where The address of the contract.\\n /// @param _who The address of a EOA or contract to give the permissions.\\n /// @param _permissionId The permission identifier.\\n /// @param _data The optional data passed to the `PermissionCondition` registered.\\n /// @return Returns true if the address has permission, false if not.\\n function hasPermission(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes memory _data\\n ) external view returns (bool);\\n\\n /// @notice Updates the DAO metadata (e.g., an IPFS hash).\\n /// @param _metadata The IPFS hash of the new metadata object.\\n function setMetadata(bytes calldata _metadata) external;\\n\\n /// @notice Emitted when the DAO metadata is updated.\\n /// @param metadata The IPFS hash of the new metadata object.\\n event MetadataSet(bytes metadata);\\n\\n /// @notice Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted.\\n /// @param _callId The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce.\\n /// @param _actions The array of actions.\\n /// @param _allowFailureMap A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @return The array of results obtained from the executed actions in `bytes`.\\n /// @return The resulting failure map containing the actions have actually failed.\\n function execute(\\n bytes32 _callId,\\n Action[] memory _actions,\\n uint256 _allowFailureMap\\n ) external returns (bytes[] memory, uint256);\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param actor The address of the caller.\\n /// @param callId The ID of the call.\\n /// @param actions The array of actions executed.\\n /// @param allowFailureMap The allow failure map encoding which actions are allowed to fail.\\n /// @param failureMap The failure map encoding which actions have failed.\\n /// @param execResults The array with the results of the executed actions.\\n /// @dev The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce.\\n event Executed(\\n address indexed actor,\\n bytes32 callId,\\n Action[] actions,\\n uint256 allowFailureMap,\\n uint256 failureMap,\\n bytes[] execResults\\n );\\n\\n /// @notice Emitted when a standard callback is registered.\\n /// @param interfaceId The ID of the interface.\\n /// @param callbackSelector The selector of the callback function.\\n /// @param magicNumber The magic number to be registered for the callback function selector.\\n event StandardCallbackRegistered(\\n bytes4 interfaceId,\\n bytes4 callbackSelector,\\n bytes4 magicNumber\\n );\\n\\n /// @notice Deposits (native) tokens to the DAO contract with a reference string.\\n /// @param _token The address of the token or address(0) in case of the native token.\\n /// @param _amount The amount of tokens to deposit.\\n /// @param _reference The reference describing the deposit reason.\\n function deposit(address _token, uint256 _amount, string calldata _reference) external payable;\\n\\n /// @notice Emitted when a token deposit has been made to the DAO.\\n /// @param sender The address of the sender.\\n /// @param token The address of the deposited token.\\n /// @param amount The amount of tokens deposited.\\n /// @param _reference The reference describing the deposit reason.\\n event Deposited(\\n address indexed sender,\\n address indexed token,\\n uint256 amount,\\n string _reference\\n );\\n\\n /// @notice Emitted when a native token deposit has been made to the DAO.\\n /// @dev This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).\\n /// @param sender The address of the sender.\\n /// @param amount The amount of native tokens deposited.\\n event NativeTokenDeposited(address sender, uint256 amount);\\n\\n /// @notice Setter for the trusted forwarder verifying the meta transaction.\\n /// @param _trustedForwarder The trusted forwarder address.\\n function setTrustedForwarder(address _trustedForwarder) external;\\n\\n /// @notice Getter for the trusted forwarder verifying the meta transaction.\\n /// @return The trusted forwarder address.\\n function getTrustedForwarder() external view returns (address);\\n\\n /// @notice Emitted when a new TrustedForwarder is set on the DAO.\\n /// @param forwarder the new forwarder address.\\n event TrustedForwarderSet(address forwarder);\\n\\n /// @notice Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\\n /// @param _hash The hash of the data to be signed.\\n /// @param _signature The signature byte array associated with `_hash`.\\n /// @return Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not.\\n function isValidSignature(bytes32 _hash, bytes memory _signature) external returns (bytes4);\\n\\n /// @notice Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\\n /// @param _interfaceId The ID of the interface.\\n /// @param _callbackSelector The selector of the callback function.\\n /// @param _magicNumber The magic number to be registered for the function signature.\\n function registerStandardCallback(\\n bytes4 _interfaceId,\\n bytes4 _callbackSelector,\\n bytes4 _magicNumber\\n ) external;\\n\\n /// @notice Removed function being left here to not corrupt the IDAO interface ID. Any call will revert.\\n /// @dev Introduced in v1.0.0. Removed in v1.4.0.\\n function setSignatureValidator(address) external;\\n}\\n\",\"keccak256\":\"0xb7f615523c26de042edce98731c658f44a1edb2464387ac1b642c4c69f57128e\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/extensions/proposal/IProposal.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IDAO} from \\\"../../../dao/IDAO.sol\\\";\\n\\n/// @title IProposal\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface to be implemented by DAO plugins that create and execute proposals.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IProposal {\\n /// @notice Emitted when a proposal is created.\\n /// @param proposalId The ID of the proposal.\\n /// @param creator The creator of the proposal.\\n /// @param startDate The start date of the proposal in seconds.\\n /// @param endDate The end date of the proposal in seconds.\\n /// @param metadata The metadata of the proposal.\\n /// @param actions The actions that will be executed if the proposal passes.\\n /// @param allowFailureMap A bitmap allowing the proposal to succeed, even if individual actions might revert. If the bit at index `i` is 1, the proposal succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n event ProposalCreated(\\n uint256 indexed proposalId,\\n address indexed creator,\\n uint64 startDate,\\n uint64 endDate,\\n bytes metadata,\\n IDAO.Action[] actions,\\n uint256 allowFailureMap\\n );\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param proposalId The ID of the proposal.\\n event ProposalExecuted(uint256 indexed proposalId);\\n\\n /// @notice Creates a new proposal.\\n /// @param data The metadata of the proposal.\\n /// @param actions The actions that will be executed after the proposal passes.\\n /// @param startDate The start date of the proposal.\\n /// @param endDate The end date of the proposal.\\n /// @return proposalId The id of the proposal.\\n function createProposal(\\n bytes memory data,\\n IDAO.Action[] memory actions,\\n uint64 startDate,\\n uint64 endDate\\n ) external returns (uint256 proposalId);\\n\\n /// @notice Whether proposal can be executed or not.\\n /// @param proposalId The id of the proposal.\\n /// @return bool Returns if proposal can be executed or not.\\n function canExecute(uint256 proposalId) external returns (bool);\\n\\n /// @notice Returns the proposal count determining the next proposal ID.\\n /// @dev This function is deprecated TODO:\\n /// @return The proposal count.\\n function proposalCount() external view returns (uint256);\\n}\\n\",\"keccak256\":\"0xb008b4657c712fc0fcb8f7c54a381cc02a0584471b2b2899290a008454f7da71\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"events":{"ProposalCreated(uint256,address,uint64,uint64,bytes,(address,uint256,bytes)[],uint256)":{"notice":"Emitted when a proposal is created."},"ProposalExecuted(uint256)":{"notice":"Emitted when a proposal is executed."}},"kind":"user","methods":{"canExecute(uint256)":{"notice":"Whether proposal can be executed or not."},"createProposal(bytes,(address,uint256,bytes)[],uint64,uint64)":{"notice":"Creates a new proposal."},"proposalCount()":{"notice":"Returns the proposal count determining the next proposal ID."}},"notice":"An interface to be implemented by DAO plugins that create and execute proposals.","version":1}}},"src/plugin/extensions/proposal/Proposal.sol":{"Proposal":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":true,"internalType":"address","name":"creator","type":"address"},{"indexed":false,"internalType":"uint64","name":"startDate","type":"uint64"},{"indexed":false,"internalType":"uint64","name":"endDate","type":"uint64"},{"indexed":false,"internalType":"bytes","name":"metadata","type":"bytes"},{"components":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"indexed":false,"internalType":"struct IDAO.Action[]","name":"actions","type":"tuple[]"},{"indexed":false,"internalType":"uint256","name":"allowFailureMap","type":"uint256"}],"name":"ProposalCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalExecuted","type":"event"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"canExecute","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"data","type":"bytes"},{"components":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct IDAO.Action[]","name":"actions","type":"tuple[]"},{"internalType":"uint64","name":"startDate","type":"uint64"},{"internalType":"uint64","name":"endDate","type":"uint64"}],"name":"createProposal","outputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"proposalCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"author":"Aragon X - 2022-2023","custom:security-contact":"sirt@aragon.org","kind":"dev","methods":{"canExecute(uint256)":{"params":{"proposalId":"The id of the proposal."},"returns":{"_0":"bool Returns if proposal can be executed or not."}},"createProposal(bytes,(address,uint256,bytes)[],uint64,uint64)":{"params":{"actions":"The actions that will be executed after the proposal passes.","data":"The metadata of the proposal.","endDate":"The end date of the proposal.","startDate":"The start date of the proposal."},"returns":{"proposalId":"The id of the proposal."}},"proposalCount()":{"details":"This function is deprecated TODO:","returns":{"_0":"The proposal count."}},"supportsInterface(bytes4)":{"params":{"_interfaceId":"The ID of the interface."},"returns":{"_0":"Returns `true` if the interface is supported."}}},"title":"Proposal","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"canExecute(uint256)":"cc63604a","createProposal(bytes,(address,uint256,bytes)[],uint64,uint64)":"74d786be","proposalCount()":"da35c664","supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"proposalId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"creator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"startDate\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"endDate\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"struct IDAO.Action[]\",\"name\":\"actions\",\"type\":\"tuple[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"allowFailureMap\",\"type\":\"uint256\"}],\"name\":\"ProposalCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"proposalId\",\"type\":\"uint256\"}],\"name\":\"ProposalExecuted\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"proposalId\",\"type\":\"uint256\"}],\"name\":\"canExecute\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IDAO.Action[]\",\"name\":\"actions\",\"type\":\"tuple[]\"},{\"internalType\":\"uint64\",\"name\":\"startDate\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"endDate\",\"type\":\"uint64\"}],\"name\":\"createProposal\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"proposalId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proposalCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Aragon X - 2022-2023\",\"custom:security-contact\":\"sirt@aragon.org\",\"kind\":\"dev\",\"methods\":{\"canExecute(uint256)\":{\"params\":{\"proposalId\":\"The id of the proposal.\"},\"returns\":{\"_0\":\"bool Returns if proposal can be executed or not.\"}},\"createProposal(bytes,(address,uint256,bytes)[],uint64,uint64)\":{\"params\":{\"actions\":\"The actions that will be executed after the proposal passes.\",\"data\":\"The metadata of the proposal.\",\"endDate\":\"The end date of the proposal.\",\"startDate\":\"The start date of the proposal.\"},\"returns\":{\"proposalId\":\"The id of the proposal.\"}},\"proposalCount()\":{\"details\":\"This function is deprecated TODO:\",\"returns\":{\"_0\":\"The proposal count.\"}},\"supportsInterface(bytes4)\":{\"params\":{\"_interfaceId\":\"The ID of the interface.\"},\"returns\":{\"_0\":\"Returns `true` if the interface is supported.\"}}},\"title\":\"Proposal\",\"version\":1},\"userdoc\":{\"events\":{\"ProposalCreated(uint256,address,uint64,uint64,bytes,(address,uint256,bytes)[],uint256)\":{\"notice\":\"Emitted when a proposal is created.\"},\"ProposalExecuted(uint256)\":{\"notice\":\"Emitted when a proposal is executed.\"}},\"kind\":\"user\",\"methods\":{\"canExecute(uint256)\":{\"notice\":\"Whether proposal can be executed or not.\"},\"createProposal(bytes,(address,uint256,bytes)[],uint64,uint64)\":{\"notice\":\"Creates a new proposal.\"},\"proposalCount()\":{\"notice\":\"Returns the proposal count determining the next proposal ID.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Checks if this or the parent contract supports an interface by its ID.\"}},\"notice\":\"An abstract contract containing the traits and internal functionality to create and execute proposals that can be inherited by non-upgradeable DAO plugins.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/plugin/extensions/proposal/Proposal.sol\":\"Proposal\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Counters.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Counters.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title Counters\\n * @author Matt Condon (@shrugs)\\n * @dev Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number\\n * of elements in a mapping, issuing ERC721 ids, or counting request ids.\\n *\\n * Include with `using Counters for Counters.Counter;`\\n */\\nlibrary Counters {\\n struct Counter {\\n // This variable should never be directly accessed by users of the library: interactions must be restricted to\\n // the library's function. As of Solidity v0.5.2, this cannot be enforced, though there is a proposal to add\\n // this feature: see https://github.com/ethereum/solidity/issues/4637\\n uint256 _value; // default: 0\\n }\\n\\n function current(Counter storage counter) internal view returns (uint256) {\\n return counter._value;\\n }\\n\\n function increment(Counter storage counter) internal {\\n unchecked {\\n counter._value += 1;\\n }\\n }\\n\\n function decrement(Counter storage counter) internal {\\n uint256 value = counter._value;\\n require(value > 0, \\\"Counter: decrement overflow\\\");\\n unchecked {\\n counter._value = value - 1;\\n }\\n }\\n\\n function reset(Counter storage counter) internal {\\n counter._value = 0;\\n }\\n}\\n\",\"keccak256\":\"0xf0018c2440fbe238dd3a8732fa8e17a0f9dce84d31451dc8a32f6d62b349c9f1\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165 is IERC165 {\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165).interfaceId;\\n }\\n}\\n\",\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"src/dao/IDAO.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IDAO\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for DAOs within the Aragon App DAO framework.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IDAO {\\n /// @notice The action struct to be consumed by the DAO's `execute` function resulting in an external call.\\n /// @param to The address to call.\\n /// @param value The native token value to be sent with the call.\\n /// @param data The bytes-encoded function selector and calldata for the call.\\n struct Action {\\n address to;\\n uint256 value;\\n bytes data;\\n }\\n\\n /// @notice Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\\n /// @param _where The address of the contract.\\n /// @param _who The address of a EOA or contract to give the permissions.\\n /// @param _permissionId The permission identifier.\\n /// @param _data The optional data passed to the `PermissionCondition` registered.\\n /// @return Returns true if the address has permission, false if not.\\n function hasPermission(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes memory _data\\n ) external view returns (bool);\\n\\n /// @notice Updates the DAO metadata (e.g., an IPFS hash).\\n /// @param _metadata The IPFS hash of the new metadata object.\\n function setMetadata(bytes calldata _metadata) external;\\n\\n /// @notice Emitted when the DAO metadata is updated.\\n /// @param metadata The IPFS hash of the new metadata object.\\n event MetadataSet(bytes metadata);\\n\\n /// @notice Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted.\\n /// @param _callId The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce.\\n /// @param _actions The array of actions.\\n /// @param _allowFailureMap A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @return The array of results obtained from the executed actions in `bytes`.\\n /// @return The resulting failure map containing the actions have actually failed.\\n function execute(\\n bytes32 _callId,\\n Action[] memory _actions,\\n uint256 _allowFailureMap\\n ) external returns (bytes[] memory, uint256);\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param actor The address of the caller.\\n /// @param callId The ID of the call.\\n /// @param actions The array of actions executed.\\n /// @param allowFailureMap The allow failure map encoding which actions are allowed to fail.\\n /// @param failureMap The failure map encoding which actions have failed.\\n /// @param execResults The array with the results of the executed actions.\\n /// @dev The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce.\\n event Executed(\\n address indexed actor,\\n bytes32 callId,\\n Action[] actions,\\n uint256 allowFailureMap,\\n uint256 failureMap,\\n bytes[] execResults\\n );\\n\\n /// @notice Emitted when a standard callback is registered.\\n /// @param interfaceId The ID of the interface.\\n /// @param callbackSelector The selector of the callback function.\\n /// @param magicNumber The magic number to be registered for the callback function selector.\\n event StandardCallbackRegistered(\\n bytes4 interfaceId,\\n bytes4 callbackSelector,\\n bytes4 magicNumber\\n );\\n\\n /// @notice Deposits (native) tokens to the DAO contract with a reference string.\\n /// @param _token The address of the token or address(0) in case of the native token.\\n /// @param _amount The amount of tokens to deposit.\\n /// @param _reference The reference describing the deposit reason.\\n function deposit(address _token, uint256 _amount, string calldata _reference) external payable;\\n\\n /// @notice Emitted when a token deposit has been made to the DAO.\\n /// @param sender The address of the sender.\\n /// @param token The address of the deposited token.\\n /// @param amount The amount of tokens deposited.\\n /// @param _reference The reference describing the deposit reason.\\n event Deposited(\\n address indexed sender,\\n address indexed token,\\n uint256 amount,\\n string _reference\\n );\\n\\n /// @notice Emitted when a native token deposit has been made to the DAO.\\n /// @dev This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).\\n /// @param sender The address of the sender.\\n /// @param amount The amount of native tokens deposited.\\n event NativeTokenDeposited(address sender, uint256 amount);\\n\\n /// @notice Setter for the trusted forwarder verifying the meta transaction.\\n /// @param _trustedForwarder The trusted forwarder address.\\n function setTrustedForwarder(address _trustedForwarder) external;\\n\\n /// @notice Getter for the trusted forwarder verifying the meta transaction.\\n /// @return The trusted forwarder address.\\n function getTrustedForwarder() external view returns (address);\\n\\n /// @notice Emitted when a new TrustedForwarder is set on the DAO.\\n /// @param forwarder the new forwarder address.\\n event TrustedForwarderSet(address forwarder);\\n\\n /// @notice Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\\n /// @param _hash The hash of the data to be signed.\\n /// @param _signature The signature byte array associated with `_hash`.\\n /// @return Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not.\\n function isValidSignature(bytes32 _hash, bytes memory _signature) external returns (bytes4);\\n\\n /// @notice Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\\n /// @param _interfaceId The ID of the interface.\\n /// @param _callbackSelector The selector of the callback function.\\n /// @param _magicNumber The magic number to be registered for the function signature.\\n function registerStandardCallback(\\n bytes4 _interfaceId,\\n bytes4 _callbackSelector,\\n bytes4 _magicNumber\\n ) external;\\n\\n /// @notice Removed function being left here to not corrupt the IDAO interface ID. Any call will revert.\\n /// @dev Introduced in v1.0.0. Removed in v1.4.0.\\n function setSignatureValidator(address) external;\\n}\\n\",\"keccak256\":\"0xb7f615523c26de042edce98731c658f44a1edb2464387ac1b642c4c69f57128e\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/extensions/proposal/IProposal.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IDAO} from \\\"../../../dao/IDAO.sol\\\";\\n\\n/// @title IProposal\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface to be implemented by DAO plugins that create and execute proposals.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IProposal {\\n /// @notice Emitted when a proposal is created.\\n /// @param proposalId The ID of the proposal.\\n /// @param creator The creator of the proposal.\\n /// @param startDate The start date of the proposal in seconds.\\n /// @param endDate The end date of the proposal in seconds.\\n /// @param metadata The metadata of the proposal.\\n /// @param actions The actions that will be executed if the proposal passes.\\n /// @param allowFailureMap A bitmap allowing the proposal to succeed, even if individual actions might revert. If the bit at index `i` is 1, the proposal succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n event ProposalCreated(\\n uint256 indexed proposalId,\\n address indexed creator,\\n uint64 startDate,\\n uint64 endDate,\\n bytes metadata,\\n IDAO.Action[] actions,\\n uint256 allowFailureMap\\n );\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param proposalId The ID of the proposal.\\n event ProposalExecuted(uint256 indexed proposalId);\\n\\n /// @notice Creates a new proposal.\\n /// @param data The metadata of the proposal.\\n /// @param actions The actions that will be executed after the proposal passes.\\n /// @param startDate The start date of the proposal.\\n /// @param endDate The end date of the proposal.\\n /// @return proposalId The id of the proposal.\\n function createProposal(\\n bytes memory data,\\n IDAO.Action[] memory actions,\\n uint64 startDate,\\n uint64 endDate\\n ) external returns (uint256 proposalId);\\n\\n /// @notice Whether proposal can be executed or not.\\n /// @param proposalId The id of the proposal.\\n /// @return bool Returns if proposal can be executed or not.\\n function canExecute(uint256 proposalId) external returns (bool);\\n\\n /// @notice Returns the proposal count determining the next proposal ID.\\n /// @dev This function is deprecated TODO:\\n /// @return The proposal count.\\n function proposalCount() external view returns (uint256);\\n}\\n\",\"keccak256\":\"0xb008b4657c712fc0fcb8f7c54a381cc02a0584471b2b2899290a008454f7da71\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/extensions/proposal/Proposal.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {Counters} from \\\"@openzeppelin/contracts/utils/Counters.sol\\\";\\nimport {ERC165} from \\\"@openzeppelin/contracts/utils/introspection/ERC165.sol\\\";\\n\\nimport {IDAO} from \\\"../../../dao/IDAO.sol\\\";\\nimport {IProposal} from \\\"./IProposal.sol\\\";\\n\\n/// @title Proposal\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract contract containing the traits and internal functionality to create and execute proposals that can be inherited by non-upgradeable DAO plugins.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract Proposal is IProposal, ERC165 {\\n using Counters for Counters.Counter;\\n\\n /// @notice The incremental ID for proposals and executions.\\n Counters.Counter private proposalCounter;\\n\\n /// Shall we remove this ? Does anyone use this ? if we keep having this,\\n // this will not return the correct value anyways anymore.\\n /// @inheritdoc IProposal\\n function proposalCount() public view override returns (uint256) {\\n return proposalCounter.current();\\n }\\n\\n /// @notice Checks if this or the parent contract supports an interface by its ID.\\n /// @param _interfaceId The ID of the interface.\\n /// @return Returns `true` if the interface is supported.\\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\\n // In addition to the current interfaceId, also support previous version of the interfaceId that did not\\n // include the createProposal() function as standard\\n return\\n _interfaceId ==\\n type(IProposal).interfaceId ^\\n IProposal.createProposal.selector ^\\n IProposal.canExecute.selector ||\\n _interfaceId == type(IProposal).interfaceId ||\\n super.supportsInterface(_interfaceId);\\n }\\n}\\n\",\"keccak256\":\"0xd08bc8fa50634f4d9e95ed25ccaad3685fe695841ce7ca36b01e3318b825b588\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[{"astId":4659,"contract":"src/plugin/extensions/proposal/Proposal.sol:Proposal","label":"proposalCounter","offset":0,"slot":"0","type":"t_struct(Counter)2173_storage"}],"types":{"t_struct(Counter)2173_storage":{"encoding":"inplace","label":"struct Counters.Counter","members":[{"astId":2172,"contract":"src/plugin/extensions/proposal/Proposal.sol:Proposal","label":"_value","offset":0,"slot":"0","type":"t_uint256"}],"numberOfBytes":"32"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"userdoc":{"events":{"ProposalCreated(uint256,address,uint64,uint64,bytes,(address,uint256,bytes)[],uint256)":{"notice":"Emitted when a proposal is created."},"ProposalExecuted(uint256)":{"notice":"Emitted when a proposal is executed."}},"kind":"user","methods":{"canExecute(uint256)":{"notice":"Whether proposal can be executed or not."},"createProposal(bytes,(address,uint256,bytes)[],uint64,uint64)":{"notice":"Creates a new proposal."},"proposalCount()":{"notice":"Returns the proposal count determining the next proposal ID."},"supportsInterface(bytes4)":{"notice":"Checks if this or the parent contract supports an interface by its ID."}},"notice":"An abstract contract containing the traits and internal functionality to create and execute proposals that can be inherited by non-upgradeable DAO plugins.","version":1}}},"src/plugin/extensions/proposal/ProposalUpgradeable.sol":{"ProposalUpgradeable":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":true,"internalType":"address","name":"creator","type":"address"},{"indexed":false,"internalType":"uint64","name":"startDate","type":"uint64"},{"indexed":false,"internalType":"uint64","name":"endDate","type":"uint64"},{"indexed":false,"internalType":"bytes","name":"metadata","type":"bytes"},{"components":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"indexed":false,"internalType":"struct IDAO.Action[]","name":"actions","type":"tuple[]"},{"indexed":false,"internalType":"uint256","name":"allowFailureMap","type":"uint256"}],"name":"ProposalCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalExecuted","type":"event"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"canExecute","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"data","type":"bytes"},{"components":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct IDAO.Action[]","name":"actions","type":"tuple[]"},{"internalType":"uint64","name":"startDate","type":"uint64"},{"internalType":"uint64","name":"endDate","type":"uint64"}],"name":"createProposal","outputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"proposalCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"author":"Aragon X - 2022-2023","custom:security-contact":"sirt@aragon.org","kind":"dev","methods":{"canExecute(uint256)":{"params":{"proposalId":"The id of the proposal."},"returns":{"_0":"bool Returns if proposal can be executed or not."}},"createProposal(bytes,(address,uint256,bytes)[],uint64,uint64)":{"params":{"actions":"The actions that will be executed after the proposal passes.","data":"The metadata of the proposal.","endDate":"The end date of the proposal.","startDate":"The start date of the proposal."},"returns":{"proposalId":"The id of the proposal."}},"proposalCount()":{"details":"This function is deprecated TODO:","returns":{"_0":"The proposal count."}},"supportsInterface(bytes4)":{"params":{"_interfaceId":"The ID of the interface."},"returns":{"_0":"Returns `true` if the interface is supported."}}},"title":"ProposalUpgradeable","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"canExecute(uint256)":"cc63604a","createProposal(bytes,(address,uint256,bytes)[],uint64,uint64)":"74d786be","proposalCount()":"da35c664","supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"proposalId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"creator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"startDate\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"endDate\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"struct IDAO.Action[]\",\"name\":\"actions\",\"type\":\"tuple[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"allowFailureMap\",\"type\":\"uint256\"}],\"name\":\"ProposalCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"proposalId\",\"type\":\"uint256\"}],\"name\":\"ProposalExecuted\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"proposalId\",\"type\":\"uint256\"}],\"name\":\"canExecute\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IDAO.Action[]\",\"name\":\"actions\",\"type\":\"tuple[]\"},{\"internalType\":\"uint64\",\"name\":\"startDate\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"endDate\",\"type\":\"uint64\"}],\"name\":\"createProposal\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"proposalId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proposalCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Aragon X - 2022-2023\",\"custom:security-contact\":\"sirt@aragon.org\",\"kind\":\"dev\",\"methods\":{\"canExecute(uint256)\":{\"params\":{\"proposalId\":\"The id of the proposal.\"},\"returns\":{\"_0\":\"bool Returns if proposal can be executed or not.\"}},\"createProposal(bytes,(address,uint256,bytes)[],uint64,uint64)\":{\"params\":{\"actions\":\"The actions that will be executed after the proposal passes.\",\"data\":\"The metadata of the proposal.\",\"endDate\":\"The end date of the proposal.\",\"startDate\":\"The start date of the proposal.\"},\"returns\":{\"proposalId\":\"The id of the proposal.\"}},\"proposalCount()\":{\"details\":\"This function is deprecated TODO:\",\"returns\":{\"_0\":\"The proposal count.\"}},\"supportsInterface(bytes4)\":{\"params\":{\"_interfaceId\":\"The ID of the interface.\"},\"returns\":{\"_0\":\"Returns `true` if the interface is supported.\"}}},\"title\":\"ProposalUpgradeable\",\"version\":1},\"userdoc\":{\"events\":{\"ProposalCreated(uint256,address,uint64,uint64,bytes,(address,uint256,bytes)[],uint256)\":{\"notice\":\"Emitted when a proposal is created.\"},\"ProposalExecuted(uint256)\":{\"notice\":\"Emitted when a proposal is executed.\"}},\"kind\":\"user\",\"methods\":{\"canExecute(uint256)\":{\"notice\":\"Whether proposal can be executed or not.\"},\"createProposal(bytes,(address,uint256,bytes)[],uint64,uint64)\":{\"notice\":\"Creates a new proposal.\"},\"proposalCount()\":{\"notice\":\"Returns the proposal count determining the next proposal ID.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Checks if this or the parent contract supports an interface by its ID.\"}},\"notice\":\"An abstract contract containing the traits and internal functionality to create and execute proposals that can be inherited by upgradeable DAO plugins.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/plugin/extensions/proposal/ProposalUpgradeable.sol\":\"ProposalUpgradeable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Counters.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title Counters\\n * @author Matt Condon (@shrugs)\\n * @dev Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number\\n * of elements in a mapping, issuing ERC721 ids, or counting request ids.\\n *\\n * Include with `using Counters for Counters.Counter;`\\n */\\nlibrary CountersUpgradeable {\\n struct Counter {\\n // This variable should never be directly accessed by users of the library: interactions must be restricted to\\n // the library's function. As of Solidity v0.5.2, this cannot be enforced, though there is a proposal to add\\n // this feature: see https://github.com/ethereum/solidity/issues/4637\\n uint256 _value; // default: 0\\n }\\n\\n function current(Counter storage counter) internal view returns (uint256) {\\n return counter._value;\\n }\\n\\n function increment(Counter storage counter) internal {\\n unchecked {\\n counter._value += 1;\\n }\\n }\\n\\n function decrement(Counter storage counter) internal {\\n uint256 value = counter._value;\\n require(value > 0, \\\"Counter: decrement overflow\\\");\\n unchecked {\\n counter._value = value - 1;\\n }\\n }\\n\\n function reset(Counter storage counter) internal {\\n counter._value = 0;\\n }\\n}\\n\",\"keccak256\":\"0x798741e231b22b81e2dd2eddaaf8832dee4baf5cd8e2dbaa5c1dd12a1c053c4d\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165Upgradeable.sol\\\";\\nimport {Initializable} from \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165Upgradeable is Initializable, IERC165Upgradeable {\\n function __ERC165_init() internal onlyInitializing {\\n }\\n\\n function __ERC165_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165Upgradeable).interfaceId;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0xd90d7723512df65ae417adaf0801042940f0dabd60039ceeaffe34aa5b238da1\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165Upgradeable {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\"},\"src/dao/IDAO.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IDAO\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for DAOs within the Aragon App DAO framework.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IDAO {\\n /// @notice The action struct to be consumed by the DAO's `execute` function resulting in an external call.\\n /// @param to The address to call.\\n /// @param value The native token value to be sent with the call.\\n /// @param data The bytes-encoded function selector and calldata for the call.\\n struct Action {\\n address to;\\n uint256 value;\\n bytes data;\\n }\\n\\n /// @notice Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\\n /// @param _where The address of the contract.\\n /// @param _who The address of a EOA or contract to give the permissions.\\n /// @param _permissionId The permission identifier.\\n /// @param _data The optional data passed to the `PermissionCondition` registered.\\n /// @return Returns true if the address has permission, false if not.\\n function hasPermission(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes memory _data\\n ) external view returns (bool);\\n\\n /// @notice Updates the DAO metadata (e.g., an IPFS hash).\\n /// @param _metadata The IPFS hash of the new metadata object.\\n function setMetadata(bytes calldata _metadata) external;\\n\\n /// @notice Emitted when the DAO metadata is updated.\\n /// @param metadata The IPFS hash of the new metadata object.\\n event MetadataSet(bytes metadata);\\n\\n /// @notice Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted.\\n /// @param _callId The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce.\\n /// @param _actions The array of actions.\\n /// @param _allowFailureMap A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @return The array of results obtained from the executed actions in `bytes`.\\n /// @return The resulting failure map containing the actions have actually failed.\\n function execute(\\n bytes32 _callId,\\n Action[] memory _actions,\\n uint256 _allowFailureMap\\n ) external returns (bytes[] memory, uint256);\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param actor The address of the caller.\\n /// @param callId The ID of the call.\\n /// @param actions The array of actions executed.\\n /// @param allowFailureMap The allow failure map encoding which actions are allowed to fail.\\n /// @param failureMap The failure map encoding which actions have failed.\\n /// @param execResults The array with the results of the executed actions.\\n /// @dev The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce.\\n event Executed(\\n address indexed actor,\\n bytes32 callId,\\n Action[] actions,\\n uint256 allowFailureMap,\\n uint256 failureMap,\\n bytes[] execResults\\n );\\n\\n /// @notice Emitted when a standard callback is registered.\\n /// @param interfaceId The ID of the interface.\\n /// @param callbackSelector The selector of the callback function.\\n /// @param magicNumber The magic number to be registered for the callback function selector.\\n event StandardCallbackRegistered(\\n bytes4 interfaceId,\\n bytes4 callbackSelector,\\n bytes4 magicNumber\\n );\\n\\n /// @notice Deposits (native) tokens to the DAO contract with a reference string.\\n /// @param _token The address of the token or address(0) in case of the native token.\\n /// @param _amount The amount of tokens to deposit.\\n /// @param _reference The reference describing the deposit reason.\\n function deposit(address _token, uint256 _amount, string calldata _reference) external payable;\\n\\n /// @notice Emitted when a token deposit has been made to the DAO.\\n /// @param sender The address of the sender.\\n /// @param token The address of the deposited token.\\n /// @param amount The amount of tokens deposited.\\n /// @param _reference The reference describing the deposit reason.\\n event Deposited(\\n address indexed sender,\\n address indexed token,\\n uint256 amount,\\n string _reference\\n );\\n\\n /// @notice Emitted when a native token deposit has been made to the DAO.\\n /// @dev This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).\\n /// @param sender The address of the sender.\\n /// @param amount The amount of native tokens deposited.\\n event NativeTokenDeposited(address sender, uint256 amount);\\n\\n /// @notice Setter for the trusted forwarder verifying the meta transaction.\\n /// @param _trustedForwarder The trusted forwarder address.\\n function setTrustedForwarder(address _trustedForwarder) external;\\n\\n /// @notice Getter for the trusted forwarder verifying the meta transaction.\\n /// @return The trusted forwarder address.\\n function getTrustedForwarder() external view returns (address);\\n\\n /// @notice Emitted when a new TrustedForwarder is set on the DAO.\\n /// @param forwarder the new forwarder address.\\n event TrustedForwarderSet(address forwarder);\\n\\n /// @notice Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\\n /// @param _hash The hash of the data to be signed.\\n /// @param _signature The signature byte array associated with `_hash`.\\n /// @return Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not.\\n function isValidSignature(bytes32 _hash, bytes memory _signature) external returns (bytes4);\\n\\n /// @notice Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\\n /// @param _interfaceId The ID of the interface.\\n /// @param _callbackSelector The selector of the callback function.\\n /// @param _magicNumber The magic number to be registered for the function signature.\\n function registerStandardCallback(\\n bytes4 _interfaceId,\\n bytes4 _callbackSelector,\\n bytes4 _magicNumber\\n ) external;\\n\\n /// @notice Removed function being left here to not corrupt the IDAO interface ID. Any call will revert.\\n /// @dev Introduced in v1.0.0. Removed in v1.4.0.\\n function setSignatureValidator(address) external;\\n}\\n\",\"keccak256\":\"0xb7f615523c26de042edce98731c658f44a1edb2464387ac1b642c4c69f57128e\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/extensions/proposal/IProposal.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IDAO} from \\\"../../../dao/IDAO.sol\\\";\\n\\n/// @title IProposal\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface to be implemented by DAO plugins that create and execute proposals.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IProposal {\\n /// @notice Emitted when a proposal is created.\\n /// @param proposalId The ID of the proposal.\\n /// @param creator The creator of the proposal.\\n /// @param startDate The start date of the proposal in seconds.\\n /// @param endDate The end date of the proposal in seconds.\\n /// @param metadata The metadata of the proposal.\\n /// @param actions The actions that will be executed if the proposal passes.\\n /// @param allowFailureMap A bitmap allowing the proposal to succeed, even if individual actions might revert. If the bit at index `i` is 1, the proposal succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n event ProposalCreated(\\n uint256 indexed proposalId,\\n address indexed creator,\\n uint64 startDate,\\n uint64 endDate,\\n bytes metadata,\\n IDAO.Action[] actions,\\n uint256 allowFailureMap\\n );\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param proposalId The ID of the proposal.\\n event ProposalExecuted(uint256 indexed proposalId);\\n\\n /// @notice Creates a new proposal.\\n /// @param data The metadata of the proposal.\\n /// @param actions The actions that will be executed after the proposal passes.\\n /// @param startDate The start date of the proposal.\\n /// @param endDate The end date of the proposal.\\n /// @return proposalId The id of the proposal.\\n function createProposal(\\n bytes memory data,\\n IDAO.Action[] memory actions,\\n uint64 startDate,\\n uint64 endDate\\n ) external returns (uint256 proposalId);\\n\\n /// @notice Whether proposal can be executed or not.\\n /// @param proposalId The id of the proposal.\\n /// @return bool Returns if proposal can be executed or not.\\n function canExecute(uint256 proposalId) external returns (bool);\\n\\n /// @notice Returns the proposal count determining the next proposal ID.\\n /// @dev This function is deprecated TODO:\\n /// @return The proposal count.\\n function proposalCount() external view returns (uint256);\\n}\\n\",\"keccak256\":\"0xb008b4657c712fc0fcb8f7c54a381cc02a0584471b2b2899290a008454f7da71\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/extensions/proposal/ProposalUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {CountersUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol\\\";\\nimport {ERC165Upgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\\\";\\n\\nimport {IDAO} from \\\"../../../dao/IDAO.sol\\\";\\nimport {IProposal} from \\\"./IProposal.sol\\\";\\n\\n/// @title ProposalUpgradeable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract contract containing the traits and internal functionality to create and execute proposals that can be inherited by upgradeable DAO plugins.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract ProposalUpgradeable is IProposal, ERC165Upgradeable {\\n using CountersUpgradeable for CountersUpgradeable.Counter;\\n\\n /// @notice The incremental ID for proposals and executions.\\n CountersUpgradeable.Counter private proposalCounter;\\n\\n /// @inheritdoc IProposal\\n function proposalCount() public view override returns (uint256) {\\n return proposalCounter.current();\\n }\\n\\n /// @notice Checks if this or the parent contract supports an interface by its ID.\\n /// @param _interfaceId The ID of the interface.\\n /// @return Returns `true` if the interface is supported.\\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\\n // In addition to the current interfaceId, also support previous version of the interfaceId that did not\\n // include the createProposal() function as standard\\n return\\n _interfaceId ==\\n type(IProposal).interfaceId ^\\n IProposal.createProposal.selector ^\\n IProposal.canExecute.selector ||\\n _interfaceId == type(IProposal).interfaceId ||\\n super.supportsInterface(_interfaceId);\\n }\\n\\n /// @notice This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain (see [OpenZeppelin's guide about storage gaps](https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps)).\\n uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0x528501e364d5a414c4c04cff0a47eeded5d7b22b52d33eb8d9f138a6e4e3251c\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[{"astId":372,"contract":"src/plugin/extensions/proposal/ProposalUpgradeable.sol:ProposalUpgradeable","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":375,"contract":"src/plugin/extensions/proposal/ProposalUpgradeable.sol:ProposalUpgradeable","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":1280,"contract":"src/plugin/extensions/proposal/ProposalUpgradeable.sol:ProposalUpgradeable","label":"__gap","offset":0,"slot":"1","type":"t_array(t_uint256)50_storage"},{"astId":4732,"contract":"src/plugin/extensions/proposal/ProposalUpgradeable.sol:ProposalUpgradeable","label":"proposalCounter","offset":0,"slot":"51","type":"t_struct(Counter)1058_storage"},{"astId":4786,"contract":"src/plugin/extensions/proposal/ProposalUpgradeable.sol:ProposalUpgradeable","label":"__gap","offset":0,"slot":"52","type":"t_array(t_uint256)49_storage"}],"types":{"t_array(t_uint256)49_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[49]","numberOfBytes":"1568"},"t_array(t_uint256)50_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[50]","numberOfBytes":"1600"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_struct(Counter)1058_storage":{"encoding":"inplace","label":"struct CountersUpgradeable.Counter","members":[{"astId":1057,"contract":"src/plugin/extensions/proposal/ProposalUpgradeable.sol:ProposalUpgradeable","label":"_value","offset":0,"slot":"0","type":"t_uint256"}],"numberOfBytes":"32"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"events":{"ProposalCreated(uint256,address,uint64,uint64,bytes,(address,uint256,bytes)[],uint256)":{"notice":"Emitted when a proposal is created."},"ProposalExecuted(uint256)":{"notice":"Emitted when a proposal is executed."}},"kind":"user","methods":{"canExecute(uint256)":{"notice":"Whether proposal can be executed or not."},"createProposal(bytes,(address,uint256,bytes)[],uint64,uint64)":{"notice":"Creates a new proposal."},"proposalCount()":{"notice":"Returns the proposal count determining the next proposal ID."},"supportsInterface(bytes4)":{"notice":"Checks if this or the parent contract supports an interface by its ID."}},"notice":"An abstract contract containing the traits and internal functionality to create and execute proposals that can be inherited by upgradeable DAO plugins.","version":1}}},"src/plugin/setup/IPluginSetup.sol":{"IPluginSetup":{"abi":[{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_dao","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"prepareInstallation","outputs":[{"internalType":"address","name":"plugin","type":"address"},{"components":[{"internalType":"address[]","name":"helpers","type":"address[]"},{"components":[{"internalType":"enum PermissionLib.Operation","name":"operation","type":"uint8"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"condition","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"internalType":"struct PermissionLib.MultiTargetPermission[]","name":"permissions","type":"tuple[]"}],"internalType":"struct IPluginSetup.PreparedSetupData","name":"preparedSetupData","type":"tuple"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_dao","type":"address"},{"components":[{"internalType":"address","name":"plugin","type":"address"},{"internalType":"address[]","name":"currentHelpers","type":"address[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct IPluginSetup.SetupPayload","name":"_payload","type":"tuple"}],"name":"prepareUninstallation","outputs":[{"components":[{"internalType":"enum PermissionLib.Operation","name":"operation","type":"uint8"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"condition","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"internalType":"struct PermissionLib.MultiTargetPermission[]","name":"permissions","type":"tuple[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_dao","type":"address"},{"internalType":"uint16","name":"_fromBuild","type":"uint16"},{"components":[{"internalType":"address","name":"plugin","type":"address"},{"internalType":"address[]","name":"currentHelpers","type":"address[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct IPluginSetup.SetupPayload","name":"_payload","type":"tuple"}],"name":"prepareUpdate","outputs":[{"internalType":"bytes","name":"initData","type":"bytes"},{"components":[{"internalType":"address[]","name":"helpers","type":"address[]"},{"components":[{"internalType":"enum PermissionLib.Operation","name":"operation","type":"uint8"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"condition","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"internalType":"struct PermissionLib.MultiTargetPermission[]","name":"permissions","type":"tuple[]"}],"internalType":"struct IPluginSetup.PreparedSetupData","name":"preparedSetupData","type":"tuple"}],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"author":"Aragon X - 2022-2023","custom:security-contact":"sirt@aragon.org","kind":"dev","methods":{"implementation()":{"details":"The implementation can be instantiated via the `new` keyword, cloned via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)), or proxied via the UUPS proxy pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).","returns":{"_0":"The address of the plugin implementation contract."}},"prepareInstallation(address,bytes)":{"params":{"_dao":"The address of the installing DAO.","_data":"The bytes-encoded data containing the input parameters for the installation as specified in the plugin's build metadata JSON file."},"returns":{"plugin":"The address of the `Plugin` contract being prepared for installation.","preparedSetupData":"The deployed plugin's relevant data which consists of helpers and permissions."}},"prepareUninstallation(address,(address,address[],bytes))":{"params":{"_dao":"The address of the uninstalling DAO.","_payload":"The relevant data necessary for the `prepareUninstallation`. See above."},"returns":{"permissions":"The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the uninstalling DAO."}},"prepareUpdate(address,uint16,(address,address[],bytes))":{"params":{"_dao":"The address of the updating DAO.","_fromBuild":"The build number of the plugin to update from.","_payload":"The relevant data necessary for the `prepareUpdate`. See above."},"returns":{"initData":"The initialization data to be passed to upgradeable contracts when the update is applied in the `PluginSetupProcessor`.","preparedSetupData":"The deployed plugin's relevant data which consists of helpers and permissions."}}},"title":"IPluginSetup","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"implementation()":"5c60da1b","prepareInstallation(address,bytes)":"f10832f1","prepareUninstallation(address,(address,address[],bytes))":"9cb0a124","prepareUpdate(address,uint16,(address,address[],bytes))":"a8a9c29e"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_dao\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"prepareInstallation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"plugin\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address[]\",\"name\":\"helpers\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"enum PermissionLib.Operation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"condition\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PermissionLib.MultiTargetPermission[]\",\"name\":\"permissions\",\"type\":\"tuple[]\"}],\"internalType\":\"struct IPluginSetup.PreparedSetupData\",\"name\":\"preparedSetupData\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_dao\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"plugin\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"currentHelpers\",\"type\":\"address[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IPluginSetup.SetupPayload\",\"name\":\"_payload\",\"type\":\"tuple\"}],\"name\":\"prepareUninstallation\",\"outputs\":[{\"components\":[{\"internalType\":\"enum PermissionLib.Operation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"condition\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PermissionLib.MultiTargetPermission[]\",\"name\":\"permissions\",\"type\":\"tuple[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_dao\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"_fromBuild\",\"type\":\"uint16\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"plugin\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"currentHelpers\",\"type\":\"address[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IPluginSetup.SetupPayload\",\"name\":\"_payload\",\"type\":\"tuple\"}],\"name\":\"prepareUpdate\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"initData\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address[]\",\"name\":\"helpers\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"enum PermissionLib.Operation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"condition\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PermissionLib.MultiTargetPermission[]\",\"name\":\"permissions\",\"type\":\"tuple[]\"}],\"internalType\":\"struct IPluginSetup.PreparedSetupData\",\"name\":\"preparedSetupData\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Aragon X - 2022-2023\",\"custom:security-contact\":\"sirt@aragon.org\",\"kind\":\"dev\",\"methods\":{\"implementation()\":{\"details\":\"The implementation can be instantiated via the `new` keyword, cloned via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)), or proxied via the UUPS proxy pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\",\"returns\":{\"_0\":\"The address of the plugin implementation contract.\"}},\"prepareInstallation(address,bytes)\":{\"params\":{\"_dao\":\"The address of the installing DAO.\",\"_data\":\"The bytes-encoded data containing the input parameters for the installation as specified in the plugin's build metadata JSON file.\"},\"returns\":{\"plugin\":\"The address of the `Plugin` contract being prepared for installation.\",\"preparedSetupData\":\"The deployed plugin's relevant data which consists of helpers and permissions.\"}},\"prepareUninstallation(address,(address,address[],bytes))\":{\"params\":{\"_dao\":\"The address of the uninstalling DAO.\",\"_payload\":\"The relevant data necessary for the `prepareUninstallation`. See above.\"},\"returns\":{\"permissions\":\"The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the uninstalling DAO.\"}},\"prepareUpdate(address,uint16,(address,address[],bytes))\":{\"params\":{\"_dao\":\"The address of the updating DAO.\",\"_fromBuild\":\"The build number of the plugin to update from.\",\"_payload\":\"The relevant data necessary for the `prepareUpdate`. See above.\"},\"returns\":{\"initData\":\"The initialization data to be passed to upgradeable contracts when the update is applied in the `PluginSetupProcessor`.\",\"preparedSetupData\":\"The deployed plugin's relevant data which consists of helpers and permissions.\"}}},\"title\":\"IPluginSetup\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"implementation()\":{\"notice\":\"Returns the plugin implementation address.\"},\"prepareInstallation(address,bytes)\":{\"notice\":\"Prepares the installation of a plugin.\"},\"prepareUninstallation(address,(address,address[],bytes))\":{\"notice\":\"Prepares the uninstallation of a plugin.\"},\"prepareUpdate(address,uint16,(address,address[],bytes))\":{\"notice\":\"Prepares the update of a plugin.\"}},\"notice\":\"The interface required for a plugin setup contract to be consumed by the `PluginSetupProcessor` for plugin installations, updates, and uninstallations.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/plugin/setup/IPluginSetup.sol\":\"IPluginSetup\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"src/dao/IDAO.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IDAO\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for DAOs within the Aragon App DAO framework.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IDAO {\\n /// @notice The action struct to be consumed by the DAO's `execute` function resulting in an external call.\\n /// @param to The address to call.\\n /// @param value The native token value to be sent with the call.\\n /// @param data The bytes-encoded function selector and calldata for the call.\\n struct Action {\\n address to;\\n uint256 value;\\n bytes data;\\n }\\n\\n /// @notice Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\\n /// @param _where The address of the contract.\\n /// @param _who The address of a EOA or contract to give the permissions.\\n /// @param _permissionId The permission identifier.\\n /// @param _data The optional data passed to the `PermissionCondition` registered.\\n /// @return Returns true if the address has permission, false if not.\\n function hasPermission(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes memory _data\\n ) external view returns (bool);\\n\\n /// @notice Updates the DAO metadata (e.g., an IPFS hash).\\n /// @param _metadata The IPFS hash of the new metadata object.\\n function setMetadata(bytes calldata _metadata) external;\\n\\n /// @notice Emitted when the DAO metadata is updated.\\n /// @param metadata The IPFS hash of the new metadata object.\\n event MetadataSet(bytes metadata);\\n\\n /// @notice Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted.\\n /// @param _callId The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce.\\n /// @param _actions The array of actions.\\n /// @param _allowFailureMap A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @return The array of results obtained from the executed actions in `bytes`.\\n /// @return The resulting failure map containing the actions have actually failed.\\n function execute(\\n bytes32 _callId,\\n Action[] memory _actions,\\n uint256 _allowFailureMap\\n ) external returns (bytes[] memory, uint256);\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param actor The address of the caller.\\n /// @param callId The ID of the call.\\n /// @param actions The array of actions executed.\\n /// @param allowFailureMap The allow failure map encoding which actions are allowed to fail.\\n /// @param failureMap The failure map encoding which actions have failed.\\n /// @param execResults The array with the results of the executed actions.\\n /// @dev The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce.\\n event Executed(\\n address indexed actor,\\n bytes32 callId,\\n Action[] actions,\\n uint256 allowFailureMap,\\n uint256 failureMap,\\n bytes[] execResults\\n );\\n\\n /// @notice Emitted when a standard callback is registered.\\n /// @param interfaceId The ID of the interface.\\n /// @param callbackSelector The selector of the callback function.\\n /// @param magicNumber The magic number to be registered for the callback function selector.\\n event StandardCallbackRegistered(\\n bytes4 interfaceId,\\n bytes4 callbackSelector,\\n bytes4 magicNumber\\n );\\n\\n /// @notice Deposits (native) tokens to the DAO contract with a reference string.\\n /// @param _token The address of the token or address(0) in case of the native token.\\n /// @param _amount The amount of tokens to deposit.\\n /// @param _reference The reference describing the deposit reason.\\n function deposit(address _token, uint256 _amount, string calldata _reference) external payable;\\n\\n /// @notice Emitted when a token deposit has been made to the DAO.\\n /// @param sender The address of the sender.\\n /// @param token The address of the deposited token.\\n /// @param amount The amount of tokens deposited.\\n /// @param _reference The reference describing the deposit reason.\\n event Deposited(\\n address indexed sender,\\n address indexed token,\\n uint256 amount,\\n string _reference\\n );\\n\\n /// @notice Emitted when a native token deposit has been made to the DAO.\\n /// @dev This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).\\n /// @param sender The address of the sender.\\n /// @param amount The amount of native tokens deposited.\\n event NativeTokenDeposited(address sender, uint256 amount);\\n\\n /// @notice Setter for the trusted forwarder verifying the meta transaction.\\n /// @param _trustedForwarder The trusted forwarder address.\\n function setTrustedForwarder(address _trustedForwarder) external;\\n\\n /// @notice Getter for the trusted forwarder verifying the meta transaction.\\n /// @return The trusted forwarder address.\\n function getTrustedForwarder() external view returns (address);\\n\\n /// @notice Emitted when a new TrustedForwarder is set on the DAO.\\n /// @param forwarder the new forwarder address.\\n event TrustedForwarderSet(address forwarder);\\n\\n /// @notice Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\\n /// @param _hash The hash of the data to be signed.\\n /// @param _signature The signature byte array associated with `_hash`.\\n /// @return Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not.\\n function isValidSignature(bytes32 _hash, bytes memory _signature) external returns (bytes4);\\n\\n /// @notice Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\\n /// @param _interfaceId The ID of the interface.\\n /// @param _callbackSelector The selector of the callback function.\\n /// @param _magicNumber The magic number to be registered for the function signature.\\n function registerStandardCallback(\\n bytes4 _interfaceId,\\n bytes4 _callbackSelector,\\n bytes4 _magicNumber\\n ) external;\\n\\n /// @notice Removed function being left here to not corrupt the IDAO interface ID. Any call will revert.\\n /// @dev Introduced in v1.0.0. Removed in v1.4.0.\\n function setSignatureValidator(address) external;\\n}\\n\",\"keccak256\":\"0xb7f615523c26de042edce98731c658f44a1edb2464387ac1b642c4c69f57128e\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/PermissionLib.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title PermissionLib\\n/// @author Aragon X - 2021-2023\\n/// @notice A library containing objects for permission processing.\\n/// @custom:security-contact sirt@aragon.org\\nlibrary PermissionLib {\\n /// @notice A constant expressing that no condition is applied to a permission.\\n address public constant NO_CONDITION = address(0);\\n\\n /// @notice The types of permission operations available in the `PermissionManager`.\\n /// @param Grant The grant operation setting a permission without a condition.\\n /// @param Revoke The revoke operation removing a permission (that was granted with or without a condition).\\n /// @param GrantWithCondition The grant operation setting a permission with a condition.\\n enum Operation {\\n Grant,\\n Revoke,\\n GrantWithCondition\\n }\\n\\n /// @notice A struct containing the information for a permission to be applied on a single target contract without a condition.\\n /// @param operation The permission operation type.\\n /// @param who The address (EOA or contract) receiving the permission.\\n /// @param permissionId The permission identifier.\\n struct SingleTargetPermission {\\n Operation operation;\\n address who;\\n bytes32 permissionId;\\n }\\n\\n /// @notice A struct containing the information for a permission to be applied on multiple target contracts, optionally, with a condition.\\n /// @param operation The permission operation type.\\n /// @param where The address of the target contract for which `who` receives permission.\\n /// @param who The address (EOA or contract) receiving the permission.\\n /// @param condition The `PermissionCondition` that will be asked for authorization on calls connected to the specified permission identifier.\\n /// @param permissionId The permission identifier.\\n struct MultiTargetPermission {\\n Operation operation;\\n address where;\\n address who;\\n address condition;\\n bytes32 permissionId;\\n }\\n}\\n\",\"keccak256\":\"0x470faf3c4891ebc6420ef6cc09f6098917568ccc79268c90954d1478199b6097\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/setup/IPluginSetup.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {PermissionLib} from \\\"../../permission/PermissionLib.sol\\\";\\n\\n// solhint-disable-next-line no-unused-import\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @title IPluginSetup\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for a plugin setup contract to be consumed by the `PluginSetupProcessor` for plugin installations, updates, and uninstallations.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IPluginSetup {\\n /// @notice The data associated with a prepared setup.\\n /// @param helpers The address array of helpers (contracts or EOAs) associated with this plugin version after the installation or update.\\n /// @param permissions The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the installing or updating DAO.\\n struct PreparedSetupData {\\n address[] helpers;\\n PermissionLib.MultiTargetPermission[] permissions;\\n }\\n\\n /// @notice The payload for plugin updates and uninstallations containing the existing contracts as well as optional data to be consumed by the plugin setup.\\n /// @param plugin The address of the `Plugin`.\\n /// @param currentHelpers The address array of all current helpers (contracts or EOAs) associated with the plugin to update from.\\n /// @param data The bytes-encoded data containing the input parameters for the preparation of update/uninstall as specified in the corresponding ABI on the version's metadata.\\n struct SetupPayload {\\n address plugin;\\n address[] currentHelpers;\\n bytes data;\\n }\\n\\n /// @notice Prepares the installation of a plugin.\\n /// @param _dao The address of the installing DAO.\\n /// @param _data The bytes-encoded data containing the input parameters for the installation as specified in the plugin's build metadata JSON file.\\n /// @return plugin The address of the `Plugin` contract being prepared for installation.\\n /// @return preparedSetupData The deployed plugin's relevant data which consists of helpers and permissions.\\n function prepareInstallation(\\n address _dao,\\n bytes calldata _data\\n ) external returns (address plugin, PreparedSetupData memory preparedSetupData);\\n\\n /// @notice Prepares the update of a plugin.\\n /// @param _dao The address of the updating DAO.\\n /// @param _fromBuild The build number of the plugin to update from.\\n /// @param _payload The relevant data necessary for the `prepareUpdate`. See above.\\n /// @return initData The initialization data to be passed to upgradeable contracts when the update is applied in the `PluginSetupProcessor`.\\n /// @return preparedSetupData The deployed plugin's relevant data which consists of helpers and permissions.\\n function prepareUpdate(\\n address _dao,\\n uint16 _fromBuild,\\n SetupPayload calldata _payload\\n ) external returns (bytes memory initData, PreparedSetupData memory preparedSetupData);\\n\\n /// @notice Prepares the uninstallation of a plugin.\\n /// @param _dao The address of the uninstalling DAO.\\n /// @param _payload The relevant data necessary for the `prepareUninstallation`. See above.\\n /// @return permissions The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the uninstalling DAO.\\n function prepareUninstallation(\\n address _dao,\\n SetupPayload calldata _payload\\n ) external returns (PermissionLib.MultiTargetPermission[] memory permissions);\\n\\n /// @notice Returns the plugin implementation address.\\n /// @return The address of the plugin implementation contract.\\n /// @dev The implementation can be instantiated via the `new` keyword, cloned via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)), or proxied via the UUPS proxy pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0x21c99995208039ac6ace219b6f273243811dc2aa66399e8e499e43ec30b82fa9\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{"implementation()":{"notice":"Returns the plugin implementation address."},"prepareInstallation(address,bytes)":{"notice":"Prepares the installation of a plugin."},"prepareUninstallation(address,(address,address[],bytes))":{"notice":"Prepares the uninstallation of a plugin."},"prepareUpdate(address,uint16,(address,address[],bytes))":{"notice":"Prepares the update of a plugin."}},"notice":"The interface required for a plugin setup contract to be consumed by the `PluginSetupProcessor` for plugin installations, updates, and uninstallations.","version":1}}},"src/plugin/setup/PluginSetup.sol":{"PluginSetup":{"abi":[{"inputs":[],"name":"NonUpgradeablePlugin","type":"error"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_dao","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"prepareInstallation","outputs":[{"internalType":"address","name":"plugin","type":"address"},{"components":[{"internalType":"address[]","name":"helpers","type":"address[]"},{"components":[{"internalType":"enum PermissionLib.Operation","name":"operation","type":"uint8"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"condition","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"internalType":"struct PermissionLib.MultiTargetPermission[]","name":"permissions","type":"tuple[]"}],"internalType":"struct IPluginSetup.PreparedSetupData","name":"preparedSetupData","type":"tuple"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_dao","type":"address"},{"components":[{"internalType":"address","name":"plugin","type":"address"},{"internalType":"address[]","name":"currentHelpers","type":"address[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct IPluginSetup.SetupPayload","name":"_payload","type":"tuple"}],"name":"prepareUninstallation","outputs":[{"components":[{"internalType":"enum PermissionLib.Operation","name":"operation","type":"uint8"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"condition","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"internalType":"struct PermissionLib.MultiTargetPermission[]","name":"permissions","type":"tuple[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_dao","type":"address"},{"internalType":"uint16","name":"_fromBuild","type":"uint16"},{"components":[{"internalType":"address","name":"plugin","type":"address"},{"internalType":"address[]","name":"currentHelpers","type":"address[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct IPluginSetup.SetupPayload","name":"_payload","type":"tuple"}],"name":"prepareUpdate","outputs":[{"internalType":"bytes","name":"","type":"bytes"},{"components":[{"internalType":"address[]","name":"helpers","type":"address[]"},{"components":[{"internalType":"enum PermissionLib.Operation","name":"operation","type":"uint8"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"condition","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"internalType":"struct PermissionLib.MultiTargetPermission[]","name":"permissions","type":"tuple[]"}],"internalType":"struct IPluginSetup.PreparedSetupData","name":"","type":"tuple"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"protocolVersion","outputs":[{"internalType":"uint8[3]","name":"","type":"uint8[3]"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"author":"Aragon X - 2022-2024","custom:security-contact":"sirt@aragon.org","kind":"dev","methods":{"constructor":{"params":{"_implementation":"The address of the plugin implementation contract."}},"implementation()":{"details":"The implementation can be instantiated via the `new` keyword, cloned via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)), or proxied via the UUPS proxy pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).","returns":{"_0":"The address of the plugin implementation contract."}},"prepareInstallation(address,bytes)":{"params":{"_dao":"The address of the installing DAO.","_data":"The bytes-encoded data containing the input parameters for the installation as specified in the plugin's build metadata JSON file."},"returns":{"plugin":"The address of the `Plugin` contract being prepared for installation.","preparedSetupData":"The deployed plugin's relevant data which consists of helpers and permissions."}},"prepareUninstallation(address,(address,address[],bytes))":{"params":{"_dao":"The address of the uninstalling DAO.","_payload":"The relevant data necessary for the `prepareUninstallation`. See above."},"returns":{"permissions":"The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the uninstalling DAO."}},"prepareUpdate(address,uint16,(address,address[],bytes))":{"details":"Since the underlying plugin is non-upgradeable, this non-virtual function must always revert.","params":{"_dao":"The address of the updating DAO.","_fromBuild":"The build number of the plugin to update from.","_payload":"The relevant data necessary for the `prepareUpdate`. See above."},"returns":{"_0":"The initialization data to be passed to upgradeable contracts when the update is applied in the `PluginSetupProcessor`.","_1":"The deployed plugin's relevant data which consists of helpers and permissions."}},"protocolVersion()":{"details":"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.","returns":{"_0":"Returns the semantic Aragon OSx protocol version number."}},"supportsInterface(bytes4)":{"params":{"_interfaceId":"The ID of the interface."},"returns":{"_0":"Returns `true` if the interface is supported."}}},"title":"PluginSetup","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"implementation()":"5c60da1b","prepareInstallation(address,bytes)":"f10832f1","prepareUninstallation(address,(address,address[],bytes))":"9cb0a124","prepareUpdate(address,uint16,(address,address[],bytes))":"a8a9c29e","protocolVersion()":"2ae9c600","supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"NonUpgradeablePlugin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_dao\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"prepareInstallation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"plugin\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address[]\",\"name\":\"helpers\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"enum PermissionLib.Operation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"condition\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PermissionLib.MultiTargetPermission[]\",\"name\":\"permissions\",\"type\":\"tuple[]\"}],\"internalType\":\"struct IPluginSetup.PreparedSetupData\",\"name\":\"preparedSetupData\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_dao\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"plugin\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"currentHelpers\",\"type\":\"address[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IPluginSetup.SetupPayload\",\"name\":\"_payload\",\"type\":\"tuple\"}],\"name\":\"prepareUninstallation\",\"outputs\":[{\"components\":[{\"internalType\":\"enum PermissionLib.Operation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"condition\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PermissionLib.MultiTargetPermission[]\",\"name\":\"permissions\",\"type\":\"tuple[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_dao\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"_fromBuild\",\"type\":\"uint16\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"plugin\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"currentHelpers\",\"type\":\"address[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IPluginSetup.SetupPayload\",\"name\":\"_payload\",\"type\":\"tuple\"}],\"name\":\"prepareUpdate\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address[]\",\"name\":\"helpers\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"enum PermissionLib.Operation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"condition\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PermissionLib.MultiTargetPermission[]\",\"name\":\"permissions\",\"type\":\"tuple[]\"}],\"internalType\":\"struct IPluginSetup.PreparedSetupData\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"protocolVersion\",\"outputs\":[{\"internalType\":\"uint8[3]\",\"name\":\"\",\"type\":\"uint8[3]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Aragon X - 2022-2024\",\"custom:security-contact\":\"sirt@aragon.org\",\"kind\":\"dev\",\"methods\":{\"constructor\":{\"params\":{\"_implementation\":\"The address of the plugin implementation contract.\"}},\"implementation()\":{\"details\":\"The implementation can be instantiated via the `new` keyword, cloned via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)), or proxied via the UUPS proxy pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\",\"returns\":{\"_0\":\"The address of the plugin implementation contract.\"}},\"prepareInstallation(address,bytes)\":{\"params\":{\"_dao\":\"The address of the installing DAO.\",\"_data\":\"The bytes-encoded data containing the input parameters for the installation as specified in the plugin's build metadata JSON file.\"},\"returns\":{\"plugin\":\"The address of the `Plugin` contract being prepared for installation.\",\"preparedSetupData\":\"The deployed plugin's relevant data which consists of helpers and permissions.\"}},\"prepareUninstallation(address,(address,address[],bytes))\":{\"params\":{\"_dao\":\"The address of the uninstalling DAO.\",\"_payload\":\"The relevant data necessary for the `prepareUninstallation`. See above.\"},\"returns\":{\"permissions\":\"The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the uninstalling DAO.\"}},\"prepareUpdate(address,uint16,(address,address[],bytes))\":{\"details\":\"Since the underlying plugin is non-upgradeable, this non-virtual function must always revert.\",\"params\":{\"_dao\":\"The address of the updating DAO.\",\"_fromBuild\":\"The build number of the plugin to update from.\",\"_payload\":\"The relevant data necessary for the `prepareUpdate`. See above.\"},\"returns\":{\"_0\":\"The initialization data to be passed to upgradeable contracts when the update is applied in the `PluginSetupProcessor`.\",\"_1\":\"The deployed plugin's relevant data which consists of helpers and permissions.\"}},\"protocolVersion()\":{\"details\":\"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\",\"returns\":{\"_0\":\"Returns the semantic Aragon OSx protocol version number.\"}},\"supportsInterface(bytes4)\":{\"params\":{\"_interfaceId\":\"The ID of the interface.\"},\"returns\":{\"_0\":\"Returns `true` if the interface is supported.\"}}},\"title\":\"PluginSetup\",\"version\":1},\"userdoc\":{\"errors\":{\"NonUpgradeablePlugin()\":[{\"notice\":\"Thrown when attempting to prepare an update on a non-upgradeable plugin.\"}]},\"kind\":\"user\",\"methods\":{\"constructor\":{\"notice\":\"The contract constructor, that setting the plugin implementation contract.\"},\"implementation()\":{\"notice\":\"Returns the plugin implementation address.\"},\"prepareInstallation(address,bytes)\":{\"notice\":\"Prepares the installation of a plugin.\"},\"prepareUninstallation(address,(address,address[],bytes))\":{\"notice\":\"Prepares the uninstallation of a plugin.\"},\"prepareUpdate(address,uint16,(address,address[],bytes))\":{\"notice\":\"Prepares the update of a plugin.\"},\"protocolVersion()\":{\"notice\":\"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Checks if this or the parent contract supports an interface by its ID.\"}},\"notice\":\"An abstract contract to inherit from to implement the plugin setup for non-upgradeable plugins, i.e, - `Plugin` being deployed via the `new` keyword - `PluginCloneable` being deployed via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)).\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/plugin/setup/PluginSetup.sol\":\"PluginSetup\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165 is IERC165 {\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165).interfaceId;\\n }\\n}\\n\",\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"src/dao/IDAO.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IDAO\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for DAOs within the Aragon App DAO framework.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IDAO {\\n /// @notice The action struct to be consumed by the DAO's `execute` function resulting in an external call.\\n /// @param to The address to call.\\n /// @param value The native token value to be sent with the call.\\n /// @param data The bytes-encoded function selector and calldata for the call.\\n struct Action {\\n address to;\\n uint256 value;\\n bytes data;\\n }\\n\\n /// @notice Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\\n /// @param _where The address of the contract.\\n /// @param _who The address of a EOA or contract to give the permissions.\\n /// @param _permissionId The permission identifier.\\n /// @param _data The optional data passed to the `PermissionCondition` registered.\\n /// @return Returns true if the address has permission, false if not.\\n function hasPermission(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes memory _data\\n ) external view returns (bool);\\n\\n /// @notice Updates the DAO metadata (e.g., an IPFS hash).\\n /// @param _metadata The IPFS hash of the new metadata object.\\n function setMetadata(bytes calldata _metadata) external;\\n\\n /// @notice Emitted when the DAO metadata is updated.\\n /// @param metadata The IPFS hash of the new metadata object.\\n event MetadataSet(bytes metadata);\\n\\n /// @notice Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted.\\n /// @param _callId The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce.\\n /// @param _actions The array of actions.\\n /// @param _allowFailureMap A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @return The array of results obtained from the executed actions in `bytes`.\\n /// @return The resulting failure map containing the actions have actually failed.\\n function execute(\\n bytes32 _callId,\\n Action[] memory _actions,\\n uint256 _allowFailureMap\\n ) external returns (bytes[] memory, uint256);\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param actor The address of the caller.\\n /// @param callId The ID of the call.\\n /// @param actions The array of actions executed.\\n /// @param allowFailureMap The allow failure map encoding which actions are allowed to fail.\\n /// @param failureMap The failure map encoding which actions have failed.\\n /// @param execResults The array with the results of the executed actions.\\n /// @dev The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce.\\n event Executed(\\n address indexed actor,\\n bytes32 callId,\\n Action[] actions,\\n uint256 allowFailureMap,\\n uint256 failureMap,\\n bytes[] execResults\\n );\\n\\n /// @notice Emitted when a standard callback is registered.\\n /// @param interfaceId The ID of the interface.\\n /// @param callbackSelector The selector of the callback function.\\n /// @param magicNumber The magic number to be registered for the callback function selector.\\n event StandardCallbackRegistered(\\n bytes4 interfaceId,\\n bytes4 callbackSelector,\\n bytes4 magicNumber\\n );\\n\\n /// @notice Deposits (native) tokens to the DAO contract with a reference string.\\n /// @param _token The address of the token or address(0) in case of the native token.\\n /// @param _amount The amount of tokens to deposit.\\n /// @param _reference The reference describing the deposit reason.\\n function deposit(address _token, uint256 _amount, string calldata _reference) external payable;\\n\\n /// @notice Emitted when a token deposit has been made to the DAO.\\n /// @param sender The address of the sender.\\n /// @param token The address of the deposited token.\\n /// @param amount The amount of tokens deposited.\\n /// @param _reference The reference describing the deposit reason.\\n event Deposited(\\n address indexed sender,\\n address indexed token,\\n uint256 amount,\\n string _reference\\n );\\n\\n /// @notice Emitted when a native token deposit has been made to the DAO.\\n /// @dev This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).\\n /// @param sender The address of the sender.\\n /// @param amount The amount of native tokens deposited.\\n event NativeTokenDeposited(address sender, uint256 amount);\\n\\n /// @notice Setter for the trusted forwarder verifying the meta transaction.\\n /// @param _trustedForwarder The trusted forwarder address.\\n function setTrustedForwarder(address _trustedForwarder) external;\\n\\n /// @notice Getter for the trusted forwarder verifying the meta transaction.\\n /// @return The trusted forwarder address.\\n function getTrustedForwarder() external view returns (address);\\n\\n /// @notice Emitted when a new TrustedForwarder is set on the DAO.\\n /// @param forwarder the new forwarder address.\\n event TrustedForwarderSet(address forwarder);\\n\\n /// @notice Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\\n /// @param _hash The hash of the data to be signed.\\n /// @param _signature The signature byte array associated with `_hash`.\\n /// @return Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not.\\n function isValidSignature(bytes32 _hash, bytes memory _signature) external returns (bytes4);\\n\\n /// @notice Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\\n /// @param _interfaceId The ID of the interface.\\n /// @param _callbackSelector The selector of the callback function.\\n /// @param _magicNumber The magic number to be registered for the function signature.\\n function registerStandardCallback(\\n bytes4 _interfaceId,\\n bytes4 _callbackSelector,\\n bytes4 _magicNumber\\n ) external;\\n\\n /// @notice Removed function being left here to not corrupt the IDAO interface ID. Any call will revert.\\n /// @dev Introduced in v1.0.0. Removed in v1.4.0.\\n function setSignatureValidator(address) external;\\n}\\n\",\"keccak256\":\"0xb7f615523c26de042edce98731c658f44a1edb2464387ac1b642c4c69f57128e\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/PermissionLib.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title PermissionLib\\n/// @author Aragon X - 2021-2023\\n/// @notice A library containing objects for permission processing.\\n/// @custom:security-contact sirt@aragon.org\\nlibrary PermissionLib {\\n /// @notice A constant expressing that no condition is applied to a permission.\\n address public constant NO_CONDITION = address(0);\\n\\n /// @notice The types of permission operations available in the `PermissionManager`.\\n /// @param Grant The grant operation setting a permission without a condition.\\n /// @param Revoke The revoke operation removing a permission (that was granted with or without a condition).\\n /// @param GrantWithCondition The grant operation setting a permission with a condition.\\n enum Operation {\\n Grant,\\n Revoke,\\n GrantWithCondition\\n }\\n\\n /// @notice A struct containing the information for a permission to be applied on a single target contract without a condition.\\n /// @param operation The permission operation type.\\n /// @param who The address (EOA or contract) receiving the permission.\\n /// @param permissionId The permission identifier.\\n struct SingleTargetPermission {\\n Operation operation;\\n address who;\\n bytes32 permissionId;\\n }\\n\\n /// @notice A struct containing the information for a permission to be applied on multiple target contracts, optionally, with a condition.\\n /// @param operation The permission operation type.\\n /// @param where The address of the target contract for which `who` receives permission.\\n /// @param who The address (EOA or contract) receiving the permission.\\n /// @param condition The `PermissionCondition` that will be asked for authorization on calls connected to the specified permission identifier.\\n /// @param permissionId The permission identifier.\\n struct MultiTargetPermission {\\n Operation operation;\\n address where;\\n address who;\\n address condition;\\n bytes32 permissionId;\\n }\\n}\\n\",\"keccak256\":\"0x470faf3c4891ebc6420ef6cc09f6098917568ccc79268c90954d1478199b6097\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/setup/IPluginSetup.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {PermissionLib} from \\\"../../permission/PermissionLib.sol\\\";\\n\\n// solhint-disable-next-line no-unused-import\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @title IPluginSetup\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for a plugin setup contract to be consumed by the `PluginSetupProcessor` for plugin installations, updates, and uninstallations.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IPluginSetup {\\n /// @notice The data associated with a prepared setup.\\n /// @param helpers The address array of helpers (contracts or EOAs) associated with this plugin version after the installation or update.\\n /// @param permissions The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the installing or updating DAO.\\n struct PreparedSetupData {\\n address[] helpers;\\n PermissionLib.MultiTargetPermission[] permissions;\\n }\\n\\n /// @notice The payload for plugin updates and uninstallations containing the existing contracts as well as optional data to be consumed by the plugin setup.\\n /// @param plugin The address of the `Plugin`.\\n /// @param currentHelpers The address array of all current helpers (contracts or EOAs) associated with the plugin to update from.\\n /// @param data The bytes-encoded data containing the input parameters for the preparation of update/uninstall as specified in the corresponding ABI on the version's metadata.\\n struct SetupPayload {\\n address plugin;\\n address[] currentHelpers;\\n bytes data;\\n }\\n\\n /// @notice Prepares the installation of a plugin.\\n /// @param _dao The address of the installing DAO.\\n /// @param _data The bytes-encoded data containing the input parameters for the installation as specified in the plugin's build metadata JSON file.\\n /// @return plugin The address of the `Plugin` contract being prepared for installation.\\n /// @return preparedSetupData The deployed plugin's relevant data which consists of helpers and permissions.\\n function prepareInstallation(\\n address _dao,\\n bytes calldata _data\\n ) external returns (address plugin, PreparedSetupData memory preparedSetupData);\\n\\n /// @notice Prepares the update of a plugin.\\n /// @param _dao The address of the updating DAO.\\n /// @param _fromBuild The build number of the plugin to update from.\\n /// @param _payload The relevant data necessary for the `prepareUpdate`. See above.\\n /// @return initData The initialization data to be passed to upgradeable contracts when the update is applied in the `PluginSetupProcessor`.\\n /// @return preparedSetupData The deployed plugin's relevant data which consists of helpers and permissions.\\n function prepareUpdate(\\n address _dao,\\n uint16 _fromBuild,\\n SetupPayload calldata _payload\\n ) external returns (bytes memory initData, PreparedSetupData memory preparedSetupData);\\n\\n /// @notice Prepares the uninstallation of a plugin.\\n /// @param _dao The address of the uninstalling DAO.\\n /// @param _payload The relevant data necessary for the `prepareUninstallation`. See above.\\n /// @return permissions The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the uninstalling DAO.\\n function prepareUninstallation(\\n address _dao,\\n SetupPayload calldata _payload\\n ) external returns (PermissionLib.MultiTargetPermission[] memory permissions);\\n\\n /// @notice Returns the plugin implementation address.\\n /// @return The address of the plugin implementation contract.\\n /// @dev The implementation can be instantiated via the `new` keyword, cloned via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)), or proxied via the UUPS proxy pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0x21c99995208039ac6ace219b6f273243811dc2aa66399e8e499e43ec30b82fa9\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/setup/PluginSetup.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ERC165} from \\\"@openzeppelin/contracts/utils/introspection/ERC165.sol\\\";\\n\\nimport {IProtocolVersion} from \\\"../../utils/versioning/IProtocolVersion.sol\\\";\\nimport {ProtocolVersion} from \\\"../../utils/versioning/ProtocolVersion.sol\\\";\\nimport {IPluginSetup} from \\\"./IPluginSetup.sol\\\";\\n\\n/// @title PluginSetup\\n/// @author Aragon X - 2022-2024\\n/// @notice An abstract contract to inherit from to implement the plugin setup for non-upgradeable plugins, i.e,\\n/// - `Plugin` being deployed via the `new` keyword\\n/// - `PluginCloneable` being deployed via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)).\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract PluginSetup is ERC165, IPluginSetup, ProtocolVersion {\\n /// @notice The address of the plugin implementation contract for initial block explorer verification and, in the case of `PluginClonable` implementations, to create [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167) clones from.\\n address internal immutable IMPLEMENTATION;\\n\\n /// @notice Thrown when attempting to prepare an update on a non-upgradeable plugin.\\n error NonUpgradeablePlugin();\\n\\n /// @notice The contract constructor, that setting the plugin implementation contract.\\n /// @param _implementation The address of the plugin implementation contract.\\n constructor(address _implementation) {\\n IMPLEMENTATION = _implementation;\\n }\\n\\n /// @inheritdoc IPluginSetup\\n /// @dev Since the underlying plugin is non-upgradeable, this non-virtual function must always revert.\\n function prepareUpdate(\\n address _dao,\\n uint16 _fromBuild,\\n SetupPayload calldata _payload\\n ) external pure returns (bytes memory, PreparedSetupData memory) {\\n (_dao, _fromBuild, _payload);\\n revert NonUpgradeablePlugin();\\n }\\n\\n /// @notice Checks if this or the parent contract supports an interface by its ID.\\n /// @param _interfaceId The ID of the interface.\\n /// @return Returns `true` if the interface is supported.\\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\\n return\\n _interfaceId == type(IPluginSetup).interfaceId ||\\n _interfaceId == type(IProtocolVersion).interfaceId ||\\n super.supportsInterface(_interfaceId);\\n }\\n\\n /// @inheritdoc IPluginSetup\\n function implementation() public view returns (address) {\\n return IMPLEMENTATION;\\n }\\n}\\n\",\"keccak256\":\"0x93044f8080758c5cf8d621e3614b8150f55572a1770880106a49dfa53784a9d2\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/IProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IProtocolVersion\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the semantic Aragon OSx protocol version number.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IProtocolVersion {\\n /// @notice Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\\n /// @return _version Returns the semantic Aragon OSx protocol version number.\\n /// @dev This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\\n function protocolVersion() external view returns (uint8[3] memory _version);\\n}\\n\",\"keccak256\":\"0x00a4da654d21dc1bdadbdc8bd54bb86c378c56f85e461ccc31303628ea621361\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/ProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IProtocolVersion} from \\\"./IProtocolVersion.sol\\\";\\n\\n/// @title ProtocolVersion\\n/// @author Aragon X - 2023\\n/// @notice An abstract, stateless, non-upgradeable contract providing the current Aragon OSx protocol version number.\\n/// @dev Do not add any new variables to this contract that would shift down storage in the inheritance chain.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract ProtocolVersion is IProtocolVersion {\\n // IMPORTANT: Do not add any storage variable, see the above notice.\\n\\n /// @inheritdoc IProtocolVersion\\n function protocolVersion() public pure returns (uint8[3] memory) {\\n return [1, 4, 0];\\n }\\n}\\n\",\"keccak256\":\"0x3975c937be935f687c6b6b8f379071232681e98cf04b175d72781b819ea52bdb\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"errors":{"NonUpgradeablePlugin()":[{"notice":"Thrown when attempting to prepare an update on a non-upgradeable plugin."}]},"kind":"user","methods":{"constructor":{"notice":"The contract constructor, that setting the plugin implementation contract."},"implementation()":{"notice":"Returns the plugin implementation address."},"prepareInstallation(address,bytes)":{"notice":"Prepares the installation of a plugin."},"prepareUninstallation(address,(address,address[],bytes))":{"notice":"Prepares the uninstallation of a plugin."},"prepareUpdate(address,uint16,(address,address[],bytes))":{"notice":"Prepares the update of a plugin."},"protocolVersion()":{"notice":"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with."},"supportsInterface(bytes4)":{"notice":"Checks if this or the parent contract supports an interface by its ID."}},"notice":"An abstract contract to inherit from to implement the plugin setup for non-upgradeable plugins, i.e, - `Plugin` being deployed via the `new` keyword - `PluginCloneable` being deployed via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)).","version":1}}},"src/plugin/setup/PluginUpgradeableSetup.sol":{"PluginUpgradeableSetup":{"abi":[{"inputs":[{"internalType":"uint16","name":"fromBuild","type":"uint16"},{"internalType":"uint16","name":"thisBuild","type":"uint16"}],"name":"InvalidUpdatePath","type":"error"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_dao","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"prepareInstallation","outputs":[{"internalType":"address","name":"plugin","type":"address"},{"components":[{"internalType":"address[]","name":"helpers","type":"address[]"},{"components":[{"internalType":"enum PermissionLib.Operation","name":"operation","type":"uint8"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"condition","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"internalType":"struct PermissionLib.MultiTargetPermission[]","name":"permissions","type":"tuple[]"}],"internalType":"struct IPluginSetup.PreparedSetupData","name":"preparedSetupData","type":"tuple"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_dao","type":"address"},{"components":[{"internalType":"address","name":"plugin","type":"address"},{"internalType":"address[]","name":"currentHelpers","type":"address[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct IPluginSetup.SetupPayload","name":"_payload","type":"tuple"}],"name":"prepareUninstallation","outputs":[{"components":[{"internalType":"enum PermissionLib.Operation","name":"operation","type":"uint8"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"condition","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"internalType":"struct PermissionLib.MultiTargetPermission[]","name":"permissions","type":"tuple[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_dao","type":"address"},{"internalType":"uint16","name":"_fromBuild","type":"uint16"},{"components":[{"internalType":"address","name":"plugin","type":"address"},{"internalType":"address[]","name":"currentHelpers","type":"address[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct IPluginSetup.SetupPayload","name":"_payload","type":"tuple"}],"name":"prepareUpdate","outputs":[{"internalType":"bytes","name":"initData","type":"bytes"},{"components":[{"internalType":"address[]","name":"helpers","type":"address[]"},{"components":[{"internalType":"enum PermissionLib.Operation","name":"operation","type":"uint8"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"condition","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"internalType":"struct PermissionLib.MultiTargetPermission[]","name":"permissions","type":"tuple[]"}],"internalType":"struct IPluginSetup.PreparedSetupData","name":"preparedSetupData","type":"tuple"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"protocolVersion","outputs":[{"internalType":"uint8[3]","name":"","type":"uint8[3]"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"author":"Aragon X - 2022-2024","custom:security-contact":"sirt@aragon.org","errors":{"InvalidUpdatePath(uint16,uint16)":[{"params":{"fromBuild":"The build number to update from.","thisBuild":"The build number of this setup to update to."}}]},"kind":"dev","methods":{"constructor":{"params":{"_implementation":"The address of the plugin implementation contract."}},"implementation()":{"details":"The implementation can be instantiated via the `new` keyword, cloned via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)), or proxied via the UUPS proxy pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).","returns":{"_0":"The address of the plugin implementation contract."}},"prepareInstallation(address,bytes)":{"params":{"_dao":"The address of the installing DAO.","_data":"The bytes-encoded data containing the input parameters for the installation as specified in the plugin's build metadata JSON file."},"returns":{"plugin":"The address of the `Plugin` contract being prepared for installation.","preparedSetupData":"The deployed plugin's relevant data which consists of helpers and permissions."}},"prepareUninstallation(address,(address,address[],bytes))":{"params":{"_dao":"The address of the uninstalling DAO.","_payload":"The relevant data necessary for the `prepareUninstallation`. See above."},"returns":{"permissions":"The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the uninstalling DAO."}},"prepareUpdate(address,uint16,(address,address[],bytes))":{"params":{"_dao":"The address of the updating DAO.","_fromBuild":"The build number of the plugin to update from.","_payload":"The relevant data necessary for the `prepareUpdate`. See above."},"returns":{"initData":"The initialization data to be passed to upgradeable contracts when the update is applied in the `PluginSetupProcessor`.","preparedSetupData":"The deployed plugin's relevant data which consists of helpers and permissions."}},"protocolVersion()":{"details":"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.","returns":{"_0":"Returns the semantic Aragon OSx protocol version number."}},"supportsInterface(bytes4)":{"params":{"_interfaceId":"The ID of the interface."},"returns":{"_0":"Returns `true` if the interface is supported."}}},"title":"PluginUpgradeableSetup","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"implementation()":"5c60da1b","prepareInstallation(address,bytes)":"f10832f1","prepareUninstallation(address,(address,address[],bytes))":"9cb0a124","prepareUpdate(address,uint16,(address,address[],bytes))":"a8a9c29e","protocolVersion()":"2ae9c600","supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"fromBuild\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"thisBuild\",\"type\":\"uint16\"}],\"name\":\"InvalidUpdatePath\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_dao\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"prepareInstallation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"plugin\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address[]\",\"name\":\"helpers\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"enum PermissionLib.Operation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"condition\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PermissionLib.MultiTargetPermission[]\",\"name\":\"permissions\",\"type\":\"tuple[]\"}],\"internalType\":\"struct IPluginSetup.PreparedSetupData\",\"name\":\"preparedSetupData\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_dao\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"plugin\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"currentHelpers\",\"type\":\"address[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IPluginSetup.SetupPayload\",\"name\":\"_payload\",\"type\":\"tuple\"}],\"name\":\"prepareUninstallation\",\"outputs\":[{\"components\":[{\"internalType\":\"enum PermissionLib.Operation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"condition\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PermissionLib.MultiTargetPermission[]\",\"name\":\"permissions\",\"type\":\"tuple[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_dao\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"_fromBuild\",\"type\":\"uint16\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"plugin\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"currentHelpers\",\"type\":\"address[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IPluginSetup.SetupPayload\",\"name\":\"_payload\",\"type\":\"tuple\"}],\"name\":\"prepareUpdate\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"initData\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address[]\",\"name\":\"helpers\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"enum PermissionLib.Operation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"condition\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PermissionLib.MultiTargetPermission[]\",\"name\":\"permissions\",\"type\":\"tuple[]\"}],\"internalType\":\"struct IPluginSetup.PreparedSetupData\",\"name\":\"preparedSetupData\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"protocolVersion\",\"outputs\":[{\"internalType\":\"uint8[3]\",\"name\":\"\",\"type\":\"uint8[3]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Aragon X - 2022-2024\",\"custom:security-contact\":\"sirt@aragon.org\",\"errors\":{\"InvalidUpdatePath(uint16,uint16)\":[{\"params\":{\"fromBuild\":\"The build number to update from.\",\"thisBuild\":\"The build number of this setup to update to.\"}}]},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"params\":{\"_implementation\":\"The address of the plugin implementation contract.\"}},\"implementation()\":{\"details\":\"The implementation can be instantiated via the `new` keyword, cloned via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)), or proxied via the UUPS proxy pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\",\"returns\":{\"_0\":\"The address of the plugin implementation contract.\"}},\"prepareInstallation(address,bytes)\":{\"params\":{\"_dao\":\"The address of the installing DAO.\",\"_data\":\"The bytes-encoded data containing the input parameters for the installation as specified in the plugin's build metadata JSON file.\"},\"returns\":{\"plugin\":\"The address of the `Plugin` contract being prepared for installation.\",\"preparedSetupData\":\"The deployed plugin's relevant data which consists of helpers and permissions.\"}},\"prepareUninstallation(address,(address,address[],bytes))\":{\"params\":{\"_dao\":\"The address of the uninstalling DAO.\",\"_payload\":\"The relevant data necessary for the `prepareUninstallation`. See above.\"},\"returns\":{\"permissions\":\"The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the uninstalling DAO.\"}},\"prepareUpdate(address,uint16,(address,address[],bytes))\":{\"params\":{\"_dao\":\"The address of the updating DAO.\",\"_fromBuild\":\"The build number of the plugin to update from.\",\"_payload\":\"The relevant data necessary for the `prepareUpdate`. See above.\"},\"returns\":{\"initData\":\"The initialization data to be passed to upgradeable contracts when the update is applied in the `PluginSetupProcessor`.\",\"preparedSetupData\":\"The deployed plugin's relevant data which consists of helpers and permissions.\"}},\"protocolVersion()\":{\"details\":\"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\",\"returns\":{\"_0\":\"Returns the semantic Aragon OSx protocol version number.\"}},\"supportsInterface(bytes4)\":{\"params\":{\"_interfaceId\":\"The ID of the interface.\"},\"returns\":{\"_0\":\"Returns `true` if the interface is supported.\"}}},\"title\":\"PluginUpgradeableSetup\",\"version\":1},\"userdoc\":{\"errors\":{\"InvalidUpdatePath(uint16,uint16)\":[{\"notice\":\"Thrown when an update path is not available, for example, if this is the initial build.\"}]},\"kind\":\"user\",\"methods\":{\"constructor\":{\"notice\":\"The contract constructor, that setting the plugin implementation contract.\"},\"implementation()\":{\"notice\":\"Returns the plugin implementation address.\"},\"prepareInstallation(address,bytes)\":{\"notice\":\"Prepares the installation of a plugin.\"},\"prepareUninstallation(address,(address,address[],bytes))\":{\"notice\":\"Prepares the uninstallation of a plugin.\"},\"prepareUpdate(address,uint16,(address,address[],bytes))\":{\"notice\":\"Prepares the update of a plugin.\"},\"protocolVersion()\":{\"notice\":\"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Checks if this or the parent contract supports an interface by its ID.\"}},\"notice\":\"An abstract contract to inherit from to implement the plugin setup for upgradeable plugins, i.e, `PluginUUPSUpgradeable` being deployed via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822) and [ERC-1967](https://eips.ethereum.org/EIPS/eip-1967)).\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/plugin/setup/PluginUpgradeableSetup.sol\":\"PluginUpgradeableSetup\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165 is IERC165 {\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165).interfaceId;\\n }\\n}\\n\",\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"src/dao/IDAO.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IDAO\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for DAOs within the Aragon App DAO framework.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IDAO {\\n /// @notice The action struct to be consumed by the DAO's `execute` function resulting in an external call.\\n /// @param to The address to call.\\n /// @param value The native token value to be sent with the call.\\n /// @param data The bytes-encoded function selector and calldata for the call.\\n struct Action {\\n address to;\\n uint256 value;\\n bytes data;\\n }\\n\\n /// @notice Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\\n /// @param _where The address of the contract.\\n /// @param _who The address of a EOA or contract to give the permissions.\\n /// @param _permissionId The permission identifier.\\n /// @param _data The optional data passed to the `PermissionCondition` registered.\\n /// @return Returns true if the address has permission, false if not.\\n function hasPermission(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes memory _data\\n ) external view returns (bool);\\n\\n /// @notice Updates the DAO metadata (e.g., an IPFS hash).\\n /// @param _metadata The IPFS hash of the new metadata object.\\n function setMetadata(bytes calldata _metadata) external;\\n\\n /// @notice Emitted when the DAO metadata is updated.\\n /// @param metadata The IPFS hash of the new metadata object.\\n event MetadataSet(bytes metadata);\\n\\n /// @notice Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted.\\n /// @param _callId The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce.\\n /// @param _actions The array of actions.\\n /// @param _allowFailureMap A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @return The array of results obtained from the executed actions in `bytes`.\\n /// @return The resulting failure map containing the actions have actually failed.\\n function execute(\\n bytes32 _callId,\\n Action[] memory _actions,\\n uint256 _allowFailureMap\\n ) external returns (bytes[] memory, uint256);\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param actor The address of the caller.\\n /// @param callId The ID of the call.\\n /// @param actions The array of actions executed.\\n /// @param allowFailureMap The allow failure map encoding which actions are allowed to fail.\\n /// @param failureMap The failure map encoding which actions have failed.\\n /// @param execResults The array with the results of the executed actions.\\n /// @dev The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce.\\n event Executed(\\n address indexed actor,\\n bytes32 callId,\\n Action[] actions,\\n uint256 allowFailureMap,\\n uint256 failureMap,\\n bytes[] execResults\\n );\\n\\n /// @notice Emitted when a standard callback is registered.\\n /// @param interfaceId The ID of the interface.\\n /// @param callbackSelector The selector of the callback function.\\n /// @param magicNumber The magic number to be registered for the callback function selector.\\n event StandardCallbackRegistered(\\n bytes4 interfaceId,\\n bytes4 callbackSelector,\\n bytes4 magicNumber\\n );\\n\\n /// @notice Deposits (native) tokens to the DAO contract with a reference string.\\n /// @param _token The address of the token or address(0) in case of the native token.\\n /// @param _amount The amount of tokens to deposit.\\n /// @param _reference The reference describing the deposit reason.\\n function deposit(address _token, uint256 _amount, string calldata _reference) external payable;\\n\\n /// @notice Emitted when a token deposit has been made to the DAO.\\n /// @param sender The address of the sender.\\n /// @param token The address of the deposited token.\\n /// @param amount The amount of tokens deposited.\\n /// @param _reference The reference describing the deposit reason.\\n event Deposited(\\n address indexed sender,\\n address indexed token,\\n uint256 amount,\\n string _reference\\n );\\n\\n /// @notice Emitted when a native token deposit has been made to the DAO.\\n /// @dev This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).\\n /// @param sender The address of the sender.\\n /// @param amount The amount of native tokens deposited.\\n event NativeTokenDeposited(address sender, uint256 amount);\\n\\n /// @notice Setter for the trusted forwarder verifying the meta transaction.\\n /// @param _trustedForwarder The trusted forwarder address.\\n function setTrustedForwarder(address _trustedForwarder) external;\\n\\n /// @notice Getter for the trusted forwarder verifying the meta transaction.\\n /// @return The trusted forwarder address.\\n function getTrustedForwarder() external view returns (address);\\n\\n /// @notice Emitted when a new TrustedForwarder is set on the DAO.\\n /// @param forwarder the new forwarder address.\\n event TrustedForwarderSet(address forwarder);\\n\\n /// @notice Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\\n /// @param _hash The hash of the data to be signed.\\n /// @param _signature The signature byte array associated with `_hash`.\\n /// @return Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not.\\n function isValidSignature(bytes32 _hash, bytes memory _signature) external returns (bytes4);\\n\\n /// @notice Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\\n /// @param _interfaceId The ID of the interface.\\n /// @param _callbackSelector The selector of the callback function.\\n /// @param _magicNumber The magic number to be registered for the function signature.\\n function registerStandardCallback(\\n bytes4 _interfaceId,\\n bytes4 _callbackSelector,\\n bytes4 _magicNumber\\n ) external;\\n\\n /// @notice Removed function being left here to not corrupt the IDAO interface ID. Any call will revert.\\n /// @dev Introduced in v1.0.0. Removed in v1.4.0.\\n function setSignatureValidator(address) external;\\n}\\n\",\"keccak256\":\"0xb7f615523c26de042edce98731c658f44a1edb2464387ac1b642c4c69f57128e\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/PermissionLib.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title PermissionLib\\n/// @author Aragon X - 2021-2023\\n/// @notice A library containing objects for permission processing.\\n/// @custom:security-contact sirt@aragon.org\\nlibrary PermissionLib {\\n /// @notice A constant expressing that no condition is applied to a permission.\\n address public constant NO_CONDITION = address(0);\\n\\n /// @notice The types of permission operations available in the `PermissionManager`.\\n /// @param Grant The grant operation setting a permission without a condition.\\n /// @param Revoke The revoke operation removing a permission (that was granted with or without a condition).\\n /// @param GrantWithCondition The grant operation setting a permission with a condition.\\n enum Operation {\\n Grant,\\n Revoke,\\n GrantWithCondition\\n }\\n\\n /// @notice A struct containing the information for a permission to be applied on a single target contract without a condition.\\n /// @param operation The permission operation type.\\n /// @param who The address (EOA or contract) receiving the permission.\\n /// @param permissionId The permission identifier.\\n struct SingleTargetPermission {\\n Operation operation;\\n address who;\\n bytes32 permissionId;\\n }\\n\\n /// @notice A struct containing the information for a permission to be applied on multiple target contracts, optionally, with a condition.\\n /// @param operation The permission operation type.\\n /// @param where The address of the target contract for which `who` receives permission.\\n /// @param who The address (EOA or contract) receiving the permission.\\n /// @param condition The `PermissionCondition` that will be asked for authorization on calls connected to the specified permission identifier.\\n /// @param permissionId The permission identifier.\\n struct MultiTargetPermission {\\n Operation operation;\\n address where;\\n address who;\\n address condition;\\n bytes32 permissionId;\\n }\\n}\\n\",\"keccak256\":\"0x470faf3c4891ebc6420ef6cc09f6098917568ccc79268c90954d1478199b6097\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/setup/IPluginSetup.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {PermissionLib} from \\\"../../permission/PermissionLib.sol\\\";\\n\\n// solhint-disable-next-line no-unused-import\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @title IPluginSetup\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for a plugin setup contract to be consumed by the `PluginSetupProcessor` for plugin installations, updates, and uninstallations.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IPluginSetup {\\n /// @notice The data associated with a prepared setup.\\n /// @param helpers The address array of helpers (contracts or EOAs) associated with this plugin version after the installation or update.\\n /// @param permissions The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the installing or updating DAO.\\n struct PreparedSetupData {\\n address[] helpers;\\n PermissionLib.MultiTargetPermission[] permissions;\\n }\\n\\n /// @notice The payload for plugin updates and uninstallations containing the existing contracts as well as optional data to be consumed by the plugin setup.\\n /// @param plugin The address of the `Plugin`.\\n /// @param currentHelpers The address array of all current helpers (contracts or EOAs) associated with the plugin to update from.\\n /// @param data The bytes-encoded data containing the input parameters for the preparation of update/uninstall as specified in the corresponding ABI on the version's metadata.\\n struct SetupPayload {\\n address plugin;\\n address[] currentHelpers;\\n bytes data;\\n }\\n\\n /// @notice Prepares the installation of a plugin.\\n /// @param _dao The address of the installing DAO.\\n /// @param _data The bytes-encoded data containing the input parameters for the installation as specified in the plugin's build metadata JSON file.\\n /// @return plugin The address of the `Plugin` contract being prepared for installation.\\n /// @return preparedSetupData The deployed plugin's relevant data which consists of helpers and permissions.\\n function prepareInstallation(\\n address _dao,\\n bytes calldata _data\\n ) external returns (address plugin, PreparedSetupData memory preparedSetupData);\\n\\n /// @notice Prepares the update of a plugin.\\n /// @param _dao The address of the updating DAO.\\n /// @param _fromBuild The build number of the plugin to update from.\\n /// @param _payload The relevant data necessary for the `prepareUpdate`. See above.\\n /// @return initData The initialization data to be passed to upgradeable contracts when the update is applied in the `PluginSetupProcessor`.\\n /// @return preparedSetupData The deployed plugin's relevant data which consists of helpers and permissions.\\n function prepareUpdate(\\n address _dao,\\n uint16 _fromBuild,\\n SetupPayload calldata _payload\\n ) external returns (bytes memory initData, PreparedSetupData memory preparedSetupData);\\n\\n /// @notice Prepares the uninstallation of a plugin.\\n /// @param _dao The address of the uninstalling DAO.\\n /// @param _payload The relevant data necessary for the `prepareUninstallation`. See above.\\n /// @return permissions The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the uninstalling DAO.\\n function prepareUninstallation(\\n address _dao,\\n SetupPayload calldata _payload\\n ) external returns (PermissionLib.MultiTargetPermission[] memory permissions);\\n\\n /// @notice Returns the plugin implementation address.\\n /// @return The address of the plugin implementation contract.\\n /// @dev The implementation can be instantiated via the `new` keyword, cloned via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)), or proxied via the UUPS proxy pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0x21c99995208039ac6ace219b6f273243811dc2aa66399e8e499e43ec30b82fa9\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/setup/PluginUpgradeableSetup.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ERC165} from \\\"@openzeppelin/contracts/utils/introspection/ERC165.sol\\\";\\n\\nimport {IProtocolVersion} from \\\"../../utils/versioning/IProtocolVersion.sol\\\";\\nimport {ProtocolVersion} from \\\"../../utils/versioning/ProtocolVersion.sol\\\";\\nimport {IPluginSetup} from \\\"./IPluginSetup.sol\\\";\\n\\n/// @title PluginUpgradeableSetup\\n/// @author Aragon X - 2022-2024\\n/// @notice An abstract contract to inherit from to implement the plugin setup for upgradeable plugins, i.e, `PluginUUPSUpgradeable` being deployed via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822) and [ERC-1967](https://eips.ethereum.org/EIPS/eip-1967)).\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract PluginUpgradeableSetup is ERC165, IPluginSetup, ProtocolVersion {\\n /// @notice The address of the plugin implementation contract for initial block explorer verification\\n /// and to create [ERC-1967](https://eips.ethereum.org/EIPS/eip-1967) UUPS proxies from.\\n address internal immutable IMPLEMENTATION;\\n\\n /// @notice Thrown when an update path is not available, for example, if this is the initial build.\\n /// @param fromBuild The build number to update from.\\n /// @param thisBuild The build number of this setup to update to.\\n error InvalidUpdatePath(uint16 fromBuild, uint16 thisBuild);\\n\\n /// @notice The contract constructor, that setting the plugin implementation contract.\\n /// @param _implementation The address of the plugin implementation contract.\\n constructor(address _implementation) {\\n IMPLEMENTATION = _implementation;\\n }\\n\\n /// @notice Checks if this or the parent contract supports an interface by its ID.\\n /// @param _interfaceId The ID of the interface.\\n /// @return Returns `true` if the interface is supported.\\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\\n return\\n _interfaceId == type(IPluginSetup).interfaceId ||\\n _interfaceId == type(IProtocolVersion).interfaceId ||\\n super.supportsInterface(_interfaceId);\\n }\\n\\n /// @inheritdoc IPluginSetup\\n function implementation() public view returns (address) {\\n return IMPLEMENTATION;\\n }\\n}\\n\",\"keccak256\":\"0x2842d919d1ecb4fbeb40953128c3da3b36dcf6e91255089e987c2f11ff8d061e\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/IProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IProtocolVersion\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the semantic Aragon OSx protocol version number.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IProtocolVersion {\\n /// @notice Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\\n /// @return _version Returns the semantic Aragon OSx protocol version number.\\n /// @dev This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\\n function protocolVersion() external view returns (uint8[3] memory _version);\\n}\\n\",\"keccak256\":\"0x00a4da654d21dc1bdadbdc8bd54bb86c378c56f85e461ccc31303628ea621361\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/ProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IProtocolVersion} from \\\"./IProtocolVersion.sol\\\";\\n\\n/// @title ProtocolVersion\\n/// @author Aragon X - 2023\\n/// @notice An abstract, stateless, non-upgradeable contract providing the current Aragon OSx protocol version number.\\n/// @dev Do not add any new variables to this contract that would shift down storage in the inheritance chain.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract ProtocolVersion is IProtocolVersion {\\n // IMPORTANT: Do not add any storage variable, see the above notice.\\n\\n /// @inheritdoc IProtocolVersion\\n function protocolVersion() public pure returns (uint8[3] memory) {\\n return [1, 4, 0];\\n }\\n}\\n\",\"keccak256\":\"0x3975c937be935f687c6b6b8f379071232681e98cf04b175d72781b819ea52bdb\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"errors":{"InvalidUpdatePath(uint16,uint16)":[{"notice":"Thrown when an update path is not available, for example, if this is the initial build."}]},"kind":"user","methods":{"constructor":{"notice":"The contract constructor, that setting the plugin implementation contract."},"implementation()":{"notice":"Returns the plugin implementation address."},"prepareInstallation(address,bytes)":{"notice":"Prepares the installation of a plugin."},"prepareUninstallation(address,(address,address[],bytes))":{"notice":"Prepares the uninstallation of a plugin."},"prepareUpdate(address,uint16,(address,address[],bytes))":{"notice":"Prepares the update of a plugin."},"protocolVersion()":{"notice":"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with."},"supportsInterface(bytes4)":{"notice":"Checks if this or the parent contract supports an interface by its ID."}},"notice":"An abstract contract to inherit from to implement the plugin setup for upgradeable plugins, i.e, `PluginUUPSUpgradeable` being deployed via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822) and [ERC-1967](https://eips.ethereum.org/EIPS/eip-1967)).","version":1}}},"src/utils/deployment/ProxyLib.sol":{"ProxyLib":{"abi":[],"devdoc":{"author":"Aragon X - 2024","custom:security-contact":"sirt@aragon.org","kind":"dev","methods":{},"title":"ProxyLib","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"602d6037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a","opcodes":"PUSH1 0x2D PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"618:1913:47:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;618:1913:47;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"618:1913:47:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"9000","executionCost":"94","totalCost":"9094"},"internal":{"deployMinimalProxy(address,bytes memory)":"infinite","deployUUPSProxy(address,bytes memory)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"author\":\"Aragon X - 2024\",\"custom:security-contact\":\"sirt@aragon.org\",\"kind\":\"dev\",\"methods\":{},\"title\":\"ProxyLib\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"A library containing methods for the deployment of proxies via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)) and minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)).\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/utils/deployment/ProxyLib.sol\":\"ProxyLib\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/IERC1967.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (interfaces/IERC1967.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\\n *\\n * _Available since v4.8.3._\\n */\\ninterface IERC1967 {\\n /**\\n * @dev Emitted when the implementation is upgraded.\\n */\\n event Upgraded(address indexed implementation);\\n\\n /**\\n * @dev Emitted when the admin account has changed.\\n */\\n event AdminChanged(address previousAdmin, address newAdmin);\\n\\n /**\\n * @dev Emitted when the beacon is changed.\\n */\\n event BeaconUpgraded(address indexed beacon);\\n}\\n\",\"keccak256\":\"0x3cbef5ebc24b415252e2f8c0c9254555d30d9f085603b4b80d9b5ed20ab87e90\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822Proxiable {\\n /**\\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n * address.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy.\\n */\\n function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/Clones.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/Clones.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev https://eips.ethereum.org/EIPS/eip-1167[EIP 1167] is a standard for\\n * deploying minimal proxy contracts, also known as \\\"clones\\\".\\n *\\n * > To simply and cheaply clone contract functionality in an immutable way, this standard specifies\\n * > a minimal bytecode implementation that delegates all calls to a known, fixed address.\\n *\\n * The library includes functions to deploy a proxy using either `create` (traditional deployment) or `create2`\\n * (salted deterministic deployment). It also includes functions to predict the addresses of clones deployed using the\\n * deterministic method.\\n *\\n * _Available since v3.4._\\n */\\nlibrary Clones {\\n /**\\n * @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`.\\n *\\n * This function uses the create opcode, which should never revert.\\n */\\n function clone(address implementation) internal returns (address instance) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n // Cleans the upper 96 bits of the `implementation` word, then packs the first 3 bytes\\n // of the `implementation` address with the bytecode before the address.\\n mstore(0x00, or(shr(0xe8, shl(0x60, implementation)), 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000))\\n // Packs the remaining 17 bytes of `implementation` with the bytecode after the address.\\n mstore(0x20, or(shl(0x78, implementation), 0x5af43d82803e903d91602b57fd5bf3))\\n instance := create(0, 0x09, 0x37)\\n }\\n require(instance != address(0), \\\"ERC1167: create failed\\\");\\n }\\n\\n /**\\n * @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`.\\n *\\n * This function uses the create2 opcode and a `salt` to deterministically deploy\\n * the clone. Using the same `implementation` and `salt` multiple time will revert, since\\n * the clones cannot be deployed twice at the same address.\\n */\\n function cloneDeterministic(address implementation, bytes32 salt) internal returns (address instance) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n // Cleans the upper 96 bits of the `implementation` word, then packs the first 3 bytes\\n // of the `implementation` address with the bytecode before the address.\\n mstore(0x00, or(shr(0xe8, shl(0x60, implementation)), 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000))\\n // Packs the remaining 17 bytes of `implementation` with the bytecode after the address.\\n mstore(0x20, or(shl(0x78, implementation), 0x5af43d82803e903d91602b57fd5bf3))\\n instance := create2(0, 0x09, 0x37, salt)\\n }\\n require(instance != address(0), \\\"ERC1167: create2 failed\\\");\\n }\\n\\n /**\\n * @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}.\\n */\\n function predictDeterministicAddress(\\n address implementation,\\n bytes32 salt,\\n address deployer\\n ) internal pure returns (address predicted) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n let ptr := mload(0x40)\\n mstore(add(ptr, 0x38), deployer)\\n mstore(add(ptr, 0x24), 0x5af43d82803e903d91602b57fd5bf3ff)\\n mstore(add(ptr, 0x14), implementation)\\n mstore(ptr, 0x3d602d80600a3d3981f3363d3d373d3d3d363d73)\\n mstore(add(ptr, 0x58), salt)\\n mstore(add(ptr, 0x78), keccak256(add(ptr, 0x0c), 0x37))\\n predicted := keccak256(add(ptr, 0x43), 0x55)\\n }\\n }\\n\\n /**\\n * @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}.\\n */\\n function predictDeterministicAddress(\\n address implementation,\\n bytes32 salt\\n ) internal view returns (address predicted) {\\n return predictDeterministicAddress(implementation, salt, address(this));\\n }\\n}\\n\",\"keccak256\":\"0x01f055f5c26ba25d7f83e9aa9ba877fbea4d0bf22227de046ea67494bc932999\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (proxy/ERC1967/ERC1967Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../Proxy.sol\\\";\\nimport \\\"./ERC1967Upgrade.sol\\\";\\n\\n/**\\n * @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an\\n * implementation address that can be changed. This address is stored in storage in the location specified by\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the\\n * implementation behind the proxy.\\n */\\ncontract ERC1967Proxy is Proxy, ERC1967Upgrade {\\n /**\\n * @dev Initializes the upgradeable proxy with an initial implementation specified by `_logic`.\\n *\\n * If `_data` is nonempty, it's used as data in a delegate call to `_logic`. This will typically be an encoded\\n * function call, and allows initializing the storage of the proxy like a Solidity constructor.\\n */\\n constructor(address _logic, bytes memory _data) payable {\\n _upgradeToAndCall(_logic, _data, false);\\n }\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _implementation() internal view virtual override returns (address impl) {\\n return ERC1967Upgrade._getImplementation();\\n }\\n}\\n\",\"keccak256\":\"0xa2b22da3032e50b55f95ec1d13336102d675f341167aa76db571ef7f8bb7975d\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../beacon/IBeacon.sol\\\";\\nimport \\\"../../interfaces/IERC1967.sol\\\";\\nimport \\\"../../interfaces/draft-IERC1822.sol\\\";\\nimport \\\"../../utils/Address.sol\\\";\\nimport \\\"../../utils/StorageSlot.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n */\\nabstract contract ERC1967Upgrade is IERC1967 {\\n // This is the keccak-256 hash of \\\"eip1967.proxy.rollback\\\" subtracted by 1\\n bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n /**\\n * @dev Storage slot with the address of the current implementation.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _getImplementation() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 implementation slot.\\n */\\n function _setImplementation(address newImplementation) private {\\n require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n }\\n\\n /**\\n * @dev Perform implementation upgrade\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeTo(address newImplementation) internal {\\n _setImplementation(newImplementation);\\n emit Upgraded(newImplementation);\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCall(address newImplementation, bytes memory data, bool forceCall) internal {\\n _upgradeTo(newImplementation);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(newImplementation, data);\\n }\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCallUUPS(address newImplementation, bytes memory data, bool forceCall) internal {\\n // Upgrades from old implementations will perform a rollback test. This test requires the new\\n // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n // this special case will break upgrade paths from old UUPS implementation to new ones.\\n if (StorageSlot.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n _setImplementation(newImplementation);\\n } else {\\n try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n require(slot == _IMPLEMENTATION_SLOT, \\\"ERC1967Upgrade: unsupported proxiableUUID\\\");\\n } catch {\\n revert(\\\"ERC1967Upgrade: new implementation is not UUPS\\\");\\n }\\n _upgradeToAndCall(newImplementation, data, forceCall);\\n }\\n }\\n\\n /**\\n * @dev Storage slot with the admin of the contract.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _getAdmin() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_ADMIN_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 admin slot.\\n */\\n function _setAdmin(address newAdmin) private {\\n require(newAdmin != address(0), \\\"ERC1967: new admin is the zero address\\\");\\n StorageSlot.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n */\\n function _changeAdmin(address newAdmin) internal {\\n emit AdminChanged(_getAdmin(), newAdmin);\\n _setAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\\n */\\n bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n /**\\n * @dev Returns the current beacon.\\n */\\n function _getBeacon() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_BEACON_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new beacon in the EIP1967 beacon slot.\\n */\\n function _setBeacon(address newBeacon) private {\\n require(Address.isContract(newBeacon), \\\"ERC1967: new beacon is not a contract\\\");\\n require(\\n Address.isContract(IBeacon(newBeacon).implementation()),\\n \\\"ERC1967: beacon implementation is not a contract\\\"\\n );\\n StorageSlot.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n }\\n\\n /**\\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n *\\n * Emits a {BeaconUpgraded} event.\\n */\\n function _upgradeBeaconToAndCall(address newBeacon, bytes memory data, bool forceCall) internal {\\n _setBeacon(newBeacon);\\n emit BeaconUpgraded(newBeacon);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x3b21ae06bf5957f73fa16754b0669c77b7abd8ba6c072d35c3281d446fdb86c2\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (proxy/Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\\n * be specified by overriding the virtual {_implementation} function.\\n *\\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\\n * different contract through the {_delegate} function.\\n *\\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\\n */\\nabstract contract Proxy {\\n /**\\n * @dev Delegates the current call to `implementation`.\\n *\\n * This function does not return to its internal call site, it will return directly to the external caller.\\n */\\n function _delegate(address implementation) internal virtual {\\n assembly {\\n // Copy msg.data. We take full control of memory in this inline assembly\\n // block because it will not return to Solidity code. We overwrite the\\n // Solidity scratch pad at memory position 0.\\n calldatacopy(0, 0, calldatasize())\\n\\n // Call the implementation.\\n // out and outsize are 0 because we don't know the size yet.\\n let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)\\n\\n // Copy the returned data.\\n returndatacopy(0, 0, returndatasize())\\n\\n switch result\\n // delegatecall returns 0 on error.\\n case 0 {\\n revert(0, returndatasize())\\n }\\n default {\\n return(0, returndatasize())\\n }\\n }\\n }\\n\\n /**\\n * @dev This is a virtual function that should be overridden so it returns the address to which the fallback function\\n * and {_fallback} should delegate.\\n */\\n function _implementation() internal view virtual returns (address);\\n\\n /**\\n * @dev Delegates the current call to the address returned by `_implementation()`.\\n *\\n * This function does not return to its internal call site, it will return directly to the external caller.\\n */\\n function _fallback() internal virtual {\\n _beforeFallback();\\n _delegate(_implementation());\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\\n * function in the contract matches the call data.\\n */\\n fallback() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data\\n * is empty.\\n */\\n receive() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`\\n * call, or as part of the Solidity `fallback` or `receive` functions.\\n *\\n * If overridden should call `super._beforeFallback()`.\\n */\\n function _beforeFallback() internal virtual {}\\n}\\n\",\"keccak256\":\"0xc130fe33f1b2132158531a87734153293f6d07bc263ff4ac90e85da9c82c0e27\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeacon {\\n /**\\n * @dev Must return an address that can be used as a delegate call target.\\n *\\n * {BeaconProxy} will check that this address is a contract.\\n */\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/StorageSlot.sol)\\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```solidity\\n * contract ERC1967 {\\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n * function _getImplementation() internal view returns (address) {\\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n * }\\n *\\n * function _setImplementation(address newImplementation) internal {\\n * require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n * }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._\\n * _Available since v4.9 for `string`, `bytes`._\\n */\\nlibrary StorageSlot {\\n struct AddressSlot {\\n address value;\\n }\\n\\n struct BooleanSlot {\\n bool value;\\n }\\n\\n struct Bytes32Slot {\\n bytes32 value;\\n }\\n\\n struct Uint256Slot {\\n uint256 value;\\n }\\n\\n struct StringSlot {\\n string value;\\n }\\n\\n struct BytesSlot {\\n bytes value;\\n }\\n\\n /**\\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n */\\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n */\\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n */\\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n */\\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` with member `value` located at `slot`.\\n */\\n function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\\n */\\n function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` with member `value` located at `slot`.\\n */\\n function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\\n */\\n function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n}\\n\",\"keccak256\":\"0xf09e68aa0dc6722a25bc46490e8d48ed864466d17313b8a0b254c36b54e49899\",\"license\":\"MIT\"},\"src/utils/deployment/ProxyLib.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ERC1967Proxy} from \\\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol\\\";\\nimport {Clones} from \\\"@openzeppelin/contracts/proxy/Clones.sol\\\";\\nimport {Address} from \\\"@openzeppelin/contracts/utils/Address.sol\\\";\\n\\n/// @title ProxyLib\\n/// @author Aragon X - 2024\\n/// @notice A library containing methods for the deployment of proxies via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)) and minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)).\\n/// @custom:security-contact sirt@aragon.org\\nlibrary ProxyLib {\\n using Address for address;\\n using Clones for address;\\n\\n /// @notice Creates an [ERC-1967](https://eips.ethereum.org/EIPS/eip-1967) UUPS proxy contract pointing to a logic contract and allows to immediately initialize it.\\n /// @param _logic The logic contract the proxy is pointing to.\\n /// @param _initCalldata The initialization data for this contract.\\n /// @return uupsProxy The address of the UUPS proxy contract created.\\n /// @dev If `_initCalldata` is non-empty, it is used in a delegate call to the `_logic` contract. This will typically be an encoded function call initializing the storage of the proxy (see [OpenZeppelin ERC1967Proxy-constructor](https://docs.openzeppelin.com/contracts/4.x/api/proxy#ERC1967Proxy-constructor-address-bytes-)).\\n function deployUUPSProxy(\\n address _logic,\\n bytes memory _initCalldata\\n ) internal returns (address uupsProxy) {\\n uupsProxy = address(new ERC1967Proxy({_logic: _logic, _data: _initCalldata}));\\n }\\n\\n /// @notice Creates an [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167) minimal proxy contract, also known as clones, pointing to a logic contract and allows to immediately initialize it.\\n /// @param _logic The logic contract the proxy is pointing to.\\n /// @param _initCalldata The initialization data for this contract.\\n /// @return minimalProxy The address of the minimal proxy contract created.\\n /// @dev If `_initCalldata` is non-empty, it is used in a call to the clone contract. This will typically be an encoded function call initializing the storage of the contract.\\n function deployMinimalProxy(\\n address _logic,\\n bytes memory _initCalldata\\n ) internal returns (address minimalProxy) {\\n minimalProxy = _logic.clone();\\n if (_initCalldata.length > 0) {\\n minimalProxy.functionCall({data: _initCalldata});\\n }\\n }\\n}\\n\",\"keccak256\":\"0xef0d1790dfa026381c021daa2ec7267357497f58cd4a2fa5c64e72e0dea95acc\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"notice":"A library containing methods for the deployment of proxies via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)) and minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)).","version":1}}},"src/utils/versioning/IProtocolVersion.sol":{"IProtocolVersion":{"abi":[{"inputs":[],"name":"protocolVersion","outputs":[{"internalType":"uint8[3]","name":"_version","type":"uint8[3]"}],"stateMutability":"view","type":"function"}],"devdoc":{"author":"Aragon X - 2022-2023","custom:security-contact":"sirt@aragon.org","kind":"dev","methods":{"protocolVersion()":{"details":"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.","returns":{"_version":"Returns the semantic Aragon OSx protocol version number."}}},"title":"IProtocolVersion","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"protocolVersion()":"2ae9c600"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"protocolVersion\",\"outputs\":[{\"internalType\":\"uint8[3]\",\"name\":\"_version\",\"type\":\"uint8[3]\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Aragon X - 2022-2023\",\"custom:security-contact\":\"sirt@aragon.org\",\"kind\":\"dev\",\"methods\":{\"protocolVersion()\":{\"details\":\"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\",\"returns\":{\"_version\":\"Returns the semantic Aragon OSx protocol version number.\"}}},\"title\":\"IProtocolVersion\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"protocolVersion()\":{\"notice\":\"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\"}},\"notice\":\"An interface defining the semantic Aragon OSx protocol version number.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/utils/versioning/IProtocolVersion.sol\":\"IProtocolVersion\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"src/utils/versioning/IProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IProtocolVersion\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the semantic Aragon OSx protocol version number.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IProtocolVersion {\\n /// @notice Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\\n /// @return _version Returns the semantic Aragon OSx protocol version number.\\n /// @dev This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\\n function protocolVersion() external view returns (uint8[3] memory _version);\\n}\\n\",\"keccak256\":\"0x00a4da654d21dc1bdadbdc8bd54bb86c378c56f85e461ccc31303628ea621361\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{"protocolVersion()":{"notice":"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with."}},"notice":"An interface defining the semantic Aragon OSx protocol version number.","version":1}}},"src/utils/versioning/ProtocolVersion.sol":{"ProtocolVersion":{"abi":[{"inputs":[],"name":"protocolVersion","outputs":[{"internalType":"uint8[3]","name":"","type":"uint8[3]"}],"stateMutability":"pure","type":"function"}],"devdoc":{"author":"Aragon X - 2023","custom:security-contact":"sirt@aragon.org","details":"Do not add any new variables to this contract that would shift down storage in the inheritance chain.","kind":"dev","methods":{"protocolVersion()":{"details":"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.","returns":{"_0":"Returns the semantic Aragon OSx protocol version number."}}},"title":"ProtocolVersion","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"protocolVersion()":"2ae9c600"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"protocolVersion\",\"outputs\":[{\"internalType\":\"uint8[3]\",\"name\":\"\",\"type\":\"uint8[3]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Aragon X - 2023\",\"custom:security-contact\":\"sirt@aragon.org\",\"details\":\"Do not add any new variables to this contract that would shift down storage in the inheritance chain.\",\"kind\":\"dev\",\"methods\":{\"protocolVersion()\":{\"details\":\"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\",\"returns\":{\"_0\":\"Returns the semantic Aragon OSx protocol version number.\"}}},\"title\":\"ProtocolVersion\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"protocolVersion()\":{\"notice\":\"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\"}},\"notice\":\"An abstract, stateless, non-upgradeable contract providing the current Aragon OSx protocol version number.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/utils/versioning/ProtocolVersion.sol\":\"ProtocolVersion\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"src/utils/versioning/IProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IProtocolVersion\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the semantic Aragon OSx protocol version number.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IProtocolVersion {\\n /// @notice Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\\n /// @return _version Returns the semantic Aragon OSx protocol version number.\\n /// @dev This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\\n function protocolVersion() external view returns (uint8[3] memory _version);\\n}\\n\",\"keccak256\":\"0x00a4da654d21dc1bdadbdc8bd54bb86c378c56f85e461ccc31303628ea621361\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/ProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IProtocolVersion} from \\\"./IProtocolVersion.sol\\\";\\n\\n/// @title ProtocolVersion\\n/// @author Aragon X - 2023\\n/// @notice An abstract, stateless, non-upgradeable contract providing the current Aragon OSx protocol version number.\\n/// @dev Do not add any new variables to this contract that would shift down storage in the inheritance chain.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract ProtocolVersion is IProtocolVersion {\\n // IMPORTANT: Do not add any storage variable, see the above notice.\\n\\n /// @inheritdoc IProtocolVersion\\n function protocolVersion() public pure returns (uint8[3] memory) {\\n return [1, 4, 0];\\n }\\n}\\n\",\"keccak256\":\"0x3975c937be935f687c6b6b8f379071232681e98cf04b175d72781b819ea52bdb\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{"protocolVersion()":{"notice":"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with."}},"notice":"An abstract, stateless, non-upgradeable contract providing the current Aragon OSx protocol version number.","version":1}}}}}} \ No newline at end of file diff --git a/contracts/artifacts/src/dao/IDAO.sol/IDAO.dbg.json b/contracts/artifacts/src/dao/IDAO.sol/IDAO.dbg.json new file mode 100644 index 00000000..25fef0c2 --- /dev/null +++ b/contracts/artifacts/src/dao/IDAO.sol/IDAO.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" +} diff --git a/contracts/artifacts/src/dao/IDAO.sol/IDAO.json b/contracts/artifacts/src/dao/IDAO.sol/IDAO.json new file mode 100644 index 00000000..cd45e273 --- /dev/null +++ b/contracts/artifacts/src/dao/IDAO.sol/IDAO.json @@ -0,0 +1,379 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IDAO", + "sourceName": "src/dao/IDAO.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "string", + "name": "_reference", + "type": "string" + } + ], + "name": "Deposited", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "actor", + "type": "address" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "callId", + "type": "bytes32" + }, + { + "components": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "indexed": false, + "internalType": "struct IDAO.Action[]", + "name": "actions", + "type": "tuple[]" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "allowFailureMap", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "failureMap", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "bytes[]", + "name": "execResults", + "type": "bytes[]" + } + ], + "name": "Executed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes", + "name": "metadata", + "type": "bytes" + } + ], + "name": "MetadataSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "NativeTokenDeposited", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + }, + { + "indexed": false, + "internalType": "bytes4", + "name": "callbackSelector", + "type": "bytes4" + }, + { + "indexed": false, + "internalType": "bytes4", + "name": "magicNumber", + "type": "bytes4" + } + ], + "name": "StandardCallbackRegistered", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "forwarder", + "type": "address" + } + ], + "name": "TrustedForwarderSet", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + }, + { + "internalType": "string", + "name": "_reference", + "type": "string" + } + ], + "name": "deposit", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "_callId", + "type": "bytes32" + }, + { + "components": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "internalType": "struct IDAO.Action[]", + "name": "_actions", + "type": "tuple[]" + }, + { + "internalType": "uint256", + "name": "_allowFailureMap", + "type": "uint256" + } + ], + "name": "execute", + "outputs": [ + { + "internalType": "bytes[]", + "name": "", + "type": "bytes[]" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "getTrustedForwarder", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_where", + "type": "address" + }, + { + "internalType": "address", + "name": "_who", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "_permissionId", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "_data", + "type": "bytes" + } + ], + "name": "hasPermission", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "_hash", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "_signature", + "type": "bytes" + } + ], + "name": "isValidSignature", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "_interfaceId", + "type": "bytes4" + }, + { + "internalType": "bytes4", + "name": "_callbackSelector", + "type": "bytes4" + }, + { + "internalType": "bytes4", + "name": "_magicNumber", + "type": "bytes4" + } + ], + "name": "registerStandardCallback", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "_metadata", + "type": "bytes" + } + ], + "name": "setMetadata", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "setSignatureValidator", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_trustedForwarder", + "type": "address" + } + ], + "name": "setTrustedForwarder", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/src/mocks/dao/DAOMock.sol/DAOMock.dbg.json b/contracts/artifacts/src/mocks/dao/DAOMock.sol/DAOMock.dbg.json new file mode 100644 index 00000000..4058cb44 --- /dev/null +++ b/contracts/artifacts/src/mocks/dao/DAOMock.sol/DAOMock.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" +} diff --git a/contracts/artifacts/src/mocks/dao/DAOMock.sol/DAOMock.json b/contracts/artifacts/src/mocks/dao/DAOMock.sol/DAOMock.json new file mode 100644 index 00000000..a9a57a5d --- /dev/null +++ b/contracts/artifacts/src/mocks/dao/DAOMock.sol/DAOMock.json @@ -0,0 +1,405 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "DAOMock", + "sourceName": "src/mocks/dao/DAOMock.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "string", + "name": "_reference", + "type": "string" + } + ], + "name": "Deposited", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "actor", + "type": "address" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "callId", + "type": "bytes32" + }, + { + "components": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "indexed": false, + "internalType": "struct IDAO.Action[]", + "name": "actions", + "type": "tuple[]" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "allowFailureMap", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "failureMap", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "bytes[]", + "name": "execResults", + "type": "bytes[]" + } + ], + "name": "Executed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes", + "name": "metadata", + "type": "bytes" + } + ], + "name": "MetadataSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "NativeTokenDeposited", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + }, + { + "indexed": false, + "internalType": "bytes4", + "name": "callbackSelector", + "type": "bytes4" + }, + { + "indexed": false, + "internalType": "bytes4", + "name": "magicNumber", + "type": "bytes4" + } + ], + "name": "StandardCallbackRegistered", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "forwarder", + "type": "address" + } + ], + "name": "TrustedForwarderSet", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + }, + { + "internalType": "string", + "name": "_reference", + "type": "string" + } + ], + "name": "deposit", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "callId", + "type": "bytes32" + }, + { + "components": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "internalType": "struct IDAO.Action[]", + "name": "_actions", + "type": "tuple[]" + }, + { + "internalType": "uint256", + "name": "allowFailureMap", + "type": "uint256" + } + ], + "name": "execute", + "outputs": [ + { + "internalType": "bytes[]", + "name": "execResults", + "type": "bytes[]" + }, + { + "internalType": "uint256", + "name": "failureMap", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "getTrustedForwarder", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_where", + "type": "address" + }, + { + "internalType": "address", + "name": "_who", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "_permissionId", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "_data", + "type": "bytes" + } + ], + "name": "hasPermission", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "hasPermissionReturnValueMock", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "_hash", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "_signature", + "type": "bytes" + } + ], + "name": "isValidSignature", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "_interfaceId", + "type": "bytes4" + }, + { + "internalType": "bytes4", + "name": "_callbackSelector", + "type": "bytes4" + }, + { + "internalType": "bytes4", + "name": "_magicNumber", + "type": "bytes4" + } + ], + "name": "registerStandardCallback", + "outputs": [], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "_hasPermissionReturnValueMock", + "type": "bool" + } + ], + "name": "setHasPermissionReturnValueMock", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "_metadata", + "type": "bytes" + } + ], + "name": "setMetadata", + "outputs": [], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_signatureValidator", + "type": "address" + } + ], + "name": "setSignatureValidator", + "outputs": [], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_trustedForwarder", + "type": "address" + } + ], + "name": "setTrustedForwarder", + "outputs": [], + "stateMutability": "pure", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b506108bc806100206000396000f3fe6080604052600436106100bc5760003560e01c8063c4a5014511610074578063da7422281161004e578063da74222814610144578063ee57e36f14610210578063fdef91061461022f57600080fd5b8063c4a50145146101a6578063c71bf324146101c6578063ce1b815f146101f457600080fd5b80633e2ab0d9116100a55780633e2ab0d91461014457806380e4cbe114610164578063bfe07da61461019257600080fd5b80630a1f41ca146100c15780631626ba7e146100f0575b600080fd5b3480156100cd57600080fd5b506000546100db9060ff1681565b60405190151581526020015b60405180910390f35b3480156100fc57600080fd5b5061011361010b36600461039a565b600092915050565b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020016100e7565b34801561015057600080fd5b5061016261015f36600461040a565b50565b005b34801561017057600080fd5b5061016261017f36600461042c565b6000805460ff1916911515919091179055565b6101626101a0366004610497565b50505050565b3480156101b257600080fd5b506101626101c1366004610521565b505050565b3480156101d257600080fd5b506101e66101e1366004610564565b610258565b6040516100e7929190610722565b34801561020057600080fd5b50604051600081526020016100e7565b34801561021c57600080fd5b5061016261022b366004610744565b5050565b34801561023b57600080fd5b506100db61024a366004610786565b60005460ff16949350505050565b606060003373ffffffffffffffffffffffffffffffffffffffff167fd4e57c2049f004fb297ef78591cd409503ceb6b2c722d7ffed032fc99e5f3b5886868685876040516102aa9594939291906107ee565b60405180910390a2935093915050565b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff811182821017156102f3576102f36102ba565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715610322576103226102ba565b604052919050565b600082601f83011261033b57600080fd5b813567ffffffffffffffff811115610355576103556102ba565b610368601f8201601f19166020016102f9565b81815284602083860101111561037d57600080fd5b816020850160208301376000918101602001919091529392505050565b600080604083850312156103ad57600080fd5b82359150602083013567ffffffffffffffff8111156103cb57600080fd5b6103d78582860161032a565b9150509250929050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461040557600080fd5b919050565b60006020828403121561041c57600080fd5b610425826103e1565b9392505050565b60006020828403121561043e57600080fd5b8135801515811461042557600080fd5b60008083601f84011261046057600080fd5b50813567ffffffffffffffff81111561047857600080fd5b60208301915083602082850101111561049057600080fd5b9250929050565b600080600080606085870312156104ad57600080fd5b6104b6856103e1565b935060208501359250604085013567ffffffffffffffff8111156104d957600080fd5b6104e58782880161044e565b95989497509550505050565b80357fffffffff000000000000000000000000000000000000000000000000000000008116811461040557600080fd5b60008060006060848603121561053657600080fd5b61053f846104f1565b925061054d602085016104f1565b915061055b604085016104f1565b90509250925092565b60008060006060848603121561057957600080fd5b8335925060208085013567ffffffffffffffff8082111561059957600080fd5b818701915087601f8301126105ad57600080fd5b8135818111156105bf576105bf6102ba565b8060051b6105ce8582016102f9565b918252838101850191858101908b8411156105e857600080fd5b86860192505b838310156106705782358581111561060557600080fd5b86016060818e03601f1901121561061b57600080fd5b6106236102d0565b61062e8983016103e1565b815260408201358982015260608201358781111561064c5760008081fd5b61065a8f8b8386010161032a565b60408301525083525091860191908601906105ee565b989b989a5050505060409690960135955050505050565b6000815180845260005b818110156106ad57602081850181015186830182015201610691565b506000602082860101526020601f19601f83011685010191505092915050565b600081518084526020808501808196508360051b8101915082860160005b85811015610715578284038952610703848351610687565b988501989350908401906001016106eb565b5091979650505050505050565b60408152600061073560408301856106cd565b90508260208301529392505050565b6000806020838503121561075757600080fd5b823567ffffffffffffffff81111561076e57600080fd5b61077a8582860161044e565b90969095509350505050565b6000806000806080858703121561079c57600080fd5b6107a5856103e1565b93506107b3602086016103e1565b925060408501359150606085013567ffffffffffffffff8111156107d657600080fd5b6107e28782880161032a565b91505092959194509250565b600060a08201878352602060a08185015281885180845260c08601915060c08160051b8701019350828a0160005b828110156108805787860360bf190184528151805173ffffffffffffffffffffffffffffffffffffffff168752858101518688015260409081015160609188018290529061086c81890183610687565b97505050928401929084019060010161081c565b505050505085604084015284606084015282810360808401526108a381856106cd565b9897505050505050505056fea164736f6c6343000811000a", + "deployedBytecode": "0x6080604052600436106100bc5760003560e01c8063c4a5014511610074578063da7422281161004e578063da74222814610144578063ee57e36f14610210578063fdef91061461022f57600080fd5b8063c4a50145146101a6578063c71bf324146101c6578063ce1b815f146101f457600080fd5b80633e2ab0d9116100a55780633e2ab0d91461014457806380e4cbe114610164578063bfe07da61461019257600080fd5b80630a1f41ca146100c15780631626ba7e146100f0575b600080fd5b3480156100cd57600080fd5b506000546100db9060ff1681565b60405190151581526020015b60405180910390f35b3480156100fc57600080fd5b5061011361010b36600461039a565b600092915050565b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020016100e7565b34801561015057600080fd5b5061016261015f36600461040a565b50565b005b34801561017057600080fd5b5061016261017f36600461042c565b6000805460ff1916911515919091179055565b6101626101a0366004610497565b50505050565b3480156101b257600080fd5b506101626101c1366004610521565b505050565b3480156101d257600080fd5b506101e66101e1366004610564565b610258565b6040516100e7929190610722565b34801561020057600080fd5b50604051600081526020016100e7565b34801561021c57600080fd5b5061016261022b366004610744565b5050565b34801561023b57600080fd5b506100db61024a366004610786565b60005460ff16949350505050565b606060003373ffffffffffffffffffffffffffffffffffffffff167fd4e57c2049f004fb297ef78591cd409503ceb6b2c722d7ffed032fc99e5f3b5886868685876040516102aa9594939291906107ee565b60405180910390a2935093915050565b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff811182821017156102f3576102f36102ba565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715610322576103226102ba565b604052919050565b600082601f83011261033b57600080fd5b813567ffffffffffffffff811115610355576103556102ba565b610368601f8201601f19166020016102f9565b81815284602083860101111561037d57600080fd5b816020850160208301376000918101602001919091529392505050565b600080604083850312156103ad57600080fd5b82359150602083013567ffffffffffffffff8111156103cb57600080fd5b6103d78582860161032a565b9150509250929050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461040557600080fd5b919050565b60006020828403121561041c57600080fd5b610425826103e1565b9392505050565b60006020828403121561043e57600080fd5b8135801515811461042557600080fd5b60008083601f84011261046057600080fd5b50813567ffffffffffffffff81111561047857600080fd5b60208301915083602082850101111561049057600080fd5b9250929050565b600080600080606085870312156104ad57600080fd5b6104b6856103e1565b935060208501359250604085013567ffffffffffffffff8111156104d957600080fd5b6104e58782880161044e565b95989497509550505050565b80357fffffffff000000000000000000000000000000000000000000000000000000008116811461040557600080fd5b60008060006060848603121561053657600080fd5b61053f846104f1565b925061054d602085016104f1565b915061055b604085016104f1565b90509250925092565b60008060006060848603121561057957600080fd5b8335925060208085013567ffffffffffffffff8082111561059957600080fd5b818701915087601f8301126105ad57600080fd5b8135818111156105bf576105bf6102ba565b8060051b6105ce8582016102f9565b918252838101850191858101908b8411156105e857600080fd5b86860192505b838310156106705782358581111561060557600080fd5b86016060818e03601f1901121561061b57600080fd5b6106236102d0565b61062e8983016103e1565b815260408201358982015260608201358781111561064c5760008081fd5b61065a8f8b8386010161032a565b60408301525083525091860191908601906105ee565b989b989a5050505060409690960135955050505050565b6000815180845260005b818110156106ad57602081850181015186830182015201610691565b506000602082860101526020601f19601f83011685010191505092915050565b600081518084526020808501808196508360051b8101915082860160005b85811015610715578284038952610703848351610687565b988501989350908401906001016106eb565b5091979650505050505050565b60408152600061073560408301856106cd565b90508260208301529392505050565b6000806020838503121561075757600080fd5b823567ffffffffffffffff81111561076e57600080fd5b61077a8582860161044e565b90969095509350505050565b6000806000806080858703121561079c57600080fd5b6107a5856103e1565b93506107b3602086016103e1565b925060408501359150606085013567ffffffffffffffff8111156107d657600080fd5b6107e28782880161032a565b91505092959194509250565b600060a08201878352602060a08185015281885180845260c08601915060c08160051b8701019350828a0160005b828110156108805787860360bf190184528151805173ffffffffffffffffffffffffffffffffffffffff168752858101518688015260409081015160609188018290529061086c81890183610687565b97505050928401929084019060010161081c565b505050505085604084015284606084015282810360808401526108a381856106cd565b9897505050505050505056fea164736f6c6343000811000a", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/src/mocks/permission/auth/DaoAuthorizableMock.sol/DaoAuthorizableMock.dbg.json b/contracts/artifacts/src/mocks/permission/auth/DaoAuthorizableMock.sol/DaoAuthorizableMock.dbg.json new file mode 100644 index 00000000..b8d2318f --- /dev/null +++ b/contracts/artifacts/src/mocks/permission/auth/DaoAuthorizableMock.sol/DaoAuthorizableMock.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" +} diff --git a/contracts/artifacts/src/mocks/permission/auth/DaoAuthorizableMock.sol/DaoAuthorizableMock.json b/contracts/artifacts/src/mocks/permission/auth/DaoAuthorizableMock.sol/DaoAuthorizableMock.json new file mode 100644 index 00000000..c1b730f0 --- /dev/null +++ b/contracts/artifacts/src/mocks/permission/auth/DaoAuthorizableMock.sol/DaoAuthorizableMock.json @@ -0,0 +1,81 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "DaoAuthorizableMock", + "sourceName": "src/mocks/permission/auth/DaoAuthorizableMock.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "contract IDAO", + "name": "_dao", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "dao", + "type": "address" + }, + { + "internalType": "address", + "name": "where", + "type": "address" + }, + { + "internalType": "address", + "name": "who", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "permissionId", + "type": "bytes32" + } + ], + "name": "DaoUnauthorized", + "type": "error" + }, + { + "inputs": [], + "name": "AUTHORIZED_FUNC_PERMISSION_ID", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "authorizedFunc", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "dao", + "outputs": [ + { + "internalType": "contract IDAO", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x60a060405234801561001057600080fd5b506040516102ee3803806102ee83398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b60805161025e61009060003960008181608d015260e7015261025e6000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c8063403f8575146100465780634162169f14610080578063f09e1623146100b7575b600080fd5b61006d7f6c28b2d088260f42eed051af4616ddda00554ec1880b580a4a9fbf40a70b09eb81565b6040519081526020015b60405180910390f35b6040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152602001610077565b6100bf6100c1565b005b7f6c28b2d088260f42eed051af4616ddda00554ec1880b580a4a9fbf40a70b09eb6101117f0000000000000000000000000000000000000000000000000000000000000000303384600036610114565b50565b604051637ef7c88360e11b81526001600160a01b0387169063fdef91069061014890889088908890889088906004016101d4565b602060405180830381865afa158015610165573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101899190610228565b6101cc57604051630cb6f8ed60e21b81526001600160a01b0380881660048301528087166024830152851660448201526064810184905260840160405180910390fd5b505050505050565b60006001600160a01b03808816835280871660208401525084604083015260806060830152826080830152828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b60006020828403121561023a57600080fd5b8151801515811461024a57600080fd5b939250505056fea164736f6c6343000811000a", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100415760003560e01c8063403f8575146100465780634162169f14610080578063f09e1623146100b7575b600080fd5b61006d7f6c28b2d088260f42eed051af4616ddda00554ec1880b580a4a9fbf40a70b09eb81565b6040519081526020015b60405180910390f35b6040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152602001610077565b6100bf6100c1565b005b7f6c28b2d088260f42eed051af4616ddda00554ec1880b580a4a9fbf40a70b09eb6101117f0000000000000000000000000000000000000000000000000000000000000000303384600036610114565b50565b604051637ef7c88360e11b81526001600160a01b0387169063fdef91069061014890889088908890889088906004016101d4565b602060405180830381865afa158015610165573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101899190610228565b6101cc57604051630cb6f8ed60e21b81526001600160a01b0380881660048301528087166024830152851660448201526064810184905260840160405180910390fd5b505050505050565b60006001600160a01b03808816835280871660208401525084604083015260806060830152826080830152828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b60006020828403121561023a57600080fd5b8151801515811461024a57600080fd5b939250505056fea164736f6c6343000811000a", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/src/mocks/permission/auth/DaoAuthorizableUpgradeableMock.sol/DaoAuthorizableUpgradeableMock.dbg.json b/contracts/artifacts/src/mocks/permission/auth/DaoAuthorizableUpgradeableMock.sol/DaoAuthorizableUpgradeableMock.dbg.json new file mode 100644 index 00000000..b8d2318f --- /dev/null +++ b/contracts/artifacts/src/mocks/permission/auth/DaoAuthorizableUpgradeableMock.sol/DaoAuthorizableUpgradeableMock.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" +} diff --git a/contracts/artifacts/src/mocks/permission/auth/DaoAuthorizableUpgradeableMock.sol/DaoAuthorizableUpgradeableMock.json b/contracts/artifacts/src/mocks/permission/auth/DaoAuthorizableUpgradeableMock.sol/DaoAuthorizableUpgradeableMock.json new file mode 100644 index 00000000..9ce9fc26 --- /dev/null +++ b/contracts/artifacts/src/mocks/permission/auth/DaoAuthorizableUpgradeableMock.sol/DaoAuthorizableUpgradeableMock.json @@ -0,0 +1,109 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "DaoAuthorizableUpgradeableMock", + "sourceName": "src/mocks/permission/auth/DaoAuthorizableUpgradeableMock.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "dao", + "type": "address" + }, + { + "internalType": "address", + "name": "where", + "type": "address" + }, + { + "internalType": "address", + "name": "who", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "permissionId", + "type": "bytes32" + } + ], + "name": "DaoUnauthorized", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint8", + "name": "version", + "type": "uint8" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "inputs": [], + "name": "AUTHORIZED_FUNC_PERMISSION_ID", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "authorizedFunc", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "dao", + "outputs": [ + { + "internalType": "contract IDAO", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IDAO", + "name": "_dao", + "type": "address" + } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IDAO", + "name": "_dao", + "type": "address" + } + ], + "name": "notAnInitializer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b50610487806100206000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80638883bbd7116100505780638883bbd7146100c1578063c4d66de8146100d6578063f09e1623146100e957600080fd5b8063403f85751461006c5780634162169f146100a6575b600080fd5b6100937f6c28b2d088260f42eed051af4616ddda00554ec1880b580a4a9fbf40a70b09eb81565b6040519081526020015b60405180910390f35b6033546040516001600160a01b03909116815260200161009d565b6100d46100cf3660046103d4565b6100f1565b005b6100d46100e43660046103d4565b6100fd565b6100d4610224565b6100fa81610261565b50565b600054610100900460ff161580801561011d5750600054600160ff909116105b806101375750303b158015610137575060005460ff166001145b6101ae5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b6000805460ff1916600117905580156101d1576000805461ff0019166101001790555b6101da82610261565b8015610220576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b6033547f6c28b2d088260f42eed051af4616ddda00554ec1880b580a4a9fbf40a70b09eb906100fa906001600160a01b0316303384600036610318565b600054610100900460ff166102de5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016101a5565b603380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b604051637ef7c88360e11b81526001600160a01b0387169063fdef91069061034c9088908890889088908890600401610404565b602060405180830381865afa158015610369573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061038d9190610458565b6103cc57604051630cb6f8ed60e21b81526001600160a01b038088166004830152808716602483015285166044820152606481018490526084016101a5565b505050505050565b6000602082840312156103e657600080fd5b81356001600160a01b03811681146103fd57600080fd5b9392505050565b60006001600160a01b03808816835280871660208401525084604083015260806060830152826080830152828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b60006020828403121561046a57600080fd5b815180151581146103fd57600080fdfea164736f6c6343000811000a", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100675760003560e01c80638883bbd7116100505780638883bbd7146100c1578063c4d66de8146100d6578063f09e1623146100e957600080fd5b8063403f85751461006c5780634162169f146100a6575b600080fd5b6100937f6c28b2d088260f42eed051af4616ddda00554ec1880b580a4a9fbf40a70b09eb81565b6040519081526020015b60405180910390f35b6033546040516001600160a01b03909116815260200161009d565b6100d46100cf3660046103d4565b6100f1565b005b6100d46100e43660046103d4565b6100fd565b6100d4610224565b6100fa81610261565b50565b600054610100900460ff161580801561011d5750600054600160ff909116105b806101375750303b158015610137575060005460ff166001145b6101ae5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b6000805460ff1916600117905580156101d1576000805461ff0019166101001790555b6101da82610261565b8015610220576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b6033547f6c28b2d088260f42eed051af4616ddda00554ec1880b580a4a9fbf40a70b09eb906100fa906001600160a01b0316303384600036610318565b600054610100900460ff166102de5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016101a5565b603380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b604051637ef7c88360e11b81526001600160a01b0387169063fdef91069061034c9088908890889088908890600401610404565b602060405180830381865afa158015610369573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061038d9190610458565b6103cc57604051630cb6f8ed60e21b81526001600160a01b038088166004830152808716602483015285166044820152606481018490526084016101a5565b505050505050565b6000602082840312156103e657600080fd5b81356001600160a01b03811681146103fd57600080fd5b9392505050565b60006001600160a01b03808816835280871660208401525084604083015260806060830152826080830152828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b60006020828403121561046a57600080fd5b815180151581146103fd57600080fdfea164736f6c6343000811000a", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/src/mocks/permission/condition/PermissionConditionMock.sol/PermissionConditionMock.dbg.json b/contracts/artifacts/src/mocks/permission/condition/PermissionConditionMock.sol/PermissionConditionMock.dbg.json new file mode 100644 index 00000000..b8d2318f --- /dev/null +++ b/contracts/artifacts/src/mocks/permission/condition/PermissionConditionMock.sol/PermissionConditionMock.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" +} diff --git a/contracts/artifacts/src/mocks/permission/condition/PermissionConditionMock.sol/PermissionConditionMock.json b/contracts/artifacts/src/mocks/permission/condition/PermissionConditionMock.sol/PermissionConditionMock.json new file mode 100644 index 00000000..6551eb6d --- /dev/null +++ b/contracts/artifacts/src/mocks/permission/condition/PermissionConditionMock.sol/PermissionConditionMock.json @@ -0,0 +1,103 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "PermissionConditionMock", + "sourceName": "src/mocks/permission/condition/PermissionConditionMock.sol", + "abi": [ + { + "inputs": [], + "name": "answer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_where", + "type": "address" + }, + { + "internalType": "address", + "name": "_who", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "_permissionId", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "_data", + "type": "bytes" + } + ], + "name": "isGranted", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "protocolVersion", + "outputs": [ + { + "internalType": "uint8[3]", + "name": "", + "type": "uint8[3]" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "_answer", + "type": "bool" + } + ], + "name": "setAnswer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "_interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b5061033d806100206000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80632ae9c600116100505780632ae9c600146100b057806385bb7d69146100c5578063f01b7dd2146100d257600080fd5b806301ffc9a71461006c5780632675fdd014610094575b600080fd5b61007f61007a36600461018e565b6100f5565b60405190151581526020015b60405180910390f35b61007f6100a23660046101fe565b60005460ff16949350505050565b6100b8610146565b60405161008b91906102da565b60005461007f9060ff1681565b6100f36100e036600461030e565b6000805460ff1916911515919091179055565b005b60006001600160e01b031982166302675fdd60e41b148061012557506001600160e01b03198216621574e360e91b145b8061014057506301ffc9a760e01b6001600160e01b03198316145b92915050565b61014e610170565b5060408051606081018252600181526004602082015260009181019190915290565b60405180606001604052806003906020820280368337509192915050565b6000602082840312156101a057600080fd5b81356001600160e01b0319811681146101b857600080fd5b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146101e357600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b6000806000806080858703121561021457600080fd5b61021d856101bf565b935061022b602086016101bf565b925060408501359150606085013567ffffffffffffffff8082111561024f57600080fd5b818701915087601f83011261026357600080fd5b813581811115610275576102756101e8565b604051601f8201601f19908116603f0116810190838211818310171561029d5761029d6101e8565b816040528281528a60208487010111156102b657600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b60608101818360005b600381101561030557815160ff168352602092830192909101906001016102e3565b50505092915050565b60006020828403121561032057600080fd5b813580151581146101b857600080fdfea164736f6c6343000811000a", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100675760003560e01c80632ae9c600116100505780632ae9c600146100b057806385bb7d69146100c5578063f01b7dd2146100d257600080fd5b806301ffc9a71461006c5780632675fdd014610094575b600080fd5b61007f61007a36600461018e565b6100f5565b60405190151581526020015b60405180910390f35b61007f6100a23660046101fe565b60005460ff16949350505050565b6100b8610146565b60405161008b91906102da565b60005461007f9060ff1681565b6100f36100e036600461030e565b6000805460ff1916911515919091179055565b005b60006001600160e01b031982166302675fdd60e41b148061012557506001600160e01b03198216621574e360e91b145b8061014057506301ffc9a760e01b6001600160e01b03198316145b92915050565b61014e610170565b5060408051606081018252600181526004602082015260009181019190915290565b60405180606001604052806003906020820280368337509192915050565b6000602082840312156101a057600080fd5b81356001600160e01b0319811681146101b857600080fd5b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146101e357600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b6000806000806080858703121561021457600080fd5b61021d856101bf565b935061022b602086016101bf565b925060408501359150606085013567ffffffffffffffff8082111561024f57600080fd5b818701915087601f83011261026357600080fd5b813581811115610275576102756101e8565b604051601f8201601f19908116603f0116810190838211818310171561029d5761029d6101e8565b816040528281528a60208487010111156102b657600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b60608101818360005b600381101561030557815160ff168352602092830192909101906001016102e3565b50505092915050565b60006020828403121561032057600080fd5b813580151581146101b857600080fdfea164736f6c6343000811000a", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/src/mocks/permission/condition/PermissionConditionUpgradeableMock.sol/PermissionConditionUpgradeableMock.dbg.json b/contracts/artifacts/src/mocks/permission/condition/PermissionConditionUpgradeableMock.sol/PermissionConditionUpgradeableMock.dbg.json new file mode 100644 index 00000000..b8d2318f --- /dev/null +++ b/contracts/artifacts/src/mocks/permission/condition/PermissionConditionUpgradeableMock.sol/PermissionConditionUpgradeableMock.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" +} diff --git a/contracts/artifacts/src/mocks/permission/condition/PermissionConditionUpgradeableMock.sol/PermissionConditionUpgradeableMock.json b/contracts/artifacts/src/mocks/permission/condition/PermissionConditionUpgradeableMock.sol/PermissionConditionUpgradeableMock.json new file mode 100644 index 00000000..a8b870fd --- /dev/null +++ b/contracts/artifacts/src/mocks/permission/condition/PermissionConditionUpgradeableMock.sol/PermissionConditionUpgradeableMock.json @@ -0,0 +1,116 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "PermissionConditionUpgradeableMock", + "sourceName": "src/mocks/permission/condition/PermissionConditionUpgradeableMock.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint8", + "name": "version", + "type": "uint8" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "inputs": [], + "name": "answer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_where", + "type": "address" + }, + { + "internalType": "address", + "name": "_who", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "_permissionId", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "_data", + "type": "bytes" + } + ], + "name": "isGranted", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "protocolVersion", + "outputs": [ + { + "internalType": "uint8[3]", + "name": "", + "type": "uint8[3]" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "_answer", + "type": "bool" + } + ], + "name": "setAnswer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "_interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b5061033d806100206000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80632ae9c600116100505780632ae9c600146100b057806385bb7d69146100c5578063f01b7dd2146100d257600080fd5b806301ffc9a71461006c5780632675fdd014610094575b600080fd5b61007f61007a36600461018e565b6100f5565b60405190151581526020015b60405180910390f35b61007f6100a23660046101fe565b60335460ff16949350505050565b6100b8610146565b60405161008b91906102da565b60335461007f9060ff1681565b6100f36100e036600461030e565b6033805460ff1916911515919091179055565b005b60006001600160e01b031982166302675fdd60e41b148061012557506001600160e01b03198216621574e360e91b145b8061014057506301ffc9a760e01b6001600160e01b03198316145b92915050565b61014e610170565b5060408051606081018252600181526004602082015260009181019190915290565b60405180606001604052806003906020820280368337509192915050565b6000602082840312156101a057600080fd5b81356001600160e01b0319811681146101b857600080fd5b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146101e357600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b6000806000806080858703121561021457600080fd5b61021d856101bf565b935061022b602086016101bf565b925060408501359150606085013567ffffffffffffffff8082111561024f57600080fd5b818701915087601f83011261026357600080fd5b813581811115610275576102756101e8565b604051601f8201601f19908116603f0116810190838211818310171561029d5761029d6101e8565b816040528281528a60208487010111156102b657600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b60608101818360005b600381101561030557815160ff168352602092830192909101906001016102e3565b50505092915050565b60006020828403121561032057600080fd5b813580151581146101b857600080fdfea164736f6c6343000811000a", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100675760003560e01c80632ae9c600116100505780632ae9c600146100b057806385bb7d69146100c5578063f01b7dd2146100d257600080fd5b806301ffc9a71461006c5780632675fdd014610094575b600080fd5b61007f61007a36600461018e565b6100f5565b60405190151581526020015b60405180910390f35b61007f6100a23660046101fe565b60335460ff16949350505050565b6100b8610146565b60405161008b91906102da565b60335461007f9060ff1681565b6100f36100e036600461030e565b6033805460ff1916911515919091179055565b005b60006001600160e01b031982166302675fdd60e41b148061012557506001600160e01b03198216621574e360e91b145b8061014057506301ffc9a760e01b6001600160e01b03198316145b92915050565b61014e610170565b5060408051606081018252600181526004602082015260009181019190915290565b60405180606001604052806003906020820280368337509192915050565b6000602082840312156101a057600080fd5b81356001600160e01b0319811681146101b857600080fd5b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146101e357600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b6000806000806080858703121561021457600080fd5b61021d856101bf565b935061022b602086016101bf565b925060408501359150606085013567ffffffffffffffff8082111561024f57600080fd5b818701915087601f83011261026357600080fd5b813581811115610275576102756101e8565b604051601f8201601f19908116603f0116810190838211818310171561029d5761029d6101e8565b816040528281528a60208487010111156102b657600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b60608101818360005b600381101561030557815160ff168352602092830192909101906001016102e3565b50505092915050565b60006020828403121561032057600080fd5b813580151581146101b857600080fdfea164736f6c6343000811000a", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/src/mocks/plugin/PluginCloneableMock.sol/PluginCloneableMockBad.dbg.json b/contracts/artifacts/src/mocks/plugin/PluginCloneableMock.sol/PluginCloneableMockBad.dbg.json new file mode 100644 index 00000000..930fbb1d --- /dev/null +++ b/contracts/artifacts/src/mocks/plugin/PluginCloneableMock.sol/PluginCloneableMockBad.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/9ac591806bb2e846e5a60f79d635058e.json" +} diff --git a/contracts/artifacts/src/mocks/plugin/PluginCloneableMock.sol/PluginCloneableMockBad.json b/contracts/artifacts/src/mocks/plugin/PluginCloneableMock.sol/PluginCloneableMockBad.json new file mode 100644 index 00000000..eb2b8e22 --- /dev/null +++ b/contracts/artifacts/src/mocks/plugin/PluginCloneableMock.sol/PluginCloneableMockBad.json @@ -0,0 +1,153 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "PluginCloneableMockBad", + "sourceName": "src/mocks/plugin/PluginCloneableMock.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint8", + "name": "version", + "type": "uint8" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousTarget", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newTarget", + "type": "address" + } + ], + "name": "TargetSet", + "type": "event" + }, + { + "inputs": [], + "name": "dao", + "outputs": [ + { + "internalType": "contract IDAO", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IDAO", + "name": "_dao", + "type": "address" + } + ], + "name": "notAnInitializer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "pluginType", + "outputs": [ + { + "internalType": "enum IPlugin.PluginType", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "protocolVersion", + "outputs": [ + { + "internalType": "uint8[3]", + "name": "", + "type": "uint8[3]" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_target", + "type": "address" + } + ], + "name": "setTarget", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "state1", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "_interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "target", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b5061001961001e565b6100dd565b600054610100900460ff161561008a5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116146100db576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b61043b806100ec6000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c80636accab8c1161005b5780636accab8c146100fe578063776d1a01146101155780638883bbd71461012a578063d4b839921461013d57600080fd5b806301ffc9a71461008d5780632ae9c600146100b55780634162169f146100ca57806341de6830146100ef575b600080fd5b6100a061009b36600461036f565b610150565b60405190151581526020015b60405180910390f35b6100bd6101a1565b6040516100ac91906103a0565b6065546001600160a01b03165b6040516001600160a01b0390911681526020016100ac565b60016040516100ac91906103d4565b61010760985481565b6040519081526020016100ac565b610128610123366004610411565b6101cb565b005b610128610138366004610411565b61022a565b6097546100d7906001600160a01b031681565b60006001600160e01b0319821663041de68360e41b148061018057506001600160e01b03198216621574e360e91b145b8061019b57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6101a9610351565b5060408051606081018252600181526004602082015260009181019190915290565b609780546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d690600090a35050565b6102338161023b565b506001609855565b600054610100900460ff166102ab5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084015b60405180910390fd5b6102b4816102b7565b50565b600054610100900460ff166103225760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016102a2565b6065805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b60405180606001604052806003906020820280368337509192915050565b60006020828403121561038157600080fd5b81356001600160e01b03198116811461039957600080fd5b9392505050565b60608101818360005b60038110156103cb57815160ff168352602092830192909101906001016103a9565b50505092915050565b60208101600383106103f657634e487b7160e01b600052602160045260246000fd5b91905290565b6001600160a01b03811681146102b457600080fd5b60006020828403121561042357600080fd5b8135610399816103fc56fea164736f6c6343000811000a", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100885760003560e01c80636accab8c1161005b5780636accab8c146100fe578063776d1a01146101155780638883bbd71461012a578063d4b839921461013d57600080fd5b806301ffc9a71461008d5780632ae9c600146100b55780634162169f146100ca57806341de6830146100ef575b600080fd5b6100a061009b36600461036f565b610150565b60405190151581526020015b60405180910390f35b6100bd6101a1565b6040516100ac91906103a0565b6065546001600160a01b03165b6040516001600160a01b0390911681526020016100ac565b60016040516100ac91906103d4565b61010760985481565b6040519081526020016100ac565b610128610123366004610411565b6101cb565b005b610128610138366004610411565b61022a565b6097546100d7906001600160a01b031681565b60006001600160e01b0319821663041de68360e41b148061018057506001600160e01b03198216621574e360e91b145b8061019b57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6101a9610351565b5060408051606081018252600181526004602082015260009181019190915290565b609780546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d690600090a35050565b6102338161023b565b506001609855565b600054610100900460ff166102ab5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084015b60405180910390fd5b6102b4816102b7565b50565b600054610100900460ff166103225760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016102a2565b6065805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b60405180606001604052806003906020820280368337509192915050565b60006020828403121561038157600080fd5b81356001600160e01b03198116811461039957600080fd5b9392505050565b60608101818360005b60038110156103cb57815160ff168352602092830192909101906001016103a9565b50505092915050565b60208101600383106103f657634e487b7160e01b600052602160045260246000fd5b91905290565b6001600160a01b03811681146102b457600080fd5b60006020828403121561042357600080fd5b8135610399816103fc56fea164736f6c6343000811000a", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/src/mocks/plugin/PluginCloneableMock.sol/PluginCloneableMockBuild1.dbg.json b/contracts/artifacts/src/mocks/plugin/PluginCloneableMock.sol/PluginCloneableMockBuild1.dbg.json new file mode 100644 index 00000000..930fbb1d --- /dev/null +++ b/contracts/artifacts/src/mocks/plugin/PluginCloneableMock.sol/PluginCloneableMockBuild1.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/9ac591806bb2e846e5a60f79d635058e.json" +} diff --git a/contracts/artifacts/src/mocks/plugin/PluginCloneableMock.sol/PluginCloneableMockBuild1.json b/contracts/artifacts/src/mocks/plugin/PluginCloneableMock.sol/PluginCloneableMockBuild1.json new file mode 100644 index 00000000..d1cb285e --- /dev/null +++ b/contracts/artifacts/src/mocks/plugin/PluginCloneableMock.sol/PluginCloneableMockBuild1.json @@ -0,0 +1,153 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "PluginCloneableMockBuild1", + "sourceName": "src/mocks/plugin/PluginCloneableMock.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint8", + "name": "version", + "type": "uint8" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousTarget", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newTarget", + "type": "address" + } + ], + "name": "TargetSet", + "type": "event" + }, + { + "inputs": [], + "name": "dao", + "outputs": [ + { + "internalType": "contract IDAO", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IDAO", + "name": "_dao", + "type": "address" + } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "pluginType", + "outputs": [ + { + "internalType": "enum IPlugin.PluginType", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "protocolVersion", + "outputs": [ + { + "internalType": "uint8[3]", + "name": "", + "type": "uint8[3]" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_target", + "type": "address" + } + ], + "name": "setTarget", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "state1", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "_interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "target", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b5061001961001e565b6100dd565b600054610100900460ff161561008a5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116146100db576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b610551806100ec6000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c80636accab8c1161005b5780636accab8c146100fe578063776d1a0114610115578063c4d66de81461012a578063d4b839921461013d57600080fd5b806301ffc9a71461008d5780632ae9c600146100b55780634162169f146100ca57806341de6830146100ef575b600080fd5b6100a061009b366004610485565b610150565b60405190151581526020015b60405180910390f35b6100bd6101a1565b6040516100ac91906104b6565b6065546001600160a01b03165b6040516001600160a01b0390911681526020016100ac565b60016040516100ac91906104ea565b61010760985481565b6040519081526020016100ac565b610128610123366004610527565b6101cb565b005b610128610138366004610527565b61022a565b6097546100d7906001600160a01b031681565b60006001600160e01b0319821663041de68360e41b148061018057506001600160e01b03198216621574e360e91b145b8061019b57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6101a9610467565b5060408051606081018252600181526004602082015260009181019190915290565b609780546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d690600090a35050565b600054610100900460ff161580801561024a5750600054600160ff909116105b806102645750303b158015610264575060005460ff166001145b6102db5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b6000805460ff1916600117905580156102fe576000805461ff0019166101001790555b61030782610356565b60016098558015610352576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b600054610100900460ff166103c15760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016102d2565b6103ca816103cd565b50565b600054610100900460ff166104385760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016102d2565b6065805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b60405180606001604052806003906020820280368337509192915050565b60006020828403121561049757600080fd5b81356001600160e01b0319811681146104af57600080fd5b9392505050565b60608101818360005b60038110156104e157815160ff168352602092830192909101906001016104bf565b50505092915050565b602081016003831061050c57634e487b7160e01b600052602160045260246000fd5b91905290565b6001600160a01b03811681146103ca57600080fd5b60006020828403121561053957600080fd5b81356104af8161051256fea164736f6c6343000811000a", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100885760003560e01c80636accab8c1161005b5780636accab8c146100fe578063776d1a0114610115578063c4d66de81461012a578063d4b839921461013d57600080fd5b806301ffc9a71461008d5780632ae9c600146100b55780634162169f146100ca57806341de6830146100ef575b600080fd5b6100a061009b366004610485565b610150565b60405190151581526020015b60405180910390f35b6100bd6101a1565b6040516100ac91906104b6565b6065546001600160a01b03165b6040516001600160a01b0390911681526020016100ac565b60016040516100ac91906104ea565b61010760985481565b6040519081526020016100ac565b610128610123366004610527565b6101cb565b005b610128610138366004610527565b61022a565b6097546100d7906001600160a01b031681565b60006001600160e01b0319821663041de68360e41b148061018057506001600160e01b03198216621574e360e91b145b8061019b57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6101a9610467565b5060408051606081018252600181526004602082015260009181019190915290565b609780546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d690600090a35050565b600054610100900460ff161580801561024a5750600054600160ff909116105b806102645750303b158015610264575060005460ff166001145b6102db5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b6000805460ff1916600117905580156102fe576000805461ff0019166101001790555b61030782610356565b60016098558015610352576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b600054610100900460ff166103c15760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016102d2565b6103ca816103cd565b50565b600054610100900460ff166104385760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016102d2565b6065805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b60405180606001604052806003906020820280368337509192915050565b60006020828403121561049757600080fd5b81356001600160e01b0319811681146104af57600080fd5b9392505050565b60608101818360005b60038110156104e157815160ff168352602092830192909101906001016104bf565b50505092915050565b602081016003831061050c57634e487b7160e01b600052602160045260246000fd5b91905290565b6001600160a01b03811681146103ca57600080fd5b60006020828403121561053957600080fd5b81356104af8161051256fea164736f6c6343000811000a", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/src/mocks/plugin/PluginCloneableMock.sol/PluginCloneableMockBuild2.dbg.json b/contracts/artifacts/src/mocks/plugin/PluginCloneableMock.sol/PluginCloneableMockBuild2.dbg.json new file mode 100644 index 00000000..930fbb1d --- /dev/null +++ b/contracts/artifacts/src/mocks/plugin/PluginCloneableMock.sol/PluginCloneableMockBuild2.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/9ac591806bb2e846e5a60f79d635058e.json" +} diff --git a/contracts/artifacts/src/mocks/plugin/PluginCloneableMock.sol/PluginCloneableMockBuild2.json b/contracts/artifacts/src/mocks/plugin/PluginCloneableMock.sol/PluginCloneableMockBuild2.json new file mode 100644 index 00000000..84311d71 --- /dev/null +++ b/contracts/artifacts/src/mocks/plugin/PluginCloneableMock.sol/PluginCloneableMockBuild2.json @@ -0,0 +1,166 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "PluginCloneableMockBuild2", + "sourceName": "src/mocks/plugin/PluginCloneableMock.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint8", + "name": "version", + "type": "uint8" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousTarget", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newTarget", + "type": "address" + } + ], + "name": "TargetSet", + "type": "event" + }, + { + "inputs": [], + "name": "dao", + "outputs": [ + { + "internalType": "contract IDAO", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IDAO", + "name": "_dao", + "type": "address" + } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "pluginType", + "outputs": [ + { + "internalType": "enum IPlugin.PluginType", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "protocolVersion", + "outputs": [ + { + "internalType": "uint8[3]", + "name": "", + "type": "uint8[3]" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_target", + "type": "address" + } + ], + "name": "setTarget", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "state1", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "state2", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "_interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "target", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b5061001961001e565b6100dd565b600054610100900460ff161561008a5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116146100db576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b61057a806100ec6000396000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c80636accab8c11610076578063c4d66de81161005b578063c4d66de814610145578063d4b8399214610158578063efe51cca1461016b57600080fd5b80636accab8c14610119578063776d1a011461013057600080fd5b806301ffc9a7146100a85780632ae9c600146100d05780634162169f146100e557806341de68301461010a575b600080fd5b6100bb6100b63660046104ae565b610174565b60405190151581526020015b60405180910390f35b6100d86101c5565b6040516100c791906104df565b6065546001600160a01b03165b6040516001600160a01b0390911681526020016100c7565b60016040516100c79190610513565b61012260985481565b6040519081526020016100c7565b61014361013e366004610550565b6101ef565b005b610143610153366004610550565b61024e565b6097546100f2906001600160a01b031681565b61012260995481565b60006001600160e01b0319821663041de68360e41b14806101a457506001600160e01b03198216621574e360e91b145b806101bf57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6101cd610490565b5060408051606081018252600181526004602082015260009181019190915290565b609780546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d690600090a35050565b600054610100900460ff161580801561026e5750600054600160ff909116105b806102885750303b158015610288575060005460ff166001145b6102ff5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b6000805460ff191660011790558015610322576000805461ff0019166101001790555b61032b8261037f565b60016098556002609955801561037b576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b600054610100900460ff166103ea5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016102f6565b6103f3816103f6565b50565b600054610100900460ff166104615760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016102f6565b6065805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b60405180606001604052806003906020820280368337509192915050565b6000602082840312156104c057600080fd5b81356001600160e01b0319811681146104d857600080fd5b9392505050565b60608101818360005b600381101561050a57815160ff168352602092830192909101906001016104e8565b50505092915050565b602081016003831061053557634e487b7160e01b600052602160045260246000fd5b91905290565b6001600160a01b03811681146103f357600080fd5b60006020828403121561056257600080fd5b81356104d88161053b56fea164736f6c6343000811000a", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100a35760003560e01c80636accab8c11610076578063c4d66de81161005b578063c4d66de814610145578063d4b8399214610158578063efe51cca1461016b57600080fd5b80636accab8c14610119578063776d1a011461013057600080fd5b806301ffc9a7146100a85780632ae9c600146100d05780634162169f146100e557806341de68301461010a575b600080fd5b6100bb6100b63660046104ae565b610174565b60405190151581526020015b60405180910390f35b6100d86101c5565b6040516100c791906104df565b6065546001600160a01b03165b6040516001600160a01b0390911681526020016100c7565b60016040516100c79190610513565b61012260985481565b6040519081526020016100c7565b61014361013e366004610550565b6101ef565b005b610143610153366004610550565b61024e565b6097546100f2906001600160a01b031681565b61012260995481565b60006001600160e01b0319821663041de68360e41b14806101a457506001600160e01b03198216621574e360e91b145b806101bf57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6101cd610490565b5060408051606081018252600181526004602082015260009181019190915290565b609780546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d690600090a35050565b600054610100900460ff161580801561026e5750600054600160ff909116105b806102885750303b158015610288575060005460ff166001145b6102ff5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b6000805460ff191660011790558015610322576000805461ff0019166101001790555b61032b8261037f565b60016098556002609955801561037b576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b600054610100900460ff166103ea5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016102f6565b6103f3816103f6565b50565b600054610100900460ff166104615760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016102f6565b6065805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b60405180606001604052806003906020820280368337509192915050565b6000602082840312156104c057600080fd5b81356001600160e01b0319811681146104d857600080fd5b9392505050565b60608101818360005b600381101561050a57815160ff168352602092830192909101906001016104e8565b50505092915050565b602081016003831061053557634e487b7160e01b600052602160045260246000fd5b91905290565b6001600160a01b03811681146103f357600080fd5b60006020828403121561056257600080fd5b81356104d88161053b56fea164736f6c6343000811000a", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/src/mocks/plugin/PluginCloneableSetupMock.sol/PluginCloneableSetupMockBuild1.dbg.json b/contracts/artifacts/src/mocks/plugin/PluginCloneableSetupMock.sol/PluginCloneableSetupMockBuild1.dbg.json new file mode 100644 index 00000000..930fbb1d --- /dev/null +++ b/contracts/artifacts/src/mocks/plugin/PluginCloneableSetupMock.sol/PluginCloneableSetupMockBuild1.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/9ac591806bb2e846e5a60f79d635058e.json" +} diff --git a/contracts/artifacts/src/mocks/plugin/PluginCloneableSetupMock.sol/PluginCloneableSetupMockBuild1.json b/contracts/artifacts/src/mocks/plugin/PluginCloneableSetupMock.sol/PluginCloneableSetupMockBuild1.json new file mode 100644 index 00000000..b75853d7 --- /dev/null +++ b/contracts/artifacts/src/mocks/plugin/PluginCloneableSetupMock.sol/PluginCloneableSetupMockBuild1.json @@ -0,0 +1,297 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "PluginCloneableSetupMockBuild1", + "sourceName": "src/mocks/plugin/PluginCloneableSetupMock.sol", + "abi": [ + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "ConflictingValues", + "type": "error" + }, + { + "inputs": [], + "name": "NonUpgradeablePlugin", + "type": "error" + }, + { + "inputs": [], + "name": "implementation", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_dao", + "type": "address" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "name": "prepareInstallation", + "outputs": [ + { + "internalType": "address", + "name": "plugin", + "type": "address" + }, + { + "components": [ + { + "internalType": "address[]", + "name": "helpers", + "type": "address[]" + }, + { + "components": [ + { + "internalType": "enum PermissionLib.Operation", + "name": "operation", + "type": "uint8" + }, + { + "internalType": "address", + "name": "where", + "type": "address" + }, + { + "internalType": "address", + "name": "who", + "type": "address" + }, + { + "internalType": "address", + "name": "condition", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "permissionId", + "type": "bytes32" + } + ], + "internalType": "struct PermissionLib.MultiTargetPermission[]", + "name": "permissions", + "type": "tuple[]" + } + ], + "internalType": "struct IPluginSetup.PreparedSetupData", + "name": "preparedSetupData", + "type": "tuple" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_dao", + "type": "address" + }, + { + "components": [ + { + "internalType": "address", + "name": "plugin", + "type": "address" + }, + { + "internalType": "address[]", + "name": "currentHelpers", + "type": "address[]" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "internalType": "struct IPluginSetup.SetupPayload", + "name": "_payload", + "type": "tuple" + } + ], + "name": "prepareUninstallation", + "outputs": [ + { + "components": [ + { + "internalType": "enum PermissionLib.Operation", + "name": "operation", + "type": "uint8" + }, + { + "internalType": "address", + "name": "where", + "type": "address" + }, + { + "internalType": "address", + "name": "who", + "type": "address" + }, + { + "internalType": "address", + "name": "condition", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "permissionId", + "type": "bytes32" + } + ], + "internalType": "struct PermissionLib.MultiTargetPermission[]", + "name": "permissions", + "type": "tuple[]" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_dao", + "type": "address" + }, + { + "internalType": "uint16", + "name": "_fromBuild", + "type": "uint16" + }, + { + "components": [ + { + "internalType": "address", + "name": "plugin", + "type": "address" + }, + { + "internalType": "address[]", + "name": "currentHelpers", + "type": "address[]" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "internalType": "struct IPluginSetup.SetupPayload", + "name": "_payload", + "type": "tuple" + } + ], + "name": "prepareUpdate", + "outputs": [ + { + "internalType": "bytes", + "name": "", + "type": "bytes" + }, + { + "components": [ + { + "internalType": "address[]", + "name": "helpers", + "type": "address[]" + }, + { + "components": [ + { + "internalType": "enum PermissionLib.Operation", + "name": "operation", + "type": "uint8" + }, + { + "internalType": "address", + "name": "where", + "type": "address" + }, + { + "internalType": "address", + "name": "who", + "type": "address" + }, + { + "internalType": "address", + "name": "condition", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "permissionId", + "type": "bytes32" + } + ], + "internalType": "struct PermissionLib.MultiTargetPermission[]", + "name": "permissions", + "type": "tuple[]" + } + ], + "internalType": "struct IPluginSetup.PreparedSetupData", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "protocolVersion", + "outputs": [ + { + "internalType": "uint8[3]", + "name": "", + "type": "uint8[3]" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "_interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x60a060405234801561001057600080fd5b5060405161001d9061004b565b604051809103906000f080158015610039573d6000803e3d6000fd5b506001600160a01b0316608052610058565b61063d80610d3083390190565b608051610cb76100796000396000818160c101526102970152610cb76000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c80639cb0a124116100505780639cb0a124146100eb578063a8a9c29e1461010b578063f10832f11461012c57600080fd5b806301ffc9a7146100775780632ae9c6001461009f5780635c60da1b146100b4575b600080fd5b61008a6100853660046107fd565b61014d565b60405190151581526020015b60405180910390f35b6100a761019e565b6040516100969190610827565b6040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152602001610096565b6100fe6100f9366004610884565b6101c8565b604051610096919061094e565b61011e610119366004610997565b6101de565b604051610096929190610ae1565b61013f61013a366004610b25565b610216565b604051610096929190610be7565b60006001600160e01b0319821663099718b560e41b148061017d57506001600160e01b03198216621574e360e91b145b8061019857506301ffc9a760e01b6001600160e01b03198316145b92915050565b6101a66107df565b5060408051606081018252600181526004602082015260009181019190915290565b60606101d760006001806102f2565b9392505050565b60606101fd604051806040016040528060608152602001606081525090565b60405163a112810160e01b815260040160405180910390fd5b6000610235604051806040016040528060608152602001606081525090565b6040516001600160a01b038516602482015260009060440160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663189acdbd60e31b17905290506102c8816102b97f000000000000000000000000000000000000000000000000000000000000000090565b6001600160a01b031690610477565b92506102d460016104af565b82526102e360006001816102f2565b60208301525090939092509050565b6060826001600160a01b0316846001600160a01b0316111561032757604051633a4013cd60e21b815260040160405180910390fd5b6103318484610c1f565b6001600160a01b031667ffffffffffffffff81111561035257610352610b0f565b6040519080825280602002602001820160405280156103ab57816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282526000199092019101816103705790505b509050835b836001600160a01b0316816001600160a01b0316101561046f576040518060a001604052808460028111156103e7576103e76108d2565b81526001600160a01b038316602082018190526040820152600060608201527fa280eec51ab8e1bc4b6b0c1b7f1bde785761b787a49db404e3e9338ed9b016ef608090910152826104388784610c1f565b6001600160a01b03168151811061045157610451610c3f565b6020026020010181905250808061046790610c55565b9150506103b0565b509392505050565b600061048b836001600160a01b0316610568565b825190915015610198576104a86001600160a01b0382168361060e565b5092915050565b6060816001600160a01b031667ffffffffffffffff8111156104d3576104d3610b0f565b6040519080825280602002602001820160405280156104fc578160200160208202803683370190505b50905060005b826001600160a01b0316816001600160a01b03161015610562578082826001600160a01b03168151811061053857610538610c3f565b6001600160a01b03909216602092830291909101909101528061055a81610c55565b915050610502565b50919050565b6000763d602d80600a3d3981f3363d3d373d3d3d363d730000008260601b60e81c176000526e5af43d82803e903d91602b57fd5bf38260781b17602052603760096000f090506001600160a01b0381166106095760405162461bcd60e51b815260206004820152601660248201527f455243313136373a20637265617465206661696c65640000000000000000000060448201526064015b60405180910390fd5b919050565b60606101d7838360006040518060400160405280601e81526020017f416464726573733a206c6f772d6c6576656c2063616c6c206661696c656400008152506060824710156106c55760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610600565b600080866001600160a01b031685876040516106e19190610c7b565b60006040518083038185875af1925050503d806000811461071e576040519150601f19603f3d011682016040523d82523d6000602084013e610723565b606091505b509150915061073487838387610741565b925050505b949350505050565b606083156107b05782516000036107a9576001600160a01b0385163b6107a95760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610600565b5081610739565b61073983838151156107c55781518083602001fd5b8060405162461bcd60e51b81526004016106009190610c97565b60405180606001604052806003906020820280368337509192915050565b60006020828403121561080f57600080fd5b81356001600160e01b0319811681146101d757600080fd5b60608101818360005b600381101561085257815160ff16835260209283019290910190600101610830565b50505092915050565b80356001600160a01b038116811461060957600080fd5b60006060828403121561056257600080fd5b6000806040838503121561089757600080fd5b6108a08361085b565b9150602083013567ffffffffffffffff8111156108bc57600080fd5b6108c885828601610872565b9150509250929050565b634e487b7160e01b600052602160045260246000fd5b600081516003811061090a57634e487b7160e01b600052602160045260246000fd5b8352506020818101516001600160a01b0390811691840191909152604080830151821690840152606080830151909116908301526080908101519082015260a00190565b6020808252825182820181905260009190848201906040850190845b8181101561098b5761097d8385516108e8565b93850193925060010161096a565b50909695505050505050565b6000806000606084860312156109ac57600080fd5b6109b58461085b565b9250602084013561ffff811681146109cc57600080fd5b9150604084013567ffffffffffffffff8111156109e857600080fd5b6109f486828701610872565b9150509250925092565b60005b83811015610a19578181015183820152602001610a01565b50506000910152565b60008151808452610a3a8160208601602086016109fe565b601f01601f19169290920160200192915050565b805160408084528151908401819052600091602091908201906060860190845b81811015610a935783516001600160a01b031683529284019291840191600101610a6e565b50508483015186820387850152805180835290840192506000918401905b80831015610ad657610ac48285516108e8565b91508484019350600183019250610ab1565b509695505050505050565b604081526000610af46040830185610a22565b8281036020840152610b068185610a4e565b95945050505050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215610b3857600080fd5b610b418361085b565b9150602083013567ffffffffffffffff80821115610b5e57600080fd5b818501915085601f830112610b7257600080fd5b813581811115610b8457610b84610b0f565b604051601f8201601f19908116603f01168101908382118183101715610bac57610bac610b0f565b81604052828152886020848701011115610bc557600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6001600160a01b03831681526040602082015260006107396040830184610a4e565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b038281168282160390808211156104a8576104a8610c09565b634e487b7160e01b600052603260045260246000fd5b60006001600160a01b03808316818103610c7157610c71610c09565b6001019392505050565b60008251610c8d8184602087016109fe565b9190910192915050565b6020815260006101d76020830184610a2256fea164736f6c6343000811000a608060405234801561001057600080fd5b5061001961001e565b6100dd565b600054610100900460ff161561008a5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116146100db576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b610551806100ec6000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c80636accab8c1161005b5780636accab8c146100fe578063776d1a0114610115578063c4d66de81461012a578063d4b839921461013d57600080fd5b806301ffc9a71461008d5780632ae9c600146100b55780634162169f146100ca57806341de6830146100ef575b600080fd5b6100a061009b366004610485565b610150565b60405190151581526020015b60405180910390f35b6100bd6101a1565b6040516100ac91906104b6565b6065546001600160a01b03165b6040516001600160a01b0390911681526020016100ac565b60016040516100ac91906104ea565b61010760985481565b6040519081526020016100ac565b610128610123366004610527565b6101cb565b005b610128610138366004610527565b61022a565b6097546100d7906001600160a01b031681565b60006001600160e01b0319821663041de68360e41b148061018057506001600160e01b03198216621574e360e91b145b8061019b57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6101a9610467565b5060408051606081018252600181526004602082015260009181019190915290565b609780546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d690600090a35050565b600054610100900460ff161580801561024a5750600054600160ff909116105b806102645750303b158015610264575060005460ff166001145b6102db5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b6000805460ff1916600117905580156102fe576000805461ff0019166101001790555b61030782610356565b60016098558015610352576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b600054610100900460ff166103c15760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016102d2565b6103ca816103cd565b50565b600054610100900460ff166104385760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016102d2565b6065805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b60405180606001604052806003906020820280368337509192915050565b60006020828403121561049757600080fd5b81356001600160e01b0319811681146104af57600080fd5b9392505050565b60608101818360005b60038110156104e157815160ff168352602092830192909101906001016104bf565b50505092915050565b602081016003831061050c57634e487b7160e01b600052602160045260246000fd5b91905290565b6001600160a01b03811681146103ca57600080fd5b60006020828403121561053957600080fd5b81356104af8161051256fea164736f6c6343000811000a", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100725760003560e01c80639cb0a124116100505780639cb0a124146100eb578063a8a9c29e1461010b578063f10832f11461012c57600080fd5b806301ffc9a7146100775780632ae9c6001461009f5780635c60da1b146100b4575b600080fd5b61008a6100853660046107fd565b61014d565b60405190151581526020015b60405180910390f35b6100a761019e565b6040516100969190610827565b6040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152602001610096565b6100fe6100f9366004610884565b6101c8565b604051610096919061094e565b61011e610119366004610997565b6101de565b604051610096929190610ae1565b61013f61013a366004610b25565b610216565b604051610096929190610be7565b60006001600160e01b0319821663099718b560e41b148061017d57506001600160e01b03198216621574e360e91b145b8061019857506301ffc9a760e01b6001600160e01b03198316145b92915050565b6101a66107df565b5060408051606081018252600181526004602082015260009181019190915290565b60606101d760006001806102f2565b9392505050565b60606101fd604051806040016040528060608152602001606081525090565b60405163a112810160e01b815260040160405180910390fd5b6000610235604051806040016040528060608152602001606081525090565b6040516001600160a01b038516602482015260009060440160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663189acdbd60e31b17905290506102c8816102b97f000000000000000000000000000000000000000000000000000000000000000090565b6001600160a01b031690610477565b92506102d460016104af565b82526102e360006001816102f2565b60208301525090939092509050565b6060826001600160a01b0316846001600160a01b0316111561032757604051633a4013cd60e21b815260040160405180910390fd5b6103318484610c1f565b6001600160a01b031667ffffffffffffffff81111561035257610352610b0f565b6040519080825280602002602001820160405280156103ab57816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282526000199092019101816103705790505b509050835b836001600160a01b0316816001600160a01b0316101561046f576040518060a001604052808460028111156103e7576103e76108d2565b81526001600160a01b038316602082018190526040820152600060608201527fa280eec51ab8e1bc4b6b0c1b7f1bde785761b787a49db404e3e9338ed9b016ef608090910152826104388784610c1f565b6001600160a01b03168151811061045157610451610c3f565b6020026020010181905250808061046790610c55565b9150506103b0565b509392505050565b600061048b836001600160a01b0316610568565b825190915015610198576104a86001600160a01b0382168361060e565b5092915050565b6060816001600160a01b031667ffffffffffffffff8111156104d3576104d3610b0f565b6040519080825280602002602001820160405280156104fc578160200160208202803683370190505b50905060005b826001600160a01b0316816001600160a01b03161015610562578082826001600160a01b03168151811061053857610538610c3f565b6001600160a01b03909216602092830291909101909101528061055a81610c55565b915050610502565b50919050565b6000763d602d80600a3d3981f3363d3d373d3d3d363d730000008260601b60e81c176000526e5af43d82803e903d91602b57fd5bf38260781b17602052603760096000f090506001600160a01b0381166106095760405162461bcd60e51b815260206004820152601660248201527f455243313136373a20637265617465206661696c65640000000000000000000060448201526064015b60405180910390fd5b919050565b60606101d7838360006040518060400160405280601e81526020017f416464726573733a206c6f772d6c6576656c2063616c6c206661696c656400008152506060824710156106c55760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610600565b600080866001600160a01b031685876040516106e19190610c7b565b60006040518083038185875af1925050503d806000811461071e576040519150601f19603f3d011682016040523d82523d6000602084013e610723565b606091505b509150915061073487838387610741565b925050505b949350505050565b606083156107b05782516000036107a9576001600160a01b0385163b6107a95760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610600565b5081610739565b61073983838151156107c55781518083602001fd5b8060405162461bcd60e51b81526004016106009190610c97565b60405180606001604052806003906020820280368337509192915050565b60006020828403121561080f57600080fd5b81356001600160e01b0319811681146101d757600080fd5b60608101818360005b600381101561085257815160ff16835260209283019290910190600101610830565b50505092915050565b80356001600160a01b038116811461060957600080fd5b60006060828403121561056257600080fd5b6000806040838503121561089757600080fd5b6108a08361085b565b9150602083013567ffffffffffffffff8111156108bc57600080fd5b6108c885828601610872565b9150509250929050565b634e487b7160e01b600052602160045260246000fd5b600081516003811061090a57634e487b7160e01b600052602160045260246000fd5b8352506020818101516001600160a01b0390811691840191909152604080830151821690840152606080830151909116908301526080908101519082015260a00190565b6020808252825182820181905260009190848201906040850190845b8181101561098b5761097d8385516108e8565b93850193925060010161096a565b50909695505050505050565b6000806000606084860312156109ac57600080fd5b6109b58461085b565b9250602084013561ffff811681146109cc57600080fd5b9150604084013567ffffffffffffffff8111156109e857600080fd5b6109f486828701610872565b9150509250925092565b60005b83811015610a19578181015183820152602001610a01565b50506000910152565b60008151808452610a3a8160208601602086016109fe565b601f01601f19169290920160200192915050565b805160408084528151908401819052600091602091908201906060860190845b81811015610a935783516001600160a01b031683529284019291840191600101610a6e565b50508483015186820387850152805180835290840192506000918401905b80831015610ad657610ac48285516108e8565b91508484019350600183019250610ab1565b509695505050505050565b604081526000610af46040830185610a22565b8281036020840152610b068185610a4e565b95945050505050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215610b3857600080fd5b610b418361085b565b9150602083013567ffffffffffffffff80821115610b5e57600080fd5b818501915085601f830112610b7257600080fd5b813581811115610b8457610b84610b0f565b604051601f8201601f19908116603f01168101908382118183101715610bac57610bac610b0f565b81604052828152886020848701011115610bc557600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6001600160a01b03831681526040602082015260006107396040830184610a4e565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b038281168282160390808211156104a8576104a8610c09565b634e487b7160e01b600052603260045260246000fd5b60006001600160a01b03808316818103610c7157610c71610c09565b6001019392505050565b60008251610c8d8184602087016109fe565b9190910192915050565b6020815260006101d76020830184610a2256fea164736f6c6343000811000a", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/src/mocks/plugin/PluginCloneableSetupMock.sol/PluginCloneableSetupMockBuild2.dbg.json b/contracts/artifacts/src/mocks/plugin/PluginCloneableSetupMock.sol/PluginCloneableSetupMockBuild2.dbg.json new file mode 100644 index 00000000..930fbb1d --- /dev/null +++ b/contracts/artifacts/src/mocks/plugin/PluginCloneableSetupMock.sol/PluginCloneableSetupMockBuild2.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/9ac591806bb2e846e5a60f79d635058e.json" +} diff --git a/contracts/artifacts/src/mocks/plugin/PluginCloneableSetupMock.sol/PluginCloneableSetupMockBuild2.json b/contracts/artifacts/src/mocks/plugin/PluginCloneableSetupMock.sol/PluginCloneableSetupMockBuild2.json new file mode 100644 index 00000000..6b422dc5 --- /dev/null +++ b/contracts/artifacts/src/mocks/plugin/PluginCloneableSetupMock.sol/PluginCloneableSetupMockBuild2.json @@ -0,0 +1,297 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "PluginCloneableSetupMockBuild2", + "sourceName": "src/mocks/plugin/PluginCloneableSetupMock.sol", + "abi": [ + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "ConflictingValues", + "type": "error" + }, + { + "inputs": [], + "name": "NonUpgradeablePlugin", + "type": "error" + }, + { + "inputs": [], + "name": "implementation", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_dao", + "type": "address" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "name": "prepareInstallation", + "outputs": [ + { + "internalType": "address", + "name": "plugin", + "type": "address" + }, + { + "components": [ + { + "internalType": "address[]", + "name": "helpers", + "type": "address[]" + }, + { + "components": [ + { + "internalType": "enum PermissionLib.Operation", + "name": "operation", + "type": "uint8" + }, + { + "internalType": "address", + "name": "where", + "type": "address" + }, + { + "internalType": "address", + "name": "who", + "type": "address" + }, + { + "internalType": "address", + "name": "condition", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "permissionId", + "type": "bytes32" + } + ], + "internalType": "struct PermissionLib.MultiTargetPermission[]", + "name": "permissions", + "type": "tuple[]" + } + ], + "internalType": "struct IPluginSetup.PreparedSetupData", + "name": "preparedSetupData", + "type": "tuple" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_dao", + "type": "address" + }, + { + "components": [ + { + "internalType": "address", + "name": "plugin", + "type": "address" + }, + { + "internalType": "address[]", + "name": "currentHelpers", + "type": "address[]" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "internalType": "struct IPluginSetup.SetupPayload", + "name": "_payload", + "type": "tuple" + } + ], + "name": "prepareUninstallation", + "outputs": [ + { + "components": [ + { + "internalType": "enum PermissionLib.Operation", + "name": "operation", + "type": "uint8" + }, + { + "internalType": "address", + "name": "where", + "type": "address" + }, + { + "internalType": "address", + "name": "who", + "type": "address" + }, + { + "internalType": "address", + "name": "condition", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "permissionId", + "type": "bytes32" + } + ], + "internalType": "struct PermissionLib.MultiTargetPermission[]", + "name": "permissions", + "type": "tuple[]" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_dao", + "type": "address" + }, + { + "internalType": "uint16", + "name": "_fromBuild", + "type": "uint16" + }, + { + "components": [ + { + "internalType": "address", + "name": "plugin", + "type": "address" + }, + { + "internalType": "address[]", + "name": "currentHelpers", + "type": "address[]" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "internalType": "struct IPluginSetup.SetupPayload", + "name": "_payload", + "type": "tuple" + } + ], + "name": "prepareUpdate", + "outputs": [ + { + "internalType": "bytes", + "name": "", + "type": "bytes" + }, + { + "components": [ + { + "internalType": "address[]", + "name": "helpers", + "type": "address[]" + }, + { + "components": [ + { + "internalType": "enum PermissionLib.Operation", + "name": "operation", + "type": "uint8" + }, + { + "internalType": "address", + "name": "where", + "type": "address" + }, + { + "internalType": "address", + "name": "who", + "type": "address" + }, + { + "internalType": "address", + "name": "condition", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "permissionId", + "type": "bytes32" + } + ], + "internalType": "struct PermissionLib.MultiTargetPermission[]", + "name": "permissions", + "type": "tuple[]" + } + ], + "internalType": "struct IPluginSetup.PreparedSetupData", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "protocolVersion", + "outputs": [ + { + "internalType": "uint8[3]", + "name": "", + "type": "uint8[3]" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "_interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x60a060405234801561001057600080fd5b5060405161001d9061004b565b604051809103906000f080158015610039573d6000803e3d6000fd5b506001600160a01b0316608052610058565b61066680610d3183390190565b608051610cb86100796000396000818160c101526102980152610cb86000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c80639cb0a124116100505780639cb0a124146100eb578063a8a9c29e1461010b578063f10832f11461012c57600080fd5b806301ffc9a7146100775780632ae9c6001461009f5780635c60da1b146100b4575b600080fd5b61008a6100853660046107fe565b61014d565b60405190151581526020015b60405180910390f35b6100a761019e565b6040516100969190610828565b6040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152602001610096565b6100fe6100f9366004610885565b6101c8565b604051610096919061094f565b61011e610119366004610998565b6101df565b604051610096929190610ae2565b61013f61013a366004610b26565b610217565b604051610096929190610be8565b60006001600160e01b0319821663099718b560e41b148061017d57506001600160e01b03198216621574e360e91b145b8061019857506301ffc9a760e01b6001600160e01b03198316145b92915050565b6101a66107e0565b5060408051606081018252600181526004602082015260009181019190915290565b60606101d86000600260016102f3565b9392505050565b60606101fe604051806040016040528060608152602001606081525090565b60405163a112810160e01b815260040160405180910390fd5b6000610236604051806040016040528060608152602001606081525090565b6040516001600160a01b038516602482015260009060440160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663189acdbd60e31b17905290506102c9816102ba7f000000000000000000000000000000000000000000000000000000000000000090565b6001600160a01b031690610478565b92506102d560026104b0565b82526102e460006002816102f3565b60208301525090939092509050565b6060826001600160a01b0316846001600160a01b0316111561032857604051633a4013cd60e21b815260040160405180910390fd5b6103328484610c20565b6001600160a01b031667ffffffffffffffff81111561035357610353610b10565b6040519080825280602002602001820160405280156103ac57816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282526000199092019101816103715790505b509050835b836001600160a01b0316816001600160a01b03161015610470576040518060a001604052808460028111156103e8576103e86108d3565b81526001600160a01b038316602082018190526040820152600060608201527fa280eec51ab8e1bc4b6b0c1b7f1bde785761b787a49db404e3e9338ed9b016ef608090910152826104398784610c20565b6001600160a01b03168151811061045257610452610c40565b6020026020010181905250808061046890610c56565b9150506103b1565b509392505050565b600061048c836001600160a01b0316610569565b825190915015610198576104a96001600160a01b0382168361060f565b5092915050565b6060816001600160a01b031667ffffffffffffffff8111156104d4576104d4610b10565b6040519080825280602002602001820160405280156104fd578160200160208202803683370190505b50905060005b826001600160a01b0316816001600160a01b03161015610563578082826001600160a01b03168151811061053957610539610c40565b6001600160a01b03909216602092830291909101909101528061055b81610c56565b915050610503565b50919050565b6000763d602d80600a3d3981f3363d3d373d3d3d363d730000008260601b60e81c176000526e5af43d82803e903d91602b57fd5bf38260781b17602052603760096000f090506001600160a01b03811661060a5760405162461bcd60e51b815260206004820152601660248201527f455243313136373a20637265617465206661696c65640000000000000000000060448201526064015b60405180910390fd5b919050565b60606101d8838360006040518060400160405280601e81526020017f416464726573733a206c6f772d6c6576656c2063616c6c206661696c656400008152506060824710156106c65760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610601565b600080866001600160a01b031685876040516106e29190610c7c565b60006040518083038185875af1925050503d806000811461071f576040519150601f19603f3d011682016040523d82523d6000602084013e610724565b606091505b509150915061073587838387610742565b925050505b949350505050565b606083156107b15782516000036107aa576001600160a01b0385163b6107aa5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610601565b508161073a565b61073a83838151156107c65781518083602001fd5b8060405162461bcd60e51b81526004016106019190610c98565b60405180606001604052806003906020820280368337509192915050565b60006020828403121561081057600080fd5b81356001600160e01b0319811681146101d857600080fd5b60608101818360005b600381101561085357815160ff16835260209283019290910190600101610831565b50505092915050565b80356001600160a01b038116811461060a57600080fd5b60006060828403121561056357600080fd5b6000806040838503121561089857600080fd5b6108a18361085c565b9150602083013567ffffffffffffffff8111156108bd57600080fd5b6108c985828601610873565b9150509250929050565b634e487b7160e01b600052602160045260246000fd5b600081516003811061090b57634e487b7160e01b600052602160045260246000fd5b8352506020818101516001600160a01b0390811691840191909152604080830151821690840152606080830151909116908301526080908101519082015260a00190565b6020808252825182820181905260009190848201906040850190845b8181101561098c5761097e8385516108e9565b93850193925060010161096b565b50909695505050505050565b6000806000606084860312156109ad57600080fd5b6109b68461085c565b9250602084013561ffff811681146109cd57600080fd5b9150604084013567ffffffffffffffff8111156109e957600080fd5b6109f586828701610873565b9150509250925092565b60005b83811015610a1a578181015183820152602001610a02565b50506000910152565b60008151808452610a3b8160208601602086016109ff565b601f01601f19169290920160200192915050565b805160408084528151908401819052600091602091908201906060860190845b81811015610a945783516001600160a01b031683529284019291840191600101610a6f565b50508483015186820387850152805180835290840192506000918401905b80831015610ad757610ac58285516108e9565b91508484019350600183019250610ab2565b509695505050505050565b604081526000610af56040830185610a23565b8281036020840152610b078185610a4f565b95945050505050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215610b3957600080fd5b610b428361085c565b9150602083013567ffffffffffffffff80821115610b5f57600080fd5b818501915085601f830112610b7357600080fd5b813581811115610b8557610b85610b10565b604051601f8201601f19908116603f01168101908382118183101715610bad57610bad610b10565b81604052828152886020848701011115610bc657600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6001600160a01b038316815260406020820152600061073a6040830184610a4f565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b038281168282160390808211156104a9576104a9610c0a565b634e487b7160e01b600052603260045260246000fd5b60006001600160a01b03808316818103610c7257610c72610c0a565b6001019392505050565b60008251610c8e8184602087016109ff565b9190910192915050565b6020815260006101d86020830184610a2356fea164736f6c6343000811000a608060405234801561001057600080fd5b5061001961001e565b6100dd565b600054610100900460ff161561008a5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116146100db576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b61057a806100ec6000396000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c80636accab8c11610076578063c4d66de81161005b578063c4d66de814610145578063d4b8399214610158578063efe51cca1461016b57600080fd5b80636accab8c14610119578063776d1a011461013057600080fd5b806301ffc9a7146100a85780632ae9c600146100d05780634162169f146100e557806341de68301461010a575b600080fd5b6100bb6100b63660046104ae565b610174565b60405190151581526020015b60405180910390f35b6100d86101c5565b6040516100c791906104df565b6065546001600160a01b03165b6040516001600160a01b0390911681526020016100c7565b60016040516100c79190610513565b61012260985481565b6040519081526020016100c7565b61014361013e366004610550565b6101ef565b005b610143610153366004610550565b61024e565b6097546100f2906001600160a01b031681565b61012260995481565b60006001600160e01b0319821663041de68360e41b14806101a457506001600160e01b03198216621574e360e91b145b806101bf57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6101cd610490565b5060408051606081018252600181526004602082015260009181019190915290565b609780546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d690600090a35050565b600054610100900460ff161580801561026e5750600054600160ff909116105b806102885750303b158015610288575060005460ff166001145b6102ff5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b6000805460ff191660011790558015610322576000805461ff0019166101001790555b61032b8261037f565b60016098556002609955801561037b576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b600054610100900460ff166103ea5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016102f6565b6103f3816103f6565b50565b600054610100900460ff166104615760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016102f6565b6065805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b60405180606001604052806003906020820280368337509192915050565b6000602082840312156104c057600080fd5b81356001600160e01b0319811681146104d857600080fd5b9392505050565b60608101818360005b600381101561050a57815160ff168352602092830192909101906001016104e8565b50505092915050565b602081016003831061053557634e487b7160e01b600052602160045260246000fd5b91905290565b6001600160a01b03811681146103f357600080fd5b60006020828403121561056257600080fd5b81356104d88161053b56fea164736f6c6343000811000a", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100725760003560e01c80639cb0a124116100505780639cb0a124146100eb578063a8a9c29e1461010b578063f10832f11461012c57600080fd5b806301ffc9a7146100775780632ae9c6001461009f5780635c60da1b146100b4575b600080fd5b61008a6100853660046107fe565b61014d565b60405190151581526020015b60405180910390f35b6100a761019e565b6040516100969190610828565b6040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152602001610096565b6100fe6100f9366004610885565b6101c8565b604051610096919061094f565b61011e610119366004610998565b6101df565b604051610096929190610ae2565b61013f61013a366004610b26565b610217565b604051610096929190610be8565b60006001600160e01b0319821663099718b560e41b148061017d57506001600160e01b03198216621574e360e91b145b8061019857506301ffc9a760e01b6001600160e01b03198316145b92915050565b6101a66107e0565b5060408051606081018252600181526004602082015260009181019190915290565b60606101d86000600260016102f3565b9392505050565b60606101fe604051806040016040528060608152602001606081525090565b60405163a112810160e01b815260040160405180910390fd5b6000610236604051806040016040528060608152602001606081525090565b6040516001600160a01b038516602482015260009060440160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663189acdbd60e31b17905290506102c9816102ba7f000000000000000000000000000000000000000000000000000000000000000090565b6001600160a01b031690610478565b92506102d560026104b0565b82526102e460006002816102f3565b60208301525090939092509050565b6060826001600160a01b0316846001600160a01b0316111561032857604051633a4013cd60e21b815260040160405180910390fd5b6103328484610c20565b6001600160a01b031667ffffffffffffffff81111561035357610353610b10565b6040519080825280602002602001820160405280156103ac57816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282526000199092019101816103715790505b509050835b836001600160a01b0316816001600160a01b03161015610470576040518060a001604052808460028111156103e8576103e86108d3565b81526001600160a01b038316602082018190526040820152600060608201527fa280eec51ab8e1bc4b6b0c1b7f1bde785761b787a49db404e3e9338ed9b016ef608090910152826104398784610c20565b6001600160a01b03168151811061045257610452610c40565b6020026020010181905250808061046890610c56565b9150506103b1565b509392505050565b600061048c836001600160a01b0316610569565b825190915015610198576104a96001600160a01b0382168361060f565b5092915050565b6060816001600160a01b031667ffffffffffffffff8111156104d4576104d4610b10565b6040519080825280602002602001820160405280156104fd578160200160208202803683370190505b50905060005b826001600160a01b0316816001600160a01b03161015610563578082826001600160a01b03168151811061053957610539610c40565b6001600160a01b03909216602092830291909101909101528061055b81610c56565b915050610503565b50919050565b6000763d602d80600a3d3981f3363d3d373d3d3d363d730000008260601b60e81c176000526e5af43d82803e903d91602b57fd5bf38260781b17602052603760096000f090506001600160a01b03811661060a5760405162461bcd60e51b815260206004820152601660248201527f455243313136373a20637265617465206661696c65640000000000000000000060448201526064015b60405180910390fd5b919050565b60606101d8838360006040518060400160405280601e81526020017f416464726573733a206c6f772d6c6576656c2063616c6c206661696c656400008152506060824710156106c65760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610601565b600080866001600160a01b031685876040516106e29190610c7c565b60006040518083038185875af1925050503d806000811461071f576040519150601f19603f3d011682016040523d82523d6000602084013e610724565b606091505b509150915061073587838387610742565b925050505b949350505050565b606083156107b15782516000036107aa576001600160a01b0385163b6107aa5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610601565b508161073a565b61073a83838151156107c65781518083602001fd5b8060405162461bcd60e51b81526004016106019190610c98565b60405180606001604052806003906020820280368337509192915050565b60006020828403121561081057600080fd5b81356001600160e01b0319811681146101d857600080fd5b60608101818360005b600381101561085357815160ff16835260209283019290910190600101610831565b50505092915050565b80356001600160a01b038116811461060a57600080fd5b60006060828403121561056357600080fd5b6000806040838503121561089857600080fd5b6108a18361085c565b9150602083013567ffffffffffffffff8111156108bd57600080fd5b6108c985828601610873565b9150509250929050565b634e487b7160e01b600052602160045260246000fd5b600081516003811061090b57634e487b7160e01b600052602160045260246000fd5b8352506020818101516001600160a01b0390811691840191909152604080830151821690840152606080830151909116908301526080908101519082015260a00190565b6020808252825182820181905260009190848201906040850190845b8181101561098c5761097e8385516108e9565b93850193925060010161096b565b50909695505050505050565b6000806000606084860312156109ad57600080fd5b6109b68461085c565b9250602084013561ffff811681146109cd57600080fd5b9150604084013567ffffffffffffffff8111156109e957600080fd5b6109f586828701610873565b9150509250925092565b60005b83811015610a1a578181015183820152602001610a02565b50506000910152565b60008151808452610a3b8160208601602086016109ff565b601f01601f19169290920160200192915050565b805160408084528151908401819052600091602091908201906060860190845b81811015610a945783516001600160a01b031683529284019291840191600101610a6f565b50508483015186820387850152805180835290840192506000918401905b80831015610ad757610ac58285516108e9565b91508484019350600183019250610ab2565b509695505050505050565b604081526000610af56040830185610a23565b8281036020840152610b078185610a4f565b95945050505050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215610b3957600080fd5b610b428361085c565b9150602083013567ffffffffffffffff80821115610b5f57600080fd5b818501915085601f830112610b7357600080fd5b813581811115610b8557610b85610b10565b604051601f8201601f19908116603f01168101908382118183101715610bad57610bad610b10565b81604052828152886020848701011115610bc657600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6001600160a01b038316815260406020820152600061073a6040830184610a4f565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b038281168282160390808211156104a9576104a9610c0a565b634e487b7160e01b600052603260045260246000fd5b60006001600160a01b03808316818103610c7257610c72610c0a565b6001019392505050565b60008251610c8e8184602087016109ff565b9190910192915050565b6020815260006101d86020830184610a2356fea164736f6c6343000811000a", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/src/mocks/plugin/PluginMock.sol/PluginMockBuild1.dbg.json b/contracts/artifacts/src/mocks/plugin/PluginMock.sol/PluginMockBuild1.dbg.json new file mode 100644 index 00000000..930fbb1d --- /dev/null +++ b/contracts/artifacts/src/mocks/plugin/PluginMock.sol/PluginMockBuild1.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/9ac591806bb2e846e5a60f79d635058e.json" +} diff --git a/contracts/artifacts/src/mocks/plugin/PluginMock.sol/PluginMockBuild1.json b/contracts/artifacts/src/mocks/plugin/PluginMock.sol/PluginMockBuild1.json new file mode 100644 index 00000000..dc1476e8 --- /dev/null +++ b/contracts/artifacts/src/mocks/plugin/PluginMock.sol/PluginMockBuild1.json @@ -0,0 +1,138 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "PluginMockBuild1", + "sourceName": "src/mocks/plugin/PluginMock.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "contract IDAO", + "name": "_dao", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousTarget", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newTarget", + "type": "address" + } + ], + "name": "TargetSet", + "type": "event" + }, + { + "inputs": [], + "name": "dao", + "outputs": [ + { + "internalType": "contract IDAO", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "pluginType", + "outputs": [ + { + "internalType": "enum IPlugin.PluginType", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "protocolVersion", + "outputs": [ + { + "internalType": "uint8[3]", + "name": "", + "type": "uint8[3]" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_target", + "type": "address" + } + ], + "name": "setTarget", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "state1", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "_interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "target", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x60a060405234801561001057600080fd5b5060405161039938038061039983398101604081905261002f91610044565b6001600160a01b031660805260018055610074565b60006020828403121561005657600080fd5b81516001600160a01b038116811461006d57600080fd5b9392505050565b60805161030b61008e600039600060c1015261030b6000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806341de68301161005b57806341de6830146100f95780636accab8c14610108578063776d1a011461011f578063d4b839921461013457600080fd5b806301ffc9a7146100825780632ae9c600146100aa5780634162169f146100bf575b600080fd5b610095610090366004610248565b610147565b60405190151581526020015b60405180910390f35b6100b2610198565b6040516100a19190610279565b7f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020016100a1565b60026040516100a191906102ad565b61011160015481565b6040519081526020016100a1565b61013261012d3660046102d5565b6101c2565b005b6000546100e1906001600160a01b031681565b60006001600160e01b0319821663041de68360e41b148061017757506001600160e01b03198216621574e360e91b145b8061019257506301ffc9a760e01b6001600160e01b03198316145b92915050565b6101a061022a565b5060408051606081018252600181526004602082015260009181019190915290565b600080546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d69190a35050565b60405180606001604052806003906020820280368337509192915050565b60006020828403121561025a57600080fd5b81356001600160e01b03198116811461027257600080fd5b9392505050565b60608101818360005b60038110156102a457815160ff16835260209283019290910190600101610282565b50505092915050565b60208101600383106102cf57634e487b7160e01b600052602160045260246000fd5b91905290565b6000602082840312156102e757600080fd5b81356001600160a01b038116811461027257600080fdfea164736f6c6343000811000a", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061007d5760003560e01c806341de68301161005b57806341de6830146100f95780636accab8c14610108578063776d1a011461011f578063d4b839921461013457600080fd5b806301ffc9a7146100825780632ae9c600146100aa5780634162169f146100bf575b600080fd5b610095610090366004610248565b610147565b60405190151581526020015b60405180910390f35b6100b2610198565b6040516100a19190610279565b7f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020016100a1565b60026040516100a191906102ad565b61011160015481565b6040519081526020016100a1565b61013261012d3660046102d5565b6101c2565b005b6000546100e1906001600160a01b031681565b60006001600160e01b0319821663041de68360e41b148061017757506001600160e01b03198216621574e360e91b145b8061019257506301ffc9a760e01b6001600160e01b03198316145b92915050565b6101a061022a565b5060408051606081018252600181526004602082015260009181019190915290565b600080546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d69190a35050565b60405180606001604052806003906020820280368337509192915050565b60006020828403121561025a57600080fd5b81356001600160e01b03198116811461027257600080fd5b9392505050565b60608101818360005b60038110156102a457815160ff16835260209283019290910190600101610282565b50505092915050565b60208101600383106102cf57634e487b7160e01b600052602160045260246000fd5b91905290565b6000602082840312156102e757600080fd5b81356001600160a01b038116811461027257600080fdfea164736f6c6343000811000a", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/src/mocks/plugin/PluginSetupMock.sol/PluginSetupMockBuild1.dbg.json b/contracts/artifacts/src/mocks/plugin/PluginSetupMock.sol/PluginSetupMockBuild1.dbg.json new file mode 100644 index 00000000..930fbb1d --- /dev/null +++ b/contracts/artifacts/src/mocks/plugin/PluginSetupMock.sol/PluginSetupMockBuild1.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/9ac591806bb2e846e5a60f79d635058e.json" +} diff --git a/contracts/artifacts/src/mocks/plugin/PluginSetupMock.sol/PluginSetupMockBuild1.json b/contracts/artifacts/src/mocks/plugin/PluginSetupMock.sol/PluginSetupMockBuild1.json new file mode 100644 index 00000000..431bed27 --- /dev/null +++ b/contracts/artifacts/src/mocks/plugin/PluginSetupMock.sol/PluginSetupMockBuild1.json @@ -0,0 +1,297 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "PluginSetupMockBuild1", + "sourceName": "src/mocks/plugin/PluginSetupMock.sol", + "abi": [ + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "ConflictingValues", + "type": "error" + }, + { + "inputs": [], + "name": "NonUpgradeablePlugin", + "type": "error" + }, + { + "inputs": [], + "name": "implementation", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_dao", + "type": "address" + }, + { + "internalType": "bytes", + "name": "_data", + "type": "bytes" + } + ], + "name": "prepareInstallation", + "outputs": [ + { + "internalType": "address", + "name": "plugin", + "type": "address" + }, + { + "components": [ + { + "internalType": "address[]", + "name": "helpers", + "type": "address[]" + }, + { + "components": [ + { + "internalType": "enum PermissionLib.Operation", + "name": "operation", + "type": "uint8" + }, + { + "internalType": "address", + "name": "where", + "type": "address" + }, + { + "internalType": "address", + "name": "who", + "type": "address" + }, + { + "internalType": "address", + "name": "condition", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "permissionId", + "type": "bytes32" + } + ], + "internalType": "struct PermissionLib.MultiTargetPermission[]", + "name": "permissions", + "type": "tuple[]" + } + ], + "internalType": "struct IPluginSetup.PreparedSetupData", + "name": "preparedSetupData", + "type": "tuple" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_dao", + "type": "address" + }, + { + "components": [ + { + "internalType": "address", + "name": "plugin", + "type": "address" + }, + { + "internalType": "address[]", + "name": "currentHelpers", + "type": "address[]" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "internalType": "struct IPluginSetup.SetupPayload", + "name": "_payload", + "type": "tuple" + } + ], + "name": "prepareUninstallation", + "outputs": [ + { + "components": [ + { + "internalType": "enum PermissionLib.Operation", + "name": "operation", + "type": "uint8" + }, + { + "internalType": "address", + "name": "where", + "type": "address" + }, + { + "internalType": "address", + "name": "who", + "type": "address" + }, + { + "internalType": "address", + "name": "condition", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "permissionId", + "type": "bytes32" + } + ], + "internalType": "struct PermissionLib.MultiTargetPermission[]", + "name": "permissions", + "type": "tuple[]" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_dao", + "type": "address" + }, + { + "internalType": "uint16", + "name": "_fromBuild", + "type": "uint16" + }, + { + "components": [ + { + "internalType": "address", + "name": "plugin", + "type": "address" + }, + { + "internalType": "address[]", + "name": "currentHelpers", + "type": "address[]" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "internalType": "struct IPluginSetup.SetupPayload", + "name": "_payload", + "type": "tuple" + } + ], + "name": "prepareUpdate", + "outputs": [ + { + "internalType": "bytes", + "name": "", + "type": "bytes" + }, + { + "components": [ + { + "internalType": "address[]", + "name": "helpers", + "type": "address[]" + }, + { + "components": [ + { + "internalType": "enum PermissionLib.Operation", + "name": "operation", + "type": "uint8" + }, + { + "internalType": "address", + "name": "where", + "type": "address" + }, + { + "internalType": "address", + "name": "who", + "type": "address" + }, + { + "internalType": "address", + "name": "condition", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "permissionId", + "type": "bytes32" + } + ], + "internalType": "struct PermissionLib.MultiTargetPermission[]", + "name": "permissions", + "type": "tuple[]" + } + ], + "internalType": "struct IPluginSetup.PreparedSetupData", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "protocolVersion", + "outputs": [ + { + "internalType": "uint8[3]", + "name": "", + "type": "uint8[3]" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "_interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x60a060405234801561001057600080fd5b50600060405161001f9061005d565b6001600160a01b039091168152602001604051809103906000f08015801561004b573d6000803e3d6000fd5b506001600160a01b031660805261006a565b61039980610da483390190565b608051610d20610084600039600060c10152610d206000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c80639cb0a124116100505780639cb0a124146100eb578063a8a9c29e1461010b578063f10832f11461012c57600080fd5b806301ffc9a7146100775780632ae9c6001461009f5780635c60da1b146100b4575b600080fd5b61008a610085366004610501565b61014d565b60405190151581526020015b60405180910390f35b6100a761019e565b604051610096919061052b565b6040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152602001610096565b6100fe6100f936600461058d565b6101c8565b6040516100969190610657565b61011e6101193660046106a0565b6101de565b60405161009692919061079a565b61013f61013a366004610815565b610216565b6040516100969291906108d7565b60006001600160e01b0319821663099718b560e41b148061017d57506001600160e01b03198216621574e360e91b145b8061019857506301ffc9a760e01b6001600160e01b03198316145b92915050565b6101a66104d6565b5060408051606081018252600181526004602082015260009181019190915290565b60606101d76000600180610298565b9392505050565b60606101fd604051806040016040528060608152602001606081525090565b60405163a112810160e01b815260040160405180910390fd5b6000610235604051806040016040528060608152602001606081525090565b83604051610242906104f4565b6001600160a01b039091168152602001604051809103906000f08015801561026e573d6000803e3d6000fd5b50915061027b600161041d565b815261028a6000600181610298565b602082015290939092509050565b6060826001600160a01b0316846001600160a01b031611156102cd57604051633a4013cd60e21b815260040160405180910390fd5b6102d78484610917565b6001600160a01b031667ffffffffffffffff8111156102f8576102f86107ff565b60405190808252806020026020018201604052801561035157816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282526000199092019101816103165790505b509050835b836001600160a01b0316816001600160a01b03161015610415576040518060a0016040528084600281111561038d5761038d6105db565b81526001600160a01b038316602082018190526040820152600060608201527fa280eec51ab8e1bc4b6b0c1b7f1bde785761b787a49db404e3e9338ed9b016ef608090910152826103de8784610917565b6001600160a01b0316815181106103f7576103f761093e565b6020026020010181905250808061040d90610954565b915050610356565b509392505050565b6060816001600160a01b031667ffffffffffffffff811115610441576104416107ff565b60405190808252806020026020018201604052801561046a578160200160208202803683370190505b50905060005b826001600160a01b0316816001600160a01b031610156104d0578082826001600160a01b0316815181106104a6576104a661093e565b6001600160a01b0390921660209283029190910190910152806104c881610954565b915050610470565b50919050565b60405180606001604052806003906020820280368337509192915050565b6103998061097b83390190565b60006020828403121561051357600080fd5b81356001600160e01b0319811681146101d757600080fd5b60608101818360005b600381101561055657815160ff16835260209283019290910190600101610534565b50505092915050565b80356001600160a01b038116811461057657600080fd5b919050565b6000606082840312156104d057600080fd5b600080604083850312156105a057600080fd5b6105a98361055f565b9150602083013567ffffffffffffffff8111156105c557600080fd5b6105d18582860161057b565b9150509250929050565b634e487b7160e01b600052602160045260246000fd5b600081516003811061061357634e487b7160e01b600052602160045260246000fd5b8352506020818101516001600160a01b0390811691840191909152604080830151821690840152606080830151909116908301526080908101519082015260a00190565b6020808252825182820181905260009190848201906040850190845b81811015610694576106868385516105f1565b938501939250600101610673565b50909695505050505050565b6000806000606084860312156106b557600080fd5b6106be8461055f565b9250602084013561ffff811681146106d557600080fd5b9150604084013567ffffffffffffffff8111156106f157600080fd5b6106fd8682870161057b565b9150509250925092565b805160408084528151908401819052600091602091908201906060860190845b8181101561074c5783516001600160a01b031683529284019291840191600101610727565b50508483015186820387850152805180835290840192506000918401905b8083101561078f5761077d8285516105f1565b9150848401935060018301925061076a565b509695505050505050565b604081526000835180604084015260005b818110156107c857602081870181015160608684010152016107ab565b50600060608285010152601f19601f8201168301905060608382030160208401526107f66060820185610707565b95945050505050565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561082857600080fd5b6108318361055f565b9150602083013567ffffffffffffffff8082111561084e57600080fd5b818501915085601f83011261086257600080fd5b813581811115610874576108746107ff565b604051601f8201601f19908116603f0116810190838211818310171561089c5761089c6107ff565b816040528281528860208487010111156108b557600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6001600160a01b03831681526040602082015260006108f96040830184610707565b949350505050565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0382811682821603908082111561093757610937610901565b5092915050565b634e487b7160e01b600052603260045260246000fd5b60006001600160a01b0380831681810361097057610970610901565b600101939250505056fe60a060405234801561001057600080fd5b5060405161039938038061039983398101604081905261002f91610044565b6001600160a01b031660805260018055610074565b60006020828403121561005657600080fd5b81516001600160a01b038116811461006d57600080fd5b9392505050565b60805161030b61008e600039600060c1015261030b6000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806341de68301161005b57806341de6830146100f95780636accab8c14610108578063776d1a011461011f578063d4b839921461013457600080fd5b806301ffc9a7146100825780632ae9c600146100aa5780634162169f146100bf575b600080fd5b610095610090366004610248565b610147565b60405190151581526020015b60405180910390f35b6100b2610198565b6040516100a19190610279565b7f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020016100a1565b60026040516100a191906102ad565b61011160015481565b6040519081526020016100a1565b61013261012d3660046102d5565b6101c2565b005b6000546100e1906001600160a01b031681565b60006001600160e01b0319821663041de68360e41b148061017757506001600160e01b03198216621574e360e91b145b8061019257506301ffc9a760e01b6001600160e01b03198316145b92915050565b6101a061022a565b5060408051606081018252600181526004602082015260009181019190915290565b600080546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d69190a35050565b60405180606001604052806003906020820280368337509192915050565b60006020828403121561025a57600080fd5b81356001600160e01b03198116811461027257600080fd5b9392505050565b60608101818360005b60038110156102a457815160ff16835260209283019290910190600101610282565b50505092915050565b60208101600383106102cf57634e487b7160e01b600052602160045260246000fd5b91905290565b6000602082840312156102e757600080fd5b81356001600160a01b038116811461027257600080fdfea164736f6c6343000811000aa164736f6c6343000811000a60a060405234801561001057600080fd5b5060405161039938038061039983398101604081905261002f91610044565b6001600160a01b031660805260018055610074565b60006020828403121561005657600080fd5b81516001600160a01b038116811461006d57600080fd5b9392505050565b60805161030b61008e600039600060c1015261030b6000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806341de68301161005b57806341de6830146100f95780636accab8c14610108578063776d1a011461011f578063d4b839921461013457600080fd5b806301ffc9a7146100825780632ae9c600146100aa5780634162169f146100bf575b600080fd5b610095610090366004610248565b610147565b60405190151581526020015b60405180910390f35b6100b2610198565b6040516100a19190610279565b7f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020016100a1565b60026040516100a191906102ad565b61011160015481565b6040519081526020016100a1565b61013261012d3660046102d5565b6101c2565b005b6000546100e1906001600160a01b031681565b60006001600160e01b0319821663041de68360e41b148061017757506001600160e01b03198216621574e360e91b145b8061019257506301ffc9a760e01b6001600160e01b03198316145b92915050565b6101a061022a565b5060408051606081018252600181526004602082015260009181019190915290565b600080546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d69190a35050565b60405180606001604052806003906020820280368337509192915050565b60006020828403121561025a57600080fd5b81356001600160e01b03198116811461027257600080fd5b9392505050565b60608101818360005b60038110156102a457815160ff16835260209283019290910190600101610282565b50505092915050565b60208101600383106102cf57634e487b7160e01b600052602160045260246000fd5b91905290565b6000602082840312156102e757600080fd5b81356001600160a01b038116811461027257600080fdfea164736f6c6343000811000a", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100725760003560e01c80639cb0a124116100505780639cb0a124146100eb578063a8a9c29e1461010b578063f10832f11461012c57600080fd5b806301ffc9a7146100775780632ae9c6001461009f5780635c60da1b146100b4575b600080fd5b61008a610085366004610501565b61014d565b60405190151581526020015b60405180910390f35b6100a761019e565b604051610096919061052b565b6040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152602001610096565b6100fe6100f936600461058d565b6101c8565b6040516100969190610657565b61011e6101193660046106a0565b6101de565b60405161009692919061079a565b61013f61013a366004610815565b610216565b6040516100969291906108d7565b60006001600160e01b0319821663099718b560e41b148061017d57506001600160e01b03198216621574e360e91b145b8061019857506301ffc9a760e01b6001600160e01b03198316145b92915050565b6101a66104d6565b5060408051606081018252600181526004602082015260009181019190915290565b60606101d76000600180610298565b9392505050565b60606101fd604051806040016040528060608152602001606081525090565b60405163a112810160e01b815260040160405180910390fd5b6000610235604051806040016040528060608152602001606081525090565b83604051610242906104f4565b6001600160a01b039091168152602001604051809103906000f08015801561026e573d6000803e3d6000fd5b50915061027b600161041d565b815261028a6000600181610298565b602082015290939092509050565b6060826001600160a01b0316846001600160a01b031611156102cd57604051633a4013cd60e21b815260040160405180910390fd5b6102d78484610917565b6001600160a01b031667ffffffffffffffff8111156102f8576102f86107ff565b60405190808252806020026020018201604052801561035157816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282526000199092019101816103165790505b509050835b836001600160a01b0316816001600160a01b03161015610415576040518060a0016040528084600281111561038d5761038d6105db565b81526001600160a01b038316602082018190526040820152600060608201527fa280eec51ab8e1bc4b6b0c1b7f1bde785761b787a49db404e3e9338ed9b016ef608090910152826103de8784610917565b6001600160a01b0316815181106103f7576103f761093e565b6020026020010181905250808061040d90610954565b915050610356565b509392505050565b6060816001600160a01b031667ffffffffffffffff811115610441576104416107ff565b60405190808252806020026020018201604052801561046a578160200160208202803683370190505b50905060005b826001600160a01b0316816001600160a01b031610156104d0578082826001600160a01b0316815181106104a6576104a661093e565b6001600160a01b0390921660209283029190910190910152806104c881610954565b915050610470565b50919050565b60405180606001604052806003906020820280368337509192915050565b6103998061097b83390190565b60006020828403121561051357600080fd5b81356001600160e01b0319811681146101d757600080fd5b60608101818360005b600381101561055657815160ff16835260209283019290910190600101610534565b50505092915050565b80356001600160a01b038116811461057657600080fd5b919050565b6000606082840312156104d057600080fd5b600080604083850312156105a057600080fd5b6105a98361055f565b9150602083013567ffffffffffffffff8111156105c557600080fd5b6105d18582860161057b565b9150509250929050565b634e487b7160e01b600052602160045260246000fd5b600081516003811061061357634e487b7160e01b600052602160045260246000fd5b8352506020818101516001600160a01b0390811691840191909152604080830151821690840152606080830151909116908301526080908101519082015260a00190565b6020808252825182820181905260009190848201906040850190845b81811015610694576106868385516105f1565b938501939250600101610673565b50909695505050505050565b6000806000606084860312156106b557600080fd5b6106be8461055f565b9250602084013561ffff811681146106d557600080fd5b9150604084013567ffffffffffffffff8111156106f157600080fd5b6106fd8682870161057b565b9150509250925092565b805160408084528151908401819052600091602091908201906060860190845b8181101561074c5783516001600160a01b031683529284019291840191600101610727565b50508483015186820387850152805180835290840192506000918401905b8083101561078f5761077d8285516105f1565b9150848401935060018301925061076a565b509695505050505050565b604081526000835180604084015260005b818110156107c857602081870181015160608684010152016107ab565b50600060608285010152601f19601f8201168301905060608382030160208401526107f66060820185610707565b95945050505050565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561082857600080fd5b6108318361055f565b9150602083013567ffffffffffffffff8082111561084e57600080fd5b818501915085601f83011261086257600080fd5b813581811115610874576108746107ff565b604051601f8201601f19908116603f0116810190838211818310171561089c5761089c6107ff565b816040528281528860208487010111156108b557600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6001600160a01b03831681526040602082015260006108f96040830184610707565b949350505050565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0382811682821603908082111561093757610937610901565b5092915050565b634e487b7160e01b600052603260045260246000fd5b60006001600160a01b0380831681810361097057610970610901565b600101939250505056fe60a060405234801561001057600080fd5b5060405161039938038061039983398101604081905261002f91610044565b6001600160a01b031660805260018055610074565b60006020828403121561005657600080fd5b81516001600160a01b038116811461006d57600080fd5b9392505050565b60805161030b61008e600039600060c1015261030b6000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806341de68301161005b57806341de6830146100f95780636accab8c14610108578063776d1a011461011f578063d4b839921461013457600080fd5b806301ffc9a7146100825780632ae9c600146100aa5780634162169f146100bf575b600080fd5b610095610090366004610248565b610147565b60405190151581526020015b60405180910390f35b6100b2610198565b6040516100a19190610279565b7f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020016100a1565b60026040516100a191906102ad565b61011160015481565b6040519081526020016100a1565b61013261012d3660046102d5565b6101c2565b005b6000546100e1906001600160a01b031681565b60006001600160e01b0319821663041de68360e41b148061017757506001600160e01b03198216621574e360e91b145b8061019257506301ffc9a760e01b6001600160e01b03198316145b92915050565b6101a061022a565b5060408051606081018252600181526004602082015260009181019190915290565b600080546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d69190a35050565b60405180606001604052806003906020820280368337509192915050565b60006020828403121561025a57600080fd5b81356001600160e01b03198116811461027257600080fd5b9392505050565b60608101818360005b60038110156102a457815160ff16835260209283019290910190600101610282565b50505092915050565b60208101600383106102cf57634e487b7160e01b600052602160045260246000fd5b91905290565b6000602082840312156102e757600080fd5b81356001600160a01b038116811461027257600080fdfea164736f6c6343000811000aa164736f6c6343000811000a", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/src/mocks/plugin/PluginUUPSUpgradeableMock.sol/PluginUUPSUpgradeableMockBad.dbg.json b/contracts/artifacts/src/mocks/plugin/PluginUUPSUpgradeableMock.sol/PluginUUPSUpgradeableMockBad.dbg.json new file mode 100644 index 00000000..930fbb1d --- /dev/null +++ b/contracts/artifacts/src/mocks/plugin/PluginUUPSUpgradeableMock.sol/PluginUUPSUpgradeableMockBad.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/9ac591806bb2e846e5a60f79d635058e.json" +} diff --git a/contracts/artifacts/src/mocks/plugin/PluginUUPSUpgradeableMock.sol/PluginUUPSUpgradeableMockBad.json b/contracts/artifacts/src/mocks/plugin/PluginUUPSUpgradeableMock.sol/PluginUUPSUpgradeableMockBad.json new file mode 100644 index 00000000..d363c057 --- /dev/null +++ b/contracts/artifacts/src/mocks/plugin/PluginUUPSUpgradeableMock.sol/PluginUUPSUpgradeableMockBad.json @@ -0,0 +1,294 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "PluginUUPSUpgradeableMockBad", + "sourceName": "src/mocks/plugin/PluginUUPSUpgradeableMock.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "dao", + "type": "address" + }, + { + "internalType": "address", + "name": "where", + "type": "address" + }, + { + "internalType": "address", + "name": "who", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "permissionId", + "type": "bytes32" + } + ], + "name": "DaoUnauthorized", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "previousAdmin", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "newAdmin", + "type": "address" + } + ], + "name": "AdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "beacon", + "type": "address" + } + ], + "name": "BeaconUpgraded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint8", + "name": "version", + "type": "uint8" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousTarget", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newTarget", + "type": "address" + } + ], + "name": "TargetSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "Upgraded", + "type": "event" + }, + { + "inputs": [], + "name": "UPGRADE_PLUGIN_PERMISSION_ID", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "dao", + "outputs": [ + { + "internalType": "contract IDAO", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "implementation", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IDAO", + "name": "_dao", + "type": "address" + } + ], + "name": "notAnInitializer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "pluginType", + "outputs": [ + { + "internalType": "enum IPlugin.PluginType", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "protocolVersion", + "outputs": [ + { + "internalType": "uint8[3]", + "name": "", + "type": "uint8[3]" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "proxiableUUID", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_target", + "type": "address" + } + ], + "name": "setTarget", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "state1", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "_interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "target", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newImplementation", + "type": "address" + } + ], + "name": "upgradeTo", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newImplementation", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "upgradeToAndCall", + "outputs": [], + "stateMutability": "payable", + "type": "function" + } + ], + "bytecode": "0x60a06040523060805234801561001457600080fd5b5061001d610022565b6100e1565b600054610100900460ff161561008e5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116146100df576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b60805161109b61011860003960008181610334015281816103be015281816104b4015281816105390152610623015261109b6000f3fe6080604052600436106100d25760003560e01c806352d1902d1161007f578063776d1a0111610059578063776d1a01146102005780638883bbd714610220578063c9c4bfca14610240578063d4b839921461027457600080fd5b806352d1902d146101b15780635c60da1b146101d45780636accab8c146101e957600080fd5b80634162169f116100b05780634162169f1461015057806341de6830146101825780634f1ef2861461019e57600080fd5b806301ffc9a7146100d75780632ae9c6001461010c5780633659cfe61461012e575b600080fd5b3480156100e357600080fd5b506100f76100f2366004610dd3565b610294565b60405190151581526020015b60405180910390f35b34801561011857600080fd5b50610121610300565b6040516101039190610dfd565b34801561013a57600080fd5b5061014e610149366004610e46565b61032a565b005b34801561015c57600080fd5b5060c9546001600160a01b03165b6040516001600160a01b039091168152602001610103565b34801561018e57600080fd5b5060006040516101039190610e63565b61014e6101ac366004610ea1565b6104aa565b3480156101bd57600080fd5b506101c6610616565b604051908152602001610103565b3480156101e057600080fd5b5061016a6106db565b3480156101f557600080fd5b506101c661012d5481565b34801561020c57600080fd5b5061014e61021b366004610e46565b610713565b34801561022c57600080fd5b5061014e61023b366004610e46565b610772565b34801561024c57600080fd5b506101c67f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f581565b34801561028057600080fd5b5060fb5461016a906001600160a01b031681565b60006001600160e01b0319821663041de68360e41b14806102c457506001600160e01b03198216621574e360e91b145b806102df57506001600160e01b031982166352d1902d60e01b145b806102fa57506301ffc9a760e01b6001600160e01b03198316145b92915050565b610308610db5565b5060408051606081018252600181526004602082015260009181019190915290565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036103bc5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b60648201526084015b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166104177f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b0316146104825760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b60648201526084016103b3565b61048b81610784565b604080516000808252602082019092526104a7918391906107c1565b50565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036105375760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b60648201526084016103b3565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166105927f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b0316146105fd5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b60648201526084016103b3565b61060682610784565b610612828260016107c1565b5050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106b65760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016103b3565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b600061070e7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b60fb80546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d690600090a35050565b61077b81610966565b50600161012d55565b60c9547f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f590610612906001600160a01b03163033846000366109da565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156107f9576107f483610a96565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610853575060408051601f3d908101601f1916820190925261085091810190610f65565b60015b6108c55760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201527f6f6e206973206e6f74205555505300000000000000000000000000000000000060648201526084016103b3565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc811461095a5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f7860448201527f6961626c6555554944000000000000000000000000000000000000000000000060648201526084016103b3565b506107f4838383610b61565b600054610100900460ff166109d15760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103b3565b6104a781610b8c565b604051637ef7c88360e11b81526001600160a01b0387169063fdef910690610a0e9088908890889088908890600401610f7e565b602060405180830381865afa158015610a2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4f9190610fd2565b610a8e57604051630cb6f8ed60e21b81526001600160a01b038088166004830152808716602483015285166044820152606481018490526084016103b3565b505050505050565b6001600160a01b0381163b610b135760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e74726163740000000000000000000000000000000000000060648201526084016103b3565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610b6a83610c26565b600082511180610b775750805b156107f457610b868383610c66565b50505050565b600054610100900460ff16610bf75760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103b3565b60c9805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610c2f81610a96565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060610c8b838360405180606001604052806027815260200161106860279139610c92565b9392505050565b6060600080856001600160a01b031685604051610caf9190611018565b600060405180830381855af49150503d8060008114610cea576040519150601f19603f3d011682016040523d82523d6000602084013e610cef565b606091505b5091509150610d0086838387610d0a565b9695505050505050565b60608315610d79578251600003610d72576001600160a01b0385163b610d725760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016103b3565b5081610d83565b610d838383610d8b565b949350505050565b815115610d9b5781518083602001fd5b8060405162461bcd60e51b81526004016103b39190611034565b60405180606001604052806003906020820280368337509192915050565b600060208284031215610de557600080fd5b81356001600160e01b031981168114610c8b57600080fd5b60608101818360005b6003811015610e2857815160ff16835260209283019290910190600101610e06565b50505092915050565b6001600160a01b03811681146104a757600080fd5b600060208284031215610e5857600080fd5b8135610c8b81610e31565b6020810160038310610e8557634e487b7160e01b600052602160045260246000fd5b91905290565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215610eb457600080fd5b8235610ebf81610e31565b9150602083013567ffffffffffffffff80821115610edc57600080fd5b818501915085601f830112610ef057600080fd5b813581811115610f0257610f02610e8b565b604051601f8201601f19908116603f01168101908382118183101715610f2a57610f2a610e8b565b81604052828152886020848701011115610f4357600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b600060208284031215610f7757600080fd5b5051919050565b60006001600160a01b03808816835280871660208401525084604083015260806060830152826080830152828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b600060208284031215610fe457600080fd5b81518015158114610c8b57600080fd5b60005b8381101561100f578181015183820152602001610ff7565b50506000910152565b6000825161102a818460208701610ff4565b9190910192915050565b6020815260008251806020840152611053816040850160208701610ff4565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a", + "deployedBytecode": "0x6080604052600436106100d25760003560e01c806352d1902d1161007f578063776d1a0111610059578063776d1a01146102005780638883bbd714610220578063c9c4bfca14610240578063d4b839921461027457600080fd5b806352d1902d146101b15780635c60da1b146101d45780636accab8c146101e957600080fd5b80634162169f116100b05780634162169f1461015057806341de6830146101825780634f1ef2861461019e57600080fd5b806301ffc9a7146100d75780632ae9c6001461010c5780633659cfe61461012e575b600080fd5b3480156100e357600080fd5b506100f76100f2366004610dd3565b610294565b60405190151581526020015b60405180910390f35b34801561011857600080fd5b50610121610300565b6040516101039190610dfd565b34801561013a57600080fd5b5061014e610149366004610e46565b61032a565b005b34801561015c57600080fd5b5060c9546001600160a01b03165b6040516001600160a01b039091168152602001610103565b34801561018e57600080fd5b5060006040516101039190610e63565b61014e6101ac366004610ea1565b6104aa565b3480156101bd57600080fd5b506101c6610616565b604051908152602001610103565b3480156101e057600080fd5b5061016a6106db565b3480156101f557600080fd5b506101c661012d5481565b34801561020c57600080fd5b5061014e61021b366004610e46565b610713565b34801561022c57600080fd5b5061014e61023b366004610e46565b610772565b34801561024c57600080fd5b506101c67f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f581565b34801561028057600080fd5b5060fb5461016a906001600160a01b031681565b60006001600160e01b0319821663041de68360e41b14806102c457506001600160e01b03198216621574e360e91b145b806102df57506001600160e01b031982166352d1902d60e01b145b806102fa57506301ffc9a760e01b6001600160e01b03198316145b92915050565b610308610db5565b5060408051606081018252600181526004602082015260009181019190915290565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036103bc5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b60648201526084015b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166104177f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b0316146104825760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b60648201526084016103b3565b61048b81610784565b604080516000808252602082019092526104a7918391906107c1565b50565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036105375760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b60648201526084016103b3565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166105927f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b0316146105fd5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b60648201526084016103b3565b61060682610784565b610612828260016107c1565b5050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106b65760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016103b3565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b600061070e7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b60fb80546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d690600090a35050565b61077b81610966565b50600161012d55565b60c9547f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f590610612906001600160a01b03163033846000366109da565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156107f9576107f483610a96565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610853575060408051601f3d908101601f1916820190925261085091810190610f65565b60015b6108c55760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201527f6f6e206973206e6f74205555505300000000000000000000000000000000000060648201526084016103b3565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc811461095a5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f7860448201527f6961626c6555554944000000000000000000000000000000000000000000000060648201526084016103b3565b506107f4838383610b61565b600054610100900460ff166109d15760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103b3565b6104a781610b8c565b604051637ef7c88360e11b81526001600160a01b0387169063fdef910690610a0e9088908890889088908890600401610f7e565b602060405180830381865afa158015610a2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4f9190610fd2565b610a8e57604051630cb6f8ed60e21b81526001600160a01b038088166004830152808716602483015285166044820152606481018490526084016103b3565b505050505050565b6001600160a01b0381163b610b135760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e74726163740000000000000000000000000000000000000060648201526084016103b3565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610b6a83610c26565b600082511180610b775750805b156107f457610b868383610c66565b50505050565b600054610100900460ff16610bf75760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103b3565b60c9805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610c2f81610a96565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060610c8b838360405180606001604052806027815260200161106860279139610c92565b9392505050565b6060600080856001600160a01b031685604051610caf9190611018565b600060405180830381855af49150503d8060008114610cea576040519150601f19603f3d011682016040523d82523d6000602084013e610cef565b606091505b5091509150610d0086838387610d0a565b9695505050505050565b60608315610d79578251600003610d72576001600160a01b0385163b610d725760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016103b3565b5081610d83565b610d838383610d8b565b949350505050565b815115610d9b5781518083602001fd5b8060405162461bcd60e51b81526004016103b39190611034565b60405180606001604052806003906020820280368337509192915050565b600060208284031215610de557600080fd5b81356001600160e01b031981168114610c8b57600080fd5b60608101818360005b6003811015610e2857815160ff16835260209283019290910190600101610e06565b50505092915050565b6001600160a01b03811681146104a757600080fd5b600060208284031215610e5857600080fd5b8135610c8b81610e31565b6020810160038310610e8557634e487b7160e01b600052602160045260246000fd5b91905290565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215610eb457600080fd5b8235610ebf81610e31565b9150602083013567ffffffffffffffff80821115610edc57600080fd5b818501915085601f830112610ef057600080fd5b813581811115610f0257610f02610e8b565b604051601f8201601f19908116603f01168101908382118183101715610f2a57610f2a610e8b565b81604052828152886020848701011115610f4357600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b600060208284031215610f7757600080fd5b5051919050565b60006001600160a01b03808816835280871660208401525084604083015260806060830152826080830152828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b600060208284031215610fe457600080fd5b81518015158114610c8b57600080fd5b60005b8381101561100f578181015183820152602001610ff7565b50506000910152565b6000825161102a818460208701610ff4565b9190910192915050565b6020815260008251806020840152611053816040850160208701610ff4565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/src/mocks/plugin/PluginUUPSUpgradeableMock.sol/PluginUUPSUpgradeableMockBuild1.dbg.json b/contracts/artifacts/src/mocks/plugin/PluginUUPSUpgradeableMock.sol/PluginUUPSUpgradeableMockBuild1.dbg.json new file mode 100644 index 00000000..930fbb1d --- /dev/null +++ b/contracts/artifacts/src/mocks/plugin/PluginUUPSUpgradeableMock.sol/PluginUUPSUpgradeableMockBuild1.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/9ac591806bb2e846e5a60f79d635058e.json" +} diff --git a/contracts/artifacts/src/mocks/plugin/PluginUUPSUpgradeableMock.sol/PluginUUPSUpgradeableMockBuild1.json b/contracts/artifacts/src/mocks/plugin/PluginUUPSUpgradeableMock.sol/PluginUUPSUpgradeableMockBuild1.json new file mode 100644 index 00000000..5f127931 --- /dev/null +++ b/contracts/artifacts/src/mocks/plugin/PluginUUPSUpgradeableMock.sol/PluginUUPSUpgradeableMockBuild1.json @@ -0,0 +1,294 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "PluginUUPSUpgradeableMockBuild1", + "sourceName": "src/mocks/plugin/PluginUUPSUpgradeableMock.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "dao", + "type": "address" + }, + { + "internalType": "address", + "name": "where", + "type": "address" + }, + { + "internalType": "address", + "name": "who", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "permissionId", + "type": "bytes32" + } + ], + "name": "DaoUnauthorized", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "previousAdmin", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "newAdmin", + "type": "address" + } + ], + "name": "AdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "beacon", + "type": "address" + } + ], + "name": "BeaconUpgraded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint8", + "name": "version", + "type": "uint8" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousTarget", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newTarget", + "type": "address" + } + ], + "name": "TargetSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "Upgraded", + "type": "event" + }, + { + "inputs": [], + "name": "UPGRADE_PLUGIN_PERMISSION_ID", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "dao", + "outputs": [ + { + "internalType": "contract IDAO", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "implementation", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IDAO", + "name": "_dao", + "type": "address" + } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "pluginType", + "outputs": [ + { + "internalType": "enum IPlugin.PluginType", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "protocolVersion", + "outputs": [ + { + "internalType": "uint8[3]", + "name": "", + "type": "uint8[3]" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "proxiableUUID", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_target", + "type": "address" + } + ], + "name": "setTarget", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "state1", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "_interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "target", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newImplementation", + "type": "address" + } + ], + "name": "upgradeTo", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newImplementation", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "upgradeToAndCall", + "outputs": [], + "stateMutability": "payable", + "type": "function" + } + ], + "bytecode": "0x60a06040523060805234801561001457600080fd5b5061001d610022565b6100e1565b600054610100900460ff161561008e5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116146100df576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6080516111b061011860003960008181610334015281816103be015281816104b401528181610539015261062301526111b06000f3fe6080604052600436106100d25760003560e01c806352d1902d1161007f578063776d1a0111610059578063776d1a0114610200578063c4d66de814610220578063c9c4bfca14610240578063d4b839921461027457600080fd5b806352d1902d146101b15780635c60da1b146101d45780636accab8c146101e957600080fd5b80634162169f116100b05780634162169f1461015057806341de6830146101825780634f1ef2861461019e57600080fd5b806301ffc9a7146100d75780632ae9c6001461010c5780633659cfe61461012e575b600080fd5b3480156100e357600080fd5b506100f76100f2366004610ee8565b610294565b60405190151581526020015b60405180910390f35b34801561011857600080fd5b50610121610300565b6040516101039190610f12565b34801561013a57600080fd5b5061014e610149366004610f5b565b61032a565b005b34801561015c57600080fd5b5060c9546001600160a01b03165b6040516001600160a01b039091168152602001610103565b34801561018e57600080fd5b5060006040516101039190610f78565b61014e6101ac366004610fb6565b6104aa565b3480156101bd57600080fd5b506101c6610616565b604051908152602001610103565b3480156101e057600080fd5b5061016a6106db565b3480156101f557600080fd5b506101c661012d5481565b34801561020c57600080fd5b5061014e61021b366004610f5b565b610713565b34801561022c57600080fd5b5061014e61023b366004610f5b565b610772565b34801561024c57600080fd5b506101c67f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f581565b34801561028057600080fd5b5060fb5461016a906001600160a01b031681565b60006001600160e01b0319821663041de68360e41b14806102c457506001600160e01b03198216621574e360e91b145b806102df57506001600160e01b031982166352d1902d60e01b145b806102fa57506301ffc9a760e01b6001600160e01b03198316145b92915050565b610308610eca565b5060408051606081018252600181526004602082015260009181019190915290565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036103bc5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b60648201526084015b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166104177f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b0316146104825760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b60648201526084016103b3565b61048b81610899565b604080516000808252602082019092526104a7918391906108d6565b50565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036105375760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b60648201526084016103b3565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166105927f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b0316146105fd5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b60648201526084016103b3565b61060682610899565b610612828260016108d6565b5050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106b65760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016103b3565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b600061070e7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b60fb80546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d690600090a35050565b600054610100900460ff16158080156107925750600054600160ff909116105b806107ac5750303b1580156107ac575060005460ff166001145b61081e5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016103b3565b6000805460ff191660011790558015610841576000805461ff0019166101001790555b61084a82610a7b565b600161012d558015610612576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b60c9547f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f590610612906001600160a01b0316303384600036610aef565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561090e5761090983610bab565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610968575060408051601f3d908101601f191682019092526109659181019061107a565b60015b6109da5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201527f6f6e206973206e6f74205555505300000000000000000000000000000000000060648201526084016103b3565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114610a6f5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f7860448201527f6961626c6555554944000000000000000000000000000000000000000000000060648201526084016103b3565b50610909838383610c76565b600054610100900460ff16610ae65760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103b3565b6104a781610ca1565b604051637ef7c88360e11b81526001600160a01b0387169063fdef910690610b239088908890889088908890600401611093565b602060405180830381865afa158015610b40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6491906110e7565b610ba357604051630cb6f8ed60e21b81526001600160a01b038088166004830152808716602483015285166044820152606481018490526084016103b3565b505050505050565b6001600160a01b0381163b610c285760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e74726163740000000000000000000000000000000000000060648201526084016103b3565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610c7f83610d3b565b600082511180610c8c5750805b1561090957610c9b8383610d7b565b50505050565b600054610100900460ff16610d0c5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103b3565b60c9805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610d4481610bab565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060610da0838360405180606001604052806027815260200161117d60279139610da7565b9392505050565b6060600080856001600160a01b031685604051610dc4919061112d565b600060405180830381855af49150503d8060008114610dff576040519150601f19603f3d011682016040523d82523d6000602084013e610e04565b606091505b5091509150610e1586838387610e1f565b9695505050505050565b60608315610e8e578251600003610e87576001600160a01b0385163b610e875760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016103b3565b5081610e98565b610e988383610ea0565b949350505050565b815115610eb05781518083602001fd5b8060405162461bcd60e51b81526004016103b39190611149565b60405180606001604052806003906020820280368337509192915050565b600060208284031215610efa57600080fd5b81356001600160e01b031981168114610da057600080fd5b60608101818360005b6003811015610f3d57815160ff16835260209283019290910190600101610f1b565b50505092915050565b6001600160a01b03811681146104a757600080fd5b600060208284031215610f6d57600080fd5b8135610da081610f46565b6020810160038310610f9a57634e487b7160e01b600052602160045260246000fd5b91905290565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215610fc957600080fd5b8235610fd481610f46565b9150602083013567ffffffffffffffff80821115610ff157600080fd5b818501915085601f83011261100557600080fd5b81358181111561101757611017610fa0565b604051601f8201601f19908116603f0116810190838211818310171561103f5761103f610fa0565b8160405282815288602084870101111561105857600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60006020828403121561108c57600080fd5b5051919050565b60006001600160a01b03808816835280871660208401525084604083015260806060830152826080830152828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b6000602082840312156110f957600080fd5b81518015158114610da057600080fd5b60005b8381101561112457818101518382015260200161110c565b50506000910152565b6000825161113f818460208701611109565b9190910192915050565b6020815260008251806020840152611168816040850160208701611109565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a", + "deployedBytecode": "0x6080604052600436106100d25760003560e01c806352d1902d1161007f578063776d1a0111610059578063776d1a0114610200578063c4d66de814610220578063c9c4bfca14610240578063d4b839921461027457600080fd5b806352d1902d146101b15780635c60da1b146101d45780636accab8c146101e957600080fd5b80634162169f116100b05780634162169f1461015057806341de6830146101825780634f1ef2861461019e57600080fd5b806301ffc9a7146100d75780632ae9c6001461010c5780633659cfe61461012e575b600080fd5b3480156100e357600080fd5b506100f76100f2366004610ee8565b610294565b60405190151581526020015b60405180910390f35b34801561011857600080fd5b50610121610300565b6040516101039190610f12565b34801561013a57600080fd5b5061014e610149366004610f5b565b61032a565b005b34801561015c57600080fd5b5060c9546001600160a01b03165b6040516001600160a01b039091168152602001610103565b34801561018e57600080fd5b5060006040516101039190610f78565b61014e6101ac366004610fb6565b6104aa565b3480156101bd57600080fd5b506101c6610616565b604051908152602001610103565b3480156101e057600080fd5b5061016a6106db565b3480156101f557600080fd5b506101c661012d5481565b34801561020c57600080fd5b5061014e61021b366004610f5b565b610713565b34801561022c57600080fd5b5061014e61023b366004610f5b565b610772565b34801561024c57600080fd5b506101c67f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f581565b34801561028057600080fd5b5060fb5461016a906001600160a01b031681565b60006001600160e01b0319821663041de68360e41b14806102c457506001600160e01b03198216621574e360e91b145b806102df57506001600160e01b031982166352d1902d60e01b145b806102fa57506301ffc9a760e01b6001600160e01b03198316145b92915050565b610308610eca565b5060408051606081018252600181526004602082015260009181019190915290565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036103bc5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b60648201526084015b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166104177f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b0316146104825760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b60648201526084016103b3565b61048b81610899565b604080516000808252602082019092526104a7918391906108d6565b50565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036105375760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b60648201526084016103b3565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166105927f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b0316146105fd5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b60648201526084016103b3565b61060682610899565b610612828260016108d6565b5050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106b65760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016103b3565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b600061070e7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b60fb80546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d690600090a35050565b600054610100900460ff16158080156107925750600054600160ff909116105b806107ac5750303b1580156107ac575060005460ff166001145b61081e5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016103b3565b6000805460ff191660011790558015610841576000805461ff0019166101001790555b61084a82610a7b565b600161012d558015610612576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b60c9547f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f590610612906001600160a01b0316303384600036610aef565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561090e5761090983610bab565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610968575060408051601f3d908101601f191682019092526109659181019061107a565b60015b6109da5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201527f6f6e206973206e6f74205555505300000000000000000000000000000000000060648201526084016103b3565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114610a6f5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f7860448201527f6961626c6555554944000000000000000000000000000000000000000000000060648201526084016103b3565b50610909838383610c76565b600054610100900460ff16610ae65760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103b3565b6104a781610ca1565b604051637ef7c88360e11b81526001600160a01b0387169063fdef910690610b239088908890889088908890600401611093565b602060405180830381865afa158015610b40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6491906110e7565b610ba357604051630cb6f8ed60e21b81526001600160a01b038088166004830152808716602483015285166044820152606481018490526084016103b3565b505050505050565b6001600160a01b0381163b610c285760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e74726163740000000000000000000000000000000000000060648201526084016103b3565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610c7f83610d3b565b600082511180610c8c5750805b1561090957610c9b8383610d7b565b50505050565b600054610100900460ff16610d0c5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103b3565b60c9805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610d4481610bab565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060610da0838360405180606001604052806027815260200161117d60279139610da7565b9392505050565b6060600080856001600160a01b031685604051610dc4919061112d565b600060405180830381855af49150503d8060008114610dff576040519150601f19603f3d011682016040523d82523d6000602084013e610e04565b606091505b5091509150610e1586838387610e1f565b9695505050505050565b60608315610e8e578251600003610e87576001600160a01b0385163b610e875760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016103b3565b5081610e98565b610e988383610ea0565b949350505050565b815115610eb05781518083602001fd5b8060405162461bcd60e51b81526004016103b39190611149565b60405180606001604052806003906020820280368337509192915050565b600060208284031215610efa57600080fd5b81356001600160e01b031981168114610da057600080fd5b60608101818360005b6003811015610f3d57815160ff16835260209283019290910190600101610f1b565b50505092915050565b6001600160a01b03811681146104a757600080fd5b600060208284031215610f6d57600080fd5b8135610da081610f46565b6020810160038310610f9a57634e487b7160e01b600052602160045260246000fd5b91905290565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215610fc957600080fd5b8235610fd481610f46565b9150602083013567ffffffffffffffff80821115610ff157600080fd5b818501915085601f83011261100557600080fd5b81358181111561101757611017610fa0565b604051601f8201601f19908116603f0116810190838211818310171561103f5761103f610fa0565b8160405282815288602084870101111561105857600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60006020828403121561108c57600080fd5b5051919050565b60006001600160a01b03808816835280871660208401525084604083015260806060830152826080830152828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b6000602082840312156110f957600080fd5b81518015158114610da057600080fd5b60005b8381101561112457818101518382015260200161110c565b50506000910152565b6000825161113f818460208701611109565b9190910192915050565b6020815260008251806020840152611168816040850160208701611109565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/src/mocks/plugin/PluginUUPSUpgradeableMock.sol/PluginUUPSUpgradeableMockBuild2.dbg.json b/contracts/artifacts/src/mocks/plugin/PluginUUPSUpgradeableMock.sol/PluginUUPSUpgradeableMockBuild2.dbg.json new file mode 100644 index 00000000..930fbb1d --- /dev/null +++ b/contracts/artifacts/src/mocks/plugin/PluginUUPSUpgradeableMock.sol/PluginUUPSUpgradeableMockBuild2.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/9ac591806bb2e846e5a60f79d635058e.json" +} diff --git a/contracts/artifacts/src/mocks/plugin/PluginUUPSUpgradeableMock.sol/PluginUUPSUpgradeableMockBuild2.json b/contracts/artifacts/src/mocks/plugin/PluginUUPSUpgradeableMock.sol/PluginUUPSUpgradeableMockBuild2.json new file mode 100644 index 00000000..c384af7a --- /dev/null +++ b/contracts/artifacts/src/mocks/plugin/PluginUUPSUpgradeableMock.sol/PluginUUPSUpgradeableMockBuild2.json @@ -0,0 +1,320 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "PluginUUPSUpgradeableMockBuild2", + "sourceName": "src/mocks/plugin/PluginUUPSUpgradeableMock.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "dao", + "type": "address" + }, + { + "internalType": "address", + "name": "where", + "type": "address" + }, + { + "internalType": "address", + "name": "who", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "permissionId", + "type": "bytes32" + } + ], + "name": "DaoUnauthorized", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "previousAdmin", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "newAdmin", + "type": "address" + } + ], + "name": "AdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "beacon", + "type": "address" + } + ], + "name": "BeaconUpgraded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint8", + "name": "version", + "type": "uint8" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousTarget", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newTarget", + "type": "address" + } + ], + "name": "TargetSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "Upgraded", + "type": "event" + }, + { + "inputs": [], + "name": "UPGRADE_PLUGIN_PERMISSION_ID", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "dao", + "outputs": [ + { + "internalType": "contract IDAO", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "implementation", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IDAO", + "name": "_dao", + "type": "address" + } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "_previousBuild", + "type": "uint16" + } + ], + "name": "initializeFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "pluginType", + "outputs": [ + { + "internalType": "enum IPlugin.PluginType", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "protocolVersion", + "outputs": [ + { + "internalType": "uint8[3]", + "name": "", + "type": "uint8[3]" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "proxiableUUID", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_target", + "type": "address" + } + ], + "name": "setTarget", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "state1", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "state2", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "_interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "target", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newImplementation", + "type": "address" + } + ], + "name": "upgradeTo", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newImplementation", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "upgradeToAndCall", + "outputs": [], + "stateMutability": "payable", + "type": "function" + } + ], + "bytecode": "0x60a06040523060805234801561001457600080fd5b5061001d610022565b6100e1565b600054610100900460ff161561008e5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116146100df576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6080516112d961011860003960008181610479015281816104fe015281816105f401528181610679015261076301526112d96000f3fe6080604052600436106100e85760003560e01c806352d1902d1161008a578063c4d66de811610059578063c4d66de814610256578063c9c4bfca14610276578063d4b83992146102aa578063efe51cca146102ca57600080fd5b806352d1902d146101e75780635c60da1b1461020a5780636accab8c1461021f578063776d1a011461023657600080fd5b80633659cfe6116100c65780633659cfe6146101665780634162169f1461018657806341de6830146101b85780634f1ef286146101d457600080fd5b806301ffc9a7146100ed578063039a8c50146101225780632ae9c60014610144575b600080fd5b3480156100f957600080fd5b5061010d610108366004610fed565b6102e1565b60405190151581526020015b60405180910390f35b34801561012e57600080fd5b5061014261013d366004611017565b61034d565b005b34801561015057600080fd5b50610159610445565b604051610119919061103b565b34801561017257600080fd5b50610142610181366004611084565b61046f565b34801561019257600080fd5b5060c9546001600160a01b03165b6040516001600160a01b039091168152602001610119565b3480156101c457600080fd5b50600060405161011991906110a1565b6101426101e23660046110df565b6105ea565b3480156101f357600080fd5b506101fc610756565b604051908152602001610119565b34801561021657600080fd5b506101a061081b565b34801561022b57600080fd5b506101fc61012d5481565b34801561024257600080fd5b50610142610251366004611084565b610853565b34801561026257600080fd5b50610142610271366004611084565b6108b2565b34801561028257600080fd5b506101fc7f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f581565b3480156102b657600080fd5b5060fb546101a0906001600160a01b031681565b3480156102d657600080fd5b506101fc61012e5481565b60006001600160e01b0319821663041de68360e41b148061031157506001600160e01b03198216621574e360e91b145b8061032c57506001600160e01b031982166352d1902d60e01b145b8061034757506301ffc9a760e01b6001600160e01b03198316145b92915050565b600054600290610100900460ff1615801561036f575060005460ff8083169116105b6103d75760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805461ffff191660ff831617610100179055600261ffff831610156103ff57600261012e555b6000805461ff001916905560405160ff821681527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b61044d610fcf565b5060408051606081018252600181526004602082015260009181019190915290565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036104fc5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b60648201526084016103ce565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166105577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b0316146105c25760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b60648201526084016103ce565b6105cb8161099e565b604080516000808252602082019092526105e7918391906109db565b50565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036106775760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b60648201526084016103ce565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166106d27f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b03161461073d5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b60648201526084016103ce565b6107468261099e565b610752828260016109db565b5050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146107f65760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016103ce565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b600061084e7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b60fb80546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d690600090a35050565b600054600290610100900460ff161580156108d4575060005460ff8083169116105b6109375760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016103ce565b6000805461ffff191660ff83161761010017905561095482610b80565b600161012d55600261012e556000805461ff001916905560405160ff821681527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602001610439565b60c9547f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f590610752906001600160a01b0316303384600036610bf4565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610a1357610a0e83610cb0565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610a6d575060408051601f3d908101601f19168201909252610a6a918101906111a3565b60015b610adf5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201527f6f6e206973206e6f74205555505300000000000000000000000000000000000060648201526084016103ce565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114610b745760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f7860448201527f6961626c6555554944000000000000000000000000000000000000000000000060648201526084016103ce565b50610a0e838383610d7b565b600054610100900460ff16610beb5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103ce565b6105e781610da6565b604051637ef7c88360e11b81526001600160a01b0387169063fdef910690610c2890889088908890889088906004016111bc565b602060405180830381865afa158015610c45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c699190611210565b610ca857604051630cb6f8ed60e21b81526001600160a01b038088166004830152808716602483015285166044820152606481018490526084016103ce565b505050505050565b6001600160a01b0381163b610d2d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e74726163740000000000000000000000000000000000000060648201526084016103ce565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610d8483610e40565b600082511180610d915750805b15610a0e57610da08383610e80565b50505050565b600054610100900460ff16610e115760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103ce565b60c9805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610e4981610cb0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060610ea583836040518060600160405280602781526020016112a660279139610eac565b9392505050565b6060600080856001600160a01b031685604051610ec99190611256565b600060405180830381855af49150503d8060008114610f04576040519150601f19603f3d011682016040523d82523d6000602084013e610f09565b606091505b5091509150610f1a86838387610f24565b9695505050505050565b60608315610f93578251600003610f8c576001600160a01b0385163b610f8c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016103ce565b5081610f9d565b610f9d8383610fa5565b949350505050565b815115610fb55781518083602001fd5b8060405162461bcd60e51b81526004016103ce9190611272565b60405180606001604052806003906020820280368337509192915050565b600060208284031215610fff57600080fd5b81356001600160e01b031981168114610ea557600080fd5b60006020828403121561102957600080fd5b813561ffff81168114610ea557600080fd5b60608101818360005b600381101561106657815160ff16835260209283019290910190600101611044565b50505092915050565b6001600160a01b03811681146105e757600080fd5b60006020828403121561109657600080fd5b8135610ea58161106f565b60208101600383106110c357634e487b7160e01b600052602160045260246000fd5b91905290565b634e487b7160e01b600052604160045260246000fd5b600080604083850312156110f257600080fd5b82356110fd8161106f565b9150602083013567ffffffffffffffff8082111561111a57600080fd5b818501915085601f83011261112e57600080fd5b813581811115611140576111406110c9565b604051601f8201601f19908116603f01168101908382118183101715611168576111686110c9565b8160405282815288602084870101111561118157600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6000602082840312156111b557600080fd5b5051919050565b60006001600160a01b03808816835280871660208401525084604083015260806060830152826080830152828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b60006020828403121561122257600080fd5b81518015158114610ea557600080fd5b60005b8381101561124d578181015183820152602001611235565b50506000910152565b60008251611268818460208701611232565b9190910192915050565b6020815260008251806020840152611291816040850160208701611232565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a", + "deployedBytecode": "0x6080604052600436106100e85760003560e01c806352d1902d1161008a578063c4d66de811610059578063c4d66de814610256578063c9c4bfca14610276578063d4b83992146102aa578063efe51cca146102ca57600080fd5b806352d1902d146101e75780635c60da1b1461020a5780636accab8c1461021f578063776d1a011461023657600080fd5b80633659cfe6116100c65780633659cfe6146101665780634162169f1461018657806341de6830146101b85780634f1ef286146101d457600080fd5b806301ffc9a7146100ed578063039a8c50146101225780632ae9c60014610144575b600080fd5b3480156100f957600080fd5b5061010d610108366004610fed565b6102e1565b60405190151581526020015b60405180910390f35b34801561012e57600080fd5b5061014261013d366004611017565b61034d565b005b34801561015057600080fd5b50610159610445565b604051610119919061103b565b34801561017257600080fd5b50610142610181366004611084565b61046f565b34801561019257600080fd5b5060c9546001600160a01b03165b6040516001600160a01b039091168152602001610119565b3480156101c457600080fd5b50600060405161011991906110a1565b6101426101e23660046110df565b6105ea565b3480156101f357600080fd5b506101fc610756565b604051908152602001610119565b34801561021657600080fd5b506101a061081b565b34801561022b57600080fd5b506101fc61012d5481565b34801561024257600080fd5b50610142610251366004611084565b610853565b34801561026257600080fd5b50610142610271366004611084565b6108b2565b34801561028257600080fd5b506101fc7f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f581565b3480156102b657600080fd5b5060fb546101a0906001600160a01b031681565b3480156102d657600080fd5b506101fc61012e5481565b60006001600160e01b0319821663041de68360e41b148061031157506001600160e01b03198216621574e360e91b145b8061032c57506001600160e01b031982166352d1902d60e01b145b8061034757506301ffc9a760e01b6001600160e01b03198316145b92915050565b600054600290610100900460ff1615801561036f575060005460ff8083169116105b6103d75760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805461ffff191660ff831617610100179055600261ffff831610156103ff57600261012e555b6000805461ff001916905560405160ff821681527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b61044d610fcf565b5060408051606081018252600181526004602082015260009181019190915290565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036104fc5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b60648201526084016103ce565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166105577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b0316146105c25760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b60648201526084016103ce565b6105cb8161099e565b604080516000808252602082019092526105e7918391906109db565b50565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036106775760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b60648201526084016103ce565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166106d27f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b03161461073d5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b60648201526084016103ce565b6107468261099e565b610752828260016109db565b5050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146107f65760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016103ce565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b600061084e7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b60fb80546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d690600090a35050565b600054600290610100900460ff161580156108d4575060005460ff8083169116105b6109375760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016103ce565b6000805461ffff191660ff83161761010017905561095482610b80565b600161012d55600261012e556000805461ff001916905560405160ff821681527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602001610439565b60c9547f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f590610752906001600160a01b0316303384600036610bf4565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610a1357610a0e83610cb0565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610a6d575060408051601f3d908101601f19168201909252610a6a918101906111a3565b60015b610adf5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201527f6f6e206973206e6f74205555505300000000000000000000000000000000000060648201526084016103ce565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114610b745760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f7860448201527f6961626c6555554944000000000000000000000000000000000000000000000060648201526084016103ce565b50610a0e838383610d7b565b600054610100900460ff16610beb5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103ce565b6105e781610da6565b604051637ef7c88360e11b81526001600160a01b0387169063fdef910690610c2890889088908890889088906004016111bc565b602060405180830381865afa158015610c45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c699190611210565b610ca857604051630cb6f8ed60e21b81526001600160a01b038088166004830152808716602483015285166044820152606481018490526084016103ce565b505050505050565b6001600160a01b0381163b610d2d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e74726163740000000000000000000000000000000000000060648201526084016103ce565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610d8483610e40565b600082511180610d915750805b15610a0e57610da08383610e80565b50505050565b600054610100900460ff16610e115760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103ce565b60c9805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610e4981610cb0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060610ea583836040518060600160405280602781526020016112a660279139610eac565b9392505050565b6060600080856001600160a01b031685604051610ec99190611256565b600060405180830381855af49150503d8060008114610f04576040519150601f19603f3d011682016040523d82523d6000602084013e610f09565b606091505b5091509150610f1a86838387610f24565b9695505050505050565b60608315610f93578251600003610f8c576001600160a01b0385163b610f8c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016103ce565b5081610f9d565b610f9d8383610fa5565b949350505050565b815115610fb55781518083602001fd5b8060405162461bcd60e51b81526004016103ce9190611272565b60405180606001604052806003906020820280368337509192915050565b600060208284031215610fff57600080fd5b81356001600160e01b031981168114610ea557600080fd5b60006020828403121561102957600080fd5b813561ffff81168114610ea557600080fd5b60608101818360005b600381101561106657815160ff16835260209283019290910190600101611044565b50505092915050565b6001600160a01b03811681146105e757600080fd5b60006020828403121561109657600080fd5b8135610ea58161106f565b60208101600383106110c357634e487b7160e01b600052602160045260246000fd5b91905290565b634e487b7160e01b600052604160045260246000fd5b600080604083850312156110f257600080fd5b82356110fd8161106f565b9150602083013567ffffffffffffffff8082111561111a57600080fd5b818501915085601f83011261112e57600080fd5b813581811115611140576111406110c9565b604051601f8201601f19908116603f01168101908382118183101715611168576111686110c9565b8160405282815288602084870101111561118157600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6000602082840312156111b557600080fd5b5051919050565b60006001600160a01b03808816835280871660208401525084604083015260806060830152826080830152828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b60006020828403121561122257600080fd5b81518015158114610ea557600080fd5b60005b8381101561124d578181015183820152602001611235565b50506000910152565b60008251611268818460208701611232565b9190910192915050565b6020815260008251806020840152611291816040850160208701611232565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/src/mocks/plugin/PluginUUPSUpgradeableMock.sol/PluginUUPSUpgradeableMockBuild3.dbg.json b/contracts/artifacts/src/mocks/plugin/PluginUUPSUpgradeableMock.sol/PluginUUPSUpgradeableMockBuild3.dbg.json new file mode 100644 index 00000000..930fbb1d --- /dev/null +++ b/contracts/artifacts/src/mocks/plugin/PluginUUPSUpgradeableMock.sol/PluginUUPSUpgradeableMockBuild3.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/9ac591806bb2e846e5a60f79d635058e.json" +} diff --git a/contracts/artifacts/src/mocks/plugin/PluginUUPSUpgradeableMock.sol/PluginUUPSUpgradeableMockBuild3.json b/contracts/artifacts/src/mocks/plugin/PluginUUPSUpgradeableMock.sol/PluginUUPSUpgradeableMockBuild3.json new file mode 100644 index 00000000..8c9e4b0b --- /dev/null +++ b/contracts/artifacts/src/mocks/plugin/PluginUUPSUpgradeableMock.sol/PluginUUPSUpgradeableMockBuild3.json @@ -0,0 +1,333 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "PluginUUPSUpgradeableMockBuild3", + "sourceName": "src/mocks/plugin/PluginUUPSUpgradeableMock.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "dao", + "type": "address" + }, + { + "internalType": "address", + "name": "where", + "type": "address" + }, + { + "internalType": "address", + "name": "who", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "permissionId", + "type": "bytes32" + } + ], + "name": "DaoUnauthorized", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "previousAdmin", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "newAdmin", + "type": "address" + } + ], + "name": "AdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "beacon", + "type": "address" + } + ], + "name": "BeaconUpgraded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint8", + "name": "version", + "type": "uint8" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousTarget", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newTarget", + "type": "address" + } + ], + "name": "TargetSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "Upgraded", + "type": "event" + }, + { + "inputs": [], + "name": "UPGRADE_PLUGIN_PERMISSION_ID", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "dao", + "outputs": [ + { + "internalType": "contract IDAO", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "implementation", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IDAO", + "name": "_dao", + "type": "address" + } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "_previousBuild", + "type": "uint16" + } + ], + "name": "initializeFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "pluginType", + "outputs": [ + { + "internalType": "enum IPlugin.PluginType", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "protocolVersion", + "outputs": [ + { + "internalType": "uint8[3]", + "name": "", + "type": "uint8[3]" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "proxiableUUID", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_target", + "type": "address" + } + ], + "name": "setTarget", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "state1", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "state2", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "state3", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "_interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "target", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newImplementation", + "type": "address" + } + ], + "name": "upgradeTo", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newImplementation", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "upgradeToAndCall", + "outputs": [], + "stateMutability": "payable", + "type": "function" + } + ], + "bytecode": "0x60a06040523060805234801561001457600080fd5b5061001d610022565b6100e1565b600054610100900460ff161561008e5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116146100df576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b608051611315610118600039600081816104af015281816105340152818161062a015281816106af015261079901526113156000f3fe6080604052600436106100f35760003560e01c806352d1902d1161008a578063c4d66de811610059578063c4d66de814610278578063c9c4bfca14610298578063d4b83992146102cc578063efe51cca146102ec57600080fd5b806352d1902d146102175780635c60da1b1461022c5780636accab8c14610241578063776d1a011461025857600080fd5b80633659cfe6116100c65780633659cfe6146101965780634162169f146101b657806341de6830146101e85780634f1ef2861461020457600080fd5b806301ffc9a7146100f8578063039a8c501461012d5780632491118d1461014f5780632ae9c60014610174575b600080fd5b34801561010457600080fd5b50610118610113366004611029565b610303565b60405190151581526020015b60405180910390f35b34801561013957600080fd5b5061014d610148366004611053565b61036f565b005b34801561015b57600080fd5b5061016661012f5481565b604051908152602001610124565b34801561018057600080fd5b5061018961047b565b6040516101249190611077565b3480156101a257600080fd5b5061014d6101b13660046110c0565b6104a5565b3480156101c257600080fd5b5060c9546001600160a01b03165b6040516001600160a01b039091168152602001610124565b3480156101f457600080fd5b50600060405161012491906110dd565b61014d61021236600461111b565b610620565b34801561022357600080fd5b5061016661078c565b34801561023857600080fd5b506101d0610851565b34801561024d57600080fd5b5061016661012d5481565b34801561026457600080fd5b5061014d6102733660046110c0565b610889565b34801561028457600080fd5b5061014d6102933660046110c0565b6108e8565b3480156102a457600080fd5b506101667f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f581565b3480156102d857600080fd5b5060fb546101d0906001600160a01b031681565b3480156102f857600080fd5b5061016661012e5481565b60006001600160e01b0319821663041de68360e41b148061033357506001600160e01b03198216621574e360e91b145b8061034e57506001600160e01b031982166352d1902d60e01b145b8061036957506301ffc9a760e01b6001600160e01b03198316145b92915050565b600054600390610100900460ff16158015610391575060005460ff8083169116105b6103f95760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805461ffff191660ff831617610100179055600261ffff8316101561042157600261012e555b60038261ffff16101561043557600361012f555b6000805461ff001916905560405160ff821681527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b61048361100b565b5060408051606081018252600181526004602082015260009181019190915290565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036105325760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b60648201526084016103f0565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661058d7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b0316146105f85760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b60648201526084016103f0565b610601816109da565b6040805160008082526020820190925261061d91839190610a17565b50565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036106ad5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b60648201526084016103f0565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166107087f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b0316146107735760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b60648201526084016103f0565b61077c826109da565b61078882826001610a17565b5050565b6000306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461082c5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016103f0565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b60006108847f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b60fb80546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d690600090a35050565b600054600390610100900460ff1615801561090a575060005460ff8083169116105b61096d5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016103f0565b6000805461ffff191660ff83161761010017905561098a82610bbc565b600161012d55600261012e55600361012f556000805461ff001916905560405160ff821681527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200161046f565b60c9547f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f590610788906001600160a01b0316303384600036610c30565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610a4f57610a4a83610cec565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610aa9575060408051601f3d908101601f19168201909252610aa6918101906111df565b60015b610b1b5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201527f6f6e206973206e6f74205555505300000000000000000000000000000000000060648201526084016103f0565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114610bb05760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f7860448201527f6961626c6555554944000000000000000000000000000000000000000000000060648201526084016103f0565b50610a4a838383610db7565b600054610100900460ff16610c275760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103f0565b61061d81610de2565b604051637ef7c88360e11b81526001600160a01b0387169063fdef910690610c6490889088908890889088906004016111f8565b602060405180830381865afa158015610c81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca5919061124c565b610ce457604051630cb6f8ed60e21b81526001600160a01b038088166004830152808716602483015285166044820152606481018490526084016103f0565b505050505050565b6001600160a01b0381163b610d695760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e74726163740000000000000000000000000000000000000060648201526084016103f0565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610dc083610e7c565b600082511180610dcd5750805b15610a4a57610ddc8383610ebc565b50505050565b600054610100900460ff16610e4d5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103f0565b60c9805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610e8581610cec565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060610ee183836040518060600160405280602781526020016112e260279139610ee8565b9392505050565b6060600080856001600160a01b031685604051610f059190611292565b600060405180830381855af49150503d8060008114610f40576040519150601f19603f3d011682016040523d82523d6000602084013e610f45565b606091505b5091509150610f5686838387610f60565b9695505050505050565b60608315610fcf578251600003610fc8576001600160a01b0385163b610fc85760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016103f0565b5081610fd9565b610fd98383610fe1565b949350505050565b815115610ff15781518083602001fd5b8060405162461bcd60e51b81526004016103f091906112ae565b60405180606001604052806003906020820280368337509192915050565b60006020828403121561103b57600080fd5b81356001600160e01b031981168114610ee157600080fd5b60006020828403121561106557600080fd5b813561ffff81168114610ee157600080fd5b60608101818360005b60038110156110a257815160ff16835260209283019290910190600101611080565b50505092915050565b6001600160a01b038116811461061d57600080fd5b6000602082840312156110d257600080fd5b8135610ee1816110ab565b60208101600383106110ff57634e487b7160e01b600052602160045260246000fd5b91905290565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561112e57600080fd5b8235611139816110ab565b9150602083013567ffffffffffffffff8082111561115657600080fd5b818501915085601f83011261116a57600080fd5b81358181111561117c5761117c611105565b604051601f8201601f19908116603f011681019083821181831017156111a4576111a4611105565b816040528281528860208487010111156111bd57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6000602082840312156111f157600080fd5b5051919050565b60006001600160a01b03808816835280871660208401525084604083015260806060830152826080830152828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b60006020828403121561125e57600080fd5b81518015158114610ee157600080fd5b60005b83811015611289578181015183820152602001611271565b50506000910152565b600082516112a481846020870161126e565b9190910192915050565b60208152600082518060208401526112cd81604085016020870161126e565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a", + "deployedBytecode": "0x6080604052600436106100f35760003560e01c806352d1902d1161008a578063c4d66de811610059578063c4d66de814610278578063c9c4bfca14610298578063d4b83992146102cc578063efe51cca146102ec57600080fd5b806352d1902d146102175780635c60da1b1461022c5780636accab8c14610241578063776d1a011461025857600080fd5b80633659cfe6116100c65780633659cfe6146101965780634162169f146101b657806341de6830146101e85780634f1ef2861461020457600080fd5b806301ffc9a7146100f8578063039a8c501461012d5780632491118d1461014f5780632ae9c60014610174575b600080fd5b34801561010457600080fd5b50610118610113366004611029565b610303565b60405190151581526020015b60405180910390f35b34801561013957600080fd5b5061014d610148366004611053565b61036f565b005b34801561015b57600080fd5b5061016661012f5481565b604051908152602001610124565b34801561018057600080fd5b5061018961047b565b6040516101249190611077565b3480156101a257600080fd5b5061014d6101b13660046110c0565b6104a5565b3480156101c257600080fd5b5060c9546001600160a01b03165b6040516001600160a01b039091168152602001610124565b3480156101f457600080fd5b50600060405161012491906110dd565b61014d61021236600461111b565b610620565b34801561022357600080fd5b5061016661078c565b34801561023857600080fd5b506101d0610851565b34801561024d57600080fd5b5061016661012d5481565b34801561026457600080fd5b5061014d6102733660046110c0565b610889565b34801561028457600080fd5b5061014d6102933660046110c0565b6108e8565b3480156102a457600080fd5b506101667f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f581565b3480156102d857600080fd5b5060fb546101d0906001600160a01b031681565b3480156102f857600080fd5b5061016661012e5481565b60006001600160e01b0319821663041de68360e41b148061033357506001600160e01b03198216621574e360e91b145b8061034e57506001600160e01b031982166352d1902d60e01b145b8061036957506301ffc9a760e01b6001600160e01b03198316145b92915050565b600054600390610100900460ff16158015610391575060005460ff8083169116105b6103f95760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805461ffff191660ff831617610100179055600261ffff8316101561042157600261012e555b60038261ffff16101561043557600361012f555b6000805461ff001916905560405160ff821681527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b61048361100b565b5060408051606081018252600181526004602082015260009181019190915290565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036105325760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b60648201526084016103f0565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661058d7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b0316146105f85760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b60648201526084016103f0565b610601816109da565b6040805160008082526020820190925261061d91839190610a17565b50565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036106ad5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b60648201526084016103f0565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166107087f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b0316146107735760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b60648201526084016103f0565b61077c826109da565b61078882826001610a17565b5050565b6000306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461082c5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016103f0565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b60006108847f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b60fb80546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d690600090a35050565b600054600390610100900460ff1615801561090a575060005460ff8083169116105b61096d5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016103f0565b6000805461ffff191660ff83161761010017905561098a82610bbc565b600161012d55600261012e55600361012f556000805461ff001916905560405160ff821681527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200161046f565b60c9547f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f590610788906001600160a01b0316303384600036610c30565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610a4f57610a4a83610cec565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610aa9575060408051601f3d908101601f19168201909252610aa6918101906111df565b60015b610b1b5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201527f6f6e206973206e6f74205555505300000000000000000000000000000000000060648201526084016103f0565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114610bb05760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f7860448201527f6961626c6555554944000000000000000000000000000000000000000000000060648201526084016103f0565b50610a4a838383610db7565b600054610100900460ff16610c275760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103f0565b61061d81610de2565b604051637ef7c88360e11b81526001600160a01b0387169063fdef910690610c6490889088908890889088906004016111f8565b602060405180830381865afa158015610c81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca5919061124c565b610ce457604051630cb6f8ed60e21b81526001600160a01b038088166004830152808716602483015285166044820152606481018490526084016103f0565b505050505050565b6001600160a01b0381163b610d695760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e74726163740000000000000000000000000000000000000060648201526084016103f0565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610dc083610e7c565b600082511180610dcd5750805b15610a4a57610ddc8383610ebc565b50505050565b600054610100900460ff16610e4d5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103f0565b60c9805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610e8581610cec565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060610ee183836040518060600160405280602781526020016112e260279139610ee8565b9392505050565b6060600080856001600160a01b031685604051610f059190611292565b600060405180830381855af49150503d8060008114610f40576040519150601f19603f3d011682016040523d82523d6000602084013e610f45565b606091505b5091509150610f5686838387610f60565b9695505050505050565b60608315610fcf578251600003610fc8576001600160a01b0385163b610fc85760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016103f0565b5081610fd9565b610fd98383610fe1565b949350505050565b815115610ff15781518083602001fd5b8060405162461bcd60e51b81526004016103f091906112ae565b60405180606001604052806003906020820280368337509192915050565b60006020828403121561103b57600080fd5b81356001600160e01b031981168114610ee157600080fd5b60006020828403121561106557600080fd5b813561ffff81168114610ee157600080fd5b60608101818360005b60038110156110a257815160ff16835260209283019290910190600101611080565b50505092915050565b6001600160a01b038116811461061d57600080fd5b6000602082840312156110d257600080fd5b8135610ee1816110ab565b60208101600383106110ff57634e487b7160e01b600052602160045260246000fd5b91905290565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561112e57600080fd5b8235611139816110ab565b9150602083013567ffffffffffffffff8082111561115657600080fd5b818501915085601f83011261116a57600080fd5b81358181111561117c5761117c611105565b604051601f8201601f19908116603f011681019083821181831017156111a4576111a4611105565b816040528281528860208487010111156111bd57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6000602082840312156111f157600080fd5b5051919050565b60006001600160a01b03808816835280871660208401525084604083015260806060830152826080830152828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b60006020828403121561125e57600080fd5b81518015158114610ee157600080fd5b60005b83811015611289578181015183820152602001611271565b50506000910152565b600082516112a481846020870161126e565b9190910192915050565b60208152600082518060208401526112cd81604085016020870161126e565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/src/mocks/plugin/PluginUUPSUpgradeableSetupMock.sol/PluginUUPSUpgradeableSetupMockBuild1.dbg.json b/contracts/artifacts/src/mocks/plugin/PluginUUPSUpgradeableSetupMock.sol/PluginUUPSUpgradeableSetupMockBuild1.dbg.json new file mode 100644 index 00000000..930fbb1d --- /dev/null +++ b/contracts/artifacts/src/mocks/plugin/PluginUUPSUpgradeableSetupMock.sol/PluginUUPSUpgradeableSetupMockBuild1.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/9ac591806bb2e846e5a60f79d635058e.json" +} diff --git a/contracts/artifacts/src/mocks/plugin/PluginUUPSUpgradeableSetupMock.sol/PluginUUPSUpgradeableSetupMockBuild1.json b/contracts/artifacts/src/mocks/plugin/PluginUUPSUpgradeableSetupMock.sol/PluginUUPSUpgradeableSetupMockBuild1.json new file mode 100644 index 00000000..82628093 --- /dev/null +++ b/contracts/artifacts/src/mocks/plugin/PluginUUPSUpgradeableSetupMock.sol/PluginUUPSUpgradeableSetupMockBuild1.json @@ -0,0 +1,308 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "PluginUUPSUpgradeableSetupMockBuild1", + "sourceName": "src/mocks/plugin/PluginUUPSUpgradeableSetupMock.sol", + "abi": [ + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "ConflictingValues", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "fromBuild", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "thisBuild", + "type": "uint16" + } + ], + "name": "InvalidUpdatePath", + "type": "error" + }, + { + "inputs": [], + "name": "implementation", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_dao", + "type": "address" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "name": "prepareInstallation", + "outputs": [ + { + "internalType": "address", + "name": "plugin", + "type": "address" + }, + { + "components": [ + { + "internalType": "address[]", + "name": "helpers", + "type": "address[]" + }, + { + "components": [ + { + "internalType": "enum PermissionLib.Operation", + "name": "operation", + "type": "uint8" + }, + { + "internalType": "address", + "name": "where", + "type": "address" + }, + { + "internalType": "address", + "name": "who", + "type": "address" + }, + { + "internalType": "address", + "name": "condition", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "permissionId", + "type": "bytes32" + } + ], + "internalType": "struct PermissionLib.MultiTargetPermission[]", + "name": "permissions", + "type": "tuple[]" + } + ], + "internalType": "struct IPluginSetup.PreparedSetupData", + "name": "preparedSetupData", + "type": "tuple" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_dao", + "type": "address" + }, + { + "components": [ + { + "internalType": "address", + "name": "plugin", + "type": "address" + }, + { + "internalType": "address[]", + "name": "currentHelpers", + "type": "address[]" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "internalType": "struct IPluginSetup.SetupPayload", + "name": "_payload", + "type": "tuple" + } + ], + "name": "prepareUninstallation", + "outputs": [ + { + "components": [ + { + "internalType": "enum PermissionLib.Operation", + "name": "operation", + "type": "uint8" + }, + { + "internalType": "address", + "name": "where", + "type": "address" + }, + { + "internalType": "address", + "name": "who", + "type": "address" + }, + { + "internalType": "address", + "name": "condition", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "permissionId", + "type": "bytes32" + } + ], + "internalType": "struct PermissionLib.MultiTargetPermission[]", + "name": "permissions", + "type": "tuple[]" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_dao", + "type": "address" + }, + { + "internalType": "uint16", + "name": "_fromBuild", + "type": "uint16" + }, + { + "components": [ + { + "internalType": "address", + "name": "plugin", + "type": "address" + }, + { + "internalType": "address[]", + "name": "currentHelpers", + "type": "address[]" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "internalType": "struct IPluginSetup.SetupPayload", + "name": "_payload", + "type": "tuple" + } + ], + "name": "prepareUpdate", + "outputs": [ + { + "internalType": "bytes", + "name": "", + "type": "bytes" + }, + { + "components": [ + { + "internalType": "address[]", + "name": "helpers", + "type": "address[]" + }, + { + "components": [ + { + "internalType": "enum PermissionLib.Operation", + "name": "operation", + "type": "uint8" + }, + { + "internalType": "address", + "name": "where", + "type": "address" + }, + { + "internalType": "address", + "name": "who", + "type": "address" + }, + { + "internalType": "address", + "name": "condition", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "permissionId", + "type": "bytes32" + } + ], + "internalType": "struct PermissionLib.MultiTargetPermission[]", + "name": "permissions", + "type": "tuple[]" + } + ], + "internalType": "struct IPluginSetup.PreparedSetupData", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "protocolVersion", + "outputs": [ + { + "internalType": "uint8[3]", + "name": "", + "type": "uint8[3]" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "_interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x60a060405234801561001057600080fd5b5060405161001d9061004b565b604051809103906000f080158015610039573d6000803e3d6000fd5b506001600160a01b0316608052610058565b6112c88061126083390190565b6080516111e76100796000396000818160d201526102d301526111e76000f3fe60806040523480156200001157600080fd5b50600436106200007b5760003560e01c80639cb0a12411620000565780639cb0a12414620000fd578063a8a9c29e1462000123578063f10832f1146200014a57600080fd5b806301ffc9a714620000805780632ae9c60014620000ac5780635c60da1b14620000c5575b600080fd5b6200009762000091366004620005f8565b62000171565b60405190151581526020015b60405180910390f35b620000b6620001c4565b604051620000a3919062000624565b6040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152602001620000a3565b620001146200010e3660046200068a565b620001f0565b604051620000a391906200075b565b6200013a62000134366004620007a8565b62000208565b604051620000a3929190620008f7565b620001616200015b3660046200093f565b6200024f565b604051620000a392919062000a0d565b60006001600160e01b0319821663099718b560e41b1480620001a257506001600160e01b03198216621574e360e91b145b80620001be57506301ffc9a760e01b6001600160e01b03198316145b92915050565b620001ce620005cc565b5060408051606081018252600181526004602082015260009181019190915290565b606062000201600060018062000333565b9392505050565b606062000228604051806040016040528060608152602001606081525090565b60405163098990c560e11b8152600060048201526001602482015260440160405180910390fd5b60006200026f604051806040016040528060608152602001606081525090565b6040516001600160a01b038516602482015260009060440160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663189acdbd60e31b17905290506200030581620002f57f000000000000000000000000000000000000000000000000000000000000000090565b6001600160a01b031690620004cc565b925062000313600162000508565b825262000324600060018162000333565b60208301525090939092509050565b6060826001600160a01b0316846001600160a01b031611156200036957604051633a4013cd60e21b815260040160405180910390fd5b62000375848462000a4f565b6001600160a01b031667ffffffffffffffff81111562000399576200039962000929565b604051908082528060200260200182016040528015620003f457816020015b6040805160a081018252600080825260208083018290529282018190526060820181905260808201528252600019909201910181620003b85790505b509050835b836001600160a01b0316816001600160a01b03161015620004c4576040518060a00160405280846002811115620004345762000434620006de565b81526001600160a01b038316602082018190526040820152600060608201527fa280eec51ab8e1bc4b6b0c1b7f1bde785761b787a49db404e3e9338ed9b016ef6080909101528262000487878462000a4f565b6001600160a01b031681518110620004a357620004a362000a79565b60200260200101819052508080620004bb9062000a8f565b915050620003f9565b509392505050565b60008282604051620004de90620005ea565b620004eb92919062000ab8565b604051809103906000f080158015620004c4573d6000803e3d6000fd5b6060816001600160a01b031667ffffffffffffffff8111156200052f576200052f62000929565b60405190808252806020026020018201604052801562000559578160200160208202803683370190505b50905060005b826001600160a01b0316816001600160a01b03161015620005c6578082826001600160a01b03168151811062000599576200059962000a79565b6001600160a01b039092166020928302919091019091015280620005bd8162000a8f565b9150506200055f565b50919050565b60405180606001604052806003906020820280368337509192915050565b6106fe8062000add83390190565b6000602082840312156200060b57600080fd5b81356001600160e01b0319811681146200020157600080fd5b60608101818360005b60038110156200065157815160ff168352602092830192909101906001016200062d565b50505092915050565b80356001600160a01b03811681146200067257600080fd5b919050565b600060608284031215620005c657600080fd5b600080604083850312156200069e57600080fd5b620006a9836200065a565b9150602083013567ffffffffffffffff811115620006c657600080fd5b620006d48582860162000677565b9150509250929050565b634e487b7160e01b600052602160045260246000fd5b60008151600381106200071757634e487b7160e01b600052602160045260246000fd5b8352506020818101516001600160a01b0390811691840191909152604080830151821690840152606080830151909116908301526080908101519082015260a00190565b6020808252825182820181905260009190848201906040850190845b818110156200079c576200078d838551620006f4565b93850193925060010162000777565b50909695505050505050565b600080600060608486031215620007be57600080fd5b620007c9846200065a565b9250602084013561ffff81168114620007e157600080fd5b9150604084013567ffffffffffffffff811115620007fe57600080fd5b6200080c8682870162000677565b9150509250925092565b6000815180845260005b818110156200083e5760208185018101518683018201520162000820565b506000602082860101526020601f19601f83011685010191505092915050565b805160408084528151908401819052600091602091908201906060860190845b81811015620008a55783516001600160a01b0316835292840192918401916001016200087e565b50508483015186820387850152805180835290840192506000918401905b80831015620008ec57620008d9828551620006f4565b91508484019350600183019250620008c3565b509695505050505050565b6040815260006200090c604083018562000816565b82810360208401526200092081856200085e565b95945050505050565b634e487b7160e01b600052604160045260246000fd5b600080604083850312156200095357600080fd5b6200095e836200065a565b9150602083013567ffffffffffffffff808211156200097c57600080fd5b818501915085601f8301126200099157600080fd5b813581811115620009a657620009a662000929565b604051601f8201601f19908116603f01168101908382118183101715620009d157620009d162000929565b81604052828152886020848701011115620009eb57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6001600160a01b038316815260406020820152600062000a3160408301846200085e565b949350505050565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0382811682821603908082111562000a725762000a7262000a39565b5092915050565b634e487b7160e01b600052603260045260246000fd5b60006001600160a01b0380831681810362000aae5762000aae62000a39565b6001019392505050565b6001600160a01b038316815260406020820152600062000a3160408301846200081656fe60806040526040516106fe3803806106fe83398101604081905261002291610319565b61002e82826000610035565b5050610436565b61003e8361006b565b60008251118061004b5750805b156100665761006483836100ab60201b6100291760201c565b505b505050565b610074816100d7565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606100d083836040518060600160405280602781526020016106d7602791396101a9565b9392505050565b6100ea8161022260201b6100551760201c565b6101515760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b806101887f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61023160201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6060600080856001600160a01b0316856040516101c691906103e7565b600060405180830381855af49150503d8060008114610201576040519150601f19603f3d011682016040523d82523d6000602084013e610206565b606091505b50909250905061021886838387610234565b9695505050505050565b6001600160a01b03163b151590565b90565b606083156102a357825160000361029c576001600160a01b0385163b61029c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610148565b50816102ad565b6102ad83836102b5565b949350505050565b8151156102c55781518083602001fd5b8060405162461bcd60e51b81526004016101489190610403565b634e487b7160e01b600052604160045260246000fd5b60005b838110156103105781810151838201526020016102f8565b50506000910152565b6000806040838503121561032c57600080fd5b82516001600160a01b038116811461034357600080fd5b60208401519092506001600160401b038082111561036057600080fd5b818501915085601f83011261037457600080fd5b815181811115610386576103866102df565b604051601f8201601f19908116603f011681019083821181831017156103ae576103ae6102df565b816040528281528860208487010111156103c757600080fd5b6103d88360208301602088016102f5565b80955050505050509250929050565b600082516103f98184602087016102f5565b9190910192915050565b60208152600082518060208401526104228160408501602087016102f5565b601f01601f19169190910160400192915050565b610292806104456000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b61009f565b565b606061004e838360405180606001604052806027815260200161025f602791396100c3565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e8080156100be573d6000f35b3d6000fd5b6060600080856001600160a01b0316856040516100e0919061020f565b600060405180830381855af49150503d806000811461011b576040519150601f19603f3d011682016040523d82523d6000602084013e610120565b606091505b50915091506101318683838761013b565b9695505050505050565b606083156101af5782516000036101a8576001600160a01b0385163b6101a85760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b50816101b9565b6101b983836101c1565b949350505050565b8151156101d15781518083602001fd5b8060405162461bcd60e51b815260040161019f919061022b565b60005b838110156102065781810151838201526020016101ee565b50506000910152565b600082516102218184602087016101eb565b9190910192915050565b602081526000825180602084015261024a8160408501602087016101eb565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a60a06040523060805234801561001457600080fd5b5061001d610022565b6100e1565b600054610100900460ff161561008e5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116146100df576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6080516111b061011860003960008181610334015281816103be015281816104b401528181610539015261062301526111b06000f3fe6080604052600436106100d25760003560e01c806352d1902d1161007f578063776d1a0111610059578063776d1a0114610200578063c4d66de814610220578063c9c4bfca14610240578063d4b839921461027457600080fd5b806352d1902d146101b15780635c60da1b146101d45780636accab8c146101e957600080fd5b80634162169f116100b05780634162169f1461015057806341de6830146101825780634f1ef2861461019e57600080fd5b806301ffc9a7146100d75780632ae9c6001461010c5780633659cfe61461012e575b600080fd5b3480156100e357600080fd5b506100f76100f2366004610ee8565b610294565b60405190151581526020015b60405180910390f35b34801561011857600080fd5b50610121610300565b6040516101039190610f12565b34801561013a57600080fd5b5061014e610149366004610f5b565b61032a565b005b34801561015c57600080fd5b5060c9546001600160a01b03165b6040516001600160a01b039091168152602001610103565b34801561018e57600080fd5b5060006040516101039190610f78565b61014e6101ac366004610fb6565b6104aa565b3480156101bd57600080fd5b506101c6610616565b604051908152602001610103565b3480156101e057600080fd5b5061016a6106db565b3480156101f557600080fd5b506101c661012d5481565b34801561020c57600080fd5b5061014e61021b366004610f5b565b610713565b34801561022c57600080fd5b5061014e61023b366004610f5b565b610772565b34801561024c57600080fd5b506101c67f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f581565b34801561028057600080fd5b5060fb5461016a906001600160a01b031681565b60006001600160e01b0319821663041de68360e41b14806102c457506001600160e01b03198216621574e360e91b145b806102df57506001600160e01b031982166352d1902d60e01b145b806102fa57506301ffc9a760e01b6001600160e01b03198316145b92915050565b610308610eca565b5060408051606081018252600181526004602082015260009181019190915290565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036103bc5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b60648201526084015b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166104177f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b0316146104825760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b60648201526084016103b3565b61048b81610899565b604080516000808252602082019092526104a7918391906108d6565b50565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036105375760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b60648201526084016103b3565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166105927f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b0316146105fd5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b60648201526084016103b3565b61060682610899565b610612828260016108d6565b5050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106b65760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016103b3565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b600061070e7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b60fb80546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d690600090a35050565b600054610100900460ff16158080156107925750600054600160ff909116105b806107ac5750303b1580156107ac575060005460ff166001145b61081e5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016103b3565b6000805460ff191660011790558015610841576000805461ff0019166101001790555b61084a82610a7b565b600161012d558015610612576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b60c9547f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f590610612906001600160a01b0316303384600036610aef565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561090e5761090983610bab565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610968575060408051601f3d908101601f191682019092526109659181019061107a565b60015b6109da5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201527f6f6e206973206e6f74205555505300000000000000000000000000000000000060648201526084016103b3565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114610a6f5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f7860448201527f6961626c6555554944000000000000000000000000000000000000000000000060648201526084016103b3565b50610909838383610c76565b600054610100900460ff16610ae65760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103b3565b6104a781610ca1565b604051637ef7c88360e11b81526001600160a01b0387169063fdef910690610b239088908890889088908890600401611093565b602060405180830381865afa158015610b40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6491906110e7565b610ba357604051630cb6f8ed60e21b81526001600160a01b038088166004830152808716602483015285166044820152606481018490526084016103b3565b505050505050565b6001600160a01b0381163b610c285760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e74726163740000000000000000000000000000000000000060648201526084016103b3565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610c7f83610d3b565b600082511180610c8c5750805b1561090957610c9b8383610d7b565b50505050565b600054610100900460ff16610d0c5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103b3565b60c9805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610d4481610bab565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060610da0838360405180606001604052806027815260200161117d60279139610da7565b9392505050565b6060600080856001600160a01b031685604051610dc4919061112d565b600060405180830381855af49150503d8060008114610dff576040519150601f19603f3d011682016040523d82523d6000602084013e610e04565b606091505b5091509150610e1586838387610e1f565b9695505050505050565b60608315610e8e578251600003610e87576001600160a01b0385163b610e875760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016103b3565b5081610e98565b610e988383610ea0565b949350505050565b815115610eb05781518083602001fd5b8060405162461bcd60e51b81526004016103b39190611149565b60405180606001604052806003906020820280368337509192915050565b600060208284031215610efa57600080fd5b81356001600160e01b031981168114610da057600080fd5b60608101818360005b6003811015610f3d57815160ff16835260209283019290910190600101610f1b565b50505092915050565b6001600160a01b03811681146104a757600080fd5b600060208284031215610f6d57600080fd5b8135610da081610f46565b6020810160038310610f9a57634e487b7160e01b600052602160045260246000fd5b91905290565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215610fc957600080fd5b8235610fd481610f46565b9150602083013567ffffffffffffffff80821115610ff157600080fd5b818501915085601f83011261100557600080fd5b81358181111561101757611017610fa0565b604051601f8201601f19908116603f0116810190838211818310171561103f5761103f610fa0565b8160405282815288602084870101111561105857600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60006020828403121561108c57600080fd5b5051919050565b60006001600160a01b03808816835280871660208401525084604083015260806060830152826080830152828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b6000602082840312156110f957600080fd5b81518015158114610da057600080fd5b60005b8381101561112457818101518382015260200161110c565b50506000910152565b6000825161113f818460208701611109565b9190910192915050565b6020815260008251806020840152611168816040850160208701611109565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a", + "deployedBytecode": "0x60806040523480156200001157600080fd5b50600436106200007b5760003560e01c80639cb0a12411620000565780639cb0a12414620000fd578063a8a9c29e1462000123578063f10832f1146200014a57600080fd5b806301ffc9a714620000805780632ae9c60014620000ac5780635c60da1b14620000c5575b600080fd5b6200009762000091366004620005f8565b62000171565b60405190151581526020015b60405180910390f35b620000b6620001c4565b604051620000a3919062000624565b6040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152602001620000a3565b620001146200010e3660046200068a565b620001f0565b604051620000a391906200075b565b6200013a62000134366004620007a8565b62000208565b604051620000a3929190620008f7565b620001616200015b3660046200093f565b6200024f565b604051620000a392919062000a0d565b60006001600160e01b0319821663099718b560e41b1480620001a257506001600160e01b03198216621574e360e91b145b80620001be57506301ffc9a760e01b6001600160e01b03198316145b92915050565b620001ce620005cc565b5060408051606081018252600181526004602082015260009181019190915290565b606062000201600060018062000333565b9392505050565b606062000228604051806040016040528060608152602001606081525090565b60405163098990c560e11b8152600060048201526001602482015260440160405180910390fd5b60006200026f604051806040016040528060608152602001606081525090565b6040516001600160a01b038516602482015260009060440160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663189acdbd60e31b17905290506200030581620002f57f000000000000000000000000000000000000000000000000000000000000000090565b6001600160a01b031690620004cc565b925062000313600162000508565b825262000324600060018162000333565b60208301525090939092509050565b6060826001600160a01b0316846001600160a01b031611156200036957604051633a4013cd60e21b815260040160405180910390fd5b62000375848462000a4f565b6001600160a01b031667ffffffffffffffff81111562000399576200039962000929565b604051908082528060200260200182016040528015620003f457816020015b6040805160a081018252600080825260208083018290529282018190526060820181905260808201528252600019909201910181620003b85790505b509050835b836001600160a01b0316816001600160a01b03161015620004c4576040518060a00160405280846002811115620004345762000434620006de565b81526001600160a01b038316602082018190526040820152600060608201527fa280eec51ab8e1bc4b6b0c1b7f1bde785761b787a49db404e3e9338ed9b016ef6080909101528262000487878462000a4f565b6001600160a01b031681518110620004a357620004a362000a79565b60200260200101819052508080620004bb9062000a8f565b915050620003f9565b509392505050565b60008282604051620004de90620005ea565b620004eb92919062000ab8565b604051809103906000f080158015620004c4573d6000803e3d6000fd5b6060816001600160a01b031667ffffffffffffffff8111156200052f576200052f62000929565b60405190808252806020026020018201604052801562000559578160200160208202803683370190505b50905060005b826001600160a01b0316816001600160a01b03161015620005c6578082826001600160a01b03168151811062000599576200059962000a79565b6001600160a01b039092166020928302919091019091015280620005bd8162000a8f565b9150506200055f565b50919050565b60405180606001604052806003906020820280368337509192915050565b6106fe8062000add83390190565b6000602082840312156200060b57600080fd5b81356001600160e01b0319811681146200020157600080fd5b60608101818360005b60038110156200065157815160ff168352602092830192909101906001016200062d565b50505092915050565b80356001600160a01b03811681146200067257600080fd5b919050565b600060608284031215620005c657600080fd5b600080604083850312156200069e57600080fd5b620006a9836200065a565b9150602083013567ffffffffffffffff811115620006c657600080fd5b620006d48582860162000677565b9150509250929050565b634e487b7160e01b600052602160045260246000fd5b60008151600381106200071757634e487b7160e01b600052602160045260246000fd5b8352506020818101516001600160a01b0390811691840191909152604080830151821690840152606080830151909116908301526080908101519082015260a00190565b6020808252825182820181905260009190848201906040850190845b818110156200079c576200078d838551620006f4565b93850193925060010162000777565b50909695505050505050565b600080600060608486031215620007be57600080fd5b620007c9846200065a565b9250602084013561ffff81168114620007e157600080fd5b9150604084013567ffffffffffffffff811115620007fe57600080fd5b6200080c8682870162000677565b9150509250925092565b6000815180845260005b818110156200083e5760208185018101518683018201520162000820565b506000602082860101526020601f19601f83011685010191505092915050565b805160408084528151908401819052600091602091908201906060860190845b81811015620008a55783516001600160a01b0316835292840192918401916001016200087e565b50508483015186820387850152805180835290840192506000918401905b80831015620008ec57620008d9828551620006f4565b91508484019350600183019250620008c3565b509695505050505050565b6040815260006200090c604083018562000816565b82810360208401526200092081856200085e565b95945050505050565b634e487b7160e01b600052604160045260246000fd5b600080604083850312156200095357600080fd5b6200095e836200065a565b9150602083013567ffffffffffffffff808211156200097c57600080fd5b818501915085601f8301126200099157600080fd5b813581811115620009a657620009a662000929565b604051601f8201601f19908116603f01168101908382118183101715620009d157620009d162000929565b81604052828152886020848701011115620009eb57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6001600160a01b038316815260406020820152600062000a3160408301846200085e565b949350505050565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0382811682821603908082111562000a725762000a7262000a39565b5092915050565b634e487b7160e01b600052603260045260246000fd5b60006001600160a01b0380831681810362000aae5762000aae62000a39565b6001019392505050565b6001600160a01b038316815260406020820152600062000a3160408301846200081656fe60806040526040516106fe3803806106fe83398101604081905261002291610319565b61002e82826000610035565b5050610436565b61003e8361006b565b60008251118061004b5750805b156100665761006483836100ab60201b6100291760201c565b505b505050565b610074816100d7565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606100d083836040518060600160405280602781526020016106d7602791396101a9565b9392505050565b6100ea8161022260201b6100551760201c565b6101515760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b806101887f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61023160201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6060600080856001600160a01b0316856040516101c691906103e7565b600060405180830381855af49150503d8060008114610201576040519150601f19603f3d011682016040523d82523d6000602084013e610206565b606091505b50909250905061021886838387610234565b9695505050505050565b6001600160a01b03163b151590565b90565b606083156102a357825160000361029c576001600160a01b0385163b61029c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610148565b50816102ad565b6102ad83836102b5565b949350505050565b8151156102c55781518083602001fd5b8060405162461bcd60e51b81526004016101489190610403565b634e487b7160e01b600052604160045260246000fd5b60005b838110156103105781810151838201526020016102f8565b50506000910152565b6000806040838503121561032c57600080fd5b82516001600160a01b038116811461034357600080fd5b60208401519092506001600160401b038082111561036057600080fd5b818501915085601f83011261037457600080fd5b815181811115610386576103866102df565b604051601f8201601f19908116603f011681019083821181831017156103ae576103ae6102df565b816040528281528860208487010111156103c757600080fd5b6103d88360208301602088016102f5565b80955050505050509250929050565b600082516103f98184602087016102f5565b9190910192915050565b60208152600082518060208401526104228160408501602087016102f5565b601f01601f19169190910160400192915050565b610292806104456000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b61009f565b565b606061004e838360405180606001604052806027815260200161025f602791396100c3565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e8080156100be573d6000f35b3d6000fd5b6060600080856001600160a01b0316856040516100e0919061020f565b600060405180830381855af49150503d806000811461011b576040519150601f19603f3d011682016040523d82523d6000602084013e610120565b606091505b50915091506101318683838761013b565b9695505050505050565b606083156101af5782516000036101a8576001600160a01b0385163b6101a85760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b50816101b9565b6101b983836101c1565b949350505050565b8151156101d15781518083602001fd5b8060405162461bcd60e51b815260040161019f919061022b565b60005b838110156102065781810151838201526020016101ee565b50506000910152565b600082516102218184602087016101eb565b9190910192915050565b602081526000825180602084015261024a8160408501602087016101eb565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/src/mocks/plugin/PluginUUPSUpgradeableSetupMock.sol/PluginUUPSUpgradeableSetupMockBuild2.dbg.json b/contracts/artifacts/src/mocks/plugin/PluginUUPSUpgradeableSetupMock.sol/PluginUUPSUpgradeableSetupMockBuild2.dbg.json new file mode 100644 index 00000000..930fbb1d --- /dev/null +++ b/contracts/artifacts/src/mocks/plugin/PluginUUPSUpgradeableSetupMock.sol/PluginUUPSUpgradeableSetupMockBuild2.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/9ac591806bb2e846e5a60f79d635058e.json" +} diff --git a/contracts/artifacts/src/mocks/plugin/PluginUUPSUpgradeableSetupMock.sol/PluginUUPSUpgradeableSetupMockBuild2.json b/contracts/artifacts/src/mocks/plugin/PluginUUPSUpgradeableSetupMock.sol/PluginUUPSUpgradeableSetupMockBuild2.json new file mode 100644 index 00000000..eeb18641 --- /dev/null +++ b/contracts/artifacts/src/mocks/plugin/PluginUUPSUpgradeableSetupMock.sol/PluginUUPSUpgradeableSetupMockBuild2.json @@ -0,0 +1,308 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "PluginUUPSUpgradeableSetupMockBuild2", + "sourceName": "src/mocks/plugin/PluginUUPSUpgradeableSetupMock.sol", + "abi": [ + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "ConflictingValues", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "fromBuild", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "thisBuild", + "type": "uint16" + } + ], + "name": "InvalidUpdatePath", + "type": "error" + }, + { + "inputs": [], + "name": "implementation", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_dao", + "type": "address" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "name": "prepareInstallation", + "outputs": [ + { + "internalType": "address", + "name": "plugin", + "type": "address" + }, + { + "components": [ + { + "internalType": "address[]", + "name": "helpers", + "type": "address[]" + }, + { + "components": [ + { + "internalType": "enum PermissionLib.Operation", + "name": "operation", + "type": "uint8" + }, + { + "internalType": "address", + "name": "where", + "type": "address" + }, + { + "internalType": "address", + "name": "who", + "type": "address" + }, + { + "internalType": "address", + "name": "condition", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "permissionId", + "type": "bytes32" + } + ], + "internalType": "struct PermissionLib.MultiTargetPermission[]", + "name": "permissions", + "type": "tuple[]" + } + ], + "internalType": "struct IPluginSetup.PreparedSetupData", + "name": "preparedSetupData", + "type": "tuple" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_dao", + "type": "address" + }, + { + "components": [ + { + "internalType": "address", + "name": "plugin", + "type": "address" + }, + { + "internalType": "address[]", + "name": "currentHelpers", + "type": "address[]" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "internalType": "struct IPluginSetup.SetupPayload", + "name": "_payload", + "type": "tuple" + } + ], + "name": "prepareUninstallation", + "outputs": [ + { + "components": [ + { + "internalType": "enum PermissionLib.Operation", + "name": "operation", + "type": "uint8" + }, + { + "internalType": "address", + "name": "where", + "type": "address" + }, + { + "internalType": "address", + "name": "who", + "type": "address" + }, + { + "internalType": "address", + "name": "condition", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "permissionId", + "type": "bytes32" + } + ], + "internalType": "struct PermissionLib.MultiTargetPermission[]", + "name": "permissions", + "type": "tuple[]" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_dao", + "type": "address" + }, + { + "internalType": "uint16", + "name": "_fromBuild", + "type": "uint16" + }, + { + "components": [ + { + "internalType": "address", + "name": "plugin", + "type": "address" + }, + { + "internalType": "address[]", + "name": "currentHelpers", + "type": "address[]" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "internalType": "struct IPluginSetup.SetupPayload", + "name": "_payload", + "type": "tuple" + } + ], + "name": "prepareUpdate", + "outputs": [ + { + "internalType": "bytes", + "name": "initData", + "type": "bytes" + }, + { + "components": [ + { + "internalType": "address[]", + "name": "helpers", + "type": "address[]" + }, + { + "components": [ + { + "internalType": "enum PermissionLib.Operation", + "name": "operation", + "type": "uint8" + }, + { + "internalType": "address", + "name": "where", + "type": "address" + }, + { + "internalType": "address", + "name": "who", + "type": "address" + }, + { + "internalType": "address", + "name": "condition", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "permissionId", + "type": "bytes32" + } + ], + "internalType": "struct PermissionLib.MultiTargetPermission[]", + "name": "permissions", + "type": "tuple[]" + } + ], + "internalType": "struct IPluginSetup.PreparedSetupData", + "name": "preparedSetupData", + "type": "tuple" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "protocolVersion", + "outputs": [ + { + "internalType": "uint8[3]", + "name": "", + "type": "uint8[3]" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "_interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x60a060405234801561001057600080fd5b5060405161001d9061004b565b604051809103906000f080158015610039573d6000803e3d6000fd5b506001600160a01b0316608052610058565b6113f1806112c683390190565b60805161124d6100796000396000818160d20152610339015261124d6000f3fe60806040523480156200001157600080fd5b50600436106200007b5760003560e01c80639cb0a12411620000565780639cb0a12414620000fd578063a8a9c29e1462000123578063f10832f1146200014a57600080fd5b806301ffc9a714620000805780632ae9c60014620000ac5780635c60da1b14620000c5575b600080fd5b62000097620000913660046200065e565b62000171565b60405190151581526020015b60405180910390f35b620000b6620001c4565b604051620000a391906200068a565b6040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152602001620000a3565b620001146200010e366004620006f0565b620001f0565b604051620000a39190620007c1565b6200013a620001343660046200080e565b62000209565b604051620000a39291906200095d565b620001616200015b366004620009a5565b620002b5565b604051620000a392919062000a73565b60006001600160e01b0319821663099718b560e41b1480620001a257506001600160e01b03198216621574e360e91b145b80620001be57506301ffc9a760e01b6001600160e01b03198316145b92915050565b620001ce62000632565b5060408051606081018252600181526004602082015260009181019190915290565b60606200020260006002600162000399565b9392505050565b606062000229604051806040016040528060608152602001606081525090565b8361ffff16600103620002ad5762000242600262000532565b815260405161ffff8516602482015260440160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166239a8c560e41b1790529150620002a761ffff85166002600062000399565b60208201525b935093915050565b6000620002d5604051806040016040528060608152602001606081525090565b6040516001600160a01b038516602482015260009060440160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663189acdbd60e31b17905290506200036b816200035b7f000000000000000000000000000000000000000000000000000000000000000090565b6001600160a01b031690620005f6565b925062000379600262000532565b82526200038a600060028162000399565b60208301525090939092509050565b6060826001600160a01b0316846001600160a01b03161115620003cf57604051633a4013cd60e21b815260040160405180910390fd5b620003db848462000ab5565b6001600160a01b031667ffffffffffffffff811115620003ff57620003ff6200098f565b6040519080825280602002602001820160405280156200045a57816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282526000199092019101816200041e5790505b509050835b836001600160a01b0316816001600160a01b031610156200052a576040518060a001604052808460028111156200049a576200049a62000744565b81526001600160a01b038316602082018190526040820152600060608201527fa280eec51ab8e1bc4b6b0c1b7f1bde785761b787a49db404e3e9338ed9b016ef60809091015282620004ed878462000ab5565b6001600160a01b03168151811062000509576200050962000adf565b60200260200101819052508080620005219062000af5565b9150506200045f565b509392505050565b6060816001600160a01b031667ffffffffffffffff8111156200055957620005596200098f565b60405190808252806020026020018201604052801562000583578160200160208202803683370190505b50905060005b826001600160a01b0316816001600160a01b03161015620005f0578082826001600160a01b031681518110620005c357620005c362000adf565b6001600160a01b039092166020928302919091019091015280620005e78162000af5565b91505062000589565b50919050565b60008282604051620006089062000650565b6200061592919062000b1e565b604051809103906000f0801580156200052a573d6000803e3d6000fd5b60405180606001604052806003906020820280368337509192915050565b6106fe8062000b4383390190565b6000602082840312156200067157600080fd5b81356001600160e01b0319811681146200020257600080fd5b60608101818360005b6003811015620006b757815160ff1683526020928301929091019060010162000693565b50505092915050565b80356001600160a01b0381168114620006d857600080fd5b919050565b600060608284031215620005f057600080fd5b600080604083850312156200070457600080fd5b6200070f83620006c0565b9150602083013567ffffffffffffffff8111156200072c57600080fd5b6200073a85828601620006dd565b9150509250929050565b634e487b7160e01b600052602160045260246000fd5b60008151600381106200077d57634e487b7160e01b600052602160045260246000fd5b8352506020818101516001600160a01b0390811691840191909152604080830151821690840152606080830151909116908301526080908101519082015260a00190565b6020808252825182820181905260009190848201906040850190845b818110156200080257620007f38385516200075a565b938501939250600101620007dd565b50909695505050505050565b6000806000606084860312156200082457600080fd5b6200082f84620006c0565b9250602084013561ffff811681146200084757600080fd5b9150604084013567ffffffffffffffff8111156200086457600080fd5b6200087286828701620006dd565b9150509250925092565b6000815180845260005b81811015620008a45760208185018101518683018201520162000886565b506000602082860101526020601f19601f83011685010191505092915050565b805160408084528151908401819052600091602091908201906060860190845b818110156200090b5783516001600160a01b031683529284019291840191600101620008e4565b50508483015186820387850152805180835290840192506000918401905b8083101562000952576200093f8285516200075a565b9150848401935060018301925062000929565b509695505050505050565b6040815260006200097260408301856200087c565b8281036020840152620009868185620008c4565b95945050505050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215620009b957600080fd5b620009c483620006c0565b9150602083013567ffffffffffffffff80821115620009e257600080fd5b818501915085601f830112620009f757600080fd5b81358181111562000a0c5762000a0c6200098f565b604051601f8201601f19908116603f0116810190838211818310171562000a375762000a376200098f565b8160405282815288602084870101111562000a5157600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6001600160a01b038316815260406020820152600062000a976040830184620008c4565b949350505050565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0382811682821603908082111562000ad85762000ad862000a9f565b5092915050565b634e487b7160e01b600052603260045260246000fd5b60006001600160a01b0380831681810362000b145762000b1462000a9f565b6001019392505050565b6001600160a01b038316815260406020820152600062000a9760408301846200087c56fe60806040526040516106fe3803806106fe83398101604081905261002291610319565b61002e82826000610035565b5050610436565b61003e8361006b565b60008251118061004b5750805b156100665761006483836100ab60201b6100291760201c565b505b505050565b610074816100d7565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606100d083836040518060600160405280602781526020016106d7602791396101a9565b9392505050565b6100ea8161022260201b6100551760201c565b6101515760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b806101887f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61023160201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6060600080856001600160a01b0316856040516101c691906103e7565b600060405180830381855af49150503d8060008114610201576040519150601f19603f3d011682016040523d82523d6000602084013e610206565b606091505b50909250905061021886838387610234565b9695505050505050565b6001600160a01b03163b151590565b90565b606083156102a357825160000361029c576001600160a01b0385163b61029c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610148565b50816102ad565b6102ad83836102b5565b949350505050565b8151156102c55781518083602001fd5b8060405162461bcd60e51b81526004016101489190610403565b634e487b7160e01b600052604160045260246000fd5b60005b838110156103105781810151838201526020016102f8565b50506000910152565b6000806040838503121561032c57600080fd5b82516001600160a01b038116811461034357600080fd5b60208401519092506001600160401b038082111561036057600080fd5b818501915085601f83011261037457600080fd5b815181811115610386576103866102df565b604051601f8201601f19908116603f011681019083821181831017156103ae576103ae6102df565b816040528281528860208487010111156103c757600080fd5b6103d88360208301602088016102f5565b80955050505050509250929050565b600082516103f98184602087016102f5565b9190910192915050565b60208152600082518060208401526104228160408501602087016102f5565b601f01601f19169190910160400192915050565b610292806104456000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b61009f565b565b606061004e838360405180606001604052806027815260200161025f602791396100c3565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e8080156100be573d6000f35b3d6000fd5b6060600080856001600160a01b0316856040516100e0919061020f565b600060405180830381855af49150503d806000811461011b576040519150601f19603f3d011682016040523d82523d6000602084013e610120565b606091505b50915091506101318683838761013b565b9695505050505050565b606083156101af5782516000036101a8576001600160a01b0385163b6101a85760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b50816101b9565b6101b983836101c1565b949350505050565b8151156101d15781518083602001fd5b8060405162461bcd60e51b815260040161019f919061022b565b60005b838110156102065781810151838201526020016101ee565b50506000910152565b600082516102218184602087016101eb565b9190910192915050565b602081526000825180602084015261024a8160408501602087016101eb565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a60a06040523060805234801561001457600080fd5b5061001d610022565b6100e1565b600054610100900460ff161561008e5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116146100df576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6080516112d961011860003960008181610479015281816104fe015281816105f401528181610679015261076301526112d96000f3fe6080604052600436106100e85760003560e01c806352d1902d1161008a578063c4d66de811610059578063c4d66de814610256578063c9c4bfca14610276578063d4b83992146102aa578063efe51cca146102ca57600080fd5b806352d1902d146101e75780635c60da1b1461020a5780636accab8c1461021f578063776d1a011461023657600080fd5b80633659cfe6116100c65780633659cfe6146101665780634162169f1461018657806341de6830146101b85780634f1ef286146101d457600080fd5b806301ffc9a7146100ed578063039a8c50146101225780632ae9c60014610144575b600080fd5b3480156100f957600080fd5b5061010d610108366004610fed565b6102e1565b60405190151581526020015b60405180910390f35b34801561012e57600080fd5b5061014261013d366004611017565b61034d565b005b34801561015057600080fd5b50610159610445565b604051610119919061103b565b34801561017257600080fd5b50610142610181366004611084565b61046f565b34801561019257600080fd5b5060c9546001600160a01b03165b6040516001600160a01b039091168152602001610119565b3480156101c457600080fd5b50600060405161011991906110a1565b6101426101e23660046110df565b6105ea565b3480156101f357600080fd5b506101fc610756565b604051908152602001610119565b34801561021657600080fd5b506101a061081b565b34801561022b57600080fd5b506101fc61012d5481565b34801561024257600080fd5b50610142610251366004611084565b610853565b34801561026257600080fd5b50610142610271366004611084565b6108b2565b34801561028257600080fd5b506101fc7f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f581565b3480156102b657600080fd5b5060fb546101a0906001600160a01b031681565b3480156102d657600080fd5b506101fc61012e5481565b60006001600160e01b0319821663041de68360e41b148061031157506001600160e01b03198216621574e360e91b145b8061032c57506001600160e01b031982166352d1902d60e01b145b8061034757506301ffc9a760e01b6001600160e01b03198316145b92915050565b600054600290610100900460ff1615801561036f575060005460ff8083169116105b6103d75760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805461ffff191660ff831617610100179055600261ffff831610156103ff57600261012e555b6000805461ff001916905560405160ff821681527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b61044d610fcf565b5060408051606081018252600181526004602082015260009181019190915290565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036104fc5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b60648201526084016103ce565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166105577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b0316146105c25760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b60648201526084016103ce565b6105cb8161099e565b604080516000808252602082019092526105e7918391906109db565b50565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036106775760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b60648201526084016103ce565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166106d27f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b03161461073d5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b60648201526084016103ce565b6107468261099e565b610752828260016109db565b5050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146107f65760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016103ce565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b600061084e7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b60fb80546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d690600090a35050565b600054600290610100900460ff161580156108d4575060005460ff8083169116105b6109375760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016103ce565b6000805461ffff191660ff83161761010017905561095482610b80565b600161012d55600261012e556000805461ff001916905560405160ff821681527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602001610439565b60c9547f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f590610752906001600160a01b0316303384600036610bf4565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610a1357610a0e83610cb0565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610a6d575060408051601f3d908101601f19168201909252610a6a918101906111a3565b60015b610adf5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201527f6f6e206973206e6f74205555505300000000000000000000000000000000000060648201526084016103ce565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114610b745760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f7860448201527f6961626c6555554944000000000000000000000000000000000000000000000060648201526084016103ce565b50610a0e838383610d7b565b600054610100900460ff16610beb5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103ce565b6105e781610da6565b604051637ef7c88360e11b81526001600160a01b0387169063fdef910690610c2890889088908890889088906004016111bc565b602060405180830381865afa158015610c45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c699190611210565b610ca857604051630cb6f8ed60e21b81526001600160a01b038088166004830152808716602483015285166044820152606481018490526084016103ce565b505050505050565b6001600160a01b0381163b610d2d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e74726163740000000000000000000000000000000000000060648201526084016103ce565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610d8483610e40565b600082511180610d915750805b15610a0e57610da08383610e80565b50505050565b600054610100900460ff16610e115760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103ce565b60c9805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610e4981610cb0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060610ea583836040518060600160405280602781526020016112a660279139610eac565b9392505050565b6060600080856001600160a01b031685604051610ec99190611256565b600060405180830381855af49150503d8060008114610f04576040519150601f19603f3d011682016040523d82523d6000602084013e610f09565b606091505b5091509150610f1a86838387610f24565b9695505050505050565b60608315610f93578251600003610f8c576001600160a01b0385163b610f8c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016103ce565b5081610f9d565b610f9d8383610fa5565b949350505050565b815115610fb55781518083602001fd5b8060405162461bcd60e51b81526004016103ce9190611272565b60405180606001604052806003906020820280368337509192915050565b600060208284031215610fff57600080fd5b81356001600160e01b031981168114610ea557600080fd5b60006020828403121561102957600080fd5b813561ffff81168114610ea557600080fd5b60608101818360005b600381101561106657815160ff16835260209283019290910190600101611044565b50505092915050565b6001600160a01b03811681146105e757600080fd5b60006020828403121561109657600080fd5b8135610ea58161106f565b60208101600383106110c357634e487b7160e01b600052602160045260246000fd5b91905290565b634e487b7160e01b600052604160045260246000fd5b600080604083850312156110f257600080fd5b82356110fd8161106f565b9150602083013567ffffffffffffffff8082111561111a57600080fd5b818501915085601f83011261112e57600080fd5b813581811115611140576111406110c9565b604051601f8201601f19908116603f01168101908382118183101715611168576111686110c9565b8160405282815288602084870101111561118157600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6000602082840312156111b557600080fd5b5051919050565b60006001600160a01b03808816835280871660208401525084604083015260806060830152826080830152828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b60006020828403121561122257600080fd5b81518015158114610ea557600080fd5b60005b8381101561124d578181015183820152602001611235565b50506000910152565b60008251611268818460208701611232565b9190910192915050565b6020815260008251806020840152611291816040850160208701611232565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a", + "deployedBytecode": "0x60806040523480156200001157600080fd5b50600436106200007b5760003560e01c80639cb0a12411620000565780639cb0a12414620000fd578063a8a9c29e1462000123578063f10832f1146200014a57600080fd5b806301ffc9a714620000805780632ae9c60014620000ac5780635c60da1b14620000c5575b600080fd5b62000097620000913660046200065e565b62000171565b60405190151581526020015b60405180910390f35b620000b6620001c4565b604051620000a391906200068a565b6040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152602001620000a3565b620001146200010e366004620006f0565b620001f0565b604051620000a39190620007c1565b6200013a620001343660046200080e565b62000209565b604051620000a39291906200095d565b620001616200015b366004620009a5565b620002b5565b604051620000a392919062000a73565b60006001600160e01b0319821663099718b560e41b1480620001a257506001600160e01b03198216621574e360e91b145b80620001be57506301ffc9a760e01b6001600160e01b03198316145b92915050565b620001ce62000632565b5060408051606081018252600181526004602082015260009181019190915290565b60606200020260006002600162000399565b9392505050565b606062000229604051806040016040528060608152602001606081525090565b8361ffff16600103620002ad5762000242600262000532565b815260405161ffff8516602482015260440160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166239a8c560e41b1790529150620002a761ffff85166002600062000399565b60208201525b935093915050565b6000620002d5604051806040016040528060608152602001606081525090565b6040516001600160a01b038516602482015260009060440160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663189acdbd60e31b17905290506200036b816200035b7f000000000000000000000000000000000000000000000000000000000000000090565b6001600160a01b031690620005f6565b925062000379600262000532565b82526200038a600060028162000399565b60208301525090939092509050565b6060826001600160a01b0316846001600160a01b03161115620003cf57604051633a4013cd60e21b815260040160405180910390fd5b620003db848462000ab5565b6001600160a01b031667ffffffffffffffff811115620003ff57620003ff6200098f565b6040519080825280602002602001820160405280156200045a57816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282526000199092019101816200041e5790505b509050835b836001600160a01b0316816001600160a01b031610156200052a576040518060a001604052808460028111156200049a576200049a62000744565b81526001600160a01b038316602082018190526040820152600060608201527fa280eec51ab8e1bc4b6b0c1b7f1bde785761b787a49db404e3e9338ed9b016ef60809091015282620004ed878462000ab5565b6001600160a01b03168151811062000509576200050962000adf565b60200260200101819052508080620005219062000af5565b9150506200045f565b509392505050565b6060816001600160a01b031667ffffffffffffffff8111156200055957620005596200098f565b60405190808252806020026020018201604052801562000583578160200160208202803683370190505b50905060005b826001600160a01b0316816001600160a01b03161015620005f0578082826001600160a01b031681518110620005c357620005c362000adf565b6001600160a01b039092166020928302919091019091015280620005e78162000af5565b91505062000589565b50919050565b60008282604051620006089062000650565b6200061592919062000b1e565b604051809103906000f0801580156200052a573d6000803e3d6000fd5b60405180606001604052806003906020820280368337509192915050565b6106fe8062000b4383390190565b6000602082840312156200067157600080fd5b81356001600160e01b0319811681146200020257600080fd5b60608101818360005b6003811015620006b757815160ff1683526020928301929091019060010162000693565b50505092915050565b80356001600160a01b0381168114620006d857600080fd5b919050565b600060608284031215620005f057600080fd5b600080604083850312156200070457600080fd5b6200070f83620006c0565b9150602083013567ffffffffffffffff8111156200072c57600080fd5b6200073a85828601620006dd565b9150509250929050565b634e487b7160e01b600052602160045260246000fd5b60008151600381106200077d57634e487b7160e01b600052602160045260246000fd5b8352506020818101516001600160a01b0390811691840191909152604080830151821690840152606080830151909116908301526080908101519082015260a00190565b6020808252825182820181905260009190848201906040850190845b818110156200080257620007f38385516200075a565b938501939250600101620007dd565b50909695505050505050565b6000806000606084860312156200082457600080fd5b6200082f84620006c0565b9250602084013561ffff811681146200084757600080fd5b9150604084013567ffffffffffffffff8111156200086457600080fd5b6200087286828701620006dd565b9150509250925092565b6000815180845260005b81811015620008a45760208185018101518683018201520162000886565b506000602082860101526020601f19601f83011685010191505092915050565b805160408084528151908401819052600091602091908201906060860190845b818110156200090b5783516001600160a01b031683529284019291840191600101620008e4565b50508483015186820387850152805180835290840192506000918401905b8083101562000952576200093f8285516200075a565b9150848401935060018301925062000929565b509695505050505050565b6040815260006200097260408301856200087c565b8281036020840152620009868185620008c4565b95945050505050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215620009b957600080fd5b620009c483620006c0565b9150602083013567ffffffffffffffff80821115620009e257600080fd5b818501915085601f830112620009f757600080fd5b81358181111562000a0c5762000a0c6200098f565b604051601f8201601f19908116603f0116810190838211818310171562000a375762000a376200098f565b8160405282815288602084870101111562000a5157600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6001600160a01b038316815260406020820152600062000a976040830184620008c4565b949350505050565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0382811682821603908082111562000ad85762000ad862000a9f565b5092915050565b634e487b7160e01b600052603260045260246000fd5b60006001600160a01b0380831681810362000b145762000b1462000a9f565b6001019392505050565b6001600160a01b038316815260406020820152600062000a9760408301846200087c56fe60806040526040516106fe3803806106fe83398101604081905261002291610319565b61002e82826000610035565b5050610436565b61003e8361006b565b60008251118061004b5750805b156100665761006483836100ab60201b6100291760201c565b505b505050565b610074816100d7565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606100d083836040518060600160405280602781526020016106d7602791396101a9565b9392505050565b6100ea8161022260201b6100551760201c565b6101515760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b806101887f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61023160201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6060600080856001600160a01b0316856040516101c691906103e7565b600060405180830381855af49150503d8060008114610201576040519150601f19603f3d011682016040523d82523d6000602084013e610206565b606091505b50909250905061021886838387610234565b9695505050505050565b6001600160a01b03163b151590565b90565b606083156102a357825160000361029c576001600160a01b0385163b61029c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610148565b50816102ad565b6102ad83836102b5565b949350505050565b8151156102c55781518083602001fd5b8060405162461bcd60e51b81526004016101489190610403565b634e487b7160e01b600052604160045260246000fd5b60005b838110156103105781810151838201526020016102f8565b50506000910152565b6000806040838503121561032c57600080fd5b82516001600160a01b038116811461034357600080fd5b60208401519092506001600160401b038082111561036057600080fd5b818501915085601f83011261037457600080fd5b815181811115610386576103866102df565b604051601f8201601f19908116603f011681019083821181831017156103ae576103ae6102df565b816040528281528860208487010111156103c757600080fd5b6103d88360208301602088016102f5565b80955050505050509250929050565b600082516103f98184602087016102f5565b9190910192915050565b60208152600082518060208401526104228160408501602087016102f5565b601f01601f19169190910160400192915050565b610292806104456000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b61009f565b565b606061004e838360405180606001604052806027815260200161025f602791396100c3565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e8080156100be573d6000f35b3d6000fd5b6060600080856001600160a01b0316856040516100e0919061020f565b600060405180830381855af49150503d806000811461011b576040519150601f19603f3d011682016040523d82523d6000602084013e610120565b606091505b50915091506101318683838761013b565b9695505050505050565b606083156101af5782516000036101a8576001600160a01b0385163b6101a85760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b50816101b9565b6101b983836101c1565b949350505050565b8151156101d15781518083602001fd5b8060405162461bcd60e51b815260040161019f919061022b565b60005b838110156102065781810151838201526020016101ee565b50506000910152565b600082516102218184602087016101eb565b9190910192915050565b602081526000825180602084015261024a8160408501602087016101eb565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/src/mocks/plugin/PluginUUPSUpgradeableSetupMock.sol/PluginUUPSUpgradeableSetupMockBuild3.dbg.json b/contracts/artifacts/src/mocks/plugin/PluginUUPSUpgradeableSetupMock.sol/PluginUUPSUpgradeableSetupMockBuild3.dbg.json new file mode 100644 index 00000000..930fbb1d --- /dev/null +++ b/contracts/artifacts/src/mocks/plugin/PluginUUPSUpgradeableSetupMock.sol/PluginUUPSUpgradeableSetupMockBuild3.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/9ac591806bb2e846e5a60f79d635058e.json" +} diff --git a/contracts/artifacts/src/mocks/plugin/PluginUUPSUpgradeableSetupMock.sol/PluginUUPSUpgradeableSetupMockBuild3.json b/contracts/artifacts/src/mocks/plugin/PluginUUPSUpgradeableSetupMock.sol/PluginUUPSUpgradeableSetupMockBuild3.json new file mode 100644 index 00000000..d3f73ba4 --- /dev/null +++ b/contracts/artifacts/src/mocks/plugin/PluginUUPSUpgradeableSetupMock.sol/PluginUUPSUpgradeableSetupMockBuild3.json @@ -0,0 +1,308 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "PluginUUPSUpgradeableSetupMockBuild3", + "sourceName": "src/mocks/plugin/PluginUUPSUpgradeableSetupMock.sol", + "abi": [ + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "ConflictingValues", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "fromBuild", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "thisBuild", + "type": "uint16" + } + ], + "name": "InvalidUpdatePath", + "type": "error" + }, + { + "inputs": [], + "name": "implementation", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_dao", + "type": "address" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "name": "prepareInstallation", + "outputs": [ + { + "internalType": "address", + "name": "plugin", + "type": "address" + }, + { + "components": [ + { + "internalType": "address[]", + "name": "helpers", + "type": "address[]" + }, + { + "components": [ + { + "internalType": "enum PermissionLib.Operation", + "name": "operation", + "type": "uint8" + }, + { + "internalType": "address", + "name": "where", + "type": "address" + }, + { + "internalType": "address", + "name": "who", + "type": "address" + }, + { + "internalType": "address", + "name": "condition", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "permissionId", + "type": "bytes32" + } + ], + "internalType": "struct PermissionLib.MultiTargetPermission[]", + "name": "permissions", + "type": "tuple[]" + } + ], + "internalType": "struct IPluginSetup.PreparedSetupData", + "name": "preparedSetupData", + "type": "tuple" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_dao", + "type": "address" + }, + { + "components": [ + { + "internalType": "address", + "name": "plugin", + "type": "address" + }, + { + "internalType": "address[]", + "name": "currentHelpers", + "type": "address[]" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "internalType": "struct IPluginSetup.SetupPayload", + "name": "_payload", + "type": "tuple" + } + ], + "name": "prepareUninstallation", + "outputs": [ + { + "components": [ + { + "internalType": "enum PermissionLib.Operation", + "name": "operation", + "type": "uint8" + }, + { + "internalType": "address", + "name": "where", + "type": "address" + }, + { + "internalType": "address", + "name": "who", + "type": "address" + }, + { + "internalType": "address", + "name": "condition", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "permissionId", + "type": "bytes32" + } + ], + "internalType": "struct PermissionLib.MultiTargetPermission[]", + "name": "permissions", + "type": "tuple[]" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_dao", + "type": "address" + }, + { + "internalType": "uint16", + "name": "_fromBuild", + "type": "uint16" + }, + { + "components": [ + { + "internalType": "address", + "name": "plugin", + "type": "address" + }, + { + "internalType": "address[]", + "name": "currentHelpers", + "type": "address[]" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "internalType": "struct IPluginSetup.SetupPayload", + "name": "_payload", + "type": "tuple" + } + ], + "name": "prepareUpdate", + "outputs": [ + { + "internalType": "bytes", + "name": "initData", + "type": "bytes" + }, + { + "components": [ + { + "internalType": "address[]", + "name": "helpers", + "type": "address[]" + }, + { + "components": [ + { + "internalType": "enum PermissionLib.Operation", + "name": "operation", + "type": "uint8" + }, + { + "internalType": "address", + "name": "where", + "type": "address" + }, + { + "internalType": "address", + "name": "who", + "type": "address" + }, + { + "internalType": "address", + "name": "condition", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "permissionId", + "type": "bytes32" + } + ], + "internalType": "struct PermissionLib.MultiTargetPermission[]", + "name": "permissions", + "type": "tuple[]" + } + ], + "internalType": "struct IPluginSetup.PreparedSetupData", + "name": "preparedSetupData", + "type": "tuple" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "protocolVersion", + "outputs": [ + { + "internalType": "uint8[3]", + "name": "", + "type": "uint8[3]" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "_interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x60a060405234801561001057600080fd5b5060405161001d9061004b565b604051809103906000f080158015610039573d6000803e3d6000fd5b506001600160a01b0316608052610058565b61142d8061130b83390190565b6080516112926100796000396000818160d2015261037e01526112926000f3fe60806040523480156200001157600080fd5b50600436106200007b5760003560e01c80639cb0a12411620000565780639cb0a12414620000fd578063a8a9c29e1462000123578063f10832f1146200014a57600080fd5b806301ffc9a714620000805780632ae9c60014620000ac5780635c60da1b14620000c5575b600080fd5b6200009762000091366004620006a3565b62000171565b60405190151581526020015b60405180910390f35b620000b6620001c4565b604051620000a39190620006cf565b6040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152602001620000a3565b620001146200010e36600462000735565b620001f0565b604051620000a3919062000806565b6200013a6200013436600462000853565b62000209565b604051620000a3929190620009a2565b620001616200015b366004620009ea565b6200030f565b604051620000a392919062000ab8565b60006001600160e01b0319821663099718b560e41b1480620001a257506001600160e01b03198216621574e360e91b145b80620001be57506301ffc9a760e01b6001600160e01b03198316145b92915050565b620001ce62000677565b5060408051606081018252600181526004602082015260009181019190915290565b606062000202600060036001620003de565b9392505050565b606062000229604051806040016040528060608152602001606081525090565b8361ffff16600103620002985762000242600362000577565b815260405161ffff8516602482015260440160408051601f198184030181529190526020810180516001600160e01b03166239a8c560e41b17905291506200029261ffff851660036000620003de565b60208201525b8361ffff166002036200030757620002b1600362000577565b815260405161ffff8516602482015260440160408051601f198184030181529190526020810180516001600160e01b03166239a8c560e41b17905291506200030161ffff851660036000620003de565b60208201525b935093915050565b60006200032f604051806040016040528060608152602001606081525090565b6040516001600160a01b038516602482015260009060440160408051601f198184030181529190526020810180516001600160e01b031663189acdbd60e31b1790529050620003b081620003a07f000000000000000000000000000000000000000000000000000000000000000090565b6001600160a01b0316906200063b565b9250620003be600362000577565b8252620003cf6000600381620003de565b60208301525090939092509050565b6060826001600160a01b0316846001600160a01b031611156200041457604051633a4013cd60e21b815260040160405180910390fd5b62000420848462000afa565b6001600160a01b031667ffffffffffffffff811115620004445762000444620009d4565b6040519080825280602002602001820160405280156200049f57816020015b6040805160a081018252600080825260208083018290529282018190526060820181905260808201528252600019909201910181620004635790505b509050835b836001600160a01b0316816001600160a01b031610156200056f576040518060a00160405280846002811115620004df57620004df62000789565b81526001600160a01b038316602082018190526040820152600060608201527fa280eec51ab8e1bc4b6b0c1b7f1bde785761b787a49db404e3e9338ed9b016ef6080909101528262000532878462000afa565b6001600160a01b0316815181106200054e576200054e62000b24565b60200260200101819052508080620005669062000b3a565b915050620004a4565b509392505050565b6060816001600160a01b031667ffffffffffffffff8111156200059e576200059e620009d4565b604051908082528060200260200182016040528015620005c8578160200160208202803683370190505b50905060005b826001600160a01b0316816001600160a01b0316101562000635578082826001600160a01b03168151811062000608576200060862000b24565b6001600160a01b0390921660209283029190910190910152806200062c8162000b3a565b915050620005ce565b50919050565b600082826040516200064d9062000695565b6200065a92919062000b63565b604051809103906000f0801580156200056f573d6000803e3d6000fd5b60405180606001604052806003906020820280368337509192915050565b6106fe8062000b8883390190565b600060208284031215620006b657600080fd5b81356001600160e01b0319811681146200020257600080fd5b60608101818360005b6003811015620006fc57815160ff16835260209283019290910190600101620006d8565b50505092915050565b80356001600160a01b03811681146200071d57600080fd5b919050565b6000606082840312156200063557600080fd5b600080604083850312156200074957600080fd5b620007548362000705565b9150602083013567ffffffffffffffff8111156200077157600080fd5b6200077f8582860162000722565b9150509250929050565b634e487b7160e01b600052602160045260246000fd5b6000815160038110620007c257634e487b7160e01b600052602160045260246000fd5b8352506020818101516001600160a01b0390811691840191909152604080830151821690840152606080830151909116908301526080908101519082015260a00190565b6020808252825182820181905260009190848201906040850190845b818110156200084757620008388385516200079f565b93850193925060010162000822565b50909695505050505050565b6000806000606084860312156200086957600080fd5b620008748462000705565b9250602084013561ffff811681146200088c57600080fd5b9150604084013567ffffffffffffffff811115620008a957600080fd5b620008b78682870162000722565b9150509250925092565b6000815180845260005b81811015620008e957602081850181015186830182015201620008cb565b506000602082860101526020601f19601f83011685010191505092915050565b805160408084528151908401819052600091602091908201906060860190845b81811015620009505783516001600160a01b03168352928401929184019160010162000929565b50508483015186820387850152805180835290840192506000918401905b808310156200099757620009848285516200079f565b915084840193506001830192506200096e565b509695505050505050565b604081526000620009b76040830185620008c1565b8281036020840152620009cb818562000909565b95945050505050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215620009fe57600080fd5b62000a098362000705565b9150602083013567ffffffffffffffff8082111562000a2757600080fd5b818501915085601f83011262000a3c57600080fd5b81358181111562000a515762000a51620009d4565b604051601f8201601f19908116603f0116810190838211818310171562000a7c5762000a7c620009d4565b8160405282815288602084870101111562000a9657600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6001600160a01b038316815260406020820152600062000adc604083018462000909565b949350505050565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0382811682821603908082111562000b1d5762000b1d62000ae4565b5092915050565b634e487b7160e01b600052603260045260246000fd5b60006001600160a01b0380831681810362000b595762000b5962000ae4565b6001019392505050565b6001600160a01b038316815260406020820152600062000adc6040830184620008c156fe60806040526040516106fe3803806106fe83398101604081905261002291610319565b61002e82826000610035565b5050610436565b61003e8361006b565b60008251118061004b5750805b156100665761006483836100ab60201b6100291760201c565b505b505050565b610074816100d7565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606100d083836040518060600160405280602781526020016106d7602791396101a9565b9392505050565b6100ea8161022260201b6100551760201c565b6101515760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b806101887f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61023160201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6060600080856001600160a01b0316856040516101c691906103e7565b600060405180830381855af49150503d8060008114610201576040519150601f19603f3d011682016040523d82523d6000602084013e610206565b606091505b50909250905061021886838387610234565b9695505050505050565b6001600160a01b03163b151590565b90565b606083156102a357825160000361029c576001600160a01b0385163b61029c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610148565b50816102ad565b6102ad83836102b5565b949350505050565b8151156102c55781518083602001fd5b8060405162461bcd60e51b81526004016101489190610403565b634e487b7160e01b600052604160045260246000fd5b60005b838110156103105781810151838201526020016102f8565b50506000910152565b6000806040838503121561032c57600080fd5b82516001600160a01b038116811461034357600080fd5b60208401519092506001600160401b038082111561036057600080fd5b818501915085601f83011261037457600080fd5b815181811115610386576103866102df565b604051601f8201601f19908116603f011681019083821181831017156103ae576103ae6102df565b816040528281528860208487010111156103c757600080fd5b6103d88360208301602088016102f5565b80955050505050509250929050565b600082516103f98184602087016102f5565b9190910192915050565b60208152600082518060208401526104228160408501602087016102f5565b601f01601f19169190910160400192915050565b610292806104456000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b61009f565b565b606061004e838360405180606001604052806027815260200161025f602791396100c3565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e8080156100be573d6000f35b3d6000fd5b6060600080856001600160a01b0316856040516100e0919061020f565b600060405180830381855af49150503d806000811461011b576040519150601f19603f3d011682016040523d82523d6000602084013e610120565b606091505b50915091506101318683838761013b565b9695505050505050565b606083156101af5782516000036101a8576001600160a01b0385163b6101a85760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b50816101b9565b6101b983836101c1565b949350505050565b8151156101d15781518083602001fd5b8060405162461bcd60e51b815260040161019f919061022b565b60005b838110156102065781810151838201526020016101ee565b50506000910152565b600082516102218184602087016101eb565b9190910192915050565b602081526000825180602084015261024a8160408501602087016101eb565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a60a06040523060805234801561001457600080fd5b5061001d610022565b6100e1565b600054610100900460ff161561008e5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116146100df576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b608051611315610118600039600081816104af015281816105340152818161062a015281816106af015261079901526113156000f3fe6080604052600436106100f35760003560e01c806352d1902d1161008a578063c4d66de811610059578063c4d66de814610278578063c9c4bfca14610298578063d4b83992146102cc578063efe51cca146102ec57600080fd5b806352d1902d146102175780635c60da1b1461022c5780636accab8c14610241578063776d1a011461025857600080fd5b80633659cfe6116100c65780633659cfe6146101965780634162169f146101b657806341de6830146101e85780634f1ef2861461020457600080fd5b806301ffc9a7146100f8578063039a8c501461012d5780632491118d1461014f5780632ae9c60014610174575b600080fd5b34801561010457600080fd5b50610118610113366004611029565b610303565b60405190151581526020015b60405180910390f35b34801561013957600080fd5b5061014d610148366004611053565b61036f565b005b34801561015b57600080fd5b5061016661012f5481565b604051908152602001610124565b34801561018057600080fd5b5061018961047b565b6040516101249190611077565b3480156101a257600080fd5b5061014d6101b13660046110c0565b6104a5565b3480156101c257600080fd5b5060c9546001600160a01b03165b6040516001600160a01b039091168152602001610124565b3480156101f457600080fd5b50600060405161012491906110dd565b61014d61021236600461111b565b610620565b34801561022357600080fd5b5061016661078c565b34801561023857600080fd5b506101d0610851565b34801561024d57600080fd5b5061016661012d5481565b34801561026457600080fd5b5061014d6102733660046110c0565b610889565b34801561028457600080fd5b5061014d6102933660046110c0565b6108e8565b3480156102a457600080fd5b506101667f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f581565b3480156102d857600080fd5b5060fb546101d0906001600160a01b031681565b3480156102f857600080fd5b5061016661012e5481565b60006001600160e01b0319821663041de68360e41b148061033357506001600160e01b03198216621574e360e91b145b8061034e57506001600160e01b031982166352d1902d60e01b145b8061036957506301ffc9a760e01b6001600160e01b03198316145b92915050565b600054600390610100900460ff16158015610391575060005460ff8083169116105b6103f95760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805461ffff191660ff831617610100179055600261ffff8316101561042157600261012e555b60038261ffff16101561043557600361012f555b6000805461ff001916905560405160ff821681527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b61048361100b565b5060408051606081018252600181526004602082015260009181019190915290565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036105325760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b60648201526084016103f0565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661058d7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b0316146105f85760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b60648201526084016103f0565b610601816109da565b6040805160008082526020820190925261061d91839190610a17565b50565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036106ad5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b60648201526084016103f0565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166107087f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b0316146107735760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b60648201526084016103f0565b61077c826109da565b61078882826001610a17565b5050565b6000306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461082c5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016103f0565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b60006108847f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b60fb80546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d690600090a35050565b600054600390610100900460ff1615801561090a575060005460ff8083169116105b61096d5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016103f0565b6000805461ffff191660ff83161761010017905561098a82610bbc565b600161012d55600261012e55600361012f556000805461ff001916905560405160ff821681527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200161046f565b60c9547f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f590610788906001600160a01b0316303384600036610c30565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610a4f57610a4a83610cec565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610aa9575060408051601f3d908101601f19168201909252610aa6918101906111df565b60015b610b1b5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201527f6f6e206973206e6f74205555505300000000000000000000000000000000000060648201526084016103f0565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114610bb05760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f7860448201527f6961626c6555554944000000000000000000000000000000000000000000000060648201526084016103f0565b50610a4a838383610db7565b600054610100900460ff16610c275760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103f0565b61061d81610de2565b604051637ef7c88360e11b81526001600160a01b0387169063fdef910690610c6490889088908890889088906004016111f8565b602060405180830381865afa158015610c81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca5919061124c565b610ce457604051630cb6f8ed60e21b81526001600160a01b038088166004830152808716602483015285166044820152606481018490526084016103f0565b505050505050565b6001600160a01b0381163b610d695760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e74726163740000000000000000000000000000000000000060648201526084016103f0565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610dc083610e7c565b600082511180610dcd5750805b15610a4a57610ddc8383610ebc565b50505050565b600054610100900460ff16610e4d5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103f0565b60c9805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610e8581610cec565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060610ee183836040518060600160405280602781526020016112e260279139610ee8565b9392505050565b6060600080856001600160a01b031685604051610f059190611292565b600060405180830381855af49150503d8060008114610f40576040519150601f19603f3d011682016040523d82523d6000602084013e610f45565b606091505b5091509150610f5686838387610f60565b9695505050505050565b60608315610fcf578251600003610fc8576001600160a01b0385163b610fc85760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016103f0565b5081610fd9565b610fd98383610fe1565b949350505050565b815115610ff15781518083602001fd5b8060405162461bcd60e51b81526004016103f091906112ae565b60405180606001604052806003906020820280368337509192915050565b60006020828403121561103b57600080fd5b81356001600160e01b031981168114610ee157600080fd5b60006020828403121561106557600080fd5b813561ffff81168114610ee157600080fd5b60608101818360005b60038110156110a257815160ff16835260209283019290910190600101611080565b50505092915050565b6001600160a01b038116811461061d57600080fd5b6000602082840312156110d257600080fd5b8135610ee1816110ab565b60208101600383106110ff57634e487b7160e01b600052602160045260246000fd5b91905290565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561112e57600080fd5b8235611139816110ab565b9150602083013567ffffffffffffffff8082111561115657600080fd5b818501915085601f83011261116a57600080fd5b81358181111561117c5761117c611105565b604051601f8201601f19908116603f011681019083821181831017156111a4576111a4611105565b816040528281528860208487010111156111bd57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6000602082840312156111f157600080fd5b5051919050565b60006001600160a01b03808816835280871660208401525084604083015260806060830152826080830152828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b60006020828403121561125e57600080fd5b81518015158114610ee157600080fd5b60005b83811015611289578181015183820152602001611271565b50506000910152565b600082516112a481846020870161126e565b9190910192915050565b60208152600082518060208401526112cd81604085016020870161126e565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a", + "deployedBytecode": "0x60806040523480156200001157600080fd5b50600436106200007b5760003560e01c80639cb0a12411620000565780639cb0a12414620000fd578063a8a9c29e1462000123578063f10832f1146200014a57600080fd5b806301ffc9a714620000805780632ae9c60014620000ac5780635c60da1b14620000c5575b600080fd5b6200009762000091366004620006a3565b62000171565b60405190151581526020015b60405180910390f35b620000b6620001c4565b604051620000a39190620006cf565b6040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152602001620000a3565b620001146200010e36600462000735565b620001f0565b604051620000a3919062000806565b6200013a6200013436600462000853565b62000209565b604051620000a3929190620009a2565b620001616200015b366004620009ea565b6200030f565b604051620000a392919062000ab8565b60006001600160e01b0319821663099718b560e41b1480620001a257506001600160e01b03198216621574e360e91b145b80620001be57506301ffc9a760e01b6001600160e01b03198316145b92915050565b620001ce62000677565b5060408051606081018252600181526004602082015260009181019190915290565b606062000202600060036001620003de565b9392505050565b606062000229604051806040016040528060608152602001606081525090565b8361ffff16600103620002985762000242600362000577565b815260405161ffff8516602482015260440160408051601f198184030181529190526020810180516001600160e01b03166239a8c560e41b17905291506200029261ffff851660036000620003de565b60208201525b8361ffff166002036200030757620002b1600362000577565b815260405161ffff8516602482015260440160408051601f198184030181529190526020810180516001600160e01b03166239a8c560e41b17905291506200030161ffff851660036000620003de565b60208201525b935093915050565b60006200032f604051806040016040528060608152602001606081525090565b6040516001600160a01b038516602482015260009060440160408051601f198184030181529190526020810180516001600160e01b031663189acdbd60e31b1790529050620003b081620003a07f000000000000000000000000000000000000000000000000000000000000000090565b6001600160a01b0316906200063b565b9250620003be600362000577565b8252620003cf6000600381620003de565b60208301525090939092509050565b6060826001600160a01b0316846001600160a01b031611156200041457604051633a4013cd60e21b815260040160405180910390fd5b62000420848462000afa565b6001600160a01b031667ffffffffffffffff811115620004445762000444620009d4565b6040519080825280602002602001820160405280156200049f57816020015b6040805160a081018252600080825260208083018290529282018190526060820181905260808201528252600019909201910181620004635790505b509050835b836001600160a01b0316816001600160a01b031610156200056f576040518060a00160405280846002811115620004df57620004df62000789565b81526001600160a01b038316602082018190526040820152600060608201527fa280eec51ab8e1bc4b6b0c1b7f1bde785761b787a49db404e3e9338ed9b016ef6080909101528262000532878462000afa565b6001600160a01b0316815181106200054e576200054e62000b24565b60200260200101819052508080620005669062000b3a565b915050620004a4565b509392505050565b6060816001600160a01b031667ffffffffffffffff8111156200059e576200059e620009d4565b604051908082528060200260200182016040528015620005c8578160200160208202803683370190505b50905060005b826001600160a01b0316816001600160a01b0316101562000635578082826001600160a01b03168151811062000608576200060862000b24565b6001600160a01b0390921660209283029190910190910152806200062c8162000b3a565b915050620005ce565b50919050565b600082826040516200064d9062000695565b6200065a92919062000b63565b604051809103906000f0801580156200056f573d6000803e3d6000fd5b60405180606001604052806003906020820280368337509192915050565b6106fe8062000b8883390190565b600060208284031215620006b657600080fd5b81356001600160e01b0319811681146200020257600080fd5b60608101818360005b6003811015620006fc57815160ff16835260209283019290910190600101620006d8565b50505092915050565b80356001600160a01b03811681146200071d57600080fd5b919050565b6000606082840312156200063557600080fd5b600080604083850312156200074957600080fd5b620007548362000705565b9150602083013567ffffffffffffffff8111156200077157600080fd5b6200077f8582860162000722565b9150509250929050565b634e487b7160e01b600052602160045260246000fd5b6000815160038110620007c257634e487b7160e01b600052602160045260246000fd5b8352506020818101516001600160a01b0390811691840191909152604080830151821690840152606080830151909116908301526080908101519082015260a00190565b6020808252825182820181905260009190848201906040850190845b818110156200084757620008388385516200079f565b93850193925060010162000822565b50909695505050505050565b6000806000606084860312156200086957600080fd5b620008748462000705565b9250602084013561ffff811681146200088c57600080fd5b9150604084013567ffffffffffffffff811115620008a957600080fd5b620008b78682870162000722565b9150509250925092565b6000815180845260005b81811015620008e957602081850181015186830182015201620008cb565b506000602082860101526020601f19601f83011685010191505092915050565b805160408084528151908401819052600091602091908201906060860190845b81811015620009505783516001600160a01b03168352928401929184019160010162000929565b50508483015186820387850152805180835290840192506000918401905b808310156200099757620009848285516200079f565b915084840193506001830192506200096e565b509695505050505050565b604081526000620009b76040830185620008c1565b8281036020840152620009cb818562000909565b95945050505050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215620009fe57600080fd5b62000a098362000705565b9150602083013567ffffffffffffffff8082111562000a2757600080fd5b818501915085601f83011262000a3c57600080fd5b81358181111562000a515762000a51620009d4565b604051601f8201601f19908116603f0116810190838211818310171562000a7c5762000a7c620009d4565b8160405282815288602084870101111562000a9657600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6001600160a01b038316815260406020820152600062000adc604083018462000909565b949350505050565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0382811682821603908082111562000b1d5762000b1d62000ae4565b5092915050565b634e487b7160e01b600052603260045260246000fd5b60006001600160a01b0380831681810362000b595762000b5962000ae4565b6001019392505050565b6001600160a01b038316815260406020820152600062000adc6040830184620008c156fe60806040526040516106fe3803806106fe83398101604081905261002291610319565b61002e82826000610035565b5050610436565b61003e8361006b565b60008251118061004b5750805b156100665761006483836100ab60201b6100291760201c565b505b505050565b610074816100d7565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606100d083836040518060600160405280602781526020016106d7602791396101a9565b9392505050565b6100ea8161022260201b6100551760201c565b6101515760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b806101887f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61023160201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6060600080856001600160a01b0316856040516101c691906103e7565b600060405180830381855af49150503d8060008114610201576040519150601f19603f3d011682016040523d82523d6000602084013e610206565b606091505b50909250905061021886838387610234565b9695505050505050565b6001600160a01b03163b151590565b90565b606083156102a357825160000361029c576001600160a01b0385163b61029c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610148565b50816102ad565b6102ad83836102b5565b949350505050565b8151156102c55781518083602001fd5b8060405162461bcd60e51b81526004016101489190610403565b634e487b7160e01b600052604160045260246000fd5b60005b838110156103105781810151838201526020016102f8565b50506000910152565b6000806040838503121561032c57600080fd5b82516001600160a01b038116811461034357600080fd5b60208401519092506001600160401b038082111561036057600080fd5b818501915085601f83011261037457600080fd5b815181811115610386576103866102df565b604051601f8201601f19908116603f011681019083821181831017156103ae576103ae6102df565b816040528281528860208487010111156103c757600080fd5b6103d88360208301602088016102f5565b80955050505050509250929050565b600082516103f98184602087016102f5565b9190910192915050565b60208152600082518060208401526104228160408501602087016102f5565b601f01601f19169190910160400192915050565b610292806104456000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b61009f565b565b606061004e838360405180606001604052806027815260200161025f602791396100c3565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e8080156100be573d6000f35b3d6000fd5b6060600080856001600160a01b0316856040516100e0919061020f565b600060405180830381855af49150503d806000811461011b576040519150601f19603f3d011682016040523d82523d6000602084013e610120565b606091505b50915091506101318683838761013b565b9695505050505050565b606083156101af5782516000036101a8576001600160a01b0385163b6101a85760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b50816101b9565b6101b983836101c1565b949350505050565b8151156101d15781518083602001fd5b8060405162461bcd60e51b815260040161019f919061022b565b60005b838110156102065781810151838201526020016101ee565b50506000910152565b600082516102218184602087016101eb565b9190910192915050565b602081526000825180602084015261024a8160408501602087016101eb565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/src/mocks/plugin/extensions/governance/AddresslistMock.sol/AddresslistMock.dbg.json b/contracts/artifacts/src/mocks/plugin/extensions/governance/AddresslistMock.sol/AddresslistMock.dbg.json new file mode 100644 index 00000000..c8024a50 --- /dev/null +++ b/contracts/artifacts/src/mocks/plugin/extensions/governance/AddresslistMock.sol/AddresslistMock.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" +} diff --git a/contracts/artifacts/src/mocks/plugin/extensions/governance/AddresslistMock.sol/AddresslistMock.json b/contracts/artifacts/src/mocks/plugin/extensions/governance/AddresslistMock.sol/AddresslistMock.json new file mode 100644 index 00000000..4f552f4b --- /dev/null +++ b/contracts/artifacts/src/mocks/plugin/extensions/governance/AddresslistMock.sol/AddresslistMock.json @@ -0,0 +1,123 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "AddresslistMock", + "sourceName": "src/mocks/plugin/extensions/governance/AddresslistMock.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "member", + "type": "address" + } + ], + "name": "InvalidAddresslistUpdate", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "_newAddresses", + "type": "address[]" + } + ], + "name": "addAddresses", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "addresslistLength", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_blockNumber", + "type": "uint256" + } + ], + "name": "addresslistLengthAtBlock", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_account", + "type": "address" + } + ], + "name": "isListed", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_blockNumber", + "type": "uint256" + } + ], + "name": "isListedAtBlock", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "_exitingAddresses", + "type": "address[]" + } + ], + "name": "removeAddresses", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b50610905806100206000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c8063a84eb99911610050578063a84eb999146100ba578063b1bb8d26146100cd578063f794062e146100f057600080fd5b806327f1608d146100775780633628731c146100925780636a6b2d86146100a7575b600080fd5b61007f610103565b6040519081526020015b60405180910390f35b6100a56100a0366004610795565b61011d565b005b61007f6100b536600461080a565b61012b565b6100a56100c8366004610795565b61013e565b6100e06100db36600461083f565b610148565b6040519015158152602001610089565b6100e06100fe366004610869565b610174565b600061010f60016101a8565b6001600160e01b0316905090565b61012782826101f1565b5050565b60006101386001836102e9565b92915050565b610127828261039c565b6001600160a01b038216600090815260208190526040812061016a90836102e9565b6001149392505050565b6001600160a01b0381166000908152602081905260408120610195906101a8565b6001600160e01b03166001149050919050565b805460009080156101e7576101d0836101c260018461089a565b600091825260209091200190565b5464010000000090046001600160e01b03166101ea565b60005b9392505050565b60005b818110156102d457610226838383818110610211576102116108ad565b90506020020160208101906100fe9190610869565b1561027c5782828281811061023d5761023d6108ad565b90506020020160208101906102529190610869565b60405163c0b7477d60e01b81526001600160a01b0390911660048201526024015b60405180910390fd5b6102ca6001600080868686818110610296576102966108ad565b90506020020160208101906102ab9190610869565b6001600160a01b03168152602081019190915260400160002090610405565b50506001016101f4565b506102e360016104398361043d565b50505050565b600043821061033a5760405162461bcd60e51b815260206004820181905260248201527f436865636b706f696e74733a20626c6f636b206e6f7420796574206d696e65646044820152606401610273565b600061034583610475565b84549091506000610358868483856104f5565b905080156103865761036f866101c260018461089a565b5464010000000090046001600160e01b0316610389565b60005b6001600160e01b03169695505050505050565b60005b818110156103f6576103bc838383818110610211576102116108ad565b6103d25782828281811061023d5761023d6108ad565b6103ec6000806000868686818110610296576102966108ad565b505060010161039f565b506102e360016105538361043d565b6000806104238461041543610475565b61041e86610558565b6105d7565b6001600160e01b03918216969116945092505050565b0190565b60008061046885610463610450886101a8565b6001600160e01b0316868863ffffffff16565b610405565b915091505b935093915050565b600063ffffffff8211156104f15760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201527f32206269747300000000000000000000000000000000000000000000000000006064820152608401610273565b5090565b60005b8183101561054b57600061050c848461077a565b60008781526020902090915063ffffffff86169082015463ffffffff16111561053757809250610545565b6105428160016108c3565b93505b506104f8565b509392505050565b900390565b60006001600160e01b038211156104f15760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203260448201527f32342062697473000000000000000000000000000000000000000000000000006064820152608401610273565b8254600090819080156107205760006105f5876101c260018561089a565b60408051808201909152905463ffffffff8082168084526401000000009092046001600160e01b0316602084015291925090871610156106775760405162461bcd60e51b815260206004820152601b60248201527f436865636b706f696e743a2064656372656173696e67206b65797300000000006044820152606401610273565b805163ffffffff8088169116036106c05784610698886101c260018661089a565b80546001600160e01b03929092166401000000000263ffffffff909216919091179055610710565b6040805180820190915263ffffffff80881682526001600160e01b0380881660208085019182528b54600181018d5560008d81529190912094519151909216640100000000029216919091179101555b60200151925083915061046d9050565b50506040805180820190915263ffffffff80851682526001600160e01b0380851660208085019182528854600181018a5560008a81529182209551925190931664010000000002919093161792019190915590508161046d565b600061078960028484186108d6565b6101ea908484166108c3565b600080602083850312156107a857600080fd5b823567ffffffffffffffff808211156107c057600080fd5b818501915085601f8301126107d457600080fd5b8135818111156107e357600080fd5b8660208260051b85010111156107f857600080fd5b60209290920196919550909350505050565b60006020828403121561081c57600080fd5b5035919050565b80356001600160a01b038116811461083a57600080fd5b919050565b6000806040838503121561085257600080fd5b61085b83610823565b946020939093013593505050565b60006020828403121561087b57600080fd5b6101ea82610823565b634e487b7160e01b600052601160045260246000fd5b8181038181111561013857610138610884565b634e487b7160e01b600052603260045260246000fd5b8082018082111561013857610138610884565b6000826108f357634e487b7160e01b600052601260045260246000fd5b50049056fea164736f6c6343000811000a", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100725760003560e01c8063a84eb99911610050578063a84eb999146100ba578063b1bb8d26146100cd578063f794062e146100f057600080fd5b806327f1608d146100775780633628731c146100925780636a6b2d86146100a7575b600080fd5b61007f610103565b6040519081526020015b60405180910390f35b6100a56100a0366004610795565b61011d565b005b61007f6100b536600461080a565b61012b565b6100a56100c8366004610795565b61013e565b6100e06100db36600461083f565b610148565b6040519015158152602001610089565b6100e06100fe366004610869565b610174565b600061010f60016101a8565b6001600160e01b0316905090565b61012782826101f1565b5050565b60006101386001836102e9565b92915050565b610127828261039c565b6001600160a01b038216600090815260208190526040812061016a90836102e9565b6001149392505050565b6001600160a01b0381166000908152602081905260408120610195906101a8565b6001600160e01b03166001149050919050565b805460009080156101e7576101d0836101c260018461089a565b600091825260209091200190565b5464010000000090046001600160e01b03166101ea565b60005b9392505050565b60005b818110156102d457610226838383818110610211576102116108ad565b90506020020160208101906100fe9190610869565b1561027c5782828281811061023d5761023d6108ad565b90506020020160208101906102529190610869565b60405163c0b7477d60e01b81526001600160a01b0390911660048201526024015b60405180910390fd5b6102ca6001600080868686818110610296576102966108ad565b90506020020160208101906102ab9190610869565b6001600160a01b03168152602081019190915260400160002090610405565b50506001016101f4565b506102e360016104398361043d565b50505050565b600043821061033a5760405162461bcd60e51b815260206004820181905260248201527f436865636b706f696e74733a20626c6f636b206e6f7420796574206d696e65646044820152606401610273565b600061034583610475565b84549091506000610358868483856104f5565b905080156103865761036f866101c260018461089a565b5464010000000090046001600160e01b0316610389565b60005b6001600160e01b03169695505050505050565b60005b818110156103f6576103bc838383818110610211576102116108ad565b6103d25782828281811061023d5761023d6108ad565b6103ec6000806000868686818110610296576102966108ad565b505060010161039f565b506102e360016105538361043d565b6000806104238461041543610475565b61041e86610558565b6105d7565b6001600160e01b03918216969116945092505050565b0190565b60008061046885610463610450886101a8565b6001600160e01b0316868863ffffffff16565b610405565b915091505b935093915050565b600063ffffffff8211156104f15760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201527f32206269747300000000000000000000000000000000000000000000000000006064820152608401610273565b5090565b60005b8183101561054b57600061050c848461077a565b60008781526020902090915063ffffffff86169082015463ffffffff16111561053757809250610545565b6105428160016108c3565b93505b506104f8565b509392505050565b900390565b60006001600160e01b038211156104f15760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203260448201527f32342062697473000000000000000000000000000000000000000000000000006064820152608401610273565b8254600090819080156107205760006105f5876101c260018561089a565b60408051808201909152905463ffffffff8082168084526401000000009092046001600160e01b0316602084015291925090871610156106775760405162461bcd60e51b815260206004820152601b60248201527f436865636b706f696e743a2064656372656173696e67206b65797300000000006044820152606401610273565b805163ffffffff8088169116036106c05784610698886101c260018661089a565b80546001600160e01b03929092166401000000000263ffffffff909216919091179055610710565b6040805180820190915263ffffffff80881682526001600160e01b0380881660208085019182528b54600181018d5560008d81529190912094519151909216640100000000029216919091179101555b60200151925083915061046d9050565b50506040805180820190915263ffffffff80851682526001600160e01b0380851660208085019182528854600181018a5560008a81529182209551925190931664010000000002919093161792019190915590508161046d565b600061078960028484186108d6565b6101ea908484166108c3565b600080602083850312156107a857600080fd5b823567ffffffffffffffff808211156107c057600080fd5b818501915085601f8301126107d457600080fd5b8135818111156107e357600080fd5b8660208260051b85010111156107f857600080fd5b60209290920196919550909350505050565b60006020828403121561081c57600080fd5b5035919050565b80356001600160a01b038116811461083a57600080fd5b919050565b6000806040838503121561085257600080fd5b61085b83610823565b946020939093013593505050565b60006020828403121561087b57600080fd5b6101ea82610823565b634e487b7160e01b600052601160045260246000fd5b8181038181111561013857610138610884565b634e487b7160e01b600052603260045260246000fd5b8082018082111561013857610138610884565b6000826108f357634e487b7160e01b600052601260045260246000fd5b50049056fea164736f6c6343000811000a", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/src/mocks/token/ERC1155Mock.sol/ERC1155Mock.dbg.json b/contracts/artifacts/src/mocks/token/ERC1155Mock.sol/ERC1155Mock.dbg.json new file mode 100644 index 00000000..4058cb44 --- /dev/null +++ b/contracts/artifacts/src/mocks/token/ERC1155Mock.sol/ERC1155Mock.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" +} diff --git a/contracts/artifacts/src/mocks/token/ERC1155Mock.sol/ERC1155Mock.json b/contracts/artifacts/src/mocks/token/ERC1155Mock.sol/ERC1155Mock.json new file mode 100644 index 00000000..71e824ba --- /dev/null +++ b/contracts/artifacts/src/mocks/token/ERC1155Mock.sol/ERC1155Mock.json @@ -0,0 +1,380 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "ERC1155Mock", + "sourceName": "src/mocks/token/ERC1155Mock.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "string", + "name": "_uri", + "type": "string" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "ApprovalForAll", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "values", + "type": "uint256[]" + } + ], + "name": "TransferBatch", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "TransferSingle", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "string", + "name": "value", + "type": "string" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "name": "URI", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "accounts", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + } + ], + "name": "balanceOfBatch", + "outputs": [ + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "burn", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "isApprovedForAll", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "mint", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "safeBatchTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "setApprovalForAll", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "uri", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x60806040523480156200001157600080fd5b5060405162001a8938038062001a89833981016040819052620000349162000070565b80620000408162000048565b5050620002a0565b6002620000568282620001d4565b5050565b634e487b7160e01b600052604160045260246000fd5b600060208083850312156200008457600080fd5b82516001600160401b03808211156200009c57600080fd5b818501915085601f830112620000b157600080fd5b815181811115620000c657620000c66200005a565b604051601f8201601f19908116603f01168101908382118183101715620000f157620000f16200005a565b8160405282815288868487010111156200010a57600080fd5b600093505b828410156200012e57848401860151818501870152928501926200010f565b600086848301015280965050505050505092915050565b600181811c908216806200015a57607f821691505b6020821081036200017b57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620001cf57600081815260208120601f850160051c81016020861015620001aa5750805b601f850160051c820191505b81811015620001cb57828155600101620001b6565b5050505b505050565b81516001600160401b03811115620001f057620001f06200005a565b620002088162000201845462000145565b8462000181565b602080601f831160018114620002405760008415620002275750858301515b600019600386901b1c1916600185901b178555620001cb565b600085815260208120601f198616915b82811015620002715788860151825594840194600190910190840162000250565b5085821015620002905787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6117d980620002b06000396000f3fe608060405234801561001057600080fd5b50600436106100bd5760003560e01c80634e1273f411610076578063e985e9c51161005b578063e985e9c514610186578063f242432a146101c2578063f5298aca146101d557600080fd5b80634e1273f414610153578063a22cb4651461017357600080fd5b80630e89341c116100a75780630e89341c1461010b578063156e29f61461012b5780632eb2c2d61461014057600080fd5b8062fdd58e146100c257806301ffc9a7146100e8575b600080fd5b6100d56100d03660046110b9565b6101e8565b6040519081526020015b60405180910390f35b6100fb6100f63660046110fc565b610294565b60405190151581526020016100df565b61011e610119366004611120565b6102e4565b6040516100df919061117f565b61013e610139366004611192565b610378565b005b61013e61014e366004611311565b610398565b6101666101613660046113bb565b61042b565b6040516100df91906114c1565b61013e6101813660046114d4565b610569565b6100fb610194366004611510565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205460ff1690565b61013e6101d0366004611543565b610578565b61013e6101e3366004611192565b610604565b60006001600160a01b03831661026b5760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201527f616c6964206f776e65720000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b506000818152602081815260408083206001600160a01b03861684529091529020545b92915050565b60006001600160e01b03198216636cdb3d1360e11b14806102c557506001600160e01b031982166303a24d0760e21b145b8061028e57506301ffc9a760e01b6001600160e01b031983161461028e565b6060600280546102f3906115a8565b80601f016020809104026020016040519081016040528092919081815260200182805461031f906115a8565b801561036c5780601f106103415761010080835404028352916020019161036c565b820191906000526020600020905b81548152906001019060200180831161034f57829003601f168201915b50505050509050919050565b6103938383836040518060200160405280600081525061060f565b505050565b6001600160a01b0385163314806103b457506103b48533610194565b6104175760405162461bcd60e51b815260206004820152602e60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201526d195c881bdc88185c1c1c9bdd995960921b6064820152608401610262565b6104248585858585610723565b5050505050565b606081518351146104a45760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e67746860448201527f206d69736d6174636800000000000000000000000000000000000000000000006064820152608401610262565b6000835167ffffffffffffffff8111156104c0576104c06111c5565b6040519080825280602002602001820160405280156104e9578160200160208202803683370190505b50905060005b84518110156105615761053485828151811061050d5761050d6115e2565b6020026020010151858381518110610527576105276115e2565b60200260200101516101e8565b828281518110610546576105466115e2565b602090810291909101015261055a8161160e565b90506104ef565b509392505050565b610574338383610996565b5050565b6001600160a01b03851633148061059457506105948533610194565b6105f75760405162461bcd60e51b815260206004820152602e60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201526d195c881bdc88185c1c1c9bdd995960921b6064820152608401610262565b6104248585858585610a8a565b610393838383610c35565b6001600160a01b03841661066f5760405162461bcd60e51b815260206004820152602160248201527f455243313135353a206d696e7420746f20746865207a65726f206164647265736044820152607360f81b6064820152608401610262565b33600061067b85610db1565b9050600061068885610db1565b90506000868152602081815260408083206001600160a01b038b168452909152812080548792906106ba908490611627565b909155505060408051878152602081018790526001600160a01b03808a1692600092918716917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a461071a83600089898989610dfc565b50505050505050565b815183511461079a5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060448201527f6d69736d617463680000000000000000000000000000000000000000000000006064820152608401610262565b6001600160a01b0384166107fe5760405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b6064820152608401610262565b3360005b845181101561092857600085828151811061081f5761081f6115e2565b60200260200101519050600085838151811061083d5761083d6115e2565b602090810291909101810151600084815280835260408082206001600160a01b038e1683529093529190912054909150818110156108d05760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201526939103a3930b739b332b960b11b6064820152608401610262565b6000838152602081815260408083206001600160a01b038e8116855292528083208585039055908b1682528120805484929061090d908490611627565b92505081905550505050806109219061160e565b9050610802565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb878760405161097892919061163a565b60405180910390a461098e818787878787610fa1565b505050505050565b816001600160a01b0316836001600160a01b031603610a1d5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c2073746174757360448201527f20666f722073656c6600000000000000000000000000000000000000000000006064820152608401610262565b6001600160a01b03838116600081815260016020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b038416610aee5760405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b6064820152608401610262565b336000610afa85610db1565b90506000610b0785610db1565b90506000868152602081815260408083206001600160a01b038c16845290915290205485811015610b8d5760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201526939103a3930b739b332b960b11b6064820152608401610262565b6000878152602081815260408083206001600160a01b038d8116855292528083208985039055908a16825281208054889290610bca908490611627565b909155505060408051888152602081018890526001600160a01b03808b16928c821692918816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4610c2a848a8a8a8a8a610dfc565b505050505050505050565b6001600160a01b038316610c975760405162461bcd60e51b815260206004820152602360248201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260448201526265737360e81b6064820152608401610262565b336000610ca384610db1565b90506000610cb084610db1565b60408051602080820183526000918290528882528181528282206001600160a01b038b1683529052205490915084811015610d395760405162461bcd60e51b8152602060048201526024808201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c604482015263616e636560e01b6064820152608401610262565b6000868152602081815260408083206001600160a01b038b81168086529184528285208a8703905582518b81529384018a90529092908816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a460408051602081019091526000905261071a565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110610deb57610deb6115e2565b602090810291909101015292915050565b6001600160a01b0384163b1561098e5760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e6190610e409089908990889088908890600401611668565b6020604051808303816000875af1925050508015610e7b575060408051601f3d908101601f19168201909252610e78918101906116ab565b60015b610f3057610e876116c8565b806308c379a003610ec05750610e9b6116e4565b80610ea65750610ec2565b8060405162461bcd60e51b8152600401610262919061117f565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e2d4552433131353560448201527f526563656976657220696d706c656d656e7465720000000000000000000000006064820152608401610262565b6001600160e01b0319811663f23a6e6160e01b1461071a5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a656374656044820152676420746f6b656e7360c01b6064820152608401610262565b6001600160a01b0384163b1561098e5760405163bc197c8160e01b81526001600160a01b0385169063bc197c8190610fe5908990899088908890889060040161176e565b6020604051808303816000875af1925050508015611020575060408051601f3d908101601f1916820190925261101d918101906116ab565b60015b61102c57610e876116c8565b6001600160e01b0319811663bc197c8160e01b1461071a5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a656374656044820152676420746f6b656e7360c01b6064820152608401610262565b80356001600160a01b03811681146110b457600080fd5b919050565b600080604083850312156110cc57600080fd5b6110d58361109d565b946020939093013593505050565b6001600160e01b0319811681146110f957600080fd5b50565b60006020828403121561110e57600080fd5b8135611119816110e3565b9392505050565b60006020828403121561113257600080fd5b5035919050565b6000815180845260005b8181101561115f57602081850181015186830182015201611143565b506000602082860101526020601f19601f83011685010191505092915050565b6020815260006111196020830184611139565b6000806000606084860312156111a757600080fd5b6111b08461109d565b95602085013595506040909401359392505050565b634e487b7160e01b600052604160045260246000fd5b601f8201601f1916810167ffffffffffffffff81118282101715611201576112016111c5565b6040525050565b600067ffffffffffffffff821115611222576112226111c5565b5060051b60200190565b600082601f83011261123d57600080fd5b8135602061124a82611208565b60405161125782826111db565b83815260059390931b850182019282810191508684111561127757600080fd5b8286015b84811015611292578035835291830191830161127b565b509695505050505050565b600082601f8301126112ae57600080fd5b813567ffffffffffffffff8111156112c8576112c86111c5565b6040516112df601f8301601f1916602001826111db565b8181528460208386010111156112f457600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a0868803121561132957600080fd5b6113328661109d565b94506113406020870161109d565b9350604086013567ffffffffffffffff8082111561135d57600080fd5b61136989838a0161122c565b9450606088013591508082111561137f57600080fd5b61138b89838a0161122c565b935060808801359150808211156113a157600080fd5b506113ae8882890161129d565b9150509295509295909350565b600080604083850312156113ce57600080fd5b823567ffffffffffffffff808211156113e657600080fd5b818501915085601f8301126113fa57600080fd5b8135602061140782611208565b60405161141482826111db565b83815260059390931b850182019282810191508984111561143457600080fd5b948201945b838610156114595761144a8661109d565b82529482019490820190611439565b9650508601359250508082111561146f57600080fd5b5061147c8582860161122c565b9150509250929050565b600081518084526020808501945080840160005b838110156114b65781518752958201959082019060010161149a565b509495945050505050565b6020815260006111196020830184611486565b600080604083850312156114e757600080fd5b6114f08361109d565b91506020830135801515811461150557600080fd5b809150509250929050565b6000806040838503121561152357600080fd5b61152c8361109d565b915061153a6020840161109d565b90509250929050565b600080600080600060a0868803121561155b57600080fd5b6115648661109d565b94506115726020870161109d565b93506040860135925060608601359150608086013567ffffffffffffffff81111561159c57600080fd5b6113ae8882890161129d565b600181811c908216806115bc57607f821691505b6020821081036115dc57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201611620576116206115f8565b5060010190565b8082018082111561028e5761028e6115f8565b60408152600061164d6040830185611486565b828103602084015261165f8185611486565b95945050505050565b60006001600160a01b03808816835280871660208401525084604083015283606083015260a060808301526116a060a0830184611139565b979650505050505050565b6000602082840312156116bd57600080fd5b8151611119816110e3565b600060033d11156116e15760046000803e5060005160e01c5b90565b600060443d10156116f25790565b6040516003193d81016004833e81513d67ffffffffffffffff816024840111818411171561172257505050505090565b828501915081518181111561173a5750505050505090565b843d87010160208285010111156117545750505050505090565b611763602082860101876111db565b509095945050505050565b60006001600160a01b03808816835280871660208401525060a0604083015261179a60a0830186611486565b82810360608401526117ac8186611486565b905082810360808401526117c08185611139565b9897505050505050505056fea164736f6c6343000811000a", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100bd5760003560e01c80634e1273f411610076578063e985e9c51161005b578063e985e9c514610186578063f242432a146101c2578063f5298aca146101d557600080fd5b80634e1273f414610153578063a22cb4651461017357600080fd5b80630e89341c116100a75780630e89341c1461010b578063156e29f61461012b5780632eb2c2d61461014057600080fd5b8062fdd58e146100c257806301ffc9a7146100e8575b600080fd5b6100d56100d03660046110b9565b6101e8565b6040519081526020015b60405180910390f35b6100fb6100f63660046110fc565b610294565b60405190151581526020016100df565b61011e610119366004611120565b6102e4565b6040516100df919061117f565b61013e610139366004611192565b610378565b005b61013e61014e366004611311565b610398565b6101666101613660046113bb565b61042b565b6040516100df91906114c1565b61013e6101813660046114d4565b610569565b6100fb610194366004611510565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205460ff1690565b61013e6101d0366004611543565b610578565b61013e6101e3366004611192565b610604565b60006001600160a01b03831661026b5760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201527f616c6964206f776e65720000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b506000818152602081815260408083206001600160a01b03861684529091529020545b92915050565b60006001600160e01b03198216636cdb3d1360e11b14806102c557506001600160e01b031982166303a24d0760e21b145b8061028e57506301ffc9a760e01b6001600160e01b031983161461028e565b6060600280546102f3906115a8565b80601f016020809104026020016040519081016040528092919081815260200182805461031f906115a8565b801561036c5780601f106103415761010080835404028352916020019161036c565b820191906000526020600020905b81548152906001019060200180831161034f57829003601f168201915b50505050509050919050565b6103938383836040518060200160405280600081525061060f565b505050565b6001600160a01b0385163314806103b457506103b48533610194565b6104175760405162461bcd60e51b815260206004820152602e60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201526d195c881bdc88185c1c1c9bdd995960921b6064820152608401610262565b6104248585858585610723565b5050505050565b606081518351146104a45760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e67746860448201527f206d69736d6174636800000000000000000000000000000000000000000000006064820152608401610262565b6000835167ffffffffffffffff8111156104c0576104c06111c5565b6040519080825280602002602001820160405280156104e9578160200160208202803683370190505b50905060005b84518110156105615761053485828151811061050d5761050d6115e2565b6020026020010151858381518110610527576105276115e2565b60200260200101516101e8565b828281518110610546576105466115e2565b602090810291909101015261055a8161160e565b90506104ef565b509392505050565b610574338383610996565b5050565b6001600160a01b03851633148061059457506105948533610194565b6105f75760405162461bcd60e51b815260206004820152602e60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201526d195c881bdc88185c1c1c9bdd995960921b6064820152608401610262565b6104248585858585610a8a565b610393838383610c35565b6001600160a01b03841661066f5760405162461bcd60e51b815260206004820152602160248201527f455243313135353a206d696e7420746f20746865207a65726f206164647265736044820152607360f81b6064820152608401610262565b33600061067b85610db1565b9050600061068885610db1565b90506000868152602081815260408083206001600160a01b038b168452909152812080548792906106ba908490611627565b909155505060408051878152602081018790526001600160a01b03808a1692600092918716917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a461071a83600089898989610dfc565b50505050505050565b815183511461079a5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060448201527f6d69736d617463680000000000000000000000000000000000000000000000006064820152608401610262565b6001600160a01b0384166107fe5760405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b6064820152608401610262565b3360005b845181101561092857600085828151811061081f5761081f6115e2565b60200260200101519050600085838151811061083d5761083d6115e2565b602090810291909101810151600084815280835260408082206001600160a01b038e1683529093529190912054909150818110156108d05760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201526939103a3930b739b332b960b11b6064820152608401610262565b6000838152602081815260408083206001600160a01b038e8116855292528083208585039055908b1682528120805484929061090d908490611627565b92505081905550505050806109219061160e565b9050610802565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb878760405161097892919061163a565b60405180910390a461098e818787878787610fa1565b505050505050565b816001600160a01b0316836001600160a01b031603610a1d5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c2073746174757360448201527f20666f722073656c6600000000000000000000000000000000000000000000006064820152608401610262565b6001600160a01b03838116600081815260016020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b038416610aee5760405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b6064820152608401610262565b336000610afa85610db1565b90506000610b0785610db1565b90506000868152602081815260408083206001600160a01b038c16845290915290205485811015610b8d5760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201526939103a3930b739b332b960b11b6064820152608401610262565b6000878152602081815260408083206001600160a01b038d8116855292528083208985039055908a16825281208054889290610bca908490611627565b909155505060408051888152602081018890526001600160a01b03808b16928c821692918816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4610c2a848a8a8a8a8a610dfc565b505050505050505050565b6001600160a01b038316610c975760405162461bcd60e51b815260206004820152602360248201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260448201526265737360e81b6064820152608401610262565b336000610ca384610db1565b90506000610cb084610db1565b60408051602080820183526000918290528882528181528282206001600160a01b038b1683529052205490915084811015610d395760405162461bcd60e51b8152602060048201526024808201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c604482015263616e636560e01b6064820152608401610262565b6000868152602081815260408083206001600160a01b038b81168086529184528285208a8703905582518b81529384018a90529092908816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a460408051602081019091526000905261071a565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110610deb57610deb6115e2565b602090810291909101015292915050565b6001600160a01b0384163b1561098e5760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e6190610e409089908990889088908890600401611668565b6020604051808303816000875af1925050508015610e7b575060408051601f3d908101601f19168201909252610e78918101906116ab565b60015b610f3057610e876116c8565b806308c379a003610ec05750610e9b6116e4565b80610ea65750610ec2565b8060405162461bcd60e51b8152600401610262919061117f565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e2d4552433131353560448201527f526563656976657220696d706c656d656e7465720000000000000000000000006064820152608401610262565b6001600160e01b0319811663f23a6e6160e01b1461071a5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a656374656044820152676420746f6b656e7360c01b6064820152608401610262565b6001600160a01b0384163b1561098e5760405163bc197c8160e01b81526001600160a01b0385169063bc197c8190610fe5908990899088908890889060040161176e565b6020604051808303816000875af1925050508015611020575060408051601f3d908101601f1916820190925261101d918101906116ab565b60015b61102c57610e876116c8565b6001600160e01b0319811663bc197c8160e01b1461071a5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a656374656044820152676420746f6b656e7360c01b6064820152608401610262565b80356001600160a01b03811681146110b457600080fd5b919050565b600080604083850312156110cc57600080fd5b6110d58361109d565b946020939093013593505050565b6001600160e01b0319811681146110f957600080fd5b50565b60006020828403121561110e57600080fd5b8135611119816110e3565b9392505050565b60006020828403121561113257600080fd5b5035919050565b6000815180845260005b8181101561115f57602081850181015186830182015201611143565b506000602082860101526020601f19601f83011685010191505092915050565b6020815260006111196020830184611139565b6000806000606084860312156111a757600080fd5b6111b08461109d565b95602085013595506040909401359392505050565b634e487b7160e01b600052604160045260246000fd5b601f8201601f1916810167ffffffffffffffff81118282101715611201576112016111c5565b6040525050565b600067ffffffffffffffff821115611222576112226111c5565b5060051b60200190565b600082601f83011261123d57600080fd5b8135602061124a82611208565b60405161125782826111db565b83815260059390931b850182019282810191508684111561127757600080fd5b8286015b84811015611292578035835291830191830161127b565b509695505050505050565b600082601f8301126112ae57600080fd5b813567ffffffffffffffff8111156112c8576112c86111c5565b6040516112df601f8301601f1916602001826111db565b8181528460208386010111156112f457600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a0868803121561132957600080fd5b6113328661109d565b94506113406020870161109d565b9350604086013567ffffffffffffffff8082111561135d57600080fd5b61136989838a0161122c565b9450606088013591508082111561137f57600080fd5b61138b89838a0161122c565b935060808801359150808211156113a157600080fd5b506113ae8882890161129d565b9150509295509295909350565b600080604083850312156113ce57600080fd5b823567ffffffffffffffff808211156113e657600080fd5b818501915085601f8301126113fa57600080fd5b8135602061140782611208565b60405161141482826111db565b83815260059390931b850182019282810191508984111561143457600080fd5b948201945b838610156114595761144a8661109d565b82529482019490820190611439565b9650508601359250508082111561146f57600080fd5b5061147c8582860161122c565b9150509250929050565b600081518084526020808501945080840160005b838110156114b65781518752958201959082019060010161149a565b509495945050505050565b6020815260006111196020830184611486565b600080604083850312156114e757600080fd5b6114f08361109d565b91506020830135801515811461150557600080fd5b809150509250929050565b6000806040838503121561152357600080fd5b61152c8361109d565b915061153a6020840161109d565b90509250929050565b600080600080600060a0868803121561155b57600080fd5b6115648661109d565b94506115726020870161109d565b93506040860135925060608601359150608086013567ffffffffffffffff81111561159c57600080fd5b6113ae8882890161129d565b600181811c908216806115bc57607f821691505b6020821081036115dc57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201611620576116206115f8565b5060010190565b8082018082111561028e5761028e6115f8565b60408152600061164d6040830185611486565b828103602084015261165f8185611486565b95945050505050565b60006001600160a01b03808816835280871660208401525084604083015283606083015260a060808301526116a060a0830184611139565b979650505050505050565b6000602082840312156116bd57600080fd5b8151611119816110e3565b600060033d11156116e15760046000803e5060005160e01c5b90565b600060443d10156116f25790565b6040516003193d81016004833e81513d67ffffffffffffffff816024840111818411171561172257505050505090565b828501915081518181111561173a5750505050505090565b843d87010160208285010111156117545750505050505090565b611763602082860101876111db565b509095945050505050565b60006001600160a01b03808816835280871660208401525060a0604083015261179a60a0830186611486565b82810360608401526117ac8186611486565b905082810360808401526117c08185611139565b9897505050505050505056fea164736f6c6343000811000a", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/src/mocks/token/ERC20Mock.sol/ERC20Mock.dbg.json b/contracts/artifacts/src/mocks/token/ERC20Mock.sol/ERC20Mock.dbg.json new file mode 100644 index 00000000..4058cb44 --- /dev/null +++ b/contracts/artifacts/src/mocks/token/ERC20Mock.sol/ERC20Mock.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" +} diff --git a/contracts/artifacts/src/mocks/token/ERC20Mock.sol/ERC20Mock.json b/contracts/artifacts/src/mocks/token/ERC20Mock.sol/ERC20Mock.json new file mode 100644 index 00000000..556ea7fe --- /dev/null +++ b/contracts/artifacts/src/mocks/token/ERC20Mock.sol/ERC20Mock.json @@ -0,0 +1,341 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "ERC20Mock", + "sourceName": "src/mocks/token/ERC20Mock.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "string", + "name": "_name", + "type": "string" + }, + { + "internalType": "string", + "name": "_symbol", + "type": "string" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "decimals_", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "subtractedValue", + "type": "uint256" + } + ], + "name": "decreaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "addedValue", + "type": "uint256" + } + ], + "name": "increaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "setBalance", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint8", + "name": "_decimals", + "type": "uint8" + } + ], + "name": "setDecimals", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x60806040526005805460ff191660121790553480156200001e57600080fd5b5060405162000ed038038062000ed0833981016040819052620000419162000130565b8181600362000051838262000229565b50600462000060828262000229565b5050505050620002f5565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200009357600080fd5b81516001600160401b0380821115620000b057620000b06200006b565b604051601f8301601f19908116603f01168101908282118183101715620000db57620000db6200006b565b81604052838152602092508683858801011115620000f857600080fd5b600091505b838210156200011c5785820183015181830184015290820190620000fd565b600093810190920192909252949350505050565b600080604083850312156200014457600080fd5b82516001600160401b03808211156200015c57600080fd5b6200016a8683870162000081565b935060208501519150808211156200018157600080fd5b50620001908582860162000081565b9150509250929050565b600181811c90821680620001af57607f821691505b602082108103620001d057634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200022457600081815260208120601f850160051c81016020861015620001ff5750805b601f850160051c820191505b8181101562000220578281556001016200020b565b5050505b505050565b81516001600160401b038111156200024557620002456200006b565b6200025d816200025684546200019a565b84620001d6565b602080601f8311600181146200029557600084156200027c5750858301515b600019600386901b1c1916600185901b17855562000220565b600085815260208120601f198616915b82811015620002c657888601518255948401946001909101908401620002a5565b5085821015620002e55787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b610bcb80620003056000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c80637a1395aa1161008c578063a9059cbb11610066578063a9059cbb146101eb578063dd62ed3e146101fe578063e30443bc14610237578063f785ef721461024a57600080fd5b80637a1395aa146101aa57806395d89b41146101d0578063a457c2d7146101d857600080fd5b806323b872dd116100c857806323b872dd14610142578063313ce56714610155578063395093511461016e57806370a082311461018157600080fd5b806306fdde03146100ef578063095ea7b31461010d57806318160ddd14610130575b600080fd5b6100f7610257565b6040516101049190610a00565b60405180910390f35b61012061011b366004610a6a565b6102e9565b6040519015158152602001610104565b6002545b604051908152602001610104565b610120610150366004610a94565b610303565b60055460ff165b60405160ff9091168152602001610104565b61012061017c366004610a6a565b610327565b61013461018f366004610ad0565b6001600160a01b031660009081526020819052604090205490565b6101ce6101b8366004610af2565b6005805460ff191660ff92909216919091179055565b005b6100f7610366565b6101206101e6366004610a6a565b610375565b6101206101f9366004610a6a565b610424565b61013461020c366004610b15565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6101ce610245366004610a6a565b610432565b60055461015c9060ff1681565b60606003805461026690610b48565b80601f016020809104026020016040519081016040528092919081815260200182805461029290610b48565b80156102df5780601f106102b4576101008083540402835291602001916102df565b820191906000526020600020905b8154815290600101906020018083116102c257829003601f168201915b5050505050905090565b6000336102f7818585610486565b60019150505b92915050565b6000336103118582856105aa565b61031c85858561063c565b506001949350505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091906102f79082908690610361908790610b98565b610486565b60606004805461026690610b48565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909190838110156104175760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b61031c8286868403610486565b6000336102f781858561063c565b6001600160a01b0382166000908152602081905260409020548181101561046b57610466836104618385610bab565b61080f565b505050565b8181111561046657610466836104818484610bab565b6108ce565b6001600160a01b0383166104e85760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161040e565b6001600160a01b0382166105495760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161040e565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03838116600090815260016020908152604080832093861683529290522054600019811461063657818110156106295760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161040e565b6106368484848403610486565b50505050565b6001600160a01b0383166106b85760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f6472657373000000000000000000000000000000000000000000000000000000606482015260840161040e565b6001600160a01b03821661071a5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161040e565b6001600160a01b038316600090815260208190526040902054818110156107a95760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e63650000000000000000000000000000000000000000000000000000606482015260840161040e565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610636565b6001600160a01b0382166108655760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161040e565b80600260008282546108779190610b98565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6001600160a01b03821661092e5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161040e565b6001600160a01b038216600090815260208190526040902054818110156109a25760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b606482015260840161040e565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b600060208083528351808285015260005b81811015610a2d57858101830151858201604001528201610a11565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610a6557600080fd5b919050565b60008060408385031215610a7d57600080fd5b610a8683610a4e565b946020939093013593505050565b600080600060608486031215610aa957600080fd5b610ab284610a4e565b9250610ac060208501610a4e565b9150604084013590509250925092565b600060208284031215610ae257600080fd5b610aeb82610a4e565b9392505050565b600060208284031215610b0457600080fd5b813560ff81168114610aeb57600080fd5b60008060408385031215610b2857600080fd5b610b3183610a4e565b9150610b3f60208401610a4e565b90509250929050565b600181811c90821680610b5c57607f821691505b602082108103610b7c57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156102fd576102fd610b82565b818103818111156102fd576102fd610b8256fea164736f6c6343000811000a", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100ea5760003560e01c80637a1395aa1161008c578063a9059cbb11610066578063a9059cbb146101eb578063dd62ed3e146101fe578063e30443bc14610237578063f785ef721461024a57600080fd5b80637a1395aa146101aa57806395d89b41146101d0578063a457c2d7146101d857600080fd5b806323b872dd116100c857806323b872dd14610142578063313ce56714610155578063395093511461016e57806370a082311461018157600080fd5b806306fdde03146100ef578063095ea7b31461010d57806318160ddd14610130575b600080fd5b6100f7610257565b6040516101049190610a00565b60405180910390f35b61012061011b366004610a6a565b6102e9565b6040519015158152602001610104565b6002545b604051908152602001610104565b610120610150366004610a94565b610303565b60055460ff165b60405160ff9091168152602001610104565b61012061017c366004610a6a565b610327565b61013461018f366004610ad0565b6001600160a01b031660009081526020819052604090205490565b6101ce6101b8366004610af2565b6005805460ff191660ff92909216919091179055565b005b6100f7610366565b6101206101e6366004610a6a565b610375565b6101206101f9366004610a6a565b610424565b61013461020c366004610b15565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6101ce610245366004610a6a565b610432565b60055461015c9060ff1681565b60606003805461026690610b48565b80601f016020809104026020016040519081016040528092919081815260200182805461029290610b48565b80156102df5780601f106102b4576101008083540402835291602001916102df565b820191906000526020600020905b8154815290600101906020018083116102c257829003601f168201915b5050505050905090565b6000336102f7818585610486565b60019150505b92915050565b6000336103118582856105aa565b61031c85858561063c565b506001949350505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091906102f79082908690610361908790610b98565b610486565b60606004805461026690610b48565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909190838110156104175760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b61031c8286868403610486565b6000336102f781858561063c565b6001600160a01b0382166000908152602081905260409020548181101561046b57610466836104618385610bab565b61080f565b505050565b8181111561046657610466836104818484610bab565b6108ce565b6001600160a01b0383166104e85760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161040e565b6001600160a01b0382166105495760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161040e565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03838116600090815260016020908152604080832093861683529290522054600019811461063657818110156106295760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161040e565b6106368484848403610486565b50505050565b6001600160a01b0383166106b85760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f6472657373000000000000000000000000000000000000000000000000000000606482015260840161040e565b6001600160a01b03821661071a5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161040e565b6001600160a01b038316600090815260208190526040902054818110156107a95760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e63650000000000000000000000000000000000000000000000000000606482015260840161040e565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610636565b6001600160a01b0382166108655760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161040e565b80600260008282546108779190610b98565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6001600160a01b03821661092e5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161040e565b6001600160a01b038216600090815260208190526040902054818110156109a25760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b606482015260840161040e565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b600060208083528351808285015260005b81811015610a2d57858101830151858201604001528201610a11565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610a6557600080fd5b919050565b60008060408385031215610a7d57600080fd5b610a8683610a4e565b946020939093013593505050565b600080600060608486031215610aa957600080fd5b610ab284610a4e565b9250610ac060208501610a4e565b9150604084013590509250925092565b600060208284031215610ae257600080fd5b610aeb82610a4e565b9392505050565b600060208284031215610b0457600080fd5b813560ff81168114610aeb57600080fd5b60008060408385031215610b2857600080fd5b610b3183610a4e565b9150610b3f60208401610a4e565b90509250929050565b600181811c90821680610b5c57607f821691505b602082108103610b7c57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156102fd576102fd610b82565b818103818111156102fd576102fd610b8256fea164736f6c6343000811000a", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/src/mocks/token/ERC721Mock.sol/ERC721Mock.dbg.json b/contracts/artifacts/src/mocks/token/ERC721Mock.sol/ERC721Mock.dbg.json new file mode 100644 index 00000000..4058cb44 --- /dev/null +++ b/contracts/artifacts/src/mocks/token/ERC721Mock.sol/ERC721Mock.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" +} diff --git a/contracts/artifacts/src/mocks/token/ERC721Mock.sol/ERC721Mock.json b/contracts/artifacts/src/mocks/token/ERC721Mock.sol/ERC721Mock.json new file mode 100644 index 00000000..559f5457 --- /dev/null +++ b/contracts/artifacts/src/mocks/token/ERC721Mock.sol/ERC721Mock.json @@ -0,0 +1,388 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "ERC721Mock", + "sourceName": "src/mocks/token/ERC721Mock.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "string", + "name": "name_", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol_", + "type": "string" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "approved", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "ApprovalForAll", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "burn", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "getApproved", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "isApprovedForAll", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "mint", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ownerOf", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "setApprovalForAll", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "tokenURI", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x60806040523480156200001157600080fd5b506040516200174538038062001745833981016040819052620000349162000123565b818160006200004483826200021c565b5060016200005382826200021c565b5050505050620002e8565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200008657600080fd5b81516001600160401b0380821115620000a357620000a36200005e565b604051601f8301601f19908116603f01168101908282118183101715620000ce57620000ce6200005e565b81604052838152602092508683858801011115620000eb57600080fd5b600091505b838210156200010f5785820183015181830184015290820190620000f0565b600093810190920192909252949350505050565b600080604083850312156200013757600080fd5b82516001600160401b03808211156200014f57600080fd5b6200015d8683870162000074565b935060208501519150808211156200017457600080fd5b50620001838582860162000074565b9150509250929050565b600181811c90821680620001a257607f821691505b602082108103620001c357634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200021757600081815260208120601f850160051c81016020861015620001f25750805b601f850160051c820191505b818110156200021357828155600101620001fe565b5050505b505050565b81516001600160401b038111156200023857620002386200005e565b62000250816200024984546200018d565b84620001c9565b602080601f8311600181146200028857600084156200026f5750858301515b600019600386901b1c1916600185901b17855562000213565b600085815260208120601f198616915b82811015620002b95788860151825594840194600190910190840162000298565b5085821015620002d85787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61144d80620002f86000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806342966c6811610097578063a22cb46511610066578063a22cb465146101ff578063b88d4fde14610212578063c87b56dd14610225578063e985e9c51461023857600080fd5b806342966c68146101b05780636352211e146101c357806370a08231146101d657806395d89b41146101f757600080fd5b8063095ea7b3116100d3578063095ea7b31461016257806323b872dd1461017757806340c10f191461018a57806342842e0e1461019d57600080fd5b806301ffc9a7146100fa57806306fdde0314610122578063081812fc14610137575b600080fd5b61010d6101083660046110e7565b610274565b60405190151581526020015b60405180910390f35b61012a6102c6565b6040516101199190611154565b61014a610145366004611167565b610358565b6040516001600160a01b039091168152602001610119565b61017561017036600461119c565b61037f565b005b6101756101853660046111c6565b610499565b61017561019836600461119c565b610510565b6101756101ab3660046111c6565b61051e565b6101756101be366004611167565b610539565b61014a6101d1366004611167565b610545565b6101e96101e4366004611202565b6105aa565b604051908152602001610119565b61012a610644565b61017561020d36600461121d565b610653565b61017561022036600461126f565b61065e565b61012a610233366004611167565b6106dc565b61010d61024636600461134b565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b60006001600160e01b031982166380ac58cd60e01b14806102a557506001600160e01b03198216635b5e139f60e01b145b806102c057506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600080546102d59061137e565b80601f01602080910402602001604051908101604052809291908181526020018280546103019061137e565b801561034e5780601f106103235761010080835404028352916020019161034e565b820191906000526020600020905b81548152906001019060200180831161033157829003601f168201915b5050505050905090565b600061036382610750565b506000908152600460205260409020546001600160a01b031690565b600061038a82610545565b9050806001600160a01b0316836001600160a01b0316036103fc5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b038216148061041857506104188133610246565b61048a5760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c00000060648201526084016103f3565b61049483836107b4565b505050565b6104a33382610822565b6105055760405162461bcd60e51b815260206004820152602d60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201526c1c881bdc88185c1c1c9bdd9959609a1b60648201526084016103f3565b6104948383836108a1565b61051a8282610a81565b5050565b6104948383836040518060200160405280600081525061065e565b61054281610c0c565b50565b6000818152600260205260408120546001600160a01b0316806102c05760405162461bcd60e51b815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e204944000000000000000060448201526064016103f3565b60006001600160a01b0382166106285760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f74206120766160448201527f6c6964206f776e6572000000000000000000000000000000000000000000000060648201526084016103f3565b506001600160a01b031660009081526003602052604090205490565b6060600180546102d59061137e565b61051a338383610ca1565b6106683383610822565b6106ca5760405162461bcd60e51b815260206004820152602d60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201526c1c881bdc88185c1c1c9bdd9959609a1b60648201526084016103f3565b6106d684848484610d6f565b50505050565b60606106e782610750565b60006106fe60408051602081019091526000815290565b9050600081511161071e5760405180602001604052806000815250610749565b8061072884610df8565b6040516020016107399291906113b8565b6040516020818303038152906040525b9392505050565b6000818152600260205260409020546001600160a01b03166105425760405162461bcd60e51b815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e204944000000000000000060448201526064016103f3565b600081815260046020526040902080546001600160a01b0319166001600160a01b03841690811790915581906107e982610545565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008061082e83610545565b9050806001600160a01b0316846001600160a01b0316148061087557506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b806108995750836001600160a01b031661088e84610358565b6001600160a01b0316145b949350505050565b826001600160a01b03166108b482610545565b6001600160a01b0316146109185760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016103f3565b6001600160a01b03821661097a5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016103f3565b826001600160a01b031661098d82610545565b6001600160a01b0316146109f15760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016103f3565b600081815260046020908152604080832080546001600160a01b03199081169091556001600160a01b0387811680865260038552838620805460001901905590871680865283862080546001019055868652600290945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6001600160a01b038216610ad75760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016103f3565b6000818152600260205260409020546001600160a01b031615610b3c5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016103f3565b6000818152600260205260409020546001600160a01b031615610ba15760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016103f3565b6001600160a01b038216600081815260036020908152604080832080546001019055848352600290915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6000610c1782610545565b9050610c2282610545565b600083815260046020908152604080832080546001600160a01b03199081169091556001600160a01b0385168085526003845282852080546000190190558785526002909352818420805490911690555192935084927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b816001600160a01b0316836001600160a01b031603610d025760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016103f3565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b610d7a8484846108a1565b610d8684848484610e98565b6106d65760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e746572000000000000000000000000000060648201526084016103f3565b60606000610e0583610fef565b600101905060008167ffffffffffffffff811115610e2557610e25611259565b6040519080825280601f01601f191660200182016040528015610e4f576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084610e5957509392505050565b60006001600160a01b0384163b15610fe457604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290610edc9033908990889088906004016113e7565b6020604051808303816000875af1925050508015610f17575060408051601f3d908101601f19168201909252610f1491810190611423565b60015b610fca573d808015610f45576040519150601f19603f3d011682016040523d82523d6000602084013e610f4a565b606091505b508051600003610fc25760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e746572000000000000000000000000000060648201526084016103f3565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050610899565b506001949350505050565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310611038577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310611064576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061108257662386f26fc10000830492506010015b6305f5e100831061109a576305f5e100830492506008015b61271083106110ae57612710830492506004015b606483106110c0576064830492506002015b600a83106102c05760010192915050565b6001600160e01b03198116811461054257600080fd5b6000602082840312156110f957600080fd5b8135610749816110d1565b60005b8381101561111f578181015183820152602001611107565b50506000910152565b60008151808452611140816020860160208601611104565b601f01601f19169290920160200192915050565b6020815260006107496020830184611128565b60006020828403121561117957600080fd5b5035919050565b80356001600160a01b038116811461119757600080fd5b919050565b600080604083850312156111af57600080fd5b6111b883611180565b946020939093013593505050565b6000806000606084860312156111db57600080fd5b6111e484611180565b92506111f260208501611180565b9150604084013590509250925092565b60006020828403121561121457600080fd5b61074982611180565b6000806040838503121561123057600080fd5b61123983611180565b91506020830135801515811461124e57600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b6000806000806080858703121561128557600080fd5b61128e85611180565b935061129c60208601611180565b925060408501359150606085013567ffffffffffffffff808211156112c057600080fd5b818701915087601f8301126112d457600080fd5b8135818111156112e6576112e6611259565b604051601f8201601f19908116603f0116810190838211818310171561130e5761130e611259565b816040528281528a602084870101111561132757600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b6000806040838503121561135e57600080fd5b61136783611180565b915061137560208401611180565b90509250929050565b600181811c9082168061139257607f821691505b6020821081036113b257634e487b7160e01b600052602260045260246000fd5b50919050565b600083516113ca818460208801611104565b8351908301906113de818360208801611104565b01949350505050565b60006001600160a01b038087168352808616602084015250836040830152608060608301526114196080830184611128565b9695505050505050565b60006020828403121561143557600080fd5b8151610749816110d156fea164736f6c6343000811000a", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100f55760003560e01c806342966c6811610097578063a22cb46511610066578063a22cb465146101ff578063b88d4fde14610212578063c87b56dd14610225578063e985e9c51461023857600080fd5b806342966c68146101b05780636352211e146101c357806370a08231146101d657806395d89b41146101f757600080fd5b8063095ea7b3116100d3578063095ea7b31461016257806323b872dd1461017757806340c10f191461018a57806342842e0e1461019d57600080fd5b806301ffc9a7146100fa57806306fdde0314610122578063081812fc14610137575b600080fd5b61010d6101083660046110e7565b610274565b60405190151581526020015b60405180910390f35b61012a6102c6565b6040516101199190611154565b61014a610145366004611167565b610358565b6040516001600160a01b039091168152602001610119565b61017561017036600461119c565b61037f565b005b6101756101853660046111c6565b610499565b61017561019836600461119c565b610510565b6101756101ab3660046111c6565b61051e565b6101756101be366004611167565b610539565b61014a6101d1366004611167565b610545565b6101e96101e4366004611202565b6105aa565b604051908152602001610119565b61012a610644565b61017561020d36600461121d565b610653565b61017561022036600461126f565b61065e565b61012a610233366004611167565b6106dc565b61010d61024636600461134b565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b60006001600160e01b031982166380ac58cd60e01b14806102a557506001600160e01b03198216635b5e139f60e01b145b806102c057506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600080546102d59061137e565b80601f01602080910402602001604051908101604052809291908181526020018280546103019061137e565b801561034e5780601f106103235761010080835404028352916020019161034e565b820191906000526020600020905b81548152906001019060200180831161033157829003601f168201915b5050505050905090565b600061036382610750565b506000908152600460205260409020546001600160a01b031690565b600061038a82610545565b9050806001600160a01b0316836001600160a01b0316036103fc5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b038216148061041857506104188133610246565b61048a5760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c00000060648201526084016103f3565b61049483836107b4565b505050565b6104a33382610822565b6105055760405162461bcd60e51b815260206004820152602d60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201526c1c881bdc88185c1c1c9bdd9959609a1b60648201526084016103f3565b6104948383836108a1565b61051a8282610a81565b5050565b6104948383836040518060200160405280600081525061065e565b61054281610c0c565b50565b6000818152600260205260408120546001600160a01b0316806102c05760405162461bcd60e51b815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e204944000000000000000060448201526064016103f3565b60006001600160a01b0382166106285760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f74206120766160448201527f6c6964206f776e6572000000000000000000000000000000000000000000000060648201526084016103f3565b506001600160a01b031660009081526003602052604090205490565b6060600180546102d59061137e565b61051a338383610ca1565b6106683383610822565b6106ca5760405162461bcd60e51b815260206004820152602d60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201526c1c881bdc88185c1c1c9bdd9959609a1b60648201526084016103f3565b6106d684848484610d6f565b50505050565b60606106e782610750565b60006106fe60408051602081019091526000815290565b9050600081511161071e5760405180602001604052806000815250610749565b8061072884610df8565b6040516020016107399291906113b8565b6040516020818303038152906040525b9392505050565b6000818152600260205260409020546001600160a01b03166105425760405162461bcd60e51b815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e204944000000000000000060448201526064016103f3565b600081815260046020526040902080546001600160a01b0319166001600160a01b03841690811790915581906107e982610545565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008061082e83610545565b9050806001600160a01b0316846001600160a01b0316148061087557506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b806108995750836001600160a01b031661088e84610358565b6001600160a01b0316145b949350505050565b826001600160a01b03166108b482610545565b6001600160a01b0316146109185760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016103f3565b6001600160a01b03821661097a5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016103f3565b826001600160a01b031661098d82610545565b6001600160a01b0316146109f15760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016103f3565b600081815260046020908152604080832080546001600160a01b03199081169091556001600160a01b0387811680865260038552838620805460001901905590871680865283862080546001019055868652600290945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6001600160a01b038216610ad75760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016103f3565b6000818152600260205260409020546001600160a01b031615610b3c5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016103f3565b6000818152600260205260409020546001600160a01b031615610ba15760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016103f3565b6001600160a01b038216600081815260036020908152604080832080546001019055848352600290915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6000610c1782610545565b9050610c2282610545565b600083815260046020908152604080832080546001600160a01b03199081169091556001600160a01b0385168085526003845282852080546000190190558785526002909352818420805490911690555192935084927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b816001600160a01b0316836001600160a01b031603610d025760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016103f3565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b610d7a8484846108a1565b610d8684848484610e98565b6106d65760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e746572000000000000000000000000000060648201526084016103f3565b60606000610e0583610fef565b600101905060008167ffffffffffffffff811115610e2557610e25611259565b6040519080825280601f01601f191660200182016040528015610e4f576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084610e5957509392505050565b60006001600160a01b0384163b15610fe457604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290610edc9033908990889088906004016113e7565b6020604051808303816000875af1925050508015610f17575060408051601f3d908101601f19168201909252610f1491810190611423565b60015b610fca573d808015610f45576040519150601f19603f3d011682016040523d82523d6000602084013e610f4a565b606091505b508051600003610fc25760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e746572000000000000000000000000000060648201526084016103f3565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050610899565b506001949350505050565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310611038577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310611064576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061108257662386f26fc10000830492506010015b6305f5e100831061109a576305f5e100830492506008015b61271083106110ae57612710830492506004015b606483106110c0576064830492506002015b600a83106102c05760010192915050565b6001600160e01b03198116811461054257600080fd5b6000602082840312156110f957600080fd5b8135610749816110d1565b60005b8381101561111f578181015183820152602001611107565b50506000910152565b60008151808452611140816020860160208601611104565b601f01601f19169290920160200192915050565b6020815260006107496020830184611128565b60006020828403121561117957600080fd5b5035919050565b80356001600160a01b038116811461119757600080fd5b919050565b600080604083850312156111af57600080fd5b6111b883611180565b946020939093013593505050565b6000806000606084860312156111db57600080fd5b6111e484611180565b92506111f260208501611180565b9150604084013590509250925092565b60006020828403121561121457600080fd5b61074982611180565b6000806040838503121561123057600080fd5b61123983611180565b91506020830135801515811461124e57600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b6000806000806080858703121561128557600080fd5b61128e85611180565b935061129c60208601611180565b925060408501359150606085013567ffffffffffffffff808211156112c057600080fd5b818701915087601f8301126112d457600080fd5b8135818111156112e6576112e6611259565b604051601f8201601f19908116603f0116810190838211818310171561130e5761130e611259565b816040528281528a602084870101111561132757600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b6000806040838503121561135e57600080fd5b61136783611180565b915061137560208401611180565b90509250929050565b600181811c9082168061139257607f821691505b6020821081036113b257634e487b7160e01b600052602260045260246000fd5b50919050565b600083516113ca818460208801611104565b8351908301906113de818360208801611104565b01949350505050565b60006001600160a01b038087168352808616602084015250836040830152608060608301526114196080830184611128565b9695505050505050565b60006020828403121561143557600080fd5b8151610749816110d156fea164736f6c6343000811000a", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/src/mocks/utils/math/BitmapMock.sol/BitmapMock.dbg.json b/contracts/artifacts/src/mocks/utils/math/BitmapMock.sol/BitmapMock.dbg.json new file mode 100644 index 00000000..b8d2318f --- /dev/null +++ b/contracts/artifacts/src/mocks/utils/math/BitmapMock.sol/BitmapMock.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" +} diff --git a/contracts/artifacts/src/mocks/utils/math/BitmapMock.sol/BitmapMock.json b/contracts/artifacts/src/mocks/utils/math/BitmapMock.sol/BitmapMock.json new file mode 100644 index 00000000..7caa53da --- /dev/null +++ b/contracts/artifacts/src/mocks/utils/math/BitmapMock.sol/BitmapMock.json @@ -0,0 +1,59 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "BitmapMock", + "sourceName": "src/mocks/utils/math/BitmapMock.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "uint256", + "name": "_bitmap", + "type": "uint256" + }, + { + "internalType": "uint8", + "name": "_index", + "type": "uint8" + } + ], + "name": "flipBit", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_bitmap", + "type": "uint256" + }, + { + "internalType": "uint8", + "name": "_index", + "type": "uint8" + } + ], + "name": "hasBit", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "pure", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b5060dc8061001f6000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c806330c869ef1460375780637a3a148514605b575b600080fd5b60466042366004609b565b6077565b60405190151581526020015b60405180910390f35b606a6066366004609b565b608c565b6040519081526020016052565b6000600160ff83161b831615155b9392505050565b6000600160ff83161b83186085565b6000806040838503121560ad57600080fd5b82359150602083013560ff8116811460c457600080fd5b80915050925092905056fea164736f6c6343000811000a", + "deployedBytecode": "0x6080604052348015600f57600080fd5b506004361060325760003560e01c806330c869ef1460375780637a3a148514605b575b600080fd5b60466042366004609b565b6077565b60405190151581526020015b60405180910390f35b606a6066366004609b565b608c565b6040519081526020016052565b6000600160ff83161b831615155b9392505050565b6000600160ff83161b83186085565b6000806040838503121560ad57600080fd5b82359150602083013560ff8116811460c457600080fd5b80915050925092905056fea164736f6c6343000811000a", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/src/mocks/utils/math/RatioMock.sol/RatioMock.dbg.json b/contracts/artifacts/src/mocks/utils/math/RatioMock.sol/RatioMock.dbg.json new file mode 100644 index 00000000..b8d2318f --- /dev/null +++ b/contracts/artifacts/src/mocks/utils/math/RatioMock.sol/RatioMock.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" +} diff --git a/contracts/artifacts/src/mocks/utils/math/RatioMock.sol/RatioMock.json b/contracts/artifacts/src/mocks/utils/math/RatioMock.sol/RatioMock.json new file mode 100644 index 00000000..f3730f65 --- /dev/null +++ b/contracts/artifacts/src/mocks/utils/math/RatioMock.sol/RatioMock.json @@ -0,0 +1,64 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "RatioMock", + "sourceName": "src/mocks/utils/math/RatioMock.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "uint256", + "name": "limit", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "actual", + "type": "uint256" + } + ], + "name": "RatioOutOfBounds", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_value", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_ratio", + "type": "uint256" + } + ], + "name": "applyRatioCeiled", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "getRatioBase", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b506101a3806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80633d9de6701461003b578063a027562014610052575b600080fd5b620f42405b60405190815260200160405180910390f35b6100406100603660046100f0565b600061006c8383610075565b90505b92915050565b6000620f42408211156100ab5760405163cc80c19560e01b8152620f424060048201526024810183905260440160405180910390fd5b6100b58284610128565b925060006100c6620f424085610155565b90506100d5620f424085610169565b915080156100e9576100e68261017d565b91505b5092915050565b6000806040838503121561010357600080fd5b50508035926020909101359150565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761006f5761006f610112565b634e487b7160e01b600052601260045260246000fd5b6000826101645761016461013f565b500690565b6000826101785761017861013f565b500490565b60006001820161018f5761018f610112565b506001019056fea164736f6c6343000811000a", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100365760003560e01c80633d9de6701461003b578063a027562014610052575b600080fd5b620f42405b60405190815260200160405180910390f35b6100406100603660046100f0565b600061006c8383610075565b90505b92915050565b6000620f42408211156100ab5760405163cc80c19560e01b8152620f424060048201526024810183905260440160405180910390fd5b6100b58284610128565b925060006100c6620f424085610155565b90506100d5620f424085610169565b915080156100e9576100e68261017d565b91505b5092915050565b6000806040838503121561010357600080fd5b50508035926020909101359150565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761006f5761006f610112565b634e487b7160e01b600052601260045260246000fd5b6000826101645761016461013f565b500690565b6000826101785761017861013f565b500490565b60006001820161018f5761018f610112565b506001019056fea164736f6c6343000811000a", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/src/mocks/utils/versioning/ProtocolVersionMock.sol/ProtocolVersionMock.dbg.json b/contracts/artifacts/src/mocks/utils/versioning/ProtocolVersionMock.sol/ProtocolVersionMock.dbg.json new file mode 100644 index 00000000..b8d2318f --- /dev/null +++ b/contracts/artifacts/src/mocks/utils/versioning/ProtocolVersionMock.sol/ProtocolVersionMock.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" +} diff --git a/contracts/artifacts/src/mocks/utils/versioning/ProtocolVersionMock.sol/ProtocolVersionMock.json b/contracts/artifacts/src/mocks/utils/versioning/ProtocolVersionMock.sol/ProtocolVersionMock.json new file mode 100644 index 00000000..b7e0a7fc --- /dev/null +++ b/contracts/artifacts/src/mocks/utils/versioning/ProtocolVersionMock.sol/ProtocolVersionMock.json @@ -0,0 +1,24 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "ProtocolVersionMock", + "sourceName": "src/mocks/utils/versioning/ProtocolVersionMock.sol", + "abi": [ + { + "inputs": [], + "name": "protocolVersion", + "outputs": [ + { + "internalType": "uint8[3]", + "name": "", + "type": "uint8[3]" + } + ], + "stateMutability": "pure", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b5060cc8061001f6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c80632ae9c60014602d575b600080fd5b60336047565b604051603e9190608d565b60405180910390f35b604d606f565b5060408051606081018252600181526004602082015260009181019190915290565b60405180606001604052806003906020820280368337509192915050565b60608101818360005b600381101560b657815160ff168352602092830192909101906001016096565b5050509291505056fea164736f6c6343000811000a", + "deployedBytecode": "0x6080604052348015600f57600080fd5b506004361060285760003560e01c80632ae9c60014602d575b600080fd5b60336047565b604051603e9190608d565b60405180910390f35b604d606f565b5060408051606081018252600181526004602082015260009181019190915290565b60405180606001604052806003906020820280368337509192915050565b60608101818360005b600381101560b657815160ff168352602092830192909101906001016096565b5050509291505056fea164736f6c6343000811000a", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/src/mocks/utils/versioning/VersionComparisonLibMock.sol/VersionComparisonLibMock.dbg.json b/contracts/artifacts/src/mocks/utils/versioning/VersionComparisonLibMock.sol/VersionComparisonLibMock.dbg.json new file mode 100644 index 00000000..b8d2318f --- /dev/null +++ b/contracts/artifacts/src/mocks/utils/versioning/VersionComparisonLibMock.sol/VersionComparisonLibMock.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" +} diff --git a/contracts/artifacts/src/mocks/utils/versioning/VersionComparisonLibMock.sol/VersionComparisonLibMock.json b/contracts/artifacts/src/mocks/utils/versioning/VersionComparisonLibMock.sol/VersionComparisonLibMock.json new file mode 100644 index 00000000..ee65472f --- /dev/null +++ b/contracts/artifacts/src/mocks/utils/versioning/VersionComparisonLibMock.sol/VersionComparisonLibMock.json @@ -0,0 +1,155 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "VersionComparisonLibMock", + "sourceName": "src/mocks/utils/versioning/VersionComparisonLibMock.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "uint8[3]", + "name": "lhs", + "type": "uint8[3]" + }, + { + "internalType": "uint8[3]", + "name": "rhs", + "type": "uint8[3]" + } + ], + "name": "eq", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint8[3]", + "name": "lhs", + "type": "uint8[3]" + }, + { + "internalType": "uint8[3]", + "name": "rhs", + "type": "uint8[3]" + } + ], + "name": "gt", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint8[3]", + "name": "lhs", + "type": "uint8[3]" + }, + { + "internalType": "uint8[3]", + "name": "rhs", + "type": "uint8[3]" + } + ], + "name": "gte", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint8[3]", + "name": "lhs", + "type": "uint8[3]" + }, + { + "internalType": "uint8[3]", + "name": "rhs", + "type": "uint8[3]" + } + ], + "name": "lt", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint8[3]", + "name": "lhs", + "type": "uint8[3]" + }, + { + "internalType": "uint8[3]", + "name": "rhs", + "type": "uint8[3]" + } + ], + "name": "lte", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint8[3]", + "name": "lhs", + "type": "uint8[3]" + }, + { + "internalType": "uint8[3]", + "name": "rhs", + "type": "uint8[3]" + } + ], + "name": "neq", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "pure", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b5061052f806100206000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c80639fdb5746116100505780639fdb5746146100c4578063d343ec1b146100d7578063f92e9bb1146100ea57600080fd5b80632198ac8d14610077578063668a90f61461009e57806396b38697146100b1575b600080fd5b61008a6100853660046104ed565b6100fd565b604051901515815260200160405180910390f35b61008a6100ac3660046104ed565b610112565b61008a6100bf3660046104ed565b61011e565b61008a6100d23660046104ed565b61012a565b61008a6100e53660046104ed565b610136565b61008a6100f83660046104ed565b610142565b6000610109838361014e565b90505b92915050565b600061010983836101e8565b6000610109838361027a565b6000610109838361030c565b6000610109838361039d565b600061010983836103f4565b8051825160009160ff9081169116101561016a5750600161010c565b8151835160ff918216911611156101835750600061010c565b6020808301519084015160ff918216911610156101a25750600161010c565b6020808301519084015160ff918216911611156101c15750600061010c565b6040808301519084015160ff9182169116116101df5750600161010c565b50600092915050565b8051825160009160ff908116911610156102045750600161010c565b8151835160ff9182169116111561021d5750600061010c565b6020808301519084015160ff9182169116101561023c5750600161010c565b6020808301519084015160ff9182169116111561025b5750600061010c565b6040808301519084015160ff918216911610156101df5750600161010c565b8051825160009160ff908116911611156102965750600161010c565b8151835160ff918216911610156102af5750600061010c565b6020808301519084015160ff918216911611156102ce5750600161010c565b6020808301519084015160ff918216911610156102ed5750600061010c565b6040808301519084015160ff918216911611156101df5750600161010c565b8051825160009160ff908116911611156103285750600161010c565b8151835160ff918216911610156103415750600061010c565b6020808301519084015160ff918216911611156103605750600161010c565b6020808301519084015160ff9182169116101561037f5750600061010c565b6040808301519084015160ff9182169116106101df5750600161010c565b8051825160009160ff9182169116146103b85750600161010c565b6020808301519084015160ff9081169116146103d65750600161010c565b6040808301519084015160ff9081169116146101df5750600161010c565b8051825160009160ff91821691161461040f5750600061010c565b6020808301519084015160ff90811691161461042d5750600061010c565b6040808301519084015160ff90811691161461044b5750600061010c565b50600192915050565b803560ff8116811461046557600080fd5b919050565b600082601f83011261047b57600080fd5b6040516060810181811067ffffffffffffffff821117156104ac57634e487b7160e01b600052604160045260246000fd5b6040528060608401858111156104c157600080fd5b845b818110156104e2576104d481610454565b8352602092830192016104c3565b509195945050505050565b60008060c0838503121561050057600080fd5b61050a848461046a565b9150610519846060850161046a565b9050925092905056fea164736f6c6343000811000a", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100725760003560e01c80639fdb5746116100505780639fdb5746146100c4578063d343ec1b146100d7578063f92e9bb1146100ea57600080fd5b80632198ac8d14610077578063668a90f61461009e57806396b38697146100b1575b600080fd5b61008a6100853660046104ed565b6100fd565b604051901515815260200160405180910390f35b61008a6100ac3660046104ed565b610112565b61008a6100bf3660046104ed565b61011e565b61008a6100d23660046104ed565b61012a565b61008a6100e53660046104ed565b610136565b61008a6100f83660046104ed565b610142565b6000610109838361014e565b90505b92915050565b600061010983836101e8565b6000610109838361027a565b6000610109838361030c565b6000610109838361039d565b600061010983836103f4565b8051825160009160ff9081169116101561016a5750600161010c565b8151835160ff918216911611156101835750600061010c565b6020808301519084015160ff918216911610156101a25750600161010c565b6020808301519084015160ff918216911611156101c15750600061010c565b6040808301519084015160ff9182169116116101df5750600161010c565b50600092915050565b8051825160009160ff908116911610156102045750600161010c565b8151835160ff9182169116111561021d5750600061010c565b6020808301519084015160ff9182169116101561023c5750600161010c565b6020808301519084015160ff9182169116111561025b5750600061010c565b6040808301519084015160ff918216911610156101df5750600161010c565b8051825160009160ff908116911611156102965750600161010c565b8151835160ff918216911610156102af5750600061010c565b6020808301519084015160ff918216911611156102ce5750600161010c565b6020808301519084015160ff918216911610156102ed5750600061010c565b6040808301519084015160ff918216911611156101df5750600161010c565b8051825160009160ff908116911611156103285750600161010c565b8151835160ff918216911610156103415750600061010c565b6020808301519084015160ff918216911611156103605750600161010c565b6020808301519084015160ff9182169116101561037f5750600061010c565b6040808301519084015160ff9182169116106101df5750600161010c565b8051825160009160ff9182169116146103b85750600161010c565b6020808301519084015160ff9081169116146103d65750600161010c565b6040808301519084015160ff9081169116146101df5750600161010c565b8051825160009160ff91821691161461040f5750600061010c565b6020808301519084015160ff90811691161461042d5750600061010c565b6040808301519084015160ff90811691161461044b5750600061010c565b50600192915050565b803560ff8116811461046557600080fd5b919050565b600082601f83011261047b57600080fd5b6040516060810181811067ffffffffffffffff821117156104ac57634e487b7160e01b600052604160045260246000fd5b6040528060608401858111156104c157600080fd5b845b818110156104e2576104d481610454565b8352602092830192016104c3565b509195945050505050565b60008060c0838503121561050057600080fd5b61050a848461046a565b9150610519846060850161046a565b9050925092905056fea164736f6c6343000811000a", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/src/permission/PermissionLib.sol/PermissionLib.dbg.json b/contracts/artifacts/src/permission/PermissionLib.sol/PermissionLib.dbg.json new file mode 100644 index 00000000..25fef0c2 --- /dev/null +++ b/contracts/artifacts/src/permission/PermissionLib.sol/PermissionLib.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" +} diff --git a/contracts/artifacts/src/permission/PermissionLib.sol/PermissionLib.json b/contracts/artifacts/src/permission/PermissionLib.sol/PermissionLib.json new file mode 100644 index 00000000..4d30470e --- /dev/null +++ b/contracts/artifacts/src/permission/PermissionLib.sol/PermissionLib.json @@ -0,0 +1,24 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "PermissionLib", + "sourceName": "src/permission/PermissionLib.sol", + "abi": [ + { + "inputs": [], + "name": "NO_CONDITION", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x6075610038600b82828239805160001a607314602b57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe730000000000000000000000000000000000000000301460806040526004361060335760003560e01c80636dd02a5b146038575b600080fd5b603f600081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f3fea164736f6c6343000811000a", + "deployedBytecode": "0x730000000000000000000000000000000000000000301460806040526004361060335760003560e01c80636dd02a5b146038575b600080fd5b603f600081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f3fea164736f6c6343000811000a", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/src/permission/auth/DaoAuthorizable.sol/DaoAuthorizable.dbg.json b/contracts/artifacts/src/permission/auth/DaoAuthorizable.sol/DaoAuthorizable.dbg.json new file mode 100644 index 00000000..4058cb44 --- /dev/null +++ b/contracts/artifacts/src/permission/auth/DaoAuthorizable.sol/DaoAuthorizable.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" +} diff --git a/contracts/artifacts/src/permission/auth/DaoAuthorizable.sol/DaoAuthorizable.json b/contracts/artifacts/src/permission/auth/DaoAuthorizable.sol/DaoAuthorizable.json new file mode 100644 index 00000000..4c8301d5 --- /dev/null +++ b/contracts/artifacts/src/permission/auth/DaoAuthorizable.sol/DaoAuthorizable.json @@ -0,0 +1,24 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "DaoAuthorizable", + "sourceName": "src/permission/auth/DaoAuthorizable.sol", + "abi": [ + { + "inputs": [], + "name": "dao", + "outputs": [ + { + "internalType": "contract IDAO", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/src/permission/auth/DaoAuthorizableUpgradeable.sol/DaoAuthorizableUpgradeable.dbg.json b/contracts/artifacts/src/permission/auth/DaoAuthorizableUpgradeable.sol/DaoAuthorizableUpgradeable.dbg.json new file mode 100644 index 00000000..4058cb44 --- /dev/null +++ b/contracts/artifacts/src/permission/auth/DaoAuthorizableUpgradeable.sol/DaoAuthorizableUpgradeable.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" +} diff --git a/contracts/artifacts/src/permission/auth/DaoAuthorizableUpgradeable.sol/DaoAuthorizableUpgradeable.json b/contracts/artifacts/src/permission/auth/DaoAuthorizableUpgradeable.sol/DaoAuthorizableUpgradeable.json new file mode 100644 index 00000000..86276fa2 --- /dev/null +++ b/contracts/artifacts/src/permission/auth/DaoAuthorizableUpgradeable.sol/DaoAuthorizableUpgradeable.json @@ -0,0 +1,37 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "DaoAuthorizableUpgradeable", + "sourceName": "src/permission/auth/DaoAuthorizableUpgradeable.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint8", + "name": "version", + "type": "uint8" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "inputs": [], + "name": "dao", + "outputs": [ + { + "internalType": "contract IDAO", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/src/permission/condition/IPermissionCondition.sol/IPermissionCondition.dbg.json b/contracts/artifacts/src/permission/condition/IPermissionCondition.sol/IPermissionCondition.dbg.json new file mode 100644 index 00000000..4058cb44 --- /dev/null +++ b/contracts/artifacts/src/permission/condition/IPermissionCondition.sol/IPermissionCondition.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" +} diff --git a/contracts/artifacts/src/permission/condition/IPermissionCondition.sol/IPermissionCondition.json b/contracts/artifacts/src/permission/condition/IPermissionCondition.sol/IPermissionCondition.json new file mode 100644 index 00000000..d2ae3d7a --- /dev/null +++ b/contracts/artifacts/src/permission/condition/IPermissionCondition.sol/IPermissionCondition.json @@ -0,0 +1,45 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IPermissionCondition", + "sourceName": "src/permission/condition/IPermissionCondition.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_where", + "type": "address" + }, + { + "internalType": "address", + "name": "_who", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "_permissionId", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "_data", + "type": "bytes" + } + ], + "name": "isGranted", + "outputs": [ + { + "internalType": "bool", + "name": "isPermitted", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/src/permission/condition/PermissionCondition.sol/PermissionCondition.dbg.json b/contracts/artifacts/src/permission/condition/PermissionCondition.sol/PermissionCondition.dbg.json new file mode 100644 index 00000000..4058cb44 --- /dev/null +++ b/contracts/artifacts/src/permission/condition/PermissionCondition.sol/PermissionCondition.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" +} diff --git a/contracts/artifacts/src/permission/condition/PermissionCondition.sol/PermissionCondition.json b/contracts/artifacts/src/permission/condition/PermissionCondition.sol/PermissionCondition.json new file mode 100644 index 00000000..5acf47a8 --- /dev/null +++ b/contracts/artifacts/src/permission/condition/PermissionCondition.sol/PermissionCondition.json @@ -0,0 +1,77 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "PermissionCondition", + "sourceName": "src/permission/condition/PermissionCondition.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_where", + "type": "address" + }, + { + "internalType": "address", + "name": "_who", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "_permissionId", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "_data", + "type": "bytes" + } + ], + "name": "isGranted", + "outputs": [ + { + "internalType": "bool", + "name": "isPermitted", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "protocolVersion", + "outputs": [ + { + "internalType": "uint8[3]", + "name": "", + "type": "uint8[3]" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "_interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/src/permission/condition/PermissionConditionUpgradeable.sol/PermissionConditionUpgradeable.dbg.json b/contracts/artifacts/src/permission/condition/PermissionConditionUpgradeable.sol/PermissionConditionUpgradeable.dbg.json new file mode 100644 index 00000000..4058cb44 --- /dev/null +++ b/contracts/artifacts/src/permission/condition/PermissionConditionUpgradeable.sol/PermissionConditionUpgradeable.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" +} diff --git a/contracts/artifacts/src/permission/condition/PermissionConditionUpgradeable.sol/PermissionConditionUpgradeable.json b/contracts/artifacts/src/permission/condition/PermissionConditionUpgradeable.sol/PermissionConditionUpgradeable.json new file mode 100644 index 00000000..b9361c07 --- /dev/null +++ b/contracts/artifacts/src/permission/condition/PermissionConditionUpgradeable.sol/PermissionConditionUpgradeable.json @@ -0,0 +1,90 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "PermissionConditionUpgradeable", + "sourceName": "src/permission/condition/PermissionConditionUpgradeable.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint8", + "name": "version", + "type": "uint8" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_where", + "type": "address" + }, + { + "internalType": "address", + "name": "_who", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "_permissionId", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "_data", + "type": "bytes" + } + ], + "name": "isGranted", + "outputs": [ + { + "internalType": "bool", + "name": "isPermitted", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "protocolVersion", + "outputs": [ + { + "internalType": "uint8[3]", + "name": "", + "type": "uint8[3]" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "_interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/src/plugin/IPlugin.sol/IPlugin.dbg.json b/contracts/artifacts/src/plugin/IPlugin.sol/IPlugin.dbg.json new file mode 100644 index 00000000..25fef0c2 --- /dev/null +++ b/contracts/artifacts/src/plugin/IPlugin.sol/IPlugin.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" +} diff --git a/contracts/artifacts/src/plugin/IPlugin.sol/IPlugin.json b/contracts/artifacts/src/plugin/IPlugin.sol/IPlugin.json new file mode 100644 index 00000000..db287fe2 --- /dev/null +++ b/contracts/artifacts/src/plugin/IPlugin.sol/IPlugin.json @@ -0,0 +1,24 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IPlugin", + "sourceName": "src/plugin/IPlugin.sol", + "abi": [ + { + "inputs": [], + "name": "pluginType", + "outputs": [ + { + "internalType": "enum IPlugin.PluginType", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/src/plugin/Plugin.sol/Plugin.dbg.json b/contracts/artifacts/src/plugin/Plugin.sol/Plugin.dbg.json new file mode 100644 index 00000000..e0a8125d --- /dev/null +++ b/contracts/artifacts/src/plugin/Plugin.sol/Plugin.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../build-info/9ac591806bb2e846e5a60f79d635058e.json" +} diff --git a/contracts/artifacts/src/plugin/Plugin.sol/Plugin.json b/contracts/artifacts/src/plugin/Plugin.sol/Plugin.json new file mode 100644 index 00000000..59d6b338 --- /dev/null +++ b/contracts/artifacts/src/plugin/Plugin.sol/Plugin.json @@ -0,0 +1,114 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "Plugin", + "sourceName": "src/plugin/Plugin.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousTarget", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newTarget", + "type": "address" + } + ], + "name": "TargetSet", + "type": "event" + }, + { + "inputs": [], + "name": "dao", + "outputs": [ + { + "internalType": "contract IDAO", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "pluginType", + "outputs": [ + { + "internalType": "enum IPlugin.PluginType", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "protocolVersion", + "outputs": [ + { + "internalType": "uint8[3]", + "name": "", + "type": "uint8[3]" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_target", + "type": "address" + } + ], + "name": "setTarget", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "_interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "target", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/src/plugin/PluginCloneable.sol/PluginCloneable.dbg.json b/contracts/artifacts/src/plugin/PluginCloneable.sol/PluginCloneable.dbg.json new file mode 100644 index 00000000..e0a8125d --- /dev/null +++ b/contracts/artifacts/src/plugin/PluginCloneable.sol/PluginCloneable.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../build-info/9ac591806bb2e846e5a60f79d635058e.json" +} diff --git a/contracts/artifacts/src/plugin/PluginCloneable.sol/PluginCloneable.json b/contracts/artifacts/src/plugin/PluginCloneable.sol/PluginCloneable.json new file mode 100644 index 00000000..4b99ef02 --- /dev/null +++ b/contracts/artifacts/src/plugin/PluginCloneable.sol/PluginCloneable.json @@ -0,0 +1,127 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "PluginCloneable", + "sourceName": "src/plugin/PluginCloneable.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint8", + "name": "version", + "type": "uint8" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousTarget", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newTarget", + "type": "address" + } + ], + "name": "TargetSet", + "type": "event" + }, + { + "inputs": [], + "name": "dao", + "outputs": [ + { + "internalType": "contract IDAO", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "pluginType", + "outputs": [ + { + "internalType": "enum IPlugin.PluginType", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "protocolVersion", + "outputs": [ + { + "internalType": "uint8[3]", + "name": "", + "type": "uint8[3]" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_target", + "type": "address" + } + ], + "name": "setTarget", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "_interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "target", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/src/plugin/PluginUUPSUpgradeable.sol/PluginUUPSUpgradeable.dbg.json b/contracts/artifacts/src/plugin/PluginUUPSUpgradeable.sol/PluginUUPSUpgradeable.dbg.json new file mode 100644 index 00000000..e0a8125d --- /dev/null +++ b/contracts/artifacts/src/plugin/PluginUUPSUpgradeable.sol/PluginUUPSUpgradeable.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../build-info/9ac591806bb2e846e5a60f79d635058e.json" +} diff --git a/contracts/artifacts/src/plugin/PluginUUPSUpgradeable.sol/PluginUUPSUpgradeable.json b/contracts/artifacts/src/plugin/PluginUUPSUpgradeable.sol/PluginUUPSUpgradeable.json new file mode 100644 index 00000000..57d73099 --- /dev/null +++ b/contracts/artifacts/src/plugin/PluginUUPSUpgradeable.sol/PluginUUPSUpgradeable.json @@ -0,0 +1,268 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "PluginUUPSUpgradeable", + "sourceName": "src/plugin/PluginUUPSUpgradeable.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "dao", + "type": "address" + }, + { + "internalType": "address", + "name": "where", + "type": "address" + }, + { + "internalType": "address", + "name": "who", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "permissionId", + "type": "bytes32" + } + ], + "name": "DaoUnauthorized", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "previousAdmin", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "newAdmin", + "type": "address" + } + ], + "name": "AdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "beacon", + "type": "address" + } + ], + "name": "BeaconUpgraded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint8", + "name": "version", + "type": "uint8" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousTarget", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newTarget", + "type": "address" + } + ], + "name": "TargetSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "Upgraded", + "type": "event" + }, + { + "inputs": [], + "name": "UPGRADE_PLUGIN_PERMISSION_ID", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "dao", + "outputs": [ + { + "internalType": "contract IDAO", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "implementation", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "pluginType", + "outputs": [ + { + "internalType": "enum IPlugin.PluginType", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "protocolVersion", + "outputs": [ + { + "internalType": "uint8[3]", + "name": "", + "type": "uint8[3]" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "proxiableUUID", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_target", + "type": "address" + } + ], + "name": "setTarget", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "_interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "target", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newImplementation", + "type": "address" + } + ], + "name": "upgradeTo", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newImplementation", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "upgradeToAndCall", + "outputs": [], + "stateMutability": "payable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/src/plugin/extensions/governance/Addresslist.sol/Addresslist.dbg.json b/contracts/artifacts/src/plugin/extensions/governance/Addresslist.sol/Addresslist.dbg.json new file mode 100644 index 00000000..b8d2318f --- /dev/null +++ b/contracts/artifacts/src/plugin/extensions/governance/Addresslist.sol/Addresslist.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" +} diff --git a/contracts/artifacts/src/plugin/extensions/governance/Addresslist.sol/Addresslist.json b/contracts/artifacts/src/plugin/extensions/governance/Addresslist.sol/Addresslist.json new file mode 100644 index 00000000..98c6b677 --- /dev/null +++ b/contracts/artifacts/src/plugin/extensions/governance/Addresslist.sol/Addresslist.json @@ -0,0 +1,97 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "Addresslist", + "sourceName": "src/plugin/extensions/governance/Addresslist.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "member", + "type": "address" + } + ], + "name": "InvalidAddresslistUpdate", + "type": "error" + }, + { + "inputs": [], + "name": "addresslistLength", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_blockNumber", + "type": "uint256" + } + ], + "name": "addresslistLengthAtBlock", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_account", + "type": "address" + } + ], + "name": "isListed", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_blockNumber", + "type": "uint256" + } + ], + "name": "isListedAtBlock", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/src/plugin/extensions/membership/IMembership.sol/IMembership.dbg.json b/contracts/artifacts/src/plugin/extensions/membership/IMembership.sol/IMembership.dbg.json new file mode 100644 index 00000000..b8d2318f --- /dev/null +++ b/contracts/artifacts/src/plugin/extensions/membership/IMembership.sol/IMembership.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" +} diff --git a/contracts/artifacts/src/plugin/extensions/membership/IMembership.sol/IMembership.json b/contracts/artifacts/src/plugin/extensions/membership/IMembership.sol/IMembership.json new file mode 100644 index 00000000..7dd214f4 --- /dev/null +++ b/contracts/artifacts/src/plugin/extensions/membership/IMembership.sol/IMembership.json @@ -0,0 +1,69 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IMembership", + "sourceName": "src/plugin/extensions/membership/IMembership.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address[]", + "name": "members", + "type": "address[]" + } + ], + "name": "MembersAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address[]", + "name": "members", + "type": "address[]" + } + ], + "name": "MembersRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "definingContract", + "type": "address" + } + ], + "name": "MembershipContractAnnounced", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_account", + "type": "address" + } + ], + "name": "isMember", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/src/plugin/extensions/proposal/IProposal.sol/IProposal.dbg.json b/contracts/artifacts/src/plugin/extensions/proposal/IProposal.sol/IProposal.dbg.json new file mode 100644 index 00000000..71ef0f77 --- /dev/null +++ b/contracts/artifacts/src/plugin/extensions/proposal/IProposal.sol/IProposal.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../../build-info/9ac591806bb2e846e5a60f79d635058e.json" +} diff --git a/contracts/artifacts/src/plugin/extensions/proposal/IProposal.sol/IProposal.json b/contracts/artifacts/src/plugin/extensions/proposal/IProposal.sol/IProposal.json new file mode 100644 index 00000000..28f8bb11 --- /dev/null +++ b/contracts/artifacts/src/plugin/extensions/proposal/IProposal.sol/IProposal.json @@ -0,0 +1,173 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IProposal", + "sourceName": "src/plugin/extensions/proposal/IProposal.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "proposalId", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "creator", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint64", + "name": "startDate", + "type": "uint64" + }, + { + "indexed": false, + "internalType": "uint64", + "name": "endDate", + "type": "uint64" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "metadata", + "type": "bytes" + }, + { + "components": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "indexed": false, + "internalType": "struct IDAO.Action[]", + "name": "actions", + "type": "tuple[]" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "allowFailureMap", + "type": "uint256" + } + ], + "name": "ProposalCreated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "proposalId", + "type": "uint256" + } + ], + "name": "ProposalExecuted", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "proposalId", + "type": "uint256" + } + ], + "name": "canExecute", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "components": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "internalType": "struct IDAO.Action[]", + "name": "actions", + "type": "tuple[]" + }, + { + "internalType": "uint64", + "name": "startDate", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "endDate", + "type": "uint64" + } + ], + "name": "createProposal", + "outputs": [ + { + "internalType": "uint256", + "name": "proposalId", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "proposalCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/src/plugin/extensions/proposal/Proposal.sol/Proposal.dbg.json b/contracts/artifacts/src/plugin/extensions/proposal/Proposal.sol/Proposal.dbg.json new file mode 100644 index 00000000..71ef0f77 --- /dev/null +++ b/contracts/artifacts/src/plugin/extensions/proposal/Proposal.sol/Proposal.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../../build-info/9ac591806bb2e846e5a60f79d635058e.json" +} diff --git a/contracts/artifacts/src/plugin/extensions/proposal/Proposal.sol/Proposal.json b/contracts/artifacts/src/plugin/extensions/proposal/Proposal.sol/Proposal.json new file mode 100644 index 00000000..590f0801 --- /dev/null +++ b/contracts/artifacts/src/plugin/extensions/proposal/Proposal.sol/Proposal.json @@ -0,0 +1,192 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "Proposal", + "sourceName": "src/plugin/extensions/proposal/Proposal.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "proposalId", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "creator", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint64", + "name": "startDate", + "type": "uint64" + }, + { + "indexed": false, + "internalType": "uint64", + "name": "endDate", + "type": "uint64" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "metadata", + "type": "bytes" + }, + { + "components": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "indexed": false, + "internalType": "struct IDAO.Action[]", + "name": "actions", + "type": "tuple[]" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "allowFailureMap", + "type": "uint256" + } + ], + "name": "ProposalCreated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "proposalId", + "type": "uint256" + } + ], + "name": "ProposalExecuted", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "proposalId", + "type": "uint256" + } + ], + "name": "canExecute", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "components": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "internalType": "struct IDAO.Action[]", + "name": "actions", + "type": "tuple[]" + }, + { + "internalType": "uint64", + "name": "startDate", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "endDate", + "type": "uint64" + } + ], + "name": "createProposal", + "outputs": [ + { + "internalType": "uint256", + "name": "proposalId", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "proposalCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "_interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/src/plugin/extensions/proposal/ProposalUpgradeable.sol/ProposalUpgradeable.dbg.json b/contracts/artifacts/src/plugin/extensions/proposal/ProposalUpgradeable.sol/ProposalUpgradeable.dbg.json new file mode 100644 index 00000000..71ef0f77 --- /dev/null +++ b/contracts/artifacts/src/plugin/extensions/proposal/ProposalUpgradeable.sol/ProposalUpgradeable.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../../build-info/9ac591806bb2e846e5a60f79d635058e.json" +} diff --git a/contracts/artifacts/src/plugin/extensions/proposal/ProposalUpgradeable.sol/ProposalUpgradeable.json b/contracts/artifacts/src/plugin/extensions/proposal/ProposalUpgradeable.sol/ProposalUpgradeable.json new file mode 100644 index 00000000..d7af899b --- /dev/null +++ b/contracts/artifacts/src/plugin/extensions/proposal/ProposalUpgradeable.sol/ProposalUpgradeable.json @@ -0,0 +1,205 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "ProposalUpgradeable", + "sourceName": "src/plugin/extensions/proposal/ProposalUpgradeable.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint8", + "name": "version", + "type": "uint8" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "proposalId", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "creator", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint64", + "name": "startDate", + "type": "uint64" + }, + { + "indexed": false, + "internalType": "uint64", + "name": "endDate", + "type": "uint64" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "metadata", + "type": "bytes" + }, + { + "components": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "indexed": false, + "internalType": "struct IDAO.Action[]", + "name": "actions", + "type": "tuple[]" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "allowFailureMap", + "type": "uint256" + } + ], + "name": "ProposalCreated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "proposalId", + "type": "uint256" + } + ], + "name": "ProposalExecuted", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "proposalId", + "type": "uint256" + } + ], + "name": "canExecute", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "components": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "internalType": "struct IDAO.Action[]", + "name": "actions", + "type": "tuple[]" + }, + { + "internalType": "uint64", + "name": "startDate", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "endDate", + "type": "uint64" + } + ], + "name": "createProposal", + "outputs": [ + { + "internalType": "uint256", + "name": "proposalId", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "proposalCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "_interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/src/plugin/setup/IPluginSetup.sol/IPluginSetup.dbg.json b/contracts/artifacts/src/plugin/setup/IPluginSetup.sol/IPluginSetup.dbg.json new file mode 100644 index 00000000..4058cb44 --- /dev/null +++ b/contracts/artifacts/src/plugin/setup/IPluginSetup.sol/IPluginSetup.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" +} diff --git a/contracts/artifacts/src/plugin/setup/IPluginSetup.sol/IPluginSetup.json b/contracts/artifacts/src/plugin/setup/IPluginSetup.sol/IPluginSetup.json new file mode 100644 index 00000000..f945e8ad --- /dev/null +++ b/contracts/artifacts/src/plugin/setup/IPluginSetup.sol/IPluginSetup.json @@ -0,0 +1,250 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IPluginSetup", + "sourceName": "src/plugin/setup/IPluginSetup.sol", + "abi": [ + { + "inputs": [], + "name": "implementation", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_dao", + "type": "address" + }, + { + "internalType": "bytes", + "name": "_data", + "type": "bytes" + } + ], + "name": "prepareInstallation", + "outputs": [ + { + "internalType": "address", + "name": "plugin", + "type": "address" + }, + { + "components": [ + { + "internalType": "address[]", + "name": "helpers", + "type": "address[]" + }, + { + "components": [ + { + "internalType": "enum PermissionLib.Operation", + "name": "operation", + "type": "uint8" + }, + { + "internalType": "address", + "name": "where", + "type": "address" + }, + { + "internalType": "address", + "name": "who", + "type": "address" + }, + { + "internalType": "address", + "name": "condition", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "permissionId", + "type": "bytes32" + } + ], + "internalType": "struct PermissionLib.MultiTargetPermission[]", + "name": "permissions", + "type": "tuple[]" + } + ], + "internalType": "struct IPluginSetup.PreparedSetupData", + "name": "preparedSetupData", + "type": "tuple" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_dao", + "type": "address" + }, + { + "components": [ + { + "internalType": "address", + "name": "plugin", + "type": "address" + }, + { + "internalType": "address[]", + "name": "currentHelpers", + "type": "address[]" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "internalType": "struct IPluginSetup.SetupPayload", + "name": "_payload", + "type": "tuple" + } + ], + "name": "prepareUninstallation", + "outputs": [ + { + "components": [ + { + "internalType": "enum PermissionLib.Operation", + "name": "operation", + "type": "uint8" + }, + { + "internalType": "address", + "name": "where", + "type": "address" + }, + { + "internalType": "address", + "name": "who", + "type": "address" + }, + { + "internalType": "address", + "name": "condition", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "permissionId", + "type": "bytes32" + } + ], + "internalType": "struct PermissionLib.MultiTargetPermission[]", + "name": "permissions", + "type": "tuple[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_dao", + "type": "address" + }, + { + "internalType": "uint16", + "name": "_fromBuild", + "type": "uint16" + }, + { + "components": [ + { + "internalType": "address", + "name": "plugin", + "type": "address" + }, + { + "internalType": "address[]", + "name": "currentHelpers", + "type": "address[]" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "internalType": "struct IPluginSetup.SetupPayload", + "name": "_payload", + "type": "tuple" + } + ], + "name": "prepareUpdate", + "outputs": [ + { + "internalType": "bytes", + "name": "initData", + "type": "bytes" + }, + { + "components": [ + { + "internalType": "address[]", + "name": "helpers", + "type": "address[]" + }, + { + "components": [ + { + "internalType": "enum PermissionLib.Operation", + "name": "operation", + "type": "uint8" + }, + { + "internalType": "address", + "name": "where", + "type": "address" + }, + { + "internalType": "address", + "name": "who", + "type": "address" + }, + { + "internalType": "address", + "name": "condition", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "permissionId", + "type": "bytes32" + } + ], + "internalType": "struct PermissionLib.MultiTargetPermission[]", + "name": "permissions", + "type": "tuple[]" + } + ], + "internalType": "struct IPluginSetup.PreparedSetupData", + "name": "preparedSetupData", + "type": "tuple" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/src/plugin/setup/PluginSetup.sol/PluginSetup.dbg.json b/contracts/artifacts/src/plugin/setup/PluginSetup.sol/PluginSetup.dbg.json new file mode 100644 index 00000000..4058cb44 --- /dev/null +++ b/contracts/artifacts/src/plugin/setup/PluginSetup.sol/PluginSetup.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" +} diff --git a/contracts/artifacts/src/plugin/setup/PluginSetup.sol/PluginSetup.json b/contracts/artifacts/src/plugin/setup/PluginSetup.sol/PluginSetup.json new file mode 100644 index 00000000..5c65eac7 --- /dev/null +++ b/contracts/artifacts/src/plugin/setup/PluginSetup.sol/PluginSetup.json @@ -0,0 +1,287 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "PluginSetup", + "sourceName": "src/plugin/setup/PluginSetup.sol", + "abi": [ + { + "inputs": [], + "name": "NonUpgradeablePlugin", + "type": "error" + }, + { + "inputs": [], + "name": "implementation", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_dao", + "type": "address" + }, + { + "internalType": "bytes", + "name": "_data", + "type": "bytes" + } + ], + "name": "prepareInstallation", + "outputs": [ + { + "internalType": "address", + "name": "plugin", + "type": "address" + }, + { + "components": [ + { + "internalType": "address[]", + "name": "helpers", + "type": "address[]" + }, + { + "components": [ + { + "internalType": "enum PermissionLib.Operation", + "name": "operation", + "type": "uint8" + }, + { + "internalType": "address", + "name": "where", + "type": "address" + }, + { + "internalType": "address", + "name": "who", + "type": "address" + }, + { + "internalType": "address", + "name": "condition", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "permissionId", + "type": "bytes32" + } + ], + "internalType": "struct PermissionLib.MultiTargetPermission[]", + "name": "permissions", + "type": "tuple[]" + } + ], + "internalType": "struct IPluginSetup.PreparedSetupData", + "name": "preparedSetupData", + "type": "tuple" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_dao", + "type": "address" + }, + { + "components": [ + { + "internalType": "address", + "name": "plugin", + "type": "address" + }, + { + "internalType": "address[]", + "name": "currentHelpers", + "type": "address[]" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "internalType": "struct IPluginSetup.SetupPayload", + "name": "_payload", + "type": "tuple" + } + ], + "name": "prepareUninstallation", + "outputs": [ + { + "components": [ + { + "internalType": "enum PermissionLib.Operation", + "name": "operation", + "type": "uint8" + }, + { + "internalType": "address", + "name": "where", + "type": "address" + }, + { + "internalType": "address", + "name": "who", + "type": "address" + }, + { + "internalType": "address", + "name": "condition", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "permissionId", + "type": "bytes32" + } + ], + "internalType": "struct PermissionLib.MultiTargetPermission[]", + "name": "permissions", + "type": "tuple[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_dao", + "type": "address" + }, + { + "internalType": "uint16", + "name": "_fromBuild", + "type": "uint16" + }, + { + "components": [ + { + "internalType": "address", + "name": "plugin", + "type": "address" + }, + { + "internalType": "address[]", + "name": "currentHelpers", + "type": "address[]" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "internalType": "struct IPluginSetup.SetupPayload", + "name": "_payload", + "type": "tuple" + } + ], + "name": "prepareUpdate", + "outputs": [ + { + "internalType": "bytes", + "name": "", + "type": "bytes" + }, + { + "components": [ + { + "internalType": "address[]", + "name": "helpers", + "type": "address[]" + }, + { + "components": [ + { + "internalType": "enum PermissionLib.Operation", + "name": "operation", + "type": "uint8" + }, + { + "internalType": "address", + "name": "where", + "type": "address" + }, + { + "internalType": "address", + "name": "who", + "type": "address" + }, + { + "internalType": "address", + "name": "condition", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "permissionId", + "type": "bytes32" + } + ], + "internalType": "struct PermissionLib.MultiTargetPermission[]", + "name": "permissions", + "type": "tuple[]" + } + ], + "internalType": "struct IPluginSetup.PreparedSetupData", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "protocolVersion", + "outputs": [ + { + "internalType": "uint8[3]", + "name": "", + "type": "uint8[3]" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "_interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/src/plugin/setup/PluginUpgradeableSetup.sol/PluginUpgradeableSetup.dbg.json b/contracts/artifacts/src/plugin/setup/PluginUpgradeableSetup.sol/PluginUpgradeableSetup.dbg.json new file mode 100644 index 00000000..4058cb44 --- /dev/null +++ b/contracts/artifacts/src/plugin/setup/PluginUpgradeableSetup.sol/PluginUpgradeableSetup.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" +} diff --git a/contracts/artifacts/src/plugin/setup/PluginUpgradeableSetup.sol/PluginUpgradeableSetup.json b/contracts/artifacts/src/plugin/setup/PluginUpgradeableSetup.sol/PluginUpgradeableSetup.json new file mode 100644 index 00000000..00f8b9e9 --- /dev/null +++ b/contracts/artifacts/src/plugin/setup/PluginUpgradeableSetup.sol/PluginUpgradeableSetup.json @@ -0,0 +1,298 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "PluginUpgradeableSetup", + "sourceName": "src/plugin/setup/PluginUpgradeableSetup.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "uint16", + "name": "fromBuild", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "thisBuild", + "type": "uint16" + } + ], + "name": "InvalidUpdatePath", + "type": "error" + }, + { + "inputs": [], + "name": "implementation", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_dao", + "type": "address" + }, + { + "internalType": "bytes", + "name": "_data", + "type": "bytes" + } + ], + "name": "prepareInstallation", + "outputs": [ + { + "internalType": "address", + "name": "plugin", + "type": "address" + }, + { + "components": [ + { + "internalType": "address[]", + "name": "helpers", + "type": "address[]" + }, + { + "components": [ + { + "internalType": "enum PermissionLib.Operation", + "name": "operation", + "type": "uint8" + }, + { + "internalType": "address", + "name": "where", + "type": "address" + }, + { + "internalType": "address", + "name": "who", + "type": "address" + }, + { + "internalType": "address", + "name": "condition", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "permissionId", + "type": "bytes32" + } + ], + "internalType": "struct PermissionLib.MultiTargetPermission[]", + "name": "permissions", + "type": "tuple[]" + } + ], + "internalType": "struct IPluginSetup.PreparedSetupData", + "name": "preparedSetupData", + "type": "tuple" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_dao", + "type": "address" + }, + { + "components": [ + { + "internalType": "address", + "name": "plugin", + "type": "address" + }, + { + "internalType": "address[]", + "name": "currentHelpers", + "type": "address[]" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "internalType": "struct IPluginSetup.SetupPayload", + "name": "_payload", + "type": "tuple" + } + ], + "name": "prepareUninstallation", + "outputs": [ + { + "components": [ + { + "internalType": "enum PermissionLib.Operation", + "name": "operation", + "type": "uint8" + }, + { + "internalType": "address", + "name": "where", + "type": "address" + }, + { + "internalType": "address", + "name": "who", + "type": "address" + }, + { + "internalType": "address", + "name": "condition", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "permissionId", + "type": "bytes32" + } + ], + "internalType": "struct PermissionLib.MultiTargetPermission[]", + "name": "permissions", + "type": "tuple[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_dao", + "type": "address" + }, + { + "internalType": "uint16", + "name": "_fromBuild", + "type": "uint16" + }, + { + "components": [ + { + "internalType": "address", + "name": "plugin", + "type": "address" + }, + { + "internalType": "address[]", + "name": "currentHelpers", + "type": "address[]" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "internalType": "struct IPluginSetup.SetupPayload", + "name": "_payload", + "type": "tuple" + } + ], + "name": "prepareUpdate", + "outputs": [ + { + "internalType": "bytes", + "name": "initData", + "type": "bytes" + }, + { + "components": [ + { + "internalType": "address[]", + "name": "helpers", + "type": "address[]" + }, + { + "components": [ + { + "internalType": "enum PermissionLib.Operation", + "name": "operation", + "type": "uint8" + }, + { + "internalType": "address", + "name": "where", + "type": "address" + }, + { + "internalType": "address", + "name": "who", + "type": "address" + }, + { + "internalType": "address", + "name": "condition", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "permissionId", + "type": "bytes32" + } + ], + "internalType": "struct PermissionLib.MultiTargetPermission[]", + "name": "permissions", + "type": "tuple[]" + } + ], + "internalType": "struct IPluginSetup.PreparedSetupData", + "name": "preparedSetupData", + "type": "tuple" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "protocolVersion", + "outputs": [ + { + "internalType": "uint8[3]", + "name": "", + "type": "uint8[3]" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "_interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/src/utils/deployment/ProxyFactory.sol/ProxyFactory.dbg.json b/contracts/artifacts/src/utils/deployment/ProxyFactory.sol/ProxyFactory.dbg.json new file mode 100644 index 00000000..4058cb44 --- /dev/null +++ b/contracts/artifacts/src/utils/deployment/ProxyFactory.sol/ProxyFactory.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" +} diff --git a/contracts/artifacts/src/utils/deployment/ProxyFactory.sol/ProxyFactory.json b/contracts/artifacts/src/utils/deployment/ProxyFactory.sol/ProxyFactory.json new file mode 100644 index 00000000..d1e38258 --- /dev/null +++ b/contracts/artifacts/src/utils/deployment/ProxyFactory.sol/ProxyFactory.json @@ -0,0 +1,86 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "ProxyFactory", + "sourceName": "src/utils/deployment/ProxyFactory.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_implementation", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "proxy", + "type": "address" + } + ], + "name": "ProxyCreated", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "_data", + "type": "bytes" + } + ], + "name": "deployMinimalProxy", + "outputs": [ + { + "internalType": "address", + "name": "proxy", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "_data", + "type": "bytes" + } + ], + "name": "deployUUPSProxy", + "outputs": [ + { + "internalType": "address", + "name": "proxy", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "implementation", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x60a060405234801561001057600080fd5b50604051610db2380380610db283398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b608051610d1b6100976000396000818160800152818160cc01526101460152610d1b6000f3fe60806040523480156200001157600080fd5b5060043610620000465760003560e01c80635c5c278b146200004b5780635c60da1b146200007e57806393042ea314620000a5575b600080fd5b620000626200005c366004620004aa565b620000bc565b6040516001600160a01b03909116815260200160405180910390f35b7f000000000000000000000000000000000000000000000000000000000000000062000062565b62000062620000b6366004620004aa565b62000136565b6000620000f36001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016836200016d565b6040516001600160a01b03821681529091507efffc2da0b561cae30d9826d37709e9421c4725faebc226cbbb7ef5fc5e73499060200160405180910390a1919050565b6000620000f36001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001683620001b1565b600082826040516200017f9062000486565b6200018c929190620005b9565b604051809103906000f080158015620001a9573d6000803e3d6000fd5b509392505050565b6000620001c7836001600160a01b0316620001ef565b825190915015620001e957620001e76001600160a01b0382168362000296565b505b92915050565b6000763d602d80600a3d3981f3363d3d373d3d3d363d730000008260601b60e81c176000526e5af43d82803e903d91602b57fd5bf38260781b17602052603760096000f090506001600160a01b038116620002915760405162461bcd60e51b815260206004820152601660248201527f455243313136373a20637265617465206661696c65640000000000000000000060448201526064015b60405180910390fd5b919050565b6060620002dc838360006040518060400160405280601e81526020017f416464726573733a206c6f772d6c6576656c2063616c6c206661696c65640000815250620002e3565b9392505050565b6060824710156200035d5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c0000000000000000000000000000000000000000000000000000606482015260840162000288565b600080866001600160a01b031685876040516200037b9190620005dd565b60006040518083038185875af1925050503d8060008114620003ba576040519150601f19603f3d011682016040523d82523d6000602084013e620003bf565b606091505b5091509150620003d287838387620003df565b925050505b949350505050565b60608315620004535782516000036200044b576001600160a01b0385163b6200044b5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640162000288565b5081620003d7565b620003d783838151156200046a5781518083602001fd5b8060405162461bcd60e51b8152600401620002889190620005fb565b6106fe806200061183390190565b634e487b7160e01b600052604160045260246000fd5b600060208284031215620004bd57600080fd5b813567ffffffffffffffff80821115620004d657600080fd5b818401915084601f830112620004eb57600080fd5b81358181111562000500576200050062000494565b604051601f8201601f19908116603f011681019083821181831017156200052b576200052b62000494565b816040528281528760208487010111156200054557600080fd5b826020860160208301376000928101602001929092525095945050505050565b60005b838110156200058257818101518382015260200162000568565b50506000910152565b60008151808452620005a581602086016020860162000565565b601f01601f19169290920160200192915050565b6001600160a01b0383168152604060208201526000620003d760408301846200058b565b60008251620005f181846020870162000565565b9190910192915050565b602081526000620002dc60208301846200058b56fe60806040526040516106fe3803806106fe83398101604081905261002291610319565b61002e82826000610035565b5050610436565b61003e8361006b565b60008251118061004b5750805b156100665761006483836100ab60201b6100291760201c565b505b505050565b610074816100d7565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606100d083836040518060600160405280602781526020016106d7602791396101a9565b9392505050565b6100ea8161022260201b6100551760201c565b6101515760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b806101887f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61023160201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6060600080856001600160a01b0316856040516101c691906103e7565b600060405180830381855af49150503d8060008114610201576040519150601f19603f3d011682016040523d82523d6000602084013e610206565b606091505b50909250905061021886838387610234565b9695505050505050565b6001600160a01b03163b151590565b90565b606083156102a357825160000361029c576001600160a01b0385163b61029c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610148565b50816102ad565b6102ad83836102b5565b949350505050565b8151156102c55781518083602001fd5b8060405162461bcd60e51b81526004016101489190610403565b634e487b7160e01b600052604160045260246000fd5b60005b838110156103105781810151838201526020016102f8565b50506000910152565b6000806040838503121561032c57600080fd5b82516001600160a01b038116811461034357600080fd5b60208401519092506001600160401b038082111561036057600080fd5b818501915085601f83011261037457600080fd5b815181811115610386576103866102df565b604051601f8201601f19908116603f011681019083821181831017156103ae576103ae6102df565b816040528281528860208487010111156103c757600080fd5b6103d88360208301602088016102f5565b80955050505050509250929050565b600082516103f98184602087016102f5565b9190910192915050565b60208152600082518060208401526104228160408501602087016102f5565b601f01601f19169190910160400192915050565b610292806104456000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b61009f565b565b606061004e838360405180606001604052806027815260200161025f602791396100c3565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e8080156100be573d6000f35b3d6000fd5b6060600080856001600160a01b0316856040516100e0919061020f565b600060405180830381855af49150503d806000811461011b576040519150601f19603f3d011682016040523d82523d6000602084013e610120565b606091505b50915091506101318683838761013b565b9695505050505050565b606083156101af5782516000036101a8576001600160a01b0385163b6101a85760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b50816101b9565b6101b983836101c1565b949350505050565b8151156101d15781518083602001fd5b8060405162461bcd60e51b815260040161019f919061022b565b60005b838110156102065781810151838201526020016101ee565b50506000910152565b600082516102218184602087016101eb565b9190910192915050565b602081526000825180602084015261024a8160408501602087016101eb565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a", + "deployedBytecode": "0x60806040523480156200001157600080fd5b5060043610620000465760003560e01c80635c5c278b146200004b5780635c60da1b146200007e57806393042ea314620000a5575b600080fd5b620000626200005c366004620004aa565b620000bc565b6040516001600160a01b03909116815260200160405180910390f35b7f000000000000000000000000000000000000000000000000000000000000000062000062565b62000062620000b6366004620004aa565b62000136565b6000620000f36001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016836200016d565b6040516001600160a01b03821681529091507efffc2da0b561cae30d9826d37709e9421c4725faebc226cbbb7ef5fc5e73499060200160405180910390a1919050565b6000620000f36001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001683620001b1565b600082826040516200017f9062000486565b6200018c929190620005b9565b604051809103906000f080158015620001a9573d6000803e3d6000fd5b509392505050565b6000620001c7836001600160a01b0316620001ef565b825190915015620001e957620001e76001600160a01b0382168362000296565b505b92915050565b6000763d602d80600a3d3981f3363d3d373d3d3d363d730000008260601b60e81c176000526e5af43d82803e903d91602b57fd5bf38260781b17602052603760096000f090506001600160a01b038116620002915760405162461bcd60e51b815260206004820152601660248201527f455243313136373a20637265617465206661696c65640000000000000000000060448201526064015b60405180910390fd5b919050565b6060620002dc838360006040518060400160405280601e81526020017f416464726573733a206c6f772d6c6576656c2063616c6c206661696c65640000815250620002e3565b9392505050565b6060824710156200035d5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c0000000000000000000000000000000000000000000000000000606482015260840162000288565b600080866001600160a01b031685876040516200037b9190620005dd565b60006040518083038185875af1925050503d8060008114620003ba576040519150601f19603f3d011682016040523d82523d6000602084013e620003bf565b606091505b5091509150620003d287838387620003df565b925050505b949350505050565b60608315620004535782516000036200044b576001600160a01b0385163b6200044b5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640162000288565b5081620003d7565b620003d783838151156200046a5781518083602001fd5b8060405162461bcd60e51b8152600401620002889190620005fb565b6106fe806200061183390190565b634e487b7160e01b600052604160045260246000fd5b600060208284031215620004bd57600080fd5b813567ffffffffffffffff80821115620004d657600080fd5b818401915084601f830112620004eb57600080fd5b81358181111562000500576200050062000494565b604051601f8201601f19908116603f011681019083821181831017156200052b576200052b62000494565b816040528281528760208487010111156200054557600080fd5b826020860160208301376000928101602001929092525095945050505050565b60005b838110156200058257818101518382015260200162000568565b50506000910152565b60008151808452620005a581602086016020860162000565565b601f01601f19169290920160200192915050565b6001600160a01b0383168152604060208201526000620003d760408301846200058b565b60008251620005f181846020870162000565565b9190910192915050565b602081526000620002dc60208301846200058b56fe60806040526040516106fe3803806106fe83398101604081905261002291610319565b61002e82826000610035565b5050610436565b61003e8361006b565b60008251118061004b5750805b156100665761006483836100ab60201b6100291760201c565b505b505050565b610074816100d7565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606100d083836040518060600160405280602781526020016106d7602791396101a9565b9392505050565b6100ea8161022260201b6100551760201c565b6101515760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b806101887f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61023160201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6060600080856001600160a01b0316856040516101c691906103e7565b600060405180830381855af49150503d8060008114610201576040519150601f19603f3d011682016040523d82523d6000602084013e610206565b606091505b50909250905061021886838387610234565b9695505050505050565b6001600160a01b03163b151590565b90565b606083156102a357825160000361029c576001600160a01b0385163b61029c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610148565b50816102ad565b6102ad83836102b5565b949350505050565b8151156102c55781518083602001fd5b8060405162461bcd60e51b81526004016101489190610403565b634e487b7160e01b600052604160045260246000fd5b60005b838110156103105781810151838201526020016102f8565b50506000910152565b6000806040838503121561032c57600080fd5b82516001600160a01b038116811461034357600080fd5b60208401519092506001600160401b038082111561036057600080fd5b818501915085601f83011261037457600080fd5b815181811115610386576103866102df565b604051601f8201601f19908116603f011681019083821181831017156103ae576103ae6102df565b816040528281528860208487010111156103c757600080fd5b6103d88360208301602088016102f5565b80955050505050509250929050565b600082516103f98184602087016102f5565b9190910192915050565b60208152600082518060208401526104228160408501602087016102f5565b601f01601f19169190910160400192915050565b610292806104456000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b61009f565b565b606061004e838360405180606001604052806027815260200161025f602791396100c3565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e8080156100be573d6000f35b3d6000fd5b6060600080856001600160a01b0316856040516100e0919061020f565b600060405180830381855af49150503d806000811461011b576040519150601f19603f3d011682016040523d82523d6000602084013e610120565b606091505b50915091506101318683838761013b565b9695505050505050565b606083156101af5782516000036101a8576001600160a01b0385163b6101a85760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b50816101b9565b6101b983836101c1565b949350505050565b8151156101d15781518083602001fd5b8060405162461bcd60e51b815260040161019f919061022b565b60005b838110156102065781810151838201526020016101ee565b50506000910152565b600082516102218184602087016101eb565b9190910192915050565b602081526000825180602084015261024a8160408501602087016101eb565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/src/utils/deployment/ProxyLib.sol/ProxyLib.dbg.json b/contracts/artifacts/src/utils/deployment/ProxyLib.sol/ProxyLib.dbg.json new file mode 100644 index 00000000..4058cb44 --- /dev/null +++ b/contracts/artifacts/src/utils/deployment/ProxyLib.sol/ProxyLib.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" +} diff --git a/contracts/artifacts/src/utils/deployment/ProxyLib.sol/ProxyLib.json b/contracts/artifacts/src/utils/deployment/ProxyLib.sol/ProxyLib.json new file mode 100644 index 00000000..131accfd --- /dev/null +++ b/contracts/artifacts/src/utils/deployment/ProxyLib.sol/ProxyLib.json @@ -0,0 +1,10 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "ProxyLib", + "sourceName": "src/utils/deployment/ProxyLib.sol", + "abi": [], + "bytecode": "0x602d6037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/src/utils/versioning/IProtocolVersion.sol/IProtocolVersion.dbg.json b/contracts/artifacts/src/utils/versioning/IProtocolVersion.sol/IProtocolVersion.dbg.json new file mode 100644 index 00000000..4058cb44 --- /dev/null +++ b/contracts/artifacts/src/utils/versioning/IProtocolVersion.sol/IProtocolVersion.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" +} diff --git a/contracts/artifacts/src/utils/versioning/IProtocolVersion.sol/IProtocolVersion.json b/contracts/artifacts/src/utils/versioning/IProtocolVersion.sol/IProtocolVersion.json new file mode 100644 index 00000000..08f85d0c --- /dev/null +++ b/contracts/artifacts/src/utils/versioning/IProtocolVersion.sol/IProtocolVersion.json @@ -0,0 +1,24 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IProtocolVersion", + "sourceName": "src/utils/versioning/IProtocolVersion.sol", + "abi": [ + { + "inputs": [], + "name": "protocolVersion", + "outputs": [ + { + "internalType": "uint8[3]", + "name": "_version", + "type": "uint8[3]" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/src/utils/versioning/ProtocolVersion.sol/ProtocolVersion.dbg.json b/contracts/artifacts/src/utils/versioning/ProtocolVersion.sol/ProtocolVersion.dbg.json new file mode 100644 index 00000000..4058cb44 --- /dev/null +++ b/contracts/artifacts/src/utils/versioning/ProtocolVersion.sol/ProtocolVersion.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" +} diff --git a/contracts/artifacts/src/utils/versioning/ProtocolVersion.sol/ProtocolVersion.json b/contracts/artifacts/src/utils/versioning/ProtocolVersion.sol/ProtocolVersion.json new file mode 100644 index 00000000..1800ace1 --- /dev/null +++ b/contracts/artifacts/src/utils/versioning/ProtocolVersion.sol/ProtocolVersion.json @@ -0,0 +1,24 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "ProtocolVersion", + "sourceName": "src/utils/versioning/ProtocolVersion.sol", + "abi": [ + { + "inputs": [], + "name": "protocolVersion", + "outputs": [ + { + "internalType": "uint8[3]", + "name": "", + "type": "uint8[3]" + } + ], + "stateMutability": "pure", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/src/utils/versioning/VersionComparisonLib.sol/VersionComparisonLib.dbg.json b/contracts/artifacts/src/utils/versioning/VersionComparisonLib.sol/VersionComparisonLib.dbg.json new file mode 100644 index 00000000..4058cb44 --- /dev/null +++ b/contracts/artifacts/src/utils/versioning/VersionComparisonLib.sol/VersionComparisonLib.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" +} diff --git a/contracts/artifacts/src/utils/versioning/VersionComparisonLib.sol/VersionComparisonLib.json b/contracts/artifacts/src/utils/versioning/VersionComparisonLib.sol/VersionComparisonLib.json new file mode 100644 index 00000000..8e192748 --- /dev/null +++ b/contracts/artifacts/src/utils/versioning/VersionComparisonLib.sol/VersionComparisonLib.json @@ -0,0 +1,10 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "VersionComparisonLib", + "sourceName": "src/utils/versioning/VersionComparisonLib.sol", + "abi": [], + "bytecode": "0x602d6037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/src/mocks/plugin/extensions/proposal/ProposalMock.sol b/contracts/src/mocks/plugin/extensions/proposal/ProposalMock.sol deleted file mode 100644 index ffa12da5..00000000 --- a/contracts/src/mocks/plugin/extensions/proposal/ProposalMock.sol +++ /dev/null @@ -1,41 +0,0 @@ -// SPDX-License-Identifier: AGPL-3.0-or-later - -pragma solidity ^0.8.8; - -import {Proposal} from "../../../../plugin/extensions/proposal/Proposal.sol"; -import {IDAO} from "../../../../dao/IDAO.sol"; - -/// @notice A mock contract containing functions to create and execute proposals. -/// @dev DO NOT USE IN PRODUCTION! -contract ProposalMock is Proposal { - function createProposalId() external returns (uint256 proposalId) { - proposalId = _createProposalId(); - } - - function createProposal( - address _creator, - bytes calldata _metadata, - uint64 _startDate, - uint64 _endDate, - IDAO.Action[] calldata _actions, - uint256 _allowFailureMap - ) external returns (uint256 proposalId) { - proposalId = _createProposal( - _creator, - _metadata, - _startDate, - _endDate, - _actions, - _allowFailureMap - ); - } - - function executeProposal( - IDAO _dao, - uint256 _proposalId, - IDAO.Action[] memory _actions, - uint256 _allowFailureMap - ) external returns (bytes[] memory execResults, uint256 failureMap) { - (execResults, failureMap) = _executeProposal(_dao, _proposalId, _actions, _allowFailureMap); - } -} diff --git a/contracts/src/mocks/plugin/extensions/proposal/ProposalUpgradeableMock.sol b/contracts/src/mocks/plugin/extensions/proposal/ProposalUpgradeableMock.sol deleted file mode 100644 index fab1019c..00000000 --- a/contracts/src/mocks/plugin/extensions/proposal/ProposalUpgradeableMock.sol +++ /dev/null @@ -1,41 +0,0 @@ -// SPDX-License-Identifier: AGPL-3.0-or-later - -pragma solidity ^0.8.8; - -import {ProposalUpgradeable} from "../../../../plugin/extensions/proposal/ProposalUpgradeable.sol"; -import {IDAO} from "../../../../dao/IDAO.sol"; - -/// @notice A mock contract containing functions to create and execute proposals as well as storage gaps in inherited contracts to be used in UUPS upgradeable contracts. -/// @dev DO NOT USE IN PRODUCTION! -contract ProposalUpgradeableMock is ProposalUpgradeable { - function createProposalId() external returns (uint256 proposalId) { - proposalId = _createProposalId(); - } - - function createProposal( - address _creator, - bytes calldata _metadata, - uint64 _startDate, - uint64 _endDate, - IDAO.Action[] calldata _actions, - uint256 _allowFailureMap - ) external returns (uint256 proposalId) { - proposalId = _createProposal( - _creator, - _metadata, - _startDate, - _endDate, - _actions, - _allowFailureMap - ); - } - - function executeProposal( - IDAO _dao, - uint256 _proposalId, - IDAO.Action[] memory _actions, - uint256 _allowFailureMap - ) external returns (bytes[] memory execResults, uint256 failureMap) { - (execResults, failureMap) = _executeProposal(_dao, _proposalId, _actions, _allowFailureMap); - } -} diff --git a/contracts/src/plugin/Plugin.sol b/contracts/src/plugin/Plugin.sol index 66ffaf23..7f912c88 100644 --- a/contracts/src/plugin/Plugin.sol +++ b/contracts/src/plugin/Plugin.sol @@ -15,6 +15,11 @@ import {IPlugin} from "./IPlugin.sol"; /// @notice An abstract, non-upgradeable contract to inherit from when creating a plugin being deployed via the `new` keyword. /// @custom:security-contact sirt@aragon.org abstract contract Plugin is IPlugin, ERC165, DaoAuthorizable, ProtocolVersion { + address public target; + + /// @dev Emitted each time the Target is set. + event TargetSet(address indexed previousTarget, address indexed newTarget); + /// @notice Constructs the plugin by storing the associated DAO. /// @param _dao The DAO contract. constructor(IDAO _dao) DaoAuthorizable(_dao) {} @@ -24,6 +29,14 @@ abstract contract Plugin is IPlugin, ERC165, DaoAuthorizable, ProtocolVersion { return PluginType.Constructable; } + /// @dev Sets the target to a new target (`newTarget`). + /// @notice Can only be called by the current owner. TODO + function setTarget(address _target) public { + address previousTarget = target; + target = _target; + emit TargetSet(previousTarget, _target); + } + /// @notice Checks if this or the parent contract supports an interface by its ID. /// @param _interfaceId The ID of the interface. /// @return Returns `true` if the interface is supported. @@ -33,4 +46,34 @@ abstract contract Plugin is IPlugin, ERC165, DaoAuthorizable, ProtocolVersion { _interfaceId == type(IProtocolVersion).interfaceId || super.supportsInterface(_interfaceId); } + + /// @notice Forwards the actions to the currently set `target` for the execution. + /// @param _callId Identifier for this execution. + /// @param _actions actions that will be eventually called. + /// @param _allowFailureMap Bitmap-encoded number. TODO: + /// @return execResults address of the implementation contract. + /// @return failureMap address of the implementation contract. + function _execute( + bytes32 _callId, + IDAO.Action[] calldata _actions, + uint256 _allowFailureMap + ) internal virtual returns (bytes[] memory execResults, uint256 failureMap) { + (execResults, failureMap) = IDAO(target).execute(_callId, _actions, _allowFailureMap); + } + + /// @notice Forwards the actions to the `target` for the execution. + /// @param _target Forwards the actions to the specific target. + /// @param _callId Identifier for this execution. + /// @param _actions actions that will be eventually called. + /// @param _allowFailureMap Bitmap-encoded number. TODO: + /// @return execResults address of the implementation contract. + /// @return failureMap address of the implementation contract. + function _execute( + address _target, + bytes32 _callId, + IDAO.Action[] calldata _actions, + uint256 _allowFailureMap + ) internal virtual returns (bytes[] memory execResults, uint256 failureMap) { + (execResults, failureMap) = IDAO(_target).execute(_callId, _actions, _allowFailureMap); + } } diff --git a/contracts/src/plugin/PluginCloneable.sol b/contracts/src/plugin/PluginCloneable.sol index 08025c2c..9ff70fea 100644 --- a/contracts/src/plugin/PluginCloneable.sol +++ b/contracts/src/plugin/PluginCloneable.sol @@ -20,6 +20,11 @@ abstract contract PluginCloneable is DaoAuthorizableUpgradeable, ProtocolVersion { + address public target; + + /// @dev Emitted each time the Target is set. + event TargetSet(address indexed previousTarget, address indexed newTarget); + /// @notice Disables the initializers on the implementation contract to prevent it from being left uninitialized. /// @custom:oz-upgrades-unsafe-allow constructor constructor() { @@ -33,6 +38,14 @@ abstract contract PluginCloneable is __DaoAuthorizableUpgradeable_init(_dao); } + /// @dev Sets the target to a new target (`newTarget`). + /// @notice Can only be called by the current owner. TODO + function setTarget(address _target) public { + address previousTarget = target; + target = _target; + emit TargetSet(previousTarget, _target); + } + /// @inheritdoc IPlugin function pluginType() public pure override returns (PluginType) { return PluginType.Cloneable; @@ -47,4 +60,34 @@ abstract contract PluginCloneable is _interfaceId == type(IProtocolVersion).interfaceId || super.supportsInterface(_interfaceId); } + + /// @notice Forwards the actions to the currently set `target` for the execution. + /// @param _callId Identifier for this execution. + /// @param _actions actions that will be eventually called. + /// @param _allowFailureMap Bitmap-encoded number. TODO: + /// @return execResults address of the implementation contract. + /// @return failureMap address of the implementation contract. + function _execute( + bytes32 _callId, + IDAO.Action[] calldata _actions, + uint256 _allowFailureMap + ) internal virtual returns (bytes[] memory execResults, uint256 failureMap) { + (execResults, failureMap) = IDAO(target).execute(_callId, _actions, _allowFailureMap); + } + + /// @notice Forwards the actions to the `target` for the execution. + /// @param _target Forwards the actions to the specific target. + /// @param _callId Identifier for this execution. + /// @param _actions actions that will be eventually called. + /// @param _allowFailureMap Bitmap-encoded number. TODO: + /// @return execResults address of the implementation contract. + /// @return failureMap address of the implementation contract. + function _execute( + address _target, + bytes32 _callId, + IDAO.Action[] calldata _actions, + uint256 _allowFailureMap + ) internal virtual returns (bytes[] memory execResults, uint256 failureMap) { + (execResults, failureMap) = IDAO(_target).execute(_callId, _actions, _allowFailureMap); + } } diff --git a/contracts/src/plugin/PluginUUPSUpgradeable.sol b/contracts/src/plugin/PluginUUPSUpgradeable.sol index 32380f0d..a17abcb3 100644 --- a/contracts/src/plugin/PluginUUPSUpgradeable.sol +++ b/contracts/src/plugin/PluginUUPSUpgradeable.sol @@ -24,6 +24,10 @@ abstract contract PluginUUPSUpgradeable is ProtocolVersion { // NOTE: When adding new state variables to the contract, the size of `_gap` has to be adapted below as well. + address public target; + + /// @dev Emitted each time the Target is set. + event TargetSet(address indexed previousTarget, address indexed newTarget); /// @notice Disables the initializers on the implementation contract to prevent it from being left uninitialized. /// @custom:oz-upgrades-unsafe-allow constructor @@ -46,6 +50,14 @@ abstract contract PluginUUPSUpgradeable is __DaoAuthorizableUpgradeable_init(_dao); } + /// @dev Sets the target to a new target (`newTarget`). + /// @notice Can only be called by the current owner. TODO + function setTarget(address _target) public { + address previousTarget = target; + target = _target; + emit TargetSet(previousTarget, _target); + } + /// @notice Checks if an interface is supported by this or its parent contract. /// @param _interfaceId The ID of the interface. /// @return Returns `true` if the interface is supported. @@ -63,6 +75,36 @@ abstract contract PluginUUPSUpgradeable is return _getImplementation(); } + /// @notice Forwards the actions to the currently set `target` for the execution. + /// @param _callId Identifier for this execution. + /// @param _actions actions that will be eventually called. + /// @param _allowFailureMap Bitmap-encoded number. TODO: + /// @return execResults address of the implementation contract. + /// @return failureMap address of the implementation contract. + function _execute( + bytes32 _callId, + IDAO.Action[] calldata _actions, + uint256 _allowFailureMap + ) internal virtual returns (bytes[] memory execResults, uint256 failureMap) { + (execResults, failureMap) = IDAO(target).execute(_callId, _actions, _allowFailureMap); + } + + /// @notice Forwards the actions to the `target` for the execution. + /// @param _target Forwards the actions to the specific target. + /// @param _callId Identifier for this execution. + /// @param _actions actions that will be eventually called. + /// @param _allowFailureMap Bitmap-encoded number. TODO: + /// @return execResults address of the implementation contract. + /// @return failureMap address of the implementation contract. + function _execute( + address _target, + bytes32 _callId, + IDAO.Action[] calldata _actions, + uint256 _allowFailureMap + ) internal virtual returns (bytes[] memory execResults, uint256 failureMap) { + (execResults, failureMap) = IDAO(_target).execute(_callId, _actions, _allowFailureMap); + } + /// @notice Internal method authorizing the upgrade of the contract via the [upgradeability mechanism for UUPS proxies](https://docs.openzeppelin.com/contracts/4.x/api/proxy#UUPSUpgradeable) (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)). /// @dev The caller must have the `UPGRADE_PLUGIN_PERMISSION_ID` permission. function _authorizeUpgrade( @@ -78,5 +120,5 @@ abstract contract PluginUUPSUpgradeable is } /// @notice This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain (see [OpenZeppelin's guide about storage gaps](https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps)). - uint256[50] private __gap; + uint256[49] private __gap; } diff --git a/contracts/src/plugin/extensions/proposal/IProposal.sol b/contracts/src/plugin/extensions/proposal/IProposal.sol index 889583a2..a74d0f67 100644 --- a/contracts/src/plugin/extensions/proposal/IProposal.sol +++ b/contracts/src/plugin/extensions/proposal/IProposal.sol @@ -31,7 +31,26 @@ interface IProposal { /// @param proposalId The ID of the proposal. event ProposalExecuted(uint256 indexed proposalId); + /// @notice Creates a new proposal. + /// @param data The metadata of the proposal. + /// @param actions The actions that will be executed after the proposal passes. + /// @param startDate The start date of the proposal. + /// @param endDate The end date of the proposal. + /// @return proposalId The id of the proposal. + function createProposal( + bytes memory data, + IDAO.Action[] memory actions, + uint64 startDate, + uint64 endDate + ) external returns (uint256 proposalId); + + /// @notice Whether proposal can be executed or not. + /// @param proposalId The id of the proposal. + /// @return bool Returns if proposal can be executed or not. + function canExecute(uint256 proposalId) external returns (bool); + /// @notice Returns the proposal count determining the next proposal ID. + /// @dev This function is deprecated TODO: /// @return The proposal count. function proposalCount() external view returns (uint256); } diff --git a/contracts/src/plugin/extensions/proposal/Proposal.sol b/contracts/src/plugin/extensions/proposal/Proposal.sol index 6df0a6a2..54a50c66 100644 --- a/contracts/src/plugin/extensions/proposal/Proposal.sol +++ b/contracts/src/plugin/extensions/proposal/Proposal.sol @@ -18,6 +18,8 @@ abstract contract Proposal is IProposal, ERC165 { /// @notice The incremental ID for proposals and executions. Counters.Counter private proposalCounter; + /// Shall we remove this ? Does anyone use this ? if we keep having this, + // this will not return the correct value anyways anymore. /// @inheritdoc IProposal function proposalCount() public view override returns (uint256) { return proposalCounter.current(); @@ -27,57 +29,14 @@ abstract contract Proposal is IProposal, ERC165 { /// @param _interfaceId The ID of the interface. /// @return Returns `true` if the interface is supported. function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) { - return _interfaceId == type(IProposal).interfaceId || super.supportsInterface(_interfaceId); - } - - /// @notice Creates a proposal ID. - /// @return proposalId The proposal ID. - function _createProposalId() internal returns (uint256 proposalId) { - proposalId = proposalCount(); - proposalCounter.increment(); - } - - /// @notice Internal function to create a proposal. - /// @param _metadata The proposal metadata. - /// @param _startDate The start date of the proposal in seconds. - /// @param _endDate The end date of the proposal in seconds. - /// @param _allowFailureMap A bitmap allowing the proposal to succeed, even if individual actions might revert. If the bit at index `i` is 1, the proposal succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert. - /// @param _actions The actions that will be executed after the proposal passes. - /// @return proposalId The ID of the proposal. - function _createProposal( - address _creator, - bytes calldata _metadata, - uint64 _startDate, - uint64 _endDate, - IDAO.Action[] calldata _actions, - uint256 _allowFailureMap - ) internal virtual returns (uint256 proposalId) { - proposalId = _createProposalId(); - - emit ProposalCreated({ - proposalId: proposalId, - creator: _creator, - metadata: _metadata, - startDate: _startDate, - endDate: _endDate, - actions: _actions, - allowFailureMap: _allowFailureMap - }); - } - - /// @notice Internal function to execute a proposal. - /// @param _proposalId The ID of the proposal to be executed. - /// @param _actions The array of actions to be executed. - /// @param _allowFailureMap A bitmap allowing the proposal to succeed, even if individual actions might revert. If the bit at index `i` is 1, the proposal succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert. - /// @return execResults The array with the results of the executed actions. - /// @return failureMap The failure map encoding which actions have failed. - function _executeProposal( - IDAO _dao, - uint256 _proposalId, - IDAO.Action[] memory _actions, - uint256 _allowFailureMap - ) internal virtual returns (bytes[] memory execResults, uint256 failureMap) { - (execResults, failureMap) = _dao.execute(bytes32(_proposalId), _actions, _allowFailureMap); - emit ProposalExecuted({proposalId: _proposalId}); + // In addition to the current interfaceId, also support previous version of the interfaceId that did not + // include the createProposal() function as standard + return + _interfaceId == + type(IProposal).interfaceId ^ + IProposal.createProposal.selector ^ + IProposal.canExecute.selector || + _interfaceId == type(IProposal).interfaceId || + super.supportsInterface(_interfaceId); } } diff --git a/contracts/src/plugin/extensions/proposal/ProposalUpgradeable.sol b/contracts/src/plugin/extensions/proposal/ProposalUpgradeable.sol index 864ace63..fce033f7 100644 --- a/contracts/src/plugin/extensions/proposal/ProposalUpgradeable.sol +++ b/contracts/src/plugin/extensions/proposal/ProposalUpgradeable.sol @@ -27,58 +27,15 @@ abstract contract ProposalUpgradeable is IProposal, ERC165Upgradeable { /// @param _interfaceId The ID of the interface. /// @return Returns `true` if the interface is supported. function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) { - return _interfaceId == type(IProposal).interfaceId || super.supportsInterface(_interfaceId); - } - - /// @notice Creates a proposal ID. - /// @return proposalId The proposal ID. - function _createProposalId() internal returns (uint256 proposalId) { - proposalId = proposalCount(); - proposalCounter.increment(); - } - - /// @notice Internal function to create a proposal. - /// @param _metadata The proposal metadata. - /// @param _startDate The start date of the proposal in seconds. - /// @param _endDate The end date of the proposal in seconds. - /// @param _allowFailureMap A bitmap allowing the proposal to succeed, even if individual actions might revert. If the bit at index `i` is 1, the proposal succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert. - /// @param _actions The actions that will be executed after the proposal passes. - /// @return proposalId The ID of the proposal. - function _createProposal( - address _creator, - bytes calldata _metadata, - uint64 _startDate, - uint64 _endDate, - IDAO.Action[] calldata _actions, - uint256 _allowFailureMap - ) internal virtual returns (uint256 proposalId) { - proposalId = _createProposalId(); - - emit ProposalCreated({ - proposalId: proposalId, - creator: _creator, - metadata: _metadata, - startDate: _startDate, - endDate: _endDate, - actions: _actions, - allowFailureMap: _allowFailureMap - }); - } - - /// @notice Internal function to execute a proposal. - /// @param _proposalId The ID of the proposal to be executed. - /// @param _actions The array of actions to be executed. - /// @param _allowFailureMap A bitmap allowing the proposal to succeed, even if individual actions might revert. If the bit at index `i` is 1, the proposal succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert. - /// @return execResults The array with the results of the executed actions. - /// @return failureMap The failure map encoding which actions have failed. - function _executeProposal( - IDAO _dao, - uint256 _proposalId, - IDAO.Action[] memory _actions, - uint256 _allowFailureMap - ) internal virtual returns (bytes[] memory execResults, uint256 failureMap) { - (execResults, failureMap) = _dao.execute(bytes32(_proposalId), _actions, _allowFailureMap); - emit ProposalExecuted({proposalId: _proposalId}); + // In addition to the current interfaceId, also support previous version of the interfaceId that did not + // include the createProposal() function as standard + return + _interfaceId == + type(IProposal).interfaceId ^ + IProposal.createProposal.selector ^ + IProposal.canExecute.selector || + _interfaceId == type(IProposal).interfaceId || + super.supportsInterface(_interfaceId); } /// @notice This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain (see [OpenZeppelin's guide about storage gaps](https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps)). From f6f5f3d6c8661f9f122fed2fbce7efd11cff46ba Mon Sep 17 00:00:00 2001 From: Giorgi Lagidze Date: Wed, 14 Aug 2024 13:07:33 +0400 Subject: [PATCH 02/15] add artifacts folder in gitignore --- .gitignore | 4 + .../IERC1967Upgradeable.dbg.json | 4 - .../IERC1967Upgradeable.json | 56 --- .../IERC1822ProxiableUpgradeable.dbg.json | 4 - .../IERC1822ProxiableUpgradeable.json | 24 -- .../ERC1967UpgradeUpgradeable.dbg.json | 4 - .../ERC1967UpgradeUpgradeable.json | 69 --- .../IBeaconUpgradeable.dbg.json | 4 - .../IBeaconUpgradeable.json | 24 -- .../Initializable.sol/Initializable.dbg.json | 4 - .../Initializable.sol/Initializable.json | 24 -- .../UUPSUpgradeable.dbg.json | 4 - .../UUPSUpgradeable.sol/UUPSUpgradeable.json | 113 ----- .../AddressUpgradeable.dbg.json | 4 - .../AddressUpgradeable.json | 10 - .../CheckpointsUpgradeable.dbg.json | 4 - .../CheckpointsUpgradeable.json | 10 - .../ContextUpgradeable.dbg.json | 4 - .../ContextUpgradeable.json | 24 -- .../CountersUpgradeable.dbg.json | 4 - .../CountersUpgradeable.json | 10 - .../StorageSlotUpgradeable.dbg.json | 4 - .../StorageSlotUpgradeable.json | 10 - .../ERC165Upgradeable.dbg.json | 4 - .../ERC165Upgradeable.json | 43 -- .../IERC165Upgradeable.dbg.json | 4 - .../IERC165Upgradeable.json | 30 -- .../MathUpgradeable.dbg.json | 4 - .../MathUpgradeable.sol/MathUpgradeable.json | 10 - .../SafeCastUpgradeable.dbg.json | 4 - .../SafeCastUpgradeable.json | 10 - .../interfaces/IERC1967.sol/IERC1967.dbg.json | 4 - .../interfaces/IERC1967.sol/IERC1967.json | 56 --- .../IERC1822Proxiable.dbg.json | 4 - .../draft-IERC1822.sol/IERC1822Proxiable.json | 24 -- .../proxy/Clones.sol/Clones.dbg.json | 4 - .../contracts/proxy/Clones.sol/Clones.json | 10 - .../ERC1967Proxy.sol/ERC1967Proxy.dbg.json | 4 - .../ERC1967Proxy.sol/ERC1967Proxy.json | 80 ---- .../ERC1967Upgrade.dbg.json | 4 - .../ERC1967Upgrade.sol/ERC1967Upgrade.json | 56 --- .../contracts/proxy/Proxy.sol/Proxy.dbg.json | 4 - .../contracts/proxy/Proxy.sol/Proxy.json | 19 - .../proxy/beacon/IBeacon.sol/IBeacon.dbg.json | 4 - .../proxy/beacon/IBeacon.sol/IBeacon.json | 24 -- .../ERC1155/ERC1155.sol/ERC1155.dbg.json | 4 - .../token/ERC1155/ERC1155.sol/ERC1155.json | 334 --------------- .../ERC1155/IERC1155.sol/IERC1155.dbg.json | 4 - .../token/ERC1155/IERC1155.sol/IERC1155.json | 304 ------------- .../IERC1155Receiver.dbg.json | 4 - .../IERC1155Receiver.json | 108 ----- .../IERC1155MetadataURI.dbg.json | 4 - .../IERC1155MetadataURI.json | 323 -------------- .../token/ERC20/ERC20.sol/ERC20.dbg.json | 4 - .../token/ERC20/ERC20.sol/ERC20.json | 297 ------------- .../token/ERC20/IERC20.sol/IERC20.dbg.json | 4 - .../token/ERC20/IERC20.sol/IERC20.json | 194 --------- .../IERC20Metadata.dbg.json | 4 - .../IERC20Metadata.sol/IERC20Metadata.json | 233 ---------- .../token/ERC721/ERC721.sol/ERC721.dbg.json | 4 - .../token/ERC721/ERC721.sol/ERC721.json | 357 --------------- .../token/ERC721/IERC721.sol/IERC721.dbg.json | 4 - .../token/ERC721/IERC721.sol/IERC721.json | 296 ------------- .../IERC721Receiver.dbg.json | 4 - .../IERC721Receiver.sol/IERC721Receiver.json | 45 -- .../IERC721Metadata.dbg.json | 4 - .../IERC721Metadata.sol/IERC721Metadata.json | 341 --------------- .../utils/Address.sol/Address.dbg.json | 4 - .../contracts/utils/Address.sol/Address.json | 10 - .../utils/Context.sol/Context.dbg.json | 4 - .../contracts/utils/Context.sol/Context.json | 10 - .../utils/Counters.sol/Counters.dbg.json | 4 - .../utils/Counters.sol/Counters.json | 10 - .../StorageSlot.sol/StorageSlot.dbg.json | 4 - .../utils/StorageSlot.sol/StorageSlot.json | 10 - .../utils/Strings.sol/Strings.dbg.json | 4 - .../contracts/utils/Strings.sol/Strings.json | 10 - .../introspection/ERC165.sol/ERC165.dbg.json | 4 - .../introspection/ERC165.sol/ERC165.json | 30 -- .../IERC165.sol/IERC165.dbg.json | 4 - .../introspection/IERC165.sol/IERC165.json | 30 -- .../utils/math/Math.sol/Math.dbg.json | 4 - .../contracts/utils/math/Math.sol/Math.json | 10 - .../math/SignedMath.sol/SignedMath.dbg.json | 4 - .../utils/math/SignedMath.sol/SignedMath.json | 10 - .../58fb59cc656bfddaae1de55a017c315b.json | 1 - .../9ac591806bb2e846e5a60f79d635058e.json | 1 - .../artifacts/src/dao/IDAO.sol/IDAO.dbg.json | 4 - .../artifacts/src/dao/IDAO.sol/IDAO.json | 379 ---------------- .../mocks/dao/DAOMock.sol/DAOMock.dbg.json | 4 - .../src/mocks/dao/DAOMock.sol/DAOMock.json | 405 ------------------ .../DaoAuthorizableMock.dbg.json | 4 - .../DaoAuthorizableMock.json | 81 ---- .../DaoAuthorizableUpgradeableMock.dbg.json | 4 - .../DaoAuthorizableUpgradeableMock.json | 109 ----- .../PermissionConditionMock.dbg.json | 4 - .../PermissionConditionMock.json | 103 ----- ...ermissionConditionUpgradeableMock.dbg.json | 4 - .../PermissionConditionUpgradeableMock.json | 116 ----- .../PluginCloneableMockBad.dbg.json | 4 - .../PluginCloneableMockBad.json | 153 ------- .../PluginCloneableMockBuild1.dbg.json | 4 - .../PluginCloneableMockBuild1.json | 153 ------- .../PluginCloneableMockBuild2.dbg.json | 4 - .../PluginCloneableMockBuild2.json | 166 ------- .../PluginCloneableSetupMockBuild1.dbg.json | 4 - .../PluginCloneableSetupMockBuild1.json | 297 ------------- .../PluginCloneableSetupMockBuild2.dbg.json | 4 - .../PluginCloneableSetupMockBuild2.json | 297 ------------- .../PluginMock.sol/PluginMockBuild1.dbg.json | 4 - .../PluginMock.sol/PluginMockBuild1.json | 138 ------ .../PluginSetupMockBuild1.dbg.json | 4 - .../PluginSetupMockBuild1.json | 297 ------------- .../PluginUUPSUpgradeableMockBad.dbg.json | 4 - .../PluginUUPSUpgradeableMockBad.json | 294 ------------- .../PluginUUPSUpgradeableMockBuild1.dbg.json | 4 - .../PluginUUPSUpgradeableMockBuild1.json | 294 ------------- .../PluginUUPSUpgradeableMockBuild2.dbg.json | 4 - .../PluginUUPSUpgradeableMockBuild2.json | 320 -------------- .../PluginUUPSUpgradeableMockBuild3.dbg.json | 4 - .../PluginUUPSUpgradeableMockBuild3.json | 333 -------------- ...ginUUPSUpgradeableSetupMockBuild1.dbg.json | 4 - .../PluginUUPSUpgradeableSetupMockBuild1.json | 308 ------------- ...ginUUPSUpgradeableSetupMockBuild2.dbg.json | 4 - .../PluginUUPSUpgradeableSetupMockBuild2.json | 308 ------------- ...ginUUPSUpgradeableSetupMockBuild3.dbg.json | 4 - .../PluginUUPSUpgradeableSetupMockBuild3.json | 308 ------------- .../AddresslistMock.dbg.json | 4 - .../AddresslistMock.sol/AddresslistMock.json | 123 ------ .../ERC1155Mock.sol/ERC1155Mock.dbg.json | 4 - .../token/ERC1155Mock.sol/ERC1155Mock.json | 380 ---------------- .../token/ERC20Mock.sol/ERC20Mock.dbg.json | 4 - .../mocks/token/ERC20Mock.sol/ERC20Mock.json | 341 --------------- .../token/ERC721Mock.sol/ERC721Mock.dbg.json | 4 - .../token/ERC721Mock.sol/ERC721Mock.json | 388 ----------------- .../math/BitmapMock.sol/BitmapMock.dbg.json | 4 - .../utils/math/BitmapMock.sol/BitmapMock.json | 59 --- .../math/RatioMock.sol/RatioMock.dbg.json | 4 - .../utils/math/RatioMock.sol/RatioMock.json | 64 --- .../ProtocolVersionMock.dbg.json | 4 - .../ProtocolVersionMock.json | 24 -- .../VersionComparisonLibMock.dbg.json | 4 - .../VersionComparisonLibMock.json | 155 ------- .../PermissionLib.sol/PermissionLib.dbg.json | 4 - .../PermissionLib.sol/PermissionLib.json | 24 -- .../DaoAuthorizable.dbg.json | 4 - .../DaoAuthorizable.sol/DaoAuthorizable.json | 24 -- .../DaoAuthorizableUpgradeable.dbg.json | 4 - .../DaoAuthorizableUpgradeable.json | 37 -- .../IPermissionCondition.dbg.json | 4 - .../IPermissionCondition.json | 45 -- .../PermissionCondition.dbg.json | 4 - .../PermissionCondition.json | 77 ---- .../PermissionConditionUpgradeable.dbg.json | 4 - .../PermissionConditionUpgradeable.json | 90 ---- .../src/plugin/IPlugin.sol/IPlugin.dbg.json | 4 - .../src/plugin/IPlugin.sol/IPlugin.json | 24 -- .../src/plugin/Plugin.sol/Plugin.dbg.json | 4 - .../src/plugin/Plugin.sol/Plugin.json | 114 ----- .../PluginCloneable.dbg.json | 4 - .../PluginCloneable.sol/PluginCloneable.json | 127 ------ .../PluginUUPSUpgradeable.dbg.json | 4 - .../PluginUUPSUpgradeable.json | 268 ------------ .../Addresslist.sol/Addresslist.dbg.json | 4 - .../Addresslist.sol/Addresslist.json | 97 ----- .../IMembership.sol/IMembership.dbg.json | 4 - .../IMembership.sol/IMembership.json | 69 --- .../proposal/IProposal.sol/IProposal.dbg.json | 4 - .../proposal/IProposal.sol/IProposal.json | 173 -------- .../proposal/Proposal.sol/Proposal.dbg.json | 4 - .../proposal/Proposal.sol/Proposal.json | 192 --------- .../ProposalUpgradeable.dbg.json | 4 - .../ProposalUpgradeable.json | 205 --------- .../IPluginSetup.sol/IPluginSetup.dbg.json | 4 - .../setup/IPluginSetup.sol/IPluginSetup.json | 250 ----------- .../PluginSetup.sol/PluginSetup.dbg.json | 4 - .../setup/PluginSetup.sol/PluginSetup.json | 287 ------------- .../PluginUpgradeableSetup.dbg.json | 4 - .../PluginUpgradeableSetup.json | 298 ------------- .../ProxyFactory.sol/ProxyFactory.dbg.json | 4 - .../ProxyFactory.sol/ProxyFactory.json | 86 ---- .../deployment/ProxyLib.sol/ProxyLib.dbg.json | 4 - .../deployment/ProxyLib.sol/ProxyLib.json | 10 - .../IProtocolVersion.dbg.json | 4 - .../IProtocolVersion.json | 24 -- .../ProtocolVersion.dbg.json | 4 - .../ProtocolVersion.sol/ProtocolVersion.json | 24 -- .../VersionComparisonLib.dbg.json | 4 - .../VersionComparisonLib.json | 10 - 189 files changed, 4 insertions(+), 13020 deletions(-) delete mode 100644 contracts/artifacts/@openzeppelin/contracts-upgradeable/interfaces/IERC1967Upgradeable.sol/IERC1967Upgradeable.dbg.json delete mode 100644 contracts/artifacts/@openzeppelin/contracts-upgradeable/interfaces/IERC1967Upgradeable.sol/IERC1967Upgradeable.json delete mode 100644 contracts/artifacts/@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol/IERC1822ProxiableUpgradeable.dbg.json delete mode 100644 contracts/artifacts/@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol/IERC1822ProxiableUpgradeable.json delete mode 100644 contracts/artifacts/@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol/ERC1967UpgradeUpgradeable.dbg.json delete mode 100644 contracts/artifacts/@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol/ERC1967UpgradeUpgradeable.json delete mode 100644 contracts/artifacts/@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.sol/IBeaconUpgradeable.dbg.json delete mode 100644 contracts/artifacts/@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.sol/IBeaconUpgradeable.json delete mode 100644 contracts/artifacts/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol/Initializable.dbg.json delete mode 100644 contracts/artifacts/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol/Initializable.json delete mode 100644 contracts/artifacts/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol/UUPSUpgradeable.dbg.json delete mode 100644 contracts/artifacts/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol/UUPSUpgradeable.json delete mode 100644 contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol/AddressUpgradeable.dbg.json delete mode 100644 contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol/AddressUpgradeable.json delete mode 100644 contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/CheckpointsUpgradeable.sol/CheckpointsUpgradeable.dbg.json delete mode 100644 contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/CheckpointsUpgradeable.sol/CheckpointsUpgradeable.json delete mode 100644 contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol/ContextUpgradeable.dbg.json delete mode 100644 contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol/ContextUpgradeable.json delete mode 100644 contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol/CountersUpgradeable.dbg.json delete mode 100644 contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol/CountersUpgradeable.json delete mode 100644 contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol/StorageSlotUpgradeable.dbg.json delete mode 100644 contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol/StorageSlotUpgradeable.json delete mode 100644 contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol/ERC165Upgradeable.dbg.json delete mode 100644 contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol/ERC165Upgradeable.json delete mode 100644 contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol/IERC165Upgradeable.dbg.json delete mode 100644 contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol/IERC165Upgradeable.json delete mode 100644 contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/math/MathUpgradeable.sol/MathUpgradeable.dbg.json delete mode 100644 contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/math/MathUpgradeable.sol/MathUpgradeable.json delete mode 100644 contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol/SafeCastUpgradeable.dbg.json delete mode 100644 contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol/SafeCastUpgradeable.json delete mode 100644 contracts/artifacts/@openzeppelin/contracts/interfaces/IERC1967.sol/IERC1967.dbg.json delete mode 100644 contracts/artifacts/@openzeppelin/contracts/interfaces/IERC1967.sol/IERC1967.json delete mode 100644 contracts/artifacts/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/IERC1822Proxiable.dbg.json delete mode 100644 contracts/artifacts/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/IERC1822Proxiable.json delete mode 100644 contracts/artifacts/@openzeppelin/contracts/proxy/Clones.sol/Clones.dbg.json delete mode 100644 contracts/artifacts/@openzeppelin/contracts/proxy/Clones.sol/Clones.json delete mode 100644 contracts/artifacts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol/ERC1967Proxy.dbg.json delete mode 100644 contracts/artifacts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol/ERC1967Proxy.json delete mode 100644 contracts/artifacts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol/ERC1967Upgrade.dbg.json delete mode 100644 contracts/artifacts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol/ERC1967Upgrade.json delete mode 100644 contracts/artifacts/@openzeppelin/contracts/proxy/Proxy.sol/Proxy.dbg.json delete mode 100644 contracts/artifacts/@openzeppelin/contracts/proxy/Proxy.sol/Proxy.json delete mode 100644 contracts/artifacts/@openzeppelin/contracts/proxy/beacon/IBeacon.sol/IBeacon.dbg.json delete mode 100644 contracts/artifacts/@openzeppelin/contracts/proxy/beacon/IBeacon.sol/IBeacon.json delete mode 100644 contracts/artifacts/@openzeppelin/contracts/token/ERC1155/ERC1155.sol/ERC1155.dbg.json delete mode 100644 contracts/artifacts/@openzeppelin/contracts/token/ERC1155/ERC1155.sol/ERC1155.json delete mode 100644 contracts/artifacts/@openzeppelin/contracts/token/ERC1155/IERC1155.sol/IERC1155.dbg.json delete mode 100644 contracts/artifacts/@openzeppelin/contracts/token/ERC1155/IERC1155.sol/IERC1155.json delete mode 100644 contracts/artifacts/@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol/IERC1155Receiver.dbg.json delete mode 100644 contracts/artifacts/@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol/IERC1155Receiver.json delete mode 100644 contracts/artifacts/@openzeppelin/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol/IERC1155MetadataURI.dbg.json delete mode 100644 contracts/artifacts/@openzeppelin/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol/IERC1155MetadataURI.json delete mode 100644 contracts/artifacts/@openzeppelin/contracts/token/ERC20/ERC20.sol/ERC20.dbg.json delete mode 100644 contracts/artifacts/@openzeppelin/contracts/token/ERC20/ERC20.sol/ERC20.json delete mode 100644 contracts/artifacts/@openzeppelin/contracts/token/ERC20/IERC20.sol/IERC20.dbg.json delete mode 100644 contracts/artifacts/@openzeppelin/contracts/token/ERC20/IERC20.sol/IERC20.json delete mode 100644 contracts/artifacts/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol/IERC20Metadata.dbg.json delete mode 100644 contracts/artifacts/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol/IERC20Metadata.json delete mode 100644 contracts/artifacts/@openzeppelin/contracts/token/ERC721/ERC721.sol/ERC721.dbg.json delete mode 100644 contracts/artifacts/@openzeppelin/contracts/token/ERC721/ERC721.sol/ERC721.json delete mode 100644 contracts/artifacts/@openzeppelin/contracts/token/ERC721/IERC721.sol/IERC721.dbg.json delete mode 100644 contracts/artifacts/@openzeppelin/contracts/token/ERC721/IERC721.sol/IERC721.json delete mode 100644 contracts/artifacts/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol/IERC721Receiver.dbg.json delete mode 100644 contracts/artifacts/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol/IERC721Receiver.json delete mode 100644 contracts/artifacts/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol/IERC721Metadata.dbg.json delete mode 100644 contracts/artifacts/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol/IERC721Metadata.json delete mode 100644 contracts/artifacts/@openzeppelin/contracts/utils/Address.sol/Address.dbg.json delete mode 100644 contracts/artifacts/@openzeppelin/contracts/utils/Address.sol/Address.json delete mode 100644 contracts/artifacts/@openzeppelin/contracts/utils/Context.sol/Context.dbg.json delete mode 100644 contracts/artifacts/@openzeppelin/contracts/utils/Context.sol/Context.json delete mode 100644 contracts/artifacts/@openzeppelin/contracts/utils/Counters.sol/Counters.dbg.json delete mode 100644 contracts/artifacts/@openzeppelin/contracts/utils/Counters.sol/Counters.json delete mode 100644 contracts/artifacts/@openzeppelin/contracts/utils/StorageSlot.sol/StorageSlot.dbg.json delete mode 100644 contracts/artifacts/@openzeppelin/contracts/utils/StorageSlot.sol/StorageSlot.json delete mode 100644 contracts/artifacts/@openzeppelin/contracts/utils/Strings.sol/Strings.dbg.json delete mode 100644 contracts/artifacts/@openzeppelin/contracts/utils/Strings.sol/Strings.json delete mode 100644 contracts/artifacts/@openzeppelin/contracts/utils/introspection/ERC165.sol/ERC165.dbg.json delete mode 100644 contracts/artifacts/@openzeppelin/contracts/utils/introspection/ERC165.sol/ERC165.json delete mode 100644 contracts/artifacts/@openzeppelin/contracts/utils/introspection/IERC165.sol/IERC165.dbg.json delete mode 100644 contracts/artifacts/@openzeppelin/contracts/utils/introspection/IERC165.sol/IERC165.json delete mode 100644 contracts/artifacts/@openzeppelin/contracts/utils/math/Math.sol/Math.dbg.json delete mode 100644 contracts/artifacts/@openzeppelin/contracts/utils/math/Math.sol/Math.json delete mode 100644 contracts/artifacts/@openzeppelin/contracts/utils/math/SignedMath.sol/SignedMath.dbg.json delete mode 100644 contracts/artifacts/@openzeppelin/contracts/utils/math/SignedMath.sol/SignedMath.json delete mode 100644 contracts/artifacts/build-info/58fb59cc656bfddaae1de55a017c315b.json delete mode 100644 contracts/artifacts/build-info/9ac591806bb2e846e5a60f79d635058e.json delete mode 100644 contracts/artifacts/src/dao/IDAO.sol/IDAO.dbg.json delete mode 100644 contracts/artifacts/src/dao/IDAO.sol/IDAO.json delete mode 100644 contracts/artifacts/src/mocks/dao/DAOMock.sol/DAOMock.dbg.json delete mode 100644 contracts/artifacts/src/mocks/dao/DAOMock.sol/DAOMock.json delete mode 100644 contracts/artifacts/src/mocks/permission/auth/DaoAuthorizableMock.sol/DaoAuthorizableMock.dbg.json delete mode 100644 contracts/artifacts/src/mocks/permission/auth/DaoAuthorizableMock.sol/DaoAuthorizableMock.json delete mode 100644 contracts/artifacts/src/mocks/permission/auth/DaoAuthorizableUpgradeableMock.sol/DaoAuthorizableUpgradeableMock.dbg.json delete mode 100644 contracts/artifacts/src/mocks/permission/auth/DaoAuthorizableUpgradeableMock.sol/DaoAuthorizableUpgradeableMock.json delete mode 100644 contracts/artifacts/src/mocks/permission/condition/PermissionConditionMock.sol/PermissionConditionMock.dbg.json delete mode 100644 contracts/artifacts/src/mocks/permission/condition/PermissionConditionMock.sol/PermissionConditionMock.json delete mode 100644 contracts/artifacts/src/mocks/permission/condition/PermissionConditionUpgradeableMock.sol/PermissionConditionUpgradeableMock.dbg.json delete mode 100644 contracts/artifacts/src/mocks/permission/condition/PermissionConditionUpgradeableMock.sol/PermissionConditionUpgradeableMock.json delete mode 100644 contracts/artifacts/src/mocks/plugin/PluginCloneableMock.sol/PluginCloneableMockBad.dbg.json delete mode 100644 contracts/artifacts/src/mocks/plugin/PluginCloneableMock.sol/PluginCloneableMockBad.json delete mode 100644 contracts/artifacts/src/mocks/plugin/PluginCloneableMock.sol/PluginCloneableMockBuild1.dbg.json delete mode 100644 contracts/artifacts/src/mocks/plugin/PluginCloneableMock.sol/PluginCloneableMockBuild1.json delete mode 100644 contracts/artifacts/src/mocks/plugin/PluginCloneableMock.sol/PluginCloneableMockBuild2.dbg.json delete mode 100644 contracts/artifacts/src/mocks/plugin/PluginCloneableMock.sol/PluginCloneableMockBuild2.json delete mode 100644 contracts/artifacts/src/mocks/plugin/PluginCloneableSetupMock.sol/PluginCloneableSetupMockBuild1.dbg.json delete mode 100644 contracts/artifacts/src/mocks/plugin/PluginCloneableSetupMock.sol/PluginCloneableSetupMockBuild1.json delete mode 100644 contracts/artifacts/src/mocks/plugin/PluginCloneableSetupMock.sol/PluginCloneableSetupMockBuild2.dbg.json delete mode 100644 contracts/artifacts/src/mocks/plugin/PluginCloneableSetupMock.sol/PluginCloneableSetupMockBuild2.json delete mode 100644 contracts/artifacts/src/mocks/plugin/PluginMock.sol/PluginMockBuild1.dbg.json delete mode 100644 contracts/artifacts/src/mocks/plugin/PluginMock.sol/PluginMockBuild1.json delete mode 100644 contracts/artifacts/src/mocks/plugin/PluginSetupMock.sol/PluginSetupMockBuild1.dbg.json delete mode 100644 contracts/artifacts/src/mocks/plugin/PluginSetupMock.sol/PluginSetupMockBuild1.json delete mode 100644 contracts/artifacts/src/mocks/plugin/PluginUUPSUpgradeableMock.sol/PluginUUPSUpgradeableMockBad.dbg.json delete mode 100644 contracts/artifacts/src/mocks/plugin/PluginUUPSUpgradeableMock.sol/PluginUUPSUpgradeableMockBad.json delete mode 100644 contracts/artifacts/src/mocks/plugin/PluginUUPSUpgradeableMock.sol/PluginUUPSUpgradeableMockBuild1.dbg.json delete mode 100644 contracts/artifacts/src/mocks/plugin/PluginUUPSUpgradeableMock.sol/PluginUUPSUpgradeableMockBuild1.json delete mode 100644 contracts/artifacts/src/mocks/plugin/PluginUUPSUpgradeableMock.sol/PluginUUPSUpgradeableMockBuild2.dbg.json delete mode 100644 contracts/artifacts/src/mocks/plugin/PluginUUPSUpgradeableMock.sol/PluginUUPSUpgradeableMockBuild2.json delete mode 100644 contracts/artifacts/src/mocks/plugin/PluginUUPSUpgradeableMock.sol/PluginUUPSUpgradeableMockBuild3.dbg.json delete mode 100644 contracts/artifacts/src/mocks/plugin/PluginUUPSUpgradeableMock.sol/PluginUUPSUpgradeableMockBuild3.json delete mode 100644 contracts/artifacts/src/mocks/plugin/PluginUUPSUpgradeableSetupMock.sol/PluginUUPSUpgradeableSetupMockBuild1.dbg.json delete mode 100644 contracts/artifacts/src/mocks/plugin/PluginUUPSUpgradeableSetupMock.sol/PluginUUPSUpgradeableSetupMockBuild1.json delete mode 100644 contracts/artifacts/src/mocks/plugin/PluginUUPSUpgradeableSetupMock.sol/PluginUUPSUpgradeableSetupMockBuild2.dbg.json delete mode 100644 contracts/artifacts/src/mocks/plugin/PluginUUPSUpgradeableSetupMock.sol/PluginUUPSUpgradeableSetupMockBuild2.json delete mode 100644 contracts/artifacts/src/mocks/plugin/PluginUUPSUpgradeableSetupMock.sol/PluginUUPSUpgradeableSetupMockBuild3.dbg.json delete mode 100644 contracts/artifacts/src/mocks/plugin/PluginUUPSUpgradeableSetupMock.sol/PluginUUPSUpgradeableSetupMockBuild3.json delete mode 100644 contracts/artifacts/src/mocks/plugin/extensions/governance/AddresslistMock.sol/AddresslistMock.dbg.json delete mode 100644 contracts/artifacts/src/mocks/plugin/extensions/governance/AddresslistMock.sol/AddresslistMock.json delete mode 100644 contracts/artifacts/src/mocks/token/ERC1155Mock.sol/ERC1155Mock.dbg.json delete mode 100644 contracts/artifacts/src/mocks/token/ERC1155Mock.sol/ERC1155Mock.json delete mode 100644 contracts/artifacts/src/mocks/token/ERC20Mock.sol/ERC20Mock.dbg.json delete mode 100644 contracts/artifacts/src/mocks/token/ERC20Mock.sol/ERC20Mock.json delete mode 100644 contracts/artifacts/src/mocks/token/ERC721Mock.sol/ERC721Mock.dbg.json delete mode 100644 contracts/artifacts/src/mocks/token/ERC721Mock.sol/ERC721Mock.json delete mode 100644 contracts/artifacts/src/mocks/utils/math/BitmapMock.sol/BitmapMock.dbg.json delete mode 100644 contracts/artifacts/src/mocks/utils/math/BitmapMock.sol/BitmapMock.json delete mode 100644 contracts/artifacts/src/mocks/utils/math/RatioMock.sol/RatioMock.dbg.json delete mode 100644 contracts/artifacts/src/mocks/utils/math/RatioMock.sol/RatioMock.json delete mode 100644 contracts/artifacts/src/mocks/utils/versioning/ProtocolVersionMock.sol/ProtocolVersionMock.dbg.json delete mode 100644 contracts/artifacts/src/mocks/utils/versioning/ProtocolVersionMock.sol/ProtocolVersionMock.json delete mode 100644 contracts/artifacts/src/mocks/utils/versioning/VersionComparisonLibMock.sol/VersionComparisonLibMock.dbg.json delete mode 100644 contracts/artifacts/src/mocks/utils/versioning/VersionComparisonLibMock.sol/VersionComparisonLibMock.json delete mode 100644 contracts/artifacts/src/permission/PermissionLib.sol/PermissionLib.dbg.json delete mode 100644 contracts/artifacts/src/permission/PermissionLib.sol/PermissionLib.json delete mode 100644 contracts/artifacts/src/permission/auth/DaoAuthorizable.sol/DaoAuthorizable.dbg.json delete mode 100644 contracts/artifacts/src/permission/auth/DaoAuthorizable.sol/DaoAuthorizable.json delete mode 100644 contracts/artifacts/src/permission/auth/DaoAuthorizableUpgradeable.sol/DaoAuthorizableUpgradeable.dbg.json delete mode 100644 contracts/artifacts/src/permission/auth/DaoAuthorizableUpgradeable.sol/DaoAuthorizableUpgradeable.json delete mode 100644 contracts/artifacts/src/permission/condition/IPermissionCondition.sol/IPermissionCondition.dbg.json delete mode 100644 contracts/artifacts/src/permission/condition/IPermissionCondition.sol/IPermissionCondition.json delete mode 100644 contracts/artifacts/src/permission/condition/PermissionCondition.sol/PermissionCondition.dbg.json delete mode 100644 contracts/artifacts/src/permission/condition/PermissionCondition.sol/PermissionCondition.json delete mode 100644 contracts/artifacts/src/permission/condition/PermissionConditionUpgradeable.sol/PermissionConditionUpgradeable.dbg.json delete mode 100644 contracts/artifacts/src/permission/condition/PermissionConditionUpgradeable.sol/PermissionConditionUpgradeable.json delete mode 100644 contracts/artifacts/src/plugin/IPlugin.sol/IPlugin.dbg.json delete mode 100644 contracts/artifacts/src/plugin/IPlugin.sol/IPlugin.json delete mode 100644 contracts/artifacts/src/plugin/Plugin.sol/Plugin.dbg.json delete mode 100644 contracts/artifacts/src/plugin/Plugin.sol/Plugin.json delete mode 100644 contracts/artifacts/src/plugin/PluginCloneable.sol/PluginCloneable.dbg.json delete mode 100644 contracts/artifacts/src/plugin/PluginCloneable.sol/PluginCloneable.json delete mode 100644 contracts/artifacts/src/plugin/PluginUUPSUpgradeable.sol/PluginUUPSUpgradeable.dbg.json delete mode 100644 contracts/artifacts/src/plugin/PluginUUPSUpgradeable.sol/PluginUUPSUpgradeable.json delete mode 100644 contracts/artifacts/src/plugin/extensions/governance/Addresslist.sol/Addresslist.dbg.json delete mode 100644 contracts/artifacts/src/plugin/extensions/governance/Addresslist.sol/Addresslist.json delete mode 100644 contracts/artifacts/src/plugin/extensions/membership/IMembership.sol/IMembership.dbg.json delete mode 100644 contracts/artifacts/src/plugin/extensions/membership/IMembership.sol/IMembership.json delete mode 100644 contracts/artifacts/src/plugin/extensions/proposal/IProposal.sol/IProposal.dbg.json delete mode 100644 contracts/artifacts/src/plugin/extensions/proposal/IProposal.sol/IProposal.json delete mode 100644 contracts/artifacts/src/plugin/extensions/proposal/Proposal.sol/Proposal.dbg.json delete mode 100644 contracts/artifacts/src/plugin/extensions/proposal/Proposal.sol/Proposal.json delete mode 100644 contracts/artifacts/src/plugin/extensions/proposal/ProposalUpgradeable.sol/ProposalUpgradeable.dbg.json delete mode 100644 contracts/artifacts/src/plugin/extensions/proposal/ProposalUpgradeable.sol/ProposalUpgradeable.json delete mode 100644 contracts/artifacts/src/plugin/setup/IPluginSetup.sol/IPluginSetup.dbg.json delete mode 100644 contracts/artifacts/src/plugin/setup/IPluginSetup.sol/IPluginSetup.json delete mode 100644 contracts/artifacts/src/plugin/setup/PluginSetup.sol/PluginSetup.dbg.json delete mode 100644 contracts/artifacts/src/plugin/setup/PluginSetup.sol/PluginSetup.json delete mode 100644 contracts/artifacts/src/plugin/setup/PluginUpgradeableSetup.sol/PluginUpgradeableSetup.dbg.json delete mode 100644 contracts/artifacts/src/plugin/setup/PluginUpgradeableSetup.sol/PluginUpgradeableSetup.json delete mode 100644 contracts/artifacts/src/utils/deployment/ProxyFactory.sol/ProxyFactory.dbg.json delete mode 100644 contracts/artifacts/src/utils/deployment/ProxyFactory.sol/ProxyFactory.json delete mode 100644 contracts/artifacts/src/utils/deployment/ProxyLib.sol/ProxyLib.dbg.json delete mode 100644 contracts/artifacts/src/utils/deployment/ProxyLib.sol/ProxyLib.json delete mode 100644 contracts/artifacts/src/utils/versioning/IProtocolVersion.sol/IProtocolVersion.dbg.json delete mode 100644 contracts/artifacts/src/utils/versioning/IProtocolVersion.sol/IProtocolVersion.json delete mode 100644 contracts/artifacts/src/utils/versioning/ProtocolVersion.sol/ProtocolVersion.dbg.json delete mode 100644 contracts/artifacts/src/utils/versioning/ProtocolVersion.sol/ProtocolVersion.json delete mode 100644 contracts/artifacts/src/utils/versioning/VersionComparisonLib.sol/VersionComparisonLib.dbg.json delete mode 100644 contracts/artifacts/src/utils/versioning/VersionComparisonLib.sol/VersionComparisonLib.json diff --git a/.gitignore b/.gitignore index b9ff0afd..2c3cd5ab 100644 --- a/.gitignore +++ b/.gitignore @@ -19,6 +19,10 @@ dist-ssr .cache typechain +contracts/artifacts +contracts/cache + + # misc .DS_Store *.pem diff --git a/contracts/artifacts/@openzeppelin/contracts-upgradeable/interfaces/IERC1967Upgradeable.sol/IERC1967Upgradeable.dbg.json b/contracts/artifacts/@openzeppelin/contracts-upgradeable/interfaces/IERC1967Upgradeable.sol/IERC1967Upgradeable.dbg.json deleted file mode 100644 index 4058cb44..00000000 --- a/contracts/artifacts/@openzeppelin/contracts-upgradeable/interfaces/IERC1967Upgradeable.sol/IERC1967Upgradeable.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" -} diff --git a/contracts/artifacts/@openzeppelin/contracts-upgradeable/interfaces/IERC1967Upgradeable.sol/IERC1967Upgradeable.json b/contracts/artifacts/@openzeppelin/contracts-upgradeable/interfaces/IERC1967Upgradeable.sol/IERC1967Upgradeable.json deleted file mode 100644 index 1d763411..00000000 --- a/contracts/artifacts/@openzeppelin/contracts-upgradeable/interfaces/IERC1967Upgradeable.sol/IERC1967Upgradeable.json +++ /dev/null @@ -1,56 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "IERC1967Upgradeable", - "sourceName": "@openzeppelin/contracts-upgradeable/interfaces/IERC1967Upgradeable.sol", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "previousAdmin", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "AdminChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "beacon", - "type": "address" - } - ], - "name": "BeaconUpgraded", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - } - ], - "bytecode": "0x", - "deployedBytecode": "0x", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/contracts/artifacts/@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol/IERC1822ProxiableUpgradeable.dbg.json b/contracts/artifacts/@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol/IERC1822ProxiableUpgradeable.dbg.json deleted file mode 100644 index 4058cb44..00000000 --- a/contracts/artifacts/@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol/IERC1822ProxiableUpgradeable.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" -} diff --git a/contracts/artifacts/@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol/IERC1822ProxiableUpgradeable.json b/contracts/artifacts/@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol/IERC1822ProxiableUpgradeable.json deleted file mode 100644 index fc506349..00000000 --- a/contracts/artifacts/@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol/IERC1822ProxiableUpgradeable.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "IERC1822ProxiableUpgradeable", - "sourceName": "@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol", - "abi": [ - { - "inputs": [], - "name": "proxiableUUID", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - } - ], - "bytecode": "0x", - "deployedBytecode": "0x", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/contracts/artifacts/@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol/ERC1967UpgradeUpgradeable.dbg.json b/contracts/artifacts/@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol/ERC1967UpgradeUpgradeable.dbg.json deleted file mode 100644 index b8d2318f..00000000 --- a/contracts/artifacts/@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol/ERC1967UpgradeUpgradeable.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" -} diff --git a/contracts/artifacts/@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol/ERC1967UpgradeUpgradeable.json b/contracts/artifacts/@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol/ERC1967UpgradeUpgradeable.json deleted file mode 100644 index 99f87335..00000000 --- a/contracts/artifacts/@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol/ERC1967UpgradeUpgradeable.json +++ /dev/null @@ -1,69 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "ERC1967UpgradeUpgradeable", - "sourceName": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "previousAdmin", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "AdminChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "beacon", - "type": "address" - } - ], - "name": "BeaconUpgraded", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint8", - "name": "version", - "type": "uint8" - } - ], - "name": "Initialized", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - } - ], - "bytecode": "0x", - "deployedBytecode": "0x", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/contracts/artifacts/@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.sol/IBeaconUpgradeable.dbg.json b/contracts/artifacts/@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.sol/IBeaconUpgradeable.dbg.json deleted file mode 100644 index b8d2318f..00000000 --- a/contracts/artifacts/@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.sol/IBeaconUpgradeable.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" -} diff --git a/contracts/artifacts/@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.sol/IBeaconUpgradeable.json b/contracts/artifacts/@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.sol/IBeaconUpgradeable.json deleted file mode 100644 index 1c51ed2f..00000000 --- a/contracts/artifacts/@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.sol/IBeaconUpgradeable.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "IBeaconUpgradeable", - "sourceName": "@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.sol", - "abi": [ - { - "inputs": [], - "name": "implementation", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - } - ], - "bytecode": "0x", - "deployedBytecode": "0x", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/contracts/artifacts/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol/Initializable.dbg.json b/contracts/artifacts/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol/Initializable.dbg.json deleted file mode 100644 index b8d2318f..00000000 --- a/contracts/artifacts/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol/Initializable.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" -} diff --git a/contracts/artifacts/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol/Initializable.json b/contracts/artifacts/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol/Initializable.json deleted file mode 100644 index 4b29c723..00000000 --- a/contracts/artifacts/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol/Initializable.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "Initializable", - "sourceName": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint8", - "name": "version", - "type": "uint8" - } - ], - "name": "Initialized", - "type": "event" - } - ], - "bytecode": "0x", - "deployedBytecode": "0x", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/contracts/artifacts/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol/UUPSUpgradeable.dbg.json b/contracts/artifacts/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol/UUPSUpgradeable.dbg.json deleted file mode 100644 index b8d2318f..00000000 --- a/contracts/artifacts/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol/UUPSUpgradeable.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" -} diff --git a/contracts/artifacts/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol/UUPSUpgradeable.json b/contracts/artifacts/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol/UUPSUpgradeable.json deleted file mode 100644 index 414ef083..00000000 --- a/contracts/artifacts/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol/UUPSUpgradeable.json +++ /dev/null @@ -1,113 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "UUPSUpgradeable", - "sourceName": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "previousAdmin", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "AdminChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "beacon", - "type": "address" - } - ], - "name": "BeaconUpgraded", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint8", - "name": "version", - "type": "uint8" - } - ], - "name": "Initialized", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - }, - { - "inputs": [], - "name": "proxiableUUID", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - } - ], - "name": "upgradeTo", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "upgradeToAndCall", - "outputs": [], - "stateMutability": "payable", - "type": "function" - } - ], - "bytecode": "0x", - "deployedBytecode": "0x", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol/AddressUpgradeable.dbg.json b/contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol/AddressUpgradeable.dbg.json deleted file mode 100644 index 4058cb44..00000000 --- a/contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol/AddressUpgradeable.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" -} diff --git a/contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol/AddressUpgradeable.json b/contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol/AddressUpgradeable.json deleted file mode 100644 index 87a75b56..00000000 --- a/contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol/AddressUpgradeable.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "AddressUpgradeable", - "sourceName": "@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", - "abi": [], - "bytecode": "0x602d6037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a", - "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/CheckpointsUpgradeable.sol/CheckpointsUpgradeable.dbg.json b/contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/CheckpointsUpgradeable.sol/CheckpointsUpgradeable.dbg.json deleted file mode 100644 index 4058cb44..00000000 --- a/contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/CheckpointsUpgradeable.sol/CheckpointsUpgradeable.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" -} diff --git a/contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/CheckpointsUpgradeable.sol/CheckpointsUpgradeable.json b/contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/CheckpointsUpgradeable.sol/CheckpointsUpgradeable.json deleted file mode 100644 index 63ee9146..00000000 --- a/contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/CheckpointsUpgradeable.sol/CheckpointsUpgradeable.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "CheckpointsUpgradeable", - "sourceName": "@openzeppelin/contracts-upgradeable/utils/CheckpointsUpgradeable.sol", - "abi": [], - "bytecode": "0x602d6037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a", - "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol/ContextUpgradeable.dbg.json b/contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol/ContextUpgradeable.dbg.json deleted file mode 100644 index 4058cb44..00000000 --- a/contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol/ContextUpgradeable.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" -} diff --git a/contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol/ContextUpgradeable.json b/contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol/ContextUpgradeable.json deleted file mode 100644 index e154d607..00000000 --- a/contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol/ContextUpgradeable.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "ContextUpgradeable", - "sourceName": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint8", - "name": "version", - "type": "uint8" - } - ], - "name": "Initialized", - "type": "event" - } - ], - "bytecode": "0x", - "deployedBytecode": "0x", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol/CountersUpgradeable.dbg.json b/contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol/CountersUpgradeable.dbg.json deleted file mode 100644 index 4058cb44..00000000 --- a/contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol/CountersUpgradeable.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" -} diff --git a/contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol/CountersUpgradeable.json b/contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol/CountersUpgradeable.json deleted file mode 100644 index 309924e7..00000000 --- a/contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol/CountersUpgradeable.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "CountersUpgradeable", - "sourceName": "@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol", - "abi": [], - "bytecode": "0x602d6037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a", - "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol/StorageSlotUpgradeable.dbg.json b/contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol/StorageSlotUpgradeable.dbg.json deleted file mode 100644 index 4058cb44..00000000 --- a/contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol/StorageSlotUpgradeable.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" -} diff --git a/contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol/StorageSlotUpgradeable.json b/contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol/StorageSlotUpgradeable.json deleted file mode 100644 index 902f6b70..00000000 --- a/contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol/StorageSlotUpgradeable.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "StorageSlotUpgradeable", - "sourceName": "@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol", - "abi": [], - "bytecode": "0x602d6037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a", - "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol/ERC165Upgradeable.dbg.json b/contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol/ERC165Upgradeable.dbg.json deleted file mode 100644 index b8d2318f..00000000 --- a/contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol/ERC165Upgradeable.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" -} diff --git a/contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol/ERC165Upgradeable.json b/contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol/ERC165Upgradeable.json deleted file mode 100644 index a3aa0c4b..00000000 --- a/contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol/ERC165Upgradeable.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "ERC165Upgradeable", - "sourceName": "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint8", - "name": "version", - "type": "uint8" - } - ], - "name": "Initialized", - "type": "event" - }, - { - "inputs": [ - { - "internalType": "bytes4", - "name": "interfaceId", - "type": "bytes4" - } - ], - "name": "supportsInterface", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - } - ], - "bytecode": "0x", - "deployedBytecode": "0x", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol/IERC165Upgradeable.dbg.json b/contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol/IERC165Upgradeable.dbg.json deleted file mode 100644 index b8d2318f..00000000 --- a/contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol/IERC165Upgradeable.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" -} diff --git a/contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol/IERC165Upgradeable.json b/contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol/IERC165Upgradeable.json deleted file mode 100644 index 938eb23b..00000000 --- a/contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol/IERC165Upgradeable.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "IERC165Upgradeable", - "sourceName": "@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol", - "abi": [ - { - "inputs": [ - { - "internalType": "bytes4", - "name": "interfaceId", - "type": "bytes4" - } - ], - "name": "supportsInterface", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - } - ], - "bytecode": "0x", - "deployedBytecode": "0x", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/math/MathUpgradeable.sol/MathUpgradeable.dbg.json b/contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/math/MathUpgradeable.sol/MathUpgradeable.dbg.json deleted file mode 100644 index b8d2318f..00000000 --- a/contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/math/MathUpgradeable.sol/MathUpgradeable.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" -} diff --git a/contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/math/MathUpgradeable.sol/MathUpgradeable.json b/contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/math/MathUpgradeable.sol/MathUpgradeable.json deleted file mode 100644 index a127e6af..00000000 --- a/contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/math/MathUpgradeable.sol/MathUpgradeable.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "MathUpgradeable", - "sourceName": "@openzeppelin/contracts-upgradeable/utils/math/MathUpgradeable.sol", - "abi": [], - "bytecode": "0x602d6037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a", - "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol/SafeCastUpgradeable.dbg.json b/contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol/SafeCastUpgradeable.dbg.json deleted file mode 100644 index b8d2318f..00000000 --- a/contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol/SafeCastUpgradeable.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" -} diff --git a/contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol/SafeCastUpgradeable.json b/contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol/SafeCastUpgradeable.json deleted file mode 100644 index 9b317692..00000000 --- a/contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol/SafeCastUpgradeable.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "SafeCastUpgradeable", - "sourceName": "@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", - "abi": [], - "bytecode": "0x602d6037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a", - "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/contracts/artifacts/@openzeppelin/contracts/interfaces/IERC1967.sol/IERC1967.dbg.json b/contracts/artifacts/@openzeppelin/contracts/interfaces/IERC1967.sol/IERC1967.dbg.json deleted file mode 100644 index 4058cb44..00000000 --- a/contracts/artifacts/@openzeppelin/contracts/interfaces/IERC1967.sol/IERC1967.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" -} diff --git a/contracts/artifacts/@openzeppelin/contracts/interfaces/IERC1967.sol/IERC1967.json b/contracts/artifacts/@openzeppelin/contracts/interfaces/IERC1967.sol/IERC1967.json deleted file mode 100644 index b37b2586..00000000 --- a/contracts/artifacts/@openzeppelin/contracts/interfaces/IERC1967.sol/IERC1967.json +++ /dev/null @@ -1,56 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "IERC1967", - "sourceName": "@openzeppelin/contracts/interfaces/IERC1967.sol", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "previousAdmin", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "AdminChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "beacon", - "type": "address" - } - ], - "name": "BeaconUpgraded", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - } - ], - "bytecode": "0x", - "deployedBytecode": "0x", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/contracts/artifacts/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/IERC1822Proxiable.dbg.json b/contracts/artifacts/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/IERC1822Proxiable.dbg.json deleted file mode 100644 index 4058cb44..00000000 --- a/contracts/artifacts/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/IERC1822Proxiable.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" -} diff --git a/contracts/artifacts/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/IERC1822Proxiable.json b/contracts/artifacts/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/IERC1822Proxiable.json deleted file mode 100644 index e9576bf3..00000000 --- a/contracts/artifacts/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/IERC1822Proxiable.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "IERC1822Proxiable", - "sourceName": "@openzeppelin/contracts/interfaces/draft-IERC1822.sol", - "abi": [ - { - "inputs": [], - "name": "proxiableUUID", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - } - ], - "bytecode": "0x", - "deployedBytecode": "0x", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/contracts/artifacts/@openzeppelin/contracts/proxy/Clones.sol/Clones.dbg.json b/contracts/artifacts/@openzeppelin/contracts/proxy/Clones.sol/Clones.dbg.json deleted file mode 100644 index 4058cb44..00000000 --- a/contracts/artifacts/@openzeppelin/contracts/proxy/Clones.sol/Clones.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" -} diff --git a/contracts/artifacts/@openzeppelin/contracts/proxy/Clones.sol/Clones.json b/contracts/artifacts/@openzeppelin/contracts/proxy/Clones.sol/Clones.json deleted file mode 100644 index 61b311f7..00000000 --- a/contracts/artifacts/@openzeppelin/contracts/proxy/Clones.sol/Clones.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "Clones", - "sourceName": "@openzeppelin/contracts/proxy/Clones.sol", - "abi": [], - "bytecode": "0x602d6037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a", - "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/contracts/artifacts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol/ERC1967Proxy.dbg.json b/contracts/artifacts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol/ERC1967Proxy.dbg.json deleted file mode 100644 index b8d2318f..00000000 --- a/contracts/artifacts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol/ERC1967Proxy.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" -} diff --git a/contracts/artifacts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol/ERC1967Proxy.json b/contracts/artifacts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol/ERC1967Proxy.json deleted file mode 100644 index 057a281b..00000000 --- a/contracts/artifacts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol/ERC1967Proxy.json +++ /dev/null @@ -1,80 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "ERC1967Proxy", - "sourceName": "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol", - "abi": [ - { - "inputs": [ - { - "internalType": "address", - "name": "_logic", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "stateMutability": "payable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "previousAdmin", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "AdminChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "beacon", - "type": "address" - } - ], - "name": "BeaconUpgraded", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - }, - { - "stateMutability": "payable", - "type": "fallback" - }, - { - "stateMutability": "payable", - "type": "receive" - } - ], - "bytecode": "0x60806040526040516106fe3803806106fe83398101604081905261002291610319565b61002e82826000610035565b5050610436565b61003e8361006b565b60008251118061004b5750805b156100665761006483836100ab60201b6100291760201c565b505b505050565b610074816100d7565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606100d083836040518060600160405280602781526020016106d7602791396101a9565b9392505050565b6100ea8161022260201b6100551760201c565b6101515760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b806101887f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61023160201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6060600080856001600160a01b0316856040516101c691906103e7565b600060405180830381855af49150503d8060008114610201576040519150601f19603f3d011682016040523d82523d6000602084013e610206565b606091505b50909250905061021886838387610234565b9695505050505050565b6001600160a01b03163b151590565b90565b606083156102a357825160000361029c576001600160a01b0385163b61029c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610148565b50816102ad565b6102ad83836102b5565b949350505050565b8151156102c55781518083602001fd5b8060405162461bcd60e51b81526004016101489190610403565b634e487b7160e01b600052604160045260246000fd5b60005b838110156103105781810151838201526020016102f8565b50506000910152565b6000806040838503121561032c57600080fd5b82516001600160a01b038116811461034357600080fd5b60208401519092506001600160401b038082111561036057600080fd5b818501915085601f83011261037457600080fd5b815181811115610386576103866102df565b604051601f8201601f19908116603f011681019083821181831017156103ae576103ae6102df565b816040528281528860208487010111156103c757600080fd5b6103d88360208301602088016102f5565b80955050505050509250929050565b600082516103f98184602087016102f5565b9190910192915050565b60208152600082518060208401526104228160408501602087016102f5565b601f01601f19169190910160400192915050565b610292806104456000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b61009f565b565b606061004e838360405180606001604052806027815260200161025f602791396100c3565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e8080156100be573d6000f35b3d6000fd5b6060600080856001600160a01b0316856040516100e0919061020f565b600060405180830381855af49150503d806000811461011b576040519150601f19603f3d011682016040523d82523d6000602084013e610120565b606091505b50915091506101318683838761013b565b9695505050505050565b606083156101af5782516000036101a8576001600160a01b0385163b6101a85760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b50816101b9565b6101b983836101c1565b949350505050565b8151156101d15781518083602001fd5b8060405162461bcd60e51b815260040161019f919061022b565b60005b838110156102065781810151838201526020016101ee565b50506000910152565b600082516102218184602087016101eb565b9190910192915050565b602081526000825180602084015261024a8160408501602087016101eb565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564", - "deployedBytecode": "0x60806040523661001357610011610017565b005b6100115b610027610022610067565b61009f565b565b606061004e838360405180606001604052806027815260200161025f602791396100c3565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e8080156100be573d6000f35b3d6000fd5b6060600080856001600160a01b0316856040516100e0919061020f565b600060405180830381855af49150503d806000811461011b576040519150601f19603f3d011682016040523d82523d6000602084013e610120565b606091505b50915091506101318683838761013b565b9695505050505050565b606083156101af5782516000036101a8576001600160a01b0385163b6101a85760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b50816101b9565b6101b983836101c1565b949350505050565b8151156101d15781518083602001fd5b8060405162461bcd60e51b815260040161019f919061022b565b60005b838110156102065781810151838201526020016101ee565b50506000910152565b600082516102218184602087016101eb565b9190910192915050565b602081526000825180602084015261024a8160408501602087016101eb565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/contracts/artifacts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol/ERC1967Upgrade.dbg.json b/contracts/artifacts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol/ERC1967Upgrade.dbg.json deleted file mode 100644 index b8d2318f..00000000 --- a/contracts/artifacts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol/ERC1967Upgrade.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" -} diff --git a/contracts/artifacts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol/ERC1967Upgrade.json b/contracts/artifacts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol/ERC1967Upgrade.json deleted file mode 100644 index 11a1efea..00000000 --- a/contracts/artifacts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol/ERC1967Upgrade.json +++ /dev/null @@ -1,56 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "ERC1967Upgrade", - "sourceName": "@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "previousAdmin", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "AdminChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "beacon", - "type": "address" - } - ], - "name": "BeaconUpgraded", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - } - ], - "bytecode": "0x", - "deployedBytecode": "0x", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/contracts/artifacts/@openzeppelin/contracts/proxy/Proxy.sol/Proxy.dbg.json b/contracts/artifacts/@openzeppelin/contracts/proxy/Proxy.sol/Proxy.dbg.json deleted file mode 100644 index 4058cb44..00000000 --- a/contracts/artifacts/@openzeppelin/contracts/proxy/Proxy.sol/Proxy.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" -} diff --git a/contracts/artifacts/@openzeppelin/contracts/proxy/Proxy.sol/Proxy.json b/contracts/artifacts/@openzeppelin/contracts/proxy/Proxy.sol/Proxy.json deleted file mode 100644 index 89b7ade9..00000000 --- a/contracts/artifacts/@openzeppelin/contracts/proxy/Proxy.sol/Proxy.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "Proxy", - "sourceName": "@openzeppelin/contracts/proxy/Proxy.sol", - "abi": [ - { - "stateMutability": "payable", - "type": "fallback" - }, - { - "stateMutability": "payable", - "type": "receive" - } - ], - "bytecode": "0x", - "deployedBytecode": "0x", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/contracts/artifacts/@openzeppelin/contracts/proxy/beacon/IBeacon.sol/IBeacon.dbg.json b/contracts/artifacts/@openzeppelin/contracts/proxy/beacon/IBeacon.sol/IBeacon.dbg.json deleted file mode 100644 index b8d2318f..00000000 --- a/contracts/artifacts/@openzeppelin/contracts/proxy/beacon/IBeacon.sol/IBeacon.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" -} diff --git a/contracts/artifacts/@openzeppelin/contracts/proxy/beacon/IBeacon.sol/IBeacon.json b/contracts/artifacts/@openzeppelin/contracts/proxy/beacon/IBeacon.sol/IBeacon.json deleted file mode 100644 index 9ff0f137..00000000 --- a/contracts/artifacts/@openzeppelin/contracts/proxy/beacon/IBeacon.sol/IBeacon.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "IBeacon", - "sourceName": "@openzeppelin/contracts/proxy/beacon/IBeacon.sol", - "abi": [ - { - "inputs": [], - "name": "implementation", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - } - ], - "bytecode": "0x", - "deployedBytecode": "0x", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/contracts/artifacts/@openzeppelin/contracts/token/ERC1155/ERC1155.sol/ERC1155.dbg.json b/contracts/artifacts/@openzeppelin/contracts/token/ERC1155/ERC1155.sol/ERC1155.dbg.json deleted file mode 100644 index b8d2318f..00000000 --- a/contracts/artifacts/@openzeppelin/contracts/token/ERC1155/ERC1155.sol/ERC1155.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" -} diff --git a/contracts/artifacts/@openzeppelin/contracts/token/ERC1155/ERC1155.sol/ERC1155.json b/contracts/artifacts/@openzeppelin/contracts/token/ERC1155/ERC1155.sol/ERC1155.json deleted file mode 100644 index 22aceccd..00000000 --- a/contracts/artifacts/@openzeppelin/contracts/token/ERC1155/ERC1155.sol/ERC1155.json +++ /dev/null @@ -1,334 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "ERC1155", - "sourceName": "@openzeppelin/contracts/token/ERC1155/ERC1155.sol", - "abi": [ - { - "inputs": [ - { - "internalType": "string", - "name": "uri_", - "type": "string" - } - ], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "account", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "operator", - "type": "address" - }, - { - "indexed": false, - "internalType": "bool", - "name": "approved", - "type": "bool" - } - ], - "name": "ApprovalForAll", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "operator", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256[]", - "name": "ids", - "type": "uint256[]" - }, - { - "indexed": false, - "internalType": "uint256[]", - "name": "values", - "type": "uint256[]" - } - ], - "name": "TransferBatch", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "operator", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "id", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "TransferSingle", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "string", - "name": "value", - "type": "string" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "id", - "type": "uint256" - } - ], - "name": "URI", - "type": "event" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "account", - "type": "address" - }, - { - "internalType": "uint256", - "name": "id", - "type": "uint256" - } - ], - "name": "balanceOf", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address[]", - "name": "accounts", - "type": "address[]" - }, - { - "internalType": "uint256[]", - "name": "ids", - "type": "uint256[]" - } - ], - "name": "balanceOfBatch", - "outputs": [ - { - "internalType": "uint256[]", - "name": "", - "type": "uint256[]" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "account", - "type": "address" - }, - { - "internalType": "address", - "name": "operator", - "type": "address" - } - ], - "name": "isApprovedForAll", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256[]", - "name": "ids", - "type": "uint256[]" - }, - { - "internalType": "uint256[]", - "name": "amounts", - "type": "uint256[]" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "safeBatchTransferFrom", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "id", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "safeTransferFrom", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "operator", - "type": "address" - }, - { - "internalType": "bool", - "name": "approved", - "type": "bool" - } - ], - "name": "setApprovalForAll", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes4", - "name": "interfaceId", - "type": "bytes4" - } - ], - "name": "supportsInterface", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "uri", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "view", - "type": "function" - } - ], - "bytecode": "0x60806040523480156200001157600080fd5b50604051620017463803806200174683398101604081905262000034916200006e565b6200003f8162000046565b506200029e565b6002620000548282620001d2565b5050565b634e487b7160e01b600052604160045260246000fd5b600060208083850312156200008257600080fd5b82516001600160401b03808211156200009a57600080fd5b818501915085601f830112620000af57600080fd5b815181811115620000c457620000c462000058565b604051601f8201601f19908116603f01168101908382118183101715620000ef57620000ef62000058565b8160405282815288868487010111156200010857600080fd5b600093505b828410156200012c57848401860151818501870152928501926200010d565b600086848301015280965050505050505092915050565b600181811c908216806200015857607f821691505b6020821081036200017957634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620001cd57600081815260208120601f850160051c81016020861015620001a85750805b601f850160051c820191505b81811015620001c957828155600101620001b4565b5050505b505050565b81516001600160401b03811115620001ee57620001ee62000058565b6200020681620001ff845462000143565b846200017f565b602080601f8311600181146200023e5760008415620002255750858301515b600019600386901b1c1916600185901b178555620001c9565b600085815260208120601f198616915b828110156200026f578886015182559484019460019091019084016200024e565b50858210156200028e5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61149880620002ae6000396000f3fe608060405234801561001057600080fd5b50600436106100875760003560e01c80634e1273f41161005b5780634e1273f41461010a578063a22cb4651461012a578063e985e9c51461013d578063f242432a1461017957600080fd5b8062fdd58e1461008c57806301ffc9a7146100b25780630e89341c146100d55780632eb2c2d6146100f5575b600080fd5b61009f61009a366004610dab565b61018c565b6040519081526020015b60405180910390f35b6100c56100c0366004610dee565b610238565b60405190151581526020016100a9565b6100e86100e3366004610e12565b610288565b6040516100a99190610e71565b610108610103366004610fd0565b61031c565b005b61011d61011836600461107a565b6103af565b6040516100a99190611180565b610108610138366004611193565b6104ed565b6100c561014b3660046111cf565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205460ff1690565b610108610187366004611202565b6104fc565b60006001600160a01b03831661020f5760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201527f616c6964206f776e65720000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b506000818152602081815260408083206001600160a01b03861684529091529020545b92915050565b60006001600160e01b03198216636cdb3d1360e11b148061026957506001600160e01b031982166303a24d0760e21b145b8061023257506301ffc9a760e01b6001600160e01b0319831614610232565b60606002805461029790611267565b80601f01602080910402602001604051908101604052809291908181526020018280546102c390611267565b80156103105780601f106102e557610100808354040283529160200191610310565b820191906000526020600020905b8154815290600101906020018083116102f357829003601f168201915b50505050509050919050565b6001600160a01b0385163314806103385750610338853361014b565b61039b5760405162461bcd60e51b815260206004820152602e60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201526d195c881bdc88185c1c1c9bdd995960921b6064820152608401610206565b6103a88585858585610588565b5050505050565b606081518351146104285760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e67746860448201527f206d69736d6174636800000000000000000000000000000000000000000000006064820152608401610206565b6000835167ffffffffffffffff81111561044457610444610e84565b60405190808252806020026020018201604052801561046d578160200160208202803683370190505b50905060005b84518110156104e5576104b8858281518110610491576104916112a1565b60200260200101518583815181106104ab576104ab6112a1565b602002602001015161018c565b8282815181106104ca576104ca6112a1565b60209081029190910101526104de816112cd565b9050610473565b509392505050565b6104f83383836107fb565b5050565b6001600160a01b0385163314806105185750610518853361014b565b61057b5760405162461bcd60e51b815260206004820152602e60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201526d195c881bdc88185c1c1c9bdd995960921b6064820152608401610206565b6103a885858585856108ef565b81518351146105ff5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060448201527f6d69736d617463680000000000000000000000000000000000000000000000006064820152608401610206565b6001600160a01b0384166106635760405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b6064820152608401610206565b3360005b845181101561078d576000858281518110610684576106846112a1565b6020026020010151905060008583815181106106a2576106a26112a1565b602090810291909101810151600084815280835260408082206001600160a01b038e1683529093529190912054909150818110156107355760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201526939103a3930b739b332b960b11b6064820152608401610206565b6000838152602081815260408083206001600160a01b038e8116855292528083208585039055908b168252812080548492906107729084906112e6565b9250508190555050505080610786906112cd565b9050610667565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb87876040516107dd9291906112f9565b60405180910390a46107f3818787878787610a9a565b505050505050565b816001600160a01b0316836001600160a01b0316036108825760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c2073746174757360448201527f20666f722073656c6600000000000000000000000000000000000000000000006064820152608401610206565b6001600160a01b03838116600081815260016020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0384166109535760405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b6064820152608401610206565b33600061095f85610c48565b9050600061096c85610c48565b90506000868152602081815260408083206001600160a01b038c168452909152902054858110156109f25760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201526939103a3930b739b332b960b11b6064820152608401610206565b6000878152602081815260408083206001600160a01b038d8116855292528083208985039055908a16825281208054889290610a2f9084906112e6565b909155505060408051888152602081018890526001600160a01b03808b16928c821692918816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4610a8f848a8a8a8a8a610c93565b505050505050505050565b6001600160a01b0384163b156107f35760405163bc197c8160e01b81526001600160a01b0385169063bc197c8190610ade9089908990889088908890600401611327565b6020604051808303816000875af1925050508015610b19575060408051601f3d908101601f19168201909252610b1691810190611385565b60015b610bce57610b256113a2565b806308c379a003610b5e5750610b396113be565b80610b445750610b60565b8060405162461bcd60e51b81526004016102069190610e71565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e2d4552433131353560448201527f526563656976657220696d706c656d656e7465720000000000000000000000006064820152608401610206565b6001600160e01b0319811663bc197c8160e01b14610c3f5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a656374656044820152676420746f6b656e7360c01b6064820152608401610206565b50505050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110610c8257610c826112a1565b602090810291909101015292915050565b6001600160a01b0384163b156107f35760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e6190610cd79089908990889088908890600401611448565b6020604051808303816000875af1925050508015610d12575060408051601f3d908101601f19168201909252610d0f91810190611385565b60015b610d1e57610b256113a2565b6001600160e01b0319811663f23a6e6160e01b14610c3f5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a656374656044820152676420746f6b656e7360c01b6064820152608401610206565b80356001600160a01b0381168114610da657600080fd5b919050565b60008060408385031215610dbe57600080fd5b610dc783610d8f565b946020939093013593505050565b6001600160e01b031981168114610deb57600080fd5b50565b600060208284031215610e0057600080fd5b8135610e0b81610dd5565b9392505050565b600060208284031215610e2457600080fd5b5035919050565b6000815180845260005b81811015610e5157602081850181015186830182015201610e35565b506000602082860101526020601f19601f83011685010191505092915050565b602081526000610e0b6020830184610e2b565b634e487b7160e01b600052604160045260246000fd5b601f8201601f1916810167ffffffffffffffff81118282101715610ec057610ec0610e84565b6040525050565b600067ffffffffffffffff821115610ee157610ee1610e84565b5060051b60200190565b600082601f830112610efc57600080fd5b81356020610f0982610ec7565b604051610f168282610e9a565b83815260059390931b8501820192828101915086841115610f3657600080fd5b8286015b84811015610f515780358352918301918301610f3a565b509695505050505050565b600082601f830112610f6d57600080fd5b813567ffffffffffffffff811115610f8757610f87610e84565b604051610f9e601f8301601f191660200182610e9a565b818152846020838601011115610fb357600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a08688031215610fe857600080fd5b610ff186610d8f565b9450610fff60208701610d8f565b9350604086013567ffffffffffffffff8082111561101c57600080fd5b61102889838a01610eeb565b9450606088013591508082111561103e57600080fd5b61104a89838a01610eeb565b9350608088013591508082111561106057600080fd5b5061106d88828901610f5c565b9150509295509295909350565b6000806040838503121561108d57600080fd5b823567ffffffffffffffff808211156110a557600080fd5b818501915085601f8301126110b957600080fd5b813560206110c682610ec7565b6040516110d38282610e9a565b83815260059390931b85018201928281019150898411156110f357600080fd5b948201945b838610156111185761110986610d8f565b825294820194908201906110f8565b9650508601359250508082111561112e57600080fd5b5061113b85828601610eeb565b9150509250929050565b600081518084526020808501945080840160005b8381101561117557815187529582019590820190600101611159565b509495945050505050565b602081526000610e0b6020830184611145565b600080604083850312156111a657600080fd5b6111af83610d8f565b9150602083013580151581146111c457600080fd5b809150509250929050565b600080604083850312156111e257600080fd5b6111eb83610d8f565b91506111f960208401610d8f565b90509250929050565b600080600080600060a0868803121561121a57600080fd5b61122386610d8f565b945061123160208701610d8f565b93506040860135925060608601359150608086013567ffffffffffffffff81111561125b57600080fd5b61106d88828901610f5c565b600181811c9082168061127b57607f821691505b60208210810361129b57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016112df576112df6112b7565b5060010190565b80820180821115610232576102326112b7565b60408152600061130c6040830185611145565b828103602084015261131e8185611145565b95945050505050565b60006001600160a01b03808816835280871660208401525060a0604083015261135360a0830186611145565b82810360608401526113658186611145565b905082810360808401526113798185610e2b565b98975050505050505050565b60006020828403121561139757600080fd5b8151610e0b81610dd5565b600060033d11156113bb5760046000803e5060005160e01c5b90565b600060443d10156113cc5790565b6040516003193d81016004833e81513d67ffffffffffffffff81602484011181841117156113fc57505050505090565b82850191508151818111156114145750505050505090565b843d870101602082850101111561142e5750505050505090565b61143d60208286010187610e9a565b509095945050505050565b60006001600160a01b03808816835280871660208401525084604083015283606083015260a0608083015261148060a0830184610e2b565b97965050505050505056fea164736f6c6343000811000a", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100875760003560e01c80634e1273f41161005b5780634e1273f41461010a578063a22cb4651461012a578063e985e9c51461013d578063f242432a1461017957600080fd5b8062fdd58e1461008c57806301ffc9a7146100b25780630e89341c146100d55780632eb2c2d6146100f5575b600080fd5b61009f61009a366004610dab565b61018c565b6040519081526020015b60405180910390f35b6100c56100c0366004610dee565b610238565b60405190151581526020016100a9565b6100e86100e3366004610e12565b610288565b6040516100a99190610e71565b610108610103366004610fd0565b61031c565b005b61011d61011836600461107a565b6103af565b6040516100a99190611180565b610108610138366004611193565b6104ed565b6100c561014b3660046111cf565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205460ff1690565b610108610187366004611202565b6104fc565b60006001600160a01b03831661020f5760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201527f616c6964206f776e65720000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b506000818152602081815260408083206001600160a01b03861684529091529020545b92915050565b60006001600160e01b03198216636cdb3d1360e11b148061026957506001600160e01b031982166303a24d0760e21b145b8061023257506301ffc9a760e01b6001600160e01b0319831614610232565b60606002805461029790611267565b80601f01602080910402602001604051908101604052809291908181526020018280546102c390611267565b80156103105780601f106102e557610100808354040283529160200191610310565b820191906000526020600020905b8154815290600101906020018083116102f357829003601f168201915b50505050509050919050565b6001600160a01b0385163314806103385750610338853361014b565b61039b5760405162461bcd60e51b815260206004820152602e60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201526d195c881bdc88185c1c1c9bdd995960921b6064820152608401610206565b6103a88585858585610588565b5050505050565b606081518351146104285760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e67746860448201527f206d69736d6174636800000000000000000000000000000000000000000000006064820152608401610206565b6000835167ffffffffffffffff81111561044457610444610e84565b60405190808252806020026020018201604052801561046d578160200160208202803683370190505b50905060005b84518110156104e5576104b8858281518110610491576104916112a1565b60200260200101518583815181106104ab576104ab6112a1565b602002602001015161018c565b8282815181106104ca576104ca6112a1565b60209081029190910101526104de816112cd565b9050610473565b509392505050565b6104f83383836107fb565b5050565b6001600160a01b0385163314806105185750610518853361014b565b61057b5760405162461bcd60e51b815260206004820152602e60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201526d195c881bdc88185c1c1c9bdd995960921b6064820152608401610206565b6103a885858585856108ef565b81518351146105ff5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060448201527f6d69736d617463680000000000000000000000000000000000000000000000006064820152608401610206565b6001600160a01b0384166106635760405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b6064820152608401610206565b3360005b845181101561078d576000858281518110610684576106846112a1565b6020026020010151905060008583815181106106a2576106a26112a1565b602090810291909101810151600084815280835260408082206001600160a01b038e1683529093529190912054909150818110156107355760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201526939103a3930b739b332b960b11b6064820152608401610206565b6000838152602081815260408083206001600160a01b038e8116855292528083208585039055908b168252812080548492906107729084906112e6565b9250508190555050505080610786906112cd565b9050610667565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb87876040516107dd9291906112f9565b60405180910390a46107f3818787878787610a9a565b505050505050565b816001600160a01b0316836001600160a01b0316036108825760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c2073746174757360448201527f20666f722073656c6600000000000000000000000000000000000000000000006064820152608401610206565b6001600160a01b03838116600081815260016020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0384166109535760405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b6064820152608401610206565b33600061095f85610c48565b9050600061096c85610c48565b90506000868152602081815260408083206001600160a01b038c168452909152902054858110156109f25760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201526939103a3930b739b332b960b11b6064820152608401610206565b6000878152602081815260408083206001600160a01b038d8116855292528083208985039055908a16825281208054889290610a2f9084906112e6565b909155505060408051888152602081018890526001600160a01b03808b16928c821692918816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4610a8f848a8a8a8a8a610c93565b505050505050505050565b6001600160a01b0384163b156107f35760405163bc197c8160e01b81526001600160a01b0385169063bc197c8190610ade9089908990889088908890600401611327565b6020604051808303816000875af1925050508015610b19575060408051601f3d908101601f19168201909252610b1691810190611385565b60015b610bce57610b256113a2565b806308c379a003610b5e5750610b396113be565b80610b445750610b60565b8060405162461bcd60e51b81526004016102069190610e71565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e2d4552433131353560448201527f526563656976657220696d706c656d656e7465720000000000000000000000006064820152608401610206565b6001600160e01b0319811663bc197c8160e01b14610c3f5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a656374656044820152676420746f6b656e7360c01b6064820152608401610206565b50505050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110610c8257610c826112a1565b602090810291909101015292915050565b6001600160a01b0384163b156107f35760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e6190610cd79089908990889088908890600401611448565b6020604051808303816000875af1925050508015610d12575060408051601f3d908101601f19168201909252610d0f91810190611385565b60015b610d1e57610b256113a2565b6001600160e01b0319811663f23a6e6160e01b14610c3f5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a656374656044820152676420746f6b656e7360c01b6064820152608401610206565b80356001600160a01b0381168114610da657600080fd5b919050565b60008060408385031215610dbe57600080fd5b610dc783610d8f565b946020939093013593505050565b6001600160e01b031981168114610deb57600080fd5b50565b600060208284031215610e0057600080fd5b8135610e0b81610dd5565b9392505050565b600060208284031215610e2457600080fd5b5035919050565b6000815180845260005b81811015610e5157602081850181015186830182015201610e35565b506000602082860101526020601f19601f83011685010191505092915050565b602081526000610e0b6020830184610e2b565b634e487b7160e01b600052604160045260246000fd5b601f8201601f1916810167ffffffffffffffff81118282101715610ec057610ec0610e84565b6040525050565b600067ffffffffffffffff821115610ee157610ee1610e84565b5060051b60200190565b600082601f830112610efc57600080fd5b81356020610f0982610ec7565b604051610f168282610e9a565b83815260059390931b8501820192828101915086841115610f3657600080fd5b8286015b84811015610f515780358352918301918301610f3a565b509695505050505050565b600082601f830112610f6d57600080fd5b813567ffffffffffffffff811115610f8757610f87610e84565b604051610f9e601f8301601f191660200182610e9a565b818152846020838601011115610fb357600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a08688031215610fe857600080fd5b610ff186610d8f565b9450610fff60208701610d8f565b9350604086013567ffffffffffffffff8082111561101c57600080fd5b61102889838a01610eeb565b9450606088013591508082111561103e57600080fd5b61104a89838a01610eeb565b9350608088013591508082111561106057600080fd5b5061106d88828901610f5c565b9150509295509295909350565b6000806040838503121561108d57600080fd5b823567ffffffffffffffff808211156110a557600080fd5b818501915085601f8301126110b957600080fd5b813560206110c682610ec7565b6040516110d38282610e9a565b83815260059390931b85018201928281019150898411156110f357600080fd5b948201945b838610156111185761110986610d8f565b825294820194908201906110f8565b9650508601359250508082111561112e57600080fd5b5061113b85828601610eeb565b9150509250929050565b600081518084526020808501945080840160005b8381101561117557815187529582019590820190600101611159565b509495945050505050565b602081526000610e0b6020830184611145565b600080604083850312156111a657600080fd5b6111af83610d8f565b9150602083013580151581146111c457600080fd5b809150509250929050565b600080604083850312156111e257600080fd5b6111eb83610d8f565b91506111f960208401610d8f565b90509250929050565b600080600080600060a0868803121561121a57600080fd5b61122386610d8f565b945061123160208701610d8f565b93506040860135925060608601359150608086013567ffffffffffffffff81111561125b57600080fd5b61106d88828901610f5c565b600181811c9082168061127b57607f821691505b60208210810361129b57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016112df576112df6112b7565b5060010190565b80820180821115610232576102326112b7565b60408152600061130c6040830185611145565b828103602084015261131e8185611145565b95945050505050565b60006001600160a01b03808816835280871660208401525060a0604083015261135360a0830186611145565b82810360608401526113658186611145565b905082810360808401526113798185610e2b565b98975050505050505050565b60006020828403121561139757600080fd5b8151610e0b81610dd5565b600060033d11156113bb5760046000803e5060005160e01c5b90565b600060443d10156113cc5790565b6040516003193d81016004833e81513d67ffffffffffffffff81602484011181841117156113fc57505050505090565b82850191508151818111156114145750505050505090565b843d870101602082850101111561142e5750505050505090565b61143d60208286010187610e9a565b509095945050505050565b60006001600160a01b03808816835280871660208401525084604083015283606083015260a0608083015261148060a0830184610e2b565b97965050505050505056fea164736f6c6343000811000a", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/contracts/artifacts/@openzeppelin/contracts/token/ERC1155/IERC1155.sol/IERC1155.dbg.json b/contracts/artifacts/@openzeppelin/contracts/token/ERC1155/IERC1155.sol/IERC1155.dbg.json deleted file mode 100644 index b8d2318f..00000000 --- a/contracts/artifacts/@openzeppelin/contracts/token/ERC1155/IERC1155.sol/IERC1155.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" -} diff --git a/contracts/artifacts/@openzeppelin/contracts/token/ERC1155/IERC1155.sol/IERC1155.json b/contracts/artifacts/@openzeppelin/contracts/token/ERC1155/IERC1155.sol/IERC1155.json deleted file mode 100644 index ab05ae0e..00000000 --- a/contracts/artifacts/@openzeppelin/contracts/token/ERC1155/IERC1155.sol/IERC1155.json +++ /dev/null @@ -1,304 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "IERC1155", - "sourceName": "@openzeppelin/contracts/token/ERC1155/IERC1155.sol", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "account", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "operator", - "type": "address" - }, - { - "indexed": false, - "internalType": "bool", - "name": "approved", - "type": "bool" - } - ], - "name": "ApprovalForAll", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "operator", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256[]", - "name": "ids", - "type": "uint256[]" - }, - { - "indexed": false, - "internalType": "uint256[]", - "name": "values", - "type": "uint256[]" - } - ], - "name": "TransferBatch", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "operator", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "id", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "TransferSingle", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "string", - "name": "value", - "type": "string" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "id", - "type": "uint256" - } - ], - "name": "URI", - "type": "event" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "account", - "type": "address" - }, - { - "internalType": "uint256", - "name": "id", - "type": "uint256" - } - ], - "name": "balanceOf", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address[]", - "name": "accounts", - "type": "address[]" - }, - { - "internalType": "uint256[]", - "name": "ids", - "type": "uint256[]" - } - ], - "name": "balanceOfBatch", - "outputs": [ - { - "internalType": "uint256[]", - "name": "", - "type": "uint256[]" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "account", - "type": "address" - }, - { - "internalType": "address", - "name": "operator", - "type": "address" - } - ], - "name": "isApprovedForAll", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256[]", - "name": "ids", - "type": "uint256[]" - }, - { - "internalType": "uint256[]", - "name": "amounts", - "type": "uint256[]" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "safeBatchTransferFrom", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "id", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "safeTransferFrom", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "operator", - "type": "address" - }, - { - "internalType": "bool", - "name": "approved", - "type": "bool" - } - ], - "name": "setApprovalForAll", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes4", - "name": "interfaceId", - "type": "bytes4" - } - ], - "name": "supportsInterface", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - } - ], - "bytecode": "0x", - "deployedBytecode": "0x", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/contracts/artifacts/@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol/IERC1155Receiver.dbg.json b/contracts/artifacts/@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol/IERC1155Receiver.dbg.json deleted file mode 100644 index b8d2318f..00000000 --- a/contracts/artifacts/@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol/IERC1155Receiver.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" -} diff --git a/contracts/artifacts/@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol/IERC1155Receiver.json b/contracts/artifacts/@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol/IERC1155Receiver.json deleted file mode 100644 index 55daf1e1..00000000 --- a/contracts/artifacts/@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol/IERC1155Receiver.json +++ /dev/null @@ -1,108 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "IERC1155Receiver", - "sourceName": "@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol", - "abi": [ - { - "inputs": [ - { - "internalType": "address", - "name": "operator", - "type": "address" - }, - { - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "internalType": "uint256[]", - "name": "ids", - "type": "uint256[]" - }, - { - "internalType": "uint256[]", - "name": "values", - "type": "uint256[]" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "onERC1155BatchReceived", - "outputs": [ - { - "internalType": "bytes4", - "name": "", - "type": "bytes4" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "operator", - "type": "address" - }, - { - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "internalType": "uint256", - "name": "id", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "onERC1155Received", - "outputs": [ - { - "internalType": "bytes4", - "name": "", - "type": "bytes4" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes4", - "name": "interfaceId", - "type": "bytes4" - } - ], - "name": "supportsInterface", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - } - ], - "bytecode": "0x", - "deployedBytecode": "0x", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/contracts/artifacts/@openzeppelin/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol/IERC1155MetadataURI.dbg.json b/contracts/artifacts/@openzeppelin/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol/IERC1155MetadataURI.dbg.json deleted file mode 100644 index c8024a50..00000000 --- a/contracts/artifacts/@openzeppelin/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol/IERC1155MetadataURI.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" -} diff --git a/contracts/artifacts/@openzeppelin/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol/IERC1155MetadataURI.json b/contracts/artifacts/@openzeppelin/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol/IERC1155MetadataURI.json deleted file mode 100644 index 315b0f85..00000000 --- a/contracts/artifacts/@openzeppelin/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol/IERC1155MetadataURI.json +++ /dev/null @@ -1,323 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "IERC1155MetadataURI", - "sourceName": "@openzeppelin/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "account", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "operator", - "type": "address" - }, - { - "indexed": false, - "internalType": "bool", - "name": "approved", - "type": "bool" - } - ], - "name": "ApprovalForAll", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "operator", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256[]", - "name": "ids", - "type": "uint256[]" - }, - { - "indexed": false, - "internalType": "uint256[]", - "name": "values", - "type": "uint256[]" - } - ], - "name": "TransferBatch", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "operator", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "id", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "TransferSingle", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "string", - "name": "value", - "type": "string" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "id", - "type": "uint256" - } - ], - "name": "URI", - "type": "event" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "account", - "type": "address" - }, - { - "internalType": "uint256", - "name": "id", - "type": "uint256" - } - ], - "name": "balanceOf", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address[]", - "name": "accounts", - "type": "address[]" - }, - { - "internalType": "uint256[]", - "name": "ids", - "type": "uint256[]" - } - ], - "name": "balanceOfBatch", - "outputs": [ - { - "internalType": "uint256[]", - "name": "", - "type": "uint256[]" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "account", - "type": "address" - }, - { - "internalType": "address", - "name": "operator", - "type": "address" - } - ], - "name": "isApprovedForAll", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256[]", - "name": "ids", - "type": "uint256[]" - }, - { - "internalType": "uint256[]", - "name": "amounts", - "type": "uint256[]" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "safeBatchTransferFrom", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "id", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "safeTransferFrom", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "operator", - "type": "address" - }, - { - "internalType": "bool", - "name": "approved", - "type": "bool" - } - ], - "name": "setApprovalForAll", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes4", - "name": "interfaceId", - "type": "bytes4" - } - ], - "name": "supportsInterface", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "id", - "type": "uint256" - } - ], - "name": "uri", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "view", - "type": "function" - } - ], - "bytecode": "0x", - "deployedBytecode": "0x", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/contracts/artifacts/@openzeppelin/contracts/token/ERC20/ERC20.sol/ERC20.dbg.json b/contracts/artifacts/@openzeppelin/contracts/token/ERC20/ERC20.sol/ERC20.dbg.json deleted file mode 100644 index b8d2318f..00000000 --- a/contracts/artifacts/@openzeppelin/contracts/token/ERC20/ERC20.sol/ERC20.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" -} diff --git a/contracts/artifacts/@openzeppelin/contracts/token/ERC20/ERC20.sol/ERC20.json b/contracts/artifacts/@openzeppelin/contracts/token/ERC20/ERC20.sol/ERC20.json deleted file mode 100644 index a784675d..00000000 --- a/contracts/artifacts/@openzeppelin/contracts/token/ERC20/ERC20.sol/ERC20.json +++ /dev/null @@ -1,297 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "ERC20", - "sourceName": "@openzeppelin/contracts/token/ERC20/ERC20.sol", - "abi": [ - { - "inputs": [ - { - "internalType": "string", - "name": "name_", - "type": "string" - }, - { - "internalType": "string", - "name": "symbol_", - "type": "string" - } - ], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "Approval", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "Transfer", - "type": "event" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "internalType": "address", - "name": "spender", - "type": "address" - } - ], - "name": "allowance", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "approve", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "balanceOf", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "decimals", - "outputs": [ - { - "internalType": "uint8", - "name": "", - "type": "uint8" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "subtractedValue", - "type": "uint256" - } - ], - "name": "decreaseAllowance", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "addedValue", - "type": "uint256" - } - ], - "name": "increaseAllowance", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "name", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "symbol", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "totalSupply", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "transfer", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "transferFrom", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - } - ], - "bytecode": "0x60806040523480156200001157600080fd5b5060405162000bcb38038062000bcb83398101604081905262000034916200011f565b600362000042838262000218565b50600462000051828262000218565b505050620002e4565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200008257600080fd5b81516001600160401b03808211156200009f576200009f6200005a565b604051601f8301601f19908116603f01168101908282118183101715620000ca57620000ca6200005a565b81604052838152602092508683858801011115620000e757600080fd5b600091505b838210156200010b5785820183015181830184015290820190620000ec565b600093810190920192909252949350505050565b600080604083850312156200013357600080fd5b82516001600160401b03808211156200014b57600080fd5b620001598683870162000070565b935060208501519150808211156200017057600080fd5b506200017f8582860162000070565b9150509250929050565b600181811c908216806200019e57607f821691505b602082108103620001bf57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200021357600081815260208120601f850160051c81016020861015620001ee5750805b601f850160051c820191505b818110156200020f57828155600101620001fa565b5050505b505050565b81516001600160401b038111156200023457620002346200005a565b6200024c8162000245845462000189565b84620001c5565b602080601f8311600181146200028457600084156200026b5750858301515b600019600386901b1c1916600185901b1785556200020f565b600085815260208120601f198616915b82811015620002b55788860151825594840194600190910190840162000294565b5085821015620002d45787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6108d780620002f46000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c80633950935111610081578063a457c2d71161005b578063a457c2d714610187578063a9059cbb1461019a578063dd62ed3e146101ad57600080fd5b8063395093511461014357806370a082311461015657806395d89b411461017f57600080fd5b806318160ddd116100b257806318160ddd1461010f57806323b872dd14610121578063313ce5671461013457600080fd5b806306fdde03146100ce578063095ea7b3146100ec575b600080fd5b6100d66101e6565b6040516100e3919061074a565b60405180910390f35b6100ff6100fa3660046107b4565b610278565b60405190151581526020016100e3565b6002545b6040519081526020016100e3565b6100ff61012f3660046107de565b610292565b604051601281526020016100e3565b6100ff6101513660046107b4565b6102b6565b61011361016436600461081a565b6001600160a01b031660009081526020819052604090205490565b6100d66102f5565b6100ff6101953660046107b4565b610304565b6100ff6101a83660046107b4565b6103b3565b6101136101bb36600461083c565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f59061086f565b80601f01602080910402602001604051908101604052809291908181526020018280546102219061086f565b801561026e5780601f106102435761010080835404028352916020019161026e565b820191906000526020600020905b81548152906001019060200180831161025157829003601f168201915b5050505050905090565b6000336102868185856103c1565b60019150505b92915050565b6000336102a08582856104e5565b6102ab858585610577565b506001949350505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490919061028690829086906102f09087906108a9565b6103c1565b6060600480546101f59061086f565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909190838110156103a65760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6102ab82868684036103c1565b600033610286818585610577565b6001600160a01b0383166104235760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161039d565b6001600160a01b0382166104845760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161039d565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03838116600090815260016020908152604080832093861683529290522054600019811461057157818110156105645760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161039d565b61057184848484036103c1565b50505050565b6001600160a01b0383166105f35760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f6472657373000000000000000000000000000000000000000000000000000000606482015260840161039d565b6001600160a01b0382166106555760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161039d565b6001600160a01b038316600090815260208190526040902054818110156106e45760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e63650000000000000000000000000000000000000000000000000000606482015260840161039d565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610571565b600060208083528351808285015260005b818110156107775785810183015185820160400152820161075b565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146107af57600080fd5b919050565b600080604083850312156107c757600080fd5b6107d083610798565b946020939093013593505050565b6000806000606084860312156107f357600080fd5b6107fc84610798565b925061080a60208501610798565b9150604084013590509250925092565b60006020828403121561082c57600080fd5b61083582610798565b9392505050565b6000806040838503121561084f57600080fd5b61085883610798565b915061086660208401610798565b90509250929050565b600181811c9082168061088357607f821691505b6020821081036108a357634e487b7160e01b600052602260045260246000fd5b50919050565b8082018082111561028c57634e487b7160e01b600052601160045260246000fdfea164736f6c6343000811000a", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100c95760003560e01c80633950935111610081578063a457c2d71161005b578063a457c2d714610187578063a9059cbb1461019a578063dd62ed3e146101ad57600080fd5b8063395093511461014357806370a082311461015657806395d89b411461017f57600080fd5b806318160ddd116100b257806318160ddd1461010f57806323b872dd14610121578063313ce5671461013457600080fd5b806306fdde03146100ce578063095ea7b3146100ec575b600080fd5b6100d66101e6565b6040516100e3919061074a565b60405180910390f35b6100ff6100fa3660046107b4565b610278565b60405190151581526020016100e3565b6002545b6040519081526020016100e3565b6100ff61012f3660046107de565b610292565b604051601281526020016100e3565b6100ff6101513660046107b4565b6102b6565b61011361016436600461081a565b6001600160a01b031660009081526020819052604090205490565b6100d66102f5565b6100ff6101953660046107b4565b610304565b6100ff6101a83660046107b4565b6103b3565b6101136101bb36600461083c565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f59061086f565b80601f01602080910402602001604051908101604052809291908181526020018280546102219061086f565b801561026e5780601f106102435761010080835404028352916020019161026e565b820191906000526020600020905b81548152906001019060200180831161025157829003601f168201915b5050505050905090565b6000336102868185856103c1565b60019150505b92915050565b6000336102a08582856104e5565b6102ab858585610577565b506001949350505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490919061028690829086906102f09087906108a9565b6103c1565b6060600480546101f59061086f565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909190838110156103a65760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6102ab82868684036103c1565b600033610286818585610577565b6001600160a01b0383166104235760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161039d565b6001600160a01b0382166104845760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161039d565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03838116600090815260016020908152604080832093861683529290522054600019811461057157818110156105645760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161039d565b61057184848484036103c1565b50505050565b6001600160a01b0383166105f35760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f6472657373000000000000000000000000000000000000000000000000000000606482015260840161039d565b6001600160a01b0382166106555760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161039d565b6001600160a01b038316600090815260208190526040902054818110156106e45760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e63650000000000000000000000000000000000000000000000000000606482015260840161039d565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610571565b600060208083528351808285015260005b818110156107775785810183015185820160400152820161075b565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146107af57600080fd5b919050565b600080604083850312156107c757600080fd5b6107d083610798565b946020939093013593505050565b6000806000606084860312156107f357600080fd5b6107fc84610798565b925061080a60208501610798565b9150604084013590509250925092565b60006020828403121561082c57600080fd5b61083582610798565b9392505050565b6000806040838503121561084f57600080fd5b61085883610798565b915061086660208401610798565b90509250929050565b600181811c9082168061088357607f821691505b6020821081036108a357634e487b7160e01b600052602260045260246000fd5b50919050565b8082018082111561028c57634e487b7160e01b600052601160045260246000fdfea164736f6c6343000811000a", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/contracts/artifacts/@openzeppelin/contracts/token/ERC20/IERC20.sol/IERC20.dbg.json b/contracts/artifacts/@openzeppelin/contracts/token/ERC20/IERC20.sol/IERC20.dbg.json deleted file mode 100644 index b8d2318f..00000000 --- a/contracts/artifacts/@openzeppelin/contracts/token/ERC20/IERC20.sol/IERC20.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" -} diff --git a/contracts/artifacts/@openzeppelin/contracts/token/ERC20/IERC20.sol/IERC20.json b/contracts/artifacts/@openzeppelin/contracts/token/ERC20/IERC20.sol/IERC20.json deleted file mode 100644 index 76b073c0..00000000 --- a/contracts/artifacts/@openzeppelin/contracts/token/ERC20/IERC20.sol/IERC20.json +++ /dev/null @@ -1,194 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "IERC20", - "sourceName": "@openzeppelin/contracts/token/ERC20/IERC20.sol", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "Approval", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "Transfer", - "type": "event" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "internalType": "address", - "name": "spender", - "type": "address" - } - ], - "name": "allowance", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "approve", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "balanceOf", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "totalSupply", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "transfer", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "transferFrom", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - } - ], - "bytecode": "0x", - "deployedBytecode": "0x", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/contracts/artifacts/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol/IERC20Metadata.dbg.json b/contracts/artifacts/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol/IERC20Metadata.dbg.json deleted file mode 100644 index c8024a50..00000000 --- a/contracts/artifacts/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol/IERC20Metadata.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" -} diff --git a/contracts/artifacts/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol/IERC20Metadata.json b/contracts/artifacts/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol/IERC20Metadata.json deleted file mode 100644 index 0436b925..00000000 --- a/contracts/artifacts/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol/IERC20Metadata.json +++ /dev/null @@ -1,233 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "IERC20Metadata", - "sourceName": "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "Approval", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "Transfer", - "type": "event" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "internalType": "address", - "name": "spender", - "type": "address" - } - ], - "name": "allowance", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "approve", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "balanceOf", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "decimals", - "outputs": [ - { - "internalType": "uint8", - "name": "", - "type": "uint8" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "name", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "symbol", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "totalSupply", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "transfer", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "transferFrom", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - } - ], - "bytecode": "0x", - "deployedBytecode": "0x", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/contracts/artifacts/@openzeppelin/contracts/token/ERC721/ERC721.sol/ERC721.dbg.json b/contracts/artifacts/@openzeppelin/contracts/token/ERC721/ERC721.sol/ERC721.dbg.json deleted file mode 100644 index b8d2318f..00000000 --- a/contracts/artifacts/@openzeppelin/contracts/token/ERC721/ERC721.sol/ERC721.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" -} diff --git a/contracts/artifacts/@openzeppelin/contracts/token/ERC721/ERC721.sol/ERC721.json b/contracts/artifacts/@openzeppelin/contracts/token/ERC721/ERC721.sol/ERC721.json deleted file mode 100644 index 62ddd69d..00000000 --- a/contracts/artifacts/@openzeppelin/contracts/token/ERC721/ERC721.sol/ERC721.json +++ /dev/null @@ -1,357 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "ERC721", - "sourceName": "@openzeppelin/contracts/token/ERC721/ERC721.sol", - "abi": [ - { - "inputs": [ - { - "internalType": "string", - "name": "name_", - "type": "string" - }, - { - "internalType": "string", - "name": "symbol_", - "type": "string" - } - ], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "approved", - "type": "address" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - } - ], - "name": "Approval", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "operator", - "type": "address" - }, - { - "indexed": false, - "internalType": "bool", - "name": "approved", - "type": "bool" - } - ], - "name": "ApprovalForAll", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - } - ], - "name": "Transfer", - "type": "event" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - } - ], - "name": "approve", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "owner", - "type": "address" - } - ], - "name": "balanceOf", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - } - ], - "name": "getApproved", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "internalType": "address", - "name": "operator", - "type": "address" - } - ], - "name": "isApprovedForAll", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "name", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - } - ], - "name": "ownerOf", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - } - ], - "name": "safeTransferFrom", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "safeTransferFrom", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "operator", - "type": "address" - }, - { - "internalType": "bool", - "name": "approved", - "type": "bool" - } - ], - "name": "setApprovalForAll", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes4", - "name": "interfaceId", - "type": "bytes4" - } - ], - "name": "supportsInterface", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "symbol", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - } - ], - "name": "tokenURI", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - } - ], - "name": "transferFrom", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - } - ], - "bytecode": "0x60806040523480156200001157600080fd5b50604051620014ec380380620014ec83398101604081905262000034916200011f565b600062000042838262000218565b50600162000051828262000218565b505050620002e4565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200008257600080fd5b81516001600160401b03808211156200009f576200009f6200005a565b604051601f8301601f19908116603f01168101908282118183101715620000ca57620000ca6200005a565b81604052838152602092508683858801011115620000e757600080fd5b600091505b838210156200010b5785820183015181830184015290820190620000ec565b600093810190920192909252949350505050565b600080604083850312156200013357600080fd5b82516001600160401b03808211156200014b57600080fd5b620001598683870162000070565b935060208501519150808211156200017057600080fd5b506200017f8582860162000070565b9150509250929050565b600181811c908216806200019e57607f821691505b602082108103620001bf57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200021357600081815260208120601f850160051c81016020861015620001ee5750805b601f850160051c820191505b818110156200020f57828155600101620001fa565b5050505b505050565b81516001600160401b038111156200023457620002346200005a565b6200024c8162000245845462000189565b84620001c5565b602080601f8311600181146200028457600084156200026b5750858301515b600019600386901b1c1916600185901b1785556200020f565b600085815260208120601f198616915b82811015620002b55788860151825594840194600190910190840162000294565b5085821015620002d45787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6111f880620002f46000396000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c80636352211e1161008c578063a22cb46511610066578063a22cb465146101c3578063b88d4fde146101d6578063c87b56dd146101e9578063e985e9c5146101fc57600080fd5b80636352211e1461018757806370a082311461019a57806395d89b41146101bb57600080fd5b8063095ea7b3116100bd578063095ea7b31461014c57806323b872dd1461016157806342842e0e1461017457600080fd5b806301ffc9a7146100e457806306fdde031461010c578063081812fc14610121575b600080fd5b6100f76100f2366004610e92565b610238565b60405190151581526020015b60405180910390f35b61011461028a565b6040516101039190610eff565b61013461012f366004610f12565b61031c565b6040516001600160a01b039091168152602001610103565b61015f61015a366004610f47565b610343565b005b61015f61016f366004610f71565b61045d565b61015f610182366004610f71565b6104d4565b610134610195366004610f12565b6104ef565b6101ad6101a8366004610fad565b610554565b604051908152602001610103565b6101146105ee565b61015f6101d1366004610fc8565b6105fd565b61015f6101e436600461101a565b61060c565b6101146101f7366004610f12565b61068a565b6100f761020a3660046110f6565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b60006001600160e01b031982166380ac58cd60e01b148061026957506001600160e01b03198216635b5e139f60e01b145b8061028457506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606000805461029990611129565b80601f01602080910402602001604051908101604052809291908181526020018280546102c590611129565b80156103125780601f106102e757610100808354040283529160200191610312565b820191906000526020600020905b8154815290600101906020018083116102f557829003601f168201915b5050505050905090565b6000610327826106fe565b506000908152600460205260409020546001600160a01b031690565b600061034e826104ef565b9050806001600160a01b0316836001600160a01b0316036103c05760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b03821614806103dc57506103dc813361020a565b61044e5760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c00000060648201526084016103b7565b6104588383610765565b505050565b61046733826107e0565b6104c95760405162461bcd60e51b815260206004820152602d60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201526c1c881bdc88185c1c1c9bdd9959609a1b60648201526084016103b7565b61045883838361085f565b6104588383836040518060200160405280600081525061060c565b6000818152600260205260408120546001600160a01b0316806102845760405162461bcd60e51b815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e204944000000000000000060448201526064016103b7565b60006001600160a01b0382166105d25760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f74206120766160448201527f6c6964206f776e6572000000000000000000000000000000000000000000000060648201526084016103b7565b506001600160a01b031660009081526003602052604090205490565b60606001805461029990611129565b610608338383610a4c565b5050565b61061633836107e0565b6106785760405162461bcd60e51b815260206004820152602d60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201526c1c881bdc88185c1c1c9bdd9959609a1b60648201526084016103b7565b61068484848484610b1a565b50505050565b6060610695826106fe565b60006106ac60408051602081019091526000815290565b905060008151116106cc57604051806020016040528060008152506106f7565b806106d684610ba3565b6040516020016106e7929190611163565b6040516020818303038152906040525b9392505050565b6000818152600260205260409020546001600160a01b03166107625760405162461bcd60e51b815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e204944000000000000000060448201526064016103b7565b50565b6000818152600460205260409020805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03841690811790915581906107a7826104ef565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000806107ec836104ef565b9050806001600160a01b0316846001600160a01b0316148061083357506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b806108575750836001600160a01b031661084c8461031c565b6001600160a01b0316145b949350505050565b826001600160a01b0316610872826104ef565b6001600160a01b0316146108d65760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016103b7565b6001600160a01b0382166109385760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016103b7565b826001600160a01b031661094b826104ef565b6001600160a01b0316146109af5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016103b7565b6000818152600460209081526040808320805473ffffffffffffffffffffffffffffffffffffffff199081169091556001600160a01b0387811680865260038552838620805460001901905590871680865283862080546001019055868652600290945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b816001600160a01b0316836001600160a01b031603610aad5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016103b7565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b610b2584848461085f565b610b3184848484610c43565b6106845760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e746572000000000000000000000000000060648201526084016103b7565b60606000610bb083610d9a565b600101905060008167ffffffffffffffff811115610bd057610bd0611004565b6040519080825280601f01601f191660200182016040528015610bfa576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084610c0457509392505050565b60006001600160a01b0384163b15610d8f57604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290610c87903390899088908890600401611192565b6020604051808303816000875af1925050508015610cc2575060408051601f3d908101601f19168201909252610cbf918101906111ce565b60015b610d75573d808015610cf0576040519150601f19603f3d011682016040523d82523d6000602084013e610cf5565b606091505b508051600003610d6d5760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e746572000000000000000000000000000060648201526084016103b7565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050610857565b506001949350505050565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310610de3577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310610e0f576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310610e2d57662386f26fc10000830492506010015b6305f5e1008310610e45576305f5e100830492506008015b6127108310610e5957612710830492506004015b60648310610e6b576064830492506002015b600a83106102845760010192915050565b6001600160e01b03198116811461076257600080fd5b600060208284031215610ea457600080fd5b81356106f781610e7c565b60005b83811015610eca578181015183820152602001610eb2565b50506000910152565b60008151808452610eeb816020860160208601610eaf565b601f01601f19169290920160200192915050565b6020815260006106f76020830184610ed3565b600060208284031215610f2457600080fd5b5035919050565b80356001600160a01b0381168114610f4257600080fd5b919050565b60008060408385031215610f5a57600080fd5b610f6383610f2b565b946020939093013593505050565b600080600060608486031215610f8657600080fd5b610f8f84610f2b565b9250610f9d60208501610f2b565b9150604084013590509250925092565b600060208284031215610fbf57600080fd5b6106f782610f2b565b60008060408385031215610fdb57600080fd5b610fe483610f2b565b915060208301358015158114610ff957600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b6000806000806080858703121561103057600080fd5b61103985610f2b565b935061104760208601610f2b565b925060408501359150606085013567ffffffffffffffff8082111561106b57600080fd5b818701915087601f83011261107f57600080fd5b81358181111561109157611091611004565b604051601f8201601f19908116603f011681019083821181831017156110b9576110b9611004565b816040528281528a60208487010111156110d257600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b6000806040838503121561110957600080fd5b61111283610f2b565b915061112060208401610f2b565b90509250929050565b600181811c9082168061113d57607f821691505b60208210810361115d57634e487b7160e01b600052602260045260246000fd5b50919050565b60008351611175818460208801610eaf565b835190830190611189818360208801610eaf565b01949350505050565b60006001600160a01b038087168352808616602084015250836040830152608060608301526111c46080830184610ed3565b9695505050505050565b6000602082840312156111e057600080fd5b81516106f781610e7c56fea164736f6c6343000811000a", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100df5760003560e01c80636352211e1161008c578063a22cb46511610066578063a22cb465146101c3578063b88d4fde146101d6578063c87b56dd146101e9578063e985e9c5146101fc57600080fd5b80636352211e1461018757806370a082311461019a57806395d89b41146101bb57600080fd5b8063095ea7b3116100bd578063095ea7b31461014c57806323b872dd1461016157806342842e0e1461017457600080fd5b806301ffc9a7146100e457806306fdde031461010c578063081812fc14610121575b600080fd5b6100f76100f2366004610e92565b610238565b60405190151581526020015b60405180910390f35b61011461028a565b6040516101039190610eff565b61013461012f366004610f12565b61031c565b6040516001600160a01b039091168152602001610103565b61015f61015a366004610f47565b610343565b005b61015f61016f366004610f71565b61045d565b61015f610182366004610f71565b6104d4565b610134610195366004610f12565b6104ef565b6101ad6101a8366004610fad565b610554565b604051908152602001610103565b6101146105ee565b61015f6101d1366004610fc8565b6105fd565b61015f6101e436600461101a565b61060c565b6101146101f7366004610f12565b61068a565b6100f761020a3660046110f6565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b60006001600160e01b031982166380ac58cd60e01b148061026957506001600160e01b03198216635b5e139f60e01b145b8061028457506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606000805461029990611129565b80601f01602080910402602001604051908101604052809291908181526020018280546102c590611129565b80156103125780601f106102e757610100808354040283529160200191610312565b820191906000526020600020905b8154815290600101906020018083116102f557829003601f168201915b5050505050905090565b6000610327826106fe565b506000908152600460205260409020546001600160a01b031690565b600061034e826104ef565b9050806001600160a01b0316836001600160a01b0316036103c05760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b03821614806103dc57506103dc813361020a565b61044e5760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c00000060648201526084016103b7565b6104588383610765565b505050565b61046733826107e0565b6104c95760405162461bcd60e51b815260206004820152602d60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201526c1c881bdc88185c1c1c9bdd9959609a1b60648201526084016103b7565b61045883838361085f565b6104588383836040518060200160405280600081525061060c565b6000818152600260205260408120546001600160a01b0316806102845760405162461bcd60e51b815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e204944000000000000000060448201526064016103b7565b60006001600160a01b0382166105d25760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f74206120766160448201527f6c6964206f776e6572000000000000000000000000000000000000000000000060648201526084016103b7565b506001600160a01b031660009081526003602052604090205490565b60606001805461029990611129565b610608338383610a4c565b5050565b61061633836107e0565b6106785760405162461bcd60e51b815260206004820152602d60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201526c1c881bdc88185c1c1c9bdd9959609a1b60648201526084016103b7565b61068484848484610b1a565b50505050565b6060610695826106fe565b60006106ac60408051602081019091526000815290565b905060008151116106cc57604051806020016040528060008152506106f7565b806106d684610ba3565b6040516020016106e7929190611163565b6040516020818303038152906040525b9392505050565b6000818152600260205260409020546001600160a01b03166107625760405162461bcd60e51b815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e204944000000000000000060448201526064016103b7565b50565b6000818152600460205260409020805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03841690811790915581906107a7826104ef565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000806107ec836104ef565b9050806001600160a01b0316846001600160a01b0316148061083357506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b806108575750836001600160a01b031661084c8461031c565b6001600160a01b0316145b949350505050565b826001600160a01b0316610872826104ef565b6001600160a01b0316146108d65760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016103b7565b6001600160a01b0382166109385760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016103b7565b826001600160a01b031661094b826104ef565b6001600160a01b0316146109af5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016103b7565b6000818152600460209081526040808320805473ffffffffffffffffffffffffffffffffffffffff199081169091556001600160a01b0387811680865260038552838620805460001901905590871680865283862080546001019055868652600290945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b816001600160a01b0316836001600160a01b031603610aad5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016103b7565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b610b2584848461085f565b610b3184848484610c43565b6106845760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e746572000000000000000000000000000060648201526084016103b7565b60606000610bb083610d9a565b600101905060008167ffffffffffffffff811115610bd057610bd0611004565b6040519080825280601f01601f191660200182016040528015610bfa576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084610c0457509392505050565b60006001600160a01b0384163b15610d8f57604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290610c87903390899088908890600401611192565b6020604051808303816000875af1925050508015610cc2575060408051601f3d908101601f19168201909252610cbf918101906111ce565b60015b610d75573d808015610cf0576040519150601f19603f3d011682016040523d82523d6000602084013e610cf5565b606091505b508051600003610d6d5760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e746572000000000000000000000000000060648201526084016103b7565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050610857565b506001949350505050565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310610de3577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310610e0f576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310610e2d57662386f26fc10000830492506010015b6305f5e1008310610e45576305f5e100830492506008015b6127108310610e5957612710830492506004015b60648310610e6b576064830492506002015b600a83106102845760010192915050565b6001600160e01b03198116811461076257600080fd5b600060208284031215610ea457600080fd5b81356106f781610e7c565b60005b83811015610eca578181015183820152602001610eb2565b50506000910152565b60008151808452610eeb816020860160208601610eaf565b601f01601f19169290920160200192915050565b6020815260006106f76020830184610ed3565b600060208284031215610f2457600080fd5b5035919050565b80356001600160a01b0381168114610f4257600080fd5b919050565b60008060408385031215610f5a57600080fd5b610f6383610f2b565b946020939093013593505050565b600080600060608486031215610f8657600080fd5b610f8f84610f2b565b9250610f9d60208501610f2b565b9150604084013590509250925092565b600060208284031215610fbf57600080fd5b6106f782610f2b565b60008060408385031215610fdb57600080fd5b610fe483610f2b565b915060208301358015158114610ff957600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b6000806000806080858703121561103057600080fd5b61103985610f2b565b935061104760208601610f2b565b925060408501359150606085013567ffffffffffffffff8082111561106b57600080fd5b818701915087601f83011261107f57600080fd5b81358181111561109157611091611004565b604051601f8201601f19908116603f011681019083821181831017156110b9576110b9611004565b816040528281528a60208487010111156110d257600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b6000806040838503121561110957600080fd5b61111283610f2b565b915061112060208401610f2b565b90509250929050565b600181811c9082168061113d57607f821691505b60208210810361115d57634e487b7160e01b600052602260045260246000fd5b50919050565b60008351611175818460208801610eaf565b835190830190611189818360208801610eaf565b01949350505050565b60006001600160a01b038087168352808616602084015250836040830152608060608301526111c46080830184610ed3565b9695505050505050565b6000602082840312156111e057600080fd5b81516106f781610e7c56fea164736f6c6343000811000a", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/contracts/artifacts/@openzeppelin/contracts/token/ERC721/IERC721.sol/IERC721.dbg.json b/contracts/artifacts/@openzeppelin/contracts/token/ERC721/IERC721.sol/IERC721.dbg.json deleted file mode 100644 index b8d2318f..00000000 --- a/contracts/artifacts/@openzeppelin/contracts/token/ERC721/IERC721.sol/IERC721.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" -} diff --git a/contracts/artifacts/@openzeppelin/contracts/token/ERC721/IERC721.sol/IERC721.json b/contracts/artifacts/@openzeppelin/contracts/token/ERC721/IERC721.sol/IERC721.json deleted file mode 100644 index 3677fd69..00000000 --- a/contracts/artifacts/@openzeppelin/contracts/token/ERC721/IERC721.sol/IERC721.json +++ /dev/null @@ -1,296 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "IERC721", - "sourceName": "@openzeppelin/contracts/token/ERC721/IERC721.sol", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "approved", - "type": "address" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - } - ], - "name": "Approval", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "operator", - "type": "address" - }, - { - "indexed": false, - "internalType": "bool", - "name": "approved", - "type": "bool" - } - ], - "name": "ApprovalForAll", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - } - ], - "name": "Transfer", - "type": "event" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - } - ], - "name": "approve", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "owner", - "type": "address" - } - ], - "name": "balanceOf", - "outputs": [ - { - "internalType": "uint256", - "name": "balance", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - } - ], - "name": "getApproved", - "outputs": [ - { - "internalType": "address", - "name": "operator", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "internalType": "address", - "name": "operator", - "type": "address" - } - ], - "name": "isApprovedForAll", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - } - ], - "name": "ownerOf", - "outputs": [ - { - "internalType": "address", - "name": "owner", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - } - ], - "name": "safeTransferFrom", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "safeTransferFrom", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "operator", - "type": "address" - }, - { - "internalType": "bool", - "name": "approved", - "type": "bool" - } - ], - "name": "setApprovalForAll", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes4", - "name": "interfaceId", - "type": "bytes4" - } - ], - "name": "supportsInterface", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - } - ], - "name": "transferFrom", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - } - ], - "bytecode": "0x", - "deployedBytecode": "0x", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/contracts/artifacts/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol/IERC721Receiver.dbg.json b/contracts/artifacts/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol/IERC721Receiver.dbg.json deleted file mode 100644 index b8d2318f..00000000 --- a/contracts/artifacts/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol/IERC721Receiver.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" -} diff --git a/contracts/artifacts/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol/IERC721Receiver.json b/contracts/artifacts/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol/IERC721Receiver.json deleted file mode 100644 index e91c7b08..00000000 --- a/contracts/artifacts/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol/IERC721Receiver.json +++ /dev/null @@ -1,45 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "IERC721Receiver", - "sourceName": "@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol", - "abi": [ - { - "inputs": [ - { - "internalType": "address", - "name": "operator", - "type": "address" - }, - { - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "onERC721Received", - "outputs": [ - { - "internalType": "bytes4", - "name": "", - "type": "bytes4" - } - ], - "stateMutability": "nonpayable", - "type": "function" - } - ], - "bytecode": "0x", - "deployedBytecode": "0x", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/contracts/artifacts/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol/IERC721Metadata.dbg.json b/contracts/artifacts/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol/IERC721Metadata.dbg.json deleted file mode 100644 index c8024a50..00000000 --- a/contracts/artifacts/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol/IERC721Metadata.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" -} diff --git a/contracts/artifacts/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol/IERC721Metadata.json b/contracts/artifacts/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol/IERC721Metadata.json deleted file mode 100644 index 4eea2c23..00000000 --- a/contracts/artifacts/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol/IERC721Metadata.json +++ /dev/null @@ -1,341 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "IERC721Metadata", - "sourceName": "@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "approved", - "type": "address" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - } - ], - "name": "Approval", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "operator", - "type": "address" - }, - { - "indexed": false, - "internalType": "bool", - "name": "approved", - "type": "bool" - } - ], - "name": "ApprovalForAll", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - } - ], - "name": "Transfer", - "type": "event" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - } - ], - "name": "approve", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "owner", - "type": "address" - } - ], - "name": "balanceOf", - "outputs": [ - { - "internalType": "uint256", - "name": "balance", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - } - ], - "name": "getApproved", - "outputs": [ - { - "internalType": "address", - "name": "operator", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "internalType": "address", - "name": "operator", - "type": "address" - } - ], - "name": "isApprovedForAll", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "name", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - } - ], - "name": "ownerOf", - "outputs": [ - { - "internalType": "address", - "name": "owner", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - } - ], - "name": "safeTransferFrom", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "safeTransferFrom", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "operator", - "type": "address" - }, - { - "internalType": "bool", - "name": "approved", - "type": "bool" - } - ], - "name": "setApprovalForAll", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes4", - "name": "interfaceId", - "type": "bytes4" - } - ], - "name": "supportsInterface", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "symbol", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - } - ], - "name": "tokenURI", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - } - ], - "name": "transferFrom", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - } - ], - "bytecode": "0x", - "deployedBytecode": "0x", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/contracts/artifacts/@openzeppelin/contracts/utils/Address.sol/Address.dbg.json b/contracts/artifacts/@openzeppelin/contracts/utils/Address.sol/Address.dbg.json deleted file mode 100644 index 4058cb44..00000000 --- a/contracts/artifacts/@openzeppelin/contracts/utils/Address.sol/Address.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" -} diff --git a/contracts/artifacts/@openzeppelin/contracts/utils/Address.sol/Address.json b/contracts/artifacts/@openzeppelin/contracts/utils/Address.sol/Address.json deleted file mode 100644 index d8ec594c..00000000 --- a/contracts/artifacts/@openzeppelin/contracts/utils/Address.sol/Address.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "Address", - "sourceName": "@openzeppelin/contracts/utils/Address.sol", - "abi": [], - "bytecode": "0x602d6037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a", - "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/contracts/artifacts/@openzeppelin/contracts/utils/Context.sol/Context.dbg.json b/contracts/artifacts/@openzeppelin/contracts/utils/Context.sol/Context.dbg.json deleted file mode 100644 index 4058cb44..00000000 --- a/contracts/artifacts/@openzeppelin/contracts/utils/Context.sol/Context.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" -} diff --git a/contracts/artifacts/@openzeppelin/contracts/utils/Context.sol/Context.json b/contracts/artifacts/@openzeppelin/contracts/utils/Context.sol/Context.json deleted file mode 100644 index 8fe86fc7..00000000 --- a/contracts/artifacts/@openzeppelin/contracts/utils/Context.sol/Context.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "Context", - "sourceName": "@openzeppelin/contracts/utils/Context.sol", - "abi": [], - "bytecode": "0x", - "deployedBytecode": "0x", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/contracts/artifacts/@openzeppelin/contracts/utils/Counters.sol/Counters.dbg.json b/contracts/artifacts/@openzeppelin/contracts/utils/Counters.sol/Counters.dbg.json deleted file mode 100644 index 4058cb44..00000000 --- a/contracts/artifacts/@openzeppelin/contracts/utils/Counters.sol/Counters.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" -} diff --git a/contracts/artifacts/@openzeppelin/contracts/utils/Counters.sol/Counters.json b/contracts/artifacts/@openzeppelin/contracts/utils/Counters.sol/Counters.json deleted file mode 100644 index d776d599..00000000 --- a/contracts/artifacts/@openzeppelin/contracts/utils/Counters.sol/Counters.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "Counters", - "sourceName": "@openzeppelin/contracts/utils/Counters.sol", - "abi": [], - "bytecode": "0x602d6037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a", - "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/contracts/artifacts/@openzeppelin/contracts/utils/StorageSlot.sol/StorageSlot.dbg.json b/contracts/artifacts/@openzeppelin/contracts/utils/StorageSlot.sol/StorageSlot.dbg.json deleted file mode 100644 index 4058cb44..00000000 --- a/contracts/artifacts/@openzeppelin/contracts/utils/StorageSlot.sol/StorageSlot.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" -} diff --git a/contracts/artifacts/@openzeppelin/contracts/utils/StorageSlot.sol/StorageSlot.json b/contracts/artifacts/@openzeppelin/contracts/utils/StorageSlot.sol/StorageSlot.json deleted file mode 100644 index 0dd65d40..00000000 --- a/contracts/artifacts/@openzeppelin/contracts/utils/StorageSlot.sol/StorageSlot.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "StorageSlot", - "sourceName": "@openzeppelin/contracts/utils/StorageSlot.sol", - "abi": [], - "bytecode": "0x602d6037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a", - "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/contracts/artifacts/@openzeppelin/contracts/utils/Strings.sol/Strings.dbg.json b/contracts/artifacts/@openzeppelin/contracts/utils/Strings.sol/Strings.dbg.json deleted file mode 100644 index 4058cb44..00000000 --- a/contracts/artifacts/@openzeppelin/contracts/utils/Strings.sol/Strings.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" -} diff --git a/contracts/artifacts/@openzeppelin/contracts/utils/Strings.sol/Strings.json b/contracts/artifacts/@openzeppelin/contracts/utils/Strings.sol/Strings.json deleted file mode 100644 index ce9ebf9c..00000000 --- a/contracts/artifacts/@openzeppelin/contracts/utils/Strings.sol/Strings.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "Strings", - "sourceName": "@openzeppelin/contracts/utils/Strings.sol", - "abi": [], - "bytecode": "0x602d6037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a", - "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/contracts/artifacts/@openzeppelin/contracts/utils/introspection/ERC165.sol/ERC165.dbg.json b/contracts/artifacts/@openzeppelin/contracts/utils/introspection/ERC165.sol/ERC165.dbg.json deleted file mode 100644 index b8d2318f..00000000 --- a/contracts/artifacts/@openzeppelin/contracts/utils/introspection/ERC165.sol/ERC165.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" -} diff --git a/contracts/artifacts/@openzeppelin/contracts/utils/introspection/ERC165.sol/ERC165.json b/contracts/artifacts/@openzeppelin/contracts/utils/introspection/ERC165.sol/ERC165.json deleted file mode 100644 index 1304472c..00000000 --- a/contracts/artifacts/@openzeppelin/contracts/utils/introspection/ERC165.sol/ERC165.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "ERC165", - "sourceName": "@openzeppelin/contracts/utils/introspection/ERC165.sol", - "abi": [ - { - "inputs": [ - { - "internalType": "bytes4", - "name": "interfaceId", - "type": "bytes4" - } - ], - "name": "supportsInterface", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - } - ], - "bytecode": "0x", - "deployedBytecode": "0x", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/contracts/artifacts/@openzeppelin/contracts/utils/introspection/IERC165.sol/IERC165.dbg.json b/contracts/artifacts/@openzeppelin/contracts/utils/introspection/IERC165.sol/IERC165.dbg.json deleted file mode 100644 index b8d2318f..00000000 --- a/contracts/artifacts/@openzeppelin/contracts/utils/introspection/IERC165.sol/IERC165.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" -} diff --git a/contracts/artifacts/@openzeppelin/contracts/utils/introspection/IERC165.sol/IERC165.json b/contracts/artifacts/@openzeppelin/contracts/utils/introspection/IERC165.sol/IERC165.json deleted file mode 100644 index ff87f91e..00000000 --- a/contracts/artifacts/@openzeppelin/contracts/utils/introspection/IERC165.sol/IERC165.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "IERC165", - "sourceName": "@openzeppelin/contracts/utils/introspection/IERC165.sol", - "abi": [ - { - "inputs": [ - { - "internalType": "bytes4", - "name": "interfaceId", - "type": "bytes4" - } - ], - "name": "supportsInterface", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - } - ], - "bytecode": "0x", - "deployedBytecode": "0x", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/contracts/artifacts/@openzeppelin/contracts/utils/math/Math.sol/Math.dbg.json b/contracts/artifacts/@openzeppelin/contracts/utils/math/Math.sol/Math.dbg.json deleted file mode 100644 index b8d2318f..00000000 --- a/contracts/artifacts/@openzeppelin/contracts/utils/math/Math.sol/Math.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" -} diff --git a/contracts/artifacts/@openzeppelin/contracts/utils/math/Math.sol/Math.json b/contracts/artifacts/@openzeppelin/contracts/utils/math/Math.sol/Math.json deleted file mode 100644 index 7da67804..00000000 --- a/contracts/artifacts/@openzeppelin/contracts/utils/math/Math.sol/Math.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "Math", - "sourceName": "@openzeppelin/contracts/utils/math/Math.sol", - "abi": [], - "bytecode": "0x602d6037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a", - "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/contracts/artifacts/@openzeppelin/contracts/utils/math/SignedMath.sol/SignedMath.dbg.json b/contracts/artifacts/@openzeppelin/contracts/utils/math/SignedMath.sol/SignedMath.dbg.json deleted file mode 100644 index b8d2318f..00000000 --- a/contracts/artifacts/@openzeppelin/contracts/utils/math/SignedMath.sol/SignedMath.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" -} diff --git a/contracts/artifacts/@openzeppelin/contracts/utils/math/SignedMath.sol/SignedMath.json b/contracts/artifacts/@openzeppelin/contracts/utils/math/SignedMath.sol/SignedMath.json deleted file mode 100644 index 5b2408ec..00000000 --- a/contracts/artifacts/@openzeppelin/contracts/utils/math/SignedMath.sol/SignedMath.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "SignedMath", - "sourceName": "@openzeppelin/contracts/utils/math/SignedMath.sol", - "abi": [], - "bytecode": "0x602d6037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a", - "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/contracts/artifacts/build-info/58fb59cc656bfddaae1de55a017c315b.json b/contracts/artifacts/build-info/58fb59cc656bfddaae1de55a017c315b.json deleted file mode 100644 index d4a8c8ad..00000000 --- a/contracts/artifacts/build-info/58fb59cc656bfddaae1de55a017c315b.json +++ /dev/null @@ -1 +0,0 @@ -{"id":"58fb59cc656bfddaae1de55a017c315b","_format":"hh-sol-build-info-1","solcVersion":"0.8.17","solcLongVersion":"0.8.17+commit.8df45f5f","input":{"language":"Solidity","sources":{"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.5.0) (interfaces/draft-IERC1822.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\n * proxy whose upgrades are fully controlled by the current implementation.\n */\ninterface IERC1822ProxiableUpgradeable {\n /**\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\n * address.\n *\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\n * function revert if invoked through a proxy.\n */\n function proxiableUUID() external view returns (bytes32);\n}\n"},"@openzeppelin/contracts-upgradeable/interfaces/IERC1967Upgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (interfaces/IERC1967.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\n *\n * _Available since v4.8.3._\n */\ninterface IERC1967Upgradeable {\n /**\n * @dev Emitted when the implementation is upgraded.\n */\n event Upgraded(address indexed implementation);\n\n /**\n * @dev Emitted when the admin account has changed.\n */\n event AdminChanged(address previousAdmin, address newAdmin);\n\n /**\n * @dev Emitted when the beacon is changed.\n */\n event BeaconUpgraded(address indexed beacon);\n}\n"},"@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\n */\ninterface IBeaconUpgradeable {\n /**\n * @dev Must return an address that can be used as a delegate call target.\n *\n * {BeaconProxy} will check that this address is a contract.\n */\n function implementation() external view returns (address);\n}\n"},"@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/ERC1967/ERC1967Upgrade.sol)\n\npragma solidity ^0.8.2;\n\nimport \"../beacon/IBeaconUpgradeable.sol\";\nimport \"../../interfaces/IERC1967Upgradeable.sol\";\nimport \"../../interfaces/draft-IERC1822Upgradeable.sol\";\nimport \"../../utils/AddressUpgradeable.sol\";\nimport \"../../utils/StorageSlotUpgradeable.sol\";\nimport {Initializable} from \"../utils/Initializable.sol\";\n\n/**\n * @dev This abstract contract provides getters and event emitting update functions for\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\n *\n * _Available since v4.1._\n */\nabstract contract ERC1967UpgradeUpgradeable is Initializable, IERC1967Upgradeable {\n // This is the keccak-256 hash of \"eip1967.proxy.rollback\" subtracted by 1\n bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\n\n /**\n * @dev Storage slot with the address of the current implementation.\n * This is the keccak-256 hash of \"eip1967.proxy.implementation\" subtracted by 1, and is\n * validated in the constructor.\n */\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n\n function __ERC1967Upgrade_init() internal onlyInitializing {\n }\n\n function __ERC1967Upgrade_init_unchained() internal onlyInitializing {\n }\n /**\n * @dev Returns the current implementation address.\n */\n function _getImplementation() internal view returns (address) {\n return StorageSlotUpgradeable.getAddressSlot(_IMPLEMENTATION_SLOT).value;\n }\n\n /**\n * @dev Stores a new address in the EIP1967 implementation slot.\n */\n function _setImplementation(address newImplementation) private {\n require(AddressUpgradeable.isContract(newImplementation), \"ERC1967: new implementation is not a contract\");\n StorageSlotUpgradeable.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\n }\n\n /**\n * @dev Perform implementation upgrade\n *\n * Emits an {Upgraded} event.\n */\n function _upgradeTo(address newImplementation) internal {\n _setImplementation(newImplementation);\n emit Upgraded(newImplementation);\n }\n\n /**\n * @dev Perform implementation upgrade with additional setup call.\n *\n * Emits an {Upgraded} event.\n */\n function _upgradeToAndCall(address newImplementation, bytes memory data, bool forceCall) internal {\n _upgradeTo(newImplementation);\n if (data.length > 0 || forceCall) {\n AddressUpgradeable.functionDelegateCall(newImplementation, data);\n }\n }\n\n /**\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\n *\n * Emits an {Upgraded} event.\n */\n function _upgradeToAndCallUUPS(address newImplementation, bytes memory data, bool forceCall) internal {\n // Upgrades from old implementations will perform a rollback test. This test requires the new\n // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\n // this special case will break upgrade paths from old UUPS implementation to new ones.\n if (StorageSlotUpgradeable.getBooleanSlot(_ROLLBACK_SLOT).value) {\n _setImplementation(newImplementation);\n } else {\n try IERC1822ProxiableUpgradeable(newImplementation).proxiableUUID() returns (bytes32 slot) {\n require(slot == _IMPLEMENTATION_SLOT, \"ERC1967Upgrade: unsupported proxiableUUID\");\n } catch {\n revert(\"ERC1967Upgrade: new implementation is not UUPS\");\n }\n _upgradeToAndCall(newImplementation, data, forceCall);\n }\n }\n\n /**\n * @dev Storage slot with the admin of the contract.\n * This is the keccak-256 hash of \"eip1967.proxy.admin\" subtracted by 1, and is\n * validated in the constructor.\n */\n bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\n\n /**\n * @dev Returns the current admin.\n */\n function _getAdmin() internal view returns (address) {\n return StorageSlotUpgradeable.getAddressSlot(_ADMIN_SLOT).value;\n }\n\n /**\n * @dev Stores a new address in the EIP1967 admin slot.\n */\n function _setAdmin(address newAdmin) private {\n require(newAdmin != address(0), \"ERC1967: new admin is the zero address\");\n StorageSlotUpgradeable.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\n }\n\n /**\n * @dev Changes the admin of the proxy.\n *\n * Emits an {AdminChanged} event.\n */\n function _changeAdmin(address newAdmin) internal {\n emit AdminChanged(_getAdmin(), newAdmin);\n _setAdmin(newAdmin);\n }\n\n /**\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\n * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\n */\n bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\n\n /**\n * @dev Returns the current beacon.\n */\n function _getBeacon() internal view returns (address) {\n return StorageSlotUpgradeable.getAddressSlot(_BEACON_SLOT).value;\n }\n\n /**\n * @dev Stores a new beacon in the EIP1967 beacon slot.\n */\n function _setBeacon(address newBeacon) private {\n require(AddressUpgradeable.isContract(newBeacon), \"ERC1967: new beacon is not a contract\");\n require(\n AddressUpgradeable.isContract(IBeaconUpgradeable(newBeacon).implementation()),\n \"ERC1967: beacon implementation is not a contract\"\n );\n StorageSlotUpgradeable.getAddressSlot(_BEACON_SLOT).value = newBeacon;\n }\n\n /**\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\n *\n * Emits a {BeaconUpgraded} event.\n */\n function _upgradeBeaconToAndCall(address newBeacon, bytes memory data, bool forceCall) internal {\n _setBeacon(newBeacon);\n emit BeaconUpgraded(newBeacon);\n if (data.length > 0 || forceCall) {\n AddressUpgradeable.functionDelegateCall(IBeaconUpgradeable(newBeacon).implementation(), data);\n }\n }\n\n /**\n * @dev This empty reserved space is put in place to allow future versions to add new\n * variables without shifting down storage in the inheritance chain.\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\n */\n uint256[50] private __gap;\n}\n"},"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\n\npragma solidity ^0.8.2;\n\nimport \"../../utils/AddressUpgradeable.sol\";\n\n/**\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\n *\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\n * reused. This mechanism prevents re-execution of each \"step\" but allows the creation of new initialization steps in\n * case an upgrade adds a module that needs to be initialized.\n *\n * For example:\n *\n * [.hljs-theme-light.nopadding]\n * ```solidity\n * contract MyToken is ERC20Upgradeable {\n * function initialize() initializer public {\n * __ERC20_init(\"MyToken\", \"MTK\");\n * }\n * }\n *\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\n * function initializeV2() reinitializer(2) public {\n * __ERC20Permit_init(\"MyToken\");\n * }\n * }\n * ```\n *\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\n *\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\n *\n * [CAUTION]\n * ====\n * Avoid leaving a contract uninitialized.\n *\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\n *\n * [.hljs-theme-light.nopadding]\n * ```\n * /// @custom:oz-upgrades-unsafe-allow constructor\n * constructor() {\n * _disableInitializers();\n * }\n * ```\n * ====\n */\nabstract contract Initializable {\n /**\n * @dev Indicates that the contract has been initialized.\n * @custom:oz-retyped-from bool\n */\n uint8 private _initialized;\n\n /**\n * @dev Indicates that the contract is in the process of being initialized.\n */\n bool private _initializing;\n\n /**\n * @dev Triggered when the contract has been initialized or reinitialized.\n */\n event Initialized(uint8 version);\n\n /**\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\n * `onlyInitializing` functions can be used to initialize parent contracts.\n *\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\n * constructor.\n *\n * Emits an {Initialized} event.\n */\n modifier initializer() {\n bool isTopLevelCall = !_initializing;\n require(\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\n \"Initializable: contract is already initialized\"\n );\n _initialized = 1;\n if (isTopLevelCall) {\n _initializing = true;\n }\n _;\n if (isTopLevelCall) {\n _initializing = false;\n emit Initialized(1);\n }\n }\n\n /**\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\n * used to initialize parent contracts.\n *\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\n * are added through upgrades and that require initialization.\n *\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\n * cannot be nested. If one is invoked in the context of another, execution will revert.\n *\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\n * a contract, executing them in the right order is up to the developer or operator.\n *\n * WARNING: setting the version to 255 will prevent any future reinitialization.\n *\n * Emits an {Initialized} event.\n */\n modifier reinitializer(uint8 version) {\n require(!_initializing && _initialized < version, \"Initializable: contract is already initialized\");\n _initialized = version;\n _initializing = true;\n _;\n _initializing = false;\n emit Initialized(version);\n }\n\n /**\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\n */\n modifier onlyInitializing() {\n require(_initializing, \"Initializable: contract is not initializing\");\n _;\n }\n\n /**\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\n * through proxies.\n *\n * Emits an {Initialized} event the first time it is successfully executed.\n */\n function _disableInitializers() internal virtual {\n require(!_initializing, \"Initializable: contract is initializing\");\n if (_initialized != type(uint8).max) {\n _initialized = type(uint8).max;\n emit Initialized(type(uint8).max);\n }\n }\n\n /**\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\n */\n function _getInitializedVersion() internal view returns (uint8) {\n return _initialized;\n }\n\n /**\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\n */\n function _isInitializing() internal view returns (bool) {\n return _initializing;\n }\n}\n"},"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/UUPSUpgradeable.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../../interfaces/draft-IERC1822Upgradeable.sol\";\nimport \"../ERC1967/ERC1967UpgradeUpgradeable.sol\";\nimport {Initializable} from \"./Initializable.sol\";\n\n/**\n * @dev An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an\n * {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy.\n *\n * A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is\n * reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing\n * `UUPSUpgradeable` with a custom implementation of upgrades.\n *\n * The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism.\n *\n * _Available since v4.1._\n */\nabstract contract UUPSUpgradeable is Initializable, IERC1822ProxiableUpgradeable, ERC1967UpgradeUpgradeable {\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable state-variable-assignment\n address private immutable __self = address(this);\n\n /**\n * @dev Check that the execution is being performed through a delegatecall call and that the execution context is\n * a proxy contract with an implementation (as defined in ERC1967) pointing to self. This should only be the case\n * for UUPS and transparent proxies that are using the current contract as their implementation. Execution of a\n * function through ERC1167 minimal proxies (clones) would not normally pass this test, but is not guaranteed to\n * fail.\n */\n modifier onlyProxy() {\n require(address(this) != __self, \"Function must be called through delegatecall\");\n require(_getImplementation() == __self, \"Function must be called through active proxy\");\n _;\n }\n\n /**\n * @dev Check that the execution is not being performed through a delegate call. This allows a function to be\n * callable on the implementing contract but not through proxies.\n */\n modifier notDelegated() {\n require(address(this) == __self, \"UUPSUpgradeable: must not be called through delegatecall\");\n _;\n }\n\n function __UUPSUpgradeable_init() internal onlyInitializing {\n }\n\n function __UUPSUpgradeable_init_unchained() internal onlyInitializing {\n }\n /**\n * @dev Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the\n * implementation. It is used to validate the implementation's compatibility when performing an upgrade.\n *\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\n * function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\n */\n function proxiableUUID() external view virtual override notDelegated returns (bytes32) {\n return _IMPLEMENTATION_SLOT;\n }\n\n /**\n * @dev Upgrade the implementation of the proxy to `newImplementation`.\n *\n * Calls {_authorizeUpgrade}.\n *\n * Emits an {Upgraded} event.\n *\n * @custom:oz-upgrades-unsafe-allow-reachable delegatecall\n */\n function upgradeTo(address newImplementation) public virtual onlyProxy {\n _authorizeUpgrade(newImplementation);\n _upgradeToAndCallUUPS(newImplementation, new bytes(0), false);\n }\n\n /**\n * @dev Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call\n * encoded in `data`.\n *\n * Calls {_authorizeUpgrade}.\n *\n * Emits an {Upgraded} event.\n *\n * @custom:oz-upgrades-unsafe-allow-reachable delegatecall\n */\n function upgradeToAndCall(address newImplementation, bytes memory data) public payable virtual onlyProxy {\n _authorizeUpgrade(newImplementation);\n _upgradeToAndCallUUPS(newImplementation, data, true);\n }\n\n /**\n * @dev Function that should revert when `msg.sender` is not authorized to upgrade the contract. Called by\n * {upgradeTo} and {upgradeToAndCall}.\n *\n * Normally, this function will use an xref:access.adoc[access control] modifier such as {Ownable-onlyOwner}.\n *\n * ```solidity\n * function _authorizeUpgrade(address) internal override onlyOwner {}\n * ```\n */\n function _authorizeUpgrade(address newImplementation) internal virtual;\n\n /**\n * @dev This empty reserved space is put in place to allow future versions to add new\n * variables without shifting down storage in the inheritance chain.\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\n */\n uint256[50] private __gap;\n}\n"},"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\n\npragma solidity ^0.8.1;\n\n/**\n * @dev Collection of functions related to the address type\n */\nlibrary AddressUpgradeable {\n /**\n * @dev Returns true if `account` is a contract.\n *\n * [IMPORTANT]\n * ====\n * It is unsafe to assume that an address for which this function returns\n * false is an externally-owned account (EOA) and not a contract.\n *\n * Among others, `isContract` will return false for the following\n * types of addresses:\n *\n * - an externally-owned account\n * - a contract in construction\n * - an address where a contract will be created\n * - an address where a contract lived, but was destroyed\n *\n * Furthermore, `isContract` will also return true if the target contract within\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\n * which only has an effect at the end of a transaction.\n * ====\n *\n * [IMPORTANT]\n * ====\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\n *\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\n * constructor.\n * ====\n */\n function isContract(address account) internal view returns (bool) {\n // This method relies on extcodesize/address.code.length, which returns 0\n // for contracts in construction, since the code is only stored at the end\n // of the constructor execution.\n\n return account.code.length > 0;\n }\n\n /**\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n * `recipient`, forwarding all available gas and reverting on errors.\n *\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\n * imposed by `transfer`, making them unable to receive funds via\n * `transfer`. {sendValue} removes this limitation.\n *\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n *\n * IMPORTANT: because control is transferred to `recipient`, care must be\n * taken to not create reentrancy vulnerabilities. Consider using\n * {ReentrancyGuard} or the\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\n */\n function sendValue(address payable recipient, uint256 amount) internal {\n require(address(this).balance >= amount, \"Address: insufficient balance\");\n\n (bool success, ) = recipient.call{value: amount}(\"\");\n require(success, \"Address: unable to send value, recipient may have reverted\");\n }\n\n /**\n * @dev Performs a Solidity function call using a low level `call`. A\n * plain `call` is an unsafe replacement for a function call: use this\n * function instead.\n *\n * If `target` reverts with a revert reason, it is bubbled up by this\n * function (like regular Solidity function calls).\n *\n * Returns the raw returned data. To convert to the expected return value,\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n *\n * Requirements:\n *\n * - `target` must be a contract.\n * - calling `target` with `data` must not revert.\n *\n * _Available since v3.1._\n */\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\n return functionCallWithValue(target, data, 0, \"Address: low-level call failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n * `errorMessage` as a fallback revert reason when `target` reverts.\n *\n * _Available since v3.1._\n */\n function functionCall(\n address target,\n bytes memory data,\n string memory errorMessage\n ) internal returns (bytes memory) {\n return functionCallWithValue(target, data, 0, errorMessage);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but also transferring `value` wei to `target`.\n *\n * Requirements:\n *\n * - the calling contract must have an ETH balance of at least `value`.\n * - the called Solidity function must be `payable`.\n *\n * _Available since v3.1._\n */\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\n return functionCallWithValue(target, data, value, \"Address: low-level call with value failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n * with `errorMessage` as a fallback revert reason when `target` reverts.\n *\n * _Available since v3.1._\n */\n function functionCallWithValue(\n address target,\n bytes memory data,\n uint256 value,\n string memory errorMessage\n ) internal returns (bytes memory) {\n require(address(this).balance >= value, \"Address: insufficient balance for call\");\n (bool success, bytes memory returndata) = target.call{value: value}(data);\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but performing a static call.\n *\n * _Available since v3.3._\n */\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\n return functionStaticCall(target, data, \"Address: low-level static call failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n * but performing a static call.\n *\n * _Available since v3.3._\n */\n function functionStaticCall(\n address target,\n bytes memory data,\n string memory errorMessage\n ) internal view returns (bytes memory) {\n (bool success, bytes memory returndata) = target.staticcall(data);\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but performing a delegate call.\n *\n * _Available since v3.4._\n */\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\n return functionDelegateCall(target, data, \"Address: low-level delegate call failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n * but performing a delegate call.\n *\n * _Available since v3.4._\n */\n function functionDelegateCall(\n address target,\n bytes memory data,\n string memory errorMessage\n ) internal returns (bytes memory) {\n (bool success, bytes memory returndata) = target.delegatecall(data);\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\n }\n\n /**\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\n *\n * _Available since v4.8._\n */\n function verifyCallResultFromTarget(\n address target,\n bool success,\n bytes memory returndata,\n string memory errorMessage\n ) internal view returns (bytes memory) {\n if (success) {\n if (returndata.length == 0) {\n // only check isContract if the call was successful and the return data is empty\n // otherwise we already know that it was a contract\n require(isContract(target), \"Address: call to non-contract\");\n }\n return returndata;\n } else {\n _revert(returndata, errorMessage);\n }\n }\n\n /**\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\n * revert reason or using the provided one.\n *\n * _Available since v4.3._\n */\n function verifyCallResult(\n bool success,\n bytes memory returndata,\n string memory errorMessage\n ) internal pure returns (bytes memory) {\n if (success) {\n return returndata;\n } else {\n _revert(returndata, errorMessage);\n }\n }\n\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\n // Look for revert reason and bubble it up if present\n if (returndata.length > 0) {\n // The easiest way to bubble the revert reason is using memory via assembly\n /// @solidity memory-safe-assembly\n assembly {\n let returndata_size := mload(returndata)\n revert(add(32, returndata), returndata_size)\n }\n } else {\n revert(errorMessage);\n }\n }\n}\n"},"@openzeppelin/contracts-upgradeable/utils/CheckpointsUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Checkpoints.sol)\n// This file was procedurally generated from scripts/generate/templates/Checkpoints.js.\n\npragma solidity ^0.8.0;\n\nimport \"./math/MathUpgradeable.sol\";\nimport \"./math/SafeCastUpgradeable.sol\";\n\n/**\n * @dev This library defines the `History` struct, for checkpointing values as they change at different points in\n * time, and later looking up past values by block number. See {Votes} as an example.\n *\n * To create a history of checkpoints define a variable type `Checkpoints.History` in your contract, and store a new\n * checkpoint for the current transaction block using the {push} function.\n *\n * _Available since v4.5._\n */\nlibrary CheckpointsUpgradeable {\n struct History {\n Checkpoint[] _checkpoints;\n }\n\n struct Checkpoint {\n uint32 _blockNumber;\n uint224 _value;\n }\n\n /**\n * @dev Returns the value at a given block number. If a checkpoint is not available at that block, the closest one\n * before it is returned, or zero otherwise. Because the number returned corresponds to that at the end of the\n * block, the requested block number must be in the past, excluding the current block.\n */\n function getAtBlock(History storage self, uint256 blockNumber) internal view returns (uint256) {\n require(blockNumber < block.number, \"Checkpoints: block not yet mined\");\n uint32 key = SafeCastUpgradeable.toUint32(blockNumber);\n\n uint256 len = self._checkpoints.length;\n uint256 pos = _upperBinaryLookup(self._checkpoints, key, 0, len);\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\n }\n\n /**\n * @dev Returns the value at a given block number. If a checkpoint is not available at that block, the closest one\n * before it is returned, or zero otherwise. Similar to {upperLookup} but optimized for the case when the searched\n * checkpoint is probably \"recent\", defined as being among the last sqrt(N) checkpoints where N is the number of\n * checkpoints.\n */\n function getAtProbablyRecentBlock(History storage self, uint256 blockNumber) internal view returns (uint256) {\n require(blockNumber < block.number, \"Checkpoints: block not yet mined\");\n uint32 key = SafeCastUpgradeable.toUint32(blockNumber);\n\n uint256 len = self._checkpoints.length;\n\n uint256 low = 0;\n uint256 high = len;\n\n if (len > 5) {\n uint256 mid = len - MathUpgradeable.sqrt(len);\n if (key < _unsafeAccess(self._checkpoints, mid)._blockNumber) {\n high = mid;\n } else {\n low = mid + 1;\n }\n }\n\n uint256 pos = _upperBinaryLookup(self._checkpoints, key, low, high);\n\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\n }\n\n /**\n * @dev Pushes a value onto a History so that it is stored as the checkpoint for the current block.\n *\n * Returns previous value and new value.\n */\n function push(History storage self, uint256 value) internal returns (uint256, uint256) {\n return _insert(self._checkpoints, SafeCastUpgradeable.toUint32(block.number), SafeCastUpgradeable.toUint224(value));\n }\n\n /**\n * @dev Pushes a value onto a History, by updating the latest value using binary operation `op`. The new value will\n * be set to `op(latest, delta)`.\n *\n * Returns previous value and new value.\n */\n function push(\n History storage self,\n function(uint256, uint256) view returns (uint256) op,\n uint256 delta\n ) internal returns (uint256, uint256) {\n return push(self, op(latest(self), delta));\n }\n\n /**\n * @dev Returns the value in the most recent checkpoint, or zero if there are no checkpoints.\n */\n function latest(History storage self) internal view returns (uint224) {\n uint256 pos = self._checkpoints.length;\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\n }\n\n /**\n * @dev Returns whether there is a checkpoint in the structure (i.e. it is not empty), and if so the key and value\n * in the most recent checkpoint.\n */\n function latestCheckpoint(\n History storage self\n ) internal view returns (bool exists, uint32 _blockNumber, uint224 _value) {\n uint256 pos = self._checkpoints.length;\n if (pos == 0) {\n return (false, 0, 0);\n } else {\n Checkpoint memory ckpt = _unsafeAccess(self._checkpoints, pos - 1);\n return (true, ckpt._blockNumber, ckpt._value);\n }\n }\n\n /**\n * @dev Returns the number of checkpoint.\n */\n function length(History storage self) internal view returns (uint256) {\n return self._checkpoints.length;\n }\n\n /**\n * @dev Pushes a (`key`, `value`) pair into an ordered list of checkpoints, either by inserting a new checkpoint,\n * or by updating the last one.\n */\n function _insert(Checkpoint[] storage self, uint32 key, uint224 value) private returns (uint224, uint224) {\n uint256 pos = self.length;\n\n if (pos > 0) {\n // Copying to memory is important here.\n Checkpoint memory last = _unsafeAccess(self, pos - 1);\n\n // Checkpoint keys must be non-decreasing.\n require(last._blockNumber <= key, \"Checkpoint: decreasing keys\");\n\n // Update or push new checkpoint\n if (last._blockNumber == key) {\n _unsafeAccess(self, pos - 1)._value = value;\n } else {\n self.push(Checkpoint({_blockNumber: key, _value: value}));\n }\n return (last._value, value);\n } else {\n self.push(Checkpoint({_blockNumber: key, _value: value}));\n return (0, value);\n }\n }\n\n /**\n * @dev Return the index of the last (most recent) checkpoint with key lower or equal than the search key, or `high` if there is none.\n * `low` and `high` define a section where to do the search, with inclusive `low` and exclusive `high`.\n *\n * WARNING: `high` should not be greater than the array's length.\n */\n function _upperBinaryLookup(\n Checkpoint[] storage self,\n uint32 key,\n uint256 low,\n uint256 high\n ) private view returns (uint256) {\n while (low < high) {\n uint256 mid = MathUpgradeable.average(low, high);\n if (_unsafeAccess(self, mid)._blockNumber > key) {\n high = mid;\n } else {\n low = mid + 1;\n }\n }\n return high;\n }\n\n /**\n * @dev Return the index of the first (oldest) checkpoint with key is greater or equal than the search key, or `high` if there is none.\n * `low` and `high` define a section where to do the search, with inclusive `low` and exclusive `high`.\n *\n * WARNING: `high` should not be greater than the array's length.\n */\n function _lowerBinaryLookup(\n Checkpoint[] storage self,\n uint32 key,\n uint256 low,\n uint256 high\n ) private view returns (uint256) {\n while (low < high) {\n uint256 mid = MathUpgradeable.average(low, high);\n if (_unsafeAccess(self, mid)._blockNumber < key) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return high;\n }\n\n /**\n * @dev Access an element of the array without performing bounds check. The position is assumed to be within bounds.\n */\n function _unsafeAccess(Checkpoint[] storage self, uint256 pos) private pure returns (Checkpoint storage result) {\n assembly {\n mstore(0, self.slot)\n result.slot := add(keccak256(0, 0x20), pos)\n }\n }\n\n struct Trace224 {\n Checkpoint224[] _checkpoints;\n }\n\n struct Checkpoint224 {\n uint32 _key;\n uint224 _value;\n }\n\n /**\n * @dev Pushes a (`key`, `value`) pair into a Trace224 so that it is stored as the checkpoint.\n *\n * Returns previous value and new value.\n */\n function push(Trace224 storage self, uint32 key, uint224 value) internal returns (uint224, uint224) {\n return _insert(self._checkpoints, key, value);\n }\n\n /**\n * @dev Returns the value in the first (oldest) checkpoint with key greater or equal than the search key, or zero if there is none.\n */\n function lowerLookup(Trace224 storage self, uint32 key) internal view returns (uint224) {\n uint256 len = self._checkpoints.length;\n uint256 pos = _lowerBinaryLookup(self._checkpoints, key, 0, len);\n return pos == len ? 0 : _unsafeAccess(self._checkpoints, pos)._value;\n }\n\n /**\n * @dev Returns the value in the last (most recent) checkpoint with key lower or equal than the search key, or zero if there is none.\n */\n function upperLookup(Trace224 storage self, uint32 key) internal view returns (uint224) {\n uint256 len = self._checkpoints.length;\n uint256 pos = _upperBinaryLookup(self._checkpoints, key, 0, len);\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\n }\n\n /**\n * @dev Returns the value in the last (most recent) checkpoint with key lower or equal than the search key, or zero if there is none.\n *\n * NOTE: This is a variant of {upperLookup} that is optimised to find \"recent\" checkpoint (checkpoints with high keys).\n */\n function upperLookupRecent(Trace224 storage self, uint32 key) internal view returns (uint224) {\n uint256 len = self._checkpoints.length;\n\n uint256 low = 0;\n uint256 high = len;\n\n if (len > 5) {\n uint256 mid = len - MathUpgradeable.sqrt(len);\n if (key < _unsafeAccess(self._checkpoints, mid)._key) {\n high = mid;\n } else {\n low = mid + 1;\n }\n }\n\n uint256 pos = _upperBinaryLookup(self._checkpoints, key, low, high);\n\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\n }\n\n /**\n * @dev Returns the value in the most recent checkpoint, or zero if there are no checkpoints.\n */\n function latest(Trace224 storage self) internal view returns (uint224) {\n uint256 pos = self._checkpoints.length;\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\n }\n\n /**\n * @dev Returns whether there is a checkpoint in the structure (i.e. it is not empty), and if so the key and value\n * in the most recent checkpoint.\n */\n function latestCheckpoint(Trace224 storage self) internal view returns (bool exists, uint32 _key, uint224 _value) {\n uint256 pos = self._checkpoints.length;\n if (pos == 0) {\n return (false, 0, 0);\n } else {\n Checkpoint224 memory ckpt = _unsafeAccess(self._checkpoints, pos - 1);\n return (true, ckpt._key, ckpt._value);\n }\n }\n\n /**\n * @dev Returns the number of checkpoint.\n */\n function length(Trace224 storage self) internal view returns (uint256) {\n return self._checkpoints.length;\n }\n\n /**\n * @dev Pushes a (`key`, `value`) pair into an ordered list of checkpoints, either by inserting a new checkpoint,\n * or by updating the last one.\n */\n function _insert(Checkpoint224[] storage self, uint32 key, uint224 value) private returns (uint224, uint224) {\n uint256 pos = self.length;\n\n if (pos > 0) {\n // Copying to memory is important here.\n Checkpoint224 memory last = _unsafeAccess(self, pos - 1);\n\n // Checkpoint keys must be non-decreasing.\n require(last._key <= key, \"Checkpoint: decreasing keys\");\n\n // Update or push new checkpoint\n if (last._key == key) {\n _unsafeAccess(self, pos - 1)._value = value;\n } else {\n self.push(Checkpoint224({_key: key, _value: value}));\n }\n return (last._value, value);\n } else {\n self.push(Checkpoint224({_key: key, _value: value}));\n return (0, value);\n }\n }\n\n /**\n * @dev Return the index of the last (most recent) checkpoint with key lower or equal than the search key, or `high` if there is none.\n * `low` and `high` define a section where to do the search, with inclusive `low` and exclusive `high`.\n *\n * WARNING: `high` should not be greater than the array's length.\n */\n function _upperBinaryLookup(\n Checkpoint224[] storage self,\n uint32 key,\n uint256 low,\n uint256 high\n ) private view returns (uint256) {\n while (low < high) {\n uint256 mid = MathUpgradeable.average(low, high);\n if (_unsafeAccess(self, mid)._key > key) {\n high = mid;\n } else {\n low = mid + 1;\n }\n }\n return high;\n }\n\n /**\n * @dev Return the index of the first (oldest) checkpoint with key is greater or equal than the search key, or `high` if there is none.\n * `low` and `high` define a section where to do the search, with inclusive `low` and exclusive `high`.\n *\n * WARNING: `high` should not be greater than the array's length.\n */\n function _lowerBinaryLookup(\n Checkpoint224[] storage self,\n uint32 key,\n uint256 low,\n uint256 high\n ) private view returns (uint256) {\n while (low < high) {\n uint256 mid = MathUpgradeable.average(low, high);\n if (_unsafeAccess(self, mid)._key < key) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return high;\n }\n\n /**\n * @dev Access an element of the array without performing bounds check. The position is assumed to be within bounds.\n */\n function _unsafeAccess(\n Checkpoint224[] storage self,\n uint256 pos\n ) private pure returns (Checkpoint224 storage result) {\n assembly {\n mstore(0, self.slot)\n result.slot := add(keccak256(0, 0x20), pos)\n }\n }\n\n struct Trace160 {\n Checkpoint160[] _checkpoints;\n }\n\n struct Checkpoint160 {\n uint96 _key;\n uint160 _value;\n }\n\n /**\n * @dev Pushes a (`key`, `value`) pair into a Trace160 so that it is stored as the checkpoint.\n *\n * Returns previous value and new value.\n */\n function push(Trace160 storage self, uint96 key, uint160 value) internal returns (uint160, uint160) {\n return _insert(self._checkpoints, key, value);\n }\n\n /**\n * @dev Returns the value in the first (oldest) checkpoint with key greater or equal than the search key, or zero if there is none.\n */\n function lowerLookup(Trace160 storage self, uint96 key) internal view returns (uint160) {\n uint256 len = self._checkpoints.length;\n uint256 pos = _lowerBinaryLookup(self._checkpoints, key, 0, len);\n return pos == len ? 0 : _unsafeAccess(self._checkpoints, pos)._value;\n }\n\n /**\n * @dev Returns the value in the last (most recent) checkpoint with key lower or equal than the search key, or zero if there is none.\n */\n function upperLookup(Trace160 storage self, uint96 key) internal view returns (uint160) {\n uint256 len = self._checkpoints.length;\n uint256 pos = _upperBinaryLookup(self._checkpoints, key, 0, len);\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\n }\n\n /**\n * @dev Returns the value in the last (most recent) checkpoint with key lower or equal than the search key, or zero if there is none.\n *\n * NOTE: This is a variant of {upperLookup} that is optimised to find \"recent\" checkpoint (checkpoints with high keys).\n */\n function upperLookupRecent(Trace160 storage self, uint96 key) internal view returns (uint160) {\n uint256 len = self._checkpoints.length;\n\n uint256 low = 0;\n uint256 high = len;\n\n if (len > 5) {\n uint256 mid = len - MathUpgradeable.sqrt(len);\n if (key < _unsafeAccess(self._checkpoints, mid)._key) {\n high = mid;\n } else {\n low = mid + 1;\n }\n }\n\n uint256 pos = _upperBinaryLookup(self._checkpoints, key, low, high);\n\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\n }\n\n /**\n * @dev Returns the value in the most recent checkpoint, or zero if there are no checkpoints.\n */\n function latest(Trace160 storage self) internal view returns (uint160) {\n uint256 pos = self._checkpoints.length;\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\n }\n\n /**\n * @dev Returns whether there is a checkpoint in the structure (i.e. it is not empty), and if so the key and value\n * in the most recent checkpoint.\n */\n function latestCheckpoint(Trace160 storage self) internal view returns (bool exists, uint96 _key, uint160 _value) {\n uint256 pos = self._checkpoints.length;\n if (pos == 0) {\n return (false, 0, 0);\n } else {\n Checkpoint160 memory ckpt = _unsafeAccess(self._checkpoints, pos - 1);\n return (true, ckpt._key, ckpt._value);\n }\n }\n\n /**\n * @dev Returns the number of checkpoint.\n */\n function length(Trace160 storage self) internal view returns (uint256) {\n return self._checkpoints.length;\n }\n\n /**\n * @dev Pushes a (`key`, `value`) pair into an ordered list of checkpoints, either by inserting a new checkpoint,\n * or by updating the last one.\n */\n function _insert(Checkpoint160[] storage self, uint96 key, uint160 value) private returns (uint160, uint160) {\n uint256 pos = self.length;\n\n if (pos > 0) {\n // Copying to memory is important here.\n Checkpoint160 memory last = _unsafeAccess(self, pos - 1);\n\n // Checkpoint keys must be non-decreasing.\n require(last._key <= key, \"Checkpoint: decreasing keys\");\n\n // Update or push new checkpoint\n if (last._key == key) {\n _unsafeAccess(self, pos - 1)._value = value;\n } else {\n self.push(Checkpoint160({_key: key, _value: value}));\n }\n return (last._value, value);\n } else {\n self.push(Checkpoint160({_key: key, _value: value}));\n return (0, value);\n }\n }\n\n /**\n * @dev Return the index of the last (most recent) checkpoint with key lower or equal than the search key, or `high` if there is none.\n * `low` and `high` define a section where to do the search, with inclusive `low` and exclusive `high`.\n *\n * WARNING: `high` should not be greater than the array's length.\n */\n function _upperBinaryLookup(\n Checkpoint160[] storage self,\n uint96 key,\n uint256 low,\n uint256 high\n ) private view returns (uint256) {\n while (low < high) {\n uint256 mid = MathUpgradeable.average(low, high);\n if (_unsafeAccess(self, mid)._key > key) {\n high = mid;\n } else {\n low = mid + 1;\n }\n }\n return high;\n }\n\n /**\n * @dev Return the index of the first (oldest) checkpoint with key is greater or equal than the search key, or `high` if there is none.\n * `low` and `high` define a section where to do the search, with inclusive `low` and exclusive `high`.\n *\n * WARNING: `high` should not be greater than the array's length.\n */\n function _lowerBinaryLookup(\n Checkpoint160[] storage self,\n uint96 key,\n uint256 low,\n uint256 high\n ) private view returns (uint256) {\n while (low < high) {\n uint256 mid = MathUpgradeable.average(low, high);\n if (_unsafeAccess(self, mid)._key < key) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return high;\n }\n\n /**\n * @dev Access an element of the array without performing bounds check. The position is assumed to be within bounds.\n */\n function _unsafeAccess(\n Checkpoint160[] storage self,\n uint256 pos\n ) private pure returns (Checkpoint160 storage result) {\n assembly {\n mstore(0, self.slot)\n result.slot := add(keccak256(0, 0x20), pos)\n }\n }\n}\n"},"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\n\npragma solidity ^0.8.0;\nimport {Initializable} from \"../proxy/utils/Initializable.sol\";\n\n/**\n * @dev Provides information about the current execution context, including the\n * sender of the transaction and its data. While these are generally available\n * via msg.sender and msg.data, they should not be accessed in such a direct\n * manner, since when dealing with meta-transactions the account sending and\n * paying for execution may not be the actual sender (as far as an application\n * is concerned).\n *\n * This contract is only required for intermediate, library-like contracts.\n */\nabstract contract ContextUpgradeable is Initializable {\n function __Context_init() internal onlyInitializing {\n }\n\n function __Context_init_unchained() internal onlyInitializing {\n }\n function _msgSender() internal view virtual returns (address) {\n return msg.sender;\n }\n\n function _msgData() internal view virtual returns (bytes calldata) {\n return msg.data;\n }\n\n function _contextSuffixLength() internal view virtual returns (uint256) {\n return 0;\n }\n\n /**\n * @dev This empty reserved space is put in place to allow future versions to add new\n * variables without shifting down storage in the inheritance chain.\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\n */\n uint256[50] private __gap;\n}\n"},"@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/Counters.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @title Counters\n * @author Matt Condon (@shrugs)\n * @dev Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number\n * of elements in a mapping, issuing ERC721 ids, or counting request ids.\n *\n * Include with `using Counters for Counters.Counter;`\n */\nlibrary CountersUpgradeable {\n struct Counter {\n // This variable should never be directly accessed by users of the library: interactions must be restricted to\n // the library's function. As of Solidity v0.5.2, this cannot be enforced, though there is a proposal to add\n // this feature: see https://github.com/ethereum/solidity/issues/4637\n uint256 _value; // default: 0\n }\n\n function current(Counter storage counter) internal view returns (uint256) {\n return counter._value;\n }\n\n function increment(Counter storage counter) internal {\n unchecked {\n counter._value += 1;\n }\n }\n\n function decrement(Counter storage counter) internal {\n uint256 value = counter._value;\n require(value > 0, \"Counter: decrement overflow\");\n unchecked {\n counter._value = value - 1;\n }\n }\n\n function reset(Counter storage counter) internal {\n counter._value = 0;\n }\n}\n"},"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\n\npragma solidity ^0.8.0;\n\nimport \"./IERC165Upgradeable.sol\";\nimport {Initializable} from \"../../proxy/utils/Initializable.sol\";\n\n/**\n * @dev Implementation of the {IERC165} interface.\n *\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\n * for the additional interface id that will be supported. For example:\n *\n * ```solidity\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\n * }\n * ```\n *\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\n */\nabstract contract ERC165Upgradeable is Initializable, IERC165Upgradeable {\n function __ERC165_init() internal onlyInitializing {\n }\n\n function __ERC165_init_unchained() internal onlyInitializing {\n }\n /**\n * @dev See {IERC165-supportsInterface}.\n */\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n return interfaceId == type(IERC165Upgradeable).interfaceId;\n }\n\n /**\n * @dev This empty reserved space is put in place to allow future versions to add new\n * variables without shifting down storage in the inheritance chain.\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\n */\n uint256[50] private __gap;\n}\n"},"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Interface of the ERC165 standard, as defined in the\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\n *\n * Implementers can declare support of contract interfaces, which can then be\n * queried by others ({ERC165Checker}).\n *\n * For an implementation, see {ERC165}.\n */\ninterface IERC165Upgradeable {\n /**\n * @dev Returns true if this contract implements the interface defined by\n * `interfaceId`. See the corresponding\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\n * to learn more about how these ids are created.\n *\n * This function call must use less than 30 000 gas.\n */\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\n}\n"},"@openzeppelin/contracts-upgradeable/utils/math/MathUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/math/Math.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Standard math utilities missing in the Solidity language.\n */\nlibrary MathUpgradeable {\n enum Rounding {\n Down, // Toward negative infinity\n Up, // Toward infinity\n Zero // Toward zero\n }\n\n /**\n * @dev Returns the largest of two numbers.\n */\n function max(uint256 a, uint256 b) internal pure returns (uint256) {\n return a > b ? a : b;\n }\n\n /**\n * @dev Returns the smallest of two numbers.\n */\n function min(uint256 a, uint256 b) internal pure returns (uint256) {\n return a < b ? a : b;\n }\n\n /**\n * @dev Returns the average of two numbers. The result is rounded towards\n * zero.\n */\n function average(uint256 a, uint256 b) internal pure returns (uint256) {\n // (a + b) / 2 can overflow.\n return (a & b) + (a ^ b) / 2;\n }\n\n /**\n * @dev Returns the ceiling of the division of two numbers.\n *\n * This differs from standard division with `/` in that it rounds up instead\n * of rounding down.\n */\n function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\n // (a + b - 1) / b can overflow on addition, so we distribute.\n return a == 0 ? 0 : (a - 1) / b + 1;\n }\n\n /**\n * @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\n * @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)\n * with further edits by Uniswap Labs also under MIT license.\n */\n function mulDiv(uint256 x, uint256 y, uint256 denominator) internal pure returns (uint256 result) {\n unchecked {\n // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use\n // use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\n // variables such that product = prod1 * 2^256 + prod0.\n uint256 prod0; // Least significant 256 bits of the product\n uint256 prod1; // Most significant 256 bits of the product\n assembly {\n let mm := mulmod(x, y, not(0))\n prod0 := mul(x, y)\n prod1 := sub(sub(mm, prod0), lt(mm, prod0))\n }\n\n // Handle non-overflow cases, 256 by 256 division.\n if (prod1 == 0) {\n // Solidity will revert if denominator == 0, unlike the div opcode on its own.\n // The surrounding unchecked block does not change this fact.\n // See https://docs.soliditylang.org/en/latest/control-structures.html#checked-or-unchecked-arithmetic.\n return prod0 / denominator;\n }\n\n // Make sure the result is less than 2^256. Also prevents denominator == 0.\n require(denominator > prod1, \"Math: mulDiv overflow\");\n\n ///////////////////////////////////////////////\n // 512 by 256 division.\n ///////////////////////////////////////////////\n\n // Make division exact by subtracting the remainder from [prod1 prod0].\n uint256 remainder;\n assembly {\n // Compute remainder using mulmod.\n remainder := mulmod(x, y, denominator)\n\n // Subtract 256 bit number from 512 bit number.\n prod1 := sub(prod1, gt(remainder, prod0))\n prod0 := sub(prod0, remainder)\n }\n\n // Factor powers of two out of denominator and compute largest power of two divisor of denominator. Always >= 1.\n // See https://cs.stackexchange.com/q/138556/92363.\n\n // Does not overflow because the denominator cannot be zero at this stage in the function.\n uint256 twos = denominator & (~denominator + 1);\n assembly {\n // Divide denominator by twos.\n denominator := div(denominator, twos)\n\n // Divide [prod1 prod0] by twos.\n prod0 := div(prod0, twos)\n\n // Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one.\n twos := add(div(sub(0, twos), twos), 1)\n }\n\n // Shift in bits from prod1 into prod0.\n prod0 |= prod1 * twos;\n\n // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such\n // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for\n // four bits. That is, denominator * inv = 1 mod 2^4.\n uint256 inverse = (3 * denominator) ^ 2;\n\n // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also works\n // in modular arithmetic, doubling the correct bits in each step.\n inverse *= 2 - denominator * inverse; // inverse mod 2^8\n inverse *= 2 - denominator * inverse; // inverse mod 2^16\n inverse *= 2 - denominator * inverse; // inverse mod 2^32\n inverse *= 2 - denominator * inverse; // inverse mod 2^64\n inverse *= 2 - denominator * inverse; // inverse mod 2^128\n inverse *= 2 - denominator * inverse; // inverse mod 2^256\n\n // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\n // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is\n // less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1\n // is no longer required.\n result = prod0 * inverse;\n return result;\n }\n }\n\n /**\n * @notice Calculates x * y / denominator with full precision, following the selected rounding direction.\n */\n function mulDiv(uint256 x, uint256 y, uint256 denominator, Rounding rounding) internal pure returns (uint256) {\n uint256 result = mulDiv(x, y, denominator);\n if (rounding == Rounding.Up && mulmod(x, y, denominator) > 0) {\n result += 1;\n }\n return result;\n }\n\n /**\n * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down.\n *\n * Inspired by Henry S. Warren, Jr.'s \"Hacker's Delight\" (Chapter 11).\n */\n function sqrt(uint256 a) internal pure returns (uint256) {\n if (a == 0) {\n return 0;\n }\n\n // For our first guess, we get the biggest power of 2 which is smaller than the square root of the target.\n //\n // We know that the \"msb\" (most significant bit) of our target number `a` is a power of 2 such that we have\n // `msb(a) <= a < 2*msb(a)`. This value can be written `msb(a)=2**k` with `k=log2(a)`.\n //\n // This can be rewritten `2**log2(a) <= a < 2**(log2(a) + 1)`\n // → `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))`\n // → `2**(k/2) <= sqrt(a) < 2**((k+1)/2) <= 2**(k/2 + 1)`\n //\n // Consequently, `2**(log2(a) / 2)` is a good first approximation of `sqrt(a)` with at least 1 correct bit.\n uint256 result = 1 << (log2(a) >> 1);\n\n // At this point `result` is an estimation with one bit of precision. We know the true value is a uint128,\n // since it is the square root of a uint256. Newton's method converges quadratically (precision doubles at\n // every iteration). We thus need at most 7 iteration to turn our partial result with one bit of precision\n // into the expected uint128 result.\n unchecked {\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n return min(result, a / result);\n }\n }\n\n /**\n * @notice Calculates sqrt(a), following the selected rounding direction.\n */\n function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {\n unchecked {\n uint256 result = sqrt(a);\n return result + (rounding == Rounding.Up && result * result < a ? 1 : 0);\n }\n }\n\n /**\n * @dev Return the log in base 2, rounded down, of a positive value.\n * Returns 0 if given 0.\n */\n function log2(uint256 value) internal pure returns (uint256) {\n uint256 result = 0;\n unchecked {\n if (value >> 128 > 0) {\n value >>= 128;\n result += 128;\n }\n if (value >> 64 > 0) {\n value >>= 64;\n result += 64;\n }\n if (value >> 32 > 0) {\n value >>= 32;\n result += 32;\n }\n if (value >> 16 > 0) {\n value >>= 16;\n result += 16;\n }\n if (value >> 8 > 0) {\n value >>= 8;\n result += 8;\n }\n if (value >> 4 > 0) {\n value >>= 4;\n result += 4;\n }\n if (value >> 2 > 0) {\n value >>= 2;\n result += 2;\n }\n if (value >> 1 > 0) {\n result += 1;\n }\n }\n return result;\n }\n\n /**\n * @dev Return the log in base 2, following the selected rounding direction, of a positive value.\n * Returns 0 if given 0.\n */\n function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {\n unchecked {\n uint256 result = log2(value);\n return result + (rounding == Rounding.Up && 1 << result < value ? 1 : 0);\n }\n }\n\n /**\n * @dev Return the log in base 10, rounded down, of a positive value.\n * Returns 0 if given 0.\n */\n function log10(uint256 value) internal pure returns (uint256) {\n uint256 result = 0;\n unchecked {\n if (value >= 10 ** 64) {\n value /= 10 ** 64;\n result += 64;\n }\n if (value >= 10 ** 32) {\n value /= 10 ** 32;\n result += 32;\n }\n if (value >= 10 ** 16) {\n value /= 10 ** 16;\n result += 16;\n }\n if (value >= 10 ** 8) {\n value /= 10 ** 8;\n result += 8;\n }\n if (value >= 10 ** 4) {\n value /= 10 ** 4;\n result += 4;\n }\n if (value >= 10 ** 2) {\n value /= 10 ** 2;\n result += 2;\n }\n if (value >= 10 ** 1) {\n result += 1;\n }\n }\n return result;\n }\n\n /**\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\n * Returns 0 if given 0.\n */\n function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {\n unchecked {\n uint256 result = log10(value);\n return result + (rounding == Rounding.Up && 10 ** result < value ? 1 : 0);\n }\n }\n\n /**\n * @dev Return the log in base 256, rounded down, of a positive value.\n * Returns 0 if given 0.\n *\n * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.\n */\n function log256(uint256 value) internal pure returns (uint256) {\n uint256 result = 0;\n unchecked {\n if (value >> 128 > 0) {\n value >>= 128;\n result += 16;\n }\n if (value >> 64 > 0) {\n value >>= 64;\n result += 8;\n }\n if (value >> 32 > 0) {\n value >>= 32;\n result += 4;\n }\n if (value >> 16 > 0) {\n value >>= 16;\n result += 2;\n }\n if (value >> 8 > 0) {\n result += 1;\n }\n }\n return result;\n }\n\n /**\n * @dev Return the log in base 256, following the selected rounding direction, of a positive value.\n * Returns 0 if given 0.\n */\n function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {\n unchecked {\n uint256 result = log256(value);\n return result + (rounding == Rounding.Up && 1 << (result << 3) < value ? 1 : 0);\n }\n }\n}\n"},"@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/SafeCast.sol)\n// This file was procedurally generated from scripts/generate/templates/SafeCast.js.\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Wrappers over Solidity's uintXX/intXX casting operators with added overflow\n * checks.\n *\n * Downcasting from uint256/int256 in Solidity does not revert on overflow. This can\n * easily result in undesired exploitation or bugs, since developers usually\n * assume that overflows raise errors. `SafeCast` restores this intuition by\n * reverting the transaction when such an operation overflows.\n *\n * Using this library instead of the unchecked operations eliminates an entire\n * class of bugs, so it's recommended to use it always.\n *\n * Can be combined with {SafeMath} and {SignedSafeMath} to extend it to smaller types, by performing\n * all math on `uint256` and `int256` and then downcasting.\n */\nlibrary SafeCastUpgradeable {\n /**\n * @dev Returns the downcasted uint248 from uint256, reverting on\n * overflow (when the input is greater than largest uint248).\n *\n * Counterpart to Solidity's `uint248` operator.\n *\n * Requirements:\n *\n * - input must fit into 248 bits\n *\n * _Available since v4.7._\n */\n function toUint248(uint256 value) internal pure returns (uint248) {\n require(value <= type(uint248).max, \"SafeCast: value doesn't fit in 248 bits\");\n return uint248(value);\n }\n\n /**\n * @dev Returns the downcasted uint240 from uint256, reverting on\n * overflow (when the input is greater than largest uint240).\n *\n * Counterpart to Solidity's `uint240` operator.\n *\n * Requirements:\n *\n * - input must fit into 240 bits\n *\n * _Available since v4.7._\n */\n function toUint240(uint256 value) internal pure returns (uint240) {\n require(value <= type(uint240).max, \"SafeCast: value doesn't fit in 240 bits\");\n return uint240(value);\n }\n\n /**\n * @dev Returns the downcasted uint232 from uint256, reverting on\n * overflow (when the input is greater than largest uint232).\n *\n * Counterpart to Solidity's `uint232` operator.\n *\n * Requirements:\n *\n * - input must fit into 232 bits\n *\n * _Available since v4.7._\n */\n function toUint232(uint256 value) internal pure returns (uint232) {\n require(value <= type(uint232).max, \"SafeCast: value doesn't fit in 232 bits\");\n return uint232(value);\n }\n\n /**\n * @dev Returns the downcasted uint224 from uint256, reverting on\n * overflow (when the input is greater than largest uint224).\n *\n * Counterpart to Solidity's `uint224` operator.\n *\n * Requirements:\n *\n * - input must fit into 224 bits\n *\n * _Available since v4.2._\n */\n function toUint224(uint256 value) internal pure returns (uint224) {\n require(value <= type(uint224).max, \"SafeCast: value doesn't fit in 224 bits\");\n return uint224(value);\n }\n\n /**\n * @dev Returns the downcasted uint216 from uint256, reverting on\n * overflow (when the input is greater than largest uint216).\n *\n * Counterpart to Solidity's `uint216` operator.\n *\n * Requirements:\n *\n * - input must fit into 216 bits\n *\n * _Available since v4.7._\n */\n function toUint216(uint256 value) internal pure returns (uint216) {\n require(value <= type(uint216).max, \"SafeCast: value doesn't fit in 216 bits\");\n return uint216(value);\n }\n\n /**\n * @dev Returns the downcasted uint208 from uint256, reverting on\n * overflow (when the input is greater than largest uint208).\n *\n * Counterpart to Solidity's `uint208` operator.\n *\n * Requirements:\n *\n * - input must fit into 208 bits\n *\n * _Available since v4.7._\n */\n function toUint208(uint256 value) internal pure returns (uint208) {\n require(value <= type(uint208).max, \"SafeCast: value doesn't fit in 208 bits\");\n return uint208(value);\n }\n\n /**\n * @dev Returns the downcasted uint200 from uint256, reverting on\n * overflow (when the input is greater than largest uint200).\n *\n * Counterpart to Solidity's `uint200` operator.\n *\n * Requirements:\n *\n * - input must fit into 200 bits\n *\n * _Available since v4.7._\n */\n function toUint200(uint256 value) internal pure returns (uint200) {\n require(value <= type(uint200).max, \"SafeCast: value doesn't fit in 200 bits\");\n return uint200(value);\n }\n\n /**\n * @dev Returns the downcasted uint192 from uint256, reverting on\n * overflow (when the input is greater than largest uint192).\n *\n * Counterpart to Solidity's `uint192` operator.\n *\n * Requirements:\n *\n * - input must fit into 192 bits\n *\n * _Available since v4.7._\n */\n function toUint192(uint256 value) internal pure returns (uint192) {\n require(value <= type(uint192).max, \"SafeCast: value doesn't fit in 192 bits\");\n return uint192(value);\n }\n\n /**\n * @dev Returns the downcasted uint184 from uint256, reverting on\n * overflow (when the input is greater than largest uint184).\n *\n * Counterpart to Solidity's `uint184` operator.\n *\n * Requirements:\n *\n * - input must fit into 184 bits\n *\n * _Available since v4.7._\n */\n function toUint184(uint256 value) internal pure returns (uint184) {\n require(value <= type(uint184).max, \"SafeCast: value doesn't fit in 184 bits\");\n return uint184(value);\n }\n\n /**\n * @dev Returns the downcasted uint176 from uint256, reverting on\n * overflow (when the input is greater than largest uint176).\n *\n * Counterpart to Solidity's `uint176` operator.\n *\n * Requirements:\n *\n * - input must fit into 176 bits\n *\n * _Available since v4.7._\n */\n function toUint176(uint256 value) internal pure returns (uint176) {\n require(value <= type(uint176).max, \"SafeCast: value doesn't fit in 176 bits\");\n return uint176(value);\n }\n\n /**\n * @dev Returns the downcasted uint168 from uint256, reverting on\n * overflow (when the input is greater than largest uint168).\n *\n * Counterpart to Solidity's `uint168` operator.\n *\n * Requirements:\n *\n * - input must fit into 168 bits\n *\n * _Available since v4.7._\n */\n function toUint168(uint256 value) internal pure returns (uint168) {\n require(value <= type(uint168).max, \"SafeCast: value doesn't fit in 168 bits\");\n return uint168(value);\n }\n\n /**\n * @dev Returns the downcasted uint160 from uint256, reverting on\n * overflow (when the input is greater than largest uint160).\n *\n * Counterpart to Solidity's `uint160` operator.\n *\n * Requirements:\n *\n * - input must fit into 160 bits\n *\n * _Available since v4.7._\n */\n function toUint160(uint256 value) internal pure returns (uint160) {\n require(value <= type(uint160).max, \"SafeCast: value doesn't fit in 160 bits\");\n return uint160(value);\n }\n\n /**\n * @dev Returns the downcasted uint152 from uint256, reverting on\n * overflow (when the input is greater than largest uint152).\n *\n * Counterpart to Solidity's `uint152` operator.\n *\n * Requirements:\n *\n * - input must fit into 152 bits\n *\n * _Available since v4.7._\n */\n function toUint152(uint256 value) internal pure returns (uint152) {\n require(value <= type(uint152).max, \"SafeCast: value doesn't fit in 152 bits\");\n return uint152(value);\n }\n\n /**\n * @dev Returns the downcasted uint144 from uint256, reverting on\n * overflow (when the input is greater than largest uint144).\n *\n * Counterpart to Solidity's `uint144` operator.\n *\n * Requirements:\n *\n * - input must fit into 144 bits\n *\n * _Available since v4.7._\n */\n function toUint144(uint256 value) internal pure returns (uint144) {\n require(value <= type(uint144).max, \"SafeCast: value doesn't fit in 144 bits\");\n return uint144(value);\n }\n\n /**\n * @dev Returns the downcasted uint136 from uint256, reverting on\n * overflow (when the input is greater than largest uint136).\n *\n * Counterpart to Solidity's `uint136` operator.\n *\n * Requirements:\n *\n * - input must fit into 136 bits\n *\n * _Available since v4.7._\n */\n function toUint136(uint256 value) internal pure returns (uint136) {\n require(value <= type(uint136).max, \"SafeCast: value doesn't fit in 136 bits\");\n return uint136(value);\n }\n\n /**\n * @dev Returns the downcasted uint128 from uint256, reverting on\n * overflow (when the input is greater than largest uint128).\n *\n * Counterpart to Solidity's `uint128` operator.\n *\n * Requirements:\n *\n * - input must fit into 128 bits\n *\n * _Available since v2.5._\n */\n function toUint128(uint256 value) internal pure returns (uint128) {\n require(value <= type(uint128).max, \"SafeCast: value doesn't fit in 128 bits\");\n return uint128(value);\n }\n\n /**\n * @dev Returns the downcasted uint120 from uint256, reverting on\n * overflow (when the input is greater than largest uint120).\n *\n * Counterpart to Solidity's `uint120` operator.\n *\n * Requirements:\n *\n * - input must fit into 120 bits\n *\n * _Available since v4.7._\n */\n function toUint120(uint256 value) internal pure returns (uint120) {\n require(value <= type(uint120).max, \"SafeCast: value doesn't fit in 120 bits\");\n return uint120(value);\n }\n\n /**\n * @dev Returns the downcasted uint112 from uint256, reverting on\n * overflow (when the input is greater than largest uint112).\n *\n * Counterpart to Solidity's `uint112` operator.\n *\n * Requirements:\n *\n * - input must fit into 112 bits\n *\n * _Available since v4.7._\n */\n function toUint112(uint256 value) internal pure returns (uint112) {\n require(value <= type(uint112).max, \"SafeCast: value doesn't fit in 112 bits\");\n return uint112(value);\n }\n\n /**\n * @dev Returns the downcasted uint104 from uint256, reverting on\n * overflow (when the input is greater than largest uint104).\n *\n * Counterpart to Solidity's `uint104` operator.\n *\n * Requirements:\n *\n * - input must fit into 104 bits\n *\n * _Available since v4.7._\n */\n function toUint104(uint256 value) internal pure returns (uint104) {\n require(value <= type(uint104).max, \"SafeCast: value doesn't fit in 104 bits\");\n return uint104(value);\n }\n\n /**\n * @dev Returns the downcasted uint96 from uint256, reverting on\n * overflow (when the input is greater than largest uint96).\n *\n * Counterpart to Solidity's `uint96` operator.\n *\n * Requirements:\n *\n * - input must fit into 96 bits\n *\n * _Available since v4.2._\n */\n function toUint96(uint256 value) internal pure returns (uint96) {\n require(value <= type(uint96).max, \"SafeCast: value doesn't fit in 96 bits\");\n return uint96(value);\n }\n\n /**\n * @dev Returns the downcasted uint88 from uint256, reverting on\n * overflow (when the input is greater than largest uint88).\n *\n * Counterpart to Solidity's `uint88` operator.\n *\n * Requirements:\n *\n * - input must fit into 88 bits\n *\n * _Available since v4.7._\n */\n function toUint88(uint256 value) internal pure returns (uint88) {\n require(value <= type(uint88).max, \"SafeCast: value doesn't fit in 88 bits\");\n return uint88(value);\n }\n\n /**\n * @dev Returns the downcasted uint80 from uint256, reverting on\n * overflow (when the input is greater than largest uint80).\n *\n * Counterpart to Solidity's `uint80` operator.\n *\n * Requirements:\n *\n * - input must fit into 80 bits\n *\n * _Available since v4.7._\n */\n function toUint80(uint256 value) internal pure returns (uint80) {\n require(value <= type(uint80).max, \"SafeCast: value doesn't fit in 80 bits\");\n return uint80(value);\n }\n\n /**\n * @dev Returns the downcasted uint72 from uint256, reverting on\n * overflow (when the input is greater than largest uint72).\n *\n * Counterpart to Solidity's `uint72` operator.\n *\n * Requirements:\n *\n * - input must fit into 72 bits\n *\n * _Available since v4.7._\n */\n function toUint72(uint256 value) internal pure returns (uint72) {\n require(value <= type(uint72).max, \"SafeCast: value doesn't fit in 72 bits\");\n return uint72(value);\n }\n\n /**\n * @dev Returns the downcasted uint64 from uint256, reverting on\n * overflow (when the input is greater than largest uint64).\n *\n * Counterpart to Solidity's `uint64` operator.\n *\n * Requirements:\n *\n * - input must fit into 64 bits\n *\n * _Available since v2.5._\n */\n function toUint64(uint256 value) internal pure returns (uint64) {\n require(value <= type(uint64).max, \"SafeCast: value doesn't fit in 64 bits\");\n return uint64(value);\n }\n\n /**\n * @dev Returns the downcasted uint56 from uint256, reverting on\n * overflow (when the input is greater than largest uint56).\n *\n * Counterpart to Solidity's `uint56` operator.\n *\n * Requirements:\n *\n * - input must fit into 56 bits\n *\n * _Available since v4.7._\n */\n function toUint56(uint256 value) internal pure returns (uint56) {\n require(value <= type(uint56).max, \"SafeCast: value doesn't fit in 56 bits\");\n return uint56(value);\n }\n\n /**\n * @dev Returns the downcasted uint48 from uint256, reverting on\n * overflow (when the input is greater than largest uint48).\n *\n * Counterpart to Solidity's `uint48` operator.\n *\n * Requirements:\n *\n * - input must fit into 48 bits\n *\n * _Available since v4.7._\n */\n function toUint48(uint256 value) internal pure returns (uint48) {\n require(value <= type(uint48).max, \"SafeCast: value doesn't fit in 48 bits\");\n return uint48(value);\n }\n\n /**\n * @dev Returns the downcasted uint40 from uint256, reverting on\n * overflow (when the input is greater than largest uint40).\n *\n * Counterpart to Solidity's `uint40` operator.\n *\n * Requirements:\n *\n * - input must fit into 40 bits\n *\n * _Available since v4.7._\n */\n function toUint40(uint256 value) internal pure returns (uint40) {\n require(value <= type(uint40).max, \"SafeCast: value doesn't fit in 40 bits\");\n return uint40(value);\n }\n\n /**\n * @dev Returns the downcasted uint32 from uint256, reverting on\n * overflow (when the input is greater than largest uint32).\n *\n * Counterpart to Solidity's `uint32` operator.\n *\n * Requirements:\n *\n * - input must fit into 32 bits\n *\n * _Available since v2.5._\n */\n function toUint32(uint256 value) internal pure returns (uint32) {\n require(value <= type(uint32).max, \"SafeCast: value doesn't fit in 32 bits\");\n return uint32(value);\n }\n\n /**\n * @dev Returns the downcasted uint24 from uint256, reverting on\n * overflow (when the input is greater than largest uint24).\n *\n * Counterpart to Solidity's `uint24` operator.\n *\n * Requirements:\n *\n * - input must fit into 24 bits\n *\n * _Available since v4.7._\n */\n function toUint24(uint256 value) internal pure returns (uint24) {\n require(value <= type(uint24).max, \"SafeCast: value doesn't fit in 24 bits\");\n return uint24(value);\n }\n\n /**\n * @dev Returns the downcasted uint16 from uint256, reverting on\n * overflow (when the input is greater than largest uint16).\n *\n * Counterpart to Solidity's `uint16` operator.\n *\n * Requirements:\n *\n * - input must fit into 16 bits\n *\n * _Available since v2.5._\n */\n function toUint16(uint256 value) internal pure returns (uint16) {\n require(value <= type(uint16).max, \"SafeCast: value doesn't fit in 16 bits\");\n return uint16(value);\n }\n\n /**\n * @dev Returns the downcasted uint8 from uint256, reverting on\n * overflow (when the input is greater than largest uint8).\n *\n * Counterpart to Solidity's `uint8` operator.\n *\n * Requirements:\n *\n * - input must fit into 8 bits\n *\n * _Available since v2.5._\n */\n function toUint8(uint256 value) internal pure returns (uint8) {\n require(value <= type(uint8).max, \"SafeCast: value doesn't fit in 8 bits\");\n return uint8(value);\n }\n\n /**\n * @dev Converts a signed int256 into an unsigned uint256.\n *\n * Requirements:\n *\n * - input must be greater than or equal to 0.\n *\n * _Available since v3.0._\n */\n function toUint256(int256 value) internal pure returns (uint256) {\n require(value >= 0, \"SafeCast: value must be positive\");\n return uint256(value);\n }\n\n /**\n * @dev Returns the downcasted int248 from int256, reverting on\n * overflow (when the input is less than smallest int248 or\n * greater than largest int248).\n *\n * Counterpart to Solidity's `int248` operator.\n *\n * Requirements:\n *\n * - input must fit into 248 bits\n *\n * _Available since v4.7._\n */\n function toInt248(int256 value) internal pure returns (int248 downcasted) {\n downcasted = int248(value);\n require(downcasted == value, \"SafeCast: value doesn't fit in 248 bits\");\n }\n\n /**\n * @dev Returns the downcasted int240 from int256, reverting on\n * overflow (when the input is less than smallest int240 or\n * greater than largest int240).\n *\n * Counterpart to Solidity's `int240` operator.\n *\n * Requirements:\n *\n * - input must fit into 240 bits\n *\n * _Available since v4.7._\n */\n function toInt240(int256 value) internal pure returns (int240 downcasted) {\n downcasted = int240(value);\n require(downcasted == value, \"SafeCast: value doesn't fit in 240 bits\");\n }\n\n /**\n * @dev Returns the downcasted int232 from int256, reverting on\n * overflow (when the input is less than smallest int232 or\n * greater than largest int232).\n *\n * Counterpart to Solidity's `int232` operator.\n *\n * Requirements:\n *\n * - input must fit into 232 bits\n *\n * _Available since v4.7._\n */\n function toInt232(int256 value) internal pure returns (int232 downcasted) {\n downcasted = int232(value);\n require(downcasted == value, \"SafeCast: value doesn't fit in 232 bits\");\n }\n\n /**\n * @dev Returns the downcasted int224 from int256, reverting on\n * overflow (when the input is less than smallest int224 or\n * greater than largest int224).\n *\n * Counterpart to Solidity's `int224` operator.\n *\n * Requirements:\n *\n * - input must fit into 224 bits\n *\n * _Available since v4.7._\n */\n function toInt224(int256 value) internal pure returns (int224 downcasted) {\n downcasted = int224(value);\n require(downcasted == value, \"SafeCast: value doesn't fit in 224 bits\");\n }\n\n /**\n * @dev Returns the downcasted int216 from int256, reverting on\n * overflow (when the input is less than smallest int216 or\n * greater than largest int216).\n *\n * Counterpart to Solidity's `int216` operator.\n *\n * Requirements:\n *\n * - input must fit into 216 bits\n *\n * _Available since v4.7._\n */\n function toInt216(int256 value) internal pure returns (int216 downcasted) {\n downcasted = int216(value);\n require(downcasted == value, \"SafeCast: value doesn't fit in 216 bits\");\n }\n\n /**\n * @dev Returns the downcasted int208 from int256, reverting on\n * overflow (when the input is less than smallest int208 or\n * greater than largest int208).\n *\n * Counterpart to Solidity's `int208` operator.\n *\n * Requirements:\n *\n * - input must fit into 208 bits\n *\n * _Available since v4.7._\n */\n function toInt208(int256 value) internal pure returns (int208 downcasted) {\n downcasted = int208(value);\n require(downcasted == value, \"SafeCast: value doesn't fit in 208 bits\");\n }\n\n /**\n * @dev Returns the downcasted int200 from int256, reverting on\n * overflow (when the input is less than smallest int200 or\n * greater than largest int200).\n *\n * Counterpart to Solidity's `int200` operator.\n *\n * Requirements:\n *\n * - input must fit into 200 bits\n *\n * _Available since v4.7._\n */\n function toInt200(int256 value) internal pure returns (int200 downcasted) {\n downcasted = int200(value);\n require(downcasted == value, \"SafeCast: value doesn't fit in 200 bits\");\n }\n\n /**\n * @dev Returns the downcasted int192 from int256, reverting on\n * overflow (when the input is less than smallest int192 or\n * greater than largest int192).\n *\n * Counterpart to Solidity's `int192` operator.\n *\n * Requirements:\n *\n * - input must fit into 192 bits\n *\n * _Available since v4.7._\n */\n function toInt192(int256 value) internal pure returns (int192 downcasted) {\n downcasted = int192(value);\n require(downcasted == value, \"SafeCast: value doesn't fit in 192 bits\");\n }\n\n /**\n * @dev Returns the downcasted int184 from int256, reverting on\n * overflow (when the input is less than smallest int184 or\n * greater than largest int184).\n *\n * Counterpart to Solidity's `int184` operator.\n *\n * Requirements:\n *\n * - input must fit into 184 bits\n *\n * _Available since v4.7._\n */\n function toInt184(int256 value) internal pure returns (int184 downcasted) {\n downcasted = int184(value);\n require(downcasted == value, \"SafeCast: value doesn't fit in 184 bits\");\n }\n\n /**\n * @dev Returns the downcasted int176 from int256, reverting on\n * overflow (when the input is less than smallest int176 or\n * greater than largest int176).\n *\n * Counterpart to Solidity's `int176` operator.\n *\n * Requirements:\n *\n * - input must fit into 176 bits\n *\n * _Available since v4.7._\n */\n function toInt176(int256 value) internal pure returns (int176 downcasted) {\n downcasted = int176(value);\n require(downcasted == value, \"SafeCast: value doesn't fit in 176 bits\");\n }\n\n /**\n * @dev Returns the downcasted int168 from int256, reverting on\n * overflow (when the input is less than smallest int168 or\n * greater than largest int168).\n *\n * Counterpart to Solidity's `int168` operator.\n *\n * Requirements:\n *\n * - input must fit into 168 bits\n *\n * _Available since v4.7._\n */\n function toInt168(int256 value) internal pure returns (int168 downcasted) {\n downcasted = int168(value);\n require(downcasted == value, \"SafeCast: value doesn't fit in 168 bits\");\n }\n\n /**\n * @dev Returns the downcasted int160 from int256, reverting on\n * overflow (when the input is less than smallest int160 or\n * greater than largest int160).\n *\n * Counterpart to Solidity's `int160` operator.\n *\n * Requirements:\n *\n * - input must fit into 160 bits\n *\n * _Available since v4.7._\n */\n function toInt160(int256 value) internal pure returns (int160 downcasted) {\n downcasted = int160(value);\n require(downcasted == value, \"SafeCast: value doesn't fit in 160 bits\");\n }\n\n /**\n * @dev Returns the downcasted int152 from int256, reverting on\n * overflow (when the input is less than smallest int152 or\n * greater than largest int152).\n *\n * Counterpart to Solidity's `int152` operator.\n *\n * Requirements:\n *\n * - input must fit into 152 bits\n *\n * _Available since v4.7._\n */\n function toInt152(int256 value) internal pure returns (int152 downcasted) {\n downcasted = int152(value);\n require(downcasted == value, \"SafeCast: value doesn't fit in 152 bits\");\n }\n\n /**\n * @dev Returns the downcasted int144 from int256, reverting on\n * overflow (when the input is less than smallest int144 or\n * greater than largest int144).\n *\n * Counterpart to Solidity's `int144` operator.\n *\n * Requirements:\n *\n * - input must fit into 144 bits\n *\n * _Available since v4.7._\n */\n function toInt144(int256 value) internal pure returns (int144 downcasted) {\n downcasted = int144(value);\n require(downcasted == value, \"SafeCast: value doesn't fit in 144 bits\");\n }\n\n /**\n * @dev Returns the downcasted int136 from int256, reverting on\n * overflow (when the input is less than smallest int136 or\n * greater than largest int136).\n *\n * Counterpart to Solidity's `int136` operator.\n *\n * Requirements:\n *\n * - input must fit into 136 bits\n *\n * _Available since v4.7._\n */\n function toInt136(int256 value) internal pure returns (int136 downcasted) {\n downcasted = int136(value);\n require(downcasted == value, \"SafeCast: value doesn't fit in 136 bits\");\n }\n\n /**\n * @dev Returns the downcasted int128 from int256, reverting on\n * overflow (when the input is less than smallest int128 or\n * greater than largest int128).\n *\n * Counterpart to Solidity's `int128` operator.\n *\n * Requirements:\n *\n * - input must fit into 128 bits\n *\n * _Available since v3.1._\n */\n function toInt128(int256 value) internal pure returns (int128 downcasted) {\n downcasted = int128(value);\n require(downcasted == value, \"SafeCast: value doesn't fit in 128 bits\");\n }\n\n /**\n * @dev Returns the downcasted int120 from int256, reverting on\n * overflow (when the input is less than smallest int120 or\n * greater than largest int120).\n *\n * Counterpart to Solidity's `int120` operator.\n *\n * Requirements:\n *\n * - input must fit into 120 bits\n *\n * _Available since v4.7._\n */\n function toInt120(int256 value) internal pure returns (int120 downcasted) {\n downcasted = int120(value);\n require(downcasted == value, \"SafeCast: value doesn't fit in 120 bits\");\n }\n\n /**\n * @dev Returns the downcasted int112 from int256, reverting on\n * overflow (when the input is less than smallest int112 or\n * greater than largest int112).\n *\n * Counterpart to Solidity's `int112` operator.\n *\n * Requirements:\n *\n * - input must fit into 112 bits\n *\n * _Available since v4.7._\n */\n function toInt112(int256 value) internal pure returns (int112 downcasted) {\n downcasted = int112(value);\n require(downcasted == value, \"SafeCast: value doesn't fit in 112 bits\");\n }\n\n /**\n * @dev Returns the downcasted int104 from int256, reverting on\n * overflow (when the input is less than smallest int104 or\n * greater than largest int104).\n *\n * Counterpart to Solidity's `int104` operator.\n *\n * Requirements:\n *\n * - input must fit into 104 bits\n *\n * _Available since v4.7._\n */\n function toInt104(int256 value) internal pure returns (int104 downcasted) {\n downcasted = int104(value);\n require(downcasted == value, \"SafeCast: value doesn't fit in 104 bits\");\n }\n\n /**\n * @dev Returns the downcasted int96 from int256, reverting on\n * overflow (when the input is less than smallest int96 or\n * greater than largest int96).\n *\n * Counterpart to Solidity's `int96` operator.\n *\n * Requirements:\n *\n * - input must fit into 96 bits\n *\n * _Available since v4.7._\n */\n function toInt96(int256 value) internal pure returns (int96 downcasted) {\n downcasted = int96(value);\n require(downcasted == value, \"SafeCast: value doesn't fit in 96 bits\");\n }\n\n /**\n * @dev Returns the downcasted int88 from int256, reverting on\n * overflow (when the input is less than smallest int88 or\n * greater than largest int88).\n *\n * Counterpart to Solidity's `int88` operator.\n *\n * Requirements:\n *\n * - input must fit into 88 bits\n *\n * _Available since v4.7._\n */\n function toInt88(int256 value) internal pure returns (int88 downcasted) {\n downcasted = int88(value);\n require(downcasted == value, \"SafeCast: value doesn't fit in 88 bits\");\n }\n\n /**\n * @dev Returns the downcasted int80 from int256, reverting on\n * overflow (when the input is less than smallest int80 or\n * greater than largest int80).\n *\n * Counterpart to Solidity's `int80` operator.\n *\n * Requirements:\n *\n * - input must fit into 80 bits\n *\n * _Available since v4.7._\n */\n function toInt80(int256 value) internal pure returns (int80 downcasted) {\n downcasted = int80(value);\n require(downcasted == value, \"SafeCast: value doesn't fit in 80 bits\");\n }\n\n /**\n * @dev Returns the downcasted int72 from int256, reverting on\n * overflow (when the input is less than smallest int72 or\n * greater than largest int72).\n *\n * Counterpart to Solidity's `int72` operator.\n *\n * Requirements:\n *\n * - input must fit into 72 bits\n *\n * _Available since v4.7._\n */\n function toInt72(int256 value) internal pure returns (int72 downcasted) {\n downcasted = int72(value);\n require(downcasted == value, \"SafeCast: value doesn't fit in 72 bits\");\n }\n\n /**\n * @dev Returns the downcasted int64 from int256, reverting on\n * overflow (when the input is less than smallest int64 or\n * greater than largest int64).\n *\n * Counterpart to Solidity's `int64` operator.\n *\n * Requirements:\n *\n * - input must fit into 64 bits\n *\n * _Available since v3.1._\n */\n function toInt64(int256 value) internal pure returns (int64 downcasted) {\n downcasted = int64(value);\n require(downcasted == value, \"SafeCast: value doesn't fit in 64 bits\");\n }\n\n /**\n * @dev Returns the downcasted int56 from int256, reverting on\n * overflow (when the input is less than smallest int56 or\n * greater than largest int56).\n *\n * Counterpart to Solidity's `int56` operator.\n *\n * Requirements:\n *\n * - input must fit into 56 bits\n *\n * _Available since v4.7._\n */\n function toInt56(int256 value) internal pure returns (int56 downcasted) {\n downcasted = int56(value);\n require(downcasted == value, \"SafeCast: value doesn't fit in 56 bits\");\n }\n\n /**\n * @dev Returns the downcasted int48 from int256, reverting on\n * overflow (when the input is less than smallest int48 or\n * greater than largest int48).\n *\n * Counterpart to Solidity's `int48` operator.\n *\n * Requirements:\n *\n * - input must fit into 48 bits\n *\n * _Available since v4.7._\n */\n function toInt48(int256 value) internal pure returns (int48 downcasted) {\n downcasted = int48(value);\n require(downcasted == value, \"SafeCast: value doesn't fit in 48 bits\");\n }\n\n /**\n * @dev Returns the downcasted int40 from int256, reverting on\n * overflow (when the input is less than smallest int40 or\n * greater than largest int40).\n *\n * Counterpart to Solidity's `int40` operator.\n *\n * Requirements:\n *\n * - input must fit into 40 bits\n *\n * _Available since v4.7._\n */\n function toInt40(int256 value) internal pure returns (int40 downcasted) {\n downcasted = int40(value);\n require(downcasted == value, \"SafeCast: value doesn't fit in 40 bits\");\n }\n\n /**\n * @dev Returns the downcasted int32 from int256, reverting on\n * overflow (when the input is less than smallest int32 or\n * greater than largest int32).\n *\n * Counterpart to Solidity's `int32` operator.\n *\n * Requirements:\n *\n * - input must fit into 32 bits\n *\n * _Available since v3.1._\n */\n function toInt32(int256 value) internal pure returns (int32 downcasted) {\n downcasted = int32(value);\n require(downcasted == value, \"SafeCast: value doesn't fit in 32 bits\");\n }\n\n /**\n * @dev Returns the downcasted int24 from int256, reverting on\n * overflow (when the input is less than smallest int24 or\n * greater than largest int24).\n *\n * Counterpart to Solidity's `int24` operator.\n *\n * Requirements:\n *\n * - input must fit into 24 bits\n *\n * _Available since v4.7._\n */\n function toInt24(int256 value) internal pure returns (int24 downcasted) {\n downcasted = int24(value);\n require(downcasted == value, \"SafeCast: value doesn't fit in 24 bits\");\n }\n\n /**\n * @dev Returns the downcasted int16 from int256, reverting on\n * overflow (when the input is less than smallest int16 or\n * greater than largest int16).\n *\n * Counterpart to Solidity's `int16` operator.\n *\n * Requirements:\n *\n * - input must fit into 16 bits\n *\n * _Available since v3.1._\n */\n function toInt16(int256 value) internal pure returns (int16 downcasted) {\n downcasted = int16(value);\n require(downcasted == value, \"SafeCast: value doesn't fit in 16 bits\");\n }\n\n /**\n * @dev Returns the downcasted int8 from int256, reverting on\n * overflow (when the input is less than smallest int8 or\n * greater than largest int8).\n *\n * Counterpart to Solidity's `int8` operator.\n *\n * Requirements:\n *\n * - input must fit into 8 bits\n *\n * _Available since v3.1._\n */\n function toInt8(int256 value) internal pure returns (int8 downcasted) {\n downcasted = int8(value);\n require(downcasted == value, \"SafeCast: value doesn't fit in 8 bits\");\n }\n\n /**\n * @dev Converts an unsigned uint256 into a signed int256.\n *\n * Requirements:\n *\n * - input must be less than or equal to maxInt256.\n *\n * _Available since v3.0._\n */\n function toInt256(uint256 value) internal pure returns (int256) {\n // Note: Unsafe cast below is okay because `type(int256).max` is guaranteed to be positive\n require(value <= uint256(type(int256).max), \"SafeCast: value doesn't fit in an int256\");\n return int256(value);\n }\n}\n"},"@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/StorageSlot.sol)\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Library for reading and writing primitive types to specific storage slots.\n *\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\n * This library helps with reading and writing to such slots without the need for inline assembly.\n *\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\n *\n * Example usage to set ERC1967 implementation slot:\n * ```solidity\n * contract ERC1967 {\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n *\n * function _getImplementation() internal view returns (address) {\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\n * }\n *\n * function _setImplementation(address newImplementation) internal {\n * require(Address.isContract(newImplementation), \"ERC1967: new implementation is not a contract\");\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\n * }\n * }\n * ```\n *\n * _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._\n * _Available since v4.9 for `string`, `bytes`._\n */\nlibrary StorageSlotUpgradeable {\n struct AddressSlot {\n address value;\n }\n\n struct BooleanSlot {\n bool value;\n }\n\n struct Bytes32Slot {\n bytes32 value;\n }\n\n struct Uint256Slot {\n uint256 value;\n }\n\n struct StringSlot {\n string value;\n }\n\n struct BytesSlot {\n bytes value;\n }\n\n /**\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\n */\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\n */\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\n */\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\n */\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `StringSlot` with member `value` located at `slot`.\n */\n function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\n */\n function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := store.slot\n }\n }\n\n /**\n * @dev Returns an `BytesSlot` with member `value` located at `slot`.\n */\n function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\n */\n function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := store.slot\n }\n }\n}\n"},"@openzeppelin/contracts/interfaces/draft-IERC1822.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.5.0) (interfaces/draft-IERC1822.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\n * proxy whose upgrades are fully controlled by the current implementation.\n */\ninterface IERC1822Proxiable {\n /**\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\n * address.\n *\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\n * function revert if invoked through a proxy.\n */\n function proxiableUUID() external view returns (bytes32);\n}\n"},"@openzeppelin/contracts/interfaces/IERC1967.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (interfaces/IERC1967.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\n *\n * _Available since v4.8.3._\n */\ninterface IERC1967 {\n /**\n * @dev Emitted when the implementation is upgraded.\n */\n event Upgraded(address indexed implementation);\n\n /**\n * @dev Emitted when the admin account has changed.\n */\n event AdminChanged(address previousAdmin, address newAdmin);\n\n /**\n * @dev Emitted when the beacon is changed.\n */\n event BeaconUpgraded(address indexed beacon);\n}\n"},"@openzeppelin/contracts/proxy/beacon/IBeacon.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\n */\ninterface IBeacon {\n /**\n * @dev Must return an address that can be used as a delegate call target.\n *\n * {BeaconProxy} will check that this address is a contract.\n */\n function implementation() external view returns (address);\n}\n"},"@openzeppelin/contracts/proxy/Clones.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/Clones.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev https://eips.ethereum.org/EIPS/eip-1167[EIP 1167] is a standard for\n * deploying minimal proxy contracts, also known as \"clones\".\n *\n * > To simply and cheaply clone contract functionality in an immutable way, this standard specifies\n * > a minimal bytecode implementation that delegates all calls to a known, fixed address.\n *\n * The library includes functions to deploy a proxy using either `create` (traditional deployment) or `create2`\n * (salted deterministic deployment). It also includes functions to predict the addresses of clones deployed using the\n * deterministic method.\n *\n * _Available since v3.4._\n */\nlibrary Clones {\n /**\n * @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`.\n *\n * This function uses the create opcode, which should never revert.\n */\n function clone(address implementation) internal returns (address instance) {\n /// @solidity memory-safe-assembly\n assembly {\n // Cleans the upper 96 bits of the `implementation` word, then packs the first 3 bytes\n // of the `implementation` address with the bytecode before the address.\n mstore(0x00, or(shr(0xe8, shl(0x60, implementation)), 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000))\n // Packs the remaining 17 bytes of `implementation` with the bytecode after the address.\n mstore(0x20, or(shl(0x78, implementation), 0x5af43d82803e903d91602b57fd5bf3))\n instance := create(0, 0x09, 0x37)\n }\n require(instance != address(0), \"ERC1167: create failed\");\n }\n\n /**\n * @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`.\n *\n * This function uses the create2 opcode and a `salt` to deterministically deploy\n * the clone. Using the same `implementation` and `salt` multiple time will revert, since\n * the clones cannot be deployed twice at the same address.\n */\n function cloneDeterministic(address implementation, bytes32 salt) internal returns (address instance) {\n /// @solidity memory-safe-assembly\n assembly {\n // Cleans the upper 96 bits of the `implementation` word, then packs the first 3 bytes\n // of the `implementation` address with the bytecode before the address.\n mstore(0x00, or(shr(0xe8, shl(0x60, implementation)), 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000))\n // Packs the remaining 17 bytes of `implementation` with the bytecode after the address.\n mstore(0x20, or(shl(0x78, implementation), 0x5af43d82803e903d91602b57fd5bf3))\n instance := create2(0, 0x09, 0x37, salt)\n }\n require(instance != address(0), \"ERC1167: create2 failed\");\n }\n\n /**\n * @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}.\n */\n function predictDeterministicAddress(\n address implementation,\n bytes32 salt,\n address deployer\n ) internal pure returns (address predicted) {\n /// @solidity memory-safe-assembly\n assembly {\n let ptr := mload(0x40)\n mstore(add(ptr, 0x38), deployer)\n mstore(add(ptr, 0x24), 0x5af43d82803e903d91602b57fd5bf3ff)\n mstore(add(ptr, 0x14), implementation)\n mstore(ptr, 0x3d602d80600a3d3981f3363d3d373d3d3d363d73)\n mstore(add(ptr, 0x58), salt)\n mstore(add(ptr, 0x78), keccak256(add(ptr, 0x0c), 0x37))\n predicted := keccak256(add(ptr, 0x43), 0x55)\n }\n }\n\n /**\n * @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}.\n */\n function predictDeterministicAddress(\n address implementation,\n bytes32 salt\n ) internal view returns (address predicted) {\n return predictDeterministicAddress(implementation, salt, address(this));\n }\n}\n"},"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.7.0) (proxy/ERC1967/ERC1967Proxy.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../Proxy.sol\";\nimport \"./ERC1967Upgrade.sol\";\n\n/**\n * @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an\n * implementation address that can be changed. This address is stored in storage in the location specified by\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the\n * implementation behind the proxy.\n */\ncontract ERC1967Proxy is Proxy, ERC1967Upgrade {\n /**\n * @dev Initializes the upgradeable proxy with an initial implementation specified by `_logic`.\n *\n * If `_data` is nonempty, it's used as data in a delegate call to `_logic`. This will typically be an encoded\n * function call, and allows initializing the storage of the proxy like a Solidity constructor.\n */\n constructor(address _logic, bytes memory _data) payable {\n _upgradeToAndCall(_logic, _data, false);\n }\n\n /**\n * @dev Returns the current implementation address.\n */\n function _implementation() internal view virtual override returns (address impl) {\n return ERC1967Upgrade._getImplementation();\n }\n}\n"},"@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/ERC1967/ERC1967Upgrade.sol)\n\npragma solidity ^0.8.2;\n\nimport \"../beacon/IBeacon.sol\";\nimport \"../../interfaces/IERC1967.sol\";\nimport \"../../interfaces/draft-IERC1822.sol\";\nimport \"../../utils/Address.sol\";\nimport \"../../utils/StorageSlot.sol\";\n\n/**\n * @dev This abstract contract provides getters and event emitting update functions for\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\n *\n * _Available since v4.1._\n */\nabstract contract ERC1967Upgrade is IERC1967 {\n // This is the keccak-256 hash of \"eip1967.proxy.rollback\" subtracted by 1\n bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\n\n /**\n * @dev Storage slot with the address of the current implementation.\n * This is the keccak-256 hash of \"eip1967.proxy.implementation\" subtracted by 1, and is\n * validated in the constructor.\n */\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n\n /**\n * @dev Returns the current implementation address.\n */\n function _getImplementation() internal view returns (address) {\n return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\n }\n\n /**\n * @dev Stores a new address in the EIP1967 implementation slot.\n */\n function _setImplementation(address newImplementation) private {\n require(Address.isContract(newImplementation), \"ERC1967: new implementation is not a contract\");\n StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\n }\n\n /**\n * @dev Perform implementation upgrade\n *\n * Emits an {Upgraded} event.\n */\n function _upgradeTo(address newImplementation) internal {\n _setImplementation(newImplementation);\n emit Upgraded(newImplementation);\n }\n\n /**\n * @dev Perform implementation upgrade with additional setup call.\n *\n * Emits an {Upgraded} event.\n */\n function _upgradeToAndCall(address newImplementation, bytes memory data, bool forceCall) internal {\n _upgradeTo(newImplementation);\n if (data.length > 0 || forceCall) {\n Address.functionDelegateCall(newImplementation, data);\n }\n }\n\n /**\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\n *\n * Emits an {Upgraded} event.\n */\n function _upgradeToAndCallUUPS(address newImplementation, bytes memory data, bool forceCall) internal {\n // Upgrades from old implementations will perform a rollback test. This test requires the new\n // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\n // this special case will break upgrade paths from old UUPS implementation to new ones.\n if (StorageSlot.getBooleanSlot(_ROLLBACK_SLOT).value) {\n _setImplementation(newImplementation);\n } else {\n try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\n require(slot == _IMPLEMENTATION_SLOT, \"ERC1967Upgrade: unsupported proxiableUUID\");\n } catch {\n revert(\"ERC1967Upgrade: new implementation is not UUPS\");\n }\n _upgradeToAndCall(newImplementation, data, forceCall);\n }\n }\n\n /**\n * @dev Storage slot with the admin of the contract.\n * This is the keccak-256 hash of \"eip1967.proxy.admin\" subtracted by 1, and is\n * validated in the constructor.\n */\n bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\n\n /**\n * @dev Returns the current admin.\n */\n function _getAdmin() internal view returns (address) {\n return StorageSlot.getAddressSlot(_ADMIN_SLOT).value;\n }\n\n /**\n * @dev Stores a new address in the EIP1967 admin slot.\n */\n function _setAdmin(address newAdmin) private {\n require(newAdmin != address(0), \"ERC1967: new admin is the zero address\");\n StorageSlot.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\n }\n\n /**\n * @dev Changes the admin of the proxy.\n *\n * Emits an {AdminChanged} event.\n */\n function _changeAdmin(address newAdmin) internal {\n emit AdminChanged(_getAdmin(), newAdmin);\n _setAdmin(newAdmin);\n }\n\n /**\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\n * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\n */\n bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\n\n /**\n * @dev Returns the current beacon.\n */\n function _getBeacon() internal view returns (address) {\n return StorageSlot.getAddressSlot(_BEACON_SLOT).value;\n }\n\n /**\n * @dev Stores a new beacon in the EIP1967 beacon slot.\n */\n function _setBeacon(address newBeacon) private {\n require(Address.isContract(newBeacon), \"ERC1967: new beacon is not a contract\");\n require(\n Address.isContract(IBeacon(newBeacon).implementation()),\n \"ERC1967: beacon implementation is not a contract\"\n );\n StorageSlot.getAddressSlot(_BEACON_SLOT).value = newBeacon;\n }\n\n /**\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\n *\n * Emits a {BeaconUpgraded} event.\n */\n function _upgradeBeaconToAndCall(address newBeacon, bytes memory data, bool forceCall) internal {\n _setBeacon(newBeacon);\n emit BeaconUpgraded(newBeacon);\n if (data.length > 0 || forceCall) {\n Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\n }\n }\n}\n"},"@openzeppelin/contracts/proxy/Proxy.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.6.0) (proxy/Proxy.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\n * be specified by overriding the virtual {_implementation} function.\n *\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\n * different contract through the {_delegate} function.\n *\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\n */\nabstract contract Proxy {\n /**\n * @dev Delegates the current call to `implementation`.\n *\n * This function does not return to its internal call site, it will return directly to the external caller.\n */\n function _delegate(address implementation) internal virtual {\n assembly {\n // Copy msg.data. We take full control of memory in this inline assembly\n // block because it will not return to Solidity code. We overwrite the\n // Solidity scratch pad at memory position 0.\n calldatacopy(0, 0, calldatasize())\n\n // Call the implementation.\n // out and outsize are 0 because we don't know the size yet.\n let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)\n\n // Copy the returned data.\n returndatacopy(0, 0, returndatasize())\n\n switch result\n // delegatecall returns 0 on error.\n case 0 {\n revert(0, returndatasize())\n }\n default {\n return(0, returndatasize())\n }\n }\n }\n\n /**\n * @dev This is a virtual function that should be overridden so it returns the address to which the fallback function\n * and {_fallback} should delegate.\n */\n function _implementation() internal view virtual returns (address);\n\n /**\n * @dev Delegates the current call to the address returned by `_implementation()`.\n *\n * This function does not return to its internal call site, it will return directly to the external caller.\n */\n function _fallback() internal virtual {\n _beforeFallback();\n _delegate(_implementation());\n }\n\n /**\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\n * function in the contract matches the call data.\n */\n fallback() external payable virtual {\n _fallback();\n }\n\n /**\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data\n * is empty.\n */\n receive() external payable virtual {\n _fallback();\n }\n\n /**\n * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`\n * call, or as part of the Solidity `fallback` or `receive` functions.\n *\n * If overridden should call `super._beforeFallback()`.\n */\n function _beforeFallback() internal virtual {}\n}\n"},"@openzeppelin/contracts/token/ERC1155/ERC1155.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC1155/ERC1155.sol)\n\npragma solidity ^0.8.0;\n\nimport \"./IERC1155.sol\";\nimport \"./IERC1155Receiver.sol\";\nimport \"./extensions/IERC1155MetadataURI.sol\";\nimport \"../../utils/Address.sol\";\nimport \"../../utils/Context.sol\";\nimport \"../../utils/introspection/ERC165.sol\";\n\n/**\n * @dev Implementation of the basic standard multi-token.\n * See https://eips.ethereum.org/EIPS/eip-1155\n * Originally based on code by Enjin: https://github.com/enjin/erc-1155\n *\n * _Available since v3.1._\n */\ncontract ERC1155 is Context, ERC165, IERC1155, IERC1155MetadataURI {\n using Address for address;\n\n // Mapping from token ID to account balances\n mapping(uint256 => mapping(address => uint256)) private _balances;\n\n // Mapping from account to operator approvals\n mapping(address => mapping(address => bool)) private _operatorApprovals;\n\n // Used as the URI for all token types by relying on ID substitution, e.g. https://token-cdn-domain/{id}.json\n string private _uri;\n\n /**\n * @dev See {_setURI}.\n */\n constructor(string memory uri_) {\n _setURI(uri_);\n }\n\n /**\n * @dev See {IERC165-supportsInterface}.\n */\n function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) {\n return\n interfaceId == type(IERC1155).interfaceId ||\n interfaceId == type(IERC1155MetadataURI).interfaceId ||\n super.supportsInterface(interfaceId);\n }\n\n /**\n * @dev See {IERC1155MetadataURI-uri}.\n *\n * This implementation returns the same URI for *all* token types. It relies\n * on the token type ID substitution mechanism\n * https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP].\n *\n * Clients calling this function must replace the `\\{id\\}` substring with the\n * actual token type ID.\n */\n function uri(uint256) public view virtual override returns (string memory) {\n return _uri;\n }\n\n /**\n * @dev See {IERC1155-balanceOf}.\n *\n * Requirements:\n *\n * - `account` cannot be the zero address.\n */\n function balanceOf(address account, uint256 id) public view virtual override returns (uint256) {\n require(account != address(0), \"ERC1155: address zero is not a valid owner\");\n return _balances[id][account];\n }\n\n /**\n * @dev See {IERC1155-balanceOfBatch}.\n *\n * Requirements:\n *\n * - `accounts` and `ids` must have the same length.\n */\n function balanceOfBatch(\n address[] memory accounts,\n uint256[] memory ids\n ) public view virtual override returns (uint256[] memory) {\n require(accounts.length == ids.length, \"ERC1155: accounts and ids length mismatch\");\n\n uint256[] memory batchBalances = new uint256[](accounts.length);\n\n for (uint256 i = 0; i < accounts.length; ++i) {\n batchBalances[i] = balanceOf(accounts[i], ids[i]);\n }\n\n return batchBalances;\n }\n\n /**\n * @dev See {IERC1155-setApprovalForAll}.\n */\n function setApprovalForAll(address operator, bool approved) public virtual override {\n _setApprovalForAll(_msgSender(), operator, approved);\n }\n\n /**\n * @dev See {IERC1155-isApprovedForAll}.\n */\n function isApprovedForAll(address account, address operator) public view virtual override returns (bool) {\n return _operatorApprovals[account][operator];\n }\n\n /**\n * @dev See {IERC1155-safeTransferFrom}.\n */\n function safeTransferFrom(\n address from,\n address to,\n uint256 id,\n uint256 amount,\n bytes memory data\n ) public virtual override {\n require(\n from == _msgSender() || isApprovedForAll(from, _msgSender()),\n \"ERC1155: caller is not token owner or approved\"\n );\n _safeTransferFrom(from, to, id, amount, data);\n }\n\n /**\n * @dev See {IERC1155-safeBatchTransferFrom}.\n */\n function safeBatchTransferFrom(\n address from,\n address to,\n uint256[] memory ids,\n uint256[] memory amounts,\n bytes memory data\n ) public virtual override {\n require(\n from == _msgSender() || isApprovedForAll(from, _msgSender()),\n \"ERC1155: caller is not token owner or approved\"\n );\n _safeBatchTransferFrom(from, to, ids, amounts, data);\n }\n\n /**\n * @dev Transfers `amount` tokens of token type `id` from `from` to `to`.\n *\n * Emits a {TransferSingle} event.\n *\n * Requirements:\n *\n * - `to` cannot be the zero address.\n * - `from` must have a balance of tokens of type `id` of at least `amount`.\n * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the\n * acceptance magic value.\n */\n function _safeTransferFrom(\n address from,\n address to,\n uint256 id,\n uint256 amount,\n bytes memory data\n ) internal virtual {\n require(to != address(0), \"ERC1155: transfer to the zero address\");\n\n address operator = _msgSender();\n uint256[] memory ids = _asSingletonArray(id);\n uint256[] memory amounts = _asSingletonArray(amount);\n\n _beforeTokenTransfer(operator, from, to, ids, amounts, data);\n\n uint256 fromBalance = _balances[id][from];\n require(fromBalance >= amount, \"ERC1155: insufficient balance for transfer\");\n unchecked {\n _balances[id][from] = fromBalance - amount;\n }\n _balances[id][to] += amount;\n\n emit TransferSingle(operator, from, to, id, amount);\n\n _afterTokenTransfer(operator, from, to, ids, amounts, data);\n\n _doSafeTransferAcceptanceCheck(operator, from, to, id, amount, data);\n }\n\n /**\n * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_safeTransferFrom}.\n *\n * Emits a {TransferBatch} event.\n *\n * Requirements:\n *\n * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the\n * acceptance magic value.\n */\n function _safeBatchTransferFrom(\n address from,\n address to,\n uint256[] memory ids,\n uint256[] memory amounts,\n bytes memory data\n ) internal virtual {\n require(ids.length == amounts.length, \"ERC1155: ids and amounts length mismatch\");\n require(to != address(0), \"ERC1155: transfer to the zero address\");\n\n address operator = _msgSender();\n\n _beforeTokenTransfer(operator, from, to, ids, amounts, data);\n\n for (uint256 i = 0; i < ids.length; ++i) {\n uint256 id = ids[i];\n uint256 amount = amounts[i];\n\n uint256 fromBalance = _balances[id][from];\n require(fromBalance >= amount, \"ERC1155: insufficient balance for transfer\");\n unchecked {\n _balances[id][from] = fromBalance - amount;\n }\n _balances[id][to] += amount;\n }\n\n emit TransferBatch(operator, from, to, ids, amounts);\n\n _afterTokenTransfer(operator, from, to, ids, amounts, data);\n\n _doSafeBatchTransferAcceptanceCheck(operator, from, to, ids, amounts, data);\n }\n\n /**\n * @dev Sets a new URI for all token types, by relying on the token type ID\n * substitution mechanism\n * https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP].\n *\n * By this mechanism, any occurrence of the `\\{id\\}` substring in either the\n * URI or any of the amounts in the JSON file at said URI will be replaced by\n * clients with the token type ID.\n *\n * For example, the `https://token-cdn-domain/\\{id\\}.json` URI would be\n * interpreted by clients as\n * `https://token-cdn-domain/000000000000000000000000000000000000000000000000000000000004cce0.json`\n * for token type ID 0x4cce0.\n *\n * See {uri}.\n *\n * Because these URIs cannot be meaningfully represented by the {URI} event,\n * this function emits no events.\n */\n function _setURI(string memory newuri) internal virtual {\n _uri = newuri;\n }\n\n /**\n * @dev Creates `amount` tokens of token type `id`, and assigns them to `to`.\n *\n * Emits a {TransferSingle} event.\n *\n * Requirements:\n *\n * - `to` cannot be the zero address.\n * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the\n * acceptance magic value.\n */\n function _mint(address to, uint256 id, uint256 amount, bytes memory data) internal virtual {\n require(to != address(0), \"ERC1155: mint to the zero address\");\n\n address operator = _msgSender();\n uint256[] memory ids = _asSingletonArray(id);\n uint256[] memory amounts = _asSingletonArray(amount);\n\n _beforeTokenTransfer(operator, address(0), to, ids, amounts, data);\n\n _balances[id][to] += amount;\n emit TransferSingle(operator, address(0), to, id, amount);\n\n _afterTokenTransfer(operator, address(0), to, ids, amounts, data);\n\n _doSafeTransferAcceptanceCheck(operator, address(0), to, id, amount, data);\n }\n\n /**\n * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_mint}.\n *\n * Emits a {TransferBatch} event.\n *\n * Requirements:\n *\n * - `ids` and `amounts` must have the same length.\n * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the\n * acceptance magic value.\n */\n function _mintBatch(\n address to,\n uint256[] memory ids,\n uint256[] memory amounts,\n bytes memory data\n ) internal virtual {\n require(to != address(0), \"ERC1155: mint to the zero address\");\n require(ids.length == amounts.length, \"ERC1155: ids and amounts length mismatch\");\n\n address operator = _msgSender();\n\n _beforeTokenTransfer(operator, address(0), to, ids, amounts, data);\n\n for (uint256 i = 0; i < ids.length; i++) {\n _balances[ids[i]][to] += amounts[i];\n }\n\n emit TransferBatch(operator, address(0), to, ids, amounts);\n\n _afterTokenTransfer(operator, address(0), to, ids, amounts, data);\n\n _doSafeBatchTransferAcceptanceCheck(operator, address(0), to, ids, amounts, data);\n }\n\n /**\n * @dev Destroys `amount` tokens of token type `id` from `from`\n *\n * Emits a {TransferSingle} event.\n *\n * Requirements:\n *\n * - `from` cannot be the zero address.\n * - `from` must have at least `amount` tokens of token type `id`.\n */\n function _burn(address from, uint256 id, uint256 amount) internal virtual {\n require(from != address(0), \"ERC1155: burn from the zero address\");\n\n address operator = _msgSender();\n uint256[] memory ids = _asSingletonArray(id);\n uint256[] memory amounts = _asSingletonArray(amount);\n\n _beforeTokenTransfer(operator, from, address(0), ids, amounts, \"\");\n\n uint256 fromBalance = _balances[id][from];\n require(fromBalance >= amount, \"ERC1155: burn amount exceeds balance\");\n unchecked {\n _balances[id][from] = fromBalance - amount;\n }\n\n emit TransferSingle(operator, from, address(0), id, amount);\n\n _afterTokenTransfer(operator, from, address(0), ids, amounts, \"\");\n }\n\n /**\n * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_burn}.\n *\n * Emits a {TransferBatch} event.\n *\n * Requirements:\n *\n * - `ids` and `amounts` must have the same length.\n */\n function _burnBatch(address from, uint256[] memory ids, uint256[] memory amounts) internal virtual {\n require(from != address(0), \"ERC1155: burn from the zero address\");\n require(ids.length == amounts.length, \"ERC1155: ids and amounts length mismatch\");\n\n address operator = _msgSender();\n\n _beforeTokenTransfer(operator, from, address(0), ids, amounts, \"\");\n\n for (uint256 i = 0; i < ids.length; i++) {\n uint256 id = ids[i];\n uint256 amount = amounts[i];\n\n uint256 fromBalance = _balances[id][from];\n require(fromBalance >= amount, \"ERC1155: burn amount exceeds balance\");\n unchecked {\n _balances[id][from] = fromBalance - amount;\n }\n }\n\n emit TransferBatch(operator, from, address(0), ids, amounts);\n\n _afterTokenTransfer(operator, from, address(0), ids, amounts, \"\");\n }\n\n /**\n * @dev Approve `operator` to operate on all of `owner` tokens\n *\n * Emits an {ApprovalForAll} event.\n */\n function _setApprovalForAll(address owner, address operator, bool approved) internal virtual {\n require(owner != operator, \"ERC1155: setting approval status for self\");\n _operatorApprovals[owner][operator] = approved;\n emit ApprovalForAll(owner, operator, approved);\n }\n\n /**\n * @dev Hook that is called before any token transfer. This includes minting\n * and burning, as well as batched variants.\n *\n * The same hook is called on both single and batched variants. For single\n * transfers, the length of the `ids` and `amounts` arrays will be 1.\n *\n * Calling conditions (for each `id` and `amount` pair):\n *\n * - When `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n * of token type `id` will be transferred to `to`.\n * - When `from` is zero, `amount` tokens of token type `id` will be minted\n * for `to`.\n * - when `to` is zero, `amount` of ``from``'s tokens of token type `id`\n * will be burned.\n * - `from` and `to` are never both zero.\n * - `ids` and `amounts` have the same, non-zero length.\n *\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\n */\n function _beforeTokenTransfer(\n address operator,\n address from,\n address to,\n uint256[] memory ids,\n uint256[] memory amounts,\n bytes memory data\n ) internal virtual {}\n\n /**\n * @dev Hook that is called after any token transfer. This includes minting\n * and burning, as well as batched variants.\n *\n * The same hook is called on both single and batched variants. For single\n * transfers, the length of the `id` and `amount` arrays will be 1.\n *\n * Calling conditions (for each `id` and `amount` pair):\n *\n * - When `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n * of token type `id` will be transferred to `to`.\n * - When `from` is zero, `amount` tokens of token type `id` will be minted\n * for `to`.\n * - when `to` is zero, `amount` of ``from``'s tokens of token type `id`\n * will be burned.\n * - `from` and `to` are never both zero.\n * - `ids` and `amounts` have the same, non-zero length.\n *\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\n */\n function _afterTokenTransfer(\n address operator,\n address from,\n address to,\n uint256[] memory ids,\n uint256[] memory amounts,\n bytes memory data\n ) internal virtual {}\n\n function _doSafeTransferAcceptanceCheck(\n address operator,\n address from,\n address to,\n uint256 id,\n uint256 amount,\n bytes memory data\n ) private {\n if (to.isContract()) {\n try IERC1155Receiver(to).onERC1155Received(operator, from, id, amount, data) returns (bytes4 response) {\n if (response != IERC1155Receiver.onERC1155Received.selector) {\n revert(\"ERC1155: ERC1155Receiver rejected tokens\");\n }\n } catch Error(string memory reason) {\n revert(reason);\n } catch {\n revert(\"ERC1155: transfer to non-ERC1155Receiver implementer\");\n }\n }\n }\n\n function _doSafeBatchTransferAcceptanceCheck(\n address operator,\n address from,\n address to,\n uint256[] memory ids,\n uint256[] memory amounts,\n bytes memory data\n ) private {\n if (to.isContract()) {\n try IERC1155Receiver(to).onERC1155BatchReceived(operator, from, ids, amounts, data) returns (\n bytes4 response\n ) {\n if (response != IERC1155Receiver.onERC1155BatchReceived.selector) {\n revert(\"ERC1155: ERC1155Receiver rejected tokens\");\n }\n } catch Error(string memory reason) {\n revert(reason);\n } catch {\n revert(\"ERC1155: transfer to non-ERC1155Receiver implementer\");\n }\n }\n }\n\n function _asSingletonArray(uint256 element) private pure returns (uint256[] memory) {\n uint256[] memory array = new uint256[](1);\n array[0] = element;\n\n return array;\n }\n}\n"},"@openzeppelin/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (token/ERC1155/extensions/IERC1155MetadataURI.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../IERC1155.sol\";\n\n/**\n * @dev Interface of the optional ERC1155MetadataExtension interface, as defined\n * in the https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[EIP].\n *\n * _Available since v3.1._\n */\ninterface IERC1155MetadataURI is IERC1155 {\n /**\n * @dev Returns the URI for token type `id`.\n *\n * If the `\\{id\\}` substring is present in the URI, it must be replaced by\n * clients with the actual token type ID.\n */\n function uri(uint256 id) external view returns (string memory);\n}\n"},"@openzeppelin/contracts/token/ERC1155/IERC1155.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC1155/IERC1155.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../../utils/introspection/IERC165.sol\";\n\n/**\n * @dev Required interface of an ERC1155 compliant contract, as defined in the\n * https://eips.ethereum.org/EIPS/eip-1155[EIP].\n *\n * _Available since v3.1._\n */\ninterface IERC1155 is IERC165 {\n /**\n * @dev Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`.\n */\n event TransferSingle(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value);\n\n /**\n * @dev Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all\n * transfers.\n */\n event TransferBatch(\n address indexed operator,\n address indexed from,\n address indexed to,\n uint256[] ids,\n uint256[] values\n );\n\n /**\n * @dev Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to\n * `approved`.\n */\n event ApprovalForAll(address indexed account, address indexed operator, bool approved);\n\n /**\n * @dev Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI.\n *\n * If an {URI} event was emitted for `id`, the standard\n * https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value\n * returned by {IERC1155MetadataURI-uri}.\n */\n event URI(string value, uint256 indexed id);\n\n /**\n * @dev Returns the amount of tokens of token type `id` owned by `account`.\n *\n * Requirements:\n *\n * - `account` cannot be the zero address.\n */\n function balanceOf(address account, uint256 id) external view returns (uint256);\n\n /**\n * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}.\n *\n * Requirements:\n *\n * - `accounts` and `ids` must have the same length.\n */\n function balanceOfBatch(\n address[] calldata accounts,\n uint256[] calldata ids\n ) external view returns (uint256[] memory);\n\n /**\n * @dev Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`,\n *\n * Emits an {ApprovalForAll} event.\n *\n * Requirements:\n *\n * - `operator` cannot be the caller.\n */\n function setApprovalForAll(address operator, bool approved) external;\n\n /**\n * @dev Returns true if `operator` is approved to transfer ``account``'s tokens.\n *\n * See {setApprovalForAll}.\n */\n function isApprovedForAll(address account, address operator) external view returns (bool);\n\n /**\n * @dev Transfers `amount` tokens of token type `id` from `from` to `to`.\n *\n * Emits a {TransferSingle} event.\n *\n * Requirements:\n *\n * - `to` cannot be the zero address.\n * - If the caller is not `from`, it must have been approved to spend ``from``'s tokens via {setApprovalForAll}.\n * - `from` must have a balance of tokens of type `id` of at least `amount`.\n * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the\n * acceptance magic value.\n */\n function safeTransferFrom(address from, address to, uint256 id, uint256 amount, bytes calldata data) external;\n\n /**\n * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}.\n *\n * Emits a {TransferBatch} event.\n *\n * Requirements:\n *\n * - `ids` and `amounts` must have the same length.\n * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the\n * acceptance magic value.\n */\n function safeBatchTransferFrom(\n address from,\n address to,\n uint256[] calldata ids,\n uint256[] calldata amounts,\n bytes calldata data\n ) external;\n}\n"},"@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC1155/IERC1155Receiver.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../../utils/introspection/IERC165.sol\";\n\n/**\n * @dev _Available since v3.1._\n */\ninterface IERC1155Receiver is IERC165 {\n /**\n * @dev Handles the receipt of a single ERC1155 token type. This function is\n * called at the end of a `safeTransferFrom` after the balance has been updated.\n *\n * NOTE: To accept the transfer, this must return\n * `bytes4(keccak256(\"onERC1155Received(address,address,uint256,uint256,bytes)\"))`\n * (i.e. 0xf23a6e61, or its own function selector).\n *\n * @param operator The address which initiated the transfer (i.e. msg.sender)\n * @param from The address which previously owned the token\n * @param id The ID of the token being transferred\n * @param value The amount of tokens being transferred\n * @param data Additional data with no specified format\n * @return `bytes4(keccak256(\"onERC1155Received(address,address,uint256,uint256,bytes)\"))` if transfer is allowed\n */\n function onERC1155Received(\n address operator,\n address from,\n uint256 id,\n uint256 value,\n bytes calldata data\n ) external returns (bytes4);\n\n /**\n * @dev Handles the receipt of a multiple ERC1155 token types. This function\n * is called at the end of a `safeBatchTransferFrom` after the balances have\n * been updated.\n *\n * NOTE: To accept the transfer(s), this must return\n * `bytes4(keccak256(\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\"))`\n * (i.e. 0xbc197c81, or its own function selector).\n *\n * @param operator The address which initiated the batch transfer (i.e. msg.sender)\n * @param from The address which previously owned the token\n * @param ids An array containing ids of each token being transferred (order and length must match values array)\n * @param values An array containing amounts of each token being transferred (order and length must match ids array)\n * @param data Additional data with no specified format\n * @return `bytes4(keccak256(\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\"))` if transfer is allowed\n */\n function onERC1155BatchReceived(\n address operator,\n address from,\n uint256[] calldata ids,\n uint256[] calldata values,\n bytes calldata data\n ) external returns (bytes4);\n}\n"},"@openzeppelin/contracts/token/ERC20/ERC20.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/ERC20.sol)\n\npragma solidity ^0.8.0;\n\nimport \"./IERC20.sol\";\nimport \"./extensions/IERC20Metadata.sol\";\nimport \"../../utils/Context.sol\";\n\n/**\n * @dev Implementation of the {IERC20} interface.\n *\n * This implementation is agnostic to the way tokens are created. This means\n * that a supply mechanism has to be added in a derived contract using {_mint}.\n * For a generic mechanism see {ERC20PresetMinterPauser}.\n *\n * TIP: For a detailed writeup see our guide\n * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How\n * to implement supply mechanisms].\n *\n * The default value of {decimals} is 18. To change this, you should override\n * this function so it returns a different value.\n *\n * We have followed general OpenZeppelin Contracts guidelines: functions revert\n * instead returning `false` on failure. This behavior is nonetheless\n * conventional and does not conflict with the expectations of ERC20\n * applications.\n *\n * Additionally, an {Approval} event is emitted on calls to {transferFrom}.\n * This allows applications to reconstruct the allowance for all accounts just\n * by listening to said events. Other implementations of the EIP may not emit\n * these events, as it isn't required by the specification.\n *\n * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}\n * functions have been added to mitigate the well-known issues around setting\n * allowances. See {IERC20-approve}.\n */\ncontract ERC20 is Context, IERC20, IERC20Metadata {\n mapping(address => uint256) private _balances;\n\n mapping(address => mapping(address => uint256)) private _allowances;\n\n uint256 private _totalSupply;\n\n string private _name;\n string private _symbol;\n\n /**\n * @dev Sets the values for {name} and {symbol}.\n *\n * All two of these values are immutable: they can only be set once during\n * construction.\n */\n constructor(string memory name_, string memory symbol_) {\n _name = name_;\n _symbol = symbol_;\n }\n\n /**\n * @dev Returns the name of the token.\n */\n function name() public view virtual override returns (string memory) {\n return _name;\n }\n\n /**\n * @dev Returns the symbol of the token, usually a shorter version of the\n * name.\n */\n function symbol() public view virtual override returns (string memory) {\n return _symbol;\n }\n\n /**\n * @dev Returns the number of decimals used to get its user representation.\n * For example, if `decimals` equals `2`, a balance of `505` tokens should\n * be displayed to a user as `5.05` (`505 / 10 ** 2`).\n *\n * Tokens usually opt for a value of 18, imitating the relationship between\n * Ether and Wei. This is the default value returned by this function, unless\n * it's overridden.\n *\n * NOTE: This information is only used for _display_ purposes: it in\n * no way affects any of the arithmetic of the contract, including\n * {IERC20-balanceOf} and {IERC20-transfer}.\n */\n function decimals() public view virtual override returns (uint8) {\n return 18;\n }\n\n /**\n * @dev See {IERC20-totalSupply}.\n */\n function totalSupply() public view virtual override returns (uint256) {\n return _totalSupply;\n }\n\n /**\n * @dev See {IERC20-balanceOf}.\n */\n function balanceOf(address account) public view virtual override returns (uint256) {\n return _balances[account];\n }\n\n /**\n * @dev See {IERC20-transfer}.\n *\n * Requirements:\n *\n * - `to` cannot be the zero address.\n * - the caller must have a balance of at least `amount`.\n */\n function transfer(address to, uint256 amount) public virtual override returns (bool) {\n address owner = _msgSender();\n _transfer(owner, to, amount);\n return true;\n }\n\n /**\n * @dev See {IERC20-allowance}.\n */\n function allowance(address owner, address spender) public view virtual override returns (uint256) {\n return _allowances[owner][spender];\n }\n\n /**\n * @dev See {IERC20-approve}.\n *\n * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on\n * `transferFrom`. This is semantically equivalent to an infinite approval.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n */\n function approve(address spender, uint256 amount) public virtual override returns (bool) {\n address owner = _msgSender();\n _approve(owner, spender, amount);\n return true;\n }\n\n /**\n * @dev See {IERC20-transferFrom}.\n *\n * Emits an {Approval} event indicating the updated allowance. This is not\n * required by the EIP. See the note at the beginning of {ERC20}.\n *\n * NOTE: Does not update the allowance if the current allowance\n * is the maximum `uint256`.\n *\n * Requirements:\n *\n * - `from` and `to` cannot be the zero address.\n * - `from` must have a balance of at least `amount`.\n * - the caller must have allowance for ``from``'s tokens of at least\n * `amount`.\n */\n function transferFrom(address from, address to, uint256 amount) public virtual override returns (bool) {\n address spender = _msgSender();\n _spendAllowance(from, spender, amount);\n _transfer(from, to, amount);\n return true;\n }\n\n /**\n * @dev Atomically increases the allowance granted to `spender` by the caller.\n *\n * This is an alternative to {approve} that can be used as a mitigation for\n * problems described in {IERC20-approve}.\n *\n * Emits an {Approval} event indicating the updated allowance.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n */\n function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {\n address owner = _msgSender();\n _approve(owner, spender, allowance(owner, spender) + addedValue);\n return true;\n }\n\n /**\n * @dev Atomically decreases the allowance granted to `spender` by the caller.\n *\n * This is an alternative to {approve} that can be used as a mitigation for\n * problems described in {IERC20-approve}.\n *\n * Emits an {Approval} event indicating the updated allowance.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n * - `spender` must have allowance for the caller of at least\n * `subtractedValue`.\n */\n function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {\n address owner = _msgSender();\n uint256 currentAllowance = allowance(owner, spender);\n require(currentAllowance >= subtractedValue, \"ERC20: decreased allowance below zero\");\n unchecked {\n _approve(owner, spender, currentAllowance - subtractedValue);\n }\n\n return true;\n }\n\n /**\n * @dev Moves `amount` of tokens from `from` to `to`.\n *\n * This internal function is equivalent to {transfer}, and can be used to\n * e.g. implement automatic token fees, slashing mechanisms, etc.\n *\n * Emits a {Transfer} event.\n *\n * Requirements:\n *\n * - `from` cannot be the zero address.\n * - `to` cannot be the zero address.\n * - `from` must have a balance of at least `amount`.\n */\n function _transfer(address from, address to, uint256 amount) internal virtual {\n require(from != address(0), \"ERC20: transfer from the zero address\");\n require(to != address(0), \"ERC20: transfer to the zero address\");\n\n _beforeTokenTransfer(from, to, amount);\n\n uint256 fromBalance = _balances[from];\n require(fromBalance >= amount, \"ERC20: transfer amount exceeds balance\");\n unchecked {\n _balances[from] = fromBalance - amount;\n // Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by\n // decrementing then incrementing.\n _balances[to] += amount;\n }\n\n emit Transfer(from, to, amount);\n\n _afterTokenTransfer(from, to, amount);\n }\n\n /** @dev Creates `amount` tokens and assigns them to `account`, increasing\n * the total supply.\n *\n * Emits a {Transfer} event with `from` set to the zero address.\n *\n * Requirements:\n *\n * - `account` cannot be the zero address.\n */\n function _mint(address account, uint256 amount) internal virtual {\n require(account != address(0), \"ERC20: mint to the zero address\");\n\n _beforeTokenTransfer(address(0), account, amount);\n\n _totalSupply += amount;\n unchecked {\n // Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above.\n _balances[account] += amount;\n }\n emit Transfer(address(0), account, amount);\n\n _afterTokenTransfer(address(0), account, amount);\n }\n\n /**\n * @dev Destroys `amount` tokens from `account`, reducing the\n * total supply.\n *\n * Emits a {Transfer} event with `to` set to the zero address.\n *\n * Requirements:\n *\n * - `account` cannot be the zero address.\n * - `account` must have at least `amount` tokens.\n */\n function _burn(address account, uint256 amount) internal virtual {\n require(account != address(0), \"ERC20: burn from the zero address\");\n\n _beforeTokenTransfer(account, address(0), amount);\n\n uint256 accountBalance = _balances[account];\n require(accountBalance >= amount, \"ERC20: burn amount exceeds balance\");\n unchecked {\n _balances[account] = accountBalance - amount;\n // Overflow not possible: amount <= accountBalance <= totalSupply.\n _totalSupply -= amount;\n }\n\n emit Transfer(account, address(0), amount);\n\n _afterTokenTransfer(account, address(0), amount);\n }\n\n /**\n * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.\n *\n * This internal function is equivalent to `approve`, and can be used to\n * e.g. set automatic allowances for certain subsystems, etc.\n *\n * Emits an {Approval} event.\n *\n * Requirements:\n *\n * - `owner` cannot be the zero address.\n * - `spender` cannot be the zero address.\n */\n function _approve(address owner, address spender, uint256 amount) internal virtual {\n require(owner != address(0), \"ERC20: approve from the zero address\");\n require(spender != address(0), \"ERC20: approve to the zero address\");\n\n _allowances[owner][spender] = amount;\n emit Approval(owner, spender, amount);\n }\n\n /**\n * @dev Updates `owner` s allowance for `spender` based on spent `amount`.\n *\n * Does not update the allowance amount in case of infinite allowance.\n * Revert if not enough allowance is available.\n *\n * Might emit an {Approval} event.\n */\n function _spendAllowance(address owner, address spender, uint256 amount) internal virtual {\n uint256 currentAllowance = allowance(owner, spender);\n if (currentAllowance != type(uint256).max) {\n require(currentAllowance >= amount, \"ERC20: insufficient allowance\");\n unchecked {\n _approve(owner, spender, currentAllowance - amount);\n }\n }\n }\n\n /**\n * @dev Hook that is called before any transfer of tokens. This includes\n * minting and burning.\n *\n * Calling conditions:\n *\n * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n * will be transferred to `to`.\n * - when `from` is zero, `amount` tokens will be minted for `to`.\n * - when `to` is zero, `amount` of ``from``'s tokens will be burned.\n * - `from` and `to` are never both zero.\n *\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\n */\n function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual {}\n\n /**\n * @dev Hook that is called after any transfer of tokens. This includes\n * minting and burning.\n *\n * Calling conditions:\n *\n * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n * has been transferred to `to`.\n * - when `from` is zero, `amount` tokens have been minted for `to`.\n * - when `to` is zero, `amount` of ``from``'s tokens have been burned.\n * - `from` and `to` are never both zero.\n *\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\n */\n function _afterTokenTransfer(address from, address to, uint256 amount) internal virtual {}\n}\n"},"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../IERC20.sol\";\n\n/**\n * @dev Interface for the optional metadata functions from the ERC20 standard.\n *\n * _Available since v4.1._\n */\ninterface IERC20Metadata is IERC20 {\n /**\n * @dev Returns the name of the token.\n */\n function name() external view returns (string memory);\n\n /**\n * @dev Returns the symbol of the token.\n */\n function symbol() external view returns (string memory);\n\n /**\n * @dev Returns the decimals places of the token.\n */\n function decimals() external view returns (uint8);\n}\n"},"@openzeppelin/contracts/token/ERC20/IERC20.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/IERC20.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Interface of the ERC20 standard as defined in the EIP.\n */\ninterface IERC20 {\n /**\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\n * another (`to`).\n *\n * Note that `value` may be zero.\n */\n event Transfer(address indexed from, address indexed to, uint256 value);\n\n /**\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\n * a call to {approve}. `value` is the new allowance.\n */\n event Approval(address indexed owner, address indexed spender, uint256 value);\n\n /**\n * @dev Returns the amount of tokens in existence.\n */\n function totalSupply() external view returns (uint256);\n\n /**\n * @dev Returns the amount of tokens owned by `account`.\n */\n function balanceOf(address account) external view returns (uint256);\n\n /**\n * @dev Moves `amount` tokens from the caller's account to `to`.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transfer(address to, uint256 amount) external returns (bool);\n\n /**\n * @dev Returns the remaining number of tokens that `spender` will be\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\n * zero by default.\n *\n * This value changes when {approve} or {transferFrom} are called.\n */\n function allowance(address owner, address spender) external view returns (uint256);\n\n /**\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\n * that someone may use both the old and the new allowance by unfortunate\n * transaction ordering. One possible solution to mitigate this race\n * condition is to first reduce the spender's allowance to 0 and set the\n * desired value afterwards:\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n *\n * Emits an {Approval} event.\n */\n function approve(address spender, uint256 amount) external returns (bool);\n\n /**\n * @dev Moves `amount` tokens from `from` to `to` using the\n * allowance mechanism. `amount` is then deducted from the caller's\n * allowance.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transferFrom(address from, address to, uint256 amount) external returns (bool);\n}\n"},"@openzeppelin/contracts/token/ERC721/ERC721.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC721/ERC721.sol)\n\npragma solidity ^0.8.0;\n\nimport \"./IERC721.sol\";\nimport \"./IERC721Receiver.sol\";\nimport \"./extensions/IERC721Metadata.sol\";\nimport \"../../utils/Address.sol\";\nimport \"../../utils/Context.sol\";\nimport \"../../utils/Strings.sol\";\nimport \"../../utils/introspection/ERC165.sol\";\n\n/**\n * @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including\n * the Metadata extension, but not including the Enumerable extension, which is available separately as\n * {ERC721Enumerable}.\n */\ncontract ERC721 is Context, ERC165, IERC721, IERC721Metadata {\n using Address for address;\n using Strings for uint256;\n\n // Token name\n string private _name;\n\n // Token symbol\n string private _symbol;\n\n // Mapping from token ID to owner address\n mapping(uint256 => address) private _owners;\n\n // Mapping owner address to token count\n mapping(address => uint256) private _balances;\n\n // Mapping from token ID to approved address\n mapping(uint256 => address) private _tokenApprovals;\n\n // Mapping from owner to operator approvals\n mapping(address => mapping(address => bool)) private _operatorApprovals;\n\n /**\n * @dev Initializes the contract by setting a `name` and a `symbol` to the token collection.\n */\n constructor(string memory name_, string memory symbol_) {\n _name = name_;\n _symbol = symbol_;\n }\n\n /**\n * @dev See {IERC165-supportsInterface}.\n */\n function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) {\n return\n interfaceId == type(IERC721).interfaceId ||\n interfaceId == type(IERC721Metadata).interfaceId ||\n super.supportsInterface(interfaceId);\n }\n\n /**\n * @dev See {IERC721-balanceOf}.\n */\n function balanceOf(address owner) public view virtual override returns (uint256) {\n require(owner != address(0), \"ERC721: address zero is not a valid owner\");\n return _balances[owner];\n }\n\n /**\n * @dev See {IERC721-ownerOf}.\n */\n function ownerOf(uint256 tokenId) public view virtual override returns (address) {\n address owner = _ownerOf(tokenId);\n require(owner != address(0), \"ERC721: invalid token ID\");\n return owner;\n }\n\n /**\n * @dev See {IERC721Metadata-name}.\n */\n function name() public view virtual override returns (string memory) {\n return _name;\n }\n\n /**\n * @dev See {IERC721Metadata-symbol}.\n */\n function symbol() public view virtual override returns (string memory) {\n return _symbol;\n }\n\n /**\n * @dev See {IERC721Metadata-tokenURI}.\n */\n function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {\n _requireMinted(tokenId);\n\n string memory baseURI = _baseURI();\n return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : \"\";\n }\n\n /**\n * @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\n * token will be the concatenation of the `baseURI` and the `tokenId`. Empty\n * by default, can be overridden in child contracts.\n */\n function _baseURI() internal view virtual returns (string memory) {\n return \"\";\n }\n\n /**\n * @dev See {IERC721-approve}.\n */\n function approve(address to, uint256 tokenId) public virtual override {\n address owner = ERC721.ownerOf(tokenId);\n require(to != owner, \"ERC721: approval to current owner\");\n\n require(\n _msgSender() == owner || isApprovedForAll(owner, _msgSender()),\n \"ERC721: approve caller is not token owner or approved for all\"\n );\n\n _approve(to, tokenId);\n }\n\n /**\n * @dev See {IERC721-getApproved}.\n */\n function getApproved(uint256 tokenId) public view virtual override returns (address) {\n _requireMinted(tokenId);\n\n return _tokenApprovals[tokenId];\n }\n\n /**\n * @dev See {IERC721-setApprovalForAll}.\n */\n function setApprovalForAll(address operator, bool approved) public virtual override {\n _setApprovalForAll(_msgSender(), operator, approved);\n }\n\n /**\n * @dev See {IERC721-isApprovedForAll}.\n */\n function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) {\n return _operatorApprovals[owner][operator];\n }\n\n /**\n * @dev See {IERC721-transferFrom}.\n */\n function transferFrom(address from, address to, uint256 tokenId) public virtual override {\n //solhint-disable-next-line max-line-length\n require(_isApprovedOrOwner(_msgSender(), tokenId), \"ERC721: caller is not token owner or approved\");\n\n _transfer(from, to, tokenId);\n }\n\n /**\n * @dev See {IERC721-safeTransferFrom}.\n */\n function safeTransferFrom(address from, address to, uint256 tokenId) public virtual override {\n safeTransferFrom(from, to, tokenId, \"\");\n }\n\n /**\n * @dev See {IERC721-safeTransferFrom}.\n */\n function safeTransferFrom(address from, address to, uint256 tokenId, bytes memory data) public virtual override {\n require(_isApprovedOrOwner(_msgSender(), tokenId), \"ERC721: caller is not token owner or approved\");\n _safeTransfer(from, to, tokenId, data);\n }\n\n /**\n * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n * are aware of the ERC721 protocol to prevent tokens from being forever locked.\n *\n * `data` is additional data, it has no specified format and it is sent in call to `to`.\n *\n * This internal function is equivalent to {safeTransferFrom}, and can be used to e.g.\n * implement alternative mechanisms to perform token transfer, such as signature-based.\n *\n * Requirements:\n *\n * - `from` cannot be the zero address.\n * - `to` cannot be the zero address.\n * - `tokenId` token must exist and be owned by `from`.\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n *\n * Emits a {Transfer} event.\n */\n function _safeTransfer(address from, address to, uint256 tokenId, bytes memory data) internal virtual {\n _transfer(from, to, tokenId);\n require(_checkOnERC721Received(from, to, tokenId, data), \"ERC721: transfer to non ERC721Receiver implementer\");\n }\n\n /**\n * @dev Returns the owner of the `tokenId`. Does NOT revert if token doesn't exist\n */\n function _ownerOf(uint256 tokenId) internal view virtual returns (address) {\n return _owners[tokenId];\n }\n\n /**\n * @dev Returns whether `tokenId` exists.\n *\n * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}.\n *\n * Tokens start existing when they are minted (`_mint`),\n * and stop existing when they are burned (`_burn`).\n */\n function _exists(uint256 tokenId) internal view virtual returns (bool) {\n return _ownerOf(tokenId) != address(0);\n }\n\n /**\n * @dev Returns whether `spender` is allowed to manage `tokenId`.\n *\n * Requirements:\n *\n * - `tokenId` must exist.\n */\n function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) {\n address owner = ERC721.ownerOf(tokenId);\n return (spender == owner || isApprovedForAll(owner, spender) || getApproved(tokenId) == spender);\n }\n\n /**\n * @dev Safely mints `tokenId` and transfers it to `to`.\n *\n * Requirements:\n *\n * - `tokenId` must not exist.\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n *\n * Emits a {Transfer} event.\n */\n function _safeMint(address to, uint256 tokenId) internal virtual {\n _safeMint(to, tokenId, \"\");\n }\n\n /**\n * @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\n * forwarded in {IERC721Receiver-onERC721Received} to contract recipients.\n */\n function _safeMint(address to, uint256 tokenId, bytes memory data) internal virtual {\n _mint(to, tokenId);\n require(\n _checkOnERC721Received(address(0), to, tokenId, data),\n \"ERC721: transfer to non ERC721Receiver implementer\"\n );\n }\n\n /**\n * @dev Mints `tokenId` and transfers it to `to`.\n *\n * WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\n *\n * Requirements:\n *\n * - `tokenId` must not exist.\n * - `to` cannot be the zero address.\n *\n * Emits a {Transfer} event.\n */\n function _mint(address to, uint256 tokenId) internal virtual {\n require(to != address(0), \"ERC721: mint to the zero address\");\n require(!_exists(tokenId), \"ERC721: token already minted\");\n\n _beforeTokenTransfer(address(0), to, tokenId, 1);\n\n // Check that tokenId was not minted by `_beforeTokenTransfer` hook\n require(!_exists(tokenId), \"ERC721: token already minted\");\n\n unchecked {\n // Will not overflow unless all 2**256 token ids are minted to the same owner.\n // Given that tokens are minted one by one, it is impossible in practice that\n // this ever happens. Might change if we allow batch minting.\n // The ERC fails to describe this case.\n _balances[to] += 1;\n }\n\n _owners[tokenId] = to;\n\n emit Transfer(address(0), to, tokenId);\n\n _afterTokenTransfer(address(0), to, tokenId, 1);\n }\n\n /**\n * @dev Destroys `tokenId`.\n * The approval is cleared when the token is burned.\n * This is an internal function that does not check if the sender is authorized to operate on the token.\n *\n * Requirements:\n *\n * - `tokenId` must exist.\n *\n * Emits a {Transfer} event.\n */\n function _burn(uint256 tokenId) internal virtual {\n address owner = ERC721.ownerOf(tokenId);\n\n _beforeTokenTransfer(owner, address(0), tokenId, 1);\n\n // Update ownership in case tokenId was transferred by `_beforeTokenTransfer` hook\n owner = ERC721.ownerOf(tokenId);\n\n // Clear approvals\n delete _tokenApprovals[tokenId];\n\n unchecked {\n // Cannot overflow, as that would require more tokens to be burned/transferred\n // out than the owner initially received through minting and transferring in.\n _balances[owner] -= 1;\n }\n delete _owners[tokenId];\n\n emit Transfer(owner, address(0), tokenId);\n\n _afterTokenTransfer(owner, address(0), tokenId, 1);\n }\n\n /**\n * @dev Transfers `tokenId` from `from` to `to`.\n * As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\n *\n * Requirements:\n *\n * - `to` cannot be the zero address.\n * - `tokenId` token must be owned by `from`.\n *\n * Emits a {Transfer} event.\n */\n function _transfer(address from, address to, uint256 tokenId) internal virtual {\n require(ERC721.ownerOf(tokenId) == from, \"ERC721: transfer from incorrect owner\");\n require(to != address(0), \"ERC721: transfer to the zero address\");\n\n _beforeTokenTransfer(from, to, tokenId, 1);\n\n // Check that tokenId was not transferred by `_beforeTokenTransfer` hook\n require(ERC721.ownerOf(tokenId) == from, \"ERC721: transfer from incorrect owner\");\n\n // Clear approvals from the previous owner\n delete _tokenApprovals[tokenId];\n\n unchecked {\n // `_balances[from]` cannot overflow for the same reason as described in `_burn`:\n // `from`'s balance is the number of token held, which is at least one before the current\n // transfer.\n // `_balances[to]` could overflow in the conditions described in `_mint`. That would require\n // all 2**256 token ids to be minted, which in practice is impossible.\n _balances[from] -= 1;\n _balances[to] += 1;\n }\n _owners[tokenId] = to;\n\n emit Transfer(from, to, tokenId);\n\n _afterTokenTransfer(from, to, tokenId, 1);\n }\n\n /**\n * @dev Approve `to` to operate on `tokenId`\n *\n * Emits an {Approval} event.\n */\n function _approve(address to, uint256 tokenId) internal virtual {\n _tokenApprovals[tokenId] = to;\n emit Approval(ERC721.ownerOf(tokenId), to, tokenId);\n }\n\n /**\n * @dev Approve `operator` to operate on all of `owner` tokens\n *\n * Emits an {ApprovalForAll} event.\n */\n function _setApprovalForAll(address owner, address operator, bool approved) internal virtual {\n require(owner != operator, \"ERC721: approve to caller\");\n _operatorApprovals[owner][operator] = approved;\n emit ApprovalForAll(owner, operator, approved);\n }\n\n /**\n * @dev Reverts if the `tokenId` has not been minted yet.\n */\n function _requireMinted(uint256 tokenId) internal view virtual {\n require(_exists(tokenId), \"ERC721: invalid token ID\");\n }\n\n /**\n * @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address.\n * The call is not executed if the target address is not a contract.\n *\n * @param from address representing the previous owner of the given token ID\n * @param to target address that will receive the tokens\n * @param tokenId uint256 ID of the token to be transferred\n * @param data bytes optional data to send along with the call\n * @return bool whether the call correctly returned the expected magic value\n */\n function _checkOnERC721Received(\n address from,\n address to,\n uint256 tokenId,\n bytes memory data\n ) private returns (bool) {\n if (to.isContract()) {\n try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, data) returns (bytes4 retval) {\n return retval == IERC721Receiver.onERC721Received.selector;\n } catch (bytes memory reason) {\n if (reason.length == 0) {\n revert(\"ERC721: transfer to non ERC721Receiver implementer\");\n } else {\n /// @solidity memory-safe-assembly\n assembly {\n revert(add(32, reason), mload(reason))\n }\n }\n }\n } else {\n return true;\n }\n }\n\n /**\n * @dev Hook that is called before any token transfer. This includes minting and burning. If {ERC721Consecutive} is\n * used, the hook may be called as part of a consecutive (batch) mint, as indicated by `batchSize` greater than 1.\n *\n * Calling conditions:\n *\n * - When `from` and `to` are both non-zero, ``from``'s tokens will be transferred to `to`.\n * - When `from` is zero, the tokens will be minted for `to`.\n * - When `to` is zero, ``from``'s tokens will be burned.\n * - `from` and `to` are never both zero.\n * - `batchSize` is non-zero.\n *\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\n */\n function _beforeTokenTransfer(address from, address to, uint256 firstTokenId, uint256 batchSize) internal virtual {}\n\n /**\n * @dev Hook that is called after any token transfer. This includes minting and burning. If {ERC721Consecutive} is\n * used, the hook may be called as part of a consecutive (batch) mint, as indicated by `batchSize` greater than 1.\n *\n * Calling conditions:\n *\n * - When `from` and `to` are both non-zero, ``from``'s tokens were transferred to `to`.\n * - When `from` is zero, the tokens were minted for `to`.\n * - When `to` is zero, ``from``'s tokens were burned.\n * - `from` and `to` are never both zero.\n * - `batchSize` is non-zero.\n *\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\n */\n function _afterTokenTransfer(address from, address to, uint256 firstTokenId, uint256 batchSize) internal virtual {}\n\n /**\n * @dev Unsafe write access to the balances, used by extensions that \"mint\" tokens using an {ownerOf} override.\n *\n * WARNING: Anyone calling this MUST ensure that the balances remain consistent with the ownership. The invariant\n * being that for any address `a` the value returned by `balanceOf(a)` must be equal to the number of tokens such\n * that `ownerOf(tokenId)` is `a`.\n */\n // solhint-disable-next-line func-name-mixedcase\n function __unsafe_increaseBalance(address account, uint256 amount) internal {\n _balances[account] += amount;\n }\n}\n"},"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Metadata.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../IERC721.sol\";\n\n/**\n * @title ERC-721 Non-Fungible Token Standard, optional metadata extension\n * @dev See https://eips.ethereum.org/EIPS/eip-721\n */\ninterface IERC721Metadata is IERC721 {\n /**\n * @dev Returns the token collection name.\n */\n function name() external view returns (string memory);\n\n /**\n * @dev Returns the token collection symbol.\n */\n function symbol() external view returns (string memory);\n\n /**\n * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.\n */\n function tokenURI(uint256 tokenId) external view returns (string memory);\n}\n"},"@openzeppelin/contracts/token/ERC721/IERC721.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC721/IERC721.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../../utils/introspection/IERC165.sol\";\n\n/**\n * @dev Required interface of an ERC721 compliant contract.\n */\ninterface IERC721 is IERC165 {\n /**\n * @dev Emitted when `tokenId` token is transferred from `from` to `to`.\n */\n event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);\n\n /**\n * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.\n */\n event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);\n\n /**\n * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\n */\n event ApprovalForAll(address indexed owner, address indexed operator, bool approved);\n\n /**\n * @dev Returns the number of tokens in ``owner``'s account.\n */\n function balanceOf(address owner) external view returns (uint256 balance);\n\n /**\n * @dev Returns the owner of the `tokenId` token.\n *\n * Requirements:\n *\n * - `tokenId` must exist.\n */\n function ownerOf(uint256 tokenId) external view returns (address owner);\n\n /**\n * @dev Safely transfers `tokenId` token from `from` to `to`.\n *\n * Requirements:\n *\n * - `from` cannot be the zero address.\n * - `to` cannot be the zero address.\n * - `tokenId` token must exist and be owned by `from`.\n * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n *\n * Emits a {Transfer} event.\n */\n function safeTransferFrom(address from, address to, uint256 tokenId, bytes calldata data) external;\n\n /**\n * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n * are aware of the ERC721 protocol to prevent tokens from being forever locked.\n *\n * Requirements:\n *\n * - `from` cannot be the zero address.\n * - `to` cannot be the zero address.\n * - `tokenId` token must exist and be owned by `from`.\n * - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}.\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n *\n * Emits a {Transfer} event.\n */\n function safeTransferFrom(address from, address to, uint256 tokenId) external;\n\n /**\n * @dev Transfers `tokenId` token from `from` to `to`.\n *\n * WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721\n * or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must\n * understand this adds an external call which potentially creates a reentrancy vulnerability.\n *\n * Requirements:\n *\n * - `from` cannot be the zero address.\n * - `to` cannot be the zero address.\n * - `tokenId` token must be owned by `from`.\n * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n *\n * Emits a {Transfer} event.\n */\n function transferFrom(address from, address to, uint256 tokenId) external;\n\n /**\n * @dev Gives permission to `to` to transfer `tokenId` token to another account.\n * The approval is cleared when the token is transferred.\n *\n * Only a single account can be approved at a time, so approving the zero address clears previous approvals.\n *\n * Requirements:\n *\n * - The caller must own the token or be an approved operator.\n * - `tokenId` must exist.\n *\n * Emits an {Approval} event.\n */\n function approve(address to, uint256 tokenId) external;\n\n /**\n * @dev Approve or remove `operator` as an operator for the caller.\n * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\n *\n * Requirements:\n *\n * - The `operator` cannot be the caller.\n *\n * Emits an {ApprovalForAll} event.\n */\n function setApprovalForAll(address operator, bool approved) external;\n\n /**\n * @dev Returns the account approved for `tokenId` token.\n *\n * Requirements:\n *\n * - `tokenId` must exist.\n */\n function getApproved(uint256 tokenId) external view returns (address operator);\n\n /**\n * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\n *\n * See {setApprovalForAll}\n */\n function isApprovedForAll(address owner, address operator) external view returns (bool);\n}\n"},"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC721/IERC721Receiver.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @title ERC721 token receiver interface\n * @dev Interface for any contract that wants to support safeTransfers\n * from ERC721 asset contracts.\n */\ninterface IERC721Receiver {\n /**\n * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}\n * by `operator` from `from`, this function is called.\n *\n * It must return its Solidity selector to confirm the token transfer.\n * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted.\n *\n * The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`.\n */\n function onERC721Received(\n address operator,\n address from,\n uint256 tokenId,\n bytes calldata data\n ) external returns (bytes4);\n}\n"},"@openzeppelin/contracts/utils/Address.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\n\npragma solidity ^0.8.1;\n\n/**\n * @dev Collection of functions related to the address type\n */\nlibrary Address {\n /**\n * @dev Returns true if `account` is a contract.\n *\n * [IMPORTANT]\n * ====\n * It is unsafe to assume that an address for which this function returns\n * false is an externally-owned account (EOA) and not a contract.\n *\n * Among others, `isContract` will return false for the following\n * types of addresses:\n *\n * - an externally-owned account\n * - a contract in construction\n * - an address where a contract will be created\n * - an address where a contract lived, but was destroyed\n *\n * Furthermore, `isContract` will also return true if the target contract within\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\n * which only has an effect at the end of a transaction.\n * ====\n *\n * [IMPORTANT]\n * ====\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\n *\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\n * constructor.\n * ====\n */\n function isContract(address account) internal view returns (bool) {\n // This method relies on extcodesize/address.code.length, which returns 0\n // for contracts in construction, since the code is only stored at the end\n // of the constructor execution.\n\n return account.code.length > 0;\n }\n\n /**\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n * `recipient`, forwarding all available gas and reverting on errors.\n *\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\n * imposed by `transfer`, making them unable to receive funds via\n * `transfer`. {sendValue} removes this limitation.\n *\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n *\n * IMPORTANT: because control is transferred to `recipient`, care must be\n * taken to not create reentrancy vulnerabilities. Consider using\n * {ReentrancyGuard} or the\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\n */\n function sendValue(address payable recipient, uint256 amount) internal {\n require(address(this).balance >= amount, \"Address: insufficient balance\");\n\n (bool success, ) = recipient.call{value: amount}(\"\");\n require(success, \"Address: unable to send value, recipient may have reverted\");\n }\n\n /**\n * @dev Performs a Solidity function call using a low level `call`. A\n * plain `call` is an unsafe replacement for a function call: use this\n * function instead.\n *\n * If `target` reverts with a revert reason, it is bubbled up by this\n * function (like regular Solidity function calls).\n *\n * Returns the raw returned data. To convert to the expected return value,\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n *\n * Requirements:\n *\n * - `target` must be a contract.\n * - calling `target` with `data` must not revert.\n *\n * _Available since v3.1._\n */\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\n return functionCallWithValue(target, data, 0, \"Address: low-level call failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n * `errorMessage` as a fallback revert reason when `target` reverts.\n *\n * _Available since v3.1._\n */\n function functionCall(\n address target,\n bytes memory data,\n string memory errorMessage\n ) internal returns (bytes memory) {\n return functionCallWithValue(target, data, 0, errorMessage);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but also transferring `value` wei to `target`.\n *\n * Requirements:\n *\n * - the calling contract must have an ETH balance of at least `value`.\n * - the called Solidity function must be `payable`.\n *\n * _Available since v3.1._\n */\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\n return functionCallWithValue(target, data, value, \"Address: low-level call with value failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n * with `errorMessage` as a fallback revert reason when `target` reverts.\n *\n * _Available since v3.1._\n */\n function functionCallWithValue(\n address target,\n bytes memory data,\n uint256 value,\n string memory errorMessage\n ) internal returns (bytes memory) {\n require(address(this).balance >= value, \"Address: insufficient balance for call\");\n (bool success, bytes memory returndata) = target.call{value: value}(data);\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but performing a static call.\n *\n * _Available since v3.3._\n */\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\n return functionStaticCall(target, data, \"Address: low-level static call failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n * but performing a static call.\n *\n * _Available since v3.3._\n */\n function functionStaticCall(\n address target,\n bytes memory data,\n string memory errorMessage\n ) internal view returns (bytes memory) {\n (bool success, bytes memory returndata) = target.staticcall(data);\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but performing a delegate call.\n *\n * _Available since v3.4._\n */\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\n return functionDelegateCall(target, data, \"Address: low-level delegate call failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n * but performing a delegate call.\n *\n * _Available since v3.4._\n */\n function functionDelegateCall(\n address target,\n bytes memory data,\n string memory errorMessage\n ) internal returns (bytes memory) {\n (bool success, bytes memory returndata) = target.delegatecall(data);\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\n }\n\n /**\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\n *\n * _Available since v4.8._\n */\n function verifyCallResultFromTarget(\n address target,\n bool success,\n bytes memory returndata,\n string memory errorMessage\n ) internal view returns (bytes memory) {\n if (success) {\n if (returndata.length == 0) {\n // only check isContract if the call was successful and the return data is empty\n // otherwise we already know that it was a contract\n require(isContract(target), \"Address: call to non-contract\");\n }\n return returndata;\n } else {\n _revert(returndata, errorMessage);\n }\n }\n\n /**\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\n * revert reason or using the provided one.\n *\n * _Available since v4.3._\n */\n function verifyCallResult(\n bool success,\n bytes memory returndata,\n string memory errorMessage\n ) internal pure returns (bytes memory) {\n if (success) {\n return returndata;\n } else {\n _revert(returndata, errorMessage);\n }\n }\n\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\n // Look for revert reason and bubble it up if present\n if (returndata.length > 0) {\n // The easiest way to bubble the revert reason is using memory via assembly\n /// @solidity memory-safe-assembly\n assembly {\n let returndata_size := mload(returndata)\n revert(add(32, returndata), returndata_size)\n }\n } else {\n revert(errorMessage);\n }\n }\n}\n"},"@openzeppelin/contracts/utils/Context.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Provides information about the current execution context, including the\n * sender of the transaction and its data. While these are generally available\n * via msg.sender and msg.data, they should not be accessed in such a direct\n * manner, since when dealing with meta-transactions the account sending and\n * paying for execution may not be the actual sender (as far as an application\n * is concerned).\n *\n * This contract is only required for intermediate, library-like contracts.\n */\nabstract contract Context {\n function _msgSender() internal view virtual returns (address) {\n return msg.sender;\n }\n\n function _msgData() internal view virtual returns (bytes calldata) {\n return msg.data;\n }\n\n function _contextSuffixLength() internal view virtual returns (uint256) {\n return 0;\n }\n}\n"},"@openzeppelin/contracts/utils/Counters.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/Counters.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @title Counters\n * @author Matt Condon (@shrugs)\n * @dev Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number\n * of elements in a mapping, issuing ERC721 ids, or counting request ids.\n *\n * Include with `using Counters for Counters.Counter;`\n */\nlibrary Counters {\n struct Counter {\n // This variable should never be directly accessed by users of the library: interactions must be restricted to\n // the library's function. As of Solidity v0.5.2, this cannot be enforced, though there is a proposal to add\n // this feature: see https://github.com/ethereum/solidity/issues/4637\n uint256 _value; // default: 0\n }\n\n function current(Counter storage counter) internal view returns (uint256) {\n return counter._value;\n }\n\n function increment(Counter storage counter) internal {\n unchecked {\n counter._value += 1;\n }\n }\n\n function decrement(Counter storage counter) internal {\n uint256 value = counter._value;\n require(value > 0, \"Counter: decrement overflow\");\n unchecked {\n counter._value = value - 1;\n }\n }\n\n function reset(Counter storage counter) internal {\n counter._value = 0;\n }\n}\n"},"@openzeppelin/contracts/utils/introspection/ERC165.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\n\npragma solidity ^0.8.0;\n\nimport \"./IERC165.sol\";\n\n/**\n * @dev Implementation of the {IERC165} interface.\n *\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\n * for the additional interface id that will be supported. For example:\n *\n * ```solidity\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\n * }\n * ```\n *\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\n */\nabstract contract ERC165 is IERC165 {\n /**\n * @dev See {IERC165-supportsInterface}.\n */\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n return interfaceId == type(IERC165).interfaceId;\n }\n}\n"},"@openzeppelin/contracts/utils/introspection/IERC165.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Interface of the ERC165 standard, as defined in the\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\n *\n * Implementers can declare support of contract interfaces, which can then be\n * queried by others ({ERC165Checker}).\n *\n * For an implementation, see {ERC165}.\n */\ninterface IERC165 {\n /**\n * @dev Returns true if this contract implements the interface defined by\n * `interfaceId`. See the corresponding\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\n * to learn more about how these ids are created.\n *\n * This function call must use less than 30 000 gas.\n */\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\n}\n"},"@openzeppelin/contracts/utils/math/Math.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/math/Math.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Standard math utilities missing in the Solidity language.\n */\nlibrary Math {\n enum Rounding {\n Down, // Toward negative infinity\n Up, // Toward infinity\n Zero // Toward zero\n }\n\n /**\n * @dev Returns the largest of two numbers.\n */\n function max(uint256 a, uint256 b) internal pure returns (uint256) {\n return a > b ? a : b;\n }\n\n /**\n * @dev Returns the smallest of two numbers.\n */\n function min(uint256 a, uint256 b) internal pure returns (uint256) {\n return a < b ? a : b;\n }\n\n /**\n * @dev Returns the average of two numbers. The result is rounded towards\n * zero.\n */\n function average(uint256 a, uint256 b) internal pure returns (uint256) {\n // (a + b) / 2 can overflow.\n return (a & b) + (a ^ b) / 2;\n }\n\n /**\n * @dev Returns the ceiling of the division of two numbers.\n *\n * This differs from standard division with `/` in that it rounds up instead\n * of rounding down.\n */\n function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\n // (a + b - 1) / b can overflow on addition, so we distribute.\n return a == 0 ? 0 : (a - 1) / b + 1;\n }\n\n /**\n * @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\n * @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)\n * with further edits by Uniswap Labs also under MIT license.\n */\n function mulDiv(uint256 x, uint256 y, uint256 denominator) internal pure returns (uint256 result) {\n unchecked {\n // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use\n // use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\n // variables such that product = prod1 * 2^256 + prod0.\n uint256 prod0; // Least significant 256 bits of the product\n uint256 prod1; // Most significant 256 bits of the product\n assembly {\n let mm := mulmod(x, y, not(0))\n prod0 := mul(x, y)\n prod1 := sub(sub(mm, prod0), lt(mm, prod0))\n }\n\n // Handle non-overflow cases, 256 by 256 division.\n if (prod1 == 0) {\n // Solidity will revert if denominator == 0, unlike the div opcode on its own.\n // The surrounding unchecked block does not change this fact.\n // See https://docs.soliditylang.org/en/latest/control-structures.html#checked-or-unchecked-arithmetic.\n return prod0 / denominator;\n }\n\n // Make sure the result is less than 2^256. Also prevents denominator == 0.\n require(denominator > prod1, \"Math: mulDiv overflow\");\n\n ///////////////////////////////////////////////\n // 512 by 256 division.\n ///////////////////////////////////////////////\n\n // Make division exact by subtracting the remainder from [prod1 prod0].\n uint256 remainder;\n assembly {\n // Compute remainder using mulmod.\n remainder := mulmod(x, y, denominator)\n\n // Subtract 256 bit number from 512 bit number.\n prod1 := sub(prod1, gt(remainder, prod0))\n prod0 := sub(prod0, remainder)\n }\n\n // Factor powers of two out of denominator and compute largest power of two divisor of denominator. Always >= 1.\n // See https://cs.stackexchange.com/q/138556/92363.\n\n // Does not overflow because the denominator cannot be zero at this stage in the function.\n uint256 twos = denominator & (~denominator + 1);\n assembly {\n // Divide denominator by twos.\n denominator := div(denominator, twos)\n\n // Divide [prod1 prod0] by twos.\n prod0 := div(prod0, twos)\n\n // Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one.\n twos := add(div(sub(0, twos), twos), 1)\n }\n\n // Shift in bits from prod1 into prod0.\n prod0 |= prod1 * twos;\n\n // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such\n // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for\n // four bits. That is, denominator * inv = 1 mod 2^4.\n uint256 inverse = (3 * denominator) ^ 2;\n\n // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also works\n // in modular arithmetic, doubling the correct bits in each step.\n inverse *= 2 - denominator * inverse; // inverse mod 2^8\n inverse *= 2 - denominator * inverse; // inverse mod 2^16\n inverse *= 2 - denominator * inverse; // inverse mod 2^32\n inverse *= 2 - denominator * inverse; // inverse mod 2^64\n inverse *= 2 - denominator * inverse; // inverse mod 2^128\n inverse *= 2 - denominator * inverse; // inverse mod 2^256\n\n // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\n // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is\n // less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1\n // is no longer required.\n result = prod0 * inverse;\n return result;\n }\n }\n\n /**\n * @notice Calculates x * y / denominator with full precision, following the selected rounding direction.\n */\n function mulDiv(uint256 x, uint256 y, uint256 denominator, Rounding rounding) internal pure returns (uint256) {\n uint256 result = mulDiv(x, y, denominator);\n if (rounding == Rounding.Up && mulmod(x, y, denominator) > 0) {\n result += 1;\n }\n return result;\n }\n\n /**\n * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down.\n *\n * Inspired by Henry S. Warren, Jr.'s \"Hacker's Delight\" (Chapter 11).\n */\n function sqrt(uint256 a) internal pure returns (uint256) {\n if (a == 0) {\n return 0;\n }\n\n // For our first guess, we get the biggest power of 2 which is smaller than the square root of the target.\n //\n // We know that the \"msb\" (most significant bit) of our target number `a` is a power of 2 such that we have\n // `msb(a) <= a < 2*msb(a)`. This value can be written `msb(a)=2**k` with `k=log2(a)`.\n //\n // This can be rewritten `2**log2(a) <= a < 2**(log2(a) + 1)`\n // → `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))`\n // → `2**(k/2) <= sqrt(a) < 2**((k+1)/2) <= 2**(k/2 + 1)`\n //\n // Consequently, `2**(log2(a) / 2)` is a good first approximation of `sqrt(a)` with at least 1 correct bit.\n uint256 result = 1 << (log2(a) >> 1);\n\n // At this point `result` is an estimation with one bit of precision. We know the true value is a uint128,\n // since it is the square root of a uint256. Newton's method converges quadratically (precision doubles at\n // every iteration). We thus need at most 7 iteration to turn our partial result with one bit of precision\n // into the expected uint128 result.\n unchecked {\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n return min(result, a / result);\n }\n }\n\n /**\n * @notice Calculates sqrt(a), following the selected rounding direction.\n */\n function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {\n unchecked {\n uint256 result = sqrt(a);\n return result + (rounding == Rounding.Up && result * result < a ? 1 : 0);\n }\n }\n\n /**\n * @dev Return the log in base 2, rounded down, of a positive value.\n * Returns 0 if given 0.\n */\n function log2(uint256 value) internal pure returns (uint256) {\n uint256 result = 0;\n unchecked {\n if (value >> 128 > 0) {\n value >>= 128;\n result += 128;\n }\n if (value >> 64 > 0) {\n value >>= 64;\n result += 64;\n }\n if (value >> 32 > 0) {\n value >>= 32;\n result += 32;\n }\n if (value >> 16 > 0) {\n value >>= 16;\n result += 16;\n }\n if (value >> 8 > 0) {\n value >>= 8;\n result += 8;\n }\n if (value >> 4 > 0) {\n value >>= 4;\n result += 4;\n }\n if (value >> 2 > 0) {\n value >>= 2;\n result += 2;\n }\n if (value >> 1 > 0) {\n result += 1;\n }\n }\n return result;\n }\n\n /**\n * @dev Return the log in base 2, following the selected rounding direction, of a positive value.\n * Returns 0 if given 0.\n */\n function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {\n unchecked {\n uint256 result = log2(value);\n return result + (rounding == Rounding.Up && 1 << result < value ? 1 : 0);\n }\n }\n\n /**\n * @dev Return the log in base 10, rounded down, of a positive value.\n * Returns 0 if given 0.\n */\n function log10(uint256 value) internal pure returns (uint256) {\n uint256 result = 0;\n unchecked {\n if (value >= 10 ** 64) {\n value /= 10 ** 64;\n result += 64;\n }\n if (value >= 10 ** 32) {\n value /= 10 ** 32;\n result += 32;\n }\n if (value >= 10 ** 16) {\n value /= 10 ** 16;\n result += 16;\n }\n if (value >= 10 ** 8) {\n value /= 10 ** 8;\n result += 8;\n }\n if (value >= 10 ** 4) {\n value /= 10 ** 4;\n result += 4;\n }\n if (value >= 10 ** 2) {\n value /= 10 ** 2;\n result += 2;\n }\n if (value >= 10 ** 1) {\n result += 1;\n }\n }\n return result;\n }\n\n /**\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\n * Returns 0 if given 0.\n */\n function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {\n unchecked {\n uint256 result = log10(value);\n return result + (rounding == Rounding.Up && 10 ** result < value ? 1 : 0);\n }\n }\n\n /**\n * @dev Return the log in base 256, rounded down, of a positive value.\n * Returns 0 if given 0.\n *\n * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.\n */\n function log256(uint256 value) internal pure returns (uint256) {\n uint256 result = 0;\n unchecked {\n if (value >> 128 > 0) {\n value >>= 128;\n result += 16;\n }\n if (value >> 64 > 0) {\n value >>= 64;\n result += 8;\n }\n if (value >> 32 > 0) {\n value >>= 32;\n result += 4;\n }\n if (value >> 16 > 0) {\n value >>= 16;\n result += 2;\n }\n if (value >> 8 > 0) {\n result += 1;\n }\n }\n return result;\n }\n\n /**\n * @dev Return the log in base 256, following the selected rounding direction, of a positive value.\n * Returns 0 if given 0.\n */\n function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {\n unchecked {\n uint256 result = log256(value);\n return result + (rounding == Rounding.Up && 1 << (result << 3) < value ? 1 : 0);\n }\n }\n}\n"},"@openzeppelin/contracts/utils/math/SignedMath.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/SignedMath.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Standard signed math utilities missing in the Solidity language.\n */\nlibrary SignedMath {\n /**\n * @dev Returns the largest of two signed numbers.\n */\n function max(int256 a, int256 b) internal pure returns (int256) {\n return a > b ? a : b;\n }\n\n /**\n * @dev Returns the smallest of two signed numbers.\n */\n function min(int256 a, int256 b) internal pure returns (int256) {\n return a < b ? a : b;\n }\n\n /**\n * @dev Returns the average of two signed numbers without overflow.\n * The result is rounded towards zero.\n */\n function average(int256 a, int256 b) internal pure returns (int256) {\n // Formula from the book \"Hacker's Delight\"\n int256 x = (a & b) + ((a ^ b) >> 1);\n return x + (int256(uint256(x) >> 255) & (a ^ b));\n }\n\n /**\n * @dev Returns the absolute unsigned value of a signed value.\n */\n function abs(int256 n) internal pure returns (uint256) {\n unchecked {\n // must be unchecked in order to support `n = type(int256).min`\n return uint256(n >= 0 ? n : -n);\n }\n }\n}\n"},"@openzeppelin/contracts/utils/StorageSlot.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/StorageSlot.sol)\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Library for reading and writing primitive types to specific storage slots.\n *\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\n * This library helps with reading and writing to such slots without the need for inline assembly.\n *\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\n *\n * Example usage to set ERC1967 implementation slot:\n * ```solidity\n * contract ERC1967 {\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n *\n * function _getImplementation() internal view returns (address) {\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\n * }\n *\n * function _setImplementation(address newImplementation) internal {\n * require(Address.isContract(newImplementation), \"ERC1967: new implementation is not a contract\");\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\n * }\n * }\n * ```\n *\n * _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._\n * _Available since v4.9 for `string`, `bytes`._\n */\nlibrary StorageSlot {\n struct AddressSlot {\n address value;\n }\n\n struct BooleanSlot {\n bool value;\n }\n\n struct Bytes32Slot {\n bytes32 value;\n }\n\n struct Uint256Slot {\n uint256 value;\n }\n\n struct StringSlot {\n string value;\n }\n\n struct BytesSlot {\n bytes value;\n }\n\n /**\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\n */\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\n */\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\n */\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\n */\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `StringSlot` with member `value` located at `slot`.\n */\n function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\n */\n function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := store.slot\n }\n }\n\n /**\n * @dev Returns an `BytesSlot` with member `value` located at `slot`.\n */\n function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\n */\n function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := store.slot\n }\n }\n}\n"},"@openzeppelin/contracts/utils/Strings.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Strings.sol)\n\npragma solidity ^0.8.0;\n\nimport \"./math/Math.sol\";\nimport \"./math/SignedMath.sol\";\n\n/**\n * @dev String operations.\n */\nlibrary Strings {\n bytes16 private constant _SYMBOLS = \"0123456789abcdef\";\n uint8 private constant _ADDRESS_LENGTH = 20;\n\n /**\n * @dev Converts a `uint256` to its ASCII `string` decimal representation.\n */\n function toString(uint256 value) internal pure returns (string memory) {\n unchecked {\n uint256 length = Math.log10(value) + 1;\n string memory buffer = new string(length);\n uint256 ptr;\n /// @solidity memory-safe-assembly\n assembly {\n ptr := add(buffer, add(32, length))\n }\n while (true) {\n ptr--;\n /// @solidity memory-safe-assembly\n assembly {\n mstore8(ptr, byte(mod(value, 10), _SYMBOLS))\n }\n value /= 10;\n if (value == 0) break;\n }\n return buffer;\n }\n }\n\n /**\n * @dev Converts a `int256` to its ASCII `string` decimal representation.\n */\n function toString(int256 value) internal pure returns (string memory) {\n return string(abi.encodePacked(value < 0 ? \"-\" : \"\", toString(SignedMath.abs(value))));\n }\n\n /**\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\n */\n function toHexString(uint256 value) internal pure returns (string memory) {\n unchecked {\n return toHexString(value, Math.log256(value) + 1);\n }\n }\n\n /**\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\n */\n function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\n bytes memory buffer = new bytes(2 * length + 2);\n buffer[0] = \"0\";\n buffer[1] = \"x\";\n for (uint256 i = 2 * length + 1; i > 1; --i) {\n buffer[i] = _SYMBOLS[value & 0xf];\n value >>= 4;\n }\n require(value == 0, \"Strings: hex length insufficient\");\n return string(buffer);\n }\n\n /**\n * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.\n */\n function toHexString(address addr) internal pure returns (string memory) {\n return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);\n }\n\n /**\n * @dev Returns true if the two strings are equal.\n */\n function equal(string memory a, string memory b) internal pure returns (bool) {\n return keccak256(bytes(a)) == keccak256(bytes(b));\n }\n}\n"},"src/dao/IDAO.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\n/// @title IDAO\n/// @author Aragon X - 2022-2023\n/// @notice The interface required for DAOs within the Aragon App DAO framework.\n/// @custom:security-contact sirt@aragon.org\ninterface IDAO {\n /// @notice The action struct to be consumed by the DAO's `execute` function resulting in an external call.\n /// @param to The address to call.\n /// @param value The native token value to be sent with the call.\n /// @param data The bytes-encoded function selector and calldata for the call.\n struct Action {\n address to;\n uint256 value;\n bytes data;\n }\n\n /// @notice Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\n /// @param _where The address of the contract.\n /// @param _who The address of a EOA or contract to give the permissions.\n /// @param _permissionId The permission identifier.\n /// @param _data The optional data passed to the `PermissionCondition` registered.\n /// @return Returns true if the address has permission, false if not.\n function hasPermission(\n address _where,\n address _who,\n bytes32 _permissionId,\n bytes memory _data\n ) external view returns (bool);\n\n /// @notice Updates the DAO metadata (e.g., an IPFS hash).\n /// @param _metadata The IPFS hash of the new metadata object.\n function setMetadata(bytes calldata _metadata) external;\n\n /// @notice Emitted when the DAO metadata is updated.\n /// @param metadata The IPFS hash of the new metadata object.\n event MetadataSet(bytes metadata);\n\n /// @notice Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted.\n /// @param _callId The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce.\n /// @param _actions The array of actions.\n /// @param _allowFailureMap A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\n /// @return The array of results obtained from the executed actions in `bytes`.\n /// @return The resulting failure map containing the actions have actually failed.\n function execute(\n bytes32 _callId,\n Action[] memory _actions,\n uint256 _allowFailureMap\n ) external returns (bytes[] memory, uint256);\n\n /// @notice Emitted when a proposal is executed.\n /// @param actor The address of the caller.\n /// @param callId The ID of the call.\n /// @param actions The array of actions executed.\n /// @param allowFailureMap The allow failure map encoding which actions are allowed to fail.\n /// @param failureMap The failure map encoding which actions have failed.\n /// @param execResults The array with the results of the executed actions.\n /// @dev The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce.\n event Executed(\n address indexed actor,\n bytes32 callId,\n Action[] actions,\n uint256 allowFailureMap,\n uint256 failureMap,\n bytes[] execResults\n );\n\n /// @notice Emitted when a standard callback is registered.\n /// @param interfaceId The ID of the interface.\n /// @param callbackSelector The selector of the callback function.\n /// @param magicNumber The magic number to be registered for the callback function selector.\n event StandardCallbackRegistered(\n bytes4 interfaceId,\n bytes4 callbackSelector,\n bytes4 magicNumber\n );\n\n /// @notice Deposits (native) tokens to the DAO contract with a reference string.\n /// @param _token The address of the token or address(0) in case of the native token.\n /// @param _amount The amount of tokens to deposit.\n /// @param _reference The reference describing the deposit reason.\n function deposit(address _token, uint256 _amount, string calldata _reference) external payable;\n\n /// @notice Emitted when a token deposit has been made to the DAO.\n /// @param sender The address of the sender.\n /// @param token The address of the deposited token.\n /// @param amount The amount of tokens deposited.\n /// @param _reference The reference describing the deposit reason.\n event Deposited(\n address indexed sender,\n address indexed token,\n uint256 amount,\n string _reference\n );\n\n /// @notice Emitted when a native token deposit has been made to the DAO.\n /// @dev This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).\n /// @param sender The address of the sender.\n /// @param amount The amount of native tokens deposited.\n event NativeTokenDeposited(address sender, uint256 amount);\n\n /// @notice Setter for the trusted forwarder verifying the meta transaction.\n /// @param _trustedForwarder The trusted forwarder address.\n function setTrustedForwarder(address _trustedForwarder) external;\n\n /// @notice Getter for the trusted forwarder verifying the meta transaction.\n /// @return The trusted forwarder address.\n function getTrustedForwarder() external view returns (address);\n\n /// @notice Emitted when a new TrustedForwarder is set on the DAO.\n /// @param forwarder the new forwarder address.\n event TrustedForwarderSet(address forwarder);\n\n /// @notice Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\n /// @param _hash The hash of the data to be signed.\n /// @param _signature The signature byte array associated with `_hash`.\n /// @return Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not.\n function isValidSignature(bytes32 _hash, bytes memory _signature) external returns (bytes4);\n\n /// @notice Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\n /// @param _interfaceId The ID of the interface.\n /// @param _callbackSelector The selector of the callback function.\n /// @param _magicNumber The magic number to be registered for the function signature.\n function registerStandardCallback(\n bytes4 _interfaceId,\n bytes4 _callbackSelector,\n bytes4 _magicNumber\n ) external;\n\n /// @notice Removed function being left here to not corrupt the IDAO interface ID. Any call will revert.\n /// @dev Introduced in v1.0.0. Removed in v1.4.0.\n function setSignatureValidator(address) external;\n}\n"},"src/mocks/dao/DAOMock.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\nimport {IDAO} from \"../../dao/IDAO.sol\";\n\n/// @notice A mock DAO that anyone can set permissions in.\n/// @dev DO NOT USE IN PRODUCTION!\ncontract DAOMock is IDAO {\n bool public hasPermissionReturnValueMock;\n\n function setHasPermissionReturnValueMock(bool _hasPermissionReturnValueMock) external {\n hasPermissionReturnValueMock = _hasPermissionReturnValueMock;\n }\n\n function hasPermission(\n address _where,\n address _who,\n bytes32 _permissionId,\n bytes memory _data\n ) external view override returns (bool) {\n (_where, _who, _permissionId, _data);\n return hasPermissionReturnValueMock;\n }\n\n function getTrustedForwarder() public pure override returns (address) {\n return address(0);\n }\n\n function setTrustedForwarder(address _trustedForwarder) external pure override {\n (_trustedForwarder);\n }\n\n function setMetadata(bytes calldata _metadata) external pure override {\n (_metadata);\n }\n\n function execute(\n bytes32 callId,\n Action[] memory _actions,\n uint256 allowFailureMap\n ) external override returns (bytes[] memory execResults, uint256 failureMap) {\n emit Executed(msg.sender, callId, _actions, allowFailureMap, failureMap, execResults);\n }\n\n function deposit(\n address _token,\n uint256 _amount,\n string calldata _reference\n ) external payable override {\n (_token, _amount, _reference);\n }\n\n function setSignatureValidator(address _signatureValidator) external pure override {\n (_signatureValidator);\n }\n\n function isValidSignature(\n bytes32 _hash,\n bytes memory _signature\n ) external pure override returns (bytes4) {\n (_hash, _signature);\n return 0x0;\n }\n\n function registerStandardCallback(\n bytes4 _interfaceId,\n bytes4 _callbackSelector,\n bytes4 _magicNumber\n ) external pure override {\n (_interfaceId, _callbackSelector, _magicNumber);\n }\n}\n"},"src/mocks/permission/auth/DaoAuthorizableMock.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\nimport {DaoAuthorizable} from \"../../../permission/auth/DaoAuthorizable.sol\";\nimport {IDAO} from \"../../../dao/IDAO.sol\";\n\n/// @notice A mock contract containing a function protected by the `auth` modifier.\n/// @dev DO NOT USE IN PRODUCTION!\ncontract DaoAuthorizableMock is DaoAuthorizable {\n bytes32 public constant AUTHORIZED_FUNC_PERMISSION_ID = keccak256(\"AUTHORIZED_FUNC_PERMISSION\");\n\n constructor(IDAO _dao) DaoAuthorizable(_dao) {}\n\n function authorizedFunc()\n external\n auth(AUTHORIZED_FUNC_PERMISSION_ID)\n // solhint-disable-next-line no-empty-blocks\n {\n\n }\n}\n"},"src/mocks/permission/auth/DaoAuthorizableUpgradeableMock.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\nimport {DaoAuthorizableUpgradeable} from \"../../../permission/auth/DaoAuthorizableUpgradeable.sol\";\nimport {IDAO} from \"../../../dao/IDAO.sol\";\n\n/// @notice A mock contract containing a function protected by the `auth` modifier.\n/// @dev DO NOT USE IN PRODUCTION!\ncontract DaoAuthorizableUpgradeableMock is DaoAuthorizableUpgradeable {\n bytes32 public constant AUTHORIZED_FUNC_PERMISSION_ID = keccak256(\"AUTHORIZED_FUNC_PERMISSION\");\n\n function initialize(IDAO _dao) external initializer {\n __DaoAuthorizableUpgradeable_init(_dao);\n }\n\n /// @notice The following function intentionally misses the `initializer` modifier\n /// to validate that `__DaoAuthorizableUpgradeable_init` cannot be called outside initialization.\n function notAnInitializer(IDAO _dao) external {\n __DaoAuthorizableUpgradeable_init(_dao);\n }\n\n function authorizedFunc()\n external\n auth(AUTHORIZED_FUNC_PERMISSION_ID) // solhint-disable-next-line no-empty-blocks\n {}\n}\n"},"src/mocks/permission/condition/PermissionConditionMock.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\nimport {PermissionCondition} from \"../../../permission/condition/PermissionCondition.sol\";\n\n/// @notice A mock permission condition that can be set to permit or deny every call.\n/// @dev DO NOT USE IN PRODUCTION!\ncontract PermissionConditionMock is PermissionCondition {\n bool public answer;\n\n function setAnswer(bool _answer) external {\n answer = _answer;\n }\n\n function isGranted(\n address _where,\n address _who,\n bytes32 _permissionId,\n bytes memory _data\n ) external view returns (bool) {\n (_where, _who, _permissionId, _data);\n return answer;\n }\n}\n"},"src/mocks/permission/condition/PermissionConditionUpgradeableMock.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\nimport {PermissionConditionUpgradeable} from \"../../../permission/condition/PermissionConditionUpgradeable.sol\";\n\n/// @notice A mock permission condition that can be set to permit or deny every call and be upgraded by everyone.\n/// @dev DO NOT USE IN PRODUCTION!\ncontract PermissionConditionUpgradeableMock is PermissionConditionUpgradeable {\n bool public answer;\n\n function setAnswer(bool _answer) external {\n answer = _answer;\n }\n\n function isGranted(\n address _where,\n address _who,\n bytes32 _permissionId,\n bytes memory _data\n ) external view returns (bool) {\n (_where, _who, _permissionId, _data);\n return answer;\n }\n}\n"},"src/mocks/plugin/extensions/governance/AddresslistMock.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\nimport {Addresslist} from \"../../../../plugin/extensions/governance/Addresslist.sol\";\n\n/// @notice A mock addresslist that everyone can add and remove addresses to and from, respectively.\n/// @dev DO NOT USE IN PRODUCTION!\ncontract AddresslistMock is Addresslist {\n function addAddresses(address[] calldata _newAddresses) external {\n _addAddresses(_newAddresses);\n }\n\n function removeAddresses(address[] calldata _exitingAddresses) external {\n _removeAddresses(_exitingAddresses);\n }\n}\n"},"src/mocks/plugin/extensions/proposal/ProposalMock.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\nimport {Proposal} from \"../../../../plugin/extensions/proposal/Proposal.sol\";\nimport {IDAO} from \"../../../../dao/IDAO.sol\";\n\n/// @notice A mock contract containing functions to create and execute proposals.\n/// @dev DO NOT USE IN PRODUCTION!\ncontract ProposalMock is Proposal {\n function createProposalId() external returns (uint256 proposalId) {\n proposalId = _createProposalId();\n }\n\n function createProposal(\n address _creator,\n bytes calldata _metadata,\n uint64 _startDate,\n uint64 _endDate,\n IDAO.Action[] calldata _actions,\n uint256 _allowFailureMap\n ) external returns (uint256 proposalId) {\n proposalId = _createProposal(\n _creator,\n _metadata,\n _startDate,\n _endDate,\n _actions,\n _allowFailureMap\n );\n }\n\n function executeProposal(\n IDAO _dao,\n uint256 _proposalId,\n IDAO.Action[] memory _actions,\n uint256 _allowFailureMap\n ) external returns (bytes[] memory execResults, uint256 failureMap) {\n (execResults, failureMap) = _executeProposal(_dao, _proposalId, _actions, _allowFailureMap);\n }\n}\n"},"src/mocks/plugin/extensions/proposal/ProposalUpgradeableMock.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\nimport {ProposalUpgradeable} from \"../../../../plugin/extensions/proposal/ProposalUpgradeable.sol\";\nimport {IDAO} from \"../../../../dao/IDAO.sol\";\n\n/// @notice A mock contract containing functions to create and execute proposals as well as storage gaps in inherited contracts to be used in UUPS upgradeable contracts.\n/// @dev DO NOT USE IN PRODUCTION!\ncontract ProposalUpgradeableMock is ProposalUpgradeable {\n function createProposalId() external returns (uint256 proposalId) {\n proposalId = _createProposalId();\n }\n\n function createProposal(\n address _creator,\n bytes calldata _metadata,\n uint64 _startDate,\n uint64 _endDate,\n IDAO.Action[] calldata _actions,\n uint256 _allowFailureMap\n ) external returns (uint256 proposalId) {\n proposalId = _createProposal(\n _creator,\n _metadata,\n _startDate,\n _endDate,\n _actions,\n _allowFailureMap\n );\n }\n\n function executeProposal(\n IDAO _dao,\n uint256 _proposalId,\n IDAO.Action[] memory _actions,\n uint256 _allowFailureMap\n ) external returns (bytes[] memory execResults, uint256 failureMap) {\n (execResults, failureMap) = _executeProposal(_dao, _proposalId, _actions, _allowFailureMap);\n }\n}\n"},"src/mocks/plugin/PluginCloneableMock.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\n/* solhint-disable one-contract-per-file */\npragma solidity ^0.8.8;\n\nimport {PluginCloneable} from \"../../plugin/PluginCloneable.sol\";\nimport {IDAO} from \"../../dao/IDAO.sol\";\n\n/// @notice A mock cloneable plugin to be deployed via the minimal proxy pattern.\n/// v1.1 (Release 1, Build 1)\n/// @dev DO NOT USE IN PRODUCTION!\ncontract PluginCloneableMockBuild1 is PluginCloneable {\n uint256 public state1;\n\n function initialize(IDAO _dao) external initializer {\n __PluginCloneable_init(_dao);\n state1 = 1;\n }\n}\n\n/// @notice A mock cloneable plugin to be deployed via the minimal proxy pattern.\n/// v1.1 (Release 1, Build 2)\n/// @dev DO NOT USE IN PRODUCTION!\ncontract PluginCloneableMockBuild2 is PluginCloneable {\n uint256 public state1;\n uint256 public state2;\n\n function initialize(IDAO _dao) external initializer {\n __PluginCloneable_init(_dao);\n state1 = 1;\n state2 = 2;\n }\n}\n\n/// @notice A mock cloneable plugin missing an initializer function.\n/// @dev DO NOT USE IN PRODUCTION!\ncontract PluginCloneableMockBad is PluginCloneable {\n uint256 public state1;\n\n function notAnInitializer(IDAO _dao) external {\n __PluginCloneable_init(_dao);\n state1 = 1;\n }\n}\n"},"src/mocks/plugin/PluginCloneableSetupMock.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\n/* solhint-disable one-contract-per-file */\npragma solidity ^0.8.8;\n\nimport {PermissionLib} from \"../../permission/PermissionLib.sol\";\nimport {IPluginSetup} from \"../../plugin/setup/IPluginSetup.sol\";\nimport {PluginSetup} from \"../../plugin/setup/PluginSetup.sol\";\nimport {ProxyLib} from \"../../utils/deployment/ProxyLib.sol\";\nimport {IDAO} from \"../../dao/IDAO.sol\";\nimport {mockPermissions, mockHelpers} from \"./PluginSetupMockData.sol\";\nimport {PluginCloneableMockBuild1, PluginCloneableMockBuild2} from \"./PluginCloneableMock.sol\";\n\n/// @notice A mock plugin setup of a cloneable plugin to be deployed via the minimal proxy pattern.\n/// v1.1 (Release 1, Build 1)\n/// @dev DO NOT USE IN PRODUCTION!\ncontract PluginCloneableSetupMockBuild1 is PluginSetup {\n using ProxyLib for address;\n\n uint16 internal constant THIS_BUILD = 1;\n\n constructor() PluginSetup(address(new PluginCloneableMockBuild1())) {}\n\n /// @inheritdoc IPluginSetup\n function prepareInstallation(\n address _dao,\n bytes memory\n ) external returns (address plugin, PreparedSetupData memory preparedSetupData) {\n bytes memory initData = abi.encodeCall(PluginCloneableMockBuild1.initialize, (IDAO(_dao)));\n plugin = implementation().deployMinimalProxy(initData);\n preparedSetupData.helpers = mockHelpers(THIS_BUILD);\n preparedSetupData.permissions = mockPermissions(\n 0,\n THIS_BUILD,\n PermissionLib.Operation.Grant\n );\n }\n\n /// @inheritdoc IPluginSetup\n function prepareUninstallation(\n address _dao,\n SetupPayload calldata _payload\n ) external pure returns (PermissionLib.MultiTargetPermission[] memory permissions) {\n (_dao, _payload);\n permissions = mockPermissions(0, THIS_BUILD, PermissionLib.Operation.Revoke);\n }\n}\n\n/// @notice A mock plugin setup of a cloneable plugin to be deployed via the minimal proxy pattern.\n/// v1.2 (Release 1, Build 2)\n/// @dev DO NOT USE IN PRODUCTION!\ncontract PluginCloneableSetupMockBuild2 is PluginSetup {\n using ProxyLib for address;\n\n uint16 internal constant THIS_BUILD = 2;\n\n constructor() PluginSetup(address(new PluginCloneableMockBuild2())) {}\n\n /// @inheritdoc IPluginSetup\n function prepareInstallation(\n address _dao,\n bytes memory\n ) external returns (address plugin, PreparedSetupData memory preparedSetupData) {\n bytes memory initData = abi.encodeCall(PluginCloneableMockBuild2.initialize, (IDAO(_dao)));\n plugin = implementation().deployMinimalProxy(initData);\n preparedSetupData.helpers = mockHelpers(THIS_BUILD);\n preparedSetupData.permissions = mockPermissions(\n 0,\n THIS_BUILD,\n PermissionLib.Operation.Grant\n );\n }\n\n /// @inheritdoc IPluginSetup\n function prepareUninstallation(\n address _dao,\n SetupPayload calldata _payload\n ) external pure returns (PermissionLib.MultiTargetPermission[] memory permissions) {\n (_dao, _payload);\n permissions = mockPermissions(0, THIS_BUILD, PermissionLib.Operation.Revoke);\n }\n}\n"},"src/mocks/plugin/PluginMock.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\nimport {Plugin} from \"../../plugin/Plugin.sol\";\nimport {IDAO} from \"../../dao/IDAO.sol\";\n\n/// @notice A mock plugin to be deployed via the `new` keyword.\n/// v1.1 (Release 1, Build 1)\n/// @dev DO NOT USE IN PRODUCTION!\ncontract PluginMockBuild1 is Plugin {\n uint256 public state1;\n\n constructor(IDAO _dao) Plugin(_dao) {\n state1 = 1;\n }\n}\n"},"src/mocks/plugin/PluginSetupMock.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\n/* solhint-disable one-contract-per-file */\npragma solidity ^0.8.8;\n\nimport {PermissionLib} from \"../../permission/PermissionLib.sol\";\nimport {IPluginSetup} from \"../../plugin/setup/IPluginSetup.sol\";\nimport {PluginSetup} from \"../../plugin/setup/PluginSetup.sol\";\nimport {IDAO} from \"../../dao/IDAO.sol\";\nimport {mockPermissions, mockHelpers} from \"./PluginSetupMockData.sol\";\nimport {PluginMockBuild1} from \"./PluginMock.sol\";\n\n/// @notice A mock plugin setup of a plugin to be deployed via the `new` keyword.\n/// v1.1 (Release 1, Build 1)\n/// @dev DO NOT USE IN PRODUCTION!\ncontract PluginSetupMockBuild1 is PluginSetup {\n constructor() PluginSetup(address(new PluginMockBuild1(IDAO(address(0))))) {}\n\n /// @inheritdoc IPluginSetup\n function prepareInstallation(\n address _dao,\n bytes memory _data\n ) external returns (address plugin, PreparedSetupData memory preparedSetupData) {\n (_data);\n plugin = address(new PluginMockBuild1(IDAO(_dao)));\n preparedSetupData.helpers = mockHelpers(1);\n preparedSetupData.permissions = mockPermissions(0, 1, PermissionLib.Operation.Grant);\n }\n\n /// @inheritdoc IPluginSetup\n function prepareUninstallation(\n address _dao,\n SetupPayload calldata _payload\n ) external pure returns (PermissionLib.MultiTargetPermission[] memory permissions) {\n (_dao, _payload);\n permissions = mockPermissions(0, 1, PermissionLib.Operation.Revoke);\n }\n}\n"},"src/mocks/plugin/PluginSetupMockData.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\nimport {PermissionLib} from \"../../permission/PermissionLib.sol\";\n\naddress constant NO_CONDITION = address(0);\n\nerror ConflictingValues();\n\n/// @notice Creates a mock `MultiTargetPermission` array by converting a range of `uint160` values into `address` values.\n/// @param rangeStart The start of the range.\n/// @param rangeEnd The end of the range (that is not included).\n/// @param op The permission operation type.\n/// @return permissions The mock array of permissions.\n/// @dev DO NOT USE IN PRODUCTION!\nfunction mockPermissions(\n uint160 rangeStart,\n uint160 rangeEnd,\n PermissionLib.Operation op\n) pure returns (PermissionLib.MultiTargetPermission[] memory permissions) {\n if (rangeStart > rangeEnd) revert ConflictingValues();\n\n permissions = new PermissionLib.MultiTargetPermission[](rangeEnd - rangeStart);\n\n for (uint160 i = rangeStart; i < rangeEnd; i++) {\n permissions[i - rangeStart] = PermissionLib.MultiTargetPermission({\n operation: op,\n where: address(i),\n who: address(i),\n condition: PermissionLib.NO_CONDITION,\n permissionId: keccak256(\"MOCK_PERMISSION\")\n });\n }\n}\n\n/// @notice Creates a mock array of helper addresses of specified length by converting `uint160` values starting from 0 into `address` values.\n/// @param len The length of the helper array.\n/// @return helpers The mock array of helper addresses.\n/// @dev DO NOT USE IN PRODUCTION!\nfunction mockHelpers(uint160 len) pure returns (address[] memory helpers) {\n helpers = new address[](len);\n\n for (uint160 i = 0; i < len; i++) {\n helpers[i] = address(i);\n }\n}\n"},"src/mocks/plugin/PluginUUPSUpgradeableMock.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\n/* solhint-disable one-contract-per-file */\npragma solidity ^0.8.8;\n\nimport {PluginUUPSUpgradeable} from \"../../plugin/PluginUUPSUpgradeable.sol\";\nimport {IDAO} from \"../../dao/IDAO.sol\";\n\n/// @notice A mock upgradeable plugin to be deployed via the UUPS proxy pattern.\n/// v1.1 (Release 1, Build 1)\n/// @dev DO NOT USE IN PRODUCTION!\ncontract PluginUUPSUpgradeableMockBuild1 is PluginUUPSUpgradeable {\n uint256 public state1;\n\n function initialize(IDAO _dao) external initializer {\n __PluginUUPSUpgradeable_init(_dao);\n state1 = 1;\n }\n}\n\n/// @notice A mock upgradeable plugin to be deployed via the UUPS proxy pattern.\n/// v1.1 (Release 1, Build 2)\n/// @dev DO NOT USE IN PRODUCTION!\ncontract PluginUUPSUpgradeableMockBuild2 is PluginUUPSUpgradeable {\n uint256 public state1;\n uint256 public state2;\n\n function initialize(IDAO _dao) external reinitializer(2) {\n __PluginUUPSUpgradeable_init(_dao);\n state1 = 1;\n state2 = 2;\n }\n\n function initializeFrom(uint16 _previousBuild) external reinitializer(2) {\n if (_previousBuild < 2) {\n state2 = 2;\n }\n }\n}\n\n/// @notice A mock upgradeable plugin to be deployed via the UUPS proxy pattern.\n/// v1.1 (Release 1, Build 3)\n/// @dev DO NOT USE IN PRODUCTION!\ncontract PluginUUPSUpgradeableMockBuild3 is PluginUUPSUpgradeable {\n uint256 public state1;\n uint256 public state2;\n uint256 public state3;\n\n function initialize(IDAO _dao) external reinitializer(3) {\n __PluginUUPSUpgradeable_init(_dao);\n state1 = 1;\n state2 = 2;\n state3 = 3;\n }\n\n function initializeFrom(uint16 _previousBuild) external reinitializer(3) {\n if (_previousBuild < 2) {\n state2 = 2;\n }\n if (_previousBuild < 3) {\n state3 = 3;\n }\n }\n}\n\n/// @notice A mock upgradeable plugin missing an initializer function.\n/// @dev DO NOT USE IN PRODUCTION!\ncontract PluginUUPSUpgradeableMockBad is PluginUUPSUpgradeable {\n uint256 public state1;\n\n function notAnInitializer(IDAO _dao) external {\n __PluginUUPSUpgradeable_init(_dao);\n state1 = 1;\n }\n}\n"},"src/mocks/plugin/PluginUUPSUpgradeableSetupMock.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\n/* solhint-disable one-contract-per-file */\npragma solidity ^0.8.8;\n\nimport {PermissionLib} from \"../../permission/PermissionLib.sol\";\nimport {IPluginSetup} from \"../../plugin/setup/IPluginSetup.sol\";\nimport {PluginUpgradeableSetup} from \"../../plugin/setup/PluginUpgradeableSetup.sol\";\nimport {ProxyLib} from \"../../utils/deployment/ProxyLib.sol\";\nimport {IDAO} from \"../../dao/IDAO.sol\";\nimport {mockPermissions, mockHelpers} from \"./PluginSetupMockData.sol\";\nimport {PluginUUPSUpgradeableMockBuild1, PluginUUPSUpgradeableMockBuild2, PluginUUPSUpgradeableMockBuild3} from \"./PluginUUPSUpgradeableMock.sol\";\n\n/// @notice A mock plugin setup of an upgradeable plugin to be deployed via the UUPS pattern.\n/// v1.1 (Release 1, Build 1)\n/// @dev DO NOT USE IN PRODUCTION!\ncontract PluginUUPSUpgradeableSetupMockBuild1 is PluginUpgradeableSetup {\n using ProxyLib for address;\n\n uint16 internal constant THIS_BUILD = 1;\n\n constructor() PluginUpgradeableSetup(address(new PluginUUPSUpgradeableMockBuild1())) {}\n\n /// @inheritdoc IPluginSetup\n function prepareInstallation(\n address _dao,\n bytes memory\n ) public returns (address plugin, PreparedSetupData memory preparedSetupData) {\n bytes memory initData = abi.encodeCall(\n PluginUUPSUpgradeableMockBuild1.initialize,\n (IDAO(_dao))\n );\n plugin = implementation().deployUUPSProxy(initData);\n preparedSetupData.helpers = mockHelpers(1);\n preparedSetupData.permissions = mockPermissions(0, 1, PermissionLib.Operation.Grant);\n }\n\n /// @inheritdoc IPluginSetup\n /// @dev The default implementation for the initial build 1 that reverts because no earlier build exists.\n function prepareUpdate(\n address _dao,\n uint16 _fromBuild,\n SetupPayload calldata _payload\n ) external pure virtual returns (bytes memory, PreparedSetupData memory) {\n (_dao, _fromBuild, _payload);\n revert InvalidUpdatePath({fromBuild: 0, thisBuild: THIS_BUILD});\n }\n\n /// @inheritdoc IPluginSetup\n function prepareUninstallation(\n address _dao,\n SetupPayload calldata _payload\n ) external pure returns (PermissionLib.MultiTargetPermission[] memory permissions) {\n (_dao, _payload);\n permissions = mockPermissions(0, THIS_BUILD, PermissionLib.Operation.Revoke);\n }\n}\n\n/// @notice A mock plugin setup of an upgradeable plugin to be deployed via the UUPS pattern.\n/// v1.2 (Release 1, Build 2)\n/// @dev DO NOT USE IN PRODUCTION!\ncontract PluginUUPSUpgradeableSetupMockBuild2 is PluginUpgradeableSetup {\n using ProxyLib for address;\n\n uint16 internal constant THIS_BUILD = 2;\n\n constructor() PluginUpgradeableSetup(address(new PluginUUPSUpgradeableMockBuild2())) {}\n\n /// @inheritdoc IPluginSetup\n function prepareInstallation(\n address _dao,\n bytes memory\n ) external returns (address plugin, PreparedSetupData memory preparedSetupData) {\n bytes memory initData = abi.encodeCall(\n PluginUUPSUpgradeableMockBuild2.initialize,\n (IDAO(_dao))\n );\n plugin = implementation().deployUUPSProxy(initData);\n preparedSetupData.helpers = mockHelpers(THIS_BUILD);\n preparedSetupData.permissions = mockPermissions(\n 0,\n THIS_BUILD,\n PermissionLib.Operation.Grant\n );\n }\n\n /// @inheritdoc IPluginSetup\n function prepareUpdate(\n address _dao,\n uint16 _fromBuild,\n SetupPayload calldata _payload\n )\n external\n pure\n override\n returns (bytes memory initData, PreparedSetupData memory preparedSetupData)\n {\n (_dao, _payload);\n\n // Update from Build 1\n if (_fromBuild == 1) {\n preparedSetupData.helpers = mockHelpers(THIS_BUILD);\n initData = abi.encodeCall(PluginUUPSUpgradeableMockBuild2.initializeFrom, (_fromBuild));\n preparedSetupData.permissions = mockPermissions(\n _fromBuild,\n THIS_BUILD,\n PermissionLib.Operation.Grant\n );\n }\n }\n\n /// @inheritdoc IPluginSetup\n function prepareUninstallation(\n address _dao,\n SetupPayload calldata _payload\n ) external pure returns (PermissionLib.MultiTargetPermission[] memory permissions) {\n (_dao, _payload);\n permissions = mockPermissions(0, THIS_BUILD, PermissionLib.Operation.Revoke);\n }\n}\n\n/// @notice A mock plugin setup of an upgradeable plugin to be deployed via the UUPS pattern.\n/// v1.3 (Release 1, Build 3)\ncontract PluginUUPSUpgradeableSetupMockBuild3 is PluginUpgradeableSetup {\n using ProxyLib for address;\n\n uint16 internal constant THIS_BUILD = 3;\n\n constructor() PluginUpgradeableSetup(address(new PluginUUPSUpgradeableMockBuild3())) {}\n\n /// @inheritdoc IPluginSetup\n function prepareInstallation(\n address _dao,\n bytes memory\n ) external returns (address plugin, PreparedSetupData memory preparedSetupData) {\n bytes memory initData = abi.encodeCall(\n PluginUUPSUpgradeableMockBuild3.initialize,\n (IDAO(_dao))\n );\n plugin = implementation().deployUUPSProxy(initData);\n preparedSetupData.helpers = mockHelpers(THIS_BUILD);\n preparedSetupData.permissions = mockPermissions(\n 0,\n THIS_BUILD,\n PermissionLib.Operation.Grant\n );\n }\n\n /// @inheritdoc IPluginSetup\n function prepareUpdate(\n address _dao,\n uint16 _fromBuild,\n SetupPayload calldata _payload\n )\n external\n pure\n override\n returns (bytes memory initData, PreparedSetupData memory preparedSetupData)\n {\n (_dao, _payload);\n\n // Update from Build 1\n if (_fromBuild == 1) {\n preparedSetupData.helpers = mockHelpers(THIS_BUILD);\n initData = abi.encodeCall(PluginUUPSUpgradeableMockBuild3.initializeFrom, (_fromBuild));\n preparedSetupData.permissions = mockPermissions(\n _fromBuild,\n THIS_BUILD,\n PermissionLib.Operation.Grant\n );\n\n // If this update path should not be supported, you can revert with an error, e.g.,\n // revert InvalidUpdatePath({fromBuild: _fromBuild, thisBuild: THIS_BUILD});\n }\n\n // Update from Build 2\n if (_fromBuild == 2) {\n preparedSetupData.helpers = mockHelpers(THIS_BUILD);\n initData = abi.encodeCall(PluginUUPSUpgradeableMockBuild3.initializeFrom, (_fromBuild));\n preparedSetupData.permissions = mockPermissions(\n _fromBuild,\n THIS_BUILD,\n PermissionLib.Operation.Grant\n );\n }\n }\n\n /// @inheritdoc IPluginSetup\n function prepareUninstallation(\n address _dao,\n SetupPayload calldata _payload\n ) external pure returns (PermissionLib.MultiTargetPermission[] memory permissions) {\n (_dao, _payload);\n permissions = mockPermissions(0, THIS_BUILD, PermissionLib.Operation.Revoke);\n }\n}\n"},"src/mocks/token/ERC1155Mock.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\nimport {ERC1155} from \"@openzeppelin/contracts/token/ERC1155/ERC1155.sol\";\n\n/// @notice A mock [ERC-1155](https://eips.ethereum.org/EIPS/eip-1155) token that can be minted and burned by everyone.\n/// @dev DO NOT USE IN PRODUCTION!\ncontract ERC1155Mock is ERC1155 {\n constructor(string memory _uri) ERC1155(_uri) {}\n\n function mint(address account, uint256 tokenId, uint256 amount) public {\n _mint(account, tokenId, amount, bytes(\"\"));\n }\n\n function burn(address account, uint256 tokenId, uint256 amount) public {\n _burn(account, tokenId, amount);\n }\n}\n"},"src/mocks/token/ERC20Mock.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\nimport {ERC20} from \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n/// @notice A mock [ERC-20](https://eips.ethereum.org/EIPS/eip-20) token that can be minted and burned by everyone.\n/// @dev DO NOT USE IN PRODUCTION!\ncontract ERC20Mock is ERC20 {\n uint8 public decimals_ = 18;\n\n constructor(string memory _name, string memory _symbol) ERC20(_name, _symbol) {}\n\n function setDecimals(uint8 _decimals) public {\n decimals_ = _decimals;\n }\n\n function decimals() public view override returns (uint8) {\n return decimals_;\n }\n\n // sets the balance of the address\n // this mints/burns the amount depending on the current balance\n function setBalance(address to, uint256 amount) public {\n uint256 old = balanceOf(to);\n if (old < amount) {\n _mint(to, amount - old);\n } else if (old > amount) {\n _burn(to, old - amount);\n }\n }\n}\n"},"src/mocks/token/ERC721Mock.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\nimport {ERC721} from \"@openzeppelin/contracts/token/ERC721/ERC721.sol\";\n\n/// @notice A mock [ERC-721](https://eips.ethereum.org/EIPS/eip-721) token that can be minted and burned by everyone.\n/// @dev DO NOT USE IN PRODUCTION!\ncontract ERC721Mock is ERC721 {\n constructor(string memory name_, string memory symbol_) ERC721(name_, symbol_) {}\n\n function mint(address account, uint256 tokenId) public {\n _mint(account, tokenId);\n }\n\n function burn(uint256 tokenId) public {\n _burn(tokenId);\n }\n}\n"},"src/mocks/utils/math/BitmapMock.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\nimport {hasBit as _hasBit, flipBit as _flipBit} from \"../../../utils/math/BitMap.sol\";\n\n/// @notice A mock contract containing functions manipulating bitmaps.\n/// @dev DO NOT USE IN PRODUCTION!\ncontract BitmapMock {\n function hasBit(uint256 _bitmap, uint8 _index) public pure returns (bool) {\n return _hasBit(_bitmap, _index);\n }\n\n function flipBit(uint256 _bitmap, uint8 _index) public pure returns (uint256) {\n return _flipBit(_bitmap, _index);\n }\n}\n"},"src/mocks/utils/math/RatioMock.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\nimport {RATIO_BASE, _applyRatioCeiled} from \"../../../utils/math/Ratio.sol\";\n\n/// @notice A mock contract containing functions manipulating bitmaps.\n/// @dev DO NOT USE IN PRODUCTION!\ncontract RatioMock {\n function getRatioBase() public pure returns (uint256) {\n return RATIO_BASE;\n }\n\n function applyRatioCeiled(uint256 _value, uint256 _ratio) public pure returns (uint256) {\n return _applyRatioCeiled(_value, _ratio);\n }\n}\n"},"src/mocks/utils/versioning/ProtocolVersionMock.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\nimport {ProtocolVersion} from \"../../../utils/versioning/ProtocolVersion.sol\";\n\n/// @notice A mock contract returning the OSx protocol version number.\n/// @dev DO NOT USE IN PRODUCTION!\n// solhint-disable-next-line no-empty-blocks\ncontract ProtocolVersionMock is ProtocolVersion {\n\n}\n"},"src/mocks/utils/versioning/VersionComparisonLibMock.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\nimport {VersionComparisonLib} from \"../../../utils/versioning/VersionComparisonLib.sol\";\n\n/// @notice A mock contract containing functions to compare semantic version numbers.\n/// @dev DO NOT USE IN PRODUCTION!\ncontract VersionComparisonLibMock {\n using VersionComparisonLib for uint8[3];\n\n function eq(uint8[3] memory lhs, uint8[3] memory rhs) public pure returns (bool) {\n return lhs.eq(rhs);\n }\n\n function neq(uint8[3] memory lhs, uint8[3] memory rhs) public pure returns (bool) {\n return lhs.neq(rhs);\n }\n\n function lt(uint8[3] memory lhs, uint8[3] memory rhs) public pure returns (bool) {\n return lhs.lt(rhs);\n }\n\n function lte(uint8[3] memory lhs, uint8[3] memory rhs) public pure returns (bool) {\n return lhs.lte(rhs);\n }\n\n function gt(uint8[3] memory lhs, uint8[3] memory rhs) public pure returns (bool) {\n return lhs.gt(rhs);\n }\n\n function gte(uint8[3] memory lhs, uint8[3] memory rhs) public pure returns (bool) {\n return lhs.gte(rhs);\n }\n}\n"},"src/permission/auth/auth.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\nimport {IDAO} from \"../../dao/IDAO.sol\";\n\n/// @notice Thrown if a call is unauthorized in the associated DAO.\n/// @param dao The associated DAO.\n/// @param where The context in which the authorization reverted.\n/// @param who The address (EOA or contract) missing the permission.\n/// @param permissionId The permission identifier.\nerror DaoUnauthorized(address dao, address where, address who, bytes32 permissionId);\n\n/// @notice A free function checking if a caller is granted permissions on a target contract via a permission identifier that redirects the approval to a `PermissionCondition` if this was specified in the setup.\n/// @param _where The address of the target contract for which `who` receives permission.\n/// @param _who The address (EOA or contract) owning the permission.\n/// @param _permissionId The permission identifier.\n/// @param _data The optional data passed to the `PermissionCondition` registered.\n/// @custom:security-contact sirt@aragon.org\nfunction _auth(\n IDAO _dao,\n address _where,\n address _who,\n bytes32 _permissionId,\n bytes calldata _data\n) view {\n if (!_dao.hasPermission(_where, _who, _permissionId, _data))\n revert DaoUnauthorized({\n dao: address(_dao),\n where: _where,\n who: _who,\n permissionId: _permissionId\n });\n}\n"},"src/permission/auth/DaoAuthorizable.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\nimport {Context} from \"@openzeppelin/contracts/utils/Context.sol\";\n\nimport {IDAO} from \"../../dao/IDAO.sol\";\nimport {_auth} from \"./auth.sol\";\n\n/// @title DaoAuthorizable\n/// @author Aragon X - 2022-2023\n/// @notice An abstract contract providing a meta-transaction compatible modifier for non-upgradeable contracts instantiated via the `new` keyword to authorize function calls through an associated DAO.\n/// @custom:security-contact sirt@aragon.org\nabstract contract DaoAuthorizable is Context {\n /// @notice The associated DAO managing the permissions of inheriting contracts.\n IDAO private immutable DAO;\n\n /// @notice Constructs the contract by setting the associated DAO.\n /// @param _dao The associated DAO address.\n constructor(IDAO _dao) {\n DAO = _dao;\n }\n\n /// @notice Returns the DAO contract.\n /// @return The DAO contract.\n function dao() public view returns (IDAO) {\n return DAO;\n }\n\n /// @notice A modifier to make functions on inheriting contracts authorized. Permissions to call the function are checked through the associated DAO's permission manager.\n /// @param _permissionId The permission identifier required to call the method this modifier is applied to.\n modifier auth(bytes32 _permissionId) {\n _auth(DAO, address(this), _msgSender(), _permissionId, _msgData());\n _;\n }\n}\n"},"src/permission/auth/DaoAuthorizableUpgradeable.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\nimport {ContextUpgradeable} from \"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\";\n\nimport {IDAO} from \"../../dao/IDAO.sol\";\nimport {_auth} from \"./auth.sol\";\n\n/// @title DaoAuthorizableUpgradeable\n/// @author Aragon X - 2022-2023\n/// @notice An abstract contract providing a meta-transaction compatible modifier for upgradeable or cloneable contracts to authorize function calls through an associated DAO.\n/// @dev Make sure to call `__DaoAuthorizableUpgradeable_init` during initialization of the inheriting contract.\n/// @custom:security-contact sirt@aragon.org\nabstract contract DaoAuthorizableUpgradeable is ContextUpgradeable {\n /// @notice The associated DAO managing the permissions of inheriting contracts.\n IDAO private dao_;\n\n /// @notice Initializes the contract by setting the associated DAO.\n /// @param _dao The associated DAO address.\n // solhint-disable-next-line func-name-mixedcase\n function __DaoAuthorizableUpgradeable_init(IDAO _dao) internal onlyInitializing {\n dao_ = _dao;\n }\n\n /// @notice Returns the DAO contract.\n /// @return The DAO contract.\n function dao() public view returns (IDAO) {\n return dao_;\n }\n\n /// @notice A modifier to make functions on inheriting contracts authorized. Permissions to call the function are checked through the associated DAO's permission manager.\n /// @param _permissionId The permission identifier required to call the method this modifier is applied to.\n modifier auth(bytes32 _permissionId) {\n _auth(dao_, address(this), _msgSender(), _permissionId, _msgData());\n _;\n }\n\n /// @notice This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain (see [OpenZeppelin's guide about storage gaps](https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps)).\n uint256[49] private __gap;\n}\n"},"src/permission/condition/IPermissionCondition.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\n/// @title IPermissionCondition\n/// @author Aragon X - 2021-2023\n/// @notice An interface to be implemented to support custom permission logic.\n/// @dev To attach a condition to a permission, the `grantWithCondition` function must be used and refer to the implementing contract's address with the `condition` argument.\n/// @custom:security-contact sirt@aragon.org\ninterface IPermissionCondition {\n /// @notice Checks if a call is permitted.\n /// @param _where The address of the target contract.\n /// @param _who The address (EOA or contract) for which the permissions are checked.\n /// @param _permissionId The permission identifier.\n /// @param _data Optional data passed to the `PermissionCondition` implementation.\n /// @return isPermitted Returns true if the call is permitted.\n function isGranted(\n address _where,\n address _who,\n bytes32 _permissionId,\n bytes calldata _data\n ) external view returns (bool isPermitted);\n}\n"},"src/permission/condition/PermissionCondition.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\nimport {ERC165} from \"@openzeppelin/contracts/utils/introspection/ERC165.sol\";\n\nimport {IProtocolVersion} from \"../../utils/versioning/IProtocolVersion.sol\";\nimport {ProtocolVersion} from \"../../utils/versioning/ProtocolVersion.sol\";\nimport {IPermissionCondition} from \"./IPermissionCondition.sol\";\n\n/// @title PermissionCondition\n/// @author Aragon X - 2023\n/// @notice An abstract contract for non-upgradeable contracts instantiated via the `new` keyword to inherit from to support customary permissions depending on arbitrary on-chain state.\n/// @custom:security-contact sirt@aragon.org\nabstract contract PermissionCondition is ERC165, IPermissionCondition, ProtocolVersion {\n /// @notice Checks if an interface is supported by this or its parent contract.\n /// @param _interfaceId The ID of the interface.\n /// @return Returns `true` if the interface is supported.\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\n return\n _interfaceId == type(IPermissionCondition).interfaceId ||\n _interfaceId == type(IProtocolVersion).interfaceId ||\n super.supportsInterface(_interfaceId);\n }\n}\n"},"src/permission/condition/PermissionConditionUpgradeable.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\nimport {ERC165Upgradeable} from \"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\";\n\nimport {IProtocolVersion} from \"../../utils/versioning/IProtocolVersion.sol\";\nimport {ProtocolVersion} from \"../../utils/versioning/ProtocolVersion.sol\";\nimport {IPermissionCondition} from \"./IPermissionCondition.sol\";\n\n/// @title PermissionConditionUpgradeable\n/// @author Aragon X - 2023\n/// @notice An abstract contract for upgradeable or cloneable contracts to inherit from and to support customary permissions depending on arbitrary on-chain state.\n/// @custom:security-contact sirt@aragon.org\nabstract contract PermissionConditionUpgradeable is\n ERC165Upgradeable,\n IPermissionCondition,\n ProtocolVersion\n{\n /// @notice Checks if an interface is supported by this or its parent contract.\n /// @param _interfaceId The ID of the interface.\n /// @return Returns `true` if the interface is supported.\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\n return\n _interfaceId == type(IPermissionCondition).interfaceId ||\n _interfaceId == type(IProtocolVersion).interfaceId ||\n super.supportsInterface(_interfaceId);\n }\n}\n"},"src/permission/PermissionLib.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\n/// @title PermissionLib\n/// @author Aragon X - 2021-2023\n/// @notice A library containing objects for permission processing.\n/// @custom:security-contact sirt@aragon.org\nlibrary PermissionLib {\n /// @notice A constant expressing that no condition is applied to a permission.\n address public constant NO_CONDITION = address(0);\n\n /// @notice The types of permission operations available in the `PermissionManager`.\n /// @param Grant The grant operation setting a permission without a condition.\n /// @param Revoke The revoke operation removing a permission (that was granted with or without a condition).\n /// @param GrantWithCondition The grant operation setting a permission with a condition.\n enum Operation {\n Grant,\n Revoke,\n GrantWithCondition\n }\n\n /// @notice A struct containing the information for a permission to be applied on a single target contract without a condition.\n /// @param operation The permission operation type.\n /// @param who The address (EOA or contract) receiving the permission.\n /// @param permissionId The permission identifier.\n struct SingleTargetPermission {\n Operation operation;\n address who;\n bytes32 permissionId;\n }\n\n /// @notice A struct containing the information for a permission to be applied on multiple target contracts, optionally, with a condition.\n /// @param operation The permission operation type.\n /// @param where The address of the target contract for which `who` receives permission.\n /// @param who The address (EOA or contract) receiving the permission.\n /// @param condition The `PermissionCondition` that will be asked for authorization on calls connected to the specified permission identifier.\n /// @param permissionId The permission identifier.\n struct MultiTargetPermission {\n Operation operation;\n address where;\n address who;\n address condition;\n bytes32 permissionId;\n }\n}\n"},"src/plugin/extensions/governance/Addresslist.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\nimport {CheckpointsUpgradeable} from \"@openzeppelin/contracts-upgradeable/utils/CheckpointsUpgradeable.sol\";\n\nimport {_uncheckedAdd, _uncheckedSub} from \"../../../utils/math/UncheckedMath.sol\";\n\n/// @title Addresslist\n/// @author Aragon X - 2021-2023\n/// @notice The majority voting implementation using a list of member addresses.\n/// @dev This contract inherits from `MajorityVotingBase` and implements the `IMajorityVoting` interface.\n/// @custom:security-contact sirt@aragon.org\nabstract contract Addresslist {\n using CheckpointsUpgradeable for CheckpointsUpgradeable.History;\n\n /// @notice The mapping containing the checkpointed history of the address list.\n // solhint-disable-next-line named-parameters-mapping\n mapping(address => CheckpointsUpgradeable.History) private _addresslistCheckpoints;\n\n /// @notice The checkpointed history of the length of the address list.\n CheckpointsUpgradeable.History private _addresslistLengthCheckpoints;\n\n /// @notice Thrown when the address list update is invalid, which can be caused by the addition of an existing member or removal of a non-existing member.\n /// @param member The array of member addresses to be added or removed.\n error InvalidAddresslistUpdate(address member);\n\n /// @notice Checks if an account is on the address list at a specific block number.\n /// @param _account The account address being checked.\n /// @param _blockNumber The block number.\n /// @return Whether the account is listed at the specified block number.\n function isListedAtBlock(\n address _account,\n uint256 _blockNumber\n ) public view virtual returns (bool) {\n return _addresslistCheckpoints[_account].getAtBlock(_blockNumber) == 1;\n }\n\n /// @notice Checks if an account is currently on the address list.\n /// @param _account The account address being checked.\n /// @return Whether the account is currently listed.\n function isListed(address _account) public view virtual returns (bool) {\n return _addresslistCheckpoints[_account].latest() == 1;\n }\n\n /// @notice Returns the length of the address list at a specific block number.\n /// @param _blockNumber The specific block to get the count from. If `0`, then the latest checkpoint value is returned.\n /// @return The address list length at the specified block number.\n function addresslistLengthAtBlock(uint256 _blockNumber) public view virtual returns (uint256) {\n return _addresslistLengthCheckpoints.getAtBlock(_blockNumber);\n }\n\n /// @notice Returns the current length of the address list.\n /// @return The current address list length.\n function addresslistLength() public view virtual returns (uint256) {\n return _addresslistLengthCheckpoints.latest();\n }\n\n /// @notice Internal function to add new addresses to the address list.\n /// @param _newAddresses The new addresses to be added.\n function _addAddresses(address[] calldata _newAddresses) internal virtual {\n for (uint256 i; i < _newAddresses.length; ) {\n if (isListed(_newAddresses[i])) {\n revert InvalidAddresslistUpdate(_newAddresses[i]);\n }\n\n // Mark the address as listed\n _addresslistCheckpoints[_newAddresses[i]].push(1);\n\n unchecked {\n ++i;\n }\n }\n _addresslistLengthCheckpoints.push(_uncheckedAdd, _newAddresses.length);\n }\n\n /// @notice Internal function to remove existing addresses from the address list.\n /// @param _exitingAddresses The existing addresses to be removed.\n function _removeAddresses(address[] calldata _exitingAddresses) internal virtual {\n for (uint256 i; i < _exitingAddresses.length; ) {\n if (!isListed(_exitingAddresses[i])) {\n revert InvalidAddresslistUpdate(_exitingAddresses[i]);\n }\n\n // Mark the address as not listed\n _addresslistCheckpoints[_exitingAddresses[i]].push(0);\n\n unchecked {\n ++i;\n }\n }\n _addresslistLengthCheckpoints.push(_uncheckedSub, _exitingAddresses.length);\n }\n\n /// @dev This empty reserved space is put in place to allow future versions to add new\n /// variables without shifting down storage in the inheritance chain.\n /// https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\n uint256[48] private __gap;\n}\n"},"src/plugin/extensions/membership/IMembership.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\n/// @title IMembership\n/// @author Aragon X - 2022-2023\n/// @notice An interface to be implemented by DAO plugins that define membership.\n/// @custom:security-contact sirt@aragon.org\ninterface IMembership {\n /// @notice Emitted when members are added to the DAO plugin.\n /// @param members The list of new members being added.\n event MembersAdded(address[] members);\n\n /// @notice Emitted when members are removed from the DAO plugin.\n /// @param members The list of existing members being removed.\n event MembersRemoved(address[] members);\n\n /// @notice Emitted to announce the membership being defined by a contract.\n /// @param definingContract The contract defining the membership.\n event MembershipContractAnnounced(address indexed definingContract);\n\n /// @notice Checks if an account is a member of the DAO.\n /// @param _account The address of the account to be checked.\n /// @return Whether the account is a member or not.\n /// @dev This function must be implemented in the plugin contract that introduces the members to the DAO.\n function isMember(address _account) external view returns (bool);\n}\n"},"src/plugin/extensions/proposal/IProposal.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\nimport {IDAO} from \"../../../dao/IDAO.sol\";\n\n/// @title IProposal\n/// @author Aragon X - 2022-2023\n/// @notice An interface to be implemented by DAO plugins that create and execute proposals.\n/// @custom:security-contact sirt@aragon.org\ninterface IProposal {\n /// @notice Emitted when a proposal is created.\n /// @param proposalId The ID of the proposal.\n /// @param creator The creator of the proposal.\n /// @param startDate The start date of the proposal in seconds.\n /// @param endDate The end date of the proposal in seconds.\n /// @param metadata The metadata of the proposal.\n /// @param actions The actions that will be executed if the proposal passes.\n /// @param allowFailureMap A bitmap allowing the proposal to succeed, even if individual actions might revert. If the bit at index `i` is 1, the proposal succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\n event ProposalCreated(\n uint256 indexed proposalId,\n address indexed creator,\n uint64 startDate,\n uint64 endDate,\n bytes metadata,\n IDAO.Action[] actions,\n uint256 allowFailureMap\n );\n\n /// @notice Emitted when a proposal is executed.\n /// @param proposalId The ID of the proposal.\n event ProposalExecuted(uint256 indexed proposalId);\n\n /// @notice Returns the proposal count determining the next proposal ID.\n /// @return The proposal count.\n function proposalCount() external view returns (uint256);\n}\n"},"src/plugin/extensions/proposal/Proposal.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\nimport {Counters} from \"@openzeppelin/contracts/utils/Counters.sol\";\nimport {ERC165} from \"@openzeppelin/contracts/utils/introspection/ERC165.sol\";\n\nimport {IDAO} from \"../../../dao/IDAO.sol\";\nimport {IProposal} from \"./IProposal.sol\";\n\n/// @title Proposal\n/// @author Aragon X - 2022-2023\n/// @notice An abstract contract containing the traits and internal functionality to create and execute proposals that can be inherited by non-upgradeable DAO plugins.\n/// @custom:security-contact sirt@aragon.org\nabstract contract Proposal is IProposal, ERC165 {\n using Counters for Counters.Counter;\n\n /// @notice The incremental ID for proposals and executions.\n Counters.Counter private proposalCounter;\n\n /// @inheritdoc IProposal\n function proposalCount() public view override returns (uint256) {\n return proposalCounter.current();\n }\n\n /// @notice Checks if this or the parent contract supports an interface by its ID.\n /// @param _interfaceId The ID of the interface.\n /// @return Returns `true` if the interface is supported.\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\n return _interfaceId == type(IProposal).interfaceId || super.supportsInterface(_interfaceId);\n }\n\n /// @notice Creates a proposal ID.\n /// @return proposalId The proposal ID.\n function _createProposalId() internal returns (uint256 proposalId) {\n proposalId = proposalCount();\n proposalCounter.increment();\n }\n\n /// @notice Internal function to create a proposal.\n /// @param _metadata The proposal metadata.\n /// @param _startDate The start date of the proposal in seconds.\n /// @param _endDate The end date of the proposal in seconds.\n /// @param _allowFailureMap A bitmap allowing the proposal to succeed, even if individual actions might revert. If the bit at index `i` is 1, the proposal succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\n /// @param _actions The actions that will be executed after the proposal passes.\n /// @return proposalId The ID of the proposal.\n function _createProposal(\n address _creator,\n bytes calldata _metadata,\n uint64 _startDate,\n uint64 _endDate,\n IDAO.Action[] calldata _actions,\n uint256 _allowFailureMap\n ) internal virtual returns (uint256 proposalId) {\n proposalId = _createProposalId();\n\n emit ProposalCreated({\n proposalId: proposalId,\n creator: _creator,\n metadata: _metadata,\n startDate: _startDate,\n endDate: _endDate,\n actions: _actions,\n allowFailureMap: _allowFailureMap\n });\n }\n\n /// @notice Internal function to execute a proposal.\n /// @param _proposalId The ID of the proposal to be executed.\n /// @param _actions The array of actions to be executed.\n /// @param _allowFailureMap A bitmap allowing the proposal to succeed, even if individual actions might revert. If the bit at index `i` is 1, the proposal succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\n /// @return execResults The array with the results of the executed actions.\n /// @return failureMap The failure map encoding which actions have failed.\n function _executeProposal(\n IDAO _dao,\n uint256 _proposalId,\n IDAO.Action[] memory _actions,\n uint256 _allowFailureMap\n ) internal virtual returns (bytes[] memory execResults, uint256 failureMap) {\n (execResults, failureMap) = _dao.execute(bytes32(_proposalId), _actions, _allowFailureMap);\n emit ProposalExecuted({proposalId: _proposalId});\n }\n}\n"},"src/plugin/extensions/proposal/ProposalUpgradeable.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\nimport {CountersUpgradeable} from \"@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol\";\nimport {ERC165Upgradeable} from \"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\";\n\nimport {IDAO} from \"../../../dao/IDAO.sol\";\nimport {IProposal} from \"./IProposal.sol\";\n\n/// @title ProposalUpgradeable\n/// @author Aragon X - 2022-2023\n/// @notice An abstract contract containing the traits and internal functionality to create and execute proposals that can be inherited by upgradeable DAO plugins.\n/// @custom:security-contact sirt@aragon.org\nabstract contract ProposalUpgradeable is IProposal, ERC165Upgradeable {\n using CountersUpgradeable for CountersUpgradeable.Counter;\n\n /// @notice The incremental ID for proposals and executions.\n CountersUpgradeable.Counter private proposalCounter;\n\n /// @inheritdoc IProposal\n function proposalCount() public view override returns (uint256) {\n return proposalCounter.current();\n }\n\n /// @notice Checks if this or the parent contract supports an interface by its ID.\n /// @param _interfaceId The ID of the interface.\n /// @return Returns `true` if the interface is supported.\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\n return _interfaceId == type(IProposal).interfaceId || super.supportsInterface(_interfaceId);\n }\n\n /// @notice Creates a proposal ID.\n /// @return proposalId The proposal ID.\n function _createProposalId() internal returns (uint256 proposalId) {\n proposalId = proposalCount();\n proposalCounter.increment();\n }\n\n /// @notice Internal function to create a proposal.\n /// @param _metadata The proposal metadata.\n /// @param _startDate The start date of the proposal in seconds.\n /// @param _endDate The end date of the proposal in seconds.\n /// @param _allowFailureMap A bitmap allowing the proposal to succeed, even if individual actions might revert. If the bit at index `i` is 1, the proposal succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\n /// @param _actions The actions that will be executed after the proposal passes.\n /// @return proposalId The ID of the proposal.\n function _createProposal(\n address _creator,\n bytes calldata _metadata,\n uint64 _startDate,\n uint64 _endDate,\n IDAO.Action[] calldata _actions,\n uint256 _allowFailureMap\n ) internal virtual returns (uint256 proposalId) {\n proposalId = _createProposalId();\n\n emit ProposalCreated({\n proposalId: proposalId,\n creator: _creator,\n metadata: _metadata,\n startDate: _startDate,\n endDate: _endDate,\n actions: _actions,\n allowFailureMap: _allowFailureMap\n });\n }\n\n /// @notice Internal function to execute a proposal.\n /// @param _proposalId The ID of the proposal to be executed.\n /// @param _actions The array of actions to be executed.\n /// @param _allowFailureMap A bitmap allowing the proposal to succeed, even if individual actions might revert. If the bit at index `i` is 1, the proposal succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\n /// @return execResults The array with the results of the executed actions.\n /// @return failureMap The failure map encoding which actions have failed.\n function _executeProposal(\n IDAO _dao,\n uint256 _proposalId,\n IDAO.Action[] memory _actions,\n uint256 _allowFailureMap\n ) internal virtual returns (bytes[] memory execResults, uint256 failureMap) {\n (execResults, failureMap) = _dao.execute(bytes32(_proposalId), _actions, _allowFailureMap);\n emit ProposalExecuted({proposalId: _proposalId});\n }\n\n /// @notice This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain (see [OpenZeppelin's guide about storage gaps](https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps)).\n uint256[49] private __gap;\n}\n"},"src/plugin/IPlugin.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\n/// @title IPlugin\n/// @author Aragon X - 2022-2023\n/// @notice An interface defining the traits of a plugin.\n/// @custom:security-contact sirt@aragon.org\ninterface IPlugin {\n enum PluginType {\n UUPS,\n Cloneable,\n Constructable\n }\n\n /// @notice Returns the plugin's type\n function pluginType() external view returns (PluginType);\n}\n"},"src/plugin/Plugin.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\nimport {ERC165} from \"@openzeppelin/contracts/utils/introspection/ERC165.sol\";\n\nimport {IProtocolVersion} from \"../utils/versioning/IProtocolVersion.sol\";\nimport {ProtocolVersion} from \"../utils/versioning/ProtocolVersion.sol\";\nimport {DaoAuthorizable} from \"../permission/auth/DaoAuthorizable.sol\";\nimport {IDAO} from \"../dao/IDAO.sol\";\nimport {IPlugin} from \"./IPlugin.sol\";\n\n/// @title Plugin\n/// @author Aragon X - 2022-2023\n/// @notice An abstract, non-upgradeable contract to inherit from when creating a plugin being deployed via the `new` keyword.\n/// @custom:security-contact sirt@aragon.org\nabstract contract Plugin is IPlugin, ERC165, DaoAuthorizable, ProtocolVersion {\n /// @notice Constructs the plugin by storing the associated DAO.\n /// @param _dao The DAO contract.\n constructor(IDAO _dao) DaoAuthorizable(_dao) {}\n\n /// @inheritdoc IPlugin\n function pluginType() public pure override returns (PluginType) {\n return PluginType.Constructable;\n }\n\n /// @notice Checks if this or the parent contract supports an interface by its ID.\n /// @param _interfaceId The ID of the interface.\n /// @return Returns `true` if the interface is supported.\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\n return\n _interfaceId == type(IPlugin).interfaceId ||\n _interfaceId == type(IProtocolVersion).interfaceId ||\n super.supportsInterface(_interfaceId);\n }\n}\n"},"src/plugin/PluginCloneable.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\nimport {ERC165Upgradeable} from \"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\";\n\nimport {IProtocolVersion} from \"../utils/versioning/IProtocolVersion.sol\";\nimport {ProtocolVersion} from \"../utils/versioning/ProtocolVersion.sol\";\nimport {DaoAuthorizableUpgradeable} from \"../permission/auth/DaoAuthorizableUpgradeable.sol\";\nimport {IDAO} from \"../dao/IDAO.sol\";\nimport {IPlugin} from \"./IPlugin.sol\";\n\n/// @title PluginCloneable\n/// @author Aragon X - 2022-2023\n/// @notice An abstract, non-upgradeable contract to inherit from when creating a plugin being deployed via the minimal clones pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)).\n/// @custom:security-contact sirt@aragon.org\nabstract contract PluginCloneable is\n IPlugin,\n ERC165Upgradeable,\n DaoAuthorizableUpgradeable,\n ProtocolVersion\n{\n /// @notice Disables the initializers on the implementation contract to prevent it from being left uninitialized.\n /// @custom:oz-upgrades-unsafe-allow constructor\n constructor() {\n _disableInitializers();\n }\n\n /// @notice Initializes the plugin by storing the associated DAO.\n /// @param _dao The DAO contract.\n // solhint-disable-next-line func-name-mixedcase\n function __PluginCloneable_init(IDAO _dao) internal virtual onlyInitializing {\n __DaoAuthorizableUpgradeable_init(_dao);\n }\n\n /// @inheritdoc IPlugin\n function pluginType() public pure override returns (PluginType) {\n return PluginType.Cloneable;\n }\n\n /// @notice Checks if this or the parent contract supports an interface by its ID.\n /// @param _interfaceId The ID of the interface.\n /// @return Returns `true` if the interface is supported.\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\n return\n _interfaceId == type(IPlugin).interfaceId ||\n _interfaceId == type(IProtocolVersion).interfaceId ||\n super.supportsInterface(_interfaceId);\n }\n}\n"},"src/plugin/PluginUUPSUpgradeable.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\nimport {UUPSUpgradeable} from \"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\";\nimport {IERC1822ProxiableUpgradeable} from \"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol\";\nimport {ERC165Upgradeable} from \"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\";\n\nimport {IProtocolVersion} from \"../utils/versioning/IProtocolVersion.sol\";\nimport {ProtocolVersion} from \"../utils/versioning/ProtocolVersion.sol\";\nimport {DaoAuthorizableUpgradeable} from \"../permission/auth/DaoAuthorizableUpgradeable.sol\";\nimport {IDAO} from \"../dao/IDAO.sol\";\nimport {IPlugin} from \"./IPlugin.sol\";\n\n/// @title PluginUUPSUpgradeable\n/// @author Aragon X - 2022-2023\n/// @notice An abstract, upgradeable contract to inherit from when creating a plugin being deployed via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\n/// @custom:security-contact sirt@aragon.org\nabstract contract PluginUUPSUpgradeable is\n IPlugin,\n ERC165Upgradeable,\n UUPSUpgradeable,\n DaoAuthorizableUpgradeable,\n ProtocolVersion\n{\n // NOTE: When adding new state variables to the contract, the size of `_gap` has to be adapted below as well.\n\n /// @notice Disables the initializers on the implementation contract to prevent it from being left uninitialized.\n /// @custom:oz-upgrades-unsafe-allow constructor\n constructor() {\n _disableInitializers();\n }\n\n /// @inheritdoc IPlugin\n function pluginType() public pure override returns (PluginType) {\n return PluginType.UUPS;\n }\n\n /// @notice The ID of the permission required to call the `_authorizeUpgrade` function.\n bytes32 public constant UPGRADE_PLUGIN_PERMISSION_ID = keccak256(\"UPGRADE_PLUGIN_PERMISSION\");\n\n /// @notice Initializes the plugin by storing the associated DAO.\n /// @param _dao The DAO contract.\n // solhint-disable-next-line func-name-mixedcase\n function __PluginUUPSUpgradeable_init(IDAO _dao) internal virtual onlyInitializing {\n __DaoAuthorizableUpgradeable_init(_dao);\n }\n\n /// @notice Checks if an interface is supported by this or its parent contract.\n /// @param _interfaceId The ID of the interface.\n /// @return Returns `true` if the interface is supported.\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\n return\n _interfaceId == type(IPlugin).interfaceId ||\n _interfaceId == type(IProtocolVersion).interfaceId ||\n _interfaceId == type(IERC1822ProxiableUpgradeable).interfaceId ||\n super.supportsInterface(_interfaceId);\n }\n\n /// @notice Returns the address of the implementation contract in the [proxy storage slot](https://eips.ethereum.org/EIPS/eip-1967) slot the [UUPS proxy](https://eips.ethereum.org/EIPS/eip-1822) is pointing to.\n /// @return The address of the implementation contract.\n function implementation() public view returns (address) {\n return _getImplementation();\n }\n\n /// @notice Internal method authorizing the upgrade of the contract via the [upgradeability mechanism for UUPS proxies](https://docs.openzeppelin.com/contracts/4.x/api/proxy#UUPSUpgradeable) (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\n /// @dev The caller must have the `UPGRADE_PLUGIN_PERMISSION_ID` permission.\n function _authorizeUpgrade(\n address\n )\n internal\n virtual\n override\n auth(UPGRADE_PLUGIN_PERMISSION_ID)\n // solhint-disable-next-line no-empty-blocks\n {\n\n }\n\n /// @notice This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain (see [OpenZeppelin's guide about storage gaps](https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps)).\n uint256[50] private __gap;\n}\n"},"src/plugin/setup/IPluginSetup.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\nimport {PermissionLib} from \"../../permission/PermissionLib.sol\";\n\n// solhint-disable-next-line no-unused-import\nimport {IDAO} from \"../../dao/IDAO.sol\";\n\n/// @title IPluginSetup\n/// @author Aragon X - 2022-2023\n/// @notice The interface required for a plugin setup contract to be consumed by the `PluginSetupProcessor` for plugin installations, updates, and uninstallations.\n/// @custom:security-contact sirt@aragon.org\ninterface IPluginSetup {\n /// @notice The data associated with a prepared setup.\n /// @param helpers The address array of helpers (contracts or EOAs) associated with this plugin version after the installation or update.\n /// @param permissions The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the installing or updating DAO.\n struct PreparedSetupData {\n address[] helpers;\n PermissionLib.MultiTargetPermission[] permissions;\n }\n\n /// @notice The payload for plugin updates and uninstallations containing the existing contracts as well as optional data to be consumed by the plugin setup.\n /// @param plugin The address of the `Plugin`.\n /// @param currentHelpers The address array of all current helpers (contracts or EOAs) associated with the plugin to update from.\n /// @param data The bytes-encoded data containing the input parameters for the preparation of update/uninstall as specified in the corresponding ABI on the version's metadata.\n struct SetupPayload {\n address plugin;\n address[] currentHelpers;\n bytes data;\n }\n\n /// @notice Prepares the installation of a plugin.\n /// @param _dao The address of the installing DAO.\n /// @param _data The bytes-encoded data containing the input parameters for the installation as specified in the plugin's build metadata JSON file.\n /// @return plugin The address of the `Plugin` contract being prepared for installation.\n /// @return preparedSetupData The deployed plugin's relevant data which consists of helpers and permissions.\n function prepareInstallation(\n address _dao,\n bytes calldata _data\n ) external returns (address plugin, PreparedSetupData memory preparedSetupData);\n\n /// @notice Prepares the update of a plugin.\n /// @param _dao The address of the updating DAO.\n /// @param _fromBuild The build number of the plugin to update from.\n /// @param _payload The relevant data necessary for the `prepareUpdate`. See above.\n /// @return initData The initialization data to be passed to upgradeable contracts when the update is applied in the `PluginSetupProcessor`.\n /// @return preparedSetupData The deployed plugin's relevant data which consists of helpers and permissions.\n function prepareUpdate(\n address _dao,\n uint16 _fromBuild,\n SetupPayload calldata _payload\n ) external returns (bytes memory initData, PreparedSetupData memory preparedSetupData);\n\n /// @notice Prepares the uninstallation of a plugin.\n /// @param _dao The address of the uninstalling DAO.\n /// @param _payload The relevant data necessary for the `prepareUninstallation`. See above.\n /// @return permissions The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the uninstalling DAO.\n function prepareUninstallation(\n address _dao,\n SetupPayload calldata _payload\n ) external returns (PermissionLib.MultiTargetPermission[] memory permissions);\n\n /// @notice Returns the plugin implementation address.\n /// @return The address of the plugin implementation contract.\n /// @dev The implementation can be instantiated via the `new` keyword, cloned via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)), or proxied via the UUPS proxy pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\n function implementation() external view returns (address);\n}\n"},"src/plugin/setup/PluginSetup.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\nimport {ERC165} from \"@openzeppelin/contracts/utils/introspection/ERC165.sol\";\n\nimport {IProtocolVersion} from \"../../utils/versioning/IProtocolVersion.sol\";\nimport {ProtocolVersion} from \"../../utils/versioning/ProtocolVersion.sol\";\nimport {IPluginSetup} from \"./IPluginSetup.sol\";\n\n/// @title PluginSetup\n/// @author Aragon X - 2022-2024\n/// @notice An abstract contract to inherit from to implement the plugin setup for non-upgradeable plugins, i.e,\n/// - `Plugin` being deployed via the `new` keyword\n/// - `PluginCloneable` being deployed via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)).\n/// @custom:security-contact sirt@aragon.org\nabstract contract PluginSetup is ERC165, IPluginSetup, ProtocolVersion {\n /// @notice The address of the plugin implementation contract for initial block explorer verification and, in the case of `PluginClonable` implementations, to create [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167) clones from.\n address internal immutable IMPLEMENTATION;\n\n /// @notice Thrown when attempting to prepare an update on a non-upgradeable plugin.\n error NonUpgradeablePlugin();\n\n /// @notice The contract constructor, that setting the plugin implementation contract.\n /// @param _implementation The address of the plugin implementation contract.\n constructor(address _implementation) {\n IMPLEMENTATION = _implementation;\n }\n\n /// @inheritdoc IPluginSetup\n /// @dev Since the underlying plugin is non-upgradeable, this non-virtual function must always revert.\n function prepareUpdate(\n address _dao,\n uint16 _fromBuild,\n SetupPayload calldata _payload\n ) external pure returns (bytes memory, PreparedSetupData memory) {\n (_dao, _fromBuild, _payload);\n revert NonUpgradeablePlugin();\n }\n\n /// @notice Checks if this or the parent contract supports an interface by its ID.\n /// @param _interfaceId The ID of the interface.\n /// @return Returns `true` if the interface is supported.\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\n return\n _interfaceId == type(IPluginSetup).interfaceId ||\n _interfaceId == type(IProtocolVersion).interfaceId ||\n super.supportsInterface(_interfaceId);\n }\n\n /// @inheritdoc IPluginSetup\n function implementation() public view returns (address) {\n return IMPLEMENTATION;\n }\n}\n"},"src/plugin/setup/PluginUpgradeableSetup.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\nimport {ERC165} from \"@openzeppelin/contracts/utils/introspection/ERC165.sol\";\n\nimport {IProtocolVersion} from \"../../utils/versioning/IProtocolVersion.sol\";\nimport {ProtocolVersion} from \"../../utils/versioning/ProtocolVersion.sol\";\nimport {IPluginSetup} from \"./IPluginSetup.sol\";\n\n/// @title PluginUpgradeableSetup\n/// @author Aragon X - 2022-2024\n/// @notice An abstract contract to inherit from to implement the plugin setup for upgradeable plugins, i.e, `PluginUUPSUpgradeable` being deployed via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822) and [ERC-1967](https://eips.ethereum.org/EIPS/eip-1967)).\n/// @custom:security-contact sirt@aragon.org\nabstract contract PluginUpgradeableSetup is ERC165, IPluginSetup, ProtocolVersion {\n /// @notice The address of the plugin implementation contract for initial block explorer verification\n /// and to create [ERC-1967](https://eips.ethereum.org/EIPS/eip-1967) UUPS proxies from.\n address internal immutable IMPLEMENTATION;\n\n /// @notice Thrown when an update path is not available, for example, if this is the initial build.\n /// @param fromBuild The build number to update from.\n /// @param thisBuild The build number of this setup to update to.\n error InvalidUpdatePath(uint16 fromBuild, uint16 thisBuild);\n\n /// @notice The contract constructor, that setting the plugin implementation contract.\n /// @param _implementation The address of the plugin implementation contract.\n constructor(address _implementation) {\n IMPLEMENTATION = _implementation;\n }\n\n /// @notice Checks if this or the parent contract supports an interface by its ID.\n /// @param _interfaceId The ID of the interface.\n /// @return Returns `true` if the interface is supported.\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\n return\n _interfaceId == type(IPluginSetup).interfaceId ||\n _interfaceId == type(IProtocolVersion).interfaceId ||\n super.supportsInterface(_interfaceId);\n }\n\n /// @inheritdoc IPluginSetup\n function implementation() public view returns (address) {\n return IMPLEMENTATION;\n }\n}\n"},"src/utils/deployment/ProxyFactory.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\nimport {ProxyLib} from \"./ProxyLib.sol\";\n\n/// @title ProxyFactory\n/// @author Aragon X - 2024\n/// @notice A factory to deploy proxies via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)) and minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)).\n/// @custom:security-contact sirt@aragon.org\ncontract ProxyFactory {\n using ProxyLib for address;\n /// @notice The immutable logic contract address.\n address internal immutable IMPLEMENTATION;\n\n /// @notice Emitted when an proxy contract is created.\n /// @param proxy The proxy address.\n event ProxyCreated(address proxy);\n\n /// @notice Initializes the contract with a logic contract address.\n /// @param _implementation The logic contract address.\n constructor(address _implementation) {\n IMPLEMENTATION = _implementation;\n }\n\n /// @notice Creates an [ERC-1967](https://eips.ethereum.org/EIPS/eip-1967) proxy contract pointing to the pre-set logic contract.\n /// @param _data The initialization data for this contract.\n /// @return proxy The address of the proxy contract created.\n /// @dev If `_data` is non-empty, it is used in a delegate call to the `_implementation` contract. This will typically be an encoded function call initializing the proxy (see [OpenZeppelin ERC1967Proxy-constructor](https://docs.openzeppelin.com/contracts/4.x/api/proxy#ERC1967Proxy-constructor-address-bytes-)).\n function deployUUPSProxy(bytes memory _data) external returns (address proxy) {\n proxy = IMPLEMENTATION.deployUUPSProxy(_data);\n emit ProxyCreated({proxy: proxy});\n }\n\n /// @notice Creates an [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167) minimal proxy contract pointing to the pre-set logic contract.\n /// @param _data The initialization data for this contract.\n /// @return proxy The address of the proxy contract created.\n /// @dev If `_data` is non-empty, it is used in a call to the clone contract. This will typically be an encoded function call initializing the storage of the contract.\n function deployMinimalProxy(bytes memory _data) external returns (address proxy) {\n proxy = IMPLEMENTATION.deployMinimalProxy(_data);\n emit ProxyCreated({proxy: proxy});\n }\n\n /// @notice Returns the implementation contract address.\n /// @return The address of the implementation contract.\n /// @dev The implementation can be cloned via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)), or proxied via the UUPS proxy pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\n function implementation() public view returns (address) {\n return IMPLEMENTATION;\n }\n}\n"},"src/utils/deployment/ProxyLib.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\nimport {ERC1967Proxy} from \"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol\";\nimport {Clones} from \"@openzeppelin/contracts/proxy/Clones.sol\";\nimport {Address} from \"@openzeppelin/contracts/utils/Address.sol\";\n\n/// @title ProxyLib\n/// @author Aragon X - 2024\n/// @notice A library containing methods for the deployment of proxies via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)) and minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)).\n/// @custom:security-contact sirt@aragon.org\nlibrary ProxyLib {\n using Address for address;\n using Clones for address;\n\n /// @notice Creates an [ERC-1967](https://eips.ethereum.org/EIPS/eip-1967) UUPS proxy contract pointing to a logic contract and allows to immediately initialize it.\n /// @param _logic The logic contract the proxy is pointing to.\n /// @param _initCalldata The initialization data for this contract.\n /// @return uupsProxy The address of the UUPS proxy contract created.\n /// @dev If `_initCalldata` is non-empty, it is used in a delegate call to the `_logic` contract. This will typically be an encoded function call initializing the storage of the proxy (see [OpenZeppelin ERC1967Proxy-constructor](https://docs.openzeppelin.com/contracts/4.x/api/proxy#ERC1967Proxy-constructor-address-bytes-)).\n function deployUUPSProxy(\n address _logic,\n bytes memory _initCalldata\n ) internal returns (address uupsProxy) {\n uupsProxy = address(new ERC1967Proxy({_logic: _logic, _data: _initCalldata}));\n }\n\n /// @notice Creates an [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167) minimal proxy contract, also known as clones, pointing to a logic contract and allows to immediately initialize it.\n /// @param _logic The logic contract the proxy is pointing to.\n /// @param _initCalldata The initialization data for this contract.\n /// @return minimalProxy The address of the minimal proxy contract created.\n /// @dev If `_initCalldata` is non-empty, it is used in a call to the clone contract. This will typically be an encoded function call initializing the storage of the contract.\n function deployMinimalProxy(\n address _logic,\n bytes memory _initCalldata\n ) internal returns (address minimalProxy) {\n minimalProxy = _logic.clone();\n if (_initCalldata.length > 0) {\n minimalProxy.functionCall({data: _initCalldata});\n }\n }\n}\n"},"src/utils/math/BitMap.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\n/// @param bitmap The `uint256` representation of bits.\n/// @param index The index number to check whether 1 or 0 is set.\n/// @return Returns `true` if the bit is set at `index` on `bitmap`.\n/// @custom:security-contact sirt@aragon.org\nfunction hasBit(uint256 bitmap, uint8 index) pure returns (bool) {\n uint256 bitValue = bitmap & (1 << index);\n return bitValue > 0;\n}\n\n/// @param bitmap The `uint256` representation of bits.\n/// @param index The index number to set the bit.\n/// @return Returns a new number in which the bit is set at `index`.\n/// @custom:security-contact sirt@aragon.org\nfunction flipBit(uint256 bitmap, uint8 index) pure returns (uint256) {\n return bitmap ^ (1 << index);\n}\n"},"src/utils/math/Ratio.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\n// The base value to encode real-valued ratios on the interval `[0,1]` as integers on the interval `[0, 10**6]`.\nuint256 constant RATIO_BASE = 10 ** 6;\n\n/// @notice Thrown if a ratio value exceeds the maximal value of `10**6`.\n/// @param limit The maximal value.\n/// @param actual The actual value.\nerror RatioOutOfBounds(uint256 limit, uint256 actual);\n\n/// @notice Applies a ratio to a value and ceils the remainder.\n/// @param _value The value to which the ratio is applied.\n/// @param _ratio The ratio that must be in the interval `[0, 10**6]`.\n/// @return result The resulting value.\n/// @custom:security-contact sirt@aragon.org\nfunction _applyRatioCeiled(uint256 _value, uint256 _ratio) pure returns (uint256 result) {\n if (_ratio > RATIO_BASE) {\n revert RatioOutOfBounds({limit: RATIO_BASE, actual: _ratio});\n }\n\n _value = _value * _ratio;\n uint256 remainder = _value % RATIO_BASE;\n result = _value / RATIO_BASE;\n\n // Check if ceiling is needed\n if (remainder != 0) {\n ++result;\n }\n}\n"},"src/utils/math/UncheckedMath.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\n/// @notice Adds two unsigned integers without checking the result for overflow errors (using safe math).\n/// @param a The first summand.\n/// @param b The second summand.\n/// @return The sum.\n/// @custom:security-contact sirt@aragon.org\nfunction _uncheckedAdd(uint256 a, uint256 b) pure returns (uint256) {\n unchecked {\n return a + b;\n }\n}\n\n/// @notice Subtracts two unsigned integers without checking the result for overflow errors (using safe math).\n/// @param a The minuend.\n/// @param b The subtrahend.\n/// @return The difference.\n/// @custom:security-contact sirt@aragon.org\nfunction _uncheckedSub(uint256 a, uint256 b) pure returns (uint256) {\n unchecked {\n return a - b;\n }\n}\n"},"src/utils/versioning/IProtocolVersion.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\n/// @title IProtocolVersion\n/// @author Aragon X - 2022-2023\n/// @notice An interface defining the semantic Aragon OSx protocol version number.\n/// @custom:security-contact sirt@aragon.org\ninterface IProtocolVersion {\n /// @notice Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\n /// @return _version Returns the semantic Aragon OSx protocol version number.\n /// @dev This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\n function protocolVersion() external view returns (uint8[3] memory _version);\n}\n"},"src/utils/versioning/ProtocolVersion.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\nimport {IProtocolVersion} from \"./IProtocolVersion.sol\";\n\n/// @title ProtocolVersion\n/// @author Aragon X - 2023\n/// @notice An abstract, stateless, non-upgradeable contract providing the current Aragon OSx protocol version number.\n/// @dev Do not add any new variables to this contract that would shift down storage in the inheritance chain.\n/// @custom:security-contact sirt@aragon.org\nabstract contract ProtocolVersion is IProtocolVersion {\n // IMPORTANT: Do not add any storage variable, see the above notice.\n\n /// @inheritdoc IProtocolVersion\n function protocolVersion() public pure returns (uint8[3] memory) {\n return [1, 4, 0];\n }\n}\n"},"src/utils/versioning/VersionComparisonLib.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\n/// @title VersionComparisonLib\n/// @author Aragon X - 2023\n/// @notice A library containing methods for [semantic version number](https://semver.org/spec/v2.0.0.html) comparison.\n/// @custom:security-contact sirt@aragon.org\nlibrary VersionComparisonLib {\n /// @notice Equality comparator for two semantic version numbers.\n /// @param lhs The left-hand side semantic version number.\n /// @param rhs The right-hand side semantic version number.\n /// @return Whether the two numbers are equal or not.\n function eq(uint8[3] memory lhs, uint8[3] memory rhs) internal pure returns (bool) {\n if (lhs[0] != rhs[0]) return false;\n\n if (lhs[1] != rhs[1]) return false;\n\n if (lhs[2] != rhs[2]) return false;\n\n return true;\n }\n\n /// @notice Inequality comparator for two semantic version numbers.\n /// @param lhs The left-hand side semantic version number.\n /// @param rhs The right-hand side semantic version number.\n /// @return Whether the two numbers are inequal or not.\n function neq(uint8[3] memory lhs, uint8[3] memory rhs) internal pure returns (bool) {\n if (lhs[0] != rhs[0]) return true;\n\n if (lhs[1] != rhs[1]) return true;\n\n if (lhs[2] != rhs[2]) return true;\n\n return false;\n }\n\n /// @notice Less than comparator for two semantic version numbers.\n /// @param lhs The left-hand side semantic version number.\n /// @param rhs The right-hand side semantic version number.\n /// @return Whether the first number is less than the second number or not.\n function lt(uint8[3] memory lhs, uint8[3] memory rhs) internal pure returns (bool) {\n if (lhs[0] < rhs[0]) return true;\n if (lhs[0] > rhs[0]) return false;\n\n if (lhs[1] < rhs[1]) return true;\n if (lhs[1] > rhs[1]) return false;\n\n if (lhs[2] < rhs[2]) return true;\n\n return false;\n }\n\n /// @notice Less than or equal to comparator for two semantic version numbers.\n /// @param lhs The left-hand side semantic version number.\n /// @param rhs The right-hand side semantic version number.\n /// @return Whether the first number is less than or equal to the second number or not.\n function lte(uint8[3] memory lhs, uint8[3] memory rhs) internal pure returns (bool) {\n if (lhs[0] < rhs[0]) return true;\n if (lhs[0] > rhs[0]) return false;\n\n if (lhs[1] < rhs[1]) return true;\n if (lhs[1] > rhs[1]) return false;\n\n if (lhs[2] <= rhs[2]) return true;\n\n return false;\n }\n\n /// @notice Greater than comparator for two semantic version numbers.\n /// @param lhs The left-hand side semantic version number.\n /// @param rhs The right-hand side semantic version number.\n /// @return Whether the first number is greater than the second number or not.\n function gt(uint8[3] memory lhs, uint8[3] memory rhs) internal pure returns (bool) {\n if (lhs[0] > rhs[0]) return true;\n if (lhs[0] < rhs[0]) return false;\n\n if (lhs[1] > rhs[1]) return true;\n if (lhs[1] < rhs[1]) return false;\n\n if (lhs[2] > rhs[2]) return true;\n\n return false;\n }\n\n /// @notice Greater than or equal to comparator for two semantic version numbers.\n /// @param lhs The left-hand side semantic version number.\n /// @param rhs The right-hand side semantic version number.\n /// @return Whether the first number is greater than or equal to the second number or not.\n function gte(uint8[3] memory lhs, uint8[3] memory rhs) internal pure returns (bool) {\n if (lhs[0] > rhs[0]) return true;\n if (lhs[0] < rhs[0]) return false;\n\n if (lhs[1] > rhs[1]) return true;\n if (lhs[1] < rhs[1]) return false;\n\n if (lhs[2] >= rhs[2]) return true;\n\n return false;\n }\n}\n"}},"settings":{"metadata":{"bytecodeHash":"none","useLiteralContent":true},"optimizer":{"enabled":true,"runs":800},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata","storageLayout","devdoc","userdoc","evm.gasEstimates"],"":["ast"]}}}},"output":{"sources":{"@openzeppelin/contracts-upgradeable/interfaces/IERC1967Upgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/interfaces/IERC1967Upgradeable.sol","exportedSymbols":{"IERC1967Upgradeable":[20]},"id":21,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"107:23:0"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC1967Upgradeable","contractDependencies":[],"contractKind":"interface","documentation":{"id":2,"nodeType":"StructuredDocumentation","src":"132:133:0","text":" @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\n _Available since v4.8.3._"},"fullyImplemented":true,"id":20,"linearizedBaseContracts":[20],"name":"IERC1967Upgradeable","nameLocation":"276:19:0","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":3,"nodeType":"StructuredDocumentation","src":"302:68:0","text":" @dev Emitted when the implementation is upgraded."},"eventSelector":"bc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","id":7,"name":"Upgraded","nameLocation":"381:8:0","nodeType":"EventDefinition","parameters":{"id":6,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5,"indexed":true,"mutability":"mutable","name":"implementation","nameLocation":"406:14:0","nodeType":"VariableDeclaration","scope":7,"src":"390:30:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4,"name":"address","nodeType":"ElementaryTypeName","src":"390:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"389:32:0"},"src":"375:47:0"},{"anonymous":false,"documentation":{"id":8,"nodeType":"StructuredDocumentation","src":"428:67:0","text":" @dev Emitted when the admin account has changed."},"eventSelector":"7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f","id":14,"name":"AdminChanged","nameLocation":"506:12:0","nodeType":"EventDefinition","parameters":{"id":13,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10,"indexed":false,"mutability":"mutable","name":"previousAdmin","nameLocation":"527:13:0","nodeType":"VariableDeclaration","scope":14,"src":"519:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9,"name":"address","nodeType":"ElementaryTypeName","src":"519:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12,"indexed":false,"mutability":"mutable","name":"newAdmin","nameLocation":"550:8:0","nodeType":"VariableDeclaration","scope":14,"src":"542:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11,"name":"address","nodeType":"ElementaryTypeName","src":"542:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"518:41:0"},"src":"500:60:0"},{"anonymous":false,"documentation":{"id":15,"nodeType":"StructuredDocumentation","src":"566:59:0","text":" @dev Emitted when the beacon is changed."},"eventSelector":"1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e","id":19,"name":"BeaconUpgraded","nameLocation":"636:14:0","nodeType":"EventDefinition","parameters":{"id":18,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17,"indexed":true,"mutability":"mutable","name":"beacon","nameLocation":"667:6:0","nodeType":"VariableDeclaration","scope":19,"src":"651:22:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16,"name":"address","nodeType":"ElementaryTypeName","src":"651:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"650:24:0"},"src":"630:45:0"}],"scope":21,"src":"266:411:0","usedErrors":[]}],"src":"107:571:0"},"id":0},"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol","exportedSymbols":{"IERC1822ProxiableUpgradeable":[30]},"id":31,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":22,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"113:23:1"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC1822ProxiableUpgradeable","contractDependencies":[],"contractKind":"interface","documentation":{"id":23,"nodeType":"StructuredDocumentation","src":"138:203:1","text":" @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\n proxy whose upgrades are fully controlled by the current implementation."},"fullyImplemented":false,"id":30,"linearizedBaseContracts":[30],"name":"IERC1822ProxiableUpgradeable","nameLocation":"352:28:1","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":24,"nodeType":"StructuredDocumentation","src":"387:438:1","text":" @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\n address.\n IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\n bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\n function revert if invoked through a proxy."},"functionSelector":"52d1902d","id":29,"implemented":false,"kind":"function","modifiers":[],"name":"proxiableUUID","nameLocation":"839:13:1","nodeType":"FunctionDefinition","parameters":{"id":25,"nodeType":"ParameterList","parameters":[],"src":"852:2:1"},"returnParameters":{"id":28,"nodeType":"ParameterList","parameters":[{"constant":false,"id":27,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":29,"src":"878:7:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":26,"name":"bytes32","nodeType":"ElementaryTypeName","src":"878:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"877:9:1"},"scope":30,"src":"830:57:1","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":31,"src":"342:547:1","usedErrors":[]}],"src":"113:777:1"},"id":1},"@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol","exportedSymbols":{"AddressUpgradeable":[1001],"ERC1967UpgradeUpgradeable":[355],"IBeaconUpgradeable":[365],"IERC1822ProxiableUpgradeable":[30],"IERC1967Upgradeable":[20],"Initializable":[534],"StorageSlotUpgradeable":[2777]},"id":356,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":32,"literals":["solidity","^","0.8",".2"],"nodeType":"PragmaDirective","src":"116:23:2"},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.sol","file":"../beacon/IBeaconUpgradeable.sol","id":33,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":356,"sourceUnit":366,"src":"141:42:2","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/interfaces/IERC1967Upgradeable.sol","file":"../../interfaces/IERC1967Upgradeable.sol","id":34,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":356,"sourceUnit":21,"src":"184:50:2","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol","file":"../../interfaces/draft-IERC1822Upgradeable.sol","id":35,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":356,"sourceUnit":31,"src":"235:56:2","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol","file":"../../utils/AddressUpgradeable.sol","id":36,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":356,"sourceUnit":1002,"src":"292:44:2","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol","file":"../../utils/StorageSlotUpgradeable.sol","id":37,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":356,"sourceUnit":2778,"src":"337:48:2","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","file":"../utils/Initializable.sol","id":39,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":356,"sourceUnit":535,"src":"386:57:2","symbolAliases":[{"foreign":{"id":38,"name":"Initializable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":534,"src":"394:13:2","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":41,"name":"Initializable","nameLocations":["677:13:2"],"nodeType":"IdentifierPath","referencedDeclaration":534,"src":"677:13:2"},"id":42,"nodeType":"InheritanceSpecifier","src":"677:13:2"},{"baseName":{"id":43,"name":"IERC1967Upgradeable","nameLocations":["692:19:2"],"nodeType":"IdentifierPath","referencedDeclaration":20,"src":"692:19:2"},"id":44,"nodeType":"InheritanceSpecifier","src":"692:19:2"}],"canonicalName":"ERC1967UpgradeUpgradeable","contractDependencies":[],"contractKind":"contract","documentation":{"id":40,"nodeType":"StructuredDocumentation","src":"445:184:2","text":" @dev This abstract contract provides getters and event emitting update functions for\n https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\n _Available since v4.1._"},"fullyImplemented":true,"id":355,"linearizedBaseContracts":[355,20,534],"name":"ERC1967UpgradeUpgradeable","nameLocation":"648:25:2","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":47,"mutability":"constant","name":"_ROLLBACK_SLOT","nameLocation":"822:14:2","nodeType":"VariableDeclaration","scope":355,"src":"797:108:2","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":45,"name":"bytes32","nodeType":"ElementaryTypeName","src":"797:7:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307834393130666466613136666564333236306564306537313437663763633664613131613630323038623562393430366431326136333536313466666439313433","id":46,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"839:66:2","typeDescriptions":{"typeIdentifier":"t_rational_33048860383849004559742813297059419343339852917517107368639918720169455489347_by_1","typeString":"int_const 3304...(69 digits omitted)...9347"},"value":"0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143"},"visibility":"private"},{"constant":true,"documentation":{"id":48,"nodeType":"StructuredDocumentation","src":"912:214:2","text":" @dev Storage slot with the address of the current implementation.\n This is the keccak-256 hash of \"eip1967.proxy.implementation\" subtracted by 1, and is\n validated in the constructor."},"id":51,"mutability":"constant","name":"_IMPLEMENTATION_SLOT","nameLocation":"1157:20:2","nodeType":"VariableDeclaration","scope":355,"src":"1131:115:2","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":49,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1131:7:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307833363038393461313362613161333231303636376338323834393264623938646361336532303736636333373335613932306133636135303564333832626263","id":50,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1180:66:2","typeDescriptions":{"typeIdentifier":"t_rational_24440054405305269366569402256811496959409073762505157381672968839269610695612_by_1","typeString":"int_const 2444...(69 digits omitted)...5612"},"value":"0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc"},"visibility":"internal"},{"body":{"id":56,"nodeType":"Block","src":"1312:7:2","statements":[]},"id":57,"implemented":true,"kind":"function","modifiers":[{"id":54,"kind":"modifierInvocation","modifierName":{"id":53,"name":"onlyInitializing","nameLocations":["1295:16:2"],"nodeType":"IdentifierPath","referencedDeclaration":479,"src":"1295:16:2"},"nodeType":"ModifierInvocation","src":"1295:16:2"}],"name":"__ERC1967Upgrade_init","nameLocation":"1262:21:2","nodeType":"FunctionDefinition","parameters":{"id":52,"nodeType":"ParameterList","parameters":[],"src":"1283:2:2"},"returnParameters":{"id":55,"nodeType":"ParameterList","parameters":[],"src":"1312:0:2"},"scope":355,"src":"1253:66:2","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":62,"nodeType":"Block","src":"1394:7:2","statements":[]},"id":63,"implemented":true,"kind":"function","modifiers":[{"id":60,"kind":"modifierInvocation","modifierName":{"id":59,"name":"onlyInitializing","nameLocations":["1377:16:2"],"nodeType":"IdentifierPath","referencedDeclaration":479,"src":"1377:16:2"},"nodeType":"ModifierInvocation","src":"1377:16:2"}],"name":"__ERC1967Upgrade_init_unchained","nameLocation":"1334:31:2","nodeType":"FunctionDefinition","parameters":{"id":58,"nodeType":"ParameterList","parameters":[],"src":"1365:2:2"},"returnParameters":{"id":61,"nodeType":"ParameterList","parameters":[],"src":"1394:0:2"},"scope":355,"src":"1325:76:2","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":75,"nodeType":"Block","src":"1540:89:2","statements":[{"expression":{"expression":{"arguments":[{"id":71,"name":"_IMPLEMENTATION_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51,"src":"1595:20:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":69,"name":"StorageSlotUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2777,"src":"1557:22:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlotUpgradeable_$2777_$","typeString":"type(library StorageSlotUpgradeable)"}},"id":70,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1580:14:2","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":2699,"src":"1557:37:2","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$2673_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlotUpgradeable.AddressSlot storage pointer)"}},"id":72,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1557:59:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$2673_storage_ptr","typeString":"struct StorageSlotUpgradeable.AddressSlot storage pointer"}},"id":73,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1617:5:2","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":2672,"src":"1557:65:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":68,"id":74,"nodeType":"Return","src":"1550:72:2"}]},"documentation":{"id":64,"nodeType":"StructuredDocumentation","src":"1406:67:2","text":" @dev Returns the current implementation address."},"id":76,"implemented":true,"kind":"function","modifiers":[],"name":"_getImplementation","nameLocation":"1487:18:2","nodeType":"FunctionDefinition","parameters":{"id":65,"nodeType":"ParameterList","parameters":[],"src":"1505:2:2"},"returnParameters":{"id":68,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":76,"src":"1531:7:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":66,"name":"address","nodeType":"ElementaryTypeName","src":"1531:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1530:9:2"},"scope":355,"src":"1478:151:2","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":99,"nodeType":"Block","src":"1783:218:2","statements":[{"expression":{"arguments":[{"arguments":[{"id":85,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79,"src":"1831:17:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":83,"name":"AddressUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1001,"src":"1801:18:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AddressUpgradeable_$1001_$","typeString":"type(library AddressUpgradeable)"}},"id":84,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1820:10:2","memberName":"isContract","nodeType":"MemberAccess","referencedDeclaration":689,"src":"1801:29:2","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":86,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1801:48:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"455243313936373a206e657720696d706c656d656e746174696f6e206973206e6f74206120636f6e7472616374","id":87,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1851:47:2","typeDescriptions":{"typeIdentifier":"t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65","typeString":"literal_string \"ERC1967: new implementation is not a contract\""},"value":"ERC1967: new implementation is not a contract"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65","typeString":"literal_string \"ERC1967: new implementation is not a contract\""}],"id":82,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"1793:7:2","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":88,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1793:106:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":89,"nodeType":"ExpressionStatement","src":"1793:106:2"},{"expression":{"id":97,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[{"id":93,"name":"_IMPLEMENTATION_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51,"src":"1947:20:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":90,"name":"StorageSlotUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2777,"src":"1909:22:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlotUpgradeable_$2777_$","typeString":"type(library StorageSlotUpgradeable)"}},"id":92,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1932:14:2","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":2699,"src":"1909:37:2","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$2673_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlotUpgradeable.AddressSlot storage pointer)"}},"id":94,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1909:59:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$2673_storage_ptr","typeString":"struct StorageSlotUpgradeable.AddressSlot storage pointer"}},"id":95,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1969:5:2","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":2672,"src":"1909:65:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":96,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79,"src":"1977:17:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1909:85:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":98,"nodeType":"ExpressionStatement","src":"1909:85:2"}]},"documentation":{"id":77,"nodeType":"StructuredDocumentation","src":"1635:80:2","text":" @dev Stores a new address in the EIP1967 implementation slot."},"id":100,"implemented":true,"kind":"function","modifiers":[],"name":"_setImplementation","nameLocation":"1729:18:2","nodeType":"FunctionDefinition","parameters":{"id":80,"nodeType":"ParameterList","parameters":[{"constant":false,"id":79,"mutability":"mutable","name":"newImplementation","nameLocation":"1756:17:2","nodeType":"VariableDeclaration","scope":100,"src":"1748:25:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":78,"name":"address","nodeType":"ElementaryTypeName","src":"1748:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1747:27:2"},"returnParameters":{"id":81,"nodeType":"ParameterList","parameters":[],"src":"1783:0:2"},"scope":355,"src":"1720:281:2","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":114,"nodeType":"Block","src":"2163:96:2","statements":[{"expression":{"arguments":[{"id":107,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":103,"src":"2192:17:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":106,"name":"_setImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":100,"src":"2173:18:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":108,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2173:37:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":109,"nodeType":"ExpressionStatement","src":"2173:37:2"},{"eventCall":{"arguments":[{"id":111,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":103,"src":"2234:17:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":110,"name":"Upgraded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7,"src":"2225:8:2","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":112,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2225:27:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":113,"nodeType":"EmitStatement","src":"2220:32:2"}]},"documentation":{"id":101,"nodeType":"StructuredDocumentation","src":"2007:95:2","text":" @dev Perform implementation upgrade\n Emits an {Upgraded} event."},"id":115,"implemented":true,"kind":"function","modifiers":[],"name":"_upgradeTo","nameLocation":"2116:10:2","nodeType":"FunctionDefinition","parameters":{"id":104,"nodeType":"ParameterList","parameters":[{"constant":false,"id":103,"mutability":"mutable","name":"newImplementation","nameLocation":"2135:17:2","nodeType":"VariableDeclaration","scope":115,"src":"2127:25:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":102,"name":"address","nodeType":"ElementaryTypeName","src":"2127:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2126:27:2"},"returnParameters":{"id":105,"nodeType":"ParameterList","parameters":[],"src":"2163:0:2"},"scope":355,"src":"2107:152:2","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":144,"nodeType":"Block","src":"2491:178:2","statements":[{"expression":{"arguments":[{"id":126,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":118,"src":"2512:17:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":125,"name":"_upgradeTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":115,"src":"2501:10:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":127,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2501:29:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":128,"nodeType":"ExpressionStatement","src":"2501:29:2"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":134,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":132,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":129,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120,"src":"2544:4:2","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":130,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2549:6:2","memberName":"length","nodeType":"MemberAccess","src":"2544:11:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":131,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2558:1:2","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2544:15:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"id":133,"name":"forceCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":122,"src":"2563:9:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2544:28:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":143,"nodeType":"IfStatement","src":"2540:123:2","trueBody":{"id":142,"nodeType":"Block","src":"2574:89:2","statements":[{"expression":{"arguments":[{"id":138,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":118,"src":"2628:17:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":139,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120,"src":"2647:4:2","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":135,"name":"AddressUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1001,"src":"2588:18:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AddressUpgradeable_$1001_$","typeString":"type(library AddressUpgradeable)"}},"id":137,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2607:20:2","memberName":"functionDelegateCall","nodeType":"MemberAccess","referencedDeclaration":888,"src":"2588:39:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory) returns (bytes memory)"}},"id":140,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2588:64:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":141,"nodeType":"ExpressionStatement","src":"2588:64:2"}]}}]},"documentation":{"id":116,"nodeType":"StructuredDocumentation","src":"2265:123:2","text":" @dev Perform implementation upgrade with additional setup call.\n Emits an {Upgraded} event."},"id":145,"implemented":true,"kind":"function","modifiers":[],"name":"_upgradeToAndCall","nameLocation":"2402:17:2","nodeType":"FunctionDefinition","parameters":{"id":123,"nodeType":"ParameterList","parameters":[{"constant":false,"id":118,"mutability":"mutable","name":"newImplementation","nameLocation":"2428:17:2","nodeType":"VariableDeclaration","scope":145,"src":"2420:25:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":117,"name":"address","nodeType":"ElementaryTypeName","src":"2420:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120,"mutability":"mutable","name":"data","nameLocation":"2460:4:2","nodeType":"VariableDeclaration","scope":145,"src":"2447:17:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":119,"name":"bytes","nodeType":"ElementaryTypeName","src":"2447:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":122,"mutability":"mutable","name":"forceCall","nameLocation":"2471:9:2","nodeType":"VariableDeclaration","scope":145,"src":"2466:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":121,"name":"bool","nodeType":"ElementaryTypeName","src":"2466:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2419:62:2"},"returnParameters":{"id":124,"nodeType":"ParameterList","parameters":[],"src":"2491:0:2"},"scope":355,"src":"2393:276:2","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":197,"nodeType":"Block","src":"2943:842:2","statements":[{"condition":{"expression":{"arguments":[{"id":157,"name":"_ROLLBACK_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47,"src":"3295:14:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":155,"name":"StorageSlotUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2777,"src":"3257:22:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlotUpgradeable_$2777_$","typeString":"type(library StorageSlotUpgradeable)"}},"id":156,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3280:14:2","memberName":"getBooleanSlot","nodeType":"MemberAccess","referencedDeclaration":2710,"src":"3257:37:2","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_BooleanSlot_$2676_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlotUpgradeable.BooleanSlot storage pointer)"}},"id":158,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3257:53:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_BooleanSlot_$2676_storage_ptr","typeString":"struct StorageSlotUpgradeable.BooleanSlot storage pointer"}},"id":159,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3311:5:2","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":2675,"src":"3257:59:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":195,"nodeType":"Block","src":"3386:393:2","statements":[{"clauses":[{"block":{"id":180,"nodeType":"Block","src":"3491:115:2","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":176,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":174,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":171,"src":"3517:4:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":175,"name":"_IMPLEMENTATION_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51,"src":"3525:20:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"3517:28:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"45524331393637557067726164653a20756e737570706f727465642070726f786961626c6555554944","id":177,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3547:43:2","typeDescriptions":{"typeIdentifier":"t_stringliteral_76b6b6debfc5febf101145a79ecf0b0d2e89e397dfdab2bca99888370411152c","typeString":"literal_string \"ERC1967Upgrade: unsupported proxiableUUID\""},"value":"ERC1967Upgrade: unsupported proxiableUUID"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_76b6b6debfc5febf101145a79ecf0b0d2e89e397dfdab2bca99888370411152c","typeString":"literal_string \"ERC1967Upgrade: unsupported proxiableUUID\""}],"id":173,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"3509:7:2","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":178,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3509:82:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":179,"nodeType":"ExpressionStatement","src":"3509:82:2"}]},"errorName":"","id":181,"nodeType":"TryCatchClause","parameters":{"id":172,"nodeType":"ParameterList","parameters":[{"constant":false,"id":171,"mutability":"mutable","name":"slot","nameLocation":"3485:4:2","nodeType":"VariableDeclaration","scope":181,"src":"3477:12:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":170,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3477:7:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3476:14:2"},"src":"3468:138:2"},{"block":{"id":186,"nodeType":"Block","src":"3613:89:2","statements":[{"expression":{"arguments":[{"hexValue":"45524331393637557067726164653a206e657720696d706c656d656e746174696f6e206973206e6f742055555053","id":183,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3638:48:2","typeDescriptions":{"typeIdentifier":"t_stringliteral_8e8e2fbcb586f700b5b14e2c4a650c8d83b9773c31c5fe8962070ea544e11f24","typeString":"literal_string \"ERC1967Upgrade: new implementation is not UUPS\""},"value":"ERC1967Upgrade: new implementation is not UUPS"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_8e8e2fbcb586f700b5b14e2c4a650c8d83b9773c31c5fe8962070ea544e11f24","typeString":"literal_string \"ERC1967Upgrade: new implementation is not UUPS\""}],"id":182,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[4294967277,4294967277],"referencedDeclaration":4294967277,"src":"3631:6:2","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":184,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3631:56:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":185,"nodeType":"ExpressionStatement","src":"3631:56:2"}]},"errorName":"","id":187,"nodeType":"TryCatchClause","src":"3607:95:2"}],"externalCall":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":166,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":148,"src":"3433:17:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":165,"name":"IERC1822ProxiableUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30,"src":"3404:28:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC1822ProxiableUpgradeable_$30_$","typeString":"type(contract IERC1822ProxiableUpgradeable)"}},"id":167,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3404:47:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC1822ProxiableUpgradeable_$30","typeString":"contract IERC1822ProxiableUpgradeable"}},"id":168,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3452:13:2","memberName":"proxiableUUID","nodeType":"MemberAccess","referencedDeclaration":29,"src":"3404:61:2","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_bytes32_$","typeString":"function () view external returns (bytes32)"}},"id":169,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3404:63:2","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":188,"nodeType":"TryStatement","src":"3400:302:2"},{"expression":{"arguments":[{"id":190,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":148,"src":"3733:17:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":191,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":150,"src":"3752:4:2","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":192,"name":"forceCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":152,"src":"3758:9:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":189,"name":"_upgradeToAndCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":145,"src":"3715:17:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_bool_$returns$__$","typeString":"function (address,bytes memory,bool)"}},"id":193,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3715:53:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":194,"nodeType":"ExpressionStatement","src":"3715:53:2"}]},"id":196,"nodeType":"IfStatement","src":"3253:526:2","trueBody":{"id":164,"nodeType":"Block","src":"3318:62:2","statements":[{"expression":{"arguments":[{"id":161,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":148,"src":"3351:17:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":160,"name":"_setImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":100,"src":"3332:18:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":162,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3332:37:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":163,"nodeType":"ExpressionStatement","src":"3332:37:2"}]}}]},"documentation":{"id":146,"nodeType":"StructuredDocumentation","src":"2675:161:2","text":" @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\n Emits an {Upgraded} event."},"id":198,"implemented":true,"kind":"function","modifiers":[],"name":"_upgradeToAndCallUUPS","nameLocation":"2850:21:2","nodeType":"FunctionDefinition","parameters":{"id":153,"nodeType":"ParameterList","parameters":[{"constant":false,"id":148,"mutability":"mutable","name":"newImplementation","nameLocation":"2880:17:2","nodeType":"VariableDeclaration","scope":198,"src":"2872:25:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":147,"name":"address","nodeType":"ElementaryTypeName","src":"2872:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":150,"mutability":"mutable","name":"data","nameLocation":"2912:4:2","nodeType":"VariableDeclaration","scope":198,"src":"2899:17:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":149,"name":"bytes","nodeType":"ElementaryTypeName","src":"2899:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":152,"mutability":"mutable","name":"forceCall","nameLocation":"2923:9:2","nodeType":"VariableDeclaration","scope":198,"src":"2918:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":151,"name":"bool","nodeType":"ElementaryTypeName","src":"2918:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2871:62:2"},"returnParameters":{"id":154,"nodeType":"ParameterList","parameters":[],"src":"2943:0:2"},"scope":355,"src":"2841:944:2","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"constant":true,"documentation":{"id":199,"nodeType":"StructuredDocumentation","src":"3791:189:2","text":" @dev Storage slot with the admin of the contract.\n This is the keccak-256 hash of \"eip1967.proxy.admin\" subtracted by 1, and is\n validated in the constructor."},"id":202,"mutability":"constant","name":"_ADMIN_SLOT","nameLocation":"4011:11:2","nodeType":"VariableDeclaration","scope":355,"src":"3985:106:2","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":200,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3985:7:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307862353331323736383461353638623331373361653133623966386136303136653234336536336236653865653131373864366137313738353062356436313033","id":201,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4025:66:2","typeDescriptions":{"typeIdentifier":"t_rational_81955473079516046949633743016697847541294818689821282749996681496272635257091_by_1","typeString":"int_const 8195...(69 digits omitted)...7091"},"value":"0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103"},"visibility":"internal"},{"body":{"id":214,"nodeType":"Block","src":"4206:80:2","statements":[{"expression":{"expression":{"arguments":[{"id":210,"name":"_ADMIN_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":202,"src":"4261:11:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":208,"name":"StorageSlotUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2777,"src":"4223:22:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlotUpgradeable_$2777_$","typeString":"type(library StorageSlotUpgradeable)"}},"id":209,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4246:14:2","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":2699,"src":"4223:37:2","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$2673_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlotUpgradeable.AddressSlot storage pointer)"}},"id":211,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4223:50:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$2673_storage_ptr","typeString":"struct StorageSlotUpgradeable.AddressSlot storage pointer"}},"id":212,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4274:5:2","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":2672,"src":"4223:56:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":207,"id":213,"nodeType":"Return","src":"4216:63:2"}]},"documentation":{"id":203,"nodeType":"StructuredDocumentation","src":"4098:50:2","text":" @dev Returns the current admin."},"id":215,"implemented":true,"kind":"function","modifiers":[],"name":"_getAdmin","nameLocation":"4162:9:2","nodeType":"FunctionDefinition","parameters":{"id":204,"nodeType":"ParameterList","parameters":[],"src":"4171:2:2"},"returnParameters":{"id":207,"nodeType":"ParameterList","parameters":[{"constant":false,"id":206,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":215,"src":"4197:7:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":205,"name":"address","nodeType":"ElementaryTypeName","src":"4197:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4196:9:2"},"scope":355,"src":"4153:133:2","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":240,"nodeType":"Block","src":"4413:167:2","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":227,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":222,"name":"newAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":218,"src":"4431:8:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":225,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4451:1:2","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":224,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4443:7:2","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":223,"name":"address","nodeType":"ElementaryTypeName","src":"4443:7:2","typeDescriptions":{}}},"id":226,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4443:10:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4431:22:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"455243313936373a206e65772061646d696e20697320746865207a65726f2061646472657373","id":228,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4455:40:2","typeDescriptions":{"typeIdentifier":"t_stringliteral_3820e16891102c1360a787e6e648431097d92537f969d458f5c94b56f8318be5","typeString":"literal_string \"ERC1967: new admin is the zero address\""},"value":"ERC1967: new admin is the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_3820e16891102c1360a787e6e648431097d92537f969d458f5c94b56f8318be5","typeString":"literal_string \"ERC1967: new admin is the zero address\""}],"id":221,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"4423:7:2","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":229,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4423:73:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":230,"nodeType":"ExpressionStatement","src":"4423:73:2"},{"expression":{"id":238,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[{"id":234,"name":"_ADMIN_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":202,"src":"4544:11:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":231,"name":"StorageSlotUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2777,"src":"4506:22:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlotUpgradeable_$2777_$","typeString":"type(library StorageSlotUpgradeable)"}},"id":233,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4529:14:2","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":2699,"src":"4506:37:2","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$2673_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlotUpgradeable.AddressSlot storage pointer)"}},"id":235,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4506:50:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$2673_storage_ptr","typeString":"struct StorageSlotUpgradeable.AddressSlot storage pointer"}},"id":236,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4557:5:2","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":2672,"src":"4506:56:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":237,"name":"newAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":218,"src":"4565:8:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4506:67:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":239,"nodeType":"ExpressionStatement","src":"4506:67:2"}]},"documentation":{"id":216,"nodeType":"StructuredDocumentation","src":"4292:71:2","text":" @dev Stores a new address in the EIP1967 admin slot."},"id":241,"implemented":true,"kind":"function","modifiers":[],"name":"_setAdmin","nameLocation":"4377:9:2","nodeType":"FunctionDefinition","parameters":{"id":219,"nodeType":"ParameterList","parameters":[{"constant":false,"id":218,"mutability":"mutable","name":"newAdmin","nameLocation":"4395:8:2","nodeType":"VariableDeclaration","scope":241,"src":"4387:16:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":217,"name":"address","nodeType":"ElementaryTypeName","src":"4387:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4386:18:2"},"returnParameters":{"id":220,"nodeType":"ParameterList","parameters":[],"src":"4413:0:2"},"scope":355,"src":"4368:212:2","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":257,"nodeType":"Block","src":"4740:86:2","statements":[{"eventCall":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":248,"name":"_getAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":215,"src":"4768:9:2","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":249,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4768:11:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":250,"name":"newAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":244,"src":"4781:8:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":247,"name":"AdminChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14,"src":"4755:12:2","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":251,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4755:35:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":252,"nodeType":"EmitStatement","src":"4750:40:2"},{"expression":{"arguments":[{"id":254,"name":"newAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":244,"src":"4810:8:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":253,"name":"_setAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":241,"src":"4800:9:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":255,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4800:19:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":256,"nodeType":"ExpressionStatement","src":"4800:19:2"}]},"documentation":{"id":242,"nodeType":"StructuredDocumentation","src":"4586:100:2","text":" @dev Changes the admin of the proxy.\n Emits an {AdminChanged} event."},"id":258,"implemented":true,"kind":"function","modifiers":[],"name":"_changeAdmin","nameLocation":"4700:12:2","nodeType":"FunctionDefinition","parameters":{"id":245,"nodeType":"ParameterList","parameters":[{"constant":false,"id":244,"mutability":"mutable","name":"newAdmin","nameLocation":"4721:8:2","nodeType":"VariableDeclaration","scope":258,"src":"4713:16:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":243,"name":"address","nodeType":"ElementaryTypeName","src":"4713:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4712:18:2"},"returnParameters":{"id":246,"nodeType":"ParameterList","parameters":[],"src":"4740:0:2"},"scope":355,"src":"4691:135:2","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"constant":true,"documentation":{"id":259,"nodeType":"StructuredDocumentation","src":"4832:232:2","text":" @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\n This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor."},"id":262,"mutability":"constant","name":"_BEACON_SLOT","nameLocation":"5095:12:2","nodeType":"VariableDeclaration","scope":355,"src":"5069:107:2","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":260,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5069:7:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307861336630616437346535343233616562666438306433656634333436353738333335613961373261656165653539666636636233353832623335313333643530","id":261,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5110:66:2","typeDescriptions":{"typeIdentifier":"t_rational_74152234768234802001998023604048924213078445070507226371336425913862612794704_by_1","typeString":"int_const 7415...(69 digits omitted)...4704"},"value":"0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50"},"visibility":"internal"},{"body":{"id":274,"nodeType":"Block","src":"5293:81:2","statements":[{"expression":{"expression":{"arguments":[{"id":270,"name":"_BEACON_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":262,"src":"5348:12:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":268,"name":"StorageSlotUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2777,"src":"5310:22:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlotUpgradeable_$2777_$","typeString":"type(library StorageSlotUpgradeable)"}},"id":269,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5333:14:2","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":2699,"src":"5310:37:2","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$2673_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlotUpgradeable.AddressSlot storage pointer)"}},"id":271,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5310:51:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$2673_storage_ptr","typeString":"struct StorageSlotUpgradeable.AddressSlot storage pointer"}},"id":272,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5362:5:2","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":2672,"src":"5310:57:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":267,"id":273,"nodeType":"Return","src":"5303:64:2"}]},"documentation":{"id":263,"nodeType":"StructuredDocumentation","src":"5183:51:2","text":" @dev Returns the current beacon."},"id":275,"implemented":true,"kind":"function","modifiers":[],"name":"_getBeacon","nameLocation":"5248:10:2","nodeType":"FunctionDefinition","parameters":{"id":264,"nodeType":"ParameterList","parameters":[],"src":"5258:2:2"},"returnParameters":{"id":267,"nodeType":"ParameterList","parameters":[{"constant":false,"id":266,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":275,"src":"5284:7:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":265,"name":"address","nodeType":"ElementaryTypeName","src":"5284:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5283:9:2"},"scope":355,"src":"5239:135:2","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":310,"nodeType":"Block","src":"5503:368:2","statements":[{"expression":{"arguments":[{"arguments":[{"id":284,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":278,"src":"5551:9:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":282,"name":"AddressUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1001,"src":"5521:18:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AddressUpgradeable_$1001_$","typeString":"type(library AddressUpgradeable)"}},"id":283,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5540:10:2","memberName":"isContract","nodeType":"MemberAccess","referencedDeclaration":689,"src":"5521:29:2","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":285,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5521:40:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"455243313936373a206e657720626561636f6e206973206e6f74206120636f6e7472616374","id":286,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5563:39:2","typeDescriptions":{"typeIdentifier":"t_stringliteral_9589b7809634e4928033de18bb696e9af4ef71b703652af5245f2dbebf2f4470","typeString":"literal_string \"ERC1967: new beacon is not a contract\""},"value":"ERC1967: new beacon is not a contract"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9589b7809634e4928033de18bb696e9af4ef71b703652af5245f2dbebf2f4470","typeString":"literal_string \"ERC1967: new beacon is not a contract\""}],"id":281,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"5513:7:2","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":287,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5513:90:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":288,"nodeType":"ExpressionStatement","src":"5513:90:2"},{"expression":{"arguments":[{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":293,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":278,"src":"5683:9:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":292,"name":"IBeaconUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":365,"src":"5664:18:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBeaconUpgradeable_$365_$","typeString":"type(contract IBeaconUpgradeable)"}},"id":294,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5664:29:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBeaconUpgradeable_$365","typeString":"contract IBeaconUpgradeable"}},"id":295,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5694:14:2","memberName":"implementation","nodeType":"MemberAccess","referencedDeclaration":364,"src":"5664:44:2","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":296,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5664:46:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":290,"name":"AddressUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1001,"src":"5634:18:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AddressUpgradeable_$1001_$","typeString":"type(library AddressUpgradeable)"}},"id":291,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5653:10:2","memberName":"isContract","nodeType":"MemberAccess","referencedDeclaration":689,"src":"5634:29:2","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":297,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5634:77:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"455243313936373a20626561636f6e20696d706c656d656e746174696f6e206973206e6f74206120636f6e7472616374","id":298,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5725:50:2","typeDescriptions":{"typeIdentifier":"t_stringliteral_f95fd1f5b5578816eb23f6ca0f2439b4b5e4094dc16e99c3b8e91603a83f93c8","typeString":"literal_string \"ERC1967: beacon implementation is not a contract\""},"value":"ERC1967: beacon implementation is not a contract"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_f95fd1f5b5578816eb23f6ca0f2439b4b5e4094dc16e99c3b8e91603a83f93c8","typeString":"literal_string \"ERC1967: beacon implementation is not a contract\""}],"id":289,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"5613:7:2","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":299,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5613:172:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":300,"nodeType":"ExpressionStatement","src":"5613:172:2"},{"expression":{"id":308,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[{"id":304,"name":"_BEACON_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":262,"src":"5833:12:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":301,"name":"StorageSlotUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2777,"src":"5795:22:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlotUpgradeable_$2777_$","typeString":"type(library StorageSlotUpgradeable)"}},"id":303,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5818:14:2","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":2699,"src":"5795:37:2","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$2673_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlotUpgradeable.AddressSlot storage pointer)"}},"id":305,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5795:51:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$2673_storage_ptr","typeString":"struct StorageSlotUpgradeable.AddressSlot storage pointer"}},"id":306,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5847:5:2","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":2672,"src":"5795:57:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":307,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":278,"src":"5855:9:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5795:69:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":309,"nodeType":"ExpressionStatement","src":"5795:69:2"}]},"documentation":{"id":276,"nodeType":"StructuredDocumentation","src":"5380:71:2","text":" @dev Stores a new beacon in the EIP1967 beacon slot."},"id":311,"implemented":true,"kind":"function","modifiers":[],"name":"_setBeacon","nameLocation":"5465:10:2","nodeType":"FunctionDefinition","parameters":{"id":279,"nodeType":"ParameterList","parameters":[{"constant":false,"id":278,"mutability":"mutable","name":"newBeacon","nameLocation":"5484:9:2","nodeType":"VariableDeclaration","scope":311,"src":"5476:17:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":277,"name":"address","nodeType":"ElementaryTypeName","src":"5476:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5475:19:2"},"returnParameters":{"id":280,"nodeType":"ParameterList","parameters":[],"src":"5503:0:2"},"scope":355,"src":"5456:415:2","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":348,"nodeType":"Block","src":"6270:239:2","statements":[{"expression":{"arguments":[{"id":322,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":314,"src":"6291:9:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":321,"name":"_setBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":311,"src":"6280:10:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":323,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6280:21:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":324,"nodeType":"ExpressionStatement","src":"6280:21:2"},{"eventCall":{"arguments":[{"id":326,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":314,"src":"6331:9:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":325,"name":"BeaconUpgraded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19,"src":"6316:14:2","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":327,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6316:25:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":328,"nodeType":"EmitStatement","src":"6311:30:2"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":334,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":332,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":329,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":316,"src":"6355:4:2","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":330,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6360:6:2","memberName":"length","nodeType":"MemberAccess","src":"6355:11:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":331,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6369:1:2","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6355:15:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"id":333,"name":"forceCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":318,"src":"6374:9:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6355:28:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":347,"nodeType":"IfStatement","src":"6351:152:2","trueBody":{"id":346,"nodeType":"Block","src":"6385:118:2","statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":339,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":314,"src":"6458:9:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":338,"name":"IBeaconUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":365,"src":"6439:18:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBeaconUpgradeable_$365_$","typeString":"type(contract IBeaconUpgradeable)"}},"id":340,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6439:29:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBeaconUpgradeable_$365","typeString":"contract IBeaconUpgradeable"}},"id":341,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6469:14:2","memberName":"implementation","nodeType":"MemberAccess","referencedDeclaration":364,"src":"6439:44:2","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":342,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6439:46:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":343,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":316,"src":"6487:4:2","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":335,"name":"AddressUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1001,"src":"6399:18:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AddressUpgradeable_$1001_$","typeString":"type(library AddressUpgradeable)"}},"id":337,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6418:20:2","memberName":"functionDelegateCall","nodeType":"MemberAccess","referencedDeclaration":888,"src":"6399:39:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory) returns (bytes memory)"}},"id":344,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6399:93:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":345,"nodeType":"ExpressionStatement","src":"6399:93:2"}]}}]},"documentation":{"id":312,"nodeType":"StructuredDocumentation","src":"5877:292:2","text":" @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\n not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\n Emits a {BeaconUpgraded} event."},"id":349,"implemented":true,"kind":"function","modifiers":[],"name":"_upgradeBeaconToAndCall","nameLocation":"6183:23:2","nodeType":"FunctionDefinition","parameters":{"id":319,"nodeType":"ParameterList","parameters":[{"constant":false,"id":314,"mutability":"mutable","name":"newBeacon","nameLocation":"6215:9:2","nodeType":"VariableDeclaration","scope":349,"src":"6207:17:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":313,"name":"address","nodeType":"ElementaryTypeName","src":"6207:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":316,"mutability":"mutable","name":"data","nameLocation":"6239:4:2","nodeType":"VariableDeclaration","scope":349,"src":"6226:17:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":315,"name":"bytes","nodeType":"ElementaryTypeName","src":"6226:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":318,"mutability":"mutable","name":"forceCall","nameLocation":"6250:9:2","nodeType":"VariableDeclaration","scope":349,"src":"6245:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":317,"name":"bool","nodeType":"ElementaryTypeName","src":"6245:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6206:54:2"},"returnParameters":{"id":320,"nodeType":"ParameterList","parameters":[],"src":"6270:0:2"},"scope":355,"src":"6174:335:2","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"constant":false,"documentation":{"id":350,"nodeType":"StructuredDocumentation","src":"6515:254:2","text":" @dev This empty reserved space is put in place to allow future versions to add new\n variables without shifting down storage in the inheritance chain.\n See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"},"id":354,"mutability":"mutable","name":"__gap","nameLocation":"6794:5:2","nodeType":"VariableDeclaration","scope":355,"src":"6774:25:2","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$50_storage","typeString":"uint256[50]"},"typeName":{"baseType":{"id":351,"name":"uint256","nodeType":"ElementaryTypeName","src":"6774:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":353,"length":{"hexValue":"3530","id":352,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6782:2:2","typeDescriptions":{"typeIdentifier":"t_rational_50_by_1","typeString":"int_const 50"},"value":"50"},"nodeType":"ArrayTypeName","src":"6774:11:2","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$50_storage_ptr","typeString":"uint256[50]"}},"visibility":"private"}],"scope":356,"src":"630:6172:2","usedErrors":[]}],"src":"116:6687:2"},"id":2},"@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.sol","exportedSymbols":{"IBeaconUpgradeable":[365]},"id":366,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":357,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"93:23:3"},{"abstract":false,"baseContracts":[],"canonicalName":"IBeaconUpgradeable","contractDependencies":[],"contractKind":"interface","documentation":{"id":358,"nodeType":"StructuredDocumentation","src":"118:79:3","text":" @dev This is the interface that {BeaconProxy} expects of its beacon."},"fullyImplemented":false,"id":365,"linearizedBaseContracts":[365],"name":"IBeaconUpgradeable","nameLocation":"208:18:3","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":359,"nodeType":"StructuredDocumentation","src":"233:162:3","text":" @dev Must return an address that can be used as a delegate call target.\n {BeaconProxy} will check that this address is a contract."},"functionSelector":"5c60da1b","id":364,"implemented":false,"kind":"function","modifiers":[],"name":"implementation","nameLocation":"409:14:3","nodeType":"FunctionDefinition","parameters":{"id":360,"nodeType":"ParameterList","parameters":[],"src":"423:2:3"},"returnParameters":{"id":363,"nodeType":"ParameterList","parameters":[{"constant":false,"id":362,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":364,"src":"449:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":361,"name":"address","nodeType":"ElementaryTypeName","src":"449:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"448:9:3"},"scope":365,"src":"400:58:3","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":366,"src":"198:262:3","usedErrors":[]}],"src":"93:368:3"},"id":3},"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","exportedSymbols":{"AddressUpgradeable":[1001],"Initializable":[534]},"id":535,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":367,"literals":["solidity","^","0.8",".2"],"nodeType":"PragmaDirective","src":"113:23:4"},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol","file":"../../utils/AddressUpgradeable.sol","id":368,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":535,"sourceUnit":1002,"src":"138:44:4","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[],"canonicalName":"Initializable","contractDependencies":[],"contractKind":"contract","documentation":{"id":369,"nodeType":"StructuredDocumentation","src":"184:2209:4","text":" @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\n behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\n external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\n function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\n The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\n reused. This mechanism prevents re-execution of each \"step\" but allows the creation of new initialization steps in\n case an upgrade adds a module that needs to be initialized.\n For example:\n [.hljs-theme-light.nopadding]\n ```solidity\n contract MyToken is ERC20Upgradeable {\n function initialize() initializer public {\n __ERC20_init(\"MyToken\", \"MTK\");\n }\n }\n contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\n function initializeV2() reinitializer(2) public {\n __ERC20Permit_init(\"MyToken\");\n }\n }\n ```\n TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\n possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\n CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\n that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\n [CAUTION]\n ====\n Avoid leaving a contract uninitialized.\n An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\n contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\n the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\n [.hljs-theme-light.nopadding]\n ```\n /// @custom:oz-upgrades-unsafe-allow constructor\n constructor() {\n _disableInitializers();\n }\n ```\n ===="},"fullyImplemented":true,"id":534,"linearizedBaseContracts":[534],"name":"Initializable","nameLocation":"2412:13:4","nodeType":"ContractDefinition","nodes":[{"constant":false,"documentation":{"id":370,"nodeType":"StructuredDocumentation","src":"2432:109:4","text":" @dev Indicates that the contract has been initialized.\n @custom:oz-retyped-from bool"},"id":372,"mutability":"mutable","name":"_initialized","nameLocation":"2560:12:4","nodeType":"VariableDeclaration","scope":534,"src":"2546:26:4","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":371,"name":"uint8","nodeType":"ElementaryTypeName","src":"2546:5:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"private"},{"constant":false,"documentation":{"id":373,"nodeType":"StructuredDocumentation","src":"2579:91:4","text":" @dev Indicates that the contract is in the process of being initialized."},"id":375,"mutability":"mutable","name":"_initializing","nameLocation":"2688:13:4","nodeType":"VariableDeclaration","scope":534,"src":"2675:26:4","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":374,"name":"bool","nodeType":"ElementaryTypeName","src":"2675:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"private"},{"anonymous":false,"documentation":{"id":376,"nodeType":"StructuredDocumentation","src":"2708:90:4","text":" @dev Triggered when the contract has been initialized or reinitialized."},"eventSelector":"7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498","id":380,"name":"Initialized","nameLocation":"2809:11:4","nodeType":"EventDefinition","parameters":{"id":379,"nodeType":"ParameterList","parameters":[{"constant":false,"id":378,"indexed":false,"mutability":"mutable","name":"version","nameLocation":"2827:7:4","nodeType":"VariableDeclaration","scope":380,"src":"2821:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":377,"name":"uint8","nodeType":"ElementaryTypeName","src":"2821:5:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"2820:15:4"},"src":"2803:33:4"},{"body":{"id":435,"nodeType":"Block","src":"3269:483:4","statements":[{"assignments":[384],"declarations":[{"constant":false,"id":384,"mutability":"mutable","name":"isTopLevelCall","nameLocation":"3284:14:4","nodeType":"VariableDeclaration","scope":435,"src":"3279:19:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":383,"name":"bool","nodeType":"ElementaryTypeName","src":"3279:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":387,"initialValue":{"id":386,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"3301:14:4","subExpression":{"id":385,"name":"_initializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":375,"src":"3302:13:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"3279:36:4"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":408,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":393,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":389,"name":"isTopLevelCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":384,"src":"3347:14:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":392,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":390,"name":"_initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":372,"src":"3365:12:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"31","id":391,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3380:1:4","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3365:16:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3347:34:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":394,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3346:36:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":406,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":402,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"3387:45:4","subExpression":{"arguments":[{"arguments":[{"id":399,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967268,"src":"3426:4:4","typeDescriptions":{"typeIdentifier":"t_contract$_Initializable_$534","typeString":"contract Initializable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Initializable_$534","typeString":"contract Initializable"}],"id":398,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3418:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":397,"name":"address","nodeType":"ElementaryTypeName","src":"3418:7:4","typeDescriptions":{}}},"id":400,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3418:13:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":395,"name":"AddressUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1001,"src":"3388:18:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AddressUpgradeable_$1001_$","typeString":"type(library AddressUpgradeable)"}},"id":396,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3407:10:4","memberName":"isContract","nodeType":"MemberAccess","referencedDeclaration":689,"src":"3388:29:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":401,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3388:44:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":405,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":403,"name":"_initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":372,"src":"3436:12:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":404,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3452:1:4","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3436:17:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3387:66:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":407,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3386:68:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3346:108:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a6564","id":409,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3468:48:4","typeDescriptions":{"typeIdentifier":"t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759","typeString":"literal_string \"Initializable: contract is already initialized\""},"value":"Initializable: contract is already initialized"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759","typeString":"literal_string \"Initializable: contract is already initialized\""}],"id":388,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"3325:7:4","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":410,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3325:201:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":411,"nodeType":"ExpressionStatement","src":"3325:201:4"},{"expression":{"id":414,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":412,"name":"_initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":372,"src":"3536:12:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"31","id":413,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3551:1:4","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3536:16:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":415,"nodeType":"ExpressionStatement","src":"3536:16:4"},{"condition":{"id":416,"name":"isTopLevelCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":384,"src":"3566:14:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":422,"nodeType":"IfStatement","src":"3562:65:4","trueBody":{"id":421,"nodeType":"Block","src":"3582:45:4","statements":[{"expression":{"id":419,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":417,"name":"_initializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":375,"src":"3596:13:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":418,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3612:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"3596:20:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":420,"nodeType":"ExpressionStatement","src":"3596:20:4"}]}},{"id":423,"nodeType":"PlaceholderStatement","src":"3636:1:4"},{"condition":{"id":424,"name":"isTopLevelCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":384,"src":"3651:14:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":434,"nodeType":"IfStatement","src":"3647:99:4","trueBody":{"id":433,"nodeType":"Block","src":"3667:79:4","statements":[{"expression":{"id":427,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":425,"name":"_initializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":375,"src":"3681:13:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":426,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3697:5:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"3681:21:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":428,"nodeType":"ExpressionStatement","src":"3681:21:4"},{"eventCall":{"arguments":[{"hexValue":"31","id":430,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3733:1:4","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":429,"name":"Initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":380,"src":"3721:11:4","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint8_$returns$__$","typeString":"function (uint8)"}},"id":431,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3721:14:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":432,"nodeType":"EmitStatement","src":"3716:19:4"}]}}]},"documentation":{"id":381,"nodeType":"StructuredDocumentation","src":"2842:399:4","text":" @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\n `onlyInitializing` functions can be used to initialize parent contracts.\n Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\n constructor.\n Emits an {Initialized} event."},"id":436,"name":"initializer","nameLocation":"3255:11:4","nodeType":"ModifierDefinition","parameters":{"id":382,"nodeType":"ParameterList","parameters":[],"src":"3266:2:4"},"src":"3246:506:4","virtual":false,"visibility":"internal"},{"body":{"id":468,"nodeType":"Block","src":"4863:255:4","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":447,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":443,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"4881:14:4","subExpression":{"id":442,"name":"_initializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":375,"src":"4882:13:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":446,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":444,"name":"_initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":372,"src":"4899:12:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":445,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":439,"src":"4914:7:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"4899:22:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4881:40:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a6564","id":448,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4923:48:4","typeDescriptions":{"typeIdentifier":"t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759","typeString":"literal_string \"Initializable: contract is already initialized\""},"value":"Initializable: contract is already initialized"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759","typeString":"literal_string \"Initializable: contract is already initialized\""}],"id":441,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"4873:7:4","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":449,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4873:99:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":450,"nodeType":"ExpressionStatement","src":"4873:99:4"},{"expression":{"id":453,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":451,"name":"_initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":372,"src":"4982:12:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":452,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":439,"src":"4997:7:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"4982:22:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":454,"nodeType":"ExpressionStatement","src":"4982:22:4"},{"expression":{"id":457,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":455,"name":"_initializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":375,"src":"5014:13:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":456,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5030:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"5014:20:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":458,"nodeType":"ExpressionStatement","src":"5014:20:4"},{"id":459,"nodeType":"PlaceholderStatement","src":"5044:1:4"},{"expression":{"id":462,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":460,"name":"_initializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":375,"src":"5055:13:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":461,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5071:5:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"5055:21:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":463,"nodeType":"ExpressionStatement","src":"5055:21:4"},{"eventCall":{"arguments":[{"id":465,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":439,"src":"5103:7:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":464,"name":"Initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":380,"src":"5091:11:4","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint8_$returns$__$","typeString":"function (uint8)"}},"id":466,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5091:20:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":467,"nodeType":"EmitStatement","src":"5086:25:4"}]},"documentation":{"id":437,"nodeType":"StructuredDocumentation","src":"3758:1062:4","text":" @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\n contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\n used to initialize parent contracts.\n A reinitializer may be used after the original initialization step. This is essential to configure modules that\n are added through upgrades and that require initialization.\n When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\n cannot be nested. If one is invoked in the context of another, execution will revert.\n Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\n a contract, executing them in the right order is up to the developer or operator.\n WARNING: setting the version to 255 will prevent any future reinitialization.\n Emits an {Initialized} event."},"id":469,"name":"reinitializer","nameLocation":"4834:13:4","nodeType":"ModifierDefinition","parameters":{"id":440,"nodeType":"ParameterList","parameters":[{"constant":false,"id":439,"mutability":"mutable","name":"version","nameLocation":"4854:7:4","nodeType":"VariableDeclaration","scope":469,"src":"4848:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":438,"name":"uint8","nodeType":"ElementaryTypeName","src":"4848:5:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"4847:15:4"},"src":"4825:293:4","virtual":false,"visibility":"internal"},{"body":{"id":478,"nodeType":"Block","src":"5356:97:4","statements":[{"expression":{"arguments":[{"id":473,"name":"_initializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":375,"src":"5374:13:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e697469616c697a61626c653a20636f6e7472616374206973206e6f7420696e697469616c697a696e67","id":474,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5389:45:4","typeDescriptions":{"typeIdentifier":"t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b","typeString":"literal_string \"Initializable: contract is not initializing\""},"value":"Initializable: contract is not initializing"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b","typeString":"literal_string \"Initializable: contract is not initializing\""}],"id":472,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"5366:7:4","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":475,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5366:69:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":476,"nodeType":"ExpressionStatement","src":"5366:69:4"},{"id":477,"nodeType":"PlaceholderStatement","src":"5445:1:4"}]},"documentation":{"id":470,"nodeType":"StructuredDocumentation","src":"5124:199:4","text":" @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\n {initializer} and {reinitializer} modifiers, directly or indirectly."},"id":479,"name":"onlyInitializing","nameLocation":"5337:16:4","nodeType":"ModifierDefinition","parameters":{"id":471,"nodeType":"ParameterList","parameters":[],"src":"5353:2:4"},"src":"5328:125:4","virtual":false,"visibility":"internal"},{"body":{"id":514,"nodeType":"Block","src":"5988:231:4","statements":[{"expression":{"arguments":[{"id":485,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"6006:14:4","subExpression":{"id":484,"name":"_initializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":375,"src":"6007:13:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e697469616c697a61626c653a20636f6e747261637420697320696e697469616c697a696e67","id":486,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6022:41:4","typeDescriptions":{"typeIdentifier":"t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a","typeString":"literal_string \"Initializable: contract is initializing\""},"value":"Initializable: contract is initializing"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a","typeString":"literal_string \"Initializable: contract is initializing\""}],"id":483,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"5998:7:4","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":487,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5998:66:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":488,"nodeType":"ExpressionStatement","src":"5998:66:4"},{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":495,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":489,"name":"_initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":372,"src":"6078:12:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"arguments":[{"id":492,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6099:5:4","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":491,"name":"uint8","nodeType":"ElementaryTypeName","src":"6099:5:4","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"}],"id":490,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"6094:4:4","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":493,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6094:11:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint8","typeString":"type(uint8)"}},"id":494,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6106:3:4","memberName":"max","nodeType":"MemberAccess","src":"6094:15:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"6078:31:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":513,"nodeType":"IfStatement","src":"6074:139:4","trueBody":{"id":512,"nodeType":"Block","src":"6111:102:4","statements":[{"expression":{"id":502,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":496,"name":"_initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":372,"src":"6125:12:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"arguments":[{"id":499,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6145:5:4","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":498,"name":"uint8","nodeType":"ElementaryTypeName","src":"6145:5:4","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"}],"id":497,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"6140:4:4","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":500,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6140:11:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint8","typeString":"type(uint8)"}},"id":501,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6152:3:4","memberName":"max","nodeType":"MemberAccess","src":"6140:15:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"6125:30:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":503,"nodeType":"ExpressionStatement","src":"6125:30:4"},{"eventCall":{"arguments":[{"expression":{"arguments":[{"id":507,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6191:5:4","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":506,"name":"uint8","nodeType":"ElementaryTypeName","src":"6191:5:4","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"}],"id":505,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"6186:4:4","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":508,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6186:11:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint8","typeString":"type(uint8)"}},"id":509,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6198:3:4","memberName":"max","nodeType":"MemberAccess","src":"6186:15:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":504,"name":"Initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":380,"src":"6174:11:4","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint8_$returns$__$","typeString":"function (uint8)"}},"id":510,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6174:28:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":511,"nodeType":"EmitStatement","src":"6169:33:4"}]}}]},"documentation":{"id":480,"nodeType":"StructuredDocumentation","src":"5459:475:4","text":" @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\n Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\n to any version. It is recommended to use this to lock implementation contracts that are designed to be called\n through proxies.\n Emits an {Initialized} event the first time it is successfully executed."},"id":515,"implemented":true,"kind":"function","modifiers":[],"name":"_disableInitializers","nameLocation":"5948:20:4","nodeType":"FunctionDefinition","parameters":{"id":481,"nodeType":"ParameterList","parameters":[],"src":"5968:2:4"},"returnParameters":{"id":482,"nodeType":"ParameterList","parameters":[],"src":"5988:0:4"},"scope":534,"src":"5939:280:4","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":523,"nodeType":"Block","src":"6393:36:4","statements":[{"expression":{"id":521,"name":"_initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":372,"src":"6410:12:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"functionReturnParameters":520,"id":522,"nodeType":"Return","src":"6403:19:4"}]},"documentation":{"id":516,"nodeType":"StructuredDocumentation","src":"6225:99:4","text":" @dev Returns the highest version that has been initialized. See {reinitializer}."},"id":524,"implemented":true,"kind":"function","modifiers":[],"name":"_getInitializedVersion","nameLocation":"6338:22:4","nodeType":"FunctionDefinition","parameters":{"id":517,"nodeType":"ParameterList","parameters":[],"src":"6360:2:4"},"returnParameters":{"id":520,"nodeType":"ParameterList","parameters":[{"constant":false,"id":519,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":524,"src":"6386:5:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":518,"name":"uint8","nodeType":"ElementaryTypeName","src":"6386:5:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"6385:7:4"},"scope":534,"src":"6329:100:4","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":532,"nodeType":"Block","src":"6601:37:4","statements":[{"expression":{"id":530,"name":"_initializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":375,"src":"6618:13:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":529,"id":531,"nodeType":"Return","src":"6611:20:4"}]},"documentation":{"id":525,"nodeType":"StructuredDocumentation","src":"6435:105:4","text":" @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}."},"id":533,"implemented":true,"kind":"function","modifiers":[],"name":"_isInitializing","nameLocation":"6554:15:4","nodeType":"FunctionDefinition","parameters":{"id":526,"nodeType":"ParameterList","parameters":[],"src":"6569:2:4"},"returnParameters":{"id":529,"nodeType":"ParameterList","parameters":[{"constant":false,"id":528,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":533,"src":"6595:4:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":527,"name":"bool","nodeType":"ElementaryTypeName","src":"6595:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6594:6:4"},"scope":534,"src":"6545:93:4","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":535,"src":"2394:4246:4","usedErrors":[]}],"src":"113:6528:4"},"id":4},"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol","exportedSymbols":{"AddressUpgradeable":[1001],"ERC1967UpgradeUpgradeable":[355],"IBeaconUpgradeable":[365],"IERC1822ProxiableUpgradeable":[30],"IERC1967Upgradeable":[20],"Initializable":[534],"StorageSlotUpgradeable":[2777],"UUPSUpgradeable":[671]},"id":672,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":536,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"115:23:5"},{"absolutePath":"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol","file":"../../interfaces/draft-IERC1822Upgradeable.sol","id":537,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":672,"sourceUnit":31,"src":"140:56:5","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol","file":"../ERC1967/ERC1967UpgradeUpgradeable.sol","id":538,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":672,"sourceUnit":356,"src":"197:50:5","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","file":"./Initializable.sol","id":540,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":672,"sourceUnit":535,"src":"248:50:5","symbolAliases":[{"foreign":{"id":539,"name":"Initializable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":534,"src":"256:13:5","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":542,"name":"Initializable","nameLocations":["986:13:5"],"nodeType":"IdentifierPath","referencedDeclaration":534,"src":"986:13:5"},"id":543,"nodeType":"InheritanceSpecifier","src":"986:13:5"},{"baseName":{"id":544,"name":"IERC1822ProxiableUpgradeable","nameLocations":["1001:28:5"],"nodeType":"IdentifierPath","referencedDeclaration":30,"src":"1001:28:5"},"id":545,"nodeType":"InheritanceSpecifier","src":"1001:28:5"},{"baseName":{"id":546,"name":"ERC1967UpgradeUpgradeable","nameLocations":["1031:25:5"],"nodeType":"IdentifierPath","referencedDeclaration":355,"src":"1031:25:5"},"id":547,"nodeType":"InheritanceSpecifier","src":"1031:25:5"}],"canonicalName":"UUPSUpgradeable","contractDependencies":[],"contractKind":"contract","documentation":{"id":541,"nodeType":"StructuredDocumentation","src":"300:648:5","text":" @dev An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an\n {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy.\n A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is\n reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing\n `UUPSUpgradeable` with a custom implementation of upgrades.\n The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism.\n _Available since v4.1._"},"fullyImplemented":false,"id":671,"linearizedBaseContracts":[671,355,20,30,534],"name":"UUPSUpgradeable","nameLocation":"967:15:5","nodeType":"ContractDefinition","nodes":[{"constant":false,"documentation":{"id":548,"nodeType":"StructuredDocumentation","src":"1063:87:5","text":"@custom:oz-upgrades-unsafe-allow state-variable-immutable state-variable-assignment"},"id":554,"mutability":"immutable","name":"__self","nameLocation":"1181:6:5","nodeType":"VariableDeclaration","scope":671,"src":"1155:48:5","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":549,"name":"address","nodeType":"ElementaryTypeName","src":"1155:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":{"arguments":[{"id":552,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967268,"src":"1198:4:5","typeDescriptions":{"typeIdentifier":"t_contract$_UUPSUpgradeable_$671","typeString":"contract UUPSUpgradeable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_UUPSUpgradeable_$671","typeString":"contract UUPSUpgradeable"}],"id":551,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1190:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":550,"name":"address","nodeType":"ElementaryTypeName","src":"1190:7:5","typeDescriptions":{}}},"id":553,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1190:13:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"body":{"id":576,"nodeType":"Block","src":"1729:205:5","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":563,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":560,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967268,"src":"1755:4:5","typeDescriptions":{"typeIdentifier":"t_contract$_UUPSUpgradeable_$671","typeString":"contract UUPSUpgradeable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_UUPSUpgradeable_$671","typeString":"contract UUPSUpgradeable"}],"id":559,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1747:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":558,"name":"address","nodeType":"ElementaryTypeName","src":"1747:7:5","typeDescriptions":{}}},"id":561,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1747:13:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":562,"name":"__self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":554,"src":"1764:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1747:23:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682064656c656761746563616c6c","id":564,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1772:46:5","typeDescriptions":{"typeIdentifier":"t_stringliteral_36e108fa7a809b52ab1951dd91c117a7bc9ac5250bdf1aa162d4e104f7edf9eb","typeString":"literal_string \"Function must be called through delegatecall\""},"value":"Function must be called through delegatecall"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_36e108fa7a809b52ab1951dd91c117a7bc9ac5250bdf1aa162d4e104f7edf9eb","typeString":"literal_string \"Function must be called through delegatecall\""}],"id":557,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"1739:7:5","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":565,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1739:80:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":566,"nodeType":"ExpressionStatement","src":"1739:80:5"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":571,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":568,"name":"_getImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76,"src":"1837:18:5","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":569,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1837:20:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":570,"name":"__self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":554,"src":"1861:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1837:30:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"46756e6374696f6e206d7573742062652063616c6c6564207468726f756768206163746976652070726f7879","id":572,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1869:46:5","typeDescriptions":{"typeIdentifier":"t_stringliteral_52f1ead4d9653e13afbd2e90ef2587c30187cd50b2e97d784e3f7a7541247434","typeString":"literal_string \"Function must be called through active proxy\""},"value":"Function must be called through active proxy"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_52f1ead4d9653e13afbd2e90ef2587c30187cd50b2e97d784e3f7a7541247434","typeString":"literal_string \"Function must be called through active proxy\""}],"id":567,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"1829:7:5","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":573,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1829:87:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":574,"nodeType":"ExpressionStatement","src":"1829:87:5"},{"id":575,"nodeType":"PlaceholderStatement","src":"1926:1:5"}]},"documentation":{"id":555,"nodeType":"StructuredDocumentation","src":"1210:493:5","text":" @dev Check that the execution is being performed through a delegatecall call and that the execution context is\n a proxy contract with an implementation (as defined in ERC1967) pointing to self. This should only be the case\n for UUPS and transparent proxies that are using the current contract as their implementation. Execution of a\n function through ERC1167 minimal proxies (clones) would not normally pass this test, but is not guaranteed to\n fail."},"id":577,"name":"onlyProxy","nameLocation":"1717:9:5","nodeType":"ModifierDefinition","parameters":{"id":556,"nodeType":"ParameterList","parameters":[],"src":"1726:2:5"},"src":"1708:226:5","virtual":false,"visibility":"internal"},{"body":{"id":591,"nodeType":"Block","src":"2164:120:5","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":586,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":583,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967268,"src":"2190:4:5","typeDescriptions":{"typeIdentifier":"t_contract$_UUPSUpgradeable_$671","typeString":"contract UUPSUpgradeable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_UUPSUpgradeable_$671","typeString":"contract UUPSUpgradeable"}],"id":582,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2182:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":581,"name":"address","nodeType":"ElementaryTypeName","src":"2182:7:5","typeDescriptions":{}}},"id":584,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2182:13:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":585,"name":"__self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":554,"src":"2199:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2182:23:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"555550535570677261646561626c653a206d757374206e6f742062652063616c6c6564207468726f7567682064656c656761746563616c6c","id":587,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2207:58:5","typeDescriptions":{"typeIdentifier":"t_stringliteral_67f0151b4ad1dcfa0e3302a0cd6019f51582ef1807b37dceb00bd852a514f7f4","typeString":"literal_string \"UUPSUpgradeable: must not be called through delegatecall\""},"value":"UUPSUpgradeable: must not be called through delegatecall"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_67f0151b4ad1dcfa0e3302a0cd6019f51582ef1807b37dceb00bd852a514f7f4","typeString":"literal_string \"UUPSUpgradeable: must not be called through delegatecall\""}],"id":580,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"2174:7:5","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":588,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2174:92:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":589,"nodeType":"ExpressionStatement","src":"2174:92:5"},{"id":590,"nodeType":"PlaceholderStatement","src":"2276:1:5"}]},"documentation":{"id":578,"nodeType":"StructuredDocumentation","src":"1940:195:5","text":" @dev Check that the execution is not being performed through a delegate call. This allows a function to be\n callable on the implementing contract but not through proxies."},"id":592,"name":"notDelegated","nameLocation":"2149:12:5","nodeType":"ModifierDefinition","parameters":{"id":579,"nodeType":"ParameterList","parameters":[],"src":"2161:2:5"},"src":"2140:144:5","virtual":false,"visibility":"internal"},{"body":{"id":597,"nodeType":"Block","src":"2350:7:5","statements":[]},"id":598,"implemented":true,"kind":"function","modifiers":[{"id":595,"kind":"modifierInvocation","modifierName":{"id":594,"name":"onlyInitializing","nameLocations":["2333:16:5"],"nodeType":"IdentifierPath","referencedDeclaration":479,"src":"2333:16:5"},"nodeType":"ModifierInvocation","src":"2333:16:5"}],"name":"__UUPSUpgradeable_init","nameLocation":"2299:22:5","nodeType":"FunctionDefinition","parameters":{"id":593,"nodeType":"ParameterList","parameters":[],"src":"2321:2:5"},"returnParameters":{"id":596,"nodeType":"ParameterList","parameters":[],"src":"2350:0:5"},"scope":671,"src":"2290:67:5","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":603,"nodeType":"Block","src":"2433:7:5","statements":[]},"id":604,"implemented":true,"kind":"function","modifiers":[{"id":601,"kind":"modifierInvocation","modifierName":{"id":600,"name":"onlyInitializing","nameLocations":["2416:16:5"],"nodeType":"IdentifierPath","referencedDeclaration":479,"src":"2416:16:5"},"nodeType":"ModifierInvocation","src":"2416:16:5"}],"name":"__UUPSUpgradeable_init_unchained","nameLocation":"2372:32:5","nodeType":"FunctionDefinition","parameters":{"id":599,"nodeType":"ParameterList","parameters":[],"src":"2404:2:5"},"returnParameters":{"id":602,"nodeType":"ParameterList","parameters":[],"src":"2433:0:5"},"scope":671,"src":"2363:77:5","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[29],"body":{"id":615,"nodeType":"Block","src":"3114:44:5","statements":[{"expression":{"id":613,"name":"_IMPLEMENTATION_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51,"src":"3131:20:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":612,"id":614,"nodeType":"Return","src":"3124:27:5"}]},"documentation":{"id":605,"nodeType":"StructuredDocumentation","src":"2445:577:5","text":" @dev Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the\n implementation. It is used to validate the implementation's compatibility when performing an upgrade.\n IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\n bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\n function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier."},"functionSelector":"52d1902d","id":616,"implemented":true,"kind":"function","modifiers":[{"id":609,"kind":"modifierInvocation","modifierName":{"id":608,"name":"notDelegated","nameLocations":["3083:12:5"],"nodeType":"IdentifierPath","referencedDeclaration":592,"src":"3083:12:5"},"nodeType":"ModifierInvocation","src":"3083:12:5"}],"name":"proxiableUUID","nameLocation":"3036:13:5","nodeType":"FunctionDefinition","overrides":{"id":607,"nodeType":"OverrideSpecifier","overrides":[],"src":"3074:8:5"},"parameters":{"id":606,"nodeType":"ParameterList","parameters":[],"src":"3049:2:5"},"returnParameters":{"id":612,"nodeType":"ParameterList","parameters":[{"constant":false,"id":611,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":616,"src":"3105:7:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":610,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3105:7:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3104:9:5"},"scope":671,"src":"3027:131:5","stateMutability":"view","virtual":true,"visibility":"external"},{"body":{"id":637,"nodeType":"Block","src":"3479:124:5","statements":[{"expression":{"arguments":[{"id":625,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":619,"src":"3507:17:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":624,"name":"_authorizeUpgrade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":665,"src":"3489:17:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":626,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3489:36:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":627,"nodeType":"ExpressionStatement","src":"3489:36:5"},{"expression":{"arguments":[{"id":629,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":619,"src":"3557:17:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":632,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3586:1:5","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":631,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"3576:9:5","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":630,"name":"bytes","nodeType":"ElementaryTypeName","src":"3580:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":633,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3576:12:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"66616c7365","id":634,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3590:5:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":628,"name":"_upgradeToAndCallUUPS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":198,"src":"3535:21:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_bool_$returns$__$","typeString":"function (address,bytes memory,bool)"}},"id":635,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3535:61:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":636,"nodeType":"ExpressionStatement","src":"3535:61:5"}]},"documentation":{"id":617,"nodeType":"StructuredDocumentation","src":"3164:239:5","text":" @dev Upgrade the implementation of the proxy to `newImplementation`.\n Calls {_authorizeUpgrade}.\n Emits an {Upgraded} event.\n @custom:oz-upgrades-unsafe-allow-reachable delegatecall"},"functionSelector":"3659cfe6","id":638,"implemented":true,"kind":"function","modifiers":[{"id":622,"kind":"modifierInvocation","modifierName":{"id":621,"name":"onlyProxy","nameLocations":["3469:9:5"],"nodeType":"IdentifierPath","referencedDeclaration":577,"src":"3469:9:5"},"nodeType":"ModifierInvocation","src":"3469:9:5"}],"name":"upgradeTo","nameLocation":"3417:9:5","nodeType":"FunctionDefinition","parameters":{"id":620,"nodeType":"ParameterList","parameters":[{"constant":false,"id":619,"mutability":"mutable","name":"newImplementation","nameLocation":"3435:17:5","nodeType":"VariableDeclaration","scope":638,"src":"3427:25:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":618,"name":"address","nodeType":"ElementaryTypeName","src":"3427:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3426:27:5"},"returnParameters":{"id":623,"nodeType":"ParameterList","parameters":[],"src":"3479:0:5"},"scope":671,"src":"3408:195:5","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":658,"nodeType":"Block","src":"4027:115:5","statements":[{"expression":{"arguments":[{"id":649,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":641,"src":"4055:17:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":648,"name":"_authorizeUpgrade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":665,"src":"4037:17:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":650,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4037:36:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":651,"nodeType":"ExpressionStatement","src":"4037:36:5"},{"expression":{"arguments":[{"id":653,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":641,"src":"4105:17:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":654,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":643,"src":"4124:4:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"74727565","id":655,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4130:4:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":652,"name":"_upgradeToAndCallUUPS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":198,"src":"4083:21:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_bool_$returns$__$","typeString":"function (address,bytes memory,bool)"}},"id":656,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4083:52:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":657,"nodeType":"ExpressionStatement","src":"4083:52:5"}]},"documentation":{"id":639,"nodeType":"StructuredDocumentation","src":"3609:308:5","text":" @dev Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call\n encoded in `data`.\n Calls {_authorizeUpgrade}.\n Emits an {Upgraded} event.\n @custom:oz-upgrades-unsafe-allow-reachable delegatecall"},"functionSelector":"4f1ef286","id":659,"implemented":true,"kind":"function","modifiers":[{"id":646,"kind":"modifierInvocation","modifierName":{"id":645,"name":"onlyProxy","nameLocations":["4017:9:5"],"nodeType":"IdentifierPath","referencedDeclaration":577,"src":"4017:9:5"},"nodeType":"ModifierInvocation","src":"4017:9:5"}],"name":"upgradeToAndCall","nameLocation":"3931:16:5","nodeType":"FunctionDefinition","parameters":{"id":644,"nodeType":"ParameterList","parameters":[{"constant":false,"id":641,"mutability":"mutable","name":"newImplementation","nameLocation":"3956:17:5","nodeType":"VariableDeclaration","scope":659,"src":"3948:25:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":640,"name":"address","nodeType":"ElementaryTypeName","src":"3948:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":643,"mutability":"mutable","name":"data","nameLocation":"3988:4:5","nodeType":"VariableDeclaration","scope":659,"src":"3975:17:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":642,"name":"bytes","nodeType":"ElementaryTypeName","src":"3975:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3947:46:5"},"returnParameters":{"id":647,"nodeType":"ParameterList","parameters":[],"src":"4027:0:5"},"scope":671,"src":"3922:220:5","stateMutability":"payable","virtual":true,"visibility":"public"},{"documentation":{"id":660,"nodeType":"StructuredDocumentation","src":"4148:397:5","text":" @dev Function that should revert when `msg.sender` is not authorized to upgrade the contract. Called by\n {upgradeTo} and {upgradeToAndCall}.\n Normally, this function will use an xref:access.adoc[access control] modifier such as {Ownable-onlyOwner}.\n ```solidity\n function _authorizeUpgrade(address) internal override onlyOwner {}\n ```"},"id":665,"implemented":false,"kind":"function","modifiers":[],"name":"_authorizeUpgrade","nameLocation":"4559:17:5","nodeType":"FunctionDefinition","parameters":{"id":663,"nodeType":"ParameterList","parameters":[{"constant":false,"id":662,"mutability":"mutable","name":"newImplementation","nameLocation":"4585:17:5","nodeType":"VariableDeclaration","scope":665,"src":"4577:25:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":661,"name":"address","nodeType":"ElementaryTypeName","src":"4577:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4576:27:5"},"returnParameters":{"id":664,"nodeType":"ParameterList","parameters":[],"src":"4620:0:5"},"scope":671,"src":"4550:71:5","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"constant":false,"documentation":{"id":666,"nodeType":"StructuredDocumentation","src":"4627:254:5","text":" @dev This empty reserved space is put in place to allow future versions to add new\n variables without shifting down storage in the inheritance chain.\n See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"},"id":670,"mutability":"mutable","name":"__gap","nameLocation":"4906:5:5","nodeType":"VariableDeclaration","scope":671,"src":"4886:25:5","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$50_storage","typeString":"uint256[50]"},"typeName":{"baseType":{"id":667,"name":"uint256","nodeType":"ElementaryTypeName","src":"4886:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":669,"length":{"hexValue":"3530","id":668,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4894:2:5","typeDescriptions":{"typeIdentifier":"t_rational_50_by_1","typeString":"int_const 50"},"value":"50"},"nodeType":"ArrayTypeName","src":"4886:11:5","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$50_storage_ptr","typeString":"uint256[50]"}},"visibility":"private"}],"scope":672,"src":"949:3965:5","usedErrors":[]}],"src":"115:4800:5"},"id":5},"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol","exportedSymbols":{"AddressUpgradeable":[1001]},"id":1002,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":673,"literals":["solidity","^","0.8",".1"],"nodeType":"PragmaDirective","src":"101:23:6"},{"abstract":false,"baseContracts":[],"canonicalName":"AddressUpgradeable","contractDependencies":[],"contractKind":"library","documentation":{"id":674,"nodeType":"StructuredDocumentation","src":"126:67:6","text":" @dev Collection of functions related to the address type"},"fullyImplemented":true,"id":1001,"linearizedBaseContracts":[1001],"name":"AddressUpgradeable","nameLocation":"202:18:6","nodeType":"ContractDefinition","nodes":[{"body":{"id":688,"nodeType":"Block","src":"1489:254:6","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":686,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":682,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":677,"src":"1713:7:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":683,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1721:4:6","memberName":"code","nodeType":"MemberAccess","src":"1713:12:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":684,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1726:6:6","memberName":"length","nodeType":"MemberAccess","src":"1713:19:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":685,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1735:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1713:23:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":681,"id":687,"nodeType":"Return","src":"1706:30:6"}]},"documentation":{"id":675,"nodeType":"StructuredDocumentation","src":"227:1191:6","text":" @dev Returns true if `account` is a contract.\n [IMPORTANT]\n ====\n It is unsafe to assume that an address for which this function returns\n false is an externally-owned account (EOA) and not a contract.\n Among others, `isContract` will return false for the following\n types of addresses:\n - an externally-owned account\n - a contract in construction\n - an address where a contract will be created\n - an address where a contract lived, but was destroyed\n Furthermore, `isContract` will also return true if the target contract within\n the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\n which only has an effect at the end of a transaction.\n ====\n [IMPORTANT]\n ====\n You shouldn't rely on `isContract` to protect against flash loan attacks!\n Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\n like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\n constructor.\n ===="},"id":689,"implemented":true,"kind":"function","modifiers":[],"name":"isContract","nameLocation":"1432:10:6","nodeType":"FunctionDefinition","parameters":{"id":678,"nodeType":"ParameterList","parameters":[{"constant":false,"id":677,"mutability":"mutable","name":"account","nameLocation":"1451:7:6","nodeType":"VariableDeclaration","scope":689,"src":"1443:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":676,"name":"address","nodeType":"ElementaryTypeName","src":"1443:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1442:17:6"},"returnParameters":{"id":681,"nodeType":"ParameterList","parameters":[{"constant":false,"id":680,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":689,"src":"1483:4:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":679,"name":"bool","nodeType":"ElementaryTypeName","src":"1483:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1482:6:6"},"scope":1001,"src":"1423:320:6","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":722,"nodeType":"Block","src":"2729:241:6","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":704,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":700,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967268,"src":"2755:4:6","typeDescriptions":{"typeIdentifier":"t_contract$_AddressUpgradeable_$1001","typeString":"library AddressUpgradeable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_AddressUpgradeable_$1001","typeString":"library AddressUpgradeable"}],"id":699,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2747:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":698,"name":"address","nodeType":"ElementaryTypeName","src":"2747:7:6","typeDescriptions":{}}},"id":701,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2747:13:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":702,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2761:7:6","memberName":"balance","nodeType":"MemberAccess","src":"2747:21:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":703,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":694,"src":"2772:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2747:31:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20696e73756666696369656e742062616c616e6365","id":705,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2780:31:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_5597a22abd0ef5332f8053862eb236db7590f17e2b93a53f63a103becfb561f9","typeString":"literal_string \"Address: insufficient balance\""},"value":"Address: insufficient balance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5597a22abd0ef5332f8053862eb236db7590f17e2b93a53f63a103becfb561f9","typeString":"literal_string \"Address: insufficient balance\""}],"id":697,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"2739:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":706,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2739:73:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":707,"nodeType":"ExpressionStatement","src":"2739:73:6"},{"assignments":[709,null],"declarations":[{"constant":false,"id":709,"mutability":"mutable","name":"success","nameLocation":"2829:7:6","nodeType":"VariableDeclaration","scope":722,"src":"2824:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":708,"name":"bool","nodeType":"ElementaryTypeName","src":"2824:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":716,"initialValue":{"arguments":[{"hexValue":"","id":714,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2872:2:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"id":710,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":692,"src":"2842:9:6","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":711,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2852:4:6","memberName":"call","nodeType":"MemberAccess","src":"2842:14:6","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":713,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":712,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":694,"src":"2864:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"2842:29:6","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":715,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2842:33:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"2823:52:6"},{"expression":{"arguments":[{"id":718,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":709,"src":"2893:7:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d61792068617665207265766572746564","id":719,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2902:60:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_51ddaa38748c0a1144620fb5bfe8edab31ea437571ad591a7734bbfd0429aeae","typeString":"literal_string \"Address: unable to send value, recipient may have reverted\""},"value":"Address: unable to send value, recipient may have reverted"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_51ddaa38748c0a1144620fb5bfe8edab31ea437571ad591a7734bbfd0429aeae","typeString":"literal_string \"Address: unable to send value, recipient may have reverted\""}],"id":717,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"2885:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":720,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2885:78:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":721,"nodeType":"ExpressionStatement","src":"2885:78:6"}]},"documentation":{"id":690,"nodeType":"StructuredDocumentation","src":"1749:904:6","text":" @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n `recipient`, forwarding all available gas and reverting on errors.\n https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n of certain opcodes, possibly making contracts go over the 2300 gas limit\n imposed by `transfer`, making them unable to receive funds via\n `transfer`. {sendValue} removes this limitation.\n https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n IMPORTANT: because control is transferred to `recipient`, care must be\n taken to not create reentrancy vulnerabilities. Consider using\n {ReentrancyGuard} or the\n https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]."},"id":723,"implemented":true,"kind":"function","modifiers":[],"name":"sendValue","nameLocation":"2667:9:6","nodeType":"FunctionDefinition","parameters":{"id":695,"nodeType":"ParameterList","parameters":[{"constant":false,"id":692,"mutability":"mutable","name":"recipient","nameLocation":"2693:9:6","nodeType":"VariableDeclaration","scope":723,"src":"2677:25:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":691,"name":"address","nodeType":"ElementaryTypeName","src":"2677:15:6","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"},{"constant":false,"id":694,"mutability":"mutable","name":"amount","nameLocation":"2712:6:6","nodeType":"VariableDeclaration","scope":723,"src":"2704:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":693,"name":"uint256","nodeType":"ElementaryTypeName","src":"2704:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2676:43:6"},"returnParameters":{"id":696,"nodeType":"ParameterList","parameters":[],"src":"2729:0:6"},"scope":1001,"src":"2658:312:6","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":740,"nodeType":"Block","src":"3801:96:6","statements":[{"expression":{"arguments":[{"id":734,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":726,"src":"3840:6:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":735,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":728,"src":"3848:4:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"30","id":736,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3854:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"416464726573733a206c6f772d6c6576656c2063616c6c206661696c6564","id":737,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3857:32:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_24d7ab5d382116e64324f19950ca9340b8af1ddeb09a8d026e0a3c6a01dcc9df","typeString":"literal_string \"Address: low-level call failed\""},"value":"Address: low-level call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_stringliteral_24d7ab5d382116e64324f19950ca9340b8af1ddeb09a8d026e0a3c6a01dcc9df","typeString":"literal_string \"Address: low-level call failed\""}],"id":733,"name":"functionCallWithValue","nodeType":"Identifier","overloadedDeclarations":[781,825],"referencedDeclaration":825,"src":"3818:21:6","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,uint256,string memory) returns (bytes memory)"}},"id":738,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3818:72:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":732,"id":739,"nodeType":"Return","src":"3811:79:6"}]},"documentation":{"id":724,"nodeType":"StructuredDocumentation","src":"2976:731:6","text":" @dev Performs a Solidity function call using a low level `call`. A\n plain `call` is an unsafe replacement for a function call: use this\n function instead.\n If `target` reverts with a revert reason, it is bubbled up by this\n function (like regular Solidity function calls).\n Returns the raw returned data. To convert to the expected return value,\n use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n Requirements:\n - `target` must be a contract.\n - calling `target` with `data` must not revert.\n _Available since v3.1._"},"id":741,"implemented":true,"kind":"function","modifiers":[],"name":"functionCall","nameLocation":"3721:12:6","nodeType":"FunctionDefinition","parameters":{"id":729,"nodeType":"ParameterList","parameters":[{"constant":false,"id":726,"mutability":"mutable","name":"target","nameLocation":"3742:6:6","nodeType":"VariableDeclaration","scope":741,"src":"3734:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":725,"name":"address","nodeType":"ElementaryTypeName","src":"3734:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":728,"mutability":"mutable","name":"data","nameLocation":"3763:4:6","nodeType":"VariableDeclaration","scope":741,"src":"3750:17:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":727,"name":"bytes","nodeType":"ElementaryTypeName","src":"3750:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3733:35:6"},"returnParameters":{"id":732,"nodeType":"ParameterList","parameters":[{"constant":false,"id":731,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":741,"src":"3787:12:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":730,"name":"bytes","nodeType":"ElementaryTypeName","src":"3787:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3786:14:6"},"scope":1001,"src":"3712:185:6","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":760,"nodeType":"Block","src":"4266:76:6","statements":[{"expression":{"arguments":[{"id":754,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":744,"src":"4305:6:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":755,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":746,"src":"4313:4:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"30","id":756,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4319:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":757,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":748,"src":"4322:12:6","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":753,"name":"functionCallWithValue","nodeType":"Identifier","overloadedDeclarations":[781,825],"referencedDeclaration":825,"src":"4283:21:6","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,uint256,string memory) returns (bytes memory)"}},"id":758,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4283:52:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":752,"id":759,"nodeType":"Return","src":"4276:59:6"}]},"documentation":{"id":742,"nodeType":"StructuredDocumentation","src":"3903:211:6","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n `errorMessage` as a fallback revert reason when `target` reverts.\n _Available since v3.1._"},"id":761,"implemented":true,"kind":"function","modifiers":[],"name":"functionCall","nameLocation":"4128:12:6","nodeType":"FunctionDefinition","parameters":{"id":749,"nodeType":"ParameterList","parameters":[{"constant":false,"id":744,"mutability":"mutable","name":"target","nameLocation":"4158:6:6","nodeType":"VariableDeclaration","scope":761,"src":"4150:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":743,"name":"address","nodeType":"ElementaryTypeName","src":"4150:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":746,"mutability":"mutable","name":"data","nameLocation":"4187:4:6","nodeType":"VariableDeclaration","scope":761,"src":"4174:17:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":745,"name":"bytes","nodeType":"ElementaryTypeName","src":"4174:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":748,"mutability":"mutable","name":"errorMessage","nameLocation":"4215:12:6","nodeType":"VariableDeclaration","scope":761,"src":"4201:26:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":747,"name":"string","nodeType":"ElementaryTypeName","src":"4201:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"4140:93:6"},"returnParameters":{"id":752,"nodeType":"ParameterList","parameters":[{"constant":false,"id":751,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":761,"src":"4252:12:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":750,"name":"bytes","nodeType":"ElementaryTypeName","src":"4252:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4251:14:6"},"scope":1001,"src":"4119:223:6","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":780,"nodeType":"Block","src":"4817:111:6","statements":[{"expression":{"arguments":[{"id":774,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":764,"src":"4856:6:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":775,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":766,"src":"4864:4:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":776,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":768,"src":"4870:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"416464726573733a206c6f772d6c6576656c2063616c6c20776974682076616c7565206661696c6564","id":777,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4877:43:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_88a4a0b5e975840320a0475d4027005235904fdb5ece94df156f3d717cb2dbfc","typeString":"literal_string \"Address: low-level call with value failed\""},"value":"Address: low-level call with value failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_88a4a0b5e975840320a0475d4027005235904fdb5ece94df156f3d717cb2dbfc","typeString":"literal_string \"Address: low-level call with value failed\""}],"id":773,"name":"functionCallWithValue","nodeType":"Identifier","overloadedDeclarations":[781,825],"referencedDeclaration":825,"src":"4834:21:6","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,uint256,string memory) returns (bytes memory)"}},"id":778,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4834:87:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":772,"id":779,"nodeType":"Return","src":"4827:94:6"}]},"documentation":{"id":762,"nodeType":"StructuredDocumentation","src":"4348:351:6","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but also transferring `value` wei to `target`.\n Requirements:\n - the calling contract must have an ETH balance of at least `value`.\n - the called Solidity function must be `payable`.\n _Available since v3.1._"},"id":781,"implemented":true,"kind":"function","modifiers":[],"name":"functionCallWithValue","nameLocation":"4713:21:6","nodeType":"FunctionDefinition","parameters":{"id":769,"nodeType":"ParameterList","parameters":[{"constant":false,"id":764,"mutability":"mutable","name":"target","nameLocation":"4743:6:6","nodeType":"VariableDeclaration","scope":781,"src":"4735:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":763,"name":"address","nodeType":"ElementaryTypeName","src":"4735:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":766,"mutability":"mutable","name":"data","nameLocation":"4764:4:6","nodeType":"VariableDeclaration","scope":781,"src":"4751:17:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":765,"name":"bytes","nodeType":"ElementaryTypeName","src":"4751:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":768,"mutability":"mutable","name":"value","nameLocation":"4778:5:6","nodeType":"VariableDeclaration","scope":781,"src":"4770:13:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":767,"name":"uint256","nodeType":"ElementaryTypeName","src":"4770:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4734:50:6"},"returnParameters":{"id":772,"nodeType":"ParameterList","parameters":[{"constant":false,"id":771,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":781,"src":"4803:12:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":770,"name":"bytes","nodeType":"ElementaryTypeName","src":"4803:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4802:14:6"},"scope":1001,"src":"4704:224:6","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":824,"nodeType":"Block","src":"5355:267:6","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":802,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":798,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967268,"src":"5381:4:6","typeDescriptions":{"typeIdentifier":"t_contract$_AddressUpgradeable_$1001","typeString":"library AddressUpgradeable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_AddressUpgradeable_$1001","typeString":"library AddressUpgradeable"}],"id":797,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5373:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":796,"name":"address","nodeType":"ElementaryTypeName","src":"5373:7:6","typeDescriptions":{}}},"id":799,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5373:13:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":800,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5387:7:6","memberName":"balance","nodeType":"MemberAccess","src":"5373:21:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":801,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":788,"src":"5398:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5373:30:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c","id":803,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5405:40:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c","typeString":"literal_string \"Address: insufficient balance for call\""},"value":"Address: insufficient balance for call"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c","typeString":"literal_string \"Address: insufficient balance for call\""}],"id":795,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"5365:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":804,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5365:81:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":805,"nodeType":"ExpressionStatement","src":"5365:81:6"},{"assignments":[807,809],"declarations":[{"constant":false,"id":807,"mutability":"mutable","name":"success","nameLocation":"5462:7:6","nodeType":"VariableDeclaration","scope":824,"src":"5457:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":806,"name":"bool","nodeType":"ElementaryTypeName","src":"5457:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":809,"mutability":"mutable","name":"returndata","nameLocation":"5484:10:6","nodeType":"VariableDeclaration","scope":824,"src":"5471:23:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":808,"name":"bytes","nodeType":"ElementaryTypeName","src":"5471:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":816,"initialValue":{"arguments":[{"id":814,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":786,"src":"5524:4:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":810,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":784,"src":"5498:6:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":811,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5505:4:6","memberName":"call","nodeType":"MemberAccess","src":"5498:11:6","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":813,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":812,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":788,"src":"5517:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"5498:25:6","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":815,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5498:31:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"5456:73:6"},{"expression":{"arguments":[{"id":818,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":784,"src":"5573:6:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":819,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":807,"src":"5581:7:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":820,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":809,"src":"5590:10:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":821,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":790,"src":"5602:12:6","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":817,"name":"verifyCallResultFromTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":956,"src":"5546:26:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bool,bytes memory,string memory) view returns (bytes memory)"}},"id":822,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5546:69:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":794,"id":823,"nodeType":"Return","src":"5539:76:6"}]},"documentation":{"id":782,"nodeType":"StructuredDocumentation","src":"4934:237:6","text":" @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n with `errorMessage` as a fallback revert reason when `target` reverts.\n _Available since v3.1._"},"id":825,"implemented":true,"kind":"function","modifiers":[],"name":"functionCallWithValue","nameLocation":"5185:21:6","nodeType":"FunctionDefinition","parameters":{"id":791,"nodeType":"ParameterList","parameters":[{"constant":false,"id":784,"mutability":"mutable","name":"target","nameLocation":"5224:6:6","nodeType":"VariableDeclaration","scope":825,"src":"5216:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":783,"name":"address","nodeType":"ElementaryTypeName","src":"5216:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":786,"mutability":"mutable","name":"data","nameLocation":"5253:4:6","nodeType":"VariableDeclaration","scope":825,"src":"5240:17:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":785,"name":"bytes","nodeType":"ElementaryTypeName","src":"5240:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":788,"mutability":"mutable","name":"value","nameLocation":"5275:5:6","nodeType":"VariableDeclaration","scope":825,"src":"5267:13:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":787,"name":"uint256","nodeType":"ElementaryTypeName","src":"5267:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":790,"mutability":"mutable","name":"errorMessage","nameLocation":"5304:12:6","nodeType":"VariableDeclaration","scope":825,"src":"5290:26:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":789,"name":"string","nodeType":"ElementaryTypeName","src":"5290:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"5206:116:6"},"returnParameters":{"id":794,"nodeType":"ParameterList","parameters":[{"constant":false,"id":793,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":825,"src":"5341:12:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":792,"name":"bytes","nodeType":"ElementaryTypeName","src":"5341:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5340:14:6"},"scope":1001,"src":"5176:446:6","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":841,"nodeType":"Block","src":"5899:97:6","statements":[{"expression":{"arguments":[{"id":836,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":828,"src":"5935:6:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":837,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":830,"src":"5943:4:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"416464726573733a206c6f772d6c6576656c207374617469632063616c6c206661696c6564","id":838,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5949:39:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_90ec82aa826a536a4cbfae44ecfa384680faa9a4b77344bce96aa761ad904df0","typeString":"literal_string \"Address: low-level static call failed\""},"value":"Address: low-level static call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_90ec82aa826a536a4cbfae44ecfa384680faa9a4b77344bce96aa761ad904df0","typeString":"literal_string \"Address: low-level static call failed\""}],"id":835,"name":"functionStaticCall","nodeType":"Identifier","overloadedDeclarations":[842,871],"referencedDeclaration":871,"src":"5916:18:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,string memory) view returns (bytes memory)"}},"id":839,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5916:73:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":834,"id":840,"nodeType":"Return","src":"5909:80:6"}]},"documentation":{"id":826,"nodeType":"StructuredDocumentation","src":"5628:166:6","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a static call.\n _Available since v3.3._"},"id":842,"implemented":true,"kind":"function","modifiers":[],"name":"functionStaticCall","nameLocation":"5808:18:6","nodeType":"FunctionDefinition","parameters":{"id":831,"nodeType":"ParameterList","parameters":[{"constant":false,"id":828,"mutability":"mutable","name":"target","nameLocation":"5835:6:6","nodeType":"VariableDeclaration","scope":842,"src":"5827:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":827,"name":"address","nodeType":"ElementaryTypeName","src":"5827:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":830,"mutability":"mutable","name":"data","nameLocation":"5856:4:6","nodeType":"VariableDeclaration","scope":842,"src":"5843:17:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":829,"name":"bytes","nodeType":"ElementaryTypeName","src":"5843:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5826:35:6"},"returnParameters":{"id":834,"nodeType":"ParameterList","parameters":[{"constant":false,"id":833,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":842,"src":"5885:12:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":832,"name":"bytes","nodeType":"ElementaryTypeName","src":"5885:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5884:14:6"},"scope":1001,"src":"5799:197:6","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":870,"nodeType":"Block","src":"6338:168:6","statements":[{"assignments":[855,857],"declarations":[{"constant":false,"id":855,"mutability":"mutable","name":"success","nameLocation":"6354:7:6","nodeType":"VariableDeclaration","scope":870,"src":"6349:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":854,"name":"bool","nodeType":"ElementaryTypeName","src":"6349:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":857,"mutability":"mutable","name":"returndata","nameLocation":"6376:10:6","nodeType":"VariableDeclaration","scope":870,"src":"6363:23:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":856,"name":"bytes","nodeType":"ElementaryTypeName","src":"6363:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":862,"initialValue":{"arguments":[{"id":860,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":847,"src":"6408:4:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":858,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":845,"src":"6390:6:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":859,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6397:10:6","memberName":"staticcall","nodeType":"MemberAccess","src":"6390:17:6","typeDescriptions":{"typeIdentifier":"t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) view returns (bool,bytes memory)"}},"id":861,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6390:23:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"6348:65:6"},{"expression":{"arguments":[{"id":864,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":845,"src":"6457:6:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":865,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":855,"src":"6465:7:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":866,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":857,"src":"6474:10:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":867,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":849,"src":"6486:12:6","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":863,"name":"verifyCallResultFromTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":956,"src":"6430:26:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bool,bytes memory,string memory) view returns (bytes memory)"}},"id":868,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6430:69:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":853,"id":869,"nodeType":"Return","src":"6423:76:6"}]},"documentation":{"id":843,"nodeType":"StructuredDocumentation","src":"6002:173:6","text":" @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n but performing a static call.\n _Available since v3.3._"},"id":871,"implemented":true,"kind":"function","modifiers":[],"name":"functionStaticCall","nameLocation":"6189:18:6","nodeType":"FunctionDefinition","parameters":{"id":850,"nodeType":"ParameterList","parameters":[{"constant":false,"id":845,"mutability":"mutable","name":"target","nameLocation":"6225:6:6","nodeType":"VariableDeclaration","scope":871,"src":"6217:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":844,"name":"address","nodeType":"ElementaryTypeName","src":"6217:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":847,"mutability":"mutable","name":"data","nameLocation":"6254:4:6","nodeType":"VariableDeclaration","scope":871,"src":"6241:17:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":846,"name":"bytes","nodeType":"ElementaryTypeName","src":"6241:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":849,"mutability":"mutable","name":"errorMessage","nameLocation":"6282:12:6","nodeType":"VariableDeclaration","scope":871,"src":"6268:26:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":848,"name":"string","nodeType":"ElementaryTypeName","src":"6268:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"6207:93:6"},"returnParameters":{"id":853,"nodeType":"ParameterList","parameters":[{"constant":false,"id":852,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":871,"src":"6324:12:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":851,"name":"bytes","nodeType":"ElementaryTypeName","src":"6324:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6323:14:6"},"scope":1001,"src":"6180:326:6","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":887,"nodeType":"Block","src":"6782:101:6","statements":[{"expression":{"arguments":[{"id":882,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":874,"src":"6820:6:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":883,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":876,"src":"6828:4:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564","id":884,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6834:41:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_9fdcd12e4b726339b32a442b0a448365d5d85c96b2d2cff917b4f66c63110398","typeString":"literal_string \"Address: low-level delegate call failed\""},"value":"Address: low-level delegate call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_9fdcd12e4b726339b32a442b0a448365d5d85c96b2d2cff917b4f66c63110398","typeString":"literal_string \"Address: low-level delegate call failed\""}],"id":881,"name":"functionDelegateCall","nodeType":"Identifier","overloadedDeclarations":[888,917],"referencedDeclaration":917,"src":"6799:20:6","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,string memory) returns (bytes memory)"}},"id":885,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6799:77:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":880,"id":886,"nodeType":"Return","src":"6792:84:6"}]},"documentation":{"id":872,"nodeType":"StructuredDocumentation","src":"6512:168:6","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a delegate call.\n _Available since v3.4._"},"id":888,"implemented":true,"kind":"function","modifiers":[],"name":"functionDelegateCall","nameLocation":"6694:20:6","nodeType":"FunctionDefinition","parameters":{"id":877,"nodeType":"ParameterList","parameters":[{"constant":false,"id":874,"mutability":"mutable","name":"target","nameLocation":"6723:6:6","nodeType":"VariableDeclaration","scope":888,"src":"6715:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":873,"name":"address","nodeType":"ElementaryTypeName","src":"6715:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":876,"mutability":"mutable","name":"data","nameLocation":"6744:4:6","nodeType":"VariableDeclaration","scope":888,"src":"6731:17:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":875,"name":"bytes","nodeType":"ElementaryTypeName","src":"6731:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6714:35:6"},"returnParameters":{"id":880,"nodeType":"ParameterList","parameters":[{"constant":false,"id":879,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":888,"src":"6768:12:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":878,"name":"bytes","nodeType":"ElementaryTypeName","src":"6768:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6767:14:6"},"scope":1001,"src":"6685:198:6","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":916,"nodeType":"Block","src":"7224:170:6","statements":[{"assignments":[901,903],"declarations":[{"constant":false,"id":901,"mutability":"mutable","name":"success","nameLocation":"7240:7:6","nodeType":"VariableDeclaration","scope":916,"src":"7235:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":900,"name":"bool","nodeType":"ElementaryTypeName","src":"7235:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":903,"mutability":"mutable","name":"returndata","nameLocation":"7262:10:6","nodeType":"VariableDeclaration","scope":916,"src":"7249:23:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":902,"name":"bytes","nodeType":"ElementaryTypeName","src":"7249:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":908,"initialValue":{"arguments":[{"id":906,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":893,"src":"7296:4:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":904,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":891,"src":"7276:6:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":905,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7283:12:6","memberName":"delegatecall","nodeType":"MemberAccess","src":"7276:19:6","typeDescriptions":{"typeIdentifier":"t_function_baredelegatecall_nonpayable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) returns (bool,bytes memory)"}},"id":907,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7276:25:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"7234:67:6"},{"expression":{"arguments":[{"id":910,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":891,"src":"7345:6:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":911,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":901,"src":"7353:7:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":912,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":903,"src":"7362:10:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":913,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":895,"src":"7374:12:6","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":909,"name":"verifyCallResultFromTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":956,"src":"7318:26:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bool,bytes memory,string memory) view returns (bytes memory)"}},"id":914,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7318:69:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":899,"id":915,"nodeType":"Return","src":"7311:76:6"}]},"documentation":{"id":889,"nodeType":"StructuredDocumentation","src":"6889:175:6","text":" @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n but performing a delegate call.\n _Available since v3.4._"},"id":917,"implemented":true,"kind":"function","modifiers":[],"name":"functionDelegateCall","nameLocation":"7078:20:6","nodeType":"FunctionDefinition","parameters":{"id":896,"nodeType":"ParameterList","parameters":[{"constant":false,"id":891,"mutability":"mutable","name":"target","nameLocation":"7116:6:6","nodeType":"VariableDeclaration","scope":917,"src":"7108:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":890,"name":"address","nodeType":"ElementaryTypeName","src":"7108:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":893,"mutability":"mutable","name":"data","nameLocation":"7145:4:6","nodeType":"VariableDeclaration","scope":917,"src":"7132:17:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":892,"name":"bytes","nodeType":"ElementaryTypeName","src":"7132:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":895,"mutability":"mutable","name":"errorMessage","nameLocation":"7173:12:6","nodeType":"VariableDeclaration","scope":917,"src":"7159:26:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":894,"name":"string","nodeType":"ElementaryTypeName","src":"7159:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"7098:93:6"},"returnParameters":{"id":899,"nodeType":"ParameterList","parameters":[{"constant":false,"id":898,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":917,"src":"7210:12:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":897,"name":"bytes","nodeType":"ElementaryTypeName","src":"7210:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7209:14:6"},"scope":1001,"src":"7069:325:6","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":955,"nodeType":"Block","src":"7876:434:6","statements":[{"condition":{"id":931,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":922,"src":"7890:7:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":953,"nodeType":"Block","src":"8246:58:6","statements":[{"expression":{"arguments":[{"id":949,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":924,"src":"8268:10:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":950,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":926,"src":"8280:12:6","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":948,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1000,"src":"8260:7:6","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (bytes memory,string memory) pure"}},"id":951,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8260:33:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":952,"nodeType":"ExpressionStatement","src":"8260:33:6"}]},"id":954,"nodeType":"IfStatement","src":"7886:418:6","trueBody":{"id":947,"nodeType":"Block","src":"7899:341:6","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":935,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":932,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":924,"src":"7917:10:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":933,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7928:6:6","memberName":"length","nodeType":"MemberAccess","src":"7917:17:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":934,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7938:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7917:22:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":944,"nodeType":"IfStatement","src":"7913:286:6","trueBody":{"id":943,"nodeType":"Block","src":"7941:258:6","statements":[{"expression":{"arguments":[{"arguments":[{"id":938,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":920,"src":"8143:6:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":937,"name":"isContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":689,"src":"8132:10:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":939,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8132:18:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374","id":940,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8152:31:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad","typeString":"literal_string \"Address: call to non-contract\""},"value":"Address: call to non-contract"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad","typeString":"literal_string \"Address: call to non-contract\""}],"id":936,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"8124:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":941,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8124:60:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":942,"nodeType":"ExpressionStatement","src":"8124:60:6"}]}},{"expression":{"id":945,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":924,"src":"8219:10:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":930,"id":946,"nodeType":"Return","src":"8212:17:6"}]}}]},"documentation":{"id":918,"nodeType":"StructuredDocumentation","src":"7400:277:6","text":" @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\n the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\n _Available since v4.8._"},"id":956,"implemented":true,"kind":"function","modifiers":[],"name":"verifyCallResultFromTarget","nameLocation":"7691:26:6","nodeType":"FunctionDefinition","parameters":{"id":927,"nodeType":"ParameterList","parameters":[{"constant":false,"id":920,"mutability":"mutable","name":"target","nameLocation":"7735:6:6","nodeType":"VariableDeclaration","scope":956,"src":"7727:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":919,"name":"address","nodeType":"ElementaryTypeName","src":"7727:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":922,"mutability":"mutable","name":"success","nameLocation":"7756:7:6","nodeType":"VariableDeclaration","scope":956,"src":"7751:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":921,"name":"bool","nodeType":"ElementaryTypeName","src":"7751:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":924,"mutability":"mutable","name":"returndata","nameLocation":"7786:10:6","nodeType":"VariableDeclaration","scope":956,"src":"7773:23:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":923,"name":"bytes","nodeType":"ElementaryTypeName","src":"7773:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":926,"mutability":"mutable","name":"errorMessage","nameLocation":"7820:12:6","nodeType":"VariableDeclaration","scope":956,"src":"7806:26:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":925,"name":"string","nodeType":"ElementaryTypeName","src":"7806:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"7717:121:6"},"returnParameters":{"id":930,"nodeType":"ParameterList","parameters":[{"constant":false,"id":929,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":956,"src":"7862:12:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":928,"name":"bytes","nodeType":"ElementaryTypeName","src":"7862:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7861:14:6"},"scope":1001,"src":"7682:628:6","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":979,"nodeType":"Block","src":"8691:135:6","statements":[{"condition":{"id":968,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":959,"src":"8705:7:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":977,"nodeType":"Block","src":"8762:58:6","statements":[{"expression":{"arguments":[{"id":973,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":961,"src":"8784:10:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":974,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":963,"src":"8796:12:6","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":972,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1000,"src":"8776:7:6","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (bytes memory,string memory) pure"}},"id":975,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8776:33:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":976,"nodeType":"ExpressionStatement","src":"8776:33:6"}]},"id":978,"nodeType":"IfStatement","src":"8701:119:6","trueBody":{"id":971,"nodeType":"Block","src":"8714:42:6","statements":[{"expression":{"id":969,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":961,"src":"8735:10:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":967,"id":970,"nodeType":"Return","src":"8728:17:6"}]}}]},"documentation":{"id":957,"nodeType":"StructuredDocumentation","src":"8316:210:6","text":" @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\n revert reason or using the provided one.\n _Available since v4.3._"},"id":980,"implemented":true,"kind":"function","modifiers":[],"name":"verifyCallResult","nameLocation":"8540:16:6","nodeType":"FunctionDefinition","parameters":{"id":964,"nodeType":"ParameterList","parameters":[{"constant":false,"id":959,"mutability":"mutable","name":"success","nameLocation":"8571:7:6","nodeType":"VariableDeclaration","scope":980,"src":"8566:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":958,"name":"bool","nodeType":"ElementaryTypeName","src":"8566:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":961,"mutability":"mutable","name":"returndata","nameLocation":"8601:10:6","nodeType":"VariableDeclaration","scope":980,"src":"8588:23:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":960,"name":"bytes","nodeType":"ElementaryTypeName","src":"8588:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":963,"mutability":"mutable","name":"errorMessage","nameLocation":"8635:12:6","nodeType":"VariableDeclaration","scope":980,"src":"8621:26:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":962,"name":"string","nodeType":"ElementaryTypeName","src":"8621:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"8556:97:6"},"returnParameters":{"id":967,"nodeType":"ParameterList","parameters":[{"constant":false,"id":966,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":980,"src":"8677:12:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":965,"name":"bytes","nodeType":"ElementaryTypeName","src":"8677:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"8676:14:6"},"scope":1001,"src":"8531:295:6","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":999,"nodeType":"Block","src":"8915:457:6","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":990,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":987,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":982,"src":"8991:10:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":988,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9002:6:6","memberName":"length","nodeType":"MemberAccess","src":"8991:17:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":989,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9011:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8991:21:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":997,"nodeType":"Block","src":"9321:45:6","statements":[{"expression":{"arguments":[{"id":994,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":984,"src":"9342:12:6","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":993,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[4294967277,4294967277],"referencedDeclaration":4294967277,"src":"9335:6:6","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":995,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9335:20:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":996,"nodeType":"ExpressionStatement","src":"9335:20:6"}]},"id":998,"nodeType":"IfStatement","src":"8987:379:6","trueBody":{"id":992,"nodeType":"Block","src":"9014:301:6","statements":[{"AST":{"nodeType":"YulBlock","src":"9172:133:6","statements":[{"nodeType":"YulVariableDeclaration","src":"9190:40:6","value":{"arguments":[{"name":"returndata","nodeType":"YulIdentifier","src":"9219:10:6"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"9213:5:6"},"nodeType":"YulFunctionCall","src":"9213:17:6"},"variables":[{"name":"returndata_size","nodeType":"YulTypedName","src":"9194:15:6","type":""}]},{"expression":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9258:2:6","type":"","value":"32"},{"name":"returndata","nodeType":"YulIdentifier","src":"9262:10:6"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9254:3:6"},"nodeType":"YulFunctionCall","src":"9254:19:6"},{"name":"returndata_size","nodeType":"YulIdentifier","src":"9275:15:6"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9247:6:6"},"nodeType":"YulFunctionCall","src":"9247:44:6"},"nodeType":"YulExpressionStatement","src":"9247:44:6"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"london","externalReferences":[{"declaration":982,"isOffset":false,"isSlot":false,"src":"9219:10:6","valueSize":1},{"declaration":982,"isOffset":false,"isSlot":false,"src":"9262:10:6","valueSize":1}],"id":991,"nodeType":"InlineAssembly","src":"9163:142:6"}]}}]},"id":1000,"implemented":true,"kind":"function","modifiers":[],"name":"_revert","nameLocation":"8841:7:6","nodeType":"FunctionDefinition","parameters":{"id":985,"nodeType":"ParameterList","parameters":[{"constant":false,"id":982,"mutability":"mutable","name":"returndata","nameLocation":"8862:10:6","nodeType":"VariableDeclaration","scope":1000,"src":"8849:23:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":981,"name":"bytes","nodeType":"ElementaryTypeName","src":"8849:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":984,"mutability":"mutable","name":"errorMessage","nameLocation":"8888:12:6","nodeType":"VariableDeclaration","scope":1000,"src":"8874:26:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":983,"name":"string","nodeType":"ElementaryTypeName","src":"8874:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"8848:53:6"},"returnParameters":{"id":986,"nodeType":"ParameterList","parameters":[],"src":"8915:0:6"},"scope":1001,"src":"8832:540:6","stateMutability":"pure","virtual":false,"visibility":"private"}],"scope":1002,"src":"194:9180:6","usedErrors":[]}],"src":"101:9274:6"},"id":6},"@openzeppelin/contracts-upgradeable/utils/CheckpointsUpgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/CheckpointsUpgradeable.sol","exportedSymbols":{"CheckpointsUpgradeable":[2542],"MathUpgradeable":[3700],"SafeCastUpgradeable":[5241]},"id":2543,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1003,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"193:23:7"},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/math/MathUpgradeable.sol","file":"./math/MathUpgradeable.sol","id":1004,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2543,"sourceUnit":3701,"src":"218:36:7","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol","file":"./math/SafeCastUpgradeable.sol","id":1005,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2543,"sourceUnit":5242,"src":"255:40:7","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"CheckpointsUpgradeable","contractDependencies":[],"contractKind":"library","documentation":{"id":1006,"nodeType":"StructuredDocumentation","src":"297:432:7","text":" @dev This library defines the `History` struct, for checkpointing values as they change at different points in\n time, and later looking up past values by block number. See {Votes} as an example.\n To create a history of checkpoints define a variable type `Checkpoints.History` in your contract, and store a new\n checkpoint for the current transaction block using the {push} function.\n _Available since v4.5._"},"fullyImplemented":true,"id":2542,"linearizedBaseContracts":[2542],"name":"CheckpointsUpgradeable","nameLocation":"738:22:7","nodeType":"ContractDefinition","nodes":[{"canonicalName":"CheckpointsUpgradeable.History","id":1011,"members":[{"constant":false,"id":1010,"mutability":"mutable","name":"_checkpoints","nameLocation":"805:12:7","nodeType":"VariableDeclaration","scope":1011,"src":"792:25:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint_$1016_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint[]"},"typeName":{"baseType":{"id":1008,"nodeType":"UserDefinedTypeName","pathNode":{"id":1007,"name":"Checkpoint","nameLocations":["792:10:7"],"nodeType":"IdentifierPath","referencedDeclaration":1016,"src":"792:10:7"},"referencedDeclaration":1016,"src":"792:10:7","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint_$1016_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint"}},"id":1009,"nodeType":"ArrayTypeName","src":"792:12:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint_$1016_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint[]"}},"visibility":"internal"}],"name":"History","nameLocation":"774:7:7","nodeType":"StructDefinition","scope":2542,"src":"767:57:7","visibility":"public"},{"canonicalName":"CheckpointsUpgradeable.Checkpoint","id":1016,"members":[{"constant":false,"id":1013,"mutability":"mutable","name":"_blockNumber","nameLocation":"865:12:7","nodeType":"VariableDeclaration","scope":1016,"src":"858:19:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":1012,"name":"uint32","nodeType":"ElementaryTypeName","src":"858:6:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":1015,"mutability":"mutable","name":"_value","nameLocation":"895:6:7","nodeType":"VariableDeclaration","scope":1016,"src":"887:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"},"typeName":{"id":1014,"name":"uint224","nodeType":"ElementaryTypeName","src":"887:7:7","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"visibility":"internal"}],"name":"Checkpoint","nameLocation":"837:10:7","nodeType":"StructDefinition","scope":2542,"src":"830:78:7","visibility":"public"},{"body":{"id":1072,"nodeType":"Block","src":"1350:355:7","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1031,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1028,"name":"blockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1022,"src":"1368:11:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":1029,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967292,"src":"1382:5:7","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":1030,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1388:6:7","memberName":"number","nodeType":"MemberAccess","src":"1382:12:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1368:26:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"436865636b706f696e74733a20626c6f636b206e6f7420796574206d696e6564","id":1032,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1396:34:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_65bd29ebd873d82da6b3634513fc6582859c8e00f2a09cb4bdbeddf7d05eb5be","typeString":"literal_string \"Checkpoints: block not yet mined\""},"value":"Checkpoints: block not yet mined"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_65bd29ebd873d82da6b3634513fc6582859c8e00f2a09cb4bdbeddf7d05eb5be","typeString":"literal_string \"Checkpoints: block not yet mined\""}],"id":1027,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"1360:7:7","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1033,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1360:71:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1034,"nodeType":"ExpressionStatement","src":"1360:71:7"},{"assignments":[1036],"declarations":[{"constant":false,"id":1036,"mutability":"mutable","name":"key","nameLocation":"1448:3:7","nodeType":"VariableDeclaration","scope":1072,"src":"1441:10:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":1035,"name":"uint32","nodeType":"ElementaryTypeName","src":"1441:6:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"id":1041,"initialValue":{"arguments":[{"id":1039,"name":"blockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1022,"src":"1483:11:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1037,"name":"SafeCastUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5241,"src":"1454:19:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCastUpgradeable_$5241_$","typeString":"type(library SafeCastUpgradeable)"}},"id":1038,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1474:8:7","memberName":"toUint32","nodeType":"MemberAccess","referencedDeclaration":4403,"src":"1454:28:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint32_$","typeString":"function (uint256) pure returns (uint32)"}},"id":1040,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1454:41:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"VariableDeclarationStatement","src":"1441:54:7"},{"assignments":[1043],"declarations":[{"constant":false,"id":1043,"mutability":"mutable","name":"len","nameLocation":"1514:3:7","nodeType":"VariableDeclaration","scope":1072,"src":"1506:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1042,"name":"uint256","nodeType":"ElementaryTypeName","src":"1506:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1047,"initialValue":{"expression":{"expression":{"id":1044,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1020,"src":"1520:4:7","typeDescriptions":{"typeIdentifier":"t_struct$_History_$1011_storage_ptr","typeString":"struct CheckpointsUpgradeable.History storage pointer"}},"id":1045,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1525:12:7","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":1010,"src":"1520:17:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint_$1016_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint storage ref[] storage ref"}},"id":1046,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1538:6:7","memberName":"length","nodeType":"MemberAccess","src":"1520:24:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1506:38:7"},{"assignments":[1049],"declarations":[{"constant":false,"id":1049,"mutability":"mutable","name":"pos","nameLocation":"1562:3:7","nodeType":"VariableDeclaration","scope":1072,"src":"1554:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1048,"name":"uint256","nodeType":"ElementaryTypeName","src":"1554:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1057,"initialValue":{"arguments":[{"expression":{"id":1051,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1020,"src":"1587:4:7","typeDescriptions":{"typeIdentifier":"t_struct$_History_$1011_storage_ptr","typeString":"struct CheckpointsUpgradeable.History storage pointer"}},"id":1052,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1592:12:7","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":1010,"src":"1587:17:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint_$1016_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint storage ref[] storage ref"}},{"id":1053,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1036,"src":"1606:3:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"hexValue":"30","id":1054,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1611:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":1055,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1043,"src":"1614:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint_$1016_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint storage ref[] storage ref"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1050,"name":"_upperBinaryLookup","nodeType":"Identifier","overloadedDeclarations":[1470,1972,2474],"referencedDeclaration":1470,"src":"1568:18:7","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_array$_t_struct$_Checkpoint_$1016_storage_$dyn_storage_ptr_$_t_uint32_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint storage ref[] storage pointer,uint32,uint256,uint256) view returns (uint256)"}},"id":1056,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1568:50:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1554:64:7"},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1060,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1058,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1049,"src":"1635:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1059,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1642:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1635:8:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"expression":{"arguments":[{"expression":{"id":1063,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1020,"src":"1664:4:7","typeDescriptions":{"typeIdentifier":"t_struct$_History_$1011_storage_ptr","typeString":"struct CheckpointsUpgradeable.History storage pointer"}},"id":1064,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1669:12:7","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":1010,"src":"1664:17:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint_$1016_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint storage ref[] storage ref"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1067,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1065,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1049,"src":"1683:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":1066,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1689:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1683:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint_$1016_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint storage ref[] storage ref"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1062,"name":"_unsafeAccess","nodeType":"Identifier","overloadedDeclarations":[1537,2039,2541],"referencedDeclaration":1537,"src":"1650:13:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_struct$_Checkpoint_$1016_storage_$dyn_storage_ptr_$_t_uint256_$returns$_t_struct$_Checkpoint_$1016_storage_ptr_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint storage ref[] storage pointer,uint256) pure returns (struct CheckpointsUpgradeable.Checkpoint storage pointer)"}},"id":1068,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1650:41:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint_$1016_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint storage pointer"}},"id":1069,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1692:6:7","memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":1015,"src":"1650:48:7","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"id":1070,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"1635:63:7","trueExpression":{"hexValue":"30","id":1061,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1646:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"functionReturnParameters":1026,"id":1071,"nodeType":"Return","src":"1628:70:7"}]},"documentation":{"id":1017,"nodeType":"StructuredDocumentation","src":"914:336:7","text":" @dev Returns the value at a given block number. If a checkpoint is not available at that block, the closest one\n before it is returned, or zero otherwise. Because the number returned corresponds to that at the end of the\n block, the requested block number must be in the past, excluding the current block."},"id":1073,"implemented":true,"kind":"function","modifiers":[],"name":"getAtBlock","nameLocation":"1264:10:7","nodeType":"FunctionDefinition","parameters":{"id":1023,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1020,"mutability":"mutable","name":"self","nameLocation":"1291:4:7","nodeType":"VariableDeclaration","scope":1073,"src":"1275:20:7","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_History_$1011_storage_ptr","typeString":"struct CheckpointsUpgradeable.History"},"typeName":{"id":1019,"nodeType":"UserDefinedTypeName","pathNode":{"id":1018,"name":"History","nameLocations":["1275:7:7"],"nodeType":"IdentifierPath","referencedDeclaration":1011,"src":"1275:7:7"},"referencedDeclaration":1011,"src":"1275:7:7","typeDescriptions":{"typeIdentifier":"t_struct$_History_$1011_storage_ptr","typeString":"struct CheckpointsUpgradeable.History"}},"visibility":"internal"},{"constant":false,"id":1022,"mutability":"mutable","name":"blockNumber","nameLocation":"1305:11:7","nodeType":"VariableDeclaration","scope":1073,"src":"1297:19:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1021,"name":"uint256","nodeType":"ElementaryTypeName","src":"1297:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1274:43:7"},"returnParameters":{"id":1026,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1025,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1073,"src":"1341:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1024,"name":"uint256","nodeType":"ElementaryTypeName","src":"1341:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1340:9:7"},"scope":2542,"src":"1255:450:7","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":1172,"nodeType":"Block","src":"2211:677:7","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1088,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1085,"name":"blockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1079,"src":"2229:11:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":1086,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967292,"src":"2243:5:7","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":1087,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2249:6:7","memberName":"number","nodeType":"MemberAccess","src":"2243:12:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2229:26:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"436865636b706f696e74733a20626c6f636b206e6f7420796574206d696e6564","id":1089,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2257:34:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_65bd29ebd873d82da6b3634513fc6582859c8e00f2a09cb4bdbeddf7d05eb5be","typeString":"literal_string \"Checkpoints: block not yet mined\""},"value":"Checkpoints: block not yet mined"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_65bd29ebd873d82da6b3634513fc6582859c8e00f2a09cb4bdbeddf7d05eb5be","typeString":"literal_string \"Checkpoints: block not yet mined\""}],"id":1084,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"2221:7:7","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1090,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2221:71:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1091,"nodeType":"ExpressionStatement","src":"2221:71:7"},{"assignments":[1093],"declarations":[{"constant":false,"id":1093,"mutability":"mutable","name":"key","nameLocation":"2309:3:7","nodeType":"VariableDeclaration","scope":1172,"src":"2302:10:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":1092,"name":"uint32","nodeType":"ElementaryTypeName","src":"2302:6:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"id":1098,"initialValue":{"arguments":[{"id":1096,"name":"blockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1079,"src":"2344:11:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1094,"name":"SafeCastUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5241,"src":"2315:19:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCastUpgradeable_$5241_$","typeString":"type(library SafeCastUpgradeable)"}},"id":1095,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2335:8:7","memberName":"toUint32","nodeType":"MemberAccess","referencedDeclaration":4403,"src":"2315:28:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint32_$","typeString":"function (uint256) pure returns (uint32)"}},"id":1097,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2315:41:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"VariableDeclarationStatement","src":"2302:54:7"},{"assignments":[1100],"declarations":[{"constant":false,"id":1100,"mutability":"mutable","name":"len","nameLocation":"2375:3:7","nodeType":"VariableDeclaration","scope":1172,"src":"2367:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1099,"name":"uint256","nodeType":"ElementaryTypeName","src":"2367:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1104,"initialValue":{"expression":{"expression":{"id":1101,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1077,"src":"2381:4:7","typeDescriptions":{"typeIdentifier":"t_struct$_History_$1011_storage_ptr","typeString":"struct CheckpointsUpgradeable.History storage pointer"}},"id":1102,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2386:12:7","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":1010,"src":"2381:17:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint_$1016_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint storage ref[] storage ref"}},"id":1103,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2399:6:7","memberName":"length","nodeType":"MemberAccess","src":"2381:24:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2367:38:7"},{"assignments":[1106],"declarations":[{"constant":false,"id":1106,"mutability":"mutable","name":"low","nameLocation":"2424:3:7","nodeType":"VariableDeclaration","scope":1172,"src":"2416:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1105,"name":"uint256","nodeType":"ElementaryTypeName","src":"2416:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1108,"initialValue":{"hexValue":"30","id":1107,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2430:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"2416:15:7"},{"assignments":[1110],"declarations":[{"constant":false,"id":1110,"mutability":"mutable","name":"high","nameLocation":"2449:4:7","nodeType":"VariableDeclaration","scope":1172,"src":"2441:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1109,"name":"uint256","nodeType":"ElementaryTypeName","src":"2441:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1112,"initialValue":{"id":1111,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1100,"src":"2456:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2441:18:7"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1115,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1113,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1100,"src":"2474:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"35","id":1114,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2480:1:7","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"src":"2474:7:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1147,"nodeType":"IfStatement","src":"2470:253:7","trueBody":{"id":1146,"nodeType":"Block","src":"2483:240:7","statements":[{"assignments":[1117],"declarations":[{"constant":false,"id":1117,"mutability":"mutable","name":"mid","nameLocation":"2505:3:7","nodeType":"VariableDeclaration","scope":1146,"src":"2497:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1116,"name":"uint256","nodeType":"ElementaryTypeName","src":"2497:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1124,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1123,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1118,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1100,"src":"2511:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[{"id":1121,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1100,"src":"2538:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1119,"name":"MathUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3700,"src":"2517:15:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_MathUpgradeable_$3700_$","typeString":"type(library MathUpgradeable)"}},"id":1120,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2533:4:7","memberName":"sqrt","nodeType":"MemberAccess","referencedDeclaration":3204,"src":"2517:20:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1122,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2517:25:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2511:31:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2497:45:7"},{"condition":{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":1132,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1125,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1093,"src":"2560:3:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"arguments":[{"expression":{"id":1127,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1077,"src":"2580:4:7","typeDescriptions":{"typeIdentifier":"t_struct$_History_$1011_storage_ptr","typeString":"struct CheckpointsUpgradeable.History storage pointer"}},"id":1128,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2585:12:7","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":1010,"src":"2580:17:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint_$1016_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint storage ref[] storage ref"}},{"id":1129,"name":"mid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1117,"src":"2599:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint_$1016_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint storage ref[] storage ref"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1126,"name":"_unsafeAccess","nodeType":"Identifier","overloadedDeclarations":[1537,2039,2541],"referencedDeclaration":1537,"src":"2566:13:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_struct$_Checkpoint_$1016_storage_$dyn_storage_ptr_$_t_uint256_$returns$_t_struct$_Checkpoint_$1016_storage_ptr_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint storage ref[] storage pointer,uint256) pure returns (struct CheckpointsUpgradeable.Checkpoint storage pointer)"}},"id":1130,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2566:37:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint_$1016_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint storage pointer"}},"id":1131,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2604:12:7","memberName":"_blockNumber","nodeType":"MemberAccess","referencedDeclaration":1013,"src":"2566:50:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"2560:56:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1144,"nodeType":"Block","src":"2667:46:7","statements":[{"expression":{"id":1142,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1138,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1106,"src":"2685:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1141,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1139,"name":"mid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1117,"src":"2691:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1140,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2697:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2691:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2685:13:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1143,"nodeType":"ExpressionStatement","src":"2685:13:7"}]},"id":1145,"nodeType":"IfStatement","src":"2556:157:7","trueBody":{"id":1137,"nodeType":"Block","src":"2618:43:7","statements":[{"expression":{"id":1135,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1133,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1110,"src":"2636:4:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1134,"name":"mid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1117,"src":"2643:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2636:10:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1136,"nodeType":"ExpressionStatement","src":"2636:10:7"}]}}]}},{"assignments":[1149],"declarations":[{"constant":false,"id":1149,"mutability":"mutable","name":"pos","nameLocation":"2741:3:7","nodeType":"VariableDeclaration","scope":1172,"src":"2733:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1148,"name":"uint256","nodeType":"ElementaryTypeName","src":"2733:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1157,"initialValue":{"arguments":[{"expression":{"id":1151,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1077,"src":"2766:4:7","typeDescriptions":{"typeIdentifier":"t_struct$_History_$1011_storage_ptr","typeString":"struct CheckpointsUpgradeable.History storage pointer"}},"id":1152,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2771:12:7","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":1010,"src":"2766:17:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint_$1016_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint storage ref[] storage ref"}},{"id":1153,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1093,"src":"2785:3:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":1154,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1106,"src":"2790:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1155,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1110,"src":"2795:4:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint_$1016_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint storage ref[] storage ref"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1150,"name":"_upperBinaryLookup","nodeType":"Identifier","overloadedDeclarations":[1470,1972,2474],"referencedDeclaration":1470,"src":"2747:18:7","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_array$_t_struct$_Checkpoint_$1016_storage_$dyn_storage_ptr_$_t_uint32_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint storage ref[] storage pointer,uint32,uint256,uint256) view returns (uint256)"}},"id":1156,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2747:53:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2733:67:7"},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1160,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1158,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1149,"src":"2818:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1159,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2825:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2818:8:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"expression":{"arguments":[{"expression":{"id":1163,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1077,"src":"2847:4:7","typeDescriptions":{"typeIdentifier":"t_struct$_History_$1011_storage_ptr","typeString":"struct CheckpointsUpgradeable.History storage pointer"}},"id":1164,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2852:12:7","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":1010,"src":"2847:17:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint_$1016_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint storage ref[] storage ref"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1167,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1165,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1149,"src":"2866:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":1166,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2872:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2866:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint_$1016_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint storage ref[] storage ref"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1162,"name":"_unsafeAccess","nodeType":"Identifier","overloadedDeclarations":[1537,2039,2541],"referencedDeclaration":1537,"src":"2833:13:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_struct$_Checkpoint_$1016_storage_$dyn_storage_ptr_$_t_uint256_$returns$_t_struct$_Checkpoint_$1016_storage_ptr_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint storage ref[] storage pointer,uint256) pure returns (struct CheckpointsUpgradeable.Checkpoint storage pointer)"}},"id":1168,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2833:41:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint_$1016_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint storage pointer"}},"id":1169,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2875:6:7","memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":1015,"src":"2833:48:7","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"id":1170,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"2818:63:7","trueExpression":{"hexValue":"30","id":1161,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2829:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"functionReturnParameters":1083,"id":1171,"nodeType":"Return","src":"2811:70:7"}]},"documentation":{"id":1074,"nodeType":"StructuredDocumentation","src":"1711:386:7","text":" @dev Returns the value at a given block number. If a checkpoint is not available at that block, the closest one\n before it is returned, or zero otherwise. Similar to {upperLookup} but optimized for the case when the searched\n checkpoint is probably \"recent\", defined as being among the last sqrt(N) checkpoints where N is the number of\n checkpoints."},"id":1173,"implemented":true,"kind":"function","modifiers":[],"name":"getAtProbablyRecentBlock","nameLocation":"2111:24:7","nodeType":"FunctionDefinition","parameters":{"id":1080,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1077,"mutability":"mutable","name":"self","nameLocation":"2152:4:7","nodeType":"VariableDeclaration","scope":1173,"src":"2136:20:7","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_History_$1011_storage_ptr","typeString":"struct CheckpointsUpgradeable.History"},"typeName":{"id":1076,"nodeType":"UserDefinedTypeName","pathNode":{"id":1075,"name":"History","nameLocations":["2136:7:7"],"nodeType":"IdentifierPath","referencedDeclaration":1011,"src":"2136:7:7"},"referencedDeclaration":1011,"src":"2136:7:7","typeDescriptions":{"typeIdentifier":"t_struct$_History_$1011_storage_ptr","typeString":"struct CheckpointsUpgradeable.History"}},"visibility":"internal"},{"constant":false,"id":1079,"mutability":"mutable","name":"blockNumber","nameLocation":"2166:11:7","nodeType":"VariableDeclaration","scope":1173,"src":"2158:19:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1078,"name":"uint256","nodeType":"ElementaryTypeName","src":"2158:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2135:43:7"},"returnParameters":{"id":1083,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1082,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1173,"src":"2202:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1081,"name":"uint256","nodeType":"ElementaryTypeName","src":"2202:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2201:9:7"},"scope":2542,"src":"2102:786:7","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":1200,"nodeType":"Block","src":"3153:132:7","statements":[{"expression":{"arguments":[{"expression":{"id":1187,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1177,"src":"3178:4:7","typeDescriptions":{"typeIdentifier":"t_struct$_History_$1011_storage_ptr","typeString":"struct CheckpointsUpgradeable.History storage pointer"}},"id":1188,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3183:12:7","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":1010,"src":"3178:17:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint_$1016_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint storage ref[] storage ref"}},{"arguments":[{"expression":{"id":1191,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967292,"src":"3226:5:7","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":1192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3232:6:7","memberName":"number","nodeType":"MemberAccess","src":"3226:12:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1189,"name":"SafeCastUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5241,"src":"3197:19:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCastUpgradeable_$5241_$","typeString":"type(library SafeCastUpgradeable)"}},"id":1190,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3217:8:7","memberName":"toUint32","nodeType":"MemberAccess","referencedDeclaration":4403,"src":"3197:28:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint32_$","typeString":"function (uint256) pure returns (uint32)"}},"id":1193,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3197:42:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"arguments":[{"id":1196,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1179,"src":"3271:5:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1194,"name":"SafeCastUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5241,"src":"3241:19:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCastUpgradeable_$5241_$","typeString":"type(library SafeCastUpgradeable)"}},"id":1195,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3261:9:7","memberName":"toUint224","nodeType":"MemberAccess","referencedDeclaration":3803,"src":"3241:29:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint224_$","typeString":"function (uint256) pure returns (uint224)"}},"id":1197,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3241:36:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint_$1016_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint storage ref[] storage ref"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_uint224","typeString":"uint224"}],"id":1186,"name":"_insert","nodeType":"Identifier","overloadedDeclarations":[1418,1920,2422],"referencedDeclaration":1418,"src":"3170:7:7","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_struct$_Checkpoint_$1016_storage_$dyn_storage_ptr_$_t_uint32_$_t_uint224_$returns$_t_uint224_$_t_uint224_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint storage ref[] storage pointer,uint32,uint224) returns (uint224,uint224)"}},"id":1198,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3170:108:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint224_$_t_uint224_$","typeString":"tuple(uint224,uint224)"}},"functionReturnParameters":1185,"id":1199,"nodeType":"Return","src":"3163:115:7"}]},"documentation":{"id":1174,"nodeType":"StructuredDocumentation","src":"2894:167:7","text":" @dev Pushes a value onto a History so that it is stored as the checkpoint for the current block.\n Returns previous value and new value."},"id":1201,"implemented":true,"kind":"function","modifiers":[],"name":"push","nameLocation":"3075:4:7","nodeType":"FunctionDefinition","parameters":{"id":1180,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1177,"mutability":"mutable","name":"self","nameLocation":"3096:4:7","nodeType":"VariableDeclaration","scope":1201,"src":"3080:20:7","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_History_$1011_storage_ptr","typeString":"struct CheckpointsUpgradeable.History"},"typeName":{"id":1176,"nodeType":"UserDefinedTypeName","pathNode":{"id":1175,"name":"History","nameLocations":["3080:7:7"],"nodeType":"IdentifierPath","referencedDeclaration":1011,"src":"3080:7:7"},"referencedDeclaration":1011,"src":"3080:7:7","typeDescriptions":{"typeIdentifier":"t_struct$_History_$1011_storage_ptr","typeString":"struct CheckpointsUpgradeable.History"}},"visibility":"internal"},{"constant":false,"id":1179,"mutability":"mutable","name":"value","nameLocation":"3110:5:7","nodeType":"VariableDeclaration","scope":1201,"src":"3102:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1178,"name":"uint256","nodeType":"ElementaryTypeName","src":"3102:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3079:37:7"},"returnParameters":{"id":1185,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1182,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1201,"src":"3135:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1181,"name":"uint256","nodeType":"ElementaryTypeName","src":"3135:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1184,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1201,"src":"3144:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1183,"name":"uint256","nodeType":"ElementaryTypeName","src":"3144:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3134:18:7"},"scope":2542,"src":"3066:219:7","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1234,"nodeType":"Block","src":"3688:59:7","statements":[{"expression":{"arguments":[{"id":1225,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1205,"src":"3710:4:7","typeDescriptions":{"typeIdentifier":"t_struct$_History_$1011_storage_ptr","typeString":"struct CheckpointsUpgradeable.History storage pointer"}},{"arguments":[{"arguments":[{"id":1228,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1205,"src":"3726:4:7","typeDescriptions":{"typeIdentifier":"t_struct$_History_$1011_storage_ptr","typeString":"struct CheckpointsUpgradeable.History storage pointer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_History_$1011_storage_ptr","typeString":"struct CheckpointsUpgradeable.History storage pointer"}],"id":1227,"name":"latest","nodeType":"Identifier","overloadedDeclarations":[1265,1767,2269],"referencedDeclaration":1265,"src":"3719:6:7","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_History_$1011_storage_ptr_$returns$_t_uint224_$","typeString":"function (struct CheckpointsUpgradeable.History storage pointer) view returns (uint224)"}},"id":1229,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3719:12:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},{"id":1230,"name":"delta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1217,"src":"3733:5:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint224","typeString":"uint224"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1226,"name":"op","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1215,"src":"3716:2:7","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) view returns (uint256)"}},"id":1231,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3716:23:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_History_$1011_storage_ptr","typeString":"struct CheckpointsUpgradeable.History storage pointer"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1224,"name":"push","nodeType":"Identifier","overloadedDeclarations":[1201,1235,1570,2072],"referencedDeclaration":1201,"src":"3705:4:7","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_History_$1011_storage_ptr_$_t_uint256_$returns$_t_uint256_$_t_uint256_$","typeString":"function (struct CheckpointsUpgradeable.History storage pointer,uint256) returns (uint256,uint256)"}},"id":1232,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3705:35:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"functionReturnParameters":1223,"id":1233,"nodeType":"Return","src":"3698:42:7"}]},"documentation":{"id":1202,"nodeType":"StructuredDocumentation","src":"3291:221:7","text":" @dev Pushes a value onto a History, by updating the latest value using binary operation `op`. The new value will\n be set to `op(latest, delta)`.\n Returns previous value and new value."},"id":1235,"implemented":true,"kind":"function","modifiers":[],"name":"push","nameLocation":"3526:4:7","nodeType":"FunctionDefinition","parameters":{"id":1218,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1205,"mutability":"mutable","name":"self","nameLocation":"3556:4:7","nodeType":"VariableDeclaration","scope":1235,"src":"3540:20:7","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_History_$1011_storage_ptr","typeString":"struct CheckpointsUpgradeable.History"},"typeName":{"id":1204,"nodeType":"UserDefinedTypeName","pathNode":{"id":1203,"name":"History","nameLocations":["3540:7:7"],"nodeType":"IdentifierPath","referencedDeclaration":1011,"src":"3540:7:7"},"referencedDeclaration":1011,"src":"3540:7:7","typeDescriptions":{"typeIdentifier":"t_struct$_History_$1011_storage_ptr","typeString":"struct CheckpointsUpgradeable.History"}},"visibility":"internal"},{"constant":false,"id":1215,"mutability":"mutable","name":"op","nameLocation":"3620:2:7","nodeType":"VariableDeclaration","scope":1235,"src":"3570:52:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) view returns (uint256)"},"typeName":{"id":1214,"nodeType":"FunctionTypeName","parameterTypes":{"id":1210,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1207,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1214,"src":"3579:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1206,"name":"uint256","nodeType":"ElementaryTypeName","src":"3579:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1209,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1214,"src":"3588:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1208,"name":"uint256","nodeType":"ElementaryTypeName","src":"3588:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3578:18:7"},"returnParameterTypes":{"id":1213,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1212,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1214,"src":"3611:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1211,"name":"uint256","nodeType":"ElementaryTypeName","src":"3611:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3610:9:7"},"src":"3570:52:7","stateMutability":"view","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) view returns (uint256)"},"visibility":"internal"},"visibility":"internal"},{"constant":false,"id":1217,"mutability":"mutable","name":"delta","nameLocation":"3640:5:7","nodeType":"VariableDeclaration","scope":1235,"src":"3632:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1216,"name":"uint256","nodeType":"ElementaryTypeName","src":"3632:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3530:121:7"},"returnParameters":{"id":1223,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1220,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1235,"src":"3670:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1219,"name":"uint256","nodeType":"ElementaryTypeName","src":"3670:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1222,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1235,"src":"3679:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1221,"name":"uint256","nodeType":"ElementaryTypeName","src":"3679:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3669:18:7"},"scope":2542,"src":"3517:230:7","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1264,"nodeType":"Block","src":"3937:135:7","statements":[{"assignments":[1245],"declarations":[{"constant":false,"id":1245,"mutability":"mutable","name":"pos","nameLocation":"3955:3:7","nodeType":"VariableDeclaration","scope":1264,"src":"3947:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1244,"name":"uint256","nodeType":"ElementaryTypeName","src":"3947:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1249,"initialValue":{"expression":{"expression":{"id":1246,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1239,"src":"3961:4:7","typeDescriptions":{"typeIdentifier":"t_struct$_History_$1011_storage_ptr","typeString":"struct CheckpointsUpgradeable.History storage pointer"}},"id":1247,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3966:12:7","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":1010,"src":"3961:17:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint_$1016_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint storage ref[] storage ref"}},"id":1248,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3979:6:7","memberName":"length","nodeType":"MemberAccess","src":"3961:24:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3947:38:7"},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1252,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1250,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1245,"src":"4002:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1251,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4009:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4002:8:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"expression":{"arguments":[{"expression":{"id":1255,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1239,"src":"4031:4:7","typeDescriptions":{"typeIdentifier":"t_struct$_History_$1011_storage_ptr","typeString":"struct CheckpointsUpgradeable.History storage pointer"}},"id":1256,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4036:12:7","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":1010,"src":"4031:17:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint_$1016_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint storage ref[] storage ref"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1259,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1257,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1245,"src":"4050:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":1258,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4056:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"4050:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint_$1016_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint storage ref[] storage ref"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1254,"name":"_unsafeAccess","nodeType":"Identifier","overloadedDeclarations":[1537,2039,2541],"referencedDeclaration":1537,"src":"4017:13:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_struct$_Checkpoint_$1016_storage_$dyn_storage_ptr_$_t_uint256_$returns$_t_struct$_Checkpoint_$1016_storage_ptr_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint storage ref[] storage pointer,uint256) pure returns (struct CheckpointsUpgradeable.Checkpoint storage pointer)"}},"id":1260,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4017:41:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint_$1016_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint storage pointer"}},"id":1261,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4059:6:7","memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":1015,"src":"4017:48:7","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"id":1262,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"4002:63:7","trueExpression":{"hexValue":"30","id":1253,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4013:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"functionReturnParameters":1243,"id":1263,"nodeType":"Return","src":"3995:70:7"}]},"documentation":{"id":1236,"nodeType":"StructuredDocumentation","src":"3753:109:7","text":" @dev Returns the value in the most recent checkpoint, or zero if there are no checkpoints."},"id":1265,"implemented":true,"kind":"function","modifiers":[],"name":"latest","nameLocation":"3876:6:7","nodeType":"FunctionDefinition","parameters":{"id":1240,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1239,"mutability":"mutable","name":"self","nameLocation":"3899:4:7","nodeType":"VariableDeclaration","scope":1265,"src":"3883:20:7","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_History_$1011_storage_ptr","typeString":"struct CheckpointsUpgradeable.History"},"typeName":{"id":1238,"nodeType":"UserDefinedTypeName","pathNode":{"id":1237,"name":"History","nameLocations":["3883:7:7"],"nodeType":"IdentifierPath","referencedDeclaration":1011,"src":"3883:7:7"},"referencedDeclaration":1011,"src":"3883:7:7","typeDescriptions":{"typeIdentifier":"t_struct$_History_$1011_storage_ptr","typeString":"struct CheckpointsUpgradeable.History"}},"visibility":"internal"}],"src":"3882:22:7"},"returnParameters":{"id":1243,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1242,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1265,"src":"3928:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"},"typeName":{"id":1241,"name":"uint224","nodeType":"ElementaryTypeName","src":"3928:7:7","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"visibility":"internal"}],"src":"3927:9:7"},"scope":2542,"src":"3867:205:7","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":1313,"nodeType":"Block","src":"4386:279:7","statements":[{"assignments":[1279],"declarations":[{"constant":false,"id":1279,"mutability":"mutable","name":"pos","nameLocation":"4404:3:7","nodeType":"VariableDeclaration","scope":1313,"src":"4396:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1278,"name":"uint256","nodeType":"ElementaryTypeName","src":"4396:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1283,"initialValue":{"expression":{"expression":{"id":1280,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1269,"src":"4410:4:7","typeDescriptions":{"typeIdentifier":"t_struct$_History_$1011_storage_ptr","typeString":"struct CheckpointsUpgradeable.History storage pointer"}},"id":1281,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4415:12:7","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":1010,"src":"4410:17:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint_$1016_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint storage ref[] storage ref"}},"id":1282,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4428:6:7","memberName":"length","nodeType":"MemberAccess","src":"4410:24:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4396:38:7"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1286,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1284,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1279,"src":"4448:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1285,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4455:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4448:8:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1311,"nodeType":"Block","src":"4509:150:7","statements":[{"assignments":[1295],"declarations":[{"constant":false,"id":1295,"mutability":"mutable","name":"ckpt","nameLocation":"4541:4:7","nodeType":"VariableDeclaration","scope":1311,"src":"4523:22:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint_$1016_memory_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint"},"typeName":{"id":1294,"nodeType":"UserDefinedTypeName","pathNode":{"id":1293,"name":"Checkpoint","nameLocations":["4523:10:7"],"nodeType":"IdentifierPath","referencedDeclaration":1016,"src":"4523:10:7"},"referencedDeclaration":1016,"src":"4523:10:7","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint_$1016_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint"}},"visibility":"internal"}],"id":1303,"initialValue":{"arguments":[{"expression":{"id":1297,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1269,"src":"4562:4:7","typeDescriptions":{"typeIdentifier":"t_struct$_History_$1011_storage_ptr","typeString":"struct CheckpointsUpgradeable.History storage pointer"}},"id":1298,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4567:12:7","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":1010,"src":"4562:17:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint_$1016_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint storage ref[] storage ref"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1301,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1299,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1279,"src":"4581:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":1300,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4587:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"4581:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint_$1016_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint storage ref[] storage ref"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1296,"name":"_unsafeAccess","nodeType":"Identifier","overloadedDeclarations":[1537,2039,2541],"referencedDeclaration":1537,"src":"4548:13:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_struct$_Checkpoint_$1016_storage_$dyn_storage_ptr_$_t_uint256_$returns$_t_struct$_Checkpoint_$1016_storage_ptr_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint storage ref[] storage pointer,uint256) pure returns (struct CheckpointsUpgradeable.Checkpoint storage pointer)"}},"id":1302,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4548:41:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint_$1016_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"4523:66:7"},{"expression":{"components":[{"hexValue":"74727565","id":1304,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4611:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"expression":{"id":1305,"name":"ckpt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1295,"src":"4617:4:7","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint_$1016_memory_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint memory"}},"id":1306,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4622:12:7","memberName":"_blockNumber","nodeType":"MemberAccess","referencedDeclaration":1013,"src":"4617:17:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"expression":{"id":1307,"name":"ckpt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1295,"src":"4636:4:7","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint_$1016_memory_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint memory"}},"id":1308,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4641:6:7","memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":1015,"src":"4636:11:7","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}}],"id":1309,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4610:38:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint32_$_t_uint224_$","typeString":"tuple(bool,uint32,uint224)"}},"functionReturnParameters":1277,"id":1310,"nodeType":"Return","src":"4603:45:7"}]},"id":1312,"nodeType":"IfStatement","src":"4444:215:7","trueBody":{"id":1292,"nodeType":"Block","src":"4458:45:7","statements":[{"expression":{"components":[{"hexValue":"66616c7365","id":1287,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4480:5:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":1288,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4487:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"30","id":1289,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4490:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":1290,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"4479:13:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0,int_const 0)"}},"functionReturnParameters":1277,"id":1291,"nodeType":"Return","src":"4472:20:7"}]}}]},"documentation":{"id":1266,"nodeType":"StructuredDocumentation","src":"4078:168:7","text":" @dev Returns whether there is a checkpoint in the structure (i.e. it is not empty), and if so the key and value\n in the most recent checkpoint."},"id":1314,"implemented":true,"kind":"function","modifiers":[],"name":"latestCheckpoint","nameLocation":"4260:16:7","nodeType":"FunctionDefinition","parameters":{"id":1270,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1269,"mutability":"mutable","name":"self","nameLocation":"4302:4:7","nodeType":"VariableDeclaration","scope":1314,"src":"4286:20:7","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_History_$1011_storage_ptr","typeString":"struct CheckpointsUpgradeable.History"},"typeName":{"id":1268,"nodeType":"UserDefinedTypeName","pathNode":{"id":1267,"name":"History","nameLocations":["4286:7:7"],"nodeType":"IdentifierPath","referencedDeclaration":1011,"src":"4286:7:7"},"referencedDeclaration":1011,"src":"4286:7:7","typeDescriptions":{"typeIdentifier":"t_struct$_History_$1011_storage_ptr","typeString":"struct CheckpointsUpgradeable.History"}},"visibility":"internal"}],"src":"4276:36:7"},"returnParameters":{"id":1277,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1272,"mutability":"mutable","name":"exists","nameLocation":"4341:6:7","nodeType":"VariableDeclaration","scope":1314,"src":"4336:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1271,"name":"bool","nodeType":"ElementaryTypeName","src":"4336:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1274,"mutability":"mutable","name":"_blockNumber","nameLocation":"4356:12:7","nodeType":"VariableDeclaration","scope":1314,"src":"4349:19:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":1273,"name":"uint32","nodeType":"ElementaryTypeName","src":"4349:6:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":1276,"mutability":"mutable","name":"_value","nameLocation":"4378:6:7","nodeType":"VariableDeclaration","scope":1314,"src":"4370:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"},"typeName":{"id":1275,"name":"uint224","nodeType":"ElementaryTypeName","src":"4370:7:7","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"visibility":"internal"}],"src":"4335:50:7"},"scope":2542,"src":"4251:414:7","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":1327,"nodeType":"Block","src":"4803:48:7","statements":[{"expression":{"expression":{"expression":{"id":1323,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1318,"src":"4820:4:7","typeDescriptions":{"typeIdentifier":"t_struct$_History_$1011_storage_ptr","typeString":"struct CheckpointsUpgradeable.History storage pointer"}},"id":1324,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4825:12:7","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":1010,"src":"4820:17:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint_$1016_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint storage ref[] storage ref"}},"id":1325,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4838:6:7","memberName":"length","nodeType":"MemberAccess","src":"4820:24:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1322,"id":1326,"nodeType":"Return","src":"4813:31:7"}]},"documentation":{"id":1315,"nodeType":"StructuredDocumentation","src":"4671:57:7","text":" @dev Returns the number of checkpoint."},"id":1328,"implemented":true,"kind":"function","modifiers":[],"name":"length","nameLocation":"4742:6:7","nodeType":"FunctionDefinition","parameters":{"id":1319,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1318,"mutability":"mutable","name":"self","nameLocation":"4765:4:7","nodeType":"VariableDeclaration","scope":1328,"src":"4749:20:7","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_History_$1011_storage_ptr","typeString":"struct CheckpointsUpgradeable.History"},"typeName":{"id":1317,"nodeType":"UserDefinedTypeName","pathNode":{"id":1316,"name":"History","nameLocations":["4749:7:7"],"nodeType":"IdentifierPath","referencedDeclaration":1011,"src":"4749:7:7"},"referencedDeclaration":1011,"src":"4749:7:7","typeDescriptions":{"typeIdentifier":"t_struct$_History_$1011_storage_ptr","typeString":"struct CheckpointsUpgradeable.History"}},"visibility":"internal"}],"src":"4748:22:7"},"returnParameters":{"id":1322,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1321,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1328,"src":"4794:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1320,"name":"uint256","nodeType":"ElementaryTypeName","src":"4794:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4793:9:7"},"scope":2542,"src":"4733:118:7","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":1417,"nodeType":"Block","src":"5133:750:7","statements":[{"assignments":[1345],"declarations":[{"constant":false,"id":1345,"mutability":"mutable","name":"pos","nameLocation":"5151:3:7","nodeType":"VariableDeclaration","scope":1417,"src":"5143:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1344,"name":"uint256","nodeType":"ElementaryTypeName","src":"5143:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1348,"initialValue":{"expression":{"id":1346,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1333,"src":"5157:4:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint_$1016_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint storage ref[] storage pointer"}},"id":1347,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5162:6:7","memberName":"length","nodeType":"MemberAccess","src":"5157:11:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5143:25:7"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1351,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1349,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1345,"src":"5183:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1350,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5189:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5183:7:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1415,"nodeType":"Block","src":"5764:113:7","statements":[{"expression":{"arguments":[{"arguments":[{"id":1406,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1335,"src":"5814:3:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":1407,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1337,"src":"5827:5:7","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_uint224","typeString":"uint224"}],"id":1405,"name":"Checkpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1016,"src":"5788:10:7","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Checkpoint_$1016_storage_ptr_$","typeString":"type(struct CheckpointsUpgradeable.Checkpoint storage pointer)"}},"id":1408,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["5800:12:7","5819:6:7"],"names":["_blockNumber","_value"],"nodeType":"FunctionCall","src":"5788:46:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint_$1016_memory_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Checkpoint_$1016_memory_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint memory"}],"expression":{"id":1402,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1333,"src":"5778:4:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint_$1016_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint storage ref[] storage pointer"}},"id":1404,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5783:4:7","memberName":"push","nodeType":"MemberAccess","src":"5778:9:7","typeDescriptions":{"typeIdentifier":"t_function_arraypush_nonpayable$_t_array$_t_struct$_Checkpoint_$1016_storage_$dyn_storage_ptr_$_t_struct$_Checkpoint_$1016_storage_$returns$__$bound_to$_t_array$_t_struct$_Checkpoint_$1016_storage_$dyn_storage_ptr_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint storage ref[] storage pointer,struct CheckpointsUpgradeable.Checkpoint storage ref)"}},"id":1409,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5778:57:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1410,"nodeType":"ExpressionStatement","src":"5778:57:7"},{"expression":{"components":[{"hexValue":"30","id":1411,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5857:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":1412,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1337,"src":"5860:5:7","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}}],"id":1413,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5856:10:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_rational_0_by_1_$_t_uint224_$","typeString":"tuple(int_const 0,uint224)"}},"functionReturnParameters":1343,"id":1414,"nodeType":"Return","src":"5849:17:7"}]},"id":1416,"nodeType":"IfStatement","src":"5179:698:7","trueBody":{"id":1401,"nodeType":"Block","src":"5192:566:7","statements":[{"assignments":[1354],"declarations":[{"constant":false,"id":1354,"mutability":"mutable","name":"last","nameLocation":"5276:4:7","nodeType":"VariableDeclaration","scope":1401,"src":"5258:22:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint_$1016_memory_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint"},"typeName":{"id":1353,"nodeType":"UserDefinedTypeName","pathNode":{"id":1352,"name":"Checkpoint","nameLocations":["5258:10:7"],"nodeType":"IdentifierPath","referencedDeclaration":1016,"src":"5258:10:7"},"referencedDeclaration":1016,"src":"5258:10:7","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint_$1016_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint"}},"visibility":"internal"}],"id":1361,"initialValue":{"arguments":[{"id":1356,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1333,"src":"5297:4:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint_$1016_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint storage ref[] storage pointer"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1359,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1357,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1345,"src":"5303:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":1358,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5309:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"5303:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint_$1016_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint storage ref[] storage pointer"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1355,"name":"_unsafeAccess","nodeType":"Identifier","overloadedDeclarations":[1537,2039,2541],"referencedDeclaration":1537,"src":"5283:13:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_struct$_Checkpoint_$1016_storage_$dyn_storage_ptr_$_t_uint256_$returns$_t_struct$_Checkpoint_$1016_storage_ptr_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint storage ref[] storage pointer,uint256) pure returns (struct CheckpointsUpgradeable.Checkpoint storage pointer)"}},"id":1360,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5283:28:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint_$1016_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"5258:53:7"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":1366,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1363,"name":"last","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1354,"src":"5389:4:7","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint_$1016_memory_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint memory"}},"id":1364,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5394:12:7","memberName":"_blockNumber","nodeType":"MemberAccess","referencedDeclaration":1013,"src":"5389:17:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":1365,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1335,"src":"5410:3:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"5389:24:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"436865636b706f696e743a2064656372656173696e67206b657973","id":1367,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5415:29:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_4f6b1769383e9e01fad001f10d4f9180a25f63424c2597419936b157d29f34ec","typeString":"literal_string \"Checkpoint: decreasing keys\""},"value":"Checkpoint: decreasing keys"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_4f6b1769383e9e01fad001f10d4f9180a25f63424c2597419936b157d29f34ec","typeString":"literal_string \"Checkpoint: decreasing keys\""}],"id":1362,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"5381:7:7","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1368,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5381:64:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1369,"nodeType":"ExpressionStatement","src":"5381:64:7"},{"condition":{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":1373,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1370,"name":"last","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1354,"src":"5509:4:7","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint_$1016_memory_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint memory"}},"id":1371,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5514:12:7","memberName":"_blockNumber","nodeType":"MemberAccess","referencedDeclaration":1013,"src":"5509:17:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":1372,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1335,"src":"5530:3:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"5509:24:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1394,"nodeType":"Block","src":"5617:90:7","statements":[{"expression":{"arguments":[{"arguments":[{"id":1389,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1335,"src":"5671:3:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":1390,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1337,"src":"5684:5:7","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_uint224","typeString":"uint224"}],"id":1388,"name":"Checkpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1016,"src":"5645:10:7","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Checkpoint_$1016_storage_ptr_$","typeString":"type(struct CheckpointsUpgradeable.Checkpoint storage pointer)"}},"id":1391,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["5657:12:7","5676:6:7"],"names":["_blockNumber","_value"],"nodeType":"FunctionCall","src":"5645:46:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint_$1016_memory_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Checkpoint_$1016_memory_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint memory"}],"expression":{"id":1385,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1333,"src":"5635:4:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint_$1016_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint storage ref[] storage pointer"}},"id":1387,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5640:4:7","memberName":"push","nodeType":"MemberAccess","src":"5635:9:7","typeDescriptions":{"typeIdentifier":"t_function_arraypush_nonpayable$_t_array$_t_struct$_Checkpoint_$1016_storage_$dyn_storage_ptr_$_t_struct$_Checkpoint_$1016_storage_$returns$__$bound_to$_t_array$_t_struct$_Checkpoint_$1016_storage_$dyn_storage_ptr_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint storage ref[] storage pointer,struct CheckpointsUpgradeable.Checkpoint storage ref)"}},"id":1392,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5635:57:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1393,"nodeType":"ExpressionStatement","src":"5635:57:7"}]},"id":1395,"nodeType":"IfStatement","src":"5505:202:7","trueBody":{"id":1384,"nodeType":"Block","src":"5535:76:7","statements":[{"expression":{"id":1382,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[{"id":1375,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1333,"src":"5567:4:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint_$1016_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint storage ref[] storage pointer"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1378,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1376,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1345,"src":"5573:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":1377,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5579:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"5573:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint_$1016_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint storage ref[] storage pointer"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1374,"name":"_unsafeAccess","nodeType":"Identifier","overloadedDeclarations":[1537,2039,2541],"referencedDeclaration":1537,"src":"5553:13:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_struct$_Checkpoint_$1016_storage_$dyn_storage_ptr_$_t_uint256_$returns$_t_struct$_Checkpoint_$1016_storage_ptr_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint storage ref[] storage pointer,uint256) pure returns (struct CheckpointsUpgradeable.Checkpoint storage pointer)"}},"id":1379,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5553:28:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint_$1016_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint storage pointer"}},"id":1380,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5582:6:7","memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":1015,"src":"5553:35:7","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1381,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1337,"src":"5591:5:7","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"src":"5553:43:7","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"id":1383,"nodeType":"ExpressionStatement","src":"5553:43:7"}]}},{"expression":{"components":[{"expression":{"id":1396,"name":"last","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1354,"src":"5728:4:7","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint_$1016_memory_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint memory"}},"id":1397,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5733:6:7","memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":1015,"src":"5728:11:7","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},{"id":1398,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1337,"src":"5741:5:7","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}}],"id":1399,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5727:20:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint224_$_t_uint224_$","typeString":"tuple(uint224,uint224)"}},"functionReturnParameters":1343,"id":1400,"nodeType":"Return","src":"5720:27:7"}]}}]},"documentation":{"id":1329,"nodeType":"StructuredDocumentation","src":"4857:165:7","text":" @dev Pushes a (`key`, `value`) pair into an ordered list of checkpoints, either by inserting a new checkpoint,\n or by updating the last one."},"id":1418,"implemented":true,"kind":"function","modifiers":[],"name":"_insert","nameLocation":"5036:7:7","nodeType":"FunctionDefinition","parameters":{"id":1338,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1333,"mutability":"mutable","name":"self","nameLocation":"5065:4:7","nodeType":"VariableDeclaration","scope":1418,"src":"5044:25:7","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint_$1016_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint[]"},"typeName":{"baseType":{"id":1331,"nodeType":"UserDefinedTypeName","pathNode":{"id":1330,"name":"Checkpoint","nameLocations":["5044:10:7"],"nodeType":"IdentifierPath","referencedDeclaration":1016,"src":"5044:10:7"},"referencedDeclaration":1016,"src":"5044:10:7","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint_$1016_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint"}},"id":1332,"nodeType":"ArrayTypeName","src":"5044:12:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint_$1016_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint[]"}},"visibility":"internal"},{"constant":false,"id":1335,"mutability":"mutable","name":"key","nameLocation":"5078:3:7","nodeType":"VariableDeclaration","scope":1418,"src":"5071:10:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":1334,"name":"uint32","nodeType":"ElementaryTypeName","src":"5071:6:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":1337,"mutability":"mutable","name":"value","nameLocation":"5091:5:7","nodeType":"VariableDeclaration","scope":1418,"src":"5083:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"},"typeName":{"id":1336,"name":"uint224","nodeType":"ElementaryTypeName","src":"5083:7:7","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"visibility":"internal"}],"src":"5043:54:7"},"returnParameters":{"id":1343,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1340,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1418,"src":"5115:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"},"typeName":{"id":1339,"name":"uint224","nodeType":"ElementaryTypeName","src":"5115:7:7","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"visibility":"internal"},{"constant":false,"id":1342,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1418,"src":"5124:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"},"typeName":{"id":1341,"name":"uint224","nodeType":"ElementaryTypeName","src":"5124:7:7","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"visibility":"internal"}],"src":"5114:18:7"},"scope":2542,"src":"5027:856:7","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":1469,"nodeType":"Block","src":"6392:286:7","statements":[{"body":{"id":1465,"nodeType":"Block","src":"6421:230:7","statements":[{"assignments":[1438],"declarations":[{"constant":false,"id":1438,"mutability":"mutable","name":"mid","nameLocation":"6443:3:7","nodeType":"VariableDeclaration","scope":1465,"src":"6435:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1437,"name":"uint256","nodeType":"ElementaryTypeName","src":"6435:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1444,"initialValue":{"arguments":[{"id":1441,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1427,"src":"6473:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1442,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1429,"src":"6478:4:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1439,"name":"MathUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3700,"src":"6449:15:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_MathUpgradeable_$3700_$","typeString":"type(library MathUpgradeable)"}},"id":1440,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6465:7:7","memberName":"average","nodeType":"MemberAccess","referencedDeclaration":2900,"src":"6449:23:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":1443,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6449:34:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6435:48:7"},{"condition":{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":1451,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":1446,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1423,"src":"6515:4:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint_$1016_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint storage ref[] storage pointer"}},{"id":1447,"name":"mid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1438,"src":"6521:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint_$1016_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint storage ref[] storage pointer"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1445,"name":"_unsafeAccess","nodeType":"Identifier","overloadedDeclarations":[1537,2039,2541],"referencedDeclaration":1537,"src":"6501:13:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_struct$_Checkpoint_$1016_storage_$dyn_storage_ptr_$_t_uint256_$returns$_t_struct$_Checkpoint_$1016_storage_ptr_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint storage ref[] storage pointer,uint256) pure returns (struct CheckpointsUpgradeable.Checkpoint storage pointer)"}},"id":1448,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6501:24:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint_$1016_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint storage pointer"}},"id":1449,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6526:12:7","memberName":"_blockNumber","nodeType":"MemberAccess","referencedDeclaration":1013,"src":"6501:37:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":1450,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1425,"src":"6541:3:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"6501:43:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1463,"nodeType":"Block","src":"6595:46:7","statements":[{"expression":{"id":1461,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1457,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1427,"src":"6613:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1460,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1458,"name":"mid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1438,"src":"6619:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1459,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6625:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"6619:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6613:13:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1462,"nodeType":"ExpressionStatement","src":"6613:13:7"}]},"id":1464,"nodeType":"IfStatement","src":"6497:144:7","trueBody":{"id":1456,"nodeType":"Block","src":"6546:43:7","statements":[{"expression":{"id":1454,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1452,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1429,"src":"6564:4:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1453,"name":"mid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1438,"src":"6571:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6564:10:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1455,"nodeType":"ExpressionStatement","src":"6564:10:7"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1436,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1434,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1427,"src":"6409:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1435,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1429,"src":"6415:4:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6409:10:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1466,"nodeType":"WhileStatement","src":"6402:249:7"},{"expression":{"id":1467,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1429,"src":"6667:4:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1433,"id":1468,"nodeType":"Return","src":"6660:11:7"}]},"documentation":{"id":1419,"nodeType":"StructuredDocumentation","src":"5889:335:7","text":" @dev Return the index of the last (most recent) checkpoint with key lower or equal than the search key, or `high` if there is none.\n `low` and `high` define a section where to do the search, with inclusive `low` and exclusive `high`.\n WARNING: `high` should not be greater than the array's length."},"id":1470,"implemented":true,"kind":"function","modifiers":[],"name":"_upperBinaryLookup","nameLocation":"6238:18:7","nodeType":"FunctionDefinition","parameters":{"id":1430,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1423,"mutability":"mutable","name":"self","nameLocation":"6287:4:7","nodeType":"VariableDeclaration","scope":1470,"src":"6266:25:7","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint_$1016_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint[]"},"typeName":{"baseType":{"id":1421,"nodeType":"UserDefinedTypeName","pathNode":{"id":1420,"name":"Checkpoint","nameLocations":["6266:10:7"],"nodeType":"IdentifierPath","referencedDeclaration":1016,"src":"6266:10:7"},"referencedDeclaration":1016,"src":"6266:10:7","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint_$1016_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint"}},"id":1422,"nodeType":"ArrayTypeName","src":"6266:12:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint_$1016_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint[]"}},"visibility":"internal"},{"constant":false,"id":1425,"mutability":"mutable","name":"key","nameLocation":"6308:3:7","nodeType":"VariableDeclaration","scope":1470,"src":"6301:10:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":1424,"name":"uint32","nodeType":"ElementaryTypeName","src":"6301:6:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":1427,"mutability":"mutable","name":"low","nameLocation":"6329:3:7","nodeType":"VariableDeclaration","scope":1470,"src":"6321:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1426,"name":"uint256","nodeType":"ElementaryTypeName","src":"6321:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1429,"mutability":"mutable","name":"high","nameLocation":"6350:4:7","nodeType":"VariableDeclaration","scope":1470,"src":"6342:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1428,"name":"uint256","nodeType":"ElementaryTypeName","src":"6342:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6256:104:7"},"returnParameters":{"id":1433,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1432,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1470,"src":"6383:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1431,"name":"uint256","nodeType":"ElementaryTypeName","src":"6383:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6382:9:7"},"scope":2542,"src":"6229:449:7","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":1521,"nodeType":"Block","src":"7188:286:7","statements":[{"body":{"id":1517,"nodeType":"Block","src":"7217:230:7","statements":[{"assignments":[1490],"declarations":[{"constant":false,"id":1490,"mutability":"mutable","name":"mid","nameLocation":"7239:3:7","nodeType":"VariableDeclaration","scope":1517,"src":"7231:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1489,"name":"uint256","nodeType":"ElementaryTypeName","src":"7231:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1496,"initialValue":{"arguments":[{"id":1493,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1479,"src":"7269:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1494,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1481,"src":"7274:4:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1491,"name":"MathUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3700,"src":"7245:15:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_MathUpgradeable_$3700_$","typeString":"type(library MathUpgradeable)"}},"id":1492,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7261:7:7","memberName":"average","nodeType":"MemberAccess","referencedDeclaration":2900,"src":"7245:23:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":1495,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7245:34:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7231:48:7"},{"condition":{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":1503,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":1498,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1475,"src":"7311:4:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint_$1016_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint storage ref[] storage pointer"}},{"id":1499,"name":"mid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1490,"src":"7317:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint_$1016_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint storage ref[] storage pointer"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1497,"name":"_unsafeAccess","nodeType":"Identifier","overloadedDeclarations":[1537,2039,2541],"referencedDeclaration":1537,"src":"7297:13:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_struct$_Checkpoint_$1016_storage_$dyn_storage_ptr_$_t_uint256_$returns$_t_struct$_Checkpoint_$1016_storage_ptr_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint storage ref[] storage pointer,uint256) pure returns (struct CheckpointsUpgradeable.Checkpoint storage pointer)"}},"id":1500,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7297:24:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint_$1016_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint storage pointer"}},"id":1501,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7322:12:7","memberName":"_blockNumber","nodeType":"MemberAccess","referencedDeclaration":1013,"src":"7297:37:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1502,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1477,"src":"7337:3:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"7297:43:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1515,"nodeType":"Block","src":"7394:43:7","statements":[{"expression":{"id":1513,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1511,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1481,"src":"7412:4:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1512,"name":"mid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1490,"src":"7419:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7412:10:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1514,"nodeType":"ExpressionStatement","src":"7412:10:7"}]},"id":1516,"nodeType":"IfStatement","src":"7293:144:7","trueBody":{"id":1510,"nodeType":"Block","src":"7342:46:7","statements":[{"expression":{"id":1508,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1504,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1479,"src":"7360:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1507,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1505,"name":"mid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1490,"src":"7366:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1506,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7372:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7366:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7360:13:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1509,"nodeType":"ExpressionStatement","src":"7360:13:7"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1488,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1486,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1479,"src":"7205:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1487,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1481,"src":"7211:4:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7205:10:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1518,"nodeType":"WhileStatement","src":"7198:249:7"},{"expression":{"id":1519,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1481,"src":"7463:4:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1485,"id":1520,"nodeType":"Return","src":"7456:11:7"}]},"documentation":{"id":1471,"nodeType":"StructuredDocumentation","src":"6684:336:7","text":" @dev Return the index of the first (oldest) checkpoint with key is greater or equal than the search key, or `high` if there is none.\n `low` and `high` define a section where to do the search, with inclusive `low` and exclusive `high`.\n WARNING: `high` should not be greater than the array's length."},"id":1522,"implemented":true,"kind":"function","modifiers":[],"name":"_lowerBinaryLookup","nameLocation":"7034:18:7","nodeType":"FunctionDefinition","parameters":{"id":1482,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1475,"mutability":"mutable","name":"self","nameLocation":"7083:4:7","nodeType":"VariableDeclaration","scope":1522,"src":"7062:25:7","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint_$1016_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint[]"},"typeName":{"baseType":{"id":1473,"nodeType":"UserDefinedTypeName","pathNode":{"id":1472,"name":"Checkpoint","nameLocations":["7062:10:7"],"nodeType":"IdentifierPath","referencedDeclaration":1016,"src":"7062:10:7"},"referencedDeclaration":1016,"src":"7062:10:7","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint_$1016_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint"}},"id":1474,"nodeType":"ArrayTypeName","src":"7062:12:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint_$1016_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint[]"}},"visibility":"internal"},{"constant":false,"id":1477,"mutability":"mutable","name":"key","nameLocation":"7104:3:7","nodeType":"VariableDeclaration","scope":1522,"src":"7097:10:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":1476,"name":"uint32","nodeType":"ElementaryTypeName","src":"7097:6:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":1479,"mutability":"mutable","name":"low","nameLocation":"7125:3:7","nodeType":"VariableDeclaration","scope":1522,"src":"7117:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1478,"name":"uint256","nodeType":"ElementaryTypeName","src":"7117:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1481,"mutability":"mutable","name":"high","nameLocation":"7146:4:7","nodeType":"VariableDeclaration","scope":1522,"src":"7138:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1480,"name":"uint256","nodeType":"ElementaryTypeName","src":"7138:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7052:104:7"},"returnParameters":{"id":1485,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1484,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1522,"src":"7179:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1483,"name":"uint256","nodeType":"ElementaryTypeName","src":"7179:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7178:9:7"},"scope":2542,"src":"7025:449:7","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":1536,"nodeType":"Block","src":"7729:125:7","statements":[{"AST":{"nodeType":"YulBlock","src":"7748:100:7","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7769:1:7","type":"","value":"0"},{"name":"self.slot","nodeType":"YulIdentifier","src":"7772:9:7"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7762:6:7"},"nodeType":"YulFunctionCall","src":"7762:20:7"},"nodeType":"YulExpressionStatement","src":"7762:20:7"},{"nodeType":"YulAssignment","src":"7795:43:7","value":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7824:1:7","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7827:4:7","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nodeType":"YulIdentifier","src":"7814:9:7"},"nodeType":"YulFunctionCall","src":"7814:18:7"},{"name":"pos","nodeType":"YulIdentifier","src":"7834:3:7"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7810:3:7"},"nodeType":"YulFunctionCall","src":"7810:28:7"},"variableNames":[{"name":"result.slot","nodeType":"YulIdentifier","src":"7795:11:7"}]}]},"evmVersion":"london","externalReferences":[{"declaration":1529,"isOffset":false,"isSlot":false,"src":"7834:3:7","valueSize":1},{"declaration":1533,"isOffset":false,"isSlot":true,"src":"7795:11:7","suffix":"slot","valueSize":1},{"declaration":1527,"isOffset":false,"isSlot":true,"src":"7772:9:7","suffix":"slot","valueSize":1}],"id":1535,"nodeType":"InlineAssembly","src":"7739:109:7"}]},"documentation":{"id":1523,"nodeType":"StructuredDocumentation","src":"7480:132:7","text":" @dev Access an element of the array without performing bounds check. The position is assumed to be within bounds."},"id":1537,"implemented":true,"kind":"function","modifiers":[],"name":"_unsafeAccess","nameLocation":"7626:13:7","nodeType":"FunctionDefinition","parameters":{"id":1530,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1527,"mutability":"mutable","name":"self","nameLocation":"7661:4:7","nodeType":"VariableDeclaration","scope":1537,"src":"7640:25:7","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint_$1016_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint[]"},"typeName":{"baseType":{"id":1525,"nodeType":"UserDefinedTypeName","pathNode":{"id":1524,"name":"Checkpoint","nameLocations":["7640:10:7"],"nodeType":"IdentifierPath","referencedDeclaration":1016,"src":"7640:10:7"},"referencedDeclaration":1016,"src":"7640:10:7","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint_$1016_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint"}},"id":1526,"nodeType":"ArrayTypeName","src":"7640:12:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint_$1016_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint[]"}},"visibility":"internal"},{"constant":false,"id":1529,"mutability":"mutable","name":"pos","nameLocation":"7675:3:7","nodeType":"VariableDeclaration","scope":1537,"src":"7667:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1528,"name":"uint256","nodeType":"ElementaryTypeName","src":"7667:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7639:40:7"},"returnParameters":{"id":1534,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1533,"mutability":"mutable","name":"result","nameLocation":"7721:6:7","nodeType":"VariableDeclaration","scope":1537,"src":"7702:25:7","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint_$1016_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint"},"typeName":{"id":1532,"nodeType":"UserDefinedTypeName","pathNode":{"id":1531,"name":"Checkpoint","nameLocations":["7702:10:7"],"nodeType":"IdentifierPath","referencedDeclaration":1016,"src":"7702:10:7"},"referencedDeclaration":1016,"src":"7702:10:7","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint_$1016_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint"}},"visibility":"internal"}],"src":"7701:27:7"},"scope":2542,"src":"7617:237:7","stateMutability":"pure","virtual":false,"visibility":"private"},{"canonicalName":"CheckpointsUpgradeable.Trace224","id":1542,"members":[{"constant":false,"id":1541,"mutability":"mutable","name":"_checkpoints","nameLocation":"7902:12:7","nodeType":"VariableDeclaration","scope":1542,"src":"7886:28:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224[]"},"typeName":{"baseType":{"id":1539,"nodeType":"UserDefinedTypeName","pathNode":{"id":1538,"name":"Checkpoint224","nameLocations":["7886:13:7"],"nodeType":"IdentifierPath","referencedDeclaration":1547,"src":"7886:13:7"},"referencedDeclaration":1547,"src":"7886:13:7","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint224_$1547_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224"}},"id":1540,"nodeType":"ArrayTypeName","src":"7886:15:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224[]"}},"visibility":"internal"}],"name":"Trace224","nameLocation":"7867:8:7","nodeType":"StructDefinition","scope":2542,"src":"7860:61:7","visibility":"public"},{"canonicalName":"CheckpointsUpgradeable.Checkpoint224","id":1547,"members":[{"constant":false,"id":1544,"mutability":"mutable","name":"_key","nameLocation":"7965:4:7","nodeType":"VariableDeclaration","scope":1547,"src":"7958:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":1543,"name":"uint32","nodeType":"ElementaryTypeName","src":"7958:6:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":1546,"mutability":"mutable","name":"_value","nameLocation":"7987:6:7","nodeType":"VariableDeclaration","scope":1547,"src":"7979:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"},"typeName":{"id":1545,"name":"uint224","nodeType":"ElementaryTypeName","src":"7979:7:7","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"visibility":"internal"}],"name":"Checkpoint224","nameLocation":"7934:13:7","nodeType":"StructDefinition","scope":2542,"src":"7927:73:7","visibility":"public"},{"body":{"id":1569,"nodeType":"Block","src":"8273:62:7","statements":[{"expression":{"arguments":[{"expression":{"id":1563,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1551,"src":"8298:4:7","typeDescriptions":{"typeIdentifier":"t_struct$_Trace224_$1542_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace224 storage pointer"}},"id":1564,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8303:12:7","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":1541,"src":"8298:17:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage ref"}},{"id":1565,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1553,"src":"8317:3:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":1566,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1555,"src":"8322:5:7","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage ref"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_uint224","typeString":"uint224"}],"id":1562,"name":"_insert","nodeType":"Identifier","overloadedDeclarations":[1418,1920,2422],"referencedDeclaration":1920,"src":"8290:7:7","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage_ptr_$_t_uint32_$_t_uint224_$returns$_t_uint224_$_t_uint224_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage pointer,uint32,uint224) returns (uint224,uint224)"}},"id":1567,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8290:38:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint224_$_t_uint224_$","typeString":"tuple(uint224,uint224)"}},"functionReturnParameters":1561,"id":1568,"nodeType":"Return","src":"8283:45:7"}]},"documentation":{"id":1548,"nodeType":"StructuredDocumentation","src":"8006:162:7","text":" @dev Pushes a (`key`, `value`) pair into a Trace224 so that it is stored as the checkpoint.\n Returns previous value and new value."},"id":1570,"implemented":true,"kind":"function","modifiers":[],"name":"push","nameLocation":"8182:4:7","nodeType":"FunctionDefinition","parameters":{"id":1556,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1551,"mutability":"mutable","name":"self","nameLocation":"8204:4:7","nodeType":"VariableDeclaration","scope":1570,"src":"8187:21:7","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Trace224_$1542_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace224"},"typeName":{"id":1550,"nodeType":"UserDefinedTypeName","pathNode":{"id":1549,"name":"Trace224","nameLocations":["8187:8:7"],"nodeType":"IdentifierPath","referencedDeclaration":1542,"src":"8187:8:7"},"referencedDeclaration":1542,"src":"8187:8:7","typeDescriptions":{"typeIdentifier":"t_struct$_Trace224_$1542_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace224"}},"visibility":"internal"},{"constant":false,"id":1553,"mutability":"mutable","name":"key","nameLocation":"8217:3:7","nodeType":"VariableDeclaration","scope":1570,"src":"8210:10:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":1552,"name":"uint32","nodeType":"ElementaryTypeName","src":"8210:6:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":1555,"mutability":"mutable","name":"value","nameLocation":"8230:5:7","nodeType":"VariableDeclaration","scope":1570,"src":"8222:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"},"typeName":{"id":1554,"name":"uint224","nodeType":"ElementaryTypeName","src":"8222:7:7","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"visibility":"internal"}],"src":"8186:50:7"},"returnParameters":{"id":1561,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1558,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1570,"src":"8255:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"},"typeName":{"id":1557,"name":"uint224","nodeType":"ElementaryTypeName","src":"8255:7:7","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"visibility":"internal"},{"constant":false,"id":1560,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1570,"src":"8264:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"},"typeName":{"id":1559,"name":"uint224","nodeType":"ElementaryTypeName","src":"8264:7:7","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"visibility":"internal"}],"src":"8254:18:7"},"scope":2542,"src":"8173:162:7","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1609,"nodeType":"Block","src":"8581:207:7","statements":[{"assignments":[1582],"declarations":[{"constant":false,"id":1582,"mutability":"mutable","name":"len","nameLocation":"8599:3:7","nodeType":"VariableDeclaration","scope":1609,"src":"8591:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1581,"name":"uint256","nodeType":"ElementaryTypeName","src":"8591:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1586,"initialValue":{"expression":{"expression":{"id":1583,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1574,"src":"8605:4:7","typeDescriptions":{"typeIdentifier":"t_struct$_Trace224_$1542_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace224 storage pointer"}},"id":1584,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8610:12:7","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":1541,"src":"8605:17:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage ref"}},"id":1585,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8623:6:7","memberName":"length","nodeType":"MemberAccess","src":"8605:24:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8591:38:7"},{"assignments":[1588],"declarations":[{"constant":false,"id":1588,"mutability":"mutable","name":"pos","nameLocation":"8647:3:7","nodeType":"VariableDeclaration","scope":1609,"src":"8639:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1587,"name":"uint256","nodeType":"ElementaryTypeName","src":"8639:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1596,"initialValue":{"arguments":[{"expression":{"id":1590,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1574,"src":"8672:4:7","typeDescriptions":{"typeIdentifier":"t_struct$_Trace224_$1542_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace224 storage pointer"}},"id":1591,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8677:12:7","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":1541,"src":"8672:17:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage ref"}},{"id":1592,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1576,"src":"8691:3:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"hexValue":"30","id":1593,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8696:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":1594,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1582,"src":"8699:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage ref"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1589,"name":"_lowerBinaryLookup","nodeType":"Identifier","overloadedDeclarations":[1522,2024,2526],"referencedDeclaration":2024,"src":"8653:18:7","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage_ptr_$_t_uint32_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage pointer,uint32,uint256,uint256) view returns (uint256)"}},"id":1595,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8653:50:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8639:64:7"},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1599,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1597,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1588,"src":"8720:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":1598,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1582,"src":"8727:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8720:10:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"expression":{"arguments":[{"expression":{"id":1602,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1574,"src":"8751:4:7","typeDescriptions":{"typeIdentifier":"t_struct$_Trace224_$1542_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace224 storage pointer"}},"id":1603,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8756:12:7","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":1541,"src":"8751:17:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage ref"}},{"id":1604,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1588,"src":"8770:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage ref"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1601,"name":"_unsafeAccess","nodeType":"Identifier","overloadedDeclarations":[1537,2039,2541],"referencedDeclaration":2039,"src":"8737:13:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage_ptr_$_t_uint256_$returns$_t_struct$_Checkpoint224_$1547_storage_ptr_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage pointer,uint256) pure returns (struct CheckpointsUpgradeable.Checkpoint224 storage pointer)"}},"id":1605,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8737:37:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint224_$1547_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage pointer"}},"id":1606,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8775:6:7","memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":1546,"src":"8737:44:7","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"id":1607,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"8720:61:7","trueExpression":{"hexValue":"30","id":1600,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8733:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"functionReturnParameters":1580,"id":1608,"nodeType":"Return","src":"8713:68:7"}]},"documentation":{"id":1571,"nodeType":"StructuredDocumentation","src":"8341:147:7","text":" @dev Returns the value in the first (oldest) checkpoint with key greater or equal than the search key, or zero if there is none."},"id":1610,"implemented":true,"kind":"function","modifiers":[],"name":"lowerLookup","nameLocation":"8502:11:7","nodeType":"FunctionDefinition","parameters":{"id":1577,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1574,"mutability":"mutable","name":"self","nameLocation":"8531:4:7","nodeType":"VariableDeclaration","scope":1610,"src":"8514:21:7","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Trace224_$1542_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace224"},"typeName":{"id":1573,"nodeType":"UserDefinedTypeName","pathNode":{"id":1572,"name":"Trace224","nameLocations":["8514:8:7"],"nodeType":"IdentifierPath","referencedDeclaration":1542,"src":"8514:8:7"},"referencedDeclaration":1542,"src":"8514:8:7","typeDescriptions":{"typeIdentifier":"t_struct$_Trace224_$1542_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace224"}},"visibility":"internal"},{"constant":false,"id":1576,"mutability":"mutable","name":"key","nameLocation":"8544:3:7","nodeType":"VariableDeclaration","scope":1610,"src":"8537:10:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":1575,"name":"uint32","nodeType":"ElementaryTypeName","src":"8537:6:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"8513:35:7"},"returnParameters":{"id":1580,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1579,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1610,"src":"8572:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"},"typeName":{"id":1578,"name":"uint224","nodeType":"ElementaryTypeName","src":"8572:7:7","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"visibility":"internal"}],"src":"8571:9:7"},"scope":2542,"src":"8493:295:7","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":1651,"nodeType":"Block","src":"9036:209:7","statements":[{"assignments":[1622],"declarations":[{"constant":false,"id":1622,"mutability":"mutable","name":"len","nameLocation":"9054:3:7","nodeType":"VariableDeclaration","scope":1651,"src":"9046:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1621,"name":"uint256","nodeType":"ElementaryTypeName","src":"9046:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1626,"initialValue":{"expression":{"expression":{"id":1623,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1614,"src":"9060:4:7","typeDescriptions":{"typeIdentifier":"t_struct$_Trace224_$1542_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace224 storage pointer"}},"id":1624,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9065:12:7","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":1541,"src":"9060:17:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage ref"}},"id":1625,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9078:6:7","memberName":"length","nodeType":"MemberAccess","src":"9060:24:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9046:38:7"},{"assignments":[1628],"declarations":[{"constant":false,"id":1628,"mutability":"mutable","name":"pos","nameLocation":"9102:3:7","nodeType":"VariableDeclaration","scope":1651,"src":"9094:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1627,"name":"uint256","nodeType":"ElementaryTypeName","src":"9094:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1636,"initialValue":{"arguments":[{"expression":{"id":1630,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1614,"src":"9127:4:7","typeDescriptions":{"typeIdentifier":"t_struct$_Trace224_$1542_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace224 storage pointer"}},"id":1631,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9132:12:7","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":1541,"src":"9127:17:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage ref"}},{"id":1632,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1616,"src":"9146:3:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"hexValue":"30","id":1633,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9151:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":1634,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1622,"src":"9154:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage ref"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1629,"name":"_upperBinaryLookup","nodeType":"Identifier","overloadedDeclarations":[1470,1972,2474],"referencedDeclaration":1972,"src":"9108:18:7","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage_ptr_$_t_uint32_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage pointer,uint32,uint256,uint256) view returns (uint256)"}},"id":1635,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9108:50:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9094:64:7"},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1639,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1637,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1628,"src":"9175:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1638,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9182:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9175:8:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"expression":{"arguments":[{"expression":{"id":1642,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1614,"src":"9204:4:7","typeDescriptions":{"typeIdentifier":"t_struct$_Trace224_$1542_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace224 storage pointer"}},"id":1643,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9209:12:7","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":1541,"src":"9204:17:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage ref"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1646,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1644,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1628,"src":"9223:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":1645,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9229:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9223:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage ref"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1641,"name":"_unsafeAccess","nodeType":"Identifier","overloadedDeclarations":[1537,2039,2541],"referencedDeclaration":2039,"src":"9190:13:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage_ptr_$_t_uint256_$returns$_t_struct$_Checkpoint224_$1547_storage_ptr_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage pointer,uint256) pure returns (struct CheckpointsUpgradeable.Checkpoint224 storage pointer)"}},"id":1647,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9190:41:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint224_$1547_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage pointer"}},"id":1648,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9232:6:7","memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":1546,"src":"9190:48:7","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"id":1649,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"9175:63:7","trueExpression":{"hexValue":"30","id":1640,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9186:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"functionReturnParameters":1620,"id":1650,"nodeType":"Return","src":"9168:70:7"}]},"documentation":{"id":1611,"nodeType":"StructuredDocumentation","src":"8794:149:7","text":" @dev Returns the value in the last (most recent) checkpoint with key lower or equal than the search key, or zero if there is none."},"id":1652,"implemented":true,"kind":"function","modifiers":[],"name":"upperLookup","nameLocation":"8957:11:7","nodeType":"FunctionDefinition","parameters":{"id":1617,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1614,"mutability":"mutable","name":"self","nameLocation":"8986:4:7","nodeType":"VariableDeclaration","scope":1652,"src":"8969:21:7","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Trace224_$1542_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace224"},"typeName":{"id":1613,"nodeType":"UserDefinedTypeName","pathNode":{"id":1612,"name":"Trace224","nameLocations":["8969:8:7"],"nodeType":"IdentifierPath","referencedDeclaration":1542,"src":"8969:8:7"},"referencedDeclaration":1542,"src":"8969:8:7","typeDescriptions":{"typeIdentifier":"t_struct$_Trace224_$1542_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace224"}},"visibility":"internal"},{"constant":false,"id":1616,"mutability":"mutable","name":"key","nameLocation":"8999:3:7","nodeType":"VariableDeclaration","scope":1652,"src":"8992:10:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":1615,"name":"uint32","nodeType":"ElementaryTypeName","src":"8992:6:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"8968:35:7"},"returnParameters":{"id":1620,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1619,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1652,"src":"9027:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"},"typeName":{"id":1618,"name":"uint224","nodeType":"ElementaryTypeName","src":"9027:7:7","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"visibility":"internal"}],"src":"9026:9:7"},"scope":2542,"src":"8948:297:7","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":1736,"nodeType":"Block","src":"9630:523:7","statements":[{"assignments":[1664],"declarations":[{"constant":false,"id":1664,"mutability":"mutable","name":"len","nameLocation":"9648:3:7","nodeType":"VariableDeclaration","scope":1736,"src":"9640:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1663,"name":"uint256","nodeType":"ElementaryTypeName","src":"9640:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1668,"initialValue":{"expression":{"expression":{"id":1665,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1656,"src":"9654:4:7","typeDescriptions":{"typeIdentifier":"t_struct$_Trace224_$1542_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace224 storage pointer"}},"id":1666,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9659:12:7","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":1541,"src":"9654:17:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage ref"}},"id":1667,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9672:6:7","memberName":"length","nodeType":"MemberAccess","src":"9654:24:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9640:38:7"},{"assignments":[1670],"declarations":[{"constant":false,"id":1670,"mutability":"mutable","name":"low","nameLocation":"9697:3:7","nodeType":"VariableDeclaration","scope":1736,"src":"9689:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1669,"name":"uint256","nodeType":"ElementaryTypeName","src":"9689:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1672,"initialValue":{"hexValue":"30","id":1671,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9703:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"9689:15:7"},{"assignments":[1674],"declarations":[{"constant":false,"id":1674,"mutability":"mutable","name":"high","nameLocation":"9722:4:7","nodeType":"VariableDeclaration","scope":1736,"src":"9714:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1673,"name":"uint256","nodeType":"ElementaryTypeName","src":"9714:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1676,"initialValue":{"id":1675,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1664,"src":"9729:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9714:18:7"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1679,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1677,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1664,"src":"9747:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"35","id":1678,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9753:1:7","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"src":"9747:7:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1711,"nodeType":"IfStatement","src":"9743:245:7","trueBody":{"id":1710,"nodeType":"Block","src":"9756:232:7","statements":[{"assignments":[1681],"declarations":[{"constant":false,"id":1681,"mutability":"mutable","name":"mid","nameLocation":"9778:3:7","nodeType":"VariableDeclaration","scope":1710,"src":"9770:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1680,"name":"uint256","nodeType":"ElementaryTypeName","src":"9770:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1688,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1687,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1682,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1664,"src":"9784:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[{"id":1685,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1664,"src":"9811:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1683,"name":"MathUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3700,"src":"9790:15:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_MathUpgradeable_$3700_$","typeString":"type(library MathUpgradeable)"}},"id":1684,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9806:4:7","memberName":"sqrt","nodeType":"MemberAccess","referencedDeclaration":3204,"src":"9790:20:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1686,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9790:25:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9784:31:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9770:45:7"},{"condition":{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":1696,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1689,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1658,"src":"9833:3:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"arguments":[{"expression":{"id":1691,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1656,"src":"9853:4:7","typeDescriptions":{"typeIdentifier":"t_struct$_Trace224_$1542_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace224 storage pointer"}},"id":1692,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9858:12:7","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":1541,"src":"9853:17:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage ref"}},{"id":1693,"name":"mid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1681,"src":"9872:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage ref"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1690,"name":"_unsafeAccess","nodeType":"Identifier","overloadedDeclarations":[1537,2039,2541],"referencedDeclaration":2039,"src":"9839:13:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage_ptr_$_t_uint256_$returns$_t_struct$_Checkpoint224_$1547_storage_ptr_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage pointer,uint256) pure returns (struct CheckpointsUpgradeable.Checkpoint224 storage pointer)"}},"id":1694,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9839:37:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint224_$1547_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage pointer"}},"id":1695,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9877:4:7","memberName":"_key","nodeType":"MemberAccess","referencedDeclaration":1544,"src":"9839:42:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"9833:48:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1708,"nodeType":"Block","src":"9932:46:7","statements":[{"expression":{"id":1706,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1702,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1670,"src":"9950:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1705,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1703,"name":"mid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1681,"src":"9956:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1704,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9962:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9956:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9950:13:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1707,"nodeType":"ExpressionStatement","src":"9950:13:7"}]},"id":1709,"nodeType":"IfStatement","src":"9829:149:7","trueBody":{"id":1701,"nodeType":"Block","src":"9883:43:7","statements":[{"expression":{"id":1699,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1697,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1674,"src":"9901:4:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1698,"name":"mid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1681,"src":"9908:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9901:10:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1700,"nodeType":"ExpressionStatement","src":"9901:10:7"}]}}]}},{"assignments":[1713],"declarations":[{"constant":false,"id":1713,"mutability":"mutable","name":"pos","nameLocation":"10006:3:7","nodeType":"VariableDeclaration","scope":1736,"src":"9998:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1712,"name":"uint256","nodeType":"ElementaryTypeName","src":"9998:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1721,"initialValue":{"arguments":[{"expression":{"id":1715,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1656,"src":"10031:4:7","typeDescriptions":{"typeIdentifier":"t_struct$_Trace224_$1542_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace224 storage pointer"}},"id":1716,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10036:12:7","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":1541,"src":"10031:17:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage ref"}},{"id":1717,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1658,"src":"10050:3:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":1718,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1670,"src":"10055:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1719,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1674,"src":"10060:4:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage ref"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1714,"name":"_upperBinaryLookup","nodeType":"Identifier","overloadedDeclarations":[1470,1972,2474],"referencedDeclaration":1972,"src":"10012:18:7","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage_ptr_$_t_uint32_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage pointer,uint32,uint256,uint256) view returns (uint256)"}},"id":1720,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10012:53:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9998:67:7"},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1724,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1722,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1713,"src":"10083:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1723,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10090:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"10083:8:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"expression":{"arguments":[{"expression":{"id":1727,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1656,"src":"10112:4:7","typeDescriptions":{"typeIdentifier":"t_struct$_Trace224_$1542_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace224 storage pointer"}},"id":1728,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10117:12:7","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":1541,"src":"10112:17:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage ref"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1731,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1729,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1713,"src":"10131:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":1730,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10137:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"10131:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage ref"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1726,"name":"_unsafeAccess","nodeType":"Identifier","overloadedDeclarations":[1537,2039,2541],"referencedDeclaration":2039,"src":"10098:13:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage_ptr_$_t_uint256_$returns$_t_struct$_Checkpoint224_$1547_storage_ptr_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage pointer,uint256) pure returns (struct CheckpointsUpgradeable.Checkpoint224 storage pointer)"}},"id":1732,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10098:41:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint224_$1547_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage pointer"}},"id":1733,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10140:6:7","memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":1546,"src":"10098:48:7","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"id":1734,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"10083:63:7","trueExpression":{"hexValue":"30","id":1725,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10094:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"functionReturnParameters":1662,"id":1735,"nodeType":"Return","src":"10076:70:7"}]},"documentation":{"id":1653,"nodeType":"StructuredDocumentation","src":"9251:280:7","text":" @dev Returns the value in the last (most recent) checkpoint with key lower or equal than the search key, or zero if there is none.\n NOTE: This is a variant of {upperLookup} that is optimised to find \"recent\" checkpoint (checkpoints with high keys)."},"id":1737,"implemented":true,"kind":"function","modifiers":[],"name":"upperLookupRecent","nameLocation":"9545:17:7","nodeType":"FunctionDefinition","parameters":{"id":1659,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1656,"mutability":"mutable","name":"self","nameLocation":"9580:4:7","nodeType":"VariableDeclaration","scope":1737,"src":"9563:21:7","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Trace224_$1542_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace224"},"typeName":{"id":1655,"nodeType":"UserDefinedTypeName","pathNode":{"id":1654,"name":"Trace224","nameLocations":["9563:8:7"],"nodeType":"IdentifierPath","referencedDeclaration":1542,"src":"9563:8:7"},"referencedDeclaration":1542,"src":"9563:8:7","typeDescriptions":{"typeIdentifier":"t_struct$_Trace224_$1542_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace224"}},"visibility":"internal"},{"constant":false,"id":1658,"mutability":"mutable","name":"key","nameLocation":"9593:3:7","nodeType":"VariableDeclaration","scope":1737,"src":"9586:10:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":1657,"name":"uint32","nodeType":"ElementaryTypeName","src":"9586:6:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"9562:35:7"},"returnParameters":{"id":1662,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1661,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1737,"src":"9621:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"},"typeName":{"id":1660,"name":"uint224","nodeType":"ElementaryTypeName","src":"9621:7:7","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"visibility":"internal"}],"src":"9620:9:7"},"scope":2542,"src":"9536:617:7","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":1766,"nodeType":"Block","src":"10344:135:7","statements":[{"assignments":[1747],"declarations":[{"constant":false,"id":1747,"mutability":"mutable","name":"pos","nameLocation":"10362:3:7","nodeType":"VariableDeclaration","scope":1766,"src":"10354:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1746,"name":"uint256","nodeType":"ElementaryTypeName","src":"10354:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1751,"initialValue":{"expression":{"expression":{"id":1748,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1741,"src":"10368:4:7","typeDescriptions":{"typeIdentifier":"t_struct$_Trace224_$1542_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace224 storage pointer"}},"id":1749,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10373:12:7","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":1541,"src":"10368:17:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage ref"}},"id":1750,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10386:6:7","memberName":"length","nodeType":"MemberAccess","src":"10368:24:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"10354:38:7"},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1754,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1752,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1747,"src":"10409:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1753,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10416:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"10409:8:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"expression":{"arguments":[{"expression":{"id":1757,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1741,"src":"10438:4:7","typeDescriptions":{"typeIdentifier":"t_struct$_Trace224_$1542_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace224 storage pointer"}},"id":1758,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10443:12:7","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":1541,"src":"10438:17:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage ref"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1761,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1759,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1747,"src":"10457:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":1760,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10463:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"10457:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage ref"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1756,"name":"_unsafeAccess","nodeType":"Identifier","overloadedDeclarations":[1537,2039,2541],"referencedDeclaration":2039,"src":"10424:13:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage_ptr_$_t_uint256_$returns$_t_struct$_Checkpoint224_$1547_storage_ptr_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage pointer,uint256) pure returns (struct CheckpointsUpgradeable.Checkpoint224 storage pointer)"}},"id":1762,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10424:41:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint224_$1547_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage pointer"}},"id":1763,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10466:6:7","memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":1546,"src":"10424:48:7","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"id":1764,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"10409:63:7","trueExpression":{"hexValue":"30","id":1755,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10420:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"functionReturnParameters":1745,"id":1765,"nodeType":"Return","src":"10402:70:7"}]},"documentation":{"id":1738,"nodeType":"StructuredDocumentation","src":"10159:109:7","text":" @dev Returns the value in the most recent checkpoint, or zero if there are no checkpoints."},"id":1767,"implemented":true,"kind":"function","modifiers":[],"name":"latest","nameLocation":"10282:6:7","nodeType":"FunctionDefinition","parameters":{"id":1742,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1741,"mutability":"mutable","name":"self","nameLocation":"10306:4:7","nodeType":"VariableDeclaration","scope":1767,"src":"10289:21:7","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Trace224_$1542_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace224"},"typeName":{"id":1740,"nodeType":"UserDefinedTypeName","pathNode":{"id":1739,"name":"Trace224","nameLocations":["10289:8:7"],"nodeType":"IdentifierPath","referencedDeclaration":1542,"src":"10289:8:7"},"referencedDeclaration":1542,"src":"10289:8:7","typeDescriptions":{"typeIdentifier":"t_struct$_Trace224_$1542_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace224"}},"visibility":"internal"}],"src":"10288:23:7"},"returnParameters":{"id":1745,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1744,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1767,"src":"10335:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"},"typeName":{"id":1743,"name":"uint224","nodeType":"ElementaryTypeName","src":"10335:7:7","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"visibility":"internal"}],"src":"10334:9:7"},"scope":2542,"src":"10273:206:7","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":1815,"nodeType":"Block","src":"10772:274:7","statements":[{"assignments":[1781],"declarations":[{"constant":false,"id":1781,"mutability":"mutable","name":"pos","nameLocation":"10790:3:7","nodeType":"VariableDeclaration","scope":1815,"src":"10782:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1780,"name":"uint256","nodeType":"ElementaryTypeName","src":"10782:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1785,"initialValue":{"expression":{"expression":{"id":1782,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1771,"src":"10796:4:7","typeDescriptions":{"typeIdentifier":"t_struct$_Trace224_$1542_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace224 storage pointer"}},"id":1783,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10801:12:7","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":1541,"src":"10796:17:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage ref"}},"id":1784,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10814:6:7","memberName":"length","nodeType":"MemberAccess","src":"10796:24:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"10782:38:7"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1788,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1786,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1781,"src":"10834:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1787,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10841:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"10834:8:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1813,"nodeType":"Block","src":"10895:145:7","statements":[{"assignments":[1797],"declarations":[{"constant":false,"id":1797,"mutability":"mutable","name":"ckpt","nameLocation":"10930:4:7","nodeType":"VariableDeclaration","scope":1813,"src":"10909:25:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint224_$1547_memory_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224"},"typeName":{"id":1796,"nodeType":"UserDefinedTypeName","pathNode":{"id":1795,"name":"Checkpoint224","nameLocations":["10909:13:7"],"nodeType":"IdentifierPath","referencedDeclaration":1547,"src":"10909:13:7"},"referencedDeclaration":1547,"src":"10909:13:7","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint224_$1547_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224"}},"visibility":"internal"}],"id":1805,"initialValue":{"arguments":[{"expression":{"id":1799,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1771,"src":"10951:4:7","typeDescriptions":{"typeIdentifier":"t_struct$_Trace224_$1542_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace224 storage pointer"}},"id":1800,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10956:12:7","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":1541,"src":"10951:17:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage ref"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1803,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1801,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1781,"src":"10970:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":1802,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10976:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"10970:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage ref"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1798,"name":"_unsafeAccess","nodeType":"Identifier","overloadedDeclarations":[1537,2039,2541],"referencedDeclaration":2039,"src":"10937:13:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage_ptr_$_t_uint256_$returns$_t_struct$_Checkpoint224_$1547_storage_ptr_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage pointer,uint256) pure returns (struct CheckpointsUpgradeable.Checkpoint224 storage pointer)"}},"id":1804,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10937:41:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint224_$1547_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"10909:69:7"},{"expression":{"components":[{"hexValue":"74727565","id":1806,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"11000:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"expression":{"id":1807,"name":"ckpt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1797,"src":"11006:4:7","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint224_$1547_memory_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224 memory"}},"id":1808,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11011:4:7","memberName":"_key","nodeType":"MemberAccess","referencedDeclaration":1544,"src":"11006:9:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"expression":{"id":1809,"name":"ckpt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1797,"src":"11017:4:7","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint224_$1547_memory_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224 memory"}},"id":1810,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11022:6:7","memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":1546,"src":"11017:11:7","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}}],"id":1811,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10999:30:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint32_$_t_uint224_$","typeString":"tuple(bool,uint32,uint224)"}},"functionReturnParameters":1779,"id":1812,"nodeType":"Return","src":"10992:37:7"}]},"id":1814,"nodeType":"IfStatement","src":"10830:210:7","trueBody":{"id":1794,"nodeType":"Block","src":"10844:45:7","statements":[{"expression":{"components":[{"hexValue":"66616c7365","id":1789,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10866:5:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":1790,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10873:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"30","id":1791,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10876:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":1792,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"10865:13:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0,int_const 0)"}},"functionReturnParameters":1779,"id":1793,"nodeType":"Return","src":"10858:20:7"}]}}]},"documentation":{"id":1768,"nodeType":"StructuredDocumentation","src":"10485:168:7","text":" @dev Returns whether there is a checkpoint in the structure (i.e. it is not empty), and if so the key and value\n in the most recent checkpoint."},"id":1816,"implemented":true,"kind":"function","modifiers":[],"name":"latestCheckpoint","nameLocation":"10667:16:7","nodeType":"FunctionDefinition","parameters":{"id":1772,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1771,"mutability":"mutable","name":"self","nameLocation":"10701:4:7","nodeType":"VariableDeclaration","scope":1816,"src":"10684:21:7","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Trace224_$1542_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace224"},"typeName":{"id":1770,"nodeType":"UserDefinedTypeName","pathNode":{"id":1769,"name":"Trace224","nameLocations":["10684:8:7"],"nodeType":"IdentifierPath","referencedDeclaration":1542,"src":"10684:8:7"},"referencedDeclaration":1542,"src":"10684:8:7","typeDescriptions":{"typeIdentifier":"t_struct$_Trace224_$1542_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace224"}},"visibility":"internal"}],"src":"10683:23:7"},"returnParameters":{"id":1779,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1774,"mutability":"mutable","name":"exists","nameLocation":"10735:6:7","nodeType":"VariableDeclaration","scope":1816,"src":"10730:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1773,"name":"bool","nodeType":"ElementaryTypeName","src":"10730:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1776,"mutability":"mutable","name":"_key","nameLocation":"10750:4:7","nodeType":"VariableDeclaration","scope":1816,"src":"10743:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":1775,"name":"uint32","nodeType":"ElementaryTypeName","src":"10743:6:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":1778,"mutability":"mutable","name":"_value","nameLocation":"10764:6:7","nodeType":"VariableDeclaration","scope":1816,"src":"10756:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"},"typeName":{"id":1777,"name":"uint224","nodeType":"ElementaryTypeName","src":"10756:7:7","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"visibility":"internal"}],"src":"10729:42:7"},"scope":2542,"src":"10658:388:7","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":1829,"nodeType":"Block","src":"11185:48:7","statements":[{"expression":{"expression":{"expression":{"id":1825,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1820,"src":"11202:4:7","typeDescriptions":{"typeIdentifier":"t_struct$_Trace224_$1542_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace224 storage pointer"}},"id":1826,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11207:12:7","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":1541,"src":"11202:17:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage ref"}},"id":1827,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11220:6:7","memberName":"length","nodeType":"MemberAccess","src":"11202:24:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1824,"id":1828,"nodeType":"Return","src":"11195:31:7"}]},"documentation":{"id":1817,"nodeType":"StructuredDocumentation","src":"11052:57:7","text":" @dev Returns the number of checkpoint."},"id":1830,"implemented":true,"kind":"function","modifiers":[],"name":"length","nameLocation":"11123:6:7","nodeType":"FunctionDefinition","parameters":{"id":1821,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1820,"mutability":"mutable","name":"self","nameLocation":"11147:4:7","nodeType":"VariableDeclaration","scope":1830,"src":"11130:21:7","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Trace224_$1542_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace224"},"typeName":{"id":1819,"nodeType":"UserDefinedTypeName","pathNode":{"id":1818,"name":"Trace224","nameLocations":["11130:8:7"],"nodeType":"IdentifierPath","referencedDeclaration":1542,"src":"11130:8:7"},"referencedDeclaration":1542,"src":"11130:8:7","typeDescriptions":{"typeIdentifier":"t_struct$_Trace224_$1542_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace224"}},"visibility":"internal"}],"src":"11129:23:7"},"returnParameters":{"id":1824,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1823,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1830,"src":"11176:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1822,"name":"uint256","nodeType":"ElementaryTypeName","src":"11176:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11175:9:7"},"scope":2542,"src":"11114:119:7","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":1919,"nodeType":"Block","src":"11518:727:7","statements":[{"assignments":[1847],"declarations":[{"constant":false,"id":1847,"mutability":"mutable","name":"pos","nameLocation":"11536:3:7","nodeType":"VariableDeclaration","scope":1919,"src":"11528:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1846,"name":"uint256","nodeType":"ElementaryTypeName","src":"11528:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1850,"initialValue":{"expression":{"id":1848,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1835,"src":"11542:4:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage pointer"}},"id":1849,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11547:6:7","memberName":"length","nodeType":"MemberAccess","src":"11542:11:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"11528:25:7"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1853,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1851,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1847,"src":"11568:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1852,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11574:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11568:7:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1917,"nodeType":"Block","src":"12131:108:7","statements":[{"expression":{"arguments":[{"arguments":[{"id":1908,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1837,"src":"12176:3:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":1909,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1839,"src":"12189:5:7","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_uint224","typeString":"uint224"}],"id":1907,"name":"Checkpoint224","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1547,"src":"12155:13:7","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Checkpoint224_$1547_storage_ptr_$","typeString":"type(struct CheckpointsUpgradeable.Checkpoint224 storage pointer)"}},"id":1910,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["12170:4:7","12181:6:7"],"names":["_key","_value"],"nodeType":"FunctionCall","src":"12155:41:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint224_$1547_memory_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224 memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Checkpoint224_$1547_memory_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224 memory"}],"expression":{"id":1904,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1835,"src":"12145:4:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage pointer"}},"id":1906,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12150:4:7","memberName":"push","nodeType":"MemberAccess","src":"12145:9:7","typeDescriptions":{"typeIdentifier":"t_function_arraypush_nonpayable$_t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage_ptr_$_t_struct$_Checkpoint224_$1547_storage_$returns$__$bound_to$_t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage_ptr_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage pointer,struct CheckpointsUpgradeable.Checkpoint224 storage ref)"}},"id":1911,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12145:52:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1912,"nodeType":"ExpressionStatement","src":"12145:52:7"},{"expression":{"components":[{"hexValue":"30","id":1913,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12219:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":1914,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1839,"src":"12222:5:7","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}}],"id":1915,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12218:10:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_rational_0_by_1_$_t_uint224_$","typeString":"tuple(int_const 0,uint224)"}},"functionReturnParameters":1845,"id":1916,"nodeType":"Return","src":"12211:17:7"}]},"id":1918,"nodeType":"IfStatement","src":"11564:675:7","trueBody":{"id":1903,"nodeType":"Block","src":"11577:548:7","statements":[{"assignments":[1856],"declarations":[{"constant":false,"id":1856,"mutability":"mutable","name":"last","nameLocation":"11664:4:7","nodeType":"VariableDeclaration","scope":1903,"src":"11643:25:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint224_$1547_memory_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224"},"typeName":{"id":1855,"nodeType":"UserDefinedTypeName","pathNode":{"id":1854,"name":"Checkpoint224","nameLocations":["11643:13:7"],"nodeType":"IdentifierPath","referencedDeclaration":1547,"src":"11643:13:7"},"referencedDeclaration":1547,"src":"11643:13:7","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint224_$1547_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224"}},"visibility":"internal"}],"id":1863,"initialValue":{"arguments":[{"id":1858,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1835,"src":"11685:4:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage pointer"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1861,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1859,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1847,"src":"11691:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":1860,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11697:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"11691:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage pointer"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1857,"name":"_unsafeAccess","nodeType":"Identifier","overloadedDeclarations":[1537,2039,2541],"referencedDeclaration":2039,"src":"11671:13:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage_ptr_$_t_uint256_$returns$_t_struct$_Checkpoint224_$1547_storage_ptr_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage pointer,uint256) pure returns (struct CheckpointsUpgradeable.Checkpoint224 storage pointer)"}},"id":1862,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11671:28:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint224_$1547_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"11643:56:7"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":1868,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1865,"name":"last","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1856,"src":"11777:4:7","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint224_$1547_memory_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224 memory"}},"id":1866,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11782:4:7","memberName":"_key","nodeType":"MemberAccess","referencedDeclaration":1544,"src":"11777:9:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":1867,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1837,"src":"11790:3:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"11777:16:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"436865636b706f696e743a2064656372656173696e67206b657973","id":1869,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11795:29:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_4f6b1769383e9e01fad001f10d4f9180a25f63424c2597419936b157d29f34ec","typeString":"literal_string \"Checkpoint: decreasing keys\""},"value":"Checkpoint: decreasing keys"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_4f6b1769383e9e01fad001f10d4f9180a25f63424c2597419936b157d29f34ec","typeString":"literal_string \"Checkpoint: decreasing keys\""}],"id":1864,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"11769:7:7","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1870,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11769:56:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1871,"nodeType":"ExpressionStatement","src":"11769:56:7"},{"condition":{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":1875,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1872,"name":"last","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1856,"src":"11889:4:7","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint224_$1547_memory_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224 memory"}},"id":1873,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11894:4:7","memberName":"_key","nodeType":"MemberAccess","referencedDeclaration":1544,"src":"11889:9:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":1874,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1837,"src":"11902:3:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"11889:16:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1896,"nodeType":"Block","src":"11989:85:7","statements":[{"expression":{"arguments":[{"arguments":[{"id":1891,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1837,"src":"12038:3:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":1892,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1839,"src":"12051:5:7","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_uint224","typeString":"uint224"}],"id":1890,"name":"Checkpoint224","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1547,"src":"12017:13:7","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Checkpoint224_$1547_storage_ptr_$","typeString":"type(struct CheckpointsUpgradeable.Checkpoint224 storage pointer)"}},"id":1893,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["12032:4:7","12043:6:7"],"names":["_key","_value"],"nodeType":"FunctionCall","src":"12017:41:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint224_$1547_memory_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224 memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Checkpoint224_$1547_memory_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224 memory"}],"expression":{"id":1887,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1835,"src":"12007:4:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage pointer"}},"id":1889,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12012:4:7","memberName":"push","nodeType":"MemberAccess","src":"12007:9:7","typeDescriptions":{"typeIdentifier":"t_function_arraypush_nonpayable$_t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage_ptr_$_t_struct$_Checkpoint224_$1547_storage_$returns$__$bound_to$_t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage_ptr_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage pointer,struct CheckpointsUpgradeable.Checkpoint224 storage ref)"}},"id":1894,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12007:52:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1895,"nodeType":"ExpressionStatement","src":"12007:52:7"}]},"id":1897,"nodeType":"IfStatement","src":"11885:189:7","trueBody":{"id":1886,"nodeType":"Block","src":"11907:76:7","statements":[{"expression":{"id":1884,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[{"id":1877,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1835,"src":"11939:4:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage pointer"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1880,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1878,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1847,"src":"11945:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":1879,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11951:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"11945:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage pointer"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1876,"name":"_unsafeAccess","nodeType":"Identifier","overloadedDeclarations":[1537,2039,2541],"referencedDeclaration":2039,"src":"11925:13:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage_ptr_$_t_uint256_$returns$_t_struct$_Checkpoint224_$1547_storage_ptr_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage pointer,uint256) pure returns (struct CheckpointsUpgradeable.Checkpoint224 storage pointer)"}},"id":1881,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11925:28:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint224_$1547_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage pointer"}},"id":1882,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"11954:6:7","memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":1546,"src":"11925:35:7","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1883,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1839,"src":"11963:5:7","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"src":"11925:43:7","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"id":1885,"nodeType":"ExpressionStatement","src":"11925:43:7"}]}},{"expression":{"components":[{"expression":{"id":1898,"name":"last","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1856,"src":"12095:4:7","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint224_$1547_memory_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224 memory"}},"id":1899,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12100:6:7","memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":1546,"src":"12095:11:7","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},{"id":1900,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1839,"src":"12108:5:7","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}}],"id":1901,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12094:20:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint224_$_t_uint224_$","typeString":"tuple(uint224,uint224)"}},"functionReturnParameters":1845,"id":1902,"nodeType":"Return","src":"12087:27:7"}]}}]},"documentation":{"id":1831,"nodeType":"StructuredDocumentation","src":"11239:165:7","text":" @dev Pushes a (`key`, `value`) pair into an ordered list of checkpoints, either by inserting a new checkpoint,\n or by updating the last one."},"id":1920,"implemented":true,"kind":"function","modifiers":[],"name":"_insert","nameLocation":"11418:7:7","nodeType":"FunctionDefinition","parameters":{"id":1840,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1835,"mutability":"mutable","name":"self","nameLocation":"11450:4:7","nodeType":"VariableDeclaration","scope":1920,"src":"11426:28:7","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224[]"},"typeName":{"baseType":{"id":1833,"nodeType":"UserDefinedTypeName","pathNode":{"id":1832,"name":"Checkpoint224","nameLocations":["11426:13:7"],"nodeType":"IdentifierPath","referencedDeclaration":1547,"src":"11426:13:7"},"referencedDeclaration":1547,"src":"11426:13:7","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint224_$1547_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224"}},"id":1834,"nodeType":"ArrayTypeName","src":"11426:15:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224[]"}},"visibility":"internal"},{"constant":false,"id":1837,"mutability":"mutable","name":"key","nameLocation":"11463:3:7","nodeType":"VariableDeclaration","scope":1920,"src":"11456:10:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":1836,"name":"uint32","nodeType":"ElementaryTypeName","src":"11456:6:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":1839,"mutability":"mutable","name":"value","nameLocation":"11476:5:7","nodeType":"VariableDeclaration","scope":1920,"src":"11468:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"},"typeName":{"id":1838,"name":"uint224","nodeType":"ElementaryTypeName","src":"11468:7:7","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"visibility":"internal"}],"src":"11425:57:7"},"returnParameters":{"id":1845,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1842,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1920,"src":"11500:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"},"typeName":{"id":1841,"name":"uint224","nodeType":"ElementaryTypeName","src":"11500:7:7","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"visibility":"internal"},{"constant":false,"id":1844,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1920,"src":"11509:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"},"typeName":{"id":1843,"name":"uint224","nodeType":"ElementaryTypeName","src":"11509:7:7","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"visibility":"internal"}],"src":"11499:18:7"},"scope":2542,"src":"11409:836:7","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":1971,"nodeType":"Block","src":"12757:278:7","statements":[{"body":{"id":1967,"nodeType":"Block","src":"12786:222:7","statements":[{"assignments":[1940],"declarations":[{"constant":false,"id":1940,"mutability":"mutable","name":"mid","nameLocation":"12808:3:7","nodeType":"VariableDeclaration","scope":1967,"src":"12800:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1939,"name":"uint256","nodeType":"ElementaryTypeName","src":"12800:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1946,"initialValue":{"arguments":[{"id":1943,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1929,"src":"12838:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1944,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1931,"src":"12843:4:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1941,"name":"MathUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3700,"src":"12814:15:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_MathUpgradeable_$3700_$","typeString":"type(library MathUpgradeable)"}},"id":1942,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12830:7:7","memberName":"average","nodeType":"MemberAccess","referencedDeclaration":2900,"src":"12814:23:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":1945,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12814:34:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12800:48:7"},{"condition":{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":1953,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":1948,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1925,"src":"12880:4:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage pointer"}},{"id":1949,"name":"mid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1940,"src":"12886:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage pointer"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1947,"name":"_unsafeAccess","nodeType":"Identifier","overloadedDeclarations":[1537,2039,2541],"referencedDeclaration":2039,"src":"12866:13:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage_ptr_$_t_uint256_$returns$_t_struct$_Checkpoint224_$1547_storage_ptr_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage pointer,uint256) pure returns (struct CheckpointsUpgradeable.Checkpoint224 storage pointer)"}},"id":1950,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12866:24:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint224_$1547_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage pointer"}},"id":1951,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12891:4:7","memberName":"_key","nodeType":"MemberAccess","referencedDeclaration":1544,"src":"12866:29:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":1952,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1927,"src":"12898:3:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"12866:35:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1965,"nodeType":"Block","src":"12952:46:7","statements":[{"expression":{"id":1963,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1959,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1929,"src":"12970:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1962,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1960,"name":"mid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1940,"src":"12976:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1961,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12982:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"12976:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12970:13:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1964,"nodeType":"ExpressionStatement","src":"12970:13:7"}]},"id":1966,"nodeType":"IfStatement","src":"12862:136:7","trueBody":{"id":1958,"nodeType":"Block","src":"12903:43:7","statements":[{"expression":{"id":1956,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1954,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1931,"src":"12921:4:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1955,"name":"mid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1940,"src":"12928:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12921:10:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1957,"nodeType":"ExpressionStatement","src":"12921:10:7"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1938,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1936,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1929,"src":"12774:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1937,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1931,"src":"12780:4:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12774:10:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1968,"nodeType":"WhileStatement","src":"12767:241:7"},{"expression":{"id":1969,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1931,"src":"13024:4:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1935,"id":1970,"nodeType":"Return","src":"13017:11:7"}]},"documentation":{"id":1921,"nodeType":"StructuredDocumentation","src":"12251:335:7","text":" @dev Return the index of the last (most recent) checkpoint with key lower or equal than the search key, or `high` if there is none.\n `low` and `high` define a section where to do the search, with inclusive `low` and exclusive `high`.\n WARNING: `high` should not be greater than the array's length."},"id":1972,"implemented":true,"kind":"function","modifiers":[],"name":"_upperBinaryLookup","nameLocation":"12600:18:7","nodeType":"FunctionDefinition","parameters":{"id":1932,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1925,"mutability":"mutable","name":"self","nameLocation":"12652:4:7","nodeType":"VariableDeclaration","scope":1972,"src":"12628:28:7","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224[]"},"typeName":{"baseType":{"id":1923,"nodeType":"UserDefinedTypeName","pathNode":{"id":1922,"name":"Checkpoint224","nameLocations":["12628:13:7"],"nodeType":"IdentifierPath","referencedDeclaration":1547,"src":"12628:13:7"},"referencedDeclaration":1547,"src":"12628:13:7","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint224_$1547_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224"}},"id":1924,"nodeType":"ArrayTypeName","src":"12628:15:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224[]"}},"visibility":"internal"},{"constant":false,"id":1927,"mutability":"mutable","name":"key","nameLocation":"12673:3:7","nodeType":"VariableDeclaration","scope":1972,"src":"12666:10:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":1926,"name":"uint32","nodeType":"ElementaryTypeName","src":"12666:6:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":1929,"mutability":"mutable","name":"low","nameLocation":"12694:3:7","nodeType":"VariableDeclaration","scope":1972,"src":"12686:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1928,"name":"uint256","nodeType":"ElementaryTypeName","src":"12686:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1931,"mutability":"mutable","name":"high","nameLocation":"12715:4:7","nodeType":"VariableDeclaration","scope":1972,"src":"12707:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1930,"name":"uint256","nodeType":"ElementaryTypeName","src":"12707:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12618:107:7"},"returnParameters":{"id":1935,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1934,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1972,"src":"12748:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1933,"name":"uint256","nodeType":"ElementaryTypeName","src":"12748:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12747:9:7"},"scope":2542,"src":"12591:444:7","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":2023,"nodeType":"Block","src":"13548:278:7","statements":[{"body":{"id":2019,"nodeType":"Block","src":"13577:222:7","statements":[{"assignments":[1992],"declarations":[{"constant":false,"id":1992,"mutability":"mutable","name":"mid","nameLocation":"13599:3:7","nodeType":"VariableDeclaration","scope":2019,"src":"13591:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1991,"name":"uint256","nodeType":"ElementaryTypeName","src":"13591:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1998,"initialValue":{"arguments":[{"id":1995,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1981,"src":"13629:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1996,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1983,"src":"13634:4:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1993,"name":"MathUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3700,"src":"13605:15:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_MathUpgradeable_$3700_$","typeString":"type(library MathUpgradeable)"}},"id":1994,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13621:7:7","memberName":"average","nodeType":"MemberAccess","referencedDeclaration":2900,"src":"13605:23:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":1997,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13605:34:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13591:48:7"},{"condition":{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":2005,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":2000,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1977,"src":"13671:4:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage pointer"}},{"id":2001,"name":"mid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1992,"src":"13677:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage pointer"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1999,"name":"_unsafeAccess","nodeType":"Identifier","overloadedDeclarations":[1537,2039,2541],"referencedDeclaration":2039,"src":"13657:13:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage_ptr_$_t_uint256_$returns$_t_struct$_Checkpoint224_$1547_storage_ptr_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage pointer,uint256) pure returns (struct CheckpointsUpgradeable.Checkpoint224 storage pointer)"}},"id":2002,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13657:24:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint224_$1547_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224 storage pointer"}},"id":2003,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13682:4:7","memberName":"_key","nodeType":"MemberAccess","referencedDeclaration":1544,"src":"13657:29:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":2004,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1979,"src":"13689:3:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"13657:35:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2017,"nodeType":"Block","src":"13746:43:7","statements":[{"expression":{"id":2015,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2013,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1983,"src":"13764:4:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2014,"name":"mid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1992,"src":"13771:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13764:10:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2016,"nodeType":"ExpressionStatement","src":"13764:10:7"}]},"id":2018,"nodeType":"IfStatement","src":"13653:136:7","trueBody":{"id":2012,"nodeType":"Block","src":"13694:46:7","statements":[{"expression":{"id":2010,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2006,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1981,"src":"13712:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2009,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2007,"name":"mid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1992,"src":"13718:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":2008,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13724:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"13718:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13712:13:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2011,"nodeType":"ExpressionStatement","src":"13712:13:7"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1990,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1988,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1981,"src":"13565:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1989,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1983,"src":"13571:4:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13565:10:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2020,"nodeType":"WhileStatement","src":"13558:241:7"},{"expression":{"id":2021,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1983,"src":"13815:4:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1987,"id":2022,"nodeType":"Return","src":"13808:11:7"}]},"documentation":{"id":1973,"nodeType":"StructuredDocumentation","src":"13041:336:7","text":" @dev Return the index of the first (oldest) checkpoint with key is greater or equal than the search key, or `high` if there is none.\n `low` and `high` define a section where to do the search, with inclusive `low` and exclusive `high`.\n WARNING: `high` should not be greater than the array's length."},"id":2024,"implemented":true,"kind":"function","modifiers":[],"name":"_lowerBinaryLookup","nameLocation":"13391:18:7","nodeType":"FunctionDefinition","parameters":{"id":1984,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1977,"mutability":"mutable","name":"self","nameLocation":"13443:4:7","nodeType":"VariableDeclaration","scope":2024,"src":"13419:28:7","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224[]"},"typeName":{"baseType":{"id":1975,"nodeType":"UserDefinedTypeName","pathNode":{"id":1974,"name":"Checkpoint224","nameLocations":["13419:13:7"],"nodeType":"IdentifierPath","referencedDeclaration":1547,"src":"13419:13:7"},"referencedDeclaration":1547,"src":"13419:13:7","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint224_$1547_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224"}},"id":1976,"nodeType":"ArrayTypeName","src":"13419:15:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224[]"}},"visibility":"internal"},{"constant":false,"id":1979,"mutability":"mutable","name":"key","nameLocation":"13464:3:7","nodeType":"VariableDeclaration","scope":2024,"src":"13457:10:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":1978,"name":"uint32","nodeType":"ElementaryTypeName","src":"13457:6:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":1981,"mutability":"mutable","name":"low","nameLocation":"13485:3:7","nodeType":"VariableDeclaration","scope":2024,"src":"13477:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1980,"name":"uint256","nodeType":"ElementaryTypeName","src":"13477:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1983,"mutability":"mutable","name":"high","nameLocation":"13506:4:7","nodeType":"VariableDeclaration","scope":2024,"src":"13498:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1982,"name":"uint256","nodeType":"ElementaryTypeName","src":"13498:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13409:107:7"},"returnParameters":{"id":1987,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1986,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2024,"src":"13539:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1985,"name":"uint256","nodeType":"ElementaryTypeName","src":"13539:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13538:9:7"},"scope":2542,"src":"13382:444:7","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":2038,"nodeType":"Block","src":"14109:125:7","statements":[{"AST":{"nodeType":"YulBlock","src":"14128:100:7","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"14149:1:7","type":"","value":"0"},{"name":"self.slot","nodeType":"YulIdentifier","src":"14152:9:7"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"14142:6:7"},"nodeType":"YulFunctionCall","src":"14142:20:7"},"nodeType":"YulExpressionStatement","src":"14142:20:7"},{"nodeType":"YulAssignment","src":"14175:43:7","value":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"14204:1:7","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"14207:4:7","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nodeType":"YulIdentifier","src":"14194:9:7"},"nodeType":"YulFunctionCall","src":"14194:18:7"},{"name":"pos","nodeType":"YulIdentifier","src":"14214:3:7"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14190:3:7"},"nodeType":"YulFunctionCall","src":"14190:28:7"},"variableNames":[{"name":"result.slot","nodeType":"YulIdentifier","src":"14175:11:7"}]}]},"evmVersion":"london","externalReferences":[{"declaration":2031,"isOffset":false,"isSlot":false,"src":"14214:3:7","valueSize":1},{"declaration":2035,"isOffset":false,"isSlot":true,"src":"14175:11:7","suffix":"slot","valueSize":1},{"declaration":2029,"isOffset":false,"isSlot":true,"src":"14152:9:7","suffix":"slot","valueSize":1}],"id":2037,"nodeType":"InlineAssembly","src":"14119:109:7"}]},"documentation":{"id":2025,"nodeType":"StructuredDocumentation","src":"13832:132:7","text":" @dev Access an element of the array without performing bounds check. The position is assumed to be within bounds."},"id":2039,"implemented":true,"kind":"function","modifiers":[],"name":"_unsafeAccess","nameLocation":"13978:13:7","nodeType":"FunctionDefinition","parameters":{"id":2032,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2029,"mutability":"mutable","name":"self","nameLocation":"14025:4:7","nodeType":"VariableDeclaration","scope":2039,"src":"14001:28:7","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224[]"},"typeName":{"baseType":{"id":2027,"nodeType":"UserDefinedTypeName","pathNode":{"id":2026,"name":"Checkpoint224","nameLocations":["14001:13:7"],"nodeType":"IdentifierPath","referencedDeclaration":1547,"src":"14001:13:7"},"referencedDeclaration":1547,"src":"14001:13:7","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint224_$1547_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224"}},"id":2028,"nodeType":"ArrayTypeName","src":"14001:15:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint224_$1547_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224[]"}},"visibility":"internal"},{"constant":false,"id":2031,"mutability":"mutable","name":"pos","nameLocation":"14047:3:7","nodeType":"VariableDeclaration","scope":2039,"src":"14039:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2030,"name":"uint256","nodeType":"ElementaryTypeName","src":"14039:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13991:65:7"},"returnParameters":{"id":2036,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2035,"mutability":"mutable","name":"result","nameLocation":"14101:6:7","nodeType":"VariableDeclaration","scope":2039,"src":"14079:28:7","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint224_$1547_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224"},"typeName":{"id":2034,"nodeType":"UserDefinedTypeName","pathNode":{"id":2033,"name":"Checkpoint224","nameLocations":["14079:13:7"],"nodeType":"IdentifierPath","referencedDeclaration":1547,"src":"14079:13:7"},"referencedDeclaration":1547,"src":"14079:13:7","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint224_$1547_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint224"}},"visibility":"internal"}],"src":"14078:30:7"},"scope":2542,"src":"13969:265:7","stateMutability":"pure","virtual":false,"visibility":"private"},{"canonicalName":"CheckpointsUpgradeable.Trace160","id":2044,"members":[{"constant":false,"id":2043,"mutability":"mutable","name":"_checkpoints","nameLocation":"14282:12:7","nodeType":"VariableDeclaration","scope":2044,"src":"14266:28:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160[]"},"typeName":{"baseType":{"id":2041,"nodeType":"UserDefinedTypeName","pathNode":{"id":2040,"name":"Checkpoint160","nameLocations":["14266:13:7"],"nodeType":"IdentifierPath","referencedDeclaration":2049,"src":"14266:13:7"},"referencedDeclaration":2049,"src":"14266:13:7","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint160_$2049_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160"}},"id":2042,"nodeType":"ArrayTypeName","src":"14266:15:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160[]"}},"visibility":"internal"}],"name":"Trace160","nameLocation":"14247:8:7","nodeType":"StructDefinition","scope":2542,"src":"14240:61:7","visibility":"public"},{"canonicalName":"CheckpointsUpgradeable.Checkpoint160","id":2049,"members":[{"constant":false,"id":2046,"mutability":"mutable","name":"_key","nameLocation":"14345:4:7","nodeType":"VariableDeclaration","scope":2049,"src":"14338:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":2045,"name":"uint96","nodeType":"ElementaryTypeName","src":"14338:6:7","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"},{"constant":false,"id":2048,"mutability":"mutable","name":"_value","nameLocation":"14367:6:7","nodeType":"VariableDeclaration","scope":2049,"src":"14359:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":2047,"name":"uint160","nodeType":"ElementaryTypeName","src":"14359:7:7","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"name":"Checkpoint160","nameLocation":"14314:13:7","nodeType":"StructDefinition","scope":2542,"src":"14307:73:7","visibility":"public"},{"body":{"id":2071,"nodeType":"Block","src":"14653:62:7","statements":[{"expression":{"arguments":[{"expression":{"id":2065,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2053,"src":"14678:4:7","typeDescriptions":{"typeIdentifier":"t_struct$_Trace160_$2044_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace160 storage pointer"}},"id":2066,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14683:12:7","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":2043,"src":"14678:17:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage ref"}},{"id":2067,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2055,"src":"14697:3:7","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},{"id":2068,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2057,"src":"14702:5:7","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage ref"},{"typeIdentifier":"t_uint96","typeString":"uint96"},{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":2064,"name":"_insert","nodeType":"Identifier","overloadedDeclarations":[1418,1920,2422],"referencedDeclaration":2422,"src":"14670:7:7","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage_ptr_$_t_uint96_$_t_uint160_$returns$_t_uint160_$_t_uint160_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage pointer,uint96,uint160) returns (uint160,uint160)"}},"id":2069,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14670:38:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint160_$_t_uint160_$","typeString":"tuple(uint160,uint160)"}},"functionReturnParameters":2063,"id":2070,"nodeType":"Return","src":"14663:45:7"}]},"documentation":{"id":2050,"nodeType":"StructuredDocumentation","src":"14386:162:7","text":" @dev Pushes a (`key`, `value`) pair into a Trace160 so that it is stored as the checkpoint.\n Returns previous value and new value."},"id":2072,"implemented":true,"kind":"function","modifiers":[],"name":"push","nameLocation":"14562:4:7","nodeType":"FunctionDefinition","parameters":{"id":2058,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2053,"mutability":"mutable","name":"self","nameLocation":"14584:4:7","nodeType":"VariableDeclaration","scope":2072,"src":"14567:21:7","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Trace160_$2044_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace160"},"typeName":{"id":2052,"nodeType":"UserDefinedTypeName","pathNode":{"id":2051,"name":"Trace160","nameLocations":["14567:8:7"],"nodeType":"IdentifierPath","referencedDeclaration":2044,"src":"14567:8:7"},"referencedDeclaration":2044,"src":"14567:8:7","typeDescriptions":{"typeIdentifier":"t_struct$_Trace160_$2044_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace160"}},"visibility":"internal"},{"constant":false,"id":2055,"mutability":"mutable","name":"key","nameLocation":"14597:3:7","nodeType":"VariableDeclaration","scope":2072,"src":"14590:10:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":2054,"name":"uint96","nodeType":"ElementaryTypeName","src":"14590:6:7","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"},{"constant":false,"id":2057,"mutability":"mutable","name":"value","nameLocation":"14610:5:7","nodeType":"VariableDeclaration","scope":2072,"src":"14602:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":2056,"name":"uint160","nodeType":"ElementaryTypeName","src":"14602:7:7","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"14566:50:7"},"returnParameters":{"id":2063,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2060,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2072,"src":"14635:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":2059,"name":"uint160","nodeType":"ElementaryTypeName","src":"14635:7:7","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":2062,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2072,"src":"14644:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":2061,"name":"uint160","nodeType":"ElementaryTypeName","src":"14644:7:7","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"14634:18:7"},"scope":2542,"src":"14553:162:7","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2111,"nodeType":"Block","src":"14961:207:7","statements":[{"assignments":[2084],"declarations":[{"constant":false,"id":2084,"mutability":"mutable","name":"len","nameLocation":"14979:3:7","nodeType":"VariableDeclaration","scope":2111,"src":"14971:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2083,"name":"uint256","nodeType":"ElementaryTypeName","src":"14971:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2088,"initialValue":{"expression":{"expression":{"id":2085,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2076,"src":"14985:4:7","typeDescriptions":{"typeIdentifier":"t_struct$_Trace160_$2044_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace160 storage pointer"}},"id":2086,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14990:12:7","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":2043,"src":"14985:17:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage ref"}},"id":2087,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15003:6:7","memberName":"length","nodeType":"MemberAccess","src":"14985:24:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"14971:38:7"},{"assignments":[2090],"declarations":[{"constant":false,"id":2090,"mutability":"mutable","name":"pos","nameLocation":"15027:3:7","nodeType":"VariableDeclaration","scope":2111,"src":"15019:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2089,"name":"uint256","nodeType":"ElementaryTypeName","src":"15019:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2098,"initialValue":{"arguments":[{"expression":{"id":2092,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2076,"src":"15052:4:7","typeDescriptions":{"typeIdentifier":"t_struct$_Trace160_$2044_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace160 storage pointer"}},"id":2093,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15057:12:7","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":2043,"src":"15052:17:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage ref"}},{"id":2094,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2078,"src":"15071:3:7","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},{"hexValue":"30","id":2095,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15076:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":2096,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2084,"src":"15079:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage ref"},{"typeIdentifier":"t_uint96","typeString":"uint96"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2091,"name":"_lowerBinaryLookup","nodeType":"Identifier","overloadedDeclarations":[1522,2024,2526],"referencedDeclaration":2526,"src":"15033:18:7","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage_ptr_$_t_uint96_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage pointer,uint96,uint256,uint256) view returns (uint256)"}},"id":2097,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15033:50:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"15019:64:7"},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2101,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2099,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2090,"src":"15100:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":2100,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2084,"src":"15107:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15100:10:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"expression":{"arguments":[{"expression":{"id":2104,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2076,"src":"15131:4:7","typeDescriptions":{"typeIdentifier":"t_struct$_Trace160_$2044_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace160 storage pointer"}},"id":2105,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15136:12:7","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":2043,"src":"15131:17:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage ref"}},{"id":2106,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2090,"src":"15150:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage ref"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2103,"name":"_unsafeAccess","nodeType":"Identifier","overloadedDeclarations":[1537,2039,2541],"referencedDeclaration":2541,"src":"15117:13:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage_ptr_$_t_uint256_$returns$_t_struct$_Checkpoint160_$2049_storage_ptr_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage pointer,uint256) pure returns (struct CheckpointsUpgradeable.Checkpoint160 storage pointer)"}},"id":2107,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15117:37:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint160_$2049_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage pointer"}},"id":2108,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15155:6:7","memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":2048,"src":"15117:44:7","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"id":2109,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"15100:61:7","trueExpression":{"hexValue":"30","id":2102,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15113:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"functionReturnParameters":2082,"id":2110,"nodeType":"Return","src":"15093:68:7"}]},"documentation":{"id":2073,"nodeType":"StructuredDocumentation","src":"14721:147:7","text":" @dev Returns the value in the first (oldest) checkpoint with key greater or equal than the search key, or zero if there is none."},"id":2112,"implemented":true,"kind":"function","modifiers":[],"name":"lowerLookup","nameLocation":"14882:11:7","nodeType":"FunctionDefinition","parameters":{"id":2079,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2076,"mutability":"mutable","name":"self","nameLocation":"14911:4:7","nodeType":"VariableDeclaration","scope":2112,"src":"14894:21:7","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Trace160_$2044_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace160"},"typeName":{"id":2075,"nodeType":"UserDefinedTypeName","pathNode":{"id":2074,"name":"Trace160","nameLocations":["14894:8:7"],"nodeType":"IdentifierPath","referencedDeclaration":2044,"src":"14894:8:7"},"referencedDeclaration":2044,"src":"14894:8:7","typeDescriptions":{"typeIdentifier":"t_struct$_Trace160_$2044_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace160"}},"visibility":"internal"},{"constant":false,"id":2078,"mutability":"mutable","name":"key","nameLocation":"14924:3:7","nodeType":"VariableDeclaration","scope":2112,"src":"14917:10:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":2077,"name":"uint96","nodeType":"ElementaryTypeName","src":"14917:6:7","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"}],"src":"14893:35:7"},"returnParameters":{"id":2082,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2081,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2112,"src":"14952:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":2080,"name":"uint160","nodeType":"ElementaryTypeName","src":"14952:7:7","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"14951:9:7"},"scope":2542,"src":"14873:295:7","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":2153,"nodeType":"Block","src":"15416:209:7","statements":[{"assignments":[2124],"declarations":[{"constant":false,"id":2124,"mutability":"mutable","name":"len","nameLocation":"15434:3:7","nodeType":"VariableDeclaration","scope":2153,"src":"15426:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2123,"name":"uint256","nodeType":"ElementaryTypeName","src":"15426:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2128,"initialValue":{"expression":{"expression":{"id":2125,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2116,"src":"15440:4:7","typeDescriptions":{"typeIdentifier":"t_struct$_Trace160_$2044_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace160 storage pointer"}},"id":2126,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15445:12:7","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":2043,"src":"15440:17:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage ref"}},"id":2127,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15458:6:7","memberName":"length","nodeType":"MemberAccess","src":"15440:24:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"15426:38:7"},{"assignments":[2130],"declarations":[{"constant":false,"id":2130,"mutability":"mutable","name":"pos","nameLocation":"15482:3:7","nodeType":"VariableDeclaration","scope":2153,"src":"15474:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2129,"name":"uint256","nodeType":"ElementaryTypeName","src":"15474:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2138,"initialValue":{"arguments":[{"expression":{"id":2132,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2116,"src":"15507:4:7","typeDescriptions":{"typeIdentifier":"t_struct$_Trace160_$2044_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace160 storage pointer"}},"id":2133,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15512:12:7","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":2043,"src":"15507:17:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage ref"}},{"id":2134,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2118,"src":"15526:3:7","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},{"hexValue":"30","id":2135,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15531:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":2136,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2124,"src":"15534:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage ref"},{"typeIdentifier":"t_uint96","typeString":"uint96"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2131,"name":"_upperBinaryLookup","nodeType":"Identifier","overloadedDeclarations":[1470,1972,2474],"referencedDeclaration":2474,"src":"15488:18:7","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage_ptr_$_t_uint96_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage pointer,uint96,uint256,uint256) view returns (uint256)"}},"id":2137,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15488:50:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"15474:64:7"},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2141,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2139,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2130,"src":"15555:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2140,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15562:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"15555:8:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"expression":{"arguments":[{"expression":{"id":2144,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2116,"src":"15584:4:7","typeDescriptions":{"typeIdentifier":"t_struct$_Trace160_$2044_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace160 storage pointer"}},"id":2145,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15589:12:7","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":2043,"src":"15584:17:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage ref"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2148,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2146,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2130,"src":"15603:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":2147,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15609:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"15603:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage ref"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2143,"name":"_unsafeAccess","nodeType":"Identifier","overloadedDeclarations":[1537,2039,2541],"referencedDeclaration":2541,"src":"15570:13:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage_ptr_$_t_uint256_$returns$_t_struct$_Checkpoint160_$2049_storage_ptr_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage pointer,uint256) pure returns (struct CheckpointsUpgradeable.Checkpoint160 storage pointer)"}},"id":2149,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15570:41:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint160_$2049_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage pointer"}},"id":2150,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15612:6:7","memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":2048,"src":"15570:48:7","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"id":2151,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"15555:63:7","trueExpression":{"hexValue":"30","id":2142,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15566:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"functionReturnParameters":2122,"id":2152,"nodeType":"Return","src":"15548:70:7"}]},"documentation":{"id":2113,"nodeType":"StructuredDocumentation","src":"15174:149:7","text":" @dev Returns the value in the last (most recent) checkpoint with key lower or equal than the search key, or zero if there is none."},"id":2154,"implemented":true,"kind":"function","modifiers":[],"name":"upperLookup","nameLocation":"15337:11:7","nodeType":"FunctionDefinition","parameters":{"id":2119,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2116,"mutability":"mutable","name":"self","nameLocation":"15366:4:7","nodeType":"VariableDeclaration","scope":2154,"src":"15349:21:7","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Trace160_$2044_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace160"},"typeName":{"id":2115,"nodeType":"UserDefinedTypeName","pathNode":{"id":2114,"name":"Trace160","nameLocations":["15349:8:7"],"nodeType":"IdentifierPath","referencedDeclaration":2044,"src":"15349:8:7"},"referencedDeclaration":2044,"src":"15349:8:7","typeDescriptions":{"typeIdentifier":"t_struct$_Trace160_$2044_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace160"}},"visibility":"internal"},{"constant":false,"id":2118,"mutability":"mutable","name":"key","nameLocation":"15379:3:7","nodeType":"VariableDeclaration","scope":2154,"src":"15372:10:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":2117,"name":"uint96","nodeType":"ElementaryTypeName","src":"15372:6:7","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"}],"src":"15348:35:7"},"returnParameters":{"id":2122,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2121,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2154,"src":"15407:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":2120,"name":"uint160","nodeType":"ElementaryTypeName","src":"15407:7:7","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"15406:9:7"},"scope":2542,"src":"15328:297:7","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":2238,"nodeType":"Block","src":"16010:523:7","statements":[{"assignments":[2166],"declarations":[{"constant":false,"id":2166,"mutability":"mutable","name":"len","nameLocation":"16028:3:7","nodeType":"VariableDeclaration","scope":2238,"src":"16020:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2165,"name":"uint256","nodeType":"ElementaryTypeName","src":"16020:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2170,"initialValue":{"expression":{"expression":{"id":2167,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2158,"src":"16034:4:7","typeDescriptions":{"typeIdentifier":"t_struct$_Trace160_$2044_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace160 storage pointer"}},"id":2168,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16039:12:7","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":2043,"src":"16034:17:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage ref"}},"id":2169,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16052:6:7","memberName":"length","nodeType":"MemberAccess","src":"16034:24:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"16020:38:7"},{"assignments":[2172],"declarations":[{"constant":false,"id":2172,"mutability":"mutable","name":"low","nameLocation":"16077:3:7","nodeType":"VariableDeclaration","scope":2238,"src":"16069:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2171,"name":"uint256","nodeType":"ElementaryTypeName","src":"16069:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2174,"initialValue":{"hexValue":"30","id":2173,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16083:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"16069:15:7"},{"assignments":[2176],"declarations":[{"constant":false,"id":2176,"mutability":"mutable","name":"high","nameLocation":"16102:4:7","nodeType":"VariableDeclaration","scope":2238,"src":"16094:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2175,"name":"uint256","nodeType":"ElementaryTypeName","src":"16094:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2178,"initialValue":{"id":2177,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2166,"src":"16109:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"16094:18:7"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2181,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2179,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2166,"src":"16127:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"35","id":2180,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16133:1:7","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"src":"16127:7:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2213,"nodeType":"IfStatement","src":"16123:245:7","trueBody":{"id":2212,"nodeType":"Block","src":"16136:232:7","statements":[{"assignments":[2183],"declarations":[{"constant":false,"id":2183,"mutability":"mutable","name":"mid","nameLocation":"16158:3:7","nodeType":"VariableDeclaration","scope":2212,"src":"16150:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2182,"name":"uint256","nodeType":"ElementaryTypeName","src":"16150:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2190,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2189,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2184,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2166,"src":"16164:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[{"id":2187,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2166,"src":"16191:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":2185,"name":"MathUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3700,"src":"16170:15:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_MathUpgradeable_$3700_$","typeString":"type(library MathUpgradeable)"}},"id":2186,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16186:4:7","memberName":"sqrt","nodeType":"MemberAccess","referencedDeclaration":3204,"src":"16170:20:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":2188,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16170:25:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16164:31:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"16150:45:7"},{"condition":{"commonType":{"typeIdentifier":"t_uint96","typeString":"uint96"},"id":2198,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2191,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2160,"src":"16213:3:7","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"arguments":[{"expression":{"id":2193,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2158,"src":"16233:4:7","typeDescriptions":{"typeIdentifier":"t_struct$_Trace160_$2044_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace160 storage pointer"}},"id":2194,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16238:12:7","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":2043,"src":"16233:17:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage ref"}},{"id":2195,"name":"mid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2183,"src":"16252:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage ref"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2192,"name":"_unsafeAccess","nodeType":"Identifier","overloadedDeclarations":[1537,2039,2541],"referencedDeclaration":2541,"src":"16219:13:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage_ptr_$_t_uint256_$returns$_t_struct$_Checkpoint160_$2049_storage_ptr_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage pointer,uint256) pure returns (struct CheckpointsUpgradeable.Checkpoint160 storage pointer)"}},"id":2196,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16219:37:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint160_$2049_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage pointer"}},"id":2197,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16257:4:7","memberName":"_key","nodeType":"MemberAccess","referencedDeclaration":2046,"src":"16219:42:7","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"src":"16213:48:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2210,"nodeType":"Block","src":"16312:46:7","statements":[{"expression":{"id":2208,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2204,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2172,"src":"16330:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2207,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2205,"name":"mid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2183,"src":"16336:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":2206,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16342:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"16336:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16330:13:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2209,"nodeType":"ExpressionStatement","src":"16330:13:7"}]},"id":2211,"nodeType":"IfStatement","src":"16209:149:7","trueBody":{"id":2203,"nodeType":"Block","src":"16263:43:7","statements":[{"expression":{"id":2201,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2199,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2176,"src":"16281:4:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2200,"name":"mid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2183,"src":"16288:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16281:10:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2202,"nodeType":"ExpressionStatement","src":"16281:10:7"}]}}]}},{"assignments":[2215],"declarations":[{"constant":false,"id":2215,"mutability":"mutable","name":"pos","nameLocation":"16386:3:7","nodeType":"VariableDeclaration","scope":2238,"src":"16378:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2214,"name":"uint256","nodeType":"ElementaryTypeName","src":"16378:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2223,"initialValue":{"arguments":[{"expression":{"id":2217,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2158,"src":"16411:4:7","typeDescriptions":{"typeIdentifier":"t_struct$_Trace160_$2044_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace160 storage pointer"}},"id":2218,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16416:12:7","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":2043,"src":"16411:17:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage ref"}},{"id":2219,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2160,"src":"16430:3:7","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},{"id":2220,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2172,"src":"16435:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2221,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2176,"src":"16440:4:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage ref"},{"typeIdentifier":"t_uint96","typeString":"uint96"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2216,"name":"_upperBinaryLookup","nodeType":"Identifier","overloadedDeclarations":[1470,1972,2474],"referencedDeclaration":2474,"src":"16392:18:7","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage_ptr_$_t_uint96_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage pointer,uint96,uint256,uint256) view returns (uint256)"}},"id":2222,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16392:53:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"16378:67:7"},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2226,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2224,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2215,"src":"16463:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2225,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16470:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"16463:8:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"expression":{"arguments":[{"expression":{"id":2229,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2158,"src":"16492:4:7","typeDescriptions":{"typeIdentifier":"t_struct$_Trace160_$2044_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace160 storage pointer"}},"id":2230,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16497:12:7","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":2043,"src":"16492:17:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage ref"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2233,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2231,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2215,"src":"16511:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":2232,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16517:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"16511:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage ref"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2228,"name":"_unsafeAccess","nodeType":"Identifier","overloadedDeclarations":[1537,2039,2541],"referencedDeclaration":2541,"src":"16478:13:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage_ptr_$_t_uint256_$returns$_t_struct$_Checkpoint160_$2049_storage_ptr_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage pointer,uint256) pure returns (struct CheckpointsUpgradeable.Checkpoint160 storage pointer)"}},"id":2234,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16478:41:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint160_$2049_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage pointer"}},"id":2235,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16520:6:7","memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":2048,"src":"16478:48:7","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"id":2236,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"16463:63:7","trueExpression":{"hexValue":"30","id":2227,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16474:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"functionReturnParameters":2164,"id":2237,"nodeType":"Return","src":"16456:70:7"}]},"documentation":{"id":2155,"nodeType":"StructuredDocumentation","src":"15631:280:7","text":" @dev Returns the value in the last (most recent) checkpoint with key lower or equal than the search key, or zero if there is none.\n NOTE: This is a variant of {upperLookup} that is optimised to find \"recent\" checkpoint (checkpoints with high keys)."},"id":2239,"implemented":true,"kind":"function","modifiers":[],"name":"upperLookupRecent","nameLocation":"15925:17:7","nodeType":"FunctionDefinition","parameters":{"id":2161,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2158,"mutability":"mutable","name":"self","nameLocation":"15960:4:7","nodeType":"VariableDeclaration","scope":2239,"src":"15943:21:7","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Trace160_$2044_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace160"},"typeName":{"id":2157,"nodeType":"UserDefinedTypeName","pathNode":{"id":2156,"name":"Trace160","nameLocations":["15943:8:7"],"nodeType":"IdentifierPath","referencedDeclaration":2044,"src":"15943:8:7"},"referencedDeclaration":2044,"src":"15943:8:7","typeDescriptions":{"typeIdentifier":"t_struct$_Trace160_$2044_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace160"}},"visibility":"internal"},{"constant":false,"id":2160,"mutability":"mutable","name":"key","nameLocation":"15973:3:7","nodeType":"VariableDeclaration","scope":2239,"src":"15966:10:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":2159,"name":"uint96","nodeType":"ElementaryTypeName","src":"15966:6:7","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"}],"src":"15942:35:7"},"returnParameters":{"id":2164,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2163,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2239,"src":"16001:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":2162,"name":"uint160","nodeType":"ElementaryTypeName","src":"16001:7:7","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"16000:9:7"},"scope":2542,"src":"15916:617:7","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":2268,"nodeType":"Block","src":"16724:135:7","statements":[{"assignments":[2249],"declarations":[{"constant":false,"id":2249,"mutability":"mutable","name":"pos","nameLocation":"16742:3:7","nodeType":"VariableDeclaration","scope":2268,"src":"16734:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2248,"name":"uint256","nodeType":"ElementaryTypeName","src":"16734:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2253,"initialValue":{"expression":{"expression":{"id":2250,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2243,"src":"16748:4:7","typeDescriptions":{"typeIdentifier":"t_struct$_Trace160_$2044_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace160 storage pointer"}},"id":2251,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16753:12:7","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":2043,"src":"16748:17:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage ref"}},"id":2252,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16766:6:7","memberName":"length","nodeType":"MemberAccess","src":"16748:24:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"16734:38:7"},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2256,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2254,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2249,"src":"16789:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2255,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16796:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"16789:8:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"expression":{"arguments":[{"expression":{"id":2259,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2243,"src":"16818:4:7","typeDescriptions":{"typeIdentifier":"t_struct$_Trace160_$2044_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace160 storage pointer"}},"id":2260,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16823:12:7","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":2043,"src":"16818:17:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage ref"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2263,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2261,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2249,"src":"16837:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":2262,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16843:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"16837:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage ref"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2258,"name":"_unsafeAccess","nodeType":"Identifier","overloadedDeclarations":[1537,2039,2541],"referencedDeclaration":2541,"src":"16804:13:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage_ptr_$_t_uint256_$returns$_t_struct$_Checkpoint160_$2049_storage_ptr_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage pointer,uint256) pure returns (struct CheckpointsUpgradeable.Checkpoint160 storage pointer)"}},"id":2264,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16804:41:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint160_$2049_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage pointer"}},"id":2265,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16846:6:7","memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":2048,"src":"16804:48:7","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"id":2266,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"16789:63:7","trueExpression":{"hexValue":"30","id":2257,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16800:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"functionReturnParameters":2247,"id":2267,"nodeType":"Return","src":"16782:70:7"}]},"documentation":{"id":2240,"nodeType":"StructuredDocumentation","src":"16539:109:7","text":" @dev Returns the value in the most recent checkpoint, or zero if there are no checkpoints."},"id":2269,"implemented":true,"kind":"function","modifiers":[],"name":"latest","nameLocation":"16662:6:7","nodeType":"FunctionDefinition","parameters":{"id":2244,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2243,"mutability":"mutable","name":"self","nameLocation":"16686:4:7","nodeType":"VariableDeclaration","scope":2269,"src":"16669:21:7","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Trace160_$2044_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace160"},"typeName":{"id":2242,"nodeType":"UserDefinedTypeName","pathNode":{"id":2241,"name":"Trace160","nameLocations":["16669:8:7"],"nodeType":"IdentifierPath","referencedDeclaration":2044,"src":"16669:8:7"},"referencedDeclaration":2044,"src":"16669:8:7","typeDescriptions":{"typeIdentifier":"t_struct$_Trace160_$2044_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace160"}},"visibility":"internal"}],"src":"16668:23:7"},"returnParameters":{"id":2247,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2246,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2269,"src":"16715:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":2245,"name":"uint160","nodeType":"ElementaryTypeName","src":"16715:7:7","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"16714:9:7"},"scope":2542,"src":"16653:206:7","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":2317,"nodeType":"Block","src":"17152:274:7","statements":[{"assignments":[2283],"declarations":[{"constant":false,"id":2283,"mutability":"mutable","name":"pos","nameLocation":"17170:3:7","nodeType":"VariableDeclaration","scope":2317,"src":"17162:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2282,"name":"uint256","nodeType":"ElementaryTypeName","src":"17162:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2287,"initialValue":{"expression":{"expression":{"id":2284,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2273,"src":"17176:4:7","typeDescriptions":{"typeIdentifier":"t_struct$_Trace160_$2044_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace160 storage pointer"}},"id":2285,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17181:12:7","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":2043,"src":"17176:17:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage ref"}},"id":2286,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17194:6:7","memberName":"length","nodeType":"MemberAccess","src":"17176:24:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"17162:38:7"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2290,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2288,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2283,"src":"17214:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2289,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17221:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"17214:8:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2315,"nodeType":"Block","src":"17275:145:7","statements":[{"assignments":[2299],"declarations":[{"constant":false,"id":2299,"mutability":"mutable","name":"ckpt","nameLocation":"17310:4:7","nodeType":"VariableDeclaration","scope":2315,"src":"17289:25:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint160_$2049_memory_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160"},"typeName":{"id":2298,"nodeType":"UserDefinedTypeName","pathNode":{"id":2297,"name":"Checkpoint160","nameLocations":["17289:13:7"],"nodeType":"IdentifierPath","referencedDeclaration":2049,"src":"17289:13:7"},"referencedDeclaration":2049,"src":"17289:13:7","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint160_$2049_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160"}},"visibility":"internal"}],"id":2307,"initialValue":{"arguments":[{"expression":{"id":2301,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2273,"src":"17331:4:7","typeDescriptions":{"typeIdentifier":"t_struct$_Trace160_$2044_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace160 storage pointer"}},"id":2302,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17336:12:7","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":2043,"src":"17331:17:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage ref"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2305,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2303,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2283,"src":"17350:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":2304,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17356:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17350:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage ref"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2300,"name":"_unsafeAccess","nodeType":"Identifier","overloadedDeclarations":[1537,2039,2541],"referencedDeclaration":2541,"src":"17317:13:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage_ptr_$_t_uint256_$returns$_t_struct$_Checkpoint160_$2049_storage_ptr_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage pointer,uint256) pure returns (struct CheckpointsUpgradeable.Checkpoint160 storage pointer)"}},"id":2306,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17317:41:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint160_$2049_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"17289:69:7"},{"expression":{"components":[{"hexValue":"74727565","id":2308,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"17380:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"expression":{"id":2309,"name":"ckpt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2299,"src":"17386:4:7","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint160_$2049_memory_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160 memory"}},"id":2310,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17391:4:7","memberName":"_key","nodeType":"MemberAccess","referencedDeclaration":2046,"src":"17386:9:7","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},{"expression":{"id":2311,"name":"ckpt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2299,"src":"17397:4:7","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint160_$2049_memory_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160 memory"}},"id":2312,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17402:6:7","memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":2048,"src":"17397:11:7","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"id":2313,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17379:30:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint96_$_t_uint160_$","typeString":"tuple(bool,uint96,uint160)"}},"functionReturnParameters":2281,"id":2314,"nodeType":"Return","src":"17372:37:7"}]},"id":2316,"nodeType":"IfStatement","src":"17210:210:7","trueBody":{"id":2296,"nodeType":"Block","src":"17224:45:7","statements":[{"expression":{"components":[{"hexValue":"66616c7365","id":2291,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"17246:5:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":2292,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17253:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"30","id":2293,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17256:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":2294,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"17245:13:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0,int_const 0)"}},"functionReturnParameters":2281,"id":2295,"nodeType":"Return","src":"17238:20:7"}]}}]},"documentation":{"id":2270,"nodeType":"StructuredDocumentation","src":"16865:168:7","text":" @dev Returns whether there is a checkpoint in the structure (i.e. it is not empty), and if so the key and value\n in the most recent checkpoint."},"id":2318,"implemented":true,"kind":"function","modifiers":[],"name":"latestCheckpoint","nameLocation":"17047:16:7","nodeType":"FunctionDefinition","parameters":{"id":2274,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2273,"mutability":"mutable","name":"self","nameLocation":"17081:4:7","nodeType":"VariableDeclaration","scope":2318,"src":"17064:21:7","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Trace160_$2044_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace160"},"typeName":{"id":2272,"nodeType":"UserDefinedTypeName","pathNode":{"id":2271,"name":"Trace160","nameLocations":["17064:8:7"],"nodeType":"IdentifierPath","referencedDeclaration":2044,"src":"17064:8:7"},"referencedDeclaration":2044,"src":"17064:8:7","typeDescriptions":{"typeIdentifier":"t_struct$_Trace160_$2044_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace160"}},"visibility":"internal"}],"src":"17063:23:7"},"returnParameters":{"id":2281,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2276,"mutability":"mutable","name":"exists","nameLocation":"17115:6:7","nodeType":"VariableDeclaration","scope":2318,"src":"17110:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2275,"name":"bool","nodeType":"ElementaryTypeName","src":"17110:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2278,"mutability":"mutable","name":"_key","nameLocation":"17130:4:7","nodeType":"VariableDeclaration","scope":2318,"src":"17123:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":2277,"name":"uint96","nodeType":"ElementaryTypeName","src":"17123:6:7","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"},{"constant":false,"id":2280,"mutability":"mutable","name":"_value","nameLocation":"17144:6:7","nodeType":"VariableDeclaration","scope":2318,"src":"17136:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":2279,"name":"uint160","nodeType":"ElementaryTypeName","src":"17136:7:7","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"17109:42:7"},"scope":2542,"src":"17038:388:7","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":2331,"nodeType":"Block","src":"17565:48:7","statements":[{"expression":{"expression":{"expression":{"id":2327,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2322,"src":"17582:4:7","typeDescriptions":{"typeIdentifier":"t_struct$_Trace160_$2044_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace160 storage pointer"}},"id":2328,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17587:12:7","memberName":"_checkpoints","nodeType":"MemberAccess","referencedDeclaration":2043,"src":"17582:17:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage ref"}},"id":2329,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17600:6:7","memberName":"length","nodeType":"MemberAccess","src":"17582:24:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2326,"id":2330,"nodeType":"Return","src":"17575:31:7"}]},"documentation":{"id":2319,"nodeType":"StructuredDocumentation","src":"17432:57:7","text":" @dev Returns the number of checkpoint."},"id":2332,"implemented":true,"kind":"function","modifiers":[],"name":"length","nameLocation":"17503:6:7","nodeType":"FunctionDefinition","parameters":{"id":2323,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2322,"mutability":"mutable","name":"self","nameLocation":"17527:4:7","nodeType":"VariableDeclaration","scope":2332,"src":"17510:21:7","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Trace160_$2044_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace160"},"typeName":{"id":2321,"nodeType":"UserDefinedTypeName","pathNode":{"id":2320,"name":"Trace160","nameLocations":["17510:8:7"],"nodeType":"IdentifierPath","referencedDeclaration":2044,"src":"17510:8:7"},"referencedDeclaration":2044,"src":"17510:8:7","typeDescriptions":{"typeIdentifier":"t_struct$_Trace160_$2044_storage_ptr","typeString":"struct CheckpointsUpgradeable.Trace160"}},"visibility":"internal"}],"src":"17509:23:7"},"returnParameters":{"id":2326,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2325,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2332,"src":"17556:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2324,"name":"uint256","nodeType":"ElementaryTypeName","src":"17556:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17555:9:7"},"scope":2542,"src":"17494:119:7","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":2421,"nodeType":"Block","src":"17898:727:7","statements":[{"assignments":[2349],"declarations":[{"constant":false,"id":2349,"mutability":"mutable","name":"pos","nameLocation":"17916:3:7","nodeType":"VariableDeclaration","scope":2421,"src":"17908:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2348,"name":"uint256","nodeType":"ElementaryTypeName","src":"17908:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2352,"initialValue":{"expression":{"id":2350,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2337,"src":"17922:4:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage pointer"}},"id":2351,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17927:6:7","memberName":"length","nodeType":"MemberAccess","src":"17922:11:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"17908:25:7"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2355,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2353,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2349,"src":"17948:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2354,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17954:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"17948:7:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2419,"nodeType":"Block","src":"18511:108:7","statements":[{"expression":{"arguments":[{"arguments":[{"id":2410,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2339,"src":"18556:3:7","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},{"id":2411,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2341,"src":"18569:5:7","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint96","typeString":"uint96"},{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":2409,"name":"Checkpoint160","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2049,"src":"18535:13:7","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Checkpoint160_$2049_storage_ptr_$","typeString":"type(struct CheckpointsUpgradeable.Checkpoint160 storage pointer)"}},"id":2412,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["18550:4:7","18561:6:7"],"names":["_key","_value"],"nodeType":"FunctionCall","src":"18535:41:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint160_$2049_memory_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160 memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Checkpoint160_$2049_memory_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160 memory"}],"expression":{"id":2406,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2337,"src":"18525:4:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage pointer"}},"id":2408,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18530:4:7","memberName":"push","nodeType":"MemberAccess","src":"18525:9:7","typeDescriptions":{"typeIdentifier":"t_function_arraypush_nonpayable$_t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage_ptr_$_t_struct$_Checkpoint160_$2049_storage_$returns$__$bound_to$_t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage_ptr_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage pointer,struct CheckpointsUpgradeable.Checkpoint160 storage ref)"}},"id":2413,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18525:52:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2414,"nodeType":"ExpressionStatement","src":"18525:52:7"},{"expression":{"components":[{"hexValue":"30","id":2415,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18599:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":2416,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2341,"src":"18602:5:7","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"id":2417,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18598:10:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_rational_0_by_1_$_t_uint160_$","typeString":"tuple(int_const 0,uint160)"}},"functionReturnParameters":2347,"id":2418,"nodeType":"Return","src":"18591:17:7"}]},"id":2420,"nodeType":"IfStatement","src":"17944:675:7","trueBody":{"id":2405,"nodeType":"Block","src":"17957:548:7","statements":[{"assignments":[2358],"declarations":[{"constant":false,"id":2358,"mutability":"mutable","name":"last","nameLocation":"18044:4:7","nodeType":"VariableDeclaration","scope":2405,"src":"18023:25:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint160_$2049_memory_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160"},"typeName":{"id":2357,"nodeType":"UserDefinedTypeName","pathNode":{"id":2356,"name":"Checkpoint160","nameLocations":["18023:13:7"],"nodeType":"IdentifierPath","referencedDeclaration":2049,"src":"18023:13:7"},"referencedDeclaration":2049,"src":"18023:13:7","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint160_$2049_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160"}},"visibility":"internal"}],"id":2365,"initialValue":{"arguments":[{"id":2360,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2337,"src":"18065:4:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage pointer"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2363,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2361,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2349,"src":"18071:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":2362,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18077:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"18071:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage pointer"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2359,"name":"_unsafeAccess","nodeType":"Identifier","overloadedDeclarations":[1537,2039,2541],"referencedDeclaration":2541,"src":"18051:13:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage_ptr_$_t_uint256_$returns$_t_struct$_Checkpoint160_$2049_storage_ptr_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage pointer,uint256) pure returns (struct CheckpointsUpgradeable.Checkpoint160 storage pointer)"}},"id":2364,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18051:28:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint160_$2049_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"18023:56:7"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint96","typeString":"uint96"},"id":2370,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2367,"name":"last","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2358,"src":"18157:4:7","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint160_$2049_memory_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160 memory"}},"id":2368,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"18162:4:7","memberName":"_key","nodeType":"MemberAccess","referencedDeclaration":2046,"src":"18157:9:7","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":2369,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2339,"src":"18170:3:7","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"src":"18157:16:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"436865636b706f696e743a2064656372656173696e67206b657973","id":2371,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"18175:29:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_4f6b1769383e9e01fad001f10d4f9180a25f63424c2597419936b157d29f34ec","typeString":"literal_string \"Checkpoint: decreasing keys\""},"value":"Checkpoint: decreasing keys"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_4f6b1769383e9e01fad001f10d4f9180a25f63424c2597419936b157d29f34ec","typeString":"literal_string \"Checkpoint: decreasing keys\""}],"id":2366,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"18149:7:7","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2372,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18149:56:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2373,"nodeType":"ExpressionStatement","src":"18149:56:7"},{"condition":{"commonType":{"typeIdentifier":"t_uint96","typeString":"uint96"},"id":2377,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2374,"name":"last","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2358,"src":"18269:4:7","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint160_$2049_memory_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160 memory"}},"id":2375,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"18274:4:7","memberName":"_key","nodeType":"MemberAccess","referencedDeclaration":2046,"src":"18269:9:7","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":2376,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2339,"src":"18282:3:7","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"src":"18269:16:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2398,"nodeType":"Block","src":"18369:85:7","statements":[{"expression":{"arguments":[{"arguments":[{"id":2393,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2339,"src":"18418:3:7","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},{"id":2394,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2341,"src":"18431:5:7","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint96","typeString":"uint96"},{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":2392,"name":"Checkpoint160","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2049,"src":"18397:13:7","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Checkpoint160_$2049_storage_ptr_$","typeString":"type(struct CheckpointsUpgradeable.Checkpoint160 storage pointer)"}},"id":2395,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["18412:4:7","18423:6:7"],"names":["_key","_value"],"nodeType":"FunctionCall","src":"18397:41:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint160_$2049_memory_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160 memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Checkpoint160_$2049_memory_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160 memory"}],"expression":{"id":2389,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2337,"src":"18387:4:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage pointer"}},"id":2391,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18392:4:7","memberName":"push","nodeType":"MemberAccess","src":"18387:9:7","typeDescriptions":{"typeIdentifier":"t_function_arraypush_nonpayable$_t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage_ptr_$_t_struct$_Checkpoint160_$2049_storage_$returns$__$bound_to$_t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage_ptr_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage pointer,struct CheckpointsUpgradeable.Checkpoint160 storage ref)"}},"id":2396,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18387:52:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2397,"nodeType":"ExpressionStatement","src":"18387:52:7"}]},"id":2399,"nodeType":"IfStatement","src":"18265:189:7","trueBody":{"id":2388,"nodeType":"Block","src":"18287:76:7","statements":[{"expression":{"id":2386,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[{"id":2379,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2337,"src":"18319:4:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage pointer"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2382,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2380,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2349,"src":"18325:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":2381,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18331:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"18325:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage pointer"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2378,"name":"_unsafeAccess","nodeType":"Identifier","overloadedDeclarations":[1537,2039,2541],"referencedDeclaration":2541,"src":"18305:13:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage_ptr_$_t_uint256_$returns$_t_struct$_Checkpoint160_$2049_storage_ptr_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage pointer,uint256) pure returns (struct CheckpointsUpgradeable.Checkpoint160 storage pointer)"}},"id":2383,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18305:28:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint160_$2049_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage pointer"}},"id":2384,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"18334:6:7","memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":2048,"src":"18305:35:7","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2385,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2341,"src":"18343:5:7","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"18305:43:7","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"id":2387,"nodeType":"ExpressionStatement","src":"18305:43:7"}]}},{"expression":{"components":[{"expression":{"id":2400,"name":"last","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2358,"src":"18475:4:7","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint160_$2049_memory_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160 memory"}},"id":2401,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"18480:6:7","memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":2048,"src":"18475:11:7","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"id":2402,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2341,"src":"18488:5:7","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"id":2403,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18474:20:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint160_$_t_uint160_$","typeString":"tuple(uint160,uint160)"}},"functionReturnParameters":2347,"id":2404,"nodeType":"Return","src":"18467:27:7"}]}}]},"documentation":{"id":2333,"nodeType":"StructuredDocumentation","src":"17619:165:7","text":" @dev Pushes a (`key`, `value`) pair into an ordered list of checkpoints, either by inserting a new checkpoint,\n or by updating the last one."},"id":2422,"implemented":true,"kind":"function","modifiers":[],"name":"_insert","nameLocation":"17798:7:7","nodeType":"FunctionDefinition","parameters":{"id":2342,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2337,"mutability":"mutable","name":"self","nameLocation":"17830:4:7","nodeType":"VariableDeclaration","scope":2422,"src":"17806:28:7","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160[]"},"typeName":{"baseType":{"id":2335,"nodeType":"UserDefinedTypeName","pathNode":{"id":2334,"name":"Checkpoint160","nameLocations":["17806:13:7"],"nodeType":"IdentifierPath","referencedDeclaration":2049,"src":"17806:13:7"},"referencedDeclaration":2049,"src":"17806:13:7","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint160_$2049_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160"}},"id":2336,"nodeType":"ArrayTypeName","src":"17806:15:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160[]"}},"visibility":"internal"},{"constant":false,"id":2339,"mutability":"mutable","name":"key","nameLocation":"17843:3:7","nodeType":"VariableDeclaration","scope":2422,"src":"17836:10:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":2338,"name":"uint96","nodeType":"ElementaryTypeName","src":"17836:6:7","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"},{"constant":false,"id":2341,"mutability":"mutable","name":"value","nameLocation":"17856:5:7","nodeType":"VariableDeclaration","scope":2422,"src":"17848:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":2340,"name":"uint160","nodeType":"ElementaryTypeName","src":"17848:7:7","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"17805:57:7"},"returnParameters":{"id":2347,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2344,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2422,"src":"17880:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":2343,"name":"uint160","nodeType":"ElementaryTypeName","src":"17880:7:7","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":2346,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2422,"src":"17889:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":2345,"name":"uint160","nodeType":"ElementaryTypeName","src":"17889:7:7","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"17879:18:7"},"scope":2542,"src":"17789:836:7","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":2473,"nodeType":"Block","src":"19137:278:7","statements":[{"body":{"id":2469,"nodeType":"Block","src":"19166:222:7","statements":[{"assignments":[2442],"declarations":[{"constant":false,"id":2442,"mutability":"mutable","name":"mid","nameLocation":"19188:3:7","nodeType":"VariableDeclaration","scope":2469,"src":"19180:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2441,"name":"uint256","nodeType":"ElementaryTypeName","src":"19180:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2448,"initialValue":{"arguments":[{"id":2445,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2431,"src":"19218:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2446,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2433,"src":"19223:4:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":2443,"name":"MathUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3700,"src":"19194:15:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_MathUpgradeable_$3700_$","typeString":"type(library MathUpgradeable)"}},"id":2444,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19210:7:7","memberName":"average","nodeType":"MemberAccess","referencedDeclaration":2900,"src":"19194:23:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":2447,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19194:34:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"19180:48:7"},{"condition":{"commonType":{"typeIdentifier":"t_uint96","typeString":"uint96"},"id":2455,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":2450,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2427,"src":"19260:4:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage pointer"}},{"id":2451,"name":"mid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2442,"src":"19266:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage pointer"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2449,"name":"_unsafeAccess","nodeType":"Identifier","overloadedDeclarations":[1537,2039,2541],"referencedDeclaration":2541,"src":"19246:13:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage_ptr_$_t_uint256_$returns$_t_struct$_Checkpoint160_$2049_storage_ptr_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage pointer,uint256) pure returns (struct CheckpointsUpgradeable.Checkpoint160 storage pointer)"}},"id":2452,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19246:24:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint160_$2049_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage pointer"}},"id":2453,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19271:4:7","memberName":"_key","nodeType":"MemberAccess","referencedDeclaration":2046,"src":"19246:29:7","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":2454,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2429,"src":"19278:3:7","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"src":"19246:35:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2467,"nodeType":"Block","src":"19332:46:7","statements":[{"expression":{"id":2465,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2461,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2431,"src":"19350:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2464,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2462,"name":"mid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2442,"src":"19356:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":2463,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19362:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"19356:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19350:13:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2466,"nodeType":"ExpressionStatement","src":"19350:13:7"}]},"id":2468,"nodeType":"IfStatement","src":"19242:136:7","trueBody":{"id":2460,"nodeType":"Block","src":"19283:43:7","statements":[{"expression":{"id":2458,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2456,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2433,"src":"19301:4:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2457,"name":"mid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2442,"src":"19308:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19301:10:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2459,"nodeType":"ExpressionStatement","src":"19301:10:7"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2440,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2438,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2431,"src":"19154:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":2439,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2433,"src":"19160:4:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19154:10:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2470,"nodeType":"WhileStatement","src":"19147:241:7"},{"expression":{"id":2471,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2433,"src":"19404:4:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2437,"id":2472,"nodeType":"Return","src":"19397:11:7"}]},"documentation":{"id":2423,"nodeType":"StructuredDocumentation","src":"18631:335:7","text":" @dev Return the index of the last (most recent) checkpoint with key lower or equal than the search key, or `high` if there is none.\n `low` and `high` define a section where to do the search, with inclusive `low` and exclusive `high`.\n WARNING: `high` should not be greater than the array's length."},"id":2474,"implemented":true,"kind":"function","modifiers":[],"name":"_upperBinaryLookup","nameLocation":"18980:18:7","nodeType":"FunctionDefinition","parameters":{"id":2434,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2427,"mutability":"mutable","name":"self","nameLocation":"19032:4:7","nodeType":"VariableDeclaration","scope":2474,"src":"19008:28:7","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160[]"},"typeName":{"baseType":{"id":2425,"nodeType":"UserDefinedTypeName","pathNode":{"id":2424,"name":"Checkpoint160","nameLocations":["19008:13:7"],"nodeType":"IdentifierPath","referencedDeclaration":2049,"src":"19008:13:7"},"referencedDeclaration":2049,"src":"19008:13:7","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint160_$2049_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160"}},"id":2426,"nodeType":"ArrayTypeName","src":"19008:15:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160[]"}},"visibility":"internal"},{"constant":false,"id":2429,"mutability":"mutable","name":"key","nameLocation":"19053:3:7","nodeType":"VariableDeclaration","scope":2474,"src":"19046:10:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":2428,"name":"uint96","nodeType":"ElementaryTypeName","src":"19046:6:7","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"},{"constant":false,"id":2431,"mutability":"mutable","name":"low","nameLocation":"19074:3:7","nodeType":"VariableDeclaration","scope":2474,"src":"19066:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2430,"name":"uint256","nodeType":"ElementaryTypeName","src":"19066:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2433,"mutability":"mutable","name":"high","nameLocation":"19095:4:7","nodeType":"VariableDeclaration","scope":2474,"src":"19087:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2432,"name":"uint256","nodeType":"ElementaryTypeName","src":"19087:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18998:107:7"},"returnParameters":{"id":2437,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2436,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2474,"src":"19128:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2435,"name":"uint256","nodeType":"ElementaryTypeName","src":"19128:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"19127:9:7"},"scope":2542,"src":"18971:444:7","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":2525,"nodeType":"Block","src":"19928:278:7","statements":[{"body":{"id":2521,"nodeType":"Block","src":"19957:222:7","statements":[{"assignments":[2494],"declarations":[{"constant":false,"id":2494,"mutability":"mutable","name":"mid","nameLocation":"19979:3:7","nodeType":"VariableDeclaration","scope":2521,"src":"19971:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2493,"name":"uint256","nodeType":"ElementaryTypeName","src":"19971:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2500,"initialValue":{"arguments":[{"id":2497,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2483,"src":"20009:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2498,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2485,"src":"20014:4:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":2495,"name":"MathUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3700,"src":"19985:15:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_MathUpgradeable_$3700_$","typeString":"type(library MathUpgradeable)"}},"id":2496,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"20001:7:7","memberName":"average","nodeType":"MemberAccess","referencedDeclaration":2900,"src":"19985:23:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":2499,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19985:34:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"19971:48:7"},{"condition":{"commonType":{"typeIdentifier":"t_uint96","typeString":"uint96"},"id":2507,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":2502,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2479,"src":"20051:4:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage pointer"}},{"id":2503,"name":"mid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2494,"src":"20057:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage pointer"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2501,"name":"_unsafeAccess","nodeType":"Identifier","overloadedDeclarations":[1537,2039,2541],"referencedDeclaration":2541,"src":"20037:13:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage_ptr_$_t_uint256_$returns$_t_struct$_Checkpoint160_$2049_storage_ptr_$","typeString":"function (struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage pointer,uint256) pure returns (struct CheckpointsUpgradeable.Checkpoint160 storage pointer)"}},"id":2504,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20037:24:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint160_$2049_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160 storage pointer"}},"id":2505,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"20062:4:7","memberName":"_key","nodeType":"MemberAccess","referencedDeclaration":2046,"src":"20037:29:7","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":2506,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2481,"src":"20069:3:7","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"src":"20037:35:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2519,"nodeType":"Block","src":"20126:43:7","statements":[{"expression":{"id":2517,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2515,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2485,"src":"20144:4:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2516,"name":"mid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2494,"src":"20151:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20144:10:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2518,"nodeType":"ExpressionStatement","src":"20144:10:7"}]},"id":2520,"nodeType":"IfStatement","src":"20033:136:7","trueBody":{"id":2514,"nodeType":"Block","src":"20074:46:7","statements":[{"expression":{"id":2512,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2508,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2483,"src":"20092:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2511,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2509,"name":"mid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2494,"src":"20098:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":2510,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20104:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"20098:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20092:13:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2513,"nodeType":"ExpressionStatement","src":"20092:13:7"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2492,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2490,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2483,"src":"19945:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":2491,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2485,"src":"19951:4:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19945:10:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2522,"nodeType":"WhileStatement","src":"19938:241:7"},{"expression":{"id":2523,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2485,"src":"20195:4:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2489,"id":2524,"nodeType":"Return","src":"20188:11:7"}]},"documentation":{"id":2475,"nodeType":"StructuredDocumentation","src":"19421:336:7","text":" @dev Return the index of the first (oldest) checkpoint with key is greater or equal than the search key, or `high` if there is none.\n `low` and `high` define a section where to do the search, with inclusive `low` and exclusive `high`.\n WARNING: `high` should not be greater than the array's length."},"id":2526,"implemented":true,"kind":"function","modifiers":[],"name":"_lowerBinaryLookup","nameLocation":"19771:18:7","nodeType":"FunctionDefinition","parameters":{"id":2486,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2479,"mutability":"mutable","name":"self","nameLocation":"19823:4:7","nodeType":"VariableDeclaration","scope":2526,"src":"19799:28:7","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160[]"},"typeName":{"baseType":{"id":2477,"nodeType":"UserDefinedTypeName","pathNode":{"id":2476,"name":"Checkpoint160","nameLocations":["19799:13:7"],"nodeType":"IdentifierPath","referencedDeclaration":2049,"src":"19799:13:7"},"referencedDeclaration":2049,"src":"19799:13:7","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint160_$2049_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160"}},"id":2478,"nodeType":"ArrayTypeName","src":"19799:15:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160[]"}},"visibility":"internal"},{"constant":false,"id":2481,"mutability":"mutable","name":"key","nameLocation":"19844:3:7","nodeType":"VariableDeclaration","scope":2526,"src":"19837:10:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":2480,"name":"uint96","nodeType":"ElementaryTypeName","src":"19837:6:7","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"},{"constant":false,"id":2483,"mutability":"mutable","name":"low","nameLocation":"19865:3:7","nodeType":"VariableDeclaration","scope":2526,"src":"19857:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2482,"name":"uint256","nodeType":"ElementaryTypeName","src":"19857:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2485,"mutability":"mutable","name":"high","nameLocation":"19886:4:7","nodeType":"VariableDeclaration","scope":2526,"src":"19878:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2484,"name":"uint256","nodeType":"ElementaryTypeName","src":"19878:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"19789:107:7"},"returnParameters":{"id":2489,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2488,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2526,"src":"19919:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2487,"name":"uint256","nodeType":"ElementaryTypeName","src":"19919:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"19918:9:7"},"scope":2542,"src":"19762:444:7","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":2540,"nodeType":"Block","src":"20489:125:7","statements":[{"AST":{"nodeType":"YulBlock","src":"20508:100:7","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"20529:1:7","type":"","value":"0"},{"name":"self.slot","nodeType":"YulIdentifier","src":"20532:9:7"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"20522:6:7"},"nodeType":"YulFunctionCall","src":"20522:20:7"},"nodeType":"YulExpressionStatement","src":"20522:20:7"},{"nodeType":"YulAssignment","src":"20555:43:7","value":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"20584:1:7","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"20587:4:7","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nodeType":"YulIdentifier","src":"20574:9:7"},"nodeType":"YulFunctionCall","src":"20574:18:7"},{"name":"pos","nodeType":"YulIdentifier","src":"20594:3:7"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20570:3:7"},"nodeType":"YulFunctionCall","src":"20570:28:7"},"variableNames":[{"name":"result.slot","nodeType":"YulIdentifier","src":"20555:11:7"}]}]},"evmVersion":"london","externalReferences":[{"declaration":2533,"isOffset":false,"isSlot":false,"src":"20594:3:7","valueSize":1},{"declaration":2537,"isOffset":false,"isSlot":true,"src":"20555:11:7","suffix":"slot","valueSize":1},{"declaration":2531,"isOffset":false,"isSlot":true,"src":"20532:9:7","suffix":"slot","valueSize":1}],"id":2539,"nodeType":"InlineAssembly","src":"20499:109:7"}]},"documentation":{"id":2527,"nodeType":"StructuredDocumentation","src":"20212:132:7","text":" @dev Access an element of the array without performing bounds check. The position is assumed to be within bounds."},"id":2541,"implemented":true,"kind":"function","modifiers":[],"name":"_unsafeAccess","nameLocation":"20358:13:7","nodeType":"FunctionDefinition","parameters":{"id":2534,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2531,"mutability":"mutable","name":"self","nameLocation":"20405:4:7","nodeType":"VariableDeclaration","scope":2541,"src":"20381:28:7","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160[]"},"typeName":{"baseType":{"id":2529,"nodeType":"UserDefinedTypeName","pathNode":{"id":2528,"name":"Checkpoint160","nameLocations":["20381:13:7"],"nodeType":"IdentifierPath","referencedDeclaration":2049,"src":"20381:13:7"},"referencedDeclaration":2049,"src":"20381:13:7","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint160_$2049_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160"}},"id":2530,"nodeType":"ArrayTypeName","src":"20381:15:7","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Checkpoint160_$2049_storage_$dyn_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160[]"}},"visibility":"internal"},{"constant":false,"id":2533,"mutability":"mutable","name":"pos","nameLocation":"20427:3:7","nodeType":"VariableDeclaration","scope":2541,"src":"20419:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2532,"name":"uint256","nodeType":"ElementaryTypeName","src":"20419:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20371:65:7"},"returnParameters":{"id":2538,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2537,"mutability":"mutable","name":"result","nameLocation":"20481:6:7","nodeType":"VariableDeclaration","scope":2541,"src":"20459:28:7","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint160_$2049_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160"},"typeName":{"id":2536,"nodeType":"UserDefinedTypeName","pathNode":{"id":2535,"name":"Checkpoint160","nameLocations":["20459:13:7"],"nodeType":"IdentifierPath","referencedDeclaration":2049,"src":"20459:13:7"},"referencedDeclaration":2049,"src":"20459:13:7","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint160_$2049_storage_ptr","typeString":"struct CheckpointsUpgradeable.Checkpoint160"}},"visibility":"internal"}],"src":"20458:30:7"},"scope":2542,"src":"20349:265:7","stateMutability":"pure","virtual":false,"visibility":"private"}],"scope":2543,"src":"730:19886:7","usedErrors":[]}],"src":"193:20424:7"},"id":7},"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol","exportedSymbols":{"ContextUpgradeable":[2593],"Initializable":[534]},"id":2594,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2544,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"101:23:8"},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","file":"../proxy/utils/Initializable.sol","id":2546,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2594,"sourceUnit":535,"src":"125:63:8","symbolAliases":[{"foreign":{"id":2545,"name":"Initializable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":534,"src":"133:13:8","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":2548,"name":"Initializable","nameLocations":["727:13:8"],"nodeType":"IdentifierPath","referencedDeclaration":534,"src":"727:13:8"},"id":2549,"nodeType":"InheritanceSpecifier","src":"727:13:8"}],"canonicalName":"ContextUpgradeable","contractDependencies":[],"contractKind":"contract","documentation":{"id":2547,"nodeType":"StructuredDocumentation","src":"190:496:8","text":" @dev Provides information about the current execution context, including the\n sender of the transaction and its data. While these are generally available\n via msg.sender and msg.data, they should not be accessed in such a direct\n manner, since when dealing with meta-transactions the account sending and\n paying for execution may not be the actual sender (as far as an application\n is concerned).\n This contract is only required for intermediate, library-like contracts."},"fullyImplemented":true,"id":2593,"linearizedBaseContracts":[2593,534],"name":"ContextUpgradeable","nameLocation":"705:18:8","nodeType":"ContractDefinition","nodes":[{"body":{"id":2554,"nodeType":"Block","src":"799:7:8","statements":[]},"id":2555,"implemented":true,"kind":"function","modifiers":[{"id":2552,"kind":"modifierInvocation","modifierName":{"id":2551,"name":"onlyInitializing","nameLocations":["782:16:8"],"nodeType":"IdentifierPath","referencedDeclaration":479,"src":"782:16:8"},"nodeType":"ModifierInvocation","src":"782:16:8"}],"name":"__Context_init","nameLocation":"756:14:8","nodeType":"FunctionDefinition","parameters":{"id":2550,"nodeType":"ParameterList","parameters":[],"src":"770:2:8"},"returnParameters":{"id":2553,"nodeType":"ParameterList","parameters":[],"src":"799:0:8"},"scope":2593,"src":"747:59:8","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2560,"nodeType":"Block","src":"874:7:8","statements":[]},"id":2561,"implemented":true,"kind":"function","modifiers":[{"id":2558,"kind":"modifierInvocation","modifierName":{"id":2557,"name":"onlyInitializing","nameLocations":["857:16:8"],"nodeType":"IdentifierPath","referencedDeclaration":479,"src":"857:16:8"},"nodeType":"ModifierInvocation","src":"857:16:8"}],"name":"__Context_init_unchained","nameLocation":"821:24:8","nodeType":"FunctionDefinition","parameters":{"id":2556,"nodeType":"ParameterList","parameters":[],"src":"845:2:8"},"returnParameters":{"id":2559,"nodeType":"ParameterList","parameters":[],"src":"874:0:8"},"scope":2593,"src":"812:69:8","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2569,"nodeType":"Block","src":"948:34:8","statements":[{"expression":{"expression":{"id":2566,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967281,"src":"965:3:8","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2567,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"969:6:8","memberName":"sender","nodeType":"MemberAccess","src":"965:10:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2565,"id":2568,"nodeType":"Return","src":"958:17:8"}]},"id":2570,"implemented":true,"kind":"function","modifiers":[],"name":"_msgSender","nameLocation":"895:10:8","nodeType":"FunctionDefinition","parameters":{"id":2562,"nodeType":"ParameterList","parameters":[],"src":"905:2:8"},"returnParameters":{"id":2565,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2564,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2570,"src":"939:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2563,"name":"address","nodeType":"ElementaryTypeName","src":"939:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"938:9:8"},"scope":2593,"src":"886:96:8","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":2578,"nodeType":"Block","src":"1055:32:8","statements":[{"expression":{"expression":{"id":2575,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967281,"src":"1072:3:8","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2576,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1076:4:8","memberName":"data","nodeType":"MemberAccess","src":"1072:8:8","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"functionReturnParameters":2574,"id":2577,"nodeType":"Return","src":"1065:15:8"}]},"id":2579,"implemented":true,"kind":"function","modifiers":[],"name":"_msgData","nameLocation":"997:8:8","nodeType":"FunctionDefinition","parameters":{"id":2571,"nodeType":"ParameterList","parameters":[],"src":"1005:2:8"},"returnParameters":{"id":2574,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2573,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2579,"src":"1039:14:8","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2572,"name":"bytes","nodeType":"ElementaryTypeName","src":"1039:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1038:16:8"},"scope":2593,"src":"988:99:8","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":2586,"nodeType":"Block","src":"1165:25:8","statements":[{"expression":{"hexValue":"30","id":2584,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1182:1:8","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":2583,"id":2585,"nodeType":"Return","src":"1175:8:8"}]},"id":2587,"implemented":true,"kind":"function","modifiers":[],"name":"_contextSuffixLength","nameLocation":"1102:20:8","nodeType":"FunctionDefinition","parameters":{"id":2580,"nodeType":"ParameterList","parameters":[],"src":"1122:2:8"},"returnParameters":{"id":2583,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2582,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2587,"src":"1156:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2581,"name":"uint256","nodeType":"ElementaryTypeName","src":"1156:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1155:9:8"},"scope":2593,"src":"1093:97:8","stateMutability":"view","virtual":true,"visibility":"internal"},{"constant":false,"documentation":{"id":2588,"nodeType":"StructuredDocumentation","src":"1196:254:8","text":" @dev This empty reserved space is put in place to allow future versions to add new\n variables without shifting down storage in the inheritance chain.\n See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"},"id":2592,"mutability":"mutable","name":"__gap","nameLocation":"1475:5:8","nodeType":"VariableDeclaration","scope":2593,"src":"1455:25:8","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$50_storage","typeString":"uint256[50]"},"typeName":{"baseType":{"id":2589,"name":"uint256","nodeType":"ElementaryTypeName","src":"1455:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2591,"length":{"hexValue":"3530","id":2590,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1463:2:8","typeDescriptions":{"typeIdentifier":"t_rational_50_by_1","typeString":"int_const 50"},"value":"50"},"nodeType":"ArrayTypeName","src":"1455:11:8","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$50_storage_ptr","typeString":"uint256[50]"}},"visibility":"private"}],"scope":2594,"src":"687:796:8","usedErrors":[]}],"src":"101:1383:8"},"id":8},"@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol","exportedSymbols":{"CountersUpgradeable":[2667]},"id":2668,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2595,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"87:23:9"},{"abstract":false,"baseContracts":[],"canonicalName":"CountersUpgradeable","contractDependencies":[],"contractKind":"library","documentation":{"id":2596,"nodeType":"StructuredDocumentation","src":"112:311:9","text":" @title Counters\n @author Matt Condon (@shrugs)\n @dev Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number\n of elements in a mapping, issuing ERC721 ids, or counting request ids.\n Include with `using Counters for Counters.Counter;`"},"fullyImplemented":true,"id":2667,"linearizedBaseContracts":[2667],"name":"CountersUpgradeable","nameLocation":"432:19:9","nodeType":"ContractDefinition","nodes":[{"canonicalName":"CountersUpgradeable.Counter","id":2599,"members":[{"constant":false,"id":2598,"mutability":"mutable","name":"_value","nameLocation":"805:6:9","nodeType":"VariableDeclaration","scope":2599,"src":"797:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2597,"name":"uint256","nodeType":"ElementaryTypeName","src":"797:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"Counter","nameLocation":"465:7:9","nodeType":"StructDefinition","scope":2667,"src":"458:374:9","visibility":"public"},{"body":{"id":2610,"nodeType":"Block","src":"912:38:9","statements":[{"expression":{"expression":{"id":2607,"name":"counter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2602,"src":"929:7:9","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$2599_storage_ptr","typeString":"struct CountersUpgradeable.Counter storage pointer"}},"id":2608,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"937:6:9","memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":2598,"src":"929:14:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2606,"id":2609,"nodeType":"Return","src":"922:21:9"}]},"id":2611,"implemented":true,"kind":"function","modifiers":[],"name":"current","nameLocation":"847:7:9","nodeType":"FunctionDefinition","parameters":{"id":2603,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2602,"mutability":"mutable","name":"counter","nameLocation":"871:7:9","nodeType":"VariableDeclaration","scope":2611,"src":"855:23:9","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$2599_storage_ptr","typeString":"struct CountersUpgradeable.Counter"},"typeName":{"id":2601,"nodeType":"UserDefinedTypeName","pathNode":{"id":2600,"name":"Counter","nameLocations":["855:7:9"],"nodeType":"IdentifierPath","referencedDeclaration":2599,"src":"855:7:9"},"referencedDeclaration":2599,"src":"855:7:9","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$2599_storage_ptr","typeString":"struct CountersUpgradeable.Counter"}},"visibility":"internal"}],"src":"854:25:9"},"returnParameters":{"id":2606,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2605,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2611,"src":"903:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2604,"name":"uint256","nodeType":"ElementaryTypeName","src":"903:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"902:9:9"},"scope":2667,"src":"838:112:9","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":2624,"nodeType":"Block","src":"1009:70:9","statements":[{"id":2623,"nodeType":"UncheckedBlock","src":"1019:54:9","statements":[{"expression":{"id":2621,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":2617,"name":"counter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2614,"src":"1043:7:9","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$2599_storage_ptr","typeString":"struct CountersUpgradeable.Counter storage pointer"}},"id":2619,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1051:6:9","memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":2598,"src":"1043:14:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":2620,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1061:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1043:19:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2622,"nodeType":"ExpressionStatement","src":"1043:19:9"}]}]},"id":2625,"implemented":true,"kind":"function","modifiers":[],"name":"increment","nameLocation":"965:9:9","nodeType":"FunctionDefinition","parameters":{"id":2615,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2614,"mutability":"mutable","name":"counter","nameLocation":"991:7:9","nodeType":"VariableDeclaration","scope":2625,"src":"975:23:9","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$2599_storage_ptr","typeString":"struct CountersUpgradeable.Counter"},"typeName":{"id":2613,"nodeType":"UserDefinedTypeName","pathNode":{"id":2612,"name":"Counter","nameLocations":["975:7:9"],"nodeType":"IdentifierPath","referencedDeclaration":2599,"src":"975:7:9"},"referencedDeclaration":2599,"src":"975:7:9","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$2599_storage_ptr","typeString":"struct CountersUpgradeable.Counter"}},"visibility":"internal"}],"src":"974:25:9"},"returnParameters":{"id":2616,"nodeType":"ParameterList","parameters":[],"src":"1009:0:9"},"scope":2667,"src":"956:123:9","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2652,"nodeType":"Block","src":"1138:176:9","statements":[{"assignments":[2632],"declarations":[{"constant":false,"id":2632,"mutability":"mutable","name":"value","nameLocation":"1156:5:9","nodeType":"VariableDeclaration","scope":2652,"src":"1148:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2631,"name":"uint256","nodeType":"ElementaryTypeName","src":"1148:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2635,"initialValue":{"expression":{"id":2633,"name":"counter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2628,"src":"1164:7:9","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$2599_storage_ptr","typeString":"struct CountersUpgradeable.Counter storage pointer"}},"id":2634,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1172:6:9","memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":2598,"src":"1164:14:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1148:30:9"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2639,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2637,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2632,"src":"1196:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2638,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1204:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1196:9:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"436f756e7465723a2064656372656d656e74206f766572666c6f77","id":2640,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1207:29:9","typeDescriptions":{"typeIdentifier":"t_stringliteral_1dfd0d5389474d871b8e8929aab9d4def041f55f90f625754fb5f9a9ba08af6f","typeString":"literal_string \"Counter: decrement overflow\""},"value":"Counter: decrement overflow"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_1dfd0d5389474d871b8e8929aab9d4def041f55f90f625754fb5f9a9ba08af6f","typeString":"literal_string \"Counter: decrement overflow\""}],"id":2636,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"1188:7:9","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2641,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1188:49:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2642,"nodeType":"ExpressionStatement","src":"1188:49:9"},{"id":2651,"nodeType":"UncheckedBlock","src":"1247:61:9","statements":[{"expression":{"id":2649,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":2643,"name":"counter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2628,"src":"1271:7:9","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$2599_storage_ptr","typeString":"struct CountersUpgradeable.Counter storage pointer"}},"id":2645,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1279:6:9","memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":2598,"src":"1271:14:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2648,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2646,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2632,"src":"1288:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":2647,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1296:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1288:9:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1271:26:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2650,"nodeType":"ExpressionStatement","src":"1271:26:9"}]}]},"id":2653,"implemented":true,"kind":"function","modifiers":[],"name":"decrement","nameLocation":"1094:9:9","nodeType":"FunctionDefinition","parameters":{"id":2629,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2628,"mutability":"mutable","name":"counter","nameLocation":"1120:7:9","nodeType":"VariableDeclaration","scope":2653,"src":"1104:23:9","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$2599_storage_ptr","typeString":"struct CountersUpgradeable.Counter"},"typeName":{"id":2627,"nodeType":"UserDefinedTypeName","pathNode":{"id":2626,"name":"Counter","nameLocations":["1104:7:9"],"nodeType":"IdentifierPath","referencedDeclaration":2599,"src":"1104:7:9"},"referencedDeclaration":2599,"src":"1104:7:9","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$2599_storage_ptr","typeString":"struct CountersUpgradeable.Counter"}},"visibility":"internal"}],"src":"1103:25:9"},"returnParameters":{"id":2630,"nodeType":"ParameterList","parameters":[],"src":"1138:0:9"},"scope":2667,"src":"1085:229:9","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2665,"nodeType":"Block","src":"1369:35:9","statements":[{"expression":{"id":2663,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":2659,"name":"counter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2656,"src":"1379:7:9","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$2599_storage_ptr","typeString":"struct CountersUpgradeable.Counter storage pointer"}},"id":2661,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1387:6:9","memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":2598,"src":"1379:14:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":2662,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1396:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1379:18:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2664,"nodeType":"ExpressionStatement","src":"1379:18:9"}]},"id":2666,"implemented":true,"kind":"function","modifiers":[],"name":"reset","nameLocation":"1329:5:9","nodeType":"FunctionDefinition","parameters":{"id":2657,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2656,"mutability":"mutable","name":"counter","nameLocation":"1351:7:9","nodeType":"VariableDeclaration","scope":2666,"src":"1335:23:9","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$2599_storage_ptr","typeString":"struct CountersUpgradeable.Counter"},"typeName":{"id":2655,"nodeType":"UserDefinedTypeName","pathNode":{"id":2654,"name":"Counter","nameLocations":["1335:7:9"],"nodeType":"IdentifierPath","referencedDeclaration":2599,"src":"1335:7:9"},"referencedDeclaration":2599,"src":"1335:7:9","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$2599_storage_ptr","typeString":"struct CountersUpgradeable.Counter"}},"visibility":"internal"}],"src":"1334:25:9"},"returnParameters":{"id":2658,"nodeType":"ParameterList","parameters":[],"src":"1369:0:9"},"scope":2667,"src":"1320:84:9","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":2668,"src":"424:982:9","usedErrors":[]}],"src":"87:1320:9"},"id":9},"@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol","exportedSymbols":{"StorageSlotUpgradeable":[2777]},"id":2778,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2669,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"193:23:10"},{"abstract":false,"baseContracts":[],"canonicalName":"StorageSlotUpgradeable","contractDependencies":[],"contractKind":"library","documentation":{"id":2670,"nodeType":"StructuredDocumentation","src":"218:1201:10","text":" @dev Library for reading and writing primitive types to specific storage slots.\n Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\n This library helps with reading and writing to such slots without the need for inline assembly.\n The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\n Example usage to set ERC1967 implementation slot:\n ```solidity\n contract ERC1967 {\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n function _getImplementation() internal view returns (address) {\n return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\n }\n function _setImplementation(address newImplementation) internal {\n require(Address.isContract(newImplementation), \"ERC1967: new implementation is not a contract\");\n StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\n }\n }\n ```\n _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._\n _Available since v4.9 for `string`, `bytes`._"},"fullyImplemented":true,"id":2777,"linearizedBaseContracts":[2777],"name":"StorageSlotUpgradeable","nameLocation":"1428:22:10","nodeType":"ContractDefinition","nodes":[{"canonicalName":"StorageSlotUpgradeable.AddressSlot","id":2673,"members":[{"constant":false,"id":2672,"mutability":"mutable","name":"value","nameLocation":"1494:5:10","nodeType":"VariableDeclaration","scope":2673,"src":"1486:13:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2671,"name":"address","nodeType":"ElementaryTypeName","src":"1486:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"name":"AddressSlot","nameLocation":"1464:11:10","nodeType":"StructDefinition","scope":2777,"src":"1457:49:10","visibility":"public"},{"canonicalName":"StorageSlotUpgradeable.BooleanSlot","id":2676,"members":[{"constant":false,"id":2675,"mutability":"mutable","name":"value","nameLocation":"1546:5:10","nodeType":"VariableDeclaration","scope":2676,"src":"1541:10:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2674,"name":"bool","nodeType":"ElementaryTypeName","src":"1541:4:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"name":"BooleanSlot","nameLocation":"1519:11:10","nodeType":"StructDefinition","scope":2777,"src":"1512:46:10","visibility":"public"},{"canonicalName":"StorageSlotUpgradeable.Bytes32Slot","id":2679,"members":[{"constant":false,"id":2678,"mutability":"mutable","name":"value","nameLocation":"1601:5:10","nodeType":"VariableDeclaration","scope":2679,"src":"1593:13:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2677,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1593:7:10","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"name":"Bytes32Slot","nameLocation":"1571:11:10","nodeType":"StructDefinition","scope":2777,"src":"1564:49:10","visibility":"public"},{"canonicalName":"StorageSlotUpgradeable.Uint256Slot","id":2682,"members":[{"constant":false,"id":2681,"mutability":"mutable","name":"value","nameLocation":"1656:5:10","nodeType":"VariableDeclaration","scope":2682,"src":"1648:13:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2680,"name":"uint256","nodeType":"ElementaryTypeName","src":"1648:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"Uint256Slot","nameLocation":"1626:11:10","nodeType":"StructDefinition","scope":2777,"src":"1619:49:10","visibility":"public"},{"canonicalName":"StorageSlotUpgradeable.StringSlot","id":2685,"members":[{"constant":false,"id":2684,"mutability":"mutable","name":"value","nameLocation":"1709:5:10","nodeType":"VariableDeclaration","scope":2685,"src":"1702:12:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":2683,"name":"string","nodeType":"ElementaryTypeName","src":"1702:6:10","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"name":"StringSlot","nameLocation":"1681:10:10","nodeType":"StructDefinition","scope":2777,"src":"1674:47:10","visibility":"public"},{"canonicalName":"StorageSlotUpgradeable.BytesSlot","id":2688,"members":[{"constant":false,"id":2687,"mutability":"mutable","name":"value","nameLocation":"1760:5:10","nodeType":"VariableDeclaration","scope":2688,"src":"1754:11:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":2686,"name":"bytes","nodeType":"ElementaryTypeName","src":"1754:5:10","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"name":"BytesSlot","nameLocation":"1734:9:10","nodeType":"StructDefinition","scope":2777,"src":"1727:45:10","visibility":"public"},{"body":{"id":2698,"nodeType":"Block","src":"1954:106:10","statements":[{"AST":{"nodeType":"YulBlock","src":"2016:38:10","statements":[{"nodeType":"YulAssignment","src":"2030:14:10","value":{"name":"slot","nodeType":"YulIdentifier","src":"2040:4:10"},"variableNames":[{"name":"r.slot","nodeType":"YulIdentifier","src":"2030:6:10"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"london","externalReferences":[{"declaration":2695,"isOffset":false,"isSlot":true,"src":"2030:6:10","suffix":"slot","valueSize":1},{"declaration":2691,"isOffset":false,"isSlot":false,"src":"2040:4:10","valueSize":1}],"id":2697,"nodeType":"InlineAssembly","src":"2007:47:10"}]},"documentation":{"id":2689,"nodeType":"StructuredDocumentation","src":"1778:87:10","text":" @dev Returns an `AddressSlot` with member `value` located at `slot`."},"id":2699,"implemented":true,"kind":"function","modifiers":[],"name":"getAddressSlot","nameLocation":"1879:14:10","nodeType":"FunctionDefinition","parameters":{"id":2692,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2691,"mutability":"mutable","name":"slot","nameLocation":"1902:4:10","nodeType":"VariableDeclaration","scope":2699,"src":"1894:12:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2690,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1894:7:10","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1893:14:10"},"returnParameters":{"id":2696,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2695,"mutability":"mutable","name":"r","nameLocation":"1951:1:10","nodeType":"VariableDeclaration","scope":2699,"src":"1931:21:10","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$2673_storage_ptr","typeString":"struct StorageSlotUpgradeable.AddressSlot"},"typeName":{"id":2694,"nodeType":"UserDefinedTypeName","pathNode":{"id":2693,"name":"AddressSlot","nameLocations":["1931:11:10"],"nodeType":"IdentifierPath","referencedDeclaration":2673,"src":"1931:11:10"},"referencedDeclaration":2673,"src":"1931:11:10","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$2673_storage_ptr","typeString":"struct StorageSlotUpgradeable.AddressSlot"}},"visibility":"internal"}],"src":"1930:23:10"},"scope":2777,"src":"1870:190:10","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2709,"nodeType":"Block","src":"2242:106:10","statements":[{"AST":{"nodeType":"YulBlock","src":"2304:38:10","statements":[{"nodeType":"YulAssignment","src":"2318:14:10","value":{"name":"slot","nodeType":"YulIdentifier","src":"2328:4:10"},"variableNames":[{"name":"r.slot","nodeType":"YulIdentifier","src":"2318:6:10"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"london","externalReferences":[{"declaration":2706,"isOffset":false,"isSlot":true,"src":"2318:6:10","suffix":"slot","valueSize":1},{"declaration":2702,"isOffset":false,"isSlot":false,"src":"2328:4:10","valueSize":1}],"id":2708,"nodeType":"InlineAssembly","src":"2295:47:10"}]},"documentation":{"id":2700,"nodeType":"StructuredDocumentation","src":"2066:87:10","text":" @dev Returns an `BooleanSlot` with member `value` located at `slot`."},"id":2710,"implemented":true,"kind":"function","modifiers":[],"name":"getBooleanSlot","nameLocation":"2167:14:10","nodeType":"FunctionDefinition","parameters":{"id":2703,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2702,"mutability":"mutable","name":"slot","nameLocation":"2190:4:10","nodeType":"VariableDeclaration","scope":2710,"src":"2182:12:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2701,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2182:7:10","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2181:14:10"},"returnParameters":{"id":2707,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2706,"mutability":"mutable","name":"r","nameLocation":"2239:1:10","nodeType":"VariableDeclaration","scope":2710,"src":"2219:21:10","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_BooleanSlot_$2676_storage_ptr","typeString":"struct StorageSlotUpgradeable.BooleanSlot"},"typeName":{"id":2705,"nodeType":"UserDefinedTypeName","pathNode":{"id":2704,"name":"BooleanSlot","nameLocations":["2219:11:10"],"nodeType":"IdentifierPath","referencedDeclaration":2676,"src":"2219:11:10"},"referencedDeclaration":2676,"src":"2219:11:10","typeDescriptions":{"typeIdentifier":"t_struct$_BooleanSlot_$2676_storage_ptr","typeString":"struct StorageSlotUpgradeable.BooleanSlot"}},"visibility":"internal"}],"src":"2218:23:10"},"scope":2777,"src":"2158:190:10","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2720,"nodeType":"Block","src":"2530:106:10","statements":[{"AST":{"nodeType":"YulBlock","src":"2592:38:10","statements":[{"nodeType":"YulAssignment","src":"2606:14:10","value":{"name":"slot","nodeType":"YulIdentifier","src":"2616:4:10"},"variableNames":[{"name":"r.slot","nodeType":"YulIdentifier","src":"2606:6:10"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"london","externalReferences":[{"declaration":2717,"isOffset":false,"isSlot":true,"src":"2606:6:10","suffix":"slot","valueSize":1},{"declaration":2713,"isOffset":false,"isSlot":false,"src":"2616:4:10","valueSize":1}],"id":2719,"nodeType":"InlineAssembly","src":"2583:47:10"}]},"documentation":{"id":2711,"nodeType":"StructuredDocumentation","src":"2354:87:10","text":" @dev Returns an `Bytes32Slot` with member `value` located at `slot`."},"id":2721,"implemented":true,"kind":"function","modifiers":[],"name":"getBytes32Slot","nameLocation":"2455:14:10","nodeType":"FunctionDefinition","parameters":{"id":2714,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2713,"mutability":"mutable","name":"slot","nameLocation":"2478:4:10","nodeType":"VariableDeclaration","scope":2721,"src":"2470:12:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2712,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2470:7:10","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2469:14:10"},"returnParameters":{"id":2718,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2717,"mutability":"mutable","name":"r","nameLocation":"2527:1:10","nodeType":"VariableDeclaration","scope":2721,"src":"2507:21:10","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Slot_$2679_storage_ptr","typeString":"struct StorageSlotUpgradeable.Bytes32Slot"},"typeName":{"id":2716,"nodeType":"UserDefinedTypeName","pathNode":{"id":2715,"name":"Bytes32Slot","nameLocations":["2507:11:10"],"nodeType":"IdentifierPath","referencedDeclaration":2679,"src":"2507:11:10"},"referencedDeclaration":2679,"src":"2507:11:10","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Slot_$2679_storage_ptr","typeString":"struct StorageSlotUpgradeable.Bytes32Slot"}},"visibility":"internal"}],"src":"2506:23:10"},"scope":2777,"src":"2446:190:10","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2731,"nodeType":"Block","src":"2818:106:10","statements":[{"AST":{"nodeType":"YulBlock","src":"2880:38:10","statements":[{"nodeType":"YulAssignment","src":"2894:14:10","value":{"name":"slot","nodeType":"YulIdentifier","src":"2904:4:10"},"variableNames":[{"name":"r.slot","nodeType":"YulIdentifier","src":"2894:6:10"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"london","externalReferences":[{"declaration":2728,"isOffset":false,"isSlot":true,"src":"2894:6:10","suffix":"slot","valueSize":1},{"declaration":2724,"isOffset":false,"isSlot":false,"src":"2904:4:10","valueSize":1}],"id":2730,"nodeType":"InlineAssembly","src":"2871:47:10"}]},"documentation":{"id":2722,"nodeType":"StructuredDocumentation","src":"2642:87:10","text":" @dev Returns an `Uint256Slot` with member `value` located at `slot`."},"id":2732,"implemented":true,"kind":"function","modifiers":[],"name":"getUint256Slot","nameLocation":"2743:14:10","nodeType":"FunctionDefinition","parameters":{"id":2725,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2724,"mutability":"mutable","name":"slot","nameLocation":"2766:4:10","nodeType":"VariableDeclaration","scope":2732,"src":"2758:12:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2723,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2758:7:10","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2757:14:10"},"returnParameters":{"id":2729,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2728,"mutability":"mutable","name":"r","nameLocation":"2815:1:10","nodeType":"VariableDeclaration","scope":2732,"src":"2795:21:10","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Uint256Slot_$2682_storage_ptr","typeString":"struct StorageSlotUpgradeable.Uint256Slot"},"typeName":{"id":2727,"nodeType":"UserDefinedTypeName","pathNode":{"id":2726,"name":"Uint256Slot","nameLocations":["2795:11:10"],"nodeType":"IdentifierPath","referencedDeclaration":2682,"src":"2795:11:10"},"referencedDeclaration":2682,"src":"2795:11:10","typeDescriptions":{"typeIdentifier":"t_struct$_Uint256Slot_$2682_storage_ptr","typeString":"struct StorageSlotUpgradeable.Uint256Slot"}},"visibility":"internal"}],"src":"2794:23:10"},"scope":2777,"src":"2734:190:10","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2742,"nodeType":"Block","src":"3103:106:10","statements":[{"AST":{"nodeType":"YulBlock","src":"3165:38:10","statements":[{"nodeType":"YulAssignment","src":"3179:14:10","value":{"name":"slot","nodeType":"YulIdentifier","src":"3189:4:10"},"variableNames":[{"name":"r.slot","nodeType":"YulIdentifier","src":"3179:6:10"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"london","externalReferences":[{"declaration":2739,"isOffset":false,"isSlot":true,"src":"3179:6:10","suffix":"slot","valueSize":1},{"declaration":2735,"isOffset":false,"isSlot":false,"src":"3189:4:10","valueSize":1}],"id":2741,"nodeType":"InlineAssembly","src":"3156:47:10"}]},"documentation":{"id":2733,"nodeType":"StructuredDocumentation","src":"2930:86:10","text":" @dev Returns an `StringSlot` with member `value` located at `slot`."},"id":2743,"implemented":true,"kind":"function","modifiers":[],"name":"getStringSlot","nameLocation":"3030:13:10","nodeType":"FunctionDefinition","parameters":{"id":2736,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2735,"mutability":"mutable","name":"slot","nameLocation":"3052:4:10","nodeType":"VariableDeclaration","scope":2743,"src":"3044:12:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2734,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3044:7:10","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3043:14:10"},"returnParameters":{"id":2740,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2739,"mutability":"mutable","name":"r","nameLocation":"3100:1:10","nodeType":"VariableDeclaration","scope":2743,"src":"3081:20:10","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_StringSlot_$2685_storage_ptr","typeString":"struct StorageSlotUpgradeable.StringSlot"},"typeName":{"id":2738,"nodeType":"UserDefinedTypeName","pathNode":{"id":2737,"name":"StringSlot","nameLocations":["3081:10:10"],"nodeType":"IdentifierPath","referencedDeclaration":2685,"src":"3081:10:10"},"referencedDeclaration":2685,"src":"3081:10:10","typeDescriptions":{"typeIdentifier":"t_struct$_StringSlot_$2685_storage_ptr","typeString":"struct StorageSlotUpgradeable.StringSlot"}},"visibility":"internal"}],"src":"3080:22:10"},"scope":2777,"src":"3021:188:10","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2753,"nodeType":"Block","src":"3411:112:10","statements":[{"AST":{"nodeType":"YulBlock","src":"3473:44:10","statements":[{"nodeType":"YulAssignment","src":"3487:20:10","value":{"name":"store.slot","nodeType":"YulIdentifier","src":"3497:10:10"},"variableNames":[{"name":"r.slot","nodeType":"YulIdentifier","src":"3487:6:10"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"london","externalReferences":[{"declaration":2750,"isOffset":false,"isSlot":true,"src":"3487:6:10","suffix":"slot","valueSize":1},{"declaration":2746,"isOffset":false,"isSlot":true,"src":"3497:10:10","suffix":"slot","valueSize":1}],"id":2752,"nodeType":"InlineAssembly","src":"3464:53:10"}]},"documentation":{"id":2744,"nodeType":"StructuredDocumentation","src":"3215:101:10","text":" @dev Returns an `StringSlot` representation of the string storage pointer `store`."},"id":2754,"implemented":true,"kind":"function","modifiers":[],"name":"getStringSlot","nameLocation":"3330:13:10","nodeType":"FunctionDefinition","parameters":{"id":2747,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2746,"mutability":"mutable","name":"store","nameLocation":"3359:5:10","nodeType":"VariableDeclaration","scope":2754,"src":"3344:20:10","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":2745,"name":"string","nodeType":"ElementaryTypeName","src":"3344:6:10","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3343:22:10"},"returnParameters":{"id":2751,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2750,"mutability":"mutable","name":"r","nameLocation":"3408:1:10","nodeType":"VariableDeclaration","scope":2754,"src":"3389:20:10","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_StringSlot_$2685_storage_ptr","typeString":"struct StorageSlotUpgradeable.StringSlot"},"typeName":{"id":2749,"nodeType":"UserDefinedTypeName","pathNode":{"id":2748,"name":"StringSlot","nameLocations":["3389:10:10"],"nodeType":"IdentifierPath","referencedDeclaration":2685,"src":"3389:10:10"},"referencedDeclaration":2685,"src":"3389:10:10","typeDescriptions":{"typeIdentifier":"t_struct$_StringSlot_$2685_storage_ptr","typeString":"struct StorageSlotUpgradeable.StringSlot"}},"visibility":"internal"}],"src":"3388:22:10"},"scope":2777,"src":"3321:202:10","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2764,"nodeType":"Block","src":"3699:106:10","statements":[{"AST":{"nodeType":"YulBlock","src":"3761:38:10","statements":[{"nodeType":"YulAssignment","src":"3775:14:10","value":{"name":"slot","nodeType":"YulIdentifier","src":"3785:4:10"},"variableNames":[{"name":"r.slot","nodeType":"YulIdentifier","src":"3775:6:10"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"london","externalReferences":[{"declaration":2761,"isOffset":false,"isSlot":true,"src":"3775:6:10","suffix":"slot","valueSize":1},{"declaration":2757,"isOffset":false,"isSlot":false,"src":"3785:4:10","valueSize":1}],"id":2763,"nodeType":"InlineAssembly","src":"3752:47:10"}]},"documentation":{"id":2755,"nodeType":"StructuredDocumentation","src":"3529:85:10","text":" @dev Returns an `BytesSlot` with member `value` located at `slot`."},"id":2765,"implemented":true,"kind":"function","modifiers":[],"name":"getBytesSlot","nameLocation":"3628:12:10","nodeType":"FunctionDefinition","parameters":{"id":2758,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2757,"mutability":"mutable","name":"slot","nameLocation":"3649:4:10","nodeType":"VariableDeclaration","scope":2765,"src":"3641:12:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2756,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3641:7:10","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3640:14:10"},"returnParameters":{"id":2762,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2761,"mutability":"mutable","name":"r","nameLocation":"3696:1:10","nodeType":"VariableDeclaration","scope":2765,"src":"3678:19:10","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$2688_storage_ptr","typeString":"struct StorageSlotUpgradeable.BytesSlot"},"typeName":{"id":2760,"nodeType":"UserDefinedTypeName","pathNode":{"id":2759,"name":"BytesSlot","nameLocations":["3678:9:10"],"nodeType":"IdentifierPath","referencedDeclaration":2688,"src":"3678:9:10"},"referencedDeclaration":2688,"src":"3678:9:10","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$2688_storage_ptr","typeString":"struct StorageSlotUpgradeable.BytesSlot"}},"visibility":"internal"}],"src":"3677:21:10"},"scope":2777,"src":"3619:186:10","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2775,"nodeType":"Block","src":"4002:112:10","statements":[{"AST":{"nodeType":"YulBlock","src":"4064:44:10","statements":[{"nodeType":"YulAssignment","src":"4078:20:10","value":{"name":"store.slot","nodeType":"YulIdentifier","src":"4088:10:10"},"variableNames":[{"name":"r.slot","nodeType":"YulIdentifier","src":"4078:6:10"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"london","externalReferences":[{"declaration":2772,"isOffset":false,"isSlot":true,"src":"4078:6:10","suffix":"slot","valueSize":1},{"declaration":2768,"isOffset":false,"isSlot":true,"src":"4088:10:10","suffix":"slot","valueSize":1}],"id":2774,"nodeType":"InlineAssembly","src":"4055:53:10"}]},"documentation":{"id":2766,"nodeType":"StructuredDocumentation","src":"3811:99:10","text":" @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`."},"id":2776,"implemented":true,"kind":"function","modifiers":[],"name":"getBytesSlot","nameLocation":"3924:12:10","nodeType":"FunctionDefinition","parameters":{"id":2769,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2768,"mutability":"mutable","name":"store","nameLocation":"3951:5:10","nodeType":"VariableDeclaration","scope":2776,"src":"3937:19:10","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":2767,"name":"bytes","nodeType":"ElementaryTypeName","src":"3937:5:10","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3936:21:10"},"returnParameters":{"id":2773,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2772,"mutability":"mutable","name":"r","nameLocation":"3999:1:10","nodeType":"VariableDeclaration","scope":2776,"src":"3981:19:10","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$2688_storage_ptr","typeString":"struct StorageSlotUpgradeable.BytesSlot"},"typeName":{"id":2771,"nodeType":"UserDefinedTypeName","pathNode":{"id":2770,"name":"BytesSlot","nameLocations":["3981:9:10"],"nodeType":"IdentifierPath","referencedDeclaration":2688,"src":"3981:9:10"},"referencedDeclaration":2688,"src":"3981:9:10","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$2688_storage_ptr","typeString":"struct StorageSlotUpgradeable.BytesSlot"}},"visibility":"internal"}],"src":"3980:21:10"},"scope":2777,"src":"3915:199:10","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":2778,"src":"1420:2696:10","usedErrors":[]}],"src":"193:3924:10"},"id":10},"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol","exportedSymbols":{"ERC165Upgradeable":[2822],"IERC165Upgradeable":[2834],"Initializable":[534]},"id":2823,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2779,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"99:23:11"},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol","file":"./IERC165Upgradeable.sol","id":2780,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2823,"sourceUnit":2835,"src":"124:34:11","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","file":"../../proxy/utils/Initializable.sol","id":2782,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2823,"sourceUnit":535,"src":"159:66:11","symbolAliases":[{"foreign":{"id":2781,"name":"Initializable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":534,"src":"167:13:11","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":2784,"name":"Initializable","nameLocations":["843:13:11"],"nodeType":"IdentifierPath","referencedDeclaration":534,"src":"843:13:11"},"id":2785,"nodeType":"InheritanceSpecifier","src":"843:13:11"},{"baseName":{"id":2786,"name":"IERC165Upgradeable","nameLocations":["858:18:11"],"nodeType":"IdentifierPath","referencedDeclaration":2834,"src":"858:18:11"},"id":2787,"nodeType":"InheritanceSpecifier","src":"858:18:11"}],"canonicalName":"ERC165Upgradeable","contractDependencies":[],"contractKind":"contract","documentation":{"id":2783,"nodeType":"StructuredDocumentation","src":"227:576:11","text":" @dev Implementation of the {IERC165} interface.\n Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\n for the additional interface id that will be supported. For example:\n ```solidity\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\n }\n ```\n Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation."},"fullyImplemented":true,"id":2822,"linearizedBaseContracts":[2822,2834,534],"name":"ERC165Upgradeable","nameLocation":"822:17:11","nodeType":"ContractDefinition","nodes":[{"body":{"id":2792,"nodeType":"Block","src":"934:7:11","statements":[]},"id":2793,"implemented":true,"kind":"function","modifiers":[{"id":2790,"kind":"modifierInvocation","modifierName":{"id":2789,"name":"onlyInitializing","nameLocations":["917:16:11"],"nodeType":"IdentifierPath","referencedDeclaration":479,"src":"917:16:11"},"nodeType":"ModifierInvocation","src":"917:16:11"}],"name":"__ERC165_init","nameLocation":"892:13:11","nodeType":"FunctionDefinition","parameters":{"id":2788,"nodeType":"ParameterList","parameters":[],"src":"905:2:11"},"returnParameters":{"id":2791,"nodeType":"ParameterList","parameters":[],"src":"934:0:11"},"scope":2822,"src":"883:58:11","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2798,"nodeType":"Block","src":"1008:7:11","statements":[]},"id":2799,"implemented":true,"kind":"function","modifiers":[{"id":2796,"kind":"modifierInvocation","modifierName":{"id":2795,"name":"onlyInitializing","nameLocations":["991:16:11"],"nodeType":"IdentifierPath","referencedDeclaration":479,"src":"991:16:11"},"nodeType":"ModifierInvocation","src":"991:16:11"}],"name":"__ERC165_init_unchained","nameLocation":"956:23:11","nodeType":"FunctionDefinition","parameters":{"id":2794,"nodeType":"ParameterList","parameters":[],"src":"979:2:11"},"returnParameters":{"id":2797,"nodeType":"ParameterList","parameters":[],"src":"1008:0:11"},"scope":2822,"src":"947:68:11","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[2833],"body":{"id":2815,"nodeType":"Block","src":"1172:75:11","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":2813,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2808,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2802,"src":"1189:11:11","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":2810,"name":"IERC165Upgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2834,"src":"1209:18:11","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC165Upgradeable_$2834_$","typeString":"type(contract IERC165Upgradeable)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC165Upgradeable_$2834_$","typeString":"type(contract IERC165Upgradeable)"}],"id":2809,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"1204:4:11","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":2811,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1204:24:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC165Upgradeable_$2834","typeString":"type(contract IERC165Upgradeable)"}},"id":2812,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1229:11:11","memberName":"interfaceId","nodeType":"MemberAccess","src":"1204:36:11","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"1189:51:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2807,"id":2814,"nodeType":"Return","src":"1182:58:11"}]},"documentation":{"id":2800,"nodeType":"StructuredDocumentation","src":"1020:56:11","text":" @dev See {IERC165-supportsInterface}."},"functionSelector":"01ffc9a7","id":2816,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"1090:17:11","nodeType":"FunctionDefinition","overrides":{"id":2804,"nodeType":"OverrideSpecifier","overrides":[],"src":"1148:8:11"},"parameters":{"id":2803,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2802,"mutability":"mutable","name":"interfaceId","nameLocation":"1115:11:11","nodeType":"VariableDeclaration","scope":2816,"src":"1108:18:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2801,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1108:6:11","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"1107:20:11"},"returnParameters":{"id":2807,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2806,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2816,"src":"1166:4:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2805,"name":"bool","nodeType":"ElementaryTypeName","src":"1166:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1165:6:11"},"scope":2822,"src":"1081:166:11","stateMutability":"view","virtual":true,"visibility":"public"},{"constant":false,"documentation":{"id":2817,"nodeType":"StructuredDocumentation","src":"1253:254:11","text":" @dev This empty reserved space is put in place to allow future versions to add new\n variables without shifting down storage in the inheritance chain.\n See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"},"id":2821,"mutability":"mutable","name":"__gap","nameLocation":"1532:5:11","nodeType":"VariableDeclaration","scope":2822,"src":"1512:25:11","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$50_storage","typeString":"uint256[50]"},"typeName":{"baseType":{"id":2818,"name":"uint256","nodeType":"ElementaryTypeName","src":"1512:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2820,"length":{"hexValue":"3530","id":2819,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1520:2:11","typeDescriptions":{"typeIdentifier":"t_rational_50_by_1","typeString":"int_const 50"},"value":"50"},"nodeType":"ArrayTypeName","src":"1512:11:11","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$50_storage_ptr","typeString":"uint256[50]"}},"visibility":"private"}],"scope":2823,"src":"804:736:11","usedErrors":[]}],"src":"99:1442:11"},"id":11},"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol","exportedSymbols":{"IERC165Upgradeable":[2834]},"id":2835,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2824,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"100:23:12"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC165Upgradeable","contractDependencies":[],"contractKind":"interface","documentation":{"id":2825,"nodeType":"StructuredDocumentation","src":"125:279:12","text":" @dev Interface of the ERC165 standard, as defined in the\n https://eips.ethereum.org/EIPS/eip-165[EIP].\n Implementers can declare support of contract interfaces, which can then be\n queried by others ({ERC165Checker}).\n For an implementation, see {ERC165}."},"fullyImplemented":false,"id":2834,"linearizedBaseContracts":[2834],"name":"IERC165Upgradeable","nameLocation":"415:18:12","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":2826,"nodeType":"StructuredDocumentation","src":"440:340:12","text":" @dev Returns true if this contract implements the interface defined by\n `interfaceId`. See the corresponding\n https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\n to learn more about how these ids are created.\n This function call must use less than 30 000 gas."},"functionSelector":"01ffc9a7","id":2833,"implemented":false,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"794:17:12","nodeType":"FunctionDefinition","parameters":{"id":2829,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2828,"mutability":"mutable","name":"interfaceId","nameLocation":"819:11:12","nodeType":"VariableDeclaration","scope":2833,"src":"812:18:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2827,"name":"bytes4","nodeType":"ElementaryTypeName","src":"812:6:12","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"811:20:12"},"returnParameters":{"id":2832,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2831,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2833,"src":"855:4:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2830,"name":"bool","nodeType":"ElementaryTypeName","src":"855:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"854:6:12"},"scope":2834,"src":"785:76:12","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":2835,"src":"405:458:12","usedErrors":[]}],"src":"100:764:12"},"id":12},"@openzeppelin/contracts-upgradeable/utils/math/MathUpgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/math/MathUpgradeable.sol","exportedSymbols":{"MathUpgradeable":[3700]},"id":3701,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2836,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"103:23:13"},{"abstract":false,"baseContracts":[],"canonicalName":"MathUpgradeable","contractDependencies":[],"contractKind":"library","documentation":{"id":2837,"nodeType":"StructuredDocumentation","src":"128:73:13","text":" @dev Standard math utilities missing in the Solidity language."},"fullyImplemented":true,"id":3700,"linearizedBaseContracts":[3700],"name":"MathUpgradeable","nameLocation":"210:15:13","nodeType":"ContractDefinition","nodes":[{"canonicalName":"MathUpgradeable.Rounding","id":2841,"members":[{"id":2838,"name":"Down","nameLocation":"256:4:13","nodeType":"EnumValue","src":"256:4:13"},{"id":2839,"name":"Up","nameLocation":"298:2:13","nodeType":"EnumValue","src":"298:2:13"},{"id":2840,"name":"Zero","nameLocation":"329:4:13","nodeType":"EnumValue","src":"329:4:13"}],"name":"Rounding","nameLocation":"237:8:13","nodeType":"EnumDefinition","src":"232:122:13"},{"body":{"id":2858,"nodeType":"Block","src":"491:37:13","statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2853,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2851,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2844,"src":"508:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":2852,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2846,"src":"512:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"508:5:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":2855,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2846,"src":"520:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2856,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"508:13:13","trueExpression":{"id":2854,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2844,"src":"516:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2850,"id":2857,"nodeType":"Return","src":"501:20:13"}]},"documentation":{"id":2842,"nodeType":"StructuredDocumentation","src":"360:59:13","text":" @dev Returns the largest of two numbers."},"id":2859,"implemented":true,"kind":"function","modifiers":[],"name":"max","nameLocation":"433:3:13","nodeType":"FunctionDefinition","parameters":{"id":2847,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2844,"mutability":"mutable","name":"a","nameLocation":"445:1:13","nodeType":"VariableDeclaration","scope":2859,"src":"437:9:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2843,"name":"uint256","nodeType":"ElementaryTypeName","src":"437:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2846,"mutability":"mutable","name":"b","nameLocation":"456:1:13","nodeType":"VariableDeclaration","scope":2859,"src":"448:9:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2845,"name":"uint256","nodeType":"ElementaryTypeName","src":"448:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"436:22:13"},"returnParameters":{"id":2850,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2849,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2859,"src":"482:7:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2848,"name":"uint256","nodeType":"ElementaryTypeName","src":"482:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"481:9:13"},"scope":3700,"src":"424:104:13","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2876,"nodeType":"Block","src":"666:37:13","statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2871,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2869,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2862,"src":"683:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":2870,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2864,"src":"687:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"683:5:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":2873,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2864,"src":"695:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2874,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"683:13:13","trueExpression":{"id":2872,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2862,"src":"691:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2868,"id":2875,"nodeType":"Return","src":"676:20:13"}]},"documentation":{"id":2860,"nodeType":"StructuredDocumentation","src":"534:60:13","text":" @dev Returns the smallest of two numbers."},"id":2877,"implemented":true,"kind":"function","modifiers":[],"name":"min","nameLocation":"608:3:13","nodeType":"FunctionDefinition","parameters":{"id":2865,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2862,"mutability":"mutable","name":"a","nameLocation":"620:1:13","nodeType":"VariableDeclaration","scope":2877,"src":"612:9:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2861,"name":"uint256","nodeType":"ElementaryTypeName","src":"612:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2864,"mutability":"mutable","name":"b","nameLocation":"631:1:13","nodeType":"VariableDeclaration","scope":2877,"src":"623:9:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2863,"name":"uint256","nodeType":"ElementaryTypeName","src":"623:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"611:22:13"},"returnParameters":{"id":2868,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2867,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2877,"src":"657:7:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2866,"name":"uint256","nodeType":"ElementaryTypeName","src":"657:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"656:9:13"},"scope":3700,"src":"599:104:13","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2899,"nodeType":"Block","src":"887:82:13","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2897,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2889,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2887,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2880,"src":"942:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":2888,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2882,"src":"946:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"942:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2890,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"941:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2896,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2893,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2891,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2880,"src":"952:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":2892,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2882,"src":"956:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"952:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2894,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"951:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"32","id":2895,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"961:1:13","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"951:11:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"941:21:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2886,"id":2898,"nodeType":"Return","src":"934:28:13"}]},"documentation":{"id":2878,"nodeType":"StructuredDocumentation","src":"709:102:13","text":" @dev Returns the average of two numbers. The result is rounded towards\n zero."},"id":2900,"implemented":true,"kind":"function","modifiers":[],"name":"average","nameLocation":"825:7:13","nodeType":"FunctionDefinition","parameters":{"id":2883,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2880,"mutability":"mutable","name":"a","nameLocation":"841:1:13","nodeType":"VariableDeclaration","scope":2900,"src":"833:9:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2879,"name":"uint256","nodeType":"ElementaryTypeName","src":"833:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2882,"mutability":"mutable","name":"b","nameLocation":"852:1:13","nodeType":"VariableDeclaration","scope":2900,"src":"844:9:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2881,"name":"uint256","nodeType":"ElementaryTypeName","src":"844:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"832:22:13"},"returnParameters":{"id":2886,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2885,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2900,"src":"878:7:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2884,"name":"uint256","nodeType":"ElementaryTypeName","src":"878:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"877:9:13"},"scope":3700,"src":"816:153:13","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2924,"nodeType":"Block","src":"1239:123:13","statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2912,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2910,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2903,"src":"1327:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2911,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1332:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1327:6:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2921,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2919,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2916,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2914,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2903,"src":"1341:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":2915,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1345:1:13","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1341:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2917,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1340:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2918,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2905,"src":"1350:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1340:11:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":2920,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1354:1:13","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1340:15:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2922,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"1327:28:13","trueExpression":{"hexValue":"30","id":2913,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1336:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2909,"id":2923,"nodeType":"Return","src":"1320:35:13"}]},"documentation":{"id":2901,"nodeType":"StructuredDocumentation","src":"975:188:13","text":" @dev Returns the ceiling of the division of two numbers.\n This differs from standard division with `/` in that it rounds up instead\n of rounding down."},"id":2925,"implemented":true,"kind":"function","modifiers":[],"name":"ceilDiv","nameLocation":"1177:7:13","nodeType":"FunctionDefinition","parameters":{"id":2906,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2903,"mutability":"mutable","name":"a","nameLocation":"1193:1:13","nodeType":"VariableDeclaration","scope":2925,"src":"1185:9:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2902,"name":"uint256","nodeType":"ElementaryTypeName","src":"1185:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2905,"mutability":"mutable","name":"b","nameLocation":"1204:1:13","nodeType":"VariableDeclaration","scope":2925,"src":"1196:9:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2904,"name":"uint256","nodeType":"ElementaryTypeName","src":"1196:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1184:22:13"},"returnParameters":{"id":2909,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2908,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2925,"src":"1230:7:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2907,"name":"uint256","nodeType":"ElementaryTypeName","src":"1230:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1229:9:13"},"scope":3700,"src":"1168:194:13","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3047,"nodeType":"Block","src":"1776:4115:13","statements":[{"id":3046,"nodeType":"UncheckedBlock","src":"1786:4099:13","statements":[{"assignments":[2938],"declarations":[{"constant":false,"id":2938,"mutability":"mutable","name":"prod0","nameLocation":"2115:5:13","nodeType":"VariableDeclaration","scope":3046,"src":"2107:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2937,"name":"uint256","nodeType":"ElementaryTypeName","src":"2107:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2939,"nodeType":"VariableDeclarationStatement","src":"2107:13:13"},{"assignments":[2941],"declarations":[{"constant":false,"id":2941,"mutability":"mutable","name":"prod1","nameLocation":"2187:5:13","nodeType":"VariableDeclaration","scope":3046,"src":"2179:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2940,"name":"uint256","nodeType":"ElementaryTypeName","src":"2179:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2942,"nodeType":"VariableDeclarationStatement","src":"2179:13:13"},{"AST":{"nodeType":"YulBlock","src":"2259:157:13","statements":[{"nodeType":"YulVariableDeclaration","src":"2277:30:13","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"2294:1:13"},{"name":"y","nodeType":"YulIdentifier","src":"2297:1:13"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2304:1:13","type":"","value":"0"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"2300:3:13"},"nodeType":"YulFunctionCall","src":"2300:6:13"}],"functionName":{"name":"mulmod","nodeType":"YulIdentifier","src":"2287:6:13"},"nodeType":"YulFunctionCall","src":"2287:20:13"},"variables":[{"name":"mm","nodeType":"YulTypedName","src":"2281:2:13","type":""}]},{"nodeType":"YulAssignment","src":"2324:18:13","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"2337:1:13"},{"name":"y","nodeType":"YulIdentifier","src":"2340:1:13"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"2333:3:13"},"nodeType":"YulFunctionCall","src":"2333:9:13"},"variableNames":[{"name":"prod0","nodeType":"YulIdentifier","src":"2324:5:13"}]},{"nodeType":"YulAssignment","src":"2359:43:13","value":{"arguments":[{"arguments":[{"name":"mm","nodeType":"YulIdentifier","src":"2376:2:13"},{"name":"prod0","nodeType":"YulIdentifier","src":"2380:5:13"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2372:3:13"},"nodeType":"YulFunctionCall","src":"2372:14:13"},{"arguments":[{"name":"mm","nodeType":"YulIdentifier","src":"2391:2:13"},{"name":"prod0","nodeType":"YulIdentifier","src":"2395:5:13"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2388:2:13"},"nodeType":"YulFunctionCall","src":"2388:13:13"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2368:3:13"},"nodeType":"YulFunctionCall","src":"2368:34:13"},"variableNames":[{"name":"prod1","nodeType":"YulIdentifier","src":"2359:5:13"}]}]},"evmVersion":"london","externalReferences":[{"declaration":2938,"isOffset":false,"isSlot":false,"src":"2324:5:13","valueSize":1},{"declaration":2938,"isOffset":false,"isSlot":false,"src":"2380:5:13","valueSize":1},{"declaration":2938,"isOffset":false,"isSlot":false,"src":"2395:5:13","valueSize":1},{"declaration":2941,"isOffset":false,"isSlot":false,"src":"2359:5:13","valueSize":1},{"declaration":2928,"isOffset":false,"isSlot":false,"src":"2294:1:13","valueSize":1},{"declaration":2928,"isOffset":false,"isSlot":false,"src":"2337:1:13","valueSize":1},{"declaration":2930,"isOffset":false,"isSlot":false,"src":"2297:1:13","valueSize":1},{"declaration":2930,"isOffset":false,"isSlot":false,"src":"2340:1:13","valueSize":1}],"id":2943,"nodeType":"InlineAssembly","src":"2250:166:13"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2946,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2944,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2941,"src":"2497:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2945,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2506:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2497:10:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2952,"nodeType":"IfStatement","src":"2493:368:13","trueBody":{"id":2951,"nodeType":"Block","src":"2509:352:13","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2949,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2947,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2938,"src":"2827:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2948,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2932,"src":"2835:11:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2827:19:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2936,"id":2950,"nodeType":"Return","src":"2820:26:13"}]}},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2956,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2954,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2932,"src":"2971:11:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":2955,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2941,"src":"2985:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2971:19:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4d6174683a206d756c446976206f766572666c6f77","id":2957,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2992:23:13","typeDescriptions":{"typeIdentifier":"t_stringliteral_d87093691d63b122ac2c14d1b11554b287e2431cf2b03550b3be7cffb0f86851","typeString":"literal_string \"Math: mulDiv overflow\""},"value":"Math: mulDiv overflow"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d87093691d63b122ac2c14d1b11554b287e2431cf2b03550b3be7cffb0f86851","typeString":"literal_string \"Math: mulDiv overflow\""}],"id":2953,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"2963:7:13","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2958,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2963:53:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2959,"nodeType":"ExpressionStatement","src":"2963:53:13"},{"assignments":[2961],"declarations":[{"constant":false,"id":2961,"mutability":"mutable","name":"remainder","nameLocation":"3280:9:13","nodeType":"VariableDeclaration","scope":3046,"src":"3272:17:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2960,"name":"uint256","nodeType":"ElementaryTypeName","src":"3272:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2962,"nodeType":"VariableDeclarationStatement","src":"3272:17:13"},{"AST":{"nodeType":"YulBlock","src":"3312:291:13","statements":[{"nodeType":"YulAssignment","src":"3381:38:13","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"3401:1:13"},{"name":"y","nodeType":"YulIdentifier","src":"3404:1:13"},{"name":"denominator","nodeType":"YulIdentifier","src":"3407:11:13"}],"functionName":{"name":"mulmod","nodeType":"YulIdentifier","src":"3394:6:13"},"nodeType":"YulFunctionCall","src":"3394:25:13"},"variableNames":[{"name":"remainder","nodeType":"YulIdentifier","src":"3381:9:13"}]},{"nodeType":"YulAssignment","src":"3501:41:13","value":{"arguments":[{"name":"prod1","nodeType":"YulIdentifier","src":"3514:5:13"},{"arguments":[{"name":"remainder","nodeType":"YulIdentifier","src":"3524:9:13"},{"name":"prod0","nodeType":"YulIdentifier","src":"3535:5:13"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3521:2:13"},"nodeType":"YulFunctionCall","src":"3521:20:13"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3510:3:13"},"nodeType":"YulFunctionCall","src":"3510:32:13"},"variableNames":[{"name":"prod1","nodeType":"YulIdentifier","src":"3501:5:13"}]},{"nodeType":"YulAssignment","src":"3559:30:13","value":{"arguments":[{"name":"prod0","nodeType":"YulIdentifier","src":"3572:5:13"},{"name":"remainder","nodeType":"YulIdentifier","src":"3579:9:13"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3568:3:13"},"nodeType":"YulFunctionCall","src":"3568:21:13"},"variableNames":[{"name":"prod0","nodeType":"YulIdentifier","src":"3559:5:13"}]}]},"evmVersion":"london","externalReferences":[{"declaration":2932,"isOffset":false,"isSlot":false,"src":"3407:11:13","valueSize":1},{"declaration":2938,"isOffset":false,"isSlot":false,"src":"3535:5:13","valueSize":1},{"declaration":2938,"isOffset":false,"isSlot":false,"src":"3559:5:13","valueSize":1},{"declaration":2938,"isOffset":false,"isSlot":false,"src":"3572:5:13","valueSize":1},{"declaration":2941,"isOffset":false,"isSlot":false,"src":"3501:5:13","valueSize":1},{"declaration":2941,"isOffset":false,"isSlot":false,"src":"3514:5:13","valueSize":1},{"declaration":2961,"isOffset":false,"isSlot":false,"src":"3381:9:13","valueSize":1},{"declaration":2961,"isOffset":false,"isSlot":false,"src":"3524:9:13","valueSize":1},{"declaration":2961,"isOffset":false,"isSlot":false,"src":"3579:9:13","valueSize":1},{"declaration":2928,"isOffset":false,"isSlot":false,"src":"3401:1:13","valueSize":1},{"declaration":2930,"isOffset":false,"isSlot":false,"src":"3404:1:13","valueSize":1}],"id":2963,"nodeType":"InlineAssembly","src":"3303:300:13"},{"assignments":[2965],"declarations":[{"constant":false,"id":2965,"mutability":"mutable","name":"twos","nameLocation":"3918:4:13","nodeType":"VariableDeclaration","scope":3046,"src":"3910:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2964,"name":"uint256","nodeType":"ElementaryTypeName","src":"3910:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2973,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2972,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2966,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2932,"src":"3925:11:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2970,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2968,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"~","prefix":true,"src":"3940:12:13","subExpression":{"id":2967,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2932,"src":"3941:11:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":2969,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3955:1:13","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3940:16:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2971,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3939:18:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3925:32:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3910:47:13"},{"AST":{"nodeType":"YulBlock","src":"3980:362:13","statements":[{"nodeType":"YulAssignment","src":"4045:37:13","value":{"arguments":[{"name":"denominator","nodeType":"YulIdentifier","src":"4064:11:13"},{"name":"twos","nodeType":"YulIdentifier","src":"4077:4:13"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"4060:3:13"},"nodeType":"YulFunctionCall","src":"4060:22:13"},"variableNames":[{"name":"denominator","nodeType":"YulIdentifier","src":"4045:11:13"}]},{"nodeType":"YulAssignment","src":"4149:25:13","value":{"arguments":[{"name":"prod0","nodeType":"YulIdentifier","src":"4162:5:13"},{"name":"twos","nodeType":"YulIdentifier","src":"4169:4:13"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"4158:3:13"},"nodeType":"YulFunctionCall","src":"4158:16:13"},"variableNames":[{"name":"prod0","nodeType":"YulIdentifier","src":"4149:5:13"}]},{"nodeType":"YulAssignment","src":"4289:39:13","value":{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4309:1:13","type":"","value":"0"},{"name":"twos","nodeType":"YulIdentifier","src":"4312:4:13"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4305:3:13"},"nodeType":"YulFunctionCall","src":"4305:12:13"},{"name":"twos","nodeType":"YulIdentifier","src":"4319:4:13"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"4301:3:13"},"nodeType":"YulFunctionCall","src":"4301:23:13"},{"kind":"number","nodeType":"YulLiteral","src":"4326:1:13","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4297:3:13"},"nodeType":"YulFunctionCall","src":"4297:31:13"},"variableNames":[{"name":"twos","nodeType":"YulIdentifier","src":"4289:4:13"}]}]},"evmVersion":"london","externalReferences":[{"declaration":2932,"isOffset":false,"isSlot":false,"src":"4045:11:13","valueSize":1},{"declaration":2932,"isOffset":false,"isSlot":false,"src":"4064:11:13","valueSize":1},{"declaration":2938,"isOffset":false,"isSlot":false,"src":"4149:5:13","valueSize":1},{"declaration":2938,"isOffset":false,"isSlot":false,"src":"4162:5:13","valueSize":1},{"declaration":2965,"isOffset":false,"isSlot":false,"src":"4077:4:13","valueSize":1},{"declaration":2965,"isOffset":false,"isSlot":false,"src":"4169:4:13","valueSize":1},{"declaration":2965,"isOffset":false,"isSlot":false,"src":"4289:4:13","valueSize":1},{"declaration":2965,"isOffset":false,"isSlot":false,"src":"4312:4:13","valueSize":1},{"declaration":2965,"isOffset":false,"isSlot":false,"src":"4319:4:13","valueSize":1}],"id":2974,"nodeType":"InlineAssembly","src":"3971:371:13"},{"expression":{"id":2979,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2975,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2938,"src":"4408:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2978,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2976,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2941,"src":"4417:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":2977,"name":"twos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2965,"src":"4425:4:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4417:12:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4408:21:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2980,"nodeType":"ExpressionStatement","src":"4408:21:13"},{"assignments":[2982],"declarations":[{"constant":false,"id":2982,"mutability":"mutable","name":"inverse","nameLocation":"4755:7:13","nodeType":"VariableDeclaration","scope":3046,"src":"4747:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2981,"name":"uint256","nodeType":"ElementaryTypeName","src":"4747:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2989,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2988,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2985,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"33","id":2983,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4766:1:13","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":2984,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2932,"src":"4770:11:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4766:15:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2986,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4765:17:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"hexValue":"32","id":2987,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4785:1:13","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"4765:21:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4747:39:13"},{"expression":{"id":2996,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2990,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2982,"src":"5003:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2995,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":2991,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5014:1:13","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2994,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2992,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2932,"src":"5018:11:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":2993,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2982,"src":"5032:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5018:21:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5014:25:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5003:36:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2997,"nodeType":"ExpressionStatement","src":"5003:36:13"},{"expression":{"id":3004,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2998,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2982,"src":"5072:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3003,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":2999,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5083:1:13","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3002,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3000,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2932,"src":"5087:11:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":3001,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2982,"src":"5101:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5087:21:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5083:25:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5072:36:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3005,"nodeType":"ExpressionStatement","src":"5072:36:13"},{"expression":{"id":3012,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3006,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2982,"src":"5142:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3011,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":3007,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5153:1:13","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3010,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3008,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2932,"src":"5157:11:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":3009,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2982,"src":"5171:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5157:21:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5153:25:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5142:36:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3013,"nodeType":"ExpressionStatement","src":"5142:36:13"},{"expression":{"id":3020,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3014,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2982,"src":"5212:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3019,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":3015,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5223:1:13","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3018,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3016,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2932,"src":"5227:11:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":3017,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2982,"src":"5241:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5227:21:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5223:25:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5212:36:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3021,"nodeType":"ExpressionStatement","src":"5212:36:13"},{"expression":{"id":3028,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3022,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2982,"src":"5282:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3027,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":3023,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5293:1:13","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3026,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3024,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2932,"src":"5297:11:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":3025,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2982,"src":"5311:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5297:21:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5293:25:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5282:36:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3029,"nodeType":"ExpressionStatement","src":"5282:36:13"},{"expression":{"id":3036,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3030,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2982,"src":"5353:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3035,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":3031,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5364:1:13","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3034,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3032,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2932,"src":"5368:11:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":3033,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2982,"src":"5382:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5368:21:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5364:25:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5353:36:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3037,"nodeType":"ExpressionStatement","src":"5353:36:13"},{"expression":{"id":3042,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3038,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2935,"src":"5823:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3041,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3039,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2938,"src":"5832:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":3040,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2982,"src":"5840:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5832:15:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5823:24:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3043,"nodeType":"ExpressionStatement","src":"5823:24:13"},{"expression":{"id":3044,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2935,"src":"5868:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2936,"id":3045,"nodeType":"Return","src":"5861:13:13"}]}]},"documentation":{"id":2926,"nodeType":"StructuredDocumentation","src":"1368:305:13","text":" @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\n @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)\n with further edits by Uniswap Labs also under MIT license."},"id":3048,"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"1687:6:13","nodeType":"FunctionDefinition","parameters":{"id":2933,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2928,"mutability":"mutable","name":"x","nameLocation":"1702:1:13","nodeType":"VariableDeclaration","scope":3048,"src":"1694:9:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2927,"name":"uint256","nodeType":"ElementaryTypeName","src":"1694:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2930,"mutability":"mutable","name":"y","nameLocation":"1713:1:13","nodeType":"VariableDeclaration","scope":3048,"src":"1705:9:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2929,"name":"uint256","nodeType":"ElementaryTypeName","src":"1705:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2932,"mutability":"mutable","name":"denominator","nameLocation":"1724:11:13","nodeType":"VariableDeclaration","scope":3048,"src":"1716:19:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2931,"name":"uint256","nodeType":"ElementaryTypeName","src":"1716:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1693:43:13"},"returnParameters":{"id":2936,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2935,"mutability":"mutable","name":"result","nameLocation":"1768:6:13","nodeType":"VariableDeclaration","scope":3048,"src":"1760:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2934,"name":"uint256","nodeType":"ElementaryTypeName","src":"1760:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1759:16:13"},"scope":3700,"src":"1678:4213:13","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3091,"nodeType":"Block","src":"6133:189:13","statements":[{"assignments":[3064],"declarations":[{"constant":false,"id":3064,"mutability":"mutable","name":"result","nameLocation":"6151:6:13","nodeType":"VariableDeclaration","scope":3091,"src":"6143:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3063,"name":"uint256","nodeType":"ElementaryTypeName","src":"6143:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3070,"initialValue":{"arguments":[{"id":3066,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3051,"src":"6167:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3067,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3053,"src":"6170:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3068,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3055,"src":"6173:11:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3065,"name":"mulDiv","nodeType":"Identifier","overloadedDeclarations":[3048,3092],"referencedDeclaration":3048,"src":"6160:6:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":3069,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6160:25:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6143:42:13"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":3082,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_enum$_Rounding_$2841","typeString":"enum MathUpgradeable.Rounding"},"id":3074,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3071,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3058,"src":"6199:8:13","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2841","typeString":"enum MathUpgradeable.Rounding"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":3072,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2841,"src":"6211:8:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$2841_$","typeString":"type(enum MathUpgradeable.Rounding)"}},"id":3073,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6220:2:13","memberName":"Up","nodeType":"MemberAccess","referencedDeclaration":2839,"src":"6211:11:13","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2841","typeString":"enum MathUpgradeable.Rounding"}},"src":"6199:23:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3081,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":3076,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3051,"src":"6233:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3077,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3053,"src":"6236:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3078,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3055,"src":"6239:11:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3075,"name":"mulmod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967280,"src":"6226:6:13","typeDescriptions":{"typeIdentifier":"t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":3079,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6226:25:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3080,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6254:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6226:29:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6199:56:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3088,"nodeType":"IfStatement","src":"6195:98:13","trueBody":{"id":3087,"nodeType":"Block","src":"6257:36:13","statements":[{"expression":{"id":3085,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3083,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3064,"src":"6271:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":3084,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6281:1:13","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"6271:11:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3086,"nodeType":"ExpressionStatement","src":"6271:11:13"}]}},{"expression":{"id":3089,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3064,"src":"6309:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3062,"id":3090,"nodeType":"Return","src":"6302:13:13"}]},"documentation":{"id":3049,"nodeType":"StructuredDocumentation","src":"5897:121:13","text":" @notice Calculates x * y / denominator with full precision, following the selected rounding direction."},"id":3092,"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"6032:6:13","nodeType":"FunctionDefinition","parameters":{"id":3059,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3051,"mutability":"mutable","name":"x","nameLocation":"6047:1:13","nodeType":"VariableDeclaration","scope":3092,"src":"6039:9:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3050,"name":"uint256","nodeType":"ElementaryTypeName","src":"6039:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3053,"mutability":"mutable","name":"y","nameLocation":"6058:1:13","nodeType":"VariableDeclaration","scope":3092,"src":"6050:9:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3052,"name":"uint256","nodeType":"ElementaryTypeName","src":"6050:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3055,"mutability":"mutable","name":"denominator","nameLocation":"6069:11:13","nodeType":"VariableDeclaration","scope":3092,"src":"6061:19:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3054,"name":"uint256","nodeType":"ElementaryTypeName","src":"6061:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3058,"mutability":"mutable","name":"rounding","nameLocation":"6091:8:13","nodeType":"VariableDeclaration","scope":3092,"src":"6082:17:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2841","typeString":"enum MathUpgradeable.Rounding"},"typeName":{"id":3057,"nodeType":"UserDefinedTypeName","pathNode":{"id":3056,"name":"Rounding","nameLocations":["6082:8:13"],"nodeType":"IdentifierPath","referencedDeclaration":2841,"src":"6082:8:13"},"referencedDeclaration":2841,"src":"6082:8:13","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2841","typeString":"enum MathUpgradeable.Rounding"}},"visibility":"internal"}],"src":"6038:62:13"},"returnParameters":{"id":3062,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3061,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3092,"src":"6124:7:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3060,"name":"uint256","nodeType":"ElementaryTypeName","src":"6124:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6123:9:13"},"scope":3700,"src":"6023:299:13","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3203,"nodeType":"Block","src":"6598:1585:13","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3102,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3100,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3095,"src":"6612:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":3101,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6617:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6612:6:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3106,"nodeType":"IfStatement","src":"6608:45:13","trueBody":{"id":3105,"nodeType":"Block","src":"6620:33:13","statements":[{"expression":{"hexValue":"30","id":3103,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6641:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":3099,"id":3104,"nodeType":"Return","src":"6634:8:13"}]}},{"assignments":[3108],"declarations":[{"constant":false,"id":3108,"mutability":"mutable","name":"result","nameLocation":"7340:6:13","nodeType":"VariableDeclaration","scope":3203,"src":"7332:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3107,"name":"uint256","nodeType":"ElementaryTypeName","src":"7332:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3117,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3116,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":3109,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7349:1:13","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3114,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":3111,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3095,"src":"7360:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3110,"name":"log2","nodeType":"Identifier","overloadedDeclarations":[3372,3408],"referencedDeclaration":3372,"src":"7355:4:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":3112,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7355:7:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":3113,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7366:1:13","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7355:12:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3115,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7354:14:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7349:19:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7332:36:13"},{"id":3202,"nodeType":"UncheckedBlock","src":"7769:408:13","statements":[{"expression":{"id":3127,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3118,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3108,"src":"7793:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3126,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3123,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3119,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3108,"src":"7803:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3122,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3120,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3095,"src":"7812:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":3121,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3108,"src":"7816:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7812:10:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7803:19:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3124,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7802:21:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":3125,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7827:1:13","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7802:26:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7793:35:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3128,"nodeType":"ExpressionStatement","src":"7793:35:13"},{"expression":{"id":3138,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3129,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3108,"src":"7842:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3137,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3134,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3130,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3108,"src":"7852:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3133,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3131,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3095,"src":"7861:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":3132,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3108,"src":"7865:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7861:10:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7852:19:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3135,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7851:21:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":3136,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7876:1:13","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7851:26:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7842:35:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3139,"nodeType":"ExpressionStatement","src":"7842:35:13"},{"expression":{"id":3149,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3140,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3108,"src":"7891:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3148,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3145,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3141,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3108,"src":"7901:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3144,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3142,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3095,"src":"7910:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":3143,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3108,"src":"7914:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7910:10:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7901:19:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3146,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7900:21:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":3147,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7925:1:13","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7900:26:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7891:35:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3150,"nodeType":"ExpressionStatement","src":"7891:35:13"},{"expression":{"id":3160,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3151,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3108,"src":"7940:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3159,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3156,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3152,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3108,"src":"7950:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3155,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3153,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3095,"src":"7959:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":3154,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3108,"src":"7963:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7959:10:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7950:19:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3157,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7949:21:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":3158,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7974:1:13","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7949:26:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7940:35:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3161,"nodeType":"ExpressionStatement","src":"7940:35:13"},{"expression":{"id":3171,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3162,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3108,"src":"7989:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3170,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3167,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3163,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3108,"src":"7999:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3166,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3164,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3095,"src":"8008:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":3165,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3108,"src":"8012:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8008:10:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7999:19:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3168,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7998:21:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":3169,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8023:1:13","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7998:26:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7989:35:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3172,"nodeType":"ExpressionStatement","src":"7989:35:13"},{"expression":{"id":3182,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3173,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3108,"src":"8038:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3181,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3178,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3174,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3108,"src":"8048:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3177,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3175,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3095,"src":"8057:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":3176,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3108,"src":"8061:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8057:10:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8048:19:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3179,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8047:21:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":3180,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8072:1:13","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"8047:26:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8038:35:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3183,"nodeType":"ExpressionStatement","src":"8038:35:13"},{"expression":{"id":3193,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3184,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3108,"src":"8087:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3189,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3185,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3108,"src":"8097:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3186,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3095,"src":"8106:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":3187,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3108,"src":"8110:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8106:10:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8097:19:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3190,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8096:21:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":3191,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8121:1:13","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"8096:26:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8087:35:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3194,"nodeType":"ExpressionStatement","src":"8087:35:13"},{"expression":{"arguments":[{"id":3196,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3108,"src":"8147:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3199,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3197,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3095,"src":"8155:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":3198,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3108,"src":"8159:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8155:10:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3195,"name":"min","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2877,"src":"8143:3:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":3200,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8143:23:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3099,"id":3201,"nodeType":"Return","src":"8136:30:13"}]}]},"documentation":{"id":3093,"nodeType":"StructuredDocumentation","src":"6328:208:13","text":" @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down.\n Inspired by Henry S. Warren, Jr.'s \"Hacker's Delight\" (Chapter 11)."},"id":3204,"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"6550:4:13","nodeType":"FunctionDefinition","parameters":{"id":3096,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3095,"mutability":"mutable","name":"a","nameLocation":"6563:1:13","nodeType":"VariableDeclaration","scope":3204,"src":"6555:9:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3094,"name":"uint256","nodeType":"ElementaryTypeName","src":"6555:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6554:11:13"},"returnParameters":{"id":3099,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3098,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3204,"src":"6589:7:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3097,"name":"uint256","nodeType":"ElementaryTypeName","src":"6589:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6588:9:13"},"scope":3700,"src":"6541:1642:13","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3239,"nodeType":"Block","src":"8359:161:13","statements":[{"id":3238,"nodeType":"UncheckedBlock","src":"8369:145:13","statements":[{"assignments":[3216],"declarations":[{"constant":false,"id":3216,"mutability":"mutable","name":"result","nameLocation":"8401:6:13","nodeType":"VariableDeclaration","scope":3238,"src":"8393:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3215,"name":"uint256","nodeType":"ElementaryTypeName","src":"8393:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3220,"initialValue":{"arguments":[{"id":3218,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3207,"src":"8415:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3217,"name":"sqrt","nodeType":"Identifier","overloadedDeclarations":[3204,3240],"referencedDeclaration":3204,"src":"8410:4:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":3219,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8410:7:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8393:24:13"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3236,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3221,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3216,"src":"8438:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":3231,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_enum$_Rounding_$2841","typeString":"enum MathUpgradeable.Rounding"},"id":3225,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3222,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3210,"src":"8448:8:13","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2841","typeString":"enum MathUpgradeable.Rounding"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":3223,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2841,"src":"8460:8:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$2841_$","typeString":"type(enum MathUpgradeable.Rounding)"}},"id":3224,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8469:2:13","memberName":"Up","nodeType":"MemberAccess","referencedDeclaration":2839,"src":"8460:11:13","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2841","typeString":"enum MathUpgradeable.Rounding"}},"src":"8448:23:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3230,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3228,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3226,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3216,"src":"8475:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":3227,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3216,"src":"8484:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8475:15:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":3229,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3207,"src":"8493:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8475:19:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"8448:46:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":3233,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8501:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":3234,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"8448:54:13","trueExpression":{"hexValue":"31","id":3232,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8497:1:13","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":3235,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8447:56:13","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"8438:65:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3214,"id":3237,"nodeType":"Return","src":"8431:72:13"}]}]},"documentation":{"id":3205,"nodeType":"StructuredDocumentation","src":"8189:89:13","text":" @notice Calculates sqrt(a), following the selected rounding direction."},"id":3240,"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"8292:4:13","nodeType":"FunctionDefinition","parameters":{"id":3211,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3207,"mutability":"mutable","name":"a","nameLocation":"8305:1:13","nodeType":"VariableDeclaration","scope":3240,"src":"8297:9:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3206,"name":"uint256","nodeType":"ElementaryTypeName","src":"8297:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3210,"mutability":"mutable","name":"rounding","nameLocation":"8317:8:13","nodeType":"VariableDeclaration","scope":3240,"src":"8308:17:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2841","typeString":"enum MathUpgradeable.Rounding"},"typeName":{"id":3209,"nodeType":"UserDefinedTypeName","pathNode":{"id":3208,"name":"Rounding","nameLocations":["8308:8:13"],"nodeType":"IdentifierPath","referencedDeclaration":2841,"src":"8308:8:13"},"referencedDeclaration":2841,"src":"8308:8:13","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2841","typeString":"enum MathUpgradeable.Rounding"}},"visibility":"internal"}],"src":"8296:30:13"},"returnParameters":{"id":3214,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3213,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3240,"src":"8350:7:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3212,"name":"uint256","nodeType":"ElementaryTypeName","src":"8350:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8349:9:13"},"scope":3700,"src":"8283:237:13","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3371,"nodeType":"Block","src":"8705:922:13","statements":[{"assignments":[3249],"declarations":[{"constant":false,"id":3249,"mutability":"mutable","name":"result","nameLocation":"8723:6:13","nodeType":"VariableDeclaration","scope":3371,"src":"8715:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3248,"name":"uint256","nodeType":"ElementaryTypeName","src":"8715:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3251,"initialValue":{"hexValue":"30","id":3250,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8732:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"8715:18:13"},{"id":3368,"nodeType":"UncheckedBlock","src":"8743:855:13","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3256,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3254,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3252,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3243,"src":"8771:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":3253,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8780:3:13","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"8771:12:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3255,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8786:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8771:16:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3266,"nodeType":"IfStatement","src":"8767:99:13","trueBody":{"id":3265,"nodeType":"Block","src":"8789:77:13","statements":[{"expression":{"id":3259,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3257,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3243,"src":"8807:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"313238","id":3258,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8817:3:13","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"8807:13:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3260,"nodeType":"ExpressionStatement","src":"8807:13:13"},{"expression":{"id":3263,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3261,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3249,"src":"8838:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"313238","id":3262,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8848:3:13","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"8838:13:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3264,"nodeType":"ExpressionStatement","src":"8838:13:13"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3271,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3269,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3267,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3243,"src":"8883:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3634","id":3268,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8892:2:13","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"8883:11:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3270,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8897:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8883:15:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3281,"nodeType":"IfStatement","src":"8879:96:13","trueBody":{"id":3280,"nodeType":"Block","src":"8900:75:13","statements":[{"expression":{"id":3274,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3272,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3243,"src":"8918:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3634","id":3273,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8928:2:13","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"8918:12:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3275,"nodeType":"ExpressionStatement","src":"8918:12:13"},{"expression":{"id":3278,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3276,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3249,"src":"8948:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3634","id":3277,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8958:2:13","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"8948:12:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3279,"nodeType":"ExpressionStatement","src":"8948:12:13"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3286,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3284,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3282,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3243,"src":"8992:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3332","id":3283,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9001:2:13","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"8992:11:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3285,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9006:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8992:15:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3296,"nodeType":"IfStatement","src":"8988:96:13","trueBody":{"id":3295,"nodeType":"Block","src":"9009:75:13","statements":[{"expression":{"id":3289,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3287,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3243,"src":"9027:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3332","id":3288,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9037:2:13","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"9027:12:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3290,"nodeType":"ExpressionStatement","src":"9027:12:13"},{"expression":{"id":3293,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3291,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3249,"src":"9057:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":3292,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9067:2:13","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"9057:12:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3294,"nodeType":"ExpressionStatement","src":"9057:12:13"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3301,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3299,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3297,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3243,"src":"9101:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3136","id":3298,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9110:2:13","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"9101:11:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3300,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9115:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9101:15:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3311,"nodeType":"IfStatement","src":"9097:96:13","trueBody":{"id":3310,"nodeType":"Block","src":"9118:75:13","statements":[{"expression":{"id":3304,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3302,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3243,"src":"9136:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3136","id":3303,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9146:2:13","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"9136:12:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3305,"nodeType":"ExpressionStatement","src":"9136:12:13"},{"expression":{"id":3308,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3306,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3249,"src":"9166:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":3307,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9176:2:13","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"9166:12:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3309,"nodeType":"ExpressionStatement","src":"9166:12:13"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3316,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3314,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3312,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3243,"src":"9210:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":3313,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9219:1:13","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"9210:10:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3315,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9223:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9210:14:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3326,"nodeType":"IfStatement","src":"9206:93:13","trueBody":{"id":3325,"nodeType":"Block","src":"9226:73:13","statements":[{"expression":{"id":3319,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3317,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3243,"src":"9244:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"38","id":3318,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9254:1:13","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"9244:11:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3320,"nodeType":"ExpressionStatement","src":"9244:11:13"},{"expression":{"id":3323,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3321,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3249,"src":"9273:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":3322,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9283:1:13","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"9273:11:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3324,"nodeType":"ExpressionStatement","src":"9273:11:13"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3331,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3329,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3327,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3243,"src":"9316:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"34","id":3328,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9325:1:13","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"9316:10:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3330,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9329:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9316:14:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3341,"nodeType":"IfStatement","src":"9312:93:13","trueBody":{"id":3340,"nodeType":"Block","src":"9332:73:13","statements":[{"expression":{"id":3334,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3332,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3243,"src":"9350:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":3333,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9360:1:13","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"9350:11:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3335,"nodeType":"ExpressionStatement","src":"9350:11:13"},{"expression":{"id":3338,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3336,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3249,"src":"9379:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":3337,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9389:1:13","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"9379:11:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3339,"nodeType":"ExpressionStatement","src":"9379:11:13"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3346,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3344,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3342,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3243,"src":"9422:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"32","id":3343,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9431:1:13","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"9422:10:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3345,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9435:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9422:14:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3356,"nodeType":"IfStatement","src":"9418:93:13","trueBody":{"id":3355,"nodeType":"Block","src":"9438:73:13","statements":[{"expression":{"id":3349,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3347,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3243,"src":"9456:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"32","id":3348,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9466:1:13","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"9456:11:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3350,"nodeType":"ExpressionStatement","src":"9456:11:13"},{"expression":{"id":3353,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3351,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3249,"src":"9485:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":3352,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9495:1:13","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"9485:11:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3354,"nodeType":"ExpressionStatement","src":"9485:11:13"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3361,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3359,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3357,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3243,"src":"9528:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":3358,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9537:1:13","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9528:10:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3360,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9541:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9528:14:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3367,"nodeType":"IfStatement","src":"9524:64:13","trueBody":{"id":3366,"nodeType":"Block","src":"9544:44:13","statements":[{"expression":{"id":3364,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3362,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3249,"src":"9562:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":3363,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9572:1:13","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9562:11:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3365,"nodeType":"ExpressionStatement","src":"9562:11:13"}]}}]},{"expression":{"id":3369,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3249,"src":"9614:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3247,"id":3370,"nodeType":"Return","src":"9607:13:13"}]},"documentation":{"id":3241,"nodeType":"StructuredDocumentation","src":"8526:113:13","text":" @dev Return the log in base 2, rounded down, of a positive value.\n Returns 0 if given 0."},"id":3372,"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"8653:4:13","nodeType":"FunctionDefinition","parameters":{"id":3244,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3243,"mutability":"mutable","name":"value","nameLocation":"8666:5:13","nodeType":"VariableDeclaration","scope":3372,"src":"8658:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3242,"name":"uint256","nodeType":"ElementaryTypeName","src":"8658:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8657:15:13"},"returnParameters":{"id":3247,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3246,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3372,"src":"8696:7:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3245,"name":"uint256","nodeType":"ElementaryTypeName","src":"8696:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8695:9:13"},"scope":3700,"src":"8644:983:13","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3407,"nodeType":"Block","src":"9860:165:13","statements":[{"id":3406,"nodeType":"UncheckedBlock","src":"9870:149:13","statements":[{"assignments":[3384],"declarations":[{"constant":false,"id":3384,"mutability":"mutable","name":"result","nameLocation":"9902:6:13","nodeType":"VariableDeclaration","scope":3406,"src":"9894:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3383,"name":"uint256","nodeType":"ElementaryTypeName","src":"9894:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3388,"initialValue":{"arguments":[{"id":3386,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3375,"src":"9916:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3385,"name":"log2","nodeType":"Identifier","overloadedDeclarations":[3372,3408],"referencedDeclaration":3372,"src":"9911:4:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":3387,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9911:11:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9894:28:13"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3404,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3389,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3384,"src":"9943:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":3399,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_enum$_Rounding_$2841","typeString":"enum MathUpgradeable.Rounding"},"id":3393,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3390,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3378,"src":"9953:8:13","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2841","typeString":"enum MathUpgradeable.Rounding"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":3391,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2841,"src":"9965:8:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$2841_$","typeString":"type(enum MathUpgradeable.Rounding)"}},"id":3392,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9974:2:13","memberName":"Up","nodeType":"MemberAccess","referencedDeclaration":2839,"src":"9965:11:13","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2841","typeString":"enum MathUpgradeable.Rounding"}},"src":"9953:23:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3398,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3396,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":3394,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9980:1:13","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":3395,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3384,"src":"9985:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9980:11:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":3397,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3375,"src":"9994:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9980:19:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"9953:46:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":3401,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10006:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":3402,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"9953:54:13","trueExpression":{"hexValue":"31","id":3400,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10002:1:13","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":3403,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9952:56:13","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"9943:65:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3382,"id":3405,"nodeType":"Return","src":"9936:72:13"}]}]},"documentation":{"id":3373,"nodeType":"StructuredDocumentation","src":"9633:142:13","text":" @dev Return the log in base 2, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"id":3408,"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"9789:4:13","nodeType":"FunctionDefinition","parameters":{"id":3379,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3375,"mutability":"mutable","name":"value","nameLocation":"9802:5:13","nodeType":"VariableDeclaration","scope":3408,"src":"9794:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3374,"name":"uint256","nodeType":"ElementaryTypeName","src":"9794:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3378,"mutability":"mutable","name":"rounding","nameLocation":"9818:8:13","nodeType":"VariableDeclaration","scope":3408,"src":"9809:17:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2841","typeString":"enum MathUpgradeable.Rounding"},"typeName":{"id":3377,"nodeType":"UserDefinedTypeName","pathNode":{"id":3376,"name":"Rounding","nameLocations":["9809:8:13"],"nodeType":"IdentifierPath","referencedDeclaration":2841,"src":"9809:8:13"},"referencedDeclaration":2841,"src":"9809:8:13","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2841","typeString":"enum MathUpgradeable.Rounding"}},"visibility":"internal"}],"src":"9793:34:13"},"returnParameters":{"id":3382,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3381,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3408,"src":"9851:7:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3380,"name":"uint256","nodeType":"ElementaryTypeName","src":"9851:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9850:9:13"},"scope":3700,"src":"9780:245:13","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3536,"nodeType":"Block","src":"10212:854:13","statements":[{"assignments":[3417],"declarations":[{"constant":false,"id":3417,"mutability":"mutable","name":"result","nameLocation":"10230:6:13","nodeType":"VariableDeclaration","scope":3536,"src":"10222:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3416,"name":"uint256","nodeType":"ElementaryTypeName","src":"10222:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3419,"initialValue":{"hexValue":"30","id":3418,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10239:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"10222:18:13"},{"id":3533,"nodeType":"UncheckedBlock","src":"10250:787:13","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3424,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3420,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3411,"src":"10278:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"},"id":3423,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":3421,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10287:2:13","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":3422,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10293:2:13","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"10287:8:13","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"10278:17:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3436,"nodeType":"IfStatement","src":"10274:103:13","trueBody":{"id":3435,"nodeType":"Block","src":"10297:80:13","statements":[{"expression":{"id":3429,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3425,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3411,"src":"10315:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"},"id":3428,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":3426,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10324:2:13","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":3427,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10330:2:13","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"10324:8:13","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"10315:17:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3430,"nodeType":"ExpressionStatement","src":"10315:17:13"},{"expression":{"id":3433,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3431,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3417,"src":"10350:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3634","id":3432,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10360:2:13","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"10350:12:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3434,"nodeType":"ExpressionStatement","src":"10350:12:13"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3441,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3437,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3411,"src":"10394:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"},"id":3440,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":3438,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10403:2:13","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":3439,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10409:2:13","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"10403:8:13","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"10394:17:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3453,"nodeType":"IfStatement","src":"10390:103:13","trueBody":{"id":3452,"nodeType":"Block","src":"10413:80:13","statements":[{"expression":{"id":3446,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3442,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3411,"src":"10431:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"},"id":3445,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":3443,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10440:2:13","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":3444,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10446:2:13","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"10440:8:13","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"10431:17:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3447,"nodeType":"ExpressionStatement","src":"10431:17:13"},{"expression":{"id":3450,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3448,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3417,"src":"10466:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":3449,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10476:2:13","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"10466:12:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3451,"nodeType":"ExpressionStatement","src":"10466:12:13"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3458,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3454,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3411,"src":"10510:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":3457,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":3455,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10519:2:13","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":3456,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10525:2:13","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"10519:8:13","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"10510:17:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3470,"nodeType":"IfStatement","src":"10506:103:13","trueBody":{"id":3469,"nodeType":"Block","src":"10529:80:13","statements":[{"expression":{"id":3463,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3459,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3411,"src":"10547:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":3462,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":3460,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10556:2:13","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":3461,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10562:2:13","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"10556:8:13","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"10547:17:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3464,"nodeType":"ExpressionStatement","src":"10547:17:13"},{"expression":{"id":3467,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3465,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3417,"src":"10582:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":3466,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10592:2:13","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"10582:12:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3468,"nodeType":"ExpressionStatement","src":"10582:12:13"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3475,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3471,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3411,"src":"10626:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":3474,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":3472,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10635:2:13","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":3473,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10641:1:13","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"10635:7:13","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"10626:16:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3487,"nodeType":"IfStatement","src":"10622:100:13","trueBody":{"id":3486,"nodeType":"Block","src":"10644:78:13","statements":[{"expression":{"id":3480,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3476,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3411,"src":"10662:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":3479,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":3477,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10671:2:13","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":3478,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10677:1:13","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"10671:7:13","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"10662:16:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3481,"nodeType":"ExpressionStatement","src":"10662:16:13"},{"expression":{"id":3484,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3482,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3417,"src":"10696:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":3483,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10706:1:13","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"10696:11:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3485,"nodeType":"ExpressionStatement","src":"10696:11:13"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3492,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3488,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3411,"src":"10739:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":3491,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":3489,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10748:2:13","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":3490,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10754:1:13","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"10748:7:13","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"10739:16:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3504,"nodeType":"IfStatement","src":"10735:100:13","trueBody":{"id":3503,"nodeType":"Block","src":"10757:78:13","statements":[{"expression":{"id":3497,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3493,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3411,"src":"10775:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":3496,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":3494,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10784:2:13","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":3495,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10790:1:13","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"10784:7:13","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"10775:16:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3498,"nodeType":"ExpressionStatement","src":"10775:16:13"},{"expression":{"id":3501,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3499,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3417,"src":"10809:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":3500,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10819:1:13","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"10809:11:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3502,"nodeType":"ExpressionStatement","src":"10809:11:13"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3509,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3505,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3411,"src":"10852:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":3508,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":3506,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10861:2:13","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":3507,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10867:1:13","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"10861:7:13","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"10852:16:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3521,"nodeType":"IfStatement","src":"10848:100:13","trueBody":{"id":3520,"nodeType":"Block","src":"10870:78:13","statements":[{"expression":{"id":3514,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3510,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3411,"src":"10888:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":3513,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":3511,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10897:2:13","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":3512,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10903:1:13","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"10897:7:13","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"10888:16:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3515,"nodeType":"ExpressionStatement","src":"10888:16:13"},{"expression":{"id":3518,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3516,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3417,"src":"10922:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":3517,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10932:1:13","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"10922:11:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3519,"nodeType":"ExpressionStatement","src":"10922:11:13"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3526,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3522,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3411,"src":"10965:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"id":3525,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":3523,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10974:2:13","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"31","id":3524,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10980:1:13","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"10974:7:13","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"}},"src":"10965:16:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3532,"nodeType":"IfStatement","src":"10961:66:13","trueBody":{"id":3531,"nodeType":"Block","src":"10983:44:13","statements":[{"expression":{"id":3529,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3527,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3417,"src":"11001:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":3528,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11011:1:13","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"11001:11:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3530,"nodeType":"ExpressionStatement","src":"11001:11:13"}]}}]},{"expression":{"id":3534,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3417,"src":"11053:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3415,"id":3535,"nodeType":"Return","src":"11046:13:13"}]},"documentation":{"id":3409,"nodeType":"StructuredDocumentation","src":"10031:114:13","text":" @dev Return the log in base 10, rounded down, of a positive value.\n Returns 0 if given 0."},"id":3537,"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"10159:5:13","nodeType":"FunctionDefinition","parameters":{"id":3412,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3411,"mutability":"mutable","name":"value","nameLocation":"10173:5:13","nodeType":"VariableDeclaration","scope":3537,"src":"10165:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3410,"name":"uint256","nodeType":"ElementaryTypeName","src":"10165:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10164:15:13"},"returnParameters":{"id":3415,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3414,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3537,"src":"10203:7:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3413,"name":"uint256","nodeType":"ElementaryTypeName","src":"10203:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10202:9:13"},"scope":3700,"src":"10150:916:13","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3572,"nodeType":"Block","src":"11301:167:13","statements":[{"id":3571,"nodeType":"UncheckedBlock","src":"11311:151:13","statements":[{"assignments":[3549],"declarations":[{"constant":false,"id":3549,"mutability":"mutable","name":"result","nameLocation":"11343:6:13","nodeType":"VariableDeclaration","scope":3571,"src":"11335:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3548,"name":"uint256","nodeType":"ElementaryTypeName","src":"11335:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3553,"initialValue":{"arguments":[{"id":3551,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3540,"src":"11358:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3550,"name":"log10","nodeType":"Identifier","overloadedDeclarations":[3537,3573],"referencedDeclaration":3537,"src":"11352:5:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":3552,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11352:12:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"11335:29:13"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3569,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3554,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3549,"src":"11385:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":3564,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_enum$_Rounding_$2841","typeString":"enum MathUpgradeable.Rounding"},"id":3558,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3555,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3543,"src":"11395:8:13","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2841","typeString":"enum MathUpgradeable.Rounding"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":3556,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2841,"src":"11407:8:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$2841_$","typeString":"type(enum MathUpgradeable.Rounding)"}},"id":3557,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11416:2:13","memberName":"Up","nodeType":"MemberAccess","referencedDeclaration":2839,"src":"11407:11:13","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2841","typeString":"enum MathUpgradeable.Rounding"}},"src":"11395:23:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3563,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3561,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":3559,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11422:2:13","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"id":3560,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3549,"src":"11428:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11422:12:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":3562,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3540,"src":"11437:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11422:20:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"11395:47:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":3566,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11449:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":3567,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"11395:55:13","trueExpression":{"hexValue":"31","id":3565,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11445:1:13","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":3568,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11394:57:13","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"11385:66:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3547,"id":3570,"nodeType":"Return","src":"11378:73:13"}]}]},"documentation":{"id":3538,"nodeType":"StructuredDocumentation","src":"11072:143:13","text":" @dev Return the log in base 10, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"id":3573,"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"11229:5:13","nodeType":"FunctionDefinition","parameters":{"id":3544,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3540,"mutability":"mutable","name":"value","nameLocation":"11243:5:13","nodeType":"VariableDeclaration","scope":3573,"src":"11235:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3539,"name":"uint256","nodeType":"ElementaryTypeName","src":"11235:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3543,"mutability":"mutable","name":"rounding","nameLocation":"11259:8:13","nodeType":"VariableDeclaration","scope":3573,"src":"11250:17:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2841","typeString":"enum MathUpgradeable.Rounding"},"typeName":{"id":3542,"nodeType":"UserDefinedTypeName","pathNode":{"id":3541,"name":"Rounding","nameLocations":["11250:8:13"],"nodeType":"IdentifierPath","referencedDeclaration":2841,"src":"11250:8:13"},"referencedDeclaration":2841,"src":"11250:8:13","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2841","typeString":"enum MathUpgradeable.Rounding"}},"visibility":"internal"}],"src":"11234:34:13"},"returnParameters":{"id":3547,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3546,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3573,"src":"11292:7:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3545,"name":"uint256","nodeType":"ElementaryTypeName","src":"11292:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11291:9:13"},"scope":3700,"src":"11220:248:13","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3659,"nodeType":"Block","src":"11782:600:13","statements":[{"assignments":[3582],"declarations":[{"constant":false,"id":3582,"mutability":"mutable","name":"result","nameLocation":"11800:6:13","nodeType":"VariableDeclaration","scope":3659,"src":"11792:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3581,"name":"uint256","nodeType":"ElementaryTypeName","src":"11792:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3584,"initialValue":{"hexValue":"30","id":3583,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11809:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"11792:18:13"},{"id":3656,"nodeType":"UncheckedBlock","src":"11820:533:13","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3589,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3587,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3585,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3576,"src":"11848:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":3586,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11857:3:13","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"11848:12:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3588,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11863:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11848:16:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3599,"nodeType":"IfStatement","src":"11844:98:13","trueBody":{"id":3598,"nodeType":"Block","src":"11866:76:13","statements":[{"expression":{"id":3592,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3590,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3576,"src":"11884:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"313238","id":3591,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11894:3:13","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"11884:13:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3593,"nodeType":"ExpressionStatement","src":"11884:13:13"},{"expression":{"id":3596,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3594,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3582,"src":"11915:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":3595,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11925:2:13","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"11915:12:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3597,"nodeType":"ExpressionStatement","src":"11915:12:13"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3604,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3602,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3600,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3576,"src":"11959:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3634","id":3601,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11968:2:13","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"11959:11:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3603,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11973:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11959:15:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3614,"nodeType":"IfStatement","src":"11955:95:13","trueBody":{"id":3613,"nodeType":"Block","src":"11976:74:13","statements":[{"expression":{"id":3607,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3605,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3576,"src":"11994:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3634","id":3606,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12004:2:13","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"11994:12:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3608,"nodeType":"ExpressionStatement","src":"11994:12:13"},{"expression":{"id":3611,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3609,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3582,"src":"12024:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":3610,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12034:1:13","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"12024:11:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3612,"nodeType":"ExpressionStatement","src":"12024:11:13"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3619,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3617,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3615,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3576,"src":"12067:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3332","id":3616,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12076:2:13","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"12067:11:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3618,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12081:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12067:15:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3629,"nodeType":"IfStatement","src":"12063:95:13","trueBody":{"id":3628,"nodeType":"Block","src":"12084:74:13","statements":[{"expression":{"id":3622,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3620,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3576,"src":"12102:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3332","id":3621,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12112:2:13","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"12102:12:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3623,"nodeType":"ExpressionStatement","src":"12102:12:13"},{"expression":{"id":3626,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3624,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3582,"src":"12132:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":3625,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12142:1:13","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"12132:11:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3627,"nodeType":"ExpressionStatement","src":"12132:11:13"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3634,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3632,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3630,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3576,"src":"12175:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3136","id":3631,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12184:2:13","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"12175:11:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3633,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12189:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12175:15:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3644,"nodeType":"IfStatement","src":"12171:95:13","trueBody":{"id":3643,"nodeType":"Block","src":"12192:74:13","statements":[{"expression":{"id":3637,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3635,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3576,"src":"12210:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3136","id":3636,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12220:2:13","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"12210:12:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3638,"nodeType":"ExpressionStatement","src":"12210:12:13"},{"expression":{"id":3641,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3639,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3582,"src":"12240:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":3640,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12250:1:13","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"12240:11:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3642,"nodeType":"ExpressionStatement","src":"12240:11:13"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3649,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3647,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3645,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3576,"src":"12283:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":3646,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12292:1:13","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"12283:10:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3648,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12296:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12283:14:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3655,"nodeType":"IfStatement","src":"12279:64:13","trueBody":{"id":3654,"nodeType":"Block","src":"12299:44:13","statements":[{"expression":{"id":3652,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3650,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3582,"src":"12317:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":3651,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12327:1:13","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"12317:11:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3653,"nodeType":"ExpressionStatement","src":"12317:11:13"}]}}]},{"expression":{"id":3657,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3582,"src":"12369:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3580,"id":3658,"nodeType":"Return","src":"12362:13:13"}]},"documentation":{"id":3574,"nodeType":"StructuredDocumentation","src":"11474:240:13","text":" @dev Return the log in base 256, rounded down, of a positive value.\n Returns 0 if given 0.\n Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string."},"id":3660,"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"11728:6:13","nodeType":"FunctionDefinition","parameters":{"id":3577,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3576,"mutability":"mutable","name":"value","nameLocation":"11743:5:13","nodeType":"VariableDeclaration","scope":3660,"src":"11735:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3575,"name":"uint256","nodeType":"ElementaryTypeName","src":"11735:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11734:15:13"},"returnParameters":{"id":3580,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3579,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3660,"src":"11773:7:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3578,"name":"uint256","nodeType":"ElementaryTypeName","src":"11773:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11772:9:13"},"scope":3700,"src":"11719:663:13","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3698,"nodeType":"Block","src":"12619:174:13","statements":[{"id":3697,"nodeType":"UncheckedBlock","src":"12629:158:13","statements":[{"assignments":[3672],"declarations":[{"constant":false,"id":3672,"mutability":"mutable","name":"result","nameLocation":"12661:6:13","nodeType":"VariableDeclaration","scope":3697,"src":"12653:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3671,"name":"uint256","nodeType":"ElementaryTypeName","src":"12653:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3676,"initialValue":{"arguments":[{"id":3674,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3663,"src":"12677:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3673,"name":"log256","nodeType":"Identifier","overloadedDeclarations":[3660,3699],"referencedDeclaration":3660,"src":"12670:6:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":3675,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12670:13:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12653:30:13"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3695,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3677,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3672,"src":"12704:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":3690,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_enum$_Rounding_$2841","typeString":"enum MathUpgradeable.Rounding"},"id":3681,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3678,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3666,"src":"12714:8:13","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2841","typeString":"enum MathUpgradeable.Rounding"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":3679,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2841,"src":"12726:8:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$2841_$","typeString":"type(enum MathUpgradeable.Rounding)"}},"id":3680,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"12735:2:13","memberName":"Up","nodeType":"MemberAccess","referencedDeclaration":2839,"src":"12726:11:13","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2841","typeString":"enum MathUpgradeable.Rounding"}},"src":"12714:23:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3689,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3687,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":3682,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12741:1:13","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3685,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3683,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3672,"src":"12747:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"33","id":3684,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12757:1:13","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"12747:11:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3686,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12746:13:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12741:18:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":3688,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3663,"src":"12762:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12741:26:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"12714:53:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":3692,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12774:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":3693,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"12714:61:13","trueExpression":{"hexValue":"31","id":3691,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12770:1:13","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":3694,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12713:63:13","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"12704:72:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3670,"id":3696,"nodeType":"Return","src":"12697:79:13"}]}]},"documentation":{"id":3661,"nodeType":"StructuredDocumentation","src":"12388:144:13","text":" @dev Return the log in base 256, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"id":3699,"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"12546:6:13","nodeType":"FunctionDefinition","parameters":{"id":3667,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3663,"mutability":"mutable","name":"value","nameLocation":"12561:5:13","nodeType":"VariableDeclaration","scope":3699,"src":"12553:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3662,"name":"uint256","nodeType":"ElementaryTypeName","src":"12553:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3666,"mutability":"mutable","name":"rounding","nameLocation":"12577:8:13","nodeType":"VariableDeclaration","scope":3699,"src":"12568:17:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2841","typeString":"enum MathUpgradeable.Rounding"},"typeName":{"id":3665,"nodeType":"UserDefinedTypeName","pathNode":{"id":3664,"name":"Rounding","nameLocations":["12568:8:13"],"nodeType":"IdentifierPath","referencedDeclaration":2841,"src":"12568:8:13"},"referencedDeclaration":2841,"src":"12568:8:13","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2841","typeString":"enum MathUpgradeable.Rounding"}},"visibility":"internal"}],"src":"12552:34:13"},"returnParameters":{"id":3670,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3669,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3699,"src":"12610:7:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3668,"name":"uint256","nodeType":"ElementaryTypeName","src":"12610:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12609:9:13"},"scope":3700,"src":"12537:256:13","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":3701,"src":"202:12593:13","usedErrors":[]}],"src":"103:12693:13"},"id":13},"@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol","exportedSymbols":{"SafeCastUpgradeable":[5241]},"id":5242,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":3702,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"192:23:14"},{"abstract":false,"baseContracts":[],"canonicalName":"SafeCastUpgradeable","contractDependencies":[],"contractKind":"library","documentation":{"id":3703,"nodeType":"StructuredDocumentation","src":"217:709:14","text":" @dev Wrappers over Solidity's uintXX/intXX casting operators with added overflow\n checks.\n Downcasting from uint256/int256 in Solidity does not revert on overflow. This can\n easily result in undesired exploitation or bugs, since developers usually\n assume that overflows raise errors. `SafeCast` restores this intuition by\n reverting the transaction when such an operation overflows.\n Using this library instead of the unchecked operations eliminates an entire\n class of bugs, so it's recommended to use it always.\n Can be combined with {SafeMath} and {SignedSafeMath} to extend it to smaller types, by performing\n all math on `uint256` and `int256` and then downcasting."},"fullyImplemented":true,"id":5241,"linearizedBaseContracts":[5241],"name":"SafeCastUpgradeable","nameLocation":"935:19:14","nodeType":"ContractDefinition","nodes":[{"body":{"id":3727,"nodeType":"Block","src":"1350:126:14","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3718,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3712,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3706,"src":"1368:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":3715,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1382:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint248_$","typeString":"type(uint248)"},"typeName":{"id":3714,"name":"uint248","nodeType":"ElementaryTypeName","src":"1382:7:14","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint248_$","typeString":"type(uint248)"}],"id":3713,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"1377:4:14","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3716,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1377:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint248","typeString":"type(uint248)"}},"id":3717,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1391:3:14","memberName":"max","nodeType":"MemberAccess","src":"1377:17:14","typeDescriptions":{"typeIdentifier":"t_uint248","typeString":"uint248"}},"src":"1368:26:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e203234382062697473","id":3719,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1396:41:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_6ac19bba4607c9b45ff35f54fbc4ca64c29c7457109a16fa180ea77cdbda8593","typeString":"literal_string \"SafeCast: value doesn't fit in 248 bits\""},"value":"SafeCast: value doesn't fit in 248 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_6ac19bba4607c9b45ff35f54fbc4ca64c29c7457109a16fa180ea77cdbda8593","typeString":"literal_string \"SafeCast: value doesn't fit in 248 bits\""}],"id":3711,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"1360:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3720,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1360:78:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3721,"nodeType":"ExpressionStatement","src":"1360:78:14"},{"expression":{"arguments":[{"id":3724,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3706,"src":"1463:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3723,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1455:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint248_$","typeString":"type(uint248)"},"typeName":{"id":3722,"name":"uint248","nodeType":"ElementaryTypeName","src":"1455:7:14","typeDescriptions":{}}},"id":3725,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1455:14:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint248","typeString":"uint248"}},"functionReturnParameters":3710,"id":3726,"nodeType":"Return","src":"1448:21:14"}]},"documentation":{"id":3704,"nodeType":"StructuredDocumentation","src":"961:318:14","text":" @dev Returns the downcasted uint248 from uint256, reverting on\n overflow (when the input is greater than largest uint248).\n Counterpart to Solidity's `uint248` operator.\n Requirements:\n - input must fit into 248 bits\n _Available since v4.7._"},"id":3728,"implemented":true,"kind":"function","modifiers":[],"name":"toUint248","nameLocation":"1293:9:14","nodeType":"FunctionDefinition","parameters":{"id":3707,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3706,"mutability":"mutable","name":"value","nameLocation":"1311:5:14","nodeType":"VariableDeclaration","scope":3728,"src":"1303:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3705,"name":"uint256","nodeType":"ElementaryTypeName","src":"1303:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1302:15:14"},"returnParameters":{"id":3710,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3709,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3728,"src":"1341:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint248","typeString":"uint248"},"typeName":{"id":3708,"name":"uint248","nodeType":"ElementaryTypeName","src":"1341:7:14","typeDescriptions":{"typeIdentifier":"t_uint248","typeString":"uint248"}},"visibility":"internal"}],"src":"1340:9:14"},"scope":5241,"src":"1284:192:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3752,"nodeType":"Block","src":"1871:126:14","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3743,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3737,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3731,"src":"1889:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":3740,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1903:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint240_$","typeString":"type(uint240)"},"typeName":{"id":3739,"name":"uint240","nodeType":"ElementaryTypeName","src":"1903:7:14","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint240_$","typeString":"type(uint240)"}],"id":3738,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"1898:4:14","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3741,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1898:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint240","typeString":"type(uint240)"}},"id":3742,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1912:3:14","memberName":"max","nodeType":"MemberAccess","src":"1898:17:14","typeDescriptions":{"typeIdentifier":"t_uint240","typeString":"uint240"}},"src":"1889:26:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e203234302062697473","id":3744,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1917:41:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_375fa0f6cb9fb5845d214c630920cedf4424913ed6dc32c297d430efa3d61a87","typeString":"literal_string \"SafeCast: value doesn't fit in 240 bits\""},"value":"SafeCast: value doesn't fit in 240 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_375fa0f6cb9fb5845d214c630920cedf4424913ed6dc32c297d430efa3d61a87","typeString":"literal_string \"SafeCast: value doesn't fit in 240 bits\""}],"id":3736,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"1881:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3745,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1881:78:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3746,"nodeType":"ExpressionStatement","src":"1881:78:14"},{"expression":{"arguments":[{"id":3749,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3731,"src":"1984:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3748,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1976:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint240_$","typeString":"type(uint240)"},"typeName":{"id":3747,"name":"uint240","nodeType":"ElementaryTypeName","src":"1976:7:14","typeDescriptions":{}}},"id":3750,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1976:14:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint240","typeString":"uint240"}},"functionReturnParameters":3735,"id":3751,"nodeType":"Return","src":"1969:21:14"}]},"documentation":{"id":3729,"nodeType":"StructuredDocumentation","src":"1482:318:14","text":" @dev Returns the downcasted uint240 from uint256, reverting on\n overflow (when the input is greater than largest uint240).\n Counterpart to Solidity's `uint240` operator.\n Requirements:\n - input must fit into 240 bits\n _Available since v4.7._"},"id":3753,"implemented":true,"kind":"function","modifiers":[],"name":"toUint240","nameLocation":"1814:9:14","nodeType":"FunctionDefinition","parameters":{"id":3732,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3731,"mutability":"mutable","name":"value","nameLocation":"1832:5:14","nodeType":"VariableDeclaration","scope":3753,"src":"1824:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3730,"name":"uint256","nodeType":"ElementaryTypeName","src":"1824:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1823:15:14"},"returnParameters":{"id":3735,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3734,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3753,"src":"1862:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint240","typeString":"uint240"},"typeName":{"id":3733,"name":"uint240","nodeType":"ElementaryTypeName","src":"1862:7:14","typeDescriptions":{"typeIdentifier":"t_uint240","typeString":"uint240"}},"visibility":"internal"}],"src":"1861:9:14"},"scope":5241,"src":"1805:192:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3777,"nodeType":"Block","src":"2392:126:14","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3768,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3762,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3756,"src":"2410:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":3765,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2424:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint232_$","typeString":"type(uint232)"},"typeName":{"id":3764,"name":"uint232","nodeType":"ElementaryTypeName","src":"2424:7:14","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint232_$","typeString":"type(uint232)"}],"id":3763,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"2419:4:14","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3766,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2419:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint232","typeString":"type(uint232)"}},"id":3767,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2433:3:14","memberName":"max","nodeType":"MemberAccess","src":"2419:17:14","typeDescriptions":{"typeIdentifier":"t_uint232","typeString":"uint232"}},"src":"2410:26:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e203233322062697473","id":3769,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2438:41:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_5797fb2c4589bd6a92752ce0eacaac67341e37ab28c96c2284ab897e7ac77957","typeString":"literal_string \"SafeCast: value doesn't fit in 232 bits\""},"value":"SafeCast: value doesn't fit in 232 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5797fb2c4589bd6a92752ce0eacaac67341e37ab28c96c2284ab897e7ac77957","typeString":"literal_string \"SafeCast: value doesn't fit in 232 bits\""}],"id":3761,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"2402:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3770,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2402:78:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3771,"nodeType":"ExpressionStatement","src":"2402:78:14"},{"expression":{"arguments":[{"id":3774,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3756,"src":"2505:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3773,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2497:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint232_$","typeString":"type(uint232)"},"typeName":{"id":3772,"name":"uint232","nodeType":"ElementaryTypeName","src":"2497:7:14","typeDescriptions":{}}},"id":3775,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2497:14:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint232","typeString":"uint232"}},"functionReturnParameters":3760,"id":3776,"nodeType":"Return","src":"2490:21:14"}]},"documentation":{"id":3754,"nodeType":"StructuredDocumentation","src":"2003:318:14","text":" @dev Returns the downcasted uint232 from uint256, reverting on\n overflow (when the input is greater than largest uint232).\n Counterpart to Solidity's `uint232` operator.\n Requirements:\n - input must fit into 232 bits\n _Available since v4.7._"},"id":3778,"implemented":true,"kind":"function","modifiers":[],"name":"toUint232","nameLocation":"2335:9:14","nodeType":"FunctionDefinition","parameters":{"id":3757,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3756,"mutability":"mutable","name":"value","nameLocation":"2353:5:14","nodeType":"VariableDeclaration","scope":3778,"src":"2345:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3755,"name":"uint256","nodeType":"ElementaryTypeName","src":"2345:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2344:15:14"},"returnParameters":{"id":3760,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3759,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3778,"src":"2383:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint232","typeString":"uint232"},"typeName":{"id":3758,"name":"uint232","nodeType":"ElementaryTypeName","src":"2383:7:14","typeDescriptions":{"typeIdentifier":"t_uint232","typeString":"uint232"}},"visibility":"internal"}],"src":"2382:9:14"},"scope":5241,"src":"2326:192:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3802,"nodeType":"Block","src":"2913:126:14","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3793,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3787,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3781,"src":"2931:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":3790,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2945:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint224_$","typeString":"type(uint224)"},"typeName":{"id":3789,"name":"uint224","nodeType":"ElementaryTypeName","src":"2945:7:14","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint224_$","typeString":"type(uint224)"}],"id":3788,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"2940:4:14","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3791,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2940:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint224","typeString":"type(uint224)"}},"id":3792,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2954:3:14","memberName":"max","nodeType":"MemberAccess","src":"2940:17:14","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"src":"2931:26:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e203232342062697473","id":3794,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2959:41:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_9d2acf551b2466898443b9bc3a403a4d86037386bc5a8960c1bbb0f204e69b79","typeString":"literal_string \"SafeCast: value doesn't fit in 224 bits\""},"value":"SafeCast: value doesn't fit in 224 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9d2acf551b2466898443b9bc3a403a4d86037386bc5a8960c1bbb0f204e69b79","typeString":"literal_string \"SafeCast: value doesn't fit in 224 bits\""}],"id":3786,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"2923:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3795,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2923:78:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3796,"nodeType":"ExpressionStatement","src":"2923:78:14"},{"expression":{"arguments":[{"id":3799,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3781,"src":"3026:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3798,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3018:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint224_$","typeString":"type(uint224)"},"typeName":{"id":3797,"name":"uint224","nodeType":"ElementaryTypeName","src":"3018:7:14","typeDescriptions":{}}},"id":3800,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3018:14:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"functionReturnParameters":3785,"id":3801,"nodeType":"Return","src":"3011:21:14"}]},"documentation":{"id":3779,"nodeType":"StructuredDocumentation","src":"2524:318:14","text":" @dev Returns the downcasted uint224 from uint256, reverting on\n overflow (when the input is greater than largest uint224).\n Counterpart to Solidity's `uint224` operator.\n Requirements:\n - input must fit into 224 bits\n _Available since v4.2._"},"id":3803,"implemented":true,"kind":"function","modifiers":[],"name":"toUint224","nameLocation":"2856:9:14","nodeType":"FunctionDefinition","parameters":{"id":3782,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3781,"mutability":"mutable","name":"value","nameLocation":"2874:5:14","nodeType":"VariableDeclaration","scope":3803,"src":"2866:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3780,"name":"uint256","nodeType":"ElementaryTypeName","src":"2866:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2865:15:14"},"returnParameters":{"id":3785,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3784,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3803,"src":"2904:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"},"typeName":{"id":3783,"name":"uint224","nodeType":"ElementaryTypeName","src":"2904:7:14","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"visibility":"internal"}],"src":"2903:9:14"},"scope":5241,"src":"2847:192:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3827,"nodeType":"Block","src":"3434:126:14","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3818,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3812,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3806,"src":"3452:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":3815,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3466:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint216_$","typeString":"type(uint216)"},"typeName":{"id":3814,"name":"uint216","nodeType":"ElementaryTypeName","src":"3466:7:14","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint216_$","typeString":"type(uint216)"}],"id":3813,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"3461:4:14","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3816,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3461:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint216","typeString":"type(uint216)"}},"id":3817,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3475:3:14","memberName":"max","nodeType":"MemberAccess","src":"3461:17:14","typeDescriptions":{"typeIdentifier":"t_uint216","typeString":"uint216"}},"src":"3452:26:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e203231362062697473","id":3819,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3480:41:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_8966adc0aad8dc91b207c69c3eb4937e498af8cc706cfe7edd55f3a6ea53488d","typeString":"literal_string \"SafeCast: value doesn't fit in 216 bits\""},"value":"SafeCast: value doesn't fit in 216 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8966adc0aad8dc91b207c69c3eb4937e498af8cc706cfe7edd55f3a6ea53488d","typeString":"literal_string \"SafeCast: value doesn't fit in 216 bits\""}],"id":3811,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"3444:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3820,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3444:78:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3821,"nodeType":"ExpressionStatement","src":"3444:78:14"},{"expression":{"arguments":[{"id":3824,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3806,"src":"3547:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3823,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3539:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint216_$","typeString":"type(uint216)"},"typeName":{"id":3822,"name":"uint216","nodeType":"ElementaryTypeName","src":"3539:7:14","typeDescriptions":{}}},"id":3825,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3539:14:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint216","typeString":"uint216"}},"functionReturnParameters":3810,"id":3826,"nodeType":"Return","src":"3532:21:14"}]},"documentation":{"id":3804,"nodeType":"StructuredDocumentation","src":"3045:318:14","text":" @dev Returns the downcasted uint216 from uint256, reverting on\n overflow (when the input is greater than largest uint216).\n Counterpart to Solidity's `uint216` operator.\n Requirements:\n - input must fit into 216 bits\n _Available since v4.7._"},"id":3828,"implemented":true,"kind":"function","modifiers":[],"name":"toUint216","nameLocation":"3377:9:14","nodeType":"FunctionDefinition","parameters":{"id":3807,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3806,"mutability":"mutable","name":"value","nameLocation":"3395:5:14","nodeType":"VariableDeclaration","scope":3828,"src":"3387:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3805,"name":"uint256","nodeType":"ElementaryTypeName","src":"3387:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3386:15:14"},"returnParameters":{"id":3810,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3809,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3828,"src":"3425:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint216","typeString":"uint216"},"typeName":{"id":3808,"name":"uint216","nodeType":"ElementaryTypeName","src":"3425:7:14","typeDescriptions":{"typeIdentifier":"t_uint216","typeString":"uint216"}},"visibility":"internal"}],"src":"3424:9:14"},"scope":5241,"src":"3368:192:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3852,"nodeType":"Block","src":"3955:126:14","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3843,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3837,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3831,"src":"3973:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":3840,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3987:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint208_$","typeString":"type(uint208)"},"typeName":{"id":3839,"name":"uint208","nodeType":"ElementaryTypeName","src":"3987:7:14","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint208_$","typeString":"type(uint208)"}],"id":3838,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"3982:4:14","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3841,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3982:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint208","typeString":"type(uint208)"}},"id":3842,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3996:3:14","memberName":"max","nodeType":"MemberAccess","src":"3982:17:14","typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"}},"src":"3973:26:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e203230382062697473","id":3844,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4001:41:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_43d81217fa633fa1c6e88855de94fb990f5831ac266b0a90afa660e986ab5e23","typeString":"literal_string \"SafeCast: value doesn't fit in 208 bits\""},"value":"SafeCast: value doesn't fit in 208 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_43d81217fa633fa1c6e88855de94fb990f5831ac266b0a90afa660e986ab5e23","typeString":"literal_string \"SafeCast: value doesn't fit in 208 bits\""}],"id":3836,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"3965:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3845,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3965:78:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3846,"nodeType":"ExpressionStatement","src":"3965:78:14"},{"expression":{"arguments":[{"id":3849,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3831,"src":"4068:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3848,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4060:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint208_$","typeString":"type(uint208)"},"typeName":{"id":3847,"name":"uint208","nodeType":"ElementaryTypeName","src":"4060:7:14","typeDescriptions":{}}},"id":3850,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4060:14:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"}},"functionReturnParameters":3835,"id":3851,"nodeType":"Return","src":"4053:21:14"}]},"documentation":{"id":3829,"nodeType":"StructuredDocumentation","src":"3566:318:14","text":" @dev Returns the downcasted uint208 from uint256, reverting on\n overflow (when the input is greater than largest uint208).\n Counterpart to Solidity's `uint208` operator.\n Requirements:\n - input must fit into 208 bits\n _Available since v4.7._"},"id":3853,"implemented":true,"kind":"function","modifiers":[],"name":"toUint208","nameLocation":"3898:9:14","nodeType":"FunctionDefinition","parameters":{"id":3832,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3831,"mutability":"mutable","name":"value","nameLocation":"3916:5:14","nodeType":"VariableDeclaration","scope":3853,"src":"3908:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3830,"name":"uint256","nodeType":"ElementaryTypeName","src":"3908:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3907:15:14"},"returnParameters":{"id":3835,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3834,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3853,"src":"3946:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"},"typeName":{"id":3833,"name":"uint208","nodeType":"ElementaryTypeName","src":"3946:7:14","typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"}},"visibility":"internal"}],"src":"3945:9:14"},"scope":5241,"src":"3889:192:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3877,"nodeType":"Block","src":"4476:126:14","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3868,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3862,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3856,"src":"4494:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":3865,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4508:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint200_$","typeString":"type(uint200)"},"typeName":{"id":3864,"name":"uint200","nodeType":"ElementaryTypeName","src":"4508:7:14","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint200_$","typeString":"type(uint200)"}],"id":3863,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"4503:4:14","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3866,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4503:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint200","typeString":"type(uint200)"}},"id":3867,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4517:3:14","memberName":"max","nodeType":"MemberAccess","src":"4503:17:14","typeDescriptions":{"typeIdentifier":"t_uint200","typeString":"uint200"}},"src":"4494:26:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e203230302062697473","id":3869,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4522:41:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_df8130f294fe2698967ea9ead82c4da9454490567d976d00551e0174e655314c","typeString":"literal_string \"SafeCast: value doesn't fit in 200 bits\""},"value":"SafeCast: value doesn't fit in 200 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_df8130f294fe2698967ea9ead82c4da9454490567d976d00551e0174e655314c","typeString":"literal_string \"SafeCast: value doesn't fit in 200 bits\""}],"id":3861,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"4486:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3870,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4486:78:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3871,"nodeType":"ExpressionStatement","src":"4486:78:14"},{"expression":{"arguments":[{"id":3874,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3856,"src":"4589:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3873,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4581:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint200_$","typeString":"type(uint200)"},"typeName":{"id":3872,"name":"uint200","nodeType":"ElementaryTypeName","src":"4581:7:14","typeDescriptions":{}}},"id":3875,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4581:14:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint200","typeString":"uint200"}},"functionReturnParameters":3860,"id":3876,"nodeType":"Return","src":"4574:21:14"}]},"documentation":{"id":3854,"nodeType":"StructuredDocumentation","src":"4087:318:14","text":" @dev Returns the downcasted uint200 from uint256, reverting on\n overflow (when the input is greater than largest uint200).\n Counterpart to Solidity's `uint200` operator.\n Requirements:\n - input must fit into 200 bits\n _Available since v4.7._"},"id":3878,"implemented":true,"kind":"function","modifiers":[],"name":"toUint200","nameLocation":"4419:9:14","nodeType":"FunctionDefinition","parameters":{"id":3857,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3856,"mutability":"mutable","name":"value","nameLocation":"4437:5:14","nodeType":"VariableDeclaration","scope":3878,"src":"4429:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3855,"name":"uint256","nodeType":"ElementaryTypeName","src":"4429:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4428:15:14"},"returnParameters":{"id":3860,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3859,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3878,"src":"4467:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint200","typeString":"uint200"},"typeName":{"id":3858,"name":"uint200","nodeType":"ElementaryTypeName","src":"4467:7:14","typeDescriptions":{"typeIdentifier":"t_uint200","typeString":"uint200"}},"visibility":"internal"}],"src":"4466:9:14"},"scope":5241,"src":"4410:192:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3902,"nodeType":"Block","src":"4997:126:14","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3893,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3887,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3881,"src":"5015:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":3890,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5029:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint192_$","typeString":"type(uint192)"},"typeName":{"id":3889,"name":"uint192","nodeType":"ElementaryTypeName","src":"5029:7:14","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint192_$","typeString":"type(uint192)"}],"id":3888,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"5024:4:14","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3891,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5024:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint192","typeString":"type(uint192)"}},"id":3892,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5038:3:14","memberName":"max","nodeType":"MemberAccess","src":"5024:17:14","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"src":"5015:26:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e203139322062697473","id":3894,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5043:41:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_112978800f12a1c4f1eab82789f7b6defd49dc1c17ba270a84ffc28392fb05ae","typeString":"literal_string \"SafeCast: value doesn't fit in 192 bits\""},"value":"SafeCast: value doesn't fit in 192 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_112978800f12a1c4f1eab82789f7b6defd49dc1c17ba270a84ffc28392fb05ae","typeString":"literal_string \"SafeCast: value doesn't fit in 192 bits\""}],"id":3886,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"5007:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3895,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5007:78:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3896,"nodeType":"ExpressionStatement","src":"5007:78:14"},{"expression":{"arguments":[{"id":3899,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3881,"src":"5110:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3898,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5102:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint192_$","typeString":"type(uint192)"},"typeName":{"id":3897,"name":"uint192","nodeType":"ElementaryTypeName","src":"5102:7:14","typeDescriptions":{}}},"id":3900,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5102:14:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"functionReturnParameters":3885,"id":3901,"nodeType":"Return","src":"5095:21:14"}]},"documentation":{"id":3879,"nodeType":"StructuredDocumentation","src":"4608:318:14","text":" @dev Returns the downcasted uint192 from uint256, reverting on\n overflow (when the input is greater than largest uint192).\n Counterpart to Solidity's `uint192` operator.\n Requirements:\n - input must fit into 192 bits\n _Available since v4.7._"},"id":3903,"implemented":true,"kind":"function","modifiers":[],"name":"toUint192","nameLocation":"4940:9:14","nodeType":"FunctionDefinition","parameters":{"id":3882,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3881,"mutability":"mutable","name":"value","nameLocation":"4958:5:14","nodeType":"VariableDeclaration","scope":3903,"src":"4950:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3880,"name":"uint256","nodeType":"ElementaryTypeName","src":"4950:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4949:15:14"},"returnParameters":{"id":3885,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3884,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3903,"src":"4988:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"},"typeName":{"id":3883,"name":"uint192","nodeType":"ElementaryTypeName","src":"4988:7:14","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"visibility":"internal"}],"src":"4987:9:14"},"scope":5241,"src":"4931:192:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3927,"nodeType":"Block","src":"5518:126:14","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3918,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3912,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3906,"src":"5536:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":3915,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5550:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint184_$","typeString":"type(uint184)"},"typeName":{"id":3914,"name":"uint184","nodeType":"ElementaryTypeName","src":"5550:7:14","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint184_$","typeString":"type(uint184)"}],"id":3913,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"5545:4:14","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3916,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5545:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint184","typeString":"type(uint184)"}},"id":3917,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5559:3:14","memberName":"max","nodeType":"MemberAccess","src":"5545:17:14","typeDescriptions":{"typeIdentifier":"t_uint184","typeString":"uint184"}},"src":"5536:26:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e203138342062697473","id":3919,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5564:41:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_86c53d89b1944d561ecfa42e859033241d1df6ea8d42a57ae02f79d45de4aa75","typeString":"literal_string \"SafeCast: value doesn't fit in 184 bits\""},"value":"SafeCast: value doesn't fit in 184 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_86c53d89b1944d561ecfa42e859033241d1df6ea8d42a57ae02f79d45de4aa75","typeString":"literal_string \"SafeCast: value doesn't fit in 184 bits\""}],"id":3911,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"5528:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3920,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5528:78:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3921,"nodeType":"ExpressionStatement","src":"5528:78:14"},{"expression":{"arguments":[{"id":3924,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3906,"src":"5631:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3923,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5623:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint184_$","typeString":"type(uint184)"},"typeName":{"id":3922,"name":"uint184","nodeType":"ElementaryTypeName","src":"5623:7:14","typeDescriptions":{}}},"id":3925,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5623:14:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint184","typeString":"uint184"}},"functionReturnParameters":3910,"id":3926,"nodeType":"Return","src":"5616:21:14"}]},"documentation":{"id":3904,"nodeType":"StructuredDocumentation","src":"5129:318:14","text":" @dev Returns the downcasted uint184 from uint256, reverting on\n overflow (when the input is greater than largest uint184).\n Counterpart to Solidity's `uint184` operator.\n Requirements:\n - input must fit into 184 bits\n _Available since v4.7._"},"id":3928,"implemented":true,"kind":"function","modifiers":[],"name":"toUint184","nameLocation":"5461:9:14","nodeType":"FunctionDefinition","parameters":{"id":3907,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3906,"mutability":"mutable","name":"value","nameLocation":"5479:5:14","nodeType":"VariableDeclaration","scope":3928,"src":"5471:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3905,"name":"uint256","nodeType":"ElementaryTypeName","src":"5471:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5470:15:14"},"returnParameters":{"id":3910,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3909,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3928,"src":"5509:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint184","typeString":"uint184"},"typeName":{"id":3908,"name":"uint184","nodeType":"ElementaryTypeName","src":"5509:7:14","typeDescriptions":{"typeIdentifier":"t_uint184","typeString":"uint184"}},"visibility":"internal"}],"src":"5508:9:14"},"scope":5241,"src":"5452:192:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3952,"nodeType":"Block","src":"6039:126:14","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3943,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3937,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3931,"src":"6057:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":3940,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6071:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint176_$","typeString":"type(uint176)"},"typeName":{"id":3939,"name":"uint176","nodeType":"ElementaryTypeName","src":"6071:7:14","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint176_$","typeString":"type(uint176)"}],"id":3938,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"6066:4:14","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3941,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6066:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint176","typeString":"type(uint176)"}},"id":3942,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6080:3:14","memberName":"max","nodeType":"MemberAccess","src":"6066:17:14","typeDescriptions":{"typeIdentifier":"t_uint176","typeString":"uint176"}},"src":"6057:26:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e203137362062697473","id":3944,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6085:41:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_4069e970f734339c7841e84a1b26f503bff22b76884c1168dc24e2e6af9b1e30","typeString":"literal_string \"SafeCast: value doesn't fit in 176 bits\""},"value":"SafeCast: value doesn't fit in 176 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_4069e970f734339c7841e84a1b26f503bff22b76884c1168dc24e2e6af9b1e30","typeString":"literal_string \"SafeCast: value doesn't fit in 176 bits\""}],"id":3936,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"6049:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3945,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6049:78:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3946,"nodeType":"ExpressionStatement","src":"6049:78:14"},{"expression":{"arguments":[{"id":3949,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3931,"src":"6152:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3948,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6144:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint176_$","typeString":"type(uint176)"},"typeName":{"id":3947,"name":"uint176","nodeType":"ElementaryTypeName","src":"6144:7:14","typeDescriptions":{}}},"id":3950,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6144:14:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint176","typeString":"uint176"}},"functionReturnParameters":3935,"id":3951,"nodeType":"Return","src":"6137:21:14"}]},"documentation":{"id":3929,"nodeType":"StructuredDocumentation","src":"5650:318:14","text":" @dev Returns the downcasted uint176 from uint256, reverting on\n overflow (when the input is greater than largest uint176).\n Counterpart to Solidity's `uint176` operator.\n Requirements:\n - input must fit into 176 bits\n _Available since v4.7._"},"id":3953,"implemented":true,"kind":"function","modifiers":[],"name":"toUint176","nameLocation":"5982:9:14","nodeType":"FunctionDefinition","parameters":{"id":3932,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3931,"mutability":"mutable","name":"value","nameLocation":"6000:5:14","nodeType":"VariableDeclaration","scope":3953,"src":"5992:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3930,"name":"uint256","nodeType":"ElementaryTypeName","src":"5992:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5991:15:14"},"returnParameters":{"id":3935,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3934,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3953,"src":"6030:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint176","typeString":"uint176"},"typeName":{"id":3933,"name":"uint176","nodeType":"ElementaryTypeName","src":"6030:7:14","typeDescriptions":{"typeIdentifier":"t_uint176","typeString":"uint176"}},"visibility":"internal"}],"src":"6029:9:14"},"scope":5241,"src":"5973:192:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3977,"nodeType":"Block","src":"6560:126:14","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3968,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3962,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3956,"src":"6578:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":3965,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6592:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint168_$","typeString":"type(uint168)"},"typeName":{"id":3964,"name":"uint168","nodeType":"ElementaryTypeName","src":"6592:7:14","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint168_$","typeString":"type(uint168)"}],"id":3963,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"6587:4:14","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3966,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6587:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint168","typeString":"type(uint168)"}},"id":3967,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6601:3:14","memberName":"max","nodeType":"MemberAccess","src":"6587:17:14","typeDescriptions":{"typeIdentifier":"t_uint168","typeString":"uint168"}},"src":"6578:26:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e203136382062697473","id":3969,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6606:41:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_67ef32a3cbe7b34392347d335b0a7ae95c74a34ca40e4efb58f6c9a3154e85a1","typeString":"literal_string \"SafeCast: value doesn't fit in 168 bits\""},"value":"SafeCast: value doesn't fit in 168 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_67ef32a3cbe7b34392347d335b0a7ae95c74a34ca40e4efb58f6c9a3154e85a1","typeString":"literal_string \"SafeCast: value doesn't fit in 168 bits\""}],"id":3961,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"6570:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3970,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6570:78:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3971,"nodeType":"ExpressionStatement","src":"6570:78:14"},{"expression":{"arguments":[{"id":3974,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3956,"src":"6673:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3973,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6665:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint168_$","typeString":"type(uint168)"},"typeName":{"id":3972,"name":"uint168","nodeType":"ElementaryTypeName","src":"6665:7:14","typeDescriptions":{}}},"id":3975,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6665:14:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint168","typeString":"uint168"}},"functionReturnParameters":3960,"id":3976,"nodeType":"Return","src":"6658:21:14"}]},"documentation":{"id":3954,"nodeType":"StructuredDocumentation","src":"6171:318:14","text":" @dev Returns the downcasted uint168 from uint256, reverting on\n overflow (when the input is greater than largest uint168).\n Counterpart to Solidity's `uint168` operator.\n Requirements:\n - input must fit into 168 bits\n _Available since v4.7._"},"id":3978,"implemented":true,"kind":"function","modifiers":[],"name":"toUint168","nameLocation":"6503:9:14","nodeType":"FunctionDefinition","parameters":{"id":3957,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3956,"mutability":"mutable","name":"value","nameLocation":"6521:5:14","nodeType":"VariableDeclaration","scope":3978,"src":"6513:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3955,"name":"uint256","nodeType":"ElementaryTypeName","src":"6513:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6512:15:14"},"returnParameters":{"id":3960,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3959,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3978,"src":"6551:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint168","typeString":"uint168"},"typeName":{"id":3958,"name":"uint168","nodeType":"ElementaryTypeName","src":"6551:7:14","typeDescriptions":{"typeIdentifier":"t_uint168","typeString":"uint168"}},"visibility":"internal"}],"src":"6550:9:14"},"scope":5241,"src":"6494:192:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4002,"nodeType":"Block","src":"7081:126:14","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3993,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3987,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3981,"src":"7099:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":3990,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7113:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":3989,"name":"uint160","nodeType":"ElementaryTypeName","src":"7113:7:14","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"}],"id":3988,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"7108:4:14","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3991,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7108:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint160","typeString":"type(uint160)"}},"id":3992,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7122:3:14","memberName":"max","nodeType":"MemberAccess","src":"7108:17:14","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"7099:26:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e203136302062697473","id":3994,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7127:41:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_976ecce9083debfe29d3a99b955facf24b8725f1b964d1a5bb4197ffcd60ab9d","typeString":"literal_string \"SafeCast: value doesn't fit in 160 bits\""},"value":"SafeCast: value doesn't fit in 160 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_976ecce9083debfe29d3a99b955facf24b8725f1b964d1a5bb4197ffcd60ab9d","typeString":"literal_string \"SafeCast: value doesn't fit in 160 bits\""}],"id":3986,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"7091:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3995,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7091:78:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3996,"nodeType":"ExpressionStatement","src":"7091:78:14"},{"expression":{"arguments":[{"id":3999,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3981,"src":"7194:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3998,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7186:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":3997,"name":"uint160","nodeType":"ElementaryTypeName","src":"7186:7:14","typeDescriptions":{}}},"id":4000,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7186:14:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"functionReturnParameters":3985,"id":4001,"nodeType":"Return","src":"7179:21:14"}]},"documentation":{"id":3979,"nodeType":"StructuredDocumentation","src":"6692:318:14","text":" @dev Returns the downcasted uint160 from uint256, reverting on\n overflow (when the input is greater than largest uint160).\n Counterpart to Solidity's `uint160` operator.\n Requirements:\n - input must fit into 160 bits\n _Available since v4.7._"},"id":4003,"implemented":true,"kind":"function","modifiers":[],"name":"toUint160","nameLocation":"7024:9:14","nodeType":"FunctionDefinition","parameters":{"id":3982,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3981,"mutability":"mutable","name":"value","nameLocation":"7042:5:14","nodeType":"VariableDeclaration","scope":4003,"src":"7034:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3980,"name":"uint256","nodeType":"ElementaryTypeName","src":"7034:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7033:15:14"},"returnParameters":{"id":3985,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3984,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4003,"src":"7072:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":3983,"name":"uint160","nodeType":"ElementaryTypeName","src":"7072:7:14","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"7071:9:14"},"scope":5241,"src":"7015:192:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4027,"nodeType":"Block","src":"7602:126:14","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4018,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4012,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4006,"src":"7620:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":4015,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7634:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint152_$","typeString":"type(uint152)"},"typeName":{"id":4014,"name":"uint152","nodeType":"ElementaryTypeName","src":"7634:7:14","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint152_$","typeString":"type(uint152)"}],"id":4013,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"7629:4:14","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":4016,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7629:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint152","typeString":"type(uint152)"}},"id":4017,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7643:3:14","memberName":"max","nodeType":"MemberAccess","src":"7629:17:14","typeDescriptions":{"typeIdentifier":"t_uint152","typeString":"uint152"}},"src":"7620:26:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e203135322062697473","id":4019,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7648:41:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_211cad43a2caf5f01e34af51190b8a7b6f3d9c195bd25586ea12242191b97831","typeString":"literal_string \"SafeCast: value doesn't fit in 152 bits\""},"value":"SafeCast: value doesn't fit in 152 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_211cad43a2caf5f01e34af51190b8a7b6f3d9c195bd25586ea12242191b97831","typeString":"literal_string \"SafeCast: value doesn't fit in 152 bits\""}],"id":4011,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"7612:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4020,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7612:78:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4021,"nodeType":"ExpressionStatement","src":"7612:78:14"},{"expression":{"arguments":[{"id":4024,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4006,"src":"7715:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4023,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7707:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint152_$","typeString":"type(uint152)"},"typeName":{"id":4022,"name":"uint152","nodeType":"ElementaryTypeName","src":"7707:7:14","typeDescriptions":{}}},"id":4025,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7707:14:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint152","typeString":"uint152"}},"functionReturnParameters":4010,"id":4026,"nodeType":"Return","src":"7700:21:14"}]},"documentation":{"id":4004,"nodeType":"StructuredDocumentation","src":"7213:318:14","text":" @dev Returns the downcasted uint152 from uint256, reverting on\n overflow (when the input is greater than largest uint152).\n Counterpart to Solidity's `uint152` operator.\n Requirements:\n - input must fit into 152 bits\n _Available since v4.7._"},"id":4028,"implemented":true,"kind":"function","modifiers":[],"name":"toUint152","nameLocation":"7545:9:14","nodeType":"FunctionDefinition","parameters":{"id":4007,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4006,"mutability":"mutable","name":"value","nameLocation":"7563:5:14","nodeType":"VariableDeclaration","scope":4028,"src":"7555:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4005,"name":"uint256","nodeType":"ElementaryTypeName","src":"7555:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7554:15:14"},"returnParameters":{"id":4010,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4009,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4028,"src":"7593:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint152","typeString":"uint152"},"typeName":{"id":4008,"name":"uint152","nodeType":"ElementaryTypeName","src":"7593:7:14","typeDescriptions":{"typeIdentifier":"t_uint152","typeString":"uint152"}},"visibility":"internal"}],"src":"7592:9:14"},"scope":5241,"src":"7536:192:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4052,"nodeType":"Block","src":"8123:126:14","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4043,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4037,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4031,"src":"8141:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":4040,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8155:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint144_$","typeString":"type(uint144)"},"typeName":{"id":4039,"name":"uint144","nodeType":"ElementaryTypeName","src":"8155:7:14","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint144_$","typeString":"type(uint144)"}],"id":4038,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"8150:4:14","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":4041,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8150:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint144","typeString":"type(uint144)"}},"id":4042,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8164:3:14","memberName":"max","nodeType":"MemberAccess","src":"8150:17:14","typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"}},"src":"8141:26:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e203134342062697473","id":4044,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8169:41:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_17d8c5a6d3b2fd2517ba2e4a2ac70a3367cd362448f8338aaa6edf8bfd812bab","typeString":"literal_string \"SafeCast: value doesn't fit in 144 bits\""},"value":"SafeCast: value doesn't fit in 144 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_17d8c5a6d3b2fd2517ba2e4a2ac70a3367cd362448f8338aaa6edf8bfd812bab","typeString":"literal_string \"SafeCast: value doesn't fit in 144 bits\""}],"id":4036,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"8133:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4045,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8133:78:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4046,"nodeType":"ExpressionStatement","src":"8133:78:14"},{"expression":{"arguments":[{"id":4049,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4031,"src":"8236:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4048,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8228:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint144_$","typeString":"type(uint144)"},"typeName":{"id":4047,"name":"uint144","nodeType":"ElementaryTypeName","src":"8228:7:14","typeDescriptions":{}}},"id":4050,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8228:14:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"}},"functionReturnParameters":4035,"id":4051,"nodeType":"Return","src":"8221:21:14"}]},"documentation":{"id":4029,"nodeType":"StructuredDocumentation","src":"7734:318:14","text":" @dev Returns the downcasted uint144 from uint256, reverting on\n overflow (when the input is greater than largest uint144).\n Counterpart to Solidity's `uint144` operator.\n Requirements:\n - input must fit into 144 bits\n _Available since v4.7._"},"id":4053,"implemented":true,"kind":"function","modifiers":[],"name":"toUint144","nameLocation":"8066:9:14","nodeType":"FunctionDefinition","parameters":{"id":4032,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4031,"mutability":"mutable","name":"value","nameLocation":"8084:5:14","nodeType":"VariableDeclaration","scope":4053,"src":"8076:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4030,"name":"uint256","nodeType":"ElementaryTypeName","src":"8076:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8075:15:14"},"returnParameters":{"id":4035,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4034,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4053,"src":"8114:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"},"typeName":{"id":4033,"name":"uint144","nodeType":"ElementaryTypeName","src":"8114:7:14","typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"}},"visibility":"internal"}],"src":"8113:9:14"},"scope":5241,"src":"8057:192:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4077,"nodeType":"Block","src":"8644:126:14","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4068,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4062,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4056,"src":"8662:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":4065,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8676:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint136_$","typeString":"type(uint136)"},"typeName":{"id":4064,"name":"uint136","nodeType":"ElementaryTypeName","src":"8676:7:14","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint136_$","typeString":"type(uint136)"}],"id":4063,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"8671:4:14","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":4066,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8671:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint136","typeString":"type(uint136)"}},"id":4067,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8685:3:14","memberName":"max","nodeType":"MemberAccess","src":"8671:17:14","typeDescriptions":{"typeIdentifier":"t_uint136","typeString":"uint136"}},"src":"8662:26:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e203133362062697473","id":4069,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8690:41:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_8b1f81e2e2913e1cee9dba7bcd9837bbf8a8122edaac4afc578271db3c25a56a","typeString":"literal_string \"SafeCast: value doesn't fit in 136 bits\""},"value":"SafeCast: value doesn't fit in 136 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8b1f81e2e2913e1cee9dba7bcd9837bbf8a8122edaac4afc578271db3c25a56a","typeString":"literal_string \"SafeCast: value doesn't fit in 136 bits\""}],"id":4061,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"8654:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4070,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8654:78:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4071,"nodeType":"ExpressionStatement","src":"8654:78:14"},{"expression":{"arguments":[{"id":4074,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4056,"src":"8757:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4073,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8749:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint136_$","typeString":"type(uint136)"},"typeName":{"id":4072,"name":"uint136","nodeType":"ElementaryTypeName","src":"8749:7:14","typeDescriptions":{}}},"id":4075,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8749:14:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint136","typeString":"uint136"}},"functionReturnParameters":4060,"id":4076,"nodeType":"Return","src":"8742:21:14"}]},"documentation":{"id":4054,"nodeType":"StructuredDocumentation","src":"8255:318:14","text":" @dev Returns the downcasted uint136 from uint256, reverting on\n overflow (when the input is greater than largest uint136).\n Counterpart to Solidity's `uint136` operator.\n Requirements:\n - input must fit into 136 bits\n _Available since v4.7._"},"id":4078,"implemented":true,"kind":"function","modifiers":[],"name":"toUint136","nameLocation":"8587:9:14","nodeType":"FunctionDefinition","parameters":{"id":4057,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4056,"mutability":"mutable","name":"value","nameLocation":"8605:5:14","nodeType":"VariableDeclaration","scope":4078,"src":"8597:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4055,"name":"uint256","nodeType":"ElementaryTypeName","src":"8597:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8596:15:14"},"returnParameters":{"id":4060,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4059,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4078,"src":"8635:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint136","typeString":"uint136"},"typeName":{"id":4058,"name":"uint136","nodeType":"ElementaryTypeName","src":"8635:7:14","typeDescriptions":{"typeIdentifier":"t_uint136","typeString":"uint136"}},"visibility":"internal"}],"src":"8634:9:14"},"scope":5241,"src":"8578:192:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4102,"nodeType":"Block","src":"9165:126:14","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4093,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4087,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4081,"src":"9183:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":4090,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9197:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":4089,"name":"uint128","nodeType":"ElementaryTypeName","src":"9197:7:14","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"}],"id":4088,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"9192:4:14","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":4091,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9192:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint128","typeString":"type(uint128)"}},"id":4092,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9206:3:14","memberName":"max","nodeType":"MemberAccess","src":"9192:17:14","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"9183:26:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e203132382062697473","id":4094,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9211:41:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_47a1e201974f94d3d1a31c8b08ae18c6966c758bdcd4400020012b98cc55426c","typeString":"literal_string \"SafeCast: value doesn't fit in 128 bits\""},"value":"SafeCast: value doesn't fit in 128 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_47a1e201974f94d3d1a31c8b08ae18c6966c758bdcd4400020012b98cc55426c","typeString":"literal_string \"SafeCast: value doesn't fit in 128 bits\""}],"id":4086,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"9175:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4095,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9175:78:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4096,"nodeType":"ExpressionStatement","src":"9175:78:14"},{"expression":{"arguments":[{"id":4099,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4081,"src":"9278:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4098,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9270:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":4097,"name":"uint128","nodeType":"ElementaryTypeName","src":"9270:7:14","typeDescriptions":{}}},"id":4100,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9270:14:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"functionReturnParameters":4085,"id":4101,"nodeType":"Return","src":"9263:21:14"}]},"documentation":{"id":4079,"nodeType":"StructuredDocumentation","src":"8776:318:14","text":" @dev Returns the downcasted uint128 from uint256, reverting on\n overflow (when the input is greater than largest uint128).\n Counterpart to Solidity's `uint128` operator.\n Requirements:\n - input must fit into 128 bits\n _Available since v2.5._"},"id":4103,"implemented":true,"kind":"function","modifiers":[],"name":"toUint128","nameLocation":"9108:9:14","nodeType":"FunctionDefinition","parameters":{"id":4082,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4081,"mutability":"mutable","name":"value","nameLocation":"9126:5:14","nodeType":"VariableDeclaration","scope":4103,"src":"9118:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4080,"name":"uint256","nodeType":"ElementaryTypeName","src":"9118:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9117:15:14"},"returnParameters":{"id":4085,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4084,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4103,"src":"9156:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":4083,"name":"uint128","nodeType":"ElementaryTypeName","src":"9156:7:14","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"9155:9:14"},"scope":5241,"src":"9099:192:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4127,"nodeType":"Block","src":"9686:126:14","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4118,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4112,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4106,"src":"9704:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":4115,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9718:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint120_$","typeString":"type(uint120)"},"typeName":{"id":4114,"name":"uint120","nodeType":"ElementaryTypeName","src":"9718:7:14","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint120_$","typeString":"type(uint120)"}],"id":4113,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"9713:4:14","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":4116,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9713:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint120","typeString":"type(uint120)"}},"id":4117,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9727:3:14","memberName":"max","nodeType":"MemberAccess","src":"9713:17:14","typeDescriptions":{"typeIdentifier":"t_uint120","typeString":"uint120"}},"src":"9704:26:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e203132302062697473","id":4119,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9732:41:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_3c40c26bb27060cce77002ca0c426dcc1bef2d367c195ca2eb24bd8b2cc1bb09","typeString":"literal_string \"SafeCast: value doesn't fit in 120 bits\""},"value":"SafeCast: value doesn't fit in 120 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_3c40c26bb27060cce77002ca0c426dcc1bef2d367c195ca2eb24bd8b2cc1bb09","typeString":"literal_string \"SafeCast: value doesn't fit in 120 bits\""}],"id":4111,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"9696:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4120,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9696:78:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4121,"nodeType":"ExpressionStatement","src":"9696:78:14"},{"expression":{"arguments":[{"id":4124,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4106,"src":"9799:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4123,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9791:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint120_$","typeString":"type(uint120)"},"typeName":{"id":4122,"name":"uint120","nodeType":"ElementaryTypeName","src":"9791:7:14","typeDescriptions":{}}},"id":4125,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9791:14:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint120","typeString":"uint120"}},"functionReturnParameters":4110,"id":4126,"nodeType":"Return","src":"9784:21:14"}]},"documentation":{"id":4104,"nodeType":"StructuredDocumentation","src":"9297:318:14","text":" @dev Returns the downcasted uint120 from uint256, reverting on\n overflow (when the input is greater than largest uint120).\n Counterpart to Solidity's `uint120` operator.\n Requirements:\n - input must fit into 120 bits\n _Available since v4.7._"},"id":4128,"implemented":true,"kind":"function","modifiers":[],"name":"toUint120","nameLocation":"9629:9:14","nodeType":"FunctionDefinition","parameters":{"id":4107,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4106,"mutability":"mutable","name":"value","nameLocation":"9647:5:14","nodeType":"VariableDeclaration","scope":4128,"src":"9639:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4105,"name":"uint256","nodeType":"ElementaryTypeName","src":"9639:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9638:15:14"},"returnParameters":{"id":4110,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4109,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4128,"src":"9677:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint120","typeString":"uint120"},"typeName":{"id":4108,"name":"uint120","nodeType":"ElementaryTypeName","src":"9677:7:14","typeDescriptions":{"typeIdentifier":"t_uint120","typeString":"uint120"}},"visibility":"internal"}],"src":"9676:9:14"},"scope":5241,"src":"9620:192:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4152,"nodeType":"Block","src":"10207:126:14","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4143,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4137,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4131,"src":"10225:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":4140,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10239:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint112_$","typeString":"type(uint112)"},"typeName":{"id":4139,"name":"uint112","nodeType":"ElementaryTypeName","src":"10239:7:14","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint112_$","typeString":"type(uint112)"}],"id":4138,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"10234:4:14","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":4141,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10234:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint112","typeString":"type(uint112)"}},"id":4142,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"10248:3:14","memberName":"max","nodeType":"MemberAccess","src":"10234:17:14","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"src":"10225:26:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e203131322062697473","id":4144,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10253:41:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_45659ae152ef697531e1c1115de07c87af91ac22466c3e76b808821799776efd","typeString":"literal_string \"SafeCast: value doesn't fit in 112 bits\""},"value":"SafeCast: value doesn't fit in 112 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_45659ae152ef697531e1c1115de07c87af91ac22466c3e76b808821799776efd","typeString":"literal_string \"SafeCast: value doesn't fit in 112 bits\""}],"id":4136,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"10217:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4145,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10217:78:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4146,"nodeType":"ExpressionStatement","src":"10217:78:14"},{"expression":{"arguments":[{"id":4149,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4131,"src":"10320:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4148,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10312:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint112_$","typeString":"type(uint112)"},"typeName":{"id":4147,"name":"uint112","nodeType":"ElementaryTypeName","src":"10312:7:14","typeDescriptions":{}}},"id":4150,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10312:14:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"functionReturnParameters":4135,"id":4151,"nodeType":"Return","src":"10305:21:14"}]},"documentation":{"id":4129,"nodeType":"StructuredDocumentation","src":"9818:318:14","text":" @dev Returns the downcasted uint112 from uint256, reverting on\n overflow (when the input is greater than largest uint112).\n Counterpart to Solidity's `uint112` operator.\n Requirements:\n - input must fit into 112 bits\n _Available since v4.7._"},"id":4153,"implemented":true,"kind":"function","modifiers":[],"name":"toUint112","nameLocation":"10150:9:14","nodeType":"FunctionDefinition","parameters":{"id":4132,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4131,"mutability":"mutable","name":"value","nameLocation":"10168:5:14","nodeType":"VariableDeclaration","scope":4153,"src":"10160:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4130,"name":"uint256","nodeType":"ElementaryTypeName","src":"10160:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10159:15:14"},"returnParameters":{"id":4135,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4134,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4153,"src":"10198:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"},"typeName":{"id":4133,"name":"uint112","nodeType":"ElementaryTypeName","src":"10198:7:14","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"visibility":"internal"}],"src":"10197:9:14"},"scope":5241,"src":"10141:192:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4177,"nodeType":"Block","src":"10728:126:14","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4168,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4162,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4156,"src":"10746:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":4165,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10760:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint104_$","typeString":"type(uint104)"},"typeName":{"id":4164,"name":"uint104","nodeType":"ElementaryTypeName","src":"10760:7:14","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint104_$","typeString":"type(uint104)"}],"id":4163,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"10755:4:14","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":4166,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10755:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint104","typeString":"type(uint104)"}},"id":4167,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"10769:3:14","memberName":"max","nodeType":"MemberAccess","src":"10755:17:14","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}},"src":"10746:26:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e203130342062697473","id":4169,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10774:41:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_5d7f3e1b7e9f9a06fded6b093c6fd1473ca0a14cc4bb683db904e803e2482981","typeString":"literal_string \"SafeCast: value doesn't fit in 104 bits\""},"value":"SafeCast: value doesn't fit in 104 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5d7f3e1b7e9f9a06fded6b093c6fd1473ca0a14cc4bb683db904e803e2482981","typeString":"literal_string \"SafeCast: value doesn't fit in 104 bits\""}],"id":4161,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"10738:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4170,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10738:78:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4171,"nodeType":"ExpressionStatement","src":"10738:78:14"},{"expression":{"arguments":[{"id":4174,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4156,"src":"10841:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4173,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10833:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint104_$","typeString":"type(uint104)"},"typeName":{"id":4172,"name":"uint104","nodeType":"ElementaryTypeName","src":"10833:7:14","typeDescriptions":{}}},"id":4175,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10833:14:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}},"functionReturnParameters":4160,"id":4176,"nodeType":"Return","src":"10826:21:14"}]},"documentation":{"id":4154,"nodeType":"StructuredDocumentation","src":"10339:318:14","text":" @dev Returns the downcasted uint104 from uint256, reverting on\n overflow (when the input is greater than largest uint104).\n Counterpart to Solidity's `uint104` operator.\n Requirements:\n - input must fit into 104 bits\n _Available since v4.7._"},"id":4178,"implemented":true,"kind":"function","modifiers":[],"name":"toUint104","nameLocation":"10671:9:14","nodeType":"FunctionDefinition","parameters":{"id":4157,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4156,"mutability":"mutable","name":"value","nameLocation":"10689:5:14","nodeType":"VariableDeclaration","scope":4178,"src":"10681:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4155,"name":"uint256","nodeType":"ElementaryTypeName","src":"10681:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10680:15:14"},"returnParameters":{"id":4160,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4159,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4178,"src":"10719:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"},"typeName":{"id":4158,"name":"uint104","nodeType":"ElementaryTypeName","src":"10719:7:14","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}},"visibility":"internal"}],"src":"10718:9:14"},"scope":5241,"src":"10662:192:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4202,"nodeType":"Block","src":"11243:123:14","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4193,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4187,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4181,"src":"11261:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":4190,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11275:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint96_$","typeString":"type(uint96)"},"typeName":{"id":4189,"name":"uint96","nodeType":"ElementaryTypeName","src":"11275:6:14","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint96_$","typeString":"type(uint96)"}],"id":4188,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"11270:4:14","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":4191,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11270:12:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint96","typeString":"type(uint96)"}},"id":4192,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11283:3:14","memberName":"max","nodeType":"MemberAccess","src":"11270:16:14","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"src":"11261:25:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e2039362062697473","id":4194,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11288:40:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_06d20189090e973729391526269baef79c35dd621633195648e5f8309eef9e19","typeString":"literal_string \"SafeCast: value doesn't fit in 96 bits\""},"value":"SafeCast: value doesn't fit in 96 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_06d20189090e973729391526269baef79c35dd621633195648e5f8309eef9e19","typeString":"literal_string \"SafeCast: value doesn't fit in 96 bits\""}],"id":4186,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"11253:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4195,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11253:76:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4196,"nodeType":"ExpressionStatement","src":"11253:76:14"},{"expression":{"arguments":[{"id":4199,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4181,"src":"11353:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4198,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11346:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint96_$","typeString":"type(uint96)"},"typeName":{"id":4197,"name":"uint96","nodeType":"ElementaryTypeName","src":"11346:6:14","typeDescriptions":{}}},"id":4200,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11346:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"functionReturnParameters":4185,"id":4201,"nodeType":"Return","src":"11339:20:14"}]},"documentation":{"id":4179,"nodeType":"StructuredDocumentation","src":"10860:314:14","text":" @dev Returns the downcasted uint96 from uint256, reverting on\n overflow (when the input is greater than largest uint96).\n Counterpart to Solidity's `uint96` operator.\n Requirements:\n - input must fit into 96 bits\n _Available since v4.2._"},"id":4203,"implemented":true,"kind":"function","modifiers":[],"name":"toUint96","nameLocation":"11188:8:14","nodeType":"FunctionDefinition","parameters":{"id":4182,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4181,"mutability":"mutable","name":"value","nameLocation":"11205:5:14","nodeType":"VariableDeclaration","scope":4203,"src":"11197:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4180,"name":"uint256","nodeType":"ElementaryTypeName","src":"11197:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11196:15:14"},"returnParameters":{"id":4185,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4184,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4203,"src":"11235:6:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":4183,"name":"uint96","nodeType":"ElementaryTypeName","src":"11235:6:14","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"}],"src":"11234:8:14"},"scope":5241,"src":"11179:187:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4227,"nodeType":"Block","src":"11755:123:14","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4218,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4212,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4206,"src":"11773:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":4215,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11787:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint88_$","typeString":"type(uint88)"},"typeName":{"id":4214,"name":"uint88","nodeType":"ElementaryTypeName","src":"11787:6:14","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint88_$","typeString":"type(uint88)"}],"id":4213,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"11782:4:14","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":4216,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11782:12:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint88","typeString":"type(uint88)"}},"id":4217,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11795:3:14","memberName":"max","nodeType":"MemberAccess","src":"11782:16:14","typeDescriptions":{"typeIdentifier":"t_uint88","typeString":"uint88"}},"src":"11773:25:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e2038382062697473","id":4219,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11800:40:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_ae080bd7a76a46f0a0caf00941bc2cdf6002799ca2813a3af7295019576d715d","typeString":"literal_string \"SafeCast: value doesn't fit in 88 bits\""},"value":"SafeCast: value doesn't fit in 88 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ae080bd7a76a46f0a0caf00941bc2cdf6002799ca2813a3af7295019576d715d","typeString":"literal_string \"SafeCast: value doesn't fit in 88 bits\""}],"id":4211,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"11765:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4220,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11765:76:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4221,"nodeType":"ExpressionStatement","src":"11765:76:14"},{"expression":{"arguments":[{"id":4224,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4206,"src":"11865:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4223,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11858:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint88_$","typeString":"type(uint88)"},"typeName":{"id":4222,"name":"uint88","nodeType":"ElementaryTypeName","src":"11858:6:14","typeDescriptions":{}}},"id":4225,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11858:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint88","typeString":"uint88"}},"functionReturnParameters":4210,"id":4226,"nodeType":"Return","src":"11851:20:14"}]},"documentation":{"id":4204,"nodeType":"StructuredDocumentation","src":"11372:314:14","text":" @dev Returns the downcasted uint88 from uint256, reverting on\n overflow (when the input is greater than largest uint88).\n Counterpart to Solidity's `uint88` operator.\n Requirements:\n - input must fit into 88 bits\n _Available since v4.7._"},"id":4228,"implemented":true,"kind":"function","modifiers":[],"name":"toUint88","nameLocation":"11700:8:14","nodeType":"FunctionDefinition","parameters":{"id":4207,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4206,"mutability":"mutable","name":"value","nameLocation":"11717:5:14","nodeType":"VariableDeclaration","scope":4228,"src":"11709:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4205,"name":"uint256","nodeType":"ElementaryTypeName","src":"11709:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11708:15:14"},"returnParameters":{"id":4210,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4209,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4228,"src":"11747:6:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint88","typeString":"uint88"},"typeName":{"id":4208,"name":"uint88","nodeType":"ElementaryTypeName","src":"11747:6:14","typeDescriptions":{"typeIdentifier":"t_uint88","typeString":"uint88"}},"visibility":"internal"}],"src":"11746:8:14"},"scope":5241,"src":"11691:187:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4252,"nodeType":"Block","src":"12267:123:14","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4243,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4237,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4231,"src":"12285:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":4240,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12299:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint80_$","typeString":"type(uint80)"},"typeName":{"id":4239,"name":"uint80","nodeType":"ElementaryTypeName","src":"12299:6:14","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint80_$","typeString":"type(uint80)"}],"id":4238,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"12294:4:14","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":4241,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12294:12:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint80","typeString":"type(uint80)"}},"id":4242,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"12307:3:14","memberName":"max","nodeType":"MemberAccess","src":"12294:16:14","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"src":"12285:25:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e2038302062697473","id":4244,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12312:40:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_3cba87c71fade7d3cd7b673c159aab98afc040a5369691a33559d905d20ab5d1","typeString":"literal_string \"SafeCast: value doesn't fit in 80 bits\""},"value":"SafeCast: value doesn't fit in 80 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_3cba87c71fade7d3cd7b673c159aab98afc040a5369691a33559d905d20ab5d1","typeString":"literal_string \"SafeCast: value doesn't fit in 80 bits\""}],"id":4236,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"12277:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4245,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12277:76:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4246,"nodeType":"ExpressionStatement","src":"12277:76:14"},{"expression":{"arguments":[{"id":4249,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4231,"src":"12377:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4248,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12370:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint80_$","typeString":"type(uint80)"},"typeName":{"id":4247,"name":"uint80","nodeType":"ElementaryTypeName","src":"12370:6:14","typeDescriptions":{}}},"id":4250,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12370:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"functionReturnParameters":4235,"id":4251,"nodeType":"Return","src":"12363:20:14"}]},"documentation":{"id":4229,"nodeType":"StructuredDocumentation","src":"11884:314:14","text":" @dev Returns the downcasted uint80 from uint256, reverting on\n overflow (when the input is greater than largest uint80).\n Counterpart to Solidity's `uint80` operator.\n Requirements:\n - input must fit into 80 bits\n _Available since v4.7._"},"id":4253,"implemented":true,"kind":"function","modifiers":[],"name":"toUint80","nameLocation":"12212:8:14","nodeType":"FunctionDefinition","parameters":{"id":4232,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4231,"mutability":"mutable","name":"value","nameLocation":"12229:5:14","nodeType":"VariableDeclaration","scope":4253,"src":"12221:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4230,"name":"uint256","nodeType":"ElementaryTypeName","src":"12221:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12220:15:14"},"returnParameters":{"id":4235,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4234,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4253,"src":"12259:6:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"},"typeName":{"id":4233,"name":"uint80","nodeType":"ElementaryTypeName","src":"12259:6:14","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"visibility":"internal"}],"src":"12258:8:14"},"scope":5241,"src":"12203:187:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4277,"nodeType":"Block","src":"12779:123:14","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4268,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4262,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4256,"src":"12797:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":4265,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12811:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint72_$","typeString":"type(uint72)"},"typeName":{"id":4264,"name":"uint72","nodeType":"ElementaryTypeName","src":"12811:6:14","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint72_$","typeString":"type(uint72)"}],"id":4263,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"12806:4:14","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":4266,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12806:12:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint72","typeString":"type(uint72)"}},"id":4267,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"12819:3:14","memberName":"max","nodeType":"MemberAccess","src":"12806:16:14","typeDescriptions":{"typeIdentifier":"t_uint72","typeString":"uint72"}},"src":"12797:25:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e2037322062697473","id":4269,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12824:40:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_71584237cc5250b8f417982144a947efe8f4c76feba008ff32ac480e69d60606","typeString":"literal_string \"SafeCast: value doesn't fit in 72 bits\""},"value":"SafeCast: value doesn't fit in 72 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_71584237cc5250b8f417982144a947efe8f4c76feba008ff32ac480e69d60606","typeString":"literal_string \"SafeCast: value doesn't fit in 72 bits\""}],"id":4261,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"12789:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4270,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12789:76:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4271,"nodeType":"ExpressionStatement","src":"12789:76:14"},{"expression":{"arguments":[{"id":4274,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4256,"src":"12889:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4273,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12882:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint72_$","typeString":"type(uint72)"},"typeName":{"id":4272,"name":"uint72","nodeType":"ElementaryTypeName","src":"12882:6:14","typeDescriptions":{}}},"id":4275,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12882:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint72","typeString":"uint72"}},"functionReturnParameters":4260,"id":4276,"nodeType":"Return","src":"12875:20:14"}]},"documentation":{"id":4254,"nodeType":"StructuredDocumentation","src":"12396:314:14","text":" @dev Returns the downcasted uint72 from uint256, reverting on\n overflow (when the input is greater than largest uint72).\n Counterpart to Solidity's `uint72` operator.\n Requirements:\n - input must fit into 72 bits\n _Available since v4.7._"},"id":4278,"implemented":true,"kind":"function","modifiers":[],"name":"toUint72","nameLocation":"12724:8:14","nodeType":"FunctionDefinition","parameters":{"id":4257,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4256,"mutability":"mutable","name":"value","nameLocation":"12741:5:14","nodeType":"VariableDeclaration","scope":4278,"src":"12733:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4255,"name":"uint256","nodeType":"ElementaryTypeName","src":"12733:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12732:15:14"},"returnParameters":{"id":4260,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4259,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4278,"src":"12771:6:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint72","typeString":"uint72"},"typeName":{"id":4258,"name":"uint72","nodeType":"ElementaryTypeName","src":"12771:6:14","typeDescriptions":{"typeIdentifier":"t_uint72","typeString":"uint72"}},"visibility":"internal"}],"src":"12770:8:14"},"scope":5241,"src":"12715:187:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4302,"nodeType":"Block","src":"13291:123:14","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4293,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4287,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4281,"src":"13309:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":4290,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13323:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":4289,"name":"uint64","nodeType":"ElementaryTypeName","src":"13323:6:14","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"}],"id":4288,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"13318:4:14","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":4291,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13318:12:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint64","typeString":"type(uint64)"}},"id":4292,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"13331:3:14","memberName":"max","nodeType":"MemberAccess","src":"13318:16:14","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"13309:25:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e2036342062697473","id":4294,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"13336:40:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_93ae0c6bf6ffaece591a770b1865daa9f65157e541970aa9d8dc5f89a9490939","typeString":"literal_string \"SafeCast: value doesn't fit in 64 bits\""},"value":"SafeCast: value doesn't fit in 64 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_93ae0c6bf6ffaece591a770b1865daa9f65157e541970aa9d8dc5f89a9490939","typeString":"literal_string \"SafeCast: value doesn't fit in 64 bits\""}],"id":4286,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"13301:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4295,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13301:76:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4296,"nodeType":"ExpressionStatement","src":"13301:76:14"},{"expression":{"arguments":[{"id":4299,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4281,"src":"13401:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4298,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13394:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":4297,"name":"uint64","nodeType":"ElementaryTypeName","src":"13394:6:14","typeDescriptions":{}}},"id":4300,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13394:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"functionReturnParameters":4285,"id":4301,"nodeType":"Return","src":"13387:20:14"}]},"documentation":{"id":4279,"nodeType":"StructuredDocumentation","src":"12908:314:14","text":" @dev Returns the downcasted uint64 from uint256, reverting on\n overflow (when the input is greater than largest uint64).\n Counterpart to Solidity's `uint64` operator.\n Requirements:\n - input must fit into 64 bits\n _Available since v2.5._"},"id":4303,"implemented":true,"kind":"function","modifiers":[],"name":"toUint64","nameLocation":"13236:8:14","nodeType":"FunctionDefinition","parameters":{"id":4282,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4281,"mutability":"mutable","name":"value","nameLocation":"13253:5:14","nodeType":"VariableDeclaration","scope":4303,"src":"13245:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4280,"name":"uint256","nodeType":"ElementaryTypeName","src":"13245:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13244:15:14"},"returnParameters":{"id":4285,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4284,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4303,"src":"13283:6:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":4283,"name":"uint64","nodeType":"ElementaryTypeName","src":"13283:6:14","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"13282:8:14"},"scope":5241,"src":"13227:187:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4327,"nodeType":"Block","src":"13803:123:14","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4318,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4312,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4306,"src":"13821:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":4315,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13835:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint56_$","typeString":"type(uint56)"},"typeName":{"id":4314,"name":"uint56","nodeType":"ElementaryTypeName","src":"13835:6:14","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint56_$","typeString":"type(uint56)"}],"id":4313,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"13830:4:14","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":4316,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13830:12:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint56","typeString":"type(uint56)"}},"id":4317,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"13843:3:14","memberName":"max","nodeType":"MemberAccess","src":"13830:16:14","typeDescriptions":{"typeIdentifier":"t_uint56","typeString":"uint56"}},"src":"13821:25:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e2035362062697473","id":4319,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"13848:40:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_656ad93b5ff6665bfe05d97d51fad7c02ad79e6c43bef066c042a6900f450bc5","typeString":"literal_string \"SafeCast: value doesn't fit in 56 bits\""},"value":"SafeCast: value doesn't fit in 56 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_656ad93b5ff6665bfe05d97d51fad7c02ad79e6c43bef066c042a6900f450bc5","typeString":"literal_string \"SafeCast: value doesn't fit in 56 bits\""}],"id":4311,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"13813:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4320,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13813:76:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4321,"nodeType":"ExpressionStatement","src":"13813:76:14"},{"expression":{"arguments":[{"id":4324,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4306,"src":"13913:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4323,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13906:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint56_$","typeString":"type(uint56)"},"typeName":{"id":4322,"name":"uint56","nodeType":"ElementaryTypeName","src":"13906:6:14","typeDescriptions":{}}},"id":4325,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13906:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint56","typeString":"uint56"}},"functionReturnParameters":4310,"id":4326,"nodeType":"Return","src":"13899:20:14"}]},"documentation":{"id":4304,"nodeType":"StructuredDocumentation","src":"13420:314:14","text":" @dev Returns the downcasted uint56 from uint256, reverting on\n overflow (when the input is greater than largest uint56).\n Counterpart to Solidity's `uint56` operator.\n Requirements:\n - input must fit into 56 bits\n _Available since v4.7._"},"id":4328,"implemented":true,"kind":"function","modifiers":[],"name":"toUint56","nameLocation":"13748:8:14","nodeType":"FunctionDefinition","parameters":{"id":4307,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4306,"mutability":"mutable","name":"value","nameLocation":"13765:5:14","nodeType":"VariableDeclaration","scope":4328,"src":"13757:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4305,"name":"uint256","nodeType":"ElementaryTypeName","src":"13757:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13756:15:14"},"returnParameters":{"id":4310,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4309,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4328,"src":"13795:6:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint56","typeString":"uint56"},"typeName":{"id":4308,"name":"uint56","nodeType":"ElementaryTypeName","src":"13795:6:14","typeDescriptions":{"typeIdentifier":"t_uint56","typeString":"uint56"}},"visibility":"internal"}],"src":"13794:8:14"},"scope":5241,"src":"13739:187:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4352,"nodeType":"Block","src":"14315:123:14","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4343,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4337,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4331,"src":"14333:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":4340,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14347:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint48_$","typeString":"type(uint48)"},"typeName":{"id":4339,"name":"uint48","nodeType":"ElementaryTypeName","src":"14347:6:14","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint48_$","typeString":"type(uint48)"}],"id":4338,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"14342:4:14","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":4341,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14342:12:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint48","typeString":"type(uint48)"}},"id":4342,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"14355:3:14","memberName":"max","nodeType":"MemberAccess","src":"14342:16:14","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"14333:25:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e2034382062697473","id":4344,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"14360:40:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_599034f9324dd4e988c6cea5a00a30f53147fec1b01559682f18cd840028f495","typeString":"literal_string \"SafeCast: value doesn't fit in 48 bits\""},"value":"SafeCast: value doesn't fit in 48 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_599034f9324dd4e988c6cea5a00a30f53147fec1b01559682f18cd840028f495","typeString":"literal_string \"SafeCast: value doesn't fit in 48 bits\""}],"id":4336,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"14325:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4345,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14325:76:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4346,"nodeType":"ExpressionStatement","src":"14325:76:14"},{"expression":{"arguments":[{"id":4349,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4331,"src":"14425:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4348,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14418:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint48_$","typeString":"type(uint48)"},"typeName":{"id":4347,"name":"uint48","nodeType":"ElementaryTypeName","src":"14418:6:14","typeDescriptions":{}}},"id":4350,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14418:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"functionReturnParameters":4335,"id":4351,"nodeType":"Return","src":"14411:20:14"}]},"documentation":{"id":4329,"nodeType":"StructuredDocumentation","src":"13932:314:14","text":" @dev Returns the downcasted uint48 from uint256, reverting on\n overflow (when the input is greater than largest uint48).\n Counterpart to Solidity's `uint48` operator.\n Requirements:\n - input must fit into 48 bits\n _Available since v4.7._"},"id":4353,"implemented":true,"kind":"function","modifiers":[],"name":"toUint48","nameLocation":"14260:8:14","nodeType":"FunctionDefinition","parameters":{"id":4332,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4331,"mutability":"mutable","name":"value","nameLocation":"14277:5:14","nodeType":"VariableDeclaration","scope":4353,"src":"14269:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4330,"name":"uint256","nodeType":"ElementaryTypeName","src":"14269:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14268:15:14"},"returnParameters":{"id":4335,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4334,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4353,"src":"14307:6:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":4333,"name":"uint48","nodeType":"ElementaryTypeName","src":"14307:6:14","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"14306:8:14"},"scope":5241,"src":"14251:187:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4377,"nodeType":"Block","src":"14827:123:14","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4368,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4362,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4356,"src":"14845:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":4365,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14859:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint40_$","typeString":"type(uint40)"},"typeName":{"id":4364,"name":"uint40","nodeType":"ElementaryTypeName","src":"14859:6:14","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint40_$","typeString":"type(uint40)"}],"id":4363,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"14854:4:14","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":4366,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14854:12:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint40","typeString":"type(uint40)"}},"id":4367,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"14867:3:14","memberName":"max","nodeType":"MemberAccess","src":"14854:16:14","typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"}},"src":"14845:25:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e2034302062697473","id":4369,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"14872:40:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_b23559c58b98a5d3ed7016699c7171ac8defa5a1d180f9a9ffa60468a5701d37","typeString":"literal_string \"SafeCast: value doesn't fit in 40 bits\""},"value":"SafeCast: value doesn't fit in 40 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b23559c58b98a5d3ed7016699c7171ac8defa5a1d180f9a9ffa60468a5701d37","typeString":"literal_string \"SafeCast: value doesn't fit in 40 bits\""}],"id":4361,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"14837:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4370,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14837:76:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4371,"nodeType":"ExpressionStatement","src":"14837:76:14"},{"expression":{"arguments":[{"id":4374,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4356,"src":"14937:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4373,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14930:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint40_$","typeString":"type(uint40)"},"typeName":{"id":4372,"name":"uint40","nodeType":"ElementaryTypeName","src":"14930:6:14","typeDescriptions":{}}},"id":4375,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14930:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"}},"functionReturnParameters":4360,"id":4376,"nodeType":"Return","src":"14923:20:14"}]},"documentation":{"id":4354,"nodeType":"StructuredDocumentation","src":"14444:314:14","text":" @dev Returns the downcasted uint40 from uint256, reverting on\n overflow (when the input is greater than largest uint40).\n Counterpart to Solidity's `uint40` operator.\n Requirements:\n - input must fit into 40 bits\n _Available since v4.7._"},"id":4378,"implemented":true,"kind":"function","modifiers":[],"name":"toUint40","nameLocation":"14772:8:14","nodeType":"FunctionDefinition","parameters":{"id":4357,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4356,"mutability":"mutable","name":"value","nameLocation":"14789:5:14","nodeType":"VariableDeclaration","scope":4378,"src":"14781:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4355,"name":"uint256","nodeType":"ElementaryTypeName","src":"14781:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14780:15:14"},"returnParameters":{"id":4360,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4359,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4378,"src":"14819:6:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"},"typeName":{"id":4358,"name":"uint40","nodeType":"ElementaryTypeName","src":"14819:6:14","typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"}},"visibility":"internal"}],"src":"14818:8:14"},"scope":5241,"src":"14763:187:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4402,"nodeType":"Block","src":"15339:123:14","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4393,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4387,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4381,"src":"15357:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":4390,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15371:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"},"typeName":{"id":4389,"name":"uint32","nodeType":"ElementaryTypeName","src":"15371:6:14","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"}],"id":4388,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"15366:4:14","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":4391,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15366:12:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint32","typeString":"type(uint32)"}},"id":4392,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"15379:3:14","memberName":"max","nodeType":"MemberAccess","src":"15366:16:14","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"15357:25:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e2033322062697473","id":4394,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"15384:40:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_c907489dafcfb622d3b83f2657a14d6da2f59e0de3116af0d6a80554c1a7cb19","typeString":"literal_string \"SafeCast: value doesn't fit in 32 bits\""},"value":"SafeCast: value doesn't fit in 32 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_c907489dafcfb622d3b83f2657a14d6da2f59e0de3116af0d6a80554c1a7cb19","typeString":"literal_string \"SafeCast: value doesn't fit in 32 bits\""}],"id":4386,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"15349:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4395,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15349:76:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4396,"nodeType":"ExpressionStatement","src":"15349:76:14"},{"expression":{"arguments":[{"id":4399,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4381,"src":"15449:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4398,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15442:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"},"typeName":{"id":4397,"name":"uint32","nodeType":"ElementaryTypeName","src":"15442:6:14","typeDescriptions":{}}},"id":4400,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15442:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"functionReturnParameters":4385,"id":4401,"nodeType":"Return","src":"15435:20:14"}]},"documentation":{"id":4379,"nodeType":"StructuredDocumentation","src":"14956:314:14","text":" @dev Returns the downcasted uint32 from uint256, reverting on\n overflow (when the input is greater than largest uint32).\n Counterpart to Solidity's `uint32` operator.\n Requirements:\n - input must fit into 32 bits\n _Available since v2.5._"},"id":4403,"implemented":true,"kind":"function","modifiers":[],"name":"toUint32","nameLocation":"15284:8:14","nodeType":"FunctionDefinition","parameters":{"id":4382,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4381,"mutability":"mutable","name":"value","nameLocation":"15301:5:14","nodeType":"VariableDeclaration","scope":4403,"src":"15293:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4380,"name":"uint256","nodeType":"ElementaryTypeName","src":"15293:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15292:15:14"},"returnParameters":{"id":4385,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4384,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4403,"src":"15331:6:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":4383,"name":"uint32","nodeType":"ElementaryTypeName","src":"15331:6:14","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"15330:8:14"},"scope":5241,"src":"15275:187:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4427,"nodeType":"Block","src":"15851:123:14","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4418,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4412,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4406,"src":"15869:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":4415,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15883:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint24_$","typeString":"type(uint24)"},"typeName":{"id":4414,"name":"uint24","nodeType":"ElementaryTypeName","src":"15883:6:14","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint24_$","typeString":"type(uint24)"}],"id":4413,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"15878:4:14","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":4416,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15878:12:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint24","typeString":"type(uint24)"}},"id":4417,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"15891:3:14","memberName":"max","nodeType":"MemberAccess","src":"15878:16:14","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"src":"15869:25:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e2032342062697473","id":4419,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"15896:40:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_f68b65aaf4574c34e9b9d1442d19636c6608b8c4dbd9331c7245f7915c8b2f55","typeString":"literal_string \"SafeCast: value doesn't fit in 24 bits\""},"value":"SafeCast: value doesn't fit in 24 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_f68b65aaf4574c34e9b9d1442d19636c6608b8c4dbd9331c7245f7915c8b2f55","typeString":"literal_string \"SafeCast: value doesn't fit in 24 bits\""}],"id":4411,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"15861:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4420,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15861:76:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4421,"nodeType":"ExpressionStatement","src":"15861:76:14"},{"expression":{"arguments":[{"id":4424,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4406,"src":"15961:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4423,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15954:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint24_$","typeString":"type(uint24)"},"typeName":{"id":4422,"name":"uint24","nodeType":"ElementaryTypeName","src":"15954:6:14","typeDescriptions":{}}},"id":4425,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15954:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"functionReturnParameters":4410,"id":4426,"nodeType":"Return","src":"15947:20:14"}]},"documentation":{"id":4404,"nodeType":"StructuredDocumentation","src":"15468:314:14","text":" @dev Returns the downcasted uint24 from uint256, reverting on\n overflow (when the input is greater than largest uint24).\n Counterpart to Solidity's `uint24` operator.\n Requirements:\n - input must fit into 24 bits\n _Available since v4.7._"},"id":4428,"implemented":true,"kind":"function","modifiers":[],"name":"toUint24","nameLocation":"15796:8:14","nodeType":"FunctionDefinition","parameters":{"id":4407,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4406,"mutability":"mutable","name":"value","nameLocation":"15813:5:14","nodeType":"VariableDeclaration","scope":4428,"src":"15805:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4405,"name":"uint256","nodeType":"ElementaryTypeName","src":"15805:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15804:15:14"},"returnParameters":{"id":4410,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4409,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4428,"src":"15843:6:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":4408,"name":"uint24","nodeType":"ElementaryTypeName","src":"15843:6:14","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"src":"15842:8:14"},"scope":5241,"src":"15787:187:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4452,"nodeType":"Block","src":"16363:123:14","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4443,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4437,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4431,"src":"16381:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":4440,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16395:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint16_$","typeString":"type(uint16)"},"typeName":{"id":4439,"name":"uint16","nodeType":"ElementaryTypeName","src":"16395:6:14","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint16_$","typeString":"type(uint16)"}],"id":4438,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"16390:4:14","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":4441,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16390:12:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint16","typeString":"type(uint16)"}},"id":4442,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"16403:3:14","memberName":"max","nodeType":"MemberAccess","src":"16390:16:14","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"src":"16381:25:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e2031362062697473","id":4444,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"16408:40:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_13d3a66f9e0e5c92bbe7743bcd3bdb4695009d5f3a96e5ff49718d715b484033","typeString":"literal_string \"SafeCast: value doesn't fit in 16 bits\""},"value":"SafeCast: value doesn't fit in 16 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_13d3a66f9e0e5c92bbe7743bcd3bdb4695009d5f3a96e5ff49718d715b484033","typeString":"literal_string \"SafeCast: value doesn't fit in 16 bits\""}],"id":4436,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"16373:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4445,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16373:76:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4446,"nodeType":"ExpressionStatement","src":"16373:76:14"},{"expression":{"arguments":[{"id":4449,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4431,"src":"16473:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4448,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16466:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint16_$","typeString":"type(uint16)"},"typeName":{"id":4447,"name":"uint16","nodeType":"ElementaryTypeName","src":"16466:6:14","typeDescriptions":{}}},"id":4450,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16466:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"functionReturnParameters":4435,"id":4451,"nodeType":"Return","src":"16459:20:14"}]},"documentation":{"id":4429,"nodeType":"StructuredDocumentation","src":"15980:314:14","text":" @dev Returns the downcasted uint16 from uint256, reverting on\n overflow (when the input is greater than largest uint16).\n Counterpart to Solidity's `uint16` operator.\n Requirements:\n - input must fit into 16 bits\n _Available since v2.5._"},"id":4453,"implemented":true,"kind":"function","modifiers":[],"name":"toUint16","nameLocation":"16308:8:14","nodeType":"FunctionDefinition","parameters":{"id":4432,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4431,"mutability":"mutable","name":"value","nameLocation":"16325:5:14","nodeType":"VariableDeclaration","scope":4453,"src":"16317:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4430,"name":"uint256","nodeType":"ElementaryTypeName","src":"16317:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16316:15:14"},"returnParameters":{"id":4435,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4434,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4453,"src":"16355:6:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":4433,"name":"uint16","nodeType":"ElementaryTypeName","src":"16355:6:14","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"16354:8:14"},"scope":5241,"src":"16299:187:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4477,"nodeType":"Block","src":"16869:120:14","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4468,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4462,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4456,"src":"16887:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":4465,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16901:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":4464,"name":"uint8","nodeType":"ElementaryTypeName","src":"16901:5:14","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"}],"id":4463,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"16896:4:14","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":4466,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16896:11:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint8","typeString":"type(uint8)"}},"id":4467,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"16908:3:14","memberName":"max","nodeType":"MemberAccess","src":"16896:15:14","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"16887:24:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e20382062697473","id":4469,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"16913:39:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_2610961ba53259047cd57c60366c5ad0b8aabf5eb4132487619b736715a740d1","typeString":"literal_string \"SafeCast: value doesn't fit in 8 bits\""},"value":"SafeCast: value doesn't fit in 8 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2610961ba53259047cd57c60366c5ad0b8aabf5eb4132487619b736715a740d1","typeString":"literal_string \"SafeCast: value doesn't fit in 8 bits\""}],"id":4461,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"16879:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4470,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16879:74:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4471,"nodeType":"ExpressionStatement","src":"16879:74:14"},{"expression":{"arguments":[{"id":4474,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4456,"src":"16976:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4473,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16970:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":4472,"name":"uint8","nodeType":"ElementaryTypeName","src":"16970:5:14","typeDescriptions":{}}},"id":4475,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16970:12:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"functionReturnParameters":4460,"id":4476,"nodeType":"Return","src":"16963:19:14"}]},"documentation":{"id":4454,"nodeType":"StructuredDocumentation","src":"16492:310:14","text":" @dev Returns the downcasted uint8 from uint256, reverting on\n overflow (when the input is greater than largest uint8).\n Counterpart to Solidity's `uint8` operator.\n Requirements:\n - input must fit into 8 bits\n _Available since v2.5._"},"id":4478,"implemented":true,"kind":"function","modifiers":[],"name":"toUint8","nameLocation":"16816:7:14","nodeType":"FunctionDefinition","parameters":{"id":4457,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4456,"mutability":"mutable","name":"value","nameLocation":"16832:5:14","nodeType":"VariableDeclaration","scope":4478,"src":"16824:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4455,"name":"uint256","nodeType":"ElementaryTypeName","src":"16824:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16823:15:14"},"returnParameters":{"id":4460,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4459,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4478,"src":"16862:5:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":4458,"name":"uint8","nodeType":"ElementaryTypeName","src":"16862:5:14","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"16861:7:14"},"scope":5241,"src":"16807:182:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4498,"nodeType":"Block","src":"17263:103:14","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4489,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4487,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4481,"src":"17281:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"30","id":4488,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17290:1:14","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"17281:10:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c7565206d75737420626520706f736974697665","id":4490,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"17293:34:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_74e6d3a4204092bea305532ded31d3763fc378e46be3884a93ceff08a0761807","typeString":"literal_string \"SafeCast: value must be positive\""},"value":"SafeCast: value must be positive"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_74e6d3a4204092bea305532ded31d3763fc378e46be3884a93ceff08a0761807","typeString":"literal_string \"SafeCast: value must be positive\""}],"id":4486,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"17273:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4491,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17273:55:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4492,"nodeType":"ExpressionStatement","src":"17273:55:14"},{"expression":{"arguments":[{"id":4495,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4481,"src":"17353:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4494,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"17345:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":4493,"name":"uint256","nodeType":"ElementaryTypeName","src":"17345:7:14","typeDescriptions":{}}},"id":4496,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17345:14:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4485,"id":4497,"nodeType":"Return","src":"17338:21:14"}]},"documentation":{"id":4479,"nodeType":"StructuredDocumentation","src":"16995:198:14","text":" @dev Converts a signed int256 into an unsigned uint256.\n Requirements:\n - input must be greater than or equal to 0.\n _Available since v3.0._"},"id":4499,"implemented":true,"kind":"function","modifiers":[],"name":"toUint256","nameLocation":"17207:9:14","nodeType":"FunctionDefinition","parameters":{"id":4482,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4481,"mutability":"mutable","name":"value","nameLocation":"17224:5:14","nodeType":"VariableDeclaration","scope":4499,"src":"17217:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4480,"name":"int256","nodeType":"ElementaryTypeName","src":"17217:6:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"17216:14:14"},"returnParameters":{"id":4485,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4484,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4499,"src":"17254:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4483,"name":"uint256","nodeType":"ElementaryTypeName","src":"17254:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17253:9:14"},"scope":5241,"src":"17198:168:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4521,"nodeType":"Block","src":"17801:124:14","statements":[{"expression":{"id":4512,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4507,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4505,"src":"17811:10:14","typeDescriptions":{"typeIdentifier":"t_int248","typeString":"int248"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4510,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4502,"src":"17831:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4509,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"17824:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_int248_$","typeString":"type(int248)"},"typeName":{"id":4508,"name":"int248","nodeType":"ElementaryTypeName","src":"17824:6:14","typeDescriptions":{}}},"id":4511,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17824:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int248","typeString":"int248"}},"src":"17811:26:14","typeDescriptions":{"typeIdentifier":"t_int248","typeString":"int248"}},"id":4513,"nodeType":"ExpressionStatement","src":"17811:26:14"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4517,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4515,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4505,"src":"17855:10:14","typeDescriptions":{"typeIdentifier":"t_int248","typeString":"int248"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":4516,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4502,"src":"17869:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17855:19:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e203234382062697473","id":4518,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"17876:41:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_6ac19bba4607c9b45ff35f54fbc4ca64c29c7457109a16fa180ea77cdbda8593","typeString":"literal_string \"SafeCast: value doesn't fit in 248 bits\""},"value":"SafeCast: value doesn't fit in 248 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_6ac19bba4607c9b45ff35f54fbc4ca64c29c7457109a16fa180ea77cdbda8593","typeString":"literal_string \"SafeCast: value doesn't fit in 248 bits\""}],"id":4514,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"17847:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4519,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17847:71:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4520,"nodeType":"ExpressionStatement","src":"17847:71:14"}]},"documentation":{"id":4500,"nodeType":"StructuredDocumentation","src":"17372:350:14","text":" @dev Returns the downcasted int248 from int256, reverting on\n overflow (when the input is less than smallest int248 or\n greater than largest int248).\n Counterpart to Solidity's `int248` operator.\n Requirements:\n - input must fit into 248 bits\n _Available since v4.7._"},"id":4522,"implemented":true,"kind":"function","modifiers":[],"name":"toInt248","nameLocation":"17736:8:14","nodeType":"FunctionDefinition","parameters":{"id":4503,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4502,"mutability":"mutable","name":"value","nameLocation":"17752:5:14","nodeType":"VariableDeclaration","scope":4522,"src":"17745:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4501,"name":"int256","nodeType":"ElementaryTypeName","src":"17745:6:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"17744:14:14"},"returnParameters":{"id":4506,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4505,"mutability":"mutable","name":"downcasted","nameLocation":"17789:10:14","nodeType":"VariableDeclaration","scope":4522,"src":"17782:17:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int248","typeString":"int248"},"typeName":{"id":4504,"name":"int248","nodeType":"ElementaryTypeName","src":"17782:6:14","typeDescriptions":{"typeIdentifier":"t_int248","typeString":"int248"}},"visibility":"internal"}],"src":"17781:19:14"},"scope":5241,"src":"17727:198:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4544,"nodeType":"Block","src":"18360:124:14","statements":[{"expression":{"id":4535,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4530,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4528,"src":"18370:10:14","typeDescriptions":{"typeIdentifier":"t_int240","typeString":"int240"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4533,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4525,"src":"18390:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4532,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"18383:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_int240_$","typeString":"type(int240)"},"typeName":{"id":4531,"name":"int240","nodeType":"ElementaryTypeName","src":"18383:6:14","typeDescriptions":{}}},"id":4534,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18383:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int240","typeString":"int240"}},"src":"18370:26:14","typeDescriptions":{"typeIdentifier":"t_int240","typeString":"int240"}},"id":4536,"nodeType":"ExpressionStatement","src":"18370:26:14"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4540,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4538,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4528,"src":"18414:10:14","typeDescriptions":{"typeIdentifier":"t_int240","typeString":"int240"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":4539,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4525,"src":"18428:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18414:19:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e203234302062697473","id":4541,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"18435:41:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_375fa0f6cb9fb5845d214c630920cedf4424913ed6dc32c297d430efa3d61a87","typeString":"literal_string \"SafeCast: value doesn't fit in 240 bits\""},"value":"SafeCast: value doesn't fit in 240 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_375fa0f6cb9fb5845d214c630920cedf4424913ed6dc32c297d430efa3d61a87","typeString":"literal_string \"SafeCast: value doesn't fit in 240 bits\""}],"id":4537,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"18406:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4542,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18406:71:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4543,"nodeType":"ExpressionStatement","src":"18406:71:14"}]},"documentation":{"id":4523,"nodeType":"StructuredDocumentation","src":"17931:350:14","text":" @dev Returns the downcasted int240 from int256, reverting on\n overflow (when the input is less than smallest int240 or\n greater than largest int240).\n Counterpart to Solidity's `int240` operator.\n Requirements:\n - input must fit into 240 bits\n _Available since v4.7._"},"id":4545,"implemented":true,"kind":"function","modifiers":[],"name":"toInt240","nameLocation":"18295:8:14","nodeType":"FunctionDefinition","parameters":{"id":4526,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4525,"mutability":"mutable","name":"value","nameLocation":"18311:5:14","nodeType":"VariableDeclaration","scope":4545,"src":"18304:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4524,"name":"int256","nodeType":"ElementaryTypeName","src":"18304:6:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"18303:14:14"},"returnParameters":{"id":4529,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4528,"mutability":"mutable","name":"downcasted","nameLocation":"18348:10:14","nodeType":"VariableDeclaration","scope":4545,"src":"18341:17:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int240","typeString":"int240"},"typeName":{"id":4527,"name":"int240","nodeType":"ElementaryTypeName","src":"18341:6:14","typeDescriptions":{"typeIdentifier":"t_int240","typeString":"int240"}},"visibility":"internal"}],"src":"18340:19:14"},"scope":5241,"src":"18286:198:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4567,"nodeType":"Block","src":"18919:124:14","statements":[{"expression":{"id":4558,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4553,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4551,"src":"18929:10:14","typeDescriptions":{"typeIdentifier":"t_int232","typeString":"int232"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4556,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4548,"src":"18949:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4555,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"18942:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_int232_$","typeString":"type(int232)"},"typeName":{"id":4554,"name":"int232","nodeType":"ElementaryTypeName","src":"18942:6:14","typeDescriptions":{}}},"id":4557,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18942:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int232","typeString":"int232"}},"src":"18929:26:14","typeDescriptions":{"typeIdentifier":"t_int232","typeString":"int232"}},"id":4559,"nodeType":"ExpressionStatement","src":"18929:26:14"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4563,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4561,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4551,"src":"18973:10:14","typeDescriptions":{"typeIdentifier":"t_int232","typeString":"int232"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":4562,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4548,"src":"18987:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18973:19:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e203233322062697473","id":4564,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"18994:41:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_5797fb2c4589bd6a92752ce0eacaac67341e37ab28c96c2284ab897e7ac77957","typeString":"literal_string \"SafeCast: value doesn't fit in 232 bits\""},"value":"SafeCast: value doesn't fit in 232 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5797fb2c4589bd6a92752ce0eacaac67341e37ab28c96c2284ab897e7ac77957","typeString":"literal_string \"SafeCast: value doesn't fit in 232 bits\""}],"id":4560,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"18965:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4565,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18965:71:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4566,"nodeType":"ExpressionStatement","src":"18965:71:14"}]},"documentation":{"id":4546,"nodeType":"StructuredDocumentation","src":"18490:350:14","text":" @dev Returns the downcasted int232 from int256, reverting on\n overflow (when the input is less than smallest int232 or\n greater than largest int232).\n Counterpart to Solidity's `int232` operator.\n Requirements:\n - input must fit into 232 bits\n _Available since v4.7._"},"id":4568,"implemented":true,"kind":"function","modifiers":[],"name":"toInt232","nameLocation":"18854:8:14","nodeType":"FunctionDefinition","parameters":{"id":4549,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4548,"mutability":"mutable","name":"value","nameLocation":"18870:5:14","nodeType":"VariableDeclaration","scope":4568,"src":"18863:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4547,"name":"int256","nodeType":"ElementaryTypeName","src":"18863:6:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"18862:14:14"},"returnParameters":{"id":4552,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4551,"mutability":"mutable","name":"downcasted","nameLocation":"18907:10:14","nodeType":"VariableDeclaration","scope":4568,"src":"18900:17:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int232","typeString":"int232"},"typeName":{"id":4550,"name":"int232","nodeType":"ElementaryTypeName","src":"18900:6:14","typeDescriptions":{"typeIdentifier":"t_int232","typeString":"int232"}},"visibility":"internal"}],"src":"18899:19:14"},"scope":5241,"src":"18845:198:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4590,"nodeType":"Block","src":"19478:124:14","statements":[{"expression":{"id":4581,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4576,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4574,"src":"19488:10:14","typeDescriptions":{"typeIdentifier":"t_int224","typeString":"int224"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4579,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4571,"src":"19508:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4578,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"19501:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_int224_$","typeString":"type(int224)"},"typeName":{"id":4577,"name":"int224","nodeType":"ElementaryTypeName","src":"19501:6:14","typeDescriptions":{}}},"id":4580,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19501:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int224","typeString":"int224"}},"src":"19488:26:14","typeDescriptions":{"typeIdentifier":"t_int224","typeString":"int224"}},"id":4582,"nodeType":"ExpressionStatement","src":"19488:26:14"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4586,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4584,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4574,"src":"19532:10:14","typeDescriptions":{"typeIdentifier":"t_int224","typeString":"int224"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":4585,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4571,"src":"19546:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"19532:19:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e203232342062697473","id":4587,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"19553:41:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_9d2acf551b2466898443b9bc3a403a4d86037386bc5a8960c1bbb0f204e69b79","typeString":"literal_string \"SafeCast: value doesn't fit in 224 bits\""},"value":"SafeCast: value doesn't fit in 224 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9d2acf551b2466898443b9bc3a403a4d86037386bc5a8960c1bbb0f204e69b79","typeString":"literal_string \"SafeCast: value doesn't fit in 224 bits\""}],"id":4583,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"19524:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4588,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19524:71:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4589,"nodeType":"ExpressionStatement","src":"19524:71:14"}]},"documentation":{"id":4569,"nodeType":"StructuredDocumentation","src":"19049:350:14","text":" @dev Returns the downcasted int224 from int256, reverting on\n overflow (when the input is less than smallest int224 or\n greater than largest int224).\n Counterpart to Solidity's `int224` operator.\n Requirements:\n - input must fit into 224 bits\n _Available since v4.7._"},"id":4591,"implemented":true,"kind":"function","modifiers":[],"name":"toInt224","nameLocation":"19413:8:14","nodeType":"FunctionDefinition","parameters":{"id":4572,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4571,"mutability":"mutable","name":"value","nameLocation":"19429:5:14","nodeType":"VariableDeclaration","scope":4591,"src":"19422:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4570,"name":"int256","nodeType":"ElementaryTypeName","src":"19422:6:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"19421:14:14"},"returnParameters":{"id":4575,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4574,"mutability":"mutable","name":"downcasted","nameLocation":"19466:10:14","nodeType":"VariableDeclaration","scope":4591,"src":"19459:17:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int224","typeString":"int224"},"typeName":{"id":4573,"name":"int224","nodeType":"ElementaryTypeName","src":"19459:6:14","typeDescriptions":{"typeIdentifier":"t_int224","typeString":"int224"}},"visibility":"internal"}],"src":"19458:19:14"},"scope":5241,"src":"19404:198:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4613,"nodeType":"Block","src":"20037:124:14","statements":[{"expression":{"id":4604,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4599,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4597,"src":"20047:10:14","typeDescriptions":{"typeIdentifier":"t_int216","typeString":"int216"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4602,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4594,"src":"20067:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4601,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"20060:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_int216_$","typeString":"type(int216)"},"typeName":{"id":4600,"name":"int216","nodeType":"ElementaryTypeName","src":"20060:6:14","typeDescriptions":{}}},"id":4603,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20060:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int216","typeString":"int216"}},"src":"20047:26:14","typeDescriptions":{"typeIdentifier":"t_int216","typeString":"int216"}},"id":4605,"nodeType":"ExpressionStatement","src":"20047:26:14"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4609,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4607,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4597,"src":"20091:10:14","typeDescriptions":{"typeIdentifier":"t_int216","typeString":"int216"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":4608,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4594,"src":"20105:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20091:19:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e203231362062697473","id":4610,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"20112:41:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_8966adc0aad8dc91b207c69c3eb4937e498af8cc706cfe7edd55f3a6ea53488d","typeString":"literal_string \"SafeCast: value doesn't fit in 216 bits\""},"value":"SafeCast: value doesn't fit in 216 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8966adc0aad8dc91b207c69c3eb4937e498af8cc706cfe7edd55f3a6ea53488d","typeString":"literal_string \"SafeCast: value doesn't fit in 216 bits\""}],"id":4606,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"20083:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4611,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20083:71:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4612,"nodeType":"ExpressionStatement","src":"20083:71:14"}]},"documentation":{"id":4592,"nodeType":"StructuredDocumentation","src":"19608:350:14","text":" @dev Returns the downcasted int216 from int256, reverting on\n overflow (when the input is less than smallest int216 or\n greater than largest int216).\n Counterpart to Solidity's `int216` operator.\n Requirements:\n - input must fit into 216 bits\n _Available since v4.7._"},"id":4614,"implemented":true,"kind":"function","modifiers":[],"name":"toInt216","nameLocation":"19972:8:14","nodeType":"FunctionDefinition","parameters":{"id":4595,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4594,"mutability":"mutable","name":"value","nameLocation":"19988:5:14","nodeType":"VariableDeclaration","scope":4614,"src":"19981:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4593,"name":"int256","nodeType":"ElementaryTypeName","src":"19981:6:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"19980:14:14"},"returnParameters":{"id":4598,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4597,"mutability":"mutable","name":"downcasted","nameLocation":"20025:10:14","nodeType":"VariableDeclaration","scope":4614,"src":"20018:17:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int216","typeString":"int216"},"typeName":{"id":4596,"name":"int216","nodeType":"ElementaryTypeName","src":"20018:6:14","typeDescriptions":{"typeIdentifier":"t_int216","typeString":"int216"}},"visibility":"internal"}],"src":"20017:19:14"},"scope":5241,"src":"19963:198:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4636,"nodeType":"Block","src":"20596:124:14","statements":[{"expression":{"id":4627,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4622,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4620,"src":"20606:10:14","typeDescriptions":{"typeIdentifier":"t_int208","typeString":"int208"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4625,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4617,"src":"20626:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4624,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"20619:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_int208_$","typeString":"type(int208)"},"typeName":{"id":4623,"name":"int208","nodeType":"ElementaryTypeName","src":"20619:6:14","typeDescriptions":{}}},"id":4626,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20619:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int208","typeString":"int208"}},"src":"20606:26:14","typeDescriptions":{"typeIdentifier":"t_int208","typeString":"int208"}},"id":4628,"nodeType":"ExpressionStatement","src":"20606:26:14"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4632,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4630,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4620,"src":"20650:10:14","typeDescriptions":{"typeIdentifier":"t_int208","typeString":"int208"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":4631,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4617,"src":"20664:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20650:19:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e203230382062697473","id":4633,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"20671:41:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_43d81217fa633fa1c6e88855de94fb990f5831ac266b0a90afa660e986ab5e23","typeString":"literal_string \"SafeCast: value doesn't fit in 208 bits\""},"value":"SafeCast: value doesn't fit in 208 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_43d81217fa633fa1c6e88855de94fb990f5831ac266b0a90afa660e986ab5e23","typeString":"literal_string \"SafeCast: value doesn't fit in 208 bits\""}],"id":4629,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"20642:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4634,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20642:71:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4635,"nodeType":"ExpressionStatement","src":"20642:71:14"}]},"documentation":{"id":4615,"nodeType":"StructuredDocumentation","src":"20167:350:14","text":" @dev Returns the downcasted int208 from int256, reverting on\n overflow (when the input is less than smallest int208 or\n greater than largest int208).\n Counterpart to Solidity's `int208` operator.\n Requirements:\n - input must fit into 208 bits\n _Available since v4.7._"},"id":4637,"implemented":true,"kind":"function","modifiers":[],"name":"toInt208","nameLocation":"20531:8:14","nodeType":"FunctionDefinition","parameters":{"id":4618,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4617,"mutability":"mutable","name":"value","nameLocation":"20547:5:14","nodeType":"VariableDeclaration","scope":4637,"src":"20540:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4616,"name":"int256","nodeType":"ElementaryTypeName","src":"20540:6:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"20539:14:14"},"returnParameters":{"id":4621,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4620,"mutability":"mutable","name":"downcasted","nameLocation":"20584:10:14","nodeType":"VariableDeclaration","scope":4637,"src":"20577:17:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int208","typeString":"int208"},"typeName":{"id":4619,"name":"int208","nodeType":"ElementaryTypeName","src":"20577:6:14","typeDescriptions":{"typeIdentifier":"t_int208","typeString":"int208"}},"visibility":"internal"}],"src":"20576:19:14"},"scope":5241,"src":"20522:198:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4659,"nodeType":"Block","src":"21155:124:14","statements":[{"expression":{"id":4650,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4645,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4643,"src":"21165:10:14","typeDescriptions":{"typeIdentifier":"t_int200","typeString":"int200"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4648,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4640,"src":"21185:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4647,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"21178:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_int200_$","typeString":"type(int200)"},"typeName":{"id":4646,"name":"int200","nodeType":"ElementaryTypeName","src":"21178:6:14","typeDescriptions":{}}},"id":4649,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21178:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int200","typeString":"int200"}},"src":"21165:26:14","typeDescriptions":{"typeIdentifier":"t_int200","typeString":"int200"}},"id":4651,"nodeType":"ExpressionStatement","src":"21165:26:14"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4655,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4653,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4643,"src":"21209:10:14","typeDescriptions":{"typeIdentifier":"t_int200","typeString":"int200"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":4654,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4640,"src":"21223:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"21209:19:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e203230302062697473","id":4656,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"21230:41:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_df8130f294fe2698967ea9ead82c4da9454490567d976d00551e0174e655314c","typeString":"literal_string \"SafeCast: value doesn't fit in 200 bits\""},"value":"SafeCast: value doesn't fit in 200 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_df8130f294fe2698967ea9ead82c4da9454490567d976d00551e0174e655314c","typeString":"literal_string \"SafeCast: value doesn't fit in 200 bits\""}],"id":4652,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"21201:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4657,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21201:71:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4658,"nodeType":"ExpressionStatement","src":"21201:71:14"}]},"documentation":{"id":4638,"nodeType":"StructuredDocumentation","src":"20726:350:14","text":" @dev Returns the downcasted int200 from int256, reverting on\n overflow (when the input is less than smallest int200 or\n greater than largest int200).\n Counterpart to Solidity's `int200` operator.\n Requirements:\n - input must fit into 200 bits\n _Available since v4.7._"},"id":4660,"implemented":true,"kind":"function","modifiers":[],"name":"toInt200","nameLocation":"21090:8:14","nodeType":"FunctionDefinition","parameters":{"id":4641,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4640,"mutability":"mutable","name":"value","nameLocation":"21106:5:14","nodeType":"VariableDeclaration","scope":4660,"src":"21099:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4639,"name":"int256","nodeType":"ElementaryTypeName","src":"21099:6:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"21098:14:14"},"returnParameters":{"id":4644,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4643,"mutability":"mutable","name":"downcasted","nameLocation":"21143:10:14","nodeType":"VariableDeclaration","scope":4660,"src":"21136:17:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int200","typeString":"int200"},"typeName":{"id":4642,"name":"int200","nodeType":"ElementaryTypeName","src":"21136:6:14","typeDescriptions":{"typeIdentifier":"t_int200","typeString":"int200"}},"visibility":"internal"}],"src":"21135:19:14"},"scope":5241,"src":"21081:198:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4682,"nodeType":"Block","src":"21714:124:14","statements":[{"expression":{"id":4673,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4668,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4666,"src":"21724:10:14","typeDescriptions":{"typeIdentifier":"t_int192","typeString":"int192"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4671,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4663,"src":"21744:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4670,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"21737:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_int192_$","typeString":"type(int192)"},"typeName":{"id":4669,"name":"int192","nodeType":"ElementaryTypeName","src":"21737:6:14","typeDescriptions":{}}},"id":4672,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21737:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int192","typeString":"int192"}},"src":"21724:26:14","typeDescriptions":{"typeIdentifier":"t_int192","typeString":"int192"}},"id":4674,"nodeType":"ExpressionStatement","src":"21724:26:14"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4678,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4676,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4666,"src":"21768:10:14","typeDescriptions":{"typeIdentifier":"t_int192","typeString":"int192"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":4677,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4663,"src":"21782:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"21768:19:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e203139322062697473","id":4679,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"21789:41:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_112978800f12a1c4f1eab82789f7b6defd49dc1c17ba270a84ffc28392fb05ae","typeString":"literal_string \"SafeCast: value doesn't fit in 192 bits\""},"value":"SafeCast: value doesn't fit in 192 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_112978800f12a1c4f1eab82789f7b6defd49dc1c17ba270a84ffc28392fb05ae","typeString":"literal_string \"SafeCast: value doesn't fit in 192 bits\""}],"id":4675,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"21760:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4680,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21760:71:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4681,"nodeType":"ExpressionStatement","src":"21760:71:14"}]},"documentation":{"id":4661,"nodeType":"StructuredDocumentation","src":"21285:350:14","text":" @dev Returns the downcasted int192 from int256, reverting on\n overflow (when the input is less than smallest int192 or\n greater than largest int192).\n Counterpart to Solidity's `int192` operator.\n Requirements:\n - input must fit into 192 bits\n _Available since v4.7._"},"id":4683,"implemented":true,"kind":"function","modifiers":[],"name":"toInt192","nameLocation":"21649:8:14","nodeType":"FunctionDefinition","parameters":{"id":4664,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4663,"mutability":"mutable","name":"value","nameLocation":"21665:5:14","nodeType":"VariableDeclaration","scope":4683,"src":"21658:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4662,"name":"int256","nodeType":"ElementaryTypeName","src":"21658:6:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"21657:14:14"},"returnParameters":{"id":4667,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4666,"mutability":"mutable","name":"downcasted","nameLocation":"21702:10:14","nodeType":"VariableDeclaration","scope":4683,"src":"21695:17:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int192","typeString":"int192"},"typeName":{"id":4665,"name":"int192","nodeType":"ElementaryTypeName","src":"21695:6:14","typeDescriptions":{"typeIdentifier":"t_int192","typeString":"int192"}},"visibility":"internal"}],"src":"21694:19:14"},"scope":5241,"src":"21640:198:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4705,"nodeType":"Block","src":"22273:124:14","statements":[{"expression":{"id":4696,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4691,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4689,"src":"22283:10:14","typeDescriptions":{"typeIdentifier":"t_int184","typeString":"int184"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4694,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4686,"src":"22303:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4693,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"22296:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_int184_$","typeString":"type(int184)"},"typeName":{"id":4692,"name":"int184","nodeType":"ElementaryTypeName","src":"22296:6:14","typeDescriptions":{}}},"id":4695,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22296:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int184","typeString":"int184"}},"src":"22283:26:14","typeDescriptions":{"typeIdentifier":"t_int184","typeString":"int184"}},"id":4697,"nodeType":"ExpressionStatement","src":"22283:26:14"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4699,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4689,"src":"22327:10:14","typeDescriptions":{"typeIdentifier":"t_int184","typeString":"int184"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":4700,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4686,"src":"22341:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"22327:19:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e203138342062697473","id":4702,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"22348:41:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_86c53d89b1944d561ecfa42e859033241d1df6ea8d42a57ae02f79d45de4aa75","typeString":"literal_string \"SafeCast: value doesn't fit in 184 bits\""},"value":"SafeCast: value doesn't fit in 184 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_86c53d89b1944d561ecfa42e859033241d1df6ea8d42a57ae02f79d45de4aa75","typeString":"literal_string \"SafeCast: value doesn't fit in 184 bits\""}],"id":4698,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"22319:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4703,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22319:71:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4704,"nodeType":"ExpressionStatement","src":"22319:71:14"}]},"documentation":{"id":4684,"nodeType":"StructuredDocumentation","src":"21844:350:14","text":" @dev Returns the downcasted int184 from int256, reverting on\n overflow (when the input is less than smallest int184 or\n greater than largest int184).\n Counterpart to Solidity's `int184` operator.\n Requirements:\n - input must fit into 184 bits\n _Available since v4.7._"},"id":4706,"implemented":true,"kind":"function","modifiers":[],"name":"toInt184","nameLocation":"22208:8:14","nodeType":"FunctionDefinition","parameters":{"id":4687,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4686,"mutability":"mutable","name":"value","nameLocation":"22224:5:14","nodeType":"VariableDeclaration","scope":4706,"src":"22217:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4685,"name":"int256","nodeType":"ElementaryTypeName","src":"22217:6:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"22216:14:14"},"returnParameters":{"id":4690,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4689,"mutability":"mutable","name":"downcasted","nameLocation":"22261:10:14","nodeType":"VariableDeclaration","scope":4706,"src":"22254:17:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int184","typeString":"int184"},"typeName":{"id":4688,"name":"int184","nodeType":"ElementaryTypeName","src":"22254:6:14","typeDescriptions":{"typeIdentifier":"t_int184","typeString":"int184"}},"visibility":"internal"}],"src":"22253:19:14"},"scope":5241,"src":"22199:198:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4728,"nodeType":"Block","src":"22832:124:14","statements":[{"expression":{"id":4719,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4714,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4712,"src":"22842:10:14","typeDescriptions":{"typeIdentifier":"t_int176","typeString":"int176"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4717,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4709,"src":"22862:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4716,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"22855:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_int176_$","typeString":"type(int176)"},"typeName":{"id":4715,"name":"int176","nodeType":"ElementaryTypeName","src":"22855:6:14","typeDescriptions":{}}},"id":4718,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22855:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int176","typeString":"int176"}},"src":"22842:26:14","typeDescriptions":{"typeIdentifier":"t_int176","typeString":"int176"}},"id":4720,"nodeType":"ExpressionStatement","src":"22842:26:14"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4724,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4722,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4712,"src":"22886:10:14","typeDescriptions":{"typeIdentifier":"t_int176","typeString":"int176"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":4723,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4709,"src":"22900:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"22886:19:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e203137362062697473","id":4725,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"22907:41:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_4069e970f734339c7841e84a1b26f503bff22b76884c1168dc24e2e6af9b1e30","typeString":"literal_string \"SafeCast: value doesn't fit in 176 bits\""},"value":"SafeCast: value doesn't fit in 176 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_4069e970f734339c7841e84a1b26f503bff22b76884c1168dc24e2e6af9b1e30","typeString":"literal_string \"SafeCast: value doesn't fit in 176 bits\""}],"id":4721,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"22878:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4726,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22878:71:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4727,"nodeType":"ExpressionStatement","src":"22878:71:14"}]},"documentation":{"id":4707,"nodeType":"StructuredDocumentation","src":"22403:350:14","text":" @dev Returns the downcasted int176 from int256, reverting on\n overflow (when the input is less than smallest int176 or\n greater than largest int176).\n Counterpart to Solidity's `int176` operator.\n Requirements:\n - input must fit into 176 bits\n _Available since v4.7._"},"id":4729,"implemented":true,"kind":"function","modifiers":[],"name":"toInt176","nameLocation":"22767:8:14","nodeType":"FunctionDefinition","parameters":{"id":4710,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4709,"mutability":"mutable","name":"value","nameLocation":"22783:5:14","nodeType":"VariableDeclaration","scope":4729,"src":"22776:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4708,"name":"int256","nodeType":"ElementaryTypeName","src":"22776:6:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"22775:14:14"},"returnParameters":{"id":4713,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4712,"mutability":"mutable","name":"downcasted","nameLocation":"22820:10:14","nodeType":"VariableDeclaration","scope":4729,"src":"22813:17:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int176","typeString":"int176"},"typeName":{"id":4711,"name":"int176","nodeType":"ElementaryTypeName","src":"22813:6:14","typeDescriptions":{"typeIdentifier":"t_int176","typeString":"int176"}},"visibility":"internal"}],"src":"22812:19:14"},"scope":5241,"src":"22758:198:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4751,"nodeType":"Block","src":"23391:124:14","statements":[{"expression":{"id":4742,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4737,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4735,"src":"23401:10:14","typeDescriptions":{"typeIdentifier":"t_int168","typeString":"int168"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4740,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4732,"src":"23421:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4739,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"23414:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_int168_$","typeString":"type(int168)"},"typeName":{"id":4738,"name":"int168","nodeType":"ElementaryTypeName","src":"23414:6:14","typeDescriptions":{}}},"id":4741,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23414:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int168","typeString":"int168"}},"src":"23401:26:14","typeDescriptions":{"typeIdentifier":"t_int168","typeString":"int168"}},"id":4743,"nodeType":"ExpressionStatement","src":"23401:26:14"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4747,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4745,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4735,"src":"23445:10:14","typeDescriptions":{"typeIdentifier":"t_int168","typeString":"int168"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":4746,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4732,"src":"23459:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"23445:19:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e203136382062697473","id":4748,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"23466:41:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_67ef32a3cbe7b34392347d335b0a7ae95c74a34ca40e4efb58f6c9a3154e85a1","typeString":"literal_string \"SafeCast: value doesn't fit in 168 bits\""},"value":"SafeCast: value doesn't fit in 168 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_67ef32a3cbe7b34392347d335b0a7ae95c74a34ca40e4efb58f6c9a3154e85a1","typeString":"literal_string \"SafeCast: value doesn't fit in 168 bits\""}],"id":4744,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"23437:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4749,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23437:71:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4750,"nodeType":"ExpressionStatement","src":"23437:71:14"}]},"documentation":{"id":4730,"nodeType":"StructuredDocumentation","src":"22962:350:14","text":" @dev Returns the downcasted int168 from int256, reverting on\n overflow (when the input is less than smallest int168 or\n greater than largest int168).\n Counterpart to Solidity's `int168` operator.\n Requirements:\n - input must fit into 168 bits\n _Available since v4.7._"},"id":4752,"implemented":true,"kind":"function","modifiers":[],"name":"toInt168","nameLocation":"23326:8:14","nodeType":"FunctionDefinition","parameters":{"id":4733,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4732,"mutability":"mutable","name":"value","nameLocation":"23342:5:14","nodeType":"VariableDeclaration","scope":4752,"src":"23335:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4731,"name":"int256","nodeType":"ElementaryTypeName","src":"23335:6:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"23334:14:14"},"returnParameters":{"id":4736,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4735,"mutability":"mutable","name":"downcasted","nameLocation":"23379:10:14","nodeType":"VariableDeclaration","scope":4752,"src":"23372:17:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int168","typeString":"int168"},"typeName":{"id":4734,"name":"int168","nodeType":"ElementaryTypeName","src":"23372:6:14","typeDescriptions":{"typeIdentifier":"t_int168","typeString":"int168"}},"visibility":"internal"}],"src":"23371:19:14"},"scope":5241,"src":"23317:198:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4774,"nodeType":"Block","src":"23950:124:14","statements":[{"expression":{"id":4765,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4760,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4758,"src":"23960:10:14","typeDescriptions":{"typeIdentifier":"t_int160","typeString":"int160"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4763,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4755,"src":"23980:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4762,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"23973:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_int160_$","typeString":"type(int160)"},"typeName":{"id":4761,"name":"int160","nodeType":"ElementaryTypeName","src":"23973:6:14","typeDescriptions":{}}},"id":4764,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23973:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int160","typeString":"int160"}},"src":"23960:26:14","typeDescriptions":{"typeIdentifier":"t_int160","typeString":"int160"}},"id":4766,"nodeType":"ExpressionStatement","src":"23960:26:14"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4770,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4768,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4758,"src":"24004:10:14","typeDescriptions":{"typeIdentifier":"t_int160","typeString":"int160"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":4769,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4755,"src":"24018:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"24004:19:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e203136302062697473","id":4771,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"24025:41:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_976ecce9083debfe29d3a99b955facf24b8725f1b964d1a5bb4197ffcd60ab9d","typeString":"literal_string \"SafeCast: value doesn't fit in 160 bits\""},"value":"SafeCast: value doesn't fit in 160 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_976ecce9083debfe29d3a99b955facf24b8725f1b964d1a5bb4197ffcd60ab9d","typeString":"literal_string \"SafeCast: value doesn't fit in 160 bits\""}],"id":4767,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"23996:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4772,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23996:71:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4773,"nodeType":"ExpressionStatement","src":"23996:71:14"}]},"documentation":{"id":4753,"nodeType":"StructuredDocumentation","src":"23521:350:14","text":" @dev Returns the downcasted int160 from int256, reverting on\n overflow (when the input is less than smallest int160 or\n greater than largest int160).\n Counterpart to Solidity's `int160` operator.\n Requirements:\n - input must fit into 160 bits\n _Available since v4.7._"},"id":4775,"implemented":true,"kind":"function","modifiers":[],"name":"toInt160","nameLocation":"23885:8:14","nodeType":"FunctionDefinition","parameters":{"id":4756,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4755,"mutability":"mutable","name":"value","nameLocation":"23901:5:14","nodeType":"VariableDeclaration","scope":4775,"src":"23894:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4754,"name":"int256","nodeType":"ElementaryTypeName","src":"23894:6:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"23893:14:14"},"returnParameters":{"id":4759,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4758,"mutability":"mutable","name":"downcasted","nameLocation":"23938:10:14","nodeType":"VariableDeclaration","scope":4775,"src":"23931:17:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int160","typeString":"int160"},"typeName":{"id":4757,"name":"int160","nodeType":"ElementaryTypeName","src":"23931:6:14","typeDescriptions":{"typeIdentifier":"t_int160","typeString":"int160"}},"visibility":"internal"}],"src":"23930:19:14"},"scope":5241,"src":"23876:198:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4797,"nodeType":"Block","src":"24509:124:14","statements":[{"expression":{"id":4788,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4783,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4781,"src":"24519:10:14","typeDescriptions":{"typeIdentifier":"t_int152","typeString":"int152"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4786,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4778,"src":"24539:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4785,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"24532:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_int152_$","typeString":"type(int152)"},"typeName":{"id":4784,"name":"int152","nodeType":"ElementaryTypeName","src":"24532:6:14","typeDescriptions":{}}},"id":4787,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24532:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int152","typeString":"int152"}},"src":"24519:26:14","typeDescriptions":{"typeIdentifier":"t_int152","typeString":"int152"}},"id":4789,"nodeType":"ExpressionStatement","src":"24519:26:14"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4793,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4791,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4781,"src":"24563:10:14","typeDescriptions":{"typeIdentifier":"t_int152","typeString":"int152"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":4792,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4778,"src":"24577:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"24563:19:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e203135322062697473","id":4794,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"24584:41:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_211cad43a2caf5f01e34af51190b8a7b6f3d9c195bd25586ea12242191b97831","typeString":"literal_string \"SafeCast: value doesn't fit in 152 bits\""},"value":"SafeCast: value doesn't fit in 152 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_211cad43a2caf5f01e34af51190b8a7b6f3d9c195bd25586ea12242191b97831","typeString":"literal_string \"SafeCast: value doesn't fit in 152 bits\""}],"id":4790,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"24555:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4795,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24555:71:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4796,"nodeType":"ExpressionStatement","src":"24555:71:14"}]},"documentation":{"id":4776,"nodeType":"StructuredDocumentation","src":"24080:350:14","text":" @dev Returns the downcasted int152 from int256, reverting on\n overflow (when the input is less than smallest int152 or\n greater than largest int152).\n Counterpart to Solidity's `int152` operator.\n Requirements:\n - input must fit into 152 bits\n _Available since v4.7._"},"id":4798,"implemented":true,"kind":"function","modifiers":[],"name":"toInt152","nameLocation":"24444:8:14","nodeType":"FunctionDefinition","parameters":{"id":4779,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4778,"mutability":"mutable","name":"value","nameLocation":"24460:5:14","nodeType":"VariableDeclaration","scope":4798,"src":"24453:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4777,"name":"int256","nodeType":"ElementaryTypeName","src":"24453:6:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"24452:14:14"},"returnParameters":{"id":4782,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4781,"mutability":"mutable","name":"downcasted","nameLocation":"24497:10:14","nodeType":"VariableDeclaration","scope":4798,"src":"24490:17:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int152","typeString":"int152"},"typeName":{"id":4780,"name":"int152","nodeType":"ElementaryTypeName","src":"24490:6:14","typeDescriptions":{"typeIdentifier":"t_int152","typeString":"int152"}},"visibility":"internal"}],"src":"24489:19:14"},"scope":5241,"src":"24435:198:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4820,"nodeType":"Block","src":"25068:124:14","statements":[{"expression":{"id":4811,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4806,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4804,"src":"25078:10:14","typeDescriptions":{"typeIdentifier":"t_int144","typeString":"int144"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4809,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4801,"src":"25098:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4808,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25091:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_int144_$","typeString":"type(int144)"},"typeName":{"id":4807,"name":"int144","nodeType":"ElementaryTypeName","src":"25091:6:14","typeDescriptions":{}}},"id":4810,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25091:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int144","typeString":"int144"}},"src":"25078:26:14","typeDescriptions":{"typeIdentifier":"t_int144","typeString":"int144"}},"id":4812,"nodeType":"ExpressionStatement","src":"25078:26:14"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4816,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4814,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4804,"src":"25122:10:14","typeDescriptions":{"typeIdentifier":"t_int144","typeString":"int144"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":4815,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4801,"src":"25136:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"25122:19:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e203134342062697473","id":4817,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"25143:41:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_17d8c5a6d3b2fd2517ba2e4a2ac70a3367cd362448f8338aaa6edf8bfd812bab","typeString":"literal_string \"SafeCast: value doesn't fit in 144 bits\""},"value":"SafeCast: value doesn't fit in 144 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_17d8c5a6d3b2fd2517ba2e4a2ac70a3367cd362448f8338aaa6edf8bfd812bab","typeString":"literal_string \"SafeCast: value doesn't fit in 144 bits\""}],"id":4813,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"25114:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4818,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25114:71:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4819,"nodeType":"ExpressionStatement","src":"25114:71:14"}]},"documentation":{"id":4799,"nodeType":"StructuredDocumentation","src":"24639:350:14","text":" @dev Returns the downcasted int144 from int256, reverting on\n overflow (when the input is less than smallest int144 or\n greater than largest int144).\n Counterpart to Solidity's `int144` operator.\n Requirements:\n - input must fit into 144 bits\n _Available since v4.7._"},"id":4821,"implemented":true,"kind":"function","modifiers":[],"name":"toInt144","nameLocation":"25003:8:14","nodeType":"FunctionDefinition","parameters":{"id":4802,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4801,"mutability":"mutable","name":"value","nameLocation":"25019:5:14","nodeType":"VariableDeclaration","scope":4821,"src":"25012:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4800,"name":"int256","nodeType":"ElementaryTypeName","src":"25012:6:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"25011:14:14"},"returnParameters":{"id":4805,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4804,"mutability":"mutable","name":"downcasted","nameLocation":"25056:10:14","nodeType":"VariableDeclaration","scope":4821,"src":"25049:17:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int144","typeString":"int144"},"typeName":{"id":4803,"name":"int144","nodeType":"ElementaryTypeName","src":"25049:6:14","typeDescriptions":{"typeIdentifier":"t_int144","typeString":"int144"}},"visibility":"internal"}],"src":"25048:19:14"},"scope":5241,"src":"24994:198:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4843,"nodeType":"Block","src":"25627:124:14","statements":[{"expression":{"id":4834,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4829,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4827,"src":"25637:10:14","typeDescriptions":{"typeIdentifier":"t_int136","typeString":"int136"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4832,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4824,"src":"25657:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4831,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25650:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_int136_$","typeString":"type(int136)"},"typeName":{"id":4830,"name":"int136","nodeType":"ElementaryTypeName","src":"25650:6:14","typeDescriptions":{}}},"id":4833,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25650:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int136","typeString":"int136"}},"src":"25637:26:14","typeDescriptions":{"typeIdentifier":"t_int136","typeString":"int136"}},"id":4835,"nodeType":"ExpressionStatement","src":"25637:26:14"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4839,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4837,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4827,"src":"25681:10:14","typeDescriptions":{"typeIdentifier":"t_int136","typeString":"int136"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":4838,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4824,"src":"25695:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"25681:19:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e203133362062697473","id":4840,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"25702:41:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_8b1f81e2e2913e1cee9dba7bcd9837bbf8a8122edaac4afc578271db3c25a56a","typeString":"literal_string \"SafeCast: value doesn't fit in 136 bits\""},"value":"SafeCast: value doesn't fit in 136 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8b1f81e2e2913e1cee9dba7bcd9837bbf8a8122edaac4afc578271db3c25a56a","typeString":"literal_string \"SafeCast: value doesn't fit in 136 bits\""}],"id":4836,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"25673:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4841,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25673:71:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4842,"nodeType":"ExpressionStatement","src":"25673:71:14"}]},"documentation":{"id":4822,"nodeType":"StructuredDocumentation","src":"25198:350:14","text":" @dev Returns the downcasted int136 from int256, reverting on\n overflow (when the input is less than smallest int136 or\n greater than largest int136).\n Counterpart to Solidity's `int136` operator.\n Requirements:\n - input must fit into 136 bits\n _Available since v4.7._"},"id":4844,"implemented":true,"kind":"function","modifiers":[],"name":"toInt136","nameLocation":"25562:8:14","nodeType":"FunctionDefinition","parameters":{"id":4825,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4824,"mutability":"mutable","name":"value","nameLocation":"25578:5:14","nodeType":"VariableDeclaration","scope":4844,"src":"25571:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4823,"name":"int256","nodeType":"ElementaryTypeName","src":"25571:6:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"25570:14:14"},"returnParameters":{"id":4828,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4827,"mutability":"mutable","name":"downcasted","nameLocation":"25615:10:14","nodeType":"VariableDeclaration","scope":4844,"src":"25608:17:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int136","typeString":"int136"},"typeName":{"id":4826,"name":"int136","nodeType":"ElementaryTypeName","src":"25608:6:14","typeDescriptions":{"typeIdentifier":"t_int136","typeString":"int136"}},"visibility":"internal"}],"src":"25607:19:14"},"scope":5241,"src":"25553:198:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4866,"nodeType":"Block","src":"26186:124:14","statements":[{"expression":{"id":4857,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4852,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4850,"src":"26196:10:14","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4855,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4847,"src":"26216:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4854,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"26209:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_int128_$","typeString":"type(int128)"},"typeName":{"id":4853,"name":"int128","nodeType":"ElementaryTypeName","src":"26209:6:14","typeDescriptions":{}}},"id":4856,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26209:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"src":"26196:26:14","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"id":4858,"nodeType":"ExpressionStatement","src":"26196:26:14"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4862,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4860,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4850,"src":"26240:10:14","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":4861,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4847,"src":"26254:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"26240:19:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e203132382062697473","id":4863,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"26261:41:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_47a1e201974f94d3d1a31c8b08ae18c6966c758bdcd4400020012b98cc55426c","typeString":"literal_string \"SafeCast: value doesn't fit in 128 bits\""},"value":"SafeCast: value doesn't fit in 128 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_47a1e201974f94d3d1a31c8b08ae18c6966c758bdcd4400020012b98cc55426c","typeString":"literal_string \"SafeCast: value doesn't fit in 128 bits\""}],"id":4859,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"26232:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4864,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26232:71:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4865,"nodeType":"ExpressionStatement","src":"26232:71:14"}]},"documentation":{"id":4845,"nodeType":"StructuredDocumentation","src":"25757:350:14","text":" @dev Returns the downcasted int128 from int256, reverting on\n overflow (when the input is less than smallest int128 or\n greater than largest int128).\n Counterpart to Solidity's `int128` operator.\n Requirements:\n - input must fit into 128 bits\n _Available since v3.1._"},"id":4867,"implemented":true,"kind":"function","modifiers":[],"name":"toInt128","nameLocation":"26121:8:14","nodeType":"FunctionDefinition","parameters":{"id":4848,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4847,"mutability":"mutable","name":"value","nameLocation":"26137:5:14","nodeType":"VariableDeclaration","scope":4867,"src":"26130:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4846,"name":"int256","nodeType":"ElementaryTypeName","src":"26130:6:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"26129:14:14"},"returnParameters":{"id":4851,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4850,"mutability":"mutable","name":"downcasted","nameLocation":"26174:10:14","nodeType":"VariableDeclaration","scope":4867,"src":"26167:17:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"},"typeName":{"id":4849,"name":"int128","nodeType":"ElementaryTypeName","src":"26167:6:14","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"visibility":"internal"}],"src":"26166:19:14"},"scope":5241,"src":"26112:198:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4889,"nodeType":"Block","src":"26745:124:14","statements":[{"expression":{"id":4880,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4875,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4873,"src":"26755:10:14","typeDescriptions":{"typeIdentifier":"t_int120","typeString":"int120"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4878,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4870,"src":"26775:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4877,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"26768:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_int120_$","typeString":"type(int120)"},"typeName":{"id":4876,"name":"int120","nodeType":"ElementaryTypeName","src":"26768:6:14","typeDescriptions":{}}},"id":4879,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26768:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int120","typeString":"int120"}},"src":"26755:26:14","typeDescriptions":{"typeIdentifier":"t_int120","typeString":"int120"}},"id":4881,"nodeType":"ExpressionStatement","src":"26755:26:14"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4885,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4883,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4873,"src":"26799:10:14","typeDescriptions":{"typeIdentifier":"t_int120","typeString":"int120"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":4884,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4870,"src":"26813:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"26799:19:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e203132302062697473","id":4886,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"26820:41:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_3c40c26bb27060cce77002ca0c426dcc1bef2d367c195ca2eb24bd8b2cc1bb09","typeString":"literal_string \"SafeCast: value doesn't fit in 120 bits\""},"value":"SafeCast: value doesn't fit in 120 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_3c40c26bb27060cce77002ca0c426dcc1bef2d367c195ca2eb24bd8b2cc1bb09","typeString":"literal_string \"SafeCast: value doesn't fit in 120 bits\""}],"id":4882,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"26791:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4887,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26791:71:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4888,"nodeType":"ExpressionStatement","src":"26791:71:14"}]},"documentation":{"id":4868,"nodeType":"StructuredDocumentation","src":"26316:350:14","text":" @dev Returns the downcasted int120 from int256, reverting on\n overflow (when the input is less than smallest int120 or\n greater than largest int120).\n Counterpart to Solidity's `int120` operator.\n Requirements:\n - input must fit into 120 bits\n _Available since v4.7._"},"id":4890,"implemented":true,"kind":"function","modifiers":[],"name":"toInt120","nameLocation":"26680:8:14","nodeType":"FunctionDefinition","parameters":{"id":4871,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4870,"mutability":"mutable","name":"value","nameLocation":"26696:5:14","nodeType":"VariableDeclaration","scope":4890,"src":"26689:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4869,"name":"int256","nodeType":"ElementaryTypeName","src":"26689:6:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"26688:14:14"},"returnParameters":{"id":4874,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4873,"mutability":"mutable","name":"downcasted","nameLocation":"26733:10:14","nodeType":"VariableDeclaration","scope":4890,"src":"26726:17:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int120","typeString":"int120"},"typeName":{"id":4872,"name":"int120","nodeType":"ElementaryTypeName","src":"26726:6:14","typeDescriptions":{"typeIdentifier":"t_int120","typeString":"int120"}},"visibility":"internal"}],"src":"26725:19:14"},"scope":5241,"src":"26671:198:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4912,"nodeType":"Block","src":"27304:124:14","statements":[{"expression":{"id":4903,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4898,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4896,"src":"27314:10:14","typeDescriptions":{"typeIdentifier":"t_int112","typeString":"int112"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4901,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4893,"src":"27334:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4900,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"27327:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_int112_$","typeString":"type(int112)"},"typeName":{"id":4899,"name":"int112","nodeType":"ElementaryTypeName","src":"27327:6:14","typeDescriptions":{}}},"id":4902,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27327:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int112","typeString":"int112"}},"src":"27314:26:14","typeDescriptions":{"typeIdentifier":"t_int112","typeString":"int112"}},"id":4904,"nodeType":"ExpressionStatement","src":"27314:26:14"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4908,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4906,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4896,"src":"27358:10:14","typeDescriptions":{"typeIdentifier":"t_int112","typeString":"int112"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":4907,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4893,"src":"27372:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"27358:19:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e203131322062697473","id":4909,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"27379:41:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_45659ae152ef697531e1c1115de07c87af91ac22466c3e76b808821799776efd","typeString":"literal_string \"SafeCast: value doesn't fit in 112 bits\""},"value":"SafeCast: value doesn't fit in 112 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_45659ae152ef697531e1c1115de07c87af91ac22466c3e76b808821799776efd","typeString":"literal_string \"SafeCast: value doesn't fit in 112 bits\""}],"id":4905,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"27350:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4910,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27350:71:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4911,"nodeType":"ExpressionStatement","src":"27350:71:14"}]},"documentation":{"id":4891,"nodeType":"StructuredDocumentation","src":"26875:350:14","text":" @dev Returns the downcasted int112 from int256, reverting on\n overflow (when the input is less than smallest int112 or\n greater than largest int112).\n Counterpart to Solidity's `int112` operator.\n Requirements:\n - input must fit into 112 bits\n _Available since v4.7._"},"id":4913,"implemented":true,"kind":"function","modifiers":[],"name":"toInt112","nameLocation":"27239:8:14","nodeType":"FunctionDefinition","parameters":{"id":4894,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4893,"mutability":"mutable","name":"value","nameLocation":"27255:5:14","nodeType":"VariableDeclaration","scope":4913,"src":"27248:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4892,"name":"int256","nodeType":"ElementaryTypeName","src":"27248:6:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"27247:14:14"},"returnParameters":{"id":4897,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4896,"mutability":"mutable","name":"downcasted","nameLocation":"27292:10:14","nodeType":"VariableDeclaration","scope":4913,"src":"27285:17:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int112","typeString":"int112"},"typeName":{"id":4895,"name":"int112","nodeType":"ElementaryTypeName","src":"27285:6:14","typeDescriptions":{"typeIdentifier":"t_int112","typeString":"int112"}},"visibility":"internal"}],"src":"27284:19:14"},"scope":5241,"src":"27230:198:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4935,"nodeType":"Block","src":"27863:124:14","statements":[{"expression":{"id":4926,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4921,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4919,"src":"27873:10:14","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4924,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4916,"src":"27893:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4923,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"27886:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_int104_$","typeString":"type(int104)"},"typeName":{"id":4922,"name":"int104","nodeType":"ElementaryTypeName","src":"27886:6:14","typeDescriptions":{}}},"id":4925,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27886:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"src":"27873:26:14","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"id":4927,"nodeType":"ExpressionStatement","src":"27873:26:14"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4931,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4929,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4919,"src":"27917:10:14","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":4930,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4916,"src":"27931:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"27917:19:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e203130342062697473","id":4932,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"27938:41:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_5d7f3e1b7e9f9a06fded6b093c6fd1473ca0a14cc4bb683db904e803e2482981","typeString":"literal_string \"SafeCast: value doesn't fit in 104 bits\""},"value":"SafeCast: value doesn't fit in 104 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5d7f3e1b7e9f9a06fded6b093c6fd1473ca0a14cc4bb683db904e803e2482981","typeString":"literal_string \"SafeCast: value doesn't fit in 104 bits\""}],"id":4928,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"27909:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4933,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27909:71:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4934,"nodeType":"ExpressionStatement","src":"27909:71:14"}]},"documentation":{"id":4914,"nodeType":"StructuredDocumentation","src":"27434:350:14","text":" @dev Returns the downcasted int104 from int256, reverting on\n overflow (when the input is less than smallest int104 or\n greater than largest int104).\n Counterpart to Solidity's `int104` operator.\n Requirements:\n - input must fit into 104 bits\n _Available since v4.7._"},"id":4936,"implemented":true,"kind":"function","modifiers":[],"name":"toInt104","nameLocation":"27798:8:14","nodeType":"FunctionDefinition","parameters":{"id":4917,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4916,"mutability":"mutable","name":"value","nameLocation":"27814:5:14","nodeType":"VariableDeclaration","scope":4936,"src":"27807:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4915,"name":"int256","nodeType":"ElementaryTypeName","src":"27807:6:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"27806:14:14"},"returnParameters":{"id":4920,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4919,"mutability":"mutable","name":"downcasted","nameLocation":"27851:10:14","nodeType":"VariableDeclaration","scope":4936,"src":"27844:17:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"},"typeName":{"id":4918,"name":"int104","nodeType":"ElementaryTypeName","src":"27844:6:14","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"visibility":"internal"}],"src":"27843:19:14"},"scope":5241,"src":"27789:198:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4958,"nodeType":"Block","src":"28415:122:14","statements":[{"expression":{"id":4949,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4944,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4942,"src":"28425:10:14","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4947,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4939,"src":"28444:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4946,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"28438:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_int96_$","typeString":"type(int96)"},"typeName":{"id":4945,"name":"int96","nodeType":"ElementaryTypeName","src":"28438:5:14","typeDescriptions":{}}},"id":4948,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28438:12:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"src":"28425:25:14","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"id":4950,"nodeType":"ExpressionStatement","src":"28425:25:14"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4954,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4952,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4942,"src":"28468:10:14","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":4953,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4939,"src":"28482:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"28468:19:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e2039362062697473","id":4955,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"28489:40:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_06d20189090e973729391526269baef79c35dd621633195648e5f8309eef9e19","typeString":"literal_string \"SafeCast: value doesn't fit in 96 bits\""},"value":"SafeCast: value doesn't fit in 96 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_06d20189090e973729391526269baef79c35dd621633195648e5f8309eef9e19","typeString":"literal_string \"SafeCast: value doesn't fit in 96 bits\""}],"id":4951,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"28460:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4956,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28460:70:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4957,"nodeType":"ExpressionStatement","src":"28460:70:14"}]},"documentation":{"id":4937,"nodeType":"StructuredDocumentation","src":"27993:345:14","text":" @dev Returns the downcasted int96 from int256, reverting on\n overflow (when the input is less than smallest int96 or\n greater than largest int96).\n Counterpart to Solidity's `int96` operator.\n Requirements:\n - input must fit into 96 bits\n _Available since v4.7._"},"id":4959,"implemented":true,"kind":"function","modifiers":[],"name":"toInt96","nameLocation":"28352:7:14","nodeType":"FunctionDefinition","parameters":{"id":4940,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4939,"mutability":"mutable","name":"value","nameLocation":"28367:5:14","nodeType":"VariableDeclaration","scope":4959,"src":"28360:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4938,"name":"int256","nodeType":"ElementaryTypeName","src":"28360:6:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"28359:14:14"},"returnParameters":{"id":4943,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4942,"mutability":"mutable","name":"downcasted","nameLocation":"28403:10:14","nodeType":"VariableDeclaration","scope":4959,"src":"28397:16:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":4941,"name":"int96","nodeType":"ElementaryTypeName","src":"28397:5:14","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"}],"src":"28396:18:14"},"scope":5241,"src":"28343:194:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4981,"nodeType":"Block","src":"28965:122:14","statements":[{"expression":{"id":4972,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4967,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4965,"src":"28975:10:14","typeDescriptions":{"typeIdentifier":"t_int88","typeString":"int88"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4970,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4962,"src":"28994:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4969,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"28988:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_int88_$","typeString":"type(int88)"},"typeName":{"id":4968,"name":"int88","nodeType":"ElementaryTypeName","src":"28988:5:14","typeDescriptions":{}}},"id":4971,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28988:12:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int88","typeString":"int88"}},"src":"28975:25:14","typeDescriptions":{"typeIdentifier":"t_int88","typeString":"int88"}},"id":4973,"nodeType":"ExpressionStatement","src":"28975:25:14"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4977,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4975,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4965,"src":"29018:10:14","typeDescriptions":{"typeIdentifier":"t_int88","typeString":"int88"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":4976,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4962,"src":"29032:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"29018:19:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e2038382062697473","id":4978,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"29039:40:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_ae080bd7a76a46f0a0caf00941bc2cdf6002799ca2813a3af7295019576d715d","typeString":"literal_string \"SafeCast: value doesn't fit in 88 bits\""},"value":"SafeCast: value doesn't fit in 88 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ae080bd7a76a46f0a0caf00941bc2cdf6002799ca2813a3af7295019576d715d","typeString":"literal_string \"SafeCast: value doesn't fit in 88 bits\""}],"id":4974,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"29010:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4979,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29010:70:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4980,"nodeType":"ExpressionStatement","src":"29010:70:14"}]},"documentation":{"id":4960,"nodeType":"StructuredDocumentation","src":"28543:345:14","text":" @dev Returns the downcasted int88 from int256, reverting on\n overflow (when the input is less than smallest int88 or\n greater than largest int88).\n Counterpart to Solidity's `int88` operator.\n Requirements:\n - input must fit into 88 bits\n _Available since v4.7._"},"id":4982,"implemented":true,"kind":"function","modifiers":[],"name":"toInt88","nameLocation":"28902:7:14","nodeType":"FunctionDefinition","parameters":{"id":4963,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4962,"mutability":"mutable","name":"value","nameLocation":"28917:5:14","nodeType":"VariableDeclaration","scope":4982,"src":"28910:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4961,"name":"int256","nodeType":"ElementaryTypeName","src":"28910:6:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"28909:14:14"},"returnParameters":{"id":4966,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4965,"mutability":"mutable","name":"downcasted","nameLocation":"28953:10:14","nodeType":"VariableDeclaration","scope":4982,"src":"28947:16:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int88","typeString":"int88"},"typeName":{"id":4964,"name":"int88","nodeType":"ElementaryTypeName","src":"28947:5:14","typeDescriptions":{"typeIdentifier":"t_int88","typeString":"int88"}},"visibility":"internal"}],"src":"28946:18:14"},"scope":5241,"src":"28893:194:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5004,"nodeType":"Block","src":"29515:122:14","statements":[{"expression":{"id":4995,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4990,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4988,"src":"29525:10:14","typeDescriptions":{"typeIdentifier":"t_int80","typeString":"int80"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4993,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4985,"src":"29544:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4992,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"29538:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_int80_$","typeString":"type(int80)"},"typeName":{"id":4991,"name":"int80","nodeType":"ElementaryTypeName","src":"29538:5:14","typeDescriptions":{}}},"id":4994,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29538:12:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int80","typeString":"int80"}},"src":"29525:25:14","typeDescriptions":{"typeIdentifier":"t_int80","typeString":"int80"}},"id":4996,"nodeType":"ExpressionStatement","src":"29525:25:14"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5000,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4998,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4988,"src":"29568:10:14","typeDescriptions":{"typeIdentifier":"t_int80","typeString":"int80"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":4999,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4985,"src":"29582:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"29568:19:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e2038302062697473","id":5001,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"29589:40:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_3cba87c71fade7d3cd7b673c159aab98afc040a5369691a33559d905d20ab5d1","typeString":"literal_string \"SafeCast: value doesn't fit in 80 bits\""},"value":"SafeCast: value doesn't fit in 80 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_3cba87c71fade7d3cd7b673c159aab98afc040a5369691a33559d905d20ab5d1","typeString":"literal_string \"SafeCast: value doesn't fit in 80 bits\""}],"id":4997,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"29560:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":5002,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29560:70:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5003,"nodeType":"ExpressionStatement","src":"29560:70:14"}]},"documentation":{"id":4983,"nodeType":"StructuredDocumentation","src":"29093:345:14","text":" @dev Returns the downcasted int80 from int256, reverting on\n overflow (when the input is less than smallest int80 or\n greater than largest int80).\n Counterpart to Solidity's `int80` operator.\n Requirements:\n - input must fit into 80 bits\n _Available since v4.7._"},"id":5005,"implemented":true,"kind":"function","modifiers":[],"name":"toInt80","nameLocation":"29452:7:14","nodeType":"FunctionDefinition","parameters":{"id":4986,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4985,"mutability":"mutable","name":"value","nameLocation":"29467:5:14","nodeType":"VariableDeclaration","scope":5005,"src":"29460:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4984,"name":"int256","nodeType":"ElementaryTypeName","src":"29460:6:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"29459:14:14"},"returnParameters":{"id":4989,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4988,"mutability":"mutable","name":"downcasted","nameLocation":"29503:10:14","nodeType":"VariableDeclaration","scope":5005,"src":"29497:16:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int80","typeString":"int80"},"typeName":{"id":4987,"name":"int80","nodeType":"ElementaryTypeName","src":"29497:5:14","typeDescriptions":{"typeIdentifier":"t_int80","typeString":"int80"}},"visibility":"internal"}],"src":"29496:18:14"},"scope":5241,"src":"29443:194:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5027,"nodeType":"Block","src":"30065:122:14","statements":[{"expression":{"id":5018,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5013,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5011,"src":"30075:10:14","typeDescriptions":{"typeIdentifier":"t_int72","typeString":"int72"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":5016,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5008,"src":"30094:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":5015,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"30088:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_int72_$","typeString":"type(int72)"},"typeName":{"id":5014,"name":"int72","nodeType":"ElementaryTypeName","src":"30088:5:14","typeDescriptions":{}}},"id":5017,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30088:12:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int72","typeString":"int72"}},"src":"30075:25:14","typeDescriptions":{"typeIdentifier":"t_int72","typeString":"int72"}},"id":5019,"nodeType":"ExpressionStatement","src":"30075:25:14"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5023,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5021,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5011,"src":"30118:10:14","typeDescriptions":{"typeIdentifier":"t_int72","typeString":"int72"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":5022,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5008,"src":"30132:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"30118:19:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e2037322062697473","id":5024,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"30139:40:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_71584237cc5250b8f417982144a947efe8f4c76feba008ff32ac480e69d60606","typeString":"literal_string \"SafeCast: value doesn't fit in 72 bits\""},"value":"SafeCast: value doesn't fit in 72 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_71584237cc5250b8f417982144a947efe8f4c76feba008ff32ac480e69d60606","typeString":"literal_string \"SafeCast: value doesn't fit in 72 bits\""}],"id":5020,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"30110:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":5025,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30110:70:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5026,"nodeType":"ExpressionStatement","src":"30110:70:14"}]},"documentation":{"id":5006,"nodeType":"StructuredDocumentation","src":"29643:345:14","text":" @dev Returns the downcasted int72 from int256, reverting on\n overflow (when the input is less than smallest int72 or\n greater than largest int72).\n Counterpart to Solidity's `int72` operator.\n Requirements:\n - input must fit into 72 bits\n _Available since v4.7._"},"id":5028,"implemented":true,"kind":"function","modifiers":[],"name":"toInt72","nameLocation":"30002:7:14","nodeType":"FunctionDefinition","parameters":{"id":5009,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5008,"mutability":"mutable","name":"value","nameLocation":"30017:5:14","nodeType":"VariableDeclaration","scope":5028,"src":"30010:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5007,"name":"int256","nodeType":"ElementaryTypeName","src":"30010:6:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"30009:14:14"},"returnParameters":{"id":5012,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5011,"mutability":"mutable","name":"downcasted","nameLocation":"30053:10:14","nodeType":"VariableDeclaration","scope":5028,"src":"30047:16:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int72","typeString":"int72"},"typeName":{"id":5010,"name":"int72","nodeType":"ElementaryTypeName","src":"30047:5:14","typeDescriptions":{"typeIdentifier":"t_int72","typeString":"int72"}},"visibility":"internal"}],"src":"30046:18:14"},"scope":5241,"src":"29993:194:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5050,"nodeType":"Block","src":"30615:122:14","statements":[{"expression":{"id":5041,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5036,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5034,"src":"30625:10:14","typeDescriptions":{"typeIdentifier":"t_int64","typeString":"int64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":5039,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5031,"src":"30644:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":5038,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"30638:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_int64_$","typeString":"type(int64)"},"typeName":{"id":5037,"name":"int64","nodeType":"ElementaryTypeName","src":"30638:5:14","typeDescriptions":{}}},"id":5040,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30638:12:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int64","typeString":"int64"}},"src":"30625:25:14","typeDescriptions":{"typeIdentifier":"t_int64","typeString":"int64"}},"id":5042,"nodeType":"ExpressionStatement","src":"30625:25:14"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5046,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5044,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5034,"src":"30668:10:14","typeDescriptions":{"typeIdentifier":"t_int64","typeString":"int64"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":5045,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5031,"src":"30682:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"30668:19:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e2036342062697473","id":5047,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"30689:40:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_93ae0c6bf6ffaece591a770b1865daa9f65157e541970aa9d8dc5f89a9490939","typeString":"literal_string \"SafeCast: value doesn't fit in 64 bits\""},"value":"SafeCast: value doesn't fit in 64 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_93ae0c6bf6ffaece591a770b1865daa9f65157e541970aa9d8dc5f89a9490939","typeString":"literal_string \"SafeCast: value doesn't fit in 64 bits\""}],"id":5043,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"30660:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":5048,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30660:70:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5049,"nodeType":"ExpressionStatement","src":"30660:70:14"}]},"documentation":{"id":5029,"nodeType":"StructuredDocumentation","src":"30193:345:14","text":" @dev Returns the downcasted int64 from int256, reverting on\n overflow (when the input is less than smallest int64 or\n greater than largest int64).\n Counterpart to Solidity's `int64` operator.\n Requirements:\n - input must fit into 64 bits\n _Available since v3.1._"},"id":5051,"implemented":true,"kind":"function","modifiers":[],"name":"toInt64","nameLocation":"30552:7:14","nodeType":"FunctionDefinition","parameters":{"id":5032,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5031,"mutability":"mutable","name":"value","nameLocation":"30567:5:14","nodeType":"VariableDeclaration","scope":5051,"src":"30560:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5030,"name":"int256","nodeType":"ElementaryTypeName","src":"30560:6:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"30559:14:14"},"returnParameters":{"id":5035,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5034,"mutability":"mutable","name":"downcasted","nameLocation":"30603:10:14","nodeType":"VariableDeclaration","scope":5051,"src":"30597:16:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int64","typeString":"int64"},"typeName":{"id":5033,"name":"int64","nodeType":"ElementaryTypeName","src":"30597:5:14","typeDescriptions":{"typeIdentifier":"t_int64","typeString":"int64"}},"visibility":"internal"}],"src":"30596:18:14"},"scope":5241,"src":"30543:194:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5073,"nodeType":"Block","src":"31165:122:14","statements":[{"expression":{"id":5064,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5059,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5057,"src":"31175:10:14","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":5062,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5054,"src":"31194:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":5061,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"31188:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_int56_$","typeString":"type(int56)"},"typeName":{"id":5060,"name":"int56","nodeType":"ElementaryTypeName","src":"31188:5:14","typeDescriptions":{}}},"id":5063,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31188:12:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"src":"31175:25:14","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"id":5065,"nodeType":"ExpressionStatement","src":"31175:25:14"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5069,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5067,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5057,"src":"31218:10:14","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":5068,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5054,"src":"31232:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"31218:19:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e2035362062697473","id":5070,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"31239:40:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_656ad93b5ff6665bfe05d97d51fad7c02ad79e6c43bef066c042a6900f450bc5","typeString":"literal_string \"SafeCast: value doesn't fit in 56 bits\""},"value":"SafeCast: value doesn't fit in 56 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_656ad93b5ff6665bfe05d97d51fad7c02ad79e6c43bef066c042a6900f450bc5","typeString":"literal_string \"SafeCast: value doesn't fit in 56 bits\""}],"id":5066,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"31210:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":5071,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31210:70:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5072,"nodeType":"ExpressionStatement","src":"31210:70:14"}]},"documentation":{"id":5052,"nodeType":"StructuredDocumentation","src":"30743:345:14","text":" @dev Returns the downcasted int56 from int256, reverting on\n overflow (when the input is less than smallest int56 or\n greater than largest int56).\n Counterpart to Solidity's `int56` operator.\n Requirements:\n - input must fit into 56 bits\n _Available since v4.7._"},"id":5074,"implemented":true,"kind":"function","modifiers":[],"name":"toInt56","nameLocation":"31102:7:14","nodeType":"FunctionDefinition","parameters":{"id":5055,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5054,"mutability":"mutable","name":"value","nameLocation":"31117:5:14","nodeType":"VariableDeclaration","scope":5074,"src":"31110:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5053,"name":"int256","nodeType":"ElementaryTypeName","src":"31110:6:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"31109:14:14"},"returnParameters":{"id":5058,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5057,"mutability":"mutable","name":"downcasted","nameLocation":"31153:10:14","nodeType":"VariableDeclaration","scope":5074,"src":"31147:16:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"},"typeName":{"id":5056,"name":"int56","nodeType":"ElementaryTypeName","src":"31147:5:14","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"visibility":"internal"}],"src":"31146:18:14"},"scope":5241,"src":"31093:194:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5096,"nodeType":"Block","src":"31715:122:14","statements":[{"expression":{"id":5087,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5082,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5080,"src":"31725:10:14","typeDescriptions":{"typeIdentifier":"t_int48","typeString":"int48"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":5085,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5077,"src":"31744:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":5084,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"31738:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_int48_$","typeString":"type(int48)"},"typeName":{"id":5083,"name":"int48","nodeType":"ElementaryTypeName","src":"31738:5:14","typeDescriptions":{}}},"id":5086,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31738:12:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int48","typeString":"int48"}},"src":"31725:25:14","typeDescriptions":{"typeIdentifier":"t_int48","typeString":"int48"}},"id":5088,"nodeType":"ExpressionStatement","src":"31725:25:14"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5092,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5090,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5080,"src":"31768:10:14","typeDescriptions":{"typeIdentifier":"t_int48","typeString":"int48"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":5091,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5077,"src":"31782:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"31768:19:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e2034382062697473","id":5093,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"31789:40:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_599034f9324dd4e988c6cea5a00a30f53147fec1b01559682f18cd840028f495","typeString":"literal_string \"SafeCast: value doesn't fit in 48 bits\""},"value":"SafeCast: value doesn't fit in 48 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_599034f9324dd4e988c6cea5a00a30f53147fec1b01559682f18cd840028f495","typeString":"literal_string \"SafeCast: value doesn't fit in 48 bits\""}],"id":5089,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"31760:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":5094,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31760:70:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5095,"nodeType":"ExpressionStatement","src":"31760:70:14"}]},"documentation":{"id":5075,"nodeType":"StructuredDocumentation","src":"31293:345:14","text":" @dev Returns the downcasted int48 from int256, reverting on\n overflow (when the input is less than smallest int48 or\n greater than largest int48).\n Counterpart to Solidity's `int48` operator.\n Requirements:\n - input must fit into 48 bits\n _Available since v4.7._"},"id":5097,"implemented":true,"kind":"function","modifiers":[],"name":"toInt48","nameLocation":"31652:7:14","nodeType":"FunctionDefinition","parameters":{"id":5078,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5077,"mutability":"mutable","name":"value","nameLocation":"31667:5:14","nodeType":"VariableDeclaration","scope":5097,"src":"31660:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5076,"name":"int256","nodeType":"ElementaryTypeName","src":"31660:6:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"31659:14:14"},"returnParameters":{"id":5081,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5080,"mutability":"mutable","name":"downcasted","nameLocation":"31703:10:14","nodeType":"VariableDeclaration","scope":5097,"src":"31697:16:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int48","typeString":"int48"},"typeName":{"id":5079,"name":"int48","nodeType":"ElementaryTypeName","src":"31697:5:14","typeDescriptions":{"typeIdentifier":"t_int48","typeString":"int48"}},"visibility":"internal"}],"src":"31696:18:14"},"scope":5241,"src":"31643:194:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5119,"nodeType":"Block","src":"32265:122:14","statements":[{"expression":{"id":5110,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5105,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5103,"src":"32275:10:14","typeDescriptions":{"typeIdentifier":"t_int40","typeString":"int40"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":5108,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5100,"src":"32294:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":5107,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"32288:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_int40_$","typeString":"type(int40)"},"typeName":{"id":5106,"name":"int40","nodeType":"ElementaryTypeName","src":"32288:5:14","typeDescriptions":{}}},"id":5109,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32288:12:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int40","typeString":"int40"}},"src":"32275:25:14","typeDescriptions":{"typeIdentifier":"t_int40","typeString":"int40"}},"id":5111,"nodeType":"ExpressionStatement","src":"32275:25:14"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5115,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5113,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5103,"src":"32318:10:14","typeDescriptions":{"typeIdentifier":"t_int40","typeString":"int40"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":5114,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5100,"src":"32332:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"32318:19:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e2034302062697473","id":5116,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"32339:40:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_b23559c58b98a5d3ed7016699c7171ac8defa5a1d180f9a9ffa60468a5701d37","typeString":"literal_string \"SafeCast: value doesn't fit in 40 bits\""},"value":"SafeCast: value doesn't fit in 40 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b23559c58b98a5d3ed7016699c7171ac8defa5a1d180f9a9ffa60468a5701d37","typeString":"literal_string \"SafeCast: value doesn't fit in 40 bits\""}],"id":5112,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"32310:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":5117,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32310:70:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5118,"nodeType":"ExpressionStatement","src":"32310:70:14"}]},"documentation":{"id":5098,"nodeType":"StructuredDocumentation","src":"31843:345:14","text":" @dev Returns the downcasted int40 from int256, reverting on\n overflow (when the input is less than smallest int40 or\n greater than largest int40).\n Counterpart to Solidity's `int40` operator.\n Requirements:\n - input must fit into 40 bits\n _Available since v4.7._"},"id":5120,"implemented":true,"kind":"function","modifiers":[],"name":"toInt40","nameLocation":"32202:7:14","nodeType":"FunctionDefinition","parameters":{"id":5101,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5100,"mutability":"mutable","name":"value","nameLocation":"32217:5:14","nodeType":"VariableDeclaration","scope":5120,"src":"32210:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5099,"name":"int256","nodeType":"ElementaryTypeName","src":"32210:6:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"32209:14:14"},"returnParameters":{"id":5104,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5103,"mutability":"mutable","name":"downcasted","nameLocation":"32253:10:14","nodeType":"VariableDeclaration","scope":5120,"src":"32247:16:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int40","typeString":"int40"},"typeName":{"id":5102,"name":"int40","nodeType":"ElementaryTypeName","src":"32247:5:14","typeDescriptions":{"typeIdentifier":"t_int40","typeString":"int40"}},"visibility":"internal"}],"src":"32246:18:14"},"scope":5241,"src":"32193:194:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5142,"nodeType":"Block","src":"32815:122:14","statements":[{"expression":{"id":5133,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5128,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5126,"src":"32825:10:14","typeDescriptions":{"typeIdentifier":"t_int32","typeString":"int32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":5131,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5123,"src":"32844:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":5130,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"32838:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_int32_$","typeString":"type(int32)"},"typeName":{"id":5129,"name":"int32","nodeType":"ElementaryTypeName","src":"32838:5:14","typeDescriptions":{}}},"id":5132,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32838:12:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int32","typeString":"int32"}},"src":"32825:25:14","typeDescriptions":{"typeIdentifier":"t_int32","typeString":"int32"}},"id":5134,"nodeType":"ExpressionStatement","src":"32825:25:14"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5138,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5136,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5126,"src":"32868:10:14","typeDescriptions":{"typeIdentifier":"t_int32","typeString":"int32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":5137,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5123,"src":"32882:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"32868:19:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e2033322062697473","id":5139,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"32889:40:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_c907489dafcfb622d3b83f2657a14d6da2f59e0de3116af0d6a80554c1a7cb19","typeString":"literal_string \"SafeCast: value doesn't fit in 32 bits\""},"value":"SafeCast: value doesn't fit in 32 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_c907489dafcfb622d3b83f2657a14d6da2f59e0de3116af0d6a80554c1a7cb19","typeString":"literal_string \"SafeCast: value doesn't fit in 32 bits\""}],"id":5135,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"32860:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":5140,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32860:70:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5141,"nodeType":"ExpressionStatement","src":"32860:70:14"}]},"documentation":{"id":5121,"nodeType":"StructuredDocumentation","src":"32393:345:14","text":" @dev Returns the downcasted int32 from int256, reverting on\n overflow (when the input is less than smallest int32 or\n greater than largest int32).\n Counterpart to Solidity's `int32` operator.\n Requirements:\n - input must fit into 32 bits\n _Available since v3.1._"},"id":5143,"implemented":true,"kind":"function","modifiers":[],"name":"toInt32","nameLocation":"32752:7:14","nodeType":"FunctionDefinition","parameters":{"id":5124,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5123,"mutability":"mutable","name":"value","nameLocation":"32767:5:14","nodeType":"VariableDeclaration","scope":5143,"src":"32760:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5122,"name":"int256","nodeType":"ElementaryTypeName","src":"32760:6:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"32759:14:14"},"returnParameters":{"id":5127,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5126,"mutability":"mutable","name":"downcasted","nameLocation":"32803:10:14","nodeType":"VariableDeclaration","scope":5143,"src":"32797:16:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int32","typeString":"int32"},"typeName":{"id":5125,"name":"int32","nodeType":"ElementaryTypeName","src":"32797:5:14","typeDescriptions":{"typeIdentifier":"t_int32","typeString":"int32"}},"visibility":"internal"}],"src":"32796:18:14"},"scope":5241,"src":"32743:194:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5165,"nodeType":"Block","src":"33365:122:14","statements":[{"expression":{"id":5156,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5151,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5149,"src":"33375:10:14","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":5154,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5146,"src":"33394:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":5153,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"33388:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_int24_$","typeString":"type(int24)"},"typeName":{"id":5152,"name":"int24","nodeType":"ElementaryTypeName","src":"33388:5:14","typeDescriptions":{}}},"id":5155,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33388:12:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"33375:25:14","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"id":5157,"nodeType":"ExpressionStatement","src":"33375:25:14"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5161,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5159,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5149,"src":"33418:10:14","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":5160,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5146,"src":"33432:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"33418:19:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e2032342062697473","id":5162,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"33439:40:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_f68b65aaf4574c34e9b9d1442d19636c6608b8c4dbd9331c7245f7915c8b2f55","typeString":"literal_string \"SafeCast: value doesn't fit in 24 bits\""},"value":"SafeCast: value doesn't fit in 24 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_f68b65aaf4574c34e9b9d1442d19636c6608b8c4dbd9331c7245f7915c8b2f55","typeString":"literal_string \"SafeCast: value doesn't fit in 24 bits\""}],"id":5158,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"33410:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":5163,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33410:70:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5164,"nodeType":"ExpressionStatement","src":"33410:70:14"}]},"documentation":{"id":5144,"nodeType":"StructuredDocumentation","src":"32943:345:14","text":" @dev Returns the downcasted int24 from int256, reverting on\n overflow (when the input is less than smallest int24 or\n greater than largest int24).\n Counterpart to Solidity's `int24` operator.\n Requirements:\n - input must fit into 24 bits\n _Available since v4.7._"},"id":5166,"implemented":true,"kind":"function","modifiers":[],"name":"toInt24","nameLocation":"33302:7:14","nodeType":"FunctionDefinition","parameters":{"id":5147,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5146,"mutability":"mutable","name":"value","nameLocation":"33317:5:14","nodeType":"VariableDeclaration","scope":5166,"src":"33310:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5145,"name":"int256","nodeType":"ElementaryTypeName","src":"33310:6:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"33309:14:14"},"returnParameters":{"id":5150,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5149,"mutability":"mutable","name":"downcasted","nameLocation":"33353:10:14","nodeType":"VariableDeclaration","scope":5166,"src":"33347:16:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":5148,"name":"int24","nodeType":"ElementaryTypeName","src":"33347:5:14","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"33346:18:14"},"scope":5241,"src":"33293:194:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5188,"nodeType":"Block","src":"33915:122:14","statements":[{"expression":{"id":5179,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5174,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5172,"src":"33925:10:14","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":5177,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5169,"src":"33944:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":5176,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"33938:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_int16_$","typeString":"type(int16)"},"typeName":{"id":5175,"name":"int16","nodeType":"ElementaryTypeName","src":"33938:5:14","typeDescriptions":{}}},"id":5178,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33938:12:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"src":"33925:25:14","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"id":5180,"nodeType":"ExpressionStatement","src":"33925:25:14"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5184,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5182,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5172,"src":"33968:10:14","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":5183,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5169,"src":"33982:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"33968:19:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e2031362062697473","id":5185,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"33989:40:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_13d3a66f9e0e5c92bbe7743bcd3bdb4695009d5f3a96e5ff49718d715b484033","typeString":"literal_string \"SafeCast: value doesn't fit in 16 bits\""},"value":"SafeCast: value doesn't fit in 16 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_13d3a66f9e0e5c92bbe7743bcd3bdb4695009d5f3a96e5ff49718d715b484033","typeString":"literal_string \"SafeCast: value doesn't fit in 16 bits\""}],"id":5181,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"33960:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":5186,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33960:70:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5187,"nodeType":"ExpressionStatement","src":"33960:70:14"}]},"documentation":{"id":5167,"nodeType":"StructuredDocumentation","src":"33493:345:14","text":" @dev Returns the downcasted int16 from int256, reverting on\n overflow (when the input is less than smallest int16 or\n greater than largest int16).\n Counterpart to Solidity's `int16` operator.\n Requirements:\n - input must fit into 16 bits\n _Available since v3.1._"},"id":5189,"implemented":true,"kind":"function","modifiers":[],"name":"toInt16","nameLocation":"33852:7:14","nodeType":"FunctionDefinition","parameters":{"id":5170,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5169,"mutability":"mutable","name":"value","nameLocation":"33867:5:14","nodeType":"VariableDeclaration","scope":5189,"src":"33860:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5168,"name":"int256","nodeType":"ElementaryTypeName","src":"33860:6:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"33859:14:14"},"returnParameters":{"id":5173,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5172,"mutability":"mutable","name":"downcasted","nameLocation":"33903:10:14","nodeType":"VariableDeclaration","scope":5189,"src":"33897:16:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"},"typeName":{"id":5171,"name":"int16","nodeType":"ElementaryTypeName","src":"33897:5:14","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"visibility":"internal"}],"src":"33896:18:14"},"scope":5241,"src":"33843:194:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5211,"nodeType":"Block","src":"34458:120:14","statements":[{"expression":{"id":5202,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5197,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5195,"src":"34468:10:14","typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":5200,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5192,"src":"34486:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":5199,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"34481:4:14","typeDescriptions":{"typeIdentifier":"t_type$_t_int8_$","typeString":"type(int8)"},"typeName":{"id":5198,"name":"int8","nodeType":"ElementaryTypeName","src":"34481:4:14","typeDescriptions":{}}},"id":5201,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34481:11:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"}},"src":"34468:24:14","typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"}},"id":5203,"nodeType":"ExpressionStatement","src":"34468:24:14"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5207,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5205,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5195,"src":"34510:10:14","typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":5206,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5192,"src":"34524:5:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"34510:19:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e20382062697473","id":5208,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"34531:39:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_2610961ba53259047cd57c60366c5ad0b8aabf5eb4132487619b736715a740d1","typeString":"literal_string \"SafeCast: value doesn't fit in 8 bits\""},"value":"SafeCast: value doesn't fit in 8 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2610961ba53259047cd57c60366c5ad0b8aabf5eb4132487619b736715a740d1","typeString":"literal_string \"SafeCast: value doesn't fit in 8 bits\""}],"id":5204,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"34502:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":5209,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34502:69:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5210,"nodeType":"ExpressionStatement","src":"34502:69:14"}]},"documentation":{"id":5190,"nodeType":"StructuredDocumentation","src":"34043:340:14","text":" @dev Returns the downcasted int8 from int256, reverting on\n overflow (when the input is less than smallest int8 or\n greater than largest int8).\n Counterpart to Solidity's `int8` operator.\n Requirements:\n - input must fit into 8 bits\n _Available since v3.1._"},"id":5212,"implemented":true,"kind":"function","modifiers":[],"name":"toInt8","nameLocation":"34397:6:14","nodeType":"FunctionDefinition","parameters":{"id":5193,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5192,"mutability":"mutable","name":"value","nameLocation":"34411:5:14","nodeType":"VariableDeclaration","scope":5212,"src":"34404:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5191,"name":"int256","nodeType":"ElementaryTypeName","src":"34404:6:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"34403:14:14"},"returnParameters":{"id":5196,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5195,"mutability":"mutable","name":"downcasted","nameLocation":"34446:10:14","nodeType":"VariableDeclaration","scope":5212,"src":"34441:15:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"},"typeName":{"id":5194,"name":"int8","nodeType":"ElementaryTypeName","src":"34441:4:14","typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"}},"visibility":"internal"}],"src":"34440:17:14"},"scope":5241,"src":"34388:190:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5239,"nodeType":"Block","src":"34856:233:14","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5230,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5221,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5215,"src":"34973:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"arguments":[{"expression":{"arguments":[{"id":5226,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"34995:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":5225,"name":"int256","nodeType":"ElementaryTypeName","src":"34995:6:14","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"}],"id":5224,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"34990:4:14","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5227,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34990:12:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_int256","typeString":"type(int256)"}},"id":5228,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"35003:3:14","memberName":"max","nodeType":"MemberAccess","src":"34990:16:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":5223,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"34982:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":5222,"name":"uint256","nodeType":"ElementaryTypeName","src":"34982:7:14","typeDescriptions":{}}},"id":5229,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34982:25:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"34973:34:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e20616e20696e74323536","id":5231,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"35009:42:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_d70dcf21692b3c91b4c5fbb89ed57f464aa42efbe5b0ea96c4acb7c080144227","typeString":"literal_string \"SafeCast: value doesn't fit in an int256\""},"value":"SafeCast: value doesn't fit in an int256"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d70dcf21692b3c91b4c5fbb89ed57f464aa42efbe5b0ea96c4acb7c080144227","typeString":"literal_string \"SafeCast: value doesn't fit in an int256\""}],"id":5220,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"34965:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":5232,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34965:87:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5233,"nodeType":"ExpressionStatement","src":"34965:87:14"},{"expression":{"arguments":[{"id":5236,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5215,"src":"35076:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5235,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"35069:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":5234,"name":"int256","nodeType":"ElementaryTypeName","src":"35069:6:14","typeDescriptions":{}}},"id":5237,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"35069:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":5219,"id":5238,"nodeType":"Return","src":"35062:20:14"}]},"documentation":{"id":5213,"nodeType":"StructuredDocumentation","src":"34584:203:14","text":" @dev Converts an unsigned uint256 into a signed int256.\n Requirements:\n - input must be less than or equal to maxInt256.\n _Available since v3.0._"},"id":5240,"implemented":true,"kind":"function","modifiers":[],"name":"toInt256","nameLocation":"34801:8:14","nodeType":"FunctionDefinition","parameters":{"id":5216,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5215,"mutability":"mutable","name":"value","nameLocation":"34818:5:14","nodeType":"VariableDeclaration","scope":5240,"src":"34810:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5214,"name":"uint256","nodeType":"ElementaryTypeName","src":"34810:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"34809:15:14"},"returnParameters":{"id":5219,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5218,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5240,"src":"34848:6:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5217,"name":"int256","nodeType":"ElementaryTypeName","src":"34848:6:14","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"34847:8:14"},"scope":5241,"src":"34792:297:14","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":5242,"src":"927:34164:14","usedErrors":[]}],"src":"192:34900:14"},"id":14},"@openzeppelin/contracts/interfaces/IERC1967.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/interfaces/IERC1967.sol","exportedSymbols":{"IERC1967":[5262]},"id":5263,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":5243,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"107:23:15"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC1967","contractDependencies":[],"contractKind":"interface","documentation":{"id":5244,"nodeType":"StructuredDocumentation","src":"132:133:15","text":" @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\n _Available since v4.8.3._"},"fullyImplemented":true,"id":5262,"linearizedBaseContracts":[5262],"name":"IERC1967","nameLocation":"276:8:15","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":5245,"nodeType":"StructuredDocumentation","src":"291:68:15","text":" @dev Emitted when the implementation is upgraded."},"eventSelector":"bc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","id":5249,"name":"Upgraded","nameLocation":"370:8:15","nodeType":"EventDefinition","parameters":{"id":5248,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5247,"indexed":true,"mutability":"mutable","name":"implementation","nameLocation":"395:14:15","nodeType":"VariableDeclaration","scope":5249,"src":"379:30:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5246,"name":"address","nodeType":"ElementaryTypeName","src":"379:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"378:32:15"},"src":"364:47:15"},{"anonymous":false,"documentation":{"id":5250,"nodeType":"StructuredDocumentation","src":"417:67:15","text":" @dev Emitted when the admin account has changed."},"eventSelector":"7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f","id":5256,"name":"AdminChanged","nameLocation":"495:12:15","nodeType":"EventDefinition","parameters":{"id":5255,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5252,"indexed":false,"mutability":"mutable","name":"previousAdmin","nameLocation":"516:13:15","nodeType":"VariableDeclaration","scope":5256,"src":"508:21:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5251,"name":"address","nodeType":"ElementaryTypeName","src":"508:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5254,"indexed":false,"mutability":"mutable","name":"newAdmin","nameLocation":"539:8:15","nodeType":"VariableDeclaration","scope":5256,"src":"531:16:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5253,"name":"address","nodeType":"ElementaryTypeName","src":"531:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"507:41:15"},"src":"489:60:15"},{"anonymous":false,"documentation":{"id":5257,"nodeType":"StructuredDocumentation","src":"555:59:15","text":" @dev Emitted when the beacon is changed."},"eventSelector":"1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e","id":5261,"name":"BeaconUpgraded","nameLocation":"625:14:15","nodeType":"EventDefinition","parameters":{"id":5260,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5259,"indexed":true,"mutability":"mutable","name":"beacon","nameLocation":"656:6:15","nodeType":"VariableDeclaration","scope":5261,"src":"640:22:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5258,"name":"address","nodeType":"ElementaryTypeName","src":"640:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"639:24:15"},"src":"619:45:15"}],"scope":5263,"src":"266:400:15","usedErrors":[]}],"src":"107:560:15"},"id":15},"@openzeppelin/contracts/interfaces/draft-IERC1822.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/interfaces/draft-IERC1822.sol","exportedSymbols":{"IERC1822Proxiable":[5272]},"id":5273,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":5264,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"113:23:16"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC1822Proxiable","contractDependencies":[],"contractKind":"interface","documentation":{"id":5265,"nodeType":"StructuredDocumentation","src":"138:203:16","text":" @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\n proxy whose upgrades are fully controlled by the current implementation."},"fullyImplemented":false,"id":5272,"linearizedBaseContracts":[5272],"name":"IERC1822Proxiable","nameLocation":"352:17:16","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":5266,"nodeType":"StructuredDocumentation","src":"376:438:16","text":" @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\n address.\n IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\n bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\n function revert if invoked through a proxy."},"functionSelector":"52d1902d","id":5271,"implemented":false,"kind":"function","modifiers":[],"name":"proxiableUUID","nameLocation":"828:13:16","nodeType":"FunctionDefinition","parameters":{"id":5267,"nodeType":"ParameterList","parameters":[],"src":"841:2:16"},"returnParameters":{"id":5270,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5269,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5271,"src":"867:7:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5268,"name":"bytes32","nodeType":"ElementaryTypeName","src":"867:7:16","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"866:9:16"},"scope":5272,"src":"819:57:16","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":5273,"src":"342:536:16","usedErrors":[]}],"src":"113:766:16"},"id":16},"@openzeppelin/contracts/proxy/Clones.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/proxy/Clones.sol","exportedSymbols":{"Clones":[5352]},"id":5353,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":5274,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"100:23:17"},{"abstract":false,"baseContracts":[],"canonicalName":"Clones","contractDependencies":[],"contractKind":"library","documentation":{"id":5275,"nodeType":"StructuredDocumentation","src":"125:629:17","text":" @dev https://eips.ethereum.org/EIPS/eip-1167[EIP 1167] is a standard for\n deploying minimal proxy contracts, also known as \"clones\".\n > To simply and cheaply clone contract functionality in an immutable way, this standard specifies\n > a minimal bytecode implementation that delegates all calls to a known, fixed address.\n The library includes functions to deploy a proxy using either `create` (traditional deployment) or `create2`\n (salted deterministic deployment). It also includes functions to predict the addresses of clones deployed using the\n deterministic method.\n _Available since v3.4._"},"fullyImplemented":true,"id":5352,"linearizedBaseContracts":[5352],"name":"Clones","nameLocation":"763:6:17","nodeType":"ContractDefinition","nodes":[{"body":{"id":5294,"nodeType":"Block","src":"1048:684:17","statements":[{"AST":{"nodeType":"YulBlock","src":"1110:549:17","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1315:4:17","type":"","value":"0x00"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1328:4:17","type":"","value":"0xe8"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1338:4:17","type":"","value":"0x60"},{"name":"implementation","nodeType":"YulIdentifier","src":"1344:14:17"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1334:3:17"},"nodeType":"YulFunctionCall","src":"1334:25:17"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"1324:3:17"},"nodeType":"YulFunctionCall","src":"1324:36:17"},{"kind":"number","nodeType":"YulLiteral","src":"1362:48:17","type":"","value":"0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"1321:2:17"},"nodeType":"YulFunctionCall","src":"1321:90:17"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1308:6:17"},"nodeType":"YulFunctionCall","src":"1308:104:17"},"nodeType":"YulExpressionStatement","src":"1308:104:17"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1533:4:17","type":"","value":"0x20"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1546:4:17","type":"","value":"0x78"},{"name":"implementation","nodeType":"YulIdentifier","src":"1552:14:17"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1542:3:17"},"nodeType":"YulFunctionCall","src":"1542:25:17"},{"kind":"number","nodeType":"YulLiteral","src":"1569:32:17","type":"","value":"0x5af43d82803e903d91602b57fd5bf3"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"1539:2:17"},"nodeType":"YulFunctionCall","src":"1539:63:17"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1526:6:17"},"nodeType":"YulFunctionCall","src":"1526:77:17"},"nodeType":"YulExpressionStatement","src":"1526:77:17"},{"nodeType":"YulAssignment","src":"1616:33:17","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1635:1:17","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1638:4:17","type":"","value":"0x09"},{"kind":"number","nodeType":"YulLiteral","src":"1644:4:17","type":"","value":"0x37"}],"functionName":{"name":"create","nodeType":"YulIdentifier","src":"1628:6:17"},"nodeType":"YulFunctionCall","src":"1628:21:17"},"variableNames":[{"name":"instance","nodeType":"YulIdentifier","src":"1616:8:17"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"london","externalReferences":[{"declaration":5278,"isOffset":false,"isSlot":false,"src":"1344:14:17","valueSize":1},{"declaration":5278,"isOffset":false,"isSlot":false,"src":"1552:14:17","valueSize":1},{"declaration":5281,"isOffset":false,"isSlot":false,"src":"1616:8:17","valueSize":1}],"id":5283,"nodeType":"InlineAssembly","src":"1101:558:17"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":5290,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5285,"name":"instance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5281,"src":"1676:8:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":5288,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1696:1:17","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":5287,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1688:7:17","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5286,"name":"address","nodeType":"ElementaryTypeName","src":"1688:7:17","typeDescriptions":{}}},"id":5289,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1688:10:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1676:22:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"455243313136373a20637265617465206661696c6564","id":5291,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1700:24:17","typeDescriptions":{"typeIdentifier":"t_stringliteral_68ca40b61460257f14e69f48b1a4dbc812e9afc6932f127ef8084544457b3335","typeString":"literal_string \"ERC1167: create failed\""},"value":"ERC1167: create failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_68ca40b61460257f14e69f48b1a4dbc812e9afc6932f127ef8084544457b3335","typeString":"literal_string \"ERC1167: create failed\""}],"id":5284,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"1668:7:17","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":5292,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1668:57:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5293,"nodeType":"ExpressionStatement","src":"1668:57:17"}]},"documentation":{"id":5276,"nodeType":"StructuredDocumentation","src":"776:192:17","text":" @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`.\n This function uses the create opcode, which should never revert."},"id":5295,"implemented":true,"kind":"function","modifiers":[],"name":"clone","nameLocation":"982:5:17","nodeType":"FunctionDefinition","parameters":{"id":5279,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5278,"mutability":"mutable","name":"implementation","nameLocation":"996:14:17","nodeType":"VariableDeclaration","scope":5295,"src":"988:22:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5277,"name":"address","nodeType":"ElementaryTypeName","src":"988:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"987:24:17"},"returnParameters":{"id":5282,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5281,"mutability":"mutable","name":"instance","nameLocation":"1038:8:17","nodeType":"VariableDeclaration","scope":5295,"src":"1030:16:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5280,"name":"address","nodeType":"ElementaryTypeName","src":"1030:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1029:18:17"},"scope":5352,"src":"973:759:17","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":5316,"nodeType":"Block","src":"2209:692:17","statements":[{"AST":{"nodeType":"YulBlock","src":"2271:556:17","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2476:4:17","type":"","value":"0x00"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2489:4:17","type":"","value":"0xe8"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2499:4:17","type":"","value":"0x60"},{"name":"implementation","nodeType":"YulIdentifier","src":"2505:14:17"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2495:3:17"},"nodeType":"YulFunctionCall","src":"2495:25:17"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"2485:3:17"},"nodeType":"YulFunctionCall","src":"2485:36:17"},{"kind":"number","nodeType":"YulLiteral","src":"2523:48:17","type":"","value":"0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"2482:2:17"},"nodeType":"YulFunctionCall","src":"2482:90:17"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2469:6:17"},"nodeType":"YulFunctionCall","src":"2469:104:17"},"nodeType":"YulExpressionStatement","src":"2469:104:17"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2694:4:17","type":"","value":"0x20"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2707:4:17","type":"","value":"0x78"},{"name":"implementation","nodeType":"YulIdentifier","src":"2713:14:17"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2703:3:17"},"nodeType":"YulFunctionCall","src":"2703:25:17"},{"kind":"number","nodeType":"YulLiteral","src":"2730:32:17","type":"","value":"0x5af43d82803e903d91602b57fd5bf3"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"2700:2:17"},"nodeType":"YulFunctionCall","src":"2700:63:17"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2687:6:17"},"nodeType":"YulFunctionCall","src":"2687:77:17"},"nodeType":"YulExpressionStatement","src":"2687:77:17"},{"nodeType":"YulAssignment","src":"2777:40:17","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2797:1:17","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2800:4:17","type":"","value":"0x09"},{"kind":"number","nodeType":"YulLiteral","src":"2806:4:17","type":"","value":"0x37"},{"name":"salt","nodeType":"YulIdentifier","src":"2812:4:17"}],"functionName":{"name":"create2","nodeType":"YulIdentifier","src":"2789:7:17"},"nodeType":"YulFunctionCall","src":"2789:28:17"},"variableNames":[{"name":"instance","nodeType":"YulIdentifier","src":"2777:8:17"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"london","externalReferences":[{"declaration":5298,"isOffset":false,"isSlot":false,"src":"2505:14:17","valueSize":1},{"declaration":5298,"isOffset":false,"isSlot":false,"src":"2713:14:17","valueSize":1},{"declaration":5303,"isOffset":false,"isSlot":false,"src":"2777:8:17","valueSize":1},{"declaration":5300,"isOffset":false,"isSlot":false,"src":"2812:4:17","valueSize":1}],"id":5305,"nodeType":"InlineAssembly","src":"2262:565:17"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":5312,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5307,"name":"instance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5303,"src":"2844:8:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":5310,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2864:1:17","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":5309,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2856:7:17","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5308,"name":"address","nodeType":"ElementaryTypeName","src":"2856:7:17","typeDescriptions":{}}},"id":5311,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2856:10:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2844:22:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"455243313136373a2063726561746532206661696c6564","id":5313,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2868:25:17","typeDescriptions":{"typeIdentifier":"t_stringliteral_4ec050e530ce66e7658278ab7a4e4a2f19225159c48fc52eb249bd268e755d73","typeString":"literal_string \"ERC1167: create2 failed\""},"value":"ERC1167: create2 failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_4ec050e530ce66e7658278ab7a4e4a2f19225159c48fc52eb249bd268e755d73","typeString":"literal_string \"ERC1167: create2 failed\""}],"id":5306,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"2836:7:17","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":5314,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2836:58:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5315,"nodeType":"ExpressionStatement","src":"2836:58:17"}]},"documentation":{"id":5296,"nodeType":"StructuredDocumentation","src":"1738:364:17","text":" @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`.\n This function uses the create2 opcode and a `salt` to deterministically deploy\n the clone. Using the same `implementation` and `salt` multiple time will revert, since\n the clones cannot be deployed twice at the same address."},"id":5317,"implemented":true,"kind":"function","modifiers":[],"name":"cloneDeterministic","nameLocation":"2116:18:17","nodeType":"FunctionDefinition","parameters":{"id":5301,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5298,"mutability":"mutable","name":"implementation","nameLocation":"2143:14:17","nodeType":"VariableDeclaration","scope":5317,"src":"2135:22:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5297,"name":"address","nodeType":"ElementaryTypeName","src":"2135:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5300,"mutability":"mutable","name":"salt","nameLocation":"2167:4:17","nodeType":"VariableDeclaration","scope":5317,"src":"2159:12:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5299,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2159:7:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2134:38:17"},"returnParameters":{"id":5304,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5303,"mutability":"mutable","name":"instance","nameLocation":"2199:8:17","nodeType":"VariableDeclaration","scope":5317,"src":"2191:16:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5302,"name":"address","nodeType":"ElementaryTypeName","src":"2191:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2190:18:17"},"scope":5352,"src":"2107:794:17","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":5330,"nodeType":"Block","src":"3176:515:17","statements":[{"AST":{"nodeType":"YulBlock","src":"3238:447:17","statements":[{"nodeType":"YulVariableDeclaration","src":"3252:22:17","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3269:4:17","type":"","value":"0x40"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3263:5:17"},"nodeType":"YulFunctionCall","src":"3263:11:17"},"variables":[{"name":"ptr","nodeType":"YulTypedName","src":"3256:3:17","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"3298:3:17"},{"kind":"number","nodeType":"YulLiteral","src":"3303:4:17","type":"","value":"0x38"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3294:3:17"},"nodeType":"YulFunctionCall","src":"3294:14:17"},{"name":"deployer","nodeType":"YulIdentifier","src":"3310:8:17"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3287:6:17"},"nodeType":"YulFunctionCall","src":"3287:32:17"},"nodeType":"YulExpressionStatement","src":"3287:32:17"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"3343:3:17"},{"kind":"number","nodeType":"YulLiteral","src":"3348:4:17","type":"","value":"0x24"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3339:3:17"},"nodeType":"YulFunctionCall","src":"3339:14:17"},{"kind":"number","nodeType":"YulLiteral","src":"3355:34:17","type":"","value":"0x5af43d82803e903d91602b57fd5bf3ff"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3332:6:17"},"nodeType":"YulFunctionCall","src":"3332:58:17"},"nodeType":"YulExpressionStatement","src":"3332:58:17"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"3414:3:17"},{"kind":"number","nodeType":"YulLiteral","src":"3419:4:17","type":"","value":"0x14"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3410:3:17"},"nodeType":"YulFunctionCall","src":"3410:14:17"},{"name":"implementation","nodeType":"YulIdentifier","src":"3426:14:17"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3403:6:17"},"nodeType":"YulFunctionCall","src":"3403:38:17"},"nodeType":"YulExpressionStatement","src":"3403:38:17"},{"expression":{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"3461:3:17"},{"kind":"number","nodeType":"YulLiteral","src":"3466:42:17","type":"","value":"0x3d602d80600a3d3981f3363d3d373d3d3d363d73"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3454:6:17"},"nodeType":"YulFunctionCall","src":"3454:55:17"},"nodeType":"YulExpressionStatement","src":"3454:55:17"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"3533:3:17"},{"kind":"number","nodeType":"YulLiteral","src":"3538:4:17","type":"","value":"0x58"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3529:3:17"},"nodeType":"YulFunctionCall","src":"3529:14:17"},{"name":"salt","nodeType":"YulIdentifier","src":"3545:4:17"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3522:6:17"},"nodeType":"YulFunctionCall","src":"3522:28:17"},"nodeType":"YulExpressionStatement","src":"3522:28:17"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"3574:3:17"},{"kind":"number","nodeType":"YulLiteral","src":"3579:4:17","type":"","value":"0x78"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3570:3:17"},"nodeType":"YulFunctionCall","src":"3570:14:17"},{"arguments":[{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"3600:3:17"},{"kind":"number","nodeType":"YulLiteral","src":"3605:4:17","type":"","value":"0x0c"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3596:3:17"},"nodeType":"YulFunctionCall","src":"3596:14:17"},{"kind":"number","nodeType":"YulLiteral","src":"3612:4:17","type":"","value":"0x37"}],"functionName":{"name":"keccak256","nodeType":"YulIdentifier","src":"3586:9:17"},"nodeType":"YulFunctionCall","src":"3586:31:17"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3563:6:17"},"nodeType":"YulFunctionCall","src":"3563:55:17"},"nodeType":"YulExpressionStatement","src":"3563:55:17"},{"nodeType":"YulAssignment","src":"3631:44:17","value":{"arguments":[{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"3658:3:17"},{"kind":"number","nodeType":"YulLiteral","src":"3663:4:17","type":"","value":"0x43"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3654:3:17"},"nodeType":"YulFunctionCall","src":"3654:14:17"},{"kind":"number","nodeType":"YulLiteral","src":"3670:4:17","type":"","value":"0x55"}],"functionName":{"name":"keccak256","nodeType":"YulIdentifier","src":"3644:9:17"},"nodeType":"YulFunctionCall","src":"3644:31:17"},"variableNames":[{"name":"predicted","nodeType":"YulIdentifier","src":"3631:9:17"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"london","externalReferences":[{"declaration":5324,"isOffset":false,"isSlot":false,"src":"3310:8:17","valueSize":1},{"declaration":5320,"isOffset":false,"isSlot":false,"src":"3426:14:17","valueSize":1},{"declaration":5327,"isOffset":false,"isSlot":false,"src":"3631:9:17","valueSize":1},{"declaration":5322,"isOffset":false,"isSlot":false,"src":"3545:4:17","valueSize":1}],"id":5329,"nodeType":"InlineAssembly","src":"3229:456:17"}]},"documentation":{"id":5318,"nodeType":"StructuredDocumentation","src":"2907:99:17","text":" @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}."},"id":5331,"implemented":true,"kind":"function","modifiers":[],"name":"predictDeterministicAddress","nameLocation":"3020:27:17","nodeType":"FunctionDefinition","parameters":{"id":5325,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5320,"mutability":"mutable","name":"implementation","nameLocation":"3065:14:17","nodeType":"VariableDeclaration","scope":5331,"src":"3057:22:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5319,"name":"address","nodeType":"ElementaryTypeName","src":"3057:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5322,"mutability":"mutable","name":"salt","nameLocation":"3097:4:17","nodeType":"VariableDeclaration","scope":5331,"src":"3089:12:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5321,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3089:7:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":5324,"mutability":"mutable","name":"deployer","nameLocation":"3119:8:17","nodeType":"VariableDeclaration","scope":5331,"src":"3111:16:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5323,"name":"address","nodeType":"ElementaryTypeName","src":"3111:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3047:86:17"},"returnParameters":{"id":5328,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5327,"mutability":"mutable","name":"predicted","nameLocation":"3165:9:17","nodeType":"VariableDeclaration","scope":5331,"src":"3157:17:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5326,"name":"address","nodeType":"ElementaryTypeName","src":"3157:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3156:19:17"},"scope":5352,"src":"3011:680:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5350,"nodeType":"Block","src":"3940:88:17","statements":[{"expression":{"arguments":[{"id":5342,"name":"implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5334,"src":"3985:14:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5343,"name":"salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5336,"src":"4001:4:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[{"id":5346,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967268,"src":"4015:4:17","typeDescriptions":{"typeIdentifier":"t_contract$_Clones_$5352","typeString":"library Clones"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Clones_$5352","typeString":"library Clones"}],"id":5345,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4007:7:17","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5344,"name":"address","nodeType":"ElementaryTypeName","src":"4007:7:17","typeDescriptions":{}}},"id":5347,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4007:13:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":5341,"name":"predictDeterministicAddress","nodeType":"Identifier","overloadedDeclarations":[5331,5351],"referencedDeclaration":5331,"src":"3957:27:17","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_bytes32_$_t_address_$returns$_t_address_$","typeString":"function (address,bytes32,address) pure returns (address)"}},"id":5348,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3957:64:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":5340,"id":5349,"nodeType":"Return","src":"3950:71:17"}]},"documentation":{"id":5332,"nodeType":"StructuredDocumentation","src":"3697:99:17","text":" @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}."},"id":5351,"implemented":true,"kind":"function","modifiers":[],"name":"predictDeterministicAddress","nameLocation":"3810:27:17","nodeType":"FunctionDefinition","parameters":{"id":5337,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5334,"mutability":"mutable","name":"implementation","nameLocation":"3855:14:17","nodeType":"VariableDeclaration","scope":5351,"src":"3847:22:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5333,"name":"address","nodeType":"ElementaryTypeName","src":"3847:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5336,"mutability":"mutable","name":"salt","nameLocation":"3887:4:17","nodeType":"VariableDeclaration","scope":5351,"src":"3879:12:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5335,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3879:7:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3837:60:17"},"returnParameters":{"id":5340,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5339,"mutability":"mutable","name":"predicted","nameLocation":"3929:9:17","nodeType":"VariableDeclaration","scope":5351,"src":"3921:17:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5338,"name":"address","nodeType":"ElementaryTypeName","src":"3921:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3920:19:17"},"scope":5352,"src":"3801:227:17","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":5353,"src":"755:3275:17","usedErrors":[]}],"src":"100:3931:17"},"id":17},"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol","exportedSymbols":{"Address":[9264],"ERC1967Proxy":[5389],"ERC1967Upgrade":[5693],"IBeacon":[5755],"IERC1822Proxiable":[5272],"IERC1967":[5262],"Proxy":[5745],"StorageSlot":[9478]},"id":5390,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":5354,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"114:23:18"},{"absolutePath":"@openzeppelin/contracts/proxy/Proxy.sol","file":"../Proxy.sol","id":5355,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5390,"sourceUnit":5746,"src":"139:22:18","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol","file":"./ERC1967Upgrade.sol","id":5356,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5390,"sourceUnit":5694,"src":"162:30:18","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":5358,"name":"Proxy","nameLocations":["592:5:18"],"nodeType":"IdentifierPath","referencedDeclaration":5745,"src":"592:5:18"},"id":5359,"nodeType":"InheritanceSpecifier","src":"592:5:18"},{"baseName":{"id":5360,"name":"ERC1967Upgrade","nameLocations":["599:14:18"],"nodeType":"IdentifierPath","referencedDeclaration":5693,"src":"599:14:18"},"id":5361,"nodeType":"InheritanceSpecifier","src":"599:14:18"}],"canonicalName":"ERC1967Proxy","contractDependencies":[],"contractKind":"contract","documentation":{"id":5357,"nodeType":"StructuredDocumentation","src":"194:372:18","text":" @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an\n implementation address that can be changed. This address is stored in storage in the location specified by\n https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the\n implementation behind the proxy."},"fullyImplemented":true,"id":5389,"linearizedBaseContracts":[5389,5693,5262,5745],"name":"ERC1967Proxy","nameLocation":"576:12:18","nodeType":"ContractDefinition","nodes":[{"body":{"id":5375,"nodeType":"Block","src":"1014:56:18","statements":[{"expression":{"arguments":[{"id":5370,"name":"_logic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5364,"src":"1042:6:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5371,"name":"_data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5366,"src":"1050:5:18","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"66616c7365","id":5372,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1057:5:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":5369,"name":"_upgradeToAndCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5488,"src":"1024:17:18","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_bool_$returns$__$","typeString":"function (address,bytes memory,bool)"}},"id":5373,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1024:39:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5374,"nodeType":"ExpressionStatement","src":"1024:39:18"}]},"documentation":{"id":5362,"nodeType":"StructuredDocumentation","src":"620:333:18","text":" @dev Initializes the upgradeable proxy with an initial implementation specified by `_logic`.\n If `_data` is nonempty, it's used as data in a delegate call to `_logic`. This will typically be an encoded\n function call, and allows initializing the storage of the proxy like a Solidity constructor."},"id":5376,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":5367,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5364,"mutability":"mutable","name":"_logic","nameLocation":"978:6:18","nodeType":"VariableDeclaration","scope":5376,"src":"970:14:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5363,"name":"address","nodeType":"ElementaryTypeName","src":"970:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5366,"mutability":"mutable","name":"_data","nameLocation":"999:5:18","nodeType":"VariableDeclaration","scope":5376,"src":"986:18:18","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5365,"name":"bytes","nodeType":"ElementaryTypeName","src":"986:5:18","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"969:36:18"},"returnParameters":{"id":5368,"nodeType":"ParameterList","parameters":[],"src":"1014:0:18"},"scope":5389,"src":"958:112:18","stateMutability":"payable","virtual":false,"visibility":"public"},{"baseFunctions":[5710],"body":{"id":5387,"nodeType":"Block","src":"1229:59:18","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":5383,"name":"ERC1967Upgrade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5693,"src":"1246:14:18","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC1967Upgrade_$5693_$","typeString":"type(contract ERC1967Upgrade)"}},"id":5384,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1261:18:18","memberName":"_getImplementation","nodeType":"MemberAccess","referencedDeclaration":5419,"src":"1246:33:18","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":5385,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1246:35:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":5382,"id":5386,"nodeType":"Return","src":"1239:42:18"}]},"documentation":{"id":5377,"nodeType":"StructuredDocumentation","src":"1076:67:18","text":" @dev Returns the current implementation address."},"id":5388,"implemented":true,"kind":"function","modifiers":[],"name":"_implementation","nameLocation":"1157:15:18","nodeType":"FunctionDefinition","overrides":{"id":5379,"nodeType":"OverrideSpecifier","overrides":[],"src":"1197:8:18"},"parameters":{"id":5378,"nodeType":"ParameterList","parameters":[],"src":"1172:2:18"},"returnParameters":{"id":5382,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5381,"mutability":"mutable","name":"impl","nameLocation":"1223:4:18","nodeType":"VariableDeclaration","scope":5388,"src":"1215:12:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5380,"name":"address","nodeType":"ElementaryTypeName","src":"1215:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1214:14:18"},"scope":5389,"src":"1148:140:18","stateMutability":"view","virtual":true,"visibility":"internal"}],"scope":5390,"src":"567:723:18","usedErrors":[]}],"src":"114:1177:18"},"id":18},"@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol","exportedSymbols":{"Address":[9264],"ERC1967Upgrade":[5693],"IBeacon":[5755],"IERC1822Proxiable":[5272],"IERC1967":[5262],"StorageSlot":[9478]},"id":5694,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":5391,"literals":["solidity","^","0.8",".2"],"nodeType":"PragmaDirective","src":"116:23:19"},{"absolutePath":"@openzeppelin/contracts/proxy/beacon/IBeacon.sol","file":"../beacon/IBeacon.sol","id":5392,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5694,"sourceUnit":5756,"src":"141:31:19","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/interfaces/IERC1967.sol","file":"../../interfaces/IERC1967.sol","id":5393,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5694,"sourceUnit":5263,"src":"173:39:19","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/interfaces/draft-IERC1822.sol","file":"../../interfaces/draft-IERC1822.sol","id":5394,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5694,"sourceUnit":5273,"src":"213:45:19","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Address.sol","file":"../../utils/Address.sol","id":5395,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5694,"sourceUnit":9265,"src":"259:33:19","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/StorageSlot.sol","file":"../../utils/StorageSlot.sol","id":5396,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5694,"sourceUnit":9479,"src":"293:37:19","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":5398,"name":"IERC1967","nameLocations":["553:8:19"],"nodeType":"IdentifierPath","referencedDeclaration":5262,"src":"553:8:19"},"id":5399,"nodeType":"InheritanceSpecifier","src":"553:8:19"}],"canonicalName":"ERC1967Upgrade","contractDependencies":[],"contractKind":"contract","documentation":{"id":5397,"nodeType":"StructuredDocumentation","src":"332:184:19","text":" @dev This abstract contract provides getters and event emitting update functions for\n https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\n _Available since v4.1._"},"fullyImplemented":true,"id":5693,"linearizedBaseContracts":[5693,5262],"name":"ERC1967Upgrade","nameLocation":"535:14:19","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":5402,"mutability":"constant","name":"_ROLLBACK_SLOT","nameLocation":"672:14:19","nodeType":"VariableDeclaration","scope":5693,"src":"647:108:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5400,"name":"bytes32","nodeType":"ElementaryTypeName","src":"647:7:19","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307834393130666466613136666564333236306564306537313437663763633664613131613630323038623562393430366431326136333536313466666439313433","id":5401,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"689:66:19","typeDescriptions":{"typeIdentifier":"t_rational_33048860383849004559742813297059419343339852917517107368639918720169455489347_by_1","typeString":"int_const 3304...(69 digits omitted)...9347"},"value":"0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143"},"visibility":"private"},{"constant":true,"documentation":{"id":5403,"nodeType":"StructuredDocumentation","src":"762:214:19","text":" @dev Storage slot with the address of the current implementation.\n This is the keccak-256 hash of \"eip1967.proxy.implementation\" subtracted by 1, and is\n validated in the constructor."},"id":5406,"mutability":"constant","name":"_IMPLEMENTATION_SLOT","nameLocation":"1007:20:19","nodeType":"VariableDeclaration","scope":5693,"src":"981:115:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5404,"name":"bytes32","nodeType":"ElementaryTypeName","src":"981:7:19","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307833363038393461313362613161333231303636376338323834393264623938646361336532303736636333373335613932306133636135303564333832626263","id":5405,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1030:66:19","typeDescriptions":{"typeIdentifier":"t_rational_24440054405305269366569402256811496959409073762505157381672968839269610695612_by_1","typeString":"int_const 2444...(69 digits omitted)...5612"},"value":"0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc"},"visibility":"internal"},{"body":{"id":5418,"nodeType":"Block","src":"1237:78:19","statements":[{"expression":{"expression":{"arguments":[{"id":5414,"name":"_IMPLEMENTATION_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5406,"src":"1281:20:19","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":5412,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9478,"src":"1254:11:19","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$9478_$","typeString":"type(library StorageSlot)"}},"id":5413,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1266:14:19","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":9400,"src":"1254:26:19","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$9374_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"}},"id":5415,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1254:48:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$9374_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"id":5416,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1303:5:19","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":9373,"src":"1254:54:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":5411,"id":5417,"nodeType":"Return","src":"1247:61:19"}]},"documentation":{"id":5407,"nodeType":"StructuredDocumentation","src":"1103:67:19","text":" @dev Returns the current implementation address."},"id":5419,"implemented":true,"kind":"function","modifiers":[],"name":"_getImplementation","nameLocation":"1184:18:19","nodeType":"FunctionDefinition","parameters":{"id":5408,"nodeType":"ParameterList","parameters":[],"src":"1202:2:19"},"returnParameters":{"id":5411,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5410,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5419,"src":"1228:7:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5409,"name":"address","nodeType":"ElementaryTypeName","src":"1228:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1227:9:19"},"scope":5693,"src":"1175:140:19","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":5442,"nodeType":"Block","src":"1469:196:19","statements":[{"expression":{"arguments":[{"arguments":[{"id":5428,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5422,"src":"1506:17:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":5426,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9264,"src":"1487:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Address_$9264_$","typeString":"type(library Address)"}},"id":5427,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1495:10:19","memberName":"isContract","nodeType":"MemberAccess","referencedDeclaration":8952,"src":"1487:18:19","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":5429,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1487:37:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"455243313936373a206e657720696d706c656d656e746174696f6e206973206e6f74206120636f6e7472616374","id":5430,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1526:47:19","typeDescriptions":{"typeIdentifier":"t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65","typeString":"literal_string \"ERC1967: new implementation is not a contract\""},"value":"ERC1967: new implementation is not a contract"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65","typeString":"literal_string \"ERC1967: new implementation is not a contract\""}],"id":5425,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"1479:7:19","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":5431,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1479:95:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5432,"nodeType":"ExpressionStatement","src":"1479:95:19"},{"expression":{"id":5440,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[{"id":5436,"name":"_IMPLEMENTATION_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5406,"src":"1611:20:19","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":5433,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9478,"src":"1584:11:19","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$9478_$","typeString":"type(library StorageSlot)"}},"id":5435,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1596:14:19","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":9400,"src":"1584:26:19","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$9374_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"}},"id":5437,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1584:48:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$9374_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"id":5438,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1633:5:19","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":9373,"src":"1584:54:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":5439,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5422,"src":"1641:17:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1584:74:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":5441,"nodeType":"ExpressionStatement","src":"1584:74:19"}]},"documentation":{"id":5420,"nodeType":"StructuredDocumentation","src":"1321:80:19","text":" @dev Stores a new address in the EIP1967 implementation slot."},"id":5443,"implemented":true,"kind":"function","modifiers":[],"name":"_setImplementation","nameLocation":"1415:18:19","nodeType":"FunctionDefinition","parameters":{"id":5423,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5422,"mutability":"mutable","name":"newImplementation","nameLocation":"1442:17:19","nodeType":"VariableDeclaration","scope":5443,"src":"1434:25:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5421,"name":"address","nodeType":"ElementaryTypeName","src":"1434:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1433:27:19"},"returnParameters":{"id":5424,"nodeType":"ParameterList","parameters":[],"src":"1469:0:19"},"scope":5693,"src":"1406:259:19","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":5457,"nodeType":"Block","src":"1827:96:19","statements":[{"expression":{"arguments":[{"id":5450,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5446,"src":"1856:17:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":5449,"name":"_setImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5443,"src":"1837:18:19","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":5451,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1837:37:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5452,"nodeType":"ExpressionStatement","src":"1837:37:19"},{"eventCall":{"arguments":[{"id":5454,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5446,"src":"1898:17:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":5453,"name":"Upgraded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5249,"src":"1889:8:19","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":5455,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1889:27:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5456,"nodeType":"EmitStatement","src":"1884:32:19"}]},"documentation":{"id":5444,"nodeType":"StructuredDocumentation","src":"1671:95:19","text":" @dev Perform implementation upgrade\n Emits an {Upgraded} event."},"id":5458,"implemented":true,"kind":"function","modifiers":[],"name":"_upgradeTo","nameLocation":"1780:10:19","nodeType":"FunctionDefinition","parameters":{"id":5447,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5446,"mutability":"mutable","name":"newImplementation","nameLocation":"1799:17:19","nodeType":"VariableDeclaration","scope":5458,"src":"1791:25:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5445,"name":"address","nodeType":"ElementaryTypeName","src":"1791:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1790:27:19"},"returnParameters":{"id":5448,"nodeType":"ParameterList","parameters":[],"src":"1827:0:19"},"scope":5693,"src":"1771:152:19","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":5487,"nodeType":"Block","src":"2155:167:19","statements":[{"expression":{"arguments":[{"id":5469,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5461,"src":"2176:17:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":5468,"name":"_upgradeTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5458,"src":"2165:10:19","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":5470,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2165:29:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5471,"nodeType":"ExpressionStatement","src":"2165:29:19"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":5477,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5475,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":5472,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5463,"src":"2208:4:19","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":5473,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2213:6:19","memberName":"length","nodeType":"MemberAccess","src":"2208:11:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":5474,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2222:1:19","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2208:15:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"id":5476,"name":"forceCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5465,"src":"2227:9:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2208:28:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5486,"nodeType":"IfStatement","src":"2204:112:19","trueBody":{"id":5485,"nodeType":"Block","src":"2238:78:19","statements":[{"expression":{"arguments":[{"id":5481,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5461,"src":"2281:17:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5482,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5463,"src":"2300:4:19","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":5478,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9264,"src":"2252:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Address_$9264_$","typeString":"type(library Address)"}},"id":5480,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2260:20:19","memberName":"functionDelegateCall","nodeType":"MemberAccess","referencedDeclaration":9151,"src":"2252:28:19","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory) returns (bytes memory)"}},"id":5483,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2252:53:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":5484,"nodeType":"ExpressionStatement","src":"2252:53:19"}]}}]},"documentation":{"id":5459,"nodeType":"StructuredDocumentation","src":"1929:123:19","text":" @dev Perform implementation upgrade with additional setup call.\n Emits an {Upgraded} event."},"id":5488,"implemented":true,"kind":"function","modifiers":[],"name":"_upgradeToAndCall","nameLocation":"2066:17:19","nodeType":"FunctionDefinition","parameters":{"id":5466,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5461,"mutability":"mutable","name":"newImplementation","nameLocation":"2092:17:19","nodeType":"VariableDeclaration","scope":5488,"src":"2084:25:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5460,"name":"address","nodeType":"ElementaryTypeName","src":"2084:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5463,"mutability":"mutable","name":"data","nameLocation":"2124:4:19","nodeType":"VariableDeclaration","scope":5488,"src":"2111:17:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5462,"name":"bytes","nodeType":"ElementaryTypeName","src":"2111:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":5465,"mutability":"mutable","name":"forceCall","nameLocation":"2135:9:19","nodeType":"VariableDeclaration","scope":5488,"src":"2130:14:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5464,"name":"bool","nodeType":"ElementaryTypeName","src":"2130:4:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2083:62:19"},"returnParameters":{"id":5467,"nodeType":"ParameterList","parameters":[],"src":"2155:0:19"},"scope":5693,"src":"2057:265:19","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":5540,"nodeType":"Block","src":"2596:820:19","statements":[{"condition":{"expression":{"arguments":[{"id":5500,"name":"_ROLLBACK_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5402,"src":"2937:14:19","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":5498,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9478,"src":"2910:11:19","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$9478_$","typeString":"type(library StorageSlot)"}},"id":5499,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2922:14:19","memberName":"getBooleanSlot","nodeType":"MemberAccess","referencedDeclaration":9411,"src":"2910:26:19","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_BooleanSlot_$9377_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.BooleanSlot storage pointer)"}},"id":5501,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2910:42:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_BooleanSlot_$9377_storage_ptr","typeString":"struct StorageSlot.BooleanSlot storage pointer"}},"id":5502,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2953:5:19","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":9376,"src":"2910:48:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":5538,"nodeType":"Block","src":"3028:382:19","statements":[{"clauses":[{"block":{"id":5523,"nodeType":"Block","src":"3122:115:19","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":5519,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5517,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5514,"src":"3148:4:19","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":5518,"name":"_IMPLEMENTATION_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5406,"src":"3156:20:19","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"3148:28:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"45524331393637557067726164653a20756e737570706f727465642070726f786961626c6555554944","id":5520,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3178:43:19","typeDescriptions":{"typeIdentifier":"t_stringliteral_76b6b6debfc5febf101145a79ecf0b0d2e89e397dfdab2bca99888370411152c","typeString":"literal_string \"ERC1967Upgrade: unsupported proxiableUUID\""},"value":"ERC1967Upgrade: unsupported proxiableUUID"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_76b6b6debfc5febf101145a79ecf0b0d2e89e397dfdab2bca99888370411152c","typeString":"literal_string \"ERC1967Upgrade: unsupported proxiableUUID\""}],"id":5516,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"3140:7:19","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":5521,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3140:82:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5522,"nodeType":"ExpressionStatement","src":"3140:82:19"}]},"errorName":"","id":5524,"nodeType":"TryCatchClause","parameters":{"id":5515,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5514,"mutability":"mutable","name":"slot","nameLocation":"3116:4:19","nodeType":"VariableDeclaration","scope":5524,"src":"3108:12:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5513,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3108:7:19","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3107:14:19"},"src":"3099:138:19"},{"block":{"id":5529,"nodeType":"Block","src":"3244:89:19","statements":[{"expression":{"arguments":[{"hexValue":"45524331393637557067726164653a206e657720696d706c656d656e746174696f6e206973206e6f742055555053","id":5526,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3269:48:19","typeDescriptions":{"typeIdentifier":"t_stringliteral_8e8e2fbcb586f700b5b14e2c4a650c8d83b9773c31c5fe8962070ea544e11f24","typeString":"literal_string \"ERC1967Upgrade: new implementation is not UUPS\""},"value":"ERC1967Upgrade: new implementation is not UUPS"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_8e8e2fbcb586f700b5b14e2c4a650c8d83b9773c31c5fe8962070ea544e11f24","typeString":"literal_string \"ERC1967Upgrade: new implementation is not UUPS\""}],"id":5525,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[4294967277,4294967277],"referencedDeclaration":4294967277,"src":"3262:6:19","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":5527,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3262:56:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5528,"nodeType":"ExpressionStatement","src":"3262:56:19"}]},"errorName":"","id":5530,"nodeType":"TryCatchClause","src":"3238:95:19"}],"externalCall":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":5509,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5491,"src":"3064:17:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":5508,"name":"IERC1822Proxiable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5272,"src":"3046:17:19","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC1822Proxiable_$5272_$","typeString":"type(contract IERC1822Proxiable)"}},"id":5510,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3046:36:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC1822Proxiable_$5272","typeString":"contract IERC1822Proxiable"}},"id":5511,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3083:13:19","memberName":"proxiableUUID","nodeType":"MemberAccess","referencedDeclaration":5271,"src":"3046:50:19","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_bytes32_$","typeString":"function () view external returns (bytes32)"}},"id":5512,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3046:52:19","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":5531,"nodeType":"TryStatement","src":"3042:291:19"},{"expression":{"arguments":[{"id":5533,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5491,"src":"3364:17:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5534,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5493,"src":"3383:4:19","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":5535,"name":"forceCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5495,"src":"3389:9:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":5532,"name":"_upgradeToAndCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5488,"src":"3346:17:19","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_bool_$returns$__$","typeString":"function (address,bytes memory,bool)"}},"id":5536,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3346:53:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5537,"nodeType":"ExpressionStatement","src":"3346:53:19"}]},"id":5539,"nodeType":"IfStatement","src":"2906:504:19","trueBody":{"id":5507,"nodeType":"Block","src":"2960:62:19","statements":[{"expression":{"arguments":[{"id":5504,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5491,"src":"2993:17:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":5503,"name":"_setImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5443,"src":"2974:18:19","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":5505,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2974:37:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5506,"nodeType":"ExpressionStatement","src":"2974:37:19"}]}}]},"documentation":{"id":5489,"nodeType":"StructuredDocumentation","src":"2328:161:19","text":" @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\n Emits an {Upgraded} event."},"id":5541,"implemented":true,"kind":"function","modifiers":[],"name":"_upgradeToAndCallUUPS","nameLocation":"2503:21:19","nodeType":"FunctionDefinition","parameters":{"id":5496,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5491,"mutability":"mutable","name":"newImplementation","nameLocation":"2533:17:19","nodeType":"VariableDeclaration","scope":5541,"src":"2525:25:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5490,"name":"address","nodeType":"ElementaryTypeName","src":"2525:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5493,"mutability":"mutable","name":"data","nameLocation":"2565:4:19","nodeType":"VariableDeclaration","scope":5541,"src":"2552:17:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5492,"name":"bytes","nodeType":"ElementaryTypeName","src":"2552:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":5495,"mutability":"mutable","name":"forceCall","nameLocation":"2576:9:19","nodeType":"VariableDeclaration","scope":5541,"src":"2571:14:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5494,"name":"bool","nodeType":"ElementaryTypeName","src":"2571:4:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2524:62:19"},"returnParameters":{"id":5497,"nodeType":"ParameterList","parameters":[],"src":"2596:0:19"},"scope":5693,"src":"2494:922:19","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"constant":true,"documentation":{"id":5542,"nodeType":"StructuredDocumentation","src":"3422:189:19","text":" @dev Storage slot with the admin of the contract.\n This is the keccak-256 hash of \"eip1967.proxy.admin\" subtracted by 1, and is\n validated in the constructor."},"id":5545,"mutability":"constant","name":"_ADMIN_SLOT","nameLocation":"3642:11:19","nodeType":"VariableDeclaration","scope":5693,"src":"3616:106:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5543,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3616:7:19","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307862353331323736383461353638623331373361653133623966386136303136653234336536336236653865653131373864366137313738353062356436313033","id":5544,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3656:66:19","typeDescriptions":{"typeIdentifier":"t_rational_81955473079516046949633743016697847541294818689821282749996681496272635257091_by_1","typeString":"int_const 8195...(69 digits omitted)...7091"},"value":"0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103"},"visibility":"internal"},{"body":{"id":5557,"nodeType":"Block","src":"3837:69:19","statements":[{"expression":{"expression":{"arguments":[{"id":5553,"name":"_ADMIN_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5545,"src":"3881:11:19","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":5551,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9478,"src":"3854:11:19","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$9478_$","typeString":"type(library StorageSlot)"}},"id":5552,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3866:14:19","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":9400,"src":"3854:26:19","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$9374_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"}},"id":5554,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3854:39:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$9374_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"id":5555,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3894:5:19","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":9373,"src":"3854:45:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":5550,"id":5556,"nodeType":"Return","src":"3847:52:19"}]},"documentation":{"id":5546,"nodeType":"StructuredDocumentation","src":"3729:50:19","text":" @dev Returns the current admin."},"id":5558,"implemented":true,"kind":"function","modifiers":[],"name":"_getAdmin","nameLocation":"3793:9:19","nodeType":"FunctionDefinition","parameters":{"id":5547,"nodeType":"ParameterList","parameters":[],"src":"3802:2:19"},"returnParameters":{"id":5550,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5549,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5558,"src":"3828:7:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5548,"name":"address","nodeType":"ElementaryTypeName","src":"3828:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3827:9:19"},"scope":5693,"src":"3784:122:19","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":5583,"nodeType":"Block","src":"4033:156:19","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":5570,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5565,"name":"newAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5561,"src":"4051:8:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":5568,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4071:1:19","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":5567,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4063:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5566,"name":"address","nodeType":"ElementaryTypeName","src":"4063:7:19","typeDescriptions":{}}},"id":5569,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4063:10:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4051:22:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"455243313936373a206e65772061646d696e20697320746865207a65726f2061646472657373","id":5571,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4075:40:19","typeDescriptions":{"typeIdentifier":"t_stringliteral_3820e16891102c1360a787e6e648431097d92537f969d458f5c94b56f8318be5","typeString":"literal_string \"ERC1967: new admin is the zero address\""},"value":"ERC1967: new admin is the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_3820e16891102c1360a787e6e648431097d92537f969d458f5c94b56f8318be5","typeString":"literal_string \"ERC1967: new admin is the zero address\""}],"id":5564,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"4043:7:19","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":5572,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4043:73:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5573,"nodeType":"ExpressionStatement","src":"4043:73:19"},{"expression":{"id":5581,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[{"id":5577,"name":"_ADMIN_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5545,"src":"4153:11:19","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":5574,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9478,"src":"4126:11:19","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$9478_$","typeString":"type(library StorageSlot)"}},"id":5576,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4138:14:19","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":9400,"src":"4126:26:19","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$9374_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"}},"id":5578,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4126:39:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$9374_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"id":5579,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4166:5:19","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":9373,"src":"4126:45:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":5580,"name":"newAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5561,"src":"4174:8:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4126:56:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":5582,"nodeType":"ExpressionStatement","src":"4126:56:19"}]},"documentation":{"id":5559,"nodeType":"StructuredDocumentation","src":"3912:71:19","text":" @dev Stores a new address in the EIP1967 admin slot."},"id":5584,"implemented":true,"kind":"function","modifiers":[],"name":"_setAdmin","nameLocation":"3997:9:19","nodeType":"FunctionDefinition","parameters":{"id":5562,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5561,"mutability":"mutable","name":"newAdmin","nameLocation":"4015:8:19","nodeType":"VariableDeclaration","scope":5584,"src":"4007:16:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5560,"name":"address","nodeType":"ElementaryTypeName","src":"4007:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4006:18:19"},"returnParameters":{"id":5563,"nodeType":"ParameterList","parameters":[],"src":"4033:0:19"},"scope":5693,"src":"3988:201:19","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":5600,"nodeType":"Block","src":"4349:86:19","statements":[{"eventCall":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":5591,"name":"_getAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5558,"src":"4377:9:19","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":5592,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4377:11:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5593,"name":"newAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5587,"src":"4390:8:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":5590,"name":"AdminChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5256,"src":"4364:12:19","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":5594,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4364:35:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5595,"nodeType":"EmitStatement","src":"4359:40:19"},{"expression":{"arguments":[{"id":5597,"name":"newAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5587,"src":"4419:8:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":5596,"name":"_setAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5584,"src":"4409:9:19","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":5598,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4409:19:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5599,"nodeType":"ExpressionStatement","src":"4409:19:19"}]},"documentation":{"id":5585,"nodeType":"StructuredDocumentation","src":"4195:100:19","text":" @dev Changes the admin of the proxy.\n Emits an {AdminChanged} event."},"id":5601,"implemented":true,"kind":"function","modifiers":[],"name":"_changeAdmin","nameLocation":"4309:12:19","nodeType":"FunctionDefinition","parameters":{"id":5588,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5587,"mutability":"mutable","name":"newAdmin","nameLocation":"4330:8:19","nodeType":"VariableDeclaration","scope":5601,"src":"4322:16:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5586,"name":"address","nodeType":"ElementaryTypeName","src":"4322:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4321:18:19"},"returnParameters":{"id":5589,"nodeType":"ParameterList","parameters":[],"src":"4349:0:19"},"scope":5693,"src":"4300:135:19","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"constant":true,"documentation":{"id":5602,"nodeType":"StructuredDocumentation","src":"4441:232:19","text":" @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\n This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor."},"id":5605,"mutability":"constant","name":"_BEACON_SLOT","nameLocation":"4704:12:19","nodeType":"VariableDeclaration","scope":5693,"src":"4678:107:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5603,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4678:7:19","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307861336630616437346535343233616562666438306433656634333436353738333335613961373261656165653539666636636233353832623335313333643530","id":5604,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4719:66:19","typeDescriptions":{"typeIdentifier":"t_rational_74152234768234802001998023604048924213078445070507226371336425913862612794704_by_1","typeString":"int_const 7415...(69 digits omitted)...4704"},"value":"0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50"},"visibility":"internal"},{"body":{"id":5617,"nodeType":"Block","src":"4902:70:19","statements":[{"expression":{"expression":{"arguments":[{"id":5613,"name":"_BEACON_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5605,"src":"4946:12:19","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":5611,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9478,"src":"4919:11:19","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$9478_$","typeString":"type(library StorageSlot)"}},"id":5612,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4931:14:19","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":9400,"src":"4919:26:19","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$9374_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"}},"id":5614,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4919:40:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$9374_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"id":5615,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4960:5:19","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":9373,"src":"4919:46:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":5610,"id":5616,"nodeType":"Return","src":"4912:53:19"}]},"documentation":{"id":5606,"nodeType":"StructuredDocumentation","src":"4792:51:19","text":" @dev Returns the current beacon."},"id":5618,"implemented":true,"kind":"function","modifiers":[],"name":"_getBeacon","nameLocation":"4857:10:19","nodeType":"FunctionDefinition","parameters":{"id":5607,"nodeType":"ParameterList","parameters":[],"src":"4867:2:19"},"returnParameters":{"id":5610,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5609,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5618,"src":"4893:7:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5608,"name":"address","nodeType":"ElementaryTypeName","src":"4893:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4892:9:19"},"scope":5693,"src":"4848:124:19","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":5653,"nodeType":"Block","src":"5101:324:19","statements":[{"expression":{"arguments":[{"arguments":[{"id":5627,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5621,"src":"5138:9:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":5625,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9264,"src":"5119:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Address_$9264_$","typeString":"type(library Address)"}},"id":5626,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5127:10:19","memberName":"isContract","nodeType":"MemberAccess","referencedDeclaration":8952,"src":"5119:18:19","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":5628,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5119:29:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"455243313936373a206e657720626561636f6e206973206e6f74206120636f6e7472616374","id":5629,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5150:39:19","typeDescriptions":{"typeIdentifier":"t_stringliteral_9589b7809634e4928033de18bb696e9af4ef71b703652af5245f2dbebf2f4470","typeString":"literal_string \"ERC1967: new beacon is not a contract\""},"value":"ERC1967: new beacon is not a contract"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9589b7809634e4928033de18bb696e9af4ef71b703652af5245f2dbebf2f4470","typeString":"literal_string \"ERC1967: new beacon is not a contract\""}],"id":5624,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"5111:7:19","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":5630,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5111:79:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5631,"nodeType":"ExpressionStatement","src":"5111:79:19"},{"expression":{"arguments":[{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":5636,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5621,"src":"5248:9:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":5635,"name":"IBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5755,"src":"5240:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBeacon_$5755_$","typeString":"type(contract IBeacon)"}},"id":5637,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5240:18:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBeacon_$5755","typeString":"contract IBeacon"}},"id":5638,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5259:14:19","memberName":"implementation","nodeType":"MemberAccess","referencedDeclaration":5754,"src":"5240:33:19","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":5639,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5240:35:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":5633,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9264,"src":"5221:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Address_$9264_$","typeString":"type(library Address)"}},"id":5634,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5229:10:19","memberName":"isContract","nodeType":"MemberAccess","referencedDeclaration":8952,"src":"5221:18:19","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":5640,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5221:55:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"455243313936373a20626561636f6e20696d706c656d656e746174696f6e206973206e6f74206120636f6e7472616374","id":5641,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5290:50:19","typeDescriptions":{"typeIdentifier":"t_stringliteral_f95fd1f5b5578816eb23f6ca0f2439b4b5e4094dc16e99c3b8e91603a83f93c8","typeString":"literal_string \"ERC1967: beacon implementation is not a contract\""},"value":"ERC1967: beacon implementation is not a contract"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_f95fd1f5b5578816eb23f6ca0f2439b4b5e4094dc16e99c3b8e91603a83f93c8","typeString":"literal_string \"ERC1967: beacon implementation is not a contract\""}],"id":5632,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"5200:7:19","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":5642,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5200:150:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5643,"nodeType":"ExpressionStatement","src":"5200:150:19"},{"expression":{"id":5651,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[{"id":5647,"name":"_BEACON_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5605,"src":"5387:12:19","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":5644,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9478,"src":"5360:11:19","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$9478_$","typeString":"type(library StorageSlot)"}},"id":5646,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5372:14:19","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":9400,"src":"5360:26:19","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$9374_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"}},"id":5648,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5360:40:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$9374_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"id":5649,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5401:5:19","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":9373,"src":"5360:46:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":5650,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5621,"src":"5409:9:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5360:58:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":5652,"nodeType":"ExpressionStatement","src":"5360:58:19"}]},"documentation":{"id":5619,"nodeType":"StructuredDocumentation","src":"4978:71:19","text":" @dev Stores a new beacon in the EIP1967 beacon slot."},"id":5654,"implemented":true,"kind":"function","modifiers":[],"name":"_setBeacon","nameLocation":"5063:10:19","nodeType":"FunctionDefinition","parameters":{"id":5622,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5621,"mutability":"mutable","name":"newBeacon","nameLocation":"5082:9:19","nodeType":"VariableDeclaration","scope":5654,"src":"5074:17:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5620,"name":"address","nodeType":"ElementaryTypeName","src":"5074:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5073:19:19"},"returnParameters":{"id":5623,"nodeType":"ParameterList","parameters":[],"src":"5101:0:19"},"scope":5693,"src":"5054:371:19","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":5691,"nodeType":"Block","src":"5824:217:19","statements":[{"expression":{"arguments":[{"id":5665,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5657,"src":"5845:9:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":5664,"name":"_setBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5654,"src":"5834:10:19","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":5666,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5834:21:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5667,"nodeType":"ExpressionStatement","src":"5834:21:19"},{"eventCall":{"arguments":[{"id":5669,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5657,"src":"5885:9:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":5668,"name":"BeaconUpgraded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5261,"src":"5870:14:19","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":5670,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5870:25:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5671,"nodeType":"EmitStatement","src":"5865:30:19"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":5677,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5675,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":5672,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5659,"src":"5909:4:19","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":5673,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5914:6:19","memberName":"length","nodeType":"MemberAccess","src":"5909:11:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":5674,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5923:1:19","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5909:15:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"id":5676,"name":"forceCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5661,"src":"5928:9:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"5909:28:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5690,"nodeType":"IfStatement","src":"5905:130:19","trueBody":{"id":5689,"nodeType":"Block","src":"5939:96:19","statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":5682,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5657,"src":"5990:9:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":5681,"name":"IBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5755,"src":"5982:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBeacon_$5755_$","typeString":"type(contract IBeacon)"}},"id":5683,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5982:18:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBeacon_$5755","typeString":"contract IBeacon"}},"id":5684,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6001:14:19","memberName":"implementation","nodeType":"MemberAccess","referencedDeclaration":5754,"src":"5982:33:19","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":5685,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5982:35:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5686,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5659,"src":"6019:4:19","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":5678,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9264,"src":"5953:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Address_$9264_$","typeString":"type(library Address)"}},"id":5680,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5961:20:19","memberName":"functionDelegateCall","nodeType":"MemberAccess","referencedDeclaration":9151,"src":"5953:28:19","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory) returns (bytes memory)"}},"id":5687,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5953:71:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":5688,"nodeType":"ExpressionStatement","src":"5953:71:19"}]}}]},"documentation":{"id":5655,"nodeType":"StructuredDocumentation","src":"5431:292:19","text":" @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\n not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\n Emits a {BeaconUpgraded} event."},"id":5692,"implemented":true,"kind":"function","modifiers":[],"name":"_upgradeBeaconToAndCall","nameLocation":"5737:23:19","nodeType":"FunctionDefinition","parameters":{"id":5662,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5657,"mutability":"mutable","name":"newBeacon","nameLocation":"5769:9:19","nodeType":"VariableDeclaration","scope":5692,"src":"5761:17:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5656,"name":"address","nodeType":"ElementaryTypeName","src":"5761:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5659,"mutability":"mutable","name":"data","nameLocation":"5793:4:19","nodeType":"VariableDeclaration","scope":5692,"src":"5780:17:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5658,"name":"bytes","nodeType":"ElementaryTypeName","src":"5780:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":5661,"mutability":"mutable","name":"forceCall","nameLocation":"5804:9:19","nodeType":"VariableDeclaration","scope":5692,"src":"5799:14:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5660,"name":"bool","nodeType":"ElementaryTypeName","src":"5799:4:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5760:54:19"},"returnParameters":{"id":5663,"nodeType":"ParameterList","parameters":[],"src":"5824:0:19"},"scope":5693,"src":"5728:313:19","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":5694,"src":"517:5526:19","usedErrors":[]}],"src":"116:5928:19"},"id":19},"@openzeppelin/contracts/proxy/Proxy.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/proxy/Proxy.sol","exportedSymbols":{"Proxy":[5745]},"id":5746,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":5695,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"99:23:20"},{"abstract":true,"baseContracts":[],"canonicalName":"Proxy","contractDependencies":[],"contractKind":"contract","documentation":{"id":5696,"nodeType":"StructuredDocumentation","src":"124:598:20","text":" @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\n instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\n be specified by overriding the virtual {_implementation} function.\n Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\n different contract through the {_delegate} function.\n The success and return data of the delegated call will be returned back to the caller of the proxy."},"fullyImplemented":false,"id":5745,"linearizedBaseContracts":[5745],"name":"Proxy","nameLocation":"741:5:20","nodeType":"ContractDefinition","nodes":[{"body":{"id":5703,"nodeType":"Block","src":"1008:835:20","statements":[{"AST":{"nodeType":"YulBlock","src":"1027:810:20","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1280:1:20","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1283:1:20","type":"","value":"0"},{"arguments":[],"functionName":{"name":"calldatasize","nodeType":"YulIdentifier","src":"1286:12:20"},"nodeType":"YulFunctionCall","src":"1286:14:20"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"1267:12:20"},"nodeType":"YulFunctionCall","src":"1267:34:20"},"nodeType":"YulExpressionStatement","src":"1267:34:20"},{"nodeType":"YulVariableDeclaration","src":"1428:74:20","value":{"arguments":[{"arguments":[],"functionName":{"name":"gas","nodeType":"YulIdentifier","src":"1455:3:20"},"nodeType":"YulFunctionCall","src":"1455:5:20"},{"name":"implementation","nodeType":"YulIdentifier","src":"1462:14:20"},{"kind":"number","nodeType":"YulLiteral","src":"1478:1:20","type":"","value":"0"},{"arguments":[],"functionName":{"name":"calldatasize","nodeType":"YulIdentifier","src":"1481:12:20"},"nodeType":"YulFunctionCall","src":"1481:14:20"},{"kind":"number","nodeType":"YulLiteral","src":"1497:1:20","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1500:1:20","type":"","value":"0"}],"functionName":{"name":"delegatecall","nodeType":"YulIdentifier","src":"1442:12:20"},"nodeType":"YulFunctionCall","src":"1442:60:20"},"variables":[{"name":"result","nodeType":"YulTypedName","src":"1432:6:20","type":""}]},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1570:1:20","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1573:1:20","type":"","value":"0"},{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"1576:14:20"},"nodeType":"YulFunctionCall","src":"1576:16:20"}],"functionName":{"name":"returndatacopy","nodeType":"YulIdentifier","src":"1555:14:20"},"nodeType":"YulFunctionCall","src":"1555:38:20"},"nodeType":"YulExpressionStatement","src":"1555:38:20"},{"cases":[{"body":{"nodeType":"YulBlock","src":"1688:59:20","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1713:1:20","type":"","value":"0"},{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"1716:14:20"},"nodeType":"YulFunctionCall","src":"1716:16:20"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1706:6:20"},"nodeType":"YulFunctionCall","src":"1706:27:20"},"nodeType":"YulExpressionStatement","src":"1706:27:20"}]},"nodeType":"YulCase","src":"1681:66:20","value":{"kind":"number","nodeType":"YulLiteral","src":"1686:1:20","type":"","value":"0"}},{"body":{"nodeType":"YulBlock","src":"1768:59:20","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1793:1:20","type":"","value":"0"},{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"1796:14:20"},"nodeType":"YulFunctionCall","src":"1796:16:20"}],"functionName":{"name":"return","nodeType":"YulIdentifier","src":"1786:6:20"},"nodeType":"YulFunctionCall","src":"1786:27:20"},"nodeType":"YulExpressionStatement","src":"1786:27:20"}]},"nodeType":"YulCase","src":"1760:67:20","value":"default"}],"expression":{"name":"result","nodeType":"YulIdentifier","src":"1614:6:20"},"nodeType":"YulSwitch","src":"1607:220:20"}]},"evmVersion":"london","externalReferences":[{"declaration":5699,"isOffset":false,"isSlot":false,"src":"1462:14:20","valueSize":1}],"id":5702,"nodeType":"InlineAssembly","src":"1018:819:20"}]},"documentation":{"id":5697,"nodeType":"StructuredDocumentation","src":"753:190:20","text":" @dev Delegates the current call to `implementation`.\n This function does not return to its internal call site, it will return directly to the external caller."},"id":5704,"implemented":true,"kind":"function","modifiers":[],"name":"_delegate","nameLocation":"957:9:20","nodeType":"FunctionDefinition","parameters":{"id":5700,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5699,"mutability":"mutable","name":"implementation","nameLocation":"975:14:20","nodeType":"VariableDeclaration","scope":5704,"src":"967:22:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5698,"name":"address","nodeType":"ElementaryTypeName","src":"967:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"966:24:20"},"returnParameters":{"id":5701,"nodeType":"ParameterList","parameters":[],"src":"1008:0:20"},"scope":5745,"src":"948:895:20","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"documentation":{"id":5705,"nodeType":"StructuredDocumentation","src":"1849:173:20","text":" @dev This is a virtual function that should be overridden so it returns the address to which the fallback function\n and {_fallback} should delegate."},"id":5710,"implemented":false,"kind":"function","modifiers":[],"name":"_implementation","nameLocation":"2036:15:20","nodeType":"FunctionDefinition","parameters":{"id":5706,"nodeType":"ParameterList","parameters":[],"src":"2051:2:20"},"returnParameters":{"id":5709,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5708,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5710,"src":"2085:7:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5707,"name":"address","nodeType":"ElementaryTypeName","src":"2085:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2084:9:20"},"scope":5745,"src":"2027:67:20","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":5722,"nodeType":"Block","src":"2360:72:20","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":5714,"name":"_beforeFallback","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5744,"src":"2370:15:20","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":5715,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2370:17:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5716,"nodeType":"ExpressionStatement","src":"2370:17:20"},{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":5718,"name":"_implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5710,"src":"2407:15:20","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":5719,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2407:17:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":5717,"name":"_delegate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5704,"src":"2397:9:20","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":5720,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2397:28:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5721,"nodeType":"ExpressionStatement","src":"2397:28:20"}]},"documentation":{"id":5711,"nodeType":"StructuredDocumentation","src":"2100:217:20","text":" @dev Delegates the current call to the address returned by `_implementation()`.\n This function does not return to its internal call site, it will return directly to the external caller."},"id":5723,"implemented":true,"kind":"function","modifiers":[],"name":"_fallback","nameLocation":"2331:9:20","nodeType":"FunctionDefinition","parameters":{"id":5712,"nodeType":"ParameterList","parameters":[],"src":"2340:2:20"},"returnParameters":{"id":5713,"nodeType":"ParameterList","parameters":[],"src":"2360:0:20"},"scope":5745,"src":"2322:110:20","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":5730,"nodeType":"Block","src":"2665:28:20","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":5727,"name":"_fallback","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5723,"src":"2675:9:20","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":5728,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2675:11:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5729,"nodeType":"ExpressionStatement","src":"2675:11:20"}]},"documentation":{"id":5724,"nodeType":"StructuredDocumentation","src":"2438:186:20","text":" @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\n function in the contract matches the call data."},"id":5731,"implemented":true,"kind":"fallback","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":5725,"nodeType":"ParameterList","parameters":[],"src":"2637:2:20"},"returnParameters":{"id":5726,"nodeType":"ParameterList","parameters":[],"src":"2665:0:20"},"scope":5745,"src":"2629:64:20","stateMutability":"payable","virtual":true,"visibility":"external"},{"body":{"id":5738,"nodeType":"Block","src":"2888:28:20","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":5735,"name":"_fallback","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5723,"src":"2898:9:20","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":5736,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2898:11:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5737,"nodeType":"ExpressionStatement","src":"2898:11:20"}]},"documentation":{"id":5732,"nodeType":"StructuredDocumentation","src":"2699:149:20","text":" @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data\n is empty."},"id":5739,"implemented":true,"kind":"receive","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":5733,"nodeType":"ParameterList","parameters":[],"src":"2860:2:20"},"returnParameters":{"id":5734,"nodeType":"ParameterList","parameters":[],"src":"2888:0:20"},"scope":5745,"src":"2853:63:20","stateMutability":"payable","virtual":true,"visibility":"external"},{"body":{"id":5743,"nodeType":"Block","src":"3242:2:20","statements":[]},"documentation":{"id":5740,"nodeType":"StructuredDocumentation","src":"2922:271:20","text":" @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`\n call, or as part of the Solidity `fallback` or `receive` functions.\n If overridden should call `super._beforeFallback()`."},"id":5744,"implemented":true,"kind":"function","modifiers":[],"name":"_beforeFallback","nameLocation":"3207:15:20","nodeType":"FunctionDefinition","parameters":{"id":5741,"nodeType":"ParameterList","parameters":[],"src":"3222:2:20"},"returnParameters":{"id":5742,"nodeType":"ParameterList","parameters":[],"src":"3242:0:20"},"scope":5745,"src":"3198:46:20","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":5746,"src":"723:2523:20","usedErrors":[]}],"src":"99:3148:20"},"id":20},"@openzeppelin/contracts/proxy/beacon/IBeacon.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/proxy/beacon/IBeacon.sol","exportedSymbols":{"IBeacon":[5755]},"id":5756,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":5747,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"93:23:21"},{"abstract":false,"baseContracts":[],"canonicalName":"IBeacon","contractDependencies":[],"contractKind":"interface","documentation":{"id":5748,"nodeType":"StructuredDocumentation","src":"118:79:21","text":" @dev This is the interface that {BeaconProxy} expects of its beacon."},"fullyImplemented":false,"id":5755,"linearizedBaseContracts":[5755],"name":"IBeacon","nameLocation":"208:7:21","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":5749,"nodeType":"StructuredDocumentation","src":"222:162:21","text":" @dev Must return an address that can be used as a delegate call target.\n {BeaconProxy} will check that this address is a contract."},"functionSelector":"5c60da1b","id":5754,"implemented":false,"kind":"function","modifiers":[],"name":"implementation","nameLocation":"398:14:21","nodeType":"FunctionDefinition","parameters":{"id":5750,"nodeType":"ParameterList","parameters":[],"src":"412:2:21"},"returnParameters":{"id":5753,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5752,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5754,"src":"438:7:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5751,"name":"address","nodeType":"ElementaryTypeName","src":"438:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"437:9:21"},"scope":5755,"src":"389:58:21","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":5756,"src":"198:251:21","usedErrors":[]}],"src":"93:357:21"},"id":21},"@openzeppelin/contracts/token/ERC1155/ERC1155.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC1155/ERC1155.sol","exportedSymbols":{"Address":[9264],"Context":[9294],"ERC1155":[6978],"ERC165":[9731],"IERC1155":[7100],"IERC1155MetadataURI":[7156],"IERC1155Receiver":[7141],"IERC165":[9743]},"id":6979,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":5757,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"109:23:22"},{"absolutePath":"@openzeppelin/contracts/token/ERC1155/IERC1155.sol","file":"./IERC1155.sol","id":5758,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6979,"sourceUnit":7101,"src":"134:24:22","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol","file":"./IERC1155Receiver.sol","id":5759,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6979,"sourceUnit":7142,"src":"159:32:22","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol","file":"./extensions/IERC1155MetadataURI.sol","id":5760,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6979,"sourceUnit":7157,"src":"192:46:22","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Address.sol","file":"../../utils/Address.sol","id":5761,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6979,"sourceUnit":9265,"src":"239:33:22","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Context.sol","file":"../../utils/Context.sol","id":5762,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6979,"sourceUnit":9295,"src":"273:33:22","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/introspection/ERC165.sol","file":"../../utils/introspection/ERC165.sol","id":5763,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6979,"sourceUnit":9732,"src":"307:46:22","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":5765,"name":"Context","nameLocations":["590:7:22"],"nodeType":"IdentifierPath","referencedDeclaration":9294,"src":"590:7:22"},"id":5766,"nodeType":"InheritanceSpecifier","src":"590:7:22"},{"baseName":{"id":5767,"name":"ERC165","nameLocations":["599:6:22"],"nodeType":"IdentifierPath","referencedDeclaration":9731,"src":"599:6:22"},"id":5768,"nodeType":"InheritanceSpecifier","src":"599:6:22"},{"baseName":{"id":5769,"name":"IERC1155","nameLocations":["607:8:22"],"nodeType":"IdentifierPath","referencedDeclaration":7100,"src":"607:8:22"},"id":5770,"nodeType":"InheritanceSpecifier","src":"607:8:22"},{"baseName":{"id":5771,"name":"IERC1155MetadataURI","nameLocations":["617:19:22"],"nodeType":"IdentifierPath","referencedDeclaration":7156,"src":"617:19:22"},"id":5772,"nodeType":"InheritanceSpecifier","src":"617:19:22"}],"canonicalName":"ERC1155","contractDependencies":[],"contractKind":"contract","documentation":{"id":5764,"nodeType":"StructuredDocumentation","src":"355:214:22","text":" @dev Implementation of the basic standard multi-token.\n See https://eips.ethereum.org/EIPS/eip-1155\n Originally based on code by Enjin: https://github.com/enjin/erc-1155\n _Available since v3.1._"},"fullyImplemented":true,"id":6978,"linearizedBaseContracts":[6978,7156,7100,9731,9743,9294],"name":"ERC1155","nameLocation":"579:7:22","nodeType":"ContractDefinition","nodes":[{"global":false,"id":5775,"libraryName":{"id":5773,"name":"Address","nameLocations":["649:7:22"],"nodeType":"IdentifierPath","referencedDeclaration":9264,"src":"649:7:22"},"nodeType":"UsingForDirective","src":"643:26:22","typeName":{"id":5774,"name":"address","nodeType":"ElementaryTypeName","src":"661:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},{"constant":false,"id":5781,"mutability":"mutable","name":"_balances","nameLocation":"780:9:22","nodeType":"VariableDeclaration","scope":6978,"src":"724:65:22","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(uint256 => mapping(address => uint256))"},"typeName":{"id":5780,"keyType":{"id":5776,"name":"uint256","nodeType":"ElementaryTypeName","src":"732:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"724:47:22","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(uint256 => mapping(address => uint256))"},"valueType":{"id":5779,"keyType":{"id":5777,"name":"address","nodeType":"ElementaryTypeName","src":"751:7:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"743:27:22","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueType":{"id":5778,"name":"uint256","nodeType":"ElementaryTypeName","src":"762:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}},"visibility":"private"},{"constant":false,"id":5787,"mutability":"mutable","name":"_operatorApprovals","nameLocation":"899:18:22","nodeType":"VariableDeclaration","scope":6978,"src":"846:71:22","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"typeName":{"id":5786,"keyType":{"id":5782,"name":"address","nodeType":"ElementaryTypeName","src":"854:7:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"846:44:22","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"valueType":{"id":5785,"keyType":{"id":5783,"name":"address","nodeType":"ElementaryTypeName","src":"873:7:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"865:24:22","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueType":{"id":5784,"name":"bool","nodeType":"ElementaryTypeName","src":"884:4:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}}},"visibility":"private"},{"constant":false,"id":5789,"mutability":"mutable","name":"_uri","nameLocation":"1053:4:22","nodeType":"VariableDeclaration","scope":6978,"src":"1038:19:22","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":5788,"name":"string","nodeType":"ElementaryTypeName","src":"1038:6:22","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"body":{"id":5799,"nodeType":"Block","src":"1139:30:22","statements":[{"expression":{"arguments":[{"id":5796,"name":"uri_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5792,"src":"1157:4:22","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":5795,"name":"_setURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6311,"src":"1149:7:22","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":5797,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1149:13:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5798,"nodeType":"ExpressionStatement","src":"1149:13:22"}]},"documentation":{"id":5790,"nodeType":"StructuredDocumentation","src":"1064:38:22","text":" @dev See {_setURI}."},"id":5800,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":5793,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5792,"mutability":"mutable","name":"uri_","nameLocation":"1133:4:22","nodeType":"VariableDeclaration","scope":5800,"src":"1119:18:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5791,"name":"string","nodeType":"ElementaryTypeName","src":"1119:6:22","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1118:20:22"},"returnParameters":{"id":5794,"nodeType":"ParameterList","parameters":[],"src":"1139:0:22"},"scope":6978,"src":"1107:62:22","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[9730,9742],"body":{"id":5830,"nodeType":"Block","src":"1344:197:22","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":5828,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":5823,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":5816,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5811,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5803,"src":"1373:11:22","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":5813,"name":"IERC1155","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7100,"src":"1393:8:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC1155_$7100_$","typeString":"type(contract IERC1155)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC1155_$7100_$","typeString":"type(contract IERC1155)"}],"id":5812,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"1388:4:22","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5814,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1388:14:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC1155_$7100","typeString":"type(contract IERC1155)"}},"id":5815,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1403:11:22","memberName":"interfaceId","nodeType":"MemberAccess","src":"1388:26:22","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"1373:41:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":5822,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5817,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5803,"src":"1430:11:22","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":5819,"name":"IERC1155MetadataURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7156,"src":"1450:19:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC1155MetadataURI_$7156_$","typeString":"type(contract IERC1155MetadataURI)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC1155MetadataURI_$7156_$","typeString":"type(contract IERC1155MetadataURI)"}],"id":5818,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"1445:4:22","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5820,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1445:25:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC1155MetadataURI_$7156","typeString":"type(contract IERC1155MetadataURI)"}},"id":5821,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1471:11:22","memberName":"interfaceId","nodeType":"MemberAccess","src":"1445:37:22","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"1430:52:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1373:109:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":5826,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5803,"src":"1522:11:22","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":5824,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967271,"src":"1498:5:22","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_ERC1155_$6978_$","typeString":"type(contract super ERC1155)"}},"id":5825,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1504:17:22","memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":9730,"src":"1498:23:22","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bool_$","typeString":"function (bytes4) view returns (bool)"}},"id":5827,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1498:36:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1373:161:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":5810,"id":5829,"nodeType":"Return","src":"1354:180:22"}]},"documentation":{"id":5801,"nodeType":"StructuredDocumentation","src":"1175:56:22","text":" @dev See {IERC165-supportsInterface}."},"functionSelector":"01ffc9a7","id":5831,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"1245:17:22","nodeType":"FunctionDefinition","overrides":{"id":5807,"nodeType":"OverrideSpecifier","overrides":[{"id":5805,"name":"ERC165","nameLocations":["1312:6:22"],"nodeType":"IdentifierPath","referencedDeclaration":9731,"src":"1312:6:22"},{"id":5806,"name":"IERC165","nameLocations":["1320:7:22"],"nodeType":"IdentifierPath","referencedDeclaration":9743,"src":"1320:7:22"}],"src":"1303:25:22"},"parameters":{"id":5804,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5803,"mutability":"mutable","name":"interfaceId","nameLocation":"1270:11:22","nodeType":"VariableDeclaration","scope":5831,"src":"1263:18:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":5802,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1263:6:22","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"1262:20:22"},"returnParameters":{"id":5810,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5809,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5831,"src":"1338:4:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5808,"name":"bool","nodeType":"ElementaryTypeName","src":"1338:4:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1337:6:22"},"scope":6978,"src":"1236:305:22","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[7155],"body":{"id":5842,"nodeType":"Block","src":"2015:28:22","statements":[{"expression":{"id":5840,"name":"_uri","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5789,"src":"2032:4:22","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":5839,"id":5841,"nodeType":"Return","src":"2025:11:22"}]},"documentation":{"id":5832,"nodeType":"StructuredDocumentation","src":"1547:388:22","text":" @dev See {IERC1155MetadataURI-uri}.\n This implementation returns the same URI for *all* token types. It relies\n on the token type ID substitution mechanism\n https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP].\n Clients calling this function must replace the `\\{id\\}` substring with the\n actual token type ID."},"functionSelector":"0e89341c","id":5843,"implemented":true,"kind":"function","modifiers":[],"name":"uri","nameLocation":"1949:3:22","nodeType":"FunctionDefinition","overrides":{"id":5836,"nodeType":"OverrideSpecifier","overrides":[],"src":"1982:8:22"},"parameters":{"id":5835,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5834,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5843,"src":"1953:7:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5833,"name":"uint256","nodeType":"ElementaryTypeName","src":"1953:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1952:9:22"},"returnParameters":{"id":5839,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5838,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5843,"src":"2000:13:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5837,"name":"string","nodeType":"ElementaryTypeName","src":"2000:6:22","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1999:15:22"},"scope":6978,"src":"1940:103:22","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[7038],"body":{"id":5870,"nodeType":"Block","src":"2280:132:22","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":5860,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5855,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5846,"src":"2298:7:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":5858,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2317:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":5857,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2309:7:22","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5856,"name":"address","nodeType":"ElementaryTypeName","src":"2309:7:22","typeDescriptions":{}}},"id":5859,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2309:10:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2298:21:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"455243313135353a2061646472657373207a65726f206973206e6f7420612076616c6964206f776e6572","id":5861,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2321:44:22","typeDescriptions":{"typeIdentifier":"t_stringliteral_415a1b99e1fd4a18cf87c08995f5a9130182e8d76e9c17c497bfebaaef9265ad","typeString":"literal_string \"ERC1155: address zero is not a valid owner\""},"value":"ERC1155: address zero is not a valid owner"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_415a1b99e1fd4a18cf87c08995f5a9130182e8d76e9c17c497bfebaaef9265ad","typeString":"literal_string \"ERC1155: address zero is not a valid owner\""}],"id":5854,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"2290:7:22","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":5862,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2290:76:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5863,"nodeType":"ExpressionStatement","src":"2290:76:22"},{"expression":{"baseExpression":{"baseExpression":{"id":5864,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5781,"src":"2383:9:22","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(uint256 => mapping(address => uint256))"}},"id":5866,"indexExpression":{"id":5865,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5848,"src":"2393:2:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2383:13:22","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":5868,"indexExpression":{"id":5867,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5846,"src":"2397:7:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2383:22:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5853,"id":5869,"nodeType":"Return","src":"2376:29:22"}]},"documentation":{"id":5844,"nodeType":"StructuredDocumentation","src":"2049:131:22","text":" @dev See {IERC1155-balanceOf}.\n Requirements:\n - `account` cannot be the zero address."},"functionSelector":"00fdd58e","id":5871,"implemented":true,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"2194:9:22","nodeType":"FunctionDefinition","overrides":{"id":5850,"nodeType":"OverrideSpecifier","overrides":[],"src":"2253:8:22"},"parameters":{"id":5849,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5846,"mutability":"mutable","name":"account","nameLocation":"2212:7:22","nodeType":"VariableDeclaration","scope":5871,"src":"2204:15:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5845,"name":"address","nodeType":"ElementaryTypeName","src":"2204:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5848,"mutability":"mutable","name":"id","nameLocation":"2229:2:22","nodeType":"VariableDeclaration","scope":5871,"src":"2221:10:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5847,"name":"uint256","nodeType":"ElementaryTypeName","src":"2221:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2203:29:22"},"returnParameters":{"id":5853,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5852,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5871,"src":"2271:7:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5851,"name":"uint256","nodeType":"ElementaryTypeName","src":"2271:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2270:9:22"},"scope":6978,"src":"2185:227:22","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[7051],"body":{"id":5934,"nodeType":"Block","src":"2720:335:22","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5890,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":5886,"name":"accounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5875,"src":"2738:8:22","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":5887,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2747:6:22","memberName":"length","nodeType":"MemberAccess","src":"2738:15:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":5888,"name":"ids","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5878,"src":"2757:3:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":5889,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2761:6:22","memberName":"length","nodeType":"MemberAccess","src":"2757:10:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2738:29:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"455243313135353a206163636f756e747320616e6420696473206c656e677468206d69736d61746368","id":5891,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2769:43:22","typeDescriptions":{"typeIdentifier":"t_stringliteral_e155f5d69798c6205436a388a4f3a5fd42f54147b40f4d63a2c8071ff8a9fee5","typeString":"literal_string \"ERC1155: accounts and ids length mismatch\""},"value":"ERC1155: accounts and ids length mismatch"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e155f5d69798c6205436a388a4f3a5fd42f54147b40f4d63a2c8071ff8a9fee5","typeString":"literal_string \"ERC1155: accounts and ids length mismatch\""}],"id":5885,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"2730:7:22","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":5892,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2730:83:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5893,"nodeType":"ExpressionStatement","src":"2730:83:22"},{"assignments":[5898],"declarations":[{"constant":false,"id":5898,"mutability":"mutable","name":"batchBalances","nameLocation":"2841:13:22","nodeType":"VariableDeclaration","scope":5934,"src":"2824:30:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":5896,"name":"uint256","nodeType":"ElementaryTypeName","src":"2824:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5897,"nodeType":"ArrayTypeName","src":"2824:9:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":5905,"initialValue":{"arguments":[{"expression":{"id":5902,"name":"accounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5875,"src":"2871:8:22","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":5903,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2880:6:22","memberName":"length","nodeType":"MemberAccess","src":"2871:15:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5901,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"2857:13:22","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":5899,"name":"uint256","nodeType":"ElementaryTypeName","src":"2861:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5900,"nodeType":"ArrayTypeName","src":"2861:9:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":5904,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2857:30:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"VariableDeclarationStatement","src":"2824:63:22"},{"body":{"id":5930,"nodeType":"Block","src":"2944:74:22","statements":[{"expression":{"id":5928,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":5917,"name":"batchBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5898,"src":"2958:13:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":5919,"indexExpression":{"id":5918,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5907,"src":"2972:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2958:16:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"baseExpression":{"id":5921,"name":"accounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5875,"src":"2987:8:22","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":5923,"indexExpression":{"id":5922,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5907,"src":"2996:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2987:11:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":5924,"name":"ids","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5878,"src":"3000:3:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":5926,"indexExpression":{"id":5925,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5907,"src":"3004:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3000:6:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5920,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5871,"src":"2977:9:22","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,uint256) view returns (uint256)"}},"id":5927,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2977:30:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2958:49:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5929,"nodeType":"ExpressionStatement","src":"2958:49:22"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5913,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5910,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5907,"src":"2918:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":5911,"name":"accounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5875,"src":"2922:8:22","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":5912,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2931:6:22","memberName":"length","nodeType":"MemberAccess","src":"2922:15:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2918:19:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5931,"initializationExpression":{"assignments":[5907],"declarations":[{"constant":false,"id":5907,"mutability":"mutable","name":"i","nameLocation":"2911:1:22","nodeType":"VariableDeclaration","scope":5931,"src":"2903:9:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5906,"name":"uint256","nodeType":"ElementaryTypeName","src":"2903:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5909,"initialValue":{"hexValue":"30","id":5908,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2915:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"2903:13:22"},"loopExpression":{"expression":{"id":5915,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"2939:3:22","subExpression":{"id":5914,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5907,"src":"2941:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5916,"nodeType":"ExpressionStatement","src":"2939:3:22"},"nodeType":"ForStatement","src":"2898:120:22"},{"expression":{"id":5932,"name":"batchBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5898,"src":"3035:13:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"functionReturnParameters":5884,"id":5933,"nodeType":"Return","src":"3028:20:22"}]},"documentation":{"id":5872,"nodeType":"StructuredDocumentation","src":"2418:146:22","text":" @dev See {IERC1155-balanceOfBatch}.\n Requirements:\n - `accounts` and `ids` must have the same length."},"functionSelector":"4e1273f4","id":5935,"implemented":true,"kind":"function","modifiers":[],"name":"balanceOfBatch","nameLocation":"2578:14:22","nodeType":"FunctionDefinition","overrides":{"id":5880,"nodeType":"OverrideSpecifier","overrides":[],"src":"2684:8:22"},"parameters":{"id":5879,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5875,"mutability":"mutable","name":"accounts","nameLocation":"2619:8:22","nodeType":"VariableDeclaration","scope":5935,"src":"2602:25:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":5873,"name":"address","nodeType":"ElementaryTypeName","src":"2602:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":5874,"nodeType":"ArrayTypeName","src":"2602:9:22","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":5878,"mutability":"mutable","name":"ids","nameLocation":"2654:3:22","nodeType":"VariableDeclaration","scope":5935,"src":"2637:20:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":5876,"name":"uint256","nodeType":"ElementaryTypeName","src":"2637:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5877,"nodeType":"ArrayTypeName","src":"2637:9:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"2592:71:22"},"returnParameters":{"id":5884,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5883,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5935,"src":"2702:16:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":5881,"name":"uint256","nodeType":"ElementaryTypeName","src":"2702:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5882,"nodeType":"ArrayTypeName","src":"2702:9:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"2701:18:22"},"scope":6978,"src":"2569:486:22","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[7059],"body":{"id":5951,"nodeType":"Block","src":"3207:69:22","statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":5945,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9276,"src":"3236:10:22","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":5946,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3236:12:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5947,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5938,"src":"3250:8:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5948,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5940,"src":"3260:8:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":5944,"name":"_setApprovalForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6783,"src":"3217:18:22","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,address,bool)"}},"id":5949,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3217:52:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5950,"nodeType":"ExpressionStatement","src":"3217:52:22"}]},"documentation":{"id":5936,"nodeType":"StructuredDocumentation","src":"3061:57:22","text":" @dev See {IERC1155-setApprovalForAll}."},"functionSelector":"a22cb465","id":5952,"implemented":true,"kind":"function","modifiers":[],"name":"setApprovalForAll","nameLocation":"3132:17:22","nodeType":"FunctionDefinition","overrides":{"id":5942,"nodeType":"OverrideSpecifier","overrides":[],"src":"3198:8:22"},"parameters":{"id":5941,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5938,"mutability":"mutable","name":"operator","nameLocation":"3158:8:22","nodeType":"VariableDeclaration","scope":5952,"src":"3150:16:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5937,"name":"address","nodeType":"ElementaryTypeName","src":"3150:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5940,"mutability":"mutable","name":"approved","nameLocation":"3173:8:22","nodeType":"VariableDeclaration","scope":5952,"src":"3168:13:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5939,"name":"bool","nodeType":"ElementaryTypeName","src":"3168:4:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3149:33:22"},"returnParameters":{"id":5943,"nodeType":"ParameterList","parameters":[],"src":"3207:0:22"},"scope":6978,"src":"3123:153:22","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[7069],"body":{"id":5969,"nodeType":"Block","src":"3448:61:22","statements":[{"expression":{"baseExpression":{"baseExpression":{"id":5963,"name":"_operatorApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5787,"src":"3465:18:22","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":5965,"indexExpression":{"id":5964,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5955,"src":"3484:7:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3465:27:22","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":5967,"indexExpression":{"id":5966,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5957,"src":"3493:8:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3465:37:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":5962,"id":5968,"nodeType":"Return","src":"3458:44:22"}]},"documentation":{"id":5953,"nodeType":"StructuredDocumentation","src":"3282:56:22","text":" @dev See {IERC1155-isApprovedForAll}."},"functionSelector":"e985e9c5","id":5970,"implemented":true,"kind":"function","modifiers":[],"name":"isApprovedForAll","nameLocation":"3352:16:22","nodeType":"FunctionDefinition","overrides":{"id":5959,"nodeType":"OverrideSpecifier","overrides":[],"src":"3424:8:22"},"parameters":{"id":5958,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5955,"mutability":"mutable","name":"account","nameLocation":"3377:7:22","nodeType":"VariableDeclaration","scope":5970,"src":"3369:15:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5954,"name":"address","nodeType":"ElementaryTypeName","src":"3369:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5957,"mutability":"mutable","name":"operator","nameLocation":"3394:8:22","nodeType":"VariableDeclaration","scope":5970,"src":"3386:16:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5956,"name":"address","nodeType":"ElementaryTypeName","src":"3386:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3368:35:22"},"returnParameters":{"id":5962,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5961,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5970,"src":"3442:4:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5960,"name":"bool","nodeType":"ElementaryTypeName","src":"3442:4:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3441:6:22"},"scope":6978,"src":"3343:166:22","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[7083],"body":{"id":6007,"nodeType":"Block","src":"3745:225:22","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":5995,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":5989,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5986,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5973,"src":"3776:4:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":5987,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9276,"src":"3784:10:22","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":5988,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3784:12:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3776:20:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":5991,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5973,"src":"3817:4:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[],"expression":{"argumentTypes":[],"id":5992,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9276,"src":"3823:10:22","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":5993,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3823:12:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":5990,"name":"isApprovedForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5970,"src":"3800:16:22","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view returns (bool)"}},"id":5994,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3800:36:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3776:60:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e6572206f7220617070726f766564","id":5996,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3850:48:22","typeDescriptions":{"typeIdentifier":"t_stringliteral_47c72b42072ed6c647dec3a0a5c88bec44d3e901c64659bff94ecce0a0323156","typeString":"literal_string \"ERC1155: caller is not token owner or approved\""},"value":"ERC1155: caller is not token owner or approved"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_47c72b42072ed6c647dec3a0a5c88bec44d3e901c64659bff94ecce0a0323156","typeString":"literal_string \"ERC1155: caller is not token owner or approved\""}],"id":5985,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"3755:7:22","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":5997,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3755:153:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5998,"nodeType":"ExpressionStatement","src":"3755:153:22"},{"expression":{"arguments":[{"id":6000,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5973,"src":"3936:4:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6001,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5975,"src":"3942:2:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6002,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5977,"src":"3946:2:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6003,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5979,"src":"3950:6:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6004,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5981,"src":"3958:4:22","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":5999,"name":"_safeTransferFrom","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6165,"src":"3918:17:22","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,uint256,bytes memory)"}},"id":6005,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3918:45:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6006,"nodeType":"ExpressionStatement","src":"3918:45:22"}]},"documentation":{"id":5971,"nodeType":"StructuredDocumentation","src":"3515:56:22","text":" @dev See {IERC1155-safeTransferFrom}."},"functionSelector":"f242432a","id":6008,"implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"3585:16:22","nodeType":"FunctionDefinition","overrides":{"id":5983,"nodeType":"OverrideSpecifier","overrides":[],"src":"3736:8:22"},"parameters":{"id":5982,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5973,"mutability":"mutable","name":"from","nameLocation":"3619:4:22","nodeType":"VariableDeclaration","scope":6008,"src":"3611:12:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5972,"name":"address","nodeType":"ElementaryTypeName","src":"3611:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5975,"mutability":"mutable","name":"to","nameLocation":"3641:2:22","nodeType":"VariableDeclaration","scope":6008,"src":"3633:10:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5974,"name":"address","nodeType":"ElementaryTypeName","src":"3633:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5977,"mutability":"mutable","name":"id","nameLocation":"3661:2:22","nodeType":"VariableDeclaration","scope":6008,"src":"3653:10:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5976,"name":"uint256","nodeType":"ElementaryTypeName","src":"3653:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5979,"mutability":"mutable","name":"amount","nameLocation":"3681:6:22","nodeType":"VariableDeclaration","scope":6008,"src":"3673:14:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5978,"name":"uint256","nodeType":"ElementaryTypeName","src":"3673:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5981,"mutability":"mutable","name":"data","nameLocation":"3710:4:22","nodeType":"VariableDeclaration","scope":6008,"src":"3697:17:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5980,"name":"bytes","nodeType":"ElementaryTypeName","src":"3697:5:22","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3601:119:22"},"returnParameters":{"id":5984,"nodeType":"ParameterList","parameters":[],"src":"3745:0:22"},"scope":6978,"src":"3576:394:22","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[7099],"body":{"id":6047,"nodeType":"Block","src":"4236:232:22","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":6035,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":6029,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6026,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6011,"src":"4267:4:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":6027,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9276,"src":"4275:10:22","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":6028,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4275:12:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4267:20:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":6031,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6011,"src":"4308:4:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[],"expression":{"argumentTypes":[],"id":6032,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9276,"src":"4314:10:22","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":6033,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4314:12:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":6030,"name":"isApprovedForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5970,"src":"4291:16:22","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view returns (bool)"}},"id":6034,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4291:36:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4267:60:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e6572206f7220617070726f766564","id":6036,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4341:48:22","typeDescriptions":{"typeIdentifier":"t_stringliteral_47c72b42072ed6c647dec3a0a5c88bec44d3e901c64659bff94ecce0a0323156","typeString":"literal_string \"ERC1155: caller is not token owner or approved\""},"value":"ERC1155: caller is not token owner or approved"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_47c72b42072ed6c647dec3a0a5c88bec44d3e901c64659bff94ecce0a0323156","typeString":"literal_string \"ERC1155: caller is not token owner or approved\""}],"id":6025,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"4246:7:22","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":6037,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4246:153:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6038,"nodeType":"ExpressionStatement","src":"4246:153:22"},{"expression":{"arguments":[{"id":6040,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6011,"src":"4432:4:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6041,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6013,"src":"4438:2:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6042,"name":"ids","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6016,"src":"4442:3:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":6043,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6019,"src":"4447:7:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":6044,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6021,"src":"4456:4:22","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":6039,"name":"_safeBatchTransferFrom","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6300,"src":"4409:22:22","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256[] memory,uint256[] memory,bytes memory)"}},"id":6045,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4409:52:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6046,"nodeType":"ExpressionStatement","src":"4409:52:22"}]},"documentation":{"id":6009,"nodeType":"StructuredDocumentation","src":"3976:61:22","text":" @dev See {IERC1155-safeBatchTransferFrom}."},"functionSelector":"2eb2c2d6","id":6048,"implemented":true,"kind":"function","modifiers":[],"name":"safeBatchTransferFrom","nameLocation":"4051:21:22","nodeType":"FunctionDefinition","overrides":{"id":6023,"nodeType":"OverrideSpecifier","overrides":[],"src":"4227:8:22"},"parameters":{"id":6022,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6011,"mutability":"mutable","name":"from","nameLocation":"4090:4:22","nodeType":"VariableDeclaration","scope":6048,"src":"4082:12:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6010,"name":"address","nodeType":"ElementaryTypeName","src":"4082:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6013,"mutability":"mutable","name":"to","nameLocation":"4112:2:22","nodeType":"VariableDeclaration","scope":6048,"src":"4104:10:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6012,"name":"address","nodeType":"ElementaryTypeName","src":"4104:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6016,"mutability":"mutable","name":"ids","nameLocation":"4141:3:22","nodeType":"VariableDeclaration","scope":6048,"src":"4124:20:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":6014,"name":"uint256","nodeType":"ElementaryTypeName","src":"4124:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6015,"nodeType":"ArrayTypeName","src":"4124:9:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":6019,"mutability":"mutable","name":"amounts","nameLocation":"4171:7:22","nodeType":"VariableDeclaration","scope":6048,"src":"4154:24:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":6017,"name":"uint256","nodeType":"ElementaryTypeName","src":"4154:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6018,"nodeType":"ArrayTypeName","src":"4154:9:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":6021,"mutability":"mutable","name":"data","nameLocation":"4201:4:22","nodeType":"VariableDeclaration","scope":6048,"src":"4188:17:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":6020,"name":"bytes","nodeType":"ElementaryTypeName","src":"4188:5:22","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4072:139:22"},"returnParameters":{"id":6024,"nodeType":"ParameterList","parameters":[],"src":"4236:0:22"},"scope":6978,"src":"4042:426:22","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":6164,"nodeType":"Block","src":"5081:784:22","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":6068,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6063,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6053,"src":"5099:2:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":6066,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5113:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":6065,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5105:7:22","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6064,"name":"address","nodeType":"ElementaryTypeName","src":"5105:7:22","typeDescriptions":{}}},"id":6067,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5105:10:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5099:16:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"455243313135353a207472616e7366657220746f20746865207a65726f2061646472657373","id":6069,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5117:39:22","typeDescriptions":{"typeIdentifier":"t_stringliteral_6faf1c67f278b07c6771dcf4c315a89c21c0eaed11d9ab3d51774da1cfef545d","typeString":"literal_string \"ERC1155: transfer to the zero address\""},"value":"ERC1155: transfer to the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_6faf1c67f278b07c6771dcf4c315a89c21c0eaed11d9ab3d51774da1cfef545d","typeString":"literal_string \"ERC1155: transfer to the zero address\""}],"id":6062,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"5091:7:22","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":6070,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5091:66:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6071,"nodeType":"ExpressionStatement","src":"5091:66:22"},{"assignments":[6073],"declarations":[{"constant":false,"id":6073,"mutability":"mutable","name":"operator","nameLocation":"5176:8:22","nodeType":"VariableDeclaration","scope":6164,"src":"5168:16:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6072,"name":"address","nodeType":"ElementaryTypeName","src":"5168:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":6076,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":6074,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9276,"src":"5187:10:22","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":6075,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5187:12:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"5168:31:22"},{"assignments":[6081],"declarations":[{"constant":false,"id":6081,"mutability":"mutable","name":"ids","nameLocation":"5226:3:22","nodeType":"VariableDeclaration","scope":6164,"src":"5209:20:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":6079,"name":"uint256","nodeType":"ElementaryTypeName","src":"5209:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6080,"nodeType":"ArrayTypeName","src":"5209:9:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":6085,"initialValue":{"arguments":[{"id":6083,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6055,"src":"5250:2:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6082,"name":"_asSingletonArray","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6977,"src":"5232:17:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"}},"id":6084,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5232:21:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"VariableDeclarationStatement","src":"5209:44:22"},{"assignments":[6090],"declarations":[{"constant":false,"id":6090,"mutability":"mutable","name":"amounts","nameLocation":"5280:7:22","nodeType":"VariableDeclaration","scope":6164,"src":"5263:24:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":6088,"name":"uint256","nodeType":"ElementaryTypeName","src":"5263:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6089,"nodeType":"ArrayTypeName","src":"5263:9:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":6094,"initialValue":{"arguments":[{"id":6092,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6057,"src":"5308:6:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6091,"name":"_asSingletonArray","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6977,"src":"5290:17:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"}},"id":6093,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5290:25:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"VariableDeclarationStatement","src":"5263:52:22"},{"expression":{"arguments":[{"id":6096,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6073,"src":"5347:8:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6097,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6051,"src":"5357:4:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6098,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6053,"src":"5363:2:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6099,"name":"ids","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6081,"src":"5367:3:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":6100,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6090,"src":"5372:7:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":6101,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6059,"src":"5381:4:22","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":6095,"name":"_beforeTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6802,"src":"5326:20:22","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,address,uint256[] memory,uint256[] memory,bytes memory)"}},"id":6102,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5326:60:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6103,"nodeType":"ExpressionStatement","src":"5326:60:22"},{"assignments":[6105],"declarations":[{"constant":false,"id":6105,"mutability":"mutable","name":"fromBalance","nameLocation":"5405:11:22","nodeType":"VariableDeclaration","scope":6164,"src":"5397:19:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6104,"name":"uint256","nodeType":"ElementaryTypeName","src":"5397:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6111,"initialValue":{"baseExpression":{"baseExpression":{"id":6106,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5781,"src":"5419:9:22","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(uint256 => mapping(address => uint256))"}},"id":6108,"indexExpression":{"id":6107,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6055,"src":"5429:2:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5419:13:22","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":6110,"indexExpression":{"id":6109,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6051,"src":"5433:4:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5419:19:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5397:41:22"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6115,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6113,"name":"fromBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6105,"src":"5456:11:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":6114,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6057,"src":"5471:6:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5456:21:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"455243313135353a20696e73756666696369656e742062616c616e636520666f72207472616e73666572","id":6116,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5479:44:22","typeDescriptions":{"typeIdentifier":"t_stringliteral_8ac7e9556b567c1c94bb4daaa3c3a65be5ac686579615210cb910fb8cb8d65bf","typeString":"literal_string \"ERC1155: insufficient balance for transfer\""},"value":"ERC1155: insufficient balance for transfer"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8ac7e9556b567c1c94bb4daaa3c3a65be5ac686579615210cb910fb8cb8d65bf","typeString":"literal_string \"ERC1155: insufficient balance for transfer\""}],"id":6112,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"5448:7:22","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":6117,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5448:76:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6118,"nodeType":"ExpressionStatement","src":"5448:76:22"},{"id":6129,"nodeType":"UncheckedBlock","src":"5534:77:22","statements":[{"expression":{"id":6127,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":6119,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5781,"src":"5558:9:22","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(uint256 => mapping(address => uint256))"}},"id":6122,"indexExpression":{"id":6120,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6055,"src":"5568:2:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5558:13:22","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":6123,"indexExpression":{"id":6121,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6051,"src":"5572:4:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5558:19:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6126,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6124,"name":"fromBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6105,"src":"5580:11:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":6125,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6057,"src":"5594:6:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5580:20:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5558:42:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6128,"nodeType":"ExpressionStatement","src":"5558:42:22"}]},{"expression":{"id":6136,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":6130,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5781,"src":"5620:9:22","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(uint256 => mapping(address => uint256))"}},"id":6133,"indexExpression":{"id":6131,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6055,"src":"5630:2:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5620:13:22","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":6134,"indexExpression":{"id":6132,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6053,"src":"5634:2:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5620:17:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":6135,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6057,"src":"5641:6:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5620:27:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6137,"nodeType":"ExpressionStatement","src":"5620:27:22"},{"eventCall":{"arguments":[{"id":6139,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6073,"src":"5678:8:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6140,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6051,"src":"5688:4:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6141,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6053,"src":"5694:2:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6142,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6055,"src":"5698:2:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6143,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6057,"src":"5702:6:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6138,"name":"TransferSingle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6997,"src":"5663:14:22","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,address,uint256,uint256)"}},"id":6144,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5663:46:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6145,"nodeType":"EmitStatement","src":"5658:51:22"},{"expression":{"arguments":[{"id":6147,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6073,"src":"5740:8:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6148,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6051,"src":"5750:4:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6149,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6053,"src":"5756:2:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6150,"name":"ids","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6081,"src":"5760:3:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":6151,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6090,"src":"5765:7:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":6152,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6059,"src":"5774:4:22","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":6146,"name":"_afterTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6821,"src":"5720:19:22","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,address,uint256[] memory,uint256[] memory,bytes memory)"}},"id":6153,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5720:59:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6154,"nodeType":"ExpressionStatement","src":"5720:59:22"},{"expression":{"arguments":[{"id":6156,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6073,"src":"5821:8:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6157,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6051,"src":"5831:4:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6158,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6053,"src":"5837:2:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6159,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6055,"src":"5841:2:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6160,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6057,"src":"5845:6:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6161,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6059,"src":"5853:4:22","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":6155,"name":"_doSafeTransferAcceptanceCheck","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6884,"src":"5790:30:22","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,address,uint256,uint256,bytes memory)"}},"id":6162,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5790:68:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6163,"nodeType":"ExpressionStatement","src":"5790:68:22"}]},"documentation":{"id":6049,"nodeType":"StructuredDocumentation","src":"4474:439:22","text":" @dev Transfers `amount` tokens of token type `id` from `from` to `to`.\n Emits a {TransferSingle} event.\n Requirements:\n - `to` cannot be the zero address.\n - `from` must have a balance of tokens of type `id` of at least `amount`.\n - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the\n acceptance magic value."},"id":6165,"implemented":true,"kind":"function","modifiers":[],"name":"_safeTransferFrom","nameLocation":"4927:17:22","nodeType":"FunctionDefinition","parameters":{"id":6060,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6051,"mutability":"mutable","name":"from","nameLocation":"4962:4:22","nodeType":"VariableDeclaration","scope":6165,"src":"4954:12:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6050,"name":"address","nodeType":"ElementaryTypeName","src":"4954:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6053,"mutability":"mutable","name":"to","nameLocation":"4984:2:22","nodeType":"VariableDeclaration","scope":6165,"src":"4976:10:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6052,"name":"address","nodeType":"ElementaryTypeName","src":"4976:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6055,"mutability":"mutable","name":"id","nameLocation":"5004:2:22","nodeType":"VariableDeclaration","scope":6165,"src":"4996:10:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6054,"name":"uint256","nodeType":"ElementaryTypeName","src":"4996:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6057,"mutability":"mutable","name":"amount","nameLocation":"5024:6:22","nodeType":"VariableDeclaration","scope":6165,"src":"5016:14:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6056,"name":"uint256","nodeType":"ElementaryTypeName","src":"5016:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6059,"mutability":"mutable","name":"data","nameLocation":"5053:4:22","nodeType":"VariableDeclaration","scope":6165,"src":"5040:17:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":6058,"name":"bytes","nodeType":"ElementaryTypeName","src":"5040:5:22","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4944:119:22"},"returnParameters":{"id":6061,"nodeType":"ParameterList","parameters":[],"src":"5081:0:22"},"scope":6978,"src":"4918:947:22","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":6299,"nodeType":"Block","src":"6399:927:22","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6186,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":6182,"name":"ids","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6173,"src":"6417:3:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":6183,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6421:6:22","memberName":"length","nodeType":"MemberAccess","src":"6417:10:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":6184,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6176,"src":"6431:7:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":6185,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6439:6:22","memberName":"length","nodeType":"MemberAccess","src":"6431:14:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6417:28:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"455243313135353a2069647320616e6420616d6f756e7473206c656e677468206d69736d61746368","id":6187,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6447:42:22","typeDescriptions":{"typeIdentifier":"t_stringliteral_e909e0c9a8f96b4f9af03b716811ece20beb070be416893ed1d50619b5930807","typeString":"literal_string \"ERC1155: ids and amounts length mismatch\""},"value":"ERC1155: ids and amounts length mismatch"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e909e0c9a8f96b4f9af03b716811ece20beb070be416893ed1d50619b5930807","typeString":"literal_string \"ERC1155: ids and amounts length mismatch\""}],"id":6181,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"6409:7:22","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":6188,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6409:81:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6189,"nodeType":"ExpressionStatement","src":"6409:81:22"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":6196,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6191,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6170,"src":"6508:2:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":6194,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6522:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":6193,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6514:7:22","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6192,"name":"address","nodeType":"ElementaryTypeName","src":"6514:7:22","typeDescriptions":{}}},"id":6195,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6514:10:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6508:16:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"455243313135353a207472616e7366657220746f20746865207a65726f2061646472657373","id":6197,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6526:39:22","typeDescriptions":{"typeIdentifier":"t_stringliteral_6faf1c67f278b07c6771dcf4c315a89c21c0eaed11d9ab3d51774da1cfef545d","typeString":"literal_string \"ERC1155: transfer to the zero address\""},"value":"ERC1155: transfer to the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_6faf1c67f278b07c6771dcf4c315a89c21c0eaed11d9ab3d51774da1cfef545d","typeString":"literal_string \"ERC1155: transfer to the zero address\""}],"id":6190,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"6500:7:22","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":6198,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6500:66:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6199,"nodeType":"ExpressionStatement","src":"6500:66:22"},{"assignments":[6201],"declarations":[{"constant":false,"id":6201,"mutability":"mutable","name":"operator","nameLocation":"6585:8:22","nodeType":"VariableDeclaration","scope":6299,"src":"6577:16:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6200,"name":"address","nodeType":"ElementaryTypeName","src":"6577:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":6204,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":6202,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9276,"src":"6596:10:22","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":6203,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6596:12:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"6577:31:22"},{"expression":{"arguments":[{"id":6206,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6201,"src":"6640:8:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6207,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6168,"src":"6650:4:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6208,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6170,"src":"6656:2:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6209,"name":"ids","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6173,"src":"6660:3:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":6210,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6176,"src":"6665:7:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":6211,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6178,"src":"6674:4:22","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":6205,"name":"_beforeTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6802,"src":"6619:20:22","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,address,uint256[] memory,uint256[] memory,bytes memory)"}},"id":6212,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6619:60:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6213,"nodeType":"ExpressionStatement","src":"6619:60:22"},{"body":{"id":6271,"nodeType":"Block","src":"6731:370:22","statements":[{"assignments":[6226],"declarations":[{"constant":false,"id":6226,"mutability":"mutable","name":"id","nameLocation":"6753:2:22","nodeType":"VariableDeclaration","scope":6271,"src":"6745:10:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6225,"name":"uint256","nodeType":"ElementaryTypeName","src":"6745:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6230,"initialValue":{"baseExpression":{"id":6227,"name":"ids","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6173,"src":"6758:3:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":6229,"indexExpression":{"id":6228,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6215,"src":"6762:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6758:6:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6745:19:22"},{"assignments":[6232],"declarations":[{"constant":false,"id":6232,"mutability":"mutable","name":"amount","nameLocation":"6786:6:22","nodeType":"VariableDeclaration","scope":6271,"src":"6778:14:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6231,"name":"uint256","nodeType":"ElementaryTypeName","src":"6778:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6236,"initialValue":{"baseExpression":{"id":6233,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6176,"src":"6795:7:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":6235,"indexExpression":{"id":6234,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6215,"src":"6803:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6795:10:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6778:27:22"},{"assignments":[6238],"declarations":[{"constant":false,"id":6238,"mutability":"mutable","name":"fromBalance","nameLocation":"6828:11:22","nodeType":"VariableDeclaration","scope":6271,"src":"6820:19:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6237,"name":"uint256","nodeType":"ElementaryTypeName","src":"6820:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6244,"initialValue":{"baseExpression":{"baseExpression":{"id":6239,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5781,"src":"6842:9:22","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(uint256 => mapping(address => uint256))"}},"id":6241,"indexExpression":{"id":6240,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6226,"src":"6852:2:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6842:13:22","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":6243,"indexExpression":{"id":6242,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6168,"src":"6856:4:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6842:19:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6820:41:22"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6248,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6246,"name":"fromBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6238,"src":"6883:11:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":6247,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6232,"src":"6898:6:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6883:21:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"455243313135353a20696e73756666696369656e742062616c616e636520666f72207472616e73666572","id":6249,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6906:44:22","typeDescriptions":{"typeIdentifier":"t_stringliteral_8ac7e9556b567c1c94bb4daaa3c3a65be5ac686579615210cb910fb8cb8d65bf","typeString":"literal_string \"ERC1155: insufficient balance for transfer\""},"value":"ERC1155: insufficient balance for transfer"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8ac7e9556b567c1c94bb4daaa3c3a65be5ac686579615210cb910fb8cb8d65bf","typeString":"literal_string \"ERC1155: insufficient balance for transfer\""}],"id":6245,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"6875:7:22","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":6250,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6875:76:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6251,"nodeType":"ExpressionStatement","src":"6875:76:22"},{"id":6262,"nodeType":"UncheckedBlock","src":"6965:85:22","statements":[{"expression":{"id":6260,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":6252,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5781,"src":"6993:9:22","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(uint256 => mapping(address => uint256))"}},"id":6255,"indexExpression":{"id":6253,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6226,"src":"7003:2:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6993:13:22","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":6256,"indexExpression":{"id":6254,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6168,"src":"7007:4:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6993:19:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6259,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6257,"name":"fromBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6238,"src":"7015:11:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":6258,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6232,"src":"7029:6:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7015:20:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6993:42:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6261,"nodeType":"ExpressionStatement","src":"6993:42:22"}]},{"expression":{"id":6269,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":6263,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5781,"src":"7063:9:22","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(uint256 => mapping(address => uint256))"}},"id":6266,"indexExpression":{"id":6264,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6226,"src":"7073:2:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7063:13:22","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":6267,"indexExpression":{"id":6265,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6170,"src":"7077:2:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7063:17:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":6268,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6232,"src":"7084:6:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7063:27:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6270,"nodeType":"ExpressionStatement","src":"7063:27:22"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6221,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6218,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6215,"src":"6710:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":6219,"name":"ids","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6173,"src":"6714:3:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":6220,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6718:6:22","memberName":"length","nodeType":"MemberAccess","src":"6714:10:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6710:14:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6272,"initializationExpression":{"assignments":[6215],"declarations":[{"constant":false,"id":6215,"mutability":"mutable","name":"i","nameLocation":"6703:1:22","nodeType":"VariableDeclaration","scope":6272,"src":"6695:9:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6214,"name":"uint256","nodeType":"ElementaryTypeName","src":"6695:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6217,"initialValue":{"hexValue":"30","id":6216,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6707:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"6695:13:22"},"loopExpression":{"expression":{"id":6223,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"6726:3:22","subExpression":{"id":6222,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6215,"src":"6728:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6224,"nodeType":"ExpressionStatement","src":"6726:3:22"},"nodeType":"ForStatement","src":"6690:411:22"},{"eventCall":{"arguments":[{"id":6274,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6201,"src":"7130:8:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6275,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6168,"src":"7140:4:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6276,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6170,"src":"7146:2:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6277,"name":"ids","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6173,"src":"7150:3:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":6278,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6176,"src":"7155:7:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}],"id":6273,"name":"TransferBatch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7012,"src":"7116:13:22","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$","typeString":"function (address,address,address,uint256[] memory,uint256[] memory)"}},"id":6279,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7116:47:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6280,"nodeType":"EmitStatement","src":"7111:52:22"},{"expression":{"arguments":[{"id":6282,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6201,"src":"7194:8:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6283,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6168,"src":"7204:4:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6284,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6170,"src":"7210:2:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6285,"name":"ids","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6173,"src":"7214:3:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":6286,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6176,"src":"7219:7:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":6287,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6178,"src":"7228:4:22","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":6281,"name":"_afterTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6821,"src":"7174:19:22","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,address,uint256[] memory,uint256[] memory,bytes memory)"}},"id":6288,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7174:59:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6289,"nodeType":"ExpressionStatement","src":"7174:59:22"},{"expression":{"arguments":[{"id":6291,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6201,"src":"7280:8:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6292,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6168,"src":"7290:4:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6293,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6170,"src":"7296:2:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6294,"name":"ids","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6173,"src":"7300:3:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":6295,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6176,"src":"7305:7:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":6296,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6178,"src":"7314:4:22","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":6290,"name":"_doSafeBatchTransferAcceptanceCheck","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6949,"src":"7244:35:22","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,address,uint256[] memory,uint256[] memory,bytes memory)"}},"id":6297,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7244:75:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6298,"nodeType":"ExpressionStatement","src":"7244:75:22"}]},"documentation":{"id":6166,"nodeType":"StructuredDocumentation","src":"5871:335:22","text":" @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_safeTransferFrom}.\n Emits a {TransferBatch} event.\n Requirements:\n - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the\n acceptance magic value."},"id":6300,"implemented":true,"kind":"function","modifiers":[],"name":"_safeBatchTransferFrom","nameLocation":"6220:22:22","nodeType":"FunctionDefinition","parameters":{"id":6179,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6168,"mutability":"mutable","name":"from","nameLocation":"6260:4:22","nodeType":"VariableDeclaration","scope":6300,"src":"6252:12:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6167,"name":"address","nodeType":"ElementaryTypeName","src":"6252:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6170,"mutability":"mutable","name":"to","nameLocation":"6282:2:22","nodeType":"VariableDeclaration","scope":6300,"src":"6274:10:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6169,"name":"address","nodeType":"ElementaryTypeName","src":"6274:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6173,"mutability":"mutable","name":"ids","nameLocation":"6311:3:22","nodeType":"VariableDeclaration","scope":6300,"src":"6294:20:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":6171,"name":"uint256","nodeType":"ElementaryTypeName","src":"6294:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6172,"nodeType":"ArrayTypeName","src":"6294:9:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":6176,"mutability":"mutable","name":"amounts","nameLocation":"6341:7:22","nodeType":"VariableDeclaration","scope":6300,"src":"6324:24:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":6174,"name":"uint256","nodeType":"ElementaryTypeName","src":"6324:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6175,"nodeType":"ArrayTypeName","src":"6324:9:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":6178,"mutability":"mutable","name":"data","nameLocation":"6371:4:22","nodeType":"VariableDeclaration","scope":6300,"src":"6358:17:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":6177,"name":"bytes","nodeType":"ElementaryTypeName","src":"6358:5:22","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6242:139:22"},"returnParameters":{"id":6180,"nodeType":"ParameterList","parameters":[],"src":"6399:0:22"},"scope":6978,"src":"6211:1115:22","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":6310,"nodeType":"Block","src":"8205:30:22","statements":[{"expression":{"id":6308,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6306,"name":"_uri","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5789,"src":"8215:4:22","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":6307,"name":"newuri","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6303,"src":"8222:6:22","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"8215:13:22","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":6309,"nodeType":"ExpressionStatement","src":"8215:13:22"}]},"documentation":{"id":6301,"nodeType":"StructuredDocumentation","src":"7332:812:22","text":" @dev Sets a new URI for all token types, by relying on the token type ID\n substitution mechanism\n https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP].\n By this mechanism, any occurrence of the `\\{id\\}` substring in either the\n URI or any of the amounts in the JSON file at said URI will be replaced by\n clients with the token type ID.\n For example, the `https://token-cdn-domain/\\{id\\}.json` URI would be\n interpreted by clients as\n `https://token-cdn-domain/000000000000000000000000000000000000000000000000000000000004cce0.json`\n for token type ID 0x4cce0.\n See {uri}.\n Because these URIs cannot be meaningfully represented by the {URI} event,\n this function emits no events."},"id":6311,"implemented":true,"kind":"function","modifiers":[],"name":"_setURI","nameLocation":"8158:7:22","nodeType":"FunctionDefinition","parameters":{"id":6304,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6303,"mutability":"mutable","name":"newuri","nameLocation":"8180:6:22","nodeType":"VariableDeclaration","scope":6311,"src":"8166:20:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":6302,"name":"string","nodeType":"ElementaryTypeName","src":"8166:6:22","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"8165:22:22"},"returnParameters":{"id":6305,"nodeType":"ParameterList","parameters":[],"src":"8205:0:22"},"scope":6978,"src":"8149:86:22","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":6411,"nodeType":"Block","src":"8699:580:22","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":6329,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6324,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6314,"src":"8717:2:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":6327,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8731:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":6326,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8723:7:22","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6325,"name":"address","nodeType":"ElementaryTypeName","src":"8723:7:22","typeDescriptions":{}}},"id":6328,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8723:10:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"8717:16:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"455243313135353a206d696e7420746f20746865207a65726f2061646472657373","id":6330,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8735:35:22","typeDescriptions":{"typeIdentifier":"t_stringliteral_ebf031a1b7ee1d0b3a7752b450a3268e8b6c334561b48c1c0ba0f5bac05749f2","typeString":"literal_string \"ERC1155: mint to the zero address\""},"value":"ERC1155: mint to the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ebf031a1b7ee1d0b3a7752b450a3268e8b6c334561b48c1c0ba0f5bac05749f2","typeString":"literal_string \"ERC1155: mint to the zero address\""}],"id":6323,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"8709:7:22","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":6331,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8709:62:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6332,"nodeType":"ExpressionStatement","src":"8709:62:22"},{"assignments":[6334],"declarations":[{"constant":false,"id":6334,"mutability":"mutable","name":"operator","nameLocation":"8790:8:22","nodeType":"VariableDeclaration","scope":6411,"src":"8782:16:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6333,"name":"address","nodeType":"ElementaryTypeName","src":"8782:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":6337,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":6335,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9276,"src":"8801:10:22","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":6336,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8801:12:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"8782:31:22"},{"assignments":[6342],"declarations":[{"constant":false,"id":6342,"mutability":"mutable","name":"ids","nameLocation":"8840:3:22","nodeType":"VariableDeclaration","scope":6411,"src":"8823:20:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":6340,"name":"uint256","nodeType":"ElementaryTypeName","src":"8823:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6341,"nodeType":"ArrayTypeName","src":"8823:9:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":6346,"initialValue":{"arguments":[{"id":6344,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6316,"src":"8864:2:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6343,"name":"_asSingletonArray","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6977,"src":"8846:17:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"}},"id":6345,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8846:21:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"VariableDeclarationStatement","src":"8823:44:22"},{"assignments":[6351],"declarations":[{"constant":false,"id":6351,"mutability":"mutable","name":"amounts","nameLocation":"8894:7:22","nodeType":"VariableDeclaration","scope":6411,"src":"8877:24:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":6349,"name":"uint256","nodeType":"ElementaryTypeName","src":"8877:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6350,"nodeType":"ArrayTypeName","src":"8877:9:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":6355,"initialValue":{"arguments":[{"id":6353,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6318,"src":"8922:6:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6352,"name":"_asSingletonArray","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6977,"src":"8904:17:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"}},"id":6354,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8904:25:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"VariableDeclarationStatement","src":"8877:52:22"},{"expression":{"arguments":[{"id":6357,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6334,"src":"8961:8:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":6360,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8979:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":6359,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8971:7:22","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6358,"name":"address","nodeType":"ElementaryTypeName","src":"8971:7:22","typeDescriptions":{}}},"id":6361,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8971:10:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6362,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6314,"src":"8983:2:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6363,"name":"ids","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6342,"src":"8987:3:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":6364,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6351,"src":"8992:7:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":6365,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6320,"src":"9001:4:22","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":6356,"name":"_beforeTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6802,"src":"8940:20:22","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,address,uint256[] memory,uint256[] memory,bytes memory)"}},"id":6366,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8940:66:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6367,"nodeType":"ExpressionStatement","src":"8940:66:22"},{"expression":{"id":6374,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":6368,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5781,"src":"9017:9:22","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(uint256 => mapping(address => uint256))"}},"id":6371,"indexExpression":{"id":6369,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6316,"src":"9027:2:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9017:13:22","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":6372,"indexExpression":{"id":6370,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6314,"src":"9031:2:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9017:17:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":6373,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6318,"src":"9038:6:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9017:27:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6375,"nodeType":"ExpressionStatement","src":"9017:27:22"},{"eventCall":{"arguments":[{"id":6377,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6334,"src":"9074:8:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":6380,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9092:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":6379,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9084:7:22","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6378,"name":"address","nodeType":"ElementaryTypeName","src":"9084:7:22","typeDescriptions":{}}},"id":6381,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9084:10:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6382,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6314,"src":"9096:2:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6383,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6316,"src":"9100:2:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6384,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6318,"src":"9104:6:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6376,"name":"TransferSingle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6997,"src":"9059:14:22","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,address,uint256,uint256)"}},"id":6385,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9059:52:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6386,"nodeType":"EmitStatement","src":"9054:57:22"},{"expression":{"arguments":[{"id":6388,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6334,"src":"9142:8:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":6391,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9160:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":6390,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9152:7:22","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6389,"name":"address","nodeType":"ElementaryTypeName","src":"9152:7:22","typeDescriptions":{}}},"id":6392,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9152:10:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6393,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6314,"src":"9164:2:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6394,"name":"ids","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6342,"src":"9168:3:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":6395,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6351,"src":"9173:7:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":6396,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6320,"src":"9182:4:22","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":6387,"name":"_afterTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6821,"src":"9122:19:22","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,address,uint256[] memory,uint256[] memory,bytes memory)"}},"id":6397,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9122:65:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6398,"nodeType":"ExpressionStatement","src":"9122:65:22"},{"expression":{"arguments":[{"id":6400,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6334,"src":"9229:8:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":6403,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9247:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":6402,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9239:7:22","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6401,"name":"address","nodeType":"ElementaryTypeName","src":"9239:7:22","typeDescriptions":{}}},"id":6404,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9239:10:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6405,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6314,"src":"9251:2:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6406,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6316,"src":"9255:2:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6407,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6318,"src":"9259:6:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6408,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6320,"src":"9267:4:22","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":6399,"name":"_doSafeTransferAcceptanceCheck","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6884,"src":"9198:30:22","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,address,uint256,uint256,bytes memory)"}},"id":6409,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9198:74:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6410,"nodeType":"ExpressionStatement","src":"9198:74:22"}]},"documentation":{"id":6312,"nodeType":"StructuredDocumentation","src":"8241:362:22","text":" @dev Creates `amount` tokens of token type `id`, and assigns them to `to`.\n Emits a {TransferSingle} event.\n Requirements:\n - `to` cannot be the zero address.\n - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the\n acceptance magic value."},"id":6412,"implemented":true,"kind":"function","modifiers":[],"name":"_mint","nameLocation":"8617:5:22","nodeType":"FunctionDefinition","parameters":{"id":6321,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6314,"mutability":"mutable","name":"to","nameLocation":"8631:2:22","nodeType":"VariableDeclaration","scope":6412,"src":"8623:10:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6313,"name":"address","nodeType":"ElementaryTypeName","src":"8623:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6316,"mutability":"mutable","name":"id","nameLocation":"8643:2:22","nodeType":"VariableDeclaration","scope":6412,"src":"8635:10:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6315,"name":"uint256","nodeType":"ElementaryTypeName","src":"8635:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6318,"mutability":"mutable","name":"amount","nameLocation":"8655:6:22","nodeType":"VariableDeclaration","scope":6412,"src":"8647:14:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6317,"name":"uint256","nodeType":"ElementaryTypeName","src":"8647:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6320,"mutability":"mutable","name":"data","nameLocation":"8676:4:22","nodeType":"VariableDeclaration","scope":6412,"src":"8663:17:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":6319,"name":"bytes","nodeType":"ElementaryTypeName","src":"8663:5:22","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"8622:59:22"},"returnParameters":{"id":6322,"nodeType":"ParameterList","parameters":[],"src":"8699:0:22"},"scope":6978,"src":"8608:671:22","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":6522,"nodeType":"Block","src":"9823:637:22","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":6432,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6427,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6415,"src":"9841:2:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":6430,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9855:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":6429,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9847:7:22","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6428,"name":"address","nodeType":"ElementaryTypeName","src":"9847:7:22","typeDescriptions":{}}},"id":6431,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9847:10:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9841:16:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"455243313135353a206d696e7420746f20746865207a65726f2061646472657373","id":6433,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9859:35:22","typeDescriptions":{"typeIdentifier":"t_stringliteral_ebf031a1b7ee1d0b3a7752b450a3268e8b6c334561b48c1c0ba0f5bac05749f2","typeString":"literal_string \"ERC1155: mint to the zero address\""},"value":"ERC1155: mint to the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ebf031a1b7ee1d0b3a7752b450a3268e8b6c334561b48c1c0ba0f5bac05749f2","typeString":"literal_string \"ERC1155: mint to the zero address\""}],"id":6426,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"9833:7:22","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":6434,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9833:62:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6435,"nodeType":"ExpressionStatement","src":"9833:62:22"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6441,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":6437,"name":"ids","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6418,"src":"9913:3:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":6438,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9917:6:22","memberName":"length","nodeType":"MemberAccess","src":"9913:10:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":6439,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6421,"src":"9927:7:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":6440,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9935:6:22","memberName":"length","nodeType":"MemberAccess","src":"9927:14:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9913:28:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"455243313135353a2069647320616e6420616d6f756e7473206c656e677468206d69736d61746368","id":6442,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9943:42:22","typeDescriptions":{"typeIdentifier":"t_stringliteral_e909e0c9a8f96b4f9af03b716811ece20beb070be416893ed1d50619b5930807","typeString":"literal_string \"ERC1155: ids and amounts length mismatch\""},"value":"ERC1155: ids and amounts length mismatch"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e909e0c9a8f96b4f9af03b716811ece20beb070be416893ed1d50619b5930807","typeString":"literal_string \"ERC1155: ids and amounts length mismatch\""}],"id":6436,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"9905:7:22","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":6443,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9905:81:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6444,"nodeType":"ExpressionStatement","src":"9905:81:22"},{"assignments":[6446],"declarations":[{"constant":false,"id":6446,"mutability":"mutable","name":"operator","nameLocation":"10005:8:22","nodeType":"VariableDeclaration","scope":6522,"src":"9997:16:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6445,"name":"address","nodeType":"ElementaryTypeName","src":"9997:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":6449,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":6447,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9276,"src":"10016:10:22","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":6448,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10016:12:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"9997:31:22"},{"expression":{"arguments":[{"id":6451,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6446,"src":"10060:8:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":6454,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10078:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":6453,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10070:7:22","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6452,"name":"address","nodeType":"ElementaryTypeName","src":"10070:7:22","typeDescriptions":{}}},"id":6455,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10070:10:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6456,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6415,"src":"10082:2:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6457,"name":"ids","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6418,"src":"10086:3:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":6458,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6421,"src":"10091:7:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":6459,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6423,"src":"10100:4:22","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":6450,"name":"_beforeTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6802,"src":"10039:20:22","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,address,uint256[] memory,uint256[] memory,bytes memory)"}},"id":6460,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10039:66:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6461,"nodeType":"ExpressionStatement","src":"10039:66:22"},{"body":{"id":6485,"nodeType":"Block","src":"10157:60:22","statements":[{"expression":{"id":6483,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":6473,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5781,"src":"10171:9:22","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(uint256 => mapping(address => uint256))"}},"id":6478,"indexExpression":{"baseExpression":{"id":6474,"name":"ids","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6418,"src":"10181:3:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":6476,"indexExpression":{"id":6475,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6463,"src":"10185:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10181:6:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10171:17:22","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":6479,"indexExpression":{"id":6477,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6415,"src":"10189:2:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"10171:21:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"baseExpression":{"id":6480,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6421,"src":"10196:7:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":6482,"indexExpression":{"id":6481,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6463,"src":"10204:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10196:10:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10171:35:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6484,"nodeType":"ExpressionStatement","src":"10171:35:22"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6469,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6466,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6463,"src":"10136:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":6467,"name":"ids","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6418,"src":"10140:3:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":6468,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10144:6:22","memberName":"length","nodeType":"MemberAccess","src":"10140:10:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10136:14:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6486,"initializationExpression":{"assignments":[6463],"declarations":[{"constant":false,"id":6463,"mutability":"mutable","name":"i","nameLocation":"10129:1:22","nodeType":"VariableDeclaration","scope":6486,"src":"10121:9:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6462,"name":"uint256","nodeType":"ElementaryTypeName","src":"10121:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6465,"initialValue":{"hexValue":"30","id":6464,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10133:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"10121:13:22"},"loopExpression":{"expression":{"id":6471,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"10152:3:22","subExpression":{"id":6470,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6463,"src":"10152:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6472,"nodeType":"ExpressionStatement","src":"10152:3:22"},"nodeType":"ForStatement","src":"10116:101:22"},{"eventCall":{"arguments":[{"id":6488,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6446,"src":"10246:8:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":6491,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10264:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":6490,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10256:7:22","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6489,"name":"address","nodeType":"ElementaryTypeName","src":"10256:7:22","typeDescriptions":{}}},"id":6492,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10256:10:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6493,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6415,"src":"10268:2:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6494,"name":"ids","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6418,"src":"10272:3:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":6495,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6421,"src":"10277:7:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}],"id":6487,"name":"TransferBatch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7012,"src":"10232:13:22","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$","typeString":"function (address,address,address,uint256[] memory,uint256[] memory)"}},"id":6496,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10232:53:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6497,"nodeType":"EmitStatement","src":"10227:58:22"},{"expression":{"arguments":[{"id":6499,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6446,"src":"10316:8:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":6502,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10334:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":6501,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10326:7:22","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6500,"name":"address","nodeType":"ElementaryTypeName","src":"10326:7:22","typeDescriptions":{}}},"id":6503,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10326:10:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6504,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6415,"src":"10338:2:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6505,"name":"ids","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6418,"src":"10342:3:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":6506,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6421,"src":"10347:7:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":6507,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6423,"src":"10356:4:22","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":6498,"name":"_afterTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6821,"src":"10296:19:22","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,address,uint256[] memory,uint256[] memory,bytes memory)"}},"id":6508,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10296:65:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6509,"nodeType":"ExpressionStatement","src":"10296:65:22"},{"expression":{"arguments":[{"id":6511,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6446,"src":"10408:8:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":6514,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10426:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":6513,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10418:7:22","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6512,"name":"address","nodeType":"ElementaryTypeName","src":"10418:7:22","typeDescriptions":{}}},"id":6515,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10418:10:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6516,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6415,"src":"10430:2:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6517,"name":"ids","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6418,"src":"10434:3:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":6518,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6421,"src":"10439:7:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":6519,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6423,"src":"10448:4:22","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":6510,"name":"_doSafeBatchTransferAcceptanceCheck","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6949,"src":"10372:35:22","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,address,uint256[] memory,uint256[] memory,bytes memory)"}},"id":6520,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10372:81:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6521,"nodeType":"ExpressionStatement","src":"10372:81:22"}]},"documentation":{"id":6413,"nodeType":"StructuredDocumentation","src":"9285:379:22","text":" @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_mint}.\n Emits a {TransferBatch} event.\n Requirements:\n - `ids` and `amounts` must have the same length.\n - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the\n acceptance magic value."},"id":6523,"implemented":true,"kind":"function","modifiers":[],"name":"_mintBatch","nameLocation":"9678:10:22","nodeType":"FunctionDefinition","parameters":{"id":6424,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6415,"mutability":"mutable","name":"to","nameLocation":"9706:2:22","nodeType":"VariableDeclaration","scope":6523,"src":"9698:10:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6414,"name":"address","nodeType":"ElementaryTypeName","src":"9698:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6418,"mutability":"mutable","name":"ids","nameLocation":"9735:3:22","nodeType":"VariableDeclaration","scope":6523,"src":"9718:20:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":6416,"name":"uint256","nodeType":"ElementaryTypeName","src":"9718:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6417,"nodeType":"ArrayTypeName","src":"9718:9:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":6421,"mutability":"mutable","name":"amounts","nameLocation":"9765:7:22","nodeType":"VariableDeclaration","scope":6523,"src":"9748:24:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":6419,"name":"uint256","nodeType":"ElementaryTypeName","src":"9748:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6420,"nodeType":"ArrayTypeName","src":"9748:9:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":6423,"mutability":"mutable","name":"data","nameLocation":"9795:4:22","nodeType":"VariableDeclaration","scope":6523,"src":"9782:17:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":6422,"name":"bytes","nodeType":"ElementaryTypeName","src":"9782:5:22","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"9688:117:22"},"returnParameters":{"id":6425,"nodeType":"ParameterList","parameters":[],"src":"9823:0:22"},"scope":6978,"src":"9669:791:22","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":6627,"nodeType":"Block","src":"10820:682:22","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":6539,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6534,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6526,"src":"10838:4:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":6537,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10854:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":6536,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10846:7:22","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6535,"name":"address","nodeType":"ElementaryTypeName","src":"10846:7:22","typeDescriptions":{}}},"id":6538,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10846:10:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"10838:18:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"455243313135353a206275726e2066726f6d20746865207a65726f2061646472657373","id":6540,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10858:37:22","typeDescriptions":{"typeIdentifier":"t_stringliteral_87fd4aee52f5758d127cd9704d5ffef70f36ed1e87eb99b6f40e37a25c79a76a","typeString":"literal_string \"ERC1155: burn from the zero address\""},"value":"ERC1155: burn from the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_87fd4aee52f5758d127cd9704d5ffef70f36ed1e87eb99b6f40e37a25c79a76a","typeString":"literal_string \"ERC1155: burn from the zero address\""}],"id":6533,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"10830:7:22","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":6541,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10830:66:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6542,"nodeType":"ExpressionStatement","src":"10830:66:22"},{"assignments":[6544],"declarations":[{"constant":false,"id":6544,"mutability":"mutable","name":"operator","nameLocation":"10915:8:22","nodeType":"VariableDeclaration","scope":6627,"src":"10907:16:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6543,"name":"address","nodeType":"ElementaryTypeName","src":"10907:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":6547,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":6545,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9276,"src":"10926:10:22","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":6546,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10926:12:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"10907:31:22"},{"assignments":[6552],"declarations":[{"constant":false,"id":6552,"mutability":"mutable","name":"ids","nameLocation":"10965:3:22","nodeType":"VariableDeclaration","scope":6627,"src":"10948:20:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":6550,"name":"uint256","nodeType":"ElementaryTypeName","src":"10948:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6551,"nodeType":"ArrayTypeName","src":"10948:9:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":6556,"initialValue":{"arguments":[{"id":6554,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6528,"src":"10989:2:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6553,"name":"_asSingletonArray","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6977,"src":"10971:17:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"}},"id":6555,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10971:21:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"VariableDeclarationStatement","src":"10948:44:22"},{"assignments":[6561],"declarations":[{"constant":false,"id":6561,"mutability":"mutable","name":"amounts","nameLocation":"11019:7:22","nodeType":"VariableDeclaration","scope":6627,"src":"11002:24:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":6559,"name":"uint256","nodeType":"ElementaryTypeName","src":"11002:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6560,"nodeType":"ArrayTypeName","src":"11002:9:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":6565,"initialValue":{"arguments":[{"id":6563,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6530,"src":"11047:6:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6562,"name":"_asSingletonArray","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6977,"src":"11029:17:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"}},"id":6564,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11029:25:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"VariableDeclarationStatement","src":"11002:52:22"},{"expression":{"arguments":[{"id":6567,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6544,"src":"11086:8:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6568,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6526,"src":"11096:4:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":6571,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11110:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":6570,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11102:7:22","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6569,"name":"address","nodeType":"ElementaryTypeName","src":"11102:7:22","typeDescriptions":{}}},"id":6572,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11102:10:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6573,"name":"ids","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6552,"src":"11114:3:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":6574,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6561,"src":"11119:7:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"hexValue":"","id":6575,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11128:2:22","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":6566,"name":"_beforeTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6802,"src":"11065:20:22","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,address,uint256[] memory,uint256[] memory,bytes memory)"}},"id":6576,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11065:66:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6577,"nodeType":"ExpressionStatement","src":"11065:66:22"},{"assignments":[6579],"declarations":[{"constant":false,"id":6579,"mutability":"mutable","name":"fromBalance","nameLocation":"11150:11:22","nodeType":"VariableDeclaration","scope":6627,"src":"11142:19:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6578,"name":"uint256","nodeType":"ElementaryTypeName","src":"11142:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6585,"initialValue":{"baseExpression":{"baseExpression":{"id":6580,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5781,"src":"11164:9:22","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(uint256 => mapping(address => uint256))"}},"id":6582,"indexExpression":{"id":6581,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6528,"src":"11174:2:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11164:13:22","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":6584,"indexExpression":{"id":6583,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6526,"src":"11178:4:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11164:19:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"11142:41:22"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6589,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6587,"name":"fromBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6579,"src":"11201:11:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":6588,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6530,"src":"11216:6:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11201:21:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"455243313135353a206275726e20616d6f756e7420657863656564732062616c616e6365","id":6590,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11224:38:22","typeDescriptions":{"typeIdentifier":"t_stringliteral_294a5de01910e2350ff231c633ae2d453ed6b1b72c75506234b7aace63eae685","typeString":"literal_string \"ERC1155: burn amount exceeds balance\""},"value":"ERC1155: burn amount exceeds balance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_294a5de01910e2350ff231c633ae2d453ed6b1b72c75506234b7aace63eae685","typeString":"literal_string \"ERC1155: burn amount exceeds balance\""}],"id":6586,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"11193:7:22","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":6591,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11193:70:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6592,"nodeType":"ExpressionStatement","src":"11193:70:22"},{"id":6603,"nodeType":"UncheckedBlock","src":"11273:77:22","statements":[{"expression":{"id":6601,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":6593,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5781,"src":"11297:9:22","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(uint256 => mapping(address => uint256))"}},"id":6596,"indexExpression":{"id":6594,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6528,"src":"11307:2:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11297:13:22","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":6597,"indexExpression":{"id":6595,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6526,"src":"11311:4:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"11297:19:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6600,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6598,"name":"fromBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6579,"src":"11319:11:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":6599,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6530,"src":"11333:6:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11319:20:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11297:42:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6602,"nodeType":"ExpressionStatement","src":"11297:42:22"}]},{"eventCall":{"arguments":[{"id":6605,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6544,"src":"11380:8:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6606,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6526,"src":"11390:4:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":6609,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11404:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":6608,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11396:7:22","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6607,"name":"address","nodeType":"ElementaryTypeName","src":"11396:7:22","typeDescriptions":{}}},"id":6610,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11396:10:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6611,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6528,"src":"11408:2:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6612,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6530,"src":"11412:6:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6604,"name":"TransferSingle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6997,"src":"11365:14:22","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,address,uint256,uint256)"}},"id":6613,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11365:54:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6614,"nodeType":"EmitStatement","src":"11360:59:22"},{"expression":{"arguments":[{"id":6616,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6544,"src":"11450:8:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6617,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6526,"src":"11460:4:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":6620,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11474:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":6619,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11466:7:22","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6618,"name":"address","nodeType":"ElementaryTypeName","src":"11466:7:22","typeDescriptions":{}}},"id":6621,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11466:10:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6622,"name":"ids","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6552,"src":"11478:3:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":6623,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6561,"src":"11483:7:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"hexValue":"","id":6624,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11492:2:22","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":6615,"name":"_afterTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6821,"src":"11430:19:22","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,address,uint256[] memory,uint256[] memory,bytes memory)"}},"id":6625,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11430:65:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6626,"nodeType":"ExpressionStatement","src":"11430:65:22"}]},"documentation":{"id":6524,"nodeType":"StructuredDocumentation","src":"10466:275:22","text":" @dev Destroys `amount` tokens of token type `id` from `from`\n Emits a {TransferSingle} event.\n Requirements:\n - `from` cannot be the zero address.\n - `from` must have at least `amount` tokens of token type `id`."},"id":6628,"implemented":true,"kind":"function","modifiers":[],"name":"_burn","nameLocation":"10755:5:22","nodeType":"FunctionDefinition","parameters":{"id":6531,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6526,"mutability":"mutable","name":"from","nameLocation":"10769:4:22","nodeType":"VariableDeclaration","scope":6628,"src":"10761:12:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6525,"name":"address","nodeType":"ElementaryTypeName","src":"10761:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6528,"mutability":"mutable","name":"id","nameLocation":"10783:2:22","nodeType":"VariableDeclaration","scope":6628,"src":"10775:10:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6527,"name":"uint256","nodeType":"ElementaryTypeName","src":"10775:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6530,"mutability":"mutable","name":"amount","nameLocation":"10795:6:22","nodeType":"VariableDeclaration","scope":6628,"src":"10787:14:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6529,"name":"uint256","nodeType":"ElementaryTypeName","src":"10787:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10760:42:22"},"returnParameters":{"id":6532,"nodeType":"ParameterList","parameters":[],"src":"10820:0:22"},"scope":6978,"src":"10746:756:22","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":6750,"nodeType":"Block","src":"11840:814:22","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":6646,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6641,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6631,"src":"11858:4:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":6644,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11874:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":6643,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11866:7:22","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6642,"name":"address","nodeType":"ElementaryTypeName","src":"11866:7:22","typeDescriptions":{}}},"id":6645,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11866:10:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"11858:18:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"455243313135353a206275726e2066726f6d20746865207a65726f2061646472657373","id":6647,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11878:37:22","typeDescriptions":{"typeIdentifier":"t_stringliteral_87fd4aee52f5758d127cd9704d5ffef70f36ed1e87eb99b6f40e37a25c79a76a","typeString":"literal_string \"ERC1155: burn from the zero address\""},"value":"ERC1155: burn from the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_87fd4aee52f5758d127cd9704d5ffef70f36ed1e87eb99b6f40e37a25c79a76a","typeString":"literal_string \"ERC1155: burn from the zero address\""}],"id":6640,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"11850:7:22","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":6648,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11850:66:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6649,"nodeType":"ExpressionStatement","src":"11850:66:22"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6655,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":6651,"name":"ids","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6634,"src":"11934:3:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":6652,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11938:6:22","memberName":"length","nodeType":"MemberAccess","src":"11934:10:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":6653,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6637,"src":"11948:7:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":6654,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11956:6:22","memberName":"length","nodeType":"MemberAccess","src":"11948:14:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11934:28:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"455243313135353a2069647320616e6420616d6f756e7473206c656e677468206d69736d61746368","id":6656,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11964:42:22","typeDescriptions":{"typeIdentifier":"t_stringliteral_e909e0c9a8f96b4f9af03b716811ece20beb070be416893ed1d50619b5930807","typeString":"literal_string \"ERC1155: ids and amounts length mismatch\""},"value":"ERC1155: ids and amounts length mismatch"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e909e0c9a8f96b4f9af03b716811ece20beb070be416893ed1d50619b5930807","typeString":"literal_string \"ERC1155: ids and amounts length mismatch\""}],"id":6650,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"11926:7:22","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":6657,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11926:81:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6658,"nodeType":"ExpressionStatement","src":"11926:81:22"},{"assignments":[6660],"declarations":[{"constant":false,"id":6660,"mutability":"mutable","name":"operator","nameLocation":"12026:8:22","nodeType":"VariableDeclaration","scope":6750,"src":"12018:16:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6659,"name":"address","nodeType":"ElementaryTypeName","src":"12018:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":6663,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":6661,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9276,"src":"12037:10:22","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":6662,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12037:12:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"12018:31:22"},{"expression":{"arguments":[{"id":6665,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6660,"src":"12081:8:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6666,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6631,"src":"12091:4:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":6669,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12105:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":6668,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12097:7:22","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6667,"name":"address","nodeType":"ElementaryTypeName","src":"12097:7:22","typeDescriptions":{}}},"id":6670,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12097:10:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6671,"name":"ids","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6634,"src":"12109:3:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":6672,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6637,"src":"12114:7:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"hexValue":"","id":6673,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12123:2:22","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":6664,"name":"_beforeTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6802,"src":"12060:20:22","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,address,uint256[] memory,uint256[] memory,bytes memory)"}},"id":6674,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12060:66:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6675,"nodeType":"ExpressionStatement","src":"12060:66:22"},{"body":{"id":6725,"nodeType":"Block","src":"12178:323:22","statements":[{"assignments":[6688],"declarations":[{"constant":false,"id":6688,"mutability":"mutable","name":"id","nameLocation":"12200:2:22","nodeType":"VariableDeclaration","scope":6725,"src":"12192:10:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6687,"name":"uint256","nodeType":"ElementaryTypeName","src":"12192:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6692,"initialValue":{"baseExpression":{"id":6689,"name":"ids","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6634,"src":"12205:3:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":6691,"indexExpression":{"id":6690,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6677,"src":"12209:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12205:6:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12192:19:22"},{"assignments":[6694],"declarations":[{"constant":false,"id":6694,"mutability":"mutable","name":"amount","nameLocation":"12233:6:22","nodeType":"VariableDeclaration","scope":6725,"src":"12225:14:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6693,"name":"uint256","nodeType":"ElementaryTypeName","src":"12225:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6698,"initialValue":{"baseExpression":{"id":6695,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6637,"src":"12242:7:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":6697,"indexExpression":{"id":6696,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6677,"src":"12250:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12242:10:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12225:27:22"},{"assignments":[6700],"declarations":[{"constant":false,"id":6700,"mutability":"mutable","name":"fromBalance","nameLocation":"12275:11:22","nodeType":"VariableDeclaration","scope":6725,"src":"12267:19:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6699,"name":"uint256","nodeType":"ElementaryTypeName","src":"12267:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6706,"initialValue":{"baseExpression":{"baseExpression":{"id":6701,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5781,"src":"12289:9:22","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(uint256 => mapping(address => uint256))"}},"id":6703,"indexExpression":{"id":6702,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6688,"src":"12299:2:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12289:13:22","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":6705,"indexExpression":{"id":6704,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6631,"src":"12303:4:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12289:19:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12267:41:22"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6710,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6708,"name":"fromBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6700,"src":"12330:11:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":6709,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6694,"src":"12345:6:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12330:21:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"455243313135353a206275726e20616d6f756e7420657863656564732062616c616e6365","id":6711,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12353:38:22","typeDescriptions":{"typeIdentifier":"t_stringliteral_294a5de01910e2350ff231c633ae2d453ed6b1b72c75506234b7aace63eae685","typeString":"literal_string \"ERC1155: burn amount exceeds balance\""},"value":"ERC1155: burn amount exceeds balance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_294a5de01910e2350ff231c633ae2d453ed6b1b72c75506234b7aace63eae685","typeString":"literal_string \"ERC1155: burn amount exceeds balance\""}],"id":6707,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"12322:7:22","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":6712,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12322:70:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6713,"nodeType":"ExpressionStatement","src":"12322:70:22"},{"id":6724,"nodeType":"UncheckedBlock","src":"12406:85:22","statements":[{"expression":{"id":6722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":6714,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5781,"src":"12434:9:22","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(uint256 => mapping(address => uint256))"}},"id":6717,"indexExpression":{"id":6715,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6688,"src":"12444:2:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12434:13:22","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":6718,"indexExpression":{"id":6716,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6631,"src":"12448:4:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"12434:19:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6721,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6719,"name":"fromBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6700,"src":"12456:11:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":6720,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6694,"src":"12470:6:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12456:20:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12434:42:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6723,"nodeType":"ExpressionStatement","src":"12434:42:22"}]}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6683,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6680,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6677,"src":"12157:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":6681,"name":"ids","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6634,"src":"12161:3:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":6682,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12165:6:22","memberName":"length","nodeType":"MemberAccess","src":"12161:10:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12157:14:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6726,"initializationExpression":{"assignments":[6677],"declarations":[{"constant":false,"id":6677,"mutability":"mutable","name":"i","nameLocation":"12150:1:22","nodeType":"VariableDeclaration","scope":6726,"src":"12142:9:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6676,"name":"uint256","nodeType":"ElementaryTypeName","src":"12142:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6679,"initialValue":{"hexValue":"30","id":6678,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12154:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"12142:13:22"},"loopExpression":{"expression":{"id":6685,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"12173:3:22","subExpression":{"id":6684,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6677,"src":"12173:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6686,"nodeType":"ExpressionStatement","src":"12173:3:22"},"nodeType":"ForStatement","src":"12137:364:22"},{"eventCall":{"arguments":[{"id":6728,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6660,"src":"12530:8:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6729,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6631,"src":"12540:4:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":6732,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12554:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":6731,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12546:7:22","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6730,"name":"address","nodeType":"ElementaryTypeName","src":"12546:7:22","typeDescriptions":{}}},"id":6733,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12546:10:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6734,"name":"ids","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6634,"src":"12558:3:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":6735,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6637,"src":"12563:7:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}],"id":6727,"name":"TransferBatch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7012,"src":"12516:13:22","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$","typeString":"function (address,address,address,uint256[] memory,uint256[] memory)"}},"id":6736,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12516:55:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6737,"nodeType":"EmitStatement","src":"12511:60:22"},{"expression":{"arguments":[{"id":6739,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6660,"src":"12602:8:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6740,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6631,"src":"12612:4:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":6743,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12626:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":6742,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12618:7:22","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6741,"name":"address","nodeType":"ElementaryTypeName","src":"12618:7:22","typeDescriptions":{}}},"id":6744,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12618:10:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6745,"name":"ids","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6634,"src":"12630:3:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":6746,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6637,"src":"12635:7:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"hexValue":"","id":6747,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12644:2:22","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":6738,"name":"_afterTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6821,"src":"12582:19:22","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,address,uint256[] memory,uint256[] memory,bytes memory)"}},"id":6748,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12582:65:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6749,"nodeType":"ExpressionStatement","src":"12582:65:22"}]},"documentation":{"id":6629,"nodeType":"StructuredDocumentation","src":"11508:228:22","text":" @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_burn}.\n Emits a {TransferBatch} event.\n Requirements:\n - `ids` and `amounts` must have the same length."},"id":6751,"implemented":true,"kind":"function","modifiers":[],"name":"_burnBatch","nameLocation":"11750:10:22","nodeType":"FunctionDefinition","parameters":{"id":6638,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6631,"mutability":"mutable","name":"from","nameLocation":"11769:4:22","nodeType":"VariableDeclaration","scope":6751,"src":"11761:12:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6630,"name":"address","nodeType":"ElementaryTypeName","src":"11761:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6634,"mutability":"mutable","name":"ids","nameLocation":"11792:3:22","nodeType":"VariableDeclaration","scope":6751,"src":"11775:20:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":6632,"name":"uint256","nodeType":"ElementaryTypeName","src":"11775:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6633,"nodeType":"ArrayTypeName","src":"11775:9:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":6637,"mutability":"mutable","name":"amounts","nameLocation":"11814:7:22","nodeType":"VariableDeclaration","scope":6751,"src":"11797:24:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":6635,"name":"uint256","nodeType":"ElementaryTypeName","src":"11797:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6636,"nodeType":"ArrayTypeName","src":"11797:9:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"11760:62:22"},"returnParameters":{"id":6639,"nodeType":"ParameterList","parameters":[],"src":"11840:0:22"},"scope":6978,"src":"11741:913:22","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":6782,"nodeType":"Block","src":"12883:200:22","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":6764,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6762,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6754,"src":"12901:5:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6763,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6756,"src":"12910:8:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"12901:17:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"455243313135353a2073657474696e6720617070726f76616c2073746174757320666f722073656c66","id":6765,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12920:43:22","typeDescriptions":{"typeIdentifier":"t_stringliteral_df9806c6dc743de602e49918a67b580590d69ab768bdb59f977c0a884a91a7c2","typeString":"literal_string \"ERC1155: setting approval status for self\""},"value":"ERC1155: setting approval status for self"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_df9806c6dc743de602e49918a67b580590d69ab768bdb59f977c0a884a91a7c2","typeString":"literal_string \"ERC1155: setting approval status for self\""}],"id":6761,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"12893:7:22","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":6766,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12893:71:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6767,"nodeType":"ExpressionStatement","src":"12893:71:22"},{"expression":{"id":6774,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":6768,"name":"_operatorApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5787,"src":"12974:18:22","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":6771,"indexExpression":{"id":6769,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6754,"src":"12993:5:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12974:25:22","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":6772,"indexExpression":{"id":6770,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6756,"src":"13000:8:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"12974:35:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":6773,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6758,"src":"13012:8:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"12974:46:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6775,"nodeType":"ExpressionStatement","src":"12974:46:22"},{"eventCall":{"arguments":[{"id":6777,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6754,"src":"13050:5:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6778,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6756,"src":"13057:8:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6779,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6758,"src":"13067:8:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":6776,"name":"ApprovalForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7021,"src":"13035:14:22","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,address,bool)"}},"id":6780,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13035:41:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6781,"nodeType":"EmitStatement","src":"13030:46:22"}]},"documentation":{"id":6752,"nodeType":"StructuredDocumentation","src":"12660:125:22","text":" @dev Approve `operator` to operate on all of `owner` tokens\n Emits an {ApprovalForAll} event."},"id":6783,"implemented":true,"kind":"function","modifiers":[],"name":"_setApprovalForAll","nameLocation":"12799:18:22","nodeType":"FunctionDefinition","parameters":{"id":6759,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6754,"mutability":"mutable","name":"owner","nameLocation":"12826:5:22","nodeType":"VariableDeclaration","scope":6783,"src":"12818:13:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6753,"name":"address","nodeType":"ElementaryTypeName","src":"12818:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6756,"mutability":"mutable","name":"operator","nameLocation":"12841:8:22","nodeType":"VariableDeclaration","scope":6783,"src":"12833:16:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6755,"name":"address","nodeType":"ElementaryTypeName","src":"12833:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6758,"mutability":"mutable","name":"approved","nameLocation":"12856:8:22","nodeType":"VariableDeclaration","scope":6783,"src":"12851:13:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6757,"name":"bool","nodeType":"ElementaryTypeName","src":"12851:4:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"12817:48:22"},"returnParameters":{"id":6760,"nodeType":"ParameterList","parameters":[],"src":"12883:0:22"},"scope":6978,"src":"12790:293:22","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":6801,"nodeType":"Block","src":"14231:2:22","statements":[]},"documentation":{"id":6784,"nodeType":"StructuredDocumentation","src":"13089:925:22","text":" @dev Hook that is called before any token transfer. This includes minting\n and burning, as well as batched variants.\n The same hook is called on both single and batched variants. For single\n transfers, the length of the `ids` and `amounts` arrays will be 1.\n Calling conditions (for each `id` and `amount` pair):\n - When `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n of token type `id` will be transferred to `to`.\n - When `from` is zero, `amount` tokens of token type `id` will be minted\n for `to`.\n - when `to` is zero, `amount` of ``from``'s tokens of token type `id`\n will be burned.\n - `from` and `to` are never both zero.\n - `ids` and `amounts` have the same, non-zero length.\n To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]."},"id":6802,"implemented":true,"kind":"function","modifiers":[],"name":"_beforeTokenTransfer","nameLocation":"14028:20:22","nodeType":"FunctionDefinition","parameters":{"id":6799,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6786,"mutability":"mutable","name":"operator","nameLocation":"14066:8:22","nodeType":"VariableDeclaration","scope":6802,"src":"14058:16:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6785,"name":"address","nodeType":"ElementaryTypeName","src":"14058:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6788,"mutability":"mutable","name":"from","nameLocation":"14092:4:22","nodeType":"VariableDeclaration","scope":6802,"src":"14084:12:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6787,"name":"address","nodeType":"ElementaryTypeName","src":"14084:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6790,"mutability":"mutable","name":"to","nameLocation":"14114:2:22","nodeType":"VariableDeclaration","scope":6802,"src":"14106:10:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6789,"name":"address","nodeType":"ElementaryTypeName","src":"14106:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6793,"mutability":"mutable","name":"ids","nameLocation":"14143:3:22","nodeType":"VariableDeclaration","scope":6802,"src":"14126:20:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":6791,"name":"uint256","nodeType":"ElementaryTypeName","src":"14126:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6792,"nodeType":"ArrayTypeName","src":"14126:9:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":6796,"mutability":"mutable","name":"amounts","nameLocation":"14173:7:22","nodeType":"VariableDeclaration","scope":6802,"src":"14156:24:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":6794,"name":"uint256","nodeType":"ElementaryTypeName","src":"14156:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6795,"nodeType":"ArrayTypeName","src":"14156:9:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":6798,"mutability":"mutable","name":"data","nameLocation":"14203:4:22","nodeType":"VariableDeclaration","scope":6802,"src":"14190:17:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":6797,"name":"bytes","nodeType":"ElementaryTypeName","src":"14190:5:22","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"14048:165:22"},"returnParameters":{"id":6800,"nodeType":"ParameterList","parameters":[],"src":"14231:0:22"},"scope":6978,"src":"14019:214:22","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":6820,"nodeType":"Block","src":"15377:2:22","statements":[]},"documentation":{"id":6803,"nodeType":"StructuredDocumentation","src":"14239:922:22","text":" @dev Hook that is called after any token transfer. This includes minting\n and burning, as well as batched variants.\n The same hook is called on both single and batched variants. For single\n transfers, the length of the `id` and `amount` arrays will be 1.\n Calling conditions (for each `id` and `amount` pair):\n - When `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n of token type `id` will be transferred to `to`.\n - When `from` is zero, `amount` tokens of token type `id` will be minted\n for `to`.\n - when `to` is zero, `amount` of ``from``'s tokens of token type `id`\n will be burned.\n - `from` and `to` are never both zero.\n - `ids` and `amounts` have the same, non-zero length.\n To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]."},"id":6821,"implemented":true,"kind":"function","modifiers":[],"name":"_afterTokenTransfer","nameLocation":"15175:19:22","nodeType":"FunctionDefinition","parameters":{"id":6818,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6805,"mutability":"mutable","name":"operator","nameLocation":"15212:8:22","nodeType":"VariableDeclaration","scope":6821,"src":"15204:16:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6804,"name":"address","nodeType":"ElementaryTypeName","src":"15204:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6807,"mutability":"mutable","name":"from","nameLocation":"15238:4:22","nodeType":"VariableDeclaration","scope":6821,"src":"15230:12:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6806,"name":"address","nodeType":"ElementaryTypeName","src":"15230:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6809,"mutability":"mutable","name":"to","nameLocation":"15260:2:22","nodeType":"VariableDeclaration","scope":6821,"src":"15252:10:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6808,"name":"address","nodeType":"ElementaryTypeName","src":"15252:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6812,"mutability":"mutable","name":"ids","nameLocation":"15289:3:22","nodeType":"VariableDeclaration","scope":6821,"src":"15272:20:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":6810,"name":"uint256","nodeType":"ElementaryTypeName","src":"15272:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6811,"nodeType":"ArrayTypeName","src":"15272:9:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":6815,"mutability":"mutable","name":"amounts","nameLocation":"15319:7:22","nodeType":"VariableDeclaration","scope":6821,"src":"15302:24:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":6813,"name":"uint256","nodeType":"ElementaryTypeName","src":"15302:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6814,"nodeType":"ArrayTypeName","src":"15302:9:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":6817,"mutability":"mutable","name":"data","nameLocation":"15349:4:22","nodeType":"VariableDeclaration","scope":6821,"src":"15336:17:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":6816,"name":"bytes","nodeType":"ElementaryTypeName","src":"15336:5:22","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"15194:165:22"},"returnParameters":{"id":6819,"nodeType":"ParameterList","parameters":[],"src":"15377:0:22"},"scope":6978,"src":"15166:213:22","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":6883,"nodeType":"Block","src":"15578:532:22","statements":[{"condition":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":6836,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6827,"src":"15592:2:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":6837,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15595:10:22","memberName":"isContract","nodeType":"MemberAccess","referencedDeclaration":8952,"src":"15592:13:22","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$bound_to$_t_address_$","typeString":"function (address) view returns (bool)"}},"id":6838,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15592:15:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6882,"nodeType":"IfStatement","src":"15588:516:22","trueBody":{"id":6881,"nodeType":"Block","src":"15609:495:22","statements":[{"clauses":[{"block":{"id":6863,"nodeType":"Block","src":"15726:184:22","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":6856,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6852,"name":"response","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6850,"src":"15748:8:22","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"expression":{"id":6853,"name":"IERC1155Receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7141,"src":"15760:16:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC1155Receiver_$7141_$","typeString":"type(contract IERC1155Receiver)"}},"id":6854,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"15777:17:22","memberName":"onERC1155Received","nodeType":"MemberAccess","referencedDeclaration":7122,"src":"15760:34:22","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$","typeString":"function IERC1155Receiver.onERC1155Received(address,address,uint256,uint256,bytes calldata) returns (bytes4)"}},"id":6855,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"15795:8:22","memberName":"selector","nodeType":"MemberAccess","src":"15760:43:22","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"15748:55:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6862,"nodeType":"IfStatement","src":"15744:152:22","trueBody":{"id":6861,"nodeType":"Block","src":"15805:91:22","statements":[{"expression":{"arguments":[{"hexValue":"455243313135353a204552433131353552656365697665722072656a656374656420746f6b656e73","id":6858,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"15834:42:22","typeDescriptions":{"typeIdentifier":"t_stringliteral_0587cccad73a80a7f013db13c596f4febc1968dc77e1d3589d5e7a509a3d6503","typeString":"literal_string \"ERC1155: ERC1155Receiver rejected tokens\""},"value":"ERC1155: ERC1155Receiver rejected tokens"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_0587cccad73a80a7f013db13c596f4febc1968dc77e1d3589d5e7a509a3d6503","typeString":"literal_string \"ERC1155: ERC1155Receiver rejected tokens\""}],"id":6857,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[4294967277,4294967277],"referencedDeclaration":4294967277,"src":"15827:6:22","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":6859,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15827:50:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6860,"nodeType":"ExpressionStatement","src":"15827:50:22"}]}}]},"errorName":"","id":6864,"nodeType":"TryCatchClause","parameters":{"id":6851,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6850,"mutability":"mutable","name":"response","nameLocation":"15716:8:22","nodeType":"VariableDeclaration","scope":6864,"src":"15709:15:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":6849,"name":"bytes4","nodeType":"ElementaryTypeName","src":"15709:6:22","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"15708:17:22"},"src":"15700:210:22"},{"block":{"id":6872,"nodeType":"Block","src":"15945:47:22","statements":[{"expression":{"arguments":[{"id":6869,"name":"reason","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6866,"src":"15970:6:22","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":6868,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[4294967277,4294967277],"referencedDeclaration":4294967277,"src":"15963:6:22","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":6870,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15963:14:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6871,"nodeType":"ExpressionStatement","src":"15963:14:22"}]},"errorName":"Error","id":6873,"nodeType":"TryCatchClause","parameters":{"id":6867,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6866,"mutability":"mutable","name":"reason","nameLocation":"15937:6:22","nodeType":"VariableDeclaration","scope":6873,"src":"15923:20:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":6865,"name":"string","nodeType":"ElementaryTypeName","src":"15923:6:22","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"15922:22:22"},"src":"15911:81:22"},{"block":{"id":6878,"nodeType":"Block","src":"15999:95:22","statements":[{"expression":{"arguments":[{"hexValue":"455243313135353a207472616e7366657220746f206e6f6e2d45524331313535526563656976657220696d706c656d656e746572","id":6875,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"16024:54:22","typeDescriptions":{"typeIdentifier":"t_stringliteral_f591f7b75ffc499e05f8b34c3364b2eceff651378d9549db1d5d67c0d8255c5d","typeString":"literal_string \"ERC1155: transfer to non-ERC1155Receiver implementer\""},"value":"ERC1155: transfer to non-ERC1155Receiver implementer"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_f591f7b75ffc499e05f8b34c3364b2eceff651378d9549db1d5d67c0d8255c5d","typeString":"literal_string \"ERC1155: transfer to non-ERC1155Receiver implementer\""}],"id":6874,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[4294967277,4294967277],"referencedDeclaration":4294967277,"src":"16017:6:22","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":6876,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16017:62:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6877,"nodeType":"ExpressionStatement","src":"16017:62:22"}]},"errorName":"","id":6879,"nodeType":"TryCatchClause","src":"15993:101:22"}],"externalCall":{"arguments":[{"id":6843,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6823,"src":"15666:8:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6844,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6825,"src":"15676:4:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6845,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6829,"src":"15682:2:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6846,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6831,"src":"15686:6:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6847,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6833,"src":"15694:4:22","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"id":6840,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6827,"src":"15644:2:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6839,"name":"IERC1155Receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7141,"src":"15627:16:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC1155Receiver_$7141_$","typeString":"type(contract IERC1155Receiver)"}},"id":6841,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15627:20:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC1155Receiver_$7141","typeString":"contract IERC1155Receiver"}},"id":6842,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15648:17:22","memberName":"onERC1155Received","nodeType":"MemberAccess","referencedDeclaration":7122,"src":"15627:38:22","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function (address,address,uint256,uint256,bytes memory) external returns (bytes4)"}},"id":6848,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15627:72:22","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":6880,"nodeType":"TryStatement","src":"15623:471:22"}]}}]},"id":6884,"implemented":true,"kind":"function","modifiers":[],"name":"_doSafeTransferAcceptanceCheck","nameLocation":"15394:30:22","nodeType":"FunctionDefinition","parameters":{"id":6834,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6823,"mutability":"mutable","name":"operator","nameLocation":"15442:8:22","nodeType":"VariableDeclaration","scope":6884,"src":"15434:16:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6822,"name":"address","nodeType":"ElementaryTypeName","src":"15434:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6825,"mutability":"mutable","name":"from","nameLocation":"15468:4:22","nodeType":"VariableDeclaration","scope":6884,"src":"15460:12:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6824,"name":"address","nodeType":"ElementaryTypeName","src":"15460:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6827,"mutability":"mutable","name":"to","nameLocation":"15490:2:22","nodeType":"VariableDeclaration","scope":6884,"src":"15482:10:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6826,"name":"address","nodeType":"ElementaryTypeName","src":"15482:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6829,"mutability":"mutable","name":"id","nameLocation":"15510:2:22","nodeType":"VariableDeclaration","scope":6884,"src":"15502:10:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6828,"name":"uint256","nodeType":"ElementaryTypeName","src":"15502:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6831,"mutability":"mutable","name":"amount","nameLocation":"15530:6:22","nodeType":"VariableDeclaration","scope":6884,"src":"15522:14:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6830,"name":"uint256","nodeType":"ElementaryTypeName","src":"15522:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6833,"mutability":"mutable","name":"data","nameLocation":"15559:4:22","nodeType":"VariableDeclaration","scope":6884,"src":"15546:17:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":6832,"name":"bytes","nodeType":"ElementaryTypeName","src":"15546:5:22","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"15424:145:22"},"returnParameters":{"id":6835,"nodeType":"ParameterList","parameters":[],"src":"15578:0:22"},"scope":6978,"src":"15385:725:22","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":6948,"nodeType":"Block","src":"16334:574:22","statements":[{"condition":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":6901,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6890,"src":"16348:2:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":6902,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16351:10:22","memberName":"isContract","nodeType":"MemberAccess","referencedDeclaration":8952,"src":"16348:13:22","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$bound_to$_t_address_$","typeString":"function (address) view returns (bool)"}},"id":6903,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16348:15:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6947,"nodeType":"IfStatement","src":"16344:558:22","trueBody":{"id":6946,"nodeType":"Block","src":"16365:537:22","statements":[{"clauses":[{"block":{"id":6928,"nodeType":"Block","src":"16519:189:22","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":6921,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6917,"name":"response","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6915,"src":"16541:8:22","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"expression":{"id":6918,"name":"IERC1155Receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7141,"src":"16553:16:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC1155Receiver_$7141_$","typeString":"type(contract IERC1155Receiver)"}},"id":6919,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"16570:22:22","memberName":"onERC1155BatchReceived","nodeType":"MemberAccess","referencedDeclaration":7140,"src":"16553:39:22","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_calldata_ptr_$_t_array$_t_uint256_$dyn_calldata_ptr_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$","typeString":"function IERC1155Receiver.onERC1155BatchReceived(address,address,uint256[] calldata,uint256[] calldata,bytes calldata) returns (bytes4)"}},"id":6920,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"16593:8:22","memberName":"selector","nodeType":"MemberAccess","src":"16553:48:22","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"16541:60:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6927,"nodeType":"IfStatement","src":"16537:157:22","trueBody":{"id":6926,"nodeType":"Block","src":"16603:91:22","statements":[{"expression":{"arguments":[{"hexValue":"455243313135353a204552433131353552656365697665722072656a656374656420746f6b656e73","id":6923,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"16632:42:22","typeDescriptions":{"typeIdentifier":"t_stringliteral_0587cccad73a80a7f013db13c596f4febc1968dc77e1d3589d5e7a509a3d6503","typeString":"literal_string \"ERC1155: ERC1155Receiver rejected tokens\""},"value":"ERC1155: ERC1155Receiver rejected tokens"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_0587cccad73a80a7f013db13c596f4febc1968dc77e1d3589d5e7a509a3d6503","typeString":"literal_string \"ERC1155: ERC1155Receiver rejected tokens\""}],"id":6922,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[4294967277,4294967277],"referencedDeclaration":4294967277,"src":"16625:6:22","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":6924,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16625:50:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6925,"nodeType":"ExpressionStatement","src":"16625:50:22"}]}}]},"errorName":"","id":6929,"nodeType":"TryCatchClause","parameters":{"id":6916,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6915,"mutability":"mutable","name":"response","nameLocation":"16496:8:22","nodeType":"VariableDeclaration","scope":6929,"src":"16489:15:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":6914,"name":"bytes4","nodeType":"ElementaryTypeName","src":"16489:6:22","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"16471:47:22"},"src":"16463:245:22"},{"block":{"id":6937,"nodeType":"Block","src":"16743:47:22","statements":[{"expression":{"arguments":[{"id":6934,"name":"reason","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6931,"src":"16768:6:22","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":6933,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[4294967277,4294967277],"referencedDeclaration":4294967277,"src":"16761:6:22","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":6935,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16761:14:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6936,"nodeType":"ExpressionStatement","src":"16761:14:22"}]},"errorName":"Error","id":6938,"nodeType":"TryCatchClause","parameters":{"id":6932,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6931,"mutability":"mutable","name":"reason","nameLocation":"16735:6:22","nodeType":"VariableDeclaration","scope":6938,"src":"16721:20:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":6930,"name":"string","nodeType":"ElementaryTypeName","src":"16721:6:22","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"16720:22:22"},"src":"16709:81:22"},{"block":{"id":6943,"nodeType":"Block","src":"16797:95:22","statements":[{"expression":{"arguments":[{"hexValue":"455243313135353a207472616e7366657220746f206e6f6e2d45524331313535526563656976657220696d706c656d656e746572","id":6940,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"16822:54:22","typeDescriptions":{"typeIdentifier":"t_stringliteral_f591f7b75ffc499e05f8b34c3364b2eceff651378d9549db1d5d67c0d8255c5d","typeString":"literal_string \"ERC1155: transfer to non-ERC1155Receiver implementer\""},"value":"ERC1155: transfer to non-ERC1155Receiver implementer"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_f591f7b75ffc499e05f8b34c3364b2eceff651378d9549db1d5d67c0d8255c5d","typeString":"literal_string \"ERC1155: transfer to non-ERC1155Receiver implementer\""}],"id":6939,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[4294967277,4294967277],"referencedDeclaration":4294967277,"src":"16815:6:22","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":6941,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16815:62:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6942,"nodeType":"ExpressionStatement","src":"16815:62:22"}]},"errorName":"","id":6944,"nodeType":"TryCatchClause","src":"16791:101:22"}],"externalCall":{"arguments":[{"id":6908,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6886,"src":"16427:8:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6909,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6888,"src":"16437:4:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6910,"name":"ids","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6893,"src":"16443:3:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":6911,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6896,"src":"16448:7:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":6912,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6898,"src":"16457:4:22","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"id":6905,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6890,"src":"16400:2:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6904,"name":"IERC1155Receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7141,"src":"16383:16:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC1155Receiver_$7141_$","typeString":"type(contract IERC1155Receiver)"}},"id":6906,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16383:20:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC1155Receiver_$7141","typeString":"contract IERC1155Receiver"}},"id":6907,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16404:22:22","memberName":"onERC1155BatchReceived","nodeType":"MemberAccess","referencedDeclaration":7140,"src":"16383:43:22","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function (address,address,uint256[] memory,uint256[] memory,bytes memory) external returns (bytes4)"}},"id":6913,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16383:79:22","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":6945,"nodeType":"TryStatement","src":"16379:513:22"}]}}]},"id":6949,"implemented":true,"kind":"function","modifiers":[],"name":"_doSafeBatchTransferAcceptanceCheck","nameLocation":"16125:35:22","nodeType":"FunctionDefinition","parameters":{"id":6899,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6886,"mutability":"mutable","name":"operator","nameLocation":"16178:8:22","nodeType":"VariableDeclaration","scope":6949,"src":"16170:16:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6885,"name":"address","nodeType":"ElementaryTypeName","src":"16170:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6888,"mutability":"mutable","name":"from","nameLocation":"16204:4:22","nodeType":"VariableDeclaration","scope":6949,"src":"16196:12:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6887,"name":"address","nodeType":"ElementaryTypeName","src":"16196:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6890,"mutability":"mutable","name":"to","nameLocation":"16226:2:22","nodeType":"VariableDeclaration","scope":6949,"src":"16218:10:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6889,"name":"address","nodeType":"ElementaryTypeName","src":"16218:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6893,"mutability":"mutable","name":"ids","nameLocation":"16255:3:22","nodeType":"VariableDeclaration","scope":6949,"src":"16238:20:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":6891,"name":"uint256","nodeType":"ElementaryTypeName","src":"16238:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6892,"nodeType":"ArrayTypeName","src":"16238:9:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":6896,"mutability":"mutable","name":"amounts","nameLocation":"16285:7:22","nodeType":"VariableDeclaration","scope":6949,"src":"16268:24:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":6894,"name":"uint256","nodeType":"ElementaryTypeName","src":"16268:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6895,"nodeType":"ArrayTypeName","src":"16268:9:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":6898,"mutability":"mutable","name":"data","nameLocation":"16315:4:22","nodeType":"VariableDeclaration","scope":6949,"src":"16302:17:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":6897,"name":"bytes","nodeType":"ElementaryTypeName","src":"16302:5:22","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"16160:165:22"},"returnParameters":{"id":6900,"nodeType":"ParameterList","parameters":[],"src":"16334:0:22"},"scope":6978,"src":"16116:792:22","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":6976,"nodeType":"Block","src":"16998:109:22","statements":[{"assignments":[6961],"declarations":[{"constant":false,"id":6961,"mutability":"mutable","name":"array","nameLocation":"17025:5:22","nodeType":"VariableDeclaration","scope":6976,"src":"17008:22:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":6959,"name":"uint256","nodeType":"ElementaryTypeName","src":"17008:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6960,"nodeType":"ArrayTypeName","src":"17008:9:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":6967,"initialValue":{"arguments":[{"hexValue":"31","id":6965,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17047:1:22","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":6964,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"17033:13:22","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":6962,"name":"uint256","nodeType":"ElementaryTypeName","src":"17037:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6963,"nodeType":"ArrayTypeName","src":"17037:9:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":6966,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17033:16:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"VariableDeclarationStatement","src":"17008:41:22"},{"expression":{"id":6972,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":6968,"name":"array","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6961,"src":"17059:5:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":6970,"indexExpression":{"hexValue":"30","id":6969,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17065:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"17059:8:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":6971,"name":"element","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6951,"src":"17070:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17059:18:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6973,"nodeType":"ExpressionStatement","src":"17059:18:22"},{"expression":{"id":6974,"name":"array","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6961,"src":"17095:5:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"functionReturnParameters":6956,"id":6975,"nodeType":"Return","src":"17088:12:22"}]},"id":6977,"implemented":true,"kind":"function","modifiers":[],"name":"_asSingletonArray","nameLocation":"16923:17:22","nodeType":"FunctionDefinition","parameters":{"id":6952,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6951,"mutability":"mutable","name":"element","nameLocation":"16949:7:22","nodeType":"VariableDeclaration","scope":6977,"src":"16941:15:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6950,"name":"uint256","nodeType":"ElementaryTypeName","src":"16941:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16940:17:22"},"returnParameters":{"id":6956,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6955,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6977,"src":"16980:16:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":6953,"name":"uint256","nodeType":"ElementaryTypeName","src":"16980:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6954,"nodeType":"ArrayTypeName","src":"16980:9:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"16979:18:22"},"scope":6978,"src":"16914:193:22","stateMutability":"pure","virtual":false,"visibility":"private"}],"scope":6979,"src":"570:16539:22","usedErrors":[]}],"src":"109:17001:22"},"id":22},"@openzeppelin/contracts/token/ERC1155/IERC1155.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC1155/IERC1155.sol","exportedSymbols":{"IERC1155":[7100],"IERC165":[9743]},"id":7101,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":6980,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"110:23:23"},{"absolutePath":"@openzeppelin/contracts/utils/introspection/IERC165.sol","file":"../../utils/introspection/IERC165.sol","id":6981,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7101,"sourceUnit":9744,"src":"135:47:23","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":6983,"name":"IERC165","nameLocations":["372:7:23"],"nodeType":"IdentifierPath","referencedDeclaration":9743,"src":"372:7:23"},"id":6984,"nodeType":"InheritanceSpecifier","src":"372:7:23"}],"canonicalName":"IERC1155","contractDependencies":[],"contractKind":"interface","documentation":{"id":6982,"nodeType":"StructuredDocumentation","src":"184:165:23","text":" @dev Required interface of an ERC1155 compliant contract, as defined in the\n https://eips.ethereum.org/EIPS/eip-1155[EIP].\n _Available since v3.1._"},"fullyImplemented":false,"id":7100,"linearizedBaseContracts":[7100,9743],"name":"IERC1155","nameLocation":"360:8:23","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":6985,"nodeType":"StructuredDocumentation","src":"386:121:23","text":" @dev Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`."},"eventSelector":"c3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62","id":6997,"name":"TransferSingle","nameLocation":"518:14:23","nodeType":"EventDefinition","parameters":{"id":6996,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6987,"indexed":true,"mutability":"mutable","name":"operator","nameLocation":"549:8:23","nodeType":"VariableDeclaration","scope":6997,"src":"533:24:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6986,"name":"address","nodeType":"ElementaryTypeName","src":"533:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6989,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"575:4:23","nodeType":"VariableDeclaration","scope":6997,"src":"559:20:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6988,"name":"address","nodeType":"ElementaryTypeName","src":"559:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6991,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"597:2:23","nodeType":"VariableDeclaration","scope":6997,"src":"581:18:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6990,"name":"address","nodeType":"ElementaryTypeName","src":"581:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6993,"indexed":false,"mutability":"mutable","name":"id","nameLocation":"609:2:23","nodeType":"VariableDeclaration","scope":6997,"src":"601:10:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6992,"name":"uint256","nodeType":"ElementaryTypeName","src":"601:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6995,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"621:5:23","nodeType":"VariableDeclaration","scope":6997,"src":"613:13:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6994,"name":"uint256","nodeType":"ElementaryTypeName","src":"613:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"532:95:23"},"src":"512:116:23"},{"anonymous":false,"documentation":{"id":6998,"nodeType":"StructuredDocumentation","src":"634:144:23","text":" @dev Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all\n transfers."},"eventSelector":"4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb","id":7012,"name":"TransferBatch","nameLocation":"789:13:23","nodeType":"EventDefinition","parameters":{"id":7011,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7000,"indexed":true,"mutability":"mutable","name":"operator","nameLocation":"828:8:23","nodeType":"VariableDeclaration","scope":7012,"src":"812:24:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6999,"name":"address","nodeType":"ElementaryTypeName","src":"812:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7002,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"862:4:23","nodeType":"VariableDeclaration","scope":7012,"src":"846:20:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7001,"name":"address","nodeType":"ElementaryTypeName","src":"846:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7004,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"892:2:23","nodeType":"VariableDeclaration","scope":7012,"src":"876:18:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7003,"name":"address","nodeType":"ElementaryTypeName","src":"876:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7007,"indexed":false,"mutability":"mutable","name":"ids","nameLocation":"914:3:23","nodeType":"VariableDeclaration","scope":7012,"src":"904:13:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":7005,"name":"uint256","nodeType":"ElementaryTypeName","src":"904:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7006,"nodeType":"ArrayTypeName","src":"904:9:23","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":7010,"indexed":false,"mutability":"mutable","name":"values","nameLocation":"937:6:23","nodeType":"VariableDeclaration","scope":7012,"src":"927:16:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":7008,"name":"uint256","nodeType":"ElementaryTypeName","src":"927:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7009,"nodeType":"ArrayTypeName","src":"927:9:23","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"802:147:23"},"src":"783:167:23"},{"anonymous":false,"documentation":{"id":7013,"nodeType":"StructuredDocumentation","src":"956:147:23","text":" @dev Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to\n `approved`."},"eventSelector":"17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31","id":7021,"name":"ApprovalForAll","nameLocation":"1114:14:23","nodeType":"EventDefinition","parameters":{"id":7020,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7015,"indexed":true,"mutability":"mutable","name":"account","nameLocation":"1145:7:23","nodeType":"VariableDeclaration","scope":7021,"src":"1129:23:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7014,"name":"address","nodeType":"ElementaryTypeName","src":"1129:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7017,"indexed":true,"mutability":"mutable","name":"operator","nameLocation":"1170:8:23","nodeType":"VariableDeclaration","scope":7021,"src":"1154:24:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7016,"name":"address","nodeType":"ElementaryTypeName","src":"1154:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7019,"indexed":false,"mutability":"mutable","name":"approved","nameLocation":"1185:8:23","nodeType":"VariableDeclaration","scope":7021,"src":"1180:13:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7018,"name":"bool","nodeType":"ElementaryTypeName","src":"1180:4:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1128:66:23"},"src":"1108:87:23"},{"anonymous":false,"documentation":{"id":7022,"nodeType":"StructuredDocumentation","src":"1201:343:23","text":" @dev Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI.\n If an {URI} event was emitted for `id`, the standard\n https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value\n returned by {IERC1155MetadataURI-uri}."},"eventSelector":"6bb7ff708619ba0610cba295a58592e0451dee2622938c8755667688daf3529b","id":7028,"name":"URI","nameLocation":"1555:3:23","nodeType":"EventDefinition","parameters":{"id":7027,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7024,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"1566:5:23","nodeType":"VariableDeclaration","scope":7028,"src":"1559:12:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":7023,"name":"string","nodeType":"ElementaryTypeName","src":"1559:6:23","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":7026,"indexed":true,"mutability":"mutable","name":"id","nameLocation":"1589:2:23","nodeType":"VariableDeclaration","scope":7028,"src":"1573:18:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7025,"name":"uint256","nodeType":"ElementaryTypeName","src":"1573:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1558:34:23"},"src":"1549:44:23"},{"documentation":{"id":7029,"nodeType":"StructuredDocumentation","src":"1599:173:23","text":" @dev Returns the amount of tokens of token type `id` owned by `account`.\n Requirements:\n - `account` cannot be the zero address."},"functionSelector":"00fdd58e","id":7038,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"1786:9:23","nodeType":"FunctionDefinition","parameters":{"id":7034,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7031,"mutability":"mutable","name":"account","nameLocation":"1804:7:23","nodeType":"VariableDeclaration","scope":7038,"src":"1796:15:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7030,"name":"address","nodeType":"ElementaryTypeName","src":"1796:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7033,"mutability":"mutable","name":"id","nameLocation":"1821:2:23","nodeType":"VariableDeclaration","scope":7038,"src":"1813:10:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7032,"name":"uint256","nodeType":"ElementaryTypeName","src":"1813:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1795:29:23"},"returnParameters":{"id":7037,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7036,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7038,"src":"1848:7:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7035,"name":"uint256","nodeType":"ElementaryTypeName","src":"1848:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1847:9:23"},"scope":7100,"src":"1777:80:23","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":7039,"nodeType":"StructuredDocumentation","src":"1863:188:23","text":" @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}.\n Requirements:\n - `accounts` and `ids` must have the same length."},"functionSelector":"4e1273f4","id":7051,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOfBatch","nameLocation":"2065:14:23","nodeType":"FunctionDefinition","parameters":{"id":7046,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7042,"mutability":"mutable","name":"accounts","nameLocation":"2108:8:23","nodeType":"VariableDeclaration","scope":7051,"src":"2089:27:23","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":7040,"name":"address","nodeType":"ElementaryTypeName","src":"2089:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7041,"nodeType":"ArrayTypeName","src":"2089:9:23","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":7045,"mutability":"mutable","name":"ids","nameLocation":"2145:3:23","nodeType":"VariableDeclaration","scope":7051,"src":"2126:22:23","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":7043,"name":"uint256","nodeType":"ElementaryTypeName","src":"2126:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7044,"nodeType":"ArrayTypeName","src":"2126:9:23","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"2079:75:23"},"returnParameters":{"id":7050,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7049,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7051,"src":"2178:16:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":7047,"name":"uint256","nodeType":"ElementaryTypeName","src":"2178:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7048,"nodeType":"ArrayTypeName","src":"2178:9:23","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"2177:18:23"},"scope":7100,"src":"2056:140:23","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":7052,"nodeType":"StructuredDocumentation","src":"2202:248:23","text":" @dev Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`,\n Emits an {ApprovalForAll} event.\n Requirements:\n - `operator` cannot be the caller."},"functionSelector":"a22cb465","id":7059,"implemented":false,"kind":"function","modifiers":[],"name":"setApprovalForAll","nameLocation":"2464:17:23","nodeType":"FunctionDefinition","parameters":{"id":7057,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7054,"mutability":"mutable","name":"operator","nameLocation":"2490:8:23","nodeType":"VariableDeclaration","scope":7059,"src":"2482:16:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7053,"name":"address","nodeType":"ElementaryTypeName","src":"2482:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7056,"mutability":"mutable","name":"approved","nameLocation":"2505:8:23","nodeType":"VariableDeclaration","scope":7059,"src":"2500:13:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7055,"name":"bool","nodeType":"ElementaryTypeName","src":"2500:4:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2481:33:23"},"returnParameters":{"id":7058,"nodeType":"ParameterList","parameters":[],"src":"2523:0:23"},"scope":7100,"src":"2455:69:23","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":7060,"nodeType":"StructuredDocumentation","src":"2530:135:23","text":" @dev Returns true if `operator` is approved to transfer ``account``'s tokens.\n See {setApprovalForAll}."},"functionSelector":"e985e9c5","id":7069,"implemented":false,"kind":"function","modifiers":[],"name":"isApprovedForAll","nameLocation":"2679:16:23","nodeType":"FunctionDefinition","parameters":{"id":7065,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7062,"mutability":"mutable","name":"account","nameLocation":"2704:7:23","nodeType":"VariableDeclaration","scope":7069,"src":"2696:15:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7061,"name":"address","nodeType":"ElementaryTypeName","src":"2696:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7064,"mutability":"mutable","name":"operator","nameLocation":"2721:8:23","nodeType":"VariableDeclaration","scope":7069,"src":"2713:16:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7063,"name":"address","nodeType":"ElementaryTypeName","src":"2713:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2695:35:23"},"returnParameters":{"id":7068,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7067,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7069,"src":"2754:4:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7066,"name":"bool","nodeType":"ElementaryTypeName","src":"2754:4:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2753:6:23"},"scope":7100,"src":"2670:90:23","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":7070,"nodeType":"StructuredDocumentation","src":"2766:556:23","text":" @dev Transfers `amount` tokens of token type `id` from `from` to `to`.\n Emits a {TransferSingle} event.\n Requirements:\n - `to` cannot be the zero address.\n - If the caller is not `from`, it must have been approved to spend ``from``'s tokens via {setApprovalForAll}.\n - `from` must have a balance of tokens of type `id` of at least `amount`.\n - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the\n acceptance magic value."},"functionSelector":"f242432a","id":7083,"implemented":false,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"3336:16:23","nodeType":"FunctionDefinition","parameters":{"id":7081,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7072,"mutability":"mutable","name":"from","nameLocation":"3361:4:23","nodeType":"VariableDeclaration","scope":7083,"src":"3353:12:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7071,"name":"address","nodeType":"ElementaryTypeName","src":"3353:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7074,"mutability":"mutable","name":"to","nameLocation":"3375:2:23","nodeType":"VariableDeclaration","scope":7083,"src":"3367:10:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7073,"name":"address","nodeType":"ElementaryTypeName","src":"3367:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7076,"mutability":"mutable","name":"id","nameLocation":"3387:2:23","nodeType":"VariableDeclaration","scope":7083,"src":"3379:10:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7075,"name":"uint256","nodeType":"ElementaryTypeName","src":"3379:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7078,"mutability":"mutable","name":"amount","nameLocation":"3399:6:23","nodeType":"VariableDeclaration","scope":7083,"src":"3391:14:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7077,"name":"uint256","nodeType":"ElementaryTypeName","src":"3391:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7080,"mutability":"mutable","name":"data","nameLocation":"3422:4:23","nodeType":"VariableDeclaration","scope":7083,"src":"3407:19:23","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":7079,"name":"bytes","nodeType":"ElementaryTypeName","src":"3407:5:23","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3352:75:23"},"returnParameters":{"id":7082,"nodeType":"ParameterList","parameters":[],"src":"3436:0:23"},"scope":7100,"src":"3327:110:23","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":7084,"nodeType":"StructuredDocumentation","src":"3443:390:23","text":" @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}.\n Emits a {TransferBatch} event.\n Requirements:\n - `ids` and `amounts` must have the same length.\n - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the\n acceptance magic value."},"functionSelector":"2eb2c2d6","id":7099,"implemented":false,"kind":"function","modifiers":[],"name":"safeBatchTransferFrom","nameLocation":"3847:21:23","nodeType":"FunctionDefinition","parameters":{"id":7097,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7086,"mutability":"mutable","name":"from","nameLocation":"3886:4:23","nodeType":"VariableDeclaration","scope":7099,"src":"3878:12:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7085,"name":"address","nodeType":"ElementaryTypeName","src":"3878:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7088,"mutability":"mutable","name":"to","nameLocation":"3908:2:23","nodeType":"VariableDeclaration","scope":7099,"src":"3900:10:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7087,"name":"address","nodeType":"ElementaryTypeName","src":"3900:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7091,"mutability":"mutable","name":"ids","nameLocation":"3939:3:23","nodeType":"VariableDeclaration","scope":7099,"src":"3920:22:23","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":7089,"name":"uint256","nodeType":"ElementaryTypeName","src":"3920:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7090,"nodeType":"ArrayTypeName","src":"3920:9:23","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":7094,"mutability":"mutable","name":"amounts","nameLocation":"3971:7:23","nodeType":"VariableDeclaration","scope":7099,"src":"3952:26:23","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":7092,"name":"uint256","nodeType":"ElementaryTypeName","src":"3952:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7093,"nodeType":"ArrayTypeName","src":"3952:9:23","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":7096,"mutability":"mutable","name":"data","nameLocation":"4003:4:23","nodeType":"VariableDeclaration","scope":7099,"src":"3988:19:23","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":7095,"name":"bytes","nodeType":"ElementaryTypeName","src":"3988:5:23","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3868:145:23"},"returnParameters":{"id":7098,"nodeType":"ParameterList","parameters":[],"src":"4022:0:23"},"scope":7100,"src":"3838:185:23","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":7101,"src":"350:3675:23","usedErrors":[]}],"src":"110:3916:23"},"id":23},"@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol","exportedSymbols":{"IERC1155Receiver":[7141],"IERC165":[9743]},"id":7142,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":7102,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"118:23:24"},{"absolutePath":"@openzeppelin/contracts/utils/introspection/IERC165.sol","file":"../../utils/introspection/IERC165.sol","id":7103,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7142,"sourceUnit":9744,"src":"143:47:24","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":7105,"name":"IERC165","nameLocations":["262:7:24"],"nodeType":"IdentifierPath","referencedDeclaration":9743,"src":"262:7:24"},"id":7106,"nodeType":"InheritanceSpecifier","src":"262:7:24"}],"canonicalName":"IERC1155Receiver","contractDependencies":[],"contractKind":"interface","documentation":{"id":7104,"nodeType":"StructuredDocumentation","src":"192:39:24","text":" @dev _Available since v3.1._"},"fullyImplemented":false,"id":7141,"linearizedBaseContracts":[7141,9743],"name":"IERC1155Receiver","nameLocation":"242:16:24","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":7107,"nodeType":"StructuredDocumentation","src":"276:826:24","text":" @dev Handles the receipt of a single ERC1155 token type. This function is\n called at the end of a `safeTransferFrom` after the balance has been updated.\n NOTE: To accept the transfer, this must return\n `bytes4(keccak256(\"onERC1155Received(address,address,uint256,uint256,bytes)\"))`\n (i.e. 0xf23a6e61, or its own function selector).\n @param operator The address which initiated the transfer (i.e. msg.sender)\n @param from The address which previously owned the token\n @param id The ID of the token being transferred\n @param value The amount of tokens being transferred\n @param data Additional data with no specified format\n @return `bytes4(keccak256(\"onERC1155Received(address,address,uint256,uint256,bytes)\"))` if transfer is allowed"},"functionSelector":"f23a6e61","id":7122,"implemented":false,"kind":"function","modifiers":[],"name":"onERC1155Received","nameLocation":"1116:17:24","nodeType":"FunctionDefinition","parameters":{"id":7118,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7109,"mutability":"mutable","name":"operator","nameLocation":"1151:8:24","nodeType":"VariableDeclaration","scope":7122,"src":"1143:16:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7108,"name":"address","nodeType":"ElementaryTypeName","src":"1143:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7111,"mutability":"mutable","name":"from","nameLocation":"1177:4:24","nodeType":"VariableDeclaration","scope":7122,"src":"1169:12:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7110,"name":"address","nodeType":"ElementaryTypeName","src":"1169:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7113,"mutability":"mutable","name":"id","nameLocation":"1199:2:24","nodeType":"VariableDeclaration","scope":7122,"src":"1191:10:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7112,"name":"uint256","nodeType":"ElementaryTypeName","src":"1191:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7115,"mutability":"mutable","name":"value","nameLocation":"1219:5:24","nodeType":"VariableDeclaration","scope":7122,"src":"1211:13:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7114,"name":"uint256","nodeType":"ElementaryTypeName","src":"1211:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7117,"mutability":"mutable","name":"data","nameLocation":"1249:4:24","nodeType":"VariableDeclaration","scope":7122,"src":"1234:19:24","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":7116,"name":"bytes","nodeType":"ElementaryTypeName","src":"1234:5:24","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1133:126:24"},"returnParameters":{"id":7121,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7120,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7122,"src":"1278:6:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":7119,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1278:6:24","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"1277:8:24"},"scope":7141,"src":"1107:179:24","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":7123,"nodeType":"StructuredDocumentation","src":"1292:994:24","text":" @dev Handles the receipt of a multiple ERC1155 token types. This function\n is called at the end of a `safeBatchTransferFrom` after the balances have\n been updated.\n NOTE: To accept the transfer(s), this must return\n `bytes4(keccak256(\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\"))`\n (i.e. 0xbc197c81, or its own function selector).\n @param operator The address which initiated the batch transfer (i.e. msg.sender)\n @param from The address which previously owned the token\n @param ids An array containing ids of each token being transferred (order and length must match values array)\n @param values An array containing amounts of each token being transferred (order and length must match ids array)\n @param data Additional data with no specified format\n @return `bytes4(keccak256(\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\"))` if transfer is allowed"},"functionSelector":"bc197c81","id":7140,"implemented":false,"kind":"function","modifiers":[],"name":"onERC1155BatchReceived","nameLocation":"2300:22:24","nodeType":"FunctionDefinition","parameters":{"id":7136,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7125,"mutability":"mutable","name":"operator","nameLocation":"2340:8:24","nodeType":"VariableDeclaration","scope":7140,"src":"2332:16:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7124,"name":"address","nodeType":"ElementaryTypeName","src":"2332:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7127,"mutability":"mutable","name":"from","nameLocation":"2366:4:24","nodeType":"VariableDeclaration","scope":7140,"src":"2358:12:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7126,"name":"address","nodeType":"ElementaryTypeName","src":"2358:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7130,"mutability":"mutable","name":"ids","nameLocation":"2399:3:24","nodeType":"VariableDeclaration","scope":7140,"src":"2380:22:24","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":7128,"name":"uint256","nodeType":"ElementaryTypeName","src":"2380:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7129,"nodeType":"ArrayTypeName","src":"2380:9:24","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":7133,"mutability":"mutable","name":"values","nameLocation":"2431:6:24","nodeType":"VariableDeclaration","scope":7140,"src":"2412:25:24","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":7131,"name":"uint256","nodeType":"ElementaryTypeName","src":"2412:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7132,"nodeType":"ArrayTypeName","src":"2412:9:24","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":7135,"mutability":"mutable","name":"data","nameLocation":"2462:4:24","nodeType":"VariableDeclaration","scope":7140,"src":"2447:19:24","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":7134,"name":"bytes","nodeType":"ElementaryTypeName","src":"2447:5:24","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2322:150:24"},"returnParameters":{"id":7139,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7138,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7140,"src":"2491:6:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":7137,"name":"bytes4","nodeType":"ElementaryTypeName","src":"2491:6:24","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"2490:8:24"},"scope":7141,"src":"2291:208:24","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":7142,"src":"232:2269:24","usedErrors":[]}],"src":"118:2384:24"},"id":24},"@openzeppelin/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol","exportedSymbols":{"IERC1155":[7100],"IERC1155MetadataURI":[7156],"IERC165":[9743]},"id":7157,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":7143,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"117:23:25"},{"absolutePath":"@openzeppelin/contracts/token/ERC1155/IERC1155.sol","file":"../IERC1155.sol","id":7144,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7157,"sourceUnit":7101,"src":"142:25:25","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":7146,"name":"IERC1155","nameLocations":["397:8:25"],"nodeType":"IdentifierPath","referencedDeclaration":7100,"src":"397:8:25"},"id":7147,"nodeType":"InheritanceSpecifier","src":"397:8:25"}],"canonicalName":"IERC1155MetadataURI","contractDependencies":[],"contractKind":"interface","documentation":{"id":7145,"nodeType":"StructuredDocumentation","src":"169:194:25","text":" @dev Interface of the optional ERC1155MetadataExtension interface, as defined\n in the https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[EIP].\n _Available since v3.1._"},"fullyImplemented":false,"id":7156,"linearizedBaseContracts":[7156,7100,9743],"name":"IERC1155MetadataURI","nameLocation":"374:19:25","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":7148,"nodeType":"StructuredDocumentation","src":"412:192:25","text":" @dev Returns the URI for token type `id`.\n If the `\\{id\\}` substring is present in the URI, it must be replaced by\n clients with the actual token type ID."},"functionSelector":"0e89341c","id":7155,"implemented":false,"kind":"function","modifiers":[],"name":"uri","nameLocation":"618:3:25","nodeType":"FunctionDefinition","parameters":{"id":7151,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7150,"mutability":"mutable","name":"id","nameLocation":"630:2:25","nodeType":"VariableDeclaration","scope":7155,"src":"622:10:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7149,"name":"uint256","nodeType":"ElementaryTypeName","src":"622:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"621:12:25"},"returnParameters":{"id":7154,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7153,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7155,"src":"657:13:25","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":7152,"name":"string","nodeType":"ElementaryTypeName","src":"657:6:25","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"656:15:25"},"scope":7156,"src":"609:63:25","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":7157,"src":"364:310:25","usedErrors":[]}],"src":"117:558:25"},"id":25},"@openzeppelin/contracts/token/ERC20/ERC20.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC20/ERC20.sol","exportedSymbols":{"Context":[9294],"ERC20":[7743],"IERC20":[7821],"IERC20Metadata":[7846]},"id":7744,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":7158,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"105:23:26"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"./IERC20.sol","id":7159,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7744,"sourceUnit":7822,"src":"130:22:26","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol","file":"./extensions/IERC20Metadata.sol","id":7160,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7744,"sourceUnit":7847,"src":"153:41:26","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Context.sol","file":"../../utils/Context.sol","id":7161,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7744,"sourceUnit":9295,"src":"195:33:26","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":7163,"name":"Context","nameLocations":["1550:7:26"],"nodeType":"IdentifierPath","referencedDeclaration":9294,"src":"1550:7:26"},"id":7164,"nodeType":"InheritanceSpecifier","src":"1550:7:26"},{"baseName":{"id":7165,"name":"IERC20","nameLocations":["1559:6:26"],"nodeType":"IdentifierPath","referencedDeclaration":7821,"src":"1559:6:26"},"id":7166,"nodeType":"InheritanceSpecifier","src":"1559:6:26"},{"baseName":{"id":7167,"name":"IERC20Metadata","nameLocations":["1567:14:26"],"nodeType":"IdentifierPath","referencedDeclaration":7846,"src":"1567:14:26"},"id":7168,"nodeType":"InheritanceSpecifier","src":"1567:14:26"}],"canonicalName":"ERC20","contractDependencies":[],"contractKind":"contract","documentation":{"id":7162,"nodeType":"StructuredDocumentation","src":"230:1301:26","text":" @dev Implementation of the {IERC20} interface.\n This implementation is agnostic to the way tokens are created. This means\n that a supply mechanism has to be added in a derived contract using {_mint}.\n For a generic mechanism see {ERC20PresetMinterPauser}.\n TIP: For a detailed writeup see our guide\n https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How\n to implement supply mechanisms].\n The default value of {decimals} is 18. To change this, you should override\n this function so it returns a different value.\n We have followed general OpenZeppelin Contracts guidelines: functions revert\n instead returning `false` on failure. This behavior is nonetheless\n conventional and does not conflict with the expectations of ERC20\n applications.\n Additionally, an {Approval} event is emitted on calls to {transferFrom}.\n This allows applications to reconstruct the allowance for all accounts just\n by listening to said events. Other implementations of the EIP may not emit\n these events, as it isn't required by the specification.\n Finally, the non-standard {decreaseAllowance} and {increaseAllowance}\n functions have been added to mitigate the well-known issues around setting\n allowances. See {IERC20-approve}."},"fullyImplemented":true,"id":7743,"linearizedBaseContracts":[7743,7846,7821,9294],"name":"ERC20","nameLocation":"1541:5:26","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":7172,"mutability":"mutable","name":"_balances","nameLocation":"1624:9:26","nodeType":"VariableDeclaration","scope":7743,"src":"1588:45:26","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":7171,"keyType":{"id":7169,"name":"address","nodeType":"ElementaryTypeName","src":"1596:7:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1588:27:26","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueType":{"id":7170,"name":"uint256","nodeType":"ElementaryTypeName","src":"1607:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"private"},{"constant":false,"id":7178,"mutability":"mutable","name":"_allowances","nameLocation":"1696:11:26","nodeType":"VariableDeclaration","scope":7743,"src":"1640:67:26","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"typeName":{"id":7177,"keyType":{"id":7173,"name":"address","nodeType":"ElementaryTypeName","src":"1648:7:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1640:47:26","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"valueType":{"id":7176,"keyType":{"id":7174,"name":"address","nodeType":"ElementaryTypeName","src":"1667:7:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1659:27:26","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueType":{"id":7175,"name":"uint256","nodeType":"ElementaryTypeName","src":"1678:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}},"visibility":"private"},{"constant":false,"id":7180,"mutability":"mutable","name":"_totalSupply","nameLocation":"1730:12:26","nodeType":"VariableDeclaration","scope":7743,"src":"1714:28:26","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7179,"name":"uint256","nodeType":"ElementaryTypeName","src":"1714:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"constant":false,"id":7182,"mutability":"mutable","name":"_name","nameLocation":"1764:5:26","nodeType":"VariableDeclaration","scope":7743,"src":"1749:20:26","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":7181,"name":"string","nodeType":"ElementaryTypeName","src":"1749:6:26","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"constant":false,"id":7184,"mutability":"mutable","name":"_symbol","nameLocation":"1790:7:26","nodeType":"VariableDeclaration","scope":7743,"src":"1775:22:26","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":7183,"name":"string","nodeType":"ElementaryTypeName","src":"1775:6:26","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"body":{"id":7200,"nodeType":"Block","src":"2036:57:26","statements":[{"expression":{"id":7194,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7192,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7182,"src":"2046:5:26","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":7193,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7187,"src":"2054:5:26","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"2046:13:26","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":7195,"nodeType":"ExpressionStatement","src":"2046:13:26"},{"expression":{"id":7198,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7196,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7184,"src":"2069:7:26","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":7197,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7189,"src":"2079:7:26","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"2069:17:26","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":7199,"nodeType":"ExpressionStatement","src":"2069:17:26"}]},"documentation":{"id":7185,"nodeType":"StructuredDocumentation","src":"1804:171:26","text":" @dev Sets the values for {name} and {symbol}.\n All two of these values are immutable: they can only be set once during\n construction."},"id":7201,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":7190,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7187,"mutability":"mutable","name":"name_","nameLocation":"2006:5:26","nodeType":"VariableDeclaration","scope":7201,"src":"1992:19:26","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":7186,"name":"string","nodeType":"ElementaryTypeName","src":"1992:6:26","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":7189,"mutability":"mutable","name":"symbol_","nameLocation":"2027:7:26","nodeType":"VariableDeclaration","scope":7201,"src":"2013:21:26","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":7188,"name":"string","nodeType":"ElementaryTypeName","src":"2013:6:26","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1991:44:26"},"returnParameters":{"id":7191,"nodeType":"ParameterList","parameters":[],"src":"2036:0:26"},"scope":7743,"src":"1980:113:26","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[7833],"body":{"id":7210,"nodeType":"Block","src":"2227:29:26","statements":[{"expression":{"id":7208,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7182,"src":"2244:5:26","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":7207,"id":7209,"nodeType":"Return","src":"2237:12:26"}]},"documentation":{"id":7202,"nodeType":"StructuredDocumentation","src":"2099:54:26","text":" @dev Returns the name of the token."},"functionSelector":"06fdde03","id":7211,"implemented":true,"kind":"function","modifiers":[],"name":"name","nameLocation":"2167:4:26","nodeType":"FunctionDefinition","overrides":{"id":7204,"nodeType":"OverrideSpecifier","overrides":[],"src":"2194:8:26"},"parameters":{"id":7203,"nodeType":"ParameterList","parameters":[],"src":"2171:2:26"},"returnParameters":{"id":7207,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7206,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7211,"src":"2212:13:26","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":7205,"name":"string","nodeType":"ElementaryTypeName","src":"2212:6:26","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2211:15:26"},"scope":7743,"src":"2158:98:26","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[7839],"body":{"id":7220,"nodeType":"Block","src":"2440:31:26","statements":[{"expression":{"id":7218,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7184,"src":"2457:7:26","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":7217,"id":7219,"nodeType":"Return","src":"2450:14:26"}]},"documentation":{"id":7212,"nodeType":"StructuredDocumentation","src":"2262:102:26","text":" @dev Returns the symbol of the token, usually a shorter version of the\n name."},"functionSelector":"95d89b41","id":7221,"implemented":true,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"2378:6:26","nodeType":"FunctionDefinition","overrides":{"id":7214,"nodeType":"OverrideSpecifier","overrides":[],"src":"2407:8:26"},"parameters":{"id":7213,"nodeType":"ParameterList","parameters":[],"src":"2384:2:26"},"returnParameters":{"id":7217,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7216,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7221,"src":"2425:13:26","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":7215,"name":"string","nodeType":"ElementaryTypeName","src":"2425:6:26","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2424:15:26"},"scope":7743,"src":"2369:102:26","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[7845],"body":{"id":7230,"nodeType":"Block","src":"3169:26:26","statements":[{"expression":{"hexValue":"3138","id":7228,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3186:2:26","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"},"functionReturnParameters":7227,"id":7229,"nodeType":"Return","src":"3179:9:26"}]},"documentation":{"id":7222,"nodeType":"StructuredDocumentation","src":"2477:622:26","text":" @dev Returns the number of decimals used to get its user representation.\n For example, if `decimals` equals `2`, a balance of `505` tokens should\n be displayed to a user as `5.05` (`505 / 10 ** 2`).\n Tokens usually opt for a value of 18, imitating the relationship between\n Ether and Wei. This is the default value returned by this function, unless\n it's overridden.\n NOTE: This information is only used for _display_ purposes: it in\n no way affects any of the arithmetic of the contract, including\n {IERC20-balanceOf} and {IERC20-transfer}."},"functionSelector":"313ce567","id":7231,"implemented":true,"kind":"function","modifiers":[],"name":"decimals","nameLocation":"3113:8:26","nodeType":"FunctionDefinition","overrides":{"id":7224,"nodeType":"OverrideSpecifier","overrides":[],"src":"3144:8:26"},"parameters":{"id":7223,"nodeType":"ParameterList","parameters":[],"src":"3121:2:26"},"returnParameters":{"id":7227,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7226,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7231,"src":"3162:5:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":7225,"name":"uint8","nodeType":"ElementaryTypeName","src":"3162:5:26","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"3161:7:26"},"scope":7743,"src":"3104:91:26","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[7770],"body":{"id":7240,"nodeType":"Block","src":"3325:36:26","statements":[{"expression":{"id":7238,"name":"_totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7180,"src":"3342:12:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7237,"id":7239,"nodeType":"Return","src":"3335:19:26"}]},"documentation":{"id":7232,"nodeType":"StructuredDocumentation","src":"3201:49:26","text":" @dev See {IERC20-totalSupply}."},"functionSelector":"18160ddd","id":7241,"implemented":true,"kind":"function","modifiers":[],"name":"totalSupply","nameLocation":"3264:11:26","nodeType":"FunctionDefinition","overrides":{"id":7234,"nodeType":"OverrideSpecifier","overrides":[],"src":"3298:8:26"},"parameters":{"id":7233,"nodeType":"ParameterList","parameters":[],"src":"3275:2:26"},"returnParameters":{"id":7237,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7236,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7241,"src":"3316:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7235,"name":"uint256","nodeType":"ElementaryTypeName","src":"3316:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3315:9:26"},"scope":7743,"src":"3255:106:26","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[7778],"body":{"id":7254,"nodeType":"Block","src":"3502:42:26","statements":[{"expression":{"baseExpression":{"id":7250,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7172,"src":"3519:9:26","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":7252,"indexExpression":{"id":7251,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7244,"src":"3529:7:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3519:18:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7249,"id":7253,"nodeType":"Return","src":"3512:25:26"}]},"documentation":{"id":7242,"nodeType":"StructuredDocumentation","src":"3367:47:26","text":" @dev See {IERC20-balanceOf}."},"functionSelector":"70a08231","id":7255,"implemented":true,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"3428:9:26","nodeType":"FunctionDefinition","overrides":{"id":7246,"nodeType":"OverrideSpecifier","overrides":[],"src":"3475:8:26"},"parameters":{"id":7245,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7244,"mutability":"mutable","name":"account","nameLocation":"3446:7:26","nodeType":"VariableDeclaration","scope":7255,"src":"3438:15:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7243,"name":"address","nodeType":"ElementaryTypeName","src":"3438:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3437:17:26"},"returnParameters":{"id":7249,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7248,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7255,"src":"3493:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7247,"name":"uint256","nodeType":"ElementaryTypeName","src":"3493:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3492:9:26"},"scope":7743,"src":"3419:125:26","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[7788],"body":{"id":7279,"nodeType":"Block","src":"3825:104:26","statements":[{"assignments":[7267],"declarations":[{"constant":false,"id":7267,"mutability":"mutable","name":"owner","nameLocation":"3843:5:26","nodeType":"VariableDeclaration","scope":7279,"src":"3835:13:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7266,"name":"address","nodeType":"ElementaryTypeName","src":"3835:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":7270,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":7268,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9276,"src":"3851:10:26","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":7269,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3851:12:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"3835:28:26"},{"expression":{"arguments":[{"id":7272,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7267,"src":"3883:5:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7273,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7258,"src":"3890:2:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7274,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7260,"src":"3894:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7271,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7503,"src":"3873:9:26","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":7275,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3873:28:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7276,"nodeType":"ExpressionStatement","src":"3873:28:26"},{"expression":{"hexValue":"74727565","id":7277,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3918:4:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":7265,"id":7278,"nodeType":"Return","src":"3911:11:26"}]},"documentation":{"id":7256,"nodeType":"StructuredDocumentation","src":"3550:185:26","text":" @dev See {IERC20-transfer}.\n Requirements:\n - `to` cannot be the zero address.\n - the caller must have a balance of at least `amount`."},"functionSelector":"a9059cbb","id":7280,"implemented":true,"kind":"function","modifiers":[],"name":"transfer","nameLocation":"3749:8:26","nodeType":"FunctionDefinition","overrides":{"id":7262,"nodeType":"OverrideSpecifier","overrides":[],"src":"3801:8:26"},"parameters":{"id":7261,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7258,"mutability":"mutable","name":"to","nameLocation":"3766:2:26","nodeType":"VariableDeclaration","scope":7280,"src":"3758:10:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7257,"name":"address","nodeType":"ElementaryTypeName","src":"3758:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7260,"mutability":"mutable","name":"amount","nameLocation":"3778:6:26","nodeType":"VariableDeclaration","scope":7280,"src":"3770:14:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7259,"name":"uint256","nodeType":"ElementaryTypeName","src":"3770:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3757:28:26"},"returnParameters":{"id":7265,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7264,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7280,"src":"3819:4:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7263,"name":"bool","nodeType":"ElementaryTypeName","src":"3819:4:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3818:6:26"},"scope":7743,"src":"3740:189:26","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[7798],"body":{"id":7297,"nodeType":"Block","src":"4085:51:26","statements":[{"expression":{"baseExpression":{"baseExpression":{"id":7291,"name":"_allowances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7178,"src":"4102:11:26","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":7293,"indexExpression":{"id":7292,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7283,"src":"4114:5:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4102:18:26","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":7295,"indexExpression":{"id":7294,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7285,"src":"4121:7:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4102:27:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7290,"id":7296,"nodeType":"Return","src":"4095:34:26"}]},"documentation":{"id":7281,"nodeType":"StructuredDocumentation","src":"3935:47:26","text":" @dev See {IERC20-allowance}."},"functionSelector":"dd62ed3e","id":7298,"implemented":true,"kind":"function","modifiers":[],"name":"allowance","nameLocation":"3996:9:26","nodeType":"FunctionDefinition","overrides":{"id":7287,"nodeType":"OverrideSpecifier","overrides":[],"src":"4058:8:26"},"parameters":{"id":7286,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7283,"mutability":"mutable","name":"owner","nameLocation":"4014:5:26","nodeType":"VariableDeclaration","scope":7298,"src":"4006:13:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7282,"name":"address","nodeType":"ElementaryTypeName","src":"4006:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7285,"mutability":"mutable","name":"spender","nameLocation":"4029:7:26","nodeType":"VariableDeclaration","scope":7298,"src":"4021:15:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7284,"name":"address","nodeType":"ElementaryTypeName","src":"4021:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4005:32:26"},"returnParameters":{"id":7290,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7289,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7298,"src":"4076:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7288,"name":"uint256","nodeType":"ElementaryTypeName","src":"4076:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4075:9:26"},"scope":7743,"src":"3987:149:26","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[7808],"body":{"id":7322,"nodeType":"Block","src":"4533:108:26","statements":[{"assignments":[7310],"declarations":[{"constant":false,"id":7310,"mutability":"mutable","name":"owner","nameLocation":"4551:5:26","nodeType":"VariableDeclaration","scope":7322,"src":"4543:13:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7309,"name":"address","nodeType":"ElementaryTypeName","src":"4543:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":7313,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":7311,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9276,"src":"4559:10:26","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":7312,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4559:12:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"4543:28:26"},{"expression":{"arguments":[{"id":7315,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7310,"src":"4590:5:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7316,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7301,"src":"4597:7:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7317,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7303,"src":"4606:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7314,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7677,"src":"4581:8:26","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":7318,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4581:32:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7319,"nodeType":"ExpressionStatement","src":"4581:32:26"},{"expression":{"hexValue":"74727565","id":7320,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4630:4:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":7308,"id":7321,"nodeType":"Return","src":"4623:11:26"}]},"documentation":{"id":7299,"nodeType":"StructuredDocumentation","src":"4142:297:26","text":" @dev See {IERC20-approve}.\n NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on\n `transferFrom`. This is semantically equivalent to an infinite approval.\n Requirements:\n - `spender` cannot be the zero address."},"functionSelector":"095ea7b3","id":7323,"implemented":true,"kind":"function","modifiers":[],"name":"approve","nameLocation":"4453:7:26","nodeType":"FunctionDefinition","overrides":{"id":7305,"nodeType":"OverrideSpecifier","overrides":[],"src":"4509:8:26"},"parameters":{"id":7304,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7301,"mutability":"mutable","name":"spender","nameLocation":"4469:7:26","nodeType":"VariableDeclaration","scope":7323,"src":"4461:15:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7300,"name":"address","nodeType":"ElementaryTypeName","src":"4461:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7303,"mutability":"mutable","name":"amount","nameLocation":"4486:6:26","nodeType":"VariableDeclaration","scope":7323,"src":"4478:14:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7302,"name":"uint256","nodeType":"ElementaryTypeName","src":"4478:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4460:33:26"},"returnParameters":{"id":7308,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7307,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7323,"src":"4527:4:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7306,"name":"bool","nodeType":"ElementaryTypeName","src":"4527:4:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4526:6:26"},"scope":7743,"src":"4444:197:26","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[7820],"body":{"id":7355,"nodeType":"Block","src":"5306:153:26","statements":[{"assignments":[7337],"declarations":[{"constant":false,"id":7337,"mutability":"mutable","name":"spender","nameLocation":"5324:7:26","nodeType":"VariableDeclaration","scope":7355,"src":"5316:15:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7336,"name":"address","nodeType":"ElementaryTypeName","src":"5316:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":7340,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":7338,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9276,"src":"5334:10:26","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":7339,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5334:12:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"5316:30:26"},{"expression":{"arguments":[{"id":7342,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7326,"src":"5372:4:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7343,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7337,"src":"5378:7:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7344,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7330,"src":"5387:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7341,"name":"_spendAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7720,"src":"5356:15:26","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":7345,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5356:38:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7346,"nodeType":"ExpressionStatement","src":"5356:38:26"},{"expression":{"arguments":[{"id":7348,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7326,"src":"5414:4:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7349,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7328,"src":"5420:2:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7350,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7330,"src":"5424:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7347,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7503,"src":"5404:9:26","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":7351,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5404:27:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7352,"nodeType":"ExpressionStatement","src":"5404:27:26"},{"expression":{"hexValue":"74727565","id":7353,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5448:4:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":7335,"id":7354,"nodeType":"Return","src":"5441:11:26"}]},"documentation":{"id":7324,"nodeType":"StructuredDocumentation","src":"4647:551:26","text":" @dev See {IERC20-transferFrom}.\n Emits an {Approval} event indicating the updated allowance. This is not\n required by the EIP. See the note at the beginning of {ERC20}.\n NOTE: Does not update the allowance if the current allowance\n is the maximum `uint256`.\n Requirements:\n - `from` and `to` cannot be the zero address.\n - `from` must have a balance of at least `amount`.\n - the caller must have allowance for ``from``'s tokens of at least\n `amount`."},"functionSelector":"23b872dd","id":7356,"implemented":true,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"5212:12:26","nodeType":"FunctionDefinition","overrides":{"id":7332,"nodeType":"OverrideSpecifier","overrides":[],"src":"5282:8:26"},"parameters":{"id":7331,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7326,"mutability":"mutable","name":"from","nameLocation":"5233:4:26","nodeType":"VariableDeclaration","scope":7356,"src":"5225:12:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7325,"name":"address","nodeType":"ElementaryTypeName","src":"5225:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7328,"mutability":"mutable","name":"to","nameLocation":"5247:2:26","nodeType":"VariableDeclaration","scope":7356,"src":"5239:10:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7327,"name":"address","nodeType":"ElementaryTypeName","src":"5239:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7330,"mutability":"mutable","name":"amount","nameLocation":"5259:6:26","nodeType":"VariableDeclaration","scope":7356,"src":"5251:14:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7329,"name":"uint256","nodeType":"ElementaryTypeName","src":"5251:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5224:42:26"},"returnParameters":{"id":7335,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7334,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7356,"src":"5300:4:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7333,"name":"bool","nodeType":"ElementaryTypeName","src":"5300:4:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5299:6:26"},"scope":7743,"src":"5203:256:26","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":7384,"nodeType":"Block","src":"5948:140:26","statements":[{"assignments":[7367],"declarations":[{"constant":false,"id":7367,"mutability":"mutable","name":"owner","nameLocation":"5966:5:26","nodeType":"VariableDeclaration","scope":7384,"src":"5958:13:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7366,"name":"address","nodeType":"ElementaryTypeName","src":"5958:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":7370,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":7368,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9276,"src":"5974:10:26","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":7369,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5974:12:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"5958:28:26"},{"expression":{"arguments":[{"id":7372,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7367,"src":"6005:5:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7373,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7359,"src":"6012:7:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7379,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":7375,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7367,"src":"6031:5:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7376,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7359,"src":"6038:7:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":7374,"name":"allowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7298,"src":"6021:9:26","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view returns (uint256)"}},"id":7377,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6021:25:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":7378,"name":"addedValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7361,"src":"6049:10:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6021:38:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7371,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7677,"src":"5996:8:26","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":7380,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5996:64:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7381,"nodeType":"ExpressionStatement","src":"5996:64:26"},{"expression":{"hexValue":"74727565","id":7382,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6077:4:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":7365,"id":7383,"nodeType":"Return","src":"6070:11:26"}]},"documentation":{"id":7357,"nodeType":"StructuredDocumentation","src":"5465:384:26","text":" @dev Atomically increases the allowance granted to `spender` by the caller.\n This is an alternative to {approve} that can be used as a mitigation for\n problems described in {IERC20-approve}.\n Emits an {Approval} event indicating the updated allowance.\n Requirements:\n - `spender` cannot be the zero address."},"functionSelector":"39509351","id":7385,"implemented":true,"kind":"function","modifiers":[],"name":"increaseAllowance","nameLocation":"5863:17:26","nodeType":"FunctionDefinition","parameters":{"id":7362,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7359,"mutability":"mutable","name":"spender","nameLocation":"5889:7:26","nodeType":"VariableDeclaration","scope":7385,"src":"5881:15:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7358,"name":"address","nodeType":"ElementaryTypeName","src":"5881:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7361,"mutability":"mutable","name":"addedValue","nameLocation":"5906:10:26","nodeType":"VariableDeclaration","scope":7385,"src":"5898:18:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7360,"name":"uint256","nodeType":"ElementaryTypeName","src":"5898:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5880:37:26"},"returnParameters":{"id":7365,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7364,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7385,"src":"5942:4:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7363,"name":"bool","nodeType":"ElementaryTypeName","src":"5942:4:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5941:6:26"},"scope":7743,"src":"5854:234:26","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":7425,"nodeType":"Block","src":"6674:328:26","statements":[{"assignments":[7396],"declarations":[{"constant":false,"id":7396,"mutability":"mutable","name":"owner","nameLocation":"6692:5:26","nodeType":"VariableDeclaration","scope":7425,"src":"6684:13:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7395,"name":"address","nodeType":"ElementaryTypeName","src":"6684:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":7399,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":7397,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9276,"src":"6700:10:26","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":7398,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6700:12:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"6684:28:26"},{"assignments":[7401],"declarations":[{"constant":false,"id":7401,"mutability":"mutable","name":"currentAllowance","nameLocation":"6730:16:26","nodeType":"VariableDeclaration","scope":7425,"src":"6722:24:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7400,"name":"uint256","nodeType":"ElementaryTypeName","src":"6722:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7406,"initialValue":{"arguments":[{"id":7403,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7396,"src":"6759:5:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7404,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7388,"src":"6766:7:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":7402,"name":"allowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7298,"src":"6749:9:26","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view returns (uint256)"}},"id":7405,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6749:25:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6722:52:26"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7410,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7408,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7401,"src":"6792:16:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":7409,"name":"subtractedValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7390,"src":"6812:15:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6792:35:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f","id":7411,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6829:39:26","typeDescriptions":{"typeIdentifier":"t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8","typeString":"literal_string \"ERC20: decreased allowance below zero\""},"value":"ERC20: decreased allowance below zero"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8","typeString":"literal_string \"ERC20: decreased allowance below zero\""}],"id":7407,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"6784:7:26","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":7412,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6784:85:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7413,"nodeType":"ExpressionStatement","src":"6784:85:26"},{"id":7422,"nodeType":"UncheckedBlock","src":"6879:95:26","statements":[{"expression":{"arguments":[{"id":7415,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7396,"src":"6912:5:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7416,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7388,"src":"6919:7:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7419,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7417,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7401,"src":"6928:16:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":7418,"name":"subtractedValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7390,"src":"6947:15:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6928:34:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7414,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7677,"src":"6903:8:26","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":7420,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6903:60:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7421,"nodeType":"ExpressionStatement","src":"6903:60:26"}]},{"expression":{"hexValue":"74727565","id":7423,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6991:4:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":7394,"id":7424,"nodeType":"Return","src":"6984:11:26"}]},"documentation":{"id":7386,"nodeType":"StructuredDocumentation","src":"6094:476:26","text":" @dev Atomically decreases the allowance granted to `spender` by the caller.\n This is an alternative to {approve} that can be used as a mitigation for\n problems described in {IERC20-approve}.\n Emits an {Approval} event indicating the updated allowance.\n Requirements:\n - `spender` cannot be the zero address.\n - `spender` must have allowance for the caller of at least\n `subtractedValue`."},"functionSelector":"a457c2d7","id":7426,"implemented":true,"kind":"function","modifiers":[],"name":"decreaseAllowance","nameLocation":"6584:17:26","nodeType":"FunctionDefinition","parameters":{"id":7391,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7388,"mutability":"mutable","name":"spender","nameLocation":"6610:7:26","nodeType":"VariableDeclaration","scope":7426,"src":"6602:15:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7387,"name":"address","nodeType":"ElementaryTypeName","src":"6602:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7390,"mutability":"mutable","name":"subtractedValue","nameLocation":"6627:15:26","nodeType":"VariableDeclaration","scope":7426,"src":"6619:23:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7389,"name":"uint256","nodeType":"ElementaryTypeName","src":"6619:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6601:42:26"},"returnParameters":{"id":7394,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7393,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7426,"src":"6668:4:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7392,"name":"bool","nodeType":"ElementaryTypeName","src":"6668:4:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6667:6:26"},"scope":7743,"src":"6575:427:26","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":7502,"nodeType":"Block","src":"7534:710:26","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":7442,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7437,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7429,"src":"7552:4:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":7440,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7568:1:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":7439,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7560:7:26","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7438,"name":"address","nodeType":"ElementaryTypeName","src":"7560:7:26","typeDescriptions":{}}},"id":7441,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7560:10:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7552:18:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"45524332303a207472616e736665722066726f6d20746865207a65726f2061646472657373","id":7443,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7572:39:26","typeDescriptions":{"typeIdentifier":"t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea","typeString":"literal_string \"ERC20: transfer from the zero address\""},"value":"ERC20: transfer from the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea","typeString":"literal_string \"ERC20: transfer from the zero address\""}],"id":7436,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"7544:7:26","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":7444,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7544:68:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7445,"nodeType":"ExpressionStatement","src":"7544:68:26"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":7452,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7447,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7431,"src":"7630:2:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":7450,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7644:1:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":7449,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7636:7:26","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7448,"name":"address","nodeType":"ElementaryTypeName","src":"7636:7:26","typeDescriptions":{}}},"id":7451,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7636:10:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7630:16:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"45524332303a207472616e7366657220746f20746865207a65726f2061646472657373","id":7453,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7648:37:26","typeDescriptions":{"typeIdentifier":"t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f","typeString":"literal_string \"ERC20: transfer to the zero address\""},"value":"ERC20: transfer to the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f","typeString":"literal_string \"ERC20: transfer to the zero address\""}],"id":7446,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"7622:7:26","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":7454,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7622:64:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7455,"nodeType":"ExpressionStatement","src":"7622:64:26"},{"expression":{"arguments":[{"id":7457,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7429,"src":"7718:4:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7458,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7431,"src":"7724:2:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7459,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7433,"src":"7728:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7456,"name":"_beforeTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7731,"src":"7697:20:26","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":7460,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7697:38:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7461,"nodeType":"ExpressionStatement","src":"7697:38:26"},{"assignments":[7463],"declarations":[{"constant":false,"id":7463,"mutability":"mutable","name":"fromBalance","nameLocation":"7754:11:26","nodeType":"VariableDeclaration","scope":7502,"src":"7746:19:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7462,"name":"uint256","nodeType":"ElementaryTypeName","src":"7746:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7467,"initialValue":{"baseExpression":{"id":7464,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7172,"src":"7768:9:26","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":7466,"indexExpression":{"id":7465,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7429,"src":"7778:4:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7768:15:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7746:37:26"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7471,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7469,"name":"fromBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7463,"src":"7801:11:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":7470,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7433,"src":"7816:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7801:21:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365","id":7472,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7824:40:26","typeDescriptions":{"typeIdentifier":"t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6","typeString":"literal_string \"ERC20: transfer amount exceeds balance\""},"value":"ERC20: transfer amount exceeds balance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6","typeString":"literal_string \"ERC20: transfer amount exceeds balance\""}],"id":7468,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"7793:7:26","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":7473,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7793:72:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7474,"nodeType":"ExpressionStatement","src":"7793:72:26"},{"id":7489,"nodeType":"UncheckedBlock","src":"7875:273:26","statements":[{"expression":{"id":7481,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":7475,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7172,"src":"7899:9:26","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":7477,"indexExpression":{"id":7476,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7429,"src":"7909:4:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7899:15:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7480,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7478,"name":"fromBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7463,"src":"7917:11:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":7479,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7433,"src":"7931:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7917:20:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7899:38:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7482,"nodeType":"ExpressionStatement","src":"7899:38:26"},{"expression":{"id":7487,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":7483,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7172,"src":"8114:9:26","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":7485,"indexExpression":{"id":7484,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7431,"src":"8124:2:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"8114:13:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":7486,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7433,"src":"8131:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8114:23:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7488,"nodeType":"ExpressionStatement","src":"8114:23:26"}]},{"eventCall":{"arguments":[{"id":7491,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7429,"src":"8172:4:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7492,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7431,"src":"8178:2:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7493,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7433,"src":"8182:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7490,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7755,"src":"8163:8:26","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":7494,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8163:26:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7495,"nodeType":"EmitStatement","src":"8158:31:26"},{"expression":{"arguments":[{"id":7497,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7429,"src":"8220:4:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7498,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7431,"src":"8226:2:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7499,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7433,"src":"8230:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7496,"name":"_afterTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7742,"src":"8200:19:26","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":7500,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8200:37:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7501,"nodeType":"ExpressionStatement","src":"8200:37:26"}]},"documentation":{"id":7427,"nodeType":"StructuredDocumentation","src":"7008:443:26","text":" @dev Moves `amount` of tokens from `from` to `to`.\n This internal function is equivalent to {transfer}, and can be used to\n e.g. implement automatic token fees, slashing mechanisms, etc.\n Emits a {Transfer} event.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `from` must have a balance of at least `amount`."},"id":7503,"implemented":true,"kind":"function","modifiers":[],"name":"_transfer","nameLocation":"7465:9:26","nodeType":"FunctionDefinition","parameters":{"id":7434,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7429,"mutability":"mutable","name":"from","nameLocation":"7483:4:26","nodeType":"VariableDeclaration","scope":7503,"src":"7475:12:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7428,"name":"address","nodeType":"ElementaryTypeName","src":"7475:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7431,"mutability":"mutable","name":"to","nameLocation":"7497:2:26","nodeType":"VariableDeclaration","scope":7503,"src":"7489:10:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7430,"name":"address","nodeType":"ElementaryTypeName","src":"7489:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7433,"mutability":"mutable","name":"amount","nameLocation":"7509:6:26","nodeType":"VariableDeclaration","scope":7503,"src":"7501:14:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7432,"name":"uint256","nodeType":"ElementaryTypeName","src":"7501:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7474:42:26"},"returnParameters":{"id":7435,"nodeType":"ParameterList","parameters":[],"src":"7534:0:26"},"scope":7743,"src":"7456:788:26","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":7559,"nodeType":"Block","src":"8585:470:26","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":7517,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7512,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7506,"src":"8603:7:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":7515,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8622:1:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":7514,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8614:7:26","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7513,"name":"address","nodeType":"ElementaryTypeName","src":"8614:7:26","typeDescriptions":{}}},"id":7516,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8614:10:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"8603:21:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"45524332303a206d696e7420746f20746865207a65726f2061646472657373","id":7518,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8626:33:26","typeDescriptions":{"typeIdentifier":"t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e","typeString":"literal_string \"ERC20: mint to the zero address\""},"value":"ERC20: mint to the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e","typeString":"literal_string \"ERC20: mint to the zero address\""}],"id":7511,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"8595:7:26","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":7519,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8595:65:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7520,"nodeType":"ExpressionStatement","src":"8595:65:26"},{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":7524,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8700:1:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":7523,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8692:7:26","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7522,"name":"address","nodeType":"ElementaryTypeName","src":"8692:7:26","typeDescriptions":{}}},"id":7525,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8692:10:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7526,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7506,"src":"8704:7:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7527,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7508,"src":"8713:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7521,"name":"_beforeTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7731,"src":"8671:20:26","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":7528,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8671:49:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7529,"nodeType":"ExpressionStatement","src":"8671:49:26"},{"expression":{"id":7532,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7530,"name":"_totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7180,"src":"8731:12:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":7531,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7508,"src":"8747:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8731:22:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7533,"nodeType":"ExpressionStatement","src":"8731:22:26"},{"id":7540,"nodeType":"UncheckedBlock","src":"8763:175:26","statements":[{"expression":{"id":7538,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":7534,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7172,"src":"8899:9:26","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":7536,"indexExpression":{"id":7535,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7506,"src":"8909:7:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"8899:18:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":7537,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7508,"src":"8921:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8899:28:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7539,"nodeType":"ExpressionStatement","src":"8899:28:26"}]},{"eventCall":{"arguments":[{"arguments":[{"hexValue":"30","id":7544,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8969:1:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":7543,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8961:7:26","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7542,"name":"address","nodeType":"ElementaryTypeName","src":"8961:7:26","typeDescriptions":{}}},"id":7545,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8961:10:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7546,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7506,"src":"8973:7:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7547,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7508,"src":"8982:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7541,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7755,"src":"8952:8:26","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":7548,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8952:37:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7549,"nodeType":"EmitStatement","src":"8947:42:26"},{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":7553,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9028:1:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":7552,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9020:7:26","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7551,"name":"address","nodeType":"ElementaryTypeName","src":"9020:7:26","typeDescriptions":{}}},"id":7554,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9020:10:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7555,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7506,"src":"9032:7:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7556,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7508,"src":"9041:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7550,"name":"_afterTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7742,"src":"9000:19:26","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":7557,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9000:48:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7558,"nodeType":"ExpressionStatement","src":"9000:48:26"}]},"documentation":{"id":7504,"nodeType":"StructuredDocumentation","src":"8250:265:26","text":"@dev Creates `amount` tokens and assigns them to `account`, increasing\n the total supply.\n Emits a {Transfer} event with `from` set to the zero address.\n Requirements:\n - `account` cannot be the zero address."},"id":7560,"implemented":true,"kind":"function","modifiers":[],"name":"_mint","nameLocation":"8529:5:26","nodeType":"FunctionDefinition","parameters":{"id":7509,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7506,"mutability":"mutable","name":"account","nameLocation":"8543:7:26","nodeType":"VariableDeclaration","scope":7560,"src":"8535:15:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7505,"name":"address","nodeType":"ElementaryTypeName","src":"8535:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7508,"mutability":"mutable","name":"amount","nameLocation":"8560:6:26","nodeType":"VariableDeclaration","scope":7560,"src":"8552:14:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7507,"name":"uint256","nodeType":"ElementaryTypeName","src":"8552:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8534:33:26"},"returnParameters":{"id":7510,"nodeType":"ParameterList","parameters":[],"src":"8585:0:26"},"scope":7743,"src":"8520:535:26","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":7631,"nodeType":"Block","src":"9440:594:26","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":7574,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7569,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7563,"src":"9458:7:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":7572,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9477:1:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":7571,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9469:7:26","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7570,"name":"address","nodeType":"ElementaryTypeName","src":"9469:7:26","typeDescriptions":{}}},"id":7573,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9469:10:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9458:21:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"45524332303a206275726e2066726f6d20746865207a65726f2061646472657373","id":7575,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9481:35:26","typeDescriptions":{"typeIdentifier":"t_stringliteral_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f","typeString":"literal_string \"ERC20: burn from the zero address\""},"value":"ERC20: burn from the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f","typeString":"literal_string \"ERC20: burn from the zero address\""}],"id":7568,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"9450:7:26","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":7576,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9450:67:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7577,"nodeType":"ExpressionStatement","src":"9450:67:26"},{"expression":{"arguments":[{"id":7579,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7563,"src":"9549:7:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":7582,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9566:1:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":7581,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9558:7:26","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7580,"name":"address","nodeType":"ElementaryTypeName","src":"9558:7:26","typeDescriptions":{}}},"id":7583,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9558:10:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7584,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7565,"src":"9570:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7578,"name":"_beforeTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7731,"src":"9528:20:26","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":7585,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9528:49:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7586,"nodeType":"ExpressionStatement","src":"9528:49:26"},{"assignments":[7588],"declarations":[{"constant":false,"id":7588,"mutability":"mutable","name":"accountBalance","nameLocation":"9596:14:26","nodeType":"VariableDeclaration","scope":7631,"src":"9588:22:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7587,"name":"uint256","nodeType":"ElementaryTypeName","src":"9588:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7592,"initialValue":{"baseExpression":{"id":7589,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7172,"src":"9613:9:26","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":7591,"indexExpression":{"id":7590,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7563,"src":"9623:7:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9613:18:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9588:43:26"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7596,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7594,"name":"accountBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7588,"src":"9649:14:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":7595,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7565,"src":"9667:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9649:24:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"45524332303a206275726e20616d6f756e7420657863656564732062616c616e6365","id":7597,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9675:36:26","typeDescriptions":{"typeIdentifier":"t_stringliteral_149b126e7125232b4200af45303d04fba8b74653b1a295a6a561a528c33fefdd","typeString":"literal_string \"ERC20: burn amount exceeds balance\""},"value":"ERC20: burn amount exceeds balance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_149b126e7125232b4200af45303d04fba8b74653b1a295a6a561a528c33fefdd","typeString":"literal_string \"ERC20: burn amount exceeds balance\""}],"id":7593,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"9641:7:26","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":7598,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9641:71:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7599,"nodeType":"ExpressionStatement","src":"9641:71:26"},{"id":7612,"nodeType":"UncheckedBlock","src":"9722:194:26","statements":[{"expression":{"id":7606,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":7600,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7172,"src":"9746:9:26","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":7602,"indexExpression":{"id":7601,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7563,"src":"9756:7:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9746:18:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7605,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7603,"name":"accountBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7588,"src":"9767:14:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":7604,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7565,"src":"9784:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9767:23:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9746:44:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7607,"nodeType":"ExpressionStatement","src":"9746:44:26"},{"expression":{"id":7610,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7608,"name":"_totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7180,"src":"9883:12:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":7609,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7565,"src":"9899:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9883:22:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7611,"nodeType":"ExpressionStatement","src":"9883:22:26"}]},{"eventCall":{"arguments":[{"id":7614,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7563,"src":"9940:7:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":7617,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9957:1:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":7616,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9949:7:26","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7615,"name":"address","nodeType":"ElementaryTypeName","src":"9949:7:26","typeDescriptions":{}}},"id":7618,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9949:10:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7619,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7565,"src":"9961:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7613,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7755,"src":"9931:8:26","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":7620,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9931:37:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7621,"nodeType":"EmitStatement","src":"9926:42:26"},{"expression":{"arguments":[{"id":7623,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7563,"src":"9999:7:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":7626,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10016:1:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":7625,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10008:7:26","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7624,"name":"address","nodeType":"ElementaryTypeName","src":"10008:7:26","typeDescriptions":{}}},"id":7627,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10008:10:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7628,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7565,"src":"10020:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7622,"name":"_afterTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7742,"src":"9979:19:26","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":7629,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9979:48:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7630,"nodeType":"ExpressionStatement","src":"9979:48:26"}]},"documentation":{"id":7561,"nodeType":"StructuredDocumentation","src":"9061:309:26","text":" @dev Destroys `amount` tokens from `account`, reducing the\n total supply.\n Emits a {Transfer} event with `to` set to the zero address.\n Requirements:\n - `account` cannot be the zero address.\n - `account` must have at least `amount` tokens."},"id":7632,"implemented":true,"kind":"function","modifiers":[],"name":"_burn","nameLocation":"9384:5:26","nodeType":"FunctionDefinition","parameters":{"id":7566,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7563,"mutability":"mutable","name":"account","nameLocation":"9398:7:26","nodeType":"VariableDeclaration","scope":7632,"src":"9390:15:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7562,"name":"address","nodeType":"ElementaryTypeName","src":"9390:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7565,"mutability":"mutable","name":"amount","nameLocation":"9415:6:26","nodeType":"VariableDeclaration","scope":7632,"src":"9407:14:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7564,"name":"uint256","nodeType":"ElementaryTypeName","src":"9407:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9389:33:26"},"returnParameters":{"id":7567,"nodeType":"ParameterList","parameters":[],"src":"9440:0:26"},"scope":7743,"src":"9375:659:26","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":7676,"nodeType":"Block","src":"10540:257:26","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":7648,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7643,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7635,"src":"10558:5:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":7646,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10575:1:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":7645,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10567:7:26","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7644,"name":"address","nodeType":"ElementaryTypeName","src":"10567:7:26","typeDescriptions":{}}},"id":7647,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10567:10:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"10558:19:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"45524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373","id":7649,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10579:38:26","typeDescriptions":{"typeIdentifier":"t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208","typeString":"literal_string \"ERC20: approve from the zero address\""},"value":"ERC20: approve from the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208","typeString":"literal_string \"ERC20: approve from the zero address\""}],"id":7642,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"10550:7:26","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":7650,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10550:68:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7651,"nodeType":"ExpressionStatement","src":"10550:68:26"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":7658,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7653,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7637,"src":"10636:7:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":7656,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10655:1:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":7655,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10647:7:26","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7654,"name":"address","nodeType":"ElementaryTypeName","src":"10647:7:26","typeDescriptions":{}}},"id":7657,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10647:10:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"10636:21:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"45524332303a20617070726f766520746f20746865207a65726f2061646472657373","id":7659,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10659:36:26","typeDescriptions":{"typeIdentifier":"t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029","typeString":"literal_string \"ERC20: approve to the zero address\""},"value":"ERC20: approve to the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029","typeString":"literal_string \"ERC20: approve to the zero address\""}],"id":7652,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"10628:7:26","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":7660,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10628:68:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7661,"nodeType":"ExpressionStatement","src":"10628:68:26"},{"expression":{"id":7668,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":7662,"name":"_allowances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7178,"src":"10707:11:26","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":7665,"indexExpression":{"id":7663,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7635,"src":"10719:5:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10707:18:26","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":7666,"indexExpression":{"id":7664,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7637,"src":"10726:7:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"10707:27:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":7667,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7639,"src":"10737:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10707:36:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7669,"nodeType":"ExpressionStatement","src":"10707:36:26"},{"eventCall":{"arguments":[{"id":7671,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7635,"src":"10767:5:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7672,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7637,"src":"10774:7:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7673,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7639,"src":"10783:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7670,"name":"Approval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7764,"src":"10758:8:26","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":7674,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10758:32:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7675,"nodeType":"EmitStatement","src":"10753:37:26"}]},"documentation":{"id":7633,"nodeType":"StructuredDocumentation","src":"10040:412:26","text":" @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.\n This internal function is equivalent to `approve`, and can be used to\n e.g. set automatic allowances for certain subsystems, etc.\n Emits an {Approval} event.\n Requirements:\n - `owner` cannot be the zero address.\n - `spender` cannot be the zero address."},"id":7677,"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nameLocation":"10466:8:26","nodeType":"FunctionDefinition","parameters":{"id":7640,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7635,"mutability":"mutable","name":"owner","nameLocation":"10483:5:26","nodeType":"VariableDeclaration","scope":7677,"src":"10475:13:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7634,"name":"address","nodeType":"ElementaryTypeName","src":"10475:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7637,"mutability":"mutable","name":"spender","nameLocation":"10498:7:26","nodeType":"VariableDeclaration","scope":7677,"src":"10490:15:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7636,"name":"address","nodeType":"ElementaryTypeName","src":"10490:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7639,"mutability":"mutable","name":"amount","nameLocation":"10515:6:26","nodeType":"VariableDeclaration","scope":7677,"src":"10507:14:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7638,"name":"uint256","nodeType":"ElementaryTypeName","src":"10507:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10474:48:26"},"returnParameters":{"id":7641,"nodeType":"ParameterList","parameters":[],"src":"10540:0:26"},"scope":7743,"src":"10457:340:26","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":7719,"nodeType":"Block","src":"11168:321:26","statements":[{"assignments":[7688],"declarations":[{"constant":false,"id":7688,"mutability":"mutable","name":"currentAllowance","nameLocation":"11186:16:26","nodeType":"VariableDeclaration","scope":7719,"src":"11178:24:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7687,"name":"uint256","nodeType":"ElementaryTypeName","src":"11178:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7693,"initialValue":{"arguments":[{"id":7690,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7680,"src":"11215:5:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7691,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7682,"src":"11222:7:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":7689,"name":"allowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7298,"src":"11205:9:26","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view returns (uint256)"}},"id":7692,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11205:25:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"11178:52:26"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7700,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7694,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7688,"src":"11244:16:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"arguments":[{"id":7697,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11269:7:26","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":7696,"name":"uint256","nodeType":"ElementaryTypeName","src":"11269:7:26","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":7695,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"11264:4:26","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":7698,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11264:13:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":7699,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11278:3:26","memberName":"max","nodeType":"MemberAccess","src":"11264:17:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11244:37:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7718,"nodeType":"IfStatement","src":"11240:243:26","trueBody":{"id":7717,"nodeType":"Block","src":"11283:200:26","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7704,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7702,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7688,"src":"11305:16:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":7703,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7684,"src":"11325:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11305:26:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"45524332303a20696e73756666696369656e7420616c6c6f77616e6365","id":7705,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11333:31:26","typeDescriptions":{"typeIdentifier":"t_stringliteral_3b6607e091cba9325f958656d2b5e0622ab7dc0eac71a26ac788cb25bc19f4fe","typeString":"literal_string \"ERC20: insufficient allowance\""},"value":"ERC20: insufficient allowance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_3b6607e091cba9325f958656d2b5e0622ab7dc0eac71a26ac788cb25bc19f4fe","typeString":"literal_string \"ERC20: insufficient allowance\""}],"id":7701,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"11297:7:26","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":7706,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11297:68:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7707,"nodeType":"ExpressionStatement","src":"11297:68:26"},{"id":7716,"nodeType":"UncheckedBlock","src":"11379:94:26","statements":[{"expression":{"arguments":[{"id":7709,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7680,"src":"11416:5:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7710,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7682,"src":"11423:7:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7713,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7711,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7688,"src":"11432:16:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":7712,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7684,"src":"11451:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11432:25:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7708,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7677,"src":"11407:8:26","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":7714,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11407:51:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7715,"nodeType":"ExpressionStatement","src":"11407:51:26"}]}]}}]},"documentation":{"id":7678,"nodeType":"StructuredDocumentation","src":"10803:270:26","text":" @dev Updates `owner` s allowance for `spender` based on spent `amount`.\n Does not update the allowance amount in case of infinite allowance.\n Revert if not enough allowance is available.\n Might emit an {Approval} event."},"id":7720,"implemented":true,"kind":"function","modifiers":[],"name":"_spendAllowance","nameLocation":"11087:15:26","nodeType":"FunctionDefinition","parameters":{"id":7685,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7680,"mutability":"mutable","name":"owner","nameLocation":"11111:5:26","nodeType":"VariableDeclaration","scope":7720,"src":"11103:13:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7679,"name":"address","nodeType":"ElementaryTypeName","src":"11103:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7682,"mutability":"mutable","name":"spender","nameLocation":"11126:7:26","nodeType":"VariableDeclaration","scope":7720,"src":"11118:15:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7681,"name":"address","nodeType":"ElementaryTypeName","src":"11118:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7684,"mutability":"mutable","name":"amount","nameLocation":"11143:6:26","nodeType":"VariableDeclaration","scope":7720,"src":"11135:14:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7683,"name":"uint256","nodeType":"ElementaryTypeName","src":"11135:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11102:48:26"},"returnParameters":{"id":7686,"nodeType":"ParameterList","parameters":[],"src":"11168:0:26"},"scope":7743,"src":"11078:411:26","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":7730,"nodeType":"Block","src":"12162:2:26","statements":[]},"documentation":{"id":7721,"nodeType":"StructuredDocumentation","src":"11495:573:26","text":" @dev Hook that is called before any transfer of tokens. This includes\n minting and burning.\n Calling conditions:\n - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n will be transferred to `to`.\n - when `from` is zero, `amount` tokens will be minted for `to`.\n - when `to` is zero, `amount` of ``from``'s tokens will be burned.\n - `from` and `to` are never both zero.\n To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]."},"id":7731,"implemented":true,"kind":"function","modifiers":[],"name":"_beforeTokenTransfer","nameLocation":"12082:20:26","nodeType":"FunctionDefinition","parameters":{"id":7728,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7723,"mutability":"mutable","name":"from","nameLocation":"12111:4:26","nodeType":"VariableDeclaration","scope":7731,"src":"12103:12:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7722,"name":"address","nodeType":"ElementaryTypeName","src":"12103:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7725,"mutability":"mutable","name":"to","nameLocation":"12125:2:26","nodeType":"VariableDeclaration","scope":7731,"src":"12117:10:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7724,"name":"address","nodeType":"ElementaryTypeName","src":"12117:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7727,"mutability":"mutable","name":"amount","nameLocation":"12137:6:26","nodeType":"VariableDeclaration","scope":7731,"src":"12129:14:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7726,"name":"uint256","nodeType":"ElementaryTypeName","src":"12129:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12102:42:26"},"returnParameters":{"id":7729,"nodeType":"ParameterList","parameters":[],"src":"12162:0:26"},"scope":7743,"src":"12073:91:26","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":7741,"nodeType":"Block","src":"12840:2:26","statements":[]},"documentation":{"id":7732,"nodeType":"StructuredDocumentation","src":"12170:577:26","text":" @dev Hook that is called after any transfer of tokens. This includes\n minting and burning.\n Calling conditions:\n - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n has been transferred to `to`.\n - when `from` is zero, `amount` tokens have been minted for `to`.\n - when `to` is zero, `amount` of ``from``'s tokens have been burned.\n - `from` and `to` are never both zero.\n To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]."},"id":7742,"implemented":true,"kind":"function","modifiers":[],"name":"_afterTokenTransfer","nameLocation":"12761:19:26","nodeType":"FunctionDefinition","parameters":{"id":7739,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7734,"mutability":"mutable","name":"from","nameLocation":"12789:4:26","nodeType":"VariableDeclaration","scope":7742,"src":"12781:12:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7733,"name":"address","nodeType":"ElementaryTypeName","src":"12781:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7736,"mutability":"mutable","name":"to","nameLocation":"12803:2:26","nodeType":"VariableDeclaration","scope":7742,"src":"12795:10:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7735,"name":"address","nodeType":"ElementaryTypeName","src":"12795:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7738,"mutability":"mutable","name":"amount","nameLocation":"12815:6:26","nodeType":"VariableDeclaration","scope":7742,"src":"12807:14:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7737,"name":"uint256","nodeType":"ElementaryTypeName","src":"12807:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12780:42:26"},"returnParameters":{"id":7740,"nodeType":"ParameterList","parameters":[],"src":"12840:0:26"},"scope":7743,"src":"12752:90:26","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":7744,"src":"1532:11312:26","usedErrors":[]}],"src":"105:12740:26"},"id":26},"@openzeppelin/contracts/token/ERC20/IERC20.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","exportedSymbols":{"IERC20":[7821]},"id":7822,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":7745,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"106:23:27"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC20","contractDependencies":[],"contractKind":"interface","documentation":{"id":7746,"nodeType":"StructuredDocumentation","src":"131:70:27","text":" @dev Interface of the ERC20 standard as defined in the EIP."},"fullyImplemented":false,"id":7821,"linearizedBaseContracts":[7821],"name":"IERC20","nameLocation":"212:6:27","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":7747,"nodeType":"StructuredDocumentation","src":"225:158:27","text":" @dev Emitted when `value` tokens are moved from one account (`from`) to\n another (`to`).\n Note that `value` may be zero."},"eventSelector":"ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","id":7755,"name":"Transfer","nameLocation":"394:8:27","nodeType":"EventDefinition","parameters":{"id":7754,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7749,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"419:4:27","nodeType":"VariableDeclaration","scope":7755,"src":"403:20:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7748,"name":"address","nodeType":"ElementaryTypeName","src":"403:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7751,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"441:2:27","nodeType":"VariableDeclaration","scope":7755,"src":"425:18:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7750,"name":"address","nodeType":"ElementaryTypeName","src":"425:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7753,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"453:5:27","nodeType":"VariableDeclaration","scope":7755,"src":"445:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7752,"name":"uint256","nodeType":"ElementaryTypeName","src":"445:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"402:57:27"},"src":"388:72:27"},{"anonymous":false,"documentation":{"id":7756,"nodeType":"StructuredDocumentation","src":"466:148:27","text":" @dev Emitted when the allowance of a `spender` for an `owner` is set by\n a call to {approve}. `value` is the new allowance."},"eventSelector":"8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925","id":7764,"name":"Approval","nameLocation":"625:8:27","nodeType":"EventDefinition","parameters":{"id":7763,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7758,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"650:5:27","nodeType":"VariableDeclaration","scope":7764,"src":"634:21:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7757,"name":"address","nodeType":"ElementaryTypeName","src":"634:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7760,"indexed":true,"mutability":"mutable","name":"spender","nameLocation":"673:7:27","nodeType":"VariableDeclaration","scope":7764,"src":"657:23:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7759,"name":"address","nodeType":"ElementaryTypeName","src":"657:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7762,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"690:5:27","nodeType":"VariableDeclaration","scope":7764,"src":"682:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7761,"name":"uint256","nodeType":"ElementaryTypeName","src":"682:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"633:63:27"},"src":"619:78:27"},{"documentation":{"id":7765,"nodeType":"StructuredDocumentation","src":"703:66:27","text":" @dev Returns the amount of tokens in existence."},"functionSelector":"18160ddd","id":7770,"implemented":false,"kind":"function","modifiers":[],"name":"totalSupply","nameLocation":"783:11:27","nodeType":"FunctionDefinition","parameters":{"id":7766,"nodeType":"ParameterList","parameters":[],"src":"794:2:27"},"returnParameters":{"id":7769,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7768,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7770,"src":"820:7:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7767,"name":"uint256","nodeType":"ElementaryTypeName","src":"820:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"819:9:27"},"scope":7821,"src":"774:55:27","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":7771,"nodeType":"StructuredDocumentation","src":"835:72:27","text":" @dev Returns the amount of tokens owned by `account`."},"functionSelector":"70a08231","id":7778,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"921:9:27","nodeType":"FunctionDefinition","parameters":{"id":7774,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7773,"mutability":"mutable","name":"account","nameLocation":"939:7:27","nodeType":"VariableDeclaration","scope":7778,"src":"931:15:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7772,"name":"address","nodeType":"ElementaryTypeName","src":"931:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"930:17:27"},"returnParameters":{"id":7777,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7776,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7778,"src":"971:7:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7775,"name":"uint256","nodeType":"ElementaryTypeName","src":"971:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"970:9:27"},"scope":7821,"src":"912:68:27","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":7779,"nodeType":"StructuredDocumentation","src":"986:202:27","text":" @dev Moves `amount` tokens from the caller's account to `to`.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."},"functionSelector":"a9059cbb","id":7788,"implemented":false,"kind":"function","modifiers":[],"name":"transfer","nameLocation":"1202:8:27","nodeType":"FunctionDefinition","parameters":{"id":7784,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7781,"mutability":"mutable","name":"to","nameLocation":"1219:2:27","nodeType":"VariableDeclaration","scope":7788,"src":"1211:10:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7780,"name":"address","nodeType":"ElementaryTypeName","src":"1211:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7783,"mutability":"mutable","name":"amount","nameLocation":"1231:6:27","nodeType":"VariableDeclaration","scope":7788,"src":"1223:14:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7782,"name":"uint256","nodeType":"ElementaryTypeName","src":"1223:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1210:28:27"},"returnParameters":{"id":7787,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7786,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7788,"src":"1257:4:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7785,"name":"bool","nodeType":"ElementaryTypeName","src":"1257:4:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1256:6:27"},"scope":7821,"src":"1193:70:27","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":7789,"nodeType":"StructuredDocumentation","src":"1269:264:27","text":" @dev Returns the remaining number of tokens that `spender` will be\n allowed to spend on behalf of `owner` through {transferFrom}. This is\n zero by default.\n This value changes when {approve} or {transferFrom} are called."},"functionSelector":"dd62ed3e","id":7798,"implemented":false,"kind":"function","modifiers":[],"name":"allowance","nameLocation":"1547:9:27","nodeType":"FunctionDefinition","parameters":{"id":7794,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7791,"mutability":"mutable","name":"owner","nameLocation":"1565:5:27","nodeType":"VariableDeclaration","scope":7798,"src":"1557:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7790,"name":"address","nodeType":"ElementaryTypeName","src":"1557:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7793,"mutability":"mutable","name":"spender","nameLocation":"1580:7:27","nodeType":"VariableDeclaration","scope":7798,"src":"1572:15:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7792,"name":"address","nodeType":"ElementaryTypeName","src":"1572:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1556:32:27"},"returnParameters":{"id":7797,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7796,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7798,"src":"1612:7:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7795,"name":"uint256","nodeType":"ElementaryTypeName","src":"1612:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1611:9:27"},"scope":7821,"src":"1538:83:27","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":7799,"nodeType":"StructuredDocumentation","src":"1627:642:27","text":" @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n Returns a boolean value indicating whether the operation succeeded.\n IMPORTANT: Beware that changing an allowance with this method brings the risk\n that someone may use both the old and the new allowance by unfortunate\n transaction ordering. One possible solution to mitigate this race\n condition is to first reduce the spender's allowance to 0 and set the\n desired value afterwards:\n https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n Emits an {Approval} event."},"functionSelector":"095ea7b3","id":7808,"implemented":false,"kind":"function","modifiers":[],"name":"approve","nameLocation":"2283:7:27","nodeType":"FunctionDefinition","parameters":{"id":7804,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7801,"mutability":"mutable","name":"spender","nameLocation":"2299:7:27","nodeType":"VariableDeclaration","scope":7808,"src":"2291:15:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7800,"name":"address","nodeType":"ElementaryTypeName","src":"2291:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7803,"mutability":"mutable","name":"amount","nameLocation":"2316:6:27","nodeType":"VariableDeclaration","scope":7808,"src":"2308:14:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7802,"name":"uint256","nodeType":"ElementaryTypeName","src":"2308:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2290:33:27"},"returnParameters":{"id":7807,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7806,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7808,"src":"2342:4:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7805,"name":"bool","nodeType":"ElementaryTypeName","src":"2342:4:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2341:6:27"},"scope":7821,"src":"2274:74:27","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":7809,"nodeType":"StructuredDocumentation","src":"2354:287:27","text":" @dev Moves `amount` tokens from `from` to `to` using the\n allowance mechanism. `amount` is then deducted from the caller's\n allowance.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."},"functionSelector":"23b872dd","id":7820,"implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"2655:12:27","nodeType":"FunctionDefinition","parameters":{"id":7816,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7811,"mutability":"mutable","name":"from","nameLocation":"2676:4:27","nodeType":"VariableDeclaration","scope":7820,"src":"2668:12:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7810,"name":"address","nodeType":"ElementaryTypeName","src":"2668:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7813,"mutability":"mutable","name":"to","nameLocation":"2690:2:27","nodeType":"VariableDeclaration","scope":7820,"src":"2682:10:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7812,"name":"address","nodeType":"ElementaryTypeName","src":"2682:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7815,"mutability":"mutable","name":"amount","nameLocation":"2702:6:27","nodeType":"VariableDeclaration","scope":7820,"src":"2694:14:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7814,"name":"uint256","nodeType":"ElementaryTypeName","src":"2694:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2667:42:27"},"returnParameters":{"id":7819,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7818,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7820,"src":"2728:4:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7817,"name":"bool","nodeType":"ElementaryTypeName","src":"2728:4:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2727:6:27"},"scope":7821,"src":"2646:88:27","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":7822,"src":"202:2534:27","usedErrors":[]}],"src":"106:2631:27"},"id":27},"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol","exportedSymbols":{"IERC20":[7821],"IERC20Metadata":[7846]},"id":7847,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":7823,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"110:23:28"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"../IERC20.sol","id":7824,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7847,"sourceUnit":7822,"src":"135:23:28","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":7826,"name":"IERC20","nameLocations":["305:6:28"],"nodeType":"IdentifierPath","referencedDeclaration":7821,"src":"305:6:28"},"id":7827,"nodeType":"InheritanceSpecifier","src":"305:6:28"}],"canonicalName":"IERC20Metadata","contractDependencies":[],"contractKind":"interface","documentation":{"id":7825,"nodeType":"StructuredDocumentation","src":"160:116:28","text":" @dev Interface for the optional metadata functions from the ERC20 standard.\n _Available since v4.1._"},"fullyImplemented":false,"id":7846,"linearizedBaseContracts":[7846,7821],"name":"IERC20Metadata","nameLocation":"287:14:28","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":7828,"nodeType":"StructuredDocumentation","src":"318:54:28","text":" @dev Returns the name of the token."},"functionSelector":"06fdde03","id":7833,"implemented":false,"kind":"function","modifiers":[],"name":"name","nameLocation":"386:4:28","nodeType":"FunctionDefinition","parameters":{"id":7829,"nodeType":"ParameterList","parameters":[],"src":"390:2:28"},"returnParameters":{"id":7832,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7831,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7833,"src":"416:13:28","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":7830,"name":"string","nodeType":"ElementaryTypeName","src":"416:6:28","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"415:15:28"},"scope":7846,"src":"377:54:28","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":7834,"nodeType":"StructuredDocumentation","src":"437:56:28","text":" @dev Returns the symbol of the token."},"functionSelector":"95d89b41","id":7839,"implemented":false,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"507:6:28","nodeType":"FunctionDefinition","parameters":{"id":7835,"nodeType":"ParameterList","parameters":[],"src":"513:2:28"},"returnParameters":{"id":7838,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7837,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7839,"src":"539:13:28","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":7836,"name":"string","nodeType":"ElementaryTypeName","src":"539:6:28","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"538:15:28"},"scope":7846,"src":"498:56:28","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":7840,"nodeType":"StructuredDocumentation","src":"560:65:28","text":" @dev Returns the decimals places of the token."},"functionSelector":"313ce567","id":7845,"implemented":false,"kind":"function","modifiers":[],"name":"decimals","nameLocation":"639:8:28","nodeType":"FunctionDefinition","parameters":{"id":7841,"nodeType":"ParameterList","parameters":[],"src":"647:2:28"},"returnParameters":{"id":7844,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7843,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7845,"src":"673:5:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":7842,"name":"uint8","nodeType":"ElementaryTypeName","src":"673:5:28","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"672:7:28"},"scope":7846,"src":"630:50:28","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":7847,"src":"277:405:28","usedErrors":[]}],"src":"110:573:28"},"id":28},"@openzeppelin/contracts/token/ERC721/ERC721.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC721/ERC721.sol","exportedSymbols":{"Address":[9264],"Context":[9294],"ERC165":[9731],"ERC721":[8773],"IERC165":[9743],"IERC721":[8889],"IERC721Metadata":[8934],"IERC721Receiver":[8907],"Math":[10609],"SignedMath":[10714],"Strings":[9707]},"id":8774,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":7848,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"107:23:29"},{"absolutePath":"@openzeppelin/contracts/token/ERC721/IERC721.sol","file":"./IERC721.sol","id":7849,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8774,"sourceUnit":8890,"src":"132:23:29","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol","file":"./IERC721Receiver.sol","id":7850,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8774,"sourceUnit":8908,"src":"156:31:29","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol","file":"./extensions/IERC721Metadata.sol","id":7851,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8774,"sourceUnit":8935,"src":"188:42:29","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Address.sol","file":"../../utils/Address.sol","id":7852,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8774,"sourceUnit":9265,"src":"231:33:29","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Context.sol","file":"../../utils/Context.sol","id":7853,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8774,"sourceUnit":9295,"src":"265:33:29","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Strings.sol","file":"../../utils/Strings.sol","id":7854,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8774,"sourceUnit":9708,"src":"299:33:29","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/introspection/ERC165.sol","file":"../../utils/introspection/ERC165.sol","id":7855,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8774,"sourceUnit":9732,"src":"333:46:29","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":7857,"name":"Context","nameLocations":["647:7:29"],"nodeType":"IdentifierPath","referencedDeclaration":9294,"src":"647:7:29"},"id":7858,"nodeType":"InheritanceSpecifier","src":"647:7:29"},{"baseName":{"id":7859,"name":"ERC165","nameLocations":["656:6:29"],"nodeType":"IdentifierPath","referencedDeclaration":9731,"src":"656:6:29"},"id":7860,"nodeType":"InheritanceSpecifier","src":"656:6:29"},{"baseName":{"id":7861,"name":"IERC721","nameLocations":["664:7:29"],"nodeType":"IdentifierPath","referencedDeclaration":8889,"src":"664:7:29"},"id":7862,"nodeType":"InheritanceSpecifier","src":"664:7:29"},{"baseName":{"id":7863,"name":"IERC721Metadata","nameLocations":["673:15:29"],"nodeType":"IdentifierPath","referencedDeclaration":8934,"src":"673:15:29"},"id":7864,"nodeType":"InheritanceSpecifier","src":"673:15:29"}],"canonicalName":"ERC721","contractDependencies":[],"contractKind":"contract","documentation":{"id":7856,"nodeType":"StructuredDocumentation","src":"381:246:29","text":" @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including\n the Metadata extension, but not including the Enumerable extension, which is available separately as\n {ERC721Enumerable}."},"fullyImplemented":true,"id":8773,"linearizedBaseContracts":[8773,8934,8889,9731,9743,9294],"name":"ERC721","nameLocation":"637:6:29","nodeType":"ContractDefinition","nodes":[{"global":false,"id":7867,"libraryName":{"id":7865,"name":"Address","nameLocations":["701:7:29"],"nodeType":"IdentifierPath","referencedDeclaration":9264,"src":"701:7:29"},"nodeType":"UsingForDirective","src":"695:26:29","typeName":{"id":7866,"name":"address","nodeType":"ElementaryTypeName","src":"713:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},{"global":false,"id":7870,"libraryName":{"id":7868,"name":"Strings","nameLocations":["732:7:29"],"nodeType":"IdentifierPath","referencedDeclaration":9707,"src":"732:7:29"},"nodeType":"UsingForDirective","src":"726:26:29","typeName":{"id":7869,"name":"uint256","nodeType":"ElementaryTypeName","src":"744:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"constant":false,"id":7872,"mutability":"mutable","name":"_name","nameLocation":"791:5:29","nodeType":"VariableDeclaration","scope":8773,"src":"776:20:29","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":7871,"name":"string","nodeType":"ElementaryTypeName","src":"776:6:29","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"constant":false,"id":7874,"mutability":"mutable","name":"_symbol","nameLocation":"838:7:29","nodeType":"VariableDeclaration","scope":8773,"src":"823:22:29","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":7873,"name":"string","nodeType":"ElementaryTypeName","src":"823:6:29","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"constant":false,"id":7878,"mutability":"mutable","name":"_owners","nameLocation":"934:7:29","nodeType":"VariableDeclaration","scope":8773,"src":"898:43:29","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"typeName":{"id":7877,"keyType":{"id":7875,"name":"uint256","nodeType":"ElementaryTypeName","src":"906:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"898:27:29","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"valueType":{"id":7876,"name":"address","nodeType":"ElementaryTypeName","src":"917:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"visibility":"private"},{"constant":false,"id":7882,"mutability":"mutable","name":"_balances","nameLocation":"1028:9:29","nodeType":"VariableDeclaration","scope":8773,"src":"992:45:29","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":7881,"keyType":{"id":7879,"name":"address","nodeType":"ElementaryTypeName","src":"1000:7:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"992:27:29","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueType":{"id":7880,"name":"uint256","nodeType":"ElementaryTypeName","src":"1011:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"private"},{"constant":false,"id":7886,"mutability":"mutable","name":"_tokenApprovals","nameLocation":"1129:15:29","nodeType":"VariableDeclaration","scope":8773,"src":"1093:51:29","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"typeName":{"id":7885,"keyType":{"id":7883,"name":"uint256","nodeType":"ElementaryTypeName","src":"1101:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"1093:27:29","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"valueType":{"id":7884,"name":"address","nodeType":"ElementaryTypeName","src":"1112:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"visibility":"private"},{"constant":false,"id":7892,"mutability":"mutable","name":"_operatorApprovals","nameLocation":"1252:18:29","nodeType":"VariableDeclaration","scope":8773,"src":"1199:71:29","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"typeName":{"id":7891,"keyType":{"id":7887,"name":"address","nodeType":"ElementaryTypeName","src":"1207:7:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1199:44:29","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"valueType":{"id":7890,"keyType":{"id":7888,"name":"address","nodeType":"ElementaryTypeName","src":"1226:7:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1218:24:29","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueType":{"id":7889,"name":"bool","nodeType":"ElementaryTypeName","src":"1237:4:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}}},"visibility":"private"},{"body":{"id":7908,"nodeType":"Block","src":"1446:57:29","statements":[{"expression":{"id":7902,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7900,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7872,"src":"1456:5:29","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":7901,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7895,"src":"1464:5:29","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"1456:13:29","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":7903,"nodeType":"ExpressionStatement","src":"1456:13:29"},{"expression":{"id":7906,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7904,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7874,"src":"1479:7:29","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":7905,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7897,"src":"1489:7:29","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"1479:17:29","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":7907,"nodeType":"ExpressionStatement","src":"1479:17:29"}]},"documentation":{"id":7893,"nodeType":"StructuredDocumentation","src":"1277:108:29","text":" @dev Initializes the contract by setting a `name` and a `symbol` to the token collection."},"id":7909,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":7898,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7895,"mutability":"mutable","name":"name_","nameLocation":"1416:5:29","nodeType":"VariableDeclaration","scope":7909,"src":"1402:19:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":7894,"name":"string","nodeType":"ElementaryTypeName","src":"1402:6:29","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":7897,"mutability":"mutable","name":"symbol_","nameLocation":"1437:7:29","nodeType":"VariableDeclaration","scope":7909,"src":"1423:21:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":7896,"name":"string","nodeType":"ElementaryTypeName","src":"1423:6:29","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1401:44:29"},"returnParameters":{"id":7899,"nodeType":"ParameterList","parameters":[],"src":"1446:0:29"},"scope":8773,"src":"1390:113:29","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[9730,9742],"body":{"id":7939,"nodeType":"Block","src":"1678:192:29","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":7937,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":7932,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":7925,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7920,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7912,"src":"1707:11:29","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":7922,"name":"IERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8889,"src":"1727:7:29","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721_$8889_$","typeString":"type(contract IERC721)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC721_$8889_$","typeString":"type(contract IERC721)"}],"id":7921,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"1722:4:29","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":7923,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1722:13:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC721_$8889","typeString":"type(contract IERC721)"}},"id":7924,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1736:11:29","memberName":"interfaceId","nodeType":"MemberAccess","src":"1722:25:29","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"1707:40:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":7931,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7926,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7912,"src":"1763:11:29","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":7928,"name":"IERC721Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8934,"src":"1783:15:29","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Metadata_$8934_$","typeString":"type(contract IERC721Metadata)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC721Metadata_$8934_$","typeString":"type(contract IERC721Metadata)"}],"id":7927,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"1778:4:29","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":7929,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1778:21:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC721Metadata_$8934","typeString":"type(contract IERC721Metadata)"}},"id":7930,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1800:11:29","memberName":"interfaceId","nodeType":"MemberAccess","src":"1778:33:29","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"1763:48:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1707:104:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":7935,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7912,"src":"1851:11:29","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":7933,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967271,"src":"1827:5:29","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_ERC721_$8773_$","typeString":"type(contract super ERC721)"}},"id":7934,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1833:17:29","memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":9730,"src":"1827:23:29","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bool_$","typeString":"function (bytes4) view returns (bool)"}},"id":7936,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1827:36:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1707:156:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":7919,"id":7938,"nodeType":"Return","src":"1688:175:29"}]},"documentation":{"id":7910,"nodeType":"StructuredDocumentation","src":"1509:56:29","text":" @dev See {IERC165-supportsInterface}."},"functionSelector":"01ffc9a7","id":7940,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"1579:17:29","nodeType":"FunctionDefinition","overrides":{"id":7916,"nodeType":"OverrideSpecifier","overrides":[{"id":7914,"name":"ERC165","nameLocations":["1646:6:29"],"nodeType":"IdentifierPath","referencedDeclaration":9731,"src":"1646:6:29"},{"id":7915,"name":"IERC165","nameLocations":["1654:7:29"],"nodeType":"IdentifierPath","referencedDeclaration":9743,"src":"1654:7:29"}],"src":"1637:25:29"},"parameters":{"id":7913,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7912,"mutability":"mutable","name":"interfaceId","nameLocation":"1604:11:29","nodeType":"VariableDeclaration","scope":7940,"src":"1597:18:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":7911,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1597:6:29","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"1596:20:29"},"returnParameters":{"id":7919,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7918,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7940,"src":"1672:4:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7917,"name":"bool","nodeType":"ElementaryTypeName","src":"1672:4:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1671:6:29"},"scope":8773,"src":"1570:300:29","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[8814],"body":{"id":7963,"nodeType":"Block","src":"2010:123:29","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":7955,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7950,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7943,"src":"2028:5:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":7953,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2045:1:29","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":7952,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2037:7:29","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7951,"name":"address","nodeType":"ElementaryTypeName","src":"2037:7:29","typeDescriptions":{}}},"id":7954,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2037:10:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2028:19:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a2061646472657373207a65726f206973206e6f7420612076616c6964206f776e6572","id":7956,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2049:43:29","typeDescriptions":{"typeIdentifier":"t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159","typeString":"literal_string \"ERC721: address zero is not a valid owner\""},"value":"ERC721: address zero is not a valid owner"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159","typeString":"literal_string \"ERC721: address zero is not a valid owner\""}],"id":7949,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"2020:7:29","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":7957,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2020:73:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7958,"nodeType":"ExpressionStatement","src":"2020:73:29"},{"expression":{"baseExpression":{"id":7959,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7882,"src":"2110:9:29","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":7961,"indexExpression":{"id":7960,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7943,"src":"2120:5:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2110:16:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7948,"id":7962,"nodeType":"Return","src":"2103:23:29"}]},"documentation":{"id":7941,"nodeType":"StructuredDocumentation","src":"1876:48:29","text":" @dev See {IERC721-balanceOf}."},"functionSelector":"70a08231","id":7964,"implemented":true,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"1938:9:29","nodeType":"FunctionDefinition","overrides":{"id":7945,"nodeType":"OverrideSpecifier","overrides":[],"src":"1983:8:29"},"parameters":{"id":7944,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7943,"mutability":"mutable","name":"owner","nameLocation":"1956:5:29","nodeType":"VariableDeclaration","scope":7964,"src":"1948:13:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7942,"name":"address","nodeType":"ElementaryTypeName","src":"1948:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1947:15:29"},"returnParameters":{"id":7948,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7947,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7964,"src":"2001:7:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7946,"name":"uint256","nodeType":"ElementaryTypeName","src":"2001:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2000:9:29"},"scope":8773,"src":"1929:204:29","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[8822],"body":{"id":7991,"nodeType":"Block","src":"2271:138:29","statements":[{"assignments":[7974],"declarations":[{"constant":false,"id":7974,"mutability":"mutable","name":"owner","nameLocation":"2289:5:29","nodeType":"VariableDeclaration","scope":7991,"src":"2281:13:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7973,"name":"address","nodeType":"ElementaryTypeName","src":"2281:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":7978,"initialValue":{"arguments":[{"id":7976,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7967,"src":"2306:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7975,"name":"_ownerOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8274,"src":"2297:8:29","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":7977,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2297:17:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"2281:33:29"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":7985,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7980,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7974,"src":"2332:5:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":7983,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2349:1:29","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":7982,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2341:7:29","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7981,"name":"address","nodeType":"ElementaryTypeName","src":"2341:7:29","typeDescriptions":{}}},"id":7984,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2341:10:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2332:19:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a20696e76616c696420746f6b656e204944","id":7986,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2353:26:29","typeDescriptions":{"typeIdentifier":"t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f","typeString":"literal_string \"ERC721: invalid token ID\""},"value":"ERC721: invalid token ID"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f","typeString":"literal_string \"ERC721: invalid token ID\""}],"id":7979,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"2324:7:29","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":7987,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2324:56:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7988,"nodeType":"ExpressionStatement","src":"2324:56:29"},{"expression":{"id":7989,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7974,"src":"2397:5:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":7972,"id":7990,"nodeType":"Return","src":"2390:12:29"}]},"documentation":{"id":7965,"nodeType":"StructuredDocumentation","src":"2139:46:29","text":" @dev See {IERC721-ownerOf}."},"functionSelector":"6352211e","id":7992,"implemented":true,"kind":"function","modifiers":[],"name":"ownerOf","nameLocation":"2199:7:29","nodeType":"FunctionDefinition","overrides":{"id":7969,"nodeType":"OverrideSpecifier","overrides":[],"src":"2244:8:29"},"parameters":{"id":7968,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7967,"mutability":"mutable","name":"tokenId","nameLocation":"2215:7:29","nodeType":"VariableDeclaration","scope":7992,"src":"2207:15:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7966,"name":"uint256","nodeType":"ElementaryTypeName","src":"2207:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2206:17:29"},"returnParameters":{"id":7972,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7971,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7992,"src":"2262:7:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7970,"name":"address","nodeType":"ElementaryTypeName","src":"2262:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2261:9:29"},"scope":8773,"src":"2190:219:29","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[8919],"body":{"id":8001,"nodeType":"Block","src":"2540:29:29","statements":[{"expression":{"id":7999,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7872,"src":"2557:5:29","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":7998,"id":8000,"nodeType":"Return","src":"2550:12:29"}]},"documentation":{"id":7993,"nodeType":"StructuredDocumentation","src":"2415:51:29","text":" @dev See {IERC721Metadata-name}."},"functionSelector":"06fdde03","id":8002,"implemented":true,"kind":"function","modifiers":[],"name":"name","nameLocation":"2480:4:29","nodeType":"FunctionDefinition","overrides":{"id":7995,"nodeType":"OverrideSpecifier","overrides":[],"src":"2507:8:29"},"parameters":{"id":7994,"nodeType":"ParameterList","parameters":[],"src":"2484:2:29"},"returnParameters":{"id":7998,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7997,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8002,"src":"2525:13:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":7996,"name":"string","nodeType":"ElementaryTypeName","src":"2525:6:29","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2524:15:29"},"scope":8773,"src":"2471:98:29","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[8925],"body":{"id":8011,"nodeType":"Block","src":"2704:31:29","statements":[{"expression":{"id":8009,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7874,"src":"2721:7:29","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":8008,"id":8010,"nodeType":"Return","src":"2714:14:29"}]},"documentation":{"id":8003,"nodeType":"StructuredDocumentation","src":"2575:53:29","text":" @dev See {IERC721Metadata-symbol}."},"functionSelector":"95d89b41","id":8012,"implemented":true,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"2642:6:29","nodeType":"FunctionDefinition","overrides":{"id":8005,"nodeType":"OverrideSpecifier","overrides":[],"src":"2671:8:29"},"parameters":{"id":8004,"nodeType":"ParameterList","parameters":[],"src":"2648:2:29"},"returnParameters":{"id":8008,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8007,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8012,"src":"2689:13:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":8006,"name":"string","nodeType":"ElementaryTypeName","src":"2689:6:29","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2688:15:29"},"scope":8773,"src":"2633:102:29","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[8933],"body":{"id":8050,"nodeType":"Block","src":"2889:188:29","statements":[{"expression":{"arguments":[{"id":8022,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8015,"src":"2914:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8021,"name":"_requireMinted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8669,"src":"2899:14:29","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$__$","typeString":"function (uint256) view"}},"id":8023,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2899:23:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8024,"nodeType":"ExpressionStatement","src":"2899:23:29"},{"assignments":[8026],"declarations":[{"constant":false,"id":8026,"mutability":"mutable","name":"baseURI","nameLocation":"2947:7:29","nodeType":"VariableDeclaration","scope":8050,"src":"2933:21:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":8025,"name":"string","nodeType":"ElementaryTypeName","src":"2933:6:29","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":8029,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":8027,"name":"_baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8060,"src":"2957:8:29","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_string_memory_ptr_$","typeString":"function () view returns (string memory)"}},"id":8028,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2957:10:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"2933:34:29"},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8036,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":8032,"name":"baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8026,"src":"2990:7:29","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":8031,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2984:5:29","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":8030,"name":"bytes","nodeType":"ElementaryTypeName","src":"2984:5:29","typeDescriptions":{}}},"id":8033,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2984:14:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":8034,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2999:6:29","memberName":"length","nodeType":"MemberAccess","src":"2984:21:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":8035,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3008:1:29","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2984:25:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"","id":8047,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3068:2:29","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"id":8048,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"2984:86:29","trueExpression":{"arguments":[{"arguments":[{"id":8041,"name":"baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8026,"src":"3036:7:29","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":8042,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8015,"src":"3045:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8043,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3053:8:29","memberName":"toString","nodeType":"MemberAccess","referencedDeclaration":9537,"src":"3045:16:29","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$bound_to$_t_uint256_$","typeString":"function (uint256) pure returns (string memory)"}},"id":8044,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3045:18:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":8039,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967295,"src":"3019:3:29","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":8040,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3023:12:29","memberName":"encodePacked","nodeType":"MemberAccess","src":"3019:16:29","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":8045,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3019:45:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":8038,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3012:6:29","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":8037,"name":"string","nodeType":"ElementaryTypeName","src":"3012:6:29","typeDescriptions":{}}},"id":8046,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3012:53:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":8020,"id":8049,"nodeType":"Return","src":"2977:93:29"}]},"documentation":{"id":8013,"nodeType":"StructuredDocumentation","src":"2741:55:29","text":" @dev See {IERC721Metadata-tokenURI}."},"functionSelector":"c87b56dd","id":8051,"implemented":true,"kind":"function","modifiers":[],"name":"tokenURI","nameLocation":"2810:8:29","nodeType":"FunctionDefinition","overrides":{"id":8017,"nodeType":"OverrideSpecifier","overrides":[],"src":"2856:8:29"},"parameters":{"id":8016,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8015,"mutability":"mutable","name":"tokenId","nameLocation":"2827:7:29","nodeType":"VariableDeclaration","scope":8051,"src":"2819:15:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8014,"name":"uint256","nodeType":"ElementaryTypeName","src":"2819:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2818:17:29"},"returnParameters":{"id":8020,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8019,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8051,"src":"2874:13:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":8018,"name":"string","nodeType":"ElementaryTypeName","src":"2874:6:29","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2873:15:29"},"scope":8773,"src":"2801:276:29","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":8059,"nodeType":"Block","src":"3385:26:29","statements":[{"expression":{"hexValue":"","id":8057,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3402:2:29","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"functionReturnParameters":8056,"id":8058,"nodeType":"Return","src":"3395:9:29"}]},"documentation":{"id":8052,"nodeType":"StructuredDocumentation","src":"3083:231:29","text":" @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\n token will be the concatenation of the `baseURI` and the `tokenId`. Empty\n by default, can be overridden in child contracts."},"id":8060,"implemented":true,"kind":"function","modifiers":[],"name":"_baseURI","nameLocation":"3328:8:29","nodeType":"FunctionDefinition","parameters":{"id":8053,"nodeType":"ParameterList","parameters":[],"src":"3336:2:29"},"returnParameters":{"id":8056,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8055,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8060,"src":"3370:13:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":8054,"name":"string","nodeType":"ElementaryTypeName","src":"3370:6:29","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3369:15:29"},"scope":8773,"src":"3319:92:29","stateMutability":"view","virtual":true,"visibility":"internal"},{"baseFunctions":[8862],"body":{"id":8102,"nodeType":"Block","src":"3538:336:29","statements":[{"assignments":[8070],"declarations":[{"constant":false,"id":8070,"mutability":"mutable","name":"owner","nameLocation":"3556:5:29","nodeType":"VariableDeclaration","scope":8102,"src":"3548:13:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8069,"name":"address","nodeType":"ElementaryTypeName","src":"3548:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":8075,"initialValue":{"arguments":[{"id":8073,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8065,"src":"3579:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8071,"name":"ERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8773,"src":"3564:6:29","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC721_$8773_$","typeString":"type(contract ERC721)"}},"id":8072,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3571:7:29","memberName":"ownerOf","nodeType":"MemberAccess","referencedDeclaration":7992,"src":"3564:14:29","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":8074,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3564:23:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"3548:39:29"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":8079,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8077,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8063,"src":"3605:2:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":8078,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8070,"src":"3611:5:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3605:11:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a20617070726f76616c20746f2063757272656e74206f776e6572","id":8080,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3618:35:29","typeDescriptions":{"typeIdentifier":"t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942","typeString":"literal_string \"ERC721: approval to current owner\""},"value":"ERC721: approval to current owner"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942","typeString":"literal_string \"ERC721: approval to current owner\""}],"id":8076,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"3597:7:29","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8081,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3597:57:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8082,"nodeType":"ExpressionStatement","src":"3597:57:29"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":8093,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":8087,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":8084,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9276,"src":"3686:10:29","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":8085,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3686:12:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":8086,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8070,"src":"3702:5:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3686:21:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":8089,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8070,"src":"3728:5:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[],"expression":{"argumentTypes":[],"id":8090,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9276,"src":"3735:10:29","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":8091,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3735:12:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":8088,"name":"isApprovedForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8156,"src":"3711:16:29","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view returns (bool)"}},"id":8092,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3711:37:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3686:62:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c","id":8094,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3762:63:29","typeDescriptions":{"typeIdentifier":"t_stringliteral_c6e14a63ffb144eeef7cce6988e5dce07c60a7e0a7b1ef25dbe18c61483e0a83","typeString":"literal_string \"ERC721: approve caller is not token owner or approved for all\""},"value":"ERC721: approve caller is not token owner or approved for all"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_c6e14a63ffb144eeef7cce6988e5dce07c60a7e0a7b1ef25dbe18c61483e0a83","typeString":"literal_string \"ERC721: approve caller is not token owner or approved for all\""}],"id":8083,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"3665:7:29","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8095,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3665:170:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8096,"nodeType":"ExpressionStatement","src":"3665:170:29"},{"expression":{"arguments":[{"id":8098,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8063,"src":"3855:2:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8099,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8065,"src":"3859:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8097,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8623,"src":"3846:8:29","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":8100,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3846:21:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8101,"nodeType":"ExpressionStatement","src":"3846:21:29"}]},"documentation":{"id":8061,"nodeType":"StructuredDocumentation","src":"3417:46:29","text":" @dev See {IERC721-approve}."},"functionSelector":"095ea7b3","id":8103,"implemented":true,"kind":"function","modifiers":[],"name":"approve","nameLocation":"3477:7:29","nodeType":"FunctionDefinition","overrides":{"id":8067,"nodeType":"OverrideSpecifier","overrides":[],"src":"3529:8:29"},"parameters":{"id":8066,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8063,"mutability":"mutable","name":"to","nameLocation":"3493:2:29","nodeType":"VariableDeclaration","scope":8103,"src":"3485:10:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8062,"name":"address","nodeType":"ElementaryTypeName","src":"3485:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8065,"mutability":"mutable","name":"tokenId","nameLocation":"3505:7:29","nodeType":"VariableDeclaration","scope":8103,"src":"3497:15:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8064,"name":"uint256","nodeType":"ElementaryTypeName","src":"3497:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3484:29:29"},"returnParameters":{"id":8068,"nodeType":"ParameterList","parameters":[],"src":"3538:0:29"},"scope":8773,"src":"3468:406:29","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[8878],"body":{"id":8120,"nodeType":"Block","src":"4020:82:29","statements":[{"expression":{"arguments":[{"id":8113,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8106,"src":"4045:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8112,"name":"_requireMinted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8669,"src":"4030:14:29","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$__$","typeString":"function (uint256) view"}},"id":8114,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4030:23:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8115,"nodeType":"ExpressionStatement","src":"4030:23:29"},{"expression":{"baseExpression":{"id":8116,"name":"_tokenApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7886,"src":"4071:15:29","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":8118,"indexExpression":{"id":8117,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8106,"src":"4087:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4071:24:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":8111,"id":8119,"nodeType":"Return","src":"4064:31:29"}]},"documentation":{"id":8104,"nodeType":"StructuredDocumentation","src":"3880:50:29","text":" @dev See {IERC721-getApproved}."},"functionSelector":"081812fc","id":8121,"implemented":true,"kind":"function","modifiers":[],"name":"getApproved","nameLocation":"3944:11:29","nodeType":"FunctionDefinition","overrides":{"id":8108,"nodeType":"OverrideSpecifier","overrides":[],"src":"3993:8:29"},"parameters":{"id":8107,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8106,"mutability":"mutable","name":"tokenId","nameLocation":"3964:7:29","nodeType":"VariableDeclaration","scope":8121,"src":"3956:15:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8105,"name":"uint256","nodeType":"ElementaryTypeName","src":"3956:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3955:17:29"},"returnParameters":{"id":8111,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8110,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8121,"src":"4011:7:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8109,"name":"address","nodeType":"ElementaryTypeName","src":"4011:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4010:9:29"},"scope":8773,"src":"3935:167:29","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[8870],"body":{"id":8137,"nodeType":"Block","src":"4253:69:29","statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":8131,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9276,"src":"4282:10:29","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":8132,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4282:12:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8133,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8124,"src":"4296:8:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8134,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8126,"src":"4306:8:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":8130,"name":"_setApprovalForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8655,"src":"4263:18:29","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,address,bool)"}},"id":8135,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4263:52:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8136,"nodeType":"ExpressionStatement","src":"4263:52:29"}]},"documentation":{"id":8122,"nodeType":"StructuredDocumentation","src":"4108:56:29","text":" @dev See {IERC721-setApprovalForAll}."},"functionSelector":"a22cb465","id":8138,"implemented":true,"kind":"function","modifiers":[],"name":"setApprovalForAll","nameLocation":"4178:17:29","nodeType":"FunctionDefinition","overrides":{"id":8128,"nodeType":"OverrideSpecifier","overrides":[],"src":"4244:8:29"},"parameters":{"id":8127,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8124,"mutability":"mutable","name":"operator","nameLocation":"4204:8:29","nodeType":"VariableDeclaration","scope":8138,"src":"4196:16:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8123,"name":"address","nodeType":"ElementaryTypeName","src":"4196:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8126,"mutability":"mutable","name":"approved","nameLocation":"4219:8:29","nodeType":"VariableDeclaration","scope":8138,"src":"4214:13:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8125,"name":"bool","nodeType":"ElementaryTypeName","src":"4214:4:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4195:33:29"},"returnParameters":{"id":8129,"nodeType":"ParameterList","parameters":[],"src":"4253:0:29"},"scope":8773,"src":"4169:153:29","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[8888],"body":{"id":8155,"nodeType":"Block","src":"4491:59:29","statements":[{"expression":{"baseExpression":{"baseExpression":{"id":8149,"name":"_operatorApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7892,"src":"4508:18:29","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":8151,"indexExpression":{"id":8150,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8141,"src":"4527:5:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4508:25:29","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":8153,"indexExpression":{"id":8152,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8143,"src":"4534:8:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4508:35:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":8148,"id":8154,"nodeType":"Return","src":"4501:42:29"}]},"documentation":{"id":8139,"nodeType":"StructuredDocumentation","src":"4328:55:29","text":" @dev See {IERC721-isApprovedForAll}."},"functionSelector":"e985e9c5","id":8156,"implemented":true,"kind":"function","modifiers":[],"name":"isApprovedForAll","nameLocation":"4397:16:29","nodeType":"FunctionDefinition","overrides":{"id":8145,"nodeType":"OverrideSpecifier","overrides":[],"src":"4467:8:29"},"parameters":{"id":8144,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8141,"mutability":"mutable","name":"owner","nameLocation":"4422:5:29","nodeType":"VariableDeclaration","scope":8156,"src":"4414:13:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8140,"name":"address","nodeType":"ElementaryTypeName","src":"4414:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8143,"mutability":"mutable","name":"operator","nameLocation":"4437:8:29","nodeType":"VariableDeclaration","scope":8156,"src":"4429:16:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8142,"name":"address","nodeType":"ElementaryTypeName","src":"4429:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4413:33:29"},"returnParameters":{"id":8148,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8147,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8156,"src":"4485:4:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8146,"name":"bool","nodeType":"ElementaryTypeName","src":"4485:4:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4484:6:29"},"scope":8773,"src":"4388:162:29","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[8854],"body":{"id":8182,"nodeType":"Block","src":"4701:207:29","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":8169,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9276,"src":"4790:10:29","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":8170,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4790:12:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8171,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8163,"src":"4804:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8168,"name":"_isApprovedOrOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8326,"src":"4771:18:29","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) view returns (bool)"}},"id":8172,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4771:41:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6572206f7220617070726f766564","id":8173,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4814:47:29","typeDescriptions":{"typeIdentifier":"t_stringliteral_12a8e5623d251e191fe4a291d9a59bcc01a4db7a1f5c20fc8de44358c18308af","typeString":"literal_string \"ERC721: caller is not token owner or approved\""},"value":"ERC721: caller is not token owner or approved"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_12a8e5623d251e191fe4a291d9a59bcc01a4db7a1f5c20fc8de44358c18308af","typeString":"literal_string \"ERC721: caller is not token owner or approved\""}],"id":8167,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"4763:7:29","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8174,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4763:99:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8175,"nodeType":"ExpressionStatement","src":"4763:99:29"},{"expression":{"arguments":[{"id":8177,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8159,"src":"4883:4:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8178,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8161,"src":"4889:2:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8179,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8163,"src":"4893:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8176,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8599,"src":"4873:9:29","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":8180,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4873:28:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8181,"nodeType":"ExpressionStatement","src":"4873:28:29"}]},"documentation":{"id":8157,"nodeType":"StructuredDocumentation","src":"4556:51:29","text":" @dev See {IERC721-transferFrom}."},"functionSelector":"23b872dd","id":8183,"implemented":true,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"4621:12:29","nodeType":"FunctionDefinition","overrides":{"id":8165,"nodeType":"OverrideSpecifier","overrides":[],"src":"4692:8:29"},"parameters":{"id":8164,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8159,"mutability":"mutable","name":"from","nameLocation":"4642:4:29","nodeType":"VariableDeclaration","scope":8183,"src":"4634:12:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8158,"name":"address","nodeType":"ElementaryTypeName","src":"4634:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8161,"mutability":"mutable","name":"to","nameLocation":"4656:2:29","nodeType":"VariableDeclaration","scope":8183,"src":"4648:10:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8160,"name":"address","nodeType":"ElementaryTypeName","src":"4648:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8163,"mutability":"mutable","name":"tokenId","nameLocation":"4668:7:29","nodeType":"VariableDeclaration","scope":8183,"src":"4660:15:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8162,"name":"uint256","nodeType":"ElementaryTypeName","src":"4660:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4633:43:29"},"returnParameters":{"id":8166,"nodeType":"ParameterList","parameters":[],"src":"4701:0:29"},"scope":8773,"src":"4612:296:29","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[8844],"body":{"id":8201,"nodeType":"Block","src":"5067:56:29","statements":[{"expression":{"arguments":[{"id":8195,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8186,"src":"5094:4:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8196,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8188,"src":"5100:2:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8197,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8190,"src":"5104:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":8198,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5113:2:29","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":8194,"name":"safeTransferFrom","nodeType":"Identifier","overloadedDeclarations":[8202,8232],"referencedDeclaration":8232,"src":"5077:16:29","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":8199,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5077:39:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8200,"nodeType":"ExpressionStatement","src":"5077:39:29"}]},"documentation":{"id":8184,"nodeType":"StructuredDocumentation","src":"4914:55:29","text":" @dev See {IERC721-safeTransferFrom}."},"functionSelector":"42842e0e","id":8202,"implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"4983:16:29","nodeType":"FunctionDefinition","overrides":{"id":8192,"nodeType":"OverrideSpecifier","overrides":[],"src":"5058:8:29"},"parameters":{"id":8191,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8186,"mutability":"mutable","name":"from","nameLocation":"5008:4:29","nodeType":"VariableDeclaration","scope":8202,"src":"5000:12:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8185,"name":"address","nodeType":"ElementaryTypeName","src":"5000:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8188,"mutability":"mutable","name":"to","nameLocation":"5022:2:29","nodeType":"VariableDeclaration","scope":8202,"src":"5014:10:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8187,"name":"address","nodeType":"ElementaryTypeName","src":"5014:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8190,"mutability":"mutable","name":"tokenId","nameLocation":"5034:7:29","nodeType":"VariableDeclaration","scope":8202,"src":"5026:15:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8189,"name":"uint256","nodeType":"ElementaryTypeName","src":"5026:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4999:43:29"},"returnParameters":{"id":8193,"nodeType":"ParameterList","parameters":[],"src":"5067:0:29"},"scope":8773,"src":"4974:149:29","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[8834],"body":{"id":8231,"nodeType":"Block","src":"5301:164:29","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":8217,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9276,"src":"5338:10:29","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":8218,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5338:12:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8219,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8209,"src":"5352:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8216,"name":"_isApprovedOrOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8326,"src":"5319:18:29","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) view returns (bool)"}},"id":8220,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5319:41:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6572206f7220617070726f766564","id":8221,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5362:47:29","typeDescriptions":{"typeIdentifier":"t_stringliteral_12a8e5623d251e191fe4a291d9a59bcc01a4db7a1f5c20fc8de44358c18308af","typeString":"literal_string \"ERC721: caller is not token owner or approved\""},"value":"ERC721: caller is not token owner or approved"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_12a8e5623d251e191fe4a291d9a59bcc01a4db7a1f5c20fc8de44358c18308af","typeString":"literal_string \"ERC721: caller is not token owner or approved\""}],"id":8215,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"5311:7:29","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8222,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5311:99:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8223,"nodeType":"ExpressionStatement","src":"5311:99:29"},{"expression":{"arguments":[{"id":8225,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8205,"src":"5434:4:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8226,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8207,"src":"5440:2:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8227,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8209,"src":"5444:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8228,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8211,"src":"5453:4:29","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":8224,"name":"_safeTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8261,"src":"5420:13:29","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":8229,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5420:38:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8230,"nodeType":"ExpressionStatement","src":"5420:38:29"}]},"documentation":{"id":8203,"nodeType":"StructuredDocumentation","src":"5129:55:29","text":" @dev See {IERC721-safeTransferFrom}."},"functionSelector":"b88d4fde","id":8232,"implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"5198:16:29","nodeType":"FunctionDefinition","overrides":{"id":8213,"nodeType":"OverrideSpecifier","overrides":[],"src":"5292:8:29"},"parameters":{"id":8212,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8205,"mutability":"mutable","name":"from","nameLocation":"5223:4:29","nodeType":"VariableDeclaration","scope":8232,"src":"5215:12:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8204,"name":"address","nodeType":"ElementaryTypeName","src":"5215:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8207,"mutability":"mutable","name":"to","nameLocation":"5237:2:29","nodeType":"VariableDeclaration","scope":8232,"src":"5229:10:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8206,"name":"address","nodeType":"ElementaryTypeName","src":"5229:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8209,"mutability":"mutable","name":"tokenId","nameLocation":"5249:7:29","nodeType":"VariableDeclaration","scope":8232,"src":"5241:15:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8208,"name":"uint256","nodeType":"ElementaryTypeName","src":"5241:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8211,"mutability":"mutable","name":"data","nameLocation":"5271:4:29","nodeType":"VariableDeclaration","scope":8232,"src":"5258:17:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":8210,"name":"bytes","nodeType":"ElementaryTypeName","src":"5258:5:29","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5214:62:29"},"returnParameters":{"id":8214,"nodeType":"ParameterList","parameters":[],"src":"5301:0:29"},"scope":8773,"src":"5189:276:29","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":8260,"nodeType":"Block","src":"6428:165:29","statements":[{"expression":{"arguments":[{"id":8245,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8235,"src":"6448:4:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8246,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8237,"src":"6454:2:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8247,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8239,"src":"6458:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8244,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8599,"src":"6438:9:29","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":8248,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6438:28:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8249,"nodeType":"ExpressionStatement","src":"6438:28:29"},{"expression":{"arguments":[{"arguments":[{"id":8252,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8235,"src":"6507:4:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8253,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8237,"src":"6513:2:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8254,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8239,"src":"6517:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8255,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8241,"src":"6526:4:29","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":8251,"name":"_checkOnERC721Received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8731,"src":"6484:22:29","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (address,address,uint256,bytes memory) returns (bool)"}},"id":8256,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6484:47:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e746572","id":8257,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6533:52:29","typeDescriptions":{"typeIdentifier":"t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e","typeString":"literal_string \"ERC721: transfer to non ERC721Receiver implementer\""},"value":"ERC721: transfer to non ERC721Receiver implementer"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e","typeString":"literal_string \"ERC721: transfer to non ERC721Receiver implementer\""}],"id":8250,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"6476:7:29","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8258,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6476:110:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8259,"nodeType":"ExpressionStatement","src":"6476:110:29"}]},"documentation":{"id":8233,"nodeType":"StructuredDocumentation","src":"5471:850:29","text":" @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n are aware of the ERC721 protocol to prevent tokens from being forever locked.\n `data` is additional data, it has no specified format and it is sent in call to `to`.\n This internal function is equivalent to {safeTransferFrom}, and can be used to e.g.\n implement alternative mechanisms to perform token transfer, such as signature-based.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."},"id":8261,"implemented":true,"kind":"function","modifiers":[],"name":"_safeTransfer","nameLocation":"6335:13:29","nodeType":"FunctionDefinition","parameters":{"id":8242,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8235,"mutability":"mutable","name":"from","nameLocation":"6357:4:29","nodeType":"VariableDeclaration","scope":8261,"src":"6349:12:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8234,"name":"address","nodeType":"ElementaryTypeName","src":"6349:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8237,"mutability":"mutable","name":"to","nameLocation":"6371:2:29","nodeType":"VariableDeclaration","scope":8261,"src":"6363:10:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8236,"name":"address","nodeType":"ElementaryTypeName","src":"6363:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8239,"mutability":"mutable","name":"tokenId","nameLocation":"6383:7:29","nodeType":"VariableDeclaration","scope":8261,"src":"6375:15:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8238,"name":"uint256","nodeType":"ElementaryTypeName","src":"6375:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8241,"mutability":"mutable","name":"data","nameLocation":"6405:4:29","nodeType":"VariableDeclaration","scope":8261,"src":"6392:17:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":8240,"name":"bytes","nodeType":"ElementaryTypeName","src":"6392:5:29","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6348:62:29"},"returnParameters":{"id":8243,"nodeType":"ParameterList","parameters":[],"src":"6428:0:29"},"scope":8773,"src":"6326:267:29","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":8273,"nodeType":"Block","src":"6777:40:29","statements":[{"expression":{"baseExpression":{"id":8269,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7878,"src":"6794:7:29","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":8271,"indexExpression":{"id":8270,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8264,"src":"6802:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6794:16:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":8268,"id":8272,"nodeType":"Return","src":"6787:23:29"}]},"documentation":{"id":8262,"nodeType":"StructuredDocumentation","src":"6599:98:29","text":" @dev Returns the owner of the `tokenId`. Does NOT revert if token doesn't exist"},"id":8274,"implemented":true,"kind":"function","modifiers":[],"name":"_ownerOf","nameLocation":"6711:8:29","nodeType":"FunctionDefinition","parameters":{"id":8265,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8264,"mutability":"mutable","name":"tokenId","nameLocation":"6728:7:29","nodeType":"VariableDeclaration","scope":8274,"src":"6720:15:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8263,"name":"uint256","nodeType":"ElementaryTypeName","src":"6720:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6719:17:29"},"returnParameters":{"id":8268,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8267,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8274,"src":"6768:7:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8266,"name":"address","nodeType":"ElementaryTypeName","src":"6768:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6767:9:29"},"scope":8773,"src":"6702:115:29","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":8291,"nodeType":"Block","src":"7191:55:29","statements":[{"expression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":8289,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":8283,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8277,"src":"7217:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8282,"name":"_ownerOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8274,"src":"7208:8:29","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":8284,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7208:17:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":8287,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7237:1:29","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":8286,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7229:7:29","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8285,"name":"address","nodeType":"ElementaryTypeName","src":"7229:7:29","typeDescriptions":{}}},"id":8288,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7229:10:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7208:31:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":8281,"id":8290,"nodeType":"Return","src":"7201:38:29"}]},"documentation":{"id":8275,"nodeType":"StructuredDocumentation","src":"6823:292:29","text":" @dev Returns whether `tokenId` exists.\n Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}.\n Tokens start existing when they are minted (`_mint`),\n and stop existing when they are burned (`_burn`)."},"id":8292,"implemented":true,"kind":"function","modifiers":[],"name":"_exists","nameLocation":"7129:7:29","nodeType":"FunctionDefinition","parameters":{"id":8278,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8277,"mutability":"mutable","name":"tokenId","nameLocation":"7145:7:29","nodeType":"VariableDeclaration","scope":8292,"src":"7137:15:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8276,"name":"uint256","nodeType":"ElementaryTypeName","src":"7137:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7136:17:29"},"returnParameters":{"id":8281,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8280,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8292,"src":"7185:4:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8279,"name":"bool","nodeType":"ElementaryTypeName","src":"7185:4:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"7184:6:29"},"scope":8773,"src":"7120:126:29","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":8325,"nodeType":"Block","src":"7503:162:29","statements":[{"assignments":[8303],"declarations":[{"constant":false,"id":8303,"mutability":"mutable","name":"owner","nameLocation":"7521:5:29","nodeType":"VariableDeclaration","scope":8325,"src":"7513:13:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8302,"name":"address","nodeType":"ElementaryTypeName","src":"7513:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":8308,"initialValue":{"arguments":[{"id":8306,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8297,"src":"7544:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8304,"name":"ERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8773,"src":"7529:6:29","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC721_$8773_$","typeString":"type(contract ERC721)"}},"id":8305,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7536:7:29","memberName":"ownerOf","nodeType":"MemberAccess","referencedDeclaration":7992,"src":"7529:14:29","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":8307,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7529:23:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"7513:39:29"},{"expression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":8322,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":8316,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":8311,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8309,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8295,"src":"7570:7:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":8310,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8303,"src":"7581:5:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7570:16:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":8313,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8303,"src":"7607:5:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8314,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8295,"src":"7614:7:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":8312,"name":"isApprovedForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8156,"src":"7590:16:29","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view returns (bool)"}},"id":8315,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7590:32:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"7570:52:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":8321,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":8318,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8297,"src":"7638:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8317,"name":"getApproved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8121,"src":"7626:11:29","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":8319,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7626:20:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":8320,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8295,"src":"7650:7:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7626:31:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"7570:87:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":8323,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7569:89:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":8301,"id":8324,"nodeType":"Return","src":"7562:96:29"}]},"documentation":{"id":8293,"nodeType":"StructuredDocumentation","src":"7252:147:29","text":" @dev Returns whether `spender` is allowed to manage `tokenId`.\n Requirements:\n - `tokenId` must exist."},"id":8326,"implemented":true,"kind":"function","modifiers":[],"name":"_isApprovedOrOwner","nameLocation":"7413:18:29","nodeType":"FunctionDefinition","parameters":{"id":8298,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8295,"mutability":"mutable","name":"spender","nameLocation":"7440:7:29","nodeType":"VariableDeclaration","scope":8326,"src":"7432:15:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8294,"name":"address","nodeType":"ElementaryTypeName","src":"7432:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8297,"mutability":"mutable","name":"tokenId","nameLocation":"7457:7:29","nodeType":"VariableDeclaration","scope":8326,"src":"7449:15:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8296,"name":"uint256","nodeType":"ElementaryTypeName","src":"7449:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7431:34:29"},"returnParameters":{"id":8301,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8300,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8326,"src":"7497:4:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8299,"name":"bool","nodeType":"ElementaryTypeName","src":"7497:4:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"7496:6:29"},"scope":8773,"src":"7404:261:29","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":8340,"nodeType":"Block","src":"8060:43:29","statements":[{"expression":{"arguments":[{"id":8335,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8329,"src":"8080:2:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8336,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8331,"src":"8084:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":8337,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8093:2:29","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":8334,"name":"_safeMint","nodeType":"Identifier","overloadedDeclarations":[8341,8370],"referencedDeclaration":8370,"src":"8070:9:29","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,uint256,bytes memory)"}},"id":8338,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8070:26:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8339,"nodeType":"ExpressionStatement","src":"8070:26:29"}]},"documentation":{"id":8327,"nodeType":"StructuredDocumentation","src":"7671:319:29","text":" @dev Safely mints `tokenId` and transfers it to `to`.\n Requirements:\n - `tokenId` must not exist.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."},"id":8341,"implemented":true,"kind":"function","modifiers":[],"name":"_safeMint","nameLocation":"8004:9:29","nodeType":"FunctionDefinition","parameters":{"id":8332,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8329,"mutability":"mutable","name":"to","nameLocation":"8022:2:29","nodeType":"VariableDeclaration","scope":8341,"src":"8014:10:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8328,"name":"address","nodeType":"ElementaryTypeName","src":"8014:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8331,"mutability":"mutable","name":"tokenId","nameLocation":"8034:7:29","nodeType":"VariableDeclaration","scope":8341,"src":"8026:15:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8330,"name":"uint256","nodeType":"ElementaryTypeName","src":"8026:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8013:29:29"},"returnParameters":{"id":8333,"nodeType":"ParameterList","parameters":[],"src":"8060:0:29"},"scope":8773,"src":"7995:108:29","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":8369,"nodeType":"Block","src":"8408:195:29","statements":[{"expression":{"arguments":[{"id":8352,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8344,"src":"8424:2:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8353,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8346,"src":"8428:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8351,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8447,"src":"8418:5:29","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":8354,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8418:18:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8355,"nodeType":"ExpressionStatement","src":"8418:18:29"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"hexValue":"30","id":8360,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8498:1:29","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":8359,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8490:7:29","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8358,"name":"address","nodeType":"ElementaryTypeName","src":"8490:7:29","typeDescriptions":{}}},"id":8361,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8490:10:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8362,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8344,"src":"8502:2:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8363,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8346,"src":"8506:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8364,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8348,"src":"8515:4:29","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":8357,"name":"_checkOnERC721Received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8731,"src":"8467:22:29","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (address,address,uint256,bytes memory) returns (bool)"}},"id":8365,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8467:53:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e746572","id":8366,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8534:52:29","typeDescriptions":{"typeIdentifier":"t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e","typeString":"literal_string \"ERC721: transfer to non ERC721Receiver implementer\""},"value":"ERC721: transfer to non ERC721Receiver implementer"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e","typeString":"literal_string \"ERC721: transfer to non ERC721Receiver implementer\""}],"id":8356,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"8446:7:29","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8367,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8446:150:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8368,"nodeType":"ExpressionStatement","src":"8446:150:29"}]},"documentation":{"id":8342,"nodeType":"StructuredDocumentation","src":"8109:210:29","text":" @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\n forwarded in {IERC721Receiver-onERC721Received} to contract recipients."},"id":8370,"implemented":true,"kind":"function","modifiers":[],"name":"_safeMint","nameLocation":"8333:9:29","nodeType":"FunctionDefinition","parameters":{"id":8349,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8344,"mutability":"mutable","name":"to","nameLocation":"8351:2:29","nodeType":"VariableDeclaration","scope":8370,"src":"8343:10:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8343,"name":"address","nodeType":"ElementaryTypeName","src":"8343:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8346,"mutability":"mutable","name":"tokenId","nameLocation":"8363:7:29","nodeType":"VariableDeclaration","scope":8370,"src":"8355:15:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8345,"name":"uint256","nodeType":"ElementaryTypeName","src":"8355:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8348,"mutability":"mutable","name":"data","nameLocation":"8385:4:29","nodeType":"VariableDeclaration","scope":8370,"src":"8372:17:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":8347,"name":"bytes","nodeType":"ElementaryTypeName","src":"8372:5:29","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"8342:48:29"},"returnParameters":{"id":8350,"nodeType":"ParameterList","parameters":[],"src":"8408:0:29"},"scope":8773,"src":"8324:279:29","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":8446,"nodeType":"Block","src":"8986:859:29","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":8384,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8379,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8373,"src":"9004:2:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":8382,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9018:1:29","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":8381,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9010:7:29","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8380,"name":"address","nodeType":"ElementaryTypeName","src":"9010:7:29","typeDescriptions":{}}},"id":8383,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9010:10:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9004:16:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a206d696e7420746f20746865207a65726f2061646472657373","id":8385,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9022:34:29","typeDescriptions":{"typeIdentifier":"t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6","typeString":"literal_string \"ERC721: mint to the zero address\""},"value":"ERC721: mint to the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6","typeString":"literal_string \"ERC721: mint to the zero address\""}],"id":8378,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"8996:7:29","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8386,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8996:61:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8387,"nodeType":"ExpressionStatement","src":"8996:61:29"},{"expression":{"arguments":[{"id":8392,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"9075:17:29","subExpression":{"arguments":[{"id":8390,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8375,"src":"9084:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8389,"name":"_exists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8292,"src":"9076:7:29","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) view returns (bool)"}},"id":8391,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9076:16:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a20746f6b656e20616c7265616479206d696e746564","id":8393,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9094:30:29","typeDescriptions":{"typeIdentifier":"t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57","typeString":"literal_string \"ERC721: token already minted\""},"value":"ERC721: token already minted"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57","typeString":"literal_string \"ERC721: token already minted\""}],"id":8388,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"9067:7:29","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8394,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9067:58:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8395,"nodeType":"ExpressionStatement","src":"9067:58:29"},{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":8399,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9165:1:29","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":8398,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9157:7:29","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8397,"name":"address","nodeType":"ElementaryTypeName","src":"9157:7:29","typeDescriptions":{}}},"id":8400,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9157:10:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8401,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8373,"src":"9169:2:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8402,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8375,"src":"9173:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"31","id":8403,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9182:1:29","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":8396,"name":"_beforeTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8744,"src":"9136:20:29","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256,uint256)"}},"id":8404,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9136:48:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8405,"nodeType":"ExpressionStatement","src":"9136:48:29"},{"expression":{"arguments":[{"id":8410,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"9279:17:29","subExpression":{"arguments":[{"id":8408,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8375,"src":"9288:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8407,"name":"_exists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8292,"src":"9280:7:29","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) view returns (bool)"}},"id":8409,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9280:16:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a20746f6b656e20616c7265616479206d696e746564","id":8411,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9298:30:29","typeDescriptions":{"typeIdentifier":"t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57","typeString":"literal_string \"ERC721: token already minted\""},"value":"ERC721: token already minted"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57","typeString":"literal_string \"ERC721: token already minted\""}],"id":8406,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"9271:7:29","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8412,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9271:58:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8413,"nodeType":"ExpressionStatement","src":"9271:58:29"},{"id":8420,"nodeType":"UncheckedBlock","src":"9340:360:29","statements":[{"expression":{"id":8418,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":8414,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7882,"src":"9671:9:29","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":8416,"indexExpression":{"id":8415,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8373,"src":"9681:2:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9671:13:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":8417,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9688:1:29","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9671:18:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8419,"nodeType":"ExpressionStatement","src":"9671:18:29"}]},{"expression":{"id":8425,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":8421,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7878,"src":"9710:7:29","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":8423,"indexExpression":{"id":8422,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8375,"src":"9718:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9710:16:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8424,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8373,"src":"9729:2:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9710:21:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":8426,"nodeType":"ExpressionStatement","src":"9710:21:29"},{"eventCall":{"arguments":[{"arguments":[{"hexValue":"30","id":8430,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9764:1:29","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":8429,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9756:7:29","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8428,"name":"address","nodeType":"ElementaryTypeName","src":"9756:7:29","typeDescriptions":{}}},"id":8431,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9756:10:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8432,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8373,"src":"9768:2:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8433,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8375,"src":"9772:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8427,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8788,"src":"9747:8:29","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":8434,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9747:33:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8435,"nodeType":"EmitStatement","src":"9742:38:29"},{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":8439,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9819:1:29","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":8438,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9811:7:29","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8437,"name":"address","nodeType":"ElementaryTypeName","src":"9811:7:29","typeDescriptions":{}}},"id":8440,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9811:10:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8441,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8373,"src":"9823:2:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8442,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8375,"src":"9827:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"31","id":8443,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9836:1:29","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":8436,"name":"_afterTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8757,"src":"9791:19:29","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256,uint256)"}},"id":8444,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9791:47:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8445,"nodeType":"ExpressionStatement","src":"9791:47:29"}]},"documentation":{"id":8371,"nodeType":"StructuredDocumentation","src":"8609:311:29","text":" @dev Mints `tokenId` and transfers it to `to`.\n WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\n Requirements:\n - `tokenId` must not exist.\n - `to` cannot be the zero address.\n Emits a {Transfer} event."},"id":8447,"implemented":true,"kind":"function","modifiers":[],"name":"_mint","nameLocation":"8934:5:29","nodeType":"FunctionDefinition","parameters":{"id":8376,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8373,"mutability":"mutable","name":"to","nameLocation":"8948:2:29","nodeType":"VariableDeclaration","scope":8447,"src":"8940:10:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8372,"name":"address","nodeType":"ElementaryTypeName","src":"8940:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8375,"mutability":"mutable","name":"tokenId","nameLocation":"8960:7:29","nodeType":"VariableDeclaration","scope":8447,"src":"8952:15:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8374,"name":"uint256","nodeType":"ElementaryTypeName","src":"8952:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8939:29:29"},"returnParameters":{"id":8377,"nodeType":"ParameterList","parameters":[],"src":"8986:0:29"},"scope":8773,"src":"8925:920:29","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":8513,"nodeType":"Block","src":"10220:713:29","statements":[{"assignments":[8454],"declarations":[{"constant":false,"id":8454,"mutability":"mutable","name":"owner","nameLocation":"10238:5:29","nodeType":"VariableDeclaration","scope":8513,"src":"10230:13:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8453,"name":"address","nodeType":"ElementaryTypeName","src":"10230:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":8459,"initialValue":{"arguments":[{"id":8457,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8450,"src":"10261:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8455,"name":"ERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8773,"src":"10246:6:29","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC721_$8773_$","typeString":"type(contract ERC721)"}},"id":8456,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10253:7:29","memberName":"ownerOf","nodeType":"MemberAccess","referencedDeclaration":7992,"src":"10246:14:29","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":8458,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10246:23:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"10230:39:29"},{"expression":{"arguments":[{"id":8461,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8454,"src":"10301:5:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":8464,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10316:1:29","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":8463,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10308:7:29","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8462,"name":"address","nodeType":"ElementaryTypeName","src":"10308:7:29","typeDescriptions":{}}},"id":8465,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10308:10:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8466,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8450,"src":"10320:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"31","id":8467,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10329:1:29","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":8460,"name":"_beforeTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8744,"src":"10280:20:29","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256,uint256)"}},"id":8468,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10280:51:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8469,"nodeType":"ExpressionStatement","src":"10280:51:29"},{"expression":{"id":8475,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8470,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8454,"src":"10433:5:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":8473,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8450,"src":"10456:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8471,"name":"ERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8773,"src":"10441:6:29","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC721_$8773_$","typeString":"type(contract ERC721)"}},"id":8472,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10448:7:29","memberName":"ownerOf","nodeType":"MemberAccess","referencedDeclaration":7992,"src":"10441:14:29","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":8474,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10441:23:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"10433:31:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":8476,"nodeType":"ExpressionStatement","src":"10433:31:29"},{"expression":{"id":8480,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"10502:31:29","subExpression":{"baseExpression":{"id":8477,"name":"_tokenApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7886,"src":"10509:15:29","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":8479,"indexExpression":{"id":8478,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8450,"src":"10525:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"10509:24:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8481,"nodeType":"ExpressionStatement","src":"10502:31:29"},{"id":8488,"nodeType":"UncheckedBlock","src":"10544:237:29","statements":[{"expression":{"id":8486,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":8482,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7882,"src":"10749:9:29","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":8484,"indexExpression":{"id":8483,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8454,"src":"10759:5:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"10749:16:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"hexValue":"31","id":8485,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10769:1:29","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"10749:21:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8487,"nodeType":"ExpressionStatement","src":"10749:21:29"}]},{"expression":{"id":8492,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"10790:23:29","subExpression":{"baseExpression":{"id":8489,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7878,"src":"10797:7:29","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":8491,"indexExpression":{"id":8490,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8450,"src":"10805:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"10797:16:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8493,"nodeType":"ExpressionStatement","src":"10790:23:29"},{"eventCall":{"arguments":[{"id":8495,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8454,"src":"10838:5:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":8498,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10853:1:29","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":8497,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10845:7:29","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8496,"name":"address","nodeType":"ElementaryTypeName","src":"10845:7:29","typeDescriptions":{}}},"id":8499,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10845:10:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8500,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8450,"src":"10857:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8494,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8788,"src":"10829:8:29","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":8501,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10829:36:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8502,"nodeType":"EmitStatement","src":"10824:41:29"},{"expression":{"arguments":[{"id":8504,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8454,"src":"10896:5:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":8507,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10911:1:29","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":8506,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10903:7:29","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8505,"name":"address","nodeType":"ElementaryTypeName","src":"10903:7:29","typeDescriptions":{}}},"id":8508,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10903:10:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8509,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8450,"src":"10915:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"31","id":8510,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10924:1:29","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":8503,"name":"_afterTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8757,"src":"10876:19:29","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256,uint256)"}},"id":8511,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10876:50:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8512,"nodeType":"ExpressionStatement","src":"10876:50:29"}]},"documentation":{"id":8448,"nodeType":"StructuredDocumentation","src":"9851:315:29","text":" @dev Destroys `tokenId`.\n The approval is cleared when the token is burned.\n This is an internal function that does not check if the sender is authorized to operate on the token.\n Requirements:\n - `tokenId` must exist.\n Emits a {Transfer} event."},"id":8514,"implemented":true,"kind":"function","modifiers":[],"name":"_burn","nameLocation":"10180:5:29","nodeType":"FunctionDefinition","parameters":{"id":8451,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8450,"mutability":"mutable","name":"tokenId","nameLocation":"10194:7:29","nodeType":"VariableDeclaration","scope":8514,"src":"10186:15:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8449,"name":"uint256","nodeType":"ElementaryTypeName","src":"10186:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10185:17:29"},"returnParameters":{"id":8452,"nodeType":"ParameterList","parameters":[],"src":"10220:0:29"},"scope":8773,"src":"10171:762:29","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":8598,"nodeType":"Block","src":"11336:1124:29","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":8530,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":8527,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8521,"src":"11369:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8525,"name":"ERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8773,"src":"11354:6:29","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC721_$8773_$","typeString":"type(contract ERC721)"}},"id":8526,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11361:7:29","memberName":"ownerOf","nodeType":"MemberAccess","referencedDeclaration":7992,"src":"11354:14:29","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":8528,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11354:23:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":8529,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8517,"src":"11381:4:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"11354:31:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a207472616e736665722066726f6d20696e636f7272656374206f776e6572","id":8531,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11387:39:29","typeDescriptions":{"typeIdentifier":"t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48","typeString":"literal_string \"ERC721: transfer from incorrect owner\""},"value":"ERC721: transfer from incorrect owner"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48","typeString":"literal_string \"ERC721: transfer from incorrect owner\""}],"id":8524,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"11346:7:29","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8532,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11346:81:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8533,"nodeType":"ExpressionStatement","src":"11346:81:29"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":8540,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8535,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8519,"src":"11445:2:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":8538,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11459:1:29","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":8537,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11451:7:29","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8536,"name":"address","nodeType":"ElementaryTypeName","src":"11451:7:29","typeDescriptions":{}}},"id":8539,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11451:10:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"11445:16:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a207472616e7366657220746f20746865207a65726f2061646472657373","id":8541,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11463:38:29","typeDescriptions":{"typeIdentifier":"t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4","typeString":"literal_string \"ERC721: transfer to the zero address\""},"value":"ERC721: transfer to the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4","typeString":"literal_string \"ERC721: transfer to the zero address\""}],"id":8534,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"11437:7:29","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8542,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11437:65:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8543,"nodeType":"ExpressionStatement","src":"11437:65:29"},{"expression":{"arguments":[{"id":8545,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8517,"src":"11534:4:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8546,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8519,"src":"11540:2:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8547,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8521,"src":"11544:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"31","id":8548,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11553:1:29","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":8544,"name":"_beforeTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8744,"src":"11513:20:29","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256,uint256)"}},"id":8549,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11513:42:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8550,"nodeType":"ExpressionStatement","src":"11513:42:29"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":8557,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":8554,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8521,"src":"11670:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8552,"name":"ERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8773,"src":"11655:6:29","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC721_$8773_$","typeString":"type(contract ERC721)"}},"id":8553,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11662:7:29","memberName":"ownerOf","nodeType":"MemberAccess","referencedDeclaration":7992,"src":"11655:14:29","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":8555,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11655:23:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":8556,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8517,"src":"11682:4:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"11655:31:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a207472616e736665722066726f6d20696e636f7272656374206f776e6572","id":8558,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11688:39:29","typeDescriptions":{"typeIdentifier":"t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48","typeString":"literal_string \"ERC721: transfer from incorrect owner\""},"value":"ERC721: transfer from incorrect owner"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48","typeString":"literal_string \"ERC721: transfer from incorrect owner\""}],"id":8551,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"11647:7:29","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8559,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11647:81:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8560,"nodeType":"ExpressionStatement","src":"11647:81:29"},{"expression":{"id":8564,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"11790:31:29","subExpression":{"baseExpression":{"id":8561,"name":"_tokenApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7886,"src":"11797:15:29","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":8563,"indexExpression":{"id":8562,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8521,"src":"11813:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"11797:24:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8565,"nodeType":"ExpressionStatement","src":"11790:31:29"},{"id":8578,"nodeType":"UncheckedBlock","src":"11832:496:29","statements":[{"expression":{"id":8570,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":8566,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7882,"src":"12265:9:29","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":8568,"indexExpression":{"id":8567,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8517,"src":"12275:4:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"12265:15:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"hexValue":"31","id":8569,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12284:1:29","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"12265:20:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8571,"nodeType":"ExpressionStatement","src":"12265:20:29"},{"expression":{"id":8576,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":8572,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7882,"src":"12299:9:29","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":8574,"indexExpression":{"id":8573,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8519,"src":"12309:2:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"12299:13:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":8575,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12316:1:29","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"12299:18:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8577,"nodeType":"ExpressionStatement","src":"12299:18:29"}]},{"expression":{"id":8583,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":8579,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7878,"src":"12337:7:29","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":8581,"indexExpression":{"id":8580,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8521,"src":"12345:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"12337:16:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8582,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8519,"src":"12356:2:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"12337:21:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":8584,"nodeType":"ExpressionStatement","src":"12337:21:29"},{"eventCall":{"arguments":[{"id":8586,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8517,"src":"12383:4:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8587,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8519,"src":"12389:2:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8588,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8521,"src":"12393:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8585,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8788,"src":"12374:8:29","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":8589,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12374:27:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8590,"nodeType":"EmitStatement","src":"12369:32:29"},{"expression":{"arguments":[{"id":8592,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8517,"src":"12432:4:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8593,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8519,"src":"12438:2:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8594,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8521,"src":"12442:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"31","id":8595,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12451:1:29","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":8591,"name":"_afterTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8757,"src":"12412:19:29","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256,uint256)"}},"id":8596,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12412:41:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8597,"nodeType":"ExpressionStatement","src":"12412:41:29"}]},"documentation":{"id":8515,"nodeType":"StructuredDocumentation","src":"10939:313:29","text":" @dev Transfers `tokenId` from `from` to `to`.\n As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\n Requirements:\n - `to` cannot be the zero address.\n - `tokenId` token must be owned by `from`.\n Emits a {Transfer} event."},"id":8599,"implemented":true,"kind":"function","modifiers":[],"name":"_transfer","nameLocation":"11266:9:29","nodeType":"FunctionDefinition","parameters":{"id":8522,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8517,"mutability":"mutable","name":"from","nameLocation":"11284:4:29","nodeType":"VariableDeclaration","scope":8599,"src":"11276:12:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8516,"name":"address","nodeType":"ElementaryTypeName","src":"11276:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8519,"mutability":"mutable","name":"to","nameLocation":"11298:2:29","nodeType":"VariableDeclaration","scope":8599,"src":"11290:10:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8518,"name":"address","nodeType":"ElementaryTypeName","src":"11290:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8521,"mutability":"mutable","name":"tokenId","nameLocation":"11310:7:29","nodeType":"VariableDeclaration","scope":8599,"src":"11302:15:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8520,"name":"uint256","nodeType":"ElementaryTypeName","src":"11302:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11275:43:29"},"returnParameters":{"id":8523,"nodeType":"ParameterList","parameters":[],"src":"11336:0:29"},"scope":8773,"src":"11257:1203:29","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":8622,"nodeType":"Block","src":"12636:107:29","statements":[{"expression":{"id":8611,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":8607,"name":"_tokenApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7886,"src":"12646:15:29","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":8609,"indexExpression":{"id":8608,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8604,"src":"12662:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"12646:24:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8610,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8602,"src":"12673:2:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"12646:29:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":8612,"nodeType":"ExpressionStatement","src":"12646:29:29"},{"eventCall":{"arguments":[{"arguments":[{"id":8616,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8604,"src":"12714:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8614,"name":"ERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8773,"src":"12699:6:29","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC721_$8773_$","typeString":"type(contract ERC721)"}},"id":8615,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12706:7:29","memberName":"ownerOf","nodeType":"MemberAccess","referencedDeclaration":7992,"src":"12699:14:29","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":8617,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12699:23:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8618,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8602,"src":"12724:2:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8619,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8604,"src":"12728:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8613,"name":"Approval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8797,"src":"12690:8:29","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":8620,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12690:46:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8621,"nodeType":"EmitStatement","src":"12685:51:29"}]},"documentation":{"id":8600,"nodeType":"StructuredDocumentation","src":"12466:101:29","text":" @dev Approve `to` to operate on `tokenId`\n Emits an {Approval} event."},"id":8623,"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nameLocation":"12581:8:29","nodeType":"FunctionDefinition","parameters":{"id":8605,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8602,"mutability":"mutable","name":"to","nameLocation":"12598:2:29","nodeType":"VariableDeclaration","scope":8623,"src":"12590:10:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8601,"name":"address","nodeType":"ElementaryTypeName","src":"12590:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8604,"mutability":"mutable","name":"tokenId","nameLocation":"12610:7:29","nodeType":"VariableDeclaration","scope":8623,"src":"12602:15:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8603,"name":"uint256","nodeType":"ElementaryTypeName","src":"12602:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12589:29:29"},"returnParameters":{"id":8606,"nodeType":"ParameterList","parameters":[],"src":"12636:0:29"},"scope":8773,"src":"12572:171:29","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":8654,"nodeType":"Block","src":"12972:184:29","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":8636,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8634,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8626,"src":"12990:5:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":8635,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8628,"src":"12999:8:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"12990:17:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a20617070726f766520746f2063616c6c6572","id":8637,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"13009:27:29","typeDescriptions":{"typeIdentifier":"t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05","typeString":"literal_string \"ERC721: approve to caller\""},"value":"ERC721: approve to caller"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05","typeString":"literal_string \"ERC721: approve to caller\""}],"id":8633,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"12982:7:29","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8638,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12982:55:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8639,"nodeType":"ExpressionStatement","src":"12982:55:29"},{"expression":{"id":8646,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":8640,"name":"_operatorApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7892,"src":"13047:18:29","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":8643,"indexExpression":{"id":8641,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8626,"src":"13066:5:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13047:25:29","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":8644,"indexExpression":{"id":8642,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8628,"src":"13073:8:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"13047:35:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8645,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8630,"src":"13085:8:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"13047:46:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8647,"nodeType":"ExpressionStatement","src":"13047:46:29"},{"eventCall":{"arguments":[{"id":8649,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8626,"src":"13123:5:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8650,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8628,"src":"13130:8:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8651,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8630,"src":"13140:8:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":8648,"name":"ApprovalForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8806,"src":"13108:14:29","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,address,bool)"}},"id":8652,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13108:41:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8653,"nodeType":"EmitStatement","src":"13103:46:29"}]},"documentation":{"id":8624,"nodeType":"StructuredDocumentation","src":"12749:125:29","text":" @dev Approve `operator` to operate on all of `owner` tokens\n Emits an {ApprovalForAll} event."},"id":8655,"implemented":true,"kind":"function","modifiers":[],"name":"_setApprovalForAll","nameLocation":"12888:18:29","nodeType":"FunctionDefinition","parameters":{"id":8631,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8626,"mutability":"mutable","name":"owner","nameLocation":"12915:5:29","nodeType":"VariableDeclaration","scope":8655,"src":"12907:13:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8625,"name":"address","nodeType":"ElementaryTypeName","src":"12907:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8628,"mutability":"mutable","name":"operator","nameLocation":"12930:8:29","nodeType":"VariableDeclaration","scope":8655,"src":"12922:16:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8627,"name":"address","nodeType":"ElementaryTypeName","src":"12922:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8630,"mutability":"mutable","name":"approved","nameLocation":"12945:8:29","nodeType":"VariableDeclaration","scope":8655,"src":"12940:13:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8629,"name":"bool","nodeType":"ElementaryTypeName","src":"12940:4:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"12906:48:29"},"returnParameters":{"id":8632,"nodeType":"ParameterList","parameters":[],"src":"12972:0:29"},"scope":8773,"src":"12879:277:29","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":8668,"nodeType":"Block","src":"13303:70:29","statements":[{"expression":{"arguments":[{"arguments":[{"id":8663,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8658,"src":"13329:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8662,"name":"_exists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8292,"src":"13321:7:29","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) view returns (bool)"}},"id":8664,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13321:16:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a20696e76616c696420746f6b656e204944","id":8665,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"13339:26:29","typeDescriptions":{"typeIdentifier":"t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f","typeString":"literal_string \"ERC721: invalid token ID\""},"value":"ERC721: invalid token ID"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f","typeString":"literal_string \"ERC721: invalid token ID\""}],"id":8661,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"13313:7:29","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8666,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13313:53:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8667,"nodeType":"ExpressionStatement","src":"13313:53:29"}]},"documentation":{"id":8656,"nodeType":"StructuredDocumentation","src":"13162:73:29","text":" @dev Reverts if the `tokenId` has not been minted yet."},"id":8669,"implemented":true,"kind":"function","modifiers":[],"name":"_requireMinted","nameLocation":"13249:14:29","nodeType":"FunctionDefinition","parameters":{"id":8659,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8658,"mutability":"mutable","name":"tokenId","nameLocation":"13272:7:29","nodeType":"VariableDeclaration","scope":8669,"src":"13264:15:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8657,"name":"uint256","nodeType":"ElementaryTypeName","src":"13264:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13263:17:29"},"returnParameters":{"id":8660,"nodeType":"ParameterList","parameters":[],"src":"13303:0:29"},"scope":8773,"src":"13240:133:29","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":8730,"nodeType":"Block","src":"14080:676:29","statements":[{"condition":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":8683,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8674,"src":"14094:2:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":8684,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14097:10:29","memberName":"isContract","nodeType":"MemberAccess","referencedDeclaration":8952,"src":"14094:13:29","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$bound_to$_t_address_$","typeString":"function (address) view returns (bool)"}},"id":8685,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14094:15:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":8728,"nodeType":"Block","src":"14714:36:29","statements":[{"expression":{"hexValue":"74727565","id":8726,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"14735:4:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":8682,"id":8727,"nodeType":"Return","src":"14728:11:29"}]},"id":8729,"nodeType":"IfStatement","src":"14090:660:29","trueBody":{"id":8725,"nodeType":"Block","src":"14111:597:29","statements":[{"clauses":[{"block":{"id":8705,"nodeType":"Block","src":"14225:91:29","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":8703,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8699,"name":"retval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8697,"src":"14250:6:29","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":8700,"name":"IERC721Receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8907,"src":"14260:15:29","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Receiver_$8907_$","typeString":"type(contract IERC721Receiver)"}},"id":8701,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"14276:16:29","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":8906,"src":"14260:32:29","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$","typeString":"function IERC721Receiver.onERC721Received(address,address,uint256,bytes calldata) returns (bytes4)"}},"id":8702,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"14293:8:29","memberName":"selector","nodeType":"MemberAccess","src":"14260:41:29","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"14250:51:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":8682,"id":8704,"nodeType":"Return","src":"14243:58:29"}]},"errorName":"","id":8706,"nodeType":"TryCatchClause","parameters":{"id":8698,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8697,"mutability":"mutable","name":"retval","nameLocation":"14217:6:29","nodeType":"VariableDeclaration","scope":8706,"src":"14210:13:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":8696,"name":"bytes4","nodeType":"ElementaryTypeName","src":"14210:6:29","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"14209:15:29"},"src":"14201:115:29"},{"block":{"id":8722,"nodeType":"Block","src":"14345:353:29","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8713,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":8710,"name":"reason","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8708,"src":"14367:6:29","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":8711,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14374:6:29","memberName":"length","nodeType":"MemberAccess","src":"14367:13:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":8712,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14384:1:29","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"14367:18:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":8720,"nodeType":"Block","src":"14494:190:29","statements":[{"AST":{"nodeType":"YulBlock","src":"14580:86:29","statements":[{"expression":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"14617:2:29","type":"","value":"32"},{"name":"reason","nodeType":"YulIdentifier","src":"14621:6:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14613:3:29"},"nodeType":"YulFunctionCall","src":"14613:15:29"},{"arguments":[{"name":"reason","nodeType":"YulIdentifier","src":"14636:6:29"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"14630:5:29"},"nodeType":"YulFunctionCall","src":"14630:13:29"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"14606:6:29"},"nodeType":"YulFunctionCall","src":"14606:38:29"},"nodeType":"YulExpressionStatement","src":"14606:38:29"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"london","externalReferences":[{"declaration":8708,"isOffset":false,"isSlot":false,"src":"14621:6:29","valueSize":1},{"declaration":8708,"isOffset":false,"isSlot":false,"src":"14636:6:29","valueSize":1}],"id":8719,"nodeType":"InlineAssembly","src":"14571:95:29"}]},"id":8721,"nodeType":"IfStatement","src":"14363:321:29","trueBody":{"id":8718,"nodeType":"Block","src":"14387:101:29","statements":[{"expression":{"arguments":[{"hexValue":"4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e746572","id":8715,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"14416:52:29","typeDescriptions":{"typeIdentifier":"t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e","typeString":"literal_string \"ERC721: transfer to non ERC721Receiver implementer\""},"value":"ERC721: transfer to non ERC721Receiver implementer"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e","typeString":"literal_string \"ERC721: transfer to non ERC721Receiver implementer\""}],"id":8714,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[4294967277,4294967277],"referencedDeclaration":4294967277,"src":"14409:6:29","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":8716,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14409:60:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8717,"nodeType":"ExpressionStatement","src":"14409:60:29"}]}}]},"errorName":"","id":8723,"nodeType":"TryCatchClause","parameters":{"id":8709,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8708,"mutability":"mutable","name":"reason","nameLocation":"14337:6:29","nodeType":"VariableDeclaration","scope":8723,"src":"14324:19:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":8707,"name":"bytes","nodeType":"ElementaryTypeName","src":"14324:5:29","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"14323:21:29"},"src":"14317:381:29"}],"externalCall":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":8690,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9276,"src":"14166:10:29","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":8691,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14166:12:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8692,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8672,"src":"14180:4:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8693,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8676,"src":"14186:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8694,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8678,"src":"14195:4:29","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"id":8687,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8674,"src":"14145:2:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8686,"name":"IERC721Receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8907,"src":"14129:15:29","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Receiver_$8907_$","typeString":"type(contract IERC721Receiver)"}},"id":8688,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14129:19:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC721Receiver_$8907","typeString":"contract IERC721Receiver"}},"id":8689,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14149:16:29","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":8906,"src":"14129:36:29","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function (address,address,uint256,bytes memory) external returns (bytes4)"}},"id":8695,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14129:71:29","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":8724,"nodeType":"TryStatement","src":"14125:573:29"}]}}]},"documentation":{"id":8670,"nodeType":"StructuredDocumentation","src":"13379:541:29","text":" @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address.\n The call is not executed if the target address is not a contract.\n @param from address representing the previous owner of the given token ID\n @param to target address that will receive the tokens\n @param tokenId uint256 ID of the token to be transferred\n @param data bytes optional data to send along with the call\n @return bool whether the call correctly returned the expected magic value"},"id":8731,"implemented":true,"kind":"function","modifiers":[],"name":"_checkOnERC721Received","nameLocation":"13934:22:29","nodeType":"FunctionDefinition","parameters":{"id":8679,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8672,"mutability":"mutable","name":"from","nameLocation":"13974:4:29","nodeType":"VariableDeclaration","scope":8731,"src":"13966:12:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8671,"name":"address","nodeType":"ElementaryTypeName","src":"13966:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8674,"mutability":"mutable","name":"to","nameLocation":"13996:2:29","nodeType":"VariableDeclaration","scope":8731,"src":"13988:10:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8673,"name":"address","nodeType":"ElementaryTypeName","src":"13988:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8676,"mutability":"mutable","name":"tokenId","nameLocation":"14016:7:29","nodeType":"VariableDeclaration","scope":8731,"src":"14008:15:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8675,"name":"uint256","nodeType":"ElementaryTypeName","src":"14008:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8678,"mutability":"mutable","name":"data","nameLocation":"14046:4:29","nodeType":"VariableDeclaration","scope":8731,"src":"14033:17:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":8677,"name":"bytes","nodeType":"ElementaryTypeName","src":"14033:5:29","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"13956:100:29"},"returnParameters":{"id":8682,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8681,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8731,"src":"14074:4:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8680,"name":"bool","nodeType":"ElementaryTypeName","src":"14074:4:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"14073:6:29"},"scope":8773,"src":"13925:831:29","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":8743,"nodeType":"Block","src":"15586:2:29","statements":[]},"documentation":{"id":8732,"nodeType":"StructuredDocumentation","src":"14762:705:29","text":" @dev Hook that is called before any token transfer. This includes minting and burning. If {ERC721Consecutive} is\n used, the hook may be called as part of a consecutive (batch) mint, as indicated by `batchSize` greater than 1.\n Calling conditions:\n - When `from` and `to` are both non-zero, ``from``'s tokens will be transferred to `to`.\n - When `from` is zero, the tokens will be minted for `to`.\n - When `to` is zero, ``from``'s tokens will be burned.\n - `from` and `to` are never both zero.\n - `batchSize` is non-zero.\n To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]."},"id":8744,"implemented":true,"kind":"function","modifiers":[],"name":"_beforeTokenTransfer","nameLocation":"15481:20:29","nodeType":"FunctionDefinition","parameters":{"id":8741,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8734,"mutability":"mutable","name":"from","nameLocation":"15510:4:29","nodeType":"VariableDeclaration","scope":8744,"src":"15502:12:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8733,"name":"address","nodeType":"ElementaryTypeName","src":"15502:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8736,"mutability":"mutable","name":"to","nameLocation":"15524:2:29","nodeType":"VariableDeclaration","scope":8744,"src":"15516:10:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8735,"name":"address","nodeType":"ElementaryTypeName","src":"15516:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8738,"mutability":"mutable","name":"firstTokenId","nameLocation":"15536:12:29","nodeType":"VariableDeclaration","scope":8744,"src":"15528:20:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8737,"name":"uint256","nodeType":"ElementaryTypeName","src":"15528:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8740,"mutability":"mutable","name":"batchSize","nameLocation":"15558:9:29","nodeType":"VariableDeclaration","scope":8744,"src":"15550:17:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8739,"name":"uint256","nodeType":"ElementaryTypeName","src":"15550:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15501:67:29"},"returnParameters":{"id":8742,"nodeType":"ParameterList","parameters":[],"src":"15586:0:29"},"scope":8773,"src":"15472:116:29","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":8756,"nodeType":"Block","src":"16407:2:29","statements":[]},"documentation":{"id":8745,"nodeType":"StructuredDocumentation","src":"15594:695:29","text":" @dev Hook that is called after any token transfer. This includes minting and burning. If {ERC721Consecutive} is\n used, the hook may be called as part of a consecutive (batch) mint, as indicated by `batchSize` greater than 1.\n Calling conditions:\n - When `from` and `to` are both non-zero, ``from``'s tokens were transferred to `to`.\n - When `from` is zero, the tokens were minted for `to`.\n - When `to` is zero, ``from``'s tokens were burned.\n - `from` and `to` are never both zero.\n - `batchSize` is non-zero.\n To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]."},"id":8757,"implemented":true,"kind":"function","modifiers":[],"name":"_afterTokenTransfer","nameLocation":"16303:19:29","nodeType":"FunctionDefinition","parameters":{"id":8754,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8747,"mutability":"mutable","name":"from","nameLocation":"16331:4:29","nodeType":"VariableDeclaration","scope":8757,"src":"16323:12:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8746,"name":"address","nodeType":"ElementaryTypeName","src":"16323:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8749,"mutability":"mutable","name":"to","nameLocation":"16345:2:29","nodeType":"VariableDeclaration","scope":8757,"src":"16337:10:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8748,"name":"address","nodeType":"ElementaryTypeName","src":"16337:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8751,"mutability":"mutable","name":"firstTokenId","nameLocation":"16357:12:29","nodeType":"VariableDeclaration","scope":8757,"src":"16349:20:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8750,"name":"uint256","nodeType":"ElementaryTypeName","src":"16349:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8753,"mutability":"mutable","name":"batchSize","nameLocation":"16379:9:29","nodeType":"VariableDeclaration","scope":8757,"src":"16371:17:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8752,"name":"uint256","nodeType":"ElementaryTypeName","src":"16371:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16322:67:29"},"returnParameters":{"id":8755,"nodeType":"ParameterList","parameters":[],"src":"16407:0:29"},"scope":8773,"src":"16294:115:29","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":8771,"nodeType":"Block","src":"16958:45:29","statements":[{"expression":{"id":8769,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":8765,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7882,"src":"16968:9:29","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":8767,"indexExpression":{"id":8766,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8760,"src":"16978:7:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"16968:18:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":8768,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8762,"src":"16990:6:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16968:28:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8770,"nodeType":"ExpressionStatement","src":"16968:28:29"}]},"documentation":{"id":8758,"nodeType":"StructuredDocumentation","src":"16415:409:29","text":" @dev Unsafe write access to the balances, used by extensions that \"mint\" tokens using an {ownerOf} override.\n WARNING: Anyone calling this MUST ensure that the balances remain consistent with the ownership. The invariant\n being that for any address `a` the value returned by `balanceOf(a)` must be equal to the number of tokens such\n that `ownerOf(tokenId)` is `a`."},"id":8772,"implemented":true,"kind":"function","modifiers":[],"name":"__unsafe_increaseBalance","nameLocation":"16891:24:29","nodeType":"FunctionDefinition","parameters":{"id":8763,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8760,"mutability":"mutable","name":"account","nameLocation":"16924:7:29","nodeType":"VariableDeclaration","scope":8772,"src":"16916:15:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8759,"name":"address","nodeType":"ElementaryTypeName","src":"16916:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8762,"mutability":"mutable","name":"amount","nameLocation":"16941:6:29","nodeType":"VariableDeclaration","scope":8772,"src":"16933:14:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8761,"name":"uint256","nodeType":"ElementaryTypeName","src":"16933:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16915:33:29"},"returnParameters":{"id":8764,"nodeType":"ParameterList","parameters":[],"src":"16958:0:29"},"scope":8773,"src":"16882:121:29","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":8774,"src":"628:16377:29","usedErrors":[]}],"src":"107:16899:29"},"id":29},"@openzeppelin/contracts/token/ERC721/IERC721.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC721/IERC721.sol","exportedSymbols":{"IERC165":[9743],"IERC721":[8889]},"id":8890,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":8775,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"108:23:30"},{"absolutePath":"@openzeppelin/contracts/utils/introspection/IERC165.sol","file":"../../utils/introspection/IERC165.sol","id":8776,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8890,"sourceUnit":9744,"src":"133:47:30","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":8778,"name":"IERC165","nameLocations":["271:7:30"],"nodeType":"IdentifierPath","referencedDeclaration":9743,"src":"271:7:30"},"id":8779,"nodeType":"InheritanceSpecifier","src":"271:7:30"}],"canonicalName":"IERC721","contractDependencies":[],"contractKind":"interface","documentation":{"id":8777,"nodeType":"StructuredDocumentation","src":"182:67:30","text":" @dev Required interface of an ERC721 compliant contract."},"fullyImplemented":false,"id":8889,"linearizedBaseContracts":[8889,9743],"name":"IERC721","nameLocation":"260:7:30","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":8780,"nodeType":"StructuredDocumentation","src":"285:88:30","text":" @dev Emitted when `tokenId` token is transferred from `from` to `to`."},"eventSelector":"ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","id":8788,"name":"Transfer","nameLocation":"384:8:30","nodeType":"EventDefinition","parameters":{"id":8787,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8782,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"409:4:30","nodeType":"VariableDeclaration","scope":8788,"src":"393:20:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8781,"name":"address","nodeType":"ElementaryTypeName","src":"393:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8784,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"431:2:30","nodeType":"VariableDeclaration","scope":8788,"src":"415:18:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8783,"name":"address","nodeType":"ElementaryTypeName","src":"415:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8786,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"451:7:30","nodeType":"VariableDeclaration","scope":8788,"src":"435:23:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8785,"name":"uint256","nodeType":"ElementaryTypeName","src":"435:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"392:67:30"},"src":"378:82:30"},{"anonymous":false,"documentation":{"id":8789,"nodeType":"StructuredDocumentation","src":"466:94:30","text":" @dev Emitted when `owner` enables `approved` to manage the `tokenId` token."},"eventSelector":"8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925","id":8797,"name":"Approval","nameLocation":"571:8:30","nodeType":"EventDefinition","parameters":{"id":8796,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8791,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"596:5:30","nodeType":"VariableDeclaration","scope":8797,"src":"580:21:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8790,"name":"address","nodeType":"ElementaryTypeName","src":"580:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8793,"indexed":true,"mutability":"mutable","name":"approved","nameLocation":"619:8:30","nodeType":"VariableDeclaration","scope":8797,"src":"603:24:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8792,"name":"address","nodeType":"ElementaryTypeName","src":"603:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8795,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"645:7:30","nodeType":"VariableDeclaration","scope":8797,"src":"629:23:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8794,"name":"uint256","nodeType":"ElementaryTypeName","src":"629:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"579:74:30"},"src":"565:89:30"},{"anonymous":false,"documentation":{"id":8798,"nodeType":"StructuredDocumentation","src":"660:117:30","text":" @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets."},"eventSelector":"17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31","id":8806,"name":"ApprovalForAll","nameLocation":"788:14:30","nodeType":"EventDefinition","parameters":{"id":8805,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8800,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"819:5:30","nodeType":"VariableDeclaration","scope":8806,"src":"803:21:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8799,"name":"address","nodeType":"ElementaryTypeName","src":"803:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8802,"indexed":true,"mutability":"mutable","name":"operator","nameLocation":"842:8:30","nodeType":"VariableDeclaration","scope":8806,"src":"826:24:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8801,"name":"address","nodeType":"ElementaryTypeName","src":"826:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8804,"indexed":false,"mutability":"mutable","name":"approved","nameLocation":"857:8:30","nodeType":"VariableDeclaration","scope":8806,"src":"852:13:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8803,"name":"bool","nodeType":"ElementaryTypeName","src":"852:4:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"802:64:30"},"src":"782:85:30"},{"documentation":{"id":8807,"nodeType":"StructuredDocumentation","src":"873:76:30","text":" @dev Returns the number of tokens in ``owner``'s account."},"functionSelector":"70a08231","id":8814,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"963:9:30","nodeType":"FunctionDefinition","parameters":{"id":8810,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8809,"mutability":"mutable","name":"owner","nameLocation":"981:5:30","nodeType":"VariableDeclaration","scope":8814,"src":"973:13:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8808,"name":"address","nodeType":"ElementaryTypeName","src":"973:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"972:15:30"},"returnParameters":{"id":8813,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8812,"mutability":"mutable","name":"balance","nameLocation":"1019:7:30","nodeType":"VariableDeclaration","scope":8814,"src":"1011:15:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8811,"name":"uint256","nodeType":"ElementaryTypeName","src":"1011:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1010:17:30"},"scope":8889,"src":"954:74:30","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":8815,"nodeType":"StructuredDocumentation","src":"1034:131:30","text":" @dev Returns the owner of the `tokenId` token.\n Requirements:\n - `tokenId` must exist."},"functionSelector":"6352211e","id":8822,"implemented":false,"kind":"function","modifiers":[],"name":"ownerOf","nameLocation":"1179:7:30","nodeType":"FunctionDefinition","parameters":{"id":8818,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8817,"mutability":"mutable","name":"tokenId","nameLocation":"1195:7:30","nodeType":"VariableDeclaration","scope":8822,"src":"1187:15:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8816,"name":"uint256","nodeType":"ElementaryTypeName","src":"1187:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1186:17:30"},"returnParameters":{"id":8821,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8820,"mutability":"mutable","name":"owner","nameLocation":"1235:5:30","nodeType":"VariableDeclaration","scope":8822,"src":"1227:13:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8819,"name":"address","nodeType":"ElementaryTypeName","src":"1227:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1226:15:30"},"scope":8889,"src":"1170:72:30","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":8823,"nodeType":"StructuredDocumentation","src":"1248:556:30","text":" @dev Safely transfers `tokenId` token from `from` to `to`.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."},"functionSelector":"b88d4fde","id":8834,"implemented":false,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"1818:16:30","nodeType":"FunctionDefinition","parameters":{"id":8832,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8825,"mutability":"mutable","name":"from","nameLocation":"1843:4:30","nodeType":"VariableDeclaration","scope":8834,"src":"1835:12:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8824,"name":"address","nodeType":"ElementaryTypeName","src":"1835:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8827,"mutability":"mutable","name":"to","nameLocation":"1857:2:30","nodeType":"VariableDeclaration","scope":8834,"src":"1849:10:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8826,"name":"address","nodeType":"ElementaryTypeName","src":"1849:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8829,"mutability":"mutable","name":"tokenId","nameLocation":"1869:7:30","nodeType":"VariableDeclaration","scope":8834,"src":"1861:15:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8828,"name":"uint256","nodeType":"ElementaryTypeName","src":"1861:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8831,"mutability":"mutable","name":"data","nameLocation":"1893:4:30","nodeType":"VariableDeclaration","scope":8834,"src":"1878:19:30","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":8830,"name":"bytes","nodeType":"ElementaryTypeName","src":"1878:5:30","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1834:64:30"},"returnParameters":{"id":8833,"nodeType":"ParameterList","parameters":[],"src":"1907:0:30"},"scope":8889,"src":"1809:99:30","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":8835,"nodeType":"StructuredDocumentation","src":"1914:687:30","text":" @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n are aware of the ERC721 protocol to prevent tokens from being forever locked.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."},"functionSelector":"42842e0e","id":8844,"implemented":false,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"2615:16:30","nodeType":"FunctionDefinition","parameters":{"id":8842,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8837,"mutability":"mutable","name":"from","nameLocation":"2640:4:30","nodeType":"VariableDeclaration","scope":8844,"src":"2632:12:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8836,"name":"address","nodeType":"ElementaryTypeName","src":"2632:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8839,"mutability":"mutable","name":"to","nameLocation":"2654:2:30","nodeType":"VariableDeclaration","scope":8844,"src":"2646:10:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8838,"name":"address","nodeType":"ElementaryTypeName","src":"2646:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8841,"mutability":"mutable","name":"tokenId","nameLocation":"2666:7:30","nodeType":"VariableDeclaration","scope":8844,"src":"2658:15:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8840,"name":"uint256","nodeType":"ElementaryTypeName","src":"2658:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2631:43:30"},"returnParameters":{"id":8843,"nodeType":"ParameterList","parameters":[],"src":"2683:0:30"},"scope":8889,"src":"2606:78:30","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":8845,"nodeType":"StructuredDocumentation","src":"2690:732:30","text":" @dev Transfers `tokenId` token from `from` to `to`.\n WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721\n or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must\n understand this adds an external call which potentially creates a reentrancy vulnerability.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must be owned by `from`.\n - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n Emits a {Transfer} event."},"functionSelector":"23b872dd","id":8854,"implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"3436:12:30","nodeType":"FunctionDefinition","parameters":{"id":8852,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8847,"mutability":"mutable","name":"from","nameLocation":"3457:4:30","nodeType":"VariableDeclaration","scope":8854,"src":"3449:12:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8846,"name":"address","nodeType":"ElementaryTypeName","src":"3449:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8849,"mutability":"mutable","name":"to","nameLocation":"3471:2:30","nodeType":"VariableDeclaration","scope":8854,"src":"3463:10:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8848,"name":"address","nodeType":"ElementaryTypeName","src":"3463:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8851,"mutability":"mutable","name":"tokenId","nameLocation":"3483:7:30","nodeType":"VariableDeclaration","scope":8854,"src":"3475:15:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8850,"name":"uint256","nodeType":"ElementaryTypeName","src":"3475:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3448:43:30"},"returnParameters":{"id":8853,"nodeType":"ParameterList","parameters":[],"src":"3500:0:30"},"scope":8889,"src":"3427:74:30","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":8855,"nodeType":"StructuredDocumentation","src":"3507:452:30","text":" @dev Gives permission to `to` to transfer `tokenId` token to another account.\n The approval is cleared when the token is transferred.\n Only a single account can be approved at a time, so approving the zero address clears previous approvals.\n Requirements:\n - The caller must own the token or be an approved operator.\n - `tokenId` must exist.\n Emits an {Approval} event."},"functionSelector":"095ea7b3","id":8862,"implemented":false,"kind":"function","modifiers":[],"name":"approve","nameLocation":"3973:7:30","nodeType":"FunctionDefinition","parameters":{"id":8860,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8857,"mutability":"mutable","name":"to","nameLocation":"3989:2:30","nodeType":"VariableDeclaration","scope":8862,"src":"3981:10:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8856,"name":"address","nodeType":"ElementaryTypeName","src":"3981:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8859,"mutability":"mutable","name":"tokenId","nameLocation":"4001:7:30","nodeType":"VariableDeclaration","scope":8862,"src":"3993:15:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8858,"name":"uint256","nodeType":"ElementaryTypeName","src":"3993:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3980:29:30"},"returnParameters":{"id":8861,"nodeType":"ParameterList","parameters":[],"src":"4018:0:30"},"scope":8889,"src":"3964:55:30","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":8863,"nodeType":"StructuredDocumentation","src":"4025:309:30","text":" @dev Approve or remove `operator` as an operator for the caller.\n Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\n Requirements:\n - The `operator` cannot be the caller.\n Emits an {ApprovalForAll} event."},"functionSelector":"a22cb465","id":8870,"implemented":false,"kind":"function","modifiers":[],"name":"setApprovalForAll","nameLocation":"4348:17:30","nodeType":"FunctionDefinition","parameters":{"id":8868,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8865,"mutability":"mutable","name":"operator","nameLocation":"4374:8:30","nodeType":"VariableDeclaration","scope":8870,"src":"4366:16:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8864,"name":"address","nodeType":"ElementaryTypeName","src":"4366:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8867,"mutability":"mutable","name":"approved","nameLocation":"4389:8:30","nodeType":"VariableDeclaration","scope":8870,"src":"4384:13:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8866,"name":"bool","nodeType":"ElementaryTypeName","src":"4384:4:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4365:33:30"},"returnParameters":{"id":8869,"nodeType":"ParameterList","parameters":[],"src":"4407:0:30"},"scope":8889,"src":"4339:69:30","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":8871,"nodeType":"StructuredDocumentation","src":"4414:139:30","text":" @dev Returns the account approved for `tokenId` token.\n Requirements:\n - `tokenId` must exist."},"functionSelector":"081812fc","id":8878,"implemented":false,"kind":"function","modifiers":[],"name":"getApproved","nameLocation":"4567:11:30","nodeType":"FunctionDefinition","parameters":{"id":8874,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8873,"mutability":"mutable","name":"tokenId","nameLocation":"4587:7:30","nodeType":"VariableDeclaration","scope":8878,"src":"4579:15:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8872,"name":"uint256","nodeType":"ElementaryTypeName","src":"4579:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4578:17:30"},"returnParameters":{"id":8877,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8876,"mutability":"mutable","name":"operator","nameLocation":"4627:8:30","nodeType":"VariableDeclaration","scope":8878,"src":"4619:16:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8875,"name":"address","nodeType":"ElementaryTypeName","src":"4619:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4618:18:30"},"scope":8889,"src":"4558:79:30","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":8879,"nodeType":"StructuredDocumentation","src":"4643:138:30","text":" @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\n See {setApprovalForAll}"},"functionSelector":"e985e9c5","id":8888,"implemented":false,"kind":"function","modifiers":[],"name":"isApprovedForAll","nameLocation":"4795:16:30","nodeType":"FunctionDefinition","parameters":{"id":8884,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8881,"mutability":"mutable","name":"owner","nameLocation":"4820:5:30","nodeType":"VariableDeclaration","scope":8888,"src":"4812:13:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8880,"name":"address","nodeType":"ElementaryTypeName","src":"4812:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8883,"mutability":"mutable","name":"operator","nameLocation":"4835:8:30","nodeType":"VariableDeclaration","scope":8888,"src":"4827:16:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8882,"name":"address","nodeType":"ElementaryTypeName","src":"4827:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4811:33:30"},"returnParameters":{"id":8887,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8886,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8888,"src":"4868:4:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8885,"name":"bool","nodeType":"ElementaryTypeName","src":"4868:4:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4867:6:30"},"scope":8889,"src":"4786:88:30","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":8890,"src":"250:4626:30","usedErrors":[]}],"src":"108:4769:30"},"id":30},"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol","exportedSymbols":{"IERC721Receiver":[8907]},"id":8908,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":8891,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"116:23:31"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC721Receiver","contractDependencies":[],"contractKind":"interface","documentation":{"id":8892,"nodeType":"StructuredDocumentation","src":"141:152:31","text":" @title ERC721 token receiver interface\n @dev Interface for any contract that wants to support safeTransfers\n from ERC721 asset contracts."},"fullyImplemented":false,"id":8907,"linearizedBaseContracts":[8907],"name":"IERC721Receiver","nameLocation":"304:15:31","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":8893,"nodeType":"StructuredDocumentation","src":"326:493:31","text":" @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}\n by `operator` from `from`, this function is called.\n It must return its Solidity selector to confirm the token transfer.\n If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted.\n The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`."},"functionSelector":"150b7a02","id":8906,"implemented":false,"kind":"function","modifiers":[],"name":"onERC721Received","nameLocation":"833:16:31","nodeType":"FunctionDefinition","parameters":{"id":8902,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8895,"mutability":"mutable","name":"operator","nameLocation":"867:8:31","nodeType":"VariableDeclaration","scope":8906,"src":"859:16:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8894,"name":"address","nodeType":"ElementaryTypeName","src":"859:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8897,"mutability":"mutable","name":"from","nameLocation":"893:4:31","nodeType":"VariableDeclaration","scope":8906,"src":"885:12:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8896,"name":"address","nodeType":"ElementaryTypeName","src":"885:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8899,"mutability":"mutable","name":"tokenId","nameLocation":"915:7:31","nodeType":"VariableDeclaration","scope":8906,"src":"907:15:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8898,"name":"uint256","nodeType":"ElementaryTypeName","src":"907:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8901,"mutability":"mutable","name":"data","nameLocation":"947:4:31","nodeType":"VariableDeclaration","scope":8906,"src":"932:19:31","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":8900,"name":"bytes","nodeType":"ElementaryTypeName","src":"932:5:31","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"849:108:31"},"returnParameters":{"id":8905,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8904,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8906,"src":"976:6:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":8903,"name":"bytes4","nodeType":"ElementaryTypeName","src":"976:6:31","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"975:8:31"},"scope":8907,"src":"824:160:31","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":8908,"src":"294:692:31","usedErrors":[]}],"src":"116:871:31"},"id":31},"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol","exportedSymbols":{"IERC165":[9743],"IERC721":[8889],"IERC721Metadata":[8934]},"id":8935,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":8909,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"112:23:32"},{"absolutePath":"@openzeppelin/contracts/token/ERC721/IERC721.sol","file":"../IERC721.sol","id":8910,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8935,"sourceUnit":8890,"src":"137:24:32","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":8912,"name":"IERC721","nameLocations":["326:7:32"],"nodeType":"IdentifierPath","referencedDeclaration":8889,"src":"326:7:32"},"id":8913,"nodeType":"InheritanceSpecifier","src":"326:7:32"}],"canonicalName":"IERC721Metadata","contractDependencies":[],"contractKind":"interface","documentation":{"id":8911,"nodeType":"StructuredDocumentation","src":"163:133:32","text":" @title ERC-721 Non-Fungible Token Standard, optional metadata extension\n @dev See https://eips.ethereum.org/EIPS/eip-721"},"fullyImplemented":false,"id":8934,"linearizedBaseContracts":[8934,8889,9743],"name":"IERC721Metadata","nameLocation":"307:15:32","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":8914,"nodeType":"StructuredDocumentation","src":"340:58:32","text":" @dev Returns the token collection name."},"functionSelector":"06fdde03","id":8919,"implemented":false,"kind":"function","modifiers":[],"name":"name","nameLocation":"412:4:32","nodeType":"FunctionDefinition","parameters":{"id":8915,"nodeType":"ParameterList","parameters":[],"src":"416:2:32"},"returnParameters":{"id":8918,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8917,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8919,"src":"442:13:32","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":8916,"name":"string","nodeType":"ElementaryTypeName","src":"442:6:32","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"441:15:32"},"scope":8934,"src":"403:54:32","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":8920,"nodeType":"StructuredDocumentation","src":"463:60:32","text":" @dev Returns the token collection symbol."},"functionSelector":"95d89b41","id":8925,"implemented":false,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"537:6:32","nodeType":"FunctionDefinition","parameters":{"id":8921,"nodeType":"ParameterList","parameters":[],"src":"543:2:32"},"returnParameters":{"id":8924,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8923,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8925,"src":"569:13:32","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":8922,"name":"string","nodeType":"ElementaryTypeName","src":"569:6:32","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"568:15:32"},"scope":8934,"src":"528:56:32","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":8926,"nodeType":"StructuredDocumentation","src":"590:90:32","text":" @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token."},"functionSelector":"c87b56dd","id":8933,"implemented":false,"kind":"function","modifiers":[],"name":"tokenURI","nameLocation":"694:8:32","nodeType":"FunctionDefinition","parameters":{"id":8929,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8928,"mutability":"mutable","name":"tokenId","nameLocation":"711:7:32","nodeType":"VariableDeclaration","scope":8933,"src":"703:15:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8927,"name":"uint256","nodeType":"ElementaryTypeName","src":"703:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"702:17:32"},"returnParameters":{"id":8932,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8931,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8933,"src":"743:13:32","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":8930,"name":"string","nodeType":"ElementaryTypeName","src":"743:6:32","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"742:15:32"},"scope":8934,"src":"685:73:32","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":8935,"src":"297:463:32","usedErrors":[]}],"src":"112:649:32"},"id":32},"@openzeppelin/contracts/utils/Address.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/Address.sol","exportedSymbols":{"Address":[9264]},"id":9265,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":8936,"literals":["solidity","^","0.8",".1"],"nodeType":"PragmaDirective","src":"101:23:33"},{"abstract":false,"baseContracts":[],"canonicalName":"Address","contractDependencies":[],"contractKind":"library","documentation":{"id":8937,"nodeType":"StructuredDocumentation","src":"126:67:33","text":" @dev Collection of functions related to the address type"},"fullyImplemented":true,"id":9264,"linearizedBaseContracts":[9264],"name":"Address","nameLocation":"202:7:33","nodeType":"ContractDefinition","nodes":[{"body":{"id":8951,"nodeType":"Block","src":"1478:254:33","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8949,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":8945,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8940,"src":"1702:7:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":8946,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1710:4:33","memberName":"code","nodeType":"MemberAccess","src":"1702:12:33","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":8947,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1715:6:33","memberName":"length","nodeType":"MemberAccess","src":"1702:19:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":8948,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1724:1:33","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1702:23:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":8944,"id":8950,"nodeType":"Return","src":"1695:30:33"}]},"documentation":{"id":8938,"nodeType":"StructuredDocumentation","src":"216:1191:33","text":" @dev Returns true if `account` is a contract.\n [IMPORTANT]\n ====\n It is unsafe to assume that an address for which this function returns\n false is an externally-owned account (EOA) and not a contract.\n Among others, `isContract` will return false for the following\n types of addresses:\n - an externally-owned account\n - a contract in construction\n - an address where a contract will be created\n - an address where a contract lived, but was destroyed\n Furthermore, `isContract` will also return true if the target contract within\n the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\n which only has an effect at the end of a transaction.\n ====\n [IMPORTANT]\n ====\n You shouldn't rely on `isContract` to protect against flash loan attacks!\n Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\n like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\n constructor.\n ===="},"id":8952,"implemented":true,"kind":"function","modifiers":[],"name":"isContract","nameLocation":"1421:10:33","nodeType":"FunctionDefinition","parameters":{"id":8941,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8940,"mutability":"mutable","name":"account","nameLocation":"1440:7:33","nodeType":"VariableDeclaration","scope":8952,"src":"1432:15:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8939,"name":"address","nodeType":"ElementaryTypeName","src":"1432:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1431:17:33"},"returnParameters":{"id":8944,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8943,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8952,"src":"1472:4:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8942,"name":"bool","nodeType":"ElementaryTypeName","src":"1472:4:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1471:6:33"},"scope":9264,"src":"1412:320:33","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":8985,"nodeType":"Block","src":"2718:241:33","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8967,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":8963,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967268,"src":"2744:4:33","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$9264","typeString":"library Address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Address_$9264","typeString":"library Address"}],"id":8962,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2736:7:33","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8961,"name":"address","nodeType":"ElementaryTypeName","src":"2736:7:33","typeDescriptions":{}}},"id":8964,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2736:13:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":8965,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2750:7:33","memberName":"balance","nodeType":"MemberAccess","src":"2736:21:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":8966,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8957,"src":"2761:6:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2736:31:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20696e73756666696369656e742062616c616e6365","id":8968,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2769:31:33","typeDescriptions":{"typeIdentifier":"t_stringliteral_5597a22abd0ef5332f8053862eb236db7590f17e2b93a53f63a103becfb561f9","typeString":"literal_string \"Address: insufficient balance\""},"value":"Address: insufficient balance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5597a22abd0ef5332f8053862eb236db7590f17e2b93a53f63a103becfb561f9","typeString":"literal_string \"Address: insufficient balance\""}],"id":8960,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"2728:7:33","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8969,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2728:73:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8970,"nodeType":"ExpressionStatement","src":"2728:73:33"},{"assignments":[8972,null],"declarations":[{"constant":false,"id":8972,"mutability":"mutable","name":"success","nameLocation":"2818:7:33","nodeType":"VariableDeclaration","scope":8985,"src":"2813:12:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8971,"name":"bool","nodeType":"ElementaryTypeName","src":"2813:4:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":8979,"initialValue":{"arguments":[{"hexValue":"","id":8977,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2861:2:33","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"id":8973,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8955,"src":"2831:9:33","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":8974,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2841:4:33","memberName":"call","nodeType":"MemberAccess","src":"2831:14:33","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":8976,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":8975,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8957,"src":"2853:6:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"2831:29:33","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":8978,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2831:33:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"2812:52:33"},{"expression":{"arguments":[{"id":8981,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8972,"src":"2882:7:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d61792068617665207265766572746564","id":8982,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2891:60:33","typeDescriptions":{"typeIdentifier":"t_stringliteral_51ddaa38748c0a1144620fb5bfe8edab31ea437571ad591a7734bbfd0429aeae","typeString":"literal_string \"Address: unable to send value, recipient may have reverted\""},"value":"Address: unable to send value, recipient may have reverted"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_51ddaa38748c0a1144620fb5bfe8edab31ea437571ad591a7734bbfd0429aeae","typeString":"literal_string \"Address: unable to send value, recipient may have reverted\""}],"id":8980,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"2874:7:33","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8983,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2874:78:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8984,"nodeType":"ExpressionStatement","src":"2874:78:33"}]},"documentation":{"id":8953,"nodeType":"StructuredDocumentation","src":"1738:904:33","text":" @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n `recipient`, forwarding all available gas and reverting on errors.\n https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n of certain opcodes, possibly making contracts go over the 2300 gas limit\n imposed by `transfer`, making them unable to receive funds via\n `transfer`. {sendValue} removes this limitation.\n https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n IMPORTANT: because control is transferred to `recipient`, care must be\n taken to not create reentrancy vulnerabilities. Consider using\n {ReentrancyGuard} or the\n https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]."},"id":8986,"implemented":true,"kind":"function","modifiers":[],"name":"sendValue","nameLocation":"2656:9:33","nodeType":"FunctionDefinition","parameters":{"id":8958,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8955,"mutability":"mutable","name":"recipient","nameLocation":"2682:9:33","nodeType":"VariableDeclaration","scope":8986,"src":"2666:25:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":8954,"name":"address","nodeType":"ElementaryTypeName","src":"2666:15:33","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"},{"constant":false,"id":8957,"mutability":"mutable","name":"amount","nameLocation":"2701:6:33","nodeType":"VariableDeclaration","scope":8986,"src":"2693:14:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8956,"name":"uint256","nodeType":"ElementaryTypeName","src":"2693:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2665:43:33"},"returnParameters":{"id":8959,"nodeType":"ParameterList","parameters":[],"src":"2718:0:33"},"scope":9264,"src":"2647:312:33","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":9003,"nodeType":"Block","src":"3790:96:33","statements":[{"expression":{"arguments":[{"id":8997,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8989,"src":"3829:6:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8998,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8991,"src":"3837:4:33","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"30","id":8999,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3843:1:33","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"416464726573733a206c6f772d6c6576656c2063616c6c206661696c6564","id":9000,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3846:32:33","typeDescriptions":{"typeIdentifier":"t_stringliteral_24d7ab5d382116e64324f19950ca9340b8af1ddeb09a8d026e0a3c6a01dcc9df","typeString":"literal_string \"Address: low-level call failed\""},"value":"Address: low-level call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_stringliteral_24d7ab5d382116e64324f19950ca9340b8af1ddeb09a8d026e0a3c6a01dcc9df","typeString":"literal_string \"Address: low-level call failed\""}],"id":8996,"name":"functionCallWithValue","nodeType":"Identifier","overloadedDeclarations":[9044,9088],"referencedDeclaration":9088,"src":"3807:21:33","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,uint256,string memory) returns (bytes memory)"}},"id":9001,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3807:72:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":8995,"id":9002,"nodeType":"Return","src":"3800:79:33"}]},"documentation":{"id":8987,"nodeType":"StructuredDocumentation","src":"2965:731:33","text":" @dev Performs a Solidity function call using a low level `call`. A\n plain `call` is an unsafe replacement for a function call: use this\n function instead.\n If `target` reverts with a revert reason, it is bubbled up by this\n function (like regular Solidity function calls).\n Returns the raw returned data. To convert to the expected return value,\n use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n Requirements:\n - `target` must be a contract.\n - calling `target` with `data` must not revert.\n _Available since v3.1._"},"id":9004,"implemented":true,"kind":"function","modifiers":[],"name":"functionCall","nameLocation":"3710:12:33","nodeType":"FunctionDefinition","parameters":{"id":8992,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8989,"mutability":"mutable","name":"target","nameLocation":"3731:6:33","nodeType":"VariableDeclaration","scope":9004,"src":"3723:14:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8988,"name":"address","nodeType":"ElementaryTypeName","src":"3723:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8991,"mutability":"mutable","name":"data","nameLocation":"3752:4:33","nodeType":"VariableDeclaration","scope":9004,"src":"3739:17:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":8990,"name":"bytes","nodeType":"ElementaryTypeName","src":"3739:5:33","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3722:35:33"},"returnParameters":{"id":8995,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8994,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9004,"src":"3776:12:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":8993,"name":"bytes","nodeType":"ElementaryTypeName","src":"3776:5:33","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3775:14:33"},"scope":9264,"src":"3701:185:33","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":9023,"nodeType":"Block","src":"4255:76:33","statements":[{"expression":{"arguments":[{"id":9017,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9007,"src":"4294:6:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9018,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9009,"src":"4302:4:33","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"30","id":9019,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4308:1:33","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":9020,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9011,"src":"4311:12:33","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":9016,"name":"functionCallWithValue","nodeType":"Identifier","overloadedDeclarations":[9044,9088],"referencedDeclaration":9088,"src":"4272:21:33","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,uint256,string memory) returns (bytes memory)"}},"id":9021,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4272:52:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":9015,"id":9022,"nodeType":"Return","src":"4265:59:33"}]},"documentation":{"id":9005,"nodeType":"StructuredDocumentation","src":"3892:211:33","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n `errorMessage` as a fallback revert reason when `target` reverts.\n _Available since v3.1._"},"id":9024,"implemented":true,"kind":"function","modifiers":[],"name":"functionCall","nameLocation":"4117:12:33","nodeType":"FunctionDefinition","parameters":{"id":9012,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9007,"mutability":"mutable","name":"target","nameLocation":"4147:6:33","nodeType":"VariableDeclaration","scope":9024,"src":"4139:14:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9006,"name":"address","nodeType":"ElementaryTypeName","src":"4139:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9009,"mutability":"mutable","name":"data","nameLocation":"4176:4:33","nodeType":"VariableDeclaration","scope":9024,"src":"4163:17:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9008,"name":"bytes","nodeType":"ElementaryTypeName","src":"4163:5:33","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":9011,"mutability":"mutable","name":"errorMessage","nameLocation":"4204:12:33","nodeType":"VariableDeclaration","scope":9024,"src":"4190:26:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":9010,"name":"string","nodeType":"ElementaryTypeName","src":"4190:6:33","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"4129:93:33"},"returnParameters":{"id":9015,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9014,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9024,"src":"4241:12:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9013,"name":"bytes","nodeType":"ElementaryTypeName","src":"4241:5:33","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4240:14:33"},"scope":9264,"src":"4108:223:33","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":9043,"nodeType":"Block","src":"4806:111:33","statements":[{"expression":{"arguments":[{"id":9037,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9027,"src":"4845:6:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9038,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9029,"src":"4853:4:33","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":9039,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9031,"src":"4859:5:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"416464726573733a206c6f772d6c6576656c2063616c6c20776974682076616c7565206661696c6564","id":9040,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4866:43:33","typeDescriptions":{"typeIdentifier":"t_stringliteral_88a4a0b5e975840320a0475d4027005235904fdb5ece94df156f3d717cb2dbfc","typeString":"literal_string \"Address: low-level call with value failed\""},"value":"Address: low-level call with value failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_88a4a0b5e975840320a0475d4027005235904fdb5ece94df156f3d717cb2dbfc","typeString":"literal_string \"Address: low-level call with value failed\""}],"id":9036,"name":"functionCallWithValue","nodeType":"Identifier","overloadedDeclarations":[9044,9088],"referencedDeclaration":9088,"src":"4823:21:33","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,uint256,string memory) returns (bytes memory)"}},"id":9041,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4823:87:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":9035,"id":9042,"nodeType":"Return","src":"4816:94:33"}]},"documentation":{"id":9025,"nodeType":"StructuredDocumentation","src":"4337:351:33","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but also transferring `value` wei to `target`.\n Requirements:\n - the calling contract must have an ETH balance of at least `value`.\n - the called Solidity function must be `payable`.\n _Available since v3.1._"},"id":9044,"implemented":true,"kind":"function","modifiers":[],"name":"functionCallWithValue","nameLocation":"4702:21:33","nodeType":"FunctionDefinition","parameters":{"id":9032,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9027,"mutability":"mutable","name":"target","nameLocation":"4732:6:33","nodeType":"VariableDeclaration","scope":9044,"src":"4724:14:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9026,"name":"address","nodeType":"ElementaryTypeName","src":"4724:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9029,"mutability":"mutable","name":"data","nameLocation":"4753:4:33","nodeType":"VariableDeclaration","scope":9044,"src":"4740:17:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9028,"name":"bytes","nodeType":"ElementaryTypeName","src":"4740:5:33","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":9031,"mutability":"mutable","name":"value","nameLocation":"4767:5:33","nodeType":"VariableDeclaration","scope":9044,"src":"4759:13:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9030,"name":"uint256","nodeType":"ElementaryTypeName","src":"4759:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4723:50:33"},"returnParameters":{"id":9035,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9034,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9044,"src":"4792:12:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9033,"name":"bytes","nodeType":"ElementaryTypeName","src":"4792:5:33","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4791:14:33"},"scope":9264,"src":"4693:224:33","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":9087,"nodeType":"Block","src":"5344:267:33","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9065,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":9061,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967268,"src":"5370:4:33","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$9264","typeString":"library Address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Address_$9264","typeString":"library Address"}],"id":9060,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5362:7:33","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9059,"name":"address","nodeType":"ElementaryTypeName","src":"5362:7:33","typeDescriptions":{}}},"id":9062,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5362:13:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":9063,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5376:7:33","memberName":"balance","nodeType":"MemberAccess","src":"5362:21:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":9064,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9051,"src":"5387:5:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5362:30:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c","id":9066,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5394:40:33","typeDescriptions":{"typeIdentifier":"t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c","typeString":"literal_string \"Address: insufficient balance for call\""},"value":"Address: insufficient balance for call"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c","typeString":"literal_string \"Address: insufficient balance for call\""}],"id":9058,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"5354:7:33","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":9067,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5354:81:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9068,"nodeType":"ExpressionStatement","src":"5354:81:33"},{"assignments":[9070,9072],"declarations":[{"constant":false,"id":9070,"mutability":"mutable","name":"success","nameLocation":"5451:7:33","nodeType":"VariableDeclaration","scope":9087,"src":"5446:12:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9069,"name":"bool","nodeType":"ElementaryTypeName","src":"5446:4:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":9072,"mutability":"mutable","name":"returndata","nameLocation":"5473:10:33","nodeType":"VariableDeclaration","scope":9087,"src":"5460:23:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9071,"name":"bytes","nodeType":"ElementaryTypeName","src":"5460:5:33","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":9079,"initialValue":{"arguments":[{"id":9077,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9049,"src":"5513:4:33","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":9073,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9047,"src":"5487:6:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":9074,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5494:4:33","memberName":"call","nodeType":"MemberAccess","src":"5487:11:33","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":9076,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":9075,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9051,"src":"5506:5:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"5487:25:33","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":9078,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5487:31:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"5445:73:33"},{"expression":{"arguments":[{"id":9081,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9047,"src":"5562:6:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9082,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9070,"src":"5570:7:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":9083,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9072,"src":"5579:10:33","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":9084,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9053,"src":"5591:12:33","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":9080,"name":"verifyCallResultFromTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9219,"src":"5535:26:33","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bool,bytes memory,string memory) view returns (bytes memory)"}},"id":9085,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5535:69:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":9057,"id":9086,"nodeType":"Return","src":"5528:76:33"}]},"documentation":{"id":9045,"nodeType":"StructuredDocumentation","src":"4923:237:33","text":" @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n with `errorMessage` as a fallback revert reason when `target` reverts.\n _Available since v3.1._"},"id":9088,"implemented":true,"kind":"function","modifiers":[],"name":"functionCallWithValue","nameLocation":"5174:21:33","nodeType":"FunctionDefinition","parameters":{"id":9054,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9047,"mutability":"mutable","name":"target","nameLocation":"5213:6:33","nodeType":"VariableDeclaration","scope":9088,"src":"5205:14:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9046,"name":"address","nodeType":"ElementaryTypeName","src":"5205:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9049,"mutability":"mutable","name":"data","nameLocation":"5242:4:33","nodeType":"VariableDeclaration","scope":9088,"src":"5229:17:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9048,"name":"bytes","nodeType":"ElementaryTypeName","src":"5229:5:33","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":9051,"mutability":"mutable","name":"value","nameLocation":"5264:5:33","nodeType":"VariableDeclaration","scope":9088,"src":"5256:13:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9050,"name":"uint256","nodeType":"ElementaryTypeName","src":"5256:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9053,"mutability":"mutable","name":"errorMessage","nameLocation":"5293:12:33","nodeType":"VariableDeclaration","scope":9088,"src":"5279:26:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":9052,"name":"string","nodeType":"ElementaryTypeName","src":"5279:6:33","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"5195:116:33"},"returnParameters":{"id":9057,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9056,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9088,"src":"5330:12:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9055,"name":"bytes","nodeType":"ElementaryTypeName","src":"5330:5:33","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5329:14:33"},"scope":9264,"src":"5165:446:33","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":9104,"nodeType":"Block","src":"5888:97:33","statements":[{"expression":{"arguments":[{"id":9099,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9091,"src":"5924:6:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9100,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9093,"src":"5932:4:33","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"416464726573733a206c6f772d6c6576656c207374617469632063616c6c206661696c6564","id":9101,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5938:39:33","typeDescriptions":{"typeIdentifier":"t_stringliteral_90ec82aa826a536a4cbfae44ecfa384680faa9a4b77344bce96aa761ad904df0","typeString":"literal_string \"Address: low-level static call failed\""},"value":"Address: low-level static call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_90ec82aa826a536a4cbfae44ecfa384680faa9a4b77344bce96aa761ad904df0","typeString":"literal_string \"Address: low-level static call failed\""}],"id":9098,"name":"functionStaticCall","nodeType":"Identifier","overloadedDeclarations":[9105,9134],"referencedDeclaration":9134,"src":"5905:18:33","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,string memory) view returns (bytes memory)"}},"id":9102,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5905:73:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":9097,"id":9103,"nodeType":"Return","src":"5898:80:33"}]},"documentation":{"id":9089,"nodeType":"StructuredDocumentation","src":"5617:166:33","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a static call.\n _Available since v3.3._"},"id":9105,"implemented":true,"kind":"function","modifiers":[],"name":"functionStaticCall","nameLocation":"5797:18:33","nodeType":"FunctionDefinition","parameters":{"id":9094,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9091,"mutability":"mutable","name":"target","nameLocation":"5824:6:33","nodeType":"VariableDeclaration","scope":9105,"src":"5816:14:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9090,"name":"address","nodeType":"ElementaryTypeName","src":"5816:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9093,"mutability":"mutable","name":"data","nameLocation":"5845:4:33","nodeType":"VariableDeclaration","scope":9105,"src":"5832:17:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9092,"name":"bytes","nodeType":"ElementaryTypeName","src":"5832:5:33","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5815:35:33"},"returnParameters":{"id":9097,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9096,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9105,"src":"5874:12:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9095,"name":"bytes","nodeType":"ElementaryTypeName","src":"5874:5:33","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5873:14:33"},"scope":9264,"src":"5788:197:33","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":9133,"nodeType":"Block","src":"6327:168:33","statements":[{"assignments":[9118,9120],"declarations":[{"constant":false,"id":9118,"mutability":"mutable","name":"success","nameLocation":"6343:7:33","nodeType":"VariableDeclaration","scope":9133,"src":"6338:12:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9117,"name":"bool","nodeType":"ElementaryTypeName","src":"6338:4:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":9120,"mutability":"mutable","name":"returndata","nameLocation":"6365:10:33","nodeType":"VariableDeclaration","scope":9133,"src":"6352:23:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9119,"name":"bytes","nodeType":"ElementaryTypeName","src":"6352:5:33","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":9125,"initialValue":{"arguments":[{"id":9123,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9110,"src":"6397:4:33","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":9121,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9108,"src":"6379:6:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":9122,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6386:10:33","memberName":"staticcall","nodeType":"MemberAccess","src":"6379:17:33","typeDescriptions":{"typeIdentifier":"t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) view returns (bool,bytes memory)"}},"id":9124,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6379:23:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"6337:65:33"},{"expression":{"arguments":[{"id":9127,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9108,"src":"6446:6:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9128,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9118,"src":"6454:7:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":9129,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9120,"src":"6463:10:33","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":9130,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9112,"src":"6475:12:33","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":9126,"name":"verifyCallResultFromTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9219,"src":"6419:26:33","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bool,bytes memory,string memory) view returns (bytes memory)"}},"id":9131,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6419:69:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":9116,"id":9132,"nodeType":"Return","src":"6412:76:33"}]},"documentation":{"id":9106,"nodeType":"StructuredDocumentation","src":"5991:173:33","text":" @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n but performing a static call.\n _Available since v3.3._"},"id":9134,"implemented":true,"kind":"function","modifiers":[],"name":"functionStaticCall","nameLocation":"6178:18:33","nodeType":"FunctionDefinition","parameters":{"id":9113,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9108,"mutability":"mutable","name":"target","nameLocation":"6214:6:33","nodeType":"VariableDeclaration","scope":9134,"src":"6206:14:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9107,"name":"address","nodeType":"ElementaryTypeName","src":"6206:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9110,"mutability":"mutable","name":"data","nameLocation":"6243:4:33","nodeType":"VariableDeclaration","scope":9134,"src":"6230:17:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9109,"name":"bytes","nodeType":"ElementaryTypeName","src":"6230:5:33","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":9112,"mutability":"mutable","name":"errorMessage","nameLocation":"6271:12:33","nodeType":"VariableDeclaration","scope":9134,"src":"6257:26:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":9111,"name":"string","nodeType":"ElementaryTypeName","src":"6257:6:33","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"6196:93:33"},"returnParameters":{"id":9116,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9115,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9134,"src":"6313:12:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9114,"name":"bytes","nodeType":"ElementaryTypeName","src":"6313:5:33","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6312:14:33"},"scope":9264,"src":"6169:326:33","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":9150,"nodeType":"Block","src":"6771:101:33","statements":[{"expression":{"arguments":[{"id":9145,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9137,"src":"6809:6:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9146,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9139,"src":"6817:4:33","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564","id":9147,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6823:41:33","typeDescriptions":{"typeIdentifier":"t_stringliteral_9fdcd12e4b726339b32a442b0a448365d5d85c96b2d2cff917b4f66c63110398","typeString":"literal_string \"Address: low-level delegate call failed\""},"value":"Address: low-level delegate call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_9fdcd12e4b726339b32a442b0a448365d5d85c96b2d2cff917b4f66c63110398","typeString":"literal_string \"Address: low-level delegate call failed\""}],"id":9144,"name":"functionDelegateCall","nodeType":"Identifier","overloadedDeclarations":[9151,9180],"referencedDeclaration":9180,"src":"6788:20:33","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,string memory) returns (bytes memory)"}},"id":9148,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6788:77:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":9143,"id":9149,"nodeType":"Return","src":"6781:84:33"}]},"documentation":{"id":9135,"nodeType":"StructuredDocumentation","src":"6501:168:33","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a delegate call.\n _Available since v3.4._"},"id":9151,"implemented":true,"kind":"function","modifiers":[],"name":"functionDelegateCall","nameLocation":"6683:20:33","nodeType":"FunctionDefinition","parameters":{"id":9140,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9137,"mutability":"mutable","name":"target","nameLocation":"6712:6:33","nodeType":"VariableDeclaration","scope":9151,"src":"6704:14:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9136,"name":"address","nodeType":"ElementaryTypeName","src":"6704:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9139,"mutability":"mutable","name":"data","nameLocation":"6733:4:33","nodeType":"VariableDeclaration","scope":9151,"src":"6720:17:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9138,"name":"bytes","nodeType":"ElementaryTypeName","src":"6720:5:33","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6703:35:33"},"returnParameters":{"id":9143,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9142,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9151,"src":"6757:12:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9141,"name":"bytes","nodeType":"ElementaryTypeName","src":"6757:5:33","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6756:14:33"},"scope":9264,"src":"6674:198:33","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":9179,"nodeType":"Block","src":"7213:170:33","statements":[{"assignments":[9164,9166],"declarations":[{"constant":false,"id":9164,"mutability":"mutable","name":"success","nameLocation":"7229:7:33","nodeType":"VariableDeclaration","scope":9179,"src":"7224:12:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9163,"name":"bool","nodeType":"ElementaryTypeName","src":"7224:4:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":9166,"mutability":"mutable","name":"returndata","nameLocation":"7251:10:33","nodeType":"VariableDeclaration","scope":9179,"src":"7238:23:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9165,"name":"bytes","nodeType":"ElementaryTypeName","src":"7238:5:33","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":9171,"initialValue":{"arguments":[{"id":9169,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9156,"src":"7285:4:33","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":9167,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9154,"src":"7265:6:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":9168,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7272:12:33","memberName":"delegatecall","nodeType":"MemberAccess","src":"7265:19:33","typeDescriptions":{"typeIdentifier":"t_function_baredelegatecall_nonpayable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) returns (bool,bytes memory)"}},"id":9170,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7265:25:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"7223:67:33"},{"expression":{"arguments":[{"id":9173,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9154,"src":"7334:6:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9174,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9164,"src":"7342:7:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":9175,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9166,"src":"7351:10:33","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":9176,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9158,"src":"7363:12:33","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":9172,"name":"verifyCallResultFromTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9219,"src":"7307:26:33","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bool,bytes memory,string memory) view returns (bytes memory)"}},"id":9177,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7307:69:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":9162,"id":9178,"nodeType":"Return","src":"7300:76:33"}]},"documentation":{"id":9152,"nodeType":"StructuredDocumentation","src":"6878:175:33","text":" @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n but performing a delegate call.\n _Available since v3.4._"},"id":9180,"implemented":true,"kind":"function","modifiers":[],"name":"functionDelegateCall","nameLocation":"7067:20:33","nodeType":"FunctionDefinition","parameters":{"id":9159,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9154,"mutability":"mutable","name":"target","nameLocation":"7105:6:33","nodeType":"VariableDeclaration","scope":9180,"src":"7097:14:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9153,"name":"address","nodeType":"ElementaryTypeName","src":"7097:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9156,"mutability":"mutable","name":"data","nameLocation":"7134:4:33","nodeType":"VariableDeclaration","scope":9180,"src":"7121:17:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9155,"name":"bytes","nodeType":"ElementaryTypeName","src":"7121:5:33","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":9158,"mutability":"mutable","name":"errorMessage","nameLocation":"7162:12:33","nodeType":"VariableDeclaration","scope":9180,"src":"7148:26:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":9157,"name":"string","nodeType":"ElementaryTypeName","src":"7148:6:33","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"7087:93:33"},"returnParameters":{"id":9162,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9161,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9180,"src":"7199:12:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9160,"name":"bytes","nodeType":"ElementaryTypeName","src":"7199:5:33","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7198:14:33"},"scope":9264,"src":"7058:325:33","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":9218,"nodeType":"Block","src":"7865:434:33","statements":[{"condition":{"id":9194,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9185,"src":"7879:7:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":9216,"nodeType":"Block","src":"8235:58:33","statements":[{"expression":{"arguments":[{"id":9212,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9187,"src":"8257:10:33","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":9213,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9189,"src":"8269:12:33","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":9211,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9263,"src":"8249:7:33","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (bytes memory,string memory) pure"}},"id":9214,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8249:33:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9215,"nodeType":"ExpressionStatement","src":"8249:33:33"}]},"id":9217,"nodeType":"IfStatement","src":"7875:418:33","trueBody":{"id":9210,"nodeType":"Block","src":"7888:341:33","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9198,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":9195,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9187,"src":"7906:10:33","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":9196,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7917:6:33","memberName":"length","nodeType":"MemberAccess","src":"7906:17:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":9197,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7927:1:33","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7906:22:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9207,"nodeType":"IfStatement","src":"7902:286:33","trueBody":{"id":9206,"nodeType":"Block","src":"7930:258:33","statements":[{"expression":{"arguments":[{"arguments":[{"id":9201,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9183,"src":"8132:6:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":9200,"name":"isContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8952,"src":"8121:10:33","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":9202,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8121:18:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374","id":9203,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8141:31:33","typeDescriptions":{"typeIdentifier":"t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad","typeString":"literal_string \"Address: call to non-contract\""},"value":"Address: call to non-contract"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad","typeString":"literal_string \"Address: call to non-contract\""}],"id":9199,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"8113:7:33","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":9204,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8113:60:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9205,"nodeType":"ExpressionStatement","src":"8113:60:33"}]}},{"expression":{"id":9208,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9187,"src":"8208:10:33","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":9193,"id":9209,"nodeType":"Return","src":"8201:17:33"}]}}]},"documentation":{"id":9181,"nodeType":"StructuredDocumentation","src":"7389:277:33","text":" @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\n the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\n _Available since v4.8._"},"id":9219,"implemented":true,"kind":"function","modifiers":[],"name":"verifyCallResultFromTarget","nameLocation":"7680:26:33","nodeType":"FunctionDefinition","parameters":{"id":9190,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9183,"mutability":"mutable","name":"target","nameLocation":"7724:6:33","nodeType":"VariableDeclaration","scope":9219,"src":"7716:14:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9182,"name":"address","nodeType":"ElementaryTypeName","src":"7716:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9185,"mutability":"mutable","name":"success","nameLocation":"7745:7:33","nodeType":"VariableDeclaration","scope":9219,"src":"7740:12:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9184,"name":"bool","nodeType":"ElementaryTypeName","src":"7740:4:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":9187,"mutability":"mutable","name":"returndata","nameLocation":"7775:10:33","nodeType":"VariableDeclaration","scope":9219,"src":"7762:23:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9186,"name":"bytes","nodeType":"ElementaryTypeName","src":"7762:5:33","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":9189,"mutability":"mutable","name":"errorMessage","nameLocation":"7809:12:33","nodeType":"VariableDeclaration","scope":9219,"src":"7795:26:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":9188,"name":"string","nodeType":"ElementaryTypeName","src":"7795:6:33","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"7706:121:33"},"returnParameters":{"id":9193,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9192,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9219,"src":"7851:12:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9191,"name":"bytes","nodeType":"ElementaryTypeName","src":"7851:5:33","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7850:14:33"},"scope":9264,"src":"7671:628:33","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":9242,"nodeType":"Block","src":"8680:135:33","statements":[{"condition":{"id":9231,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9222,"src":"8694:7:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":9240,"nodeType":"Block","src":"8751:58:33","statements":[{"expression":{"arguments":[{"id":9236,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9224,"src":"8773:10:33","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":9237,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9226,"src":"8785:12:33","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":9235,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9263,"src":"8765:7:33","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (bytes memory,string memory) pure"}},"id":9238,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8765:33:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9239,"nodeType":"ExpressionStatement","src":"8765:33:33"}]},"id":9241,"nodeType":"IfStatement","src":"8690:119:33","trueBody":{"id":9234,"nodeType":"Block","src":"8703:42:33","statements":[{"expression":{"id":9232,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9224,"src":"8724:10:33","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":9230,"id":9233,"nodeType":"Return","src":"8717:17:33"}]}}]},"documentation":{"id":9220,"nodeType":"StructuredDocumentation","src":"8305:210:33","text":" @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\n revert reason or using the provided one.\n _Available since v4.3._"},"id":9243,"implemented":true,"kind":"function","modifiers":[],"name":"verifyCallResult","nameLocation":"8529:16:33","nodeType":"FunctionDefinition","parameters":{"id":9227,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9222,"mutability":"mutable","name":"success","nameLocation":"8560:7:33","nodeType":"VariableDeclaration","scope":9243,"src":"8555:12:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9221,"name":"bool","nodeType":"ElementaryTypeName","src":"8555:4:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":9224,"mutability":"mutable","name":"returndata","nameLocation":"8590:10:33","nodeType":"VariableDeclaration","scope":9243,"src":"8577:23:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9223,"name":"bytes","nodeType":"ElementaryTypeName","src":"8577:5:33","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":9226,"mutability":"mutable","name":"errorMessage","nameLocation":"8624:12:33","nodeType":"VariableDeclaration","scope":9243,"src":"8610:26:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":9225,"name":"string","nodeType":"ElementaryTypeName","src":"8610:6:33","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"8545:97:33"},"returnParameters":{"id":9230,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9229,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9243,"src":"8666:12:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9228,"name":"bytes","nodeType":"ElementaryTypeName","src":"8666:5:33","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"8665:14:33"},"scope":9264,"src":"8520:295:33","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9262,"nodeType":"Block","src":"8904:457:33","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9253,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":9250,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9245,"src":"8980:10:33","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":9251,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8991:6:33","memberName":"length","nodeType":"MemberAccess","src":"8980:17:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":9252,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9000:1:33","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8980:21:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":9260,"nodeType":"Block","src":"9310:45:33","statements":[{"expression":{"arguments":[{"id":9257,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9247,"src":"9331:12:33","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":9256,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[4294967277,4294967277],"referencedDeclaration":4294967277,"src":"9324:6:33","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":9258,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9324:20:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9259,"nodeType":"ExpressionStatement","src":"9324:20:33"}]},"id":9261,"nodeType":"IfStatement","src":"8976:379:33","trueBody":{"id":9255,"nodeType":"Block","src":"9003:301:33","statements":[{"AST":{"nodeType":"YulBlock","src":"9161:133:33","statements":[{"nodeType":"YulVariableDeclaration","src":"9179:40:33","value":{"arguments":[{"name":"returndata","nodeType":"YulIdentifier","src":"9208:10:33"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"9202:5:33"},"nodeType":"YulFunctionCall","src":"9202:17:33"},"variables":[{"name":"returndata_size","nodeType":"YulTypedName","src":"9183:15:33","type":""}]},{"expression":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9247:2:33","type":"","value":"32"},{"name":"returndata","nodeType":"YulIdentifier","src":"9251:10:33"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9243:3:33"},"nodeType":"YulFunctionCall","src":"9243:19:33"},{"name":"returndata_size","nodeType":"YulIdentifier","src":"9264:15:33"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9236:6:33"},"nodeType":"YulFunctionCall","src":"9236:44:33"},"nodeType":"YulExpressionStatement","src":"9236:44:33"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"london","externalReferences":[{"declaration":9245,"isOffset":false,"isSlot":false,"src":"9208:10:33","valueSize":1},{"declaration":9245,"isOffset":false,"isSlot":false,"src":"9251:10:33","valueSize":1}],"id":9254,"nodeType":"InlineAssembly","src":"9152:142:33"}]}}]},"id":9263,"implemented":true,"kind":"function","modifiers":[],"name":"_revert","nameLocation":"8830:7:33","nodeType":"FunctionDefinition","parameters":{"id":9248,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9245,"mutability":"mutable","name":"returndata","nameLocation":"8851:10:33","nodeType":"VariableDeclaration","scope":9263,"src":"8838:23:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9244,"name":"bytes","nodeType":"ElementaryTypeName","src":"8838:5:33","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":9247,"mutability":"mutable","name":"errorMessage","nameLocation":"8877:12:33","nodeType":"VariableDeclaration","scope":9263,"src":"8863:26:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":9246,"name":"string","nodeType":"ElementaryTypeName","src":"8863:6:33","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"8837:53:33"},"returnParameters":{"id":9249,"nodeType":"ParameterList","parameters":[],"src":"8904:0:33"},"scope":9264,"src":"8821:540:33","stateMutability":"pure","virtual":false,"visibility":"private"}],"scope":9265,"src":"194:9169:33","usedErrors":[]}],"src":"101:9263:33"},"id":33},"@openzeppelin/contracts/utils/Context.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/Context.sol","exportedSymbols":{"Context":[9294]},"id":9295,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":9266,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"101:23:34"},{"abstract":true,"baseContracts":[],"canonicalName":"Context","contractDependencies":[],"contractKind":"contract","documentation":{"id":9267,"nodeType":"StructuredDocumentation","src":"126:496:34","text":" @dev Provides information about the current execution context, including the\n sender of the transaction and its data. While these are generally available\n via msg.sender and msg.data, they should not be accessed in such a direct\n manner, since when dealing with meta-transactions the account sending and\n paying for execution may not be the actual sender (as far as an application\n is concerned).\n This contract is only required for intermediate, library-like contracts."},"fullyImplemented":true,"id":9294,"linearizedBaseContracts":[9294],"name":"Context","nameLocation":"641:7:34","nodeType":"ContractDefinition","nodes":[{"body":{"id":9275,"nodeType":"Block","src":"717:34:34","statements":[{"expression":{"expression":{"id":9272,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967281,"src":"734:3:34","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":9273,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"738:6:34","memberName":"sender","nodeType":"MemberAccess","src":"734:10:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":9271,"id":9274,"nodeType":"Return","src":"727:17:34"}]},"id":9276,"implemented":true,"kind":"function","modifiers":[],"name":"_msgSender","nameLocation":"664:10:34","nodeType":"FunctionDefinition","parameters":{"id":9268,"nodeType":"ParameterList","parameters":[],"src":"674:2:34"},"returnParameters":{"id":9271,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9270,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9276,"src":"708:7:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9269,"name":"address","nodeType":"ElementaryTypeName","src":"708:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"707:9:34"},"scope":9294,"src":"655:96:34","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":9284,"nodeType":"Block","src":"824:32:34","statements":[{"expression":{"expression":{"id":9281,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967281,"src":"841:3:34","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":9282,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"845:4:34","memberName":"data","nodeType":"MemberAccess","src":"841:8:34","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"functionReturnParameters":9280,"id":9283,"nodeType":"Return","src":"834:15:34"}]},"id":9285,"implemented":true,"kind":"function","modifiers":[],"name":"_msgData","nameLocation":"766:8:34","nodeType":"FunctionDefinition","parameters":{"id":9277,"nodeType":"ParameterList","parameters":[],"src":"774:2:34"},"returnParameters":{"id":9280,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9279,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9285,"src":"808:14:34","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":9278,"name":"bytes","nodeType":"ElementaryTypeName","src":"808:5:34","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"807:16:34"},"scope":9294,"src":"757:99:34","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":9292,"nodeType":"Block","src":"934:25:34","statements":[{"expression":{"hexValue":"30","id":9290,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"951:1:34","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":9289,"id":9291,"nodeType":"Return","src":"944:8:34"}]},"id":9293,"implemented":true,"kind":"function","modifiers":[],"name":"_contextSuffixLength","nameLocation":"871:20:34","nodeType":"FunctionDefinition","parameters":{"id":9286,"nodeType":"ParameterList","parameters":[],"src":"891:2:34"},"returnParameters":{"id":9289,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9288,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9293,"src":"925:7:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9287,"name":"uint256","nodeType":"ElementaryTypeName","src":"925:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"924:9:34"},"scope":9294,"src":"862:97:34","stateMutability":"view","virtual":true,"visibility":"internal"}],"scope":9295,"src":"623:338:34","usedErrors":[]}],"src":"101:861:34"},"id":34},"@openzeppelin/contracts/utils/Counters.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/Counters.sol","exportedSymbols":{"Counters":[9368]},"id":9369,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":9296,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"87:23:35"},{"abstract":false,"baseContracts":[],"canonicalName":"Counters","contractDependencies":[],"contractKind":"library","documentation":{"id":9297,"nodeType":"StructuredDocumentation","src":"112:311:35","text":" @title Counters\n @author Matt Condon (@shrugs)\n @dev Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number\n of elements in a mapping, issuing ERC721 ids, or counting request ids.\n Include with `using Counters for Counters.Counter;`"},"fullyImplemented":true,"id":9368,"linearizedBaseContracts":[9368],"name":"Counters","nameLocation":"432:8:35","nodeType":"ContractDefinition","nodes":[{"canonicalName":"Counters.Counter","id":9300,"members":[{"constant":false,"id":9299,"mutability":"mutable","name":"_value","nameLocation":"794:6:35","nodeType":"VariableDeclaration","scope":9300,"src":"786:14:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9298,"name":"uint256","nodeType":"ElementaryTypeName","src":"786:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"Counter","nameLocation":"454:7:35","nodeType":"StructDefinition","scope":9368,"src":"447:374:35","visibility":"public"},{"body":{"id":9311,"nodeType":"Block","src":"901:38:35","statements":[{"expression":{"expression":{"id":9308,"name":"counter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9303,"src":"918:7:35","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$9300_storage_ptr","typeString":"struct Counters.Counter storage pointer"}},"id":9309,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"926:6:35","memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":9299,"src":"918:14:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9307,"id":9310,"nodeType":"Return","src":"911:21:35"}]},"id":9312,"implemented":true,"kind":"function","modifiers":[],"name":"current","nameLocation":"836:7:35","nodeType":"FunctionDefinition","parameters":{"id":9304,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9303,"mutability":"mutable","name":"counter","nameLocation":"860:7:35","nodeType":"VariableDeclaration","scope":9312,"src":"844:23:35","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$9300_storage_ptr","typeString":"struct Counters.Counter"},"typeName":{"id":9302,"nodeType":"UserDefinedTypeName","pathNode":{"id":9301,"name":"Counter","nameLocations":["844:7:35"],"nodeType":"IdentifierPath","referencedDeclaration":9300,"src":"844:7:35"},"referencedDeclaration":9300,"src":"844:7:35","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$9300_storage_ptr","typeString":"struct Counters.Counter"}},"visibility":"internal"}],"src":"843:25:35"},"returnParameters":{"id":9307,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9306,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9312,"src":"892:7:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9305,"name":"uint256","nodeType":"ElementaryTypeName","src":"892:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"891:9:35"},"scope":9368,"src":"827:112:35","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":9325,"nodeType":"Block","src":"998:70:35","statements":[{"id":9324,"nodeType":"UncheckedBlock","src":"1008:54:35","statements":[{"expression":{"id":9322,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":9318,"name":"counter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9315,"src":"1032:7:35","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$9300_storage_ptr","typeString":"struct Counters.Counter storage pointer"}},"id":9320,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1040:6:35","memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":9299,"src":"1032:14:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":9321,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1050:1:35","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1032:19:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9323,"nodeType":"ExpressionStatement","src":"1032:19:35"}]}]},"id":9326,"implemented":true,"kind":"function","modifiers":[],"name":"increment","nameLocation":"954:9:35","nodeType":"FunctionDefinition","parameters":{"id":9316,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9315,"mutability":"mutable","name":"counter","nameLocation":"980:7:35","nodeType":"VariableDeclaration","scope":9326,"src":"964:23:35","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$9300_storage_ptr","typeString":"struct Counters.Counter"},"typeName":{"id":9314,"nodeType":"UserDefinedTypeName","pathNode":{"id":9313,"name":"Counter","nameLocations":["964:7:35"],"nodeType":"IdentifierPath","referencedDeclaration":9300,"src":"964:7:35"},"referencedDeclaration":9300,"src":"964:7:35","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$9300_storage_ptr","typeString":"struct Counters.Counter"}},"visibility":"internal"}],"src":"963:25:35"},"returnParameters":{"id":9317,"nodeType":"ParameterList","parameters":[],"src":"998:0:35"},"scope":9368,"src":"945:123:35","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":9353,"nodeType":"Block","src":"1127:176:35","statements":[{"assignments":[9333],"declarations":[{"constant":false,"id":9333,"mutability":"mutable","name":"value","nameLocation":"1145:5:35","nodeType":"VariableDeclaration","scope":9353,"src":"1137:13:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9332,"name":"uint256","nodeType":"ElementaryTypeName","src":"1137:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9336,"initialValue":{"expression":{"id":9334,"name":"counter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9329,"src":"1153:7:35","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$9300_storage_ptr","typeString":"struct Counters.Counter storage pointer"}},"id":9335,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1161:6:35","memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":9299,"src":"1153:14:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1137:30:35"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9340,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9338,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9333,"src":"1185:5:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":9339,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1193:1:35","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1185:9:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"436f756e7465723a2064656372656d656e74206f766572666c6f77","id":9341,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1196:29:35","typeDescriptions":{"typeIdentifier":"t_stringliteral_1dfd0d5389474d871b8e8929aab9d4def041f55f90f625754fb5f9a9ba08af6f","typeString":"literal_string \"Counter: decrement overflow\""},"value":"Counter: decrement overflow"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_1dfd0d5389474d871b8e8929aab9d4def041f55f90f625754fb5f9a9ba08af6f","typeString":"literal_string \"Counter: decrement overflow\""}],"id":9337,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"1177:7:35","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":9342,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1177:49:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9343,"nodeType":"ExpressionStatement","src":"1177:49:35"},{"id":9352,"nodeType":"UncheckedBlock","src":"1236:61:35","statements":[{"expression":{"id":9350,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":9344,"name":"counter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9329,"src":"1260:7:35","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$9300_storage_ptr","typeString":"struct Counters.Counter storage pointer"}},"id":9346,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1268:6:35","memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":9299,"src":"1260:14:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9349,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9347,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9333,"src":"1277:5:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":9348,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1285:1:35","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1277:9:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1260:26:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9351,"nodeType":"ExpressionStatement","src":"1260:26:35"}]}]},"id":9354,"implemented":true,"kind":"function","modifiers":[],"name":"decrement","nameLocation":"1083:9:35","nodeType":"FunctionDefinition","parameters":{"id":9330,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9329,"mutability":"mutable","name":"counter","nameLocation":"1109:7:35","nodeType":"VariableDeclaration","scope":9354,"src":"1093:23:35","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$9300_storage_ptr","typeString":"struct Counters.Counter"},"typeName":{"id":9328,"nodeType":"UserDefinedTypeName","pathNode":{"id":9327,"name":"Counter","nameLocations":["1093:7:35"],"nodeType":"IdentifierPath","referencedDeclaration":9300,"src":"1093:7:35"},"referencedDeclaration":9300,"src":"1093:7:35","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$9300_storage_ptr","typeString":"struct Counters.Counter"}},"visibility":"internal"}],"src":"1092:25:35"},"returnParameters":{"id":9331,"nodeType":"ParameterList","parameters":[],"src":"1127:0:35"},"scope":9368,"src":"1074:229:35","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":9366,"nodeType":"Block","src":"1358:35:35","statements":[{"expression":{"id":9364,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":9360,"name":"counter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9357,"src":"1368:7:35","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$9300_storage_ptr","typeString":"struct Counters.Counter storage pointer"}},"id":9362,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1376:6:35","memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":9299,"src":"1368:14:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":9363,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1385:1:35","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1368:18:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9365,"nodeType":"ExpressionStatement","src":"1368:18:35"}]},"id":9367,"implemented":true,"kind":"function","modifiers":[],"name":"reset","nameLocation":"1318:5:35","nodeType":"FunctionDefinition","parameters":{"id":9358,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9357,"mutability":"mutable","name":"counter","nameLocation":"1340:7:35","nodeType":"VariableDeclaration","scope":9367,"src":"1324:23:35","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$9300_storage_ptr","typeString":"struct Counters.Counter"},"typeName":{"id":9356,"nodeType":"UserDefinedTypeName","pathNode":{"id":9355,"name":"Counter","nameLocations":["1324:7:35"],"nodeType":"IdentifierPath","referencedDeclaration":9300,"src":"1324:7:35"},"referencedDeclaration":9300,"src":"1324:7:35","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$9300_storage_ptr","typeString":"struct Counters.Counter"}},"visibility":"internal"}],"src":"1323:25:35"},"returnParameters":{"id":9359,"nodeType":"ParameterList","parameters":[],"src":"1358:0:35"},"scope":9368,"src":"1309:84:35","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":9369,"src":"424:971:35","usedErrors":[]}],"src":"87:1309:35"},"id":35},"@openzeppelin/contracts/utils/StorageSlot.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/StorageSlot.sol","exportedSymbols":{"StorageSlot":[9478]},"id":9479,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":9370,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"193:23:36"},{"abstract":false,"baseContracts":[],"canonicalName":"StorageSlot","contractDependencies":[],"contractKind":"library","documentation":{"id":9371,"nodeType":"StructuredDocumentation","src":"218:1201:36","text":" @dev Library for reading and writing primitive types to specific storage slots.\n Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\n This library helps with reading and writing to such slots without the need for inline assembly.\n The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\n Example usage to set ERC1967 implementation slot:\n ```solidity\n contract ERC1967 {\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n function _getImplementation() internal view returns (address) {\n return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\n }\n function _setImplementation(address newImplementation) internal {\n require(Address.isContract(newImplementation), \"ERC1967: new implementation is not a contract\");\n StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\n }\n }\n ```\n _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._\n _Available since v4.9 for `string`, `bytes`._"},"fullyImplemented":true,"id":9478,"linearizedBaseContracts":[9478],"name":"StorageSlot","nameLocation":"1428:11:36","nodeType":"ContractDefinition","nodes":[{"canonicalName":"StorageSlot.AddressSlot","id":9374,"members":[{"constant":false,"id":9373,"mutability":"mutable","name":"value","nameLocation":"1483:5:36","nodeType":"VariableDeclaration","scope":9374,"src":"1475:13:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9372,"name":"address","nodeType":"ElementaryTypeName","src":"1475:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"name":"AddressSlot","nameLocation":"1453:11:36","nodeType":"StructDefinition","scope":9478,"src":"1446:49:36","visibility":"public"},{"canonicalName":"StorageSlot.BooleanSlot","id":9377,"members":[{"constant":false,"id":9376,"mutability":"mutable","name":"value","nameLocation":"1535:5:36","nodeType":"VariableDeclaration","scope":9377,"src":"1530:10:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9375,"name":"bool","nodeType":"ElementaryTypeName","src":"1530:4:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"name":"BooleanSlot","nameLocation":"1508:11:36","nodeType":"StructDefinition","scope":9478,"src":"1501:46:36","visibility":"public"},{"canonicalName":"StorageSlot.Bytes32Slot","id":9380,"members":[{"constant":false,"id":9379,"mutability":"mutable","name":"value","nameLocation":"1590:5:36","nodeType":"VariableDeclaration","scope":9380,"src":"1582:13:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":9378,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1582:7:36","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"name":"Bytes32Slot","nameLocation":"1560:11:36","nodeType":"StructDefinition","scope":9478,"src":"1553:49:36","visibility":"public"},{"canonicalName":"StorageSlot.Uint256Slot","id":9383,"members":[{"constant":false,"id":9382,"mutability":"mutable","name":"value","nameLocation":"1645:5:36","nodeType":"VariableDeclaration","scope":9383,"src":"1637:13:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9381,"name":"uint256","nodeType":"ElementaryTypeName","src":"1637:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"Uint256Slot","nameLocation":"1615:11:36","nodeType":"StructDefinition","scope":9478,"src":"1608:49:36","visibility":"public"},{"canonicalName":"StorageSlot.StringSlot","id":9386,"members":[{"constant":false,"id":9385,"mutability":"mutable","name":"value","nameLocation":"1698:5:36","nodeType":"VariableDeclaration","scope":9386,"src":"1691:12:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":9384,"name":"string","nodeType":"ElementaryTypeName","src":"1691:6:36","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"name":"StringSlot","nameLocation":"1670:10:36","nodeType":"StructDefinition","scope":9478,"src":"1663:47:36","visibility":"public"},{"canonicalName":"StorageSlot.BytesSlot","id":9389,"members":[{"constant":false,"id":9388,"mutability":"mutable","name":"value","nameLocation":"1749:5:36","nodeType":"VariableDeclaration","scope":9389,"src":"1743:11:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":9387,"name":"bytes","nodeType":"ElementaryTypeName","src":"1743:5:36","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"name":"BytesSlot","nameLocation":"1723:9:36","nodeType":"StructDefinition","scope":9478,"src":"1716:45:36","visibility":"public"},{"body":{"id":9399,"nodeType":"Block","src":"1943:106:36","statements":[{"AST":{"nodeType":"YulBlock","src":"2005:38:36","statements":[{"nodeType":"YulAssignment","src":"2019:14:36","value":{"name":"slot","nodeType":"YulIdentifier","src":"2029:4:36"},"variableNames":[{"name":"r.slot","nodeType":"YulIdentifier","src":"2019:6:36"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"london","externalReferences":[{"declaration":9396,"isOffset":false,"isSlot":true,"src":"2019:6:36","suffix":"slot","valueSize":1},{"declaration":9392,"isOffset":false,"isSlot":false,"src":"2029:4:36","valueSize":1}],"id":9398,"nodeType":"InlineAssembly","src":"1996:47:36"}]},"documentation":{"id":9390,"nodeType":"StructuredDocumentation","src":"1767:87:36","text":" @dev Returns an `AddressSlot` with member `value` located at `slot`."},"id":9400,"implemented":true,"kind":"function","modifiers":[],"name":"getAddressSlot","nameLocation":"1868:14:36","nodeType":"FunctionDefinition","parameters":{"id":9393,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9392,"mutability":"mutable","name":"slot","nameLocation":"1891:4:36","nodeType":"VariableDeclaration","scope":9400,"src":"1883:12:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":9391,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1883:7:36","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1882:14:36"},"returnParameters":{"id":9397,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9396,"mutability":"mutable","name":"r","nameLocation":"1940:1:36","nodeType":"VariableDeclaration","scope":9400,"src":"1920:21:36","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$9374_storage_ptr","typeString":"struct StorageSlot.AddressSlot"},"typeName":{"id":9395,"nodeType":"UserDefinedTypeName","pathNode":{"id":9394,"name":"AddressSlot","nameLocations":["1920:11:36"],"nodeType":"IdentifierPath","referencedDeclaration":9374,"src":"1920:11:36"},"referencedDeclaration":9374,"src":"1920:11:36","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$9374_storage_ptr","typeString":"struct StorageSlot.AddressSlot"}},"visibility":"internal"}],"src":"1919:23:36"},"scope":9478,"src":"1859:190:36","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9410,"nodeType":"Block","src":"2231:106:36","statements":[{"AST":{"nodeType":"YulBlock","src":"2293:38:36","statements":[{"nodeType":"YulAssignment","src":"2307:14:36","value":{"name":"slot","nodeType":"YulIdentifier","src":"2317:4:36"},"variableNames":[{"name":"r.slot","nodeType":"YulIdentifier","src":"2307:6:36"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"london","externalReferences":[{"declaration":9407,"isOffset":false,"isSlot":true,"src":"2307:6:36","suffix":"slot","valueSize":1},{"declaration":9403,"isOffset":false,"isSlot":false,"src":"2317:4:36","valueSize":1}],"id":9409,"nodeType":"InlineAssembly","src":"2284:47:36"}]},"documentation":{"id":9401,"nodeType":"StructuredDocumentation","src":"2055:87:36","text":" @dev Returns an `BooleanSlot` with member `value` located at `slot`."},"id":9411,"implemented":true,"kind":"function","modifiers":[],"name":"getBooleanSlot","nameLocation":"2156:14:36","nodeType":"FunctionDefinition","parameters":{"id":9404,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9403,"mutability":"mutable","name":"slot","nameLocation":"2179:4:36","nodeType":"VariableDeclaration","scope":9411,"src":"2171:12:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":9402,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2171:7:36","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2170:14:36"},"returnParameters":{"id":9408,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9407,"mutability":"mutable","name":"r","nameLocation":"2228:1:36","nodeType":"VariableDeclaration","scope":9411,"src":"2208:21:36","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_BooleanSlot_$9377_storage_ptr","typeString":"struct StorageSlot.BooleanSlot"},"typeName":{"id":9406,"nodeType":"UserDefinedTypeName","pathNode":{"id":9405,"name":"BooleanSlot","nameLocations":["2208:11:36"],"nodeType":"IdentifierPath","referencedDeclaration":9377,"src":"2208:11:36"},"referencedDeclaration":9377,"src":"2208:11:36","typeDescriptions":{"typeIdentifier":"t_struct$_BooleanSlot_$9377_storage_ptr","typeString":"struct StorageSlot.BooleanSlot"}},"visibility":"internal"}],"src":"2207:23:36"},"scope":9478,"src":"2147:190:36","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9421,"nodeType":"Block","src":"2519:106:36","statements":[{"AST":{"nodeType":"YulBlock","src":"2581:38:36","statements":[{"nodeType":"YulAssignment","src":"2595:14:36","value":{"name":"slot","nodeType":"YulIdentifier","src":"2605:4:36"},"variableNames":[{"name":"r.slot","nodeType":"YulIdentifier","src":"2595:6:36"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"london","externalReferences":[{"declaration":9418,"isOffset":false,"isSlot":true,"src":"2595:6:36","suffix":"slot","valueSize":1},{"declaration":9414,"isOffset":false,"isSlot":false,"src":"2605:4:36","valueSize":1}],"id":9420,"nodeType":"InlineAssembly","src":"2572:47:36"}]},"documentation":{"id":9412,"nodeType":"StructuredDocumentation","src":"2343:87:36","text":" @dev Returns an `Bytes32Slot` with member `value` located at `slot`."},"id":9422,"implemented":true,"kind":"function","modifiers":[],"name":"getBytes32Slot","nameLocation":"2444:14:36","nodeType":"FunctionDefinition","parameters":{"id":9415,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9414,"mutability":"mutable","name":"slot","nameLocation":"2467:4:36","nodeType":"VariableDeclaration","scope":9422,"src":"2459:12:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":9413,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2459:7:36","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2458:14:36"},"returnParameters":{"id":9419,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9418,"mutability":"mutable","name":"r","nameLocation":"2516:1:36","nodeType":"VariableDeclaration","scope":9422,"src":"2496:21:36","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Slot_$9380_storage_ptr","typeString":"struct StorageSlot.Bytes32Slot"},"typeName":{"id":9417,"nodeType":"UserDefinedTypeName","pathNode":{"id":9416,"name":"Bytes32Slot","nameLocations":["2496:11:36"],"nodeType":"IdentifierPath","referencedDeclaration":9380,"src":"2496:11:36"},"referencedDeclaration":9380,"src":"2496:11:36","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Slot_$9380_storage_ptr","typeString":"struct StorageSlot.Bytes32Slot"}},"visibility":"internal"}],"src":"2495:23:36"},"scope":9478,"src":"2435:190:36","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9432,"nodeType":"Block","src":"2807:106:36","statements":[{"AST":{"nodeType":"YulBlock","src":"2869:38:36","statements":[{"nodeType":"YulAssignment","src":"2883:14:36","value":{"name":"slot","nodeType":"YulIdentifier","src":"2893:4:36"},"variableNames":[{"name":"r.slot","nodeType":"YulIdentifier","src":"2883:6:36"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"london","externalReferences":[{"declaration":9429,"isOffset":false,"isSlot":true,"src":"2883:6:36","suffix":"slot","valueSize":1},{"declaration":9425,"isOffset":false,"isSlot":false,"src":"2893:4:36","valueSize":1}],"id":9431,"nodeType":"InlineAssembly","src":"2860:47:36"}]},"documentation":{"id":9423,"nodeType":"StructuredDocumentation","src":"2631:87:36","text":" @dev Returns an `Uint256Slot` with member `value` located at `slot`."},"id":9433,"implemented":true,"kind":"function","modifiers":[],"name":"getUint256Slot","nameLocation":"2732:14:36","nodeType":"FunctionDefinition","parameters":{"id":9426,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9425,"mutability":"mutable","name":"slot","nameLocation":"2755:4:36","nodeType":"VariableDeclaration","scope":9433,"src":"2747:12:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":9424,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2747:7:36","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2746:14:36"},"returnParameters":{"id":9430,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9429,"mutability":"mutable","name":"r","nameLocation":"2804:1:36","nodeType":"VariableDeclaration","scope":9433,"src":"2784:21:36","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Uint256Slot_$9383_storage_ptr","typeString":"struct StorageSlot.Uint256Slot"},"typeName":{"id":9428,"nodeType":"UserDefinedTypeName","pathNode":{"id":9427,"name":"Uint256Slot","nameLocations":["2784:11:36"],"nodeType":"IdentifierPath","referencedDeclaration":9383,"src":"2784:11:36"},"referencedDeclaration":9383,"src":"2784:11:36","typeDescriptions":{"typeIdentifier":"t_struct$_Uint256Slot_$9383_storage_ptr","typeString":"struct StorageSlot.Uint256Slot"}},"visibility":"internal"}],"src":"2783:23:36"},"scope":9478,"src":"2723:190:36","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9443,"nodeType":"Block","src":"3092:106:36","statements":[{"AST":{"nodeType":"YulBlock","src":"3154:38:36","statements":[{"nodeType":"YulAssignment","src":"3168:14:36","value":{"name":"slot","nodeType":"YulIdentifier","src":"3178:4:36"},"variableNames":[{"name":"r.slot","nodeType":"YulIdentifier","src":"3168:6:36"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"london","externalReferences":[{"declaration":9440,"isOffset":false,"isSlot":true,"src":"3168:6:36","suffix":"slot","valueSize":1},{"declaration":9436,"isOffset":false,"isSlot":false,"src":"3178:4:36","valueSize":1}],"id":9442,"nodeType":"InlineAssembly","src":"3145:47:36"}]},"documentation":{"id":9434,"nodeType":"StructuredDocumentation","src":"2919:86:36","text":" @dev Returns an `StringSlot` with member `value` located at `slot`."},"id":9444,"implemented":true,"kind":"function","modifiers":[],"name":"getStringSlot","nameLocation":"3019:13:36","nodeType":"FunctionDefinition","parameters":{"id":9437,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9436,"mutability":"mutable","name":"slot","nameLocation":"3041:4:36","nodeType":"VariableDeclaration","scope":9444,"src":"3033:12:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":9435,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3033:7:36","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3032:14:36"},"returnParameters":{"id":9441,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9440,"mutability":"mutable","name":"r","nameLocation":"3089:1:36","nodeType":"VariableDeclaration","scope":9444,"src":"3070:20:36","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_StringSlot_$9386_storage_ptr","typeString":"struct StorageSlot.StringSlot"},"typeName":{"id":9439,"nodeType":"UserDefinedTypeName","pathNode":{"id":9438,"name":"StringSlot","nameLocations":["3070:10:36"],"nodeType":"IdentifierPath","referencedDeclaration":9386,"src":"3070:10:36"},"referencedDeclaration":9386,"src":"3070:10:36","typeDescriptions":{"typeIdentifier":"t_struct$_StringSlot_$9386_storage_ptr","typeString":"struct StorageSlot.StringSlot"}},"visibility":"internal"}],"src":"3069:22:36"},"scope":9478,"src":"3010:188:36","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9454,"nodeType":"Block","src":"3400:112:36","statements":[{"AST":{"nodeType":"YulBlock","src":"3462:44:36","statements":[{"nodeType":"YulAssignment","src":"3476:20:36","value":{"name":"store.slot","nodeType":"YulIdentifier","src":"3486:10:36"},"variableNames":[{"name":"r.slot","nodeType":"YulIdentifier","src":"3476:6:36"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"london","externalReferences":[{"declaration":9451,"isOffset":false,"isSlot":true,"src":"3476:6:36","suffix":"slot","valueSize":1},{"declaration":9447,"isOffset":false,"isSlot":true,"src":"3486:10:36","suffix":"slot","valueSize":1}],"id":9453,"nodeType":"InlineAssembly","src":"3453:53:36"}]},"documentation":{"id":9445,"nodeType":"StructuredDocumentation","src":"3204:101:36","text":" @dev Returns an `StringSlot` representation of the string storage pointer `store`."},"id":9455,"implemented":true,"kind":"function","modifiers":[],"name":"getStringSlot","nameLocation":"3319:13:36","nodeType":"FunctionDefinition","parameters":{"id":9448,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9447,"mutability":"mutable","name":"store","nameLocation":"3348:5:36","nodeType":"VariableDeclaration","scope":9455,"src":"3333:20:36","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":9446,"name":"string","nodeType":"ElementaryTypeName","src":"3333:6:36","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3332:22:36"},"returnParameters":{"id":9452,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9451,"mutability":"mutable","name":"r","nameLocation":"3397:1:36","nodeType":"VariableDeclaration","scope":9455,"src":"3378:20:36","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_StringSlot_$9386_storage_ptr","typeString":"struct StorageSlot.StringSlot"},"typeName":{"id":9450,"nodeType":"UserDefinedTypeName","pathNode":{"id":9449,"name":"StringSlot","nameLocations":["3378:10:36"],"nodeType":"IdentifierPath","referencedDeclaration":9386,"src":"3378:10:36"},"referencedDeclaration":9386,"src":"3378:10:36","typeDescriptions":{"typeIdentifier":"t_struct$_StringSlot_$9386_storage_ptr","typeString":"struct StorageSlot.StringSlot"}},"visibility":"internal"}],"src":"3377:22:36"},"scope":9478,"src":"3310:202:36","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9465,"nodeType":"Block","src":"3688:106:36","statements":[{"AST":{"nodeType":"YulBlock","src":"3750:38:36","statements":[{"nodeType":"YulAssignment","src":"3764:14:36","value":{"name":"slot","nodeType":"YulIdentifier","src":"3774:4:36"},"variableNames":[{"name":"r.slot","nodeType":"YulIdentifier","src":"3764:6:36"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"london","externalReferences":[{"declaration":9462,"isOffset":false,"isSlot":true,"src":"3764:6:36","suffix":"slot","valueSize":1},{"declaration":9458,"isOffset":false,"isSlot":false,"src":"3774:4:36","valueSize":1}],"id":9464,"nodeType":"InlineAssembly","src":"3741:47:36"}]},"documentation":{"id":9456,"nodeType":"StructuredDocumentation","src":"3518:85:36","text":" @dev Returns an `BytesSlot` with member `value` located at `slot`."},"id":9466,"implemented":true,"kind":"function","modifiers":[],"name":"getBytesSlot","nameLocation":"3617:12:36","nodeType":"FunctionDefinition","parameters":{"id":9459,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9458,"mutability":"mutable","name":"slot","nameLocation":"3638:4:36","nodeType":"VariableDeclaration","scope":9466,"src":"3630:12:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":9457,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3630:7:36","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3629:14:36"},"returnParameters":{"id":9463,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9462,"mutability":"mutable","name":"r","nameLocation":"3685:1:36","nodeType":"VariableDeclaration","scope":9466,"src":"3667:19:36","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$9389_storage_ptr","typeString":"struct StorageSlot.BytesSlot"},"typeName":{"id":9461,"nodeType":"UserDefinedTypeName","pathNode":{"id":9460,"name":"BytesSlot","nameLocations":["3667:9:36"],"nodeType":"IdentifierPath","referencedDeclaration":9389,"src":"3667:9:36"},"referencedDeclaration":9389,"src":"3667:9:36","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$9389_storage_ptr","typeString":"struct StorageSlot.BytesSlot"}},"visibility":"internal"}],"src":"3666:21:36"},"scope":9478,"src":"3608:186:36","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9476,"nodeType":"Block","src":"3991:112:36","statements":[{"AST":{"nodeType":"YulBlock","src":"4053:44:36","statements":[{"nodeType":"YulAssignment","src":"4067:20:36","value":{"name":"store.slot","nodeType":"YulIdentifier","src":"4077:10:36"},"variableNames":[{"name":"r.slot","nodeType":"YulIdentifier","src":"4067:6:36"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"london","externalReferences":[{"declaration":9473,"isOffset":false,"isSlot":true,"src":"4067:6:36","suffix":"slot","valueSize":1},{"declaration":9469,"isOffset":false,"isSlot":true,"src":"4077:10:36","suffix":"slot","valueSize":1}],"id":9475,"nodeType":"InlineAssembly","src":"4044:53:36"}]},"documentation":{"id":9467,"nodeType":"StructuredDocumentation","src":"3800:99:36","text":" @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`."},"id":9477,"implemented":true,"kind":"function","modifiers":[],"name":"getBytesSlot","nameLocation":"3913:12:36","nodeType":"FunctionDefinition","parameters":{"id":9470,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9469,"mutability":"mutable","name":"store","nameLocation":"3940:5:36","nodeType":"VariableDeclaration","scope":9477,"src":"3926:19:36","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":9468,"name":"bytes","nodeType":"ElementaryTypeName","src":"3926:5:36","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3925:21:36"},"returnParameters":{"id":9474,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9473,"mutability":"mutable","name":"r","nameLocation":"3988:1:36","nodeType":"VariableDeclaration","scope":9477,"src":"3970:19:36","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$9389_storage_ptr","typeString":"struct StorageSlot.BytesSlot"},"typeName":{"id":9472,"nodeType":"UserDefinedTypeName","pathNode":{"id":9471,"name":"BytesSlot","nameLocations":["3970:9:36"],"nodeType":"IdentifierPath","referencedDeclaration":9389,"src":"3970:9:36"},"referencedDeclaration":9389,"src":"3970:9:36","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$9389_storage_ptr","typeString":"struct StorageSlot.BytesSlot"}},"visibility":"internal"}],"src":"3969:21:36"},"scope":9478,"src":"3904:199:36","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":9479,"src":"1420:2685:36","usedErrors":[]}],"src":"193:3913:36"},"id":36},"@openzeppelin/contracts/utils/Strings.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/Strings.sol","exportedSymbols":{"Math":[10609],"SignedMath":[10714],"Strings":[9707]},"id":9708,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":9480,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"101:23:37"},{"absolutePath":"@openzeppelin/contracts/utils/math/Math.sol","file":"./math/Math.sol","id":9481,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":9708,"sourceUnit":10610,"src":"126:25:37","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/math/SignedMath.sol","file":"./math/SignedMath.sol","id":9482,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":9708,"sourceUnit":10715,"src":"152:31:37","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"Strings","contractDependencies":[],"contractKind":"library","documentation":{"id":9483,"nodeType":"StructuredDocumentation","src":"185:34:37","text":" @dev String operations."},"fullyImplemented":true,"id":9707,"linearizedBaseContracts":[9707],"name":"Strings","nameLocation":"228:7:37","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":9486,"mutability":"constant","name":"_SYMBOLS","nameLocation":"267:8:37","nodeType":"VariableDeclaration","scope":9707,"src":"242:54:37","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"},"typeName":{"id":9484,"name":"bytes16","nodeType":"ElementaryTypeName","src":"242:7:37","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"value":{"hexValue":"30313233343536373839616263646566","id":9485,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"278:18:37","typeDescriptions":{"typeIdentifier":"t_stringliteral_cb29997ed99ead0db59ce4d12b7d3723198c827273e5796737c926d78019c39f","typeString":"literal_string \"0123456789abcdef\""},"value":"0123456789abcdef"},"visibility":"private"},{"constant":true,"id":9489,"mutability":"constant","name":"_ADDRESS_LENGTH","nameLocation":"325:15:37","nodeType":"VariableDeclaration","scope":9707,"src":"302:43:37","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":9487,"name":"uint8","nodeType":"ElementaryTypeName","src":"302:5:37","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"3230","id":9488,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"343:2:37","typeDescriptions":{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"},"value":"20"},"visibility":"private"},{"body":{"id":9536,"nodeType":"Block","src":"518:625:37","statements":[{"id":9535,"nodeType":"UncheckedBlock","src":"528:609:37","statements":[{"assignments":[9498],"declarations":[{"constant":false,"id":9498,"mutability":"mutable","name":"length","nameLocation":"560:6:37","nodeType":"VariableDeclaration","scope":9535,"src":"552:14:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9497,"name":"uint256","nodeType":"ElementaryTypeName","src":"552:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9505,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9504,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":9501,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9492,"src":"580:5:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":9499,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10609,"src":"569:4:37","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$10609_$","typeString":"type(library Math)"}},"id":9500,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"574:5:37","memberName":"log10","nodeType":"MemberAccess","referencedDeclaration":10446,"src":"569:10:37","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":9502,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"569:17:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":9503,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"589:1:37","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"569:21:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"552:38:37"},{"assignments":[9507],"declarations":[{"constant":false,"id":9507,"mutability":"mutable","name":"buffer","nameLocation":"618:6:37","nodeType":"VariableDeclaration","scope":9535,"src":"604:20:37","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":9506,"name":"string","nodeType":"ElementaryTypeName","src":"604:6:37","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":9512,"initialValue":{"arguments":[{"id":9510,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9498,"src":"638:6:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9509,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"627:10:37","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"},"typeName":{"id":9508,"name":"string","nodeType":"ElementaryTypeName","src":"631:6:37","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}}},"id":9511,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"627:18:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"604:41:37"},{"assignments":[9514],"declarations":[{"constant":false,"id":9514,"mutability":"mutable","name":"ptr","nameLocation":"667:3:37","nodeType":"VariableDeclaration","scope":9535,"src":"659:11:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9513,"name":"uint256","nodeType":"ElementaryTypeName","src":"659:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9515,"nodeType":"VariableDeclarationStatement","src":"659:11:37"},{"AST":{"nodeType":"YulBlock","src":"740:67:37","statements":[{"nodeType":"YulAssignment","src":"758:35:37","value":{"arguments":[{"name":"buffer","nodeType":"YulIdentifier","src":"769:6:37"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"781:2:37","type":"","value":"32"},{"name":"length","nodeType":"YulIdentifier","src":"785:6:37"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"777:3:37"},"nodeType":"YulFunctionCall","src":"777:15:37"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"765:3:37"},"nodeType":"YulFunctionCall","src":"765:28:37"},"variableNames":[{"name":"ptr","nodeType":"YulIdentifier","src":"758:3:37"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"london","externalReferences":[{"declaration":9507,"isOffset":false,"isSlot":false,"src":"769:6:37","valueSize":1},{"declaration":9498,"isOffset":false,"isSlot":false,"src":"785:6:37","valueSize":1},{"declaration":9514,"isOffset":false,"isSlot":false,"src":"758:3:37","valueSize":1}],"id":9516,"nodeType":"InlineAssembly","src":"731:76:37"},{"body":{"id":9531,"nodeType":"Block","src":"833:267:37","statements":[{"expression":{"id":9519,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":false,"src":"851:5:37","subExpression":{"id":9518,"name":"ptr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9514,"src":"851:3:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9520,"nodeType":"ExpressionStatement","src":"851:5:37"},{"AST":{"nodeType":"YulBlock","src":"934:84:37","statements":[{"expression":{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"964:3:37"},{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"978:5:37"},{"kind":"number","nodeType":"YulLiteral","src":"985:2:37","type":"","value":"10"}],"functionName":{"name":"mod","nodeType":"YulIdentifier","src":"974:3:37"},"nodeType":"YulFunctionCall","src":"974:14:37"},{"name":"_SYMBOLS","nodeType":"YulIdentifier","src":"990:8:37"}],"functionName":{"name":"byte","nodeType":"YulIdentifier","src":"969:4:37"},"nodeType":"YulFunctionCall","src":"969:30:37"}],"functionName":{"name":"mstore8","nodeType":"YulIdentifier","src":"956:7:37"},"nodeType":"YulFunctionCall","src":"956:44:37"},"nodeType":"YulExpressionStatement","src":"956:44:37"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"london","externalReferences":[{"declaration":9486,"isOffset":false,"isSlot":false,"src":"990:8:37","valueSize":1},{"declaration":9514,"isOffset":false,"isSlot":false,"src":"964:3:37","valueSize":1},{"declaration":9492,"isOffset":false,"isSlot":false,"src":"978:5:37","valueSize":1}],"id":9521,"nodeType":"InlineAssembly","src":"925:93:37"},{"expression":{"id":9524,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9522,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9492,"src":"1035:5:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"hexValue":"3130","id":9523,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1044:2:37","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"1035:11:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9525,"nodeType":"ExpressionStatement","src":"1035:11:37"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9528,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9526,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9492,"src":"1068:5:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":9527,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1077:1:37","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1068:10:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9530,"nodeType":"IfStatement","src":"1064:21:37","trueBody":{"id":9529,"nodeType":"Break","src":"1080:5:37"}}]},"condition":{"hexValue":"74727565","id":9517,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"827:4:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"id":9532,"nodeType":"WhileStatement","src":"820:280:37"},{"expression":{"id":9533,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9507,"src":"1120:6:37","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":9496,"id":9534,"nodeType":"Return","src":"1113:13:37"}]}]},"documentation":{"id":9490,"nodeType":"StructuredDocumentation","src":"352:90:37","text":" @dev Converts a `uint256` to its ASCII `string` decimal representation."},"id":9537,"implemented":true,"kind":"function","modifiers":[],"name":"toString","nameLocation":"456:8:37","nodeType":"FunctionDefinition","parameters":{"id":9493,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9492,"mutability":"mutable","name":"value","nameLocation":"473:5:37","nodeType":"VariableDeclaration","scope":9537,"src":"465:13:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9491,"name":"uint256","nodeType":"ElementaryTypeName","src":"465:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"464:15:37"},"returnParameters":{"id":9496,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9495,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9537,"src":"503:13:37","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":9494,"name":"string","nodeType":"ElementaryTypeName","src":"503:6:37","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"502:15:37"},"scope":9707,"src":"447:696:37","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9564,"nodeType":"Block","src":"1313:103:37","statements":[{"expression":{"arguments":[{"arguments":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9549,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9540,"src":"1354:5:37","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":9550,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1362:1:37","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1354:9:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"","id":9553,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1372:2:37","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"id":9554,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"1354:20:37","trueExpression":{"hexValue":"2d","id":9552,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1366:3:37","typeDescriptions":{"typeIdentifier":"t_stringliteral_d3b8281179950f98149eefdb158d0e1acb56f56e8e343aa9fefafa7e36959561","typeString":"literal_string \"-\""},"value":"-"},"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[{"arguments":[{"id":9558,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9540,"src":"1400:5:37","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"expression":{"id":9556,"name":"SignedMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10714,"src":"1385:10:37","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SignedMath_$10714_$","typeString":"type(library SignedMath)"}},"id":9557,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1396:3:37","memberName":"abs","nodeType":"MemberAccess","referencedDeclaration":10713,"src":"1385:14:37","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_uint256_$","typeString":"function (int256) pure returns (uint256)"}},"id":9559,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1385:21:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9555,"name":"toString","nodeType":"Identifier","overloadedDeclarations":[9537,9565],"referencedDeclaration":9537,"src":"1376:8:37","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"}},"id":9560,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1376:31:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":9547,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967295,"src":"1337:3:37","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":9548,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1341:12:37","memberName":"encodePacked","nodeType":"MemberAccess","src":"1337:16:37","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":9561,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1337:71:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":9546,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1330:6:37","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":9545,"name":"string","nodeType":"ElementaryTypeName","src":"1330:6:37","typeDescriptions":{}}},"id":9562,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1330:79:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":9544,"id":9563,"nodeType":"Return","src":"1323:86:37"}]},"documentation":{"id":9538,"nodeType":"StructuredDocumentation","src":"1149:89:37","text":" @dev Converts a `int256` to its ASCII `string` decimal representation."},"id":9565,"implemented":true,"kind":"function","modifiers":[],"name":"toString","nameLocation":"1252:8:37","nodeType":"FunctionDefinition","parameters":{"id":9541,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9540,"mutability":"mutable","name":"value","nameLocation":"1268:5:37","nodeType":"VariableDeclaration","scope":9565,"src":"1261:12:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":9539,"name":"int256","nodeType":"ElementaryTypeName","src":"1261:6:37","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1260:14:37"},"returnParameters":{"id":9544,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9543,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9565,"src":"1298:13:37","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":9542,"name":"string","nodeType":"ElementaryTypeName","src":"1298:6:37","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1297:15:37"},"scope":9707,"src":"1243:173:37","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9584,"nodeType":"Block","src":"1595:100:37","statements":[{"id":9583,"nodeType":"UncheckedBlock","src":"1605:84:37","statements":[{"expression":{"arguments":[{"id":9574,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9568,"src":"1648:5:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9580,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":9577,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9568,"src":"1667:5:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":9575,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10609,"src":"1655:4:37","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$10609_$","typeString":"type(library Math)"}},"id":9576,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1660:6:37","memberName":"log256","nodeType":"MemberAccess","referencedDeclaration":10569,"src":"1655:11:37","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":9578,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1655:18:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":9579,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1676:1:37","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1655:22:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9573,"name":"toHexString","nodeType":"Identifier","overloadedDeclarations":[9585,9661,9681],"referencedDeclaration":9661,"src":"1636:11:37","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (string memory)"}},"id":9581,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1636:42:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":9572,"id":9582,"nodeType":"Return","src":"1629:49:37"}]}]},"documentation":{"id":9566,"nodeType":"StructuredDocumentation","src":"1422:94:37","text":" @dev Converts a `uint256` to its ASCII `string` hexadecimal representation."},"id":9585,"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"1530:11:37","nodeType":"FunctionDefinition","parameters":{"id":9569,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9568,"mutability":"mutable","name":"value","nameLocation":"1550:5:37","nodeType":"VariableDeclaration","scope":9585,"src":"1542:13:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9567,"name":"uint256","nodeType":"ElementaryTypeName","src":"1542:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1541:15:37"},"returnParameters":{"id":9572,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9571,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9585,"src":"1580:13:37","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":9570,"name":"string","nodeType":"ElementaryTypeName","src":"1580:6:37","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1579:15:37"},"scope":9707,"src":"1521:174:37","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9660,"nodeType":"Block","src":"1908:347:37","statements":[{"assignments":[9596],"declarations":[{"constant":false,"id":9596,"mutability":"mutable","name":"buffer","nameLocation":"1931:6:37","nodeType":"VariableDeclaration","scope":9660,"src":"1918:19:37","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9595,"name":"bytes","nodeType":"ElementaryTypeName","src":"1918:5:37","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":9605,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9603,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9601,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":9599,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1950:1:37","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":9600,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9590,"src":"1954:6:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1950:10:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"32","id":9602,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1963:1:37","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"1950:14:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9598,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"1940:9:37","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":9597,"name":"bytes","nodeType":"ElementaryTypeName","src":"1944:5:37","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":9604,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1940:25:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"1918:47:37"},{"expression":{"id":9610,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":9606,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9596,"src":"1975:6:37","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":9608,"indexExpression":{"hexValue":"30","id":9607,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1982:1:37","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1975:9:37","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":9609,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1987:3:37","typeDescriptions":{"typeIdentifier":"t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d","typeString":"literal_string \"0\""},"value":"0"},"src":"1975:15:37","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":9611,"nodeType":"ExpressionStatement","src":"1975:15:37"},{"expression":{"id":9616,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":9612,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9596,"src":"2000:6:37","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":9614,"indexExpression":{"hexValue":"31","id":9613,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2007:1:37","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2000:9:37","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"78","id":9615,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2012:3:37","typeDescriptions":{"typeIdentifier":"t_stringliteral_7521d1cadbcfa91eec65aa16715b94ffc1c9654ba57ea2ef1a2127bca1127a83","typeString":"literal_string \"x\""},"value":"x"},"src":"2000:15:37","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":9617,"nodeType":"ExpressionStatement","src":"2000:15:37"},{"body":{"id":9646,"nodeType":"Block","src":"2070:83:37","statements":[{"expression":{"id":9640,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":9632,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9596,"src":"2084:6:37","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":9634,"indexExpression":{"id":9633,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9619,"src":"2091:1:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2084:9:37","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":9635,"name":"_SYMBOLS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9486,"src":"2096:8:37","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"id":9639,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9638,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9636,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9588,"src":"2105:5:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307866","id":9637,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2113:3:37","typeDescriptions":{"typeIdentifier":"t_rational_15_by_1","typeString":"int_const 15"},"value":"0xf"},"src":"2105:11:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2096:21:37","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"src":"2084:33:37","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":9641,"nodeType":"ExpressionStatement","src":"2084:33:37"},{"expression":{"id":9644,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9642,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9588,"src":"2131:5:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":9643,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2141:1:37","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"2131:11:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9645,"nodeType":"ExpressionStatement","src":"2131:11:37"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9628,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9626,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9619,"src":"2058:1:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"31","id":9627,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2062:1:37","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2058:5:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9647,"initializationExpression":{"assignments":[9619],"declarations":[{"constant":false,"id":9619,"mutability":"mutable","name":"i","nameLocation":"2038:1:37","nodeType":"VariableDeclaration","scope":9647,"src":"2030:9:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9618,"name":"uint256","nodeType":"ElementaryTypeName","src":"2030:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9625,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9624,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9622,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":9620,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2042:1:37","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":9621,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9590,"src":"2046:6:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2042:10:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":9623,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2055:1:37","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2042:14:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2030:26:37"},"loopExpression":{"expression":{"id":9630,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":true,"src":"2065:3:37","subExpression":{"id":9629,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9619,"src":"2067:1:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9631,"nodeType":"ExpressionStatement","src":"2065:3:37"},"nodeType":"ForStatement","src":"2025:128:37"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9651,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9649,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9588,"src":"2170:5:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":9650,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2179:1:37","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2170:10:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"537472696e67733a20686578206c656e67746820696e73756666696369656e74","id":9652,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2182:34:37","typeDescriptions":{"typeIdentifier":"t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2","typeString":"literal_string \"Strings: hex length insufficient\""},"value":"Strings: hex length insufficient"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2","typeString":"literal_string \"Strings: hex length insufficient\""}],"id":9648,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"2162:7:37","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":9653,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2162:55:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9654,"nodeType":"ExpressionStatement","src":"2162:55:37"},{"expression":{"arguments":[{"id":9657,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9596,"src":"2241:6:37","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":9656,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2234:6:37","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":9655,"name":"string","nodeType":"ElementaryTypeName","src":"2234:6:37","typeDescriptions":{}}},"id":9658,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2234:14:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":9594,"id":9659,"nodeType":"Return","src":"2227:21:37"}]},"documentation":{"id":9586,"nodeType":"StructuredDocumentation","src":"1701:112:37","text":" @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length."},"id":9661,"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"1827:11:37","nodeType":"FunctionDefinition","parameters":{"id":9591,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9588,"mutability":"mutable","name":"value","nameLocation":"1847:5:37","nodeType":"VariableDeclaration","scope":9661,"src":"1839:13:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9587,"name":"uint256","nodeType":"ElementaryTypeName","src":"1839:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9590,"mutability":"mutable","name":"length","nameLocation":"1862:6:37","nodeType":"VariableDeclaration","scope":9661,"src":"1854:14:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9589,"name":"uint256","nodeType":"ElementaryTypeName","src":"1854:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1838:31:37"},"returnParameters":{"id":9594,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9593,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9661,"src":"1893:13:37","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":9592,"name":"string","nodeType":"ElementaryTypeName","src":"1893:6:37","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1892:15:37"},"scope":9707,"src":"1818:437:37","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9680,"nodeType":"Block","src":"2480:76:37","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":9674,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9664,"src":"2525:4:37","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":9673,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2517:7:37","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":9672,"name":"uint160","nodeType":"ElementaryTypeName","src":"2517:7:37","typeDescriptions":{}}},"id":9675,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2517:13:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":9671,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2509:7:37","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":9670,"name":"uint256","nodeType":"ElementaryTypeName","src":"2509:7:37","typeDescriptions":{}}},"id":9676,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2509:22:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9677,"name":"_ADDRESS_LENGTH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9489,"src":"2533:15:37","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":9669,"name":"toHexString","nodeType":"Identifier","overloadedDeclarations":[9585,9661,9681],"referencedDeclaration":9661,"src":"2497:11:37","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (string memory)"}},"id":9678,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2497:52:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":9668,"id":9679,"nodeType":"Return","src":"2490:59:37"}]},"documentation":{"id":9662,"nodeType":"StructuredDocumentation","src":"2261:141:37","text":" @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation."},"id":9681,"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"2416:11:37","nodeType":"FunctionDefinition","parameters":{"id":9665,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9664,"mutability":"mutable","name":"addr","nameLocation":"2436:4:37","nodeType":"VariableDeclaration","scope":9681,"src":"2428:12:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9663,"name":"address","nodeType":"ElementaryTypeName","src":"2428:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2427:14:37"},"returnParameters":{"id":9668,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9667,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9681,"src":"2465:13:37","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":9666,"name":"string","nodeType":"ElementaryTypeName","src":"2465:6:37","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2464:15:37"},"scope":9707,"src":"2407:149:37","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9705,"nodeType":"Block","src":"2711:66:37","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":9703,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":9694,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9684,"src":"2744:1:37","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":9693,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2738:5:37","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":9692,"name":"bytes","nodeType":"ElementaryTypeName","src":"2738:5:37","typeDescriptions":{}}},"id":9695,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2738:8:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":9691,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967288,"src":"2728:9:37","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":9696,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2728:19:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"arguments":[{"id":9700,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9686,"src":"2767:1:37","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":9699,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2761:5:37","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":9698,"name":"bytes","nodeType":"ElementaryTypeName","src":"2761:5:37","typeDescriptions":{}}},"id":9701,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2761:8:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":9697,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967288,"src":"2751:9:37","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":9702,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2751:19:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"2728:42:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":9690,"id":9704,"nodeType":"Return","src":"2721:49:37"}]},"documentation":{"id":9682,"nodeType":"StructuredDocumentation","src":"2562:66:37","text":" @dev Returns true if the two strings are equal."},"id":9706,"implemented":true,"kind":"function","modifiers":[],"name":"equal","nameLocation":"2642:5:37","nodeType":"FunctionDefinition","parameters":{"id":9687,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9684,"mutability":"mutable","name":"a","nameLocation":"2662:1:37","nodeType":"VariableDeclaration","scope":9706,"src":"2648:15:37","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":9683,"name":"string","nodeType":"ElementaryTypeName","src":"2648:6:37","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":9686,"mutability":"mutable","name":"b","nameLocation":"2679:1:37","nodeType":"VariableDeclaration","scope":9706,"src":"2665:15:37","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":9685,"name":"string","nodeType":"ElementaryTypeName","src":"2665:6:37","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2647:34:37"},"returnParameters":{"id":9690,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9689,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9706,"src":"2705:4:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9688,"name":"bool","nodeType":"ElementaryTypeName","src":"2705:4:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2704:6:37"},"scope":9707,"src":"2633:144:37","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":9708,"src":"220:2559:37","usedErrors":[]}],"src":"101:2679:37"},"id":37},"@openzeppelin/contracts/utils/introspection/ERC165.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/introspection/ERC165.sol","exportedSymbols":{"ERC165":[9731],"IERC165":[9743]},"id":9732,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":9709,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"99:23:38"},{"absolutePath":"@openzeppelin/contracts/utils/introspection/IERC165.sol","file":"./IERC165.sol","id":9710,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":9732,"sourceUnit":9744,"src":"124:23:38","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":9712,"name":"IERC165","nameLocations":["754:7:38"],"nodeType":"IdentifierPath","referencedDeclaration":9743,"src":"754:7:38"},"id":9713,"nodeType":"InheritanceSpecifier","src":"754:7:38"}],"canonicalName":"ERC165","contractDependencies":[],"contractKind":"contract","documentation":{"id":9711,"nodeType":"StructuredDocumentation","src":"149:576:38","text":" @dev Implementation of the {IERC165} interface.\n Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\n for the additional interface id that will be supported. For example:\n ```solidity\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\n }\n ```\n Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation."},"fullyImplemented":true,"id":9731,"linearizedBaseContracts":[9731,9743],"name":"ERC165","nameLocation":"744:6:38","nodeType":"ContractDefinition","nodes":[{"baseFunctions":[9742],"body":{"id":9729,"nodeType":"Block","src":"920:64:38","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":9727,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9722,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9716,"src":"937:11:38","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":9724,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9743,"src":"957:7:38","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC165_$9743_$","typeString":"type(contract IERC165)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC165_$9743_$","typeString":"type(contract IERC165)"}],"id":9723,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"952:4:38","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":9725,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"952:13:38","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC165_$9743","typeString":"type(contract IERC165)"}},"id":9726,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"966:11:38","memberName":"interfaceId","nodeType":"MemberAccess","src":"952:25:38","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"937:40:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":9721,"id":9728,"nodeType":"Return","src":"930:47:38"}]},"documentation":{"id":9714,"nodeType":"StructuredDocumentation","src":"768:56:38","text":" @dev See {IERC165-supportsInterface}."},"functionSelector":"01ffc9a7","id":9730,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"838:17:38","nodeType":"FunctionDefinition","overrides":{"id":9718,"nodeType":"OverrideSpecifier","overrides":[],"src":"896:8:38"},"parameters":{"id":9717,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9716,"mutability":"mutable","name":"interfaceId","nameLocation":"863:11:38","nodeType":"VariableDeclaration","scope":9730,"src":"856:18:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":9715,"name":"bytes4","nodeType":"ElementaryTypeName","src":"856:6:38","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"855:20:38"},"returnParameters":{"id":9721,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9720,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9730,"src":"914:4:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9719,"name":"bool","nodeType":"ElementaryTypeName","src":"914:4:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"913:6:38"},"scope":9731,"src":"829:155:38","stateMutability":"view","virtual":true,"visibility":"public"}],"scope":9732,"src":"726:260:38","usedErrors":[]}],"src":"99:888:38"},"id":38},"@openzeppelin/contracts/utils/introspection/IERC165.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/introspection/IERC165.sol","exportedSymbols":{"IERC165":[9743]},"id":9744,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":9733,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"100:23:39"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC165","contractDependencies":[],"contractKind":"interface","documentation":{"id":9734,"nodeType":"StructuredDocumentation","src":"125:279:39","text":" @dev Interface of the ERC165 standard, as defined in the\n https://eips.ethereum.org/EIPS/eip-165[EIP].\n Implementers can declare support of contract interfaces, which can then be\n queried by others ({ERC165Checker}).\n For an implementation, see {ERC165}."},"fullyImplemented":false,"id":9743,"linearizedBaseContracts":[9743],"name":"IERC165","nameLocation":"415:7:39","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":9735,"nodeType":"StructuredDocumentation","src":"429:340:39","text":" @dev Returns true if this contract implements the interface defined by\n `interfaceId`. See the corresponding\n https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\n to learn more about how these ids are created.\n This function call must use less than 30 000 gas."},"functionSelector":"01ffc9a7","id":9742,"implemented":false,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"783:17:39","nodeType":"FunctionDefinition","parameters":{"id":9738,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9737,"mutability":"mutable","name":"interfaceId","nameLocation":"808:11:39","nodeType":"VariableDeclaration","scope":9742,"src":"801:18:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":9736,"name":"bytes4","nodeType":"ElementaryTypeName","src":"801:6:39","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"800:20:39"},"returnParameters":{"id":9741,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9740,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9742,"src":"844:4:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9739,"name":"bool","nodeType":"ElementaryTypeName","src":"844:4:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"843:6:39"},"scope":9743,"src":"774:76:39","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":9744,"src":"405:447:39","usedErrors":[]}],"src":"100:753:39"},"id":39},"@openzeppelin/contracts/utils/math/Math.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/math/Math.sol","exportedSymbols":{"Math":[10609]},"id":10610,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":9745,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"103:23:40"},{"abstract":false,"baseContracts":[],"canonicalName":"Math","contractDependencies":[],"contractKind":"library","documentation":{"id":9746,"nodeType":"StructuredDocumentation","src":"128:73:40","text":" @dev Standard math utilities missing in the Solidity language."},"fullyImplemented":true,"id":10609,"linearizedBaseContracts":[10609],"name":"Math","nameLocation":"210:4:40","nodeType":"ContractDefinition","nodes":[{"canonicalName":"Math.Rounding","id":9750,"members":[{"id":9747,"name":"Down","nameLocation":"245:4:40","nodeType":"EnumValue","src":"245:4:40"},{"id":9748,"name":"Up","nameLocation":"287:2:40","nodeType":"EnumValue","src":"287:2:40"},{"id":9749,"name":"Zero","nameLocation":"318:4:40","nodeType":"EnumValue","src":"318:4:40"}],"name":"Rounding","nameLocation":"226:8:40","nodeType":"EnumDefinition","src":"221:122:40"},{"body":{"id":9767,"nodeType":"Block","src":"480:37:40","statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9762,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9760,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9753,"src":"497:1:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":9761,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9755,"src":"501:1:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"497:5:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":9764,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9755,"src":"509:1:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9765,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"497:13:40","trueExpression":{"id":9763,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9753,"src":"505:1:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9759,"id":9766,"nodeType":"Return","src":"490:20:40"}]},"documentation":{"id":9751,"nodeType":"StructuredDocumentation","src":"349:59:40","text":" @dev Returns the largest of two numbers."},"id":9768,"implemented":true,"kind":"function","modifiers":[],"name":"max","nameLocation":"422:3:40","nodeType":"FunctionDefinition","parameters":{"id":9756,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9753,"mutability":"mutable","name":"a","nameLocation":"434:1:40","nodeType":"VariableDeclaration","scope":9768,"src":"426:9:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9752,"name":"uint256","nodeType":"ElementaryTypeName","src":"426:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9755,"mutability":"mutable","name":"b","nameLocation":"445:1:40","nodeType":"VariableDeclaration","scope":9768,"src":"437:9:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9754,"name":"uint256","nodeType":"ElementaryTypeName","src":"437:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"425:22:40"},"returnParameters":{"id":9759,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9758,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9768,"src":"471:7:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9757,"name":"uint256","nodeType":"ElementaryTypeName","src":"471:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"470:9:40"},"scope":10609,"src":"413:104:40","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9785,"nodeType":"Block","src":"655:37:40","statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9780,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9778,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9771,"src":"672:1:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":9779,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9773,"src":"676:1:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"672:5:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":9782,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9773,"src":"684:1:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9783,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"672:13:40","trueExpression":{"id":9781,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9771,"src":"680:1:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9777,"id":9784,"nodeType":"Return","src":"665:20:40"}]},"documentation":{"id":9769,"nodeType":"StructuredDocumentation","src":"523:60:40","text":" @dev Returns the smallest of two numbers."},"id":9786,"implemented":true,"kind":"function","modifiers":[],"name":"min","nameLocation":"597:3:40","nodeType":"FunctionDefinition","parameters":{"id":9774,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9771,"mutability":"mutable","name":"a","nameLocation":"609:1:40","nodeType":"VariableDeclaration","scope":9786,"src":"601:9:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9770,"name":"uint256","nodeType":"ElementaryTypeName","src":"601:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9773,"mutability":"mutable","name":"b","nameLocation":"620:1:40","nodeType":"VariableDeclaration","scope":9786,"src":"612:9:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9772,"name":"uint256","nodeType":"ElementaryTypeName","src":"612:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"600:22:40"},"returnParameters":{"id":9777,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9776,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9786,"src":"646:7:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9775,"name":"uint256","nodeType":"ElementaryTypeName","src":"646:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"645:9:40"},"scope":10609,"src":"588:104:40","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9808,"nodeType":"Block","src":"876:82:40","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9806,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9798,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9796,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9789,"src":"931:1:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":9797,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9791,"src":"935:1:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"931:5:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":9799,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"930:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9805,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9802,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9800,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9789,"src":"941:1:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":9801,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9791,"src":"945:1:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"941:5:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":9803,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"940:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"32","id":9804,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"950:1:40","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"940:11:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"930:21:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9795,"id":9807,"nodeType":"Return","src":"923:28:40"}]},"documentation":{"id":9787,"nodeType":"StructuredDocumentation","src":"698:102:40","text":" @dev Returns the average of two numbers. The result is rounded towards\n zero."},"id":9809,"implemented":true,"kind":"function","modifiers":[],"name":"average","nameLocation":"814:7:40","nodeType":"FunctionDefinition","parameters":{"id":9792,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9789,"mutability":"mutable","name":"a","nameLocation":"830:1:40","nodeType":"VariableDeclaration","scope":9809,"src":"822:9:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9788,"name":"uint256","nodeType":"ElementaryTypeName","src":"822:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9791,"mutability":"mutable","name":"b","nameLocation":"841:1:40","nodeType":"VariableDeclaration","scope":9809,"src":"833:9:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9790,"name":"uint256","nodeType":"ElementaryTypeName","src":"833:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"821:22:40"},"returnParameters":{"id":9795,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9794,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9809,"src":"867:7:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9793,"name":"uint256","nodeType":"ElementaryTypeName","src":"867:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"866:9:40"},"scope":10609,"src":"805:153:40","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9833,"nodeType":"Block","src":"1228:123:40","statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9821,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9819,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9812,"src":"1316:1:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":9820,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1321:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1316:6:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9830,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9828,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9825,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9823,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9812,"src":"1330:1:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":9824,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1334:1:40","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1330:5:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":9826,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1329:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":9827,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9814,"src":"1339:1:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1329:11:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":9829,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1343:1:40","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1329:15:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9831,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"1316:28:40","trueExpression":{"hexValue":"30","id":9822,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1325:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9818,"id":9832,"nodeType":"Return","src":"1309:35:40"}]},"documentation":{"id":9810,"nodeType":"StructuredDocumentation","src":"964:188:40","text":" @dev Returns the ceiling of the division of two numbers.\n This differs from standard division with `/` in that it rounds up instead\n of rounding down."},"id":9834,"implemented":true,"kind":"function","modifiers":[],"name":"ceilDiv","nameLocation":"1166:7:40","nodeType":"FunctionDefinition","parameters":{"id":9815,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9812,"mutability":"mutable","name":"a","nameLocation":"1182:1:40","nodeType":"VariableDeclaration","scope":9834,"src":"1174:9:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9811,"name":"uint256","nodeType":"ElementaryTypeName","src":"1174:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9814,"mutability":"mutable","name":"b","nameLocation":"1193:1:40","nodeType":"VariableDeclaration","scope":9834,"src":"1185:9:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9813,"name":"uint256","nodeType":"ElementaryTypeName","src":"1185:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1173:22:40"},"returnParameters":{"id":9818,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9817,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9834,"src":"1219:7:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9816,"name":"uint256","nodeType":"ElementaryTypeName","src":"1219:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1218:9:40"},"scope":10609,"src":"1157:194:40","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9956,"nodeType":"Block","src":"1765:4115:40","statements":[{"id":9955,"nodeType":"UncheckedBlock","src":"1775:4099:40","statements":[{"assignments":[9847],"declarations":[{"constant":false,"id":9847,"mutability":"mutable","name":"prod0","nameLocation":"2104:5:40","nodeType":"VariableDeclaration","scope":9955,"src":"2096:13:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9846,"name":"uint256","nodeType":"ElementaryTypeName","src":"2096:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9848,"nodeType":"VariableDeclarationStatement","src":"2096:13:40"},{"assignments":[9850],"declarations":[{"constant":false,"id":9850,"mutability":"mutable","name":"prod1","nameLocation":"2176:5:40","nodeType":"VariableDeclaration","scope":9955,"src":"2168:13:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9849,"name":"uint256","nodeType":"ElementaryTypeName","src":"2168:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9851,"nodeType":"VariableDeclarationStatement","src":"2168:13:40"},{"AST":{"nodeType":"YulBlock","src":"2248:157:40","statements":[{"nodeType":"YulVariableDeclaration","src":"2266:30:40","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"2283:1:40"},{"name":"y","nodeType":"YulIdentifier","src":"2286:1:40"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2293:1:40","type":"","value":"0"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"2289:3:40"},"nodeType":"YulFunctionCall","src":"2289:6:40"}],"functionName":{"name":"mulmod","nodeType":"YulIdentifier","src":"2276:6:40"},"nodeType":"YulFunctionCall","src":"2276:20:40"},"variables":[{"name":"mm","nodeType":"YulTypedName","src":"2270:2:40","type":""}]},{"nodeType":"YulAssignment","src":"2313:18:40","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"2326:1:40"},{"name":"y","nodeType":"YulIdentifier","src":"2329:1:40"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"2322:3:40"},"nodeType":"YulFunctionCall","src":"2322:9:40"},"variableNames":[{"name":"prod0","nodeType":"YulIdentifier","src":"2313:5:40"}]},{"nodeType":"YulAssignment","src":"2348:43:40","value":{"arguments":[{"arguments":[{"name":"mm","nodeType":"YulIdentifier","src":"2365:2:40"},{"name":"prod0","nodeType":"YulIdentifier","src":"2369:5:40"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2361:3:40"},"nodeType":"YulFunctionCall","src":"2361:14:40"},{"arguments":[{"name":"mm","nodeType":"YulIdentifier","src":"2380:2:40"},{"name":"prod0","nodeType":"YulIdentifier","src":"2384:5:40"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2377:2:40"},"nodeType":"YulFunctionCall","src":"2377:13:40"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2357:3:40"},"nodeType":"YulFunctionCall","src":"2357:34:40"},"variableNames":[{"name":"prod1","nodeType":"YulIdentifier","src":"2348:5:40"}]}]},"evmVersion":"london","externalReferences":[{"declaration":9847,"isOffset":false,"isSlot":false,"src":"2313:5:40","valueSize":1},{"declaration":9847,"isOffset":false,"isSlot":false,"src":"2369:5:40","valueSize":1},{"declaration":9847,"isOffset":false,"isSlot":false,"src":"2384:5:40","valueSize":1},{"declaration":9850,"isOffset":false,"isSlot":false,"src":"2348:5:40","valueSize":1},{"declaration":9837,"isOffset":false,"isSlot":false,"src":"2283:1:40","valueSize":1},{"declaration":9837,"isOffset":false,"isSlot":false,"src":"2326:1:40","valueSize":1},{"declaration":9839,"isOffset":false,"isSlot":false,"src":"2286:1:40","valueSize":1},{"declaration":9839,"isOffset":false,"isSlot":false,"src":"2329:1:40","valueSize":1}],"id":9852,"nodeType":"InlineAssembly","src":"2239:166:40"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9855,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9853,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9850,"src":"2486:5:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":9854,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2495:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2486:10:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9861,"nodeType":"IfStatement","src":"2482:368:40","trueBody":{"id":9860,"nodeType":"Block","src":"2498:352:40","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9858,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9856,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9847,"src":"2816:5:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":9857,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9841,"src":"2824:11:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2816:19:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9845,"id":9859,"nodeType":"Return","src":"2809:26:40"}]}},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9865,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9863,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9841,"src":"2960:11:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":9864,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9850,"src":"2974:5:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2960:19:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4d6174683a206d756c446976206f766572666c6f77","id":9866,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2981:23:40","typeDescriptions":{"typeIdentifier":"t_stringliteral_d87093691d63b122ac2c14d1b11554b287e2431cf2b03550b3be7cffb0f86851","typeString":"literal_string \"Math: mulDiv overflow\""},"value":"Math: mulDiv overflow"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d87093691d63b122ac2c14d1b11554b287e2431cf2b03550b3be7cffb0f86851","typeString":"literal_string \"Math: mulDiv overflow\""}],"id":9862,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"2952:7:40","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":9867,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2952:53:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9868,"nodeType":"ExpressionStatement","src":"2952:53:40"},{"assignments":[9870],"declarations":[{"constant":false,"id":9870,"mutability":"mutable","name":"remainder","nameLocation":"3269:9:40","nodeType":"VariableDeclaration","scope":9955,"src":"3261:17:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9869,"name":"uint256","nodeType":"ElementaryTypeName","src":"3261:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9871,"nodeType":"VariableDeclarationStatement","src":"3261:17:40"},{"AST":{"nodeType":"YulBlock","src":"3301:291:40","statements":[{"nodeType":"YulAssignment","src":"3370:38:40","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"3390:1:40"},{"name":"y","nodeType":"YulIdentifier","src":"3393:1:40"},{"name":"denominator","nodeType":"YulIdentifier","src":"3396:11:40"}],"functionName":{"name":"mulmod","nodeType":"YulIdentifier","src":"3383:6:40"},"nodeType":"YulFunctionCall","src":"3383:25:40"},"variableNames":[{"name":"remainder","nodeType":"YulIdentifier","src":"3370:9:40"}]},{"nodeType":"YulAssignment","src":"3490:41:40","value":{"arguments":[{"name":"prod1","nodeType":"YulIdentifier","src":"3503:5:40"},{"arguments":[{"name":"remainder","nodeType":"YulIdentifier","src":"3513:9:40"},{"name":"prod0","nodeType":"YulIdentifier","src":"3524:5:40"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3510:2:40"},"nodeType":"YulFunctionCall","src":"3510:20:40"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3499:3:40"},"nodeType":"YulFunctionCall","src":"3499:32:40"},"variableNames":[{"name":"prod1","nodeType":"YulIdentifier","src":"3490:5:40"}]},{"nodeType":"YulAssignment","src":"3548:30:40","value":{"arguments":[{"name":"prod0","nodeType":"YulIdentifier","src":"3561:5:40"},{"name":"remainder","nodeType":"YulIdentifier","src":"3568:9:40"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3557:3:40"},"nodeType":"YulFunctionCall","src":"3557:21:40"},"variableNames":[{"name":"prod0","nodeType":"YulIdentifier","src":"3548:5:40"}]}]},"evmVersion":"london","externalReferences":[{"declaration":9841,"isOffset":false,"isSlot":false,"src":"3396:11:40","valueSize":1},{"declaration":9847,"isOffset":false,"isSlot":false,"src":"3524:5:40","valueSize":1},{"declaration":9847,"isOffset":false,"isSlot":false,"src":"3548:5:40","valueSize":1},{"declaration":9847,"isOffset":false,"isSlot":false,"src":"3561:5:40","valueSize":1},{"declaration":9850,"isOffset":false,"isSlot":false,"src":"3490:5:40","valueSize":1},{"declaration":9850,"isOffset":false,"isSlot":false,"src":"3503:5:40","valueSize":1},{"declaration":9870,"isOffset":false,"isSlot":false,"src":"3370:9:40","valueSize":1},{"declaration":9870,"isOffset":false,"isSlot":false,"src":"3513:9:40","valueSize":1},{"declaration":9870,"isOffset":false,"isSlot":false,"src":"3568:9:40","valueSize":1},{"declaration":9837,"isOffset":false,"isSlot":false,"src":"3390:1:40","valueSize":1},{"declaration":9839,"isOffset":false,"isSlot":false,"src":"3393:1:40","valueSize":1}],"id":9872,"nodeType":"InlineAssembly","src":"3292:300:40"},{"assignments":[9874],"declarations":[{"constant":false,"id":9874,"mutability":"mutable","name":"twos","nameLocation":"3907:4:40","nodeType":"VariableDeclaration","scope":9955,"src":"3899:12:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9873,"name":"uint256","nodeType":"ElementaryTypeName","src":"3899:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9882,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9881,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9875,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9841,"src":"3914:11:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9879,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9877,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"~","prefix":true,"src":"3929:12:40","subExpression":{"id":9876,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9841,"src":"3930:11:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":9878,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3944:1:40","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3929:16:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":9880,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3928:18:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3914:32:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3899:47:40"},{"AST":{"nodeType":"YulBlock","src":"3969:362:40","statements":[{"nodeType":"YulAssignment","src":"4034:37:40","value":{"arguments":[{"name":"denominator","nodeType":"YulIdentifier","src":"4053:11:40"},{"name":"twos","nodeType":"YulIdentifier","src":"4066:4:40"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"4049:3:40"},"nodeType":"YulFunctionCall","src":"4049:22:40"},"variableNames":[{"name":"denominator","nodeType":"YulIdentifier","src":"4034:11:40"}]},{"nodeType":"YulAssignment","src":"4138:25:40","value":{"arguments":[{"name":"prod0","nodeType":"YulIdentifier","src":"4151:5:40"},{"name":"twos","nodeType":"YulIdentifier","src":"4158:4:40"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"4147:3:40"},"nodeType":"YulFunctionCall","src":"4147:16:40"},"variableNames":[{"name":"prod0","nodeType":"YulIdentifier","src":"4138:5:40"}]},{"nodeType":"YulAssignment","src":"4278:39:40","value":{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4298:1:40","type":"","value":"0"},{"name":"twos","nodeType":"YulIdentifier","src":"4301:4:40"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4294:3:40"},"nodeType":"YulFunctionCall","src":"4294:12:40"},{"name":"twos","nodeType":"YulIdentifier","src":"4308:4:40"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"4290:3:40"},"nodeType":"YulFunctionCall","src":"4290:23:40"},{"kind":"number","nodeType":"YulLiteral","src":"4315:1:40","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4286:3:40"},"nodeType":"YulFunctionCall","src":"4286:31:40"},"variableNames":[{"name":"twos","nodeType":"YulIdentifier","src":"4278:4:40"}]}]},"evmVersion":"london","externalReferences":[{"declaration":9841,"isOffset":false,"isSlot":false,"src":"4034:11:40","valueSize":1},{"declaration":9841,"isOffset":false,"isSlot":false,"src":"4053:11:40","valueSize":1},{"declaration":9847,"isOffset":false,"isSlot":false,"src":"4138:5:40","valueSize":1},{"declaration":9847,"isOffset":false,"isSlot":false,"src":"4151:5:40","valueSize":1},{"declaration":9874,"isOffset":false,"isSlot":false,"src":"4066:4:40","valueSize":1},{"declaration":9874,"isOffset":false,"isSlot":false,"src":"4158:4:40","valueSize":1},{"declaration":9874,"isOffset":false,"isSlot":false,"src":"4278:4:40","valueSize":1},{"declaration":9874,"isOffset":false,"isSlot":false,"src":"4301:4:40","valueSize":1},{"declaration":9874,"isOffset":false,"isSlot":false,"src":"4308:4:40","valueSize":1}],"id":9883,"nodeType":"InlineAssembly","src":"3960:371:40"},{"expression":{"id":9888,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9884,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9847,"src":"4397:5:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9887,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9885,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9850,"src":"4406:5:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":9886,"name":"twos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9874,"src":"4414:4:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4406:12:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4397:21:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9889,"nodeType":"ExpressionStatement","src":"4397:21:40"},{"assignments":[9891],"declarations":[{"constant":false,"id":9891,"mutability":"mutable","name":"inverse","nameLocation":"4744:7:40","nodeType":"VariableDeclaration","scope":9955,"src":"4736:15:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9890,"name":"uint256","nodeType":"ElementaryTypeName","src":"4736:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9898,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9897,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9894,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"33","id":9892,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4755:1:40","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":9893,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9841,"src":"4759:11:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4755:15:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":9895,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4754:17:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"hexValue":"32","id":9896,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4774:1:40","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"4754:21:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4736:39:40"},{"expression":{"id":9905,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9899,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9891,"src":"4992:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9904,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":9900,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5003:1:40","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9903,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9901,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9841,"src":"5007:11:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":9902,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9891,"src":"5021:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5007:21:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5003:25:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4992:36:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9906,"nodeType":"ExpressionStatement","src":"4992:36:40"},{"expression":{"id":9913,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9907,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9891,"src":"5061:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9912,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":9908,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5072:1:40","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9911,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9909,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9841,"src":"5076:11:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":9910,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9891,"src":"5090:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5076:21:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5072:25:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5061:36:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9914,"nodeType":"ExpressionStatement","src":"5061:36:40"},{"expression":{"id":9921,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9915,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9891,"src":"5131:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9920,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":9916,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5142:1:40","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9919,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9917,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9841,"src":"5146:11:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":9918,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9891,"src":"5160:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5146:21:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5142:25:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5131:36:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9922,"nodeType":"ExpressionStatement","src":"5131:36:40"},{"expression":{"id":9929,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9923,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9891,"src":"5201:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9928,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":9924,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5212:1:40","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9927,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9925,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9841,"src":"5216:11:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":9926,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9891,"src":"5230:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5216:21:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5212:25:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5201:36:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9930,"nodeType":"ExpressionStatement","src":"5201:36:40"},{"expression":{"id":9937,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9931,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9891,"src":"5271:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9936,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":9932,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5282:1:40","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9935,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9933,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9841,"src":"5286:11:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":9934,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9891,"src":"5300:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5286:21:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5282:25:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5271:36:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9938,"nodeType":"ExpressionStatement","src":"5271:36:40"},{"expression":{"id":9945,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9939,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9891,"src":"5342:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9944,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":9940,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5353:1:40","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9943,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9941,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9841,"src":"5357:11:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":9942,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9891,"src":"5371:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5357:21:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5353:25:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5342:36:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9946,"nodeType":"ExpressionStatement","src":"5342:36:40"},{"expression":{"id":9951,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9947,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9844,"src":"5812:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9950,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9948,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9847,"src":"5821:5:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":9949,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9891,"src":"5829:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5821:15:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5812:24:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9952,"nodeType":"ExpressionStatement","src":"5812:24:40"},{"expression":{"id":9953,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9844,"src":"5857:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9845,"id":9954,"nodeType":"Return","src":"5850:13:40"}]}]},"documentation":{"id":9835,"nodeType":"StructuredDocumentation","src":"1357:305:40","text":" @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\n @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)\n with further edits by Uniswap Labs also under MIT license."},"id":9957,"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"1676:6:40","nodeType":"FunctionDefinition","parameters":{"id":9842,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9837,"mutability":"mutable","name":"x","nameLocation":"1691:1:40","nodeType":"VariableDeclaration","scope":9957,"src":"1683:9:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9836,"name":"uint256","nodeType":"ElementaryTypeName","src":"1683:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9839,"mutability":"mutable","name":"y","nameLocation":"1702:1:40","nodeType":"VariableDeclaration","scope":9957,"src":"1694:9:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9838,"name":"uint256","nodeType":"ElementaryTypeName","src":"1694:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9841,"mutability":"mutable","name":"denominator","nameLocation":"1713:11:40","nodeType":"VariableDeclaration","scope":9957,"src":"1705:19:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9840,"name":"uint256","nodeType":"ElementaryTypeName","src":"1705:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1682:43:40"},"returnParameters":{"id":9845,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9844,"mutability":"mutable","name":"result","nameLocation":"1757:6:40","nodeType":"VariableDeclaration","scope":9957,"src":"1749:14:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9843,"name":"uint256","nodeType":"ElementaryTypeName","src":"1749:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1748:16:40"},"scope":10609,"src":"1667:4213:40","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":10000,"nodeType":"Block","src":"6122:189:40","statements":[{"assignments":[9973],"declarations":[{"constant":false,"id":9973,"mutability":"mutable","name":"result","nameLocation":"6140:6:40","nodeType":"VariableDeclaration","scope":10000,"src":"6132:14:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9972,"name":"uint256","nodeType":"ElementaryTypeName","src":"6132:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9979,"initialValue":{"arguments":[{"id":9975,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9960,"src":"6156:1:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9976,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9962,"src":"6159:1:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9977,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9964,"src":"6162:11:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9974,"name":"mulDiv","nodeType":"Identifier","overloadedDeclarations":[9957,10001],"referencedDeclaration":9957,"src":"6149:6:40","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":9978,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6149:25:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6132:42:40"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":9991,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_enum$_Rounding_$9750","typeString":"enum Math.Rounding"},"id":9983,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9980,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9967,"src":"6188:8:40","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$9750","typeString":"enum Math.Rounding"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":9981,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9750,"src":"6200:8:40","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$9750_$","typeString":"type(enum Math.Rounding)"}},"id":9982,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6209:2:40","memberName":"Up","nodeType":"MemberAccess","referencedDeclaration":9748,"src":"6200:11:40","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$9750","typeString":"enum Math.Rounding"}},"src":"6188:23:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9990,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":9985,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9960,"src":"6222:1:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9986,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9962,"src":"6225:1:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9987,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9964,"src":"6228:11:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9984,"name":"mulmod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967280,"src":"6215:6:40","typeDescriptions":{"typeIdentifier":"t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":9988,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6215:25:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":9989,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6243:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6215:29:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6188:56:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9997,"nodeType":"IfStatement","src":"6184:98:40","trueBody":{"id":9996,"nodeType":"Block","src":"6246:36:40","statements":[{"expression":{"id":9994,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9992,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9973,"src":"6260:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":9993,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6270:1:40","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"6260:11:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9995,"nodeType":"ExpressionStatement","src":"6260:11:40"}]}},{"expression":{"id":9998,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9973,"src":"6298:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9971,"id":9999,"nodeType":"Return","src":"6291:13:40"}]},"documentation":{"id":9958,"nodeType":"StructuredDocumentation","src":"5886:121:40","text":" @notice Calculates x * y / denominator with full precision, following the selected rounding direction."},"id":10001,"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"6021:6:40","nodeType":"FunctionDefinition","parameters":{"id":9968,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9960,"mutability":"mutable","name":"x","nameLocation":"6036:1:40","nodeType":"VariableDeclaration","scope":10001,"src":"6028:9:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9959,"name":"uint256","nodeType":"ElementaryTypeName","src":"6028:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9962,"mutability":"mutable","name":"y","nameLocation":"6047:1:40","nodeType":"VariableDeclaration","scope":10001,"src":"6039:9:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9961,"name":"uint256","nodeType":"ElementaryTypeName","src":"6039:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9964,"mutability":"mutable","name":"denominator","nameLocation":"6058:11:40","nodeType":"VariableDeclaration","scope":10001,"src":"6050:19:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9963,"name":"uint256","nodeType":"ElementaryTypeName","src":"6050:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9967,"mutability":"mutable","name":"rounding","nameLocation":"6080:8:40","nodeType":"VariableDeclaration","scope":10001,"src":"6071:17:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$9750","typeString":"enum Math.Rounding"},"typeName":{"id":9966,"nodeType":"UserDefinedTypeName","pathNode":{"id":9965,"name":"Rounding","nameLocations":["6071:8:40"],"nodeType":"IdentifierPath","referencedDeclaration":9750,"src":"6071:8:40"},"referencedDeclaration":9750,"src":"6071:8:40","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$9750","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"6027:62:40"},"returnParameters":{"id":9971,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9970,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10001,"src":"6113:7:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9969,"name":"uint256","nodeType":"ElementaryTypeName","src":"6113:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6112:9:40"},"scope":10609,"src":"6012:299:40","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":10112,"nodeType":"Block","src":"6587:1585:40","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10011,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10009,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10004,"src":"6601:1:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":10010,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6606:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6601:6:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10015,"nodeType":"IfStatement","src":"6597:45:40","trueBody":{"id":10014,"nodeType":"Block","src":"6609:33:40","statements":[{"expression":{"hexValue":"30","id":10012,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6630:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":10008,"id":10013,"nodeType":"Return","src":"6623:8:40"}]}},{"assignments":[10017],"declarations":[{"constant":false,"id":10017,"mutability":"mutable","name":"result","nameLocation":"7329:6:40","nodeType":"VariableDeclaration","scope":10112,"src":"7321:14:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10016,"name":"uint256","nodeType":"ElementaryTypeName","src":"7321:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10026,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10025,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":10018,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7338:1:40","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10023,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":10020,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10004,"src":"7349:1:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10019,"name":"log2","nodeType":"Identifier","overloadedDeclarations":[10281,10317],"referencedDeclaration":10281,"src":"7344:4:40","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":10021,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7344:7:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":10022,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7355:1:40","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7344:12:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":10024,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7343:14:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7338:19:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7321:36:40"},{"id":10111,"nodeType":"UncheckedBlock","src":"7758:408:40","statements":[{"expression":{"id":10036,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10027,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10017,"src":"7782:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10035,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10032,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10028,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10017,"src":"7792:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10031,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10029,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10004,"src":"7801:1:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":10030,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10017,"src":"7805:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7801:10:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7792:19:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":10033,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7791:21:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":10034,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7816:1:40","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7791:26:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7782:35:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10037,"nodeType":"ExpressionStatement","src":"7782:35:40"},{"expression":{"id":10047,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10038,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10017,"src":"7831:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10046,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10043,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10039,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10017,"src":"7841:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10042,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10040,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10004,"src":"7850:1:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":10041,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10017,"src":"7854:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7850:10:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7841:19:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":10044,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7840:21:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":10045,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7865:1:40","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7840:26:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7831:35:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10048,"nodeType":"ExpressionStatement","src":"7831:35:40"},{"expression":{"id":10058,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10049,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10017,"src":"7880:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10057,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10054,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10050,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10017,"src":"7890:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10053,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10051,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10004,"src":"7899:1:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":10052,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10017,"src":"7903:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7899:10:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7890:19:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":10055,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7889:21:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":10056,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7914:1:40","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7889:26:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7880:35:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10059,"nodeType":"ExpressionStatement","src":"7880:35:40"},{"expression":{"id":10069,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10060,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10017,"src":"7929:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10068,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10065,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10061,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10017,"src":"7939:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10064,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10062,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10004,"src":"7948:1:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":10063,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10017,"src":"7952:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7948:10:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7939:19:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":10066,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7938:21:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":10067,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7963:1:40","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7938:26:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7929:35:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10070,"nodeType":"ExpressionStatement","src":"7929:35:40"},{"expression":{"id":10080,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10071,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10017,"src":"7978:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10079,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10076,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10072,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10017,"src":"7988:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10075,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10073,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10004,"src":"7997:1:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":10074,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10017,"src":"8001:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7997:10:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7988:19:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":10077,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7987:21:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":10078,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8012:1:40","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7987:26:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7978:35:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10081,"nodeType":"ExpressionStatement","src":"7978:35:40"},{"expression":{"id":10091,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10082,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10017,"src":"8027:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10090,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10087,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10083,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10017,"src":"8037:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10086,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10084,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10004,"src":"8046:1:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":10085,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10017,"src":"8050:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8046:10:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8037:19:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":10088,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8036:21:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":10089,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8061:1:40","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"8036:26:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8027:35:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10092,"nodeType":"ExpressionStatement","src":"8027:35:40"},{"expression":{"id":10102,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10093,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10017,"src":"8076:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10101,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10098,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10094,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10017,"src":"8086:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10097,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10095,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10004,"src":"8095:1:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":10096,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10017,"src":"8099:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8095:10:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8086:19:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":10099,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8085:21:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":10100,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8110:1:40","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"8085:26:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8076:35:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10103,"nodeType":"ExpressionStatement","src":"8076:35:40"},{"expression":{"arguments":[{"id":10105,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10017,"src":"8136:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10108,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10106,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10004,"src":"8144:1:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":10107,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10017,"src":"8148:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8144:10:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10104,"name":"min","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9786,"src":"8132:3:40","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":10109,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8132:23:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":10008,"id":10110,"nodeType":"Return","src":"8125:30:40"}]}]},"documentation":{"id":10002,"nodeType":"StructuredDocumentation","src":"6317:208:40","text":" @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down.\n Inspired by Henry S. Warren, Jr.'s \"Hacker's Delight\" (Chapter 11)."},"id":10113,"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"6539:4:40","nodeType":"FunctionDefinition","parameters":{"id":10005,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10004,"mutability":"mutable","name":"a","nameLocation":"6552:1:40","nodeType":"VariableDeclaration","scope":10113,"src":"6544:9:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10003,"name":"uint256","nodeType":"ElementaryTypeName","src":"6544:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6543:11:40"},"returnParameters":{"id":10008,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10007,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10113,"src":"6578:7:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10006,"name":"uint256","nodeType":"ElementaryTypeName","src":"6578:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6577:9:40"},"scope":10609,"src":"6530:1642:40","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":10148,"nodeType":"Block","src":"8348:161:40","statements":[{"id":10147,"nodeType":"UncheckedBlock","src":"8358:145:40","statements":[{"assignments":[10125],"declarations":[{"constant":false,"id":10125,"mutability":"mutable","name":"result","nameLocation":"8390:6:40","nodeType":"VariableDeclaration","scope":10147,"src":"8382:14:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10124,"name":"uint256","nodeType":"ElementaryTypeName","src":"8382:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10129,"initialValue":{"arguments":[{"id":10127,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10116,"src":"8404:1:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10126,"name":"sqrt","nodeType":"Identifier","overloadedDeclarations":[10113,10149],"referencedDeclaration":10113,"src":"8399:4:40","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":10128,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8399:7:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8382:24:40"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10145,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10130,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10125,"src":"8427:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":10140,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_enum$_Rounding_$9750","typeString":"enum Math.Rounding"},"id":10134,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10131,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10119,"src":"8437:8:40","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$9750","typeString":"enum Math.Rounding"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":10132,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9750,"src":"8449:8:40","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$9750_$","typeString":"type(enum Math.Rounding)"}},"id":10133,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8458:2:40","memberName":"Up","nodeType":"MemberAccess","referencedDeclaration":9748,"src":"8449:11:40","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$9750","typeString":"enum Math.Rounding"}},"src":"8437:23:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10139,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10137,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10135,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10125,"src":"8464:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":10136,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10125,"src":"8473:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8464:15:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":10138,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10116,"src":"8482:1:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8464:19:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"8437:46:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":10142,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8490:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":10143,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"8437:54:40","trueExpression":{"hexValue":"31","id":10141,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8486:1:40","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":10144,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8436:56:40","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"8427:65:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":10123,"id":10146,"nodeType":"Return","src":"8420:72:40"}]}]},"documentation":{"id":10114,"nodeType":"StructuredDocumentation","src":"8178:89:40","text":" @notice Calculates sqrt(a), following the selected rounding direction."},"id":10149,"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"8281:4:40","nodeType":"FunctionDefinition","parameters":{"id":10120,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10116,"mutability":"mutable","name":"a","nameLocation":"8294:1:40","nodeType":"VariableDeclaration","scope":10149,"src":"8286:9:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10115,"name":"uint256","nodeType":"ElementaryTypeName","src":"8286:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10119,"mutability":"mutable","name":"rounding","nameLocation":"8306:8:40","nodeType":"VariableDeclaration","scope":10149,"src":"8297:17:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$9750","typeString":"enum Math.Rounding"},"typeName":{"id":10118,"nodeType":"UserDefinedTypeName","pathNode":{"id":10117,"name":"Rounding","nameLocations":["8297:8:40"],"nodeType":"IdentifierPath","referencedDeclaration":9750,"src":"8297:8:40"},"referencedDeclaration":9750,"src":"8297:8:40","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$9750","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"8285:30:40"},"returnParameters":{"id":10123,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10122,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10149,"src":"8339:7:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10121,"name":"uint256","nodeType":"ElementaryTypeName","src":"8339:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8338:9:40"},"scope":10609,"src":"8272:237:40","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":10280,"nodeType":"Block","src":"8694:922:40","statements":[{"assignments":[10158],"declarations":[{"constant":false,"id":10158,"mutability":"mutable","name":"result","nameLocation":"8712:6:40","nodeType":"VariableDeclaration","scope":10280,"src":"8704:14:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10157,"name":"uint256","nodeType":"ElementaryTypeName","src":"8704:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10160,"initialValue":{"hexValue":"30","id":10159,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8721:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"8704:18:40"},{"id":10277,"nodeType":"UncheckedBlock","src":"8732:855:40","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10165,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10163,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10161,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10152,"src":"8760:5:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":10162,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8769:3:40","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"8760:12:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":10164,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8775:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8760:16:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10175,"nodeType":"IfStatement","src":"8756:99:40","trueBody":{"id":10174,"nodeType":"Block","src":"8778:77:40","statements":[{"expression":{"id":10168,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10166,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10152,"src":"8796:5:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"313238","id":10167,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8806:3:40","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"8796:13:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10169,"nodeType":"ExpressionStatement","src":"8796:13:40"},{"expression":{"id":10172,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10170,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10158,"src":"8827:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"313238","id":10171,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8837:3:40","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"8827:13:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10173,"nodeType":"ExpressionStatement","src":"8827:13:40"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10180,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10178,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10176,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10152,"src":"8872:5:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3634","id":10177,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8881:2:40","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"8872:11:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":10179,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8886:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8872:15:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10190,"nodeType":"IfStatement","src":"8868:96:40","trueBody":{"id":10189,"nodeType":"Block","src":"8889:75:40","statements":[{"expression":{"id":10183,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10181,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10152,"src":"8907:5:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3634","id":10182,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8917:2:40","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"8907:12:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10184,"nodeType":"ExpressionStatement","src":"8907:12:40"},{"expression":{"id":10187,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10185,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10158,"src":"8937:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3634","id":10186,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8947:2:40","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"8937:12:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10188,"nodeType":"ExpressionStatement","src":"8937:12:40"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10195,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10193,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10191,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10152,"src":"8981:5:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3332","id":10192,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8990:2:40","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"8981:11:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":10194,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8995:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8981:15:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10205,"nodeType":"IfStatement","src":"8977:96:40","trueBody":{"id":10204,"nodeType":"Block","src":"8998:75:40","statements":[{"expression":{"id":10198,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10196,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10152,"src":"9016:5:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3332","id":10197,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9026:2:40","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"9016:12:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10199,"nodeType":"ExpressionStatement","src":"9016:12:40"},{"expression":{"id":10202,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10200,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10158,"src":"9046:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":10201,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9056:2:40","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"9046:12:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10203,"nodeType":"ExpressionStatement","src":"9046:12:40"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10210,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10208,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10206,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10152,"src":"9090:5:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3136","id":10207,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9099:2:40","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"9090:11:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":10209,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9104:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9090:15:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10220,"nodeType":"IfStatement","src":"9086:96:40","trueBody":{"id":10219,"nodeType":"Block","src":"9107:75:40","statements":[{"expression":{"id":10213,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10211,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10152,"src":"9125:5:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3136","id":10212,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9135:2:40","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"9125:12:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10214,"nodeType":"ExpressionStatement","src":"9125:12:40"},{"expression":{"id":10217,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10215,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10158,"src":"9155:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":10216,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9165:2:40","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"9155:12:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10218,"nodeType":"ExpressionStatement","src":"9155:12:40"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10225,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10223,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10221,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10152,"src":"9199:5:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":10222,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9208:1:40","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"9199:10:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":10224,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9212:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9199:14:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10235,"nodeType":"IfStatement","src":"9195:93:40","trueBody":{"id":10234,"nodeType":"Block","src":"9215:73:40","statements":[{"expression":{"id":10228,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10226,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10152,"src":"9233:5:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"38","id":10227,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9243:1:40","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"9233:11:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10229,"nodeType":"ExpressionStatement","src":"9233:11:40"},{"expression":{"id":10232,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10230,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10158,"src":"9262:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":10231,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9272:1:40","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"9262:11:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10233,"nodeType":"ExpressionStatement","src":"9262:11:40"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10240,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10238,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10236,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10152,"src":"9305:5:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"34","id":10237,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9314:1:40","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"9305:10:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":10239,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9318:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9305:14:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10250,"nodeType":"IfStatement","src":"9301:93:40","trueBody":{"id":10249,"nodeType":"Block","src":"9321:73:40","statements":[{"expression":{"id":10243,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10241,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10152,"src":"9339:5:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":10242,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9349:1:40","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"9339:11:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10244,"nodeType":"ExpressionStatement","src":"9339:11:40"},{"expression":{"id":10247,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10245,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10158,"src":"9368:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":10246,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9378:1:40","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"9368:11:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10248,"nodeType":"ExpressionStatement","src":"9368:11:40"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10255,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10253,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10251,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10152,"src":"9411:5:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"32","id":10252,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9420:1:40","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"9411:10:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":10254,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9424:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9411:14:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10265,"nodeType":"IfStatement","src":"9407:93:40","trueBody":{"id":10264,"nodeType":"Block","src":"9427:73:40","statements":[{"expression":{"id":10258,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10256,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10152,"src":"9445:5:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"32","id":10257,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9455:1:40","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"9445:11:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10259,"nodeType":"ExpressionStatement","src":"9445:11:40"},{"expression":{"id":10262,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10260,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10158,"src":"9474:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":10261,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9484:1:40","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"9474:11:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10263,"nodeType":"ExpressionStatement","src":"9474:11:40"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10270,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10268,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10266,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10152,"src":"9517:5:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":10267,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9526:1:40","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9517:10:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":10269,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9530:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9517:14:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10276,"nodeType":"IfStatement","src":"9513:64:40","trueBody":{"id":10275,"nodeType":"Block","src":"9533:44:40","statements":[{"expression":{"id":10273,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10271,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10158,"src":"9551:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":10272,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9561:1:40","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9551:11:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10274,"nodeType":"ExpressionStatement","src":"9551:11:40"}]}}]},{"expression":{"id":10278,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10158,"src":"9603:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":10156,"id":10279,"nodeType":"Return","src":"9596:13:40"}]},"documentation":{"id":10150,"nodeType":"StructuredDocumentation","src":"8515:113:40","text":" @dev Return the log in base 2, rounded down, of a positive value.\n Returns 0 if given 0."},"id":10281,"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"8642:4:40","nodeType":"FunctionDefinition","parameters":{"id":10153,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10152,"mutability":"mutable","name":"value","nameLocation":"8655:5:40","nodeType":"VariableDeclaration","scope":10281,"src":"8647:13:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10151,"name":"uint256","nodeType":"ElementaryTypeName","src":"8647:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8646:15:40"},"returnParameters":{"id":10156,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10155,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10281,"src":"8685:7:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10154,"name":"uint256","nodeType":"ElementaryTypeName","src":"8685:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8684:9:40"},"scope":10609,"src":"8633:983:40","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":10316,"nodeType":"Block","src":"9849:165:40","statements":[{"id":10315,"nodeType":"UncheckedBlock","src":"9859:149:40","statements":[{"assignments":[10293],"declarations":[{"constant":false,"id":10293,"mutability":"mutable","name":"result","nameLocation":"9891:6:40","nodeType":"VariableDeclaration","scope":10315,"src":"9883:14:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10292,"name":"uint256","nodeType":"ElementaryTypeName","src":"9883:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10297,"initialValue":{"arguments":[{"id":10295,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10284,"src":"9905:5:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10294,"name":"log2","nodeType":"Identifier","overloadedDeclarations":[10281,10317],"referencedDeclaration":10281,"src":"9900:4:40","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":10296,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9900:11:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9883:28:40"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10313,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10298,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10293,"src":"9932:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":10308,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_enum$_Rounding_$9750","typeString":"enum Math.Rounding"},"id":10302,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10299,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10287,"src":"9942:8:40","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$9750","typeString":"enum Math.Rounding"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":10300,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9750,"src":"9954:8:40","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$9750_$","typeString":"type(enum Math.Rounding)"}},"id":10301,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9963:2:40","memberName":"Up","nodeType":"MemberAccess","referencedDeclaration":9748,"src":"9954:11:40","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$9750","typeString":"enum Math.Rounding"}},"src":"9942:23:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10307,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10305,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":10303,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9969:1:40","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":10304,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10293,"src":"9974:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9969:11:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":10306,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10284,"src":"9983:5:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9969:19:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"9942:46:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":10310,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9995:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":10311,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"9942:54:40","trueExpression":{"hexValue":"31","id":10309,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9991:1:40","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":10312,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9941:56:40","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"9932:65:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":10291,"id":10314,"nodeType":"Return","src":"9925:72:40"}]}]},"documentation":{"id":10282,"nodeType":"StructuredDocumentation","src":"9622:142:40","text":" @dev Return the log in base 2, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"id":10317,"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"9778:4:40","nodeType":"FunctionDefinition","parameters":{"id":10288,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10284,"mutability":"mutable","name":"value","nameLocation":"9791:5:40","nodeType":"VariableDeclaration","scope":10317,"src":"9783:13:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10283,"name":"uint256","nodeType":"ElementaryTypeName","src":"9783:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10287,"mutability":"mutable","name":"rounding","nameLocation":"9807:8:40","nodeType":"VariableDeclaration","scope":10317,"src":"9798:17:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$9750","typeString":"enum Math.Rounding"},"typeName":{"id":10286,"nodeType":"UserDefinedTypeName","pathNode":{"id":10285,"name":"Rounding","nameLocations":["9798:8:40"],"nodeType":"IdentifierPath","referencedDeclaration":9750,"src":"9798:8:40"},"referencedDeclaration":9750,"src":"9798:8:40","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$9750","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"9782:34:40"},"returnParameters":{"id":10291,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10290,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10317,"src":"9840:7:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10289,"name":"uint256","nodeType":"ElementaryTypeName","src":"9840:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9839:9:40"},"scope":10609,"src":"9769:245:40","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":10445,"nodeType":"Block","src":"10201:854:40","statements":[{"assignments":[10326],"declarations":[{"constant":false,"id":10326,"mutability":"mutable","name":"result","nameLocation":"10219:6:40","nodeType":"VariableDeclaration","scope":10445,"src":"10211:14:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10325,"name":"uint256","nodeType":"ElementaryTypeName","src":"10211:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10328,"initialValue":{"hexValue":"30","id":10327,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10228:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"10211:18:40"},{"id":10442,"nodeType":"UncheckedBlock","src":"10239:787:40","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10333,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10329,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10320,"src":"10267:5:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"},"id":10332,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":10330,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10276:2:40","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":10331,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10282:2:40","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"10276:8:40","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"10267:17:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10345,"nodeType":"IfStatement","src":"10263:103:40","trueBody":{"id":10344,"nodeType":"Block","src":"10286:80:40","statements":[{"expression":{"id":10338,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10334,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10320,"src":"10304:5:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"},"id":10337,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":10335,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10313:2:40","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":10336,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10319:2:40","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"10313:8:40","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"10304:17:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10339,"nodeType":"ExpressionStatement","src":"10304:17:40"},{"expression":{"id":10342,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10340,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10326,"src":"10339:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3634","id":10341,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10349:2:40","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"10339:12:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10343,"nodeType":"ExpressionStatement","src":"10339:12:40"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10350,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10346,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10320,"src":"10383:5:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"},"id":10349,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":10347,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10392:2:40","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":10348,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10398:2:40","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"10392:8:40","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"10383:17:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10362,"nodeType":"IfStatement","src":"10379:103:40","trueBody":{"id":10361,"nodeType":"Block","src":"10402:80:40","statements":[{"expression":{"id":10355,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10351,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10320,"src":"10420:5:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"},"id":10354,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":10352,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10429:2:40","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":10353,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10435:2:40","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"10429:8:40","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"10420:17:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10356,"nodeType":"ExpressionStatement","src":"10420:17:40"},{"expression":{"id":10359,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10357,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10326,"src":"10455:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":10358,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10465:2:40","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"10455:12:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10360,"nodeType":"ExpressionStatement","src":"10455:12:40"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10367,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10363,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10320,"src":"10499:5:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":10366,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":10364,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10508:2:40","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":10365,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10514:2:40","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"10508:8:40","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"10499:17:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10379,"nodeType":"IfStatement","src":"10495:103:40","trueBody":{"id":10378,"nodeType":"Block","src":"10518:80:40","statements":[{"expression":{"id":10372,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10368,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10320,"src":"10536:5:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":10371,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":10369,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10545:2:40","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":10370,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10551:2:40","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"10545:8:40","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"10536:17:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10373,"nodeType":"ExpressionStatement","src":"10536:17:40"},{"expression":{"id":10376,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10374,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10326,"src":"10571:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":10375,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10581:2:40","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"10571:12:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10377,"nodeType":"ExpressionStatement","src":"10571:12:40"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10384,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10380,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10320,"src":"10615:5:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":10383,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":10381,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10624:2:40","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":10382,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10630:1:40","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"10624:7:40","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"10615:16:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10396,"nodeType":"IfStatement","src":"10611:100:40","trueBody":{"id":10395,"nodeType":"Block","src":"10633:78:40","statements":[{"expression":{"id":10389,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10385,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10320,"src":"10651:5:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":10388,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":10386,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10660:2:40","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":10387,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10666:1:40","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"10660:7:40","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"10651:16:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10390,"nodeType":"ExpressionStatement","src":"10651:16:40"},{"expression":{"id":10393,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10391,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10326,"src":"10685:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":10392,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10695:1:40","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"10685:11:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10394,"nodeType":"ExpressionStatement","src":"10685:11:40"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10401,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10397,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10320,"src":"10728:5:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":10400,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":10398,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10737:2:40","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":10399,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10743:1:40","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"10737:7:40","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"10728:16:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10413,"nodeType":"IfStatement","src":"10724:100:40","trueBody":{"id":10412,"nodeType":"Block","src":"10746:78:40","statements":[{"expression":{"id":10406,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10402,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10320,"src":"10764:5:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":10405,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":10403,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10773:2:40","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":10404,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10779:1:40","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"10773:7:40","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"10764:16:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10407,"nodeType":"ExpressionStatement","src":"10764:16:40"},{"expression":{"id":10410,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10408,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10326,"src":"10798:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":10409,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10808:1:40","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"10798:11:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10411,"nodeType":"ExpressionStatement","src":"10798:11:40"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10418,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10414,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10320,"src":"10841:5:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":10417,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":10415,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10850:2:40","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":10416,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10856:1:40","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"10850:7:40","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"10841:16:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10430,"nodeType":"IfStatement","src":"10837:100:40","trueBody":{"id":10429,"nodeType":"Block","src":"10859:78:40","statements":[{"expression":{"id":10423,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10419,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10320,"src":"10877:5:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":10422,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":10420,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10886:2:40","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":10421,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10892:1:40","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"10886:7:40","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"10877:16:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10424,"nodeType":"ExpressionStatement","src":"10877:16:40"},{"expression":{"id":10427,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10425,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10326,"src":"10911:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":10426,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10921:1:40","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"10911:11:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10428,"nodeType":"ExpressionStatement","src":"10911:11:40"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10435,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10431,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10320,"src":"10954:5:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"id":10434,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":10432,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10963:2:40","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"31","id":10433,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10969:1:40","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"10963:7:40","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"}},"src":"10954:16:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10441,"nodeType":"IfStatement","src":"10950:66:40","trueBody":{"id":10440,"nodeType":"Block","src":"10972:44:40","statements":[{"expression":{"id":10438,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10436,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10326,"src":"10990:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":10437,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11000:1:40","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"10990:11:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10439,"nodeType":"ExpressionStatement","src":"10990:11:40"}]}}]},{"expression":{"id":10443,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10326,"src":"11042:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":10324,"id":10444,"nodeType":"Return","src":"11035:13:40"}]},"documentation":{"id":10318,"nodeType":"StructuredDocumentation","src":"10020:114:40","text":" @dev Return the log in base 10, rounded down, of a positive value.\n Returns 0 if given 0."},"id":10446,"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"10148:5:40","nodeType":"FunctionDefinition","parameters":{"id":10321,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10320,"mutability":"mutable","name":"value","nameLocation":"10162:5:40","nodeType":"VariableDeclaration","scope":10446,"src":"10154:13:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10319,"name":"uint256","nodeType":"ElementaryTypeName","src":"10154:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10153:15:40"},"returnParameters":{"id":10324,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10323,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10446,"src":"10192:7:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10322,"name":"uint256","nodeType":"ElementaryTypeName","src":"10192:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10191:9:40"},"scope":10609,"src":"10139:916:40","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":10481,"nodeType":"Block","src":"11290:167:40","statements":[{"id":10480,"nodeType":"UncheckedBlock","src":"11300:151:40","statements":[{"assignments":[10458],"declarations":[{"constant":false,"id":10458,"mutability":"mutable","name":"result","nameLocation":"11332:6:40","nodeType":"VariableDeclaration","scope":10480,"src":"11324:14:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10457,"name":"uint256","nodeType":"ElementaryTypeName","src":"11324:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10462,"initialValue":{"arguments":[{"id":10460,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10449,"src":"11347:5:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10459,"name":"log10","nodeType":"Identifier","overloadedDeclarations":[10446,10482],"referencedDeclaration":10446,"src":"11341:5:40","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":10461,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11341:12:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"11324:29:40"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10478,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10463,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10458,"src":"11374:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":10473,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_enum$_Rounding_$9750","typeString":"enum Math.Rounding"},"id":10467,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10464,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10452,"src":"11384:8:40","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$9750","typeString":"enum Math.Rounding"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":10465,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9750,"src":"11396:8:40","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$9750_$","typeString":"type(enum Math.Rounding)"}},"id":10466,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11405:2:40","memberName":"Up","nodeType":"MemberAccess","referencedDeclaration":9748,"src":"11396:11:40","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$9750","typeString":"enum Math.Rounding"}},"src":"11384:23:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10472,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10470,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":10468,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11411:2:40","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"id":10469,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10458,"src":"11417:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11411:12:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":10471,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10449,"src":"11426:5:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11411:20:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"11384:47:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":10475,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11438:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":10476,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"11384:55:40","trueExpression":{"hexValue":"31","id":10474,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11434:1:40","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":10477,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11383:57:40","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"11374:66:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":10456,"id":10479,"nodeType":"Return","src":"11367:73:40"}]}]},"documentation":{"id":10447,"nodeType":"StructuredDocumentation","src":"11061:143:40","text":" @dev Return the log in base 10, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"id":10482,"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"11218:5:40","nodeType":"FunctionDefinition","parameters":{"id":10453,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10449,"mutability":"mutable","name":"value","nameLocation":"11232:5:40","nodeType":"VariableDeclaration","scope":10482,"src":"11224:13:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10448,"name":"uint256","nodeType":"ElementaryTypeName","src":"11224:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10452,"mutability":"mutable","name":"rounding","nameLocation":"11248:8:40","nodeType":"VariableDeclaration","scope":10482,"src":"11239:17:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$9750","typeString":"enum Math.Rounding"},"typeName":{"id":10451,"nodeType":"UserDefinedTypeName","pathNode":{"id":10450,"name":"Rounding","nameLocations":["11239:8:40"],"nodeType":"IdentifierPath","referencedDeclaration":9750,"src":"11239:8:40"},"referencedDeclaration":9750,"src":"11239:8:40","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$9750","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"11223:34:40"},"returnParameters":{"id":10456,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10455,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10482,"src":"11281:7:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10454,"name":"uint256","nodeType":"ElementaryTypeName","src":"11281:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11280:9:40"},"scope":10609,"src":"11209:248:40","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":10568,"nodeType":"Block","src":"11771:600:40","statements":[{"assignments":[10491],"declarations":[{"constant":false,"id":10491,"mutability":"mutable","name":"result","nameLocation":"11789:6:40","nodeType":"VariableDeclaration","scope":10568,"src":"11781:14:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10490,"name":"uint256","nodeType":"ElementaryTypeName","src":"11781:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10493,"initialValue":{"hexValue":"30","id":10492,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11798:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"11781:18:40"},{"id":10565,"nodeType":"UncheckedBlock","src":"11809:533:40","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10498,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10496,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10494,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10485,"src":"11837:5:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":10495,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11846:3:40","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"11837:12:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":10497,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11852:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11837:16:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10508,"nodeType":"IfStatement","src":"11833:98:40","trueBody":{"id":10507,"nodeType":"Block","src":"11855:76:40","statements":[{"expression":{"id":10501,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10499,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10485,"src":"11873:5:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"313238","id":10500,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11883:3:40","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"11873:13:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10502,"nodeType":"ExpressionStatement","src":"11873:13:40"},{"expression":{"id":10505,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10503,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10491,"src":"11904:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":10504,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11914:2:40","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"11904:12:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10506,"nodeType":"ExpressionStatement","src":"11904:12:40"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10513,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10511,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10509,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10485,"src":"11948:5:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3634","id":10510,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11957:2:40","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"11948:11:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":10512,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11962:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11948:15:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10523,"nodeType":"IfStatement","src":"11944:95:40","trueBody":{"id":10522,"nodeType":"Block","src":"11965:74:40","statements":[{"expression":{"id":10516,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10514,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10485,"src":"11983:5:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3634","id":10515,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11993:2:40","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"11983:12:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10517,"nodeType":"ExpressionStatement","src":"11983:12:40"},{"expression":{"id":10520,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10518,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10491,"src":"12013:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":10519,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12023:1:40","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"12013:11:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10521,"nodeType":"ExpressionStatement","src":"12013:11:40"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10528,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10526,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10524,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10485,"src":"12056:5:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3332","id":10525,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12065:2:40","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"12056:11:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":10527,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12070:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12056:15:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10538,"nodeType":"IfStatement","src":"12052:95:40","trueBody":{"id":10537,"nodeType":"Block","src":"12073:74:40","statements":[{"expression":{"id":10531,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10529,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10485,"src":"12091:5:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3332","id":10530,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12101:2:40","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"12091:12:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10532,"nodeType":"ExpressionStatement","src":"12091:12:40"},{"expression":{"id":10535,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10533,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10491,"src":"12121:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":10534,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12131:1:40","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"12121:11:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10536,"nodeType":"ExpressionStatement","src":"12121:11:40"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10543,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10541,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10539,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10485,"src":"12164:5:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3136","id":10540,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12173:2:40","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"12164:11:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":10542,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12178:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12164:15:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10553,"nodeType":"IfStatement","src":"12160:95:40","trueBody":{"id":10552,"nodeType":"Block","src":"12181:74:40","statements":[{"expression":{"id":10546,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10544,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10485,"src":"12199:5:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3136","id":10545,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12209:2:40","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"12199:12:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10547,"nodeType":"ExpressionStatement","src":"12199:12:40"},{"expression":{"id":10550,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10548,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10491,"src":"12229:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":10549,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12239:1:40","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"12229:11:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10551,"nodeType":"ExpressionStatement","src":"12229:11:40"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10558,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10556,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10554,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10485,"src":"12272:5:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":10555,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12281:1:40","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"12272:10:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":10557,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12285:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12272:14:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10564,"nodeType":"IfStatement","src":"12268:64:40","trueBody":{"id":10563,"nodeType":"Block","src":"12288:44:40","statements":[{"expression":{"id":10561,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10559,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10491,"src":"12306:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":10560,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12316:1:40","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"12306:11:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10562,"nodeType":"ExpressionStatement","src":"12306:11:40"}]}}]},{"expression":{"id":10566,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10491,"src":"12358:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":10489,"id":10567,"nodeType":"Return","src":"12351:13:40"}]},"documentation":{"id":10483,"nodeType":"StructuredDocumentation","src":"11463:240:40","text":" @dev Return the log in base 256, rounded down, of a positive value.\n Returns 0 if given 0.\n Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string."},"id":10569,"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"11717:6:40","nodeType":"FunctionDefinition","parameters":{"id":10486,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10485,"mutability":"mutable","name":"value","nameLocation":"11732:5:40","nodeType":"VariableDeclaration","scope":10569,"src":"11724:13:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10484,"name":"uint256","nodeType":"ElementaryTypeName","src":"11724:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11723:15:40"},"returnParameters":{"id":10489,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10488,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10569,"src":"11762:7:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10487,"name":"uint256","nodeType":"ElementaryTypeName","src":"11762:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11761:9:40"},"scope":10609,"src":"11708:663:40","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":10607,"nodeType":"Block","src":"12608:174:40","statements":[{"id":10606,"nodeType":"UncheckedBlock","src":"12618:158:40","statements":[{"assignments":[10581],"declarations":[{"constant":false,"id":10581,"mutability":"mutable","name":"result","nameLocation":"12650:6:40","nodeType":"VariableDeclaration","scope":10606,"src":"12642:14:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10580,"name":"uint256","nodeType":"ElementaryTypeName","src":"12642:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10585,"initialValue":{"arguments":[{"id":10583,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10572,"src":"12666:5:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10582,"name":"log256","nodeType":"Identifier","overloadedDeclarations":[10569,10608],"referencedDeclaration":10569,"src":"12659:6:40","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":10584,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12659:13:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12642:30:40"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10604,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10586,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10581,"src":"12693:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":10599,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_enum$_Rounding_$9750","typeString":"enum Math.Rounding"},"id":10590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10587,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10575,"src":"12703:8:40","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$9750","typeString":"enum Math.Rounding"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":10588,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9750,"src":"12715:8:40","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$9750_$","typeString":"type(enum Math.Rounding)"}},"id":10589,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"12724:2:40","memberName":"Up","nodeType":"MemberAccess","referencedDeclaration":9748,"src":"12715:11:40","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$9750","typeString":"enum Math.Rounding"}},"src":"12703:23:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10598,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10596,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":10591,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12730:1:40","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10594,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10592,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10581,"src":"12736:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"33","id":10593,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12746:1:40","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"12736:11:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":10595,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12735:13:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12730:18:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":10597,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10572,"src":"12751:5:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12730:26:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"12703:53:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":10601,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12763:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":10602,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"12703:61:40","trueExpression":{"hexValue":"31","id":10600,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12759:1:40","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":10603,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12702:63:40","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"12693:72:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":10579,"id":10605,"nodeType":"Return","src":"12686:79:40"}]}]},"documentation":{"id":10570,"nodeType":"StructuredDocumentation","src":"12377:144:40","text":" @dev Return the log in base 256, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"id":10608,"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"12535:6:40","nodeType":"FunctionDefinition","parameters":{"id":10576,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10572,"mutability":"mutable","name":"value","nameLocation":"12550:5:40","nodeType":"VariableDeclaration","scope":10608,"src":"12542:13:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10571,"name":"uint256","nodeType":"ElementaryTypeName","src":"12542:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10575,"mutability":"mutable","name":"rounding","nameLocation":"12566:8:40","nodeType":"VariableDeclaration","scope":10608,"src":"12557:17:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$9750","typeString":"enum Math.Rounding"},"typeName":{"id":10574,"nodeType":"UserDefinedTypeName","pathNode":{"id":10573,"name":"Rounding","nameLocations":["12557:8:40"],"nodeType":"IdentifierPath","referencedDeclaration":9750,"src":"12557:8:40"},"referencedDeclaration":9750,"src":"12557:8:40","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$9750","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"12541:34:40"},"returnParameters":{"id":10579,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10578,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10608,"src":"12599:7:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10577,"name":"uint256","nodeType":"ElementaryTypeName","src":"12599:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12598:9:40"},"scope":10609,"src":"12526:256:40","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":10610,"src":"202:12582:40","usedErrors":[]}],"src":"103:12682:40"},"id":40},"@openzeppelin/contracts/utils/math/SignedMath.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/math/SignedMath.sol","exportedSymbols":{"SignedMath":[10714]},"id":10715,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":10611,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"109:23:41"},{"abstract":false,"baseContracts":[],"canonicalName":"SignedMath","contractDependencies":[],"contractKind":"library","documentation":{"id":10612,"nodeType":"StructuredDocumentation","src":"134:80:41","text":" @dev Standard signed math utilities missing in the Solidity language."},"fullyImplemented":true,"id":10714,"linearizedBaseContracts":[10714],"name":"SignedMath","nameLocation":"223:10:41","nodeType":"ContractDefinition","nodes":[{"body":{"id":10629,"nodeType":"Block","src":"375:37:41","statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":10624,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10622,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10615,"src":"392:1:41","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":10623,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10617,"src":"396:1:41","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"392:5:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":10626,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10617,"src":"404:1:41","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":10627,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"392:13:41","trueExpression":{"id":10625,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10615,"src":"400:1:41","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":10621,"id":10628,"nodeType":"Return","src":"385:20:41"}]},"documentation":{"id":10613,"nodeType":"StructuredDocumentation","src":"240:66:41","text":" @dev Returns the largest of two signed numbers."},"id":10630,"implemented":true,"kind":"function","modifiers":[],"name":"max","nameLocation":"320:3:41","nodeType":"FunctionDefinition","parameters":{"id":10618,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10615,"mutability":"mutable","name":"a","nameLocation":"331:1:41","nodeType":"VariableDeclaration","scope":10630,"src":"324:8:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":10614,"name":"int256","nodeType":"ElementaryTypeName","src":"324:6:41","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":10617,"mutability":"mutable","name":"b","nameLocation":"341:1:41","nodeType":"VariableDeclaration","scope":10630,"src":"334:8:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":10616,"name":"int256","nodeType":"ElementaryTypeName","src":"334:6:41","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"323:20:41"},"returnParameters":{"id":10621,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10620,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10630,"src":"367:6:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":10619,"name":"int256","nodeType":"ElementaryTypeName","src":"367:6:41","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"366:8:41"},"scope":10714,"src":"311:101:41","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":10647,"nodeType":"Block","src":"554:37:41","statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":10642,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10640,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10633,"src":"571:1:41","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":10641,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10635,"src":"575:1:41","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"571:5:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":10644,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10635,"src":"583:1:41","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":10645,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"571:13:41","trueExpression":{"id":10643,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10633,"src":"579:1:41","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":10639,"id":10646,"nodeType":"Return","src":"564:20:41"}]},"documentation":{"id":10631,"nodeType":"StructuredDocumentation","src":"418:67:41","text":" @dev Returns the smallest of two signed numbers."},"id":10648,"implemented":true,"kind":"function","modifiers":[],"name":"min","nameLocation":"499:3:41","nodeType":"FunctionDefinition","parameters":{"id":10636,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10633,"mutability":"mutable","name":"a","nameLocation":"510:1:41","nodeType":"VariableDeclaration","scope":10648,"src":"503:8:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":10632,"name":"int256","nodeType":"ElementaryTypeName","src":"503:6:41","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":10635,"mutability":"mutable","name":"b","nameLocation":"520:1:41","nodeType":"VariableDeclaration","scope":10648,"src":"513:8:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":10634,"name":"int256","nodeType":"ElementaryTypeName","src":"513:6:41","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"502:20:41"},"returnParameters":{"id":10639,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10638,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10648,"src":"546:6:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":10637,"name":"int256","nodeType":"ElementaryTypeName","src":"546:6:41","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"545:8:41"},"scope":10714,"src":"490:101:41","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":10691,"nodeType":"Block","src":"796:162:41","statements":[{"assignments":[10659],"declarations":[{"constant":false,"id":10659,"mutability":"mutable","name":"x","nameLocation":"865:1:41","nodeType":"VariableDeclaration","scope":10691,"src":"858:8:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":10658,"name":"int256","nodeType":"ElementaryTypeName","src":"858:6:41","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":10672,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":10671,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":10662,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10660,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10651,"src":"870:1:41","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":10661,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10653,"src":"874:1:41","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"870:5:41","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":10663,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"869:7:41","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":10669,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":10666,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10664,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10651,"src":"881:1:41","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":10665,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10653,"src":"885:1:41","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"881:5:41","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":10667,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"880:7:41","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":10668,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"891:1:41","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"880:12:41","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":10670,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"879:14:41","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"869:24:41","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"858:35:41"},{"expression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":10689,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10673,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10659,"src":"910:1:41","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":10687,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10681,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":10678,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10659,"src":"930:1:41","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":10677,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"922:7:41","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":10676,"name":"uint256","nodeType":"ElementaryTypeName","src":"922:7:41","typeDescriptions":{}}},"id":10679,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"922:10:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"323535","id":10680,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"936:3:41","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"255"},"src":"922:17:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10675,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"915:6:41","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":10674,"name":"int256","nodeType":"ElementaryTypeName","src":"915:6:41","typeDescriptions":{}}},"id":10682,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"915:25:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":10685,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10683,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10651,"src":"944:1:41","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":10684,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10653,"src":"948:1:41","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"944:5:41","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":10686,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"943:7:41","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"915:35:41","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":10688,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"914:37:41","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"910:41:41","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":10657,"id":10690,"nodeType":"Return","src":"903:48:41"}]},"documentation":{"id":10649,"nodeType":"StructuredDocumentation","src":"597:126:41","text":" @dev Returns the average of two signed numbers without overflow.\n The result is rounded towards zero."},"id":10692,"implemented":true,"kind":"function","modifiers":[],"name":"average","nameLocation":"737:7:41","nodeType":"FunctionDefinition","parameters":{"id":10654,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10651,"mutability":"mutable","name":"a","nameLocation":"752:1:41","nodeType":"VariableDeclaration","scope":10692,"src":"745:8:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":10650,"name":"int256","nodeType":"ElementaryTypeName","src":"745:6:41","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":10653,"mutability":"mutable","name":"b","nameLocation":"762:1:41","nodeType":"VariableDeclaration","scope":10692,"src":"755:8:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":10652,"name":"int256","nodeType":"ElementaryTypeName","src":"755:6:41","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"744:20:41"},"returnParameters":{"id":10657,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10656,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10692,"src":"788:6:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":10655,"name":"int256","nodeType":"ElementaryTypeName","src":"788:6:41","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"787:8:41"},"scope":10714,"src":"728:230:41","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":10712,"nodeType":"Block","src":"1102:158:41","statements":[{"id":10711,"nodeType":"UncheckedBlock","src":"1112:142:41","statements":[{"expression":{"arguments":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":10704,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10702,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10695,"src":"1227:1:41","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"30","id":10703,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1232:1:41","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1227:6:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":10707,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"1240:2:41","subExpression":{"id":10706,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10695,"src":"1241:1:41","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":10708,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"1227:15:41","trueExpression":{"id":10705,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10695,"src":"1236:1:41","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":10701,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1219:7:41","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":10700,"name":"uint256","nodeType":"ElementaryTypeName","src":"1219:7:41","typeDescriptions":{}}},"id":10709,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1219:24:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":10699,"id":10710,"nodeType":"Return","src":"1212:31:41"}]}]},"documentation":{"id":10693,"nodeType":"StructuredDocumentation","src":"964:78:41","text":" @dev Returns the absolute unsigned value of a signed value."},"id":10713,"implemented":true,"kind":"function","modifiers":[],"name":"abs","nameLocation":"1056:3:41","nodeType":"FunctionDefinition","parameters":{"id":10696,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10695,"mutability":"mutable","name":"n","nameLocation":"1067:1:41","nodeType":"VariableDeclaration","scope":10713,"src":"1060:8:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":10694,"name":"int256","nodeType":"ElementaryTypeName","src":"1060:6:41","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1059:10:41"},"returnParameters":{"id":10699,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10698,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10713,"src":"1093:7:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10697,"name":"uint256","nodeType":"ElementaryTypeName","src":"1093:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1092:9:41"},"scope":10714,"src":"1047:213:41","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":10715,"src":"215:1047:41","usedErrors":[]}],"src":"109:1154:41"},"id":41},"src/dao/IDAO.sol":{"ast":{"absolutePath":"src/dao/IDAO.sol","exportedSymbols":{"IDAO":[10865]},"id":10866,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":10716,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:42"},{"abstract":false,"baseContracts":[],"canonicalName":"IDAO","contractDependencies":[],"contractKind":"interface","documentation":{"id":10717,"nodeType":"StructuredDocumentation","src":"72:175:42","text":"@title IDAO\n @author Aragon X - 2022-2023\n @notice The interface required for DAOs within the Aragon App DAO framework.\n @custom:security-contact sirt@aragon.org"},"fullyImplemented":false,"id":10865,"linearizedBaseContracts":[10865],"name":"IDAO","nameLocation":"257:4:42","nodeType":"ContractDefinition","nodes":[{"canonicalName":"IDAO.Action","id":10724,"members":[{"constant":false,"id":10719,"mutability":"mutable","name":"to","nameLocation":"604:2:42","nodeType":"VariableDeclaration","scope":10724,"src":"596:10:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10718,"name":"address","nodeType":"ElementaryTypeName","src":"596:7:42","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10721,"mutability":"mutable","name":"value","nameLocation":"624:5:42","nodeType":"VariableDeclaration","scope":10724,"src":"616:13:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10720,"name":"uint256","nodeType":"ElementaryTypeName","src":"616:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10723,"mutability":"mutable","name":"data","nameLocation":"645:4:42","nodeType":"VariableDeclaration","scope":10724,"src":"639:10:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":10722,"name":"bytes","nodeType":"ElementaryTypeName","src":"639:5:42","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"name":"Action","nameLocation":"579:6:42","nodeType":"StructDefinition","scope":10865,"src":"572:84:42","visibility":"public"},{"documentation":{"id":10725,"nodeType":"StructuredDocumentation","src":"662:500:42","text":"@notice Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\n @param _where The address of the contract.\n @param _who The address of a EOA or contract to give the permissions.\n @param _permissionId The permission identifier.\n @param _data The optional data passed to the `PermissionCondition` registered.\n @return Returns true if the address has permission, false if not."},"functionSelector":"fdef9106","id":10738,"implemented":false,"kind":"function","modifiers":[],"name":"hasPermission","nameLocation":"1176:13:42","nodeType":"FunctionDefinition","parameters":{"id":10734,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10727,"mutability":"mutable","name":"_where","nameLocation":"1207:6:42","nodeType":"VariableDeclaration","scope":10738,"src":"1199:14:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10726,"name":"address","nodeType":"ElementaryTypeName","src":"1199:7:42","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10729,"mutability":"mutable","name":"_who","nameLocation":"1231:4:42","nodeType":"VariableDeclaration","scope":10738,"src":"1223:12:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10728,"name":"address","nodeType":"ElementaryTypeName","src":"1223:7:42","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10731,"mutability":"mutable","name":"_permissionId","nameLocation":"1253:13:42","nodeType":"VariableDeclaration","scope":10738,"src":"1245:21:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":10730,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1245:7:42","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":10733,"mutability":"mutable","name":"_data","nameLocation":"1289:5:42","nodeType":"VariableDeclaration","scope":10738,"src":"1276:18:42","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":10732,"name":"bytes","nodeType":"ElementaryTypeName","src":"1276:5:42","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1189:111:42"},"returnParameters":{"id":10737,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10736,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10738,"src":"1324:4:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10735,"name":"bool","nodeType":"ElementaryTypeName","src":"1324:4:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1323:6:42"},"scope":10865,"src":"1167:163:42","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":10739,"nodeType":"StructuredDocumentation","src":"1336:125:42","text":"@notice Updates the DAO metadata (e.g., an IPFS hash).\n @param _metadata The IPFS hash of the new metadata object."},"functionSelector":"ee57e36f","id":10744,"implemented":false,"kind":"function","modifiers":[],"name":"setMetadata","nameLocation":"1475:11:42","nodeType":"FunctionDefinition","parameters":{"id":10742,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10741,"mutability":"mutable","name":"_metadata","nameLocation":"1502:9:42","nodeType":"VariableDeclaration","scope":10744,"src":"1487:24:42","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":10740,"name":"bytes","nodeType":"ElementaryTypeName","src":"1487:5:42","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1486:26:42"},"returnParameters":{"id":10743,"nodeType":"ParameterList","parameters":[],"src":"1521:0:42"},"scope":10865,"src":"1466:56:42","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"anonymous":false,"documentation":{"id":10745,"nodeType":"StructuredDocumentation","src":"1528:119:42","text":"@notice Emitted when the DAO metadata is updated.\n @param metadata The IPFS hash of the new metadata object."},"eventSelector":"bb39ebb37e60fb5d606ffdb749d2336e56b88e6c88c4bd6513b308f643186eed","id":10749,"name":"MetadataSet","nameLocation":"1658:11:42","nodeType":"EventDefinition","parameters":{"id":10748,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10747,"indexed":false,"mutability":"mutable","name":"metadata","nameLocation":"1676:8:42","nodeType":"VariableDeclaration","scope":10749,"src":"1670:14:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":10746,"name":"bytes","nodeType":"ElementaryTypeName","src":"1670:5:42","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1669:16:42"},"src":"1652:34:42"},{"documentation":{"id":10750,"nodeType":"StructuredDocumentation","src":"1692:864:42","text":"@notice Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted.\n @param _callId The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce.\n @param _actions The array of actions.\n @param _allowFailureMap A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\n @return The array of results obtained from the executed actions in `bytes`.\n @return The resulting failure map containing the actions have actually failed."},"functionSelector":"c71bf324","id":10766,"implemented":false,"kind":"function","modifiers":[],"name":"execute","nameLocation":"2570:7:42","nodeType":"FunctionDefinition","parameters":{"id":10759,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10752,"mutability":"mutable","name":"_callId","nameLocation":"2595:7:42","nodeType":"VariableDeclaration","scope":10766,"src":"2587:15:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":10751,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2587:7:42","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":10756,"mutability":"mutable","name":"_actions","nameLocation":"2628:8:42","nodeType":"VariableDeclaration","scope":10766,"src":"2612:24:42","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Action_$10724_memory_ptr_$dyn_memory_ptr","typeString":"struct IDAO.Action[]"},"typeName":{"baseType":{"id":10754,"nodeType":"UserDefinedTypeName","pathNode":{"id":10753,"name":"Action","nameLocations":["2612:6:42"],"nodeType":"IdentifierPath","referencedDeclaration":10724,"src":"2612:6:42"},"referencedDeclaration":10724,"src":"2612:6:42","typeDescriptions":{"typeIdentifier":"t_struct$_Action_$10724_storage_ptr","typeString":"struct IDAO.Action"}},"id":10755,"nodeType":"ArrayTypeName","src":"2612:8:42","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Action_$10724_storage_$dyn_storage_ptr","typeString":"struct IDAO.Action[]"}},"visibility":"internal"},{"constant":false,"id":10758,"mutability":"mutable","name":"_allowFailureMap","nameLocation":"2654:16:42","nodeType":"VariableDeclaration","scope":10766,"src":"2646:24:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10757,"name":"uint256","nodeType":"ElementaryTypeName","src":"2646:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2577:99:42"},"returnParameters":{"id":10765,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10762,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10766,"src":"2695:14:42","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":10760,"name":"bytes","nodeType":"ElementaryTypeName","src":"2695:5:42","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":10761,"nodeType":"ArrayTypeName","src":"2695:7:42","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"},{"constant":false,"id":10764,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10766,"src":"2711:7:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10763,"name":"uint256","nodeType":"ElementaryTypeName","src":"2711:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2694:25:42"},"scope":10865,"src":"2561:159:42","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"anonymous":false,"documentation":{"id":10767,"nodeType":"StructuredDocumentation","src":"2726:611:42","text":"@notice Emitted when a proposal is executed.\n @param actor The address of the caller.\n @param callId The ID of the call.\n @param actions The array of actions executed.\n @param allowFailureMap The allow failure map encoding which actions are allowed to fail.\n @param failureMap The failure map encoding which actions have failed.\n @param execResults The array with the results of the executed actions.\n @dev The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce."},"eventSelector":"d4e57c2049f004fb297ef78591cd409503ceb6b2c722d7ffed032fc99e5f3b58","id":10784,"name":"Executed","nameLocation":"3348:8:42","nodeType":"EventDefinition","parameters":{"id":10783,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10769,"indexed":true,"mutability":"mutable","name":"actor","nameLocation":"3382:5:42","nodeType":"VariableDeclaration","scope":10784,"src":"3366:21:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10768,"name":"address","nodeType":"ElementaryTypeName","src":"3366:7:42","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10771,"indexed":false,"mutability":"mutable","name":"callId","nameLocation":"3405:6:42","nodeType":"VariableDeclaration","scope":10784,"src":"3397:14:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":10770,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3397:7:42","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":10775,"indexed":false,"mutability":"mutable","name":"actions","nameLocation":"3430:7:42","nodeType":"VariableDeclaration","scope":10784,"src":"3421:16:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Action_$10724_memory_ptr_$dyn_memory_ptr","typeString":"struct IDAO.Action[]"},"typeName":{"baseType":{"id":10773,"nodeType":"UserDefinedTypeName","pathNode":{"id":10772,"name":"Action","nameLocations":["3421:6:42"],"nodeType":"IdentifierPath","referencedDeclaration":10724,"src":"3421:6:42"},"referencedDeclaration":10724,"src":"3421:6:42","typeDescriptions":{"typeIdentifier":"t_struct$_Action_$10724_storage_ptr","typeString":"struct IDAO.Action"}},"id":10774,"nodeType":"ArrayTypeName","src":"3421:8:42","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Action_$10724_storage_$dyn_storage_ptr","typeString":"struct IDAO.Action[]"}},"visibility":"internal"},{"constant":false,"id":10777,"indexed":false,"mutability":"mutable","name":"allowFailureMap","nameLocation":"3455:15:42","nodeType":"VariableDeclaration","scope":10784,"src":"3447:23:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10776,"name":"uint256","nodeType":"ElementaryTypeName","src":"3447:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10779,"indexed":false,"mutability":"mutable","name":"failureMap","nameLocation":"3488:10:42","nodeType":"VariableDeclaration","scope":10784,"src":"3480:18:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10778,"name":"uint256","nodeType":"ElementaryTypeName","src":"3480:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10782,"indexed":false,"mutability":"mutable","name":"execResults","nameLocation":"3516:11:42","nodeType":"VariableDeclaration","scope":10784,"src":"3508:19:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":10780,"name":"bytes","nodeType":"ElementaryTypeName","src":"3508:5:42","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":10781,"nodeType":"ArrayTypeName","src":"3508:7:42","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"}],"src":"3356:177:42"},"src":"3342:192:42"},{"anonymous":false,"documentation":{"id":10785,"nodeType":"StructuredDocumentation","src":"3540:279:42","text":"@notice Emitted when a standard callback is registered.\n @param interfaceId The ID of the interface.\n @param callbackSelector The selector of the callback function.\n @param magicNumber The magic number to be registered for the callback function selector."},"eventSelector":"fc72fd547553f7a663e0048e590afc9c47b56a4242e960f31cf4c62e23d308b9","id":10793,"name":"StandardCallbackRegistered","nameLocation":"3830:26:42","nodeType":"EventDefinition","parameters":{"id":10792,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10787,"indexed":false,"mutability":"mutable","name":"interfaceId","nameLocation":"3873:11:42","nodeType":"VariableDeclaration","scope":10793,"src":"3866:18:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":10786,"name":"bytes4","nodeType":"ElementaryTypeName","src":"3866:6:42","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"},{"constant":false,"id":10789,"indexed":false,"mutability":"mutable","name":"callbackSelector","nameLocation":"3901:16:42","nodeType":"VariableDeclaration","scope":10793,"src":"3894:23:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":10788,"name":"bytes4","nodeType":"ElementaryTypeName","src":"3894:6:42","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"},{"constant":false,"id":10791,"indexed":false,"mutability":"mutable","name":"magicNumber","nameLocation":"3934:11:42","nodeType":"VariableDeclaration","scope":10793,"src":"3927:18:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":10790,"name":"bytes4","nodeType":"ElementaryTypeName","src":"3927:6:42","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"3856:95:42"},"src":"3824:128:42"},{"documentation":{"id":10794,"nodeType":"StructuredDocumentation","src":"3958:298:42","text":"@notice Deposits (native) tokens to the DAO contract with a reference string.\n @param _token The address of the token or address(0) in case of the native token.\n @param _amount The amount of tokens to deposit.\n @param _reference The reference describing the deposit reason."},"functionSelector":"bfe07da6","id":10803,"implemented":false,"kind":"function","modifiers":[],"name":"deposit","nameLocation":"4270:7:42","nodeType":"FunctionDefinition","parameters":{"id":10801,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10796,"mutability":"mutable","name":"_token","nameLocation":"4286:6:42","nodeType":"VariableDeclaration","scope":10803,"src":"4278:14:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10795,"name":"address","nodeType":"ElementaryTypeName","src":"4278:7:42","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10798,"mutability":"mutable","name":"_amount","nameLocation":"4302:7:42","nodeType":"VariableDeclaration","scope":10803,"src":"4294:15:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10797,"name":"uint256","nodeType":"ElementaryTypeName","src":"4294:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10800,"mutability":"mutable","name":"_reference","nameLocation":"4327:10:42","nodeType":"VariableDeclaration","scope":10803,"src":"4311:26:42","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string"},"typeName":{"id":10799,"name":"string","nodeType":"ElementaryTypeName","src":"4311:6:42","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"4277:61:42"},"returnParameters":{"id":10802,"nodeType":"ParameterList","parameters":[],"src":"4355:0:42"},"scope":10865,"src":"4261:95:42","stateMutability":"payable","virtual":false,"visibility":"external"},{"anonymous":false,"documentation":{"id":10804,"nodeType":"StructuredDocumentation","src":"4362:297:42","text":"@notice Emitted when a token deposit has been made to the DAO.\n @param sender The address of the sender.\n @param token The address of the deposited token.\n @param amount The amount of tokens deposited.\n @param _reference The reference describing the deposit reason."},"eventSelector":"2bc500cf071be2d1c1458ed6ff484cd4db4345ada8943dee7ff29e7af3558f76","id":10814,"name":"Deposited","nameLocation":"4670:9:42","nodeType":"EventDefinition","parameters":{"id":10813,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10806,"indexed":true,"mutability":"mutable","name":"sender","nameLocation":"4705:6:42","nodeType":"VariableDeclaration","scope":10814,"src":"4689:22:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10805,"name":"address","nodeType":"ElementaryTypeName","src":"4689:7:42","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10808,"indexed":true,"mutability":"mutable","name":"token","nameLocation":"4737:5:42","nodeType":"VariableDeclaration","scope":10814,"src":"4721:21:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10807,"name":"address","nodeType":"ElementaryTypeName","src":"4721:7:42","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10810,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"4760:6:42","nodeType":"VariableDeclaration","scope":10814,"src":"4752:14:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10809,"name":"uint256","nodeType":"ElementaryTypeName","src":"4752:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10812,"indexed":false,"mutability":"mutable","name":"_reference","nameLocation":"4783:10:42","nodeType":"VariableDeclaration","scope":10814,"src":"4776:17:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":10811,"name":"string","nodeType":"ElementaryTypeName","src":"4776:6:42","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"4679:120:42"},"src":"4664:136:42"},{"anonymous":false,"documentation":{"id":10815,"nodeType":"StructuredDocumentation","src":"4806:400:42","text":"@notice Emitted when a native token deposit has been made to the DAO.\n @dev This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).\n @param sender The address of the sender.\n @param amount The amount of native tokens deposited."},"eventSelector":"62c2c8e34665db7c56b2cabd7f5fb9702ccd352ffa8150147e450797e9f8e8f3","id":10821,"name":"NativeTokenDeposited","nameLocation":"5217:20:42","nodeType":"EventDefinition","parameters":{"id":10820,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10817,"indexed":false,"mutability":"mutable","name":"sender","nameLocation":"5246:6:42","nodeType":"VariableDeclaration","scope":10821,"src":"5238:14:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10816,"name":"address","nodeType":"ElementaryTypeName","src":"5238:7:42","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10819,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"5262:6:42","nodeType":"VariableDeclaration","scope":10821,"src":"5254:14:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10818,"name":"uint256","nodeType":"ElementaryTypeName","src":"5254:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5237:32:42"},"src":"5211:59:42"},{"documentation":{"id":10822,"nodeType":"StructuredDocumentation","src":"5276:140:42","text":"@notice Setter for the trusted forwarder verifying the meta transaction.\n @param _trustedForwarder The trusted forwarder address."},"functionSelector":"da742228","id":10827,"implemented":false,"kind":"function","modifiers":[],"name":"setTrustedForwarder","nameLocation":"5430:19:42","nodeType":"FunctionDefinition","parameters":{"id":10825,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10824,"mutability":"mutable","name":"_trustedForwarder","nameLocation":"5458:17:42","nodeType":"VariableDeclaration","scope":10827,"src":"5450:25:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10823,"name":"address","nodeType":"ElementaryTypeName","src":"5450:7:42","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5449:27:42"},"returnParameters":{"id":10826,"nodeType":"ParameterList","parameters":[],"src":"5485:0:42"},"scope":10865,"src":"5421:65:42","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":10828,"nodeType":"StructuredDocumentation","src":"5492:123:42","text":"@notice Getter for the trusted forwarder verifying the meta transaction.\n @return The trusted forwarder address."},"functionSelector":"ce1b815f","id":10833,"implemented":false,"kind":"function","modifiers":[],"name":"getTrustedForwarder","nameLocation":"5629:19:42","nodeType":"FunctionDefinition","parameters":{"id":10829,"nodeType":"ParameterList","parameters":[],"src":"5648:2:42"},"returnParameters":{"id":10832,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10831,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10833,"src":"5674:7:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10830,"name":"address","nodeType":"ElementaryTypeName","src":"5674:7:42","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5673:9:42"},"scope":10865,"src":"5620:63:42","stateMutability":"view","virtual":false,"visibility":"external"},{"anonymous":false,"documentation":{"id":10834,"nodeType":"StructuredDocumentation","src":"5689:118:42","text":"@notice Emitted when a new TrustedForwarder is set on the DAO.\n @param forwarder the new forwarder address."},"eventSelector":"d91237492a9e30cd2faf361fc103998a382ff0ec2b1b07dc1cbebb76ae2f1ea2","id":10838,"name":"TrustedForwarderSet","nameLocation":"5818:19:42","nodeType":"EventDefinition","parameters":{"id":10837,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10836,"indexed":false,"mutability":"mutable","name":"forwarder","nameLocation":"5846:9:42","nodeType":"VariableDeclaration","scope":10838,"src":"5838:17:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10835,"name":"address","nodeType":"ElementaryTypeName","src":"5838:7:42","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5837:19:42"},"src":"5812:45:42"},{"documentation":{"id":10839,"nodeType":"StructuredDocumentation","src":"5863:378:42","text":"@notice Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\n @param _hash The hash of the data to be signed.\n @param _signature The signature byte array associated with `_hash`.\n @return Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not."},"functionSelector":"1626ba7e","id":10848,"implemented":false,"kind":"function","modifiers":[],"name":"isValidSignature","nameLocation":"6255:16:42","nodeType":"FunctionDefinition","parameters":{"id":10844,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10841,"mutability":"mutable","name":"_hash","nameLocation":"6280:5:42","nodeType":"VariableDeclaration","scope":10848,"src":"6272:13:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":10840,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6272:7:42","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":10843,"mutability":"mutable","name":"_signature","nameLocation":"6300:10:42","nodeType":"VariableDeclaration","scope":10848,"src":"6287:23:42","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":10842,"name":"bytes","nodeType":"ElementaryTypeName","src":"6287:5:42","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6271:40:42"},"returnParameters":{"id":10847,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10846,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10848,"src":"6330:6:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":10845,"name":"bytes4","nodeType":"ElementaryTypeName","src":"6330:6:42","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"6329:8:42"},"scope":10865,"src":"6246:92:42","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":10849,"nodeType":"StructuredDocumentation","src":"6344:385:42","text":"@notice Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\n @param _interfaceId The ID of the interface.\n @param _callbackSelector The selector of the callback function.\n @param _magicNumber The magic number to be registered for the function signature."},"functionSelector":"c4a50145","id":10858,"implemented":false,"kind":"function","modifiers":[],"name":"registerStandardCallback","nameLocation":"6743:24:42","nodeType":"FunctionDefinition","parameters":{"id":10856,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10851,"mutability":"mutable","name":"_interfaceId","nameLocation":"6784:12:42","nodeType":"VariableDeclaration","scope":10858,"src":"6777:19:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":10850,"name":"bytes4","nodeType":"ElementaryTypeName","src":"6777:6:42","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"},{"constant":false,"id":10853,"mutability":"mutable","name":"_callbackSelector","nameLocation":"6813:17:42","nodeType":"VariableDeclaration","scope":10858,"src":"6806:24:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":10852,"name":"bytes4","nodeType":"ElementaryTypeName","src":"6806:6:42","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"},{"constant":false,"id":10855,"mutability":"mutable","name":"_magicNumber","nameLocation":"6847:12:42","nodeType":"VariableDeclaration","scope":10858,"src":"6840:19:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":10854,"name":"bytes4","nodeType":"ElementaryTypeName","src":"6840:6:42","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"6767:98:42"},"returnParameters":{"id":10857,"nodeType":"ParameterList","parameters":[],"src":"6874:0:42"},"scope":10865,"src":"6734:141:42","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":10859,"nodeType":"StructuredDocumentation","src":"6881:158:42","text":"@notice Removed function being left here to not corrupt the IDAO interface ID. Any call will revert.\n @dev Introduced in v1.0.0. Removed in v1.4.0."},"functionSelector":"3e2ab0d9","id":10864,"implemented":false,"kind":"function","modifiers":[],"name":"setSignatureValidator","nameLocation":"7053:21:42","nodeType":"FunctionDefinition","parameters":{"id":10862,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10861,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10864,"src":"7075:7:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10860,"name":"address","nodeType":"ElementaryTypeName","src":"7075:7:42","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7074:9:42"},"returnParameters":{"id":10863,"nodeType":"ParameterList","parameters":[],"src":"7092:0:42"},"scope":10865,"src":"7044:49:42","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":10866,"src":"247:6848:42","usedErrors":[]}],"src":"47:7049:42"},"id":42},"src/mocks/dao/DAOMock.sol":{"ast":{"absolutePath":"src/mocks/dao/DAOMock.sol","exportedSymbols":{"DAOMock":[11027],"IDAO":[10865]},"id":11028,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":10867,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:43"},{"absolutePath":"src/dao/IDAO.sol","file":"../../dao/IDAO.sol","id":10869,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":11028,"sourceUnit":10866,"src":"72:40:43","symbolAliases":[{"foreign":{"id":10868,"name":"IDAO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10865,"src":"80:4:43","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":10871,"name":"IDAO","nameLocations":["228:4:43"],"nodeType":"IdentifierPath","referencedDeclaration":10865,"src":"228:4:43"},"id":10872,"nodeType":"InheritanceSpecifier","src":"228:4:43"}],"canonicalName":"DAOMock","contractDependencies":[],"contractKind":"contract","documentation":{"id":10870,"nodeType":"StructuredDocumentation","src":"114:94:43","text":"@notice A mock DAO that anyone can set permissions in.\n @dev DO NOT USE IN PRODUCTION!"},"fullyImplemented":true,"id":11027,"linearizedBaseContracts":[11027,10865],"name":"DAOMock","nameLocation":"217:7:43","nodeType":"ContractDefinition","nodes":[{"constant":false,"functionSelector":"0a1f41ca","id":10874,"mutability":"mutable","name":"hasPermissionReturnValueMock","nameLocation":"251:28:43","nodeType":"VariableDeclaration","scope":11027,"src":"239:40:43","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10873,"name":"bool","nodeType":"ElementaryTypeName","src":"239:4:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"public"},{"body":{"id":10883,"nodeType":"Block","src":"372:77:43","statements":[{"expression":{"id":10881,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10879,"name":"hasPermissionReturnValueMock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10874,"src":"382:28:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10880,"name":"_hasPermissionReturnValueMock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10876,"src":"413:29:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"382:60:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10882,"nodeType":"ExpressionStatement","src":"382:60:43"}]},"functionSelector":"80e4cbe1","id":10884,"implemented":true,"kind":"function","modifiers":[],"name":"setHasPermissionReturnValueMock","nameLocation":"295:31:43","nodeType":"FunctionDefinition","parameters":{"id":10877,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10876,"mutability":"mutable","name":"_hasPermissionReturnValueMock","nameLocation":"332:29:43","nodeType":"VariableDeclaration","scope":10884,"src":"327:34:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10875,"name":"bool","nodeType":"ElementaryTypeName","src":"327:4:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"326:36:43"},"returnParameters":{"id":10878,"nodeType":"ParameterList","parameters":[],"src":"372:0:43"},"scope":11027,"src":"286:163:43","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[10738],"body":{"id":10906,"nodeType":"Block","src":"627:98:43","statements":[{"expression":{"components":[{"id":10898,"name":"_where","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10886,"src":"638:6:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10899,"name":"_who","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10888,"src":"646:4:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10900,"name":"_permissionId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10890,"src":"652:13:43","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":10901,"name":"_data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10892,"src":"667:5:43","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":10902,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"637:36:43","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$","typeString":"tuple(address,address,bytes32,bytes memory)"}},"id":10903,"nodeType":"ExpressionStatement","src":"637:36:43"},{"expression":{"id":10904,"name":"hasPermissionReturnValueMock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10874,"src":"690:28:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":10897,"id":10905,"nodeType":"Return","src":"683:35:43"}]},"functionSelector":"fdef9106","id":10907,"implemented":true,"kind":"function","modifiers":[],"name":"hasPermission","nameLocation":"464:13:43","nodeType":"FunctionDefinition","overrides":{"id":10894,"nodeType":"OverrideSpecifier","overrides":[],"src":"603:8:43"},"parameters":{"id":10893,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10886,"mutability":"mutable","name":"_where","nameLocation":"495:6:43","nodeType":"VariableDeclaration","scope":10907,"src":"487:14:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10885,"name":"address","nodeType":"ElementaryTypeName","src":"487:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10888,"mutability":"mutable","name":"_who","nameLocation":"519:4:43","nodeType":"VariableDeclaration","scope":10907,"src":"511:12:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10887,"name":"address","nodeType":"ElementaryTypeName","src":"511:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10890,"mutability":"mutable","name":"_permissionId","nameLocation":"541:13:43","nodeType":"VariableDeclaration","scope":10907,"src":"533:21:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":10889,"name":"bytes32","nodeType":"ElementaryTypeName","src":"533:7:43","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":10892,"mutability":"mutable","name":"_data","nameLocation":"577:5:43","nodeType":"VariableDeclaration","scope":10907,"src":"564:18:43","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":10891,"name":"bytes","nodeType":"ElementaryTypeName","src":"564:5:43","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"477:111:43"},"returnParameters":{"id":10897,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10896,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10907,"src":"621:4:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10895,"name":"bool","nodeType":"ElementaryTypeName","src":"621:4:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"620:6:43"},"scope":11027,"src":"455:270:43","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[10833],"body":{"id":10918,"nodeType":"Block","src":"801:34:43","statements":[{"expression":{"arguments":[{"hexValue":"30","id":10915,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"826:1:43","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":10914,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"818:7:43","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10913,"name":"address","nodeType":"ElementaryTypeName","src":"818:7:43","typeDescriptions":{}}},"id":10916,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"818:10:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":10912,"id":10917,"nodeType":"Return","src":"811:17:43"}]},"functionSelector":"ce1b815f","id":10919,"implemented":true,"kind":"function","modifiers":[],"name":"getTrustedForwarder","nameLocation":"740:19:43","nodeType":"FunctionDefinition","overrides":{"id":10909,"nodeType":"OverrideSpecifier","overrides":[],"src":"774:8:43"},"parameters":{"id":10908,"nodeType":"ParameterList","parameters":[],"src":"759:2:43"},"returnParameters":{"id":10912,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10911,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10919,"src":"792:7:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10910,"name":"address","nodeType":"ElementaryTypeName","src":"792:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"791:9:43"},"scope":11027,"src":"731:104:43","stateMutability":"pure","virtual":false,"visibility":"public"},{"baseFunctions":[10827],"body":{"id":10928,"nodeType":"Block","src":"920:36:43","statements":[{"expression":{"components":[{"id":10925,"name":"_trustedForwarder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10921,"src":"931:17:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":10926,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"930:19:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":10927,"nodeType":"ExpressionStatement","src":"930:19:43"}]},"functionSelector":"da742228","id":10929,"implemented":true,"kind":"function","modifiers":[],"name":"setTrustedForwarder","nameLocation":"850:19:43","nodeType":"FunctionDefinition","overrides":{"id":10923,"nodeType":"OverrideSpecifier","overrides":[],"src":"911:8:43"},"parameters":{"id":10922,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10921,"mutability":"mutable","name":"_trustedForwarder","nameLocation":"878:17:43","nodeType":"VariableDeclaration","scope":10929,"src":"870:25:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10920,"name":"address","nodeType":"ElementaryTypeName","src":"870:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"869:27:43"},"returnParameters":{"id":10924,"nodeType":"ParameterList","parameters":[],"src":"920:0:43"},"scope":11027,"src":"841:115:43","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[10744],"body":{"id":10938,"nodeType":"Block","src":"1032:28:43","statements":[{"expression":{"components":[{"id":10935,"name":"_metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10931,"src":"1043:9:43","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"id":10936,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1042:11:43","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":10937,"nodeType":"ExpressionStatement","src":"1042:11:43"}]},"functionSelector":"ee57e36f","id":10939,"implemented":true,"kind":"function","modifiers":[],"name":"setMetadata","nameLocation":"971:11:43","nodeType":"FunctionDefinition","overrides":{"id":10933,"nodeType":"OverrideSpecifier","overrides":[],"src":"1023:8:43"},"parameters":{"id":10932,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10931,"mutability":"mutable","name":"_metadata","nameLocation":"998:9:43","nodeType":"VariableDeclaration","scope":10939,"src":"983:24:43","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":10930,"name":"bytes","nodeType":"ElementaryTypeName","src":"983:5:43","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"982:26:43"},"returnParameters":{"id":10934,"nodeType":"ParameterList","parameters":[],"src":"1032:0:43"},"scope":11027,"src":"962:98:43","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[10766],"body":{"id":10966,"nodeType":"Block","src":"1255:102:43","statements":[{"eventCall":{"arguments":[{"expression":{"id":10957,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967281,"src":"1279:3:43","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10958,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1283:6:43","memberName":"sender","nodeType":"MemberAccess","src":"1279:10:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10959,"name":"callId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10941,"src":"1291:6:43","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":10960,"name":"_actions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10945,"src":"1299:8:43","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Action_$10724_memory_ptr_$dyn_memory_ptr","typeString":"struct IDAO.Action memory[] memory"}},{"id":10961,"name":"allowFailureMap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10947,"src":"1309:15:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":10962,"name":"failureMap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10954,"src":"1326:10:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":10963,"name":"execResults","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10952,"src":"1338:11:43","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_array$_t_struct$_Action_$10724_memory_ptr_$dyn_memory_ptr","typeString":"struct IDAO.Action memory[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}],"id":10956,"name":"Executed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10784,"src":"1270:8:43","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_bytes32_$_t_array$_t_struct$_Action_$10724_memory_ptr_$dyn_memory_ptr_$_t_uint256_$_t_uint256_$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$returns$__$","typeString":"function (address,bytes32,struct IDAO.Action memory[] memory,uint256,uint256,bytes memory[] memory)"}},"id":10964,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1270:80:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10965,"nodeType":"EmitStatement","src":"1265:85:43"}]},"functionSelector":"c71bf324","id":10967,"implemented":true,"kind":"function","modifiers":[],"name":"execute","nameLocation":"1075:7:43","nodeType":"FunctionDefinition","overrides":{"id":10949,"nodeType":"OverrideSpecifier","overrides":[],"src":"1189:8:43"},"parameters":{"id":10948,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10941,"mutability":"mutable","name":"callId","nameLocation":"1100:6:43","nodeType":"VariableDeclaration","scope":10967,"src":"1092:14:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":10940,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1092:7:43","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":10945,"mutability":"mutable","name":"_actions","nameLocation":"1132:8:43","nodeType":"VariableDeclaration","scope":10967,"src":"1116:24:43","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Action_$10724_memory_ptr_$dyn_memory_ptr","typeString":"struct IDAO.Action[]"},"typeName":{"baseType":{"id":10943,"nodeType":"UserDefinedTypeName","pathNode":{"id":10942,"name":"Action","nameLocations":["1116:6:43"],"nodeType":"IdentifierPath","referencedDeclaration":10724,"src":"1116:6:43"},"referencedDeclaration":10724,"src":"1116:6:43","typeDescriptions":{"typeIdentifier":"t_struct$_Action_$10724_storage_ptr","typeString":"struct IDAO.Action"}},"id":10944,"nodeType":"ArrayTypeName","src":"1116:8:43","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Action_$10724_storage_$dyn_storage_ptr","typeString":"struct IDAO.Action[]"}},"visibility":"internal"},{"constant":false,"id":10947,"mutability":"mutable","name":"allowFailureMap","nameLocation":"1158:15:43","nodeType":"VariableDeclaration","scope":10967,"src":"1150:23:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10946,"name":"uint256","nodeType":"ElementaryTypeName","src":"1150:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1082:97:43"},"returnParameters":{"id":10955,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10952,"mutability":"mutable","name":"execResults","nameLocation":"1222:11:43","nodeType":"VariableDeclaration","scope":10967,"src":"1207:26:43","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":10950,"name":"bytes","nodeType":"ElementaryTypeName","src":"1207:5:43","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":10951,"nodeType":"ArrayTypeName","src":"1207:7:43","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"},{"constant":false,"id":10954,"mutability":"mutable","name":"failureMap","nameLocation":"1243:10:43","nodeType":"VariableDeclaration","scope":10967,"src":"1235:18:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10953,"name":"uint256","nodeType":"ElementaryTypeName","src":"1235:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1206:48:43"},"scope":11027,"src":"1066:291:43","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[10803],"body":{"id":10982,"nodeType":"Block","src":"1497:46:43","statements":[{"expression":{"components":[{"id":10977,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10969,"src":"1508:6:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10978,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10971,"src":"1516:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":10979,"name":"_reference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10973,"src":"1525:10:43","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}}],"id":10980,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1507:29:43","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint256_$_t_string_calldata_ptr_$","typeString":"tuple(address,uint256,string calldata)"}},"id":10981,"nodeType":"ExpressionStatement","src":"1507:29:43"}]},"functionSelector":"bfe07da6","id":10983,"implemented":true,"kind":"function","modifiers":[],"name":"deposit","nameLocation":"1372:7:43","nodeType":"FunctionDefinition","overrides":{"id":10975,"nodeType":"OverrideSpecifier","overrides":[],"src":"1488:8:43"},"parameters":{"id":10974,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10969,"mutability":"mutable","name":"_token","nameLocation":"1397:6:43","nodeType":"VariableDeclaration","scope":10983,"src":"1389:14:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10968,"name":"address","nodeType":"ElementaryTypeName","src":"1389:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10971,"mutability":"mutable","name":"_amount","nameLocation":"1421:7:43","nodeType":"VariableDeclaration","scope":10983,"src":"1413:15:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10970,"name":"uint256","nodeType":"ElementaryTypeName","src":"1413:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10973,"mutability":"mutable","name":"_reference","nameLocation":"1454:10:43","nodeType":"VariableDeclaration","scope":10983,"src":"1438:26:43","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string"},"typeName":{"id":10972,"name":"string","nodeType":"ElementaryTypeName","src":"1438:6:43","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1379:91:43"},"returnParameters":{"id":10976,"nodeType":"ParameterList","parameters":[],"src":"1497:0:43"},"scope":11027,"src":"1363:180:43","stateMutability":"payable","virtual":false,"visibility":"external"},{"baseFunctions":[10864],"body":{"id":10992,"nodeType":"Block","src":"1632:38:43","statements":[{"expression":{"components":[{"id":10989,"name":"_signatureValidator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10985,"src":"1643:19:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":10990,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1642:21:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":10991,"nodeType":"ExpressionStatement","src":"1642:21:43"}]},"functionSelector":"3e2ab0d9","id":10993,"implemented":true,"kind":"function","modifiers":[],"name":"setSignatureValidator","nameLocation":"1558:21:43","nodeType":"FunctionDefinition","overrides":{"id":10987,"nodeType":"OverrideSpecifier","overrides":[],"src":"1623:8:43"},"parameters":{"id":10986,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10985,"mutability":"mutable","name":"_signatureValidator","nameLocation":"1588:19:43","nodeType":"VariableDeclaration","scope":10993,"src":"1580:27:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10984,"name":"address","nodeType":"ElementaryTypeName","src":"1580:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1579:29:43"},"returnParameters":{"id":10988,"nodeType":"ParameterList","parameters":[],"src":"1632:0:43"},"scope":11027,"src":"1549:121:43","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[10848],"body":{"id":11009,"nodeType":"Block","src":"1804:56:43","statements":[{"expression":{"components":[{"id":11003,"name":"_hash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10995,"src":"1815:5:43","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":11004,"name":"_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10997,"src":"1822:10:43","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":11005,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1814:19:43","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes32_$_t_bytes_memory_ptr_$","typeString":"tuple(bytes32,bytes memory)"}},"id":11006,"nodeType":"ExpressionStatement","src":"1814:19:43"},{"expression":{"hexValue":"307830","id":11007,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1850:3:43","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0x0"},"functionReturnParameters":11002,"id":11008,"nodeType":"Return","src":"1843:10:43"}]},"functionSelector":"1626ba7e","id":11010,"implemented":true,"kind":"function","modifiers":[],"name":"isValidSignature","nameLocation":"1685:16:43","nodeType":"FunctionDefinition","overrides":{"id":10999,"nodeType":"OverrideSpecifier","overrides":[],"src":"1778:8:43"},"parameters":{"id":10998,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10995,"mutability":"mutable","name":"_hash","nameLocation":"1719:5:43","nodeType":"VariableDeclaration","scope":11010,"src":"1711:13:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":10994,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1711:7:43","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":10997,"mutability":"mutable","name":"_signature","nameLocation":"1747:10:43","nodeType":"VariableDeclaration","scope":11010,"src":"1734:23:43","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":10996,"name":"bytes","nodeType":"ElementaryTypeName","src":"1734:5:43","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1701:62:43"},"returnParameters":{"id":11002,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11001,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11010,"src":"1796:6:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":11000,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1796:6:43","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"1795:8:43"},"scope":11027,"src":"1676:184:43","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[10858],"body":{"id":11025,"nodeType":"Block","src":"2021:64:43","statements":[{"expression":{"components":[{"id":11020,"name":"_interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11012,"src":"2032:12:43","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":11021,"name":"_callbackSelector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11014,"src":"2046:17:43","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":11022,"name":"_magicNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11016,"src":"2065:12:43","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"id":11023,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2031:47:43","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes4_$_t_bytes4_$_t_bytes4_$","typeString":"tuple(bytes4,bytes4,bytes4)"}},"id":11024,"nodeType":"ExpressionStatement","src":"2031:47:43"}]},"functionSelector":"c4a50145","id":11026,"implemented":true,"kind":"function","modifiers":[],"name":"registerStandardCallback","nameLocation":"1875:24:43","nodeType":"FunctionDefinition","overrides":{"id":11018,"nodeType":"OverrideSpecifier","overrides":[],"src":"2012:8:43"},"parameters":{"id":11017,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11012,"mutability":"mutable","name":"_interfaceId","nameLocation":"1916:12:43","nodeType":"VariableDeclaration","scope":11026,"src":"1909:19:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":11011,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1909:6:43","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"},{"constant":false,"id":11014,"mutability":"mutable","name":"_callbackSelector","nameLocation":"1945:17:43","nodeType":"VariableDeclaration","scope":11026,"src":"1938:24:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":11013,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1938:6:43","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"},{"constant":false,"id":11016,"mutability":"mutable","name":"_magicNumber","nameLocation":"1979:12:43","nodeType":"VariableDeclaration","scope":11026,"src":"1972:19:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":11015,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1972:6:43","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"1899:98:43"},"returnParameters":{"id":11019,"nodeType":"ParameterList","parameters":[],"src":"2021:0:43"},"scope":11027,"src":"1866:219:43","stateMutability":"pure","virtual":false,"visibility":"external"}],"scope":11028,"src":"208:1879:43","usedErrors":[]}],"src":"47:2041:43"},"id":43},"src/mocks/permission/auth/DaoAuthorizableMock.sol":{"ast":{"absolutePath":"src/mocks/permission/auth/DaoAuthorizableMock.sol","exportedSymbols":{"DaoAuthorizable":[13096],"DaoAuthorizableMock":[11059],"IDAO":[10865]},"id":11060,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":11029,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:44"},{"absolutePath":"src/permission/auth/DaoAuthorizable.sol","file":"../../../permission/auth/DaoAuthorizable.sol","id":11031,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":11060,"sourceUnit":13097,"src":"72:77:44","symbolAliases":[{"foreign":{"id":11030,"name":"DaoAuthorizable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13096,"src":"80:15:44","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/dao/IDAO.sol","file":"../../../dao/IDAO.sol","id":11033,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":11060,"sourceUnit":10866,"src":"150:43:44","symbolAliases":[{"foreign":{"id":11032,"name":"IDAO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10865,"src":"158:4:44","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":11035,"name":"DaoAuthorizable","nameLocations":["346:15:44"],"nodeType":"IdentifierPath","referencedDeclaration":13096,"src":"346:15:44"},"id":11036,"nodeType":"InheritanceSpecifier","src":"346:15:44"}],"canonicalName":"DaoAuthorizableMock","contractDependencies":[],"contractKind":"contract","documentation":{"id":11034,"nodeType":"StructuredDocumentation","src":"195:119:44","text":"@notice A mock contract containing a function protected by the `auth` modifier.\n @dev DO NOT USE IN PRODUCTION!"},"fullyImplemented":true,"id":11059,"linearizedBaseContracts":[11059,13096,9294],"name":"DaoAuthorizableMock","nameLocation":"323:19:44","nodeType":"ContractDefinition","nodes":[{"constant":true,"functionSelector":"403f8575","id":11041,"mutability":"constant","name":"AUTHORIZED_FUNC_PERMISSION_ID","nameLocation":"392:29:44","nodeType":"VariableDeclaration","scope":11059,"src":"368:95:44","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":11037,"name":"bytes32","nodeType":"ElementaryTypeName","src":"368:7:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"415554484f52495a45445f46554e435f5045524d495353494f4e","id":11039,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"434:28:44","typeDescriptions":{"typeIdentifier":"t_stringliteral_6c28b2d088260f42eed051af4616ddda00554ec1880b580a4a9fbf40a70b09eb","typeString":"literal_string \"AUTHORIZED_FUNC_PERMISSION\""},"value":"AUTHORIZED_FUNC_PERMISSION"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_6c28b2d088260f42eed051af4616ddda00554ec1880b580a4a9fbf40a70b09eb","typeString":"literal_string \"AUTHORIZED_FUNC_PERMISSION\""}],"id":11038,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967288,"src":"424:9:44","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":11040,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"424:39:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"public"},{"body":{"id":11050,"nodeType":"Block","src":"515:2:44","statements":[]},"id":11051,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":11047,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11044,"src":"509:4:44","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}}],"id":11048,"kind":"baseConstructorSpecifier","modifierName":{"id":11046,"name":"DaoAuthorizable","nameLocations":["493:15:44"],"nodeType":"IdentifierPath","referencedDeclaration":13096,"src":"493:15:44"},"nodeType":"ModifierInvocation","src":"493:21:44"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":11045,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11044,"mutability":"mutable","name":"_dao","nameLocation":"487:4:44","nodeType":"VariableDeclaration","scope":11051,"src":"482:9:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"},"typeName":{"id":11043,"nodeType":"UserDefinedTypeName","pathNode":{"id":11042,"name":"IDAO","nameLocations":["482:4:44"],"nodeType":"IdentifierPath","referencedDeclaration":10865,"src":"482:4:44"},"referencedDeclaration":10865,"src":"482:4:44","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}},"visibility":"internal"}],"src":"481:11:44"},"returnParameters":{"id":11049,"nodeType":"ParameterList","parameters":[],"src":"515:0:44"},"scope":11059,"src":"470:47:44","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":11057,"nodeType":"Block","src":"663:8:44","statements":[]},"functionSelector":"f09e1623","id":11058,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":11054,"name":"AUTHORIZED_FUNC_PERMISSION_ID","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11041,"src":"579:29:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":11055,"kind":"modifierInvocation","modifierName":{"id":11053,"name":"auth","nameLocations":["574:4:44"],"nodeType":"IdentifierPath","referencedDeclaration":13095,"src":"574:4:44"},"nodeType":"ModifierInvocation","src":"574:35:44"}],"name":"authorizedFunc","nameLocation":"532:14:44","nodeType":"FunctionDefinition","parameters":{"id":11052,"nodeType":"ParameterList","parameters":[],"src":"546:2:44"},"returnParameters":{"id":11056,"nodeType":"ParameterList","parameters":[],"src":"663:0:44"},"scope":11059,"src":"523:148:44","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":11060,"src":"314:359:44","usedErrors":[13176]}],"src":"47:627:44"},"id":44},"src/mocks/permission/auth/DaoAuthorizableUpgradeableMock.sol":{"ast":{"absolutePath":"src/mocks/permission/auth/DaoAuthorizableUpgradeableMock.sol","exportedSymbols":{"DaoAuthorizableUpgradeable":[13161],"DaoAuthorizableUpgradeableMock":[11106],"IDAO":[10865]},"id":11107,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":11061,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:45"},{"absolutePath":"src/permission/auth/DaoAuthorizableUpgradeable.sol","file":"../../../permission/auth/DaoAuthorizableUpgradeable.sol","id":11063,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":11107,"sourceUnit":13162,"src":"72:99:45","symbolAliases":[{"foreign":{"id":11062,"name":"DaoAuthorizableUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13161,"src":"80:26:45","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/dao/IDAO.sol","file":"../../../dao/IDAO.sol","id":11065,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":11107,"sourceUnit":10866,"src":"172:43:45","symbolAliases":[{"foreign":{"id":11064,"name":"IDAO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10865,"src":"180:4:45","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":11067,"name":"DaoAuthorizableUpgradeable","nameLocations":["379:26:45"],"nodeType":"IdentifierPath","referencedDeclaration":13161,"src":"379:26:45"},"id":11068,"nodeType":"InheritanceSpecifier","src":"379:26:45"}],"canonicalName":"DaoAuthorizableUpgradeableMock","contractDependencies":[],"contractKind":"contract","documentation":{"id":11066,"nodeType":"StructuredDocumentation","src":"217:119:45","text":"@notice A mock contract containing a function protected by the `auth` modifier.\n @dev DO NOT USE IN PRODUCTION!"},"fullyImplemented":true,"id":11106,"linearizedBaseContracts":[11106,13161,2593,534],"name":"DaoAuthorizableUpgradeableMock","nameLocation":"345:30:45","nodeType":"ContractDefinition","nodes":[{"constant":true,"functionSelector":"403f8575","id":11073,"mutability":"constant","name":"AUTHORIZED_FUNC_PERMISSION_ID","nameLocation":"436:29:45","nodeType":"VariableDeclaration","scope":11106,"src":"412:95:45","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":11069,"name":"bytes32","nodeType":"ElementaryTypeName","src":"412:7:45","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"415554484f52495a45445f46554e435f5045524d495353494f4e","id":11071,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"478:28:45","typeDescriptions":{"typeIdentifier":"t_stringliteral_6c28b2d088260f42eed051af4616ddda00554ec1880b580a4a9fbf40a70b09eb","typeString":"literal_string \"AUTHORIZED_FUNC_PERMISSION\""},"value":"AUTHORIZED_FUNC_PERMISSION"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_6c28b2d088260f42eed051af4616ddda00554ec1880b580a4a9fbf40a70b09eb","typeString":"literal_string \"AUTHORIZED_FUNC_PERMISSION\""}],"id":11070,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967288,"src":"468:9:45","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":11072,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"468:39:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"public"},{"body":{"id":11085,"nodeType":"Block","src":"566:56:45","statements":[{"expression":{"arguments":[{"id":11082,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11076,"src":"610:4:45","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}],"id":11081,"name":"__DaoAuthorizableUpgradeable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13125,"src":"576:33:45","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IDAO_$10865_$returns$__$","typeString":"function (contract IDAO)"}},"id":11083,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"576:39:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11084,"nodeType":"ExpressionStatement","src":"576:39:45"}]},"functionSelector":"c4d66de8","id":11086,"implemented":true,"kind":"function","modifiers":[{"id":11079,"kind":"modifierInvocation","modifierName":{"id":11078,"name":"initializer","nameLocations":["554:11:45"],"nodeType":"IdentifierPath","referencedDeclaration":436,"src":"554:11:45"},"nodeType":"ModifierInvocation","src":"554:11:45"}],"name":"initialize","nameLocation":"523:10:45","nodeType":"FunctionDefinition","parameters":{"id":11077,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11076,"mutability":"mutable","name":"_dao","nameLocation":"539:4:45","nodeType":"VariableDeclaration","scope":11086,"src":"534:9:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"},"typeName":{"id":11075,"nodeType":"UserDefinedTypeName","pathNode":{"id":11074,"name":"IDAO","nameLocations":["534:4:45"],"nodeType":"IdentifierPath","referencedDeclaration":10865,"src":"534:4:45"},"referencedDeclaration":10865,"src":"534:4:45","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}},"visibility":"internal"}],"src":"533:11:45"},"returnParameters":{"id":11080,"nodeType":"ParameterList","parameters":[],"src":"566:0:45"},"scope":11106,"src":"514:108:45","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":11097,"nodeType":"Block","src":"863:56:45","statements":[{"expression":{"arguments":[{"id":11094,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11090,"src":"907:4:45","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}],"id":11093,"name":"__DaoAuthorizableUpgradeable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13125,"src":"873:33:45","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IDAO_$10865_$returns$__$","typeString":"function (contract IDAO)"}},"id":11095,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"873:39:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11096,"nodeType":"ExpressionStatement","src":"873:39:45"}]},"documentation":{"id":11087,"nodeType":"StructuredDocumentation","src":"628:184:45","text":"@notice The following function intentionally misses the `initializer` modifier\n to validate that `__DaoAuthorizableUpgradeable_init` cannot be called outside initialization."},"functionSelector":"8883bbd7","id":11098,"implemented":true,"kind":"function","modifiers":[],"name":"notAnInitializer","nameLocation":"826:16:45","nodeType":"FunctionDefinition","parameters":{"id":11091,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11090,"mutability":"mutable","name":"_dao","nameLocation":"848:4:45","nodeType":"VariableDeclaration","scope":11098,"src":"843:9:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"},"typeName":{"id":11089,"nodeType":"UserDefinedTypeName","pathNode":{"id":11088,"name":"IDAO","nameLocations":["843:4:45"],"nodeType":"IdentifierPath","referencedDeclaration":10865,"src":"843:4:45"},"referencedDeclaration":10865,"src":"843:4:45","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}},"visibility":"internal"}],"src":"842:11:45"},"returnParameters":{"id":11092,"nodeType":"ParameterList","parameters":[],"src":"863:0:45"},"scope":11106,"src":"817:102:45","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":11104,"nodeType":"Block","src":"1061:2:45","statements":[]},"functionSelector":"f09e1623","id":11105,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":11101,"name":"AUTHORIZED_FUNC_PERMISSION_ID","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11073,"src":"981:29:45","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":11102,"kind":"modifierInvocation","modifierName":{"id":11100,"name":"auth","nameLocations":["976:4:45"],"nodeType":"IdentifierPath","referencedDeclaration":13155,"src":"976:4:45"},"nodeType":"ModifierInvocation","src":"976:35:45"}],"name":"authorizedFunc","nameLocation":"934:14:45","nodeType":"FunctionDefinition","parameters":{"id":11099,"nodeType":"ParameterList","parameters":[],"src":"948:2:45"},"returnParameters":{"id":11103,"nodeType":"ParameterList","parameters":[],"src":"1061:0:45"},"scope":11106,"src":"925:138:45","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":11107,"src":"336:729:45","usedErrors":[13176]}],"src":"47:1019:45"},"id":45},"src/mocks/permission/condition/PermissionConditionMock.sol":{"ast":{"absolutePath":"src/mocks/permission/condition/PermissionConditionMock.sol","exportedSymbols":{"PermissionCondition":[13276],"PermissionConditionMock":[11148]},"id":11149,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":11108,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:46"},{"absolutePath":"src/permission/condition/PermissionCondition.sol","file":"../../../permission/condition/PermissionCondition.sol","id":11110,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":11149,"sourceUnit":13277,"src":"72:90:46","symbolAliases":[{"foreign":{"id":11109,"name":"PermissionCondition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13276,"src":"80:19:46","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":11112,"name":"PermissionCondition","nameLocations":["321:19:46"],"nodeType":"IdentifierPath","referencedDeclaration":13276,"src":"321:19:46"},"id":11113,"nodeType":"InheritanceSpecifier","src":"321:19:46"}],"canonicalName":"PermissionConditionMock","contractDependencies":[],"contractKind":"contract","documentation":{"id":11111,"nodeType":"StructuredDocumentation","src":"164:121:46","text":"@notice A mock permission condition that can be set to permit or deny every call.\n @dev DO NOT USE IN PRODUCTION!"},"fullyImplemented":true,"id":11148,"linearizedBaseContracts":[11148,13276,14766,14744,13229,9731,9743],"name":"PermissionConditionMock","nameLocation":"294:23:46","nodeType":"ContractDefinition","nodes":[{"constant":false,"functionSelector":"85bb7d69","id":11115,"mutability":"mutable","name":"answer","nameLocation":"359:6:46","nodeType":"VariableDeclaration","scope":11148,"src":"347:18:46","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":11114,"name":"bool","nodeType":"ElementaryTypeName","src":"347:4:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"public"},{"body":{"id":11124,"nodeType":"Block","src":"414:33:46","statements":[{"expression":{"id":11122,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11120,"name":"answer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11115,"src":"424:6:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":11121,"name":"_answer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11117,"src":"433:7:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"424:16:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11123,"nodeType":"ExpressionStatement","src":"424:16:46"}]},"functionSelector":"f01b7dd2","id":11125,"implemented":true,"kind":"function","modifiers":[],"name":"setAnswer","nameLocation":"381:9:46","nodeType":"FunctionDefinition","parameters":{"id":11118,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11117,"mutability":"mutable","name":"_answer","nameLocation":"396:7:46","nodeType":"VariableDeclaration","scope":11125,"src":"391:12:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":11116,"name":"bool","nodeType":"ElementaryTypeName","src":"391:4:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"390:14:46"},"returnParameters":{"id":11119,"nodeType":"ParameterList","parameters":[],"src":"414:0:46"},"scope":11148,"src":"372:75:46","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[13228],"body":{"id":11146,"nodeType":"Block","src":"612:76:46","statements":[{"expression":{"components":[{"id":11138,"name":"_where","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11127,"src":"623:6:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11139,"name":"_who","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11129,"src":"631:4:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11140,"name":"_permissionId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11131,"src":"637:13:46","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":11141,"name":"_data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11133,"src":"652:5:46","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":11142,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"622:36:46","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$","typeString":"tuple(address,address,bytes32,bytes memory)"}},"id":11143,"nodeType":"ExpressionStatement","src":"622:36:46"},{"expression":{"id":11144,"name":"answer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11115,"src":"675:6:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":11137,"id":11145,"nodeType":"Return","src":"668:13:46"}]},"functionSelector":"2675fdd0","id":11147,"implemented":true,"kind":"function","modifiers":[],"name":"isGranted","nameLocation":"462:9:46","nodeType":"FunctionDefinition","parameters":{"id":11134,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11127,"mutability":"mutable","name":"_where","nameLocation":"489:6:46","nodeType":"VariableDeclaration","scope":11147,"src":"481:14:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11126,"name":"address","nodeType":"ElementaryTypeName","src":"481:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11129,"mutability":"mutable","name":"_who","nameLocation":"513:4:46","nodeType":"VariableDeclaration","scope":11147,"src":"505:12:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11128,"name":"address","nodeType":"ElementaryTypeName","src":"505:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11131,"mutability":"mutable","name":"_permissionId","nameLocation":"535:13:46","nodeType":"VariableDeclaration","scope":11147,"src":"527:21:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":11130,"name":"bytes32","nodeType":"ElementaryTypeName","src":"527:7:46","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":11133,"mutability":"mutable","name":"_data","nameLocation":"571:5:46","nodeType":"VariableDeclaration","scope":11147,"src":"558:18:46","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":11132,"name":"bytes","nodeType":"ElementaryTypeName","src":"558:5:46","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"471:111:46"},"returnParameters":{"id":11137,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11136,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11147,"src":"606:4:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":11135,"name":"bool","nodeType":"ElementaryTypeName","src":"606:4:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"605:6:46"},"scope":11148,"src":"453:235:46","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":11149,"src":"285:405:46","usedErrors":[]}],"src":"47:644:46"},"id":46},"src/mocks/permission/condition/PermissionConditionUpgradeableMock.sol":{"ast":{"absolutePath":"src/mocks/permission/condition/PermissionConditionUpgradeableMock.sol","exportedSymbols":{"PermissionConditionUpgradeable":[13323],"PermissionConditionUpgradeableMock":[11190]},"id":11191,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":11150,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:47"},{"absolutePath":"src/permission/condition/PermissionConditionUpgradeable.sol","file":"../../../permission/condition/PermissionConditionUpgradeable.sol","id":11152,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":11191,"sourceUnit":13324,"src":"72:112:47","symbolAliases":[{"foreign":{"id":11151,"name":"PermissionConditionUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13323,"src":"80:30:47","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":11154,"name":"PermissionConditionUpgradeable","nameLocations":["382:30:47"],"nodeType":"IdentifierPath","referencedDeclaration":13323,"src":"382:30:47"},"id":11155,"nodeType":"InheritanceSpecifier","src":"382:30:47"}],"canonicalName":"PermissionConditionUpgradeableMock","contractDependencies":[],"contractKind":"contract","documentation":{"id":11153,"nodeType":"StructuredDocumentation","src":"186:149:47","text":"@notice A mock permission condition that can be set to permit or deny every call and be upgraded by everyone.\n @dev DO NOT USE IN PRODUCTION!"},"fullyImplemented":true,"id":11190,"linearizedBaseContracts":[11190,13323,14766,14744,13229,2822,2834,534],"name":"PermissionConditionUpgradeableMock","nameLocation":"344:34:47","nodeType":"ContractDefinition","nodes":[{"constant":false,"functionSelector":"85bb7d69","id":11157,"mutability":"mutable","name":"answer","nameLocation":"431:6:47","nodeType":"VariableDeclaration","scope":11190,"src":"419:18:47","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":11156,"name":"bool","nodeType":"ElementaryTypeName","src":"419:4:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"public"},{"body":{"id":11166,"nodeType":"Block","src":"486:33:47","statements":[{"expression":{"id":11164,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11162,"name":"answer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11157,"src":"496:6:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":11163,"name":"_answer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11159,"src":"505:7:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"496:16:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11165,"nodeType":"ExpressionStatement","src":"496:16:47"}]},"functionSelector":"f01b7dd2","id":11167,"implemented":true,"kind":"function","modifiers":[],"name":"setAnswer","nameLocation":"453:9:47","nodeType":"FunctionDefinition","parameters":{"id":11160,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11159,"mutability":"mutable","name":"_answer","nameLocation":"468:7:47","nodeType":"VariableDeclaration","scope":11167,"src":"463:12:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":11158,"name":"bool","nodeType":"ElementaryTypeName","src":"463:4:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"462:14:47"},"returnParameters":{"id":11161,"nodeType":"ParameterList","parameters":[],"src":"486:0:47"},"scope":11190,"src":"444:75:47","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[13228],"body":{"id":11188,"nodeType":"Block","src":"684:76:47","statements":[{"expression":{"components":[{"id":11180,"name":"_where","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11169,"src":"695:6:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11181,"name":"_who","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11171,"src":"703:4:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11182,"name":"_permissionId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11173,"src":"709:13:47","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":11183,"name":"_data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11175,"src":"724:5:47","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":11184,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"694:36:47","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$","typeString":"tuple(address,address,bytes32,bytes memory)"}},"id":11185,"nodeType":"ExpressionStatement","src":"694:36:47"},{"expression":{"id":11186,"name":"answer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11157,"src":"747:6:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":11179,"id":11187,"nodeType":"Return","src":"740:13:47"}]},"functionSelector":"2675fdd0","id":11189,"implemented":true,"kind":"function","modifiers":[],"name":"isGranted","nameLocation":"534:9:47","nodeType":"FunctionDefinition","parameters":{"id":11176,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11169,"mutability":"mutable","name":"_where","nameLocation":"561:6:47","nodeType":"VariableDeclaration","scope":11189,"src":"553:14:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11168,"name":"address","nodeType":"ElementaryTypeName","src":"553:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11171,"mutability":"mutable","name":"_who","nameLocation":"585:4:47","nodeType":"VariableDeclaration","scope":11189,"src":"577:12:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11170,"name":"address","nodeType":"ElementaryTypeName","src":"577:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11173,"mutability":"mutable","name":"_permissionId","nameLocation":"607:13:47","nodeType":"VariableDeclaration","scope":11189,"src":"599:21:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":11172,"name":"bytes32","nodeType":"ElementaryTypeName","src":"599:7:47","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":11175,"mutability":"mutable","name":"_data","nameLocation":"643:5:47","nodeType":"VariableDeclaration","scope":11189,"src":"630:18:47","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":11174,"name":"bytes","nodeType":"ElementaryTypeName","src":"630:5:47","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"543:111:47"},"returnParameters":{"id":11179,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11178,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11189,"src":"678:4:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":11177,"name":"bool","nodeType":"ElementaryTypeName","src":"678:4:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"677:6:47"},"scope":11190,"src":"525:235:47","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":11191,"src":"335:427:47","usedErrors":[]}],"src":"47:716:47"},"id":47},"src/mocks/plugin/PluginCloneableMock.sol":{"ast":{"absolutePath":"src/mocks/plugin/PluginCloneableMock.sol","exportedSymbols":{"IDAO":[10865],"PluginCloneable":[13501],"PluginCloneableMockBad":[11269],"PluginCloneableMockBuild1":[11219],"PluginCloneableMockBuild2":[11248]},"id":11270,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":11192,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"91:23:48"},{"absolutePath":"src/plugin/PluginCloneable.sol","file":"../../plugin/PluginCloneable.sol","id":11194,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":11270,"sourceUnit":13502,"src":"116:65:48","symbolAliases":[{"foreign":{"id":11193,"name":"PluginCloneable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13501,"src":"124:15:48","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/dao/IDAO.sol","file":"../../dao/IDAO.sol","id":11196,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":11270,"sourceUnit":10866,"src":"182:40:48","symbolAliases":[{"foreign":{"id":11195,"name":"IDAO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10865,"src":"190:4:48","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":11198,"name":"PluginCloneable","nameLocations":["409:15:48"],"nodeType":"IdentifierPath","referencedDeclaration":13501,"src":"409:15:48"},"id":11199,"nodeType":"InheritanceSpecifier","src":"409:15:48"}],"canonicalName":"PluginCloneableMockBuild1","contractDependencies":[],"contractKind":"contract","documentation":{"id":11197,"nodeType":"StructuredDocumentation","src":"224:147:48","text":"@notice A mock cloneable plugin to be deployed via the minimal proxy pattern.\n v1.1 (Release 1, Build 1)\n @dev DO NOT USE IN PRODUCTION!"},"fullyImplemented":true,"id":11219,"linearizedBaseContracts":[11219,13501,14766,14744,13161,2593,2822,2834,534,13338],"name":"PluginCloneableMockBuild1","nameLocation":"380:25:48","nodeType":"ContractDefinition","nodes":[{"constant":false,"functionSelector":"6accab8c","id":11201,"mutability":"mutable","name":"state1","nameLocation":"446:6:48","nodeType":"VariableDeclaration","scope":11219,"src":"431:21:48","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11200,"name":"uint256","nodeType":"ElementaryTypeName","src":"431:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"body":{"id":11217,"nodeType":"Block","src":"511:65:48","statements":[{"expression":{"arguments":[{"id":11210,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11204,"src":"544:4:48","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}],"id":11209,"name":"__PluginCloneable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13459,"src":"521:22:48","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IDAO_$10865_$returns$__$","typeString":"function (contract IDAO)"}},"id":11211,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"521:28:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11212,"nodeType":"ExpressionStatement","src":"521:28:48"},{"expression":{"id":11215,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11213,"name":"state1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11201,"src":"559:6:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"31","id":11214,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"568:1:48","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"559:10:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11216,"nodeType":"ExpressionStatement","src":"559:10:48"}]},"functionSelector":"c4d66de8","id":11218,"implemented":true,"kind":"function","modifiers":[{"id":11207,"kind":"modifierInvocation","modifierName":{"id":11206,"name":"initializer","nameLocations":["499:11:48"],"nodeType":"IdentifierPath","referencedDeclaration":436,"src":"499:11:48"},"nodeType":"ModifierInvocation","src":"499:11:48"}],"name":"initialize","nameLocation":"468:10:48","nodeType":"FunctionDefinition","parameters":{"id":11205,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11204,"mutability":"mutable","name":"_dao","nameLocation":"484:4:48","nodeType":"VariableDeclaration","scope":11218,"src":"479:9:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"},"typeName":{"id":11203,"nodeType":"UserDefinedTypeName","pathNode":{"id":11202,"name":"IDAO","nameLocations":["479:4:48"],"nodeType":"IdentifierPath","referencedDeclaration":10865,"src":"479:4:48"},"referencedDeclaration":10865,"src":"479:4:48","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}},"visibility":"internal"}],"src":"478:11:48"},"returnParameters":{"id":11208,"nodeType":"ParameterList","parameters":[],"src":"511:0:48"},"scope":11219,"src":"459:117:48","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":11270,"src":"371:207:48","usedErrors":[]},{"abstract":false,"baseContracts":[{"baseName":{"id":11221,"name":"PluginCloneable","nameLocations":["765:15:48"],"nodeType":"IdentifierPath","referencedDeclaration":13501,"src":"765:15:48"},"id":11222,"nodeType":"InheritanceSpecifier","src":"765:15:48"}],"canonicalName":"PluginCloneableMockBuild2","contractDependencies":[],"contractKind":"contract","documentation":{"id":11220,"nodeType":"StructuredDocumentation","src":"580:147:48","text":"@notice A mock cloneable plugin to be deployed via the minimal proxy pattern.\n v1.1 (Release 1, Build 2)\n @dev DO NOT USE IN PRODUCTION!"},"fullyImplemented":true,"id":11248,"linearizedBaseContracts":[11248,13501,14766,14744,13161,2593,2822,2834,534,13338],"name":"PluginCloneableMockBuild2","nameLocation":"736:25:48","nodeType":"ContractDefinition","nodes":[{"constant":false,"functionSelector":"6accab8c","id":11224,"mutability":"mutable","name":"state1","nameLocation":"802:6:48","nodeType":"VariableDeclaration","scope":11248,"src":"787:21:48","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11223,"name":"uint256","nodeType":"ElementaryTypeName","src":"787:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"constant":false,"functionSelector":"efe51cca","id":11226,"mutability":"mutable","name":"state2","nameLocation":"829:6:48","nodeType":"VariableDeclaration","scope":11248,"src":"814:21:48","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11225,"name":"uint256","nodeType":"ElementaryTypeName","src":"814:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"body":{"id":11246,"nodeType":"Block","src":"894:85:48","statements":[{"expression":{"arguments":[{"id":11235,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11229,"src":"927:4:48","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}],"id":11234,"name":"__PluginCloneable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13459,"src":"904:22:48","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IDAO_$10865_$returns$__$","typeString":"function (contract IDAO)"}},"id":11236,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"904:28:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11237,"nodeType":"ExpressionStatement","src":"904:28:48"},{"expression":{"id":11240,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11238,"name":"state1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11224,"src":"942:6:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"31","id":11239,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"951:1:48","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"942:10:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11241,"nodeType":"ExpressionStatement","src":"942:10:48"},{"expression":{"id":11244,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11242,"name":"state2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11226,"src":"962:6:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"32","id":11243,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"971:1:48","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"962:10:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11245,"nodeType":"ExpressionStatement","src":"962:10:48"}]},"functionSelector":"c4d66de8","id":11247,"implemented":true,"kind":"function","modifiers":[{"id":11232,"kind":"modifierInvocation","modifierName":{"id":11231,"name":"initializer","nameLocations":["882:11:48"],"nodeType":"IdentifierPath","referencedDeclaration":436,"src":"882:11:48"},"nodeType":"ModifierInvocation","src":"882:11:48"}],"name":"initialize","nameLocation":"851:10:48","nodeType":"FunctionDefinition","parameters":{"id":11230,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11229,"mutability":"mutable","name":"_dao","nameLocation":"867:4:48","nodeType":"VariableDeclaration","scope":11247,"src":"862:9:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"},"typeName":{"id":11228,"nodeType":"UserDefinedTypeName","pathNode":{"id":11227,"name":"IDAO","nameLocations":["862:4:48"],"nodeType":"IdentifierPath","referencedDeclaration":10865,"src":"862:4:48"},"referencedDeclaration":10865,"src":"862:4:48","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}},"visibility":"internal"}],"src":"861:11:48"},"returnParameters":{"id":11233,"nodeType":"ParameterList","parameters":[],"src":"894:0:48"},"scope":11248,"src":"842:137:48","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":11270,"src":"727:254:48","usedErrors":[]},{"abstract":false,"baseContracts":[{"baseName":{"id":11250,"name":"PluginCloneable","nameLocations":["1122:15:48"],"nodeType":"IdentifierPath","referencedDeclaration":13501,"src":"1122:15:48"},"id":11251,"nodeType":"InheritanceSpecifier","src":"1122:15:48"}],"canonicalName":"PluginCloneableMockBad","contractDependencies":[],"contractKind":"contract","documentation":{"id":11249,"nodeType":"StructuredDocumentation","src":"983:104:48","text":"@notice A mock cloneable plugin missing an initializer function.\n @dev DO NOT USE IN PRODUCTION!"},"fullyImplemented":true,"id":11269,"linearizedBaseContracts":[11269,13501,14766,14744,13161,2593,2822,2834,534,13338],"name":"PluginCloneableMockBad","nameLocation":"1096:22:48","nodeType":"ContractDefinition","nodes":[{"constant":false,"functionSelector":"6accab8c","id":11253,"mutability":"mutable","name":"state1","nameLocation":"1159:6:48","nodeType":"VariableDeclaration","scope":11269,"src":"1144:21:48","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11252,"name":"uint256","nodeType":"ElementaryTypeName","src":"1144:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"body":{"id":11267,"nodeType":"Block","src":"1218:65:48","statements":[{"expression":{"arguments":[{"id":11260,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11256,"src":"1251:4:48","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}],"id":11259,"name":"__PluginCloneable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13459,"src":"1228:22:48","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IDAO_$10865_$returns$__$","typeString":"function (contract IDAO)"}},"id":11261,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1228:28:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11262,"nodeType":"ExpressionStatement","src":"1228:28:48"},{"expression":{"id":11265,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11263,"name":"state1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11253,"src":"1266:6:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"31","id":11264,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1275:1:48","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1266:10:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11266,"nodeType":"ExpressionStatement","src":"1266:10:48"}]},"functionSelector":"8883bbd7","id":11268,"implemented":true,"kind":"function","modifiers":[],"name":"notAnInitializer","nameLocation":"1181:16:48","nodeType":"FunctionDefinition","parameters":{"id":11257,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11256,"mutability":"mutable","name":"_dao","nameLocation":"1203:4:48","nodeType":"VariableDeclaration","scope":11268,"src":"1198:9:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"},"typeName":{"id":11255,"nodeType":"UserDefinedTypeName","pathNode":{"id":11254,"name":"IDAO","nameLocations":["1198:4:48"],"nodeType":"IdentifierPath","referencedDeclaration":10865,"src":"1198:4:48"},"referencedDeclaration":10865,"src":"1198:4:48","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}},"visibility":"internal"}],"src":"1197:11:48"},"returnParameters":{"id":11258,"nodeType":"ParameterList","parameters":[],"src":"1218:0:48"},"scope":11269,"src":"1172:111:48","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":11270,"src":"1087:198:48","usedErrors":[]}],"src":"91:1195:48"},"id":48},"src/mocks/plugin/PluginCloneableSetupMock.sol":{"ast":{"absolutePath":"src/mocks/plugin/PluginCloneableSetupMock.sol","exportedSymbols":{"IDAO":[10865],"IPluginSetup":[14273],"PermissionLib":[13038],"PluginCloneableMockBuild1":[11219],"PluginCloneableMockBuild2":[11248],"PluginCloneableSetupMockBuild1":[11392],"PluginCloneableSetupMockBuild2":[11497],"PluginSetup":[14371],"ProxyLib":[14593],"mockHelpers":[11760],"mockPermissions":[11721]},"id":11498,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":11271,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"91:23:49"},{"absolutePath":"src/permission/PermissionLib.sol","file":"../../permission/PermissionLib.sol","id":11273,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":11498,"sourceUnit":13039,"src":"116:65:49","symbolAliases":[{"foreign":{"id":11272,"name":"PermissionLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13038,"src":"124:13:49","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/plugin/setup/IPluginSetup.sol","file":"../../plugin/setup/IPluginSetup.sol","id":11275,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":11498,"sourceUnit":14274,"src":"182:65:49","symbolAliases":[{"foreign":{"id":11274,"name":"IPluginSetup","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14273,"src":"190:12:49","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/plugin/setup/PluginSetup.sol","file":"../../plugin/setup/PluginSetup.sol","id":11277,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":11498,"sourceUnit":14372,"src":"248:63:49","symbolAliases":[{"foreign":{"id":11276,"name":"PluginSetup","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14371,"src":"256:11:49","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/utils/deployment/ProxyLib.sol","file":"../../utils/deployment/ProxyLib.sol","id":11279,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":11498,"sourceUnit":14594,"src":"312:61:49","symbolAliases":[{"foreign":{"id":11278,"name":"ProxyLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14593,"src":"320:8:49","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/dao/IDAO.sol","file":"../../dao/IDAO.sol","id":11281,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":11498,"sourceUnit":10866,"src":"374:40:49","symbolAliases":[{"foreign":{"id":11280,"name":"IDAO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10865,"src":"382:4:49","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/mocks/plugin/PluginSetupMockData.sol","file":"./PluginSetupMockData.sol","id":11284,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":11498,"sourceUnit":11761,"src":"415:71:49","symbolAliases":[{"foreign":{"id":11282,"name":"mockPermissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11721,"src":"423:15:49","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":11283,"name":"mockHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11760,"src":"440:11:49","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/mocks/plugin/PluginCloneableMock.sol","file":"./PluginCloneableMock.sol","id":11287,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":11498,"sourceUnit":11270,"src":"487:95:49","symbolAliases":[{"foreign":{"id":11285,"name":"PluginCloneableMockBuild1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11219,"src":"495:25:49","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":11286,"name":"PluginCloneableMockBuild2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11248,"src":"522:25:49","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":11289,"name":"PluginSetup","nameLocations":["792:11:49"],"nodeType":"IdentifierPath","referencedDeclaration":14371,"src":"792:11:49"},"id":11290,"nodeType":"InheritanceSpecifier","src":"792:11:49"}],"canonicalName":"PluginCloneableSetupMockBuild1","contractDependencies":[11219],"contractKind":"contract","documentation":{"id":11288,"nodeType":"StructuredDocumentation","src":"584:165:49","text":"@notice A mock plugin setup of a cloneable plugin to be deployed via the minimal proxy pattern.\n v1.1 (Release 1, Build 1)\n @dev DO NOT USE IN PRODUCTION!"},"fullyImplemented":true,"id":11392,"linearizedBaseContracts":[11392,14371,14766,14744,14273,9731,9743],"name":"PluginCloneableSetupMockBuild1","nameLocation":"758:30:49","nodeType":"ContractDefinition","nodes":[{"global":false,"id":11293,"libraryName":{"id":11291,"name":"ProxyLib","nameLocations":["816:8:49"],"nodeType":"IdentifierPath","referencedDeclaration":14593,"src":"816:8:49"},"nodeType":"UsingForDirective","src":"810:27:49","typeName":{"id":11292,"name":"address","nodeType":"ElementaryTypeName","src":"829:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},{"constant":true,"id":11296,"mutability":"constant","name":"THIS_BUILD","nameLocation":"868:10:49","nodeType":"VariableDeclaration","scope":11392,"src":"843:39:49","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":11294,"name":"uint16","nodeType":"ElementaryTypeName","src":"843:6:49","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"value":{"hexValue":"31","id":11295,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"881:1:49","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"visibility":"internal"},{"body":{"id":11308,"nodeType":"Block","src":"957:2:49","statements":[]},"id":11309,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":11303,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"NewExpression","src":"923:29:49","typeDescriptions":{"typeIdentifier":"t_function_creation_nonpayable$__$returns$_t_contract$_PluginCloneableMockBuild1_$11219_$","typeString":"function () returns (contract PluginCloneableMockBuild1)"},"typeName":{"id":11302,"nodeType":"UserDefinedTypeName","pathNode":{"id":11301,"name":"PluginCloneableMockBuild1","nameLocations":["927:25:49"],"nodeType":"IdentifierPath","referencedDeclaration":11219,"src":"927:25:49"},"referencedDeclaration":11219,"src":"927:25:49","typeDescriptions":{"typeIdentifier":"t_contract$_PluginCloneableMockBuild1_$11219","typeString":"contract PluginCloneableMockBuild1"}}},"id":11304,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"923:31:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_PluginCloneableMockBuild1_$11219","typeString":"contract PluginCloneableMockBuild1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_PluginCloneableMockBuild1_$11219","typeString":"contract PluginCloneableMockBuild1"}],"id":11300,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"915:7:49","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11299,"name":"address","nodeType":"ElementaryTypeName","src":"915:7:49","typeDescriptions":{}}},"id":11305,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"915:40:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":11306,"kind":"baseConstructorSpecifier","modifierName":{"id":11298,"name":"PluginSetup","nameLocations":["903:11:49"],"nodeType":"IdentifierPath","referencedDeclaration":14371,"src":"903:11:49"},"nodeType":"ModifierInvocation","src":"903:53:49"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":11297,"nodeType":"ParameterList","parameters":[],"src":"900:2:49"},"returnParameters":{"id":11307,"nodeType":"ParameterList","parameters":[],"src":"957:0:49"},"scope":11392,"src":"889:70:49","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[14237],"body":{"id":11362,"nodeType":"Block","src":"1155:381:49","statements":[{"assignments":[11323],"declarations":[{"constant":false,"id":11323,"mutability":"mutable","name":"initData","nameLocation":"1178:8:49","nodeType":"VariableDeclaration","scope":11362,"src":"1165:21:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":11322,"name":"bytes","nodeType":"ElementaryTypeName","src":"1165:5:49","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":11333,"initialValue":{"arguments":[{"expression":{"id":11326,"name":"PluginCloneableMockBuild1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11219,"src":"1204:25:49","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PluginCloneableMockBuild1_$11219_$","typeString":"type(contract PluginCloneableMockBuild1)"}},"id":11327,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1230:10:49","memberName":"initialize","nodeType":"MemberAccess","referencedDeclaration":11218,"src":"1204:36:49","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_contract$_IDAO_$10865_$returns$__$","typeString":"function PluginCloneableMockBuild1.initialize(contract IDAO)"}},{"components":[{"arguments":[{"id":11329,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11312,"src":"1248:4:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11328,"name":"IDAO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10865,"src":"1243:4:49","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IDAO_$10865_$","typeString":"type(contract IDAO)"}},"id":11330,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1243:10:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}}],"id":11331,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1242:12:49","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_nonpayable$_t_contract$_IDAO_$10865_$returns$__$","typeString":"function PluginCloneableMockBuild1.initialize(contract IDAO)"},{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}],"expression":{"id":11324,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967295,"src":"1189:3:49","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":11325,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1193:10:49","memberName":"encodeCall","nodeType":"MemberAccess","src":"1189:14:49","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":11332,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1189:66:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"1165:90:49"},{"expression":{"id":11340,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11334,"name":"plugin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11317,"src":"1265:6:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":11338,"name":"initData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11323,"src":"1310:8:49","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":11335,"name":"implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14370,"src":"1274:14:49","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":11336,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1274:16:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":11337,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1291:18:49","memberName":"deployMinimalProxy","nodeType":"MemberAccess","referencedDeclaration":14592,"src":"1274:35:49","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_address_$bound_to$_t_address_$","typeString":"function (address,bytes memory) returns (address)"}},"id":11339,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1274:45:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1265:54:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":11341,"nodeType":"ExpressionStatement","src":"1265:54:49"},{"expression":{"id":11348,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":11342,"name":"preparedSetupData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11320,"src":"1329:17:49","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$14216_memory_ptr","typeString":"struct IPluginSetup.PreparedSetupData memory"}},"id":11344,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1347:7:49","memberName":"helpers","nodeType":"MemberAccess","referencedDeclaration":14211,"src":"1329:25:49","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":11346,"name":"THIS_BUILD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11296,"src":"1369:10:49","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"}],"id":11345,"name":"mockHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11760,"src":"1357:11:49","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$returns$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"function (uint160) pure returns (address[] memory)"}},"id":11347,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1357:23:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"src":"1329:51:49","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":11349,"nodeType":"ExpressionStatement","src":"1329:51:49"},{"expression":{"id":11360,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":11350,"name":"preparedSetupData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11320,"src":"1390:17:49","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$14216_memory_ptr","typeString":"struct IPluginSetup.PreparedSetupData memory"}},"id":11352,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1408:11:49","memberName":"permissions","nodeType":"MemberAccess","referencedDeclaration":14215,"src":"1390:29:49","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"hexValue":"30","id":11354,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1451:1:49","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":11355,"name":"THIS_BUILD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11296,"src":"1466:10:49","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"expression":{"expression":{"id":11356,"name":"PermissionLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13038,"src":"1490:13:49","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PermissionLib_$13038_$","typeString":"type(library PermissionLib)"}},"id":11357,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1504:9:49","memberName":"Operation","nodeType":"MemberAccess","referencedDeclaration":13017,"src":"1490:23:49","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Operation_$13017_$","typeString":"type(enum PermissionLib.Operation)"}},"id":11358,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1514:5:49","memberName":"Grant","nodeType":"MemberAccess","referencedDeclaration":13014,"src":"1490:29:49","typeDescriptions":{"typeIdentifier":"t_enum$_Operation_$13017","typeString":"enum PermissionLib.Operation"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_enum$_Operation_$13017","typeString":"enum PermissionLib.Operation"}],"id":11353,"name":"mockPermissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11721,"src":"1422:15:49","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_enum$_Operation_$13017_$returns$_t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint160,uint160,enum PermissionLib.Operation) pure returns (struct PermissionLib.MultiTargetPermission memory[] memory)"}},"id":11359,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1422:107:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"src":"1390:139:49","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"id":11361,"nodeType":"ExpressionStatement","src":"1390:139:49"}]},"documentation":{"id":11310,"nodeType":"StructuredDocumentation","src":"965:28:49","text":"@inheritdoc IPluginSetup"},"functionSelector":"f10832f1","id":11363,"implemented":true,"kind":"function","modifiers":[],"name":"prepareInstallation","nameLocation":"1007:19:49","nodeType":"FunctionDefinition","parameters":{"id":11315,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11312,"mutability":"mutable","name":"_dao","nameLocation":"1044:4:49","nodeType":"VariableDeclaration","scope":11363,"src":"1036:12:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11311,"name":"address","nodeType":"ElementaryTypeName","src":"1036:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11314,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11363,"src":"1058:12:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":11313,"name":"bytes","nodeType":"ElementaryTypeName","src":"1058:5:49","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1026:50:49"},"returnParameters":{"id":11321,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11317,"mutability":"mutable","name":"plugin","nameLocation":"1103:6:49","nodeType":"VariableDeclaration","scope":11363,"src":"1095:14:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11316,"name":"address","nodeType":"ElementaryTypeName","src":"1095:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11320,"mutability":"mutable","name":"preparedSetupData","nameLocation":"1136:17:49","nodeType":"VariableDeclaration","scope":11363,"src":"1111:42:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$14216_memory_ptr","typeString":"struct IPluginSetup.PreparedSetupData"},"typeName":{"id":11319,"nodeType":"UserDefinedTypeName","pathNode":{"id":11318,"name":"PreparedSetupData","nameLocations":["1111:17:49"],"nodeType":"IdentifierPath","referencedDeclaration":14216,"src":"1111:17:49"},"referencedDeclaration":14216,"src":"1111:17:49","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$14216_storage_ptr","typeString":"struct IPluginSetup.PreparedSetupData"}},"visibility":"internal"}],"src":"1094:60:49"},"scope":11392,"src":"998:538:49","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[14266],"body":{"id":11390,"nodeType":"Block","src":"1755:119:49","statements":[{"expression":{"components":[{"id":11376,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11366,"src":"1766:4:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11377,"name":"_payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11369,"src":"1772:8:49","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$14224_calldata_ptr","typeString":"struct IPluginSetup.SetupPayload calldata"}}],"id":11378,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1765:16:49","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_struct$_SetupPayload_$14224_calldata_ptr_$","typeString":"tuple(address,struct IPluginSetup.SetupPayload calldata)"}},"id":11379,"nodeType":"ExpressionStatement","src":"1765:16:49"},{"expression":{"id":11388,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11380,"name":"permissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11374,"src":"1791:11:49","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"hexValue":"30","id":11382,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1821:1:49","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":11383,"name":"THIS_BUILD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11296,"src":"1824:10:49","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"expression":{"expression":{"id":11384,"name":"PermissionLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13038,"src":"1836:13:49","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PermissionLib_$13038_$","typeString":"type(library PermissionLib)"}},"id":11385,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1850:9:49","memberName":"Operation","nodeType":"MemberAccess","referencedDeclaration":13017,"src":"1836:23:49","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Operation_$13017_$","typeString":"type(enum PermissionLib.Operation)"}},"id":11386,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1860:6:49","memberName":"Revoke","nodeType":"MemberAccess","referencedDeclaration":13015,"src":"1836:30:49","typeDescriptions":{"typeIdentifier":"t_enum$_Operation_$13017","typeString":"enum PermissionLib.Operation"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_enum$_Operation_$13017","typeString":"enum PermissionLib.Operation"}],"id":11381,"name":"mockPermissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11721,"src":"1805:15:49","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_enum$_Operation_$13017_$returns$_t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint160,uint160,enum PermissionLib.Operation) pure returns (struct PermissionLib.MultiTargetPermission memory[] memory)"}},"id":11387,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1805:62:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"src":"1791:76:49","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"id":11389,"nodeType":"ExpressionStatement","src":"1791:76:49"}]},"documentation":{"id":11364,"nodeType":"StructuredDocumentation","src":"1542:28:49","text":"@inheritdoc IPluginSetup"},"functionSelector":"9cb0a124","id":11391,"implemented":true,"kind":"function","modifiers":[],"name":"prepareUninstallation","nameLocation":"1584:21:49","nodeType":"FunctionDefinition","parameters":{"id":11370,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11366,"mutability":"mutable","name":"_dao","nameLocation":"1623:4:49","nodeType":"VariableDeclaration","scope":11391,"src":"1615:12:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11365,"name":"address","nodeType":"ElementaryTypeName","src":"1615:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11369,"mutability":"mutable","name":"_payload","nameLocation":"1659:8:49","nodeType":"VariableDeclaration","scope":11391,"src":"1637:30:49","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$14224_calldata_ptr","typeString":"struct IPluginSetup.SetupPayload"},"typeName":{"id":11368,"nodeType":"UserDefinedTypeName","pathNode":{"id":11367,"name":"SetupPayload","nameLocations":["1637:12:49"],"nodeType":"IdentifierPath","referencedDeclaration":14224,"src":"1637:12:49"},"referencedDeclaration":14224,"src":"1637:12:49","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$14224_storage_ptr","typeString":"struct IPluginSetup.SetupPayload"}},"visibility":"internal"}],"src":"1605:68:49"},"returnParameters":{"id":11375,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11374,"mutability":"mutable","name":"permissions","nameLocation":"1742:11:49","nodeType":"VariableDeclaration","scope":11391,"src":"1697:56:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission[]"},"typeName":{"baseType":{"id":11372,"nodeType":"UserDefinedTypeName","pathNode":{"id":11371,"name":"PermissionLib.MultiTargetPermission","nameLocations":["1697:13:49","1711:21:49"],"nodeType":"IdentifierPath","referencedDeclaration":13037,"src":"1697:35:49"},"referencedDeclaration":13037,"src":"1697:35:49","typeDescriptions":{"typeIdentifier":"t_struct$_MultiTargetPermission_$13037_storage_ptr","typeString":"struct PermissionLib.MultiTargetPermission"}},"id":11373,"nodeType":"ArrayTypeName","src":"1697:37:49","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_storage_$dyn_storage_ptr","typeString":"struct PermissionLib.MultiTargetPermission[]"}},"visibility":"internal"}],"src":"1696:58:49"},"scope":11392,"src":"1575:299:49","stateMutability":"pure","virtual":false,"visibility":"external"}],"scope":11498,"src":"749:1127:49","usedErrors":[11651,14296]},{"abstract":false,"baseContracts":[{"baseName":{"id":11394,"name":"PluginSetup","nameLocations":["2086:11:49"],"nodeType":"IdentifierPath","referencedDeclaration":14371,"src":"2086:11:49"},"id":11395,"nodeType":"InheritanceSpecifier","src":"2086:11:49"}],"canonicalName":"PluginCloneableSetupMockBuild2","contractDependencies":[11248],"contractKind":"contract","documentation":{"id":11393,"nodeType":"StructuredDocumentation","src":"1878:165:49","text":"@notice A mock plugin setup of a cloneable plugin to be deployed via the minimal proxy pattern.\n v1.2 (Release 1, Build 2)\n @dev DO NOT USE IN PRODUCTION!"},"fullyImplemented":true,"id":11497,"linearizedBaseContracts":[11497,14371,14766,14744,14273,9731,9743],"name":"PluginCloneableSetupMockBuild2","nameLocation":"2052:30:49","nodeType":"ContractDefinition","nodes":[{"global":false,"id":11398,"libraryName":{"id":11396,"name":"ProxyLib","nameLocations":["2110:8:49"],"nodeType":"IdentifierPath","referencedDeclaration":14593,"src":"2110:8:49"},"nodeType":"UsingForDirective","src":"2104:27:49","typeName":{"id":11397,"name":"address","nodeType":"ElementaryTypeName","src":"2123:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},{"constant":true,"id":11401,"mutability":"constant","name":"THIS_BUILD","nameLocation":"2162:10:49","nodeType":"VariableDeclaration","scope":11497,"src":"2137:39:49","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":11399,"name":"uint16","nodeType":"ElementaryTypeName","src":"2137:6:49","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"value":{"hexValue":"32","id":11400,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2175:1:49","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"visibility":"internal"},{"body":{"id":11413,"nodeType":"Block","src":"2251:2:49","statements":[]},"id":11414,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":11408,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"NewExpression","src":"2217:29:49","typeDescriptions":{"typeIdentifier":"t_function_creation_nonpayable$__$returns$_t_contract$_PluginCloneableMockBuild2_$11248_$","typeString":"function () returns (contract PluginCloneableMockBuild2)"},"typeName":{"id":11407,"nodeType":"UserDefinedTypeName","pathNode":{"id":11406,"name":"PluginCloneableMockBuild2","nameLocations":["2221:25:49"],"nodeType":"IdentifierPath","referencedDeclaration":11248,"src":"2221:25:49"},"referencedDeclaration":11248,"src":"2221:25:49","typeDescriptions":{"typeIdentifier":"t_contract$_PluginCloneableMockBuild2_$11248","typeString":"contract PluginCloneableMockBuild2"}}},"id":11409,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2217:31:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_PluginCloneableMockBuild2_$11248","typeString":"contract PluginCloneableMockBuild2"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_PluginCloneableMockBuild2_$11248","typeString":"contract PluginCloneableMockBuild2"}],"id":11405,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2209:7:49","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11404,"name":"address","nodeType":"ElementaryTypeName","src":"2209:7:49","typeDescriptions":{}}},"id":11410,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2209:40:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":11411,"kind":"baseConstructorSpecifier","modifierName":{"id":11403,"name":"PluginSetup","nameLocations":["2197:11:49"],"nodeType":"IdentifierPath","referencedDeclaration":14371,"src":"2197:11:49"},"nodeType":"ModifierInvocation","src":"2197:53:49"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":11402,"nodeType":"ParameterList","parameters":[],"src":"2194:2:49"},"returnParameters":{"id":11412,"nodeType":"ParameterList","parameters":[],"src":"2251:0:49"},"scope":11497,"src":"2183:70:49","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[14237],"body":{"id":11467,"nodeType":"Block","src":"2449:381:49","statements":[{"assignments":[11428],"declarations":[{"constant":false,"id":11428,"mutability":"mutable","name":"initData","nameLocation":"2472:8:49","nodeType":"VariableDeclaration","scope":11467,"src":"2459:21:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":11427,"name":"bytes","nodeType":"ElementaryTypeName","src":"2459:5:49","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":11438,"initialValue":{"arguments":[{"expression":{"id":11431,"name":"PluginCloneableMockBuild2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11248,"src":"2498:25:49","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PluginCloneableMockBuild2_$11248_$","typeString":"type(contract PluginCloneableMockBuild2)"}},"id":11432,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2524:10:49","memberName":"initialize","nodeType":"MemberAccess","referencedDeclaration":11247,"src":"2498:36:49","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_contract$_IDAO_$10865_$returns$__$","typeString":"function PluginCloneableMockBuild2.initialize(contract IDAO)"}},{"components":[{"arguments":[{"id":11434,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11417,"src":"2542:4:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11433,"name":"IDAO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10865,"src":"2537:4:49","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IDAO_$10865_$","typeString":"type(contract IDAO)"}},"id":11435,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2537:10:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}}],"id":11436,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2536:12:49","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_nonpayable$_t_contract$_IDAO_$10865_$returns$__$","typeString":"function PluginCloneableMockBuild2.initialize(contract IDAO)"},{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}],"expression":{"id":11429,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967295,"src":"2483:3:49","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":11430,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2487:10:49","memberName":"encodeCall","nodeType":"MemberAccess","src":"2483:14:49","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":11437,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2483:66:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"2459:90:49"},{"expression":{"id":11445,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11439,"name":"plugin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11422,"src":"2559:6:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":11443,"name":"initData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11428,"src":"2604:8:49","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":11440,"name":"implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14370,"src":"2568:14:49","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":11441,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2568:16:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":11442,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2585:18:49","memberName":"deployMinimalProxy","nodeType":"MemberAccess","referencedDeclaration":14592,"src":"2568:35:49","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_address_$bound_to$_t_address_$","typeString":"function (address,bytes memory) returns (address)"}},"id":11444,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2568:45:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2559:54:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":11446,"nodeType":"ExpressionStatement","src":"2559:54:49"},{"expression":{"id":11453,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":11447,"name":"preparedSetupData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11425,"src":"2623:17:49","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$14216_memory_ptr","typeString":"struct IPluginSetup.PreparedSetupData memory"}},"id":11449,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"2641:7:49","memberName":"helpers","nodeType":"MemberAccess","referencedDeclaration":14211,"src":"2623:25:49","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":11451,"name":"THIS_BUILD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11401,"src":"2663:10:49","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"}],"id":11450,"name":"mockHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11760,"src":"2651:11:49","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$returns$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"function (uint160) pure returns (address[] memory)"}},"id":11452,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2651:23:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"src":"2623:51:49","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":11454,"nodeType":"ExpressionStatement","src":"2623:51:49"},{"expression":{"id":11465,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":11455,"name":"preparedSetupData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11425,"src":"2684:17:49","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$14216_memory_ptr","typeString":"struct IPluginSetup.PreparedSetupData memory"}},"id":11457,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"2702:11:49","memberName":"permissions","nodeType":"MemberAccess","referencedDeclaration":14215,"src":"2684:29:49","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"hexValue":"30","id":11459,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2745:1:49","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":11460,"name":"THIS_BUILD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11401,"src":"2760:10:49","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"expression":{"expression":{"id":11461,"name":"PermissionLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13038,"src":"2784:13:49","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PermissionLib_$13038_$","typeString":"type(library PermissionLib)"}},"id":11462,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2798:9:49","memberName":"Operation","nodeType":"MemberAccess","referencedDeclaration":13017,"src":"2784:23:49","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Operation_$13017_$","typeString":"type(enum PermissionLib.Operation)"}},"id":11463,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2808:5:49","memberName":"Grant","nodeType":"MemberAccess","referencedDeclaration":13014,"src":"2784:29:49","typeDescriptions":{"typeIdentifier":"t_enum$_Operation_$13017","typeString":"enum PermissionLib.Operation"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_enum$_Operation_$13017","typeString":"enum PermissionLib.Operation"}],"id":11458,"name":"mockPermissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11721,"src":"2716:15:49","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_enum$_Operation_$13017_$returns$_t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint160,uint160,enum PermissionLib.Operation) pure returns (struct PermissionLib.MultiTargetPermission memory[] memory)"}},"id":11464,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2716:107:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"src":"2684:139:49","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"id":11466,"nodeType":"ExpressionStatement","src":"2684:139:49"}]},"documentation":{"id":11415,"nodeType":"StructuredDocumentation","src":"2259:28:49","text":"@inheritdoc IPluginSetup"},"functionSelector":"f10832f1","id":11468,"implemented":true,"kind":"function","modifiers":[],"name":"prepareInstallation","nameLocation":"2301:19:49","nodeType":"FunctionDefinition","parameters":{"id":11420,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11417,"mutability":"mutable","name":"_dao","nameLocation":"2338:4:49","nodeType":"VariableDeclaration","scope":11468,"src":"2330:12:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11416,"name":"address","nodeType":"ElementaryTypeName","src":"2330:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11419,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11468,"src":"2352:12:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":11418,"name":"bytes","nodeType":"ElementaryTypeName","src":"2352:5:49","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2320:50:49"},"returnParameters":{"id":11426,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11422,"mutability":"mutable","name":"plugin","nameLocation":"2397:6:49","nodeType":"VariableDeclaration","scope":11468,"src":"2389:14:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11421,"name":"address","nodeType":"ElementaryTypeName","src":"2389:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11425,"mutability":"mutable","name":"preparedSetupData","nameLocation":"2430:17:49","nodeType":"VariableDeclaration","scope":11468,"src":"2405:42:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$14216_memory_ptr","typeString":"struct IPluginSetup.PreparedSetupData"},"typeName":{"id":11424,"nodeType":"UserDefinedTypeName","pathNode":{"id":11423,"name":"PreparedSetupData","nameLocations":["2405:17:49"],"nodeType":"IdentifierPath","referencedDeclaration":14216,"src":"2405:17:49"},"referencedDeclaration":14216,"src":"2405:17:49","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$14216_storage_ptr","typeString":"struct IPluginSetup.PreparedSetupData"}},"visibility":"internal"}],"src":"2388:60:49"},"scope":11497,"src":"2292:538:49","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[14266],"body":{"id":11495,"nodeType":"Block","src":"3049:119:49","statements":[{"expression":{"components":[{"id":11481,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11471,"src":"3060:4:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11482,"name":"_payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11474,"src":"3066:8:49","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$14224_calldata_ptr","typeString":"struct IPluginSetup.SetupPayload calldata"}}],"id":11483,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3059:16:49","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_struct$_SetupPayload_$14224_calldata_ptr_$","typeString":"tuple(address,struct IPluginSetup.SetupPayload calldata)"}},"id":11484,"nodeType":"ExpressionStatement","src":"3059:16:49"},{"expression":{"id":11493,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11485,"name":"permissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11479,"src":"3085:11:49","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"hexValue":"30","id":11487,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3115:1:49","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":11488,"name":"THIS_BUILD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11401,"src":"3118:10:49","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"expression":{"expression":{"id":11489,"name":"PermissionLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13038,"src":"3130:13:49","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PermissionLib_$13038_$","typeString":"type(library PermissionLib)"}},"id":11490,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3144:9:49","memberName":"Operation","nodeType":"MemberAccess","referencedDeclaration":13017,"src":"3130:23:49","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Operation_$13017_$","typeString":"type(enum PermissionLib.Operation)"}},"id":11491,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3154:6:49","memberName":"Revoke","nodeType":"MemberAccess","referencedDeclaration":13015,"src":"3130:30:49","typeDescriptions":{"typeIdentifier":"t_enum$_Operation_$13017","typeString":"enum PermissionLib.Operation"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_enum$_Operation_$13017","typeString":"enum PermissionLib.Operation"}],"id":11486,"name":"mockPermissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11721,"src":"3099:15:49","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_enum$_Operation_$13017_$returns$_t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint160,uint160,enum PermissionLib.Operation) pure returns (struct PermissionLib.MultiTargetPermission memory[] memory)"}},"id":11492,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3099:62:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"src":"3085:76:49","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"id":11494,"nodeType":"ExpressionStatement","src":"3085:76:49"}]},"documentation":{"id":11469,"nodeType":"StructuredDocumentation","src":"2836:28:49","text":"@inheritdoc IPluginSetup"},"functionSelector":"9cb0a124","id":11496,"implemented":true,"kind":"function","modifiers":[],"name":"prepareUninstallation","nameLocation":"2878:21:49","nodeType":"FunctionDefinition","parameters":{"id":11475,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11471,"mutability":"mutable","name":"_dao","nameLocation":"2917:4:49","nodeType":"VariableDeclaration","scope":11496,"src":"2909:12:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11470,"name":"address","nodeType":"ElementaryTypeName","src":"2909:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11474,"mutability":"mutable","name":"_payload","nameLocation":"2953:8:49","nodeType":"VariableDeclaration","scope":11496,"src":"2931:30:49","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$14224_calldata_ptr","typeString":"struct IPluginSetup.SetupPayload"},"typeName":{"id":11473,"nodeType":"UserDefinedTypeName","pathNode":{"id":11472,"name":"SetupPayload","nameLocations":["2931:12:49"],"nodeType":"IdentifierPath","referencedDeclaration":14224,"src":"2931:12:49"},"referencedDeclaration":14224,"src":"2931:12:49","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$14224_storage_ptr","typeString":"struct IPluginSetup.SetupPayload"}},"visibility":"internal"}],"src":"2899:68:49"},"returnParameters":{"id":11480,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11479,"mutability":"mutable","name":"permissions","nameLocation":"3036:11:49","nodeType":"VariableDeclaration","scope":11496,"src":"2991:56:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission[]"},"typeName":{"baseType":{"id":11477,"nodeType":"UserDefinedTypeName","pathNode":{"id":11476,"name":"PermissionLib.MultiTargetPermission","nameLocations":["2991:13:49","3005:21:49"],"nodeType":"IdentifierPath","referencedDeclaration":13037,"src":"2991:35:49"},"referencedDeclaration":13037,"src":"2991:35:49","typeDescriptions":{"typeIdentifier":"t_struct$_MultiTargetPermission_$13037_storage_ptr","typeString":"struct PermissionLib.MultiTargetPermission"}},"id":11478,"nodeType":"ArrayTypeName","src":"2991:37:49","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_storage_$dyn_storage_ptr","typeString":"struct PermissionLib.MultiTargetPermission[]"}},"visibility":"internal"}],"src":"2990:58:49"},"scope":11497,"src":"2869:299:49","stateMutability":"pure","virtual":false,"visibility":"external"}],"scope":11498,"src":"2043:1127:49","usedErrors":[11651,14296]}],"src":"91:3080:49"},"id":49},"src/mocks/plugin/PluginMock.sol":{"ast":{"absolutePath":"src/mocks/plugin/PluginMock.sol","exportedSymbols":{"IDAO":[10865],"Plugin":[13414],"PluginMockBuild1":[11523]},"id":11524,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":11499,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:50"},{"absolutePath":"src/plugin/Plugin.sol","file":"../../plugin/Plugin.sol","id":11501,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":11524,"sourceUnit":13415,"src":"72:47:50","symbolAliases":[{"foreign":{"id":11500,"name":"Plugin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13414,"src":"80:6:50","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/dao/IDAO.sol","file":"../../dao/IDAO.sol","id":11503,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":11524,"sourceUnit":10866,"src":"120:40:50","symbolAliases":[{"foreign":{"id":11502,"name":"IDAO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10865,"src":"128:4:50","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":11505,"name":"Plugin","nameLocations":["320:6:50"],"nodeType":"IdentifierPath","referencedDeclaration":13414,"src":"320:6:50"},"id":11506,"nodeType":"InheritanceSpecifier","src":"320:6:50"}],"canonicalName":"PluginMockBuild1","contractDependencies":[],"contractKind":"contract","documentation":{"id":11504,"nodeType":"StructuredDocumentation","src":"162:129:50","text":"@notice A mock plugin to be deployed via the `new` keyword.\n v1.1 (Release 1, Build 1)\n @dev DO NOT USE IN PRODUCTION!"},"fullyImplemented":true,"id":11523,"linearizedBaseContracts":[11523,13414,14766,14744,13096,9294,9731,9743,13338],"name":"PluginMockBuild1","nameLocation":"300:16:50","nodeType":"ContractDefinition","nodes":[{"constant":false,"functionSelector":"6accab8c","id":11508,"mutability":"mutable","name":"state1","nameLocation":"348:6:50","nodeType":"VariableDeclaration","scope":11523,"src":"333:21:50","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11507,"name":"uint256","nodeType":"ElementaryTypeName","src":"333:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"body":{"id":11521,"nodeType":"Block","src":"397:27:50","statements":[{"expression":{"id":11519,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11517,"name":"state1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11508,"src":"407:6:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"31","id":11518,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"416:1:50","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"407:10:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11520,"nodeType":"ExpressionStatement","src":"407:10:50"}]},"id":11522,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":11514,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11511,"src":"391:4:50","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}}],"id":11515,"kind":"baseConstructorSpecifier","modifierName":{"id":11513,"name":"Plugin","nameLocations":["384:6:50"],"nodeType":"IdentifierPath","referencedDeclaration":13414,"src":"384:6:50"},"nodeType":"ModifierInvocation","src":"384:12:50"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":11512,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11511,"mutability":"mutable","name":"_dao","nameLocation":"378:4:50","nodeType":"VariableDeclaration","scope":11522,"src":"373:9:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"},"typeName":{"id":11510,"nodeType":"UserDefinedTypeName","pathNode":{"id":11509,"name":"IDAO","nameLocations":["373:4:50"],"nodeType":"IdentifierPath","referencedDeclaration":10865,"src":"373:4:50"},"referencedDeclaration":10865,"src":"373:4:50","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}},"visibility":"internal"}],"src":"372:11:50"},"returnParameters":{"id":11516,"nodeType":"ParameterList","parameters":[],"src":"397:0:50"},"scope":11523,"src":"361:63:50","stateMutability":"nonpayable","virtual":false,"visibility":"public"}],"scope":11524,"src":"291:135:50","usedErrors":[]}],"src":"47:380:50"},"id":50},"src/mocks/plugin/PluginSetupMock.sol":{"ast":{"absolutePath":"src/mocks/plugin/PluginSetupMock.sol","exportedSymbols":{"IDAO":[10865],"IPluginSetup":[14273],"PermissionLib":[13038],"PluginMockBuild1":[11523],"PluginSetup":[14371],"PluginSetupMockBuild1":[11639],"mockHelpers":[11760],"mockPermissions":[11721]},"id":11640,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":11525,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"91:23:51"},{"absolutePath":"src/permission/PermissionLib.sol","file":"../../permission/PermissionLib.sol","id":11527,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":11640,"sourceUnit":13039,"src":"116:65:51","symbolAliases":[{"foreign":{"id":11526,"name":"PermissionLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13038,"src":"124:13:51","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/plugin/setup/IPluginSetup.sol","file":"../../plugin/setup/IPluginSetup.sol","id":11529,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":11640,"sourceUnit":14274,"src":"182:65:51","symbolAliases":[{"foreign":{"id":11528,"name":"IPluginSetup","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14273,"src":"190:12:51","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/plugin/setup/PluginSetup.sol","file":"../../plugin/setup/PluginSetup.sol","id":11531,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":11640,"sourceUnit":14372,"src":"248:63:51","symbolAliases":[{"foreign":{"id":11530,"name":"PluginSetup","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14371,"src":"256:11:51","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/dao/IDAO.sol","file":"../../dao/IDAO.sol","id":11533,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":11640,"sourceUnit":10866,"src":"312:40:51","symbolAliases":[{"foreign":{"id":11532,"name":"IDAO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10865,"src":"320:4:51","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/mocks/plugin/PluginSetupMockData.sol","file":"./PluginSetupMockData.sol","id":11536,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":11640,"sourceUnit":11761,"src":"353:71:51","symbolAliases":[{"foreign":{"id":11534,"name":"mockPermissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11721,"src":"361:15:51","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":11535,"name":"mockHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11760,"src":"378:11:51","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/mocks/plugin/PluginMock.sol","file":"./PluginMock.sol","id":11538,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":11640,"sourceUnit":11524,"src":"425:50:51","symbolAliases":[{"foreign":{"id":11537,"name":"PluginMockBuild1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11523,"src":"433:16:51","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":11540,"name":"PluginSetup","nameLocations":["658:11:51"],"nodeType":"IdentifierPath","referencedDeclaration":14371,"src":"658:11:51"},"id":11541,"nodeType":"InheritanceSpecifier","src":"658:11:51"}],"canonicalName":"PluginSetupMockBuild1","contractDependencies":[11523],"contractKind":"contract","documentation":{"id":11539,"nodeType":"StructuredDocumentation","src":"477:147:51","text":"@notice A mock plugin setup of a plugin to be deployed via the `new` keyword.\n v1.1 (Release 1, Build 1)\n @dev DO NOT USE IN PRODUCTION!"},"fullyImplemented":true,"id":11639,"linearizedBaseContracts":[11639,14371,14766,14744,14273,9731,9743],"name":"PluginSetupMockBuild1","nameLocation":"633:21:51","nodeType":"ContractDefinition","nodes":[{"body":{"id":11559,"nodeType":"Block","src":"751:2:51","statements":[]},"id":11560,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"hexValue":"30","id":11552,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"744:1:51","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":11551,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"736:7:51","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11550,"name":"address","nodeType":"ElementaryTypeName","src":"736:7:51","typeDescriptions":{}}},"id":11553,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"736:10:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11549,"name":"IDAO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10865,"src":"731:4:51","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IDAO_$10865_$","typeString":"type(contract IDAO)"}},"id":11554,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"731:16:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}],"id":11548,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"NewExpression","src":"710:20:51","typeDescriptions":{"typeIdentifier":"t_function_creation_nonpayable$_t_contract$_IDAO_$10865_$returns$_t_contract$_PluginMockBuild1_$11523_$","typeString":"function (contract IDAO) returns (contract PluginMockBuild1)"},"typeName":{"id":11547,"nodeType":"UserDefinedTypeName","pathNode":{"id":11546,"name":"PluginMockBuild1","nameLocations":["714:16:51"],"nodeType":"IdentifierPath","referencedDeclaration":11523,"src":"714:16:51"},"referencedDeclaration":11523,"src":"714:16:51","typeDescriptions":{"typeIdentifier":"t_contract$_PluginMockBuild1_$11523","typeString":"contract PluginMockBuild1"}}},"id":11555,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"710:38:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_PluginMockBuild1_$11523","typeString":"contract PluginMockBuild1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_PluginMockBuild1_$11523","typeString":"contract PluginMockBuild1"}],"id":11545,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"702:7:51","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11544,"name":"address","nodeType":"ElementaryTypeName","src":"702:7:51","typeDescriptions":{}}},"id":11556,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"702:47:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":11557,"kind":"baseConstructorSpecifier","modifierName":{"id":11543,"name":"PluginSetup","nameLocations":["690:11:51"],"nodeType":"IdentifierPath","referencedDeclaration":14371,"src":"690:11:51"},"nodeType":"ModifierInvocation","src":"690:60:51"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":11542,"nodeType":"ParameterList","parameters":[],"src":"687:2:51"},"returnParameters":{"id":11558,"nodeType":"ParameterList","parameters":[],"src":"751:0:51"},"scope":11639,"src":"676:77:51","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[14237],"body":{"id":11609,"nodeType":"Block","src":"955:230:51","statements":[{"expression":{"components":[{"id":11573,"name":"_data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11565,"src":"966:5:51","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":11574,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"965:7:51","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":11575,"nodeType":"ExpressionStatement","src":"965:7:51"},{"expression":{"id":11587,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11576,"name":"plugin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11568,"src":"982:6:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"arguments":[{"id":11583,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11563,"src":"1025:4:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11582,"name":"IDAO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10865,"src":"1020:4:51","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IDAO_$10865_$","typeString":"type(contract IDAO)"}},"id":11584,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1020:10:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}],"id":11581,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"NewExpression","src":"999:20:51","typeDescriptions":{"typeIdentifier":"t_function_creation_nonpayable$_t_contract$_IDAO_$10865_$returns$_t_contract$_PluginMockBuild1_$11523_$","typeString":"function (contract IDAO) returns (contract PluginMockBuild1)"},"typeName":{"id":11580,"nodeType":"UserDefinedTypeName","pathNode":{"id":11579,"name":"PluginMockBuild1","nameLocations":["1003:16:51"],"nodeType":"IdentifierPath","referencedDeclaration":11523,"src":"1003:16:51"},"referencedDeclaration":11523,"src":"1003:16:51","typeDescriptions":{"typeIdentifier":"t_contract$_PluginMockBuild1_$11523","typeString":"contract PluginMockBuild1"}}},"id":11585,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"999:32:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_PluginMockBuild1_$11523","typeString":"contract PluginMockBuild1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_PluginMockBuild1_$11523","typeString":"contract PluginMockBuild1"}],"id":11578,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"991:7:51","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11577,"name":"address","nodeType":"ElementaryTypeName","src":"991:7:51","typeDescriptions":{}}},"id":11586,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"991:41:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"982:50:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":11588,"nodeType":"ExpressionStatement","src":"982:50:51"},{"expression":{"id":11595,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":11589,"name":"preparedSetupData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11571,"src":"1042:17:51","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$14216_memory_ptr","typeString":"struct IPluginSetup.PreparedSetupData memory"}},"id":11591,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1060:7:51","memberName":"helpers","nodeType":"MemberAccess","referencedDeclaration":14211,"src":"1042:25:51","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"hexValue":"31","id":11593,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1082:1:51","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":11592,"name":"mockHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11760,"src":"1070:11:51","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$returns$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"function (uint160) pure returns (address[] memory)"}},"id":11594,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1070:14:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"src":"1042:42:51","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":11596,"nodeType":"ExpressionStatement","src":"1042:42:51"},{"expression":{"id":11607,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":11597,"name":"preparedSetupData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11571,"src":"1094:17:51","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$14216_memory_ptr","typeString":"struct IPluginSetup.PreparedSetupData memory"}},"id":11599,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1112:11:51","memberName":"permissions","nodeType":"MemberAccess","referencedDeclaration":14215,"src":"1094:29:51","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"hexValue":"30","id":11601,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1142:1:51","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"31","id":11602,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1145:1:51","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},{"expression":{"expression":{"id":11603,"name":"PermissionLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13038,"src":"1148:13:51","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PermissionLib_$13038_$","typeString":"type(library PermissionLib)"}},"id":11604,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1162:9:51","memberName":"Operation","nodeType":"MemberAccess","referencedDeclaration":13017,"src":"1148:23:51","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Operation_$13017_$","typeString":"type(enum PermissionLib.Operation)"}},"id":11605,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1172:5:51","memberName":"Grant","nodeType":"MemberAccess","referencedDeclaration":13014,"src":"1148:29:51","typeDescriptions":{"typeIdentifier":"t_enum$_Operation_$13017","typeString":"enum PermissionLib.Operation"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},{"typeIdentifier":"t_enum$_Operation_$13017","typeString":"enum PermissionLib.Operation"}],"id":11600,"name":"mockPermissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11721,"src":"1126:15:51","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_enum$_Operation_$13017_$returns$_t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint160,uint160,enum PermissionLib.Operation) pure returns (struct PermissionLib.MultiTargetPermission memory[] memory)"}},"id":11606,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1126:52:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"src":"1094:84:51","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"id":11608,"nodeType":"ExpressionStatement","src":"1094:84:51"}]},"documentation":{"id":11561,"nodeType":"StructuredDocumentation","src":"759:28:51","text":"@inheritdoc IPluginSetup"},"functionSelector":"f10832f1","id":11610,"implemented":true,"kind":"function","modifiers":[],"name":"prepareInstallation","nameLocation":"801:19:51","nodeType":"FunctionDefinition","parameters":{"id":11566,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11563,"mutability":"mutable","name":"_dao","nameLocation":"838:4:51","nodeType":"VariableDeclaration","scope":11610,"src":"830:12:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11562,"name":"address","nodeType":"ElementaryTypeName","src":"830:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11565,"mutability":"mutable","name":"_data","nameLocation":"865:5:51","nodeType":"VariableDeclaration","scope":11610,"src":"852:18:51","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":11564,"name":"bytes","nodeType":"ElementaryTypeName","src":"852:5:51","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"820:56:51"},"returnParameters":{"id":11572,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11568,"mutability":"mutable","name":"plugin","nameLocation":"903:6:51","nodeType":"VariableDeclaration","scope":11610,"src":"895:14:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11567,"name":"address","nodeType":"ElementaryTypeName","src":"895:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11571,"mutability":"mutable","name":"preparedSetupData","nameLocation":"936:17:51","nodeType":"VariableDeclaration","scope":11610,"src":"911:42:51","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$14216_memory_ptr","typeString":"struct IPluginSetup.PreparedSetupData"},"typeName":{"id":11570,"nodeType":"UserDefinedTypeName","pathNode":{"id":11569,"name":"PreparedSetupData","nameLocations":["911:17:51"],"nodeType":"IdentifierPath","referencedDeclaration":14216,"src":"911:17:51"},"referencedDeclaration":14216,"src":"911:17:51","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$14216_storage_ptr","typeString":"struct IPluginSetup.PreparedSetupData"}},"visibility":"internal"}],"src":"894:60:51"},"scope":11639,"src":"792:393:51","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[14266],"body":{"id":11637,"nodeType":"Block","src":"1404:110:51","statements":[{"expression":{"components":[{"id":11623,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11613,"src":"1415:4:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11624,"name":"_payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11616,"src":"1421:8:51","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$14224_calldata_ptr","typeString":"struct IPluginSetup.SetupPayload calldata"}}],"id":11625,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1414:16:51","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_struct$_SetupPayload_$14224_calldata_ptr_$","typeString":"tuple(address,struct IPluginSetup.SetupPayload calldata)"}},"id":11626,"nodeType":"ExpressionStatement","src":"1414:16:51"},{"expression":{"id":11635,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11627,"name":"permissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11621,"src":"1440:11:51","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"hexValue":"30","id":11629,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1470:1:51","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"31","id":11630,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1473:1:51","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},{"expression":{"expression":{"id":11631,"name":"PermissionLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13038,"src":"1476:13:51","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PermissionLib_$13038_$","typeString":"type(library PermissionLib)"}},"id":11632,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1490:9:51","memberName":"Operation","nodeType":"MemberAccess","referencedDeclaration":13017,"src":"1476:23:51","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Operation_$13017_$","typeString":"type(enum PermissionLib.Operation)"}},"id":11633,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1500:6:51","memberName":"Revoke","nodeType":"MemberAccess","referencedDeclaration":13015,"src":"1476:30:51","typeDescriptions":{"typeIdentifier":"t_enum$_Operation_$13017","typeString":"enum PermissionLib.Operation"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},{"typeIdentifier":"t_enum$_Operation_$13017","typeString":"enum PermissionLib.Operation"}],"id":11628,"name":"mockPermissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11721,"src":"1454:15:51","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_enum$_Operation_$13017_$returns$_t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint160,uint160,enum PermissionLib.Operation) pure returns (struct PermissionLib.MultiTargetPermission memory[] memory)"}},"id":11634,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1454:53:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"src":"1440:67:51","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"id":11636,"nodeType":"ExpressionStatement","src":"1440:67:51"}]},"documentation":{"id":11611,"nodeType":"StructuredDocumentation","src":"1191:28:51","text":"@inheritdoc IPluginSetup"},"functionSelector":"9cb0a124","id":11638,"implemented":true,"kind":"function","modifiers":[],"name":"prepareUninstallation","nameLocation":"1233:21:51","nodeType":"FunctionDefinition","parameters":{"id":11617,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11613,"mutability":"mutable","name":"_dao","nameLocation":"1272:4:51","nodeType":"VariableDeclaration","scope":11638,"src":"1264:12:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11612,"name":"address","nodeType":"ElementaryTypeName","src":"1264:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11616,"mutability":"mutable","name":"_payload","nameLocation":"1308:8:51","nodeType":"VariableDeclaration","scope":11638,"src":"1286:30:51","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$14224_calldata_ptr","typeString":"struct IPluginSetup.SetupPayload"},"typeName":{"id":11615,"nodeType":"UserDefinedTypeName","pathNode":{"id":11614,"name":"SetupPayload","nameLocations":["1286:12:51"],"nodeType":"IdentifierPath","referencedDeclaration":14224,"src":"1286:12:51"},"referencedDeclaration":14224,"src":"1286:12:51","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$14224_storage_ptr","typeString":"struct IPluginSetup.SetupPayload"}},"visibility":"internal"}],"src":"1254:68:51"},"returnParameters":{"id":11622,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11621,"mutability":"mutable","name":"permissions","nameLocation":"1391:11:51","nodeType":"VariableDeclaration","scope":11638,"src":"1346:56:51","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission[]"},"typeName":{"baseType":{"id":11619,"nodeType":"UserDefinedTypeName","pathNode":{"id":11618,"name":"PermissionLib.MultiTargetPermission","nameLocations":["1346:13:51","1360:21:51"],"nodeType":"IdentifierPath","referencedDeclaration":13037,"src":"1346:35:51"},"referencedDeclaration":13037,"src":"1346:35:51","typeDescriptions":{"typeIdentifier":"t_struct$_MultiTargetPermission_$13037_storage_ptr","typeString":"struct PermissionLib.MultiTargetPermission"}},"id":11620,"nodeType":"ArrayTypeName","src":"1346:37:51","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_storage_$dyn_storage_ptr","typeString":"struct PermissionLib.MultiTargetPermission[]"}},"visibility":"internal"}],"src":"1345:58:51"},"scope":11639,"src":"1224:290:51","stateMutability":"pure","virtual":false,"visibility":"external"}],"scope":11640,"src":"624:892:51","usedErrors":[11651,14296]}],"src":"91:1426:51"},"id":51},"src/mocks/plugin/PluginSetupMockData.sol":{"ast":{"absolutePath":"src/mocks/plugin/PluginSetupMockData.sol","exportedSymbols":{"ConflictingValues":[11651],"NO_CONDITION":[11649],"PermissionLib":[13038],"mockHelpers":[11760],"mockPermissions":[11721]},"id":11761,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":11641,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:52"},{"absolutePath":"src/permission/PermissionLib.sol","file":"../../permission/PermissionLib.sol","id":11643,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":11761,"sourceUnit":13039,"src":"72:65:52","symbolAliases":[{"foreign":{"id":11642,"name":"PermissionLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13038,"src":"80:13:52","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"constant":true,"id":11649,"mutability":"constant","name":"NO_CONDITION","nameLocation":"156:12:52","nodeType":"VariableDeclaration","scope":11761,"src":"139:42:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11644,"name":"address","nodeType":"ElementaryTypeName","src":"139:7:52","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":{"arguments":[{"hexValue":"30","id":11647,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"179:1:52","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":11646,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"171:7:52","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11645,"name":"address","nodeType":"ElementaryTypeName","src":"171:7:52","typeDescriptions":{}}},"id":11648,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"171:10:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"errorSelector":"e9004f34","id":11651,"name":"ConflictingValues","nameLocation":"190:17:52","nodeType":"ErrorDefinition","parameters":{"id":11650,"nodeType":"ParameterList","parameters":[],"src":"207:2:52"},"src":"184:26:52"},{"body":{"id":11720,"nodeType":"Block","src":"757:489:52","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":11668,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11666,"name":"rangeStart","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11654,"src":"767:10:52","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":11667,"name":"rangeEnd","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11656,"src":"780:8:52","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"767:21:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11672,"nodeType":"IfStatement","src":"763:53:52","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":11669,"name":"ConflictingValues","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11651,"src":"797:17:52","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":11670,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"797:19:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11671,"nodeType":"RevertStatement","src":"790:26:52"}},{"expression":{"id":11682,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11673,"name":"permissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11664,"src":"823:11:52","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":11680,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11678,"name":"rangeEnd","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11656,"src":"879:8:52","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":11679,"name":"rangeStart","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11654,"src":"890:10:52","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"879:21:52","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":11677,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"837:41:52","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (struct PermissionLib.MultiTargetPermission memory[] memory)"},"typeName":{"baseType":{"id":11675,"nodeType":"UserDefinedTypeName","pathNode":{"id":11674,"name":"PermissionLib.MultiTargetPermission","nameLocations":["841:13:52","855:21:52"],"nodeType":"IdentifierPath","referencedDeclaration":13037,"src":"841:35:52"},"referencedDeclaration":13037,"src":"841:35:52","typeDescriptions":{"typeIdentifier":"t_struct$_MultiTargetPermission_$13037_storage_ptr","typeString":"struct PermissionLib.MultiTargetPermission"}},"id":11676,"nodeType":"ArrayTypeName","src":"841:37:52","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_storage_$dyn_storage_ptr","typeString":"struct PermissionLib.MultiTargetPermission[]"}}},"id":11681,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"837:64:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"src":"823:78:52","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"id":11683,"nodeType":"ExpressionStatement","src":"823:78:52"},{"body":{"id":11718,"nodeType":"Block","src":"956:288:52","statements":[{"expression":{"id":11716,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":11694,"name":"permissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11664,"src":"966:11:52","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"id":11698,"indexExpression":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":11697,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11695,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11685,"src":"978:1:52","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":11696,"name":"rangeStart","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11654,"src":"982:10:52","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"978:14:52","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"966:27:52","typeDescriptions":{"typeIdentifier":"t_struct$_MultiTargetPermission_$13037_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":11701,"name":"op","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11659,"src":"1057:2:52","typeDescriptions":{"typeIdentifier":"t_enum$_Operation_$13017","typeString":"enum PermissionLib.Operation"}},{"arguments":[{"id":11704,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11685,"src":"1088:1:52","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":11703,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1080:7:52","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11702,"name":"address","nodeType":"ElementaryTypeName","src":"1080:7:52","typeDescriptions":{}}},"id":11705,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1080:10:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":11708,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11685,"src":"1117:1:52","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":11707,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1109:7:52","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11706,"name":"address","nodeType":"ElementaryTypeName","src":"1109:7:52","typeDescriptions":{}}},"id":11709,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1109:10:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":11710,"name":"PermissionLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13038,"src":"1144:13:52","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PermissionLib_$13038_$","typeString":"type(library PermissionLib)"}},"id":11711,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1158:12:52","memberName":"NO_CONDITION","nodeType":"MemberAccess","referencedDeclaration":13013,"src":"1144:26:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"4d4f434b5f5045524d495353494f4e","id":11713,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1208:17:52","typeDescriptions":{"typeIdentifier":"t_stringliteral_a280eec51ab8e1bc4b6b0c1b7f1bde785761b787a49db404e3e9338ed9b016ef","typeString":"literal_string \"MOCK_PERMISSION\""},"value":"MOCK_PERMISSION"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_a280eec51ab8e1bc4b6b0c1b7f1bde785761b787a49db404e3e9338ed9b016ef","typeString":"literal_string \"MOCK_PERMISSION\""}],"id":11712,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967288,"src":"1198:9:52","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":11714,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1198:28:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Operation_$13017","typeString":"enum PermissionLib.Operation"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":11699,"name":"PermissionLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13038,"src":"996:13:52","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PermissionLib_$13038_$","typeString":"type(library PermissionLib)"}},"id":11700,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1010:21:52","memberName":"MultiTargetPermission","nodeType":"MemberAccess","referencedDeclaration":13037,"src":"996:35:52","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_MultiTargetPermission_$13037_storage_ptr_$","typeString":"type(struct PermissionLib.MultiTargetPermission storage pointer)"}},"id":11715,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["1046:9:52","1073:5:52","1104:3:52","1133:9:52","1184:12:52"],"names":["operation","where","who","condition","permissionId"],"nodeType":"FunctionCall","src":"996:241:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_MultiTargetPermission_$13037_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory"}},"src":"966:271:52","typeDescriptions":{"typeIdentifier":"t_struct$_MultiTargetPermission_$13037_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory"}},"id":11717,"nodeType":"ExpressionStatement","src":"966:271:52"}]},"condition":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":11690,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11688,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11685,"src":"937:1:52","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":11689,"name":"rangeEnd","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11656,"src":"941:8:52","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"937:12:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11719,"initializationExpression":{"assignments":[11685],"declarations":[{"constant":false,"id":11685,"mutability":"mutable","name":"i","nameLocation":"921:1:52","nodeType":"VariableDeclaration","scope":11719,"src":"913:9:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":11684,"name":"uint160","nodeType":"ElementaryTypeName","src":"913:7:52","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"id":11687,"initialValue":{"id":11686,"name":"rangeStart","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11654,"src":"925:10:52","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"VariableDeclarationStatement","src":"913:22:52"},"loopExpression":{"expression":{"id":11692,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"951:3:52","subExpression":{"id":11691,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11685,"src":"951:1:52","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"id":11693,"nodeType":"ExpressionStatement","src":"951:3:52"},"nodeType":"ForStatement","src":"908:336:52"}]},"documentation":{"id":11652,"nodeType":"StructuredDocumentation","src":"212:368:52","text":"@notice Creates a mock `MultiTargetPermission` array by converting a range of `uint160` values into `address` values.\n @param rangeStart The start of the range.\n @param rangeEnd The end of the range (that is not included).\n @param op The permission operation type.\n @return permissions The mock array of permissions.\n @dev DO NOT USE IN PRODUCTION!"},"id":11721,"implemented":true,"kind":"freeFunction","modifiers":[],"name":"mockPermissions","nameLocation":"589:15:52","nodeType":"FunctionDefinition","parameters":{"id":11660,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11654,"mutability":"mutable","name":"rangeStart","nameLocation":"618:10:52","nodeType":"VariableDeclaration","scope":11721,"src":"610:18:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":11653,"name":"uint160","nodeType":"ElementaryTypeName","src":"610:7:52","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":11656,"mutability":"mutable","name":"rangeEnd","nameLocation":"642:8:52","nodeType":"VariableDeclaration","scope":11721,"src":"634:16:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":11655,"name":"uint160","nodeType":"ElementaryTypeName","src":"634:7:52","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":11659,"mutability":"mutable","name":"op","nameLocation":"680:2:52","nodeType":"VariableDeclaration","scope":11721,"src":"656:26:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Operation_$13017","typeString":"enum PermissionLib.Operation"},"typeName":{"id":11658,"nodeType":"UserDefinedTypeName","pathNode":{"id":11657,"name":"PermissionLib.Operation","nameLocations":["656:13:52","670:9:52"],"nodeType":"IdentifierPath","referencedDeclaration":13017,"src":"656:23:52"},"referencedDeclaration":13017,"src":"656:23:52","typeDescriptions":{"typeIdentifier":"t_enum$_Operation_$13017","typeString":"enum PermissionLib.Operation"}},"visibility":"internal"}],"src":"604:80:52"},"returnParameters":{"id":11665,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11664,"mutability":"mutable","name":"permissions","nameLocation":"744:11:52","nodeType":"VariableDeclaration","scope":11721,"src":"699:56:52","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission[]"},"typeName":{"baseType":{"id":11662,"nodeType":"UserDefinedTypeName","pathNode":{"id":11661,"name":"PermissionLib.MultiTargetPermission","nameLocations":["699:13:52","713:21:52"],"nodeType":"IdentifierPath","referencedDeclaration":13037,"src":"699:35:52"},"referencedDeclaration":13037,"src":"699:35:52","typeDescriptions":{"typeIdentifier":"t_struct$_MultiTargetPermission_$13037_storage_ptr","typeString":"struct PermissionLib.MultiTargetPermission"}},"id":11663,"nodeType":"ArrayTypeName","src":"699:37:52","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_storage_$dyn_storage_ptr","typeString":"struct PermissionLib.MultiTargetPermission[]"}},"visibility":"internal"}],"src":"698:58:52"},"scope":11761,"src":"580:666:52","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":11759,"nodeType":"Block","src":"1603:117:52","statements":[{"expression":{"id":11736,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11730,"name":"helpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11728,"src":"1609:7:52","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":11734,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11724,"src":"1633:3:52","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":11733,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"1619:13:52","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (address[] memory)"},"typeName":{"baseType":{"id":11731,"name":"address","nodeType":"ElementaryTypeName","src":"1623:7:52","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":11732,"nodeType":"ArrayTypeName","src":"1623:9:52","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}}},"id":11735,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1619:18:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"src":"1609:28:52","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":11737,"nodeType":"ExpressionStatement","src":"1609:28:52"},{"body":{"id":11757,"nodeType":"Block","src":"1678:40:52","statements":[{"expression":{"id":11755,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":11748,"name":"helpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11728,"src":"1688:7:52","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":11750,"indexExpression":{"id":11749,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11739,"src":"1696:1:52","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1688:10:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":11753,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11739,"src":"1709:1:52","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":11752,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1701:7:52","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11751,"name":"address","nodeType":"ElementaryTypeName","src":"1701:7:52","typeDescriptions":{}}},"id":11754,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1701:10:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1688:23:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":11756,"nodeType":"ExpressionStatement","src":"1688:23:52"}]},"condition":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":11744,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11742,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11739,"src":"1664:1:52","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":11743,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11724,"src":"1668:3:52","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"1664:7:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11758,"initializationExpression":{"assignments":[11739],"declarations":[{"constant":false,"id":11739,"mutability":"mutable","name":"i","nameLocation":"1657:1:52","nodeType":"VariableDeclaration","scope":11758,"src":"1649:9:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":11738,"name":"uint160","nodeType":"ElementaryTypeName","src":"1649:7:52","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"id":11741,"initialValue":{"hexValue":"30","id":11740,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1661:1:52","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"1649:13:52"},"loopExpression":{"expression":{"id":11746,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"1673:3:52","subExpression":{"id":11745,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11739,"src":"1673:1:52","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"id":11747,"nodeType":"ExpressionStatement","src":"1673:3:52"},"nodeType":"ForStatement","src":"1644:74:52"}]},"documentation":{"id":11722,"nodeType":"StructuredDocumentation","src":"1248:281:52","text":"@notice Creates a mock array of helper addresses of specified length by converting `uint160` values starting from 0 into `address` values.\n @param len The length of the helper array.\n @return helpers The mock array of helper addresses.\n @dev DO NOT USE IN PRODUCTION!"},"id":11760,"implemented":true,"kind":"freeFunction","modifiers":[],"name":"mockHelpers","nameLocation":"1538:11:52","nodeType":"FunctionDefinition","parameters":{"id":11725,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11724,"mutability":"mutable","name":"len","nameLocation":"1558:3:52","nodeType":"VariableDeclaration","scope":11760,"src":"1550:11:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":11723,"name":"uint160","nodeType":"ElementaryTypeName","src":"1550:7:52","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"1549:13:52"},"returnParameters":{"id":11729,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11728,"mutability":"mutable","name":"helpers","nameLocation":"1594:7:52","nodeType":"VariableDeclaration","scope":11760,"src":"1577:24:52","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":11726,"name":"address","nodeType":"ElementaryTypeName","src":"1577:7:52","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":11727,"nodeType":"ArrayTypeName","src":"1577:9:52","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"1576:26:52"},"scope":11761,"src":"1529:191:52","stateMutability":"pure","virtual":false,"visibility":"internal"}],"src":"47:1674:52"},"id":52},"src/mocks/plugin/PluginUUPSUpgradeableMock.sol":{"ast":{"absolutePath":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol","exportedSymbols":{"IDAO":[10865],"PluginUUPSUpgradeable":[13633],"PluginUUPSUpgradeableMockBad":[11921],"PluginUUPSUpgradeableMockBuild1":[11789],"PluginUUPSUpgradeableMockBuild2":[11837],"PluginUUPSUpgradeableMockBuild3":[11900]},"id":11922,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":11762,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"91:23:53"},{"absolutePath":"src/plugin/PluginUUPSUpgradeable.sol","file":"../../plugin/PluginUUPSUpgradeable.sol","id":11764,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":11922,"sourceUnit":13634,"src":"116:77:53","symbolAliases":[{"foreign":{"id":11763,"name":"PluginUUPSUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13633,"src":"124:21:53","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/dao/IDAO.sol","file":"../../dao/IDAO.sol","id":11766,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":11922,"sourceUnit":10866,"src":"194:40:53","symbolAliases":[{"foreign":{"id":11765,"name":"IDAO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10865,"src":"202:4:53","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":11768,"name":"PluginUUPSUpgradeable","nameLocations":["426:21:53"],"nodeType":"IdentifierPath","referencedDeclaration":13633,"src":"426:21:53"},"id":11769,"nodeType":"InheritanceSpecifier","src":"426:21:53"}],"canonicalName":"PluginUUPSUpgradeableMockBuild1","contractDependencies":[],"contractKind":"contract","documentation":{"id":11767,"nodeType":"StructuredDocumentation","src":"236:146:53","text":"@notice A mock upgradeable plugin to be deployed via the UUPS proxy pattern.\n v1.1 (Release 1, Build 1)\n @dev DO NOT USE IN PRODUCTION!"},"fullyImplemented":true,"id":11789,"linearizedBaseContracts":[11789,13633,14766,14744,13161,2593,671,355,20,30,2822,2834,534,13338],"name":"PluginUUPSUpgradeableMockBuild1","nameLocation":"391:31:53","nodeType":"ContractDefinition","nodes":[{"constant":false,"functionSelector":"6accab8c","id":11771,"mutability":"mutable","name":"state1","nameLocation":"469:6:53","nodeType":"VariableDeclaration","scope":11789,"src":"454:21:53","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11770,"name":"uint256","nodeType":"ElementaryTypeName","src":"454:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"body":{"id":11787,"nodeType":"Block","src":"534:71:53","statements":[{"expression":{"arguments":[{"id":11780,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11774,"src":"573:4:53","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}],"id":11779,"name":"__PluginUUPSUpgradeable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13570,"src":"544:28:53","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IDAO_$10865_$returns$__$","typeString":"function (contract IDAO)"}},"id":11781,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"544:34:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11782,"nodeType":"ExpressionStatement","src":"544:34:53"},{"expression":{"id":11785,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11783,"name":"state1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11771,"src":"588:6:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"31","id":11784,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"597:1:53","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"588:10:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11786,"nodeType":"ExpressionStatement","src":"588:10:53"}]},"functionSelector":"c4d66de8","id":11788,"implemented":true,"kind":"function","modifiers":[{"id":11777,"kind":"modifierInvocation","modifierName":{"id":11776,"name":"initializer","nameLocations":["522:11:53"],"nodeType":"IdentifierPath","referencedDeclaration":436,"src":"522:11:53"},"nodeType":"ModifierInvocation","src":"522:11:53"}],"name":"initialize","nameLocation":"491:10:53","nodeType":"FunctionDefinition","parameters":{"id":11775,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11774,"mutability":"mutable","name":"_dao","nameLocation":"507:4:53","nodeType":"VariableDeclaration","scope":11788,"src":"502:9:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"},"typeName":{"id":11773,"nodeType":"UserDefinedTypeName","pathNode":{"id":11772,"name":"IDAO","nameLocations":["502:4:53"],"nodeType":"IdentifierPath","referencedDeclaration":10865,"src":"502:4:53"},"referencedDeclaration":10865,"src":"502:4:53","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}},"visibility":"internal"}],"src":"501:11:53"},"returnParameters":{"id":11778,"nodeType":"ParameterList","parameters":[],"src":"534:0:53"},"scope":11789,"src":"482:123:53","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":11922,"src":"382:225:53","usedErrors":[13176]},{"abstract":false,"baseContracts":[{"baseName":{"id":11791,"name":"PluginUUPSUpgradeable","nameLocations":["799:21:53"],"nodeType":"IdentifierPath","referencedDeclaration":13633,"src":"799:21:53"},"id":11792,"nodeType":"InheritanceSpecifier","src":"799:21:53"}],"canonicalName":"PluginUUPSUpgradeableMockBuild2","contractDependencies":[],"contractKind":"contract","documentation":{"id":11790,"nodeType":"StructuredDocumentation","src":"609:146:53","text":"@notice A mock upgradeable plugin to be deployed via the UUPS proxy pattern.\n v1.1 (Release 1, Build 2)\n @dev DO NOT USE IN PRODUCTION!"},"fullyImplemented":true,"id":11837,"linearizedBaseContracts":[11837,13633,14766,14744,13161,2593,671,355,20,30,2822,2834,534,13338],"name":"PluginUUPSUpgradeableMockBuild2","nameLocation":"764:31:53","nodeType":"ContractDefinition","nodes":[{"constant":false,"functionSelector":"6accab8c","id":11794,"mutability":"mutable","name":"state1","nameLocation":"842:6:53","nodeType":"VariableDeclaration","scope":11837,"src":"827:21:53","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11793,"name":"uint256","nodeType":"ElementaryTypeName","src":"827:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"constant":false,"functionSelector":"efe51cca","id":11796,"mutability":"mutable","name":"state2","nameLocation":"869:6:53","nodeType":"VariableDeclaration","scope":11837,"src":"854:21:53","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11795,"name":"uint256","nodeType":"ElementaryTypeName","src":"854:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"body":{"id":11817,"nodeType":"Block","src":"939:91:53","statements":[{"expression":{"arguments":[{"id":11806,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11799,"src":"978:4:53","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}],"id":11805,"name":"__PluginUUPSUpgradeable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13570,"src":"949:28:53","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IDAO_$10865_$returns$__$","typeString":"function (contract IDAO)"}},"id":11807,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"949:34:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11808,"nodeType":"ExpressionStatement","src":"949:34:53"},{"expression":{"id":11811,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11809,"name":"state1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11794,"src":"993:6:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"31","id":11810,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1002:1:53","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"993:10:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11812,"nodeType":"ExpressionStatement","src":"993:10:53"},{"expression":{"id":11815,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11813,"name":"state2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11796,"src":"1013:6:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"32","id":11814,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1022:1:53","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"1013:10:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11816,"nodeType":"ExpressionStatement","src":"1013:10:53"}]},"functionSelector":"c4d66de8","id":11818,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"hexValue":"32","id":11802,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"936:1:53","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"}],"id":11803,"kind":"modifierInvocation","modifierName":{"id":11801,"name":"reinitializer","nameLocations":["922:13:53"],"nodeType":"IdentifierPath","referencedDeclaration":469,"src":"922:13:53"},"nodeType":"ModifierInvocation","src":"922:16:53"}],"name":"initialize","nameLocation":"891:10:53","nodeType":"FunctionDefinition","parameters":{"id":11800,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11799,"mutability":"mutable","name":"_dao","nameLocation":"907:4:53","nodeType":"VariableDeclaration","scope":11818,"src":"902:9:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"},"typeName":{"id":11798,"nodeType":"UserDefinedTypeName","pathNode":{"id":11797,"name":"IDAO","nameLocations":["902:4:53"],"nodeType":"IdentifierPath","referencedDeclaration":10865,"src":"902:4:53"},"referencedDeclaration":10865,"src":"902:4:53","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}},"visibility":"internal"}],"src":"901:11:53"},"returnParameters":{"id":11804,"nodeType":"ParameterList","parameters":[],"src":"939:0:53"},"scope":11837,"src":"882:148:53","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":11835,"nodeType":"Block","src":"1109:75:53","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"id":11828,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11826,"name":"_previousBuild","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11820,"src":"1123:14:53","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"32","id":11827,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1140:1:53","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"1123:18:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11834,"nodeType":"IfStatement","src":"1119:59:53","trueBody":{"id":11833,"nodeType":"Block","src":"1143:35:53","statements":[{"expression":{"id":11831,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11829,"name":"state2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11796,"src":"1157:6:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"32","id":11830,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1166:1:53","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"1157:10:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11832,"nodeType":"ExpressionStatement","src":"1157:10:53"}]}}]},"functionSelector":"039a8c50","id":11836,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"hexValue":"32","id":11823,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1106:1:53","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"}],"id":11824,"kind":"modifierInvocation","modifierName":{"id":11822,"name":"reinitializer","nameLocations":["1092:13:53"],"nodeType":"IdentifierPath","referencedDeclaration":469,"src":"1092:13:53"},"nodeType":"ModifierInvocation","src":"1092:16:53"}],"name":"initializeFrom","nameLocation":"1045:14:53","nodeType":"FunctionDefinition","parameters":{"id":11821,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11820,"mutability":"mutable","name":"_previousBuild","nameLocation":"1067:14:53","nodeType":"VariableDeclaration","scope":11836,"src":"1060:21:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":11819,"name":"uint16","nodeType":"ElementaryTypeName","src":"1060:6:53","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"1059:23:53"},"returnParameters":{"id":11825,"nodeType":"ParameterList","parameters":[],"src":"1109:0:53"},"scope":11837,"src":"1036:148:53","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":11922,"src":"755:431:53","usedErrors":[13176]},{"abstract":false,"baseContracts":[{"baseName":{"id":11839,"name":"PluginUUPSUpgradeable","nameLocations":["1378:21:53"],"nodeType":"IdentifierPath","referencedDeclaration":13633,"src":"1378:21:53"},"id":11840,"nodeType":"InheritanceSpecifier","src":"1378:21:53"}],"canonicalName":"PluginUUPSUpgradeableMockBuild3","contractDependencies":[],"contractKind":"contract","documentation":{"id":11838,"nodeType":"StructuredDocumentation","src":"1188:146:53","text":"@notice A mock upgradeable plugin to be deployed via the UUPS proxy pattern.\n v1.1 (Release 1, Build 3)\n @dev DO NOT USE IN PRODUCTION!"},"fullyImplemented":true,"id":11900,"linearizedBaseContracts":[11900,13633,14766,14744,13161,2593,671,355,20,30,2822,2834,534,13338],"name":"PluginUUPSUpgradeableMockBuild3","nameLocation":"1343:31:53","nodeType":"ContractDefinition","nodes":[{"constant":false,"functionSelector":"6accab8c","id":11842,"mutability":"mutable","name":"state1","nameLocation":"1421:6:53","nodeType":"VariableDeclaration","scope":11900,"src":"1406:21:53","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11841,"name":"uint256","nodeType":"ElementaryTypeName","src":"1406:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"constant":false,"functionSelector":"efe51cca","id":11844,"mutability":"mutable","name":"state2","nameLocation":"1448:6:53","nodeType":"VariableDeclaration","scope":11900,"src":"1433:21:53","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11843,"name":"uint256","nodeType":"ElementaryTypeName","src":"1433:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"constant":false,"functionSelector":"2491118d","id":11846,"mutability":"mutable","name":"state3","nameLocation":"1475:6:53","nodeType":"VariableDeclaration","scope":11900,"src":"1460:21:53","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11845,"name":"uint256","nodeType":"ElementaryTypeName","src":"1460:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"body":{"id":11871,"nodeType":"Block","src":"1545:111:53","statements":[{"expression":{"arguments":[{"id":11856,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11849,"src":"1584:4:53","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}],"id":11855,"name":"__PluginUUPSUpgradeable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13570,"src":"1555:28:53","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IDAO_$10865_$returns$__$","typeString":"function (contract IDAO)"}},"id":11857,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1555:34:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11858,"nodeType":"ExpressionStatement","src":"1555:34:53"},{"expression":{"id":11861,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11859,"name":"state1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11842,"src":"1599:6:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"31","id":11860,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1608:1:53","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1599:10:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11862,"nodeType":"ExpressionStatement","src":"1599:10:53"},{"expression":{"id":11865,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11863,"name":"state2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11844,"src":"1619:6:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"32","id":11864,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1628:1:53","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"1619:10:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11866,"nodeType":"ExpressionStatement","src":"1619:10:53"},{"expression":{"id":11869,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11867,"name":"state3","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11846,"src":"1639:6:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"33","id":11868,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1648:1:53","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"1639:10:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11870,"nodeType":"ExpressionStatement","src":"1639:10:53"}]},"functionSelector":"c4d66de8","id":11872,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"hexValue":"33","id":11852,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1542:1:53","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"}],"id":11853,"kind":"modifierInvocation","modifierName":{"id":11851,"name":"reinitializer","nameLocations":["1528:13:53"],"nodeType":"IdentifierPath","referencedDeclaration":469,"src":"1528:13:53"},"nodeType":"ModifierInvocation","src":"1528:16:53"}],"name":"initialize","nameLocation":"1497:10:53","nodeType":"FunctionDefinition","parameters":{"id":11850,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11849,"mutability":"mutable","name":"_dao","nameLocation":"1513:4:53","nodeType":"VariableDeclaration","scope":11872,"src":"1508:9:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"},"typeName":{"id":11848,"nodeType":"UserDefinedTypeName","pathNode":{"id":11847,"name":"IDAO","nameLocations":["1508:4:53"],"nodeType":"IdentifierPath","referencedDeclaration":10865,"src":"1508:4:53"},"referencedDeclaration":10865,"src":"1508:4:53","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}},"visibility":"internal"}],"src":"1507:11:53"},"returnParameters":{"id":11854,"nodeType":"ParameterList","parameters":[],"src":"1545:0:53"},"scope":11900,"src":"1488:168:53","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":11898,"nodeType":"Block","src":"1735:143:53","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"id":11882,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11880,"name":"_previousBuild","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11874,"src":"1749:14:53","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"32","id":11881,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1766:1:53","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"1749:18:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11888,"nodeType":"IfStatement","src":"1745:59:53","trueBody":{"id":11887,"nodeType":"Block","src":"1769:35:53","statements":[{"expression":{"id":11885,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11883,"name":"state2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11844,"src":"1783:6:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"32","id":11884,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1792:1:53","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"1783:10:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11886,"nodeType":"ExpressionStatement","src":"1783:10:53"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"id":11891,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11889,"name":"_previousBuild","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11874,"src":"1817:14:53","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"33","id":11890,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1834:1:53","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"1817:18:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11897,"nodeType":"IfStatement","src":"1813:59:53","trueBody":{"id":11896,"nodeType":"Block","src":"1837:35:53","statements":[{"expression":{"id":11894,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11892,"name":"state3","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11846,"src":"1851:6:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"33","id":11893,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1860:1:53","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"1851:10:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11895,"nodeType":"ExpressionStatement","src":"1851:10:53"}]}}]},"functionSelector":"039a8c50","id":11899,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"hexValue":"33","id":11877,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1732:1:53","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"}],"id":11878,"kind":"modifierInvocation","modifierName":{"id":11876,"name":"reinitializer","nameLocations":["1718:13:53"],"nodeType":"IdentifierPath","referencedDeclaration":469,"src":"1718:13:53"},"nodeType":"ModifierInvocation","src":"1718:16:53"}],"name":"initializeFrom","nameLocation":"1671:14:53","nodeType":"FunctionDefinition","parameters":{"id":11875,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11874,"mutability":"mutable","name":"_previousBuild","nameLocation":"1693:14:53","nodeType":"VariableDeclaration","scope":11899,"src":"1686:21:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":11873,"name":"uint16","nodeType":"ElementaryTypeName","src":"1686:6:53","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"1685:23:53"},"returnParameters":{"id":11879,"nodeType":"ParameterList","parameters":[],"src":"1735:0:53"},"scope":11900,"src":"1662:216:53","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":11922,"src":"1334:546:53","usedErrors":[13176]},{"abstract":false,"baseContracts":[{"baseName":{"id":11902,"name":"PluginUUPSUpgradeable","nameLocations":["2029:21:53"],"nodeType":"IdentifierPath","referencedDeclaration":13633,"src":"2029:21:53"},"id":11903,"nodeType":"InheritanceSpecifier","src":"2029:21:53"}],"canonicalName":"PluginUUPSUpgradeableMockBad","contractDependencies":[],"contractKind":"contract","documentation":{"id":11901,"nodeType":"StructuredDocumentation","src":"1882:106:53","text":"@notice A mock upgradeable plugin missing an initializer function.\n @dev DO NOT USE IN PRODUCTION!"},"fullyImplemented":true,"id":11921,"linearizedBaseContracts":[11921,13633,14766,14744,13161,2593,671,355,20,30,2822,2834,534,13338],"name":"PluginUUPSUpgradeableMockBad","nameLocation":"1997:28:53","nodeType":"ContractDefinition","nodes":[{"constant":false,"functionSelector":"6accab8c","id":11905,"mutability":"mutable","name":"state1","nameLocation":"2072:6:53","nodeType":"VariableDeclaration","scope":11921,"src":"2057:21:53","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11904,"name":"uint256","nodeType":"ElementaryTypeName","src":"2057:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"body":{"id":11919,"nodeType":"Block","src":"2131:71:53","statements":[{"expression":{"arguments":[{"id":11912,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11908,"src":"2170:4:53","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}],"id":11911,"name":"__PluginUUPSUpgradeable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13570,"src":"2141:28:53","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IDAO_$10865_$returns$__$","typeString":"function (contract IDAO)"}},"id":11913,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2141:34:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11914,"nodeType":"ExpressionStatement","src":"2141:34:53"},{"expression":{"id":11917,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11915,"name":"state1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11905,"src":"2185:6:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"31","id":11916,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2194:1:53","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2185:10:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11918,"nodeType":"ExpressionStatement","src":"2185:10:53"}]},"functionSelector":"8883bbd7","id":11920,"implemented":true,"kind":"function","modifiers":[],"name":"notAnInitializer","nameLocation":"2094:16:53","nodeType":"FunctionDefinition","parameters":{"id":11909,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11908,"mutability":"mutable","name":"_dao","nameLocation":"2116:4:53","nodeType":"VariableDeclaration","scope":11920,"src":"2111:9:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"},"typeName":{"id":11907,"nodeType":"UserDefinedTypeName","pathNode":{"id":11906,"name":"IDAO","nameLocations":["2111:4:53"],"nodeType":"IdentifierPath","referencedDeclaration":10865,"src":"2111:4:53"},"referencedDeclaration":10865,"src":"2111:4:53","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}},"visibility":"internal"}],"src":"2110:11:53"},"returnParameters":{"id":11910,"nodeType":"ParameterList","parameters":[],"src":"2131:0:53"},"scope":11921,"src":"2085:117:53","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":11922,"src":"1988:216:53","usedErrors":[13176]}],"src":"91:2114:53"},"id":53},"src/mocks/plugin/PluginUUPSUpgradeableSetupMock.sol":{"ast":{"absolutePath":"src/mocks/plugin/PluginUUPSUpgradeableSetupMock.sol","exportedSymbols":{"IDAO":[10865],"IPluginSetup":[14273],"PermissionLib":[13038],"PluginUUPSUpgradeableMockBuild1":[11789],"PluginUUPSUpgradeableMockBuild2":[11837],"PluginUUPSUpgradeableMockBuild3":[11900],"PluginUUPSUpgradeableSetupMockBuild1":[12072],"PluginUUPSUpgradeableSetupMockBuild2":[12234],"PluginUUPSUpgradeableSetupMockBuild3":[12431],"PluginUpgradeableSetup":[14448],"ProxyLib":[14593],"mockHelpers":[11760],"mockPermissions":[11721]},"id":12432,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":11923,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"91:23:54"},{"absolutePath":"src/permission/PermissionLib.sol","file":"../../permission/PermissionLib.sol","id":11925,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":12432,"sourceUnit":13039,"src":"116:65:54","symbolAliases":[{"foreign":{"id":11924,"name":"PermissionLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13038,"src":"124:13:54","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/plugin/setup/IPluginSetup.sol","file":"../../plugin/setup/IPluginSetup.sol","id":11927,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":12432,"sourceUnit":14274,"src":"182:65:54","symbolAliases":[{"foreign":{"id":11926,"name":"IPluginSetup","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14273,"src":"190:12:54","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/plugin/setup/PluginUpgradeableSetup.sol","file":"../../plugin/setup/PluginUpgradeableSetup.sol","id":11929,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":12432,"sourceUnit":14449,"src":"248:85:54","symbolAliases":[{"foreign":{"id":11928,"name":"PluginUpgradeableSetup","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14448,"src":"256:22:54","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/utils/deployment/ProxyLib.sol","file":"../../utils/deployment/ProxyLib.sol","id":11931,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":12432,"sourceUnit":14594,"src":"334:61:54","symbolAliases":[{"foreign":{"id":11930,"name":"ProxyLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14593,"src":"342:8:54","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/dao/IDAO.sol","file":"../../dao/IDAO.sol","id":11933,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":12432,"sourceUnit":10866,"src":"396:40:54","symbolAliases":[{"foreign":{"id":11932,"name":"IDAO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10865,"src":"404:4:54","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/mocks/plugin/PluginSetupMockData.sol","file":"./PluginSetupMockData.sol","id":11936,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":12432,"sourceUnit":11761,"src":"437:71:54","symbolAliases":[{"foreign":{"id":11934,"name":"mockPermissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11721,"src":"445:15:54","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":11935,"name":"mockHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11760,"src":"462:11:54","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol","file":"./PluginUUPSUpgradeableMock.sol","id":11940,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":12432,"sourceUnit":11922,"src":"509:146:54","symbolAliases":[{"foreign":{"id":11937,"name":"PluginUUPSUpgradeableMockBuild1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11789,"src":"517:31:54","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":11938,"name":"PluginUUPSUpgradeableMockBuild2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11837,"src":"550:31:54","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":11939,"name":"PluginUUPSUpgradeableMockBuild3","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11900,"src":"583:31:54","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":11942,"name":"PluginUpgradeableSetup","nameLocations":["865:22:54"],"nodeType":"IdentifierPath","referencedDeclaration":14448,"src":"865:22:54"},"id":11943,"nodeType":"InheritanceSpecifier","src":"865:22:54"}],"canonicalName":"PluginUUPSUpgradeableSetupMockBuild1","contractDependencies":[5389,11789],"contractKind":"contract","documentation":{"id":11941,"nodeType":"StructuredDocumentation","src":"657:159:54","text":"@notice A mock plugin setup of an upgradeable plugin to be deployed via the UUPS pattern.\n v1.1 (Release 1, Build 1)\n @dev DO NOT USE IN PRODUCTION!"},"fullyImplemented":true,"id":12072,"linearizedBaseContracts":[12072,14448,14766,14744,14273,9731,9743],"name":"PluginUUPSUpgradeableSetupMockBuild1","nameLocation":"825:36:54","nodeType":"ContractDefinition","nodes":[{"global":false,"id":11946,"libraryName":{"id":11944,"name":"ProxyLib","nameLocations":["900:8:54"],"nodeType":"IdentifierPath","referencedDeclaration":14593,"src":"900:8:54"},"nodeType":"UsingForDirective","src":"894:27:54","typeName":{"id":11945,"name":"address","nodeType":"ElementaryTypeName","src":"913:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},{"constant":true,"id":11949,"mutability":"constant","name":"THIS_BUILD","nameLocation":"952:10:54","nodeType":"VariableDeclaration","scope":12072,"src":"927:39:54","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":11947,"name":"uint16","nodeType":"ElementaryTypeName","src":"927:6:54","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"value":{"hexValue":"31","id":11948,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"965:1:54","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"visibility":"internal"},{"body":{"id":11961,"nodeType":"Block","src":"1058:2:54","statements":[]},"id":11962,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":11956,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"NewExpression","src":"1018:35:54","typeDescriptions":{"typeIdentifier":"t_function_creation_nonpayable$__$returns$_t_contract$_PluginUUPSUpgradeableMockBuild1_$11789_$","typeString":"function () returns (contract PluginUUPSUpgradeableMockBuild1)"},"typeName":{"id":11955,"nodeType":"UserDefinedTypeName","pathNode":{"id":11954,"name":"PluginUUPSUpgradeableMockBuild1","nameLocations":["1022:31:54"],"nodeType":"IdentifierPath","referencedDeclaration":11789,"src":"1022:31:54"},"referencedDeclaration":11789,"src":"1022:31:54","typeDescriptions":{"typeIdentifier":"t_contract$_PluginUUPSUpgradeableMockBuild1_$11789","typeString":"contract PluginUUPSUpgradeableMockBuild1"}}},"id":11957,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1018:37:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_PluginUUPSUpgradeableMockBuild1_$11789","typeString":"contract PluginUUPSUpgradeableMockBuild1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_PluginUUPSUpgradeableMockBuild1_$11789","typeString":"contract PluginUUPSUpgradeableMockBuild1"}],"id":11953,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1010:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11952,"name":"address","nodeType":"ElementaryTypeName","src":"1010:7:54","typeDescriptions":{}}},"id":11958,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1010:46:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":11959,"kind":"baseConstructorSpecifier","modifierName":{"id":11951,"name":"PluginUpgradeableSetup","nameLocations":["987:22:54"],"nodeType":"IdentifierPath","referencedDeclaration":14448,"src":"987:22:54"},"nodeType":"ModifierInvocation","src":"987:70:54"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":11950,"nodeType":"ParameterList","parameters":[],"src":"984:2:54"},"returnParameters":{"id":11960,"nodeType":"ParameterList","parameters":[],"src":"1058:0:54"},"scope":12072,"src":"973:87:54","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[14237],"body":{"id":12015,"nodeType":"Block","src":"1254:354:54","statements":[{"assignments":[11976],"declarations":[{"constant":false,"id":11976,"mutability":"mutable","name":"initData","nameLocation":"1277:8:54","nodeType":"VariableDeclaration","scope":12015,"src":"1264:21:54","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":11975,"name":"bytes","nodeType":"ElementaryTypeName","src":"1264:5:54","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":11986,"initialValue":{"arguments":[{"expression":{"id":11979,"name":"PluginUUPSUpgradeableMockBuild1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11789,"src":"1316:31:54","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PluginUUPSUpgradeableMockBuild1_$11789_$","typeString":"type(contract PluginUUPSUpgradeableMockBuild1)"}},"id":11980,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1348:10:54","memberName":"initialize","nodeType":"MemberAccess","referencedDeclaration":11788,"src":"1316:42:54","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_contract$_IDAO_$10865_$returns$__$","typeString":"function PluginUUPSUpgradeableMockBuild1.initialize(contract IDAO)"}},{"components":[{"arguments":[{"id":11982,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11965,"src":"1378:4:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11981,"name":"IDAO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10865,"src":"1373:4:54","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IDAO_$10865_$","typeString":"type(contract IDAO)"}},"id":11983,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1373:10:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}}],"id":11984,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1372:12:54","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_nonpayable$_t_contract$_IDAO_$10865_$returns$__$","typeString":"function PluginUUPSUpgradeableMockBuild1.initialize(contract IDAO)"},{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}],"expression":{"id":11977,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967295,"src":"1288:3:54","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":11978,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1292:10:54","memberName":"encodeCall","nodeType":"MemberAccess","src":"1288:14:54","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":11985,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1288:106:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"1264:130:54"},{"expression":{"id":11993,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11987,"name":"plugin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11970,"src":"1404:6:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":11991,"name":"initData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11976,"src":"1446:8:54","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":11988,"name":"implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14447,"src":"1413:14:54","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":11989,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1413:16:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":11990,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1430:15:54","memberName":"deployUUPSProxy","nodeType":"MemberAccess","referencedDeclaration":14563,"src":"1413:32:54","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_address_$bound_to$_t_address_$","typeString":"function (address,bytes memory) returns (address)"}},"id":11992,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1413:42:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1404:51:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":11994,"nodeType":"ExpressionStatement","src":"1404:51:54"},{"expression":{"id":12001,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":11995,"name":"preparedSetupData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11973,"src":"1465:17:54","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$14216_memory_ptr","typeString":"struct IPluginSetup.PreparedSetupData memory"}},"id":11997,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1483:7:54","memberName":"helpers","nodeType":"MemberAccess","referencedDeclaration":14211,"src":"1465:25:54","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"hexValue":"31","id":11999,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1505:1:54","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":11998,"name":"mockHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11760,"src":"1493:11:54","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$returns$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"function (uint160) pure returns (address[] memory)"}},"id":12000,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1493:14:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"src":"1465:42:54","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":12002,"nodeType":"ExpressionStatement","src":"1465:42:54"},{"expression":{"id":12013,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":12003,"name":"preparedSetupData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11973,"src":"1517:17:54","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$14216_memory_ptr","typeString":"struct IPluginSetup.PreparedSetupData memory"}},"id":12005,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1535:11:54","memberName":"permissions","nodeType":"MemberAccess","referencedDeclaration":14215,"src":"1517:29:54","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"hexValue":"30","id":12007,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1565:1:54","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"31","id":12008,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1568:1:54","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},{"expression":{"expression":{"id":12009,"name":"PermissionLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13038,"src":"1571:13:54","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PermissionLib_$13038_$","typeString":"type(library PermissionLib)"}},"id":12010,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1585:9:54","memberName":"Operation","nodeType":"MemberAccess","referencedDeclaration":13017,"src":"1571:23:54","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Operation_$13017_$","typeString":"type(enum PermissionLib.Operation)"}},"id":12011,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1595:5:54","memberName":"Grant","nodeType":"MemberAccess","referencedDeclaration":13014,"src":"1571:29:54","typeDescriptions":{"typeIdentifier":"t_enum$_Operation_$13017","typeString":"enum PermissionLib.Operation"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},{"typeIdentifier":"t_enum$_Operation_$13017","typeString":"enum PermissionLib.Operation"}],"id":12006,"name":"mockPermissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11721,"src":"1549:15:54","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_enum$_Operation_$13017_$returns$_t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint160,uint160,enum PermissionLib.Operation) pure returns (struct PermissionLib.MultiTargetPermission memory[] memory)"}},"id":12012,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1549:52:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"src":"1517:84:54","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"id":12014,"nodeType":"ExpressionStatement","src":"1517:84:54"}]},"documentation":{"id":11963,"nodeType":"StructuredDocumentation","src":"1066:28:54","text":"@inheritdoc IPluginSetup"},"functionSelector":"f10832f1","id":12016,"implemented":true,"kind":"function","modifiers":[],"name":"prepareInstallation","nameLocation":"1108:19:54","nodeType":"FunctionDefinition","parameters":{"id":11968,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11965,"mutability":"mutable","name":"_dao","nameLocation":"1145:4:54","nodeType":"VariableDeclaration","scope":12016,"src":"1137:12:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11964,"name":"address","nodeType":"ElementaryTypeName","src":"1137:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11967,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12016,"src":"1159:12:54","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":11966,"name":"bytes","nodeType":"ElementaryTypeName","src":"1159:5:54","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1127:50:54"},"returnParameters":{"id":11974,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11970,"mutability":"mutable","name":"plugin","nameLocation":"1202:6:54","nodeType":"VariableDeclaration","scope":12016,"src":"1194:14:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11969,"name":"address","nodeType":"ElementaryTypeName","src":"1194:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11973,"mutability":"mutable","name":"preparedSetupData","nameLocation":"1235:17:54","nodeType":"VariableDeclaration","scope":12016,"src":"1210:42:54","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$14216_memory_ptr","typeString":"struct IPluginSetup.PreparedSetupData"},"typeName":{"id":11972,"nodeType":"UserDefinedTypeName","pathNode":{"id":11971,"name":"PreparedSetupData","nameLocations":["1210:17:54"],"nodeType":"IdentifierPath","referencedDeclaration":14216,"src":"1210:17:54"},"referencedDeclaration":14216,"src":"1210:17:54","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$14216_storage_ptr","typeString":"struct IPluginSetup.PreparedSetupData"}},"visibility":"internal"}],"src":"1193:60:54"},"scope":12072,"src":"1099:509:54","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[14253],"body":{"id":12042,"nodeType":"Block","src":"1946:118:54","statements":[{"expression":{"components":[{"id":12032,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12019,"src":"1957:4:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12033,"name":"_fromBuild","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12021,"src":"1963:10:54","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"id":12034,"name":"_payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12024,"src":"1975:8:54","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$14224_calldata_ptr","typeString":"struct IPluginSetup.SetupPayload calldata"}}],"id":12035,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1956:28:54","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint16_$_t_struct$_SetupPayload_$14224_calldata_ptr_$","typeString":"tuple(address,uint16,struct IPluginSetup.SetupPayload calldata)"}},"id":12036,"nodeType":"ExpressionStatement","src":"1956:28:54"},{"errorCall":{"arguments":[{"hexValue":"30","id":12038,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2031:1:54","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":12039,"name":"THIS_BUILD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11949,"src":"2045:10:54","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint16","typeString":"uint16"}],"id":12037,"name":"InvalidUpdatePath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14398,"src":"2001:17:54","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint16_$_t_uint16_$returns$__$","typeString":"function (uint16,uint16) pure"}},"id":12040,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":["2020:9:54","2034:9:54"],"names":["fromBuild","thisBuild"],"nodeType":"FunctionCall","src":"2001:56:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12041,"nodeType":"RevertStatement","src":"1994:63:54"}]},"documentation":{"id":12017,"nodeType":"StructuredDocumentation","src":"1614:138:54","text":"@inheritdoc IPluginSetup\n @dev The default implementation for the initial build 1 that reverts because no earlier build exists."},"functionSelector":"a8a9c29e","id":12043,"implemented":true,"kind":"function","modifiers":[],"name":"prepareUpdate","nameLocation":"1766:13:54","nodeType":"FunctionDefinition","parameters":{"id":12025,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12019,"mutability":"mutable","name":"_dao","nameLocation":"1797:4:54","nodeType":"VariableDeclaration","scope":12043,"src":"1789:12:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12018,"name":"address","nodeType":"ElementaryTypeName","src":"1789:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12021,"mutability":"mutable","name":"_fromBuild","nameLocation":"1818:10:54","nodeType":"VariableDeclaration","scope":12043,"src":"1811:17:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":12020,"name":"uint16","nodeType":"ElementaryTypeName","src":"1811:6:54","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":12024,"mutability":"mutable","name":"_payload","nameLocation":"1860:8:54","nodeType":"VariableDeclaration","scope":12043,"src":"1838:30:54","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$14224_calldata_ptr","typeString":"struct IPluginSetup.SetupPayload"},"typeName":{"id":12023,"nodeType":"UserDefinedTypeName","pathNode":{"id":12022,"name":"SetupPayload","nameLocations":["1838:12:54"],"nodeType":"IdentifierPath","referencedDeclaration":14224,"src":"1838:12:54"},"referencedDeclaration":14224,"src":"1838:12:54","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$14224_storage_ptr","typeString":"struct IPluginSetup.SetupPayload"}},"visibility":"internal"}],"src":"1779:95:54"},"returnParameters":{"id":12031,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12027,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12043,"src":"1906:12:54","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":12026,"name":"bytes","nodeType":"ElementaryTypeName","src":"1906:5:54","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":12030,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12043,"src":"1920:24:54","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$14216_memory_ptr","typeString":"struct IPluginSetup.PreparedSetupData"},"typeName":{"id":12029,"nodeType":"UserDefinedTypeName","pathNode":{"id":12028,"name":"PreparedSetupData","nameLocations":["1920:17:54"],"nodeType":"IdentifierPath","referencedDeclaration":14216,"src":"1920:17:54"},"referencedDeclaration":14216,"src":"1920:17:54","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$14216_storage_ptr","typeString":"struct IPluginSetup.PreparedSetupData"}},"visibility":"internal"}],"src":"1905:40:54"},"scope":12072,"src":"1757:307:54","stateMutability":"pure","virtual":true,"visibility":"external"},{"baseFunctions":[14266],"body":{"id":12070,"nodeType":"Block","src":"2283:119:54","statements":[{"expression":{"components":[{"id":12056,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12046,"src":"2294:4:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12057,"name":"_payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12049,"src":"2300:8:54","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$14224_calldata_ptr","typeString":"struct IPluginSetup.SetupPayload calldata"}}],"id":12058,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2293:16:54","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_struct$_SetupPayload_$14224_calldata_ptr_$","typeString":"tuple(address,struct IPluginSetup.SetupPayload calldata)"}},"id":12059,"nodeType":"ExpressionStatement","src":"2293:16:54"},{"expression":{"id":12068,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12060,"name":"permissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12054,"src":"2319:11:54","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"hexValue":"30","id":12062,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2349:1:54","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":12063,"name":"THIS_BUILD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11949,"src":"2352:10:54","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"expression":{"expression":{"id":12064,"name":"PermissionLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13038,"src":"2364:13:54","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PermissionLib_$13038_$","typeString":"type(library PermissionLib)"}},"id":12065,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2378:9:54","memberName":"Operation","nodeType":"MemberAccess","referencedDeclaration":13017,"src":"2364:23:54","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Operation_$13017_$","typeString":"type(enum PermissionLib.Operation)"}},"id":12066,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2388:6:54","memberName":"Revoke","nodeType":"MemberAccess","referencedDeclaration":13015,"src":"2364:30:54","typeDescriptions":{"typeIdentifier":"t_enum$_Operation_$13017","typeString":"enum PermissionLib.Operation"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_enum$_Operation_$13017","typeString":"enum PermissionLib.Operation"}],"id":12061,"name":"mockPermissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11721,"src":"2333:15:54","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_enum$_Operation_$13017_$returns$_t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint160,uint160,enum PermissionLib.Operation) pure returns (struct PermissionLib.MultiTargetPermission memory[] memory)"}},"id":12067,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2333:62:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"src":"2319:76:54","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"id":12069,"nodeType":"ExpressionStatement","src":"2319:76:54"}]},"documentation":{"id":12044,"nodeType":"StructuredDocumentation","src":"2070:28:54","text":"@inheritdoc IPluginSetup"},"functionSelector":"9cb0a124","id":12071,"implemented":true,"kind":"function","modifiers":[],"name":"prepareUninstallation","nameLocation":"2112:21:54","nodeType":"FunctionDefinition","parameters":{"id":12050,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12046,"mutability":"mutable","name":"_dao","nameLocation":"2151:4:54","nodeType":"VariableDeclaration","scope":12071,"src":"2143:12:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12045,"name":"address","nodeType":"ElementaryTypeName","src":"2143:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12049,"mutability":"mutable","name":"_payload","nameLocation":"2187:8:54","nodeType":"VariableDeclaration","scope":12071,"src":"2165:30:54","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$14224_calldata_ptr","typeString":"struct IPluginSetup.SetupPayload"},"typeName":{"id":12048,"nodeType":"UserDefinedTypeName","pathNode":{"id":12047,"name":"SetupPayload","nameLocations":["2165:12:54"],"nodeType":"IdentifierPath","referencedDeclaration":14224,"src":"2165:12:54"},"referencedDeclaration":14224,"src":"2165:12:54","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$14224_storage_ptr","typeString":"struct IPluginSetup.SetupPayload"}},"visibility":"internal"}],"src":"2133:68:54"},"returnParameters":{"id":12055,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12054,"mutability":"mutable","name":"permissions","nameLocation":"2270:11:54","nodeType":"VariableDeclaration","scope":12071,"src":"2225:56:54","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission[]"},"typeName":{"baseType":{"id":12052,"nodeType":"UserDefinedTypeName","pathNode":{"id":12051,"name":"PermissionLib.MultiTargetPermission","nameLocations":["2225:13:54","2239:21:54"],"nodeType":"IdentifierPath","referencedDeclaration":13037,"src":"2225:35:54"},"referencedDeclaration":13037,"src":"2225:35:54","typeDescriptions":{"typeIdentifier":"t_struct$_MultiTargetPermission_$13037_storage_ptr","typeString":"struct PermissionLib.MultiTargetPermission"}},"id":12053,"nodeType":"ArrayTypeName","src":"2225:37:54","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_storage_$dyn_storage_ptr","typeString":"struct PermissionLib.MultiTargetPermission[]"}},"visibility":"internal"}],"src":"2224:58:54"},"scope":12072,"src":"2103:299:54","stateMutability":"pure","virtual":false,"visibility":"external"}],"scope":12432,"src":"816:1588:54","usedErrors":[11651,14398]},{"abstract":false,"baseContracts":[{"baseName":{"id":12074,"name":"PluginUpgradeableSetup","nameLocations":["2614:22:54"],"nodeType":"IdentifierPath","referencedDeclaration":14448,"src":"2614:22:54"},"id":12075,"nodeType":"InheritanceSpecifier","src":"2614:22:54"}],"canonicalName":"PluginUUPSUpgradeableSetupMockBuild2","contractDependencies":[5389,11837],"contractKind":"contract","documentation":{"id":12073,"nodeType":"StructuredDocumentation","src":"2406:159:54","text":"@notice A mock plugin setup of an upgradeable plugin to be deployed via the UUPS pattern.\n v1.2 (Release 1, Build 2)\n @dev DO NOT USE IN PRODUCTION!"},"fullyImplemented":true,"id":12234,"linearizedBaseContracts":[12234,14448,14766,14744,14273,9731,9743],"name":"PluginUUPSUpgradeableSetupMockBuild2","nameLocation":"2574:36:54","nodeType":"ContractDefinition","nodes":[{"global":false,"id":12078,"libraryName":{"id":12076,"name":"ProxyLib","nameLocations":["2649:8:54"],"nodeType":"IdentifierPath","referencedDeclaration":14593,"src":"2649:8:54"},"nodeType":"UsingForDirective","src":"2643:27:54","typeName":{"id":12077,"name":"address","nodeType":"ElementaryTypeName","src":"2662:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},{"constant":true,"id":12081,"mutability":"constant","name":"THIS_BUILD","nameLocation":"2701:10:54","nodeType":"VariableDeclaration","scope":12234,"src":"2676:39:54","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":12079,"name":"uint16","nodeType":"ElementaryTypeName","src":"2676:6:54","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"value":{"hexValue":"32","id":12080,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2714:1:54","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"visibility":"internal"},{"body":{"id":12093,"nodeType":"Block","src":"2807:2:54","statements":[]},"id":12094,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":12088,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"NewExpression","src":"2767:35:54","typeDescriptions":{"typeIdentifier":"t_function_creation_nonpayable$__$returns$_t_contract$_PluginUUPSUpgradeableMockBuild2_$11837_$","typeString":"function () returns (contract PluginUUPSUpgradeableMockBuild2)"},"typeName":{"id":12087,"nodeType":"UserDefinedTypeName","pathNode":{"id":12086,"name":"PluginUUPSUpgradeableMockBuild2","nameLocations":["2771:31:54"],"nodeType":"IdentifierPath","referencedDeclaration":11837,"src":"2771:31:54"},"referencedDeclaration":11837,"src":"2771:31:54","typeDescriptions":{"typeIdentifier":"t_contract$_PluginUUPSUpgradeableMockBuild2_$11837","typeString":"contract PluginUUPSUpgradeableMockBuild2"}}},"id":12089,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2767:37:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_PluginUUPSUpgradeableMockBuild2_$11837","typeString":"contract PluginUUPSUpgradeableMockBuild2"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_PluginUUPSUpgradeableMockBuild2_$11837","typeString":"contract PluginUUPSUpgradeableMockBuild2"}],"id":12085,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2759:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12084,"name":"address","nodeType":"ElementaryTypeName","src":"2759:7:54","typeDescriptions":{}}},"id":12090,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2759:46:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":12091,"kind":"baseConstructorSpecifier","modifierName":{"id":12083,"name":"PluginUpgradeableSetup","nameLocations":["2736:22:54"],"nodeType":"IdentifierPath","referencedDeclaration":14448,"src":"2736:22:54"},"nodeType":"ModifierInvocation","src":"2736:70:54"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":12082,"nodeType":"ParameterList","parameters":[],"src":"2733:2:54"},"returnParameters":{"id":12092,"nodeType":"ParameterList","parameters":[],"src":"2807:0:54"},"scope":12234,"src":"2722:87:54","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[14237],"body":{"id":12147,"nodeType":"Block","src":"3005:418:54","statements":[{"assignments":[12108],"declarations":[{"constant":false,"id":12108,"mutability":"mutable","name":"initData","nameLocation":"3028:8:54","nodeType":"VariableDeclaration","scope":12147,"src":"3015:21:54","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":12107,"name":"bytes","nodeType":"ElementaryTypeName","src":"3015:5:54","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":12118,"initialValue":{"arguments":[{"expression":{"id":12111,"name":"PluginUUPSUpgradeableMockBuild2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11837,"src":"3067:31:54","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PluginUUPSUpgradeableMockBuild2_$11837_$","typeString":"type(contract PluginUUPSUpgradeableMockBuild2)"}},"id":12112,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3099:10:54","memberName":"initialize","nodeType":"MemberAccess","referencedDeclaration":11818,"src":"3067:42:54","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_contract$_IDAO_$10865_$returns$__$","typeString":"function PluginUUPSUpgradeableMockBuild2.initialize(contract IDAO)"}},{"components":[{"arguments":[{"id":12114,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12097,"src":"3129:4:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":12113,"name":"IDAO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10865,"src":"3124:4:54","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IDAO_$10865_$","typeString":"type(contract IDAO)"}},"id":12115,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3124:10:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}}],"id":12116,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3123:12:54","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_nonpayable$_t_contract$_IDAO_$10865_$returns$__$","typeString":"function PluginUUPSUpgradeableMockBuild2.initialize(contract IDAO)"},{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}],"expression":{"id":12109,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967295,"src":"3039:3:54","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":12110,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3043:10:54","memberName":"encodeCall","nodeType":"MemberAccess","src":"3039:14:54","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":12117,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3039:106:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"3015:130:54"},{"expression":{"id":12125,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12119,"name":"plugin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12102,"src":"3155:6:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":12123,"name":"initData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12108,"src":"3197:8:54","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12120,"name":"implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14447,"src":"3164:14:54","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":12121,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3164:16:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":12122,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3181:15:54","memberName":"deployUUPSProxy","nodeType":"MemberAccess","referencedDeclaration":14563,"src":"3164:32:54","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_address_$bound_to$_t_address_$","typeString":"function (address,bytes memory) returns (address)"}},"id":12124,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3164:42:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3155:51:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":12126,"nodeType":"ExpressionStatement","src":"3155:51:54"},{"expression":{"id":12133,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":12127,"name":"preparedSetupData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12105,"src":"3216:17:54","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$14216_memory_ptr","typeString":"struct IPluginSetup.PreparedSetupData memory"}},"id":12129,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"3234:7:54","memberName":"helpers","nodeType":"MemberAccess","referencedDeclaration":14211,"src":"3216:25:54","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":12131,"name":"THIS_BUILD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12081,"src":"3256:10:54","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"}],"id":12130,"name":"mockHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11760,"src":"3244:11:54","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$returns$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"function (uint160) pure returns (address[] memory)"}},"id":12132,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3244:23:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"src":"3216:51:54","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":12134,"nodeType":"ExpressionStatement","src":"3216:51:54"},{"expression":{"id":12145,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":12135,"name":"preparedSetupData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12105,"src":"3277:17:54","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$14216_memory_ptr","typeString":"struct IPluginSetup.PreparedSetupData memory"}},"id":12137,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"3295:11:54","memberName":"permissions","nodeType":"MemberAccess","referencedDeclaration":14215,"src":"3277:29:54","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"hexValue":"30","id":12139,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3338:1:54","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":12140,"name":"THIS_BUILD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12081,"src":"3353:10:54","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"expression":{"expression":{"id":12141,"name":"PermissionLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13038,"src":"3377:13:54","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PermissionLib_$13038_$","typeString":"type(library PermissionLib)"}},"id":12142,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3391:9:54","memberName":"Operation","nodeType":"MemberAccess","referencedDeclaration":13017,"src":"3377:23:54","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Operation_$13017_$","typeString":"type(enum PermissionLib.Operation)"}},"id":12143,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3401:5:54","memberName":"Grant","nodeType":"MemberAccess","referencedDeclaration":13014,"src":"3377:29:54","typeDescriptions":{"typeIdentifier":"t_enum$_Operation_$13017","typeString":"enum PermissionLib.Operation"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_enum$_Operation_$13017","typeString":"enum PermissionLib.Operation"}],"id":12138,"name":"mockPermissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11721,"src":"3309:15:54","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_enum$_Operation_$13017_$returns$_t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint160,uint160,enum PermissionLib.Operation) pure returns (struct PermissionLib.MultiTargetPermission memory[] memory)"}},"id":12144,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3309:107:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"src":"3277:139:54","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"id":12146,"nodeType":"ExpressionStatement","src":"3277:139:54"}]},"documentation":{"id":12095,"nodeType":"StructuredDocumentation","src":"2815:28:54","text":"@inheritdoc IPluginSetup"},"functionSelector":"f10832f1","id":12148,"implemented":true,"kind":"function","modifiers":[],"name":"prepareInstallation","nameLocation":"2857:19:54","nodeType":"FunctionDefinition","parameters":{"id":12100,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12097,"mutability":"mutable","name":"_dao","nameLocation":"2894:4:54","nodeType":"VariableDeclaration","scope":12148,"src":"2886:12:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12096,"name":"address","nodeType":"ElementaryTypeName","src":"2886:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12099,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12148,"src":"2908:12:54","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":12098,"name":"bytes","nodeType":"ElementaryTypeName","src":"2908:5:54","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2876:50:54"},"returnParameters":{"id":12106,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12102,"mutability":"mutable","name":"plugin","nameLocation":"2953:6:54","nodeType":"VariableDeclaration","scope":12148,"src":"2945:14:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12101,"name":"address","nodeType":"ElementaryTypeName","src":"2945:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12105,"mutability":"mutable","name":"preparedSetupData","nameLocation":"2986:17:54","nodeType":"VariableDeclaration","scope":12148,"src":"2961:42:54","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$14216_memory_ptr","typeString":"struct IPluginSetup.PreparedSetupData"},"typeName":{"id":12104,"nodeType":"UserDefinedTypeName","pathNode":{"id":12103,"name":"PreparedSetupData","nameLocations":["2961:17:54"],"nodeType":"IdentifierPath","referencedDeclaration":14216,"src":"2961:17:54"},"referencedDeclaration":14216,"src":"2961:17:54","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$14216_storage_ptr","typeString":"struct IPluginSetup.PreparedSetupData"}},"visibility":"internal"}],"src":"2944:60:54"},"scope":12234,"src":"2848:575:54","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[14253],"body":{"id":12204,"nodeType":"Block","src":"3715:450:54","statements":[{"expression":{"components":[{"id":12165,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12151,"src":"3726:4:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12166,"name":"_payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12156,"src":"3732:8:54","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$14224_calldata_ptr","typeString":"struct IPluginSetup.SetupPayload calldata"}}],"id":12167,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3725:16:54","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_struct$_SetupPayload_$14224_calldata_ptr_$","typeString":"tuple(address,struct IPluginSetup.SetupPayload calldata)"}},"id":12168,"nodeType":"ExpressionStatement","src":"3725:16:54"},{"condition":{"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"id":12171,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12169,"name":"_fromBuild","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12153,"src":"3787:10:54","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":12170,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3801:1:54","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3787:15:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12203,"nodeType":"IfStatement","src":"3783:376:54","trueBody":{"id":12202,"nodeType":"Block","src":"3804:355:54","statements":[{"expression":{"id":12178,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":12172,"name":"preparedSetupData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12163,"src":"3818:17:54","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$14216_memory_ptr","typeString":"struct IPluginSetup.PreparedSetupData memory"}},"id":12174,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"3836:7:54","memberName":"helpers","nodeType":"MemberAccess","referencedDeclaration":14211,"src":"3818:25:54","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":12176,"name":"THIS_BUILD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12081,"src":"3858:10:54","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"}],"id":12175,"name":"mockHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11760,"src":"3846:11:54","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$returns$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"function (uint160) pure returns (address[] memory)"}},"id":12177,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3846:23:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"src":"3818:51:54","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":12179,"nodeType":"ExpressionStatement","src":"3818:51:54"},{"expression":{"id":12188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12180,"name":"initData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12160,"src":"3883:8:54","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":12183,"name":"PluginUUPSUpgradeableMockBuild2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11837,"src":"3909:31:54","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PluginUUPSUpgradeableMockBuild2_$11837_$","typeString":"type(contract PluginUUPSUpgradeableMockBuild2)"}},"id":12184,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3941:14:54","memberName":"initializeFrom","nodeType":"MemberAccess","referencedDeclaration":11836,"src":"3909:46:54","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_uint16_$returns$__$","typeString":"function PluginUUPSUpgradeableMockBuild2.initializeFrom(uint16)"}},{"components":[{"id":12185,"name":"_fromBuild","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12153,"src":"3958:10:54","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"id":12186,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3957:12:54","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_nonpayable$_t_uint16_$returns$__$","typeString":"function PluginUUPSUpgradeableMockBuild2.initializeFrom(uint16)"},{"typeIdentifier":"t_uint16","typeString":"uint16"}],"expression":{"id":12181,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967295,"src":"3894:3:54","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":12182,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3898:10:54","memberName":"encodeCall","nodeType":"MemberAccess","src":"3894:14:54","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":12187,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3894:76:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"3883:87:54","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":12189,"nodeType":"ExpressionStatement","src":"3883:87:54"},{"expression":{"id":12200,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":12190,"name":"preparedSetupData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12163,"src":"3984:17:54","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$14216_memory_ptr","typeString":"struct IPluginSetup.PreparedSetupData memory"}},"id":12192,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4002:11:54","memberName":"permissions","nodeType":"MemberAccess","referencedDeclaration":14215,"src":"3984:29:54","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":12194,"name":"_fromBuild","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12153,"src":"4049:10:54","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"id":12195,"name":"THIS_BUILD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12081,"src":"4077:10:54","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"expression":{"expression":{"id":12196,"name":"PermissionLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13038,"src":"4105:13:54","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PermissionLib_$13038_$","typeString":"type(library PermissionLib)"}},"id":12197,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4119:9:54","memberName":"Operation","nodeType":"MemberAccess","referencedDeclaration":13017,"src":"4105:23:54","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Operation_$13017_$","typeString":"type(enum PermissionLib.Operation)"}},"id":12198,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4129:5:54","memberName":"Grant","nodeType":"MemberAccess","referencedDeclaration":13014,"src":"4105:29:54","typeDescriptions":{"typeIdentifier":"t_enum$_Operation_$13017","typeString":"enum PermissionLib.Operation"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_enum$_Operation_$13017","typeString":"enum PermissionLib.Operation"}],"id":12193,"name":"mockPermissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11721,"src":"4016:15:54","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_enum$_Operation_$13017_$returns$_t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint160,uint160,enum PermissionLib.Operation) pure returns (struct PermissionLib.MultiTargetPermission memory[] memory)"}},"id":12199,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4016:132:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"src":"3984:164:54","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"id":12201,"nodeType":"ExpressionStatement","src":"3984:164:54"}]}}]},"documentation":{"id":12149,"nodeType":"StructuredDocumentation","src":"3429:28:54","text":"@inheritdoc IPluginSetup"},"functionSelector":"a8a9c29e","id":12205,"implemented":true,"kind":"function","modifiers":[],"name":"prepareUpdate","nameLocation":"3471:13:54","nodeType":"FunctionDefinition","overrides":{"id":12158,"nodeType":"OverrideSpecifier","overrides":[],"src":"3618:8:54"},"parameters":{"id":12157,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12151,"mutability":"mutable","name":"_dao","nameLocation":"3502:4:54","nodeType":"VariableDeclaration","scope":12205,"src":"3494:12:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12150,"name":"address","nodeType":"ElementaryTypeName","src":"3494:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12153,"mutability":"mutable","name":"_fromBuild","nameLocation":"3523:10:54","nodeType":"VariableDeclaration","scope":12205,"src":"3516:17:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":12152,"name":"uint16","nodeType":"ElementaryTypeName","src":"3516:6:54","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":12156,"mutability":"mutable","name":"_payload","nameLocation":"3565:8:54","nodeType":"VariableDeclaration","scope":12205,"src":"3543:30:54","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$14224_calldata_ptr","typeString":"struct IPluginSetup.SetupPayload"},"typeName":{"id":12155,"nodeType":"UserDefinedTypeName","pathNode":{"id":12154,"name":"SetupPayload","nameLocations":["3543:12:54"],"nodeType":"IdentifierPath","referencedDeclaration":14224,"src":"3543:12:54"},"referencedDeclaration":14224,"src":"3543:12:54","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$14224_storage_ptr","typeString":"struct IPluginSetup.SetupPayload"}},"visibility":"internal"}],"src":"3484:95:54"},"returnParameters":{"id":12164,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12160,"mutability":"mutable","name":"initData","nameLocation":"3657:8:54","nodeType":"VariableDeclaration","scope":12205,"src":"3644:21:54","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":12159,"name":"bytes","nodeType":"ElementaryTypeName","src":"3644:5:54","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":12163,"mutability":"mutable","name":"preparedSetupData","nameLocation":"3692:17:54","nodeType":"VariableDeclaration","scope":12205,"src":"3667:42:54","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$14216_memory_ptr","typeString":"struct IPluginSetup.PreparedSetupData"},"typeName":{"id":12162,"nodeType":"UserDefinedTypeName","pathNode":{"id":12161,"name":"PreparedSetupData","nameLocations":["3667:17:54"],"nodeType":"IdentifierPath","referencedDeclaration":14216,"src":"3667:17:54"},"referencedDeclaration":14216,"src":"3667:17:54","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$14216_storage_ptr","typeString":"struct IPluginSetup.PreparedSetupData"}},"visibility":"internal"}],"src":"3643:67:54"},"scope":12234,"src":"3462:703:54","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[14266],"body":{"id":12232,"nodeType":"Block","src":"4384:119:54","statements":[{"expression":{"components":[{"id":12218,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12208,"src":"4395:4:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12219,"name":"_payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12211,"src":"4401:8:54","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$14224_calldata_ptr","typeString":"struct IPluginSetup.SetupPayload calldata"}}],"id":12220,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4394:16:54","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_struct$_SetupPayload_$14224_calldata_ptr_$","typeString":"tuple(address,struct IPluginSetup.SetupPayload calldata)"}},"id":12221,"nodeType":"ExpressionStatement","src":"4394:16:54"},{"expression":{"id":12230,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12222,"name":"permissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12216,"src":"4420:11:54","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"hexValue":"30","id":12224,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4450:1:54","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":12225,"name":"THIS_BUILD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12081,"src":"4453:10:54","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"expression":{"expression":{"id":12226,"name":"PermissionLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13038,"src":"4465:13:54","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PermissionLib_$13038_$","typeString":"type(library PermissionLib)"}},"id":12227,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4479:9:54","memberName":"Operation","nodeType":"MemberAccess","referencedDeclaration":13017,"src":"4465:23:54","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Operation_$13017_$","typeString":"type(enum PermissionLib.Operation)"}},"id":12228,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4489:6:54","memberName":"Revoke","nodeType":"MemberAccess","referencedDeclaration":13015,"src":"4465:30:54","typeDescriptions":{"typeIdentifier":"t_enum$_Operation_$13017","typeString":"enum PermissionLib.Operation"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_enum$_Operation_$13017","typeString":"enum PermissionLib.Operation"}],"id":12223,"name":"mockPermissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11721,"src":"4434:15:54","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_enum$_Operation_$13017_$returns$_t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint160,uint160,enum PermissionLib.Operation) pure returns (struct PermissionLib.MultiTargetPermission memory[] memory)"}},"id":12229,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4434:62:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"src":"4420:76:54","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"id":12231,"nodeType":"ExpressionStatement","src":"4420:76:54"}]},"documentation":{"id":12206,"nodeType":"StructuredDocumentation","src":"4171:28:54","text":"@inheritdoc IPluginSetup"},"functionSelector":"9cb0a124","id":12233,"implemented":true,"kind":"function","modifiers":[],"name":"prepareUninstallation","nameLocation":"4213:21:54","nodeType":"FunctionDefinition","parameters":{"id":12212,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12208,"mutability":"mutable","name":"_dao","nameLocation":"4252:4:54","nodeType":"VariableDeclaration","scope":12233,"src":"4244:12:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12207,"name":"address","nodeType":"ElementaryTypeName","src":"4244:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12211,"mutability":"mutable","name":"_payload","nameLocation":"4288:8:54","nodeType":"VariableDeclaration","scope":12233,"src":"4266:30:54","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$14224_calldata_ptr","typeString":"struct IPluginSetup.SetupPayload"},"typeName":{"id":12210,"nodeType":"UserDefinedTypeName","pathNode":{"id":12209,"name":"SetupPayload","nameLocations":["4266:12:54"],"nodeType":"IdentifierPath","referencedDeclaration":14224,"src":"4266:12:54"},"referencedDeclaration":14224,"src":"4266:12:54","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$14224_storage_ptr","typeString":"struct IPluginSetup.SetupPayload"}},"visibility":"internal"}],"src":"4234:68:54"},"returnParameters":{"id":12217,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12216,"mutability":"mutable","name":"permissions","nameLocation":"4371:11:54","nodeType":"VariableDeclaration","scope":12233,"src":"4326:56:54","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission[]"},"typeName":{"baseType":{"id":12214,"nodeType":"UserDefinedTypeName","pathNode":{"id":12213,"name":"PermissionLib.MultiTargetPermission","nameLocations":["4326:13:54","4340:21:54"],"nodeType":"IdentifierPath","referencedDeclaration":13037,"src":"4326:35:54"},"referencedDeclaration":13037,"src":"4326:35:54","typeDescriptions":{"typeIdentifier":"t_struct$_MultiTargetPermission_$13037_storage_ptr","typeString":"struct PermissionLib.MultiTargetPermission"}},"id":12215,"nodeType":"ArrayTypeName","src":"4326:37:54","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_storage_$dyn_storage_ptr","typeString":"struct PermissionLib.MultiTargetPermission[]"}},"visibility":"internal"}],"src":"4325:58:54"},"scope":12234,"src":"4204:299:54","stateMutability":"pure","virtual":false,"visibility":"external"}],"scope":12432,"src":"2565:1940:54","usedErrors":[11651,14398]},{"abstract":false,"baseContracts":[{"baseName":{"id":12236,"name":"PluginUpgradeableSetup","nameLocations":["4680:22:54"],"nodeType":"IdentifierPath","referencedDeclaration":14448,"src":"4680:22:54"},"id":12237,"nodeType":"InheritanceSpecifier","src":"4680:22:54"}],"canonicalName":"PluginUUPSUpgradeableSetupMockBuild3","contractDependencies":[5389,11900],"contractKind":"contract","documentation":{"id":12235,"nodeType":"StructuredDocumentation","src":"4507:124:54","text":"@notice A mock plugin setup of an upgradeable plugin to be deployed via the UUPS pattern.\n v1.3 (Release 1, Build 3)"},"fullyImplemented":true,"id":12431,"linearizedBaseContracts":[12431,14448,14766,14744,14273,9731,9743],"name":"PluginUUPSUpgradeableSetupMockBuild3","nameLocation":"4640:36:54","nodeType":"ContractDefinition","nodes":[{"global":false,"id":12240,"libraryName":{"id":12238,"name":"ProxyLib","nameLocations":["4715:8:54"],"nodeType":"IdentifierPath","referencedDeclaration":14593,"src":"4715:8:54"},"nodeType":"UsingForDirective","src":"4709:27:54","typeName":{"id":12239,"name":"address","nodeType":"ElementaryTypeName","src":"4728:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},{"constant":true,"id":12243,"mutability":"constant","name":"THIS_BUILD","nameLocation":"4767:10:54","nodeType":"VariableDeclaration","scope":12431,"src":"4742:39:54","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":12241,"name":"uint16","nodeType":"ElementaryTypeName","src":"4742:6:54","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"value":{"hexValue":"33","id":12242,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4780:1:54","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"visibility":"internal"},{"body":{"id":12255,"nodeType":"Block","src":"4873:2:54","statements":[]},"id":12256,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":12250,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"NewExpression","src":"4833:35:54","typeDescriptions":{"typeIdentifier":"t_function_creation_nonpayable$__$returns$_t_contract$_PluginUUPSUpgradeableMockBuild3_$11900_$","typeString":"function () returns (contract PluginUUPSUpgradeableMockBuild3)"},"typeName":{"id":12249,"nodeType":"UserDefinedTypeName","pathNode":{"id":12248,"name":"PluginUUPSUpgradeableMockBuild3","nameLocations":["4837:31:54"],"nodeType":"IdentifierPath","referencedDeclaration":11900,"src":"4837:31:54"},"referencedDeclaration":11900,"src":"4837:31:54","typeDescriptions":{"typeIdentifier":"t_contract$_PluginUUPSUpgradeableMockBuild3_$11900","typeString":"contract PluginUUPSUpgradeableMockBuild3"}}},"id":12251,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4833:37:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_PluginUUPSUpgradeableMockBuild3_$11900","typeString":"contract PluginUUPSUpgradeableMockBuild3"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_PluginUUPSUpgradeableMockBuild3_$11900","typeString":"contract PluginUUPSUpgradeableMockBuild3"}],"id":12247,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4825:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12246,"name":"address","nodeType":"ElementaryTypeName","src":"4825:7:54","typeDescriptions":{}}},"id":12252,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4825:46:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":12253,"kind":"baseConstructorSpecifier","modifierName":{"id":12245,"name":"PluginUpgradeableSetup","nameLocations":["4802:22:54"],"nodeType":"IdentifierPath","referencedDeclaration":14448,"src":"4802:22:54"},"nodeType":"ModifierInvocation","src":"4802:70:54"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":12244,"nodeType":"ParameterList","parameters":[],"src":"4799:2:54"},"returnParameters":{"id":12254,"nodeType":"ParameterList","parameters":[],"src":"4873:0:54"},"scope":12431,"src":"4788:87:54","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[14237],"body":{"id":12309,"nodeType":"Block","src":"5071:418:54","statements":[{"assignments":[12270],"declarations":[{"constant":false,"id":12270,"mutability":"mutable","name":"initData","nameLocation":"5094:8:54","nodeType":"VariableDeclaration","scope":12309,"src":"5081:21:54","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":12269,"name":"bytes","nodeType":"ElementaryTypeName","src":"5081:5:54","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":12280,"initialValue":{"arguments":[{"expression":{"id":12273,"name":"PluginUUPSUpgradeableMockBuild3","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11900,"src":"5133:31:54","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PluginUUPSUpgradeableMockBuild3_$11900_$","typeString":"type(contract PluginUUPSUpgradeableMockBuild3)"}},"id":12274,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5165:10:54","memberName":"initialize","nodeType":"MemberAccess","referencedDeclaration":11872,"src":"5133:42:54","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_contract$_IDAO_$10865_$returns$__$","typeString":"function PluginUUPSUpgradeableMockBuild3.initialize(contract IDAO)"}},{"components":[{"arguments":[{"id":12276,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12259,"src":"5195:4:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":12275,"name":"IDAO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10865,"src":"5190:4:54","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IDAO_$10865_$","typeString":"type(contract IDAO)"}},"id":12277,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5190:10:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}}],"id":12278,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5189:12:54","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_nonpayable$_t_contract$_IDAO_$10865_$returns$__$","typeString":"function PluginUUPSUpgradeableMockBuild3.initialize(contract IDAO)"},{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}],"expression":{"id":12271,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967295,"src":"5105:3:54","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":12272,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5109:10:54","memberName":"encodeCall","nodeType":"MemberAccess","src":"5105:14:54","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":12279,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5105:106:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"5081:130:54"},{"expression":{"id":12287,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12281,"name":"plugin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12264,"src":"5221:6:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":12285,"name":"initData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12270,"src":"5263:8:54","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12282,"name":"implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14447,"src":"5230:14:54","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":12283,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5230:16:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":12284,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5247:15:54","memberName":"deployUUPSProxy","nodeType":"MemberAccess","referencedDeclaration":14563,"src":"5230:32:54","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_address_$bound_to$_t_address_$","typeString":"function (address,bytes memory) returns (address)"}},"id":12286,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5230:42:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5221:51:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":12288,"nodeType":"ExpressionStatement","src":"5221:51:54"},{"expression":{"id":12295,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":12289,"name":"preparedSetupData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12267,"src":"5282:17:54","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$14216_memory_ptr","typeString":"struct IPluginSetup.PreparedSetupData memory"}},"id":12291,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5300:7:54","memberName":"helpers","nodeType":"MemberAccess","referencedDeclaration":14211,"src":"5282:25:54","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":12293,"name":"THIS_BUILD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12243,"src":"5322:10:54","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"}],"id":12292,"name":"mockHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11760,"src":"5310:11:54","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$returns$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"function (uint160) pure returns (address[] memory)"}},"id":12294,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5310:23:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"src":"5282:51:54","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":12296,"nodeType":"ExpressionStatement","src":"5282:51:54"},{"expression":{"id":12307,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":12297,"name":"preparedSetupData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12267,"src":"5343:17:54","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$14216_memory_ptr","typeString":"struct IPluginSetup.PreparedSetupData memory"}},"id":12299,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5361:11:54","memberName":"permissions","nodeType":"MemberAccess","referencedDeclaration":14215,"src":"5343:29:54","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"hexValue":"30","id":12301,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5404:1:54","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":12302,"name":"THIS_BUILD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12243,"src":"5419:10:54","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"expression":{"expression":{"id":12303,"name":"PermissionLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13038,"src":"5443:13:54","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PermissionLib_$13038_$","typeString":"type(library PermissionLib)"}},"id":12304,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5457:9:54","memberName":"Operation","nodeType":"MemberAccess","referencedDeclaration":13017,"src":"5443:23:54","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Operation_$13017_$","typeString":"type(enum PermissionLib.Operation)"}},"id":12305,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5467:5:54","memberName":"Grant","nodeType":"MemberAccess","referencedDeclaration":13014,"src":"5443:29:54","typeDescriptions":{"typeIdentifier":"t_enum$_Operation_$13017","typeString":"enum PermissionLib.Operation"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_enum$_Operation_$13017","typeString":"enum PermissionLib.Operation"}],"id":12300,"name":"mockPermissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11721,"src":"5375:15:54","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_enum$_Operation_$13017_$returns$_t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint160,uint160,enum PermissionLib.Operation) pure returns (struct PermissionLib.MultiTargetPermission memory[] memory)"}},"id":12306,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5375:107:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"src":"5343:139:54","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"id":12308,"nodeType":"ExpressionStatement","src":"5343:139:54"}]},"documentation":{"id":12257,"nodeType":"StructuredDocumentation","src":"4881:28:54","text":"@inheritdoc IPluginSetup"},"functionSelector":"f10832f1","id":12310,"implemented":true,"kind":"function","modifiers":[],"name":"prepareInstallation","nameLocation":"4923:19:54","nodeType":"FunctionDefinition","parameters":{"id":12262,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12259,"mutability":"mutable","name":"_dao","nameLocation":"4960:4:54","nodeType":"VariableDeclaration","scope":12310,"src":"4952:12:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12258,"name":"address","nodeType":"ElementaryTypeName","src":"4952:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12261,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12310,"src":"4974:12:54","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":12260,"name":"bytes","nodeType":"ElementaryTypeName","src":"4974:5:54","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4942:50:54"},"returnParameters":{"id":12268,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12264,"mutability":"mutable","name":"plugin","nameLocation":"5019:6:54","nodeType":"VariableDeclaration","scope":12310,"src":"5011:14:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12263,"name":"address","nodeType":"ElementaryTypeName","src":"5011:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12267,"mutability":"mutable","name":"preparedSetupData","nameLocation":"5052:17:54","nodeType":"VariableDeclaration","scope":12310,"src":"5027:42:54","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$14216_memory_ptr","typeString":"struct IPluginSetup.PreparedSetupData"},"typeName":{"id":12266,"nodeType":"UserDefinedTypeName","pathNode":{"id":12265,"name":"PreparedSetupData","nameLocations":["5027:17:54"],"nodeType":"IdentifierPath","referencedDeclaration":14216,"src":"5027:17:54"},"referencedDeclaration":14216,"src":"5027:17:54","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$14216_storage_ptr","typeString":"struct IPluginSetup.PreparedSetupData"}},"visibility":"internal"}],"src":"5010:60:54"},"scope":12431,"src":"4914:575:54","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[14253],"body":{"id":12401,"nodeType":"Block","src":"5781:1053:54","statements":[{"expression":{"components":[{"id":12327,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12313,"src":"5792:4:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12328,"name":"_payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12318,"src":"5798:8:54","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$14224_calldata_ptr","typeString":"struct IPluginSetup.SetupPayload calldata"}}],"id":12329,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5791:16:54","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_struct$_SetupPayload_$14224_calldata_ptr_$","typeString":"tuple(address,struct IPluginSetup.SetupPayload calldata)"}},"id":12330,"nodeType":"ExpressionStatement","src":"5791:16:54"},{"condition":{"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"id":12333,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12331,"name":"_fromBuild","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12315,"src":"5853:10:54","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":12332,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5867:1:54","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"5853:15:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12365,"nodeType":"IfStatement","src":"5849:562:54","trueBody":{"id":12364,"nodeType":"Block","src":"5870:541:54","statements":[{"expression":{"id":12340,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":12334,"name":"preparedSetupData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12325,"src":"5884:17:54","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$14216_memory_ptr","typeString":"struct IPluginSetup.PreparedSetupData memory"}},"id":12336,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5902:7:54","memberName":"helpers","nodeType":"MemberAccess","referencedDeclaration":14211,"src":"5884:25:54","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":12338,"name":"THIS_BUILD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12243,"src":"5924:10:54","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"}],"id":12337,"name":"mockHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11760,"src":"5912:11:54","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$returns$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"function (uint160) pure returns (address[] memory)"}},"id":12339,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5912:23:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"src":"5884:51:54","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":12341,"nodeType":"ExpressionStatement","src":"5884:51:54"},{"expression":{"id":12350,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12342,"name":"initData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12322,"src":"5949:8:54","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":12345,"name":"PluginUUPSUpgradeableMockBuild3","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11900,"src":"5975:31:54","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PluginUUPSUpgradeableMockBuild3_$11900_$","typeString":"type(contract PluginUUPSUpgradeableMockBuild3)"}},"id":12346,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6007:14:54","memberName":"initializeFrom","nodeType":"MemberAccess","referencedDeclaration":11899,"src":"5975:46:54","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_uint16_$returns$__$","typeString":"function PluginUUPSUpgradeableMockBuild3.initializeFrom(uint16)"}},{"components":[{"id":12347,"name":"_fromBuild","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12315,"src":"6024:10:54","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"id":12348,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6023:12:54","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_nonpayable$_t_uint16_$returns$__$","typeString":"function PluginUUPSUpgradeableMockBuild3.initializeFrom(uint16)"},{"typeIdentifier":"t_uint16","typeString":"uint16"}],"expression":{"id":12343,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967295,"src":"5960:3:54","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":12344,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5964:10:54","memberName":"encodeCall","nodeType":"MemberAccess","src":"5960:14:54","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":12349,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5960:76:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"5949:87:54","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":12351,"nodeType":"ExpressionStatement","src":"5949:87:54"},{"expression":{"id":12362,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":12352,"name":"preparedSetupData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12325,"src":"6050:17:54","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$14216_memory_ptr","typeString":"struct IPluginSetup.PreparedSetupData memory"}},"id":12354,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"6068:11:54","memberName":"permissions","nodeType":"MemberAccess","referencedDeclaration":14215,"src":"6050:29:54","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":12356,"name":"_fromBuild","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12315,"src":"6115:10:54","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"id":12357,"name":"THIS_BUILD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12243,"src":"6143:10:54","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"expression":{"expression":{"id":12358,"name":"PermissionLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13038,"src":"6171:13:54","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PermissionLib_$13038_$","typeString":"type(library PermissionLib)"}},"id":12359,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6185:9:54","memberName":"Operation","nodeType":"MemberAccess","referencedDeclaration":13017,"src":"6171:23:54","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Operation_$13017_$","typeString":"type(enum PermissionLib.Operation)"}},"id":12360,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6195:5:54","memberName":"Grant","nodeType":"MemberAccess","referencedDeclaration":13014,"src":"6171:29:54","typeDescriptions":{"typeIdentifier":"t_enum$_Operation_$13017","typeString":"enum PermissionLib.Operation"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_enum$_Operation_$13017","typeString":"enum PermissionLib.Operation"}],"id":12355,"name":"mockPermissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11721,"src":"6082:15:54","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_enum$_Operation_$13017_$returns$_t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint160,uint160,enum PermissionLib.Operation) pure returns (struct PermissionLib.MultiTargetPermission memory[] memory)"}},"id":12361,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6082:132:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"src":"6050:164:54","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"id":12363,"nodeType":"ExpressionStatement","src":"6050:164:54"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"id":12368,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12366,"name":"_fromBuild","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12315,"src":"6456:10:54","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"32","id":12367,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6470:1:54","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"6456:15:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12400,"nodeType":"IfStatement","src":"6452:376:54","trueBody":{"id":12399,"nodeType":"Block","src":"6473:355:54","statements":[{"expression":{"id":12375,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":12369,"name":"preparedSetupData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12325,"src":"6487:17:54","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$14216_memory_ptr","typeString":"struct IPluginSetup.PreparedSetupData memory"}},"id":12371,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"6505:7:54","memberName":"helpers","nodeType":"MemberAccess","referencedDeclaration":14211,"src":"6487:25:54","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":12373,"name":"THIS_BUILD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12243,"src":"6527:10:54","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"}],"id":12372,"name":"mockHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11760,"src":"6515:11:54","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$returns$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"function (uint160) pure returns (address[] memory)"}},"id":12374,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6515:23:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"src":"6487:51:54","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":12376,"nodeType":"ExpressionStatement","src":"6487:51:54"},{"expression":{"id":12385,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12377,"name":"initData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12322,"src":"6552:8:54","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":12380,"name":"PluginUUPSUpgradeableMockBuild3","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11900,"src":"6578:31:54","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PluginUUPSUpgradeableMockBuild3_$11900_$","typeString":"type(contract PluginUUPSUpgradeableMockBuild3)"}},"id":12381,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6610:14:54","memberName":"initializeFrom","nodeType":"MemberAccess","referencedDeclaration":11899,"src":"6578:46:54","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_uint16_$returns$__$","typeString":"function PluginUUPSUpgradeableMockBuild3.initializeFrom(uint16)"}},{"components":[{"id":12382,"name":"_fromBuild","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12315,"src":"6627:10:54","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"id":12383,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6626:12:54","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_nonpayable$_t_uint16_$returns$__$","typeString":"function PluginUUPSUpgradeableMockBuild3.initializeFrom(uint16)"},{"typeIdentifier":"t_uint16","typeString":"uint16"}],"expression":{"id":12378,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967295,"src":"6563:3:54","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":12379,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6567:10:54","memberName":"encodeCall","nodeType":"MemberAccess","src":"6563:14:54","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":12384,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6563:76:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"6552:87:54","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":12386,"nodeType":"ExpressionStatement","src":"6552:87:54"},{"expression":{"id":12397,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":12387,"name":"preparedSetupData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12325,"src":"6653:17:54","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$14216_memory_ptr","typeString":"struct IPluginSetup.PreparedSetupData memory"}},"id":12389,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"6671:11:54","memberName":"permissions","nodeType":"MemberAccess","referencedDeclaration":14215,"src":"6653:29:54","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":12391,"name":"_fromBuild","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12315,"src":"6718:10:54","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"id":12392,"name":"THIS_BUILD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12243,"src":"6746:10:54","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"expression":{"expression":{"id":12393,"name":"PermissionLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13038,"src":"6774:13:54","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PermissionLib_$13038_$","typeString":"type(library PermissionLib)"}},"id":12394,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6788:9:54","memberName":"Operation","nodeType":"MemberAccess","referencedDeclaration":13017,"src":"6774:23:54","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Operation_$13017_$","typeString":"type(enum PermissionLib.Operation)"}},"id":12395,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6798:5:54","memberName":"Grant","nodeType":"MemberAccess","referencedDeclaration":13014,"src":"6774:29:54","typeDescriptions":{"typeIdentifier":"t_enum$_Operation_$13017","typeString":"enum PermissionLib.Operation"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_enum$_Operation_$13017","typeString":"enum PermissionLib.Operation"}],"id":12390,"name":"mockPermissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11721,"src":"6685:15:54","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_enum$_Operation_$13017_$returns$_t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint160,uint160,enum PermissionLib.Operation) pure returns (struct PermissionLib.MultiTargetPermission memory[] memory)"}},"id":12396,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6685:132:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"src":"6653:164:54","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"id":12398,"nodeType":"ExpressionStatement","src":"6653:164:54"}]}}]},"documentation":{"id":12311,"nodeType":"StructuredDocumentation","src":"5495:28:54","text":"@inheritdoc IPluginSetup"},"functionSelector":"a8a9c29e","id":12402,"implemented":true,"kind":"function","modifiers":[],"name":"prepareUpdate","nameLocation":"5537:13:54","nodeType":"FunctionDefinition","overrides":{"id":12320,"nodeType":"OverrideSpecifier","overrides":[],"src":"5684:8:54"},"parameters":{"id":12319,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12313,"mutability":"mutable","name":"_dao","nameLocation":"5568:4:54","nodeType":"VariableDeclaration","scope":12402,"src":"5560:12:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12312,"name":"address","nodeType":"ElementaryTypeName","src":"5560:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12315,"mutability":"mutable","name":"_fromBuild","nameLocation":"5589:10:54","nodeType":"VariableDeclaration","scope":12402,"src":"5582:17:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":12314,"name":"uint16","nodeType":"ElementaryTypeName","src":"5582:6:54","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":12318,"mutability":"mutable","name":"_payload","nameLocation":"5631:8:54","nodeType":"VariableDeclaration","scope":12402,"src":"5609:30:54","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$14224_calldata_ptr","typeString":"struct IPluginSetup.SetupPayload"},"typeName":{"id":12317,"nodeType":"UserDefinedTypeName","pathNode":{"id":12316,"name":"SetupPayload","nameLocations":["5609:12:54"],"nodeType":"IdentifierPath","referencedDeclaration":14224,"src":"5609:12:54"},"referencedDeclaration":14224,"src":"5609:12:54","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$14224_storage_ptr","typeString":"struct IPluginSetup.SetupPayload"}},"visibility":"internal"}],"src":"5550:95:54"},"returnParameters":{"id":12326,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12322,"mutability":"mutable","name":"initData","nameLocation":"5723:8:54","nodeType":"VariableDeclaration","scope":12402,"src":"5710:21:54","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":12321,"name":"bytes","nodeType":"ElementaryTypeName","src":"5710:5:54","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":12325,"mutability":"mutable","name":"preparedSetupData","nameLocation":"5758:17:54","nodeType":"VariableDeclaration","scope":12402,"src":"5733:42:54","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$14216_memory_ptr","typeString":"struct IPluginSetup.PreparedSetupData"},"typeName":{"id":12324,"nodeType":"UserDefinedTypeName","pathNode":{"id":12323,"name":"PreparedSetupData","nameLocations":["5733:17:54"],"nodeType":"IdentifierPath","referencedDeclaration":14216,"src":"5733:17:54"},"referencedDeclaration":14216,"src":"5733:17:54","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$14216_storage_ptr","typeString":"struct IPluginSetup.PreparedSetupData"}},"visibility":"internal"}],"src":"5709:67:54"},"scope":12431,"src":"5528:1306:54","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[14266],"body":{"id":12429,"nodeType":"Block","src":"7053:119:54","statements":[{"expression":{"components":[{"id":12415,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12405,"src":"7064:4:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12416,"name":"_payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12408,"src":"7070:8:54","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$14224_calldata_ptr","typeString":"struct IPluginSetup.SetupPayload calldata"}}],"id":12417,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7063:16:54","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_struct$_SetupPayload_$14224_calldata_ptr_$","typeString":"tuple(address,struct IPluginSetup.SetupPayload calldata)"}},"id":12418,"nodeType":"ExpressionStatement","src":"7063:16:54"},{"expression":{"id":12427,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12419,"name":"permissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12413,"src":"7089:11:54","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"hexValue":"30","id":12421,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7119:1:54","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":12422,"name":"THIS_BUILD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12243,"src":"7122:10:54","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"expression":{"expression":{"id":12423,"name":"PermissionLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13038,"src":"7134:13:54","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PermissionLib_$13038_$","typeString":"type(library PermissionLib)"}},"id":12424,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7148:9:54","memberName":"Operation","nodeType":"MemberAccess","referencedDeclaration":13017,"src":"7134:23:54","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Operation_$13017_$","typeString":"type(enum PermissionLib.Operation)"}},"id":12425,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7158:6:54","memberName":"Revoke","nodeType":"MemberAccess","referencedDeclaration":13015,"src":"7134:30:54","typeDescriptions":{"typeIdentifier":"t_enum$_Operation_$13017","typeString":"enum PermissionLib.Operation"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_enum$_Operation_$13017","typeString":"enum PermissionLib.Operation"}],"id":12420,"name":"mockPermissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11721,"src":"7103:15:54","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_enum$_Operation_$13017_$returns$_t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint160,uint160,enum PermissionLib.Operation) pure returns (struct PermissionLib.MultiTargetPermission memory[] memory)"}},"id":12426,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7103:62:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"src":"7089:76:54","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"id":12428,"nodeType":"ExpressionStatement","src":"7089:76:54"}]},"documentation":{"id":12403,"nodeType":"StructuredDocumentation","src":"6840:28:54","text":"@inheritdoc IPluginSetup"},"functionSelector":"9cb0a124","id":12430,"implemented":true,"kind":"function","modifiers":[],"name":"prepareUninstallation","nameLocation":"6882:21:54","nodeType":"FunctionDefinition","parameters":{"id":12409,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12405,"mutability":"mutable","name":"_dao","nameLocation":"6921:4:54","nodeType":"VariableDeclaration","scope":12430,"src":"6913:12:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12404,"name":"address","nodeType":"ElementaryTypeName","src":"6913:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12408,"mutability":"mutable","name":"_payload","nameLocation":"6957:8:54","nodeType":"VariableDeclaration","scope":12430,"src":"6935:30:54","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$14224_calldata_ptr","typeString":"struct IPluginSetup.SetupPayload"},"typeName":{"id":12407,"nodeType":"UserDefinedTypeName","pathNode":{"id":12406,"name":"SetupPayload","nameLocations":["6935:12:54"],"nodeType":"IdentifierPath","referencedDeclaration":14224,"src":"6935:12:54"},"referencedDeclaration":14224,"src":"6935:12:54","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$14224_storage_ptr","typeString":"struct IPluginSetup.SetupPayload"}},"visibility":"internal"}],"src":"6903:68:54"},"returnParameters":{"id":12414,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12413,"mutability":"mutable","name":"permissions","nameLocation":"7040:11:54","nodeType":"VariableDeclaration","scope":12430,"src":"6995:56:54","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission[]"},"typeName":{"baseType":{"id":12411,"nodeType":"UserDefinedTypeName","pathNode":{"id":12410,"name":"PermissionLib.MultiTargetPermission","nameLocations":["6995:13:54","7009:21:54"],"nodeType":"IdentifierPath","referencedDeclaration":13037,"src":"6995:35:54"},"referencedDeclaration":13037,"src":"6995:35:54","typeDescriptions":{"typeIdentifier":"t_struct$_MultiTargetPermission_$13037_storage_ptr","typeString":"struct PermissionLib.MultiTargetPermission"}},"id":12412,"nodeType":"ArrayTypeName","src":"6995:37:54","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_storage_$dyn_storage_ptr","typeString":"struct PermissionLib.MultiTargetPermission[]"}},"visibility":"internal"}],"src":"6994:58:54"},"scope":12431,"src":"6873:299:54","stateMutability":"pure","virtual":false,"visibility":"external"}],"scope":12432,"src":"4631:2543:54","usedErrors":[11651,14398]}],"src":"91:7084:54"},"id":54},"src/mocks/plugin/extensions/governance/AddresslistMock.sol":{"ast":{"absolutePath":"src/mocks/plugin/extensions/governance/AddresslistMock.sol","exportedSymbols":{"Addresslist":[13831],"AddresslistMock":[12461]},"id":12462,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":12433,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:55"},{"absolutePath":"src/plugin/extensions/governance/Addresslist.sol","file":"../../../../plugin/extensions/governance/Addresslist.sol","id":12435,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":12462,"sourceUnit":13832,"src":"72:85:55","symbolAliases":[{"foreign":{"id":12434,"name":"Addresslist","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13831,"src":"80:11:55","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":12437,"name":"Addresslist","nameLocations":["323:11:55"],"nodeType":"IdentifierPath","referencedDeclaration":13831,"src":"323:11:55"},"id":12438,"nodeType":"InheritanceSpecifier","src":"323:11:55"}],"canonicalName":"AddresslistMock","contractDependencies":[],"contractKind":"contract","documentation":{"id":12436,"nodeType":"StructuredDocumentation","src":"159:136:55","text":"@notice A mock addresslist that everyone can add and remove addresses to and from, respectively.\n @dev DO NOT USE IN PRODUCTION!"},"fullyImplemented":true,"id":12461,"linearizedBaseContracts":[12461,13831],"name":"AddresslistMock","nameLocation":"304:15:55","nodeType":"ContractDefinition","nodes":[{"body":{"id":12448,"nodeType":"Block","src":"406:45:55","statements":[{"expression":{"arguments":[{"id":12445,"name":"_newAddresses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12441,"src":"430:13:55","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}],"id":12444,"name":"_addAddresses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13773,"src":"416:13:55","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_address_$dyn_calldata_ptr_$returns$__$","typeString":"function (address[] calldata)"}},"id":12446,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"416:28:55","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12447,"nodeType":"ExpressionStatement","src":"416:28:55"}]},"functionSelector":"3628731c","id":12449,"implemented":true,"kind":"function","modifiers":[],"name":"addAddresses","nameLocation":"350:12:55","nodeType":"FunctionDefinition","parameters":{"id":12442,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12441,"mutability":"mutable","name":"_newAddresses","nameLocation":"382:13:55","nodeType":"VariableDeclaration","scope":12449,"src":"363:32:55","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":12439,"name":"address","nodeType":"ElementaryTypeName","src":"363:7:55","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":12440,"nodeType":"ArrayTypeName","src":"363:9:55","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"362:34:55"},"returnParameters":{"id":12443,"nodeType":"ParameterList","parameters":[],"src":"406:0:55"},"scope":12461,"src":"341:110:55","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":12459,"nodeType":"Block","src":"529:52:55","statements":[{"expression":{"arguments":[{"id":12456,"name":"_exitingAddresses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12452,"src":"556:17:55","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}],"id":12455,"name":"_removeAddresses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13825,"src":"539:16:55","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_address_$dyn_calldata_ptr_$returns$__$","typeString":"function (address[] calldata)"}},"id":12457,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"539:35:55","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12458,"nodeType":"ExpressionStatement","src":"539:35:55"}]},"functionSelector":"a84eb999","id":12460,"implemented":true,"kind":"function","modifiers":[],"name":"removeAddresses","nameLocation":"466:15:55","nodeType":"FunctionDefinition","parameters":{"id":12453,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12452,"mutability":"mutable","name":"_exitingAddresses","nameLocation":"501:17:55","nodeType":"VariableDeclaration","scope":12460,"src":"482:36:55","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":12450,"name":"address","nodeType":"ElementaryTypeName","src":"482:7:55","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":12451,"nodeType":"ArrayTypeName","src":"482:9:55","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"481:38:55"},"returnParameters":{"id":12454,"nodeType":"ParameterList","parameters":[],"src":"529:0:55"},"scope":12461,"src":"457:124:55","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":12462,"src":"295:288:55","usedErrors":[13660]}],"src":"47:537:55"},"id":55},"src/mocks/plugin/extensions/proposal/ProposalMock.sol":{"ast":{"absolutePath":"src/mocks/plugin/extensions/proposal/ProposalMock.sol","exportedSymbols":{"IDAO":[10865],"Proposal":[14046],"ProposalMock":[12544]},"id":12545,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":12463,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:56"},{"absolutePath":"src/plugin/extensions/proposal/Proposal.sol","file":"../../../../plugin/extensions/proposal/Proposal.sol","id":12465,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":12545,"sourceUnit":14047,"src":"72:77:56","symbolAliases":[{"foreign":{"id":12464,"name":"Proposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14046,"src":"80:8:56","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/dao/IDAO.sol","file":"../../../../dao/IDAO.sol","id":12467,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":12545,"sourceUnit":10866,"src":"150:46:56","symbolAliases":[{"foreign":{"id":12466,"name":"IDAO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10865,"src":"158:4:56","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":12469,"name":"Proposal","nameLocations":["340:8:56"],"nodeType":"IdentifierPath","referencedDeclaration":14046,"src":"340:8:56"},"id":12470,"nodeType":"InheritanceSpecifier","src":"340:8:56"}],"canonicalName":"ProposalMock","contractDependencies":[],"contractKind":"contract","documentation":{"id":12468,"nodeType":"StructuredDocumentation","src":"198:117:56","text":"@notice A mock contract containing functions to create and execute proposals.\n @dev DO NOT USE IN PRODUCTION!"},"fullyImplemented":true,"id":12544,"linearizedBaseContracts":[12544,14046,9731,9743,13896],"name":"ProposalMock","nameLocation":"324:12:56","nodeType":"ContractDefinition","nodes":[{"body":{"id":12480,"nodeType":"Block","src":"421:49:56","statements":[{"expression":{"id":12478,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12475,"name":"proposalId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12473,"src":"431:10:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"id":12476,"name":"_createProposalId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13970,"src":"444:17:56","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$_t_uint256_$","typeString":"function () returns (uint256)"}},"id":12477,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"444:19:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"431:32:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12479,"nodeType":"ExpressionStatement","src":"431:32:56"}]},"functionSelector":"7b2bf56e","id":12481,"implemented":true,"kind":"function","modifiers":[],"name":"createProposalId","nameLocation":"364:16:56","nodeType":"FunctionDefinition","parameters":{"id":12471,"nodeType":"ParameterList","parameters":[],"src":"380:2:56"},"returnParameters":{"id":12474,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12473,"mutability":"mutable","name":"proposalId","nameLocation":"409:10:56","nodeType":"VariableDeclaration","scope":12481,"src":"401:18:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12472,"name":"uint256","nodeType":"ElementaryTypeName","src":"401:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"400:20:56"},"scope":12544,"src":"355:115:56","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":12511,"nodeType":"Block","src":"731:198:56","statements":[{"expression":{"id":12509,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12500,"name":"proposalId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12498,"src":"741:10:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":12502,"name":"_creator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12483,"src":"783:8:56","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12503,"name":"_metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12485,"src":"805:9:56","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":12504,"name":"_startDate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12487,"src":"828:10:56","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"id":12505,"name":"_endDate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12489,"src":"852:8:56","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"id":12506,"name":"_actions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12493,"src":"874:8:56","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Action_$10724_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IDAO.Action calldata[] calldata"}},{"id":12507,"name":"_allowFailureMap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12495,"src":"896:16:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint64","typeString":"uint64"},{"typeIdentifier":"t_uint64","typeString":"uint64"},{"typeIdentifier":"t_array$_t_struct$_Action_$10724_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IDAO.Action calldata[] calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12501,"name":"_createProposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14006,"src":"754:15:56","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_calldata_ptr_$_t_uint64_$_t_uint64_$_t_array$_t_struct$_Action_$10724_calldata_ptr_$dyn_calldata_ptr_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,bytes calldata,uint64,uint64,struct IDAO.Action calldata[] calldata,uint256) returns (uint256)"}},"id":12508,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"754:168:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"741:181:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12510,"nodeType":"ExpressionStatement","src":"741:181:56"}]},"functionSelector":"73e1166d","id":12512,"implemented":true,"kind":"function","modifiers":[],"name":"createProposal","nameLocation":"485:14:56","nodeType":"FunctionDefinition","parameters":{"id":12496,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12483,"mutability":"mutable","name":"_creator","nameLocation":"517:8:56","nodeType":"VariableDeclaration","scope":12512,"src":"509:16:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12482,"name":"address","nodeType":"ElementaryTypeName","src":"509:7:56","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12485,"mutability":"mutable","name":"_metadata","nameLocation":"550:9:56","nodeType":"VariableDeclaration","scope":12512,"src":"535:24:56","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":12484,"name":"bytes","nodeType":"ElementaryTypeName","src":"535:5:56","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":12487,"mutability":"mutable","name":"_startDate","nameLocation":"576:10:56","nodeType":"VariableDeclaration","scope":12512,"src":"569:17:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":12486,"name":"uint64","nodeType":"ElementaryTypeName","src":"569:6:56","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":12489,"mutability":"mutable","name":"_endDate","nameLocation":"603:8:56","nodeType":"VariableDeclaration","scope":12512,"src":"596:15:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":12488,"name":"uint64","nodeType":"ElementaryTypeName","src":"596:6:56","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":12493,"mutability":"mutable","name":"_actions","nameLocation":"644:8:56","nodeType":"VariableDeclaration","scope":12512,"src":"621:31:56","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Action_$10724_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IDAO.Action[]"},"typeName":{"baseType":{"id":12491,"nodeType":"UserDefinedTypeName","pathNode":{"id":12490,"name":"IDAO.Action","nameLocations":["621:4:56","626:6:56"],"nodeType":"IdentifierPath","referencedDeclaration":10724,"src":"621:11:56"},"referencedDeclaration":10724,"src":"621:11:56","typeDescriptions":{"typeIdentifier":"t_struct$_Action_$10724_storage_ptr","typeString":"struct IDAO.Action"}},"id":12492,"nodeType":"ArrayTypeName","src":"621:13:56","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Action_$10724_storage_$dyn_storage_ptr","typeString":"struct IDAO.Action[]"}},"visibility":"internal"},{"constant":false,"id":12495,"mutability":"mutable","name":"_allowFailureMap","nameLocation":"670:16:56","nodeType":"VariableDeclaration","scope":12512,"src":"662:24:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12494,"name":"uint256","nodeType":"ElementaryTypeName","src":"662:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"499:193:56"},"returnParameters":{"id":12499,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12498,"mutability":"mutable","name":"proposalId","nameLocation":"719:10:56","nodeType":"VariableDeclaration","scope":12512,"src":"711:18:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12497,"name":"uint256","nodeType":"ElementaryTypeName","src":"711:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"710:20:56"},"scope":12544,"src":"476:453:56","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":12542,"nodeType":"Block","src":"1153:108:56","statements":[{"expression":{"id":12540,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":12531,"name":"execResults","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12527,"src":"1164:11:56","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}},{"id":12532,"name":"failureMap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12529,"src":"1177:10:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":12533,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"1163:25:56","typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$_t_uint256_$","typeString":"tuple(bytes memory[] memory,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":12535,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12515,"src":"1208:4:56","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}},{"id":12536,"name":"_proposalId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12517,"src":"1214:11:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":12537,"name":"_actions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12521,"src":"1227:8:56","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Action_$10724_memory_ptr_$dyn_memory_ptr","typeString":"struct IDAO.Action memory[] memory"}},{"id":12538,"name":"_allowFailureMap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12523,"src":"1237:16:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_array$_t_struct$_Action_$10724_memory_ptr_$dyn_memory_ptr","typeString":"struct IDAO.Action memory[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12534,"name":"_executeProposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14045,"src":"1191:16:56","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IDAO_$10865_$_t_uint256_$_t_array$_t_struct$_Action_$10724_memory_ptr_$dyn_memory_ptr_$_t_uint256_$returns$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$_t_uint256_$","typeString":"function (contract IDAO,uint256,struct IDAO.Action memory[] memory,uint256) returns (bytes memory[] memory,uint256)"}},"id":12539,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1191:63:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$_t_uint256_$","typeString":"tuple(bytes memory[] memory,uint256)"}},"src":"1163:91:56","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12541,"nodeType":"ExpressionStatement","src":"1163:91:56"}]},"functionSelector":"634a9a88","id":12543,"implemented":true,"kind":"function","modifiers":[],"name":"executeProposal","nameLocation":"944:15:56","nodeType":"FunctionDefinition","parameters":{"id":12524,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12515,"mutability":"mutable","name":"_dao","nameLocation":"974:4:56","nodeType":"VariableDeclaration","scope":12543,"src":"969:9:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"},"typeName":{"id":12514,"nodeType":"UserDefinedTypeName","pathNode":{"id":12513,"name":"IDAO","nameLocations":["969:4:56"],"nodeType":"IdentifierPath","referencedDeclaration":10865,"src":"969:4:56"},"referencedDeclaration":10865,"src":"969:4:56","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}},"visibility":"internal"},{"constant":false,"id":12517,"mutability":"mutable","name":"_proposalId","nameLocation":"996:11:56","nodeType":"VariableDeclaration","scope":12543,"src":"988:19:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12516,"name":"uint256","nodeType":"ElementaryTypeName","src":"988:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12521,"mutability":"mutable","name":"_actions","nameLocation":"1038:8:56","nodeType":"VariableDeclaration","scope":12543,"src":"1017:29:56","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Action_$10724_memory_ptr_$dyn_memory_ptr","typeString":"struct IDAO.Action[]"},"typeName":{"baseType":{"id":12519,"nodeType":"UserDefinedTypeName","pathNode":{"id":12518,"name":"IDAO.Action","nameLocations":["1017:4:56","1022:6:56"],"nodeType":"IdentifierPath","referencedDeclaration":10724,"src":"1017:11:56"},"referencedDeclaration":10724,"src":"1017:11:56","typeDescriptions":{"typeIdentifier":"t_struct$_Action_$10724_storage_ptr","typeString":"struct IDAO.Action"}},"id":12520,"nodeType":"ArrayTypeName","src":"1017:13:56","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Action_$10724_storage_$dyn_storage_ptr","typeString":"struct IDAO.Action[]"}},"visibility":"internal"},{"constant":false,"id":12523,"mutability":"mutable","name":"_allowFailureMap","nameLocation":"1064:16:56","nodeType":"VariableDeclaration","scope":12543,"src":"1056:24:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12522,"name":"uint256","nodeType":"ElementaryTypeName","src":"1056:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"959:127:56"},"returnParameters":{"id":12530,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12527,"mutability":"mutable","name":"execResults","nameLocation":"1120:11:56","nodeType":"VariableDeclaration","scope":12543,"src":"1105:26:56","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":12525,"name":"bytes","nodeType":"ElementaryTypeName","src":"1105:5:56","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":12526,"nodeType":"ArrayTypeName","src":"1105:7:56","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"},{"constant":false,"id":12529,"mutability":"mutable","name":"failureMap","nameLocation":"1141:10:56","nodeType":"VariableDeclaration","scope":12543,"src":"1133:18:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12528,"name":"uint256","nodeType":"ElementaryTypeName","src":"1133:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1104:48:56"},"scope":12544,"src":"935:326:56","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":12545,"src":"315:948:56","usedErrors":[]}],"src":"47:1217:56"},"id":56},"src/mocks/plugin/extensions/proposal/ProposalUpgradeableMock.sol":{"ast":{"absolutePath":"src/mocks/plugin/extensions/proposal/ProposalUpgradeableMock.sol","exportedSymbols":{"IDAO":[10865],"ProposalUpgradeable":[14201],"ProposalUpgradeableMock":[12627]},"id":12628,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":12546,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:57"},{"absolutePath":"src/plugin/extensions/proposal/ProposalUpgradeable.sol","file":"../../../../plugin/extensions/proposal/ProposalUpgradeable.sol","id":12548,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":12628,"sourceUnit":14202,"src":"72:99:57","symbolAliases":[{"foreign":{"id":12547,"name":"ProposalUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14201,"src":"80:19:57","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/dao/IDAO.sol","file":"../../../../dao/IDAO.sol","id":12550,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":12628,"sourceUnit":10866,"src":"172:46:57","symbolAliases":[{"foreign":{"id":12549,"name":"IDAO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10865,"src":"180:4:57","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":12552,"name":"ProposalUpgradeable","nameLocations":["461:19:57"],"nodeType":"IdentifierPath","referencedDeclaration":14201,"src":"461:19:57"},"id":12553,"nodeType":"InheritanceSpecifier","src":"461:19:57"}],"canonicalName":"ProposalUpgradeableMock","contractDependencies":[],"contractKind":"contract","documentation":{"id":12551,"nodeType":"StructuredDocumentation","src":"220:205:57","text":"@notice A mock contract containing functions to create and execute proposals as well as storage gaps in inherited contracts to be used in UUPS upgradeable contracts.\n @dev DO NOT USE IN PRODUCTION!"},"fullyImplemented":true,"id":12627,"linearizedBaseContracts":[12627,14201,2822,2834,534,13896],"name":"ProposalUpgradeableMock","nameLocation":"434:23:57","nodeType":"ContractDefinition","nodes":[{"body":{"id":12563,"nodeType":"Block","src":"553:49:57","statements":[{"expression":{"id":12561,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12558,"name":"proposalId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12556,"src":"563:10:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"id":12559,"name":"_createProposalId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14120,"src":"576:17:57","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$_t_uint256_$","typeString":"function () returns (uint256)"}},"id":12560,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"576:19:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"563:32:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12562,"nodeType":"ExpressionStatement","src":"563:32:57"}]},"functionSelector":"7b2bf56e","id":12564,"implemented":true,"kind":"function","modifiers":[],"name":"createProposalId","nameLocation":"496:16:57","nodeType":"FunctionDefinition","parameters":{"id":12554,"nodeType":"ParameterList","parameters":[],"src":"512:2:57"},"returnParameters":{"id":12557,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12556,"mutability":"mutable","name":"proposalId","nameLocation":"541:10:57","nodeType":"VariableDeclaration","scope":12564,"src":"533:18:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12555,"name":"uint256","nodeType":"ElementaryTypeName","src":"533:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"532:20:57"},"scope":12627,"src":"487:115:57","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":12594,"nodeType":"Block","src":"863:198:57","statements":[{"expression":{"id":12592,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12583,"name":"proposalId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12581,"src":"873:10:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":12585,"name":"_creator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12566,"src":"915:8:57","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12586,"name":"_metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12568,"src":"937:9:57","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":12587,"name":"_startDate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12570,"src":"960:10:57","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"id":12588,"name":"_endDate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12572,"src":"984:8:57","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"id":12589,"name":"_actions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12576,"src":"1006:8:57","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Action_$10724_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IDAO.Action calldata[] calldata"}},{"id":12590,"name":"_allowFailureMap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12578,"src":"1028:16:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint64","typeString":"uint64"},{"typeIdentifier":"t_uint64","typeString":"uint64"},{"typeIdentifier":"t_array$_t_struct$_Action_$10724_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IDAO.Action calldata[] calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12584,"name":"_createProposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14156,"src":"886:15:57","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_calldata_ptr_$_t_uint64_$_t_uint64_$_t_array$_t_struct$_Action_$10724_calldata_ptr_$dyn_calldata_ptr_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,bytes calldata,uint64,uint64,struct IDAO.Action calldata[] calldata,uint256) returns (uint256)"}},"id":12591,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"886:168:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"873:181:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12593,"nodeType":"ExpressionStatement","src":"873:181:57"}]},"functionSelector":"73e1166d","id":12595,"implemented":true,"kind":"function","modifiers":[],"name":"createProposal","nameLocation":"617:14:57","nodeType":"FunctionDefinition","parameters":{"id":12579,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12566,"mutability":"mutable","name":"_creator","nameLocation":"649:8:57","nodeType":"VariableDeclaration","scope":12595,"src":"641:16:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12565,"name":"address","nodeType":"ElementaryTypeName","src":"641:7:57","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12568,"mutability":"mutable","name":"_metadata","nameLocation":"682:9:57","nodeType":"VariableDeclaration","scope":12595,"src":"667:24:57","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":12567,"name":"bytes","nodeType":"ElementaryTypeName","src":"667:5:57","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":12570,"mutability":"mutable","name":"_startDate","nameLocation":"708:10:57","nodeType":"VariableDeclaration","scope":12595,"src":"701:17:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":12569,"name":"uint64","nodeType":"ElementaryTypeName","src":"701:6:57","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":12572,"mutability":"mutable","name":"_endDate","nameLocation":"735:8:57","nodeType":"VariableDeclaration","scope":12595,"src":"728:15:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":12571,"name":"uint64","nodeType":"ElementaryTypeName","src":"728:6:57","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":12576,"mutability":"mutable","name":"_actions","nameLocation":"776:8:57","nodeType":"VariableDeclaration","scope":12595,"src":"753:31:57","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Action_$10724_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IDAO.Action[]"},"typeName":{"baseType":{"id":12574,"nodeType":"UserDefinedTypeName","pathNode":{"id":12573,"name":"IDAO.Action","nameLocations":["753:4:57","758:6:57"],"nodeType":"IdentifierPath","referencedDeclaration":10724,"src":"753:11:57"},"referencedDeclaration":10724,"src":"753:11:57","typeDescriptions":{"typeIdentifier":"t_struct$_Action_$10724_storage_ptr","typeString":"struct IDAO.Action"}},"id":12575,"nodeType":"ArrayTypeName","src":"753:13:57","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Action_$10724_storage_$dyn_storage_ptr","typeString":"struct IDAO.Action[]"}},"visibility":"internal"},{"constant":false,"id":12578,"mutability":"mutable","name":"_allowFailureMap","nameLocation":"802:16:57","nodeType":"VariableDeclaration","scope":12595,"src":"794:24:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12577,"name":"uint256","nodeType":"ElementaryTypeName","src":"794:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"631:193:57"},"returnParameters":{"id":12582,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12581,"mutability":"mutable","name":"proposalId","nameLocation":"851:10:57","nodeType":"VariableDeclaration","scope":12595,"src":"843:18:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12580,"name":"uint256","nodeType":"ElementaryTypeName","src":"843:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"842:20:57"},"scope":12627,"src":"608:453:57","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":12625,"nodeType":"Block","src":"1285:108:57","statements":[{"expression":{"id":12623,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":12614,"name":"execResults","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12610,"src":"1296:11:57","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}},{"id":12615,"name":"failureMap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12612,"src":"1309:10:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":12616,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"1295:25:57","typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$_t_uint256_$","typeString":"tuple(bytes memory[] memory,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":12618,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12598,"src":"1340:4:57","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}},{"id":12619,"name":"_proposalId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12600,"src":"1346:11:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":12620,"name":"_actions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12604,"src":"1359:8:57","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Action_$10724_memory_ptr_$dyn_memory_ptr","typeString":"struct IDAO.Action memory[] memory"}},{"id":12621,"name":"_allowFailureMap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12606,"src":"1369:16:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_array$_t_struct$_Action_$10724_memory_ptr_$dyn_memory_ptr","typeString":"struct IDAO.Action memory[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12617,"name":"_executeProposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14195,"src":"1323:16:57","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IDAO_$10865_$_t_uint256_$_t_array$_t_struct$_Action_$10724_memory_ptr_$dyn_memory_ptr_$_t_uint256_$returns$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$_t_uint256_$","typeString":"function (contract IDAO,uint256,struct IDAO.Action memory[] memory,uint256) returns (bytes memory[] memory,uint256)"}},"id":12622,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1323:63:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$_t_uint256_$","typeString":"tuple(bytes memory[] memory,uint256)"}},"src":"1295:91:57","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12624,"nodeType":"ExpressionStatement","src":"1295:91:57"}]},"functionSelector":"634a9a88","id":12626,"implemented":true,"kind":"function","modifiers":[],"name":"executeProposal","nameLocation":"1076:15:57","nodeType":"FunctionDefinition","parameters":{"id":12607,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12598,"mutability":"mutable","name":"_dao","nameLocation":"1106:4:57","nodeType":"VariableDeclaration","scope":12626,"src":"1101:9:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"},"typeName":{"id":12597,"nodeType":"UserDefinedTypeName","pathNode":{"id":12596,"name":"IDAO","nameLocations":["1101:4:57"],"nodeType":"IdentifierPath","referencedDeclaration":10865,"src":"1101:4:57"},"referencedDeclaration":10865,"src":"1101:4:57","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}},"visibility":"internal"},{"constant":false,"id":12600,"mutability":"mutable","name":"_proposalId","nameLocation":"1128:11:57","nodeType":"VariableDeclaration","scope":12626,"src":"1120:19:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12599,"name":"uint256","nodeType":"ElementaryTypeName","src":"1120:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12604,"mutability":"mutable","name":"_actions","nameLocation":"1170:8:57","nodeType":"VariableDeclaration","scope":12626,"src":"1149:29:57","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Action_$10724_memory_ptr_$dyn_memory_ptr","typeString":"struct IDAO.Action[]"},"typeName":{"baseType":{"id":12602,"nodeType":"UserDefinedTypeName","pathNode":{"id":12601,"name":"IDAO.Action","nameLocations":["1149:4:57","1154:6:57"],"nodeType":"IdentifierPath","referencedDeclaration":10724,"src":"1149:11:57"},"referencedDeclaration":10724,"src":"1149:11:57","typeDescriptions":{"typeIdentifier":"t_struct$_Action_$10724_storage_ptr","typeString":"struct IDAO.Action"}},"id":12603,"nodeType":"ArrayTypeName","src":"1149:13:57","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Action_$10724_storage_$dyn_storage_ptr","typeString":"struct IDAO.Action[]"}},"visibility":"internal"},{"constant":false,"id":12606,"mutability":"mutable","name":"_allowFailureMap","nameLocation":"1196:16:57","nodeType":"VariableDeclaration","scope":12626,"src":"1188:24:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12605,"name":"uint256","nodeType":"ElementaryTypeName","src":"1188:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1091:127:57"},"returnParameters":{"id":12613,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12610,"mutability":"mutable","name":"execResults","nameLocation":"1252:11:57","nodeType":"VariableDeclaration","scope":12626,"src":"1237:26:57","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":12608,"name":"bytes","nodeType":"ElementaryTypeName","src":"1237:5:57","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":12609,"nodeType":"ArrayTypeName","src":"1237:7:57","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"},{"constant":false,"id":12612,"mutability":"mutable","name":"failureMap","nameLocation":"1273:10:57","nodeType":"VariableDeclaration","scope":12626,"src":"1265:18:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12611,"name":"uint256","nodeType":"ElementaryTypeName","src":"1265:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1236:48:57"},"scope":12627,"src":"1067:326:57","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":12628,"src":"425:970:57","usedErrors":[]}],"src":"47:1349:57"},"id":57},"src/mocks/token/ERC1155Mock.sol":{"ast":{"absolutePath":"src/mocks/token/ERC1155Mock.sol","exportedSymbols":{"ERC1155":[6978],"ERC1155Mock":[12680]},"id":12681,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":12629,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:58"},{"absolutePath":"@openzeppelin/contracts/token/ERC1155/ERC1155.sol","file":"@openzeppelin/contracts/token/ERC1155/ERC1155.sol","id":12631,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":12681,"sourceUnit":6979,"src":"72:74:58","symbolAliases":[{"foreign":{"id":12630,"name":"ERC1155","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6978,"src":"80:7:58","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":12633,"name":"ERC1155","nameLocations":["327:7:58"],"nodeType":"IdentifierPath","referencedDeclaration":6978,"src":"327:7:58"},"id":12634,"nodeType":"InheritanceSpecifier","src":"327:7:58"}],"canonicalName":"ERC1155Mock","contractDependencies":[],"contractKind":"contract","documentation":{"id":12632,"nodeType":"StructuredDocumentation","src":"148:155:58","text":"@notice A mock [ERC-1155](https://eips.ethereum.org/EIPS/eip-1155) token that can be minted and burned by everyone.\n @dev DO NOT USE IN PRODUCTION!"},"fullyImplemented":true,"id":12680,"linearizedBaseContracts":[12680,6978,7156,7100,9731,9743,9294],"name":"ERC1155Mock","nameLocation":"312:11:58","nodeType":"ContractDefinition","nodes":[{"body":{"id":12642,"nodeType":"Block","src":"387:2:58","statements":[]},"id":12643,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":12639,"name":"_uri","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12636,"src":"381:4:58","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"id":12640,"kind":"baseConstructorSpecifier","modifierName":{"id":12638,"name":"ERC1155","nameLocations":["373:7:58"],"nodeType":"IdentifierPath","referencedDeclaration":6978,"src":"373:7:58"},"nodeType":"ModifierInvocation","src":"373:13:58"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":12637,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12636,"mutability":"mutable","name":"_uri","nameLocation":"367:4:58","nodeType":"VariableDeclaration","scope":12643,"src":"353:18:58","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":12635,"name":"string","nodeType":"ElementaryTypeName","src":"353:6:58","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"352:20:58"},"returnParameters":{"id":12641,"nodeType":"ParameterList","parameters":[],"src":"387:0:58"},"scope":12680,"src":"341:48:58","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":12662,"nodeType":"Block","src":"466:59:58","statements":[{"expression":{"arguments":[{"id":12653,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12645,"src":"482:7:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12654,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12647,"src":"491:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":12655,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12649,"src":"500:6:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"","id":12658,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"514:2:58","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":12657,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"508:5:58","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":12656,"name":"bytes","nodeType":"ElementaryTypeName","src":"508:5:58","typeDescriptions":{}}},"id":12659,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"508:9:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":12652,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6412,"src":"476:5:58","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,uint256,uint256,bytes memory)"}},"id":12660,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"476:42:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12661,"nodeType":"ExpressionStatement","src":"476:42:58"}]},"functionSelector":"156e29f6","id":12663,"implemented":true,"kind":"function","modifiers":[],"name":"mint","nameLocation":"404:4:58","nodeType":"FunctionDefinition","parameters":{"id":12650,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12645,"mutability":"mutable","name":"account","nameLocation":"417:7:58","nodeType":"VariableDeclaration","scope":12663,"src":"409:15:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12644,"name":"address","nodeType":"ElementaryTypeName","src":"409:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12647,"mutability":"mutable","name":"tokenId","nameLocation":"434:7:58","nodeType":"VariableDeclaration","scope":12663,"src":"426:15:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12646,"name":"uint256","nodeType":"ElementaryTypeName","src":"426:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12649,"mutability":"mutable","name":"amount","nameLocation":"451:6:58","nodeType":"VariableDeclaration","scope":12663,"src":"443:14:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12648,"name":"uint256","nodeType":"ElementaryTypeName","src":"443:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"408:50:58"},"returnParameters":{"id":12651,"nodeType":"ParameterList","parameters":[],"src":"466:0:58"},"scope":12680,"src":"395:130:58","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":12678,"nodeType":"Block","src":"602:48:58","statements":[{"expression":{"arguments":[{"id":12673,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12665,"src":"618:7:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12674,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12667,"src":"627:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":12675,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12669,"src":"636:6:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12672,"name":"_burn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6628,"src":"612:5:58","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,uint256,uint256)"}},"id":12676,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"612:31:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12677,"nodeType":"ExpressionStatement","src":"612:31:58"}]},"functionSelector":"f5298aca","id":12679,"implemented":true,"kind":"function","modifiers":[],"name":"burn","nameLocation":"540:4:58","nodeType":"FunctionDefinition","parameters":{"id":12670,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12665,"mutability":"mutable","name":"account","nameLocation":"553:7:58","nodeType":"VariableDeclaration","scope":12679,"src":"545:15:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12664,"name":"address","nodeType":"ElementaryTypeName","src":"545:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12667,"mutability":"mutable","name":"tokenId","nameLocation":"570:7:58","nodeType":"VariableDeclaration","scope":12679,"src":"562:15:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12666,"name":"uint256","nodeType":"ElementaryTypeName","src":"562:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12669,"mutability":"mutable","name":"amount","nameLocation":"587:6:58","nodeType":"VariableDeclaration","scope":12679,"src":"579:14:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12668,"name":"uint256","nodeType":"ElementaryTypeName","src":"579:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"544:50:58"},"returnParameters":{"id":12671,"nodeType":"ParameterList","parameters":[],"src":"602:0:58"},"scope":12680,"src":"531:119:58","stateMutability":"nonpayable","virtual":false,"visibility":"public"}],"scope":12681,"src":"303:349:58","usedErrors":[]}],"src":"47:606:58"},"id":58},"src/mocks/token/ERC20Mock.sol":{"ast":{"absolutePath":"src/mocks/token/ERC20Mock.sol","exportedSymbols":{"ERC20":[7743],"ERC20Mock":[12760]},"id":12761,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":12682,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:59"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/ERC20.sol","file":"@openzeppelin/contracts/token/ERC20/ERC20.sol","id":12684,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":12761,"sourceUnit":7744,"src":"72:68:59","symbolAliases":[{"foreign":{"id":12683,"name":"ERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7743,"src":"80:5:59","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":12686,"name":"ERC20","nameLocations":["315:5:59"],"nodeType":"IdentifierPath","referencedDeclaration":7743,"src":"315:5:59"},"id":12687,"nodeType":"InheritanceSpecifier","src":"315:5:59"}],"canonicalName":"ERC20Mock","contractDependencies":[],"contractKind":"contract","documentation":{"id":12685,"nodeType":"StructuredDocumentation","src":"142:151:59","text":"@notice A mock [ERC-20](https://eips.ethereum.org/EIPS/eip-20) token that can be minted and burned by everyone.\n @dev DO NOT USE IN PRODUCTION!"},"fullyImplemented":true,"id":12760,"linearizedBaseContracts":[12760,7743,7846,7821,9294],"name":"ERC20Mock","nameLocation":"302:9:59","nodeType":"ContractDefinition","nodes":[{"constant":false,"functionSelector":"f785ef72","id":12690,"mutability":"mutable","name":"decimals_","nameLocation":"340:9:59","nodeType":"VariableDeclaration","scope":12760,"src":"327:27:59","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":12688,"name":"uint8","nodeType":"ElementaryTypeName","src":"327:5:59","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"3138","id":12689,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"352:2:59","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"},"visibility":"public"},{"body":{"id":12701,"nodeType":"Block","src":"439:2:59","statements":[]},"id":12702,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":12697,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12692,"src":"423:5:59","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":12698,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12694,"src":"430:7:59","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"id":12699,"kind":"baseConstructorSpecifier","modifierName":{"id":12696,"name":"ERC20","nameLocations":["417:5:59"],"nodeType":"IdentifierPath","referencedDeclaration":7743,"src":"417:5:59"},"nodeType":"ModifierInvocation","src":"417:21:59"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":12695,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12692,"mutability":"mutable","name":"_name","nameLocation":"387:5:59","nodeType":"VariableDeclaration","scope":12702,"src":"373:19:59","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":12691,"name":"string","nodeType":"ElementaryTypeName","src":"373:6:59","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":12694,"mutability":"mutable","name":"_symbol","nameLocation":"408:7:59","nodeType":"VariableDeclaration","scope":12702,"src":"394:21:59","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":12693,"name":"string","nodeType":"ElementaryTypeName","src":"394:6:59","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"372:44:59"},"returnParameters":{"id":12700,"nodeType":"ParameterList","parameters":[],"src":"439:0:59"},"scope":12760,"src":"361:80:59","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":12711,"nodeType":"Block","src":"492:38:59","statements":[{"expression":{"id":12709,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12707,"name":"decimals_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12690,"src":"502:9:59","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":12708,"name":"_decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12704,"src":"514:9:59","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"502:21:59","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":12710,"nodeType":"ExpressionStatement","src":"502:21:59"}]},"functionSelector":"7a1395aa","id":12712,"implemented":true,"kind":"function","modifiers":[],"name":"setDecimals","nameLocation":"456:11:59","nodeType":"FunctionDefinition","parameters":{"id":12705,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12704,"mutability":"mutable","name":"_decimals","nameLocation":"474:9:59","nodeType":"VariableDeclaration","scope":12712,"src":"468:15:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":12703,"name":"uint8","nodeType":"ElementaryTypeName","src":"468:5:59","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"467:17:59"},"returnParameters":{"id":12706,"nodeType":"ParameterList","parameters":[],"src":"492:0:59"},"scope":12760,"src":"447:83:59","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[7231],"body":{"id":12720,"nodeType":"Block","src":"593:33:59","statements":[{"expression":{"id":12718,"name":"decimals_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12690,"src":"610:9:59","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"functionReturnParameters":12717,"id":12719,"nodeType":"Return","src":"603:16:59"}]},"functionSelector":"313ce567","id":12721,"implemented":true,"kind":"function","modifiers":[],"name":"decimals","nameLocation":"545:8:59","nodeType":"FunctionDefinition","overrides":{"id":12714,"nodeType":"OverrideSpecifier","overrides":[],"src":"568:8:59"},"parameters":{"id":12713,"nodeType":"ParameterList","parameters":[],"src":"553:2:59"},"returnParameters":{"id":12717,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12716,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12721,"src":"586:5:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":12715,"name":"uint8","nodeType":"ElementaryTypeName","src":"586:5:59","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"585:7:59"},"scope":12760,"src":"536:90:59","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":12758,"nodeType":"Block","src":"794:191:59","statements":[{"assignments":[12729],"declarations":[{"constant":false,"id":12729,"mutability":"mutable","name":"old","nameLocation":"812:3:59","nodeType":"VariableDeclaration","scope":12758,"src":"804:11:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12728,"name":"uint256","nodeType":"ElementaryTypeName","src":"804:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12733,"initialValue":{"arguments":[{"id":12731,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12723,"src":"828:2:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":12730,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7255,"src":"818:9:59","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":12732,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"818:13:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"804:27:59"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12736,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12734,"name":"old","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12729,"src":"845:3:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":12735,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12725,"src":"851:6:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"845:12:59","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12747,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12745,"name":"old","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12729,"src":"917:3:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":12746,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12725,"src":"923:6:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"917:12:59","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12756,"nodeType":"IfStatement","src":"913:66:59","trueBody":{"id":12755,"nodeType":"Block","src":"931:48:59","statements":[{"expression":{"arguments":[{"id":12749,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12723,"src":"951:2:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12752,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12750,"name":"old","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12729,"src":"955:3:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":12751,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12725,"src":"961:6:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"955:12:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12748,"name":"_burn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7632,"src":"945:5:59","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":12753,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"945:23:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12754,"nodeType":"ExpressionStatement","src":"945:23:59"}]}},"id":12757,"nodeType":"IfStatement","src":"841:138:59","trueBody":{"id":12744,"nodeType":"Block","src":"859:48:59","statements":[{"expression":{"arguments":[{"id":12738,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12723,"src":"879:2:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12741,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12739,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12725,"src":"883:6:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":12740,"name":"old","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12729,"src":"892:3:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"883:12:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12737,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7560,"src":"873:5:59","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":12742,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"873:23:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12743,"nodeType":"ExpressionStatement","src":"873:23:59"}]}}]},"functionSelector":"e30443bc","id":12759,"implemented":true,"kind":"function","modifiers":[],"name":"setBalance","nameLocation":"748:10:59","nodeType":"FunctionDefinition","parameters":{"id":12726,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12723,"mutability":"mutable","name":"to","nameLocation":"767:2:59","nodeType":"VariableDeclaration","scope":12759,"src":"759:10:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12722,"name":"address","nodeType":"ElementaryTypeName","src":"759:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12725,"mutability":"mutable","name":"amount","nameLocation":"779:6:59","nodeType":"VariableDeclaration","scope":12759,"src":"771:14:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12724,"name":"uint256","nodeType":"ElementaryTypeName","src":"771:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"758:28:59"},"returnParameters":{"id":12727,"nodeType":"ParameterList","parameters":[],"src":"794:0:59"},"scope":12760,"src":"739:246:59","stateMutability":"nonpayable","virtual":false,"visibility":"public"}],"scope":12761,"src":"293:694:59","usedErrors":[]}],"src":"47:941:59"},"id":59},"src/mocks/token/ERC721Mock.sol":{"ast":{"absolutePath":"src/mocks/token/ERC721Mock.sol","exportedSymbols":{"ERC721":[8773],"ERC721Mock":[12803]},"id":12804,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":12762,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:60"},{"absolutePath":"@openzeppelin/contracts/token/ERC721/ERC721.sol","file":"@openzeppelin/contracts/token/ERC721/ERC721.sol","id":12764,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":12804,"sourceUnit":8774,"src":"72:71:60","symbolAliases":[{"foreign":{"id":12763,"name":"ERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8773,"src":"80:6:60","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":12766,"name":"ERC721","nameLocations":["321:6:60"],"nodeType":"IdentifierPath","referencedDeclaration":8773,"src":"321:6:60"},"id":12767,"nodeType":"InheritanceSpecifier","src":"321:6:60"}],"canonicalName":"ERC721Mock","contractDependencies":[],"contractKind":"contract","documentation":{"id":12765,"nodeType":"StructuredDocumentation","src":"145:153:60","text":"@notice A mock [ERC-721](https://eips.ethereum.org/EIPS/eip-721) token that can be minted and burned by everyone.\n @dev DO NOT USE IN PRODUCTION!"},"fullyImplemented":true,"id":12803,"linearizedBaseContracts":[12803,8773,8934,8889,9731,9743,9294],"name":"ERC721Mock","nameLocation":"307:10:60","nodeType":"ContractDefinition","nodes":[{"body":{"id":12778,"nodeType":"Block","src":"413:2:60","statements":[]},"id":12779,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":12774,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12769,"src":"397:5:60","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":12775,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12771,"src":"404:7:60","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"id":12776,"kind":"baseConstructorSpecifier","modifierName":{"id":12773,"name":"ERC721","nameLocations":["390:6:60"],"nodeType":"IdentifierPath","referencedDeclaration":8773,"src":"390:6:60"},"nodeType":"ModifierInvocation","src":"390:22:60"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":12772,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12769,"mutability":"mutable","name":"name_","nameLocation":"360:5:60","nodeType":"VariableDeclaration","scope":12779,"src":"346:19:60","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":12768,"name":"string","nodeType":"ElementaryTypeName","src":"346:6:60","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":12771,"mutability":"mutable","name":"symbol_","nameLocation":"381:7:60","nodeType":"VariableDeclaration","scope":12779,"src":"367:21:60","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":12770,"name":"string","nodeType":"ElementaryTypeName","src":"367:6:60","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"345:44:60"},"returnParameters":{"id":12777,"nodeType":"ParameterList","parameters":[],"src":"413:0:60"},"scope":12803,"src":"334:81:60","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":12791,"nodeType":"Block","src":"476:40:60","statements":[{"expression":{"arguments":[{"id":12787,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12781,"src":"492:7:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12788,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12783,"src":"501:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12786,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8447,"src":"486:5:60","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":12789,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"486:23:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12790,"nodeType":"ExpressionStatement","src":"486:23:60"}]},"functionSelector":"40c10f19","id":12792,"implemented":true,"kind":"function","modifiers":[],"name":"mint","nameLocation":"430:4:60","nodeType":"FunctionDefinition","parameters":{"id":12784,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12781,"mutability":"mutable","name":"account","nameLocation":"443:7:60","nodeType":"VariableDeclaration","scope":12792,"src":"435:15:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12780,"name":"address","nodeType":"ElementaryTypeName","src":"435:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12783,"mutability":"mutable","name":"tokenId","nameLocation":"460:7:60","nodeType":"VariableDeclaration","scope":12792,"src":"452:15:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12782,"name":"uint256","nodeType":"ElementaryTypeName","src":"452:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"434:34:60"},"returnParameters":{"id":12785,"nodeType":"ParameterList","parameters":[],"src":"476:0:60"},"scope":12803,"src":"421:95:60","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":12801,"nodeType":"Block","src":"560:31:60","statements":[{"expression":{"arguments":[{"id":12798,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12794,"src":"576:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12797,"name":"_burn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8514,"src":"570:5:60","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":12799,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"570:14:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12800,"nodeType":"ExpressionStatement","src":"570:14:60"}]},"functionSelector":"42966c68","id":12802,"implemented":true,"kind":"function","modifiers":[],"name":"burn","nameLocation":"531:4:60","nodeType":"FunctionDefinition","parameters":{"id":12795,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12794,"mutability":"mutable","name":"tokenId","nameLocation":"544:7:60","nodeType":"VariableDeclaration","scope":12802,"src":"536:15:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12793,"name":"uint256","nodeType":"ElementaryTypeName","src":"536:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"535:17:60"},"returnParameters":{"id":12796,"nodeType":"ParameterList","parameters":[],"src":"560:0:60"},"scope":12803,"src":"522:69:60","stateMutability":"nonpayable","virtual":false,"visibility":"public"}],"scope":12804,"src":"298:295:60","usedErrors":[]}],"src":"47:547:60"},"id":60},"src/mocks/utils/math/BitmapMock.sol":{"ast":{"absolutePath":"src/mocks/utils/math/BitmapMock.sol","exportedSymbols":{"BitmapMock":[12840],"_flipBit":[14637],"_hasBit":[14619]},"id":12841,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":12805,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:61"},{"absolutePath":"src/utils/math/BitMap.sol","file":"../../../utils/math/BitMap.sol","id":12808,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":12841,"sourceUnit":14638,"src":"72:86:61","symbolAliases":[{"foreign":{"id":12806,"name":"hasBit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14619,"src":"80:6:61","typeDescriptions":{}},"local":"_hasBit","nameLocation":"-1:-1:-1"},{"foreign":{"id":12807,"name":"flipBit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14637,"src":"99:7:61","typeDescriptions":{}},"local":"_flipBit","nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"BitmapMock","contractDependencies":[],"contractKind":"contract","documentation":{"id":12809,"nodeType":"StructuredDocumentation","src":"160:106:61","text":"@notice A mock contract containing functions manipulating bitmaps.\n @dev DO NOT USE IN PRODUCTION!"},"fullyImplemented":true,"id":12840,"linearizedBaseContracts":[12840],"name":"BitmapMock","nameLocation":"275:10:61","nodeType":"ContractDefinition","nodes":[{"body":{"id":12823,"nodeType":"Block","src":"366:48:61","statements":[{"expression":{"arguments":[{"id":12819,"name":"_bitmap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12811,"src":"391:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":12820,"name":"_index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12813,"src":"400:6:61","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":12818,"name":"_hasBit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14619,"src":"383:7:61","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint8_$returns$_t_bool_$","typeString":"function (uint256,uint8) pure returns (bool)"}},"id":12821,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"383:24:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":12817,"id":12822,"nodeType":"Return","src":"376:31:61"}]},"functionSelector":"30c869ef","id":12824,"implemented":true,"kind":"function","modifiers":[],"name":"hasBit","nameLocation":"301:6:61","nodeType":"FunctionDefinition","parameters":{"id":12814,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12811,"mutability":"mutable","name":"_bitmap","nameLocation":"316:7:61","nodeType":"VariableDeclaration","scope":12824,"src":"308:15:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12810,"name":"uint256","nodeType":"ElementaryTypeName","src":"308:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12813,"mutability":"mutable","name":"_index","nameLocation":"331:6:61","nodeType":"VariableDeclaration","scope":12824,"src":"325:12:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":12812,"name":"uint8","nodeType":"ElementaryTypeName","src":"325:5:61","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"307:31:61"},"returnParameters":{"id":12817,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12816,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12824,"src":"360:4:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":12815,"name":"bool","nodeType":"ElementaryTypeName","src":"360:4:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"359:6:61"},"scope":12840,"src":"292:122:61","stateMutability":"pure","virtual":false,"visibility":"public"},{"body":{"id":12838,"nodeType":"Block","src":"498:49:61","statements":[{"expression":{"arguments":[{"id":12834,"name":"_bitmap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12826,"src":"524:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":12835,"name":"_index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12828,"src":"533:6:61","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":12833,"name":"_flipBit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14637,"src":"515:8:61","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint8_$returns$_t_uint256_$","typeString":"function (uint256,uint8) pure returns (uint256)"}},"id":12836,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"515:25:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":12832,"id":12837,"nodeType":"Return","src":"508:32:61"}]},"functionSelector":"7a3a1485","id":12839,"implemented":true,"kind":"function","modifiers":[],"name":"flipBit","nameLocation":"429:7:61","nodeType":"FunctionDefinition","parameters":{"id":12829,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12826,"mutability":"mutable","name":"_bitmap","nameLocation":"445:7:61","nodeType":"VariableDeclaration","scope":12839,"src":"437:15:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12825,"name":"uint256","nodeType":"ElementaryTypeName","src":"437:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12828,"mutability":"mutable","name":"_index","nameLocation":"460:6:61","nodeType":"VariableDeclaration","scope":12839,"src":"454:12:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":12827,"name":"uint8","nodeType":"ElementaryTypeName","src":"454:5:61","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"436:31:61"},"returnParameters":{"id":12832,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12831,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12839,"src":"489:7:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12830,"name":"uint256","nodeType":"ElementaryTypeName","src":"489:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"488:9:61"},"scope":12840,"src":"420:127:61","stateMutability":"pure","virtual":false,"visibility":"public"}],"scope":12841,"src":"266:283:61","usedErrors":[]}],"src":"47:503:61"},"id":61},"src/mocks/utils/math/RatioMock.sol":{"ast":{"absolutePath":"src/mocks/utils/math/RatioMock.sol","exportedSymbols":{"RATIO_BASE":[14644],"RatioMock":[12870],"_applyRatioCeiled":[14698]},"id":12871,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":12842,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:62"},{"absolutePath":"src/utils/math/Ratio.sol","file":"../../../utils/math/Ratio.sol","id":12845,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":12871,"sourceUnit":14699,"src":"72:76:62","symbolAliases":[{"foreign":{"id":12843,"name":"RATIO_BASE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14644,"src":"80:10:62","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":12844,"name":"_applyRatioCeiled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14698,"src":"92:17:62","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"RatioMock","contractDependencies":[],"contractKind":"contract","documentation":{"id":12846,"nodeType":"StructuredDocumentation","src":"150:106:62","text":"@notice A mock contract containing functions manipulating bitmaps.\n @dev DO NOT USE IN PRODUCTION!"},"fullyImplemented":true,"id":12870,"linearizedBaseContracts":[12870],"name":"RatioMock","nameLocation":"265:9:62","nodeType":"ContractDefinition","nodes":[{"body":{"id":12853,"nodeType":"Block","src":"335:34:62","statements":[{"expression":{"id":12851,"name":"RATIO_BASE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14644,"src":"352:10:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":12850,"id":12852,"nodeType":"Return","src":"345:17:62"}]},"functionSelector":"3d9de670","id":12854,"implemented":true,"kind":"function","modifiers":[],"name":"getRatioBase","nameLocation":"290:12:62","nodeType":"FunctionDefinition","parameters":{"id":12847,"nodeType":"ParameterList","parameters":[],"src":"302:2:62"},"returnParameters":{"id":12850,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12849,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12854,"src":"326:7:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12848,"name":"uint256","nodeType":"ElementaryTypeName","src":"326:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"325:9:62"},"scope":12870,"src":"281:88:62","stateMutability":"pure","virtual":false,"visibility":"public"},{"body":{"id":12868,"nodeType":"Block","src":"463:57:62","statements":[{"expression":{"arguments":[{"id":12864,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12856,"src":"498:6:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":12865,"name":"_ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12858,"src":"506:6:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12863,"name":"_applyRatioCeiled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14698,"src":"480:17:62","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":12866,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"480:33:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":12862,"id":12867,"nodeType":"Return","src":"473:40:62"}]},"functionSelector":"a0275620","id":12869,"implemented":true,"kind":"function","modifiers":[],"name":"applyRatioCeiled","nameLocation":"384:16:62","nodeType":"FunctionDefinition","parameters":{"id":12859,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12856,"mutability":"mutable","name":"_value","nameLocation":"409:6:62","nodeType":"VariableDeclaration","scope":12869,"src":"401:14:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12855,"name":"uint256","nodeType":"ElementaryTypeName","src":"401:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12858,"mutability":"mutable","name":"_ratio","nameLocation":"425:6:62","nodeType":"VariableDeclaration","scope":12869,"src":"417:14:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12857,"name":"uint256","nodeType":"ElementaryTypeName","src":"417:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"400:32:62"},"returnParameters":{"id":12862,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12861,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12869,"src":"454:7:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12860,"name":"uint256","nodeType":"ElementaryTypeName","src":"454:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"453:9:62"},"scope":12870,"src":"375:145:62","stateMutability":"pure","virtual":false,"visibility":"public"}],"scope":12871,"src":"256:266:62","usedErrors":[14651]}],"src":"47:476:62"},"id":62},"src/mocks/utils/versioning/ProtocolVersionMock.sol":{"ast":{"absolutePath":"src/mocks/utils/versioning/ProtocolVersionMock.sol","exportedSymbols":{"ProtocolVersion":[14766],"ProtocolVersionMock":[12878]},"id":12879,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":12872,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:63"},{"absolutePath":"src/utils/versioning/ProtocolVersion.sol","file":"../../../utils/versioning/ProtocolVersion.sol","id":12874,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":12879,"sourceUnit":14767,"src":"72:78:63","symbolAliases":[{"foreign":{"id":12873,"name":"ProtocolVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14766,"src":"80:15:63","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":12876,"name":"ProtocolVersion","nameLocations":["335:15:63"],"nodeType":"IdentifierPath","referencedDeclaration":14766,"src":"335:15:63"},"id":12877,"nodeType":"InheritanceSpecifier","src":"335:15:63"}],"canonicalName":"ProtocolVersionMock","contractDependencies":[],"contractKind":"contract","documentation":{"id":12875,"nodeType":"StructuredDocumentation","src":"152:106:63","text":"@notice A mock contract returning the OSx protocol version number.\n @dev DO NOT USE IN PRODUCTION!"},"fullyImplemented":true,"id":12878,"linearizedBaseContracts":[12878,14766,14744],"name":"ProtocolVersionMock","nameLocation":"312:19:63","nodeType":"ContractDefinition","nodes":[],"scope":12879,"src":"303:52:63","usedErrors":[]}],"src":"47:309:63"},"id":63},"src/mocks/utils/versioning/VersionComparisonLibMock.sol":{"ast":{"absolutePath":"src/mocks/utils/versioning/VersionComparisonLibMock.sol","exportedSymbols":{"VersionComparisonLib":[15132],"VersionComparisonLibMock":[13003]},"id":13004,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":12880,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:64"},{"absolutePath":"src/utils/versioning/VersionComparisonLib.sol","file":"../../../utils/versioning/VersionComparisonLib.sol","id":12882,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13004,"sourceUnit":15133,"src":"72:88:64","symbolAliases":[{"foreign":{"id":12881,"name":"VersionComparisonLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15132,"src":"80:20:64","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"VersionComparisonLibMock","contractDependencies":[],"contractKind":"contract","documentation":{"id":12883,"nodeType":"StructuredDocumentation","src":"162:121:64","text":"@notice A mock contract containing functions to compare semantic version numbers.\n @dev DO NOT USE IN PRODUCTION!"},"fullyImplemented":true,"id":13003,"linearizedBaseContracts":[13003],"name":"VersionComparisonLibMock","nameLocation":"292:24:64","nodeType":"ContractDefinition","nodes":[{"global":false,"id":12888,"libraryName":{"id":12884,"name":"VersionComparisonLib","nameLocations":["329:20:64"],"nodeType":"IdentifierPath","referencedDeclaration":15132,"src":"329:20:64"},"nodeType":"UsingForDirective","src":"323:40:64","typeName":{"baseType":{"id":12885,"name":"uint8","nodeType":"ElementaryTypeName","src":"354:5:64","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":12887,"length":{"hexValue":"33","id":12886,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"360:1:64","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"ArrayTypeName","src":"354:8:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_storage_ptr","typeString":"uint8[3]"}}},{"body":{"id":12906,"nodeType":"Block","src":"450:35:64","statements":[{"expression":{"arguments":[{"id":12903,"name":"rhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12896,"src":"474:3:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}],"expression":{"id":12901,"name":"lhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12892,"src":"467:3:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}},"id":12902,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"471:2:64","memberName":"eq","nodeType":"MemberAccess","referencedDeclaration":14816,"src":"467:6:64","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_uint8_$3_memory_ptr_$_t_array$_t_uint8_$3_memory_ptr_$returns$_t_bool_$bound_to$_t_array$_t_uint8_$3_memory_ptr_$","typeString":"function (uint8[3] memory,uint8[3] memory) pure returns (bool)"}},"id":12904,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"467:11:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":12900,"id":12905,"nodeType":"Return","src":"460:18:64"}]},"functionSelector":"f92e9bb1","id":12907,"implemented":true,"kind":"function","modifiers":[],"name":"eq","nameLocation":"378:2:64","nodeType":"FunctionDefinition","parameters":{"id":12897,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12892,"mutability":"mutable","name":"lhs","nameLocation":"397:3:64","nodeType":"VariableDeclaration","scope":12907,"src":"381:19:64","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3]"},"typeName":{"baseType":{"id":12889,"name":"uint8","nodeType":"ElementaryTypeName","src":"381:5:64","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":12891,"length":{"hexValue":"33","id":12890,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"387:1:64","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"ArrayTypeName","src":"381:8:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_storage_ptr","typeString":"uint8[3]"}},"visibility":"internal"},{"constant":false,"id":12896,"mutability":"mutable","name":"rhs","nameLocation":"418:3:64","nodeType":"VariableDeclaration","scope":12907,"src":"402:19:64","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3]"},"typeName":{"baseType":{"id":12893,"name":"uint8","nodeType":"ElementaryTypeName","src":"402:5:64","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":12895,"length":{"hexValue":"33","id":12894,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"408:1:64","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"ArrayTypeName","src":"402:8:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_storage_ptr","typeString":"uint8[3]"}},"visibility":"internal"}],"src":"380:42:64"},"returnParameters":{"id":12900,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12899,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12907,"src":"444:4:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":12898,"name":"bool","nodeType":"ElementaryTypeName","src":"444:4:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"443:6:64"},"scope":13003,"src":"369:116:64","stateMutability":"pure","virtual":false,"visibility":"public"},{"body":{"id":12925,"nodeType":"Block","src":"573:36:64","statements":[{"expression":{"arguments":[{"id":12922,"name":"rhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12915,"src":"598:3:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}],"expression":{"id":12920,"name":"lhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12911,"src":"590:3:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}},"id":12921,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"594:3:64","memberName":"neq","nodeType":"MemberAccess","referencedDeclaration":14863,"src":"590:7:64","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_uint8_$3_memory_ptr_$_t_array$_t_uint8_$3_memory_ptr_$returns$_t_bool_$bound_to$_t_array$_t_uint8_$3_memory_ptr_$","typeString":"function (uint8[3] memory,uint8[3] memory) pure returns (bool)"}},"id":12923,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"590:12:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":12919,"id":12924,"nodeType":"Return","src":"583:19:64"}]},"functionSelector":"d343ec1b","id":12926,"implemented":true,"kind":"function","modifiers":[],"name":"neq","nameLocation":"500:3:64","nodeType":"FunctionDefinition","parameters":{"id":12916,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12911,"mutability":"mutable","name":"lhs","nameLocation":"520:3:64","nodeType":"VariableDeclaration","scope":12926,"src":"504:19:64","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3]"},"typeName":{"baseType":{"id":12908,"name":"uint8","nodeType":"ElementaryTypeName","src":"504:5:64","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":12910,"length":{"hexValue":"33","id":12909,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"510:1:64","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"ArrayTypeName","src":"504:8:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_storage_ptr","typeString":"uint8[3]"}},"visibility":"internal"},{"constant":false,"id":12915,"mutability":"mutable","name":"rhs","nameLocation":"541:3:64","nodeType":"VariableDeclaration","scope":12926,"src":"525:19:64","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3]"},"typeName":{"baseType":{"id":12912,"name":"uint8","nodeType":"ElementaryTypeName","src":"525:5:64","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":12914,"length":{"hexValue":"33","id":12913,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"531:1:64","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"ArrayTypeName","src":"525:8:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_storage_ptr","typeString":"uint8[3]"}},"visibility":"internal"}],"src":"503:42:64"},"returnParameters":{"id":12919,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12918,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12926,"src":"567:4:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":12917,"name":"bool","nodeType":"ElementaryTypeName","src":"567:4:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"566:6:64"},"scope":13003,"src":"491:118:64","stateMutability":"pure","virtual":false,"visibility":"public"},{"body":{"id":12944,"nodeType":"Block","src":"696:35:64","statements":[{"expression":{"arguments":[{"id":12941,"name":"rhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12934,"src":"720:3:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}],"expression":{"id":12939,"name":"lhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12930,"src":"713:3:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}},"id":12940,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"717:2:64","memberName":"lt","nodeType":"MemberAccess","referencedDeclaration":14930,"src":"713:6:64","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_uint8_$3_memory_ptr_$_t_array$_t_uint8_$3_memory_ptr_$returns$_t_bool_$bound_to$_t_array$_t_uint8_$3_memory_ptr_$","typeString":"function (uint8[3] memory,uint8[3] memory) pure returns (bool)"}},"id":12942,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"713:11:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":12938,"id":12943,"nodeType":"Return","src":"706:18:64"}]},"functionSelector":"668a90f6","id":12945,"implemented":true,"kind":"function","modifiers":[],"name":"lt","nameLocation":"624:2:64","nodeType":"FunctionDefinition","parameters":{"id":12935,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12930,"mutability":"mutable","name":"lhs","nameLocation":"643:3:64","nodeType":"VariableDeclaration","scope":12945,"src":"627:19:64","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3]"},"typeName":{"baseType":{"id":12927,"name":"uint8","nodeType":"ElementaryTypeName","src":"627:5:64","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":12929,"length":{"hexValue":"33","id":12928,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"633:1:64","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"ArrayTypeName","src":"627:8:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_storage_ptr","typeString":"uint8[3]"}},"visibility":"internal"},{"constant":false,"id":12934,"mutability":"mutable","name":"rhs","nameLocation":"664:3:64","nodeType":"VariableDeclaration","scope":12945,"src":"648:19:64","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3]"},"typeName":{"baseType":{"id":12931,"name":"uint8","nodeType":"ElementaryTypeName","src":"648:5:64","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":12933,"length":{"hexValue":"33","id":12932,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"654:1:64","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"ArrayTypeName","src":"648:8:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_storage_ptr","typeString":"uint8[3]"}},"visibility":"internal"}],"src":"626:42:64"},"returnParameters":{"id":12938,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12937,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12945,"src":"690:4:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":12936,"name":"bool","nodeType":"ElementaryTypeName","src":"690:4:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"689:6:64"},"scope":13003,"src":"615:116:64","stateMutability":"pure","virtual":false,"visibility":"public"},{"body":{"id":12963,"nodeType":"Block","src":"819:36:64","statements":[{"expression":{"arguments":[{"id":12960,"name":"rhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12953,"src":"844:3:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}],"expression":{"id":12958,"name":"lhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12949,"src":"836:3:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}},"id":12959,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"840:3:64","memberName":"lte","nodeType":"MemberAccess","referencedDeclaration":14997,"src":"836:7:64","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_uint8_$3_memory_ptr_$_t_array$_t_uint8_$3_memory_ptr_$returns$_t_bool_$bound_to$_t_array$_t_uint8_$3_memory_ptr_$","typeString":"function (uint8[3] memory,uint8[3] memory) pure returns (bool)"}},"id":12961,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"836:12:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":12957,"id":12962,"nodeType":"Return","src":"829:19:64"}]},"functionSelector":"2198ac8d","id":12964,"implemented":true,"kind":"function","modifiers":[],"name":"lte","nameLocation":"746:3:64","nodeType":"FunctionDefinition","parameters":{"id":12954,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12949,"mutability":"mutable","name":"lhs","nameLocation":"766:3:64","nodeType":"VariableDeclaration","scope":12964,"src":"750:19:64","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3]"},"typeName":{"baseType":{"id":12946,"name":"uint8","nodeType":"ElementaryTypeName","src":"750:5:64","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":12948,"length":{"hexValue":"33","id":12947,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"756:1:64","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"ArrayTypeName","src":"750:8:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_storage_ptr","typeString":"uint8[3]"}},"visibility":"internal"},{"constant":false,"id":12953,"mutability":"mutable","name":"rhs","nameLocation":"787:3:64","nodeType":"VariableDeclaration","scope":12964,"src":"771:19:64","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3]"},"typeName":{"baseType":{"id":12950,"name":"uint8","nodeType":"ElementaryTypeName","src":"771:5:64","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":12952,"length":{"hexValue":"33","id":12951,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"777:1:64","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"ArrayTypeName","src":"771:8:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_storage_ptr","typeString":"uint8[3]"}},"visibility":"internal"}],"src":"749:42:64"},"returnParameters":{"id":12957,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12956,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12964,"src":"813:4:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":12955,"name":"bool","nodeType":"ElementaryTypeName","src":"813:4:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"812:6:64"},"scope":13003,"src":"737:118:64","stateMutability":"pure","virtual":false,"visibility":"public"},{"body":{"id":12982,"nodeType":"Block","src":"942:35:64","statements":[{"expression":{"arguments":[{"id":12979,"name":"rhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12972,"src":"966:3:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}],"expression":{"id":12977,"name":"lhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12968,"src":"959:3:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}},"id":12978,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"963:2:64","memberName":"gt","nodeType":"MemberAccess","referencedDeclaration":15064,"src":"959:6:64","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_uint8_$3_memory_ptr_$_t_array$_t_uint8_$3_memory_ptr_$returns$_t_bool_$bound_to$_t_array$_t_uint8_$3_memory_ptr_$","typeString":"function (uint8[3] memory,uint8[3] memory) pure returns (bool)"}},"id":12980,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"959:11:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":12976,"id":12981,"nodeType":"Return","src":"952:18:64"}]},"functionSelector":"96b38697","id":12983,"implemented":true,"kind":"function","modifiers":[],"name":"gt","nameLocation":"870:2:64","nodeType":"FunctionDefinition","parameters":{"id":12973,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12968,"mutability":"mutable","name":"lhs","nameLocation":"889:3:64","nodeType":"VariableDeclaration","scope":12983,"src":"873:19:64","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3]"},"typeName":{"baseType":{"id":12965,"name":"uint8","nodeType":"ElementaryTypeName","src":"873:5:64","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":12967,"length":{"hexValue":"33","id":12966,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"879:1:64","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"ArrayTypeName","src":"873:8:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_storage_ptr","typeString":"uint8[3]"}},"visibility":"internal"},{"constant":false,"id":12972,"mutability":"mutable","name":"rhs","nameLocation":"910:3:64","nodeType":"VariableDeclaration","scope":12983,"src":"894:19:64","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3]"},"typeName":{"baseType":{"id":12969,"name":"uint8","nodeType":"ElementaryTypeName","src":"894:5:64","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":12971,"length":{"hexValue":"33","id":12970,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"900:1:64","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"ArrayTypeName","src":"894:8:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_storage_ptr","typeString":"uint8[3]"}},"visibility":"internal"}],"src":"872:42:64"},"returnParameters":{"id":12976,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12975,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12983,"src":"936:4:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":12974,"name":"bool","nodeType":"ElementaryTypeName","src":"936:4:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"935:6:64"},"scope":13003,"src":"861:116:64","stateMutability":"pure","virtual":false,"visibility":"public"},{"body":{"id":13001,"nodeType":"Block","src":"1065:36:64","statements":[{"expression":{"arguments":[{"id":12998,"name":"rhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12991,"src":"1090:3:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}],"expression":{"id":12996,"name":"lhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12987,"src":"1082:3:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}},"id":12997,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1086:3:64","memberName":"gte","nodeType":"MemberAccess","referencedDeclaration":15131,"src":"1082:7:64","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_uint8_$3_memory_ptr_$_t_array$_t_uint8_$3_memory_ptr_$returns$_t_bool_$bound_to$_t_array$_t_uint8_$3_memory_ptr_$","typeString":"function (uint8[3] memory,uint8[3] memory) pure returns (bool)"}},"id":12999,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1082:12:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":12995,"id":13000,"nodeType":"Return","src":"1075:19:64"}]},"functionSelector":"9fdb5746","id":13002,"implemented":true,"kind":"function","modifiers":[],"name":"gte","nameLocation":"992:3:64","nodeType":"FunctionDefinition","parameters":{"id":12992,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12987,"mutability":"mutable","name":"lhs","nameLocation":"1012:3:64","nodeType":"VariableDeclaration","scope":13002,"src":"996:19:64","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3]"},"typeName":{"baseType":{"id":12984,"name":"uint8","nodeType":"ElementaryTypeName","src":"996:5:64","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":12986,"length":{"hexValue":"33","id":12985,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1002:1:64","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"ArrayTypeName","src":"996:8:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_storage_ptr","typeString":"uint8[3]"}},"visibility":"internal"},{"constant":false,"id":12991,"mutability":"mutable","name":"rhs","nameLocation":"1033:3:64","nodeType":"VariableDeclaration","scope":13002,"src":"1017:19:64","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3]"},"typeName":{"baseType":{"id":12988,"name":"uint8","nodeType":"ElementaryTypeName","src":"1017:5:64","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":12990,"length":{"hexValue":"33","id":12989,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1023:1:64","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"ArrayTypeName","src":"1017:8:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_storage_ptr","typeString":"uint8[3]"}},"visibility":"internal"}],"src":"995:42:64"},"returnParameters":{"id":12995,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12994,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13002,"src":"1059:4:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":12993,"name":"bool","nodeType":"ElementaryTypeName","src":"1059:4:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1058:6:64"},"scope":13003,"src":"983:118:64","stateMutability":"pure","virtual":false,"visibility":"public"}],"scope":13004,"src":"283:820:64","usedErrors":[]}],"src":"47:1057:64"},"id":64},"src/permission/PermissionLib.sol":{"ast":{"absolutePath":"src/permission/PermissionLib.sol","exportedSymbols":{"PermissionLib":[13038]},"id":13039,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":13005,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:65"},{"abstract":false,"baseContracts":[],"canonicalName":"PermissionLib","contractDependencies":[],"contractKind":"library","documentation":{"id":13006,"nodeType":"StructuredDocumentation","src":"72:171:65","text":"@title PermissionLib\n @author Aragon X - 2021-2023\n @notice A library containing objects for permission processing.\n @custom:security-contact sirt@aragon.org"},"fullyImplemented":true,"id":13038,"linearizedBaseContracts":[13038],"name":"PermissionLib","nameLocation":"251:13:65","nodeType":"ContractDefinition","nodes":[{"constant":true,"documentation":{"id":13007,"nodeType":"StructuredDocumentation","src":"271:79:65","text":"@notice A constant expressing that no condition is applied to a permission."},"functionSelector":"6dd02a5b","id":13013,"mutability":"constant","name":"NO_CONDITION","nameLocation":"379:12:65","nodeType":"VariableDeclaration","scope":13038,"src":"355:49:65","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13008,"name":"address","nodeType":"ElementaryTypeName","src":"355:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":{"arguments":[{"hexValue":"30","id":13011,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"402:1:65","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":13010,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"394:7:65","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":13009,"name":"address","nodeType":"ElementaryTypeName","src":"394:7:65","typeDescriptions":{}}},"id":13012,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"394:10:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"canonicalName":"PermissionLib.Operation","id":13017,"members":[{"id":13014,"name":"Grant","nameLocation":"814:5:65","nodeType":"EnumValue","src":"814:5:65"},{"id":13015,"name":"Revoke","nameLocation":"829:6:65","nodeType":"EnumValue","src":"829:6:65"},{"id":13016,"name":"GrantWithCondition","nameLocation":"845:18:65","nodeType":"EnumValue","src":"845:18:65"}],"name":"Operation","nameLocation":"794:9:65","nodeType":"EnumDefinition","src":"789:80:65"},{"canonicalName":"PermissionLib.SingleTargetPermission","id":13025,"members":[{"constant":false,"id":13020,"mutability":"mutable","name":"operation","nameLocation":"1243:9:65","nodeType":"VariableDeclaration","scope":13025,"src":"1233:19:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Operation_$13017","typeString":"enum PermissionLib.Operation"},"typeName":{"id":13019,"nodeType":"UserDefinedTypeName","pathNode":{"id":13018,"name":"Operation","nameLocations":["1233:9:65"],"nodeType":"IdentifierPath","referencedDeclaration":13017,"src":"1233:9:65"},"referencedDeclaration":13017,"src":"1233:9:65","typeDescriptions":{"typeIdentifier":"t_enum$_Operation_$13017","typeString":"enum PermissionLib.Operation"}},"visibility":"internal"},{"constant":false,"id":13022,"mutability":"mutable","name":"who","nameLocation":"1270:3:65","nodeType":"VariableDeclaration","scope":13025,"src":"1262:11:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13021,"name":"address","nodeType":"ElementaryTypeName","src":"1262:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13024,"mutability":"mutable","name":"permissionId","nameLocation":"1291:12:65","nodeType":"VariableDeclaration","scope":13025,"src":"1283:20:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":13023,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1283:7:65","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"name":"SingleTargetPermission","nameLocation":"1200:22:65","nodeType":"StructDefinition","scope":13038,"src":"1193:117:65","visibility":"public"},{"canonicalName":"PermissionLib.MultiTargetPermission","id":13037,"members":[{"constant":false,"id":13028,"mutability":"mutable","name":"operation","nameLocation":"1934:9:65","nodeType":"VariableDeclaration","scope":13037,"src":"1924:19:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Operation_$13017","typeString":"enum PermissionLib.Operation"},"typeName":{"id":13027,"nodeType":"UserDefinedTypeName","pathNode":{"id":13026,"name":"Operation","nameLocations":["1924:9:65"],"nodeType":"IdentifierPath","referencedDeclaration":13017,"src":"1924:9:65"},"referencedDeclaration":13017,"src":"1924:9:65","typeDescriptions":{"typeIdentifier":"t_enum$_Operation_$13017","typeString":"enum PermissionLib.Operation"}},"visibility":"internal"},{"constant":false,"id":13030,"mutability":"mutable","name":"where","nameLocation":"1961:5:65","nodeType":"VariableDeclaration","scope":13037,"src":"1953:13:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13029,"name":"address","nodeType":"ElementaryTypeName","src":"1953:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13032,"mutability":"mutable","name":"who","nameLocation":"1984:3:65","nodeType":"VariableDeclaration","scope":13037,"src":"1976:11:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13031,"name":"address","nodeType":"ElementaryTypeName","src":"1976:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13034,"mutability":"mutable","name":"condition","nameLocation":"2005:9:65","nodeType":"VariableDeclaration","scope":13037,"src":"1997:17:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13033,"name":"address","nodeType":"ElementaryTypeName","src":"1997:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13036,"mutability":"mutable","name":"permissionId","nameLocation":"2032:12:65","nodeType":"VariableDeclaration","scope":13037,"src":"2024:20:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":13035,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2024:7:65","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"name":"MultiTargetPermission","nameLocation":"1892:21:65","nodeType":"StructDefinition","scope":13038,"src":"1885:166:65","visibility":"public"}],"scope":13039,"src":"243:1810:65","usedErrors":[]}],"src":"47:2007:65"},"id":65},"src/permission/auth/DaoAuthorizable.sol":{"ast":{"absolutePath":"src/permission/auth/DaoAuthorizable.sol","exportedSymbols":{"Context":[9294],"DaoAuthorizable":[13096],"IDAO":[10865],"_auth":[13211]},"id":13097,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":13040,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:66"},{"absolutePath":"@openzeppelin/contracts/utils/Context.sol","file":"@openzeppelin/contracts/utils/Context.sol","id":13042,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13097,"sourceUnit":9295,"src":"72:66:66","symbolAliases":[{"foreign":{"id":13041,"name":"Context","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9294,"src":"80:7:66","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/dao/IDAO.sol","file":"../../dao/IDAO.sol","id":13044,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13097,"sourceUnit":10866,"src":"140:40:66","symbolAliases":[{"foreign":{"id":13043,"name":"IDAO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10865,"src":"148:4:66","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/permission/auth/auth.sol","file":"./auth.sol","id":13046,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13097,"sourceUnit":13212,"src":"181:33:66","symbolAliases":[{"foreign":{"id":13045,"name":"_auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13211,"src":"189:5:66","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":13048,"name":"Context","nameLocations":["560:7:66"],"nodeType":"IdentifierPath","referencedDeclaration":9294,"src":"560:7:66"},"id":13049,"nodeType":"InheritanceSpecifier","src":"560:7:66"}],"canonicalName":"DaoAuthorizable","contractDependencies":[],"contractKind":"contract","documentation":{"id":13047,"nodeType":"StructuredDocumentation","src":"216:307:66","text":"@title DaoAuthorizable\n @author Aragon X - 2022-2023\n @notice An abstract contract providing a meta-transaction compatible modifier for non-upgradeable contracts instantiated via the `new` keyword to authorize function calls through an associated DAO.\n @custom:security-contact sirt@aragon.org"},"fullyImplemented":true,"id":13096,"linearizedBaseContracts":[13096,9294],"name":"DaoAuthorizable","nameLocation":"541:15:66","nodeType":"ContractDefinition","nodes":[{"constant":false,"documentation":{"id":13050,"nodeType":"StructuredDocumentation","src":"574:80:66","text":"@notice The associated DAO managing the permissions of inheriting contracts."},"id":13053,"mutability":"immutable","name":"DAO","nameLocation":"682:3:66","nodeType":"VariableDeclaration","scope":13096,"src":"659:26:66","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"},"typeName":{"id":13052,"nodeType":"UserDefinedTypeName","pathNode":{"id":13051,"name":"IDAO","nameLocations":["659:4:66"],"nodeType":"IdentifierPath","referencedDeclaration":10865,"src":"659:4:66"},"referencedDeclaration":10865,"src":"659:4:66","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}},"visibility":"private"},{"body":{"id":13064,"nodeType":"Block","src":"834:27:66","statements":[{"expression":{"id":13062,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13060,"name":"DAO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13053,"src":"844:3:66","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":13061,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13057,"src":"850:4:66","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}},"src":"844:10:66","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}},"id":13063,"nodeType":"ExpressionStatement","src":"844:10:66"}]},"documentation":{"id":13054,"nodeType":"StructuredDocumentation","src":"692:114:66","text":"@notice Constructs the contract by setting the associated DAO.\n @param _dao The associated DAO address."},"id":13065,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":13058,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13057,"mutability":"mutable","name":"_dao","nameLocation":"828:4:66","nodeType":"VariableDeclaration","scope":13065,"src":"823:9:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"},"typeName":{"id":13056,"nodeType":"UserDefinedTypeName","pathNode":{"id":13055,"name":"IDAO","nameLocations":["823:4:66"],"nodeType":"IdentifierPath","referencedDeclaration":10865,"src":"823:4:66"},"referencedDeclaration":10865,"src":"823:4:66","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}},"visibility":"internal"}],"src":"822:11:66"},"returnParameters":{"id":13059,"nodeType":"ParameterList","parameters":[],"src":"834:0:66"},"scope":13096,"src":"811:50:66","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":13074,"nodeType":"Block","src":"985:27:66","statements":[{"expression":{"id":13072,"name":"DAO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13053,"src":"1002:3:66","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}},"functionReturnParameters":13071,"id":13073,"nodeType":"Return","src":"995:10:66"}]},"documentation":{"id":13066,"nodeType":"StructuredDocumentation","src":"867:71:66","text":"@notice Returns the DAO contract.\n @return The DAO contract."},"functionSelector":"4162169f","id":13075,"implemented":true,"kind":"function","modifiers":[],"name":"dao","nameLocation":"952:3:66","nodeType":"FunctionDefinition","parameters":{"id":13067,"nodeType":"ParameterList","parameters":[],"src":"955:2:66"},"returnParameters":{"id":13071,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13070,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13075,"src":"979:4:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"},"typeName":{"id":13069,"nodeType":"UserDefinedTypeName","pathNode":{"id":13068,"name":"IDAO","nameLocations":["979:4:66"],"nodeType":"IdentifierPath","referencedDeclaration":10865,"src":"979:4:66"},"referencedDeclaration":10865,"src":"979:4:66","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}},"visibility":"internal"}],"src":"978:6:66"},"scope":13096,"src":"943:69:66","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":13094,"nodeType":"Block","src":"1342:94:66","statements":[{"expression":{"arguments":[{"id":13081,"name":"DAO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13053,"src":"1358:3:66","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}},{"arguments":[{"id":13084,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967268,"src":"1371:4:66","typeDescriptions":{"typeIdentifier":"t_contract$_DaoAuthorizable_$13096","typeString":"contract DaoAuthorizable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_DaoAuthorizable_$13096","typeString":"contract DaoAuthorizable"}],"id":13083,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1363:7:66","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":13082,"name":"address","nodeType":"ElementaryTypeName","src":"1363:7:66","typeDescriptions":{}}},"id":13085,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1363:13:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[],"expression":{"argumentTypes":[],"id":13086,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9276,"src":"1378:10:66","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":13087,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1378:12:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13088,"name":"_permissionId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13078,"src":"1392:13:66","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[],"expression":{"argumentTypes":[],"id":13089,"name":"_msgData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9285,"src":"1407:8:66","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bytes_calldata_ptr_$","typeString":"function () view returns (bytes calldata)"}},"id":13090,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1407:10:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":13080,"name":"_auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13211,"src":"1352:5:66","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_IDAO_$10865_$_t_address_$_t_address_$_t_bytes32_$_t_bytes_calldata_ptr_$returns$__$","typeString":"function (contract IDAO,address,address,bytes32,bytes calldata) view"}},"id":13091,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1352:66:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13092,"nodeType":"ExpressionStatement","src":"1352:66:66"},{"id":13093,"nodeType":"PlaceholderStatement","src":"1428:1:66"}]},"documentation":{"id":13076,"nodeType":"StructuredDocumentation","src":"1018:282:66","text":"@notice A modifier to make functions on inheriting contracts authorized. Permissions to call the function are checked through the associated DAO's permission manager.\n @param _permissionId The permission identifier required to call the method this modifier is applied to."},"id":13095,"name":"auth","nameLocation":"1314:4:66","nodeType":"ModifierDefinition","parameters":{"id":13079,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13078,"mutability":"mutable","name":"_permissionId","nameLocation":"1327:13:66","nodeType":"VariableDeclaration","scope":13095,"src":"1319:21:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":13077,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1319:7:66","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1318:23:66"},"src":"1305:131:66","virtual":false,"visibility":"internal"}],"scope":13097,"src":"523:915:66","usedErrors":[]}],"src":"47:1392:66"},"id":66},"src/permission/auth/DaoAuthorizableUpgradeable.sol":{"ast":{"absolutePath":"src/permission/auth/DaoAuthorizableUpgradeable.sol","exportedSymbols":{"ContextUpgradeable":[2593],"DaoAuthorizableUpgradeable":[13161],"IDAO":[10865],"_auth":[13211]},"id":13162,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":13098,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:67"},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol","id":13100,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13162,"sourceUnit":2594,"src":"72:100:67","symbolAliases":[{"foreign":{"id":13099,"name":"ContextUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2593,"src":"80:18:67","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/dao/IDAO.sol","file":"../../dao/IDAO.sol","id":13102,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13162,"sourceUnit":10866,"src":"174:40:67","symbolAliases":[{"foreign":{"id":13101,"name":"IDAO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10865,"src":"182:4:67","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/permission/auth/auth.sol","file":"./auth.sol","id":13104,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13162,"sourceUnit":13212,"src":"215:33:67","symbolAliases":[{"foreign":{"id":13103,"name":"_auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13211,"src":"223:5:67","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":13106,"name":"ContextUpgradeable","nameLocations":["703:18:67"],"nodeType":"IdentifierPath","referencedDeclaration":2593,"src":"703:18:67"},"id":13107,"nodeType":"InheritanceSpecifier","src":"703:18:67"}],"canonicalName":"DaoAuthorizableUpgradeable","contractDependencies":[],"contractKind":"contract","documentation":{"id":13105,"nodeType":"StructuredDocumentation","src":"250:405:67","text":"@title DaoAuthorizableUpgradeable\n @author Aragon X - 2022-2023\n @notice An abstract contract providing a meta-transaction compatible modifier for upgradeable or cloneable contracts to authorize function calls through an associated DAO.\n @dev Make sure to call `__DaoAuthorizableUpgradeable_init` during initialization of the inheriting contract.\n @custom:security-contact sirt@aragon.org"},"fullyImplemented":true,"id":13161,"linearizedBaseContracts":[13161,2593,534],"name":"DaoAuthorizableUpgradeable","nameLocation":"673:26:67","nodeType":"ContractDefinition","nodes":[{"constant":false,"documentation":{"id":13108,"nodeType":"StructuredDocumentation","src":"728:80:67","text":"@notice The associated DAO managing the permissions of inheriting contracts."},"id":13111,"mutability":"mutable","name":"dao_","nameLocation":"826:4:67","nodeType":"VariableDeclaration","scope":13161,"src":"813:17:67","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"},"typeName":{"id":13110,"nodeType":"UserDefinedTypeName","pathNode":{"id":13109,"name":"IDAO","nameLocations":["813:4:67"],"nodeType":"IdentifierPath","referencedDeclaration":10865,"src":"813:4:67"},"referencedDeclaration":10865,"src":"813:4:67","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}},"visibility":"private"},{"body":{"id":13124,"nodeType":"Block","src":"1090:28:67","statements":[{"expression":{"id":13122,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13120,"name":"dao_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13111,"src":"1100:4:67","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":13121,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13115,"src":"1107:4:67","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}},"src":"1100:11:67","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}},"id":13123,"nodeType":"ExpressionStatement","src":"1100:11:67"}]},"documentation":{"id":13112,"nodeType":"StructuredDocumentation","src":"837:115:67","text":"@notice Initializes the contract by setting the associated DAO.\n @param _dao The associated DAO address."},"id":13125,"implemented":true,"kind":"function","modifiers":[{"id":13118,"kind":"modifierInvocation","modifierName":{"id":13117,"name":"onlyInitializing","nameLocations":["1073:16:67"],"nodeType":"IdentifierPath","referencedDeclaration":479,"src":"1073:16:67"},"nodeType":"ModifierInvocation","src":"1073:16:67"}],"name":"__DaoAuthorizableUpgradeable_init","nameLocation":"1019:33:67","nodeType":"FunctionDefinition","parameters":{"id":13116,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13115,"mutability":"mutable","name":"_dao","nameLocation":"1058:4:67","nodeType":"VariableDeclaration","scope":13125,"src":"1053:9:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"},"typeName":{"id":13114,"nodeType":"UserDefinedTypeName","pathNode":{"id":13113,"name":"IDAO","nameLocations":["1053:4:67"],"nodeType":"IdentifierPath","referencedDeclaration":10865,"src":"1053:4:67"},"referencedDeclaration":10865,"src":"1053:4:67","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}},"visibility":"internal"}],"src":"1052:11:67"},"returnParameters":{"id":13119,"nodeType":"ParameterList","parameters":[],"src":"1090:0:67"},"scope":13161,"src":"1010:108:67","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":13134,"nodeType":"Block","src":"1242:28:67","statements":[{"expression":{"id":13132,"name":"dao_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13111,"src":"1259:4:67","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}},"functionReturnParameters":13131,"id":13133,"nodeType":"Return","src":"1252:11:67"}]},"documentation":{"id":13126,"nodeType":"StructuredDocumentation","src":"1124:71:67","text":"@notice Returns the DAO contract.\n @return The DAO contract."},"functionSelector":"4162169f","id":13135,"implemented":true,"kind":"function","modifiers":[],"name":"dao","nameLocation":"1209:3:67","nodeType":"FunctionDefinition","parameters":{"id":13127,"nodeType":"ParameterList","parameters":[],"src":"1212:2:67"},"returnParameters":{"id":13131,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13130,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13135,"src":"1236:4:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"},"typeName":{"id":13129,"nodeType":"UserDefinedTypeName","pathNode":{"id":13128,"name":"IDAO","nameLocations":["1236:4:67"],"nodeType":"IdentifierPath","referencedDeclaration":10865,"src":"1236:4:67"},"referencedDeclaration":10865,"src":"1236:4:67","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}},"visibility":"internal"}],"src":"1235:6:67"},"scope":13161,"src":"1200:70:67","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":13154,"nodeType":"Block","src":"1600:95:67","statements":[{"expression":{"arguments":[{"id":13141,"name":"dao_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13111,"src":"1616:4:67","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}},{"arguments":[{"id":13144,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967268,"src":"1630:4:67","typeDescriptions":{"typeIdentifier":"t_contract$_DaoAuthorizableUpgradeable_$13161","typeString":"contract DaoAuthorizableUpgradeable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_DaoAuthorizableUpgradeable_$13161","typeString":"contract DaoAuthorizableUpgradeable"}],"id":13143,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1622:7:67","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":13142,"name":"address","nodeType":"ElementaryTypeName","src":"1622:7:67","typeDescriptions":{}}},"id":13145,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1622:13:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[],"expression":{"argumentTypes":[],"id":13146,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2570,"src":"1637:10:67","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":13147,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1637:12:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13148,"name":"_permissionId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13138,"src":"1651:13:67","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[],"expression":{"argumentTypes":[],"id":13149,"name":"_msgData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2579,"src":"1666:8:67","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bytes_calldata_ptr_$","typeString":"function () view returns (bytes calldata)"}},"id":13150,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1666:10:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":13140,"name":"_auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13211,"src":"1610:5:67","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_IDAO_$10865_$_t_address_$_t_address_$_t_bytes32_$_t_bytes_calldata_ptr_$returns$__$","typeString":"function (contract IDAO,address,address,bytes32,bytes calldata) view"}},"id":13151,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1610:67:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13152,"nodeType":"ExpressionStatement","src":"1610:67:67"},{"id":13153,"nodeType":"PlaceholderStatement","src":"1687:1:67"}]},"documentation":{"id":13136,"nodeType":"StructuredDocumentation","src":"1276:282:67","text":"@notice A modifier to make functions on inheriting contracts authorized. Permissions to call the function are checked through the associated DAO's permission manager.\n @param _permissionId The permission identifier required to call the method this modifier is applied to."},"id":13155,"name":"auth","nameLocation":"1572:4:67","nodeType":"ModifierDefinition","parameters":{"id":13139,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13138,"mutability":"mutable","name":"_permissionId","nameLocation":"1585:13:67","nodeType":"VariableDeclaration","scope":13155,"src":"1577:21:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":13137,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1577:7:67","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1576:23:67"},"src":"1563:132:67","virtual":false,"visibility":"internal"},{"constant":false,"documentation":{"id":13156,"nodeType":"StructuredDocumentation","src":"1701:273:67","text":"@notice This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain (see [OpenZeppelin's guide about storage gaps](https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps))."},"id":13160,"mutability":"mutable","name":"__gap","nameLocation":"1999:5:67","nodeType":"VariableDeclaration","scope":13161,"src":"1979:25:67","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$49_storage","typeString":"uint256[49]"},"typeName":{"baseType":{"id":13157,"name":"uint256","nodeType":"ElementaryTypeName","src":"1979:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13159,"length":{"hexValue":"3439","id":13158,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1987:2:67","typeDescriptions":{"typeIdentifier":"t_rational_49_by_1","typeString":"int_const 49"},"value":"49"},"nodeType":"ArrayTypeName","src":"1979:11:67","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$49_storage_ptr","typeString":"uint256[49]"}},"visibility":"private"}],"scope":13162,"src":"655:1352:67","usedErrors":[]}],"src":"47:1961:67"},"id":67},"src/permission/auth/auth.sol":{"ast":{"absolutePath":"src/permission/auth/auth.sol","exportedSymbols":{"DaoUnauthorized":[13176],"IDAO":[10865],"_auth":[13211]},"id":13212,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":13163,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:68"},{"absolutePath":"src/dao/IDAO.sol","file":"../../dao/IDAO.sol","id":13165,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13212,"sourceUnit":10866,"src":"72:40:68","symbolAliases":[{"foreign":{"id":13164,"name":"IDAO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10865,"src":"80:4:68","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"documentation":{"id":13166,"nodeType":"StructuredDocumentation","src":"114:289:68","text":"@notice Thrown if a call is unauthorized in the associated DAO.\n @param dao The associated DAO.\n @param where The context in which the authorization reverted.\n @param who The address (EOA or contract) missing the permission.\n @param permissionId The permission identifier."},"errorSelector":"32dbe3b4","id":13176,"name":"DaoUnauthorized","nameLocation":"409:15:68","nodeType":"ErrorDefinition","parameters":{"id":13175,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13168,"mutability":"mutable","name":"dao","nameLocation":"433:3:68","nodeType":"VariableDeclaration","scope":13176,"src":"425:11:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13167,"name":"address","nodeType":"ElementaryTypeName","src":"425:7:68","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13170,"mutability":"mutable","name":"where","nameLocation":"446:5:68","nodeType":"VariableDeclaration","scope":13176,"src":"438:13:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13169,"name":"address","nodeType":"ElementaryTypeName","src":"438:7:68","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13172,"mutability":"mutable","name":"who","nameLocation":"461:3:68","nodeType":"VariableDeclaration","scope":13176,"src":"453:11:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13171,"name":"address","nodeType":"ElementaryTypeName","src":"453:7:68","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13174,"mutability":"mutable","name":"permissionId","nameLocation":"474:12:68","nodeType":"VariableDeclaration","scope":13176,"src":"466:20:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":13173,"name":"bytes32","nodeType":"ElementaryTypeName","src":"466:7:68","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"424:63:68"},"src":"403:85:68"},{"body":{"id":13210,"nodeType":"Block","src":"1169:235:68","statements":[{"condition":{"id":13198,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"1179:55:68","subExpression":{"arguments":[{"id":13193,"name":"_where","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13182,"src":"1199:6:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13194,"name":"_who","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13184,"src":"1207:4:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13195,"name":"_permissionId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13186,"src":"1213:13:68","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":13196,"name":"_data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13188,"src":"1228:5:68","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"id":13191,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13180,"src":"1180:4:68","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}},"id":13192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1185:13:68","memberName":"hasPermission","nodeType":"MemberAccess","referencedDeclaration":10738,"src":"1180:18:68","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (address,address,bytes32,bytes memory) view external returns (bool)"}},"id":13197,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1180:54:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13209,"nodeType":"IfStatement","src":"1175:226:68","trueBody":{"errorCall":{"arguments":[{"arguments":[{"id":13202,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13180,"src":"1294:4:68","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}],"id":13201,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1286:7:68","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":13200,"name":"address","nodeType":"ElementaryTypeName","src":"1286:7:68","typeDescriptions":{}}},"id":13203,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1286:13:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13204,"name":"_where","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13182,"src":"1320:6:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13205,"name":"_who","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13184,"src":"1345:4:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13206,"name":"_permissionId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13186,"src":"1377:13:68","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":13199,"name":"DaoUnauthorized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13176,"src":"1251:15:68","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_address_$_t_address_$_t_bytes32_$returns$__$","typeString":"function (address,address,address,bytes32) pure"}},"id":13207,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":["1281:3:68","1313:5:68","1340:3:68","1363:12:68"],"names":["dao","where","who","permissionId"],"nodeType":"FunctionCall","src":"1251:150:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13208,"nodeType":"RevertStatement","src":"1244:157:68"}}]},"documentation":{"id":13177,"nodeType":"StructuredDocumentation","src":"490:551:68","text":"@notice A free function checking if a caller is granted permissions on a target contract via a permission identifier that redirects the approval to a `PermissionCondition` if this was specified in the setup.\n @param _where The address of the target contract for which `who` receives permission.\n @param _who The address (EOA or contract) owning the permission.\n @param _permissionId The permission identifier.\n @param _data The optional data passed to the `PermissionCondition` registered.\n @custom:security-contact sirt@aragon.org"},"id":13211,"implemented":true,"kind":"freeFunction","modifiers":[],"name":"_auth","nameLocation":"1050:5:68","nodeType":"FunctionDefinition","parameters":{"id":13189,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13180,"mutability":"mutable","name":"_dao","nameLocation":"1066:4:68","nodeType":"VariableDeclaration","scope":13211,"src":"1061:9:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"},"typeName":{"id":13179,"nodeType":"UserDefinedTypeName","pathNode":{"id":13178,"name":"IDAO","nameLocations":["1061:4:68"],"nodeType":"IdentifierPath","referencedDeclaration":10865,"src":"1061:4:68"},"referencedDeclaration":10865,"src":"1061:4:68","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}},"visibility":"internal"},{"constant":false,"id":13182,"mutability":"mutable","name":"_where","nameLocation":"1084:6:68","nodeType":"VariableDeclaration","scope":13211,"src":"1076:14:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13181,"name":"address","nodeType":"ElementaryTypeName","src":"1076:7:68","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13184,"mutability":"mutable","name":"_who","nameLocation":"1104:4:68","nodeType":"VariableDeclaration","scope":13211,"src":"1096:12:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13183,"name":"address","nodeType":"ElementaryTypeName","src":"1096:7:68","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13186,"mutability":"mutable","name":"_permissionId","nameLocation":"1122:13:68","nodeType":"VariableDeclaration","scope":13211,"src":"1114:21:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":13185,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1114:7:68","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":13188,"mutability":"mutable","name":"_data","nameLocation":"1156:5:68","nodeType":"VariableDeclaration","scope":13211,"src":"1141:20:68","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":13187,"name":"bytes","nodeType":"ElementaryTypeName","src":"1141:5:68","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1055:108:68"},"returnParameters":{"id":13190,"nodeType":"ParameterList","parameters":[],"src":"1169:0:68"},"scope":13212,"src":"1041:363:68","stateMutability":"view","virtual":false,"visibility":"internal"}],"src":"47:1358:68"},"id":68},"src/permission/condition/IPermissionCondition.sol":{"ast":{"absolutePath":"src/permission/condition/IPermissionCondition.sol","exportedSymbols":{"IPermissionCondition":[13229]},"id":13230,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":13213,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:69"},{"abstract":false,"baseContracts":[],"canonicalName":"IPermissionCondition","contractDependencies":[],"contractKind":"interface","documentation":{"id":13214,"nodeType":"StructuredDocumentation","src":"72:364:69","text":"@title IPermissionCondition\n @author Aragon X - 2021-2023\n @notice An interface to be implemented to support custom permission logic.\n @dev To attach a condition to a permission, the `grantWithCondition` function must be used and refer to the implementing contract's address with the `condition` argument.\n @custom:security-contact sirt@aragon.org"},"fullyImplemented":false,"id":13229,"linearizedBaseContracts":[13229],"name":"IPermissionCondition","nameLocation":"446:20:69","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":13215,"nodeType":"StructuredDocumentation","src":"473:399:69","text":"@notice Checks if a call is permitted.\n @param _where The address of the target contract.\n @param _who The address (EOA or contract) for which the permissions are checked.\n @param _permissionId The permission identifier.\n @param _data Optional data passed to the `PermissionCondition` implementation.\n @return isPermitted Returns true if the call is permitted."},"functionSelector":"2675fdd0","id":13228,"implemented":false,"kind":"function","modifiers":[],"name":"isGranted","nameLocation":"886:9:69","nodeType":"FunctionDefinition","parameters":{"id":13224,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13217,"mutability":"mutable","name":"_where","nameLocation":"913:6:69","nodeType":"VariableDeclaration","scope":13228,"src":"905:14:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13216,"name":"address","nodeType":"ElementaryTypeName","src":"905:7:69","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13219,"mutability":"mutable","name":"_who","nameLocation":"937:4:69","nodeType":"VariableDeclaration","scope":13228,"src":"929:12:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13218,"name":"address","nodeType":"ElementaryTypeName","src":"929:7:69","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13221,"mutability":"mutable","name":"_permissionId","nameLocation":"959:13:69","nodeType":"VariableDeclaration","scope":13228,"src":"951:21:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":13220,"name":"bytes32","nodeType":"ElementaryTypeName","src":"951:7:69","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":13223,"mutability":"mutable","name":"_data","nameLocation":"997:5:69","nodeType":"VariableDeclaration","scope":13228,"src":"982:20:69","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":13222,"name":"bytes","nodeType":"ElementaryTypeName","src":"982:5:69","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"895:113:69"},"returnParameters":{"id":13227,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13226,"mutability":"mutable","name":"isPermitted","nameLocation":"1037:11:69","nodeType":"VariableDeclaration","scope":13228,"src":"1032:16:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":13225,"name":"bool","nodeType":"ElementaryTypeName","src":"1032:4:69","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1031:18:69"},"scope":13229,"src":"877:173:69","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":13230,"src":"436:616:69","usedErrors":[]}],"src":"47:1006:69"},"id":69},"src/permission/condition/PermissionCondition.sol":{"ast":{"absolutePath":"src/permission/condition/PermissionCondition.sol","exportedSymbols":{"ERC165":[9731],"IPermissionCondition":[13229],"IProtocolVersion":[14744],"PermissionCondition":[13276],"ProtocolVersion":[14766]},"id":13277,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":13231,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:70"},{"absolutePath":"@openzeppelin/contracts/utils/introspection/ERC165.sol","file":"@openzeppelin/contracts/utils/introspection/ERC165.sol","id":13233,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13277,"sourceUnit":9732,"src":"72:78:70","symbolAliases":[{"foreign":{"id":13232,"name":"ERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9731,"src":"80:6:70","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/utils/versioning/IProtocolVersion.sol","file":"../../utils/versioning/IProtocolVersion.sol","id":13235,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13277,"sourceUnit":14745,"src":"152:77:70","symbolAliases":[{"foreign":{"id":13234,"name":"IProtocolVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14744,"src":"160:16:70","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/utils/versioning/ProtocolVersion.sol","file":"../../utils/versioning/ProtocolVersion.sol","id":13237,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13277,"sourceUnit":14767,"src":"230:75:70","symbolAliases":[{"foreign":{"id":13236,"name":"ProtocolVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14766,"src":"238:15:70","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/permission/condition/IPermissionCondition.sol","file":"./IPermissionCondition.sol","id":13239,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13277,"sourceUnit":13230,"src":"306:64:70","symbolAliases":[{"foreign":{"id":13238,"name":"IPermissionCondition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13229,"src":"314:20:70","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":13241,"name":"ERC165","nameLocations":["704:6:70"],"nodeType":"IdentifierPath","referencedDeclaration":9731,"src":"704:6:70"},"id":13242,"nodeType":"InheritanceSpecifier","src":"704:6:70"},{"baseName":{"id":13243,"name":"IPermissionCondition","nameLocations":["712:20:70"],"nodeType":"IdentifierPath","referencedDeclaration":13229,"src":"712:20:70"},"id":13244,"nodeType":"InheritanceSpecifier","src":"712:20:70"},{"baseName":{"id":13245,"name":"ProtocolVersion","nameLocations":["734:15:70"],"nodeType":"IdentifierPath","referencedDeclaration":14766,"src":"734:15:70"},"id":13246,"nodeType":"InheritanceSpecifier","src":"734:15:70"}],"canonicalName":"PermissionCondition","contractDependencies":[],"contractKind":"contract","documentation":{"id":13240,"nodeType":"StructuredDocumentation","src":"372:291:70","text":"@title PermissionCondition\n @author Aragon X - 2023\n @notice An abstract contract for non-upgradeable contracts instantiated via the `new` keyword to inherit from to support customary permissions depending on arbitrary on-chain state.\n @custom:security-contact sirt@aragon.org"},"fullyImplemented":false,"id":13276,"linearizedBaseContracts":[13276,14766,14744,13229,9731,9743],"name":"PermissionCondition","nameLocation":"681:19:70","nodeType":"ContractDefinition","nodes":[{"baseFunctions":[9730],"body":{"id":13274,"nodeType":"Block","src":"1047:209:70","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":13272,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":13267,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":13260,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13255,"name":"_interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13249,"src":"1076:12:70","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":13257,"name":"IPermissionCondition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13229,"src":"1097:20:70","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IPermissionCondition_$13229_$","typeString":"type(contract IPermissionCondition)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IPermissionCondition_$13229_$","typeString":"type(contract IPermissionCondition)"}],"id":13256,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"1092:4:70","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":13258,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1092:26:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IPermissionCondition_$13229","typeString":"type(contract IPermissionCondition)"}},"id":13259,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1119:11:70","memberName":"interfaceId","nodeType":"MemberAccess","src":"1092:38:70","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"1076:54:70","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":13266,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13261,"name":"_interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13249,"src":"1146:12:70","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":13263,"name":"IProtocolVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14744,"src":"1167:16:70","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IProtocolVersion_$14744_$","typeString":"type(contract IProtocolVersion)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IProtocolVersion_$14744_$","typeString":"type(contract IProtocolVersion)"}],"id":13262,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"1162:4:70","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":13264,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1162:22:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IProtocolVersion_$14744","typeString":"type(contract IProtocolVersion)"}},"id":13265,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1185:11:70","memberName":"interfaceId","nodeType":"MemberAccess","src":"1162:34:70","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"1146:50:70","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1076:120:70","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":13270,"name":"_interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13249,"src":"1236:12:70","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":13268,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967271,"src":"1212:5:70","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_PermissionCondition_$13276_$","typeString":"type(contract super PermissionCondition)"}},"id":13269,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1218:17:70","memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":9730,"src":"1212:23:70","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bool_$","typeString":"function (bytes4) view returns (bool)"}},"id":13271,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1212:37:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1076:173:70","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":13254,"id":13273,"nodeType":"Return","src":"1057:192:70"}]},"documentation":{"id":13247,"nodeType":"StructuredDocumentation","src":"756:194:70","text":"@notice Checks if an interface is supported by this or its parent contract.\n @param _interfaceId The ID of the interface.\n @return Returns `true` if the interface is supported."},"functionSelector":"01ffc9a7","id":13275,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"964:17:70","nodeType":"FunctionDefinition","overrides":{"id":13251,"nodeType":"OverrideSpecifier","overrides":[],"src":"1023:8:70"},"parameters":{"id":13250,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13249,"mutability":"mutable","name":"_interfaceId","nameLocation":"989:12:70","nodeType":"VariableDeclaration","scope":13275,"src":"982:19:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":13248,"name":"bytes4","nodeType":"ElementaryTypeName","src":"982:6:70","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"981:21:70"},"returnParameters":{"id":13254,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13253,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13275,"src":"1041:4:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":13252,"name":"bool","nodeType":"ElementaryTypeName","src":"1041:4:70","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1040:6:70"},"scope":13276,"src":"955:301:70","stateMutability":"view","virtual":true,"visibility":"public"}],"scope":13277,"src":"663:595:70","usedErrors":[]}],"src":"47:1212:70"},"id":70},"src/permission/condition/PermissionConditionUpgradeable.sol":{"ast":{"absolutePath":"src/permission/condition/PermissionConditionUpgradeable.sol","exportedSymbols":{"ERC165Upgradeable":[2822],"IPermissionCondition":[13229],"IProtocolVersion":[14744],"PermissionConditionUpgradeable":[13323],"ProtocolVersion":[14766]},"id":13324,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":13278,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:71"},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol","file":"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol","id":13280,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13324,"sourceUnit":2823,"src":"72:112:71","symbolAliases":[{"foreign":{"id":13279,"name":"ERC165Upgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2822,"src":"80:17:71","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/utils/versioning/IProtocolVersion.sol","file":"../../utils/versioning/IProtocolVersion.sol","id":13282,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13324,"sourceUnit":14745,"src":"186:77:71","symbolAliases":[{"foreign":{"id":13281,"name":"IProtocolVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14744,"src":"194:16:71","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/utils/versioning/ProtocolVersion.sol","file":"../../utils/versioning/ProtocolVersion.sol","id":13284,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13324,"sourceUnit":14767,"src":"264:75:71","symbolAliases":[{"foreign":{"id":13283,"name":"ProtocolVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14766,"src":"272:15:71","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/permission/condition/IPermissionCondition.sol","file":"./IPermissionCondition.sol","id":13286,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13324,"sourceUnit":13230,"src":"340:64:71","symbolAliases":[{"foreign":{"id":13285,"name":"IPermissionCondition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13229,"src":"348:20:71","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":13288,"name":"ERC165Upgradeable","nameLocations":["741:17:71"],"nodeType":"IdentifierPath","referencedDeclaration":2822,"src":"741:17:71"},"id":13289,"nodeType":"InheritanceSpecifier","src":"741:17:71"},{"baseName":{"id":13290,"name":"IPermissionCondition","nameLocations":["764:20:71"],"nodeType":"IdentifierPath","referencedDeclaration":13229,"src":"764:20:71"},"id":13291,"nodeType":"InheritanceSpecifier","src":"764:20:71"},{"baseName":{"id":13292,"name":"ProtocolVersion","nameLocations":["790:15:71"],"nodeType":"IdentifierPath","referencedDeclaration":14766,"src":"790:15:71"},"id":13293,"nodeType":"InheritanceSpecifier","src":"790:15:71"}],"canonicalName":"PermissionConditionUpgradeable","contractDependencies":[],"contractKind":"contract","documentation":{"id":13287,"nodeType":"StructuredDocumentation","src":"406:279:71","text":"@title PermissionConditionUpgradeable\n @author Aragon X - 2023\n @notice An abstract contract for upgradeable or cloneable contracts to inherit from and to support customary permissions depending on arbitrary on-chain state.\n @custom:security-contact sirt@aragon.org"},"fullyImplemented":false,"id":13323,"linearizedBaseContracts":[13323,14766,14744,13229,2822,2834,534],"name":"PermissionConditionUpgradeable","nameLocation":"703:30:71","nodeType":"ContractDefinition","nodes":[{"baseFunctions":[2816],"body":{"id":13321,"nodeType":"Block","src":"1103:209:71","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":13319,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":13314,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":13307,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13302,"name":"_interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13296,"src":"1132:12:71","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":13304,"name":"IPermissionCondition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13229,"src":"1153:20:71","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IPermissionCondition_$13229_$","typeString":"type(contract IPermissionCondition)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IPermissionCondition_$13229_$","typeString":"type(contract IPermissionCondition)"}],"id":13303,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"1148:4:71","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":13305,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1148:26:71","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IPermissionCondition_$13229","typeString":"type(contract IPermissionCondition)"}},"id":13306,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1175:11:71","memberName":"interfaceId","nodeType":"MemberAccess","src":"1148:38:71","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"1132:54:71","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":13313,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13308,"name":"_interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13296,"src":"1202:12:71","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":13310,"name":"IProtocolVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14744,"src":"1223:16:71","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IProtocolVersion_$14744_$","typeString":"type(contract IProtocolVersion)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IProtocolVersion_$14744_$","typeString":"type(contract IProtocolVersion)"}],"id":13309,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"1218:4:71","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":13311,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1218:22:71","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IProtocolVersion_$14744","typeString":"type(contract IProtocolVersion)"}},"id":13312,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1241:11:71","memberName":"interfaceId","nodeType":"MemberAccess","src":"1218:34:71","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"1202:50:71","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1132:120:71","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":13317,"name":"_interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13296,"src":"1292:12:71","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":13315,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967271,"src":"1268:5:71","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_PermissionConditionUpgradeable_$13323_$","typeString":"type(contract super PermissionConditionUpgradeable)"}},"id":13316,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1274:17:71","memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":2816,"src":"1268:23:71","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bool_$","typeString":"function (bytes4) view returns (bool)"}},"id":13318,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1268:37:71","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1132:173:71","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":13301,"id":13320,"nodeType":"Return","src":"1113:192:71"}]},"documentation":{"id":13294,"nodeType":"StructuredDocumentation","src":"812:194:71","text":"@notice Checks if an interface is supported by this or its parent contract.\n @param _interfaceId The ID of the interface.\n @return Returns `true` if the interface is supported."},"functionSelector":"01ffc9a7","id":13322,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"1020:17:71","nodeType":"FunctionDefinition","overrides":{"id":13298,"nodeType":"OverrideSpecifier","overrides":[],"src":"1079:8:71"},"parameters":{"id":13297,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13296,"mutability":"mutable","name":"_interfaceId","nameLocation":"1045:12:71","nodeType":"VariableDeclaration","scope":13322,"src":"1038:19:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":13295,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1038:6:71","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"1037:21:71"},"returnParameters":{"id":13301,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13300,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13322,"src":"1097:4:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":13299,"name":"bool","nodeType":"ElementaryTypeName","src":"1097:4:71","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1096:6:71"},"scope":13323,"src":"1011:301:71","stateMutability":"view","virtual":true,"visibility":"public"}],"scope":13324,"src":"685:629:71","usedErrors":[]}],"src":"47:1268:71"},"id":71},"src/plugin/IPlugin.sol":{"ast":{"absolutePath":"src/plugin/IPlugin.sol","exportedSymbols":{"IPlugin":[13338]},"id":13339,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":13325,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:72"},{"abstract":false,"baseContracts":[],"canonicalName":"IPlugin","contractDependencies":[],"contractKind":"interface","documentation":{"id":13326,"nodeType":"StructuredDocumentation","src":"72:155:72","text":"@title IPlugin\n @author Aragon X - 2022-2023\n @notice An interface defining the traits of a plugin.\n @custom:security-contact sirt@aragon.org"},"fullyImplemented":false,"id":13338,"linearizedBaseContracts":[13338],"name":"IPlugin","nameLocation":"237:7:72","nodeType":"ContractDefinition","nodes":[{"canonicalName":"IPlugin.PluginType","id":13330,"members":[{"id":13327,"name":"UUPS","nameLocation":"277:4:72","nodeType":"EnumValue","src":"277:4:72"},{"id":13328,"name":"Cloneable","nameLocation":"291:9:72","nodeType":"EnumValue","src":"291:9:72"},{"id":13329,"name":"Constructable","nameLocation":"310:13:72","nodeType":"EnumValue","src":"310:13:72"}],"name":"PluginType","nameLocation":"256:10:72","nodeType":"EnumDefinition","src":"251:78:72"},{"documentation":{"id":13331,"nodeType":"StructuredDocumentation","src":"335:37:72","text":"@notice Returns the plugin's type"},"functionSelector":"41de6830","id":13337,"implemented":false,"kind":"function","modifiers":[],"name":"pluginType","nameLocation":"386:10:72","nodeType":"FunctionDefinition","parameters":{"id":13332,"nodeType":"ParameterList","parameters":[],"src":"396:2:72"},"returnParameters":{"id":13336,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13335,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13337,"src":"422:10:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_PluginType_$13330","typeString":"enum IPlugin.PluginType"},"typeName":{"id":13334,"nodeType":"UserDefinedTypeName","pathNode":{"id":13333,"name":"PluginType","nameLocations":["422:10:72"],"nodeType":"IdentifierPath","referencedDeclaration":13330,"src":"422:10:72"},"referencedDeclaration":13330,"src":"422:10:72","typeDescriptions":{"typeIdentifier":"t_enum$_PluginType_$13330","typeString":"enum IPlugin.PluginType"}},"visibility":"internal"}],"src":"421:12:72"},"scope":13338,"src":"377:57:72","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":13339,"src":"227:209:72","usedErrors":[]}],"src":"47:390:72"},"id":72},"src/plugin/Plugin.sol":{"ast":{"absolutePath":"src/plugin/Plugin.sol","exportedSymbols":{"DaoAuthorizable":[13096],"ERC165":[9731],"IDAO":[10865],"IPlugin":[13338],"IProtocolVersion":[14744],"Plugin":[13414],"ProtocolVersion":[14766]},"id":13415,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":13340,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:73"},{"absolutePath":"@openzeppelin/contracts/utils/introspection/ERC165.sol","file":"@openzeppelin/contracts/utils/introspection/ERC165.sol","id":13342,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13415,"sourceUnit":9732,"src":"72:78:73","symbolAliases":[{"foreign":{"id":13341,"name":"ERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9731,"src":"80:6:73","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/utils/versioning/IProtocolVersion.sol","file":"../utils/versioning/IProtocolVersion.sol","id":13344,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13415,"sourceUnit":14745,"src":"152:74:73","symbolAliases":[{"foreign":{"id":13343,"name":"IProtocolVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14744,"src":"160:16:73","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/utils/versioning/ProtocolVersion.sol","file":"../utils/versioning/ProtocolVersion.sol","id":13346,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13415,"sourceUnit":14767,"src":"227:72:73","symbolAliases":[{"foreign":{"id":13345,"name":"ProtocolVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14766,"src":"235:15:73","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/permission/auth/DaoAuthorizable.sol","file":"../permission/auth/DaoAuthorizable.sol","id":13348,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13415,"sourceUnit":13097,"src":"300:71:73","symbolAliases":[{"foreign":{"id":13347,"name":"DaoAuthorizable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13096,"src":"308:15:73","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/dao/IDAO.sol","file":"../dao/IDAO.sol","id":13350,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13415,"sourceUnit":10866,"src":"372:37:73","symbolAliases":[{"foreign":{"id":13349,"name":"IDAO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10865,"src":"380:4:73","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/plugin/IPlugin.sol","file":"./IPlugin.sol","id":13352,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13415,"sourceUnit":13339,"src":"410:38:73","symbolAliases":[{"foreign":{"id":13351,"name":"IPlugin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13338,"src":"418:7:73","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":13354,"name":"IPlugin","nameLocations":["701:7:73"],"nodeType":"IdentifierPath","referencedDeclaration":13338,"src":"701:7:73"},"id":13355,"nodeType":"InheritanceSpecifier","src":"701:7:73"},{"baseName":{"id":13356,"name":"ERC165","nameLocations":["710:6:73"],"nodeType":"IdentifierPath","referencedDeclaration":9731,"src":"710:6:73"},"id":13357,"nodeType":"InheritanceSpecifier","src":"710:6:73"},{"baseName":{"id":13358,"name":"DaoAuthorizable","nameLocations":["718:15:73"],"nodeType":"IdentifierPath","referencedDeclaration":13096,"src":"718:15:73"},"id":13359,"nodeType":"InheritanceSpecifier","src":"718:15:73"},{"baseName":{"id":13360,"name":"ProtocolVersion","nameLocations":["735:15:73"],"nodeType":"IdentifierPath","referencedDeclaration":14766,"src":"735:15:73"},"id":13361,"nodeType":"InheritanceSpecifier","src":"735:15:73"}],"canonicalName":"Plugin","contractDependencies":[],"contractKind":"contract","documentation":{"id":13353,"nodeType":"StructuredDocumentation","src":"450:223:73","text":"@title Plugin\n @author Aragon X - 2022-2023\n @notice An abstract, non-upgradeable contract to inherit from when creating a plugin being deployed via the `new` keyword.\n @custom:security-contact sirt@aragon.org"},"fullyImplemented":true,"id":13414,"linearizedBaseContracts":[13414,14766,14744,13096,9294,9731,9743,13338],"name":"Plugin","nameLocation":"691:6:73","nodeType":"ContractDefinition","nodes":[{"body":{"id":13371,"nodeType":"Block","src":"909:2:73","statements":[]},"documentation":{"id":13362,"nodeType":"StructuredDocumentation","src":"757:102:73","text":"@notice Constructs the plugin by storing the associated DAO.\n @param _dao The DAO contract."},"id":13372,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":13368,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13365,"src":"903:4:73","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}}],"id":13369,"kind":"baseConstructorSpecifier","modifierName":{"id":13367,"name":"DaoAuthorizable","nameLocations":["887:15:73"],"nodeType":"IdentifierPath","referencedDeclaration":13096,"src":"887:15:73"},"nodeType":"ModifierInvocation","src":"887:21:73"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":13366,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13365,"mutability":"mutable","name":"_dao","nameLocation":"881:4:73","nodeType":"VariableDeclaration","scope":13372,"src":"876:9:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"},"typeName":{"id":13364,"nodeType":"UserDefinedTypeName","pathNode":{"id":13363,"name":"IDAO","nameLocations":["876:4:73"],"nodeType":"IdentifierPath","referencedDeclaration":10865,"src":"876:4:73"},"referencedDeclaration":10865,"src":"876:4:73","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}},"visibility":"internal"}],"src":"875:11:73"},"returnParameters":{"id":13370,"nodeType":"ParameterList","parameters":[],"src":"909:0:73"},"scope":13414,"src":"864:47:73","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[13337],"body":{"id":13383,"nodeType":"Block","src":"1009:48:73","statements":[{"expression":{"expression":{"id":13380,"name":"PluginType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13330,"src":"1026:10:73","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_PluginType_$13330_$","typeString":"type(enum IPlugin.PluginType)"}},"id":13381,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1037:13:73","memberName":"Constructable","nodeType":"MemberAccess","referencedDeclaration":13329,"src":"1026:24:73","typeDescriptions":{"typeIdentifier":"t_enum$_PluginType_$13330","typeString":"enum IPlugin.PluginType"}},"functionReturnParameters":13379,"id":13382,"nodeType":"Return","src":"1019:31:73"}]},"documentation":{"id":13373,"nodeType":"StructuredDocumentation","src":"917:23:73","text":"@inheritdoc IPlugin"},"functionSelector":"41de6830","id":13384,"implemented":true,"kind":"function","modifiers":[],"name":"pluginType","nameLocation":"954:10:73","nodeType":"FunctionDefinition","overrides":{"id":13375,"nodeType":"OverrideSpecifier","overrides":[],"src":"979:8:73"},"parameters":{"id":13374,"nodeType":"ParameterList","parameters":[],"src":"964:2:73"},"returnParameters":{"id":13379,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13378,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13384,"src":"997:10:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_PluginType_$13330","typeString":"enum IPlugin.PluginType"},"typeName":{"id":13377,"nodeType":"UserDefinedTypeName","pathNode":{"id":13376,"name":"PluginType","nameLocations":["997:10:73"],"nodeType":"IdentifierPath","referencedDeclaration":13330,"src":"997:10:73"},"referencedDeclaration":13330,"src":"997:10:73","typeDescriptions":{"typeIdentifier":"t_enum$_PluginType_$13330","typeString":"enum IPlugin.PluginType"}},"visibility":"internal"}],"src":"996:12:73"},"scope":13414,"src":"945:112:73","stateMutability":"pure","virtual":false,"visibility":"public"},{"baseFunctions":[9730],"body":{"id":13412,"nodeType":"Block","src":"1357:196:73","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":13410,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":13405,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":13398,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13393,"name":"_interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13387,"src":"1386:12:73","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":13395,"name":"IPlugin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13338,"src":"1407:7:73","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IPlugin_$13338_$","typeString":"type(contract IPlugin)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IPlugin_$13338_$","typeString":"type(contract IPlugin)"}],"id":13394,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"1402:4:73","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":13396,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1402:13:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IPlugin_$13338","typeString":"type(contract IPlugin)"}},"id":13397,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1416:11:73","memberName":"interfaceId","nodeType":"MemberAccess","src":"1402:25:73","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"1386:41:73","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":13404,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13399,"name":"_interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13387,"src":"1443:12:73","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":13401,"name":"IProtocolVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14744,"src":"1464:16:73","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IProtocolVersion_$14744_$","typeString":"type(contract IProtocolVersion)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IProtocolVersion_$14744_$","typeString":"type(contract IProtocolVersion)"}],"id":13400,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"1459:4:73","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":13402,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1459:22:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IProtocolVersion_$14744","typeString":"type(contract IProtocolVersion)"}},"id":13403,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1482:11:73","memberName":"interfaceId","nodeType":"MemberAccess","src":"1459:34:73","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"1443:50:73","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1386:107:73","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":13408,"name":"_interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13387,"src":"1533:12:73","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":13406,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967271,"src":"1509:5:73","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_Plugin_$13414_$","typeString":"type(contract super Plugin)"}},"id":13407,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1515:17:73","memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":9730,"src":"1509:23:73","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bool_$","typeString":"function (bytes4) view returns (bool)"}},"id":13409,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1509:37:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1386:160:73","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":13392,"id":13411,"nodeType":"Return","src":"1367:179:73"}]},"documentation":{"id":13385,"nodeType":"StructuredDocumentation","src":"1063:197:73","text":"@notice Checks if this or the parent contract supports an interface by its ID.\n @param _interfaceId The ID of the interface.\n @return Returns `true` if the interface is supported."},"functionSelector":"01ffc9a7","id":13413,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"1274:17:73","nodeType":"FunctionDefinition","overrides":{"id":13389,"nodeType":"OverrideSpecifier","overrides":[],"src":"1333:8:73"},"parameters":{"id":13388,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13387,"mutability":"mutable","name":"_interfaceId","nameLocation":"1299:12:73","nodeType":"VariableDeclaration","scope":13413,"src":"1292:19:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":13386,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1292:6:73","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"1291:21:73"},"returnParameters":{"id":13392,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13391,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13413,"src":"1351:4:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":13390,"name":"bool","nodeType":"ElementaryTypeName","src":"1351:4:73","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1350:6:73"},"scope":13414,"src":"1265:288:73","stateMutability":"view","virtual":true,"visibility":"public"}],"scope":13415,"src":"673:882:73","usedErrors":[]}],"src":"47:1509:73"},"id":73},"src/plugin/PluginCloneable.sol":{"ast":{"absolutePath":"src/plugin/PluginCloneable.sol","exportedSymbols":{"DaoAuthorizableUpgradeable":[13161],"ERC165Upgradeable":[2822],"IDAO":[10865],"IPlugin":[13338],"IProtocolVersion":[14744],"PluginCloneable":[13501],"ProtocolVersion":[14766]},"id":13502,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":13416,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:74"},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol","file":"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol","id":13418,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13502,"sourceUnit":2823,"src":"72:112:74","symbolAliases":[{"foreign":{"id":13417,"name":"ERC165Upgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2822,"src":"80:17:74","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/utils/versioning/IProtocolVersion.sol","file":"../utils/versioning/IProtocolVersion.sol","id":13420,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13502,"sourceUnit":14745,"src":"186:74:74","symbolAliases":[{"foreign":{"id":13419,"name":"IProtocolVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14744,"src":"194:16:74","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/utils/versioning/ProtocolVersion.sol","file":"../utils/versioning/ProtocolVersion.sol","id":13422,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13502,"sourceUnit":14767,"src":"261:72:74","symbolAliases":[{"foreign":{"id":13421,"name":"ProtocolVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14766,"src":"269:15:74","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/permission/auth/DaoAuthorizableUpgradeable.sol","file":"../permission/auth/DaoAuthorizableUpgradeable.sol","id":13424,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13502,"sourceUnit":13162,"src":"334:93:74","symbolAliases":[{"foreign":{"id":13423,"name":"DaoAuthorizableUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13161,"src":"342:26:74","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/dao/IDAO.sol","file":"../dao/IDAO.sol","id":13426,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13502,"sourceUnit":10866,"src":"428:37:74","symbolAliases":[{"foreign":{"id":13425,"name":"IDAO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10865,"src":"436:4:74","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/plugin/IPlugin.sol","file":"./IPlugin.sol","id":13428,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13502,"sourceUnit":13339,"src":"466:38:74","symbolAliases":[{"foreign":{"id":13427,"name":"IPlugin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13338,"src":"474:7:74","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":13430,"name":"IPlugin","nameLocations":["846:7:74"],"nodeType":"IdentifierPath","referencedDeclaration":13338,"src":"846:7:74"},"id":13431,"nodeType":"InheritanceSpecifier","src":"846:7:74"},{"baseName":{"id":13432,"name":"ERC165Upgradeable","nameLocations":["859:17:74"],"nodeType":"IdentifierPath","referencedDeclaration":2822,"src":"859:17:74"},"id":13433,"nodeType":"InheritanceSpecifier","src":"859:17:74"},{"baseName":{"id":13434,"name":"DaoAuthorizableUpgradeable","nameLocations":["882:26:74"],"nodeType":"IdentifierPath","referencedDeclaration":13161,"src":"882:26:74"},"id":13435,"nodeType":"InheritanceSpecifier","src":"882:26:74"},{"baseName":{"id":13436,"name":"ProtocolVersion","nameLocations":["914:15:74"],"nodeType":"IdentifierPath","referencedDeclaration":14766,"src":"914:15:74"},"id":13437,"nodeType":"InheritanceSpecifier","src":"914:15:74"}],"canonicalName":"PluginCloneable","contractDependencies":[],"contractKind":"contract","documentation":{"id":13429,"nodeType":"StructuredDocumentation","src":"506:299:74","text":"@title PluginCloneable\n @author Aragon X - 2022-2023\n @notice An abstract, non-upgradeable contract to inherit from when creating a plugin being deployed via the minimal clones pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)).\n @custom:security-contact sirt@aragon.org"},"fullyImplemented":true,"id":13501,"linearizedBaseContracts":[13501,14766,14744,13161,2593,2822,2834,534,13338],"name":"PluginCloneable","nameLocation":"823:15:74","nodeType":"ContractDefinition","nodes":[{"body":{"id":13444,"nodeType":"Block","src":"1121:39:74","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":13441,"name":"_disableInitializers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":515,"src":"1131:20:74","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":13442,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1131:22:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13443,"nodeType":"ExpressionStatement","src":"1131:22:74"}]},"documentation":{"id":13438,"nodeType":"StructuredDocumentation","src":"936:166:74","text":"@notice Disables the initializers on the implementation contract to prevent it from being left uninitialized.\n @custom:oz-upgrades-unsafe-allow constructor"},"id":13445,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":13439,"nodeType":"ParameterList","parameters":[],"src":"1118:2:74"},"returnParameters":{"id":13440,"nodeType":"ParameterList","parameters":[],"src":"1121:0:74"},"scope":13501,"src":"1107:53:74","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":13458,"nodeType":"Block","src":"1404:56:74","statements":[{"expression":{"arguments":[{"id":13455,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13449,"src":"1448:4:74","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}],"id":13454,"name":"__DaoAuthorizableUpgradeable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13125,"src":"1414:33:74","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IDAO_$10865_$returns$__$","typeString":"function (contract IDAO)"}},"id":13456,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1414:39:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13457,"nodeType":"ExpressionStatement","src":"1414:39:74"}]},"documentation":{"id":13446,"nodeType":"StructuredDocumentation","src":"1166:103:74","text":"@notice Initializes the plugin by storing the associated DAO.\n @param _dao The DAO contract."},"id":13459,"implemented":true,"kind":"function","modifiers":[{"id":13452,"kind":"modifierInvocation","modifierName":{"id":13451,"name":"onlyInitializing","nameLocations":["1387:16:74"],"nodeType":"IdentifierPath","referencedDeclaration":479,"src":"1387:16:74"},"nodeType":"ModifierInvocation","src":"1387:16:74"}],"name":"__PluginCloneable_init","nameLocation":"1336:22:74","nodeType":"FunctionDefinition","parameters":{"id":13450,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13449,"mutability":"mutable","name":"_dao","nameLocation":"1364:4:74","nodeType":"VariableDeclaration","scope":13459,"src":"1359:9:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"},"typeName":{"id":13448,"nodeType":"UserDefinedTypeName","pathNode":{"id":13447,"name":"IDAO","nameLocations":["1359:4:74"],"nodeType":"IdentifierPath","referencedDeclaration":10865,"src":"1359:4:74"},"referencedDeclaration":10865,"src":"1359:4:74","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}},"visibility":"internal"}],"src":"1358:11:74"},"returnParameters":{"id":13453,"nodeType":"ParameterList","parameters":[],"src":"1404:0:74"},"scope":13501,"src":"1327:133:74","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"baseFunctions":[13337],"body":{"id":13470,"nodeType":"Block","src":"1558:44:74","statements":[{"expression":{"expression":{"id":13467,"name":"PluginType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13330,"src":"1575:10:74","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_PluginType_$13330_$","typeString":"type(enum IPlugin.PluginType)"}},"id":13468,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1586:9:74","memberName":"Cloneable","nodeType":"MemberAccess","referencedDeclaration":13328,"src":"1575:20:74","typeDescriptions":{"typeIdentifier":"t_enum$_PluginType_$13330","typeString":"enum IPlugin.PluginType"}},"functionReturnParameters":13466,"id":13469,"nodeType":"Return","src":"1568:27:74"}]},"documentation":{"id":13460,"nodeType":"StructuredDocumentation","src":"1466:23:74","text":"@inheritdoc IPlugin"},"functionSelector":"41de6830","id":13471,"implemented":true,"kind":"function","modifiers":[],"name":"pluginType","nameLocation":"1503:10:74","nodeType":"FunctionDefinition","overrides":{"id":13462,"nodeType":"OverrideSpecifier","overrides":[],"src":"1528:8:74"},"parameters":{"id":13461,"nodeType":"ParameterList","parameters":[],"src":"1513:2:74"},"returnParameters":{"id":13466,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13465,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13471,"src":"1546:10:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_PluginType_$13330","typeString":"enum IPlugin.PluginType"},"typeName":{"id":13464,"nodeType":"UserDefinedTypeName","pathNode":{"id":13463,"name":"PluginType","nameLocations":["1546:10:74"],"nodeType":"IdentifierPath","referencedDeclaration":13330,"src":"1546:10:74"},"referencedDeclaration":13330,"src":"1546:10:74","typeDescriptions":{"typeIdentifier":"t_enum$_PluginType_$13330","typeString":"enum IPlugin.PluginType"}},"visibility":"internal"}],"src":"1545:12:74"},"scope":13501,"src":"1494:108:74","stateMutability":"pure","virtual":false,"visibility":"public"},{"baseFunctions":[2816],"body":{"id":13499,"nodeType":"Block","src":"1902:196:74","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":13497,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":13492,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":13485,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13480,"name":"_interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13474,"src":"1931:12:74","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":13482,"name":"IPlugin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13338,"src":"1952:7:74","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IPlugin_$13338_$","typeString":"type(contract IPlugin)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IPlugin_$13338_$","typeString":"type(contract IPlugin)"}],"id":13481,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"1947:4:74","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":13483,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1947:13:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IPlugin_$13338","typeString":"type(contract IPlugin)"}},"id":13484,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1961:11:74","memberName":"interfaceId","nodeType":"MemberAccess","src":"1947:25:74","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"1931:41:74","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":13491,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13486,"name":"_interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13474,"src":"1988:12:74","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":13488,"name":"IProtocolVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14744,"src":"2009:16:74","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IProtocolVersion_$14744_$","typeString":"type(contract IProtocolVersion)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IProtocolVersion_$14744_$","typeString":"type(contract IProtocolVersion)"}],"id":13487,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"2004:4:74","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":13489,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2004:22:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IProtocolVersion_$14744","typeString":"type(contract IProtocolVersion)"}},"id":13490,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2027:11:74","memberName":"interfaceId","nodeType":"MemberAccess","src":"2004:34:74","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"1988:50:74","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1931:107:74","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":13495,"name":"_interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13474,"src":"2078:12:74","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":13493,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967271,"src":"2054:5:74","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_PluginCloneable_$13501_$","typeString":"type(contract super PluginCloneable)"}},"id":13494,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2060:17:74","memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":2816,"src":"2054:23:74","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bool_$","typeString":"function (bytes4) view returns (bool)"}},"id":13496,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2054:37:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1931:160:74","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":13479,"id":13498,"nodeType":"Return","src":"1912:179:74"}]},"documentation":{"id":13472,"nodeType":"StructuredDocumentation","src":"1608:197:74","text":"@notice Checks if this or the parent contract supports an interface by its ID.\n @param _interfaceId The ID of the interface.\n @return Returns `true` if the interface is supported."},"functionSelector":"01ffc9a7","id":13500,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"1819:17:74","nodeType":"FunctionDefinition","overrides":{"id":13476,"nodeType":"OverrideSpecifier","overrides":[],"src":"1878:8:74"},"parameters":{"id":13475,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13474,"mutability":"mutable","name":"_interfaceId","nameLocation":"1844:12:74","nodeType":"VariableDeclaration","scope":13500,"src":"1837:19:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":13473,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1837:6:74","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"1836:21:74"},"returnParameters":{"id":13479,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13478,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13500,"src":"1896:4:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":13477,"name":"bool","nodeType":"ElementaryTypeName","src":"1896:4:74","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1895:6:74"},"scope":13501,"src":"1810:288:74","stateMutability":"view","virtual":true,"visibility":"public"}],"scope":13502,"src":"805:1295:74","usedErrors":[]}],"src":"47:2054:74"},"id":74},"src/plugin/PluginUUPSUpgradeable.sol":{"ast":{"absolutePath":"src/plugin/PluginUUPSUpgradeable.sol","exportedSymbols":{"DaoAuthorizableUpgradeable":[13161],"ERC165Upgradeable":[2822],"IDAO":[10865],"IERC1822ProxiableUpgradeable":[30],"IPlugin":[13338],"IProtocolVersion":[14744],"PluginUUPSUpgradeable":[13633],"ProtocolVersion":[14766],"UUPSUpgradeable":[671]},"id":13634,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":13503,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:75"},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol","id":13505,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13634,"sourceUnit":672,"src":"72:100:75","symbolAliases":[{"foreign":{"id":13504,"name":"UUPSUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":671,"src":"80:15:75","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol","file":"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol","id":13507,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13634,"sourceUnit":31,"src":"173:122:75","symbolAliases":[{"foreign":{"id":13506,"name":"IERC1822ProxiableUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30,"src":"181:28:75","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol","file":"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol","id":13509,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13634,"sourceUnit":2823,"src":"296:112:75","symbolAliases":[{"foreign":{"id":13508,"name":"ERC165Upgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2822,"src":"304:17:75","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/utils/versioning/IProtocolVersion.sol","file":"../utils/versioning/IProtocolVersion.sol","id":13511,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13634,"sourceUnit":14745,"src":"410:74:75","symbolAliases":[{"foreign":{"id":13510,"name":"IProtocolVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14744,"src":"418:16:75","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/utils/versioning/ProtocolVersion.sol","file":"../utils/versioning/ProtocolVersion.sol","id":13513,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13634,"sourceUnit":14767,"src":"485:72:75","symbolAliases":[{"foreign":{"id":13512,"name":"ProtocolVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14766,"src":"493:15:75","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/permission/auth/DaoAuthorizableUpgradeable.sol","file":"../permission/auth/DaoAuthorizableUpgradeable.sol","id":13515,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13634,"sourceUnit":13162,"src":"558:93:75","symbolAliases":[{"foreign":{"id":13514,"name":"DaoAuthorizableUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13161,"src":"566:26:75","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/dao/IDAO.sol","file":"../dao/IDAO.sol","id":13517,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13634,"sourceUnit":10866,"src":"652:37:75","symbolAliases":[{"foreign":{"id":13516,"name":"IDAO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10865,"src":"660:4:75","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/plugin/IPlugin.sol","file":"./IPlugin.sol","id":13519,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13634,"sourceUnit":13339,"src":"690:38:75","symbolAliases":[{"foreign":{"id":13518,"name":"IPlugin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13338,"src":"698:7:75","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":13521,"name":"IPlugin","nameLocations":["1068:7:75"],"nodeType":"IdentifierPath","referencedDeclaration":13338,"src":"1068:7:75"},"id":13522,"nodeType":"InheritanceSpecifier","src":"1068:7:75"},{"baseName":{"id":13523,"name":"ERC165Upgradeable","nameLocations":["1081:17:75"],"nodeType":"IdentifierPath","referencedDeclaration":2822,"src":"1081:17:75"},"id":13524,"nodeType":"InheritanceSpecifier","src":"1081:17:75"},{"baseName":{"id":13525,"name":"UUPSUpgradeable","nameLocations":["1104:15:75"],"nodeType":"IdentifierPath","referencedDeclaration":671,"src":"1104:15:75"},"id":13526,"nodeType":"InheritanceSpecifier","src":"1104:15:75"},{"baseName":{"id":13527,"name":"DaoAuthorizableUpgradeable","nameLocations":["1125:26:75"],"nodeType":"IdentifierPath","referencedDeclaration":13161,"src":"1125:26:75"},"id":13528,"nodeType":"InheritanceSpecifier","src":"1125:26:75"},{"baseName":{"id":13529,"name":"ProtocolVersion","nameLocations":["1157:15:75"],"nodeType":"IdentifierPath","referencedDeclaration":14766,"src":"1157:15:75"},"id":13530,"nodeType":"InheritanceSpecifier","src":"1157:15:75"}],"canonicalName":"PluginUUPSUpgradeable","contractDependencies":[],"contractKind":"contract","documentation":{"id":13520,"nodeType":"StructuredDocumentation","src":"730:291:75","text":"@title PluginUUPSUpgradeable\n @author Aragon X - 2022-2023\n @notice An abstract, upgradeable contract to inherit from when creating a plugin being deployed via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\n @custom:security-contact sirt@aragon.org"},"fullyImplemented":true,"id":13633,"linearizedBaseContracts":[13633,14766,14744,13161,2593,671,355,20,30,2822,2834,534,13338],"name":"PluginUUPSUpgradeable","nameLocation":"1039:21:75","nodeType":"ContractDefinition","nodes":[{"body":{"id":13537,"nodeType":"Block","src":"1479:39:75","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":13534,"name":"_disableInitializers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":515,"src":"1489:20:75","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":13535,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1489:22:75","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13536,"nodeType":"ExpressionStatement","src":"1489:22:75"}]},"documentation":{"id":13531,"nodeType":"StructuredDocumentation","src":"1294:166:75","text":"@notice Disables the initializers on the implementation contract to prevent it from being left uninitialized.\n @custom:oz-upgrades-unsafe-allow constructor"},"id":13538,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":13532,"nodeType":"ParameterList","parameters":[],"src":"1476:2:75"},"returnParameters":{"id":13533,"nodeType":"ParameterList","parameters":[],"src":"1479:0:75"},"scope":13633,"src":"1465:53:75","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[13337],"body":{"id":13549,"nodeType":"Block","src":"1616:39:75","statements":[{"expression":{"expression":{"id":13546,"name":"PluginType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13330,"src":"1633:10:75","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_PluginType_$13330_$","typeString":"type(enum IPlugin.PluginType)"}},"id":13547,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1644:4:75","memberName":"UUPS","nodeType":"MemberAccess","referencedDeclaration":13327,"src":"1633:15:75","typeDescriptions":{"typeIdentifier":"t_enum$_PluginType_$13330","typeString":"enum IPlugin.PluginType"}},"functionReturnParameters":13545,"id":13548,"nodeType":"Return","src":"1626:22:75"}]},"documentation":{"id":13539,"nodeType":"StructuredDocumentation","src":"1524:23:75","text":"@inheritdoc IPlugin"},"functionSelector":"41de6830","id":13550,"implemented":true,"kind":"function","modifiers":[],"name":"pluginType","nameLocation":"1561:10:75","nodeType":"FunctionDefinition","overrides":{"id":13541,"nodeType":"OverrideSpecifier","overrides":[],"src":"1586:8:75"},"parameters":{"id":13540,"nodeType":"ParameterList","parameters":[],"src":"1571:2:75"},"returnParameters":{"id":13545,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13544,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13550,"src":"1604:10:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_PluginType_$13330","typeString":"enum IPlugin.PluginType"},"typeName":{"id":13543,"nodeType":"UserDefinedTypeName","pathNode":{"id":13542,"name":"PluginType","nameLocations":["1604:10:75"],"nodeType":"IdentifierPath","referencedDeclaration":13330,"src":"1604:10:75"},"referencedDeclaration":13330,"src":"1604:10:75","typeDescriptions":{"typeIdentifier":"t_enum$_PluginType_$13330","typeString":"enum IPlugin.PluginType"}},"visibility":"internal"}],"src":"1603:12:75"},"scope":13633,"src":"1552:103:75","stateMutability":"pure","virtual":false,"visibility":"public"},{"constant":true,"documentation":{"id":13551,"nodeType":"StructuredDocumentation","src":"1661:87:75","text":"@notice The ID of the permission required to call the `_authorizeUpgrade` function."},"functionSelector":"c9c4bfca","id":13556,"mutability":"constant","name":"UPGRADE_PLUGIN_PERMISSION_ID","nameLocation":"1777:28:75","nodeType":"VariableDeclaration","scope":13633,"src":"1753:93:75","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":13552,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1753:7:75","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"555047524144455f504c5547494e5f5045524d495353494f4e","id":13554,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1818:27:75","typeDescriptions":{"typeIdentifier":"t_stringliteral_821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f5","typeString":"literal_string \"UPGRADE_PLUGIN_PERMISSION\""},"value":"UPGRADE_PLUGIN_PERMISSION"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f5","typeString":"literal_string \"UPGRADE_PLUGIN_PERMISSION\""}],"id":13553,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967288,"src":"1808:9:75","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":13555,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1808:38:75","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"public"},{"body":{"id":13569,"nodeType":"Block","src":"2097:56:75","statements":[{"expression":{"arguments":[{"id":13566,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13560,"src":"2141:4:75","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}],"id":13565,"name":"__DaoAuthorizableUpgradeable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13125,"src":"2107:33:75","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IDAO_$10865_$returns$__$","typeString":"function (contract IDAO)"}},"id":13567,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2107:39:75","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13568,"nodeType":"ExpressionStatement","src":"2107:39:75"}]},"documentation":{"id":13557,"nodeType":"StructuredDocumentation","src":"1853:103:75","text":"@notice Initializes the plugin by storing the associated DAO.\n @param _dao The DAO contract."},"id":13570,"implemented":true,"kind":"function","modifiers":[{"id":13563,"kind":"modifierInvocation","modifierName":{"id":13562,"name":"onlyInitializing","nameLocations":["2080:16:75"],"nodeType":"IdentifierPath","referencedDeclaration":479,"src":"2080:16:75"},"nodeType":"ModifierInvocation","src":"2080:16:75"}],"name":"__PluginUUPSUpgradeable_init","nameLocation":"2023:28:75","nodeType":"FunctionDefinition","parameters":{"id":13561,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13560,"mutability":"mutable","name":"_dao","nameLocation":"2057:4:75","nodeType":"VariableDeclaration","scope":13570,"src":"2052:9:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"},"typeName":{"id":13559,"nodeType":"UserDefinedTypeName","pathNode":{"id":13558,"name":"IDAO","nameLocations":["2052:4:75"],"nodeType":"IdentifierPath","referencedDeclaration":10865,"src":"2052:4:75"},"referencedDeclaration":10865,"src":"2052:4:75","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}},"visibility":"internal"}],"src":"2051:11:75"},"returnParameters":{"id":13564,"nodeType":"ParameterList","parameters":[],"src":"2097:0:75"},"scope":13633,"src":"2014:139:75","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"baseFunctions":[2816],"body":{"id":13605,"nodeType":"Block","src":"2450:274:75","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":13603,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":13598,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":13591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":13584,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13579,"name":"_interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13573,"src":"2479:12:75","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":13581,"name":"IPlugin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13338,"src":"2500:7:75","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IPlugin_$13338_$","typeString":"type(contract IPlugin)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IPlugin_$13338_$","typeString":"type(contract IPlugin)"}],"id":13580,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"2495:4:75","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":13582,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2495:13:75","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IPlugin_$13338","typeString":"type(contract IPlugin)"}},"id":13583,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2509:11:75","memberName":"interfaceId","nodeType":"MemberAccess","src":"2495:25:75","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"2479:41:75","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":13590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13585,"name":"_interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13573,"src":"2536:12:75","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":13587,"name":"IProtocolVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14744,"src":"2557:16:75","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IProtocolVersion_$14744_$","typeString":"type(contract IProtocolVersion)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IProtocolVersion_$14744_$","typeString":"type(contract IProtocolVersion)"}],"id":13586,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"2552:4:75","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":13588,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2552:22:75","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IProtocolVersion_$14744","typeString":"type(contract IProtocolVersion)"}},"id":13589,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2575:11:75","memberName":"interfaceId","nodeType":"MemberAccess","src":"2552:34:75","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"2536:50:75","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2479:107:75","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":13597,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13592,"name":"_interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13573,"src":"2602:12:75","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":13594,"name":"IERC1822ProxiableUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30,"src":"2623:28:75","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC1822ProxiableUpgradeable_$30_$","typeString":"type(contract IERC1822ProxiableUpgradeable)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC1822ProxiableUpgradeable_$30_$","typeString":"type(contract IERC1822ProxiableUpgradeable)"}],"id":13593,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"2618:4:75","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":13595,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2618:34:75","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC1822ProxiableUpgradeable_$30","typeString":"type(contract IERC1822ProxiableUpgradeable)"}},"id":13596,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2653:11:75","memberName":"interfaceId","nodeType":"MemberAccess","src":"2618:46:75","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"2602:62:75","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2479:185:75","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":13601,"name":"_interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13573,"src":"2704:12:75","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":13599,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967271,"src":"2680:5:75","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_PluginUUPSUpgradeable_$13633_$","typeString":"type(contract super PluginUUPSUpgradeable)"}},"id":13600,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2686:17:75","memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":2816,"src":"2680:23:75","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bool_$","typeString":"function (bytes4) view returns (bool)"}},"id":13602,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2680:37:75","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2479:238:75","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":13578,"id":13604,"nodeType":"Return","src":"2460:257:75"}]},"documentation":{"id":13571,"nodeType":"StructuredDocumentation","src":"2159:194:75","text":"@notice Checks if an interface is supported by this or its parent contract.\n @param _interfaceId The ID of the interface.\n @return Returns `true` if the interface is supported."},"functionSelector":"01ffc9a7","id":13606,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"2367:17:75","nodeType":"FunctionDefinition","overrides":{"id":13575,"nodeType":"OverrideSpecifier","overrides":[],"src":"2426:8:75"},"parameters":{"id":13574,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13573,"mutability":"mutable","name":"_interfaceId","nameLocation":"2392:12:75","nodeType":"VariableDeclaration","scope":13606,"src":"2385:19:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":13572,"name":"bytes4","nodeType":"ElementaryTypeName","src":"2385:6:75","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"2384:21:75"},"returnParameters":{"id":13578,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13577,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13606,"src":"2444:4:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":13576,"name":"bool","nodeType":"ElementaryTypeName","src":"2444:4:75","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2443:6:75"},"scope":13633,"src":"2358:366:75","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":13615,"nodeType":"Block","src":"3061:44:75","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":13612,"name":"_getImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76,"src":"3078:18:75","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":13613,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3078:20:75","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":13611,"id":13614,"nodeType":"Return","src":"3071:27:75"}]},"documentation":{"id":13607,"nodeType":"StructuredDocumentation","src":"2730:270:75","text":"@notice Returns the address of the implementation contract in the [proxy storage slot](https://eips.ethereum.org/EIPS/eip-1967) slot the [UUPS proxy](https://eips.ethereum.org/EIPS/eip-1822) is pointing to.\n @return The address of the implementation contract."},"functionSelector":"5c60da1b","id":13616,"implemented":true,"kind":"function","modifiers":[],"name":"implementation","nameLocation":"3014:14:75","nodeType":"FunctionDefinition","parameters":{"id":13608,"nodeType":"ParameterList","parameters":[],"src":"3028:2:75"},"returnParameters":{"id":13611,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13610,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13616,"src":"3052:7:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13609,"name":"address","nodeType":"ElementaryTypeName","src":"3052:7:75","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3051:9:75"},"scope":13633,"src":"3005:100:75","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[665],"body":{"id":13626,"nodeType":"Block","src":"3642:8:75","statements":[]},"documentation":{"id":13617,"nodeType":"StructuredDocumentation","src":"3111:330:75","text":"@notice Internal method authorizing the upgrade of the contract via the [upgradeability mechanism for UUPS proxies](https://docs.openzeppelin.com/contracts/4.x/api/proxy#UUPSUpgradeable) (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\n @dev The caller must have the `UPGRADE_PLUGIN_PERMISSION_ID` permission."},"id":13627,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":13623,"name":"UPGRADE_PLUGIN_PERMISSION_ID","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13556,"src":"3559:28:75","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":13624,"kind":"modifierInvocation","modifierName":{"id":13622,"name":"auth","nameLocations":["3554:4:75"],"nodeType":"IdentifierPath","referencedDeclaration":13155,"src":"3554:4:75"},"nodeType":"ModifierInvocation","src":"3554:34:75"}],"name":"_authorizeUpgrade","nameLocation":"3455:17:75","nodeType":"FunctionDefinition","overrides":{"id":13621,"nodeType":"OverrideSpecifier","overrides":[],"src":"3537:8:75"},"parameters":{"id":13620,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13619,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13627,"src":"3482:7:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13618,"name":"address","nodeType":"ElementaryTypeName","src":"3482:7:75","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3472:23:75"},"returnParameters":{"id":13625,"nodeType":"ParameterList","parameters":[],"src":"3642:0:75"},"scope":13633,"src":"3446:204:75","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"constant":false,"documentation":{"id":13628,"nodeType":"StructuredDocumentation","src":"3656:273:75","text":"@notice This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain (see [OpenZeppelin's guide about storage gaps](https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps))."},"id":13632,"mutability":"mutable","name":"__gap","nameLocation":"3954:5:75","nodeType":"VariableDeclaration","scope":13633,"src":"3934:25:75","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$50_storage","typeString":"uint256[50]"},"typeName":{"baseType":{"id":13629,"name":"uint256","nodeType":"ElementaryTypeName","src":"3934:7:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13631,"length":{"hexValue":"3530","id":13630,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3942:2:75","typeDescriptions":{"typeIdentifier":"t_rational_50_by_1","typeString":"int_const 50"},"value":"50"},"nodeType":"ArrayTypeName","src":"3934:11:75","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$50_storage_ptr","typeString":"uint256[50]"}},"visibility":"private"}],"scope":13634,"src":"1021:2941:75","usedErrors":[13176]}],"src":"47:3916:75"},"id":75},"src/plugin/extensions/governance/Addresslist.sol":{"ast":{"absolutePath":"src/plugin/extensions/governance/Addresslist.sol","exportedSymbols":{"Addresslist":[13831],"CheckpointsUpgradeable":[2542],"_uncheckedAdd":[14716],"_uncheckedSub":[14732]},"id":13832,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":13635,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:76"},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/CheckpointsUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/utils/CheckpointsUpgradeable.sol","id":13637,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13832,"sourceUnit":2543,"src":"72:108:76","symbolAliases":[{"foreign":{"id":13636,"name":"CheckpointsUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2542,"src":"80:22:76","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/utils/math/UncheckedMath.sol","file":"../../../utils/math/UncheckedMath.sol","id":13640,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13832,"sourceUnit":14733,"src":"182:83:76","symbolAliases":[{"foreign":{"id":13638,"name":"_uncheckedAdd","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14716,"src":"190:13:76","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":13639,"name":"_uncheckedSub","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14732,"src":"205:13:76","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[],"canonicalName":"Addresslist","contractDependencies":[],"contractKind":"contract","documentation":{"id":13641,"nodeType":"StructuredDocumentation","src":"267:288:76","text":"@title Addresslist\n @author Aragon X - 2021-2023\n @notice The majority voting implementation using a list of member addresses.\n @dev This contract inherits from `MajorityVotingBase` and implements the `IMajorityVoting` interface.\n @custom:security-contact sirt@aragon.org"},"fullyImplemented":true,"id":13831,"linearizedBaseContracts":[13831],"name":"Addresslist","nameLocation":"573:11:76","nodeType":"ContractDefinition","nodes":[{"global":false,"id":13645,"libraryName":{"id":13642,"name":"CheckpointsUpgradeable","nameLocations":["597:22:76"],"nodeType":"IdentifierPath","referencedDeclaration":2542,"src":"597:22:76"},"nodeType":"UsingForDirective","src":"591:64:76","typeName":{"id":13644,"nodeType":"UserDefinedTypeName","pathNode":{"id":13643,"name":"CheckpointsUpgradeable.History","nameLocations":["624:22:76","647:7:76"],"nodeType":"IdentifierPath","referencedDeclaration":1011,"src":"624:30:76"},"referencedDeclaration":1011,"src":"624:30:76","typeDescriptions":{"typeIdentifier":"t_struct$_History_$1011_storage_ptr","typeString":"struct CheckpointsUpgradeable.History"}}},{"constant":false,"documentation":{"id":13646,"nodeType":"StructuredDocumentation","src":"661:80:76","text":"@notice The mapping containing the checkpointed history of the address list."},"id":13651,"mutability":"mutable","name":"_addresslistCheckpoints","nameLocation":"863:23:76","nodeType":"VariableDeclaration","scope":13831,"src":"804:82:76","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_History_$1011_storage_$","typeString":"mapping(address => struct CheckpointsUpgradeable.History)"},"typeName":{"id":13650,"keyType":{"id":13647,"name":"address","nodeType":"ElementaryTypeName","src":"812:7:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"804:50:76","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_History_$1011_storage_$","typeString":"mapping(address => struct CheckpointsUpgradeable.History)"},"valueType":{"id":13649,"nodeType":"UserDefinedTypeName","pathNode":{"id":13648,"name":"CheckpointsUpgradeable.History","nameLocations":["823:22:76","846:7:76"],"nodeType":"IdentifierPath","referencedDeclaration":1011,"src":"823:30:76"},"referencedDeclaration":1011,"src":"823:30:76","typeDescriptions":{"typeIdentifier":"t_struct$_History_$1011_storage_ptr","typeString":"struct CheckpointsUpgradeable.History"}}},"visibility":"private"},{"constant":false,"documentation":{"id":13652,"nodeType":"StructuredDocumentation","src":"893:71:76","text":"@notice The checkpointed history of the length of the address list."},"id":13655,"mutability":"mutable","name":"_addresslistLengthCheckpoints","nameLocation":"1008:29:76","nodeType":"VariableDeclaration","scope":13831,"src":"969:68:76","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_History_$1011_storage","typeString":"struct CheckpointsUpgradeable.History"},"typeName":{"id":13654,"nodeType":"UserDefinedTypeName","pathNode":{"id":13653,"name":"CheckpointsUpgradeable.History","nameLocations":["969:22:76","992:7:76"],"nodeType":"IdentifierPath","referencedDeclaration":1011,"src":"969:30:76"},"referencedDeclaration":1011,"src":"969:30:76","typeDescriptions":{"typeIdentifier":"t_struct$_History_$1011_storage_ptr","typeString":"struct CheckpointsUpgradeable.History"}},"visibility":"private"},{"documentation":{"id":13656,"nodeType":"StructuredDocumentation","src":"1044:230:76","text":"@notice Thrown when the address list update is invalid, which can be caused by the addition of an existing member or removal of a non-existing member.\n @param member The array of member addresses to be added or removed."},"errorSelector":"c0b7477d","id":13660,"name":"InvalidAddresslistUpdate","nameLocation":"1285:24:76","nodeType":"ErrorDefinition","parameters":{"id":13659,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13658,"mutability":"mutable","name":"member","nameLocation":"1318:6:76","nodeType":"VariableDeclaration","scope":13660,"src":"1310:14:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13657,"name":"address","nodeType":"ElementaryTypeName","src":"1310:7:76","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1309:16:76"},"src":"1279:47:76"},{"body":{"id":13679,"nodeType":"Block","src":"1724:87:76","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13677,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":13674,"name":"_blockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13665,"src":"1786:12:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"id":13670,"name":"_addresslistCheckpoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13651,"src":"1741:23:76","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_History_$1011_storage_$","typeString":"mapping(address => struct CheckpointsUpgradeable.History storage ref)"}},"id":13672,"indexExpression":{"id":13671,"name":"_account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13663,"src":"1765:8:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1741:33:76","typeDescriptions":{"typeIdentifier":"t_struct$_History_$1011_storage","typeString":"struct CheckpointsUpgradeable.History storage ref"}},"id":13673,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1775:10:76","memberName":"getAtBlock","nodeType":"MemberAccess","referencedDeclaration":1073,"src":"1741:44:76","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_History_$1011_storage_ptr_$_t_uint256_$returns$_t_uint256_$bound_to$_t_struct$_History_$1011_storage_ptr_$","typeString":"function (struct CheckpointsUpgradeable.History storage pointer,uint256) view returns (uint256)"}},"id":13675,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1741:58:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":13676,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1803:1:76","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1741:63:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":13669,"id":13678,"nodeType":"Return","src":"1734:70:76"}]},"documentation":{"id":13661,"nodeType":"StructuredDocumentation","src":"1332:265:76","text":"@notice Checks if an account is on the address list at a specific block number.\n @param _account The account address being checked.\n @param _blockNumber The block number.\n @return Whether the account is listed at the specified block number."},"functionSelector":"b1bb8d26","id":13680,"implemented":true,"kind":"function","modifiers":[],"name":"isListedAtBlock","nameLocation":"1611:15:76","nodeType":"FunctionDefinition","parameters":{"id":13666,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13663,"mutability":"mutable","name":"_account","nameLocation":"1644:8:76","nodeType":"VariableDeclaration","scope":13680,"src":"1636:16:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13662,"name":"address","nodeType":"ElementaryTypeName","src":"1636:7:76","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13665,"mutability":"mutable","name":"_blockNumber","nameLocation":"1670:12:76","nodeType":"VariableDeclaration","scope":13680,"src":"1662:20:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13664,"name":"uint256","nodeType":"ElementaryTypeName","src":"1662:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1626:62:76"},"returnParameters":{"id":13669,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13668,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13680,"src":"1718:4:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":13667,"name":"bool","nodeType":"ElementaryTypeName","src":"1718:4:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1717:6:76"},"scope":13831,"src":"1602:209:76","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":13696,"nodeType":"Block","src":"2075:71:76","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint224","typeString":"uint224"},"id":13694,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"baseExpression":{"id":13688,"name":"_addresslistCheckpoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13651,"src":"2092:23:76","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_History_$1011_storage_$","typeString":"mapping(address => struct CheckpointsUpgradeable.History storage ref)"}},"id":13690,"indexExpression":{"id":13689,"name":"_account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13683,"src":"2116:8:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2092:33:76","typeDescriptions":{"typeIdentifier":"t_struct$_History_$1011_storage","typeString":"struct CheckpointsUpgradeable.History storage ref"}},"id":13691,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2126:6:76","memberName":"latest","nodeType":"MemberAccess","referencedDeclaration":1265,"src":"2092:40:76","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_History_$1011_storage_ptr_$returns$_t_uint224_$bound_to$_t_struct$_History_$1011_storage_ptr_$","typeString":"function (struct CheckpointsUpgradeable.History storage pointer) view returns (uint224)"}},"id":13692,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2092:42:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":13693,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2138:1:76","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2092:47:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":13687,"id":13695,"nodeType":"Return","src":"2085:54:76"}]},"documentation":{"id":13681,"nodeType":"StructuredDocumentation","src":"1817:182:76","text":"@notice Checks if an account is currently on the address list.\n @param _account The account address being checked.\n @return Whether the account is currently listed."},"functionSelector":"f794062e","id":13697,"implemented":true,"kind":"function","modifiers":[],"name":"isListed","nameLocation":"2013:8:76","nodeType":"FunctionDefinition","parameters":{"id":13684,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13683,"mutability":"mutable","name":"_account","nameLocation":"2030:8:76","nodeType":"VariableDeclaration","scope":13697,"src":"2022:16:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13682,"name":"address","nodeType":"ElementaryTypeName","src":"2022:7:76","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2021:18:76"},"returnParameters":{"id":13687,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13686,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13697,"src":"2069:4:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":13685,"name":"bool","nodeType":"ElementaryTypeName","src":"2069:4:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2068:6:76"},"scope":13831,"src":"2004:142:76","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":13710,"nodeType":"Block","src":"2524:78:76","statements":[{"expression":{"arguments":[{"id":13707,"name":"_blockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13700,"src":"2582:12:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":13705,"name":"_addresslistLengthCheckpoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13655,"src":"2541:29:76","typeDescriptions":{"typeIdentifier":"t_struct$_History_$1011_storage","typeString":"struct CheckpointsUpgradeable.History storage ref"}},"id":13706,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2571:10:76","memberName":"getAtBlock","nodeType":"MemberAccess","referencedDeclaration":1073,"src":"2541:40:76","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_History_$1011_storage_ptr_$_t_uint256_$returns$_t_uint256_$bound_to$_t_struct$_History_$1011_storage_ptr_$","typeString":"function (struct CheckpointsUpgradeable.History storage pointer,uint256) view returns (uint256)"}},"id":13708,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2541:54:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":13704,"id":13709,"nodeType":"Return","src":"2534:61:76"}]},"documentation":{"id":13698,"nodeType":"StructuredDocumentation","src":"2152:273:76","text":"@notice Returns the length of the address list at a specific block number.\n @param _blockNumber The specific block to get the count from. If `0`, then the latest checkpoint value is returned.\n @return The address list length at the specified block number."},"functionSelector":"6a6b2d86","id":13711,"implemented":true,"kind":"function","modifiers":[],"name":"addresslistLengthAtBlock","nameLocation":"2439:24:76","nodeType":"FunctionDefinition","parameters":{"id":13701,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13700,"mutability":"mutable","name":"_blockNumber","nameLocation":"2472:12:76","nodeType":"VariableDeclaration","scope":13711,"src":"2464:20:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13699,"name":"uint256","nodeType":"ElementaryTypeName","src":"2464:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2463:22:76"},"returnParameters":{"id":13704,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13703,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13711,"src":"2515:7:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13702,"name":"uint256","nodeType":"ElementaryTypeName","src":"2515:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2514:9:76"},"scope":13831,"src":"2430:172:76","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":13721,"nodeType":"Block","src":"2788:62:76","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":13717,"name":"_addresslistLengthCheckpoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13655,"src":"2805:29:76","typeDescriptions":{"typeIdentifier":"t_struct$_History_$1011_storage","typeString":"struct CheckpointsUpgradeable.History storage ref"}},"id":13718,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2835:6:76","memberName":"latest","nodeType":"MemberAccess","referencedDeclaration":1265,"src":"2805:36:76","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_History_$1011_storage_ptr_$returns$_t_uint224_$bound_to$_t_struct$_History_$1011_storage_ptr_$","typeString":"function (struct CheckpointsUpgradeable.History storage pointer) view returns (uint224)"}},"id":13719,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2805:38:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"functionReturnParameters":13716,"id":13720,"nodeType":"Return","src":"2798:45:76"}]},"documentation":{"id":13712,"nodeType":"StructuredDocumentation","src":"2608:108:76","text":"@notice Returns the current length of the address list.\n @return The current address list length."},"functionSelector":"27f1608d","id":13722,"implemented":true,"kind":"function","modifiers":[],"name":"addresslistLength","nameLocation":"2730:17:76","nodeType":"FunctionDefinition","parameters":{"id":13713,"nodeType":"ParameterList","parameters":[],"src":"2747:2:76"},"returnParameters":{"id":13716,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13715,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13722,"src":"2779:7:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13714,"name":"uint256","nodeType":"ElementaryTypeName","src":"2779:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2778:9:76"},"scope":13831,"src":"2721:129:76","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":13772,"nodeType":"Block","src":"3066:445:76","statements":[{"body":{"id":13762,"nodeType":"Block","src":"3120:304:76","statements":[{"condition":{"arguments":[{"baseExpression":{"id":13737,"name":"_newAddresses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13726,"src":"3147:13:76","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":13739,"indexExpression":{"id":13738,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13730,"src":"3161:1:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3147:16:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":13736,"name":"isListed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13697,"src":"3138:8:76","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":13740,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3138:26:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13748,"nodeType":"IfStatement","src":"3134:114:76","trueBody":{"id":13747,"nodeType":"Block","src":"3166:82:76","statements":[{"errorCall":{"arguments":[{"baseExpression":{"id":13742,"name":"_newAddresses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13726,"src":"3216:13:76","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":13744,"indexExpression":{"id":13743,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13730,"src":"3230:1:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3216:16:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":13741,"name":"InvalidAddresslistUpdate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13660,"src":"3191:24:76","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":13745,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3191:42:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13746,"nodeType":"RevertStatement","src":"3184:49:76"}]}},{"expression":{"arguments":[{"hexValue":"31","id":13755,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3351:1:76","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"expression":{"baseExpression":{"id":13749,"name":"_addresslistCheckpoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13651,"src":"3304:23:76","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_History_$1011_storage_$","typeString":"mapping(address => struct CheckpointsUpgradeable.History storage ref)"}},"id":13753,"indexExpression":{"baseExpression":{"id":13750,"name":"_newAddresses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13726,"src":"3328:13:76","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":13752,"indexExpression":{"id":13751,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13730,"src":"3342:1:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3328:16:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3304:41:76","typeDescriptions":{"typeIdentifier":"t_struct$_History_$1011_storage","typeString":"struct CheckpointsUpgradeable.History storage ref"}},"id":13754,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3346:4:76","memberName":"push","nodeType":"MemberAccess","referencedDeclaration":1201,"src":"3304:46:76","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_History_$1011_storage_ptr_$_t_uint256_$returns$_t_uint256_$_t_uint256_$bound_to$_t_struct$_History_$1011_storage_ptr_$","typeString":"function (struct CheckpointsUpgradeable.History storage pointer,uint256) returns (uint256,uint256)"}},"id":13756,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3304:49:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"id":13757,"nodeType":"ExpressionStatement","src":"3304:49:76"},{"id":13761,"nodeType":"UncheckedBlock","src":"3368:46:76","statements":[{"expression":{"id":13759,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"3396:3:76","subExpression":{"id":13758,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13730,"src":"3398:1:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13760,"nodeType":"ExpressionStatement","src":"3396:3:76"}]}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13735,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13732,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13730,"src":"3092:1:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":13733,"name":"_newAddresses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13726,"src":"3096:13:76","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":13734,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3110:6:76","memberName":"length","nodeType":"MemberAccess","src":"3096:20:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3092:24:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13763,"initializationExpression":{"assignments":[13730],"declarations":[{"constant":false,"id":13730,"mutability":"mutable","name":"i","nameLocation":"3089:1:76","nodeType":"VariableDeclaration","scope":13763,"src":"3081:9:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13729,"name":"uint256","nodeType":"ElementaryTypeName","src":"3081:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13731,"nodeType":"VariableDeclarationStatement","src":"3081:9:76"},"nodeType":"ForStatement","src":"3076:348:76"},{"expression":{"arguments":[{"id":13767,"name":"_uncheckedAdd","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14716,"src":"3468:13:76","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},{"expression":{"id":13768,"name":"_newAddresses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13726,"src":"3483:13:76","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":13769,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3497:6:76","memberName":"length","nodeType":"MemberAccess","src":"3483:20:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":13764,"name":"_addresslistLengthCheckpoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13655,"src":"3433:29:76","typeDescriptions":{"typeIdentifier":"t_struct$_History_$1011_storage","typeString":"struct CheckpointsUpgradeable.History storage ref"}},"id":13766,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3463:4:76","memberName":"push","nodeType":"MemberAccess","referencedDeclaration":1235,"src":"3433:34:76","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_History_$1011_storage_ptr_$_t_function_internal_view$_t_uint256_$_t_uint256_$returns$_t_uint256_$_$_t_uint256_$returns$_t_uint256_$_t_uint256_$bound_to$_t_struct$_History_$1011_storage_ptr_$","typeString":"function (struct CheckpointsUpgradeable.History storage pointer,function (uint256,uint256) view returns (uint256),uint256) returns (uint256,uint256)"}},"id":13770,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3433:71:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"id":13771,"nodeType":"ExpressionStatement","src":"3433:71:76"}]},"documentation":{"id":13723,"nodeType":"StructuredDocumentation","src":"2856:131:76","text":"@notice Internal function to add new addresses to the address list.\n @param _newAddresses The new addresses to be added."},"id":13773,"implemented":true,"kind":"function","modifiers":[],"name":"_addAddresses","nameLocation":"3001:13:76","nodeType":"FunctionDefinition","parameters":{"id":13727,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13726,"mutability":"mutable","name":"_newAddresses","nameLocation":"3034:13:76","nodeType":"VariableDeclaration","scope":13773,"src":"3015:32:76","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":13724,"name":"address","nodeType":"ElementaryTypeName","src":"3015:7:76","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":13725,"nodeType":"ArrayTypeName","src":"3015:9:76","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"3014:34:76"},"returnParameters":{"id":13728,"nodeType":"ParameterList","parameters":[],"src":"3066:0:76"},"scope":13831,"src":"2992:519:76","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":13824,"nodeType":"Block","src":"3755:470:76","statements":[{"body":{"id":13814,"nodeType":"Block","src":"3813:321:76","statements":[{"condition":{"id":13792,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"3831:31:76","subExpression":{"arguments":[{"baseExpression":{"id":13788,"name":"_exitingAddresses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13777,"src":"3841:17:76","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":13790,"indexExpression":{"id":13789,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13781,"src":"3859:1:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3841:20:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":13787,"name":"isListed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13697,"src":"3832:8:76","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":13791,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3832:30:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13800,"nodeType":"IfStatement","src":"3827:123:76","trueBody":{"id":13799,"nodeType":"Block","src":"3864:86:76","statements":[{"errorCall":{"arguments":[{"baseExpression":{"id":13794,"name":"_exitingAddresses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13777,"src":"3914:17:76","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":13796,"indexExpression":{"id":13795,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13781,"src":"3932:1:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3914:20:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":13793,"name":"InvalidAddresslistUpdate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13660,"src":"3889:24:76","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":13797,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3889:46:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13798,"nodeType":"RevertStatement","src":"3882:53:76"}]}},{"expression":{"arguments":[{"hexValue":"30","id":13807,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4061:1:76","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"expression":{"baseExpression":{"id":13801,"name":"_addresslistCheckpoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13651,"src":"4010:23:76","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_History_$1011_storage_$","typeString":"mapping(address => struct CheckpointsUpgradeable.History storage ref)"}},"id":13805,"indexExpression":{"baseExpression":{"id":13802,"name":"_exitingAddresses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13777,"src":"4034:17:76","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":13804,"indexExpression":{"id":13803,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13781,"src":"4052:1:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4034:20:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4010:45:76","typeDescriptions":{"typeIdentifier":"t_struct$_History_$1011_storage","typeString":"struct CheckpointsUpgradeable.History storage ref"}},"id":13806,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4056:4:76","memberName":"push","nodeType":"MemberAccess","referencedDeclaration":1201,"src":"4010:50:76","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_History_$1011_storage_ptr_$_t_uint256_$returns$_t_uint256_$_t_uint256_$bound_to$_t_struct$_History_$1011_storage_ptr_$","typeString":"function (struct CheckpointsUpgradeable.History storage pointer,uint256) returns (uint256,uint256)"}},"id":13808,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4010:53:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"id":13809,"nodeType":"ExpressionStatement","src":"4010:53:76"},{"id":13813,"nodeType":"UncheckedBlock","src":"4078:46:76","statements":[{"expression":{"id":13811,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"4106:3:76","subExpression":{"id":13810,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13781,"src":"4108:1:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13812,"nodeType":"ExpressionStatement","src":"4106:3:76"}]}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13786,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13783,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13781,"src":"3781:1:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":13784,"name":"_exitingAddresses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13777,"src":"3785:17:76","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":13785,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3803:6:76","memberName":"length","nodeType":"MemberAccess","src":"3785:24:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3781:28:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13815,"initializationExpression":{"assignments":[13781],"declarations":[{"constant":false,"id":13781,"mutability":"mutable","name":"i","nameLocation":"3778:1:76","nodeType":"VariableDeclaration","scope":13815,"src":"3770:9:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13780,"name":"uint256","nodeType":"ElementaryTypeName","src":"3770:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13782,"nodeType":"VariableDeclarationStatement","src":"3770:9:76"},"nodeType":"ForStatement","src":"3765:369:76"},{"expression":{"arguments":[{"id":13819,"name":"_uncheckedSub","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14732,"src":"4178:13:76","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},{"expression":{"id":13820,"name":"_exitingAddresses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13777,"src":"4193:17:76","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":13821,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4211:6:76","memberName":"length","nodeType":"MemberAccess","src":"4193:24:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":13816,"name":"_addresslistLengthCheckpoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13655,"src":"4143:29:76","typeDescriptions":{"typeIdentifier":"t_struct$_History_$1011_storage","typeString":"struct CheckpointsUpgradeable.History storage ref"}},"id":13818,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4173:4:76","memberName":"push","nodeType":"MemberAccess","referencedDeclaration":1235,"src":"4143:34:76","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_History_$1011_storage_ptr_$_t_function_internal_view$_t_uint256_$_t_uint256_$returns$_t_uint256_$_$_t_uint256_$returns$_t_uint256_$_t_uint256_$bound_to$_t_struct$_History_$1011_storage_ptr_$","typeString":"function (struct CheckpointsUpgradeable.History storage pointer,function (uint256,uint256) view returns (uint256),uint256) returns (uint256,uint256)"}},"id":13822,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4143:75:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"id":13823,"nodeType":"ExpressionStatement","src":"4143:75:76"}]},"documentation":{"id":13774,"nodeType":"StructuredDocumentation","src":"3517:152:76","text":"@notice Internal function to remove existing addresses from the address list.\n @param _exitingAddresses The existing addresses to be removed."},"id":13825,"implemented":true,"kind":"function","modifiers":[],"name":"_removeAddresses","nameLocation":"3683:16:76","nodeType":"FunctionDefinition","parameters":{"id":13778,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13777,"mutability":"mutable","name":"_exitingAddresses","nameLocation":"3719:17:76","nodeType":"VariableDeclaration","scope":13825,"src":"3700:36:76","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":13775,"name":"address","nodeType":"ElementaryTypeName","src":"3700:7:76","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":13776,"nodeType":"ArrayTypeName","src":"3700:9:76","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"3699:38:76"},"returnParameters":{"id":13779,"nodeType":"ParameterList","parameters":[],"src":"3755:0:76"},"scope":13831,"src":"3674:551:76","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"constant":false,"documentation":{"id":13826,"nodeType":"StructuredDocumentation","src":"4231:237:76","text":"@dev This empty reserved space is put in place to allow future versions to add new\n variables without shifting down storage in the inheritance chain.\n https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"},"id":13830,"mutability":"mutable","name":"__gap","nameLocation":"4493:5:76","nodeType":"VariableDeclaration","scope":13831,"src":"4473:25:76","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$48_storage","typeString":"uint256[48]"},"typeName":{"baseType":{"id":13827,"name":"uint256","nodeType":"ElementaryTypeName","src":"4473:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13829,"length":{"hexValue":"3438","id":13828,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4481:2:76","typeDescriptions":{"typeIdentifier":"t_rational_48_by_1","typeString":"int_const 48"},"value":"48"},"nodeType":"ArrayTypeName","src":"4473:11:76","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$48_storage_ptr","typeString":"uint256[48]"}},"visibility":"private"}],"scope":13832,"src":"555:3946:76","usedErrors":[13660]}],"src":"47:4455:76"},"id":76},"src/plugin/extensions/membership/IMembership.sol":{"ast":{"absolutePath":"src/plugin/extensions/membership/IMembership.sol","exportedSymbols":{"IMembership":[13860]},"id":13861,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":13833,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:77"},{"abstract":false,"baseContracts":[],"canonicalName":"IMembership","contractDependencies":[],"contractKind":"interface","documentation":{"id":13834,"nodeType":"StructuredDocumentation","src":"72:183:77","text":"@title IMembership\n @author Aragon X - 2022-2023\n @notice An interface to be implemented by DAO plugins that define membership.\n @custom:security-contact sirt@aragon.org"},"fullyImplemented":false,"id":13860,"linearizedBaseContracts":[13860],"name":"IMembership","nameLocation":"265:11:77","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":13835,"nodeType":"StructuredDocumentation","src":"283:121:77","text":"@notice Emitted when members are added to the DAO plugin.\n @param members The list of new members being added."},"eventSelector":"11ba20e083ffba533caf1d501ce171aa2acdc05a5601e4e473e449460b0718d8","id":13840,"name":"MembersAdded","nameLocation":"415:12:77","nodeType":"EventDefinition","parameters":{"id":13839,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13838,"indexed":false,"mutability":"mutable","name":"members","nameLocation":"438:7:77","nodeType":"VariableDeclaration","scope":13840,"src":"428:17:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":13836,"name":"address","nodeType":"ElementaryTypeName","src":"428:7:77","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":13837,"nodeType":"ArrayTypeName","src":"428:9:77","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"427:19:77"},"src":"409:38:77"},{"anonymous":false,"documentation":{"id":13841,"nodeType":"StructuredDocumentation","src":"453:132:77","text":"@notice Emitted when members are removed from the DAO plugin.\n @param members The list of existing members being removed."},"eventSelector":"0ba413f7646035cae0a4ee999d676078fc8a763d1a36a8ef25e4c10f67d8615d","id":13846,"name":"MembersRemoved","nameLocation":"596:14:77","nodeType":"EventDefinition","parameters":{"id":13845,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13844,"indexed":false,"mutability":"mutable","name":"members","nameLocation":"621:7:77","nodeType":"VariableDeclaration","scope":13846,"src":"611:17:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":13842,"name":"address","nodeType":"ElementaryTypeName","src":"611:7:77","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":13843,"nodeType":"ArrayTypeName","src":"611:9:77","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"610:19:77"},"src":"590:40:77"},{"anonymous":false,"documentation":{"id":13847,"nodeType":"StructuredDocumentation","src":"636:145:77","text":"@notice Emitted to announce the membership being defined by a contract.\n @param definingContract The contract defining the membership."},"eventSelector":"3f1ec22954d444cb99f80a1989ac8f631616b8a575a89379e514c0f7f748c933","id":13851,"name":"MembershipContractAnnounced","nameLocation":"792:27:77","nodeType":"EventDefinition","parameters":{"id":13850,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13849,"indexed":true,"mutability":"mutable","name":"definingContract","nameLocation":"836:16:77","nodeType":"VariableDeclaration","scope":13851,"src":"820:32:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13848,"name":"address","nodeType":"ElementaryTypeName","src":"820:7:77","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"819:34:77"},"src":"786:68:77"},{"documentation":{"id":13852,"nodeType":"StructuredDocumentation","src":"860:288:77","text":"@notice Checks if an account is a member of the DAO.\n @param _account The address of the account to be checked.\n @return Whether the account is a member or not.\n @dev This function must be implemented in the plugin contract that introduces the members to the DAO."},"functionSelector":"a230c524","id":13859,"implemented":false,"kind":"function","modifiers":[],"name":"isMember","nameLocation":"1162:8:77","nodeType":"FunctionDefinition","parameters":{"id":13855,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13854,"mutability":"mutable","name":"_account","nameLocation":"1179:8:77","nodeType":"VariableDeclaration","scope":13859,"src":"1171:16:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13853,"name":"address","nodeType":"ElementaryTypeName","src":"1171:7:77","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1170:18:77"},"returnParameters":{"id":13858,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13857,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13859,"src":"1212:4:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":13856,"name":"bool","nodeType":"ElementaryTypeName","src":"1212:4:77","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1211:6:77"},"scope":13860,"src":"1153:65:77","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":13861,"src":"255:965:77","usedErrors":[]}],"src":"47:1174:77"},"id":77},"src/plugin/extensions/proposal/IProposal.sol":{"ast":{"absolutePath":"src/plugin/extensions/proposal/IProposal.sol","exportedSymbols":{"IDAO":[10865],"IProposal":[13896]},"id":13897,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":13862,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:78"},{"absolutePath":"src/dao/IDAO.sol","file":"../../../dao/IDAO.sol","id":13864,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13897,"sourceUnit":10866,"src":"72:43:78","symbolAliases":[{"foreign":{"id":13863,"name":"IDAO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10865,"src":"80:4:78","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"IProposal","contractDependencies":[],"contractKind":"interface","documentation":{"id":13865,"nodeType":"StructuredDocumentation","src":"117:192:78","text":"@title IProposal\n @author Aragon X - 2022-2023\n @notice An interface to be implemented by DAO plugins that create and execute proposals.\n @custom:security-contact sirt@aragon.org"},"fullyImplemented":false,"id":13896,"linearizedBaseContracts":[13896],"name":"IProposal","nameLocation":"319:9:78","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":13866,"nodeType":"StructuredDocumentation","src":"335:680:78","text":"@notice Emitted when a proposal is created.\n @param proposalId The ID of the proposal.\n @param creator The creator of the proposal.\n @param startDate The start date of the proposal in seconds.\n @param endDate The end date of the proposal in seconds.\n @param metadata The metadata of the proposal.\n @param actions The actions that will be executed if the proposal passes.\n @param allowFailureMap A bitmap allowing the proposal to succeed, even if individual actions might revert. If the bit at index `i` is 1, the proposal succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert."},"eventSelector":"a6c1f8f4276dc3f243459e13b557c84e8f4e90b2e09070bad5f6909cee687c92","id":13884,"name":"ProposalCreated","nameLocation":"1026:15:78","nodeType":"EventDefinition","parameters":{"id":13883,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13868,"indexed":true,"mutability":"mutable","name":"proposalId","nameLocation":"1067:10:78","nodeType":"VariableDeclaration","scope":13884,"src":"1051:26:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13867,"name":"uint256","nodeType":"ElementaryTypeName","src":"1051:7:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13870,"indexed":true,"mutability":"mutable","name":"creator","nameLocation":"1103:7:78","nodeType":"VariableDeclaration","scope":13884,"src":"1087:23:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13869,"name":"address","nodeType":"ElementaryTypeName","src":"1087:7:78","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13872,"indexed":false,"mutability":"mutable","name":"startDate","nameLocation":"1127:9:78","nodeType":"VariableDeclaration","scope":13884,"src":"1120:16:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":13871,"name":"uint64","nodeType":"ElementaryTypeName","src":"1120:6:78","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":13874,"indexed":false,"mutability":"mutable","name":"endDate","nameLocation":"1153:7:78","nodeType":"VariableDeclaration","scope":13884,"src":"1146:14:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":13873,"name":"uint64","nodeType":"ElementaryTypeName","src":"1146:6:78","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":13876,"indexed":false,"mutability":"mutable","name":"metadata","nameLocation":"1176:8:78","nodeType":"VariableDeclaration","scope":13884,"src":"1170:14:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":13875,"name":"bytes","nodeType":"ElementaryTypeName","src":"1170:5:78","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":13880,"indexed":false,"mutability":"mutable","name":"actions","nameLocation":"1208:7:78","nodeType":"VariableDeclaration","scope":13884,"src":"1194:21:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Action_$10724_memory_ptr_$dyn_memory_ptr","typeString":"struct IDAO.Action[]"},"typeName":{"baseType":{"id":13878,"nodeType":"UserDefinedTypeName","pathNode":{"id":13877,"name":"IDAO.Action","nameLocations":["1194:4:78","1199:6:78"],"nodeType":"IdentifierPath","referencedDeclaration":10724,"src":"1194:11:78"},"referencedDeclaration":10724,"src":"1194:11:78","typeDescriptions":{"typeIdentifier":"t_struct$_Action_$10724_storage_ptr","typeString":"struct IDAO.Action"}},"id":13879,"nodeType":"ArrayTypeName","src":"1194:13:78","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Action_$10724_storage_$dyn_storage_ptr","typeString":"struct IDAO.Action[]"}},"visibility":"internal"},{"constant":false,"id":13882,"indexed":false,"mutability":"mutable","name":"allowFailureMap","nameLocation":"1233:15:78","nodeType":"VariableDeclaration","scope":13884,"src":"1225:23:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13881,"name":"uint256","nodeType":"ElementaryTypeName","src":"1225:7:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1041:213:78"},"src":"1020:235:78"},{"anonymous":false,"documentation":{"id":13885,"nodeType":"StructuredDocumentation","src":"1261:98:78","text":"@notice Emitted when a proposal is executed.\n @param proposalId The ID of the proposal."},"eventSelector":"712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f","id":13889,"name":"ProposalExecuted","nameLocation":"1370:16:78","nodeType":"EventDefinition","parameters":{"id":13888,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13887,"indexed":true,"mutability":"mutable","name":"proposalId","nameLocation":"1403:10:78","nodeType":"VariableDeclaration","scope":13889,"src":"1387:26:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13886,"name":"uint256","nodeType":"ElementaryTypeName","src":"1387:7:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1386:28:78"},"src":"1364:51:78"},{"documentation":{"id":13890,"nodeType":"StructuredDocumentation","src":"1421:108:78","text":"@notice Returns the proposal count determining the next proposal ID.\n @return The proposal count."},"functionSelector":"da35c664","id":13895,"implemented":false,"kind":"function","modifiers":[],"name":"proposalCount","nameLocation":"1543:13:78","nodeType":"FunctionDefinition","parameters":{"id":13891,"nodeType":"ParameterList","parameters":[],"src":"1556:2:78"},"returnParameters":{"id":13894,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13893,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13895,"src":"1582:7:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13892,"name":"uint256","nodeType":"ElementaryTypeName","src":"1582:7:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1581:9:78"},"scope":13896,"src":"1534:57:78","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":13897,"src":"309:1284:78","usedErrors":[]}],"src":"47:1547:78"},"id":78},"src/plugin/extensions/proposal/Proposal.sol":{"ast":{"absolutePath":"src/plugin/extensions/proposal/Proposal.sol","exportedSymbols":{"Counters":[9368],"ERC165":[9731],"IDAO":[10865],"IProposal":[13896],"Proposal":[14046]},"id":14047,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":13898,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:79"},{"absolutePath":"@openzeppelin/contracts/utils/Counters.sol","file":"@openzeppelin/contracts/utils/Counters.sol","id":13900,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":14047,"sourceUnit":9369,"src":"72:68:79","symbolAliases":[{"foreign":{"id":13899,"name":"Counters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9368,"src":"80:8:79","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/introspection/ERC165.sol","file":"@openzeppelin/contracts/utils/introspection/ERC165.sol","id":13902,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":14047,"sourceUnit":9732,"src":"141:78:79","symbolAliases":[{"foreign":{"id":13901,"name":"ERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9731,"src":"149:6:79","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/dao/IDAO.sol","file":"../../../dao/IDAO.sol","id":13904,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":14047,"sourceUnit":10866,"src":"221:43:79","symbolAliases":[{"foreign":{"id":13903,"name":"IDAO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10865,"src":"229:4:79","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/plugin/extensions/proposal/IProposal.sol","file":"./IProposal.sol","id":13906,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":14047,"sourceUnit":13897,"src":"265:42:79","symbolAliases":[{"foreign":{"id":13905,"name":"IProposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13896,"src":"273:9:79","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":13908,"name":"IProposal","nameLocations":["605:9:79"],"nodeType":"IdentifierPath","referencedDeclaration":13896,"src":"605:9:79"},"id":13909,"nodeType":"InheritanceSpecifier","src":"605:9:79"},{"baseName":{"id":13910,"name":"ERC165","nameLocations":["616:6:79"],"nodeType":"IdentifierPath","referencedDeclaration":9731,"src":"616:6:79"},"id":13911,"nodeType":"InheritanceSpecifier","src":"616:6:79"}],"canonicalName":"Proposal","contractDependencies":[],"contractKind":"contract","documentation":{"id":13907,"nodeType":"StructuredDocumentation","src":"309:266:79","text":"@title Proposal\n @author Aragon X - 2022-2023\n @notice An abstract contract containing the traits and internal functionality to create and execute proposals that can be inherited by non-upgradeable DAO plugins.\n @custom:security-contact sirt@aragon.org"},"fullyImplemented":true,"id":14046,"linearizedBaseContracts":[14046,9731,9743,13896],"name":"Proposal","nameLocation":"593:8:79","nodeType":"ContractDefinition","nodes":[{"global":false,"id":13915,"libraryName":{"id":13912,"name":"Counters","nameLocations":["635:8:79"],"nodeType":"IdentifierPath","referencedDeclaration":9368,"src":"635:8:79"},"nodeType":"UsingForDirective","src":"629:36:79","typeName":{"id":13914,"nodeType":"UserDefinedTypeName","pathNode":{"id":13913,"name":"Counters.Counter","nameLocations":["648:8:79","657:7:79"],"nodeType":"IdentifierPath","referencedDeclaration":9300,"src":"648:16:79"},"referencedDeclaration":9300,"src":"648:16:79","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$9300_storage_ptr","typeString":"struct Counters.Counter"}}},{"constant":false,"documentation":{"id":13916,"nodeType":"StructuredDocumentation","src":"671:60:79","text":"@notice The incremental ID for proposals and executions."},"id":13919,"mutability":"mutable","name":"proposalCounter","nameLocation":"761:15:79","nodeType":"VariableDeclaration","scope":14046,"src":"736:40:79","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$9300_storage","typeString":"struct Counters.Counter"},"typeName":{"id":13918,"nodeType":"UserDefinedTypeName","pathNode":{"id":13917,"name":"Counters.Counter","nameLocations":["736:8:79","745:7:79"],"nodeType":"IdentifierPath","referencedDeclaration":9300,"src":"736:16:79"},"referencedDeclaration":9300,"src":"736:16:79","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$9300_storage_ptr","typeString":"struct Counters.Counter"}},"visibility":"private"},{"baseFunctions":[13895],"body":{"id":13930,"nodeType":"Block","src":"877:49:79","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":13926,"name":"proposalCounter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13919,"src":"894:15:79","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$9300_storage","typeString":"struct Counters.Counter storage ref"}},"id":13927,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"910:7:79","memberName":"current","nodeType":"MemberAccess","referencedDeclaration":9312,"src":"894:23:79","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Counter_$9300_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Counter_$9300_storage_ptr_$","typeString":"function (struct Counters.Counter storage pointer) view returns (uint256)"}},"id":13928,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"894:25:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":13925,"id":13929,"nodeType":"Return","src":"887:32:79"}]},"documentation":{"id":13920,"nodeType":"StructuredDocumentation","src":"783:25:79","text":"@inheritdoc IProposal"},"functionSelector":"da35c664","id":13931,"implemented":true,"kind":"function","modifiers":[],"name":"proposalCount","nameLocation":"822:13:79","nodeType":"FunctionDefinition","overrides":{"id":13922,"nodeType":"OverrideSpecifier","overrides":[],"src":"850:8:79"},"parameters":{"id":13921,"nodeType":"ParameterList","parameters":[],"src":"835:2:79"},"returnParameters":{"id":13925,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13924,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13931,"src":"868:7:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13923,"name":"uint256","nodeType":"ElementaryTypeName","src":"868:7:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"867:9:79"},"scope":14046,"src":"813:113:79","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[9730],"body":{"id":13952,"nodeType":"Block","src":"1226:108:79","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":13950,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":13945,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13940,"name":"_interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13934,"src":"1243:12:79","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":13942,"name":"IProposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13896,"src":"1264:9:79","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IProposal_$13896_$","typeString":"type(contract IProposal)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IProposal_$13896_$","typeString":"type(contract IProposal)"}],"id":13941,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"1259:4:79","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":13943,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1259:15:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IProposal_$13896","typeString":"type(contract IProposal)"}},"id":13944,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1275:11:79","memberName":"interfaceId","nodeType":"MemberAccess","src":"1259:27:79","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"1243:43:79","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":13948,"name":"_interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13934,"src":"1314:12:79","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":13946,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967271,"src":"1290:5:79","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_Proposal_$14046_$","typeString":"type(contract super Proposal)"}},"id":13947,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1296:17:79","memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":9730,"src":"1290:23:79","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bool_$","typeString":"function (bytes4) view returns (bool)"}},"id":13949,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1290:37:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1243:84:79","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":13939,"id":13951,"nodeType":"Return","src":"1236:91:79"}]},"documentation":{"id":13932,"nodeType":"StructuredDocumentation","src":"932:197:79","text":"@notice Checks if this or the parent contract supports an interface by its ID.\n @param _interfaceId The ID of the interface.\n @return Returns `true` if the interface is supported."},"functionSelector":"01ffc9a7","id":13953,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"1143:17:79","nodeType":"FunctionDefinition","overrides":{"id":13936,"nodeType":"OverrideSpecifier","overrides":[],"src":"1202:8:79"},"parameters":{"id":13935,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13934,"mutability":"mutable","name":"_interfaceId","nameLocation":"1168:12:79","nodeType":"VariableDeclaration","scope":13953,"src":"1161:19:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":13933,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1161:6:79","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"1160:21:79"},"returnParameters":{"id":13939,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13938,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13953,"src":"1220:4:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":13937,"name":"bool","nodeType":"ElementaryTypeName","src":"1220:4:79","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1219:6:79"},"scope":14046,"src":"1134:200:79","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":13969,"nodeType":"Block","src":"1490:82:79","statements":[{"expression":{"id":13962,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13959,"name":"proposalId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13957,"src":"1500:10:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"id":13960,"name":"proposalCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13931,"src":"1513:13:79","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":13961,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1513:15:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1500:28:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13963,"nodeType":"ExpressionStatement","src":"1500:28:79"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":13964,"name":"proposalCounter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13919,"src":"1538:15:79","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$9300_storage","typeString":"struct Counters.Counter storage ref"}},"id":13966,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1554:9:79","memberName":"increment","nodeType":"MemberAccess","referencedDeclaration":9326,"src":"1538:25:79","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Counter_$9300_storage_ptr_$returns$__$bound_to$_t_struct$_Counter_$9300_storage_ptr_$","typeString":"function (struct Counters.Counter storage pointer)"}},"id":13967,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1538:27:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13968,"nodeType":"ExpressionStatement","src":"1538:27:79"}]},"documentation":{"id":13954,"nodeType":"StructuredDocumentation","src":"1340:78:79","text":"@notice Creates a proposal ID.\n @return proposalId The proposal ID."},"id":13970,"implemented":true,"kind":"function","modifiers":[],"name":"_createProposalId","nameLocation":"1432:17:79","nodeType":"FunctionDefinition","parameters":{"id":13955,"nodeType":"ParameterList","parameters":[],"src":"1449:2:79"},"returnParameters":{"id":13958,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13957,"mutability":"mutable","name":"proposalId","nameLocation":"1478:10:79","nodeType":"VariableDeclaration","scope":13970,"src":"1470:18:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13956,"name":"uint256","nodeType":"ElementaryTypeName","src":"1470:7:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1469:20:79"},"scope":14046,"src":"1423:149:79","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":14005,"nodeType":"Block","src":"2480:336:79","statements":[{"expression":{"id":13993,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13990,"name":"proposalId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13988,"src":"2490:10:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"id":13991,"name":"_createProposalId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13970,"src":"2503:17:79","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$_t_uint256_$","typeString":"function () returns (uint256)"}},"id":13992,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2503:19:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2490:32:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13994,"nodeType":"ExpressionStatement","src":"2490:32:79"},{"eventCall":{"arguments":[{"id":13996,"name":"proposalId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13988,"src":"2580:10:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":13997,"name":"_creator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13973,"src":"2613:8:79","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13998,"name":"_metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13975,"src":"2645:9:79","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":13999,"name":"_startDate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13977,"src":"2679:10:79","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"id":14000,"name":"_endDate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13979,"src":"2712:8:79","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"id":14001,"name":"_actions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13983,"src":"2743:8:79","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Action_$10724_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IDAO.Action calldata[] calldata"}},{"id":14002,"name":"_allowFailureMap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13985,"src":"2782:16:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint64","typeString":"uint64"},{"typeIdentifier":"t_uint64","typeString":"uint64"},{"typeIdentifier":"t_array$_t_struct$_Action_$10724_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IDAO.Action calldata[] calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13995,"name":"ProposalCreated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13884,"src":"2538:15:79","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_address_$_t_uint64_$_t_uint64_$_t_bytes_memory_ptr_$_t_array$_t_struct$_Action_$10724_memory_ptr_$dyn_memory_ptr_$_t_uint256_$returns$__$","typeString":"function (uint256,address,uint64,uint64,bytes memory,struct IDAO.Action memory[] memory,uint256)"}},"id":14003,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":["2568:10:79","2604:7:79","2635:8:79","2668:9:79","2703:7:79","2734:7:79","2765:15:79"],"names":["proposalId","creator","metadata","startDate","endDate","actions","allowFailureMap"],"nodeType":"FunctionCall","src":"2538:271:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14004,"nodeType":"EmitStatement","src":"2533:276:79"}]},"documentation":{"id":13971,"nodeType":"StructuredDocumentation","src":"1578:633:79","text":"@notice Internal function to create a proposal.\n @param _metadata The proposal metadata.\n @param _startDate The start date of the proposal in seconds.\n @param _endDate The end date of the proposal in seconds.\n @param _allowFailureMap A bitmap allowing the proposal to succeed, even if individual actions might revert. If the bit at index `i` is 1, the proposal succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\n @param _actions The actions that will be executed after the proposal passes.\n @return proposalId The ID of the proposal."},"id":14006,"implemented":true,"kind":"function","modifiers":[],"name":"_createProposal","nameLocation":"2225:15:79","nodeType":"FunctionDefinition","parameters":{"id":13986,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13973,"mutability":"mutable","name":"_creator","nameLocation":"2258:8:79","nodeType":"VariableDeclaration","scope":14006,"src":"2250:16:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13972,"name":"address","nodeType":"ElementaryTypeName","src":"2250:7:79","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13975,"mutability":"mutable","name":"_metadata","nameLocation":"2291:9:79","nodeType":"VariableDeclaration","scope":14006,"src":"2276:24:79","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":13974,"name":"bytes","nodeType":"ElementaryTypeName","src":"2276:5:79","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":13977,"mutability":"mutable","name":"_startDate","nameLocation":"2317:10:79","nodeType":"VariableDeclaration","scope":14006,"src":"2310:17:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":13976,"name":"uint64","nodeType":"ElementaryTypeName","src":"2310:6:79","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":13979,"mutability":"mutable","name":"_endDate","nameLocation":"2344:8:79","nodeType":"VariableDeclaration","scope":14006,"src":"2337:15:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":13978,"name":"uint64","nodeType":"ElementaryTypeName","src":"2337:6:79","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":13983,"mutability":"mutable","name":"_actions","nameLocation":"2385:8:79","nodeType":"VariableDeclaration","scope":14006,"src":"2362:31:79","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Action_$10724_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IDAO.Action[]"},"typeName":{"baseType":{"id":13981,"nodeType":"UserDefinedTypeName","pathNode":{"id":13980,"name":"IDAO.Action","nameLocations":["2362:4:79","2367:6:79"],"nodeType":"IdentifierPath","referencedDeclaration":10724,"src":"2362:11:79"},"referencedDeclaration":10724,"src":"2362:11:79","typeDescriptions":{"typeIdentifier":"t_struct$_Action_$10724_storage_ptr","typeString":"struct IDAO.Action"}},"id":13982,"nodeType":"ArrayTypeName","src":"2362:13:79","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Action_$10724_storage_$dyn_storage_ptr","typeString":"struct IDAO.Action[]"}},"visibility":"internal"},{"constant":false,"id":13985,"mutability":"mutable","name":"_allowFailureMap","nameLocation":"2411:16:79","nodeType":"VariableDeclaration","scope":14006,"src":"2403:24:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13984,"name":"uint256","nodeType":"ElementaryTypeName","src":"2403:7:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2240:193:79"},"returnParameters":{"id":13989,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13988,"mutability":"mutable","name":"proposalId","nameLocation":"2468:10:79","nodeType":"VariableDeclaration","scope":14006,"src":"2460:18:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13987,"name":"uint256","nodeType":"ElementaryTypeName","src":"2460:7:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2459:20:79"},"scope":14046,"src":"2216:600:79","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":14044,"nodeType":"Block","src":"3656:165:79","statements":[{"expression":{"id":14038,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":14026,"name":"execResults","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14022,"src":"3667:11:79","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}},{"id":14027,"name":"failureMap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14024,"src":"3680:10:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":14028,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"3666:25:79","typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$_t_uint256_$","typeString":"tuple(bytes memory[] memory,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":14033,"name":"_proposalId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14012,"src":"3715:11:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14032,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3707:7:79","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":14031,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3707:7:79","typeDescriptions":{}}},"id":14034,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3707:20:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":14035,"name":"_actions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14016,"src":"3729:8:79","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Action_$10724_memory_ptr_$dyn_memory_ptr","typeString":"struct IDAO.Action memory[] memory"}},{"id":14036,"name":"_allowFailureMap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14018,"src":"3739:16:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_array$_t_struct$_Action_$10724_memory_ptr_$dyn_memory_ptr","typeString":"struct IDAO.Action memory[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":14029,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14010,"src":"3694:4:79","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}},"id":14030,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3699:7:79","memberName":"execute","nodeType":"MemberAccess","referencedDeclaration":10766,"src":"3694:12:79","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes32_$_t_array$_t_struct$_Action_$10724_memory_ptr_$dyn_memory_ptr_$_t_uint256_$returns$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$_t_uint256_$","typeString":"function (bytes32,struct IDAO.Action memory[] memory,uint256) external returns (bytes memory[] memory,uint256)"}},"id":14037,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3694:62:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$_t_uint256_$","typeString":"tuple(bytes memory[] memory,uint256)"}},"src":"3666:90:79","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14039,"nodeType":"ExpressionStatement","src":"3666:90:79"},{"eventCall":{"arguments":[{"id":14041,"name":"_proposalId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14012,"src":"3801:11:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14040,"name":"ProposalExecuted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13889,"src":"3771:16:79","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":14042,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":["3789:10:79"],"names":["proposalId"],"nodeType":"FunctionCall","src":"3771:43:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14043,"nodeType":"EmitStatement","src":"3766:48:79"}]},"documentation":{"id":14007,"nodeType":"StructuredDocumentation","src":"2822:602:79","text":"@notice Internal function to execute a proposal.\n @param _proposalId The ID of the proposal to be executed.\n @param _actions The array of actions to be executed.\n @param _allowFailureMap A bitmap allowing the proposal to succeed, even if individual actions might revert. If the bit at index `i` is 1, the proposal succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\n @return execResults The array with the results of the executed actions.\n @return failureMap The failure map encoding which actions have failed."},"id":14045,"implemented":true,"kind":"function","modifiers":[],"name":"_executeProposal","nameLocation":"3438:16:79","nodeType":"FunctionDefinition","parameters":{"id":14019,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14010,"mutability":"mutable","name":"_dao","nameLocation":"3469:4:79","nodeType":"VariableDeclaration","scope":14045,"src":"3464:9:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"},"typeName":{"id":14009,"nodeType":"UserDefinedTypeName","pathNode":{"id":14008,"name":"IDAO","nameLocations":["3464:4:79"],"nodeType":"IdentifierPath","referencedDeclaration":10865,"src":"3464:4:79"},"referencedDeclaration":10865,"src":"3464:4:79","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}},"visibility":"internal"},{"constant":false,"id":14012,"mutability":"mutable","name":"_proposalId","nameLocation":"3491:11:79","nodeType":"VariableDeclaration","scope":14045,"src":"3483:19:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14011,"name":"uint256","nodeType":"ElementaryTypeName","src":"3483:7:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14016,"mutability":"mutable","name":"_actions","nameLocation":"3533:8:79","nodeType":"VariableDeclaration","scope":14045,"src":"3512:29:79","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Action_$10724_memory_ptr_$dyn_memory_ptr","typeString":"struct IDAO.Action[]"},"typeName":{"baseType":{"id":14014,"nodeType":"UserDefinedTypeName","pathNode":{"id":14013,"name":"IDAO.Action","nameLocations":["3512:4:79","3517:6:79"],"nodeType":"IdentifierPath","referencedDeclaration":10724,"src":"3512:11:79"},"referencedDeclaration":10724,"src":"3512:11:79","typeDescriptions":{"typeIdentifier":"t_struct$_Action_$10724_storage_ptr","typeString":"struct IDAO.Action"}},"id":14015,"nodeType":"ArrayTypeName","src":"3512:13:79","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Action_$10724_storage_$dyn_storage_ptr","typeString":"struct IDAO.Action[]"}},"visibility":"internal"},{"constant":false,"id":14018,"mutability":"mutable","name":"_allowFailureMap","nameLocation":"3559:16:79","nodeType":"VariableDeclaration","scope":14045,"src":"3551:24:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14017,"name":"uint256","nodeType":"ElementaryTypeName","src":"3551:7:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3454:127:79"},"returnParameters":{"id":14025,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14022,"mutability":"mutable","name":"execResults","nameLocation":"3623:11:79","nodeType":"VariableDeclaration","scope":14045,"src":"3608:26:79","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":14020,"name":"bytes","nodeType":"ElementaryTypeName","src":"3608:5:79","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":14021,"nodeType":"ArrayTypeName","src":"3608:7:79","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"},{"constant":false,"id":14024,"mutability":"mutable","name":"failureMap","nameLocation":"3644:10:79","nodeType":"VariableDeclaration","scope":14045,"src":"3636:18:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14023,"name":"uint256","nodeType":"ElementaryTypeName","src":"3636:7:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3607:48:79"},"scope":14046,"src":"3429:392:79","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":14047,"src":"575:3248:79","usedErrors":[]}],"src":"47:3777:79"},"id":79},"src/plugin/extensions/proposal/ProposalUpgradeable.sol":{"ast":{"absolutePath":"src/plugin/extensions/proposal/ProposalUpgradeable.sol","exportedSymbols":{"CountersUpgradeable":[2667],"ERC165Upgradeable":[2822],"IDAO":[10865],"IProposal":[13896],"ProposalUpgradeable":[14201]},"id":14202,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":14048,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:80"},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol","id":14050,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":14202,"sourceUnit":2668,"src":"72:102:80","symbolAliases":[{"foreign":{"id":14049,"name":"CountersUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2667,"src":"80:19:80","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol","file":"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol","id":14052,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":14202,"sourceUnit":2823,"src":"175:112:80","symbolAliases":[{"foreign":{"id":14051,"name":"ERC165Upgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2822,"src":"183:17:80","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/dao/IDAO.sol","file":"../../../dao/IDAO.sol","id":14054,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":14202,"sourceUnit":10866,"src":"289:43:80","symbolAliases":[{"foreign":{"id":14053,"name":"IDAO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10865,"src":"297:4:80","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/plugin/extensions/proposal/IProposal.sol","file":"./IProposal.sol","id":14056,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":14202,"sourceUnit":13897,"src":"333:42:80","symbolAliases":[{"foreign":{"id":14055,"name":"IProposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13896,"src":"341:9:80","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":14058,"name":"IProposal","nameLocations":["691:9:80"],"nodeType":"IdentifierPath","referencedDeclaration":13896,"src":"691:9:80"},"id":14059,"nodeType":"InheritanceSpecifier","src":"691:9:80"},{"baseName":{"id":14060,"name":"ERC165Upgradeable","nameLocations":["702:17:80"],"nodeType":"IdentifierPath","referencedDeclaration":2822,"src":"702:17:80"},"id":14061,"nodeType":"InheritanceSpecifier","src":"702:17:80"}],"canonicalName":"ProposalUpgradeable","contractDependencies":[],"contractKind":"contract","documentation":{"id":14057,"nodeType":"StructuredDocumentation","src":"377:273:80","text":"@title ProposalUpgradeable\n @author Aragon X - 2022-2023\n @notice An abstract contract containing the traits and internal functionality to create and execute proposals that can be inherited by upgradeable DAO plugins.\n @custom:security-contact sirt@aragon.org"},"fullyImplemented":true,"id":14201,"linearizedBaseContracts":[14201,2822,2834,534,13896],"name":"ProposalUpgradeable","nameLocation":"668:19:80","nodeType":"ContractDefinition","nodes":[{"global":false,"id":14065,"libraryName":{"id":14062,"name":"CountersUpgradeable","nameLocations":["732:19:80"],"nodeType":"IdentifierPath","referencedDeclaration":2667,"src":"732:19:80"},"nodeType":"UsingForDirective","src":"726:58:80","typeName":{"id":14064,"nodeType":"UserDefinedTypeName","pathNode":{"id":14063,"name":"CountersUpgradeable.Counter","nameLocations":["756:19:80","776:7:80"],"nodeType":"IdentifierPath","referencedDeclaration":2599,"src":"756:27:80"},"referencedDeclaration":2599,"src":"756:27:80","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$2599_storage_ptr","typeString":"struct CountersUpgradeable.Counter"}}},{"constant":false,"documentation":{"id":14066,"nodeType":"StructuredDocumentation","src":"790:60:80","text":"@notice The incremental ID for proposals and executions."},"id":14069,"mutability":"mutable","name":"proposalCounter","nameLocation":"891:15:80","nodeType":"VariableDeclaration","scope":14201,"src":"855:51:80","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$2599_storage","typeString":"struct CountersUpgradeable.Counter"},"typeName":{"id":14068,"nodeType":"UserDefinedTypeName","pathNode":{"id":14067,"name":"CountersUpgradeable.Counter","nameLocations":["855:19:80","875:7:80"],"nodeType":"IdentifierPath","referencedDeclaration":2599,"src":"855:27:80"},"referencedDeclaration":2599,"src":"855:27:80","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$2599_storage_ptr","typeString":"struct CountersUpgradeable.Counter"}},"visibility":"private"},{"baseFunctions":[13895],"body":{"id":14080,"nodeType":"Block","src":"1007:49:80","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":14076,"name":"proposalCounter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14069,"src":"1024:15:80","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$2599_storage","typeString":"struct CountersUpgradeable.Counter storage ref"}},"id":14077,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1040:7:80","memberName":"current","nodeType":"MemberAccess","referencedDeclaration":2611,"src":"1024:23:80","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Counter_$2599_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Counter_$2599_storage_ptr_$","typeString":"function (struct CountersUpgradeable.Counter storage pointer) view returns (uint256)"}},"id":14078,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1024:25:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":14075,"id":14079,"nodeType":"Return","src":"1017:32:80"}]},"documentation":{"id":14070,"nodeType":"StructuredDocumentation","src":"913:25:80","text":"@inheritdoc IProposal"},"functionSelector":"da35c664","id":14081,"implemented":true,"kind":"function","modifiers":[],"name":"proposalCount","nameLocation":"952:13:80","nodeType":"FunctionDefinition","overrides":{"id":14072,"nodeType":"OverrideSpecifier","overrides":[],"src":"980:8:80"},"parameters":{"id":14071,"nodeType":"ParameterList","parameters":[],"src":"965:2:80"},"returnParameters":{"id":14075,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14074,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14081,"src":"998:7:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14073,"name":"uint256","nodeType":"ElementaryTypeName","src":"998:7:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"997:9:80"},"scope":14201,"src":"943:113:80","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[2816],"body":{"id":14102,"nodeType":"Block","src":"1356:108:80","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":14100,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":14095,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14090,"name":"_interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14084,"src":"1373:12:80","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":14092,"name":"IProposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13896,"src":"1394:9:80","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IProposal_$13896_$","typeString":"type(contract IProposal)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IProposal_$13896_$","typeString":"type(contract IProposal)"}],"id":14091,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"1389:4:80","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":14093,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1389:15:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IProposal_$13896","typeString":"type(contract IProposal)"}},"id":14094,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1405:11:80","memberName":"interfaceId","nodeType":"MemberAccess","src":"1389:27:80","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"1373:43:80","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":14098,"name":"_interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14084,"src":"1444:12:80","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":14096,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967271,"src":"1420:5:80","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_ProposalUpgradeable_$14201_$","typeString":"type(contract super ProposalUpgradeable)"}},"id":14097,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1426:17:80","memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":2816,"src":"1420:23:80","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bool_$","typeString":"function (bytes4) view returns (bool)"}},"id":14099,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1420:37:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1373:84:80","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":14089,"id":14101,"nodeType":"Return","src":"1366:91:80"}]},"documentation":{"id":14082,"nodeType":"StructuredDocumentation","src":"1062:197:80","text":"@notice Checks if this or the parent contract supports an interface by its ID.\n @param _interfaceId The ID of the interface.\n @return Returns `true` if the interface is supported."},"functionSelector":"01ffc9a7","id":14103,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"1273:17:80","nodeType":"FunctionDefinition","overrides":{"id":14086,"nodeType":"OverrideSpecifier","overrides":[],"src":"1332:8:80"},"parameters":{"id":14085,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14084,"mutability":"mutable","name":"_interfaceId","nameLocation":"1298:12:80","nodeType":"VariableDeclaration","scope":14103,"src":"1291:19:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":14083,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1291:6:80","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"1290:21:80"},"returnParameters":{"id":14089,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14088,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14103,"src":"1350:4:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":14087,"name":"bool","nodeType":"ElementaryTypeName","src":"1350:4:80","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1349:6:80"},"scope":14201,"src":"1264:200:80","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":14119,"nodeType":"Block","src":"1620:82:80","statements":[{"expression":{"id":14112,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14109,"name":"proposalId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14107,"src":"1630:10:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"id":14110,"name":"proposalCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14081,"src":"1643:13:80","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":14111,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1643:15:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1630:28:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14113,"nodeType":"ExpressionStatement","src":"1630:28:80"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":14114,"name":"proposalCounter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14069,"src":"1668:15:80","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$2599_storage","typeString":"struct CountersUpgradeable.Counter storage ref"}},"id":14116,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1684:9:80","memberName":"increment","nodeType":"MemberAccess","referencedDeclaration":2625,"src":"1668:25:80","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Counter_$2599_storage_ptr_$returns$__$bound_to$_t_struct$_Counter_$2599_storage_ptr_$","typeString":"function (struct CountersUpgradeable.Counter storage pointer)"}},"id":14117,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1668:27:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14118,"nodeType":"ExpressionStatement","src":"1668:27:80"}]},"documentation":{"id":14104,"nodeType":"StructuredDocumentation","src":"1470:78:80","text":"@notice Creates a proposal ID.\n @return proposalId The proposal ID."},"id":14120,"implemented":true,"kind":"function","modifiers":[],"name":"_createProposalId","nameLocation":"1562:17:80","nodeType":"FunctionDefinition","parameters":{"id":14105,"nodeType":"ParameterList","parameters":[],"src":"1579:2:80"},"returnParameters":{"id":14108,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14107,"mutability":"mutable","name":"proposalId","nameLocation":"1608:10:80","nodeType":"VariableDeclaration","scope":14120,"src":"1600:18:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14106,"name":"uint256","nodeType":"ElementaryTypeName","src":"1600:7:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1599:20:80"},"scope":14201,"src":"1553:149:80","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":14155,"nodeType":"Block","src":"2610:336:80","statements":[{"expression":{"id":14143,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14140,"name":"proposalId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14138,"src":"2620:10:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"id":14141,"name":"_createProposalId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14120,"src":"2633:17:80","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$_t_uint256_$","typeString":"function () returns (uint256)"}},"id":14142,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2633:19:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2620:32:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14144,"nodeType":"ExpressionStatement","src":"2620:32:80"},{"eventCall":{"arguments":[{"id":14146,"name":"proposalId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14138,"src":"2710:10:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":14147,"name":"_creator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14123,"src":"2743:8:80","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":14148,"name":"_metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14125,"src":"2775:9:80","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":14149,"name":"_startDate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14127,"src":"2809:10:80","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"id":14150,"name":"_endDate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14129,"src":"2842:8:80","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"id":14151,"name":"_actions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14133,"src":"2873:8:80","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Action_$10724_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IDAO.Action calldata[] calldata"}},{"id":14152,"name":"_allowFailureMap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14135,"src":"2912:16:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint64","typeString":"uint64"},{"typeIdentifier":"t_uint64","typeString":"uint64"},{"typeIdentifier":"t_array$_t_struct$_Action_$10724_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IDAO.Action calldata[] calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14145,"name":"ProposalCreated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13884,"src":"2668:15:80","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_address_$_t_uint64_$_t_uint64_$_t_bytes_memory_ptr_$_t_array$_t_struct$_Action_$10724_memory_ptr_$dyn_memory_ptr_$_t_uint256_$returns$__$","typeString":"function (uint256,address,uint64,uint64,bytes memory,struct IDAO.Action memory[] memory,uint256)"}},"id":14153,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":["2698:10:80","2734:7:80","2765:8:80","2798:9:80","2833:7:80","2864:7:80","2895:15:80"],"names":["proposalId","creator","metadata","startDate","endDate","actions","allowFailureMap"],"nodeType":"FunctionCall","src":"2668:271:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14154,"nodeType":"EmitStatement","src":"2663:276:80"}]},"documentation":{"id":14121,"nodeType":"StructuredDocumentation","src":"1708:633:80","text":"@notice Internal function to create a proposal.\n @param _metadata The proposal metadata.\n @param _startDate The start date of the proposal in seconds.\n @param _endDate The end date of the proposal in seconds.\n @param _allowFailureMap A bitmap allowing the proposal to succeed, even if individual actions might revert. If the bit at index `i` is 1, the proposal succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\n @param _actions The actions that will be executed after the proposal passes.\n @return proposalId The ID of the proposal."},"id":14156,"implemented":true,"kind":"function","modifiers":[],"name":"_createProposal","nameLocation":"2355:15:80","nodeType":"FunctionDefinition","parameters":{"id":14136,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14123,"mutability":"mutable","name":"_creator","nameLocation":"2388:8:80","nodeType":"VariableDeclaration","scope":14156,"src":"2380:16:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14122,"name":"address","nodeType":"ElementaryTypeName","src":"2380:7:80","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14125,"mutability":"mutable","name":"_metadata","nameLocation":"2421:9:80","nodeType":"VariableDeclaration","scope":14156,"src":"2406:24:80","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":14124,"name":"bytes","nodeType":"ElementaryTypeName","src":"2406:5:80","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":14127,"mutability":"mutable","name":"_startDate","nameLocation":"2447:10:80","nodeType":"VariableDeclaration","scope":14156,"src":"2440:17:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":14126,"name":"uint64","nodeType":"ElementaryTypeName","src":"2440:6:80","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":14129,"mutability":"mutable","name":"_endDate","nameLocation":"2474:8:80","nodeType":"VariableDeclaration","scope":14156,"src":"2467:15:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":14128,"name":"uint64","nodeType":"ElementaryTypeName","src":"2467:6:80","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":14133,"mutability":"mutable","name":"_actions","nameLocation":"2515:8:80","nodeType":"VariableDeclaration","scope":14156,"src":"2492:31:80","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Action_$10724_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IDAO.Action[]"},"typeName":{"baseType":{"id":14131,"nodeType":"UserDefinedTypeName","pathNode":{"id":14130,"name":"IDAO.Action","nameLocations":["2492:4:80","2497:6:80"],"nodeType":"IdentifierPath","referencedDeclaration":10724,"src":"2492:11:80"},"referencedDeclaration":10724,"src":"2492:11:80","typeDescriptions":{"typeIdentifier":"t_struct$_Action_$10724_storage_ptr","typeString":"struct IDAO.Action"}},"id":14132,"nodeType":"ArrayTypeName","src":"2492:13:80","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Action_$10724_storage_$dyn_storage_ptr","typeString":"struct IDAO.Action[]"}},"visibility":"internal"},{"constant":false,"id":14135,"mutability":"mutable","name":"_allowFailureMap","nameLocation":"2541:16:80","nodeType":"VariableDeclaration","scope":14156,"src":"2533:24:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14134,"name":"uint256","nodeType":"ElementaryTypeName","src":"2533:7:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2370:193:80"},"returnParameters":{"id":14139,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14138,"mutability":"mutable","name":"proposalId","nameLocation":"2598:10:80","nodeType":"VariableDeclaration","scope":14156,"src":"2590:18:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14137,"name":"uint256","nodeType":"ElementaryTypeName","src":"2590:7:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2589:20:80"},"scope":14201,"src":"2346:600:80","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":14194,"nodeType":"Block","src":"3786:165:80","statements":[{"expression":{"id":14188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":14176,"name":"execResults","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14172,"src":"3797:11:80","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}},{"id":14177,"name":"failureMap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14174,"src":"3810:10:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":14178,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"3796:25:80","typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$_t_uint256_$","typeString":"tuple(bytes memory[] memory,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":14183,"name":"_proposalId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14162,"src":"3845:11:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14182,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3837:7:80","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":14181,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3837:7:80","typeDescriptions":{}}},"id":14184,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3837:20:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":14185,"name":"_actions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14166,"src":"3859:8:80","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Action_$10724_memory_ptr_$dyn_memory_ptr","typeString":"struct IDAO.Action memory[] memory"}},{"id":14186,"name":"_allowFailureMap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14168,"src":"3869:16:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_array$_t_struct$_Action_$10724_memory_ptr_$dyn_memory_ptr","typeString":"struct IDAO.Action memory[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":14179,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14160,"src":"3824:4:80","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}},"id":14180,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3829:7:80","memberName":"execute","nodeType":"MemberAccess","referencedDeclaration":10766,"src":"3824:12:80","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes32_$_t_array$_t_struct$_Action_$10724_memory_ptr_$dyn_memory_ptr_$_t_uint256_$returns$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$_t_uint256_$","typeString":"function (bytes32,struct IDAO.Action memory[] memory,uint256) external returns (bytes memory[] memory,uint256)"}},"id":14187,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3824:62:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$_t_uint256_$","typeString":"tuple(bytes memory[] memory,uint256)"}},"src":"3796:90:80","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14189,"nodeType":"ExpressionStatement","src":"3796:90:80"},{"eventCall":{"arguments":[{"id":14191,"name":"_proposalId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14162,"src":"3931:11:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14190,"name":"ProposalExecuted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13889,"src":"3901:16:80","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":14192,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":["3919:10:80"],"names":["proposalId"],"nodeType":"FunctionCall","src":"3901:43:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14193,"nodeType":"EmitStatement","src":"3896:48:80"}]},"documentation":{"id":14157,"nodeType":"StructuredDocumentation","src":"2952:602:80","text":"@notice Internal function to execute a proposal.\n @param _proposalId The ID of the proposal to be executed.\n @param _actions The array of actions to be executed.\n @param _allowFailureMap A bitmap allowing the proposal to succeed, even if individual actions might revert. If the bit at index `i` is 1, the proposal succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\n @return execResults The array with the results of the executed actions.\n @return failureMap The failure map encoding which actions have failed."},"id":14195,"implemented":true,"kind":"function","modifiers":[],"name":"_executeProposal","nameLocation":"3568:16:80","nodeType":"FunctionDefinition","parameters":{"id":14169,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14160,"mutability":"mutable","name":"_dao","nameLocation":"3599:4:80","nodeType":"VariableDeclaration","scope":14195,"src":"3594:9:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"},"typeName":{"id":14159,"nodeType":"UserDefinedTypeName","pathNode":{"id":14158,"name":"IDAO","nameLocations":["3594:4:80"],"nodeType":"IdentifierPath","referencedDeclaration":10865,"src":"3594:4:80"},"referencedDeclaration":10865,"src":"3594:4:80","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$10865","typeString":"contract IDAO"}},"visibility":"internal"},{"constant":false,"id":14162,"mutability":"mutable","name":"_proposalId","nameLocation":"3621:11:80","nodeType":"VariableDeclaration","scope":14195,"src":"3613:19:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14161,"name":"uint256","nodeType":"ElementaryTypeName","src":"3613:7:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14166,"mutability":"mutable","name":"_actions","nameLocation":"3663:8:80","nodeType":"VariableDeclaration","scope":14195,"src":"3642:29:80","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Action_$10724_memory_ptr_$dyn_memory_ptr","typeString":"struct IDAO.Action[]"},"typeName":{"baseType":{"id":14164,"nodeType":"UserDefinedTypeName","pathNode":{"id":14163,"name":"IDAO.Action","nameLocations":["3642:4:80","3647:6:80"],"nodeType":"IdentifierPath","referencedDeclaration":10724,"src":"3642:11:80"},"referencedDeclaration":10724,"src":"3642:11:80","typeDescriptions":{"typeIdentifier":"t_struct$_Action_$10724_storage_ptr","typeString":"struct IDAO.Action"}},"id":14165,"nodeType":"ArrayTypeName","src":"3642:13:80","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Action_$10724_storage_$dyn_storage_ptr","typeString":"struct IDAO.Action[]"}},"visibility":"internal"},{"constant":false,"id":14168,"mutability":"mutable","name":"_allowFailureMap","nameLocation":"3689:16:80","nodeType":"VariableDeclaration","scope":14195,"src":"3681:24:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14167,"name":"uint256","nodeType":"ElementaryTypeName","src":"3681:7:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3584:127:80"},"returnParameters":{"id":14175,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14172,"mutability":"mutable","name":"execResults","nameLocation":"3753:11:80","nodeType":"VariableDeclaration","scope":14195,"src":"3738:26:80","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":14170,"name":"bytes","nodeType":"ElementaryTypeName","src":"3738:5:80","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":14171,"nodeType":"ArrayTypeName","src":"3738:7:80","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"},{"constant":false,"id":14174,"mutability":"mutable","name":"failureMap","nameLocation":"3774:10:80","nodeType":"VariableDeclaration","scope":14195,"src":"3766:18:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14173,"name":"uint256","nodeType":"ElementaryTypeName","src":"3766:7:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3737:48:80"},"scope":14201,"src":"3559:392:80","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"constant":false,"documentation":{"id":14196,"nodeType":"StructuredDocumentation","src":"3957:273:80","text":"@notice This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain (see [OpenZeppelin's guide about storage gaps](https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps))."},"id":14200,"mutability":"mutable","name":"__gap","nameLocation":"4255:5:80","nodeType":"VariableDeclaration","scope":14201,"src":"4235:25:80","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$49_storage","typeString":"uint256[49]"},"typeName":{"baseType":{"id":14197,"name":"uint256","nodeType":"ElementaryTypeName","src":"4235:7:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14199,"length":{"hexValue":"3439","id":14198,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4243:2:80","typeDescriptions":{"typeIdentifier":"t_rational_49_by_1","typeString":"int_const 49"},"value":"49"},"nodeType":"ArrayTypeName","src":"4235:11:80","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$49_storage_ptr","typeString":"uint256[49]"}},"visibility":"private"}],"scope":14202,"src":"650:3613:80","usedErrors":[]}],"src":"47:4217:80"},"id":80},"src/plugin/setup/IPluginSetup.sol":{"ast":{"absolutePath":"src/plugin/setup/IPluginSetup.sol","exportedSymbols":{"IDAO":[10865],"IPluginSetup":[14273],"PermissionLib":[13038]},"id":14274,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":14203,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:81"},{"absolutePath":"src/permission/PermissionLib.sol","file":"../../permission/PermissionLib.sol","id":14205,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":14274,"sourceUnit":13039,"src":"72:65:81","symbolAliases":[{"foreign":{"id":14204,"name":"PermissionLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13038,"src":"80:13:81","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/dao/IDAO.sol","file":"../../dao/IDAO.sol","id":14207,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":14274,"sourceUnit":10866,"src":"185:40:81","symbolAliases":[{"foreign":{"id":14206,"name":"IDAO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10865,"src":"193:4:81","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"IPluginSetup","contractDependencies":[],"contractKind":"interface","documentation":{"id":14208,"nodeType":"StructuredDocumentation","src":"227:266:81","text":"@title IPluginSetup\n @author Aragon X - 2022-2023\n @notice The interface required for a plugin setup contract to be consumed by the `PluginSetupProcessor` for plugin installations, updates, and uninstallations.\n @custom:security-contact sirt@aragon.org"},"fullyImplemented":false,"id":14273,"linearizedBaseContracts":[14273],"name":"IPluginSetup","nameLocation":"503:12:81","nodeType":"ContractDefinition","nodes":[{"canonicalName":"IPluginSetup.PreparedSetupData","id":14216,"members":[{"constant":false,"id":14211,"mutability":"mutable","name":"helpers","nameLocation":"924:7:81","nodeType":"VariableDeclaration","scope":14216,"src":"914:17:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":14209,"name":"address","nodeType":"ElementaryTypeName","src":"914:7:81","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":14210,"nodeType":"ArrayTypeName","src":"914:9:81","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":14215,"mutability":"mutable","name":"permissions","nameLocation":"979:11:81","nodeType":"VariableDeclaration","scope":14216,"src":"941:49:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_storage_$dyn_storage_ptr","typeString":"struct PermissionLib.MultiTargetPermission[]"},"typeName":{"baseType":{"id":14213,"nodeType":"UserDefinedTypeName","pathNode":{"id":14212,"name":"PermissionLib.MultiTargetPermission","nameLocations":["941:13:81","955:21:81"],"nodeType":"IdentifierPath","referencedDeclaration":13037,"src":"941:35:81"},"referencedDeclaration":13037,"src":"941:35:81","typeDescriptions":{"typeIdentifier":"t_struct$_MultiTargetPermission_$13037_storage_ptr","typeString":"struct PermissionLib.MultiTargetPermission"}},"id":14214,"nodeType":"ArrayTypeName","src":"941:37:81","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_storage_$dyn_storage_ptr","typeString":"struct PermissionLib.MultiTargetPermission[]"}},"visibility":"internal"}],"name":"PreparedSetupData","nameLocation":"886:17:81","nodeType":"StructDefinition","scope":14273,"src":"879:118:81","visibility":"public"},{"canonicalName":"IPluginSetup.SetupPayload","id":14224,"members":[{"constant":false,"id":14218,"mutability":"mutable","name":"plugin","nameLocation":"1568:6:81","nodeType":"VariableDeclaration","scope":14224,"src":"1560:14:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14217,"name":"address","nodeType":"ElementaryTypeName","src":"1560:7:81","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14221,"mutability":"mutable","name":"currentHelpers","nameLocation":"1594:14:81","nodeType":"VariableDeclaration","scope":14224,"src":"1584:24:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":14219,"name":"address","nodeType":"ElementaryTypeName","src":"1584:7:81","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":14220,"nodeType":"ArrayTypeName","src":"1584:9:81","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":14223,"mutability":"mutable","name":"data","nameLocation":"1624:4:81","nodeType":"VariableDeclaration","scope":14224,"src":"1618:10:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":14222,"name":"bytes","nodeType":"ElementaryTypeName","src":"1618:5:81","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"name":"SetupPayload","nameLocation":"1537:12:81","nodeType":"StructDefinition","scope":14273,"src":"1530:105:81","visibility":"public"},{"documentation":{"id":14225,"nodeType":"StructuredDocumentation","src":"1641:463:81","text":"@notice Prepares the installation of a plugin.\n @param _dao The address of the installing DAO.\n @param _data The bytes-encoded data containing the input parameters for the installation as specified in the plugin's build metadata JSON file.\n @return plugin The address of the `Plugin` contract being prepared for installation.\n @return preparedSetupData The deployed plugin's relevant data which consists of helpers and permissions."},"functionSelector":"f10832f1","id":14237,"implemented":false,"kind":"function","modifiers":[],"name":"prepareInstallation","nameLocation":"2118:19:81","nodeType":"FunctionDefinition","parameters":{"id":14230,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14227,"mutability":"mutable","name":"_dao","nameLocation":"2155:4:81","nodeType":"VariableDeclaration","scope":14237,"src":"2147:12:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14226,"name":"address","nodeType":"ElementaryTypeName","src":"2147:7:81","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14229,"mutability":"mutable","name":"_data","nameLocation":"2184:5:81","nodeType":"VariableDeclaration","scope":14237,"src":"2169:20:81","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":14228,"name":"bytes","nodeType":"ElementaryTypeName","src":"2169:5:81","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2137:58:81"},"returnParameters":{"id":14236,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14232,"mutability":"mutable","name":"plugin","nameLocation":"2222:6:81","nodeType":"VariableDeclaration","scope":14237,"src":"2214:14:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14231,"name":"address","nodeType":"ElementaryTypeName","src":"2214:7:81","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14235,"mutability":"mutable","name":"preparedSetupData","nameLocation":"2255:17:81","nodeType":"VariableDeclaration","scope":14237,"src":"2230:42:81","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$14216_memory_ptr","typeString":"struct IPluginSetup.PreparedSetupData"},"typeName":{"id":14234,"nodeType":"UserDefinedTypeName","pathNode":{"id":14233,"name":"PreparedSetupData","nameLocations":["2230:17:81"],"nodeType":"IdentifierPath","referencedDeclaration":14216,"src":"2230:17:81"},"referencedDeclaration":14216,"src":"2230:17:81","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$14216_storage_ptr","typeString":"struct IPluginSetup.PreparedSetupData"}},"visibility":"internal"}],"src":"2213:60:81"},"scope":14273,"src":"2109:165:81","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":14238,"nodeType":"StructuredDocumentation","src":"2280:516:81","text":"@notice Prepares the update of a plugin.\n @param _dao The address of the updating DAO.\n @param _fromBuild The build number of the plugin to update from.\n @param _payload The relevant data necessary for the `prepareUpdate`. See above.\n @return initData The initialization data to be passed to upgradeable contracts when the update is applied in the `PluginSetupProcessor`.\n @return preparedSetupData The deployed plugin's relevant data which consists of helpers and permissions."},"functionSelector":"a8a9c29e","id":14253,"implemented":false,"kind":"function","modifiers":[],"name":"prepareUpdate","nameLocation":"2810:13:81","nodeType":"FunctionDefinition","parameters":{"id":14246,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14240,"mutability":"mutable","name":"_dao","nameLocation":"2841:4:81","nodeType":"VariableDeclaration","scope":14253,"src":"2833:12:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14239,"name":"address","nodeType":"ElementaryTypeName","src":"2833:7:81","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14242,"mutability":"mutable","name":"_fromBuild","nameLocation":"2862:10:81","nodeType":"VariableDeclaration","scope":14253,"src":"2855:17:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":14241,"name":"uint16","nodeType":"ElementaryTypeName","src":"2855:6:81","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":14245,"mutability":"mutable","name":"_payload","nameLocation":"2904:8:81","nodeType":"VariableDeclaration","scope":14253,"src":"2882:30:81","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$14224_calldata_ptr","typeString":"struct IPluginSetup.SetupPayload"},"typeName":{"id":14244,"nodeType":"UserDefinedTypeName","pathNode":{"id":14243,"name":"SetupPayload","nameLocations":["2882:12:81"],"nodeType":"IdentifierPath","referencedDeclaration":14224,"src":"2882:12:81"},"referencedDeclaration":14224,"src":"2882:12:81","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$14224_storage_ptr","typeString":"struct IPluginSetup.SetupPayload"}},"visibility":"internal"}],"src":"2823:95:81"},"returnParameters":{"id":14252,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14248,"mutability":"mutable","name":"initData","nameLocation":"2950:8:81","nodeType":"VariableDeclaration","scope":14253,"src":"2937:21:81","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":14247,"name":"bytes","nodeType":"ElementaryTypeName","src":"2937:5:81","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":14251,"mutability":"mutable","name":"preparedSetupData","nameLocation":"2985:17:81","nodeType":"VariableDeclaration","scope":14253,"src":"2960:42:81","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$14216_memory_ptr","typeString":"struct IPluginSetup.PreparedSetupData"},"typeName":{"id":14250,"nodeType":"UserDefinedTypeName","pathNode":{"id":14249,"name":"PreparedSetupData","nameLocations":["2960:17:81"],"nodeType":"IdentifierPath","referencedDeclaration":14216,"src":"2960:17:81"},"referencedDeclaration":14216,"src":"2960:17:81","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$14216_storage_ptr","typeString":"struct IPluginSetup.PreparedSetupData"}},"visibility":"internal"}],"src":"2936:67:81"},"scope":14273,"src":"2801:203:81","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":14254,"nodeType":"StructuredDocumentation","src":"3010:352:81","text":"@notice Prepares the uninstallation of a plugin.\n @param _dao The address of the uninstalling DAO.\n @param _payload The relevant data necessary for the `prepareUninstallation`. See above.\n @return permissions The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the uninstalling DAO."},"functionSelector":"9cb0a124","id":14266,"implemented":false,"kind":"function","modifiers":[],"name":"prepareUninstallation","nameLocation":"3376:21:81","nodeType":"FunctionDefinition","parameters":{"id":14260,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14256,"mutability":"mutable","name":"_dao","nameLocation":"3415:4:81","nodeType":"VariableDeclaration","scope":14266,"src":"3407:12:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14255,"name":"address","nodeType":"ElementaryTypeName","src":"3407:7:81","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14259,"mutability":"mutable","name":"_payload","nameLocation":"3451:8:81","nodeType":"VariableDeclaration","scope":14266,"src":"3429:30:81","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$14224_calldata_ptr","typeString":"struct IPluginSetup.SetupPayload"},"typeName":{"id":14258,"nodeType":"UserDefinedTypeName","pathNode":{"id":14257,"name":"SetupPayload","nameLocations":["3429:12:81"],"nodeType":"IdentifierPath","referencedDeclaration":14224,"src":"3429:12:81"},"referencedDeclaration":14224,"src":"3429:12:81","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$14224_storage_ptr","typeString":"struct IPluginSetup.SetupPayload"}},"visibility":"internal"}],"src":"3397:68:81"},"returnParameters":{"id":14265,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14264,"mutability":"mutable","name":"permissions","nameLocation":"3529:11:81","nodeType":"VariableDeclaration","scope":14266,"src":"3484:56:81","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission[]"},"typeName":{"baseType":{"id":14262,"nodeType":"UserDefinedTypeName","pathNode":{"id":14261,"name":"PermissionLib.MultiTargetPermission","nameLocations":["3484:13:81","3498:21:81"],"nodeType":"IdentifierPath","referencedDeclaration":13037,"src":"3484:35:81"},"referencedDeclaration":13037,"src":"3484:35:81","typeDescriptions":{"typeIdentifier":"t_struct$_MultiTargetPermission_$13037_storage_ptr","typeString":"struct PermissionLib.MultiTargetPermission"}},"id":14263,"nodeType":"ArrayTypeName","src":"3484:37:81","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$13037_storage_$dyn_storage_ptr","typeString":"struct PermissionLib.MultiTargetPermission[]"}},"visibility":"internal"}],"src":"3483:58:81"},"scope":14273,"src":"3367:175:81","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":14267,"nodeType":"StructuredDocumentation","src":"3548:389:81","text":"@notice Returns the plugin implementation address.\n @return The address of the plugin implementation contract.\n @dev The implementation can be instantiated via the `new` keyword, cloned via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)), or proxied via the UUPS proxy pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822))."},"functionSelector":"5c60da1b","id":14272,"implemented":false,"kind":"function","modifiers":[],"name":"implementation","nameLocation":"3951:14:81","nodeType":"FunctionDefinition","parameters":{"id":14268,"nodeType":"ParameterList","parameters":[],"src":"3965:2:81"},"returnParameters":{"id":14271,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14270,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14272,"src":"3991:7:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14269,"name":"address","nodeType":"ElementaryTypeName","src":"3991:7:81","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3990:9:81"},"scope":14273,"src":"3942:58:81","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":14274,"src":"493:3509:81","usedErrors":[]}],"src":"47:3956:81"},"id":81},"src/plugin/setup/PluginSetup.sol":{"ast":{"absolutePath":"src/plugin/setup/PluginSetup.sol","exportedSymbols":{"ERC165":[9731],"IPluginSetup":[14273],"IProtocolVersion":[14744],"PluginSetup":[14371],"ProtocolVersion":[14766]},"id":14372,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":14275,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:82"},{"absolutePath":"@openzeppelin/contracts/utils/introspection/ERC165.sol","file":"@openzeppelin/contracts/utils/introspection/ERC165.sol","id":14277,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":14372,"sourceUnit":9732,"src":"72:78:82","symbolAliases":[{"foreign":{"id":14276,"name":"ERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9731,"src":"80:6:82","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/utils/versioning/IProtocolVersion.sol","file":"../../utils/versioning/IProtocolVersion.sol","id":14279,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":14372,"sourceUnit":14745,"src":"152:77:82","symbolAliases":[{"foreign":{"id":14278,"name":"IProtocolVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14744,"src":"160:16:82","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/utils/versioning/ProtocolVersion.sol","file":"../../utils/versioning/ProtocolVersion.sol","id":14281,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":14372,"sourceUnit":14767,"src":"230:75:82","symbolAliases":[{"foreign":{"id":14280,"name":"ProtocolVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14766,"src":"238:15:82","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/plugin/setup/IPluginSetup.sol","file":"./IPluginSetup.sol","id":14283,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":14372,"sourceUnit":14274,"src":"306:48:82","symbolAliases":[{"foreign":{"id":14282,"name":"IPluginSetup","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14273,"src":"314:12:82","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":14285,"name":"ERC165","nameLocations":["783:6:82"],"nodeType":"IdentifierPath","referencedDeclaration":9731,"src":"783:6:82"},"id":14286,"nodeType":"InheritanceSpecifier","src":"783:6:82"},{"baseName":{"id":14287,"name":"IPluginSetup","nameLocations":["791:12:82"],"nodeType":"IdentifierPath","referencedDeclaration":14273,"src":"791:12:82"},"id":14288,"nodeType":"InheritanceSpecifier","src":"791:12:82"},{"baseName":{"id":14289,"name":"ProtocolVersion","nameLocations":["805:15:82"],"nodeType":"IdentifierPath","referencedDeclaration":14766,"src":"805:15:82"},"id":14290,"nodeType":"InheritanceSpecifier","src":"805:15:82"}],"canonicalName":"PluginSetup","contractDependencies":[],"contractKind":"contract","documentation":{"id":14284,"nodeType":"StructuredDocumentation","src":"356:394:82","text":"@title PluginSetup\n @author Aragon X - 2022-2024\n @notice An abstract contract to inherit from to implement the plugin setup for non-upgradeable plugins, i.e,\n - `Plugin` being deployed via the `new` keyword\n - `PluginCloneable` being deployed via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)).\n @custom:security-contact sirt@aragon.org"},"fullyImplemented":false,"id":14371,"linearizedBaseContracts":[14371,14766,14744,14273,9731,9743],"name":"PluginSetup","nameLocation":"768:11:82","nodeType":"ContractDefinition","nodes":[{"constant":false,"documentation":{"id":14291,"nodeType":"StructuredDocumentation","src":"827:230:82","text":"@notice The address of the plugin implementation contract for initial block explorer verification and, in the case of `PluginClonable` implementations, to create [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167) clones from."},"id":14293,"mutability":"immutable","name":"IMPLEMENTATION","nameLocation":"1089:14:82","nodeType":"VariableDeclaration","scope":14371,"src":"1062:41:82","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14292,"name":"address","nodeType":"ElementaryTypeName","src":"1062:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"documentation":{"id":14294,"nodeType":"StructuredDocumentation","src":"1110:84:82","text":"@notice Thrown when attempting to prepare an update on a non-upgradeable plugin."},"errorSelector":"a1128101","id":14296,"name":"NonUpgradeablePlugin","nameLocation":"1205:20:82","nodeType":"ErrorDefinition","parameters":{"id":14295,"nodeType":"ParameterList","parameters":[],"src":"1225:2:82"},"src":"1199:29:82"},{"body":{"id":14306,"nodeType":"Block","src":"1444:49:82","statements":[{"expression":{"id":14304,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14302,"name":"IMPLEMENTATION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14293,"src":"1454:14:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":14303,"name":"_implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14299,"src":"1471:15:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1454:32:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":14305,"nodeType":"ExpressionStatement","src":"1454:32:82"}]},"documentation":{"id":14297,"nodeType":"StructuredDocumentation","src":"1234:168:82","text":"@notice The contract constructor, that setting the plugin implementation contract.\n @param _implementation The address of the plugin implementation contract."},"id":14307,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":14300,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14299,"mutability":"mutable","name":"_implementation","nameLocation":"1427:15:82","nodeType":"VariableDeclaration","scope":14307,"src":"1419:23:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14298,"name":"address","nodeType":"ElementaryTypeName","src":"1419:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1418:25:82"},"returnParameters":{"id":14301,"nodeType":"ParameterList","parameters":[],"src":"1444:0:82"},"scope":14371,"src":"1407:86:82","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[14253],"body":{"id":14331,"nodeType":"Block","src":"1820:84:82","statements":[{"expression":{"components":[{"id":14323,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14310,"src":"1831:4:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":14324,"name":"_fromBuild","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14312,"src":"1837:10:82","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"id":14325,"name":"_payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14315,"src":"1849:8:82","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$14224_calldata_ptr","typeString":"struct IPluginSetup.SetupPayload calldata"}}],"id":14326,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1830:28:82","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint16_$_t_struct$_SetupPayload_$14224_calldata_ptr_$","typeString":"tuple(address,uint16,struct IPluginSetup.SetupPayload calldata)"}},"id":14327,"nodeType":"ExpressionStatement","src":"1830:28:82"},{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":14328,"name":"NonUpgradeablePlugin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14296,"src":"1875:20:82","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":14329,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1875:22:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14330,"nodeType":"RevertStatement","src":"1868:29:82"}]},"documentation":{"id":14308,"nodeType":"StructuredDocumentation","src":"1499:135:82","text":"@inheritdoc IPluginSetup\n @dev Since the underlying plugin is non-upgradeable, this non-virtual function must always revert."},"functionSelector":"a8a9c29e","id":14332,"implemented":true,"kind":"function","modifiers":[],"name":"prepareUpdate","nameLocation":"1648:13:82","nodeType":"FunctionDefinition","parameters":{"id":14316,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14310,"mutability":"mutable","name":"_dao","nameLocation":"1679:4:82","nodeType":"VariableDeclaration","scope":14332,"src":"1671:12:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14309,"name":"address","nodeType":"ElementaryTypeName","src":"1671:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14312,"mutability":"mutable","name":"_fromBuild","nameLocation":"1700:10:82","nodeType":"VariableDeclaration","scope":14332,"src":"1693:17:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":14311,"name":"uint16","nodeType":"ElementaryTypeName","src":"1693:6:82","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":14315,"mutability":"mutable","name":"_payload","nameLocation":"1742:8:82","nodeType":"VariableDeclaration","scope":14332,"src":"1720:30:82","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$14224_calldata_ptr","typeString":"struct IPluginSetup.SetupPayload"},"typeName":{"id":14314,"nodeType":"UserDefinedTypeName","pathNode":{"id":14313,"name":"SetupPayload","nameLocations":["1720:12:82"],"nodeType":"IdentifierPath","referencedDeclaration":14224,"src":"1720:12:82"},"referencedDeclaration":14224,"src":"1720:12:82","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$14224_storage_ptr","typeString":"struct IPluginSetup.SetupPayload"}},"visibility":"internal"}],"src":"1661:95:82"},"returnParameters":{"id":14322,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14318,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14332,"src":"1780:12:82","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":14317,"name":"bytes","nodeType":"ElementaryTypeName","src":"1780:5:82","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":14321,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14332,"src":"1794:24:82","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$14216_memory_ptr","typeString":"struct IPluginSetup.PreparedSetupData"},"typeName":{"id":14320,"nodeType":"UserDefinedTypeName","pathNode":{"id":14319,"name":"PreparedSetupData","nameLocations":["1794:17:82"],"nodeType":"IdentifierPath","referencedDeclaration":14216,"src":"1794:17:82"},"referencedDeclaration":14216,"src":"1794:17:82","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$14216_storage_ptr","typeString":"struct IPluginSetup.PreparedSetupData"}},"visibility":"internal"}],"src":"1779:40:82"},"scope":14371,"src":"1639:265:82","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[9730],"body":{"id":14360,"nodeType":"Block","src":"2204:201:82","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":14358,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":14353,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":14346,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14341,"name":"_interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14335,"src":"2233:12:82","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":14343,"name":"IPluginSetup","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14273,"src":"2254:12:82","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IPluginSetup_$14273_$","typeString":"type(contract IPluginSetup)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IPluginSetup_$14273_$","typeString":"type(contract IPluginSetup)"}],"id":14342,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"2249:4:82","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":14344,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2249:18:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IPluginSetup_$14273","typeString":"type(contract IPluginSetup)"}},"id":14345,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2268:11:82","memberName":"interfaceId","nodeType":"MemberAccess","src":"2249:30:82","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"2233:46:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":14352,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14347,"name":"_interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14335,"src":"2295:12:82","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":14349,"name":"IProtocolVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14744,"src":"2316:16:82","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IProtocolVersion_$14744_$","typeString":"type(contract IProtocolVersion)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IProtocolVersion_$14744_$","typeString":"type(contract IProtocolVersion)"}],"id":14348,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"2311:4:82","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":14350,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2311:22:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IProtocolVersion_$14744","typeString":"type(contract IProtocolVersion)"}},"id":14351,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2334:11:82","memberName":"interfaceId","nodeType":"MemberAccess","src":"2311:34:82","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"2295:50:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2233:112:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":14356,"name":"_interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14335,"src":"2385:12:82","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":14354,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967271,"src":"2361:5:82","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_PluginSetup_$14371_$","typeString":"type(contract super PluginSetup)"}},"id":14355,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2367:17:82","memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":9730,"src":"2361:23:82","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bool_$","typeString":"function (bytes4) view returns (bool)"}},"id":14357,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2361:37:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2233:165:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":14340,"id":14359,"nodeType":"Return","src":"2214:184:82"}]},"documentation":{"id":14333,"nodeType":"StructuredDocumentation","src":"1910:197:82","text":"@notice Checks if this or the parent contract supports an interface by its ID.\n @param _interfaceId The ID of the interface.\n @return Returns `true` if the interface is supported."},"functionSelector":"01ffc9a7","id":14361,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"2121:17:82","nodeType":"FunctionDefinition","overrides":{"id":14337,"nodeType":"OverrideSpecifier","overrides":[],"src":"2180:8:82"},"parameters":{"id":14336,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14335,"mutability":"mutable","name":"_interfaceId","nameLocation":"2146:12:82","nodeType":"VariableDeclaration","scope":14361,"src":"2139:19:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":14334,"name":"bytes4","nodeType":"ElementaryTypeName","src":"2139:6:82","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"2138:21:82"},"returnParameters":{"id":14340,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14339,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14361,"src":"2198:4:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":14338,"name":"bool","nodeType":"ElementaryTypeName","src":"2198:4:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2197:6:82"},"scope":14371,"src":"2112:293:82","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[14272],"body":{"id":14369,"nodeType":"Block","src":"2500:38:82","statements":[{"expression":{"id":14367,"name":"IMPLEMENTATION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14293,"src":"2517:14:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":14366,"id":14368,"nodeType":"Return","src":"2510:21:82"}]},"documentation":{"id":14362,"nodeType":"StructuredDocumentation","src":"2411:28:82","text":"@inheritdoc IPluginSetup"},"functionSelector":"5c60da1b","id":14370,"implemented":true,"kind":"function","modifiers":[],"name":"implementation","nameLocation":"2453:14:82","nodeType":"FunctionDefinition","parameters":{"id":14363,"nodeType":"ParameterList","parameters":[],"src":"2467:2:82"},"returnParameters":{"id":14366,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14365,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14370,"src":"2491:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14364,"name":"address","nodeType":"ElementaryTypeName","src":"2491:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2490:9:82"},"scope":14371,"src":"2444:94:82","stateMutability":"view","virtual":false,"visibility":"public"}],"scope":14372,"src":"750:1790:82","usedErrors":[14296]}],"src":"47:2494:82"},"id":82},"src/plugin/setup/PluginUpgradeableSetup.sol":{"ast":{"absolutePath":"src/plugin/setup/PluginUpgradeableSetup.sol","exportedSymbols":{"ERC165":[9731],"IPluginSetup":[14273],"IProtocolVersion":[14744],"PluginUpgradeableSetup":[14448],"ProtocolVersion":[14766]},"id":14449,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":14373,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:83"},{"absolutePath":"@openzeppelin/contracts/utils/introspection/ERC165.sol","file":"@openzeppelin/contracts/utils/introspection/ERC165.sol","id":14375,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":14449,"sourceUnit":9732,"src":"72:78:83","symbolAliases":[{"foreign":{"id":14374,"name":"ERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9731,"src":"80:6:83","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/utils/versioning/IProtocolVersion.sol","file":"../../utils/versioning/IProtocolVersion.sol","id":14377,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":14449,"sourceUnit":14745,"src":"152:77:83","symbolAliases":[{"foreign":{"id":14376,"name":"IProtocolVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14744,"src":"160:16:83","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/utils/versioning/ProtocolVersion.sol","file":"../../utils/versioning/ProtocolVersion.sol","id":14379,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":14449,"sourceUnit":14767,"src":"230:75:83","symbolAliases":[{"foreign":{"id":14378,"name":"ProtocolVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14766,"src":"238:15:83","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/plugin/setup/IPluginSetup.sol","file":"./IPluginSetup.sol","id":14381,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":14449,"sourceUnit":14274,"src":"306:48:83","symbolAliases":[{"foreign":{"id":14380,"name":"IPluginSetup","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14273,"src":"314:12:83","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":14383,"name":"ERC165","nameLocations":["796:6:83"],"nodeType":"IdentifierPath","referencedDeclaration":9731,"src":"796:6:83"},"id":14384,"nodeType":"InheritanceSpecifier","src":"796:6:83"},{"baseName":{"id":14385,"name":"IPluginSetup","nameLocations":["804:12:83"],"nodeType":"IdentifierPath","referencedDeclaration":14273,"src":"804:12:83"},"id":14386,"nodeType":"InheritanceSpecifier","src":"804:12:83"},{"baseName":{"id":14387,"name":"ProtocolVersion","nameLocations":["818:15:83"],"nodeType":"IdentifierPath","referencedDeclaration":14766,"src":"818:15:83"},"id":14388,"nodeType":"InheritanceSpecifier","src":"818:15:83"}],"canonicalName":"PluginUpgradeableSetup","contractDependencies":[],"contractKind":"contract","documentation":{"id":14382,"nodeType":"StructuredDocumentation","src":"356:396:83","text":"@title PluginUpgradeableSetup\n @author Aragon X - 2022-2024\n @notice An abstract contract to inherit from to implement the plugin setup for upgradeable plugins, i.e, `PluginUUPSUpgradeable` being deployed via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822) and [ERC-1967](https://eips.ethereum.org/EIPS/eip-1967)).\n @custom:security-contact sirt@aragon.org"},"fullyImplemented":false,"id":14448,"linearizedBaseContracts":[14448,14766,14744,14273,9731,9743],"name":"PluginUpgradeableSetup","nameLocation":"770:22:83","nodeType":"ContractDefinition","nodes":[{"constant":false,"documentation":{"id":14389,"nodeType":"StructuredDocumentation","src":"840:194:83","text":"@notice The address of the plugin implementation contract for initial block explorer verification\n and to create [ERC-1967](https://eips.ethereum.org/EIPS/eip-1967) UUPS proxies from."},"id":14391,"mutability":"immutable","name":"IMPLEMENTATION","nameLocation":"1066:14:83","nodeType":"VariableDeclaration","scope":14448,"src":"1039:41:83","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14390,"name":"address","nodeType":"ElementaryTypeName","src":"1039:7:83","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"documentation":{"id":14392,"nodeType":"StructuredDocumentation","src":"1087:227:83","text":"@notice Thrown when an update path is not available, for example, if this is the initial build.\n @param fromBuild The build number to update from.\n @param thisBuild The build number of this setup to update to."},"errorSelector":"1313218a","id":14398,"name":"InvalidUpdatePath","nameLocation":"1325:17:83","nodeType":"ErrorDefinition","parameters":{"id":14397,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14394,"mutability":"mutable","name":"fromBuild","nameLocation":"1350:9:83","nodeType":"VariableDeclaration","scope":14398,"src":"1343:16:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":14393,"name":"uint16","nodeType":"ElementaryTypeName","src":"1343:6:83","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":14396,"mutability":"mutable","name":"thisBuild","nameLocation":"1368:9:83","nodeType":"VariableDeclaration","scope":14398,"src":"1361:16:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":14395,"name":"uint16","nodeType":"ElementaryTypeName","src":"1361:6:83","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"1342:36:83"},"src":"1319:60:83"},{"body":{"id":14408,"nodeType":"Block","src":"1595:49:83","statements":[{"expression":{"id":14406,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14404,"name":"IMPLEMENTATION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14391,"src":"1605:14:83","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":14405,"name":"_implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14401,"src":"1622:15:83","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1605:32:83","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":14407,"nodeType":"ExpressionStatement","src":"1605:32:83"}]},"documentation":{"id":14399,"nodeType":"StructuredDocumentation","src":"1385:168:83","text":"@notice The contract constructor, that setting the plugin implementation contract.\n @param _implementation The address of the plugin implementation contract."},"id":14409,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":14402,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14401,"mutability":"mutable","name":"_implementation","nameLocation":"1578:15:83","nodeType":"VariableDeclaration","scope":14409,"src":"1570:23:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14400,"name":"address","nodeType":"ElementaryTypeName","src":"1570:7:83","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1569:25:83"},"returnParameters":{"id":14403,"nodeType":"ParameterList","parameters":[],"src":"1595:0:83"},"scope":14448,"src":"1558:86:83","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[9730],"body":{"id":14437,"nodeType":"Block","src":"1944:201:83","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":14435,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":14430,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":14423,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14418,"name":"_interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14412,"src":"1973:12:83","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":14420,"name":"IPluginSetup","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14273,"src":"1994:12:83","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IPluginSetup_$14273_$","typeString":"type(contract IPluginSetup)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IPluginSetup_$14273_$","typeString":"type(contract IPluginSetup)"}],"id":14419,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"1989:4:83","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":14421,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1989:18:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IPluginSetup_$14273","typeString":"type(contract IPluginSetup)"}},"id":14422,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2008:11:83","memberName":"interfaceId","nodeType":"MemberAccess","src":"1989:30:83","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"1973:46:83","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":14429,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14424,"name":"_interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14412,"src":"2035:12:83","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":14426,"name":"IProtocolVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14744,"src":"2056:16:83","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IProtocolVersion_$14744_$","typeString":"type(contract IProtocolVersion)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IProtocolVersion_$14744_$","typeString":"type(contract IProtocolVersion)"}],"id":14425,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"2051:4:83","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":14427,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2051:22:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IProtocolVersion_$14744","typeString":"type(contract IProtocolVersion)"}},"id":14428,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2074:11:83","memberName":"interfaceId","nodeType":"MemberAccess","src":"2051:34:83","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"2035:50:83","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1973:112:83","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":14433,"name":"_interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14412,"src":"2125:12:83","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":14431,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967271,"src":"2101:5:83","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_PluginUpgradeableSetup_$14448_$","typeString":"type(contract super PluginUpgradeableSetup)"}},"id":14432,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2107:17:83","memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":9730,"src":"2101:23:83","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bool_$","typeString":"function (bytes4) view returns (bool)"}},"id":14434,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2101:37:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1973:165:83","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":14417,"id":14436,"nodeType":"Return","src":"1954:184:83"}]},"documentation":{"id":14410,"nodeType":"StructuredDocumentation","src":"1650:197:83","text":"@notice Checks if this or the parent contract supports an interface by its ID.\n @param _interfaceId The ID of the interface.\n @return Returns `true` if the interface is supported."},"functionSelector":"01ffc9a7","id":14438,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"1861:17:83","nodeType":"FunctionDefinition","overrides":{"id":14414,"nodeType":"OverrideSpecifier","overrides":[],"src":"1920:8:83"},"parameters":{"id":14413,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14412,"mutability":"mutable","name":"_interfaceId","nameLocation":"1886:12:83","nodeType":"VariableDeclaration","scope":14438,"src":"1879:19:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":14411,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1879:6:83","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"1878:21:83"},"returnParameters":{"id":14417,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14416,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14438,"src":"1938:4:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":14415,"name":"bool","nodeType":"ElementaryTypeName","src":"1938:4:83","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1937:6:83"},"scope":14448,"src":"1852:293:83","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[14272],"body":{"id":14446,"nodeType":"Block","src":"2240:38:83","statements":[{"expression":{"id":14444,"name":"IMPLEMENTATION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14391,"src":"2257:14:83","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":14443,"id":14445,"nodeType":"Return","src":"2250:21:83"}]},"documentation":{"id":14439,"nodeType":"StructuredDocumentation","src":"2151:28:83","text":"@inheritdoc IPluginSetup"},"functionSelector":"5c60da1b","id":14447,"implemented":true,"kind":"function","modifiers":[],"name":"implementation","nameLocation":"2193:14:83","nodeType":"FunctionDefinition","parameters":{"id":14440,"nodeType":"ParameterList","parameters":[],"src":"2207:2:83"},"returnParameters":{"id":14443,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14442,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14447,"src":"2231:7:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14441,"name":"address","nodeType":"ElementaryTypeName","src":"2231:7:83","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2230:9:83"},"scope":14448,"src":"2184:94:83","stateMutability":"view","virtual":false,"visibility":"public"}],"scope":14449,"src":"752:1528:83","usedErrors":[14398]}],"src":"47:2234:83"},"id":83},"src/utils/deployment/ProxyFactory.sol":{"ast":{"absolutePath":"src/utils/deployment/ProxyFactory.sol","exportedSymbols":{"ProxyFactory":[14525],"ProxyLib":[14593]},"id":14526,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":14450,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:84"},{"absolutePath":"src/utils/deployment/ProxyLib.sol","file":"./ProxyLib.sol","id":14452,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":14526,"sourceUnit":14594,"src":"72:40:84","symbolAliases":[{"foreign":{"id":14451,"name":"ProxyLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14593,"src":"80:8:84","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"ProxyFactory","contractDependencies":[5389],"contractKind":"contract","documentation":{"id":14453,"nodeType":"StructuredDocumentation","src":"114:301:84","text":"@title ProxyFactory\n @author Aragon X - 2024\n @notice A factory to deploy proxies via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)) and minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)).\n @custom:security-contact sirt@aragon.org"},"fullyImplemented":true,"id":14525,"linearizedBaseContracts":[14525],"name":"ProxyFactory","nameLocation":"424:12:84","nodeType":"ContractDefinition","nodes":[{"global":false,"id":14456,"libraryName":{"id":14454,"name":"ProxyLib","nameLocations":["449:8:84"],"nodeType":"IdentifierPath","referencedDeclaration":14593,"src":"449:8:84"},"nodeType":"UsingForDirective","src":"443:27:84","typeName":{"id":14455,"name":"address","nodeType":"ElementaryTypeName","src":"462:7:84","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},{"constant":false,"documentation":{"id":14457,"nodeType":"StructuredDocumentation","src":"475:49:84","text":"@notice The immutable logic contract address."},"id":14459,"mutability":"immutable","name":"IMPLEMENTATION","nameLocation":"556:14:84","nodeType":"VariableDeclaration","scope":14525,"src":"529:41:84","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14458,"name":"address","nodeType":"ElementaryTypeName","src":"529:7:84","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"anonymous":false,"documentation":{"id":14460,"nodeType":"StructuredDocumentation","src":"577:94:84","text":"@notice Emitted when an proxy contract is created.\n @param proxy The proxy address."},"eventSelector":"00fffc2da0b561cae30d9826d37709e9421c4725faebc226cbbb7ef5fc5e7349","id":14464,"name":"ProxyCreated","nameLocation":"682:12:84","nodeType":"EventDefinition","parameters":{"id":14463,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14462,"indexed":false,"mutability":"mutable","name":"proxy","nameLocation":"703:5:84","nodeType":"VariableDeclaration","scope":14464,"src":"695:13:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14461,"name":"address","nodeType":"ElementaryTypeName","src":"695:7:84","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"694:15:84"},"src":"676:34:84"},{"body":{"id":14474,"nodeType":"Block","src":"884:49:84","statements":[{"expression":{"id":14472,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14470,"name":"IMPLEMENTATION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14459,"src":"894:14:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":14471,"name":"_implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14467,"src":"911:15:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"894:32:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":14473,"nodeType":"ExpressionStatement","src":"894:32:84"}]},"documentation":{"id":14465,"nodeType":"StructuredDocumentation","src":"716:126:84","text":"@notice Initializes the contract with a logic contract address.\n @param _implementation The logic contract address."},"id":14475,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":14468,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14467,"mutability":"mutable","name":"_implementation","nameLocation":"867:15:84","nodeType":"VariableDeclaration","scope":14475,"src":"859:23:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14466,"name":"address","nodeType":"ElementaryTypeName","src":"859:7:84","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"858:25:84"},"returnParameters":{"id":14469,"nodeType":"ParameterList","parameters":[],"src":"884:0:84"},"scope":14525,"src":"847:86:84","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":14494,"nodeType":"Block","src":"1596:105:84","statements":[{"expression":{"id":14488,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14483,"name":"proxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14481,"src":"1606:5:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":14486,"name":"_data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14478,"src":"1645:5:84","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":14484,"name":"IMPLEMENTATION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14459,"src":"1614:14:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":14485,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1629:15:84","memberName":"deployUUPSProxy","nodeType":"MemberAccess","referencedDeclaration":14563,"src":"1614:30:84","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_address_$bound_to$_t_address_$","typeString":"function (address,bytes memory) returns (address)"}},"id":14487,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1614:37:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1606:45:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":14489,"nodeType":"ExpressionStatement","src":"1606:45:84"},{"eventCall":{"arguments":[{"id":14491,"name":"proxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14481,"src":"1687:5:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":14490,"name":"ProxyCreated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14464,"src":"1666:12:84","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":14492,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":["1680:5:84"],"names":["proxy"],"nodeType":"FunctionCall","src":"1666:28:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14493,"nodeType":"EmitStatement","src":"1661:33:84"}]},"documentation":{"id":14476,"nodeType":"StructuredDocumentation","src":"939:574:84","text":"@notice Creates an [ERC-1967](https://eips.ethereum.org/EIPS/eip-1967) proxy contract pointing to the pre-set logic contract.\n @param _data The initialization data for this contract.\n @return proxy The address of the proxy contract created.\n @dev If `_data` is non-empty, it is used in a delegate call to the `_implementation` contract. This will typically be an encoded function call initializing the proxy (see [OpenZeppelin ERC1967Proxy-constructor](https://docs.openzeppelin.com/contracts/4.x/api/proxy#ERC1967Proxy-constructor-address-bytes-))."},"functionSelector":"5c5c278b","id":14495,"implemented":true,"kind":"function","modifiers":[],"name":"deployUUPSProxy","nameLocation":"1527:15:84","nodeType":"FunctionDefinition","parameters":{"id":14479,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14478,"mutability":"mutable","name":"_data","nameLocation":"1556:5:84","nodeType":"VariableDeclaration","scope":14495,"src":"1543:18:84","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":14477,"name":"bytes","nodeType":"ElementaryTypeName","src":"1543:5:84","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1542:20:84"},"returnParameters":{"id":14482,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14481,"mutability":"mutable","name":"proxy","nameLocation":"1589:5:84","nodeType":"VariableDeclaration","scope":14495,"src":"1581:13:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14480,"name":"address","nodeType":"ElementaryTypeName","src":"1581:7:84","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1580:15:84"},"scope":14525,"src":"1518:183:84","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":14514,"nodeType":"Block","src":"2231:108:84","statements":[{"expression":{"id":14508,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14503,"name":"proxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14501,"src":"2241:5:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":14506,"name":"_data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14498,"src":"2283:5:84","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":14504,"name":"IMPLEMENTATION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14459,"src":"2249:14:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":14505,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2264:18:84","memberName":"deployMinimalProxy","nodeType":"MemberAccess","referencedDeclaration":14592,"src":"2249:33:84","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_address_$bound_to$_t_address_$","typeString":"function (address,bytes memory) returns (address)"}},"id":14507,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2249:40:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2241:48:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":14509,"nodeType":"ExpressionStatement","src":"2241:48:84"},{"eventCall":{"arguments":[{"id":14511,"name":"proxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14501,"src":"2325:5:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":14510,"name":"ProxyCreated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14464,"src":"2304:12:84","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":14512,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":["2318:5:84"],"names":["proxy"],"nodeType":"FunctionCall","src":"2304:28:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14513,"nodeType":"EmitStatement","src":"2299:33:84"}]},"documentation":{"id":14496,"nodeType":"StructuredDocumentation","src":"1707:438:84","text":"@notice Creates an [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167) minimal proxy contract pointing to the pre-set logic contract.\n @param _data The initialization data for this contract.\n @return proxy The address of the proxy contract created.\n @dev If `_data` is non-empty, it is used in a call to the clone contract. This will typically be an encoded function call initializing the storage of the contract."},"functionSelector":"93042ea3","id":14515,"implemented":true,"kind":"function","modifiers":[],"name":"deployMinimalProxy","nameLocation":"2159:18:84","nodeType":"FunctionDefinition","parameters":{"id":14499,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14498,"mutability":"mutable","name":"_data","nameLocation":"2191:5:84","nodeType":"VariableDeclaration","scope":14515,"src":"2178:18:84","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":14497,"name":"bytes","nodeType":"ElementaryTypeName","src":"2178:5:84","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2177:20:84"},"returnParameters":{"id":14502,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14501,"mutability":"mutable","name":"proxy","nameLocation":"2224:5:84","nodeType":"VariableDeclaration","scope":14515,"src":"2216:13:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14500,"name":"address","nodeType":"ElementaryTypeName","src":"2216:7:84","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2215:15:84"},"scope":14525,"src":"2150:189:84","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":14523,"nodeType":"Block","src":"2754:38:84","statements":[{"expression":{"id":14521,"name":"IMPLEMENTATION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14459,"src":"2771:14:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":14520,"id":14522,"nodeType":"Return","src":"2764:21:84"}]},"documentation":{"id":14516,"nodeType":"StructuredDocumentation","src":"2345:348:84","text":"@notice Returns the implementation contract address.\n @return The address of the implementation contract.\n @dev The implementation can be cloned via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)), or proxied via the UUPS proxy pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822))."},"functionSelector":"5c60da1b","id":14524,"implemented":true,"kind":"function","modifiers":[],"name":"implementation","nameLocation":"2707:14:84","nodeType":"FunctionDefinition","parameters":{"id":14517,"nodeType":"ParameterList","parameters":[],"src":"2721:2:84"},"returnParameters":{"id":14520,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14519,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14524,"src":"2745:7:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14518,"name":"address","nodeType":"ElementaryTypeName","src":"2745:7:84","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2744:9:84"},"scope":14525,"src":"2698:94:84","stateMutability":"view","virtual":false,"visibility":"public"}],"scope":14526,"src":"415:2379:84","usedErrors":[]}],"src":"47:2748:84"},"id":84},"src/utils/deployment/ProxyLib.sol":{"ast":{"absolutePath":"src/utils/deployment/ProxyLib.sol","exportedSymbols":{"Address":[9264],"Clones":[5352],"ERC1967Proxy":[5389],"ProxyLib":[14593]},"id":14594,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":14527,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:85"},{"absolutePath":"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol","file":"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol","id":14529,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":14594,"sourceUnit":5390,"src":"72:84:85","symbolAliases":[{"foreign":{"id":14528,"name":"ERC1967Proxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5389,"src":"80:12:85","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/proxy/Clones.sol","file":"@openzeppelin/contracts/proxy/Clones.sol","id":14531,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":14594,"sourceUnit":5353,"src":"157:64:85","symbolAliases":[{"foreign":{"id":14530,"name":"Clones","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5352,"src":"165:6:85","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Address.sol","file":"@openzeppelin/contracts/utils/Address.sol","id":14533,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":14594,"sourceUnit":9265,"src":"222:66:85","symbolAliases":[{"foreign":{"id":14532,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9264,"src":"230:7:85","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"ProxyLib","contractDependencies":[],"contractKind":"library","documentation":{"id":14534,"nodeType":"StructuredDocumentation","src":"290:328:85","text":"@title ProxyLib\n @author Aragon X - 2024\n @notice A library containing methods for the deployment of proxies via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)) and minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)).\n @custom:security-contact sirt@aragon.org"},"fullyImplemented":true,"id":14593,"linearizedBaseContracts":[14593],"name":"ProxyLib","nameLocation":"626:8:85","nodeType":"ContractDefinition","nodes":[{"global":false,"id":14537,"libraryName":{"id":14535,"name":"Address","nameLocations":["647:7:85"],"nodeType":"IdentifierPath","referencedDeclaration":9264,"src":"647:7:85"},"nodeType":"UsingForDirective","src":"641:26:85","typeName":{"id":14536,"name":"address","nodeType":"ElementaryTypeName","src":"659:7:85","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},{"global":false,"id":14540,"libraryName":{"id":14538,"name":"Clones","nameLocations":["678:6:85"],"nodeType":"IdentifierPath","referencedDeclaration":5352,"src":"678:6:85"},"nodeType":"UsingForDirective","src":"672:25:85","typeName":{"id":14539,"name":"address","nodeType":"ElementaryTypeName","src":"689:7:85","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},{"body":{"id":14562,"nodeType":"Block","src":"1543:94:85","statements":[{"expression":{"id":14560,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14550,"name":"uupsProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14548,"src":"1553:9:85","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":14556,"name":"_logic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14543,"src":"1599:6:85","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":14557,"name":"_initCalldata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14545,"src":"1614:13:85","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":14555,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"NewExpression","src":"1573:16:85","typeDescriptions":{"typeIdentifier":"t_function_creation_payable$_t_address_$_t_bytes_memory_ptr_$returns$_t_contract$_ERC1967Proxy_$5389_$","typeString":"function (address,bytes memory) payable returns (contract ERC1967Proxy)"},"typeName":{"id":14554,"nodeType":"UserDefinedTypeName","pathNode":{"id":14553,"name":"ERC1967Proxy","nameLocations":["1577:12:85"],"nodeType":"IdentifierPath","referencedDeclaration":5389,"src":"1577:12:85"},"referencedDeclaration":5389,"src":"1577:12:85","typeDescriptions":{"typeIdentifier":"t_contract$_ERC1967Proxy_$5389","typeString":"contract ERC1967Proxy"}}},"id":14558,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":["1591:6:85","1607:5:85"],"names":["_logic","_data"],"nodeType":"FunctionCall","src":"1573:56:85","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ERC1967Proxy_$5389","typeString":"contract ERC1967Proxy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC1967Proxy_$5389","typeString":"contract ERC1967Proxy"}],"id":14552,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1565:7:85","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":14551,"name":"address","nodeType":"ElementaryTypeName","src":"1565:7:85","typeDescriptions":{}}},"id":14559,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1565:65:85","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1553:77:85","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":14561,"nodeType":"ExpressionStatement","src":"1553:77:85"}]},"documentation":{"id":14541,"nodeType":"StructuredDocumentation","src":"703:707:85","text":"@notice Creates an [ERC-1967](https://eips.ethereum.org/EIPS/eip-1967) UUPS proxy contract pointing to a logic contract and allows to immediately initialize it.\n @param _logic The logic contract the proxy is pointing to.\n @param _initCalldata The initialization data for this contract.\n @return uupsProxy The address of the UUPS proxy contract created.\n @dev If `_initCalldata` is non-empty, it is used in a delegate call to the `_logic` contract. This will typically be an encoded function call initializing the storage of the proxy (see [OpenZeppelin ERC1967Proxy-constructor](https://docs.openzeppelin.com/contracts/4.x/api/proxy#ERC1967Proxy-constructor-address-bytes-))."},"id":14563,"implemented":true,"kind":"function","modifiers":[],"name":"deployUUPSProxy","nameLocation":"1424:15:85","nodeType":"FunctionDefinition","parameters":{"id":14546,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14543,"mutability":"mutable","name":"_logic","nameLocation":"1457:6:85","nodeType":"VariableDeclaration","scope":14563,"src":"1449:14:85","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14542,"name":"address","nodeType":"ElementaryTypeName","src":"1449:7:85","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14545,"mutability":"mutable","name":"_initCalldata","nameLocation":"1486:13:85","nodeType":"VariableDeclaration","scope":14563,"src":"1473:26:85","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":14544,"name":"bytes","nodeType":"ElementaryTypeName","src":"1473:5:85","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1439:66:85"},"returnParameters":{"id":14549,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14548,"mutability":"mutable","name":"uupsProxy","nameLocation":"1532:9:85","nodeType":"VariableDeclaration","scope":14563,"src":"1524:17:85","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14547,"name":"address","nodeType":"ElementaryTypeName","src":"1524:7:85","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1523:19:85"},"scope":14593,"src":"1415:222:85","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":14591,"nodeType":"Block","src":"2371:158:85","statements":[{"expression":{"id":14577,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14573,"name":"minimalProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14571,"src":"2381:12:85","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":14574,"name":"_logic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14566,"src":"2396:6:85","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":14575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2403:5:85","memberName":"clone","nodeType":"MemberAccess","referencedDeclaration":5295,"src":"2396:12:85","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$_t_address_$bound_to$_t_address_$","typeString":"function (address) returns (address)"}},"id":14576,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2396:14:85","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2381:29:85","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":14578,"nodeType":"ExpressionStatement","src":"2381:29:85"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14582,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":14579,"name":"_initCalldata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14568,"src":"2424:13:85","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":14580,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2438:6:85","memberName":"length","nodeType":"MemberAccess","src":"2424:20:85","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":14581,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2447:1:85","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2424:24:85","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14590,"nodeType":"IfStatement","src":"2420:103:85","trueBody":{"id":14589,"nodeType":"Block","src":"2450:73:85","statements":[{"expression":{"arguments":[{"id":14586,"name":"_initCalldata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14568,"src":"2497:13:85","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":14583,"name":"minimalProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14571,"src":"2464:12:85","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":14585,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2477:12:85","memberName":"functionCall","nodeType":"MemberAccess","referencedDeclaration":9004,"src":"2464:25:85","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$bound_to$_t_address_$","typeString":"function (address,bytes memory) returns (bytes memory)"}},"id":14587,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":["2491:4:85"],"names":["data"],"nodeType":"FunctionCall","src":"2464:48:85","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":14588,"nodeType":"ExpressionStatement","src":"2464:48:85"}]}}]},"documentation":{"id":14564,"nodeType":"StructuredDocumentation","src":"1643:589:85","text":"@notice Creates an [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167) minimal proxy contract, also known as clones, pointing to a logic contract and allows to immediately initialize it.\n @param _logic The logic contract the proxy is pointing to.\n @param _initCalldata The initialization data for this contract.\n @return minimalProxy The address of the minimal proxy contract created.\n @dev If `_initCalldata` is non-empty, it is used in a call to the clone contract. This will typically be an encoded function call initializing the storage of the contract."},"id":14592,"implemented":true,"kind":"function","modifiers":[],"name":"deployMinimalProxy","nameLocation":"2246:18:85","nodeType":"FunctionDefinition","parameters":{"id":14569,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14566,"mutability":"mutable","name":"_logic","nameLocation":"2282:6:85","nodeType":"VariableDeclaration","scope":14592,"src":"2274:14:85","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14565,"name":"address","nodeType":"ElementaryTypeName","src":"2274:7:85","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14568,"mutability":"mutable","name":"_initCalldata","nameLocation":"2311:13:85","nodeType":"VariableDeclaration","scope":14592,"src":"2298:26:85","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":14567,"name":"bytes","nodeType":"ElementaryTypeName","src":"2298:5:85","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2264:66:85"},"returnParameters":{"id":14572,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14571,"mutability":"mutable","name":"minimalProxy","nameLocation":"2357:12:85","nodeType":"VariableDeclaration","scope":14592,"src":"2349:20:85","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14570,"name":"address","nodeType":"ElementaryTypeName","src":"2349:7:85","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2348:22:85"},"scope":14593,"src":"2237:292:85","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":14594,"src":"618:1913:85","usedErrors":[]}],"src":"47:2485:85"},"id":85},"src/utils/math/BitMap.sol":{"ast":{"absolutePath":"src/utils/math/BitMap.sol","exportedSymbols":{"flipBit":[14637],"hasBit":[14619]},"id":14638,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":14595,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:86"},{"body":{"id":14618,"nodeType":"Block","src":"373:74:86","statements":[{"assignments":[14606],"declarations":[{"constant":false,"id":14606,"mutability":"mutable","name":"bitValue","nameLocation":"387:8:86","nodeType":"VariableDeclaration","scope":14618,"src":"379:16:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14605,"name":"uint256","nodeType":"ElementaryTypeName","src":"379:7:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":14613,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14612,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14607,"name":"bitmap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14598,"src":"398:6:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14610,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":14608,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"408:1:86","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":14609,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14600,"src":"413:5:86","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"408:10:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":14611,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"407:12:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"398:21:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"379:40:86"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14616,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14614,"name":"bitValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14606,"src":"432:8:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":14615,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"443:1:86","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"432:12:86","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":14604,"id":14617,"nodeType":"Return","src":"425:19:86"}]},"documentation":{"id":14596,"nodeType":"StructuredDocumentation","src":"72:236:86","text":"@param bitmap The `uint256` representation of bits.\n @param index The index number to check whether 1 or 0 is set.\n @return Returns `true` if the bit is set at `index` on `bitmap`.\n @custom:security-contact sirt@aragon.org"},"id":14619,"implemented":true,"kind":"freeFunction","modifiers":[],"name":"hasBit","nameLocation":"317:6:86","nodeType":"FunctionDefinition","parameters":{"id":14601,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14598,"mutability":"mutable","name":"bitmap","nameLocation":"332:6:86","nodeType":"VariableDeclaration","scope":14619,"src":"324:14:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14597,"name":"uint256","nodeType":"ElementaryTypeName","src":"324:7:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14600,"mutability":"mutable","name":"index","nameLocation":"346:5:86","nodeType":"VariableDeclaration","scope":14619,"src":"340:11:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":14599,"name":"uint8","nodeType":"ElementaryTypeName","src":"340:5:86","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"323:29:86"},"returnParameters":{"id":14604,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14603,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14619,"src":"367:4:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":14602,"name":"bool","nodeType":"ElementaryTypeName","src":"367:4:86","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"366:6:86"},"scope":14638,"src":"308:139:86","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":14636,"nodeType":"Block","src":"738:37:86","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14634,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14629,"name":"bitmap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14622,"src":"751:6:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14632,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":14630,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"761:1:86","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":14631,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14624,"src":"766:5:86","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"761:10:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":14633,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"760:12:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"751:21:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":14628,"id":14635,"nodeType":"Return","src":"744:28:86"}]},"documentation":{"id":14620,"nodeType":"StructuredDocumentation","src":"449:220:86","text":"@param bitmap The `uint256` representation of bits.\n @param index The index number to set the bit.\n @return Returns a new number in which the bit is set at `index`.\n @custom:security-contact sirt@aragon.org"},"id":14637,"implemented":true,"kind":"freeFunction","modifiers":[],"name":"flipBit","nameLocation":"678:7:86","nodeType":"FunctionDefinition","parameters":{"id":14625,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14622,"mutability":"mutable","name":"bitmap","nameLocation":"694:6:86","nodeType":"VariableDeclaration","scope":14637,"src":"686:14:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14621,"name":"uint256","nodeType":"ElementaryTypeName","src":"686:7:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14624,"mutability":"mutable","name":"index","nameLocation":"708:5:86","nodeType":"VariableDeclaration","scope":14637,"src":"702:11:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":14623,"name":"uint8","nodeType":"ElementaryTypeName","src":"702:5:86","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"685:29:86"},"returnParameters":{"id":14628,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14627,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14637,"src":"729:7:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14626,"name":"uint256","nodeType":"ElementaryTypeName","src":"729:7:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"728:9:86"},"scope":14638,"src":"669:106:86","stateMutability":"pure","virtual":false,"visibility":"internal"}],"src":"47:729:86"},"id":86},"src/utils/math/Ratio.sol":{"ast":{"absolutePath":"src/utils/math/Ratio.sol","exportedSymbols":{"RATIO_BASE":[14644],"RatioOutOfBounds":[14651],"_applyRatioCeiled":[14698]},"id":14699,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":14639,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:87"},{"constant":true,"id":14644,"mutability":"constant","name":"RATIO_BASE","nameLocation":"202:10:87","nodeType":"VariableDeclaration","scope":14699,"src":"185:37:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14640,"name":"uint256","nodeType":"ElementaryTypeName","src":"185:7:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"commonType":{"typeIdentifier":"t_rational_1000000_by_1","typeString":"int_const 1000000"},"id":14643,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":14641,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"215:2:87","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"36","id":14642,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"221:1:87","typeDescriptions":{"typeIdentifier":"t_rational_6_by_1","typeString":"int_const 6"},"value":"6"},"src":"215:7:87","typeDescriptions":{"typeIdentifier":"t_rational_1000000_by_1","typeString":"int_const 1000000"}},"visibility":"internal"},{"documentation":{"id":14645,"nodeType":"StructuredDocumentation","src":"225:146:87","text":"@notice Thrown if a ratio value exceeds the maximal value of `10**6`.\n @param limit The maximal value.\n @param actual The actual value."},"errorSelector":"cc80c195","id":14651,"name":"RatioOutOfBounds","nameLocation":"377:16:87","nodeType":"ErrorDefinition","parameters":{"id":14650,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14647,"mutability":"mutable","name":"limit","nameLocation":"402:5:87","nodeType":"VariableDeclaration","scope":14651,"src":"394:13:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14646,"name":"uint256","nodeType":"ElementaryTypeName","src":"394:7:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14649,"mutability":"mutable","name":"actual","nameLocation":"417:6:87","nodeType":"VariableDeclaration","scope":14651,"src":"409:14:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14648,"name":"uint256","nodeType":"ElementaryTypeName","src":"409:7:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"393:31:87"},"src":"371:54:87"},{"body":{"id":14697,"nodeType":"Block","src":"795:305:87","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14663,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14661,"name":"_ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14656,"src":"805:6:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":14662,"name":"RATIO_BASE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14644,"src":"814:10:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"805:19:87","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14670,"nodeType":"IfStatement","src":"801:102:87","trueBody":{"id":14669,"nodeType":"Block","src":"826:77:87","statements":[{"errorCall":{"arguments":[{"id":14665,"name":"RATIO_BASE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14644,"src":"868:10:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":14666,"name":"_ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14656,"src":"888:6:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14664,"name":"RatioOutOfBounds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14651,"src":"843:16:87","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256) pure"}},"id":14667,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":["861:5:87","880:6:87"],"names":["limit","actual"],"nodeType":"FunctionCall","src":"843:53:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14668,"nodeType":"RevertStatement","src":"836:60:87"}]}},{"expression":{"id":14675,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14671,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14654,"src":"909:6:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14674,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14672,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14654,"src":"918:6:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":14673,"name":"_ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14656,"src":"927:6:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"918:15:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"909:24:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14676,"nodeType":"ExpressionStatement","src":"909:24:87"},{"assignments":[14678],"declarations":[{"constant":false,"id":14678,"mutability":"mutable","name":"remainder","nameLocation":"947:9:87","nodeType":"VariableDeclaration","scope":14697,"src":"939:17:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14677,"name":"uint256","nodeType":"ElementaryTypeName","src":"939:7:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":14682,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14681,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14679,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14654,"src":"959:6:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"id":14680,"name":"RATIO_BASE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14644,"src":"968:10:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"959:19:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"939:39:87"},{"expression":{"id":14687,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14683,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14659,"src":"984:6:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14686,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14684,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14654,"src":"993:6:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":14685,"name":"RATIO_BASE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14644,"src":"1002:10:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"993:19:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"984:28:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14688,"nodeType":"ExpressionStatement","src":"984:28:87"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14691,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14689,"name":"remainder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14678,"src":"1057:9:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":14690,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1070:1:87","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1057:14:87","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14696,"nodeType":"IfStatement","src":"1053:45:87","trueBody":{"id":14695,"nodeType":"Block","src":"1073:25:87","statements":[{"expression":{"id":14693,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"1083:8:87","subExpression":{"id":14692,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14659,"src":"1085:6:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14694,"nodeType":"ExpressionStatement","src":"1083:8:87"}]}}]},"documentation":{"id":14652,"nodeType":"StructuredDocumentation","src":"427:279:87","text":"@notice Applies a ratio to a value and ceils the remainder.\n @param _value The value to which the ratio is applied.\n @param _ratio The ratio that must be in the interval `[0, 10**6]`.\n @return result The resulting value.\n @custom:security-contact sirt@aragon.org"},"id":14698,"implemented":true,"kind":"freeFunction","modifiers":[],"name":"_applyRatioCeiled","nameLocation":"715:17:87","nodeType":"FunctionDefinition","parameters":{"id":14657,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14654,"mutability":"mutable","name":"_value","nameLocation":"741:6:87","nodeType":"VariableDeclaration","scope":14698,"src":"733:14:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14653,"name":"uint256","nodeType":"ElementaryTypeName","src":"733:7:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14656,"mutability":"mutable","name":"_ratio","nameLocation":"757:6:87","nodeType":"VariableDeclaration","scope":14698,"src":"749:14:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14655,"name":"uint256","nodeType":"ElementaryTypeName","src":"749:7:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"732:32:87"},"returnParameters":{"id":14660,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14659,"mutability":"mutable","name":"result","nameLocation":"787:6:87","nodeType":"VariableDeclaration","scope":14698,"src":"779:14:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14658,"name":"uint256","nodeType":"ElementaryTypeName","src":"779:7:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"778:16:87"},"scope":14699,"src":"706:394:87","stateMutability":"pure","virtual":false,"visibility":"internal"}],"src":"47:1054:87"},"id":87},"src/utils/math/UncheckedMath.sol":{"ast":{"absolutePath":"src/utils/math/UncheckedMath.sol","exportedSymbols":{"_uncheckedAdd":[14716],"_uncheckedSub":[14732]},"id":14733,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":14700,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:88"},{"body":{"id":14715,"nodeType":"Block","src":"377:47:88","statements":[{"id":14714,"nodeType":"UncheckedBlock","src":"383:39:88","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14712,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14710,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14703,"src":"410:1:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":14711,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14705,"src":"414:1:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"410:5:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":14709,"id":14713,"nodeType":"Return","src":"403:12:88"}]}]},"documentation":{"id":14701,"nodeType":"StructuredDocumentation","src":"72:237:88","text":"@notice Adds two unsigned integers without checking the result for overflow errors (using safe math).\n @param a The first summand.\n @param b The second summand.\n @return The sum.\n @custom:security-contact sirt@aragon.org"},"id":14716,"implemented":true,"kind":"freeFunction","modifiers":[],"name":"_uncheckedAdd","nameLocation":"318:13:88","nodeType":"FunctionDefinition","parameters":{"id":14706,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14703,"mutability":"mutable","name":"a","nameLocation":"340:1:88","nodeType":"VariableDeclaration","scope":14716,"src":"332:9:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14702,"name":"uint256","nodeType":"ElementaryTypeName","src":"332:7:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14705,"mutability":"mutable","name":"b","nameLocation":"351:1:88","nodeType":"VariableDeclaration","scope":14716,"src":"343:9:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14704,"name":"uint256","nodeType":"ElementaryTypeName","src":"343:7:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"331:22:88"},"returnParameters":{"id":14709,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14708,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14716,"src":"368:7:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14707,"name":"uint256","nodeType":"ElementaryTypeName","src":"368:7:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"367:9:88"},"scope":14733,"src":"309:115:88","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":14731,"nodeType":"Block","src":"733:47:88","statements":[{"id":14730,"nodeType":"UncheckedBlock","src":"739:39:88","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14728,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14726,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14719,"src":"766:1:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":14727,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14721,"src":"770:1:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"766:5:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":14725,"id":14729,"nodeType":"Return","src":"759:12:88"}]}]},"documentation":{"id":14717,"nodeType":"StructuredDocumentation","src":"426:239:88","text":"@notice Subtracts two unsigned integers without checking the result for overflow errors (using safe math).\n @param a The minuend.\n @param b The subtrahend.\n @return The difference.\n @custom:security-contact sirt@aragon.org"},"id":14732,"implemented":true,"kind":"freeFunction","modifiers":[],"name":"_uncheckedSub","nameLocation":"674:13:88","nodeType":"FunctionDefinition","parameters":{"id":14722,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14719,"mutability":"mutable","name":"a","nameLocation":"696:1:88","nodeType":"VariableDeclaration","scope":14732,"src":"688:9:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14718,"name":"uint256","nodeType":"ElementaryTypeName","src":"688:7:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14721,"mutability":"mutable","name":"b","nameLocation":"707:1:88","nodeType":"VariableDeclaration","scope":14732,"src":"699:9:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14720,"name":"uint256","nodeType":"ElementaryTypeName","src":"699:7:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"687:22:88"},"returnParameters":{"id":14725,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14724,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14732,"src":"724:7:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14723,"name":"uint256","nodeType":"ElementaryTypeName","src":"724:7:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"723:9:88"},"scope":14733,"src":"665:115:88","stateMutability":"pure","virtual":false,"visibility":"internal"}],"src":"47:734:88"},"id":88},"src/utils/versioning/IProtocolVersion.sol":{"ast":{"absolutePath":"src/utils/versioning/IProtocolVersion.sol","exportedSymbols":{"IProtocolVersion":[14744]},"id":14745,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":14734,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:89"},{"abstract":false,"baseContracts":[],"canonicalName":"IProtocolVersion","contractDependencies":[],"contractKind":"interface","documentation":{"id":14735,"nodeType":"StructuredDocumentation","src":"72:189:89","text":"@title IProtocolVersion\n @author Aragon X - 2022-2023\n @notice An interface defining the semantic Aragon OSx protocol version number.\n @custom:security-contact sirt@aragon.org"},"fullyImplemented":false,"id":14744,"linearizedBaseContracts":[14744],"name":"IProtocolVersion","nameLocation":"271:16:89","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":14736,"nodeType":"StructuredDocumentation","src":"294:444:89","text":"@notice Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\n @return _version Returns the semantic Aragon OSx protocol version number.\n @dev This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts."},"functionSelector":"2ae9c600","id":14743,"implemented":false,"kind":"function","modifiers":[],"name":"protocolVersion","nameLocation":"752:15:89","nodeType":"FunctionDefinition","parameters":{"id":14737,"nodeType":"ParameterList","parameters":[],"src":"767:2:89"},"returnParameters":{"id":14742,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14741,"mutability":"mutable","name":"_version","nameLocation":"809:8:89","nodeType":"VariableDeclaration","scope":14743,"src":"793:24:89","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3]"},"typeName":{"baseType":{"id":14738,"name":"uint8","nodeType":"ElementaryTypeName","src":"793:5:89","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":14740,"length":{"hexValue":"33","id":14739,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"799:1:89","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"ArrayTypeName","src":"793:8:89","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_storage_ptr","typeString":"uint8[3]"}},"visibility":"internal"}],"src":"792:26:89"},"scope":14744,"src":"743:76:89","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":14745,"src":"261:560:89","usedErrors":[]}],"src":"47:775:89"},"id":89},"src/utils/versioning/ProtocolVersion.sol":{"ast":{"absolutePath":"src/utils/versioning/ProtocolVersion.sol","exportedSymbols":{"IProtocolVersion":[14744],"ProtocolVersion":[14766]},"id":14767,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":14746,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:90"},{"absolutePath":"src/utils/versioning/IProtocolVersion.sol","file":"./IProtocolVersion.sol","id":14748,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":14767,"sourceUnit":14745,"src":"72:56:90","symbolAliases":[{"foreign":{"id":14747,"name":"IProtocolVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14744,"src":"80:16:90","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":14750,"name":"IProtocolVersion","nameLocations":["497:16:90"],"nodeType":"IdentifierPath","referencedDeclaration":14744,"src":"497:16:90"},"id":14751,"nodeType":"InheritanceSpecifier","src":"497:16:90"}],"canonicalName":"ProtocolVersion","contractDependencies":[],"contractKind":"contract","documentation":{"id":14749,"nodeType":"StructuredDocumentation","src":"130:330:90","text":"@title ProtocolVersion\n @author Aragon X - 2023\n @notice An abstract, stateless, non-upgradeable contract providing the current Aragon OSx protocol version number.\n @dev Do not add any new variables to this contract that would shift down storage in the inheritance chain.\n @custom:security-contact sirt@aragon.org"},"fullyImplemented":true,"id":14766,"linearizedBaseContracts":[14766,14744],"name":"ProtocolVersion","nameLocation":"478:15:90","nodeType":"ContractDefinition","nodes":[{"baseFunctions":[14743],"body":{"id":14764,"nodeType":"Block","src":"696:33:90","statements":[{"expression":{"components":[{"hexValue":"31","id":14759,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"714:1:90","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},{"hexValue":"34","id":14760,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"717:1:90","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},{"hexValue":"30","id":14761,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"720:1:90","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":14762,"isConstant":false,"isInlineArray":true,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"713:9:90","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}},"functionReturnParameters":14758,"id":14763,"nodeType":"Return","src":"706:16:90"}]},"documentation":{"id":14752,"nodeType":"StructuredDocumentation","src":"594:32:90","text":"@inheritdoc IProtocolVersion"},"functionSelector":"2ae9c600","id":14765,"implemented":true,"kind":"function","modifiers":[],"name":"protocolVersion","nameLocation":"640:15:90","nodeType":"FunctionDefinition","parameters":{"id":14753,"nodeType":"ParameterList","parameters":[],"src":"655:2:90"},"returnParameters":{"id":14758,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14757,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14765,"src":"679:15:90","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3]"},"typeName":{"baseType":{"id":14754,"name":"uint8","nodeType":"ElementaryTypeName","src":"679:5:90","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":14756,"length":{"hexValue":"33","id":14755,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"685:1:90","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"ArrayTypeName","src":"679:8:90","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_storage_ptr","typeString":"uint8[3]"}},"visibility":"internal"}],"src":"678:17:90"},"scope":14766,"src":"631:98:90","stateMutability":"pure","virtual":false,"visibility":"public"}],"scope":14767,"src":"460:271:90","usedErrors":[]}],"src":"47:685:90"},"id":90},"src/utils/versioning/VersionComparisonLib.sol":{"ast":{"absolutePath":"src/utils/versioning/VersionComparisonLib.sol","exportedSymbols":{"VersionComparisonLib":[15132]},"id":15133,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":14768,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:91"},{"abstract":false,"baseContracts":[],"canonicalName":"VersionComparisonLib","contractDependencies":[],"contractKind":"library","documentation":{"id":14769,"nodeType":"StructuredDocumentation","src":"72:225:91","text":"@title VersionComparisonLib\n @author Aragon X - 2023\n @notice A library containing methods for [semantic version number](https://semver.org/spec/v2.0.0.html) comparison.\n @custom:security-contact sirt@aragon.org"},"fullyImplemented":true,"id":15132,"linearizedBaseContracts":[15132],"name":"VersionComparisonLib","nameLocation":"305:20:91","nodeType":"ContractDefinition","nodes":[{"body":{"id":14815,"nodeType":"Block","src":"670:163:91","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":14789,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":14783,"name":"lhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14774,"src":"684:3:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}},"id":14785,"indexExpression":{"hexValue":"30","id":14784,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"688:1:91","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"684:6:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"baseExpression":{"id":14786,"name":"rhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14778,"src":"694:3:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}},"id":14788,"indexExpression":{"hexValue":"30","id":14787,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"698:1:91","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"694:6:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"684:16:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14792,"nodeType":"IfStatement","src":"680:34:91","trueBody":{"expression":{"hexValue":"66616c7365","id":14790,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"709:5:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":14782,"id":14791,"nodeType":"Return","src":"702:12:91"}},{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":14799,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":14793,"name":"lhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14774,"src":"729:3:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}},"id":14795,"indexExpression":{"hexValue":"31","id":14794,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"733:1:91","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"729:6:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"baseExpression":{"id":14796,"name":"rhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14778,"src":"739:3:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}},"id":14798,"indexExpression":{"hexValue":"31","id":14797,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"743:1:91","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"739:6:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"729:16:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14802,"nodeType":"IfStatement","src":"725:34:91","trueBody":{"expression":{"hexValue":"66616c7365","id":14800,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"754:5:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":14782,"id":14801,"nodeType":"Return","src":"747:12:91"}},{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":14809,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":14803,"name":"lhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14774,"src":"774:3:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}},"id":14805,"indexExpression":{"hexValue":"32","id":14804,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"778:1:91","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"774:6:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"baseExpression":{"id":14806,"name":"rhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14778,"src":"784:3:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}},"id":14808,"indexExpression":{"hexValue":"32","id":14807,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"788:1:91","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"784:6:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"774:16:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14812,"nodeType":"IfStatement","src":"770:34:91","trueBody":{"expression":{"hexValue":"66616c7365","id":14810,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"799:5:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":14782,"id":14811,"nodeType":"Return","src":"792:12:91"}},{"expression":{"hexValue":"74727565","id":14813,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"822:4:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":14782,"id":14814,"nodeType":"Return","src":"815:11:91"}]},"documentation":{"id":14770,"nodeType":"StructuredDocumentation","src":"332:250:91","text":"@notice Equality comparator for two semantic version numbers.\n @param lhs The left-hand side semantic version number.\n @param rhs The right-hand side semantic version number.\n @return Whether the two numbers are equal or not."},"id":14816,"implemented":true,"kind":"function","modifiers":[],"name":"eq","nameLocation":"596:2:91","nodeType":"FunctionDefinition","parameters":{"id":14779,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14774,"mutability":"mutable","name":"lhs","nameLocation":"615:3:91","nodeType":"VariableDeclaration","scope":14816,"src":"599:19:91","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3]"},"typeName":{"baseType":{"id":14771,"name":"uint8","nodeType":"ElementaryTypeName","src":"599:5:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":14773,"length":{"hexValue":"33","id":14772,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"605:1:91","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"ArrayTypeName","src":"599:8:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_storage_ptr","typeString":"uint8[3]"}},"visibility":"internal"},{"constant":false,"id":14778,"mutability":"mutable","name":"rhs","nameLocation":"636:3:91","nodeType":"VariableDeclaration","scope":14816,"src":"620:19:91","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3]"},"typeName":{"baseType":{"id":14775,"name":"uint8","nodeType":"ElementaryTypeName","src":"620:5:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":14777,"length":{"hexValue":"33","id":14776,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"626:1:91","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"ArrayTypeName","src":"620:8:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_storage_ptr","typeString":"uint8[3]"}},"visibility":"internal"}],"src":"598:42:91"},"returnParameters":{"id":14782,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14781,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14816,"src":"664:4:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":14780,"name":"bool","nodeType":"ElementaryTypeName","src":"664:4:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"663:6:91"},"scope":15132,"src":"587:246:91","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":14862,"nodeType":"Block","src":"1182:161:91","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":14836,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":14830,"name":"lhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14821,"src":"1196:3:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}},"id":14832,"indexExpression":{"hexValue":"30","id":14831,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1200:1:91","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1196:6:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"baseExpression":{"id":14833,"name":"rhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14825,"src":"1206:3:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}},"id":14835,"indexExpression":{"hexValue":"30","id":14834,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1210:1:91","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1206:6:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"1196:16:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14839,"nodeType":"IfStatement","src":"1192:33:91","trueBody":{"expression":{"hexValue":"74727565","id":14837,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1221:4:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":14829,"id":14838,"nodeType":"Return","src":"1214:11:91"}},{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":14846,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":14840,"name":"lhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14821,"src":"1240:3:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}},"id":14842,"indexExpression":{"hexValue":"31","id":14841,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1244:1:91","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1240:6:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"baseExpression":{"id":14843,"name":"rhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14825,"src":"1250:3:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}},"id":14845,"indexExpression":{"hexValue":"31","id":14844,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1254:1:91","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1250:6:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"1240:16:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14849,"nodeType":"IfStatement","src":"1236:33:91","trueBody":{"expression":{"hexValue":"74727565","id":14847,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1265:4:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":14829,"id":14848,"nodeType":"Return","src":"1258:11:91"}},{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":14856,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":14850,"name":"lhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14821,"src":"1284:3:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}},"id":14852,"indexExpression":{"hexValue":"32","id":14851,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1288:1:91","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1284:6:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"baseExpression":{"id":14853,"name":"rhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14825,"src":"1294:3:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}},"id":14855,"indexExpression":{"hexValue":"32","id":14854,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1298:1:91","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1294:6:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"1284:16:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14859,"nodeType":"IfStatement","src":"1280:33:91","trueBody":{"expression":{"hexValue":"74727565","id":14857,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1309:4:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":14829,"id":14858,"nodeType":"Return","src":"1302:11:91"}},{"expression":{"hexValue":"66616c7365","id":14860,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1331:5:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":14829,"id":14861,"nodeType":"Return","src":"1324:12:91"}]},"documentation":{"id":14817,"nodeType":"StructuredDocumentation","src":"839:254:91","text":"@notice Inequality comparator for two semantic version numbers.\n @param lhs The left-hand side semantic version number.\n @param rhs The right-hand side semantic version number.\n @return Whether the two numbers are inequal or not."},"id":14863,"implemented":true,"kind":"function","modifiers":[],"name":"neq","nameLocation":"1107:3:91","nodeType":"FunctionDefinition","parameters":{"id":14826,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14821,"mutability":"mutable","name":"lhs","nameLocation":"1127:3:91","nodeType":"VariableDeclaration","scope":14863,"src":"1111:19:91","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3]"},"typeName":{"baseType":{"id":14818,"name":"uint8","nodeType":"ElementaryTypeName","src":"1111:5:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":14820,"length":{"hexValue":"33","id":14819,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1117:1:91","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"ArrayTypeName","src":"1111:8:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_storage_ptr","typeString":"uint8[3]"}},"visibility":"internal"},{"constant":false,"id":14825,"mutability":"mutable","name":"rhs","nameLocation":"1148:3:91","nodeType":"VariableDeclaration","scope":14863,"src":"1132:19:91","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3]"},"typeName":{"baseType":{"id":14822,"name":"uint8","nodeType":"ElementaryTypeName","src":"1132:5:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":14824,"length":{"hexValue":"33","id":14823,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1138:1:91","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"ArrayTypeName","src":"1132:8:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_storage_ptr","typeString":"uint8[3]"}},"visibility":"internal"}],"src":"1110:42:91"},"returnParameters":{"id":14829,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14828,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14863,"src":"1176:4:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":14827,"name":"bool","nodeType":"ElementaryTypeName","src":"1176:4:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1175:6:91"},"scope":15132,"src":"1098:245:91","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":14929,"nodeType":"Block","src":"1710:244:91","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":14883,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":14877,"name":"lhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14868,"src":"1724:3:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}},"id":14879,"indexExpression":{"hexValue":"30","id":14878,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1728:1:91","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1724:6:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"baseExpression":{"id":14880,"name":"rhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14872,"src":"1733:3:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}},"id":14882,"indexExpression":{"hexValue":"30","id":14881,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1737:1:91","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1733:6:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"1724:15:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14886,"nodeType":"IfStatement","src":"1720:32:91","trueBody":{"expression":{"hexValue":"74727565","id":14884,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1748:4:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":14876,"id":14885,"nodeType":"Return","src":"1741:11:91"}},{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":14893,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":14887,"name":"lhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14868,"src":"1766:3:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}},"id":14889,"indexExpression":{"hexValue":"30","id":14888,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1770:1:91","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1766:6:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"baseExpression":{"id":14890,"name":"rhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14872,"src":"1775:3:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}},"id":14892,"indexExpression":{"hexValue":"30","id":14891,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1779:1:91","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1775:6:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"1766:15:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14896,"nodeType":"IfStatement","src":"1762:33:91","trueBody":{"expression":{"hexValue":"66616c7365","id":14894,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1790:5:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":14876,"id":14895,"nodeType":"Return","src":"1783:12:91"}},{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":14903,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":14897,"name":"lhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14868,"src":"1810:3:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}},"id":14899,"indexExpression":{"hexValue":"31","id":14898,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1814:1:91","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1810:6:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"baseExpression":{"id":14900,"name":"rhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14872,"src":"1819:3:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}},"id":14902,"indexExpression":{"hexValue":"31","id":14901,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1823:1:91","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1819:6:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"1810:15:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14906,"nodeType":"IfStatement","src":"1806:32:91","trueBody":{"expression":{"hexValue":"74727565","id":14904,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1834:4:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":14876,"id":14905,"nodeType":"Return","src":"1827:11:91"}},{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":14913,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":14907,"name":"lhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14868,"src":"1852:3:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}},"id":14909,"indexExpression":{"hexValue":"31","id":14908,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1856:1:91","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1852:6:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"baseExpression":{"id":14910,"name":"rhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14872,"src":"1861:3:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}},"id":14912,"indexExpression":{"hexValue":"31","id":14911,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1865:1:91","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1861:6:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"1852:15:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14916,"nodeType":"IfStatement","src":"1848:33:91","trueBody":{"expression":{"hexValue":"66616c7365","id":14914,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1876:5:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":14876,"id":14915,"nodeType":"Return","src":"1869:12:91"}},{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":14923,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":14917,"name":"lhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14868,"src":"1896:3:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}},"id":14919,"indexExpression":{"hexValue":"32","id":14918,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1900:1:91","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1896:6:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"baseExpression":{"id":14920,"name":"rhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14872,"src":"1905:3:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}},"id":14922,"indexExpression":{"hexValue":"32","id":14921,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1909:1:91","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1905:6:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"1896:15:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14926,"nodeType":"IfStatement","src":"1892:32:91","trueBody":{"expression":{"hexValue":"74727565","id":14924,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1920:4:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":14876,"id":14925,"nodeType":"Return","src":"1913:11:91"}},{"expression":{"hexValue":"66616c7365","id":14927,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1942:5:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":14876,"id":14928,"nodeType":"Return","src":"1935:12:91"}]},"documentation":{"id":14864,"nodeType":"StructuredDocumentation","src":"1349:273:91","text":"@notice Less than comparator for two semantic version numbers.\n @param lhs The left-hand side semantic version number.\n @param rhs The right-hand side semantic version number.\n @return Whether the first number is less than the second number or not."},"id":14930,"implemented":true,"kind":"function","modifiers":[],"name":"lt","nameLocation":"1636:2:91","nodeType":"FunctionDefinition","parameters":{"id":14873,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14868,"mutability":"mutable","name":"lhs","nameLocation":"1655:3:91","nodeType":"VariableDeclaration","scope":14930,"src":"1639:19:91","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3]"},"typeName":{"baseType":{"id":14865,"name":"uint8","nodeType":"ElementaryTypeName","src":"1639:5:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":14867,"length":{"hexValue":"33","id":14866,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1645:1:91","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"ArrayTypeName","src":"1639:8:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_storage_ptr","typeString":"uint8[3]"}},"visibility":"internal"},{"constant":false,"id":14872,"mutability":"mutable","name":"rhs","nameLocation":"1676:3:91","nodeType":"VariableDeclaration","scope":14930,"src":"1660:19:91","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3]"},"typeName":{"baseType":{"id":14869,"name":"uint8","nodeType":"ElementaryTypeName","src":"1660:5:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":14871,"length":{"hexValue":"33","id":14870,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1666:1:91","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"ArrayTypeName","src":"1660:8:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_storage_ptr","typeString":"uint8[3]"}},"visibility":"internal"}],"src":"1638:42:91"},"returnParameters":{"id":14876,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14875,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14930,"src":"1704:4:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":14874,"name":"bool","nodeType":"ElementaryTypeName","src":"1704:4:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1703:6:91"},"scope":15132,"src":"1627:327:91","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":14996,"nodeType":"Block","src":"2346:245:91","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":14950,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":14944,"name":"lhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14935,"src":"2360:3:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}},"id":14946,"indexExpression":{"hexValue":"30","id":14945,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2364:1:91","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2360:6:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"baseExpression":{"id":14947,"name":"rhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14939,"src":"2369:3:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}},"id":14949,"indexExpression":{"hexValue":"30","id":14948,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2373:1:91","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2369:6:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"2360:15:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14953,"nodeType":"IfStatement","src":"2356:32:91","trueBody":{"expression":{"hexValue":"74727565","id":14951,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2384:4:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":14943,"id":14952,"nodeType":"Return","src":"2377:11:91"}},{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":14960,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":14954,"name":"lhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14935,"src":"2402:3:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}},"id":14956,"indexExpression":{"hexValue":"30","id":14955,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2406:1:91","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2402:6:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"baseExpression":{"id":14957,"name":"rhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14939,"src":"2411:3:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}},"id":14959,"indexExpression":{"hexValue":"30","id":14958,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2415:1:91","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2411:6:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"2402:15:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14963,"nodeType":"IfStatement","src":"2398:33:91","trueBody":{"expression":{"hexValue":"66616c7365","id":14961,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2426:5:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":14943,"id":14962,"nodeType":"Return","src":"2419:12:91"}},{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":14970,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":14964,"name":"lhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14935,"src":"2446:3:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}},"id":14966,"indexExpression":{"hexValue":"31","id":14965,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2450:1:91","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2446:6:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"baseExpression":{"id":14967,"name":"rhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14939,"src":"2455:3:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}},"id":14969,"indexExpression":{"hexValue":"31","id":14968,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2459:1:91","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2455:6:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"2446:15:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14973,"nodeType":"IfStatement","src":"2442:32:91","trueBody":{"expression":{"hexValue":"74727565","id":14971,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2470:4:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":14943,"id":14972,"nodeType":"Return","src":"2463:11:91"}},{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":14980,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":14974,"name":"lhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14935,"src":"2488:3:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}},"id":14976,"indexExpression":{"hexValue":"31","id":14975,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2492:1:91","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2488:6:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"baseExpression":{"id":14977,"name":"rhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14939,"src":"2497:3:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}},"id":14979,"indexExpression":{"hexValue":"31","id":14978,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2501:1:91","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2497:6:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"2488:15:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14983,"nodeType":"IfStatement","src":"2484:33:91","trueBody":{"expression":{"hexValue":"66616c7365","id":14981,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2512:5:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":14943,"id":14982,"nodeType":"Return","src":"2505:12:91"}},{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":14990,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":14984,"name":"lhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14935,"src":"2532:3:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}},"id":14986,"indexExpression":{"hexValue":"32","id":14985,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2536:1:91","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2532:6:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"baseExpression":{"id":14987,"name":"rhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14939,"src":"2542:3:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}},"id":14989,"indexExpression":{"hexValue":"32","id":14988,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2546:1:91","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2542:6:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"2532:16:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14993,"nodeType":"IfStatement","src":"2528:33:91","trueBody":{"expression":{"hexValue":"74727565","id":14991,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2557:4:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":14943,"id":14992,"nodeType":"Return","src":"2550:11:91"}},{"expression":{"hexValue":"66616c7365","id":14994,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2579:5:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":14943,"id":14995,"nodeType":"Return","src":"2572:12:91"}]},"documentation":{"id":14931,"nodeType":"StructuredDocumentation","src":"1960:297:91","text":"@notice Less than or equal to comparator for two semantic version numbers.\n @param lhs The left-hand side semantic version number.\n @param rhs The right-hand side semantic version number.\n @return Whether the first number is less than or equal to the second number or not."},"id":14997,"implemented":true,"kind":"function","modifiers":[],"name":"lte","nameLocation":"2271:3:91","nodeType":"FunctionDefinition","parameters":{"id":14940,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14935,"mutability":"mutable","name":"lhs","nameLocation":"2291:3:91","nodeType":"VariableDeclaration","scope":14997,"src":"2275:19:91","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3]"},"typeName":{"baseType":{"id":14932,"name":"uint8","nodeType":"ElementaryTypeName","src":"2275:5:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":14934,"length":{"hexValue":"33","id":14933,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2281:1:91","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"ArrayTypeName","src":"2275:8:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_storage_ptr","typeString":"uint8[3]"}},"visibility":"internal"},{"constant":false,"id":14939,"mutability":"mutable","name":"rhs","nameLocation":"2312:3:91","nodeType":"VariableDeclaration","scope":14997,"src":"2296:19:91","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3]"},"typeName":{"baseType":{"id":14936,"name":"uint8","nodeType":"ElementaryTypeName","src":"2296:5:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":14938,"length":{"hexValue":"33","id":14937,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2302:1:91","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"ArrayTypeName","src":"2296:8:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_storage_ptr","typeString":"uint8[3]"}},"visibility":"internal"}],"src":"2274:42:91"},"returnParameters":{"id":14943,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14942,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14997,"src":"2340:4:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":14941,"name":"bool","nodeType":"ElementaryTypeName","src":"2340:4:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2339:6:91"},"scope":15132,"src":"2262:329:91","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":15063,"nodeType":"Block","src":"2964:244:91","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":15017,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":15011,"name":"lhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15002,"src":"2978:3:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}},"id":15013,"indexExpression":{"hexValue":"30","id":15012,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2982:1:91","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2978:6:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"baseExpression":{"id":15014,"name":"rhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15006,"src":"2987:3:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}},"id":15016,"indexExpression":{"hexValue":"30","id":15015,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2991:1:91","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2987:6:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"2978:15:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15020,"nodeType":"IfStatement","src":"2974:32:91","trueBody":{"expression":{"hexValue":"74727565","id":15018,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3002:4:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":15010,"id":15019,"nodeType":"Return","src":"2995:11:91"}},{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":15027,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":15021,"name":"lhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15002,"src":"3020:3:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}},"id":15023,"indexExpression":{"hexValue":"30","id":15022,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3024:1:91","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3020:6:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"baseExpression":{"id":15024,"name":"rhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15006,"src":"3029:3:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}},"id":15026,"indexExpression":{"hexValue":"30","id":15025,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3033:1:91","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3029:6:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"3020:15:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15030,"nodeType":"IfStatement","src":"3016:33:91","trueBody":{"expression":{"hexValue":"66616c7365","id":15028,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3044:5:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":15010,"id":15029,"nodeType":"Return","src":"3037:12:91"}},{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":15037,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":15031,"name":"lhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15002,"src":"3064:3:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}},"id":15033,"indexExpression":{"hexValue":"31","id":15032,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3068:1:91","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3064:6:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"baseExpression":{"id":15034,"name":"rhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15006,"src":"3073:3:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}},"id":15036,"indexExpression":{"hexValue":"31","id":15035,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3077:1:91","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3073:6:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"3064:15:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15040,"nodeType":"IfStatement","src":"3060:32:91","trueBody":{"expression":{"hexValue":"74727565","id":15038,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3088:4:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":15010,"id":15039,"nodeType":"Return","src":"3081:11:91"}},{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":15047,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":15041,"name":"lhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15002,"src":"3106:3:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}},"id":15043,"indexExpression":{"hexValue":"31","id":15042,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3110:1:91","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3106:6:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"baseExpression":{"id":15044,"name":"rhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15006,"src":"3115:3:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}},"id":15046,"indexExpression":{"hexValue":"31","id":15045,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3119:1:91","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3115:6:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"3106:15:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15050,"nodeType":"IfStatement","src":"3102:33:91","trueBody":{"expression":{"hexValue":"66616c7365","id":15048,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3130:5:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":15010,"id":15049,"nodeType":"Return","src":"3123:12:91"}},{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":15057,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":15051,"name":"lhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15002,"src":"3150:3:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}},"id":15053,"indexExpression":{"hexValue":"32","id":15052,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3154:1:91","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3150:6:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"baseExpression":{"id":15054,"name":"rhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15006,"src":"3159:3:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}},"id":15056,"indexExpression":{"hexValue":"32","id":15055,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3163:1:91","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3159:6:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"3150:15:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15060,"nodeType":"IfStatement","src":"3146:32:91","trueBody":{"expression":{"hexValue":"74727565","id":15058,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3174:4:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":15010,"id":15059,"nodeType":"Return","src":"3167:11:91"}},{"expression":{"hexValue":"66616c7365","id":15061,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3196:5:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":15010,"id":15062,"nodeType":"Return","src":"3189:12:91"}]},"documentation":{"id":14998,"nodeType":"StructuredDocumentation","src":"2597:279:91","text":"@notice Greater than comparator for two semantic version numbers.\n @param lhs The left-hand side semantic version number.\n @param rhs The right-hand side semantic version number.\n @return Whether the first number is greater than the second number or not."},"id":15064,"implemented":true,"kind":"function","modifiers":[],"name":"gt","nameLocation":"2890:2:91","nodeType":"FunctionDefinition","parameters":{"id":15007,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15002,"mutability":"mutable","name":"lhs","nameLocation":"2909:3:91","nodeType":"VariableDeclaration","scope":15064,"src":"2893:19:91","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3]"},"typeName":{"baseType":{"id":14999,"name":"uint8","nodeType":"ElementaryTypeName","src":"2893:5:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":15001,"length":{"hexValue":"33","id":15000,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2899:1:91","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"ArrayTypeName","src":"2893:8:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_storage_ptr","typeString":"uint8[3]"}},"visibility":"internal"},{"constant":false,"id":15006,"mutability":"mutable","name":"rhs","nameLocation":"2930:3:91","nodeType":"VariableDeclaration","scope":15064,"src":"2914:19:91","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3]"},"typeName":{"baseType":{"id":15003,"name":"uint8","nodeType":"ElementaryTypeName","src":"2914:5:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":15005,"length":{"hexValue":"33","id":15004,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2920:1:91","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"ArrayTypeName","src":"2914:8:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_storage_ptr","typeString":"uint8[3]"}},"visibility":"internal"}],"src":"2892:42:91"},"returnParameters":{"id":15010,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15009,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":15064,"src":"2958:4:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":15008,"name":"bool","nodeType":"ElementaryTypeName","src":"2958:4:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2957:6:91"},"scope":15132,"src":"2881:327:91","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":15130,"nodeType":"Block","src":"3606:245:91","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":15084,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":15078,"name":"lhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15069,"src":"3620:3:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}},"id":15080,"indexExpression":{"hexValue":"30","id":15079,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3624:1:91","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3620:6:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"baseExpression":{"id":15081,"name":"rhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15073,"src":"3629:3:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}},"id":15083,"indexExpression":{"hexValue":"30","id":15082,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3633:1:91","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3629:6:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"3620:15:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15087,"nodeType":"IfStatement","src":"3616:32:91","trueBody":{"expression":{"hexValue":"74727565","id":15085,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3644:4:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":15077,"id":15086,"nodeType":"Return","src":"3637:11:91"}},{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":15094,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":15088,"name":"lhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15069,"src":"3662:3:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}},"id":15090,"indexExpression":{"hexValue":"30","id":15089,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3666:1:91","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3662:6:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"baseExpression":{"id":15091,"name":"rhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15073,"src":"3671:3:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}},"id":15093,"indexExpression":{"hexValue":"30","id":15092,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3675:1:91","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3671:6:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"3662:15:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15097,"nodeType":"IfStatement","src":"3658:33:91","trueBody":{"expression":{"hexValue":"66616c7365","id":15095,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3686:5:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":15077,"id":15096,"nodeType":"Return","src":"3679:12:91"}},{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":15104,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":15098,"name":"lhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15069,"src":"3706:3:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}},"id":15100,"indexExpression":{"hexValue":"31","id":15099,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3710:1:91","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3706:6:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"baseExpression":{"id":15101,"name":"rhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15073,"src":"3715:3:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}},"id":15103,"indexExpression":{"hexValue":"31","id":15102,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3719:1:91","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3715:6:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"3706:15:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15107,"nodeType":"IfStatement","src":"3702:32:91","trueBody":{"expression":{"hexValue":"74727565","id":15105,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3730:4:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":15077,"id":15106,"nodeType":"Return","src":"3723:11:91"}},{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":15114,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":15108,"name":"lhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15069,"src":"3748:3:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}},"id":15110,"indexExpression":{"hexValue":"31","id":15109,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3752:1:91","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3748:6:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"baseExpression":{"id":15111,"name":"rhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15073,"src":"3757:3:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}},"id":15113,"indexExpression":{"hexValue":"31","id":15112,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3761:1:91","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3757:6:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"3748:15:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15117,"nodeType":"IfStatement","src":"3744:33:91","trueBody":{"expression":{"hexValue":"66616c7365","id":15115,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3772:5:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":15077,"id":15116,"nodeType":"Return","src":"3765:12:91"}},{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":15124,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":15118,"name":"lhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15069,"src":"3792:3:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}},"id":15120,"indexExpression":{"hexValue":"32","id":15119,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3796:1:91","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3792:6:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"baseExpression":{"id":15121,"name":"rhs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15073,"src":"3802:3:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}},"id":15123,"indexExpression":{"hexValue":"32","id":15122,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3806:1:91","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3802:6:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"3792:16:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15127,"nodeType":"IfStatement","src":"3788:33:91","trueBody":{"expression":{"hexValue":"74727565","id":15125,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3817:4:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":15077,"id":15126,"nodeType":"Return","src":"3810:11:91"}},{"expression":{"hexValue":"66616c7365","id":15128,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3839:5:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":15077,"id":15129,"nodeType":"Return","src":"3832:12:91"}]},"documentation":{"id":15065,"nodeType":"StructuredDocumentation","src":"3214:303:91","text":"@notice Greater than or equal to comparator for two semantic version numbers.\n @param lhs The left-hand side semantic version number.\n @param rhs The right-hand side semantic version number.\n @return Whether the first number is greater than or equal to the second number or not."},"id":15131,"implemented":true,"kind":"function","modifiers":[],"name":"gte","nameLocation":"3531:3:91","nodeType":"FunctionDefinition","parameters":{"id":15074,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15069,"mutability":"mutable","name":"lhs","nameLocation":"3551:3:91","nodeType":"VariableDeclaration","scope":15131,"src":"3535:19:91","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3]"},"typeName":{"baseType":{"id":15066,"name":"uint8","nodeType":"ElementaryTypeName","src":"3535:5:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":15068,"length":{"hexValue":"33","id":15067,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3541:1:91","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"ArrayTypeName","src":"3535:8:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_storage_ptr","typeString":"uint8[3]"}},"visibility":"internal"},{"constant":false,"id":15073,"mutability":"mutable","name":"rhs","nameLocation":"3572:3:91","nodeType":"VariableDeclaration","scope":15131,"src":"3556:19:91","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3]"},"typeName":{"baseType":{"id":15070,"name":"uint8","nodeType":"ElementaryTypeName","src":"3556:5:91","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":15072,"length":{"hexValue":"33","id":15071,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3562:1:91","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"ArrayTypeName","src":"3556:8:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_storage_ptr","typeString":"uint8[3]"}},"visibility":"internal"}],"src":"3534:42:91"},"returnParameters":{"id":15077,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15076,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":15131,"src":"3600:4:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":15075,"name":"bool","nodeType":"ElementaryTypeName","src":"3600:4:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3599:6:91"},"scope":15132,"src":"3522:329:91","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":15133,"src":"297:3556:91","usedErrors":[]}],"src":"47:3807:91"},"id":91}},"contracts":{"@openzeppelin/contracts-upgradeable/interfaces/IERC1967Upgradeable.sol":{"IERC1967Upgradeable":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"beacon","type":"address"}],"name":"BeaconUpgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"}],"devdoc":{"details":"ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC. _Available since v4.8.3._","events":{"AdminChanged(address,address)":{"details":"Emitted when the admin account has changed."},"BeaconUpgraded(address)":{"details":"Emitted when the beacon is changed."},"Upgraded(address)":{"details":"Emitted when the implementation is upgraded."}},"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"}],\"devdoc\":{\"details\":\"ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC. _Available since v4.8.3._\",\"events\":{\"AdminChanged(address,address)\":{\"details\":\"Emitted when the admin account has changed.\"},\"BeaconUpgraded(address)\":{\"details\":\"Emitted when the beacon is changed.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/interfaces/IERC1967Upgradeable.sol\":\"IERC1967Upgradeable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/interfaces/IERC1967Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (interfaces/IERC1967.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\\n *\\n * _Available since v4.8.3._\\n */\\ninterface IERC1967Upgradeable {\\n /**\\n * @dev Emitted when the implementation is upgraded.\\n */\\n event Upgraded(address indexed implementation);\\n\\n /**\\n * @dev Emitted when the admin account has changed.\\n */\\n event AdminChanged(address previousAdmin, address newAdmin);\\n\\n /**\\n * @dev Emitted when the beacon is changed.\\n */\\n event BeaconUpgraded(address indexed beacon);\\n}\\n\",\"keccak256\":\"0x47d6e06872b12e72c79d1b5eb55842f860b5fb1207b2317c2358d2766b950a7b\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol":{"IERC1822ProxiableUpgradeable":{"abi":[{"inputs":[],"name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified proxy whose upgrades are fully controlled by the current implementation.","kind":"dev","methods":{"proxiableUUID()":{"details":"Returns the storage slot that the proxiable contract assumes is being used to store the implementation address. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"proxiableUUID()":"52d1902d"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified proxy whose upgrades are fully controlled by the current implementation.\",\"kind\":\"dev\",\"methods\":{\"proxiableUUID()\":{\"details\":\"Returns the storage slot that the proxiable contract assumes is being used to store the implementation address. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol\":\"IERC1822ProxiableUpgradeable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822ProxiableUpgradeable {\\n /**\\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n * address.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy.\\n */\\n function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol":{"ERC1967UpgradeUpgradeable":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"beacon","type":"address"}],"name":"BeaconUpgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"}],"devdoc":{"details":"This abstract contract provides getters and event emitting update functions for https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots. _Available since v4.1._","kind":"dev","methods":{},"stateVariables":{"_ADMIN_SLOT":{"details":"Storage slot with the admin of the contract. This is the keccak-256 hash of \"eip1967.proxy.admin\" subtracted by 1, and is validated in the constructor."},"_BEACON_SLOT":{"details":"The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy. This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor."},"_IMPLEMENTATION_SLOT":{"details":"Storage slot with the address of the current implementation. This is the keccak-256 hash of \"eip1967.proxy.implementation\" subtracted by 1, and is validated in the constructor."},"__gap":{"details":"This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain. See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"}],\"devdoc\":{\"details\":\"This abstract contract provides getters and event emitting update functions for https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots. _Available since v4.1._\",\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"_ADMIN_SLOT\":{\"details\":\"Storage slot with the admin of the contract. This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is validated in the constructor.\"},\"_BEACON_SLOT\":{\"details\":\"The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy. This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\"},\"_IMPLEMENTATION_SLOT\":{\"details\":\"Storage slot with the address of the current implementation. This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is validated in the constructor.\"},\"__gap\":{\"details\":\"This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain. See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol\":\"ERC1967UpgradeUpgradeable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/interfaces/IERC1967Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (interfaces/IERC1967.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\\n *\\n * _Available since v4.8.3._\\n */\\ninterface IERC1967Upgradeable {\\n /**\\n * @dev Emitted when the implementation is upgraded.\\n */\\n event Upgraded(address indexed implementation);\\n\\n /**\\n * @dev Emitted when the admin account has changed.\\n */\\n event AdminChanged(address previousAdmin, address newAdmin);\\n\\n /**\\n * @dev Emitted when the beacon is changed.\\n */\\n event BeaconUpgraded(address indexed beacon);\\n}\\n\",\"keccak256\":\"0x47d6e06872b12e72c79d1b5eb55842f860b5fb1207b2317c2358d2766b950a7b\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822ProxiableUpgradeable {\\n /**\\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n * address.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy.\\n */\\n function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../beacon/IBeaconUpgradeable.sol\\\";\\nimport \\\"../../interfaces/IERC1967Upgradeable.sol\\\";\\nimport \\\"../../interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\nimport \\\"../../utils/StorageSlotUpgradeable.sol\\\";\\nimport {Initializable} from \\\"../utils/Initializable.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n */\\nabstract contract ERC1967UpgradeUpgradeable is Initializable, IERC1967Upgradeable {\\n // This is the keccak-256 hash of \\\"eip1967.proxy.rollback\\\" subtracted by 1\\n bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n /**\\n * @dev Storage slot with the address of the current implementation.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n function __ERC1967Upgrade_init() internal onlyInitializing {\\n }\\n\\n function __ERC1967Upgrade_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _getImplementation() internal view returns (address) {\\n return StorageSlotUpgradeable.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 implementation slot.\\n */\\n function _setImplementation(address newImplementation) private {\\n require(AddressUpgradeable.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n StorageSlotUpgradeable.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n }\\n\\n /**\\n * @dev Perform implementation upgrade\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeTo(address newImplementation) internal {\\n _setImplementation(newImplementation);\\n emit Upgraded(newImplementation);\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCall(address newImplementation, bytes memory data, bool forceCall) internal {\\n _upgradeTo(newImplementation);\\n if (data.length > 0 || forceCall) {\\n AddressUpgradeable.functionDelegateCall(newImplementation, data);\\n }\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCallUUPS(address newImplementation, bytes memory data, bool forceCall) internal {\\n // Upgrades from old implementations will perform a rollback test. This test requires the new\\n // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n // this special case will break upgrade paths from old UUPS implementation to new ones.\\n if (StorageSlotUpgradeable.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n _setImplementation(newImplementation);\\n } else {\\n try IERC1822ProxiableUpgradeable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n require(slot == _IMPLEMENTATION_SLOT, \\\"ERC1967Upgrade: unsupported proxiableUUID\\\");\\n } catch {\\n revert(\\\"ERC1967Upgrade: new implementation is not UUPS\\\");\\n }\\n _upgradeToAndCall(newImplementation, data, forceCall);\\n }\\n }\\n\\n /**\\n * @dev Storage slot with the admin of the contract.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _getAdmin() internal view returns (address) {\\n return StorageSlotUpgradeable.getAddressSlot(_ADMIN_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 admin slot.\\n */\\n function _setAdmin(address newAdmin) private {\\n require(newAdmin != address(0), \\\"ERC1967: new admin is the zero address\\\");\\n StorageSlotUpgradeable.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n */\\n function _changeAdmin(address newAdmin) internal {\\n emit AdminChanged(_getAdmin(), newAdmin);\\n _setAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\\n */\\n bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n /**\\n * @dev Returns the current beacon.\\n */\\n function _getBeacon() internal view returns (address) {\\n return StorageSlotUpgradeable.getAddressSlot(_BEACON_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new beacon in the EIP1967 beacon slot.\\n */\\n function _setBeacon(address newBeacon) private {\\n require(AddressUpgradeable.isContract(newBeacon), \\\"ERC1967: new beacon is not a contract\\\");\\n require(\\n AddressUpgradeable.isContract(IBeaconUpgradeable(newBeacon).implementation()),\\n \\\"ERC1967: beacon implementation is not a contract\\\"\\n );\\n StorageSlotUpgradeable.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n }\\n\\n /**\\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n *\\n * Emits a {BeaconUpgraded} event.\\n */\\n function _upgradeBeaconToAndCall(address newBeacon, bytes memory data, bool forceCall) internal {\\n _setBeacon(newBeacon);\\n emit BeaconUpgraded(newBeacon);\\n if (data.length > 0 || forceCall) {\\n AddressUpgradeable.functionDelegateCall(IBeaconUpgradeable(newBeacon).implementation(), data);\\n }\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x7795808e3899c805254e3ae58074b20f799b466e3f43e057e47bedee5fb771f8\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeaconUpgradeable {\\n /**\\n * @dev Must return an address that can be used as a delegate call target.\\n *\\n * {BeaconProxy} will check that this address is a contract.\\n */\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/StorageSlot.sol)\\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```solidity\\n * contract ERC1967 {\\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n * function _getImplementation() internal view returns (address) {\\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n * }\\n *\\n * function _setImplementation(address newImplementation) internal {\\n * require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n * }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._\\n * _Available since v4.9 for `string`, `bytes`._\\n */\\nlibrary StorageSlotUpgradeable {\\n struct AddressSlot {\\n address value;\\n }\\n\\n struct BooleanSlot {\\n bool value;\\n }\\n\\n struct Bytes32Slot {\\n bytes32 value;\\n }\\n\\n struct Uint256Slot {\\n uint256 value;\\n }\\n\\n struct StringSlot {\\n string value;\\n }\\n\\n struct BytesSlot {\\n bytes value;\\n }\\n\\n /**\\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n */\\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n */\\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n */\\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n */\\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` with member `value` located at `slot`.\\n */\\n function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\\n */\\n function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` with member `value` located at `slot`.\\n */\\n function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\\n */\\n function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n}\\n\",\"keccak256\":\"0x07ac95acad040f1fb1f6120dd0aa5f702db69446e95f82613721879d30de0908\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":372,"contract":"@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:ERC1967UpgradeUpgradeable","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":375,"contract":"@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:ERC1967UpgradeUpgradeable","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":354,"contract":"@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:ERC1967UpgradeUpgradeable","label":"__gap","offset":0,"slot":"1","type":"t_array(t_uint256)50_storage"}],"types":{"t_array(t_uint256)50_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[50]","numberOfBytes":"1600"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.sol":{"IBeaconUpgradeable":{"abi":[{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"This is the interface that {BeaconProxy} expects of its beacon.","kind":"dev","methods":{"implementation()":{"details":"Must return an address that can be used as a delegate call target. {BeaconProxy} will check that this address is a contract."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"implementation()":"5c60da1b"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"This is the interface that {BeaconProxy} expects of its beacon.\",\"kind\":\"dev\",\"methods\":{\"implementation()\":{\"details\":\"Must return an address that can be used as a delegate call target. {BeaconProxy} will check that this address is a contract.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.sol\":\"IBeaconUpgradeable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeaconUpgradeable {\\n /**\\n * @dev Must return an address that can be used as a delegate call target.\\n *\\n * {BeaconProxy} will check that this address is a contract.\\n */\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol":{"Initializable":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"}],"devdoc":{"custom:oz-upgrades-unsafe-allow":"constructor constructor() { _disableInitializers(); } ``` ====","details":"This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer function so it can only be called once. The {initializer} modifier provided by this contract will have this effect. The initialization functions use a version number. Once a version number is used, it is consumed and cannot be reused. This mechanism prevents re-execution of each \"step\" but allows the creation of new initialization steps in case an upgrade adds a module that needs to be initialized. For example: [.hljs-theme-light.nopadding] ```solidity contract MyToken is ERC20Upgradeable { function initialize() initializer public { __ERC20_init(\"MyToken\", \"MTK\"); } } contract MyTokenV2 is MyToken, ERC20PermitUpgradeable { function initializeV2() reinitializer(2) public { __ERC20Permit_init(\"MyToken\"); } } ``` TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}. CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure that all initializers are idempotent. This is not verified automatically as constructors are by Solidity. [CAUTION] ==== Avoid leaving a contract uninitialized. An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke the {_disableInitializers} function in the constructor to automatically lock it when it is deployed: [.hljs-theme-light.nopadding] ```","events":{"Initialized(uint8)":{"details":"Triggered when the contract has been initialized or reinitialized."}},"kind":"dev","methods":{},"stateVariables":{"_initialized":{"custom:oz-retyped-from":"bool","details":"Indicates that the contract has been initialized."},"_initializing":{"details":"Indicates that the contract is in the process of being initialized."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"}],\"devdoc\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor constructor() { _disableInitializers(); } ``` ====\",\"details\":\"This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer function so it can only be called once. The {initializer} modifier provided by this contract will have this effect. The initialization functions use a version number. Once a version number is used, it is consumed and cannot be reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in case an upgrade adds a module that needs to be initialized. For example: [.hljs-theme-light.nopadding] ```solidity contract MyToken is ERC20Upgradeable { function initialize() initializer public { __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\"); } } contract MyTokenV2 is MyToken, ERC20PermitUpgradeable { function initializeV2() reinitializer(2) public { __ERC20Permit_init(\\\"MyToken\\\"); } } ``` TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}. CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure that all initializers are idempotent. This is not verified automatically as constructors are by Solidity. [CAUTION] ==== Avoid leaving a contract uninitialized. An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke the {_disableInitializers} function in the constructor to automatically lock it when it is deployed: [.hljs-theme-light.nopadding] ```\",\"events\":{\"Initialized(uint8)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"_initialized\":{\"custom:oz-retyped-from\":\"bool\",\"details\":\"Indicates that the contract has been initialized.\"},\"_initializing\":{\"details\":\"Indicates that the contract is in the process of being initialized.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":\"Initializable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":372,"contract":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":375,"contract":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable","label":"_initializing","offset":1,"slot":"0","type":"t_bool"}],"types":{"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol":{"UUPSUpgradeable":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"beacon","type":"address"}],"name":"BeaconUpgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"inputs":[],"name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"}],"name":"upgradeTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"}],"devdoc":{"details":"An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy. A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing `UUPSUpgradeable` with a custom implementation of upgrades. The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism. _Available since v4.1._","kind":"dev","methods":{"proxiableUUID()":{"details":"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier."},"upgradeTo(address)":{"custom:oz-upgrades-unsafe-allow-reachable":"delegatecall","details":"Upgrade the implementation of the proxy to `newImplementation`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."},"upgradeToAndCall(address,bytes)":{"custom:oz-upgrades-unsafe-allow-reachable":"delegatecall","details":"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."}},"stateVariables":{"__gap":{"details":"This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain. See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"},"__self":{"custom:oz-upgrades-unsafe-allow":"state-variable-immutable state-variable-assignment"}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"proxiableUUID()":"52d1902d","upgradeTo(address)":"3659cfe6","upgradeToAndCall(address,bytes)":"4f1ef286"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"upgradeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy. A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing `UUPSUpgradeable` with a custom implementation of upgrades. The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism. _Available since v4.1._\",\"kind\":\"dev\",\"methods\":{\"proxiableUUID()\":{\"details\":\"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"upgradeTo(address)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"},\"upgradeToAndCall(address,bytes)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"}},\"stateVariables\":{\"__gap\":{\"details\":\"This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain. See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\"},\"__self\":{\"custom:oz-upgrades-unsafe-allow\":\"state-variable-immutable state-variable-assignment\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":\"UUPSUpgradeable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/interfaces/IERC1967Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (interfaces/IERC1967.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\\n *\\n * _Available since v4.8.3._\\n */\\ninterface IERC1967Upgradeable {\\n /**\\n * @dev Emitted when the implementation is upgraded.\\n */\\n event Upgraded(address indexed implementation);\\n\\n /**\\n * @dev Emitted when the admin account has changed.\\n */\\n event AdminChanged(address previousAdmin, address newAdmin);\\n\\n /**\\n * @dev Emitted when the beacon is changed.\\n */\\n event BeaconUpgraded(address indexed beacon);\\n}\\n\",\"keccak256\":\"0x47d6e06872b12e72c79d1b5eb55842f860b5fb1207b2317c2358d2766b950a7b\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822ProxiableUpgradeable {\\n /**\\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n * address.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy.\\n */\\n function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../beacon/IBeaconUpgradeable.sol\\\";\\nimport \\\"../../interfaces/IERC1967Upgradeable.sol\\\";\\nimport \\\"../../interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\nimport \\\"../../utils/StorageSlotUpgradeable.sol\\\";\\nimport {Initializable} from \\\"../utils/Initializable.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n */\\nabstract contract ERC1967UpgradeUpgradeable is Initializable, IERC1967Upgradeable {\\n // This is the keccak-256 hash of \\\"eip1967.proxy.rollback\\\" subtracted by 1\\n bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n /**\\n * @dev Storage slot with the address of the current implementation.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n function __ERC1967Upgrade_init() internal onlyInitializing {\\n }\\n\\n function __ERC1967Upgrade_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _getImplementation() internal view returns (address) {\\n return StorageSlotUpgradeable.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 implementation slot.\\n */\\n function _setImplementation(address newImplementation) private {\\n require(AddressUpgradeable.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n StorageSlotUpgradeable.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n }\\n\\n /**\\n * @dev Perform implementation upgrade\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeTo(address newImplementation) internal {\\n _setImplementation(newImplementation);\\n emit Upgraded(newImplementation);\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCall(address newImplementation, bytes memory data, bool forceCall) internal {\\n _upgradeTo(newImplementation);\\n if (data.length > 0 || forceCall) {\\n AddressUpgradeable.functionDelegateCall(newImplementation, data);\\n }\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCallUUPS(address newImplementation, bytes memory data, bool forceCall) internal {\\n // Upgrades from old implementations will perform a rollback test. This test requires the new\\n // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n // this special case will break upgrade paths from old UUPS implementation to new ones.\\n if (StorageSlotUpgradeable.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n _setImplementation(newImplementation);\\n } else {\\n try IERC1822ProxiableUpgradeable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n require(slot == _IMPLEMENTATION_SLOT, \\\"ERC1967Upgrade: unsupported proxiableUUID\\\");\\n } catch {\\n revert(\\\"ERC1967Upgrade: new implementation is not UUPS\\\");\\n }\\n _upgradeToAndCall(newImplementation, data, forceCall);\\n }\\n }\\n\\n /**\\n * @dev Storage slot with the admin of the contract.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _getAdmin() internal view returns (address) {\\n return StorageSlotUpgradeable.getAddressSlot(_ADMIN_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 admin slot.\\n */\\n function _setAdmin(address newAdmin) private {\\n require(newAdmin != address(0), \\\"ERC1967: new admin is the zero address\\\");\\n StorageSlotUpgradeable.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n */\\n function _changeAdmin(address newAdmin) internal {\\n emit AdminChanged(_getAdmin(), newAdmin);\\n _setAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\\n */\\n bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n /**\\n * @dev Returns the current beacon.\\n */\\n function _getBeacon() internal view returns (address) {\\n return StorageSlotUpgradeable.getAddressSlot(_BEACON_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new beacon in the EIP1967 beacon slot.\\n */\\n function _setBeacon(address newBeacon) private {\\n require(AddressUpgradeable.isContract(newBeacon), \\\"ERC1967: new beacon is not a contract\\\");\\n require(\\n AddressUpgradeable.isContract(IBeaconUpgradeable(newBeacon).implementation()),\\n \\\"ERC1967: beacon implementation is not a contract\\\"\\n );\\n StorageSlotUpgradeable.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n }\\n\\n /**\\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n *\\n * Emits a {BeaconUpgraded} event.\\n */\\n function _upgradeBeaconToAndCall(address newBeacon, bytes memory data, bool forceCall) internal {\\n _setBeacon(newBeacon);\\n emit BeaconUpgraded(newBeacon);\\n if (data.length > 0 || forceCall) {\\n AddressUpgradeable.functionDelegateCall(IBeaconUpgradeable(newBeacon).implementation(), data);\\n }\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x7795808e3899c805254e3ae58074b20f799b466e3f43e057e47bedee5fb771f8\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeaconUpgradeable {\\n /**\\n * @dev Must return an address that can be used as a delegate call target.\\n *\\n * {BeaconProxy} will check that this address is a contract.\\n */\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/UUPSUpgradeable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport \\\"../ERC1967/ERC1967UpgradeUpgradeable.sol\\\";\\nimport {Initializable} from \\\"./Initializable.sol\\\";\\n\\n/**\\n * @dev An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an\\n * {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy.\\n *\\n * A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is\\n * reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing\\n * `UUPSUpgradeable` with a custom implementation of upgrades.\\n *\\n * The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism.\\n *\\n * _Available since v4.1._\\n */\\nabstract contract UUPSUpgradeable is Initializable, IERC1822ProxiableUpgradeable, ERC1967UpgradeUpgradeable {\\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable state-variable-assignment\\n address private immutable __self = address(this);\\n\\n /**\\n * @dev Check that the execution is being performed through a delegatecall call and that the execution context is\\n * a proxy contract with an implementation (as defined in ERC1967) pointing to self. This should only be the case\\n * for UUPS and transparent proxies that are using the current contract as their implementation. Execution of a\\n * function through ERC1167 minimal proxies (clones) would not normally pass this test, but is not guaranteed to\\n * fail.\\n */\\n modifier onlyProxy() {\\n require(address(this) != __self, \\\"Function must be called through delegatecall\\\");\\n require(_getImplementation() == __self, \\\"Function must be called through active proxy\\\");\\n _;\\n }\\n\\n /**\\n * @dev Check that the execution is not being performed through a delegate call. This allows a function to be\\n * callable on the implementing contract but not through proxies.\\n */\\n modifier notDelegated() {\\n require(address(this) == __self, \\\"UUPSUpgradeable: must not be called through delegatecall\\\");\\n _;\\n }\\n\\n function __UUPSUpgradeable_init() internal onlyInitializing {\\n }\\n\\n function __UUPSUpgradeable_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the\\n * implementation. It is used to validate the implementation's compatibility when performing an upgrade.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\\n */\\n function proxiableUUID() external view virtual override notDelegated returns (bytes32) {\\n return _IMPLEMENTATION_SLOT;\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy to `newImplementation`.\\n *\\n * Calls {_authorizeUpgrade}.\\n *\\n * Emits an {Upgraded} event.\\n *\\n * @custom:oz-upgrades-unsafe-allow-reachable delegatecall\\n */\\n function upgradeTo(address newImplementation) public virtual onlyProxy {\\n _authorizeUpgrade(newImplementation);\\n _upgradeToAndCallUUPS(newImplementation, new bytes(0), false);\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call\\n * encoded in `data`.\\n *\\n * Calls {_authorizeUpgrade}.\\n *\\n * Emits an {Upgraded} event.\\n *\\n * @custom:oz-upgrades-unsafe-allow-reachable delegatecall\\n */\\n function upgradeToAndCall(address newImplementation, bytes memory data) public payable virtual onlyProxy {\\n _authorizeUpgrade(newImplementation);\\n _upgradeToAndCallUUPS(newImplementation, data, true);\\n }\\n\\n /**\\n * @dev Function that should revert when `msg.sender` is not authorized to upgrade the contract. Called by\\n * {upgradeTo} and {upgradeToAndCall}.\\n *\\n * Normally, this function will use an xref:access.adoc[access control] modifier such as {Ownable-onlyOwner}.\\n *\\n * ```solidity\\n * function _authorizeUpgrade(address) internal override onlyOwner {}\\n * ```\\n */\\n function _authorizeUpgrade(address newImplementation) internal virtual;\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0xefb41f5c1a00249b7a99f0782f8c557865605426a3fb6e5fe9ae334293ae4f33\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/StorageSlot.sol)\\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```solidity\\n * contract ERC1967 {\\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n * function _getImplementation() internal view returns (address) {\\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n * }\\n *\\n * function _setImplementation(address newImplementation) internal {\\n * require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n * }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._\\n * _Available since v4.9 for `string`, `bytes`._\\n */\\nlibrary StorageSlotUpgradeable {\\n struct AddressSlot {\\n address value;\\n }\\n\\n struct BooleanSlot {\\n bool value;\\n }\\n\\n struct Bytes32Slot {\\n bytes32 value;\\n }\\n\\n struct Uint256Slot {\\n uint256 value;\\n }\\n\\n struct StringSlot {\\n string value;\\n }\\n\\n struct BytesSlot {\\n bytes value;\\n }\\n\\n /**\\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n */\\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n */\\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n */\\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n */\\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` with member `value` located at `slot`.\\n */\\n function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\\n */\\n function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` with member `value` located at `slot`.\\n */\\n function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\\n */\\n function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n}\\n\",\"keccak256\":\"0x07ac95acad040f1fb1f6120dd0aa5f702db69446e95f82613721879d30de0908\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":372,"contract":"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:UUPSUpgradeable","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":375,"contract":"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:UUPSUpgradeable","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":354,"contract":"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:UUPSUpgradeable","label":"__gap","offset":0,"slot":"1","type":"t_array(t_uint256)50_storage"},{"astId":670,"contract":"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:UUPSUpgradeable","label":"__gap","offset":0,"slot":"51","type":"t_array(t_uint256)50_storage"}],"types":{"t_array(t_uint256)50_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[50]","numberOfBytes":"1600"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol":{"AddressUpgradeable":{"abi":[],"devdoc":{"details":"Collection of functions related to the address type","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"602d6037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a","opcodes":"PUSH1 0x2D PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"194:9180:6:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;194:9180:6;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"194:9180:6:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"9000","executionCost":"94","totalCost":"9094"},"internal":{"_revert(bytes memory,string memory)":"infinite","functionCall(address,bytes memory)":"infinite","functionCall(address,bytes memory,string memory)":"infinite","functionCallWithValue(address,bytes memory,uint256)":"infinite","functionCallWithValue(address,bytes memory,uint256,string memory)":"infinite","functionDelegateCall(address,bytes memory)":"infinite","functionDelegateCall(address,bytes memory,string memory)":"infinite","functionStaticCall(address,bytes memory)":"infinite","functionStaticCall(address,bytes memory,string memory)":"infinite","isContract(address)":"infinite","sendValue(address payable,uint256)":"infinite","verifyCallResult(bool,bytes memory,string memory)":"infinite","verifyCallResultFromTarget(address,bool,bytes memory,string memory)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Collection of functions related to the address type\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":\"AddressUpgradeable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/utils/CheckpointsUpgradeable.sol":{"CheckpointsUpgradeable":{"abi":[],"devdoc":{"details":"This library defines the `History` struct, for checkpointing values as they change at different points in time, and later looking up past values by block number. See {Votes} as an example. To create a history of checkpoints define a variable type `Checkpoints.History` in your contract, and store a new checkpoint for the current transaction block using the {push} function. _Available since v4.5._","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"602d6037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a","opcodes":"PUSH1 0x2D PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"730:19886:7:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;730:19886:7;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"730:19886:7:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"9000","executionCost":"94","totalCost":"9094"},"internal":{"_insert(struct CheckpointsUpgradeable.Checkpoint storage ref[] storage pointer,uint32,uint224)":"infinite","_insert(struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage pointer,uint96,uint160)":"infinite","_insert(struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage pointer,uint32,uint224)":"infinite","_lowerBinaryLookup(struct CheckpointsUpgradeable.Checkpoint storage ref[] storage pointer,uint32,uint256,uint256)":"infinite","_lowerBinaryLookup(struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage pointer,uint96,uint256,uint256)":"infinite","_lowerBinaryLookup(struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage pointer,uint32,uint256,uint256)":"infinite","_unsafeAccess(struct CheckpointsUpgradeable.Checkpoint storage ref[] storage pointer,uint256)":"infinite","_unsafeAccess(struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage pointer,uint256)":"infinite","_unsafeAccess(struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage pointer,uint256)":"infinite","_upperBinaryLookup(struct CheckpointsUpgradeable.Checkpoint storage ref[] storage pointer,uint32,uint256,uint256)":"infinite","_upperBinaryLookup(struct CheckpointsUpgradeable.Checkpoint160 storage ref[] storage pointer,uint96,uint256,uint256)":"infinite","_upperBinaryLookup(struct CheckpointsUpgradeable.Checkpoint224 storage ref[] storage pointer,uint32,uint256,uint256)":"infinite","getAtBlock(struct CheckpointsUpgradeable.History storage pointer,uint256)":"infinite","getAtProbablyRecentBlock(struct CheckpointsUpgradeable.History storage pointer,uint256)":"infinite","latest(struct CheckpointsUpgradeable.History storage pointer)":"infinite","latest(struct CheckpointsUpgradeable.Trace160 storage pointer)":"infinite","latest(struct CheckpointsUpgradeable.Trace224 storage pointer)":"infinite","latestCheckpoint(struct CheckpointsUpgradeable.History storage pointer)":"infinite","latestCheckpoint(struct CheckpointsUpgradeable.Trace160 storage pointer)":"infinite","latestCheckpoint(struct CheckpointsUpgradeable.Trace224 storage pointer)":"infinite","length(struct CheckpointsUpgradeable.History storage pointer)":"infinite","length(struct CheckpointsUpgradeable.Trace160 storage pointer)":"infinite","length(struct CheckpointsUpgradeable.Trace224 storage pointer)":"infinite","lowerLookup(struct CheckpointsUpgradeable.Trace160 storage pointer,uint96)":"infinite","lowerLookup(struct CheckpointsUpgradeable.Trace224 storage pointer,uint32)":"infinite","push(struct CheckpointsUpgradeable.History storage pointer,function (uint256,uint256) view returns (uint256),uint256)":"infinite","push(struct CheckpointsUpgradeable.History storage pointer,uint256)":"infinite","push(struct CheckpointsUpgradeable.Trace160 storage pointer,uint96,uint160)":"infinite","push(struct CheckpointsUpgradeable.Trace224 storage pointer,uint32,uint224)":"infinite","upperLookup(struct CheckpointsUpgradeable.Trace160 storage pointer,uint96)":"infinite","upperLookup(struct CheckpointsUpgradeable.Trace224 storage pointer,uint32)":"infinite","upperLookupRecent(struct CheckpointsUpgradeable.Trace160 storage pointer,uint96)":"infinite","upperLookupRecent(struct CheckpointsUpgradeable.Trace224 storage pointer,uint32)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"This library defines the `History` struct, for checkpointing values as they change at different points in time, and later looking up past values by block number. See {Votes} as an example. To create a history of checkpoints define a variable type `Checkpoints.History` in your contract, and store a new checkpoint for the current transaction block using the {push} function. _Available since v4.5._\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/utils/CheckpointsUpgradeable.sol\":\"CheckpointsUpgradeable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/utils/CheckpointsUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Checkpoints.sol)\\n// This file was procedurally generated from scripts/generate/templates/Checkpoints.js.\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./math/MathUpgradeable.sol\\\";\\nimport \\\"./math/SafeCastUpgradeable.sol\\\";\\n\\n/**\\n * @dev This library defines the `History` struct, for checkpointing values as they change at different points in\\n * time, and later looking up past values by block number. See {Votes} as an example.\\n *\\n * To create a history of checkpoints define a variable type `Checkpoints.History` in your contract, and store a new\\n * checkpoint for the current transaction block using the {push} function.\\n *\\n * _Available since v4.5._\\n */\\nlibrary CheckpointsUpgradeable {\\n struct History {\\n Checkpoint[] _checkpoints;\\n }\\n\\n struct Checkpoint {\\n uint32 _blockNumber;\\n uint224 _value;\\n }\\n\\n /**\\n * @dev Returns the value at a given block number. If a checkpoint is not available at that block, the closest one\\n * before it is returned, or zero otherwise. Because the number returned corresponds to that at the end of the\\n * block, the requested block number must be in the past, excluding the current block.\\n */\\n function getAtBlock(History storage self, uint256 blockNumber) internal view returns (uint256) {\\n require(blockNumber < block.number, \\\"Checkpoints: block not yet mined\\\");\\n uint32 key = SafeCastUpgradeable.toUint32(blockNumber);\\n\\n uint256 len = self._checkpoints.length;\\n uint256 pos = _upperBinaryLookup(self._checkpoints, key, 0, len);\\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\\n }\\n\\n /**\\n * @dev Returns the value at a given block number. If a checkpoint is not available at that block, the closest one\\n * before it is returned, or zero otherwise. Similar to {upperLookup} but optimized for the case when the searched\\n * checkpoint is probably \\\"recent\\\", defined as being among the last sqrt(N) checkpoints where N is the number of\\n * checkpoints.\\n */\\n function getAtProbablyRecentBlock(History storage self, uint256 blockNumber) internal view returns (uint256) {\\n require(blockNumber < block.number, \\\"Checkpoints: block not yet mined\\\");\\n uint32 key = SafeCastUpgradeable.toUint32(blockNumber);\\n\\n uint256 len = self._checkpoints.length;\\n\\n uint256 low = 0;\\n uint256 high = len;\\n\\n if (len > 5) {\\n uint256 mid = len - MathUpgradeable.sqrt(len);\\n if (key < _unsafeAccess(self._checkpoints, mid)._blockNumber) {\\n high = mid;\\n } else {\\n low = mid + 1;\\n }\\n }\\n\\n uint256 pos = _upperBinaryLookup(self._checkpoints, key, low, high);\\n\\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\\n }\\n\\n /**\\n * @dev Pushes a value onto a History so that it is stored as the checkpoint for the current block.\\n *\\n * Returns previous value and new value.\\n */\\n function push(History storage self, uint256 value) internal returns (uint256, uint256) {\\n return _insert(self._checkpoints, SafeCastUpgradeable.toUint32(block.number), SafeCastUpgradeable.toUint224(value));\\n }\\n\\n /**\\n * @dev Pushes a value onto a History, by updating the latest value using binary operation `op`. The new value will\\n * be set to `op(latest, delta)`.\\n *\\n * Returns previous value and new value.\\n */\\n function push(\\n History storage self,\\n function(uint256, uint256) view returns (uint256) op,\\n uint256 delta\\n ) internal returns (uint256, uint256) {\\n return push(self, op(latest(self), delta));\\n }\\n\\n /**\\n * @dev Returns the value in the most recent checkpoint, or zero if there are no checkpoints.\\n */\\n function latest(History storage self) internal view returns (uint224) {\\n uint256 pos = self._checkpoints.length;\\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\\n }\\n\\n /**\\n * @dev Returns whether there is a checkpoint in the structure (i.e. it is not empty), and if so the key and value\\n * in the most recent checkpoint.\\n */\\n function latestCheckpoint(\\n History storage self\\n ) internal view returns (bool exists, uint32 _blockNumber, uint224 _value) {\\n uint256 pos = self._checkpoints.length;\\n if (pos == 0) {\\n return (false, 0, 0);\\n } else {\\n Checkpoint memory ckpt = _unsafeAccess(self._checkpoints, pos - 1);\\n return (true, ckpt._blockNumber, ckpt._value);\\n }\\n }\\n\\n /**\\n * @dev Returns the number of checkpoint.\\n */\\n function length(History storage self) internal view returns (uint256) {\\n return self._checkpoints.length;\\n }\\n\\n /**\\n * @dev Pushes a (`key`, `value`) pair into an ordered list of checkpoints, either by inserting a new checkpoint,\\n * or by updating the last one.\\n */\\n function _insert(Checkpoint[] storage self, uint32 key, uint224 value) private returns (uint224, uint224) {\\n uint256 pos = self.length;\\n\\n if (pos > 0) {\\n // Copying to memory is important here.\\n Checkpoint memory last = _unsafeAccess(self, pos - 1);\\n\\n // Checkpoint keys must be non-decreasing.\\n require(last._blockNumber <= key, \\\"Checkpoint: decreasing keys\\\");\\n\\n // Update or push new checkpoint\\n if (last._blockNumber == key) {\\n _unsafeAccess(self, pos - 1)._value = value;\\n } else {\\n self.push(Checkpoint({_blockNumber: key, _value: value}));\\n }\\n return (last._value, value);\\n } else {\\n self.push(Checkpoint({_blockNumber: key, _value: value}));\\n return (0, value);\\n }\\n }\\n\\n /**\\n * @dev Return the index of the last (most recent) checkpoint with key lower or equal than the search key, or `high` if there is none.\\n * `low` and `high` define a section where to do the search, with inclusive `low` and exclusive `high`.\\n *\\n * WARNING: `high` should not be greater than the array's length.\\n */\\n function _upperBinaryLookup(\\n Checkpoint[] storage self,\\n uint32 key,\\n uint256 low,\\n uint256 high\\n ) private view returns (uint256) {\\n while (low < high) {\\n uint256 mid = MathUpgradeable.average(low, high);\\n if (_unsafeAccess(self, mid)._blockNumber > key) {\\n high = mid;\\n } else {\\n low = mid + 1;\\n }\\n }\\n return high;\\n }\\n\\n /**\\n * @dev Return the index of the first (oldest) checkpoint with key is greater or equal than the search key, or `high` if there is none.\\n * `low` and `high` define a section where to do the search, with inclusive `low` and exclusive `high`.\\n *\\n * WARNING: `high` should not be greater than the array's length.\\n */\\n function _lowerBinaryLookup(\\n Checkpoint[] storage self,\\n uint32 key,\\n uint256 low,\\n uint256 high\\n ) private view returns (uint256) {\\n while (low < high) {\\n uint256 mid = MathUpgradeable.average(low, high);\\n if (_unsafeAccess(self, mid)._blockNumber < key) {\\n low = mid + 1;\\n } else {\\n high = mid;\\n }\\n }\\n return high;\\n }\\n\\n /**\\n * @dev Access an element of the array without performing bounds check. The position is assumed to be within bounds.\\n */\\n function _unsafeAccess(Checkpoint[] storage self, uint256 pos) private pure returns (Checkpoint storage result) {\\n assembly {\\n mstore(0, self.slot)\\n result.slot := add(keccak256(0, 0x20), pos)\\n }\\n }\\n\\n struct Trace224 {\\n Checkpoint224[] _checkpoints;\\n }\\n\\n struct Checkpoint224 {\\n uint32 _key;\\n uint224 _value;\\n }\\n\\n /**\\n * @dev Pushes a (`key`, `value`) pair into a Trace224 so that it is stored as the checkpoint.\\n *\\n * Returns previous value and new value.\\n */\\n function push(Trace224 storage self, uint32 key, uint224 value) internal returns (uint224, uint224) {\\n return _insert(self._checkpoints, key, value);\\n }\\n\\n /**\\n * @dev Returns the value in the first (oldest) checkpoint with key greater or equal than the search key, or zero if there is none.\\n */\\n function lowerLookup(Trace224 storage self, uint32 key) internal view returns (uint224) {\\n uint256 len = self._checkpoints.length;\\n uint256 pos = _lowerBinaryLookup(self._checkpoints, key, 0, len);\\n return pos == len ? 0 : _unsafeAccess(self._checkpoints, pos)._value;\\n }\\n\\n /**\\n * @dev Returns the value in the last (most recent) checkpoint with key lower or equal than the search key, or zero if there is none.\\n */\\n function upperLookup(Trace224 storage self, uint32 key) internal view returns (uint224) {\\n uint256 len = self._checkpoints.length;\\n uint256 pos = _upperBinaryLookup(self._checkpoints, key, 0, len);\\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\\n }\\n\\n /**\\n * @dev Returns the value in the last (most recent) checkpoint with key lower or equal than the search key, or zero if there is none.\\n *\\n * NOTE: This is a variant of {upperLookup} that is optimised to find \\\"recent\\\" checkpoint (checkpoints with high keys).\\n */\\n function upperLookupRecent(Trace224 storage self, uint32 key) internal view returns (uint224) {\\n uint256 len = self._checkpoints.length;\\n\\n uint256 low = 0;\\n uint256 high = len;\\n\\n if (len > 5) {\\n uint256 mid = len - MathUpgradeable.sqrt(len);\\n if (key < _unsafeAccess(self._checkpoints, mid)._key) {\\n high = mid;\\n } else {\\n low = mid + 1;\\n }\\n }\\n\\n uint256 pos = _upperBinaryLookup(self._checkpoints, key, low, high);\\n\\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\\n }\\n\\n /**\\n * @dev Returns the value in the most recent checkpoint, or zero if there are no checkpoints.\\n */\\n function latest(Trace224 storage self) internal view returns (uint224) {\\n uint256 pos = self._checkpoints.length;\\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\\n }\\n\\n /**\\n * @dev Returns whether there is a checkpoint in the structure (i.e. it is not empty), and if so the key and value\\n * in the most recent checkpoint.\\n */\\n function latestCheckpoint(Trace224 storage self) internal view returns (bool exists, uint32 _key, uint224 _value) {\\n uint256 pos = self._checkpoints.length;\\n if (pos == 0) {\\n return (false, 0, 0);\\n } else {\\n Checkpoint224 memory ckpt = _unsafeAccess(self._checkpoints, pos - 1);\\n return (true, ckpt._key, ckpt._value);\\n }\\n }\\n\\n /**\\n * @dev Returns the number of checkpoint.\\n */\\n function length(Trace224 storage self) internal view returns (uint256) {\\n return self._checkpoints.length;\\n }\\n\\n /**\\n * @dev Pushes a (`key`, `value`) pair into an ordered list of checkpoints, either by inserting a new checkpoint,\\n * or by updating the last one.\\n */\\n function _insert(Checkpoint224[] storage self, uint32 key, uint224 value) private returns (uint224, uint224) {\\n uint256 pos = self.length;\\n\\n if (pos > 0) {\\n // Copying to memory is important here.\\n Checkpoint224 memory last = _unsafeAccess(self, pos - 1);\\n\\n // Checkpoint keys must be non-decreasing.\\n require(last._key <= key, \\\"Checkpoint: decreasing keys\\\");\\n\\n // Update or push new checkpoint\\n if (last._key == key) {\\n _unsafeAccess(self, pos - 1)._value = value;\\n } else {\\n self.push(Checkpoint224({_key: key, _value: value}));\\n }\\n return (last._value, value);\\n } else {\\n self.push(Checkpoint224({_key: key, _value: value}));\\n return (0, value);\\n }\\n }\\n\\n /**\\n * @dev Return the index of the last (most recent) checkpoint with key lower or equal than the search key, or `high` if there is none.\\n * `low` and `high` define a section where to do the search, with inclusive `low` and exclusive `high`.\\n *\\n * WARNING: `high` should not be greater than the array's length.\\n */\\n function _upperBinaryLookup(\\n Checkpoint224[] storage self,\\n uint32 key,\\n uint256 low,\\n uint256 high\\n ) private view returns (uint256) {\\n while (low < high) {\\n uint256 mid = MathUpgradeable.average(low, high);\\n if (_unsafeAccess(self, mid)._key > key) {\\n high = mid;\\n } else {\\n low = mid + 1;\\n }\\n }\\n return high;\\n }\\n\\n /**\\n * @dev Return the index of the first (oldest) checkpoint with key is greater or equal than the search key, or `high` if there is none.\\n * `low` and `high` define a section where to do the search, with inclusive `low` and exclusive `high`.\\n *\\n * WARNING: `high` should not be greater than the array's length.\\n */\\n function _lowerBinaryLookup(\\n Checkpoint224[] storage self,\\n uint32 key,\\n uint256 low,\\n uint256 high\\n ) private view returns (uint256) {\\n while (low < high) {\\n uint256 mid = MathUpgradeable.average(low, high);\\n if (_unsafeAccess(self, mid)._key < key) {\\n low = mid + 1;\\n } else {\\n high = mid;\\n }\\n }\\n return high;\\n }\\n\\n /**\\n * @dev Access an element of the array without performing bounds check. The position is assumed to be within bounds.\\n */\\n function _unsafeAccess(\\n Checkpoint224[] storage self,\\n uint256 pos\\n ) private pure returns (Checkpoint224 storage result) {\\n assembly {\\n mstore(0, self.slot)\\n result.slot := add(keccak256(0, 0x20), pos)\\n }\\n }\\n\\n struct Trace160 {\\n Checkpoint160[] _checkpoints;\\n }\\n\\n struct Checkpoint160 {\\n uint96 _key;\\n uint160 _value;\\n }\\n\\n /**\\n * @dev Pushes a (`key`, `value`) pair into a Trace160 so that it is stored as the checkpoint.\\n *\\n * Returns previous value and new value.\\n */\\n function push(Trace160 storage self, uint96 key, uint160 value) internal returns (uint160, uint160) {\\n return _insert(self._checkpoints, key, value);\\n }\\n\\n /**\\n * @dev Returns the value in the first (oldest) checkpoint with key greater or equal than the search key, or zero if there is none.\\n */\\n function lowerLookup(Trace160 storage self, uint96 key) internal view returns (uint160) {\\n uint256 len = self._checkpoints.length;\\n uint256 pos = _lowerBinaryLookup(self._checkpoints, key, 0, len);\\n return pos == len ? 0 : _unsafeAccess(self._checkpoints, pos)._value;\\n }\\n\\n /**\\n * @dev Returns the value in the last (most recent) checkpoint with key lower or equal than the search key, or zero if there is none.\\n */\\n function upperLookup(Trace160 storage self, uint96 key) internal view returns (uint160) {\\n uint256 len = self._checkpoints.length;\\n uint256 pos = _upperBinaryLookup(self._checkpoints, key, 0, len);\\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\\n }\\n\\n /**\\n * @dev Returns the value in the last (most recent) checkpoint with key lower or equal than the search key, or zero if there is none.\\n *\\n * NOTE: This is a variant of {upperLookup} that is optimised to find \\\"recent\\\" checkpoint (checkpoints with high keys).\\n */\\n function upperLookupRecent(Trace160 storage self, uint96 key) internal view returns (uint160) {\\n uint256 len = self._checkpoints.length;\\n\\n uint256 low = 0;\\n uint256 high = len;\\n\\n if (len > 5) {\\n uint256 mid = len - MathUpgradeable.sqrt(len);\\n if (key < _unsafeAccess(self._checkpoints, mid)._key) {\\n high = mid;\\n } else {\\n low = mid + 1;\\n }\\n }\\n\\n uint256 pos = _upperBinaryLookup(self._checkpoints, key, low, high);\\n\\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\\n }\\n\\n /**\\n * @dev Returns the value in the most recent checkpoint, or zero if there are no checkpoints.\\n */\\n function latest(Trace160 storage self) internal view returns (uint160) {\\n uint256 pos = self._checkpoints.length;\\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\\n }\\n\\n /**\\n * @dev Returns whether there is a checkpoint in the structure (i.e. it is not empty), and if so the key and value\\n * in the most recent checkpoint.\\n */\\n function latestCheckpoint(Trace160 storage self) internal view returns (bool exists, uint96 _key, uint160 _value) {\\n uint256 pos = self._checkpoints.length;\\n if (pos == 0) {\\n return (false, 0, 0);\\n } else {\\n Checkpoint160 memory ckpt = _unsafeAccess(self._checkpoints, pos - 1);\\n return (true, ckpt._key, ckpt._value);\\n }\\n }\\n\\n /**\\n * @dev Returns the number of checkpoint.\\n */\\n function length(Trace160 storage self) internal view returns (uint256) {\\n return self._checkpoints.length;\\n }\\n\\n /**\\n * @dev Pushes a (`key`, `value`) pair into an ordered list of checkpoints, either by inserting a new checkpoint,\\n * or by updating the last one.\\n */\\n function _insert(Checkpoint160[] storage self, uint96 key, uint160 value) private returns (uint160, uint160) {\\n uint256 pos = self.length;\\n\\n if (pos > 0) {\\n // Copying to memory is important here.\\n Checkpoint160 memory last = _unsafeAccess(self, pos - 1);\\n\\n // Checkpoint keys must be non-decreasing.\\n require(last._key <= key, \\\"Checkpoint: decreasing keys\\\");\\n\\n // Update or push new checkpoint\\n if (last._key == key) {\\n _unsafeAccess(self, pos - 1)._value = value;\\n } else {\\n self.push(Checkpoint160({_key: key, _value: value}));\\n }\\n return (last._value, value);\\n } else {\\n self.push(Checkpoint160({_key: key, _value: value}));\\n return (0, value);\\n }\\n }\\n\\n /**\\n * @dev Return the index of the last (most recent) checkpoint with key lower or equal than the search key, or `high` if there is none.\\n * `low` and `high` define a section where to do the search, with inclusive `low` and exclusive `high`.\\n *\\n * WARNING: `high` should not be greater than the array's length.\\n */\\n function _upperBinaryLookup(\\n Checkpoint160[] storage self,\\n uint96 key,\\n uint256 low,\\n uint256 high\\n ) private view returns (uint256) {\\n while (low < high) {\\n uint256 mid = MathUpgradeable.average(low, high);\\n if (_unsafeAccess(self, mid)._key > key) {\\n high = mid;\\n } else {\\n low = mid + 1;\\n }\\n }\\n return high;\\n }\\n\\n /**\\n * @dev Return the index of the first (oldest) checkpoint with key is greater or equal than the search key, or `high` if there is none.\\n * `low` and `high` define a section where to do the search, with inclusive `low` and exclusive `high`.\\n *\\n * WARNING: `high` should not be greater than the array's length.\\n */\\n function _lowerBinaryLookup(\\n Checkpoint160[] storage self,\\n uint96 key,\\n uint256 low,\\n uint256 high\\n ) private view returns (uint256) {\\n while (low < high) {\\n uint256 mid = MathUpgradeable.average(low, high);\\n if (_unsafeAccess(self, mid)._key < key) {\\n low = mid + 1;\\n } else {\\n high = mid;\\n }\\n }\\n return high;\\n }\\n\\n /**\\n * @dev Access an element of the array without performing bounds check. The position is assumed to be within bounds.\\n */\\n function _unsafeAccess(\\n Checkpoint160[] storage self,\\n uint256 pos\\n ) private pure returns (Checkpoint160 storage result) {\\n assembly {\\n mstore(0, self.slot)\\n result.slot := add(keccak256(0, 0x20), pos)\\n }\\n }\\n}\\n\",\"keccak256\":\"0x51ea916844ee2c53874c6895ce37acbca0250977b49b48909d75ad439f38f211\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/math/MathUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/math/Math.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard math utilities missing in the Solidity language.\\n */\\nlibrary MathUpgradeable {\\n enum Rounding {\\n Down, // Toward negative infinity\\n Up, // Toward infinity\\n Zero // Toward zero\\n }\\n\\n /**\\n * @dev Returns the largest of two numbers.\\n */\\n function max(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two numbers.\\n */\\n function min(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two numbers. The result is rounded towards\\n * zero.\\n */\\n function average(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b) / 2 can overflow.\\n return (a & b) + (a ^ b) / 2;\\n }\\n\\n /**\\n * @dev Returns the ceiling of the division of two numbers.\\n *\\n * This differs from standard division with `/` in that it rounds up instead\\n * of rounding down.\\n */\\n function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b - 1) / b can overflow on addition, so we distribute.\\n return a == 0 ? 0 : (a - 1) / b + 1;\\n }\\n\\n /**\\n * @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\\n * @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)\\n * with further edits by Uniswap Labs also under MIT license.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator) internal pure returns (uint256 result) {\\n unchecked {\\n // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use\\n // use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\\n // variables such that product = prod1 * 2^256 + prod0.\\n uint256 prod0; // Least significant 256 bits of the product\\n uint256 prod1; // Most significant 256 bits of the product\\n assembly {\\n let mm := mulmod(x, y, not(0))\\n prod0 := mul(x, y)\\n prod1 := sub(sub(mm, prod0), lt(mm, prod0))\\n }\\n\\n // Handle non-overflow cases, 256 by 256 division.\\n if (prod1 == 0) {\\n // Solidity will revert if denominator == 0, unlike the div opcode on its own.\\n // The surrounding unchecked block does not change this fact.\\n // See https://docs.soliditylang.org/en/latest/control-structures.html#checked-or-unchecked-arithmetic.\\n return prod0 / denominator;\\n }\\n\\n // Make sure the result is less than 2^256. Also prevents denominator == 0.\\n require(denominator > prod1, \\\"Math: mulDiv overflow\\\");\\n\\n ///////////////////////////////////////////////\\n // 512 by 256 division.\\n ///////////////////////////////////////////////\\n\\n // Make division exact by subtracting the remainder from [prod1 prod0].\\n uint256 remainder;\\n assembly {\\n // Compute remainder using mulmod.\\n remainder := mulmod(x, y, denominator)\\n\\n // Subtract 256 bit number from 512 bit number.\\n prod1 := sub(prod1, gt(remainder, prod0))\\n prod0 := sub(prod0, remainder)\\n }\\n\\n // Factor powers of two out of denominator and compute largest power of two divisor of denominator. Always >= 1.\\n // See https://cs.stackexchange.com/q/138556/92363.\\n\\n // Does not overflow because the denominator cannot be zero at this stage in the function.\\n uint256 twos = denominator & (~denominator + 1);\\n assembly {\\n // Divide denominator by twos.\\n denominator := div(denominator, twos)\\n\\n // Divide [prod1 prod0] by twos.\\n prod0 := div(prod0, twos)\\n\\n // Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one.\\n twos := add(div(sub(0, twos), twos), 1)\\n }\\n\\n // Shift in bits from prod1 into prod0.\\n prod0 |= prod1 * twos;\\n\\n // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such\\n // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for\\n // four bits. That is, denominator * inv = 1 mod 2^4.\\n uint256 inverse = (3 * denominator) ^ 2;\\n\\n // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also works\\n // in modular arithmetic, doubling the correct bits in each step.\\n inverse *= 2 - denominator * inverse; // inverse mod 2^8\\n inverse *= 2 - denominator * inverse; // inverse mod 2^16\\n inverse *= 2 - denominator * inverse; // inverse mod 2^32\\n inverse *= 2 - denominator * inverse; // inverse mod 2^64\\n inverse *= 2 - denominator * inverse; // inverse mod 2^128\\n inverse *= 2 - denominator * inverse; // inverse mod 2^256\\n\\n // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\\n // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is\\n // less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1\\n // is no longer required.\\n result = prod0 * inverse;\\n return result;\\n }\\n }\\n\\n /**\\n * @notice Calculates x * y / denominator with full precision, following the selected rounding direction.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator, Rounding rounding) internal pure returns (uint256) {\\n uint256 result = mulDiv(x, y, denominator);\\n if (rounding == Rounding.Up && mulmod(x, y, denominator) > 0) {\\n result += 1;\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down.\\n *\\n * Inspired by Henry S. Warren, Jr.'s \\\"Hacker's Delight\\\" (Chapter 11).\\n */\\n function sqrt(uint256 a) internal pure returns (uint256) {\\n if (a == 0) {\\n return 0;\\n }\\n\\n // For our first guess, we get the biggest power of 2 which is smaller than the square root of the target.\\n //\\n // We know that the \\\"msb\\\" (most significant bit) of our target number `a` is a power of 2 such that we have\\n // `msb(a) <= a < 2*msb(a)`. This value can be written `msb(a)=2**k` with `k=log2(a)`.\\n //\\n // This can be rewritten `2**log2(a) <= a < 2**(log2(a) + 1)`\\n // \\u2192 `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))`\\n // \\u2192 `2**(k/2) <= sqrt(a) < 2**((k+1)/2) <= 2**(k/2 + 1)`\\n //\\n // Consequently, `2**(log2(a) / 2)` is a good first approximation of `sqrt(a)` with at least 1 correct bit.\\n uint256 result = 1 << (log2(a) >> 1);\\n\\n // At this point `result` is an estimation with one bit of precision. We know the true value is a uint128,\\n // since it is the square root of a uint256. Newton's method converges quadratically (precision doubles at\\n // every iteration). We thus need at most 7 iteration to turn our partial result with one bit of precision\\n // into the expected uint128 result.\\n unchecked {\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n return min(result, a / result);\\n }\\n }\\n\\n /**\\n * @notice Calculates sqrt(a), following the selected rounding direction.\\n */\\n function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = sqrt(a);\\n return result + (rounding == Rounding.Up && result * result < a ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 2, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 128;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 64;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 32;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 16;\\n }\\n if (value >> 8 > 0) {\\n value >>= 8;\\n result += 8;\\n }\\n if (value >> 4 > 0) {\\n value >>= 4;\\n result += 4;\\n }\\n if (value >> 2 > 0) {\\n value >>= 2;\\n result += 2;\\n }\\n if (value >> 1 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 2, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log2(value);\\n return result + (rounding == Rounding.Up && 1 << result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 10, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >= 10 ** 64) {\\n value /= 10 ** 64;\\n result += 64;\\n }\\n if (value >= 10 ** 32) {\\n value /= 10 ** 32;\\n result += 32;\\n }\\n if (value >= 10 ** 16) {\\n value /= 10 ** 16;\\n result += 16;\\n }\\n if (value >= 10 ** 8) {\\n value /= 10 ** 8;\\n result += 8;\\n }\\n if (value >= 10 ** 4) {\\n value /= 10 ** 4;\\n result += 4;\\n }\\n if (value >= 10 ** 2) {\\n value /= 10 ** 2;\\n result += 2;\\n }\\n if (value >= 10 ** 1) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log10(value);\\n return result + (rounding == Rounding.Up && 10 ** result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 256, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n *\\n * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.\\n */\\n function log256(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 16;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 8;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 4;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 2;\\n }\\n if (value >> 8 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 256, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log256(value);\\n return result + (rounding == Rounding.Up && 1 << (result << 3) < value ? 1 : 0);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x2bc0007987c229ae7624eb29be6a9b84f6a6a5872f76248b15208b131ea41c4e\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/SafeCast.sol)\\n// This file was procedurally generated from scripts/generate/templates/SafeCast.js.\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Wrappers over Solidity's uintXX/intXX casting operators with added overflow\\n * checks.\\n *\\n * Downcasting from uint256/int256 in Solidity does not revert on overflow. This can\\n * easily result in undesired exploitation or bugs, since developers usually\\n * assume that overflows raise errors. `SafeCast` restores this intuition by\\n * reverting the transaction when such an operation overflows.\\n *\\n * Using this library instead of the unchecked operations eliminates an entire\\n * class of bugs, so it's recommended to use it always.\\n *\\n * Can be combined with {SafeMath} and {SignedSafeMath} to extend it to smaller types, by performing\\n * all math on `uint256` and `int256` and then downcasting.\\n */\\nlibrary SafeCastUpgradeable {\\n /**\\n * @dev Returns the downcasted uint248 from uint256, reverting on\\n * overflow (when the input is greater than largest uint248).\\n *\\n * Counterpart to Solidity's `uint248` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 248 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint248(uint256 value) internal pure returns (uint248) {\\n require(value <= type(uint248).max, \\\"SafeCast: value doesn't fit in 248 bits\\\");\\n return uint248(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint240 from uint256, reverting on\\n * overflow (when the input is greater than largest uint240).\\n *\\n * Counterpart to Solidity's `uint240` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 240 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint240(uint256 value) internal pure returns (uint240) {\\n require(value <= type(uint240).max, \\\"SafeCast: value doesn't fit in 240 bits\\\");\\n return uint240(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint232 from uint256, reverting on\\n * overflow (when the input is greater than largest uint232).\\n *\\n * Counterpart to Solidity's `uint232` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 232 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint232(uint256 value) internal pure returns (uint232) {\\n require(value <= type(uint232).max, \\\"SafeCast: value doesn't fit in 232 bits\\\");\\n return uint232(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint224 from uint256, reverting on\\n * overflow (when the input is greater than largest uint224).\\n *\\n * Counterpart to Solidity's `uint224` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 224 bits\\n *\\n * _Available since v4.2._\\n */\\n function toUint224(uint256 value) internal pure returns (uint224) {\\n require(value <= type(uint224).max, \\\"SafeCast: value doesn't fit in 224 bits\\\");\\n return uint224(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint216 from uint256, reverting on\\n * overflow (when the input is greater than largest uint216).\\n *\\n * Counterpart to Solidity's `uint216` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 216 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint216(uint256 value) internal pure returns (uint216) {\\n require(value <= type(uint216).max, \\\"SafeCast: value doesn't fit in 216 bits\\\");\\n return uint216(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint208 from uint256, reverting on\\n * overflow (when the input is greater than largest uint208).\\n *\\n * Counterpart to Solidity's `uint208` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 208 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint208(uint256 value) internal pure returns (uint208) {\\n require(value <= type(uint208).max, \\\"SafeCast: value doesn't fit in 208 bits\\\");\\n return uint208(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint200 from uint256, reverting on\\n * overflow (when the input is greater than largest uint200).\\n *\\n * Counterpart to Solidity's `uint200` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 200 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint200(uint256 value) internal pure returns (uint200) {\\n require(value <= type(uint200).max, \\\"SafeCast: value doesn't fit in 200 bits\\\");\\n return uint200(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint192 from uint256, reverting on\\n * overflow (when the input is greater than largest uint192).\\n *\\n * Counterpart to Solidity's `uint192` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 192 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint192(uint256 value) internal pure returns (uint192) {\\n require(value <= type(uint192).max, \\\"SafeCast: value doesn't fit in 192 bits\\\");\\n return uint192(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint184 from uint256, reverting on\\n * overflow (when the input is greater than largest uint184).\\n *\\n * Counterpart to Solidity's `uint184` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 184 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint184(uint256 value) internal pure returns (uint184) {\\n require(value <= type(uint184).max, \\\"SafeCast: value doesn't fit in 184 bits\\\");\\n return uint184(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint176 from uint256, reverting on\\n * overflow (when the input is greater than largest uint176).\\n *\\n * Counterpart to Solidity's `uint176` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 176 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint176(uint256 value) internal pure returns (uint176) {\\n require(value <= type(uint176).max, \\\"SafeCast: value doesn't fit in 176 bits\\\");\\n return uint176(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint168 from uint256, reverting on\\n * overflow (when the input is greater than largest uint168).\\n *\\n * Counterpart to Solidity's `uint168` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 168 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint168(uint256 value) internal pure returns (uint168) {\\n require(value <= type(uint168).max, \\\"SafeCast: value doesn't fit in 168 bits\\\");\\n return uint168(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint160 from uint256, reverting on\\n * overflow (when the input is greater than largest uint160).\\n *\\n * Counterpart to Solidity's `uint160` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 160 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint160(uint256 value) internal pure returns (uint160) {\\n require(value <= type(uint160).max, \\\"SafeCast: value doesn't fit in 160 bits\\\");\\n return uint160(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint152 from uint256, reverting on\\n * overflow (when the input is greater than largest uint152).\\n *\\n * Counterpart to Solidity's `uint152` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 152 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint152(uint256 value) internal pure returns (uint152) {\\n require(value <= type(uint152).max, \\\"SafeCast: value doesn't fit in 152 bits\\\");\\n return uint152(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint144 from uint256, reverting on\\n * overflow (when the input is greater than largest uint144).\\n *\\n * Counterpart to Solidity's `uint144` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 144 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint144(uint256 value) internal pure returns (uint144) {\\n require(value <= type(uint144).max, \\\"SafeCast: value doesn't fit in 144 bits\\\");\\n return uint144(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint136 from uint256, reverting on\\n * overflow (when the input is greater than largest uint136).\\n *\\n * Counterpart to Solidity's `uint136` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 136 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint136(uint256 value) internal pure returns (uint136) {\\n require(value <= type(uint136).max, \\\"SafeCast: value doesn't fit in 136 bits\\\");\\n return uint136(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint128 from uint256, reverting on\\n * overflow (when the input is greater than largest uint128).\\n *\\n * Counterpart to Solidity's `uint128` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 128 bits\\n *\\n * _Available since v2.5._\\n */\\n function toUint128(uint256 value) internal pure returns (uint128) {\\n require(value <= type(uint128).max, \\\"SafeCast: value doesn't fit in 128 bits\\\");\\n return uint128(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint120 from uint256, reverting on\\n * overflow (when the input is greater than largest uint120).\\n *\\n * Counterpart to Solidity's `uint120` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 120 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint120(uint256 value) internal pure returns (uint120) {\\n require(value <= type(uint120).max, \\\"SafeCast: value doesn't fit in 120 bits\\\");\\n return uint120(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint112 from uint256, reverting on\\n * overflow (when the input is greater than largest uint112).\\n *\\n * Counterpart to Solidity's `uint112` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 112 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint112(uint256 value) internal pure returns (uint112) {\\n require(value <= type(uint112).max, \\\"SafeCast: value doesn't fit in 112 bits\\\");\\n return uint112(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint104 from uint256, reverting on\\n * overflow (when the input is greater than largest uint104).\\n *\\n * Counterpart to Solidity's `uint104` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 104 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint104(uint256 value) internal pure returns (uint104) {\\n require(value <= type(uint104).max, \\\"SafeCast: value doesn't fit in 104 bits\\\");\\n return uint104(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint96 from uint256, reverting on\\n * overflow (when the input is greater than largest uint96).\\n *\\n * Counterpart to Solidity's `uint96` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 96 bits\\n *\\n * _Available since v4.2._\\n */\\n function toUint96(uint256 value) internal pure returns (uint96) {\\n require(value <= type(uint96).max, \\\"SafeCast: value doesn't fit in 96 bits\\\");\\n return uint96(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint88 from uint256, reverting on\\n * overflow (when the input is greater than largest uint88).\\n *\\n * Counterpart to Solidity's `uint88` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 88 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint88(uint256 value) internal pure returns (uint88) {\\n require(value <= type(uint88).max, \\\"SafeCast: value doesn't fit in 88 bits\\\");\\n return uint88(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint80 from uint256, reverting on\\n * overflow (when the input is greater than largest uint80).\\n *\\n * Counterpart to Solidity's `uint80` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 80 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint80(uint256 value) internal pure returns (uint80) {\\n require(value <= type(uint80).max, \\\"SafeCast: value doesn't fit in 80 bits\\\");\\n return uint80(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint72 from uint256, reverting on\\n * overflow (when the input is greater than largest uint72).\\n *\\n * Counterpart to Solidity's `uint72` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 72 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint72(uint256 value) internal pure returns (uint72) {\\n require(value <= type(uint72).max, \\\"SafeCast: value doesn't fit in 72 bits\\\");\\n return uint72(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint64 from uint256, reverting on\\n * overflow (when the input is greater than largest uint64).\\n *\\n * Counterpart to Solidity's `uint64` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 64 bits\\n *\\n * _Available since v2.5._\\n */\\n function toUint64(uint256 value) internal pure returns (uint64) {\\n require(value <= type(uint64).max, \\\"SafeCast: value doesn't fit in 64 bits\\\");\\n return uint64(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint56 from uint256, reverting on\\n * overflow (when the input is greater than largest uint56).\\n *\\n * Counterpart to Solidity's `uint56` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 56 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint56(uint256 value) internal pure returns (uint56) {\\n require(value <= type(uint56).max, \\\"SafeCast: value doesn't fit in 56 bits\\\");\\n return uint56(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint48 from uint256, reverting on\\n * overflow (when the input is greater than largest uint48).\\n *\\n * Counterpart to Solidity's `uint48` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 48 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint48(uint256 value) internal pure returns (uint48) {\\n require(value <= type(uint48).max, \\\"SafeCast: value doesn't fit in 48 bits\\\");\\n return uint48(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint40 from uint256, reverting on\\n * overflow (when the input is greater than largest uint40).\\n *\\n * Counterpart to Solidity's `uint40` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 40 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint40(uint256 value) internal pure returns (uint40) {\\n require(value <= type(uint40).max, \\\"SafeCast: value doesn't fit in 40 bits\\\");\\n return uint40(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint32 from uint256, reverting on\\n * overflow (when the input is greater than largest uint32).\\n *\\n * Counterpart to Solidity's `uint32` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 32 bits\\n *\\n * _Available since v2.5._\\n */\\n function toUint32(uint256 value) internal pure returns (uint32) {\\n require(value <= type(uint32).max, \\\"SafeCast: value doesn't fit in 32 bits\\\");\\n return uint32(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint24 from uint256, reverting on\\n * overflow (when the input is greater than largest uint24).\\n *\\n * Counterpart to Solidity's `uint24` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 24 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint24(uint256 value) internal pure returns (uint24) {\\n require(value <= type(uint24).max, \\\"SafeCast: value doesn't fit in 24 bits\\\");\\n return uint24(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint16 from uint256, reverting on\\n * overflow (when the input is greater than largest uint16).\\n *\\n * Counterpart to Solidity's `uint16` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 16 bits\\n *\\n * _Available since v2.5._\\n */\\n function toUint16(uint256 value) internal pure returns (uint16) {\\n require(value <= type(uint16).max, \\\"SafeCast: value doesn't fit in 16 bits\\\");\\n return uint16(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint8 from uint256, reverting on\\n * overflow (when the input is greater than largest uint8).\\n *\\n * Counterpart to Solidity's `uint8` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 8 bits\\n *\\n * _Available since v2.5._\\n */\\n function toUint8(uint256 value) internal pure returns (uint8) {\\n require(value <= type(uint8).max, \\\"SafeCast: value doesn't fit in 8 bits\\\");\\n return uint8(value);\\n }\\n\\n /**\\n * @dev Converts a signed int256 into an unsigned uint256.\\n *\\n * Requirements:\\n *\\n * - input must be greater than or equal to 0.\\n *\\n * _Available since v3.0._\\n */\\n function toUint256(int256 value) internal pure returns (uint256) {\\n require(value >= 0, \\\"SafeCast: value must be positive\\\");\\n return uint256(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted int248 from int256, reverting on\\n * overflow (when the input is less than smallest int248 or\\n * greater than largest int248).\\n *\\n * Counterpart to Solidity's `int248` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 248 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt248(int256 value) internal pure returns (int248 downcasted) {\\n downcasted = int248(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 248 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int240 from int256, reverting on\\n * overflow (when the input is less than smallest int240 or\\n * greater than largest int240).\\n *\\n * Counterpart to Solidity's `int240` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 240 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt240(int256 value) internal pure returns (int240 downcasted) {\\n downcasted = int240(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 240 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int232 from int256, reverting on\\n * overflow (when the input is less than smallest int232 or\\n * greater than largest int232).\\n *\\n * Counterpart to Solidity's `int232` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 232 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt232(int256 value) internal pure returns (int232 downcasted) {\\n downcasted = int232(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 232 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int224 from int256, reverting on\\n * overflow (when the input is less than smallest int224 or\\n * greater than largest int224).\\n *\\n * Counterpart to Solidity's `int224` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 224 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt224(int256 value) internal pure returns (int224 downcasted) {\\n downcasted = int224(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 224 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int216 from int256, reverting on\\n * overflow (when the input is less than smallest int216 or\\n * greater than largest int216).\\n *\\n * Counterpart to Solidity's `int216` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 216 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt216(int256 value) internal pure returns (int216 downcasted) {\\n downcasted = int216(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 216 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int208 from int256, reverting on\\n * overflow (when the input is less than smallest int208 or\\n * greater than largest int208).\\n *\\n * Counterpart to Solidity's `int208` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 208 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt208(int256 value) internal pure returns (int208 downcasted) {\\n downcasted = int208(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 208 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int200 from int256, reverting on\\n * overflow (when the input is less than smallest int200 or\\n * greater than largest int200).\\n *\\n * Counterpart to Solidity's `int200` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 200 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt200(int256 value) internal pure returns (int200 downcasted) {\\n downcasted = int200(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 200 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int192 from int256, reverting on\\n * overflow (when the input is less than smallest int192 or\\n * greater than largest int192).\\n *\\n * Counterpart to Solidity's `int192` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 192 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt192(int256 value) internal pure returns (int192 downcasted) {\\n downcasted = int192(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 192 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int184 from int256, reverting on\\n * overflow (when the input is less than smallest int184 or\\n * greater than largest int184).\\n *\\n * Counterpart to Solidity's `int184` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 184 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt184(int256 value) internal pure returns (int184 downcasted) {\\n downcasted = int184(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 184 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int176 from int256, reverting on\\n * overflow (when the input is less than smallest int176 or\\n * greater than largest int176).\\n *\\n * Counterpart to Solidity's `int176` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 176 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt176(int256 value) internal pure returns (int176 downcasted) {\\n downcasted = int176(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 176 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int168 from int256, reverting on\\n * overflow (when the input is less than smallest int168 or\\n * greater than largest int168).\\n *\\n * Counterpart to Solidity's `int168` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 168 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt168(int256 value) internal pure returns (int168 downcasted) {\\n downcasted = int168(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 168 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int160 from int256, reverting on\\n * overflow (when the input is less than smallest int160 or\\n * greater than largest int160).\\n *\\n * Counterpart to Solidity's `int160` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 160 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt160(int256 value) internal pure returns (int160 downcasted) {\\n downcasted = int160(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 160 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int152 from int256, reverting on\\n * overflow (when the input is less than smallest int152 or\\n * greater than largest int152).\\n *\\n * Counterpart to Solidity's `int152` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 152 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt152(int256 value) internal pure returns (int152 downcasted) {\\n downcasted = int152(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 152 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int144 from int256, reverting on\\n * overflow (when the input is less than smallest int144 or\\n * greater than largest int144).\\n *\\n * Counterpart to Solidity's `int144` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 144 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt144(int256 value) internal pure returns (int144 downcasted) {\\n downcasted = int144(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 144 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int136 from int256, reverting on\\n * overflow (when the input is less than smallest int136 or\\n * greater than largest int136).\\n *\\n * Counterpart to Solidity's `int136` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 136 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt136(int256 value) internal pure returns (int136 downcasted) {\\n downcasted = int136(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 136 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int128 from int256, reverting on\\n * overflow (when the input is less than smallest int128 or\\n * greater than largest int128).\\n *\\n * Counterpart to Solidity's `int128` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 128 bits\\n *\\n * _Available since v3.1._\\n */\\n function toInt128(int256 value) internal pure returns (int128 downcasted) {\\n downcasted = int128(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 128 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int120 from int256, reverting on\\n * overflow (when the input is less than smallest int120 or\\n * greater than largest int120).\\n *\\n * Counterpart to Solidity's `int120` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 120 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt120(int256 value) internal pure returns (int120 downcasted) {\\n downcasted = int120(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 120 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int112 from int256, reverting on\\n * overflow (when the input is less than smallest int112 or\\n * greater than largest int112).\\n *\\n * Counterpart to Solidity's `int112` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 112 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt112(int256 value) internal pure returns (int112 downcasted) {\\n downcasted = int112(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 112 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int104 from int256, reverting on\\n * overflow (when the input is less than smallest int104 or\\n * greater than largest int104).\\n *\\n * Counterpart to Solidity's `int104` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 104 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt104(int256 value) internal pure returns (int104 downcasted) {\\n downcasted = int104(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 104 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int96 from int256, reverting on\\n * overflow (when the input is less than smallest int96 or\\n * greater than largest int96).\\n *\\n * Counterpart to Solidity's `int96` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 96 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt96(int256 value) internal pure returns (int96 downcasted) {\\n downcasted = int96(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 96 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int88 from int256, reverting on\\n * overflow (when the input is less than smallest int88 or\\n * greater than largest int88).\\n *\\n * Counterpart to Solidity's `int88` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 88 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt88(int256 value) internal pure returns (int88 downcasted) {\\n downcasted = int88(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 88 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int80 from int256, reverting on\\n * overflow (when the input is less than smallest int80 or\\n * greater than largest int80).\\n *\\n * Counterpart to Solidity's `int80` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 80 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt80(int256 value) internal pure returns (int80 downcasted) {\\n downcasted = int80(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 80 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int72 from int256, reverting on\\n * overflow (when the input is less than smallest int72 or\\n * greater than largest int72).\\n *\\n * Counterpart to Solidity's `int72` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 72 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt72(int256 value) internal pure returns (int72 downcasted) {\\n downcasted = int72(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 72 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int64 from int256, reverting on\\n * overflow (when the input is less than smallest int64 or\\n * greater than largest int64).\\n *\\n * Counterpart to Solidity's `int64` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 64 bits\\n *\\n * _Available since v3.1._\\n */\\n function toInt64(int256 value) internal pure returns (int64 downcasted) {\\n downcasted = int64(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 64 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int56 from int256, reverting on\\n * overflow (when the input is less than smallest int56 or\\n * greater than largest int56).\\n *\\n * Counterpart to Solidity's `int56` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 56 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt56(int256 value) internal pure returns (int56 downcasted) {\\n downcasted = int56(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 56 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int48 from int256, reverting on\\n * overflow (when the input is less than smallest int48 or\\n * greater than largest int48).\\n *\\n * Counterpart to Solidity's `int48` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 48 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt48(int256 value) internal pure returns (int48 downcasted) {\\n downcasted = int48(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 48 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int40 from int256, reverting on\\n * overflow (when the input is less than smallest int40 or\\n * greater than largest int40).\\n *\\n * Counterpart to Solidity's `int40` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 40 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt40(int256 value) internal pure returns (int40 downcasted) {\\n downcasted = int40(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 40 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int32 from int256, reverting on\\n * overflow (when the input is less than smallest int32 or\\n * greater than largest int32).\\n *\\n * Counterpart to Solidity's `int32` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 32 bits\\n *\\n * _Available since v3.1._\\n */\\n function toInt32(int256 value) internal pure returns (int32 downcasted) {\\n downcasted = int32(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 32 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int24 from int256, reverting on\\n * overflow (when the input is less than smallest int24 or\\n * greater than largest int24).\\n *\\n * Counterpart to Solidity's `int24` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 24 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt24(int256 value) internal pure returns (int24 downcasted) {\\n downcasted = int24(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 24 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int16 from int256, reverting on\\n * overflow (when the input is less than smallest int16 or\\n * greater than largest int16).\\n *\\n * Counterpart to Solidity's `int16` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 16 bits\\n *\\n * _Available since v3.1._\\n */\\n function toInt16(int256 value) internal pure returns (int16 downcasted) {\\n downcasted = int16(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 16 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int8 from int256, reverting on\\n * overflow (when the input is less than smallest int8 or\\n * greater than largest int8).\\n *\\n * Counterpart to Solidity's `int8` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 8 bits\\n *\\n * _Available since v3.1._\\n */\\n function toInt8(int256 value) internal pure returns (int8 downcasted) {\\n downcasted = int8(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 8 bits\\\");\\n }\\n\\n /**\\n * @dev Converts an unsigned uint256 into a signed int256.\\n *\\n * Requirements:\\n *\\n * - input must be less than or equal to maxInt256.\\n *\\n * _Available since v3.0._\\n */\\n function toInt256(uint256 value) internal pure returns (int256) {\\n // Note: Unsafe cast below is okay because `type(int256).max` is guaranteed to be positive\\n require(value <= uint256(type(int256).max), \\\"SafeCast: value doesn't fit in an int256\\\");\\n return int256(value);\\n }\\n}\\n\",\"keccak256\":\"0xcef50f95b43b038aa40aed25b62fc45906c681a5c1d504a4fdcf3bc6330a8d4b\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol":{"ContextUpgradeable":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"}],"devdoc":{"details":"Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.","kind":"dev","methods":{},"stateVariables":{"__gap":{"details":"This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain. See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"}],\"devdoc\":{\"details\":\"Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.\",\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"__gap\":{\"details\":\"This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain. See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":\"ContextUpgradeable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n function __Context_init() internal onlyInitializing {\\n }\\n\\n function __Context_init_unchained() internal onlyInitializing {\\n }\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n function _contextSuffixLength() internal view virtual returns (uint256) {\\n return 0;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x75097e35253e7fb282ee4d7f27a80eaacfa759923185bf17302a89cbc059c5ef\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":372,"contract":"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":375,"contract":"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":2592,"contract":"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable","label":"__gap","offset":0,"slot":"1","type":"t_array(t_uint256)50_storage"}],"types":{"t_array(t_uint256)50_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[50]","numberOfBytes":"1600"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol":{"CountersUpgradeable":{"abi":[],"devdoc":{"author":"Matt Condon (@shrugs)","details":"Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number of elements in a mapping, issuing ERC721 ids, or counting request ids. Include with `using Counters for Counters.Counter;`","kind":"dev","methods":{},"title":"Counters","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"602d6037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a","opcodes":"PUSH1 0x2D PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"424:982:9:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;424:982:9;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"424:982:9:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"9000","executionCost":"94","totalCost":"9094"},"internal":{"current(struct CountersUpgradeable.Counter storage pointer)":"infinite","decrement(struct CountersUpgradeable.Counter storage pointer)":"infinite","increment(struct CountersUpgradeable.Counter storage pointer)":"infinite","reset(struct CountersUpgradeable.Counter storage pointer)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"author\":\"Matt Condon (@shrugs)\",\"details\":\"Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number of elements in a mapping, issuing ERC721 ids, or counting request ids. Include with `using Counters for Counters.Counter;`\",\"kind\":\"dev\",\"methods\":{},\"title\":\"Counters\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol\":\"CountersUpgradeable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Counters.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title Counters\\n * @author Matt Condon (@shrugs)\\n * @dev Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number\\n * of elements in a mapping, issuing ERC721 ids, or counting request ids.\\n *\\n * Include with `using Counters for Counters.Counter;`\\n */\\nlibrary CountersUpgradeable {\\n struct Counter {\\n // This variable should never be directly accessed by users of the library: interactions must be restricted to\\n // the library's function. As of Solidity v0.5.2, this cannot be enforced, though there is a proposal to add\\n // this feature: see https://github.com/ethereum/solidity/issues/4637\\n uint256 _value; // default: 0\\n }\\n\\n function current(Counter storage counter) internal view returns (uint256) {\\n return counter._value;\\n }\\n\\n function increment(Counter storage counter) internal {\\n unchecked {\\n counter._value += 1;\\n }\\n }\\n\\n function decrement(Counter storage counter) internal {\\n uint256 value = counter._value;\\n require(value > 0, \\\"Counter: decrement overflow\\\");\\n unchecked {\\n counter._value = value - 1;\\n }\\n }\\n\\n function reset(Counter storage counter) internal {\\n counter._value = 0;\\n }\\n}\\n\",\"keccak256\":\"0x798741e231b22b81e2dd2eddaaf8832dee4baf5cd8e2dbaa5c1dd12a1c053c4d\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol":{"StorageSlotUpgradeable":{"abi":[],"devdoc":{"details":"Library for reading and writing primitive types to specific storage slots. Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts. This library helps with reading and writing to such slots without the need for inline assembly. The functions in this library return Slot structs that contain a `value` member that can be used to read or write. Example usage to set ERC1967 implementation slot: ```solidity contract ERC1967 { bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc; function _getImplementation() internal view returns (address) { return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value; } function _setImplementation(address newImplementation) internal { require(Address.isContract(newImplementation), \"ERC1967: new implementation is not a contract\"); StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation; } } ``` _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._ _Available since v4.9 for `string`, `bytes`._","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"602d6037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a","opcodes":"PUSH1 0x2D PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"1420:2696:10:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;1420:2696:10;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"1420:2696:10:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"9000","executionCost":"94","totalCost":"9094"},"internal":{"getAddressSlot(bytes32)":"infinite","getBooleanSlot(bytes32)":"infinite","getBytes32Slot(bytes32)":"infinite","getBytesSlot(bytes storage pointer)":"infinite","getBytesSlot(bytes32)":"infinite","getStringSlot(bytes32)":"infinite","getStringSlot(string storage pointer)":"infinite","getUint256Slot(bytes32)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Library for reading and writing primitive types to specific storage slots. Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts. This library helps with reading and writing to such slots without the need for inline assembly. The functions in this library return Slot structs that contain a `value` member that can be used to read or write. Example usage to set ERC1967 implementation slot: ```solidity contract ERC1967 { bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc; function _getImplementation() internal view returns (address) { return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value; } function _setImplementation(address newImplementation) internal { require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\"); StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation; } } ``` _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._ _Available since v4.9 for `string`, `bytes`._\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol\":\"StorageSlotUpgradeable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/StorageSlot.sol)\\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```solidity\\n * contract ERC1967 {\\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n * function _getImplementation() internal view returns (address) {\\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n * }\\n *\\n * function _setImplementation(address newImplementation) internal {\\n * require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n * }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._\\n * _Available since v4.9 for `string`, `bytes`._\\n */\\nlibrary StorageSlotUpgradeable {\\n struct AddressSlot {\\n address value;\\n }\\n\\n struct BooleanSlot {\\n bool value;\\n }\\n\\n struct Bytes32Slot {\\n bytes32 value;\\n }\\n\\n struct Uint256Slot {\\n uint256 value;\\n }\\n\\n struct StringSlot {\\n string value;\\n }\\n\\n struct BytesSlot {\\n bytes value;\\n }\\n\\n /**\\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n */\\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n */\\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n */\\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n */\\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` with member `value` located at `slot`.\\n */\\n function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\\n */\\n function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` with member `value` located at `slot`.\\n */\\n function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\\n */\\n function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n}\\n\",\"keccak256\":\"0x07ac95acad040f1fb1f6120dd0aa5f702db69446e95f82613721879d30de0908\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol":{"ERC165Upgradeable":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"Implementation of the {IERC165} interface. Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check for the additional interface id that will be supported. For example: ```solidity function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); } ``` Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.","kind":"dev","methods":{"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."}},"stateVariables":{"__gap":{"details":"This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain. See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of the {IERC165} interface. Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check for the additional interface id that will be supported. For example: ```solidity function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); } ``` Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\",\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"}},\"stateVariables\":{\"__gap\":{\"details\":\"This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain. See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":\"ERC165Upgradeable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165Upgradeable.sol\\\";\\nimport {Initializable} from \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165Upgradeable is Initializable, IERC165Upgradeable {\\n function __ERC165_init() internal onlyInitializing {\\n }\\n\\n function __ERC165_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165Upgradeable).interfaceId;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0xd90d7723512df65ae417adaf0801042940f0dabd60039ceeaffe34aa5b238da1\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165Upgradeable {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":372,"contract":"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":375,"contract":"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":2821,"contract":"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable","label":"__gap","offset":0,"slot":"1","type":"t_array(t_uint256)50_storage"}],"types":{"t_array(t_uint256)50_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[50]","numberOfBytes":"1600"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol":{"IERC165Upgradeable":{"abi":[{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"Interface of the ERC165 standard, as defined in the https://eips.ethereum.org/EIPS/eip-165[EIP]. Implementers can declare support of contract interfaces, which can then be queried by others ({ERC165Checker}). For an implementation, see {ERC165}.","kind":"dev","methods":{"supportsInterface(bytes4)":{"details":"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC165 standard, as defined in the https://eips.ethereum.org/EIPS/eip-165[EIP]. Implementers can declare support of contract interfaces, which can then be queried by others ({ERC165Checker}). For an implementation, see {ERC165}.\",\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":\"IERC165Upgradeable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165Upgradeable {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/utils/math/MathUpgradeable.sol":{"MathUpgradeable":{"abi":[],"devdoc":{"details":"Standard math utilities missing in the Solidity language.","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"602d6037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a","opcodes":"PUSH1 0x2D PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"202:12593:13:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;202:12593:13;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"202:12593:13:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"9000","executionCost":"94","totalCost":"9094"},"internal":{"average(uint256,uint256)":"infinite","ceilDiv(uint256,uint256)":"infinite","log10(uint256)":"infinite","log10(uint256,enum MathUpgradeable.Rounding)":"infinite","log2(uint256)":"infinite","log2(uint256,enum MathUpgradeable.Rounding)":"infinite","log256(uint256)":"infinite","log256(uint256,enum MathUpgradeable.Rounding)":"infinite","max(uint256,uint256)":"infinite","min(uint256,uint256)":"infinite","mulDiv(uint256,uint256,uint256)":"infinite","mulDiv(uint256,uint256,uint256,enum MathUpgradeable.Rounding)":"infinite","sqrt(uint256)":"infinite","sqrt(uint256,enum MathUpgradeable.Rounding)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Standard math utilities missing in the Solidity language.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/utils/math/MathUpgradeable.sol\":\"MathUpgradeable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/utils/math/MathUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/math/Math.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard math utilities missing in the Solidity language.\\n */\\nlibrary MathUpgradeable {\\n enum Rounding {\\n Down, // Toward negative infinity\\n Up, // Toward infinity\\n Zero // Toward zero\\n }\\n\\n /**\\n * @dev Returns the largest of two numbers.\\n */\\n function max(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two numbers.\\n */\\n function min(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two numbers. The result is rounded towards\\n * zero.\\n */\\n function average(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b) / 2 can overflow.\\n return (a & b) + (a ^ b) / 2;\\n }\\n\\n /**\\n * @dev Returns the ceiling of the division of two numbers.\\n *\\n * This differs from standard division with `/` in that it rounds up instead\\n * of rounding down.\\n */\\n function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b - 1) / b can overflow on addition, so we distribute.\\n return a == 0 ? 0 : (a - 1) / b + 1;\\n }\\n\\n /**\\n * @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\\n * @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)\\n * with further edits by Uniswap Labs also under MIT license.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator) internal pure returns (uint256 result) {\\n unchecked {\\n // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use\\n // use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\\n // variables such that product = prod1 * 2^256 + prod0.\\n uint256 prod0; // Least significant 256 bits of the product\\n uint256 prod1; // Most significant 256 bits of the product\\n assembly {\\n let mm := mulmod(x, y, not(0))\\n prod0 := mul(x, y)\\n prod1 := sub(sub(mm, prod0), lt(mm, prod0))\\n }\\n\\n // Handle non-overflow cases, 256 by 256 division.\\n if (prod1 == 0) {\\n // Solidity will revert if denominator == 0, unlike the div opcode on its own.\\n // The surrounding unchecked block does not change this fact.\\n // See https://docs.soliditylang.org/en/latest/control-structures.html#checked-or-unchecked-arithmetic.\\n return prod0 / denominator;\\n }\\n\\n // Make sure the result is less than 2^256. Also prevents denominator == 0.\\n require(denominator > prod1, \\\"Math: mulDiv overflow\\\");\\n\\n ///////////////////////////////////////////////\\n // 512 by 256 division.\\n ///////////////////////////////////////////////\\n\\n // Make division exact by subtracting the remainder from [prod1 prod0].\\n uint256 remainder;\\n assembly {\\n // Compute remainder using mulmod.\\n remainder := mulmod(x, y, denominator)\\n\\n // Subtract 256 bit number from 512 bit number.\\n prod1 := sub(prod1, gt(remainder, prod0))\\n prod0 := sub(prod0, remainder)\\n }\\n\\n // Factor powers of two out of denominator and compute largest power of two divisor of denominator. Always >= 1.\\n // See https://cs.stackexchange.com/q/138556/92363.\\n\\n // Does not overflow because the denominator cannot be zero at this stage in the function.\\n uint256 twos = denominator & (~denominator + 1);\\n assembly {\\n // Divide denominator by twos.\\n denominator := div(denominator, twos)\\n\\n // Divide [prod1 prod0] by twos.\\n prod0 := div(prod0, twos)\\n\\n // Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one.\\n twos := add(div(sub(0, twos), twos), 1)\\n }\\n\\n // Shift in bits from prod1 into prod0.\\n prod0 |= prod1 * twos;\\n\\n // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such\\n // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for\\n // four bits. That is, denominator * inv = 1 mod 2^4.\\n uint256 inverse = (3 * denominator) ^ 2;\\n\\n // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also works\\n // in modular arithmetic, doubling the correct bits in each step.\\n inverse *= 2 - denominator * inverse; // inverse mod 2^8\\n inverse *= 2 - denominator * inverse; // inverse mod 2^16\\n inverse *= 2 - denominator * inverse; // inverse mod 2^32\\n inverse *= 2 - denominator * inverse; // inverse mod 2^64\\n inverse *= 2 - denominator * inverse; // inverse mod 2^128\\n inverse *= 2 - denominator * inverse; // inverse mod 2^256\\n\\n // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\\n // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is\\n // less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1\\n // is no longer required.\\n result = prod0 * inverse;\\n return result;\\n }\\n }\\n\\n /**\\n * @notice Calculates x * y / denominator with full precision, following the selected rounding direction.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator, Rounding rounding) internal pure returns (uint256) {\\n uint256 result = mulDiv(x, y, denominator);\\n if (rounding == Rounding.Up && mulmod(x, y, denominator) > 0) {\\n result += 1;\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down.\\n *\\n * Inspired by Henry S. Warren, Jr.'s \\\"Hacker's Delight\\\" (Chapter 11).\\n */\\n function sqrt(uint256 a) internal pure returns (uint256) {\\n if (a == 0) {\\n return 0;\\n }\\n\\n // For our first guess, we get the biggest power of 2 which is smaller than the square root of the target.\\n //\\n // We know that the \\\"msb\\\" (most significant bit) of our target number `a` is a power of 2 such that we have\\n // `msb(a) <= a < 2*msb(a)`. This value can be written `msb(a)=2**k` with `k=log2(a)`.\\n //\\n // This can be rewritten `2**log2(a) <= a < 2**(log2(a) + 1)`\\n // \\u2192 `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))`\\n // \\u2192 `2**(k/2) <= sqrt(a) < 2**((k+1)/2) <= 2**(k/2 + 1)`\\n //\\n // Consequently, `2**(log2(a) / 2)` is a good first approximation of `sqrt(a)` with at least 1 correct bit.\\n uint256 result = 1 << (log2(a) >> 1);\\n\\n // At this point `result` is an estimation with one bit of precision. We know the true value is a uint128,\\n // since it is the square root of a uint256. Newton's method converges quadratically (precision doubles at\\n // every iteration). We thus need at most 7 iteration to turn our partial result with one bit of precision\\n // into the expected uint128 result.\\n unchecked {\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n return min(result, a / result);\\n }\\n }\\n\\n /**\\n * @notice Calculates sqrt(a), following the selected rounding direction.\\n */\\n function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = sqrt(a);\\n return result + (rounding == Rounding.Up && result * result < a ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 2, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 128;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 64;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 32;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 16;\\n }\\n if (value >> 8 > 0) {\\n value >>= 8;\\n result += 8;\\n }\\n if (value >> 4 > 0) {\\n value >>= 4;\\n result += 4;\\n }\\n if (value >> 2 > 0) {\\n value >>= 2;\\n result += 2;\\n }\\n if (value >> 1 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 2, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log2(value);\\n return result + (rounding == Rounding.Up && 1 << result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 10, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >= 10 ** 64) {\\n value /= 10 ** 64;\\n result += 64;\\n }\\n if (value >= 10 ** 32) {\\n value /= 10 ** 32;\\n result += 32;\\n }\\n if (value >= 10 ** 16) {\\n value /= 10 ** 16;\\n result += 16;\\n }\\n if (value >= 10 ** 8) {\\n value /= 10 ** 8;\\n result += 8;\\n }\\n if (value >= 10 ** 4) {\\n value /= 10 ** 4;\\n result += 4;\\n }\\n if (value >= 10 ** 2) {\\n value /= 10 ** 2;\\n result += 2;\\n }\\n if (value >= 10 ** 1) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log10(value);\\n return result + (rounding == Rounding.Up && 10 ** result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 256, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n *\\n * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.\\n */\\n function log256(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 16;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 8;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 4;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 2;\\n }\\n if (value >> 8 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 256, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log256(value);\\n return result + (rounding == Rounding.Up && 1 << (result << 3) < value ? 1 : 0);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x2bc0007987c229ae7624eb29be6a9b84f6a6a5872f76248b15208b131ea41c4e\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol":{"SafeCastUpgradeable":{"abi":[],"devdoc":{"details":"Wrappers over Solidity's uintXX/intXX casting operators with added overflow checks. Downcasting from uint256/int256 in Solidity does not revert on overflow. This can easily result in undesired exploitation or bugs, since developers usually assume that overflows raise errors. `SafeCast` restores this intuition by reverting the transaction when such an operation overflows. Using this library instead of the unchecked operations eliminates an entire class of bugs, so it's recommended to use it always. Can be combined with {SafeMath} and {SignedSafeMath} to extend it to smaller types, by performing all math on `uint256` and `int256` and then downcasting.","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"602d6037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a","opcodes":"PUSH1 0x2D PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"927:34164:14:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;927:34164:14;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"927:34164:14:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"9000","executionCost":"94","totalCost":"9094"},"internal":{"toInt104(int256)":"infinite","toInt112(int256)":"infinite","toInt120(int256)":"infinite","toInt128(int256)":"infinite","toInt136(int256)":"infinite","toInt144(int256)":"infinite","toInt152(int256)":"infinite","toInt16(int256)":"infinite","toInt160(int256)":"infinite","toInt168(int256)":"infinite","toInt176(int256)":"infinite","toInt184(int256)":"infinite","toInt192(int256)":"infinite","toInt200(int256)":"infinite","toInt208(int256)":"infinite","toInt216(int256)":"infinite","toInt224(int256)":"infinite","toInt232(int256)":"infinite","toInt24(int256)":"infinite","toInt240(int256)":"infinite","toInt248(int256)":"infinite","toInt256(uint256)":"infinite","toInt32(int256)":"infinite","toInt40(int256)":"infinite","toInt48(int256)":"infinite","toInt56(int256)":"infinite","toInt64(int256)":"infinite","toInt72(int256)":"infinite","toInt8(int256)":"infinite","toInt80(int256)":"infinite","toInt88(int256)":"infinite","toInt96(int256)":"infinite","toUint104(uint256)":"infinite","toUint112(uint256)":"infinite","toUint120(uint256)":"infinite","toUint128(uint256)":"infinite","toUint136(uint256)":"infinite","toUint144(uint256)":"infinite","toUint152(uint256)":"infinite","toUint16(uint256)":"infinite","toUint160(uint256)":"infinite","toUint168(uint256)":"infinite","toUint176(uint256)":"infinite","toUint184(uint256)":"infinite","toUint192(uint256)":"infinite","toUint200(uint256)":"infinite","toUint208(uint256)":"infinite","toUint216(uint256)":"infinite","toUint224(uint256)":"infinite","toUint232(uint256)":"infinite","toUint24(uint256)":"infinite","toUint240(uint256)":"infinite","toUint248(uint256)":"infinite","toUint256(int256)":"infinite","toUint32(uint256)":"infinite","toUint40(uint256)":"infinite","toUint48(uint256)":"infinite","toUint56(uint256)":"infinite","toUint64(uint256)":"infinite","toUint72(uint256)":"infinite","toUint8(uint256)":"infinite","toUint80(uint256)":"infinite","toUint88(uint256)":"infinite","toUint96(uint256)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Wrappers over Solidity's uintXX/intXX casting operators with added overflow checks. Downcasting from uint256/int256 in Solidity does not revert on overflow. This can easily result in undesired exploitation or bugs, since developers usually assume that overflows raise errors. `SafeCast` restores this intuition by reverting the transaction when such an operation overflows. Using this library instead of the unchecked operations eliminates an entire class of bugs, so it's recommended to use it always. Can be combined with {SafeMath} and {SignedSafeMath} to extend it to smaller types, by performing all math on `uint256` and `int256` and then downcasting.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol\":\"SafeCastUpgradeable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/SafeCast.sol)\\n// This file was procedurally generated from scripts/generate/templates/SafeCast.js.\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Wrappers over Solidity's uintXX/intXX casting operators with added overflow\\n * checks.\\n *\\n * Downcasting from uint256/int256 in Solidity does not revert on overflow. This can\\n * easily result in undesired exploitation or bugs, since developers usually\\n * assume that overflows raise errors. `SafeCast` restores this intuition by\\n * reverting the transaction when such an operation overflows.\\n *\\n * Using this library instead of the unchecked operations eliminates an entire\\n * class of bugs, so it's recommended to use it always.\\n *\\n * Can be combined with {SafeMath} and {SignedSafeMath} to extend it to smaller types, by performing\\n * all math on `uint256` and `int256` and then downcasting.\\n */\\nlibrary SafeCastUpgradeable {\\n /**\\n * @dev Returns the downcasted uint248 from uint256, reverting on\\n * overflow (when the input is greater than largest uint248).\\n *\\n * Counterpart to Solidity's `uint248` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 248 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint248(uint256 value) internal pure returns (uint248) {\\n require(value <= type(uint248).max, \\\"SafeCast: value doesn't fit in 248 bits\\\");\\n return uint248(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint240 from uint256, reverting on\\n * overflow (when the input is greater than largest uint240).\\n *\\n * Counterpart to Solidity's `uint240` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 240 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint240(uint256 value) internal pure returns (uint240) {\\n require(value <= type(uint240).max, \\\"SafeCast: value doesn't fit in 240 bits\\\");\\n return uint240(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint232 from uint256, reverting on\\n * overflow (when the input is greater than largest uint232).\\n *\\n * Counterpart to Solidity's `uint232` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 232 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint232(uint256 value) internal pure returns (uint232) {\\n require(value <= type(uint232).max, \\\"SafeCast: value doesn't fit in 232 bits\\\");\\n return uint232(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint224 from uint256, reverting on\\n * overflow (when the input is greater than largest uint224).\\n *\\n * Counterpart to Solidity's `uint224` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 224 bits\\n *\\n * _Available since v4.2._\\n */\\n function toUint224(uint256 value) internal pure returns (uint224) {\\n require(value <= type(uint224).max, \\\"SafeCast: value doesn't fit in 224 bits\\\");\\n return uint224(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint216 from uint256, reverting on\\n * overflow (when the input is greater than largest uint216).\\n *\\n * Counterpart to Solidity's `uint216` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 216 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint216(uint256 value) internal pure returns (uint216) {\\n require(value <= type(uint216).max, \\\"SafeCast: value doesn't fit in 216 bits\\\");\\n return uint216(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint208 from uint256, reverting on\\n * overflow (when the input is greater than largest uint208).\\n *\\n * Counterpart to Solidity's `uint208` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 208 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint208(uint256 value) internal pure returns (uint208) {\\n require(value <= type(uint208).max, \\\"SafeCast: value doesn't fit in 208 bits\\\");\\n return uint208(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint200 from uint256, reverting on\\n * overflow (when the input is greater than largest uint200).\\n *\\n * Counterpart to Solidity's `uint200` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 200 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint200(uint256 value) internal pure returns (uint200) {\\n require(value <= type(uint200).max, \\\"SafeCast: value doesn't fit in 200 bits\\\");\\n return uint200(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint192 from uint256, reverting on\\n * overflow (when the input is greater than largest uint192).\\n *\\n * Counterpart to Solidity's `uint192` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 192 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint192(uint256 value) internal pure returns (uint192) {\\n require(value <= type(uint192).max, \\\"SafeCast: value doesn't fit in 192 bits\\\");\\n return uint192(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint184 from uint256, reverting on\\n * overflow (when the input is greater than largest uint184).\\n *\\n * Counterpart to Solidity's `uint184` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 184 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint184(uint256 value) internal pure returns (uint184) {\\n require(value <= type(uint184).max, \\\"SafeCast: value doesn't fit in 184 bits\\\");\\n return uint184(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint176 from uint256, reverting on\\n * overflow (when the input is greater than largest uint176).\\n *\\n * Counterpart to Solidity's `uint176` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 176 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint176(uint256 value) internal pure returns (uint176) {\\n require(value <= type(uint176).max, \\\"SafeCast: value doesn't fit in 176 bits\\\");\\n return uint176(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint168 from uint256, reverting on\\n * overflow (when the input is greater than largest uint168).\\n *\\n * Counterpart to Solidity's `uint168` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 168 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint168(uint256 value) internal pure returns (uint168) {\\n require(value <= type(uint168).max, \\\"SafeCast: value doesn't fit in 168 bits\\\");\\n return uint168(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint160 from uint256, reverting on\\n * overflow (when the input is greater than largest uint160).\\n *\\n * Counterpart to Solidity's `uint160` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 160 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint160(uint256 value) internal pure returns (uint160) {\\n require(value <= type(uint160).max, \\\"SafeCast: value doesn't fit in 160 bits\\\");\\n return uint160(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint152 from uint256, reverting on\\n * overflow (when the input is greater than largest uint152).\\n *\\n * Counterpart to Solidity's `uint152` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 152 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint152(uint256 value) internal pure returns (uint152) {\\n require(value <= type(uint152).max, \\\"SafeCast: value doesn't fit in 152 bits\\\");\\n return uint152(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint144 from uint256, reverting on\\n * overflow (when the input is greater than largest uint144).\\n *\\n * Counterpart to Solidity's `uint144` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 144 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint144(uint256 value) internal pure returns (uint144) {\\n require(value <= type(uint144).max, \\\"SafeCast: value doesn't fit in 144 bits\\\");\\n return uint144(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint136 from uint256, reverting on\\n * overflow (when the input is greater than largest uint136).\\n *\\n * Counterpart to Solidity's `uint136` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 136 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint136(uint256 value) internal pure returns (uint136) {\\n require(value <= type(uint136).max, \\\"SafeCast: value doesn't fit in 136 bits\\\");\\n return uint136(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint128 from uint256, reverting on\\n * overflow (when the input is greater than largest uint128).\\n *\\n * Counterpart to Solidity's `uint128` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 128 bits\\n *\\n * _Available since v2.5._\\n */\\n function toUint128(uint256 value) internal pure returns (uint128) {\\n require(value <= type(uint128).max, \\\"SafeCast: value doesn't fit in 128 bits\\\");\\n return uint128(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint120 from uint256, reverting on\\n * overflow (when the input is greater than largest uint120).\\n *\\n * Counterpart to Solidity's `uint120` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 120 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint120(uint256 value) internal pure returns (uint120) {\\n require(value <= type(uint120).max, \\\"SafeCast: value doesn't fit in 120 bits\\\");\\n return uint120(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint112 from uint256, reverting on\\n * overflow (when the input is greater than largest uint112).\\n *\\n * Counterpart to Solidity's `uint112` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 112 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint112(uint256 value) internal pure returns (uint112) {\\n require(value <= type(uint112).max, \\\"SafeCast: value doesn't fit in 112 bits\\\");\\n return uint112(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint104 from uint256, reverting on\\n * overflow (when the input is greater than largest uint104).\\n *\\n * Counterpart to Solidity's `uint104` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 104 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint104(uint256 value) internal pure returns (uint104) {\\n require(value <= type(uint104).max, \\\"SafeCast: value doesn't fit in 104 bits\\\");\\n return uint104(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint96 from uint256, reverting on\\n * overflow (when the input is greater than largest uint96).\\n *\\n * Counterpart to Solidity's `uint96` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 96 bits\\n *\\n * _Available since v4.2._\\n */\\n function toUint96(uint256 value) internal pure returns (uint96) {\\n require(value <= type(uint96).max, \\\"SafeCast: value doesn't fit in 96 bits\\\");\\n return uint96(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint88 from uint256, reverting on\\n * overflow (when the input is greater than largest uint88).\\n *\\n * Counterpart to Solidity's `uint88` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 88 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint88(uint256 value) internal pure returns (uint88) {\\n require(value <= type(uint88).max, \\\"SafeCast: value doesn't fit in 88 bits\\\");\\n return uint88(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint80 from uint256, reverting on\\n * overflow (when the input is greater than largest uint80).\\n *\\n * Counterpart to Solidity's `uint80` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 80 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint80(uint256 value) internal pure returns (uint80) {\\n require(value <= type(uint80).max, \\\"SafeCast: value doesn't fit in 80 bits\\\");\\n return uint80(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint72 from uint256, reverting on\\n * overflow (when the input is greater than largest uint72).\\n *\\n * Counterpart to Solidity's `uint72` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 72 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint72(uint256 value) internal pure returns (uint72) {\\n require(value <= type(uint72).max, \\\"SafeCast: value doesn't fit in 72 bits\\\");\\n return uint72(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint64 from uint256, reverting on\\n * overflow (when the input is greater than largest uint64).\\n *\\n * Counterpart to Solidity's `uint64` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 64 bits\\n *\\n * _Available since v2.5._\\n */\\n function toUint64(uint256 value) internal pure returns (uint64) {\\n require(value <= type(uint64).max, \\\"SafeCast: value doesn't fit in 64 bits\\\");\\n return uint64(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint56 from uint256, reverting on\\n * overflow (when the input is greater than largest uint56).\\n *\\n * Counterpart to Solidity's `uint56` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 56 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint56(uint256 value) internal pure returns (uint56) {\\n require(value <= type(uint56).max, \\\"SafeCast: value doesn't fit in 56 bits\\\");\\n return uint56(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint48 from uint256, reverting on\\n * overflow (when the input is greater than largest uint48).\\n *\\n * Counterpart to Solidity's `uint48` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 48 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint48(uint256 value) internal pure returns (uint48) {\\n require(value <= type(uint48).max, \\\"SafeCast: value doesn't fit in 48 bits\\\");\\n return uint48(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint40 from uint256, reverting on\\n * overflow (when the input is greater than largest uint40).\\n *\\n * Counterpart to Solidity's `uint40` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 40 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint40(uint256 value) internal pure returns (uint40) {\\n require(value <= type(uint40).max, \\\"SafeCast: value doesn't fit in 40 bits\\\");\\n return uint40(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint32 from uint256, reverting on\\n * overflow (when the input is greater than largest uint32).\\n *\\n * Counterpart to Solidity's `uint32` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 32 bits\\n *\\n * _Available since v2.5._\\n */\\n function toUint32(uint256 value) internal pure returns (uint32) {\\n require(value <= type(uint32).max, \\\"SafeCast: value doesn't fit in 32 bits\\\");\\n return uint32(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint24 from uint256, reverting on\\n * overflow (when the input is greater than largest uint24).\\n *\\n * Counterpart to Solidity's `uint24` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 24 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint24(uint256 value) internal pure returns (uint24) {\\n require(value <= type(uint24).max, \\\"SafeCast: value doesn't fit in 24 bits\\\");\\n return uint24(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint16 from uint256, reverting on\\n * overflow (when the input is greater than largest uint16).\\n *\\n * Counterpart to Solidity's `uint16` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 16 bits\\n *\\n * _Available since v2.5._\\n */\\n function toUint16(uint256 value) internal pure returns (uint16) {\\n require(value <= type(uint16).max, \\\"SafeCast: value doesn't fit in 16 bits\\\");\\n return uint16(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint8 from uint256, reverting on\\n * overflow (when the input is greater than largest uint8).\\n *\\n * Counterpart to Solidity's `uint8` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 8 bits\\n *\\n * _Available since v2.5._\\n */\\n function toUint8(uint256 value) internal pure returns (uint8) {\\n require(value <= type(uint8).max, \\\"SafeCast: value doesn't fit in 8 bits\\\");\\n return uint8(value);\\n }\\n\\n /**\\n * @dev Converts a signed int256 into an unsigned uint256.\\n *\\n * Requirements:\\n *\\n * - input must be greater than or equal to 0.\\n *\\n * _Available since v3.0._\\n */\\n function toUint256(int256 value) internal pure returns (uint256) {\\n require(value >= 0, \\\"SafeCast: value must be positive\\\");\\n return uint256(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted int248 from int256, reverting on\\n * overflow (when the input is less than smallest int248 or\\n * greater than largest int248).\\n *\\n * Counterpart to Solidity's `int248` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 248 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt248(int256 value) internal pure returns (int248 downcasted) {\\n downcasted = int248(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 248 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int240 from int256, reverting on\\n * overflow (when the input is less than smallest int240 or\\n * greater than largest int240).\\n *\\n * Counterpart to Solidity's `int240` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 240 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt240(int256 value) internal pure returns (int240 downcasted) {\\n downcasted = int240(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 240 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int232 from int256, reverting on\\n * overflow (when the input is less than smallest int232 or\\n * greater than largest int232).\\n *\\n * Counterpart to Solidity's `int232` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 232 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt232(int256 value) internal pure returns (int232 downcasted) {\\n downcasted = int232(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 232 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int224 from int256, reverting on\\n * overflow (when the input is less than smallest int224 or\\n * greater than largest int224).\\n *\\n * Counterpart to Solidity's `int224` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 224 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt224(int256 value) internal pure returns (int224 downcasted) {\\n downcasted = int224(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 224 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int216 from int256, reverting on\\n * overflow (when the input is less than smallest int216 or\\n * greater than largest int216).\\n *\\n * Counterpart to Solidity's `int216` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 216 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt216(int256 value) internal pure returns (int216 downcasted) {\\n downcasted = int216(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 216 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int208 from int256, reverting on\\n * overflow (when the input is less than smallest int208 or\\n * greater than largest int208).\\n *\\n * Counterpart to Solidity's `int208` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 208 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt208(int256 value) internal pure returns (int208 downcasted) {\\n downcasted = int208(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 208 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int200 from int256, reverting on\\n * overflow (when the input is less than smallest int200 or\\n * greater than largest int200).\\n *\\n * Counterpart to Solidity's `int200` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 200 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt200(int256 value) internal pure returns (int200 downcasted) {\\n downcasted = int200(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 200 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int192 from int256, reverting on\\n * overflow (when the input is less than smallest int192 or\\n * greater than largest int192).\\n *\\n * Counterpart to Solidity's `int192` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 192 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt192(int256 value) internal pure returns (int192 downcasted) {\\n downcasted = int192(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 192 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int184 from int256, reverting on\\n * overflow (when the input is less than smallest int184 or\\n * greater than largest int184).\\n *\\n * Counterpart to Solidity's `int184` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 184 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt184(int256 value) internal pure returns (int184 downcasted) {\\n downcasted = int184(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 184 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int176 from int256, reverting on\\n * overflow (when the input is less than smallest int176 or\\n * greater than largest int176).\\n *\\n * Counterpart to Solidity's `int176` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 176 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt176(int256 value) internal pure returns (int176 downcasted) {\\n downcasted = int176(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 176 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int168 from int256, reverting on\\n * overflow (when the input is less than smallest int168 or\\n * greater than largest int168).\\n *\\n * Counterpart to Solidity's `int168` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 168 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt168(int256 value) internal pure returns (int168 downcasted) {\\n downcasted = int168(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 168 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int160 from int256, reverting on\\n * overflow (when the input is less than smallest int160 or\\n * greater than largest int160).\\n *\\n * Counterpart to Solidity's `int160` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 160 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt160(int256 value) internal pure returns (int160 downcasted) {\\n downcasted = int160(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 160 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int152 from int256, reverting on\\n * overflow (when the input is less than smallest int152 or\\n * greater than largest int152).\\n *\\n * Counterpart to Solidity's `int152` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 152 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt152(int256 value) internal pure returns (int152 downcasted) {\\n downcasted = int152(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 152 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int144 from int256, reverting on\\n * overflow (when the input is less than smallest int144 or\\n * greater than largest int144).\\n *\\n * Counterpart to Solidity's `int144` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 144 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt144(int256 value) internal pure returns (int144 downcasted) {\\n downcasted = int144(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 144 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int136 from int256, reverting on\\n * overflow (when the input is less than smallest int136 or\\n * greater than largest int136).\\n *\\n * Counterpart to Solidity's `int136` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 136 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt136(int256 value) internal pure returns (int136 downcasted) {\\n downcasted = int136(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 136 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int128 from int256, reverting on\\n * overflow (when the input is less than smallest int128 or\\n * greater than largest int128).\\n *\\n * Counterpart to Solidity's `int128` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 128 bits\\n *\\n * _Available since v3.1._\\n */\\n function toInt128(int256 value) internal pure returns (int128 downcasted) {\\n downcasted = int128(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 128 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int120 from int256, reverting on\\n * overflow (when the input is less than smallest int120 or\\n * greater than largest int120).\\n *\\n * Counterpart to Solidity's `int120` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 120 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt120(int256 value) internal pure returns (int120 downcasted) {\\n downcasted = int120(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 120 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int112 from int256, reverting on\\n * overflow (when the input is less than smallest int112 or\\n * greater than largest int112).\\n *\\n * Counterpart to Solidity's `int112` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 112 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt112(int256 value) internal pure returns (int112 downcasted) {\\n downcasted = int112(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 112 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int104 from int256, reverting on\\n * overflow (when the input is less than smallest int104 or\\n * greater than largest int104).\\n *\\n * Counterpart to Solidity's `int104` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 104 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt104(int256 value) internal pure returns (int104 downcasted) {\\n downcasted = int104(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 104 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int96 from int256, reverting on\\n * overflow (when the input is less than smallest int96 or\\n * greater than largest int96).\\n *\\n * Counterpart to Solidity's `int96` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 96 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt96(int256 value) internal pure returns (int96 downcasted) {\\n downcasted = int96(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 96 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int88 from int256, reverting on\\n * overflow (when the input is less than smallest int88 or\\n * greater than largest int88).\\n *\\n * Counterpart to Solidity's `int88` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 88 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt88(int256 value) internal pure returns (int88 downcasted) {\\n downcasted = int88(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 88 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int80 from int256, reverting on\\n * overflow (when the input is less than smallest int80 or\\n * greater than largest int80).\\n *\\n * Counterpart to Solidity's `int80` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 80 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt80(int256 value) internal pure returns (int80 downcasted) {\\n downcasted = int80(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 80 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int72 from int256, reverting on\\n * overflow (when the input is less than smallest int72 or\\n * greater than largest int72).\\n *\\n * Counterpart to Solidity's `int72` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 72 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt72(int256 value) internal pure returns (int72 downcasted) {\\n downcasted = int72(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 72 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int64 from int256, reverting on\\n * overflow (when the input is less than smallest int64 or\\n * greater than largest int64).\\n *\\n * Counterpart to Solidity's `int64` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 64 bits\\n *\\n * _Available since v3.1._\\n */\\n function toInt64(int256 value) internal pure returns (int64 downcasted) {\\n downcasted = int64(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 64 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int56 from int256, reverting on\\n * overflow (when the input is less than smallest int56 or\\n * greater than largest int56).\\n *\\n * Counterpart to Solidity's `int56` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 56 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt56(int256 value) internal pure returns (int56 downcasted) {\\n downcasted = int56(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 56 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int48 from int256, reverting on\\n * overflow (when the input is less than smallest int48 or\\n * greater than largest int48).\\n *\\n * Counterpart to Solidity's `int48` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 48 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt48(int256 value) internal pure returns (int48 downcasted) {\\n downcasted = int48(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 48 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int40 from int256, reverting on\\n * overflow (when the input is less than smallest int40 or\\n * greater than largest int40).\\n *\\n * Counterpart to Solidity's `int40` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 40 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt40(int256 value) internal pure returns (int40 downcasted) {\\n downcasted = int40(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 40 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int32 from int256, reverting on\\n * overflow (when the input is less than smallest int32 or\\n * greater than largest int32).\\n *\\n * Counterpart to Solidity's `int32` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 32 bits\\n *\\n * _Available since v3.1._\\n */\\n function toInt32(int256 value) internal pure returns (int32 downcasted) {\\n downcasted = int32(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 32 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int24 from int256, reverting on\\n * overflow (when the input is less than smallest int24 or\\n * greater than largest int24).\\n *\\n * Counterpart to Solidity's `int24` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 24 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt24(int256 value) internal pure returns (int24 downcasted) {\\n downcasted = int24(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 24 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int16 from int256, reverting on\\n * overflow (when the input is less than smallest int16 or\\n * greater than largest int16).\\n *\\n * Counterpart to Solidity's `int16` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 16 bits\\n *\\n * _Available since v3.1._\\n */\\n function toInt16(int256 value) internal pure returns (int16 downcasted) {\\n downcasted = int16(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 16 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int8 from int256, reverting on\\n * overflow (when the input is less than smallest int8 or\\n * greater than largest int8).\\n *\\n * Counterpart to Solidity's `int8` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 8 bits\\n *\\n * _Available since v3.1._\\n */\\n function toInt8(int256 value) internal pure returns (int8 downcasted) {\\n downcasted = int8(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 8 bits\\\");\\n }\\n\\n /**\\n * @dev Converts an unsigned uint256 into a signed int256.\\n *\\n * Requirements:\\n *\\n * - input must be less than or equal to maxInt256.\\n *\\n * _Available since v3.0._\\n */\\n function toInt256(uint256 value) internal pure returns (int256) {\\n // Note: Unsafe cast below is okay because `type(int256).max` is guaranteed to be positive\\n require(value <= uint256(type(int256).max), \\\"SafeCast: value doesn't fit in an int256\\\");\\n return int256(value);\\n }\\n}\\n\",\"keccak256\":\"0xcef50f95b43b038aa40aed25b62fc45906c681a5c1d504a4fdcf3bc6330a8d4b\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/interfaces/IERC1967.sol":{"IERC1967":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"beacon","type":"address"}],"name":"BeaconUpgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"}],"devdoc":{"details":"ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC. _Available since v4.8.3._","events":{"AdminChanged(address,address)":{"details":"Emitted when the admin account has changed."},"BeaconUpgraded(address)":{"details":"Emitted when the beacon is changed."},"Upgraded(address)":{"details":"Emitted when the implementation is upgraded."}},"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"}],\"devdoc\":{\"details\":\"ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC. _Available since v4.8.3._\",\"events\":{\"AdminChanged(address,address)\":{\"details\":\"Emitted when the admin account has changed.\"},\"BeaconUpgraded(address)\":{\"details\":\"Emitted when the beacon is changed.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/interfaces/IERC1967.sol\":\"IERC1967\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/IERC1967.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (interfaces/IERC1967.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\\n *\\n * _Available since v4.8.3._\\n */\\ninterface IERC1967 {\\n /**\\n * @dev Emitted when the implementation is upgraded.\\n */\\n event Upgraded(address indexed implementation);\\n\\n /**\\n * @dev Emitted when the admin account has changed.\\n */\\n event AdminChanged(address previousAdmin, address newAdmin);\\n\\n /**\\n * @dev Emitted when the beacon is changed.\\n */\\n event BeaconUpgraded(address indexed beacon);\\n}\\n\",\"keccak256\":\"0x3cbef5ebc24b415252e2f8c0c9254555d30d9f085603b4b80d9b5ed20ab87e90\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/interfaces/draft-IERC1822.sol":{"IERC1822Proxiable":{"abi":[{"inputs":[],"name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified proxy whose upgrades are fully controlled by the current implementation.","kind":"dev","methods":{"proxiableUUID()":{"details":"Returns the storage slot that the proxiable contract assumes is being used to store the implementation address. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"proxiableUUID()":"52d1902d"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified proxy whose upgrades are fully controlled by the current implementation.\",\"kind\":\"dev\",\"methods\":{\"proxiableUUID()\":{\"details\":\"Returns the storage slot that the proxiable contract assumes is being used to store the implementation address. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":\"IERC1822Proxiable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822Proxiable {\\n /**\\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n * address.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy.\\n */\\n function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/proxy/Clones.sol":{"Clones":{"abi":[],"devdoc":{"details":"https://eips.ethereum.org/EIPS/eip-1167[EIP 1167] is a standard for deploying minimal proxy contracts, also known as \"clones\". > To simply and cheaply clone contract functionality in an immutable way, this standard specifies > a minimal bytecode implementation that delegates all calls to a known, fixed address. The library includes functions to deploy a proxy using either `create` (traditional deployment) or `create2` (salted deterministic deployment). It also includes functions to predict the addresses of clones deployed using the deterministic method. _Available since v3.4._","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"602d6037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a","opcodes":"PUSH1 0x2D PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"755:3275:17:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;755:3275:17;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"755:3275:17:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"9000","executionCost":"94","totalCost":"9094"},"internal":{"clone(address)":"infinite","cloneDeterministic(address,bytes32)":"infinite","predictDeterministicAddress(address,bytes32)":"infinite","predictDeterministicAddress(address,bytes32,address)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"https://eips.ethereum.org/EIPS/eip-1167[EIP 1167] is a standard for deploying minimal proxy contracts, also known as \\\"clones\\\". > To simply and cheaply clone contract functionality in an immutable way, this standard specifies > a minimal bytecode implementation that delegates all calls to a known, fixed address. The library includes functions to deploy a proxy using either `create` (traditional deployment) or `create2` (salted deterministic deployment). It also includes functions to predict the addresses of clones deployed using the deterministic method. _Available since v3.4._\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/proxy/Clones.sol\":\"Clones\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/proxy/Clones.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/Clones.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev https://eips.ethereum.org/EIPS/eip-1167[EIP 1167] is a standard for\\n * deploying minimal proxy contracts, also known as \\\"clones\\\".\\n *\\n * > To simply and cheaply clone contract functionality in an immutable way, this standard specifies\\n * > a minimal bytecode implementation that delegates all calls to a known, fixed address.\\n *\\n * The library includes functions to deploy a proxy using either `create` (traditional deployment) or `create2`\\n * (salted deterministic deployment). It also includes functions to predict the addresses of clones deployed using the\\n * deterministic method.\\n *\\n * _Available since v3.4._\\n */\\nlibrary Clones {\\n /**\\n * @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`.\\n *\\n * This function uses the create opcode, which should never revert.\\n */\\n function clone(address implementation) internal returns (address instance) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n // Cleans the upper 96 bits of the `implementation` word, then packs the first 3 bytes\\n // of the `implementation` address with the bytecode before the address.\\n mstore(0x00, or(shr(0xe8, shl(0x60, implementation)), 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000))\\n // Packs the remaining 17 bytes of `implementation` with the bytecode after the address.\\n mstore(0x20, or(shl(0x78, implementation), 0x5af43d82803e903d91602b57fd5bf3))\\n instance := create(0, 0x09, 0x37)\\n }\\n require(instance != address(0), \\\"ERC1167: create failed\\\");\\n }\\n\\n /**\\n * @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`.\\n *\\n * This function uses the create2 opcode and a `salt` to deterministically deploy\\n * the clone. Using the same `implementation` and `salt` multiple time will revert, since\\n * the clones cannot be deployed twice at the same address.\\n */\\n function cloneDeterministic(address implementation, bytes32 salt) internal returns (address instance) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n // Cleans the upper 96 bits of the `implementation` word, then packs the first 3 bytes\\n // of the `implementation` address with the bytecode before the address.\\n mstore(0x00, or(shr(0xe8, shl(0x60, implementation)), 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000))\\n // Packs the remaining 17 bytes of `implementation` with the bytecode after the address.\\n mstore(0x20, or(shl(0x78, implementation), 0x5af43d82803e903d91602b57fd5bf3))\\n instance := create2(0, 0x09, 0x37, salt)\\n }\\n require(instance != address(0), \\\"ERC1167: create2 failed\\\");\\n }\\n\\n /**\\n * @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}.\\n */\\n function predictDeterministicAddress(\\n address implementation,\\n bytes32 salt,\\n address deployer\\n ) internal pure returns (address predicted) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n let ptr := mload(0x40)\\n mstore(add(ptr, 0x38), deployer)\\n mstore(add(ptr, 0x24), 0x5af43d82803e903d91602b57fd5bf3ff)\\n mstore(add(ptr, 0x14), implementation)\\n mstore(ptr, 0x3d602d80600a3d3981f3363d3d373d3d3d363d73)\\n mstore(add(ptr, 0x58), salt)\\n mstore(add(ptr, 0x78), keccak256(add(ptr, 0x0c), 0x37))\\n predicted := keccak256(add(ptr, 0x43), 0x55)\\n }\\n }\\n\\n /**\\n * @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}.\\n */\\n function predictDeterministicAddress(\\n address implementation,\\n bytes32 salt\\n ) internal view returns (address predicted) {\\n return predictDeterministicAddress(implementation, salt, address(this));\\n }\\n}\\n\",\"keccak256\":\"0x01f055f5c26ba25d7f83e9aa9ba877fbea4d0bf22227de046ea67494bc932999\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol":{"ERC1967Proxy":{"abi":[{"inputs":[{"internalType":"address","name":"_logic","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"}],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"beacon","type":"address"}],"name":"BeaconUpgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"stateMutability":"payable","type":"fallback"},{"stateMutability":"payable","type":"receive"}],"devdoc":{"details":"This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an implementation address that can be changed. This address is stored in storage in the location specified by https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the implementation behind the proxy.","kind":"dev","methods":{"constructor":{"details":"Initializes the upgradeable proxy with an initial implementation specified by `_logic`. If `_data` is nonempty, it's used as data in a delegate call to `_logic`. This will typically be an encoded function call, and allows initializing the storage of the proxy like a Solidity constructor."}},"version":1},"evm":{"bytecode":{"functionDebugData":{"@_5376":{"entryPoint":null,"id":5376,"parameterSlots":2,"returnSlots":0},"@_revert_9263":{"entryPoint":693,"id":9263,"parameterSlots":2,"returnSlots":0},"@_setImplementation_5443":{"entryPoint":215,"id":5443,"parameterSlots":1,"returnSlots":0},"@_upgradeToAndCall_5488":{"entryPoint":53,"id":5488,"parameterSlots":3,"returnSlots":0},"@_upgradeTo_5458":{"entryPoint":107,"id":5458,"parameterSlots":1,"returnSlots":0},"@functionDelegateCall_9151":{"entryPoint":171,"id":9151,"parameterSlots":2,"returnSlots":1},"@functionDelegateCall_9180":{"entryPoint":425,"id":9180,"parameterSlots":3,"returnSlots":1},"@getAddressSlot_9400":{"entryPoint":561,"id":9400,"parameterSlots":1,"returnSlots":1},"@isContract_8952":{"entryPoint":546,"id":8952,"parameterSlots":1,"returnSlots":1},"@verifyCallResultFromTarget_9219":{"entryPoint":564,"id":9219,"parameterSlots":4,"returnSlots":1},"abi_decode_tuple_t_addresst_bytes_memory_ptr_fromMemory":{"entryPoint":793,"id":null,"parameterSlots":2,"returnSlots":2},"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":999,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":1027,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"copy_memory_to_memory_with_cleanup":{"entryPoint":757,"id":null,"parameterSlots":3,"returnSlots":0},"panic_error_0x41":{"entryPoint":735,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:2931:92","statements":[{"nodeType":"YulBlock","src":"6:3:92","statements":[]},{"body":{"nodeType":"YulBlock","src":"46:95:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"63:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"70:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"75:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"66:3:92"},"nodeType":"YulFunctionCall","src":"66:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"56:6:92"},"nodeType":"YulFunctionCall","src":"56:31:92"},"nodeType":"YulExpressionStatement","src":"56:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"103:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"106:4:92","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"96:6:92"},"nodeType":"YulFunctionCall","src":"96:15:92"},"nodeType":"YulExpressionStatement","src":"96:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"127:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"130:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"120:6:92"},"nodeType":"YulFunctionCall","src":"120:15:92"},"nodeType":"YulExpressionStatement","src":"120:15:92"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"14:127:92"},{"body":{"nodeType":"YulBlock","src":"212:184:92","statements":[{"nodeType":"YulVariableDeclaration","src":"222:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"231:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"226:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"291:63:92","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"316:3:92"},{"name":"i","nodeType":"YulIdentifier","src":"321:1:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"312:3:92"},"nodeType":"YulFunctionCall","src":"312:11:92"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"335:3:92"},{"name":"i","nodeType":"YulIdentifier","src":"340:1:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"331:3:92"},"nodeType":"YulFunctionCall","src":"331:11:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"325:5:92"},"nodeType":"YulFunctionCall","src":"325:18:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"305:6:92"},"nodeType":"YulFunctionCall","src":"305:39:92"},"nodeType":"YulExpressionStatement","src":"305:39:92"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"252:1:92"},{"name":"length","nodeType":"YulIdentifier","src":"255:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"249:2:92"},"nodeType":"YulFunctionCall","src":"249:13:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"263:19:92","statements":[{"nodeType":"YulAssignment","src":"265:15:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"274:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"277:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"270:3:92"},"nodeType":"YulFunctionCall","src":"270:10:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"265:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"245:3:92","statements":[]},"src":"241:113:92"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"374:3:92"},{"name":"length","nodeType":"YulIdentifier","src":"379:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"370:3:92"},"nodeType":"YulFunctionCall","src":"370:16:92"},{"kind":"number","nodeType":"YulLiteral","src":"388:1:92","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"363:6:92"},"nodeType":"YulFunctionCall","src":"363:27:92"},"nodeType":"YulExpressionStatement","src":"363:27:92"}]},"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"190:3:92","type":""},{"name":"dst","nodeType":"YulTypedName","src":"195:3:92","type":""},{"name":"length","nodeType":"YulTypedName","src":"200:6:92","type":""}],"src":"146:250:92"},{"body":{"nodeType":"YulBlock","src":"508:956:92","statements":[{"body":{"nodeType":"YulBlock","src":"554:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"563:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"566:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"556:6:92"},"nodeType":"YulFunctionCall","src":"556:12:92"},"nodeType":"YulExpressionStatement","src":"556:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"529:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"538:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"525:3:92"},"nodeType":"YulFunctionCall","src":"525:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"550:2:92","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"521:3:92"},"nodeType":"YulFunctionCall","src":"521:32:92"},"nodeType":"YulIf","src":"518:52:92"},{"nodeType":"YulVariableDeclaration","src":"579:29:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"598:9:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"592:5:92"},"nodeType":"YulFunctionCall","src":"592:16:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"583:5:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"671:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"680:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"683:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"673:6:92"},"nodeType":"YulFunctionCall","src":"673:12:92"},"nodeType":"YulExpressionStatement","src":"673:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"630:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"641:5:92"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"656:3:92","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"661:1:92","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"652:3:92"},"nodeType":"YulFunctionCall","src":"652:11:92"},{"kind":"number","nodeType":"YulLiteral","src":"665:1:92","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"648:3:92"},"nodeType":"YulFunctionCall","src":"648:19:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"637:3:92"},"nodeType":"YulFunctionCall","src":"637:31:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"627:2:92"},"nodeType":"YulFunctionCall","src":"627:42:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"620:6:92"},"nodeType":"YulFunctionCall","src":"620:50:92"},"nodeType":"YulIf","src":"617:70:92"},{"nodeType":"YulAssignment","src":"696:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"706:5:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"696:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"720:39:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"744:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"755:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"740:3:92"},"nodeType":"YulFunctionCall","src":"740:18:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"734:5:92"},"nodeType":"YulFunctionCall","src":"734:25:92"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"724:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"768:28:92","value":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"786:2:92","type":"","value":"64"},{"kind":"number","nodeType":"YulLiteral","src":"790:1:92","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"782:3:92"},"nodeType":"YulFunctionCall","src":"782:10:92"},{"kind":"number","nodeType":"YulLiteral","src":"794:1:92","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"778:3:92"},"nodeType":"YulFunctionCall","src":"778:18:92"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"772:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"823:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"832:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"835:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"825:6:92"},"nodeType":"YulFunctionCall","src":"825:12:92"},"nodeType":"YulExpressionStatement","src":"825:12:92"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"811:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"819:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"808:2:92"},"nodeType":"YulFunctionCall","src":"808:14:92"},"nodeType":"YulIf","src":"805:34:92"},{"nodeType":"YulVariableDeclaration","src":"848:32:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"862:9:92"},{"name":"offset","nodeType":"YulIdentifier","src":"873:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"858:3:92"},"nodeType":"YulFunctionCall","src":"858:22:92"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"852:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"928:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"937:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"940:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"930:6:92"},"nodeType":"YulFunctionCall","src":"930:12:92"},"nodeType":"YulExpressionStatement","src":"930:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"907:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"911:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"903:3:92"},"nodeType":"YulFunctionCall","src":"903:13:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"918:7:92"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"899:3:92"},"nodeType":"YulFunctionCall","src":"899:27:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"892:6:92"},"nodeType":"YulFunctionCall","src":"892:35:92"},"nodeType":"YulIf","src":"889:55:92"},{"nodeType":"YulVariableDeclaration","src":"953:19:92","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"969:2:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"963:5:92"},"nodeType":"YulFunctionCall","src":"963:9:92"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"957:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"995:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"997:16:92"},"nodeType":"YulFunctionCall","src":"997:18:92"},"nodeType":"YulExpressionStatement","src":"997:18:92"}]},"condition":{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"987:2:92"},{"name":"_1","nodeType":"YulIdentifier","src":"991:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"984:2:92"},"nodeType":"YulFunctionCall","src":"984:10:92"},"nodeType":"YulIf","src":"981:36:92"},{"nodeType":"YulVariableDeclaration","src":"1026:17:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1040:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"1036:3:92"},"nodeType":"YulFunctionCall","src":"1036:7:92"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"1030:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"1052:23:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1072:2:92","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1066:5:92"},"nodeType":"YulFunctionCall","src":"1066:9:92"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"1056:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"1084:71:92","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1106:6:92"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"1130:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"1134:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1126:3:92"},"nodeType":"YulFunctionCall","src":"1126:13:92"},{"name":"_4","nodeType":"YulIdentifier","src":"1141:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1122:3:92"},"nodeType":"YulFunctionCall","src":"1122:22:92"},{"kind":"number","nodeType":"YulLiteral","src":"1146:2:92","type":"","value":"63"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1118:3:92"},"nodeType":"YulFunctionCall","src":"1118:31:92"},{"name":"_4","nodeType":"YulIdentifier","src":"1151:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1114:3:92"},"nodeType":"YulFunctionCall","src":"1114:40:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1102:3:92"},"nodeType":"YulFunctionCall","src":"1102:53:92"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"1088:10:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"1214:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"1216:16:92"},"nodeType":"YulFunctionCall","src":"1216:18:92"},"nodeType":"YulExpressionStatement","src":"1216:18:92"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"1173:10:92"},{"name":"_1","nodeType":"YulIdentifier","src":"1185:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1170:2:92"},"nodeType":"YulFunctionCall","src":"1170:18:92"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"1193:10:92"},{"name":"memPtr","nodeType":"YulIdentifier","src":"1205:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"1190:2:92"},"nodeType":"YulFunctionCall","src":"1190:22:92"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"1167:2:92"},"nodeType":"YulFunctionCall","src":"1167:46:92"},"nodeType":"YulIf","src":"1164:72:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1252:2:92","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"1256:10:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1245:6:92"},"nodeType":"YulFunctionCall","src":"1245:22:92"},"nodeType":"YulExpressionStatement","src":"1245:22:92"},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1283:6:92"},{"name":"_3","nodeType":"YulIdentifier","src":"1291:2:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1276:6:92"},"nodeType":"YulFunctionCall","src":"1276:18:92"},"nodeType":"YulExpressionStatement","src":"1276:18:92"},{"body":{"nodeType":"YulBlock","src":"1340:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1349:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1352:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1342:6:92"},"nodeType":"YulFunctionCall","src":"1342:12:92"},"nodeType":"YulExpressionStatement","src":"1342:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"1317:2:92"},{"name":"_3","nodeType":"YulIdentifier","src":"1321:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1313:3:92"},"nodeType":"YulFunctionCall","src":"1313:11:92"},{"kind":"number","nodeType":"YulLiteral","src":"1326:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1309:3:92"},"nodeType":"YulFunctionCall","src":"1309:20:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1331:7:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1306:2:92"},"nodeType":"YulFunctionCall","src":"1306:33:92"},"nodeType":"YulIf","src":"1303:53:92"},{"expression":{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"1404:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"1408:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1400:3:92"},"nodeType":"YulFunctionCall","src":"1400:11:92"},{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1417:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"1425:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1413:3:92"},"nodeType":"YulFunctionCall","src":"1413:15:92"},{"name":"_3","nodeType":"YulIdentifier","src":"1430:2:92"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"1365:34:92"},"nodeType":"YulFunctionCall","src":"1365:68:92"},"nodeType":"YulExpressionStatement","src":"1365:68:92"},{"nodeType":"YulAssignment","src":"1442:16:92","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"1452:6:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1442:6:92"}]}]},"name":"abi_decode_tuple_t_addresst_bytes_memory_ptr_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"466:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"477:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"489:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"497:6:92","type":""}],"src":"401:1063:92"},{"body":{"nodeType":"YulBlock","src":"1643:235:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1660:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1671:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1653:6:92"},"nodeType":"YulFunctionCall","src":"1653:21:92"},"nodeType":"YulExpressionStatement","src":"1653:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1694:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1705:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1690:3:92"},"nodeType":"YulFunctionCall","src":"1690:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"1710:2:92","type":"","value":"45"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1683:6:92"},"nodeType":"YulFunctionCall","src":"1683:30:92"},"nodeType":"YulExpressionStatement","src":"1683:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1733:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1744:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1729:3:92"},"nodeType":"YulFunctionCall","src":"1729:18:92"},{"hexValue":"455243313936373a206e657720696d706c656d656e746174696f6e206973206e","kind":"string","nodeType":"YulLiteral","src":"1749:34:92","type":"","value":"ERC1967: new implementation is n"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1722:6:92"},"nodeType":"YulFunctionCall","src":"1722:62:92"},"nodeType":"YulExpressionStatement","src":"1722:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1804:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1815:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1800:3:92"},"nodeType":"YulFunctionCall","src":"1800:18:92"},{"hexValue":"6f74206120636f6e7472616374","kind":"string","nodeType":"YulLiteral","src":"1820:15:92","type":"","value":"ot a contract"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1793:6:92"},"nodeType":"YulFunctionCall","src":"1793:43:92"},"nodeType":"YulExpressionStatement","src":"1793:43:92"},{"nodeType":"YulAssignment","src":"1845:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1857:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1868:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1853:3:92"},"nodeType":"YulFunctionCall","src":"1853:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1845:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1620:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1634:4:92","type":""}],"src":"1469:409:92"},{"body":{"nodeType":"YulBlock","src":"2020:150:92","statements":[{"nodeType":"YulVariableDeclaration","src":"2030:27:92","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2050:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2044:5:92"},"nodeType":"YulFunctionCall","src":"2044:13:92"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"2034:6:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2105:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"2113:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2101:3:92"},"nodeType":"YulFunctionCall","src":"2101:17:92"},{"name":"pos","nodeType":"YulIdentifier","src":"2120:3:92"},{"name":"length","nodeType":"YulIdentifier","src":"2125:6:92"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"2066:34:92"},"nodeType":"YulFunctionCall","src":"2066:66:92"},"nodeType":"YulExpressionStatement","src":"2066:66:92"},{"nodeType":"YulAssignment","src":"2141:23:92","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2152:3:92"},{"name":"length","nodeType":"YulIdentifier","src":"2157:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2148:3:92"},"nodeType":"YulFunctionCall","src":"2148:16:92"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"2141:3:92"}]}]},"name":"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1996:3:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"2001:6:92","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"2012:3:92","type":""}],"src":"1883:287:92"},{"body":{"nodeType":"YulBlock","src":"2349:179:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2366:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2377:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2359:6:92"},"nodeType":"YulFunctionCall","src":"2359:21:92"},"nodeType":"YulExpressionStatement","src":"2359:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2400:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2411:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2396:3:92"},"nodeType":"YulFunctionCall","src":"2396:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"2416:2:92","type":"","value":"29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2389:6:92"},"nodeType":"YulFunctionCall","src":"2389:30:92"},"nodeType":"YulExpressionStatement","src":"2389:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2439:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2450:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2435:3:92"},"nodeType":"YulFunctionCall","src":"2435:18:92"},{"hexValue":"416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374","kind":"string","nodeType":"YulLiteral","src":"2455:31:92","type":"","value":"Address: call to non-contract"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2428:6:92"},"nodeType":"YulFunctionCall","src":"2428:59:92"},"nodeType":"YulExpressionStatement","src":"2428:59:92"},{"nodeType":"YulAssignment","src":"2496:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2508:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2519:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2504:3:92"},"nodeType":"YulFunctionCall","src":"2504:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2496:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2326:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2340:4:92","type":""}],"src":"2175:353:92"},{"body":{"nodeType":"YulBlock","src":"2654:275:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2671:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2682:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2664:6:92"},"nodeType":"YulFunctionCall","src":"2664:21:92"},"nodeType":"YulExpressionStatement","src":"2664:21:92"},{"nodeType":"YulVariableDeclaration","src":"2694:27:92","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2714:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2708:5:92"},"nodeType":"YulFunctionCall","src":"2708:13:92"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"2698:6:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2741:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2752:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2737:3:92"},"nodeType":"YulFunctionCall","src":"2737:18:92"},{"name":"length","nodeType":"YulIdentifier","src":"2757:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2730:6:92"},"nodeType":"YulFunctionCall","src":"2730:34:92"},"nodeType":"YulExpressionStatement","src":"2730:34:92"},{"expression":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2812:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"2820:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2808:3:92"},"nodeType":"YulFunctionCall","src":"2808:15:92"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2829:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2840:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2825:3:92"},"nodeType":"YulFunctionCall","src":"2825:18:92"},{"name":"length","nodeType":"YulIdentifier","src":"2845:6:92"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"2773:34:92"},"nodeType":"YulFunctionCall","src":"2773:79:92"},"nodeType":"YulExpressionStatement","src":"2773:79:92"},{"nodeType":"YulAssignment","src":"2861:62:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2877:9:92"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"2896:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"2904:2:92","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2892:3:92"},"nodeType":"YulFunctionCall","src":"2892:15:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2913:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"2909:3:92"},"nodeType":"YulFunctionCall","src":"2909:7:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2888:3:92"},"nodeType":"YulFunctionCall","src":"2888:29:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2873:3:92"},"nodeType":"YulFunctionCall","src":"2873:45:92"},{"kind":"number","nodeType":"YulLiteral","src":"2920:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2869:3:92"},"nodeType":"YulFunctionCall","src":"2869:54:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2861:4:92"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2623:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"2634:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2645:4:92","type":""}],"src":"2533:396:92"}]},"contents":"{\n { }\n function panic_error_0x41()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function copy_memory_to_memory_with_cleanup(src, dst, length)\n {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n mstore(add(dst, length), 0)\n }\n function abi_decode_tuple_t_addresst_bytes_memory_ptr_fromMemory(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n let value := mload(headStart)\n if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n value0 := value\n let offset := mload(add(headStart, 32))\n let _1 := sub(shl(64, 1), 1)\n if gt(offset, _1) { revert(0, 0) }\n let _2 := add(headStart, offset)\n if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n let _3 := mload(_2)\n if gt(_3, _1) { panic_error_0x41() }\n let _4 := not(31)\n let memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n mstore(memPtr, _3)\n if gt(add(add(_2, _3), 32), dataEnd) { revert(0, 0) }\n copy_memory_to_memory_with_cleanup(add(_2, 32), add(memPtr, 32), _3)\n value1 := memPtr\n }\n function abi_encode_tuple_t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 45)\n mstore(add(headStart, 64), \"ERC1967: new implementation is n\")\n mstore(add(headStart, 96), \"ot a contract\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n {\n let length := mload(value0)\n copy_memory_to_memory_with_cleanup(add(value0, 0x20), pos, length)\n end := add(pos, length)\n }\n function abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 29)\n mstore(add(headStart, 64), \"Address: call to non-contract\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n mstore(headStart, 32)\n let length := mload(value0)\n mstore(add(headStart, 32), length)\n copy_memory_to_memory_with_cleanup(add(value0, 32), add(headStart, 64), length)\n tail := add(add(headStart, and(add(length, 31), not(31))), 64)\n }\n}","id":92,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60806040526040516106fe3803806106fe83398101604081905261002291610319565b61002e82826000610035565b5050610436565b61003e8361006b565b60008251118061004b5750805b156100665761006483836100ab60201b6100291760201c565b505b505050565b610074816100d7565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606100d083836040518060600160405280602781526020016106d7602791396101a9565b9392505050565b6100ea8161022260201b6100551760201c565b6101515760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b806101887f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61023160201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6060600080856001600160a01b0316856040516101c691906103e7565b600060405180830381855af49150503d8060008114610201576040519150601f19603f3d011682016040523d82523d6000602084013e610206565b606091505b50909250905061021886838387610234565b9695505050505050565b6001600160a01b03163b151590565b90565b606083156102a357825160000361029c576001600160a01b0385163b61029c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610148565b50816102ad565b6102ad83836102b5565b949350505050565b8151156102c55781518083602001fd5b8060405162461bcd60e51b81526004016101489190610403565b634e487b7160e01b600052604160045260246000fd5b60005b838110156103105781810151838201526020016102f8565b50506000910152565b6000806040838503121561032c57600080fd5b82516001600160a01b038116811461034357600080fd5b60208401519092506001600160401b038082111561036057600080fd5b818501915085601f83011261037457600080fd5b815181811115610386576103866102df565b604051601f8201601f19908116603f011681019083821181831017156103ae576103ae6102df565b816040528281528860208487010111156103c757600080fd5b6103d88360208301602088016102f5565b80955050505050509250929050565b600082516103f98184602087016102f5565b9190910192915050565b60208152600082518060208401526104228160408501602087016102f5565b601f01601f19169190910160400192915050565b610292806104456000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b61009f565b565b606061004e838360405180606001604052806027815260200161025f602791396100c3565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e8080156100be573d6000f35b3d6000fd5b6060600080856001600160a01b0316856040516100e0919061020f565b600060405180830381855af49150503d806000811461011b576040519150601f19603f3d011682016040523d82523d6000602084013e610120565b606091505b50915091506101318683838761013b565b9695505050505050565b606083156101af5782516000036101a8576001600160a01b0385163b6101a85760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b50816101b9565b6101b983836101c1565b949350505050565b8151156101d15781518083602001fd5b8060405162461bcd60e51b815260040161019f919061022b565b60005b838110156102065781810151838201526020016101ee565b50506000910152565b600082516102218184602087016101eb565b9190910192915050565b602081526000825180602084015261024a8160408501602087016101eb565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH2 0x6FE CODESIZE SUB DUP1 PUSH2 0x6FE DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x22 SWAP2 PUSH2 0x319 JUMP JUMPDEST PUSH2 0x2E DUP3 DUP3 PUSH1 0x0 PUSH2 0x35 JUMP JUMPDEST POP POP PUSH2 0x436 JUMP JUMPDEST PUSH2 0x3E DUP4 PUSH2 0x6B JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD GT DUP1 PUSH2 0x4B JUMPI POP DUP1 JUMPDEST ISZERO PUSH2 0x66 JUMPI PUSH2 0x64 DUP4 DUP4 PUSH2 0xAB PUSH1 0x20 SHL PUSH2 0x29 OR PUSH1 0x20 SHR JUMP JUMPDEST POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x74 DUP2 PUSH2 0xD7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xD0 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x6D7 PUSH1 0x27 SWAP2 CODECOPY PUSH2 0x1A9 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xEA DUP2 PUSH2 0x222 PUSH1 0x20 SHL PUSH2 0x55 OR PUSH1 0x20 SHR JUMP JUMPDEST PUSH2 0x151 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313936373A206E657720696D706C656D656E746174696F6E206973206E PUSH1 0x44 DUP3 ADD MSTORE PUSH13 0x1BDD08184818DBDB9D1C9858DD PUSH1 0x9A SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH2 0x188 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC PUSH1 0x0 SHL PUSH2 0x231 PUSH1 0x20 SHL PUSH2 0x64 OR PUSH1 0x20 SHR JUMP JUMPDEST DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0x1C6 SWAP2 SWAP1 PUSH2 0x3E7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x201 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x206 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x218 DUP7 DUP4 DUP4 DUP8 PUSH2 0x234 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x2A3 JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0x29C JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0x29C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x148 JUMP JUMPDEST POP DUP2 PUSH2 0x2AD JUMP JUMPDEST PUSH2 0x2AD DUP4 DUP4 PUSH2 0x2B5 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x2C5 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x148 SWAP2 SWAP1 PUSH2 0x403 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x310 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2F8 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x32C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x343 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x360 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x374 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x386 JUMPI PUSH2 0x386 PUSH2 0x2DF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x3AE JUMPI PUSH2 0x3AE PUSH2 0x2DF JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x3C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3D8 DUP4 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x2F5 JUMP JUMPDEST DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x3F9 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x2F5 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x422 DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x2F5 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x292 DUP1 PUSH2 0x445 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLDATASIZE PUSH2 0x13 JUMPI PUSH2 0x11 PUSH2 0x17 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x11 JUMPDEST PUSH2 0x27 PUSH2 0x22 PUSH2 0x67 JUMP JUMPDEST PUSH2 0x9F JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x60 PUSH2 0x4E DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x25F PUSH1 0x27 SWAP2 CODECOPY PUSH2 0xC3 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9A PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 DUP1 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE PUSH1 0x0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH2 0xBE JUMPI RETURNDATASIZE PUSH1 0x0 RETURN JUMPDEST RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0xE0 SWAP2 SWAP1 PUSH2 0x20F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x11B JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x120 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x131 DUP7 DUP4 DUP4 DUP8 PUSH2 0x13B JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x1AF JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0x1A8 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0x1A8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP DUP2 PUSH2 0x1B9 JUMP JUMPDEST PUSH2 0x1B9 DUP4 DUP4 PUSH2 0x1C1 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x1D1 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x19F SWAP2 SWAP1 PUSH2 0x22B JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x206 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1EE JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x221 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x1EB JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x24A DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x1EB JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A164 PUSH20 0x6F6C6343000811000A416464726573733A206C6F PUSH24 0x2D6C6576656C2064656C65676174652063616C6C20666169 PUSH13 0x65640000000000000000000000 ","sourceMap":"567:723:18:-:0;;;958:112;;;;;;;;;;;;;;;;;;:::i;:::-;1024:39;1042:6;1050:5;1057;1024:17;:39::i;:::-;958:112;;567:723;;2057:265:19;2165:29;2176:17;2165:10;:29::i;:::-;2222:1;2208:4;:11;:15;:28;;;;2227:9;2208:28;2204:112;;;2252:53;2281:17;2300:4;2252:28;;;;;:53;;:::i;:::-;;2204:112;2057:265;;;:::o;1771:152::-;1837:37;1856:17;1837:18;:37::i;:::-;1889:27;;-1:-1:-1;;;;;1889:27:19;;;;;;;;1771:152;:::o;6674:198:33:-;6757:12;6788:77;6809:6;6817:4;6788:77;;;;;;;;;;;;;;;;;:20;:77::i;:::-;6781:84;6674:198;-1:-1:-1;;;6674:198:33:o;1406:259:19:-;1487:37;1506:17;1487:18;;;;;:37;;:::i;:::-;1479:95;;;;-1:-1:-1;;;1479:95:19;;1671:2:92;1479:95:19;;;1653:21:92;1710:2;1690:18;;;1683:30;1749:34;1729:18;;;1722:62;-1:-1:-1;;;1800:18:92;;;1793:43;1853:19;;1479:95:19;;;;;;;;;1641:17;1584:48;1030:66;1611:20;;1584:26;;;;;:48;;:::i;:::-;:74;;-1:-1:-1;;;;;;1584:74:19;-1:-1:-1;;;;;1584:74:19;;;;;;;;;;-1:-1:-1;1406:259:19:o;7058:325:33:-;7199:12;7224;7238:23;7265:6;-1:-1:-1;;;;;7265:19:33;7285:4;7265:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7223:67:33;;-1:-1:-1;7223:67:33;-1:-1:-1;7307:69:33;7334:6;7223:67;;7363:12;7307:26;:69::i;:::-;7300:76;7058:325;-1:-1:-1;;;;;;7058:325:33:o;1412:320::-;-1:-1:-1;;;;;1702:19:33;;:23;;;1412:320::o;1859:190:36:-;2029:4;1859:190::o;7671:628:33:-;7851:12;7879:7;7875:418;;;7906:10;:17;7927:1;7906:22;7902:286;;-1:-1:-1;;;;;1702:19:33;;;8113:60;;;;-1:-1:-1;;;8113:60:33;;2377:2:92;8113:60:33;;;2359:21:92;2416:2;2396:18;;;2389:30;2455:31;2435:18;;;2428:59;2504:18;;8113:60:33;2175:353:92;8113:60:33;-1:-1:-1;8208:10:33;8201:17;;7875:418;8249:33;8257:10;8269:12;8249:7;:33::i;:::-;7671:628;;;;;;:::o;8821:540::-;8980:17;;:21;8976:379;;9208:10;9202:17;9264:15;9251:10;9247:2;9243:19;9236:44;8976:379;9331:12;9324:20;;-1:-1:-1;;;9324:20:33;;;;;;;;:::i;14:127:92:-;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:250;231:1;241:113;255:6;252:1;249:13;241:113;;;331:11;;;325:18;312:11;;;305:39;277:2;270:10;241:113;;;-1:-1:-1;;388:1:92;370:16;;363:27;146:250::o;401:1063::-;489:6;497;550:2;538:9;529:7;525:23;521:32;518:52;;;566:1;563;556:12;518:52;592:16;;-1:-1:-1;;;;;637:31:92;;627:42;;617:70;;683:1;680;673:12;617:70;755:2;740:18;;734:25;706:5;;-1:-1:-1;;;;;;808:14:92;;;805:34;;;835:1;832;825:12;805:34;873:6;862:9;858:22;848:32;;918:7;911:4;907:2;903:13;899:27;889:55;;940:1;937;930:12;889:55;969:2;963:9;991:2;987;984:10;981:36;;;997:18;;:::i;:::-;1072:2;1066:9;1040:2;1126:13;;-1:-1:-1;;1122:22:92;;;1146:2;1118:31;1114:40;1102:53;;;1170:18;;;1190:22;;;1167:46;1164:72;;;1216:18;;:::i;:::-;1256:10;1252:2;1245:22;1291:2;1283:6;1276:18;1331:7;1326:2;1321;1317;1313:11;1309:20;1306:33;1303:53;;;1352:1;1349;1342:12;1303:53;1365:68;1430:2;1425;1417:6;1413:15;1408:2;1404;1400:11;1365:68;:::i;:::-;1452:6;1442:16;;;;;;;401:1063;;;;;:::o;1883:287::-;2012:3;2050:6;2044:13;2066:66;2125:6;2120:3;2113:4;2105:6;2101:17;2066:66;:::i;:::-;2148:16;;;;;1883:287;-1:-1:-1;;1883:287:92:o;2533:396::-;2682:2;2671:9;2664:21;2645:4;2714:6;2708:13;2757:6;2752:2;2741:9;2737:18;2730:34;2773:79;2845:6;2840:2;2829:9;2825:18;2820:2;2812:6;2808:15;2773:79;:::i;:::-;2913:2;2892:15;-1:-1:-1;;2888:29:92;2873:45;;;;2920:2;2869:54;;2533:396;-1:-1:-1;;2533:396:92:o;:::-;567:723:18;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_5731":{"entryPoint":null,"id":5731,"parameterSlots":0,"returnSlots":0},"@_5739":{"entryPoint":null,"id":5739,"parameterSlots":0,"returnSlots":0},"@_beforeFallback_5744":{"entryPoint":null,"id":5744,"parameterSlots":0,"returnSlots":0},"@_delegate_5704":{"entryPoint":159,"id":5704,"parameterSlots":1,"returnSlots":0},"@_fallback_5723":{"entryPoint":23,"id":5723,"parameterSlots":0,"returnSlots":0},"@_getImplementation_5419":{"entryPoint":null,"id":5419,"parameterSlots":0,"returnSlots":1},"@_implementation_5388":{"entryPoint":103,"id":5388,"parameterSlots":0,"returnSlots":1},"@_revert_9263":{"entryPoint":449,"id":9263,"parameterSlots":2,"returnSlots":0},"@functionDelegateCall_9151":{"entryPoint":41,"id":9151,"parameterSlots":2,"returnSlots":1},"@functionDelegateCall_9180":{"entryPoint":195,"id":9180,"parameterSlots":3,"returnSlots":1},"@getAddressSlot_9400":{"entryPoint":100,"id":9400,"parameterSlots":1,"returnSlots":1},"@isContract_8952":{"entryPoint":85,"id":8952,"parameterSlots":1,"returnSlots":1},"@verifyCallResultFromTarget_9219":{"entryPoint":315,"id":9219,"parameterSlots":4,"returnSlots":1},"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":527,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":555,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"copy_memory_to_memory_with_cleanup":{"entryPoint":491,"id":null,"parameterSlots":3,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:1317:92","statements":[{"nodeType":"YulBlock","src":"6:3:92","statements":[]},{"body":{"nodeType":"YulBlock","src":"80:184:92","statements":[{"nodeType":"YulVariableDeclaration","src":"90:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"99:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"94:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"159:63:92","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"184:3:92"},{"name":"i","nodeType":"YulIdentifier","src":"189:1:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"180:3:92"},"nodeType":"YulFunctionCall","src":"180:11:92"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"203:3:92"},{"name":"i","nodeType":"YulIdentifier","src":"208:1:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"199:3:92"},"nodeType":"YulFunctionCall","src":"199:11:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"193:5:92"},"nodeType":"YulFunctionCall","src":"193:18:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"173:6:92"},"nodeType":"YulFunctionCall","src":"173:39:92"},"nodeType":"YulExpressionStatement","src":"173:39:92"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"120:1:92"},{"name":"length","nodeType":"YulIdentifier","src":"123:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"117:2:92"},"nodeType":"YulFunctionCall","src":"117:13:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"131:19:92","statements":[{"nodeType":"YulAssignment","src":"133:15:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"142:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"145:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"138:3:92"},"nodeType":"YulFunctionCall","src":"138:10:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"133:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"113:3:92","statements":[]},"src":"109:113:92"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"242:3:92"},{"name":"length","nodeType":"YulIdentifier","src":"247:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"238:3:92"},"nodeType":"YulFunctionCall","src":"238:16:92"},{"kind":"number","nodeType":"YulLiteral","src":"256:1:92","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"231:6:92"},"nodeType":"YulFunctionCall","src":"231:27:92"},"nodeType":"YulExpressionStatement","src":"231:27:92"}]},"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"58:3:92","type":""},{"name":"dst","nodeType":"YulTypedName","src":"63:3:92","type":""},{"name":"length","nodeType":"YulTypedName","src":"68:6:92","type":""}],"src":"14:250:92"},{"body":{"nodeType":"YulBlock","src":"406:150:92","statements":[{"nodeType":"YulVariableDeclaration","src":"416:27:92","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"436:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"430:5:92"},"nodeType":"YulFunctionCall","src":"430:13:92"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"420:6:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"491:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"499:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"487:3:92"},"nodeType":"YulFunctionCall","src":"487:17:92"},{"name":"pos","nodeType":"YulIdentifier","src":"506:3:92"},{"name":"length","nodeType":"YulIdentifier","src":"511:6:92"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"452:34:92"},"nodeType":"YulFunctionCall","src":"452:66:92"},"nodeType":"YulExpressionStatement","src":"452:66:92"},{"nodeType":"YulAssignment","src":"527:23:92","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"538:3:92"},{"name":"length","nodeType":"YulIdentifier","src":"543:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"534:3:92"},"nodeType":"YulFunctionCall","src":"534:16:92"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"527:3:92"}]}]},"name":"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"382:3:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"387:6:92","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"398:3:92","type":""}],"src":"269:287:92"},{"body":{"nodeType":"YulBlock","src":"735:179:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"752:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"763:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"745:6:92"},"nodeType":"YulFunctionCall","src":"745:21:92"},"nodeType":"YulExpressionStatement","src":"745:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"786:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"797:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"782:3:92"},"nodeType":"YulFunctionCall","src":"782:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"802:2:92","type":"","value":"29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"775:6:92"},"nodeType":"YulFunctionCall","src":"775:30:92"},"nodeType":"YulExpressionStatement","src":"775:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"825:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"836:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"821:3:92"},"nodeType":"YulFunctionCall","src":"821:18:92"},{"hexValue":"416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374","kind":"string","nodeType":"YulLiteral","src":"841:31:92","type":"","value":"Address: call to non-contract"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"814:6:92"},"nodeType":"YulFunctionCall","src":"814:59:92"},"nodeType":"YulExpressionStatement","src":"814:59:92"},{"nodeType":"YulAssignment","src":"882:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"894:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"905:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"890:3:92"},"nodeType":"YulFunctionCall","src":"890:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"882:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"712:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"726:4:92","type":""}],"src":"561:353:92"},{"body":{"nodeType":"YulBlock","src":"1040:275:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1057:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1068:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1050:6:92"},"nodeType":"YulFunctionCall","src":"1050:21:92"},"nodeType":"YulExpressionStatement","src":"1050:21:92"},{"nodeType":"YulVariableDeclaration","src":"1080:27:92","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1100:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1094:5:92"},"nodeType":"YulFunctionCall","src":"1094:13:92"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"1084:6:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1127:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1138:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1123:3:92"},"nodeType":"YulFunctionCall","src":"1123:18:92"},{"name":"length","nodeType":"YulIdentifier","src":"1143:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1116:6:92"},"nodeType":"YulFunctionCall","src":"1116:34:92"},"nodeType":"YulExpressionStatement","src":"1116:34:92"},{"expression":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1198:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"1206:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1194:3:92"},"nodeType":"YulFunctionCall","src":"1194:15:92"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1215:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1226:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1211:3:92"},"nodeType":"YulFunctionCall","src":"1211:18:92"},{"name":"length","nodeType":"YulIdentifier","src":"1231:6:92"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"1159:34:92"},"nodeType":"YulFunctionCall","src":"1159:79:92"},"nodeType":"YulExpressionStatement","src":"1159:79:92"},{"nodeType":"YulAssignment","src":"1247:62:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1263:9:92"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"1282:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"1290:2:92","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1278:3:92"},"nodeType":"YulFunctionCall","src":"1278:15:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1299:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"1295:3:92"},"nodeType":"YulFunctionCall","src":"1295:7:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1274:3:92"},"nodeType":"YulFunctionCall","src":"1274:29:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1259:3:92"},"nodeType":"YulFunctionCall","src":"1259:45:92"},{"kind":"number","nodeType":"YulLiteral","src":"1306:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1255:3:92"},"nodeType":"YulFunctionCall","src":"1255:54:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1247:4:92"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1009:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1020:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1031:4:92","type":""}],"src":"919:396:92"}]},"contents":"{\n { }\n function copy_memory_to_memory_with_cleanup(src, dst, length)\n {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n mstore(add(dst, length), 0)\n }\n function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n {\n let length := mload(value0)\n copy_memory_to_memory_with_cleanup(add(value0, 0x20), pos, length)\n end := add(pos, length)\n }\n function abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 29)\n mstore(add(headStart, 64), \"Address: call to non-contract\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n mstore(headStart, 32)\n let length := mload(value0)\n mstore(add(headStart, 32), length)\n copy_memory_to_memory_with_cleanup(add(value0, 32), add(headStart, 64), length)\n tail := add(add(headStart, and(add(length, 31), not(31))), 64)\n }\n}","id":92,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"60806040523661001357610011610017565b005b6100115b610027610022610067565b61009f565b565b606061004e838360405180606001604052806027815260200161025f602791396100c3565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e8080156100be573d6000f35b3d6000fd5b6060600080856001600160a01b0316856040516100e0919061020f565b600060405180830381855af49150503d806000811461011b576040519150601f19603f3d011682016040523d82523d6000602084013e610120565b606091505b50915091506101318683838761013b565b9695505050505050565b606083156101af5782516000036101a8576001600160a01b0385163b6101a85760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b50816101b9565b6101b983836101c1565b949350505050565b8151156101d15781518083602001fd5b8060405162461bcd60e51b815260040161019f919061022b565b60005b838110156102065781810151838201526020016101ee565b50506000910152565b600082516102218184602087016101eb565b9190910192915050565b602081526000825180602084015261024a8160408501602087016101eb565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLDATASIZE PUSH2 0x13 JUMPI PUSH2 0x11 PUSH2 0x17 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x11 JUMPDEST PUSH2 0x27 PUSH2 0x22 PUSH2 0x67 JUMP JUMPDEST PUSH2 0x9F JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x60 PUSH2 0x4E DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x25F PUSH1 0x27 SWAP2 CODECOPY PUSH2 0xC3 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9A PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 DUP1 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE PUSH1 0x0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH2 0xBE JUMPI RETURNDATASIZE PUSH1 0x0 RETURN JUMPDEST RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0xE0 SWAP2 SWAP1 PUSH2 0x20F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x11B JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x120 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x131 DUP7 DUP4 DUP4 DUP8 PUSH2 0x13B JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x1AF JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0x1A8 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0x1A8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP DUP2 PUSH2 0x1B9 JUMP JUMPDEST PUSH2 0x1B9 DUP4 DUP4 PUSH2 0x1C1 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x1D1 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x19F SWAP2 SWAP1 PUSH2 0x22B JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x206 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1EE JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x221 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x1EB JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x24A DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x1EB JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A164 PUSH20 0x6F6C6343000811000A0000000000000000000000 ","sourceMap":"567:723:18:-:0;;;;;;2898:11:20;:9;:11::i;:::-;567:723:18;;2675:11:20;2322:110;2397:28;2407:17;:15;:17::i;:::-;2397:9;:28::i;:::-;2322:110::o;6674:198:33:-;6757:12;6788:77;6809:6;6817:4;6788:77;;;;;;;;;;;;;;;;;:20;:77::i;:::-;6781:84;6674:198;-1:-1:-1;;;6674:198:33:o;1412:320::-;-1:-1:-1;;;;;1702:19:33;;:23;;;1412:320::o;1859:190:36:-;2029:4;1859:190::o;1148:140:18:-;1215:12;1246:35;1030:66:19;1254:54;-1:-1:-1;;;;;1254:54:19;;1175:140;1246:35:18;1239:42;;1148:140;:::o;948:895:20:-;1286:14;1283:1;1280;1267:34;1500:1;1497;1481:14;1478:1;1462:14;1455:5;1442:60;1576:16;1573:1;1570;1555:38;1614:6;1681:66;;;;1796:16;1793:1;1786:27;1681:66;1716:16;1713:1;1706:27;7058:325:33;7199:12;7224;7238:23;7265:6;-1:-1:-1;;;;;7265:19:33;7285:4;7265:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7223:67;;;;7307:69;7334:6;7342:7;7351:10;7363:12;7307:26;:69::i;:::-;7300:76;7058:325;-1:-1:-1;;;;;;7058:325:33:o;7671:628::-;7851:12;7879:7;7875:418;;;7906:10;:17;7927:1;7906:22;7902:286;;-1:-1:-1;;;;;1702:19:33;;;8113:60;;;;-1:-1:-1;;;8113:60:33;;763:2:92;8113:60:33;;;745:21:92;802:2;782:18;;;775:30;841:31;821:18;;;814:59;890:18;;8113:60:33;;;;;;;;;-1:-1:-1;8208:10:33;8201:17;;7875:418;8249:33;8257:10;8269:12;8249:7;:33::i;:::-;7671:628;;;;;;:::o;8821:540::-;8980:17;;:21;8976:379;;9208:10;9202:17;9264:15;9251:10;9247:2;9243:19;9236:44;8976:379;9331:12;9324:20;;-1:-1:-1;;;9324:20:33;;;;;;;;:::i;14:250:92:-;99:1;109:113;123:6;120:1;117:13;109:113;;;199:11;;;193:18;180:11;;;173:39;145:2;138:10;109:113;;;-1:-1:-1;;256:1:92;238:16;;231:27;14:250::o;269:287::-;398:3;436:6;430:13;452:66;511:6;506:3;499:4;491:6;487:17;452:66;:::i;:::-;534:16;;;;;269:287;-1:-1:-1;;269:287:92:o;919:396::-;1068:2;1057:9;1050:21;1031:4;1100:6;1094:13;1143:6;1138:2;1127:9;1123:18;1116:34;1159:79;1231:6;1226:2;1215:9;1211:18;1206:2;1198:6;1194:15;1159:79;:::i;:::-;1299:2;1278:15;-1:-1:-1;;1274:29:92;1259:45;;;;1306:2;1255:54;;919:396;-1:-1:-1;;919:396:92:o"},"gasEstimates":{"creation":{"codeDepositCost":"131600","executionCost":"infinite","totalCost":"infinite"},"external":{"":"infinite"},"internal":{"_implementation()":"2156"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_logic\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"details\":\"This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an implementation address that can be changed. This address is stored in storage in the location specified by https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the implementation behind the proxy.\",\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Initializes the upgradeable proxy with an initial implementation specified by `_logic`. If `_data` is nonempty, it's used as data in a delegate call to `_logic`. This will typically be an encoded function call, and allows initializing the storage of the proxy like a Solidity constructor.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol\":\"ERC1967Proxy\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/IERC1967.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (interfaces/IERC1967.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\\n *\\n * _Available since v4.8.3._\\n */\\ninterface IERC1967 {\\n /**\\n * @dev Emitted when the implementation is upgraded.\\n */\\n event Upgraded(address indexed implementation);\\n\\n /**\\n * @dev Emitted when the admin account has changed.\\n */\\n event AdminChanged(address previousAdmin, address newAdmin);\\n\\n /**\\n * @dev Emitted when the beacon is changed.\\n */\\n event BeaconUpgraded(address indexed beacon);\\n}\\n\",\"keccak256\":\"0x3cbef5ebc24b415252e2f8c0c9254555d30d9f085603b4b80d9b5ed20ab87e90\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822Proxiable {\\n /**\\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n * address.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy.\\n */\\n function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (proxy/ERC1967/ERC1967Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../Proxy.sol\\\";\\nimport \\\"./ERC1967Upgrade.sol\\\";\\n\\n/**\\n * @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an\\n * implementation address that can be changed. This address is stored in storage in the location specified by\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the\\n * implementation behind the proxy.\\n */\\ncontract ERC1967Proxy is Proxy, ERC1967Upgrade {\\n /**\\n * @dev Initializes the upgradeable proxy with an initial implementation specified by `_logic`.\\n *\\n * If `_data` is nonempty, it's used as data in a delegate call to `_logic`. This will typically be an encoded\\n * function call, and allows initializing the storage of the proxy like a Solidity constructor.\\n */\\n constructor(address _logic, bytes memory _data) payable {\\n _upgradeToAndCall(_logic, _data, false);\\n }\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _implementation() internal view virtual override returns (address impl) {\\n return ERC1967Upgrade._getImplementation();\\n }\\n}\\n\",\"keccak256\":\"0xa2b22da3032e50b55f95ec1d13336102d675f341167aa76db571ef7f8bb7975d\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../beacon/IBeacon.sol\\\";\\nimport \\\"../../interfaces/IERC1967.sol\\\";\\nimport \\\"../../interfaces/draft-IERC1822.sol\\\";\\nimport \\\"../../utils/Address.sol\\\";\\nimport \\\"../../utils/StorageSlot.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n */\\nabstract contract ERC1967Upgrade is IERC1967 {\\n // This is the keccak-256 hash of \\\"eip1967.proxy.rollback\\\" subtracted by 1\\n bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n /**\\n * @dev Storage slot with the address of the current implementation.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _getImplementation() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 implementation slot.\\n */\\n function _setImplementation(address newImplementation) private {\\n require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n }\\n\\n /**\\n * @dev Perform implementation upgrade\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeTo(address newImplementation) internal {\\n _setImplementation(newImplementation);\\n emit Upgraded(newImplementation);\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCall(address newImplementation, bytes memory data, bool forceCall) internal {\\n _upgradeTo(newImplementation);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(newImplementation, data);\\n }\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCallUUPS(address newImplementation, bytes memory data, bool forceCall) internal {\\n // Upgrades from old implementations will perform a rollback test. This test requires the new\\n // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n // this special case will break upgrade paths from old UUPS implementation to new ones.\\n if (StorageSlot.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n _setImplementation(newImplementation);\\n } else {\\n try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n require(slot == _IMPLEMENTATION_SLOT, \\\"ERC1967Upgrade: unsupported proxiableUUID\\\");\\n } catch {\\n revert(\\\"ERC1967Upgrade: new implementation is not UUPS\\\");\\n }\\n _upgradeToAndCall(newImplementation, data, forceCall);\\n }\\n }\\n\\n /**\\n * @dev Storage slot with the admin of the contract.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _getAdmin() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_ADMIN_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 admin slot.\\n */\\n function _setAdmin(address newAdmin) private {\\n require(newAdmin != address(0), \\\"ERC1967: new admin is the zero address\\\");\\n StorageSlot.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n */\\n function _changeAdmin(address newAdmin) internal {\\n emit AdminChanged(_getAdmin(), newAdmin);\\n _setAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\\n */\\n bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n /**\\n * @dev Returns the current beacon.\\n */\\n function _getBeacon() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_BEACON_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new beacon in the EIP1967 beacon slot.\\n */\\n function _setBeacon(address newBeacon) private {\\n require(Address.isContract(newBeacon), \\\"ERC1967: new beacon is not a contract\\\");\\n require(\\n Address.isContract(IBeacon(newBeacon).implementation()),\\n \\\"ERC1967: beacon implementation is not a contract\\\"\\n );\\n StorageSlot.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n }\\n\\n /**\\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n *\\n * Emits a {BeaconUpgraded} event.\\n */\\n function _upgradeBeaconToAndCall(address newBeacon, bytes memory data, bool forceCall) internal {\\n _setBeacon(newBeacon);\\n emit BeaconUpgraded(newBeacon);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x3b21ae06bf5957f73fa16754b0669c77b7abd8ba6c072d35c3281d446fdb86c2\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (proxy/Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\\n * be specified by overriding the virtual {_implementation} function.\\n *\\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\\n * different contract through the {_delegate} function.\\n *\\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\\n */\\nabstract contract Proxy {\\n /**\\n * @dev Delegates the current call to `implementation`.\\n *\\n * This function does not return to its internal call site, it will return directly to the external caller.\\n */\\n function _delegate(address implementation) internal virtual {\\n assembly {\\n // Copy msg.data. We take full control of memory in this inline assembly\\n // block because it will not return to Solidity code. We overwrite the\\n // Solidity scratch pad at memory position 0.\\n calldatacopy(0, 0, calldatasize())\\n\\n // Call the implementation.\\n // out and outsize are 0 because we don't know the size yet.\\n let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)\\n\\n // Copy the returned data.\\n returndatacopy(0, 0, returndatasize())\\n\\n switch result\\n // delegatecall returns 0 on error.\\n case 0 {\\n revert(0, returndatasize())\\n }\\n default {\\n return(0, returndatasize())\\n }\\n }\\n }\\n\\n /**\\n * @dev This is a virtual function that should be overridden so it returns the address to which the fallback function\\n * and {_fallback} should delegate.\\n */\\n function _implementation() internal view virtual returns (address);\\n\\n /**\\n * @dev Delegates the current call to the address returned by `_implementation()`.\\n *\\n * This function does not return to its internal call site, it will return directly to the external caller.\\n */\\n function _fallback() internal virtual {\\n _beforeFallback();\\n _delegate(_implementation());\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\\n * function in the contract matches the call data.\\n */\\n fallback() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data\\n * is empty.\\n */\\n receive() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`\\n * call, or as part of the Solidity `fallback` or `receive` functions.\\n *\\n * If overridden should call `super._beforeFallback()`.\\n */\\n function _beforeFallback() internal virtual {}\\n}\\n\",\"keccak256\":\"0xc130fe33f1b2132158531a87734153293f6d07bc263ff4ac90e85da9c82c0e27\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeacon {\\n /**\\n * @dev Must return an address that can be used as a delegate call target.\\n *\\n * {BeaconProxy} will check that this address is a contract.\\n */\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/StorageSlot.sol)\\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```solidity\\n * contract ERC1967 {\\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n * function _getImplementation() internal view returns (address) {\\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n * }\\n *\\n * function _setImplementation(address newImplementation) internal {\\n * require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n * }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._\\n * _Available since v4.9 for `string`, `bytes`._\\n */\\nlibrary StorageSlot {\\n struct AddressSlot {\\n address value;\\n }\\n\\n struct BooleanSlot {\\n bool value;\\n }\\n\\n struct Bytes32Slot {\\n bytes32 value;\\n }\\n\\n struct Uint256Slot {\\n uint256 value;\\n }\\n\\n struct StringSlot {\\n string value;\\n }\\n\\n struct BytesSlot {\\n bytes value;\\n }\\n\\n /**\\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n */\\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n */\\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n */\\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n */\\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` with member `value` located at `slot`.\\n */\\n function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\\n */\\n function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` with member `value` located at `slot`.\\n */\\n function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\\n */\\n function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n}\\n\",\"keccak256\":\"0xf09e68aa0dc6722a25bc46490e8d48ed864466d17313b8a0b254c36b54e49899\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol":{"ERC1967Upgrade":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"beacon","type":"address"}],"name":"BeaconUpgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"}],"devdoc":{"details":"This abstract contract provides getters and event emitting update functions for https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots. _Available since v4.1._","kind":"dev","methods":{},"stateVariables":{"_ADMIN_SLOT":{"details":"Storage slot with the admin of the contract. This is the keccak-256 hash of \"eip1967.proxy.admin\" subtracted by 1, and is validated in the constructor."},"_BEACON_SLOT":{"details":"The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy. This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor."},"_IMPLEMENTATION_SLOT":{"details":"Storage slot with the address of the current implementation. This is the keccak-256 hash of \"eip1967.proxy.implementation\" subtracted by 1, and is validated in the constructor."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"}],\"devdoc\":{\"details\":\"This abstract contract provides getters and event emitting update functions for https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots. _Available since v4.1._\",\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"_ADMIN_SLOT\":{\"details\":\"Storage slot with the admin of the contract. This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is validated in the constructor.\"},\"_BEACON_SLOT\":{\"details\":\"The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy. This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\"},\"_IMPLEMENTATION_SLOT\":{\"details\":\"Storage slot with the address of the current implementation. This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is validated in the constructor.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol\":\"ERC1967Upgrade\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/IERC1967.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (interfaces/IERC1967.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\\n *\\n * _Available since v4.8.3._\\n */\\ninterface IERC1967 {\\n /**\\n * @dev Emitted when the implementation is upgraded.\\n */\\n event Upgraded(address indexed implementation);\\n\\n /**\\n * @dev Emitted when the admin account has changed.\\n */\\n event AdminChanged(address previousAdmin, address newAdmin);\\n\\n /**\\n * @dev Emitted when the beacon is changed.\\n */\\n event BeaconUpgraded(address indexed beacon);\\n}\\n\",\"keccak256\":\"0x3cbef5ebc24b415252e2f8c0c9254555d30d9f085603b4b80d9b5ed20ab87e90\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822Proxiable {\\n /**\\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n * address.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy.\\n */\\n function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../beacon/IBeacon.sol\\\";\\nimport \\\"../../interfaces/IERC1967.sol\\\";\\nimport \\\"../../interfaces/draft-IERC1822.sol\\\";\\nimport \\\"../../utils/Address.sol\\\";\\nimport \\\"../../utils/StorageSlot.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n */\\nabstract contract ERC1967Upgrade is IERC1967 {\\n // This is the keccak-256 hash of \\\"eip1967.proxy.rollback\\\" subtracted by 1\\n bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n /**\\n * @dev Storage slot with the address of the current implementation.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _getImplementation() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 implementation slot.\\n */\\n function _setImplementation(address newImplementation) private {\\n require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n }\\n\\n /**\\n * @dev Perform implementation upgrade\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeTo(address newImplementation) internal {\\n _setImplementation(newImplementation);\\n emit Upgraded(newImplementation);\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCall(address newImplementation, bytes memory data, bool forceCall) internal {\\n _upgradeTo(newImplementation);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(newImplementation, data);\\n }\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCallUUPS(address newImplementation, bytes memory data, bool forceCall) internal {\\n // Upgrades from old implementations will perform a rollback test. This test requires the new\\n // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n // this special case will break upgrade paths from old UUPS implementation to new ones.\\n if (StorageSlot.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n _setImplementation(newImplementation);\\n } else {\\n try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n require(slot == _IMPLEMENTATION_SLOT, \\\"ERC1967Upgrade: unsupported proxiableUUID\\\");\\n } catch {\\n revert(\\\"ERC1967Upgrade: new implementation is not UUPS\\\");\\n }\\n _upgradeToAndCall(newImplementation, data, forceCall);\\n }\\n }\\n\\n /**\\n * @dev Storage slot with the admin of the contract.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _getAdmin() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_ADMIN_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 admin slot.\\n */\\n function _setAdmin(address newAdmin) private {\\n require(newAdmin != address(0), \\\"ERC1967: new admin is the zero address\\\");\\n StorageSlot.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n */\\n function _changeAdmin(address newAdmin) internal {\\n emit AdminChanged(_getAdmin(), newAdmin);\\n _setAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\\n */\\n bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n /**\\n * @dev Returns the current beacon.\\n */\\n function _getBeacon() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_BEACON_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new beacon in the EIP1967 beacon slot.\\n */\\n function _setBeacon(address newBeacon) private {\\n require(Address.isContract(newBeacon), \\\"ERC1967: new beacon is not a contract\\\");\\n require(\\n Address.isContract(IBeacon(newBeacon).implementation()),\\n \\\"ERC1967: beacon implementation is not a contract\\\"\\n );\\n StorageSlot.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n }\\n\\n /**\\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n *\\n * Emits a {BeaconUpgraded} event.\\n */\\n function _upgradeBeaconToAndCall(address newBeacon, bytes memory data, bool forceCall) internal {\\n _setBeacon(newBeacon);\\n emit BeaconUpgraded(newBeacon);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x3b21ae06bf5957f73fa16754b0669c77b7abd8ba6c072d35c3281d446fdb86c2\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeacon {\\n /**\\n * @dev Must return an address that can be used as a delegate call target.\\n *\\n * {BeaconProxy} will check that this address is a contract.\\n */\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/StorageSlot.sol)\\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```solidity\\n * contract ERC1967 {\\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n * function _getImplementation() internal view returns (address) {\\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n * }\\n *\\n * function _setImplementation(address newImplementation) internal {\\n * require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n * }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._\\n * _Available since v4.9 for `string`, `bytes`._\\n */\\nlibrary StorageSlot {\\n struct AddressSlot {\\n address value;\\n }\\n\\n struct BooleanSlot {\\n bool value;\\n }\\n\\n struct Bytes32Slot {\\n bytes32 value;\\n }\\n\\n struct Uint256Slot {\\n uint256 value;\\n }\\n\\n struct StringSlot {\\n string value;\\n }\\n\\n struct BytesSlot {\\n bytes value;\\n }\\n\\n /**\\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n */\\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n */\\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n */\\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n */\\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` with member `value` located at `slot`.\\n */\\n function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\\n */\\n function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` with member `value` located at `slot`.\\n */\\n function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\\n */\\n function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n}\\n\",\"keccak256\":\"0xf09e68aa0dc6722a25bc46490e8d48ed864466d17313b8a0b254c36b54e49899\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/proxy/Proxy.sol":{"Proxy":{"abi":[{"stateMutability":"payable","type":"fallback"},{"stateMutability":"payable","type":"receive"}],"devdoc":{"details":"This abstract contract provides a fallback function that delegates all calls to another contract using the EVM instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to be specified by overriding the virtual {_implementation} function. Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a different contract through the {_delegate} function. The success and return data of the delegated call will be returned back to the caller of the proxy.","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"details\":\"This abstract contract provides a fallback function that delegates all calls to another contract using the EVM instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to be specified by overriding the virtual {_implementation} function. Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a different contract through the {_delegate} function. The success and return data of the delegated call will be returned back to the caller of the proxy.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/proxy/Proxy.sol\":\"Proxy\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/proxy/Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (proxy/Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\\n * be specified by overriding the virtual {_implementation} function.\\n *\\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\\n * different contract through the {_delegate} function.\\n *\\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\\n */\\nabstract contract Proxy {\\n /**\\n * @dev Delegates the current call to `implementation`.\\n *\\n * This function does not return to its internal call site, it will return directly to the external caller.\\n */\\n function _delegate(address implementation) internal virtual {\\n assembly {\\n // Copy msg.data. We take full control of memory in this inline assembly\\n // block because it will not return to Solidity code. We overwrite the\\n // Solidity scratch pad at memory position 0.\\n calldatacopy(0, 0, calldatasize())\\n\\n // Call the implementation.\\n // out and outsize are 0 because we don't know the size yet.\\n let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)\\n\\n // Copy the returned data.\\n returndatacopy(0, 0, returndatasize())\\n\\n switch result\\n // delegatecall returns 0 on error.\\n case 0 {\\n revert(0, returndatasize())\\n }\\n default {\\n return(0, returndatasize())\\n }\\n }\\n }\\n\\n /**\\n * @dev This is a virtual function that should be overridden so it returns the address to which the fallback function\\n * and {_fallback} should delegate.\\n */\\n function _implementation() internal view virtual returns (address);\\n\\n /**\\n * @dev Delegates the current call to the address returned by `_implementation()`.\\n *\\n * This function does not return to its internal call site, it will return directly to the external caller.\\n */\\n function _fallback() internal virtual {\\n _beforeFallback();\\n _delegate(_implementation());\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\\n * function in the contract matches the call data.\\n */\\n fallback() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data\\n * is empty.\\n */\\n receive() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`\\n * call, or as part of the Solidity `fallback` or `receive` functions.\\n *\\n * If overridden should call `super._beforeFallback()`.\\n */\\n function _beforeFallback() internal virtual {}\\n}\\n\",\"keccak256\":\"0xc130fe33f1b2132158531a87734153293f6d07bc263ff4ac90e85da9c82c0e27\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/proxy/beacon/IBeacon.sol":{"IBeacon":{"abi":[{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"This is the interface that {BeaconProxy} expects of its beacon.","kind":"dev","methods":{"implementation()":{"details":"Must return an address that can be used as a delegate call target. {BeaconProxy} will check that this address is a contract."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"implementation()":"5c60da1b"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"This is the interface that {BeaconProxy} expects of its beacon.\",\"kind\":\"dev\",\"methods\":{\"implementation()\":{\"details\":\"Must return an address that can be used as a delegate call target. {BeaconProxy} will check that this address is a contract.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":\"IBeacon\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeacon {\\n /**\\n * @dev Must return an address that can be used as a delegate call target.\\n *\\n * {BeaconProxy} will check that this address is a contract.\\n */\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/token/ERC1155/ERC1155.sol":{"ERC1155":{"abi":[{"inputs":[{"internalType":"string","name":"uri_","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"TransferSingle","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"value","type":"string"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"URI","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeBatchTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"Implementation of the basic standard multi-token. See https://eips.ethereum.org/EIPS/eip-1155 Originally based on code by Enjin: https://github.com/enjin/erc-1155 _Available since v3.1._","kind":"dev","methods":{"balanceOf(address,uint256)":{"details":"See {IERC1155-balanceOf}. Requirements: - `account` cannot be the zero address."},"balanceOfBatch(address[],uint256[])":{"details":"See {IERC1155-balanceOfBatch}. Requirements: - `accounts` and `ids` must have the same length."},"constructor":{"details":"See {_setURI}."},"isApprovedForAll(address,address)":{"details":"See {IERC1155-isApprovedForAll}."},"safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)":{"details":"See {IERC1155-safeBatchTransferFrom}."},"safeTransferFrom(address,address,uint256,uint256,bytes)":{"details":"See {IERC1155-safeTransferFrom}."},"setApprovalForAll(address,bool)":{"details":"See {IERC1155-setApprovalForAll}."},"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."},"uri(uint256)":{"details":"See {IERC1155MetadataURI-uri}. This implementation returns the same URI for *all* token types. It relies on the token type ID substitution mechanism https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP]. Clients calling this function must replace the `\\{id\\}` substring with the actual token type ID."}},"version":1},"evm":{"bytecode":{"functionDebugData":{"@_5800":{"entryPoint":null,"id":5800,"parameterSlots":1,"returnSlots":0},"@_setURI_6311":{"entryPoint":70,"id":6311,"parameterSlots":1,"returnSlots":0},"abi_decode_tuple_t_string_memory_ptr_fromMemory":{"entryPoint":110,"id":null,"parameterSlots":2,"returnSlots":1},"array_dataslot_string_storage":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"clean_up_bytearray_end_slots_string_storage":{"entryPoint":383,"id":null,"parameterSlots":3,"returnSlots":0},"copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage":{"entryPoint":466,"id":null,"parameterSlots":2,"returnSlots":0},"extract_byte_array_length":{"entryPoint":323,"id":null,"parameterSlots":1,"returnSlots":1},"extract_used_part_and_set_length_of_short_byte_array":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"panic_error_0x41":{"entryPoint":88,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:3779:92","statements":[{"nodeType":"YulBlock","src":"6:3:92","statements":[]},{"body":{"nodeType":"YulBlock","src":"46:95:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"63:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"70:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"75:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"66:3:92"},"nodeType":"YulFunctionCall","src":"66:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"56:6:92"},"nodeType":"YulFunctionCall","src":"56:31:92"},"nodeType":"YulExpressionStatement","src":"56:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"103:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"106:4:92","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"96:6:92"},"nodeType":"YulFunctionCall","src":"96:15:92"},"nodeType":"YulExpressionStatement","src":"96:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"127:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"130:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"120:6:92"},"nodeType":"YulFunctionCall","src":"120:15:92"},"nodeType":"YulExpressionStatement","src":"120:15:92"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"14:127:92"},{"body":{"nodeType":"YulBlock","src":"237:951:92","statements":[{"nodeType":"YulVariableDeclaration","src":"247:12:92","value":{"kind":"number","nodeType":"YulLiteral","src":"257:2:92","type":"","value":"32"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"251:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"304:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"313:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"316:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"306:6:92"},"nodeType":"YulFunctionCall","src":"306:12:92"},"nodeType":"YulExpressionStatement","src":"306:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"279:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"288:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"275:3:92"},"nodeType":"YulFunctionCall","src":"275:23:92"},{"name":"_1","nodeType":"YulIdentifier","src":"300:2:92"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"271:3:92"},"nodeType":"YulFunctionCall","src":"271:32:92"},"nodeType":"YulIf","src":"268:52:92"},{"nodeType":"YulVariableDeclaration","src":"329:30:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"349:9:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"343:5:92"},"nodeType":"YulFunctionCall","src":"343:16:92"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"333:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"368:28:92","value":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"386:2:92","type":"","value":"64"},{"kind":"number","nodeType":"YulLiteral","src":"390:1:92","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"382:3:92"},"nodeType":"YulFunctionCall","src":"382:10:92"},{"kind":"number","nodeType":"YulLiteral","src":"394:1:92","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"378:3:92"},"nodeType":"YulFunctionCall","src":"378:18:92"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"372:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"423:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"432:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"435:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"425:6:92"},"nodeType":"YulFunctionCall","src":"425:12:92"},"nodeType":"YulExpressionStatement","src":"425:12:92"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"411:6:92"},{"name":"_2","nodeType":"YulIdentifier","src":"419:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"408:2:92"},"nodeType":"YulFunctionCall","src":"408:14:92"},"nodeType":"YulIf","src":"405:34:92"},{"nodeType":"YulVariableDeclaration","src":"448:32:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"462:9:92"},{"name":"offset","nodeType":"YulIdentifier","src":"473:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"458:3:92"},"nodeType":"YulFunctionCall","src":"458:22:92"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"452:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"528:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"537:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"540:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"530:6:92"},"nodeType":"YulFunctionCall","src":"530:12:92"},"nodeType":"YulExpressionStatement","src":"530:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"507:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"511:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"503:3:92"},"nodeType":"YulFunctionCall","src":"503:13:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"518:7:92"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"499:3:92"},"nodeType":"YulFunctionCall","src":"499:27:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"492:6:92"},"nodeType":"YulFunctionCall","src":"492:35:92"},"nodeType":"YulIf","src":"489:55:92"},{"nodeType":"YulVariableDeclaration","src":"553:19:92","value":{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"569:2:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"563:5:92"},"nodeType":"YulFunctionCall","src":"563:9:92"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"557:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"595:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"597:16:92"},"nodeType":"YulFunctionCall","src":"597:18:92"},"nodeType":"YulExpressionStatement","src":"597:18:92"}]},"condition":{"arguments":[{"name":"_4","nodeType":"YulIdentifier","src":"587:2:92"},{"name":"_2","nodeType":"YulIdentifier","src":"591:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"584:2:92"},"nodeType":"YulFunctionCall","src":"584:10:92"},"nodeType":"YulIf","src":"581:36:92"},{"nodeType":"YulVariableDeclaration","src":"626:17:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"640:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"636:3:92"},"nodeType":"YulFunctionCall","src":"636:7:92"},"variables":[{"name":"_5","nodeType":"YulTypedName","src":"630:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"652:23:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"672:2:92","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"666:5:92"},"nodeType":"YulFunctionCall","src":"666:9:92"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"656:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"684:71:92","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"706:6:92"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"_4","nodeType":"YulIdentifier","src":"730:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"734:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"726:3:92"},"nodeType":"YulFunctionCall","src":"726:13:92"},{"name":"_5","nodeType":"YulIdentifier","src":"741:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"722:3:92"},"nodeType":"YulFunctionCall","src":"722:22:92"},{"kind":"number","nodeType":"YulLiteral","src":"746:2:92","type":"","value":"63"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"718:3:92"},"nodeType":"YulFunctionCall","src":"718:31:92"},{"name":"_5","nodeType":"YulIdentifier","src":"751:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"714:3:92"},"nodeType":"YulFunctionCall","src":"714:40:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"702:3:92"},"nodeType":"YulFunctionCall","src":"702:53:92"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"688:10:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"814:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"816:16:92"},"nodeType":"YulFunctionCall","src":"816:18:92"},"nodeType":"YulExpressionStatement","src":"816:18:92"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"773:10:92"},{"name":"_2","nodeType":"YulIdentifier","src":"785:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"770:2:92"},"nodeType":"YulFunctionCall","src":"770:18:92"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"793:10:92"},{"name":"memPtr","nodeType":"YulIdentifier","src":"805:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"790:2:92"},"nodeType":"YulFunctionCall","src":"790:22:92"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"767:2:92"},"nodeType":"YulFunctionCall","src":"767:46:92"},"nodeType":"YulIf","src":"764:72:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"852:2:92","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"856:10:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"845:6:92"},"nodeType":"YulFunctionCall","src":"845:22:92"},"nodeType":"YulExpressionStatement","src":"845:22:92"},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"883:6:92"},{"name":"_4","nodeType":"YulIdentifier","src":"891:2:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"876:6:92"},"nodeType":"YulFunctionCall","src":"876:18:92"},"nodeType":"YulExpressionStatement","src":"876:18:92"},{"body":{"nodeType":"YulBlock","src":"940:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"949:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"952:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"942:6:92"},"nodeType":"YulFunctionCall","src":"942:12:92"},"nodeType":"YulExpressionStatement","src":"942:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"917:2:92"},{"name":"_4","nodeType":"YulIdentifier","src":"921:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"913:3:92"},"nodeType":"YulFunctionCall","src":"913:11:92"},{"name":"_1","nodeType":"YulIdentifier","src":"926:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"909:3:92"},"nodeType":"YulFunctionCall","src":"909:20:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"931:7:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"906:2:92"},"nodeType":"YulFunctionCall","src":"906:33:92"},"nodeType":"YulIf","src":"903:53:92"},{"nodeType":"YulVariableDeclaration","src":"965:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"974:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"969:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"1030:83:92","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1059:6:92"},{"name":"i","nodeType":"YulIdentifier","src":"1067:1:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1055:3:92"},"nodeType":"YulFunctionCall","src":"1055:14:92"},{"name":"_1","nodeType":"YulIdentifier","src":"1071:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1051:3:92"},"nodeType":"YulFunctionCall","src":"1051:23:92"},{"arguments":[{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"1090:2:92"},{"name":"i","nodeType":"YulIdentifier","src":"1094:1:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1086:3:92"},"nodeType":"YulFunctionCall","src":"1086:10:92"},{"name":"_1","nodeType":"YulIdentifier","src":"1098:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1082:3:92"},"nodeType":"YulFunctionCall","src":"1082:19:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1076:5:92"},"nodeType":"YulFunctionCall","src":"1076:26:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1044:6:92"},"nodeType":"YulFunctionCall","src":"1044:59:92"},"nodeType":"YulExpressionStatement","src":"1044:59:92"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"995:1:92"},{"name":"_4","nodeType":"YulIdentifier","src":"998:2:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"992:2:92"},"nodeType":"YulFunctionCall","src":"992:9:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"1002:19:92","statements":[{"nodeType":"YulAssignment","src":"1004:15:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"1013:1:92"},{"name":"_1","nodeType":"YulIdentifier","src":"1016:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1009:3:92"},"nodeType":"YulFunctionCall","src":"1009:10:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"1004:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"988:3:92","statements":[]},"src":"984:129:92"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1137:6:92"},{"name":"_4","nodeType":"YulIdentifier","src":"1145:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1133:3:92"},"nodeType":"YulFunctionCall","src":"1133:15:92"},{"name":"_1","nodeType":"YulIdentifier","src":"1150:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1129:3:92"},"nodeType":"YulFunctionCall","src":"1129:24:92"},{"kind":"number","nodeType":"YulLiteral","src":"1155:1:92","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1122:6:92"},"nodeType":"YulFunctionCall","src":"1122:35:92"},"nodeType":"YulExpressionStatement","src":"1122:35:92"},{"nodeType":"YulAssignment","src":"1166:16:92","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"1176:6:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1166:6:92"}]}]},"name":"abi_decode_tuple_t_string_memory_ptr_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"203:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"214:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"226:6:92","type":""}],"src":"146:1042:92"},{"body":{"nodeType":"YulBlock","src":"1248:325:92","statements":[{"nodeType":"YulAssignment","src":"1258:22:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1272:1:92","type":"","value":"1"},{"name":"data","nodeType":"YulIdentifier","src":"1275:4:92"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"1268:3:92"},"nodeType":"YulFunctionCall","src":"1268:12:92"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"1258:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"1289:38:92","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"1319:4:92"},{"kind":"number","nodeType":"YulLiteral","src":"1325:1:92","type":"","value":"1"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1315:3:92"},"nodeType":"YulFunctionCall","src":"1315:12:92"},"variables":[{"name":"outOfPlaceEncoding","nodeType":"YulTypedName","src":"1293:18:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"1366:31:92","statements":[{"nodeType":"YulAssignment","src":"1368:27:92","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"1382:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"1390:4:92","type":"","value":"0x7f"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1378:3:92"},"nodeType":"YulFunctionCall","src":"1378:17:92"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"1368:6:92"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"1346:18:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1339:6:92"},"nodeType":"YulFunctionCall","src":"1339:26:92"},"nodeType":"YulIf","src":"1336:61:92"},{"body":{"nodeType":"YulBlock","src":"1456:111:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1477:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1484:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"1489:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1480:3:92"},"nodeType":"YulFunctionCall","src":"1480:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1470:6:92"},"nodeType":"YulFunctionCall","src":"1470:31:92"},"nodeType":"YulExpressionStatement","src":"1470:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1521:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"1524:4:92","type":"","value":"0x22"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1514:6:92"},"nodeType":"YulFunctionCall","src":"1514:15:92"},"nodeType":"YulExpressionStatement","src":"1514:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1549:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1552:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1542:6:92"},"nodeType":"YulFunctionCall","src":"1542:15:92"},"nodeType":"YulExpressionStatement","src":"1542:15:92"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"1412:18:92"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"1435:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"1443:2:92","type":"","value":"32"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"1432:2:92"},"nodeType":"YulFunctionCall","src":"1432:14:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1409:2:92"},"nodeType":"YulFunctionCall","src":"1409:38:92"},"nodeType":"YulIf","src":"1406:161:92"}]},"name":"extract_byte_array_length","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"1228:4:92","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"1237:6:92","type":""}],"src":"1193:380:92"},{"body":{"nodeType":"YulBlock","src":"1634:65:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1651:1:92","type":"","value":"0"},{"name":"ptr","nodeType":"YulIdentifier","src":"1654:3:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1644:6:92"},"nodeType":"YulFunctionCall","src":"1644:14:92"},"nodeType":"YulExpressionStatement","src":"1644:14:92"},{"nodeType":"YulAssignment","src":"1667:26:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1685:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1688:4:92","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nodeType":"YulIdentifier","src":"1675:9:92"},"nodeType":"YulFunctionCall","src":"1675:18:92"},"variableNames":[{"name":"data","nodeType":"YulIdentifier","src":"1667:4:92"}]}]},"name":"array_dataslot_string_storage","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nodeType":"YulTypedName","src":"1617:3:92","type":""}],"returnVariables":[{"name":"data","nodeType":"YulTypedName","src":"1625:4:92","type":""}],"src":"1578:121:92"},{"body":{"nodeType":"YulBlock","src":"1785:464:92","statements":[{"body":{"nodeType":"YulBlock","src":"1818:425:92","statements":[{"nodeType":"YulVariableDeclaration","src":"1832:11:92","value":{"kind":"number","nodeType":"YulLiteral","src":"1842:1:92","type":"","value":"0"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"1836:2:92","type":""}]},{"expression":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"1863:2:92"},{"name":"array","nodeType":"YulIdentifier","src":"1867:5:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1856:6:92"},"nodeType":"YulFunctionCall","src":"1856:17:92"},"nodeType":"YulExpressionStatement","src":"1856:17:92"},{"nodeType":"YulVariableDeclaration","src":"1886:31:92","value":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"1908:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"1912:4:92","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nodeType":"YulIdentifier","src":"1898:9:92"},"nodeType":"YulFunctionCall","src":"1898:19:92"},"variables":[{"name":"data","nodeType":"YulTypedName","src":"1890:4:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"1930:57:92","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"1953:4:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1963:1:92","type":"","value":"5"},{"arguments":[{"name":"startIndex","nodeType":"YulIdentifier","src":"1970:10:92"},{"kind":"number","nodeType":"YulLiteral","src":"1982:2:92","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1966:3:92"},"nodeType":"YulFunctionCall","src":"1966:19:92"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"1959:3:92"},"nodeType":"YulFunctionCall","src":"1959:27:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1949:3:92"},"nodeType":"YulFunctionCall","src":"1949:38:92"},"variables":[{"name":"deleteStart","nodeType":"YulTypedName","src":"1934:11:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"2024:23:92","statements":[{"nodeType":"YulAssignment","src":"2026:19:92","value":{"name":"data","nodeType":"YulIdentifier","src":"2041:4:92"},"variableNames":[{"name":"deleteStart","nodeType":"YulIdentifier","src":"2026:11:92"}]}]},"condition":{"arguments":[{"name":"startIndex","nodeType":"YulIdentifier","src":"2006:10:92"},{"kind":"number","nodeType":"YulLiteral","src":"2018:4:92","type":"","value":"0x20"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2003:2:92"},"nodeType":"YulFunctionCall","src":"2003:20:92"},"nodeType":"YulIf","src":"2000:47:92"},{"nodeType":"YulVariableDeclaration","src":"2060:41:92","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"2074:4:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2084:1:92","type":"","value":"5"},{"arguments":[{"name":"len","nodeType":"YulIdentifier","src":"2091:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"2096:2:92","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2087:3:92"},"nodeType":"YulFunctionCall","src":"2087:12:92"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"2080:3:92"},"nodeType":"YulFunctionCall","src":"2080:20:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2070:3:92"},"nodeType":"YulFunctionCall","src":"2070:31:92"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"2064:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2114:24:92","value":{"name":"deleteStart","nodeType":"YulIdentifier","src":"2127:11:92"},"variables":[{"name":"start","nodeType":"YulTypedName","src":"2118:5:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"2212:21:92","statements":[{"expression":{"arguments":[{"name":"start","nodeType":"YulIdentifier","src":"2221:5:92"},{"name":"_1","nodeType":"YulIdentifier","src":"2228:2:92"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"2214:6:92"},"nodeType":"YulFunctionCall","src":"2214:17:92"},"nodeType":"YulExpressionStatement","src":"2214:17:92"}]},"condition":{"arguments":[{"name":"start","nodeType":"YulIdentifier","src":"2162:5:92"},{"name":"_2","nodeType":"YulIdentifier","src":"2169:2:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2159:2:92"},"nodeType":"YulFunctionCall","src":"2159:13:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"2173:26:92","statements":[{"nodeType":"YulAssignment","src":"2175:22:92","value":{"arguments":[{"name":"start","nodeType":"YulIdentifier","src":"2188:5:92"},{"kind":"number","nodeType":"YulLiteral","src":"2195:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2184:3:92"},"nodeType":"YulFunctionCall","src":"2184:13:92"},"variableNames":[{"name":"start","nodeType":"YulIdentifier","src":"2175:5:92"}]}]},"pre":{"nodeType":"YulBlock","src":"2155:3:92","statements":[]},"src":"2151:82:92"}]},"condition":{"arguments":[{"name":"len","nodeType":"YulIdentifier","src":"1801:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"1806:2:92","type":"","value":"31"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1798:2:92"},"nodeType":"YulFunctionCall","src":"1798:11:92"},"nodeType":"YulIf","src":"1795:448:92"}]},"name":"clean_up_bytearray_end_slots_string_storage","nodeType":"YulFunctionDefinition","parameters":[{"name":"array","nodeType":"YulTypedName","src":"1757:5:92","type":""},{"name":"len","nodeType":"YulTypedName","src":"1764:3:92","type":""},{"name":"startIndex","nodeType":"YulTypedName","src":"1769:10:92","type":""}],"src":"1704:545:92"},{"body":{"nodeType":"YulBlock","src":"2339:81:92","statements":[{"nodeType":"YulAssignment","src":"2349:65:92","value":{"arguments":[{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"2364:4:92"},{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2382:1:92","type":"","value":"3"},{"name":"len","nodeType":"YulIdentifier","src":"2385:3:92"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2378:3:92"},"nodeType":"YulFunctionCall","src":"2378:11:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2395:1:92","type":"","value":"0"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"2391:3:92"},"nodeType":"YulFunctionCall","src":"2391:6:92"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"2374:3:92"},"nodeType":"YulFunctionCall","src":"2374:24:92"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"2370:3:92"},"nodeType":"YulFunctionCall","src":"2370:29:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2360:3:92"},"nodeType":"YulFunctionCall","src":"2360:40:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2406:1:92","type":"","value":"1"},{"name":"len","nodeType":"YulIdentifier","src":"2409:3:92"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2402:3:92"},"nodeType":"YulFunctionCall","src":"2402:11:92"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"2357:2:92"},"nodeType":"YulFunctionCall","src":"2357:57:92"},"variableNames":[{"name":"used","nodeType":"YulIdentifier","src":"2349:4:92"}]}]},"name":"extract_used_part_and_set_length_of_short_byte_array","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"2316:4:92","type":""},{"name":"len","nodeType":"YulTypedName","src":"2322:3:92","type":""}],"returnVariables":[{"name":"used","nodeType":"YulTypedName","src":"2330:4:92","type":""}],"src":"2254:166:92"},{"body":{"nodeType":"YulBlock","src":"2521:1256:92","statements":[{"nodeType":"YulVariableDeclaration","src":"2531:24:92","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"2551:3:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2545:5:92"},"nodeType":"YulFunctionCall","src":"2545:10:92"},"variables":[{"name":"newLen","nodeType":"YulTypedName","src":"2535:6:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"2598:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"2600:16:92"},"nodeType":"YulFunctionCall","src":"2600:18:92"},"nodeType":"YulExpressionStatement","src":"2600:18:92"}]},"condition":{"arguments":[{"name":"newLen","nodeType":"YulIdentifier","src":"2570:6:92"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2586:2:92","type":"","value":"64"},{"kind":"number","nodeType":"YulLiteral","src":"2590:1:92","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2582:3:92"},"nodeType":"YulFunctionCall","src":"2582:10:92"},{"kind":"number","nodeType":"YulLiteral","src":"2594:1:92","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2578:3:92"},"nodeType":"YulFunctionCall","src":"2578:18:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2567:2:92"},"nodeType":"YulFunctionCall","src":"2567:30:92"},"nodeType":"YulIf","src":"2564:56:92"},{"expression":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"2673:4:92"},{"arguments":[{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"2711:4:92"}],"functionName":{"name":"sload","nodeType":"YulIdentifier","src":"2705:5:92"},"nodeType":"YulFunctionCall","src":"2705:11:92"}],"functionName":{"name":"extract_byte_array_length","nodeType":"YulIdentifier","src":"2679:25:92"},"nodeType":"YulFunctionCall","src":"2679:38:92"},{"name":"newLen","nodeType":"YulIdentifier","src":"2719:6:92"}],"functionName":{"name":"clean_up_bytearray_end_slots_string_storage","nodeType":"YulIdentifier","src":"2629:43:92"},"nodeType":"YulFunctionCall","src":"2629:97:92"},"nodeType":"YulExpressionStatement","src":"2629:97:92"},{"nodeType":"YulVariableDeclaration","src":"2735:18:92","value":{"kind":"number","nodeType":"YulLiteral","src":"2752:1:92","type":"","value":"0"},"variables":[{"name":"srcOffset","nodeType":"YulTypedName","src":"2739:9:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2762:23:92","value":{"kind":"number","nodeType":"YulLiteral","src":"2781:4:92","type":"","value":"0x20"},"variables":[{"name":"srcOffset_1","nodeType":"YulTypedName","src":"2766:11:92","type":""}]},{"nodeType":"YulAssignment","src":"2794:24:92","value":{"name":"srcOffset_1","nodeType":"YulIdentifier","src":"2807:11:92"},"variableNames":[{"name":"srcOffset","nodeType":"YulIdentifier","src":"2794:9:92"}]},{"cases":[{"body":{"nodeType":"YulBlock","src":"2864:656:92","statements":[{"nodeType":"YulVariableDeclaration","src":"2878:35:92","value":{"arguments":[{"name":"newLen","nodeType":"YulIdentifier","src":"2897:6:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2909:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"2905:3:92"},"nodeType":"YulFunctionCall","src":"2905:7:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2893:3:92"},"nodeType":"YulFunctionCall","src":"2893:20:92"},"variables":[{"name":"loopEnd","nodeType":"YulTypedName","src":"2882:7:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2926:49:92","value":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"2970:4:92"}],"functionName":{"name":"array_dataslot_string_storage","nodeType":"YulIdentifier","src":"2940:29:92"},"nodeType":"YulFunctionCall","src":"2940:35:92"},"variables":[{"name":"dstPtr","nodeType":"YulTypedName","src":"2930:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2988:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"2997:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"2992:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"3075:172:92","statements":[{"expression":{"arguments":[{"name":"dstPtr","nodeType":"YulIdentifier","src":"3100:6:92"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"3118:3:92"},{"name":"srcOffset","nodeType":"YulIdentifier","src":"3123:9:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3114:3:92"},"nodeType":"YulFunctionCall","src":"3114:19:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3108:5:92"},"nodeType":"YulFunctionCall","src":"3108:26:92"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"3093:6:92"},"nodeType":"YulFunctionCall","src":"3093:42:92"},"nodeType":"YulExpressionStatement","src":"3093:42:92"},{"nodeType":"YulAssignment","src":"3152:24:92","value":{"arguments":[{"name":"dstPtr","nodeType":"YulIdentifier","src":"3166:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"3174:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3162:3:92"},"nodeType":"YulFunctionCall","src":"3162:14:92"},"variableNames":[{"name":"dstPtr","nodeType":"YulIdentifier","src":"3152:6:92"}]},{"nodeType":"YulAssignment","src":"3193:40:92","value":{"arguments":[{"name":"srcOffset","nodeType":"YulIdentifier","src":"3210:9:92"},{"name":"srcOffset_1","nodeType":"YulIdentifier","src":"3221:11:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3206:3:92"},"nodeType":"YulFunctionCall","src":"3206:27:92"},"variableNames":[{"name":"srcOffset","nodeType":"YulIdentifier","src":"3193:9:92"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3022:1:92"},{"name":"loopEnd","nodeType":"YulIdentifier","src":"3025:7:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"3019:2:92"},"nodeType":"YulFunctionCall","src":"3019:14:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"3034:28:92","statements":[{"nodeType":"YulAssignment","src":"3036:24:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3045:1:92"},{"name":"srcOffset_1","nodeType":"YulIdentifier","src":"3048:11:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3041:3:92"},"nodeType":"YulFunctionCall","src":"3041:19:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"3036:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"3015:3:92","statements":[]},"src":"3011:236:92"},{"body":{"nodeType":"YulBlock","src":"3295:166:92","statements":[{"nodeType":"YulVariableDeclaration","src":"3313:43:92","value":{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"3340:3:92"},{"name":"srcOffset","nodeType":"YulIdentifier","src":"3345:9:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3336:3:92"},"nodeType":"YulFunctionCall","src":"3336:19:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3330:5:92"},"nodeType":"YulFunctionCall","src":"3330:26:92"},"variables":[{"name":"lastValue","nodeType":"YulTypedName","src":"3317:9:92","type":""}]},{"expression":{"arguments":[{"name":"dstPtr","nodeType":"YulIdentifier","src":"3380:6:92"},{"arguments":[{"name":"lastValue","nodeType":"YulIdentifier","src":"3392:9:92"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3419:1:92","type":"","value":"3"},{"name":"newLen","nodeType":"YulIdentifier","src":"3422:6:92"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"3415:3:92"},"nodeType":"YulFunctionCall","src":"3415:14:92"},{"kind":"number","nodeType":"YulLiteral","src":"3431:3:92","type":"","value":"248"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3411:3:92"},"nodeType":"YulFunctionCall","src":"3411:24:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3441:1:92","type":"","value":"0"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"3437:3:92"},"nodeType":"YulFunctionCall","src":"3437:6:92"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"3407:3:92"},"nodeType":"YulFunctionCall","src":"3407:37:92"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"3403:3:92"},"nodeType":"YulFunctionCall","src":"3403:42:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3388:3:92"},"nodeType":"YulFunctionCall","src":"3388:58:92"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"3373:6:92"},"nodeType":"YulFunctionCall","src":"3373:74:92"},"nodeType":"YulExpressionStatement","src":"3373:74:92"}]},"condition":{"arguments":[{"name":"loopEnd","nodeType":"YulIdentifier","src":"3266:7:92"},{"name":"newLen","nodeType":"YulIdentifier","src":"3275:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"3263:2:92"},"nodeType":"YulFunctionCall","src":"3263:19:92"},"nodeType":"YulIf","src":"3260:201:92"},{"expression":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"3481:4:92"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3495:1:92","type":"","value":"1"},{"name":"newLen","nodeType":"YulIdentifier","src":"3498:6:92"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"3491:3:92"},"nodeType":"YulFunctionCall","src":"3491:14:92"},{"kind":"number","nodeType":"YulLiteral","src":"3507:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3487:3:92"},"nodeType":"YulFunctionCall","src":"3487:22:92"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"3474:6:92"},"nodeType":"YulFunctionCall","src":"3474:36:92"},"nodeType":"YulExpressionStatement","src":"3474:36:92"}]},"nodeType":"YulCase","src":"2857:663:92","value":{"kind":"number","nodeType":"YulLiteral","src":"2862:1:92","type":"","value":"1"}},{"body":{"nodeType":"YulBlock","src":"3537:234:92","statements":[{"nodeType":"YulVariableDeclaration","src":"3551:14:92","value":{"kind":"number","nodeType":"YulLiteral","src":"3564:1:92","type":"","value":"0"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"3555:5:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"3600:67:92","statements":[{"nodeType":"YulAssignment","src":"3618:35:92","value":{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"3637:3:92"},{"name":"srcOffset","nodeType":"YulIdentifier","src":"3642:9:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3633:3:92"},"nodeType":"YulFunctionCall","src":"3633:19:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3627:5:92"},"nodeType":"YulFunctionCall","src":"3627:26:92"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"3618:5:92"}]}]},"condition":{"name":"newLen","nodeType":"YulIdentifier","src":"3581:6:92"},"nodeType":"YulIf","src":"3578:89:92"},{"expression":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"3687:4:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3746:5:92"},{"name":"newLen","nodeType":"YulIdentifier","src":"3753:6:92"}],"functionName":{"name":"extract_used_part_and_set_length_of_short_byte_array","nodeType":"YulIdentifier","src":"3693:52:92"},"nodeType":"YulFunctionCall","src":"3693:67:92"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"3680:6:92"},"nodeType":"YulFunctionCall","src":"3680:81:92"},"nodeType":"YulExpressionStatement","src":"3680:81:92"}]},"nodeType":"YulCase","src":"3529:242:92","value":"default"}],"expression":{"arguments":[{"name":"newLen","nodeType":"YulIdentifier","src":"2837:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"2845:2:92","type":"","value":"31"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2834:2:92"},"nodeType":"YulFunctionCall","src":"2834:14:92"},"nodeType":"YulSwitch","src":"2827:944:92"}]},"name":"copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage","nodeType":"YulFunctionDefinition","parameters":[{"name":"slot","nodeType":"YulTypedName","src":"2506:4:92","type":""},{"name":"src","nodeType":"YulTypedName","src":"2512:3:92","type":""}],"src":"2425:1352:92"}]},"contents":"{\n { }\n function panic_error_0x41()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function abi_decode_tuple_t_string_memory_ptr_fromMemory(headStart, dataEnd) -> value0\n {\n let _1 := 32\n if slt(sub(dataEnd, headStart), _1) { revert(0, 0) }\n let offset := mload(headStart)\n let _2 := sub(shl(64, 1), 1)\n if gt(offset, _2) { revert(0, 0) }\n let _3 := add(headStart, offset)\n if iszero(slt(add(_3, 0x1f), dataEnd)) { revert(0, 0) }\n let _4 := mload(_3)\n if gt(_4, _2) { panic_error_0x41() }\n let _5 := not(31)\n let memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(and(add(_4, 0x1f), _5), 63), _5))\n if or(gt(newFreePtr, _2), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n mstore(memPtr, _4)\n if gt(add(add(_3, _4), _1), dataEnd) { revert(0, 0) }\n let i := 0\n for { } lt(i, _4) { i := add(i, _1) }\n {\n mstore(add(add(memPtr, i), _1), mload(add(add(_3, i), _1)))\n }\n mstore(add(add(memPtr, _4), _1), 0)\n value0 := memPtr\n }\n function extract_byte_array_length(data) -> length\n {\n length := shr(1, data)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n if eq(outOfPlaceEncoding, lt(length, 32))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n }\n function array_dataslot_string_storage(ptr) -> data\n {\n mstore(0, ptr)\n data := keccak256(0, 0x20)\n }\n function clean_up_bytearray_end_slots_string_storage(array, len, startIndex)\n {\n if gt(len, 31)\n {\n let _1 := 0\n mstore(_1, array)\n let data := keccak256(_1, 0x20)\n let deleteStart := add(data, shr(5, add(startIndex, 31)))\n if lt(startIndex, 0x20) { deleteStart := data }\n let _2 := add(data, shr(5, add(len, 31)))\n let start := deleteStart\n for { } lt(start, _2) { start := add(start, 1) }\n { sstore(start, _1) }\n }\n }\n function extract_used_part_and_set_length_of_short_byte_array(data, len) -> used\n {\n used := or(and(data, not(shr(shl(3, len), not(0)))), shl(1, len))\n }\n function copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage(slot, src)\n {\n let newLen := mload(src)\n if gt(newLen, sub(shl(64, 1), 1)) { panic_error_0x41() }\n clean_up_bytearray_end_slots_string_storage(slot, extract_byte_array_length(sload(slot)), newLen)\n let srcOffset := 0\n let srcOffset_1 := 0x20\n srcOffset := srcOffset_1\n switch gt(newLen, 31)\n case 1 {\n let loopEnd := and(newLen, not(31))\n let dstPtr := array_dataslot_string_storage(slot)\n let i := 0\n for { } lt(i, loopEnd) { i := add(i, srcOffset_1) }\n {\n sstore(dstPtr, mload(add(src, srcOffset)))\n dstPtr := add(dstPtr, 1)\n srcOffset := add(srcOffset, srcOffset_1)\n }\n if lt(loopEnd, newLen)\n {\n let lastValue := mload(add(src, srcOffset))\n sstore(dstPtr, and(lastValue, not(shr(and(shl(3, newLen), 248), not(0)))))\n }\n sstore(slot, add(shl(1, newLen), 1))\n }\n default {\n let value := 0\n if newLen\n {\n value := mload(add(src, srcOffset))\n }\n sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, newLen))\n }\n }\n}","id":92,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60806040523480156200001157600080fd5b50604051620017463803806200174683398101604081905262000034916200006e565b6200003f8162000046565b506200029e565b6002620000548282620001d2565b5050565b634e487b7160e01b600052604160045260246000fd5b600060208083850312156200008257600080fd5b82516001600160401b03808211156200009a57600080fd5b818501915085601f830112620000af57600080fd5b815181811115620000c457620000c462000058565b604051601f8201601f19908116603f01168101908382118183101715620000ef57620000ef62000058565b8160405282815288868487010111156200010857600080fd5b600093505b828410156200012c57848401860151818501870152928501926200010d565b600086848301015280965050505050505092915050565b600181811c908216806200015857607f821691505b6020821081036200017957634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620001cd57600081815260208120601f850160051c81016020861015620001a85750805b601f850160051c820191505b81811015620001c957828155600101620001b4565b5050505b505050565b81516001600160401b03811115620001ee57620001ee62000058565b6200020681620001ff845462000143565b846200017f565b602080601f8311600181146200023e5760008415620002255750858301515b600019600386901b1c1916600185901b178555620001c9565b600085815260208120601f198616915b828110156200026f578886015182559484019460019091019084016200024e565b50858210156200028e5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61149880620002ae6000396000f3fe608060405234801561001057600080fd5b50600436106100875760003560e01c80634e1273f41161005b5780634e1273f41461010a578063a22cb4651461012a578063e985e9c51461013d578063f242432a1461017957600080fd5b8062fdd58e1461008c57806301ffc9a7146100b25780630e89341c146100d55780632eb2c2d6146100f5575b600080fd5b61009f61009a366004610dab565b61018c565b6040519081526020015b60405180910390f35b6100c56100c0366004610dee565b610238565b60405190151581526020016100a9565b6100e86100e3366004610e12565b610288565b6040516100a99190610e71565b610108610103366004610fd0565b61031c565b005b61011d61011836600461107a565b6103af565b6040516100a99190611180565b610108610138366004611193565b6104ed565b6100c561014b3660046111cf565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205460ff1690565b610108610187366004611202565b6104fc565b60006001600160a01b03831661020f5760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201527f616c6964206f776e65720000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b506000818152602081815260408083206001600160a01b03861684529091529020545b92915050565b60006001600160e01b03198216636cdb3d1360e11b148061026957506001600160e01b031982166303a24d0760e21b145b8061023257506301ffc9a760e01b6001600160e01b0319831614610232565b60606002805461029790611267565b80601f01602080910402602001604051908101604052809291908181526020018280546102c390611267565b80156103105780601f106102e557610100808354040283529160200191610310565b820191906000526020600020905b8154815290600101906020018083116102f357829003601f168201915b50505050509050919050565b6001600160a01b0385163314806103385750610338853361014b565b61039b5760405162461bcd60e51b815260206004820152602e60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201526d195c881bdc88185c1c1c9bdd995960921b6064820152608401610206565b6103a88585858585610588565b5050505050565b606081518351146104285760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e67746860448201527f206d69736d6174636800000000000000000000000000000000000000000000006064820152608401610206565b6000835167ffffffffffffffff81111561044457610444610e84565b60405190808252806020026020018201604052801561046d578160200160208202803683370190505b50905060005b84518110156104e5576104b8858281518110610491576104916112a1565b60200260200101518583815181106104ab576104ab6112a1565b602002602001015161018c565b8282815181106104ca576104ca6112a1565b60209081029190910101526104de816112cd565b9050610473565b509392505050565b6104f83383836107fb565b5050565b6001600160a01b0385163314806105185750610518853361014b565b61057b5760405162461bcd60e51b815260206004820152602e60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201526d195c881bdc88185c1c1c9bdd995960921b6064820152608401610206565b6103a885858585856108ef565b81518351146105ff5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060448201527f6d69736d617463680000000000000000000000000000000000000000000000006064820152608401610206565b6001600160a01b0384166106635760405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b6064820152608401610206565b3360005b845181101561078d576000858281518110610684576106846112a1565b6020026020010151905060008583815181106106a2576106a26112a1565b602090810291909101810151600084815280835260408082206001600160a01b038e1683529093529190912054909150818110156107355760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201526939103a3930b739b332b960b11b6064820152608401610206565b6000838152602081815260408083206001600160a01b038e8116855292528083208585039055908b168252812080548492906107729084906112e6565b9250508190555050505080610786906112cd565b9050610667565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb87876040516107dd9291906112f9565b60405180910390a46107f3818787878787610a9a565b505050505050565b816001600160a01b0316836001600160a01b0316036108825760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c2073746174757360448201527f20666f722073656c6600000000000000000000000000000000000000000000006064820152608401610206565b6001600160a01b03838116600081815260016020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0384166109535760405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b6064820152608401610206565b33600061095f85610c48565b9050600061096c85610c48565b90506000868152602081815260408083206001600160a01b038c168452909152902054858110156109f25760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201526939103a3930b739b332b960b11b6064820152608401610206565b6000878152602081815260408083206001600160a01b038d8116855292528083208985039055908a16825281208054889290610a2f9084906112e6565b909155505060408051888152602081018890526001600160a01b03808b16928c821692918816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4610a8f848a8a8a8a8a610c93565b505050505050505050565b6001600160a01b0384163b156107f35760405163bc197c8160e01b81526001600160a01b0385169063bc197c8190610ade9089908990889088908890600401611327565b6020604051808303816000875af1925050508015610b19575060408051601f3d908101601f19168201909252610b1691810190611385565b60015b610bce57610b256113a2565b806308c379a003610b5e5750610b396113be565b80610b445750610b60565b8060405162461bcd60e51b81526004016102069190610e71565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e2d4552433131353560448201527f526563656976657220696d706c656d656e7465720000000000000000000000006064820152608401610206565b6001600160e01b0319811663bc197c8160e01b14610c3f5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a656374656044820152676420746f6b656e7360c01b6064820152608401610206565b50505050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110610c8257610c826112a1565b602090810291909101015292915050565b6001600160a01b0384163b156107f35760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e6190610cd79089908990889088908890600401611448565b6020604051808303816000875af1925050508015610d12575060408051601f3d908101601f19168201909252610d0f91810190611385565b60015b610d1e57610b256113a2565b6001600160e01b0319811663f23a6e6160e01b14610c3f5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a656374656044820152676420746f6b656e7360c01b6064820152608401610206565b80356001600160a01b0381168114610da657600080fd5b919050565b60008060408385031215610dbe57600080fd5b610dc783610d8f565b946020939093013593505050565b6001600160e01b031981168114610deb57600080fd5b50565b600060208284031215610e0057600080fd5b8135610e0b81610dd5565b9392505050565b600060208284031215610e2457600080fd5b5035919050565b6000815180845260005b81811015610e5157602081850181015186830182015201610e35565b506000602082860101526020601f19601f83011685010191505092915050565b602081526000610e0b6020830184610e2b565b634e487b7160e01b600052604160045260246000fd5b601f8201601f1916810167ffffffffffffffff81118282101715610ec057610ec0610e84565b6040525050565b600067ffffffffffffffff821115610ee157610ee1610e84565b5060051b60200190565b600082601f830112610efc57600080fd5b81356020610f0982610ec7565b604051610f168282610e9a565b83815260059390931b8501820192828101915086841115610f3657600080fd5b8286015b84811015610f515780358352918301918301610f3a565b509695505050505050565b600082601f830112610f6d57600080fd5b813567ffffffffffffffff811115610f8757610f87610e84565b604051610f9e601f8301601f191660200182610e9a565b818152846020838601011115610fb357600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a08688031215610fe857600080fd5b610ff186610d8f565b9450610fff60208701610d8f565b9350604086013567ffffffffffffffff8082111561101c57600080fd5b61102889838a01610eeb565b9450606088013591508082111561103e57600080fd5b61104a89838a01610eeb565b9350608088013591508082111561106057600080fd5b5061106d88828901610f5c565b9150509295509295909350565b6000806040838503121561108d57600080fd5b823567ffffffffffffffff808211156110a557600080fd5b818501915085601f8301126110b957600080fd5b813560206110c682610ec7565b6040516110d38282610e9a565b83815260059390931b85018201928281019150898411156110f357600080fd5b948201945b838610156111185761110986610d8f565b825294820194908201906110f8565b9650508601359250508082111561112e57600080fd5b5061113b85828601610eeb565b9150509250929050565b600081518084526020808501945080840160005b8381101561117557815187529582019590820190600101611159565b509495945050505050565b602081526000610e0b6020830184611145565b600080604083850312156111a657600080fd5b6111af83610d8f565b9150602083013580151581146111c457600080fd5b809150509250929050565b600080604083850312156111e257600080fd5b6111eb83610d8f565b91506111f960208401610d8f565b90509250929050565b600080600080600060a0868803121561121a57600080fd5b61122386610d8f565b945061123160208701610d8f565b93506040860135925060608601359150608086013567ffffffffffffffff81111561125b57600080fd5b61106d88828901610f5c565b600181811c9082168061127b57607f821691505b60208210810361129b57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016112df576112df6112b7565b5060010190565b80820180821115610232576102326112b7565b60408152600061130c6040830185611145565b828103602084015261131e8185611145565b95945050505050565b60006001600160a01b03808816835280871660208401525060a0604083015261135360a0830186611145565b82810360608401526113658186611145565b905082810360808401526113798185610e2b565b98975050505050505050565b60006020828403121561139757600080fd5b8151610e0b81610dd5565b600060033d11156113bb5760046000803e5060005160e01c5b90565b600060443d10156113cc5790565b6040516003193d81016004833e81513d67ffffffffffffffff81602484011181841117156113fc57505050505090565b82850191508151818111156114145750505050505090565b843d870101602082850101111561142e5750505050505090565b61143d60208286010187610e9a565b509095945050505050565b60006001600160a01b03808816835280871660208401525084604083015283606083015260a0608083015261148060a0830184610e2b565b97965050505050505056fea164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x1746 CODESIZE SUB DUP1 PUSH3 0x1746 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x34 SWAP2 PUSH3 0x6E JUMP JUMPDEST PUSH3 0x3F DUP2 PUSH3 0x46 JUMP JUMPDEST POP PUSH3 0x29E JUMP JUMPDEST PUSH1 0x2 PUSH3 0x54 DUP3 DUP3 PUSH3 0x1D2 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x82 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH3 0x9A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH3 0xAF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH3 0xC4 JUMPI PUSH3 0xC4 PUSH3 0x58 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH3 0xEF JUMPI PUSH3 0xEF PUSH3 0x58 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 DUP7 DUP5 DUP8 ADD ADD GT ISZERO PUSH3 0x108 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP4 POP JUMPDEST DUP3 DUP5 LT ISZERO PUSH3 0x12C JUMPI DUP5 DUP5 ADD DUP7 ADD MLOAD DUP2 DUP6 ADD DUP8 ADD MSTORE SWAP3 DUP6 ADD SWAP3 PUSH3 0x10D JUMP JUMPDEST PUSH1 0x0 DUP7 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP7 POP POP POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH3 0x158 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH3 0x179 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH3 0x1CD JUMPI PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP7 LT ISZERO PUSH3 0x1A8 JUMPI POP DUP1 JUMPDEST PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x1C9 JUMPI DUP3 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x1B4 JUMP JUMPDEST POP POP POP JUMPDEST POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH3 0x1EE JUMPI PUSH3 0x1EE PUSH3 0x58 JUMP JUMPDEST PUSH3 0x206 DUP2 PUSH3 0x1FF DUP5 SLOAD PUSH3 0x143 JUMP JUMPDEST DUP5 PUSH3 0x17F JUMP JUMPDEST PUSH1 0x20 DUP1 PUSH1 0x1F DUP4 GT PUSH1 0x1 DUP2 EQ PUSH3 0x23E JUMPI PUSH1 0x0 DUP5 ISZERO PUSH3 0x225 JUMPI POP DUP6 DUP4 ADD MLOAD JUMPDEST PUSH1 0x0 NOT PUSH1 0x3 DUP7 SWAP1 SHL SHR NOT AND PUSH1 0x1 DUP6 SWAP1 SHL OR DUP6 SSTORE PUSH3 0x1C9 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F NOT DUP7 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH3 0x26F JUMPI DUP9 DUP7 ADD MLOAD DUP3 SSTORE SWAP5 DUP5 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 DUP5 ADD PUSH3 0x24E JUMP JUMPDEST POP DUP6 DUP3 LT ISZERO PUSH3 0x28E JUMPI DUP8 DUP6 ADD MLOAD PUSH1 0x0 NOT PUSH1 0x3 DUP9 SWAP1 SHL PUSH1 0xF8 AND SHR NOT AND DUP2 SSTORE JUMPDEST POP POP POP POP POP PUSH1 0x1 SWAP1 DUP2 SHL ADD SWAP1 SSTORE POP JUMP JUMPDEST PUSH2 0x1498 DUP1 PUSH3 0x2AE PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x87 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x4E1273F4 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x4E1273F4 EQ PUSH2 0x10A JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x12A JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x13D JUMPI DUP1 PUSH4 0xF242432A EQ PUSH2 0x179 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH3 0xFDD58E EQ PUSH2 0x8C JUMPI DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xB2 JUMPI DUP1 PUSH4 0xE89341C EQ PUSH2 0xD5 JUMPI DUP1 PUSH4 0x2EB2C2D6 EQ PUSH2 0xF5 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9F PUSH2 0x9A CALLDATASIZE PUSH1 0x4 PUSH2 0xDAB JUMP JUMPDEST PUSH2 0x18C JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xC5 PUSH2 0xC0 CALLDATASIZE PUSH1 0x4 PUSH2 0xDEE JUMP JUMPDEST PUSH2 0x238 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xA9 JUMP JUMPDEST PUSH2 0xE8 PUSH2 0xE3 CALLDATASIZE PUSH1 0x4 PUSH2 0xE12 JUMP JUMPDEST PUSH2 0x288 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA9 SWAP2 SWAP1 PUSH2 0xE71 JUMP JUMPDEST PUSH2 0x108 PUSH2 0x103 CALLDATASIZE PUSH1 0x4 PUSH2 0xFD0 JUMP JUMPDEST PUSH2 0x31C JUMP JUMPDEST STOP JUMPDEST PUSH2 0x11D PUSH2 0x118 CALLDATASIZE PUSH1 0x4 PUSH2 0x107A JUMP JUMPDEST PUSH2 0x3AF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA9 SWAP2 SWAP1 PUSH2 0x1180 JUMP JUMPDEST PUSH2 0x108 PUSH2 0x138 CALLDATASIZE PUSH1 0x4 PUSH2 0x1193 JUMP JUMPDEST PUSH2 0x4ED JUMP JUMPDEST PUSH2 0xC5 PUSH2 0x14B CALLDATASIZE PUSH1 0x4 PUSH2 0x11CF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x108 PUSH2 0x187 CALLDATASIZE PUSH1 0x4 PUSH2 0x1202 JUMP JUMPDEST PUSH2 0x4FC JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x20F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A2061646472657373207A65726F206973206E6F7420612076 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x616C6964206F776E657200000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x6CDB3D13 PUSH1 0xE1 SHL EQ DUP1 PUSH2 0x269 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x3A24D07 PUSH1 0xE2 SHL EQ JUMPDEST DUP1 PUSH2 0x232 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ PUSH2 0x232 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x2 DUP1 SLOAD PUSH2 0x297 SWAP1 PUSH2 0x1267 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x2C3 SWAP1 PUSH2 0x1267 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x310 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x2E5 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x310 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x2F3 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND CALLER EQ DUP1 PUSH2 0x338 JUMPI POP PUSH2 0x338 DUP6 CALLER PUSH2 0x14B JUMP JUMPDEST PUSH2 0x39B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A2063616C6C6572206973206E6F7420746F6B656E206F776E PUSH1 0x44 DUP3 ADD MSTORE PUSH14 0x195C881BDC88185C1C1C9BDD9959 PUSH1 0x92 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x206 JUMP JUMPDEST PUSH2 0x3A8 DUP6 DUP6 DUP6 DUP6 DUP6 PUSH2 0x588 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 MLOAD DUP4 MLOAD EQ PUSH2 0x428 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A206163636F756E747320616E6420696473206C656E677468 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x206D69736D617463680000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x206 JUMP JUMPDEST PUSH1 0x0 DUP4 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x444 JUMPI PUSH2 0x444 PUSH2 0xE84 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x46D JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x4E5 JUMPI PUSH2 0x4B8 DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x491 JUMPI PUSH2 0x491 PUSH2 0x12A1 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x4AB JUMPI PUSH2 0x4AB PUSH2 0x12A1 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x18C JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x4CA JUMPI PUSH2 0x4CA PUSH2 0x12A1 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH2 0x4DE DUP2 PUSH2 0x12CD JUMP JUMPDEST SWAP1 POP PUSH2 0x473 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x4F8 CALLER DUP4 DUP4 PUSH2 0x7FB JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND CALLER EQ DUP1 PUSH2 0x518 JUMPI POP PUSH2 0x518 DUP6 CALLER PUSH2 0x14B JUMP JUMPDEST PUSH2 0x57B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A2063616C6C6572206973206E6F7420746F6B656E206F776E PUSH1 0x44 DUP3 ADD MSTORE PUSH14 0x195C881BDC88185C1C1C9BDD9959 PUSH1 0x92 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x206 JUMP JUMPDEST PUSH2 0x3A8 DUP6 DUP6 DUP6 DUP6 DUP6 PUSH2 0x8EF JUMP JUMPDEST DUP2 MLOAD DUP4 MLOAD EQ PUSH2 0x5FF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x28 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A2069647320616E6420616D6F756E7473206C656E67746820 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6D69736D61746368000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x206 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x663 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A207472616E7366657220746F20746865207A65726F206164 PUSH1 0x44 DUP3 ADD MSTORE PUSH5 0x6472657373 PUSH1 0xD8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x206 JUMP JUMPDEST CALLER PUSH1 0x0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x78D JUMPI PUSH1 0x0 DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x684 JUMPI PUSH2 0x684 PUSH2 0x12A1 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x6A2 JUMPI PUSH2 0x6A2 PUSH2 0x12A1 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD PUSH1 0x0 DUP5 DUP2 MSTORE DUP1 DUP4 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP15 AND DUP4 MSTORE SWAP1 SWAP4 MSTORE SWAP2 SWAP1 SWAP2 KECCAK256 SLOAD SWAP1 SWAP2 POP DUP2 DUP2 LT ISZERO PUSH2 0x735 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A20696E73756666696369656E742062616C616E636520666F PUSH1 0x44 DUP3 ADD MSTORE PUSH10 0x39103A3930B739B332B9 PUSH1 0xB1 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x206 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP15 DUP2 AND DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 DUP6 DUP6 SUB SWAP1 SSTORE SWAP1 DUP12 AND DUP3 MSTORE DUP2 KECCAK256 DUP1 SLOAD DUP5 SWAP3 SWAP1 PUSH2 0x772 SWAP1 DUP5 SWAP1 PUSH2 0x12E6 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP POP POP POP DUP1 PUSH2 0x786 SWAP1 PUSH2 0x12CD JUMP JUMPDEST SWAP1 POP PUSH2 0x667 JUMP JUMPDEST POP DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB DUP8 DUP8 PUSH1 0x40 MLOAD PUSH2 0x7DD SWAP3 SWAP2 SWAP1 PUSH2 0x12F9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x7F3 DUP2 DUP8 DUP8 DUP8 DUP8 DUP8 PUSH2 0xA9A JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x882 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A2073657474696E6720617070726F76616C20737461747573 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x20666F722073656C660000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x206 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND DUP7 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP2 MLOAD SWAP2 DUP3 MSTORE PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x953 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A207472616E7366657220746F20746865207A65726F206164 PUSH1 0x44 DUP3 ADD MSTORE PUSH5 0x6472657373 PUSH1 0xD8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x206 JUMP JUMPDEST CALLER PUSH1 0x0 PUSH2 0x95F DUP6 PUSH2 0xC48 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x96C DUP6 PUSH2 0xC48 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD DUP6 DUP2 LT ISZERO PUSH2 0x9F2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A20696E73756666696369656E742062616C616E636520666F PUSH1 0x44 DUP3 ADD MSTORE PUSH10 0x39103A3930B739B332B9 PUSH1 0xB1 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x206 JUMP JUMPDEST PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP14 DUP2 AND DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 DUP10 DUP6 SUB SWAP1 SSTORE SWAP1 DUP11 AND DUP3 MSTORE DUP2 KECCAK256 DUP1 SLOAD DUP9 SWAP3 SWAP1 PUSH2 0xA2F SWAP1 DUP5 SWAP1 PUSH2 0x12E6 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x40 DUP1 MLOAD DUP9 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP9 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP12 AND SWAP3 DUP13 DUP3 AND SWAP3 SWAP2 DUP9 AND SWAP2 PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0xA8F DUP5 DUP11 DUP11 DUP11 DUP11 DUP11 PUSH2 0xC93 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO PUSH2 0x7F3 JUMPI PUSH1 0x40 MLOAD PUSH4 0xBC197C81 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0xBC197C81 SWAP1 PUSH2 0xADE SWAP1 DUP10 SWAP1 DUP10 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x1327 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0xB19 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0xB16 SWAP2 DUP2 ADD SWAP1 PUSH2 0x1385 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0xBCE JUMPI PUSH2 0xB25 PUSH2 0x13A2 JUMP JUMPDEST DUP1 PUSH4 0x8C379A0 SUB PUSH2 0xB5E JUMPI POP PUSH2 0xB39 PUSH2 0x13BE JUMP JUMPDEST DUP1 PUSH2 0xB44 JUMPI POP PUSH2 0xB60 JUMP JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x206 SWAP2 SWAP1 PUSH2 0xE71 JUMP JUMPDEST POP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x34 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A207472616E7366657220746F206E6F6E2D45524331313535 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x526563656976657220696D706C656D656E746572000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x206 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH4 0xBC197C81 PUSH1 0xE0 SHL EQ PUSH2 0xC3F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x28 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A204552433131353552656365697665722072656A65637465 PUSH1 0x44 DUP3 ADD MSTORE PUSH8 0x6420746F6B656E73 PUSH1 0xC0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x206 JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 PUSH1 0x0 SWAP2 SWAP1 PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP3 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xC82 JUMPI PUSH2 0xC82 PUSH2 0x12A1 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO PUSH2 0x7F3 JUMPI PUSH1 0x40 MLOAD PUSH4 0xF23A6E61 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0xF23A6E61 SWAP1 PUSH2 0xCD7 SWAP1 DUP10 SWAP1 DUP10 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x1448 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0xD12 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0xD0F SWAP2 DUP2 ADD SWAP1 PUSH2 0x1385 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0xD1E JUMPI PUSH2 0xB25 PUSH2 0x13A2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH4 0xF23A6E61 PUSH1 0xE0 SHL EQ PUSH2 0xC3F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x28 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A204552433131353552656365697665722072656A65637465 PUSH1 0x44 DUP3 ADD MSTORE PUSH8 0x6420746F6B656E73 PUSH1 0xC0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x206 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xDA6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xDBE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xDC7 DUP4 PUSH2 0xD8F JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0xDEB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xE00 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xE0B DUP2 PUSH2 0xDD5 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xE24 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xE51 JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD DUP3 ADD MSTORE ADD PUSH2 0xE35 JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x20 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x20 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0xE0B PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0xE2B JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0xEC0 JUMPI PUSH2 0xEC0 PUSH2 0xE84 JUMP JUMPDEST PUSH1 0x40 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0xEE1 JUMPI PUSH2 0xEE1 PUSH2 0xE84 JUMP JUMPDEST POP PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xEFC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x20 PUSH2 0xF09 DUP3 PUSH2 0xEC7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xF16 DUP3 DUP3 PUSH2 0xE9A JUMP JUMPDEST DUP4 DUP2 MSTORE PUSH1 0x5 SWAP4 SWAP1 SWAP4 SHL DUP6 ADD DUP3 ADD SWAP3 DUP3 DUP2 ADD SWAP2 POP DUP7 DUP5 GT ISZERO PUSH2 0xF36 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 DUP7 ADD JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0xF51 JUMPI DUP1 CALLDATALOAD DUP4 MSTORE SWAP2 DUP4 ADD SWAP2 DUP4 ADD PUSH2 0xF3A JUMP JUMPDEST POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xF6D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xF87 JUMPI PUSH2 0xF87 PUSH2 0xE84 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xF9E PUSH1 0x1F DUP4 ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 PUSH2 0xE9A JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 PUSH1 0x20 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0xFB3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP6 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 SWAP2 DUP2 ADD PUSH1 0x20 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0xFE8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xFF1 DUP7 PUSH2 0xD8F JUMP JUMPDEST SWAP5 POP PUSH2 0xFFF PUSH1 0x20 DUP8 ADD PUSH2 0xD8F JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x101C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1028 DUP10 DUP4 DUP11 ADD PUSH2 0xEEB JUMP JUMPDEST SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x103E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x104A DUP10 DUP4 DUP11 ADD PUSH2 0xEEB JUMP JUMPDEST SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x1060 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x106D DUP9 DUP3 DUP10 ADD PUSH2 0xF5C JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x108D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x10A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x10B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x20 PUSH2 0x10C6 DUP3 PUSH2 0xEC7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x10D3 DUP3 DUP3 PUSH2 0xE9A JUMP JUMPDEST DUP4 DUP2 MSTORE PUSH1 0x5 SWAP4 SWAP1 SWAP4 SHL DUP6 ADD DUP3 ADD SWAP3 DUP3 DUP2 ADD SWAP2 POP DUP10 DUP5 GT ISZERO PUSH2 0x10F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP5 DUP3 ADD SWAP5 JUMPDEST DUP4 DUP7 LT ISZERO PUSH2 0x1118 JUMPI PUSH2 0x1109 DUP7 PUSH2 0xD8F JUMP JUMPDEST DUP3 MSTORE SWAP5 DUP3 ADD SWAP5 SWAP1 DUP3 ADD SWAP1 PUSH2 0x10F8 JUMP JUMPDEST SWAP7 POP POP DUP7 ADD CALLDATALOAD SWAP3 POP POP DUP1 DUP3 GT ISZERO PUSH2 0x112E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x113B DUP6 DUP3 DUP7 ADD PUSH2 0xEEB JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP1 DUP5 ADD PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1175 JUMPI DUP2 MLOAD DUP8 MSTORE SWAP6 DUP3 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x1159 JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0xE0B PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x1145 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x11A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x11AF DUP4 PUSH2 0xD8F JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x11C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x11E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x11EB DUP4 PUSH2 0xD8F JUMP JUMPDEST SWAP2 POP PUSH2 0x11F9 PUSH1 0x20 DUP5 ADD PUSH2 0xD8F JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x121A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1223 DUP7 PUSH2 0xD8F JUMP JUMPDEST SWAP5 POP PUSH2 0x1231 PUSH1 0x20 DUP8 ADD PUSH2 0xD8F JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD SWAP2 POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x125B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x106D DUP9 DUP3 DUP10 ADD PUSH2 0xF5C JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x127B JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x129B JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 ADD PUSH2 0x12DF JUMPI PUSH2 0x12DF PUSH2 0x12B7 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x232 JUMPI PUSH2 0x232 PUSH2 0x12B7 JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 PUSH2 0x130C PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x1145 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x131E DUP2 DUP6 PUSH2 0x1145 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND DUP4 MSTORE DUP1 DUP8 AND PUSH1 0x20 DUP5 ADD MSTORE POP PUSH1 0xA0 PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x1353 PUSH1 0xA0 DUP4 ADD DUP7 PUSH2 0x1145 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x60 DUP5 ADD MSTORE PUSH2 0x1365 DUP2 DUP7 PUSH2 0x1145 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 SUB PUSH1 0x80 DUP5 ADD MSTORE PUSH2 0x1379 DUP2 DUP6 PUSH2 0xE2B JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1397 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xE0B DUP2 PUSH2 0xDD5 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x3 RETURNDATASIZE GT ISZERO PUSH2 0x13BB JUMPI PUSH1 0x4 PUSH1 0x0 DUP1 RETURNDATACOPY POP PUSH1 0x0 MLOAD PUSH1 0xE0 SHR JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x44 RETURNDATASIZE LT ISZERO PUSH2 0x13CC JUMPI SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x3 NOT RETURNDATASIZE DUP2 ADD PUSH1 0x4 DUP4 RETURNDATACOPY DUP2 MLOAD RETURNDATASIZE PUSH8 0xFFFFFFFFFFFFFFFF DUP2 PUSH1 0x24 DUP5 ADD GT DUP2 DUP5 GT OR ISZERO PUSH2 0x13FC JUMPI POP POP POP POP POP SWAP1 JUMP JUMPDEST DUP3 DUP6 ADD SWAP2 POP DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x1414 JUMPI POP POP POP POP POP POP SWAP1 JUMP JUMPDEST DUP5 RETURNDATASIZE DUP8 ADD ADD PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x142E JUMPI POP POP POP POP POP POP SWAP1 JUMP JUMPDEST PUSH2 0x143D PUSH1 0x20 DUP3 DUP7 ADD ADD DUP8 PUSH2 0xE9A JUMP JUMPDEST POP SWAP1 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND DUP4 MSTORE DUP1 DUP8 AND PUSH1 0x20 DUP5 ADD MSTORE POP DUP5 PUSH1 0x40 DUP4 ADD MSTORE DUP4 PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0xA0 PUSH1 0x80 DUP4 ADD MSTORE PUSH2 0x1480 PUSH1 0xA0 DUP4 ADD DUP5 PUSH2 0xE2B JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"570:16539:22:-:0;;;1107:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1149:13;1157:4;1149:7;:13::i;:::-;1107:62;570:16539;;8149:86;8215:4;:13;8222:6;8215:4;:13;:::i;:::-;;8149:86;:::o;14:127:92:-;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:1042;226:6;257:2;300;288:9;279:7;275:23;271:32;268:52;;;316:1;313;306:12;268:52;343:16;;-1:-1:-1;;;;;408:14:92;;;405:34;;;435:1;432;425:12;405:34;473:6;462:9;458:22;448:32;;518:7;511:4;507:2;503:13;499:27;489:55;;540:1;537;530:12;489:55;569:2;563:9;591:2;587;584:10;581:36;;;597:18;;:::i;:::-;672:2;666:9;640:2;726:13;;-1:-1:-1;;722:22:92;;;746:2;718:31;714:40;702:53;;;770:18;;;790:22;;;767:46;764:72;;;816:18;;:::i;:::-;856:10;852:2;845:22;891:2;883:6;876:18;931:7;926:2;921;917;913:11;909:20;906:33;903:53;;;952:1;949;942:12;903:53;974:1;965:10;;984:129;998:2;995:1;992:9;984:129;;;1086:10;;;1082:19;;1076:26;1055:14;;;1051:23;;1044:59;1009:10;;;;984:129;;;1155:1;1150:2;1145;1137:6;1133:15;1129:24;1122:35;1176:6;1166:16;;;;;;;;146:1042;;;;:::o;1193:380::-;1272:1;1268:12;;;;1315;;;1336:61;;1390:4;1382:6;1378:17;1368:27;;1336:61;1443:2;1435:6;1432:14;1412:18;1409:38;1406:161;;1489:10;1484:3;1480:20;1477:1;1470:31;1524:4;1521:1;1514:15;1552:4;1549:1;1542:15;1406:161;;1193:380;;;:::o;1704:545::-;1806:2;1801:3;1798:11;1795:448;;;1842:1;1867:5;1863:2;1856:17;1912:4;1908:2;1898:19;1982:2;1970:10;1966:19;1963:1;1959:27;1953:4;1949:38;2018:4;2006:10;2003:20;2000:47;;;-1:-1:-1;2041:4:92;2000:47;2096:2;2091:3;2087:12;2084:1;2080:20;2074:4;2070:31;2060:41;;2151:82;2169:2;2162:5;2159:13;2151:82;;;2214:17;;;2195:1;2184:13;2151:82;;;2155:3;;;1795:448;1704:545;;;:::o;2425:1352::-;2545:10;;-1:-1:-1;;;;;2567:30:92;;2564:56;;;2600:18;;:::i;:::-;2629:97;2719:6;2679:38;2711:4;2705:11;2679:38;:::i;:::-;2673:4;2629:97;:::i;:::-;2781:4;;2845:2;2834:14;;2862:1;2857:663;;;;3564:1;3581:6;3578:89;;;-1:-1:-1;3633:19:92;;;3627:26;3578:89;-1:-1:-1;;2382:1:92;2378:11;;;2374:24;2370:29;2360:40;2406:1;2402:11;;;2357:57;3680:81;;2827:944;;2857:663;1651:1;1644:14;;;1688:4;1675:18;;-1:-1:-1;;2893:20:92;;;3011:236;3025:7;3022:1;3019:14;3011:236;;;3114:19;;;3108:26;3093:42;;3206:27;;;;3174:1;3162:14;;;;3041:19;;3011:236;;;3015:3;3275:6;3266:7;3263:19;3260:201;;;3336:19;;;3330:26;-1:-1:-1;;3419:1:92;3415:14;;;3431:3;3411:24;3407:37;3403:42;3388:58;3373:74;;3260:201;-1:-1:-1;;;;;3507:1:92;3491:14;;;3487:22;3474:36;;-1:-1:-1;2425:1352:92:o;:::-;570:16539:22;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_afterTokenTransfer_6821":{"entryPoint":null,"id":6821,"parameterSlots":6,"returnSlots":0},"@_asSingletonArray_6977":{"entryPoint":3144,"id":6977,"parameterSlots":1,"returnSlots":1},"@_beforeTokenTransfer_6802":{"entryPoint":null,"id":6802,"parameterSlots":6,"returnSlots":0},"@_doSafeBatchTransferAcceptanceCheck_6949":{"entryPoint":2714,"id":6949,"parameterSlots":6,"returnSlots":0},"@_doSafeTransferAcceptanceCheck_6884":{"entryPoint":3219,"id":6884,"parameterSlots":6,"returnSlots":0},"@_msgSender_9276":{"entryPoint":null,"id":9276,"parameterSlots":0,"returnSlots":1},"@_safeBatchTransferFrom_6300":{"entryPoint":1416,"id":6300,"parameterSlots":5,"returnSlots":0},"@_safeTransferFrom_6165":{"entryPoint":2287,"id":6165,"parameterSlots":5,"returnSlots":0},"@_setApprovalForAll_6783":{"entryPoint":2043,"id":6783,"parameterSlots":3,"returnSlots":0},"@balanceOfBatch_5935":{"entryPoint":943,"id":5935,"parameterSlots":2,"returnSlots":1},"@balanceOf_5871":{"entryPoint":396,"id":5871,"parameterSlots":2,"returnSlots":1},"@isApprovedForAll_5970":{"entryPoint":null,"id":5970,"parameterSlots":2,"returnSlots":1},"@isContract_8952":{"entryPoint":null,"id":8952,"parameterSlots":1,"returnSlots":1},"@safeBatchTransferFrom_6048":{"entryPoint":796,"id":6048,"parameterSlots":5,"returnSlots":0},"@safeTransferFrom_6008":{"entryPoint":1276,"id":6008,"parameterSlots":5,"returnSlots":0},"@setApprovalForAll_5952":{"entryPoint":1261,"id":5952,"parameterSlots":2,"returnSlots":0},"@supportsInterface_5831":{"entryPoint":568,"id":5831,"parameterSlots":1,"returnSlots":1},"@supportsInterface_9730":{"entryPoint":null,"id":9730,"parameterSlots":1,"returnSlots":1},"@uri_5843":{"entryPoint":648,"id":5843,"parameterSlots":1,"returnSlots":1},"abi_decode_address":{"entryPoint":3471,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_array_uint256_dyn":{"entryPoint":3819,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_bytes":{"entryPoint":3932,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_address":{"entryPoint":4559,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_addresst_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptrt_bytes_memory_ptr":{"entryPoint":4048,"id":null,"parameterSlots":2,"returnSlots":5},"abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_bytes_memory_ptr":{"entryPoint":4610,"id":null,"parameterSlots":2,"returnSlots":5},"abi_decode_tuple_t_addresst_bool":{"entryPoint":4499,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_uint256":{"entryPoint":3499,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_array$_t_address_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptr":{"entryPoint":4218,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_bytes4":{"entryPoint":3566,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes4_fromMemory":{"entryPoint":4997,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256":{"entryPoint":3602,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_array_uint256_dyn":{"entryPoint":4421,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_string":{"entryPoint":3627,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr_t_bytes_memory_ptr__to_t_address_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":4903,"id":null,"parameterSlots":6,"returnSlots":1},"abi_encode_tuple_t_address_t_address_t_uint256_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_uint256_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":5192,"id":null,"parameterSlots":6,"returnSlots":1},"abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed":{"entryPoint":4480,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed":{"entryPoint":4857,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":3697,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_0587cccad73a80a7f013db13c596f4febc1968dc77e1d3589d5e7a509a3d6503__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_415a1b99e1fd4a18cf87c08995f5a9130182e8d76e9c17c497bfebaaef9265ad__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_47c72b42072ed6c647dec3a0a5c88bec44d3e901c64659bff94ecce0a0323156__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_6faf1c67f278b07c6771dcf4c315a89c21c0eaed11d9ab3d51774da1cfef545d__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_8ac7e9556b567c1c94bb4daaa3c3a65be5ac686579615210cb910fb8cb8d65bf__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_df9806c6dc743de602e49918a67b580590d69ab768bdb59f977c0a884a91a7c2__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_e155f5d69798c6205436a388a4f3a5fd42f54147b40f4d63a2c8071ff8a9fee5__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_e909e0c9a8f96b4f9af03b716811ece20beb070be416893ed1d50619b5930807__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_f591f7b75ffc499e05f8b34c3364b2eceff651378d9549db1d5d67c0d8255c5d__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"array_allocation_size_array_uint256_dyn":{"entryPoint":3783,"id":null,"parameterSlots":1,"returnSlots":1},"checked_add_t_uint256":{"entryPoint":4838,"id":null,"parameterSlots":2,"returnSlots":1},"extract_byte_array_length":{"entryPoint":4711,"id":null,"parameterSlots":1,"returnSlots":1},"finalize_allocation":{"entryPoint":3738,"id":null,"parameterSlots":2,"returnSlots":0},"increment_t_uint256":{"entryPoint":4813,"id":null,"parameterSlots":1,"returnSlots":1},"panic_error_0x11":{"entryPoint":4791,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x32":{"entryPoint":4769,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":3716,"id":null,"parameterSlots":0,"returnSlots":0},"return_data_selector":{"entryPoint":5026,"id":null,"parameterSlots":0,"returnSlots":1},"try_decode_error_message":{"entryPoint":5054,"id":null,"parameterSlots":0,"returnSlots":1},"validator_revert_bytes4":{"entryPoint":3541,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:15929:92","statements":[{"nodeType":"YulBlock","src":"6:3:92","statements":[]},{"body":{"nodeType":"YulBlock","src":"63:147:92","statements":[{"nodeType":"YulAssignment","src":"73:29:92","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"95:6:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"82:12:92"},"nodeType":"YulFunctionCall","src":"82:20:92"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"73:5:92"}]},{"body":{"nodeType":"YulBlock","src":"188:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"197:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"200:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"190:6:92"},"nodeType":"YulFunctionCall","src":"190:12:92"},"nodeType":"YulExpressionStatement","src":"190:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"124:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"135:5:92"},{"kind":"number","nodeType":"YulLiteral","src":"142:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"131:3:92"},"nodeType":"YulFunctionCall","src":"131:54:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"121:2:92"},"nodeType":"YulFunctionCall","src":"121:65:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"114:6:92"},"nodeType":"YulFunctionCall","src":"114:73:92"},"nodeType":"YulIf","src":"111:93:92"}]},"name":"abi_decode_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"42:6:92","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"53:5:92","type":""}],"src":"14:196:92"},{"body":{"nodeType":"YulBlock","src":"302:167:92","statements":[{"body":{"nodeType":"YulBlock","src":"348:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"357:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"360:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"350:6:92"},"nodeType":"YulFunctionCall","src":"350:12:92"},"nodeType":"YulExpressionStatement","src":"350:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"323:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"332:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"319:3:92"},"nodeType":"YulFunctionCall","src":"319:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"344:2:92","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"315:3:92"},"nodeType":"YulFunctionCall","src":"315:32:92"},"nodeType":"YulIf","src":"312:52:92"},{"nodeType":"YulAssignment","src":"373:39:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"402:9:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"383:18:92"},"nodeType":"YulFunctionCall","src":"383:29:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"373:6:92"}]},{"nodeType":"YulAssignment","src":"421:42:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"448:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"459:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"444:3:92"},"nodeType":"YulFunctionCall","src":"444:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"431:12:92"},"nodeType":"YulFunctionCall","src":"431:32:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"421:6:92"}]}]},"name":"abi_decode_tuple_t_addresst_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"260:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"271:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"283:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"291:6:92","type":""}],"src":"215:254:92"},{"body":{"nodeType":"YulBlock","src":"575:76:92","statements":[{"nodeType":"YulAssignment","src":"585:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"597:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"608:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"593:3:92"},"nodeType":"YulFunctionCall","src":"593:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"585:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"627:9:92"},{"name":"value0","nodeType":"YulIdentifier","src":"638:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"620:6:92"},"nodeType":"YulFunctionCall","src":"620:25:92"},"nodeType":"YulExpressionStatement","src":"620:25:92"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"544:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"555:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"566:4:92","type":""}],"src":"474:177:92"},{"body":{"nodeType":"YulBlock","src":"700:87:92","statements":[{"body":{"nodeType":"YulBlock","src":"765:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"774:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"777:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"767:6:92"},"nodeType":"YulFunctionCall","src":"767:12:92"},"nodeType":"YulExpressionStatement","src":"767:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"723:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"734:5:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"745:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"750:10:92","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"741:3:92"},"nodeType":"YulFunctionCall","src":"741:20:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"730:3:92"},"nodeType":"YulFunctionCall","src":"730:32:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"720:2:92"},"nodeType":"YulFunctionCall","src":"720:43:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"713:6:92"},"nodeType":"YulFunctionCall","src":"713:51:92"},"nodeType":"YulIf","src":"710:71:92"}]},"name":"validator_revert_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"689:5:92","type":""}],"src":"656:131:92"},{"body":{"nodeType":"YulBlock","src":"861:176:92","statements":[{"body":{"nodeType":"YulBlock","src":"907:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"916:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"919:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"909:6:92"},"nodeType":"YulFunctionCall","src":"909:12:92"},"nodeType":"YulExpressionStatement","src":"909:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"882:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"891:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"878:3:92"},"nodeType":"YulFunctionCall","src":"878:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"903:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"874:3:92"},"nodeType":"YulFunctionCall","src":"874:32:92"},"nodeType":"YulIf","src":"871:52:92"},{"nodeType":"YulVariableDeclaration","src":"932:36:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"958:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"945:12:92"},"nodeType":"YulFunctionCall","src":"945:23:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"936:5:92","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1001:5:92"}],"functionName":{"name":"validator_revert_bytes4","nodeType":"YulIdentifier","src":"977:23:92"},"nodeType":"YulFunctionCall","src":"977:30:92"},"nodeType":"YulExpressionStatement","src":"977:30:92"},{"nodeType":"YulAssignment","src":"1016:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"1026:5:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1016:6:92"}]}]},"name":"abi_decode_tuple_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"827:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"838:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"850:6:92","type":""}],"src":"792:245:92"},{"body":{"nodeType":"YulBlock","src":"1137:92:92","statements":[{"nodeType":"YulAssignment","src":"1147:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1159:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1170:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1155:3:92"},"nodeType":"YulFunctionCall","src":"1155:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1147:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1189:9:92"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1214:6:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1207:6:92"},"nodeType":"YulFunctionCall","src":"1207:14:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1200:6:92"},"nodeType":"YulFunctionCall","src":"1200:22:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1182:6:92"},"nodeType":"YulFunctionCall","src":"1182:41:92"},"nodeType":"YulExpressionStatement","src":"1182:41:92"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1106:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1117:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1128:4:92","type":""}],"src":"1042:187:92"},{"body":{"nodeType":"YulBlock","src":"1304:110:92","statements":[{"body":{"nodeType":"YulBlock","src":"1350:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1359:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1362:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1352:6:92"},"nodeType":"YulFunctionCall","src":"1352:12:92"},"nodeType":"YulExpressionStatement","src":"1352:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1325:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"1334:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1321:3:92"},"nodeType":"YulFunctionCall","src":"1321:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"1346:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1317:3:92"},"nodeType":"YulFunctionCall","src":"1317:32:92"},"nodeType":"YulIf","src":"1314:52:92"},{"nodeType":"YulAssignment","src":"1375:33:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1398:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1385:12:92"},"nodeType":"YulFunctionCall","src":"1385:23:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1375:6:92"}]}]},"name":"abi_decode_tuple_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1270:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1281:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1293:6:92","type":""}],"src":"1234:180:92"},{"body":{"nodeType":"YulBlock","src":"1469:373:92","statements":[{"nodeType":"YulVariableDeclaration","src":"1479:26:92","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1499:5:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1493:5:92"},"nodeType":"YulFunctionCall","src":"1493:12:92"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"1483:6:92","type":""}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1521:3:92"},{"name":"length","nodeType":"YulIdentifier","src":"1526:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1514:6:92"},"nodeType":"YulFunctionCall","src":"1514:19:92"},"nodeType":"YulExpressionStatement","src":"1514:19:92"},{"nodeType":"YulVariableDeclaration","src":"1542:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"1551:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"1546:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"1613:110:92","statements":[{"nodeType":"YulVariableDeclaration","src":"1627:14:92","value":{"kind":"number","nodeType":"YulLiteral","src":"1637:4:92","type":"","value":"0x20"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"1631:2:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1669:3:92"},{"name":"i","nodeType":"YulIdentifier","src":"1674:1:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1665:3:92"},"nodeType":"YulFunctionCall","src":"1665:11:92"},{"name":"_1","nodeType":"YulIdentifier","src":"1678:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1661:3:92"},"nodeType":"YulFunctionCall","src":"1661:20:92"},{"arguments":[{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1697:5:92"},{"name":"i","nodeType":"YulIdentifier","src":"1704:1:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1693:3:92"},"nodeType":"YulFunctionCall","src":"1693:13:92"},{"name":"_1","nodeType":"YulIdentifier","src":"1708:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1689:3:92"},"nodeType":"YulFunctionCall","src":"1689:22:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1683:5:92"},"nodeType":"YulFunctionCall","src":"1683:29:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1654:6:92"},"nodeType":"YulFunctionCall","src":"1654:59:92"},"nodeType":"YulExpressionStatement","src":"1654:59:92"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"1572:1:92"},{"name":"length","nodeType":"YulIdentifier","src":"1575:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"1569:2:92"},"nodeType":"YulFunctionCall","src":"1569:13:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"1583:21:92","statements":[{"nodeType":"YulAssignment","src":"1585:17:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"1594:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"1597:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1590:3:92"},"nodeType":"YulFunctionCall","src":"1590:12:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"1585:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"1565:3:92","statements":[]},"src":"1561:162:92"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1747:3:92"},{"name":"length","nodeType":"YulIdentifier","src":"1752:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1743:3:92"},"nodeType":"YulFunctionCall","src":"1743:16:92"},{"kind":"number","nodeType":"YulLiteral","src":"1761:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1739:3:92"},"nodeType":"YulFunctionCall","src":"1739:27:92"},{"kind":"number","nodeType":"YulLiteral","src":"1768:1:92","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1732:6:92"},"nodeType":"YulFunctionCall","src":"1732:38:92"},"nodeType":"YulExpressionStatement","src":"1732:38:92"},{"nodeType":"YulAssignment","src":"1779:57:92","value":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1794:3:92"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"1807:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"1815:2:92","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1803:3:92"},"nodeType":"YulFunctionCall","src":"1803:15:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1824:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"1820:3:92"},"nodeType":"YulFunctionCall","src":"1820:7:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1799:3:92"},"nodeType":"YulFunctionCall","src":"1799:29:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1790:3:92"},"nodeType":"YulFunctionCall","src":"1790:39:92"},{"kind":"number","nodeType":"YulLiteral","src":"1831:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1786:3:92"},"nodeType":"YulFunctionCall","src":"1786:50:92"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1779:3:92"}]}]},"name":"abi_encode_string","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1446:5:92","type":""},{"name":"pos","nodeType":"YulTypedName","src":"1453:3:92","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1461:3:92","type":""}],"src":"1419:423:92"},{"body":{"nodeType":"YulBlock","src":"1968:99:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1985:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1996:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1978:6:92"},"nodeType":"YulFunctionCall","src":"1978:21:92"},"nodeType":"YulExpressionStatement","src":"1978:21:92"},{"nodeType":"YulAssignment","src":"2008:53:92","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2034:6:92"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2046:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2057:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2042:3:92"},"nodeType":"YulFunctionCall","src":"2042:18:92"}],"functionName":{"name":"abi_encode_string","nodeType":"YulIdentifier","src":"2016:17:92"},"nodeType":"YulFunctionCall","src":"2016:45:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2008:4:92"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1937:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1948:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1959:4:92","type":""}],"src":"1847:220:92"},{"body":{"nodeType":"YulBlock","src":"2104:95:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2121:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2128:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"2133:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2124:3:92"},"nodeType":"YulFunctionCall","src":"2124:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2114:6:92"},"nodeType":"YulFunctionCall","src":"2114:31:92"},"nodeType":"YulExpressionStatement","src":"2114:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2161:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"2164:4:92","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2154:6:92"},"nodeType":"YulFunctionCall","src":"2154:15:92"},"nodeType":"YulExpressionStatement","src":"2154:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2185:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2188:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2178:6:92"},"nodeType":"YulFunctionCall","src":"2178:15:92"},"nodeType":"YulExpressionStatement","src":"2178:15:92"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"2072:127:92"},{"body":{"nodeType":"YulBlock","src":"2251:202:92","statements":[{"nodeType":"YulVariableDeclaration","src":"2261:58:92","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"2283:6:92"},{"arguments":[{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"2299:4:92"},{"kind":"number","nodeType":"YulLiteral","src":"2305:2:92","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2295:3:92"},"nodeType":"YulFunctionCall","src":"2295:13:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2314:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"2310:3:92"},"nodeType":"YulFunctionCall","src":"2310:7:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2291:3:92"},"nodeType":"YulFunctionCall","src":"2291:27:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2279:3:92"},"nodeType":"YulFunctionCall","src":"2279:40:92"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"2265:10:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"2394:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"2396:16:92"},"nodeType":"YulFunctionCall","src":"2396:18:92"},"nodeType":"YulExpressionStatement","src":"2396:18:92"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"2337:10:92"},{"kind":"number","nodeType":"YulLiteral","src":"2349:18:92","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2334:2:92"},"nodeType":"YulFunctionCall","src":"2334:34:92"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"2373:10:92"},{"name":"memPtr","nodeType":"YulIdentifier","src":"2385:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2370:2:92"},"nodeType":"YulFunctionCall","src":"2370:22:92"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"2331:2:92"},"nodeType":"YulFunctionCall","src":"2331:62:92"},"nodeType":"YulIf","src":"2328:88:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2432:2:92","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"2436:10:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2425:6:92"},"nodeType":"YulFunctionCall","src":"2425:22:92"},"nodeType":"YulExpressionStatement","src":"2425:22:92"}]},"name":"finalize_allocation","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"2233:6:92","type":""},{"name":"size","nodeType":"YulTypedName","src":"2241:4:92","type":""}],"src":"2204:249:92"},{"body":{"nodeType":"YulBlock","src":"2527:114:92","statements":[{"body":{"nodeType":"YulBlock","src":"2571:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"2573:16:92"},"nodeType":"YulFunctionCall","src":"2573:18:92"},"nodeType":"YulExpressionStatement","src":"2573:18:92"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"2543:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"2551:18:92","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2540:2:92"},"nodeType":"YulFunctionCall","src":"2540:30:92"},"nodeType":"YulIf","src":"2537:56:92"},{"nodeType":"YulAssignment","src":"2602:33:92","value":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2618:1:92","type":"","value":"5"},{"name":"length","nodeType":"YulIdentifier","src":"2621:6:92"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2614:3:92"},"nodeType":"YulFunctionCall","src":"2614:14:92"},{"kind":"number","nodeType":"YulLiteral","src":"2630:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2610:3:92"},"nodeType":"YulFunctionCall","src":"2610:25:92"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"2602:4:92"}]}]},"name":"array_allocation_size_array_uint256_dyn","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nodeType":"YulTypedName","src":"2507:6:92","type":""}],"returnVariables":[{"name":"size","nodeType":"YulTypedName","src":"2518:4:92","type":""}],"src":"2458:183:92"},{"body":{"nodeType":"YulBlock","src":"2710:660:92","statements":[{"body":{"nodeType":"YulBlock","src":"2759:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2768:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2771:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2761:6:92"},"nodeType":"YulFunctionCall","src":"2761:12:92"},"nodeType":"YulExpressionStatement","src":"2761:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"2738:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"2746:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2734:3:92"},"nodeType":"YulFunctionCall","src":"2734:17:92"},{"name":"end","nodeType":"YulIdentifier","src":"2753:3:92"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2730:3:92"},"nodeType":"YulFunctionCall","src":"2730:27:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2723:6:92"},"nodeType":"YulFunctionCall","src":"2723:35:92"},"nodeType":"YulIf","src":"2720:55:92"},{"nodeType":"YulVariableDeclaration","src":"2784:30:92","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"2807:6:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2794:12:92"},"nodeType":"YulFunctionCall","src":"2794:20:92"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"2788:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2823:14:92","value":{"kind":"number","nodeType":"YulLiteral","src":"2833:4:92","type":"","value":"0x20"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"2827:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2846:53:92","value":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"2896:2:92"}],"functionName":{"name":"array_allocation_size_array_uint256_dyn","nodeType":"YulIdentifier","src":"2856:39:92"},"nodeType":"YulFunctionCall","src":"2856:43:92"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"2850:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2908:23:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2928:2:92","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2922:5:92"},"nodeType":"YulFunctionCall","src":"2922:9:92"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"2912:6:92","type":""}]},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"2960:6:92"},{"name":"_3","nodeType":"YulIdentifier","src":"2968:2:92"}],"functionName":{"name":"finalize_allocation","nodeType":"YulIdentifier","src":"2940:19:92"},"nodeType":"YulFunctionCall","src":"2940:31:92"},"nodeType":"YulExpressionStatement","src":"2940:31:92"},{"nodeType":"YulVariableDeclaration","src":"2980:17:92","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"2991:6:92"},"variables":[{"name":"dst","nodeType":"YulTypedName","src":"2984:3:92","type":""}]},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"3013:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"3021:2:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3006:6:92"},"nodeType":"YulFunctionCall","src":"3006:18:92"},"nodeType":"YulExpressionStatement","src":"3006:18:92"},{"nodeType":"YulAssignment","src":"3033:22:92","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"3044:6:92"},{"name":"_2","nodeType":"YulIdentifier","src":"3052:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3040:3:92"},"nodeType":"YulFunctionCall","src":"3040:15:92"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"3033:3:92"}]},{"nodeType":"YulVariableDeclaration","src":"3064:46:92","value":{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"3086:6:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3098:1:92","type":"","value":"5"},{"name":"_1","nodeType":"YulIdentifier","src":"3101:2:92"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"3094:3:92"},"nodeType":"YulFunctionCall","src":"3094:10:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3082:3:92"},"nodeType":"YulFunctionCall","src":"3082:23:92"},{"name":"_2","nodeType":"YulIdentifier","src":"3107:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3078:3:92"},"nodeType":"YulFunctionCall","src":"3078:32:92"},"variables":[{"name":"srcEnd","nodeType":"YulTypedName","src":"3068:6:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"3138:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3147:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3150:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3140:6:92"},"nodeType":"YulFunctionCall","src":"3140:12:92"},"nodeType":"YulExpressionStatement","src":"3140:12:92"}]},"condition":{"arguments":[{"name":"srcEnd","nodeType":"YulIdentifier","src":"3125:6:92"},{"name":"end","nodeType":"YulIdentifier","src":"3133:3:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3122:2:92"},"nodeType":"YulFunctionCall","src":"3122:15:92"},"nodeType":"YulIf","src":"3119:35:92"},{"nodeType":"YulVariableDeclaration","src":"3163:26:92","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"3178:6:92"},{"name":"_2","nodeType":"YulIdentifier","src":"3186:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3174:3:92"},"nodeType":"YulFunctionCall","src":"3174:15:92"},"variables":[{"name":"src","nodeType":"YulTypedName","src":"3167:3:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"3254:86:92","statements":[{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"3275:3:92"},{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"3293:3:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3280:12:92"},"nodeType":"YulFunctionCall","src":"3280:17:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3268:6:92"},"nodeType":"YulFunctionCall","src":"3268:30:92"},"nodeType":"YulExpressionStatement","src":"3268:30:92"},{"nodeType":"YulAssignment","src":"3311:19:92","value":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"3322:3:92"},{"name":"_2","nodeType":"YulIdentifier","src":"3327:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3318:3:92"},"nodeType":"YulFunctionCall","src":"3318:12:92"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"3311:3:92"}]}]},"condition":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"3209:3:92"},{"name":"srcEnd","nodeType":"YulIdentifier","src":"3214:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"3206:2:92"},"nodeType":"YulFunctionCall","src":"3206:15:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"3222:23:92","statements":[{"nodeType":"YulAssignment","src":"3224:19:92","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"3235:3:92"},{"name":"_2","nodeType":"YulIdentifier","src":"3240:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3231:3:92"},"nodeType":"YulFunctionCall","src":"3231:12:92"},"variableNames":[{"name":"src","nodeType":"YulIdentifier","src":"3224:3:92"}]}]},"pre":{"nodeType":"YulBlock","src":"3202:3:92","statements":[]},"src":"3198:142:92"},{"nodeType":"YulAssignment","src":"3349:15:92","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"3358:6:92"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"3349:5:92"}]}]},"name":"abi_decode_array_uint256_dyn","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"2684:6:92","type":""},{"name":"end","nodeType":"YulTypedName","src":"2692:3:92","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"2700:5:92","type":""}],"src":"2646:724:92"},{"body":{"nodeType":"YulBlock","src":"3427:503:92","statements":[{"body":{"nodeType":"YulBlock","src":"3476:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3485:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3488:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3478:6:92"},"nodeType":"YulFunctionCall","src":"3478:12:92"},"nodeType":"YulExpressionStatement","src":"3478:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"3455:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"3463:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3451:3:92"},"nodeType":"YulFunctionCall","src":"3451:17:92"},{"name":"end","nodeType":"YulIdentifier","src":"3470:3:92"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3447:3:92"},"nodeType":"YulFunctionCall","src":"3447:27:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3440:6:92"},"nodeType":"YulFunctionCall","src":"3440:35:92"},"nodeType":"YulIf","src":"3437:55:92"},{"nodeType":"YulVariableDeclaration","src":"3501:30:92","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"3524:6:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3511:12:92"},"nodeType":"YulFunctionCall","src":"3511:20:92"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"3505:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"3570:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"3572:16:92"},"nodeType":"YulFunctionCall","src":"3572:18:92"},"nodeType":"YulExpressionStatement","src":"3572:18:92"}]},"condition":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"3546:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"3550:18:92","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3543:2:92"},"nodeType":"YulFunctionCall","src":"3543:26:92"},"nodeType":"YulIf","src":"3540:52:92"},{"nodeType":"YulVariableDeclaration","src":"3601:23:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3621:2:92","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3615:5:92"},"nodeType":"YulFunctionCall","src":"3615:9:92"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"3605:6:92","type":""}]},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"3653:6:92"},{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"3673:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"3677:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3669:3:92"},"nodeType":"YulFunctionCall","src":"3669:13:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3688:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"3684:3:92"},"nodeType":"YulFunctionCall","src":"3684:7:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3665:3:92"},"nodeType":"YulFunctionCall","src":"3665:27:92"},{"kind":"number","nodeType":"YulLiteral","src":"3694:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3661:3:92"},"nodeType":"YulFunctionCall","src":"3661:38:92"}],"functionName":{"name":"finalize_allocation","nodeType":"YulIdentifier","src":"3633:19:92"},"nodeType":"YulFunctionCall","src":"3633:67:92"},"nodeType":"YulExpressionStatement","src":"3633:67:92"},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"3716:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"3724:2:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3709:6:92"},"nodeType":"YulFunctionCall","src":"3709:18:92"},"nodeType":"YulExpressionStatement","src":"3709:18:92"},{"body":{"nodeType":"YulBlock","src":"3775:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3784:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3787:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3777:6:92"},"nodeType":"YulFunctionCall","src":"3777:12:92"},"nodeType":"YulExpressionStatement","src":"3777:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"3750:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"3758:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3746:3:92"},"nodeType":"YulFunctionCall","src":"3746:15:92"},{"kind":"number","nodeType":"YulLiteral","src":"3763:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3742:3:92"},"nodeType":"YulFunctionCall","src":"3742:26:92"},{"name":"end","nodeType":"YulIdentifier","src":"3770:3:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3739:2:92"},"nodeType":"YulFunctionCall","src":"3739:35:92"},"nodeType":"YulIf","src":"3736:55:92"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"3817:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"3825:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3813:3:92"},"nodeType":"YulFunctionCall","src":"3813:17:92"},{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"3836:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"3844:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3832:3:92"},"nodeType":"YulFunctionCall","src":"3832:17:92"},{"name":"_1","nodeType":"YulIdentifier","src":"3851:2:92"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"3800:12:92"},"nodeType":"YulFunctionCall","src":"3800:54:92"},"nodeType":"YulExpressionStatement","src":"3800:54:92"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"3878:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"3886:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3874:3:92"},"nodeType":"YulFunctionCall","src":"3874:15:92"},{"kind":"number","nodeType":"YulLiteral","src":"3891:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3870:3:92"},"nodeType":"YulFunctionCall","src":"3870:26:92"},{"kind":"number","nodeType":"YulLiteral","src":"3898:1:92","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3863:6:92"},"nodeType":"YulFunctionCall","src":"3863:37:92"},"nodeType":"YulExpressionStatement","src":"3863:37:92"},{"nodeType":"YulAssignment","src":"3909:15:92","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"3918:6:92"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"3909:5:92"}]}]},"name":"abi_decode_bytes","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"3401:6:92","type":""},{"name":"end","nodeType":"YulTypedName","src":"3409:3:92","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"3417:5:92","type":""}],"src":"3375:555:92"},{"body":{"nodeType":"YulBlock","src":"4132:746:92","statements":[{"body":{"nodeType":"YulBlock","src":"4179:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4188:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4191:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4181:6:92"},"nodeType":"YulFunctionCall","src":"4181:12:92"},"nodeType":"YulExpressionStatement","src":"4181:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"4153:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"4162:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4149:3:92"},"nodeType":"YulFunctionCall","src":"4149:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"4174:3:92","type":"","value":"160"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4145:3:92"},"nodeType":"YulFunctionCall","src":"4145:33:92"},"nodeType":"YulIf","src":"4142:53:92"},{"nodeType":"YulAssignment","src":"4204:39:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4233:9:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"4214:18:92"},"nodeType":"YulFunctionCall","src":"4214:29:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"4204:6:92"}]},{"nodeType":"YulAssignment","src":"4252:48:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4285:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4296:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4281:3:92"},"nodeType":"YulFunctionCall","src":"4281:18:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"4262:18:92"},"nodeType":"YulFunctionCall","src":"4262:38:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"4252:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"4309:46:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4340:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4351:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4336:3:92"},"nodeType":"YulFunctionCall","src":"4336:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4323:12:92"},"nodeType":"YulFunctionCall","src":"4323:32:92"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4313:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4364:28:92","value":{"kind":"number","nodeType":"YulLiteral","src":"4374:18:92","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"4368:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"4419:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4428:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4431:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4421:6:92"},"nodeType":"YulFunctionCall","src":"4421:12:92"},"nodeType":"YulExpressionStatement","src":"4421:12:92"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"4407:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"4415:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4404:2:92"},"nodeType":"YulFunctionCall","src":"4404:14:92"},"nodeType":"YulIf","src":"4401:34:92"},{"nodeType":"YulAssignment","src":"4444:71:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4487:9:92"},{"name":"offset","nodeType":"YulIdentifier","src":"4498:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4483:3:92"},"nodeType":"YulFunctionCall","src":"4483:22:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4507:7:92"}],"functionName":{"name":"abi_decode_array_uint256_dyn","nodeType":"YulIdentifier","src":"4454:28:92"},"nodeType":"YulFunctionCall","src":"4454:61:92"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"4444:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"4524:48:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4557:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4568:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4553:3:92"},"nodeType":"YulFunctionCall","src":"4553:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4540:12:92"},"nodeType":"YulFunctionCall","src":"4540:32:92"},"variables":[{"name":"offset_1","nodeType":"YulTypedName","src":"4528:8:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"4601:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4610:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4613:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4603:6:92"},"nodeType":"YulFunctionCall","src":"4603:12:92"},"nodeType":"YulExpressionStatement","src":"4603:12:92"}]},"condition":{"arguments":[{"name":"offset_1","nodeType":"YulIdentifier","src":"4587:8:92"},{"name":"_1","nodeType":"YulIdentifier","src":"4597:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4584:2:92"},"nodeType":"YulFunctionCall","src":"4584:16:92"},"nodeType":"YulIf","src":"4581:36:92"},{"nodeType":"YulAssignment","src":"4626:73:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4669:9:92"},{"name":"offset_1","nodeType":"YulIdentifier","src":"4680:8:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4665:3:92"},"nodeType":"YulFunctionCall","src":"4665:24:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4691:7:92"}],"functionName":{"name":"abi_decode_array_uint256_dyn","nodeType":"YulIdentifier","src":"4636:28:92"},"nodeType":"YulFunctionCall","src":"4636:63:92"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"4626:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"4708:49:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4741:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4752:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4737:3:92"},"nodeType":"YulFunctionCall","src":"4737:19:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4724:12:92"},"nodeType":"YulFunctionCall","src":"4724:33:92"},"variables":[{"name":"offset_2","nodeType":"YulTypedName","src":"4712:8:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"4786:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4795:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4798:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4788:6:92"},"nodeType":"YulFunctionCall","src":"4788:12:92"},"nodeType":"YulExpressionStatement","src":"4788:12:92"}]},"condition":{"arguments":[{"name":"offset_2","nodeType":"YulIdentifier","src":"4772:8:92"},{"name":"_1","nodeType":"YulIdentifier","src":"4782:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4769:2:92"},"nodeType":"YulFunctionCall","src":"4769:16:92"},"nodeType":"YulIf","src":"4766:36:92"},{"nodeType":"YulAssignment","src":"4811:61:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4842:9:92"},{"name":"offset_2","nodeType":"YulIdentifier","src":"4853:8:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4838:3:92"},"nodeType":"YulFunctionCall","src":"4838:24:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4864:7:92"}],"functionName":{"name":"abi_decode_bytes","nodeType":"YulIdentifier","src":"4821:16:92"},"nodeType":"YulFunctionCall","src":"4821:51:92"},"variableNames":[{"name":"value4","nodeType":"YulIdentifier","src":"4811:6:92"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptrt_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4066:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"4077:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"4089:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"4097:6:92","type":""},{"name":"value2","nodeType":"YulTypedName","src":"4105:6:92","type":""},{"name":"value3","nodeType":"YulTypedName","src":"4113:6:92","type":""},{"name":"value4","nodeType":"YulTypedName","src":"4121:6:92","type":""}],"src":"3935:943:92"},{"body":{"nodeType":"YulBlock","src":"5020:1071:92","statements":[{"body":{"nodeType":"YulBlock","src":"5066:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5075:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5078:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5068:6:92"},"nodeType":"YulFunctionCall","src":"5068:12:92"},"nodeType":"YulExpressionStatement","src":"5068:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"5041:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"5050:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5037:3:92"},"nodeType":"YulFunctionCall","src":"5037:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"5062:2:92","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"5033:3:92"},"nodeType":"YulFunctionCall","src":"5033:32:92"},"nodeType":"YulIf","src":"5030:52:92"},{"nodeType":"YulVariableDeclaration","src":"5091:37:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5118:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"5105:12:92"},"nodeType":"YulFunctionCall","src":"5105:23:92"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"5095:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5137:28:92","value":{"kind":"number","nodeType":"YulLiteral","src":"5147:18:92","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"5141:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"5192:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5201:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5204:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5194:6:92"},"nodeType":"YulFunctionCall","src":"5194:12:92"},"nodeType":"YulExpressionStatement","src":"5194:12:92"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"5180:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"5188:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5177:2:92"},"nodeType":"YulFunctionCall","src":"5177:14:92"},"nodeType":"YulIf","src":"5174:34:92"},{"nodeType":"YulVariableDeclaration","src":"5217:32:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5231:9:92"},{"name":"offset","nodeType":"YulIdentifier","src":"5242:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5227:3:92"},"nodeType":"YulFunctionCall","src":"5227:22:92"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"5221:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"5297:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5306:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5309:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5299:6:92"},"nodeType":"YulFunctionCall","src":"5299:12:92"},"nodeType":"YulExpressionStatement","src":"5299:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"5276:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"5280:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5272:3:92"},"nodeType":"YulFunctionCall","src":"5272:13:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"5287:7:92"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"5268:3:92"},"nodeType":"YulFunctionCall","src":"5268:27:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"5261:6:92"},"nodeType":"YulFunctionCall","src":"5261:35:92"},"nodeType":"YulIf","src":"5258:55:92"},{"nodeType":"YulVariableDeclaration","src":"5322:26:92","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"5345:2:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"5332:12:92"},"nodeType":"YulFunctionCall","src":"5332:16:92"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"5326:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5357:14:92","value":{"kind":"number","nodeType":"YulLiteral","src":"5367:4:92","type":"","value":"0x20"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"5361:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5380:53:92","value":{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"5430:2:92"}],"functionName":{"name":"array_allocation_size_array_uint256_dyn","nodeType":"YulIdentifier","src":"5390:39:92"},"nodeType":"YulFunctionCall","src":"5390:43:92"},"variables":[{"name":"_5","nodeType":"YulTypedName","src":"5384:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5442:23:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5462:2:92","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5456:5:92"},"nodeType":"YulFunctionCall","src":"5456:9:92"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"5446:6:92","type":""}]},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"5494:6:92"},{"name":"_5","nodeType":"YulIdentifier","src":"5502:2:92"}],"functionName":{"name":"finalize_allocation","nodeType":"YulIdentifier","src":"5474:19:92"},"nodeType":"YulFunctionCall","src":"5474:31:92"},"nodeType":"YulExpressionStatement","src":"5474:31:92"},{"nodeType":"YulVariableDeclaration","src":"5514:17:92","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"5525:6:92"},"variables":[{"name":"dst","nodeType":"YulTypedName","src":"5518:3:92","type":""}]},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"5547:6:92"},{"name":"_3","nodeType":"YulIdentifier","src":"5555:2:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5540:6:92"},"nodeType":"YulFunctionCall","src":"5540:18:92"},"nodeType":"YulExpressionStatement","src":"5540:18:92"},{"nodeType":"YulAssignment","src":"5567:22:92","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"5578:6:92"},{"name":"_4","nodeType":"YulIdentifier","src":"5586:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5574:3:92"},"nodeType":"YulFunctionCall","src":"5574:15:92"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"5567:3:92"}]},{"nodeType":"YulVariableDeclaration","src":"5598:42:92","value":{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"5620:2:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5628:1:92","type":"","value":"5"},{"name":"_3","nodeType":"YulIdentifier","src":"5631:2:92"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"5624:3:92"},"nodeType":"YulFunctionCall","src":"5624:10:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5616:3:92"},"nodeType":"YulFunctionCall","src":"5616:19:92"},{"name":"_4","nodeType":"YulIdentifier","src":"5637:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5612:3:92"},"nodeType":"YulFunctionCall","src":"5612:28:92"},"variables":[{"name":"srcEnd","nodeType":"YulTypedName","src":"5602:6:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"5672:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5681:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5684:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5674:6:92"},"nodeType":"YulFunctionCall","src":"5674:12:92"},"nodeType":"YulExpressionStatement","src":"5674:12:92"}]},"condition":{"arguments":[{"name":"srcEnd","nodeType":"YulIdentifier","src":"5655:6:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"5663:7:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5652:2:92"},"nodeType":"YulFunctionCall","src":"5652:19:92"},"nodeType":"YulIf","src":"5649:39:92"},{"nodeType":"YulVariableDeclaration","src":"5697:22:92","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"5712:2:92"},{"name":"_4","nodeType":"YulIdentifier","src":"5716:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5708:3:92"},"nodeType":"YulFunctionCall","src":"5708:11:92"},"variables":[{"name":"src","nodeType":"YulTypedName","src":"5701:3:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"5784:92:92","statements":[{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"5805:3:92"},{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"5829:3:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"5810:18:92"},"nodeType":"YulFunctionCall","src":"5810:23:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5798:6:92"},"nodeType":"YulFunctionCall","src":"5798:36:92"},"nodeType":"YulExpressionStatement","src":"5798:36:92"},{"nodeType":"YulAssignment","src":"5847:19:92","value":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"5858:3:92"},{"name":"_4","nodeType":"YulIdentifier","src":"5863:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5854:3:92"},"nodeType":"YulFunctionCall","src":"5854:12:92"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"5847:3:92"}]}]},"condition":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"5739:3:92"},{"name":"srcEnd","nodeType":"YulIdentifier","src":"5744:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"5736:2:92"},"nodeType":"YulFunctionCall","src":"5736:15:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"5752:23:92","statements":[{"nodeType":"YulAssignment","src":"5754:19:92","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"5765:3:92"},{"name":"_4","nodeType":"YulIdentifier","src":"5770:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5761:3:92"},"nodeType":"YulFunctionCall","src":"5761:12:92"},"variableNames":[{"name":"src","nodeType":"YulIdentifier","src":"5754:3:92"}]}]},"pre":{"nodeType":"YulBlock","src":"5732:3:92","statements":[]},"src":"5728:148:92"},{"nodeType":"YulAssignment","src":"5885:16:92","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"5895:6:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"5885:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"5910:48:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5943:9:92"},{"name":"_4","nodeType":"YulIdentifier","src":"5954:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5939:3:92"},"nodeType":"YulFunctionCall","src":"5939:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"5926:12:92"},"nodeType":"YulFunctionCall","src":"5926:32:92"},"variables":[{"name":"offset_1","nodeType":"YulTypedName","src":"5914:8:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"5987:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5996:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5999:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5989:6:92"},"nodeType":"YulFunctionCall","src":"5989:12:92"},"nodeType":"YulExpressionStatement","src":"5989:12:92"}]},"condition":{"arguments":[{"name":"offset_1","nodeType":"YulIdentifier","src":"5973:8:92"},{"name":"_1","nodeType":"YulIdentifier","src":"5983:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5970:2:92"},"nodeType":"YulFunctionCall","src":"5970:16:92"},"nodeType":"YulIf","src":"5967:36:92"},{"nodeType":"YulAssignment","src":"6012:73:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6055:9:92"},{"name":"offset_1","nodeType":"YulIdentifier","src":"6066:8:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6051:3:92"},"nodeType":"YulFunctionCall","src":"6051:24:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"6077:7:92"}],"functionName":{"name":"abi_decode_array_uint256_dyn","nodeType":"YulIdentifier","src":"6022:28:92"},"nodeType":"YulFunctionCall","src":"6022:63:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"6012:6:92"}]}]},"name":"abi_decode_tuple_t_array$_t_address_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4978:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"4989:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"5001:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"5009:6:92","type":""}],"src":"4883:1208:92"},{"body":{"nodeType":"YulBlock","src":"6157:374:92","statements":[{"nodeType":"YulVariableDeclaration","src":"6167:26:92","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6187:5:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6181:5:92"},"nodeType":"YulFunctionCall","src":"6181:12:92"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"6171:6:92","type":""}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6209:3:92"},{"name":"length","nodeType":"YulIdentifier","src":"6214:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6202:6:92"},"nodeType":"YulFunctionCall","src":"6202:19:92"},"nodeType":"YulExpressionStatement","src":"6202:19:92"},{"nodeType":"YulVariableDeclaration","src":"6230:14:92","value":{"kind":"number","nodeType":"YulLiteral","src":"6240:4:92","type":"","value":"0x20"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"6234:2:92","type":""}]},{"nodeType":"YulAssignment","src":"6253:19:92","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6264:3:92"},{"name":"_1","nodeType":"YulIdentifier","src":"6269:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6260:3:92"},"nodeType":"YulFunctionCall","src":"6260:12:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"6253:3:92"}]},{"nodeType":"YulVariableDeclaration","src":"6281:28:92","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6299:5:92"},{"name":"_1","nodeType":"YulIdentifier","src":"6306:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6295:3:92"},"nodeType":"YulFunctionCall","src":"6295:14:92"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"6285:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"6318:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"6327:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"6322:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"6386:120:92","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6407:3:92"},{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"6418:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6412:5:92"},"nodeType":"YulFunctionCall","src":"6412:13:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6400:6:92"},"nodeType":"YulFunctionCall","src":"6400:26:92"},"nodeType":"YulExpressionStatement","src":"6400:26:92"},{"nodeType":"YulAssignment","src":"6439:19:92","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6450:3:92"},{"name":"_1","nodeType":"YulIdentifier","src":"6455:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6446:3:92"},"nodeType":"YulFunctionCall","src":"6446:12:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"6439:3:92"}]},{"nodeType":"YulAssignment","src":"6471:25:92","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"6485:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"6493:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6481:3:92"},"nodeType":"YulFunctionCall","src":"6481:15:92"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"6471:6:92"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"6348:1:92"},{"name":"length","nodeType":"YulIdentifier","src":"6351:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"6345:2:92"},"nodeType":"YulFunctionCall","src":"6345:13:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"6359:18:92","statements":[{"nodeType":"YulAssignment","src":"6361:14:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"6370:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"6373:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6366:3:92"},"nodeType":"YulFunctionCall","src":"6366:9:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"6361:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"6341:3:92","statements":[]},"src":"6337:169:92"},{"nodeType":"YulAssignment","src":"6515:10:92","value":{"name":"pos","nodeType":"YulIdentifier","src":"6522:3:92"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"6515:3:92"}]}]},"name":"abi_encode_array_uint256_dyn","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"6134:5:92","type":""},{"name":"pos","nodeType":"YulTypedName","src":"6141:3:92","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"6149:3:92","type":""}],"src":"6096:435:92"},{"body":{"nodeType":"YulBlock","src":"6687:110:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6704:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6715:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6697:6:92"},"nodeType":"YulFunctionCall","src":"6697:21:92"},"nodeType":"YulExpressionStatement","src":"6697:21:92"},{"nodeType":"YulAssignment","src":"6727:64:92","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6764:6:92"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6776:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6787:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6772:3:92"},"nodeType":"YulFunctionCall","src":"6772:18:92"}],"functionName":{"name":"abi_encode_array_uint256_dyn","nodeType":"YulIdentifier","src":"6735:28:92"},"nodeType":"YulFunctionCall","src":"6735:56:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6727:4:92"}]}]},"name":"abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6656:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"6667:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6678:4:92","type":""}],"src":"6536:261:92"},{"body":{"nodeType":"YulBlock","src":"6886:263:92","statements":[{"body":{"nodeType":"YulBlock","src":"6932:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6941:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6944:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6934:6:92"},"nodeType":"YulFunctionCall","src":"6934:12:92"},"nodeType":"YulExpressionStatement","src":"6934:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"6907:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"6916:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6903:3:92"},"nodeType":"YulFunctionCall","src":"6903:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"6928:2:92","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6899:3:92"},"nodeType":"YulFunctionCall","src":"6899:32:92"},"nodeType":"YulIf","src":"6896:52:92"},{"nodeType":"YulAssignment","src":"6957:39:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6986:9:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"6967:18:92"},"nodeType":"YulFunctionCall","src":"6967:29:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"6957:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"7005:45:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7035:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7046:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7031:3:92"},"nodeType":"YulFunctionCall","src":"7031:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"7018:12:92"},"nodeType":"YulFunctionCall","src":"7018:32:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"7009:5:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"7103:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7112:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7115:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7105:6:92"},"nodeType":"YulFunctionCall","src":"7105:12:92"},"nodeType":"YulExpressionStatement","src":"7105:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7072:5:92"},{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7093:5:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"7086:6:92"},"nodeType":"YulFunctionCall","src":"7086:13:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"7079:6:92"},"nodeType":"YulFunctionCall","src":"7079:21:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"7069:2:92"},"nodeType":"YulFunctionCall","src":"7069:32:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"7062:6:92"},"nodeType":"YulFunctionCall","src":"7062:40:92"},"nodeType":"YulIf","src":"7059:60:92"},{"nodeType":"YulAssignment","src":"7128:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"7138:5:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"7128:6:92"}]}]},"name":"abi_decode_tuple_t_addresst_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6844:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"6855:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"6867:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"6875:6:92","type":""}],"src":"6802:347:92"},{"body":{"nodeType":"YulBlock","src":"7241:173:92","statements":[{"body":{"nodeType":"YulBlock","src":"7287:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7296:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7299:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7289:6:92"},"nodeType":"YulFunctionCall","src":"7289:12:92"},"nodeType":"YulExpressionStatement","src":"7289:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"7262:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"7271:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"7258:3:92"},"nodeType":"YulFunctionCall","src":"7258:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"7283:2:92","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"7254:3:92"},"nodeType":"YulFunctionCall","src":"7254:32:92"},"nodeType":"YulIf","src":"7251:52:92"},{"nodeType":"YulAssignment","src":"7312:39:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7341:9:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"7322:18:92"},"nodeType":"YulFunctionCall","src":"7322:29:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"7312:6:92"}]},{"nodeType":"YulAssignment","src":"7360:48:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7393:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7404:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7389:3:92"},"nodeType":"YulFunctionCall","src":"7389:18:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"7370:18:92"},"nodeType":"YulFunctionCall","src":"7370:38:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"7360:6:92"}]}]},"name":"abi_decode_tuple_t_addresst_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7199:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"7210:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"7222:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"7230:6:92","type":""}],"src":"7154:260:92"},{"body":{"nodeType":"YulBlock","src":"7566:459:92","statements":[{"body":{"nodeType":"YulBlock","src":"7613:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7622:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7625:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7615:6:92"},"nodeType":"YulFunctionCall","src":"7615:12:92"},"nodeType":"YulExpressionStatement","src":"7615:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"7587:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"7596:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"7583:3:92"},"nodeType":"YulFunctionCall","src":"7583:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"7608:3:92","type":"","value":"160"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"7579:3:92"},"nodeType":"YulFunctionCall","src":"7579:33:92"},"nodeType":"YulIf","src":"7576:53:92"},{"nodeType":"YulAssignment","src":"7638:39:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7667:9:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"7648:18:92"},"nodeType":"YulFunctionCall","src":"7648:29:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"7638:6:92"}]},{"nodeType":"YulAssignment","src":"7686:48:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7719:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7730:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7715:3:92"},"nodeType":"YulFunctionCall","src":"7715:18:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"7696:18:92"},"nodeType":"YulFunctionCall","src":"7696:38:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"7686:6:92"}]},{"nodeType":"YulAssignment","src":"7743:42:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7770:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7781:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7766:3:92"},"nodeType":"YulFunctionCall","src":"7766:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"7753:12:92"},"nodeType":"YulFunctionCall","src":"7753:32:92"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"7743:6:92"}]},{"nodeType":"YulAssignment","src":"7794:42:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7821:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7832:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7817:3:92"},"nodeType":"YulFunctionCall","src":"7817:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"7804:12:92"},"nodeType":"YulFunctionCall","src":"7804:32:92"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"7794:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"7845:47:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7876:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7887:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7872:3:92"},"nodeType":"YulFunctionCall","src":"7872:19:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"7859:12:92"},"nodeType":"YulFunctionCall","src":"7859:33:92"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"7849:6:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"7935:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7944:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7947:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7937:6:92"},"nodeType":"YulFunctionCall","src":"7937:12:92"},"nodeType":"YulExpressionStatement","src":"7937:12:92"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"7907:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"7915:18:92","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"7904:2:92"},"nodeType":"YulFunctionCall","src":"7904:30:92"},"nodeType":"YulIf","src":"7901:50:92"},{"nodeType":"YulAssignment","src":"7960:59:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7991:9:92"},{"name":"offset","nodeType":"YulIdentifier","src":"8002:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7987:3:92"},"nodeType":"YulFunctionCall","src":"7987:22:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"8011:7:92"}],"functionName":{"name":"abi_decode_bytes","nodeType":"YulIdentifier","src":"7970:16:92"},"nodeType":"YulFunctionCall","src":"7970:49:92"},"variableNames":[{"name":"value4","nodeType":"YulIdentifier","src":"7960:6:92"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7500:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"7511:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"7523:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"7531:6:92","type":""},{"name":"value2","nodeType":"YulTypedName","src":"7539:6:92","type":""},{"name":"value3","nodeType":"YulTypedName","src":"7547:6:92","type":""},{"name":"value4","nodeType":"YulTypedName","src":"7555:6:92","type":""}],"src":"7419:606:92"},{"body":{"nodeType":"YulBlock","src":"8204:232:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8221:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8232:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8214:6:92"},"nodeType":"YulFunctionCall","src":"8214:21:92"},"nodeType":"YulExpressionStatement","src":"8214:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8255:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8266:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8251:3:92"},"nodeType":"YulFunctionCall","src":"8251:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"8271:2:92","type":"","value":"42"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8244:6:92"},"nodeType":"YulFunctionCall","src":"8244:30:92"},"nodeType":"YulExpressionStatement","src":"8244:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8294:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8305:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8290:3:92"},"nodeType":"YulFunctionCall","src":"8290:18:92"},{"hexValue":"455243313135353a2061646472657373207a65726f206973206e6f7420612076","kind":"string","nodeType":"YulLiteral","src":"8310:34:92","type":"","value":"ERC1155: address zero is not a v"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8283:6:92"},"nodeType":"YulFunctionCall","src":"8283:62:92"},"nodeType":"YulExpressionStatement","src":"8283:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8365:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8376:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8361:3:92"},"nodeType":"YulFunctionCall","src":"8361:18:92"},{"hexValue":"616c6964206f776e6572","kind":"string","nodeType":"YulLiteral","src":"8381:12:92","type":"","value":"alid owner"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8354:6:92"},"nodeType":"YulFunctionCall","src":"8354:40:92"},"nodeType":"YulExpressionStatement","src":"8354:40:92"},{"nodeType":"YulAssignment","src":"8403:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8415:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8426:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8411:3:92"},"nodeType":"YulFunctionCall","src":"8411:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"8403:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_415a1b99e1fd4a18cf87c08995f5a9130182e8d76e9c17c497bfebaaef9265ad__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8181:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"8195:4:92","type":""}],"src":"8030:406:92"},{"body":{"nodeType":"YulBlock","src":"8496:325:92","statements":[{"nodeType":"YulAssignment","src":"8506:22:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8520:1:92","type":"","value":"1"},{"name":"data","nodeType":"YulIdentifier","src":"8523:4:92"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"8516:3:92"},"nodeType":"YulFunctionCall","src":"8516:12:92"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"8506:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"8537:38:92","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"8567:4:92"},{"kind":"number","nodeType":"YulLiteral","src":"8573:1:92","type":"","value":"1"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8563:3:92"},"nodeType":"YulFunctionCall","src":"8563:12:92"},"variables":[{"name":"outOfPlaceEncoding","nodeType":"YulTypedName","src":"8541:18:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"8614:31:92","statements":[{"nodeType":"YulAssignment","src":"8616:27:92","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"8630:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"8638:4:92","type":"","value":"0x7f"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8626:3:92"},"nodeType":"YulFunctionCall","src":"8626:17:92"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"8616:6:92"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"8594:18:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"8587:6:92"},"nodeType":"YulFunctionCall","src":"8587:26:92"},"nodeType":"YulIf","src":"8584:61:92"},{"body":{"nodeType":"YulBlock","src":"8704:111:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8725:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8732:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"8737:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"8728:3:92"},"nodeType":"YulFunctionCall","src":"8728:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8718:6:92"},"nodeType":"YulFunctionCall","src":"8718:31:92"},"nodeType":"YulExpressionStatement","src":"8718:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8769:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"8772:4:92","type":"","value":"0x22"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8762:6:92"},"nodeType":"YulFunctionCall","src":"8762:15:92"},"nodeType":"YulExpressionStatement","src":"8762:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8797:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8800:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8790:6:92"},"nodeType":"YulFunctionCall","src":"8790:15:92"},"nodeType":"YulExpressionStatement","src":"8790:15:92"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"8660:18:92"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"8683:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"8691:2:92","type":"","value":"32"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"8680:2:92"},"nodeType":"YulFunctionCall","src":"8680:14:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"8657:2:92"},"nodeType":"YulFunctionCall","src":"8657:38:92"},"nodeType":"YulIf","src":"8654:161:92"}]},"name":"extract_byte_array_length","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"8476:4:92","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"8485:6:92","type":""}],"src":"8441:380:92"},{"body":{"nodeType":"YulBlock","src":"9000:236:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9017:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9028:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9010:6:92"},"nodeType":"YulFunctionCall","src":"9010:21:92"},"nodeType":"YulExpressionStatement","src":"9010:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9051:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9062:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9047:3:92"},"nodeType":"YulFunctionCall","src":"9047:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"9067:2:92","type":"","value":"46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9040:6:92"},"nodeType":"YulFunctionCall","src":"9040:30:92"},"nodeType":"YulExpressionStatement","src":"9040:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9090:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9101:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9086:3:92"},"nodeType":"YulFunctionCall","src":"9086:18:92"},{"hexValue":"455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e","kind":"string","nodeType":"YulLiteral","src":"9106:34:92","type":"","value":"ERC1155: caller is not token own"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9079:6:92"},"nodeType":"YulFunctionCall","src":"9079:62:92"},"nodeType":"YulExpressionStatement","src":"9079:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9161:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9172:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9157:3:92"},"nodeType":"YulFunctionCall","src":"9157:18:92"},{"hexValue":"6572206f7220617070726f766564","kind":"string","nodeType":"YulLiteral","src":"9177:16:92","type":"","value":"er or approved"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9150:6:92"},"nodeType":"YulFunctionCall","src":"9150:44:92"},"nodeType":"YulExpressionStatement","src":"9150:44:92"},{"nodeType":"YulAssignment","src":"9203:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9215:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9226:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9211:3:92"},"nodeType":"YulFunctionCall","src":"9211:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"9203:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_47c72b42072ed6c647dec3a0a5c88bec44d3e901c64659bff94ecce0a0323156__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8977:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"8991:4:92","type":""}],"src":"8826:410:92"},{"body":{"nodeType":"YulBlock","src":"9415:231:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9432:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9443:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9425:6:92"},"nodeType":"YulFunctionCall","src":"9425:21:92"},"nodeType":"YulExpressionStatement","src":"9425:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9466:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9477:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9462:3:92"},"nodeType":"YulFunctionCall","src":"9462:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"9482:2:92","type":"","value":"41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9455:6:92"},"nodeType":"YulFunctionCall","src":"9455:30:92"},"nodeType":"YulExpressionStatement","src":"9455:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9505:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9516:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9501:3:92"},"nodeType":"YulFunctionCall","src":"9501:18:92"},{"hexValue":"455243313135353a206163636f756e747320616e6420696473206c656e677468","kind":"string","nodeType":"YulLiteral","src":"9521:34:92","type":"","value":"ERC1155: accounts and ids length"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9494:6:92"},"nodeType":"YulFunctionCall","src":"9494:62:92"},"nodeType":"YulExpressionStatement","src":"9494:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9576:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9587:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9572:3:92"},"nodeType":"YulFunctionCall","src":"9572:18:92"},{"hexValue":"206d69736d61746368","kind":"string","nodeType":"YulLiteral","src":"9592:11:92","type":"","value":" mismatch"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9565:6:92"},"nodeType":"YulFunctionCall","src":"9565:39:92"},"nodeType":"YulExpressionStatement","src":"9565:39:92"},{"nodeType":"YulAssignment","src":"9613:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9625:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9636:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9621:3:92"},"nodeType":"YulFunctionCall","src":"9621:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"9613:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_e155f5d69798c6205436a388a4f3a5fd42f54147b40f4d63a2c8071ff8a9fee5__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9392:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"9406:4:92","type":""}],"src":"9241:405:92"},{"body":{"nodeType":"YulBlock","src":"9683:95:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9700:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9707:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"9712:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"9703:3:92"},"nodeType":"YulFunctionCall","src":"9703:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9693:6:92"},"nodeType":"YulFunctionCall","src":"9693:31:92"},"nodeType":"YulExpressionStatement","src":"9693:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9740:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"9743:4:92","type":"","value":"0x32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9733:6:92"},"nodeType":"YulFunctionCall","src":"9733:15:92"},"nodeType":"YulExpressionStatement","src":"9733:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9764:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"9767:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9757:6:92"},"nodeType":"YulFunctionCall","src":"9757:15:92"},"nodeType":"YulExpressionStatement","src":"9757:15:92"}]},"name":"panic_error_0x32","nodeType":"YulFunctionDefinition","src":"9651:127:92"},{"body":{"nodeType":"YulBlock","src":"9815:95:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9832:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9839:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"9844:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"9835:3:92"},"nodeType":"YulFunctionCall","src":"9835:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9825:6:92"},"nodeType":"YulFunctionCall","src":"9825:31:92"},"nodeType":"YulExpressionStatement","src":"9825:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9872:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"9875:4:92","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9865:6:92"},"nodeType":"YulFunctionCall","src":"9865:15:92"},"nodeType":"YulExpressionStatement","src":"9865:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9896:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"9899:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9889:6:92"},"nodeType":"YulFunctionCall","src":"9889:15:92"},"nodeType":"YulExpressionStatement","src":"9889:15:92"}]},"name":"panic_error_0x11","nodeType":"YulFunctionDefinition","src":"9783:127:92"},{"body":{"nodeType":"YulBlock","src":"9962:88:92","statements":[{"body":{"nodeType":"YulBlock","src":"9993:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"9995:16:92"},"nodeType":"YulFunctionCall","src":"9995:18:92"},"nodeType":"YulExpressionStatement","src":"9995:18:92"}]},"condition":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9978:5:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9989:1:92","type":"","value":"0"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"9985:3:92"},"nodeType":"YulFunctionCall","src":"9985:6:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"9975:2:92"},"nodeType":"YulFunctionCall","src":"9975:17:92"},"nodeType":"YulIf","src":"9972:43:92"},{"nodeType":"YulAssignment","src":"10024:20:92","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"10035:5:92"},{"kind":"number","nodeType":"YulLiteral","src":"10042:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10031:3:92"},"nodeType":"YulFunctionCall","src":"10031:13:92"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"10024:3:92"}]}]},"name":"increment_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"9944:5:92","type":""}],"returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"9954:3:92","type":""}],"src":"9915:135:92"},{"body":{"nodeType":"YulBlock","src":"10229:230:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10246:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"10257:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10239:6:92"},"nodeType":"YulFunctionCall","src":"10239:21:92"},"nodeType":"YulExpressionStatement","src":"10239:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10280:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"10291:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10276:3:92"},"nodeType":"YulFunctionCall","src":"10276:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"10296:2:92","type":"","value":"40"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10269:6:92"},"nodeType":"YulFunctionCall","src":"10269:30:92"},"nodeType":"YulExpressionStatement","src":"10269:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10319:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"10330:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10315:3:92"},"nodeType":"YulFunctionCall","src":"10315:18:92"},{"hexValue":"455243313135353a2069647320616e6420616d6f756e7473206c656e67746820","kind":"string","nodeType":"YulLiteral","src":"10335:34:92","type":"","value":"ERC1155: ids and amounts length "}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10308:6:92"},"nodeType":"YulFunctionCall","src":"10308:62:92"},"nodeType":"YulExpressionStatement","src":"10308:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10390:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"10401:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10386:3:92"},"nodeType":"YulFunctionCall","src":"10386:18:92"},{"hexValue":"6d69736d61746368","kind":"string","nodeType":"YulLiteral","src":"10406:10:92","type":"","value":"mismatch"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10379:6:92"},"nodeType":"YulFunctionCall","src":"10379:38:92"},"nodeType":"YulExpressionStatement","src":"10379:38:92"},{"nodeType":"YulAssignment","src":"10426:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10438:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"10449:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10434:3:92"},"nodeType":"YulFunctionCall","src":"10434:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"10426:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_e909e0c9a8f96b4f9af03b716811ece20beb070be416893ed1d50619b5930807__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"10206:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"10220:4:92","type":""}],"src":"10055:404:92"},{"body":{"nodeType":"YulBlock","src":"10638:227:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10655:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"10666:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10648:6:92"},"nodeType":"YulFunctionCall","src":"10648:21:92"},"nodeType":"YulExpressionStatement","src":"10648:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10689:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"10700:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10685:3:92"},"nodeType":"YulFunctionCall","src":"10685:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"10705:2:92","type":"","value":"37"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10678:6:92"},"nodeType":"YulFunctionCall","src":"10678:30:92"},"nodeType":"YulExpressionStatement","src":"10678:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10728:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"10739:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10724:3:92"},"nodeType":"YulFunctionCall","src":"10724:18:92"},{"hexValue":"455243313135353a207472616e7366657220746f20746865207a65726f206164","kind":"string","nodeType":"YulLiteral","src":"10744:34:92","type":"","value":"ERC1155: transfer to the zero ad"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10717:6:92"},"nodeType":"YulFunctionCall","src":"10717:62:92"},"nodeType":"YulExpressionStatement","src":"10717:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10799:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"10810:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10795:3:92"},"nodeType":"YulFunctionCall","src":"10795:18:92"},{"hexValue":"6472657373","kind":"string","nodeType":"YulLiteral","src":"10815:7:92","type":"","value":"dress"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10788:6:92"},"nodeType":"YulFunctionCall","src":"10788:35:92"},"nodeType":"YulExpressionStatement","src":"10788:35:92"},{"nodeType":"YulAssignment","src":"10832:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10844:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"10855:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10840:3:92"},"nodeType":"YulFunctionCall","src":"10840:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"10832:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_6faf1c67f278b07c6771dcf4c315a89c21c0eaed11d9ab3d51774da1cfef545d__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"10615:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"10629:4:92","type":""}],"src":"10464:401:92"},{"body":{"nodeType":"YulBlock","src":"11044:232:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11061:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"11072:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11054:6:92"},"nodeType":"YulFunctionCall","src":"11054:21:92"},"nodeType":"YulExpressionStatement","src":"11054:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11095:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"11106:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11091:3:92"},"nodeType":"YulFunctionCall","src":"11091:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"11111:2:92","type":"","value":"42"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11084:6:92"},"nodeType":"YulFunctionCall","src":"11084:30:92"},"nodeType":"YulExpressionStatement","src":"11084:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11134:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"11145:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11130:3:92"},"nodeType":"YulFunctionCall","src":"11130:18:92"},{"hexValue":"455243313135353a20696e73756666696369656e742062616c616e636520666f","kind":"string","nodeType":"YulLiteral","src":"11150:34:92","type":"","value":"ERC1155: insufficient balance fo"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11123:6:92"},"nodeType":"YulFunctionCall","src":"11123:62:92"},"nodeType":"YulExpressionStatement","src":"11123:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11205:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"11216:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11201:3:92"},"nodeType":"YulFunctionCall","src":"11201:18:92"},{"hexValue":"72207472616e73666572","kind":"string","nodeType":"YulLiteral","src":"11221:12:92","type":"","value":"r transfer"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11194:6:92"},"nodeType":"YulFunctionCall","src":"11194:40:92"},"nodeType":"YulExpressionStatement","src":"11194:40:92"},{"nodeType":"YulAssignment","src":"11243:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11255:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"11266:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11251:3:92"},"nodeType":"YulFunctionCall","src":"11251:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"11243:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_8ac7e9556b567c1c94bb4daaa3c3a65be5ac686579615210cb910fb8cb8d65bf__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"11021:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"11035:4:92","type":""}],"src":"10870:406:92"},{"body":{"nodeType":"YulBlock","src":"11329:77:92","statements":[{"nodeType":"YulAssignment","src":"11339:16:92","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"11350:1:92"},{"name":"y","nodeType":"YulIdentifier","src":"11353:1:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11346:3:92"},"nodeType":"YulFunctionCall","src":"11346:9:92"},"variableNames":[{"name":"sum","nodeType":"YulIdentifier","src":"11339:3:92"}]},{"body":{"nodeType":"YulBlock","src":"11378:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"11380:16:92"},"nodeType":"YulFunctionCall","src":"11380:18:92"},"nodeType":"YulExpressionStatement","src":"11380:18:92"}]},"condition":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"11370:1:92"},{"name":"sum","nodeType":"YulIdentifier","src":"11373:3:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"11367:2:92"},"nodeType":"YulFunctionCall","src":"11367:10:92"},"nodeType":"YulIf","src":"11364:36:92"}]},"name":"checked_add_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"11312:1:92","type":""},{"name":"y","nodeType":"YulTypedName","src":"11315:1:92","type":""}],"returnVariables":[{"name":"sum","nodeType":"YulTypedName","src":"11321:3:92","type":""}],"src":"11281:125:92"},{"body":{"nodeType":"YulBlock","src":"11640:236:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11657:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"11668:2:92","type":"","value":"64"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11650:6:92"},"nodeType":"YulFunctionCall","src":"11650:21:92"},"nodeType":"YulExpressionStatement","src":"11650:21:92"},{"nodeType":"YulVariableDeclaration","src":"11680:70:92","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"11723:6:92"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11735:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"11746:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11731:3:92"},"nodeType":"YulFunctionCall","src":"11731:18:92"}],"functionName":{"name":"abi_encode_array_uint256_dyn","nodeType":"YulIdentifier","src":"11694:28:92"},"nodeType":"YulFunctionCall","src":"11694:56:92"},"variables":[{"name":"tail_1","nodeType":"YulTypedName","src":"11684:6:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11770:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"11781:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11766:3:92"},"nodeType":"YulFunctionCall","src":"11766:18:92"},{"arguments":[{"name":"tail_1","nodeType":"YulIdentifier","src":"11790:6:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"11798:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"11786:3:92"},"nodeType":"YulFunctionCall","src":"11786:22:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11759:6:92"},"nodeType":"YulFunctionCall","src":"11759:50:92"},"nodeType":"YulExpressionStatement","src":"11759:50:92"},{"nodeType":"YulAssignment","src":"11818:52:92","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"11855:6:92"},{"name":"tail_1","nodeType":"YulIdentifier","src":"11863:6:92"}],"functionName":{"name":"abi_encode_array_uint256_dyn","nodeType":"YulIdentifier","src":"11826:28:92"},"nodeType":"YulFunctionCall","src":"11826:44:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"11818:4:92"}]}]},"name":"abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"11601:9:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"11612:6:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"11620:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"11631:4:92","type":""}],"src":"11411:465:92"},{"body":{"nodeType":"YulBlock","src":"12055:231:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12072:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"12083:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12065:6:92"},"nodeType":"YulFunctionCall","src":"12065:21:92"},"nodeType":"YulExpressionStatement","src":"12065:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12106:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"12117:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12102:3:92"},"nodeType":"YulFunctionCall","src":"12102:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"12122:2:92","type":"","value":"41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12095:6:92"},"nodeType":"YulFunctionCall","src":"12095:30:92"},"nodeType":"YulExpressionStatement","src":"12095:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12145:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"12156:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12141:3:92"},"nodeType":"YulFunctionCall","src":"12141:18:92"},{"hexValue":"455243313135353a2073657474696e6720617070726f76616c20737461747573","kind":"string","nodeType":"YulLiteral","src":"12161:34:92","type":"","value":"ERC1155: setting approval status"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12134:6:92"},"nodeType":"YulFunctionCall","src":"12134:62:92"},"nodeType":"YulExpressionStatement","src":"12134:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12216:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"12227:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12212:3:92"},"nodeType":"YulFunctionCall","src":"12212:18:92"},{"hexValue":"20666f722073656c66","kind":"string","nodeType":"YulLiteral","src":"12232:11:92","type":"","value":" for self"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12205:6:92"},"nodeType":"YulFunctionCall","src":"12205:39:92"},"nodeType":"YulExpressionStatement","src":"12205:39:92"},{"nodeType":"YulAssignment","src":"12253:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12265:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"12276:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12261:3:92"},"nodeType":"YulFunctionCall","src":"12261:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"12253:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_df9806c6dc743de602e49918a67b580590d69ab768bdb59f977c0a884a91a7c2__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"12032:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"12046:4:92","type":""}],"src":"11881:405:92"},{"body":{"nodeType":"YulBlock","src":"12420:119:92","statements":[{"nodeType":"YulAssignment","src":"12430:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12442:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"12453:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12438:3:92"},"nodeType":"YulFunctionCall","src":"12438:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"12430:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12472:9:92"},{"name":"value0","nodeType":"YulIdentifier","src":"12483:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12465:6:92"},"nodeType":"YulFunctionCall","src":"12465:25:92"},"nodeType":"YulExpressionStatement","src":"12465:25:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12510:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"12521:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12506:3:92"},"nodeType":"YulFunctionCall","src":"12506:18:92"},{"name":"value1","nodeType":"YulIdentifier","src":"12526:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12499:6:92"},"nodeType":"YulFunctionCall","src":"12499:34:92"},"nodeType":"YulExpressionStatement","src":"12499:34:92"}]},"name":"abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"12381:9:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"12392:6:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"12400:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"12411:4:92","type":""}],"src":"12291:248:92"},{"body":{"nodeType":"YulBlock","src":"12875:519:92","statements":[{"nodeType":"YulVariableDeclaration","src":"12885:52:92","value":{"kind":"number","nodeType":"YulLiteral","src":"12895:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"12889:2:92","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12953:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"12968:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"12976:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"12964:3:92"},"nodeType":"YulFunctionCall","src":"12964:15:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12946:6:92"},"nodeType":"YulFunctionCall","src":"12946:34:92"},"nodeType":"YulExpressionStatement","src":"12946:34:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13000:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"13011:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12996:3:92"},"nodeType":"YulFunctionCall","src":"12996:18:92"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"13020:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"13028:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"13016:3:92"},"nodeType":"YulFunctionCall","src":"13016:15:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12989:6:92"},"nodeType":"YulFunctionCall","src":"12989:43:92"},"nodeType":"YulExpressionStatement","src":"12989:43:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13052:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"13063:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13048:3:92"},"nodeType":"YulFunctionCall","src":"13048:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"13068:3:92","type":"","value":"160"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13041:6:92"},"nodeType":"YulFunctionCall","src":"13041:31:92"},"nodeType":"YulExpressionStatement","src":"13041:31:92"},{"nodeType":"YulVariableDeclaration","src":"13081:71:92","value":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"13124:6:92"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13136:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"13147:3:92","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13132:3:92"},"nodeType":"YulFunctionCall","src":"13132:19:92"}],"functionName":{"name":"abi_encode_array_uint256_dyn","nodeType":"YulIdentifier","src":"13095:28:92"},"nodeType":"YulFunctionCall","src":"13095:57:92"},"variables":[{"name":"tail_1","nodeType":"YulTypedName","src":"13085:6:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13172:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"13183:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13168:3:92"},"nodeType":"YulFunctionCall","src":"13168:18:92"},{"arguments":[{"name":"tail_1","nodeType":"YulIdentifier","src":"13192:6:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"13200:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"13188:3:92"},"nodeType":"YulFunctionCall","src":"13188:22:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13161:6:92"},"nodeType":"YulFunctionCall","src":"13161:50:92"},"nodeType":"YulExpressionStatement","src":"13161:50:92"},{"nodeType":"YulVariableDeclaration","src":"13220:58:92","value":{"arguments":[{"name":"value3","nodeType":"YulIdentifier","src":"13263:6:92"},{"name":"tail_1","nodeType":"YulIdentifier","src":"13271:6:92"}],"functionName":{"name":"abi_encode_array_uint256_dyn","nodeType":"YulIdentifier","src":"13234:28:92"},"nodeType":"YulFunctionCall","src":"13234:44:92"},"variables":[{"name":"tail_2","nodeType":"YulTypedName","src":"13224:6:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13298:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"13309:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13294:3:92"},"nodeType":"YulFunctionCall","src":"13294:19:92"},{"arguments":[{"name":"tail_2","nodeType":"YulIdentifier","src":"13319:6:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"13327:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"13315:3:92"},"nodeType":"YulFunctionCall","src":"13315:22:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13287:6:92"},"nodeType":"YulFunctionCall","src":"13287:51:92"},"nodeType":"YulExpressionStatement","src":"13287:51:92"},{"nodeType":"YulAssignment","src":"13347:41:92","value":{"arguments":[{"name":"value4","nodeType":"YulIdentifier","src":"13373:6:92"},{"name":"tail_2","nodeType":"YulIdentifier","src":"13381:6:92"}],"functionName":{"name":"abi_encode_string","nodeType":"YulIdentifier","src":"13355:17:92"},"nodeType":"YulFunctionCall","src":"13355:33:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"13347:4:92"}]}]},"name":"abi_encode_tuple_t_address_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr_t_bytes_memory_ptr__to_t_address_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr_t_bytes_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"12812:9:92","type":""},{"name":"value4","nodeType":"YulTypedName","src":"12823:6:92","type":""},{"name":"value3","nodeType":"YulTypedName","src":"12831:6:92","type":""},{"name":"value2","nodeType":"YulTypedName","src":"12839:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"12847:6:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"12855:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"12866:4:92","type":""}],"src":"12544:850:92"},{"body":{"nodeType":"YulBlock","src":"13479:169:92","statements":[{"body":{"nodeType":"YulBlock","src":"13525:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"13534:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"13537:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"13527:6:92"},"nodeType":"YulFunctionCall","src":"13527:12:92"},"nodeType":"YulExpressionStatement","src":"13527:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"13500:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"13509:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"13496:3:92"},"nodeType":"YulFunctionCall","src":"13496:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"13521:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"13492:3:92"},"nodeType":"YulFunctionCall","src":"13492:32:92"},"nodeType":"YulIf","src":"13489:52:92"},{"nodeType":"YulVariableDeclaration","src":"13550:29:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13569:9:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"13563:5:92"},"nodeType":"YulFunctionCall","src":"13563:16:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"13554:5:92","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"13612:5:92"}],"functionName":{"name":"validator_revert_bytes4","nodeType":"YulIdentifier","src":"13588:23:92"},"nodeType":"YulFunctionCall","src":"13588:30:92"},"nodeType":"YulExpressionStatement","src":"13588:30:92"},{"nodeType":"YulAssignment","src":"13627:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"13637:5:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"13627:6:92"}]}]},"name":"abi_decode_tuple_t_bytes4_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"13445:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"13456:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"13468:6:92","type":""}],"src":"13399:249:92"},{"body":{"nodeType":"YulBlock","src":"13696:136:92","statements":[{"body":{"nodeType":"YulBlock","src":"13741:85:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"13770:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"13773:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"13776:1:92","type":"","value":"4"}],"functionName":{"name":"returndatacopy","nodeType":"YulIdentifier","src":"13755:14:92"},"nodeType":"YulFunctionCall","src":"13755:23:92"},"nodeType":"YulExpressionStatement","src":"13755:23:92"},{"nodeType":"YulAssignment","src":"13791:25:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"13802:3:92","type":"","value":"224"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"13813:1:92","type":"","value":"0"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"13807:5:92"},"nodeType":"YulFunctionCall","src":"13807:8:92"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"13798:3:92"},"nodeType":"YulFunctionCall","src":"13798:18:92"},"variableNames":[{"name":"sig","nodeType":"YulIdentifier","src":"13791:3:92"}]}]},"condition":{"arguments":[{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"13712:14:92"},"nodeType":"YulFunctionCall","src":"13712:16:92"},{"kind":"number","nodeType":"YulLiteral","src":"13730:1:92","type":"","value":"3"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"13709:2:92"},"nodeType":"YulFunctionCall","src":"13709:23:92"},"nodeType":"YulIf","src":"13706:120:92"}]},"name":"return_data_selector","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"sig","nodeType":"YulTypedName","src":"13688:3:92","type":""}],"src":"13653:179:92"},{"body":{"nodeType":"YulBlock","src":"13884:624:92","statements":[{"body":{"nodeType":"YulBlock","src":"13924:9:92","statements":[{"nodeType":"YulLeave","src":"13926:5:92"}]},"condition":{"arguments":[{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"13900:14:92"},"nodeType":"YulFunctionCall","src":"13900:16:92"},{"kind":"number","nodeType":"YulLiteral","src":"13918:4:92","type":"","value":"0x44"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"13897:2:92"},"nodeType":"YulFunctionCall","src":"13897:26:92"},"nodeType":"YulIf","src":"13894:39:92"},{"nodeType":"YulVariableDeclaration","src":"13942:21:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"13960:2:92","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"13954:5:92"},"nodeType":"YulFunctionCall","src":"13954:9:92"},"variables":[{"name":"data","nodeType":"YulTypedName","src":"13946:4:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"13972:16:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"13986:1:92","type":"","value":"3"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"13982:3:92"},"nodeType":"YulFunctionCall","src":"13982:6:92"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"13976:2:92","type":""}]},{"expression":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"14012:4:92"},{"kind":"number","nodeType":"YulLiteral","src":"14018:1:92","type":"","value":"4"},{"arguments":[{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"14025:14:92"},"nodeType":"YulFunctionCall","src":"14025:16:92"},{"name":"_1","nodeType":"YulIdentifier","src":"14043:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14021:3:92"},"nodeType":"YulFunctionCall","src":"14021:25:92"}],"functionName":{"name":"returndatacopy","nodeType":"YulIdentifier","src":"13997:14:92"},"nodeType":"YulFunctionCall","src":"13997:50:92"},"nodeType":"YulExpressionStatement","src":"13997:50:92"},{"nodeType":"YulVariableDeclaration","src":"14056:25:92","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"14076:4:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"14070:5:92"},"nodeType":"YulFunctionCall","src":"14070:11:92"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"14060:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"14090:26:92","value":{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"14100:14:92"},"nodeType":"YulFunctionCall","src":"14100:16:92"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"14094:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"14125:28:92","value":{"kind":"number","nodeType":"YulLiteral","src":"14135:18:92","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"14129:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"14211:9:92","statements":[{"nodeType":"YulLeave","src":"14213:5:92"}]},"condition":{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"14171:6:92"},{"name":"_3","nodeType":"YulIdentifier","src":"14179:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"14168:2:92"},"nodeType":"YulFunctionCall","src":"14168:14:92"},{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"14191:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"14199:4:92","type":"","value":"0x24"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14187:3:92"},"nodeType":"YulFunctionCall","src":"14187:17:92"},{"name":"_2","nodeType":"YulIdentifier","src":"14206:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"14184:2:92"},"nodeType":"YulFunctionCall","src":"14184:25:92"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"14165:2:92"},"nodeType":"YulFunctionCall","src":"14165:45:92"},"nodeType":"YulIf","src":"14162:58:92"},{"nodeType":"YulVariableDeclaration","src":"14229:28:92","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"14244:4:92"},{"name":"offset","nodeType":"YulIdentifier","src":"14250:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14240:3:92"},"nodeType":"YulFunctionCall","src":"14240:17:92"},"variables":[{"name":"msg","nodeType":"YulTypedName","src":"14233:3:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"14266:24:92","value":{"arguments":[{"name":"msg","nodeType":"YulIdentifier","src":"14286:3:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"14280:5:92"},"nodeType":"YulFunctionCall","src":"14280:10:92"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"14270:6:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"14317:9:92","statements":[{"nodeType":"YulLeave","src":"14319:5:92"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"14305:6:92"},{"name":"_3","nodeType":"YulIdentifier","src":"14313:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"14302:2:92"},"nodeType":"YulFunctionCall","src":"14302:14:92"},"nodeType":"YulIf","src":"14299:27:92"},{"body":{"nodeType":"YulBlock","src":"14408:9:92","statements":[{"nodeType":"YulLeave","src":"14410:5:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"msg","nodeType":"YulIdentifier","src":"14349:3:92"},{"name":"length","nodeType":"YulIdentifier","src":"14354:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14345:3:92"},"nodeType":"YulFunctionCall","src":"14345:16:92"},{"kind":"number","nodeType":"YulLiteral","src":"14363:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14341:3:92"},"nodeType":"YulFunctionCall","src":"14341:27:92"},{"arguments":[{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"14378:4:92"},{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"14384:14:92"},"nodeType":"YulFunctionCall","src":"14384:16:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14374:3:92"},"nodeType":"YulFunctionCall","src":"14374:27:92"},{"name":"_1","nodeType":"YulIdentifier","src":"14403:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14370:3:92"},"nodeType":"YulFunctionCall","src":"14370:36:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"14338:2:92"},"nodeType":"YulFunctionCall","src":"14338:69:92"},"nodeType":"YulIf","src":"14335:82:92"},{"expression":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"14446:4:92"},{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"14460:6:92"},{"name":"length","nodeType":"YulIdentifier","src":"14468:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14456:3:92"},"nodeType":"YulFunctionCall","src":"14456:19:92"},{"kind":"number","nodeType":"YulLiteral","src":"14477:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14452:3:92"},"nodeType":"YulFunctionCall","src":"14452:30:92"}],"functionName":{"name":"finalize_allocation","nodeType":"YulIdentifier","src":"14426:19:92"},"nodeType":"YulFunctionCall","src":"14426:57:92"},"nodeType":"YulExpressionStatement","src":"14426:57:92"},{"nodeType":"YulAssignment","src":"14492:10:92","value":{"name":"msg","nodeType":"YulIdentifier","src":"14499:3:92"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"14492:3:92"}]}]},"name":"try_decode_error_message","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"13876:3:92","type":""}],"src":"13837:671:92"},{"body":{"nodeType":"YulBlock","src":"14687:242:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14704:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"14715:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"14697:6:92"},"nodeType":"YulFunctionCall","src":"14697:21:92"},"nodeType":"YulExpressionStatement","src":"14697:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14738:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"14749:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14734:3:92"},"nodeType":"YulFunctionCall","src":"14734:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"14754:2:92","type":"","value":"52"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"14727:6:92"},"nodeType":"YulFunctionCall","src":"14727:30:92"},"nodeType":"YulExpressionStatement","src":"14727:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14777:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"14788:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14773:3:92"},"nodeType":"YulFunctionCall","src":"14773:18:92"},{"hexValue":"455243313135353a207472616e7366657220746f206e6f6e2d45524331313535","kind":"string","nodeType":"YulLiteral","src":"14793:34:92","type":"","value":"ERC1155: transfer to non-ERC1155"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"14766:6:92"},"nodeType":"YulFunctionCall","src":"14766:62:92"},"nodeType":"YulExpressionStatement","src":"14766:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14848:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"14859:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14844:3:92"},"nodeType":"YulFunctionCall","src":"14844:18:92"},{"hexValue":"526563656976657220696d706c656d656e746572","kind":"string","nodeType":"YulLiteral","src":"14864:22:92","type":"","value":"Receiver implementer"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"14837:6:92"},"nodeType":"YulFunctionCall","src":"14837:50:92"},"nodeType":"YulExpressionStatement","src":"14837:50:92"},{"nodeType":"YulAssignment","src":"14896:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14908:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"14919:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14904:3:92"},"nodeType":"YulFunctionCall","src":"14904:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"14896:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_f591f7b75ffc499e05f8b34c3364b2eceff651378d9549db1d5d67c0d8255c5d__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"14664:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"14678:4:92","type":""}],"src":"14513:416:92"},{"body":{"nodeType":"YulBlock","src":"15108:230:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15125:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"15136:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15118:6:92"},"nodeType":"YulFunctionCall","src":"15118:21:92"},"nodeType":"YulExpressionStatement","src":"15118:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15159:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"15170:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15155:3:92"},"nodeType":"YulFunctionCall","src":"15155:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"15175:2:92","type":"","value":"40"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15148:6:92"},"nodeType":"YulFunctionCall","src":"15148:30:92"},"nodeType":"YulExpressionStatement","src":"15148:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15198:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"15209:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15194:3:92"},"nodeType":"YulFunctionCall","src":"15194:18:92"},{"hexValue":"455243313135353a204552433131353552656365697665722072656a65637465","kind":"string","nodeType":"YulLiteral","src":"15214:34:92","type":"","value":"ERC1155: ERC1155Receiver rejecte"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15187:6:92"},"nodeType":"YulFunctionCall","src":"15187:62:92"},"nodeType":"YulExpressionStatement","src":"15187:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15269:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"15280:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15265:3:92"},"nodeType":"YulFunctionCall","src":"15265:18:92"},{"hexValue":"6420746f6b656e73","kind":"string","nodeType":"YulLiteral","src":"15285:10:92","type":"","value":"d tokens"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15258:6:92"},"nodeType":"YulFunctionCall","src":"15258:38:92"},"nodeType":"YulExpressionStatement","src":"15258:38:92"},{"nodeType":"YulAssignment","src":"15305:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15317:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"15328:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15313:3:92"},"nodeType":"YulFunctionCall","src":"15313:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"15305:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_0587cccad73a80a7f013db13c596f4febc1968dc77e1d3589d5e7a509a3d6503__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"15085:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"15099:4:92","type":""}],"src":"14934:404:92"},{"body":{"nodeType":"YulBlock","src":"15574:353:92","statements":[{"nodeType":"YulVariableDeclaration","src":"15584:52:92","value":{"kind":"number","nodeType":"YulLiteral","src":"15594:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"15588:2:92","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15652:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"15667:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"15675:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"15663:3:92"},"nodeType":"YulFunctionCall","src":"15663:15:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15645:6:92"},"nodeType":"YulFunctionCall","src":"15645:34:92"},"nodeType":"YulExpressionStatement","src":"15645:34:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15699:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"15710:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15695:3:92"},"nodeType":"YulFunctionCall","src":"15695:18:92"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"15719:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"15727:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"15715:3:92"},"nodeType":"YulFunctionCall","src":"15715:15:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15688:6:92"},"nodeType":"YulFunctionCall","src":"15688:43:92"},"nodeType":"YulExpressionStatement","src":"15688:43:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15751:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"15762:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15747:3:92"},"nodeType":"YulFunctionCall","src":"15747:18:92"},{"name":"value2","nodeType":"YulIdentifier","src":"15767:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15740:6:92"},"nodeType":"YulFunctionCall","src":"15740:34:92"},"nodeType":"YulExpressionStatement","src":"15740:34:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15794:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"15805:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15790:3:92"},"nodeType":"YulFunctionCall","src":"15790:18:92"},{"name":"value3","nodeType":"YulIdentifier","src":"15810:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15783:6:92"},"nodeType":"YulFunctionCall","src":"15783:34:92"},"nodeType":"YulExpressionStatement","src":"15783:34:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15837:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"15848:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15833:3:92"},"nodeType":"YulFunctionCall","src":"15833:19:92"},{"kind":"number","nodeType":"YulLiteral","src":"15854:3:92","type":"","value":"160"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15826:6:92"},"nodeType":"YulFunctionCall","src":"15826:32:92"},"nodeType":"YulExpressionStatement","src":"15826:32:92"},{"nodeType":"YulAssignment","src":"15867:54:92","value":{"arguments":[{"name":"value4","nodeType":"YulIdentifier","src":"15893:6:92"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15905:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"15916:3:92","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15901:3:92"},"nodeType":"YulFunctionCall","src":"15901:19:92"}],"functionName":{"name":"abi_encode_string","nodeType":"YulIdentifier","src":"15875:17:92"},"nodeType":"YulFunctionCall","src":"15875:46:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"15867:4:92"}]}]},"name":"abi_encode_tuple_t_address_t_address_t_uint256_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_uint256_t_bytes_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"15511:9:92","type":""},{"name":"value4","nodeType":"YulTypedName","src":"15522:6:92","type":""},{"name":"value3","nodeType":"YulTypedName","src":"15530:6:92","type":""},{"name":"value2","nodeType":"YulTypedName","src":"15538:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"15546:6:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"15554:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"15565:4:92","type":""}],"src":"15343:584:92"}]},"contents":"{\n { }\n function abi_decode_address(offset) -> value\n {\n value := calldataload(offset)\n if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := calldataload(add(headStart, 32))\n }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function validator_revert_bytes4(value)\n {\n if iszero(eq(value, and(value, shl(224, 0xffffffff)))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_bytes4(value)\n value0 := value\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := calldataload(headStart)\n }\n function abi_encode_string(value, pos) -> end\n {\n let length := mload(value)\n mstore(pos, length)\n let i := 0\n for { } lt(i, length) { i := add(i, 0x20) }\n {\n let _1 := 0x20\n mstore(add(add(pos, i), _1), mload(add(add(value, i), _1)))\n }\n mstore(add(add(pos, length), 0x20), 0)\n end := add(add(pos, and(add(length, 31), not(31))), 0x20)\n }\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n mstore(headStart, 32)\n tail := abi_encode_string(value0, add(headStart, 32))\n }\n function panic_error_0x41()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function finalize_allocation(memPtr, size)\n {\n let newFreePtr := add(memPtr, and(add(size, 31), not(31)))\n if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n }\n function array_allocation_size_array_uint256_dyn(length) -> size\n {\n if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n size := add(shl(5, length), 0x20)\n }\n function abi_decode_array_uint256_dyn(offset, end) -> array\n {\n if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n let _1 := calldataload(offset)\n let _2 := 0x20\n let _3 := array_allocation_size_array_uint256_dyn(_1)\n let memPtr := mload(64)\n finalize_allocation(memPtr, _3)\n let dst := memPtr\n mstore(memPtr, _1)\n dst := add(memPtr, _2)\n let srcEnd := add(add(offset, shl(5, _1)), _2)\n if gt(srcEnd, end) { revert(0, 0) }\n let src := add(offset, _2)\n for { } lt(src, srcEnd) { src := add(src, _2) }\n {\n mstore(dst, calldataload(src))\n dst := add(dst, _2)\n }\n array := memPtr\n }\n function abi_decode_bytes(offset, end) -> array\n {\n if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n let _1 := calldataload(offset)\n if gt(_1, 0xffffffffffffffff) { panic_error_0x41() }\n let memPtr := mload(64)\n finalize_allocation(memPtr, add(and(add(_1, 0x1f), not(31)), 0x20))\n mstore(memPtr, _1)\n if gt(add(add(offset, _1), 0x20), end) { revert(0, 0) }\n calldatacopy(add(memPtr, 0x20), add(offset, 0x20), _1)\n mstore(add(add(memPtr, _1), 0x20), 0)\n array := memPtr\n }\n function abi_decode_tuple_t_addresst_addresst_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptrt_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4\n {\n if slt(sub(dataEnd, headStart), 160) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := abi_decode_address(add(headStart, 32))\n let offset := calldataload(add(headStart, 64))\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n value2 := abi_decode_array_uint256_dyn(add(headStart, offset), dataEnd)\n let offset_1 := calldataload(add(headStart, 96))\n if gt(offset_1, _1) { revert(0, 0) }\n value3 := abi_decode_array_uint256_dyn(add(headStart, offset_1), dataEnd)\n let offset_2 := calldataload(add(headStart, 128))\n if gt(offset_2, _1) { revert(0, 0) }\n value4 := abi_decode_bytes(add(headStart, offset_2), dataEnd)\n }\n function abi_decode_tuple_t_array$_t_address_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptr(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n let offset := calldataload(headStart)\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n let _2 := add(headStart, offset)\n if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n let _3 := calldataload(_2)\n let _4 := 0x20\n let _5 := array_allocation_size_array_uint256_dyn(_3)\n let memPtr := mload(64)\n finalize_allocation(memPtr, _5)\n let dst := memPtr\n mstore(memPtr, _3)\n dst := add(memPtr, _4)\n let srcEnd := add(add(_2, shl(5, _3)), _4)\n if gt(srcEnd, dataEnd) { revert(0, 0) }\n let src := add(_2, _4)\n for { } lt(src, srcEnd) { src := add(src, _4) }\n {\n mstore(dst, abi_decode_address(src))\n dst := add(dst, _4)\n }\n value0 := memPtr\n let offset_1 := calldataload(add(headStart, _4))\n if gt(offset_1, _1) { revert(0, 0) }\n value1 := abi_decode_array_uint256_dyn(add(headStart, offset_1), dataEnd)\n }\n function abi_encode_array_uint256_dyn(value, pos) -> end\n {\n let length := mload(value)\n mstore(pos, length)\n let _1 := 0x20\n pos := add(pos, _1)\n let srcPtr := add(value, _1)\n let i := 0\n for { } lt(i, length) { i := add(i, 1) }\n {\n mstore(pos, mload(srcPtr))\n pos := add(pos, _1)\n srcPtr := add(srcPtr, _1)\n }\n end := pos\n }\n function abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n mstore(headStart, 32)\n tail := abi_encode_array_uint256_dyn(value0, add(headStart, 32))\n }\n function abi_decode_tuple_t_addresst_bool(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n let value := calldataload(add(headStart, 32))\n if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n value1 := value\n }\n function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := abi_decode_address(add(headStart, 32))\n }\n function abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4\n {\n if slt(sub(dataEnd, headStart), 160) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := abi_decode_address(add(headStart, 32))\n value2 := calldataload(add(headStart, 64))\n value3 := calldataload(add(headStart, 96))\n let offset := calldataload(add(headStart, 128))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n value4 := abi_decode_bytes(add(headStart, offset), dataEnd)\n }\n function abi_encode_tuple_t_stringliteral_415a1b99e1fd4a18cf87c08995f5a9130182e8d76e9c17c497bfebaaef9265ad__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 42)\n mstore(add(headStart, 64), \"ERC1155: address zero is not a v\")\n mstore(add(headStart, 96), \"alid owner\")\n tail := add(headStart, 128)\n }\n function extract_byte_array_length(data) -> length\n {\n length := shr(1, data)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n if eq(outOfPlaceEncoding, lt(length, 32))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n }\n function abi_encode_tuple_t_stringliteral_47c72b42072ed6c647dec3a0a5c88bec44d3e901c64659bff94ecce0a0323156__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 46)\n mstore(add(headStart, 64), \"ERC1155: caller is not token own\")\n mstore(add(headStart, 96), \"er or approved\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_e155f5d69798c6205436a388a4f3a5fd42f54147b40f4d63a2c8071ff8a9fee5__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 41)\n mstore(add(headStart, 64), \"ERC1155: accounts and ids length\")\n mstore(add(headStart, 96), \" mismatch\")\n tail := add(headStart, 128)\n }\n function panic_error_0x32()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n function panic_error_0x11()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n function increment_t_uint256(value) -> ret\n {\n if eq(value, not(0)) { panic_error_0x11() }\n ret := add(value, 1)\n }\n function abi_encode_tuple_t_stringliteral_e909e0c9a8f96b4f9af03b716811ece20beb070be416893ed1d50619b5930807__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 40)\n mstore(add(headStart, 64), \"ERC1155: ids and amounts length \")\n mstore(add(headStart, 96), \"mismatch\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_6faf1c67f278b07c6771dcf4c315a89c21c0eaed11d9ab3d51774da1cfef545d__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 37)\n mstore(add(headStart, 64), \"ERC1155: transfer to the zero ad\")\n mstore(add(headStart, 96), \"dress\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_8ac7e9556b567c1c94bb4daaa3c3a65be5ac686579615210cb910fb8cb8d65bf__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 42)\n mstore(add(headStart, 64), \"ERC1155: insufficient balance fo\")\n mstore(add(headStart, 96), \"r transfer\")\n tail := add(headStart, 128)\n }\n function checked_add_t_uint256(x, y) -> sum\n {\n sum := add(x, y)\n if gt(x, sum) { panic_error_0x11() }\n }\n function abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n {\n mstore(headStart, 64)\n let tail_1 := abi_encode_array_uint256_dyn(value0, add(headStart, 64))\n mstore(add(headStart, 32), sub(tail_1, headStart))\n tail := abi_encode_array_uint256_dyn(value1, tail_1)\n }\n function abi_encode_tuple_t_stringliteral_df9806c6dc743de602e49918a67b580590d69ab768bdb59f977c0a884a91a7c2__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 41)\n mstore(add(headStart, 64), \"ERC1155: setting approval status\")\n mstore(add(headStart, 96), \" for self\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n mstore(headStart, value0)\n mstore(add(headStart, 32), value1)\n }\n function abi_encode_tuple_t_address_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr_t_bytes_memory_ptr__to_t_address_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr_t_bytes_memory_ptr__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n {\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n mstore(add(headStart, 64), 160)\n let tail_1 := abi_encode_array_uint256_dyn(value2, add(headStart, 160))\n mstore(add(headStart, 96), sub(tail_1, headStart))\n let tail_2 := abi_encode_array_uint256_dyn(value3, tail_1)\n mstore(add(headStart, 128), sub(tail_2, headStart))\n tail := abi_encode_string(value4, tail_2)\n }\n function abi_decode_tuple_t_bytes4_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := mload(headStart)\n validator_revert_bytes4(value)\n value0 := value\n }\n function return_data_selector() -> sig\n {\n if gt(returndatasize(), 3)\n {\n returndatacopy(0, 0, 4)\n sig := shr(224, mload(0))\n }\n }\n function try_decode_error_message() -> ret\n {\n if lt(returndatasize(), 0x44) { leave }\n let data := mload(64)\n let _1 := not(3)\n returndatacopy(data, 4, add(returndatasize(), _1))\n let offset := mload(data)\n let _2 := returndatasize()\n let _3 := 0xffffffffffffffff\n if or(gt(offset, _3), gt(add(offset, 0x24), _2)) { leave }\n let msg := add(data, offset)\n let length := mload(msg)\n if gt(length, _3) { leave }\n if gt(add(add(msg, length), 0x20), add(add(data, returndatasize()), _1)) { leave }\n finalize_allocation(data, add(add(offset, length), 0x20))\n ret := msg\n }\n function abi_encode_tuple_t_stringliteral_f591f7b75ffc499e05f8b34c3364b2eceff651378d9549db1d5d67c0d8255c5d__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 52)\n mstore(add(headStart, 64), \"ERC1155: transfer to non-ERC1155\")\n mstore(add(headStart, 96), \"Receiver implementer\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_0587cccad73a80a7f013db13c596f4febc1968dc77e1d3589d5e7a509a3d6503__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 40)\n mstore(add(headStart, 64), \"ERC1155: ERC1155Receiver rejecte\")\n mstore(add(headStart, 96), \"d tokens\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_address_t_address_t_uint256_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_uint256_t_bytes_memory_ptr__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n {\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n mstore(add(headStart, 64), value2)\n mstore(add(headStart, 96), value3)\n mstore(add(headStart, 128), 160)\n tail := abi_encode_string(value4, add(headStart, 160))\n }\n}","id":92,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100875760003560e01c80634e1273f41161005b5780634e1273f41461010a578063a22cb4651461012a578063e985e9c51461013d578063f242432a1461017957600080fd5b8062fdd58e1461008c57806301ffc9a7146100b25780630e89341c146100d55780632eb2c2d6146100f5575b600080fd5b61009f61009a366004610dab565b61018c565b6040519081526020015b60405180910390f35b6100c56100c0366004610dee565b610238565b60405190151581526020016100a9565b6100e86100e3366004610e12565b610288565b6040516100a99190610e71565b610108610103366004610fd0565b61031c565b005b61011d61011836600461107a565b6103af565b6040516100a99190611180565b610108610138366004611193565b6104ed565b6100c561014b3660046111cf565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205460ff1690565b610108610187366004611202565b6104fc565b60006001600160a01b03831661020f5760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201527f616c6964206f776e65720000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b506000818152602081815260408083206001600160a01b03861684529091529020545b92915050565b60006001600160e01b03198216636cdb3d1360e11b148061026957506001600160e01b031982166303a24d0760e21b145b8061023257506301ffc9a760e01b6001600160e01b0319831614610232565b60606002805461029790611267565b80601f01602080910402602001604051908101604052809291908181526020018280546102c390611267565b80156103105780601f106102e557610100808354040283529160200191610310565b820191906000526020600020905b8154815290600101906020018083116102f357829003601f168201915b50505050509050919050565b6001600160a01b0385163314806103385750610338853361014b565b61039b5760405162461bcd60e51b815260206004820152602e60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201526d195c881bdc88185c1c1c9bdd995960921b6064820152608401610206565b6103a88585858585610588565b5050505050565b606081518351146104285760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e67746860448201527f206d69736d6174636800000000000000000000000000000000000000000000006064820152608401610206565b6000835167ffffffffffffffff81111561044457610444610e84565b60405190808252806020026020018201604052801561046d578160200160208202803683370190505b50905060005b84518110156104e5576104b8858281518110610491576104916112a1565b60200260200101518583815181106104ab576104ab6112a1565b602002602001015161018c565b8282815181106104ca576104ca6112a1565b60209081029190910101526104de816112cd565b9050610473565b509392505050565b6104f83383836107fb565b5050565b6001600160a01b0385163314806105185750610518853361014b565b61057b5760405162461bcd60e51b815260206004820152602e60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201526d195c881bdc88185c1c1c9bdd995960921b6064820152608401610206565b6103a885858585856108ef565b81518351146105ff5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060448201527f6d69736d617463680000000000000000000000000000000000000000000000006064820152608401610206565b6001600160a01b0384166106635760405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b6064820152608401610206565b3360005b845181101561078d576000858281518110610684576106846112a1565b6020026020010151905060008583815181106106a2576106a26112a1565b602090810291909101810151600084815280835260408082206001600160a01b038e1683529093529190912054909150818110156107355760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201526939103a3930b739b332b960b11b6064820152608401610206565b6000838152602081815260408083206001600160a01b038e8116855292528083208585039055908b168252812080548492906107729084906112e6565b9250508190555050505080610786906112cd565b9050610667565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb87876040516107dd9291906112f9565b60405180910390a46107f3818787878787610a9a565b505050505050565b816001600160a01b0316836001600160a01b0316036108825760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c2073746174757360448201527f20666f722073656c6600000000000000000000000000000000000000000000006064820152608401610206565b6001600160a01b03838116600081815260016020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0384166109535760405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b6064820152608401610206565b33600061095f85610c48565b9050600061096c85610c48565b90506000868152602081815260408083206001600160a01b038c168452909152902054858110156109f25760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201526939103a3930b739b332b960b11b6064820152608401610206565b6000878152602081815260408083206001600160a01b038d8116855292528083208985039055908a16825281208054889290610a2f9084906112e6565b909155505060408051888152602081018890526001600160a01b03808b16928c821692918816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4610a8f848a8a8a8a8a610c93565b505050505050505050565b6001600160a01b0384163b156107f35760405163bc197c8160e01b81526001600160a01b0385169063bc197c8190610ade9089908990889088908890600401611327565b6020604051808303816000875af1925050508015610b19575060408051601f3d908101601f19168201909252610b1691810190611385565b60015b610bce57610b256113a2565b806308c379a003610b5e5750610b396113be565b80610b445750610b60565b8060405162461bcd60e51b81526004016102069190610e71565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e2d4552433131353560448201527f526563656976657220696d706c656d656e7465720000000000000000000000006064820152608401610206565b6001600160e01b0319811663bc197c8160e01b14610c3f5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a656374656044820152676420746f6b656e7360c01b6064820152608401610206565b50505050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110610c8257610c826112a1565b602090810291909101015292915050565b6001600160a01b0384163b156107f35760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e6190610cd79089908990889088908890600401611448565b6020604051808303816000875af1925050508015610d12575060408051601f3d908101601f19168201909252610d0f91810190611385565b60015b610d1e57610b256113a2565b6001600160e01b0319811663f23a6e6160e01b14610c3f5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a656374656044820152676420746f6b656e7360c01b6064820152608401610206565b80356001600160a01b0381168114610da657600080fd5b919050565b60008060408385031215610dbe57600080fd5b610dc783610d8f565b946020939093013593505050565b6001600160e01b031981168114610deb57600080fd5b50565b600060208284031215610e0057600080fd5b8135610e0b81610dd5565b9392505050565b600060208284031215610e2457600080fd5b5035919050565b6000815180845260005b81811015610e5157602081850181015186830182015201610e35565b506000602082860101526020601f19601f83011685010191505092915050565b602081526000610e0b6020830184610e2b565b634e487b7160e01b600052604160045260246000fd5b601f8201601f1916810167ffffffffffffffff81118282101715610ec057610ec0610e84565b6040525050565b600067ffffffffffffffff821115610ee157610ee1610e84565b5060051b60200190565b600082601f830112610efc57600080fd5b81356020610f0982610ec7565b604051610f168282610e9a565b83815260059390931b8501820192828101915086841115610f3657600080fd5b8286015b84811015610f515780358352918301918301610f3a565b509695505050505050565b600082601f830112610f6d57600080fd5b813567ffffffffffffffff811115610f8757610f87610e84565b604051610f9e601f8301601f191660200182610e9a565b818152846020838601011115610fb357600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a08688031215610fe857600080fd5b610ff186610d8f565b9450610fff60208701610d8f565b9350604086013567ffffffffffffffff8082111561101c57600080fd5b61102889838a01610eeb565b9450606088013591508082111561103e57600080fd5b61104a89838a01610eeb565b9350608088013591508082111561106057600080fd5b5061106d88828901610f5c565b9150509295509295909350565b6000806040838503121561108d57600080fd5b823567ffffffffffffffff808211156110a557600080fd5b818501915085601f8301126110b957600080fd5b813560206110c682610ec7565b6040516110d38282610e9a565b83815260059390931b85018201928281019150898411156110f357600080fd5b948201945b838610156111185761110986610d8f565b825294820194908201906110f8565b9650508601359250508082111561112e57600080fd5b5061113b85828601610eeb565b9150509250929050565b600081518084526020808501945080840160005b8381101561117557815187529582019590820190600101611159565b509495945050505050565b602081526000610e0b6020830184611145565b600080604083850312156111a657600080fd5b6111af83610d8f565b9150602083013580151581146111c457600080fd5b809150509250929050565b600080604083850312156111e257600080fd5b6111eb83610d8f565b91506111f960208401610d8f565b90509250929050565b600080600080600060a0868803121561121a57600080fd5b61122386610d8f565b945061123160208701610d8f565b93506040860135925060608601359150608086013567ffffffffffffffff81111561125b57600080fd5b61106d88828901610f5c565b600181811c9082168061127b57607f821691505b60208210810361129b57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016112df576112df6112b7565b5060010190565b80820180821115610232576102326112b7565b60408152600061130c6040830185611145565b828103602084015261131e8185611145565b95945050505050565b60006001600160a01b03808816835280871660208401525060a0604083015261135360a0830186611145565b82810360608401526113658186611145565b905082810360808401526113798185610e2b565b98975050505050505050565b60006020828403121561139757600080fd5b8151610e0b81610dd5565b600060033d11156113bb5760046000803e5060005160e01c5b90565b600060443d10156113cc5790565b6040516003193d81016004833e81513d67ffffffffffffffff81602484011181841117156113fc57505050505090565b82850191508151818111156114145750505050505090565b843d870101602082850101111561142e5750505050505090565b61143d60208286010187610e9a565b509095945050505050565b60006001600160a01b03808816835280871660208401525084604083015283606083015260a0608083015261148060a0830184610e2b565b97965050505050505056fea164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x87 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x4E1273F4 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x4E1273F4 EQ PUSH2 0x10A JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x12A JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x13D JUMPI DUP1 PUSH4 0xF242432A EQ PUSH2 0x179 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH3 0xFDD58E EQ PUSH2 0x8C JUMPI DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xB2 JUMPI DUP1 PUSH4 0xE89341C EQ PUSH2 0xD5 JUMPI DUP1 PUSH4 0x2EB2C2D6 EQ PUSH2 0xF5 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9F PUSH2 0x9A CALLDATASIZE PUSH1 0x4 PUSH2 0xDAB JUMP JUMPDEST PUSH2 0x18C JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xC5 PUSH2 0xC0 CALLDATASIZE PUSH1 0x4 PUSH2 0xDEE JUMP JUMPDEST PUSH2 0x238 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xA9 JUMP JUMPDEST PUSH2 0xE8 PUSH2 0xE3 CALLDATASIZE PUSH1 0x4 PUSH2 0xE12 JUMP JUMPDEST PUSH2 0x288 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA9 SWAP2 SWAP1 PUSH2 0xE71 JUMP JUMPDEST PUSH2 0x108 PUSH2 0x103 CALLDATASIZE PUSH1 0x4 PUSH2 0xFD0 JUMP JUMPDEST PUSH2 0x31C JUMP JUMPDEST STOP JUMPDEST PUSH2 0x11D PUSH2 0x118 CALLDATASIZE PUSH1 0x4 PUSH2 0x107A JUMP JUMPDEST PUSH2 0x3AF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA9 SWAP2 SWAP1 PUSH2 0x1180 JUMP JUMPDEST PUSH2 0x108 PUSH2 0x138 CALLDATASIZE PUSH1 0x4 PUSH2 0x1193 JUMP JUMPDEST PUSH2 0x4ED JUMP JUMPDEST PUSH2 0xC5 PUSH2 0x14B CALLDATASIZE PUSH1 0x4 PUSH2 0x11CF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x108 PUSH2 0x187 CALLDATASIZE PUSH1 0x4 PUSH2 0x1202 JUMP JUMPDEST PUSH2 0x4FC JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x20F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A2061646472657373207A65726F206973206E6F7420612076 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x616C6964206F776E657200000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x6CDB3D13 PUSH1 0xE1 SHL EQ DUP1 PUSH2 0x269 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x3A24D07 PUSH1 0xE2 SHL EQ JUMPDEST DUP1 PUSH2 0x232 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ PUSH2 0x232 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x2 DUP1 SLOAD PUSH2 0x297 SWAP1 PUSH2 0x1267 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x2C3 SWAP1 PUSH2 0x1267 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x310 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x2E5 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x310 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x2F3 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND CALLER EQ DUP1 PUSH2 0x338 JUMPI POP PUSH2 0x338 DUP6 CALLER PUSH2 0x14B JUMP JUMPDEST PUSH2 0x39B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A2063616C6C6572206973206E6F7420746F6B656E206F776E PUSH1 0x44 DUP3 ADD MSTORE PUSH14 0x195C881BDC88185C1C1C9BDD9959 PUSH1 0x92 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x206 JUMP JUMPDEST PUSH2 0x3A8 DUP6 DUP6 DUP6 DUP6 DUP6 PUSH2 0x588 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 MLOAD DUP4 MLOAD EQ PUSH2 0x428 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A206163636F756E747320616E6420696473206C656E677468 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x206D69736D617463680000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x206 JUMP JUMPDEST PUSH1 0x0 DUP4 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x444 JUMPI PUSH2 0x444 PUSH2 0xE84 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x46D JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x4E5 JUMPI PUSH2 0x4B8 DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x491 JUMPI PUSH2 0x491 PUSH2 0x12A1 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x4AB JUMPI PUSH2 0x4AB PUSH2 0x12A1 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x18C JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x4CA JUMPI PUSH2 0x4CA PUSH2 0x12A1 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH2 0x4DE DUP2 PUSH2 0x12CD JUMP JUMPDEST SWAP1 POP PUSH2 0x473 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x4F8 CALLER DUP4 DUP4 PUSH2 0x7FB JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND CALLER EQ DUP1 PUSH2 0x518 JUMPI POP PUSH2 0x518 DUP6 CALLER PUSH2 0x14B JUMP JUMPDEST PUSH2 0x57B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A2063616C6C6572206973206E6F7420746F6B656E206F776E PUSH1 0x44 DUP3 ADD MSTORE PUSH14 0x195C881BDC88185C1C1C9BDD9959 PUSH1 0x92 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x206 JUMP JUMPDEST PUSH2 0x3A8 DUP6 DUP6 DUP6 DUP6 DUP6 PUSH2 0x8EF JUMP JUMPDEST DUP2 MLOAD DUP4 MLOAD EQ PUSH2 0x5FF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x28 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A2069647320616E6420616D6F756E7473206C656E67746820 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6D69736D61746368000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x206 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x663 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A207472616E7366657220746F20746865207A65726F206164 PUSH1 0x44 DUP3 ADD MSTORE PUSH5 0x6472657373 PUSH1 0xD8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x206 JUMP JUMPDEST CALLER PUSH1 0x0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x78D JUMPI PUSH1 0x0 DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x684 JUMPI PUSH2 0x684 PUSH2 0x12A1 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x6A2 JUMPI PUSH2 0x6A2 PUSH2 0x12A1 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD PUSH1 0x0 DUP5 DUP2 MSTORE DUP1 DUP4 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP15 AND DUP4 MSTORE SWAP1 SWAP4 MSTORE SWAP2 SWAP1 SWAP2 KECCAK256 SLOAD SWAP1 SWAP2 POP DUP2 DUP2 LT ISZERO PUSH2 0x735 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A20696E73756666696369656E742062616C616E636520666F PUSH1 0x44 DUP3 ADD MSTORE PUSH10 0x39103A3930B739B332B9 PUSH1 0xB1 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x206 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP15 DUP2 AND DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 DUP6 DUP6 SUB SWAP1 SSTORE SWAP1 DUP12 AND DUP3 MSTORE DUP2 KECCAK256 DUP1 SLOAD DUP5 SWAP3 SWAP1 PUSH2 0x772 SWAP1 DUP5 SWAP1 PUSH2 0x12E6 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP POP POP POP DUP1 PUSH2 0x786 SWAP1 PUSH2 0x12CD JUMP JUMPDEST SWAP1 POP PUSH2 0x667 JUMP JUMPDEST POP DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB DUP8 DUP8 PUSH1 0x40 MLOAD PUSH2 0x7DD SWAP3 SWAP2 SWAP1 PUSH2 0x12F9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x7F3 DUP2 DUP8 DUP8 DUP8 DUP8 DUP8 PUSH2 0xA9A JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x882 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A2073657474696E6720617070726F76616C20737461747573 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x20666F722073656C660000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x206 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND DUP7 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP2 MLOAD SWAP2 DUP3 MSTORE PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x953 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A207472616E7366657220746F20746865207A65726F206164 PUSH1 0x44 DUP3 ADD MSTORE PUSH5 0x6472657373 PUSH1 0xD8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x206 JUMP JUMPDEST CALLER PUSH1 0x0 PUSH2 0x95F DUP6 PUSH2 0xC48 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x96C DUP6 PUSH2 0xC48 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD DUP6 DUP2 LT ISZERO PUSH2 0x9F2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A20696E73756666696369656E742062616C616E636520666F PUSH1 0x44 DUP3 ADD MSTORE PUSH10 0x39103A3930B739B332B9 PUSH1 0xB1 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x206 JUMP JUMPDEST PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP14 DUP2 AND DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 DUP10 DUP6 SUB SWAP1 SSTORE SWAP1 DUP11 AND DUP3 MSTORE DUP2 KECCAK256 DUP1 SLOAD DUP9 SWAP3 SWAP1 PUSH2 0xA2F SWAP1 DUP5 SWAP1 PUSH2 0x12E6 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x40 DUP1 MLOAD DUP9 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP9 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP12 AND SWAP3 DUP13 DUP3 AND SWAP3 SWAP2 DUP9 AND SWAP2 PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0xA8F DUP5 DUP11 DUP11 DUP11 DUP11 DUP11 PUSH2 0xC93 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO PUSH2 0x7F3 JUMPI PUSH1 0x40 MLOAD PUSH4 0xBC197C81 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0xBC197C81 SWAP1 PUSH2 0xADE SWAP1 DUP10 SWAP1 DUP10 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x1327 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0xB19 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0xB16 SWAP2 DUP2 ADD SWAP1 PUSH2 0x1385 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0xBCE JUMPI PUSH2 0xB25 PUSH2 0x13A2 JUMP JUMPDEST DUP1 PUSH4 0x8C379A0 SUB PUSH2 0xB5E JUMPI POP PUSH2 0xB39 PUSH2 0x13BE JUMP JUMPDEST DUP1 PUSH2 0xB44 JUMPI POP PUSH2 0xB60 JUMP JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x206 SWAP2 SWAP1 PUSH2 0xE71 JUMP JUMPDEST POP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x34 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A207472616E7366657220746F206E6F6E2D45524331313535 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x526563656976657220696D706C656D656E746572000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x206 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH4 0xBC197C81 PUSH1 0xE0 SHL EQ PUSH2 0xC3F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x28 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A204552433131353552656365697665722072656A65637465 PUSH1 0x44 DUP3 ADD MSTORE PUSH8 0x6420746F6B656E73 PUSH1 0xC0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x206 JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 PUSH1 0x0 SWAP2 SWAP1 PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP3 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xC82 JUMPI PUSH2 0xC82 PUSH2 0x12A1 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO PUSH2 0x7F3 JUMPI PUSH1 0x40 MLOAD PUSH4 0xF23A6E61 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0xF23A6E61 SWAP1 PUSH2 0xCD7 SWAP1 DUP10 SWAP1 DUP10 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x1448 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0xD12 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0xD0F SWAP2 DUP2 ADD SWAP1 PUSH2 0x1385 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0xD1E JUMPI PUSH2 0xB25 PUSH2 0x13A2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH4 0xF23A6E61 PUSH1 0xE0 SHL EQ PUSH2 0xC3F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x28 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A204552433131353552656365697665722072656A65637465 PUSH1 0x44 DUP3 ADD MSTORE PUSH8 0x6420746F6B656E73 PUSH1 0xC0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x206 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xDA6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xDBE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xDC7 DUP4 PUSH2 0xD8F JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0xDEB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xE00 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xE0B DUP2 PUSH2 0xDD5 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xE24 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xE51 JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD DUP3 ADD MSTORE ADD PUSH2 0xE35 JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x20 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x20 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0xE0B PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0xE2B JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0xEC0 JUMPI PUSH2 0xEC0 PUSH2 0xE84 JUMP JUMPDEST PUSH1 0x40 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0xEE1 JUMPI PUSH2 0xEE1 PUSH2 0xE84 JUMP JUMPDEST POP PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xEFC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x20 PUSH2 0xF09 DUP3 PUSH2 0xEC7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xF16 DUP3 DUP3 PUSH2 0xE9A JUMP JUMPDEST DUP4 DUP2 MSTORE PUSH1 0x5 SWAP4 SWAP1 SWAP4 SHL DUP6 ADD DUP3 ADD SWAP3 DUP3 DUP2 ADD SWAP2 POP DUP7 DUP5 GT ISZERO PUSH2 0xF36 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 DUP7 ADD JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0xF51 JUMPI DUP1 CALLDATALOAD DUP4 MSTORE SWAP2 DUP4 ADD SWAP2 DUP4 ADD PUSH2 0xF3A JUMP JUMPDEST POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xF6D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xF87 JUMPI PUSH2 0xF87 PUSH2 0xE84 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xF9E PUSH1 0x1F DUP4 ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 PUSH2 0xE9A JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 PUSH1 0x20 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0xFB3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP6 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 SWAP2 DUP2 ADD PUSH1 0x20 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0xFE8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xFF1 DUP7 PUSH2 0xD8F JUMP JUMPDEST SWAP5 POP PUSH2 0xFFF PUSH1 0x20 DUP8 ADD PUSH2 0xD8F JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x101C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1028 DUP10 DUP4 DUP11 ADD PUSH2 0xEEB JUMP JUMPDEST SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x103E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x104A DUP10 DUP4 DUP11 ADD PUSH2 0xEEB JUMP JUMPDEST SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x1060 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x106D DUP9 DUP3 DUP10 ADD PUSH2 0xF5C JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x108D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x10A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x10B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x20 PUSH2 0x10C6 DUP3 PUSH2 0xEC7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x10D3 DUP3 DUP3 PUSH2 0xE9A JUMP JUMPDEST DUP4 DUP2 MSTORE PUSH1 0x5 SWAP4 SWAP1 SWAP4 SHL DUP6 ADD DUP3 ADD SWAP3 DUP3 DUP2 ADD SWAP2 POP DUP10 DUP5 GT ISZERO PUSH2 0x10F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP5 DUP3 ADD SWAP5 JUMPDEST DUP4 DUP7 LT ISZERO PUSH2 0x1118 JUMPI PUSH2 0x1109 DUP7 PUSH2 0xD8F JUMP JUMPDEST DUP3 MSTORE SWAP5 DUP3 ADD SWAP5 SWAP1 DUP3 ADD SWAP1 PUSH2 0x10F8 JUMP JUMPDEST SWAP7 POP POP DUP7 ADD CALLDATALOAD SWAP3 POP POP DUP1 DUP3 GT ISZERO PUSH2 0x112E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x113B DUP6 DUP3 DUP7 ADD PUSH2 0xEEB JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP1 DUP5 ADD PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1175 JUMPI DUP2 MLOAD DUP8 MSTORE SWAP6 DUP3 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x1159 JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0xE0B PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x1145 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x11A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x11AF DUP4 PUSH2 0xD8F JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x11C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x11E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x11EB DUP4 PUSH2 0xD8F JUMP JUMPDEST SWAP2 POP PUSH2 0x11F9 PUSH1 0x20 DUP5 ADD PUSH2 0xD8F JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x121A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1223 DUP7 PUSH2 0xD8F JUMP JUMPDEST SWAP5 POP PUSH2 0x1231 PUSH1 0x20 DUP8 ADD PUSH2 0xD8F JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD SWAP2 POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x125B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x106D DUP9 DUP3 DUP10 ADD PUSH2 0xF5C JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x127B JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x129B JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 ADD PUSH2 0x12DF JUMPI PUSH2 0x12DF PUSH2 0x12B7 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x232 JUMPI PUSH2 0x232 PUSH2 0x12B7 JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 PUSH2 0x130C PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x1145 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x131E DUP2 DUP6 PUSH2 0x1145 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND DUP4 MSTORE DUP1 DUP8 AND PUSH1 0x20 DUP5 ADD MSTORE POP PUSH1 0xA0 PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x1353 PUSH1 0xA0 DUP4 ADD DUP7 PUSH2 0x1145 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x60 DUP5 ADD MSTORE PUSH2 0x1365 DUP2 DUP7 PUSH2 0x1145 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 SUB PUSH1 0x80 DUP5 ADD MSTORE PUSH2 0x1379 DUP2 DUP6 PUSH2 0xE2B JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1397 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xE0B DUP2 PUSH2 0xDD5 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x3 RETURNDATASIZE GT ISZERO PUSH2 0x13BB JUMPI PUSH1 0x4 PUSH1 0x0 DUP1 RETURNDATACOPY POP PUSH1 0x0 MLOAD PUSH1 0xE0 SHR JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x44 RETURNDATASIZE LT ISZERO PUSH2 0x13CC JUMPI SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x3 NOT RETURNDATASIZE DUP2 ADD PUSH1 0x4 DUP4 RETURNDATACOPY DUP2 MLOAD RETURNDATASIZE PUSH8 0xFFFFFFFFFFFFFFFF DUP2 PUSH1 0x24 DUP5 ADD GT DUP2 DUP5 GT OR ISZERO PUSH2 0x13FC JUMPI POP POP POP POP POP SWAP1 JUMP JUMPDEST DUP3 DUP6 ADD SWAP2 POP DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x1414 JUMPI POP POP POP POP POP POP SWAP1 JUMP JUMPDEST DUP5 RETURNDATASIZE DUP8 ADD ADD PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x142E JUMPI POP POP POP POP POP POP SWAP1 JUMP JUMPDEST PUSH2 0x143D PUSH1 0x20 DUP3 DUP7 ADD ADD DUP8 PUSH2 0xE9A JUMP JUMPDEST POP SWAP1 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND DUP4 MSTORE DUP1 DUP8 AND PUSH1 0x20 DUP5 ADD MSTORE POP DUP5 PUSH1 0x40 DUP4 ADD MSTORE DUP4 PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0xA0 PUSH1 0x80 DUP4 ADD MSTORE PUSH2 0x1480 PUSH1 0xA0 DUP4 ADD DUP5 PUSH2 0xE2B JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"570:16539:22:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2185:227;;;;;;:::i;:::-;;:::i;:::-;;;620:25:92;;;608:2;593:18;2185:227:22;;;;;;;;1236:305;;;;;;:::i;:::-;;:::i;:::-;;;1207:14:92;;1200:22;1182:41;;1170:2;1155:18;1236:305:22;1042:187:92;1940:103:22;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;4042:426::-;;;;;;:::i;:::-;;:::i;:::-;;2569:486;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;3123:153::-;;;;;;:::i;:::-;;:::i;3343:166::-;;;;;;:::i;:::-;-1:-1:-1;;;;;3465:27:22;;;3442:4;3465:27;;;:18;:27;;;;;;;;:37;;;;;;;;;;;;;;;3343:166;3576:394;;;;;;:::i;:::-;;:::i;2185:227::-;2271:7;-1:-1:-1;;;;;2298:21:22;;2290:76;;;;-1:-1:-1;;;2290:76:22;;8232:2:92;2290:76:22;;;8214:21:92;8271:2;8251:18;;;8244:30;8310:34;8290:18;;;8283:62;8381:12;8361:18;;;8354:40;8411:19;;2290:76:22;;;;;;;;;-1:-1:-1;2383:9:22;:13;;;;;;;;;;;-1:-1:-1;;;;;2383:22:22;;;;;;;;;;2185:227;;;;;:::o;1236:305::-;1338:4;-1:-1:-1;;;;;;1373:41:22;;-1:-1:-1;;;1373:41:22;;:109;;-1:-1:-1;;;;;;;1430:52:22;;-1:-1:-1;;;1430:52:22;1373:109;:161;;;-1:-1:-1;;;;;;;;;;937:40:38;;;1498:36:22;829:155:38;1940:103:22;2000:13;2032:4;2025:11;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1940:103;;;:::o;4042:426::-;-1:-1:-1;;;;;4267:20:22;;734:10:34;4267:20:22;;:60;;-1:-1:-1;4291:36:22;4308:4;734:10:34;3343:166:22;:::i;4291:36::-;4246:153;;;;-1:-1:-1;;;4246:153:22;;9028:2:92;4246:153:22;;;9010:21:92;9067:2;9047:18;;;9040:30;9106:34;9086:18;;;9079:62;-1:-1:-1;;;9157:18:92;;;9150:44;9211:19;;4246:153:22;8826:410:92;4246:153:22;4409:52;4432:4;4438:2;4442:3;4447:7;4456:4;4409:22;:52::i;:::-;4042:426;;;;;:::o;2569:486::-;2702:16;2757:3;:10;2738:8;:15;:29;2730:83;;;;-1:-1:-1;;;2730:83:22;;9443:2:92;2730:83:22;;;9425:21:92;9482:2;9462:18;;;9455:30;9521:34;9501:18;;;9494:62;9592:11;9572:18;;;9565:39;9621:19;;2730:83:22;9241:405:92;2730:83:22;2824:30;2871:8;:15;2857:30;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2857:30:22;;2824:63;;2903:9;2898:120;2922:8;:15;2918:1;:19;2898:120;;;2977:30;2987:8;2996:1;2987:11;;;;;;;;:::i;:::-;;;;;;;3000:3;3004:1;3000:6;;;;;;;;:::i;:::-;;;;;;;2977:9;:30::i;:::-;2958:13;2972:1;2958:16;;;;;;;;:::i;:::-;;;;;;;;;;:49;2939:3;;;:::i;:::-;;;2898:120;;;-1:-1:-1;3035:13:22;2569:486;-1:-1:-1;;;2569:486:22:o;3123:153::-;3217:52;734:10:34;3250:8:22;3260;3217:18;:52::i;:::-;3123:153;;:::o;3576:394::-;-1:-1:-1;;;;;3776:20:22;;734:10:34;3776:20:22;;:60;;-1:-1:-1;3800:36:22;3817:4;734:10:34;3343:166:22;:::i;3800:36::-;3755:153;;;;-1:-1:-1;;;3755:153:22;;9028:2:92;3755:153:22;;;9010:21:92;9067:2;9047:18;;;9040:30;9106:34;9086:18;;;9079:62;-1:-1:-1;;;9157:18:92;;;9150:44;9211:19;;3755:153:22;8826:410:92;3755:153:22;3918:45;3936:4;3942:2;3946;3950:6;3958:4;3918:17;:45::i;6211:1115::-;6431:7;:14;6417:3;:10;:28;6409:81;;;;-1:-1:-1;;;6409:81:22;;10257:2:92;6409:81:22;;;10239:21:92;10296:2;10276:18;;;10269:30;10335:34;10315:18;;;10308:62;10406:10;10386:18;;;10379:38;10434:19;;6409:81:22;10055:404:92;6409:81:22;-1:-1:-1;;;;;6508:16:22;;6500:66;;;;-1:-1:-1;;;6500:66:22;;10666:2:92;6500:66:22;;;10648:21:92;10705:2;10685:18;;;10678:30;10744:34;10724:18;;;10717:62;-1:-1:-1;;;10795:18:92;;;10788:35;10840:19;;6500:66:22;10464:401:92;6500:66:22;734:10:34;6577:16:22;6690:411;6714:3;:10;6710:1;:14;6690:411;;;6745:10;6758:3;6762:1;6758:6;;;;;;;;:::i;:::-;;;;;;;6745:19;;6778:14;6795:7;6803:1;6795:10;;;;;;;;:::i;:::-;;;;;;;;;;;;6820:19;6842:13;;;;;;;;;;-1:-1:-1;;;;;6842:19:22;;;;;;;;;;;;6795:10;;-1:-1:-1;6883:21:22;;;;6875:76;;;;-1:-1:-1;;;6875:76:22;;11072:2:92;6875:76:22;;;11054:21:92;11111:2;11091:18;;;11084:30;11150:34;11130:18;;;11123:62;-1:-1:-1;;;11201:18:92;;;11194:40;11251:19;;6875:76:22;10870:406:92;6875:76:22;6993:9;:13;;;;;;;;;;;-1:-1:-1;;;;;6993:19:22;;;;;;;;;;7015:20;;;6993:42;;7063:17;;;;;;;:27;;7015:20;;6993:9;7063:27;;7015:20;;7063:27;:::i;:::-;;;;;;;;6731:370;;;6726:3;;;;:::i;:::-;;;6690:411;;;;7146:2;-1:-1:-1;;;;;7116:47:22;7140:4;-1:-1:-1;;;;;7116:47:22;7130:8;-1:-1:-1;;;;;7116:47:22;;7150:3;7155:7;7116:47;;;;;;;:::i;:::-;;;;;;;;7244:75;7280:8;7290:4;7296:2;7300:3;7305:7;7314:4;7244:35;:75::i;:::-;6399:927;6211:1115;;;;;:::o;12790:293::-;12910:8;-1:-1:-1;;;;;12901:17:22;:5;-1:-1:-1;;;;;12901:17:22;;12893:71;;;;-1:-1:-1;;;12893:71:22;;12083:2:92;12893:71:22;;;12065:21:92;12122:2;12102:18;;;12095:30;12161:34;12141:18;;;12134:62;12232:11;12212:18;;;12205:39;12261:19;;12893:71:22;11881:405:92;12893:71:22;-1:-1:-1;;;;;12974:25:22;;;;;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;:46;;-1:-1:-1;;12974:46:22;;;;;;;;;;13035:41;;1182::92;;;13035::22;;1155:18:92;13035:41:22;;;;;;;12790:293;;;:::o;4918:947::-;-1:-1:-1;;;;;5099:16:22;;5091:66;;;;-1:-1:-1;;;5091:66:22;;10666:2:92;5091:66:22;;;10648:21:92;10705:2;10685:18;;;10678:30;10744:34;10724:18;;;10717:62;-1:-1:-1;;;10795:18:92;;;10788:35;10840:19;;5091:66:22;10464:401:92;5091:66:22;734:10:34;5168:16:22;5232:21;5250:2;5232:17;:21::i;:::-;5209:44;;5263:24;5290:25;5308:6;5290:17;:25::i;:::-;5263:52;;5397:19;5419:13;;;;;;;;;;;-1:-1:-1;;;;;5419:19:22;;;;;;;;;;5456:21;;;;5448:76;;;;-1:-1:-1;;;5448:76:22;;11072:2:92;5448:76:22;;;11054:21:92;11111:2;11091:18;;;11084:30;11150:34;11130:18;;;11123:62;-1:-1:-1;;;11201:18:92;;;11194:40;11251:19;;5448:76:22;10870:406:92;5448:76:22;5558:9;:13;;;;;;;;;;;-1:-1:-1;;;;;5558:19:22;;;;;;;;;;5580:20;;;5558:42;;5620:17;;;;;;;:27;;5580:20;;5558:9;5620:27;;5580:20;;5620:27;:::i;:::-;;;;-1:-1:-1;;5663:46:22;;;12465:25:92;;;12521:2;12506:18;;12499:34;;;-1:-1:-1;;;;;5663:46:22;;;;;;;;;;;;;;12438:18:92;5663:46:22;;;;;;;5790:68;5821:8;5831:4;5837:2;5841;5845:6;5853:4;5790:30;:68::i;:::-;5081:784;;;;4918:947;;;;;:::o;16116:792::-;-1:-1:-1;;;;;16348:13:22;;1702:19:33;:23;16344:558:22;;16383:79;;-1:-1:-1;;;16383:79:22;;-1:-1:-1;;;;;16383:43:22;;;;;:79;;16427:8;;16437:4;;16443:3;;16448:7;;16457:4;;16383:79;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16383:79:22;;;;;;;;-1:-1:-1;;16383:79:22;;;;;;;;;;;;:::i;:::-;;;16379:513;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;16768:6;16761:14;;-1:-1:-1;;;16761:14:22;;;;;;;;:::i;16379:513::-;;;16815:62;;-1:-1:-1;;;16815:62:22;;14715:2:92;16815:62:22;;;14697:21:92;14754:2;14734:18;;;14727:30;14793:34;14773:18;;;14766:62;14864:22;14844:18;;;14837:50;14904:19;;16815:62:22;14513:416:92;16379:513:22;-1:-1:-1;;;;;;16541:60:22;;-1:-1:-1;;;16541:60:22;16537:157;;16625:50;;-1:-1:-1;;;16625:50:22;;15136:2:92;16625:50:22;;;15118:21:92;15175:2;15155:18;;;15148:30;15214:34;15194:18;;;15187:62;-1:-1:-1;;;15265:18:92;;;15258:38;15313:19;;16625:50:22;14934:404:92;16537:157:22;16463:245;16116:792;;;;;;:::o;16914:193::-;17033:16;;;17047:1;17033:16;;;;;;;;;16980;;17008:22;;17033:16;;;;;;;;;;;;-1:-1:-1;17033:16:22;17008:41;;17070:7;17059:5;17065:1;17059:8;;;;;;;;:::i;:::-;;;;;;;;;;:18;17095:5;16914:193;-1:-1:-1;;16914:193:22:o;15385:725::-;-1:-1:-1;;;;;15592:13:22;;1702:19:33;:23;15588:516:22;;15627:72;;-1:-1:-1;;;15627:72:22;;-1:-1:-1;;;;;15627:38:22;;;;;:72;;15666:8;;15676:4;;15682:2;;15686:6;;15694:4;;15627:72;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15627:72:22;;;;;;;;-1:-1:-1;;15627:72:22;;;;;;;;;;;;:::i;:::-;;;15623:471;;;;:::i;:::-;-1:-1:-1;;;;;;15748:55:22;;-1:-1:-1;;;15748:55:22;15744:152;;15827:50;;-1:-1:-1;;;15827:50:22;;15136:2:92;15827:50:22;;;15118:21:92;15175:2;15155:18;;;15148:30;15214:34;15194:18;;;15187:62;-1:-1:-1;;;15265:18:92;;;15258:38;15313:19;;15827:50:22;14934:404:92;14:196;82:20;;-1:-1:-1;;;;;131:54:92;;121:65;;111:93;;200:1;197;190:12;111:93;14:196;;;:::o;215:254::-;283:6;291;344:2;332:9;323:7;319:23;315:32;312:52;;;360:1;357;350:12;312:52;383:29;402:9;383:29;:::i;:::-;373:39;459:2;444:18;;;;431:32;;-1:-1:-1;;;215:254:92:o;656:131::-;-1:-1:-1;;;;;;730:32:92;;720:43;;710:71;;777:1;774;767:12;710:71;656:131;:::o;792:245::-;850:6;903:2;891:9;882:7;878:23;874:32;871:52;;;919:1;916;909:12;871:52;958:9;945:23;977:30;1001:5;977:30;:::i;:::-;1026:5;792:245;-1:-1:-1;;;792:245:92:o;1234:180::-;1293:6;1346:2;1334:9;1325:7;1321:23;1317:32;1314:52;;;1362:1;1359;1352:12;1314:52;-1:-1:-1;1385:23:92;;1234:180;-1:-1:-1;1234:180:92:o;1419:423::-;1461:3;1499:5;1493:12;1526:6;1521:3;1514:19;1551:1;1561:162;1575:6;1572:1;1569:13;1561:162;;;1637:4;1693:13;;;1689:22;;1683:29;1665:11;;;1661:20;;1654:59;1590:12;1561:162;;;1565:3;1768:1;1761:4;1752:6;1747:3;1743:16;1739:27;1732:38;1831:4;1824:2;1820:7;1815:2;1807:6;1803:15;1799:29;1794:3;1790:39;1786:50;1779:57;;;1419:423;;;;:::o;1847:220::-;1996:2;1985:9;1978:21;1959:4;2016:45;2057:2;2046:9;2042:18;2034:6;2016:45;:::i;2072:127::-;2133:10;2128:3;2124:20;2121:1;2114:31;2164:4;2161:1;2154:15;2188:4;2185:1;2178:15;2204:249;2314:2;2295:13;;-1:-1:-1;;2291:27:92;2279:40;;2349:18;2334:34;;2370:22;;;2331:62;2328:88;;;2396:18;;:::i;:::-;2432:2;2425:22;-1:-1:-1;;2204:249:92:o;2458:183::-;2518:4;2551:18;2543:6;2540:30;2537:56;;;2573:18;;:::i;:::-;-1:-1:-1;2618:1:92;2614:14;2630:4;2610:25;;2458:183::o;2646:724::-;2700:5;2753:3;2746:4;2738:6;2734:17;2730:27;2720:55;;2771:1;2768;2761:12;2720:55;2807:6;2794:20;2833:4;2856:43;2896:2;2856:43;:::i;:::-;2928:2;2922:9;2940:31;2968:2;2960:6;2940:31;:::i;:::-;3006:18;;;3098:1;3094:10;;;;3082:23;;3078:32;;;3040:15;;;;-1:-1:-1;3122:15:92;;;3119:35;;;3150:1;3147;3140:12;3119:35;3186:2;3178:6;3174:15;3198:142;3214:6;3209:3;3206:15;3198:142;;;3280:17;;3268:30;;3318:12;;;;3231;;3198:142;;;-1:-1:-1;3358:6:92;2646:724;-1:-1:-1;;;;;;2646:724:92:o;3375:555::-;3417:5;3470:3;3463:4;3455:6;3451:17;3447:27;3437:55;;3488:1;3485;3478:12;3437:55;3524:6;3511:20;3550:18;3546:2;3543:26;3540:52;;;3572:18;;:::i;:::-;3621:2;3615:9;3633:67;3688:2;3669:13;;-1:-1:-1;;3665:27:92;3694:4;3661:38;3615:9;3633:67;:::i;:::-;3724:2;3716:6;3709:18;3770:3;3763:4;3758:2;3750:6;3746:15;3742:26;3739:35;3736:55;;;3787:1;3784;3777:12;3736:55;3851:2;3844:4;3836:6;3832:17;3825:4;3817:6;3813:17;3800:54;3898:1;3874:15;;;3891:4;3870:26;3863:37;;;;3878:6;3375:555;-1:-1:-1;;;3375:555:92:o;3935:943::-;4089:6;4097;4105;4113;4121;4174:3;4162:9;4153:7;4149:23;4145:33;4142:53;;;4191:1;4188;4181:12;4142:53;4214:29;4233:9;4214:29;:::i;:::-;4204:39;;4262:38;4296:2;4285:9;4281:18;4262:38;:::i;:::-;4252:48;;4351:2;4340:9;4336:18;4323:32;4374:18;4415:2;4407:6;4404:14;4401:34;;;4431:1;4428;4421:12;4401:34;4454:61;4507:7;4498:6;4487:9;4483:22;4454:61;:::i;:::-;4444:71;;4568:2;4557:9;4553:18;4540:32;4524:48;;4597:2;4587:8;4584:16;4581:36;;;4613:1;4610;4603:12;4581:36;4636:63;4691:7;4680:8;4669:9;4665:24;4636:63;:::i;:::-;4626:73;;4752:3;4741:9;4737:19;4724:33;4708:49;;4782:2;4772:8;4769:16;4766:36;;;4798:1;4795;4788:12;4766:36;;4821:51;4864:7;4853:8;4842:9;4838:24;4821:51;:::i;:::-;4811:61;;;3935:943;;;;;;;;:::o;4883:1208::-;5001:6;5009;5062:2;5050:9;5041:7;5037:23;5033:32;5030:52;;;5078:1;5075;5068:12;5030:52;5118:9;5105:23;5147:18;5188:2;5180:6;5177:14;5174:34;;;5204:1;5201;5194:12;5174:34;5242:6;5231:9;5227:22;5217:32;;5287:7;5280:4;5276:2;5272:13;5268:27;5258:55;;5309:1;5306;5299:12;5258:55;5345:2;5332:16;5367:4;5390:43;5430:2;5390:43;:::i;:::-;5462:2;5456:9;5474:31;5502:2;5494:6;5474:31;:::i;:::-;5540:18;;;5628:1;5624:10;;;;5616:19;;5612:28;;;5574:15;;;;-1:-1:-1;5652:19:92;;;5649:39;;;5684:1;5681;5674:12;5649:39;5708:11;;;;5728:148;5744:6;5739:3;5736:15;5728:148;;;5810:23;5829:3;5810:23;:::i;:::-;5798:36;;5761:12;;;;5854;;;;5728:148;;;5895:6;-1:-1:-1;;5939:18:92;;5926:32;;-1:-1:-1;;5970:16:92;;;5967:36;;;5999:1;5996;5989:12;5967:36;;6022:63;6077:7;6066:8;6055:9;6051:24;6022:63;:::i;:::-;6012:73;;;4883:1208;;;;;:::o;6096:435::-;6149:3;6187:5;6181:12;6214:6;6209:3;6202:19;6240:4;6269:2;6264:3;6260:12;6253:19;;6306:2;6299:5;6295:14;6327:1;6337:169;6351:6;6348:1;6345:13;6337:169;;;6412:13;;6400:26;;6446:12;;;;6481:15;;;;6373:1;6366:9;6337:169;;;-1:-1:-1;6522:3:92;;6096:435;-1:-1:-1;;;;;6096:435:92:o;6536:261::-;6715:2;6704:9;6697:21;6678:4;6735:56;6787:2;6776:9;6772:18;6764:6;6735:56;:::i;6802:347::-;6867:6;6875;6928:2;6916:9;6907:7;6903:23;6899:32;6896:52;;;6944:1;6941;6934:12;6896:52;6967:29;6986:9;6967:29;:::i;:::-;6957:39;;7046:2;7035:9;7031:18;7018:32;7093:5;7086:13;7079:21;7072:5;7069:32;7059:60;;7115:1;7112;7105:12;7059:60;7138:5;7128:15;;;6802:347;;;;;:::o;7154:260::-;7222:6;7230;7283:2;7271:9;7262:7;7258:23;7254:32;7251:52;;;7299:1;7296;7289:12;7251:52;7322:29;7341:9;7322:29;:::i;:::-;7312:39;;7370:38;7404:2;7393:9;7389:18;7370:38;:::i;:::-;7360:48;;7154:260;;;;;:::o;7419:606::-;7523:6;7531;7539;7547;7555;7608:3;7596:9;7587:7;7583:23;7579:33;7576:53;;;7625:1;7622;7615:12;7576:53;7648:29;7667:9;7648:29;:::i;:::-;7638:39;;7696:38;7730:2;7719:9;7715:18;7696:38;:::i;:::-;7686:48;;7781:2;7770:9;7766:18;7753:32;7743:42;;7832:2;7821:9;7817:18;7804:32;7794:42;;7887:3;7876:9;7872:19;7859:33;7915:18;7907:6;7904:30;7901:50;;;7947:1;7944;7937:12;7901:50;7970:49;8011:7;8002:6;7991:9;7987:22;7970:49;:::i;8441:380::-;8520:1;8516:12;;;;8563;;;8584:61;;8638:4;8630:6;8626:17;8616:27;;8584:61;8691:2;8683:6;8680:14;8660:18;8657:38;8654:161;;8737:10;8732:3;8728:20;8725:1;8718:31;8772:4;8769:1;8762:15;8800:4;8797:1;8790:15;8654:161;;8441:380;;;:::o;9651:127::-;9712:10;9707:3;9703:20;9700:1;9693:31;9743:4;9740:1;9733:15;9767:4;9764:1;9757:15;9783:127;9844:10;9839:3;9835:20;9832:1;9825:31;9875:4;9872:1;9865:15;9899:4;9896:1;9889:15;9915:135;9954:3;9975:17;;;9972:43;;9995:18;;:::i;:::-;-1:-1:-1;10042:1:92;10031:13;;9915:135::o;11281:125::-;11346:9;;;11367:10;;;11364:36;;;11380:18;;:::i;11411:465::-;11668:2;11657:9;11650:21;11631:4;11694:56;11746:2;11735:9;11731:18;11723:6;11694:56;:::i;:::-;11798:9;11790:6;11786:22;11781:2;11770:9;11766:18;11759:50;11826:44;11863:6;11855;11826:44;:::i;:::-;11818:52;11411:465;-1:-1:-1;;;;;11411:465:92:o;12544:850::-;12866:4;-1:-1:-1;;;;;12976:2:92;12968:6;12964:15;12953:9;12946:34;13028:2;13020:6;13016:15;13011:2;13000:9;12996:18;12989:43;;13068:3;13063:2;13052:9;13048:18;13041:31;13095:57;13147:3;13136:9;13132:19;13124:6;13095:57;:::i;:::-;13200:9;13192:6;13188:22;13183:2;13172:9;13168:18;13161:50;13234:44;13271:6;13263;13234:44;:::i;:::-;13220:58;;13327:9;13319:6;13315:22;13309:3;13298:9;13294:19;13287:51;13355:33;13381:6;13373;13355:33;:::i;:::-;13347:41;12544:850;-1:-1:-1;;;;;;;;12544:850:92:o;13399:249::-;13468:6;13521:2;13509:9;13500:7;13496:23;13492:32;13489:52;;;13537:1;13534;13527:12;13489:52;13569:9;13563:16;13588:30;13612:5;13588:30;:::i;13653:179::-;13688:3;13730:1;13712:16;13709:23;13706:120;;;13776:1;13773;13770;13755:23;-1:-1:-1;13813:1:92;13807:8;13802:3;13798:18;13706:120;13653:179;:::o;13837:671::-;13876:3;13918:4;13900:16;13897:26;13894:39;;;13837:671;:::o;13894:39::-;13960:2;13954:9;-1:-1:-1;;14025:16:92;14021:25;;14018:1;13954:9;13997:50;14076:4;14070:11;14100:16;14135:18;14206:2;14199:4;14191:6;14187:17;14184:25;14179:2;14171:6;14168:14;14165:45;14162:58;;;14213:5;;;;;13837:671;:::o;14162:58::-;14250:6;14244:4;14240:17;14229:28;;14286:3;14280:10;14313:2;14305:6;14302:14;14299:27;;;14319:5;;;;;;13837:671;:::o;14299:27::-;14403:2;14384:16;14378:4;14374:27;14370:36;14363:4;14354:6;14349:3;14345:16;14341:27;14338:69;14335:82;;;14410:5;;;;;;13837:671;:::o;14335:82::-;14426:57;14477:4;14468:6;14460;14456:19;14452:30;14446:4;14426:57;:::i;:::-;-1:-1:-1;14499:3:92;;13837:671;-1:-1:-1;;;;;13837:671:92:o;15343:584::-;15565:4;-1:-1:-1;;;;;15675:2:92;15667:6;15663:15;15652:9;15645:34;15727:2;15719:6;15715:15;15710:2;15699:9;15695:18;15688:43;;15767:6;15762:2;15751:9;15747:18;15740:34;15810:6;15805:2;15794:9;15790:18;15783:34;15854:3;15848;15837:9;15833:19;15826:32;15875:46;15916:3;15905:9;15901:19;15893:6;15875:46;:::i;:::-;15867:54;15343:584;-1:-1:-1;;;;;;;15343:584:92:o"},"gasEstimates":{"creation":{"codeDepositCost":"1054400","executionCost":"infinite","totalCost":"infinite"},"external":{"balanceOf(address,uint256)":"2677","balanceOfBatch(address[],uint256[])":"infinite","isApprovedForAll(address,address)":"infinite","safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)":"infinite","safeTransferFrom(address,address,uint256,uint256,bytes)":"infinite","setApprovalForAll(address,bool)":"26705","supportsInterface(bytes4)":"555","uri(uint256)":"infinite"},"internal":{"_afterTokenTransfer(address,address,address,uint256[] memory,uint256[] memory,bytes memory)":"infinite","_asSingletonArray(uint256)":"infinite","_beforeTokenTransfer(address,address,address,uint256[] memory,uint256[] memory,bytes memory)":"infinite","_burn(address,uint256,uint256)":"infinite","_burnBatch(address,uint256[] memory,uint256[] memory)":"infinite","_doSafeBatchTransferAcceptanceCheck(address,address,address,uint256[] memory,uint256[] memory,bytes memory)":"infinite","_doSafeTransferAcceptanceCheck(address,address,address,uint256,uint256,bytes memory)":"infinite","_mint(address,uint256,uint256,bytes memory)":"infinite","_mintBatch(address,uint256[] memory,uint256[] memory,bytes memory)":"infinite","_safeBatchTransferFrom(address,address,uint256[] memory,uint256[] memory,bytes memory)":"infinite","_safeTransferFrom(address,address,uint256,uint256,bytes memory)":"infinite","_setApprovalForAll(address,address,bool)":"infinite","_setURI(string memory)":"infinite"}},"methodIdentifiers":{"balanceOf(address,uint256)":"00fdd58e","balanceOfBatch(address[],uint256[])":"4e1273f4","isApprovedForAll(address,address)":"e985e9c5","safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)":"2eb2c2d6","safeTransferFrom(address,address,uint256,uint256,bytes)":"f242432a","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","uri(uint256)":"0e89341c"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"uri_\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"}],\"name\":\"TransferBatch\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"TransferSingle\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"URI\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"accounts\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"}],\"name\":\"balanceOfBatch\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeBatchTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"uri\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of the basic standard multi-token. See https://eips.ethereum.org/EIPS/eip-1155 Originally based on code by Enjin: https://github.com/enjin/erc-1155 _Available since v3.1._\",\"kind\":\"dev\",\"methods\":{\"balanceOf(address,uint256)\":{\"details\":\"See {IERC1155-balanceOf}. Requirements: - `account` cannot be the zero address.\"},\"balanceOfBatch(address[],uint256[])\":{\"details\":\"See {IERC1155-balanceOfBatch}. Requirements: - `accounts` and `ids` must have the same length.\"},\"constructor\":{\"details\":\"See {_setURI}.\"},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC1155-isApprovedForAll}.\"},\"safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)\":{\"details\":\"See {IERC1155-safeBatchTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,uint256,bytes)\":{\"details\":\"See {IERC1155-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC1155-setApprovalForAll}.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"uri(uint256)\":{\"details\":\"See {IERC1155MetadataURI-uri}. This implementation returns the same URI for *all* token types. It relies on the token type ID substitution mechanism https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP]. Clients calling this function must replace the `\\\\{id\\\\}` substring with the actual token type ID.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC1155/ERC1155.sol\":\"ERC1155\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC1155/ERC1155.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC1155/ERC1155.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC1155.sol\\\";\\nimport \\\"./IERC1155Receiver.sol\\\";\\nimport \\\"./extensions/IERC1155MetadataURI.sol\\\";\\nimport \\\"../../utils/Address.sol\\\";\\nimport \\\"../../utils/Context.sol\\\";\\nimport \\\"../../utils/introspection/ERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the basic standard multi-token.\\n * See https://eips.ethereum.org/EIPS/eip-1155\\n * Originally based on code by Enjin: https://github.com/enjin/erc-1155\\n *\\n * _Available since v3.1._\\n */\\ncontract ERC1155 is Context, ERC165, IERC1155, IERC1155MetadataURI {\\n using Address for address;\\n\\n // Mapping from token ID to account balances\\n mapping(uint256 => mapping(address => uint256)) private _balances;\\n\\n // Mapping from account to operator approvals\\n mapping(address => mapping(address => bool)) private _operatorApprovals;\\n\\n // Used as the URI for all token types by relying on ID substitution, e.g. https://token-cdn-domain/{id}.json\\n string private _uri;\\n\\n /**\\n * @dev See {_setURI}.\\n */\\n constructor(string memory uri_) {\\n _setURI(uri_);\\n }\\n\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) {\\n return\\n interfaceId == type(IERC1155).interfaceId ||\\n interfaceId == type(IERC1155MetadataURI).interfaceId ||\\n super.supportsInterface(interfaceId);\\n }\\n\\n /**\\n * @dev See {IERC1155MetadataURI-uri}.\\n *\\n * This implementation returns the same URI for *all* token types. It relies\\n * on the token type ID substitution mechanism\\n * https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP].\\n *\\n * Clients calling this function must replace the `\\\\{id\\\\}` substring with the\\n * actual token type ID.\\n */\\n function uri(uint256) public view virtual override returns (string memory) {\\n return _uri;\\n }\\n\\n /**\\n * @dev See {IERC1155-balanceOf}.\\n *\\n * Requirements:\\n *\\n * - `account` cannot be the zero address.\\n */\\n function balanceOf(address account, uint256 id) public view virtual override returns (uint256) {\\n require(account != address(0), \\\"ERC1155: address zero is not a valid owner\\\");\\n return _balances[id][account];\\n }\\n\\n /**\\n * @dev See {IERC1155-balanceOfBatch}.\\n *\\n * Requirements:\\n *\\n * - `accounts` and `ids` must have the same length.\\n */\\n function balanceOfBatch(\\n address[] memory accounts,\\n uint256[] memory ids\\n ) public view virtual override returns (uint256[] memory) {\\n require(accounts.length == ids.length, \\\"ERC1155: accounts and ids length mismatch\\\");\\n\\n uint256[] memory batchBalances = new uint256[](accounts.length);\\n\\n for (uint256 i = 0; i < accounts.length; ++i) {\\n batchBalances[i] = balanceOf(accounts[i], ids[i]);\\n }\\n\\n return batchBalances;\\n }\\n\\n /**\\n * @dev See {IERC1155-setApprovalForAll}.\\n */\\n function setApprovalForAll(address operator, bool approved) public virtual override {\\n _setApprovalForAll(_msgSender(), operator, approved);\\n }\\n\\n /**\\n * @dev See {IERC1155-isApprovedForAll}.\\n */\\n function isApprovedForAll(address account, address operator) public view virtual override returns (bool) {\\n return _operatorApprovals[account][operator];\\n }\\n\\n /**\\n * @dev See {IERC1155-safeTransferFrom}.\\n */\\n function safeTransferFrom(\\n address from,\\n address to,\\n uint256 id,\\n uint256 amount,\\n bytes memory data\\n ) public virtual override {\\n require(\\n from == _msgSender() || isApprovedForAll(from, _msgSender()),\\n \\\"ERC1155: caller is not token owner or approved\\\"\\n );\\n _safeTransferFrom(from, to, id, amount, data);\\n }\\n\\n /**\\n * @dev See {IERC1155-safeBatchTransferFrom}.\\n */\\n function safeBatchTransferFrom(\\n address from,\\n address to,\\n uint256[] memory ids,\\n uint256[] memory amounts,\\n bytes memory data\\n ) public virtual override {\\n require(\\n from == _msgSender() || isApprovedForAll(from, _msgSender()),\\n \\\"ERC1155: caller is not token owner or approved\\\"\\n );\\n _safeBatchTransferFrom(from, to, ids, amounts, data);\\n }\\n\\n /**\\n * @dev Transfers `amount` tokens of token type `id` from `from` to `to`.\\n *\\n * Emits a {TransferSingle} event.\\n *\\n * Requirements:\\n *\\n * - `to` cannot be the zero address.\\n * - `from` must have a balance of tokens of type `id` of at least `amount`.\\n * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the\\n * acceptance magic value.\\n */\\n function _safeTransferFrom(\\n address from,\\n address to,\\n uint256 id,\\n uint256 amount,\\n bytes memory data\\n ) internal virtual {\\n require(to != address(0), \\\"ERC1155: transfer to the zero address\\\");\\n\\n address operator = _msgSender();\\n uint256[] memory ids = _asSingletonArray(id);\\n uint256[] memory amounts = _asSingletonArray(amount);\\n\\n _beforeTokenTransfer(operator, from, to, ids, amounts, data);\\n\\n uint256 fromBalance = _balances[id][from];\\n require(fromBalance >= amount, \\\"ERC1155: insufficient balance for transfer\\\");\\n unchecked {\\n _balances[id][from] = fromBalance - amount;\\n }\\n _balances[id][to] += amount;\\n\\n emit TransferSingle(operator, from, to, id, amount);\\n\\n _afterTokenTransfer(operator, from, to, ids, amounts, data);\\n\\n _doSafeTransferAcceptanceCheck(operator, from, to, id, amount, data);\\n }\\n\\n /**\\n * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_safeTransferFrom}.\\n *\\n * Emits a {TransferBatch} event.\\n *\\n * Requirements:\\n *\\n * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the\\n * acceptance magic value.\\n */\\n function _safeBatchTransferFrom(\\n address from,\\n address to,\\n uint256[] memory ids,\\n uint256[] memory amounts,\\n bytes memory data\\n ) internal virtual {\\n require(ids.length == amounts.length, \\\"ERC1155: ids and amounts length mismatch\\\");\\n require(to != address(0), \\\"ERC1155: transfer to the zero address\\\");\\n\\n address operator = _msgSender();\\n\\n _beforeTokenTransfer(operator, from, to, ids, amounts, data);\\n\\n for (uint256 i = 0; i < ids.length; ++i) {\\n uint256 id = ids[i];\\n uint256 amount = amounts[i];\\n\\n uint256 fromBalance = _balances[id][from];\\n require(fromBalance >= amount, \\\"ERC1155: insufficient balance for transfer\\\");\\n unchecked {\\n _balances[id][from] = fromBalance - amount;\\n }\\n _balances[id][to] += amount;\\n }\\n\\n emit TransferBatch(operator, from, to, ids, amounts);\\n\\n _afterTokenTransfer(operator, from, to, ids, amounts, data);\\n\\n _doSafeBatchTransferAcceptanceCheck(operator, from, to, ids, amounts, data);\\n }\\n\\n /**\\n * @dev Sets a new URI for all token types, by relying on the token type ID\\n * substitution mechanism\\n * https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP].\\n *\\n * By this mechanism, any occurrence of the `\\\\{id\\\\}` substring in either the\\n * URI or any of the amounts in the JSON file at said URI will be replaced by\\n * clients with the token type ID.\\n *\\n * For example, the `https://token-cdn-domain/\\\\{id\\\\}.json` URI would be\\n * interpreted by clients as\\n * `https://token-cdn-domain/000000000000000000000000000000000000000000000000000000000004cce0.json`\\n * for token type ID 0x4cce0.\\n *\\n * See {uri}.\\n *\\n * Because these URIs cannot be meaningfully represented by the {URI} event,\\n * this function emits no events.\\n */\\n function _setURI(string memory newuri) internal virtual {\\n _uri = newuri;\\n }\\n\\n /**\\n * @dev Creates `amount` tokens of token type `id`, and assigns them to `to`.\\n *\\n * Emits a {TransferSingle} event.\\n *\\n * Requirements:\\n *\\n * - `to` cannot be the zero address.\\n * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the\\n * acceptance magic value.\\n */\\n function _mint(address to, uint256 id, uint256 amount, bytes memory data) internal virtual {\\n require(to != address(0), \\\"ERC1155: mint to the zero address\\\");\\n\\n address operator = _msgSender();\\n uint256[] memory ids = _asSingletonArray(id);\\n uint256[] memory amounts = _asSingletonArray(amount);\\n\\n _beforeTokenTransfer(operator, address(0), to, ids, amounts, data);\\n\\n _balances[id][to] += amount;\\n emit TransferSingle(operator, address(0), to, id, amount);\\n\\n _afterTokenTransfer(operator, address(0), to, ids, amounts, data);\\n\\n _doSafeTransferAcceptanceCheck(operator, address(0), to, id, amount, data);\\n }\\n\\n /**\\n * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_mint}.\\n *\\n * Emits a {TransferBatch} event.\\n *\\n * Requirements:\\n *\\n * - `ids` and `amounts` must have the same length.\\n * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the\\n * acceptance magic value.\\n */\\n function _mintBatch(\\n address to,\\n uint256[] memory ids,\\n uint256[] memory amounts,\\n bytes memory data\\n ) internal virtual {\\n require(to != address(0), \\\"ERC1155: mint to the zero address\\\");\\n require(ids.length == amounts.length, \\\"ERC1155: ids and amounts length mismatch\\\");\\n\\n address operator = _msgSender();\\n\\n _beforeTokenTransfer(operator, address(0), to, ids, amounts, data);\\n\\n for (uint256 i = 0; i < ids.length; i++) {\\n _balances[ids[i]][to] += amounts[i];\\n }\\n\\n emit TransferBatch(operator, address(0), to, ids, amounts);\\n\\n _afterTokenTransfer(operator, address(0), to, ids, amounts, data);\\n\\n _doSafeBatchTransferAcceptanceCheck(operator, address(0), to, ids, amounts, data);\\n }\\n\\n /**\\n * @dev Destroys `amount` tokens of token type `id` from `from`\\n *\\n * Emits a {TransferSingle} event.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `from` must have at least `amount` tokens of token type `id`.\\n */\\n function _burn(address from, uint256 id, uint256 amount) internal virtual {\\n require(from != address(0), \\\"ERC1155: burn from the zero address\\\");\\n\\n address operator = _msgSender();\\n uint256[] memory ids = _asSingletonArray(id);\\n uint256[] memory amounts = _asSingletonArray(amount);\\n\\n _beforeTokenTransfer(operator, from, address(0), ids, amounts, \\\"\\\");\\n\\n uint256 fromBalance = _balances[id][from];\\n require(fromBalance >= amount, \\\"ERC1155: burn amount exceeds balance\\\");\\n unchecked {\\n _balances[id][from] = fromBalance - amount;\\n }\\n\\n emit TransferSingle(operator, from, address(0), id, amount);\\n\\n _afterTokenTransfer(operator, from, address(0), ids, amounts, \\\"\\\");\\n }\\n\\n /**\\n * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_burn}.\\n *\\n * Emits a {TransferBatch} event.\\n *\\n * Requirements:\\n *\\n * - `ids` and `amounts` must have the same length.\\n */\\n function _burnBatch(address from, uint256[] memory ids, uint256[] memory amounts) internal virtual {\\n require(from != address(0), \\\"ERC1155: burn from the zero address\\\");\\n require(ids.length == amounts.length, \\\"ERC1155: ids and amounts length mismatch\\\");\\n\\n address operator = _msgSender();\\n\\n _beforeTokenTransfer(operator, from, address(0), ids, amounts, \\\"\\\");\\n\\n for (uint256 i = 0; i < ids.length; i++) {\\n uint256 id = ids[i];\\n uint256 amount = amounts[i];\\n\\n uint256 fromBalance = _balances[id][from];\\n require(fromBalance >= amount, \\\"ERC1155: burn amount exceeds balance\\\");\\n unchecked {\\n _balances[id][from] = fromBalance - amount;\\n }\\n }\\n\\n emit TransferBatch(operator, from, address(0), ids, amounts);\\n\\n _afterTokenTransfer(operator, from, address(0), ids, amounts, \\\"\\\");\\n }\\n\\n /**\\n * @dev Approve `operator` to operate on all of `owner` tokens\\n *\\n * Emits an {ApprovalForAll} event.\\n */\\n function _setApprovalForAll(address owner, address operator, bool approved) internal virtual {\\n require(owner != operator, \\\"ERC1155: setting approval status for self\\\");\\n _operatorApprovals[owner][operator] = approved;\\n emit ApprovalForAll(owner, operator, approved);\\n }\\n\\n /**\\n * @dev Hook that is called before any token transfer. This includes minting\\n * and burning, as well as batched variants.\\n *\\n * The same hook is called on both single and batched variants. For single\\n * transfers, the length of the `ids` and `amounts` arrays will be 1.\\n *\\n * Calling conditions (for each `id` and `amount` pair):\\n *\\n * - When `from` and `to` are both non-zero, `amount` of ``from``'s tokens\\n * of token type `id` will be transferred to `to`.\\n * - When `from` is zero, `amount` tokens of token type `id` will be minted\\n * for `to`.\\n * - when `to` is zero, `amount` of ``from``'s tokens of token type `id`\\n * will be burned.\\n * - `from` and `to` are never both zero.\\n * - `ids` and `amounts` have the same, non-zero length.\\n *\\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n */\\n function _beforeTokenTransfer(\\n address operator,\\n address from,\\n address to,\\n uint256[] memory ids,\\n uint256[] memory amounts,\\n bytes memory data\\n ) internal virtual {}\\n\\n /**\\n * @dev Hook that is called after any token transfer. This includes minting\\n * and burning, as well as batched variants.\\n *\\n * The same hook is called on both single and batched variants. For single\\n * transfers, the length of the `id` and `amount` arrays will be 1.\\n *\\n * Calling conditions (for each `id` and `amount` pair):\\n *\\n * - When `from` and `to` are both non-zero, `amount` of ``from``'s tokens\\n * of token type `id` will be transferred to `to`.\\n * - When `from` is zero, `amount` tokens of token type `id` will be minted\\n * for `to`.\\n * - when `to` is zero, `amount` of ``from``'s tokens of token type `id`\\n * will be burned.\\n * - `from` and `to` are never both zero.\\n * - `ids` and `amounts` have the same, non-zero length.\\n *\\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n */\\n function _afterTokenTransfer(\\n address operator,\\n address from,\\n address to,\\n uint256[] memory ids,\\n uint256[] memory amounts,\\n bytes memory data\\n ) internal virtual {}\\n\\n function _doSafeTransferAcceptanceCheck(\\n address operator,\\n address from,\\n address to,\\n uint256 id,\\n uint256 amount,\\n bytes memory data\\n ) private {\\n if (to.isContract()) {\\n try IERC1155Receiver(to).onERC1155Received(operator, from, id, amount, data) returns (bytes4 response) {\\n if (response != IERC1155Receiver.onERC1155Received.selector) {\\n revert(\\\"ERC1155: ERC1155Receiver rejected tokens\\\");\\n }\\n } catch Error(string memory reason) {\\n revert(reason);\\n } catch {\\n revert(\\\"ERC1155: transfer to non-ERC1155Receiver implementer\\\");\\n }\\n }\\n }\\n\\n function _doSafeBatchTransferAcceptanceCheck(\\n address operator,\\n address from,\\n address to,\\n uint256[] memory ids,\\n uint256[] memory amounts,\\n bytes memory data\\n ) private {\\n if (to.isContract()) {\\n try IERC1155Receiver(to).onERC1155BatchReceived(operator, from, ids, amounts, data) returns (\\n bytes4 response\\n ) {\\n if (response != IERC1155Receiver.onERC1155BatchReceived.selector) {\\n revert(\\\"ERC1155: ERC1155Receiver rejected tokens\\\");\\n }\\n } catch Error(string memory reason) {\\n revert(reason);\\n } catch {\\n revert(\\\"ERC1155: transfer to non-ERC1155Receiver implementer\\\");\\n }\\n }\\n }\\n\\n function _asSingletonArray(uint256 element) private pure returns (uint256[] memory) {\\n uint256[] memory array = new uint256[](1);\\n array[0] = element;\\n\\n return array;\\n }\\n}\\n\",\"keccak256\":\"0x81149353c99ccf8ff18af7701bc3f38665c7a97e344cdc0d27f927f03d22af0e\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC1155/IERC1155.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC1155/IERC1155.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC1155 compliant contract, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-1155[EIP].\\n *\\n * _Available since v3.1._\\n */\\ninterface IERC1155 is IERC165 {\\n /**\\n * @dev Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`.\\n */\\n event TransferSingle(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value);\\n\\n /**\\n * @dev Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all\\n * transfers.\\n */\\n event TransferBatch(\\n address indexed operator,\\n address indexed from,\\n address indexed to,\\n uint256[] ids,\\n uint256[] values\\n );\\n\\n /**\\n * @dev Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to\\n * `approved`.\\n */\\n event ApprovalForAll(address indexed account, address indexed operator, bool approved);\\n\\n /**\\n * @dev Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI.\\n *\\n * If an {URI} event was emitted for `id`, the standard\\n * https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value\\n * returned by {IERC1155MetadataURI-uri}.\\n */\\n event URI(string value, uint256 indexed id);\\n\\n /**\\n * @dev Returns the amount of tokens of token type `id` owned by `account`.\\n *\\n * Requirements:\\n *\\n * - `account` cannot be the zero address.\\n */\\n function balanceOf(address account, uint256 id) external view returns (uint256);\\n\\n /**\\n * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}.\\n *\\n * Requirements:\\n *\\n * - `accounts` and `ids` must have the same length.\\n */\\n function balanceOfBatch(\\n address[] calldata accounts,\\n uint256[] calldata ids\\n ) external view returns (uint256[] memory);\\n\\n /**\\n * @dev Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`,\\n *\\n * Emits an {ApprovalForAll} event.\\n *\\n * Requirements:\\n *\\n * - `operator` cannot be the caller.\\n */\\n function setApprovalForAll(address operator, bool approved) external;\\n\\n /**\\n * @dev Returns true if `operator` is approved to transfer ``account``'s tokens.\\n *\\n * See {setApprovalForAll}.\\n */\\n function isApprovedForAll(address account, address operator) external view returns (bool);\\n\\n /**\\n * @dev Transfers `amount` tokens of token type `id` from `from` to `to`.\\n *\\n * Emits a {TransferSingle} event.\\n *\\n * Requirements:\\n *\\n * - `to` cannot be the zero address.\\n * - If the caller is not `from`, it must have been approved to spend ``from``'s tokens via {setApprovalForAll}.\\n * - `from` must have a balance of tokens of type `id` of at least `amount`.\\n * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the\\n * acceptance magic value.\\n */\\n function safeTransferFrom(address from, address to, uint256 id, uint256 amount, bytes calldata data) external;\\n\\n /**\\n * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}.\\n *\\n * Emits a {TransferBatch} event.\\n *\\n * Requirements:\\n *\\n * - `ids` and `amounts` must have the same length.\\n * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the\\n * acceptance magic value.\\n */\\n function safeBatchTransferFrom(\\n address from,\\n address to,\\n uint256[] calldata ids,\\n uint256[] calldata amounts,\\n bytes calldata data\\n ) external;\\n}\\n\",\"keccak256\":\"0xcab667ddad478ff0d39c2053ca77fac778af8483c18ab07d810277b4216fd582\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC1155/IERC1155Receiver.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev _Available since v3.1._\\n */\\ninterface IERC1155Receiver is IERC165 {\\n /**\\n * @dev Handles the receipt of a single ERC1155 token type. This function is\\n * called at the end of a `safeTransferFrom` after the balance has been updated.\\n *\\n * NOTE: To accept the transfer, this must return\\n * `bytes4(keccak256(\\\"onERC1155Received(address,address,uint256,uint256,bytes)\\\"))`\\n * (i.e. 0xf23a6e61, or its own function selector).\\n *\\n * @param operator The address which initiated the transfer (i.e. msg.sender)\\n * @param from The address which previously owned the token\\n * @param id The ID of the token being transferred\\n * @param value The amount of tokens being transferred\\n * @param data Additional data with no specified format\\n * @return `bytes4(keccak256(\\\"onERC1155Received(address,address,uint256,uint256,bytes)\\\"))` if transfer is allowed\\n */\\n function onERC1155Received(\\n address operator,\\n address from,\\n uint256 id,\\n uint256 value,\\n bytes calldata data\\n ) external returns (bytes4);\\n\\n /**\\n * @dev Handles the receipt of a multiple ERC1155 token types. This function\\n * is called at the end of a `safeBatchTransferFrom` after the balances have\\n * been updated.\\n *\\n * NOTE: To accept the transfer(s), this must return\\n * `bytes4(keccak256(\\\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\\\"))`\\n * (i.e. 0xbc197c81, or its own function selector).\\n *\\n * @param operator The address which initiated the batch transfer (i.e. msg.sender)\\n * @param from The address which previously owned the token\\n * @param ids An array containing ids of each token being transferred (order and length must match values array)\\n * @param values An array containing amounts of each token being transferred (order and length must match ids array)\\n * @param data Additional data with no specified format\\n * @return `bytes4(keccak256(\\\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\\\"))` if transfer is allowed\\n */\\n function onERC1155BatchReceived(\\n address operator,\\n address from,\\n uint256[] calldata ids,\\n uint256[] calldata values,\\n bytes calldata data\\n ) external returns (bytes4);\\n}\\n\",\"keccak256\":\"0xeb373f1fdc7b755c6a750123a9b9e3a8a02c1470042fd6505d875000a80bde0b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC1155/extensions/IERC1155MetadataURI.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC1155.sol\\\";\\n\\n/**\\n * @dev Interface of the optional ERC1155MetadataExtension interface, as defined\\n * in the https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[EIP].\\n *\\n * _Available since v3.1._\\n */\\ninterface IERC1155MetadataURI is IERC1155 {\\n /**\\n * @dev Returns the URI for token type `id`.\\n *\\n * If the `\\\\{id\\\\}` substring is present in the URI, it must be replaced by\\n * clients with the actual token type ID.\\n */\\n function uri(uint256 id) external view returns (string memory);\\n}\\n\",\"keccak256\":\"0xa66d18b9a85458d28fc3304717964502ae36f7f8a2ff35bc83f6f85d74b03574\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n function _contextSuffixLength() internal view virtual returns (uint256) {\\n return 0;\\n }\\n}\\n\",\"keccak256\":\"0xa92e4fa126feb6907daa0513ddd816b2eb91f30a808de54f63c17d0e162c3439\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165 is IERC165 {\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165).interfaceId;\\n }\\n}\\n\",\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":5781,"contract":"@openzeppelin/contracts/token/ERC1155/ERC1155.sol:ERC1155","label":"_balances","offset":0,"slot":"0","type":"t_mapping(t_uint256,t_mapping(t_address,t_uint256))"},{"astId":5787,"contract":"@openzeppelin/contracts/token/ERC1155/ERC1155.sol:ERC1155","label":"_operatorApprovals","offset":0,"slot":"1","type":"t_mapping(t_address,t_mapping(t_address,t_bool))"},{"astId":5789,"contract":"@openzeppelin/contracts/token/ERC1155/ERC1155.sol:ERC1155","label":"_uri","offset":0,"slot":"2","type":"t_string_storage"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_mapping(t_address,t_bool)":{"encoding":"mapping","key":"t_address","label":"mapping(address => bool)","numberOfBytes":"32","value":"t_bool"},"t_mapping(t_address,t_mapping(t_address,t_bool))":{"encoding":"mapping","key":"t_address","label":"mapping(address => mapping(address => bool))","numberOfBytes":"32","value":"t_mapping(t_address,t_bool)"},"t_mapping(t_address,t_uint256)":{"encoding":"mapping","key":"t_address","label":"mapping(address => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_mapping(t_uint256,t_mapping(t_address,t_uint256))":{"encoding":"mapping","key":"t_uint256","label":"mapping(uint256 => mapping(address => uint256))","numberOfBytes":"32","value":"t_mapping(t_address,t_uint256)"},"t_string_storage":{"encoding":"bytes","label":"string","numberOfBytes":"32"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/token/ERC1155/IERC1155.sol":{"IERC1155":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"TransferSingle","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"value","type":"string"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"URI","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeBatchTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"Required interface of an ERC1155 compliant contract, as defined in the https://eips.ethereum.org/EIPS/eip-1155[EIP]. _Available since v3.1._","events":{"ApprovalForAll(address,address,bool)":{"details":"Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to `approved`."},"TransferBatch(address,address,address,uint256[],uint256[])":{"details":"Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all transfers."},"TransferSingle(address,address,address,uint256,uint256)":{"details":"Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`."},"URI(string,uint256)":{"details":"Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI. If an {URI} event was emitted for `id`, the standard https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value returned by {IERC1155MetadataURI-uri}."}},"kind":"dev","methods":{"balanceOf(address,uint256)":{"details":"Returns the amount of tokens of token type `id` owned by `account`. Requirements: - `account` cannot be the zero address."},"balanceOfBatch(address[],uint256[])":{"details":"xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}. Requirements: - `accounts` and `ids` must have the same length."},"isApprovedForAll(address,address)":{"details":"Returns true if `operator` is approved to transfer ``account``'s tokens. See {setApprovalForAll}."},"safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)":{"details":"xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}. Emits a {TransferBatch} event. Requirements: - `ids` and `amounts` must have the same length. - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the acceptance magic value."},"safeTransferFrom(address,address,uint256,uint256,bytes)":{"details":"Transfers `amount` tokens of token type `id` from `from` to `to`. Emits a {TransferSingle} event. Requirements: - `to` cannot be the zero address. - If the caller is not `from`, it must have been approved to spend ``from``'s tokens via {setApprovalForAll}. - `from` must have a balance of tokens of type `id` of at least `amount`. - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the acceptance magic value."},"setApprovalForAll(address,bool)":{"details":"Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`, Emits an {ApprovalForAll} event. Requirements: - `operator` cannot be the caller."},"supportsInterface(bytes4)":{"details":"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"balanceOf(address,uint256)":"00fdd58e","balanceOfBatch(address[],uint256[])":"4e1273f4","isApprovedForAll(address,address)":"e985e9c5","safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)":"2eb2c2d6","safeTransferFrom(address,address,uint256,uint256,bytes)":"f242432a","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"}],\"name\":\"TransferBatch\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"TransferSingle\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"URI\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"accounts\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"}],\"name\":\"balanceOfBatch\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeBatchTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Required interface of an ERC1155 compliant contract, as defined in the https://eips.ethereum.org/EIPS/eip-1155[EIP]. _Available since v3.1._\",\"events\":{\"ApprovalForAll(address,address,bool)\":{\"details\":\"Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to `approved`.\"},\"TransferBatch(address,address,address,uint256[],uint256[])\":{\"details\":\"Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all transfers.\"},\"TransferSingle(address,address,address,uint256,uint256)\":{\"details\":\"Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`.\"},\"URI(string,uint256)\":{\"details\":\"Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI. If an {URI} event was emitted for `id`, the standard https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value returned by {IERC1155MetadataURI-uri}.\"}},\"kind\":\"dev\",\"methods\":{\"balanceOf(address,uint256)\":{\"details\":\"Returns the amount of tokens of token type `id` owned by `account`. Requirements: - `account` cannot be the zero address.\"},\"balanceOfBatch(address[],uint256[])\":{\"details\":\"xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}. Requirements: - `accounts` and `ids` must have the same length.\"},\"isApprovedForAll(address,address)\":{\"details\":\"Returns true if `operator` is approved to transfer ``account``'s tokens. See {setApprovalForAll}.\"},\"safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)\":{\"details\":\"xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}. Emits a {TransferBatch} event. Requirements: - `ids` and `amounts` must have the same length. - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the acceptance magic value.\"},\"safeTransferFrom(address,address,uint256,uint256,bytes)\":{\"details\":\"Transfers `amount` tokens of token type `id` from `from` to `to`. Emits a {TransferSingle} event. Requirements: - `to` cannot be the zero address. - If the caller is not `from`, it must have been approved to spend ``from``'s tokens via {setApprovalForAll}. - `from` must have a balance of tokens of type `id` of at least `amount`. - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the acceptance magic value.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`, Emits an {ApprovalForAll} event. Requirements: - `operator` cannot be the caller.\"},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC1155/IERC1155.sol\":\"IERC1155\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC1155/IERC1155.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC1155/IERC1155.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC1155 compliant contract, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-1155[EIP].\\n *\\n * _Available since v3.1._\\n */\\ninterface IERC1155 is IERC165 {\\n /**\\n * @dev Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`.\\n */\\n event TransferSingle(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value);\\n\\n /**\\n * @dev Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all\\n * transfers.\\n */\\n event TransferBatch(\\n address indexed operator,\\n address indexed from,\\n address indexed to,\\n uint256[] ids,\\n uint256[] values\\n );\\n\\n /**\\n * @dev Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to\\n * `approved`.\\n */\\n event ApprovalForAll(address indexed account, address indexed operator, bool approved);\\n\\n /**\\n * @dev Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI.\\n *\\n * If an {URI} event was emitted for `id`, the standard\\n * https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value\\n * returned by {IERC1155MetadataURI-uri}.\\n */\\n event URI(string value, uint256 indexed id);\\n\\n /**\\n * @dev Returns the amount of tokens of token type `id` owned by `account`.\\n *\\n * Requirements:\\n *\\n * - `account` cannot be the zero address.\\n */\\n function balanceOf(address account, uint256 id) external view returns (uint256);\\n\\n /**\\n * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}.\\n *\\n * Requirements:\\n *\\n * - `accounts` and `ids` must have the same length.\\n */\\n function balanceOfBatch(\\n address[] calldata accounts,\\n uint256[] calldata ids\\n ) external view returns (uint256[] memory);\\n\\n /**\\n * @dev Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`,\\n *\\n * Emits an {ApprovalForAll} event.\\n *\\n * Requirements:\\n *\\n * - `operator` cannot be the caller.\\n */\\n function setApprovalForAll(address operator, bool approved) external;\\n\\n /**\\n * @dev Returns true if `operator` is approved to transfer ``account``'s tokens.\\n *\\n * See {setApprovalForAll}.\\n */\\n function isApprovedForAll(address account, address operator) external view returns (bool);\\n\\n /**\\n * @dev Transfers `amount` tokens of token type `id` from `from` to `to`.\\n *\\n * Emits a {TransferSingle} event.\\n *\\n * Requirements:\\n *\\n * - `to` cannot be the zero address.\\n * - If the caller is not `from`, it must have been approved to spend ``from``'s tokens via {setApprovalForAll}.\\n * - `from` must have a balance of tokens of type `id` of at least `amount`.\\n * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the\\n * acceptance magic value.\\n */\\n function safeTransferFrom(address from, address to, uint256 id, uint256 amount, bytes calldata data) external;\\n\\n /**\\n * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}.\\n *\\n * Emits a {TransferBatch} event.\\n *\\n * Requirements:\\n *\\n * - `ids` and `amounts` must have the same length.\\n * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the\\n * acceptance magic value.\\n */\\n function safeBatchTransferFrom(\\n address from,\\n address to,\\n uint256[] calldata ids,\\n uint256[] calldata amounts,\\n bytes calldata data\\n ) external;\\n}\\n\",\"keccak256\":\"0xcab667ddad478ff0d39c2053ca77fac778af8483c18ab07d810277b4216fd582\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol":{"IERC1155Receiver":{"abi":[{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"onERC1155BatchReceived","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"onERC1155Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"_Available since v3.1._","kind":"dev","methods":{"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)":{"details":"Handles the receipt of a multiple ERC1155 token types. This function is called at the end of a `safeBatchTransferFrom` after the balances have been updated. NOTE: To accept the transfer(s), this must return `bytes4(keccak256(\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\"))` (i.e. 0xbc197c81, or its own function selector).","params":{"data":"Additional data with no specified format","from":"The address which previously owned the token","ids":"An array containing ids of each token being transferred (order and length must match values array)","operator":"The address which initiated the batch transfer (i.e. msg.sender)","values":"An array containing amounts of each token being transferred (order and length must match ids array)"},"returns":{"_0":"`bytes4(keccak256(\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\"))` if transfer is allowed"}},"onERC1155Received(address,address,uint256,uint256,bytes)":{"details":"Handles the receipt of a single ERC1155 token type. This function is called at the end of a `safeTransferFrom` after the balance has been updated. NOTE: To accept the transfer, this must return `bytes4(keccak256(\"onERC1155Received(address,address,uint256,uint256,bytes)\"))` (i.e. 0xf23a6e61, or its own function selector).","params":{"data":"Additional data with no specified format","from":"The address which previously owned the token","id":"The ID of the token being transferred","operator":"The address which initiated the transfer (i.e. msg.sender)","value":"The amount of tokens being transferred"},"returns":{"_0":"`bytes4(keccak256(\"onERC1155Received(address,address,uint256,uint256,bytes)\"))` if transfer is allowed"}},"supportsInterface(bytes4)":{"details":"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)":"bc197c81","onERC1155Received(address,address,uint256,uint256,bytes)":"f23a6e61","supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onERC1155BatchReceived\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onERC1155Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"_Available since v3.1._\",\"kind\":\"dev\",\"methods\":{\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\":{\"details\":\"Handles the receipt of a multiple ERC1155 token types. This function is called at the end of a `safeBatchTransferFrom` after the balances have been updated. NOTE: To accept the transfer(s), this must return `bytes4(keccak256(\\\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\\\"))` (i.e. 0xbc197c81, or its own function selector).\",\"params\":{\"data\":\"Additional data with no specified format\",\"from\":\"The address which previously owned the token\",\"ids\":\"An array containing ids of each token being transferred (order and length must match values array)\",\"operator\":\"The address which initiated the batch transfer (i.e. msg.sender)\",\"values\":\"An array containing amounts of each token being transferred (order and length must match ids array)\"},\"returns\":{\"_0\":\"`bytes4(keccak256(\\\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\\\"))` if transfer is allowed\"}},\"onERC1155Received(address,address,uint256,uint256,bytes)\":{\"details\":\"Handles the receipt of a single ERC1155 token type. This function is called at the end of a `safeTransferFrom` after the balance has been updated. NOTE: To accept the transfer, this must return `bytes4(keccak256(\\\"onERC1155Received(address,address,uint256,uint256,bytes)\\\"))` (i.e. 0xf23a6e61, or its own function selector).\",\"params\":{\"data\":\"Additional data with no specified format\",\"from\":\"The address which previously owned the token\",\"id\":\"The ID of the token being transferred\",\"operator\":\"The address which initiated the transfer (i.e. msg.sender)\",\"value\":\"The amount of tokens being transferred\"},\"returns\":{\"_0\":\"`bytes4(keccak256(\\\"onERC1155Received(address,address,uint256,uint256,bytes)\\\"))` if transfer is allowed\"}},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol\":\"IERC1155Receiver\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC1155/IERC1155Receiver.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev _Available since v3.1._\\n */\\ninterface IERC1155Receiver is IERC165 {\\n /**\\n * @dev Handles the receipt of a single ERC1155 token type. This function is\\n * called at the end of a `safeTransferFrom` after the balance has been updated.\\n *\\n * NOTE: To accept the transfer, this must return\\n * `bytes4(keccak256(\\\"onERC1155Received(address,address,uint256,uint256,bytes)\\\"))`\\n * (i.e. 0xf23a6e61, or its own function selector).\\n *\\n * @param operator The address which initiated the transfer (i.e. msg.sender)\\n * @param from The address which previously owned the token\\n * @param id The ID of the token being transferred\\n * @param value The amount of tokens being transferred\\n * @param data Additional data with no specified format\\n * @return `bytes4(keccak256(\\\"onERC1155Received(address,address,uint256,uint256,bytes)\\\"))` if transfer is allowed\\n */\\n function onERC1155Received(\\n address operator,\\n address from,\\n uint256 id,\\n uint256 value,\\n bytes calldata data\\n ) external returns (bytes4);\\n\\n /**\\n * @dev Handles the receipt of a multiple ERC1155 token types. This function\\n * is called at the end of a `safeBatchTransferFrom` after the balances have\\n * been updated.\\n *\\n * NOTE: To accept the transfer(s), this must return\\n * `bytes4(keccak256(\\\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\\\"))`\\n * (i.e. 0xbc197c81, or its own function selector).\\n *\\n * @param operator The address which initiated the batch transfer (i.e. msg.sender)\\n * @param from The address which previously owned the token\\n * @param ids An array containing ids of each token being transferred (order and length must match values array)\\n * @param values An array containing amounts of each token being transferred (order and length must match ids array)\\n * @param data Additional data with no specified format\\n * @return `bytes4(keccak256(\\\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\\\"))` if transfer is allowed\\n */\\n function onERC1155BatchReceived(\\n address operator,\\n address from,\\n uint256[] calldata ids,\\n uint256[] calldata values,\\n bytes calldata data\\n ) external returns (bytes4);\\n}\\n\",\"keccak256\":\"0xeb373f1fdc7b755c6a750123a9b9e3a8a02c1470042fd6505d875000a80bde0b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol":{"IERC1155MetadataURI":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"TransferSingle","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"value","type":"string"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"URI","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeBatchTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"Interface of the optional ERC1155MetadataExtension interface, as defined in the https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[EIP]. _Available since v3.1._","kind":"dev","methods":{"balanceOf(address,uint256)":{"details":"Returns the amount of tokens of token type `id` owned by `account`. Requirements: - `account` cannot be the zero address."},"balanceOfBatch(address[],uint256[])":{"details":"xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}. Requirements: - `accounts` and `ids` must have the same length."},"isApprovedForAll(address,address)":{"details":"Returns true if `operator` is approved to transfer ``account``'s tokens. See {setApprovalForAll}."},"safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)":{"details":"xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}. Emits a {TransferBatch} event. Requirements: - `ids` and `amounts` must have the same length. - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the acceptance magic value."},"safeTransferFrom(address,address,uint256,uint256,bytes)":{"details":"Transfers `amount` tokens of token type `id` from `from` to `to`. Emits a {TransferSingle} event. Requirements: - `to` cannot be the zero address. - If the caller is not `from`, it must have been approved to spend ``from``'s tokens via {setApprovalForAll}. - `from` must have a balance of tokens of type `id` of at least `amount`. - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the acceptance magic value."},"setApprovalForAll(address,bool)":{"details":"Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`, Emits an {ApprovalForAll} event. Requirements: - `operator` cannot be the caller."},"supportsInterface(bytes4)":{"details":"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas."},"uri(uint256)":{"details":"Returns the URI for token type `id`. If the `\\{id\\}` substring is present in the URI, it must be replaced by clients with the actual token type ID."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"balanceOf(address,uint256)":"00fdd58e","balanceOfBatch(address[],uint256[])":"4e1273f4","isApprovedForAll(address,address)":"e985e9c5","safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)":"2eb2c2d6","safeTransferFrom(address,address,uint256,uint256,bytes)":"f242432a","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","uri(uint256)":"0e89341c"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"}],\"name\":\"TransferBatch\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"TransferSingle\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"URI\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"accounts\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"}],\"name\":\"balanceOfBatch\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeBatchTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"uri\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the optional ERC1155MetadataExtension interface, as defined in the https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[EIP]. _Available since v3.1._\",\"kind\":\"dev\",\"methods\":{\"balanceOf(address,uint256)\":{\"details\":\"Returns the amount of tokens of token type `id` owned by `account`. Requirements: - `account` cannot be the zero address.\"},\"balanceOfBatch(address[],uint256[])\":{\"details\":\"xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}. Requirements: - `accounts` and `ids` must have the same length.\"},\"isApprovedForAll(address,address)\":{\"details\":\"Returns true if `operator` is approved to transfer ``account``'s tokens. See {setApprovalForAll}.\"},\"safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)\":{\"details\":\"xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}. Emits a {TransferBatch} event. Requirements: - `ids` and `amounts` must have the same length. - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the acceptance magic value.\"},\"safeTransferFrom(address,address,uint256,uint256,bytes)\":{\"details\":\"Transfers `amount` tokens of token type `id` from `from` to `to`. Emits a {TransferSingle} event. Requirements: - `to` cannot be the zero address. - If the caller is not `from`, it must have been approved to spend ``from``'s tokens via {setApprovalForAll}. - `from` must have a balance of tokens of type `id` of at least `amount`. - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the acceptance magic value.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`, Emits an {ApprovalForAll} event. Requirements: - `operator` cannot be the caller.\"},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"},\"uri(uint256)\":{\"details\":\"Returns the URI for token type `id`. If the `\\\\{id\\\\}` substring is present in the URI, it must be replaced by clients with the actual token type ID.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol\":\"IERC1155MetadataURI\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC1155/IERC1155.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC1155/IERC1155.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC1155 compliant contract, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-1155[EIP].\\n *\\n * _Available since v3.1._\\n */\\ninterface IERC1155 is IERC165 {\\n /**\\n * @dev Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`.\\n */\\n event TransferSingle(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value);\\n\\n /**\\n * @dev Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all\\n * transfers.\\n */\\n event TransferBatch(\\n address indexed operator,\\n address indexed from,\\n address indexed to,\\n uint256[] ids,\\n uint256[] values\\n );\\n\\n /**\\n * @dev Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to\\n * `approved`.\\n */\\n event ApprovalForAll(address indexed account, address indexed operator, bool approved);\\n\\n /**\\n * @dev Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI.\\n *\\n * If an {URI} event was emitted for `id`, the standard\\n * https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value\\n * returned by {IERC1155MetadataURI-uri}.\\n */\\n event URI(string value, uint256 indexed id);\\n\\n /**\\n * @dev Returns the amount of tokens of token type `id` owned by `account`.\\n *\\n * Requirements:\\n *\\n * - `account` cannot be the zero address.\\n */\\n function balanceOf(address account, uint256 id) external view returns (uint256);\\n\\n /**\\n * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}.\\n *\\n * Requirements:\\n *\\n * - `accounts` and `ids` must have the same length.\\n */\\n function balanceOfBatch(\\n address[] calldata accounts,\\n uint256[] calldata ids\\n ) external view returns (uint256[] memory);\\n\\n /**\\n * @dev Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`,\\n *\\n * Emits an {ApprovalForAll} event.\\n *\\n * Requirements:\\n *\\n * - `operator` cannot be the caller.\\n */\\n function setApprovalForAll(address operator, bool approved) external;\\n\\n /**\\n * @dev Returns true if `operator` is approved to transfer ``account``'s tokens.\\n *\\n * See {setApprovalForAll}.\\n */\\n function isApprovedForAll(address account, address operator) external view returns (bool);\\n\\n /**\\n * @dev Transfers `amount` tokens of token type `id` from `from` to `to`.\\n *\\n * Emits a {TransferSingle} event.\\n *\\n * Requirements:\\n *\\n * - `to` cannot be the zero address.\\n * - If the caller is not `from`, it must have been approved to spend ``from``'s tokens via {setApprovalForAll}.\\n * - `from` must have a balance of tokens of type `id` of at least `amount`.\\n * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the\\n * acceptance magic value.\\n */\\n function safeTransferFrom(address from, address to, uint256 id, uint256 amount, bytes calldata data) external;\\n\\n /**\\n * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}.\\n *\\n * Emits a {TransferBatch} event.\\n *\\n * Requirements:\\n *\\n * - `ids` and `amounts` must have the same length.\\n * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the\\n * acceptance magic value.\\n */\\n function safeBatchTransferFrom(\\n address from,\\n address to,\\n uint256[] calldata ids,\\n uint256[] calldata amounts,\\n bytes calldata data\\n ) external;\\n}\\n\",\"keccak256\":\"0xcab667ddad478ff0d39c2053ca77fac778af8483c18ab07d810277b4216fd582\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC1155/extensions/IERC1155MetadataURI.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC1155.sol\\\";\\n\\n/**\\n * @dev Interface of the optional ERC1155MetadataExtension interface, as defined\\n * in the https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[EIP].\\n *\\n * _Available since v3.1._\\n */\\ninterface IERC1155MetadataURI is IERC1155 {\\n /**\\n * @dev Returns the URI for token type `id`.\\n *\\n * If the `\\\\{id\\\\}` substring is present in the URI, it must be replaced by\\n * clients with the actual token type ID.\\n */\\n function uri(uint256 id) external view returns (string memory);\\n}\\n\",\"keccak256\":\"0xa66d18b9a85458d28fc3304717964502ae36f7f8a2ff35bc83f6f85d74b03574\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/token/ERC20/ERC20.sol":{"ERC20":{"abi":[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"Implementation of the {IERC20} interface. This implementation is agnostic to the way tokens are created. This means that a supply mechanism has to be added in a derived contract using {_mint}. For a generic mechanism see {ERC20PresetMinterPauser}. TIP: For a detailed writeup see our guide https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How to implement supply mechanisms]. The default value of {decimals} is 18. To change this, you should override this function so it returns a different value. We have followed general OpenZeppelin Contracts guidelines: functions revert instead returning `false` on failure. This behavior is nonetheless conventional and does not conflict with the expectations of ERC20 applications. Additionally, an {Approval} event is emitted on calls to {transferFrom}. This allows applications to reconstruct the allowance for all accounts just by listening to said events. Other implementations of the EIP may not emit these events, as it isn't required by the specification. Finally, the non-standard {decreaseAllowance} and {increaseAllowance} functions have been added to mitigate the well-known issues around setting allowances. See {IERC20-approve}.","kind":"dev","methods":{"allowance(address,address)":{"details":"See {IERC20-allowance}."},"approve(address,uint256)":{"details":"See {IERC20-approve}. NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address."},"balanceOf(address)":{"details":"See {IERC20-balanceOf}."},"constructor":{"details":"Sets the values for {name} and {symbol}. All two of these values are immutable: they can only be set once during construction."},"decimals()":{"details":"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}."},"decreaseAllowance(address,uint256)":{"details":"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`."},"increaseAllowance(address,uint256)":{"details":"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address."},"name()":{"details":"Returns the name of the token."},"symbol()":{"details":"Returns the symbol of the token, usually a shorter version of the name."},"totalSupply()":{"details":"See {IERC20-totalSupply}."},"transfer(address,uint256)":{"details":"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `amount`."},"transferFrom(address,address,uint256)":{"details":"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `amount`. - the caller must have allowance for ``from``'s tokens of at least `amount`."}},"version":1},"evm":{"bytecode":{"functionDebugData":{"@_7201":{"entryPoint":null,"id":7201,"parameterSlots":2,"returnSlots":0},"abi_decode_string_fromMemory":{"entryPoint":112,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr_fromMemory":{"entryPoint":287,"id":null,"parameterSlots":2,"returnSlots":2},"array_dataslot_string_storage":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"clean_up_bytearray_end_slots_string_storage":{"entryPoint":453,"id":null,"parameterSlots":3,"returnSlots":0},"copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage":{"entryPoint":536,"id":null,"parameterSlots":2,"returnSlots":0},"extract_byte_array_length":{"entryPoint":393,"id":null,"parameterSlots":1,"returnSlots":1},"extract_used_part_and_set_length_of_short_byte_array":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"panic_error_0x41":{"entryPoint":90,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:4144:92","statements":[{"nodeType":"YulBlock","src":"6:3:92","statements":[]},{"body":{"nodeType":"YulBlock","src":"46:95:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"63:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"70:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"75:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"66:3:92"},"nodeType":"YulFunctionCall","src":"66:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"56:6:92"},"nodeType":"YulFunctionCall","src":"56:31:92"},"nodeType":"YulExpressionStatement","src":"56:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"103:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"106:4:92","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"96:6:92"},"nodeType":"YulFunctionCall","src":"96:15:92"},"nodeType":"YulExpressionStatement","src":"96:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"127:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"130:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"120:6:92"},"nodeType":"YulFunctionCall","src":"120:15:92"},"nodeType":"YulExpressionStatement","src":"120:15:92"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"14:127:92"},{"body":{"nodeType":"YulBlock","src":"210:776:92","statements":[{"body":{"nodeType":"YulBlock","src":"259:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"268:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"271:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"261:6:92"},"nodeType":"YulFunctionCall","src":"261:12:92"},"nodeType":"YulExpressionStatement","src":"261:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"238:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"246:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"234:3:92"},"nodeType":"YulFunctionCall","src":"234:17:92"},{"name":"end","nodeType":"YulIdentifier","src":"253:3:92"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"230:3:92"},"nodeType":"YulFunctionCall","src":"230:27:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"223:6:92"},"nodeType":"YulFunctionCall","src":"223:35:92"},"nodeType":"YulIf","src":"220:55:92"},{"nodeType":"YulVariableDeclaration","src":"284:23:92","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"300:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"294:5:92"},"nodeType":"YulFunctionCall","src":"294:13:92"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"288:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"316:28:92","value":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"334:2:92","type":"","value":"64"},{"kind":"number","nodeType":"YulLiteral","src":"338:1:92","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"330:3:92"},"nodeType":"YulFunctionCall","src":"330:10:92"},{"kind":"number","nodeType":"YulLiteral","src":"342:1:92","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"326:3:92"},"nodeType":"YulFunctionCall","src":"326:18:92"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"320:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"367:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"369:16:92"},"nodeType":"YulFunctionCall","src":"369:18:92"},"nodeType":"YulExpressionStatement","src":"369:18:92"}]},"condition":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"359:2:92"},{"name":"_2","nodeType":"YulIdentifier","src":"363:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"356:2:92"},"nodeType":"YulFunctionCall","src":"356:10:92"},"nodeType":"YulIf","src":"353:36:92"},{"nodeType":"YulVariableDeclaration","src":"398:17:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"412:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"408:3:92"},"nodeType":"YulFunctionCall","src":"408:7:92"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"402:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"424:23:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"444:2:92","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"438:5:92"},"nodeType":"YulFunctionCall","src":"438:9:92"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"428:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"456:71:92","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"478:6:92"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"502:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"506:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"498:3:92"},"nodeType":"YulFunctionCall","src":"498:13:92"},{"name":"_3","nodeType":"YulIdentifier","src":"513:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"494:3:92"},"nodeType":"YulFunctionCall","src":"494:22:92"},{"kind":"number","nodeType":"YulLiteral","src":"518:2:92","type":"","value":"63"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"490:3:92"},"nodeType":"YulFunctionCall","src":"490:31:92"},{"name":"_3","nodeType":"YulIdentifier","src":"523:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"486:3:92"},"nodeType":"YulFunctionCall","src":"486:40:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"474:3:92"},"nodeType":"YulFunctionCall","src":"474:53:92"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"460:10:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"586:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"588:16:92"},"nodeType":"YulFunctionCall","src":"588:18:92"},"nodeType":"YulExpressionStatement","src":"588:18:92"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"545:10:92"},{"name":"_2","nodeType":"YulIdentifier","src":"557:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"542:2:92"},"nodeType":"YulFunctionCall","src":"542:18:92"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"565:10:92"},{"name":"memPtr","nodeType":"YulIdentifier","src":"577:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"562:2:92"},"nodeType":"YulFunctionCall","src":"562:22:92"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"539:2:92"},"nodeType":"YulFunctionCall","src":"539:46:92"},"nodeType":"YulIf","src":"536:72:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"624:2:92","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"628:10:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"617:6:92"},"nodeType":"YulFunctionCall","src":"617:22:92"},"nodeType":"YulExpressionStatement","src":"617:22:92"},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"655:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"663:2:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"648:6:92"},"nodeType":"YulFunctionCall","src":"648:18:92"},"nodeType":"YulExpressionStatement","src":"648:18:92"},{"nodeType":"YulVariableDeclaration","src":"675:14:92","value":{"kind":"number","nodeType":"YulLiteral","src":"685:4:92","type":"","value":"0x20"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"679:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"735:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"744:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"747:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"737:6:92"},"nodeType":"YulFunctionCall","src":"737:12:92"},"nodeType":"YulExpressionStatement","src":"737:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"712:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"720:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"708:3:92"},"nodeType":"YulFunctionCall","src":"708:15:92"},{"name":"_4","nodeType":"YulIdentifier","src":"725:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"704:3:92"},"nodeType":"YulFunctionCall","src":"704:24:92"},{"name":"end","nodeType":"YulIdentifier","src":"730:3:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"701:2:92"},"nodeType":"YulFunctionCall","src":"701:33:92"},"nodeType":"YulIf","src":"698:53:92"},{"nodeType":"YulVariableDeclaration","src":"760:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"769:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"764:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"825:87:92","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"854:6:92"},{"name":"i","nodeType":"YulIdentifier","src":"862:1:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"850:3:92"},"nodeType":"YulFunctionCall","src":"850:14:92"},{"name":"_4","nodeType":"YulIdentifier","src":"866:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"846:3:92"},"nodeType":"YulFunctionCall","src":"846:23:92"},{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"885:6:92"},{"name":"i","nodeType":"YulIdentifier","src":"893:1:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"881:3:92"},"nodeType":"YulFunctionCall","src":"881:14:92"},{"name":"_4","nodeType":"YulIdentifier","src":"897:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"877:3:92"},"nodeType":"YulFunctionCall","src":"877:23:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"871:5:92"},"nodeType":"YulFunctionCall","src":"871:30:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"839:6:92"},"nodeType":"YulFunctionCall","src":"839:63:92"},"nodeType":"YulExpressionStatement","src":"839:63:92"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"790:1:92"},{"name":"_1","nodeType":"YulIdentifier","src":"793:2:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"787:2:92"},"nodeType":"YulFunctionCall","src":"787:9:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"797:19:92","statements":[{"nodeType":"YulAssignment","src":"799:15:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"808:1:92"},{"name":"_4","nodeType":"YulIdentifier","src":"811:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"804:3:92"},"nodeType":"YulFunctionCall","src":"804:10:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"799:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"783:3:92","statements":[]},"src":"779:133:92"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"936:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"944:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"932:3:92"},"nodeType":"YulFunctionCall","src":"932:15:92"},{"name":"_4","nodeType":"YulIdentifier","src":"949:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"928:3:92"},"nodeType":"YulFunctionCall","src":"928:24:92"},{"kind":"number","nodeType":"YulLiteral","src":"954:1:92","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"921:6:92"},"nodeType":"YulFunctionCall","src":"921:35:92"},"nodeType":"YulExpressionStatement","src":"921:35:92"},{"nodeType":"YulAssignment","src":"965:15:92","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"974:6:92"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"965:5:92"}]}]},"name":"abi_decode_string_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"184:6:92","type":""},{"name":"end","nodeType":"YulTypedName","src":"192:3:92","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"200:5:92","type":""}],"src":"146:840:92"},{"body":{"nodeType":"YulBlock","src":"1109:444:92","statements":[{"body":{"nodeType":"YulBlock","src":"1155:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1164:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1167:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1157:6:92"},"nodeType":"YulFunctionCall","src":"1157:12:92"},"nodeType":"YulExpressionStatement","src":"1157:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1130:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"1139:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1126:3:92"},"nodeType":"YulFunctionCall","src":"1126:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"1151:2:92","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1122:3:92"},"nodeType":"YulFunctionCall","src":"1122:32:92"},"nodeType":"YulIf","src":"1119:52:92"},{"nodeType":"YulVariableDeclaration","src":"1180:30:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1200:9:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1194:5:92"},"nodeType":"YulFunctionCall","src":"1194:16:92"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1184:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"1219:28:92","value":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1237:2:92","type":"","value":"64"},{"kind":"number","nodeType":"YulLiteral","src":"1241:1:92","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1233:3:92"},"nodeType":"YulFunctionCall","src":"1233:10:92"},{"kind":"number","nodeType":"YulLiteral","src":"1245:1:92","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1229:3:92"},"nodeType":"YulFunctionCall","src":"1229:18:92"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"1223:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"1274:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1283:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1286:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1276:6:92"},"nodeType":"YulFunctionCall","src":"1276:12:92"},"nodeType":"YulExpressionStatement","src":"1276:12:92"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1262:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"1270:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1259:2:92"},"nodeType":"YulFunctionCall","src":"1259:14:92"},"nodeType":"YulIf","src":"1256:34:92"},{"nodeType":"YulAssignment","src":"1299:71:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1342:9:92"},{"name":"offset","nodeType":"YulIdentifier","src":"1353:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1338:3:92"},"nodeType":"YulFunctionCall","src":"1338:22:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1362:7:92"}],"functionName":{"name":"abi_decode_string_fromMemory","nodeType":"YulIdentifier","src":"1309:28:92"},"nodeType":"YulFunctionCall","src":"1309:61:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1299:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"1379:41:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1405:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1416:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1401:3:92"},"nodeType":"YulFunctionCall","src":"1401:18:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1395:5:92"},"nodeType":"YulFunctionCall","src":"1395:25:92"},"variables":[{"name":"offset_1","nodeType":"YulTypedName","src":"1383:8:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"1449:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1458:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1461:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1451:6:92"},"nodeType":"YulFunctionCall","src":"1451:12:92"},"nodeType":"YulExpressionStatement","src":"1451:12:92"}]},"condition":{"arguments":[{"name":"offset_1","nodeType":"YulIdentifier","src":"1435:8:92"},{"name":"_1","nodeType":"YulIdentifier","src":"1445:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1432:2:92"},"nodeType":"YulFunctionCall","src":"1432:16:92"},"nodeType":"YulIf","src":"1429:36:92"},{"nodeType":"YulAssignment","src":"1474:73:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1517:9:92"},{"name":"offset_1","nodeType":"YulIdentifier","src":"1528:8:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1513:3:92"},"nodeType":"YulFunctionCall","src":"1513:24:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1539:7:92"}],"functionName":{"name":"abi_decode_string_fromMemory","nodeType":"YulIdentifier","src":"1484:28:92"},"nodeType":"YulFunctionCall","src":"1484:63:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1474:6:92"}]}]},"name":"abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1067:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1078:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1090:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1098:6:92","type":""}],"src":"991:562:92"},{"body":{"nodeType":"YulBlock","src":"1613:325:92","statements":[{"nodeType":"YulAssignment","src":"1623:22:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1637:1:92","type":"","value":"1"},{"name":"data","nodeType":"YulIdentifier","src":"1640:4:92"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"1633:3:92"},"nodeType":"YulFunctionCall","src":"1633:12:92"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"1623:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"1654:38:92","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"1684:4:92"},{"kind":"number","nodeType":"YulLiteral","src":"1690:1:92","type":"","value":"1"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1680:3:92"},"nodeType":"YulFunctionCall","src":"1680:12:92"},"variables":[{"name":"outOfPlaceEncoding","nodeType":"YulTypedName","src":"1658:18:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"1731:31:92","statements":[{"nodeType":"YulAssignment","src":"1733:27:92","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"1747:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"1755:4:92","type":"","value":"0x7f"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1743:3:92"},"nodeType":"YulFunctionCall","src":"1743:17:92"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"1733:6:92"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"1711:18:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1704:6:92"},"nodeType":"YulFunctionCall","src":"1704:26:92"},"nodeType":"YulIf","src":"1701:61:92"},{"body":{"nodeType":"YulBlock","src":"1821:111:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1842:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1849:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"1854:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1845:3:92"},"nodeType":"YulFunctionCall","src":"1845:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1835:6:92"},"nodeType":"YulFunctionCall","src":"1835:31:92"},"nodeType":"YulExpressionStatement","src":"1835:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1886:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"1889:4:92","type":"","value":"0x22"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1879:6:92"},"nodeType":"YulFunctionCall","src":"1879:15:92"},"nodeType":"YulExpressionStatement","src":"1879:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1914:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1917:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1907:6:92"},"nodeType":"YulFunctionCall","src":"1907:15:92"},"nodeType":"YulExpressionStatement","src":"1907:15:92"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"1777:18:92"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"1800:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"1808:2:92","type":"","value":"32"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"1797:2:92"},"nodeType":"YulFunctionCall","src":"1797:14:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1774:2:92"},"nodeType":"YulFunctionCall","src":"1774:38:92"},"nodeType":"YulIf","src":"1771:161:92"}]},"name":"extract_byte_array_length","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"1593:4:92","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"1602:6:92","type":""}],"src":"1558:380:92"},{"body":{"nodeType":"YulBlock","src":"1999:65:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2016:1:92","type":"","value":"0"},{"name":"ptr","nodeType":"YulIdentifier","src":"2019:3:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2009:6:92"},"nodeType":"YulFunctionCall","src":"2009:14:92"},"nodeType":"YulExpressionStatement","src":"2009:14:92"},{"nodeType":"YulAssignment","src":"2032:26:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2050:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2053:4:92","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nodeType":"YulIdentifier","src":"2040:9:92"},"nodeType":"YulFunctionCall","src":"2040:18:92"},"variableNames":[{"name":"data","nodeType":"YulIdentifier","src":"2032:4:92"}]}]},"name":"array_dataslot_string_storage","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nodeType":"YulTypedName","src":"1982:3:92","type":""}],"returnVariables":[{"name":"data","nodeType":"YulTypedName","src":"1990:4:92","type":""}],"src":"1943:121:92"},{"body":{"nodeType":"YulBlock","src":"2150:464:92","statements":[{"body":{"nodeType":"YulBlock","src":"2183:425:92","statements":[{"nodeType":"YulVariableDeclaration","src":"2197:11:92","value":{"kind":"number","nodeType":"YulLiteral","src":"2207:1:92","type":"","value":"0"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"2201:2:92","type":""}]},{"expression":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"2228:2:92"},{"name":"array","nodeType":"YulIdentifier","src":"2232:5:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2221:6:92"},"nodeType":"YulFunctionCall","src":"2221:17:92"},"nodeType":"YulExpressionStatement","src":"2221:17:92"},{"nodeType":"YulVariableDeclaration","src":"2251:31:92","value":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"2273:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"2277:4:92","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nodeType":"YulIdentifier","src":"2263:9:92"},"nodeType":"YulFunctionCall","src":"2263:19:92"},"variables":[{"name":"data","nodeType":"YulTypedName","src":"2255:4:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2295:57:92","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"2318:4:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2328:1:92","type":"","value":"5"},{"arguments":[{"name":"startIndex","nodeType":"YulIdentifier","src":"2335:10:92"},{"kind":"number","nodeType":"YulLiteral","src":"2347:2:92","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2331:3:92"},"nodeType":"YulFunctionCall","src":"2331:19:92"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"2324:3:92"},"nodeType":"YulFunctionCall","src":"2324:27:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2314:3:92"},"nodeType":"YulFunctionCall","src":"2314:38:92"},"variables":[{"name":"deleteStart","nodeType":"YulTypedName","src":"2299:11:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"2389:23:92","statements":[{"nodeType":"YulAssignment","src":"2391:19:92","value":{"name":"data","nodeType":"YulIdentifier","src":"2406:4:92"},"variableNames":[{"name":"deleteStart","nodeType":"YulIdentifier","src":"2391:11:92"}]}]},"condition":{"arguments":[{"name":"startIndex","nodeType":"YulIdentifier","src":"2371:10:92"},{"kind":"number","nodeType":"YulLiteral","src":"2383:4:92","type":"","value":"0x20"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2368:2:92"},"nodeType":"YulFunctionCall","src":"2368:20:92"},"nodeType":"YulIf","src":"2365:47:92"},{"nodeType":"YulVariableDeclaration","src":"2425:41:92","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"2439:4:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2449:1:92","type":"","value":"5"},{"arguments":[{"name":"len","nodeType":"YulIdentifier","src":"2456:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"2461:2:92","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2452:3:92"},"nodeType":"YulFunctionCall","src":"2452:12:92"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"2445:3:92"},"nodeType":"YulFunctionCall","src":"2445:20:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2435:3:92"},"nodeType":"YulFunctionCall","src":"2435:31:92"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"2429:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2479:24:92","value":{"name":"deleteStart","nodeType":"YulIdentifier","src":"2492:11:92"},"variables":[{"name":"start","nodeType":"YulTypedName","src":"2483:5:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"2577:21:92","statements":[{"expression":{"arguments":[{"name":"start","nodeType":"YulIdentifier","src":"2586:5:92"},{"name":"_1","nodeType":"YulIdentifier","src":"2593:2:92"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"2579:6:92"},"nodeType":"YulFunctionCall","src":"2579:17:92"},"nodeType":"YulExpressionStatement","src":"2579:17:92"}]},"condition":{"arguments":[{"name":"start","nodeType":"YulIdentifier","src":"2527:5:92"},{"name":"_2","nodeType":"YulIdentifier","src":"2534:2:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2524:2:92"},"nodeType":"YulFunctionCall","src":"2524:13:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"2538:26:92","statements":[{"nodeType":"YulAssignment","src":"2540:22:92","value":{"arguments":[{"name":"start","nodeType":"YulIdentifier","src":"2553:5:92"},{"kind":"number","nodeType":"YulLiteral","src":"2560:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2549:3:92"},"nodeType":"YulFunctionCall","src":"2549:13:92"},"variableNames":[{"name":"start","nodeType":"YulIdentifier","src":"2540:5:92"}]}]},"pre":{"nodeType":"YulBlock","src":"2520:3:92","statements":[]},"src":"2516:82:92"}]},"condition":{"arguments":[{"name":"len","nodeType":"YulIdentifier","src":"2166:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"2171:2:92","type":"","value":"31"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2163:2:92"},"nodeType":"YulFunctionCall","src":"2163:11:92"},"nodeType":"YulIf","src":"2160:448:92"}]},"name":"clean_up_bytearray_end_slots_string_storage","nodeType":"YulFunctionDefinition","parameters":[{"name":"array","nodeType":"YulTypedName","src":"2122:5:92","type":""},{"name":"len","nodeType":"YulTypedName","src":"2129:3:92","type":""},{"name":"startIndex","nodeType":"YulTypedName","src":"2134:10:92","type":""}],"src":"2069:545:92"},{"body":{"nodeType":"YulBlock","src":"2704:81:92","statements":[{"nodeType":"YulAssignment","src":"2714:65:92","value":{"arguments":[{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"2729:4:92"},{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2747:1:92","type":"","value":"3"},{"name":"len","nodeType":"YulIdentifier","src":"2750:3:92"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2743:3:92"},"nodeType":"YulFunctionCall","src":"2743:11:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2760:1:92","type":"","value":"0"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"2756:3:92"},"nodeType":"YulFunctionCall","src":"2756:6:92"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"2739:3:92"},"nodeType":"YulFunctionCall","src":"2739:24:92"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"2735:3:92"},"nodeType":"YulFunctionCall","src":"2735:29:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2725:3:92"},"nodeType":"YulFunctionCall","src":"2725:40:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2771:1:92","type":"","value":"1"},{"name":"len","nodeType":"YulIdentifier","src":"2774:3:92"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2767:3:92"},"nodeType":"YulFunctionCall","src":"2767:11:92"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"2722:2:92"},"nodeType":"YulFunctionCall","src":"2722:57:92"},"variableNames":[{"name":"used","nodeType":"YulIdentifier","src":"2714:4:92"}]}]},"name":"extract_used_part_and_set_length_of_short_byte_array","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"2681:4:92","type":""},{"name":"len","nodeType":"YulTypedName","src":"2687:3:92","type":""}],"returnVariables":[{"name":"used","nodeType":"YulTypedName","src":"2695:4:92","type":""}],"src":"2619:166:92"},{"body":{"nodeType":"YulBlock","src":"2886:1256:92","statements":[{"nodeType":"YulVariableDeclaration","src":"2896:24:92","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"2916:3:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2910:5:92"},"nodeType":"YulFunctionCall","src":"2910:10:92"},"variables":[{"name":"newLen","nodeType":"YulTypedName","src":"2900:6:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"2963:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"2965:16:92"},"nodeType":"YulFunctionCall","src":"2965:18:92"},"nodeType":"YulExpressionStatement","src":"2965:18:92"}]},"condition":{"arguments":[{"name":"newLen","nodeType":"YulIdentifier","src":"2935:6:92"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2951:2:92","type":"","value":"64"},{"kind":"number","nodeType":"YulLiteral","src":"2955:1:92","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2947:3:92"},"nodeType":"YulFunctionCall","src":"2947:10:92"},{"kind":"number","nodeType":"YulLiteral","src":"2959:1:92","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2943:3:92"},"nodeType":"YulFunctionCall","src":"2943:18:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2932:2:92"},"nodeType":"YulFunctionCall","src":"2932:30:92"},"nodeType":"YulIf","src":"2929:56:92"},{"expression":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"3038:4:92"},{"arguments":[{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"3076:4:92"}],"functionName":{"name":"sload","nodeType":"YulIdentifier","src":"3070:5:92"},"nodeType":"YulFunctionCall","src":"3070:11:92"}],"functionName":{"name":"extract_byte_array_length","nodeType":"YulIdentifier","src":"3044:25:92"},"nodeType":"YulFunctionCall","src":"3044:38:92"},{"name":"newLen","nodeType":"YulIdentifier","src":"3084:6:92"}],"functionName":{"name":"clean_up_bytearray_end_slots_string_storage","nodeType":"YulIdentifier","src":"2994:43:92"},"nodeType":"YulFunctionCall","src":"2994:97:92"},"nodeType":"YulExpressionStatement","src":"2994:97:92"},{"nodeType":"YulVariableDeclaration","src":"3100:18:92","value":{"kind":"number","nodeType":"YulLiteral","src":"3117:1:92","type":"","value":"0"},"variables":[{"name":"srcOffset","nodeType":"YulTypedName","src":"3104:9:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3127:23:92","value":{"kind":"number","nodeType":"YulLiteral","src":"3146:4:92","type":"","value":"0x20"},"variables":[{"name":"srcOffset_1","nodeType":"YulTypedName","src":"3131:11:92","type":""}]},{"nodeType":"YulAssignment","src":"3159:24:92","value":{"name":"srcOffset_1","nodeType":"YulIdentifier","src":"3172:11:92"},"variableNames":[{"name":"srcOffset","nodeType":"YulIdentifier","src":"3159:9:92"}]},{"cases":[{"body":{"nodeType":"YulBlock","src":"3229:656:92","statements":[{"nodeType":"YulVariableDeclaration","src":"3243:35:92","value":{"arguments":[{"name":"newLen","nodeType":"YulIdentifier","src":"3262:6:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3274:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"3270:3:92"},"nodeType":"YulFunctionCall","src":"3270:7:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3258:3:92"},"nodeType":"YulFunctionCall","src":"3258:20:92"},"variables":[{"name":"loopEnd","nodeType":"YulTypedName","src":"3247:7:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3291:49:92","value":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"3335:4:92"}],"functionName":{"name":"array_dataslot_string_storage","nodeType":"YulIdentifier","src":"3305:29:92"},"nodeType":"YulFunctionCall","src":"3305:35:92"},"variables":[{"name":"dstPtr","nodeType":"YulTypedName","src":"3295:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3353:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"3362:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"3357:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"3440:172:92","statements":[{"expression":{"arguments":[{"name":"dstPtr","nodeType":"YulIdentifier","src":"3465:6:92"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"3483:3:92"},{"name":"srcOffset","nodeType":"YulIdentifier","src":"3488:9:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3479:3:92"},"nodeType":"YulFunctionCall","src":"3479:19:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3473:5:92"},"nodeType":"YulFunctionCall","src":"3473:26:92"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"3458:6:92"},"nodeType":"YulFunctionCall","src":"3458:42:92"},"nodeType":"YulExpressionStatement","src":"3458:42:92"},{"nodeType":"YulAssignment","src":"3517:24:92","value":{"arguments":[{"name":"dstPtr","nodeType":"YulIdentifier","src":"3531:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"3539:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3527:3:92"},"nodeType":"YulFunctionCall","src":"3527:14:92"},"variableNames":[{"name":"dstPtr","nodeType":"YulIdentifier","src":"3517:6:92"}]},{"nodeType":"YulAssignment","src":"3558:40:92","value":{"arguments":[{"name":"srcOffset","nodeType":"YulIdentifier","src":"3575:9:92"},{"name":"srcOffset_1","nodeType":"YulIdentifier","src":"3586:11:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3571:3:92"},"nodeType":"YulFunctionCall","src":"3571:27:92"},"variableNames":[{"name":"srcOffset","nodeType":"YulIdentifier","src":"3558:9:92"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3387:1:92"},{"name":"loopEnd","nodeType":"YulIdentifier","src":"3390:7:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"3384:2:92"},"nodeType":"YulFunctionCall","src":"3384:14:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"3399:28:92","statements":[{"nodeType":"YulAssignment","src":"3401:24:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3410:1:92"},{"name":"srcOffset_1","nodeType":"YulIdentifier","src":"3413:11:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3406:3:92"},"nodeType":"YulFunctionCall","src":"3406:19:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"3401:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"3380:3:92","statements":[]},"src":"3376:236:92"},{"body":{"nodeType":"YulBlock","src":"3660:166:92","statements":[{"nodeType":"YulVariableDeclaration","src":"3678:43:92","value":{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"3705:3:92"},{"name":"srcOffset","nodeType":"YulIdentifier","src":"3710:9:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3701:3:92"},"nodeType":"YulFunctionCall","src":"3701:19:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3695:5:92"},"nodeType":"YulFunctionCall","src":"3695:26:92"},"variables":[{"name":"lastValue","nodeType":"YulTypedName","src":"3682:9:92","type":""}]},{"expression":{"arguments":[{"name":"dstPtr","nodeType":"YulIdentifier","src":"3745:6:92"},{"arguments":[{"name":"lastValue","nodeType":"YulIdentifier","src":"3757:9:92"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3784:1:92","type":"","value":"3"},{"name":"newLen","nodeType":"YulIdentifier","src":"3787:6:92"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"3780:3:92"},"nodeType":"YulFunctionCall","src":"3780:14:92"},{"kind":"number","nodeType":"YulLiteral","src":"3796:3:92","type":"","value":"248"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3776:3:92"},"nodeType":"YulFunctionCall","src":"3776:24:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3806:1:92","type":"","value":"0"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"3802:3:92"},"nodeType":"YulFunctionCall","src":"3802:6:92"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"3772:3:92"},"nodeType":"YulFunctionCall","src":"3772:37:92"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"3768:3:92"},"nodeType":"YulFunctionCall","src":"3768:42:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3753:3:92"},"nodeType":"YulFunctionCall","src":"3753:58:92"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"3738:6:92"},"nodeType":"YulFunctionCall","src":"3738:74:92"},"nodeType":"YulExpressionStatement","src":"3738:74:92"}]},"condition":{"arguments":[{"name":"loopEnd","nodeType":"YulIdentifier","src":"3631:7:92"},{"name":"newLen","nodeType":"YulIdentifier","src":"3640:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"3628:2:92"},"nodeType":"YulFunctionCall","src":"3628:19:92"},"nodeType":"YulIf","src":"3625:201:92"},{"expression":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"3846:4:92"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3860:1:92","type":"","value":"1"},{"name":"newLen","nodeType":"YulIdentifier","src":"3863:6:92"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"3856:3:92"},"nodeType":"YulFunctionCall","src":"3856:14:92"},{"kind":"number","nodeType":"YulLiteral","src":"3872:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3852:3:92"},"nodeType":"YulFunctionCall","src":"3852:22:92"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"3839:6:92"},"nodeType":"YulFunctionCall","src":"3839:36:92"},"nodeType":"YulExpressionStatement","src":"3839:36:92"}]},"nodeType":"YulCase","src":"3222:663:92","value":{"kind":"number","nodeType":"YulLiteral","src":"3227:1:92","type":"","value":"1"}},{"body":{"nodeType":"YulBlock","src":"3902:234:92","statements":[{"nodeType":"YulVariableDeclaration","src":"3916:14:92","value":{"kind":"number","nodeType":"YulLiteral","src":"3929:1:92","type":"","value":"0"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"3920:5:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"3965:67:92","statements":[{"nodeType":"YulAssignment","src":"3983:35:92","value":{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"4002:3:92"},{"name":"srcOffset","nodeType":"YulIdentifier","src":"4007:9:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3998:3:92"},"nodeType":"YulFunctionCall","src":"3998:19:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3992:5:92"},"nodeType":"YulFunctionCall","src":"3992:26:92"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"3983:5:92"}]}]},"condition":{"name":"newLen","nodeType":"YulIdentifier","src":"3946:6:92"},"nodeType":"YulIf","src":"3943:89:92"},{"expression":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"4052:4:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4111:5:92"},{"name":"newLen","nodeType":"YulIdentifier","src":"4118:6:92"}],"functionName":{"name":"extract_used_part_and_set_length_of_short_byte_array","nodeType":"YulIdentifier","src":"4058:52:92"},"nodeType":"YulFunctionCall","src":"4058:67:92"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"4045:6:92"},"nodeType":"YulFunctionCall","src":"4045:81:92"},"nodeType":"YulExpressionStatement","src":"4045:81:92"}]},"nodeType":"YulCase","src":"3894:242:92","value":"default"}],"expression":{"arguments":[{"name":"newLen","nodeType":"YulIdentifier","src":"3202:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"3210:2:92","type":"","value":"31"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3199:2:92"},"nodeType":"YulFunctionCall","src":"3199:14:92"},"nodeType":"YulSwitch","src":"3192:944:92"}]},"name":"copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage","nodeType":"YulFunctionDefinition","parameters":[{"name":"slot","nodeType":"YulTypedName","src":"2871:4:92","type":""},{"name":"src","nodeType":"YulTypedName","src":"2877:3:92","type":""}],"src":"2790:1352:92"}]},"contents":"{\n { }\n function panic_error_0x41()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function abi_decode_string_fromMemory(offset, end) -> array\n {\n if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n let _1 := mload(offset)\n let _2 := sub(shl(64, 1), 1)\n if gt(_1, _2) { panic_error_0x41() }\n let _3 := not(31)\n let memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(and(add(_1, 0x1f), _3), 63), _3))\n if or(gt(newFreePtr, _2), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n mstore(memPtr, _1)\n let _4 := 0x20\n if gt(add(add(offset, _1), _4), end) { revert(0, 0) }\n let i := 0\n for { } lt(i, _1) { i := add(i, _4) }\n {\n mstore(add(add(memPtr, i), _4), mload(add(add(offset, i), _4)))\n }\n mstore(add(add(memPtr, _1), _4), 0)\n array := memPtr\n }\n function abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr_fromMemory(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n let offset := mload(headStart)\n let _1 := sub(shl(64, 1), 1)\n if gt(offset, _1) { revert(0, 0) }\n value0 := abi_decode_string_fromMemory(add(headStart, offset), dataEnd)\n let offset_1 := mload(add(headStart, 32))\n if gt(offset_1, _1) { revert(0, 0) }\n value1 := abi_decode_string_fromMemory(add(headStart, offset_1), dataEnd)\n }\n function extract_byte_array_length(data) -> length\n {\n length := shr(1, data)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n if eq(outOfPlaceEncoding, lt(length, 32))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n }\n function array_dataslot_string_storage(ptr) -> data\n {\n mstore(0, ptr)\n data := keccak256(0, 0x20)\n }\n function clean_up_bytearray_end_slots_string_storage(array, len, startIndex)\n {\n if gt(len, 31)\n {\n let _1 := 0\n mstore(_1, array)\n let data := keccak256(_1, 0x20)\n let deleteStart := add(data, shr(5, add(startIndex, 31)))\n if lt(startIndex, 0x20) { deleteStart := data }\n let _2 := add(data, shr(5, add(len, 31)))\n let start := deleteStart\n for { } lt(start, _2) { start := add(start, 1) }\n { sstore(start, _1) }\n }\n }\n function extract_used_part_and_set_length_of_short_byte_array(data, len) -> used\n {\n used := or(and(data, not(shr(shl(3, len), not(0)))), shl(1, len))\n }\n function copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage(slot, src)\n {\n let newLen := mload(src)\n if gt(newLen, sub(shl(64, 1), 1)) { panic_error_0x41() }\n clean_up_bytearray_end_slots_string_storage(slot, extract_byte_array_length(sload(slot)), newLen)\n let srcOffset := 0\n let srcOffset_1 := 0x20\n srcOffset := srcOffset_1\n switch gt(newLen, 31)\n case 1 {\n let loopEnd := and(newLen, not(31))\n let dstPtr := array_dataslot_string_storage(slot)\n let i := 0\n for { } lt(i, loopEnd) { i := add(i, srcOffset_1) }\n {\n sstore(dstPtr, mload(add(src, srcOffset)))\n dstPtr := add(dstPtr, 1)\n srcOffset := add(srcOffset, srcOffset_1)\n }\n if lt(loopEnd, newLen)\n {\n let lastValue := mload(add(src, srcOffset))\n sstore(dstPtr, and(lastValue, not(shr(and(shl(3, newLen), 248), not(0)))))\n }\n sstore(slot, add(shl(1, newLen), 1))\n }\n default {\n let value := 0\n if newLen\n {\n value := mload(add(src, srcOffset))\n }\n sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, newLen))\n }\n }\n}","id":92,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60806040523480156200001157600080fd5b5060405162000bcb38038062000bcb83398101604081905262000034916200011f565b600362000042838262000218565b50600462000051828262000218565b505050620002e4565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200008257600080fd5b81516001600160401b03808211156200009f576200009f6200005a565b604051601f8301601f19908116603f01168101908282118183101715620000ca57620000ca6200005a565b81604052838152602092508683858801011115620000e757600080fd5b600091505b838210156200010b5785820183015181830184015290820190620000ec565b600093810190920192909252949350505050565b600080604083850312156200013357600080fd5b82516001600160401b03808211156200014b57600080fd5b620001598683870162000070565b935060208501519150808211156200017057600080fd5b506200017f8582860162000070565b9150509250929050565b600181811c908216806200019e57607f821691505b602082108103620001bf57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200021357600081815260208120601f850160051c81016020861015620001ee5750805b601f850160051c820191505b818110156200020f57828155600101620001fa565b5050505b505050565b81516001600160401b038111156200023457620002346200005a565b6200024c8162000245845462000189565b84620001c5565b602080601f8311600181146200028457600084156200026b5750858301515b600019600386901b1c1916600185901b1785556200020f565b600085815260208120601f198616915b82811015620002b55788860151825594840194600190910190840162000294565b5085821015620002d45787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6108d780620002f46000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c80633950935111610081578063a457c2d71161005b578063a457c2d714610187578063a9059cbb1461019a578063dd62ed3e146101ad57600080fd5b8063395093511461014357806370a082311461015657806395d89b411461017f57600080fd5b806318160ddd116100b257806318160ddd1461010f57806323b872dd14610121578063313ce5671461013457600080fd5b806306fdde03146100ce578063095ea7b3146100ec575b600080fd5b6100d66101e6565b6040516100e3919061074a565b60405180910390f35b6100ff6100fa3660046107b4565b610278565b60405190151581526020016100e3565b6002545b6040519081526020016100e3565b6100ff61012f3660046107de565b610292565b604051601281526020016100e3565b6100ff6101513660046107b4565b6102b6565b61011361016436600461081a565b6001600160a01b031660009081526020819052604090205490565b6100d66102f5565b6100ff6101953660046107b4565b610304565b6100ff6101a83660046107b4565b6103b3565b6101136101bb36600461083c565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f59061086f565b80601f01602080910402602001604051908101604052809291908181526020018280546102219061086f565b801561026e5780601f106102435761010080835404028352916020019161026e565b820191906000526020600020905b81548152906001019060200180831161025157829003601f168201915b5050505050905090565b6000336102868185856103c1565b60019150505b92915050565b6000336102a08582856104e5565b6102ab858585610577565b506001949350505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490919061028690829086906102f09087906108a9565b6103c1565b6060600480546101f59061086f565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909190838110156103a65760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6102ab82868684036103c1565b600033610286818585610577565b6001600160a01b0383166104235760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161039d565b6001600160a01b0382166104845760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161039d565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03838116600090815260016020908152604080832093861683529290522054600019811461057157818110156105645760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161039d565b61057184848484036103c1565b50505050565b6001600160a01b0383166105f35760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f6472657373000000000000000000000000000000000000000000000000000000606482015260840161039d565b6001600160a01b0382166106555760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161039d565b6001600160a01b038316600090815260208190526040902054818110156106e45760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e63650000000000000000000000000000000000000000000000000000606482015260840161039d565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610571565b600060208083528351808285015260005b818110156107775785810183015185820160400152820161075b565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146107af57600080fd5b919050565b600080604083850312156107c757600080fd5b6107d083610798565b946020939093013593505050565b6000806000606084860312156107f357600080fd5b6107fc84610798565b925061080a60208501610798565b9150604084013590509250925092565b60006020828403121561082c57600080fd5b61083582610798565b9392505050565b6000806040838503121561084f57600080fd5b61085883610798565b915061086660208401610798565b90509250929050565b600181811c9082168061088357607f821691505b6020821081036108a357634e487b7160e01b600052602260045260246000fd5b50919050565b8082018082111561028c57634e487b7160e01b600052601160045260246000fdfea164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0xBCB CODESIZE SUB DUP1 PUSH3 0xBCB DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x34 SWAP2 PUSH3 0x11F JUMP JUMPDEST PUSH1 0x3 PUSH3 0x42 DUP4 DUP3 PUSH3 0x218 JUMP JUMPDEST POP PUSH1 0x4 PUSH3 0x51 DUP3 DUP3 PUSH3 0x218 JUMP JUMPDEST POP POP POP PUSH3 0x2E4 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x82 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH3 0x9F JUMPI PUSH3 0x9F PUSH3 0x5A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP4 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP3 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH3 0xCA JUMPI PUSH3 0xCA PUSH3 0x5A JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP4 DUP2 MSTORE PUSH1 0x20 SWAP3 POP DUP7 DUP4 DUP6 DUP9 ADD ADD GT ISZERO PUSH3 0xE7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP2 POP JUMPDEST DUP4 DUP3 LT ISZERO PUSH3 0x10B JUMPI DUP6 DUP3 ADD DUP4 ADD MLOAD DUP2 DUP4 ADD DUP5 ADD MSTORE SWAP1 DUP3 ADD SWAP1 PUSH3 0xEC JUMP JUMPDEST PUSH1 0x0 SWAP4 DUP2 ADD SWAP1 SWAP3 ADD SWAP3 SWAP1 SWAP3 MSTORE SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x133 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH3 0x14B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x159 DUP7 DUP4 DUP8 ADD PUSH3 0x70 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD MLOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH3 0x170 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x17F DUP6 DUP3 DUP7 ADD PUSH3 0x70 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH3 0x19E JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH3 0x1BF JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH3 0x213 JUMPI PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP7 LT ISZERO PUSH3 0x1EE JUMPI POP DUP1 JUMPDEST PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x20F JUMPI DUP3 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x1FA JUMP JUMPDEST POP POP POP JUMPDEST POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH3 0x234 JUMPI PUSH3 0x234 PUSH3 0x5A JUMP JUMPDEST PUSH3 0x24C DUP2 PUSH3 0x245 DUP5 SLOAD PUSH3 0x189 JUMP JUMPDEST DUP5 PUSH3 0x1C5 JUMP JUMPDEST PUSH1 0x20 DUP1 PUSH1 0x1F DUP4 GT PUSH1 0x1 DUP2 EQ PUSH3 0x284 JUMPI PUSH1 0x0 DUP5 ISZERO PUSH3 0x26B JUMPI POP DUP6 DUP4 ADD MLOAD JUMPDEST PUSH1 0x0 NOT PUSH1 0x3 DUP7 SWAP1 SHL SHR NOT AND PUSH1 0x1 DUP6 SWAP1 SHL OR DUP6 SSTORE PUSH3 0x20F JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F NOT DUP7 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH3 0x2B5 JUMPI DUP9 DUP7 ADD MLOAD DUP3 SSTORE SWAP5 DUP5 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 DUP5 ADD PUSH3 0x294 JUMP JUMPDEST POP DUP6 DUP3 LT ISZERO PUSH3 0x2D4 JUMPI DUP8 DUP6 ADD MLOAD PUSH1 0x0 NOT PUSH1 0x3 DUP9 SWAP1 SHL PUSH1 0xF8 AND SHR NOT AND DUP2 SSTORE JUMPDEST POP POP POP POP POP PUSH1 0x1 SWAP1 DUP2 SHL ADD SWAP1 SSTORE POP JUMP JUMPDEST PUSH2 0x8D7 DUP1 PUSH3 0x2F4 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xC9 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x39509351 GT PUSH2 0x81 JUMPI DUP1 PUSH4 0xA457C2D7 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x187 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x19A JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x1AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x39509351 EQ PUSH2 0x143 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x156 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x17F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x18160DDD GT PUSH2 0xB2 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x10F JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x121 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x134 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xCE JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0xEC JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD6 PUSH2 0x1E6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xE3 SWAP2 SWAP1 PUSH2 0x74A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xFF PUSH2 0xFA CALLDATASIZE PUSH1 0x4 PUSH2 0x7B4 JUMP JUMPDEST PUSH2 0x278 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xE3 JUMP JUMPDEST PUSH1 0x2 SLOAD JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xE3 JUMP JUMPDEST PUSH2 0xFF PUSH2 0x12F CALLDATASIZE PUSH1 0x4 PUSH2 0x7DE JUMP JUMPDEST PUSH2 0x292 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x12 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xE3 JUMP JUMPDEST PUSH2 0xFF PUSH2 0x151 CALLDATASIZE PUSH1 0x4 PUSH2 0x7B4 JUMP JUMPDEST PUSH2 0x2B6 JUMP JUMPDEST PUSH2 0x113 PUSH2 0x164 CALLDATASIZE PUSH1 0x4 PUSH2 0x81A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0xD6 PUSH2 0x2F5 JUMP JUMPDEST PUSH2 0xFF PUSH2 0x195 CALLDATASIZE PUSH1 0x4 PUSH2 0x7B4 JUMP JUMPDEST PUSH2 0x304 JUMP JUMPDEST PUSH2 0xFF PUSH2 0x1A8 CALLDATASIZE PUSH1 0x4 PUSH2 0x7B4 JUMP JUMPDEST PUSH2 0x3B3 JUMP JUMPDEST PUSH2 0x113 PUSH2 0x1BB CALLDATASIZE PUSH1 0x4 PUSH2 0x83C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x3 DUP1 SLOAD PUSH2 0x1F5 SWAP1 PUSH2 0x86F JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x221 SWAP1 PUSH2 0x86F JUMP JUMPDEST DUP1 ISZERO PUSH2 0x26E JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x243 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x26E JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x251 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0x286 DUP2 DUP6 DUP6 PUSH2 0x3C1 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0x2A0 DUP6 DUP3 DUP6 PUSH2 0x4E5 JUMP JUMPDEST PUSH2 0x2AB DUP6 DUP6 DUP6 PUSH2 0x577 JUMP JUMPDEST POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 SWAP1 PUSH2 0x286 SWAP1 DUP3 SWAP1 DUP7 SWAP1 PUSH2 0x2F0 SWAP1 DUP8 SWAP1 PUSH2 0x8A9 JUMP JUMPDEST PUSH2 0x3C1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x4 DUP1 SLOAD PUSH2 0x1F5 SWAP1 PUSH2 0x86F JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 SWAP1 DUP4 DUP2 LT ISZERO PUSH2 0x3A6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A2064656372656173656420616C6C6F77616E63652062656C6F77 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x207A65726F000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2AB DUP3 DUP7 DUP7 DUP5 SUB PUSH2 0x3C1 JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0x286 DUP2 DUP6 DUP6 PUSH2 0x577 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x423 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x45524332303A20617070726F76652066726F6D20746865207A65726F20616464 PUSH1 0x44 DUP3 ADD MSTORE PUSH4 0x72657373 PUSH1 0xE0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x39D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x484 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20617070726F766520746F20746865207A65726F206164647265 PUSH1 0x44 DUP3 ADD MSTORE PUSH2 0x7373 PUSH1 0xF0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x39D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE SWAP1 MLOAD DUP5 DUP2 MSTORE PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP7 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0x0 NOT DUP2 EQ PUSH2 0x571 JUMPI DUP2 DUP2 LT ISZERO PUSH2 0x564 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E73756666696369656E7420616C6C6F77616E6365000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x39D JUMP JUMPDEST PUSH2 0x571 DUP5 DUP5 DUP5 DUP5 SUB PUSH2 0x3C1 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x5F3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E736665722066726F6D20746865207A65726F206164 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6472657373000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x39D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x655 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x23 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E7366657220746F20746865207A65726F2061646472 PUSH1 0x44 DUP3 ADD MSTORE PUSH3 0x657373 PUSH1 0xE8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x39D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 DUP2 LT ISZERO PUSH2 0x6E4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E7366657220616D6F756E7420657863656564732062 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x616C616E63650000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x39D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP8 SUB SWAP1 SSTORE SWAP4 DUP8 AND DUP1 DUP4 MSTORE SWAP2 DUP5 SWAP1 KECCAK256 DUP1 SLOAD DUP8 ADD SWAP1 SSTORE SWAP3 MLOAD DUP6 DUP2 MSTORE SWAP1 SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH2 0x571 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x777 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0x75B JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x40 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x40 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP3 POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x7AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x7C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7D0 DUP4 PUSH2 0x798 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x7F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7FC DUP5 PUSH2 0x798 JUMP JUMPDEST SWAP3 POP PUSH2 0x80A PUSH1 0x20 DUP6 ADD PUSH2 0x798 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x82C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x835 DUP3 PUSH2 0x798 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x84F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x858 DUP4 PUSH2 0x798 JUMP JUMPDEST SWAP2 POP PUSH2 0x866 PUSH1 0x20 DUP5 ADD PUSH2 0x798 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x883 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x8A3 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x28C JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"1532:11312:26:-:0;;;1980:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2046:5;:13;2054:5;2046;:13;:::i;:::-;-1:-1:-1;2069:7:26;:17;2079:7;2069;:17;:::i;:::-;;1980:113;;1532:11312;;14:127:92;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:840;200:5;253:3;246:4;238:6;234:17;230:27;220:55;;271:1;268;261:12;220:55;294:13;;-1:-1:-1;;;;;356:10:92;;;353:36;;;369:18;;:::i;:::-;444:2;438:9;412:2;498:13;;-1:-1:-1;;494:22:92;;;518:2;490:31;486:40;474:53;;;542:18;;;562:22;;;539:46;536:72;;;588:18;;:::i;:::-;628:10;624:2;617:22;663:2;655:6;648:18;685:4;675:14;;730:3;725:2;720;712:6;708:15;704:24;701:33;698:53;;;747:1;744;737:12;698:53;769:1;760:10;;779:133;793:2;790:1;787:9;779:133;;;881:14;;;877:23;;871:30;850:14;;;846:23;;839:63;804:10;;;;779:133;;;954:1;932:15;;;928:24;;;921:35;;;;936:6;146:840;-1:-1:-1;;;;146:840:92:o;991:562::-;1090:6;1098;1151:2;1139:9;1130:7;1126:23;1122:32;1119:52;;;1167:1;1164;1157:12;1119:52;1194:16;;-1:-1:-1;;;;;1259:14:92;;;1256:34;;;1286:1;1283;1276:12;1256:34;1309:61;1362:7;1353:6;1342:9;1338:22;1309:61;:::i;:::-;1299:71;;1416:2;1405:9;1401:18;1395:25;1379:41;;1445:2;1435:8;1432:16;1429:36;;;1461:1;1458;1451:12;1429:36;;1484:63;1539:7;1528:8;1517:9;1513:24;1484:63;:::i;:::-;1474:73;;;991:562;;;;;:::o;1558:380::-;1637:1;1633:12;;;;1680;;;1701:61;;1755:4;1747:6;1743:17;1733:27;;1701:61;1808:2;1800:6;1797:14;1777:18;1774:38;1771:161;;1854:10;1849:3;1845:20;1842:1;1835:31;1889:4;1886:1;1879:15;1917:4;1914:1;1907:15;1771:161;;1558:380;;;:::o;2069:545::-;2171:2;2166:3;2163:11;2160:448;;;2207:1;2232:5;2228:2;2221:17;2277:4;2273:2;2263:19;2347:2;2335:10;2331:19;2328:1;2324:27;2318:4;2314:38;2383:4;2371:10;2368:20;2365:47;;;-1:-1:-1;2406:4:92;2365:47;2461:2;2456:3;2452:12;2449:1;2445:20;2439:4;2435:31;2425:41;;2516:82;2534:2;2527:5;2524:13;2516:82;;;2579:17;;;2560:1;2549:13;2516:82;;;2520:3;;;2160:448;2069:545;;;:::o;2790:1352::-;2910:10;;-1:-1:-1;;;;;2932:30:92;;2929:56;;;2965:18;;:::i;:::-;2994:97;3084:6;3044:38;3076:4;3070:11;3044:38;:::i;:::-;3038:4;2994:97;:::i;:::-;3146:4;;3210:2;3199:14;;3227:1;3222:663;;;;3929:1;3946:6;3943:89;;;-1:-1:-1;3998:19:92;;;3992:26;3943:89;-1:-1:-1;;2747:1:92;2743:11;;;2739:24;2735:29;2725:40;2771:1;2767:11;;;2722:57;4045:81;;3192:944;;3222:663;2016:1;2009:14;;;2053:4;2040:18;;-1:-1:-1;;3258:20:92;;;3376:236;3390:7;3387:1;3384:14;3376:236;;;3479:19;;;3473:26;3458:42;;3571:27;;;;3539:1;3527:14;;;;3406:19;;3376:236;;;3380:3;3640:6;3631:7;3628:19;3625:201;;;3701:19;;;3695:26;-1:-1:-1;;3784:1:92;3780:14;;;3796:3;3776:24;3772:37;3768:42;3753:58;3738:74;;3625:201;-1:-1:-1;;;;;3872:1:92;3856:14;;;3852:22;3839:36;;-1:-1:-1;2790:1352:92:o;:::-;1532:11312:26;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_afterTokenTransfer_7742":{"entryPoint":null,"id":7742,"parameterSlots":3,"returnSlots":0},"@_approve_7677":{"entryPoint":961,"id":7677,"parameterSlots":3,"returnSlots":0},"@_beforeTokenTransfer_7731":{"entryPoint":null,"id":7731,"parameterSlots":3,"returnSlots":0},"@_msgSender_9276":{"entryPoint":null,"id":9276,"parameterSlots":0,"returnSlots":1},"@_spendAllowance_7720":{"entryPoint":1253,"id":7720,"parameterSlots":3,"returnSlots":0},"@_transfer_7503":{"entryPoint":1399,"id":7503,"parameterSlots":3,"returnSlots":0},"@allowance_7298":{"entryPoint":null,"id":7298,"parameterSlots":2,"returnSlots":1},"@approve_7323":{"entryPoint":632,"id":7323,"parameterSlots":2,"returnSlots":1},"@balanceOf_7255":{"entryPoint":null,"id":7255,"parameterSlots":1,"returnSlots":1},"@decimals_7231":{"entryPoint":null,"id":7231,"parameterSlots":0,"returnSlots":1},"@decreaseAllowance_7426":{"entryPoint":772,"id":7426,"parameterSlots":2,"returnSlots":1},"@increaseAllowance_7385":{"entryPoint":694,"id":7385,"parameterSlots":2,"returnSlots":1},"@name_7211":{"entryPoint":486,"id":7211,"parameterSlots":0,"returnSlots":1},"@symbol_7221":{"entryPoint":757,"id":7221,"parameterSlots":0,"returnSlots":1},"@totalSupply_7241":{"entryPoint":null,"id":7241,"parameterSlots":0,"returnSlots":1},"@transferFrom_7356":{"entryPoint":658,"id":7356,"parameterSlots":3,"returnSlots":1},"@transfer_7280":{"entryPoint":947,"id":7280,"parameterSlots":2,"returnSlots":1},"abi_decode_address":{"entryPoint":1944,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_tuple_t_address":{"entryPoint":2074,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_address":{"entryPoint":2108,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_addresst_uint256":{"entryPoint":2014,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_addresst_uint256":{"entryPoint":1972,"id":null,"parameterSlots":2,"returnSlots":2},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":1866,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_3b6607e091cba9325f958656d2b5e0622ab7dc0eac71a26ac788cb25bc19f4fe__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"checked_add_t_uint256":{"entryPoint":2217,"id":null,"parameterSlots":2,"returnSlots":1},"extract_byte_array_length":{"entryPoint":2159,"id":null,"parameterSlots":1,"returnSlots":1}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:5777:92","statements":[{"nodeType":"YulBlock","src":"6:3:92","statements":[]},{"body":{"nodeType":"YulBlock","src":"135:427:92","statements":[{"nodeType":"YulVariableDeclaration","src":"145:12:92","value":{"kind":"number","nodeType":"YulLiteral","src":"155:2:92","type":"","value":"32"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"149:2:92","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"173:9:92"},{"name":"_1","nodeType":"YulIdentifier","src":"184:2:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"166:6:92"},"nodeType":"YulFunctionCall","src":"166:21:92"},"nodeType":"YulExpressionStatement","src":"166:21:92"},{"nodeType":"YulVariableDeclaration","src":"196:27:92","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"216:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"210:5:92"},"nodeType":"YulFunctionCall","src":"210:13:92"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"200:6:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"243:9:92"},{"name":"_1","nodeType":"YulIdentifier","src":"254:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"239:3:92"},"nodeType":"YulFunctionCall","src":"239:18:92"},{"name":"length","nodeType":"YulIdentifier","src":"259:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"232:6:92"},"nodeType":"YulFunctionCall","src":"232:34:92"},"nodeType":"YulExpressionStatement","src":"232:34:92"},{"nodeType":"YulVariableDeclaration","src":"275:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"284:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"279:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"344:90:92","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"373:9:92"},{"name":"i","nodeType":"YulIdentifier","src":"384:1:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"369:3:92"},"nodeType":"YulFunctionCall","src":"369:17:92"},{"kind":"number","nodeType":"YulLiteral","src":"388:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"365:3:92"},"nodeType":"YulFunctionCall","src":"365:26:92"},{"arguments":[{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"407:6:92"},{"name":"i","nodeType":"YulIdentifier","src":"415:1:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"403:3:92"},"nodeType":"YulFunctionCall","src":"403:14:92"},{"name":"_1","nodeType":"YulIdentifier","src":"419:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"399:3:92"},"nodeType":"YulFunctionCall","src":"399:23:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"393:5:92"},"nodeType":"YulFunctionCall","src":"393:30:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"358:6:92"},"nodeType":"YulFunctionCall","src":"358:66:92"},"nodeType":"YulExpressionStatement","src":"358:66:92"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"305:1:92"},{"name":"length","nodeType":"YulIdentifier","src":"308:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"302:2:92"},"nodeType":"YulFunctionCall","src":"302:13:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"316:19:92","statements":[{"nodeType":"YulAssignment","src":"318:15:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"327:1:92"},{"name":"_1","nodeType":"YulIdentifier","src":"330:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"323:3:92"},"nodeType":"YulFunctionCall","src":"323:10:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"318:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"298:3:92","statements":[]},"src":"294:140:92"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"458:9:92"},{"name":"length","nodeType":"YulIdentifier","src":"469:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"454:3:92"},"nodeType":"YulFunctionCall","src":"454:22:92"},{"kind":"number","nodeType":"YulLiteral","src":"478:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"450:3:92"},"nodeType":"YulFunctionCall","src":"450:31:92"},{"kind":"number","nodeType":"YulLiteral","src":"483:1:92","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"443:6:92"},"nodeType":"YulFunctionCall","src":"443:42:92"},"nodeType":"YulExpressionStatement","src":"443:42:92"},{"nodeType":"YulAssignment","src":"494:62:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"510:9:92"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"529:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"537:2:92","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"525:3:92"},"nodeType":"YulFunctionCall","src":"525:15:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"546:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"542:3:92"},"nodeType":"YulFunctionCall","src":"542:7:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"521:3:92"},"nodeType":"YulFunctionCall","src":"521:29:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"506:3:92"},"nodeType":"YulFunctionCall","src":"506:45:92"},{"kind":"number","nodeType":"YulLiteral","src":"553:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"502:3:92"},"nodeType":"YulFunctionCall","src":"502:54:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"494:4:92"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"104:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"115:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"126:4:92","type":""}],"src":"14:548:92"},{"body":{"nodeType":"YulBlock","src":"616:147:92","statements":[{"nodeType":"YulAssignment","src":"626:29:92","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"648:6:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"635:12:92"},"nodeType":"YulFunctionCall","src":"635:20:92"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"626:5:92"}]},{"body":{"nodeType":"YulBlock","src":"741:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"750:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"753:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"743:6:92"},"nodeType":"YulFunctionCall","src":"743:12:92"},"nodeType":"YulExpressionStatement","src":"743:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"677:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"688:5:92"},{"kind":"number","nodeType":"YulLiteral","src":"695:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"684:3:92"},"nodeType":"YulFunctionCall","src":"684:54:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"674:2:92"},"nodeType":"YulFunctionCall","src":"674:65:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"667:6:92"},"nodeType":"YulFunctionCall","src":"667:73:92"},"nodeType":"YulIf","src":"664:93:92"}]},"name":"abi_decode_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"595:6:92","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"606:5:92","type":""}],"src":"567:196:92"},{"body":{"nodeType":"YulBlock","src":"855:167:92","statements":[{"body":{"nodeType":"YulBlock","src":"901:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"910:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"913:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"903:6:92"},"nodeType":"YulFunctionCall","src":"903:12:92"},"nodeType":"YulExpressionStatement","src":"903:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"876:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"885:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"872:3:92"},"nodeType":"YulFunctionCall","src":"872:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"897:2:92","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"868:3:92"},"nodeType":"YulFunctionCall","src":"868:32:92"},"nodeType":"YulIf","src":"865:52:92"},{"nodeType":"YulAssignment","src":"926:39:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"955:9:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"936:18:92"},"nodeType":"YulFunctionCall","src":"936:29:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"926:6:92"}]},{"nodeType":"YulAssignment","src":"974:42:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1001:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1012:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"997:3:92"},"nodeType":"YulFunctionCall","src":"997:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"984:12:92"},"nodeType":"YulFunctionCall","src":"984:32:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"974:6:92"}]}]},"name":"abi_decode_tuple_t_addresst_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"813:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"824:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"836:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"844:6:92","type":""}],"src":"768:254:92"},{"body":{"nodeType":"YulBlock","src":"1122:92:92","statements":[{"nodeType":"YulAssignment","src":"1132:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1144:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1155:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1140:3:92"},"nodeType":"YulFunctionCall","src":"1140:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1132:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1174:9:92"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1199:6:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1192:6:92"},"nodeType":"YulFunctionCall","src":"1192:14:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1185:6:92"},"nodeType":"YulFunctionCall","src":"1185:22:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1167:6:92"},"nodeType":"YulFunctionCall","src":"1167:41:92"},"nodeType":"YulExpressionStatement","src":"1167:41:92"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1091:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1102:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1113:4:92","type":""}],"src":"1027:187:92"},{"body":{"nodeType":"YulBlock","src":"1320:76:92","statements":[{"nodeType":"YulAssignment","src":"1330:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1342:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1353:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1338:3:92"},"nodeType":"YulFunctionCall","src":"1338:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1330:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1372:9:92"},{"name":"value0","nodeType":"YulIdentifier","src":"1383:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1365:6:92"},"nodeType":"YulFunctionCall","src":"1365:25:92"},"nodeType":"YulExpressionStatement","src":"1365:25:92"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1289:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1300:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1311:4:92","type":""}],"src":"1219:177:92"},{"body":{"nodeType":"YulBlock","src":"1505:224:92","statements":[{"body":{"nodeType":"YulBlock","src":"1551:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1560:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1563:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1553:6:92"},"nodeType":"YulFunctionCall","src":"1553:12:92"},"nodeType":"YulExpressionStatement","src":"1553:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1526:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"1535:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1522:3:92"},"nodeType":"YulFunctionCall","src":"1522:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"1547:2:92","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1518:3:92"},"nodeType":"YulFunctionCall","src":"1518:32:92"},"nodeType":"YulIf","src":"1515:52:92"},{"nodeType":"YulAssignment","src":"1576:39:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1605:9:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"1586:18:92"},"nodeType":"YulFunctionCall","src":"1586:29:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1576:6:92"}]},{"nodeType":"YulAssignment","src":"1624:48:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1657:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1668:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1653:3:92"},"nodeType":"YulFunctionCall","src":"1653:18:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"1634:18:92"},"nodeType":"YulFunctionCall","src":"1634:38:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1624:6:92"}]},{"nodeType":"YulAssignment","src":"1681:42:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1708:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1719:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1704:3:92"},"nodeType":"YulFunctionCall","src":"1704:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1691:12:92"},"nodeType":"YulFunctionCall","src":"1691:32:92"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"1681:6:92"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1455:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1466:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1478:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1486:6:92","type":""},{"name":"value2","nodeType":"YulTypedName","src":"1494:6:92","type":""}],"src":"1401:328:92"},{"body":{"nodeType":"YulBlock","src":"1831:87:92","statements":[{"nodeType":"YulAssignment","src":"1841:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1853:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1864:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1849:3:92"},"nodeType":"YulFunctionCall","src":"1849:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1841:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1883:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1898:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"1906:4:92","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1894:3:92"},"nodeType":"YulFunctionCall","src":"1894:17:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1876:6:92"},"nodeType":"YulFunctionCall","src":"1876:36:92"},"nodeType":"YulExpressionStatement","src":"1876:36:92"}]},"name":"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1800:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1811:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1822:4:92","type":""}],"src":"1734:184:92"},{"body":{"nodeType":"YulBlock","src":"1993:116:92","statements":[{"body":{"nodeType":"YulBlock","src":"2039:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2048:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2051:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2041:6:92"},"nodeType":"YulFunctionCall","src":"2041:12:92"},"nodeType":"YulExpressionStatement","src":"2041:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2014:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"2023:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2010:3:92"},"nodeType":"YulFunctionCall","src":"2010:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"2035:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2006:3:92"},"nodeType":"YulFunctionCall","src":"2006:32:92"},"nodeType":"YulIf","src":"2003:52:92"},{"nodeType":"YulAssignment","src":"2064:39:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2093:9:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"2074:18:92"},"nodeType":"YulFunctionCall","src":"2074:29:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2064:6:92"}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1959:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1970:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1982:6:92","type":""}],"src":"1923:186:92"},{"body":{"nodeType":"YulBlock","src":"2201:173:92","statements":[{"body":{"nodeType":"YulBlock","src":"2247:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2256:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2259:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2249:6:92"},"nodeType":"YulFunctionCall","src":"2249:12:92"},"nodeType":"YulExpressionStatement","src":"2249:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2222:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"2231:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2218:3:92"},"nodeType":"YulFunctionCall","src":"2218:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"2243:2:92","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2214:3:92"},"nodeType":"YulFunctionCall","src":"2214:32:92"},"nodeType":"YulIf","src":"2211:52:92"},{"nodeType":"YulAssignment","src":"2272:39:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2301:9:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"2282:18:92"},"nodeType":"YulFunctionCall","src":"2282:29:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2272:6:92"}]},{"nodeType":"YulAssignment","src":"2320:48:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2353:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2364:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2349:3:92"},"nodeType":"YulFunctionCall","src":"2349:18:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"2330:18:92"},"nodeType":"YulFunctionCall","src":"2330:38:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"2320:6:92"}]}]},"name":"abi_decode_tuple_t_addresst_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2159:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2170:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2182:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2190:6:92","type":""}],"src":"2114:260:92"},{"body":{"nodeType":"YulBlock","src":"2434:325:92","statements":[{"nodeType":"YulAssignment","src":"2444:22:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2458:1:92","type":"","value":"1"},{"name":"data","nodeType":"YulIdentifier","src":"2461:4:92"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"2454:3:92"},"nodeType":"YulFunctionCall","src":"2454:12:92"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"2444:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"2475:38:92","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"2505:4:92"},{"kind":"number","nodeType":"YulLiteral","src":"2511:1:92","type":"","value":"1"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2501:3:92"},"nodeType":"YulFunctionCall","src":"2501:12:92"},"variables":[{"name":"outOfPlaceEncoding","nodeType":"YulTypedName","src":"2479:18:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"2552:31:92","statements":[{"nodeType":"YulAssignment","src":"2554:27:92","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"2568:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"2576:4:92","type":"","value":"0x7f"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2564:3:92"},"nodeType":"YulFunctionCall","src":"2564:17:92"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"2554:6:92"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"2532:18:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2525:6:92"},"nodeType":"YulFunctionCall","src":"2525:26:92"},"nodeType":"YulIf","src":"2522:61:92"},{"body":{"nodeType":"YulBlock","src":"2642:111:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2663:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2670:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"2675:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2666:3:92"},"nodeType":"YulFunctionCall","src":"2666:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2656:6:92"},"nodeType":"YulFunctionCall","src":"2656:31:92"},"nodeType":"YulExpressionStatement","src":"2656:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2707:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"2710:4:92","type":"","value":"0x22"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2700:6:92"},"nodeType":"YulFunctionCall","src":"2700:15:92"},"nodeType":"YulExpressionStatement","src":"2700:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2735:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2738:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2728:6:92"},"nodeType":"YulFunctionCall","src":"2728:15:92"},"nodeType":"YulExpressionStatement","src":"2728:15:92"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"2598:18:92"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"2621:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"2629:2:92","type":"","value":"32"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2618:2:92"},"nodeType":"YulFunctionCall","src":"2618:14:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"2595:2:92"},"nodeType":"YulFunctionCall","src":"2595:38:92"},"nodeType":"YulIf","src":"2592:161:92"}]},"name":"extract_byte_array_length","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"2414:4:92","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"2423:6:92","type":""}],"src":"2379:380:92"},{"body":{"nodeType":"YulBlock","src":"2812:174:92","statements":[{"nodeType":"YulAssignment","src":"2822:16:92","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"2833:1:92"},{"name":"y","nodeType":"YulIdentifier","src":"2836:1:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2829:3:92"},"nodeType":"YulFunctionCall","src":"2829:9:92"},"variableNames":[{"name":"sum","nodeType":"YulIdentifier","src":"2822:3:92"}]},{"body":{"nodeType":"YulBlock","src":"2869:111:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2890:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2897:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"2902:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2893:3:92"},"nodeType":"YulFunctionCall","src":"2893:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2883:6:92"},"nodeType":"YulFunctionCall","src":"2883:31:92"},"nodeType":"YulExpressionStatement","src":"2883:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2934:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"2937:4:92","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2927:6:92"},"nodeType":"YulFunctionCall","src":"2927:15:92"},"nodeType":"YulExpressionStatement","src":"2927:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2962:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2965:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2955:6:92"},"nodeType":"YulFunctionCall","src":"2955:15:92"},"nodeType":"YulExpressionStatement","src":"2955:15:92"}]},"condition":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"2853:1:92"},{"name":"sum","nodeType":"YulIdentifier","src":"2856:3:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2850:2:92"},"nodeType":"YulFunctionCall","src":"2850:10:92"},"nodeType":"YulIf","src":"2847:133:92"}]},"name":"checked_add_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"2795:1:92","type":""},{"name":"y","nodeType":"YulTypedName","src":"2798:1:92","type":""}],"returnVariables":[{"name":"sum","nodeType":"YulTypedName","src":"2804:3:92","type":""}],"src":"2764:222:92"},{"body":{"nodeType":"YulBlock","src":"3165:227:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3182:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3193:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3175:6:92"},"nodeType":"YulFunctionCall","src":"3175:21:92"},"nodeType":"YulExpressionStatement","src":"3175:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3216:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3227:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3212:3:92"},"nodeType":"YulFunctionCall","src":"3212:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"3232:2:92","type":"","value":"37"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3205:6:92"},"nodeType":"YulFunctionCall","src":"3205:30:92"},"nodeType":"YulExpressionStatement","src":"3205:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3255:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3266:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3251:3:92"},"nodeType":"YulFunctionCall","src":"3251:18:92"},{"hexValue":"45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77","kind":"string","nodeType":"YulLiteral","src":"3271:34:92","type":"","value":"ERC20: decreased allowance below"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3244:6:92"},"nodeType":"YulFunctionCall","src":"3244:62:92"},"nodeType":"YulExpressionStatement","src":"3244:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3326:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3337:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3322:3:92"},"nodeType":"YulFunctionCall","src":"3322:18:92"},{"hexValue":"207a65726f","kind":"string","nodeType":"YulLiteral","src":"3342:7:92","type":"","value":" zero"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3315:6:92"},"nodeType":"YulFunctionCall","src":"3315:35:92"},"nodeType":"YulExpressionStatement","src":"3315:35:92"},{"nodeType":"YulAssignment","src":"3359:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3371:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3382:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3367:3:92"},"nodeType":"YulFunctionCall","src":"3367:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3359:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3142:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3156:4:92","type":""}],"src":"2991:401:92"},{"body":{"nodeType":"YulBlock","src":"3571:226:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3588:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3599:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3581:6:92"},"nodeType":"YulFunctionCall","src":"3581:21:92"},"nodeType":"YulExpressionStatement","src":"3581:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3622:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3633:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3618:3:92"},"nodeType":"YulFunctionCall","src":"3618:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"3638:2:92","type":"","value":"36"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3611:6:92"},"nodeType":"YulFunctionCall","src":"3611:30:92"},"nodeType":"YulExpressionStatement","src":"3611:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3661:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3672:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3657:3:92"},"nodeType":"YulFunctionCall","src":"3657:18:92"},{"hexValue":"45524332303a20617070726f76652066726f6d20746865207a65726f20616464","kind":"string","nodeType":"YulLiteral","src":"3677:34:92","type":"","value":"ERC20: approve from the zero add"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3650:6:92"},"nodeType":"YulFunctionCall","src":"3650:62:92"},"nodeType":"YulExpressionStatement","src":"3650:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3732:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3743:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3728:3:92"},"nodeType":"YulFunctionCall","src":"3728:18:92"},{"hexValue":"72657373","kind":"string","nodeType":"YulLiteral","src":"3748:6:92","type":"","value":"ress"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3721:6:92"},"nodeType":"YulFunctionCall","src":"3721:34:92"},"nodeType":"YulExpressionStatement","src":"3721:34:92"},{"nodeType":"YulAssignment","src":"3764:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3776:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3787:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3772:3:92"},"nodeType":"YulFunctionCall","src":"3772:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3764:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3548:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3562:4:92","type":""}],"src":"3397:400:92"},{"body":{"nodeType":"YulBlock","src":"3976:224:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3993:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4004:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3986:6:92"},"nodeType":"YulFunctionCall","src":"3986:21:92"},"nodeType":"YulExpressionStatement","src":"3986:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4027:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4038:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4023:3:92"},"nodeType":"YulFunctionCall","src":"4023:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"4043:2:92","type":"","value":"34"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4016:6:92"},"nodeType":"YulFunctionCall","src":"4016:30:92"},"nodeType":"YulExpressionStatement","src":"4016:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4066:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4077:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4062:3:92"},"nodeType":"YulFunctionCall","src":"4062:18:92"},{"hexValue":"45524332303a20617070726f766520746f20746865207a65726f206164647265","kind":"string","nodeType":"YulLiteral","src":"4082:34:92","type":"","value":"ERC20: approve to the zero addre"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4055:6:92"},"nodeType":"YulFunctionCall","src":"4055:62:92"},"nodeType":"YulExpressionStatement","src":"4055:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4137:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4148:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4133:3:92"},"nodeType":"YulFunctionCall","src":"4133:18:92"},{"hexValue":"7373","kind":"string","nodeType":"YulLiteral","src":"4153:4:92","type":"","value":"ss"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4126:6:92"},"nodeType":"YulFunctionCall","src":"4126:32:92"},"nodeType":"YulExpressionStatement","src":"4126:32:92"},{"nodeType":"YulAssignment","src":"4167:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4179:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4190:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4175:3:92"},"nodeType":"YulFunctionCall","src":"4175:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4167:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3953:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3967:4:92","type":""}],"src":"3802:398:92"},{"body":{"nodeType":"YulBlock","src":"4379:179:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4396:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4407:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4389:6:92"},"nodeType":"YulFunctionCall","src":"4389:21:92"},"nodeType":"YulExpressionStatement","src":"4389:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4430:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4441:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4426:3:92"},"nodeType":"YulFunctionCall","src":"4426:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"4446:2:92","type":"","value":"29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4419:6:92"},"nodeType":"YulFunctionCall","src":"4419:30:92"},"nodeType":"YulExpressionStatement","src":"4419:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4469:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4480:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4465:3:92"},"nodeType":"YulFunctionCall","src":"4465:18:92"},{"hexValue":"45524332303a20696e73756666696369656e7420616c6c6f77616e6365","kind":"string","nodeType":"YulLiteral","src":"4485:31:92","type":"","value":"ERC20: insufficient allowance"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4458:6:92"},"nodeType":"YulFunctionCall","src":"4458:59:92"},"nodeType":"YulExpressionStatement","src":"4458:59:92"},{"nodeType":"YulAssignment","src":"4526:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4538:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4549:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4534:3:92"},"nodeType":"YulFunctionCall","src":"4534:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4526:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_3b6607e091cba9325f958656d2b5e0622ab7dc0eac71a26ac788cb25bc19f4fe__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4356:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4370:4:92","type":""}],"src":"4205:353:92"},{"body":{"nodeType":"YulBlock","src":"4737:227:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4754:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4765:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4747:6:92"},"nodeType":"YulFunctionCall","src":"4747:21:92"},"nodeType":"YulExpressionStatement","src":"4747:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4788:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4799:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4784:3:92"},"nodeType":"YulFunctionCall","src":"4784:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"4804:2:92","type":"","value":"37"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4777:6:92"},"nodeType":"YulFunctionCall","src":"4777:30:92"},"nodeType":"YulExpressionStatement","src":"4777:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4827:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4838:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4823:3:92"},"nodeType":"YulFunctionCall","src":"4823:18:92"},{"hexValue":"45524332303a207472616e736665722066726f6d20746865207a65726f206164","kind":"string","nodeType":"YulLiteral","src":"4843:34:92","type":"","value":"ERC20: transfer from the zero ad"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4816:6:92"},"nodeType":"YulFunctionCall","src":"4816:62:92"},"nodeType":"YulExpressionStatement","src":"4816:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4898:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4909:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4894:3:92"},"nodeType":"YulFunctionCall","src":"4894:18:92"},{"hexValue":"6472657373","kind":"string","nodeType":"YulLiteral","src":"4914:7:92","type":"","value":"dress"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4887:6:92"},"nodeType":"YulFunctionCall","src":"4887:35:92"},"nodeType":"YulExpressionStatement","src":"4887:35:92"},{"nodeType":"YulAssignment","src":"4931:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4943:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4954:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4939:3:92"},"nodeType":"YulFunctionCall","src":"4939:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4931:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4714:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4728:4:92","type":""}],"src":"4563:401:92"},{"body":{"nodeType":"YulBlock","src":"5143:225:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5160:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5171:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5153:6:92"},"nodeType":"YulFunctionCall","src":"5153:21:92"},"nodeType":"YulExpressionStatement","src":"5153:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5194:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5205:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5190:3:92"},"nodeType":"YulFunctionCall","src":"5190:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"5210:2:92","type":"","value":"35"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5183:6:92"},"nodeType":"YulFunctionCall","src":"5183:30:92"},"nodeType":"YulExpressionStatement","src":"5183:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5233:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5244:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5229:3:92"},"nodeType":"YulFunctionCall","src":"5229:18:92"},{"hexValue":"45524332303a207472616e7366657220746f20746865207a65726f2061646472","kind":"string","nodeType":"YulLiteral","src":"5249:34:92","type":"","value":"ERC20: transfer to the zero addr"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5222:6:92"},"nodeType":"YulFunctionCall","src":"5222:62:92"},"nodeType":"YulExpressionStatement","src":"5222:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5304:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5315:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5300:3:92"},"nodeType":"YulFunctionCall","src":"5300:18:92"},{"hexValue":"657373","kind":"string","nodeType":"YulLiteral","src":"5320:5:92","type":"","value":"ess"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5293:6:92"},"nodeType":"YulFunctionCall","src":"5293:33:92"},"nodeType":"YulExpressionStatement","src":"5293:33:92"},{"nodeType":"YulAssignment","src":"5335:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5347:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5358:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5343:3:92"},"nodeType":"YulFunctionCall","src":"5343:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5335:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5120:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5134:4:92","type":""}],"src":"4969:399:92"},{"body":{"nodeType":"YulBlock","src":"5547:228:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5564:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5575:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5557:6:92"},"nodeType":"YulFunctionCall","src":"5557:21:92"},"nodeType":"YulExpressionStatement","src":"5557:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5598:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5609:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5594:3:92"},"nodeType":"YulFunctionCall","src":"5594:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"5614:2:92","type":"","value":"38"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5587:6:92"},"nodeType":"YulFunctionCall","src":"5587:30:92"},"nodeType":"YulExpressionStatement","src":"5587:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5637:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5648:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5633:3:92"},"nodeType":"YulFunctionCall","src":"5633:18:92"},{"hexValue":"45524332303a207472616e7366657220616d6f756e7420657863656564732062","kind":"string","nodeType":"YulLiteral","src":"5653:34:92","type":"","value":"ERC20: transfer amount exceeds b"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5626:6:92"},"nodeType":"YulFunctionCall","src":"5626:62:92"},"nodeType":"YulExpressionStatement","src":"5626:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5708:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5719:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5704:3:92"},"nodeType":"YulFunctionCall","src":"5704:18:92"},{"hexValue":"616c616e6365","kind":"string","nodeType":"YulLiteral","src":"5724:8:92","type":"","value":"alance"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5697:6:92"},"nodeType":"YulFunctionCall","src":"5697:36:92"},"nodeType":"YulExpressionStatement","src":"5697:36:92"},{"nodeType":"YulAssignment","src":"5742:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5754:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5765:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5750:3:92"},"nodeType":"YulFunctionCall","src":"5750:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5742:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5524:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5538:4:92","type":""}],"src":"5373:402:92"}]},"contents":"{\n { }\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n let _1 := 32\n mstore(headStart, _1)\n let length := mload(value0)\n mstore(add(headStart, _1), length)\n let i := 0\n for { } lt(i, length) { i := add(i, _1) }\n {\n mstore(add(add(headStart, i), 64), mload(add(add(value0, i), _1)))\n }\n mstore(add(add(headStart, length), 64), 0)\n tail := add(add(headStart, and(add(length, 31), not(31))), 64)\n }\n function abi_decode_address(offset) -> value\n {\n value := calldataload(offset)\n if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := calldataload(add(headStart, 32))\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := abi_decode_address(add(headStart, 32))\n value2 := calldataload(add(headStart, 64))\n }\n function abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xff))\n }\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n }\n function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := abi_decode_address(add(headStart, 32))\n }\n function extract_byte_array_length(data) -> length\n {\n length := shr(1, data)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n if eq(outOfPlaceEncoding, lt(length, 32))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n }\n function checked_add_t_uint256(x, y) -> sum\n {\n sum := add(x, y)\n if gt(x, sum)\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n }\n function abi_encode_tuple_t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 37)\n mstore(add(headStart, 64), \"ERC20: decreased allowance below\")\n mstore(add(headStart, 96), \" zero\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 36)\n mstore(add(headStart, 64), \"ERC20: approve from the zero add\")\n mstore(add(headStart, 96), \"ress\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 34)\n mstore(add(headStart, 64), \"ERC20: approve to the zero addre\")\n mstore(add(headStart, 96), \"ss\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_3b6607e091cba9325f958656d2b5e0622ab7dc0eac71a26ac788cb25bc19f4fe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 29)\n mstore(add(headStart, 64), \"ERC20: insufficient allowance\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 37)\n mstore(add(headStart, 64), \"ERC20: transfer from the zero ad\")\n mstore(add(headStart, 96), \"dress\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 35)\n mstore(add(headStart, 64), \"ERC20: transfer to the zero addr\")\n mstore(add(headStart, 96), \"ess\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 38)\n mstore(add(headStart, 64), \"ERC20: transfer amount exceeds b\")\n mstore(add(headStart, 96), \"alance\")\n tail := add(headStart, 128)\n }\n}","id":92,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100c95760003560e01c80633950935111610081578063a457c2d71161005b578063a457c2d714610187578063a9059cbb1461019a578063dd62ed3e146101ad57600080fd5b8063395093511461014357806370a082311461015657806395d89b411461017f57600080fd5b806318160ddd116100b257806318160ddd1461010f57806323b872dd14610121578063313ce5671461013457600080fd5b806306fdde03146100ce578063095ea7b3146100ec575b600080fd5b6100d66101e6565b6040516100e3919061074a565b60405180910390f35b6100ff6100fa3660046107b4565b610278565b60405190151581526020016100e3565b6002545b6040519081526020016100e3565b6100ff61012f3660046107de565b610292565b604051601281526020016100e3565b6100ff6101513660046107b4565b6102b6565b61011361016436600461081a565b6001600160a01b031660009081526020819052604090205490565b6100d66102f5565b6100ff6101953660046107b4565b610304565b6100ff6101a83660046107b4565b6103b3565b6101136101bb36600461083c565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f59061086f565b80601f01602080910402602001604051908101604052809291908181526020018280546102219061086f565b801561026e5780601f106102435761010080835404028352916020019161026e565b820191906000526020600020905b81548152906001019060200180831161025157829003601f168201915b5050505050905090565b6000336102868185856103c1565b60019150505b92915050565b6000336102a08582856104e5565b6102ab858585610577565b506001949350505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490919061028690829086906102f09087906108a9565b6103c1565b6060600480546101f59061086f565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909190838110156103a65760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6102ab82868684036103c1565b600033610286818585610577565b6001600160a01b0383166104235760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161039d565b6001600160a01b0382166104845760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161039d565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03838116600090815260016020908152604080832093861683529290522054600019811461057157818110156105645760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161039d565b61057184848484036103c1565b50505050565b6001600160a01b0383166105f35760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f6472657373000000000000000000000000000000000000000000000000000000606482015260840161039d565b6001600160a01b0382166106555760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161039d565b6001600160a01b038316600090815260208190526040902054818110156106e45760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e63650000000000000000000000000000000000000000000000000000606482015260840161039d565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610571565b600060208083528351808285015260005b818110156107775785810183015185820160400152820161075b565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146107af57600080fd5b919050565b600080604083850312156107c757600080fd5b6107d083610798565b946020939093013593505050565b6000806000606084860312156107f357600080fd5b6107fc84610798565b925061080a60208501610798565b9150604084013590509250925092565b60006020828403121561082c57600080fd5b61083582610798565b9392505050565b6000806040838503121561084f57600080fd5b61085883610798565b915061086660208401610798565b90509250929050565b600181811c9082168061088357607f821691505b6020821081036108a357634e487b7160e01b600052602260045260246000fd5b50919050565b8082018082111561028c57634e487b7160e01b600052601160045260246000fdfea164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xC9 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x39509351 GT PUSH2 0x81 JUMPI DUP1 PUSH4 0xA457C2D7 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x187 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x19A JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x1AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x39509351 EQ PUSH2 0x143 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x156 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x17F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x18160DDD GT PUSH2 0xB2 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x10F JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x121 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x134 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xCE JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0xEC JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD6 PUSH2 0x1E6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xE3 SWAP2 SWAP1 PUSH2 0x74A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xFF PUSH2 0xFA CALLDATASIZE PUSH1 0x4 PUSH2 0x7B4 JUMP JUMPDEST PUSH2 0x278 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xE3 JUMP JUMPDEST PUSH1 0x2 SLOAD JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xE3 JUMP JUMPDEST PUSH2 0xFF PUSH2 0x12F CALLDATASIZE PUSH1 0x4 PUSH2 0x7DE JUMP JUMPDEST PUSH2 0x292 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x12 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xE3 JUMP JUMPDEST PUSH2 0xFF PUSH2 0x151 CALLDATASIZE PUSH1 0x4 PUSH2 0x7B4 JUMP JUMPDEST PUSH2 0x2B6 JUMP JUMPDEST PUSH2 0x113 PUSH2 0x164 CALLDATASIZE PUSH1 0x4 PUSH2 0x81A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0xD6 PUSH2 0x2F5 JUMP JUMPDEST PUSH2 0xFF PUSH2 0x195 CALLDATASIZE PUSH1 0x4 PUSH2 0x7B4 JUMP JUMPDEST PUSH2 0x304 JUMP JUMPDEST PUSH2 0xFF PUSH2 0x1A8 CALLDATASIZE PUSH1 0x4 PUSH2 0x7B4 JUMP JUMPDEST PUSH2 0x3B3 JUMP JUMPDEST PUSH2 0x113 PUSH2 0x1BB CALLDATASIZE PUSH1 0x4 PUSH2 0x83C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x3 DUP1 SLOAD PUSH2 0x1F5 SWAP1 PUSH2 0x86F JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x221 SWAP1 PUSH2 0x86F JUMP JUMPDEST DUP1 ISZERO PUSH2 0x26E JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x243 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x26E JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x251 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0x286 DUP2 DUP6 DUP6 PUSH2 0x3C1 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0x2A0 DUP6 DUP3 DUP6 PUSH2 0x4E5 JUMP JUMPDEST PUSH2 0x2AB DUP6 DUP6 DUP6 PUSH2 0x577 JUMP JUMPDEST POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 SWAP1 PUSH2 0x286 SWAP1 DUP3 SWAP1 DUP7 SWAP1 PUSH2 0x2F0 SWAP1 DUP8 SWAP1 PUSH2 0x8A9 JUMP JUMPDEST PUSH2 0x3C1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x4 DUP1 SLOAD PUSH2 0x1F5 SWAP1 PUSH2 0x86F JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 SWAP1 DUP4 DUP2 LT ISZERO PUSH2 0x3A6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A2064656372656173656420616C6C6F77616E63652062656C6F77 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x207A65726F000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2AB DUP3 DUP7 DUP7 DUP5 SUB PUSH2 0x3C1 JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0x286 DUP2 DUP6 DUP6 PUSH2 0x577 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x423 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x45524332303A20617070726F76652066726F6D20746865207A65726F20616464 PUSH1 0x44 DUP3 ADD MSTORE PUSH4 0x72657373 PUSH1 0xE0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x39D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x484 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20617070726F766520746F20746865207A65726F206164647265 PUSH1 0x44 DUP3 ADD MSTORE PUSH2 0x7373 PUSH1 0xF0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x39D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE SWAP1 MLOAD DUP5 DUP2 MSTORE PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP7 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0x0 NOT DUP2 EQ PUSH2 0x571 JUMPI DUP2 DUP2 LT ISZERO PUSH2 0x564 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E73756666696369656E7420616C6C6F77616E6365000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x39D JUMP JUMPDEST PUSH2 0x571 DUP5 DUP5 DUP5 DUP5 SUB PUSH2 0x3C1 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x5F3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E736665722066726F6D20746865207A65726F206164 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6472657373000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x39D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x655 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x23 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E7366657220746F20746865207A65726F2061646472 PUSH1 0x44 DUP3 ADD MSTORE PUSH3 0x657373 PUSH1 0xE8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x39D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 DUP2 LT ISZERO PUSH2 0x6E4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E7366657220616D6F756E7420657863656564732062 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x616C616E63650000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x39D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP8 SUB SWAP1 SSTORE SWAP4 DUP8 AND DUP1 DUP4 MSTORE SWAP2 DUP5 SWAP1 KECCAK256 DUP1 SLOAD DUP8 ADD SWAP1 SSTORE SWAP3 MLOAD DUP6 DUP2 MSTORE SWAP1 SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH2 0x571 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x777 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0x75B JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x40 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x40 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP3 POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x7AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x7C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7D0 DUP4 PUSH2 0x798 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x7F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7FC DUP5 PUSH2 0x798 JUMP JUMPDEST SWAP3 POP PUSH2 0x80A PUSH1 0x20 DUP6 ADD PUSH2 0x798 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x82C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x835 DUP3 PUSH2 0x798 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x84F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x858 DUP4 PUSH2 0x798 JUMP JUMPDEST SWAP2 POP PUSH2 0x866 PUSH1 0x20 DUP5 ADD PUSH2 0x798 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x883 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x8A3 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x28C JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"1532:11312:26:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2158:98;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4444:197;;;;;;:::i;:::-;;:::i;:::-;;;1192:14:92;;1185:22;1167:41;;1155:2;1140:18;4444:197:26;1027:187:92;3255:106:26;3342:12;;3255:106;;;1365:25:92;;;1353:2;1338:18;3255:106:26;1219:177:92;5203:256:26;;;;;;:::i;:::-;;:::i;3104:91::-;;;3186:2;1876:36:92;;1864:2;1849:18;3104:91:26;1734:184:92;5854:234:26;;;;;;:::i;:::-;;:::i;3419:125::-;;;;;;:::i;:::-;-1:-1:-1;;;;;3519:18:26;3493:7;3519:18;;;;;;;;;;;;3419:125;2369:102;;;:::i;6575:427::-;;;;;;:::i;:::-;;:::i;3740:189::-;;;;;;:::i;:::-;;:::i;3987:149::-;;;;;;:::i;:::-;-1:-1:-1;;;;;4102:18:26;;;4076:7;4102:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3987:149;2158:98;2212:13;2244:5;2237:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2158:98;:::o;4444:197::-;4527:4;734:10:34;4581:32:26;734:10:34;4597:7:26;4606:6;4581:8;:32::i;:::-;4630:4;4623:11;;;4444:197;;;;;:::o;5203:256::-;5300:4;734:10:34;5356:38:26;5372:4;734:10:34;5387:6:26;5356:15;:38::i;:::-;5404:27;5414:4;5420:2;5424:6;5404:9;:27::i;:::-;-1:-1:-1;5448:4:26;;5203:256;-1:-1:-1;;;;5203:256:26:o;5854:234::-;734:10:34;5942:4:26;4102:18;;;:11;:18;;;;;;;;-1:-1:-1;;;;;4102:27:26;;;;;;;;;;5942:4;;734:10:34;5996:64:26;;734:10:34;;4102:27:26;;6021:38;;6049:10;;6021:38;:::i;:::-;5996:8;:64::i;2369:102::-;2425:13;2457:7;2450:14;;;;;:::i;6575:427::-;734:10:34;6668:4:26;4102:18;;;:11;:18;;;;;;;;-1:-1:-1;;;;;4102:27:26;;;;;;;;;;6668:4;;734:10:34;6812:15:26;6792:16;:35;;6784:85;;;;-1:-1:-1;;;6784:85:26;;3193:2:92;6784:85:26;;;3175:21:92;3232:2;3212:18;;;3205:30;3271:34;3251:18;;;3244:62;3342:7;3322:18;;;3315:35;3367:19;;6784:85:26;;;;;;;;;6903:60;6912:5;6919:7;6947:15;6928:16;:34;6903:8;:60::i;3740:189::-;3819:4;734:10:34;3873:28:26;734:10:34;3890:2:26;3894:6;3873:9;:28::i;10457:340::-;-1:-1:-1;;;;;10558:19:26;;10550:68;;;;-1:-1:-1;;;10550:68:26;;3599:2:92;10550:68:26;;;3581:21:92;3638:2;3618:18;;;3611:30;3677:34;3657:18;;;3650:62;-1:-1:-1;;;3728:18:92;;;3721:34;3772:19;;10550:68:26;3397:400:92;10550:68:26;-1:-1:-1;;;;;10636:21:26;;10628:68;;;;-1:-1:-1;;;10628:68:26;;4004:2:92;10628:68:26;;;3986:21:92;4043:2;4023:18;;;4016:30;4082:34;4062:18;;;4055:62;-1:-1:-1;;;4133:18:92;;;4126:32;4175:19;;10628:68:26;3802:398:92;10628:68:26;-1:-1:-1;;;;;10707:18:26;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;10758:32;;1365:25:92;;;10758:32:26;;1338:18:92;10758:32:26;;;;;;;10457:340;;;:::o;11078:411::-;-1:-1:-1;;;;;4102:18:26;;;11178:24;4102:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;-1:-1:-1;;11244:37:26;;11240:243;;11325:6;11305:16;:26;;11297:68;;;;-1:-1:-1;;;11297:68:26;;4407:2:92;11297:68:26;;;4389:21:92;4446:2;4426:18;;;4419:30;4485:31;4465:18;;;4458:59;4534:18;;11297:68:26;4205:353:92;11297:68:26;11407:51;11416:5;11423:7;11451:6;11432:16;:25;11407:8;:51::i;:::-;11168:321;11078:411;;;:::o;7456:788::-;-1:-1:-1;;;;;7552:18:26;;7544:68;;;;-1:-1:-1;;;7544:68:26;;4765:2:92;7544:68:26;;;4747:21:92;4804:2;4784:18;;;4777:30;4843:34;4823:18;;;4816:62;4914:7;4894:18;;;4887:35;4939:19;;7544:68:26;4563:401:92;7544:68:26;-1:-1:-1;;;;;7630:16:26;;7622:64;;;;-1:-1:-1;;;7622:64:26;;5171:2:92;7622:64:26;;;5153:21:92;5210:2;5190:18;;;5183:30;5249:34;5229:18;;;5222:62;-1:-1:-1;;;5300:18:92;;;5293:33;5343:19;;7622:64:26;4969:399:92;7622:64:26;-1:-1:-1;;;;;7768:15:26;;7746:19;7768:15;;;;;;;;;;;7801:21;;;;7793:72;;;;-1:-1:-1;;;7793:72:26;;5575:2:92;7793:72:26;;;5557:21:92;5614:2;5594:18;;;5587:30;5653:34;5633:18;;;5626:62;5724:8;5704:18;;;5697:36;5750:19;;7793:72:26;5373:402:92;7793:72:26;-1:-1:-1;;;;;7899:15:26;;;:9;:15;;;;;;;;;;;7917:20;;;7899:38;;8114:13;;;;;;;;;;:23;;;;;;8163:26;;1365:25:92;;;8114:13:26;;8163:26;;1338:18:92;8163:26:26;;;;;;;8200:37;12073:91;14:548:92;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:196::-;635:20;;-1:-1:-1;;;;;684:54:92;;674:65;;664:93;;753:1;750;743:12;664:93;567:196;;;:::o;768:254::-;836:6;844;897:2;885:9;876:7;872:23;868:32;865:52;;;913:1;910;903:12;865:52;936:29;955:9;936:29;:::i;:::-;926:39;1012:2;997:18;;;;984:32;;-1:-1:-1;;;768:254:92:o;1401:328::-;1478:6;1486;1494;1547:2;1535:9;1526:7;1522:23;1518:32;1515:52;;;1563:1;1560;1553:12;1515:52;1586:29;1605:9;1586:29;:::i;:::-;1576:39;;1634:38;1668:2;1657:9;1653:18;1634:38;:::i;:::-;1624:48;;1719:2;1708:9;1704:18;1691:32;1681:42;;1401:328;;;;;:::o;1923:186::-;1982:6;2035:2;2023:9;2014:7;2010:23;2006:32;2003:52;;;2051:1;2048;2041:12;2003:52;2074:29;2093:9;2074:29;:::i;:::-;2064:39;1923:186;-1:-1:-1;;;1923:186:92:o;2114:260::-;2182:6;2190;2243:2;2231:9;2222:7;2218:23;2214:32;2211:52;;;2259:1;2256;2249:12;2211:52;2282:29;2301:9;2282:29;:::i;:::-;2272:39;;2330:38;2364:2;2353:9;2349:18;2330:38;:::i;:::-;2320:48;;2114:260;;;;;:::o;2379:380::-;2458:1;2454:12;;;;2501;;;2522:61;;2576:4;2568:6;2564:17;2554:27;;2522:61;2629:2;2621:6;2618:14;2598:18;2595:38;2592:161;;2675:10;2670:3;2666:20;2663:1;2656:31;2710:4;2707:1;2700:15;2738:4;2735:1;2728:15;2592:161;;2379:380;;;:::o;2764:222::-;2829:9;;;2850:10;;;2847:133;;;2902:10;2897:3;2893:20;2890:1;2883:31;2937:4;2934:1;2927:15;2965:4;2962:1;2955:15"},"gasEstimates":{"creation":{"codeDepositCost":"452600","executionCost":"infinite","totalCost":"infinite"},"external":{"allowance(address,address)":"infinite","approve(address,uint256)":"24651","balanceOf(address)":"2585","decimals()":"244","decreaseAllowance(address,uint256)":"26922","increaseAllowance(address,uint256)":"infinite","name()":"infinite","symbol()":"infinite","totalSupply()":"2304","transfer(address,uint256)":"51094","transferFrom(address,address,uint256)":"infinite"},"internal":{"_afterTokenTransfer(address,address,uint256)":"infinite","_approve(address,address,uint256)":"infinite","_beforeTokenTransfer(address,address,uint256)":"infinite","_burn(address,uint256)":"infinite","_mint(address,uint256)":"infinite","_spendAllowance(address,address,uint256)":"infinite","_transfer(address,address,uint256)":"infinite"}},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","decreaseAllowance(address,uint256)":"a457c2d7","increaseAllowance(address,uint256)":"39509351","name()":"06fdde03","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of the {IERC20} interface. This implementation is agnostic to the way tokens are created. This means that a supply mechanism has to be added in a derived contract using {_mint}. For a generic mechanism see {ERC20PresetMinterPauser}. TIP: For a detailed writeup see our guide https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How to implement supply mechanisms]. The default value of {decimals} is 18. To change this, you should override this function so it returns a different value. We have followed general OpenZeppelin Contracts guidelines: functions revert instead returning `false` on failure. This behavior is nonetheless conventional and does not conflict with the expectations of ERC20 applications. Additionally, an {Approval} event is emitted on calls to {transferFrom}. This allows applications to reconstruct the allowance for all accounts just by listening to said events. Other implementations of the EIP may not emit these events, as it isn't required by the specification. Finally, the non-standard {decreaseAllowance} and {increaseAllowance} functions have been added to mitigate the well-known issues around setting allowances. See {IERC20-approve}.\",\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"constructor\":{\"details\":\"Sets the values for {name} and {symbol}. All two of these values are immutable: they can only be set once during construction.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `amount`. - the caller must have allowance for ``from``'s tokens of at least `amount`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":\"ERC20\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/ERC20.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC20.sol\\\";\\nimport \\\"./extensions/IERC20Metadata.sol\\\";\\nimport \\\"../../utils/Context.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC20} interface.\\n *\\n * This implementation is agnostic to the way tokens are created. This means\\n * that a supply mechanism has to be added in a derived contract using {_mint}.\\n * For a generic mechanism see {ERC20PresetMinterPauser}.\\n *\\n * TIP: For a detailed writeup see our guide\\n * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How\\n * to implement supply mechanisms].\\n *\\n * The default value of {decimals} is 18. To change this, you should override\\n * this function so it returns a different value.\\n *\\n * We have followed general OpenZeppelin Contracts guidelines: functions revert\\n * instead returning `false` on failure. This behavior is nonetheless\\n * conventional and does not conflict with the expectations of ERC20\\n * applications.\\n *\\n * Additionally, an {Approval} event is emitted on calls to {transferFrom}.\\n * This allows applications to reconstruct the allowance for all accounts just\\n * by listening to said events. Other implementations of the EIP may not emit\\n * these events, as it isn't required by the specification.\\n *\\n * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}\\n * functions have been added to mitigate the well-known issues around setting\\n * allowances. See {IERC20-approve}.\\n */\\ncontract ERC20 is Context, IERC20, IERC20Metadata {\\n mapping(address => uint256) private _balances;\\n\\n mapping(address => mapping(address => uint256)) private _allowances;\\n\\n uint256 private _totalSupply;\\n\\n string private _name;\\n string private _symbol;\\n\\n /**\\n * @dev Sets the values for {name} and {symbol}.\\n *\\n * All two of these values are immutable: they can only be set once during\\n * construction.\\n */\\n constructor(string memory name_, string memory symbol_) {\\n _name = name_;\\n _symbol = symbol_;\\n }\\n\\n /**\\n * @dev Returns the name of the token.\\n */\\n function name() public view virtual override returns (string memory) {\\n return _name;\\n }\\n\\n /**\\n * @dev Returns the symbol of the token, usually a shorter version of the\\n * name.\\n */\\n function symbol() public view virtual override returns (string memory) {\\n return _symbol;\\n }\\n\\n /**\\n * @dev Returns the number of decimals used to get its user representation.\\n * For example, if `decimals` equals `2`, a balance of `505` tokens should\\n * be displayed to a user as `5.05` (`505 / 10 ** 2`).\\n *\\n * Tokens usually opt for a value of 18, imitating the relationship between\\n * Ether and Wei. This is the default value returned by this function, unless\\n * it's overridden.\\n *\\n * NOTE: This information is only used for _display_ purposes: it in\\n * no way affects any of the arithmetic of the contract, including\\n * {IERC20-balanceOf} and {IERC20-transfer}.\\n */\\n function decimals() public view virtual override returns (uint8) {\\n return 18;\\n }\\n\\n /**\\n * @dev See {IERC20-totalSupply}.\\n */\\n function totalSupply() public view virtual override returns (uint256) {\\n return _totalSupply;\\n }\\n\\n /**\\n * @dev See {IERC20-balanceOf}.\\n */\\n function balanceOf(address account) public view virtual override returns (uint256) {\\n return _balances[account];\\n }\\n\\n /**\\n * @dev See {IERC20-transfer}.\\n *\\n * Requirements:\\n *\\n * - `to` cannot be the zero address.\\n * - the caller must have a balance of at least `amount`.\\n */\\n function transfer(address to, uint256 amount) public virtual override returns (bool) {\\n address owner = _msgSender();\\n _transfer(owner, to, amount);\\n return true;\\n }\\n\\n /**\\n * @dev See {IERC20-allowance}.\\n */\\n function allowance(address owner, address spender) public view virtual override returns (uint256) {\\n return _allowances[owner][spender];\\n }\\n\\n /**\\n * @dev See {IERC20-approve}.\\n *\\n * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on\\n * `transferFrom`. This is semantically equivalent to an infinite approval.\\n *\\n * Requirements:\\n *\\n * - `spender` cannot be the zero address.\\n */\\n function approve(address spender, uint256 amount) public virtual override returns (bool) {\\n address owner = _msgSender();\\n _approve(owner, spender, amount);\\n return true;\\n }\\n\\n /**\\n * @dev See {IERC20-transferFrom}.\\n *\\n * Emits an {Approval} event indicating the updated allowance. This is not\\n * required by the EIP. See the note at the beginning of {ERC20}.\\n *\\n * NOTE: Does not update the allowance if the current allowance\\n * is the maximum `uint256`.\\n *\\n * Requirements:\\n *\\n * - `from` and `to` cannot be the zero address.\\n * - `from` must have a balance of at least `amount`.\\n * - the caller must have allowance for ``from``'s tokens of at least\\n * `amount`.\\n */\\n function transferFrom(address from, address to, uint256 amount) public virtual override returns (bool) {\\n address spender = _msgSender();\\n _spendAllowance(from, spender, amount);\\n _transfer(from, to, amount);\\n return true;\\n }\\n\\n /**\\n * @dev Atomically increases the allowance granted to `spender` by the caller.\\n *\\n * This is an alternative to {approve} that can be used as a mitigation for\\n * problems described in {IERC20-approve}.\\n *\\n * Emits an {Approval} event indicating the updated allowance.\\n *\\n * Requirements:\\n *\\n * - `spender` cannot be the zero address.\\n */\\n function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {\\n address owner = _msgSender();\\n _approve(owner, spender, allowance(owner, spender) + addedValue);\\n return true;\\n }\\n\\n /**\\n * @dev Atomically decreases the allowance granted to `spender` by the caller.\\n *\\n * This is an alternative to {approve} that can be used as a mitigation for\\n * problems described in {IERC20-approve}.\\n *\\n * Emits an {Approval} event indicating the updated allowance.\\n *\\n * Requirements:\\n *\\n * - `spender` cannot be the zero address.\\n * - `spender` must have allowance for the caller of at least\\n * `subtractedValue`.\\n */\\n function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {\\n address owner = _msgSender();\\n uint256 currentAllowance = allowance(owner, spender);\\n require(currentAllowance >= subtractedValue, \\\"ERC20: decreased allowance below zero\\\");\\n unchecked {\\n _approve(owner, spender, currentAllowance - subtractedValue);\\n }\\n\\n return true;\\n }\\n\\n /**\\n * @dev Moves `amount` of tokens from `from` to `to`.\\n *\\n * This internal function is equivalent to {transfer}, and can be used to\\n * e.g. implement automatic token fees, slashing mechanisms, etc.\\n *\\n * Emits a {Transfer} event.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `to` cannot be the zero address.\\n * - `from` must have a balance of at least `amount`.\\n */\\n function _transfer(address from, address to, uint256 amount) internal virtual {\\n require(from != address(0), \\\"ERC20: transfer from the zero address\\\");\\n require(to != address(0), \\\"ERC20: transfer to the zero address\\\");\\n\\n _beforeTokenTransfer(from, to, amount);\\n\\n uint256 fromBalance = _balances[from];\\n require(fromBalance >= amount, \\\"ERC20: transfer amount exceeds balance\\\");\\n unchecked {\\n _balances[from] = fromBalance - amount;\\n // Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by\\n // decrementing then incrementing.\\n _balances[to] += amount;\\n }\\n\\n emit Transfer(from, to, amount);\\n\\n _afterTokenTransfer(from, to, amount);\\n }\\n\\n /** @dev Creates `amount` tokens and assigns them to `account`, increasing\\n * the total supply.\\n *\\n * Emits a {Transfer} event with `from` set to the zero address.\\n *\\n * Requirements:\\n *\\n * - `account` cannot be the zero address.\\n */\\n function _mint(address account, uint256 amount) internal virtual {\\n require(account != address(0), \\\"ERC20: mint to the zero address\\\");\\n\\n _beforeTokenTransfer(address(0), account, amount);\\n\\n _totalSupply += amount;\\n unchecked {\\n // Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above.\\n _balances[account] += amount;\\n }\\n emit Transfer(address(0), account, amount);\\n\\n _afterTokenTransfer(address(0), account, amount);\\n }\\n\\n /**\\n * @dev Destroys `amount` tokens from `account`, reducing the\\n * total supply.\\n *\\n * Emits a {Transfer} event with `to` set to the zero address.\\n *\\n * Requirements:\\n *\\n * - `account` cannot be the zero address.\\n * - `account` must have at least `amount` tokens.\\n */\\n function _burn(address account, uint256 amount) internal virtual {\\n require(account != address(0), \\\"ERC20: burn from the zero address\\\");\\n\\n _beforeTokenTransfer(account, address(0), amount);\\n\\n uint256 accountBalance = _balances[account];\\n require(accountBalance >= amount, \\\"ERC20: burn amount exceeds balance\\\");\\n unchecked {\\n _balances[account] = accountBalance - amount;\\n // Overflow not possible: amount <= accountBalance <= totalSupply.\\n _totalSupply -= amount;\\n }\\n\\n emit Transfer(account, address(0), amount);\\n\\n _afterTokenTransfer(account, address(0), amount);\\n }\\n\\n /**\\n * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.\\n *\\n * This internal function is equivalent to `approve`, and can be used to\\n * e.g. set automatic allowances for certain subsystems, etc.\\n *\\n * Emits an {Approval} event.\\n *\\n * Requirements:\\n *\\n * - `owner` cannot be the zero address.\\n * - `spender` cannot be the zero address.\\n */\\n function _approve(address owner, address spender, uint256 amount) internal virtual {\\n require(owner != address(0), \\\"ERC20: approve from the zero address\\\");\\n require(spender != address(0), \\\"ERC20: approve to the zero address\\\");\\n\\n _allowances[owner][spender] = amount;\\n emit Approval(owner, spender, amount);\\n }\\n\\n /**\\n * @dev Updates `owner` s allowance for `spender` based on spent `amount`.\\n *\\n * Does not update the allowance amount in case of infinite allowance.\\n * Revert if not enough allowance is available.\\n *\\n * Might emit an {Approval} event.\\n */\\n function _spendAllowance(address owner, address spender, uint256 amount) internal virtual {\\n uint256 currentAllowance = allowance(owner, spender);\\n if (currentAllowance != type(uint256).max) {\\n require(currentAllowance >= amount, \\\"ERC20: insufficient allowance\\\");\\n unchecked {\\n _approve(owner, spender, currentAllowance - amount);\\n }\\n }\\n }\\n\\n /**\\n * @dev Hook that is called before any transfer of tokens. This includes\\n * minting and burning.\\n *\\n * Calling conditions:\\n *\\n * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\\n * will be transferred to `to`.\\n * - when `from` is zero, `amount` tokens will be minted for `to`.\\n * - when `to` is zero, `amount` of ``from``'s tokens will be burned.\\n * - `from` and `to` are never both zero.\\n *\\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n */\\n function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual {}\\n\\n /**\\n * @dev Hook that is called after any transfer of tokens. This includes\\n * minting and burning.\\n *\\n * Calling conditions:\\n *\\n * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\\n * has been transferred to `to`.\\n * - when `from` is zero, `amount` tokens have been minted for `to`.\\n * - when `to` is zero, `amount` of ``from``'s tokens have been burned.\\n * - `from` and `to` are never both zero.\\n *\\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n */\\n function _afterTokenTransfer(address from, address to, uint256 amount) internal virtual {}\\n}\\n\",\"keccak256\":\"0xa56ca923f70c1748830700250b19c61b70db9a683516dc5e216694a50445d99c\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n /**\\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n * another (`to`).\\n *\\n * Note that `value` may be zero.\\n */\\n event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n /**\\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n * a call to {approve}. `value` is the new allowance.\\n */\\n event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n /**\\n * @dev Returns the amount of tokens in existence.\\n */\\n function totalSupply() external view returns (uint256);\\n\\n /**\\n * @dev Returns the amount of tokens owned by `account`.\\n */\\n function balanceOf(address account) external view returns (uint256);\\n\\n /**\\n * @dev Moves `amount` tokens from the caller's account to `to`.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transfer(address to, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Returns the remaining number of tokens that `spender` will be\\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n * zero by default.\\n *\\n * This value changes when {approve} or {transferFrom} are called.\\n */\\n function allowance(address owner, address spender) external view returns (uint256);\\n\\n /**\\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n * that someone may use both the old and the new allowance by unfortunate\\n * transaction ordering. One possible solution to mitigate this race\\n * condition is to first reduce the spender's allowance to 0 and set the\\n * desired value afterwards:\\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n *\\n * Emits an {Approval} event.\\n */\\n function approve(address spender, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Moves `amount` tokens from `from` to `to` using the\\n * allowance mechanism. `amount` is then deducted from the caller's\\n * allowance.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transferFrom(address from, address to, uint256 amount) external returns (bool);\\n}\\n\",\"keccak256\":\"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC20.sol\\\";\\n\\n/**\\n * @dev Interface for the optional metadata functions from the ERC20 standard.\\n *\\n * _Available since v4.1._\\n */\\ninterface IERC20Metadata is IERC20 {\\n /**\\n * @dev Returns the name of the token.\\n */\\n function name() external view returns (string memory);\\n\\n /**\\n * @dev Returns the symbol of the token.\\n */\\n function symbol() external view returns (string memory);\\n\\n /**\\n * @dev Returns the decimals places of the token.\\n */\\n function decimals() external view returns (uint8);\\n}\\n\",\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n function _contextSuffixLength() internal view virtual returns (uint256) {\\n return 0;\\n }\\n}\\n\",\"keccak256\":\"0xa92e4fa126feb6907daa0513ddd816b2eb91f30a808de54f63c17d0e162c3439\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":7172,"contract":"@openzeppelin/contracts/token/ERC20/ERC20.sol:ERC20","label":"_balances","offset":0,"slot":"0","type":"t_mapping(t_address,t_uint256)"},{"astId":7178,"contract":"@openzeppelin/contracts/token/ERC20/ERC20.sol:ERC20","label":"_allowances","offset":0,"slot":"1","type":"t_mapping(t_address,t_mapping(t_address,t_uint256))"},{"astId":7180,"contract":"@openzeppelin/contracts/token/ERC20/ERC20.sol:ERC20","label":"_totalSupply","offset":0,"slot":"2","type":"t_uint256"},{"astId":7182,"contract":"@openzeppelin/contracts/token/ERC20/ERC20.sol:ERC20","label":"_name","offset":0,"slot":"3","type":"t_string_storage"},{"astId":7184,"contract":"@openzeppelin/contracts/token/ERC20/ERC20.sol:ERC20","label":"_symbol","offset":0,"slot":"4","type":"t_string_storage"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_mapping(t_address,t_mapping(t_address,t_uint256))":{"encoding":"mapping","key":"t_address","label":"mapping(address => mapping(address => uint256))","numberOfBytes":"32","value":"t_mapping(t_address,t_uint256)"},"t_mapping(t_address,t_uint256)":{"encoding":"mapping","key":"t_address","label":"mapping(address => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_string_storage":{"encoding":"bytes","label":"string","numberOfBytes":"32"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/token/ERC20/IERC20.sol":{"IERC20":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"Interface of the ERC20 standard as defined in the EIP.","events":{"Approval(address,address,uint256)":{"details":"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance."},"Transfer(address,address,uint256)":{"details":"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero."}},"kind":"dev","methods":{"allowance(address,address)":{"details":"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called."},"approve(address,uint256)":{"details":"Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event."},"balanceOf(address)":{"details":"Returns the amount of tokens owned by `account`."},"totalSupply()":{"details":"Returns the amount of tokens in existence."},"transfer(address,uint256)":{"details":"Moves `amount` tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."},"transferFrom(address,address,uint256)":{"details":"Moves `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC20 standard as defined in the EIP.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the amount of tokens owned by `account`.\"},\"totalSupply()\":{\"details\":\"Returns the amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves `amount` tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":\"IERC20\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n /**\\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n * another (`to`).\\n *\\n * Note that `value` may be zero.\\n */\\n event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n /**\\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n * a call to {approve}. `value` is the new allowance.\\n */\\n event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n /**\\n * @dev Returns the amount of tokens in existence.\\n */\\n function totalSupply() external view returns (uint256);\\n\\n /**\\n * @dev Returns the amount of tokens owned by `account`.\\n */\\n function balanceOf(address account) external view returns (uint256);\\n\\n /**\\n * @dev Moves `amount` tokens from the caller's account to `to`.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transfer(address to, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Returns the remaining number of tokens that `spender` will be\\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n * zero by default.\\n *\\n * This value changes when {approve} or {transferFrom} are called.\\n */\\n function allowance(address owner, address spender) external view returns (uint256);\\n\\n /**\\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n * that someone may use both the old and the new allowance by unfortunate\\n * transaction ordering. One possible solution to mitigate this race\\n * condition is to first reduce the spender's allowance to 0 and set the\\n * desired value afterwards:\\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n *\\n * Emits an {Approval} event.\\n */\\n function approve(address spender, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Moves `amount` tokens from `from` to `to` using the\\n * allowance mechanism. `amount` is then deducted from the caller's\\n * allowance.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transferFrom(address from, address to, uint256 amount) external returns (bool);\\n}\\n\",\"keccak256\":\"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"IERC20Metadata":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"Interface for the optional metadata functions from the ERC20 standard. _Available since v4.1._","kind":"dev","methods":{"allowance(address,address)":{"details":"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called."},"approve(address,uint256)":{"details":"Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event."},"balanceOf(address)":{"details":"Returns the amount of tokens owned by `account`."},"decimals()":{"details":"Returns the decimals places of the token."},"name()":{"details":"Returns the name of the token."},"symbol()":{"details":"Returns the symbol of the token."},"totalSupply()":{"details":"Returns the amount of tokens in existence."},"transfer(address,uint256)":{"details":"Moves `amount` tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."},"transferFrom(address,address,uint256)":{"details":"Moves `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","name()":"06fdde03","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface for the optional metadata functions from the ERC20 standard. _Available since v4.1._\",\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the amount of tokens owned by `account`.\"},\"decimals()\":{\"details\":\"Returns the decimals places of the token.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token.\"},\"totalSupply()\":{\"details\":\"Returns the amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves `amount` tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":\"IERC20Metadata\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n /**\\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n * another (`to`).\\n *\\n * Note that `value` may be zero.\\n */\\n event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n /**\\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n * a call to {approve}. `value` is the new allowance.\\n */\\n event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n /**\\n * @dev Returns the amount of tokens in existence.\\n */\\n function totalSupply() external view returns (uint256);\\n\\n /**\\n * @dev Returns the amount of tokens owned by `account`.\\n */\\n function balanceOf(address account) external view returns (uint256);\\n\\n /**\\n * @dev Moves `amount` tokens from the caller's account to `to`.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transfer(address to, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Returns the remaining number of tokens that `spender` will be\\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n * zero by default.\\n *\\n * This value changes when {approve} or {transferFrom} are called.\\n */\\n function allowance(address owner, address spender) external view returns (uint256);\\n\\n /**\\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n * that someone may use both the old and the new allowance by unfortunate\\n * transaction ordering. One possible solution to mitigate this race\\n * condition is to first reduce the spender's allowance to 0 and set the\\n * desired value afterwards:\\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n *\\n * Emits an {Approval} event.\\n */\\n function approve(address spender, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Moves `amount` tokens from `from` to `to` using the\\n * allowance mechanism. `amount` is then deducted from the caller's\\n * allowance.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transferFrom(address from, address to, uint256 amount) external returns (bool);\\n}\\n\",\"keccak256\":\"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC20.sol\\\";\\n\\n/**\\n * @dev Interface for the optional metadata functions from the ERC20 standard.\\n *\\n * _Available since v4.1._\\n */\\ninterface IERC20Metadata is IERC20 {\\n /**\\n * @dev Returns the name of the token.\\n */\\n function name() external view returns (string memory);\\n\\n /**\\n * @dev Returns the symbol of the token.\\n */\\n function symbol() external view returns (string memory);\\n\\n /**\\n * @dev Returns the decimals places of the token.\\n */\\n function decimals() external view returns (uint8);\\n}\\n\",\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/token/ERC721/ERC721.sol":{"ERC721":{"abi":[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including the Metadata extension, but not including the Enumerable extension, which is available separately as {ERC721Enumerable}.","kind":"dev","methods":{"approve(address,uint256)":{"details":"See {IERC721-approve}."},"balanceOf(address)":{"details":"See {IERC721-balanceOf}."},"constructor":{"details":"Initializes the contract by setting a `name` and a `symbol` to the token collection."},"getApproved(uint256)":{"details":"See {IERC721-getApproved}."},"isApprovedForAll(address,address)":{"details":"See {IERC721-isApprovedForAll}."},"name()":{"details":"See {IERC721Metadata-name}."},"ownerOf(uint256)":{"details":"See {IERC721-ownerOf}."},"safeTransferFrom(address,address,uint256)":{"details":"See {IERC721-safeTransferFrom}."},"safeTransferFrom(address,address,uint256,bytes)":{"details":"See {IERC721-safeTransferFrom}."},"setApprovalForAll(address,bool)":{"details":"See {IERC721-setApprovalForAll}."},"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."},"symbol()":{"details":"See {IERC721Metadata-symbol}."},"tokenURI(uint256)":{"details":"See {IERC721Metadata-tokenURI}."},"transferFrom(address,address,uint256)":{"details":"See {IERC721-transferFrom}."}},"version":1},"evm":{"bytecode":{"functionDebugData":{"@_7909":{"entryPoint":null,"id":7909,"parameterSlots":2,"returnSlots":0},"abi_decode_string_fromMemory":{"entryPoint":112,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr_fromMemory":{"entryPoint":287,"id":null,"parameterSlots":2,"returnSlots":2},"array_dataslot_string_storage":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"clean_up_bytearray_end_slots_string_storage":{"entryPoint":453,"id":null,"parameterSlots":3,"returnSlots":0},"copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage":{"entryPoint":536,"id":null,"parameterSlots":2,"returnSlots":0},"extract_byte_array_length":{"entryPoint":393,"id":null,"parameterSlots":1,"returnSlots":1},"extract_used_part_and_set_length_of_short_byte_array":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"panic_error_0x41":{"entryPoint":90,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:4144:92","statements":[{"nodeType":"YulBlock","src":"6:3:92","statements":[]},{"body":{"nodeType":"YulBlock","src":"46:95:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"63:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"70:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"75:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"66:3:92"},"nodeType":"YulFunctionCall","src":"66:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"56:6:92"},"nodeType":"YulFunctionCall","src":"56:31:92"},"nodeType":"YulExpressionStatement","src":"56:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"103:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"106:4:92","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"96:6:92"},"nodeType":"YulFunctionCall","src":"96:15:92"},"nodeType":"YulExpressionStatement","src":"96:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"127:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"130:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"120:6:92"},"nodeType":"YulFunctionCall","src":"120:15:92"},"nodeType":"YulExpressionStatement","src":"120:15:92"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"14:127:92"},{"body":{"nodeType":"YulBlock","src":"210:776:92","statements":[{"body":{"nodeType":"YulBlock","src":"259:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"268:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"271:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"261:6:92"},"nodeType":"YulFunctionCall","src":"261:12:92"},"nodeType":"YulExpressionStatement","src":"261:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"238:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"246:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"234:3:92"},"nodeType":"YulFunctionCall","src":"234:17:92"},{"name":"end","nodeType":"YulIdentifier","src":"253:3:92"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"230:3:92"},"nodeType":"YulFunctionCall","src":"230:27:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"223:6:92"},"nodeType":"YulFunctionCall","src":"223:35:92"},"nodeType":"YulIf","src":"220:55:92"},{"nodeType":"YulVariableDeclaration","src":"284:23:92","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"300:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"294:5:92"},"nodeType":"YulFunctionCall","src":"294:13:92"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"288:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"316:28:92","value":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"334:2:92","type":"","value":"64"},{"kind":"number","nodeType":"YulLiteral","src":"338:1:92","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"330:3:92"},"nodeType":"YulFunctionCall","src":"330:10:92"},{"kind":"number","nodeType":"YulLiteral","src":"342:1:92","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"326:3:92"},"nodeType":"YulFunctionCall","src":"326:18:92"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"320:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"367:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"369:16:92"},"nodeType":"YulFunctionCall","src":"369:18:92"},"nodeType":"YulExpressionStatement","src":"369:18:92"}]},"condition":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"359:2:92"},{"name":"_2","nodeType":"YulIdentifier","src":"363:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"356:2:92"},"nodeType":"YulFunctionCall","src":"356:10:92"},"nodeType":"YulIf","src":"353:36:92"},{"nodeType":"YulVariableDeclaration","src":"398:17:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"412:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"408:3:92"},"nodeType":"YulFunctionCall","src":"408:7:92"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"402:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"424:23:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"444:2:92","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"438:5:92"},"nodeType":"YulFunctionCall","src":"438:9:92"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"428:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"456:71:92","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"478:6:92"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"502:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"506:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"498:3:92"},"nodeType":"YulFunctionCall","src":"498:13:92"},{"name":"_3","nodeType":"YulIdentifier","src":"513:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"494:3:92"},"nodeType":"YulFunctionCall","src":"494:22:92"},{"kind":"number","nodeType":"YulLiteral","src":"518:2:92","type":"","value":"63"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"490:3:92"},"nodeType":"YulFunctionCall","src":"490:31:92"},{"name":"_3","nodeType":"YulIdentifier","src":"523:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"486:3:92"},"nodeType":"YulFunctionCall","src":"486:40:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"474:3:92"},"nodeType":"YulFunctionCall","src":"474:53:92"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"460:10:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"586:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"588:16:92"},"nodeType":"YulFunctionCall","src":"588:18:92"},"nodeType":"YulExpressionStatement","src":"588:18:92"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"545:10:92"},{"name":"_2","nodeType":"YulIdentifier","src":"557:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"542:2:92"},"nodeType":"YulFunctionCall","src":"542:18:92"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"565:10:92"},{"name":"memPtr","nodeType":"YulIdentifier","src":"577:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"562:2:92"},"nodeType":"YulFunctionCall","src":"562:22:92"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"539:2:92"},"nodeType":"YulFunctionCall","src":"539:46:92"},"nodeType":"YulIf","src":"536:72:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"624:2:92","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"628:10:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"617:6:92"},"nodeType":"YulFunctionCall","src":"617:22:92"},"nodeType":"YulExpressionStatement","src":"617:22:92"},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"655:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"663:2:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"648:6:92"},"nodeType":"YulFunctionCall","src":"648:18:92"},"nodeType":"YulExpressionStatement","src":"648:18:92"},{"nodeType":"YulVariableDeclaration","src":"675:14:92","value":{"kind":"number","nodeType":"YulLiteral","src":"685:4:92","type":"","value":"0x20"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"679:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"735:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"744:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"747:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"737:6:92"},"nodeType":"YulFunctionCall","src":"737:12:92"},"nodeType":"YulExpressionStatement","src":"737:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"712:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"720:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"708:3:92"},"nodeType":"YulFunctionCall","src":"708:15:92"},{"name":"_4","nodeType":"YulIdentifier","src":"725:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"704:3:92"},"nodeType":"YulFunctionCall","src":"704:24:92"},{"name":"end","nodeType":"YulIdentifier","src":"730:3:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"701:2:92"},"nodeType":"YulFunctionCall","src":"701:33:92"},"nodeType":"YulIf","src":"698:53:92"},{"nodeType":"YulVariableDeclaration","src":"760:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"769:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"764:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"825:87:92","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"854:6:92"},{"name":"i","nodeType":"YulIdentifier","src":"862:1:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"850:3:92"},"nodeType":"YulFunctionCall","src":"850:14:92"},{"name":"_4","nodeType":"YulIdentifier","src":"866:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"846:3:92"},"nodeType":"YulFunctionCall","src":"846:23:92"},{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"885:6:92"},{"name":"i","nodeType":"YulIdentifier","src":"893:1:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"881:3:92"},"nodeType":"YulFunctionCall","src":"881:14:92"},{"name":"_4","nodeType":"YulIdentifier","src":"897:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"877:3:92"},"nodeType":"YulFunctionCall","src":"877:23:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"871:5:92"},"nodeType":"YulFunctionCall","src":"871:30:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"839:6:92"},"nodeType":"YulFunctionCall","src":"839:63:92"},"nodeType":"YulExpressionStatement","src":"839:63:92"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"790:1:92"},{"name":"_1","nodeType":"YulIdentifier","src":"793:2:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"787:2:92"},"nodeType":"YulFunctionCall","src":"787:9:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"797:19:92","statements":[{"nodeType":"YulAssignment","src":"799:15:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"808:1:92"},{"name":"_4","nodeType":"YulIdentifier","src":"811:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"804:3:92"},"nodeType":"YulFunctionCall","src":"804:10:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"799:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"783:3:92","statements":[]},"src":"779:133:92"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"936:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"944:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"932:3:92"},"nodeType":"YulFunctionCall","src":"932:15:92"},{"name":"_4","nodeType":"YulIdentifier","src":"949:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"928:3:92"},"nodeType":"YulFunctionCall","src":"928:24:92"},{"kind":"number","nodeType":"YulLiteral","src":"954:1:92","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"921:6:92"},"nodeType":"YulFunctionCall","src":"921:35:92"},"nodeType":"YulExpressionStatement","src":"921:35:92"},{"nodeType":"YulAssignment","src":"965:15:92","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"974:6:92"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"965:5:92"}]}]},"name":"abi_decode_string_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"184:6:92","type":""},{"name":"end","nodeType":"YulTypedName","src":"192:3:92","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"200:5:92","type":""}],"src":"146:840:92"},{"body":{"nodeType":"YulBlock","src":"1109:444:92","statements":[{"body":{"nodeType":"YulBlock","src":"1155:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1164:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1167:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1157:6:92"},"nodeType":"YulFunctionCall","src":"1157:12:92"},"nodeType":"YulExpressionStatement","src":"1157:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1130:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"1139:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1126:3:92"},"nodeType":"YulFunctionCall","src":"1126:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"1151:2:92","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1122:3:92"},"nodeType":"YulFunctionCall","src":"1122:32:92"},"nodeType":"YulIf","src":"1119:52:92"},{"nodeType":"YulVariableDeclaration","src":"1180:30:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1200:9:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1194:5:92"},"nodeType":"YulFunctionCall","src":"1194:16:92"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1184:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"1219:28:92","value":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1237:2:92","type":"","value":"64"},{"kind":"number","nodeType":"YulLiteral","src":"1241:1:92","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1233:3:92"},"nodeType":"YulFunctionCall","src":"1233:10:92"},{"kind":"number","nodeType":"YulLiteral","src":"1245:1:92","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1229:3:92"},"nodeType":"YulFunctionCall","src":"1229:18:92"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"1223:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"1274:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1283:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1286:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1276:6:92"},"nodeType":"YulFunctionCall","src":"1276:12:92"},"nodeType":"YulExpressionStatement","src":"1276:12:92"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1262:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"1270:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1259:2:92"},"nodeType":"YulFunctionCall","src":"1259:14:92"},"nodeType":"YulIf","src":"1256:34:92"},{"nodeType":"YulAssignment","src":"1299:71:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1342:9:92"},{"name":"offset","nodeType":"YulIdentifier","src":"1353:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1338:3:92"},"nodeType":"YulFunctionCall","src":"1338:22:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1362:7:92"}],"functionName":{"name":"abi_decode_string_fromMemory","nodeType":"YulIdentifier","src":"1309:28:92"},"nodeType":"YulFunctionCall","src":"1309:61:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1299:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"1379:41:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1405:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1416:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1401:3:92"},"nodeType":"YulFunctionCall","src":"1401:18:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1395:5:92"},"nodeType":"YulFunctionCall","src":"1395:25:92"},"variables":[{"name":"offset_1","nodeType":"YulTypedName","src":"1383:8:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"1449:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1458:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1461:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1451:6:92"},"nodeType":"YulFunctionCall","src":"1451:12:92"},"nodeType":"YulExpressionStatement","src":"1451:12:92"}]},"condition":{"arguments":[{"name":"offset_1","nodeType":"YulIdentifier","src":"1435:8:92"},{"name":"_1","nodeType":"YulIdentifier","src":"1445:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1432:2:92"},"nodeType":"YulFunctionCall","src":"1432:16:92"},"nodeType":"YulIf","src":"1429:36:92"},{"nodeType":"YulAssignment","src":"1474:73:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1517:9:92"},{"name":"offset_1","nodeType":"YulIdentifier","src":"1528:8:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1513:3:92"},"nodeType":"YulFunctionCall","src":"1513:24:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1539:7:92"}],"functionName":{"name":"abi_decode_string_fromMemory","nodeType":"YulIdentifier","src":"1484:28:92"},"nodeType":"YulFunctionCall","src":"1484:63:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1474:6:92"}]}]},"name":"abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1067:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1078:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1090:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1098:6:92","type":""}],"src":"991:562:92"},{"body":{"nodeType":"YulBlock","src":"1613:325:92","statements":[{"nodeType":"YulAssignment","src":"1623:22:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1637:1:92","type":"","value":"1"},{"name":"data","nodeType":"YulIdentifier","src":"1640:4:92"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"1633:3:92"},"nodeType":"YulFunctionCall","src":"1633:12:92"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"1623:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"1654:38:92","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"1684:4:92"},{"kind":"number","nodeType":"YulLiteral","src":"1690:1:92","type":"","value":"1"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1680:3:92"},"nodeType":"YulFunctionCall","src":"1680:12:92"},"variables":[{"name":"outOfPlaceEncoding","nodeType":"YulTypedName","src":"1658:18:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"1731:31:92","statements":[{"nodeType":"YulAssignment","src":"1733:27:92","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"1747:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"1755:4:92","type":"","value":"0x7f"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1743:3:92"},"nodeType":"YulFunctionCall","src":"1743:17:92"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"1733:6:92"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"1711:18:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1704:6:92"},"nodeType":"YulFunctionCall","src":"1704:26:92"},"nodeType":"YulIf","src":"1701:61:92"},{"body":{"nodeType":"YulBlock","src":"1821:111:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1842:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1849:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"1854:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1845:3:92"},"nodeType":"YulFunctionCall","src":"1845:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1835:6:92"},"nodeType":"YulFunctionCall","src":"1835:31:92"},"nodeType":"YulExpressionStatement","src":"1835:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1886:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"1889:4:92","type":"","value":"0x22"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1879:6:92"},"nodeType":"YulFunctionCall","src":"1879:15:92"},"nodeType":"YulExpressionStatement","src":"1879:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1914:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1917:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1907:6:92"},"nodeType":"YulFunctionCall","src":"1907:15:92"},"nodeType":"YulExpressionStatement","src":"1907:15:92"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"1777:18:92"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"1800:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"1808:2:92","type":"","value":"32"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"1797:2:92"},"nodeType":"YulFunctionCall","src":"1797:14:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1774:2:92"},"nodeType":"YulFunctionCall","src":"1774:38:92"},"nodeType":"YulIf","src":"1771:161:92"}]},"name":"extract_byte_array_length","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"1593:4:92","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"1602:6:92","type":""}],"src":"1558:380:92"},{"body":{"nodeType":"YulBlock","src":"1999:65:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2016:1:92","type":"","value":"0"},{"name":"ptr","nodeType":"YulIdentifier","src":"2019:3:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2009:6:92"},"nodeType":"YulFunctionCall","src":"2009:14:92"},"nodeType":"YulExpressionStatement","src":"2009:14:92"},{"nodeType":"YulAssignment","src":"2032:26:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2050:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2053:4:92","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nodeType":"YulIdentifier","src":"2040:9:92"},"nodeType":"YulFunctionCall","src":"2040:18:92"},"variableNames":[{"name":"data","nodeType":"YulIdentifier","src":"2032:4:92"}]}]},"name":"array_dataslot_string_storage","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nodeType":"YulTypedName","src":"1982:3:92","type":""}],"returnVariables":[{"name":"data","nodeType":"YulTypedName","src":"1990:4:92","type":""}],"src":"1943:121:92"},{"body":{"nodeType":"YulBlock","src":"2150:464:92","statements":[{"body":{"nodeType":"YulBlock","src":"2183:425:92","statements":[{"nodeType":"YulVariableDeclaration","src":"2197:11:92","value":{"kind":"number","nodeType":"YulLiteral","src":"2207:1:92","type":"","value":"0"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"2201:2:92","type":""}]},{"expression":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"2228:2:92"},{"name":"array","nodeType":"YulIdentifier","src":"2232:5:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2221:6:92"},"nodeType":"YulFunctionCall","src":"2221:17:92"},"nodeType":"YulExpressionStatement","src":"2221:17:92"},{"nodeType":"YulVariableDeclaration","src":"2251:31:92","value":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"2273:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"2277:4:92","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nodeType":"YulIdentifier","src":"2263:9:92"},"nodeType":"YulFunctionCall","src":"2263:19:92"},"variables":[{"name":"data","nodeType":"YulTypedName","src":"2255:4:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2295:57:92","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"2318:4:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2328:1:92","type":"","value":"5"},{"arguments":[{"name":"startIndex","nodeType":"YulIdentifier","src":"2335:10:92"},{"kind":"number","nodeType":"YulLiteral","src":"2347:2:92","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2331:3:92"},"nodeType":"YulFunctionCall","src":"2331:19:92"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"2324:3:92"},"nodeType":"YulFunctionCall","src":"2324:27:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2314:3:92"},"nodeType":"YulFunctionCall","src":"2314:38:92"},"variables":[{"name":"deleteStart","nodeType":"YulTypedName","src":"2299:11:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"2389:23:92","statements":[{"nodeType":"YulAssignment","src":"2391:19:92","value":{"name":"data","nodeType":"YulIdentifier","src":"2406:4:92"},"variableNames":[{"name":"deleteStart","nodeType":"YulIdentifier","src":"2391:11:92"}]}]},"condition":{"arguments":[{"name":"startIndex","nodeType":"YulIdentifier","src":"2371:10:92"},{"kind":"number","nodeType":"YulLiteral","src":"2383:4:92","type":"","value":"0x20"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2368:2:92"},"nodeType":"YulFunctionCall","src":"2368:20:92"},"nodeType":"YulIf","src":"2365:47:92"},{"nodeType":"YulVariableDeclaration","src":"2425:41:92","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"2439:4:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2449:1:92","type":"","value":"5"},{"arguments":[{"name":"len","nodeType":"YulIdentifier","src":"2456:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"2461:2:92","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2452:3:92"},"nodeType":"YulFunctionCall","src":"2452:12:92"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"2445:3:92"},"nodeType":"YulFunctionCall","src":"2445:20:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2435:3:92"},"nodeType":"YulFunctionCall","src":"2435:31:92"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"2429:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2479:24:92","value":{"name":"deleteStart","nodeType":"YulIdentifier","src":"2492:11:92"},"variables":[{"name":"start","nodeType":"YulTypedName","src":"2483:5:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"2577:21:92","statements":[{"expression":{"arguments":[{"name":"start","nodeType":"YulIdentifier","src":"2586:5:92"},{"name":"_1","nodeType":"YulIdentifier","src":"2593:2:92"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"2579:6:92"},"nodeType":"YulFunctionCall","src":"2579:17:92"},"nodeType":"YulExpressionStatement","src":"2579:17:92"}]},"condition":{"arguments":[{"name":"start","nodeType":"YulIdentifier","src":"2527:5:92"},{"name":"_2","nodeType":"YulIdentifier","src":"2534:2:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2524:2:92"},"nodeType":"YulFunctionCall","src":"2524:13:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"2538:26:92","statements":[{"nodeType":"YulAssignment","src":"2540:22:92","value":{"arguments":[{"name":"start","nodeType":"YulIdentifier","src":"2553:5:92"},{"kind":"number","nodeType":"YulLiteral","src":"2560:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2549:3:92"},"nodeType":"YulFunctionCall","src":"2549:13:92"},"variableNames":[{"name":"start","nodeType":"YulIdentifier","src":"2540:5:92"}]}]},"pre":{"nodeType":"YulBlock","src":"2520:3:92","statements":[]},"src":"2516:82:92"}]},"condition":{"arguments":[{"name":"len","nodeType":"YulIdentifier","src":"2166:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"2171:2:92","type":"","value":"31"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2163:2:92"},"nodeType":"YulFunctionCall","src":"2163:11:92"},"nodeType":"YulIf","src":"2160:448:92"}]},"name":"clean_up_bytearray_end_slots_string_storage","nodeType":"YulFunctionDefinition","parameters":[{"name":"array","nodeType":"YulTypedName","src":"2122:5:92","type":""},{"name":"len","nodeType":"YulTypedName","src":"2129:3:92","type":""},{"name":"startIndex","nodeType":"YulTypedName","src":"2134:10:92","type":""}],"src":"2069:545:92"},{"body":{"nodeType":"YulBlock","src":"2704:81:92","statements":[{"nodeType":"YulAssignment","src":"2714:65:92","value":{"arguments":[{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"2729:4:92"},{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2747:1:92","type":"","value":"3"},{"name":"len","nodeType":"YulIdentifier","src":"2750:3:92"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2743:3:92"},"nodeType":"YulFunctionCall","src":"2743:11:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2760:1:92","type":"","value":"0"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"2756:3:92"},"nodeType":"YulFunctionCall","src":"2756:6:92"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"2739:3:92"},"nodeType":"YulFunctionCall","src":"2739:24:92"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"2735:3:92"},"nodeType":"YulFunctionCall","src":"2735:29:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2725:3:92"},"nodeType":"YulFunctionCall","src":"2725:40:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2771:1:92","type":"","value":"1"},{"name":"len","nodeType":"YulIdentifier","src":"2774:3:92"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2767:3:92"},"nodeType":"YulFunctionCall","src":"2767:11:92"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"2722:2:92"},"nodeType":"YulFunctionCall","src":"2722:57:92"},"variableNames":[{"name":"used","nodeType":"YulIdentifier","src":"2714:4:92"}]}]},"name":"extract_used_part_and_set_length_of_short_byte_array","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"2681:4:92","type":""},{"name":"len","nodeType":"YulTypedName","src":"2687:3:92","type":""}],"returnVariables":[{"name":"used","nodeType":"YulTypedName","src":"2695:4:92","type":""}],"src":"2619:166:92"},{"body":{"nodeType":"YulBlock","src":"2886:1256:92","statements":[{"nodeType":"YulVariableDeclaration","src":"2896:24:92","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"2916:3:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2910:5:92"},"nodeType":"YulFunctionCall","src":"2910:10:92"},"variables":[{"name":"newLen","nodeType":"YulTypedName","src":"2900:6:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"2963:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"2965:16:92"},"nodeType":"YulFunctionCall","src":"2965:18:92"},"nodeType":"YulExpressionStatement","src":"2965:18:92"}]},"condition":{"arguments":[{"name":"newLen","nodeType":"YulIdentifier","src":"2935:6:92"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2951:2:92","type":"","value":"64"},{"kind":"number","nodeType":"YulLiteral","src":"2955:1:92","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2947:3:92"},"nodeType":"YulFunctionCall","src":"2947:10:92"},{"kind":"number","nodeType":"YulLiteral","src":"2959:1:92","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2943:3:92"},"nodeType":"YulFunctionCall","src":"2943:18:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2932:2:92"},"nodeType":"YulFunctionCall","src":"2932:30:92"},"nodeType":"YulIf","src":"2929:56:92"},{"expression":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"3038:4:92"},{"arguments":[{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"3076:4:92"}],"functionName":{"name":"sload","nodeType":"YulIdentifier","src":"3070:5:92"},"nodeType":"YulFunctionCall","src":"3070:11:92"}],"functionName":{"name":"extract_byte_array_length","nodeType":"YulIdentifier","src":"3044:25:92"},"nodeType":"YulFunctionCall","src":"3044:38:92"},{"name":"newLen","nodeType":"YulIdentifier","src":"3084:6:92"}],"functionName":{"name":"clean_up_bytearray_end_slots_string_storage","nodeType":"YulIdentifier","src":"2994:43:92"},"nodeType":"YulFunctionCall","src":"2994:97:92"},"nodeType":"YulExpressionStatement","src":"2994:97:92"},{"nodeType":"YulVariableDeclaration","src":"3100:18:92","value":{"kind":"number","nodeType":"YulLiteral","src":"3117:1:92","type":"","value":"0"},"variables":[{"name":"srcOffset","nodeType":"YulTypedName","src":"3104:9:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3127:23:92","value":{"kind":"number","nodeType":"YulLiteral","src":"3146:4:92","type":"","value":"0x20"},"variables":[{"name":"srcOffset_1","nodeType":"YulTypedName","src":"3131:11:92","type":""}]},{"nodeType":"YulAssignment","src":"3159:24:92","value":{"name":"srcOffset_1","nodeType":"YulIdentifier","src":"3172:11:92"},"variableNames":[{"name":"srcOffset","nodeType":"YulIdentifier","src":"3159:9:92"}]},{"cases":[{"body":{"nodeType":"YulBlock","src":"3229:656:92","statements":[{"nodeType":"YulVariableDeclaration","src":"3243:35:92","value":{"arguments":[{"name":"newLen","nodeType":"YulIdentifier","src":"3262:6:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3274:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"3270:3:92"},"nodeType":"YulFunctionCall","src":"3270:7:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3258:3:92"},"nodeType":"YulFunctionCall","src":"3258:20:92"},"variables":[{"name":"loopEnd","nodeType":"YulTypedName","src":"3247:7:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3291:49:92","value":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"3335:4:92"}],"functionName":{"name":"array_dataslot_string_storage","nodeType":"YulIdentifier","src":"3305:29:92"},"nodeType":"YulFunctionCall","src":"3305:35:92"},"variables":[{"name":"dstPtr","nodeType":"YulTypedName","src":"3295:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3353:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"3362:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"3357:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"3440:172:92","statements":[{"expression":{"arguments":[{"name":"dstPtr","nodeType":"YulIdentifier","src":"3465:6:92"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"3483:3:92"},{"name":"srcOffset","nodeType":"YulIdentifier","src":"3488:9:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3479:3:92"},"nodeType":"YulFunctionCall","src":"3479:19:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3473:5:92"},"nodeType":"YulFunctionCall","src":"3473:26:92"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"3458:6:92"},"nodeType":"YulFunctionCall","src":"3458:42:92"},"nodeType":"YulExpressionStatement","src":"3458:42:92"},{"nodeType":"YulAssignment","src":"3517:24:92","value":{"arguments":[{"name":"dstPtr","nodeType":"YulIdentifier","src":"3531:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"3539:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3527:3:92"},"nodeType":"YulFunctionCall","src":"3527:14:92"},"variableNames":[{"name":"dstPtr","nodeType":"YulIdentifier","src":"3517:6:92"}]},{"nodeType":"YulAssignment","src":"3558:40:92","value":{"arguments":[{"name":"srcOffset","nodeType":"YulIdentifier","src":"3575:9:92"},{"name":"srcOffset_1","nodeType":"YulIdentifier","src":"3586:11:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3571:3:92"},"nodeType":"YulFunctionCall","src":"3571:27:92"},"variableNames":[{"name":"srcOffset","nodeType":"YulIdentifier","src":"3558:9:92"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3387:1:92"},{"name":"loopEnd","nodeType":"YulIdentifier","src":"3390:7:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"3384:2:92"},"nodeType":"YulFunctionCall","src":"3384:14:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"3399:28:92","statements":[{"nodeType":"YulAssignment","src":"3401:24:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3410:1:92"},{"name":"srcOffset_1","nodeType":"YulIdentifier","src":"3413:11:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3406:3:92"},"nodeType":"YulFunctionCall","src":"3406:19:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"3401:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"3380:3:92","statements":[]},"src":"3376:236:92"},{"body":{"nodeType":"YulBlock","src":"3660:166:92","statements":[{"nodeType":"YulVariableDeclaration","src":"3678:43:92","value":{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"3705:3:92"},{"name":"srcOffset","nodeType":"YulIdentifier","src":"3710:9:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3701:3:92"},"nodeType":"YulFunctionCall","src":"3701:19:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3695:5:92"},"nodeType":"YulFunctionCall","src":"3695:26:92"},"variables":[{"name":"lastValue","nodeType":"YulTypedName","src":"3682:9:92","type":""}]},{"expression":{"arguments":[{"name":"dstPtr","nodeType":"YulIdentifier","src":"3745:6:92"},{"arguments":[{"name":"lastValue","nodeType":"YulIdentifier","src":"3757:9:92"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3784:1:92","type":"","value":"3"},{"name":"newLen","nodeType":"YulIdentifier","src":"3787:6:92"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"3780:3:92"},"nodeType":"YulFunctionCall","src":"3780:14:92"},{"kind":"number","nodeType":"YulLiteral","src":"3796:3:92","type":"","value":"248"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3776:3:92"},"nodeType":"YulFunctionCall","src":"3776:24:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3806:1:92","type":"","value":"0"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"3802:3:92"},"nodeType":"YulFunctionCall","src":"3802:6:92"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"3772:3:92"},"nodeType":"YulFunctionCall","src":"3772:37:92"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"3768:3:92"},"nodeType":"YulFunctionCall","src":"3768:42:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3753:3:92"},"nodeType":"YulFunctionCall","src":"3753:58:92"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"3738:6:92"},"nodeType":"YulFunctionCall","src":"3738:74:92"},"nodeType":"YulExpressionStatement","src":"3738:74:92"}]},"condition":{"arguments":[{"name":"loopEnd","nodeType":"YulIdentifier","src":"3631:7:92"},{"name":"newLen","nodeType":"YulIdentifier","src":"3640:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"3628:2:92"},"nodeType":"YulFunctionCall","src":"3628:19:92"},"nodeType":"YulIf","src":"3625:201:92"},{"expression":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"3846:4:92"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3860:1:92","type":"","value":"1"},{"name":"newLen","nodeType":"YulIdentifier","src":"3863:6:92"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"3856:3:92"},"nodeType":"YulFunctionCall","src":"3856:14:92"},{"kind":"number","nodeType":"YulLiteral","src":"3872:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3852:3:92"},"nodeType":"YulFunctionCall","src":"3852:22:92"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"3839:6:92"},"nodeType":"YulFunctionCall","src":"3839:36:92"},"nodeType":"YulExpressionStatement","src":"3839:36:92"}]},"nodeType":"YulCase","src":"3222:663:92","value":{"kind":"number","nodeType":"YulLiteral","src":"3227:1:92","type":"","value":"1"}},{"body":{"nodeType":"YulBlock","src":"3902:234:92","statements":[{"nodeType":"YulVariableDeclaration","src":"3916:14:92","value":{"kind":"number","nodeType":"YulLiteral","src":"3929:1:92","type":"","value":"0"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"3920:5:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"3965:67:92","statements":[{"nodeType":"YulAssignment","src":"3983:35:92","value":{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"4002:3:92"},{"name":"srcOffset","nodeType":"YulIdentifier","src":"4007:9:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3998:3:92"},"nodeType":"YulFunctionCall","src":"3998:19:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3992:5:92"},"nodeType":"YulFunctionCall","src":"3992:26:92"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"3983:5:92"}]}]},"condition":{"name":"newLen","nodeType":"YulIdentifier","src":"3946:6:92"},"nodeType":"YulIf","src":"3943:89:92"},{"expression":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"4052:4:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4111:5:92"},{"name":"newLen","nodeType":"YulIdentifier","src":"4118:6:92"}],"functionName":{"name":"extract_used_part_and_set_length_of_short_byte_array","nodeType":"YulIdentifier","src":"4058:52:92"},"nodeType":"YulFunctionCall","src":"4058:67:92"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"4045:6:92"},"nodeType":"YulFunctionCall","src":"4045:81:92"},"nodeType":"YulExpressionStatement","src":"4045:81:92"}]},"nodeType":"YulCase","src":"3894:242:92","value":"default"}],"expression":{"arguments":[{"name":"newLen","nodeType":"YulIdentifier","src":"3202:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"3210:2:92","type":"","value":"31"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3199:2:92"},"nodeType":"YulFunctionCall","src":"3199:14:92"},"nodeType":"YulSwitch","src":"3192:944:92"}]},"name":"copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage","nodeType":"YulFunctionDefinition","parameters":[{"name":"slot","nodeType":"YulTypedName","src":"2871:4:92","type":""},{"name":"src","nodeType":"YulTypedName","src":"2877:3:92","type":""}],"src":"2790:1352:92"}]},"contents":"{\n { }\n function panic_error_0x41()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function abi_decode_string_fromMemory(offset, end) -> array\n {\n if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n let _1 := mload(offset)\n let _2 := sub(shl(64, 1), 1)\n if gt(_1, _2) { panic_error_0x41() }\n let _3 := not(31)\n let memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(and(add(_1, 0x1f), _3), 63), _3))\n if or(gt(newFreePtr, _2), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n mstore(memPtr, _1)\n let _4 := 0x20\n if gt(add(add(offset, _1), _4), end) { revert(0, 0) }\n let i := 0\n for { } lt(i, _1) { i := add(i, _4) }\n {\n mstore(add(add(memPtr, i), _4), mload(add(add(offset, i), _4)))\n }\n mstore(add(add(memPtr, _1), _4), 0)\n array := memPtr\n }\n function abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr_fromMemory(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n let offset := mload(headStart)\n let _1 := sub(shl(64, 1), 1)\n if gt(offset, _1) { revert(0, 0) }\n value0 := abi_decode_string_fromMemory(add(headStart, offset), dataEnd)\n let offset_1 := mload(add(headStart, 32))\n if gt(offset_1, _1) { revert(0, 0) }\n value1 := abi_decode_string_fromMemory(add(headStart, offset_1), dataEnd)\n }\n function extract_byte_array_length(data) -> length\n {\n length := shr(1, data)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n if eq(outOfPlaceEncoding, lt(length, 32))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n }\n function array_dataslot_string_storage(ptr) -> data\n {\n mstore(0, ptr)\n data := keccak256(0, 0x20)\n }\n function clean_up_bytearray_end_slots_string_storage(array, len, startIndex)\n {\n if gt(len, 31)\n {\n let _1 := 0\n mstore(_1, array)\n let data := keccak256(_1, 0x20)\n let deleteStart := add(data, shr(5, add(startIndex, 31)))\n if lt(startIndex, 0x20) { deleteStart := data }\n let _2 := add(data, shr(5, add(len, 31)))\n let start := deleteStart\n for { } lt(start, _2) { start := add(start, 1) }\n { sstore(start, _1) }\n }\n }\n function extract_used_part_and_set_length_of_short_byte_array(data, len) -> used\n {\n used := or(and(data, not(shr(shl(3, len), not(0)))), shl(1, len))\n }\n function copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage(slot, src)\n {\n let newLen := mload(src)\n if gt(newLen, sub(shl(64, 1), 1)) { panic_error_0x41() }\n clean_up_bytearray_end_slots_string_storage(slot, extract_byte_array_length(sload(slot)), newLen)\n let srcOffset := 0\n let srcOffset_1 := 0x20\n srcOffset := srcOffset_1\n switch gt(newLen, 31)\n case 1 {\n let loopEnd := and(newLen, not(31))\n let dstPtr := array_dataslot_string_storage(slot)\n let i := 0\n for { } lt(i, loopEnd) { i := add(i, srcOffset_1) }\n {\n sstore(dstPtr, mload(add(src, srcOffset)))\n dstPtr := add(dstPtr, 1)\n srcOffset := add(srcOffset, srcOffset_1)\n }\n if lt(loopEnd, newLen)\n {\n let lastValue := mload(add(src, srcOffset))\n sstore(dstPtr, and(lastValue, not(shr(and(shl(3, newLen), 248), not(0)))))\n }\n sstore(slot, add(shl(1, newLen), 1))\n }\n default {\n let value := 0\n if newLen\n {\n value := mload(add(src, srcOffset))\n }\n sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, newLen))\n }\n }\n}","id":92,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60806040523480156200001157600080fd5b50604051620014ec380380620014ec83398101604081905262000034916200011f565b600062000042838262000218565b50600162000051828262000218565b505050620002e4565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200008257600080fd5b81516001600160401b03808211156200009f576200009f6200005a565b604051601f8301601f19908116603f01168101908282118183101715620000ca57620000ca6200005a565b81604052838152602092508683858801011115620000e757600080fd5b600091505b838210156200010b5785820183015181830184015290820190620000ec565b600093810190920192909252949350505050565b600080604083850312156200013357600080fd5b82516001600160401b03808211156200014b57600080fd5b620001598683870162000070565b935060208501519150808211156200017057600080fd5b506200017f8582860162000070565b9150509250929050565b600181811c908216806200019e57607f821691505b602082108103620001bf57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200021357600081815260208120601f850160051c81016020861015620001ee5750805b601f850160051c820191505b818110156200020f57828155600101620001fa565b5050505b505050565b81516001600160401b038111156200023457620002346200005a565b6200024c8162000245845462000189565b84620001c5565b602080601f8311600181146200028457600084156200026b5750858301515b600019600386901b1c1916600185901b1785556200020f565b600085815260208120601f198616915b82811015620002b55788860151825594840194600190910190840162000294565b5085821015620002d45787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6111f880620002f46000396000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c80636352211e1161008c578063a22cb46511610066578063a22cb465146101c3578063b88d4fde146101d6578063c87b56dd146101e9578063e985e9c5146101fc57600080fd5b80636352211e1461018757806370a082311461019a57806395d89b41146101bb57600080fd5b8063095ea7b3116100bd578063095ea7b31461014c57806323b872dd1461016157806342842e0e1461017457600080fd5b806301ffc9a7146100e457806306fdde031461010c578063081812fc14610121575b600080fd5b6100f76100f2366004610e92565b610238565b60405190151581526020015b60405180910390f35b61011461028a565b6040516101039190610eff565b61013461012f366004610f12565b61031c565b6040516001600160a01b039091168152602001610103565b61015f61015a366004610f47565b610343565b005b61015f61016f366004610f71565b61045d565b61015f610182366004610f71565b6104d4565b610134610195366004610f12565b6104ef565b6101ad6101a8366004610fad565b610554565b604051908152602001610103565b6101146105ee565b61015f6101d1366004610fc8565b6105fd565b61015f6101e436600461101a565b61060c565b6101146101f7366004610f12565b61068a565b6100f761020a3660046110f6565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b60006001600160e01b031982166380ac58cd60e01b148061026957506001600160e01b03198216635b5e139f60e01b145b8061028457506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606000805461029990611129565b80601f01602080910402602001604051908101604052809291908181526020018280546102c590611129565b80156103125780601f106102e757610100808354040283529160200191610312565b820191906000526020600020905b8154815290600101906020018083116102f557829003601f168201915b5050505050905090565b6000610327826106fe565b506000908152600460205260409020546001600160a01b031690565b600061034e826104ef565b9050806001600160a01b0316836001600160a01b0316036103c05760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b03821614806103dc57506103dc813361020a565b61044e5760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c00000060648201526084016103b7565b6104588383610765565b505050565b61046733826107e0565b6104c95760405162461bcd60e51b815260206004820152602d60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201526c1c881bdc88185c1c1c9bdd9959609a1b60648201526084016103b7565b61045883838361085f565b6104588383836040518060200160405280600081525061060c565b6000818152600260205260408120546001600160a01b0316806102845760405162461bcd60e51b815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e204944000000000000000060448201526064016103b7565b60006001600160a01b0382166105d25760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f74206120766160448201527f6c6964206f776e6572000000000000000000000000000000000000000000000060648201526084016103b7565b506001600160a01b031660009081526003602052604090205490565b60606001805461029990611129565b610608338383610a4c565b5050565b61061633836107e0565b6106785760405162461bcd60e51b815260206004820152602d60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201526c1c881bdc88185c1c1c9bdd9959609a1b60648201526084016103b7565b61068484848484610b1a565b50505050565b6060610695826106fe565b60006106ac60408051602081019091526000815290565b905060008151116106cc57604051806020016040528060008152506106f7565b806106d684610ba3565b6040516020016106e7929190611163565b6040516020818303038152906040525b9392505050565b6000818152600260205260409020546001600160a01b03166107625760405162461bcd60e51b815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e204944000000000000000060448201526064016103b7565b50565b6000818152600460205260409020805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03841690811790915581906107a7826104ef565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000806107ec836104ef565b9050806001600160a01b0316846001600160a01b0316148061083357506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b806108575750836001600160a01b031661084c8461031c565b6001600160a01b0316145b949350505050565b826001600160a01b0316610872826104ef565b6001600160a01b0316146108d65760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016103b7565b6001600160a01b0382166109385760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016103b7565b826001600160a01b031661094b826104ef565b6001600160a01b0316146109af5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016103b7565b6000818152600460209081526040808320805473ffffffffffffffffffffffffffffffffffffffff199081169091556001600160a01b0387811680865260038552838620805460001901905590871680865283862080546001019055868652600290945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b816001600160a01b0316836001600160a01b031603610aad5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016103b7565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b610b2584848461085f565b610b3184848484610c43565b6106845760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e746572000000000000000000000000000060648201526084016103b7565b60606000610bb083610d9a565b600101905060008167ffffffffffffffff811115610bd057610bd0611004565b6040519080825280601f01601f191660200182016040528015610bfa576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084610c0457509392505050565b60006001600160a01b0384163b15610d8f57604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290610c87903390899088908890600401611192565b6020604051808303816000875af1925050508015610cc2575060408051601f3d908101601f19168201909252610cbf918101906111ce565b60015b610d75573d808015610cf0576040519150601f19603f3d011682016040523d82523d6000602084013e610cf5565b606091505b508051600003610d6d5760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e746572000000000000000000000000000060648201526084016103b7565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050610857565b506001949350505050565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310610de3577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310610e0f576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310610e2d57662386f26fc10000830492506010015b6305f5e1008310610e45576305f5e100830492506008015b6127108310610e5957612710830492506004015b60648310610e6b576064830492506002015b600a83106102845760010192915050565b6001600160e01b03198116811461076257600080fd5b600060208284031215610ea457600080fd5b81356106f781610e7c565b60005b83811015610eca578181015183820152602001610eb2565b50506000910152565b60008151808452610eeb816020860160208601610eaf565b601f01601f19169290920160200192915050565b6020815260006106f76020830184610ed3565b600060208284031215610f2457600080fd5b5035919050565b80356001600160a01b0381168114610f4257600080fd5b919050565b60008060408385031215610f5a57600080fd5b610f6383610f2b565b946020939093013593505050565b600080600060608486031215610f8657600080fd5b610f8f84610f2b565b9250610f9d60208501610f2b565b9150604084013590509250925092565b600060208284031215610fbf57600080fd5b6106f782610f2b565b60008060408385031215610fdb57600080fd5b610fe483610f2b565b915060208301358015158114610ff957600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b6000806000806080858703121561103057600080fd5b61103985610f2b565b935061104760208601610f2b565b925060408501359150606085013567ffffffffffffffff8082111561106b57600080fd5b818701915087601f83011261107f57600080fd5b81358181111561109157611091611004565b604051601f8201601f19908116603f011681019083821181831017156110b9576110b9611004565b816040528281528a60208487010111156110d257600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b6000806040838503121561110957600080fd5b61111283610f2b565b915061112060208401610f2b565b90509250929050565b600181811c9082168061113d57607f821691505b60208210810361115d57634e487b7160e01b600052602260045260246000fd5b50919050565b60008351611175818460208801610eaf565b835190830190611189818360208801610eaf565b01949350505050565b60006001600160a01b038087168352808616602084015250836040830152608060608301526111c46080830184610ed3565b9695505050505050565b6000602082840312156111e057600080fd5b81516106f781610e7c56fea164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x14EC CODESIZE SUB DUP1 PUSH3 0x14EC DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x34 SWAP2 PUSH3 0x11F JUMP JUMPDEST PUSH1 0x0 PUSH3 0x42 DUP4 DUP3 PUSH3 0x218 JUMP JUMPDEST POP PUSH1 0x1 PUSH3 0x51 DUP3 DUP3 PUSH3 0x218 JUMP JUMPDEST POP POP POP PUSH3 0x2E4 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x82 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH3 0x9F JUMPI PUSH3 0x9F PUSH3 0x5A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP4 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP3 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH3 0xCA JUMPI PUSH3 0xCA PUSH3 0x5A JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP4 DUP2 MSTORE PUSH1 0x20 SWAP3 POP DUP7 DUP4 DUP6 DUP9 ADD ADD GT ISZERO PUSH3 0xE7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP2 POP JUMPDEST DUP4 DUP3 LT ISZERO PUSH3 0x10B JUMPI DUP6 DUP3 ADD DUP4 ADD MLOAD DUP2 DUP4 ADD DUP5 ADD MSTORE SWAP1 DUP3 ADD SWAP1 PUSH3 0xEC JUMP JUMPDEST PUSH1 0x0 SWAP4 DUP2 ADD SWAP1 SWAP3 ADD SWAP3 SWAP1 SWAP3 MSTORE SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x133 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH3 0x14B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x159 DUP7 DUP4 DUP8 ADD PUSH3 0x70 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD MLOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH3 0x170 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x17F DUP6 DUP3 DUP7 ADD PUSH3 0x70 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH3 0x19E JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH3 0x1BF JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH3 0x213 JUMPI PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP7 LT ISZERO PUSH3 0x1EE JUMPI POP DUP1 JUMPDEST PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x20F JUMPI DUP3 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x1FA JUMP JUMPDEST POP POP POP JUMPDEST POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH3 0x234 JUMPI PUSH3 0x234 PUSH3 0x5A JUMP JUMPDEST PUSH3 0x24C DUP2 PUSH3 0x245 DUP5 SLOAD PUSH3 0x189 JUMP JUMPDEST DUP5 PUSH3 0x1C5 JUMP JUMPDEST PUSH1 0x20 DUP1 PUSH1 0x1F DUP4 GT PUSH1 0x1 DUP2 EQ PUSH3 0x284 JUMPI PUSH1 0x0 DUP5 ISZERO PUSH3 0x26B JUMPI POP DUP6 DUP4 ADD MLOAD JUMPDEST PUSH1 0x0 NOT PUSH1 0x3 DUP7 SWAP1 SHL SHR NOT AND PUSH1 0x1 DUP6 SWAP1 SHL OR DUP6 SSTORE PUSH3 0x20F JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F NOT DUP7 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH3 0x2B5 JUMPI DUP9 DUP7 ADD MLOAD DUP3 SSTORE SWAP5 DUP5 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 DUP5 ADD PUSH3 0x294 JUMP JUMPDEST POP DUP6 DUP3 LT ISZERO PUSH3 0x2D4 JUMPI DUP8 DUP6 ADD MLOAD PUSH1 0x0 NOT PUSH1 0x3 DUP9 SWAP1 SHL PUSH1 0xF8 AND SHR NOT AND DUP2 SSTORE JUMPDEST POP POP POP POP POP PUSH1 0x1 SWAP1 DUP2 SHL ADD SWAP1 SSTORE POP JUMP JUMPDEST PUSH2 0x11F8 DUP1 PUSH3 0x2F4 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xDF JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6352211E GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xA22CB465 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x1C3 JUMPI DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0x1D6 JUMPI DUP1 PUSH4 0xC87B56DD EQ PUSH2 0x1E9 JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x1FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6352211E EQ PUSH2 0x187 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x19A JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x1BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x95EA7B3 GT PUSH2 0xBD JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x14C JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x161 JUMPI DUP1 PUSH4 0x42842E0E EQ PUSH2 0x174 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xE4 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x10C JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x121 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF7 PUSH2 0xF2 CALLDATASIZE PUSH1 0x4 PUSH2 0xE92 JUMP JUMPDEST PUSH2 0x238 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x114 PUSH2 0x28A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x103 SWAP2 SWAP1 PUSH2 0xEFF JUMP JUMPDEST PUSH2 0x134 PUSH2 0x12F CALLDATASIZE PUSH1 0x4 PUSH2 0xF12 JUMP JUMPDEST PUSH2 0x31C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x103 JUMP JUMPDEST PUSH2 0x15F PUSH2 0x15A CALLDATASIZE PUSH1 0x4 PUSH2 0xF47 JUMP JUMPDEST PUSH2 0x343 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x15F PUSH2 0x16F CALLDATASIZE PUSH1 0x4 PUSH2 0xF71 JUMP JUMPDEST PUSH2 0x45D JUMP JUMPDEST PUSH2 0x15F PUSH2 0x182 CALLDATASIZE PUSH1 0x4 PUSH2 0xF71 JUMP JUMPDEST PUSH2 0x4D4 JUMP JUMPDEST PUSH2 0x134 PUSH2 0x195 CALLDATASIZE PUSH1 0x4 PUSH2 0xF12 JUMP JUMPDEST PUSH2 0x4EF JUMP JUMPDEST PUSH2 0x1AD PUSH2 0x1A8 CALLDATASIZE PUSH1 0x4 PUSH2 0xFAD JUMP JUMPDEST PUSH2 0x554 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x103 JUMP JUMPDEST PUSH2 0x114 PUSH2 0x5EE JUMP JUMPDEST PUSH2 0x15F PUSH2 0x1D1 CALLDATASIZE PUSH1 0x4 PUSH2 0xFC8 JUMP JUMPDEST PUSH2 0x5FD JUMP JUMPDEST PUSH2 0x15F PUSH2 0x1E4 CALLDATASIZE PUSH1 0x4 PUSH2 0x101A JUMP JUMPDEST PUSH2 0x60C JUMP JUMPDEST PUSH2 0x114 PUSH2 0x1F7 CALLDATASIZE PUSH1 0x4 PUSH2 0xF12 JUMP JUMPDEST PUSH2 0x68A JUMP JUMPDEST PUSH2 0xF7 PUSH2 0x20A CALLDATASIZE PUSH1 0x4 PUSH2 0x10F6 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x80AC58CD PUSH1 0xE0 SHL EQ DUP1 PUSH2 0x269 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x5B5E139F PUSH1 0xE0 SHL EQ JUMPDEST DUP1 PUSH2 0x284 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 SLOAD PUSH2 0x299 SWAP1 PUSH2 0x1129 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x2C5 SWAP1 PUSH2 0x1129 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x312 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x2E7 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x312 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x2F5 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x327 DUP3 PUSH2 0x6FE JUMP JUMPDEST POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x34E DUP3 PUSH2 0x4EF JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x3C0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F76616C20746F2063757272656E74206F776E65 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x39 PUSH1 0xF9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND EQ DUP1 PUSH2 0x3DC JUMPI POP PUSH2 0x3DC DUP2 CALLER PUSH2 0x20A JUMP JUMPDEST PUSH2 0x44E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F76652063616C6C6572206973206E6F7420746F PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6B656E206F776E6572206F7220617070726F76656420666F7220616C6C000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B7 JUMP JUMPDEST PUSH2 0x458 DUP4 DUP4 PUSH2 0x765 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x467 CALLER DUP3 PUSH2 0x7E0 JUMP JUMPDEST PUSH2 0x4C9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A2063616C6C6572206973206E6F7420746F6B656E206F776E65 PUSH1 0x44 DUP3 ADD MSTORE PUSH13 0x1C881BDC88185C1C1C9BDD9959 PUSH1 0x9A SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B7 JUMP JUMPDEST PUSH2 0x458 DUP4 DUP4 DUP4 PUSH2 0x85F JUMP JUMPDEST PUSH2 0x458 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x60C JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP1 PUSH2 0x284 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20696E76616C696420746F6B656E2049440000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3B7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x5D2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A2061646472657373207A65726F206973206E6F742061207661 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6C6964206F776E65720000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B7 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 DUP1 SLOAD PUSH2 0x299 SWAP1 PUSH2 0x1129 JUMP JUMPDEST PUSH2 0x608 CALLER DUP4 DUP4 PUSH2 0xA4C JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x616 CALLER DUP4 PUSH2 0x7E0 JUMP JUMPDEST PUSH2 0x678 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A2063616C6C6572206973206E6F7420746F6B656E206F776E65 PUSH1 0x44 DUP3 ADD MSTORE PUSH13 0x1C881BDC88185C1C1C9BDD9959 PUSH1 0x9A SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B7 JUMP JUMPDEST PUSH2 0x684 DUP5 DUP5 DUP5 DUP5 PUSH2 0xB1A JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x695 DUP3 PUSH2 0x6FE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6AC PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE SWAP1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 MLOAD GT PUSH2 0x6CC JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x6F7 JUMP JUMPDEST DUP1 PUSH2 0x6D6 DUP5 PUSH2 0xBA3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x6E7 SWAP3 SWAP2 SWAP1 PUSH2 0x1163 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x762 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20696E76616C696420746F6B656E2049440000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3B7 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP2 SWAP1 PUSH2 0x7A7 DUP3 PUSH2 0x4EF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x7EC DUP4 PUSH2 0x4EF JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x833 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP9 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST DUP1 PUSH2 0x857 JUMPI POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x84C DUP5 PUSH2 0x31C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x872 DUP3 PUSH2 0x4EF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x8D6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E736665722066726F6D20696E636F727265637420 PUSH1 0x44 DUP3 ADD MSTORE PUSH5 0x37BBB732B9 PUSH1 0xD9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x938 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F20746865207A65726F20616464 PUSH1 0x44 DUP3 ADD MSTORE PUSH4 0x72657373 PUSH1 0xE0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B7 JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x94B DUP3 PUSH2 0x4EF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x9AF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E736665722066726F6D20696E636F727265637420 PUSH1 0x44 DUP3 ADD MSTORE PUSH5 0x37BBB732B9 PUSH1 0xD9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B7 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT SWAP1 DUP2 AND SWAP1 SWAP2 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND DUP1 DUP7 MSTORE PUSH1 0x3 DUP6 MSTORE DUP4 DUP7 KECCAK256 DUP1 SLOAD PUSH1 0x0 NOT ADD SWAP1 SSTORE SWAP1 DUP8 AND DUP1 DUP7 MSTORE DUP4 DUP7 KECCAK256 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE DUP7 DUP7 MSTORE PUSH1 0x2 SWAP1 SWAP5 MSTORE DUP3 DUP6 KECCAK256 DUP1 SLOAD SWAP1 SWAP3 AND DUP5 OR SWAP1 SWAP2 SSTORE SWAP1 MLOAD DUP5 SWAP4 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 LOG4 POP POP POP JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0xAAD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F766520746F2063616C6C657200000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3B7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND DUP7 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP2 MLOAD SWAP2 DUP3 MSTORE PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0xB25 DUP5 DUP5 DUP5 PUSH2 0x85F JUMP JUMPDEST PUSH2 0xB31 DUP5 DUP5 DUP5 DUP5 PUSH2 0xC43 JUMP JUMPDEST PUSH2 0x684 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x32 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F206E6F6E204552433732315265 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x63656976657220696D706C656D656E7465720000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B7 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0xBB0 DUP4 PUSH2 0xD9A JUMP JUMPDEST PUSH1 0x1 ADD SWAP1 POP PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xBD0 JUMPI PUSH2 0xBD0 PUSH2 0x1004 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xBFA JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP DUP2 DUP2 ADD PUSH1 0x20 ADD JUMPDEST PUSH1 0x0 NOT ADD PUSH32 0x3031323334353637383961626364656600000000000000000000000000000000 PUSH1 0xA DUP7 MOD BYTE DUP2 MSTORE8 PUSH1 0xA DUP6 DIV SWAP5 POP DUP5 PUSH2 0xC04 JUMPI POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO PUSH2 0xD8F JUMPI PUSH1 0x40 MLOAD PUSH4 0xA85BD01 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0x150B7A02 SWAP1 PUSH2 0xC87 SWAP1 CALLER SWAP1 DUP10 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x1192 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0xCC2 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0xCBF SWAP2 DUP2 ADD SWAP1 PUSH2 0x11CE JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0xD75 JUMPI RETURNDATASIZE DUP1 DUP1 ISZERO PUSH2 0xCF0 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xCF5 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP DUP1 MLOAD PUSH1 0x0 SUB PUSH2 0xD6D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x32 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F206E6F6E204552433732315265 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x63656976657220696D706C656D656E7465720000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B7 JUMP JUMPDEST DUP1 MLOAD DUP2 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH4 0xA85BD01 PUSH1 0xE1 SHL EQ SWAP1 POP PUSH2 0x857 JUMP JUMPDEST POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH27 0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F010000000000000000 DUP4 LT PUSH2 0xDE3 JUMPI PUSH27 0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F010000000000000000 DUP4 DIV SWAP3 POP PUSH1 0x40 ADD JUMPDEST PUSH14 0x4EE2D6D415B85ACEF8100000000 DUP4 LT PUSH2 0xE0F JUMPI PUSH14 0x4EE2D6D415B85ACEF8100000000 DUP4 DIV SWAP3 POP PUSH1 0x20 ADD JUMPDEST PUSH7 0x2386F26FC10000 DUP4 LT PUSH2 0xE2D JUMPI PUSH7 0x2386F26FC10000 DUP4 DIV SWAP3 POP PUSH1 0x10 ADD JUMPDEST PUSH4 0x5F5E100 DUP4 LT PUSH2 0xE45 JUMPI PUSH4 0x5F5E100 DUP4 DIV SWAP3 POP PUSH1 0x8 ADD JUMPDEST PUSH2 0x2710 DUP4 LT PUSH2 0xE59 JUMPI PUSH2 0x2710 DUP4 DIV SWAP3 POP PUSH1 0x4 ADD JUMPDEST PUSH1 0x64 DUP4 LT PUSH2 0xE6B JUMPI PUSH1 0x64 DUP4 DIV SWAP3 POP PUSH1 0x2 ADD JUMPDEST PUSH1 0xA DUP4 LT PUSH2 0x284 JUMPI PUSH1 0x1 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x762 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xEA4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x6F7 DUP2 PUSH2 0xE7C JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xECA JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xEB2 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0xEEB DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0xEAF JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x6F7 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0xED3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xF24 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xF42 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xF5A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF63 DUP4 PUSH2 0xF2B JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xF86 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF8F DUP5 PUSH2 0xF2B JUMP JUMPDEST SWAP3 POP PUSH2 0xF9D PUSH1 0x20 DUP6 ADD PUSH2 0xF2B JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xFBF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x6F7 DUP3 PUSH2 0xF2B JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xFDB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xFE4 DUP4 PUSH2 0xF2B JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xFF9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x1030 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1039 DUP6 PUSH2 0xF2B JUMP JUMPDEST SWAP4 POP PUSH2 0x1047 PUSH1 0x20 DUP7 ADD PUSH2 0xF2B JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x106B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x107F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x1091 JUMPI PUSH2 0x1091 PUSH2 0x1004 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x10B9 JUMPI PUSH2 0x10B9 PUSH2 0x1004 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP11 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x10D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1109 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1112 DUP4 PUSH2 0xF2B JUMP JUMPDEST SWAP2 POP PUSH2 0x1120 PUSH1 0x20 DUP5 ADD PUSH2 0xF2B JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x113D JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x115D JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP4 MLOAD PUSH2 0x1175 DUP2 DUP5 PUSH1 0x20 DUP9 ADD PUSH2 0xEAF JUMP JUMPDEST DUP4 MLOAD SWAP1 DUP4 ADD SWAP1 PUSH2 0x1189 DUP2 DUP4 PUSH1 0x20 DUP9 ADD PUSH2 0xEAF JUMP JUMPDEST ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND DUP4 MSTORE DUP1 DUP7 AND PUSH1 0x20 DUP5 ADD MSTORE POP DUP4 PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x80 PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x11C4 PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0xED3 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x11E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x6F7 DUP2 PUSH2 0xE7C JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"628:16377:29:-:0;;;1390:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1456:5;:13;1464:5;1456;:13;:::i;:::-;-1:-1:-1;1479:7:29;:17;1489:7;1479;:17;:::i;:::-;;1390:113;;628:16377;;14:127:92;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:840;200:5;253:3;246:4;238:6;234:17;230:27;220:55;;271:1;268;261:12;220:55;294:13;;-1:-1:-1;;;;;356:10:92;;;353:36;;;369:18;;:::i;:::-;444:2;438:9;412:2;498:13;;-1:-1:-1;;494:22:92;;;518:2;490:31;486:40;474:53;;;542:18;;;562:22;;;539:46;536:72;;;588:18;;:::i;:::-;628:10;624:2;617:22;663:2;655:6;648:18;685:4;675:14;;730:3;725:2;720;712:6;708:15;704:24;701:33;698:53;;;747:1;744;737:12;698:53;769:1;760:10;;779:133;793:2;790:1;787:9;779:133;;;881:14;;;877:23;;871:30;850:14;;;846:23;;839:63;804:10;;;;779:133;;;954:1;932:15;;;928:24;;;921:35;;;;936:6;146:840;-1:-1:-1;;;;146:840:92:o;991:562::-;1090:6;1098;1151:2;1139:9;1130:7;1126:23;1122:32;1119:52;;;1167:1;1164;1157:12;1119:52;1194:16;;-1:-1:-1;;;;;1259:14:92;;;1256:34;;;1286:1;1283;1276:12;1256:34;1309:61;1362:7;1353:6;1342:9;1338:22;1309:61;:::i;:::-;1299:71;;1416:2;1405:9;1401:18;1395:25;1379:41;;1445:2;1435:8;1432:16;1429:36;;;1461:1;1458;1451:12;1429:36;;1484:63;1539:7;1528:8;1517:9;1513:24;1484:63;:::i;:::-;1474:73;;;991:562;;;;;:::o;1558:380::-;1637:1;1633:12;;;;1680;;;1701:61;;1755:4;1747:6;1743:17;1733:27;;1701:61;1808:2;1800:6;1797:14;1777:18;1774:38;1771:161;;1854:10;1849:3;1845:20;1842:1;1835:31;1889:4;1886:1;1879:15;1917:4;1914:1;1907:15;1771:161;;1558:380;;;:::o;2069:545::-;2171:2;2166:3;2163:11;2160:448;;;2207:1;2232:5;2228:2;2221:17;2277:4;2273:2;2263:19;2347:2;2335:10;2331:19;2328:1;2324:27;2318:4;2314:38;2383:4;2371:10;2368:20;2365:47;;;-1:-1:-1;2406:4:92;2365:47;2461:2;2456:3;2452:12;2449:1;2445:20;2439:4;2435:31;2425:41;;2516:82;2534:2;2527:5;2524:13;2516:82;;;2579:17;;;2560:1;2549:13;2516:82;;;2520:3;;;2160:448;2069:545;;;:::o;2790:1352::-;2910:10;;-1:-1:-1;;;;;2932:30:92;;2929:56;;;2965:18;;:::i;:::-;2994:97;3084:6;3044:38;3076:4;3070:11;3044:38;:::i;:::-;3038:4;2994:97;:::i;:::-;3146:4;;3210:2;3199:14;;3227:1;3222:663;;;;3929:1;3946:6;3943:89;;;-1:-1:-1;3998:19:92;;;3992:26;3943:89;-1:-1:-1;;2747:1:92;2743:11;;;2739:24;2735:29;2725:40;2771:1;2767:11;;;2722:57;4045:81;;3192:944;;3222:663;2016:1;2009:14;;;2053:4;2040:18;;-1:-1:-1;;3258:20:92;;;3376:236;3390:7;3387:1;3384:14;3376:236;;;3479:19;;;3473:26;3458:42;;3571:27;;;;3539:1;3527:14;;;;3406:19;;3376:236;;;3380:3;3640:6;3631:7;3628:19;3625:201;;;3701:19;;;3695:26;-1:-1:-1;;3784:1:92;3780:14;;;3796:3;3776:24;3772:37;3768:42;3753:58;3738:74;;3625:201;-1:-1:-1;;;;;3872:1:92;3856:14;;;3852:22;3839:36;;-1:-1:-1;2790:1352:92:o;:::-;628:16377:29;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_afterTokenTransfer_8757":{"entryPoint":null,"id":8757,"parameterSlots":4,"returnSlots":0},"@_approve_8623":{"entryPoint":1893,"id":8623,"parameterSlots":2,"returnSlots":0},"@_baseURI_8060":{"entryPoint":null,"id":8060,"parameterSlots":0,"returnSlots":1},"@_beforeTokenTransfer_8744":{"entryPoint":null,"id":8744,"parameterSlots":4,"returnSlots":0},"@_checkOnERC721Received_8731":{"entryPoint":3139,"id":8731,"parameterSlots":4,"returnSlots":1},"@_exists_8292":{"entryPoint":null,"id":8292,"parameterSlots":1,"returnSlots":1},"@_isApprovedOrOwner_8326":{"entryPoint":2016,"id":8326,"parameterSlots":2,"returnSlots":1},"@_msgSender_9276":{"entryPoint":null,"id":9276,"parameterSlots":0,"returnSlots":1},"@_ownerOf_8274":{"entryPoint":null,"id":8274,"parameterSlots":1,"returnSlots":1},"@_requireMinted_8669":{"entryPoint":1790,"id":8669,"parameterSlots":1,"returnSlots":0},"@_safeTransfer_8261":{"entryPoint":2842,"id":8261,"parameterSlots":4,"returnSlots":0},"@_setApprovalForAll_8655":{"entryPoint":2636,"id":8655,"parameterSlots":3,"returnSlots":0},"@_transfer_8599":{"entryPoint":2143,"id":8599,"parameterSlots":3,"returnSlots":0},"@approve_8103":{"entryPoint":835,"id":8103,"parameterSlots":2,"returnSlots":0},"@balanceOf_7964":{"entryPoint":1364,"id":7964,"parameterSlots":1,"returnSlots":1},"@getApproved_8121":{"entryPoint":796,"id":8121,"parameterSlots":1,"returnSlots":1},"@isApprovedForAll_8156":{"entryPoint":null,"id":8156,"parameterSlots":2,"returnSlots":1},"@isContract_8952":{"entryPoint":null,"id":8952,"parameterSlots":1,"returnSlots":1},"@log10_10446":{"entryPoint":3482,"id":10446,"parameterSlots":1,"returnSlots":1},"@name_8002":{"entryPoint":650,"id":8002,"parameterSlots":0,"returnSlots":1},"@ownerOf_7992":{"entryPoint":1263,"id":7992,"parameterSlots":1,"returnSlots":1},"@safeTransferFrom_8202":{"entryPoint":1236,"id":8202,"parameterSlots":3,"returnSlots":0},"@safeTransferFrom_8232":{"entryPoint":1548,"id":8232,"parameterSlots":4,"returnSlots":0},"@setApprovalForAll_8138":{"entryPoint":1533,"id":8138,"parameterSlots":2,"returnSlots":0},"@supportsInterface_7940":{"entryPoint":568,"id":7940,"parameterSlots":1,"returnSlots":1},"@supportsInterface_9730":{"entryPoint":null,"id":9730,"parameterSlots":1,"returnSlots":1},"@symbol_8012":{"entryPoint":1518,"id":8012,"parameterSlots":0,"returnSlots":1},"@toString_9537":{"entryPoint":2979,"id":9537,"parameterSlots":1,"returnSlots":1},"@tokenURI_8051":{"entryPoint":1674,"id":8051,"parameterSlots":1,"returnSlots":1},"@transferFrom_8183":{"entryPoint":1117,"id":8183,"parameterSlots":3,"returnSlots":0},"abi_decode_address":{"entryPoint":3883,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_tuple_t_address":{"entryPoint":4013,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_address":{"entryPoint":4342,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_addresst_uint256":{"entryPoint":3953,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr":{"entryPoint":4122,"id":null,"parameterSlots":2,"returnSlots":4},"abi_decode_tuple_t_addresst_bool":{"entryPoint":4040,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_uint256":{"entryPoint":3911,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_bytes4":{"entryPoint":3730,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes4_fromMemory":{"entryPoint":4558,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256":{"entryPoint":3858,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_string":{"entryPoint":3795,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_packed_t_string_memory_ptr_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":4451,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address_t_address_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":4498,"id":null,"parameterSlots":5,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":3839,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_12a8e5623d251e191fe4a291d9a59bcc01a4db7a1f5c20fc8de44358c18308af__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_c6e14a63ffb144eeef7cce6988e5dce07c60a7e0a7b1ef25dbe18c61483e0a83__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"copy_memory_to_memory_with_cleanup":{"entryPoint":3759,"id":null,"parameterSlots":3,"returnSlots":0},"extract_byte_array_length":{"entryPoint":4393,"id":null,"parameterSlots":1,"returnSlots":1},"panic_error_0x12":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":4100,"id":null,"parameterSlots":0,"returnSlots":0},"validator_revert_bytes4":{"entryPoint":3708,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:10201:92","statements":[{"nodeType":"YulBlock","src":"6:3:92","statements":[]},{"body":{"nodeType":"YulBlock","src":"58:87:92","statements":[{"body":{"nodeType":"YulBlock","src":"123:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"132:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"135:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"125:6:92"},"nodeType":"YulFunctionCall","src":"125:12:92"},"nodeType":"YulExpressionStatement","src":"125:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"81:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"92:5:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"103:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"108:10:92","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"99:3:92"},"nodeType":"YulFunctionCall","src":"99:20:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"88:3:92"},"nodeType":"YulFunctionCall","src":"88:32:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"78:2:92"},"nodeType":"YulFunctionCall","src":"78:43:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"71:6:92"},"nodeType":"YulFunctionCall","src":"71:51:92"},"nodeType":"YulIf","src":"68:71:92"}]},"name":"validator_revert_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"47:5:92","type":""}],"src":"14:131:92"},{"body":{"nodeType":"YulBlock","src":"219:176:92","statements":[{"body":{"nodeType":"YulBlock","src":"265:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"274:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"277:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"267:6:92"},"nodeType":"YulFunctionCall","src":"267:12:92"},"nodeType":"YulExpressionStatement","src":"267:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"240:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"249:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"236:3:92"},"nodeType":"YulFunctionCall","src":"236:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"261:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"232:3:92"},"nodeType":"YulFunctionCall","src":"232:32:92"},"nodeType":"YulIf","src":"229:52:92"},{"nodeType":"YulVariableDeclaration","src":"290:36:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"316:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"303:12:92"},"nodeType":"YulFunctionCall","src":"303:23:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"294:5:92","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"359:5:92"}],"functionName":{"name":"validator_revert_bytes4","nodeType":"YulIdentifier","src":"335:23:92"},"nodeType":"YulFunctionCall","src":"335:30:92"},"nodeType":"YulExpressionStatement","src":"335:30:92"},{"nodeType":"YulAssignment","src":"374:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"384:5:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"374:6:92"}]}]},"name":"abi_decode_tuple_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"185:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"196:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"208:6:92","type":""}],"src":"150:245:92"},{"body":{"nodeType":"YulBlock","src":"495:92:92","statements":[{"nodeType":"YulAssignment","src":"505:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"517:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"528:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"513:3:92"},"nodeType":"YulFunctionCall","src":"513:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"505:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"547:9:92"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"572:6:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"565:6:92"},"nodeType":"YulFunctionCall","src":"565:14:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"558:6:92"},"nodeType":"YulFunctionCall","src":"558:22:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"540:6:92"},"nodeType":"YulFunctionCall","src":"540:41:92"},"nodeType":"YulExpressionStatement","src":"540:41:92"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"464:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"475:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"486:4:92","type":""}],"src":"400:187:92"},{"body":{"nodeType":"YulBlock","src":"658:184:92","statements":[{"nodeType":"YulVariableDeclaration","src":"668:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"677:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"672:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"737:63:92","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"762:3:92"},{"name":"i","nodeType":"YulIdentifier","src":"767:1:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"758:3:92"},"nodeType":"YulFunctionCall","src":"758:11:92"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"781:3:92"},{"name":"i","nodeType":"YulIdentifier","src":"786:1:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"777:3:92"},"nodeType":"YulFunctionCall","src":"777:11:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"771:5:92"},"nodeType":"YulFunctionCall","src":"771:18:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"751:6:92"},"nodeType":"YulFunctionCall","src":"751:39:92"},"nodeType":"YulExpressionStatement","src":"751:39:92"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"698:1:92"},{"name":"length","nodeType":"YulIdentifier","src":"701:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"695:2:92"},"nodeType":"YulFunctionCall","src":"695:13:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"709:19:92","statements":[{"nodeType":"YulAssignment","src":"711:15:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"720:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"723:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"716:3:92"},"nodeType":"YulFunctionCall","src":"716:10:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"711:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"691:3:92","statements":[]},"src":"687:113:92"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"820:3:92"},{"name":"length","nodeType":"YulIdentifier","src":"825:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"816:3:92"},"nodeType":"YulFunctionCall","src":"816:16:92"},{"kind":"number","nodeType":"YulLiteral","src":"834:1:92","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"809:6:92"},"nodeType":"YulFunctionCall","src":"809:27:92"},"nodeType":"YulExpressionStatement","src":"809:27:92"}]},"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"636:3:92","type":""},{"name":"dst","nodeType":"YulTypedName","src":"641:3:92","type":""},{"name":"length","nodeType":"YulTypedName","src":"646:6:92","type":""}],"src":"592:250:92"},{"body":{"nodeType":"YulBlock","src":"897:221:92","statements":[{"nodeType":"YulVariableDeclaration","src":"907:26:92","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"927:5:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"921:5:92"},"nodeType":"YulFunctionCall","src":"921:12:92"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"911:6:92","type":""}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"949:3:92"},{"name":"length","nodeType":"YulIdentifier","src":"954:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"942:6:92"},"nodeType":"YulFunctionCall","src":"942:19:92"},"nodeType":"YulExpressionStatement","src":"942:19:92"},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1009:5:92"},{"kind":"number","nodeType":"YulLiteral","src":"1016:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1005:3:92"},"nodeType":"YulFunctionCall","src":"1005:16:92"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1027:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"1032:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1023:3:92"},"nodeType":"YulFunctionCall","src":"1023:14:92"},{"name":"length","nodeType":"YulIdentifier","src":"1039:6:92"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"970:34:92"},"nodeType":"YulFunctionCall","src":"970:76:92"},"nodeType":"YulExpressionStatement","src":"970:76:92"},{"nodeType":"YulAssignment","src":"1055:57:92","value":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1070:3:92"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"1083:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"1091:2:92","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1079:3:92"},"nodeType":"YulFunctionCall","src":"1079:15:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1100:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"1096:3:92"},"nodeType":"YulFunctionCall","src":"1096:7:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1075:3:92"},"nodeType":"YulFunctionCall","src":"1075:29:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1066:3:92"},"nodeType":"YulFunctionCall","src":"1066:39:92"},{"kind":"number","nodeType":"YulLiteral","src":"1107:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1062:3:92"},"nodeType":"YulFunctionCall","src":"1062:50:92"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1055:3:92"}]}]},"name":"abi_encode_string","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"874:5:92","type":""},{"name":"pos","nodeType":"YulTypedName","src":"881:3:92","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"889:3:92","type":""}],"src":"847:271:92"},{"body":{"nodeType":"YulBlock","src":"1244:99:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1261:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1272:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1254:6:92"},"nodeType":"YulFunctionCall","src":"1254:21:92"},"nodeType":"YulExpressionStatement","src":"1254:21:92"},{"nodeType":"YulAssignment","src":"1284:53:92","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1310:6:92"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1322:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1333:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1318:3:92"},"nodeType":"YulFunctionCall","src":"1318:18:92"}],"functionName":{"name":"abi_encode_string","nodeType":"YulIdentifier","src":"1292:17:92"},"nodeType":"YulFunctionCall","src":"1292:45:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1284:4:92"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1213:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1224:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1235:4:92","type":""}],"src":"1123:220:92"},{"body":{"nodeType":"YulBlock","src":"1418:110:92","statements":[{"body":{"nodeType":"YulBlock","src":"1464:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1473:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1476:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1466:6:92"},"nodeType":"YulFunctionCall","src":"1466:12:92"},"nodeType":"YulExpressionStatement","src":"1466:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1439:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"1448:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1435:3:92"},"nodeType":"YulFunctionCall","src":"1435:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"1460:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1431:3:92"},"nodeType":"YulFunctionCall","src":"1431:32:92"},"nodeType":"YulIf","src":"1428:52:92"},{"nodeType":"YulAssignment","src":"1489:33:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1512:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1499:12:92"},"nodeType":"YulFunctionCall","src":"1499:23:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1489:6:92"}]}]},"name":"abi_decode_tuple_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1384:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1395:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1407:6:92","type":""}],"src":"1348:180:92"},{"body":{"nodeType":"YulBlock","src":"1634:125:92","statements":[{"nodeType":"YulAssignment","src":"1644:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1656:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1667:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1652:3:92"},"nodeType":"YulFunctionCall","src":"1652:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1644:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1686:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1701:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"1709:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1697:3:92"},"nodeType":"YulFunctionCall","src":"1697:55:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1679:6:92"},"nodeType":"YulFunctionCall","src":"1679:74:92"},"nodeType":"YulExpressionStatement","src":"1679:74:92"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1603:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1614:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1625:4:92","type":""}],"src":"1533:226:92"},{"body":{"nodeType":"YulBlock","src":"1813:147:92","statements":[{"nodeType":"YulAssignment","src":"1823:29:92","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1845:6:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1832:12:92"},"nodeType":"YulFunctionCall","src":"1832:20:92"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"1823:5:92"}]},{"body":{"nodeType":"YulBlock","src":"1938:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1947:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1950:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1940:6:92"},"nodeType":"YulFunctionCall","src":"1940:12:92"},"nodeType":"YulExpressionStatement","src":"1940:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1874:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1885:5:92"},{"kind":"number","nodeType":"YulLiteral","src":"1892:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1881:3:92"},"nodeType":"YulFunctionCall","src":"1881:54:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1871:2:92"},"nodeType":"YulFunctionCall","src":"1871:65:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1864:6:92"},"nodeType":"YulFunctionCall","src":"1864:73:92"},"nodeType":"YulIf","src":"1861:93:92"}]},"name":"abi_decode_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"1792:6:92","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"1803:5:92","type":""}],"src":"1764:196:92"},{"body":{"nodeType":"YulBlock","src":"2052:167:92","statements":[{"body":{"nodeType":"YulBlock","src":"2098:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2107:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2110:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2100:6:92"},"nodeType":"YulFunctionCall","src":"2100:12:92"},"nodeType":"YulExpressionStatement","src":"2100:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2073:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"2082:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2069:3:92"},"nodeType":"YulFunctionCall","src":"2069:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"2094:2:92","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2065:3:92"},"nodeType":"YulFunctionCall","src":"2065:32:92"},"nodeType":"YulIf","src":"2062:52:92"},{"nodeType":"YulAssignment","src":"2123:39:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2152:9:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"2133:18:92"},"nodeType":"YulFunctionCall","src":"2133:29:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2123:6:92"}]},{"nodeType":"YulAssignment","src":"2171:42:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2198:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2209:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2194:3:92"},"nodeType":"YulFunctionCall","src":"2194:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2181:12:92"},"nodeType":"YulFunctionCall","src":"2181:32:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"2171:6:92"}]}]},"name":"abi_decode_tuple_t_addresst_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2010:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2021:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2033:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2041:6:92","type":""}],"src":"1965:254:92"},{"body":{"nodeType":"YulBlock","src":"2328:224:92","statements":[{"body":{"nodeType":"YulBlock","src":"2374:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2383:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2386:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2376:6:92"},"nodeType":"YulFunctionCall","src":"2376:12:92"},"nodeType":"YulExpressionStatement","src":"2376:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2349:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"2358:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2345:3:92"},"nodeType":"YulFunctionCall","src":"2345:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"2370:2:92","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2341:3:92"},"nodeType":"YulFunctionCall","src":"2341:32:92"},"nodeType":"YulIf","src":"2338:52:92"},{"nodeType":"YulAssignment","src":"2399:39:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2428:9:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"2409:18:92"},"nodeType":"YulFunctionCall","src":"2409:29:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2399:6:92"}]},{"nodeType":"YulAssignment","src":"2447:48:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2480:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2491:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2476:3:92"},"nodeType":"YulFunctionCall","src":"2476:18:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"2457:18:92"},"nodeType":"YulFunctionCall","src":"2457:38:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"2447:6:92"}]},{"nodeType":"YulAssignment","src":"2504:42:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2531:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2542:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2527:3:92"},"nodeType":"YulFunctionCall","src":"2527:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2514:12:92"},"nodeType":"YulFunctionCall","src":"2514:32:92"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"2504:6:92"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2278:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2289:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2301:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2309:6:92","type":""},{"name":"value2","nodeType":"YulTypedName","src":"2317:6:92","type":""}],"src":"2224:328:92"},{"body":{"nodeType":"YulBlock","src":"2627:116:92","statements":[{"body":{"nodeType":"YulBlock","src":"2673:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2682:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2685:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2675:6:92"},"nodeType":"YulFunctionCall","src":"2675:12:92"},"nodeType":"YulExpressionStatement","src":"2675:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2648:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"2657:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2644:3:92"},"nodeType":"YulFunctionCall","src":"2644:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"2669:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2640:3:92"},"nodeType":"YulFunctionCall","src":"2640:32:92"},"nodeType":"YulIf","src":"2637:52:92"},{"nodeType":"YulAssignment","src":"2698:39:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2727:9:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"2708:18:92"},"nodeType":"YulFunctionCall","src":"2708:29:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2698:6:92"}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2593:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2604:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2616:6:92","type":""}],"src":"2557:186:92"},{"body":{"nodeType":"YulBlock","src":"2849:76:92","statements":[{"nodeType":"YulAssignment","src":"2859:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2871:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2882:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2867:3:92"},"nodeType":"YulFunctionCall","src":"2867:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2859:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2901:9:92"},{"name":"value0","nodeType":"YulIdentifier","src":"2912:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2894:6:92"},"nodeType":"YulFunctionCall","src":"2894:25:92"},"nodeType":"YulExpressionStatement","src":"2894:25:92"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2818:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"2829:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2840:4:92","type":""}],"src":"2748:177:92"},{"body":{"nodeType":"YulBlock","src":"3014:263:92","statements":[{"body":{"nodeType":"YulBlock","src":"3060:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3069:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3072:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3062:6:92"},"nodeType":"YulFunctionCall","src":"3062:12:92"},"nodeType":"YulExpressionStatement","src":"3062:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3035:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"3044:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3031:3:92"},"nodeType":"YulFunctionCall","src":"3031:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"3056:2:92","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3027:3:92"},"nodeType":"YulFunctionCall","src":"3027:32:92"},"nodeType":"YulIf","src":"3024:52:92"},{"nodeType":"YulAssignment","src":"3085:39:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3114:9:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"3095:18:92"},"nodeType":"YulFunctionCall","src":"3095:29:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3085:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"3133:45:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3163:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3174:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3159:3:92"},"nodeType":"YulFunctionCall","src":"3159:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3146:12:92"},"nodeType":"YulFunctionCall","src":"3146:32:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"3137:5:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"3231:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3240:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3243:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3233:6:92"},"nodeType":"YulFunctionCall","src":"3233:12:92"},"nodeType":"YulExpressionStatement","src":"3233:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3200:5:92"},{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3221:5:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3214:6:92"},"nodeType":"YulFunctionCall","src":"3214:13:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3207:6:92"},"nodeType":"YulFunctionCall","src":"3207:21:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"3197:2:92"},"nodeType":"YulFunctionCall","src":"3197:32:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3190:6:92"},"nodeType":"YulFunctionCall","src":"3190:40:92"},"nodeType":"YulIf","src":"3187:60:92"},{"nodeType":"YulAssignment","src":"3256:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"3266:5:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"3256:6:92"}]}]},"name":"abi_decode_tuple_t_addresst_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2972:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2983:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2995:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"3003:6:92","type":""}],"src":"2930:347:92"},{"body":{"nodeType":"YulBlock","src":"3314:95:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3331:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3338:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"3343:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"3334:3:92"},"nodeType":"YulFunctionCall","src":"3334:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3324:6:92"},"nodeType":"YulFunctionCall","src":"3324:31:92"},"nodeType":"YulExpressionStatement","src":"3324:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3371:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"3374:4:92","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3364:6:92"},"nodeType":"YulFunctionCall","src":"3364:15:92"},"nodeType":"YulExpressionStatement","src":"3364:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3395:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3398:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3388:6:92"},"nodeType":"YulFunctionCall","src":"3388:15:92"},"nodeType":"YulExpressionStatement","src":"3388:15:92"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"3282:127:92"},{"body":{"nodeType":"YulBlock","src":"3544:1008:92","statements":[{"body":{"nodeType":"YulBlock","src":"3591:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3600:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3603:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3593:6:92"},"nodeType":"YulFunctionCall","src":"3593:12:92"},"nodeType":"YulExpressionStatement","src":"3593:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3565:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"3574:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3561:3:92"},"nodeType":"YulFunctionCall","src":"3561:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"3586:3:92","type":"","value":"128"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3557:3:92"},"nodeType":"YulFunctionCall","src":"3557:33:92"},"nodeType":"YulIf","src":"3554:53:92"},{"nodeType":"YulAssignment","src":"3616:39:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3645:9:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"3626:18:92"},"nodeType":"YulFunctionCall","src":"3626:29:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3616:6:92"}]},{"nodeType":"YulAssignment","src":"3664:48:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3697:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3708:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3693:3:92"},"nodeType":"YulFunctionCall","src":"3693:18:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"3674:18:92"},"nodeType":"YulFunctionCall","src":"3674:38:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"3664:6:92"}]},{"nodeType":"YulAssignment","src":"3721:42:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3748:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3759:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3744:3:92"},"nodeType":"YulFunctionCall","src":"3744:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3731:12:92"},"nodeType":"YulFunctionCall","src":"3731:32:92"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"3721:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"3772:46:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3803:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3814:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3799:3:92"},"nodeType":"YulFunctionCall","src":"3799:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3786:12:92"},"nodeType":"YulFunctionCall","src":"3786:32:92"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"3776:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3827:28:92","value":{"kind":"number","nodeType":"YulLiteral","src":"3837:18:92","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"3831:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"3882:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3891:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3894:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3884:6:92"},"nodeType":"YulFunctionCall","src":"3884:12:92"},"nodeType":"YulExpressionStatement","src":"3884:12:92"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"3870:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"3878:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3867:2:92"},"nodeType":"YulFunctionCall","src":"3867:14:92"},"nodeType":"YulIf","src":"3864:34:92"},{"nodeType":"YulVariableDeclaration","src":"3907:32:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3921:9:92"},{"name":"offset","nodeType":"YulIdentifier","src":"3932:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3917:3:92"},"nodeType":"YulFunctionCall","src":"3917:22:92"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"3911:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"3987:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3996:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3999:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3989:6:92"},"nodeType":"YulFunctionCall","src":"3989:12:92"},"nodeType":"YulExpressionStatement","src":"3989:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"3966:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"3970:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3962:3:92"},"nodeType":"YulFunctionCall","src":"3962:13:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3977:7:92"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3958:3:92"},"nodeType":"YulFunctionCall","src":"3958:27:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3951:6:92"},"nodeType":"YulFunctionCall","src":"3951:35:92"},"nodeType":"YulIf","src":"3948:55:92"},{"nodeType":"YulVariableDeclaration","src":"4012:26:92","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"4035:2:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4022:12:92"},"nodeType":"YulFunctionCall","src":"4022:16:92"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"4016:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"4061:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"4063:16:92"},"nodeType":"YulFunctionCall","src":"4063:18:92"},"nodeType":"YulExpressionStatement","src":"4063:18:92"}]},"condition":{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"4053:2:92"},{"name":"_1","nodeType":"YulIdentifier","src":"4057:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4050:2:92"},"nodeType":"YulFunctionCall","src":"4050:10:92"},"nodeType":"YulIf","src":"4047:36:92"},{"nodeType":"YulVariableDeclaration","src":"4092:17:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4106:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"4102:3:92"},"nodeType":"YulFunctionCall","src":"4102:7:92"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"4096:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4118:23:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4138:2:92","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4132:5:92"},"nodeType":"YulFunctionCall","src":"4132:9:92"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"4122:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4150:71:92","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"4172:6:92"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"4196:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"4200:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4192:3:92"},"nodeType":"YulFunctionCall","src":"4192:13:92"},{"name":"_4","nodeType":"YulIdentifier","src":"4207:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4188:3:92"},"nodeType":"YulFunctionCall","src":"4188:22:92"},{"kind":"number","nodeType":"YulLiteral","src":"4212:2:92","type":"","value":"63"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4184:3:92"},"nodeType":"YulFunctionCall","src":"4184:31:92"},{"name":"_4","nodeType":"YulIdentifier","src":"4217:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4180:3:92"},"nodeType":"YulFunctionCall","src":"4180:40:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4168:3:92"},"nodeType":"YulFunctionCall","src":"4168:53:92"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"4154:10:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"4280:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"4282:16:92"},"nodeType":"YulFunctionCall","src":"4282:18:92"},"nodeType":"YulExpressionStatement","src":"4282:18:92"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"4239:10:92"},{"name":"_1","nodeType":"YulIdentifier","src":"4251:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4236:2:92"},"nodeType":"YulFunctionCall","src":"4236:18:92"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"4259:10:92"},{"name":"memPtr","nodeType":"YulIdentifier","src":"4271:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"4256:2:92"},"nodeType":"YulFunctionCall","src":"4256:22:92"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"4233:2:92"},"nodeType":"YulFunctionCall","src":"4233:46:92"},"nodeType":"YulIf","src":"4230:72:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4318:2:92","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"4322:10:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4311:6:92"},"nodeType":"YulFunctionCall","src":"4311:22:92"},"nodeType":"YulExpressionStatement","src":"4311:22:92"},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"4349:6:92"},{"name":"_3","nodeType":"YulIdentifier","src":"4357:2:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4342:6:92"},"nodeType":"YulFunctionCall","src":"4342:18:92"},"nodeType":"YulExpressionStatement","src":"4342:18:92"},{"body":{"nodeType":"YulBlock","src":"4406:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4415:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4418:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4408:6:92"},"nodeType":"YulFunctionCall","src":"4408:12:92"},"nodeType":"YulExpressionStatement","src":"4408:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"4383:2:92"},{"name":"_3","nodeType":"YulIdentifier","src":"4387:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4379:3:92"},"nodeType":"YulFunctionCall","src":"4379:11:92"},{"kind":"number","nodeType":"YulLiteral","src":"4392:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4375:3:92"},"nodeType":"YulFunctionCall","src":"4375:20:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4397:7:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4372:2:92"},"nodeType":"YulFunctionCall","src":"4372:33:92"},"nodeType":"YulIf","src":"4369:53:92"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"4448:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"4456:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4444:3:92"},"nodeType":"YulFunctionCall","src":"4444:15:92"},{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"4465:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"4469:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4461:3:92"},"nodeType":"YulFunctionCall","src":"4461:11:92"},{"name":"_3","nodeType":"YulIdentifier","src":"4474:2:92"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"4431:12:92"},"nodeType":"YulFunctionCall","src":"4431:46:92"},"nodeType":"YulExpressionStatement","src":"4431:46:92"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"4501:6:92"},{"name":"_3","nodeType":"YulIdentifier","src":"4509:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4497:3:92"},"nodeType":"YulFunctionCall","src":"4497:15:92"},{"kind":"number","nodeType":"YulLiteral","src":"4514:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4493:3:92"},"nodeType":"YulFunctionCall","src":"4493:24:92"},{"kind":"number","nodeType":"YulLiteral","src":"4519:1:92","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4486:6:92"},"nodeType":"YulFunctionCall","src":"4486:35:92"},"nodeType":"YulExpressionStatement","src":"4486:35:92"},{"nodeType":"YulAssignment","src":"4530:16:92","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"4540:6:92"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"4530:6:92"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3486:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3497:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3509:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"3517:6:92","type":""},{"name":"value2","nodeType":"YulTypedName","src":"3525:6:92","type":""},{"name":"value3","nodeType":"YulTypedName","src":"3533:6:92","type":""}],"src":"3414:1138:92"},{"body":{"nodeType":"YulBlock","src":"4644:173:92","statements":[{"body":{"nodeType":"YulBlock","src":"4690:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4699:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4702:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4692:6:92"},"nodeType":"YulFunctionCall","src":"4692:12:92"},"nodeType":"YulExpressionStatement","src":"4692:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"4665:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"4674:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4661:3:92"},"nodeType":"YulFunctionCall","src":"4661:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"4686:2:92","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4657:3:92"},"nodeType":"YulFunctionCall","src":"4657:32:92"},"nodeType":"YulIf","src":"4654:52:92"},{"nodeType":"YulAssignment","src":"4715:39:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4744:9:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"4725:18:92"},"nodeType":"YulFunctionCall","src":"4725:29:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"4715:6:92"}]},{"nodeType":"YulAssignment","src":"4763:48:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4796:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4807:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4792:3:92"},"nodeType":"YulFunctionCall","src":"4792:18:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"4773:18:92"},"nodeType":"YulFunctionCall","src":"4773:38:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"4763:6:92"}]}]},"name":"abi_decode_tuple_t_addresst_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4602:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"4613:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"4625:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"4633:6:92","type":""}],"src":"4557:260:92"},{"body":{"nodeType":"YulBlock","src":"4877:325:92","statements":[{"nodeType":"YulAssignment","src":"4887:22:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4901:1:92","type":"","value":"1"},{"name":"data","nodeType":"YulIdentifier","src":"4904:4:92"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"4897:3:92"},"nodeType":"YulFunctionCall","src":"4897:12:92"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"4887:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"4918:38:92","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"4948:4:92"},{"kind":"number","nodeType":"YulLiteral","src":"4954:1:92","type":"","value":"1"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4944:3:92"},"nodeType":"YulFunctionCall","src":"4944:12:92"},"variables":[{"name":"outOfPlaceEncoding","nodeType":"YulTypedName","src":"4922:18:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"4995:31:92","statements":[{"nodeType":"YulAssignment","src":"4997:27:92","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"5011:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"5019:4:92","type":"","value":"0x7f"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5007:3:92"},"nodeType":"YulFunctionCall","src":"5007:17:92"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"4997:6:92"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"4975:18:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"4968:6:92"},"nodeType":"YulFunctionCall","src":"4968:26:92"},"nodeType":"YulIf","src":"4965:61:92"},{"body":{"nodeType":"YulBlock","src":"5085:111:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5106:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5113:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"5118:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"5109:3:92"},"nodeType":"YulFunctionCall","src":"5109:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5099:6:92"},"nodeType":"YulFunctionCall","src":"5099:31:92"},"nodeType":"YulExpressionStatement","src":"5099:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5150:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"5153:4:92","type":"","value":"0x22"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5143:6:92"},"nodeType":"YulFunctionCall","src":"5143:15:92"},"nodeType":"YulExpressionStatement","src":"5143:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5178:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5181:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5171:6:92"},"nodeType":"YulFunctionCall","src":"5171:15:92"},"nodeType":"YulExpressionStatement","src":"5171:15:92"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"5041:18:92"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"5064:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"5072:2:92","type":"","value":"32"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"5061:2:92"},"nodeType":"YulFunctionCall","src":"5061:14:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"5038:2:92"},"nodeType":"YulFunctionCall","src":"5038:38:92"},"nodeType":"YulIf","src":"5035:161:92"}]},"name":"extract_byte_array_length","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"4857:4:92","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"4866:6:92","type":""}],"src":"4822:380:92"},{"body":{"nodeType":"YulBlock","src":"5381:223:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5398:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5409:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5391:6:92"},"nodeType":"YulFunctionCall","src":"5391:21:92"},"nodeType":"YulExpressionStatement","src":"5391:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5432:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5443:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5428:3:92"},"nodeType":"YulFunctionCall","src":"5428:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"5448:2:92","type":"","value":"33"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5421:6:92"},"nodeType":"YulFunctionCall","src":"5421:30:92"},"nodeType":"YulExpressionStatement","src":"5421:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5471:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5482:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5467:3:92"},"nodeType":"YulFunctionCall","src":"5467:18:92"},{"hexValue":"4552433732313a20617070726f76616c20746f2063757272656e74206f776e65","kind":"string","nodeType":"YulLiteral","src":"5487:34:92","type":"","value":"ERC721: approval to current owne"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5460:6:92"},"nodeType":"YulFunctionCall","src":"5460:62:92"},"nodeType":"YulExpressionStatement","src":"5460:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5542:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5553:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5538:3:92"},"nodeType":"YulFunctionCall","src":"5538:18:92"},{"hexValue":"72","kind":"string","nodeType":"YulLiteral","src":"5558:3:92","type":"","value":"r"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5531:6:92"},"nodeType":"YulFunctionCall","src":"5531:31:92"},"nodeType":"YulExpressionStatement","src":"5531:31:92"},{"nodeType":"YulAssignment","src":"5571:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5583:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5594:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5579:3:92"},"nodeType":"YulFunctionCall","src":"5579:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5571:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5358:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5372:4:92","type":""}],"src":"5207:397:92"},{"body":{"nodeType":"YulBlock","src":"5783:251:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5800:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5811:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5793:6:92"},"nodeType":"YulFunctionCall","src":"5793:21:92"},"nodeType":"YulExpressionStatement","src":"5793:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5834:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5845:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5830:3:92"},"nodeType":"YulFunctionCall","src":"5830:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"5850:2:92","type":"","value":"61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5823:6:92"},"nodeType":"YulFunctionCall","src":"5823:30:92"},"nodeType":"YulExpressionStatement","src":"5823:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5873:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5884:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5869:3:92"},"nodeType":"YulFunctionCall","src":"5869:18:92"},{"hexValue":"4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f","kind":"string","nodeType":"YulLiteral","src":"5889:34:92","type":"","value":"ERC721: approve caller is not to"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5862:6:92"},"nodeType":"YulFunctionCall","src":"5862:62:92"},"nodeType":"YulExpressionStatement","src":"5862:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5944:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5955:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5940:3:92"},"nodeType":"YulFunctionCall","src":"5940:18:92"},{"hexValue":"6b656e206f776e6572206f7220617070726f76656420666f7220616c6c","kind":"string","nodeType":"YulLiteral","src":"5960:31:92","type":"","value":"ken owner or approved for all"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5933:6:92"},"nodeType":"YulFunctionCall","src":"5933:59:92"},"nodeType":"YulExpressionStatement","src":"5933:59:92"},{"nodeType":"YulAssignment","src":"6001:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6013:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6024:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6009:3:92"},"nodeType":"YulFunctionCall","src":"6009:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6001:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_c6e14a63ffb144eeef7cce6988e5dce07c60a7e0a7b1ef25dbe18c61483e0a83__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5760:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5774:4:92","type":""}],"src":"5609:425:92"},{"body":{"nodeType":"YulBlock","src":"6213:235:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6230:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6241:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6223:6:92"},"nodeType":"YulFunctionCall","src":"6223:21:92"},"nodeType":"YulExpressionStatement","src":"6223:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6264:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6275:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6260:3:92"},"nodeType":"YulFunctionCall","src":"6260:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"6280:2:92","type":"","value":"45"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6253:6:92"},"nodeType":"YulFunctionCall","src":"6253:30:92"},"nodeType":"YulExpressionStatement","src":"6253:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6303:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6314:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6299:3:92"},"nodeType":"YulFunctionCall","src":"6299:18:92"},{"hexValue":"4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e65","kind":"string","nodeType":"YulLiteral","src":"6319:34:92","type":"","value":"ERC721: caller is not token owne"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6292:6:92"},"nodeType":"YulFunctionCall","src":"6292:62:92"},"nodeType":"YulExpressionStatement","src":"6292:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6374:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6385:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6370:3:92"},"nodeType":"YulFunctionCall","src":"6370:18:92"},{"hexValue":"72206f7220617070726f766564","kind":"string","nodeType":"YulLiteral","src":"6390:15:92","type":"","value":"r or approved"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6363:6:92"},"nodeType":"YulFunctionCall","src":"6363:43:92"},"nodeType":"YulExpressionStatement","src":"6363:43:92"},{"nodeType":"YulAssignment","src":"6415:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6427:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6438:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6423:3:92"},"nodeType":"YulFunctionCall","src":"6423:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6415:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_12a8e5623d251e191fe4a291d9a59bcc01a4db7a1f5c20fc8de44358c18308af__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6190:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6204:4:92","type":""}],"src":"6039:409:92"},{"body":{"nodeType":"YulBlock","src":"6627:174:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6644:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6655:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6637:6:92"},"nodeType":"YulFunctionCall","src":"6637:21:92"},"nodeType":"YulExpressionStatement","src":"6637:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6678:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6689:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6674:3:92"},"nodeType":"YulFunctionCall","src":"6674:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"6694:2:92","type":"","value":"24"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6667:6:92"},"nodeType":"YulFunctionCall","src":"6667:30:92"},"nodeType":"YulExpressionStatement","src":"6667:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6717:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6728:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6713:3:92"},"nodeType":"YulFunctionCall","src":"6713:18:92"},{"hexValue":"4552433732313a20696e76616c696420746f6b656e204944","kind":"string","nodeType":"YulLiteral","src":"6733:26:92","type":"","value":"ERC721: invalid token ID"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6706:6:92"},"nodeType":"YulFunctionCall","src":"6706:54:92"},"nodeType":"YulExpressionStatement","src":"6706:54:92"},{"nodeType":"YulAssignment","src":"6769:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6781:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6792:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6777:3:92"},"nodeType":"YulFunctionCall","src":"6777:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6769:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6604:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6618:4:92","type":""}],"src":"6453:348:92"},{"body":{"nodeType":"YulBlock","src":"6980:231:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6997:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7008:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6990:6:92"},"nodeType":"YulFunctionCall","src":"6990:21:92"},"nodeType":"YulExpressionStatement","src":"6990:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7031:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7042:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7027:3:92"},"nodeType":"YulFunctionCall","src":"7027:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"7047:2:92","type":"","value":"41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7020:6:92"},"nodeType":"YulFunctionCall","src":"7020:30:92"},"nodeType":"YulExpressionStatement","src":"7020:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7070:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7081:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7066:3:92"},"nodeType":"YulFunctionCall","src":"7066:18:92"},{"hexValue":"4552433732313a2061646472657373207a65726f206973206e6f742061207661","kind":"string","nodeType":"YulLiteral","src":"7086:34:92","type":"","value":"ERC721: address zero is not a va"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7059:6:92"},"nodeType":"YulFunctionCall","src":"7059:62:92"},"nodeType":"YulExpressionStatement","src":"7059:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7141:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7152:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7137:3:92"},"nodeType":"YulFunctionCall","src":"7137:18:92"},{"hexValue":"6c6964206f776e6572","kind":"string","nodeType":"YulLiteral","src":"7157:11:92","type":"","value":"lid owner"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7130:6:92"},"nodeType":"YulFunctionCall","src":"7130:39:92"},"nodeType":"YulExpressionStatement","src":"7130:39:92"},{"nodeType":"YulAssignment","src":"7178:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7190:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7201:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7186:3:92"},"nodeType":"YulFunctionCall","src":"7186:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7178:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6957:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6971:4:92","type":""}],"src":"6806:405:92"},{"body":{"nodeType":"YulBlock","src":"7403:309:92","statements":[{"nodeType":"YulVariableDeclaration","src":"7413:27:92","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7433:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"7427:5:92"},"nodeType":"YulFunctionCall","src":"7427:13:92"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"7417:6:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7488:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"7496:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7484:3:92"},"nodeType":"YulFunctionCall","src":"7484:17:92"},{"name":"pos","nodeType":"YulIdentifier","src":"7503:3:92"},{"name":"length","nodeType":"YulIdentifier","src":"7508:6:92"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"7449:34:92"},"nodeType":"YulFunctionCall","src":"7449:66:92"},"nodeType":"YulExpressionStatement","src":"7449:66:92"},{"nodeType":"YulVariableDeclaration","src":"7524:29:92","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"7541:3:92"},{"name":"length","nodeType":"YulIdentifier","src":"7546:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7537:3:92"},"nodeType":"YulFunctionCall","src":"7537:16:92"},"variables":[{"name":"end_1","nodeType":"YulTypedName","src":"7528:5:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"7562:29:92","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"7584:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"7578:5:92"},"nodeType":"YulFunctionCall","src":"7578:13:92"},"variables":[{"name":"length_1","nodeType":"YulTypedName","src":"7566:8:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"7639:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"7647:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7635:3:92"},"nodeType":"YulFunctionCall","src":"7635:17:92"},{"name":"end_1","nodeType":"YulIdentifier","src":"7654:5:92"},{"name":"length_1","nodeType":"YulIdentifier","src":"7661:8:92"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"7600:34:92"},"nodeType":"YulFunctionCall","src":"7600:70:92"},"nodeType":"YulExpressionStatement","src":"7600:70:92"},{"nodeType":"YulAssignment","src":"7679:27:92","value":{"arguments":[{"name":"end_1","nodeType":"YulIdentifier","src":"7690:5:92"},{"name":"length_1","nodeType":"YulIdentifier","src":"7697:8:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7686:3:92"},"nodeType":"YulFunctionCall","src":"7686:20:92"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"7679:3:92"}]}]},"name":"abi_encode_tuple_packed_t_string_memory_ptr_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"7371:3:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"7376:6:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"7384:6:92","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"7395:3:92","type":""}],"src":"7216:496:92"},{"body":{"nodeType":"YulBlock","src":"7891:227:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7908:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7919:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7901:6:92"},"nodeType":"YulFunctionCall","src":"7901:21:92"},"nodeType":"YulExpressionStatement","src":"7901:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7942:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7953:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7938:3:92"},"nodeType":"YulFunctionCall","src":"7938:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"7958:2:92","type":"","value":"37"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7931:6:92"},"nodeType":"YulFunctionCall","src":"7931:30:92"},"nodeType":"YulExpressionStatement","src":"7931:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7981:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7992:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7977:3:92"},"nodeType":"YulFunctionCall","src":"7977:18:92"},{"hexValue":"4552433732313a207472616e736665722066726f6d20696e636f727265637420","kind":"string","nodeType":"YulLiteral","src":"7997:34:92","type":"","value":"ERC721: transfer from incorrect "}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7970:6:92"},"nodeType":"YulFunctionCall","src":"7970:62:92"},"nodeType":"YulExpressionStatement","src":"7970:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8052:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8063:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8048:3:92"},"nodeType":"YulFunctionCall","src":"8048:18:92"},{"hexValue":"6f776e6572","kind":"string","nodeType":"YulLiteral","src":"8068:7:92","type":"","value":"owner"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8041:6:92"},"nodeType":"YulFunctionCall","src":"8041:35:92"},"nodeType":"YulExpressionStatement","src":"8041:35:92"},{"nodeType":"YulAssignment","src":"8085:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8097:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8108:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8093:3:92"},"nodeType":"YulFunctionCall","src":"8093:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"8085:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7868:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7882:4:92","type":""}],"src":"7717:401:92"},{"body":{"nodeType":"YulBlock","src":"8297:226:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8314:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8325:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8307:6:92"},"nodeType":"YulFunctionCall","src":"8307:21:92"},"nodeType":"YulExpressionStatement","src":"8307:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8348:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8359:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8344:3:92"},"nodeType":"YulFunctionCall","src":"8344:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"8364:2:92","type":"","value":"36"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8337:6:92"},"nodeType":"YulFunctionCall","src":"8337:30:92"},"nodeType":"YulExpressionStatement","src":"8337:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8387:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8398:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8383:3:92"},"nodeType":"YulFunctionCall","src":"8383:18:92"},{"hexValue":"4552433732313a207472616e7366657220746f20746865207a65726f20616464","kind":"string","nodeType":"YulLiteral","src":"8403:34:92","type":"","value":"ERC721: transfer to the zero add"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8376:6:92"},"nodeType":"YulFunctionCall","src":"8376:62:92"},"nodeType":"YulExpressionStatement","src":"8376:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8458:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8469:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8454:3:92"},"nodeType":"YulFunctionCall","src":"8454:18:92"},{"hexValue":"72657373","kind":"string","nodeType":"YulLiteral","src":"8474:6:92","type":"","value":"ress"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8447:6:92"},"nodeType":"YulFunctionCall","src":"8447:34:92"},"nodeType":"YulExpressionStatement","src":"8447:34:92"},{"nodeType":"YulAssignment","src":"8490:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8502:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8513:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8498:3:92"},"nodeType":"YulFunctionCall","src":"8498:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"8490:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8274:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"8288:4:92","type":""}],"src":"8123:400:92"},{"body":{"nodeType":"YulBlock","src":"8702:175:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8719:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8730:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8712:6:92"},"nodeType":"YulFunctionCall","src":"8712:21:92"},"nodeType":"YulExpressionStatement","src":"8712:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8753:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8764:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8749:3:92"},"nodeType":"YulFunctionCall","src":"8749:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"8769:2:92","type":"","value":"25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8742:6:92"},"nodeType":"YulFunctionCall","src":"8742:30:92"},"nodeType":"YulExpressionStatement","src":"8742:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8792:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8803:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8788:3:92"},"nodeType":"YulFunctionCall","src":"8788:18:92"},{"hexValue":"4552433732313a20617070726f766520746f2063616c6c6572","kind":"string","nodeType":"YulLiteral","src":"8808:27:92","type":"","value":"ERC721: approve to caller"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8781:6:92"},"nodeType":"YulFunctionCall","src":"8781:55:92"},"nodeType":"YulExpressionStatement","src":"8781:55:92"},{"nodeType":"YulAssignment","src":"8845:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8857:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8868:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8853:3:92"},"nodeType":"YulFunctionCall","src":"8853:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"8845:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8679:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"8693:4:92","type":""}],"src":"8528:349:92"},{"body":{"nodeType":"YulBlock","src":"9056:240:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9073:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9084:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9066:6:92"},"nodeType":"YulFunctionCall","src":"9066:21:92"},"nodeType":"YulExpressionStatement","src":"9066:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9107:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9118:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9103:3:92"},"nodeType":"YulFunctionCall","src":"9103:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"9123:2:92","type":"","value":"50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9096:6:92"},"nodeType":"YulFunctionCall","src":"9096:30:92"},"nodeType":"YulExpressionStatement","src":"9096:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9146:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9157:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9142:3:92"},"nodeType":"YulFunctionCall","src":"9142:18:92"},{"hexValue":"4552433732313a207472616e7366657220746f206e6f6e204552433732315265","kind":"string","nodeType":"YulLiteral","src":"9162:34:92","type":"","value":"ERC721: transfer to non ERC721Re"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9135:6:92"},"nodeType":"YulFunctionCall","src":"9135:62:92"},"nodeType":"YulExpressionStatement","src":"9135:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9217:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9228:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9213:3:92"},"nodeType":"YulFunctionCall","src":"9213:18:92"},{"hexValue":"63656976657220696d706c656d656e746572","kind":"string","nodeType":"YulLiteral","src":"9233:20:92","type":"","value":"ceiver implementer"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9206:6:92"},"nodeType":"YulFunctionCall","src":"9206:48:92"},"nodeType":"YulExpressionStatement","src":"9206:48:92"},{"nodeType":"YulAssignment","src":"9263:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9275:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9286:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9271:3:92"},"nodeType":"YulFunctionCall","src":"9271:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"9263:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9033:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"9047:4:92","type":""}],"src":"8882:414:92"},{"body":{"nodeType":"YulBlock","src":"9333:95:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9350:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9357:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"9362:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"9353:3:92"},"nodeType":"YulFunctionCall","src":"9353:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9343:6:92"},"nodeType":"YulFunctionCall","src":"9343:31:92"},"nodeType":"YulExpressionStatement","src":"9343:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9390:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"9393:4:92","type":"","value":"0x12"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9383:6:92"},"nodeType":"YulFunctionCall","src":"9383:15:92"},"nodeType":"YulExpressionStatement","src":"9383:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9414:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"9417:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9407:6:92"},"nodeType":"YulFunctionCall","src":"9407:15:92"},"nodeType":"YulExpressionStatement","src":"9407:15:92"}]},"name":"panic_error_0x12","nodeType":"YulFunctionDefinition","src":"9301:127:92"},{"body":{"nodeType":"YulBlock","src":"9636:309:92","statements":[{"nodeType":"YulVariableDeclaration","src":"9646:52:92","value":{"kind":"number","nodeType":"YulLiteral","src":"9656:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"9650:2:92","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9714:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"9729:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"9737:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"9725:3:92"},"nodeType":"YulFunctionCall","src":"9725:15:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9707:6:92"},"nodeType":"YulFunctionCall","src":"9707:34:92"},"nodeType":"YulExpressionStatement","src":"9707:34:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9761:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9772:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9757:3:92"},"nodeType":"YulFunctionCall","src":"9757:18:92"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"9781:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"9789:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"9777:3:92"},"nodeType":"YulFunctionCall","src":"9777:15:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9750:6:92"},"nodeType":"YulFunctionCall","src":"9750:43:92"},"nodeType":"YulExpressionStatement","src":"9750:43:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9813:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9824:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9809:3:92"},"nodeType":"YulFunctionCall","src":"9809:18:92"},{"name":"value2","nodeType":"YulIdentifier","src":"9829:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9802:6:92"},"nodeType":"YulFunctionCall","src":"9802:34:92"},"nodeType":"YulExpressionStatement","src":"9802:34:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9856:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9867:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9852:3:92"},"nodeType":"YulFunctionCall","src":"9852:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"9872:3:92","type":"","value":"128"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9845:6:92"},"nodeType":"YulFunctionCall","src":"9845:31:92"},"nodeType":"YulExpressionStatement","src":"9845:31:92"},{"nodeType":"YulAssignment","src":"9885:54:92","value":{"arguments":[{"name":"value3","nodeType":"YulIdentifier","src":"9911:6:92"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9923:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9934:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9919:3:92"},"nodeType":"YulFunctionCall","src":"9919:19:92"}],"functionName":{"name":"abi_encode_string","nodeType":"YulIdentifier","src":"9893:17:92"},"nodeType":"YulFunctionCall","src":"9893:46:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"9885:4:92"}]}]},"name":"abi_encode_tuple_t_address_t_address_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9581:9:92","type":""},{"name":"value3","nodeType":"YulTypedName","src":"9592:6:92","type":""},{"name":"value2","nodeType":"YulTypedName","src":"9600:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"9608:6:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"9616:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"9627:4:92","type":""}],"src":"9433:512:92"},{"body":{"nodeType":"YulBlock","src":"10030:169:92","statements":[{"body":{"nodeType":"YulBlock","src":"10076:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10085:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"10088:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"10078:6:92"},"nodeType":"YulFunctionCall","src":"10078:12:92"},"nodeType":"YulExpressionStatement","src":"10078:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"10051:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"10060:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"10047:3:92"},"nodeType":"YulFunctionCall","src":"10047:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"10072:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"10043:3:92"},"nodeType":"YulFunctionCall","src":"10043:32:92"},"nodeType":"YulIf","src":"10040:52:92"},{"nodeType":"YulVariableDeclaration","src":"10101:29:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10120:9:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"10114:5:92"},"nodeType":"YulFunctionCall","src":"10114:16:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"10105:5:92","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"10163:5:92"}],"functionName":{"name":"validator_revert_bytes4","nodeType":"YulIdentifier","src":"10139:23:92"},"nodeType":"YulFunctionCall","src":"10139:30:92"},"nodeType":"YulExpressionStatement","src":"10139:30:92"},{"nodeType":"YulAssignment","src":"10178:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"10188:5:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"10178:6:92"}]}]},"name":"abi_decode_tuple_t_bytes4_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9996:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"10007:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"10019:6:92","type":""}],"src":"9950:249:92"}]},"contents":"{\n { }\n function validator_revert_bytes4(value)\n {\n if iszero(eq(value, and(value, shl(224, 0xffffffff)))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_bytes4(value)\n value0 := value\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function copy_memory_to_memory_with_cleanup(src, dst, length)\n {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n mstore(add(dst, length), 0)\n }\n function abi_encode_string(value, pos) -> end\n {\n let length := mload(value)\n mstore(pos, length)\n copy_memory_to_memory_with_cleanup(add(value, 0x20), add(pos, 0x20), length)\n end := add(add(pos, and(add(length, 31), not(31))), 0x20)\n }\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n mstore(headStart, 32)\n tail := abi_encode_string(value0, add(headStart, 32))\n }\n function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := calldataload(headStart)\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_decode_address(offset) -> value\n {\n value := calldataload(offset)\n if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := calldataload(add(headStart, 32))\n }\n function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := abi_decode_address(add(headStart, 32))\n value2 := calldataload(add(headStart, 64))\n }\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_decode_tuple_t_addresst_bool(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n let value := calldataload(add(headStart, 32))\n if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n value1 := value\n }\n function panic_error_0x41()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n {\n if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := abi_decode_address(add(headStart, 32))\n value2 := calldataload(add(headStart, 64))\n let offset := calldataload(add(headStart, 96))\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n let _2 := add(headStart, offset)\n if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n let _3 := calldataload(_2)\n if gt(_3, _1) { panic_error_0x41() }\n let _4 := not(31)\n let memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n mstore(memPtr, _3)\n if gt(add(add(_2, _3), 32), dataEnd) { revert(0, 0) }\n calldatacopy(add(memPtr, 32), add(_2, 32), _3)\n mstore(add(add(memPtr, _3), 32), 0)\n value3 := memPtr\n }\n function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := abi_decode_address(add(headStart, 32))\n }\n function extract_byte_array_length(data) -> length\n {\n length := shr(1, data)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n if eq(outOfPlaceEncoding, lt(length, 32))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n }\n function abi_encode_tuple_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 33)\n mstore(add(headStart, 64), \"ERC721: approval to current owne\")\n mstore(add(headStart, 96), \"r\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_c6e14a63ffb144eeef7cce6988e5dce07c60a7e0a7b1ef25dbe18c61483e0a83__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 61)\n mstore(add(headStart, 64), \"ERC721: approve caller is not to\")\n mstore(add(headStart, 96), \"ken owner or approved for all\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_12a8e5623d251e191fe4a291d9a59bcc01a4db7a1f5c20fc8de44358c18308af__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 45)\n mstore(add(headStart, 64), \"ERC721: caller is not token owne\")\n mstore(add(headStart, 96), \"r or approved\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 24)\n mstore(add(headStart, 64), \"ERC721: invalid token ID\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 41)\n mstore(add(headStart, 64), \"ERC721: address zero is not a va\")\n mstore(add(headStart, 96), \"lid owner\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_packed_t_string_memory_ptr_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n {\n let length := mload(value0)\n copy_memory_to_memory_with_cleanup(add(value0, 0x20), pos, length)\n let end_1 := add(pos, length)\n let length_1 := mload(value1)\n copy_memory_to_memory_with_cleanup(add(value1, 0x20), end_1, length_1)\n end := add(end_1, length_1)\n }\n function abi_encode_tuple_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 37)\n mstore(add(headStart, 64), \"ERC721: transfer from incorrect \")\n mstore(add(headStart, 96), \"owner\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 36)\n mstore(add(headStart, 64), \"ERC721: transfer to the zero add\")\n mstore(add(headStart, 96), \"ress\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 25)\n mstore(add(headStart, 64), \"ERC721: approve to caller\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 50)\n mstore(add(headStart, 64), \"ERC721: transfer to non ERC721Re\")\n mstore(add(headStart, 96), \"ceiver implementer\")\n tail := add(headStart, 128)\n }\n function panic_error_0x12()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x12)\n revert(0, 0x24)\n }\n function abi_encode_tuple_t_address_t_address_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n {\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n mstore(add(headStart, 64), value2)\n mstore(add(headStart, 96), 128)\n tail := abi_encode_string(value3, add(headStart, 128))\n }\n function abi_decode_tuple_t_bytes4_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := mload(headStart)\n validator_revert_bytes4(value)\n value0 := value\n }\n}","id":92,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100df5760003560e01c80636352211e1161008c578063a22cb46511610066578063a22cb465146101c3578063b88d4fde146101d6578063c87b56dd146101e9578063e985e9c5146101fc57600080fd5b80636352211e1461018757806370a082311461019a57806395d89b41146101bb57600080fd5b8063095ea7b3116100bd578063095ea7b31461014c57806323b872dd1461016157806342842e0e1461017457600080fd5b806301ffc9a7146100e457806306fdde031461010c578063081812fc14610121575b600080fd5b6100f76100f2366004610e92565b610238565b60405190151581526020015b60405180910390f35b61011461028a565b6040516101039190610eff565b61013461012f366004610f12565b61031c565b6040516001600160a01b039091168152602001610103565b61015f61015a366004610f47565b610343565b005b61015f61016f366004610f71565b61045d565b61015f610182366004610f71565b6104d4565b610134610195366004610f12565b6104ef565b6101ad6101a8366004610fad565b610554565b604051908152602001610103565b6101146105ee565b61015f6101d1366004610fc8565b6105fd565b61015f6101e436600461101a565b61060c565b6101146101f7366004610f12565b61068a565b6100f761020a3660046110f6565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b60006001600160e01b031982166380ac58cd60e01b148061026957506001600160e01b03198216635b5e139f60e01b145b8061028457506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606000805461029990611129565b80601f01602080910402602001604051908101604052809291908181526020018280546102c590611129565b80156103125780601f106102e757610100808354040283529160200191610312565b820191906000526020600020905b8154815290600101906020018083116102f557829003601f168201915b5050505050905090565b6000610327826106fe565b506000908152600460205260409020546001600160a01b031690565b600061034e826104ef565b9050806001600160a01b0316836001600160a01b0316036103c05760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b03821614806103dc57506103dc813361020a565b61044e5760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c00000060648201526084016103b7565b6104588383610765565b505050565b61046733826107e0565b6104c95760405162461bcd60e51b815260206004820152602d60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201526c1c881bdc88185c1c1c9bdd9959609a1b60648201526084016103b7565b61045883838361085f565b6104588383836040518060200160405280600081525061060c565b6000818152600260205260408120546001600160a01b0316806102845760405162461bcd60e51b815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e204944000000000000000060448201526064016103b7565b60006001600160a01b0382166105d25760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f74206120766160448201527f6c6964206f776e6572000000000000000000000000000000000000000000000060648201526084016103b7565b506001600160a01b031660009081526003602052604090205490565b60606001805461029990611129565b610608338383610a4c565b5050565b61061633836107e0565b6106785760405162461bcd60e51b815260206004820152602d60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201526c1c881bdc88185c1c1c9bdd9959609a1b60648201526084016103b7565b61068484848484610b1a565b50505050565b6060610695826106fe565b60006106ac60408051602081019091526000815290565b905060008151116106cc57604051806020016040528060008152506106f7565b806106d684610ba3565b6040516020016106e7929190611163565b6040516020818303038152906040525b9392505050565b6000818152600260205260409020546001600160a01b03166107625760405162461bcd60e51b815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e204944000000000000000060448201526064016103b7565b50565b6000818152600460205260409020805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03841690811790915581906107a7826104ef565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000806107ec836104ef565b9050806001600160a01b0316846001600160a01b0316148061083357506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b806108575750836001600160a01b031661084c8461031c565b6001600160a01b0316145b949350505050565b826001600160a01b0316610872826104ef565b6001600160a01b0316146108d65760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016103b7565b6001600160a01b0382166109385760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016103b7565b826001600160a01b031661094b826104ef565b6001600160a01b0316146109af5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016103b7565b6000818152600460209081526040808320805473ffffffffffffffffffffffffffffffffffffffff199081169091556001600160a01b0387811680865260038552838620805460001901905590871680865283862080546001019055868652600290945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b816001600160a01b0316836001600160a01b031603610aad5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016103b7565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b610b2584848461085f565b610b3184848484610c43565b6106845760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e746572000000000000000000000000000060648201526084016103b7565b60606000610bb083610d9a565b600101905060008167ffffffffffffffff811115610bd057610bd0611004565b6040519080825280601f01601f191660200182016040528015610bfa576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084610c0457509392505050565b60006001600160a01b0384163b15610d8f57604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290610c87903390899088908890600401611192565b6020604051808303816000875af1925050508015610cc2575060408051601f3d908101601f19168201909252610cbf918101906111ce565b60015b610d75573d808015610cf0576040519150601f19603f3d011682016040523d82523d6000602084013e610cf5565b606091505b508051600003610d6d5760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e746572000000000000000000000000000060648201526084016103b7565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050610857565b506001949350505050565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310610de3577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310610e0f576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310610e2d57662386f26fc10000830492506010015b6305f5e1008310610e45576305f5e100830492506008015b6127108310610e5957612710830492506004015b60648310610e6b576064830492506002015b600a83106102845760010192915050565b6001600160e01b03198116811461076257600080fd5b600060208284031215610ea457600080fd5b81356106f781610e7c565b60005b83811015610eca578181015183820152602001610eb2565b50506000910152565b60008151808452610eeb816020860160208601610eaf565b601f01601f19169290920160200192915050565b6020815260006106f76020830184610ed3565b600060208284031215610f2457600080fd5b5035919050565b80356001600160a01b0381168114610f4257600080fd5b919050565b60008060408385031215610f5a57600080fd5b610f6383610f2b565b946020939093013593505050565b600080600060608486031215610f8657600080fd5b610f8f84610f2b565b9250610f9d60208501610f2b565b9150604084013590509250925092565b600060208284031215610fbf57600080fd5b6106f782610f2b565b60008060408385031215610fdb57600080fd5b610fe483610f2b565b915060208301358015158114610ff957600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b6000806000806080858703121561103057600080fd5b61103985610f2b565b935061104760208601610f2b565b925060408501359150606085013567ffffffffffffffff8082111561106b57600080fd5b818701915087601f83011261107f57600080fd5b81358181111561109157611091611004565b604051601f8201601f19908116603f011681019083821181831017156110b9576110b9611004565b816040528281528a60208487010111156110d257600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b6000806040838503121561110957600080fd5b61111283610f2b565b915061112060208401610f2b565b90509250929050565b600181811c9082168061113d57607f821691505b60208210810361115d57634e487b7160e01b600052602260045260246000fd5b50919050565b60008351611175818460208801610eaf565b835190830190611189818360208801610eaf565b01949350505050565b60006001600160a01b038087168352808616602084015250836040830152608060608301526111c46080830184610ed3565b9695505050505050565b6000602082840312156111e057600080fd5b81516106f781610e7c56fea164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xDF JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6352211E GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xA22CB465 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x1C3 JUMPI DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0x1D6 JUMPI DUP1 PUSH4 0xC87B56DD EQ PUSH2 0x1E9 JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x1FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6352211E EQ PUSH2 0x187 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x19A JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x1BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x95EA7B3 GT PUSH2 0xBD JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x14C JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x161 JUMPI DUP1 PUSH4 0x42842E0E EQ PUSH2 0x174 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xE4 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x10C JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x121 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF7 PUSH2 0xF2 CALLDATASIZE PUSH1 0x4 PUSH2 0xE92 JUMP JUMPDEST PUSH2 0x238 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x114 PUSH2 0x28A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x103 SWAP2 SWAP1 PUSH2 0xEFF JUMP JUMPDEST PUSH2 0x134 PUSH2 0x12F CALLDATASIZE PUSH1 0x4 PUSH2 0xF12 JUMP JUMPDEST PUSH2 0x31C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x103 JUMP JUMPDEST PUSH2 0x15F PUSH2 0x15A CALLDATASIZE PUSH1 0x4 PUSH2 0xF47 JUMP JUMPDEST PUSH2 0x343 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x15F PUSH2 0x16F CALLDATASIZE PUSH1 0x4 PUSH2 0xF71 JUMP JUMPDEST PUSH2 0x45D JUMP JUMPDEST PUSH2 0x15F PUSH2 0x182 CALLDATASIZE PUSH1 0x4 PUSH2 0xF71 JUMP JUMPDEST PUSH2 0x4D4 JUMP JUMPDEST PUSH2 0x134 PUSH2 0x195 CALLDATASIZE PUSH1 0x4 PUSH2 0xF12 JUMP JUMPDEST PUSH2 0x4EF JUMP JUMPDEST PUSH2 0x1AD PUSH2 0x1A8 CALLDATASIZE PUSH1 0x4 PUSH2 0xFAD JUMP JUMPDEST PUSH2 0x554 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x103 JUMP JUMPDEST PUSH2 0x114 PUSH2 0x5EE JUMP JUMPDEST PUSH2 0x15F PUSH2 0x1D1 CALLDATASIZE PUSH1 0x4 PUSH2 0xFC8 JUMP JUMPDEST PUSH2 0x5FD JUMP JUMPDEST PUSH2 0x15F PUSH2 0x1E4 CALLDATASIZE PUSH1 0x4 PUSH2 0x101A JUMP JUMPDEST PUSH2 0x60C JUMP JUMPDEST PUSH2 0x114 PUSH2 0x1F7 CALLDATASIZE PUSH1 0x4 PUSH2 0xF12 JUMP JUMPDEST PUSH2 0x68A JUMP JUMPDEST PUSH2 0xF7 PUSH2 0x20A CALLDATASIZE PUSH1 0x4 PUSH2 0x10F6 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x80AC58CD PUSH1 0xE0 SHL EQ DUP1 PUSH2 0x269 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x5B5E139F PUSH1 0xE0 SHL EQ JUMPDEST DUP1 PUSH2 0x284 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 SLOAD PUSH2 0x299 SWAP1 PUSH2 0x1129 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x2C5 SWAP1 PUSH2 0x1129 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x312 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x2E7 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x312 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x2F5 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x327 DUP3 PUSH2 0x6FE JUMP JUMPDEST POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x34E DUP3 PUSH2 0x4EF JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x3C0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F76616C20746F2063757272656E74206F776E65 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x39 PUSH1 0xF9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND EQ DUP1 PUSH2 0x3DC JUMPI POP PUSH2 0x3DC DUP2 CALLER PUSH2 0x20A JUMP JUMPDEST PUSH2 0x44E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F76652063616C6C6572206973206E6F7420746F PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6B656E206F776E6572206F7220617070726F76656420666F7220616C6C000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B7 JUMP JUMPDEST PUSH2 0x458 DUP4 DUP4 PUSH2 0x765 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x467 CALLER DUP3 PUSH2 0x7E0 JUMP JUMPDEST PUSH2 0x4C9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A2063616C6C6572206973206E6F7420746F6B656E206F776E65 PUSH1 0x44 DUP3 ADD MSTORE PUSH13 0x1C881BDC88185C1C1C9BDD9959 PUSH1 0x9A SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B7 JUMP JUMPDEST PUSH2 0x458 DUP4 DUP4 DUP4 PUSH2 0x85F JUMP JUMPDEST PUSH2 0x458 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x60C JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP1 PUSH2 0x284 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20696E76616C696420746F6B656E2049440000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3B7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x5D2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A2061646472657373207A65726F206973206E6F742061207661 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6C6964206F776E65720000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B7 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 DUP1 SLOAD PUSH2 0x299 SWAP1 PUSH2 0x1129 JUMP JUMPDEST PUSH2 0x608 CALLER DUP4 DUP4 PUSH2 0xA4C JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x616 CALLER DUP4 PUSH2 0x7E0 JUMP JUMPDEST PUSH2 0x678 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A2063616C6C6572206973206E6F7420746F6B656E206F776E65 PUSH1 0x44 DUP3 ADD MSTORE PUSH13 0x1C881BDC88185C1C1C9BDD9959 PUSH1 0x9A SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B7 JUMP JUMPDEST PUSH2 0x684 DUP5 DUP5 DUP5 DUP5 PUSH2 0xB1A JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x695 DUP3 PUSH2 0x6FE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6AC PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE SWAP1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 MLOAD GT PUSH2 0x6CC JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x6F7 JUMP JUMPDEST DUP1 PUSH2 0x6D6 DUP5 PUSH2 0xBA3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x6E7 SWAP3 SWAP2 SWAP1 PUSH2 0x1163 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x762 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20696E76616C696420746F6B656E2049440000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3B7 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP2 SWAP1 PUSH2 0x7A7 DUP3 PUSH2 0x4EF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x7EC DUP4 PUSH2 0x4EF JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x833 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP9 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST DUP1 PUSH2 0x857 JUMPI POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x84C DUP5 PUSH2 0x31C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x872 DUP3 PUSH2 0x4EF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x8D6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E736665722066726F6D20696E636F727265637420 PUSH1 0x44 DUP3 ADD MSTORE PUSH5 0x37BBB732B9 PUSH1 0xD9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x938 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F20746865207A65726F20616464 PUSH1 0x44 DUP3 ADD MSTORE PUSH4 0x72657373 PUSH1 0xE0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B7 JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x94B DUP3 PUSH2 0x4EF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x9AF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E736665722066726F6D20696E636F727265637420 PUSH1 0x44 DUP3 ADD MSTORE PUSH5 0x37BBB732B9 PUSH1 0xD9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B7 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT SWAP1 DUP2 AND SWAP1 SWAP2 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND DUP1 DUP7 MSTORE PUSH1 0x3 DUP6 MSTORE DUP4 DUP7 KECCAK256 DUP1 SLOAD PUSH1 0x0 NOT ADD SWAP1 SSTORE SWAP1 DUP8 AND DUP1 DUP7 MSTORE DUP4 DUP7 KECCAK256 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE DUP7 DUP7 MSTORE PUSH1 0x2 SWAP1 SWAP5 MSTORE DUP3 DUP6 KECCAK256 DUP1 SLOAD SWAP1 SWAP3 AND DUP5 OR SWAP1 SWAP2 SSTORE SWAP1 MLOAD DUP5 SWAP4 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 LOG4 POP POP POP JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0xAAD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F766520746F2063616C6C657200000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3B7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND DUP7 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP2 MLOAD SWAP2 DUP3 MSTORE PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0xB25 DUP5 DUP5 DUP5 PUSH2 0x85F JUMP JUMPDEST PUSH2 0xB31 DUP5 DUP5 DUP5 DUP5 PUSH2 0xC43 JUMP JUMPDEST PUSH2 0x684 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x32 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F206E6F6E204552433732315265 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x63656976657220696D706C656D656E7465720000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B7 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0xBB0 DUP4 PUSH2 0xD9A JUMP JUMPDEST PUSH1 0x1 ADD SWAP1 POP PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xBD0 JUMPI PUSH2 0xBD0 PUSH2 0x1004 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xBFA JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP DUP2 DUP2 ADD PUSH1 0x20 ADD JUMPDEST PUSH1 0x0 NOT ADD PUSH32 0x3031323334353637383961626364656600000000000000000000000000000000 PUSH1 0xA DUP7 MOD BYTE DUP2 MSTORE8 PUSH1 0xA DUP6 DIV SWAP5 POP DUP5 PUSH2 0xC04 JUMPI POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO PUSH2 0xD8F JUMPI PUSH1 0x40 MLOAD PUSH4 0xA85BD01 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0x150B7A02 SWAP1 PUSH2 0xC87 SWAP1 CALLER SWAP1 DUP10 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x1192 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0xCC2 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0xCBF SWAP2 DUP2 ADD SWAP1 PUSH2 0x11CE JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0xD75 JUMPI RETURNDATASIZE DUP1 DUP1 ISZERO PUSH2 0xCF0 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xCF5 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP DUP1 MLOAD PUSH1 0x0 SUB PUSH2 0xD6D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x32 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F206E6F6E204552433732315265 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x63656976657220696D706C656D656E7465720000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B7 JUMP JUMPDEST DUP1 MLOAD DUP2 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH4 0xA85BD01 PUSH1 0xE1 SHL EQ SWAP1 POP PUSH2 0x857 JUMP JUMPDEST POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH27 0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F010000000000000000 DUP4 LT PUSH2 0xDE3 JUMPI PUSH27 0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F010000000000000000 DUP4 DIV SWAP3 POP PUSH1 0x40 ADD JUMPDEST PUSH14 0x4EE2D6D415B85ACEF8100000000 DUP4 LT PUSH2 0xE0F JUMPI PUSH14 0x4EE2D6D415B85ACEF8100000000 DUP4 DIV SWAP3 POP PUSH1 0x20 ADD JUMPDEST PUSH7 0x2386F26FC10000 DUP4 LT PUSH2 0xE2D JUMPI PUSH7 0x2386F26FC10000 DUP4 DIV SWAP3 POP PUSH1 0x10 ADD JUMPDEST PUSH4 0x5F5E100 DUP4 LT PUSH2 0xE45 JUMPI PUSH4 0x5F5E100 DUP4 DIV SWAP3 POP PUSH1 0x8 ADD JUMPDEST PUSH2 0x2710 DUP4 LT PUSH2 0xE59 JUMPI PUSH2 0x2710 DUP4 DIV SWAP3 POP PUSH1 0x4 ADD JUMPDEST PUSH1 0x64 DUP4 LT PUSH2 0xE6B JUMPI PUSH1 0x64 DUP4 DIV SWAP3 POP PUSH1 0x2 ADD JUMPDEST PUSH1 0xA DUP4 LT PUSH2 0x284 JUMPI PUSH1 0x1 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x762 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xEA4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x6F7 DUP2 PUSH2 0xE7C JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xECA JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xEB2 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0xEEB DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0xEAF JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x6F7 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0xED3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xF24 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xF42 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xF5A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF63 DUP4 PUSH2 0xF2B JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xF86 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF8F DUP5 PUSH2 0xF2B JUMP JUMPDEST SWAP3 POP PUSH2 0xF9D PUSH1 0x20 DUP6 ADD PUSH2 0xF2B JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xFBF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x6F7 DUP3 PUSH2 0xF2B JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xFDB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xFE4 DUP4 PUSH2 0xF2B JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xFF9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x1030 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1039 DUP6 PUSH2 0xF2B JUMP JUMPDEST SWAP4 POP PUSH2 0x1047 PUSH1 0x20 DUP7 ADD PUSH2 0xF2B JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x106B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x107F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x1091 JUMPI PUSH2 0x1091 PUSH2 0x1004 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x10B9 JUMPI PUSH2 0x10B9 PUSH2 0x1004 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP11 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x10D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1109 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1112 DUP4 PUSH2 0xF2B JUMP JUMPDEST SWAP2 POP PUSH2 0x1120 PUSH1 0x20 DUP5 ADD PUSH2 0xF2B JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x113D JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x115D JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP4 MLOAD PUSH2 0x1175 DUP2 DUP5 PUSH1 0x20 DUP9 ADD PUSH2 0xEAF JUMP JUMPDEST DUP4 MLOAD SWAP1 DUP4 ADD SWAP1 PUSH2 0x1189 DUP2 DUP4 PUSH1 0x20 DUP9 ADD PUSH2 0xEAF JUMP JUMPDEST ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND DUP4 MSTORE DUP1 DUP7 AND PUSH1 0x20 DUP5 ADD MSTORE POP DUP4 PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x80 PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x11C4 PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0xED3 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x11E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x6F7 DUP2 PUSH2 0xE7C JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"628:16377:29:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1570:300;;;;;;:::i;:::-;;:::i;:::-;;;565:14:92;;558:22;540:41;;528:2;513:18;1570:300:29;;;;;;;;2471:98;;;:::i;:::-;;;;;;;:::i;3935:167::-;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;1697:55:92;;;1679:74;;1667:2;1652:18;3935:167:29;1533:226:92;3468:406:29;;;;;;:::i;:::-;;:::i;:::-;;4612:296;;;;;;:::i;:::-;;:::i;4974:149::-;;;;;;:::i;:::-;;:::i;2190:219::-;;;;;;:::i;:::-;;:::i;1929:204::-;;;;;;:::i;:::-;;:::i;:::-;;;2894:25:92;;;2882:2;2867:18;1929:204:29;2748:177:92;2633:102:29;;;:::i;4169:153::-;;;;;;:::i;:::-;;:::i;5189:276::-;;;;;;:::i;:::-;;:::i;2801:::-;;;;;;:::i;:::-;;:::i;4388:162::-;;;;;;:::i;:::-;-1:-1:-1;;;;;4508:25:29;;;4485:4;4508:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;4388:162;1570:300;1672:4;-1:-1:-1;;;;;;1707:40:29;;-1:-1:-1;;;1707:40:29;;:104;;-1:-1:-1;;;;;;;1763:48:29;;-1:-1:-1;;;1763:48:29;1707:104;:156;;;-1:-1:-1;;;;;;;;;;937:40:38;;;1827:36:29;1688:175;1570:300;-1:-1:-1;;1570:300:29:o;2471:98::-;2525:13;2557:5;2550:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2471:98;:::o;3935:167::-;4011:7;4030:23;4045:7;4030:14;:23::i;:::-;-1:-1:-1;4071:24:29;;;;:15;:24;;;;;;-1:-1:-1;;;;;4071:24:29;;3935:167::o;3468:406::-;3548:13;3564:23;3579:7;3564:14;:23::i;:::-;3548:39;;3611:5;-1:-1:-1;;;;;3605:11:29;:2;-1:-1:-1;;;;;3605:11:29;;3597:57;;;;-1:-1:-1;;;3597:57:29;;5409:2:92;3597:57:29;;;5391:21:92;5448:2;5428:18;;;5421:30;5487:34;5467:18;;;5460:62;-1:-1:-1;;;5538:18:92;;;5531:31;5579:19;;3597:57:29;;;;;;;;;734:10:34;-1:-1:-1;;;;;3686:21:29;;;;:62;;-1:-1:-1;3711:37:29;3728:5;734:10:34;4388:162:29;:::i;3711:37::-;3665:170;;;;-1:-1:-1;;;3665:170:29;;5811:2:92;3665:170:29;;;5793:21:92;5850:2;5830:18;;;5823:30;5889:34;5869:18;;;5862:62;5960:31;5940:18;;;5933:59;6009:19;;3665:170:29;5609:425:92;3665:170:29;3846:21;3855:2;3859:7;3846:8;:21::i;:::-;3538:336;3468:406;;:::o;4612:296::-;4771:41;734:10:34;4804:7:29;4771:18;:41::i;:::-;4763:99;;;;-1:-1:-1;;;4763:99:29;;6241:2:92;4763:99:29;;;6223:21:92;6280:2;6260:18;;;6253:30;6319:34;6299:18;;;6292:62;-1:-1:-1;;;6370:18:92;;;6363:43;6423:19;;4763:99:29;6039:409:92;4763:99:29;4873:28;4883:4;4889:2;4893:7;4873:9;:28::i;4974:149::-;5077:39;5094:4;5100:2;5104:7;5077:39;;;;;;;;;;;;:16;:39::i;2190:219::-;2262:7;6794:16;;;:7;:16;;;;;;-1:-1:-1;;;;;6794:16:29;;2324:56;;;;-1:-1:-1;;;2324:56:29;;6655:2:92;2324:56:29;;;6637:21:92;6694:2;6674:18;;;6667:30;6733:26;6713:18;;;6706:54;6777:18;;2324:56:29;6453:348:92;1929:204:29;2001:7;-1:-1:-1;;;;;2028:19:29;;2020:73;;;;-1:-1:-1;;;2020:73:29;;7008:2:92;2020:73:29;;;6990:21:92;7047:2;7027:18;;;7020:30;7086:34;7066:18;;;7059:62;7157:11;7137:18;;;7130:39;7186:19;;2020:73:29;6806:405:92;2020:73:29;-1:-1:-1;;;;;;2110:16:29;;;;;:9;:16;;;;;;;1929:204::o;2633:102::-;2689:13;2721:7;2714:14;;;;;:::i;4169:153::-;4263:52;734:10:34;4296:8:29;4306;4263:18;:52::i;:::-;4169:153;;:::o;5189:276::-;5319:41;734:10:34;5352:7:29;5319:18;:41::i;:::-;5311:99;;;;-1:-1:-1;;;5311:99:29;;6241:2:92;5311:99:29;;;6223:21:92;6280:2;6260:18;;;6253:30;6319:34;6299:18;;;6292:62;-1:-1:-1;;;6370:18:92;;;6363:43;6423:19;;5311:99:29;6039:409:92;5311:99:29;5420:38;5434:4;5440:2;5444:7;5453:4;5420:13;:38::i;:::-;5189:276;;;;:::o;2801:::-;2874:13;2899:23;2914:7;2899:14;:23::i;:::-;2933:21;2957:10;3395:9;;;;;;;;;-1:-1:-1;3395:9:29;;;3319:92;2957:10;2933:34;;3008:1;2990:7;2984:21;:25;:86;;;;;;;;;;;;;;;;;3036:7;3045:18;:7;:16;:18::i;:::-;3019:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2984:86;2977:93;2801:276;-1:-1:-1;;;2801:276:29:o;13240:133::-;7185:4;6794:16;;;:7;:16;;;;;;-1:-1:-1;;;;;6794:16:29;13313:53;;;;-1:-1:-1;;;13313:53:29;;6655:2:92;13313:53:29;;;6637:21:92;6694:2;6674:18;;;6667:30;6733:26;6713:18;;;6706:54;6777:18;;13313:53:29;6453:348:92;13313:53:29;13240:133;:::o;12572:171::-;12646:24;;;;:15;:24;;;;;:29;;-1:-1:-1;;12646:29:29;-1:-1:-1;;;;;12646:29:29;;;;;;;;:24;;12699:23;12646:24;12699:14;:23::i;:::-;-1:-1:-1;;;;;12690:46:29;;;;;;;;;;;12572:171;;:::o;7404:261::-;7497:4;7513:13;7529:23;7544:7;7529:14;:23::i;:::-;7513:39;;7581:5;-1:-1:-1;;;;;7570:16:29;:7;-1:-1:-1;;;;;7570:16:29;;:52;;;-1:-1:-1;;;;;;4508:25:29;;;4485:4;4508:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;7590:32;7570:87;;;;7650:7;-1:-1:-1;;;;;7626:31:29;:20;7638:7;7626:11;:20::i;:::-;-1:-1:-1;;;;;7626:31:29;;7570:87;7562:96;7404:261;-1:-1:-1;;;;7404:261:29:o;11257:1203::-;11381:4;-1:-1:-1;;;;;11354:31:29;:23;11369:7;11354:14;:23::i;:::-;-1:-1:-1;;;;;11354:31:29;;11346:81;;;;-1:-1:-1;;;11346:81:29;;7919:2:92;11346:81:29;;;7901:21:92;7958:2;7938:18;;;7931:30;7997:34;7977:18;;;7970:62;-1:-1:-1;;;8048:18:92;;;8041:35;8093:19;;11346:81:29;7717:401:92;11346:81:29;-1:-1:-1;;;;;11445:16:29;;11437:65;;;;-1:-1:-1;;;11437:65:29;;8325:2:92;11437:65:29;;;8307:21:92;8364:2;8344:18;;;8337:30;8403:34;8383:18;;;8376:62;-1:-1:-1;;;8454:18:92;;;8447:34;8498:19;;11437:65:29;8123:400:92;11437:65:29;11682:4;-1:-1:-1;;;;;11655:31:29;:23;11670:7;11655:14;:23::i;:::-;-1:-1:-1;;;;;11655:31:29;;11647:81;;;;-1:-1:-1;;;11647:81:29;;7919:2:92;11647:81:29;;;7901:21:92;7958:2;7938:18;;;7931:30;7997:34;7977:18;;;7970:62;-1:-1:-1;;;8048:18:92;;;8041:35;8093:19;;11647:81:29;7717:401:92;11647:81:29;11797:24;;;;:15;:24;;;;;;;;11790:31;;-1:-1:-1;;11790:31:29;;;;;;-1:-1:-1;;;;;12265:15:29;;;;;;:9;:15;;;;;:20;;-1:-1:-1;;12265:20:29;;;12299:13;;;;;;;;;:18;;11790:31;12299:18;;;12337:16;;;:7;:16;;;;;;:21;;;;;;;;;;12374:27;;11813:7;;12374:27;;;3538:336;3468:406;;:::o;12879:277::-;12999:8;-1:-1:-1;;;;;12990:17:29;:5;-1:-1:-1;;;;;12990:17:29;;12982:55;;;;-1:-1:-1;;;12982:55:29;;8730:2:92;12982:55:29;;;8712:21:92;8769:2;8749:18;;;8742:30;8808:27;8788:18;;;8781:55;8853:18;;12982:55:29;8528:349:92;12982:55:29;-1:-1:-1;;;;;13047:25:29;;;;;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;:46;;-1:-1:-1;;13047:46:29;;;;;;;;;;13108:41;;540::92;;;13108::29;;513:18:92;13108:41:29;;;;;;;12879:277;;;:::o;6326:267::-;6438:28;6448:4;6454:2;6458:7;6438:9;:28::i;:::-;6484:47;6507:4;6513:2;6517:7;6526:4;6484:22;:47::i;:::-;6476:110;;;;-1:-1:-1;;;6476:110:29;;9084:2:92;6476:110:29;;;9066:21:92;9123:2;9103:18;;;9096:30;9162:34;9142:18;;;9135:62;9233:20;9213:18;;;9206:48;9271:19;;6476:110:29;8882:414:92;447:696:37;503:13;552:14;569:17;580:5;569:10;:17::i;:::-;589:1;569:21;552:38;;604:20;638:6;627:18;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;627:18:37;-1:-1:-1;604:41:37;-1:-1:-1;765:28:37;;;781:2;765:28;820:280;-1:-1:-1;;851:5:37;990:8;985:2;974:14;;969:30;851:5;956:44;1044:2;1035:11;;;-1:-1:-1;1064:21:37;820:280;1064:21;-1:-1:-1;1120:6:37;447:696;-1:-1:-1;;;447:696:37:o;13925:831:29:-;14074:4;-1:-1:-1;;;;;14094:13:29;;1702:19:33;:23;14090:660:29;;14129:71;;-1:-1:-1;;;14129:71:29;;-1:-1:-1;;;;;14129:36:29;;;;;:71;;734:10:34;;14180:4:29;;14186:7;;14195:4;;14129:71;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14129:71:29;;;;;;;;-1:-1:-1;;14129:71:29;;;;;;;;;;;;:::i;:::-;;;14125:573;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14367:6;:13;14384:1;14367:18;14363:321;;14409:60;;-1:-1:-1;;;14409:60:29;;9084:2:92;14409:60:29;;;9066:21:92;9123:2;9103:18;;;9096:30;9162:34;9142:18;;;9135:62;9233:20;9213:18;;;9206:48;9271:19;;14409:60:29;8882:414:92;14363:321:29;14636:6;14630:13;14621:6;14617:2;14613:15;14606:38;14125:573;-1:-1:-1;;;;;;14250:51:29;-1:-1:-1;;;14250:51:29;;-1:-1:-1;14243:58:29;;14090:660;-1:-1:-1;14735:4:29;13925:831;;;;;;:::o;10139:916:40:-;10192:7;;10276:8;10267:17;;10263:103;;10313:8;10304:17;;;-1:-1:-1;10349:2:40;10339:12;10263:103;10392:8;10383:5;:17;10379:103;;10429:8;10420:17;;;-1:-1:-1;10465:2:40;10455:12;10379:103;10508:8;10499:5;:17;10495:103;;10545:8;10536:17;;;-1:-1:-1;10581:2:40;10571:12;10495:103;10624:7;10615:5;:16;10611:100;;10660:7;10651:16;;;-1:-1:-1;10695:1:40;10685:11;10611:100;10737:7;10728:5;:16;10724:100;;10773:7;10764:16;;;-1:-1:-1;10808:1:40;10798:11;10724:100;10850:7;10841:5;:16;10837:100;;10886:7;10877:16;;;-1:-1:-1;10921:1:40;10911:11;10837:100;10963:7;10954:5;:16;10950:66;;11000:1;10990:11;11042:6;10139:916;-1:-1:-1;;10139:916:40:o;14:131:92:-;-1:-1:-1;;;;;;88:32:92;;78:43;;68:71;;135:1;132;125:12;150:245;208:6;261:2;249:9;240:7;236:23;232:32;229:52;;;277:1;274;267:12;229:52;316:9;303:23;335:30;359:5;335:30;:::i;592:250::-;677:1;687:113;701:6;698:1;695:13;687:113;;;777:11;;;771:18;758:11;;;751:39;723:2;716:10;687:113;;;-1:-1:-1;;834:1:92;816:16;;809:27;592:250::o;847:271::-;889:3;927:5;921:12;954:6;949:3;942:19;970:76;1039:6;1032:4;1027:3;1023:14;1016:4;1009:5;1005:16;970:76;:::i;:::-;1100:2;1079:15;-1:-1:-1;;1075:29:92;1066:39;;;;1107:4;1062:50;;847:271;-1:-1:-1;;847:271:92:o;1123:220::-;1272:2;1261:9;1254:21;1235:4;1292:45;1333:2;1322:9;1318:18;1310:6;1292:45;:::i;1348:180::-;1407:6;1460:2;1448:9;1439:7;1435:23;1431:32;1428:52;;;1476:1;1473;1466:12;1428:52;-1:-1:-1;1499:23:92;;1348:180;-1:-1:-1;1348:180:92:o;1764:196::-;1832:20;;-1:-1:-1;;;;;1881:54:92;;1871:65;;1861:93;;1950:1;1947;1940:12;1861:93;1764:196;;;:::o;1965:254::-;2033:6;2041;2094:2;2082:9;2073:7;2069:23;2065:32;2062:52;;;2110:1;2107;2100:12;2062:52;2133:29;2152:9;2133:29;:::i;:::-;2123:39;2209:2;2194:18;;;;2181:32;;-1:-1:-1;;;1965:254:92:o;2224:328::-;2301:6;2309;2317;2370:2;2358:9;2349:7;2345:23;2341:32;2338:52;;;2386:1;2383;2376:12;2338:52;2409:29;2428:9;2409:29;:::i;:::-;2399:39;;2457:38;2491:2;2480:9;2476:18;2457:38;:::i;:::-;2447:48;;2542:2;2531:9;2527:18;2514:32;2504:42;;2224:328;;;;;:::o;2557:186::-;2616:6;2669:2;2657:9;2648:7;2644:23;2640:32;2637:52;;;2685:1;2682;2675:12;2637:52;2708:29;2727:9;2708:29;:::i;2930:347::-;2995:6;3003;3056:2;3044:9;3035:7;3031:23;3027:32;3024:52;;;3072:1;3069;3062:12;3024:52;3095:29;3114:9;3095:29;:::i;:::-;3085:39;;3174:2;3163:9;3159:18;3146:32;3221:5;3214:13;3207:21;3200:5;3197:32;3187:60;;3243:1;3240;3233:12;3187:60;3266:5;3256:15;;;2930:347;;;;;:::o;3282:127::-;3343:10;3338:3;3334:20;3331:1;3324:31;3374:4;3371:1;3364:15;3398:4;3395:1;3388:15;3414:1138;3509:6;3517;3525;3533;3586:3;3574:9;3565:7;3561:23;3557:33;3554:53;;;3603:1;3600;3593:12;3554:53;3626:29;3645:9;3626:29;:::i;:::-;3616:39;;3674:38;3708:2;3697:9;3693:18;3674:38;:::i;:::-;3664:48;;3759:2;3748:9;3744:18;3731:32;3721:42;;3814:2;3803:9;3799:18;3786:32;3837:18;3878:2;3870:6;3867:14;3864:34;;;3894:1;3891;3884:12;3864:34;3932:6;3921:9;3917:22;3907:32;;3977:7;3970:4;3966:2;3962:13;3958:27;3948:55;;3999:1;3996;3989:12;3948:55;4035:2;4022:16;4057:2;4053;4050:10;4047:36;;;4063:18;;:::i;:::-;4138:2;4132:9;4106:2;4192:13;;-1:-1:-1;;4188:22:92;;;4212:2;4184:31;4180:40;4168:53;;;4236:18;;;4256:22;;;4233:46;4230:72;;;4282:18;;:::i;:::-;4322:10;4318:2;4311:22;4357:2;4349:6;4342:18;4397:7;4392:2;4387;4383;4379:11;4375:20;4372:33;4369:53;;;4418:1;4415;4408:12;4369:53;4474:2;4469;4465;4461:11;4456:2;4448:6;4444:15;4431:46;4519:1;4514:2;4509;4501:6;4497:15;4493:24;4486:35;4540:6;4530:16;;;;;;;3414:1138;;;;;;;:::o;4557:260::-;4625:6;4633;4686:2;4674:9;4665:7;4661:23;4657:32;4654:52;;;4702:1;4699;4692:12;4654:52;4725:29;4744:9;4725:29;:::i;:::-;4715:39;;4773:38;4807:2;4796:9;4792:18;4773:38;:::i;:::-;4763:48;;4557:260;;;;;:::o;4822:380::-;4901:1;4897:12;;;;4944;;;4965:61;;5019:4;5011:6;5007:17;4997:27;;4965:61;5072:2;5064:6;5061:14;5041:18;5038:38;5035:161;;5118:10;5113:3;5109:20;5106:1;5099:31;5153:4;5150:1;5143:15;5181:4;5178:1;5171:15;5035:161;;4822:380;;;:::o;7216:496::-;7395:3;7433:6;7427:13;7449:66;7508:6;7503:3;7496:4;7488:6;7484:17;7449:66;:::i;:::-;7578:13;;7537:16;;;;7600:70;7578:13;7537:16;7647:4;7635:17;;7600:70;:::i;:::-;7686:20;;7216:496;-1:-1:-1;;;;7216:496:92:o;9433:512::-;9627:4;-1:-1:-1;;;;;9737:2:92;9729:6;9725:15;9714:9;9707:34;9789:2;9781:6;9777:15;9772:2;9761:9;9757:18;9750:43;;9829:6;9824:2;9813:9;9809:18;9802:34;9872:3;9867:2;9856:9;9852:18;9845:31;9893:46;9934:3;9923:9;9919:19;9911:6;9893:46;:::i;:::-;9885:54;9433:512;-1:-1:-1;;;;;;9433:512:92:o;9950:249::-;10019:6;10072:2;10060:9;10051:7;10047:23;10043:32;10040:52;;;10088:1;10085;10078:12;10040:52;10120:9;10114:16;10139:30;10163:5;10139:30;:::i"},"gasEstimates":{"creation":{"codeDepositCost":"920000","executionCost":"infinite","totalCost":"infinite"},"external":{"approve(address,uint256)":"infinite","balanceOf(address)":"2634","getApproved(uint256)":"4792","isApprovedForAll(address,address)":"infinite","name()":"infinite","ownerOf(uint256)":"2555","safeTransferFrom(address,address,uint256)":"infinite","safeTransferFrom(address,address,uint256,bytes)":"infinite","setApprovalForAll(address,bool)":"26705","supportsInterface(bytes4)":"534","symbol()":"infinite","tokenURI(uint256)":"infinite","transferFrom(address,address,uint256)":"infinite"},"internal":{"__unsafe_increaseBalance(address,uint256)":"infinite","_afterTokenTransfer(address,address,uint256,uint256)":"infinite","_approve(address,uint256)":"infinite","_baseURI()":"infinite","_beforeTokenTransfer(address,address,uint256,uint256)":"infinite","_burn(uint256)":"infinite","_checkOnERC721Received(address,address,uint256,bytes memory)":"infinite","_exists(uint256)":"infinite","_isApprovedOrOwner(address,uint256)":"infinite","_mint(address,uint256)":"infinite","_ownerOf(uint256)":"infinite","_requireMinted(uint256)":"infinite","_safeMint(address,uint256)":"infinite","_safeMint(address,uint256,bytes memory)":"infinite","_safeTransfer(address,address,uint256,bytes memory)":"infinite","_setApprovalForAll(address,address,bool)":"infinite","_transfer(address,address,uint256)":"infinite"}},"methodIdentifiers":{"approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","getApproved(uint256)":"081812fc","isApprovedForAll(address,address)":"e985e9c5","name()":"06fdde03","ownerOf(uint256)":"6352211e","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","tokenURI(uint256)":"c87b56dd","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including the Metadata extension, but not including the Enumerable extension, which is available separately as {ERC721Enumerable}.\",\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"See {IERC721-approve}.\"},\"balanceOf(address)\":{\"details\":\"See {IERC721-balanceOf}.\"},\"constructor\":{\"details\":\"Initializes the contract by setting a `name` and a `symbol` to the token collection.\"},\"getApproved(uint256)\":{\"details\":\"See {IERC721-getApproved}.\"},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC721-isApprovedForAll}.\"},\"name()\":{\"details\":\"See {IERC721Metadata-name}.\"},\"ownerOf(uint256)\":{\"details\":\"See {IERC721-ownerOf}.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC721-setApprovalForAll}.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"symbol()\":{\"details\":\"See {IERC721Metadata-symbol}.\"},\"tokenURI(uint256)\":{\"details\":\"See {IERC721Metadata-tokenURI}.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-transferFrom}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC721/ERC721.sol\":\"ERC721\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC721/ERC721.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC721/ERC721.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC721.sol\\\";\\nimport \\\"./IERC721Receiver.sol\\\";\\nimport \\\"./extensions/IERC721Metadata.sol\\\";\\nimport \\\"../../utils/Address.sol\\\";\\nimport \\\"../../utils/Context.sol\\\";\\nimport \\\"../../utils/Strings.sol\\\";\\nimport \\\"../../utils/introspection/ERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including\\n * the Metadata extension, but not including the Enumerable extension, which is available separately as\\n * {ERC721Enumerable}.\\n */\\ncontract ERC721 is Context, ERC165, IERC721, IERC721Metadata {\\n using Address for address;\\n using Strings for uint256;\\n\\n // Token name\\n string private _name;\\n\\n // Token symbol\\n string private _symbol;\\n\\n // Mapping from token ID to owner address\\n mapping(uint256 => address) private _owners;\\n\\n // Mapping owner address to token count\\n mapping(address => uint256) private _balances;\\n\\n // Mapping from token ID to approved address\\n mapping(uint256 => address) private _tokenApprovals;\\n\\n // Mapping from owner to operator approvals\\n mapping(address => mapping(address => bool)) private _operatorApprovals;\\n\\n /**\\n * @dev Initializes the contract by setting a `name` and a `symbol` to the token collection.\\n */\\n constructor(string memory name_, string memory symbol_) {\\n _name = name_;\\n _symbol = symbol_;\\n }\\n\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) {\\n return\\n interfaceId == type(IERC721).interfaceId ||\\n interfaceId == type(IERC721Metadata).interfaceId ||\\n super.supportsInterface(interfaceId);\\n }\\n\\n /**\\n * @dev See {IERC721-balanceOf}.\\n */\\n function balanceOf(address owner) public view virtual override returns (uint256) {\\n require(owner != address(0), \\\"ERC721: address zero is not a valid owner\\\");\\n return _balances[owner];\\n }\\n\\n /**\\n * @dev See {IERC721-ownerOf}.\\n */\\n function ownerOf(uint256 tokenId) public view virtual override returns (address) {\\n address owner = _ownerOf(tokenId);\\n require(owner != address(0), \\\"ERC721: invalid token ID\\\");\\n return owner;\\n }\\n\\n /**\\n * @dev See {IERC721Metadata-name}.\\n */\\n function name() public view virtual override returns (string memory) {\\n return _name;\\n }\\n\\n /**\\n * @dev See {IERC721Metadata-symbol}.\\n */\\n function symbol() public view virtual override returns (string memory) {\\n return _symbol;\\n }\\n\\n /**\\n * @dev See {IERC721Metadata-tokenURI}.\\n */\\n function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {\\n _requireMinted(tokenId);\\n\\n string memory baseURI = _baseURI();\\n return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : \\\"\\\";\\n }\\n\\n /**\\n * @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\\n * token will be the concatenation of the `baseURI` and the `tokenId`. Empty\\n * by default, can be overridden in child contracts.\\n */\\n function _baseURI() internal view virtual returns (string memory) {\\n return \\\"\\\";\\n }\\n\\n /**\\n * @dev See {IERC721-approve}.\\n */\\n function approve(address to, uint256 tokenId) public virtual override {\\n address owner = ERC721.ownerOf(tokenId);\\n require(to != owner, \\\"ERC721: approval to current owner\\\");\\n\\n require(\\n _msgSender() == owner || isApprovedForAll(owner, _msgSender()),\\n \\\"ERC721: approve caller is not token owner or approved for all\\\"\\n );\\n\\n _approve(to, tokenId);\\n }\\n\\n /**\\n * @dev See {IERC721-getApproved}.\\n */\\n function getApproved(uint256 tokenId) public view virtual override returns (address) {\\n _requireMinted(tokenId);\\n\\n return _tokenApprovals[tokenId];\\n }\\n\\n /**\\n * @dev See {IERC721-setApprovalForAll}.\\n */\\n function setApprovalForAll(address operator, bool approved) public virtual override {\\n _setApprovalForAll(_msgSender(), operator, approved);\\n }\\n\\n /**\\n * @dev See {IERC721-isApprovedForAll}.\\n */\\n function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) {\\n return _operatorApprovals[owner][operator];\\n }\\n\\n /**\\n * @dev See {IERC721-transferFrom}.\\n */\\n function transferFrom(address from, address to, uint256 tokenId) public virtual override {\\n //solhint-disable-next-line max-line-length\\n require(_isApprovedOrOwner(_msgSender(), tokenId), \\\"ERC721: caller is not token owner or approved\\\");\\n\\n _transfer(from, to, tokenId);\\n }\\n\\n /**\\n * @dev See {IERC721-safeTransferFrom}.\\n */\\n function safeTransferFrom(address from, address to, uint256 tokenId) public virtual override {\\n safeTransferFrom(from, to, tokenId, \\\"\\\");\\n }\\n\\n /**\\n * @dev See {IERC721-safeTransferFrom}.\\n */\\n function safeTransferFrom(address from, address to, uint256 tokenId, bytes memory data) public virtual override {\\n require(_isApprovedOrOwner(_msgSender(), tokenId), \\\"ERC721: caller is not token owner or approved\\\");\\n _safeTransfer(from, to, tokenId, data);\\n }\\n\\n /**\\n * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\\n * are aware of the ERC721 protocol to prevent tokens from being forever locked.\\n *\\n * `data` is additional data, it has no specified format and it is sent in call to `to`.\\n *\\n * This internal function is equivalent to {safeTransferFrom}, and can be used to e.g.\\n * implement alternative mechanisms to perform token transfer, such as signature-based.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must exist and be owned by `from`.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n *\\n * Emits a {Transfer} event.\\n */\\n function _safeTransfer(address from, address to, uint256 tokenId, bytes memory data) internal virtual {\\n _transfer(from, to, tokenId);\\n require(_checkOnERC721Received(from, to, tokenId, data), \\\"ERC721: transfer to non ERC721Receiver implementer\\\");\\n }\\n\\n /**\\n * @dev Returns the owner of the `tokenId`. Does NOT revert if token doesn't exist\\n */\\n function _ownerOf(uint256 tokenId) internal view virtual returns (address) {\\n return _owners[tokenId];\\n }\\n\\n /**\\n * @dev Returns whether `tokenId` exists.\\n *\\n * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}.\\n *\\n * Tokens start existing when they are minted (`_mint`),\\n * and stop existing when they are burned (`_burn`).\\n */\\n function _exists(uint256 tokenId) internal view virtual returns (bool) {\\n return _ownerOf(tokenId) != address(0);\\n }\\n\\n /**\\n * @dev Returns whether `spender` is allowed to manage `tokenId`.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must exist.\\n */\\n function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) {\\n address owner = ERC721.ownerOf(tokenId);\\n return (spender == owner || isApprovedForAll(owner, spender) || getApproved(tokenId) == spender);\\n }\\n\\n /**\\n * @dev Safely mints `tokenId` and transfers it to `to`.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must not exist.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n *\\n * Emits a {Transfer} event.\\n */\\n function _safeMint(address to, uint256 tokenId) internal virtual {\\n _safeMint(to, tokenId, \\\"\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\\n * forwarded in {IERC721Receiver-onERC721Received} to contract recipients.\\n */\\n function _safeMint(address to, uint256 tokenId, bytes memory data) internal virtual {\\n _mint(to, tokenId);\\n require(\\n _checkOnERC721Received(address(0), to, tokenId, data),\\n \\\"ERC721: transfer to non ERC721Receiver implementer\\\"\\n );\\n }\\n\\n /**\\n * @dev Mints `tokenId` and transfers it to `to`.\\n *\\n * WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\\n *\\n * Requirements:\\n *\\n * - `tokenId` must not exist.\\n * - `to` cannot be the zero address.\\n *\\n * Emits a {Transfer} event.\\n */\\n function _mint(address to, uint256 tokenId) internal virtual {\\n require(to != address(0), \\\"ERC721: mint to the zero address\\\");\\n require(!_exists(tokenId), \\\"ERC721: token already minted\\\");\\n\\n _beforeTokenTransfer(address(0), to, tokenId, 1);\\n\\n // Check that tokenId was not minted by `_beforeTokenTransfer` hook\\n require(!_exists(tokenId), \\\"ERC721: token already minted\\\");\\n\\n unchecked {\\n // Will not overflow unless all 2**256 token ids are minted to the same owner.\\n // Given that tokens are minted one by one, it is impossible in practice that\\n // this ever happens. Might change if we allow batch minting.\\n // The ERC fails to describe this case.\\n _balances[to] += 1;\\n }\\n\\n _owners[tokenId] = to;\\n\\n emit Transfer(address(0), to, tokenId);\\n\\n _afterTokenTransfer(address(0), to, tokenId, 1);\\n }\\n\\n /**\\n * @dev Destroys `tokenId`.\\n * The approval is cleared when the token is burned.\\n * This is an internal function that does not check if the sender is authorized to operate on the token.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must exist.\\n *\\n * Emits a {Transfer} event.\\n */\\n function _burn(uint256 tokenId) internal virtual {\\n address owner = ERC721.ownerOf(tokenId);\\n\\n _beforeTokenTransfer(owner, address(0), tokenId, 1);\\n\\n // Update ownership in case tokenId was transferred by `_beforeTokenTransfer` hook\\n owner = ERC721.ownerOf(tokenId);\\n\\n // Clear approvals\\n delete _tokenApprovals[tokenId];\\n\\n unchecked {\\n // Cannot overflow, as that would require more tokens to be burned/transferred\\n // out than the owner initially received through minting and transferring in.\\n _balances[owner] -= 1;\\n }\\n delete _owners[tokenId];\\n\\n emit Transfer(owner, address(0), tokenId);\\n\\n _afterTokenTransfer(owner, address(0), tokenId, 1);\\n }\\n\\n /**\\n * @dev Transfers `tokenId` from `from` to `to`.\\n * As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\\n *\\n * Requirements:\\n *\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must be owned by `from`.\\n *\\n * Emits a {Transfer} event.\\n */\\n function _transfer(address from, address to, uint256 tokenId) internal virtual {\\n require(ERC721.ownerOf(tokenId) == from, \\\"ERC721: transfer from incorrect owner\\\");\\n require(to != address(0), \\\"ERC721: transfer to the zero address\\\");\\n\\n _beforeTokenTransfer(from, to, tokenId, 1);\\n\\n // Check that tokenId was not transferred by `_beforeTokenTransfer` hook\\n require(ERC721.ownerOf(tokenId) == from, \\\"ERC721: transfer from incorrect owner\\\");\\n\\n // Clear approvals from the previous owner\\n delete _tokenApprovals[tokenId];\\n\\n unchecked {\\n // `_balances[from]` cannot overflow for the same reason as described in `_burn`:\\n // `from`'s balance is the number of token held, which is at least one before the current\\n // transfer.\\n // `_balances[to]` could overflow in the conditions described in `_mint`. That would require\\n // all 2**256 token ids to be minted, which in practice is impossible.\\n _balances[from] -= 1;\\n _balances[to] += 1;\\n }\\n _owners[tokenId] = to;\\n\\n emit Transfer(from, to, tokenId);\\n\\n _afterTokenTransfer(from, to, tokenId, 1);\\n }\\n\\n /**\\n * @dev Approve `to` to operate on `tokenId`\\n *\\n * Emits an {Approval} event.\\n */\\n function _approve(address to, uint256 tokenId) internal virtual {\\n _tokenApprovals[tokenId] = to;\\n emit Approval(ERC721.ownerOf(tokenId), to, tokenId);\\n }\\n\\n /**\\n * @dev Approve `operator` to operate on all of `owner` tokens\\n *\\n * Emits an {ApprovalForAll} event.\\n */\\n function _setApprovalForAll(address owner, address operator, bool approved) internal virtual {\\n require(owner != operator, \\\"ERC721: approve to caller\\\");\\n _operatorApprovals[owner][operator] = approved;\\n emit ApprovalForAll(owner, operator, approved);\\n }\\n\\n /**\\n * @dev Reverts if the `tokenId` has not been minted yet.\\n */\\n function _requireMinted(uint256 tokenId) internal view virtual {\\n require(_exists(tokenId), \\\"ERC721: invalid token ID\\\");\\n }\\n\\n /**\\n * @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address.\\n * The call is not executed if the target address is not a contract.\\n *\\n * @param from address representing the previous owner of the given token ID\\n * @param to target address that will receive the tokens\\n * @param tokenId uint256 ID of the token to be transferred\\n * @param data bytes optional data to send along with the call\\n * @return bool whether the call correctly returned the expected magic value\\n */\\n function _checkOnERC721Received(\\n address from,\\n address to,\\n uint256 tokenId,\\n bytes memory data\\n ) private returns (bool) {\\n if (to.isContract()) {\\n try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, data) returns (bytes4 retval) {\\n return retval == IERC721Receiver.onERC721Received.selector;\\n } catch (bytes memory reason) {\\n if (reason.length == 0) {\\n revert(\\\"ERC721: transfer to non ERC721Receiver implementer\\\");\\n } else {\\n /// @solidity memory-safe-assembly\\n assembly {\\n revert(add(32, reason), mload(reason))\\n }\\n }\\n }\\n } else {\\n return true;\\n }\\n }\\n\\n /**\\n * @dev Hook that is called before any token transfer. This includes minting and burning. If {ERC721Consecutive} is\\n * used, the hook may be called as part of a consecutive (batch) mint, as indicated by `batchSize` greater than 1.\\n *\\n * Calling conditions:\\n *\\n * - When `from` and `to` are both non-zero, ``from``'s tokens will be transferred to `to`.\\n * - When `from` is zero, the tokens will be minted for `to`.\\n * - When `to` is zero, ``from``'s tokens will be burned.\\n * - `from` and `to` are never both zero.\\n * - `batchSize` is non-zero.\\n *\\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n */\\n function _beforeTokenTransfer(address from, address to, uint256 firstTokenId, uint256 batchSize) internal virtual {}\\n\\n /**\\n * @dev Hook that is called after any token transfer. This includes minting and burning. If {ERC721Consecutive} is\\n * used, the hook may be called as part of a consecutive (batch) mint, as indicated by `batchSize` greater than 1.\\n *\\n * Calling conditions:\\n *\\n * - When `from` and `to` are both non-zero, ``from``'s tokens were transferred to `to`.\\n * - When `from` is zero, the tokens were minted for `to`.\\n * - When `to` is zero, ``from``'s tokens were burned.\\n * - `from` and `to` are never both zero.\\n * - `batchSize` is non-zero.\\n *\\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n */\\n function _afterTokenTransfer(address from, address to, uint256 firstTokenId, uint256 batchSize) internal virtual {}\\n\\n /**\\n * @dev Unsafe write access to the balances, used by extensions that \\\"mint\\\" tokens using an {ownerOf} override.\\n *\\n * WARNING: Anyone calling this MUST ensure that the balances remain consistent with the ownership. The invariant\\n * being that for any address `a` the value returned by `balanceOf(a)` must be equal to the number of tokens such\\n * that `ownerOf(tokenId)` is `a`.\\n */\\n // solhint-disable-next-line func-name-mixedcase\\n function __unsafe_increaseBalance(address account, uint256 amount) internal {\\n _balances[account] += amount;\\n }\\n}\\n\",\"keccak256\":\"0x2c309e7df9e05e6ce15bedfe74f3c61b467fc37e0fae9eab496acf5ea0bbd7ff\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC721/IERC721.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC721 compliant contract.\\n */\\ninterface IERC721 is IERC165 {\\n /**\\n * @dev Emitted when `tokenId` token is transferred from `from` to `to`.\\n */\\n event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);\\n\\n /**\\n * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.\\n */\\n event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);\\n\\n /**\\n * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\\n */\\n event ApprovalForAll(address indexed owner, address indexed operator, bool approved);\\n\\n /**\\n * @dev Returns the number of tokens in ``owner``'s account.\\n */\\n function balanceOf(address owner) external view returns (uint256 balance);\\n\\n /**\\n * @dev Returns the owner of the `tokenId` token.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must exist.\\n */\\n function ownerOf(uint256 tokenId) external view returns (address owner);\\n\\n /**\\n * @dev Safely transfers `tokenId` token from `from` to `to`.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must exist and be owned by `from`.\\n * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n *\\n * Emits a {Transfer} event.\\n */\\n function safeTransferFrom(address from, address to, uint256 tokenId, bytes calldata data) external;\\n\\n /**\\n * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\\n * are aware of the ERC721 protocol to prevent tokens from being forever locked.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must exist and be owned by `from`.\\n * - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n *\\n * Emits a {Transfer} event.\\n */\\n function safeTransferFrom(address from, address to, uint256 tokenId) external;\\n\\n /**\\n * @dev Transfers `tokenId` token from `from` to `to`.\\n *\\n * WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721\\n * or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must\\n * understand this adds an external call which potentially creates a reentrancy vulnerability.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must be owned by `from`.\\n * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transferFrom(address from, address to, uint256 tokenId) external;\\n\\n /**\\n * @dev Gives permission to `to` to transfer `tokenId` token to another account.\\n * The approval is cleared when the token is transferred.\\n *\\n * Only a single account can be approved at a time, so approving the zero address clears previous approvals.\\n *\\n * Requirements:\\n *\\n * - The caller must own the token or be an approved operator.\\n * - `tokenId` must exist.\\n *\\n * Emits an {Approval} event.\\n */\\n function approve(address to, uint256 tokenId) external;\\n\\n /**\\n * @dev Approve or remove `operator` as an operator for the caller.\\n * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\\n *\\n * Requirements:\\n *\\n * - The `operator` cannot be the caller.\\n *\\n * Emits an {ApprovalForAll} event.\\n */\\n function setApprovalForAll(address operator, bool approved) external;\\n\\n /**\\n * @dev Returns the account approved for `tokenId` token.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must exist.\\n */\\n function getApproved(uint256 tokenId) external view returns (address operator);\\n\\n /**\\n * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\\n *\\n * See {setApprovalForAll}\\n */\\n function isApprovedForAll(address owner, address operator) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x5bce51e11f7d194b79ea59fe00c9e8de9fa2c5530124960f29a24d4c740a3266\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC721/IERC721Receiver.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title ERC721 token receiver interface\\n * @dev Interface for any contract that wants to support safeTransfers\\n * from ERC721 asset contracts.\\n */\\ninterface IERC721Receiver {\\n /**\\n * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}\\n * by `operator` from `from`, this function is called.\\n *\\n * It must return its Solidity selector to confirm the token transfer.\\n * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted.\\n *\\n * The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`.\\n */\\n function onERC721Received(\\n address operator,\\n address from,\\n uint256 tokenId,\\n bytes calldata data\\n ) external returns (bytes4);\\n}\\n\",\"keccak256\":\"0xa82b58eca1ee256be466e536706850163d2ec7821945abd6b4778cfb3bee37da\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Metadata.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC721.sol\\\";\\n\\n/**\\n * @title ERC-721 Non-Fungible Token Standard, optional metadata extension\\n * @dev See https://eips.ethereum.org/EIPS/eip-721\\n */\\ninterface IERC721Metadata is IERC721 {\\n /**\\n * @dev Returns the token collection name.\\n */\\n function name() external view returns (string memory);\\n\\n /**\\n * @dev Returns the token collection symbol.\\n */\\n function symbol() external view returns (string memory);\\n\\n /**\\n * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.\\n */\\n function tokenURI(uint256 tokenId) external view returns (string memory);\\n}\\n\",\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n function _contextSuffixLength() internal view virtual returns (uint256) {\\n return 0;\\n }\\n}\\n\",\"keccak256\":\"0xa92e4fa126feb6907daa0513ddd816b2eb91f30a808de54f63c17d0e162c3439\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Strings.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Strings.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./math/Math.sol\\\";\\nimport \\\"./math/SignedMath.sol\\\";\\n\\n/**\\n * @dev String operations.\\n */\\nlibrary Strings {\\n bytes16 private constant _SYMBOLS = \\\"0123456789abcdef\\\";\\n uint8 private constant _ADDRESS_LENGTH = 20;\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` decimal representation.\\n */\\n function toString(uint256 value) internal pure returns (string memory) {\\n unchecked {\\n uint256 length = Math.log10(value) + 1;\\n string memory buffer = new string(length);\\n uint256 ptr;\\n /// @solidity memory-safe-assembly\\n assembly {\\n ptr := add(buffer, add(32, length))\\n }\\n while (true) {\\n ptr--;\\n /// @solidity memory-safe-assembly\\n assembly {\\n mstore8(ptr, byte(mod(value, 10), _SYMBOLS))\\n }\\n value /= 10;\\n if (value == 0) break;\\n }\\n return buffer;\\n }\\n }\\n\\n /**\\n * @dev Converts a `int256` to its ASCII `string` decimal representation.\\n */\\n function toString(int256 value) internal pure returns (string memory) {\\n return string(abi.encodePacked(value < 0 ? \\\"-\\\" : \\\"\\\", toString(SignedMath.abs(value))));\\n }\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\\n */\\n function toHexString(uint256 value) internal pure returns (string memory) {\\n unchecked {\\n return toHexString(value, Math.log256(value) + 1);\\n }\\n }\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\\n */\\n function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\\n bytes memory buffer = new bytes(2 * length + 2);\\n buffer[0] = \\\"0\\\";\\n buffer[1] = \\\"x\\\";\\n for (uint256 i = 2 * length + 1; i > 1; --i) {\\n buffer[i] = _SYMBOLS[value & 0xf];\\n value >>= 4;\\n }\\n require(value == 0, \\\"Strings: hex length insufficient\\\");\\n return string(buffer);\\n }\\n\\n /**\\n * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.\\n */\\n function toHexString(address addr) internal pure returns (string memory) {\\n return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);\\n }\\n\\n /**\\n * @dev Returns true if the two strings are equal.\\n */\\n function equal(string memory a, string memory b) internal pure returns (bool) {\\n return keccak256(bytes(a)) == keccak256(bytes(b));\\n }\\n}\\n\",\"keccak256\":\"0x3088eb2868e8d13d89d16670b5f8612c4ab9ff8956272837d8e90106c59c14a0\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165 is IERC165 {\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165).interfaceId;\\n }\\n}\\n\",\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/math/Math.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard math utilities missing in the Solidity language.\\n */\\nlibrary Math {\\n enum Rounding {\\n Down, // Toward negative infinity\\n Up, // Toward infinity\\n Zero // Toward zero\\n }\\n\\n /**\\n * @dev Returns the largest of two numbers.\\n */\\n function max(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two numbers.\\n */\\n function min(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two numbers. The result is rounded towards\\n * zero.\\n */\\n function average(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b) / 2 can overflow.\\n return (a & b) + (a ^ b) / 2;\\n }\\n\\n /**\\n * @dev Returns the ceiling of the division of two numbers.\\n *\\n * This differs from standard division with `/` in that it rounds up instead\\n * of rounding down.\\n */\\n function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b - 1) / b can overflow on addition, so we distribute.\\n return a == 0 ? 0 : (a - 1) / b + 1;\\n }\\n\\n /**\\n * @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\\n * @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)\\n * with further edits by Uniswap Labs also under MIT license.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator) internal pure returns (uint256 result) {\\n unchecked {\\n // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use\\n // use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\\n // variables such that product = prod1 * 2^256 + prod0.\\n uint256 prod0; // Least significant 256 bits of the product\\n uint256 prod1; // Most significant 256 bits of the product\\n assembly {\\n let mm := mulmod(x, y, not(0))\\n prod0 := mul(x, y)\\n prod1 := sub(sub(mm, prod0), lt(mm, prod0))\\n }\\n\\n // Handle non-overflow cases, 256 by 256 division.\\n if (prod1 == 0) {\\n // Solidity will revert if denominator == 0, unlike the div opcode on its own.\\n // The surrounding unchecked block does not change this fact.\\n // See https://docs.soliditylang.org/en/latest/control-structures.html#checked-or-unchecked-arithmetic.\\n return prod0 / denominator;\\n }\\n\\n // Make sure the result is less than 2^256. Also prevents denominator == 0.\\n require(denominator > prod1, \\\"Math: mulDiv overflow\\\");\\n\\n ///////////////////////////////////////////////\\n // 512 by 256 division.\\n ///////////////////////////////////////////////\\n\\n // Make division exact by subtracting the remainder from [prod1 prod0].\\n uint256 remainder;\\n assembly {\\n // Compute remainder using mulmod.\\n remainder := mulmod(x, y, denominator)\\n\\n // Subtract 256 bit number from 512 bit number.\\n prod1 := sub(prod1, gt(remainder, prod0))\\n prod0 := sub(prod0, remainder)\\n }\\n\\n // Factor powers of two out of denominator and compute largest power of two divisor of denominator. Always >= 1.\\n // See https://cs.stackexchange.com/q/138556/92363.\\n\\n // Does not overflow because the denominator cannot be zero at this stage in the function.\\n uint256 twos = denominator & (~denominator + 1);\\n assembly {\\n // Divide denominator by twos.\\n denominator := div(denominator, twos)\\n\\n // Divide [prod1 prod0] by twos.\\n prod0 := div(prod0, twos)\\n\\n // Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one.\\n twos := add(div(sub(0, twos), twos), 1)\\n }\\n\\n // Shift in bits from prod1 into prod0.\\n prod0 |= prod1 * twos;\\n\\n // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such\\n // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for\\n // four bits. That is, denominator * inv = 1 mod 2^4.\\n uint256 inverse = (3 * denominator) ^ 2;\\n\\n // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also works\\n // in modular arithmetic, doubling the correct bits in each step.\\n inverse *= 2 - denominator * inverse; // inverse mod 2^8\\n inverse *= 2 - denominator * inverse; // inverse mod 2^16\\n inverse *= 2 - denominator * inverse; // inverse mod 2^32\\n inverse *= 2 - denominator * inverse; // inverse mod 2^64\\n inverse *= 2 - denominator * inverse; // inverse mod 2^128\\n inverse *= 2 - denominator * inverse; // inverse mod 2^256\\n\\n // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\\n // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is\\n // less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1\\n // is no longer required.\\n result = prod0 * inverse;\\n return result;\\n }\\n }\\n\\n /**\\n * @notice Calculates x * y / denominator with full precision, following the selected rounding direction.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator, Rounding rounding) internal pure returns (uint256) {\\n uint256 result = mulDiv(x, y, denominator);\\n if (rounding == Rounding.Up && mulmod(x, y, denominator) > 0) {\\n result += 1;\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down.\\n *\\n * Inspired by Henry S. Warren, Jr.'s \\\"Hacker's Delight\\\" (Chapter 11).\\n */\\n function sqrt(uint256 a) internal pure returns (uint256) {\\n if (a == 0) {\\n return 0;\\n }\\n\\n // For our first guess, we get the biggest power of 2 which is smaller than the square root of the target.\\n //\\n // We know that the \\\"msb\\\" (most significant bit) of our target number `a` is a power of 2 such that we have\\n // `msb(a) <= a < 2*msb(a)`. This value can be written `msb(a)=2**k` with `k=log2(a)`.\\n //\\n // This can be rewritten `2**log2(a) <= a < 2**(log2(a) + 1)`\\n // \\u2192 `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))`\\n // \\u2192 `2**(k/2) <= sqrt(a) < 2**((k+1)/2) <= 2**(k/2 + 1)`\\n //\\n // Consequently, `2**(log2(a) / 2)` is a good first approximation of `sqrt(a)` with at least 1 correct bit.\\n uint256 result = 1 << (log2(a) >> 1);\\n\\n // At this point `result` is an estimation with one bit of precision. We know the true value is a uint128,\\n // since it is the square root of a uint256. Newton's method converges quadratically (precision doubles at\\n // every iteration). We thus need at most 7 iteration to turn our partial result with one bit of precision\\n // into the expected uint128 result.\\n unchecked {\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n return min(result, a / result);\\n }\\n }\\n\\n /**\\n * @notice Calculates sqrt(a), following the selected rounding direction.\\n */\\n function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = sqrt(a);\\n return result + (rounding == Rounding.Up && result * result < a ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 2, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 128;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 64;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 32;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 16;\\n }\\n if (value >> 8 > 0) {\\n value >>= 8;\\n result += 8;\\n }\\n if (value >> 4 > 0) {\\n value >>= 4;\\n result += 4;\\n }\\n if (value >> 2 > 0) {\\n value >>= 2;\\n result += 2;\\n }\\n if (value >> 1 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 2, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log2(value);\\n return result + (rounding == Rounding.Up && 1 << result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 10, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >= 10 ** 64) {\\n value /= 10 ** 64;\\n result += 64;\\n }\\n if (value >= 10 ** 32) {\\n value /= 10 ** 32;\\n result += 32;\\n }\\n if (value >= 10 ** 16) {\\n value /= 10 ** 16;\\n result += 16;\\n }\\n if (value >= 10 ** 8) {\\n value /= 10 ** 8;\\n result += 8;\\n }\\n if (value >= 10 ** 4) {\\n value /= 10 ** 4;\\n result += 4;\\n }\\n if (value >= 10 ** 2) {\\n value /= 10 ** 2;\\n result += 2;\\n }\\n if (value >= 10 ** 1) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log10(value);\\n return result + (rounding == Rounding.Up && 10 ** result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 256, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n *\\n * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.\\n */\\n function log256(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 16;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 8;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 4;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 2;\\n }\\n if (value >> 8 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 256, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log256(value);\\n return result + (rounding == Rounding.Up && 1 << (result << 3) < value ? 1 : 0);\\n }\\n }\\n}\\n\",\"keccak256\":\"0xe4455ac1eb7fc497bb7402579e7b4d64d928b846fce7d2b6fde06d366f21c2b3\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/SignedMath.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard signed math utilities missing in the Solidity language.\\n */\\nlibrary SignedMath {\\n /**\\n * @dev Returns the largest of two signed numbers.\\n */\\n function max(int256 a, int256 b) internal pure returns (int256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two signed numbers.\\n */\\n function min(int256 a, int256 b) internal pure returns (int256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two signed numbers without overflow.\\n * The result is rounded towards zero.\\n */\\n function average(int256 a, int256 b) internal pure returns (int256) {\\n // Formula from the book \\\"Hacker's Delight\\\"\\n int256 x = (a & b) + ((a ^ b) >> 1);\\n return x + (int256(uint256(x) >> 255) & (a ^ b));\\n }\\n\\n /**\\n * @dev Returns the absolute unsigned value of a signed value.\\n */\\n function abs(int256 n) internal pure returns (uint256) {\\n unchecked {\\n // must be unchecked in order to support `n = type(int256).min`\\n return uint256(n >= 0 ? n : -n);\\n }\\n }\\n}\\n\",\"keccak256\":\"0xf92515413956f529d95977adc9b0567d583c6203fc31ab1c23824c35187e3ddc\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":7872,"contract":"@openzeppelin/contracts/token/ERC721/ERC721.sol:ERC721","label":"_name","offset":0,"slot":"0","type":"t_string_storage"},{"astId":7874,"contract":"@openzeppelin/contracts/token/ERC721/ERC721.sol:ERC721","label":"_symbol","offset":0,"slot":"1","type":"t_string_storage"},{"astId":7878,"contract":"@openzeppelin/contracts/token/ERC721/ERC721.sol:ERC721","label":"_owners","offset":0,"slot":"2","type":"t_mapping(t_uint256,t_address)"},{"astId":7882,"contract":"@openzeppelin/contracts/token/ERC721/ERC721.sol:ERC721","label":"_balances","offset":0,"slot":"3","type":"t_mapping(t_address,t_uint256)"},{"astId":7886,"contract":"@openzeppelin/contracts/token/ERC721/ERC721.sol:ERC721","label":"_tokenApprovals","offset":0,"slot":"4","type":"t_mapping(t_uint256,t_address)"},{"astId":7892,"contract":"@openzeppelin/contracts/token/ERC721/ERC721.sol:ERC721","label":"_operatorApprovals","offset":0,"slot":"5","type":"t_mapping(t_address,t_mapping(t_address,t_bool))"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_mapping(t_address,t_bool)":{"encoding":"mapping","key":"t_address","label":"mapping(address => bool)","numberOfBytes":"32","value":"t_bool"},"t_mapping(t_address,t_mapping(t_address,t_bool))":{"encoding":"mapping","key":"t_address","label":"mapping(address => mapping(address => bool))","numberOfBytes":"32","value":"t_mapping(t_address,t_bool)"},"t_mapping(t_address,t_uint256)":{"encoding":"mapping","key":"t_address","label":"mapping(address => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_mapping(t_uint256,t_address)":{"encoding":"mapping","key":"t_uint256","label":"mapping(uint256 => address)","numberOfBytes":"32","value":"t_address"},"t_string_storage":{"encoding":"bytes","label":"string","numberOfBytes":"32"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/token/ERC721/IERC721.sol":{"IERC721":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"Required interface of an ERC721 compliant contract.","events":{"Approval(address,address,uint256)":{"details":"Emitted when `owner` enables `approved` to manage the `tokenId` token."},"ApprovalForAll(address,address,bool)":{"details":"Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets."},"Transfer(address,address,uint256)":{"details":"Emitted when `tokenId` token is transferred from `from` to `to`."}},"kind":"dev","methods":{"approve(address,uint256)":{"details":"Gives permission to `to` to transfer `tokenId` token to another account. The approval is cleared when the token is transferred. Only a single account can be approved at a time, so approving the zero address clears previous approvals. Requirements: - The caller must own the token or be an approved operator. - `tokenId` must exist. Emits an {Approval} event."},"balanceOf(address)":{"details":"Returns the number of tokens in ``owner``'s account."},"getApproved(uint256)":{"details":"Returns the account approved for `tokenId` token. Requirements: - `tokenId` must exist."},"isApprovedForAll(address,address)":{"details":"Returns if the `operator` is allowed to manage all of the assets of `owner`. See {setApprovalForAll}"},"ownerOf(uint256)":{"details":"Returns the owner of the `tokenId` token. Requirements: - `tokenId` must exist."},"safeTransferFrom(address,address,uint256)":{"details":"Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients are aware of the ERC721 protocol to prevent tokens from being forever locked. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event."},"safeTransferFrom(address,address,uint256,bytes)":{"details":"Safely transfers `tokenId` token from `from` to `to`. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event."},"setApprovalForAll(address,bool)":{"details":"Approve or remove `operator` as an operator for the caller. Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. Requirements: - The `operator` cannot be the caller. Emits an {ApprovalForAll} event."},"supportsInterface(bytes4)":{"details":"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas."},"transferFrom(address,address,uint256)":{"details":"Transfers `tokenId` token from `from` to `to`. WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721 or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must understand this adds an external call which potentially creates a reentrancy vulnerability. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. Emits a {Transfer} event."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","getApproved(uint256)":"081812fc","isApprovedForAll(address,address)":"e985e9c5","ownerOf(uint256)":"6352211e","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Required interface of an ERC721 compliant contract.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when `owner` enables `approved` to manage the `tokenId` token.\"},\"ApprovalForAll(address,address,bool)\":{\"details\":\"Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `tokenId` token is transferred from `from` to `to`.\"}},\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"Gives permission to `to` to transfer `tokenId` token to another account. The approval is cleared when the token is transferred. Only a single account can be approved at a time, so approving the zero address clears previous approvals. Requirements: - The caller must own the token or be an approved operator. - `tokenId` must exist. Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the number of tokens in ``owner``'s account.\"},\"getApproved(uint256)\":{\"details\":\"Returns the account approved for `tokenId` token. Requirements: - `tokenId` must exist.\"},\"isApprovedForAll(address,address)\":{\"details\":\"Returns if the `operator` is allowed to manage all of the assets of `owner`. See {setApprovalForAll}\"},\"ownerOf(uint256)\":{\"details\":\"Returns the owner of the `tokenId` token. Requirements: - `tokenId` must exist.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients are aware of the ERC721 protocol to prevent tokens from being forever locked. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"Approve or remove `operator` as an operator for the caller. Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. Requirements: - The `operator` cannot be the caller. Emits an {ApprovalForAll} event.\"},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Transfers `tokenId` token from `from` to `to`. WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721 or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must understand this adds an external call which potentially creates a reentrancy vulnerability. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":\"IERC721\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC721/IERC721.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC721 compliant contract.\\n */\\ninterface IERC721 is IERC165 {\\n /**\\n * @dev Emitted when `tokenId` token is transferred from `from` to `to`.\\n */\\n event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);\\n\\n /**\\n * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.\\n */\\n event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);\\n\\n /**\\n * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\\n */\\n event ApprovalForAll(address indexed owner, address indexed operator, bool approved);\\n\\n /**\\n * @dev Returns the number of tokens in ``owner``'s account.\\n */\\n function balanceOf(address owner) external view returns (uint256 balance);\\n\\n /**\\n * @dev Returns the owner of the `tokenId` token.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must exist.\\n */\\n function ownerOf(uint256 tokenId) external view returns (address owner);\\n\\n /**\\n * @dev Safely transfers `tokenId` token from `from` to `to`.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must exist and be owned by `from`.\\n * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n *\\n * Emits a {Transfer} event.\\n */\\n function safeTransferFrom(address from, address to, uint256 tokenId, bytes calldata data) external;\\n\\n /**\\n * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\\n * are aware of the ERC721 protocol to prevent tokens from being forever locked.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must exist and be owned by `from`.\\n * - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n *\\n * Emits a {Transfer} event.\\n */\\n function safeTransferFrom(address from, address to, uint256 tokenId) external;\\n\\n /**\\n * @dev Transfers `tokenId` token from `from` to `to`.\\n *\\n * WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721\\n * or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must\\n * understand this adds an external call which potentially creates a reentrancy vulnerability.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must be owned by `from`.\\n * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transferFrom(address from, address to, uint256 tokenId) external;\\n\\n /**\\n * @dev Gives permission to `to` to transfer `tokenId` token to another account.\\n * The approval is cleared when the token is transferred.\\n *\\n * Only a single account can be approved at a time, so approving the zero address clears previous approvals.\\n *\\n * Requirements:\\n *\\n * - The caller must own the token or be an approved operator.\\n * - `tokenId` must exist.\\n *\\n * Emits an {Approval} event.\\n */\\n function approve(address to, uint256 tokenId) external;\\n\\n /**\\n * @dev Approve or remove `operator` as an operator for the caller.\\n * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\\n *\\n * Requirements:\\n *\\n * - The `operator` cannot be the caller.\\n *\\n * Emits an {ApprovalForAll} event.\\n */\\n function setApprovalForAll(address operator, bool approved) external;\\n\\n /**\\n * @dev Returns the account approved for `tokenId` token.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must exist.\\n */\\n function getApproved(uint256 tokenId) external view returns (address operator);\\n\\n /**\\n * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\\n *\\n * See {setApprovalForAll}\\n */\\n function isApprovedForAll(address owner, address operator) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x5bce51e11f7d194b79ea59fe00c9e8de9fa2c5530124960f29a24d4c740a3266\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol":{"IERC721Receiver":{"abi":[{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"Interface for any contract that wants to support safeTransfers from ERC721 asset contracts.","kind":"dev","methods":{"onERC721Received(address,address,uint256,bytes)":{"details":"Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom} by `operator` from `from`, this function is called. It must return its Solidity selector to confirm the token transfer. If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted. The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`."}},"title":"ERC721 token receiver interface","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"onERC721Received(address,address,uint256,bytes)":"150b7a02"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onERC721Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface for any contract that wants to support safeTransfers from ERC721 asset contracts.\",\"kind\":\"dev\",\"methods\":{\"onERC721Received(address,address,uint256,bytes)\":{\"details\":\"Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom} by `operator` from `from`, this function is called. It must return its Solidity selector to confirm the token transfer. If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted. The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`.\"}},\"title\":\"ERC721 token receiver interface\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":\"IERC721Receiver\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC721/IERC721Receiver.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title ERC721 token receiver interface\\n * @dev Interface for any contract that wants to support safeTransfers\\n * from ERC721 asset contracts.\\n */\\ninterface IERC721Receiver {\\n /**\\n * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}\\n * by `operator` from `from`, this function is called.\\n *\\n * It must return its Solidity selector to confirm the token transfer.\\n * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted.\\n *\\n * The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`.\\n */\\n function onERC721Received(\\n address operator,\\n address from,\\n uint256 tokenId,\\n bytes calldata data\\n ) external returns (bytes4);\\n}\\n\",\"keccak256\":\"0xa82b58eca1ee256be466e536706850163d2ec7821945abd6b4778cfb3bee37da\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol":{"IERC721Metadata":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"See https://eips.ethereum.org/EIPS/eip-721","kind":"dev","methods":{"approve(address,uint256)":{"details":"Gives permission to `to` to transfer `tokenId` token to another account. The approval is cleared when the token is transferred. Only a single account can be approved at a time, so approving the zero address clears previous approvals. Requirements: - The caller must own the token or be an approved operator. - `tokenId` must exist. Emits an {Approval} event."},"balanceOf(address)":{"details":"Returns the number of tokens in ``owner``'s account."},"getApproved(uint256)":{"details":"Returns the account approved for `tokenId` token. Requirements: - `tokenId` must exist."},"isApprovedForAll(address,address)":{"details":"Returns if the `operator` is allowed to manage all of the assets of `owner`. See {setApprovalForAll}"},"name()":{"details":"Returns the token collection name."},"ownerOf(uint256)":{"details":"Returns the owner of the `tokenId` token. Requirements: - `tokenId` must exist."},"safeTransferFrom(address,address,uint256)":{"details":"Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients are aware of the ERC721 protocol to prevent tokens from being forever locked. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event."},"safeTransferFrom(address,address,uint256,bytes)":{"details":"Safely transfers `tokenId` token from `from` to `to`. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event."},"setApprovalForAll(address,bool)":{"details":"Approve or remove `operator` as an operator for the caller. Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. Requirements: - The `operator` cannot be the caller. Emits an {ApprovalForAll} event."},"supportsInterface(bytes4)":{"details":"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas."},"symbol()":{"details":"Returns the token collection symbol."},"tokenURI(uint256)":{"details":"Returns the Uniform Resource Identifier (URI) for `tokenId` token."},"transferFrom(address,address,uint256)":{"details":"Transfers `tokenId` token from `from` to `to`. WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721 or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must understand this adds an external call which potentially creates a reentrancy vulnerability. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. Emits a {Transfer} event."}},"title":"ERC-721 Non-Fungible Token Standard, optional metadata extension","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","getApproved(uint256)":"081812fc","isApprovedForAll(address,address)":"e985e9c5","name()":"06fdde03","ownerOf(uint256)":"6352211e","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","tokenURI(uint256)":"c87b56dd","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"See https://eips.ethereum.org/EIPS/eip-721\",\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"Gives permission to `to` to transfer `tokenId` token to another account. The approval is cleared when the token is transferred. Only a single account can be approved at a time, so approving the zero address clears previous approvals. Requirements: - The caller must own the token or be an approved operator. - `tokenId` must exist. Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the number of tokens in ``owner``'s account.\"},\"getApproved(uint256)\":{\"details\":\"Returns the account approved for `tokenId` token. Requirements: - `tokenId` must exist.\"},\"isApprovedForAll(address,address)\":{\"details\":\"Returns if the `operator` is allowed to manage all of the assets of `owner`. See {setApprovalForAll}\"},\"name()\":{\"details\":\"Returns the token collection name.\"},\"ownerOf(uint256)\":{\"details\":\"Returns the owner of the `tokenId` token. Requirements: - `tokenId` must exist.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients are aware of the ERC721 protocol to prevent tokens from being forever locked. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"Approve or remove `operator` as an operator for the caller. Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. Requirements: - The `operator` cannot be the caller. Emits an {ApprovalForAll} event.\"},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"},\"symbol()\":{\"details\":\"Returns the token collection symbol.\"},\"tokenURI(uint256)\":{\"details\":\"Returns the Uniform Resource Identifier (URI) for `tokenId` token.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Transfers `tokenId` token from `from` to `to`. WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721 or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must understand this adds an external call which potentially creates a reentrancy vulnerability. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. Emits a {Transfer} event.\"}},\"title\":\"ERC-721 Non-Fungible Token Standard, optional metadata extension\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":\"IERC721Metadata\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC721/IERC721.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC721 compliant contract.\\n */\\ninterface IERC721 is IERC165 {\\n /**\\n * @dev Emitted when `tokenId` token is transferred from `from` to `to`.\\n */\\n event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);\\n\\n /**\\n * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.\\n */\\n event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);\\n\\n /**\\n * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\\n */\\n event ApprovalForAll(address indexed owner, address indexed operator, bool approved);\\n\\n /**\\n * @dev Returns the number of tokens in ``owner``'s account.\\n */\\n function balanceOf(address owner) external view returns (uint256 balance);\\n\\n /**\\n * @dev Returns the owner of the `tokenId` token.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must exist.\\n */\\n function ownerOf(uint256 tokenId) external view returns (address owner);\\n\\n /**\\n * @dev Safely transfers `tokenId` token from `from` to `to`.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must exist and be owned by `from`.\\n * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n *\\n * Emits a {Transfer} event.\\n */\\n function safeTransferFrom(address from, address to, uint256 tokenId, bytes calldata data) external;\\n\\n /**\\n * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\\n * are aware of the ERC721 protocol to prevent tokens from being forever locked.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must exist and be owned by `from`.\\n * - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n *\\n * Emits a {Transfer} event.\\n */\\n function safeTransferFrom(address from, address to, uint256 tokenId) external;\\n\\n /**\\n * @dev Transfers `tokenId` token from `from` to `to`.\\n *\\n * WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721\\n * or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must\\n * understand this adds an external call which potentially creates a reentrancy vulnerability.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must be owned by `from`.\\n * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transferFrom(address from, address to, uint256 tokenId) external;\\n\\n /**\\n * @dev Gives permission to `to` to transfer `tokenId` token to another account.\\n * The approval is cleared when the token is transferred.\\n *\\n * Only a single account can be approved at a time, so approving the zero address clears previous approvals.\\n *\\n * Requirements:\\n *\\n * - The caller must own the token or be an approved operator.\\n * - `tokenId` must exist.\\n *\\n * Emits an {Approval} event.\\n */\\n function approve(address to, uint256 tokenId) external;\\n\\n /**\\n * @dev Approve or remove `operator` as an operator for the caller.\\n * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\\n *\\n * Requirements:\\n *\\n * - The `operator` cannot be the caller.\\n *\\n * Emits an {ApprovalForAll} event.\\n */\\n function setApprovalForAll(address operator, bool approved) external;\\n\\n /**\\n * @dev Returns the account approved for `tokenId` token.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must exist.\\n */\\n function getApproved(uint256 tokenId) external view returns (address operator);\\n\\n /**\\n * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\\n *\\n * See {setApprovalForAll}\\n */\\n function isApprovedForAll(address owner, address operator) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x5bce51e11f7d194b79ea59fe00c9e8de9fa2c5530124960f29a24d4c740a3266\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Metadata.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC721.sol\\\";\\n\\n/**\\n * @title ERC-721 Non-Fungible Token Standard, optional metadata extension\\n * @dev See https://eips.ethereum.org/EIPS/eip-721\\n */\\ninterface IERC721Metadata is IERC721 {\\n /**\\n * @dev Returns the token collection name.\\n */\\n function name() external view returns (string memory);\\n\\n /**\\n * @dev Returns the token collection symbol.\\n */\\n function symbol() external view returns (string memory);\\n\\n /**\\n * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.\\n */\\n function tokenURI(uint256 tokenId) external view returns (string memory);\\n}\\n\",\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/utils/Address.sol":{"Address":{"abi":[],"devdoc":{"details":"Collection of functions related to the address type","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"602d6037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a","opcodes":"PUSH1 0x2D PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"194:9169:33:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;194:9169:33;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"194:9169:33:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"9000","executionCost":"94","totalCost":"9094"},"internal":{"_revert(bytes memory,string memory)":"infinite","functionCall(address,bytes memory)":"infinite","functionCall(address,bytes memory,string memory)":"infinite","functionCallWithValue(address,bytes memory,uint256)":"infinite","functionCallWithValue(address,bytes memory,uint256,string memory)":"infinite","functionDelegateCall(address,bytes memory)":"infinite","functionDelegateCall(address,bytes memory,string memory)":"infinite","functionStaticCall(address,bytes memory)":"infinite","functionStaticCall(address,bytes memory,string memory)":"infinite","isContract(address)":"infinite","sendValue(address payable,uint256)":"infinite","verifyCallResult(bool,bytes memory,string memory)":"infinite","verifyCallResultFromTarget(address,bool,bytes memory,string memory)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Collection of functions related to the address type\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Address.sol\":\"Address\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/utils/Context.sol":{"Context":{"abi":[],"devdoc":{"details":"Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Context.sol\":\"Context\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n function _contextSuffixLength() internal view virtual returns (uint256) {\\n return 0;\\n }\\n}\\n\",\"keccak256\":\"0xa92e4fa126feb6907daa0513ddd816b2eb91f30a808de54f63c17d0e162c3439\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/utils/Counters.sol":{"Counters":{"abi":[],"devdoc":{"author":"Matt Condon (@shrugs)","details":"Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number of elements in a mapping, issuing ERC721 ids, or counting request ids. Include with `using Counters for Counters.Counter;`","kind":"dev","methods":{},"title":"Counters","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"602d6037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a","opcodes":"PUSH1 0x2D PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"424:971:35:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;424:971:35;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"424:971:35:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"9000","executionCost":"94","totalCost":"9094"},"internal":{"current(struct Counters.Counter storage pointer)":"infinite","decrement(struct Counters.Counter storage pointer)":"infinite","increment(struct Counters.Counter storage pointer)":"infinite","reset(struct Counters.Counter storage pointer)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"author\":\"Matt Condon (@shrugs)\",\"details\":\"Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number of elements in a mapping, issuing ERC721 ids, or counting request ids. Include with `using Counters for Counters.Counter;`\",\"kind\":\"dev\",\"methods\":{},\"title\":\"Counters\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Counters.sol\":\"Counters\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Counters.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Counters.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title Counters\\n * @author Matt Condon (@shrugs)\\n * @dev Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number\\n * of elements in a mapping, issuing ERC721 ids, or counting request ids.\\n *\\n * Include with `using Counters for Counters.Counter;`\\n */\\nlibrary Counters {\\n struct Counter {\\n // This variable should never be directly accessed by users of the library: interactions must be restricted to\\n // the library's function. As of Solidity v0.5.2, this cannot be enforced, though there is a proposal to add\\n // this feature: see https://github.com/ethereum/solidity/issues/4637\\n uint256 _value; // default: 0\\n }\\n\\n function current(Counter storage counter) internal view returns (uint256) {\\n return counter._value;\\n }\\n\\n function increment(Counter storage counter) internal {\\n unchecked {\\n counter._value += 1;\\n }\\n }\\n\\n function decrement(Counter storage counter) internal {\\n uint256 value = counter._value;\\n require(value > 0, \\\"Counter: decrement overflow\\\");\\n unchecked {\\n counter._value = value - 1;\\n }\\n }\\n\\n function reset(Counter storage counter) internal {\\n counter._value = 0;\\n }\\n}\\n\",\"keccak256\":\"0xf0018c2440fbe238dd3a8732fa8e17a0f9dce84d31451dc8a32f6d62b349c9f1\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/utils/StorageSlot.sol":{"StorageSlot":{"abi":[],"devdoc":{"details":"Library for reading and writing primitive types to specific storage slots. Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts. This library helps with reading and writing to such slots without the need for inline assembly. The functions in this library return Slot structs that contain a `value` member that can be used to read or write. Example usage to set ERC1967 implementation slot: ```solidity contract ERC1967 { bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc; function _getImplementation() internal view returns (address) { return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value; } function _setImplementation(address newImplementation) internal { require(Address.isContract(newImplementation), \"ERC1967: new implementation is not a contract\"); StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation; } } ``` _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._ _Available since v4.9 for `string`, `bytes`._","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"602d6037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a","opcodes":"PUSH1 0x2D PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"1420:2685:36:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;1420:2685:36;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"1420:2685:36:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"9000","executionCost":"94","totalCost":"9094"},"internal":{"getAddressSlot(bytes32)":"infinite","getBooleanSlot(bytes32)":"infinite","getBytes32Slot(bytes32)":"infinite","getBytesSlot(bytes storage pointer)":"infinite","getBytesSlot(bytes32)":"infinite","getStringSlot(bytes32)":"infinite","getStringSlot(string storage pointer)":"infinite","getUint256Slot(bytes32)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Library for reading and writing primitive types to specific storage slots. Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts. This library helps with reading and writing to such slots without the need for inline assembly. The functions in this library return Slot structs that contain a `value` member that can be used to read or write. Example usage to set ERC1967 implementation slot: ```solidity contract ERC1967 { bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc; function _getImplementation() internal view returns (address) { return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value; } function _setImplementation(address newImplementation) internal { require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\"); StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation; } } ``` _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._ _Available since v4.9 for `string`, `bytes`._\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/StorageSlot.sol\":\"StorageSlot\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/StorageSlot.sol)\\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```solidity\\n * contract ERC1967 {\\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n * function _getImplementation() internal view returns (address) {\\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n * }\\n *\\n * function _setImplementation(address newImplementation) internal {\\n * require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n * }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._\\n * _Available since v4.9 for `string`, `bytes`._\\n */\\nlibrary StorageSlot {\\n struct AddressSlot {\\n address value;\\n }\\n\\n struct BooleanSlot {\\n bool value;\\n }\\n\\n struct Bytes32Slot {\\n bytes32 value;\\n }\\n\\n struct Uint256Slot {\\n uint256 value;\\n }\\n\\n struct StringSlot {\\n string value;\\n }\\n\\n struct BytesSlot {\\n bytes value;\\n }\\n\\n /**\\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n */\\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n */\\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n */\\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n */\\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` with member `value` located at `slot`.\\n */\\n function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\\n */\\n function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` with member `value` located at `slot`.\\n */\\n function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\\n */\\n function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n}\\n\",\"keccak256\":\"0xf09e68aa0dc6722a25bc46490e8d48ed864466d17313b8a0b254c36b54e49899\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/utils/Strings.sol":{"Strings":{"abi":[],"devdoc":{"details":"String operations.","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"602d6037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a","opcodes":"PUSH1 0x2D PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"220:2559:37:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;220:2559:37;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"220:2559:37:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"9000","executionCost":"94","totalCost":"9094"},"internal":{"equal(string memory,string memory)":"infinite","toHexString(address)":"infinite","toHexString(uint256)":"infinite","toHexString(uint256,uint256)":"infinite","toString(int256)":"infinite","toString(uint256)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"String operations.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Strings.sol\":\"Strings\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Strings.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Strings.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./math/Math.sol\\\";\\nimport \\\"./math/SignedMath.sol\\\";\\n\\n/**\\n * @dev String operations.\\n */\\nlibrary Strings {\\n bytes16 private constant _SYMBOLS = \\\"0123456789abcdef\\\";\\n uint8 private constant _ADDRESS_LENGTH = 20;\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` decimal representation.\\n */\\n function toString(uint256 value) internal pure returns (string memory) {\\n unchecked {\\n uint256 length = Math.log10(value) + 1;\\n string memory buffer = new string(length);\\n uint256 ptr;\\n /// @solidity memory-safe-assembly\\n assembly {\\n ptr := add(buffer, add(32, length))\\n }\\n while (true) {\\n ptr--;\\n /// @solidity memory-safe-assembly\\n assembly {\\n mstore8(ptr, byte(mod(value, 10), _SYMBOLS))\\n }\\n value /= 10;\\n if (value == 0) break;\\n }\\n return buffer;\\n }\\n }\\n\\n /**\\n * @dev Converts a `int256` to its ASCII `string` decimal representation.\\n */\\n function toString(int256 value) internal pure returns (string memory) {\\n return string(abi.encodePacked(value < 0 ? \\\"-\\\" : \\\"\\\", toString(SignedMath.abs(value))));\\n }\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\\n */\\n function toHexString(uint256 value) internal pure returns (string memory) {\\n unchecked {\\n return toHexString(value, Math.log256(value) + 1);\\n }\\n }\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\\n */\\n function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\\n bytes memory buffer = new bytes(2 * length + 2);\\n buffer[0] = \\\"0\\\";\\n buffer[1] = \\\"x\\\";\\n for (uint256 i = 2 * length + 1; i > 1; --i) {\\n buffer[i] = _SYMBOLS[value & 0xf];\\n value >>= 4;\\n }\\n require(value == 0, \\\"Strings: hex length insufficient\\\");\\n return string(buffer);\\n }\\n\\n /**\\n * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.\\n */\\n function toHexString(address addr) internal pure returns (string memory) {\\n return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);\\n }\\n\\n /**\\n * @dev Returns true if the two strings are equal.\\n */\\n function equal(string memory a, string memory b) internal pure returns (bool) {\\n return keccak256(bytes(a)) == keccak256(bytes(b));\\n }\\n}\\n\",\"keccak256\":\"0x3088eb2868e8d13d89d16670b5f8612c4ab9ff8956272837d8e90106c59c14a0\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/math/Math.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard math utilities missing in the Solidity language.\\n */\\nlibrary Math {\\n enum Rounding {\\n Down, // Toward negative infinity\\n Up, // Toward infinity\\n Zero // Toward zero\\n }\\n\\n /**\\n * @dev Returns the largest of two numbers.\\n */\\n function max(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two numbers.\\n */\\n function min(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two numbers. The result is rounded towards\\n * zero.\\n */\\n function average(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b) / 2 can overflow.\\n return (a & b) + (a ^ b) / 2;\\n }\\n\\n /**\\n * @dev Returns the ceiling of the division of two numbers.\\n *\\n * This differs from standard division with `/` in that it rounds up instead\\n * of rounding down.\\n */\\n function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b - 1) / b can overflow on addition, so we distribute.\\n return a == 0 ? 0 : (a - 1) / b + 1;\\n }\\n\\n /**\\n * @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\\n * @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)\\n * with further edits by Uniswap Labs also under MIT license.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator) internal pure returns (uint256 result) {\\n unchecked {\\n // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use\\n // use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\\n // variables such that product = prod1 * 2^256 + prod0.\\n uint256 prod0; // Least significant 256 bits of the product\\n uint256 prod1; // Most significant 256 bits of the product\\n assembly {\\n let mm := mulmod(x, y, not(0))\\n prod0 := mul(x, y)\\n prod1 := sub(sub(mm, prod0), lt(mm, prod0))\\n }\\n\\n // Handle non-overflow cases, 256 by 256 division.\\n if (prod1 == 0) {\\n // Solidity will revert if denominator == 0, unlike the div opcode on its own.\\n // The surrounding unchecked block does not change this fact.\\n // See https://docs.soliditylang.org/en/latest/control-structures.html#checked-or-unchecked-arithmetic.\\n return prod0 / denominator;\\n }\\n\\n // Make sure the result is less than 2^256. Also prevents denominator == 0.\\n require(denominator > prod1, \\\"Math: mulDiv overflow\\\");\\n\\n ///////////////////////////////////////////////\\n // 512 by 256 division.\\n ///////////////////////////////////////////////\\n\\n // Make division exact by subtracting the remainder from [prod1 prod0].\\n uint256 remainder;\\n assembly {\\n // Compute remainder using mulmod.\\n remainder := mulmod(x, y, denominator)\\n\\n // Subtract 256 bit number from 512 bit number.\\n prod1 := sub(prod1, gt(remainder, prod0))\\n prod0 := sub(prod0, remainder)\\n }\\n\\n // Factor powers of two out of denominator and compute largest power of two divisor of denominator. Always >= 1.\\n // See https://cs.stackexchange.com/q/138556/92363.\\n\\n // Does not overflow because the denominator cannot be zero at this stage in the function.\\n uint256 twos = denominator & (~denominator + 1);\\n assembly {\\n // Divide denominator by twos.\\n denominator := div(denominator, twos)\\n\\n // Divide [prod1 prod0] by twos.\\n prod0 := div(prod0, twos)\\n\\n // Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one.\\n twos := add(div(sub(0, twos), twos), 1)\\n }\\n\\n // Shift in bits from prod1 into prod0.\\n prod0 |= prod1 * twos;\\n\\n // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such\\n // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for\\n // four bits. That is, denominator * inv = 1 mod 2^4.\\n uint256 inverse = (3 * denominator) ^ 2;\\n\\n // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also works\\n // in modular arithmetic, doubling the correct bits in each step.\\n inverse *= 2 - denominator * inverse; // inverse mod 2^8\\n inverse *= 2 - denominator * inverse; // inverse mod 2^16\\n inverse *= 2 - denominator * inverse; // inverse mod 2^32\\n inverse *= 2 - denominator * inverse; // inverse mod 2^64\\n inverse *= 2 - denominator * inverse; // inverse mod 2^128\\n inverse *= 2 - denominator * inverse; // inverse mod 2^256\\n\\n // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\\n // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is\\n // less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1\\n // is no longer required.\\n result = prod0 * inverse;\\n return result;\\n }\\n }\\n\\n /**\\n * @notice Calculates x * y / denominator with full precision, following the selected rounding direction.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator, Rounding rounding) internal pure returns (uint256) {\\n uint256 result = mulDiv(x, y, denominator);\\n if (rounding == Rounding.Up && mulmod(x, y, denominator) > 0) {\\n result += 1;\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down.\\n *\\n * Inspired by Henry S. Warren, Jr.'s \\\"Hacker's Delight\\\" (Chapter 11).\\n */\\n function sqrt(uint256 a) internal pure returns (uint256) {\\n if (a == 0) {\\n return 0;\\n }\\n\\n // For our first guess, we get the biggest power of 2 which is smaller than the square root of the target.\\n //\\n // We know that the \\\"msb\\\" (most significant bit) of our target number `a` is a power of 2 such that we have\\n // `msb(a) <= a < 2*msb(a)`. This value can be written `msb(a)=2**k` with `k=log2(a)`.\\n //\\n // This can be rewritten `2**log2(a) <= a < 2**(log2(a) + 1)`\\n // \\u2192 `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))`\\n // \\u2192 `2**(k/2) <= sqrt(a) < 2**((k+1)/2) <= 2**(k/2 + 1)`\\n //\\n // Consequently, `2**(log2(a) / 2)` is a good first approximation of `sqrt(a)` with at least 1 correct bit.\\n uint256 result = 1 << (log2(a) >> 1);\\n\\n // At this point `result` is an estimation with one bit of precision. We know the true value is a uint128,\\n // since it is the square root of a uint256. Newton's method converges quadratically (precision doubles at\\n // every iteration). We thus need at most 7 iteration to turn our partial result with one bit of precision\\n // into the expected uint128 result.\\n unchecked {\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n return min(result, a / result);\\n }\\n }\\n\\n /**\\n * @notice Calculates sqrt(a), following the selected rounding direction.\\n */\\n function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = sqrt(a);\\n return result + (rounding == Rounding.Up && result * result < a ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 2, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 128;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 64;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 32;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 16;\\n }\\n if (value >> 8 > 0) {\\n value >>= 8;\\n result += 8;\\n }\\n if (value >> 4 > 0) {\\n value >>= 4;\\n result += 4;\\n }\\n if (value >> 2 > 0) {\\n value >>= 2;\\n result += 2;\\n }\\n if (value >> 1 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 2, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log2(value);\\n return result + (rounding == Rounding.Up && 1 << result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 10, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >= 10 ** 64) {\\n value /= 10 ** 64;\\n result += 64;\\n }\\n if (value >= 10 ** 32) {\\n value /= 10 ** 32;\\n result += 32;\\n }\\n if (value >= 10 ** 16) {\\n value /= 10 ** 16;\\n result += 16;\\n }\\n if (value >= 10 ** 8) {\\n value /= 10 ** 8;\\n result += 8;\\n }\\n if (value >= 10 ** 4) {\\n value /= 10 ** 4;\\n result += 4;\\n }\\n if (value >= 10 ** 2) {\\n value /= 10 ** 2;\\n result += 2;\\n }\\n if (value >= 10 ** 1) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log10(value);\\n return result + (rounding == Rounding.Up && 10 ** result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 256, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n *\\n * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.\\n */\\n function log256(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 16;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 8;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 4;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 2;\\n }\\n if (value >> 8 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 256, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log256(value);\\n return result + (rounding == Rounding.Up && 1 << (result << 3) < value ? 1 : 0);\\n }\\n }\\n}\\n\",\"keccak256\":\"0xe4455ac1eb7fc497bb7402579e7b4d64d928b846fce7d2b6fde06d366f21c2b3\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/SignedMath.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard signed math utilities missing in the Solidity language.\\n */\\nlibrary SignedMath {\\n /**\\n * @dev Returns the largest of two signed numbers.\\n */\\n function max(int256 a, int256 b) internal pure returns (int256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two signed numbers.\\n */\\n function min(int256 a, int256 b) internal pure returns (int256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two signed numbers without overflow.\\n * The result is rounded towards zero.\\n */\\n function average(int256 a, int256 b) internal pure returns (int256) {\\n // Formula from the book \\\"Hacker's Delight\\\"\\n int256 x = (a & b) + ((a ^ b) >> 1);\\n return x + (int256(uint256(x) >> 255) & (a ^ b));\\n }\\n\\n /**\\n * @dev Returns the absolute unsigned value of a signed value.\\n */\\n function abs(int256 n) internal pure returns (uint256) {\\n unchecked {\\n // must be unchecked in order to support `n = type(int256).min`\\n return uint256(n >= 0 ? n : -n);\\n }\\n }\\n}\\n\",\"keccak256\":\"0xf92515413956f529d95977adc9b0567d583c6203fc31ab1c23824c35187e3ddc\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/utils/introspection/ERC165.sol":{"ERC165":{"abi":[{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"Implementation of the {IERC165} interface. Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check for the additional interface id that will be supported. For example: ```solidity function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); } ``` Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.","kind":"dev","methods":{"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of the {IERC165} interface. Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check for the additional interface id that will be supported. For example: ```solidity function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); } ``` Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\",\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":\"ERC165\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165 is IERC165 {\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165).interfaceId;\\n }\\n}\\n\",\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/utils/introspection/IERC165.sol":{"IERC165":{"abi":[{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"Interface of the ERC165 standard, as defined in the https://eips.ethereum.org/EIPS/eip-165[EIP]. Implementers can declare support of contract interfaces, which can then be queried by others ({ERC165Checker}). For an implementation, see {ERC165}.","kind":"dev","methods":{"supportsInterface(bytes4)":{"details":"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC165 standard, as defined in the https://eips.ethereum.org/EIPS/eip-165[EIP]. Implementers can declare support of contract interfaces, which can then be queried by others ({ERC165Checker}). For an implementation, see {ERC165}.\",\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":\"IERC165\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/utils/math/Math.sol":{"Math":{"abi":[],"devdoc":{"details":"Standard math utilities missing in the Solidity language.","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"602d6037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a","opcodes":"PUSH1 0x2D PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"202:12582:40:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;202:12582:40;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"202:12582:40:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"9000","executionCost":"94","totalCost":"9094"},"internal":{"average(uint256,uint256)":"infinite","ceilDiv(uint256,uint256)":"infinite","log10(uint256)":"infinite","log10(uint256,enum Math.Rounding)":"infinite","log2(uint256)":"infinite","log2(uint256,enum Math.Rounding)":"infinite","log256(uint256)":"infinite","log256(uint256,enum Math.Rounding)":"infinite","max(uint256,uint256)":"infinite","min(uint256,uint256)":"infinite","mulDiv(uint256,uint256,uint256)":"infinite","mulDiv(uint256,uint256,uint256,enum Math.Rounding)":"infinite","sqrt(uint256)":"infinite","sqrt(uint256,enum Math.Rounding)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Standard math utilities missing in the Solidity language.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/math/Math.sol\":\"Math\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/math/Math.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/math/Math.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard math utilities missing in the Solidity language.\\n */\\nlibrary Math {\\n enum Rounding {\\n Down, // Toward negative infinity\\n Up, // Toward infinity\\n Zero // Toward zero\\n }\\n\\n /**\\n * @dev Returns the largest of two numbers.\\n */\\n function max(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two numbers.\\n */\\n function min(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two numbers. The result is rounded towards\\n * zero.\\n */\\n function average(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b) / 2 can overflow.\\n return (a & b) + (a ^ b) / 2;\\n }\\n\\n /**\\n * @dev Returns the ceiling of the division of two numbers.\\n *\\n * This differs from standard division with `/` in that it rounds up instead\\n * of rounding down.\\n */\\n function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b - 1) / b can overflow on addition, so we distribute.\\n return a == 0 ? 0 : (a - 1) / b + 1;\\n }\\n\\n /**\\n * @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\\n * @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)\\n * with further edits by Uniswap Labs also under MIT license.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator) internal pure returns (uint256 result) {\\n unchecked {\\n // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use\\n // use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\\n // variables such that product = prod1 * 2^256 + prod0.\\n uint256 prod0; // Least significant 256 bits of the product\\n uint256 prod1; // Most significant 256 bits of the product\\n assembly {\\n let mm := mulmod(x, y, not(0))\\n prod0 := mul(x, y)\\n prod1 := sub(sub(mm, prod0), lt(mm, prod0))\\n }\\n\\n // Handle non-overflow cases, 256 by 256 division.\\n if (prod1 == 0) {\\n // Solidity will revert if denominator == 0, unlike the div opcode on its own.\\n // The surrounding unchecked block does not change this fact.\\n // See https://docs.soliditylang.org/en/latest/control-structures.html#checked-or-unchecked-arithmetic.\\n return prod0 / denominator;\\n }\\n\\n // Make sure the result is less than 2^256. Also prevents denominator == 0.\\n require(denominator > prod1, \\\"Math: mulDiv overflow\\\");\\n\\n ///////////////////////////////////////////////\\n // 512 by 256 division.\\n ///////////////////////////////////////////////\\n\\n // Make division exact by subtracting the remainder from [prod1 prod0].\\n uint256 remainder;\\n assembly {\\n // Compute remainder using mulmod.\\n remainder := mulmod(x, y, denominator)\\n\\n // Subtract 256 bit number from 512 bit number.\\n prod1 := sub(prod1, gt(remainder, prod0))\\n prod0 := sub(prod0, remainder)\\n }\\n\\n // Factor powers of two out of denominator and compute largest power of two divisor of denominator. Always >= 1.\\n // See https://cs.stackexchange.com/q/138556/92363.\\n\\n // Does not overflow because the denominator cannot be zero at this stage in the function.\\n uint256 twos = denominator & (~denominator + 1);\\n assembly {\\n // Divide denominator by twos.\\n denominator := div(denominator, twos)\\n\\n // Divide [prod1 prod0] by twos.\\n prod0 := div(prod0, twos)\\n\\n // Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one.\\n twos := add(div(sub(0, twos), twos), 1)\\n }\\n\\n // Shift in bits from prod1 into prod0.\\n prod0 |= prod1 * twos;\\n\\n // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such\\n // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for\\n // four bits. That is, denominator * inv = 1 mod 2^4.\\n uint256 inverse = (3 * denominator) ^ 2;\\n\\n // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also works\\n // in modular arithmetic, doubling the correct bits in each step.\\n inverse *= 2 - denominator * inverse; // inverse mod 2^8\\n inverse *= 2 - denominator * inverse; // inverse mod 2^16\\n inverse *= 2 - denominator * inverse; // inverse mod 2^32\\n inverse *= 2 - denominator * inverse; // inverse mod 2^64\\n inverse *= 2 - denominator * inverse; // inverse mod 2^128\\n inverse *= 2 - denominator * inverse; // inverse mod 2^256\\n\\n // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\\n // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is\\n // less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1\\n // is no longer required.\\n result = prod0 * inverse;\\n return result;\\n }\\n }\\n\\n /**\\n * @notice Calculates x * y / denominator with full precision, following the selected rounding direction.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator, Rounding rounding) internal pure returns (uint256) {\\n uint256 result = mulDiv(x, y, denominator);\\n if (rounding == Rounding.Up && mulmod(x, y, denominator) > 0) {\\n result += 1;\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down.\\n *\\n * Inspired by Henry S. Warren, Jr.'s \\\"Hacker's Delight\\\" (Chapter 11).\\n */\\n function sqrt(uint256 a) internal pure returns (uint256) {\\n if (a == 0) {\\n return 0;\\n }\\n\\n // For our first guess, we get the biggest power of 2 which is smaller than the square root of the target.\\n //\\n // We know that the \\\"msb\\\" (most significant bit) of our target number `a` is a power of 2 such that we have\\n // `msb(a) <= a < 2*msb(a)`. This value can be written `msb(a)=2**k` with `k=log2(a)`.\\n //\\n // This can be rewritten `2**log2(a) <= a < 2**(log2(a) + 1)`\\n // \\u2192 `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))`\\n // \\u2192 `2**(k/2) <= sqrt(a) < 2**((k+1)/2) <= 2**(k/2 + 1)`\\n //\\n // Consequently, `2**(log2(a) / 2)` is a good first approximation of `sqrt(a)` with at least 1 correct bit.\\n uint256 result = 1 << (log2(a) >> 1);\\n\\n // At this point `result` is an estimation with one bit of precision. We know the true value is a uint128,\\n // since it is the square root of a uint256. Newton's method converges quadratically (precision doubles at\\n // every iteration). We thus need at most 7 iteration to turn our partial result with one bit of precision\\n // into the expected uint128 result.\\n unchecked {\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n return min(result, a / result);\\n }\\n }\\n\\n /**\\n * @notice Calculates sqrt(a), following the selected rounding direction.\\n */\\n function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = sqrt(a);\\n return result + (rounding == Rounding.Up && result * result < a ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 2, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 128;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 64;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 32;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 16;\\n }\\n if (value >> 8 > 0) {\\n value >>= 8;\\n result += 8;\\n }\\n if (value >> 4 > 0) {\\n value >>= 4;\\n result += 4;\\n }\\n if (value >> 2 > 0) {\\n value >>= 2;\\n result += 2;\\n }\\n if (value >> 1 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 2, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log2(value);\\n return result + (rounding == Rounding.Up && 1 << result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 10, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >= 10 ** 64) {\\n value /= 10 ** 64;\\n result += 64;\\n }\\n if (value >= 10 ** 32) {\\n value /= 10 ** 32;\\n result += 32;\\n }\\n if (value >= 10 ** 16) {\\n value /= 10 ** 16;\\n result += 16;\\n }\\n if (value >= 10 ** 8) {\\n value /= 10 ** 8;\\n result += 8;\\n }\\n if (value >= 10 ** 4) {\\n value /= 10 ** 4;\\n result += 4;\\n }\\n if (value >= 10 ** 2) {\\n value /= 10 ** 2;\\n result += 2;\\n }\\n if (value >= 10 ** 1) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log10(value);\\n return result + (rounding == Rounding.Up && 10 ** result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 256, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n *\\n * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.\\n */\\n function log256(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 16;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 8;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 4;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 2;\\n }\\n if (value >> 8 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 256, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log256(value);\\n return result + (rounding == Rounding.Up && 1 << (result << 3) < value ? 1 : 0);\\n }\\n }\\n}\\n\",\"keccak256\":\"0xe4455ac1eb7fc497bb7402579e7b4d64d928b846fce7d2b6fde06d366f21c2b3\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/utils/math/SignedMath.sol":{"SignedMath":{"abi":[],"devdoc":{"details":"Standard signed math utilities missing in the Solidity language.","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"602d6037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a","opcodes":"PUSH1 0x2D PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"215:1047:41:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;215:1047:41;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"215:1047:41:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"9000","executionCost":"94","totalCost":"9094"},"internal":{"abs(int256)":"infinite","average(int256,int256)":"infinite","max(int256,int256)":"infinite","min(int256,int256)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Standard signed math utilities missing in the Solidity language.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/math/SignedMath.sol\":\"SignedMath\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/SignedMath.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard signed math utilities missing in the Solidity language.\\n */\\nlibrary SignedMath {\\n /**\\n * @dev Returns the largest of two signed numbers.\\n */\\n function max(int256 a, int256 b) internal pure returns (int256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two signed numbers.\\n */\\n function min(int256 a, int256 b) internal pure returns (int256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two signed numbers without overflow.\\n * The result is rounded towards zero.\\n */\\n function average(int256 a, int256 b) internal pure returns (int256) {\\n // Formula from the book \\\"Hacker's Delight\\\"\\n int256 x = (a & b) + ((a ^ b) >> 1);\\n return x + (int256(uint256(x) >> 255) & (a ^ b));\\n }\\n\\n /**\\n * @dev Returns the absolute unsigned value of a signed value.\\n */\\n function abs(int256 n) internal pure returns (uint256) {\\n unchecked {\\n // must be unchecked in order to support `n = type(int256).min`\\n return uint256(n >= 0 ? n : -n);\\n }\\n }\\n}\\n\",\"keccak256\":\"0xf92515413956f529d95977adc9b0567d583c6203fc31ab1c23824c35187e3ddc\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"src/dao/IDAO.sol":{"IDAO":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"string","name":"_reference","type":"string"}],"name":"Deposited","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"actor","type":"address"},{"indexed":false,"internalType":"bytes32","name":"callId","type":"bytes32"},{"components":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"indexed":false,"internalType":"struct IDAO.Action[]","name":"actions","type":"tuple[]"},{"indexed":false,"internalType":"uint256","name":"allowFailureMap","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"failureMap","type":"uint256"},{"indexed":false,"internalType":"bytes[]","name":"execResults","type":"bytes[]"}],"name":"Executed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes","name":"metadata","type":"bytes"}],"name":"MetadataSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"NativeTokenDeposited","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes4","name":"interfaceId","type":"bytes4"},{"indexed":false,"internalType":"bytes4","name":"callbackSelector","type":"bytes4"},{"indexed":false,"internalType":"bytes4","name":"magicNumber","type":"bytes4"}],"name":"StandardCallbackRegistered","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"forwarder","type":"address"}],"name":"TrustedForwarderSet","type":"event"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"string","name":"_reference","type":"string"}],"name":"deposit","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_callId","type":"bytes32"},{"components":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct IDAO.Action[]","name":"_actions","type":"tuple[]"},{"internalType":"uint256","name":"_allowFailureMap","type":"uint256"}],"name":"execute","outputs":[{"internalType":"bytes[]","name":"","type":"bytes[]"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getTrustedForwarder","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_where","type":"address"},{"internalType":"address","name":"_who","type":"address"},{"internalType":"bytes32","name":"_permissionId","type":"bytes32"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"hasPermission","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_hash","type":"bytes32"},{"internalType":"bytes","name":"_signature","type":"bytes"}],"name":"isValidSignature","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_interfaceId","type":"bytes4"},{"internalType":"bytes4","name":"_callbackSelector","type":"bytes4"},{"internalType":"bytes4","name":"_magicNumber","type":"bytes4"}],"name":"registerStandardCallback","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"_metadata","type":"bytes"}],"name":"setMetadata","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"setSignatureValidator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_trustedForwarder","type":"address"}],"name":"setTrustedForwarder","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"author":"Aragon X - 2022-2023","custom:security-contact":"sirt@aragon.org","events":{"Deposited(address,address,uint256,string)":{"params":{"_reference":"The reference describing the deposit reason.","amount":"The amount of tokens deposited.","sender":"The address of the sender.","token":"The address of the deposited token."}},"Executed(address,bytes32,(address,uint256,bytes)[],uint256,uint256,bytes[])":{"details":"The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce.","params":{"actions":"The array of actions executed.","actor":"The address of the caller.","allowFailureMap":"The allow failure map encoding which actions are allowed to fail.","callId":"The ID of the call.","execResults":"The array with the results of the executed actions.","failureMap":"The failure map encoding which actions have failed."}},"MetadataSet(bytes)":{"params":{"metadata":"The IPFS hash of the new metadata object."}},"NativeTokenDeposited(address,uint256)":{"details":"This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).","params":{"amount":"The amount of native tokens deposited.","sender":"The address of the sender."}},"StandardCallbackRegistered(bytes4,bytes4,bytes4)":{"params":{"callbackSelector":"The selector of the callback function.","interfaceId":"The ID of the interface.","magicNumber":"The magic number to be registered for the callback function selector."}},"TrustedForwarderSet(address)":{"params":{"forwarder":"the new forwarder address."}}},"kind":"dev","methods":{"deposit(address,uint256,string)":{"params":{"_amount":"The amount of tokens to deposit.","_reference":"The reference describing the deposit reason.","_token":"The address of the token or address(0) in case of the native token."}},"execute(bytes32,(address,uint256,bytes)[],uint256)":{"params":{"_actions":"The array of actions.","_allowFailureMap":"A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.","_callId":"The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce."},"returns":{"_0":"The array of results obtained from the executed actions in `bytes`.","_1":"The resulting failure map containing the actions have actually failed."}},"getTrustedForwarder()":{"returns":{"_0":"The trusted forwarder address."}},"hasPermission(address,address,bytes32,bytes)":{"params":{"_data":"The optional data passed to the `PermissionCondition` registered.","_permissionId":"The permission identifier.","_where":"The address of the contract.","_who":"The address of a EOA or contract to give the permissions."},"returns":{"_0":"Returns true if the address has permission, false if not."}},"isValidSignature(bytes32,bytes)":{"params":{"_hash":"The hash of the data to be signed.","_signature":"The signature byte array associated with `_hash`."},"returns":{"_0":"Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not."}},"registerStandardCallback(bytes4,bytes4,bytes4)":{"params":{"_callbackSelector":"The selector of the callback function.","_interfaceId":"The ID of the interface.","_magicNumber":"The magic number to be registered for the function signature."}},"setMetadata(bytes)":{"params":{"_metadata":"The IPFS hash of the new metadata object."}},"setSignatureValidator(address)":{"details":"Introduced in v1.0.0. Removed in v1.4.0."},"setTrustedForwarder(address)":{"params":{"_trustedForwarder":"The trusted forwarder address."}}},"title":"IDAO","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"deposit(address,uint256,string)":"bfe07da6","execute(bytes32,(address,uint256,bytes)[],uint256)":"c71bf324","getTrustedForwarder()":"ce1b815f","hasPermission(address,address,bytes32,bytes)":"fdef9106","isValidSignature(bytes32,bytes)":"1626ba7e","registerStandardCallback(bytes4,bytes4,bytes4)":"c4a50145","setMetadata(bytes)":"ee57e36f","setSignatureValidator(address)":"3e2ab0d9","setTrustedForwarder(address)":"da742228"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"_reference\",\"type\":\"string\"}],\"name\":\"Deposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"actor\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"callId\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"struct IDAO.Action[]\",\"name\":\"actions\",\"type\":\"tuple[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"allowFailureMap\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"failureMap\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes[]\",\"name\":\"execResults\",\"type\":\"bytes[]\"}],\"name\":\"Executed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"name\":\"MetadataSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"NativeTokenDeposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"callbackSelector\",\"type\":\"bytes4\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"magicNumber\",\"type\":\"bytes4\"}],\"name\":\"StandardCallbackRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"forwarder\",\"type\":\"address\"}],\"name\":\"TrustedForwarderSet\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"_reference\",\"type\":\"string\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_callId\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IDAO.Action[]\",\"name\":\"_actions\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"_allowFailureMap\",\"type\":\"uint256\"}],\"name\":\"execute\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"\",\"type\":\"bytes[]\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTrustedForwarder\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_who\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_permissionId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"hasPermission\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"isValidSignature\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"},{\"internalType\":\"bytes4\",\"name\":\"_callbackSelector\",\"type\":\"bytes4\"},{\"internalType\":\"bytes4\",\"name\":\"_magicNumber\",\"type\":\"bytes4\"}],\"name\":\"registerStandardCallback\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_metadata\",\"type\":\"bytes\"}],\"name\":\"setMetadata\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"setSignatureValidator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_trustedForwarder\",\"type\":\"address\"}],\"name\":\"setTrustedForwarder\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Aragon X - 2022-2023\",\"custom:security-contact\":\"sirt@aragon.org\",\"events\":{\"Deposited(address,address,uint256,string)\":{\"params\":{\"_reference\":\"The reference describing the deposit reason.\",\"amount\":\"The amount of tokens deposited.\",\"sender\":\"The address of the sender.\",\"token\":\"The address of the deposited token.\"}},\"Executed(address,bytes32,(address,uint256,bytes)[],uint256,uint256,bytes[])\":{\"details\":\"The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce.\",\"params\":{\"actions\":\"The array of actions executed.\",\"actor\":\"The address of the caller.\",\"allowFailureMap\":\"The allow failure map encoding which actions are allowed to fail.\",\"callId\":\"The ID of the call.\",\"execResults\":\"The array with the results of the executed actions.\",\"failureMap\":\"The failure map encoding which actions have failed.\"}},\"MetadataSet(bytes)\":{\"params\":{\"metadata\":\"The IPFS hash of the new metadata object.\"}},\"NativeTokenDeposited(address,uint256)\":{\"details\":\"This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).\",\"params\":{\"amount\":\"The amount of native tokens deposited.\",\"sender\":\"The address of the sender.\"}},\"StandardCallbackRegistered(bytes4,bytes4,bytes4)\":{\"params\":{\"callbackSelector\":\"The selector of the callback function.\",\"interfaceId\":\"The ID of the interface.\",\"magicNumber\":\"The magic number to be registered for the callback function selector.\"}},\"TrustedForwarderSet(address)\":{\"params\":{\"forwarder\":\"the new forwarder address.\"}}},\"kind\":\"dev\",\"methods\":{\"deposit(address,uint256,string)\":{\"params\":{\"_amount\":\"The amount of tokens to deposit.\",\"_reference\":\"The reference describing the deposit reason.\",\"_token\":\"The address of the token or address(0) in case of the native token.\"}},\"execute(bytes32,(address,uint256,bytes)[],uint256)\":{\"params\":{\"_actions\":\"The array of actions.\",\"_allowFailureMap\":\"A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\",\"_callId\":\"The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce.\"},\"returns\":{\"_0\":\"The array of results obtained from the executed actions in `bytes`.\",\"_1\":\"The resulting failure map containing the actions have actually failed.\"}},\"getTrustedForwarder()\":{\"returns\":{\"_0\":\"The trusted forwarder address.\"}},\"hasPermission(address,address,bytes32,bytes)\":{\"params\":{\"_data\":\"The optional data passed to the `PermissionCondition` registered.\",\"_permissionId\":\"The permission identifier.\",\"_where\":\"The address of the contract.\",\"_who\":\"The address of a EOA or contract to give the permissions.\"},\"returns\":{\"_0\":\"Returns true if the address has permission, false if not.\"}},\"isValidSignature(bytes32,bytes)\":{\"params\":{\"_hash\":\"The hash of the data to be signed.\",\"_signature\":\"The signature byte array associated with `_hash`.\"},\"returns\":{\"_0\":\"Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not.\"}},\"registerStandardCallback(bytes4,bytes4,bytes4)\":{\"params\":{\"_callbackSelector\":\"The selector of the callback function.\",\"_interfaceId\":\"The ID of the interface.\",\"_magicNumber\":\"The magic number to be registered for the function signature.\"}},\"setMetadata(bytes)\":{\"params\":{\"_metadata\":\"The IPFS hash of the new metadata object.\"}},\"setSignatureValidator(address)\":{\"details\":\"Introduced in v1.0.0. Removed in v1.4.0.\"},\"setTrustedForwarder(address)\":{\"params\":{\"_trustedForwarder\":\"The trusted forwarder address.\"}}},\"title\":\"IDAO\",\"version\":1},\"userdoc\":{\"events\":{\"Deposited(address,address,uint256,string)\":{\"notice\":\"Emitted when a token deposit has been made to the DAO.\"},\"Executed(address,bytes32,(address,uint256,bytes)[],uint256,uint256,bytes[])\":{\"notice\":\"Emitted when a proposal is executed.\"},\"MetadataSet(bytes)\":{\"notice\":\"Emitted when the DAO metadata is updated.\"},\"NativeTokenDeposited(address,uint256)\":{\"notice\":\"Emitted when a native token deposit has been made to the DAO.\"},\"StandardCallbackRegistered(bytes4,bytes4,bytes4)\":{\"notice\":\"Emitted when a standard callback is registered.\"},\"TrustedForwarderSet(address)\":{\"notice\":\"Emitted when a new TrustedForwarder is set on the DAO.\"}},\"kind\":\"user\",\"methods\":{\"deposit(address,uint256,string)\":{\"notice\":\"Deposits (native) tokens to the DAO contract with a reference string.\"},\"execute(bytes32,(address,uint256,bytes)[],uint256)\":{\"notice\":\"Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted.\"},\"getTrustedForwarder()\":{\"notice\":\"Getter for the trusted forwarder verifying the meta transaction.\"},\"hasPermission(address,address,bytes32,bytes)\":{\"notice\":\"Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\"},\"isValidSignature(bytes32,bytes)\":{\"notice\":\"Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\"},\"registerStandardCallback(bytes4,bytes4,bytes4)\":{\"notice\":\"Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\"},\"setMetadata(bytes)\":{\"notice\":\"Updates the DAO metadata (e.g., an IPFS hash).\"},\"setSignatureValidator(address)\":{\"notice\":\"Removed function being left here to not corrupt the IDAO interface ID. Any call will revert.\"},\"setTrustedForwarder(address)\":{\"notice\":\"Setter for the trusted forwarder verifying the meta transaction.\"}},\"notice\":\"The interface required for DAOs within the Aragon App DAO framework.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/dao/IDAO.sol\":\"IDAO\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"src/dao/IDAO.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IDAO\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for DAOs within the Aragon App DAO framework.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IDAO {\\n /// @notice The action struct to be consumed by the DAO's `execute` function resulting in an external call.\\n /// @param to The address to call.\\n /// @param value The native token value to be sent with the call.\\n /// @param data The bytes-encoded function selector and calldata for the call.\\n struct Action {\\n address to;\\n uint256 value;\\n bytes data;\\n }\\n\\n /// @notice Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\\n /// @param _where The address of the contract.\\n /// @param _who The address of a EOA or contract to give the permissions.\\n /// @param _permissionId The permission identifier.\\n /// @param _data The optional data passed to the `PermissionCondition` registered.\\n /// @return Returns true if the address has permission, false if not.\\n function hasPermission(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes memory _data\\n ) external view returns (bool);\\n\\n /// @notice Updates the DAO metadata (e.g., an IPFS hash).\\n /// @param _metadata The IPFS hash of the new metadata object.\\n function setMetadata(bytes calldata _metadata) external;\\n\\n /// @notice Emitted when the DAO metadata is updated.\\n /// @param metadata The IPFS hash of the new metadata object.\\n event MetadataSet(bytes metadata);\\n\\n /// @notice Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted.\\n /// @param _callId The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce.\\n /// @param _actions The array of actions.\\n /// @param _allowFailureMap A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @return The array of results obtained from the executed actions in `bytes`.\\n /// @return The resulting failure map containing the actions have actually failed.\\n function execute(\\n bytes32 _callId,\\n Action[] memory _actions,\\n uint256 _allowFailureMap\\n ) external returns (bytes[] memory, uint256);\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param actor The address of the caller.\\n /// @param callId The ID of the call.\\n /// @param actions The array of actions executed.\\n /// @param allowFailureMap The allow failure map encoding which actions are allowed to fail.\\n /// @param failureMap The failure map encoding which actions have failed.\\n /// @param execResults The array with the results of the executed actions.\\n /// @dev The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce.\\n event Executed(\\n address indexed actor,\\n bytes32 callId,\\n Action[] actions,\\n uint256 allowFailureMap,\\n uint256 failureMap,\\n bytes[] execResults\\n );\\n\\n /// @notice Emitted when a standard callback is registered.\\n /// @param interfaceId The ID of the interface.\\n /// @param callbackSelector The selector of the callback function.\\n /// @param magicNumber The magic number to be registered for the callback function selector.\\n event StandardCallbackRegistered(\\n bytes4 interfaceId,\\n bytes4 callbackSelector,\\n bytes4 magicNumber\\n );\\n\\n /// @notice Deposits (native) tokens to the DAO contract with a reference string.\\n /// @param _token The address of the token or address(0) in case of the native token.\\n /// @param _amount The amount of tokens to deposit.\\n /// @param _reference The reference describing the deposit reason.\\n function deposit(address _token, uint256 _amount, string calldata _reference) external payable;\\n\\n /// @notice Emitted when a token deposit has been made to the DAO.\\n /// @param sender The address of the sender.\\n /// @param token The address of the deposited token.\\n /// @param amount The amount of tokens deposited.\\n /// @param _reference The reference describing the deposit reason.\\n event Deposited(\\n address indexed sender,\\n address indexed token,\\n uint256 amount,\\n string _reference\\n );\\n\\n /// @notice Emitted when a native token deposit has been made to the DAO.\\n /// @dev This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).\\n /// @param sender The address of the sender.\\n /// @param amount The amount of native tokens deposited.\\n event NativeTokenDeposited(address sender, uint256 amount);\\n\\n /// @notice Setter for the trusted forwarder verifying the meta transaction.\\n /// @param _trustedForwarder The trusted forwarder address.\\n function setTrustedForwarder(address _trustedForwarder) external;\\n\\n /// @notice Getter for the trusted forwarder verifying the meta transaction.\\n /// @return The trusted forwarder address.\\n function getTrustedForwarder() external view returns (address);\\n\\n /// @notice Emitted when a new TrustedForwarder is set on the DAO.\\n /// @param forwarder the new forwarder address.\\n event TrustedForwarderSet(address forwarder);\\n\\n /// @notice Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\\n /// @param _hash The hash of the data to be signed.\\n /// @param _signature The signature byte array associated with `_hash`.\\n /// @return Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not.\\n function isValidSignature(bytes32 _hash, bytes memory _signature) external returns (bytes4);\\n\\n /// @notice Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\\n /// @param _interfaceId The ID of the interface.\\n /// @param _callbackSelector The selector of the callback function.\\n /// @param _magicNumber The magic number to be registered for the function signature.\\n function registerStandardCallback(\\n bytes4 _interfaceId,\\n bytes4 _callbackSelector,\\n bytes4 _magicNumber\\n ) external;\\n\\n /// @notice Removed function being left here to not corrupt the IDAO interface ID. Any call will revert.\\n /// @dev Introduced in v1.0.0. Removed in v1.4.0.\\n function setSignatureValidator(address) external;\\n}\\n\",\"keccak256\":\"0xb7f615523c26de042edce98731c658f44a1edb2464387ac1b642c4c69f57128e\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"events":{"Deposited(address,address,uint256,string)":{"notice":"Emitted when a token deposit has been made to the DAO."},"Executed(address,bytes32,(address,uint256,bytes)[],uint256,uint256,bytes[])":{"notice":"Emitted when a proposal is executed."},"MetadataSet(bytes)":{"notice":"Emitted when the DAO metadata is updated."},"NativeTokenDeposited(address,uint256)":{"notice":"Emitted when a native token deposit has been made to the DAO."},"StandardCallbackRegistered(bytes4,bytes4,bytes4)":{"notice":"Emitted when a standard callback is registered."},"TrustedForwarderSet(address)":{"notice":"Emitted when a new TrustedForwarder is set on the DAO."}},"kind":"user","methods":{"deposit(address,uint256,string)":{"notice":"Deposits (native) tokens to the DAO contract with a reference string."},"execute(bytes32,(address,uint256,bytes)[],uint256)":{"notice":"Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted."},"getTrustedForwarder()":{"notice":"Getter for the trusted forwarder verifying the meta transaction."},"hasPermission(address,address,bytes32,bytes)":{"notice":"Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process."},"isValidSignature(bytes32,bytes)":{"notice":"Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271)."},"registerStandardCallback(bytes4,bytes4,bytes4)":{"notice":"Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature."},"setMetadata(bytes)":{"notice":"Updates the DAO metadata (e.g., an IPFS hash)."},"setSignatureValidator(address)":{"notice":"Removed function being left here to not corrupt the IDAO interface ID. Any call will revert."},"setTrustedForwarder(address)":{"notice":"Setter for the trusted forwarder verifying the meta transaction."}},"notice":"The interface required for DAOs within the Aragon App DAO framework.","version":1}}},"src/mocks/dao/DAOMock.sol":{"DAOMock":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"string","name":"_reference","type":"string"}],"name":"Deposited","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"actor","type":"address"},{"indexed":false,"internalType":"bytes32","name":"callId","type":"bytes32"},{"components":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"indexed":false,"internalType":"struct IDAO.Action[]","name":"actions","type":"tuple[]"},{"indexed":false,"internalType":"uint256","name":"allowFailureMap","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"failureMap","type":"uint256"},{"indexed":false,"internalType":"bytes[]","name":"execResults","type":"bytes[]"}],"name":"Executed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes","name":"metadata","type":"bytes"}],"name":"MetadataSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"NativeTokenDeposited","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes4","name":"interfaceId","type":"bytes4"},{"indexed":false,"internalType":"bytes4","name":"callbackSelector","type":"bytes4"},{"indexed":false,"internalType":"bytes4","name":"magicNumber","type":"bytes4"}],"name":"StandardCallbackRegistered","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"forwarder","type":"address"}],"name":"TrustedForwarderSet","type":"event"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"string","name":"_reference","type":"string"}],"name":"deposit","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"callId","type":"bytes32"},{"components":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct IDAO.Action[]","name":"_actions","type":"tuple[]"},{"internalType":"uint256","name":"allowFailureMap","type":"uint256"}],"name":"execute","outputs":[{"internalType":"bytes[]","name":"execResults","type":"bytes[]"},{"internalType":"uint256","name":"failureMap","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getTrustedForwarder","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_where","type":"address"},{"internalType":"address","name":"_who","type":"address"},{"internalType":"bytes32","name":"_permissionId","type":"bytes32"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"hasPermission","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hasPermissionReturnValueMock","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_hash","type":"bytes32"},{"internalType":"bytes","name":"_signature","type":"bytes"}],"name":"isValidSignature","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_interfaceId","type":"bytes4"},{"internalType":"bytes4","name":"_callbackSelector","type":"bytes4"},{"internalType":"bytes4","name":"_magicNumber","type":"bytes4"}],"name":"registerStandardCallback","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_hasPermissionReturnValueMock","type":"bool"}],"name":"setHasPermissionReturnValueMock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"_metadata","type":"bytes"}],"name":"setMetadata","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_signatureValidator","type":"address"}],"name":"setSignatureValidator","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_trustedForwarder","type":"address"}],"name":"setTrustedForwarder","outputs":[],"stateMutability":"pure","type":"function"}],"devdoc":{"details":"DO NOT USE IN PRODUCTION!","kind":"dev","methods":{"deposit(address,uint256,string)":{"params":{"_amount":"The amount of tokens to deposit.","_reference":"The reference describing the deposit reason.","_token":"The address of the token or address(0) in case of the native token."}},"getTrustedForwarder()":{"returns":{"_0":"The trusted forwarder address."}},"hasPermission(address,address,bytes32,bytes)":{"params":{"_data":"The optional data passed to the `PermissionCondition` registered.","_permissionId":"The permission identifier.","_where":"The address of the contract.","_who":"The address of a EOA or contract to give the permissions."},"returns":{"_0":"Returns true if the address has permission, false if not."}},"isValidSignature(bytes32,bytes)":{"params":{"_hash":"The hash of the data to be signed.","_signature":"The signature byte array associated with `_hash`."},"returns":{"_0":"Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not."}},"registerStandardCallback(bytes4,bytes4,bytes4)":{"params":{"_callbackSelector":"The selector of the callback function.","_interfaceId":"The ID of the interface.","_magicNumber":"The magic number to be registered for the function signature."}},"setMetadata(bytes)":{"params":{"_metadata":"The IPFS hash of the new metadata object."}},"setTrustedForwarder(address)":{"params":{"_trustedForwarder":"The trusted forwarder address."}}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b506108bc806100206000396000f3fe6080604052600436106100bc5760003560e01c8063c4a5014511610074578063da7422281161004e578063da74222814610144578063ee57e36f14610210578063fdef91061461022f57600080fd5b8063c4a50145146101a6578063c71bf324146101c6578063ce1b815f146101f457600080fd5b80633e2ab0d9116100a55780633e2ab0d91461014457806380e4cbe114610164578063bfe07da61461019257600080fd5b80630a1f41ca146100c15780631626ba7e146100f0575b600080fd5b3480156100cd57600080fd5b506000546100db9060ff1681565b60405190151581526020015b60405180910390f35b3480156100fc57600080fd5b5061011361010b36600461039a565b600092915050565b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020016100e7565b34801561015057600080fd5b5061016261015f36600461040a565b50565b005b34801561017057600080fd5b5061016261017f36600461042c565b6000805460ff1916911515919091179055565b6101626101a0366004610497565b50505050565b3480156101b257600080fd5b506101626101c1366004610521565b505050565b3480156101d257600080fd5b506101e66101e1366004610564565b610258565b6040516100e7929190610722565b34801561020057600080fd5b50604051600081526020016100e7565b34801561021c57600080fd5b5061016261022b366004610744565b5050565b34801561023b57600080fd5b506100db61024a366004610786565b60005460ff16949350505050565b606060003373ffffffffffffffffffffffffffffffffffffffff167fd4e57c2049f004fb297ef78591cd409503ceb6b2c722d7ffed032fc99e5f3b5886868685876040516102aa9594939291906107ee565b60405180910390a2935093915050565b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff811182821017156102f3576102f36102ba565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715610322576103226102ba565b604052919050565b600082601f83011261033b57600080fd5b813567ffffffffffffffff811115610355576103556102ba565b610368601f8201601f19166020016102f9565b81815284602083860101111561037d57600080fd5b816020850160208301376000918101602001919091529392505050565b600080604083850312156103ad57600080fd5b82359150602083013567ffffffffffffffff8111156103cb57600080fd5b6103d78582860161032a565b9150509250929050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461040557600080fd5b919050565b60006020828403121561041c57600080fd5b610425826103e1565b9392505050565b60006020828403121561043e57600080fd5b8135801515811461042557600080fd5b60008083601f84011261046057600080fd5b50813567ffffffffffffffff81111561047857600080fd5b60208301915083602082850101111561049057600080fd5b9250929050565b600080600080606085870312156104ad57600080fd5b6104b6856103e1565b935060208501359250604085013567ffffffffffffffff8111156104d957600080fd5b6104e58782880161044e565b95989497509550505050565b80357fffffffff000000000000000000000000000000000000000000000000000000008116811461040557600080fd5b60008060006060848603121561053657600080fd5b61053f846104f1565b925061054d602085016104f1565b915061055b604085016104f1565b90509250925092565b60008060006060848603121561057957600080fd5b8335925060208085013567ffffffffffffffff8082111561059957600080fd5b818701915087601f8301126105ad57600080fd5b8135818111156105bf576105bf6102ba565b8060051b6105ce8582016102f9565b918252838101850191858101908b8411156105e857600080fd5b86860192505b838310156106705782358581111561060557600080fd5b86016060818e03601f1901121561061b57600080fd5b6106236102d0565b61062e8983016103e1565b815260408201358982015260608201358781111561064c5760008081fd5b61065a8f8b8386010161032a565b60408301525083525091860191908601906105ee565b989b989a5050505060409690960135955050505050565b6000815180845260005b818110156106ad57602081850181015186830182015201610691565b506000602082860101526020601f19601f83011685010191505092915050565b600081518084526020808501808196508360051b8101915082860160005b85811015610715578284038952610703848351610687565b988501989350908401906001016106eb565b5091979650505050505050565b60408152600061073560408301856106cd565b90508260208301529392505050565b6000806020838503121561075757600080fd5b823567ffffffffffffffff81111561076e57600080fd5b61077a8582860161044e565b90969095509350505050565b6000806000806080858703121561079c57600080fd5b6107a5856103e1565b93506107b3602086016103e1565b925060408501359150606085013567ffffffffffffffff8111156107d657600080fd5b6107e28782880161032a565b91505092959194509250565b600060a08201878352602060a08185015281885180845260c08601915060c08160051b8701019350828a0160005b828110156108805787860360bf190184528151805173ffffffffffffffffffffffffffffffffffffffff168752858101518688015260409081015160609188018290529061086c81890183610687565b97505050928401929084019060010161081c565b505050505085604084015284606084015282810360808401526108a381856106cd565b9897505050505050505056fea164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x8BC DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xBC JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xC4A50145 GT PUSH2 0x74 JUMPI DUP1 PUSH4 0xDA742228 GT PUSH2 0x4E JUMPI DUP1 PUSH4 0xDA742228 EQ PUSH2 0x144 JUMPI DUP1 PUSH4 0xEE57E36F EQ PUSH2 0x210 JUMPI DUP1 PUSH4 0xFDEF9106 EQ PUSH2 0x22F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xC4A50145 EQ PUSH2 0x1A6 JUMPI DUP1 PUSH4 0xC71BF324 EQ PUSH2 0x1C6 JUMPI DUP1 PUSH4 0xCE1B815F EQ PUSH2 0x1F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x3E2AB0D9 GT PUSH2 0xA5 JUMPI DUP1 PUSH4 0x3E2AB0D9 EQ PUSH2 0x144 JUMPI DUP1 PUSH4 0x80E4CBE1 EQ PUSH2 0x164 JUMPI DUP1 PUSH4 0xBFE07DA6 EQ PUSH2 0x192 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xA1F41CA EQ PUSH2 0xC1 JUMPI DUP1 PUSH4 0x1626BA7E EQ PUSH2 0xF0 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xCD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 SLOAD PUSH2 0xDB SWAP1 PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xFC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x113 PUSH2 0x10B CALLDATASIZE PUSH1 0x4 PUSH2 0x39A JUMP JUMPDEST PUSH1 0x0 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xE7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x150 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x162 PUSH2 0x15F CALLDATASIZE PUSH1 0x4 PUSH2 0x40A JUMP JUMPDEST POP JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x170 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x162 PUSH2 0x17F CALLDATASIZE PUSH1 0x4 PUSH2 0x42C JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x162 PUSH2 0x1A0 CALLDATASIZE PUSH1 0x4 PUSH2 0x497 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x162 PUSH2 0x1C1 CALLDATASIZE PUSH1 0x4 PUSH2 0x521 JUMP JUMPDEST POP POP POP JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1E6 PUSH2 0x1E1 CALLDATASIZE PUSH1 0x4 PUSH2 0x564 JUMP JUMPDEST PUSH2 0x258 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xE7 SWAP3 SWAP2 SWAP1 PUSH2 0x722 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x200 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xE7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x21C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x162 PUSH2 0x22B CALLDATASIZE PUSH1 0x4 PUSH2 0x744 JUMP JUMPDEST POP POP JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x23B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xDB PUSH2 0x24A CALLDATASIZE PUSH1 0x4 PUSH2 0x786 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xFF AND SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xD4E57C2049F004FB297EF78591CD409503CEB6B2C722D7FFED032FC99E5F3B58 DUP7 DUP7 DUP7 DUP6 DUP8 PUSH1 0x40 MLOAD PUSH2 0x2AA SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x7EE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x60 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x2F3 JUMPI PUSH2 0x2F3 PUSH2 0x2BA JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x322 JUMPI PUSH2 0x322 PUSH2 0x2BA JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x33B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x355 JUMPI PUSH2 0x355 PUSH2 0x2BA JUMP JUMPDEST PUSH2 0x368 PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD PUSH2 0x2F9 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 PUSH1 0x20 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0x37D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP6 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 SWAP2 DUP2 ADD PUSH1 0x20 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3D7 DUP6 DUP3 DUP7 ADD PUSH2 0x32A JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x405 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x41C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x425 DUP3 PUSH2 0x3E1 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x43E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x425 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x460 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x478 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x490 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x60 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x4AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4B6 DUP6 PUSH2 0x3E1 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x4D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4E5 DUP8 DUP3 DUP9 ADD PUSH2 0x44E JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP6 POP POP POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x405 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x536 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x53F DUP5 PUSH2 0x4F1 JUMP JUMPDEST SWAP3 POP PUSH2 0x54D PUSH1 0x20 DUP6 ADD PUSH2 0x4F1 JUMP JUMPDEST SWAP2 POP PUSH2 0x55B PUSH1 0x40 DUP6 ADD PUSH2 0x4F1 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x579 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP1 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x599 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x5AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x5BF JUMPI PUSH2 0x5BF PUSH2 0x2BA JUMP JUMPDEST DUP1 PUSH1 0x5 SHL PUSH2 0x5CE DUP6 DUP3 ADD PUSH2 0x2F9 JUMP JUMPDEST SWAP2 DUP3 MSTORE DUP4 DUP2 ADD DUP6 ADD SWAP2 DUP6 DUP2 ADD SWAP1 DUP12 DUP5 GT ISZERO PUSH2 0x5E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 DUP7 ADD SWAP3 POP JUMPDEST DUP4 DUP4 LT ISZERO PUSH2 0x670 JUMPI DUP3 CALLDATALOAD DUP6 DUP2 GT ISZERO PUSH2 0x605 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 ADD PUSH1 0x60 DUP2 DUP15 SUB PUSH1 0x1F NOT ADD SLT ISZERO PUSH2 0x61B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x623 PUSH2 0x2D0 JUMP JUMPDEST PUSH2 0x62E DUP10 DUP4 ADD PUSH2 0x3E1 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x40 DUP3 ADD CALLDATALOAD DUP10 DUP3 ADD MSTORE PUSH1 0x60 DUP3 ADD CALLDATALOAD DUP8 DUP2 GT ISZERO PUSH2 0x64C JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST PUSH2 0x65A DUP16 DUP12 DUP4 DUP7 ADD ADD PUSH2 0x32A JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP DUP4 MSTORE POP SWAP2 DUP7 ADD SWAP2 SWAP1 DUP7 ADD SWAP1 PUSH2 0x5EE JUMP JUMPDEST SWAP9 SWAP12 SWAP9 SWAP11 POP POP POP POP PUSH1 0x40 SWAP7 SWAP1 SWAP7 ADD CALLDATALOAD SWAP6 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x6AD JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD DUP3 ADD MSTORE ADD PUSH2 0x691 JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x20 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x20 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD DUP1 DUP2 SWAP7 POP DUP4 PUSH1 0x5 SHL DUP2 ADD SWAP2 POP DUP3 DUP7 ADD PUSH1 0x0 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x715 JUMPI DUP3 DUP5 SUB DUP10 MSTORE PUSH2 0x703 DUP5 DUP4 MLOAD PUSH2 0x687 JUMP JUMPDEST SWAP9 DUP6 ADD SWAP9 SWAP4 POP SWAP1 DUP5 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x6EB JUMP JUMPDEST POP SWAP2 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 PUSH2 0x735 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x6CD JUMP JUMPDEST SWAP1 POP DUP3 PUSH1 0x20 DUP4 ADD MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x757 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x76E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x77A DUP6 DUP3 DUP7 ADD PUSH2 0x44E JUMP JUMPDEST SWAP1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x79C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7A5 DUP6 PUSH2 0x3E1 JUMP JUMPDEST SWAP4 POP PUSH2 0x7B3 PUSH1 0x20 DUP7 ADD PUSH2 0x3E1 JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x7D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7E2 DUP8 DUP3 DUP9 ADD PUSH2 0x32A JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA0 DUP3 ADD DUP8 DUP4 MSTORE PUSH1 0x20 PUSH1 0xA0 DUP2 DUP6 ADD MSTORE DUP2 DUP9 MLOAD DUP1 DUP5 MSTORE PUSH1 0xC0 DUP7 ADD SWAP2 POP PUSH1 0xC0 DUP2 PUSH1 0x5 SHL DUP8 ADD ADD SWAP4 POP DUP3 DUP11 ADD PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x880 JUMPI DUP8 DUP7 SUB PUSH1 0xBF NOT ADD DUP5 MSTORE DUP2 MLOAD DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP8 MSTORE DUP6 DUP2 ADD MLOAD DUP7 DUP9 ADD MSTORE PUSH1 0x40 SWAP1 DUP2 ADD MLOAD PUSH1 0x60 SWAP2 DUP9 ADD DUP3 SWAP1 MSTORE SWAP1 PUSH2 0x86C DUP2 DUP10 ADD DUP4 PUSH2 0x687 JUMP JUMPDEST SWAP8 POP POP POP SWAP3 DUP5 ADD SWAP3 SWAP1 DUP5 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x81C JUMP JUMPDEST POP POP POP POP POP DUP6 PUSH1 0x40 DUP5 ADD MSTORE DUP5 PUSH1 0x60 DUP5 ADD MSTORE DUP3 DUP2 SUB PUSH1 0x80 DUP5 ADD MSTORE PUSH2 0x8A3 DUP2 DUP6 PUSH2 0x6CD JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"208:1879:43:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@deposit_10983":{"entryPoint":null,"id":10983,"parameterSlots":4,"returnSlots":0},"@execute_10967":{"entryPoint":600,"id":10967,"parameterSlots":3,"returnSlots":2},"@getTrustedForwarder_10919":{"entryPoint":null,"id":10919,"parameterSlots":0,"returnSlots":1},"@hasPermissionReturnValueMock_10874":{"entryPoint":null,"id":10874,"parameterSlots":0,"returnSlots":0},"@hasPermission_10907":{"entryPoint":null,"id":10907,"parameterSlots":4,"returnSlots":1},"@isValidSignature_11010":{"entryPoint":null,"id":11010,"parameterSlots":2,"returnSlots":1},"@registerStandardCallback_11026":{"entryPoint":null,"id":11026,"parameterSlots":3,"returnSlots":0},"@setHasPermissionReturnValueMock_10884":{"entryPoint":null,"id":10884,"parameterSlots":1,"returnSlots":0},"@setMetadata_10939":{"entryPoint":null,"id":10939,"parameterSlots":2,"returnSlots":0},"@setSignatureValidator_10993":{"entryPoint":null,"id":10993,"parameterSlots":1,"returnSlots":0},"@setTrustedForwarder_10929":{"entryPoint":null,"id":10929,"parameterSlots":1,"returnSlots":0},"abi_decode_address":{"entryPoint":993,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_bytes":{"entryPoint":810,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_bytes4":{"entryPoint":1265,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_string_calldata":{"entryPoint":1102,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_address":{"entryPoint":1034,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_addresst_bytes32t_bytes_memory_ptr":{"entryPoint":1926,"id":null,"parameterSlots":2,"returnSlots":4},"abi_decode_tuple_t_addresst_uint256t_string_calldata_ptr":{"entryPoint":1175,"id":null,"parameterSlots":2,"returnSlots":4},"abi_decode_tuple_t_bool":{"entryPoint":1068,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes32t_array$_t_struct$_Action_$10724_memory_ptr_$dyn_memory_ptrt_uint256":{"entryPoint":1380,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_bytes32t_bytes_memory_ptr":{"entryPoint":922,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_bytes4t_bytes4t_bytes4":{"entryPoint":1313,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_bytes_calldata_ptr":{"entryPoint":1860,"id":null,"parameterSlots":2,"returnSlots":2},"abi_encode_array_bytes_dyn":{"entryPoint":1741,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_bytes":{"entryPoint":1671,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_t_uint256__to_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_t_uint256__fromStack_reversed":{"entryPoint":1826,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bytes32_t_array$_t_struct$_Action_$10724_memory_ptr_$dyn_memory_ptr_t_uint256_t_uint256_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__to_t_bytes32_t_array$_t_struct$_Action_$10724_memory_ptr_$dyn_memory_ptr_t_uint256_t_uint256_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__fromStack_reversed":{"entryPoint":2030,"id":null,"parameterSlots":6,"returnSlots":1},"abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"allocate_memory":{"entryPoint":761,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_memory_1655":{"entryPoint":720,"id":null,"parameterSlots":0,"returnSlots":1},"panic_error_0x41":{"entryPoint":698,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:10016:92","statements":[{"nodeType":"YulBlock","src":"6:3:92","statements":[]},{"body":{"nodeType":"YulBlock","src":"109:92:92","statements":[{"nodeType":"YulAssignment","src":"119:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"131:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"142:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"127:3:92"},"nodeType":"YulFunctionCall","src":"127:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"119:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"161:9:92"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"186:6:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"179:6:92"},"nodeType":"YulFunctionCall","src":"179:14:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"172:6:92"},"nodeType":"YulFunctionCall","src":"172:22:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"154:6:92"},"nodeType":"YulFunctionCall","src":"154:41:92"},"nodeType":"YulExpressionStatement","src":"154:41:92"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"78:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"89:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"100:4:92","type":""}],"src":"14:187:92"},{"body":{"nodeType":"YulBlock","src":"238:95:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"255:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"262:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"267:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"258:3:92"},"nodeType":"YulFunctionCall","src":"258:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"248:6:92"},"nodeType":"YulFunctionCall","src":"248:31:92"},"nodeType":"YulExpressionStatement","src":"248:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"295:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"298:4:92","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"288:6:92"},"nodeType":"YulFunctionCall","src":"288:15:92"},"nodeType":"YulExpressionStatement","src":"288:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"319:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"322:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"312:6:92"},"nodeType":"YulFunctionCall","src":"312:15:92"},"nodeType":"YulExpressionStatement","src":"312:15:92"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"206:127:92"},{"body":{"nodeType":"YulBlock","src":"384:205:92","statements":[{"nodeType":"YulAssignment","src":"394:19:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"410:2:92","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"404:5:92"},"nodeType":"YulFunctionCall","src":"404:9:92"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"394:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"422:33:92","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"444:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"452:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"440:3:92"},"nodeType":"YulFunctionCall","src":"440:15:92"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"426:10:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"530:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"532:16:92"},"nodeType":"YulFunctionCall","src":"532:18:92"},"nodeType":"YulExpressionStatement","src":"532:18:92"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"473:10:92"},{"kind":"number","nodeType":"YulLiteral","src":"485:18:92","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"470:2:92"},"nodeType":"YulFunctionCall","src":"470:34:92"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"509:10:92"},{"name":"memPtr","nodeType":"YulIdentifier","src":"521:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"506:2:92"},"nodeType":"YulFunctionCall","src":"506:22:92"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"467:2:92"},"nodeType":"YulFunctionCall","src":"467:62:92"},"nodeType":"YulIf","src":"464:88:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"568:2:92","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"572:10:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"561:6:92"},"nodeType":"YulFunctionCall","src":"561:22:92"},"nodeType":"YulExpressionStatement","src":"561:22:92"}]},"name":"allocate_memory_1655","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"373:6:92","type":""}],"src":"338:251:92"},{"body":{"nodeType":"YulBlock","src":"639:230:92","statements":[{"nodeType":"YulAssignment","src":"649:19:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"665:2:92","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"659:5:92"},"nodeType":"YulFunctionCall","src":"659:9:92"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"649:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"677:58:92","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"699:6:92"},{"arguments":[{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"715:4:92"},{"kind":"number","nodeType":"YulLiteral","src":"721:2:92","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"711:3:92"},"nodeType":"YulFunctionCall","src":"711:13:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"730:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"726:3:92"},"nodeType":"YulFunctionCall","src":"726:7:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"707:3:92"},"nodeType":"YulFunctionCall","src":"707:27:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"695:3:92"},"nodeType":"YulFunctionCall","src":"695:40:92"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"681:10:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"810:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"812:16:92"},"nodeType":"YulFunctionCall","src":"812:18:92"},"nodeType":"YulExpressionStatement","src":"812:18:92"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"753:10:92"},{"kind":"number","nodeType":"YulLiteral","src":"765:18:92","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"750:2:92"},"nodeType":"YulFunctionCall","src":"750:34:92"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"789:10:92"},{"name":"memPtr","nodeType":"YulIdentifier","src":"801:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"786:2:92"},"nodeType":"YulFunctionCall","src":"786:22:92"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"747:2:92"},"nodeType":"YulFunctionCall","src":"747:62:92"},"nodeType":"YulIf","src":"744:88:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"848:2:92","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"852:10:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"841:6:92"},"nodeType":"YulFunctionCall","src":"841:22:92"},"nodeType":"YulExpressionStatement","src":"841:22:92"}]},"name":"allocate_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"size","nodeType":"YulTypedName","src":"619:4:92","type":""}],"returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"628:6:92","type":""}],"src":"594:275:92"},{"body":{"nodeType":"YulBlock","src":"926:478:92","statements":[{"body":{"nodeType":"YulBlock","src":"975:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"984:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"987:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"977:6:92"},"nodeType":"YulFunctionCall","src":"977:12:92"},"nodeType":"YulExpressionStatement","src":"977:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"954:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"962:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"950:3:92"},"nodeType":"YulFunctionCall","src":"950:17:92"},{"name":"end","nodeType":"YulIdentifier","src":"969:3:92"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"946:3:92"},"nodeType":"YulFunctionCall","src":"946:27:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"939:6:92"},"nodeType":"YulFunctionCall","src":"939:35:92"},"nodeType":"YulIf","src":"936:55:92"},{"nodeType":"YulVariableDeclaration","src":"1000:30:92","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1023:6:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1010:12:92"},"nodeType":"YulFunctionCall","src":"1010:20:92"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"1004:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"1069:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"1071:16:92"},"nodeType":"YulFunctionCall","src":"1071:18:92"},"nodeType":"YulExpressionStatement","src":"1071:18:92"}]},"condition":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"1045:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"1049:18:92","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1042:2:92"},"nodeType":"YulFunctionCall","src":"1042:26:92"},"nodeType":"YulIf","src":"1039:52:92"},{"nodeType":"YulVariableDeclaration","src":"1100:70:92","value":{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"1143:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"1147:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1139:3:92"},"nodeType":"YulFunctionCall","src":"1139:13:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1158:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"1154:3:92"},"nodeType":"YulFunctionCall","src":"1154:7:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1135:3:92"},"nodeType":"YulFunctionCall","src":"1135:27:92"},{"kind":"number","nodeType":"YulLiteral","src":"1164:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1131:3:92"},"nodeType":"YulFunctionCall","src":"1131:38:92"}],"functionName":{"name":"allocate_memory","nodeType":"YulIdentifier","src":"1115:15:92"},"nodeType":"YulFunctionCall","src":"1115:55:92"},"variables":[{"name":"array_1","nodeType":"YulTypedName","src":"1104:7:92","type":""}]},{"expression":{"arguments":[{"name":"array_1","nodeType":"YulIdentifier","src":"1186:7:92"},{"name":"_1","nodeType":"YulIdentifier","src":"1195:2:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1179:6:92"},"nodeType":"YulFunctionCall","src":"1179:19:92"},"nodeType":"YulExpressionStatement","src":"1179:19:92"},{"body":{"nodeType":"YulBlock","src":"1246:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1255:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1258:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1248:6:92"},"nodeType":"YulFunctionCall","src":"1248:12:92"},"nodeType":"YulExpressionStatement","src":"1248:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1221:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"1229:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1217:3:92"},"nodeType":"YulFunctionCall","src":"1217:15:92"},{"kind":"number","nodeType":"YulLiteral","src":"1234:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1213:3:92"},"nodeType":"YulFunctionCall","src":"1213:26:92"},{"name":"end","nodeType":"YulIdentifier","src":"1241:3:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1210:2:92"},"nodeType":"YulFunctionCall","src":"1210:35:92"},"nodeType":"YulIf","src":"1207:55:92"},{"expression":{"arguments":[{"arguments":[{"name":"array_1","nodeType":"YulIdentifier","src":"1288:7:92"},{"kind":"number","nodeType":"YulLiteral","src":"1297:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1284:3:92"},"nodeType":"YulFunctionCall","src":"1284:18:92"},{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1308:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"1316:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1304:3:92"},"nodeType":"YulFunctionCall","src":"1304:17:92"},{"name":"_1","nodeType":"YulIdentifier","src":"1323:2:92"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"1271:12:92"},"nodeType":"YulFunctionCall","src":"1271:55:92"},"nodeType":"YulExpressionStatement","src":"1271:55:92"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"array_1","nodeType":"YulIdentifier","src":"1350:7:92"},{"name":"_1","nodeType":"YulIdentifier","src":"1359:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1346:3:92"},"nodeType":"YulFunctionCall","src":"1346:16:92"},{"kind":"number","nodeType":"YulLiteral","src":"1364:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1342:3:92"},"nodeType":"YulFunctionCall","src":"1342:27:92"},{"kind":"number","nodeType":"YulLiteral","src":"1371:1:92","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1335:6:92"},"nodeType":"YulFunctionCall","src":"1335:38:92"},"nodeType":"YulExpressionStatement","src":"1335:38:92"},{"nodeType":"YulAssignment","src":"1382:16:92","value":{"name":"array_1","nodeType":"YulIdentifier","src":"1391:7:92"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"1382:5:92"}]}]},"name":"abi_decode_bytes","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"900:6:92","type":""},{"name":"end","nodeType":"YulTypedName","src":"908:3:92","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"916:5:92","type":""}],"src":"874:530:92"},{"body":{"nodeType":"YulBlock","src":"1505:292:92","statements":[{"body":{"nodeType":"YulBlock","src":"1551:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1560:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1563:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1553:6:92"},"nodeType":"YulFunctionCall","src":"1553:12:92"},"nodeType":"YulExpressionStatement","src":"1553:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1526:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"1535:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1522:3:92"},"nodeType":"YulFunctionCall","src":"1522:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"1547:2:92","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1518:3:92"},"nodeType":"YulFunctionCall","src":"1518:32:92"},"nodeType":"YulIf","src":"1515:52:92"},{"nodeType":"YulAssignment","src":"1576:33:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1599:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1586:12:92"},"nodeType":"YulFunctionCall","src":"1586:23:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1576:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"1618:46:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1649:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1660:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1645:3:92"},"nodeType":"YulFunctionCall","src":"1645:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1632:12:92"},"nodeType":"YulFunctionCall","src":"1632:32:92"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1622:6:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"1707:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1716:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1719:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1709:6:92"},"nodeType":"YulFunctionCall","src":"1709:12:92"},"nodeType":"YulExpressionStatement","src":"1709:12:92"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1679:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"1687:18:92","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1676:2:92"},"nodeType":"YulFunctionCall","src":"1676:30:92"},"nodeType":"YulIf","src":"1673:50:92"},{"nodeType":"YulAssignment","src":"1732:59:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1763:9:92"},{"name":"offset","nodeType":"YulIdentifier","src":"1774:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1759:3:92"},"nodeType":"YulFunctionCall","src":"1759:22:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1783:7:92"}],"functionName":{"name":"abi_decode_bytes","nodeType":"YulIdentifier","src":"1742:16:92"},"nodeType":"YulFunctionCall","src":"1742:49:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1732:6:92"}]}]},"name":"abi_decode_tuple_t_bytes32t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1463:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1474:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1486:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1494:6:92","type":""}],"src":"1409:388:92"},{"body":{"nodeType":"YulBlock","src":"1901:103:92","statements":[{"nodeType":"YulAssignment","src":"1911:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1923:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1934:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1919:3:92"},"nodeType":"YulFunctionCall","src":"1919:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1911:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1953:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1968:6:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1980:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"1985:10:92","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1976:3:92"},"nodeType":"YulFunctionCall","src":"1976:20:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1964:3:92"},"nodeType":"YulFunctionCall","src":"1964:33:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1946:6:92"},"nodeType":"YulFunctionCall","src":"1946:52:92"},"nodeType":"YulExpressionStatement","src":"1946:52:92"}]},"name":"abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1870:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1881:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1892:4:92","type":""}],"src":"1802:202:92"},{"body":{"nodeType":"YulBlock","src":"2058:147:92","statements":[{"nodeType":"YulAssignment","src":"2068:29:92","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"2090:6:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2077:12:92"},"nodeType":"YulFunctionCall","src":"2077:20:92"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"2068:5:92"}]},{"body":{"nodeType":"YulBlock","src":"2183:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2192:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2195:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2185:6:92"},"nodeType":"YulFunctionCall","src":"2185:12:92"},"nodeType":"YulExpressionStatement","src":"2185:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2119:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2130:5:92"},{"kind":"number","nodeType":"YulLiteral","src":"2137:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2126:3:92"},"nodeType":"YulFunctionCall","src":"2126:54:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"2116:2:92"},"nodeType":"YulFunctionCall","src":"2116:65:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2109:6:92"},"nodeType":"YulFunctionCall","src":"2109:73:92"},"nodeType":"YulIf","src":"2106:93:92"}]},"name":"abi_decode_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"2037:6:92","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"2048:5:92","type":""}],"src":"2009:196:92"},{"body":{"nodeType":"YulBlock","src":"2280:116:92","statements":[{"body":{"nodeType":"YulBlock","src":"2326:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2335:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2338:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2328:6:92"},"nodeType":"YulFunctionCall","src":"2328:12:92"},"nodeType":"YulExpressionStatement","src":"2328:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2301:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"2310:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2297:3:92"},"nodeType":"YulFunctionCall","src":"2297:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"2322:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2293:3:92"},"nodeType":"YulFunctionCall","src":"2293:32:92"},"nodeType":"YulIf","src":"2290:52:92"},{"nodeType":"YulAssignment","src":"2351:39:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2380:9:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"2361:18:92"},"nodeType":"YulFunctionCall","src":"2361:29:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2351:6:92"}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2246:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2257:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2269:6:92","type":""}],"src":"2210:186:92"},{"body":{"nodeType":"YulBlock","src":"2468:206:92","statements":[{"body":{"nodeType":"YulBlock","src":"2514:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2523:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2526:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2516:6:92"},"nodeType":"YulFunctionCall","src":"2516:12:92"},"nodeType":"YulExpressionStatement","src":"2516:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2489:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"2498:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2485:3:92"},"nodeType":"YulFunctionCall","src":"2485:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"2510:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2481:3:92"},"nodeType":"YulFunctionCall","src":"2481:32:92"},"nodeType":"YulIf","src":"2478:52:92"},{"nodeType":"YulVariableDeclaration","src":"2539:36:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2565:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2552:12:92"},"nodeType":"YulFunctionCall","src":"2552:23:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"2543:5:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"2628:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2637:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2640:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2630:6:92"},"nodeType":"YulFunctionCall","src":"2630:12:92"},"nodeType":"YulExpressionStatement","src":"2630:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2597:5:92"},{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2618:5:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2611:6:92"},"nodeType":"YulFunctionCall","src":"2611:13:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2604:6:92"},"nodeType":"YulFunctionCall","src":"2604:21:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"2594:2:92"},"nodeType":"YulFunctionCall","src":"2594:32:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2587:6:92"},"nodeType":"YulFunctionCall","src":"2587:40:92"},"nodeType":"YulIf","src":"2584:60:92"},{"nodeType":"YulAssignment","src":"2653:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"2663:5:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2653:6:92"}]}]},"name":"abi_decode_tuple_t_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2434:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2445:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2457:6:92","type":""}],"src":"2401:273:92"},{"body":{"nodeType":"YulBlock","src":"2752:275:92","statements":[{"body":{"nodeType":"YulBlock","src":"2801:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2810:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2813:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2803:6:92"},"nodeType":"YulFunctionCall","src":"2803:12:92"},"nodeType":"YulExpressionStatement","src":"2803:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"2780:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"2788:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2776:3:92"},"nodeType":"YulFunctionCall","src":"2776:17:92"},{"name":"end","nodeType":"YulIdentifier","src":"2795:3:92"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2772:3:92"},"nodeType":"YulFunctionCall","src":"2772:27:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2765:6:92"},"nodeType":"YulFunctionCall","src":"2765:35:92"},"nodeType":"YulIf","src":"2762:55:92"},{"nodeType":"YulAssignment","src":"2826:30:92","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"2849:6:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2836:12:92"},"nodeType":"YulFunctionCall","src":"2836:20:92"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"2826:6:92"}]},{"body":{"nodeType":"YulBlock","src":"2899:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2908:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2911:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2901:6:92"},"nodeType":"YulFunctionCall","src":"2901:12:92"},"nodeType":"YulExpressionStatement","src":"2901:12:92"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"2871:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"2879:18:92","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2868:2:92"},"nodeType":"YulFunctionCall","src":"2868:30:92"},"nodeType":"YulIf","src":"2865:50:92"},{"nodeType":"YulAssignment","src":"2924:29:92","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"2940:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"2948:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2936:3:92"},"nodeType":"YulFunctionCall","src":"2936:17:92"},"variableNames":[{"name":"arrayPos","nodeType":"YulIdentifier","src":"2924:8:92"}]},{"body":{"nodeType":"YulBlock","src":"3005:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3014:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3017:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3007:6:92"},"nodeType":"YulFunctionCall","src":"3007:12:92"},"nodeType":"YulExpressionStatement","src":"3007:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"2976:6:92"},{"name":"length","nodeType":"YulIdentifier","src":"2984:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2972:3:92"},"nodeType":"YulFunctionCall","src":"2972:19:92"},{"kind":"number","nodeType":"YulLiteral","src":"2993:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2968:3:92"},"nodeType":"YulFunctionCall","src":"2968:30:92"},{"name":"end","nodeType":"YulIdentifier","src":"3000:3:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2965:2:92"},"nodeType":"YulFunctionCall","src":"2965:39:92"},"nodeType":"YulIf","src":"2962:59:92"}]},"name":"abi_decode_string_calldata","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"2715:6:92","type":""},{"name":"end","nodeType":"YulTypedName","src":"2723:3:92","type":""}],"returnVariables":[{"name":"arrayPos","nodeType":"YulTypedName","src":"2731:8:92","type":""},{"name":"length","nodeType":"YulTypedName","src":"2741:6:92","type":""}],"src":"2679:348:92"},{"body":{"nodeType":"YulBlock","src":"3156:429:92","statements":[{"body":{"nodeType":"YulBlock","src":"3202:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3211:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3214:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3204:6:92"},"nodeType":"YulFunctionCall","src":"3204:12:92"},"nodeType":"YulExpressionStatement","src":"3204:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3177:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"3186:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3173:3:92"},"nodeType":"YulFunctionCall","src":"3173:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"3198:2:92","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3169:3:92"},"nodeType":"YulFunctionCall","src":"3169:32:92"},"nodeType":"YulIf","src":"3166:52:92"},{"nodeType":"YulAssignment","src":"3227:39:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3256:9:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"3237:18:92"},"nodeType":"YulFunctionCall","src":"3237:29:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3227:6:92"}]},{"nodeType":"YulAssignment","src":"3275:42:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3302:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3313:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3298:3:92"},"nodeType":"YulFunctionCall","src":"3298:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3285:12:92"},"nodeType":"YulFunctionCall","src":"3285:32:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"3275:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"3326:46:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3357:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3368:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3353:3:92"},"nodeType":"YulFunctionCall","src":"3353:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3340:12:92"},"nodeType":"YulFunctionCall","src":"3340:32:92"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"3330:6:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"3415:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3424:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3427:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3417:6:92"},"nodeType":"YulFunctionCall","src":"3417:12:92"},"nodeType":"YulExpressionStatement","src":"3417:12:92"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"3387:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"3395:18:92","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3384:2:92"},"nodeType":"YulFunctionCall","src":"3384:30:92"},"nodeType":"YulIf","src":"3381:50:92"},{"nodeType":"YulVariableDeclaration","src":"3440:85:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3497:9:92"},{"name":"offset","nodeType":"YulIdentifier","src":"3508:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3493:3:92"},"nodeType":"YulFunctionCall","src":"3493:22:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3517:7:92"}],"functionName":{"name":"abi_decode_string_calldata","nodeType":"YulIdentifier","src":"3466:26:92"},"nodeType":"YulFunctionCall","src":"3466:59:92"},"variables":[{"name":"value2_1","nodeType":"YulTypedName","src":"3444:8:92","type":""},{"name":"value3_1","nodeType":"YulTypedName","src":"3454:8:92","type":""}]},{"nodeType":"YulAssignment","src":"3534:18:92","value":{"name":"value2_1","nodeType":"YulIdentifier","src":"3544:8:92"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"3534:6:92"}]},{"nodeType":"YulAssignment","src":"3561:18:92","value":{"name":"value3_1","nodeType":"YulIdentifier","src":"3571:8:92"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"3561:6:92"}]}]},"name":"abi_decode_tuple_t_addresst_uint256t_string_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3098:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3109:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3121:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"3129:6:92","type":""},{"name":"value2","nodeType":"YulTypedName","src":"3137:6:92","type":""},{"name":"value3","nodeType":"YulTypedName","src":"3145:6:92","type":""}],"src":"3032:553:92"},{"body":{"nodeType":"YulBlock","src":"3638:125:92","statements":[{"nodeType":"YulAssignment","src":"3648:29:92","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"3670:6:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3657:12:92"},"nodeType":"YulFunctionCall","src":"3657:20:92"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"3648:5:92"}]},{"body":{"nodeType":"YulBlock","src":"3741:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3750:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3753:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3743:6:92"},"nodeType":"YulFunctionCall","src":"3743:12:92"},"nodeType":"YulExpressionStatement","src":"3743:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3699:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3710:5:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3721:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"3726:10:92","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"3717:3:92"},"nodeType":"YulFunctionCall","src":"3717:20:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3706:3:92"},"nodeType":"YulFunctionCall","src":"3706:32:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"3696:2:92"},"nodeType":"YulFunctionCall","src":"3696:43:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3689:6:92"},"nodeType":"YulFunctionCall","src":"3689:51:92"},"nodeType":"YulIf","src":"3686:71:92"}]},"name":"abi_decode_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"3617:6:92","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"3628:5:92","type":""}],"src":"3590:173:92"},{"body":{"nodeType":"YulBlock","src":"3869:227:92","statements":[{"body":{"nodeType":"YulBlock","src":"3915:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3924:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3927:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3917:6:92"},"nodeType":"YulFunctionCall","src":"3917:12:92"},"nodeType":"YulExpressionStatement","src":"3917:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3890:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"3899:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3886:3:92"},"nodeType":"YulFunctionCall","src":"3886:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"3911:2:92","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3882:3:92"},"nodeType":"YulFunctionCall","src":"3882:32:92"},"nodeType":"YulIf","src":"3879:52:92"},{"nodeType":"YulAssignment","src":"3940:38:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3968:9:92"}],"functionName":{"name":"abi_decode_bytes4","nodeType":"YulIdentifier","src":"3950:17:92"},"nodeType":"YulFunctionCall","src":"3950:28:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3940:6:92"}]},{"nodeType":"YulAssignment","src":"3987:47:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4019:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4030:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4015:3:92"},"nodeType":"YulFunctionCall","src":"4015:18:92"}],"functionName":{"name":"abi_decode_bytes4","nodeType":"YulIdentifier","src":"3997:17:92"},"nodeType":"YulFunctionCall","src":"3997:37:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"3987:6:92"}]},{"nodeType":"YulAssignment","src":"4043:47:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4075:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4086:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4071:3:92"},"nodeType":"YulFunctionCall","src":"4071:18:92"}],"functionName":{"name":"abi_decode_bytes4","nodeType":"YulIdentifier","src":"4053:17:92"},"nodeType":"YulFunctionCall","src":"4053:37:92"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"4043:6:92"}]}]},"name":"abi_decode_tuple_t_bytes4t_bytes4t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3819:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3830:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3842:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"3850:6:92","type":""},{"name":"value2","nodeType":"YulTypedName","src":"3858:6:92","type":""}],"src":"3768:328:92"},{"body":{"nodeType":"YulBlock","src":"4255:1589:92","statements":[{"body":{"nodeType":"YulBlock","src":"4301:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4310:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4313:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4303:6:92"},"nodeType":"YulFunctionCall","src":"4303:12:92"},"nodeType":"YulExpressionStatement","src":"4303:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"4276:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"4285:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4272:3:92"},"nodeType":"YulFunctionCall","src":"4272:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"4297:2:92","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4268:3:92"},"nodeType":"YulFunctionCall","src":"4268:32:92"},"nodeType":"YulIf","src":"4265:52:92"},{"nodeType":"YulAssignment","src":"4326:33:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4349:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4336:12:92"},"nodeType":"YulFunctionCall","src":"4336:23:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"4326:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"4368:12:92","value":{"kind":"number","nodeType":"YulLiteral","src":"4378:2:92","type":"","value":"32"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"4372:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4389:46:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4420:9:92"},{"name":"_1","nodeType":"YulIdentifier","src":"4431:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4416:3:92"},"nodeType":"YulFunctionCall","src":"4416:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4403:12:92"},"nodeType":"YulFunctionCall","src":"4403:32:92"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4393:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4444:28:92","value":{"kind":"number","nodeType":"YulLiteral","src":"4454:18:92","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"4448:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"4499:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4508:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4511:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4501:6:92"},"nodeType":"YulFunctionCall","src":"4501:12:92"},"nodeType":"YulExpressionStatement","src":"4501:12:92"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"4487:6:92"},{"name":"_2","nodeType":"YulIdentifier","src":"4495:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4484:2:92"},"nodeType":"YulFunctionCall","src":"4484:14:92"},"nodeType":"YulIf","src":"4481:34:92"},{"nodeType":"YulVariableDeclaration","src":"4524:32:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4538:9:92"},{"name":"offset","nodeType":"YulIdentifier","src":"4549:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4534:3:92"},"nodeType":"YulFunctionCall","src":"4534:22:92"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"4528:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"4604:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4613:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4616:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4606:6:92"},"nodeType":"YulFunctionCall","src":"4606:12:92"},"nodeType":"YulExpressionStatement","src":"4606:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"4583:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"4587:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4579:3:92"},"nodeType":"YulFunctionCall","src":"4579:13:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4594:7:92"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4575:3:92"},"nodeType":"YulFunctionCall","src":"4575:27:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"4568:6:92"},"nodeType":"YulFunctionCall","src":"4568:35:92"},"nodeType":"YulIf","src":"4565:55:92"},{"nodeType":"YulVariableDeclaration","src":"4629:26:92","value":{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"4652:2:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4639:12:92"},"nodeType":"YulFunctionCall","src":"4639:16:92"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"4633:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"4678:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"4680:16:92"},"nodeType":"YulFunctionCall","src":"4680:18:92"},"nodeType":"YulExpressionStatement","src":"4680:18:92"}]},"condition":{"arguments":[{"name":"_4","nodeType":"YulIdentifier","src":"4670:2:92"},{"name":"_2","nodeType":"YulIdentifier","src":"4674:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4667:2:92"},"nodeType":"YulFunctionCall","src":"4667:10:92"},"nodeType":"YulIf","src":"4664:36:92"},{"nodeType":"YulVariableDeclaration","src":"4709:20:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4723:1:92","type":"","value":"5"},{"name":"_4","nodeType":"YulIdentifier","src":"4726:2:92"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"4719:3:92"},"nodeType":"YulFunctionCall","src":"4719:10:92"},"variables":[{"name":"_5","nodeType":"YulTypedName","src":"4713:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4738:39:92","value":{"arguments":[{"arguments":[{"name":"_5","nodeType":"YulIdentifier","src":"4769:2:92"},{"name":"_1","nodeType":"YulIdentifier","src":"4773:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4765:3:92"},"nodeType":"YulFunctionCall","src":"4765:11:92"}],"functionName":{"name":"allocate_memory","nodeType":"YulIdentifier","src":"4749:15:92"},"nodeType":"YulFunctionCall","src":"4749:28:92"},"variables":[{"name":"dst","nodeType":"YulTypedName","src":"4742:3:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4786:16:92","value":{"name":"dst","nodeType":"YulIdentifier","src":"4799:3:92"},"variables":[{"name":"dst_1","nodeType":"YulTypedName","src":"4790:5:92","type":""}]},{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"4818:3:92"},{"name":"_4","nodeType":"YulIdentifier","src":"4823:2:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4811:6:92"},"nodeType":"YulFunctionCall","src":"4811:15:92"},"nodeType":"YulExpressionStatement","src":"4811:15:92"},{"nodeType":"YulAssignment","src":"4835:19:92","value":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"4846:3:92"},{"name":"_1","nodeType":"YulIdentifier","src":"4851:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4842:3:92"},"nodeType":"YulFunctionCall","src":"4842:12:92"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"4835:3:92"}]},{"nodeType":"YulVariableDeclaration","src":"4863:34:92","value":{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"4885:2:92"},{"name":"_5","nodeType":"YulIdentifier","src":"4889:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4881:3:92"},"nodeType":"YulFunctionCall","src":"4881:11:92"},{"name":"_1","nodeType":"YulIdentifier","src":"4894:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4877:3:92"},"nodeType":"YulFunctionCall","src":"4877:20:92"},"variables":[{"name":"srcEnd","nodeType":"YulTypedName","src":"4867:6:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"4929:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4938:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4941:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4931:6:92"},"nodeType":"YulFunctionCall","src":"4931:12:92"},"nodeType":"YulExpressionStatement","src":"4931:12:92"}]},"condition":{"arguments":[{"name":"srcEnd","nodeType":"YulIdentifier","src":"4912:6:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4920:7:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4909:2:92"},"nodeType":"YulFunctionCall","src":"4909:19:92"},"nodeType":"YulIf","src":"4906:39:92"},{"nodeType":"YulVariableDeclaration","src":"4954:22:92","value":{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"4969:2:92"},{"name":"_1","nodeType":"YulIdentifier","src":"4973:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4965:3:92"},"nodeType":"YulFunctionCall","src":"4965:11:92"},"variables":[{"name":"src","nodeType":"YulTypedName","src":"4958:3:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"5041:722:92","statements":[{"nodeType":"YulVariableDeclaration","src":"5055:36:92","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"5087:3:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"5074:12:92"},"nodeType":"YulFunctionCall","src":"5074:17:92"},"variables":[{"name":"innerOffset","nodeType":"YulTypedName","src":"5059:11:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"5127:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5136:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5139:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5129:6:92"},"nodeType":"YulFunctionCall","src":"5129:12:92"},"nodeType":"YulExpressionStatement","src":"5129:12:92"}]},"condition":{"arguments":[{"name":"innerOffset","nodeType":"YulIdentifier","src":"5110:11:92"},{"name":"_2","nodeType":"YulIdentifier","src":"5123:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5107:2:92"},"nodeType":"YulFunctionCall","src":"5107:19:92"},"nodeType":"YulIf","src":"5104:39:92"},{"nodeType":"YulVariableDeclaration","src":"5156:30:92","value":{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"5170:2:92"},{"name":"innerOffset","nodeType":"YulIdentifier","src":"5174:11:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5166:3:92"},"nodeType":"YulFunctionCall","src":"5166:20:92"},"variables":[{"name":"_6","nodeType":"YulTypedName","src":"5160:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"5242:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5251:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5254:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5244:6:92"},"nodeType":"YulFunctionCall","src":"5244:12:92"},"nodeType":"YulExpressionStatement","src":"5244:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"5214:7:92"},{"name":"_6","nodeType":"YulIdentifier","src":"5223:2:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5210:3:92"},"nodeType":"YulFunctionCall","src":"5210:16:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5232:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"5228:3:92"},"nodeType":"YulFunctionCall","src":"5228:7:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5206:3:92"},"nodeType":"YulFunctionCall","src":"5206:30:92"},{"kind":"number","nodeType":"YulLiteral","src":"5238:2:92","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"5202:3:92"},"nodeType":"YulFunctionCall","src":"5202:39:92"},"nodeType":"YulIf","src":"5199:59:92"},{"nodeType":"YulVariableDeclaration","src":"5271:35:92","value":{"arguments":[],"functionName":{"name":"allocate_memory_1655","nodeType":"YulIdentifier","src":"5284:20:92"},"nodeType":"YulFunctionCall","src":"5284:22:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"5275:5:92","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5326:5:92"},{"arguments":[{"arguments":[{"name":"_6","nodeType":"YulIdentifier","src":"5356:2:92"},{"name":"_1","nodeType":"YulIdentifier","src":"5360:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5352:3:92"},"nodeType":"YulFunctionCall","src":"5352:11:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"5333:18:92"},"nodeType":"YulFunctionCall","src":"5333:31:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5319:6:92"},"nodeType":"YulFunctionCall","src":"5319:46:92"},"nodeType":"YulExpressionStatement","src":"5319:46:92"},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5389:5:92"},{"name":"_1","nodeType":"YulIdentifier","src":"5396:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5385:3:92"},"nodeType":"YulFunctionCall","src":"5385:14:92"},{"arguments":[{"arguments":[{"name":"_6","nodeType":"YulIdentifier","src":"5418:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"5422:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5414:3:92"},"nodeType":"YulFunctionCall","src":"5414:11:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"5401:12:92"},"nodeType":"YulFunctionCall","src":"5401:25:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5378:6:92"},"nodeType":"YulFunctionCall","src":"5378:49:92"},"nodeType":"YulExpressionStatement","src":"5378:49:92"},{"nodeType":"YulVariableDeclaration","src":"5440:41:92","value":{"arguments":[{"arguments":[{"name":"_6","nodeType":"YulIdentifier","src":"5473:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"5477:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5469:3:92"},"nodeType":"YulFunctionCall","src":"5469:11:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"5456:12:92"},"nodeType":"YulFunctionCall","src":"5456:25:92"},"variables":[{"name":"offset_1","nodeType":"YulTypedName","src":"5444:8:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"5526:74:92","statements":[{"nodeType":"YulVariableDeclaration","src":"5544:11:92","value":{"kind":"number","nodeType":"YulLiteral","src":"5554:1:92","type":"","value":"0"},"variables":[{"name":"_7","nodeType":"YulTypedName","src":"5548:2:92","type":""}]},{"expression":{"arguments":[{"name":"_7","nodeType":"YulIdentifier","src":"5579:2:92"},{"name":"_7","nodeType":"YulIdentifier","src":"5583:2:92"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5572:6:92"},"nodeType":"YulFunctionCall","src":"5572:14:92"},"nodeType":"YulExpressionStatement","src":"5572:14:92"}]},"condition":{"arguments":[{"name":"offset_1","nodeType":"YulIdentifier","src":"5500:8:92"},{"name":"_2","nodeType":"YulIdentifier","src":"5510:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5497:2:92"},"nodeType":"YulFunctionCall","src":"5497:16:92"},"nodeType":"YulIf","src":"5494:106:92"},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5624:5:92"},{"kind":"number","nodeType":"YulLiteral","src":"5631:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5620:3:92"},"nodeType":"YulFunctionCall","src":"5620:14:92"},{"arguments":[{"arguments":[{"arguments":[{"name":"_6","nodeType":"YulIdentifier","src":"5661:2:92"},{"name":"offset_1","nodeType":"YulIdentifier","src":"5665:8:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5657:3:92"},"nodeType":"YulFunctionCall","src":"5657:17:92"},{"name":"_1","nodeType":"YulIdentifier","src":"5676:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5653:3:92"},"nodeType":"YulFunctionCall","src":"5653:26:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"5681:7:92"}],"functionName":{"name":"abi_decode_bytes","nodeType":"YulIdentifier","src":"5636:16:92"},"nodeType":"YulFunctionCall","src":"5636:53:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5613:6:92"},"nodeType":"YulFunctionCall","src":"5613:77:92"},"nodeType":"YulExpressionStatement","src":"5613:77:92"},{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"5710:3:92"},{"name":"value","nodeType":"YulIdentifier","src":"5715:5:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5703:6:92"},"nodeType":"YulFunctionCall","src":"5703:18:92"},"nodeType":"YulExpressionStatement","src":"5703:18:92"},{"nodeType":"YulAssignment","src":"5734:19:92","value":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"5745:3:92"},{"name":"_1","nodeType":"YulIdentifier","src":"5750:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5741:3:92"},"nodeType":"YulFunctionCall","src":"5741:12:92"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"5734:3:92"}]}]},"condition":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"4996:3:92"},{"name":"srcEnd","nodeType":"YulIdentifier","src":"5001:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"4993:2:92"},"nodeType":"YulFunctionCall","src":"4993:15:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"5009:23:92","statements":[{"nodeType":"YulAssignment","src":"5011:19:92","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"5022:3:92"},{"name":"_1","nodeType":"YulIdentifier","src":"5027:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5018:3:92"},"nodeType":"YulFunctionCall","src":"5018:12:92"},"variableNames":[{"name":"src","nodeType":"YulIdentifier","src":"5011:3:92"}]}]},"pre":{"nodeType":"YulBlock","src":"4989:3:92","statements":[]},"src":"4985:778:92"},{"nodeType":"YulAssignment","src":"5772:15:92","value":{"name":"dst_1","nodeType":"YulIdentifier","src":"5782:5:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"5772:6:92"}]},{"nodeType":"YulAssignment","src":"5796:42:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5823:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5834:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5819:3:92"},"nodeType":"YulFunctionCall","src":"5819:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"5806:12:92"},"nodeType":"YulFunctionCall","src":"5806:32:92"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"5796:6:92"}]}]},"name":"abi_decode_tuple_t_bytes32t_array$_t_struct$_Action_$10724_memory_ptr_$dyn_memory_ptrt_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4205:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"4216:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"4228:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"4236:6:92","type":""},{"name":"value2","nodeType":"YulTypedName","src":"4244:6:92","type":""}],"src":"4101:1743:92"},{"body":{"nodeType":"YulBlock","src":"5898:373:92","statements":[{"nodeType":"YulVariableDeclaration","src":"5908:26:92","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5928:5:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5922:5:92"},"nodeType":"YulFunctionCall","src":"5922:12:92"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"5912:6:92","type":""}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5950:3:92"},{"name":"length","nodeType":"YulIdentifier","src":"5955:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5943:6:92"},"nodeType":"YulFunctionCall","src":"5943:19:92"},"nodeType":"YulExpressionStatement","src":"5943:19:92"},{"nodeType":"YulVariableDeclaration","src":"5971:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"5980:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"5975:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"6042:110:92","statements":[{"nodeType":"YulVariableDeclaration","src":"6056:14:92","value":{"kind":"number","nodeType":"YulLiteral","src":"6066:4:92","type":"","value":"0x20"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"6060:2:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6098:3:92"},{"name":"i","nodeType":"YulIdentifier","src":"6103:1:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6094:3:92"},"nodeType":"YulFunctionCall","src":"6094:11:92"},{"name":"_1","nodeType":"YulIdentifier","src":"6107:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6090:3:92"},"nodeType":"YulFunctionCall","src":"6090:20:92"},{"arguments":[{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6126:5:92"},{"name":"i","nodeType":"YulIdentifier","src":"6133:1:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6122:3:92"},"nodeType":"YulFunctionCall","src":"6122:13:92"},{"name":"_1","nodeType":"YulIdentifier","src":"6137:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6118:3:92"},"nodeType":"YulFunctionCall","src":"6118:22:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6112:5:92"},"nodeType":"YulFunctionCall","src":"6112:29:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6083:6:92"},"nodeType":"YulFunctionCall","src":"6083:59:92"},"nodeType":"YulExpressionStatement","src":"6083:59:92"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"6001:1:92"},{"name":"length","nodeType":"YulIdentifier","src":"6004:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"5998:2:92"},"nodeType":"YulFunctionCall","src":"5998:13:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"6012:21:92","statements":[{"nodeType":"YulAssignment","src":"6014:17:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"6023:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"6026:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6019:3:92"},"nodeType":"YulFunctionCall","src":"6019:12:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"6014:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"5994:3:92","statements":[]},"src":"5990:162:92"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6176:3:92"},{"name":"length","nodeType":"YulIdentifier","src":"6181:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6172:3:92"},"nodeType":"YulFunctionCall","src":"6172:16:92"},{"kind":"number","nodeType":"YulLiteral","src":"6190:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6168:3:92"},"nodeType":"YulFunctionCall","src":"6168:27:92"},{"kind":"number","nodeType":"YulLiteral","src":"6197:1:92","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6161:6:92"},"nodeType":"YulFunctionCall","src":"6161:38:92"},"nodeType":"YulExpressionStatement","src":"6161:38:92"},{"nodeType":"YulAssignment","src":"6208:57:92","value":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6223:3:92"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"6236:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"6244:2:92","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6232:3:92"},"nodeType":"YulFunctionCall","src":"6232:15:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6253:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"6249:3:92"},"nodeType":"YulFunctionCall","src":"6249:7:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"6228:3:92"},"nodeType":"YulFunctionCall","src":"6228:29:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6219:3:92"},"nodeType":"YulFunctionCall","src":"6219:39:92"},{"kind":"number","nodeType":"YulLiteral","src":"6260:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6215:3:92"},"nodeType":"YulFunctionCall","src":"6215:50:92"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"6208:3:92"}]}]},"name":"abi_encode_bytes","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"5875:5:92","type":""},{"name":"pos","nodeType":"YulTypedName","src":"5882:3:92","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"5890:3:92","type":""}],"src":"5849:422:92"},{"body":{"nodeType":"YulBlock","src":"6335:555:92","statements":[{"nodeType":"YulVariableDeclaration","src":"6345:26:92","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6365:5:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6359:5:92"},"nodeType":"YulFunctionCall","src":"6359:12:92"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"6349:6:92","type":""}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6387:3:92"},{"name":"length","nodeType":"YulIdentifier","src":"6392:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6380:6:92"},"nodeType":"YulFunctionCall","src":"6380:19:92"},"nodeType":"YulExpressionStatement","src":"6380:19:92"},{"nodeType":"YulVariableDeclaration","src":"6408:14:92","value":{"kind":"number","nodeType":"YulLiteral","src":"6418:4:92","type":"","value":"0x20"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"6412:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"6431:31:92","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6454:3:92"},{"name":"_1","nodeType":"YulIdentifier","src":"6459:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6450:3:92"},"nodeType":"YulFunctionCall","src":"6450:12:92"},"variables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"6435:11:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"6471:24:92","value":{"name":"updated_pos","nodeType":"YulIdentifier","src":"6484:11:92"},"variables":[{"name":"pos_1","nodeType":"YulTypedName","src":"6475:5:92","type":""}]},{"nodeType":"YulAssignment","src":"6504:18:92","value":{"name":"updated_pos","nodeType":"YulIdentifier","src":"6511:11:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"6504:3:92"}]},{"nodeType":"YulVariableDeclaration","src":"6531:38:92","value":{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"6547:5:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6558:1:92","type":"","value":"5"},{"name":"length","nodeType":"YulIdentifier","src":"6561:6:92"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"6554:3:92"},"nodeType":"YulFunctionCall","src":"6554:14:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6543:3:92"},"nodeType":"YulFunctionCall","src":"6543:26:92"},"variables":[{"name":"tail","nodeType":"YulTypedName","src":"6535:4:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"6578:28:92","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6596:5:92"},{"name":"_1","nodeType":"YulIdentifier","src":"6603:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6592:3:92"},"nodeType":"YulFunctionCall","src":"6592:14:92"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"6582:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"6615:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"6624:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"6619:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"6683:181:92","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6704:3:92"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"6713:4:92"},{"name":"pos_1","nodeType":"YulIdentifier","src":"6719:5:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6709:3:92"},"nodeType":"YulFunctionCall","src":"6709:16:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6697:6:92"},"nodeType":"YulFunctionCall","src":"6697:29:92"},"nodeType":"YulExpressionStatement","src":"6697:29:92"},{"nodeType":"YulAssignment","src":"6739:45:92","value":{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"6770:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6764:5:92"},"nodeType":"YulFunctionCall","src":"6764:13:92"},{"name":"tail","nodeType":"YulIdentifier","src":"6779:4:92"}],"functionName":{"name":"abi_encode_bytes","nodeType":"YulIdentifier","src":"6747:16:92"},"nodeType":"YulFunctionCall","src":"6747:37:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6739:4:92"}]},{"nodeType":"YulAssignment","src":"6797:25:92","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"6811:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"6819:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6807:3:92"},"nodeType":"YulFunctionCall","src":"6807:15:92"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"6797:6:92"}]},{"nodeType":"YulAssignment","src":"6835:19:92","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6846:3:92"},{"name":"_1","nodeType":"YulIdentifier","src":"6851:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6842:3:92"},"nodeType":"YulFunctionCall","src":"6842:12:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"6835:3:92"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"6645:1:92"},{"name":"length","nodeType":"YulIdentifier","src":"6648:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"6642:2:92"},"nodeType":"YulFunctionCall","src":"6642:13:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"6656:18:92","statements":[{"nodeType":"YulAssignment","src":"6658:14:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"6667:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"6670:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6663:3:92"},"nodeType":"YulFunctionCall","src":"6663:9:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"6658:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"6638:3:92","statements":[]},"src":"6634:230:92"},{"nodeType":"YulAssignment","src":"6873:11:92","value":{"name":"tail","nodeType":"YulIdentifier","src":"6880:4:92"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"6873:3:92"}]}]},"name":"abi_encode_array_bytes_dyn","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"6312:5:92","type":""},{"name":"pos","nodeType":"YulTypedName","src":"6319:3:92","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"6327:3:92","type":""}],"src":"6276:614:92"},{"body":{"nodeType":"YulBlock","src":"7092:151:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7109:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7120:2:92","type":"","value":"64"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7102:6:92"},"nodeType":"YulFunctionCall","src":"7102:21:92"},"nodeType":"YulExpressionStatement","src":"7102:21:92"},{"nodeType":"YulAssignment","src":"7132:62:92","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7167:6:92"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7179:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7190:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7175:3:92"},"nodeType":"YulFunctionCall","src":"7175:18:92"}],"functionName":{"name":"abi_encode_array_bytes_dyn","nodeType":"YulIdentifier","src":"7140:26:92"},"nodeType":"YulFunctionCall","src":"7140:54:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7132:4:92"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7214:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7225:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7210:3:92"},"nodeType":"YulFunctionCall","src":"7210:18:92"},{"name":"value1","nodeType":"YulIdentifier","src":"7230:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7203:6:92"},"nodeType":"YulFunctionCall","src":"7203:34:92"},"nodeType":"YulExpressionStatement","src":"7203:34:92"}]},"name":"abi_encode_tuple_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_t_uint256__to_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7053:9:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"7064:6:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"7072:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7083:4:92","type":""}],"src":"6895:348:92"},{"body":{"nodeType":"YulBlock","src":"7349:125:92","statements":[{"nodeType":"YulAssignment","src":"7359:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7371:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7382:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7367:3:92"},"nodeType":"YulFunctionCall","src":"7367:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7359:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7401:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7416:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"7424:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7412:3:92"},"nodeType":"YulFunctionCall","src":"7412:55:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7394:6:92"},"nodeType":"YulFunctionCall","src":"7394:74:92"},"nodeType":"YulExpressionStatement","src":"7394:74:92"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7318:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"7329:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7340:4:92","type":""}],"src":"7248:226:92"},{"body":{"nodeType":"YulBlock","src":"7568:321:92","statements":[{"body":{"nodeType":"YulBlock","src":"7614:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7623:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7626:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7616:6:92"},"nodeType":"YulFunctionCall","src":"7616:12:92"},"nodeType":"YulExpressionStatement","src":"7616:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"7589:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"7598:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"7585:3:92"},"nodeType":"YulFunctionCall","src":"7585:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"7610:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"7581:3:92"},"nodeType":"YulFunctionCall","src":"7581:32:92"},"nodeType":"YulIf","src":"7578:52:92"},{"nodeType":"YulVariableDeclaration","src":"7639:37:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7666:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"7653:12:92"},"nodeType":"YulFunctionCall","src":"7653:23:92"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"7643:6:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"7719:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7728:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7731:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7721:6:92"},"nodeType":"YulFunctionCall","src":"7721:12:92"},"nodeType":"YulExpressionStatement","src":"7721:12:92"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"7691:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"7699:18:92","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"7688:2:92"},"nodeType":"YulFunctionCall","src":"7688:30:92"},"nodeType":"YulIf","src":"7685:50:92"},{"nodeType":"YulVariableDeclaration","src":"7744:85:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7801:9:92"},{"name":"offset","nodeType":"YulIdentifier","src":"7812:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7797:3:92"},"nodeType":"YulFunctionCall","src":"7797:22:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"7821:7:92"}],"functionName":{"name":"abi_decode_string_calldata","nodeType":"YulIdentifier","src":"7770:26:92"},"nodeType":"YulFunctionCall","src":"7770:59:92"},"variables":[{"name":"value0_1","nodeType":"YulTypedName","src":"7748:8:92","type":""},{"name":"value1_1","nodeType":"YulTypedName","src":"7758:8:92","type":""}]},{"nodeType":"YulAssignment","src":"7838:18:92","value":{"name":"value0_1","nodeType":"YulIdentifier","src":"7848:8:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"7838:6:92"}]},{"nodeType":"YulAssignment","src":"7865:18:92","value":{"name":"value1_1","nodeType":"YulIdentifier","src":"7875:8:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"7865:6:92"}]}]},"name":"abi_decode_tuple_t_bytes_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7526:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"7537:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"7549:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"7557:6:92","type":""}],"src":"7479:410:92"},{"body":{"nodeType":"YulBlock","src":"8024:407:92","statements":[{"body":{"nodeType":"YulBlock","src":"8071:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8080:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8083:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8073:6:92"},"nodeType":"YulFunctionCall","src":"8073:12:92"},"nodeType":"YulExpressionStatement","src":"8073:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"8045:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"8054:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"8041:3:92"},"nodeType":"YulFunctionCall","src":"8041:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"8066:3:92","type":"","value":"128"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"8037:3:92"},"nodeType":"YulFunctionCall","src":"8037:33:92"},"nodeType":"YulIf","src":"8034:53:92"},{"nodeType":"YulAssignment","src":"8096:39:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8125:9:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"8106:18:92"},"nodeType":"YulFunctionCall","src":"8106:29:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"8096:6:92"}]},{"nodeType":"YulAssignment","src":"8144:48:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8177:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8188:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8173:3:92"},"nodeType":"YulFunctionCall","src":"8173:18:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"8154:18:92"},"nodeType":"YulFunctionCall","src":"8154:38:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"8144:6:92"}]},{"nodeType":"YulAssignment","src":"8201:42:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8228:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8239:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8224:3:92"},"nodeType":"YulFunctionCall","src":"8224:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"8211:12:92"},"nodeType":"YulFunctionCall","src":"8211:32:92"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"8201:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"8252:46:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8283:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8294:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8279:3:92"},"nodeType":"YulFunctionCall","src":"8279:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"8266:12:92"},"nodeType":"YulFunctionCall","src":"8266:32:92"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"8256:6:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"8341:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8350:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8353:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8343:6:92"},"nodeType":"YulFunctionCall","src":"8343:12:92"},"nodeType":"YulExpressionStatement","src":"8343:12:92"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"8313:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"8321:18:92","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"8310:2:92"},"nodeType":"YulFunctionCall","src":"8310:30:92"},"nodeType":"YulIf","src":"8307:50:92"},{"nodeType":"YulAssignment","src":"8366:59:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8397:9:92"},{"name":"offset","nodeType":"YulIdentifier","src":"8408:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8393:3:92"},"nodeType":"YulFunctionCall","src":"8393:22:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"8417:7:92"}],"functionName":{"name":"abi_decode_bytes","nodeType":"YulIdentifier","src":"8376:16:92"},"nodeType":"YulFunctionCall","src":"8376:49:92"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"8366:6:92"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_bytes32t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7966:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"7977:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"7989:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"7997:6:92","type":""},{"name":"value2","nodeType":"YulTypedName","src":"8005:6:92","type":""},{"name":"value3","nodeType":"YulTypedName","src":"8013:6:92","type":""}],"src":"7894:537:92"},{"body":{"nodeType":"YulBlock","src":"8817:1197:92","statements":[{"nodeType":"YulVariableDeclaration","src":"8827:33:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8845:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8856:3:92","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8841:3:92"},"nodeType":"YulFunctionCall","src":"8841:19:92"},"variables":[{"name":"tail_1","nodeType":"YulTypedName","src":"8831:6:92","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8876:9:92"},{"name":"value0","nodeType":"YulIdentifier","src":"8887:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8869:6:92"},"nodeType":"YulFunctionCall","src":"8869:25:92"},"nodeType":"YulExpressionStatement","src":"8869:25:92"},{"nodeType":"YulVariableDeclaration","src":"8903:12:92","value":{"kind":"number","nodeType":"YulLiteral","src":"8913:2:92","type":"","value":"32"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"8907:2:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8935:9:92"},{"name":"_1","nodeType":"YulIdentifier","src":"8946:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8931:3:92"},"nodeType":"YulFunctionCall","src":"8931:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"8951:3:92","type":"","value":"160"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8924:6:92"},"nodeType":"YulFunctionCall","src":"8924:31:92"},"nodeType":"YulExpressionStatement","src":"8924:31:92"},{"nodeType":"YulVariableDeclaration","src":"8964:17:92","value":{"name":"tail_1","nodeType":"YulIdentifier","src":"8975:6:92"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"8968:3:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"8990:27:92","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"9010:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"9004:5:92"},"nodeType":"YulFunctionCall","src":"9004:13:92"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"8994:6:92","type":""}]},{"expression":{"arguments":[{"name":"tail_1","nodeType":"YulIdentifier","src":"9033:6:92"},{"name":"length","nodeType":"YulIdentifier","src":"9041:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9026:6:92"},"nodeType":"YulFunctionCall","src":"9026:22:92"},"nodeType":"YulExpressionStatement","src":"9026:22:92"},{"nodeType":"YulAssignment","src":"9057:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9068:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9079:3:92","type":"","value":"192"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9064:3:92"},"nodeType":"YulFunctionCall","src":"9064:19:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"9057:3:92"}]},{"nodeType":"YulVariableDeclaration","src":"9092:54:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9114:9:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9129:1:92","type":"","value":"5"},{"name":"length","nodeType":"YulIdentifier","src":"9132:6:92"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"9125:3:92"},"nodeType":"YulFunctionCall","src":"9125:14:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9110:3:92"},"nodeType":"YulFunctionCall","src":"9110:30:92"},{"kind":"number","nodeType":"YulLiteral","src":"9142:3:92","type":"","value":"192"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9106:3:92"},"nodeType":"YulFunctionCall","src":"9106:40:92"},"variables":[{"name":"tail_2","nodeType":"YulTypedName","src":"9096:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"9155:29:92","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"9173:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"9181:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9169:3:92"},"nodeType":"YulFunctionCall","src":"9169:15:92"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"9159:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"9193:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"9202:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"9197:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"9261:538:92","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"9282:3:92"},{"arguments":[{"arguments":[{"name":"tail_2","nodeType":"YulIdentifier","src":"9295:6:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"9303:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"9291:3:92"},"nodeType":"YulFunctionCall","src":"9291:22:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9319:3:92","type":"","value":"191"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"9315:3:92"},"nodeType":"YulFunctionCall","src":"9315:8:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9287:3:92"},"nodeType":"YulFunctionCall","src":"9287:37:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9275:6:92"},"nodeType":"YulFunctionCall","src":"9275:50:92"},"nodeType":"YulExpressionStatement","src":"9275:50:92"},{"nodeType":"YulVariableDeclaration","src":"9338:23:92","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"9354:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"9348:5:92"},"nodeType":"YulFunctionCall","src":"9348:13:92"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"9342:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"9374:14:92","value":{"kind":"number","nodeType":"YulLiteral","src":"9384:4:92","type":"","value":"0x60"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"9378:2:92","type":""}]},{"expression":{"arguments":[{"name":"tail_2","nodeType":"YulIdentifier","src":"9408:6:92"},{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"9426:2:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"9420:5:92"},"nodeType":"YulFunctionCall","src":"9420:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9431:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"9416:3:92"},"nodeType":"YulFunctionCall","src":"9416:58:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9401:6:92"},"nodeType":"YulFunctionCall","src":"9401:74:92"},"nodeType":"YulExpressionStatement","src":"9401:74:92"},{"expression":{"arguments":[{"arguments":[{"name":"tail_2","nodeType":"YulIdentifier","src":"9499:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"9507:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9495:3:92"},"nodeType":"YulFunctionCall","src":"9495:15:92"},{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"9522:2:92"},{"name":"_1","nodeType":"YulIdentifier","src":"9526:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9518:3:92"},"nodeType":"YulFunctionCall","src":"9518:11:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"9512:5:92"},"nodeType":"YulFunctionCall","src":"9512:18:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9488:6:92"},"nodeType":"YulFunctionCall","src":"9488:43:92"},"nodeType":"YulExpressionStatement","src":"9488:43:92"},{"nodeType":"YulVariableDeclaration","src":"9544:14:92","value":{"kind":"number","nodeType":"YulLiteral","src":"9554:4:92","type":"","value":"0x40"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"9548:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"9571:38:92","value":{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"9601:2:92"},{"name":"_4","nodeType":"YulIdentifier","src":"9605:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9597:3:92"},"nodeType":"YulFunctionCall","src":"9597:11:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"9591:5:92"},"nodeType":"YulFunctionCall","src":"9591:18:92"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"9575:12:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"tail_2","nodeType":"YulIdentifier","src":"9633:6:92"},{"name":"_4","nodeType":"YulIdentifier","src":"9641:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9629:3:92"},"nodeType":"YulFunctionCall","src":"9629:15:92"},{"name":"_3","nodeType":"YulIdentifier","src":"9646:2:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9622:6:92"},"nodeType":"YulFunctionCall","src":"9622:27:92"},"nodeType":"YulExpressionStatement","src":"9622:27:92"},{"nodeType":"YulAssignment","src":"9662:57:92","value":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"9689:12:92"},{"arguments":[{"name":"tail_2","nodeType":"YulIdentifier","src":"9707:6:92"},{"name":"_3","nodeType":"YulIdentifier","src":"9715:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9703:3:92"},"nodeType":"YulFunctionCall","src":"9703:15:92"}],"functionName":{"name":"abi_encode_bytes","nodeType":"YulIdentifier","src":"9672:16:92"},"nodeType":"YulFunctionCall","src":"9672:47:92"},"variableNames":[{"name":"tail_2","nodeType":"YulIdentifier","src":"9662:6:92"}]},{"nodeType":"YulAssignment","src":"9732:25:92","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"9746:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"9754:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9742:3:92"},"nodeType":"YulFunctionCall","src":"9742:15:92"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"9732:6:92"}]},{"nodeType":"YulAssignment","src":"9770:19:92","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"9781:3:92"},{"name":"_1","nodeType":"YulIdentifier","src":"9786:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9777:3:92"},"nodeType":"YulFunctionCall","src":"9777:12:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"9770:3:92"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"9223:1:92"},{"name":"length","nodeType":"YulIdentifier","src":"9226:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"9220:2:92"},"nodeType":"YulFunctionCall","src":"9220:13:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"9234:18:92","statements":[{"nodeType":"YulAssignment","src":"9236:14:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"9245:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"9248:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9241:3:92"},"nodeType":"YulFunctionCall","src":"9241:9:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"9236:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"9216:3:92","statements":[]},"src":"9212:587:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9819:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9830:4:92","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9815:3:92"},"nodeType":"YulFunctionCall","src":"9815:20:92"},{"name":"value2","nodeType":"YulIdentifier","src":"9837:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9808:6:92"},"nodeType":"YulFunctionCall","src":"9808:36:92"},"nodeType":"YulExpressionStatement","src":"9808:36:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9864:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9875:4:92","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9860:3:92"},"nodeType":"YulFunctionCall","src":"9860:20:92"},{"name":"value3","nodeType":"YulIdentifier","src":"9882:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9853:6:92"},"nodeType":"YulFunctionCall","src":"9853:36:92"},"nodeType":"YulExpressionStatement","src":"9853:36:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9909:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9920:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9905:3:92"},"nodeType":"YulFunctionCall","src":"9905:19:92"},{"arguments":[{"name":"tail_2","nodeType":"YulIdentifier","src":"9930:6:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"9938:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"9926:3:92"},"nodeType":"YulFunctionCall","src":"9926:22:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9898:6:92"},"nodeType":"YulFunctionCall","src":"9898:51:92"},"nodeType":"YulExpressionStatement","src":"9898:51:92"},{"nodeType":"YulAssignment","src":"9958:50:92","value":{"arguments":[{"name":"value4","nodeType":"YulIdentifier","src":"9993:6:92"},{"name":"tail_2","nodeType":"YulIdentifier","src":"10001:6:92"}],"functionName":{"name":"abi_encode_array_bytes_dyn","nodeType":"YulIdentifier","src":"9966:26:92"},"nodeType":"YulFunctionCall","src":"9966:42:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"9958:4:92"}]}]},"name":"abi_encode_tuple_t_bytes32_t_array$_t_struct$_Action_$10724_memory_ptr_$dyn_memory_ptr_t_uint256_t_uint256_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__to_t_bytes32_t_array$_t_struct$_Action_$10724_memory_ptr_$dyn_memory_ptr_t_uint256_t_uint256_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8754:9:92","type":""},{"name":"value4","nodeType":"YulTypedName","src":"8765:6:92","type":""},{"name":"value3","nodeType":"YulTypedName","src":"8773:6:92","type":""},{"name":"value2","nodeType":"YulTypedName","src":"8781:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"8789:6:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"8797:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"8808:4:92","type":""}],"src":"8436:1578:92"}]},"contents":"{\n { }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function panic_error_0x41()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function allocate_memory_1655() -> memPtr\n {\n memPtr := mload(64)\n let newFreePtr := add(memPtr, 96)\n if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n }\n function allocate_memory(size) -> memPtr\n {\n memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(size, 31), not(31)))\n if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n }\n function abi_decode_bytes(offset, end) -> array\n {\n if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n let _1 := calldataload(offset)\n if gt(_1, 0xffffffffffffffff) { panic_error_0x41() }\n let array_1 := allocate_memory(add(and(add(_1, 0x1f), not(31)), 0x20))\n mstore(array_1, _1)\n if gt(add(add(offset, _1), 0x20), end) { revert(0, 0) }\n calldatacopy(add(array_1, 0x20), add(offset, 0x20), _1)\n mstore(add(add(array_1, _1), 0x20), 0)\n array := array_1\n }\n function abi_decode_tuple_t_bytes32t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := calldataload(headStart)\n let offset := calldataload(add(headStart, 32))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n value1 := abi_decode_bytes(add(headStart, offset), dataEnd)\n }\n function abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, shl(224, 0xffffffff)))\n }\n function abi_decode_address(offset) -> value\n {\n value := calldataload(offset)\n if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n }\n function abi_decode_tuple_t_bool(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n value0 := value\n }\n function abi_decode_string_calldata(offset, end) -> arrayPos, length\n {\n if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n length := calldataload(offset)\n if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n arrayPos := add(offset, 0x20)\n if gt(add(add(offset, length), 0x20), end) { revert(0, 0) }\n }\n function abi_decode_tuple_t_addresst_uint256t_string_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := calldataload(add(headStart, 32))\n let offset := calldataload(add(headStart, 64))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n let value2_1, value3_1 := abi_decode_string_calldata(add(headStart, offset), dataEnd)\n value2 := value2_1\n value3 := value3_1\n }\n function abi_decode_bytes4(offset) -> value\n {\n value := calldataload(offset)\n if iszero(eq(value, and(value, shl(224, 0xffffffff)))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_bytes4t_bytes4t_bytes4(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n value0 := abi_decode_bytes4(headStart)\n value1 := abi_decode_bytes4(add(headStart, 32))\n value2 := abi_decode_bytes4(add(headStart, 64))\n }\n function abi_decode_tuple_t_bytes32t_array$_t_struct$_Action_$10724_memory_ptr_$dyn_memory_ptrt_uint256(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n value0 := calldataload(headStart)\n let _1 := 32\n let offset := calldataload(add(headStart, _1))\n let _2 := 0xffffffffffffffff\n if gt(offset, _2) { revert(0, 0) }\n let _3 := add(headStart, offset)\n if iszero(slt(add(_3, 0x1f), dataEnd)) { revert(0, 0) }\n let _4 := calldataload(_3)\n if gt(_4, _2) { panic_error_0x41() }\n let _5 := shl(5, _4)\n let dst := allocate_memory(add(_5, _1))\n let dst_1 := dst\n mstore(dst, _4)\n dst := add(dst, _1)\n let srcEnd := add(add(_3, _5), _1)\n if gt(srcEnd, dataEnd) { revert(0, 0) }\n let src := add(_3, _1)\n for { } lt(src, srcEnd) { src := add(src, _1) }\n {\n let innerOffset := calldataload(src)\n if gt(innerOffset, _2) { revert(0, 0) }\n let _6 := add(_3, innerOffset)\n if slt(add(sub(dataEnd, _6), not(31)), 96) { revert(0, 0) }\n let value := allocate_memory_1655()\n mstore(value, abi_decode_address(add(_6, _1)))\n mstore(add(value, _1), calldataload(add(_6, 64)))\n let offset_1 := calldataload(add(_6, 96))\n if gt(offset_1, _2)\n {\n let _7 := 0\n revert(_7, _7)\n }\n mstore(add(value, 64), abi_decode_bytes(add(add(_6, offset_1), _1), dataEnd))\n mstore(dst, value)\n dst := add(dst, _1)\n }\n value1 := dst_1\n value2 := calldataload(add(headStart, 64))\n }\n function abi_encode_bytes(value, pos) -> end\n {\n let length := mload(value)\n mstore(pos, length)\n let i := 0\n for { } lt(i, length) { i := add(i, 0x20) }\n {\n let _1 := 0x20\n mstore(add(add(pos, i), _1), mload(add(add(value, i), _1)))\n }\n mstore(add(add(pos, length), 0x20), 0)\n end := add(add(pos, and(add(length, 31), not(31))), 0x20)\n }\n function abi_encode_array_bytes_dyn(value, pos) -> end\n {\n let length := mload(value)\n mstore(pos, length)\n let _1 := 0x20\n let updated_pos := add(pos, _1)\n let pos_1 := updated_pos\n pos := updated_pos\n let tail := add(pos_1, shl(5, length))\n let srcPtr := add(value, _1)\n let i := 0\n for { } lt(i, length) { i := add(i, 1) }\n {\n mstore(pos, sub(tail, pos_1))\n tail := abi_encode_bytes(mload(srcPtr), tail)\n srcPtr := add(srcPtr, _1)\n pos := add(pos, _1)\n }\n end := tail\n }\n function abi_encode_tuple_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_t_uint256__to_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n {\n mstore(headStart, 64)\n tail := abi_encode_array_bytes_dyn(value0, add(headStart, 64))\n mstore(add(headStart, 32), value1)\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_decode_tuple_t_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let offset := calldataload(headStart)\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n let value0_1, value1_1 := abi_decode_string_calldata(add(headStart, offset), dataEnd)\n value0 := value0_1\n value1 := value1_1\n }\n function abi_decode_tuple_t_addresst_addresst_bytes32t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n {\n if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := abi_decode_address(add(headStart, 32))\n value2 := calldataload(add(headStart, 64))\n let offset := calldataload(add(headStart, 96))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n value3 := abi_decode_bytes(add(headStart, offset), dataEnd)\n }\n function abi_encode_tuple_t_bytes32_t_array$_t_struct$_Action_$10724_memory_ptr_$dyn_memory_ptr_t_uint256_t_uint256_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__to_t_bytes32_t_array$_t_struct$_Action_$10724_memory_ptr_$dyn_memory_ptr_t_uint256_t_uint256_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n {\n let tail_1 := add(headStart, 160)\n mstore(headStart, value0)\n let _1 := 32\n mstore(add(headStart, _1), 160)\n let pos := tail_1\n let length := mload(value1)\n mstore(tail_1, length)\n pos := add(headStart, 192)\n let tail_2 := add(add(headStart, shl(5, length)), 192)\n let srcPtr := add(value1, _1)\n let i := 0\n for { } lt(i, length) { i := add(i, 1) }\n {\n mstore(pos, add(sub(tail_2, headStart), not(191)))\n let _2 := mload(srcPtr)\n let _3 := 0x60\n mstore(tail_2, and(mload(_2), 0xffffffffffffffffffffffffffffffffffffffff))\n mstore(add(tail_2, _1), mload(add(_2, _1)))\n let _4 := 0x40\n let memberValue0 := mload(add(_2, _4))\n mstore(add(tail_2, _4), _3)\n tail_2 := abi_encode_bytes(memberValue0, add(tail_2, _3))\n srcPtr := add(srcPtr, _1)\n pos := add(pos, _1)\n }\n mstore(add(headStart, 0x40), value2)\n mstore(add(headStart, 0x60), value3)\n mstore(add(headStart, 128), sub(tail_2, headStart))\n tail := abi_encode_array_bytes_dyn(value4, tail_2)\n }\n}","id":92,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"6080604052600436106100bc5760003560e01c8063c4a5014511610074578063da7422281161004e578063da74222814610144578063ee57e36f14610210578063fdef91061461022f57600080fd5b8063c4a50145146101a6578063c71bf324146101c6578063ce1b815f146101f457600080fd5b80633e2ab0d9116100a55780633e2ab0d91461014457806380e4cbe114610164578063bfe07da61461019257600080fd5b80630a1f41ca146100c15780631626ba7e146100f0575b600080fd5b3480156100cd57600080fd5b506000546100db9060ff1681565b60405190151581526020015b60405180910390f35b3480156100fc57600080fd5b5061011361010b36600461039a565b600092915050565b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020016100e7565b34801561015057600080fd5b5061016261015f36600461040a565b50565b005b34801561017057600080fd5b5061016261017f36600461042c565b6000805460ff1916911515919091179055565b6101626101a0366004610497565b50505050565b3480156101b257600080fd5b506101626101c1366004610521565b505050565b3480156101d257600080fd5b506101e66101e1366004610564565b610258565b6040516100e7929190610722565b34801561020057600080fd5b50604051600081526020016100e7565b34801561021c57600080fd5b5061016261022b366004610744565b5050565b34801561023b57600080fd5b506100db61024a366004610786565b60005460ff16949350505050565b606060003373ffffffffffffffffffffffffffffffffffffffff167fd4e57c2049f004fb297ef78591cd409503ceb6b2c722d7ffed032fc99e5f3b5886868685876040516102aa9594939291906107ee565b60405180910390a2935093915050565b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff811182821017156102f3576102f36102ba565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715610322576103226102ba565b604052919050565b600082601f83011261033b57600080fd5b813567ffffffffffffffff811115610355576103556102ba565b610368601f8201601f19166020016102f9565b81815284602083860101111561037d57600080fd5b816020850160208301376000918101602001919091529392505050565b600080604083850312156103ad57600080fd5b82359150602083013567ffffffffffffffff8111156103cb57600080fd5b6103d78582860161032a565b9150509250929050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461040557600080fd5b919050565b60006020828403121561041c57600080fd5b610425826103e1565b9392505050565b60006020828403121561043e57600080fd5b8135801515811461042557600080fd5b60008083601f84011261046057600080fd5b50813567ffffffffffffffff81111561047857600080fd5b60208301915083602082850101111561049057600080fd5b9250929050565b600080600080606085870312156104ad57600080fd5b6104b6856103e1565b935060208501359250604085013567ffffffffffffffff8111156104d957600080fd5b6104e58782880161044e565b95989497509550505050565b80357fffffffff000000000000000000000000000000000000000000000000000000008116811461040557600080fd5b60008060006060848603121561053657600080fd5b61053f846104f1565b925061054d602085016104f1565b915061055b604085016104f1565b90509250925092565b60008060006060848603121561057957600080fd5b8335925060208085013567ffffffffffffffff8082111561059957600080fd5b818701915087601f8301126105ad57600080fd5b8135818111156105bf576105bf6102ba565b8060051b6105ce8582016102f9565b918252838101850191858101908b8411156105e857600080fd5b86860192505b838310156106705782358581111561060557600080fd5b86016060818e03601f1901121561061b57600080fd5b6106236102d0565b61062e8983016103e1565b815260408201358982015260608201358781111561064c5760008081fd5b61065a8f8b8386010161032a565b60408301525083525091860191908601906105ee565b989b989a5050505060409690960135955050505050565b6000815180845260005b818110156106ad57602081850181015186830182015201610691565b506000602082860101526020601f19601f83011685010191505092915050565b600081518084526020808501808196508360051b8101915082860160005b85811015610715578284038952610703848351610687565b988501989350908401906001016106eb565b5091979650505050505050565b60408152600061073560408301856106cd565b90508260208301529392505050565b6000806020838503121561075757600080fd5b823567ffffffffffffffff81111561076e57600080fd5b61077a8582860161044e565b90969095509350505050565b6000806000806080858703121561079c57600080fd5b6107a5856103e1565b93506107b3602086016103e1565b925060408501359150606085013567ffffffffffffffff8111156107d657600080fd5b6107e28782880161032a565b91505092959194509250565b600060a08201878352602060a08185015281885180845260c08601915060c08160051b8701019350828a0160005b828110156108805787860360bf190184528151805173ffffffffffffffffffffffffffffffffffffffff168752858101518688015260409081015160609188018290529061086c81890183610687565b97505050928401929084019060010161081c565b505050505085604084015284606084015282810360808401526108a381856106cd565b9897505050505050505056fea164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xBC JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xC4A50145 GT PUSH2 0x74 JUMPI DUP1 PUSH4 0xDA742228 GT PUSH2 0x4E JUMPI DUP1 PUSH4 0xDA742228 EQ PUSH2 0x144 JUMPI DUP1 PUSH4 0xEE57E36F EQ PUSH2 0x210 JUMPI DUP1 PUSH4 0xFDEF9106 EQ PUSH2 0x22F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xC4A50145 EQ PUSH2 0x1A6 JUMPI DUP1 PUSH4 0xC71BF324 EQ PUSH2 0x1C6 JUMPI DUP1 PUSH4 0xCE1B815F EQ PUSH2 0x1F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x3E2AB0D9 GT PUSH2 0xA5 JUMPI DUP1 PUSH4 0x3E2AB0D9 EQ PUSH2 0x144 JUMPI DUP1 PUSH4 0x80E4CBE1 EQ PUSH2 0x164 JUMPI DUP1 PUSH4 0xBFE07DA6 EQ PUSH2 0x192 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xA1F41CA EQ PUSH2 0xC1 JUMPI DUP1 PUSH4 0x1626BA7E EQ PUSH2 0xF0 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xCD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 SLOAD PUSH2 0xDB SWAP1 PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xFC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x113 PUSH2 0x10B CALLDATASIZE PUSH1 0x4 PUSH2 0x39A JUMP JUMPDEST PUSH1 0x0 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xE7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x150 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x162 PUSH2 0x15F CALLDATASIZE PUSH1 0x4 PUSH2 0x40A JUMP JUMPDEST POP JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x170 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x162 PUSH2 0x17F CALLDATASIZE PUSH1 0x4 PUSH2 0x42C JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x162 PUSH2 0x1A0 CALLDATASIZE PUSH1 0x4 PUSH2 0x497 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x162 PUSH2 0x1C1 CALLDATASIZE PUSH1 0x4 PUSH2 0x521 JUMP JUMPDEST POP POP POP JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1E6 PUSH2 0x1E1 CALLDATASIZE PUSH1 0x4 PUSH2 0x564 JUMP JUMPDEST PUSH2 0x258 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xE7 SWAP3 SWAP2 SWAP1 PUSH2 0x722 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x200 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xE7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x21C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x162 PUSH2 0x22B CALLDATASIZE PUSH1 0x4 PUSH2 0x744 JUMP JUMPDEST POP POP JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x23B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xDB PUSH2 0x24A CALLDATASIZE PUSH1 0x4 PUSH2 0x786 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xFF AND SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xD4E57C2049F004FB297EF78591CD409503CEB6B2C722D7FFED032FC99E5F3B58 DUP7 DUP7 DUP7 DUP6 DUP8 PUSH1 0x40 MLOAD PUSH2 0x2AA SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x7EE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x60 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x2F3 JUMPI PUSH2 0x2F3 PUSH2 0x2BA JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x322 JUMPI PUSH2 0x322 PUSH2 0x2BA JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x33B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x355 JUMPI PUSH2 0x355 PUSH2 0x2BA JUMP JUMPDEST PUSH2 0x368 PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD PUSH2 0x2F9 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 PUSH1 0x20 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0x37D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP6 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 SWAP2 DUP2 ADD PUSH1 0x20 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3D7 DUP6 DUP3 DUP7 ADD PUSH2 0x32A JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x405 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x41C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x425 DUP3 PUSH2 0x3E1 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x43E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x425 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x460 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x478 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x490 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x60 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x4AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4B6 DUP6 PUSH2 0x3E1 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x4D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4E5 DUP8 DUP3 DUP9 ADD PUSH2 0x44E JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP6 POP POP POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x405 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x536 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x53F DUP5 PUSH2 0x4F1 JUMP JUMPDEST SWAP3 POP PUSH2 0x54D PUSH1 0x20 DUP6 ADD PUSH2 0x4F1 JUMP JUMPDEST SWAP2 POP PUSH2 0x55B PUSH1 0x40 DUP6 ADD PUSH2 0x4F1 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x579 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP1 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x599 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x5AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x5BF JUMPI PUSH2 0x5BF PUSH2 0x2BA JUMP JUMPDEST DUP1 PUSH1 0x5 SHL PUSH2 0x5CE DUP6 DUP3 ADD PUSH2 0x2F9 JUMP JUMPDEST SWAP2 DUP3 MSTORE DUP4 DUP2 ADD DUP6 ADD SWAP2 DUP6 DUP2 ADD SWAP1 DUP12 DUP5 GT ISZERO PUSH2 0x5E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 DUP7 ADD SWAP3 POP JUMPDEST DUP4 DUP4 LT ISZERO PUSH2 0x670 JUMPI DUP3 CALLDATALOAD DUP6 DUP2 GT ISZERO PUSH2 0x605 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 ADD PUSH1 0x60 DUP2 DUP15 SUB PUSH1 0x1F NOT ADD SLT ISZERO PUSH2 0x61B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x623 PUSH2 0x2D0 JUMP JUMPDEST PUSH2 0x62E DUP10 DUP4 ADD PUSH2 0x3E1 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x40 DUP3 ADD CALLDATALOAD DUP10 DUP3 ADD MSTORE PUSH1 0x60 DUP3 ADD CALLDATALOAD DUP8 DUP2 GT ISZERO PUSH2 0x64C JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST PUSH2 0x65A DUP16 DUP12 DUP4 DUP7 ADD ADD PUSH2 0x32A JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP DUP4 MSTORE POP SWAP2 DUP7 ADD SWAP2 SWAP1 DUP7 ADD SWAP1 PUSH2 0x5EE JUMP JUMPDEST SWAP9 SWAP12 SWAP9 SWAP11 POP POP POP POP PUSH1 0x40 SWAP7 SWAP1 SWAP7 ADD CALLDATALOAD SWAP6 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x6AD JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD DUP3 ADD MSTORE ADD PUSH2 0x691 JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x20 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x20 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD DUP1 DUP2 SWAP7 POP DUP4 PUSH1 0x5 SHL DUP2 ADD SWAP2 POP DUP3 DUP7 ADD PUSH1 0x0 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x715 JUMPI DUP3 DUP5 SUB DUP10 MSTORE PUSH2 0x703 DUP5 DUP4 MLOAD PUSH2 0x687 JUMP JUMPDEST SWAP9 DUP6 ADD SWAP9 SWAP4 POP SWAP1 DUP5 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x6EB JUMP JUMPDEST POP SWAP2 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 PUSH2 0x735 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x6CD JUMP JUMPDEST SWAP1 POP DUP3 PUSH1 0x20 DUP4 ADD MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x757 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x76E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x77A DUP6 DUP3 DUP7 ADD PUSH2 0x44E JUMP JUMPDEST SWAP1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x79C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7A5 DUP6 PUSH2 0x3E1 JUMP JUMPDEST SWAP4 POP PUSH2 0x7B3 PUSH1 0x20 DUP7 ADD PUSH2 0x3E1 JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x7D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7E2 DUP8 DUP3 DUP9 ADD PUSH2 0x32A JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA0 DUP3 ADD DUP8 DUP4 MSTORE PUSH1 0x20 PUSH1 0xA0 DUP2 DUP6 ADD MSTORE DUP2 DUP9 MLOAD DUP1 DUP5 MSTORE PUSH1 0xC0 DUP7 ADD SWAP2 POP PUSH1 0xC0 DUP2 PUSH1 0x5 SHL DUP8 ADD ADD SWAP4 POP DUP3 DUP11 ADD PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x880 JUMPI DUP8 DUP7 SUB PUSH1 0xBF NOT ADD DUP5 MSTORE DUP2 MLOAD DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP8 MSTORE DUP6 DUP2 ADD MLOAD DUP7 DUP9 ADD MSTORE PUSH1 0x40 SWAP1 DUP2 ADD MLOAD PUSH1 0x60 SWAP2 DUP9 ADD DUP3 SWAP1 MSTORE SWAP1 PUSH2 0x86C DUP2 DUP10 ADD DUP4 PUSH2 0x687 JUMP JUMPDEST SWAP8 POP POP POP SWAP3 DUP5 ADD SWAP3 SWAP1 DUP5 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x81C JUMP JUMPDEST POP POP POP POP POP DUP6 PUSH1 0x40 DUP5 ADD MSTORE DUP5 PUSH1 0x60 DUP5 ADD MSTORE DUP3 DUP2 SUB PUSH1 0x80 DUP5 ADD MSTORE PUSH2 0x8A3 DUP2 DUP6 PUSH2 0x6CD JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"208:1879:43:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;239:40;;;;;;;;;;-1:-1:-1;239:40:43;;;;;;;;;;;179:14:92;;172:22;154:41;;142:2;127:18;239:40:43;;;;;;;;1676:184;;;;;;;;;;-1:-1:-1;1676:184:43;;;;;:::i;:::-;1796:6;1676:184;;;;;;;;1976:20:92;1964:33;;;1946:52;;1934:2;1919:18;1676:184:43;1802:202:92;1549:121:43;;;;;;;;;;-1:-1:-1;1549:121:43;;;;;:::i;:::-;;;;;286:163;;;;;;;;;;-1:-1:-1;286:163:43;;;;;:::i;:::-;382:28;:60;;-1:-1:-1;;382:60:43;;;;;;;;;;286:163;1363:180;;;;;;:::i;:::-;;;;;;1866:219;;;;;;;;;;-1:-1:-1;1866:219:43;;;;;:::i;:::-;;;;;1066:291;;;;;;;;;;-1:-1:-1;1066:291:43;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;731:104::-;;;;;;;;;;-1:-1:-1;731:104:43;;792:7;7394:74:92;;7382:2;7367:18;731:104:43;7248:226:92;962:98:43;;;;;;;;;;-1:-1:-1;962:98:43;;;;;:::i;:::-;;;;455:270;;;;;;;;;;-1:-1:-1;455:270:43;;;;;:::i;:::-;621:4;690:28;;;455:270;;;;;;;1066:291;1207:26;1235:18;1279:10;1270:80;;;1291:6;1299:8;1309:15;1326:10;1338:11;1270:80;;;;;;;;;;:::i;:::-;;;;;;;;1066:291;;;;;;:::o;206:127:92:-;267:10;262:3;258:20;255:1;248:31;298:4;295:1;288:15;322:4;319:1;312:15;338:251;410:2;404:9;452:2;440:15;;485:18;470:34;;506:22;;;467:62;464:88;;;532:18;;:::i;:::-;568:2;561:22;338:251;:::o;594:275::-;665:2;659:9;730:2;711:13;;-1:-1:-1;;707:27:92;695:40;;765:18;750:34;;786:22;;;747:62;744:88;;;812:18;;:::i;:::-;848:2;841:22;594:275;;-1:-1:-1;594:275:92:o;874:530::-;916:5;969:3;962:4;954:6;950:17;946:27;936:55;;987:1;984;977:12;936:55;1023:6;1010:20;1049:18;1045:2;1042:26;1039:52;;;1071:18;;:::i;:::-;1115:55;1158:2;1139:13;;-1:-1:-1;;1135:27:92;1164:4;1131:38;1115:55;:::i;:::-;1195:2;1186:7;1179:19;1241:3;1234:4;1229:2;1221:6;1217:15;1213:26;1210:35;1207:55;;;1258:1;1255;1248:12;1207:55;1323:2;1316:4;1308:6;1304:17;1297:4;1288:7;1284:18;1271:55;1371:1;1346:16;;;1364:4;1342:27;1335:38;;;;1350:7;874:530;-1:-1:-1;;;874:530:92:o;1409:388::-;1486:6;1494;1547:2;1535:9;1526:7;1522:23;1518:32;1515:52;;;1563:1;1560;1553:12;1515:52;1599:9;1586:23;1576:33;;1660:2;1649:9;1645:18;1632:32;1687:18;1679:6;1676:30;1673:50;;;1719:1;1716;1709:12;1673:50;1742:49;1783:7;1774:6;1763:9;1759:22;1742:49;:::i;:::-;1732:59;;;1409:388;;;;;:::o;2009:196::-;2077:20;;2137:42;2126:54;;2116:65;;2106:93;;2195:1;2192;2185:12;2106:93;2009:196;;;:::o;2210:186::-;2269:6;2322:2;2310:9;2301:7;2297:23;2293:32;2290:52;;;2338:1;2335;2328:12;2290:52;2361:29;2380:9;2361:29;:::i;:::-;2351:39;2210:186;-1:-1:-1;;;2210:186:92:o;2401:273::-;2457:6;2510:2;2498:9;2489:7;2485:23;2481:32;2478:52;;;2526:1;2523;2516:12;2478:52;2565:9;2552:23;2618:5;2611:13;2604:21;2597:5;2594:32;2584:60;;2640:1;2637;2630:12;2679:348;2731:8;2741:6;2795:3;2788:4;2780:6;2776:17;2772:27;2762:55;;2813:1;2810;2803:12;2762:55;-1:-1:-1;2836:20:92;;2879:18;2868:30;;2865:50;;;2911:1;2908;2901:12;2865:50;2948:4;2940:6;2936:17;2924:29;;3000:3;2993:4;2984:6;2976;2972:19;2968:30;2965:39;2962:59;;;3017:1;3014;3007:12;2962:59;2679:348;;;;;:::o;3032:553::-;3121:6;3129;3137;3145;3198:2;3186:9;3177:7;3173:23;3169:32;3166:52;;;3214:1;3211;3204:12;3166:52;3237:29;3256:9;3237:29;:::i;:::-;3227:39;;3313:2;3302:9;3298:18;3285:32;3275:42;;3368:2;3357:9;3353:18;3340:32;3395:18;3387:6;3384:30;3381:50;;;3427:1;3424;3417:12;3381:50;3466:59;3517:7;3508:6;3497:9;3493:22;3466:59;:::i;:::-;3032:553;;;;-1:-1:-1;3544:8:92;-1:-1:-1;;;;3032:553:92:o;3590:173::-;3657:20;;3717;3706:32;;3696:43;;3686:71;;3753:1;3750;3743:12;3768:328;3842:6;3850;3858;3911:2;3899:9;3890:7;3886:23;3882:32;3879:52;;;3927:1;3924;3917:12;3879:52;3950:28;3968:9;3950:28;:::i;:::-;3940:38;;3997:37;4030:2;4019:9;4015:18;3997:37;:::i;:::-;3987:47;;4053:37;4086:2;4075:9;4071:18;4053:37;:::i;:::-;4043:47;;3768:328;;;;;:::o;4101:1743::-;4228:6;4236;4244;4297:2;4285:9;4276:7;4272:23;4268:32;4265:52;;;4313:1;4310;4303:12;4265:52;4349:9;4336:23;4326:33;;4378:2;4431;4420:9;4416:18;4403:32;4454:18;4495:2;4487:6;4484:14;4481:34;;;4511:1;4508;4501:12;4481:34;4549:6;4538:9;4534:22;4524:32;;4594:7;4587:4;4583:2;4579:13;4575:27;4565:55;;4616:1;4613;4606:12;4565:55;4652:2;4639:16;4674:2;4670;4667:10;4664:36;;;4680:18;;:::i;:::-;4726:2;4723:1;4719:10;4749:28;4773:2;4769;4765:11;4749:28;:::i;:::-;4811:15;;;4881:11;;;4877:20;;;4842:12;;;;4909:19;;;4906:39;;;4941:1;4938;4931:12;4906:39;4973:2;4969;4965:11;4954:22;;4985:778;5001:6;4996:3;4993:15;4985:778;;;5087:3;5074:17;5123:2;5110:11;5107:19;5104:39;;;5139:1;5136;5129:12;5104:39;5166:20;;5238:2;5210:16;;;-1:-1:-1;;5206:30:92;5202:39;5199:59;;;5254:1;5251;5244:12;5199:59;5284:22;;:::i;:::-;5333:31;5360:2;5356;5352:11;5333:31;:::i;:::-;5326:5;5319:46;5422:2;5418;5414:11;5401:25;5396:2;5389:5;5385:14;5378:49;5477:2;5473;5469:11;5456:25;5510:2;5500:8;5497:16;5494:106;;;5554:1;5583:2;5579;5572:14;5494:106;5636:53;5681:7;5676:2;5665:8;5661:2;5657:17;5653:26;5636:53;:::i;:::-;5631:2;5620:14;;5613:77;-1:-1:-1;5703:18:92;;-1:-1:-1;5018:12:92;;;;5741;;;;4985:778;;;4101:1743;;5782:5;;-1:-1:-1;;;;5834:2:92;5819:18;;;;5806:32;;-1:-1:-1;;;;;4101:1743:92:o;5849:422::-;5890:3;5928:5;5922:12;5955:6;5950:3;5943:19;5980:1;5990:162;6004:6;6001:1;5998:13;5990:162;;;6066:4;6122:13;;;6118:22;;6112:29;6094:11;;;6090:20;;6083:59;6019:12;5990:162;;;5994:3;6197:1;6190:4;6181:6;6176:3;6172:16;6168:27;6161:38;6260:4;6253:2;6249:7;6244:2;6236:6;6232:15;6228:29;6223:3;6219:39;6215:50;6208:57;;;5849:422;;;;:::o;6276:614::-;6327:3;6365:5;6359:12;6392:6;6387:3;6380:19;6418:4;6459:2;6454:3;6450:12;6484:11;6511;6504:18;;6561:6;6558:1;6554:14;6547:5;6543:26;6531:38;;6603:2;6596:5;6592:14;6624:1;6634:230;6648:6;6645:1;6642:13;6634:230;;;6719:5;6713:4;6709:16;6704:3;6697:29;6747:37;6779:4;6770:6;6764:13;6747:37;:::i;:::-;6842:12;;;;6739:45;-1:-1:-1;6807:15:92;;;;6670:1;6663:9;6634:230;;;-1:-1:-1;6880:4:92;;6276:614;-1:-1:-1;;;;;;;6276:614:92:o;6895:348::-;7120:2;7109:9;7102:21;7083:4;7140:54;7190:2;7179:9;7175:18;7167:6;7140:54;:::i;:::-;7132:62;;7230:6;7225:2;7214:9;7210:18;7203:34;6895:348;;;;;:::o;7479:410::-;7549:6;7557;7610:2;7598:9;7589:7;7585:23;7581:32;7578:52;;;7626:1;7623;7616:12;7578:52;7666:9;7653:23;7699:18;7691:6;7688:30;7685:50;;;7731:1;7728;7721:12;7685:50;7770:59;7821:7;7812:6;7801:9;7797:22;7770:59;:::i;:::-;7848:8;;7744:85;;-1:-1:-1;7479:410:92;-1:-1:-1;;;;7479:410:92:o;7894:537::-;7989:6;7997;8005;8013;8066:3;8054:9;8045:7;8041:23;8037:33;8034:53;;;8083:1;8080;8073:12;8034:53;8106:29;8125:9;8106:29;:::i;:::-;8096:39;;8154:38;8188:2;8177:9;8173:18;8154:38;:::i;:::-;8144:48;;8239:2;8228:9;8224:18;8211:32;8201:42;;8294:2;8283:9;8279:18;8266:32;8321:18;8313:6;8310:30;8307:50;;;8353:1;8350;8343:12;8307:50;8376:49;8417:7;8408:6;8397:9;8393:22;8376:49;:::i;:::-;8366:59;;;7894:537;;;;;;;:::o;8436:1578::-;8808:4;8856:3;8845:9;8841:19;8887:6;8876:9;8869:25;8913:2;8951:3;8946:2;8935:9;8931:18;8924:31;8975:6;9010;9004:13;9041:6;9033;9026:22;9079:3;9068:9;9064:19;9057:26;;9142:3;9132:6;9129:1;9125:14;9114:9;9110:30;9106:40;9092:54;;9181:2;9173:6;9169:15;9202:1;9212:587;9226:6;9223:1;9220:13;9212:587;;;9291:22;;;-1:-1:-1;;9287:37:92;9275:50;;9348:13;;9420:9;;9431:42;9416:58;9401:74;;9518:11;;;9512:18;9495:15;;;9488:43;9554:4;9597:11;;;9591:18;9384:4;9629:15;;;9622:27;;;9591:18;9672:47;9703:15;;;9591:18;9672:47;:::i;:::-;9662:57;-1:-1:-1;;;9777:12:92;;;;9742:15;;;;9248:1;9241:9;9212:587;;;9216:3;;;;;9837:6;9830:4;9819:9;9815:20;9808:36;9882:6;9875:4;9864:9;9860:20;9853:36;9938:9;9930:6;9926:22;9920:3;9909:9;9905:19;9898:51;9966:42;10001:6;9993;9966:42;:::i;:::-;9958:50;8436:1578;-1:-1:-1;;;;;;;;8436:1578:92:o"},"gasEstimates":{"creation":{"codeDepositCost":"447200","executionCost":"480","totalCost":"447680"},"external":{"deposit(address,uint256,string)":"581","execute(bytes32,(address,uint256,bytes)[],uint256)":"infinite","getTrustedForwarder()":"244","hasPermission(address,address,bytes32,bytes)":"infinite","hasPermissionReturnValueMock()":"2323","isValidSignature(bytes32,bytes)":"infinite","registerStandardCallback(bytes4,bytes4,bytes4)":"infinite","setHasPermissionReturnValueMock(bool)":"24527","setMetadata(bytes)":"474","setSignatureValidator(address)":"303","setTrustedForwarder(address)":"302"}},"methodIdentifiers":{"deposit(address,uint256,string)":"bfe07da6","execute(bytes32,(address,uint256,bytes)[],uint256)":"c71bf324","getTrustedForwarder()":"ce1b815f","hasPermission(address,address,bytes32,bytes)":"fdef9106","hasPermissionReturnValueMock()":"0a1f41ca","isValidSignature(bytes32,bytes)":"1626ba7e","registerStandardCallback(bytes4,bytes4,bytes4)":"c4a50145","setHasPermissionReturnValueMock(bool)":"80e4cbe1","setMetadata(bytes)":"ee57e36f","setSignatureValidator(address)":"3e2ab0d9","setTrustedForwarder(address)":"da742228"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"_reference\",\"type\":\"string\"}],\"name\":\"Deposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"actor\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"callId\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"struct IDAO.Action[]\",\"name\":\"actions\",\"type\":\"tuple[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"allowFailureMap\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"failureMap\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes[]\",\"name\":\"execResults\",\"type\":\"bytes[]\"}],\"name\":\"Executed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"name\":\"MetadataSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"NativeTokenDeposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"callbackSelector\",\"type\":\"bytes4\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"magicNumber\",\"type\":\"bytes4\"}],\"name\":\"StandardCallbackRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"forwarder\",\"type\":\"address\"}],\"name\":\"TrustedForwarderSet\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"_reference\",\"type\":\"string\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"callId\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IDAO.Action[]\",\"name\":\"_actions\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"allowFailureMap\",\"type\":\"uint256\"}],\"name\":\"execute\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"execResults\",\"type\":\"bytes[]\"},{\"internalType\":\"uint256\",\"name\":\"failureMap\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTrustedForwarder\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_who\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_permissionId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"hasPermission\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"hasPermissionReturnValueMock\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"isValidSignature\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"},{\"internalType\":\"bytes4\",\"name\":\"_callbackSelector\",\"type\":\"bytes4\"},{\"internalType\":\"bytes4\",\"name\":\"_magicNumber\",\"type\":\"bytes4\"}],\"name\":\"registerStandardCallback\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"_hasPermissionReturnValueMock\",\"type\":\"bool\"}],\"name\":\"setHasPermissionReturnValueMock\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_metadata\",\"type\":\"bytes\"}],\"name\":\"setMetadata\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_signatureValidator\",\"type\":\"address\"}],\"name\":\"setSignatureValidator\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_trustedForwarder\",\"type\":\"address\"}],\"name\":\"setTrustedForwarder\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"DO NOT USE IN PRODUCTION!\",\"kind\":\"dev\",\"methods\":{\"deposit(address,uint256,string)\":{\"params\":{\"_amount\":\"The amount of tokens to deposit.\",\"_reference\":\"The reference describing the deposit reason.\",\"_token\":\"The address of the token or address(0) in case of the native token.\"}},\"getTrustedForwarder()\":{\"returns\":{\"_0\":\"The trusted forwarder address.\"}},\"hasPermission(address,address,bytes32,bytes)\":{\"params\":{\"_data\":\"The optional data passed to the `PermissionCondition` registered.\",\"_permissionId\":\"The permission identifier.\",\"_where\":\"The address of the contract.\",\"_who\":\"The address of a EOA or contract to give the permissions.\"},\"returns\":{\"_0\":\"Returns true if the address has permission, false if not.\"}},\"isValidSignature(bytes32,bytes)\":{\"params\":{\"_hash\":\"The hash of the data to be signed.\",\"_signature\":\"The signature byte array associated with `_hash`.\"},\"returns\":{\"_0\":\"Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not.\"}},\"registerStandardCallback(bytes4,bytes4,bytes4)\":{\"params\":{\"_callbackSelector\":\"The selector of the callback function.\",\"_interfaceId\":\"The ID of the interface.\",\"_magicNumber\":\"The magic number to be registered for the function signature.\"}},\"setMetadata(bytes)\":{\"params\":{\"_metadata\":\"The IPFS hash of the new metadata object.\"}},\"setTrustedForwarder(address)\":{\"params\":{\"_trustedForwarder\":\"The trusted forwarder address.\"}}},\"version\":1},\"userdoc\":{\"events\":{\"Deposited(address,address,uint256,string)\":{\"notice\":\"Emitted when a token deposit has been made to the DAO.\"},\"Executed(address,bytes32,(address,uint256,bytes)[],uint256,uint256,bytes[])\":{\"notice\":\"Emitted when a proposal is executed.\"},\"MetadataSet(bytes)\":{\"notice\":\"Emitted when the DAO metadata is updated.\"},\"NativeTokenDeposited(address,uint256)\":{\"notice\":\"Emitted when a native token deposit has been made to the DAO.\"},\"StandardCallbackRegistered(bytes4,bytes4,bytes4)\":{\"notice\":\"Emitted when a standard callback is registered.\"},\"TrustedForwarderSet(address)\":{\"notice\":\"Emitted when a new TrustedForwarder is set on the DAO.\"}},\"kind\":\"user\",\"methods\":{\"deposit(address,uint256,string)\":{\"notice\":\"Deposits (native) tokens to the DAO contract with a reference string.\"},\"getTrustedForwarder()\":{\"notice\":\"Getter for the trusted forwarder verifying the meta transaction.\"},\"hasPermission(address,address,bytes32,bytes)\":{\"notice\":\"Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\"},\"isValidSignature(bytes32,bytes)\":{\"notice\":\"Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\"},\"registerStandardCallback(bytes4,bytes4,bytes4)\":{\"notice\":\"Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\"},\"setMetadata(bytes)\":{\"notice\":\"Updates the DAO metadata (e.g., an IPFS hash).\"},\"setTrustedForwarder(address)\":{\"notice\":\"Setter for the trusted forwarder verifying the meta transaction.\"}},\"notice\":\"A mock DAO that anyone can set permissions in.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/mocks/dao/DAOMock.sol\":\"DAOMock\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"src/dao/IDAO.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IDAO\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for DAOs within the Aragon App DAO framework.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IDAO {\\n /// @notice The action struct to be consumed by the DAO's `execute` function resulting in an external call.\\n /// @param to The address to call.\\n /// @param value The native token value to be sent with the call.\\n /// @param data The bytes-encoded function selector and calldata for the call.\\n struct Action {\\n address to;\\n uint256 value;\\n bytes data;\\n }\\n\\n /// @notice Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\\n /// @param _where The address of the contract.\\n /// @param _who The address of a EOA or contract to give the permissions.\\n /// @param _permissionId The permission identifier.\\n /// @param _data The optional data passed to the `PermissionCondition` registered.\\n /// @return Returns true if the address has permission, false if not.\\n function hasPermission(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes memory _data\\n ) external view returns (bool);\\n\\n /// @notice Updates the DAO metadata (e.g., an IPFS hash).\\n /// @param _metadata The IPFS hash of the new metadata object.\\n function setMetadata(bytes calldata _metadata) external;\\n\\n /// @notice Emitted when the DAO metadata is updated.\\n /// @param metadata The IPFS hash of the new metadata object.\\n event MetadataSet(bytes metadata);\\n\\n /// @notice Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted.\\n /// @param _callId The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce.\\n /// @param _actions The array of actions.\\n /// @param _allowFailureMap A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @return The array of results obtained from the executed actions in `bytes`.\\n /// @return The resulting failure map containing the actions have actually failed.\\n function execute(\\n bytes32 _callId,\\n Action[] memory _actions,\\n uint256 _allowFailureMap\\n ) external returns (bytes[] memory, uint256);\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param actor The address of the caller.\\n /// @param callId The ID of the call.\\n /// @param actions The array of actions executed.\\n /// @param allowFailureMap The allow failure map encoding which actions are allowed to fail.\\n /// @param failureMap The failure map encoding which actions have failed.\\n /// @param execResults The array with the results of the executed actions.\\n /// @dev The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce.\\n event Executed(\\n address indexed actor,\\n bytes32 callId,\\n Action[] actions,\\n uint256 allowFailureMap,\\n uint256 failureMap,\\n bytes[] execResults\\n );\\n\\n /// @notice Emitted when a standard callback is registered.\\n /// @param interfaceId The ID of the interface.\\n /// @param callbackSelector The selector of the callback function.\\n /// @param magicNumber The magic number to be registered for the callback function selector.\\n event StandardCallbackRegistered(\\n bytes4 interfaceId,\\n bytes4 callbackSelector,\\n bytes4 magicNumber\\n );\\n\\n /// @notice Deposits (native) tokens to the DAO contract with a reference string.\\n /// @param _token The address of the token or address(0) in case of the native token.\\n /// @param _amount The amount of tokens to deposit.\\n /// @param _reference The reference describing the deposit reason.\\n function deposit(address _token, uint256 _amount, string calldata _reference) external payable;\\n\\n /// @notice Emitted when a token deposit has been made to the DAO.\\n /// @param sender The address of the sender.\\n /// @param token The address of the deposited token.\\n /// @param amount The amount of tokens deposited.\\n /// @param _reference The reference describing the deposit reason.\\n event Deposited(\\n address indexed sender,\\n address indexed token,\\n uint256 amount,\\n string _reference\\n );\\n\\n /// @notice Emitted when a native token deposit has been made to the DAO.\\n /// @dev This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).\\n /// @param sender The address of the sender.\\n /// @param amount The amount of native tokens deposited.\\n event NativeTokenDeposited(address sender, uint256 amount);\\n\\n /// @notice Setter for the trusted forwarder verifying the meta transaction.\\n /// @param _trustedForwarder The trusted forwarder address.\\n function setTrustedForwarder(address _trustedForwarder) external;\\n\\n /// @notice Getter for the trusted forwarder verifying the meta transaction.\\n /// @return The trusted forwarder address.\\n function getTrustedForwarder() external view returns (address);\\n\\n /// @notice Emitted when a new TrustedForwarder is set on the DAO.\\n /// @param forwarder the new forwarder address.\\n event TrustedForwarderSet(address forwarder);\\n\\n /// @notice Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\\n /// @param _hash The hash of the data to be signed.\\n /// @param _signature The signature byte array associated with `_hash`.\\n /// @return Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not.\\n function isValidSignature(bytes32 _hash, bytes memory _signature) external returns (bytes4);\\n\\n /// @notice Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\\n /// @param _interfaceId The ID of the interface.\\n /// @param _callbackSelector The selector of the callback function.\\n /// @param _magicNumber The magic number to be registered for the function signature.\\n function registerStandardCallback(\\n bytes4 _interfaceId,\\n bytes4 _callbackSelector,\\n bytes4 _magicNumber\\n ) external;\\n\\n /// @notice Removed function being left here to not corrupt the IDAO interface ID. Any call will revert.\\n /// @dev Introduced in v1.0.0. Removed in v1.4.0.\\n function setSignatureValidator(address) external;\\n}\\n\",\"keccak256\":\"0xb7f615523c26de042edce98731c658f44a1edb2464387ac1b642c4c69f57128e\",\"license\":\"AGPL-3.0-or-later\"},\"src/mocks/dao/DAOMock.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice A mock DAO that anyone can set permissions in.\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract DAOMock is IDAO {\\n bool public hasPermissionReturnValueMock;\\n\\n function setHasPermissionReturnValueMock(bool _hasPermissionReturnValueMock) external {\\n hasPermissionReturnValueMock = _hasPermissionReturnValueMock;\\n }\\n\\n function hasPermission(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes memory _data\\n ) external view override returns (bool) {\\n (_where, _who, _permissionId, _data);\\n return hasPermissionReturnValueMock;\\n }\\n\\n function getTrustedForwarder() public pure override returns (address) {\\n return address(0);\\n }\\n\\n function setTrustedForwarder(address _trustedForwarder) external pure override {\\n (_trustedForwarder);\\n }\\n\\n function setMetadata(bytes calldata _metadata) external pure override {\\n (_metadata);\\n }\\n\\n function execute(\\n bytes32 callId,\\n Action[] memory _actions,\\n uint256 allowFailureMap\\n ) external override returns (bytes[] memory execResults, uint256 failureMap) {\\n emit Executed(msg.sender, callId, _actions, allowFailureMap, failureMap, execResults);\\n }\\n\\n function deposit(\\n address _token,\\n uint256 _amount,\\n string calldata _reference\\n ) external payable override {\\n (_token, _amount, _reference);\\n }\\n\\n function setSignatureValidator(address _signatureValidator) external pure override {\\n (_signatureValidator);\\n }\\n\\n function isValidSignature(\\n bytes32 _hash,\\n bytes memory _signature\\n ) external pure override returns (bytes4) {\\n (_hash, _signature);\\n return 0x0;\\n }\\n\\n function registerStandardCallback(\\n bytes4 _interfaceId,\\n bytes4 _callbackSelector,\\n bytes4 _magicNumber\\n ) external pure override {\\n (_interfaceId, _callbackSelector, _magicNumber);\\n }\\n}\\n\",\"keccak256\":\"0xe401a8e836f72beb710c46ec4aa49f2691d62643bfb7de85c68dae4272bc24b6\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[{"astId":10874,"contract":"src/mocks/dao/DAOMock.sol:DAOMock","label":"hasPermissionReturnValueMock","offset":0,"slot":"0","type":"t_bool"}],"types":{"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"}}},"userdoc":{"events":{"Deposited(address,address,uint256,string)":{"notice":"Emitted when a token deposit has been made to the DAO."},"Executed(address,bytes32,(address,uint256,bytes)[],uint256,uint256,bytes[])":{"notice":"Emitted when a proposal is executed."},"MetadataSet(bytes)":{"notice":"Emitted when the DAO metadata is updated."},"NativeTokenDeposited(address,uint256)":{"notice":"Emitted when a native token deposit has been made to the DAO."},"StandardCallbackRegistered(bytes4,bytes4,bytes4)":{"notice":"Emitted when a standard callback is registered."},"TrustedForwarderSet(address)":{"notice":"Emitted when a new TrustedForwarder is set on the DAO."}},"kind":"user","methods":{"deposit(address,uint256,string)":{"notice":"Deposits (native) tokens to the DAO contract with a reference string."},"getTrustedForwarder()":{"notice":"Getter for the trusted forwarder verifying the meta transaction."},"hasPermission(address,address,bytes32,bytes)":{"notice":"Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process."},"isValidSignature(bytes32,bytes)":{"notice":"Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271)."},"registerStandardCallback(bytes4,bytes4,bytes4)":{"notice":"Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature."},"setMetadata(bytes)":{"notice":"Updates the DAO metadata (e.g., an IPFS hash)."},"setTrustedForwarder(address)":{"notice":"Setter for the trusted forwarder verifying the meta transaction."}},"notice":"A mock DAO that anyone can set permissions in.","version":1}}},"src/mocks/permission/auth/DaoAuthorizableMock.sol":{"DaoAuthorizableMock":{"abi":[{"inputs":[{"internalType":"contract IDAO","name":"_dao","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"dao","type":"address"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"name":"DaoUnauthorized","type":"error"},{"inputs":[],"name":"AUTHORIZED_FUNC_PERMISSION_ID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"authorizedFunc","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dao","outputs":[{"internalType":"contract IDAO","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"DO NOT USE IN PRODUCTION!","errors":{"DaoUnauthorized(address,address,address,bytes32)":[{"params":{"dao":"The associated DAO.","permissionId":"The permission identifier.","where":"The context in which the authorization reverted.","who":"The address (EOA or contract) missing the permission."}}]},"kind":"dev","methods":{"dao()":{"returns":{"_0":"The DAO contract."}}},"version":1},"evm":{"bytecode":{"functionDebugData":{"@_11051":{"entryPoint":null,"id":11051,"parameterSlots":1,"returnSlots":0},"@_13065":{"entryPoint":null,"id":13065,"parameterSlots":1,"returnSlots":0},"abi_decode_tuple_t_contract$_IDAO_$10865_fromMemory":{"entryPoint":64,"id":null,"parameterSlots":2,"returnSlots":1}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:320:92","statements":[{"nodeType":"YulBlock","src":"6:3:92","statements":[]},{"body":{"nodeType":"YulBlock","src":"109:209:92","statements":[{"body":{"nodeType":"YulBlock","src":"155:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"164:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"167:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"157:6:92"},"nodeType":"YulFunctionCall","src":"157:12:92"},"nodeType":"YulExpressionStatement","src":"157:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"130:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"139:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"126:3:92"},"nodeType":"YulFunctionCall","src":"126:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"151:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"122:3:92"},"nodeType":"YulFunctionCall","src":"122:32:92"},"nodeType":"YulIf","src":"119:52:92"},{"nodeType":"YulVariableDeclaration","src":"180:29:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"199:9:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"193:5:92"},"nodeType":"YulFunctionCall","src":"193:16:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"184:5:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"272:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"281:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"284:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"274:6:92"},"nodeType":"YulFunctionCall","src":"274:12:92"},"nodeType":"YulExpressionStatement","src":"274:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"231:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"242:5:92"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"257:3:92","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"262:1:92","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"253:3:92"},"nodeType":"YulFunctionCall","src":"253:11:92"},{"kind":"number","nodeType":"YulLiteral","src":"266:1:92","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"249:3:92"},"nodeType":"YulFunctionCall","src":"249:19:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"238:3:92"},"nodeType":"YulFunctionCall","src":"238:31:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"228:2:92"},"nodeType":"YulFunctionCall","src":"228:42:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"221:6:92"},"nodeType":"YulFunctionCall","src":"221:50:92"},"nodeType":"YulIf","src":"218:70:92"},{"nodeType":"YulAssignment","src":"297:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"307:5:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"297:6:92"}]}]},"name":"abi_decode_tuple_t_contract$_IDAO_$10865_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"75:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"86:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"98:6:92","type":""}],"src":"14:304:92"}]},"contents":"{\n { }\n function abi_decode_tuple_t_contract$_IDAO_$10865_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := mload(headStart)\n if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n value0 := value\n }\n}","id":92,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60a060405234801561001057600080fd5b506040516102ee3803806102ee83398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b60805161025e61009060003960008181608d015260e7015261025e6000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c8063403f8575146100465780634162169f14610080578063f09e1623146100b7575b600080fd5b61006d7f6c28b2d088260f42eed051af4616ddda00554ec1880b580a4a9fbf40a70b09eb81565b6040519081526020015b60405180910390f35b6040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152602001610077565b6100bf6100c1565b005b7f6c28b2d088260f42eed051af4616ddda00554ec1880b580a4a9fbf40a70b09eb6101117f0000000000000000000000000000000000000000000000000000000000000000303384600036610114565b50565b604051637ef7c88360e11b81526001600160a01b0387169063fdef91069061014890889088908890889088906004016101d4565b602060405180830381865afa158015610165573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101899190610228565b6101cc57604051630cb6f8ed60e21b81526001600160a01b0380881660048301528087166024830152851660448201526064810184905260840160405180910390fd5b505050505050565b60006001600160a01b03808816835280871660208401525084604083015260806060830152826080830152828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b60006020828403121561023a57600080fd5b8151801515811461024a57600080fd5b939250505056fea164736f6c6343000811000a","opcodes":"PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x2EE CODESIZE SUB DUP1 PUSH2 0x2EE DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0x40 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x80 MSTORE PUSH2 0x70 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x52 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x69 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH2 0x25E PUSH2 0x90 PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH1 0x8D ADD MSTORE PUSH1 0xE7 ADD MSTORE PUSH2 0x25E PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x41 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x403F8575 EQ PUSH2 0x46 JUMPI DUP1 PUSH4 0x4162169F EQ PUSH2 0x80 JUMPI DUP1 PUSH4 0xF09E1623 EQ PUSH2 0xB7 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x6D PUSH32 0x6C28B2D088260F42EED051AF4616DDDA00554EC1880B580A4A9FBF40A70B09EB DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x77 JUMP JUMPDEST PUSH2 0xBF PUSH2 0xC1 JUMP JUMPDEST STOP JUMPDEST PUSH32 0x6C28B2D088260F42EED051AF4616DDDA00554EC1880B580A4A9FBF40A70B09EB PUSH2 0x111 PUSH32 0x0 ADDRESS CALLER DUP5 PUSH1 0x0 CALLDATASIZE PUSH2 0x114 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x7EF7C883 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0xFDEF9106 SWAP1 PUSH2 0x148 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x1D4 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x165 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x189 SWAP2 SWAP1 PUSH2 0x228 JUMP JUMPDEST PUSH2 0x1CC JUMPI PUSH1 0x40 MLOAD PUSH4 0xCB6F8ED PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND PUSH1 0x4 DUP4 ADD MSTORE DUP1 DUP8 AND PUSH1 0x24 DUP4 ADD MSTORE DUP6 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x84 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND DUP4 MSTORE DUP1 DUP8 AND PUSH1 0x20 DUP5 ADD MSTORE POP DUP5 PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x80 PUSH1 0x60 DUP4 ADD MSTORE DUP3 PUSH1 0x80 DUP4 ADD MSTORE DUP3 DUP5 PUSH1 0xA0 DUP5 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0xA0 DUP5 DUP5 ADD ADD MSTORE PUSH1 0xA0 PUSH1 0x1F NOT PUSH1 0x1F DUP6 ADD AND DUP4 ADD ADD SWAP1 POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x23A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x24A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"314:359:44:-:0;;;470:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;844:10:66;;;314:359:44;;14:304:92;98:6;151:2;139:9;130:7;126:23;122:32;119:52;;;167:1;164;157:12;119:52;193:16;;-1:-1:-1;;;;;238:31:92;;228:42;;218:70;;284:1;281;274:12;218:70;307:5;14:304;-1:-1:-1;;;14:304:92:o;:::-;314:359:44;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@AUTHORIZED_FUNC_PERMISSION_ID_11041":{"entryPoint":null,"id":11041,"parameterSlots":0,"returnSlots":0},"@_auth_13211":{"entryPoint":276,"id":13211,"parameterSlots":6,"returnSlots":0},"@_msgData_9285":{"entryPoint":null,"id":9285,"parameterSlots":0,"returnSlots":2},"@_msgSender_9276":{"entryPoint":null,"id":9276,"parameterSlots":0,"returnSlots":1},"@authorizedFunc_11058":{"entryPoint":193,"id":11058,"parameterSlots":0,"returnSlots":0},"@dao_13075":{"entryPoint":null,"id":13075,"parameterSlots":0,"returnSlots":1},"abi_decode_tuple_t_bool_fromMemory":{"entryPoint":552,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address_t_address_t_address_t_bytes32__to_t_address_t_address_t_address_t_bytes32__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":5,"returnSlots":1},"abi_encode_tuple_t_address_t_address_t_bytes32_t_bytes_calldata_ptr__to_t_address_t_address_t_bytes32_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":468,"id":null,"parameterSlots":6,"returnSlots":1},"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_contract$_IDAO_$10865__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:1894:92","statements":[{"nodeType":"YulBlock","src":"6:3:92","statements":[]},{"body":{"nodeType":"YulBlock","src":"115:76:92","statements":[{"nodeType":"YulAssignment","src":"125:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"137:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"148:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"133:3:92"},"nodeType":"YulFunctionCall","src":"133:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"125:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"167:9:92"},{"name":"value0","nodeType":"YulIdentifier","src":"178:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"160:6:92"},"nodeType":"YulFunctionCall","src":"160:25:92"},"nodeType":"YulExpressionStatement","src":"160:25:92"}]},"name":"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"84:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"95:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"106:4:92","type":""}],"src":"14:177:92"},{"body":{"nodeType":"YulBlock","src":"311:125:92","statements":[{"nodeType":"YulAssignment","src":"321:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"333:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"344:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"329:3:92"},"nodeType":"YulFunctionCall","src":"329:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"321:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"363:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"378:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"386:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"374:3:92"},"nodeType":"YulFunctionCall","src":"374:55:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"356:6:92"},"nodeType":"YulFunctionCall","src":"356:74:92"},"nodeType":"YulExpressionStatement","src":"356:74:92"}]},"name":"abi_encode_tuple_t_contract$_IDAO_$10865__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"280:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"291:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"302:4:92","type":""}],"src":"196:240:92"},{"body":{"nodeType":"YulBlock","src":"654:472:92","statements":[{"nodeType":"YulVariableDeclaration","src":"664:52:92","value":{"kind":"number","nodeType":"YulLiteral","src":"674:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"668:2:92","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"732:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"747:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"755:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"743:3:92"},"nodeType":"YulFunctionCall","src":"743:15:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"725:6:92"},"nodeType":"YulFunctionCall","src":"725:34:92"},"nodeType":"YulExpressionStatement","src":"725:34:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"779:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"790:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"775:3:92"},"nodeType":"YulFunctionCall","src":"775:18:92"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"799:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"807:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"795:3:92"},"nodeType":"YulFunctionCall","src":"795:15:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"768:6:92"},"nodeType":"YulFunctionCall","src":"768:43:92"},"nodeType":"YulExpressionStatement","src":"768:43:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"831:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"842:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"827:3:92"},"nodeType":"YulFunctionCall","src":"827:18:92"},{"name":"value2","nodeType":"YulIdentifier","src":"847:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"820:6:92"},"nodeType":"YulFunctionCall","src":"820:34:92"},"nodeType":"YulExpressionStatement","src":"820:34:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"874:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"885:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"870:3:92"},"nodeType":"YulFunctionCall","src":"870:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"890:3:92","type":"","value":"128"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"863:6:92"},"nodeType":"YulFunctionCall","src":"863:31:92"},"nodeType":"YulExpressionStatement","src":"863:31:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"914:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"925:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"910:3:92"},"nodeType":"YulFunctionCall","src":"910:19:92"},{"name":"value4","nodeType":"YulIdentifier","src":"931:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"903:6:92"},"nodeType":"YulFunctionCall","src":"903:35:92"},"nodeType":"YulExpressionStatement","src":"903:35:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"964:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"975:3:92","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"960:3:92"},"nodeType":"YulFunctionCall","src":"960:19:92"},{"name":"value3","nodeType":"YulIdentifier","src":"981:6:92"},{"name":"value4","nodeType":"YulIdentifier","src":"989:6:92"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"947:12:92"},"nodeType":"YulFunctionCall","src":"947:49:92"},"nodeType":"YulExpressionStatement","src":"947:49:92"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1020:9:92"},{"name":"value4","nodeType":"YulIdentifier","src":"1031:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1016:3:92"},"nodeType":"YulFunctionCall","src":"1016:22:92"},{"kind":"number","nodeType":"YulLiteral","src":"1040:3:92","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1012:3:92"},"nodeType":"YulFunctionCall","src":"1012:32:92"},{"kind":"number","nodeType":"YulLiteral","src":"1046:1:92","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1005:6:92"},"nodeType":"YulFunctionCall","src":"1005:43:92"},"nodeType":"YulExpressionStatement","src":"1005:43:92"},{"nodeType":"YulAssignment","src":"1057:63:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1073:9:92"},{"arguments":[{"arguments":[{"name":"value4","nodeType":"YulIdentifier","src":"1092:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"1100:2:92","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1088:3:92"},"nodeType":"YulFunctionCall","src":"1088:15:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1109:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"1105:3:92"},"nodeType":"YulFunctionCall","src":"1105:7:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1084:3:92"},"nodeType":"YulFunctionCall","src":"1084:29:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1069:3:92"},"nodeType":"YulFunctionCall","src":"1069:45:92"},{"kind":"number","nodeType":"YulLiteral","src":"1116:3:92","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1065:3:92"},"nodeType":"YulFunctionCall","src":"1065:55:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1057:4:92"}]}]},"name":"abi_encode_tuple_t_address_t_address_t_bytes32_t_bytes_calldata_ptr__to_t_address_t_address_t_bytes32_t_bytes_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"591:9:92","type":""},{"name":"value4","nodeType":"YulTypedName","src":"602:6:92","type":""},{"name":"value3","nodeType":"YulTypedName","src":"610:6:92","type":""},{"name":"value2","nodeType":"YulTypedName","src":"618:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"626:6:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"634:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"645:4:92","type":""}],"src":"441:685:92"},{"body":{"nodeType":"YulBlock","src":"1209:199:92","statements":[{"body":{"nodeType":"YulBlock","src":"1255:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1264:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1267:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1257:6:92"},"nodeType":"YulFunctionCall","src":"1257:12:92"},"nodeType":"YulExpressionStatement","src":"1257:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1230:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"1239:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1226:3:92"},"nodeType":"YulFunctionCall","src":"1226:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"1251:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1222:3:92"},"nodeType":"YulFunctionCall","src":"1222:32:92"},"nodeType":"YulIf","src":"1219:52:92"},{"nodeType":"YulVariableDeclaration","src":"1280:29:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1299:9:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1293:5:92"},"nodeType":"YulFunctionCall","src":"1293:16:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"1284:5:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"1362:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1371:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1374:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1364:6:92"},"nodeType":"YulFunctionCall","src":"1364:12:92"},"nodeType":"YulExpressionStatement","src":"1364:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1331:5:92"},{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1352:5:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1345:6:92"},"nodeType":"YulFunctionCall","src":"1345:13:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1338:6:92"},"nodeType":"YulFunctionCall","src":"1338:21:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1328:2:92"},"nodeType":"YulFunctionCall","src":"1328:32:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1321:6:92"},"nodeType":"YulFunctionCall","src":"1321:40:92"},"nodeType":"YulIf","src":"1318:60:92"},{"nodeType":"YulAssignment","src":"1387:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"1397:5:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1387:6:92"}]}]},"name":"abi_decode_tuple_t_bool_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1175:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1186:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1198:6:92","type":""}],"src":"1131:277:92"},{"body":{"nodeType":"YulBlock","src":"1598:294:92","statements":[{"nodeType":"YulAssignment","src":"1608:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1620:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1631:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1616:3:92"},"nodeType":"YulFunctionCall","src":"1616:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1608:4:92"}]},{"nodeType":"YulVariableDeclaration","src":"1644:52:92","value":{"kind":"number","nodeType":"YulLiteral","src":"1654:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"1648:2:92","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1712:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1727:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"1735:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1723:3:92"},"nodeType":"YulFunctionCall","src":"1723:15:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1705:6:92"},"nodeType":"YulFunctionCall","src":"1705:34:92"},"nodeType":"YulExpressionStatement","src":"1705:34:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1759:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1770:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1755:3:92"},"nodeType":"YulFunctionCall","src":"1755:18:92"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"1779:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"1787:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1775:3:92"},"nodeType":"YulFunctionCall","src":"1775:15:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1748:6:92"},"nodeType":"YulFunctionCall","src":"1748:43:92"},"nodeType":"YulExpressionStatement","src":"1748:43:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1811:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1822:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1807:3:92"},"nodeType":"YulFunctionCall","src":"1807:18:92"},{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"1831:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"1839:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1827:3:92"},"nodeType":"YulFunctionCall","src":"1827:15:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1800:6:92"},"nodeType":"YulFunctionCall","src":"1800:43:92"},"nodeType":"YulExpressionStatement","src":"1800:43:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1863:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1874:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1859:3:92"},"nodeType":"YulFunctionCall","src":"1859:18:92"},{"name":"value3","nodeType":"YulIdentifier","src":"1879:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1852:6:92"},"nodeType":"YulFunctionCall","src":"1852:34:92"},"nodeType":"YulExpressionStatement","src":"1852:34:92"}]},"name":"abi_encode_tuple_t_address_t_address_t_address_t_bytes32__to_t_address_t_address_t_address_t_bytes32__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1543:9:92","type":""},{"name":"value3","nodeType":"YulTypedName","src":"1554:6:92","type":""},{"name":"value2","nodeType":"YulTypedName","src":"1562:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1570:6:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1578:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1589:4:92","type":""}],"src":"1413:479:92"}]},"contents":"{\n { }\n function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_encode_tuple_t_contract$_IDAO_$10865__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_encode_tuple_t_address_t_address_t_bytes32_t_bytes_calldata_ptr__to_t_address_t_address_t_bytes32_t_bytes_memory_ptr__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n {\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n mstore(add(headStart, 64), value2)\n mstore(add(headStart, 96), 128)\n mstore(add(headStart, 128), value4)\n calldatacopy(add(headStart, 160), value3, value4)\n mstore(add(add(headStart, value4), 160), 0)\n tail := add(add(headStart, and(add(value4, 31), not(31))), 160)\n }\n function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := mload(headStart)\n if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_address_t_address_t_address_t_bytes32__to_t_address_t_address_t_address_t_bytes32__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n {\n tail := add(headStart, 128)\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n mstore(add(headStart, 64), and(value2, _1))\n mstore(add(headStart, 96), value3)\n }\n}","id":92,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{"13053":[{"length":32,"start":141},{"length":32,"start":231}]},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100415760003560e01c8063403f8575146100465780634162169f14610080578063f09e1623146100b7575b600080fd5b61006d7f6c28b2d088260f42eed051af4616ddda00554ec1880b580a4a9fbf40a70b09eb81565b6040519081526020015b60405180910390f35b6040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152602001610077565b6100bf6100c1565b005b7f6c28b2d088260f42eed051af4616ddda00554ec1880b580a4a9fbf40a70b09eb6101117f0000000000000000000000000000000000000000000000000000000000000000303384600036610114565b50565b604051637ef7c88360e11b81526001600160a01b0387169063fdef91069061014890889088908890889088906004016101d4565b602060405180830381865afa158015610165573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101899190610228565b6101cc57604051630cb6f8ed60e21b81526001600160a01b0380881660048301528087166024830152851660448201526064810184905260840160405180910390fd5b505050505050565b60006001600160a01b03808816835280871660208401525084604083015260806060830152826080830152828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b60006020828403121561023a57600080fd5b8151801515811461024a57600080fd5b939250505056fea164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x41 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x403F8575 EQ PUSH2 0x46 JUMPI DUP1 PUSH4 0x4162169F EQ PUSH2 0x80 JUMPI DUP1 PUSH4 0xF09E1623 EQ PUSH2 0xB7 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x6D PUSH32 0x6C28B2D088260F42EED051AF4616DDDA00554EC1880B580A4A9FBF40A70B09EB DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x77 JUMP JUMPDEST PUSH2 0xBF PUSH2 0xC1 JUMP JUMPDEST STOP JUMPDEST PUSH32 0x6C28B2D088260F42EED051AF4616DDDA00554EC1880B580A4A9FBF40A70B09EB PUSH2 0x111 PUSH32 0x0 ADDRESS CALLER DUP5 PUSH1 0x0 CALLDATASIZE PUSH2 0x114 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x7EF7C883 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0xFDEF9106 SWAP1 PUSH2 0x148 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x1D4 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x165 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x189 SWAP2 SWAP1 PUSH2 0x228 JUMP JUMPDEST PUSH2 0x1CC JUMPI PUSH1 0x40 MLOAD PUSH4 0xCB6F8ED PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND PUSH1 0x4 DUP4 ADD MSTORE DUP1 DUP8 AND PUSH1 0x24 DUP4 ADD MSTORE DUP6 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x84 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND DUP4 MSTORE DUP1 DUP8 AND PUSH1 0x20 DUP5 ADD MSTORE POP DUP5 PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x80 PUSH1 0x60 DUP4 ADD MSTORE DUP3 PUSH1 0x80 DUP4 ADD MSTORE DUP3 DUP5 PUSH1 0xA0 DUP5 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0xA0 DUP5 DUP5 ADD ADD MSTORE PUSH1 0xA0 PUSH1 0x1F NOT PUSH1 0x1F DUP6 ADD AND DUP4 ADD ADD SWAP1 POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x23A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x24A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"314:359:44:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;368:95;;424:39;368:95;;;;;160:25:92;;;148:2;133:18;368:95:44;;;;;;;;943:69:66;;;-1:-1:-1;;;;;1002:3:66;374:55:92;356:74;;344:2;329:18;943:69:66;196:240:92;523:148:44;;;:::i;:::-;;;424:39;1352:66:66;1358:3;1371:4;734:10:34;1392:13:66;808:14:34;;1352:5:66;:66::i;:::-;523:148:44;:::o;1041:363:68:-;1180:54;;-1:-1:-1;;;1180:54:68;;-1:-1:-1;;;;;1180:18:68;;;;;:54;;1199:6;;1207:4;;1213:13;;1228:5;;;;1180:54;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1175:226;;1251:150;;-1:-1:-1;;;1251:150:68;;-1:-1:-1;;;;;1723:15:92;;;1251:150:68;;;1705:34:92;1775:15;;;1755:18;;;1748:43;1827:15;;1807:18;;;1800:43;1859:18;;;1852:34;;;1616:19;;1251:150:68;;;;;;;1175:226;1041:363;;;;;;:::o;441:685:92:-;645:4;-1:-1:-1;;;;;755:2:92;747:6;743:15;732:9;725:34;807:2;799:6;795:15;790:2;779:9;775:18;768:43;;847:6;842:2;831:9;827:18;820:34;890:3;885:2;874:9;870:18;863:31;931:6;925:3;914:9;910:19;903:35;989:6;981;975:3;964:9;960:19;947:49;1046:1;1040:3;1031:6;1020:9;1016:22;1012:32;1005:43;1116:3;1109:2;1105:7;1100:2;1092:6;1088:15;1084:29;1073:9;1069:45;1065:55;1057:63;;441:685;;;;;;;;:::o;1131:277::-;1198:6;1251:2;1239:9;1230:7;1226:23;1222:32;1219:52;;;1267:1;1264;1257:12;1219:52;1299:9;1293:16;1352:5;1345:13;1338:21;1331:5;1328:32;1318:60;;1374:1;1371;1364:12;1318:60;1397:5;1131:277;-1:-1:-1;;;1131:277:92:o"},"gasEstimates":{"creation":{"codeDepositCost":"121200","executionCost":"infinite","totalCost":"infinite"},"external":{"AUTHORIZED_FUNC_PERMISSION_ID()":"162","authorizedFunc()":"infinite","dao()":"infinite"}},"methodIdentifiers":{"AUTHORIZED_FUNC_PERMISSION_ID()":"403f8575","authorizedFunc()":"f09e1623","dao()":"4162169f"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IDAO\",\"name\":\"_dao\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"dao\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"name\":\"DaoUnauthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AUTHORIZED_FUNC_PERMISSION_ID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"authorizedFunc\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"dao\",\"outputs\":[{\"internalType\":\"contract IDAO\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"DO NOT USE IN PRODUCTION!\",\"errors\":{\"DaoUnauthorized(address,address,address,bytes32)\":[{\"params\":{\"dao\":\"The associated DAO.\",\"permissionId\":\"The permission identifier.\",\"where\":\"The context in which the authorization reverted.\",\"who\":\"The address (EOA or contract) missing the permission.\"}}]},\"kind\":\"dev\",\"methods\":{\"dao()\":{\"returns\":{\"_0\":\"The DAO contract.\"}}},\"version\":1},\"userdoc\":{\"errors\":{\"DaoUnauthorized(address,address,address,bytes32)\":[{\"notice\":\"Thrown if a call is unauthorized in the associated DAO.\"}]},\"kind\":\"user\",\"methods\":{\"dao()\":{\"notice\":\"Returns the DAO contract.\"}},\"notice\":\"A mock contract containing a function protected by the `auth` modifier.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/mocks/permission/auth/DaoAuthorizableMock.sol\":\"DaoAuthorizableMock\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n function _contextSuffixLength() internal view virtual returns (uint256) {\\n return 0;\\n }\\n}\\n\",\"keccak256\":\"0xa92e4fa126feb6907daa0513ddd816b2eb91f30a808de54f63c17d0e162c3439\",\"license\":\"MIT\"},\"src/dao/IDAO.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IDAO\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for DAOs within the Aragon App DAO framework.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IDAO {\\n /// @notice The action struct to be consumed by the DAO's `execute` function resulting in an external call.\\n /// @param to The address to call.\\n /// @param value The native token value to be sent with the call.\\n /// @param data The bytes-encoded function selector and calldata for the call.\\n struct Action {\\n address to;\\n uint256 value;\\n bytes data;\\n }\\n\\n /// @notice Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\\n /// @param _where The address of the contract.\\n /// @param _who The address of a EOA or contract to give the permissions.\\n /// @param _permissionId The permission identifier.\\n /// @param _data The optional data passed to the `PermissionCondition` registered.\\n /// @return Returns true if the address has permission, false if not.\\n function hasPermission(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes memory _data\\n ) external view returns (bool);\\n\\n /// @notice Updates the DAO metadata (e.g., an IPFS hash).\\n /// @param _metadata The IPFS hash of the new metadata object.\\n function setMetadata(bytes calldata _metadata) external;\\n\\n /// @notice Emitted when the DAO metadata is updated.\\n /// @param metadata The IPFS hash of the new metadata object.\\n event MetadataSet(bytes metadata);\\n\\n /// @notice Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted.\\n /// @param _callId The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce.\\n /// @param _actions The array of actions.\\n /// @param _allowFailureMap A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @return The array of results obtained from the executed actions in `bytes`.\\n /// @return The resulting failure map containing the actions have actually failed.\\n function execute(\\n bytes32 _callId,\\n Action[] memory _actions,\\n uint256 _allowFailureMap\\n ) external returns (bytes[] memory, uint256);\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param actor The address of the caller.\\n /// @param callId The ID of the call.\\n /// @param actions The array of actions executed.\\n /// @param allowFailureMap The allow failure map encoding which actions are allowed to fail.\\n /// @param failureMap The failure map encoding which actions have failed.\\n /// @param execResults The array with the results of the executed actions.\\n /// @dev The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce.\\n event Executed(\\n address indexed actor,\\n bytes32 callId,\\n Action[] actions,\\n uint256 allowFailureMap,\\n uint256 failureMap,\\n bytes[] execResults\\n );\\n\\n /// @notice Emitted when a standard callback is registered.\\n /// @param interfaceId The ID of the interface.\\n /// @param callbackSelector The selector of the callback function.\\n /// @param magicNumber The magic number to be registered for the callback function selector.\\n event StandardCallbackRegistered(\\n bytes4 interfaceId,\\n bytes4 callbackSelector,\\n bytes4 magicNumber\\n );\\n\\n /// @notice Deposits (native) tokens to the DAO contract with a reference string.\\n /// @param _token The address of the token or address(0) in case of the native token.\\n /// @param _amount The amount of tokens to deposit.\\n /// @param _reference The reference describing the deposit reason.\\n function deposit(address _token, uint256 _amount, string calldata _reference) external payable;\\n\\n /// @notice Emitted when a token deposit has been made to the DAO.\\n /// @param sender The address of the sender.\\n /// @param token The address of the deposited token.\\n /// @param amount The amount of tokens deposited.\\n /// @param _reference The reference describing the deposit reason.\\n event Deposited(\\n address indexed sender,\\n address indexed token,\\n uint256 amount,\\n string _reference\\n );\\n\\n /// @notice Emitted when a native token deposit has been made to the DAO.\\n /// @dev This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).\\n /// @param sender The address of the sender.\\n /// @param amount The amount of native tokens deposited.\\n event NativeTokenDeposited(address sender, uint256 amount);\\n\\n /// @notice Setter for the trusted forwarder verifying the meta transaction.\\n /// @param _trustedForwarder The trusted forwarder address.\\n function setTrustedForwarder(address _trustedForwarder) external;\\n\\n /// @notice Getter for the trusted forwarder verifying the meta transaction.\\n /// @return The trusted forwarder address.\\n function getTrustedForwarder() external view returns (address);\\n\\n /// @notice Emitted when a new TrustedForwarder is set on the DAO.\\n /// @param forwarder the new forwarder address.\\n event TrustedForwarderSet(address forwarder);\\n\\n /// @notice Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\\n /// @param _hash The hash of the data to be signed.\\n /// @param _signature The signature byte array associated with `_hash`.\\n /// @return Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not.\\n function isValidSignature(bytes32 _hash, bytes memory _signature) external returns (bytes4);\\n\\n /// @notice Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\\n /// @param _interfaceId The ID of the interface.\\n /// @param _callbackSelector The selector of the callback function.\\n /// @param _magicNumber The magic number to be registered for the function signature.\\n function registerStandardCallback(\\n bytes4 _interfaceId,\\n bytes4 _callbackSelector,\\n bytes4 _magicNumber\\n ) external;\\n\\n /// @notice Removed function being left here to not corrupt the IDAO interface ID. Any call will revert.\\n /// @dev Introduced in v1.0.0. Removed in v1.4.0.\\n function setSignatureValidator(address) external;\\n}\\n\",\"keccak256\":\"0xb7f615523c26de042edce98731c658f44a1edb2464387ac1b642c4c69f57128e\",\"license\":\"AGPL-3.0-or-later\"},\"src/mocks/permission/auth/DaoAuthorizableMock.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {DaoAuthorizable} from \\\"../../../permission/auth/DaoAuthorizable.sol\\\";\\nimport {IDAO} from \\\"../../../dao/IDAO.sol\\\";\\n\\n/// @notice A mock contract containing a function protected by the `auth` modifier.\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract DaoAuthorizableMock is DaoAuthorizable {\\n bytes32 public constant AUTHORIZED_FUNC_PERMISSION_ID = keccak256(\\\"AUTHORIZED_FUNC_PERMISSION\\\");\\n\\n constructor(IDAO _dao) DaoAuthorizable(_dao) {}\\n\\n function authorizedFunc()\\n external\\n auth(AUTHORIZED_FUNC_PERMISSION_ID)\\n // solhint-disable-next-line no-empty-blocks\\n {\\n\\n }\\n}\\n\",\"keccak256\":\"0xfb5d33e2cebb0033e5287c949dbd229867234305b88f739c4c00cef64c4e2766\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/DaoAuthorizable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {Context} from \\\"@openzeppelin/contracts/utils/Context.sol\\\";\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\nimport {_auth} from \\\"./auth.sol\\\";\\n\\n/// @title DaoAuthorizable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract contract providing a meta-transaction compatible modifier for non-upgradeable contracts instantiated via the `new` keyword to authorize function calls through an associated DAO.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract DaoAuthorizable is Context {\\n /// @notice The associated DAO managing the permissions of inheriting contracts.\\n IDAO private immutable DAO;\\n\\n /// @notice Constructs the contract by setting the associated DAO.\\n /// @param _dao The associated DAO address.\\n constructor(IDAO _dao) {\\n DAO = _dao;\\n }\\n\\n /// @notice Returns the DAO contract.\\n /// @return The DAO contract.\\n function dao() public view returns (IDAO) {\\n return DAO;\\n }\\n\\n /// @notice A modifier to make functions on inheriting contracts authorized. Permissions to call the function are checked through the associated DAO's permission manager.\\n /// @param _permissionId The permission identifier required to call the method this modifier is applied to.\\n modifier auth(bytes32 _permissionId) {\\n _auth(DAO, address(this), _msgSender(), _permissionId, _msgData());\\n _;\\n }\\n}\\n\",\"keccak256\":\"0x3d0be91b4f5854ed2d2c51b53fe7ffba58cc968e972015cf60eb3ea100543e64\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/auth.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice Thrown if a call is unauthorized in the associated DAO.\\n/// @param dao The associated DAO.\\n/// @param where The context in which the authorization reverted.\\n/// @param who The address (EOA or contract) missing the permission.\\n/// @param permissionId The permission identifier.\\nerror DaoUnauthorized(address dao, address where, address who, bytes32 permissionId);\\n\\n/// @notice A free function checking if a caller is granted permissions on a target contract via a permission identifier that redirects the approval to a `PermissionCondition` if this was specified in the setup.\\n/// @param _where The address of the target contract for which `who` receives permission.\\n/// @param _who The address (EOA or contract) owning the permission.\\n/// @param _permissionId The permission identifier.\\n/// @param _data The optional data passed to the `PermissionCondition` registered.\\n/// @custom:security-contact sirt@aragon.org\\nfunction _auth(\\n IDAO _dao,\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes calldata _data\\n) view {\\n if (!_dao.hasPermission(_where, _who, _permissionId, _data))\\n revert DaoUnauthorized({\\n dao: address(_dao),\\n where: _where,\\n who: _who,\\n permissionId: _permissionId\\n });\\n}\\n\",\"keccak256\":\"0x878764b4f87fe0651fb3798fb9cb87c952f8c6caf6ae79c7f09de84df6c00298\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"errors":{"DaoUnauthorized(address,address,address,bytes32)":[{"notice":"Thrown if a call is unauthorized in the associated DAO."}]},"kind":"user","methods":{"dao()":{"notice":"Returns the DAO contract."}},"notice":"A mock contract containing a function protected by the `auth` modifier.","version":1}}},"src/mocks/permission/auth/DaoAuthorizableUpgradeableMock.sol":{"DaoAuthorizableUpgradeableMock":{"abi":[{"inputs":[{"internalType":"address","name":"dao","type":"address"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"name":"DaoUnauthorized","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"inputs":[],"name":"AUTHORIZED_FUNC_PERMISSION_ID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"authorizedFunc","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dao","outputs":[{"internalType":"contract IDAO","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IDAO","name":"_dao","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IDAO","name":"_dao","type":"address"}],"name":"notAnInitializer","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"DO NOT USE IN PRODUCTION!","errors":{"DaoUnauthorized(address,address,address,bytes32)":[{"params":{"dao":"The associated DAO.","permissionId":"The permission identifier.","where":"The context in which the authorization reverted.","who":"The address (EOA or contract) missing the permission."}}]},"kind":"dev","methods":{"dao()":{"returns":{"_0":"The DAO contract."}}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b50610487806100206000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80638883bbd7116100505780638883bbd7146100c1578063c4d66de8146100d6578063f09e1623146100e957600080fd5b8063403f85751461006c5780634162169f146100a6575b600080fd5b6100937f6c28b2d088260f42eed051af4616ddda00554ec1880b580a4a9fbf40a70b09eb81565b6040519081526020015b60405180910390f35b6033546040516001600160a01b03909116815260200161009d565b6100d46100cf3660046103d4565b6100f1565b005b6100d46100e43660046103d4565b6100fd565b6100d4610224565b6100fa81610261565b50565b600054610100900460ff161580801561011d5750600054600160ff909116105b806101375750303b158015610137575060005460ff166001145b6101ae5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b6000805460ff1916600117905580156101d1576000805461ff0019166101001790555b6101da82610261565b8015610220576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b6033547f6c28b2d088260f42eed051af4616ddda00554ec1880b580a4a9fbf40a70b09eb906100fa906001600160a01b0316303384600036610318565b600054610100900460ff166102de5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016101a5565b603380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b604051637ef7c88360e11b81526001600160a01b0387169063fdef91069061034c9088908890889088908890600401610404565b602060405180830381865afa158015610369573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061038d9190610458565b6103cc57604051630cb6f8ed60e21b81526001600160a01b038088166004830152808716602483015285166044820152606481018490526084016101a5565b505050505050565b6000602082840312156103e657600080fd5b81356001600160a01b03811681146103fd57600080fd5b9392505050565b60006001600160a01b03808816835280871660208401525084604083015260806060830152826080830152828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b60006020828403121561046a57600080fd5b815180151581146103fd57600080fdfea164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x487 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x67 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8883BBD7 GT PUSH2 0x50 JUMPI DUP1 PUSH4 0x8883BBD7 EQ PUSH2 0xC1 JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0xD6 JUMPI DUP1 PUSH4 0xF09E1623 EQ PUSH2 0xE9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x403F8575 EQ PUSH2 0x6C JUMPI DUP1 PUSH4 0x4162169F EQ PUSH2 0xA6 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x93 PUSH32 0x6C28B2D088260F42EED051AF4616DDDA00554EC1880B580A4A9FBF40A70B09EB DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x33 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x9D JUMP JUMPDEST PUSH2 0xD4 PUSH2 0xCF CALLDATASIZE PUSH1 0x4 PUSH2 0x3D4 JUMP JUMPDEST PUSH2 0xF1 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xD4 PUSH2 0xE4 CALLDATASIZE PUSH1 0x4 PUSH2 0x3D4 JUMP JUMPDEST PUSH2 0xFD JUMP JUMPDEST PUSH2 0xD4 PUSH2 0x224 JUMP JUMPDEST PUSH2 0xFA DUP2 PUSH2 0x261 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 DUP1 ISZERO PUSH2 0x11D JUMPI POP PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xFF SWAP1 SWAP2 AND LT JUMPDEST DUP1 PUSH2 0x137 JUMPI POP ADDRESS EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x137 JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF AND PUSH1 0x1 EQ JUMPDEST PUSH2 0x1AE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x647920696E697469616C697A6564000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE DUP1 ISZERO PUSH2 0x1D1 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND PUSH2 0x100 OR SWAP1 SSTORE JUMPDEST PUSH2 0x1DA DUP3 PUSH2 0x261 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x220 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x33 SLOAD PUSH32 0x6C28B2D088260F42EED051AF4616DDDA00554EC1880B580A4A9FBF40A70B09EB SWAP1 PUSH2 0xFA SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ADDRESS CALLER DUP5 PUSH1 0x0 CALLDATASIZE PUSH2 0x318 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x2DE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6E697469616C697A696E67000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x1A5 JUMP JUMPDEST PUSH1 0x33 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x7EF7C883 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0xFDEF9106 SWAP1 PUSH2 0x34C SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x404 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x369 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x38D SWAP2 SWAP1 PUSH2 0x458 JUMP JUMPDEST PUSH2 0x3CC JUMPI PUSH1 0x40 MLOAD PUSH4 0xCB6F8ED PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND PUSH1 0x4 DUP4 ADD MSTORE DUP1 DUP8 AND PUSH1 0x24 DUP4 ADD MSTORE DUP6 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x84 ADD PUSH2 0x1A5 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x3FD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND DUP4 MSTORE DUP1 DUP8 AND PUSH1 0x20 DUP5 ADD MSTORE POP DUP5 PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x80 PUSH1 0x60 DUP4 ADD MSTORE DUP3 PUSH1 0x80 DUP4 ADD MSTORE DUP3 DUP5 PUSH1 0xA0 DUP5 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0xA0 DUP5 DUP5 ADD ADD MSTORE PUSH1 0xA0 PUSH1 0x1F NOT PUSH1 0x1F DUP6 ADD AND DUP4 ADD ADD SWAP1 POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x46A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x3FD JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"336:729:45:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@AUTHORIZED_FUNC_PERMISSION_ID_11073":{"entryPoint":null,"id":11073,"parameterSlots":0,"returnSlots":0},"@__DaoAuthorizableUpgradeable_init_13125":{"entryPoint":609,"id":13125,"parameterSlots":1,"returnSlots":0},"@_auth_13211":{"entryPoint":792,"id":13211,"parameterSlots":6,"returnSlots":0},"@_msgData_2579":{"entryPoint":null,"id":2579,"parameterSlots":0,"returnSlots":2},"@_msgSender_2570":{"entryPoint":null,"id":2570,"parameterSlots":0,"returnSlots":1},"@authorizedFunc_11105":{"entryPoint":548,"id":11105,"parameterSlots":0,"returnSlots":0},"@dao_13135":{"entryPoint":null,"id":13135,"parameterSlots":0,"returnSlots":1},"@initialize_11086":{"entryPoint":253,"id":11086,"parameterSlots":1,"returnSlots":0},"@isContract_689":{"entryPoint":null,"id":689,"parameterSlots":1,"returnSlots":1},"@notAnInitializer_11098":{"entryPoint":241,"id":11098,"parameterSlots":1,"returnSlots":0},"abi_decode_tuple_t_bool_fromMemory":{"entryPoint":1112,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_contract$_IDAO_$10865":{"entryPoint":980,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address_t_address_t_address_t_bytes32__to_t_address_t_address_t_address_t_bytes32__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":5,"returnSlots":1},"abi_encode_tuple_t_address_t_address_t_bytes32_t_bytes_calldata_ptr__to_t_address_t_address_t_bytes32_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":1028,"id":null,"parameterSlots":6,"returnSlots":1},"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_contract$_IDAO_$10865__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_rational_1_by_1__to_t_uint8__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:3248:92","statements":[{"nodeType":"YulBlock","src":"6:3:92","statements":[]},{"body":{"nodeType":"YulBlock","src":"115:76:92","statements":[{"nodeType":"YulAssignment","src":"125:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"137:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"148:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"133:3:92"},"nodeType":"YulFunctionCall","src":"133:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"125:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"167:9:92"},{"name":"value0","nodeType":"YulIdentifier","src":"178:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"160:6:92"},"nodeType":"YulFunctionCall","src":"160:25:92"},"nodeType":"YulExpressionStatement","src":"160:25:92"}]},"name":"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"84:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"95:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"106:4:92","type":""}],"src":"14:177:92"},{"body":{"nodeType":"YulBlock","src":"311:125:92","statements":[{"nodeType":"YulAssignment","src":"321:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"333:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"344:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"329:3:92"},"nodeType":"YulFunctionCall","src":"329:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"321:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"363:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"378:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"386:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"374:3:92"},"nodeType":"YulFunctionCall","src":"374:55:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"356:6:92"},"nodeType":"YulFunctionCall","src":"356:74:92"},"nodeType":"YulExpressionStatement","src":"356:74:92"}]},"name":"abi_encode_tuple_t_contract$_IDAO_$10865__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"280:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"291:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"302:4:92","type":""}],"src":"196:240:92"},{"body":{"nodeType":"YulBlock","src":"525:239:92","statements":[{"body":{"nodeType":"YulBlock","src":"571:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"580:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"583:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"573:6:92"},"nodeType":"YulFunctionCall","src":"573:12:92"},"nodeType":"YulExpressionStatement","src":"573:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"546:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"555:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"542:3:92"},"nodeType":"YulFunctionCall","src":"542:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"567:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"538:3:92"},"nodeType":"YulFunctionCall","src":"538:32:92"},"nodeType":"YulIf","src":"535:52:92"},{"nodeType":"YulVariableDeclaration","src":"596:36:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"622:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"609:12:92"},"nodeType":"YulFunctionCall","src":"609:23:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"600:5:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"718:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"727:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"730:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"720:6:92"},"nodeType":"YulFunctionCall","src":"720:12:92"},"nodeType":"YulExpressionStatement","src":"720:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"654:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"665:5:92"},{"kind":"number","nodeType":"YulLiteral","src":"672:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"661:3:92"},"nodeType":"YulFunctionCall","src":"661:54:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"651:2:92"},"nodeType":"YulFunctionCall","src":"651:65:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"644:6:92"},"nodeType":"YulFunctionCall","src":"644:73:92"},"nodeType":"YulIf","src":"641:93:92"},{"nodeType":"YulAssignment","src":"743:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"753:5:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"743:6:92"}]}]},"name":"abi_decode_tuple_t_contract$_IDAO_$10865","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"491:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"502:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"514:6:92","type":""}],"src":"441:323:92"},{"body":{"nodeType":"YulBlock","src":"943:236:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"960:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"971:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"953:6:92"},"nodeType":"YulFunctionCall","src":"953:21:92"},"nodeType":"YulExpressionStatement","src":"953:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"994:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1005:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"990:3:92"},"nodeType":"YulFunctionCall","src":"990:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"1010:2:92","type":"","value":"46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"983:6:92"},"nodeType":"YulFunctionCall","src":"983:30:92"},"nodeType":"YulExpressionStatement","src":"983:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1033:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1044:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1029:3:92"},"nodeType":"YulFunctionCall","src":"1029:18:92"},{"hexValue":"496e697469616c697a61626c653a20636f6e747261637420697320616c726561","kind":"string","nodeType":"YulLiteral","src":"1049:34:92","type":"","value":"Initializable: contract is alrea"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1022:6:92"},"nodeType":"YulFunctionCall","src":"1022:62:92"},"nodeType":"YulExpressionStatement","src":"1022:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1104:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1115:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1100:3:92"},"nodeType":"YulFunctionCall","src":"1100:18:92"},{"hexValue":"647920696e697469616c697a6564","kind":"string","nodeType":"YulLiteral","src":"1120:16:92","type":"","value":"dy initialized"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1093:6:92"},"nodeType":"YulFunctionCall","src":"1093:44:92"},"nodeType":"YulExpressionStatement","src":"1093:44:92"},{"nodeType":"YulAssignment","src":"1146:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1158:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1169:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1154:3:92"},"nodeType":"YulFunctionCall","src":"1154:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1146:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"920:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"934:4:92","type":""}],"src":"769:410:92"},{"body":{"nodeType":"YulBlock","src":"1291:87:92","statements":[{"nodeType":"YulAssignment","src":"1301:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1313:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1324:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1309:3:92"},"nodeType":"YulFunctionCall","src":"1309:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1301:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1343:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1358:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"1366:4:92","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1354:3:92"},"nodeType":"YulFunctionCall","src":"1354:17:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1336:6:92"},"nodeType":"YulFunctionCall","src":"1336:36:92"},"nodeType":"YulExpressionStatement","src":"1336:36:92"}]},"name":"abi_encode_tuple_t_rational_1_by_1__to_t_uint8__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1260:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1271:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1282:4:92","type":""}],"src":"1184:194:92"},{"body":{"nodeType":"YulBlock","src":"1557:233:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1574:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1585:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1567:6:92"},"nodeType":"YulFunctionCall","src":"1567:21:92"},"nodeType":"YulExpressionStatement","src":"1567:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1608:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1619:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1604:3:92"},"nodeType":"YulFunctionCall","src":"1604:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"1624:2:92","type":"","value":"43"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1597:6:92"},"nodeType":"YulFunctionCall","src":"1597:30:92"},"nodeType":"YulExpressionStatement","src":"1597:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1647:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1658:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1643:3:92"},"nodeType":"YulFunctionCall","src":"1643:18:92"},{"hexValue":"496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069","kind":"string","nodeType":"YulLiteral","src":"1663:34:92","type":"","value":"Initializable: contract is not i"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1636:6:92"},"nodeType":"YulFunctionCall","src":"1636:62:92"},"nodeType":"YulExpressionStatement","src":"1636:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1718:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1729:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1714:3:92"},"nodeType":"YulFunctionCall","src":"1714:18:92"},{"hexValue":"6e697469616c697a696e67","kind":"string","nodeType":"YulLiteral","src":"1734:13:92","type":"","value":"nitializing"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1707:6:92"},"nodeType":"YulFunctionCall","src":"1707:41:92"},"nodeType":"YulExpressionStatement","src":"1707:41:92"},{"nodeType":"YulAssignment","src":"1757:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1769:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1780:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1765:3:92"},"nodeType":"YulFunctionCall","src":"1765:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1757:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1534:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1548:4:92","type":""}],"src":"1383:407:92"},{"body":{"nodeType":"YulBlock","src":"2008:472:92","statements":[{"nodeType":"YulVariableDeclaration","src":"2018:52:92","value":{"kind":"number","nodeType":"YulLiteral","src":"2028:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"2022:2:92","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2086:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2101:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"2109:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2097:3:92"},"nodeType":"YulFunctionCall","src":"2097:15:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2079:6:92"},"nodeType":"YulFunctionCall","src":"2079:34:92"},"nodeType":"YulExpressionStatement","src":"2079:34:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2133:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2144:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2129:3:92"},"nodeType":"YulFunctionCall","src":"2129:18:92"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"2153:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"2161:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2149:3:92"},"nodeType":"YulFunctionCall","src":"2149:15:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2122:6:92"},"nodeType":"YulFunctionCall","src":"2122:43:92"},"nodeType":"YulExpressionStatement","src":"2122:43:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2185:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2196:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2181:3:92"},"nodeType":"YulFunctionCall","src":"2181:18:92"},{"name":"value2","nodeType":"YulIdentifier","src":"2201:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2174:6:92"},"nodeType":"YulFunctionCall","src":"2174:34:92"},"nodeType":"YulExpressionStatement","src":"2174:34:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2228:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2239:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2224:3:92"},"nodeType":"YulFunctionCall","src":"2224:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"2244:3:92","type":"","value":"128"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2217:6:92"},"nodeType":"YulFunctionCall","src":"2217:31:92"},"nodeType":"YulExpressionStatement","src":"2217:31:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2268:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2279:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2264:3:92"},"nodeType":"YulFunctionCall","src":"2264:19:92"},{"name":"value4","nodeType":"YulIdentifier","src":"2285:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2257:6:92"},"nodeType":"YulFunctionCall","src":"2257:35:92"},"nodeType":"YulExpressionStatement","src":"2257:35:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2318:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2329:3:92","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2314:3:92"},"nodeType":"YulFunctionCall","src":"2314:19:92"},{"name":"value3","nodeType":"YulIdentifier","src":"2335:6:92"},{"name":"value4","nodeType":"YulIdentifier","src":"2343:6:92"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"2301:12:92"},"nodeType":"YulFunctionCall","src":"2301:49:92"},"nodeType":"YulExpressionStatement","src":"2301:49:92"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2374:9:92"},{"name":"value4","nodeType":"YulIdentifier","src":"2385:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2370:3:92"},"nodeType":"YulFunctionCall","src":"2370:22:92"},{"kind":"number","nodeType":"YulLiteral","src":"2394:3:92","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2366:3:92"},"nodeType":"YulFunctionCall","src":"2366:32:92"},{"kind":"number","nodeType":"YulLiteral","src":"2400:1:92","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2359:6:92"},"nodeType":"YulFunctionCall","src":"2359:43:92"},"nodeType":"YulExpressionStatement","src":"2359:43:92"},{"nodeType":"YulAssignment","src":"2411:63:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2427:9:92"},{"arguments":[{"arguments":[{"name":"value4","nodeType":"YulIdentifier","src":"2446:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"2454:2:92","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2442:3:92"},"nodeType":"YulFunctionCall","src":"2442:15:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2463:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"2459:3:92"},"nodeType":"YulFunctionCall","src":"2459:7:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2438:3:92"},"nodeType":"YulFunctionCall","src":"2438:29:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2423:3:92"},"nodeType":"YulFunctionCall","src":"2423:45:92"},{"kind":"number","nodeType":"YulLiteral","src":"2470:3:92","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2419:3:92"},"nodeType":"YulFunctionCall","src":"2419:55:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2411:4:92"}]}]},"name":"abi_encode_tuple_t_address_t_address_t_bytes32_t_bytes_calldata_ptr__to_t_address_t_address_t_bytes32_t_bytes_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1945:9:92","type":""},{"name":"value4","nodeType":"YulTypedName","src":"1956:6:92","type":""},{"name":"value3","nodeType":"YulTypedName","src":"1964:6:92","type":""},{"name":"value2","nodeType":"YulTypedName","src":"1972:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1980:6:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1988:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1999:4:92","type":""}],"src":"1795:685:92"},{"body":{"nodeType":"YulBlock","src":"2563:199:92","statements":[{"body":{"nodeType":"YulBlock","src":"2609:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2618:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2621:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2611:6:92"},"nodeType":"YulFunctionCall","src":"2611:12:92"},"nodeType":"YulExpressionStatement","src":"2611:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2584:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"2593:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2580:3:92"},"nodeType":"YulFunctionCall","src":"2580:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"2605:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2576:3:92"},"nodeType":"YulFunctionCall","src":"2576:32:92"},"nodeType":"YulIf","src":"2573:52:92"},{"nodeType":"YulVariableDeclaration","src":"2634:29:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2653:9:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2647:5:92"},"nodeType":"YulFunctionCall","src":"2647:16:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"2638:5:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"2716:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2725:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2728:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2718:6:92"},"nodeType":"YulFunctionCall","src":"2718:12:92"},"nodeType":"YulExpressionStatement","src":"2718:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2685:5:92"},{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2706:5:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2699:6:92"},"nodeType":"YulFunctionCall","src":"2699:13:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2692:6:92"},"nodeType":"YulFunctionCall","src":"2692:21:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"2682:2:92"},"nodeType":"YulFunctionCall","src":"2682:32:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2675:6:92"},"nodeType":"YulFunctionCall","src":"2675:40:92"},"nodeType":"YulIf","src":"2672:60:92"},{"nodeType":"YulAssignment","src":"2741:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"2751:5:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2741:6:92"}]}]},"name":"abi_decode_tuple_t_bool_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2529:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2540:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2552:6:92","type":""}],"src":"2485:277:92"},{"body":{"nodeType":"YulBlock","src":"2952:294:92","statements":[{"nodeType":"YulAssignment","src":"2962:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2974:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2985:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2970:3:92"},"nodeType":"YulFunctionCall","src":"2970:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2962:4:92"}]},{"nodeType":"YulVariableDeclaration","src":"2998:52:92","value":{"kind":"number","nodeType":"YulLiteral","src":"3008:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"3002:2:92","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3066:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3081:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"3089:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3077:3:92"},"nodeType":"YulFunctionCall","src":"3077:15:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3059:6:92"},"nodeType":"YulFunctionCall","src":"3059:34:92"},"nodeType":"YulExpressionStatement","src":"3059:34:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3113:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3124:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3109:3:92"},"nodeType":"YulFunctionCall","src":"3109:18:92"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"3133:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"3141:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3129:3:92"},"nodeType":"YulFunctionCall","src":"3129:15:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3102:6:92"},"nodeType":"YulFunctionCall","src":"3102:43:92"},"nodeType":"YulExpressionStatement","src":"3102:43:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3165:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3176:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3161:3:92"},"nodeType":"YulFunctionCall","src":"3161:18:92"},{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"3185:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"3193:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3181:3:92"},"nodeType":"YulFunctionCall","src":"3181:15:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3154:6:92"},"nodeType":"YulFunctionCall","src":"3154:43:92"},"nodeType":"YulExpressionStatement","src":"3154:43:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3217:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3228:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3213:3:92"},"nodeType":"YulFunctionCall","src":"3213:18:92"},{"name":"value3","nodeType":"YulIdentifier","src":"3233:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3206:6:92"},"nodeType":"YulFunctionCall","src":"3206:34:92"},"nodeType":"YulExpressionStatement","src":"3206:34:92"}]},"name":"abi_encode_tuple_t_address_t_address_t_address_t_bytes32__to_t_address_t_address_t_address_t_bytes32__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2897:9:92","type":""},{"name":"value3","nodeType":"YulTypedName","src":"2908:6:92","type":""},{"name":"value2","nodeType":"YulTypedName","src":"2916:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2924:6:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"2932:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2943:4:92","type":""}],"src":"2767:479:92"}]},"contents":"{\n { }\n function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_encode_tuple_t_contract$_IDAO_$10865__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_decode_tuple_t_contract$_IDAO_$10865(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 46)\n mstore(add(headStart, 64), \"Initializable: contract is alrea\")\n mstore(add(headStart, 96), \"dy initialized\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_rational_1_by_1__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xff))\n }\n function abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 43)\n mstore(add(headStart, 64), \"Initializable: contract is not i\")\n mstore(add(headStart, 96), \"nitializing\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_address_t_address_t_bytes32_t_bytes_calldata_ptr__to_t_address_t_address_t_bytes32_t_bytes_memory_ptr__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n {\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n mstore(add(headStart, 64), value2)\n mstore(add(headStart, 96), 128)\n mstore(add(headStart, 128), value4)\n calldatacopy(add(headStart, 160), value3, value4)\n mstore(add(add(headStart, value4), 160), 0)\n tail := add(add(headStart, and(add(value4, 31), not(31))), 160)\n }\n function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := mload(headStart)\n if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_address_t_address_t_address_t_bytes32__to_t_address_t_address_t_address_t_bytes32__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n {\n tail := add(headStart, 128)\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n mstore(add(headStart, 64), and(value2, _1))\n mstore(add(headStart, 96), value3)\n }\n}","id":92,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100675760003560e01c80638883bbd7116100505780638883bbd7146100c1578063c4d66de8146100d6578063f09e1623146100e957600080fd5b8063403f85751461006c5780634162169f146100a6575b600080fd5b6100937f6c28b2d088260f42eed051af4616ddda00554ec1880b580a4a9fbf40a70b09eb81565b6040519081526020015b60405180910390f35b6033546040516001600160a01b03909116815260200161009d565b6100d46100cf3660046103d4565b6100f1565b005b6100d46100e43660046103d4565b6100fd565b6100d4610224565b6100fa81610261565b50565b600054610100900460ff161580801561011d5750600054600160ff909116105b806101375750303b158015610137575060005460ff166001145b6101ae5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b6000805460ff1916600117905580156101d1576000805461ff0019166101001790555b6101da82610261565b8015610220576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b6033547f6c28b2d088260f42eed051af4616ddda00554ec1880b580a4a9fbf40a70b09eb906100fa906001600160a01b0316303384600036610318565b600054610100900460ff166102de5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016101a5565b603380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b604051637ef7c88360e11b81526001600160a01b0387169063fdef91069061034c9088908890889088908890600401610404565b602060405180830381865afa158015610369573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061038d9190610458565b6103cc57604051630cb6f8ed60e21b81526001600160a01b038088166004830152808716602483015285166044820152606481018490526084016101a5565b505050505050565b6000602082840312156103e657600080fd5b81356001600160a01b03811681146103fd57600080fd5b9392505050565b60006001600160a01b03808816835280871660208401525084604083015260806060830152826080830152828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b60006020828403121561046a57600080fd5b815180151581146103fd57600080fdfea164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x67 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8883BBD7 GT PUSH2 0x50 JUMPI DUP1 PUSH4 0x8883BBD7 EQ PUSH2 0xC1 JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0xD6 JUMPI DUP1 PUSH4 0xF09E1623 EQ PUSH2 0xE9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x403F8575 EQ PUSH2 0x6C JUMPI DUP1 PUSH4 0x4162169F EQ PUSH2 0xA6 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x93 PUSH32 0x6C28B2D088260F42EED051AF4616DDDA00554EC1880B580A4A9FBF40A70B09EB DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x33 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x9D JUMP JUMPDEST PUSH2 0xD4 PUSH2 0xCF CALLDATASIZE PUSH1 0x4 PUSH2 0x3D4 JUMP JUMPDEST PUSH2 0xF1 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xD4 PUSH2 0xE4 CALLDATASIZE PUSH1 0x4 PUSH2 0x3D4 JUMP JUMPDEST PUSH2 0xFD JUMP JUMPDEST PUSH2 0xD4 PUSH2 0x224 JUMP JUMPDEST PUSH2 0xFA DUP2 PUSH2 0x261 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 DUP1 ISZERO PUSH2 0x11D JUMPI POP PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xFF SWAP1 SWAP2 AND LT JUMPDEST DUP1 PUSH2 0x137 JUMPI POP ADDRESS EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x137 JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF AND PUSH1 0x1 EQ JUMPDEST PUSH2 0x1AE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x647920696E697469616C697A6564000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE DUP1 ISZERO PUSH2 0x1D1 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND PUSH2 0x100 OR SWAP1 SSTORE JUMPDEST PUSH2 0x1DA DUP3 PUSH2 0x261 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x220 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x33 SLOAD PUSH32 0x6C28B2D088260F42EED051AF4616DDDA00554EC1880B580A4A9FBF40A70B09EB SWAP1 PUSH2 0xFA SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ADDRESS CALLER DUP5 PUSH1 0x0 CALLDATASIZE PUSH2 0x318 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x2DE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6E697469616C697A696E67000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x1A5 JUMP JUMPDEST PUSH1 0x33 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x7EF7C883 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0xFDEF9106 SWAP1 PUSH2 0x34C SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x404 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x369 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x38D SWAP2 SWAP1 PUSH2 0x458 JUMP JUMPDEST PUSH2 0x3CC JUMPI PUSH1 0x40 MLOAD PUSH4 0xCB6F8ED PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND PUSH1 0x4 DUP4 ADD MSTORE DUP1 DUP8 AND PUSH1 0x24 DUP4 ADD MSTORE DUP6 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x84 ADD PUSH2 0x1A5 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x3FD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND DUP4 MSTORE DUP1 DUP8 AND PUSH1 0x20 DUP5 ADD MSTORE POP DUP5 PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x80 PUSH1 0x60 DUP4 ADD MSTORE DUP3 PUSH1 0x80 DUP4 ADD MSTORE DUP3 DUP5 PUSH1 0xA0 DUP5 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0xA0 DUP5 DUP5 ADD ADD MSTORE PUSH1 0xA0 PUSH1 0x1F NOT PUSH1 0x1F DUP6 ADD AND DUP4 ADD ADD SWAP1 POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x46A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x3FD JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"336:729:45:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;412:95;;468:39;412:95;;;;;160:25:92;;;148:2;133:18;412:95:45;;;;;;;;1200:70:67;1259:4;;1200:70;;-1:-1:-1;;;;;1259:4:67;;;356:74:92;;344:2;329:18;1200:70:67;196:240:92;817:102:45;;;;;;:::i;:::-;;:::i;:::-;;514:108;;;;;;:::i;:::-;;:::i;925:138::-;;;:::i;817:102::-;873:39;907:4;873:33;:39::i;:::-;817:102;:::o;514:108::-;3279:19:4;3302:13;;;;;;3301:14;;3347:34;;;;-1:-1:-1;3365:12:4;;3380:1;3365:12;;;;:16;3347:34;3346:108;;;-1:-1:-1;3426:4:4;1713:19:6;:23;;;3387:66:4;;-1:-1:-1;3436:12:4;;;;;:17;3387:66;3325:201;;;;-1:-1:-1;;;3325:201:4;;971:2:92;3325:201:4;;;953:21:92;1010:2;990:18;;;983:30;1049:34;1029:18;;;1022:62;1120:16;1100:18;;;1093:44;1154:19;;3325:201:4;;;;;;;;;3536:12;:16;;-1:-1:-1;;3536:16:4;3551:1;3536:16;;;3562:65;;;;3596:13;:20;;-1:-1:-1;;3596:20:4;;;;;3562:65;576:39:45::1;610:4;576:33;:39::i;:::-;3651:14:4::0;3647:99;;;3697:5;3681:21;;-1:-1:-1;;3681:21:4;;;3721:14;;-1:-1:-1;1336:36:92;;3721:14:4;;1324:2:92;1309:18;3721:14:4;;;;;;;3647:99;3269:483;514:108:45;:::o;925:138::-;1616:4:67;;468:39:45;;1610:67:67;;-1:-1:-1;;;;;1616:4:67;1630;965:10:8;1651:13:67;1039:14:8;;1610:5:67;:67::i;1010:108::-;5374:13:4;;;;;;;5366:69;;;;-1:-1:-1;;;5366:69:4;;1585:2:92;5366:69:4;;;1567:21:92;1624:2;1604:18;;;1597:30;1663:34;1643:18;;;1636:62;1734:13;1714:18;;;1707:41;1765:19;;5366:69:4;1383:407:92;5366:69:4;1100:4:67::1;:11:::0;;;::::1;-1:-1:-1::0;;;;;1100:11:67;;;::::1;::::0;;;::::1;::::0;;1010:108::o;1041:363:68:-;1180:54;;-1:-1:-1;;;1180:54:68;;-1:-1:-1;;;;;1180:18:68;;;;;:54;;1199:6;;1207:4;;1213:13;;1228:5;;;;1180:54;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1175:226;;1251:150;;-1:-1:-1;;;1251:150:68;;-1:-1:-1;;;;;3077:15:92;;;1251:150:68;;;3059:34:92;3129:15;;;3109:18;;;3102:43;3181:15;;3161:18;;;3154:43;3213:18;;;3206:34;;;2970:19;;1251:150:68;2767:479:92;1175:226:68;1041:363;;;;;;:::o;441:323:92:-;514:6;567:2;555:9;546:7;542:23;538:32;535:52;;;583:1;580;573:12;535:52;622:9;609:23;-1:-1:-1;;;;;665:5:92;661:54;654:5;651:65;641:93;;730:1;727;720:12;641:93;753:5;441:323;-1:-1:-1;;;441:323:92:o;1795:685::-;1999:4;-1:-1:-1;;;;;2109:2:92;2101:6;2097:15;2086:9;2079:34;2161:2;2153:6;2149:15;2144:2;2133:9;2129:18;2122:43;;2201:6;2196:2;2185:9;2181:18;2174:34;2244:3;2239:2;2228:9;2224:18;2217:31;2285:6;2279:3;2268:9;2264:19;2257:35;2343:6;2335;2329:3;2318:9;2314:19;2301:49;2400:1;2394:3;2385:6;2374:9;2370:22;2366:32;2359:43;2470:3;2463:2;2459:7;2454:2;2446:6;2442:15;2438:29;2427:9;2423:45;2419:55;2411:63;;1795:685;;;;;;;;:::o;2485:277::-;2552:6;2605:2;2593:9;2584:7;2580:23;2576:32;2573:52;;;2621:1;2618;2611:12;2573:52;2653:9;2647:16;2706:5;2699:13;2692:21;2685:5;2682:32;2672:60;;2728:1;2725;2718:12"},"gasEstimates":{"creation":{"codeDepositCost":"231800","executionCost":"275","totalCost":"232075"},"external":{"AUTHORIZED_FUNC_PERMISSION_ID()":"185","authorizedFunc()":"infinite","dao()":"2324","initialize(address)":"109514","notAnInitializer(address)":"26684"}},"methodIdentifiers":{"AUTHORIZED_FUNC_PERMISSION_ID()":"403f8575","authorizedFunc()":"f09e1623","dao()":"4162169f","initialize(address)":"c4d66de8","notAnInitializer(address)":"8883bbd7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"dao\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"name\":\"DaoUnauthorized\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"AUTHORIZED_FUNC_PERMISSION_ID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"authorizedFunc\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"dao\",\"outputs\":[{\"internalType\":\"contract IDAO\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IDAO\",\"name\":\"_dao\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IDAO\",\"name\":\"_dao\",\"type\":\"address\"}],\"name\":\"notAnInitializer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"DO NOT USE IN PRODUCTION!\",\"errors\":{\"DaoUnauthorized(address,address,address,bytes32)\":[{\"params\":{\"dao\":\"The associated DAO.\",\"permissionId\":\"The permission identifier.\",\"where\":\"The context in which the authorization reverted.\",\"who\":\"The address (EOA or contract) missing the permission.\"}}]},\"kind\":\"dev\",\"methods\":{\"dao()\":{\"returns\":{\"_0\":\"The DAO contract.\"}}},\"version\":1},\"userdoc\":{\"errors\":{\"DaoUnauthorized(address,address,address,bytes32)\":[{\"notice\":\"Thrown if a call is unauthorized in the associated DAO.\"}]},\"kind\":\"user\",\"methods\":{\"dao()\":{\"notice\":\"Returns the DAO contract.\"},\"notAnInitializer(address)\":{\"notice\":\"The following function intentionally misses the `initializer` modifier to validate that `__DaoAuthorizableUpgradeable_init` cannot be called outside initialization.\"}},\"notice\":\"A mock contract containing a function protected by the `auth` modifier.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/mocks/permission/auth/DaoAuthorizableUpgradeableMock.sol\":\"DaoAuthorizableUpgradeableMock\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n function __Context_init() internal onlyInitializing {\\n }\\n\\n function __Context_init_unchained() internal onlyInitializing {\\n }\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n function _contextSuffixLength() internal view virtual returns (uint256) {\\n return 0;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x75097e35253e7fb282ee4d7f27a80eaacfa759923185bf17302a89cbc059c5ef\",\"license\":\"MIT\"},\"src/dao/IDAO.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IDAO\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for DAOs within the Aragon App DAO framework.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IDAO {\\n /// @notice The action struct to be consumed by the DAO's `execute` function resulting in an external call.\\n /// @param to The address to call.\\n /// @param value The native token value to be sent with the call.\\n /// @param data The bytes-encoded function selector and calldata for the call.\\n struct Action {\\n address to;\\n uint256 value;\\n bytes data;\\n }\\n\\n /// @notice Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\\n /// @param _where The address of the contract.\\n /// @param _who The address of a EOA or contract to give the permissions.\\n /// @param _permissionId The permission identifier.\\n /// @param _data The optional data passed to the `PermissionCondition` registered.\\n /// @return Returns true if the address has permission, false if not.\\n function hasPermission(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes memory _data\\n ) external view returns (bool);\\n\\n /// @notice Updates the DAO metadata (e.g., an IPFS hash).\\n /// @param _metadata The IPFS hash of the new metadata object.\\n function setMetadata(bytes calldata _metadata) external;\\n\\n /// @notice Emitted when the DAO metadata is updated.\\n /// @param metadata The IPFS hash of the new metadata object.\\n event MetadataSet(bytes metadata);\\n\\n /// @notice Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted.\\n /// @param _callId The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce.\\n /// @param _actions The array of actions.\\n /// @param _allowFailureMap A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @return The array of results obtained from the executed actions in `bytes`.\\n /// @return The resulting failure map containing the actions have actually failed.\\n function execute(\\n bytes32 _callId,\\n Action[] memory _actions,\\n uint256 _allowFailureMap\\n ) external returns (bytes[] memory, uint256);\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param actor The address of the caller.\\n /// @param callId The ID of the call.\\n /// @param actions The array of actions executed.\\n /// @param allowFailureMap The allow failure map encoding which actions are allowed to fail.\\n /// @param failureMap The failure map encoding which actions have failed.\\n /// @param execResults The array with the results of the executed actions.\\n /// @dev The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce.\\n event Executed(\\n address indexed actor,\\n bytes32 callId,\\n Action[] actions,\\n uint256 allowFailureMap,\\n uint256 failureMap,\\n bytes[] execResults\\n );\\n\\n /// @notice Emitted when a standard callback is registered.\\n /// @param interfaceId The ID of the interface.\\n /// @param callbackSelector The selector of the callback function.\\n /// @param magicNumber The magic number to be registered for the callback function selector.\\n event StandardCallbackRegistered(\\n bytes4 interfaceId,\\n bytes4 callbackSelector,\\n bytes4 magicNumber\\n );\\n\\n /// @notice Deposits (native) tokens to the DAO contract with a reference string.\\n /// @param _token The address of the token or address(0) in case of the native token.\\n /// @param _amount The amount of tokens to deposit.\\n /// @param _reference The reference describing the deposit reason.\\n function deposit(address _token, uint256 _amount, string calldata _reference) external payable;\\n\\n /// @notice Emitted when a token deposit has been made to the DAO.\\n /// @param sender The address of the sender.\\n /// @param token The address of the deposited token.\\n /// @param amount The amount of tokens deposited.\\n /// @param _reference The reference describing the deposit reason.\\n event Deposited(\\n address indexed sender,\\n address indexed token,\\n uint256 amount,\\n string _reference\\n );\\n\\n /// @notice Emitted when a native token deposit has been made to the DAO.\\n /// @dev This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).\\n /// @param sender The address of the sender.\\n /// @param amount The amount of native tokens deposited.\\n event NativeTokenDeposited(address sender, uint256 amount);\\n\\n /// @notice Setter for the trusted forwarder verifying the meta transaction.\\n /// @param _trustedForwarder The trusted forwarder address.\\n function setTrustedForwarder(address _trustedForwarder) external;\\n\\n /// @notice Getter for the trusted forwarder verifying the meta transaction.\\n /// @return The trusted forwarder address.\\n function getTrustedForwarder() external view returns (address);\\n\\n /// @notice Emitted when a new TrustedForwarder is set on the DAO.\\n /// @param forwarder the new forwarder address.\\n event TrustedForwarderSet(address forwarder);\\n\\n /// @notice Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\\n /// @param _hash The hash of the data to be signed.\\n /// @param _signature The signature byte array associated with `_hash`.\\n /// @return Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not.\\n function isValidSignature(bytes32 _hash, bytes memory _signature) external returns (bytes4);\\n\\n /// @notice Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\\n /// @param _interfaceId The ID of the interface.\\n /// @param _callbackSelector The selector of the callback function.\\n /// @param _magicNumber The magic number to be registered for the function signature.\\n function registerStandardCallback(\\n bytes4 _interfaceId,\\n bytes4 _callbackSelector,\\n bytes4 _magicNumber\\n ) external;\\n\\n /// @notice Removed function being left here to not corrupt the IDAO interface ID. Any call will revert.\\n /// @dev Introduced in v1.0.0. Removed in v1.4.0.\\n function setSignatureValidator(address) external;\\n}\\n\",\"keccak256\":\"0xb7f615523c26de042edce98731c658f44a1edb2464387ac1b642c4c69f57128e\",\"license\":\"AGPL-3.0-or-later\"},\"src/mocks/permission/auth/DaoAuthorizableUpgradeableMock.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {DaoAuthorizableUpgradeable} from \\\"../../../permission/auth/DaoAuthorizableUpgradeable.sol\\\";\\nimport {IDAO} from \\\"../../../dao/IDAO.sol\\\";\\n\\n/// @notice A mock contract containing a function protected by the `auth` modifier.\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract DaoAuthorizableUpgradeableMock is DaoAuthorizableUpgradeable {\\n bytes32 public constant AUTHORIZED_FUNC_PERMISSION_ID = keccak256(\\\"AUTHORIZED_FUNC_PERMISSION\\\");\\n\\n function initialize(IDAO _dao) external initializer {\\n __DaoAuthorizableUpgradeable_init(_dao);\\n }\\n\\n /// @notice The following function intentionally misses the `initializer` modifier\\n /// to validate that `__DaoAuthorizableUpgradeable_init` cannot be called outside initialization.\\n function notAnInitializer(IDAO _dao) external {\\n __DaoAuthorizableUpgradeable_init(_dao);\\n }\\n\\n function authorizedFunc()\\n external\\n auth(AUTHORIZED_FUNC_PERMISSION_ID) // solhint-disable-next-line no-empty-blocks\\n {}\\n}\\n\",\"keccak256\":\"0xd3905e65c6dce2551491c73ea2c18e16bdab53807d8254d13c1d8d8ef4edaaf8\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/DaoAuthorizableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ContextUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\\\";\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\nimport {_auth} from \\\"./auth.sol\\\";\\n\\n/// @title DaoAuthorizableUpgradeable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract contract providing a meta-transaction compatible modifier for upgradeable or cloneable contracts to authorize function calls through an associated DAO.\\n/// @dev Make sure to call `__DaoAuthorizableUpgradeable_init` during initialization of the inheriting contract.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract DaoAuthorizableUpgradeable is ContextUpgradeable {\\n /// @notice The associated DAO managing the permissions of inheriting contracts.\\n IDAO private dao_;\\n\\n /// @notice Initializes the contract by setting the associated DAO.\\n /// @param _dao The associated DAO address.\\n // solhint-disable-next-line func-name-mixedcase\\n function __DaoAuthorizableUpgradeable_init(IDAO _dao) internal onlyInitializing {\\n dao_ = _dao;\\n }\\n\\n /// @notice Returns the DAO contract.\\n /// @return The DAO contract.\\n function dao() public view returns (IDAO) {\\n return dao_;\\n }\\n\\n /// @notice A modifier to make functions on inheriting contracts authorized. Permissions to call the function are checked through the associated DAO's permission manager.\\n /// @param _permissionId The permission identifier required to call the method this modifier is applied to.\\n modifier auth(bytes32 _permissionId) {\\n _auth(dao_, address(this), _msgSender(), _permissionId, _msgData());\\n _;\\n }\\n\\n /// @notice This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain (see [OpenZeppelin's guide about storage gaps](https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps)).\\n uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0x7fac6b01b037ba1cb9d6a22d3f43b0785037dcf496ffb672434d9bf7227d2585\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/auth.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice Thrown if a call is unauthorized in the associated DAO.\\n/// @param dao The associated DAO.\\n/// @param where The context in which the authorization reverted.\\n/// @param who The address (EOA or contract) missing the permission.\\n/// @param permissionId The permission identifier.\\nerror DaoUnauthorized(address dao, address where, address who, bytes32 permissionId);\\n\\n/// @notice A free function checking if a caller is granted permissions on a target contract via a permission identifier that redirects the approval to a `PermissionCondition` if this was specified in the setup.\\n/// @param _where The address of the target contract for which `who` receives permission.\\n/// @param _who The address (EOA or contract) owning the permission.\\n/// @param _permissionId The permission identifier.\\n/// @param _data The optional data passed to the `PermissionCondition` registered.\\n/// @custom:security-contact sirt@aragon.org\\nfunction _auth(\\n IDAO _dao,\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes calldata _data\\n) view {\\n if (!_dao.hasPermission(_where, _who, _permissionId, _data))\\n revert DaoUnauthorized({\\n dao: address(_dao),\\n where: _where,\\n who: _who,\\n permissionId: _permissionId\\n });\\n}\\n\",\"keccak256\":\"0x878764b4f87fe0651fb3798fb9cb87c952f8c6caf6ae79c7f09de84df6c00298\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[{"astId":372,"contract":"src/mocks/permission/auth/DaoAuthorizableUpgradeableMock.sol:DaoAuthorizableUpgradeableMock","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":375,"contract":"src/mocks/permission/auth/DaoAuthorizableUpgradeableMock.sol:DaoAuthorizableUpgradeableMock","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":2592,"contract":"src/mocks/permission/auth/DaoAuthorizableUpgradeableMock.sol:DaoAuthorizableUpgradeableMock","label":"__gap","offset":0,"slot":"1","type":"t_array(t_uint256)50_storage"},{"astId":13111,"contract":"src/mocks/permission/auth/DaoAuthorizableUpgradeableMock.sol:DaoAuthorizableUpgradeableMock","label":"dao_","offset":0,"slot":"51","type":"t_contract(IDAO)10865"},{"astId":13160,"contract":"src/mocks/permission/auth/DaoAuthorizableUpgradeableMock.sol:DaoAuthorizableUpgradeableMock","label":"__gap","offset":0,"slot":"52","type":"t_array(t_uint256)49_storage"}],"types":{"t_array(t_uint256)49_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[49]","numberOfBytes":"1568"},"t_array(t_uint256)50_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[50]","numberOfBytes":"1600"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_contract(IDAO)10865":{"encoding":"inplace","label":"contract IDAO","numberOfBytes":"20"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"errors":{"DaoUnauthorized(address,address,address,bytes32)":[{"notice":"Thrown if a call is unauthorized in the associated DAO."}]},"kind":"user","methods":{"dao()":{"notice":"Returns the DAO contract."},"notAnInitializer(address)":{"notice":"The following function intentionally misses the `initializer` modifier to validate that `__DaoAuthorizableUpgradeable_init` cannot be called outside initialization."}},"notice":"A mock contract containing a function protected by the `auth` modifier.","version":1}}},"src/mocks/permission/condition/PermissionConditionMock.sol":{"PermissionConditionMock":{"abi":[{"inputs":[],"name":"answer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_where","type":"address"},{"internalType":"address","name":"_who","type":"address"},{"internalType":"bytes32","name":"_permissionId","type":"bytes32"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"isGranted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"protocolVersion","outputs":[{"internalType":"uint8[3]","name":"","type":"uint8[3]"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_answer","type":"bool"}],"name":"setAnswer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"DO NOT USE IN PRODUCTION!","kind":"dev","methods":{"isGranted(address,address,bytes32,bytes)":{"params":{"_data":"Optional data passed to the `PermissionCondition` implementation.","_permissionId":"The permission identifier.","_where":"The address of the target contract.","_who":"The address (EOA or contract) for which the permissions are checked."},"returns":{"_0":"Returns true if the call is permitted."}},"protocolVersion()":{"details":"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.","returns":{"_0":"Returns the semantic Aragon OSx protocol version number."}},"supportsInterface(bytes4)":{"params":{"_interfaceId":"The ID of the interface."},"returns":{"_0":"Returns `true` if the interface is supported."}}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b5061033d806100206000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80632ae9c600116100505780632ae9c600146100b057806385bb7d69146100c5578063f01b7dd2146100d257600080fd5b806301ffc9a71461006c5780632675fdd014610094575b600080fd5b61007f61007a36600461018e565b6100f5565b60405190151581526020015b60405180910390f35b61007f6100a23660046101fe565b60005460ff16949350505050565b6100b8610146565b60405161008b91906102da565b60005461007f9060ff1681565b6100f36100e036600461030e565b6000805460ff1916911515919091179055565b005b60006001600160e01b031982166302675fdd60e41b148061012557506001600160e01b03198216621574e360e91b145b8061014057506301ffc9a760e01b6001600160e01b03198316145b92915050565b61014e610170565b5060408051606081018252600181526004602082015260009181019190915290565b60405180606001604052806003906020820280368337509192915050565b6000602082840312156101a057600080fd5b81356001600160e01b0319811681146101b857600080fd5b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146101e357600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b6000806000806080858703121561021457600080fd5b61021d856101bf565b935061022b602086016101bf565b925060408501359150606085013567ffffffffffffffff8082111561024f57600080fd5b818701915087601f83011261026357600080fd5b813581811115610275576102756101e8565b604051601f8201601f19908116603f0116810190838211818310171561029d5761029d6101e8565b816040528281528a60208487010111156102b657600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b60608101818360005b600381101561030557815160ff168352602092830192909101906001016102e3565b50505092915050565b60006020828403121561032057600080fd5b813580151581146101b857600080fdfea164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x33D DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x67 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x2AE9C600 GT PUSH2 0x50 JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0xB0 JUMPI DUP1 PUSH4 0x85BB7D69 EQ PUSH2 0xC5 JUMPI DUP1 PUSH4 0xF01B7DD2 EQ PUSH2 0xD2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x6C JUMPI DUP1 PUSH4 0x2675FDD0 EQ PUSH2 0x94 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7F PUSH2 0x7A CALLDATASIZE PUSH1 0x4 PUSH2 0x18E JUMP JUMPDEST PUSH2 0xF5 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x7F PUSH2 0xA2 CALLDATASIZE PUSH1 0x4 PUSH2 0x1FE JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xFF AND SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0xB8 PUSH2 0x146 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x8B SWAP2 SWAP1 PUSH2 0x2DA JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x7F SWAP1 PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0xF3 PUSH2 0xE0 CALLDATASIZE PUSH1 0x4 PUSH2 0x30E JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x2675FDD PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x125 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x140 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x14E PUSH2 0x170 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x1B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x1E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x214 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x21D DUP6 PUSH2 0x1BF JUMP JUMPDEST SWAP4 POP PUSH2 0x22B PUSH1 0x20 DUP7 ADD PUSH2 0x1BF JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x24F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x263 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x275 JUMPI PUSH2 0x275 PUSH2 0x1E8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x29D JUMPI PUSH2 0x29D PUSH2 0x1E8 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP11 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x2B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0x305 JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x2E3 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x320 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x1B8 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"285:405:46:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@answer_11115":{"entryPoint":null,"id":11115,"parameterSlots":0,"returnSlots":0},"@isGranted_11147":{"entryPoint":null,"id":11147,"parameterSlots":4,"returnSlots":1},"@protocolVersion_14765":{"entryPoint":326,"id":14765,"parameterSlots":0,"returnSlots":1},"@setAnswer_11125":{"entryPoint":null,"id":11125,"parameterSlots":1,"returnSlots":0},"@supportsInterface_13275":{"entryPoint":245,"id":13275,"parameterSlots":1,"returnSlots":1},"@supportsInterface_9730":{"entryPoint":null,"id":9730,"parameterSlots":1,"returnSlots":1},"abi_decode_address":{"entryPoint":447,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_tuple_t_addresst_addresst_bytes32t_bytes_memory_ptr":{"entryPoint":510,"id":null,"parameterSlots":2,"returnSlots":4},"abi_decode_tuple_t_bool":{"entryPoint":782,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes4":{"entryPoint":398,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed":{"entryPoint":730,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"panic_error_0x41":{"entryPoint":488,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:2754:92","statements":[{"nodeType":"YulBlock","src":"6:3:92","statements":[]},{"body":{"nodeType":"YulBlock","src":"83:217:92","statements":[{"body":{"nodeType":"YulBlock","src":"129:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"138:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"141:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"131:6:92"},"nodeType":"YulFunctionCall","src":"131:12:92"},"nodeType":"YulExpressionStatement","src":"131:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"104:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"113:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"100:3:92"},"nodeType":"YulFunctionCall","src":"100:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"125:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"96:3:92"},"nodeType":"YulFunctionCall","src":"96:32:92"},"nodeType":"YulIf","src":"93:52:92"},{"nodeType":"YulVariableDeclaration","src":"154:36:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"180:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"167:12:92"},"nodeType":"YulFunctionCall","src":"167:23:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"158:5:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"254:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"263:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"266:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"256:6:92"},"nodeType":"YulFunctionCall","src":"256:12:92"},"nodeType":"YulExpressionStatement","src":"256:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"212:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"223:5:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"234:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"239:10:92","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"230:3:92"},"nodeType":"YulFunctionCall","src":"230:20:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"219:3:92"},"nodeType":"YulFunctionCall","src":"219:32:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"209:2:92"},"nodeType":"YulFunctionCall","src":"209:43:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"202:6:92"},"nodeType":"YulFunctionCall","src":"202:51:92"},"nodeType":"YulIf","src":"199:71:92"},{"nodeType":"YulAssignment","src":"279:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"289:5:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"279:6:92"}]}]},"name":"abi_decode_tuple_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"49:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"60:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"72:6:92","type":""}],"src":"14:286:92"},{"body":{"nodeType":"YulBlock","src":"400:92:92","statements":[{"nodeType":"YulAssignment","src":"410:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"422:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"433:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"418:3:92"},"nodeType":"YulFunctionCall","src":"418:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"410:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"452:9:92"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"477:6:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"470:6:92"},"nodeType":"YulFunctionCall","src":"470:14:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"463:6:92"},"nodeType":"YulFunctionCall","src":"463:22:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"445:6:92"},"nodeType":"YulFunctionCall","src":"445:41:92"},"nodeType":"YulExpressionStatement","src":"445:41:92"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"369:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"380:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"391:4:92","type":""}],"src":"305:187:92"},{"body":{"nodeType":"YulBlock","src":"546:147:92","statements":[{"nodeType":"YulAssignment","src":"556:29:92","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"578:6:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"565:12:92"},"nodeType":"YulFunctionCall","src":"565:20:92"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"556:5:92"}]},{"body":{"nodeType":"YulBlock","src":"671:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"680:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"683:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"673:6:92"},"nodeType":"YulFunctionCall","src":"673:12:92"},"nodeType":"YulExpressionStatement","src":"673:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"607:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"618:5:92"},{"kind":"number","nodeType":"YulLiteral","src":"625:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"614:3:92"},"nodeType":"YulFunctionCall","src":"614:54:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"604:2:92"},"nodeType":"YulFunctionCall","src":"604:65:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"597:6:92"},"nodeType":"YulFunctionCall","src":"597:73:92"},"nodeType":"YulIf","src":"594:93:92"}]},"name":"abi_decode_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"525:6:92","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"536:5:92","type":""}],"src":"497:196:92"},{"body":{"nodeType":"YulBlock","src":"730:95:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"747:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"754:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"759:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"750:3:92"},"nodeType":"YulFunctionCall","src":"750:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"740:6:92"},"nodeType":"YulFunctionCall","src":"740:31:92"},"nodeType":"YulExpressionStatement","src":"740:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"787:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"790:4:92","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"780:6:92"},"nodeType":"YulFunctionCall","src":"780:15:92"},"nodeType":"YulExpressionStatement","src":"780:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"811:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"814:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"804:6:92"},"nodeType":"YulFunctionCall","src":"804:15:92"},"nodeType":"YulExpressionStatement","src":"804:15:92"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"698:127:92"},{"body":{"nodeType":"YulBlock","src":"960:1008:92","statements":[{"body":{"nodeType":"YulBlock","src":"1007:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1016:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1019:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1009:6:92"},"nodeType":"YulFunctionCall","src":"1009:12:92"},"nodeType":"YulExpressionStatement","src":"1009:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"981:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"990:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"977:3:92"},"nodeType":"YulFunctionCall","src":"977:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"1002:3:92","type":"","value":"128"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"973:3:92"},"nodeType":"YulFunctionCall","src":"973:33:92"},"nodeType":"YulIf","src":"970:53:92"},{"nodeType":"YulAssignment","src":"1032:39:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1061:9:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"1042:18:92"},"nodeType":"YulFunctionCall","src":"1042:29:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1032:6:92"}]},{"nodeType":"YulAssignment","src":"1080:48:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1113:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1124:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1109:3:92"},"nodeType":"YulFunctionCall","src":"1109:18:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"1090:18:92"},"nodeType":"YulFunctionCall","src":"1090:38:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1080:6:92"}]},{"nodeType":"YulAssignment","src":"1137:42:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1164:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1175:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1160:3:92"},"nodeType":"YulFunctionCall","src":"1160:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1147:12:92"},"nodeType":"YulFunctionCall","src":"1147:32:92"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"1137:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"1188:46:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1219:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1230:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1215:3:92"},"nodeType":"YulFunctionCall","src":"1215:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1202:12:92"},"nodeType":"YulFunctionCall","src":"1202:32:92"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1192:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"1243:28:92","value":{"kind":"number","nodeType":"YulLiteral","src":"1253:18:92","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"1247:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"1298:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1307:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1310:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1300:6:92"},"nodeType":"YulFunctionCall","src":"1300:12:92"},"nodeType":"YulExpressionStatement","src":"1300:12:92"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1286:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"1294:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1283:2:92"},"nodeType":"YulFunctionCall","src":"1283:14:92"},"nodeType":"YulIf","src":"1280:34:92"},{"nodeType":"YulVariableDeclaration","src":"1323:32:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1337:9:92"},{"name":"offset","nodeType":"YulIdentifier","src":"1348:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1333:3:92"},"nodeType":"YulFunctionCall","src":"1333:22:92"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"1327:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"1403:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1412:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1415:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1405:6:92"},"nodeType":"YulFunctionCall","src":"1405:12:92"},"nodeType":"YulExpressionStatement","src":"1405:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"1382:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"1386:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1378:3:92"},"nodeType":"YulFunctionCall","src":"1378:13:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1393:7:92"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1374:3:92"},"nodeType":"YulFunctionCall","src":"1374:27:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1367:6:92"},"nodeType":"YulFunctionCall","src":"1367:35:92"},"nodeType":"YulIf","src":"1364:55:92"},{"nodeType":"YulVariableDeclaration","src":"1428:26:92","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"1451:2:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1438:12:92"},"nodeType":"YulFunctionCall","src":"1438:16:92"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"1432:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"1477:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"1479:16:92"},"nodeType":"YulFunctionCall","src":"1479:18:92"},"nodeType":"YulExpressionStatement","src":"1479:18:92"}]},"condition":{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"1469:2:92"},{"name":"_1","nodeType":"YulIdentifier","src":"1473:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1466:2:92"},"nodeType":"YulFunctionCall","src":"1466:10:92"},"nodeType":"YulIf","src":"1463:36:92"},{"nodeType":"YulVariableDeclaration","src":"1508:17:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1522:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"1518:3:92"},"nodeType":"YulFunctionCall","src":"1518:7:92"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"1512:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"1534:23:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1554:2:92","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1548:5:92"},"nodeType":"YulFunctionCall","src":"1548:9:92"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"1538:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"1566:71:92","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1588:6:92"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"1612:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"1616:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1608:3:92"},"nodeType":"YulFunctionCall","src":"1608:13:92"},{"name":"_4","nodeType":"YulIdentifier","src":"1623:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1604:3:92"},"nodeType":"YulFunctionCall","src":"1604:22:92"},{"kind":"number","nodeType":"YulLiteral","src":"1628:2:92","type":"","value":"63"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1600:3:92"},"nodeType":"YulFunctionCall","src":"1600:31:92"},{"name":"_4","nodeType":"YulIdentifier","src":"1633:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1596:3:92"},"nodeType":"YulFunctionCall","src":"1596:40:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1584:3:92"},"nodeType":"YulFunctionCall","src":"1584:53:92"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"1570:10:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"1696:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"1698:16:92"},"nodeType":"YulFunctionCall","src":"1698:18:92"},"nodeType":"YulExpressionStatement","src":"1698:18:92"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"1655:10:92"},{"name":"_1","nodeType":"YulIdentifier","src":"1667:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1652:2:92"},"nodeType":"YulFunctionCall","src":"1652:18:92"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"1675:10:92"},{"name":"memPtr","nodeType":"YulIdentifier","src":"1687:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"1672:2:92"},"nodeType":"YulFunctionCall","src":"1672:22:92"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"1649:2:92"},"nodeType":"YulFunctionCall","src":"1649:46:92"},"nodeType":"YulIf","src":"1646:72:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1734:2:92","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"1738:10:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1727:6:92"},"nodeType":"YulFunctionCall","src":"1727:22:92"},"nodeType":"YulExpressionStatement","src":"1727:22:92"},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1765:6:92"},{"name":"_3","nodeType":"YulIdentifier","src":"1773:2:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1758:6:92"},"nodeType":"YulFunctionCall","src":"1758:18:92"},"nodeType":"YulExpressionStatement","src":"1758:18:92"},{"body":{"nodeType":"YulBlock","src":"1822:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1831:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1834:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1824:6:92"},"nodeType":"YulFunctionCall","src":"1824:12:92"},"nodeType":"YulExpressionStatement","src":"1824:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"1799:2:92"},{"name":"_3","nodeType":"YulIdentifier","src":"1803:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1795:3:92"},"nodeType":"YulFunctionCall","src":"1795:11:92"},{"kind":"number","nodeType":"YulLiteral","src":"1808:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1791:3:92"},"nodeType":"YulFunctionCall","src":"1791:20:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1813:7:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1788:2:92"},"nodeType":"YulFunctionCall","src":"1788:33:92"},"nodeType":"YulIf","src":"1785:53:92"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1864:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"1872:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1860:3:92"},"nodeType":"YulFunctionCall","src":"1860:15:92"},{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"1881:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"1885:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1877:3:92"},"nodeType":"YulFunctionCall","src":"1877:11:92"},{"name":"_3","nodeType":"YulIdentifier","src":"1890:2:92"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"1847:12:92"},"nodeType":"YulFunctionCall","src":"1847:46:92"},"nodeType":"YulExpressionStatement","src":"1847:46:92"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1917:6:92"},{"name":"_3","nodeType":"YulIdentifier","src":"1925:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1913:3:92"},"nodeType":"YulFunctionCall","src":"1913:15:92"},{"kind":"number","nodeType":"YulLiteral","src":"1930:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1909:3:92"},"nodeType":"YulFunctionCall","src":"1909:24:92"},{"kind":"number","nodeType":"YulLiteral","src":"1935:1:92","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1902:6:92"},"nodeType":"YulFunctionCall","src":"1902:35:92"},"nodeType":"YulExpressionStatement","src":"1902:35:92"},{"nodeType":"YulAssignment","src":"1946:16:92","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"1956:6:92"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"1946:6:92"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_bytes32t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"902:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"913:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"925:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"933:6:92","type":""},{"name":"value2","nodeType":"YulTypedName","src":"941:6:92","type":""},{"name":"value3","nodeType":"YulTypedName","src":"949:6:92","type":""}],"src":"830:1138:92"},{"body":{"nodeType":"YulBlock","src":"2116:358:92","statements":[{"nodeType":"YulAssignment","src":"2126:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2138:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2149:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2134:3:92"},"nodeType":"YulFunctionCall","src":"2134:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2126:4:92"}]},{"nodeType":"YulVariableDeclaration","src":"2161:20:92","value":{"name":"headStart","nodeType":"YulIdentifier","src":"2172:9:92"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"2165:3:92","type":""}]},{"nodeType":"YulAssignment","src":"2190:16:92","value":{"name":"headStart","nodeType":"YulIdentifier","src":"2197:9:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"2190:3:92"}]},{"nodeType":"YulVariableDeclaration","src":"2215:20:92","value":{"name":"value0","nodeType":"YulIdentifier","src":"2229:6:92"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"2219:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2244:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"2253:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"2248:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"2310:158:92","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2331:3:92"},{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"2346:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2340:5:92"},"nodeType":"YulFunctionCall","src":"2340:13:92"},{"kind":"number","nodeType":"YulLiteral","src":"2355:4:92","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2336:3:92"},"nodeType":"YulFunctionCall","src":"2336:24:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2324:6:92"},"nodeType":"YulFunctionCall","src":"2324:37:92"},"nodeType":"YulExpressionStatement","src":"2324:37:92"},{"nodeType":"YulVariableDeclaration","src":"2374:14:92","value":{"kind":"number","nodeType":"YulLiteral","src":"2384:4:92","type":"","value":"0x20"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"2378:2:92","type":""}]},{"nodeType":"YulAssignment","src":"2401:19:92","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2412:3:92"},{"name":"_1","nodeType":"YulIdentifier","src":"2417:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2408:3:92"},"nodeType":"YulFunctionCall","src":"2408:12:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"2401:3:92"}]},{"nodeType":"YulAssignment","src":"2433:25:92","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"2447:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"2455:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2443:3:92"},"nodeType":"YulFunctionCall","src":"2443:15:92"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"2433:6:92"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"2274:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"2277:4:92","type":"","value":"0x03"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2271:2:92"},"nodeType":"YulFunctionCall","src":"2271:11:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"2283:18:92","statements":[{"nodeType":"YulAssignment","src":"2285:14:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"2294:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"2297:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2290:3:92"},"nodeType":"YulFunctionCall","src":"2290:9:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"2285:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"2267:3:92","statements":[]},"src":"2263:205:92"}]},"name":"abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2085:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"2096:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2107:4:92","type":""}],"src":"1973:501:92"},{"body":{"nodeType":"YulBlock","src":"2546:206:92","statements":[{"body":{"nodeType":"YulBlock","src":"2592:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2601:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2604:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2594:6:92"},"nodeType":"YulFunctionCall","src":"2594:12:92"},"nodeType":"YulExpressionStatement","src":"2594:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2567:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"2576:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2563:3:92"},"nodeType":"YulFunctionCall","src":"2563:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"2588:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2559:3:92"},"nodeType":"YulFunctionCall","src":"2559:32:92"},"nodeType":"YulIf","src":"2556:52:92"},{"nodeType":"YulVariableDeclaration","src":"2617:36:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2643:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2630:12:92"},"nodeType":"YulFunctionCall","src":"2630:23:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"2621:5:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"2706:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2715:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2718:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2708:6:92"},"nodeType":"YulFunctionCall","src":"2708:12:92"},"nodeType":"YulExpressionStatement","src":"2708:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2675:5:92"},{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2696:5:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2689:6:92"},"nodeType":"YulFunctionCall","src":"2689:13:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2682:6:92"},"nodeType":"YulFunctionCall","src":"2682:21:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"2672:2:92"},"nodeType":"YulFunctionCall","src":"2672:32:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2665:6:92"},"nodeType":"YulFunctionCall","src":"2665:40:92"},"nodeType":"YulIf","src":"2662:60:92"},{"nodeType":"YulAssignment","src":"2731:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"2741:5:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2731:6:92"}]}]},"name":"abi_decode_tuple_t_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2512:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2523:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2535:6:92","type":""}],"src":"2479:273:92"}]},"contents":"{\n { }\n function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n if iszero(eq(value, and(value, shl(224, 0xffffffff)))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function abi_decode_address(offset) -> value\n {\n value := calldataload(offset)\n if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n }\n function panic_error_0x41()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function abi_decode_tuple_t_addresst_addresst_bytes32t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n {\n if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := abi_decode_address(add(headStart, 32))\n value2 := calldataload(add(headStart, 64))\n let offset := calldataload(add(headStart, 96))\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n let _2 := add(headStart, offset)\n if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n let _3 := calldataload(_2)\n if gt(_3, _1) { panic_error_0x41() }\n let _4 := not(31)\n let memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n mstore(memPtr, _3)\n if gt(add(add(_2, _3), 32), dataEnd) { revert(0, 0) }\n calldatacopy(add(memPtr, 32), add(_2, 32), _3)\n mstore(add(add(memPtr, _3), 32), 0)\n value3 := memPtr\n }\n function abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 96)\n let pos := headStart\n pos := headStart\n let srcPtr := value0\n let i := 0\n for { } lt(i, 0x03) { i := add(i, 1) }\n {\n mstore(pos, and(mload(srcPtr), 0xff))\n let _1 := 0x20\n pos := add(pos, _1)\n srcPtr := add(srcPtr, _1)\n }\n }\n function abi_decode_tuple_t_bool(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n value0 := value\n }\n}","id":92,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100675760003560e01c80632ae9c600116100505780632ae9c600146100b057806385bb7d69146100c5578063f01b7dd2146100d257600080fd5b806301ffc9a71461006c5780632675fdd014610094575b600080fd5b61007f61007a36600461018e565b6100f5565b60405190151581526020015b60405180910390f35b61007f6100a23660046101fe565b60005460ff16949350505050565b6100b8610146565b60405161008b91906102da565b60005461007f9060ff1681565b6100f36100e036600461030e565b6000805460ff1916911515919091179055565b005b60006001600160e01b031982166302675fdd60e41b148061012557506001600160e01b03198216621574e360e91b145b8061014057506301ffc9a760e01b6001600160e01b03198316145b92915050565b61014e610170565b5060408051606081018252600181526004602082015260009181019190915290565b60405180606001604052806003906020820280368337509192915050565b6000602082840312156101a057600080fd5b81356001600160e01b0319811681146101b857600080fd5b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146101e357600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b6000806000806080858703121561021457600080fd5b61021d856101bf565b935061022b602086016101bf565b925060408501359150606085013567ffffffffffffffff8082111561024f57600080fd5b818701915087601f83011261026357600080fd5b813581811115610275576102756101e8565b604051601f8201601f19908116603f0116810190838211818310171561029d5761029d6101e8565b816040528281528a60208487010111156102b657600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b60608101818360005b600381101561030557815160ff168352602092830192909101906001016102e3565b50505092915050565b60006020828403121561032057600080fd5b813580151581146101b857600080fdfea164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x67 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x2AE9C600 GT PUSH2 0x50 JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0xB0 JUMPI DUP1 PUSH4 0x85BB7D69 EQ PUSH2 0xC5 JUMPI DUP1 PUSH4 0xF01B7DD2 EQ PUSH2 0xD2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x6C JUMPI DUP1 PUSH4 0x2675FDD0 EQ PUSH2 0x94 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7F PUSH2 0x7A CALLDATASIZE PUSH1 0x4 PUSH2 0x18E JUMP JUMPDEST PUSH2 0xF5 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x7F PUSH2 0xA2 CALLDATASIZE PUSH1 0x4 PUSH2 0x1FE JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xFF AND SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0xB8 PUSH2 0x146 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x8B SWAP2 SWAP1 PUSH2 0x2DA JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x7F SWAP1 PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0xF3 PUSH2 0xE0 CALLDATASIZE PUSH1 0x4 PUSH2 0x30E JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x2675FDD PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x125 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x140 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x14E PUSH2 0x170 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x1B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x1E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x214 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x21D DUP6 PUSH2 0x1BF JUMP JUMPDEST SWAP4 POP PUSH2 0x22B PUSH1 0x20 DUP7 ADD PUSH2 0x1BF JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x24F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x263 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x275 JUMPI PUSH2 0x275 PUSH2 0x1E8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x29D JUMPI PUSH2 0x29D PUSH2 0x1E8 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP11 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x2B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0x305 JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x2E3 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x320 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x1B8 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"285:405:46:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;955:301:70;;;;;;:::i;:::-;;:::i;:::-;;;470:14:92;;463:22;445:41;;433:2;418:18;955:301:70;;;;;;;;453:235:46;;;;;;:::i;:::-;606:4;675:6;;;453:235;;;;;;;631:98:90;;;:::i;:::-;;;;;;;:::i;347:18:46:-;;;;;;;;;372:75;;;;;;:::i;:::-;424:6;:16;;-1:-1:-1;;424:16:46;;;;;;;;;;372:75;;;955:301:70;1041:4;-1:-1:-1;;;;;;1076:54:70;;-1:-1:-1;;;1076:54:70;;:120;;-1:-1:-1;;;;;;;1146:50:70;;-1:-1:-1;;;1146:50:70;1076:120;:173;;;-1:-1:-1;;;;;;;;;;937:40:38;;;1212:37:70;1057:192;955:301;-1:-1:-1;;955:301:70:o;631:98:90:-;679:15;;:::i;:::-;-1:-1:-1;706:16:90;;;;;;;;714:1;706:16;;717:1;706:16;;;;-1:-1:-1;706:16:90;;;;;;;;631:98::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:286:92:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:92;;209:43;;199:71;;266:1;263;256:12;199:71;289:5;14:286;-1:-1:-1;;;14:286:92:o;497:196::-;565:20;;625:42;614:54;;604:65;;594:93;;683:1;680;673:12;594:93;497:196;;;:::o;698:127::-;759:10;754:3;750:20;747:1;740:31;790:4;787:1;780:15;814:4;811:1;804:15;830:1138;925:6;933;941;949;1002:3;990:9;981:7;977:23;973:33;970:53;;;1019:1;1016;1009:12;970:53;1042:29;1061:9;1042:29;:::i;:::-;1032:39;;1090:38;1124:2;1113:9;1109:18;1090:38;:::i;:::-;1080:48;;1175:2;1164:9;1160:18;1147:32;1137:42;;1230:2;1219:9;1215:18;1202:32;1253:18;1294:2;1286:6;1283:14;1280:34;;;1310:1;1307;1300:12;1280:34;1348:6;1337:9;1333:22;1323:32;;1393:7;1386:4;1382:2;1378:13;1374:27;1364:55;;1415:1;1412;1405:12;1364:55;1451:2;1438:16;1473:2;1469;1466:10;1463:36;;;1479:18;;:::i;:::-;1554:2;1548:9;1522:2;1608:13;;-1:-1:-1;;1604:22:92;;;1628:2;1600:31;1596:40;1584:53;;;1652:18;;;1672:22;;;1649:46;1646:72;;;1698:18;;:::i;:::-;1738:10;1734:2;1727:22;1773:2;1765:6;1758:18;1813:7;1808:2;1803;1799;1795:11;1791:20;1788:33;1785:53;;;1834:1;1831;1824:12;1785:53;1890:2;1885;1881;1877:11;1872:2;1864:6;1860:15;1847:46;1935:1;1930:2;1925;1917:6;1913:15;1909:24;1902:35;1956:6;1946:16;;;;;;;830:1138;;;;;;;:::o;1973:501::-;2149:2;2134:18;;2138:9;2229:6;2107:4;2263:205;2277:4;2274:1;2271:11;2263:205;;;2340:13;;2355:4;2336:24;2324:37;;2384:4;2408:12;;;;2443:15;;;;2297:1;2290:9;2263:205;;;2267:3;;;1973:501;;;;:::o;2479:273::-;2535:6;2588:2;2576:9;2567:7;2563:23;2559:32;2556:52;;;2604:1;2601;2594:12;2556:52;2643:9;2630:23;2696:5;2689:13;2682:21;2675:5;2672:32;2662:60;;2718:1;2715;2708:12"},"gasEstimates":{"creation":{"codeDepositCost":"165800","executionCost":"208","totalCost":"166008"},"external":{"answer()":"2321","isGranted(address,address,bytes32,bytes)":"infinite","protocolVersion()":"infinite","setAnswer(bool)":"24526","supportsInterface(bytes4)":"482"}},"methodIdentifiers":{"answer()":"85bb7d69","isGranted(address,address,bytes32,bytes)":"2675fdd0","protocolVersion()":"2ae9c600","setAnswer(bool)":"f01b7dd2","supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"answer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_who\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_permissionId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"isGranted\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"protocolVersion\",\"outputs\":[{\"internalType\":\"uint8[3]\",\"name\":\"\",\"type\":\"uint8[3]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"_answer\",\"type\":\"bool\"}],\"name\":\"setAnswer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"DO NOT USE IN PRODUCTION!\",\"kind\":\"dev\",\"methods\":{\"isGranted(address,address,bytes32,bytes)\":{\"params\":{\"_data\":\"Optional data passed to the `PermissionCondition` implementation.\",\"_permissionId\":\"The permission identifier.\",\"_where\":\"The address of the target contract.\",\"_who\":\"The address (EOA or contract) for which the permissions are checked.\"},\"returns\":{\"_0\":\"Returns true if the call is permitted.\"}},\"protocolVersion()\":{\"details\":\"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\",\"returns\":{\"_0\":\"Returns the semantic Aragon OSx protocol version number.\"}},\"supportsInterface(bytes4)\":{\"params\":{\"_interfaceId\":\"The ID of the interface.\"},\"returns\":{\"_0\":\"Returns `true` if the interface is supported.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"isGranted(address,address,bytes32,bytes)\":{\"notice\":\"Checks if a call is permitted.\"},\"protocolVersion()\":{\"notice\":\"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Checks if an interface is supported by this or its parent contract.\"}},\"notice\":\"A mock permission condition that can be set to permit or deny every call.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/mocks/permission/condition/PermissionConditionMock.sol\":\"PermissionConditionMock\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165 is IERC165 {\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165).interfaceId;\\n }\\n}\\n\",\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"src/mocks/permission/condition/PermissionConditionMock.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {PermissionCondition} from \\\"../../../permission/condition/PermissionCondition.sol\\\";\\n\\n/// @notice A mock permission condition that can be set to permit or deny every call.\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PermissionConditionMock is PermissionCondition {\\n bool public answer;\\n\\n function setAnswer(bool _answer) external {\\n answer = _answer;\\n }\\n\\n function isGranted(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes memory _data\\n ) external view returns (bool) {\\n (_where, _who, _permissionId, _data);\\n return answer;\\n }\\n}\\n\",\"keccak256\":\"0xdd24723dcbdc7690785c75f0b9428a820c3805b9a74baf3434859e4a7989d2d8\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/condition/IPermissionCondition.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IPermissionCondition\\n/// @author Aragon X - 2021-2023\\n/// @notice An interface to be implemented to support custom permission logic.\\n/// @dev To attach a condition to a permission, the `grantWithCondition` function must be used and refer to the implementing contract's address with the `condition` argument.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IPermissionCondition {\\n /// @notice Checks if a call is permitted.\\n /// @param _where The address of the target contract.\\n /// @param _who The address (EOA or contract) for which the permissions are checked.\\n /// @param _permissionId The permission identifier.\\n /// @param _data Optional data passed to the `PermissionCondition` implementation.\\n /// @return isPermitted Returns true if the call is permitted.\\n function isGranted(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes calldata _data\\n ) external view returns (bool isPermitted);\\n}\\n\",\"keccak256\":\"0xc3280622bdb57856f0b20ded71537fc99b344d1e6a0430abfaca8304a9ece922\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/condition/PermissionCondition.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ERC165} from \\\"@openzeppelin/contracts/utils/introspection/ERC165.sol\\\";\\n\\nimport {IProtocolVersion} from \\\"../../utils/versioning/IProtocolVersion.sol\\\";\\nimport {ProtocolVersion} from \\\"../../utils/versioning/ProtocolVersion.sol\\\";\\nimport {IPermissionCondition} from \\\"./IPermissionCondition.sol\\\";\\n\\n/// @title PermissionCondition\\n/// @author Aragon X - 2023\\n/// @notice An abstract contract for non-upgradeable contracts instantiated via the `new` keyword to inherit from to support customary permissions depending on arbitrary on-chain state.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract PermissionCondition is ERC165, IPermissionCondition, ProtocolVersion {\\n /// @notice Checks if an interface is supported by this or its parent contract.\\n /// @param _interfaceId The ID of the interface.\\n /// @return Returns `true` if the interface is supported.\\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\\n return\\n _interfaceId == type(IPermissionCondition).interfaceId ||\\n _interfaceId == type(IProtocolVersion).interfaceId ||\\n super.supportsInterface(_interfaceId);\\n }\\n}\\n\",\"keccak256\":\"0xd952ceadfde4fdb7c26d1df7b7e401846e6134bee70364e91664504b7a9aa52a\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/IProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IProtocolVersion\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the semantic Aragon OSx protocol version number.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IProtocolVersion {\\n /// @notice Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\\n /// @return _version Returns the semantic Aragon OSx protocol version number.\\n /// @dev This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\\n function protocolVersion() external view returns (uint8[3] memory _version);\\n}\\n\",\"keccak256\":\"0x00a4da654d21dc1bdadbdc8bd54bb86c378c56f85e461ccc31303628ea621361\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/ProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IProtocolVersion} from \\\"./IProtocolVersion.sol\\\";\\n\\n/// @title ProtocolVersion\\n/// @author Aragon X - 2023\\n/// @notice An abstract, stateless, non-upgradeable contract providing the current Aragon OSx protocol version number.\\n/// @dev Do not add any new variables to this contract that would shift down storage in the inheritance chain.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract ProtocolVersion is IProtocolVersion {\\n // IMPORTANT: Do not add any storage variable, see the above notice.\\n\\n /// @inheritdoc IProtocolVersion\\n function protocolVersion() public pure returns (uint8[3] memory) {\\n return [1, 4, 0];\\n }\\n}\\n\",\"keccak256\":\"0x3975c937be935f687c6b6b8f379071232681e98cf04b175d72781b819ea52bdb\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[{"astId":11115,"contract":"src/mocks/permission/condition/PermissionConditionMock.sol:PermissionConditionMock","label":"answer","offset":0,"slot":"0","type":"t_bool"}],"types":{"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"}}},"userdoc":{"kind":"user","methods":{"isGranted(address,address,bytes32,bytes)":{"notice":"Checks if a call is permitted."},"protocolVersion()":{"notice":"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with."},"supportsInterface(bytes4)":{"notice":"Checks if an interface is supported by this or its parent contract."}},"notice":"A mock permission condition that can be set to permit or deny every call.","version":1}}},"src/mocks/permission/condition/PermissionConditionUpgradeableMock.sol":{"PermissionConditionUpgradeableMock":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"inputs":[],"name":"answer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_where","type":"address"},{"internalType":"address","name":"_who","type":"address"},{"internalType":"bytes32","name":"_permissionId","type":"bytes32"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"isGranted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"protocolVersion","outputs":[{"internalType":"uint8[3]","name":"","type":"uint8[3]"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_answer","type":"bool"}],"name":"setAnswer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"DO NOT USE IN PRODUCTION!","kind":"dev","methods":{"isGranted(address,address,bytes32,bytes)":{"params":{"_data":"Optional data passed to the `PermissionCondition` implementation.","_permissionId":"The permission identifier.","_where":"The address of the target contract.","_who":"The address (EOA or contract) for which the permissions are checked."},"returns":{"_0":"Returns true if the call is permitted."}},"protocolVersion()":{"details":"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.","returns":{"_0":"Returns the semantic Aragon OSx protocol version number."}},"supportsInterface(bytes4)":{"params":{"_interfaceId":"The ID of the interface."},"returns":{"_0":"Returns `true` if the interface is supported."}}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b5061033d806100206000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80632ae9c600116100505780632ae9c600146100b057806385bb7d69146100c5578063f01b7dd2146100d257600080fd5b806301ffc9a71461006c5780632675fdd014610094575b600080fd5b61007f61007a36600461018e565b6100f5565b60405190151581526020015b60405180910390f35b61007f6100a23660046101fe565b60335460ff16949350505050565b6100b8610146565b60405161008b91906102da565b60335461007f9060ff1681565b6100f36100e036600461030e565b6033805460ff1916911515919091179055565b005b60006001600160e01b031982166302675fdd60e41b148061012557506001600160e01b03198216621574e360e91b145b8061014057506301ffc9a760e01b6001600160e01b03198316145b92915050565b61014e610170565b5060408051606081018252600181526004602082015260009181019190915290565b60405180606001604052806003906020820280368337509192915050565b6000602082840312156101a057600080fd5b81356001600160e01b0319811681146101b857600080fd5b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146101e357600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b6000806000806080858703121561021457600080fd5b61021d856101bf565b935061022b602086016101bf565b925060408501359150606085013567ffffffffffffffff8082111561024f57600080fd5b818701915087601f83011261026357600080fd5b813581811115610275576102756101e8565b604051601f8201601f19908116603f0116810190838211818310171561029d5761029d6101e8565b816040528281528a60208487010111156102b657600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b60608101818360005b600381101561030557815160ff168352602092830192909101906001016102e3565b50505092915050565b60006020828403121561032057600080fd5b813580151581146101b857600080fdfea164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x33D DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x67 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x2AE9C600 GT PUSH2 0x50 JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0xB0 JUMPI DUP1 PUSH4 0x85BB7D69 EQ PUSH2 0xC5 JUMPI DUP1 PUSH4 0xF01B7DD2 EQ PUSH2 0xD2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x6C JUMPI DUP1 PUSH4 0x2675FDD0 EQ PUSH2 0x94 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7F PUSH2 0x7A CALLDATASIZE PUSH1 0x4 PUSH2 0x18E JUMP JUMPDEST PUSH2 0xF5 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x7F PUSH2 0xA2 CALLDATASIZE PUSH1 0x4 PUSH2 0x1FE JUMP JUMPDEST PUSH1 0x33 SLOAD PUSH1 0xFF AND SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0xB8 PUSH2 0x146 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x8B SWAP2 SWAP1 PUSH2 0x2DA JUMP JUMPDEST PUSH1 0x33 SLOAD PUSH2 0x7F SWAP1 PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0xF3 PUSH2 0xE0 CALLDATASIZE PUSH1 0x4 PUSH2 0x30E JUMP JUMPDEST PUSH1 0x33 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x2675FDD PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x125 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x140 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x14E PUSH2 0x170 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x1B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x1E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x214 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x21D DUP6 PUSH2 0x1BF JUMP JUMPDEST SWAP4 POP PUSH2 0x22B PUSH1 0x20 DUP7 ADD PUSH2 0x1BF JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x24F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x263 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x275 JUMPI PUSH2 0x275 PUSH2 0x1E8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x29D JUMPI PUSH2 0x29D PUSH2 0x1E8 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP11 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x2B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0x305 JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x2E3 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x320 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x1B8 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"335:427:47:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@answer_11157":{"entryPoint":null,"id":11157,"parameterSlots":0,"returnSlots":0},"@isGranted_11189":{"entryPoint":null,"id":11189,"parameterSlots":4,"returnSlots":1},"@protocolVersion_14765":{"entryPoint":326,"id":14765,"parameterSlots":0,"returnSlots":1},"@setAnswer_11167":{"entryPoint":null,"id":11167,"parameterSlots":1,"returnSlots":0},"@supportsInterface_13322":{"entryPoint":245,"id":13322,"parameterSlots":1,"returnSlots":1},"@supportsInterface_2816":{"entryPoint":null,"id":2816,"parameterSlots":1,"returnSlots":1},"abi_decode_address":{"entryPoint":447,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_tuple_t_addresst_addresst_bytes32t_bytes_memory_ptr":{"entryPoint":510,"id":null,"parameterSlots":2,"returnSlots":4},"abi_decode_tuple_t_bool":{"entryPoint":782,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes4":{"entryPoint":398,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed":{"entryPoint":730,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"panic_error_0x41":{"entryPoint":488,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:2754:92","statements":[{"nodeType":"YulBlock","src":"6:3:92","statements":[]},{"body":{"nodeType":"YulBlock","src":"83:217:92","statements":[{"body":{"nodeType":"YulBlock","src":"129:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"138:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"141:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"131:6:92"},"nodeType":"YulFunctionCall","src":"131:12:92"},"nodeType":"YulExpressionStatement","src":"131:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"104:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"113:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"100:3:92"},"nodeType":"YulFunctionCall","src":"100:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"125:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"96:3:92"},"nodeType":"YulFunctionCall","src":"96:32:92"},"nodeType":"YulIf","src":"93:52:92"},{"nodeType":"YulVariableDeclaration","src":"154:36:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"180:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"167:12:92"},"nodeType":"YulFunctionCall","src":"167:23:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"158:5:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"254:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"263:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"266:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"256:6:92"},"nodeType":"YulFunctionCall","src":"256:12:92"},"nodeType":"YulExpressionStatement","src":"256:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"212:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"223:5:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"234:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"239:10:92","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"230:3:92"},"nodeType":"YulFunctionCall","src":"230:20:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"219:3:92"},"nodeType":"YulFunctionCall","src":"219:32:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"209:2:92"},"nodeType":"YulFunctionCall","src":"209:43:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"202:6:92"},"nodeType":"YulFunctionCall","src":"202:51:92"},"nodeType":"YulIf","src":"199:71:92"},{"nodeType":"YulAssignment","src":"279:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"289:5:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"279:6:92"}]}]},"name":"abi_decode_tuple_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"49:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"60:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"72:6:92","type":""}],"src":"14:286:92"},{"body":{"nodeType":"YulBlock","src":"400:92:92","statements":[{"nodeType":"YulAssignment","src":"410:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"422:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"433:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"418:3:92"},"nodeType":"YulFunctionCall","src":"418:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"410:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"452:9:92"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"477:6:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"470:6:92"},"nodeType":"YulFunctionCall","src":"470:14:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"463:6:92"},"nodeType":"YulFunctionCall","src":"463:22:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"445:6:92"},"nodeType":"YulFunctionCall","src":"445:41:92"},"nodeType":"YulExpressionStatement","src":"445:41:92"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"369:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"380:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"391:4:92","type":""}],"src":"305:187:92"},{"body":{"nodeType":"YulBlock","src":"546:147:92","statements":[{"nodeType":"YulAssignment","src":"556:29:92","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"578:6:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"565:12:92"},"nodeType":"YulFunctionCall","src":"565:20:92"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"556:5:92"}]},{"body":{"nodeType":"YulBlock","src":"671:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"680:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"683:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"673:6:92"},"nodeType":"YulFunctionCall","src":"673:12:92"},"nodeType":"YulExpressionStatement","src":"673:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"607:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"618:5:92"},{"kind":"number","nodeType":"YulLiteral","src":"625:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"614:3:92"},"nodeType":"YulFunctionCall","src":"614:54:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"604:2:92"},"nodeType":"YulFunctionCall","src":"604:65:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"597:6:92"},"nodeType":"YulFunctionCall","src":"597:73:92"},"nodeType":"YulIf","src":"594:93:92"}]},"name":"abi_decode_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"525:6:92","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"536:5:92","type":""}],"src":"497:196:92"},{"body":{"nodeType":"YulBlock","src":"730:95:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"747:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"754:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"759:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"750:3:92"},"nodeType":"YulFunctionCall","src":"750:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"740:6:92"},"nodeType":"YulFunctionCall","src":"740:31:92"},"nodeType":"YulExpressionStatement","src":"740:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"787:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"790:4:92","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"780:6:92"},"nodeType":"YulFunctionCall","src":"780:15:92"},"nodeType":"YulExpressionStatement","src":"780:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"811:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"814:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"804:6:92"},"nodeType":"YulFunctionCall","src":"804:15:92"},"nodeType":"YulExpressionStatement","src":"804:15:92"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"698:127:92"},{"body":{"nodeType":"YulBlock","src":"960:1008:92","statements":[{"body":{"nodeType":"YulBlock","src":"1007:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1016:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1019:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1009:6:92"},"nodeType":"YulFunctionCall","src":"1009:12:92"},"nodeType":"YulExpressionStatement","src":"1009:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"981:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"990:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"977:3:92"},"nodeType":"YulFunctionCall","src":"977:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"1002:3:92","type":"","value":"128"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"973:3:92"},"nodeType":"YulFunctionCall","src":"973:33:92"},"nodeType":"YulIf","src":"970:53:92"},{"nodeType":"YulAssignment","src":"1032:39:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1061:9:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"1042:18:92"},"nodeType":"YulFunctionCall","src":"1042:29:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1032:6:92"}]},{"nodeType":"YulAssignment","src":"1080:48:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1113:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1124:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1109:3:92"},"nodeType":"YulFunctionCall","src":"1109:18:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"1090:18:92"},"nodeType":"YulFunctionCall","src":"1090:38:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1080:6:92"}]},{"nodeType":"YulAssignment","src":"1137:42:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1164:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1175:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1160:3:92"},"nodeType":"YulFunctionCall","src":"1160:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1147:12:92"},"nodeType":"YulFunctionCall","src":"1147:32:92"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"1137:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"1188:46:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1219:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1230:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1215:3:92"},"nodeType":"YulFunctionCall","src":"1215:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1202:12:92"},"nodeType":"YulFunctionCall","src":"1202:32:92"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1192:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"1243:28:92","value":{"kind":"number","nodeType":"YulLiteral","src":"1253:18:92","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"1247:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"1298:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1307:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1310:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1300:6:92"},"nodeType":"YulFunctionCall","src":"1300:12:92"},"nodeType":"YulExpressionStatement","src":"1300:12:92"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1286:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"1294:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1283:2:92"},"nodeType":"YulFunctionCall","src":"1283:14:92"},"nodeType":"YulIf","src":"1280:34:92"},{"nodeType":"YulVariableDeclaration","src":"1323:32:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1337:9:92"},{"name":"offset","nodeType":"YulIdentifier","src":"1348:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1333:3:92"},"nodeType":"YulFunctionCall","src":"1333:22:92"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"1327:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"1403:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1412:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1415:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1405:6:92"},"nodeType":"YulFunctionCall","src":"1405:12:92"},"nodeType":"YulExpressionStatement","src":"1405:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"1382:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"1386:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1378:3:92"},"nodeType":"YulFunctionCall","src":"1378:13:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1393:7:92"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1374:3:92"},"nodeType":"YulFunctionCall","src":"1374:27:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1367:6:92"},"nodeType":"YulFunctionCall","src":"1367:35:92"},"nodeType":"YulIf","src":"1364:55:92"},{"nodeType":"YulVariableDeclaration","src":"1428:26:92","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"1451:2:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1438:12:92"},"nodeType":"YulFunctionCall","src":"1438:16:92"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"1432:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"1477:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"1479:16:92"},"nodeType":"YulFunctionCall","src":"1479:18:92"},"nodeType":"YulExpressionStatement","src":"1479:18:92"}]},"condition":{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"1469:2:92"},{"name":"_1","nodeType":"YulIdentifier","src":"1473:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1466:2:92"},"nodeType":"YulFunctionCall","src":"1466:10:92"},"nodeType":"YulIf","src":"1463:36:92"},{"nodeType":"YulVariableDeclaration","src":"1508:17:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1522:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"1518:3:92"},"nodeType":"YulFunctionCall","src":"1518:7:92"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"1512:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"1534:23:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1554:2:92","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1548:5:92"},"nodeType":"YulFunctionCall","src":"1548:9:92"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"1538:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"1566:71:92","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1588:6:92"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"1612:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"1616:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1608:3:92"},"nodeType":"YulFunctionCall","src":"1608:13:92"},{"name":"_4","nodeType":"YulIdentifier","src":"1623:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1604:3:92"},"nodeType":"YulFunctionCall","src":"1604:22:92"},{"kind":"number","nodeType":"YulLiteral","src":"1628:2:92","type":"","value":"63"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1600:3:92"},"nodeType":"YulFunctionCall","src":"1600:31:92"},{"name":"_4","nodeType":"YulIdentifier","src":"1633:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1596:3:92"},"nodeType":"YulFunctionCall","src":"1596:40:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1584:3:92"},"nodeType":"YulFunctionCall","src":"1584:53:92"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"1570:10:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"1696:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"1698:16:92"},"nodeType":"YulFunctionCall","src":"1698:18:92"},"nodeType":"YulExpressionStatement","src":"1698:18:92"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"1655:10:92"},{"name":"_1","nodeType":"YulIdentifier","src":"1667:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1652:2:92"},"nodeType":"YulFunctionCall","src":"1652:18:92"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"1675:10:92"},{"name":"memPtr","nodeType":"YulIdentifier","src":"1687:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"1672:2:92"},"nodeType":"YulFunctionCall","src":"1672:22:92"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"1649:2:92"},"nodeType":"YulFunctionCall","src":"1649:46:92"},"nodeType":"YulIf","src":"1646:72:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1734:2:92","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"1738:10:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1727:6:92"},"nodeType":"YulFunctionCall","src":"1727:22:92"},"nodeType":"YulExpressionStatement","src":"1727:22:92"},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1765:6:92"},{"name":"_3","nodeType":"YulIdentifier","src":"1773:2:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1758:6:92"},"nodeType":"YulFunctionCall","src":"1758:18:92"},"nodeType":"YulExpressionStatement","src":"1758:18:92"},{"body":{"nodeType":"YulBlock","src":"1822:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1831:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1834:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1824:6:92"},"nodeType":"YulFunctionCall","src":"1824:12:92"},"nodeType":"YulExpressionStatement","src":"1824:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"1799:2:92"},{"name":"_3","nodeType":"YulIdentifier","src":"1803:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1795:3:92"},"nodeType":"YulFunctionCall","src":"1795:11:92"},{"kind":"number","nodeType":"YulLiteral","src":"1808:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1791:3:92"},"nodeType":"YulFunctionCall","src":"1791:20:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1813:7:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1788:2:92"},"nodeType":"YulFunctionCall","src":"1788:33:92"},"nodeType":"YulIf","src":"1785:53:92"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1864:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"1872:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1860:3:92"},"nodeType":"YulFunctionCall","src":"1860:15:92"},{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"1881:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"1885:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1877:3:92"},"nodeType":"YulFunctionCall","src":"1877:11:92"},{"name":"_3","nodeType":"YulIdentifier","src":"1890:2:92"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"1847:12:92"},"nodeType":"YulFunctionCall","src":"1847:46:92"},"nodeType":"YulExpressionStatement","src":"1847:46:92"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1917:6:92"},{"name":"_3","nodeType":"YulIdentifier","src":"1925:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1913:3:92"},"nodeType":"YulFunctionCall","src":"1913:15:92"},{"kind":"number","nodeType":"YulLiteral","src":"1930:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1909:3:92"},"nodeType":"YulFunctionCall","src":"1909:24:92"},{"kind":"number","nodeType":"YulLiteral","src":"1935:1:92","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1902:6:92"},"nodeType":"YulFunctionCall","src":"1902:35:92"},"nodeType":"YulExpressionStatement","src":"1902:35:92"},{"nodeType":"YulAssignment","src":"1946:16:92","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"1956:6:92"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"1946:6:92"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_bytes32t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"902:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"913:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"925:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"933:6:92","type":""},{"name":"value2","nodeType":"YulTypedName","src":"941:6:92","type":""},{"name":"value3","nodeType":"YulTypedName","src":"949:6:92","type":""}],"src":"830:1138:92"},{"body":{"nodeType":"YulBlock","src":"2116:358:92","statements":[{"nodeType":"YulAssignment","src":"2126:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2138:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2149:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2134:3:92"},"nodeType":"YulFunctionCall","src":"2134:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2126:4:92"}]},{"nodeType":"YulVariableDeclaration","src":"2161:20:92","value":{"name":"headStart","nodeType":"YulIdentifier","src":"2172:9:92"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"2165:3:92","type":""}]},{"nodeType":"YulAssignment","src":"2190:16:92","value":{"name":"headStart","nodeType":"YulIdentifier","src":"2197:9:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"2190:3:92"}]},{"nodeType":"YulVariableDeclaration","src":"2215:20:92","value":{"name":"value0","nodeType":"YulIdentifier","src":"2229:6:92"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"2219:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2244:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"2253:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"2248:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"2310:158:92","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2331:3:92"},{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"2346:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2340:5:92"},"nodeType":"YulFunctionCall","src":"2340:13:92"},{"kind":"number","nodeType":"YulLiteral","src":"2355:4:92","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2336:3:92"},"nodeType":"YulFunctionCall","src":"2336:24:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2324:6:92"},"nodeType":"YulFunctionCall","src":"2324:37:92"},"nodeType":"YulExpressionStatement","src":"2324:37:92"},{"nodeType":"YulVariableDeclaration","src":"2374:14:92","value":{"kind":"number","nodeType":"YulLiteral","src":"2384:4:92","type":"","value":"0x20"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"2378:2:92","type":""}]},{"nodeType":"YulAssignment","src":"2401:19:92","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2412:3:92"},{"name":"_1","nodeType":"YulIdentifier","src":"2417:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2408:3:92"},"nodeType":"YulFunctionCall","src":"2408:12:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"2401:3:92"}]},{"nodeType":"YulAssignment","src":"2433:25:92","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"2447:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"2455:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2443:3:92"},"nodeType":"YulFunctionCall","src":"2443:15:92"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"2433:6:92"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"2274:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"2277:4:92","type":"","value":"0x03"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2271:2:92"},"nodeType":"YulFunctionCall","src":"2271:11:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"2283:18:92","statements":[{"nodeType":"YulAssignment","src":"2285:14:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"2294:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"2297:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2290:3:92"},"nodeType":"YulFunctionCall","src":"2290:9:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"2285:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"2267:3:92","statements":[]},"src":"2263:205:92"}]},"name":"abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2085:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"2096:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2107:4:92","type":""}],"src":"1973:501:92"},{"body":{"nodeType":"YulBlock","src":"2546:206:92","statements":[{"body":{"nodeType":"YulBlock","src":"2592:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2601:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2604:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2594:6:92"},"nodeType":"YulFunctionCall","src":"2594:12:92"},"nodeType":"YulExpressionStatement","src":"2594:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2567:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"2576:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2563:3:92"},"nodeType":"YulFunctionCall","src":"2563:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"2588:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2559:3:92"},"nodeType":"YulFunctionCall","src":"2559:32:92"},"nodeType":"YulIf","src":"2556:52:92"},{"nodeType":"YulVariableDeclaration","src":"2617:36:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2643:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2630:12:92"},"nodeType":"YulFunctionCall","src":"2630:23:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"2621:5:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"2706:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2715:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2718:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2708:6:92"},"nodeType":"YulFunctionCall","src":"2708:12:92"},"nodeType":"YulExpressionStatement","src":"2708:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2675:5:92"},{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2696:5:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2689:6:92"},"nodeType":"YulFunctionCall","src":"2689:13:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2682:6:92"},"nodeType":"YulFunctionCall","src":"2682:21:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"2672:2:92"},"nodeType":"YulFunctionCall","src":"2672:32:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2665:6:92"},"nodeType":"YulFunctionCall","src":"2665:40:92"},"nodeType":"YulIf","src":"2662:60:92"},{"nodeType":"YulAssignment","src":"2731:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"2741:5:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2731:6:92"}]}]},"name":"abi_decode_tuple_t_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2512:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2523:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2535:6:92","type":""}],"src":"2479:273:92"}]},"contents":"{\n { }\n function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n if iszero(eq(value, and(value, shl(224, 0xffffffff)))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function abi_decode_address(offset) -> value\n {\n value := calldataload(offset)\n if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n }\n function panic_error_0x41()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function abi_decode_tuple_t_addresst_addresst_bytes32t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n {\n if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := abi_decode_address(add(headStart, 32))\n value2 := calldataload(add(headStart, 64))\n let offset := calldataload(add(headStart, 96))\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n let _2 := add(headStart, offset)\n if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n let _3 := calldataload(_2)\n if gt(_3, _1) { panic_error_0x41() }\n let _4 := not(31)\n let memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n mstore(memPtr, _3)\n if gt(add(add(_2, _3), 32), dataEnd) { revert(0, 0) }\n calldatacopy(add(memPtr, 32), add(_2, 32), _3)\n mstore(add(add(memPtr, _3), 32), 0)\n value3 := memPtr\n }\n function abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 96)\n let pos := headStart\n pos := headStart\n let srcPtr := value0\n let i := 0\n for { } lt(i, 0x03) { i := add(i, 1) }\n {\n mstore(pos, and(mload(srcPtr), 0xff))\n let _1 := 0x20\n pos := add(pos, _1)\n srcPtr := add(srcPtr, _1)\n }\n }\n function abi_decode_tuple_t_bool(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n value0 := value\n }\n}","id":92,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100675760003560e01c80632ae9c600116100505780632ae9c600146100b057806385bb7d69146100c5578063f01b7dd2146100d257600080fd5b806301ffc9a71461006c5780632675fdd014610094575b600080fd5b61007f61007a36600461018e565b6100f5565b60405190151581526020015b60405180910390f35b61007f6100a23660046101fe565b60335460ff16949350505050565b6100b8610146565b60405161008b91906102da565b60335461007f9060ff1681565b6100f36100e036600461030e565b6033805460ff1916911515919091179055565b005b60006001600160e01b031982166302675fdd60e41b148061012557506001600160e01b03198216621574e360e91b145b8061014057506301ffc9a760e01b6001600160e01b03198316145b92915050565b61014e610170565b5060408051606081018252600181526004602082015260009181019190915290565b60405180606001604052806003906020820280368337509192915050565b6000602082840312156101a057600080fd5b81356001600160e01b0319811681146101b857600080fd5b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146101e357600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b6000806000806080858703121561021457600080fd5b61021d856101bf565b935061022b602086016101bf565b925060408501359150606085013567ffffffffffffffff8082111561024f57600080fd5b818701915087601f83011261026357600080fd5b813581811115610275576102756101e8565b604051601f8201601f19908116603f0116810190838211818310171561029d5761029d6101e8565b816040528281528a60208487010111156102b657600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b60608101818360005b600381101561030557815160ff168352602092830192909101906001016102e3565b50505092915050565b60006020828403121561032057600080fd5b813580151581146101b857600080fdfea164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x67 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x2AE9C600 GT PUSH2 0x50 JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0xB0 JUMPI DUP1 PUSH4 0x85BB7D69 EQ PUSH2 0xC5 JUMPI DUP1 PUSH4 0xF01B7DD2 EQ PUSH2 0xD2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x6C JUMPI DUP1 PUSH4 0x2675FDD0 EQ PUSH2 0x94 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7F PUSH2 0x7A CALLDATASIZE PUSH1 0x4 PUSH2 0x18E JUMP JUMPDEST PUSH2 0xF5 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x7F PUSH2 0xA2 CALLDATASIZE PUSH1 0x4 PUSH2 0x1FE JUMP JUMPDEST PUSH1 0x33 SLOAD PUSH1 0xFF AND SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0xB8 PUSH2 0x146 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x8B SWAP2 SWAP1 PUSH2 0x2DA JUMP JUMPDEST PUSH1 0x33 SLOAD PUSH2 0x7F SWAP1 PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0xF3 PUSH2 0xE0 CALLDATASIZE PUSH1 0x4 PUSH2 0x30E JUMP JUMPDEST PUSH1 0x33 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x2675FDD PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x125 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x140 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x14E PUSH2 0x170 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x1B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x1E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x214 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x21D DUP6 PUSH2 0x1BF JUMP JUMPDEST SWAP4 POP PUSH2 0x22B PUSH1 0x20 DUP7 ADD PUSH2 0x1BF JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x24F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x263 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x275 JUMPI PUSH2 0x275 PUSH2 0x1E8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x29D JUMPI PUSH2 0x29D PUSH2 0x1E8 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP11 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x2B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0x305 JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x2E3 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x320 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x1B8 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"335:427:47:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1011:301:71;;;;;;:::i;:::-;;:::i;:::-;;;470:14:92;;463:22;445:41;;433:2;418:18;1011:301:71;;;;;;;;525:235:47;;;;;;:::i;:::-;747:6;;;;525:235;;;;;;;631:98:90;;;:::i;:::-;;;;;;;:::i;419:18:47:-;;;;;;;;;444:75;;;;;;:::i;:::-;496:6;:16;;-1:-1:-1;;496:16:47;;;;;;;;;;444:75;;;1011:301:71;1097:4;-1:-1:-1;;;;;;1132:54:71;;-1:-1:-1;;;1132:54:71;;:120;;-1:-1:-1;;;;;;;1202:50:71;;-1:-1:-1;;;1202:50:71;1132:120;:173;;;-1:-1:-1;;;;;;;;;;1189:51:11;;;1268:37:71;1113:192;1011:301;-1:-1:-1;;1011:301:71:o;631:98:90:-;679:15;;:::i;:::-;-1:-1:-1;706:16:90;;;;;;;;714:1;706:16;;717:1;706:16;;;;-1:-1:-1;706:16:90;;;;;;;;631:98::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:286:92:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:92;;209:43;;199:71;;266:1;263;256:12;199:71;289:5;14:286;-1:-1:-1;;;14:286:92:o;497:196::-;565:20;;625:42;614:54;;604:65;;594:93;;683:1;680;673:12;594:93;497:196;;;:::o;698:127::-;759:10;754:3;750:20;747:1;740:31;790:4;787:1;780:15;814:4;811:1;804:15;830:1138;925:6;933;941;949;1002:3;990:9;981:7;977:23;973:33;970:53;;;1019:1;1016;1009:12;970:53;1042:29;1061:9;1042:29;:::i;:::-;1032:39;;1090:38;1124:2;1113:9;1109:18;1090:38;:::i;:::-;1080:48;;1175:2;1164:9;1160:18;1147:32;1137:42;;1230:2;1219:9;1215:18;1202:32;1253:18;1294:2;1286:6;1283:14;1280:34;;;1310:1;1307;1300:12;1280:34;1348:6;1337:9;1333:22;1323:32;;1393:7;1386:4;1382:2;1378:13;1374:27;1364:55;;1415:1;1412;1405:12;1364:55;1451:2;1438:16;1473:2;1469;1466:10;1463:36;;;1479:18;;:::i;:::-;1554:2;1548:9;1522:2;1608:13;;-1:-1:-1;;1604:22:92;;;1628:2;1600:31;1596:40;1584:53;;;1652:18;;;1672:22;;;1649:46;1646:72;;;1698:18;;:::i;:::-;1738:10;1734:2;1727:22;1773:2;1765:6;1758:18;1813:7;1808:2;1803;1799;1795:11;1791:20;1788:33;1785:53;;;1834:1;1831;1824:12;1785:53;1890:2;1885;1881;1877:11;1872:2;1864:6;1860:15;1847:46;1935:1;1930:2;1925;1917:6;1913:15;1909:24;1902:35;1956:6;1946:16;;;;;;;830:1138;;;;;;;:::o;1973:501::-;2149:2;2134:18;;2138:9;2229:6;2107:4;2263:205;2277:4;2274:1;2271:11;2263:205;;;2340:13;;2355:4;2336:24;2324:37;;2384:4;2408:12;;;;2443:15;;;;2297:1;2290:9;2263:205;;;2267:3;;;1973:501;;;;:::o;2479:273::-;2535:6;2588:2;2576:9;2567:7;2563:23;2559:32;2556:52;;;2604:1;2601;2594:12;2556:52;2643:9;2630:23;2696:5;2689:13;2682:21;2675:5;2672:32;2662:60;;2718:1;2715;2708:12"},"gasEstimates":{"creation":{"codeDepositCost":"165800","executionCost":"208","totalCost":"166008"},"external":{"answer()":"2321","isGranted(address,address,bytes32,bytes)":"infinite","protocolVersion()":"infinite","setAnswer(bool)":"24526","supportsInterface(bytes4)":"482"}},"methodIdentifiers":{"answer()":"85bb7d69","isGranted(address,address,bytes32,bytes)":"2675fdd0","protocolVersion()":"2ae9c600","setAnswer(bool)":"f01b7dd2","supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"answer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_who\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_permissionId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"isGranted\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"protocolVersion\",\"outputs\":[{\"internalType\":\"uint8[3]\",\"name\":\"\",\"type\":\"uint8[3]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"_answer\",\"type\":\"bool\"}],\"name\":\"setAnswer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"DO NOT USE IN PRODUCTION!\",\"kind\":\"dev\",\"methods\":{\"isGranted(address,address,bytes32,bytes)\":{\"params\":{\"_data\":\"Optional data passed to the `PermissionCondition` implementation.\",\"_permissionId\":\"The permission identifier.\",\"_where\":\"The address of the target contract.\",\"_who\":\"The address (EOA or contract) for which the permissions are checked.\"},\"returns\":{\"_0\":\"Returns true if the call is permitted.\"}},\"protocolVersion()\":{\"details\":\"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\",\"returns\":{\"_0\":\"Returns the semantic Aragon OSx protocol version number.\"}},\"supportsInterface(bytes4)\":{\"params\":{\"_interfaceId\":\"The ID of the interface.\"},\"returns\":{\"_0\":\"Returns `true` if the interface is supported.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"isGranted(address,address,bytes32,bytes)\":{\"notice\":\"Checks if a call is permitted.\"},\"protocolVersion()\":{\"notice\":\"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Checks if an interface is supported by this or its parent contract.\"}},\"notice\":\"A mock permission condition that can be set to permit or deny every call and be upgraded by everyone.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/mocks/permission/condition/PermissionConditionUpgradeableMock.sol\":\"PermissionConditionUpgradeableMock\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165Upgradeable.sol\\\";\\nimport {Initializable} from \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165Upgradeable is Initializable, IERC165Upgradeable {\\n function __ERC165_init() internal onlyInitializing {\\n }\\n\\n function __ERC165_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165Upgradeable).interfaceId;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0xd90d7723512df65ae417adaf0801042940f0dabd60039ceeaffe34aa5b238da1\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165Upgradeable {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\"},\"src/mocks/permission/condition/PermissionConditionUpgradeableMock.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {PermissionConditionUpgradeable} from \\\"../../../permission/condition/PermissionConditionUpgradeable.sol\\\";\\n\\n/// @notice A mock permission condition that can be set to permit or deny every call and be upgraded by everyone.\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PermissionConditionUpgradeableMock is PermissionConditionUpgradeable {\\n bool public answer;\\n\\n function setAnswer(bool _answer) external {\\n answer = _answer;\\n }\\n\\n function isGranted(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes memory _data\\n ) external view returns (bool) {\\n (_where, _who, _permissionId, _data);\\n return answer;\\n }\\n}\\n\",\"keccak256\":\"0x3bae6e018864efee68050c29aea4770c492a5351db93aee7601680067a754cf0\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/condition/IPermissionCondition.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IPermissionCondition\\n/// @author Aragon X - 2021-2023\\n/// @notice An interface to be implemented to support custom permission logic.\\n/// @dev To attach a condition to a permission, the `grantWithCondition` function must be used and refer to the implementing contract's address with the `condition` argument.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IPermissionCondition {\\n /// @notice Checks if a call is permitted.\\n /// @param _where The address of the target contract.\\n /// @param _who The address (EOA or contract) for which the permissions are checked.\\n /// @param _permissionId The permission identifier.\\n /// @param _data Optional data passed to the `PermissionCondition` implementation.\\n /// @return isPermitted Returns true if the call is permitted.\\n function isGranted(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes calldata _data\\n ) external view returns (bool isPermitted);\\n}\\n\",\"keccak256\":\"0xc3280622bdb57856f0b20ded71537fc99b344d1e6a0430abfaca8304a9ece922\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/condition/PermissionConditionUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ERC165Upgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\\\";\\n\\nimport {IProtocolVersion} from \\\"../../utils/versioning/IProtocolVersion.sol\\\";\\nimport {ProtocolVersion} from \\\"../../utils/versioning/ProtocolVersion.sol\\\";\\nimport {IPermissionCondition} from \\\"./IPermissionCondition.sol\\\";\\n\\n/// @title PermissionConditionUpgradeable\\n/// @author Aragon X - 2023\\n/// @notice An abstract contract for upgradeable or cloneable contracts to inherit from and to support customary permissions depending on arbitrary on-chain state.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract PermissionConditionUpgradeable is\\n ERC165Upgradeable,\\n IPermissionCondition,\\n ProtocolVersion\\n{\\n /// @notice Checks if an interface is supported by this or its parent contract.\\n /// @param _interfaceId The ID of the interface.\\n /// @return Returns `true` if the interface is supported.\\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\\n return\\n _interfaceId == type(IPermissionCondition).interfaceId ||\\n _interfaceId == type(IProtocolVersion).interfaceId ||\\n super.supportsInterface(_interfaceId);\\n }\\n}\\n\",\"keccak256\":\"0x0d4eb8813760958455448f862015209d01904cc2a4fa15ccb5c85ca13548e275\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/IProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IProtocolVersion\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the semantic Aragon OSx protocol version number.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IProtocolVersion {\\n /// @notice Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\\n /// @return _version Returns the semantic Aragon OSx protocol version number.\\n /// @dev This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\\n function protocolVersion() external view returns (uint8[3] memory _version);\\n}\\n\",\"keccak256\":\"0x00a4da654d21dc1bdadbdc8bd54bb86c378c56f85e461ccc31303628ea621361\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/ProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IProtocolVersion} from \\\"./IProtocolVersion.sol\\\";\\n\\n/// @title ProtocolVersion\\n/// @author Aragon X - 2023\\n/// @notice An abstract, stateless, non-upgradeable contract providing the current Aragon OSx protocol version number.\\n/// @dev Do not add any new variables to this contract that would shift down storage in the inheritance chain.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract ProtocolVersion is IProtocolVersion {\\n // IMPORTANT: Do not add any storage variable, see the above notice.\\n\\n /// @inheritdoc IProtocolVersion\\n function protocolVersion() public pure returns (uint8[3] memory) {\\n return [1, 4, 0];\\n }\\n}\\n\",\"keccak256\":\"0x3975c937be935f687c6b6b8f379071232681e98cf04b175d72781b819ea52bdb\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[{"astId":372,"contract":"src/mocks/permission/condition/PermissionConditionUpgradeableMock.sol:PermissionConditionUpgradeableMock","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":375,"contract":"src/mocks/permission/condition/PermissionConditionUpgradeableMock.sol:PermissionConditionUpgradeableMock","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":2821,"contract":"src/mocks/permission/condition/PermissionConditionUpgradeableMock.sol:PermissionConditionUpgradeableMock","label":"__gap","offset":0,"slot":"1","type":"t_array(t_uint256)50_storage"},{"astId":11157,"contract":"src/mocks/permission/condition/PermissionConditionUpgradeableMock.sol:PermissionConditionUpgradeableMock","label":"answer","offset":0,"slot":"51","type":"t_bool"}],"types":{"t_array(t_uint256)50_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[50]","numberOfBytes":"1600"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"kind":"user","methods":{"isGranted(address,address,bytes32,bytes)":{"notice":"Checks if a call is permitted."},"protocolVersion()":{"notice":"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with."},"supportsInterface(bytes4)":{"notice":"Checks if an interface is supported by this or its parent contract."}},"notice":"A mock permission condition that can be set to permit or deny every call and be upgraded by everyone.","version":1}}},"src/mocks/plugin/PluginCloneableMock.sol":{"PluginCloneableMockBad":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"inputs":[],"name":"dao","outputs":[{"internalType":"contract IDAO","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IDAO","name":"_dao","type":"address"}],"name":"notAnInitializer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pluginType","outputs":[{"internalType":"enum IPlugin.PluginType","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"protocolVersion","outputs":[{"internalType":"uint8[3]","name":"","type":"uint8[3]"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"state1","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"DO NOT USE IN PRODUCTION!","kind":"dev","methods":{"dao()":{"returns":{"_0":"The DAO contract."}},"protocolVersion()":{"details":"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.","returns":{"_0":"Returns the semantic Aragon OSx protocol version number."}},"supportsInterface(bytes4)":{"params":{"_interfaceId":"The ID of the interface."},"returns":{"_0":"Returns `true` if the interface is supported."}}},"version":1},"evm":{"bytecode":{"functionDebugData":{"@_13445":{"entryPoint":null,"id":13445,"parameterSlots":0,"returnSlots":0},"@_disableInitializers_515":{"entryPoint":30,"id":515,"parameterSlots":0,"returnSlots":0},"abi_encode_tuple_t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:608:92","statements":[{"nodeType":"YulBlock","src":"6:3:92","statements":[]},{"body":{"nodeType":"YulBlock","src":"188:229:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"205:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"216:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"198:6:92"},"nodeType":"YulFunctionCall","src":"198:21:92"},"nodeType":"YulExpressionStatement","src":"198:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"239:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"250:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"235:3:92"},"nodeType":"YulFunctionCall","src":"235:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"255:2:92","type":"","value":"39"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"228:6:92"},"nodeType":"YulFunctionCall","src":"228:30:92"},"nodeType":"YulExpressionStatement","src":"228:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"278:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"289:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"274:3:92"},"nodeType":"YulFunctionCall","src":"274:18:92"},{"hexValue":"496e697469616c697a61626c653a20636f6e747261637420697320696e697469","kind":"string","nodeType":"YulLiteral","src":"294:34:92","type":"","value":"Initializable: contract is initi"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"267:6:92"},"nodeType":"YulFunctionCall","src":"267:62:92"},"nodeType":"YulExpressionStatement","src":"267:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"349:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"360:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"345:3:92"},"nodeType":"YulFunctionCall","src":"345:18:92"},{"hexValue":"616c697a696e67","kind":"string","nodeType":"YulLiteral","src":"365:9:92","type":"","value":"alizing"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"338:6:92"},"nodeType":"YulFunctionCall","src":"338:37:92"},"nodeType":"YulExpressionStatement","src":"338:37:92"},{"nodeType":"YulAssignment","src":"384:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"396:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"407:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"392:3:92"},"nodeType":"YulFunctionCall","src":"392:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"384:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"165:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"179:4:92","type":""}],"src":"14:403:92"},{"body":{"nodeType":"YulBlock","src":"519:87:92","statements":[{"nodeType":"YulAssignment","src":"529:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"541:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"552:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"537:3:92"},"nodeType":"YulFunctionCall","src":"537:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"529:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"571:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"586:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"594:4:92","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"582:3:92"},"nodeType":"YulFunctionCall","src":"582:17:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"564:6:92"},"nodeType":"YulFunctionCall","src":"564:36:92"},"nodeType":"YulExpressionStatement","src":"564:36:92"}]},"name":"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"488:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"499:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"510:4:92","type":""}],"src":"422:184:92"}]},"contents":"{\n { }\n function abi_encode_tuple_t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 39)\n mstore(add(headStart, 64), \"Initializable: contract is initi\")\n mstore(add(headStart, 96), \"alizing\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xff))\n }\n}","id":92,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"608060405234801561001057600080fd5b5061001961001e565b6100dd565b600054610100900460ff161561008a5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116146100db576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6103bf806100ec6000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c806341de68301161005057806341de6830146100dc5780636accab8c146100eb5780638883bbd71461010257600080fd5b806301ffc9a7146100775780632ae9c6001461009f5780634162169f146100b4575b600080fd5b61008a6100853660046102ef565b610117565b60405190151581526020015b60405180910390f35b6100a7610168565b6040516100969190610320565b60655460405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610096565b60016040516100969190610354565b6100f460975481565b604051908152602001610096565b61011561011036600461037c565b610192565b005b60006001600160e01b0319821663041de68360e41b148061014757506001600160e01b03198216621574e360e91b145b8061016257506301ffc9a760e01b6001600160e01b03198316145b92915050565b6101706102d1565b5060408051606081018252600181526004602082015260009181019190915290565b61019b816101a3565b506001609755565b600054610100900460ff166102135760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084015b60405180910390fd5b61021c8161021f565b50565b600054610100900460ff1661028a5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840161020a565b606580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60405180606001604052806003906020820280368337509192915050565b60006020828403121561030157600080fd5b81356001600160e01b03198116811461031957600080fd5b9392505050565b60608101818360005b600381101561034b57815160ff16835260209283019290910190600101610329565b50505092915050565b602081016003831061037657634e487b7160e01b600052602160045260246000fd5b91905290565b60006020828403121561038e57600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461031957600080fdfea164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x19 PUSH2 0x1E JUMP JUMPDEST PUSH2 0xDD JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x8A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x27 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320696E697469 PUSH1 0x44 DUP3 ADD MSTORE PUSH7 0x616C697A696E67 PUSH1 0xC8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xFF SWAP1 DUP2 AND EQ PUSH2 0xDB JUMPI PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST JUMP JUMPDEST PUSH2 0x3BF DUP1 PUSH2 0xEC PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x72 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x41DE6830 GT PUSH2 0x50 JUMPI DUP1 PUSH4 0x41DE6830 EQ PUSH2 0xDC JUMPI DUP1 PUSH4 0x6ACCAB8C EQ PUSH2 0xEB JUMPI DUP1 PUSH4 0x8883BBD7 EQ PUSH2 0x102 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x77 JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0x9F JUMPI DUP1 PUSH4 0x4162169F EQ PUSH2 0xB4 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8A PUSH2 0x85 CALLDATASIZE PUSH1 0x4 PUSH2 0x2EF JUMP JUMPDEST PUSH2 0x117 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xA7 PUSH2 0x168 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x96 SWAP2 SWAP1 PUSH2 0x320 JUMP JUMPDEST PUSH1 0x65 SLOAD PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x96 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x40 MLOAD PUSH2 0x96 SWAP2 SWAP1 PUSH2 0x354 JUMP JUMPDEST PUSH2 0xF4 PUSH1 0x97 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x96 JUMP JUMPDEST PUSH2 0x115 PUSH2 0x110 CALLDATASIZE PUSH1 0x4 PUSH2 0x37C JUMP JUMPDEST PUSH2 0x192 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x41DE683 PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x147 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x162 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x170 PUSH2 0x2D1 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH2 0x19B DUP2 PUSH2 0x1A3 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x97 SSTORE JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x213 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x21C DUP2 PUSH2 0x21F JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x28A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x20A JUMP JUMPDEST PUSH1 0x65 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x301 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x319 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0x34B JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x329 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH1 0x3 DUP4 LT PUSH2 0x376 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 SWAP1 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x38E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x319 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"1087:198:48:-:0;;;;;;;;;;;;-1:-1:-1;1131:22:74;:20;:22::i;:::-;1087:198:48;;5939:280:4;6007:13;;;;;;;6006:14;5998:66;;;;-1:-1:-1;;;5998:66:4;;216:2:92;5998:66:4;;;198:21:92;255:2;235:18;;;228:30;294:34;274:18;;;267:62;-1:-1:-1;;;345:18:92;;;338:37;392:19;;5998:66:4;;;;;;;;6078:12;;6094:15;6078:12;;;:31;6074:139;;6125:12;:30;;-1:-1:-1;;6125:30:4;6140:15;6125:30;;;;;;6174:28;;564:36:92;;;6174:28:4;;552:2:92;537:18;6174:28:4;;;;;;;6074:139;5939:280::o;422:184:92:-;1087:198:48;;;;;;"},"deployedBytecode":{"functionDebugData":{"@__DaoAuthorizableUpgradeable_init_13125":{"entryPoint":543,"id":13125,"parameterSlots":1,"returnSlots":0},"@__PluginCloneable_init_13459":{"entryPoint":419,"id":13459,"parameterSlots":1,"returnSlots":0},"@dao_13135":{"entryPoint":null,"id":13135,"parameterSlots":0,"returnSlots":1},"@notAnInitializer_11268":{"entryPoint":402,"id":11268,"parameterSlots":1,"returnSlots":0},"@pluginType_13471":{"entryPoint":null,"id":13471,"parameterSlots":0,"returnSlots":1},"@protocolVersion_14765":{"entryPoint":360,"id":14765,"parameterSlots":0,"returnSlots":1},"@state1_11253":{"entryPoint":null,"id":11253,"parameterSlots":0,"returnSlots":0},"@supportsInterface_13500":{"entryPoint":279,"id":13500,"parameterSlots":1,"returnSlots":1},"@supportsInterface_2816":{"entryPoint":null,"id":2816,"parameterSlots":1,"returnSlots":1},"abi_decode_tuple_t_bytes4":{"entryPoint":751,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_contract$_IDAO_$10865":{"entryPoint":892,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed":{"entryPoint":800,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_contract$_IDAO_$10865__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_enum$_PluginType_$13330__to_t_uint8__fromStack_reversed":{"entryPoint":852,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:2516:92","statements":[{"nodeType":"YulBlock","src":"6:3:92","statements":[]},{"body":{"nodeType":"YulBlock","src":"83:217:92","statements":[{"body":{"nodeType":"YulBlock","src":"129:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"138:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"141:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"131:6:92"},"nodeType":"YulFunctionCall","src":"131:12:92"},"nodeType":"YulExpressionStatement","src":"131:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"104:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"113:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"100:3:92"},"nodeType":"YulFunctionCall","src":"100:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"125:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"96:3:92"},"nodeType":"YulFunctionCall","src":"96:32:92"},"nodeType":"YulIf","src":"93:52:92"},{"nodeType":"YulVariableDeclaration","src":"154:36:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"180:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"167:12:92"},"nodeType":"YulFunctionCall","src":"167:23:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"158:5:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"254:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"263:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"266:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"256:6:92"},"nodeType":"YulFunctionCall","src":"256:12:92"},"nodeType":"YulExpressionStatement","src":"256:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"212:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"223:5:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"234:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"239:10:92","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"230:3:92"},"nodeType":"YulFunctionCall","src":"230:20:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"219:3:92"},"nodeType":"YulFunctionCall","src":"219:32:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"209:2:92"},"nodeType":"YulFunctionCall","src":"209:43:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"202:6:92"},"nodeType":"YulFunctionCall","src":"202:51:92"},"nodeType":"YulIf","src":"199:71:92"},{"nodeType":"YulAssignment","src":"279:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"289:5:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"279:6:92"}]}]},"name":"abi_decode_tuple_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"49:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"60:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"72:6:92","type":""}],"src":"14:286:92"},{"body":{"nodeType":"YulBlock","src":"400:92:92","statements":[{"nodeType":"YulAssignment","src":"410:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"422:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"433:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"418:3:92"},"nodeType":"YulFunctionCall","src":"418:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"410:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"452:9:92"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"477:6:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"470:6:92"},"nodeType":"YulFunctionCall","src":"470:14:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"463:6:92"},"nodeType":"YulFunctionCall","src":"463:22:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"445:6:92"},"nodeType":"YulFunctionCall","src":"445:41:92"},"nodeType":"YulExpressionStatement","src":"445:41:92"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"369:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"380:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"391:4:92","type":""}],"src":"305:187:92"},{"body":{"nodeType":"YulBlock","src":"640:358:92","statements":[{"nodeType":"YulAssignment","src":"650:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"662:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"673:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"658:3:92"},"nodeType":"YulFunctionCall","src":"658:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"650:4:92"}]},{"nodeType":"YulVariableDeclaration","src":"685:20:92","value":{"name":"headStart","nodeType":"YulIdentifier","src":"696:9:92"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"689:3:92","type":""}]},{"nodeType":"YulAssignment","src":"714:16:92","value":{"name":"headStart","nodeType":"YulIdentifier","src":"721:9:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"714:3:92"}]},{"nodeType":"YulVariableDeclaration","src":"739:20:92","value":{"name":"value0","nodeType":"YulIdentifier","src":"753:6:92"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"743:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"768:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"777:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"772:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"834:158:92","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"855:3:92"},{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"870:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"864:5:92"},"nodeType":"YulFunctionCall","src":"864:13:92"},{"kind":"number","nodeType":"YulLiteral","src":"879:4:92","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"860:3:92"},"nodeType":"YulFunctionCall","src":"860:24:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"848:6:92"},"nodeType":"YulFunctionCall","src":"848:37:92"},"nodeType":"YulExpressionStatement","src":"848:37:92"},{"nodeType":"YulVariableDeclaration","src":"898:14:92","value":{"kind":"number","nodeType":"YulLiteral","src":"908:4:92","type":"","value":"0x20"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"902:2:92","type":""}]},{"nodeType":"YulAssignment","src":"925:19:92","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"936:3:92"},{"name":"_1","nodeType":"YulIdentifier","src":"941:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"932:3:92"},"nodeType":"YulFunctionCall","src":"932:12:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"925:3:92"}]},{"nodeType":"YulAssignment","src":"957:25:92","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"971:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"979:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"967:3:92"},"nodeType":"YulFunctionCall","src":"967:15:92"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"957:6:92"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"798:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"801:4:92","type":"","value":"0x03"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"795:2:92"},"nodeType":"YulFunctionCall","src":"795:11:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"807:18:92","statements":[{"nodeType":"YulAssignment","src":"809:14:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"818:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"821:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"814:3:92"},"nodeType":"YulFunctionCall","src":"814:9:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"809:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"791:3:92","statements":[]},"src":"787:205:92"}]},"name":"abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"609:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"620:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"631:4:92","type":""}],"src":"497:501:92"},{"body":{"nodeType":"YulBlock","src":"1118:125:92","statements":[{"nodeType":"YulAssignment","src":"1128:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1140:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1151:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1136:3:92"},"nodeType":"YulFunctionCall","src":"1136:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1128:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1170:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1185:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"1193:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1181:3:92"},"nodeType":"YulFunctionCall","src":"1181:55:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1163:6:92"},"nodeType":"YulFunctionCall","src":"1163:74:92"},"nodeType":"YulExpressionStatement","src":"1163:74:92"}]},"name":"abi_encode_tuple_t_contract$_IDAO_$10865__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1087:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1098:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1109:4:92","type":""}],"src":"1003:240:92"},{"body":{"nodeType":"YulBlock","src":"1363:229:92","statements":[{"nodeType":"YulAssignment","src":"1373:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1385:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1396:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1381:3:92"},"nodeType":"YulFunctionCall","src":"1381:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1373:4:92"}]},{"body":{"nodeType":"YulBlock","src":"1441:111:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1462:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1469:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"1474:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1465:3:92"},"nodeType":"YulFunctionCall","src":"1465:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1455:6:92"},"nodeType":"YulFunctionCall","src":"1455:31:92"},"nodeType":"YulExpressionStatement","src":"1455:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1506:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"1509:4:92","type":"","value":"0x21"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1499:6:92"},"nodeType":"YulFunctionCall","src":"1499:15:92"},"nodeType":"YulExpressionStatement","src":"1499:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1534:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1537:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1527:6:92"},"nodeType":"YulFunctionCall","src":"1527:15:92"},"nodeType":"YulExpressionStatement","src":"1527:15:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1421:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"1429:1:92","type":"","value":"3"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"1418:2:92"},"nodeType":"YulFunctionCall","src":"1418:13:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1411:6:92"},"nodeType":"YulFunctionCall","src":"1411:21:92"},"nodeType":"YulIf","src":"1408:144:92"},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1568:9:92"},{"name":"value0","nodeType":"YulIdentifier","src":"1579:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1561:6:92"},"nodeType":"YulFunctionCall","src":"1561:25:92"},"nodeType":"YulExpressionStatement","src":"1561:25:92"}]},"name":"abi_encode_tuple_t_enum$_PluginType_$13330__to_t_uint8__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1332:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1343:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1354:4:92","type":""}],"src":"1248:344:92"},{"body":{"nodeType":"YulBlock","src":"1698:76:92","statements":[{"nodeType":"YulAssignment","src":"1708:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1720:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1731:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1716:3:92"},"nodeType":"YulFunctionCall","src":"1716:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1708:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1750:9:92"},{"name":"value0","nodeType":"YulIdentifier","src":"1761:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1743:6:92"},"nodeType":"YulFunctionCall","src":"1743:25:92"},"nodeType":"YulExpressionStatement","src":"1743:25:92"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1667:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1678:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1689:4:92","type":""}],"src":"1597:177:92"},{"body":{"nodeType":"YulBlock","src":"1863:239:92","statements":[{"body":{"nodeType":"YulBlock","src":"1909:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1918:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1921:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1911:6:92"},"nodeType":"YulFunctionCall","src":"1911:12:92"},"nodeType":"YulExpressionStatement","src":"1911:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1884:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"1893:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1880:3:92"},"nodeType":"YulFunctionCall","src":"1880:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"1905:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1876:3:92"},"nodeType":"YulFunctionCall","src":"1876:32:92"},"nodeType":"YulIf","src":"1873:52:92"},{"nodeType":"YulVariableDeclaration","src":"1934:36:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1960:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1947:12:92"},"nodeType":"YulFunctionCall","src":"1947:23:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"1938:5:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"2056:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2065:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2068:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2058:6:92"},"nodeType":"YulFunctionCall","src":"2058:12:92"},"nodeType":"YulExpressionStatement","src":"2058:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1992:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2003:5:92"},{"kind":"number","nodeType":"YulLiteral","src":"2010:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1999:3:92"},"nodeType":"YulFunctionCall","src":"1999:54:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1989:2:92"},"nodeType":"YulFunctionCall","src":"1989:65:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1982:6:92"},"nodeType":"YulFunctionCall","src":"1982:73:92"},"nodeType":"YulIf","src":"1979:93:92"},{"nodeType":"YulAssignment","src":"2081:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"2091:5:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2081:6:92"}]}]},"name":"abi_decode_tuple_t_contract$_IDAO_$10865","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1829:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1840:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1852:6:92","type":""}],"src":"1779:323:92"},{"body":{"nodeType":"YulBlock","src":"2281:233:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2298:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2309:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2291:6:92"},"nodeType":"YulFunctionCall","src":"2291:21:92"},"nodeType":"YulExpressionStatement","src":"2291:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2332:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2343:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2328:3:92"},"nodeType":"YulFunctionCall","src":"2328:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"2348:2:92","type":"","value":"43"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2321:6:92"},"nodeType":"YulFunctionCall","src":"2321:30:92"},"nodeType":"YulExpressionStatement","src":"2321:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2371:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2382:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2367:3:92"},"nodeType":"YulFunctionCall","src":"2367:18:92"},{"hexValue":"496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069","kind":"string","nodeType":"YulLiteral","src":"2387:34:92","type":"","value":"Initializable: contract is not i"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2360:6:92"},"nodeType":"YulFunctionCall","src":"2360:62:92"},"nodeType":"YulExpressionStatement","src":"2360:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2442:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2453:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2438:3:92"},"nodeType":"YulFunctionCall","src":"2438:18:92"},{"hexValue":"6e697469616c697a696e67","kind":"string","nodeType":"YulLiteral","src":"2458:13:92","type":"","value":"nitializing"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2431:6:92"},"nodeType":"YulFunctionCall","src":"2431:41:92"},"nodeType":"YulExpressionStatement","src":"2431:41:92"},{"nodeType":"YulAssignment","src":"2481:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2493:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2504:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2489:3:92"},"nodeType":"YulFunctionCall","src":"2489:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2481:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2258:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2272:4:92","type":""}],"src":"2107:407:92"}]},"contents":"{\n { }\n function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n if iszero(eq(value, and(value, shl(224, 0xffffffff)))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 96)\n let pos := headStart\n pos := headStart\n let srcPtr := value0\n let i := 0\n for { } lt(i, 0x03) { i := add(i, 1) }\n {\n mstore(pos, and(mload(srcPtr), 0xff))\n let _1 := 0x20\n pos := add(pos, _1)\n srcPtr := add(srcPtr, _1)\n }\n }\n function abi_encode_tuple_t_contract$_IDAO_$10865__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_encode_tuple_t_enum$_PluginType_$13330__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n if iszero(lt(value0, 3))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x21)\n revert(0, 0x24)\n }\n mstore(headStart, value0)\n }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_decode_tuple_t_contract$_IDAO_$10865(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 43)\n mstore(add(headStart, 64), \"Initializable: contract is not i\")\n mstore(add(headStart, 96), \"nitializing\")\n tail := add(headStart, 128)\n }\n}","id":92,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100725760003560e01c806341de68301161005057806341de6830146100dc5780636accab8c146100eb5780638883bbd71461010257600080fd5b806301ffc9a7146100775780632ae9c6001461009f5780634162169f146100b4575b600080fd5b61008a6100853660046102ef565b610117565b60405190151581526020015b60405180910390f35b6100a7610168565b6040516100969190610320565b60655460405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610096565b60016040516100969190610354565b6100f460975481565b604051908152602001610096565b61011561011036600461037c565b610192565b005b60006001600160e01b0319821663041de68360e41b148061014757506001600160e01b03198216621574e360e91b145b8061016257506301ffc9a760e01b6001600160e01b03198316145b92915050565b6101706102d1565b5060408051606081018252600181526004602082015260009181019190915290565b61019b816101a3565b506001609755565b600054610100900460ff166102135760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084015b60405180910390fd5b61021c8161021f565b50565b600054610100900460ff1661028a5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840161020a565b606580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60405180606001604052806003906020820280368337509192915050565b60006020828403121561030157600080fd5b81356001600160e01b03198116811461031957600080fd5b9392505050565b60608101818360005b600381101561034b57815160ff16835260209283019290910190600101610329565b50505092915050565b602081016003831061037657634e487b7160e01b600052602160045260246000fd5b91905290565b60006020828403121561038e57600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461031957600080fdfea164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x72 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x41DE6830 GT PUSH2 0x50 JUMPI DUP1 PUSH4 0x41DE6830 EQ PUSH2 0xDC JUMPI DUP1 PUSH4 0x6ACCAB8C EQ PUSH2 0xEB JUMPI DUP1 PUSH4 0x8883BBD7 EQ PUSH2 0x102 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x77 JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0x9F JUMPI DUP1 PUSH4 0x4162169F EQ PUSH2 0xB4 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8A PUSH2 0x85 CALLDATASIZE PUSH1 0x4 PUSH2 0x2EF JUMP JUMPDEST PUSH2 0x117 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xA7 PUSH2 0x168 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x96 SWAP2 SWAP1 PUSH2 0x320 JUMP JUMPDEST PUSH1 0x65 SLOAD PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x96 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x40 MLOAD PUSH2 0x96 SWAP2 SWAP1 PUSH2 0x354 JUMP JUMPDEST PUSH2 0xF4 PUSH1 0x97 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x96 JUMP JUMPDEST PUSH2 0x115 PUSH2 0x110 CALLDATASIZE PUSH1 0x4 PUSH2 0x37C JUMP JUMPDEST PUSH2 0x192 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x41DE683 PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x147 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x162 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x170 PUSH2 0x2D1 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH2 0x19B DUP2 PUSH2 0x1A3 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x97 SSTORE JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x213 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x21C DUP2 PUSH2 0x21F JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x28A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x20A JUMP JUMPDEST PUSH1 0x65 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x301 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x319 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0x34B JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x329 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH1 0x3 DUP4 LT PUSH2 0x376 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 SWAP1 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x38E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x319 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"1087:198:48:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1810:288:74;;;;;;:::i;:::-;;:::i;:::-;;;470:14:92;;463:22;445:41;;433:2;418:18;1810:288:74;;;;;;;;631:98:90;;;:::i;:::-;;;;;;;:::i;1200:70:67:-;1259:4;;1200:70;;1259:4;;;;1163:74:92;;1151:2;1136:18;1200:70:67;1003:240:92;1494:108:74;1575:20;1494:108;;;;;;:::i;1144:21:48:-;;;;;;;;;1743:25:92;;;1731:2;1716:18;1144:21:48;1597:177:92;1172:111:48;;;;;;:::i;:::-;;:::i;:::-;;1810:288:74;1896:4;-1:-1:-1;;;;;;1931:41:74;;-1:-1:-1;;;1931:41:74;;:107;;-1:-1:-1;;;;;;;1988:50:74;;-1:-1:-1;;;1988:50:74;1931:107;:160;;;-1:-1:-1;;;;;;;;;;1189:51:11;;;2054:37:74;1912:179;1810:288;-1:-1:-1;;1810:288:74:o;631:98:90:-;679:15;;:::i;:::-;-1:-1:-1;706:16:90;;;;;;;;714:1;706:16;;717:1;706:16;;;;-1:-1:-1;706:16:90;;;;;;;;631:98::o;1172:111:48:-;1228:28;1251:4;1228:22;:28::i;:::-;-1:-1:-1;1275:1:48;1266:6;:10;1172:111::o;1327:133:74:-;5374:13:4;;;;;;;5366:69;;;;-1:-1:-1;;;5366:69:4;;2309:2:92;5366:69:4;;;2291:21:92;2348:2;2328:18;;;2321:30;2387:34;2367:18;;;2360:62;-1:-1:-1;;;2438:18:92;;;2431:41;2489:19;;5366:69:4;;;;;;;;;1414:39:74::1;1448:4;1414:33;:39::i;:::-;1327:133:::0;:::o;1010:108:67:-;5374:13:4;;;;;;;5366:69;;;;-1:-1:-1;;;5366:69:4;;2309:2:92;5366:69:4;;;2291:21:92;2348:2;2328:18;;;2321:30;2387:34;2367:18;;;2360:62;-1:-1:-1;;;2438:18:92;;;2431:41;2489:19;;5366:69:4;2107:407:92;5366:69:4;1100:4:67::1;:11:::0;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;1010:108::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:286:92:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:92;;209:43;;199:71;;266:1;263;256:12;199:71;289:5;14:286;-1:-1:-1;;;14:286:92:o;497:501::-;673:2;658:18;;662:9;753:6;631:4;787:205;801:4;798:1;795:11;787:205;;;864:13;;879:4;860:24;848:37;;908:4;932:12;;;;967:15;;;;821:1;814:9;787:205;;;791:3;;;497:501;;;;:::o;1248:344::-;1396:2;1381:18;;1429:1;1418:13;;1408:144;;1474:10;1469:3;1465:20;1462:1;1455:31;1509:4;1506:1;1499:15;1537:4;1534:1;1527:15;1408:144;1561:25;;;1248:344;:::o;1779:323::-;1852:6;1905:2;1893:9;1884:7;1880:23;1876:32;1873:52;;;1921:1;1918;1911:12;1873:52;1960:9;1947:23;2010:42;2003:5;1999:54;1992:5;1989:65;1979:93;;2068:1;2065;2058:12"},"gasEstimates":{"creation":{"codeDepositCost":"191800","executionCost":"29821","totalCost":"221621"},"external":{"dao()":"2334","notAnInitializer(address)":"50973","pluginType()":"227","protocolVersion()":"infinite","state1()":"2317","supportsInterface(bytes4)":"482"}},"methodIdentifiers":{"dao()":"4162169f","notAnInitializer(address)":"8883bbd7","pluginType()":"41de6830","protocolVersion()":"2ae9c600","state1()":"6accab8c","supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"dao\",\"outputs\":[{\"internalType\":\"contract IDAO\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IDAO\",\"name\":\"_dao\",\"type\":\"address\"}],\"name\":\"notAnInitializer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pluginType\",\"outputs\":[{\"internalType\":\"enum IPlugin.PluginType\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"protocolVersion\",\"outputs\":[{\"internalType\":\"uint8[3]\",\"name\":\"\",\"type\":\"uint8[3]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"state1\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"DO NOT USE IN PRODUCTION!\",\"kind\":\"dev\",\"methods\":{\"dao()\":{\"returns\":{\"_0\":\"The DAO contract.\"}},\"protocolVersion()\":{\"details\":\"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\",\"returns\":{\"_0\":\"Returns the semantic Aragon OSx protocol version number.\"}},\"supportsInterface(bytes4)\":{\"params\":{\"_interfaceId\":\"The ID of the interface.\"},\"returns\":{\"_0\":\"Returns `true` if the interface is supported.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"dao()\":{\"notice\":\"Returns the DAO contract.\"},\"pluginType()\":{\"notice\":\"Returns the plugin's type\"},\"protocolVersion()\":{\"notice\":\"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Checks if this or the parent contract supports an interface by its ID.\"}},\"notice\":\"A mock cloneable plugin missing an initializer function.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/mocks/plugin/PluginCloneableMock.sol\":\"PluginCloneableMockBad\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n function __Context_init() internal onlyInitializing {\\n }\\n\\n function __Context_init_unchained() internal onlyInitializing {\\n }\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n function _contextSuffixLength() internal view virtual returns (uint256) {\\n return 0;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x75097e35253e7fb282ee4d7f27a80eaacfa759923185bf17302a89cbc059c5ef\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165Upgradeable.sol\\\";\\nimport {Initializable} from \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165Upgradeable is Initializable, IERC165Upgradeable {\\n function __ERC165_init() internal onlyInitializing {\\n }\\n\\n function __ERC165_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165Upgradeable).interfaceId;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0xd90d7723512df65ae417adaf0801042940f0dabd60039ceeaffe34aa5b238da1\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165Upgradeable {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\"},\"src/dao/IDAO.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IDAO\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for DAOs within the Aragon App DAO framework.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IDAO {\\n /// @notice The action struct to be consumed by the DAO's `execute` function resulting in an external call.\\n /// @param to The address to call.\\n /// @param value The native token value to be sent with the call.\\n /// @param data The bytes-encoded function selector and calldata for the call.\\n struct Action {\\n address to;\\n uint256 value;\\n bytes data;\\n }\\n\\n /// @notice Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\\n /// @param _where The address of the contract.\\n /// @param _who The address of a EOA or contract to give the permissions.\\n /// @param _permissionId The permission identifier.\\n /// @param _data The optional data passed to the `PermissionCondition` registered.\\n /// @return Returns true if the address has permission, false if not.\\n function hasPermission(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes memory _data\\n ) external view returns (bool);\\n\\n /// @notice Updates the DAO metadata (e.g., an IPFS hash).\\n /// @param _metadata The IPFS hash of the new metadata object.\\n function setMetadata(bytes calldata _metadata) external;\\n\\n /// @notice Emitted when the DAO metadata is updated.\\n /// @param metadata The IPFS hash of the new metadata object.\\n event MetadataSet(bytes metadata);\\n\\n /// @notice Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted.\\n /// @param _callId The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce.\\n /// @param _actions The array of actions.\\n /// @param _allowFailureMap A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @return The array of results obtained from the executed actions in `bytes`.\\n /// @return The resulting failure map containing the actions have actually failed.\\n function execute(\\n bytes32 _callId,\\n Action[] memory _actions,\\n uint256 _allowFailureMap\\n ) external returns (bytes[] memory, uint256);\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param actor The address of the caller.\\n /// @param callId The ID of the call.\\n /// @param actions The array of actions executed.\\n /// @param allowFailureMap The allow failure map encoding which actions are allowed to fail.\\n /// @param failureMap The failure map encoding which actions have failed.\\n /// @param execResults The array with the results of the executed actions.\\n /// @dev The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce.\\n event Executed(\\n address indexed actor,\\n bytes32 callId,\\n Action[] actions,\\n uint256 allowFailureMap,\\n uint256 failureMap,\\n bytes[] execResults\\n );\\n\\n /// @notice Emitted when a standard callback is registered.\\n /// @param interfaceId The ID of the interface.\\n /// @param callbackSelector The selector of the callback function.\\n /// @param magicNumber The magic number to be registered for the callback function selector.\\n event StandardCallbackRegistered(\\n bytes4 interfaceId,\\n bytes4 callbackSelector,\\n bytes4 magicNumber\\n );\\n\\n /// @notice Deposits (native) tokens to the DAO contract with a reference string.\\n /// @param _token The address of the token or address(0) in case of the native token.\\n /// @param _amount The amount of tokens to deposit.\\n /// @param _reference The reference describing the deposit reason.\\n function deposit(address _token, uint256 _amount, string calldata _reference) external payable;\\n\\n /// @notice Emitted when a token deposit has been made to the DAO.\\n /// @param sender The address of the sender.\\n /// @param token The address of the deposited token.\\n /// @param amount The amount of tokens deposited.\\n /// @param _reference The reference describing the deposit reason.\\n event Deposited(\\n address indexed sender,\\n address indexed token,\\n uint256 amount,\\n string _reference\\n );\\n\\n /// @notice Emitted when a native token deposit has been made to the DAO.\\n /// @dev This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).\\n /// @param sender The address of the sender.\\n /// @param amount The amount of native tokens deposited.\\n event NativeTokenDeposited(address sender, uint256 amount);\\n\\n /// @notice Setter for the trusted forwarder verifying the meta transaction.\\n /// @param _trustedForwarder The trusted forwarder address.\\n function setTrustedForwarder(address _trustedForwarder) external;\\n\\n /// @notice Getter for the trusted forwarder verifying the meta transaction.\\n /// @return The trusted forwarder address.\\n function getTrustedForwarder() external view returns (address);\\n\\n /// @notice Emitted when a new TrustedForwarder is set on the DAO.\\n /// @param forwarder the new forwarder address.\\n event TrustedForwarderSet(address forwarder);\\n\\n /// @notice Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\\n /// @param _hash The hash of the data to be signed.\\n /// @param _signature The signature byte array associated with `_hash`.\\n /// @return Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not.\\n function isValidSignature(bytes32 _hash, bytes memory _signature) external returns (bytes4);\\n\\n /// @notice Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\\n /// @param _interfaceId The ID of the interface.\\n /// @param _callbackSelector The selector of the callback function.\\n /// @param _magicNumber The magic number to be registered for the function signature.\\n function registerStandardCallback(\\n bytes4 _interfaceId,\\n bytes4 _callbackSelector,\\n bytes4 _magicNumber\\n ) external;\\n\\n /// @notice Removed function being left here to not corrupt the IDAO interface ID. Any call will revert.\\n /// @dev Introduced in v1.0.0. Removed in v1.4.0.\\n function setSignatureValidator(address) external;\\n}\\n\",\"keccak256\":\"0xb7f615523c26de042edce98731c658f44a1edb2464387ac1b642c4c69f57128e\",\"license\":\"AGPL-3.0-or-later\"},\"src/mocks/plugin/PluginCloneableMock.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\n/* solhint-disable one-contract-per-file */\\npragma solidity ^0.8.8;\\n\\nimport {PluginCloneable} from \\\"../../plugin/PluginCloneable.sol\\\";\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice A mock cloneable plugin to be deployed via the minimal proxy pattern.\\n/// v1.1 (Release 1, Build 1)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginCloneableMockBuild1 is PluginCloneable {\\n uint256 public state1;\\n\\n function initialize(IDAO _dao) external initializer {\\n __PluginCloneable_init(_dao);\\n state1 = 1;\\n }\\n}\\n\\n/// @notice A mock cloneable plugin to be deployed via the minimal proxy pattern.\\n/// v1.1 (Release 1, Build 2)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginCloneableMockBuild2 is PluginCloneable {\\n uint256 public state1;\\n uint256 public state2;\\n\\n function initialize(IDAO _dao) external initializer {\\n __PluginCloneable_init(_dao);\\n state1 = 1;\\n state2 = 2;\\n }\\n}\\n\\n/// @notice A mock cloneable plugin missing an initializer function.\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginCloneableMockBad is PluginCloneable {\\n uint256 public state1;\\n\\n function notAnInitializer(IDAO _dao) external {\\n __PluginCloneable_init(_dao);\\n state1 = 1;\\n }\\n}\\n\",\"keccak256\":\"0x1bb271f7b553040fad7907e97b860aa833aec9aefe7477e00ba7bdfd80d84e98\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/DaoAuthorizableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ContextUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\\\";\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\nimport {_auth} from \\\"./auth.sol\\\";\\n\\n/// @title DaoAuthorizableUpgradeable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract contract providing a meta-transaction compatible modifier for upgradeable or cloneable contracts to authorize function calls through an associated DAO.\\n/// @dev Make sure to call `__DaoAuthorizableUpgradeable_init` during initialization of the inheriting contract.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract DaoAuthorizableUpgradeable is ContextUpgradeable {\\n /// @notice The associated DAO managing the permissions of inheriting contracts.\\n IDAO private dao_;\\n\\n /// @notice Initializes the contract by setting the associated DAO.\\n /// @param _dao The associated DAO address.\\n // solhint-disable-next-line func-name-mixedcase\\n function __DaoAuthorizableUpgradeable_init(IDAO _dao) internal onlyInitializing {\\n dao_ = _dao;\\n }\\n\\n /// @notice Returns the DAO contract.\\n /// @return The DAO contract.\\n function dao() public view returns (IDAO) {\\n return dao_;\\n }\\n\\n /// @notice A modifier to make functions on inheriting contracts authorized. Permissions to call the function are checked through the associated DAO's permission manager.\\n /// @param _permissionId The permission identifier required to call the method this modifier is applied to.\\n modifier auth(bytes32 _permissionId) {\\n _auth(dao_, address(this), _msgSender(), _permissionId, _msgData());\\n _;\\n }\\n\\n /// @notice This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain (see [OpenZeppelin's guide about storage gaps](https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps)).\\n uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0x7fac6b01b037ba1cb9d6a22d3f43b0785037dcf496ffb672434d9bf7227d2585\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/auth.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice Thrown if a call is unauthorized in the associated DAO.\\n/// @param dao The associated DAO.\\n/// @param where The context in which the authorization reverted.\\n/// @param who The address (EOA or contract) missing the permission.\\n/// @param permissionId The permission identifier.\\nerror DaoUnauthorized(address dao, address where, address who, bytes32 permissionId);\\n\\n/// @notice A free function checking if a caller is granted permissions on a target contract via a permission identifier that redirects the approval to a `PermissionCondition` if this was specified in the setup.\\n/// @param _where The address of the target contract for which `who` receives permission.\\n/// @param _who The address (EOA or contract) owning the permission.\\n/// @param _permissionId The permission identifier.\\n/// @param _data The optional data passed to the `PermissionCondition` registered.\\n/// @custom:security-contact sirt@aragon.org\\nfunction _auth(\\n IDAO _dao,\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes calldata _data\\n) view {\\n if (!_dao.hasPermission(_where, _who, _permissionId, _data))\\n revert DaoUnauthorized({\\n dao: address(_dao),\\n where: _where,\\n who: _who,\\n permissionId: _permissionId\\n });\\n}\\n\",\"keccak256\":\"0x878764b4f87fe0651fb3798fb9cb87c952f8c6caf6ae79c7f09de84df6c00298\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/IPlugin.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IPlugin\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the traits of a plugin.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IPlugin {\\n enum PluginType {\\n UUPS,\\n Cloneable,\\n Constructable\\n }\\n\\n /// @notice Returns the plugin's type\\n function pluginType() external view returns (PluginType);\\n}\\n\",\"keccak256\":\"0xc57cd0d10b6380ab7f54c713a509e88fd8f4ad9288313a0e8e12b8887817ddfe\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/PluginCloneable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ERC165Upgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\\\";\\n\\nimport {IProtocolVersion} from \\\"../utils/versioning/IProtocolVersion.sol\\\";\\nimport {ProtocolVersion} from \\\"../utils/versioning/ProtocolVersion.sol\\\";\\nimport {DaoAuthorizableUpgradeable} from \\\"../permission/auth/DaoAuthorizableUpgradeable.sol\\\";\\nimport {IDAO} from \\\"../dao/IDAO.sol\\\";\\nimport {IPlugin} from \\\"./IPlugin.sol\\\";\\n\\n/// @title PluginCloneable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract, non-upgradeable contract to inherit from when creating a plugin being deployed via the minimal clones pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)).\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract PluginCloneable is\\n IPlugin,\\n ERC165Upgradeable,\\n DaoAuthorizableUpgradeable,\\n ProtocolVersion\\n{\\n /// @notice Disables the initializers on the implementation contract to prevent it from being left uninitialized.\\n /// @custom:oz-upgrades-unsafe-allow constructor\\n constructor() {\\n _disableInitializers();\\n }\\n\\n /// @notice Initializes the plugin by storing the associated DAO.\\n /// @param _dao The DAO contract.\\n // solhint-disable-next-line func-name-mixedcase\\n function __PluginCloneable_init(IDAO _dao) internal virtual onlyInitializing {\\n __DaoAuthorizableUpgradeable_init(_dao);\\n }\\n\\n /// @inheritdoc IPlugin\\n function pluginType() public pure override returns (PluginType) {\\n return PluginType.Cloneable;\\n }\\n\\n /// @notice Checks if this or the parent contract supports an interface by its ID.\\n /// @param _interfaceId The ID of the interface.\\n /// @return Returns `true` if the interface is supported.\\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\\n return\\n _interfaceId == type(IPlugin).interfaceId ||\\n _interfaceId == type(IProtocolVersion).interfaceId ||\\n super.supportsInterface(_interfaceId);\\n }\\n}\\n\",\"keccak256\":\"0x68e260b9b370d68252f0c707461d5e4c2188a7bfed42ed9192657b36330a1f7a\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/IProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IProtocolVersion\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the semantic Aragon OSx protocol version number.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IProtocolVersion {\\n /// @notice Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\\n /// @return _version Returns the semantic Aragon OSx protocol version number.\\n /// @dev This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\\n function protocolVersion() external view returns (uint8[3] memory _version);\\n}\\n\",\"keccak256\":\"0x00a4da654d21dc1bdadbdc8bd54bb86c378c56f85e461ccc31303628ea621361\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/ProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IProtocolVersion} from \\\"./IProtocolVersion.sol\\\";\\n\\n/// @title ProtocolVersion\\n/// @author Aragon X - 2023\\n/// @notice An abstract, stateless, non-upgradeable contract providing the current Aragon OSx protocol version number.\\n/// @dev Do not add any new variables to this contract that would shift down storage in the inheritance chain.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract ProtocolVersion is IProtocolVersion {\\n // IMPORTANT: Do not add any storage variable, see the above notice.\\n\\n /// @inheritdoc IProtocolVersion\\n function protocolVersion() public pure returns (uint8[3] memory) {\\n return [1, 4, 0];\\n }\\n}\\n\",\"keccak256\":\"0x3975c937be935f687c6b6b8f379071232681e98cf04b175d72781b819ea52bdb\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[{"astId":372,"contract":"src/mocks/plugin/PluginCloneableMock.sol:PluginCloneableMockBad","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":375,"contract":"src/mocks/plugin/PluginCloneableMock.sol:PluginCloneableMockBad","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":2821,"contract":"src/mocks/plugin/PluginCloneableMock.sol:PluginCloneableMockBad","label":"__gap","offset":0,"slot":"1","type":"t_array(t_uint256)50_storage"},{"astId":2592,"contract":"src/mocks/plugin/PluginCloneableMock.sol:PluginCloneableMockBad","label":"__gap","offset":0,"slot":"51","type":"t_array(t_uint256)50_storage"},{"astId":13111,"contract":"src/mocks/plugin/PluginCloneableMock.sol:PluginCloneableMockBad","label":"dao_","offset":0,"slot":"101","type":"t_contract(IDAO)10865"},{"astId":13160,"contract":"src/mocks/plugin/PluginCloneableMock.sol:PluginCloneableMockBad","label":"__gap","offset":0,"slot":"102","type":"t_array(t_uint256)49_storage"},{"astId":11253,"contract":"src/mocks/plugin/PluginCloneableMock.sol:PluginCloneableMockBad","label":"state1","offset":0,"slot":"151","type":"t_uint256"}],"types":{"t_array(t_uint256)49_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[49]","numberOfBytes":"1568"},"t_array(t_uint256)50_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[50]","numberOfBytes":"1600"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_contract(IDAO)10865":{"encoding":"inplace","label":"contract IDAO","numberOfBytes":"20"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"kind":"user","methods":{"dao()":{"notice":"Returns the DAO contract."},"pluginType()":{"notice":"Returns the plugin's type"},"protocolVersion()":{"notice":"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with."},"supportsInterface(bytes4)":{"notice":"Checks if this or the parent contract supports an interface by its ID."}},"notice":"A mock cloneable plugin missing an initializer function.","version":1}},"PluginCloneableMockBuild1":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"inputs":[],"name":"dao","outputs":[{"internalType":"contract IDAO","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IDAO","name":"_dao","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pluginType","outputs":[{"internalType":"enum IPlugin.PluginType","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"protocolVersion","outputs":[{"internalType":"uint8[3]","name":"","type":"uint8[3]"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"state1","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"DO NOT USE IN PRODUCTION!","kind":"dev","methods":{"dao()":{"returns":{"_0":"The DAO contract."}},"protocolVersion()":{"details":"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.","returns":{"_0":"Returns the semantic Aragon OSx protocol version number."}},"supportsInterface(bytes4)":{"params":{"_interfaceId":"The ID of the interface."},"returns":{"_0":"Returns `true` if the interface is supported."}}},"version":1},"evm":{"bytecode":{"functionDebugData":{"@_13445":{"entryPoint":null,"id":13445,"parameterSlots":0,"returnSlots":0},"@_disableInitializers_515":{"entryPoint":30,"id":515,"parameterSlots":0,"returnSlots":0},"abi_encode_tuple_t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:608:92","statements":[{"nodeType":"YulBlock","src":"6:3:92","statements":[]},{"body":{"nodeType":"YulBlock","src":"188:229:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"205:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"216:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"198:6:92"},"nodeType":"YulFunctionCall","src":"198:21:92"},"nodeType":"YulExpressionStatement","src":"198:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"239:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"250:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"235:3:92"},"nodeType":"YulFunctionCall","src":"235:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"255:2:92","type":"","value":"39"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"228:6:92"},"nodeType":"YulFunctionCall","src":"228:30:92"},"nodeType":"YulExpressionStatement","src":"228:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"278:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"289:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"274:3:92"},"nodeType":"YulFunctionCall","src":"274:18:92"},{"hexValue":"496e697469616c697a61626c653a20636f6e747261637420697320696e697469","kind":"string","nodeType":"YulLiteral","src":"294:34:92","type":"","value":"Initializable: contract is initi"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"267:6:92"},"nodeType":"YulFunctionCall","src":"267:62:92"},"nodeType":"YulExpressionStatement","src":"267:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"349:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"360:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"345:3:92"},"nodeType":"YulFunctionCall","src":"345:18:92"},{"hexValue":"616c697a696e67","kind":"string","nodeType":"YulLiteral","src":"365:9:92","type":"","value":"alizing"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"338:6:92"},"nodeType":"YulFunctionCall","src":"338:37:92"},"nodeType":"YulExpressionStatement","src":"338:37:92"},{"nodeType":"YulAssignment","src":"384:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"396:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"407:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"392:3:92"},"nodeType":"YulFunctionCall","src":"392:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"384:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"165:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"179:4:92","type":""}],"src":"14:403:92"},{"body":{"nodeType":"YulBlock","src":"519:87:92","statements":[{"nodeType":"YulAssignment","src":"529:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"541:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"552:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"537:3:92"},"nodeType":"YulFunctionCall","src":"537:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"529:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"571:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"586:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"594:4:92","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"582:3:92"},"nodeType":"YulFunctionCall","src":"582:17:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"564:6:92"},"nodeType":"YulFunctionCall","src":"564:36:92"},"nodeType":"YulExpressionStatement","src":"564:36:92"}]},"name":"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"488:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"499:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"510:4:92","type":""}],"src":"422:184:92"}]},"contents":"{\n { }\n function abi_encode_tuple_t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 39)\n mstore(add(headStart, 64), \"Initializable: contract is initi\")\n mstore(add(headStart, 96), \"alizing\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xff))\n }\n}","id":92,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"608060405234801561001057600080fd5b5061001961001e565b6100dd565b600054610100900460ff161561008a5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116146100db576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6104d5806100ec6000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c806341de68301161005057806341de6830146100dc5780636accab8c146100eb578063c4d66de81461010257600080fd5b806301ffc9a7146100775780632ae9c6001461009f5780634162169f146100b4575b600080fd5b61008a610085366004610405565b610117565b60405190151581526020015b60405180910390f35b6100a7610168565b6040516100969190610436565b60655460405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610096565b6001604051610096919061046a565b6100f460975481565b604051908152602001610096565b610115610110366004610492565b610192565b005b60006001600160e01b0319821663041de68360e41b148061014757506001600160e01b03198216621574e360e91b145b8061016257506301ffc9a760e01b6001600160e01b03198316145b92915050565b6101706103e7565b5060408051606081018252600181526004602082015260009181019190915290565b600054610100900460ff16158080156101b25750600054600160ff909116105b806101cc5750303b1580156101cc575060005460ff166001145b6102435760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b6000805460ff191660011790558015610266576000805461ff0019166101001790555b61026f826102be565b600160975580156102ba576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b600054610100900460ff166103295760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840161023a565b61033281610335565b50565b600054610100900460ff166103a05760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840161023a565b606580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60405180606001604052806003906020820280368337509192915050565b60006020828403121561041757600080fd5b81356001600160e01b03198116811461042f57600080fd5b9392505050565b60608101818360005b600381101561046157815160ff1683526020928301929091019060010161043f565b50505092915050565b602081016003831061048c57634e487b7160e01b600052602160045260246000fd5b91905290565b6000602082840312156104a457600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461042f57600080fdfea164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x19 PUSH2 0x1E JUMP JUMPDEST PUSH2 0xDD JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x8A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x27 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320696E697469 PUSH1 0x44 DUP3 ADD MSTORE PUSH7 0x616C697A696E67 PUSH1 0xC8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xFF SWAP1 DUP2 AND EQ PUSH2 0xDB JUMPI PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST JUMP JUMPDEST PUSH2 0x4D5 DUP1 PUSH2 0xEC PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x72 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x41DE6830 GT PUSH2 0x50 JUMPI DUP1 PUSH4 0x41DE6830 EQ PUSH2 0xDC JUMPI DUP1 PUSH4 0x6ACCAB8C EQ PUSH2 0xEB JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0x102 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x77 JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0x9F JUMPI DUP1 PUSH4 0x4162169F EQ PUSH2 0xB4 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8A PUSH2 0x85 CALLDATASIZE PUSH1 0x4 PUSH2 0x405 JUMP JUMPDEST PUSH2 0x117 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xA7 PUSH2 0x168 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x96 SWAP2 SWAP1 PUSH2 0x436 JUMP JUMPDEST PUSH1 0x65 SLOAD PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x96 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x40 MLOAD PUSH2 0x96 SWAP2 SWAP1 PUSH2 0x46A JUMP JUMPDEST PUSH2 0xF4 PUSH1 0x97 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x96 JUMP JUMPDEST PUSH2 0x115 PUSH2 0x110 CALLDATASIZE PUSH1 0x4 PUSH2 0x492 JUMP JUMPDEST PUSH2 0x192 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x41DE683 PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x147 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x162 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x170 PUSH2 0x3E7 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 DUP1 ISZERO PUSH2 0x1B2 JUMPI POP PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xFF SWAP1 SWAP2 AND LT JUMPDEST DUP1 PUSH2 0x1CC JUMPI POP ADDRESS EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1CC JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF AND PUSH1 0x1 EQ JUMPDEST PUSH2 0x243 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x647920696E697469616C697A6564000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE DUP1 ISZERO PUSH2 0x266 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND PUSH2 0x100 OR SWAP1 SSTORE JUMPDEST PUSH2 0x26F DUP3 PUSH2 0x2BE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x97 SSTORE DUP1 ISZERO PUSH2 0x2BA JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x329 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x23A JUMP JUMPDEST PUSH2 0x332 DUP2 PUSH2 0x335 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x3A0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x23A JUMP JUMPDEST PUSH1 0x65 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x417 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x42F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0x461 JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x43F JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH1 0x3 DUP4 LT PUSH2 0x48C JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 SWAP1 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x42F JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"371:207:48:-:0;;;;;;;;;;;;-1:-1:-1;1131:22:74;:20;:22::i;:::-;371:207:48;;5939:280:4;6007:13;;;;;;;6006:14;5998:66;;;;-1:-1:-1;;;5998:66:4;;216:2:92;5998:66:4;;;198:21:92;255:2;235:18;;;228:30;294:34;274:18;;;267:62;-1:-1:-1;;;345:18:92;;;338:37;392:19;;5998:66:4;;;;;;;;6078:12;;6094:15;6078:12;;;:31;6074:139;;6125:12;:30;;-1:-1:-1;;6125:30:4;6140:15;6125:30;;;;;;6174:28;;564:36:92;;;6174:28:4;;552:2:92;537:18;6174:28:4;;;;;;;6074:139;5939:280::o;422:184:92:-;371:207:48;;;;;;"},"deployedBytecode":{"functionDebugData":{"@__DaoAuthorizableUpgradeable_init_13125":{"entryPoint":821,"id":13125,"parameterSlots":1,"returnSlots":0},"@__PluginCloneable_init_13459":{"entryPoint":702,"id":13459,"parameterSlots":1,"returnSlots":0},"@dao_13135":{"entryPoint":null,"id":13135,"parameterSlots":0,"returnSlots":1},"@initialize_11218":{"entryPoint":402,"id":11218,"parameterSlots":1,"returnSlots":0},"@isContract_689":{"entryPoint":null,"id":689,"parameterSlots":1,"returnSlots":1},"@pluginType_13471":{"entryPoint":null,"id":13471,"parameterSlots":0,"returnSlots":1},"@protocolVersion_14765":{"entryPoint":360,"id":14765,"parameterSlots":0,"returnSlots":1},"@state1_11201":{"entryPoint":null,"id":11201,"parameterSlots":0,"returnSlots":0},"@supportsInterface_13500":{"entryPoint":279,"id":13500,"parameterSlots":1,"returnSlots":1},"@supportsInterface_2816":{"entryPoint":null,"id":2816,"parameterSlots":1,"returnSlots":1},"abi_decode_tuple_t_bytes4":{"entryPoint":1029,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_contract$_IDAO_$10865":{"entryPoint":1170,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed":{"entryPoint":1078,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_contract$_IDAO_$10865__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_enum$_PluginType_$13330__to_t_uint8__fromStack_reversed":{"entryPoint":1130,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_rational_1_by_1__to_t_uint8__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:3130:92","statements":[{"nodeType":"YulBlock","src":"6:3:92","statements":[]},{"body":{"nodeType":"YulBlock","src":"83:217:92","statements":[{"body":{"nodeType":"YulBlock","src":"129:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"138:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"141:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"131:6:92"},"nodeType":"YulFunctionCall","src":"131:12:92"},"nodeType":"YulExpressionStatement","src":"131:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"104:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"113:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"100:3:92"},"nodeType":"YulFunctionCall","src":"100:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"125:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"96:3:92"},"nodeType":"YulFunctionCall","src":"96:32:92"},"nodeType":"YulIf","src":"93:52:92"},{"nodeType":"YulVariableDeclaration","src":"154:36:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"180:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"167:12:92"},"nodeType":"YulFunctionCall","src":"167:23:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"158:5:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"254:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"263:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"266:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"256:6:92"},"nodeType":"YulFunctionCall","src":"256:12:92"},"nodeType":"YulExpressionStatement","src":"256:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"212:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"223:5:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"234:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"239:10:92","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"230:3:92"},"nodeType":"YulFunctionCall","src":"230:20:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"219:3:92"},"nodeType":"YulFunctionCall","src":"219:32:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"209:2:92"},"nodeType":"YulFunctionCall","src":"209:43:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"202:6:92"},"nodeType":"YulFunctionCall","src":"202:51:92"},"nodeType":"YulIf","src":"199:71:92"},{"nodeType":"YulAssignment","src":"279:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"289:5:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"279:6:92"}]}]},"name":"abi_decode_tuple_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"49:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"60:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"72:6:92","type":""}],"src":"14:286:92"},{"body":{"nodeType":"YulBlock","src":"400:92:92","statements":[{"nodeType":"YulAssignment","src":"410:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"422:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"433:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"418:3:92"},"nodeType":"YulFunctionCall","src":"418:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"410:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"452:9:92"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"477:6:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"470:6:92"},"nodeType":"YulFunctionCall","src":"470:14:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"463:6:92"},"nodeType":"YulFunctionCall","src":"463:22:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"445:6:92"},"nodeType":"YulFunctionCall","src":"445:41:92"},"nodeType":"YulExpressionStatement","src":"445:41:92"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"369:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"380:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"391:4:92","type":""}],"src":"305:187:92"},{"body":{"nodeType":"YulBlock","src":"640:358:92","statements":[{"nodeType":"YulAssignment","src":"650:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"662:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"673:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"658:3:92"},"nodeType":"YulFunctionCall","src":"658:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"650:4:92"}]},{"nodeType":"YulVariableDeclaration","src":"685:20:92","value":{"name":"headStart","nodeType":"YulIdentifier","src":"696:9:92"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"689:3:92","type":""}]},{"nodeType":"YulAssignment","src":"714:16:92","value":{"name":"headStart","nodeType":"YulIdentifier","src":"721:9:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"714:3:92"}]},{"nodeType":"YulVariableDeclaration","src":"739:20:92","value":{"name":"value0","nodeType":"YulIdentifier","src":"753:6:92"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"743:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"768:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"777:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"772:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"834:158:92","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"855:3:92"},{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"870:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"864:5:92"},"nodeType":"YulFunctionCall","src":"864:13:92"},{"kind":"number","nodeType":"YulLiteral","src":"879:4:92","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"860:3:92"},"nodeType":"YulFunctionCall","src":"860:24:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"848:6:92"},"nodeType":"YulFunctionCall","src":"848:37:92"},"nodeType":"YulExpressionStatement","src":"848:37:92"},{"nodeType":"YulVariableDeclaration","src":"898:14:92","value":{"kind":"number","nodeType":"YulLiteral","src":"908:4:92","type":"","value":"0x20"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"902:2:92","type":""}]},{"nodeType":"YulAssignment","src":"925:19:92","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"936:3:92"},{"name":"_1","nodeType":"YulIdentifier","src":"941:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"932:3:92"},"nodeType":"YulFunctionCall","src":"932:12:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"925:3:92"}]},{"nodeType":"YulAssignment","src":"957:25:92","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"971:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"979:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"967:3:92"},"nodeType":"YulFunctionCall","src":"967:15:92"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"957:6:92"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"798:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"801:4:92","type":"","value":"0x03"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"795:2:92"},"nodeType":"YulFunctionCall","src":"795:11:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"807:18:92","statements":[{"nodeType":"YulAssignment","src":"809:14:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"818:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"821:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"814:3:92"},"nodeType":"YulFunctionCall","src":"814:9:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"809:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"791:3:92","statements":[]},"src":"787:205:92"}]},"name":"abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"609:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"620:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"631:4:92","type":""}],"src":"497:501:92"},{"body":{"nodeType":"YulBlock","src":"1118:125:92","statements":[{"nodeType":"YulAssignment","src":"1128:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1140:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1151:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1136:3:92"},"nodeType":"YulFunctionCall","src":"1136:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1128:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1170:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1185:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"1193:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1181:3:92"},"nodeType":"YulFunctionCall","src":"1181:55:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1163:6:92"},"nodeType":"YulFunctionCall","src":"1163:74:92"},"nodeType":"YulExpressionStatement","src":"1163:74:92"}]},"name":"abi_encode_tuple_t_contract$_IDAO_$10865__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1087:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1098:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1109:4:92","type":""}],"src":"1003:240:92"},{"body":{"nodeType":"YulBlock","src":"1363:229:92","statements":[{"nodeType":"YulAssignment","src":"1373:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1385:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1396:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1381:3:92"},"nodeType":"YulFunctionCall","src":"1381:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1373:4:92"}]},{"body":{"nodeType":"YulBlock","src":"1441:111:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1462:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1469:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"1474:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1465:3:92"},"nodeType":"YulFunctionCall","src":"1465:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1455:6:92"},"nodeType":"YulFunctionCall","src":"1455:31:92"},"nodeType":"YulExpressionStatement","src":"1455:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1506:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"1509:4:92","type":"","value":"0x21"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1499:6:92"},"nodeType":"YulFunctionCall","src":"1499:15:92"},"nodeType":"YulExpressionStatement","src":"1499:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1534:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1537:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1527:6:92"},"nodeType":"YulFunctionCall","src":"1527:15:92"},"nodeType":"YulExpressionStatement","src":"1527:15:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1421:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"1429:1:92","type":"","value":"3"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"1418:2:92"},"nodeType":"YulFunctionCall","src":"1418:13:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1411:6:92"},"nodeType":"YulFunctionCall","src":"1411:21:92"},"nodeType":"YulIf","src":"1408:144:92"},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1568:9:92"},{"name":"value0","nodeType":"YulIdentifier","src":"1579:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1561:6:92"},"nodeType":"YulFunctionCall","src":"1561:25:92"},"nodeType":"YulExpressionStatement","src":"1561:25:92"}]},"name":"abi_encode_tuple_t_enum$_PluginType_$13330__to_t_uint8__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1332:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1343:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1354:4:92","type":""}],"src":"1248:344:92"},{"body":{"nodeType":"YulBlock","src":"1698:76:92","statements":[{"nodeType":"YulAssignment","src":"1708:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1720:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1731:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1716:3:92"},"nodeType":"YulFunctionCall","src":"1716:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1708:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1750:9:92"},{"name":"value0","nodeType":"YulIdentifier","src":"1761:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1743:6:92"},"nodeType":"YulFunctionCall","src":"1743:25:92"},"nodeType":"YulExpressionStatement","src":"1743:25:92"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1667:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1678:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1689:4:92","type":""}],"src":"1597:177:92"},{"body":{"nodeType":"YulBlock","src":"1863:239:92","statements":[{"body":{"nodeType":"YulBlock","src":"1909:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1918:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1921:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1911:6:92"},"nodeType":"YulFunctionCall","src":"1911:12:92"},"nodeType":"YulExpressionStatement","src":"1911:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1884:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"1893:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1880:3:92"},"nodeType":"YulFunctionCall","src":"1880:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"1905:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1876:3:92"},"nodeType":"YulFunctionCall","src":"1876:32:92"},"nodeType":"YulIf","src":"1873:52:92"},{"nodeType":"YulVariableDeclaration","src":"1934:36:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1960:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1947:12:92"},"nodeType":"YulFunctionCall","src":"1947:23:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"1938:5:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"2056:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2065:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2068:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2058:6:92"},"nodeType":"YulFunctionCall","src":"2058:12:92"},"nodeType":"YulExpressionStatement","src":"2058:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1992:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2003:5:92"},{"kind":"number","nodeType":"YulLiteral","src":"2010:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1999:3:92"},"nodeType":"YulFunctionCall","src":"1999:54:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1989:2:92"},"nodeType":"YulFunctionCall","src":"1989:65:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1982:6:92"},"nodeType":"YulFunctionCall","src":"1982:73:92"},"nodeType":"YulIf","src":"1979:93:92"},{"nodeType":"YulAssignment","src":"2081:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"2091:5:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2081:6:92"}]}]},"name":"abi_decode_tuple_t_contract$_IDAO_$10865","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1829:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1840:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1852:6:92","type":""}],"src":"1779:323:92"},{"body":{"nodeType":"YulBlock","src":"2281:236:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2298:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2309:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2291:6:92"},"nodeType":"YulFunctionCall","src":"2291:21:92"},"nodeType":"YulExpressionStatement","src":"2291:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2332:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2343:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2328:3:92"},"nodeType":"YulFunctionCall","src":"2328:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"2348:2:92","type":"","value":"46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2321:6:92"},"nodeType":"YulFunctionCall","src":"2321:30:92"},"nodeType":"YulExpressionStatement","src":"2321:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2371:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2382:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2367:3:92"},"nodeType":"YulFunctionCall","src":"2367:18:92"},{"hexValue":"496e697469616c697a61626c653a20636f6e747261637420697320616c726561","kind":"string","nodeType":"YulLiteral","src":"2387:34:92","type":"","value":"Initializable: contract is alrea"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2360:6:92"},"nodeType":"YulFunctionCall","src":"2360:62:92"},"nodeType":"YulExpressionStatement","src":"2360:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2442:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2453:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2438:3:92"},"nodeType":"YulFunctionCall","src":"2438:18:92"},{"hexValue":"647920696e697469616c697a6564","kind":"string","nodeType":"YulLiteral","src":"2458:16:92","type":"","value":"dy initialized"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2431:6:92"},"nodeType":"YulFunctionCall","src":"2431:44:92"},"nodeType":"YulExpressionStatement","src":"2431:44:92"},{"nodeType":"YulAssignment","src":"2484:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2496:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2507:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2492:3:92"},"nodeType":"YulFunctionCall","src":"2492:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2484:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2258:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2272:4:92","type":""}],"src":"2107:410:92"},{"body":{"nodeType":"YulBlock","src":"2629:87:92","statements":[{"nodeType":"YulAssignment","src":"2639:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2651:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2662:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2647:3:92"},"nodeType":"YulFunctionCall","src":"2647:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2639:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2681:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2696:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"2704:4:92","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2692:3:92"},"nodeType":"YulFunctionCall","src":"2692:17:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2674:6:92"},"nodeType":"YulFunctionCall","src":"2674:36:92"},"nodeType":"YulExpressionStatement","src":"2674:36:92"}]},"name":"abi_encode_tuple_t_rational_1_by_1__to_t_uint8__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2598:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"2609:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2620:4:92","type":""}],"src":"2522:194:92"},{"body":{"nodeType":"YulBlock","src":"2895:233:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2912:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2923:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2905:6:92"},"nodeType":"YulFunctionCall","src":"2905:21:92"},"nodeType":"YulExpressionStatement","src":"2905:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2946:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2957:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2942:3:92"},"nodeType":"YulFunctionCall","src":"2942:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"2962:2:92","type":"","value":"43"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2935:6:92"},"nodeType":"YulFunctionCall","src":"2935:30:92"},"nodeType":"YulExpressionStatement","src":"2935:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2985:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2996:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2981:3:92"},"nodeType":"YulFunctionCall","src":"2981:18:92"},{"hexValue":"496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069","kind":"string","nodeType":"YulLiteral","src":"3001:34:92","type":"","value":"Initializable: contract is not i"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2974:6:92"},"nodeType":"YulFunctionCall","src":"2974:62:92"},"nodeType":"YulExpressionStatement","src":"2974:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3056:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3067:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3052:3:92"},"nodeType":"YulFunctionCall","src":"3052:18:92"},{"hexValue":"6e697469616c697a696e67","kind":"string","nodeType":"YulLiteral","src":"3072:13:92","type":"","value":"nitializing"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3045:6:92"},"nodeType":"YulFunctionCall","src":"3045:41:92"},"nodeType":"YulExpressionStatement","src":"3045:41:92"},{"nodeType":"YulAssignment","src":"3095:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3107:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3118:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3103:3:92"},"nodeType":"YulFunctionCall","src":"3103:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3095:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2872:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2886:4:92","type":""}],"src":"2721:407:92"}]},"contents":"{\n { }\n function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n if iszero(eq(value, and(value, shl(224, 0xffffffff)))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 96)\n let pos := headStart\n pos := headStart\n let srcPtr := value0\n let i := 0\n for { } lt(i, 0x03) { i := add(i, 1) }\n {\n mstore(pos, and(mload(srcPtr), 0xff))\n let _1 := 0x20\n pos := add(pos, _1)\n srcPtr := add(srcPtr, _1)\n }\n }\n function abi_encode_tuple_t_contract$_IDAO_$10865__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_encode_tuple_t_enum$_PluginType_$13330__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n if iszero(lt(value0, 3))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x21)\n revert(0, 0x24)\n }\n mstore(headStart, value0)\n }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_decode_tuple_t_contract$_IDAO_$10865(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 46)\n mstore(add(headStart, 64), \"Initializable: contract is alrea\")\n mstore(add(headStart, 96), \"dy initialized\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_rational_1_by_1__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xff))\n }\n function abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 43)\n mstore(add(headStart, 64), \"Initializable: contract is not i\")\n mstore(add(headStart, 96), \"nitializing\")\n tail := add(headStart, 128)\n }\n}","id":92,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100725760003560e01c806341de68301161005057806341de6830146100dc5780636accab8c146100eb578063c4d66de81461010257600080fd5b806301ffc9a7146100775780632ae9c6001461009f5780634162169f146100b4575b600080fd5b61008a610085366004610405565b610117565b60405190151581526020015b60405180910390f35b6100a7610168565b6040516100969190610436565b60655460405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610096565b6001604051610096919061046a565b6100f460975481565b604051908152602001610096565b610115610110366004610492565b610192565b005b60006001600160e01b0319821663041de68360e41b148061014757506001600160e01b03198216621574e360e91b145b8061016257506301ffc9a760e01b6001600160e01b03198316145b92915050565b6101706103e7565b5060408051606081018252600181526004602082015260009181019190915290565b600054610100900460ff16158080156101b25750600054600160ff909116105b806101cc5750303b1580156101cc575060005460ff166001145b6102435760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b6000805460ff191660011790558015610266576000805461ff0019166101001790555b61026f826102be565b600160975580156102ba576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b600054610100900460ff166103295760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840161023a565b61033281610335565b50565b600054610100900460ff166103a05760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840161023a565b606580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60405180606001604052806003906020820280368337509192915050565b60006020828403121561041757600080fd5b81356001600160e01b03198116811461042f57600080fd5b9392505050565b60608101818360005b600381101561046157815160ff1683526020928301929091019060010161043f565b50505092915050565b602081016003831061048c57634e487b7160e01b600052602160045260246000fd5b91905290565b6000602082840312156104a457600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461042f57600080fdfea164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x72 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x41DE6830 GT PUSH2 0x50 JUMPI DUP1 PUSH4 0x41DE6830 EQ PUSH2 0xDC JUMPI DUP1 PUSH4 0x6ACCAB8C EQ PUSH2 0xEB JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0x102 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x77 JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0x9F JUMPI DUP1 PUSH4 0x4162169F EQ PUSH2 0xB4 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8A PUSH2 0x85 CALLDATASIZE PUSH1 0x4 PUSH2 0x405 JUMP JUMPDEST PUSH2 0x117 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xA7 PUSH2 0x168 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x96 SWAP2 SWAP1 PUSH2 0x436 JUMP JUMPDEST PUSH1 0x65 SLOAD PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x96 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x40 MLOAD PUSH2 0x96 SWAP2 SWAP1 PUSH2 0x46A JUMP JUMPDEST PUSH2 0xF4 PUSH1 0x97 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x96 JUMP JUMPDEST PUSH2 0x115 PUSH2 0x110 CALLDATASIZE PUSH1 0x4 PUSH2 0x492 JUMP JUMPDEST PUSH2 0x192 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x41DE683 PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x147 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x162 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x170 PUSH2 0x3E7 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 DUP1 ISZERO PUSH2 0x1B2 JUMPI POP PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xFF SWAP1 SWAP2 AND LT JUMPDEST DUP1 PUSH2 0x1CC JUMPI POP ADDRESS EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1CC JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF AND PUSH1 0x1 EQ JUMPDEST PUSH2 0x243 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x647920696E697469616C697A6564000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE DUP1 ISZERO PUSH2 0x266 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND PUSH2 0x100 OR SWAP1 SSTORE JUMPDEST PUSH2 0x26F DUP3 PUSH2 0x2BE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x97 SSTORE DUP1 ISZERO PUSH2 0x2BA JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x329 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x23A JUMP JUMPDEST PUSH2 0x332 DUP2 PUSH2 0x335 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x3A0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x23A JUMP JUMPDEST PUSH1 0x65 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x417 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x42F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0x461 JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x43F JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH1 0x3 DUP4 LT PUSH2 0x48C JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 SWAP1 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x42F JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"371:207:48:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1810:288:74;;;;;;:::i;:::-;;:::i;:::-;;;470:14:92;;463:22;445:41;;433:2;418:18;1810:288:74;;;;;;;;631:98:90;;;:::i;:::-;;;;;;;:::i;1200:70:67:-;1259:4;;1200:70;;1259:4;;;;1163:74:92;;1151:2;1136:18;1200:70:67;1003:240:92;1494:108:74;1575:20;1494:108;;;;;;:::i;431:21:48:-;;;;;;;;;1743:25:92;;;1731:2;1716:18;431:21:48;1597:177:92;459:117:48;;;;;;:::i;:::-;;:::i;:::-;;1810:288:74;1896:4;-1:-1:-1;;;;;;1931:41:74;;-1:-1:-1;;;1931:41:74;;:107;;-1:-1:-1;;;;;;;1988:50:74;;-1:-1:-1;;;1988:50:74;1931:107;:160;;;-1:-1:-1;;;;;;;;;;1189:51:11;;;2054:37:74;1912:179;1810:288;-1:-1:-1;;1810:288:74:o;631:98:90:-;679:15;;:::i;:::-;-1:-1:-1;706:16:90;;;;;;;;714:1;706:16;;717:1;706:16;;;;-1:-1:-1;706:16:90;;;;;;;;631:98::o;459:117:48:-;3279:19:4;3302:13;;;;;;3301:14;;3347:34;;;;-1:-1:-1;3365:12:4;;3380:1;3365:12;;;;:16;3347:34;3346:108;;;-1:-1:-1;3426:4:4;1713:19:6;:23;;;3387:66:4;;-1:-1:-1;3436:12:4;;;;;:17;3387:66;3325:201;;;;-1:-1:-1;;;3325:201:4;;2309:2:92;3325:201:4;;;2291:21:92;2348:2;2328:18;;;2321:30;2387:34;2367:18;;;2360:62;2458:16;2438:18;;;2431:44;2492:19;;3325:201:4;;;;;;;;;3536:12;:16;;-1:-1:-1;;3536:16:4;3551:1;3536:16;;;3562:65;;;;3596:13;:20;;-1:-1:-1;;3596:20:4;;;;;3562:65;521:28:48::1;544:4;521:22;:28::i;:::-;568:1;559:6;:10:::0;3647:99:4;;;;3697:5;3681:21;;-1:-1:-1;;3681:21:4;;;3721:14;;-1:-1:-1;2674:36:92;;3721:14:4;;2662:2:92;2647:18;3721:14:4;;;;;;;3647:99;3269:483;459:117:48;:::o;1327:133:74:-;5374:13:4;;;;;;;5366:69;;;;-1:-1:-1;;;5366:69:4;;2923:2:92;5366:69:4;;;2905:21:92;2962:2;2942:18;;;2935:30;3001:34;2981:18;;;2974:62;-1:-1:-1;;;3052:18:92;;;3045:41;3103:19;;5366:69:4;2721:407:92;5366:69:4;1414:39:74::1;1448:4;1414:33;:39::i;:::-;1327:133:::0;:::o;1010:108:67:-;5374:13:4;;;;;;;5366:69;;;;-1:-1:-1;;;5366:69:4;;2923:2:92;5366:69:4;;;2905:21:92;2962:2;2942:18;;;2935:30;3001:34;2981:18;;;2974:62;-1:-1:-1;;;3052:18:92;;;3045:41;3103:19;;5366:69:4;2721:407:92;5366:69:4;1100:4:67::1;:11:::0;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;1010:108::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:286:92:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:92;;209:43;;199:71;;266:1;263;256:12;199:71;289:5;14:286;-1:-1:-1;;;14:286:92:o;497:501::-;673:2;658:18;;662:9;753:6;631:4;787:205;801:4;798:1;795:11;787:205;;;864:13;;879:4;860:24;848:37;;908:4;932:12;;;;967:15;;;;821:1;814:9;787:205;;;791:3;;;497:501;;;;:::o;1248:344::-;1396:2;1381:18;;1429:1;1418:13;;1408:144;;1474:10;1469:3;1465:20;1462:1;1455:31;1509:4;1506:1;1499:15;1537:4;1534:1;1527:15;1408:144;1561:25;;;1248:344;:::o;1779:323::-;1852:6;1905:2;1893:9;1884:7;1880:23;1876:32;1873:52;;;1921:1;1918;1911:12;1873:52;1960:9;1947:23;2010:42;2003:5;1999:54;1992:5;1989:65;1979:93;;2068:1;2065;2058:12"},"gasEstimates":{"creation":{"codeDepositCost":"247400","executionCost":"29876","totalCost":"277276"},"external":{"dao()":"2334","initialize(address)":"133781","pluginType()":"227","protocolVersion()":"infinite","state1()":"2317","supportsInterface(bytes4)":"482"}},"methodIdentifiers":{"dao()":"4162169f","initialize(address)":"c4d66de8","pluginType()":"41de6830","protocolVersion()":"2ae9c600","state1()":"6accab8c","supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"dao\",\"outputs\":[{\"internalType\":\"contract IDAO\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IDAO\",\"name\":\"_dao\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pluginType\",\"outputs\":[{\"internalType\":\"enum IPlugin.PluginType\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"protocolVersion\",\"outputs\":[{\"internalType\":\"uint8[3]\",\"name\":\"\",\"type\":\"uint8[3]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"state1\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"DO NOT USE IN PRODUCTION!\",\"kind\":\"dev\",\"methods\":{\"dao()\":{\"returns\":{\"_0\":\"The DAO contract.\"}},\"protocolVersion()\":{\"details\":\"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\",\"returns\":{\"_0\":\"Returns the semantic Aragon OSx protocol version number.\"}},\"supportsInterface(bytes4)\":{\"params\":{\"_interfaceId\":\"The ID of the interface.\"},\"returns\":{\"_0\":\"Returns `true` if the interface is supported.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"dao()\":{\"notice\":\"Returns the DAO contract.\"},\"pluginType()\":{\"notice\":\"Returns the plugin's type\"},\"protocolVersion()\":{\"notice\":\"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Checks if this or the parent contract supports an interface by its ID.\"}},\"notice\":\"A mock cloneable plugin to be deployed via the minimal proxy pattern. v1.1 (Release 1, Build 1)\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/mocks/plugin/PluginCloneableMock.sol\":\"PluginCloneableMockBuild1\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n function __Context_init() internal onlyInitializing {\\n }\\n\\n function __Context_init_unchained() internal onlyInitializing {\\n }\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n function _contextSuffixLength() internal view virtual returns (uint256) {\\n return 0;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x75097e35253e7fb282ee4d7f27a80eaacfa759923185bf17302a89cbc059c5ef\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165Upgradeable.sol\\\";\\nimport {Initializable} from \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165Upgradeable is Initializable, IERC165Upgradeable {\\n function __ERC165_init() internal onlyInitializing {\\n }\\n\\n function __ERC165_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165Upgradeable).interfaceId;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0xd90d7723512df65ae417adaf0801042940f0dabd60039ceeaffe34aa5b238da1\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165Upgradeable {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\"},\"src/dao/IDAO.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IDAO\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for DAOs within the Aragon App DAO framework.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IDAO {\\n /// @notice The action struct to be consumed by the DAO's `execute` function resulting in an external call.\\n /// @param to The address to call.\\n /// @param value The native token value to be sent with the call.\\n /// @param data The bytes-encoded function selector and calldata for the call.\\n struct Action {\\n address to;\\n uint256 value;\\n bytes data;\\n }\\n\\n /// @notice Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\\n /// @param _where The address of the contract.\\n /// @param _who The address of a EOA or contract to give the permissions.\\n /// @param _permissionId The permission identifier.\\n /// @param _data The optional data passed to the `PermissionCondition` registered.\\n /// @return Returns true if the address has permission, false if not.\\n function hasPermission(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes memory _data\\n ) external view returns (bool);\\n\\n /// @notice Updates the DAO metadata (e.g., an IPFS hash).\\n /// @param _metadata The IPFS hash of the new metadata object.\\n function setMetadata(bytes calldata _metadata) external;\\n\\n /// @notice Emitted when the DAO metadata is updated.\\n /// @param metadata The IPFS hash of the new metadata object.\\n event MetadataSet(bytes metadata);\\n\\n /// @notice Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted.\\n /// @param _callId The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce.\\n /// @param _actions The array of actions.\\n /// @param _allowFailureMap A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @return The array of results obtained from the executed actions in `bytes`.\\n /// @return The resulting failure map containing the actions have actually failed.\\n function execute(\\n bytes32 _callId,\\n Action[] memory _actions,\\n uint256 _allowFailureMap\\n ) external returns (bytes[] memory, uint256);\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param actor The address of the caller.\\n /// @param callId The ID of the call.\\n /// @param actions The array of actions executed.\\n /// @param allowFailureMap The allow failure map encoding which actions are allowed to fail.\\n /// @param failureMap The failure map encoding which actions have failed.\\n /// @param execResults The array with the results of the executed actions.\\n /// @dev The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce.\\n event Executed(\\n address indexed actor,\\n bytes32 callId,\\n Action[] actions,\\n uint256 allowFailureMap,\\n uint256 failureMap,\\n bytes[] execResults\\n );\\n\\n /// @notice Emitted when a standard callback is registered.\\n /// @param interfaceId The ID of the interface.\\n /// @param callbackSelector The selector of the callback function.\\n /// @param magicNumber The magic number to be registered for the callback function selector.\\n event StandardCallbackRegistered(\\n bytes4 interfaceId,\\n bytes4 callbackSelector,\\n bytes4 magicNumber\\n );\\n\\n /// @notice Deposits (native) tokens to the DAO contract with a reference string.\\n /// @param _token The address of the token or address(0) in case of the native token.\\n /// @param _amount The amount of tokens to deposit.\\n /// @param _reference The reference describing the deposit reason.\\n function deposit(address _token, uint256 _amount, string calldata _reference) external payable;\\n\\n /// @notice Emitted when a token deposit has been made to the DAO.\\n /// @param sender The address of the sender.\\n /// @param token The address of the deposited token.\\n /// @param amount The amount of tokens deposited.\\n /// @param _reference The reference describing the deposit reason.\\n event Deposited(\\n address indexed sender,\\n address indexed token,\\n uint256 amount,\\n string _reference\\n );\\n\\n /// @notice Emitted when a native token deposit has been made to the DAO.\\n /// @dev This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).\\n /// @param sender The address of the sender.\\n /// @param amount The amount of native tokens deposited.\\n event NativeTokenDeposited(address sender, uint256 amount);\\n\\n /// @notice Setter for the trusted forwarder verifying the meta transaction.\\n /// @param _trustedForwarder The trusted forwarder address.\\n function setTrustedForwarder(address _trustedForwarder) external;\\n\\n /// @notice Getter for the trusted forwarder verifying the meta transaction.\\n /// @return The trusted forwarder address.\\n function getTrustedForwarder() external view returns (address);\\n\\n /// @notice Emitted when a new TrustedForwarder is set on the DAO.\\n /// @param forwarder the new forwarder address.\\n event TrustedForwarderSet(address forwarder);\\n\\n /// @notice Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\\n /// @param _hash The hash of the data to be signed.\\n /// @param _signature The signature byte array associated with `_hash`.\\n /// @return Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not.\\n function isValidSignature(bytes32 _hash, bytes memory _signature) external returns (bytes4);\\n\\n /// @notice Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\\n /// @param _interfaceId The ID of the interface.\\n /// @param _callbackSelector The selector of the callback function.\\n /// @param _magicNumber The magic number to be registered for the function signature.\\n function registerStandardCallback(\\n bytes4 _interfaceId,\\n bytes4 _callbackSelector,\\n bytes4 _magicNumber\\n ) external;\\n\\n /// @notice Removed function being left here to not corrupt the IDAO interface ID. Any call will revert.\\n /// @dev Introduced in v1.0.0. Removed in v1.4.0.\\n function setSignatureValidator(address) external;\\n}\\n\",\"keccak256\":\"0xb7f615523c26de042edce98731c658f44a1edb2464387ac1b642c4c69f57128e\",\"license\":\"AGPL-3.0-or-later\"},\"src/mocks/plugin/PluginCloneableMock.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\n/* solhint-disable one-contract-per-file */\\npragma solidity ^0.8.8;\\n\\nimport {PluginCloneable} from \\\"../../plugin/PluginCloneable.sol\\\";\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice A mock cloneable plugin to be deployed via the minimal proxy pattern.\\n/// v1.1 (Release 1, Build 1)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginCloneableMockBuild1 is PluginCloneable {\\n uint256 public state1;\\n\\n function initialize(IDAO _dao) external initializer {\\n __PluginCloneable_init(_dao);\\n state1 = 1;\\n }\\n}\\n\\n/// @notice A mock cloneable plugin to be deployed via the minimal proxy pattern.\\n/// v1.1 (Release 1, Build 2)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginCloneableMockBuild2 is PluginCloneable {\\n uint256 public state1;\\n uint256 public state2;\\n\\n function initialize(IDAO _dao) external initializer {\\n __PluginCloneable_init(_dao);\\n state1 = 1;\\n state2 = 2;\\n }\\n}\\n\\n/// @notice A mock cloneable plugin missing an initializer function.\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginCloneableMockBad is PluginCloneable {\\n uint256 public state1;\\n\\n function notAnInitializer(IDAO _dao) external {\\n __PluginCloneable_init(_dao);\\n state1 = 1;\\n }\\n}\\n\",\"keccak256\":\"0x1bb271f7b553040fad7907e97b860aa833aec9aefe7477e00ba7bdfd80d84e98\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/DaoAuthorizableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ContextUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\\\";\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\nimport {_auth} from \\\"./auth.sol\\\";\\n\\n/// @title DaoAuthorizableUpgradeable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract contract providing a meta-transaction compatible modifier for upgradeable or cloneable contracts to authorize function calls through an associated DAO.\\n/// @dev Make sure to call `__DaoAuthorizableUpgradeable_init` during initialization of the inheriting contract.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract DaoAuthorizableUpgradeable is ContextUpgradeable {\\n /// @notice The associated DAO managing the permissions of inheriting contracts.\\n IDAO private dao_;\\n\\n /// @notice Initializes the contract by setting the associated DAO.\\n /// @param _dao The associated DAO address.\\n // solhint-disable-next-line func-name-mixedcase\\n function __DaoAuthorizableUpgradeable_init(IDAO _dao) internal onlyInitializing {\\n dao_ = _dao;\\n }\\n\\n /// @notice Returns the DAO contract.\\n /// @return The DAO contract.\\n function dao() public view returns (IDAO) {\\n return dao_;\\n }\\n\\n /// @notice A modifier to make functions on inheriting contracts authorized. Permissions to call the function are checked through the associated DAO's permission manager.\\n /// @param _permissionId The permission identifier required to call the method this modifier is applied to.\\n modifier auth(bytes32 _permissionId) {\\n _auth(dao_, address(this), _msgSender(), _permissionId, _msgData());\\n _;\\n }\\n\\n /// @notice This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain (see [OpenZeppelin's guide about storage gaps](https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps)).\\n uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0x7fac6b01b037ba1cb9d6a22d3f43b0785037dcf496ffb672434d9bf7227d2585\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/auth.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice Thrown if a call is unauthorized in the associated DAO.\\n/// @param dao The associated DAO.\\n/// @param where The context in which the authorization reverted.\\n/// @param who The address (EOA or contract) missing the permission.\\n/// @param permissionId The permission identifier.\\nerror DaoUnauthorized(address dao, address where, address who, bytes32 permissionId);\\n\\n/// @notice A free function checking if a caller is granted permissions on a target contract via a permission identifier that redirects the approval to a `PermissionCondition` if this was specified in the setup.\\n/// @param _where The address of the target contract for which `who` receives permission.\\n/// @param _who The address (EOA or contract) owning the permission.\\n/// @param _permissionId The permission identifier.\\n/// @param _data The optional data passed to the `PermissionCondition` registered.\\n/// @custom:security-contact sirt@aragon.org\\nfunction _auth(\\n IDAO _dao,\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes calldata _data\\n) view {\\n if (!_dao.hasPermission(_where, _who, _permissionId, _data))\\n revert DaoUnauthorized({\\n dao: address(_dao),\\n where: _where,\\n who: _who,\\n permissionId: _permissionId\\n });\\n}\\n\",\"keccak256\":\"0x878764b4f87fe0651fb3798fb9cb87c952f8c6caf6ae79c7f09de84df6c00298\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/IPlugin.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IPlugin\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the traits of a plugin.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IPlugin {\\n enum PluginType {\\n UUPS,\\n Cloneable,\\n Constructable\\n }\\n\\n /// @notice Returns the plugin's type\\n function pluginType() external view returns (PluginType);\\n}\\n\",\"keccak256\":\"0xc57cd0d10b6380ab7f54c713a509e88fd8f4ad9288313a0e8e12b8887817ddfe\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/PluginCloneable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ERC165Upgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\\\";\\n\\nimport {IProtocolVersion} from \\\"../utils/versioning/IProtocolVersion.sol\\\";\\nimport {ProtocolVersion} from \\\"../utils/versioning/ProtocolVersion.sol\\\";\\nimport {DaoAuthorizableUpgradeable} from \\\"../permission/auth/DaoAuthorizableUpgradeable.sol\\\";\\nimport {IDAO} from \\\"../dao/IDAO.sol\\\";\\nimport {IPlugin} from \\\"./IPlugin.sol\\\";\\n\\n/// @title PluginCloneable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract, non-upgradeable contract to inherit from when creating a plugin being deployed via the minimal clones pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)).\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract PluginCloneable is\\n IPlugin,\\n ERC165Upgradeable,\\n DaoAuthorizableUpgradeable,\\n ProtocolVersion\\n{\\n /// @notice Disables the initializers on the implementation contract to prevent it from being left uninitialized.\\n /// @custom:oz-upgrades-unsafe-allow constructor\\n constructor() {\\n _disableInitializers();\\n }\\n\\n /// @notice Initializes the plugin by storing the associated DAO.\\n /// @param _dao The DAO contract.\\n // solhint-disable-next-line func-name-mixedcase\\n function __PluginCloneable_init(IDAO _dao) internal virtual onlyInitializing {\\n __DaoAuthorizableUpgradeable_init(_dao);\\n }\\n\\n /// @inheritdoc IPlugin\\n function pluginType() public pure override returns (PluginType) {\\n return PluginType.Cloneable;\\n }\\n\\n /// @notice Checks if this or the parent contract supports an interface by its ID.\\n /// @param _interfaceId The ID of the interface.\\n /// @return Returns `true` if the interface is supported.\\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\\n return\\n _interfaceId == type(IPlugin).interfaceId ||\\n _interfaceId == type(IProtocolVersion).interfaceId ||\\n super.supportsInterface(_interfaceId);\\n }\\n}\\n\",\"keccak256\":\"0x68e260b9b370d68252f0c707461d5e4c2188a7bfed42ed9192657b36330a1f7a\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/IProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IProtocolVersion\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the semantic Aragon OSx protocol version number.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IProtocolVersion {\\n /// @notice Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\\n /// @return _version Returns the semantic Aragon OSx protocol version number.\\n /// @dev This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\\n function protocolVersion() external view returns (uint8[3] memory _version);\\n}\\n\",\"keccak256\":\"0x00a4da654d21dc1bdadbdc8bd54bb86c378c56f85e461ccc31303628ea621361\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/ProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IProtocolVersion} from \\\"./IProtocolVersion.sol\\\";\\n\\n/// @title ProtocolVersion\\n/// @author Aragon X - 2023\\n/// @notice An abstract, stateless, non-upgradeable contract providing the current Aragon OSx protocol version number.\\n/// @dev Do not add any new variables to this contract that would shift down storage in the inheritance chain.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract ProtocolVersion is IProtocolVersion {\\n // IMPORTANT: Do not add any storage variable, see the above notice.\\n\\n /// @inheritdoc IProtocolVersion\\n function protocolVersion() public pure returns (uint8[3] memory) {\\n return [1, 4, 0];\\n }\\n}\\n\",\"keccak256\":\"0x3975c937be935f687c6b6b8f379071232681e98cf04b175d72781b819ea52bdb\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[{"astId":372,"contract":"src/mocks/plugin/PluginCloneableMock.sol:PluginCloneableMockBuild1","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":375,"contract":"src/mocks/plugin/PluginCloneableMock.sol:PluginCloneableMockBuild1","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":2821,"contract":"src/mocks/plugin/PluginCloneableMock.sol:PluginCloneableMockBuild1","label":"__gap","offset":0,"slot":"1","type":"t_array(t_uint256)50_storage"},{"astId":2592,"contract":"src/mocks/plugin/PluginCloneableMock.sol:PluginCloneableMockBuild1","label":"__gap","offset":0,"slot":"51","type":"t_array(t_uint256)50_storage"},{"astId":13111,"contract":"src/mocks/plugin/PluginCloneableMock.sol:PluginCloneableMockBuild1","label":"dao_","offset":0,"slot":"101","type":"t_contract(IDAO)10865"},{"astId":13160,"contract":"src/mocks/plugin/PluginCloneableMock.sol:PluginCloneableMockBuild1","label":"__gap","offset":0,"slot":"102","type":"t_array(t_uint256)49_storage"},{"astId":11201,"contract":"src/mocks/plugin/PluginCloneableMock.sol:PluginCloneableMockBuild1","label":"state1","offset":0,"slot":"151","type":"t_uint256"}],"types":{"t_array(t_uint256)49_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[49]","numberOfBytes":"1568"},"t_array(t_uint256)50_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[50]","numberOfBytes":"1600"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_contract(IDAO)10865":{"encoding":"inplace","label":"contract IDAO","numberOfBytes":"20"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"kind":"user","methods":{"dao()":{"notice":"Returns the DAO contract."},"pluginType()":{"notice":"Returns the plugin's type"},"protocolVersion()":{"notice":"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with."},"supportsInterface(bytes4)":{"notice":"Checks if this or the parent contract supports an interface by its ID."}},"notice":"A mock cloneable plugin to be deployed via the minimal proxy pattern. v1.1 (Release 1, Build 1)","version":1}},"PluginCloneableMockBuild2":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"inputs":[],"name":"dao","outputs":[{"internalType":"contract IDAO","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IDAO","name":"_dao","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pluginType","outputs":[{"internalType":"enum IPlugin.PluginType","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"protocolVersion","outputs":[{"internalType":"uint8[3]","name":"","type":"uint8[3]"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"state1","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"state2","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"DO NOT USE IN PRODUCTION!","kind":"dev","methods":{"dao()":{"returns":{"_0":"The DAO contract."}},"protocolVersion()":{"details":"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.","returns":{"_0":"Returns the semantic Aragon OSx protocol version number."}},"supportsInterface(bytes4)":{"params":{"_interfaceId":"The ID of the interface."},"returns":{"_0":"Returns `true` if the interface is supported."}}},"version":1},"evm":{"bytecode":{"functionDebugData":{"@_13445":{"entryPoint":null,"id":13445,"parameterSlots":0,"returnSlots":0},"@_disableInitializers_515":{"entryPoint":30,"id":515,"parameterSlots":0,"returnSlots":0},"abi_encode_tuple_t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:608:92","statements":[{"nodeType":"YulBlock","src":"6:3:92","statements":[]},{"body":{"nodeType":"YulBlock","src":"188:229:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"205:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"216:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"198:6:92"},"nodeType":"YulFunctionCall","src":"198:21:92"},"nodeType":"YulExpressionStatement","src":"198:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"239:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"250:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"235:3:92"},"nodeType":"YulFunctionCall","src":"235:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"255:2:92","type":"","value":"39"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"228:6:92"},"nodeType":"YulFunctionCall","src":"228:30:92"},"nodeType":"YulExpressionStatement","src":"228:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"278:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"289:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"274:3:92"},"nodeType":"YulFunctionCall","src":"274:18:92"},{"hexValue":"496e697469616c697a61626c653a20636f6e747261637420697320696e697469","kind":"string","nodeType":"YulLiteral","src":"294:34:92","type":"","value":"Initializable: contract is initi"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"267:6:92"},"nodeType":"YulFunctionCall","src":"267:62:92"},"nodeType":"YulExpressionStatement","src":"267:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"349:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"360:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"345:3:92"},"nodeType":"YulFunctionCall","src":"345:18:92"},{"hexValue":"616c697a696e67","kind":"string","nodeType":"YulLiteral","src":"365:9:92","type":"","value":"alizing"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"338:6:92"},"nodeType":"YulFunctionCall","src":"338:37:92"},"nodeType":"YulExpressionStatement","src":"338:37:92"},{"nodeType":"YulAssignment","src":"384:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"396:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"407:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"392:3:92"},"nodeType":"YulFunctionCall","src":"392:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"384:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"165:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"179:4:92","type":""}],"src":"14:403:92"},{"body":{"nodeType":"YulBlock","src":"519:87:92","statements":[{"nodeType":"YulAssignment","src":"529:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"541:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"552:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"537:3:92"},"nodeType":"YulFunctionCall","src":"537:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"529:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"571:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"586:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"594:4:92","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"582:3:92"},"nodeType":"YulFunctionCall","src":"582:17:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"564:6:92"},"nodeType":"YulFunctionCall","src":"564:36:92"},"nodeType":"YulExpressionStatement","src":"564:36:92"}]},"name":"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"488:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"499:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"510:4:92","type":""}],"src":"422:184:92"}]},"contents":"{\n { }\n function abi_encode_tuple_t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 39)\n mstore(add(headStart, 64), \"Initializable: contract is initi\")\n mstore(add(headStart, 96), \"alizing\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xff))\n }\n}","id":92,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"608060405234801561001057600080fd5b5061001961001e565b6100dd565b600054610100900460ff161561008a5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116146100db576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6104ee806100ec6000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806341de68301161005b57806341de6830146100e75780636accab8c146100f6578063c4d66de81461010d578063efe51cca1461012257600080fd5b806301ffc9a7146100825780632ae9c600146100aa5780634162169f146100bf575b600080fd5b61009561009036600461041e565b61012b565b60405190151581526020015b60405180910390f35b6100b261017c565b6040516100a1919061044f565b60655460405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100a1565b60016040516100a19190610483565b6100ff60975481565b6040519081526020016100a1565b61012061011b3660046104ab565b6101a6565b005b6100ff60985481565b60006001600160e01b0319821663041de68360e41b148061015b57506001600160e01b03198216621574e360e91b145b8061017657506301ffc9a760e01b6001600160e01b03198316145b92915050565b610184610400565b5060408051606081018252600181526004602082015260009181019190915290565b600054610100900460ff16158080156101c65750600054600160ff909116105b806101e05750303b1580156101e0575060005460ff166001145b6102575760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b6000805460ff19166001179055801561027a576000805461ff0019166101001790555b610283826102d7565b6001609755600260985580156102d3576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b600054610100900460ff166103425760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840161024e565b61034b8161034e565b50565b600054610100900460ff166103b95760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840161024e565b606580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60405180606001604052806003906020820280368337509192915050565b60006020828403121561043057600080fd5b81356001600160e01b03198116811461044857600080fd5b9392505050565b60608101818360005b600381101561047a57815160ff16835260209283019290910190600101610458565b50505092915050565b60208101600383106104a557634e487b7160e01b600052602160045260246000fd5b91905290565b6000602082840312156104bd57600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461044857600080fdfea164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x19 PUSH2 0x1E JUMP JUMPDEST PUSH2 0xDD JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x8A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x27 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320696E697469 PUSH1 0x44 DUP3 ADD MSTORE PUSH7 0x616C697A696E67 PUSH1 0xC8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xFF SWAP1 DUP2 AND EQ PUSH2 0xDB JUMPI PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST JUMP JUMPDEST PUSH2 0x4EE DUP1 PUSH2 0xEC PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x7D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x41DE6830 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x41DE6830 EQ PUSH2 0xE7 JUMPI DUP1 PUSH4 0x6ACCAB8C EQ PUSH2 0xF6 JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0x10D JUMPI DUP1 PUSH4 0xEFE51CCA EQ PUSH2 0x122 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x82 JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0xAA JUMPI DUP1 PUSH4 0x4162169F EQ PUSH2 0xBF JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x95 PUSH2 0x90 CALLDATASIZE PUSH1 0x4 PUSH2 0x41E JUMP JUMPDEST PUSH2 0x12B JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xB2 PUSH2 0x17C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA1 SWAP2 SWAP1 PUSH2 0x44F JUMP JUMPDEST PUSH1 0x65 SLOAD PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xA1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x40 MLOAD PUSH2 0xA1 SWAP2 SWAP1 PUSH2 0x483 JUMP JUMPDEST PUSH2 0xFF PUSH1 0x97 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xA1 JUMP JUMPDEST PUSH2 0x120 PUSH2 0x11B CALLDATASIZE PUSH1 0x4 PUSH2 0x4AB JUMP JUMPDEST PUSH2 0x1A6 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xFF PUSH1 0x98 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x41DE683 PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x15B JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x176 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x184 PUSH2 0x400 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 DUP1 ISZERO PUSH2 0x1C6 JUMPI POP PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xFF SWAP1 SWAP2 AND LT JUMPDEST DUP1 PUSH2 0x1E0 JUMPI POP ADDRESS EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1E0 JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF AND PUSH1 0x1 EQ JUMPDEST PUSH2 0x257 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x647920696E697469616C697A6564000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE DUP1 ISZERO PUSH2 0x27A JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND PUSH2 0x100 OR SWAP1 SSTORE JUMPDEST PUSH2 0x283 DUP3 PUSH2 0x2D7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x97 SSTORE PUSH1 0x2 PUSH1 0x98 SSTORE DUP1 ISZERO PUSH2 0x2D3 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x342 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x24E JUMP JUMPDEST PUSH2 0x34B DUP2 PUSH2 0x34E JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x3B9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x24E JUMP JUMPDEST PUSH1 0x65 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x430 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x448 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0x47A JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x458 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH1 0x3 DUP4 LT PUSH2 0x4A5 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 SWAP1 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x448 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"727:254:48:-:0;;;;;;;;;;;;-1:-1:-1;1131:22:74;:20;:22::i;:::-;727:254:48;;5939:280:4;6007:13;;;;;;;6006:14;5998:66;;;;-1:-1:-1;;;5998:66:4;;216:2:92;5998:66:4;;;198:21:92;255:2;235:18;;;228:30;294:34;274:18;;;267:62;-1:-1:-1;;;345:18:92;;;338:37;392:19;;5998:66:4;;;;;;;;6078:12;;6094:15;6078:12;;;:31;6074:139;;6125:12;:30;;-1:-1:-1;;6125:30:4;6140:15;6125:30;;;;;;6174:28;;564:36:92;;;6174:28:4;;552:2:92;537:18;6174:28:4;;;;;;;6074:139;5939:280::o;422:184:92:-;727:254:48;;;;;;"},"deployedBytecode":{"functionDebugData":{"@__DaoAuthorizableUpgradeable_init_13125":{"entryPoint":846,"id":13125,"parameterSlots":1,"returnSlots":0},"@__PluginCloneable_init_13459":{"entryPoint":727,"id":13459,"parameterSlots":1,"returnSlots":0},"@dao_13135":{"entryPoint":null,"id":13135,"parameterSlots":0,"returnSlots":1},"@initialize_11247":{"entryPoint":422,"id":11247,"parameterSlots":1,"returnSlots":0},"@isContract_689":{"entryPoint":null,"id":689,"parameterSlots":1,"returnSlots":1},"@pluginType_13471":{"entryPoint":null,"id":13471,"parameterSlots":0,"returnSlots":1},"@protocolVersion_14765":{"entryPoint":380,"id":14765,"parameterSlots":0,"returnSlots":1},"@state1_11224":{"entryPoint":null,"id":11224,"parameterSlots":0,"returnSlots":0},"@state2_11226":{"entryPoint":null,"id":11226,"parameterSlots":0,"returnSlots":0},"@supportsInterface_13500":{"entryPoint":299,"id":13500,"parameterSlots":1,"returnSlots":1},"@supportsInterface_2816":{"entryPoint":null,"id":2816,"parameterSlots":1,"returnSlots":1},"abi_decode_tuple_t_bytes4":{"entryPoint":1054,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_contract$_IDAO_$10865":{"entryPoint":1195,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed":{"entryPoint":1103,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_contract$_IDAO_$10865__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_enum$_PluginType_$13330__to_t_uint8__fromStack_reversed":{"entryPoint":1155,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_rational_1_by_1__to_t_uint8__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:3130:92","statements":[{"nodeType":"YulBlock","src":"6:3:92","statements":[]},{"body":{"nodeType":"YulBlock","src":"83:217:92","statements":[{"body":{"nodeType":"YulBlock","src":"129:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"138:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"141:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"131:6:92"},"nodeType":"YulFunctionCall","src":"131:12:92"},"nodeType":"YulExpressionStatement","src":"131:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"104:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"113:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"100:3:92"},"nodeType":"YulFunctionCall","src":"100:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"125:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"96:3:92"},"nodeType":"YulFunctionCall","src":"96:32:92"},"nodeType":"YulIf","src":"93:52:92"},{"nodeType":"YulVariableDeclaration","src":"154:36:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"180:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"167:12:92"},"nodeType":"YulFunctionCall","src":"167:23:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"158:5:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"254:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"263:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"266:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"256:6:92"},"nodeType":"YulFunctionCall","src":"256:12:92"},"nodeType":"YulExpressionStatement","src":"256:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"212:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"223:5:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"234:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"239:10:92","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"230:3:92"},"nodeType":"YulFunctionCall","src":"230:20:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"219:3:92"},"nodeType":"YulFunctionCall","src":"219:32:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"209:2:92"},"nodeType":"YulFunctionCall","src":"209:43:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"202:6:92"},"nodeType":"YulFunctionCall","src":"202:51:92"},"nodeType":"YulIf","src":"199:71:92"},{"nodeType":"YulAssignment","src":"279:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"289:5:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"279:6:92"}]}]},"name":"abi_decode_tuple_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"49:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"60:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"72:6:92","type":""}],"src":"14:286:92"},{"body":{"nodeType":"YulBlock","src":"400:92:92","statements":[{"nodeType":"YulAssignment","src":"410:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"422:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"433:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"418:3:92"},"nodeType":"YulFunctionCall","src":"418:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"410:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"452:9:92"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"477:6:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"470:6:92"},"nodeType":"YulFunctionCall","src":"470:14:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"463:6:92"},"nodeType":"YulFunctionCall","src":"463:22:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"445:6:92"},"nodeType":"YulFunctionCall","src":"445:41:92"},"nodeType":"YulExpressionStatement","src":"445:41:92"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"369:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"380:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"391:4:92","type":""}],"src":"305:187:92"},{"body":{"nodeType":"YulBlock","src":"640:358:92","statements":[{"nodeType":"YulAssignment","src":"650:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"662:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"673:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"658:3:92"},"nodeType":"YulFunctionCall","src":"658:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"650:4:92"}]},{"nodeType":"YulVariableDeclaration","src":"685:20:92","value":{"name":"headStart","nodeType":"YulIdentifier","src":"696:9:92"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"689:3:92","type":""}]},{"nodeType":"YulAssignment","src":"714:16:92","value":{"name":"headStart","nodeType":"YulIdentifier","src":"721:9:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"714:3:92"}]},{"nodeType":"YulVariableDeclaration","src":"739:20:92","value":{"name":"value0","nodeType":"YulIdentifier","src":"753:6:92"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"743:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"768:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"777:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"772:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"834:158:92","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"855:3:92"},{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"870:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"864:5:92"},"nodeType":"YulFunctionCall","src":"864:13:92"},{"kind":"number","nodeType":"YulLiteral","src":"879:4:92","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"860:3:92"},"nodeType":"YulFunctionCall","src":"860:24:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"848:6:92"},"nodeType":"YulFunctionCall","src":"848:37:92"},"nodeType":"YulExpressionStatement","src":"848:37:92"},{"nodeType":"YulVariableDeclaration","src":"898:14:92","value":{"kind":"number","nodeType":"YulLiteral","src":"908:4:92","type":"","value":"0x20"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"902:2:92","type":""}]},{"nodeType":"YulAssignment","src":"925:19:92","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"936:3:92"},{"name":"_1","nodeType":"YulIdentifier","src":"941:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"932:3:92"},"nodeType":"YulFunctionCall","src":"932:12:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"925:3:92"}]},{"nodeType":"YulAssignment","src":"957:25:92","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"971:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"979:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"967:3:92"},"nodeType":"YulFunctionCall","src":"967:15:92"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"957:6:92"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"798:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"801:4:92","type":"","value":"0x03"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"795:2:92"},"nodeType":"YulFunctionCall","src":"795:11:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"807:18:92","statements":[{"nodeType":"YulAssignment","src":"809:14:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"818:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"821:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"814:3:92"},"nodeType":"YulFunctionCall","src":"814:9:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"809:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"791:3:92","statements":[]},"src":"787:205:92"}]},"name":"abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"609:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"620:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"631:4:92","type":""}],"src":"497:501:92"},{"body":{"nodeType":"YulBlock","src":"1118:125:92","statements":[{"nodeType":"YulAssignment","src":"1128:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1140:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1151:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1136:3:92"},"nodeType":"YulFunctionCall","src":"1136:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1128:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1170:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1185:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"1193:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1181:3:92"},"nodeType":"YulFunctionCall","src":"1181:55:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1163:6:92"},"nodeType":"YulFunctionCall","src":"1163:74:92"},"nodeType":"YulExpressionStatement","src":"1163:74:92"}]},"name":"abi_encode_tuple_t_contract$_IDAO_$10865__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1087:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1098:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1109:4:92","type":""}],"src":"1003:240:92"},{"body":{"nodeType":"YulBlock","src":"1363:229:92","statements":[{"nodeType":"YulAssignment","src":"1373:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1385:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1396:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1381:3:92"},"nodeType":"YulFunctionCall","src":"1381:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1373:4:92"}]},{"body":{"nodeType":"YulBlock","src":"1441:111:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1462:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1469:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"1474:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1465:3:92"},"nodeType":"YulFunctionCall","src":"1465:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1455:6:92"},"nodeType":"YulFunctionCall","src":"1455:31:92"},"nodeType":"YulExpressionStatement","src":"1455:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1506:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"1509:4:92","type":"","value":"0x21"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1499:6:92"},"nodeType":"YulFunctionCall","src":"1499:15:92"},"nodeType":"YulExpressionStatement","src":"1499:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1534:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1537:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1527:6:92"},"nodeType":"YulFunctionCall","src":"1527:15:92"},"nodeType":"YulExpressionStatement","src":"1527:15:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1421:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"1429:1:92","type":"","value":"3"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"1418:2:92"},"nodeType":"YulFunctionCall","src":"1418:13:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1411:6:92"},"nodeType":"YulFunctionCall","src":"1411:21:92"},"nodeType":"YulIf","src":"1408:144:92"},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1568:9:92"},{"name":"value0","nodeType":"YulIdentifier","src":"1579:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1561:6:92"},"nodeType":"YulFunctionCall","src":"1561:25:92"},"nodeType":"YulExpressionStatement","src":"1561:25:92"}]},"name":"abi_encode_tuple_t_enum$_PluginType_$13330__to_t_uint8__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1332:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1343:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1354:4:92","type":""}],"src":"1248:344:92"},{"body":{"nodeType":"YulBlock","src":"1698:76:92","statements":[{"nodeType":"YulAssignment","src":"1708:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1720:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1731:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1716:3:92"},"nodeType":"YulFunctionCall","src":"1716:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1708:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1750:9:92"},{"name":"value0","nodeType":"YulIdentifier","src":"1761:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1743:6:92"},"nodeType":"YulFunctionCall","src":"1743:25:92"},"nodeType":"YulExpressionStatement","src":"1743:25:92"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1667:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1678:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1689:4:92","type":""}],"src":"1597:177:92"},{"body":{"nodeType":"YulBlock","src":"1863:239:92","statements":[{"body":{"nodeType":"YulBlock","src":"1909:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1918:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1921:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1911:6:92"},"nodeType":"YulFunctionCall","src":"1911:12:92"},"nodeType":"YulExpressionStatement","src":"1911:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1884:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"1893:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1880:3:92"},"nodeType":"YulFunctionCall","src":"1880:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"1905:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1876:3:92"},"nodeType":"YulFunctionCall","src":"1876:32:92"},"nodeType":"YulIf","src":"1873:52:92"},{"nodeType":"YulVariableDeclaration","src":"1934:36:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1960:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1947:12:92"},"nodeType":"YulFunctionCall","src":"1947:23:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"1938:5:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"2056:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2065:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2068:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2058:6:92"},"nodeType":"YulFunctionCall","src":"2058:12:92"},"nodeType":"YulExpressionStatement","src":"2058:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1992:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2003:5:92"},{"kind":"number","nodeType":"YulLiteral","src":"2010:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1999:3:92"},"nodeType":"YulFunctionCall","src":"1999:54:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1989:2:92"},"nodeType":"YulFunctionCall","src":"1989:65:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1982:6:92"},"nodeType":"YulFunctionCall","src":"1982:73:92"},"nodeType":"YulIf","src":"1979:93:92"},{"nodeType":"YulAssignment","src":"2081:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"2091:5:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2081:6:92"}]}]},"name":"abi_decode_tuple_t_contract$_IDAO_$10865","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1829:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1840:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1852:6:92","type":""}],"src":"1779:323:92"},{"body":{"nodeType":"YulBlock","src":"2281:236:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2298:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2309:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2291:6:92"},"nodeType":"YulFunctionCall","src":"2291:21:92"},"nodeType":"YulExpressionStatement","src":"2291:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2332:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2343:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2328:3:92"},"nodeType":"YulFunctionCall","src":"2328:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"2348:2:92","type":"","value":"46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2321:6:92"},"nodeType":"YulFunctionCall","src":"2321:30:92"},"nodeType":"YulExpressionStatement","src":"2321:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2371:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2382:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2367:3:92"},"nodeType":"YulFunctionCall","src":"2367:18:92"},{"hexValue":"496e697469616c697a61626c653a20636f6e747261637420697320616c726561","kind":"string","nodeType":"YulLiteral","src":"2387:34:92","type":"","value":"Initializable: contract is alrea"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2360:6:92"},"nodeType":"YulFunctionCall","src":"2360:62:92"},"nodeType":"YulExpressionStatement","src":"2360:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2442:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2453:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2438:3:92"},"nodeType":"YulFunctionCall","src":"2438:18:92"},{"hexValue":"647920696e697469616c697a6564","kind":"string","nodeType":"YulLiteral","src":"2458:16:92","type":"","value":"dy initialized"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2431:6:92"},"nodeType":"YulFunctionCall","src":"2431:44:92"},"nodeType":"YulExpressionStatement","src":"2431:44:92"},{"nodeType":"YulAssignment","src":"2484:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2496:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2507:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2492:3:92"},"nodeType":"YulFunctionCall","src":"2492:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2484:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2258:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2272:4:92","type":""}],"src":"2107:410:92"},{"body":{"nodeType":"YulBlock","src":"2629:87:92","statements":[{"nodeType":"YulAssignment","src":"2639:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2651:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2662:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2647:3:92"},"nodeType":"YulFunctionCall","src":"2647:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2639:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2681:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2696:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"2704:4:92","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2692:3:92"},"nodeType":"YulFunctionCall","src":"2692:17:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2674:6:92"},"nodeType":"YulFunctionCall","src":"2674:36:92"},"nodeType":"YulExpressionStatement","src":"2674:36:92"}]},"name":"abi_encode_tuple_t_rational_1_by_1__to_t_uint8__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2598:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"2609:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2620:4:92","type":""}],"src":"2522:194:92"},{"body":{"nodeType":"YulBlock","src":"2895:233:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2912:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2923:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2905:6:92"},"nodeType":"YulFunctionCall","src":"2905:21:92"},"nodeType":"YulExpressionStatement","src":"2905:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2946:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2957:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2942:3:92"},"nodeType":"YulFunctionCall","src":"2942:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"2962:2:92","type":"","value":"43"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2935:6:92"},"nodeType":"YulFunctionCall","src":"2935:30:92"},"nodeType":"YulExpressionStatement","src":"2935:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2985:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2996:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2981:3:92"},"nodeType":"YulFunctionCall","src":"2981:18:92"},{"hexValue":"496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069","kind":"string","nodeType":"YulLiteral","src":"3001:34:92","type":"","value":"Initializable: contract is not i"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2974:6:92"},"nodeType":"YulFunctionCall","src":"2974:62:92"},"nodeType":"YulExpressionStatement","src":"2974:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3056:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3067:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3052:3:92"},"nodeType":"YulFunctionCall","src":"3052:18:92"},{"hexValue":"6e697469616c697a696e67","kind":"string","nodeType":"YulLiteral","src":"3072:13:92","type":"","value":"nitializing"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3045:6:92"},"nodeType":"YulFunctionCall","src":"3045:41:92"},"nodeType":"YulExpressionStatement","src":"3045:41:92"},{"nodeType":"YulAssignment","src":"3095:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3107:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3118:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3103:3:92"},"nodeType":"YulFunctionCall","src":"3103:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3095:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2872:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2886:4:92","type":""}],"src":"2721:407:92"}]},"contents":"{\n { }\n function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n if iszero(eq(value, and(value, shl(224, 0xffffffff)))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 96)\n let pos := headStart\n pos := headStart\n let srcPtr := value0\n let i := 0\n for { } lt(i, 0x03) { i := add(i, 1) }\n {\n mstore(pos, and(mload(srcPtr), 0xff))\n let _1 := 0x20\n pos := add(pos, _1)\n srcPtr := add(srcPtr, _1)\n }\n }\n function abi_encode_tuple_t_contract$_IDAO_$10865__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_encode_tuple_t_enum$_PluginType_$13330__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n if iszero(lt(value0, 3))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x21)\n revert(0, 0x24)\n }\n mstore(headStart, value0)\n }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_decode_tuple_t_contract$_IDAO_$10865(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 46)\n mstore(add(headStart, 64), \"Initializable: contract is alrea\")\n mstore(add(headStart, 96), \"dy initialized\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_rational_1_by_1__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xff))\n }\n function abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 43)\n mstore(add(headStart, 64), \"Initializable: contract is not i\")\n mstore(add(headStart, 96), \"nitializing\")\n tail := add(headStart, 128)\n }\n}","id":92,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b506004361061007d5760003560e01c806341de68301161005b57806341de6830146100e75780636accab8c146100f6578063c4d66de81461010d578063efe51cca1461012257600080fd5b806301ffc9a7146100825780632ae9c600146100aa5780634162169f146100bf575b600080fd5b61009561009036600461041e565b61012b565b60405190151581526020015b60405180910390f35b6100b261017c565b6040516100a1919061044f565b60655460405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100a1565b60016040516100a19190610483565b6100ff60975481565b6040519081526020016100a1565b61012061011b3660046104ab565b6101a6565b005b6100ff60985481565b60006001600160e01b0319821663041de68360e41b148061015b57506001600160e01b03198216621574e360e91b145b8061017657506301ffc9a760e01b6001600160e01b03198316145b92915050565b610184610400565b5060408051606081018252600181526004602082015260009181019190915290565b600054610100900460ff16158080156101c65750600054600160ff909116105b806101e05750303b1580156101e0575060005460ff166001145b6102575760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b6000805460ff19166001179055801561027a576000805461ff0019166101001790555b610283826102d7565b6001609755600260985580156102d3576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b600054610100900460ff166103425760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840161024e565b61034b8161034e565b50565b600054610100900460ff166103b95760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840161024e565b606580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60405180606001604052806003906020820280368337509192915050565b60006020828403121561043057600080fd5b81356001600160e01b03198116811461044857600080fd5b9392505050565b60608101818360005b600381101561047a57815160ff16835260209283019290910190600101610458565b50505092915050565b60208101600383106104a557634e487b7160e01b600052602160045260246000fd5b91905290565b6000602082840312156104bd57600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461044857600080fdfea164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x7D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x41DE6830 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x41DE6830 EQ PUSH2 0xE7 JUMPI DUP1 PUSH4 0x6ACCAB8C EQ PUSH2 0xF6 JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0x10D JUMPI DUP1 PUSH4 0xEFE51CCA EQ PUSH2 0x122 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x82 JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0xAA JUMPI DUP1 PUSH4 0x4162169F EQ PUSH2 0xBF JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x95 PUSH2 0x90 CALLDATASIZE PUSH1 0x4 PUSH2 0x41E JUMP JUMPDEST PUSH2 0x12B JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xB2 PUSH2 0x17C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA1 SWAP2 SWAP1 PUSH2 0x44F JUMP JUMPDEST PUSH1 0x65 SLOAD PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xA1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x40 MLOAD PUSH2 0xA1 SWAP2 SWAP1 PUSH2 0x483 JUMP JUMPDEST PUSH2 0xFF PUSH1 0x97 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xA1 JUMP JUMPDEST PUSH2 0x120 PUSH2 0x11B CALLDATASIZE PUSH1 0x4 PUSH2 0x4AB JUMP JUMPDEST PUSH2 0x1A6 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xFF PUSH1 0x98 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x41DE683 PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x15B JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x176 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x184 PUSH2 0x400 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 DUP1 ISZERO PUSH2 0x1C6 JUMPI POP PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xFF SWAP1 SWAP2 AND LT JUMPDEST DUP1 PUSH2 0x1E0 JUMPI POP ADDRESS EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1E0 JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF AND PUSH1 0x1 EQ JUMPDEST PUSH2 0x257 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x647920696E697469616C697A6564000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE DUP1 ISZERO PUSH2 0x27A JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND PUSH2 0x100 OR SWAP1 SSTORE JUMPDEST PUSH2 0x283 DUP3 PUSH2 0x2D7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x97 SSTORE PUSH1 0x2 PUSH1 0x98 SSTORE DUP1 ISZERO PUSH2 0x2D3 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x342 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x24E JUMP JUMPDEST PUSH2 0x34B DUP2 PUSH2 0x34E JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x3B9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x24E JUMP JUMPDEST PUSH1 0x65 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x430 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x448 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0x47A JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x458 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH1 0x3 DUP4 LT PUSH2 0x4A5 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 SWAP1 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x448 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"727:254:48:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1810:288:74;;;;;;:::i;:::-;;:::i;:::-;;;470:14:92;;463:22;445:41;;433:2;418:18;1810:288:74;;;;;;;;631:98:90;;;:::i;:::-;;;;;;;:::i;1200:70:67:-;1259:4;;1200:70;;1259:4;;;;1163:74:92;;1151:2;1136:18;1200:70:67;1003:240:92;1494:108:74;1575:20;1494:108;;;;;;:::i;787:21:48:-;;;;;;;;;1743:25:92;;;1731:2;1716:18;787:21:48;1597:177:92;842:137:48;;;;;;:::i;:::-;;:::i;:::-;;814:21;;;;;;1810:288:74;1896:4;-1:-1:-1;;;;;;1931:41:74;;-1:-1:-1;;;1931:41:74;;:107;;-1:-1:-1;;;;;;;1988:50:74;;-1:-1:-1;;;1988:50:74;1931:107;:160;;;-1:-1:-1;;;;;;;;;;1189:51:11;;;2054:37:74;1912:179;1810:288;-1:-1:-1;;1810:288:74:o;631:98:90:-;679:15;;:::i;:::-;-1:-1:-1;706:16:90;;;;;;;;714:1;706:16;;717:1;706:16;;;;-1:-1:-1;706:16:90;;;;;;;;631:98::o;842:137:48:-;3279:19:4;3302:13;;;;;;3301:14;;3347:34;;;;-1:-1:-1;3365:12:4;;3380:1;3365:12;;;;:16;3347:34;3346:108;;;-1:-1:-1;3426:4:4;1713:19:6;:23;;;3387:66:4;;-1:-1:-1;3436:12:4;;;;;:17;3387:66;3325:201;;;;-1:-1:-1;;;3325:201:4;;2309:2:92;3325:201:4;;;2291:21:92;2348:2;2328:18;;;2321:30;2387:34;2367:18;;;2360:62;2458:16;2438:18;;;2431:44;2492:19;;3325:201:4;;;;;;;;;3536:12;:16;;-1:-1:-1;;3536:16:4;3551:1;3536:16;;;3562:65;;;;3596:13;:20;;-1:-1:-1;;3596:20:4;;;;;3562:65;904:28:48::1;927:4;904:22;:28::i;:::-;951:1;942:6;:10:::0;971:1:::1;962:6;:10:::0;3647:99:4;;;;3697:5;3681:21;;-1:-1:-1;;3681:21:4;;;3721:14;;-1:-1:-1;2674:36:92;;3721:14:4;;2662:2:92;2647:18;3721:14:4;;;;;;;3647:99;3269:483;842:137:48;:::o;1327:133:74:-;5374:13:4;;;;;;;5366:69;;;;-1:-1:-1;;;5366:69:4;;2923:2:92;5366:69:4;;;2905:21:92;2962:2;2942:18;;;2935:30;3001:34;2981:18;;;2974:62;-1:-1:-1;;;3052:18:92;;;3045:41;3103:19;;5366:69:4;2721:407:92;5366:69:4;1414:39:74::1;1448:4;1414:33;:39::i;:::-;1327:133:::0;:::o;1010:108:67:-;5374:13:4;;;;;;;5366:69;;;;-1:-1:-1;;;5366:69:4;;2923:2:92;5366:69:4;;;2905:21:92;2962:2;2942:18;;;2935:30;3001:34;2981:18;;;2974:62;-1:-1:-1;;;3052:18:92;;;3045:41;3103:19;;5366:69:4;2721:407:92;5366:69:4;1100:4:67::1;:11:::0;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;1010:108::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:286:92:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:92;;209:43;;199:71;;266:1;263;256:12;199:71;289:5;14:286;-1:-1:-1;;;14:286:92:o;497:501::-;673:2;658:18;;662:9;753:6;631:4;787:205;801:4;798:1;795:11;787:205;;;864:13;;879:4;860:24;848:37;;908:4;932:12;;;;967:15;;;;821:1;814:9;787:205;;;791:3;;;497:501;;;;:::o;1248:344::-;1396:2;1381:18;;1429:1;1418:13;;1408:144;;1474:10;1469:3;1465:20;1462:1;1455:31;1509:4;1506:1;1499:15;1537:4;1534:1;1527:15;1408:144;1561:25;;;1248:344;:::o;1779:323::-;1852:6;1905:2;1893:9;1884:7;1880:23;1876:32;1873:52;;;1921:1;1918;1911:12;1873:52;1960:9;1947:23;2010:42;2003:5;1999:54;1992:5;1989:65;1979:93;;2068:1;2065;2058:12"},"gasEstimates":{"creation":{"codeDepositCost":"252400","executionCost":"29883","totalCost":"282283"},"external":{"dao()":"2334","initialize(address)":"155887","pluginType()":"227","protocolVersion()":"infinite","state1()":"2317","state2()":"2361","supportsInterface(bytes4)":"482"}},"methodIdentifiers":{"dao()":"4162169f","initialize(address)":"c4d66de8","pluginType()":"41de6830","protocolVersion()":"2ae9c600","state1()":"6accab8c","state2()":"efe51cca","supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"dao\",\"outputs\":[{\"internalType\":\"contract IDAO\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IDAO\",\"name\":\"_dao\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pluginType\",\"outputs\":[{\"internalType\":\"enum IPlugin.PluginType\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"protocolVersion\",\"outputs\":[{\"internalType\":\"uint8[3]\",\"name\":\"\",\"type\":\"uint8[3]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"state1\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"state2\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"DO NOT USE IN PRODUCTION!\",\"kind\":\"dev\",\"methods\":{\"dao()\":{\"returns\":{\"_0\":\"The DAO contract.\"}},\"protocolVersion()\":{\"details\":\"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\",\"returns\":{\"_0\":\"Returns the semantic Aragon OSx protocol version number.\"}},\"supportsInterface(bytes4)\":{\"params\":{\"_interfaceId\":\"The ID of the interface.\"},\"returns\":{\"_0\":\"Returns `true` if the interface is supported.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"dao()\":{\"notice\":\"Returns the DAO contract.\"},\"pluginType()\":{\"notice\":\"Returns the plugin's type\"},\"protocolVersion()\":{\"notice\":\"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Checks if this or the parent contract supports an interface by its ID.\"}},\"notice\":\"A mock cloneable plugin to be deployed via the minimal proxy pattern. v1.1 (Release 1, Build 2)\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/mocks/plugin/PluginCloneableMock.sol\":\"PluginCloneableMockBuild2\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n function __Context_init() internal onlyInitializing {\\n }\\n\\n function __Context_init_unchained() internal onlyInitializing {\\n }\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n function _contextSuffixLength() internal view virtual returns (uint256) {\\n return 0;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x75097e35253e7fb282ee4d7f27a80eaacfa759923185bf17302a89cbc059c5ef\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165Upgradeable.sol\\\";\\nimport {Initializable} from \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165Upgradeable is Initializable, IERC165Upgradeable {\\n function __ERC165_init() internal onlyInitializing {\\n }\\n\\n function __ERC165_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165Upgradeable).interfaceId;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0xd90d7723512df65ae417adaf0801042940f0dabd60039ceeaffe34aa5b238da1\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165Upgradeable {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\"},\"src/dao/IDAO.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IDAO\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for DAOs within the Aragon App DAO framework.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IDAO {\\n /// @notice The action struct to be consumed by the DAO's `execute` function resulting in an external call.\\n /// @param to The address to call.\\n /// @param value The native token value to be sent with the call.\\n /// @param data The bytes-encoded function selector and calldata for the call.\\n struct Action {\\n address to;\\n uint256 value;\\n bytes data;\\n }\\n\\n /// @notice Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\\n /// @param _where The address of the contract.\\n /// @param _who The address of a EOA or contract to give the permissions.\\n /// @param _permissionId The permission identifier.\\n /// @param _data The optional data passed to the `PermissionCondition` registered.\\n /// @return Returns true if the address has permission, false if not.\\n function hasPermission(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes memory _data\\n ) external view returns (bool);\\n\\n /// @notice Updates the DAO metadata (e.g., an IPFS hash).\\n /// @param _metadata The IPFS hash of the new metadata object.\\n function setMetadata(bytes calldata _metadata) external;\\n\\n /// @notice Emitted when the DAO metadata is updated.\\n /// @param metadata The IPFS hash of the new metadata object.\\n event MetadataSet(bytes metadata);\\n\\n /// @notice Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted.\\n /// @param _callId The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce.\\n /// @param _actions The array of actions.\\n /// @param _allowFailureMap A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @return The array of results obtained from the executed actions in `bytes`.\\n /// @return The resulting failure map containing the actions have actually failed.\\n function execute(\\n bytes32 _callId,\\n Action[] memory _actions,\\n uint256 _allowFailureMap\\n ) external returns (bytes[] memory, uint256);\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param actor The address of the caller.\\n /// @param callId The ID of the call.\\n /// @param actions The array of actions executed.\\n /// @param allowFailureMap The allow failure map encoding which actions are allowed to fail.\\n /// @param failureMap The failure map encoding which actions have failed.\\n /// @param execResults The array with the results of the executed actions.\\n /// @dev The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce.\\n event Executed(\\n address indexed actor,\\n bytes32 callId,\\n Action[] actions,\\n uint256 allowFailureMap,\\n uint256 failureMap,\\n bytes[] execResults\\n );\\n\\n /// @notice Emitted when a standard callback is registered.\\n /// @param interfaceId The ID of the interface.\\n /// @param callbackSelector The selector of the callback function.\\n /// @param magicNumber The magic number to be registered for the callback function selector.\\n event StandardCallbackRegistered(\\n bytes4 interfaceId,\\n bytes4 callbackSelector,\\n bytes4 magicNumber\\n );\\n\\n /// @notice Deposits (native) tokens to the DAO contract with a reference string.\\n /// @param _token The address of the token or address(0) in case of the native token.\\n /// @param _amount The amount of tokens to deposit.\\n /// @param _reference The reference describing the deposit reason.\\n function deposit(address _token, uint256 _amount, string calldata _reference) external payable;\\n\\n /// @notice Emitted when a token deposit has been made to the DAO.\\n /// @param sender The address of the sender.\\n /// @param token The address of the deposited token.\\n /// @param amount The amount of tokens deposited.\\n /// @param _reference The reference describing the deposit reason.\\n event Deposited(\\n address indexed sender,\\n address indexed token,\\n uint256 amount,\\n string _reference\\n );\\n\\n /// @notice Emitted when a native token deposit has been made to the DAO.\\n /// @dev This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).\\n /// @param sender The address of the sender.\\n /// @param amount The amount of native tokens deposited.\\n event NativeTokenDeposited(address sender, uint256 amount);\\n\\n /// @notice Setter for the trusted forwarder verifying the meta transaction.\\n /// @param _trustedForwarder The trusted forwarder address.\\n function setTrustedForwarder(address _trustedForwarder) external;\\n\\n /// @notice Getter for the trusted forwarder verifying the meta transaction.\\n /// @return The trusted forwarder address.\\n function getTrustedForwarder() external view returns (address);\\n\\n /// @notice Emitted when a new TrustedForwarder is set on the DAO.\\n /// @param forwarder the new forwarder address.\\n event TrustedForwarderSet(address forwarder);\\n\\n /// @notice Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\\n /// @param _hash The hash of the data to be signed.\\n /// @param _signature The signature byte array associated with `_hash`.\\n /// @return Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not.\\n function isValidSignature(bytes32 _hash, bytes memory _signature) external returns (bytes4);\\n\\n /// @notice Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\\n /// @param _interfaceId The ID of the interface.\\n /// @param _callbackSelector The selector of the callback function.\\n /// @param _magicNumber The magic number to be registered for the function signature.\\n function registerStandardCallback(\\n bytes4 _interfaceId,\\n bytes4 _callbackSelector,\\n bytes4 _magicNumber\\n ) external;\\n\\n /// @notice Removed function being left here to not corrupt the IDAO interface ID. Any call will revert.\\n /// @dev Introduced in v1.0.0. Removed in v1.4.0.\\n function setSignatureValidator(address) external;\\n}\\n\",\"keccak256\":\"0xb7f615523c26de042edce98731c658f44a1edb2464387ac1b642c4c69f57128e\",\"license\":\"AGPL-3.0-or-later\"},\"src/mocks/plugin/PluginCloneableMock.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\n/* solhint-disable one-contract-per-file */\\npragma solidity ^0.8.8;\\n\\nimport {PluginCloneable} from \\\"../../plugin/PluginCloneable.sol\\\";\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice A mock cloneable plugin to be deployed via the minimal proxy pattern.\\n/// v1.1 (Release 1, Build 1)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginCloneableMockBuild1 is PluginCloneable {\\n uint256 public state1;\\n\\n function initialize(IDAO _dao) external initializer {\\n __PluginCloneable_init(_dao);\\n state1 = 1;\\n }\\n}\\n\\n/// @notice A mock cloneable plugin to be deployed via the minimal proxy pattern.\\n/// v1.1 (Release 1, Build 2)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginCloneableMockBuild2 is PluginCloneable {\\n uint256 public state1;\\n uint256 public state2;\\n\\n function initialize(IDAO _dao) external initializer {\\n __PluginCloneable_init(_dao);\\n state1 = 1;\\n state2 = 2;\\n }\\n}\\n\\n/// @notice A mock cloneable plugin missing an initializer function.\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginCloneableMockBad is PluginCloneable {\\n uint256 public state1;\\n\\n function notAnInitializer(IDAO _dao) external {\\n __PluginCloneable_init(_dao);\\n state1 = 1;\\n }\\n}\\n\",\"keccak256\":\"0x1bb271f7b553040fad7907e97b860aa833aec9aefe7477e00ba7bdfd80d84e98\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/DaoAuthorizableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ContextUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\\\";\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\nimport {_auth} from \\\"./auth.sol\\\";\\n\\n/// @title DaoAuthorizableUpgradeable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract contract providing a meta-transaction compatible modifier for upgradeable or cloneable contracts to authorize function calls through an associated DAO.\\n/// @dev Make sure to call `__DaoAuthorizableUpgradeable_init` during initialization of the inheriting contract.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract DaoAuthorizableUpgradeable is ContextUpgradeable {\\n /// @notice The associated DAO managing the permissions of inheriting contracts.\\n IDAO private dao_;\\n\\n /// @notice Initializes the contract by setting the associated DAO.\\n /// @param _dao The associated DAO address.\\n // solhint-disable-next-line func-name-mixedcase\\n function __DaoAuthorizableUpgradeable_init(IDAO _dao) internal onlyInitializing {\\n dao_ = _dao;\\n }\\n\\n /// @notice Returns the DAO contract.\\n /// @return The DAO contract.\\n function dao() public view returns (IDAO) {\\n return dao_;\\n }\\n\\n /// @notice A modifier to make functions on inheriting contracts authorized. Permissions to call the function are checked through the associated DAO's permission manager.\\n /// @param _permissionId The permission identifier required to call the method this modifier is applied to.\\n modifier auth(bytes32 _permissionId) {\\n _auth(dao_, address(this), _msgSender(), _permissionId, _msgData());\\n _;\\n }\\n\\n /// @notice This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain (see [OpenZeppelin's guide about storage gaps](https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps)).\\n uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0x7fac6b01b037ba1cb9d6a22d3f43b0785037dcf496ffb672434d9bf7227d2585\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/auth.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice Thrown if a call is unauthorized in the associated DAO.\\n/// @param dao The associated DAO.\\n/// @param where The context in which the authorization reverted.\\n/// @param who The address (EOA or contract) missing the permission.\\n/// @param permissionId The permission identifier.\\nerror DaoUnauthorized(address dao, address where, address who, bytes32 permissionId);\\n\\n/// @notice A free function checking if a caller is granted permissions on a target contract via a permission identifier that redirects the approval to a `PermissionCondition` if this was specified in the setup.\\n/// @param _where The address of the target contract for which `who` receives permission.\\n/// @param _who The address (EOA or contract) owning the permission.\\n/// @param _permissionId The permission identifier.\\n/// @param _data The optional data passed to the `PermissionCondition` registered.\\n/// @custom:security-contact sirt@aragon.org\\nfunction _auth(\\n IDAO _dao,\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes calldata _data\\n) view {\\n if (!_dao.hasPermission(_where, _who, _permissionId, _data))\\n revert DaoUnauthorized({\\n dao: address(_dao),\\n where: _where,\\n who: _who,\\n permissionId: _permissionId\\n });\\n}\\n\",\"keccak256\":\"0x878764b4f87fe0651fb3798fb9cb87c952f8c6caf6ae79c7f09de84df6c00298\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/IPlugin.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IPlugin\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the traits of a plugin.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IPlugin {\\n enum PluginType {\\n UUPS,\\n Cloneable,\\n Constructable\\n }\\n\\n /// @notice Returns the plugin's type\\n function pluginType() external view returns (PluginType);\\n}\\n\",\"keccak256\":\"0xc57cd0d10b6380ab7f54c713a509e88fd8f4ad9288313a0e8e12b8887817ddfe\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/PluginCloneable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ERC165Upgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\\\";\\n\\nimport {IProtocolVersion} from \\\"../utils/versioning/IProtocolVersion.sol\\\";\\nimport {ProtocolVersion} from \\\"../utils/versioning/ProtocolVersion.sol\\\";\\nimport {DaoAuthorizableUpgradeable} from \\\"../permission/auth/DaoAuthorizableUpgradeable.sol\\\";\\nimport {IDAO} from \\\"../dao/IDAO.sol\\\";\\nimport {IPlugin} from \\\"./IPlugin.sol\\\";\\n\\n/// @title PluginCloneable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract, non-upgradeable contract to inherit from when creating a plugin being deployed via the minimal clones pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)).\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract PluginCloneable is\\n IPlugin,\\n ERC165Upgradeable,\\n DaoAuthorizableUpgradeable,\\n ProtocolVersion\\n{\\n /// @notice Disables the initializers on the implementation contract to prevent it from being left uninitialized.\\n /// @custom:oz-upgrades-unsafe-allow constructor\\n constructor() {\\n _disableInitializers();\\n }\\n\\n /// @notice Initializes the plugin by storing the associated DAO.\\n /// @param _dao The DAO contract.\\n // solhint-disable-next-line func-name-mixedcase\\n function __PluginCloneable_init(IDAO _dao) internal virtual onlyInitializing {\\n __DaoAuthorizableUpgradeable_init(_dao);\\n }\\n\\n /// @inheritdoc IPlugin\\n function pluginType() public pure override returns (PluginType) {\\n return PluginType.Cloneable;\\n }\\n\\n /// @notice Checks if this or the parent contract supports an interface by its ID.\\n /// @param _interfaceId The ID of the interface.\\n /// @return Returns `true` if the interface is supported.\\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\\n return\\n _interfaceId == type(IPlugin).interfaceId ||\\n _interfaceId == type(IProtocolVersion).interfaceId ||\\n super.supportsInterface(_interfaceId);\\n }\\n}\\n\",\"keccak256\":\"0x68e260b9b370d68252f0c707461d5e4c2188a7bfed42ed9192657b36330a1f7a\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/IProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IProtocolVersion\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the semantic Aragon OSx protocol version number.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IProtocolVersion {\\n /// @notice Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\\n /// @return _version Returns the semantic Aragon OSx protocol version number.\\n /// @dev This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\\n function protocolVersion() external view returns (uint8[3] memory _version);\\n}\\n\",\"keccak256\":\"0x00a4da654d21dc1bdadbdc8bd54bb86c378c56f85e461ccc31303628ea621361\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/ProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IProtocolVersion} from \\\"./IProtocolVersion.sol\\\";\\n\\n/// @title ProtocolVersion\\n/// @author Aragon X - 2023\\n/// @notice An abstract, stateless, non-upgradeable contract providing the current Aragon OSx protocol version number.\\n/// @dev Do not add any new variables to this contract that would shift down storage in the inheritance chain.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract ProtocolVersion is IProtocolVersion {\\n // IMPORTANT: Do not add any storage variable, see the above notice.\\n\\n /// @inheritdoc IProtocolVersion\\n function protocolVersion() public pure returns (uint8[3] memory) {\\n return [1, 4, 0];\\n }\\n}\\n\",\"keccak256\":\"0x3975c937be935f687c6b6b8f379071232681e98cf04b175d72781b819ea52bdb\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[{"astId":372,"contract":"src/mocks/plugin/PluginCloneableMock.sol:PluginCloneableMockBuild2","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":375,"contract":"src/mocks/plugin/PluginCloneableMock.sol:PluginCloneableMockBuild2","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":2821,"contract":"src/mocks/plugin/PluginCloneableMock.sol:PluginCloneableMockBuild2","label":"__gap","offset":0,"slot":"1","type":"t_array(t_uint256)50_storage"},{"astId":2592,"contract":"src/mocks/plugin/PluginCloneableMock.sol:PluginCloneableMockBuild2","label":"__gap","offset":0,"slot":"51","type":"t_array(t_uint256)50_storage"},{"astId":13111,"contract":"src/mocks/plugin/PluginCloneableMock.sol:PluginCloneableMockBuild2","label":"dao_","offset":0,"slot":"101","type":"t_contract(IDAO)10865"},{"astId":13160,"contract":"src/mocks/plugin/PluginCloneableMock.sol:PluginCloneableMockBuild2","label":"__gap","offset":0,"slot":"102","type":"t_array(t_uint256)49_storage"},{"astId":11224,"contract":"src/mocks/plugin/PluginCloneableMock.sol:PluginCloneableMockBuild2","label":"state1","offset":0,"slot":"151","type":"t_uint256"},{"astId":11226,"contract":"src/mocks/plugin/PluginCloneableMock.sol:PluginCloneableMockBuild2","label":"state2","offset":0,"slot":"152","type":"t_uint256"}],"types":{"t_array(t_uint256)49_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[49]","numberOfBytes":"1568"},"t_array(t_uint256)50_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[50]","numberOfBytes":"1600"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_contract(IDAO)10865":{"encoding":"inplace","label":"contract IDAO","numberOfBytes":"20"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"kind":"user","methods":{"dao()":{"notice":"Returns the DAO contract."},"pluginType()":{"notice":"Returns the plugin's type"},"protocolVersion()":{"notice":"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with."},"supportsInterface(bytes4)":{"notice":"Checks if this or the parent contract supports an interface by its ID."}},"notice":"A mock cloneable plugin to be deployed via the minimal proxy pattern. v1.1 (Release 1, Build 2)","version":1}}},"src/mocks/plugin/PluginCloneableSetupMock.sol":{"PluginCloneableSetupMockBuild1":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"ConflictingValues","type":"error"},{"inputs":[],"name":"NonUpgradeablePlugin","type":"error"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_dao","type":"address"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"prepareInstallation","outputs":[{"internalType":"address","name":"plugin","type":"address"},{"components":[{"internalType":"address[]","name":"helpers","type":"address[]"},{"components":[{"internalType":"enum PermissionLib.Operation","name":"operation","type":"uint8"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"condition","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"internalType":"struct PermissionLib.MultiTargetPermission[]","name":"permissions","type":"tuple[]"}],"internalType":"struct IPluginSetup.PreparedSetupData","name":"preparedSetupData","type":"tuple"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_dao","type":"address"},{"components":[{"internalType":"address","name":"plugin","type":"address"},{"internalType":"address[]","name":"currentHelpers","type":"address[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct IPluginSetup.SetupPayload","name":"_payload","type":"tuple"}],"name":"prepareUninstallation","outputs":[{"components":[{"internalType":"enum PermissionLib.Operation","name":"operation","type":"uint8"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"condition","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"internalType":"struct PermissionLib.MultiTargetPermission[]","name":"permissions","type":"tuple[]"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_dao","type":"address"},{"internalType":"uint16","name":"_fromBuild","type":"uint16"},{"components":[{"internalType":"address","name":"plugin","type":"address"},{"internalType":"address[]","name":"currentHelpers","type":"address[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct IPluginSetup.SetupPayload","name":"_payload","type":"tuple"}],"name":"prepareUpdate","outputs":[{"internalType":"bytes","name":"","type":"bytes"},{"components":[{"internalType":"address[]","name":"helpers","type":"address[]"},{"components":[{"internalType":"enum PermissionLib.Operation","name":"operation","type":"uint8"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"condition","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"internalType":"struct PermissionLib.MultiTargetPermission[]","name":"permissions","type":"tuple[]"}],"internalType":"struct IPluginSetup.PreparedSetupData","name":"","type":"tuple"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"protocolVersion","outputs":[{"internalType":"uint8[3]","name":"","type":"uint8[3]"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"DO NOT USE IN PRODUCTION!","kind":"dev","methods":{"implementation()":{"details":"The implementation can be instantiated via the `new` keyword, cloned via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)), or proxied via the UUPS proxy pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).","returns":{"_0":"The address of the plugin implementation contract."}},"prepareInstallation(address,bytes)":{"params":{"_dao":"The address of the installing DAO.","_data":"The bytes-encoded data containing the input parameters for the installation as specified in the plugin's build metadata JSON file."},"returns":{"plugin":"The address of the `Plugin` contract being prepared for installation.","preparedSetupData":"The deployed plugin's relevant data which consists of helpers and permissions."}},"prepareUninstallation(address,(address,address[],bytes))":{"params":{"_dao":"The address of the uninstalling DAO.","_payload":"The relevant data necessary for the `prepareUninstallation`. See above."},"returns":{"permissions":"The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the uninstalling DAO."}},"prepareUpdate(address,uint16,(address,address[],bytes))":{"details":"Since the underlying plugin is non-upgradeable, this non-virtual function must always revert.","params":{"_dao":"The address of the updating DAO.","_fromBuild":"The build number of the plugin to update from.","_payload":"The relevant data necessary for the `prepareUpdate`. See above."},"returns":{"_0":"The initialization data to be passed to upgradeable contracts when the update is applied in the `PluginSetupProcessor`.","_1":"The deployed plugin's relevant data which consists of helpers and permissions."}},"protocolVersion()":{"details":"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.","returns":{"_0":"Returns the semantic Aragon OSx protocol version number."}},"supportsInterface(bytes4)":{"params":{"_interfaceId":"The ID of the interface."},"returns":{"_0":"Returns `true` if the interface is supported."}}},"version":1},"evm":{"bytecode":{"functionDebugData":{"@_11309":{"entryPoint":null,"id":11309,"parameterSlots":0,"returnSlots":0},"@_14307":{"entryPoint":null,"id":14307,"parameterSlots":1,"returnSlots":0}},"generatedSources":[],"linkReferences":{},"object":"60a060405234801561001057600080fd5b5060405161001d9061004b565b604051809103906000f080158015610039573d6000803e3d6000fd5b506001600160a01b0316608052610058565b6105c180610d3083390190565b608051610cb76100796000396000818160c101526102970152610cb76000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c80639cb0a124116100505780639cb0a124146100eb578063a8a9c29e1461010b578063f10832f11461012c57600080fd5b806301ffc9a7146100775780632ae9c6001461009f5780635c60da1b146100b4575b600080fd5b61008a6100853660046107fd565b61014d565b60405190151581526020015b60405180910390f35b6100a761019e565b6040516100969190610827565b6040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152602001610096565b6100fe6100f9366004610884565b6101c8565b604051610096919061094e565b61011e610119366004610997565b6101de565b604051610096929190610ae1565b61013f61013a366004610b25565b610216565b604051610096929190610be7565b60006001600160e01b0319821663099718b560e41b148061017d57506001600160e01b03198216621574e360e91b145b8061019857506301ffc9a760e01b6001600160e01b03198316145b92915050565b6101a66107df565b5060408051606081018252600181526004602082015260009181019190915290565b60606101d760006001806102f2565b9392505050565b60606101fd604051806040016040528060608152602001606081525090565b60405163a112810160e01b815260040160405180910390fd5b6000610235604051806040016040528060608152602001606081525090565b6040516001600160a01b038516602482015260009060440160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663189acdbd60e31b17905290506102c8816102b97f000000000000000000000000000000000000000000000000000000000000000090565b6001600160a01b031690610477565b92506102d460016104af565b82526102e360006001816102f2565b60208301525090939092509050565b6060826001600160a01b0316846001600160a01b0316111561032757604051633a4013cd60e21b815260040160405180910390fd5b6103318484610c1f565b6001600160a01b031667ffffffffffffffff81111561035257610352610b0f565b6040519080825280602002602001820160405280156103ab57816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282526000199092019101816103705790505b509050835b836001600160a01b0316816001600160a01b0316101561046f576040518060a001604052808460028111156103e7576103e76108d2565b81526001600160a01b038316602082018190526040820152600060608201527fa280eec51ab8e1bc4b6b0c1b7f1bde785761b787a49db404e3e9338ed9b016ef608090910152826104388784610c1f565b6001600160a01b03168151811061045157610451610c3f565b6020026020010181905250808061046790610c55565b9150506103b0565b509392505050565b600061048b836001600160a01b0316610568565b825190915015610198576104a86001600160a01b0382168361060e565b5092915050565b6060816001600160a01b031667ffffffffffffffff8111156104d3576104d3610b0f565b6040519080825280602002602001820160405280156104fc578160200160208202803683370190505b50905060005b826001600160a01b0316816001600160a01b03161015610562578082826001600160a01b03168151811061053857610538610c3f565b6001600160a01b03909216602092830291909101909101528061055a81610c55565b915050610502565b50919050565b6000763d602d80600a3d3981f3363d3d373d3d3d363d730000008260601b60e81c176000526e5af43d82803e903d91602b57fd5bf38260781b17602052603760096000f090506001600160a01b0381166106095760405162461bcd60e51b815260206004820152601660248201527f455243313136373a20637265617465206661696c65640000000000000000000060448201526064015b60405180910390fd5b919050565b60606101d7838360006040518060400160405280601e81526020017f416464726573733a206c6f772d6c6576656c2063616c6c206661696c656400008152506060824710156106c55760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610600565b600080866001600160a01b031685876040516106e19190610c7b565b60006040518083038185875af1925050503d806000811461071e576040519150601f19603f3d011682016040523d82523d6000602084013e610723565b606091505b509150915061073487838387610741565b925050505b949350505050565b606083156107b05782516000036107a9576001600160a01b0385163b6107a95760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610600565b5081610739565b61073983838151156107c55781518083602001fd5b8060405162461bcd60e51b81526004016106009190610c97565b60405180606001604052806003906020820280368337509192915050565b60006020828403121561080f57600080fd5b81356001600160e01b0319811681146101d757600080fd5b60608101818360005b600381101561085257815160ff16835260209283019290910190600101610830565b50505092915050565b80356001600160a01b038116811461060957600080fd5b60006060828403121561056257600080fd5b6000806040838503121561089757600080fd5b6108a08361085b565b9150602083013567ffffffffffffffff8111156108bc57600080fd5b6108c885828601610872565b9150509250929050565b634e487b7160e01b600052602160045260246000fd5b600081516003811061090a57634e487b7160e01b600052602160045260246000fd5b8352506020818101516001600160a01b0390811691840191909152604080830151821690840152606080830151909116908301526080908101519082015260a00190565b6020808252825182820181905260009190848201906040850190845b8181101561098b5761097d8385516108e8565b93850193925060010161096a565b50909695505050505050565b6000806000606084860312156109ac57600080fd5b6109b58461085b565b9250602084013561ffff811681146109cc57600080fd5b9150604084013567ffffffffffffffff8111156109e857600080fd5b6109f486828701610872565b9150509250925092565b60005b83811015610a19578181015183820152602001610a01565b50506000910152565b60008151808452610a3a8160208601602086016109fe565b601f01601f19169290920160200192915050565b805160408084528151908401819052600091602091908201906060860190845b81811015610a935783516001600160a01b031683529284019291840191600101610a6e565b50508483015186820387850152805180835290840192506000918401905b80831015610ad657610ac48285516108e8565b91508484019350600183019250610ab1565b509695505050505050565b604081526000610af46040830185610a22565b8281036020840152610b068185610a4e565b95945050505050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215610b3857600080fd5b610b418361085b565b9150602083013567ffffffffffffffff80821115610b5e57600080fd5b818501915085601f830112610b7257600080fd5b813581811115610b8457610b84610b0f565b604051601f8201601f19908116603f01168101908382118183101715610bac57610bac610b0f565b81604052828152886020848701011115610bc557600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6001600160a01b03831681526040602082015260006107396040830184610a4e565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b038281168282160390808211156104a8576104a8610c09565b634e487b7160e01b600052603260045260246000fd5b60006001600160a01b03808316818103610c7157610c71610c09565b6001019392505050565b60008251610c8d8184602087016109fe565b9190910192915050565b6020815260006101d76020830184610a2256fea164736f6c6343000811000a608060405234801561001057600080fd5b5061001961001e565b6100dd565b600054610100900460ff161561008a5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116146100db576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6104d5806100ec6000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c806341de68301161005057806341de6830146100dc5780636accab8c146100eb578063c4d66de81461010257600080fd5b806301ffc9a7146100775780632ae9c6001461009f5780634162169f146100b4575b600080fd5b61008a610085366004610405565b610117565b60405190151581526020015b60405180910390f35b6100a7610168565b6040516100969190610436565b60655460405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610096565b6001604051610096919061046a565b6100f460975481565b604051908152602001610096565b610115610110366004610492565b610192565b005b60006001600160e01b0319821663041de68360e41b148061014757506001600160e01b03198216621574e360e91b145b8061016257506301ffc9a760e01b6001600160e01b03198316145b92915050565b6101706103e7565b5060408051606081018252600181526004602082015260009181019190915290565b600054610100900460ff16158080156101b25750600054600160ff909116105b806101cc5750303b1580156101cc575060005460ff166001145b6102435760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b6000805460ff191660011790558015610266576000805461ff0019166101001790555b61026f826102be565b600160975580156102ba576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b600054610100900460ff166103295760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840161023a565b61033281610335565b50565b600054610100900460ff166103a05760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840161023a565b606580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60405180606001604052806003906020820280368337509192915050565b60006020828403121561041757600080fd5b81356001600160e01b03198116811461042f57600080fd5b9392505050565b60608101818360005b600381101561046157815160ff1683526020928301929091019060010161043f565b50505092915050565b602081016003831061048c57634e487b7160e01b600052602160045260246000fd5b91905290565b6000602082840312156104a457600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461042f57600080fdfea164736f6c6343000811000a","opcodes":"PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x1D SWAP1 PUSH2 0x4B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH2 0x39 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x80 MSTORE PUSH2 0x58 JUMP JUMPDEST PUSH2 0x5C1 DUP1 PUSH2 0xD30 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH2 0xCB7 PUSH2 0x79 PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH1 0xC1 ADD MSTORE PUSH2 0x297 ADD MSTORE PUSH2 0xCB7 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x72 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9CB0A124 GT PUSH2 0x50 JUMPI DUP1 PUSH4 0x9CB0A124 EQ PUSH2 0xEB JUMPI DUP1 PUSH4 0xA8A9C29E EQ PUSH2 0x10B JUMPI DUP1 PUSH4 0xF10832F1 EQ PUSH2 0x12C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x77 JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0x9F JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0xB4 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8A PUSH2 0x85 CALLDATASIZE PUSH1 0x4 PUSH2 0x7FD JUMP JUMPDEST PUSH2 0x14D JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xA7 PUSH2 0x19E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x96 SWAP2 SWAP1 PUSH2 0x827 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x96 JUMP JUMPDEST PUSH2 0xFE PUSH2 0xF9 CALLDATASIZE PUSH1 0x4 PUSH2 0x884 JUMP JUMPDEST PUSH2 0x1C8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x96 SWAP2 SWAP1 PUSH2 0x94E JUMP JUMPDEST PUSH2 0x11E PUSH2 0x119 CALLDATASIZE PUSH1 0x4 PUSH2 0x997 JUMP JUMPDEST PUSH2 0x1DE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x96 SWAP3 SWAP2 SWAP1 PUSH2 0xAE1 JUMP JUMPDEST PUSH2 0x13F PUSH2 0x13A CALLDATASIZE PUSH1 0x4 PUSH2 0xB25 JUMP JUMPDEST PUSH2 0x216 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x96 SWAP3 SWAP2 SWAP1 PUSH2 0xBE7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x99718B5 PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x17D JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x198 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1A6 PUSH2 0x7DF JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1D7 PUSH1 0x0 PUSH1 0x1 DUP1 PUSH2 0x2F2 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1FD PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xA1128101 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x235 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 PUSH1 0x44 ADD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x189ACDBD PUSH1 0xE3 SHL OR SWAP1 MSTORE SWAP1 POP PUSH2 0x2C8 DUP2 PUSH2 0x2B9 PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH2 0x477 JUMP JUMPDEST SWAP3 POP PUSH2 0x2D4 PUSH1 0x1 PUSH2 0x4AF JUMP JUMPDEST DUP3 MSTORE PUSH2 0x2E3 PUSH1 0x0 PUSH1 0x1 DUP2 PUSH2 0x2F2 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP SWAP1 SWAP4 SWAP1 SWAP3 POP SWAP1 POP JUMP JUMPDEST PUSH1 0x60 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH2 0x327 JUMPI PUSH1 0x40 MLOAD PUSH4 0x3A4013CD PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x331 DUP5 DUP5 PUSH2 0xC1F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x352 JUMPI PUSH2 0x352 PUSH2 0xB0F JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x3AB JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD DUP3 SWAP1 MSTORE SWAP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 DUP3 ADD MSTORE DUP3 MSTORE PUSH1 0x0 NOT SWAP1 SWAP3 ADD SWAP2 ADD DUP2 PUSH2 0x370 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP DUP4 JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT ISZERO PUSH2 0x46F JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 DUP5 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x3E7 JUMPI PUSH2 0x3E7 PUSH2 0x8D2 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x60 DUP3 ADD MSTORE PUSH32 0xA280EEC51AB8E1BC4B6B0C1B7F1BDE785761B787A49DB404E3E9338ED9B016EF PUSH1 0x80 SWAP1 SWAP2 ADD MSTORE DUP3 PUSH2 0x438 DUP8 DUP5 PUSH2 0xC1F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MLOAD DUP2 LT PUSH2 0x451 JUMPI PUSH2 0x451 PUSH2 0xC3F JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP DUP1 DUP1 PUSH2 0x467 SWAP1 PUSH2 0xC55 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x3B0 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x48B DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x568 JUMP JUMPDEST DUP3 MLOAD SWAP1 SWAP2 POP ISZERO PUSH2 0x198 JUMPI PUSH2 0x4A8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP4 PUSH2 0x60E JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x4D3 JUMPI PUSH2 0x4D3 PUSH2 0xB0F JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x4FC JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT ISZERO PUSH2 0x562 JUMPI DUP1 DUP3 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MLOAD DUP2 LT PUSH2 0x538 JUMPI PUSH2 0x538 PUSH2 0xC3F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE DUP1 PUSH2 0x55A DUP2 PUSH2 0xC55 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x502 JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH23 0x3D602D80600A3D3981F3363D3D373D3D3D363D73000000 DUP3 PUSH1 0x60 SHL PUSH1 0xE8 SHR OR PUSH1 0x0 MSTORE PUSH15 0x5AF43D82803E903D91602B57FD5BF3 DUP3 PUSH1 0x78 SHL OR PUSH1 0x20 MSTORE PUSH1 0x37 PUSH1 0x9 PUSH1 0x0 CREATE SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x609 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313136373A20637265617465206661696C656400000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1D7 DUP4 DUP4 PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x416464726573733A206C6F772D6C6576656C2063616C6C206661696C65640000 DUP2 MSTORE POP PUSH1 0x60 DUP3 SELFBALANCE LT ISZERO PUSH2 0x6C5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A20696E73756666696369656E742062616C616E636520666F PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x722063616C6C0000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x600 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP8 PUSH1 0x40 MLOAD PUSH2 0x6E1 SWAP2 SWAP1 PUSH2 0xC7B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x71E JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x723 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x734 DUP8 DUP4 DUP4 DUP8 PUSH2 0x741 JUMP JUMPDEST SWAP3 POP POP POP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x7B0 JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0x7A9 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0x7A9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x600 JUMP JUMPDEST POP DUP2 PUSH2 0x739 JUMP JUMPDEST PUSH2 0x739 DUP4 DUP4 DUP2 MLOAD ISZERO PUSH2 0x7C5 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x600 SWAP2 SWAP1 PUSH2 0xC97 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x80F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x1D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0x852 JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x830 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x609 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x562 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x897 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8A0 DUP4 PUSH2 0x85B JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x8BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8C8 DUP6 DUP3 DUP7 ADD PUSH2 0x872 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP2 MLOAD PUSH1 0x3 DUP2 LT PUSH2 0x90A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP4 MSTORE POP PUSH1 0x20 DUP2 DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP1 DUP4 ADD MLOAD DUP3 AND SWAP1 DUP5 ADD MSTORE PUSH1 0x60 DUP1 DUP4 ADD MLOAD SWAP1 SWAP2 AND SWAP1 DUP4 ADD MSTORE PUSH1 0x80 SWAP1 DUP2 ADD MLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x98B JUMPI PUSH2 0x97D DUP4 DUP6 MLOAD PUSH2 0x8E8 JUMP JUMPDEST SWAP4 DUP6 ADD SWAP4 SWAP3 POP PUSH1 0x1 ADD PUSH2 0x96A JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x9AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9B5 DUP5 PUSH2 0x85B JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH2 0x9CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x9E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9F4 DUP7 DUP3 DUP8 ADD PUSH2 0x872 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xA19 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xA01 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0xA3A DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x9FE JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x40 DUP1 DUP5 MSTORE DUP2 MLOAD SWAP1 DUP5 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x20 SWAP2 SWAP1 DUP3 ADD SWAP1 PUSH1 0x60 DUP7 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xA93 JUMPI DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0xA6E JUMP JUMPDEST POP POP DUP5 DUP4 ADD MLOAD DUP7 DUP3 SUB DUP8 DUP6 ADD MSTORE DUP1 MLOAD DUP1 DUP4 MSTORE SWAP1 DUP5 ADD SWAP3 POP PUSH1 0x0 SWAP2 DUP5 ADD SWAP1 JUMPDEST DUP1 DUP4 LT ISZERO PUSH2 0xAD6 JUMPI PUSH2 0xAC4 DUP3 DUP6 MLOAD PUSH2 0x8E8 JUMP JUMPDEST SWAP2 POP DUP5 DUP5 ADD SWAP4 POP PUSH1 0x1 DUP4 ADD SWAP3 POP PUSH2 0xAB1 JUMP JUMPDEST POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 PUSH2 0xAF4 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0xA22 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0xB06 DUP2 DUP6 PUSH2 0xA4E JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xB38 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB41 DUP4 PUSH2 0x85B JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xB5E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xB72 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0xB84 JUMPI PUSH2 0xB84 PUSH2 0xB0F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0xBAC JUMPI PUSH2 0xBAC PUSH2 0xB0F JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0xBC5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0x739 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0xA4E JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND DUP3 DUP3 AND SUB SWAP1 DUP1 DUP3 GT ISZERO PUSH2 0x4A8 JUMPI PUSH2 0x4A8 PUSH2 0xC09 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND DUP2 DUP2 SUB PUSH2 0xC71 JUMPI PUSH2 0xC71 PUSH2 0xC09 JUMP JUMPDEST PUSH1 0x1 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0xC8D DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x9FE JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x1D7 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0xA22 JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x19 PUSH2 0x1E JUMP JUMPDEST PUSH2 0xDD JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x8A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x27 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320696E697469 PUSH1 0x44 DUP3 ADD MSTORE PUSH7 0x616C697A696E67 PUSH1 0xC8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xFF SWAP1 DUP2 AND EQ PUSH2 0xDB JUMPI PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST JUMP JUMPDEST PUSH2 0x4D5 DUP1 PUSH2 0xEC PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x72 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x41DE6830 GT PUSH2 0x50 JUMPI DUP1 PUSH4 0x41DE6830 EQ PUSH2 0xDC JUMPI DUP1 PUSH4 0x6ACCAB8C EQ PUSH2 0xEB JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0x102 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x77 JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0x9F JUMPI DUP1 PUSH4 0x4162169F EQ PUSH2 0xB4 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8A PUSH2 0x85 CALLDATASIZE PUSH1 0x4 PUSH2 0x405 JUMP JUMPDEST PUSH2 0x117 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xA7 PUSH2 0x168 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x96 SWAP2 SWAP1 PUSH2 0x436 JUMP JUMPDEST PUSH1 0x65 SLOAD PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x96 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x40 MLOAD PUSH2 0x96 SWAP2 SWAP1 PUSH2 0x46A JUMP JUMPDEST PUSH2 0xF4 PUSH1 0x97 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x96 JUMP JUMPDEST PUSH2 0x115 PUSH2 0x110 CALLDATASIZE PUSH1 0x4 PUSH2 0x492 JUMP JUMPDEST PUSH2 0x192 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x41DE683 PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x147 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x162 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x170 PUSH2 0x3E7 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 DUP1 ISZERO PUSH2 0x1B2 JUMPI POP PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xFF SWAP1 SWAP2 AND LT JUMPDEST DUP1 PUSH2 0x1CC JUMPI POP ADDRESS EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1CC JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF AND PUSH1 0x1 EQ JUMPDEST PUSH2 0x243 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x647920696E697469616C697A6564000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE DUP1 ISZERO PUSH2 0x266 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND PUSH2 0x100 OR SWAP1 SSTORE JUMPDEST PUSH2 0x26F DUP3 PUSH2 0x2BE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x97 SSTORE DUP1 ISZERO PUSH2 0x2BA JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x329 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x23A JUMP JUMPDEST PUSH2 0x332 DUP2 PUSH2 0x335 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x3A0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x23A JUMP JUMPDEST PUSH1 0x65 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x417 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x42F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0x461 JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x43F JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH1 0x3 DUP4 LT PUSH2 0x48C JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 SWAP1 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x42F JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"749:1127:49:-:0;;;889:70;;;;;;;;;;923:31;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1454:32:82;;;749:1127:49;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_revert_9263":{"entryPoint":null,"id":9263,"parameterSlots":2,"returnSlots":0},"@clone_5295":{"entryPoint":1384,"id":5295,"parameterSlots":1,"returnSlots":1},"@deployMinimalProxy_14592":{"entryPoint":1143,"id":14592,"parameterSlots":2,"returnSlots":1},"@functionCallWithValue_9088":{"entryPoint":null,"id":9088,"parameterSlots":4,"returnSlots":1},"@functionCall_9004":{"entryPoint":1550,"id":9004,"parameterSlots":2,"returnSlots":1},"@implementation_14370":{"entryPoint":null,"id":14370,"parameterSlots":0,"returnSlots":1},"@isContract_8952":{"entryPoint":null,"id":8952,"parameterSlots":1,"returnSlots":1},"@mockHelpers_11760":{"entryPoint":1199,"id":11760,"parameterSlots":1,"returnSlots":1},"@mockPermissions_11721":{"entryPoint":754,"id":11721,"parameterSlots":3,"returnSlots":1},"@prepareInstallation_11363":{"entryPoint":534,"id":11363,"parameterSlots":2,"returnSlots":2},"@prepareUninstallation_11391":{"entryPoint":456,"id":11391,"parameterSlots":2,"returnSlots":1},"@prepareUpdate_14332":{"entryPoint":478,"id":14332,"parameterSlots":3,"returnSlots":2},"@protocolVersion_14765":{"entryPoint":414,"id":14765,"parameterSlots":0,"returnSlots":1},"@supportsInterface_14361":{"entryPoint":333,"id":14361,"parameterSlots":1,"returnSlots":1},"@supportsInterface_9730":{"entryPoint":null,"id":9730,"parameterSlots":1,"returnSlots":1},"@verifyCallResultFromTarget_9219":{"entryPoint":1857,"id":9219,"parameterSlots":4,"returnSlots":1},"abi_decode_address":{"entryPoint":2139,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_struct_SetupPayload_calldata":{"entryPoint":2162,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_bytes_memory_ptr":{"entryPoint":2853,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_struct$_SetupPayload_$14224_calldata_ptr":{"entryPoint":2180,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_uint16t_struct$_SetupPayload_$14224_calldata_ptr":{"entryPoint":2455,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_bytes4":{"entryPoint":2045,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encodeUpdatedPos_struct_MultiTargetPermission":{"entryPoint":2280,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_bytes":{"entryPoint":2594,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_struct_PreparedSetupData":{"entryPoint":2638,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":3195,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address_t_struct$_PreparedSetupData_$14216_memory_ptr__to_t_address_t_struct$_PreparedSetupData_$14216_memory_ptr__fromStack_reversed":{"entryPoint":3047,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr__fromStack_reversed":{"entryPoint":2382,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed":{"entryPoint":2087,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$14216_memory_ptr__to_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$14216_memory_ptr__fromStack_reversed":{"entryPoint":2785,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_contract$_IDAO_$10865__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":3223,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_68ca40b61460257f14e69f48b1a4dbc812e9afc6932f127ef8084544457b3335__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"checked_sub_t_uint160":{"entryPoint":3103,"id":null,"parameterSlots":2,"returnSlots":1},"copy_memory_to_memory_with_cleanup":{"entryPoint":2558,"id":null,"parameterSlots":3,"returnSlots":0},"increment_t_uint160":{"entryPoint":3157,"id":null,"parameterSlots":1,"returnSlots":1},"panic_error_0x11":{"entryPoint":3081,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x21":{"entryPoint":2258,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x32":{"entryPoint":3135,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":2831,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:10509:92","statements":[{"nodeType":"YulBlock","src":"6:3:92","statements":[]},{"body":{"nodeType":"YulBlock","src":"83:217:92","statements":[{"body":{"nodeType":"YulBlock","src":"129:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"138:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"141:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"131:6:92"},"nodeType":"YulFunctionCall","src":"131:12:92"},"nodeType":"YulExpressionStatement","src":"131:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"104:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"113:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"100:3:92"},"nodeType":"YulFunctionCall","src":"100:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"125:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"96:3:92"},"nodeType":"YulFunctionCall","src":"96:32:92"},"nodeType":"YulIf","src":"93:52:92"},{"nodeType":"YulVariableDeclaration","src":"154:36:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"180:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"167:12:92"},"nodeType":"YulFunctionCall","src":"167:23:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"158:5:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"254:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"263:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"266:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"256:6:92"},"nodeType":"YulFunctionCall","src":"256:12:92"},"nodeType":"YulExpressionStatement","src":"256:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"212:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"223:5:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"234:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"239:10:92","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"230:3:92"},"nodeType":"YulFunctionCall","src":"230:20:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"219:3:92"},"nodeType":"YulFunctionCall","src":"219:32:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"209:2:92"},"nodeType":"YulFunctionCall","src":"209:43:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"202:6:92"},"nodeType":"YulFunctionCall","src":"202:51:92"},"nodeType":"YulIf","src":"199:71:92"},{"nodeType":"YulAssignment","src":"279:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"289:5:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"279:6:92"}]}]},"name":"abi_decode_tuple_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"49:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"60:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"72:6:92","type":""}],"src":"14:286:92"},{"body":{"nodeType":"YulBlock","src":"400:92:92","statements":[{"nodeType":"YulAssignment","src":"410:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"422:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"433:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"418:3:92"},"nodeType":"YulFunctionCall","src":"418:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"410:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"452:9:92"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"477:6:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"470:6:92"},"nodeType":"YulFunctionCall","src":"470:14:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"463:6:92"},"nodeType":"YulFunctionCall","src":"463:22:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"445:6:92"},"nodeType":"YulFunctionCall","src":"445:41:92"},"nodeType":"YulExpressionStatement","src":"445:41:92"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"369:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"380:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"391:4:92","type":""}],"src":"305:187:92"},{"body":{"nodeType":"YulBlock","src":"640:358:92","statements":[{"nodeType":"YulAssignment","src":"650:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"662:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"673:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"658:3:92"},"nodeType":"YulFunctionCall","src":"658:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"650:4:92"}]},{"nodeType":"YulVariableDeclaration","src":"685:20:92","value":{"name":"headStart","nodeType":"YulIdentifier","src":"696:9:92"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"689:3:92","type":""}]},{"nodeType":"YulAssignment","src":"714:16:92","value":{"name":"headStart","nodeType":"YulIdentifier","src":"721:9:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"714:3:92"}]},{"nodeType":"YulVariableDeclaration","src":"739:20:92","value":{"name":"value0","nodeType":"YulIdentifier","src":"753:6:92"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"743:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"768:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"777:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"772:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"834:158:92","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"855:3:92"},{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"870:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"864:5:92"},"nodeType":"YulFunctionCall","src":"864:13:92"},{"kind":"number","nodeType":"YulLiteral","src":"879:4:92","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"860:3:92"},"nodeType":"YulFunctionCall","src":"860:24:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"848:6:92"},"nodeType":"YulFunctionCall","src":"848:37:92"},"nodeType":"YulExpressionStatement","src":"848:37:92"},{"nodeType":"YulVariableDeclaration","src":"898:14:92","value":{"kind":"number","nodeType":"YulLiteral","src":"908:4:92","type":"","value":"0x20"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"902:2:92","type":""}]},{"nodeType":"YulAssignment","src":"925:19:92","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"936:3:92"},{"name":"_1","nodeType":"YulIdentifier","src":"941:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"932:3:92"},"nodeType":"YulFunctionCall","src":"932:12:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"925:3:92"}]},{"nodeType":"YulAssignment","src":"957:25:92","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"971:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"979:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"967:3:92"},"nodeType":"YulFunctionCall","src":"967:15:92"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"957:6:92"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"798:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"801:4:92","type":"","value":"0x03"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"795:2:92"},"nodeType":"YulFunctionCall","src":"795:11:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"807:18:92","statements":[{"nodeType":"YulAssignment","src":"809:14:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"818:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"821:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"814:3:92"},"nodeType":"YulFunctionCall","src":"814:9:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"809:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"791:3:92","statements":[]},"src":"787:205:92"}]},"name":"abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"609:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"620:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"631:4:92","type":""}],"src":"497:501:92"},{"body":{"nodeType":"YulBlock","src":"1104:125:92","statements":[{"nodeType":"YulAssignment","src":"1114:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1126:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1137:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1122:3:92"},"nodeType":"YulFunctionCall","src":"1122:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1114:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1156:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1171:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"1179:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1167:3:92"},"nodeType":"YulFunctionCall","src":"1167:55:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1149:6:92"},"nodeType":"YulFunctionCall","src":"1149:74:92"},"nodeType":"YulExpressionStatement","src":"1149:74:92"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1073:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1084:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1095:4:92","type":""}],"src":"1003:226:92"},{"body":{"nodeType":"YulBlock","src":"1283:147:92","statements":[{"nodeType":"YulAssignment","src":"1293:29:92","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1315:6:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1302:12:92"},"nodeType":"YulFunctionCall","src":"1302:20:92"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"1293:5:92"}]},{"body":{"nodeType":"YulBlock","src":"1408:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1417:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1420:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1410:6:92"},"nodeType":"YulFunctionCall","src":"1410:12:92"},"nodeType":"YulExpressionStatement","src":"1410:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1344:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1355:5:92"},{"kind":"number","nodeType":"YulLiteral","src":"1362:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1351:3:92"},"nodeType":"YulFunctionCall","src":"1351:54:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1341:2:92"},"nodeType":"YulFunctionCall","src":"1341:65:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1334:6:92"},"nodeType":"YulFunctionCall","src":"1334:73:92"},"nodeType":"YulIf","src":"1331:93:92"}]},"name":"abi_decode_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"1262:6:92","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"1273:5:92","type":""}],"src":"1234:196:92"},{"body":{"nodeType":"YulBlock","src":"1510:85:92","statements":[{"body":{"nodeType":"YulBlock","src":"1549:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1558:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1561:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1551:6:92"},"nodeType":"YulFunctionCall","src":"1551:12:92"},"nodeType":"YulExpressionStatement","src":"1551:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"end","nodeType":"YulIdentifier","src":"1531:3:92"},{"name":"offset","nodeType":"YulIdentifier","src":"1536:6:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1527:3:92"},"nodeType":"YulFunctionCall","src":"1527:16:92"},{"kind":"number","nodeType":"YulLiteral","src":"1545:2:92","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1523:3:92"},"nodeType":"YulFunctionCall","src":"1523:25:92"},"nodeType":"YulIf","src":"1520:45:92"},{"nodeType":"YulAssignment","src":"1574:15:92","value":{"name":"offset","nodeType":"YulIdentifier","src":"1583:6:92"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"1574:5:92"}]}]},"name":"abi_decode_struct_SetupPayload_calldata","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"1484:6:92","type":""},{"name":"end","nodeType":"YulTypedName","src":"1492:3:92","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"1500:5:92","type":""}],"src":"1435:160:92"},{"body":{"nodeType":"YulBlock","src":"1720:321:92","statements":[{"body":{"nodeType":"YulBlock","src":"1766:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1775:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1778:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1768:6:92"},"nodeType":"YulFunctionCall","src":"1768:12:92"},"nodeType":"YulExpressionStatement","src":"1768:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1741:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"1750:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1737:3:92"},"nodeType":"YulFunctionCall","src":"1737:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"1762:2:92","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1733:3:92"},"nodeType":"YulFunctionCall","src":"1733:32:92"},"nodeType":"YulIf","src":"1730:52:92"},{"nodeType":"YulAssignment","src":"1791:39:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1820:9:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"1801:18:92"},"nodeType":"YulFunctionCall","src":"1801:29:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1791:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"1839:46:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1870:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1881:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1866:3:92"},"nodeType":"YulFunctionCall","src":"1866:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1853:12:92"},"nodeType":"YulFunctionCall","src":"1853:32:92"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1843:6:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"1928:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1937:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1940:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1930:6:92"},"nodeType":"YulFunctionCall","src":"1930:12:92"},"nodeType":"YulExpressionStatement","src":"1930:12:92"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1900:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"1908:18:92","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1897:2:92"},"nodeType":"YulFunctionCall","src":"1897:30:92"},"nodeType":"YulIf","src":"1894:50:92"},{"nodeType":"YulAssignment","src":"1953:82:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2007:9:92"},{"name":"offset","nodeType":"YulIdentifier","src":"2018:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2003:3:92"},"nodeType":"YulFunctionCall","src":"2003:22:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2027:7:92"}],"functionName":{"name":"abi_decode_struct_SetupPayload_calldata","nodeType":"YulIdentifier","src":"1963:39:92"},"nodeType":"YulFunctionCall","src":"1963:72:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1953:6:92"}]}]},"name":"abi_decode_tuple_t_addresst_struct$_SetupPayload_$14224_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1678:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1689:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1701:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1709:6:92","type":""}],"src":"1600:441:92"},{"body":{"nodeType":"YulBlock","src":"2078:95:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2095:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2102:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"2107:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2098:3:92"},"nodeType":"YulFunctionCall","src":"2098:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2088:6:92"},"nodeType":"YulFunctionCall","src":"2088:31:92"},"nodeType":"YulExpressionStatement","src":"2088:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2135:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"2138:4:92","type":"","value":"0x21"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2128:6:92"},"nodeType":"YulFunctionCall","src":"2128:15:92"},"nodeType":"YulExpressionStatement","src":"2128:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2159:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2162:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2152:6:92"},"nodeType":"YulFunctionCall","src":"2152:15:92"},"nodeType":"YulExpressionStatement","src":"2152:15:92"}]},"name":"panic_error_0x21","nodeType":"YulFunctionDefinition","src":"2046:127:92"},{"body":{"nodeType":"YulBlock","src":"2268:606:92","statements":[{"nodeType":"YulVariableDeclaration","src":"2278:23:92","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2294:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2288:5:92"},"nodeType":"YulFunctionCall","src":"2288:13:92"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"2282:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"2339:111:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2360:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2367:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"2372:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2363:3:92"},"nodeType":"YulFunctionCall","src":"2363:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2353:6:92"},"nodeType":"YulFunctionCall","src":"2353:31:92"},"nodeType":"YulExpressionStatement","src":"2353:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2404:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"2407:4:92","type":"","value":"0x21"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2397:6:92"},"nodeType":"YulFunctionCall","src":"2397:15:92"},"nodeType":"YulExpressionStatement","src":"2397:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2432:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2435:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2425:6:92"},"nodeType":"YulFunctionCall","src":"2425:15:92"},"nodeType":"YulExpressionStatement","src":"2425:15:92"}]},"condition":{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"2323:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"2327:1:92","type":"","value":"3"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2320:2:92"},"nodeType":"YulFunctionCall","src":"2320:9:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2313:6:92"},"nodeType":"YulFunctionCall","src":"2313:17:92"},"nodeType":"YulIf","src":"2310:140:92"},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2466:3:92"},{"name":"_1","nodeType":"YulIdentifier","src":"2471:2:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2459:6:92"},"nodeType":"YulFunctionCall","src":"2459:15:92"},"nodeType":"YulExpressionStatement","src":"2459:15:92"},{"nodeType":"YulVariableDeclaration","src":"2483:44:92","value":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2513:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"2521:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2509:3:92"},"nodeType":"YulFunctionCall","src":"2509:17:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2503:5:92"},"nodeType":"YulFunctionCall","src":"2503:24:92"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"2487:12:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2536:52:92","value":{"kind":"number","nodeType":"YulLiteral","src":"2546:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"2540:2:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2608:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"2613:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2604:3:92"},"nodeType":"YulFunctionCall","src":"2604:14:92"},{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"2624:12:92"},{"name":"_2","nodeType":"YulIdentifier","src":"2638:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2620:3:92"},"nodeType":"YulFunctionCall","src":"2620:21:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2597:6:92"},"nodeType":"YulFunctionCall","src":"2597:45:92"},"nodeType":"YulExpressionStatement","src":"2597:45:92"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2662:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"2667:4:92","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2658:3:92"},"nodeType":"YulFunctionCall","src":"2658:14:92"},{"arguments":[{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2688:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"2696:4:92","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2684:3:92"},"nodeType":"YulFunctionCall","src":"2684:17:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2678:5:92"},"nodeType":"YulFunctionCall","src":"2678:24:92"},{"name":"_2","nodeType":"YulIdentifier","src":"2704:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2674:3:92"},"nodeType":"YulFunctionCall","src":"2674:33:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2651:6:92"},"nodeType":"YulFunctionCall","src":"2651:57:92"},"nodeType":"YulExpressionStatement","src":"2651:57:92"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2728:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"2733:4:92","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2724:3:92"},"nodeType":"YulFunctionCall","src":"2724:14:92"},{"arguments":[{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2754:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"2762:4:92","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2750:3:92"},"nodeType":"YulFunctionCall","src":"2750:17:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2744:5:92"},"nodeType":"YulFunctionCall","src":"2744:24:92"},{"name":"_2","nodeType":"YulIdentifier","src":"2770:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2740:3:92"},"nodeType":"YulFunctionCall","src":"2740:33:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2717:6:92"},"nodeType":"YulFunctionCall","src":"2717:57:92"},"nodeType":"YulExpressionStatement","src":"2717:57:92"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2794:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"2799:4:92","type":"","value":"0x80"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2790:3:92"},"nodeType":"YulFunctionCall","src":"2790:14:92"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2816:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"2824:4:92","type":"","value":"0x80"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2812:3:92"},"nodeType":"YulFunctionCall","src":"2812:17:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2806:5:92"},"nodeType":"YulFunctionCall","src":"2806:24:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2783:6:92"},"nodeType":"YulFunctionCall","src":"2783:48:92"},"nodeType":"YulExpressionStatement","src":"2783:48:92"},{"nodeType":"YulAssignment","src":"2840:28:92","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2858:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"2863:4:92","type":"","value":"0xa0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2854:3:92"},"nodeType":"YulFunctionCall","src":"2854:14:92"},"variableNames":[{"name":"updatedPos","nodeType":"YulIdentifier","src":"2840:10:92"}]}]},"name":"abi_encodeUpdatedPos_struct_MultiTargetPermission","nodeType":"YulFunctionDefinition","parameters":[{"name":"value0","nodeType":"YulTypedName","src":"2237:6:92","type":""},{"name":"pos","nodeType":"YulTypedName","src":"2245:3:92","type":""}],"returnVariables":[{"name":"updatedPos","nodeType":"YulTypedName","src":"2253:10:92","type":""}],"src":"2178:696:92"},{"body":{"nodeType":"YulBlock","src":"3110:499:92","statements":[{"nodeType":"YulVariableDeclaration","src":"3120:12:92","value":{"kind":"number","nodeType":"YulLiteral","src":"3130:2:92","type":"","value":"32"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"3124:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3141:32:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3159:9:92"},{"name":"_1","nodeType":"YulIdentifier","src":"3170:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3155:3:92"},"nodeType":"YulFunctionCall","src":"3155:18:92"},"variables":[{"name":"tail_1","nodeType":"YulTypedName","src":"3145:6:92","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3189:9:92"},{"name":"_1","nodeType":"YulIdentifier","src":"3200:2:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3182:6:92"},"nodeType":"YulFunctionCall","src":"3182:21:92"},"nodeType":"YulExpressionStatement","src":"3182:21:92"},{"nodeType":"YulVariableDeclaration","src":"3212:17:92","value":{"name":"tail_1","nodeType":"YulIdentifier","src":"3223:6:92"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"3216:3:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3238:27:92","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3258:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3252:5:92"},"nodeType":"YulFunctionCall","src":"3252:13:92"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"3242:6:92","type":""}]},{"expression":{"arguments":[{"name":"tail_1","nodeType":"YulIdentifier","src":"3281:6:92"},{"name":"length","nodeType":"YulIdentifier","src":"3289:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3274:6:92"},"nodeType":"YulFunctionCall","src":"3274:22:92"},"nodeType":"YulExpressionStatement","src":"3274:22:92"},{"nodeType":"YulAssignment","src":"3305:25:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3316:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3327:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3312:3:92"},"nodeType":"YulFunctionCall","src":"3312:18:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"3305:3:92"}]},{"nodeType":"YulVariableDeclaration","src":"3339:29:92","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3357:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"3365:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3353:3:92"},"nodeType":"YulFunctionCall","src":"3353:15:92"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"3343:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3377:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"3386:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"3381:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"3445:138:92","statements":[{"nodeType":"YulAssignment","src":"3459:76:92","value":{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"3522:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3516:5:92"},"nodeType":"YulFunctionCall","src":"3516:13:92"},{"name":"pos","nodeType":"YulIdentifier","src":"3531:3:92"}],"functionName":{"name":"abi_encodeUpdatedPos_struct_MultiTargetPermission","nodeType":"YulIdentifier","src":"3466:49:92"},"nodeType":"YulFunctionCall","src":"3466:69:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"3459:3:92"}]},{"nodeType":"YulAssignment","src":"3548:25:92","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"3562:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"3570:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3558:3:92"},"nodeType":"YulFunctionCall","src":"3558:15:92"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"3548:6:92"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3407:1:92"},{"name":"length","nodeType":"YulIdentifier","src":"3410:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"3404:2:92"},"nodeType":"YulFunctionCall","src":"3404:13:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"3418:18:92","statements":[{"nodeType":"YulAssignment","src":"3420:14:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3429:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"3432:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3425:3:92"},"nodeType":"YulFunctionCall","src":"3425:9:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"3420:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"3400:3:92","statements":[]},"src":"3396:187:92"},{"nodeType":"YulAssignment","src":"3592:11:92","value":{"name":"pos","nodeType":"YulIdentifier","src":"3600:3:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3592:4:92"}]}]},"name":"abi_encode_tuple_t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3079:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3090:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3101:4:92","type":""}],"src":"2879:730:92"},{"body":{"nodeType":"YulBlock","src":"3750:465:92","statements":[{"body":{"nodeType":"YulBlock","src":"3796:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3805:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3808:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3798:6:92"},"nodeType":"YulFunctionCall","src":"3798:12:92"},"nodeType":"YulExpressionStatement","src":"3798:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3771:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"3780:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3767:3:92"},"nodeType":"YulFunctionCall","src":"3767:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"3792:2:92","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3763:3:92"},"nodeType":"YulFunctionCall","src":"3763:32:92"},"nodeType":"YulIf","src":"3760:52:92"},{"nodeType":"YulAssignment","src":"3821:39:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3850:9:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"3831:18:92"},"nodeType":"YulFunctionCall","src":"3831:29:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3821:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"3869:45:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3899:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3910:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3895:3:92"},"nodeType":"YulFunctionCall","src":"3895:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3882:12:92"},"nodeType":"YulFunctionCall","src":"3882:32:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"3873:5:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"3964:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3973:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3976:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3966:6:92"},"nodeType":"YulFunctionCall","src":"3966:12:92"},"nodeType":"YulExpressionStatement","src":"3966:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3936:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3947:5:92"},{"kind":"number","nodeType":"YulLiteral","src":"3954:6:92","type":"","value":"0xffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3943:3:92"},"nodeType":"YulFunctionCall","src":"3943:18:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"3933:2:92"},"nodeType":"YulFunctionCall","src":"3933:29:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3926:6:92"},"nodeType":"YulFunctionCall","src":"3926:37:92"},"nodeType":"YulIf","src":"3923:57:92"},{"nodeType":"YulAssignment","src":"3989:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"3999:5:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"3989:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"4013:46:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4044:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4055:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4040:3:92"},"nodeType":"YulFunctionCall","src":"4040:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4027:12:92"},"nodeType":"YulFunctionCall","src":"4027:32:92"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4017:6:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"4102:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4111:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4114:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4104:6:92"},"nodeType":"YulFunctionCall","src":"4104:12:92"},"nodeType":"YulExpressionStatement","src":"4104:12:92"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"4074:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"4082:18:92","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4071:2:92"},"nodeType":"YulFunctionCall","src":"4071:30:92"},"nodeType":"YulIf","src":"4068:50:92"},{"nodeType":"YulAssignment","src":"4127:82:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4181:9:92"},{"name":"offset","nodeType":"YulIdentifier","src":"4192:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4177:3:92"},"nodeType":"YulFunctionCall","src":"4177:22:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4201:7:92"}],"functionName":{"name":"abi_decode_struct_SetupPayload_calldata","nodeType":"YulIdentifier","src":"4137:39:92"},"nodeType":"YulFunctionCall","src":"4137:72:92"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"4127:6:92"}]}]},"name":"abi_decode_tuple_t_addresst_uint16t_struct$_SetupPayload_$14224_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3700:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3711:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3723:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"3731:6:92","type":""},{"name":"value2","nodeType":"YulTypedName","src":"3739:6:92","type":""}],"src":"3614:601:92"},{"body":{"nodeType":"YulBlock","src":"4286:184:92","statements":[{"nodeType":"YulVariableDeclaration","src":"4296:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"4305:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"4300:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"4365:63:92","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"4390:3:92"},{"name":"i","nodeType":"YulIdentifier","src":"4395:1:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4386:3:92"},"nodeType":"YulFunctionCall","src":"4386:11:92"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"4409:3:92"},{"name":"i","nodeType":"YulIdentifier","src":"4414:1:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4405:3:92"},"nodeType":"YulFunctionCall","src":"4405:11:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4399:5:92"},"nodeType":"YulFunctionCall","src":"4399:18:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4379:6:92"},"nodeType":"YulFunctionCall","src":"4379:39:92"},"nodeType":"YulExpressionStatement","src":"4379:39:92"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"4326:1:92"},{"name":"length","nodeType":"YulIdentifier","src":"4329:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"4323:2:92"},"nodeType":"YulFunctionCall","src":"4323:13:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"4337:19:92","statements":[{"nodeType":"YulAssignment","src":"4339:15:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"4348:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"4351:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4344:3:92"},"nodeType":"YulFunctionCall","src":"4344:10:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"4339:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"4319:3:92","statements":[]},"src":"4315:113:92"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"4448:3:92"},{"name":"length","nodeType":"YulIdentifier","src":"4453:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4444:3:92"},"nodeType":"YulFunctionCall","src":"4444:16:92"},{"kind":"number","nodeType":"YulLiteral","src":"4462:1:92","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4437:6:92"},"nodeType":"YulFunctionCall","src":"4437:27:92"},"nodeType":"YulExpressionStatement","src":"4437:27:92"}]},"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"4264:3:92","type":""},{"name":"dst","nodeType":"YulTypedName","src":"4269:3:92","type":""},{"name":"length","nodeType":"YulTypedName","src":"4274:6:92","type":""}],"src":"4220:250:92"},{"body":{"nodeType":"YulBlock","src":"4524:221:92","statements":[{"nodeType":"YulVariableDeclaration","src":"4534:26:92","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4554:5:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4548:5:92"},"nodeType":"YulFunctionCall","src":"4548:12:92"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"4538:6:92","type":""}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4576:3:92"},{"name":"length","nodeType":"YulIdentifier","src":"4581:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4569:6:92"},"nodeType":"YulFunctionCall","src":"4569:19:92"},"nodeType":"YulExpressionStatement","src":"4569:19:92"},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4636:5:92"},{"kind":"number","nodeType":"YulLiteral","src":"4643:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4632:3:92"},"nodeType":"YulFunctionCall","src":"4632:16:92"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4654:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"4659:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4650:3:92"},"nodeType":"YulFunctionCall","src":"4650:14:92"},{"name":"length","nodeType":"YulIdentifier","src":"4666:6:92"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"4597:34:92"},"nodeType":"YulFunctionCall","src":"4597:76:92"},"nodeType":"YulExpressionStatement","src":"4597:76:92"},{"nodeType":"YulAssignment","src":"4682:57:92","value":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4697:3:92"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"4710:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"4718:2:92","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4706:3:92"},"nodeType":"YulFunctionCall","src":"4706:15:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4727:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"4723:3:92"},"nodeType":"YulFunctionCall","src":"4723:7:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4702:3:92"},"nodeType":"YulFunctionCall","src":"4702:29:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4693:3:92"},"nodeType":"YulFunctionCall","src":"4693:39:92"},{"kind":"number","nodeType":"YulLiteral","src":"4734:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4689:3:92"},"nodeType":"YulFunctionCall","src":"4689:50:92"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"4682:3:92"}]}]},"name":"abi_encode_bytes","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"4501:5:92","type":""},{"name":"pos","nodeType":"YulTypedName","src":"4508:3:92","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"4516:3:92","type":""}],"src":"4475:270:92"},{"body":{"nodeType":"YulBlock","src":"4818:1094:92","statements":[{"nodeType":"YulVariableDeclaration","src":"4828:26:92","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4844:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"4849:4:92","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4840:3:92"},"nodeType":"YulFunctionCall","src":"4840:14:92"},"variables":[{"name":"tail","nodeType":"YulTypedName","src":"4832:4:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4863:32:92","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4889:5:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4883:5:92"},"nodeType":"YulFunctionCall","src":"4883:12:92"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"4867:12:92","type":""}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4911:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"4916:4:92","type":"","value":"0x40"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4904:6:92"},"nodeType":"YulFunctionCall","src":"4904:17:92"},"nodeType":"YulExpressionStatement","src":"4904:17:92"},{"nodeType":"YulVariableDeclaration","src":"4930:17:92","value":{"name":"tail","nodeType":"YulIdentifier","src":"4943:4:92"},"variables":[{"name":"pos_1","nodeType":"YulTypedName","src":"4934:5:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4956:33:92","value":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"4976:12:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4970:5:92"},"nodeType":"YulFunctionCall","src":"4970:19:92"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"4960:6:92","type":""}]},{"expression":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"5005:4:92"},{"name":"length","nodeType":"YulIdentifier","src":"5011:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4998:6:92"},"nodeType":"YulFunctionCall","src":"4998:20:92"},"nodeType":"YulExpressionStatement","src":"4998:20:92"},{"nodeType":"YulAssignment","src":"5027:21:92","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5040:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"5045:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5036:3:92"},"nodeType":"YulFunctionCall","src":"5036:12:92"},"variableNames":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5027:5:92"}]},{"nodeType":"YulVariableDeclaration","src":"5057:14:92","value":{"kind":"number","nodeType":"YulLiteral","src":"5067:4:92","type":"","value":"0x20"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"5061:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5080:35:92","value":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"5098:12:92"},{"name":"_1","nodeType":"YulIdentifier","src":"5112:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5094:3:92"},"nodeType":"YulFunctionCall","src":"5094:21:92"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"5084:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5124:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"5133:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"5128:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"5192:175:92","statements":[{"expression":{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5213:5:92"},{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"5230:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5224:5:92"},"nodeType":"YulFunctionCall","src":"5224:13:92"},{"kind":"number","nodeType":"YulLiteral","src":"5239:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5220:3:92"},"nodeType":"YulFunctionCall","src":"5220:62:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5206:6:92"},"nodeType":"YulFunctionCall","src":"5206:77:92"},"nodeType":"YulExpressionStatement","src":"5206:77:92"},{"nodeType":"YulAssignment","src":"5296:23:92","value":{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5309:5:92"},{"name":"_1","nodeType":"YulIdentifier","src":"5316:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5305:3:92"},"nodeType":"YulFunctionCall","src":"5305:14:92"},"variableNames":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5296:5:92"}]},{"nodeType":"YulAssignment","src":"5332:25:92","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"5346:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"5354:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5342:3:92"},"nodeType":"YulFunctionCall","src":"5342:15:92"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"5332:6:92"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"5154:1:92"},{"name":"length","nodeType":"YulIdentifier","src":"5157:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"5151:2:92"},"nodeType":"YulFunctionCall","src":"5151:13:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"5165:18:92","statements":[{"nodeType":"YulAssignment","src":"5167:14:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"5176:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"5179:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5172:3:92"},"nodeType":"YulFunctionCall","src":"5172:9:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"5167:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"5147:3:92","statements":[]},"src":"5143:224:92"},{"nodeType":"YulVariableDeclaration","src":"5376:43:92","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5408:5:92"},{"name":"_1","nodeType":"YulIdentifier","src":"5415:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5404:3:92"},"nodeType":"YulFunctionCall","src":"5404:14:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5398:5:92"},"nodeType":"YulFunctionCall","src":"5398:21:92"},"variables":[{"name":"memberValue0_1","nodeType":"YulTypedName","src":"5380:14:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5439:3:92"},{"name":"_1","nodeType":"YulIdentifier","src":"5444:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5435:3:92"},"nodeType":"YulFunctionCall","src":"5435:12:92"},{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5453:5:92"},{"name":"pos","nodeType":"YulIdentifier","src":"5460:3:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5449:3:92"},"nodeType":"YulFunctionCall","src":"5449:15:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5428:6:92"},"nodeType":"YulFunctionCall","src":"5428:37:92"},"nodeType":"YulExpressionStatement","src":"5428:37:92"},{"nodeType":"YulVariableDeclaration","src":"5474:18:92","value":{"name":"pos_1","nodeType":"YulIdentifier","src":"5487:5:92"},"variables":[{"name":"pos_2","nodeType":"YulTypedName","src":"5478:5:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5501:37:92","value":{"arguments":[{"name":"memberValue0_1","nodeType":"YulIdentifier","src":"5523:14:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5517:5:92"},"nodeType":"YulFunctionCall","src":"5517:21:92"},"variables":[{"name":"length_1","nodeType":"YulTypedName","src":"5505:8:92","type":""}]},{"expression":{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5554:5:92"},{"name":"length_1","nodeType":"YulIdentifier","src":"5561:8:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5547:6:92"},"nodeType":"YulFunctionCall","src":"5547:23:92"},"nodeType":"YulExpressionStatement","src":"5547:23:92"},{"nodeType":"YulAssignment","src":"5579:23:92","value":{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5592:5:92"},{"name":"_1","nodeType":"YulIdentifier","src":"5599:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5588:3:92"},"nodeType":"YulFunctionCall","src":"5588:14:92"},"variableNames":[{"name":"pos_2","nodeType":"YulIdentifier","src":"5579:5:92"}]},{"nodeType":"YulVariableDeclaration","src":"5611:39:92","value":{"arguments":[{"name":"memberValue0_1","nodeType":"YulIdentifier","src":"5631:14:92"},{"name":"_1","nodeType":"YulIdentifier","src":"5647:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5627:3:92"},"nodeType":"YulFunctionCall","src":"5627:23:92"},"variables":[{"name":"srcPtr_1","nodeType":"YulTypedName","src":"5615:8:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5659:12:92","value":{"kind":"number","nodeType":"YulLiteral","src":"5670:1:92","type":"","value":"0"},"variables":[{"name":"i_1","nodeType":"YulTypedName","src":"5663:3:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"5737:148:92","statements":[{"nodeType":"YulAssignment","src":"5751:82:92","value":{"arguments":[{"arguments":[{"name":"srcPtr_1","nodeType":"YulIdentifier","src":"5816:8:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5810:5:92"},"nodeType":"YulFunctionCall","src":"5810:15:92"},{"name":"pos_2","nodeType":"YulIdentifier","src":"5827:5:92"}],"functionName":{"name":"abi_encodeUpdatedPos_struct_MultiTargetPermission","nodeType":"YulIdentifier","src":"5760:49:92"},"nodeType":"YulFunctionCall","src":"5760:73:92"},"variableNames":[{"name":"pos_2","nodeType":"YulIdentifier","src":"5751:5:92"}]},{"nodeType":"YulAssignment","src":"5846:29:92","value":{"arguments":[{"name":"srcPtr_1","nodeType":"YulIdentifier","src":"5862:8:92"},{"name":"_1","nodeType":"YulIdentifier","src":"5872:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5858:3:92"},"nodeType":"YulFunctionCall","src":"5858:17:92"},"variableNames":[{"name":"srcPtr_1","nodeType":"YulIdentifier","src":"5846:8:92"}]}]},"condition":{"arguments":[{"name":"i_1","nodeType":"YulIdentifier","src":"5691:3:92"},{"name":"length_1","nodeType":"YulIdentifier","src":"5696:8:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"5688:2:92"},"nodeType":"YulFunctionCall","src":"5688:17:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"5706:22:92","statements":[{"nodeType":"YulAssignment","src":"5708:18:92","value":{"arguments":[{"name":"i_1","nodeType":"YulIdentifier","src":"5719:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"5724:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5715:3:92"},"nodeType":"YulFunctionCall","src":"5715:11:92"},"variableNames":[{"name":"i_1","nodeType":"YulIdentifier","src":"5708:3:92"}]}]},"pre":{"nodeType":"YulBlock","src":"5684:3:92","statements":[]},"src":"5680:205:92"},{"nodeType":"YulAssignment","src":"5894:12:92","value":{"name":"pos_2","nodeType":"YulIdentifier","src":"5901:5:92"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"5894:3:92"}]}]},"name":"abi_encode_struct_PreparedSetupData","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"4795:5:92","type":""},{"name":"pos","nodeType":"YulTypedName","src":"4802:3:92","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"4810:3:92","type":""}],"src":"4750:1162:92"},{"body":{"nodeType":"YulBlock","src":"6136:231:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6153:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6164:2:92","type":"","value":"64"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6146:6:92"},"nodeType":"YulFunctionCall","src":"6146:21:92"},"nodeType":"YulExpressionStatement","src":"6146:21:92"},{"nodeType":"YulVariableDeclaration","src":"6176:58:92","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6207:6:92"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6219:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6230:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6215:3:92"},"nodeType":"YulFunctionCall","src":"6215:18:92"}],"functionName":{"name":"abi_encode_bytes","nodeType":"YulIdentifier","src":"6190:16:92"},"nodeType":"YulFunctionCall","src":"6190:44:92"},"variables":[{"name":"tail_1","nodeType":"YulTypedName","src":"6180:6:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6254:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6265:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6250:3:92"},"nodeType":"YulFunctionCall","src":"6250:18:92"},{"arguments":[{"name":"tail_1","nodeType":"YulIdentifier","src":"6274:6:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"6282:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6270:3:92"},"nodeType":"YulFunctionCall","src":"6270:22:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6243:6:92"},"nodeType":"YulFunctionCall","src":"6243:50:92"},"nodeType":"YulExpressionStatement","src":"6243:50:92"},{"nodeType":"YulAssignment","src":"6302:59:92","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"6346:6:92"},{"name":"tail_1","nodeType":"YulIdentifier","src":"6354:6:92"}],"functionName":{"name":"abi_encode_struct_PreparedSetupData","nodeType":"YulIdentifier","src":"6310:35:92"},"nodeType":"YulFunctionCall","src":"6310:51:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6302:4:92"}]}]},"name":"abi_encode_tuple_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$14216_memory_ptr__to_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$14216_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6097:9:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"6108:6:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"6116:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6127:4:92","type":""}],"src":"5917:450:92"},{"body":{"nodeType":"YulBlock","src":"6404:95:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6421:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6428:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"6433:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"6424:3:92"},"nodeType":"YulFunctionCall","src":"6424:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6414:6:92"},"nodeType":"YulFunctionCall","src":"6414:31:92"},"nodeType":"YulExpressionStatement","src":"6414:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6461:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"6464:4:92","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6454:6:92"},"nodeType":"YulFunctionCall","src":"6454:15:92"},"nodeType":"YulExpressionStatement","src":"6454:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6485:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6488:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6478:6:92"},"nodeType":"YulFunctionCall","src":"6478:15:92"},"nodeType":"YulExpressionStatement","src":"6478:15:92"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"6372:127:92"},{"body":{"nodeType":"YulBlock","src":"6600:899:92","statements":[{"body":{"nodeType":"YulBlock","src":"6646:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6655:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6658:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6648:6:92"},"nodeType":"YulFunctionCall","src":"6648:12:92"},"nodeType":"YulExpressionStatement","src":"6648:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"6621:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"6630:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6617:3:92"},"nodeType":"YulFunctionCall","src":"6617:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"6642:2:92","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6613:3:92"},"nodeType":"YulFunctionCall","src":"6613:32:92"},"nodeType":"YulIf","src":"6610:52:92"},{"nodeType":"YulAssignment","src":"6671:39:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6700:9:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"6681:18:92"},"nodeType":"YulFunctionCall","src":"6681:29:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"6671:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"6719:46:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6750:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6761:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6746:3:92"},"nodeType":"YulFunctionCall","src":"6746:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6733:12:92"},"nodeType":"YulFunctionCall","src":"6733:32:92"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"6723:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"6774:28:92","value":{"kind":"number","nodeType":"YulLiteral","src":"6784:18:92","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"6778:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"6829:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6838:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6841:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6831:6:92"},"nodeType":"YulFunctionCall","src":"6831:12:92"},"nodeType":"YulExpressionStatement","src":"6831:12:92"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"6817:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"6825:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6814:2:92"},"nodeType":"YulFunctionCall","src":"6814:14:92"},"nodeType":"YulIf","src":"6811:34:92"},{"nodeType":"YulVariableDeclaration","src":"6854:32:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6868:9:92"},{"name":"offset","nodeType":"YulIdentifier","src":"6879:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6864:3:92"},"nodeType":"YulFunctionCall","src":"6864:22:92"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"6858:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"6934:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6943:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6946:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6936:6:92"},"nodeType":"YulFunctionCall","src":"6936:12:92"},"nodeType":"YulExpressionStatement","src":"6936:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"6913:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"6917:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6909:3:92"},"nodeType":"YulFunctionCall","src":"6909:13:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"6924:7:92"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6905:3:92"},"nodeType":"YulFunctionCall","src":"6905:27:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"6898:6:92"},"nodeType":"YulFunctionCall","src":"6898:35:92"},"nodeType":"YulIf","src":"6895:55:92"},{"nodeType":"YulVariableDeclaration","src":"6959:26:92","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"6982:2:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6969:12:92"},"nodeType":"YulFunctionCall","src":"6969:16:92"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"6963:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"7008:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"7010:16:92"},"nodeType":"YulFunctionCall","src":"7010:18:92"},"nodeType":"YulExpressionStatement","src":"7010:18:92"}]},"condition":{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"7000:2:92"},{"name":"_1","nodeType":"YulIdentifier","src":"7004:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6997:2:92"},"nodeType":"YulFunctionCall","src":"6997:10:92"},"nodeType":"YulIf","src":"6994:36:92"},{"nodeType":"YulVariableDeclaration","src":"7039:17:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7053:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"7049:3:92"},"nodeType":"YulFunctionCall","src":"7049:7:92"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"7043:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"7065:23:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7085:2:92","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"7079:5:92"},"nodeType":"YulFunctionCall","src":"7079:9:92"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"7069:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"7097:71:92","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7119:6:92"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"7143:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"7147:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7139:3:92"},"nodeType":"YulFunctionCall","src":"7139:13:92"},{"name":"_4","nodeType":"YulIdentifier","src":"7154:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7135:3:92"},"nodeType":"YulFunctionCall","src":"7135:22:92"},{"kind":"number","nodeType":"YulLiteral","src":"7159:2:92","type":"","value":"63"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7131:3:92"},"nodeType":"YulFunctionCall","src":"7131:31:92"},{"name":"_4","nodeType":"YulIdentifier","src":"7164:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7127:3:92"},"nodeType":"YulFunctionCall","src":"7127:40:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7115:3:92"},"nodeType":"YulFunctionCall","src":"7115:53:92"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"7101:10:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"7227:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"7229:16:92"},"nodeType":"YulFunctionCall","src":"7229:18:92"},"nodeType":"YulExpressionStatement","src":"7229:18:92"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"7186:10:92"},{"name":"_1","nodeType":"YulIdentifier","src":"7198:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"7183:2:92"},"nodeType":"YulFunctionCall","src":"7183:18:92"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"7206:10:92"},{"name":"memPtr","nodeType":"YulIdentifier","src":"7218:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"7203:2:92"},"nodeType":"YulFunctionCall","src":"7203:22:92"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"7180:2:92"},"nodeType":"YulFunctionCall","src":"7180:46:92"},"nodeType":"YulIf","src":"7177:72:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7265:2:92","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"7269:10:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7258:6:92"},"nodeType":"YulFunctionCall","src":"7258:22:92"},"nodeType":"YulExpressionStatement","src":"7258:22:92"},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7296:6:92"},{"name":"_3","nodeType":"YulIdentifier","src":"7304:2:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7289:6:92"},"nodeType":"YulFunctionCall","src":"7289:18:92"},"nodeType":"YulExpressionStatement","src":"7289:18:92"},{"body":{"nodeType":"YulBlock","src":"7353:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7362:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7365:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7355:6:92"},"nodeType":"YulFunctionCall","src":"7355:12:92"},"nodeType":"YulExpressionStatement","src":"7355:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"7330:2:92"},{"name":"_3","nodeType":"YulIdentifier","src":"7334:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7326:3:92"},"nodeType":"YulFunctionCall","src":"7326:11:92"},{"kind":"number","nodeType":"YulLiteral","src":"7339:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7322:3:92"},"nodeType":"YulFunctionCall","src":"7322:20:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"7344:7:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"7319:2:92"},"nodeType":"YulFunctionCall","src":"7319:33:92"},"nodeType":"YulIf","src":"7316:53:92"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7395:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"7403:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7391:3:92"},"nodeType":"YulFunctionCall","src":"7391:15:92"},{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"7412:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"7416:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7408:3:92"},"nodeType":"YulFunctionCall","src":"7408:11:92"},{"name":"_3","nodeType":"YulIdentifier","src":"7421:2:92"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"7378:12:92"},"nodeType":"YulFunctionCall","src":"7378:46:92"},"nodeType":"YulExpressionStatement","src":"7378:46:92"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7448:6:92"},{"name":"_3","nodeType":"YulIdentifier","src":"7456:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7444:3:92"},"nodeType":"YulFunctionCall","src":"7444:15:92"},{"kind":"number","nodeType":"YulLiteral","src":"7461:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7440:3:92"},"nodeType":"YulFunctionCall","src":"7440:24:92"},{"kind":"number","nodeType":"YulLiteral","src":"7466:1:92","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7433:6:92"},"nodeType":"YulFunctionCall","src":"7433:35:92"},"nodeType":"YulExpressionStatement","src":"7433:35:92"},{"nodeType":"YulAssignment","src":"7477:16:92","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"7487:6:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"7477:6:92"}]}]},"name":"abi_decode_tuple_t_addresst_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6558:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"6569:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"6581:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"6589:6:92","type":""}],"src":"6504:995:92"},{"body":{"nodeType":"YulBlock","src":"7705:209:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7722:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7737:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"7745:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7733:3:92"},"nodeType":"YulFunctionCall","src":"7733:55:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7715:6:92"},"nodeType":"YulFunctionCall","src":"7715:74:92"},"nodeType":"YulExpressionStatement","src":"7715:74:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7809:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7820:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7805:3:92"},"nodeType":"YulFunctionCall","src":"7805:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"7825:2:92","type":"","value":"64"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7798:6:92"},"nodeType":"YulFunctionCall","src":"7798:30:92"},"nodeType":"YulExpressionStatement","src":"7798:30:92"},{"nodeType":"YulAssignment","src":"7837:71:92","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"7881:6:92"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7893:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7904:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7889:3:92"},"nodeType":"YulFunctionCall","src":"7889:18:92"}],"functionName":{"name":"abi_encode_struct_PreparedSetupData","nodeType":"YulIdentifier","src":"7845:35:92"},"nodeType":"YulFunctionCall","src":"7845:63:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7837:4:92"}]}]},"name":"abi_encode_tuple_t_address_t_struct$_PreparedSetupData_$14216_memory_ptr__to_t_address_t_struct$_PreparedSetupData_$14216_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7666:9:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"7677:6:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"7685:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7696:4:92","type":""}],"src":"7504:410:92"},{"body":{"nodeType":"YulBlock","src":"8034:125:92","statements":[{"nodeType":"YulAssignment","src":"8044:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8056:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8067:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8052:3:92"},"nodeType":"YulFunctionCall","src":"8052:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"8044:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8086:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"8101:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"8109:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8097:3:92"},"nodeType":"YulFunctionCall","src":"8097:55:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8079:6:92"},"nodeType":"YulFunctionCall","src":"8079:74:92"},"nodeType":"YulExpressionStatement","src":"8079:74:92"}]},"name":"abi_encode_tuple_t_contract$_IDAO_$10865__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8003:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"8014:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"8025:4:92","type":""}],"src":"7919:240:92"},{"body":{"nodeType":"YulBlock","src":"8196:95:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8213:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8220:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"8225:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"8216:3:92"},"nodeType":"YulFunctionCall","src":"8216:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8206:6:92"},"nodeType":"YulFunctionCall","src":"8206:31:92"},"nodeType":"YulExpressionStatement","src":"8206:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8253:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"8256:4:92","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8246:6:92"},"nodeType":"YulFunctionCall","src":"8246:15:92"},"nodeType":"YulExpressionStatement","src":"8246:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8277:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8280:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8270:6:92"},"nodeType":"YulFunctionCall","src":"8270:15:92"},"nodeType":"YulExpressionStatement","src":"8270:15:92"}]},"name":"panic_error_0x11","nodeType":"YulFunctionDefinition","src":"8164:127:92"},{"body":{"nodeType":"YulBlock","src":"8345:159:92","statements":[{"nodeType":"YulVariableDeclaration","src":"8355:52:92","value":{"kind":"number","nodeType":"YulLiteral","src":"8365:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"8359:2:92","type":""}]},{"nodeType":"YulAssignment","src":"8416:35:92","value":{"arguments":[{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"8432:1:92"},{"name":"_1","nodeType":"YulIdentifier","src":"8435:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8428:3:92"},"nodeType":"YulFunctionCall","src":"8428:10:92"},{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"8444:1:92"},{"name":"_1","nodeType":"YulIdentifier","src":"8447:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8440:3:92"},"nodeType":"YulFunctionCall","src":"8440:10:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"8424:3:92"},"nodeType":"YulFunctionCall","src":"8424:27:92"},"variableNames":[{"name":"diff","nodeType":"YulIdentifier","src":"8416:4:92"}]},{"body":{"nodeType":"YulBlock","src":"8476:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"8478:16:92"},"nodeType":"YulFunctionCall","src":"8478:18:92"},"nodeType":"YulExpressionStatement","src":"8478:18:92"}]},"condition":{"arguments":[{"name":"diff","nodeType":"YulIdentifier","src":"8466:4:92"},{"name":"_1","nodeType":"YulIdentifier","src":"8472:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"8463:2:92"},"nodeType":"YulFunctionCall","src":"8463:12:92"},"nodeType":"YulIf","src":"8460:38:92"}]},"name":"checked_sub_t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"8327:1:92","type":""},{"name":"y","nodeType":"YulTypedName","src":"8330:1:92","type":""}],"returnVariables":[{"name":"diff","nodeType":"YulTypedName","src":"8336:4:92","type":""}],"src":"8296:208:92"},{"body":{"nodeType":"YulBlock","src":"8541:95:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8558:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8565:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"8570:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"8561:3:92"},"nodeType":"YulFunctionCall","src":"8561:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8551:6:92"},"nodeType":"YulFunctionCall","src":"8551:31:92"},"nodeType":"YulExpressionStatement","src":"8551:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8598:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"8601:4:92","type":"","value":"0x32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8591:6:92"},"nodeType":"YulFunctionCall","src":"8591:15:92"},"nodeType":"YulExpressionStatement","src":"8591:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8622:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8625:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8615:6:92"},"nodeType":"YulFunctionCall","src":"8615:15:92"},"nodeType":"YulExpressionStatement","src":"8615:15:92"}]},"name":"panic_error_0x32","nodeType":"YulFunctionDefinition","src":"8509:127:92"},{"body":{"nodeType":"YulBlock","src":"8688:187:92","statements":[{"nodeType":"YulVariableDeclaration","src":"8698:52:92","value":{"kind":"number","nodeType":"YulLiteral","src":"8708:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"8702:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"8759:29:92","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8778:5:92"},{"name":"_1","nodeType":"YulIdentifier","src":"8785:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8774:3:92"},"nodeType":"YulFunctionCall","src":"8774:14:92"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"8763:7:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"8816:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"8818:16:92"},"nodeType":"YulFunctionCall","src":"8818:18:92"},"nodeType":"YulExpressionStatement","src":"8818:18:92"}]},"condition":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"8803:7:92"},{"name":"_1","nodeType":"YulIdentifier","src":"8812:2:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"8800:2:92"},"nodeType":"YulFunctionCall","src":"8800:15:92"},"nodeType":"YulIf","src":"8797:41:92"},{"nodeType":"YulAssignment","src":"8847:22:92","value":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"8858:7:92"},{"kind":"number","nodeType":"YulLiteral","src":"8867:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8854:3:92"},"nodeType":"YulFunctionCall","src":"8854:15:92"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"8847:3:92"}]}]},"name":"increment_t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"8670:5:92","type":""}],"returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"8680:3:92","type":""}],"src":"8641:234:92"},{"body":{"nodeType":"YulBlock","src":"9054:172:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9071:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9082:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9064:6:92"},"nodeType":"YulFunctionCall","src":"9064:21:92"},"nodeType":"YulExpressionStatement","src":"9064:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9105:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9116:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9101:3:92"},"nodeType":"YulFunctionCall","src":"9101:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"9121:2:92","type":"","value":"22"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9094:6:92"},"nodeType":"YulFunctionCall","src":"9094:30:92"},"nodeType":"YulExpressionStatement","src":"9094:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9144:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9155:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9140:3:92"},"nodeType":"YulFunctionCall","src":"9140:18:92"},{"hexValue":"455243313136373a20637265617465206661696c6564","kind":"string","nodeType":"YulLiteral","src":"9160:24:92","type":"","value":"ERC1167: create failed"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9133:6:92"},"nodeType":"YulFunctionCall","src":"9133:52:92"},"nodeType":"YulExpressionStatement","src":"9133:52:92"},{"nodeType":"YulAssignment","src":"9194:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9206:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9217:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9202:3:92"},"nodeType":"YulFunctionCall","src":"9202:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"9194:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_68ca40b61460257f14e69f48b1a4dbc812e9afc6932f127ef8084544457b3335__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9031:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"9045:4:92","type":""}],"src":"8880:346:92"},{"body":{"nodeType":"YulBlock","src":"9405:228:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9422:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9433:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9415:6:92"},"nodeType":"YulFunctionCall","src":"9415:21:92"},"nodeType":"YulExpressionStatement","src":"9415:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9456:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9467:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9452:3:92"},"nodeType":"YulFunctionCall","src":"9452:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"9472:2:92","type":"","value":"38"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9445:6:92"},"nodeType":"YulFunctionCall","src":"9445:30:92"},"nodeType":"YulExpressionStatement","src":"9445:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9495:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9506:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9491:3:92"},"nodeType":"YulFunctionCall","src":"9491:18:92"},{"hexValue":"416464726573733a20696e73756666696369656e742062616c616e636520666f","kind":"string","nodeType":"YulLiteral","src":"9511:34:92","type":"","value":"Address: insufficient balance fo"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9484:6:92"},"nodeType":"YulFunctionCall","src":"9484:62:92"},"nodeType":"YulExpressionStatement","src":"9484:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9566:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9577:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9562:3:92"},"nodeType":"YulFunctionCall","src":"9562:18:92"},{"hexValue":"722063616c6c","kind":"string","nodeType":"YulLiteral","src":"9582:8:92","type":"","value":"r call"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9555:6:92"},"nodeType":"YulFunctionCall","src":"9555:36:92"},"nodeType":"YulExpressionStatement","src":"9555:36:92"},{"nodeType":"YulAssignment","src":"9600:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9612:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9623:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9608:3:92"},"nodeType":"YulFunctionCall","src":"9608:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"9600:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9382:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"9396:4:92","type":""}],"src":"9231:402:92"},{"body":{"nodeType":"YulBlock","src":"9775:150:92","statements":[{"nodeType":"YulVariableDeclaration","src":"9785:27:92","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"9805:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"9799:5:92"},"nodeType":"YulFunctionCall","src":"9799:13:92"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"9789:6:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"9860:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"9868:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9856:3:92"},"nodeType":"YulFunctionCall","src":"9856:17:92"},{"name":"pos","nodeType":"YulIdentifier","src":"9875:3:92"},{"name":"length","nodeType":"YulIdentifier","src":"9880:6:92"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"9821:34:92"},"nodeType":"YulFunctionCall","src":"9821:66:92"},"nodeType":"YulExpressionStatement","src":"9821:66:92"},{"nodeType":"YulAssignment","src":"9896:23:92","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"9907:3:92"},{"name":"length","nodeType":"YulIdentifier","src":"9912:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9903:3:92"},"nodeType":"YulFunctionCall","src":"9903:16:92"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"9896:3:92"}]}]},"name":"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"9751:3:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"9756:6:92","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"9767:3:92","type":""}],"src":"9638:287:92"},{"body":{"nodeType":"YulBlock","src":"10104:179:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10121:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"10132:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10114:6:92"},"nodeType":"YulFunctionCall","src":"10114:21:92"},"nodeType":"YulExpressionStatement","src":"10114:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10155:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"10166:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10151:3:92"},"nodeType":"YulFunctionCall","src":"10151:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"10171:2:92","type":"","value":"29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10144:6:92"},"nodeType":"YulFunctionCall","src":"10144:30:92"},"nodeType":"YulExpressionStatement","src":"10144:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10194:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"10205:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10190:3:92"},"nodeType":"YulFunctionCall","src":"10190:18:92"},{"hexValue":"416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374","kind":"string","nodeType":"YulLiteral","src":"10210:31:92","type":"","value":"Address: call to non-contract"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10183:6:92"},"nodeType":"YulFunctionCall","src":"10183:59:92"},"nodeType":"YulExpressionStatement","src":"10183:59:92"},{"nodeType":"YulAssignment","src":"10251:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10263:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"10274:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10259:3:92"},"nodeType":"YulFunctionCall","src":"10259:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"10251:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"10081:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"10095:4:92","type":""}],"src":"9930:353:92"},{"body":{"nodeType":"YulBlock","src":"10409:98:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10426:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"10437:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10419:6:92"},"nodeType":"YulFunctionCall","src":"10419:21:92"},"nodeType":"YulExpressionStatement","src":"10419:21:92"},{"nodeType":"YulAssignment","src":"10449:52:92","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"10474:6:92"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10486:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"10497:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10482:3:92"},"nodeType":"YulFunctionCall","src":"10482:18:92"}],"functionName":{"name":"abi_encode_bytes","nodeType":"YulIdentifier","src":"10457:16:92"},"nodeType":"YulFunctionCall","src":"10457:44:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"10449:4:92"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"10378:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"10389:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"10400:4:92","type":""}],"src":"10288:219:92"}]},"contents":"{\n { }\n function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n if iszero(eq(value, and(value, shl(224, 0xffffffff)))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 96)\n let pos := headStart\n pos := headStart\n let srcPtr := value0\n let i := 0\n for { } lt(i, 0x03) { i := add(i, 1) }\n {\n mstore(pos, and(mload(srcPtr), 0xff))\n let _1 := 0x20\n pos := add(pos, _1)\n srcPtr := add(srcPtr, _1)\n }\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_decode_address(offset) -> value\n {\n value := calldataload(offset)\n if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n }\n function abi_decode_struct_SetupPayload_calldata(offset, end) -> value\n {\n if slt(sub(end, offset), 96) { revert(0, 0) }\n value := offset\n }\n function abi_decode_tuple_t_addresst_struct$_SetupPayload_$14224_calldata_ptr(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n let offset := calldataload(add(headStart, 32))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n value1 := abi_decode_struct_SetupPayload_calldata(add(headStart, offset), dataEnd)\n }\n function panic_error_0x21()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x21)\n revert(0, 0x24)\n }\n function abi_encodeUpdatedPos_struct_MultiTargetPermission(value0, pos) -> updatedPos\n {\n let _1 := mload(value0)\n if iszero(lt(_1, 3))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x21)\n revert(0, 0x24)\n }\n mstore(pos, _1)\n let memberValue0 := mload(add(value0, 0x20))\n let _2 := 0xffffffffffffffffffffffffffffffffffffffff\n mstore(add(pos, 0x20), and(memberValue0, _2))\n mstore(add(pos, 0x40), and(mload(add(value0, 0x40)), _2))\n mstore(add(pos, 0x60), and(mload(add(value0, 0x60)), _2))\n mstore(add(pos, 0x80), mload(add(value0, 0x80)))\n updatedPos := add(pos, 0xa0)\n }\n function abi_encode_tuple_t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n let _1 := 32\n let tail_1 := add(headStart, _1)\n mstore(headStart, _1)\n let pos := tail_1\n let length := mload(value0)\n mstore(tail_1, length)\n pos := add(headStart, 64)\n let srcPtr := add(value0, _1)\n let i := 0\n for { } lt(i, length) { i := add(i, 1) }\n {\n pos := abi_encodeUpdatedPos_struct_MultiTargetPermission(mload(srcPtr), pos)\n srcPtr := add(srcPtr, _1)\n }\n tail := pos\n }\n function abi_decode_tuple_t_addresst_uint16t_struct$_SetupPayload_$14224_calldata_ptr(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n let value := calldataload(add(headStart, 32))\n if iszero(eq(value, and(value, 0xffff))) { revert(0, 0) }\n value1 := value\n let offset := calldataload(add(headStart, 64))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n value2 := abi_decode_struct_SetupPayload_calldata(add(headStart, offset), dataEnd)\n }\n function copy_memory_to_memory_with_cleanup(src, dst, length)\n {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n mstore(add(dst, length), 0)\n }\n function abi_encode_bytes(value, pos) -> end\n {\n let length := mload(value)\n mstore(pos, length)\n copy_memory_to_memory_with_cleanup(add(value, 0x20), add(pos, 0x20), length)\n end := add(add(pos, and(add(length, 31), not(31))), 0x20)\n }\n function abi_encode_struct_PreparedSetupData(value, pos) -> end\n {\n let tail := add(pos, 0x40)\n let memberValue0 := mload(value)\n mstore(pos, 0x40)\n let pos_1 := tail\n let length := mload(memberValue0)\n mstore(tail, length)\n pos_1 := add(pos, 96)\n let _1 := 0x20\n let srcPtr := add(memberValue0, _1)\n let i := 0\n for { } lt(i, length) { i := add(i, 1) }\n {\n mstore(pos_1, and(mload(srcPtr), 0xffffffffffffffffffffffffffffffffffffffff))\n pos_1 := add(pos_1, _1)\n srcPtr := add(srcPtr, _1)\n }\n let memberValue0_1 := mload(add(value, _1))\n mstore(add(pos, _1), sub(pos_1, pos))\n let pos_2 := pos_1\n let length_1 := mload(memberValue0_1)\n mstore(pos_1, length_1)\n pos_2 := add(pos_1, _1)\n let srcPtr_1 := add(memberValue0_1, _1)\n let i_1 := 0\n for { } lt(i_1, length_1) { i_1 := add(i_1, 1) }\n {\n pos_2 := abi_encodeUpdatedPos_struct_MultiTargetPermission(mload(srcPtr_1), pos_2)\n srcPtr_1 := add(srcPtr_1, _1)\n }\n end := pos_2\n }\n function abi_encode_tuple_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$14216_memory_ptr__to_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$14216_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n {\n mstore(headStart, 64)\n let tail_1 := abi_encode_bytes(value0, add(headStart, 64))\n mstore(add(headStart, 32), sub(tail_1, headStart))\n tail := abi_encode_struct_PreparedSetupData(value1, tail_1)\n }\n function panic_error_0x41()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function abi_decode_tuple_t_addresst_bytes_memory_ptr(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n let offset := calldataload(add(headStart, 32))\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n let _2 := add(headStart, offset)\n if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n let _3 := calldataload(_2)\n if gt(_3, _1) { panic_error_0x41() }\n let _4 := not(31)\n let memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n mstore(memPtr, _3)\n if gt(add(add(_2, _3), 32), dataEnd) { revert(0, 0) }\n calldatacopy(add(memPtr, 32), add(_2, 32), _3)\n mstore(add(add(memPtr, _3), 32), 0)\n value1 := memPtr\n }\n function abi_encode_tuple_t_address_t_struct$_PreparedSetupData_$14216_memory_ptr__to_t_address_t_struct$_PreparedSetupData_$14216_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n {\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n mstore(add(headStart, 32), 64)\n tail := abi_encode_struct_PreparedSetupData(value1, add(headStart, 64))\n }\n function abi_encode_tuple_t_contract$_IDAO_$10865__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function panic_error_0x11()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n function checked_sub_t_uint160(x, y) -> diff\n {\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n diff := sub(and(x, _1), and(y, _1))\n if gt(diff, _1) { panic_error_0x11() }\n }\n function panic_error_0x32()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n function increment_t_uint160(value) -> ret\n {\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n let value_1 := and(value, _1)\n if eq(value_1, _1) { panic_error_0x11() }\n ret := add(value_1, 1)\n }\n function abi_encode_tuple_t_stringliteral_68ca40b61460257f14e69f48b1a4dbc812e9afc6932f127ef8084544457b3335__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 22)\n mstore(add(headStart, 64), \"ERC1167: create failed\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 38)\n mstore(add(headStart, 64), \"Address: insufficient balance fo\")\n mstore(add(headStart, 96), \"r call\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n {\n let length := mload(value0)\n copy_memory_to_memory_with_cleanup(add(value0, 0x20), pos, length)\n end := add(pos, length)\n }\n function abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 29)\n mstore(add(headStart, 64), \"Address: call to non-contract\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n mstore(headStart, 32)\n tail := abi_encode_bytes(value0, add(headStart, 32))\n }\n}","id":92,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{"14293":[{"length":32,"start":193},{"length":32,"start":663}]},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100725760003560e01c80639cb0a124116100505780639cb0a124146100eb578063a8a9c29e1461010b578063f10832f11461012c57600080fd5b806301ffc9a7146100775780632ae9c6001461009f5780635c60da1b146100b4575b600080fd5b61008a6100853660046107fd565b61014d565b60405190151581526020015b60405180910390f35b6100a761019e565b6040516100969190610827565b6040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152602001610096565b6100fe6100f9366004610884565b6101c8565b604051610096919061094e565b61011e610119366004610997565b6101de565b604051610096929190610ae1565b61013f61013a366004610b25565b610216565b604051610096929190610be7565b60006001600160e01b0319821663099718b560e41b148061017d57506001600160e01b03198216621574e360e91b145b8061019857506301ffc9a760e01b6001600160e01b03198316145b92915050565b6101a66107df565b5060408051606081018252600181526004602082015260009181019190915290565b60606101d760006001806102f2565b9392505050565b60606101fd604051806040016040528060608152602001606081525090565b60405163a112810160e01b815260040160405180910390fd5b6000610235604051806040016040528060608152602001606081525090565b6040516001600160a01b038516602482015260009060440160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663189acdbd60e31b17905290506102c8816102b97f000000000000000000000000000000000000000000000000000000000000000090565b6001600160a01b031690610477565b92506102d460016104af565b82526102e360006001816102f2565b60208301525090939092509050565b6060826001600160a01b0316846001600160a01b0316111561032757604051633a4013cd60e21b815260040160405180910390fd5b6103318484610c1f565b6001600160a01b031667ffffffffffffffff81111561035257610352610b0f565b6040519080825280602002602001820160405280156103ab57816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282526000199092019101816103705790505b509050835b836001600160a01b0316816001600160a01b0316101561046f576040518060a001604052808460028111156103e7576103e76108d2565b81526001600160a01b038316602082018190526040820152600060608201527fa280eec51ab8e1bc4b6b0c1b7f1bde785761b787a49db404e3e9338ed9b016ef608090910152826104388784610c1f565b6001600160a01b03168151811061045157610451610c3f565b6020026020010181905250808061046790610c55565b9150506103b0565b509392505050565b600061048b836001600160a01b0316610568565b825190915015610198576104a86001600160a01b0382168361060e565b5092915050565b6060816001600160a01b031667ffffffffffffffff8111156104d3576104d3610b0f565b6040519080825280602002602001820160405280156104fc578160200160208202803683370190505b50905060005b826001600160a01b0316816001600160a01b03161015610562578082826001600160a01b03168151811061053857610538610c3f565b6001600160a01b03909216602092830291909101909101528061055a81610c55565b915050610502565b50919050565b6000763d602d80600a3d3981f3363d3d373d3d3d363d730000008260601b60e81c176000526e5af43d82803e903d91602b57fd5bf38260781b17602052603760096000f090506001600160a01b0381166106095760405162461bcd60e51b815260206004820152601660248201527f455243313136373a20637265617465206661696c65640000000000000000000060448201526064015b60405180910390fd5b919050565b60606101d7838360006040518060400160405280601e81526020017f416464726573733a206c6f772d6c6576656c2063616c6c206661696c656400008152506060824710156106c55760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610600565b600080866001600160a01b031685876040516106e19190610c7b565b60006040518083038185875af1925050503d806000811461071e576040519150601f19603f3d011682016040523d82523d6000602084013e610723565b606091505b509150915061073487838387610741565b925050505b949350505050565b606083156107b05782516000036107a9576001600160a01b0385163b6107a95760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610600565b5081610739565b61073983838151156107c55781518083602001fd5b8060405162461bcd60e51b81526004016106009190610c97565b60405180606001604052806003906020820280368337509192915050565b60006020828403121561080f57600080fd5b81356001600160e01b0319811681146101d757600080fd5b60608101818360005b600381101561085257815160ff16835260209283019290910190600101610830565b50505092915050565b80356001600160a01b038116811461060957600080fd5b60006060828403121561056257600080fd5b6000806040838503121561089757600080fd5b6108a08361085b565b9150602083013567ffffffffffffffff8111156108bc57600080fd5b6108c885828601610872565b9150509250929050565b634e487b7160e01b600052602160045260246000fd5b600081516003811061090a57634e487b7160e01b600052602160045260246000fd5b8352506020818101516001600160a01b0390811691840191909152604080830151821690840152606080830151909116908301526080908101519082015260a00190565b6020808252825182820181905260009190848201906040850190845b8181101561098b5761097d8385516108e8565b93850193925060010161096a565b50909695505050505050565b6000806000606084860312156109ac57600080fd5b6109b58461085b565b9250602084013561ffff811681146109cc57600080fd5b9150604084013567ffffffffffffffff8111156109e857600080fd5b6109f486828701610872565b9150509250925092565b60005b83811015610a19578181015183820152602001610a01565b50506000910152565b60008151808452610a3a8160208601602086016109fe565b601f01601f19169290920160200192915050565b805160408084528151908401819052600091602091908201906060860190845b81811015610a935783516001600160a01b031683529284019291840191600101610a6e565b50508483015186820387850152805180835290840192506000918401905b80831015610ad657610ac48285516108e8565b91508484019350600183019250610ab1565b509695505050505050565b604081526000610af46040830185610a22565b8281036020840152610b068185610a4e565b95945050505050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215610b3857600080fd5b610b418361085b565b9150602083013567ffffffffffffffff80821115610b5e57600080fd5b818501915085601f830112610b7257600080fd5b813581811115610b8457610b84610b0f565b604051601f8201601f19908116603f01168101908382118183101715610bac57610bac610b0f565b81604052828152886020848701011115610bc557600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6001600160a01b03831681526040602082015260006107396040830184610a4e565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b038281168282160390808211156104a8576104a8610c09565b634e487b7160e01b600052603260045260246000fd5b60006001600160a01b03808316818103610c7157610c71610c09565b6001019392505050565b60008251610c8d8184602087016109fe565b9190910192915050565b6020815260006101d76020830184610a2256fea164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x72 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9CB0A124 GT PUSH2 0x50 JUMPI DUP1 PUSH4 0x9CB0A124 EQ PUSH2 0xEB JUMPI DUP1 PUSH4 0xA8A9C29E EQ PUSH2 0x10B JUMPI DUP1 PUSH4 0xF10832F1 EQ PUSH2 0x12C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x77 JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0x9F JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0xB4 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8A PUSH2 0x85 CALLDATASIZE PUSH1 0x4 PUSH2 0x7FD JUMP JUMPDEST PUSH2 0x14D JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xA7 PUSH2 0x19E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x96 SWAP2 SWAP1 PUSH2 0x827 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x96 JUMP JUMPDEST PUSH2 0xFE PUSH2 0xF9 CALLDATASIZE PUSH1 0x4 PUSH2 0x884 JUMP JUMPDEST PUSH2 0x1C8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x96 SWAP2 SWAP1 PUSH2 0x94E JUMP JUMPDEST PUSH2 0x11E PUSH2 0x119 CALLDATASIZE PUSH1 0x4 PUSH2 0x997 JUMP JUMPDEST PUSH2 0x1DE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x96 SWAP3 SWAP2 SWAP1 PUSH2 0xAE1 JUMP JUMPDEST PUSH2 0x13F PUSH2 0x13A CALLDATASIZE PUSH1 0x4 PUSH2 0xB25 JUMP JUMPDEST PUSH2 0x216 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x96 SWAP3 SWAP2 SWAP1 PUSH2 0xBE7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x99718B5 PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x17D JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x198 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1A6 PUSH2 0x7DF JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1D7 PUSH1 0x0 PUSH1 0x1 DUP1 PUSH2 0x2F2 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1FD PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xA1128101 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x235 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 PUSH1 0x44 ADD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x189ACDBD PUSH1 0xE3 SHL OR SWAP1 MSTORE SWAP1 POP PUSH2 0x2C8 DUP2 PUSH2 0x2B9 PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH2 0x477 JUMP JUMPDEST SWAP3 POP PUSH2 0x2D4 PUSH1 0x1 PUSH2 0x4AF JUMP JUMPDEST DUP3 MSTORE PUSH2 0x2E3 PUSH1 0x0 PUSH1 0x1 DUP2 PUSH2 0x2F2 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP SWAP1 SWAP4 SWAP1 SWAP3 POP SWAP1 POP JUMP JUMPDEST PUSH1 0x60 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH2 0x327 JUMPI PUSH1 0x40 MLOAD PUSH4 0x3A4013CD PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x331 DUP5 DUP5 PUSH2 0xC1F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x352 JUMPI PUSH2 0x352 PUSH2 0xB0F JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x3AB JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD DUP3 SWAP1 MSTORE SWAP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 DUP3 ADD MSTORE DUP3 MSTORE PUSH1 0x0 NOT SWAP1 SWAP3 ADD SWAP2 ADD DUP2 PUSH2 0x370 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP DUP4 JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT ISZERO PUSH2 0x46F JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 DUP5 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x3E7 JUMPI PUSH2 0x3E7 PUSH2 0x8D2 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x60 DUP3 ADD MSTORE PUSH32 0xA280EEC51AB8E1BC4B6B0C1B7F1BDE785761B787A49DB404E3E9338ED9B016EF PUSH1 0x80 SWAP1 SWAP2 ADD MSTORE DUP3 PUSH2 0x438 DUP8 DUP5 PUSH2 0xC1F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MLOAD DUP2 LT PUSH2 0x451 JUMPI PUSH2 0x451 PUSH2 0xC3F JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP DUP1 DUP1 PUSH2 0x467 SWAP1 PUSH2 0xC55 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x3B0 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x48B DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x568 JUMP JUMPDEST DUP3 MLOAD SWAP1 SWAP2 POP ISZERO PUSH2 0x198 JUMPI PUSH2 0x4A8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP4 PUSH2 0x60E JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x4D3 JUMPI PUSH2 0x4D3 PUSH2 0xB0F JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x4FC JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT ISZERO PUSH2 0x562 JUMPI DUP1 DUP3 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MLOAD DUP2 LT PUSH2 0x538 JUMPI PUSH2 0x538 PUSH2 0xC3F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE DUP1 PUSH2 0x55A DUP2 PUSH2 0xC55 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x502 JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH23 0x3D602D80600A3D3981F3363D3D373D3D3D363D73000000 DUP3 PUSH1 0x60 SHL PUSH1 0xE8 SHR OR PUSH1 0x0 MSTORE PUSH15 0x5AF43D82803E903D91602B57FD5BF3 DUP3 PUSH1 0x78 SHL OR PUSH1 0x20 MSTORE PUSH1 0x37 PUSH1 0x9 PUSH1 0x0 CREATE SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x609 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313136373A20637265617465206661696C656400000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1D7 DUP4 DUP4 PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x416464726573733A206C6F772D6C6576656C2063616C6C206661696C65640000 DUP2 MSTORE POP PUSH1 0x60 DUP3 SELFBALANCE LT ISZERO PUSH2 0x6C5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A20696E73756666696369656E742062616C616E636520666F PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x722063616C6C0000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x600 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP8 PUSH1 0x40 MLOAD PUSH2 0x6E1 SWAP2 SWAP1 PUSH2 0xC7B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x71E JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x723 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x734 DUP8 DUP4 DUP4 DUP8 PUSH2 0x741 JUMP JUMPDEST SWAP3 POP POP POP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x7B0 JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0x7A9 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0x7A9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x600 JUMP JUMPDEST POP DUP2 PUSH2 0x739 JUMP JUMPDEST PUSH2 0x739 DUP4 DUP4 DUP2 MLOAD ISZERO PUSH2 0x7C5 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x600 SWAP2 SWAP1 PUSH2 0xC97 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x80F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x1D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0x852 JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x830 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x609 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x562 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x897 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8A0 DUP4 PUSH2 0x85B JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x8BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8C8 DUP6 DUP3 DUP7 ADD PUSH2 0x872 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP2 MLOAD PUSH1 0x3 DUP2 LT PUSH2 0x90A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP4 MSTORE POP PUSH1 0x20 DUP2 DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP1 DUP4 ADD MLOAD DUP3 AND SWAP1 DUP5 ADD MSTORE PUSH1 0x60 DUP1 DUP4 ADD MLOAD SWAP1 SWAP2 AND SWAP1 DUP4 ADD MSTORE PUSH1 0x80 SWAP1 DUP2 ADD MLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x98B JUMPI PUSH2 0x97D DUP4 DUP6 MLOAD PUSH2 0x8E8 JUMP JUMPDEST SWAP4 DUP6 ADD SWAP4 SWAP3 POP PUSH1 0x1 ADD PUSH2 0x96A JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x9AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9B5 DUP5 PUSH2 0x85B JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH2 0x9CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x9E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9F4 DUP7 DUP3 DUP8 ADD PUSH2 0x872 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xA19 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xA01 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0xA3A DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x9FE JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x40 DUP1 DUP5 MSTORE DUP2 MLOAD SWAP1 DUP5 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x20 SWAP2 SWAP1 DUP3 ADD SWAP1 PUSH1 0x60 DUP7 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xA93 JUMPI DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0xA6E JUMP JUMPDEST POP POP DUP5 DUP4 ADD MLOAD DUP7 DUP3 SUB DUP8 DUP6 ADD MSTORE DUP1 MLOAD DUP1 DUP4 MSTORE SWAP1 DUP5 ADD SWAP3 POP PUSH1 0x0 SWAP2 DUP5 ADD SWAP1 JUMPDEST DUP1 DUP4 LT ISZERO PUSH2 0xAD6 JUMPI PUSH2 0xAC4 DUP3 DUP6 MLOAD PUSH2 0x8E8 JUMP JUMPDEST SWAP2 POP DUP5 DUP5 ADD SWAP4 POP PUSH1 0x1 DUP4 ADD SWAP3 POP PUSH2 0xAB1 JUMP JUMPDEST POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 PUSH2 0xAF4 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0xA22 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0xB06 DUP2 DUP6 PUSH2 0xA4E JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xB38 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB41 DUP4 PUSH2 0x85B JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xB5E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xB72 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0xB84 JUMPI PUSH2 0xB84 PUSH2 0xB0F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0xBAC JUMPI PUSH2 0xBAC PUSH2 0xB0F JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0xBC5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0x739 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0xA4E JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND DUP3 DUP3 AND SUB SWAP1 DUP1 DUP3 GT ISZERO PUSH2 0x4A8 JUMPI PUSH2 0x4A8 PUSH2 0xC09 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND DUP2 DUP2 SUB PUSH2 0xC71 JUMPI PUSH2 0xC71 PUSH2 0xC09 JUMP JUMPDEST PUSH1 0x1 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0xC8D DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x9FE JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x1D7 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0xA22 JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"749:1127:49:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2112:293:82;;;;;;:::i;:::-;;:::i;:::-;;;470:14:92;;463:22;445:41;;433:2;418:18;2112:293:82;;;;;;;;631:98:90;;;:::i;:::-;;;;;;;:::i;2444:94:82:-;;;-1:-1:-1;;;;;2517:14:82;1167:55:92;1149:74;;1137:2;1122:18;2444:94:82;1003:226:92;1575:299:49;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1639:265:82:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;998:538:49:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;2112:293:82:-;2198:4;-1:-1:-1;;;;;;2233:46:82;;-1:-1:-1;;;2233:46:82;;:112;;-1:-1:-1;;;;;;;2295:50:82;;-1:-1:-1;;;2295:50:82;2233:112;:165;;;-1:-1:-1;;;;;;;;;;937:40:38;;;2361:37:82;2214:184;2112:293;-1:-1:-1;;2112:293:82:o;631:98:90:-;679:15;;:::i;:::-;-1:-1:-1;706:16:90;;;;;;;;714:1;706:16;;717:1;706:16;;;;-1:-1:-1;706:16:90;;;;;;;;631:98::o;1575:299:49:-;1697:56;1805:62;1821:1;881;;1805:15;:62::i;:::-;1791:76;1575:299;-1:-1:-1;;;1575:299:49:o;1639:265:82:-;1780:12;1794:24;-1:-1:-1;;;;;;;;;;;;;;;;;;;1794:24:82;1875:22;;-1:-1:-1;;;1875:22:82;;;;;;;;;;;998:538:49;1095:14;1111:42;-1:-1:-1;;;;;;;;;;;;;;;;;;;1111:42:49;1189:66;;-1:-1:-1;;;;;1167:55:92;;1189:66:49;;;1149:74:92;1165:21:49;;1122:18:92;;1189:66:49;;;-1:-1:-1;;1189:66:49;;;;;;;;;;;;;;;;-1:-1:-1;;;1189:66:49;;;;-1:-1:-1;1274:45:49;1189:66;1274:16;2517:14:82;;2444:94;1274:16:49;-1:-1:-1;;;;;1274:35:49;;;:45::i;:::-;1265:54;-1:-1:-1;1357:23:49;881:1;1357:11;:23::i;:::-;1329:51;;1422:107;1329:25;881:1;1329:25;1422:15;:107::i;:::-;1390:29;;;:139;-1:-1:-1;998:538:49;;1390:17;;-1:-1:-1;998:538:49;-1:-1:-1;998:538:49:o;580:666:52:-;699:56;780:8;-1:-1:-1;;;;;767:21:52;:10;-1:-1:-1;;;;;767:21:52;;763:53;;;797:19;;-1:-1:-1;;;797:19:52;;;;;;;;;;;763:53;879:21;890:10;879:8;:21;:::i;:::-;-1:-1:-1;;;;;837:64:52;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;837:64:52;;-1:-1:-1;;837:64:52;;;;;;;;;;;-1:-1:-1;823:78:52;-1:-1:-1;925:10:52;908:336;941:8;-1:-1:-1;;;;;937:12:52;:1;-1:-1:-1;;;;;937:12:52;;908:336;;;996:241;;;;;;;;1057:2;996:241;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;996:241:52;;;;;;;;;;;;-1:-1:-1;996:241:52;;;;1198:28;996:241;;;;;966:11;978:14;982:10;1088:1;978:14;:::i;:::-;-1:-1:-1;;;;;966:27:52;;;;;;;;;:::i;:::-;;;;;;:271;;;;951:3;;;;;:::i;:::-;;;;908:336;;;;580:666;;;;;:::o;2237:292:85:-;2349:20;2396:14;:6;-1:-1:-1;;;;;2396:12:85;;:14::i;:::-;2424:20;;2381:29;;-1:-1:-1;2424:24:85;2420:103;;2464:48;-1:-1:-1;;;;;2464:25:85;;2497:13;2464:25;:48::i;:::-;;2237:292;;;;:::o;1529:191:52:-;1577:24;1633:3;-1:-1:-1;;;;;1619:18:52;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1619:18:52;;1609:28;;1649:9;1644:74;1668:3;-1:-1:-1;;;;;1664:7:52;:1;-1:-1:-1;;;;;1664:7:52;;1644:74;;;1709:1;1688:7;1696:1;-1:-1:-1;;;;;1688:10:52;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1688:23:52;;;:10;;;;;;;;;;;:23;1673:3;;;;:::i;:::-;;;;1644:74;;;;1529:191;;;:::o;973:759:17:-;1030:16;1362:48;1344:14;1338:4;1334:25;1328:4;1324:36;1321:90;1315:4;1308:104;1569:32;1552:14;1546:4;1542:25;1539:63;1533:4;1526:77;1644:4;1638;1635:1;1628:21;1616:33;-1:-1:-1;;;;;;1676:22:17;;1668:57;;;;-1:-1:-1;;;1668:57:17;;9082:2:92;1668:57:17;;;9064:21:92;9121:2;9101:18;;;9094:30;9160:24;9140:18;;;9133:52;9202:18;;1668:57:17;;;;;;;;;973:759;;;:::o;3701:185:33:-;3776:12;3807:72;3829:6;3837:4;3843:1;3807:72;;;;;;;;;;;;;;;;;5330:12;5387:5;5362:21;:30;;5354:81;;;;-1:-1:-1;;;5354:81:33;;9433:2:92;5354:81:33;;;9415:21:92;9472:2;9452:18;;;9445:30;9511:34;9491:18;;;9484:62;9582:8;9562:18;;;9555:36;9608:19;;5354:81:33;9231:402:92;5354:81:33;5446:12;5460:23;5487:6;-1:-1:-1;;;;;5487:11:33;5506:5;5513:4;5487:31;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5445:73;;;;5535:69;5562:6;5570:7;5579:10;5591:12;5535:26;:69::i;:::-;5528:76;;;;5165:446;;;;;;;:::o;7671:628::-;7851:12;7879:7;7875:418;;;7906:10;:17;7927:1;7906:22;7902:286;;-1:-1:-1;;;;;1702:19:33;;;8113:60;;;;-1:-1:-1;;;8113:60:33;;10132:2:92;8113:60:33;;;10114:21:92;10171:2;10151:18;;;10144:30;10210:31;10190:18;;;10183:59;10259:18;;8113:60:33;9930:353:92;8113:60:33;-1:-1:-1;8208:10:33;8201:17;;7875:418;8249:33;8257:10;8269:12;8980:17;;:21;8976:379;;9208:10;9202:17;9264:15;9251:10;9247:2;9243:19;9236:44;8976:379;9331:12;9324:20;;-1:-1:-1;;;9324:20:33;;;;;;;;:::i;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:286:92:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:92;;209:43;;199:71;;266:1;263;256:12;497:501;673:2;658:18;;662:9;753:6;631:4;787:205;801:4;798:1;795:11;787:205;;;864:13;;879:4;860:24;848:37;;908:4;932:12;;;;967:15;;;;821:1;814:9;787:205;;;791:3;;;497:501;;;;:::o;1234:196::-;1302:20;;-1:-1:-1;;;;;1351:54:92;;1341:65;;1331:93;;1420:1;1417;1410:12;1435:160;1500:5;1545:2;1536:6;1531:3;1527:16;1523:25;1520:45;;;1561:1;1558;1551:12;1600:441;1701:6;1709;1762:2;1750:9;1741:7;1737:23;1733:32;1730:52;;;1778:1;1775;1768:12;1730:52;1801:29;1820:9;1801:29;:::i;:::-;1791:39;;1881:2;1870:9;1866:18;1853:32;1908:18;1900:6;1897:30;1894:50;;;1940:1;1937;1930:12;1894:50;1963:72;2027:7;2018:6;2007:9;2003:22;1963:72;:::i;:::-;1953:82;;;1600:441;;;;;:::o;2046:127::-;2107:10;2102:3;2098:20;2095:1;2088:31;2138:4;2135:1;2128:15;2162:4;2159:1;2152:15;2178:696;2253:10;2294:6;2288:13;2327:1;2323:2;2320:9;2310:140;;2372:10;2367:3;2363:20;2360:1;2353:31;2407:4;2404:1;2397:15;2435:4;2432:1;2425:15;2310:140;2459:15;;-1:-1:-1;2521:4:92;2509:17;;;2503:24;-1:-1:-1;;;;;2620:21:92;;;2604:14;;;2597:45;;;;2696:4;2684:17;;;2678:24;2674:33;;2658:14;;;2651:57;2762:4;2750:17;;;2744:24;2740:33;;;2724:14;;;2717:57;2824:4;2812:17;;;2806:24;2790:14;;;2783:48;2863:4;2854:14;;2178:696::o;2879:730::-;3130:2;3182:21;;;3252:13;;3155:18;;;3274:22;;;3101:4;;3130:2;3353:15;;;;3327:2;3312:18;;;3101:4;3396:187;3410:6;3407:1;3404:13;3396:187;;;3466:69;3531:3;3522:6;3516:13;3466:69;:::i;:::-;3558:15;;;;3459:76;-1:-1:-1;3432:1:92;3425:9;3396:187;;;-1:-1:-1;3600:3:92;;2879:730;-1:-1:-1;;;;;;2879:730:92:o;3614:601::-;3723:6;3731;3739;3792:2;3780:9;3771:7;3767:23;3763:32;3760:52;;;3808:1;3805;3798:12;3760:52;3831:29;3850:9;3831:29;:::i;:::-;3821:39;;3910:2;3899:9;3895:18;3882:32;3954:6;3947:5;3943:18;3936:5;3933:29;3923:57;;3976:1;3973;3966:12;3923:57;3999:5;-1:-1:-1;4055:2:92;4040:18;;4027:32;4082:18;4071:30;;4068:50;;;4114:1;4111;4104:12;4068:50;4137:72;4201:7;4192:6;4181:9;4177:22;4137:72;:::i;:::-;4127:82;;;3614:601;;;;;:::o;4220:250::-;4305:1;4315:113;4329:6;4326:1;4323:13;4315:113;;;4405:11;;;4399:18;4386:11;;;4379:39;4351:2;4344:10;4315:113;;;-1:-1:-1;;4462:1:92;4444:16;;4437:27;4220:250::o;4475:270::-;4516:3;4554:5;4548:12;4581:6;4576:3;4569:19;4597:76;4666:6;4659:4;4654:3;4650:14;4643:4;4636:5;4632:16;4597:76;:::i;:::-;4727:2;4706:15;-1:-1:-1;;4702:29:92;4693:39;;;;4734:4;4689:50;;4475:270;-1:-1:-1;;4475:270:92:o;4750:1162::-;4883:12;;4849:4;4904:17;;;4970:19;;4840:14;;;4998:20;;;4810:3;;5067:4;;5094:21;;;;5045:2;5036:12;;;4810:3;5143:224;5157:6;5154:1;5151:13;5143:224;;;5224:13;;-1:-1:-1;;;;;5220:62:92;5206:77;;5342:15;;;;5305:14;;;;5179:1;5172:9;5143:224;;;-1:-1:-1;;5404:14:92;;;5398:21;5449:15;;;5435:12;;;5428:37;5517:21;;5547:23;;;5627;;;;-1:-1:-1;5670:1:92;;5588:14;;;5680:205;5696:8;5691:3;5688:17;5680:205;;;5760:73;5827:5;5816:8;5810:15;5760:73;:::i;:::-;5751:82;;5872:2;5862:8;5858:17;5846:29;;5724:1;5719:3;5715:11;5708:18;;5680:205;;;-1:-1:-1;5901:5:92;4750:1162;-1:-1:-1;;;;;;4750:1162:92:o;5917:450::-;6164:2;6153:9;6146:21;6127:4;6190:44;6230:2;6219:9;6215:18;6207:6;6190:44;:::i;:::-;6282:9;6274:6;6270:22;6265:2;6254:9;6250:18;6243:50;6310:51;6354:6;6346;6310:51;:::i;:::-;6302:59;5917:450;-1:-1:-1;;;;;5917:450:92:o;6372:127::-;6433:10;6428:3;6424:20;6421:1;6414:31;6464:4;6461:1;6454:15;6488:4;6485:1;6478:15;6504:995;6581:6;6589;6642:2;6630:9;6621:7;6617:23;6613:32;6610:52;;;6658:1;6655;6648:12;6610:52;6681:29;6700:9;6681:29;:::i;:::-;6671:39;;6761:2;6750:9;6746:18;6733:32;6784:18;6825:2;6817:6;6814:14;6811:34;;;6841:1;6838;6831:12;6811:34;6879:6;6868:9;6864:22;6854:32;;6924:7;6917:4;6913:2;6909:13;6905:27;6895:55;;6946:1;6943;6936:12;6895:55;6982:2;6969:16;7004:2;7000;6997:10;6994:36;;;7010:18;;:::i;:::-;7085:2;7079:9;7053:2;7139:13;;-1:-1:-1;;7135:22:92;;;7159:2;7131:31;7127:40;7115:53;;;7183:18;;;7203:22;;;7180:46;7177:72;;;7229:18;;:::i;:::-;7269:10;7265:2;7258:22;7304:2;7296:6;7289:18;7344:7;7339:2;7334;7330;7326:11;7322:20;7319:33;7316:53;;;7365:1;7362;7355:12;7316:53;7421:2;7416;7412;7408:11;7403:2;7395:6;7391:15;7378:46;7466:1;7461:2;7456;7448:6;7444:15;7440:24;7433:35;7487:6;7477:16;;;;;;;6504:995;;;;;:::o;7504:410::-;-1:-1:-1;;;;;7737:6:92;7733:55;7722:9;7715:74;7825:2;7820;7809:9;7805:18;7798:30;7696:4;7845:63;7904:2;7893:9;7889:18;7881:6;7845:63;:::i;8164:127::-;8225:10;8220:3;8216:20;8213:1;8206:31;8256:4;8253:1;8246:15;8280:4;8277:1;8270:15;8296:208;-1:-1:-1;;;;;8440:10:92;;;8428;;;8424:27;;8463:12;;;8460:38;;;8478:18;;:::i;8509:127::-;8570:10;8565:3;8561:20;8558:1;8551:31;8601:4;8598:1;8591:15;8625:4;8622:1;8615:15;8641:234;8680:3;-1:-1:-1;;;;;8785:2:92;8778:5;8774:14;8812:2;8803:7;8800:15;8797:41;;8818:18;;:::i;:::-;8867:1;8854:15;;8641:234;-1:-1:-1;;;8641:234:92:o;9638:287::-;9767:3;9805:6;9799:13;9821:66;9880:6;9875:3;9868:4;9860:6;9856:17;9821:66;:::i;:::-;9903:16;;;;;9638:287;-1:-1:-1;;9638:287:92:o;10288:219::-;10437:2;10426:9;10419:21;10400:4;10457:44;10497:2;10486:9;10482:18;10474:6;10457:44;:::i"},"gasEstimates":{"creation":{"codeDepositCost":"651000","executionCost":"infinite","totalCost":"infinite"},"external":{"implementation()":"infinite","prepareInstallation(address,bytes)":"infinite","prepareUninstallation(address,(address,address[],bytes))":"infinite","prepareUpdate(address,uint16,(address,address[],bytes))":"624","protocolVersion()":"infinite","supportsInterface(bytes4)":"482"}},"methodIdentifiers":{"implementation()":"5c60da1b","prepareInstallation(address,bytes)":"f10832f1","prepareUninstallation(address,(address,address[],bytes))":"9cb0a124","prepareUpdate(address,uint16,(address,address[],bytes))":"a8a9c29e","protocolVersion()":"2ae9c600","supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ConflictingValues\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NonUpgradeablePlugin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_dao\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"prepareInstallation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"plugin\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address[]\",\"name\":\"helpers\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"enum PermissionLib.Operation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"condition\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PermissionLib.MultiTargetPermission[]\",\"name\":\"permissions\",\"type\":\"tuple[]\"}],\"internalType\":\"struct IPluginSetup.PreparedSetupData\",\"name\":\"preparedSetupData\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_dao\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"plugin\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"currentHelpers\",\"type\":\"address[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IPluginSetup.SetupPayload\",\"name\":\"_payload\",\"type\":\"tuple\"}],\"name\":\"prepareUninstallation\",\"outputs\":[{\"components\":[{\"internalType\":\"enum PermissionLib.Operation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"condition\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PermissionLib.MultiTargetPermission[]\",\"name\":\"permissions\",\"type\":\"tuple[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_dao\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"_fromBuild\",\"type\":\"uint16\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"plugin\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"currentHelpers\",\"type\":\"address[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IPluginSetup.SetupPayload\",\"name\":\"_payload\",\"type\":\"tuple\"}],\"name\":\"prepareUpdate\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address[]\",\"name\":\"helpers\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"enum PermissionLib.Operation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"condition\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PermissionLib.MultiTargetPermission[]\",\"name\":\"permissions\",\"type\":\"tuple[]\"}],\"internalType\":\"struct IPluginSetup.PreparedSetupData\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"protocolVersion\",\"outputs\":[{\"internalType\":\"uint8[3]\",\"name\":\"\",\"type\":\"uint8[3]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"DO NOT USE IN PRODUCTION!\",\"kind\":\"dev\",\"methods\":{\"implementation()\":{\"details\":\"The implementation can be instantiated via the `new` keyword, cloned via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)), or proxied via the UUPS proxy pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\",\"returns\":{\"_0\":\"The address of the plugin implementation contract.\"}},\"prepareInstallation(address,bytes)\":{\"params\":{\"_dao\":\"The address of the installing DAO.\",\"_data\":\"The bytes-encoded data containing the input parameters for the installation as specified in the plugin's build metadata JSON file.\"},\"returns\":{\"plugin\":\"The address of the `Plugin` contract being prepared for installation.\",\"preparedSetupData\":\"The deployed plugin's relevant data which consists of helpers and permissions.\"}},\"prepareUninstallation(address,(address,address[],bytes))\":{\"params\":{\"_dao\":\"The address of the uninstalling DAO.\",\"_payload\":\"The relevant data necessary for the `prepareUninstallation`. See above.\"},\"returns\":{\"permissions\":\"The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the uninstalling DAO.\"}},\"prepareUpdate(address,uint16,(address,address[],bytes))\":{\"details\":\"Since the underlying plugin is non-upgradeable, this non-virtual function must always revert.\",\"params\":{\"_dao\":\"The address of the updating DAO.\",\"_fromBuild\":\"The build number of the plugin to update from.\",\"_payload\":\"The relevant data necessary for the `prepareUpdate`. See above.\"},\"returns\":{\"_0\":\"The initialization data to be passed to upgradeable contracts when the update is applied in the `PluginSetupProcessor`.\",\"_1\":\"The deployed plugin's relevant data which consists of helpers and permissions.\"}},\"protocolVersion()\":{\"details\":\"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\",\"returns\":{\"_0\":\"Returns the semantic Aragon OSx protocol version number.\"}},\"supportsInterface(bytes4)\":{\"params\":{\"_interfaceId\":\"The ID of the interface.\"},\"returns\":{\"_0\":\"Returns `true` if the interface is supported.\"}}},\"version\":1},\"userdoc\":{\"errors\":{\"NonUpgradeablePlugin()\":[{\"notice\":\"Thrown when attempting to prepare an update on a non-upgradeable plugin.\"}]},\"kind\":\"user\",\"methods\":{\"implementation()\":{\"notice\":\"Returns the plugin implementation address.\"},\"prepareInstallation(address,bytes)\":{\"notice\":\"Prepares the installation of a plugin.\"},\"prepareUninstallation(address,(address,address[],bytes))\":{\"notice\":\"Prepares the uninstallation of a plugin.\"},\"prepareUpdate(address,uint16,(address,address[],bytes))\":{\"notice\":\"Prepares the update of a plugin.\"},\"protocolVersion()\":{\"notice\":\"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Checks if this or the parent contract supports an interface by its ID.\"}},\"notice\":\"A mock plugin setup of a cloneable plugin to be deployed via the minimal proxy pattern. v1.1 (Release 1, Build 1)\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/mocks/plugin/PluginCloneableSetupMock.sol\":\"PluginCloneableSetupMockBuild1\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n function __Context_init() internal onlyInitializing {\\n }\\n\\n function __Context_init_unchained() internal onlyInitializing {\\n }\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n function _contextSuffixLength() internal view virtual returns (uint256) {\\n return 0;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x75097e35253e7fb282ee4d7f27a80eaacfa759923185bf17302a89cbc059c5ef\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165Upgradeable.sol\\\";\\nimport {Initializable} from \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165Upgradeable is Initializable, IERC165Upgradeable {\\n function __ERC165_init() internal onlyInitializing {\\n }\\n\\n function __ERC165_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165Upgradeable).interfaceId;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0xd90d7723512df65ae417adaf0801042940f0dabd60039ceeaffe34aa5b238da1\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165Upgradeable {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/IERC1967.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (interfaces/IERC1967.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\\n *\\n * _Available since v4.8.3._\\n */\\ninterface IERC1967 {\\n /**\\n * @dev Emitted when the implementation is upgraded.\\n */\\n event Upgraded(address indexed implementation);\\n\\n /**\\n * @dev Emitted when the admin account has changed.\\n */\\n event AdminChanged(address previousAdmin, address newAdmin);\\n\\n /**\\n * @dev Emitted when the beacon is changed.\\n */\\n event BeaconUpgraded(address indexed beacon);\\n}\\n\",\"keccak256\":\"0x3cbef5ebc24b415252e2f8c0c9254555d30d9f085603b4b80d9b5ed20ab87e90\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822Proxiable {\\n /**\\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n * address.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy.\\n */\\n function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/Clones.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/Clones.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev https://eips.ethereum.org/EIPS/eip-1167[EIP 1167] is a standard for\\n * deploying minimal proxy contracts, also known as \\\"clones\\\".\\n *\\n * > To simply and cheaply clone contract functionality in an immutable way, this standard specifies\\n * > a minimal bytecode implementation that delegates all calls to a known, fixed address.\\n *\\n * The library includes functions to deploy a proxy using either `create` (traditional deployment) or `create2`\\n * (salted deterministic deployment). It also includes functions to predict the addresses of clones deployed using the\\n * deterministic method.\\n *\\n * _Available since v3.4._\\n */\\nlibrary Clones {\\n /**\\n * @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`.\\n *\\n * This function uses the create opcode, which should never revert.\\n */\\n function clone(address implementation) internal returns (address instance) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n // Cleans the upper 96 bits of the `implementation` word, then packs the first 3 bytes\\n // of the `implementation` address with the bytecode before the address.\\n mstore(0x00, or(shr(0xe8, shl(0x60, implementation)), 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000))\\n // Packs the remaining 17 bytes of `implementation` with the bytecode after the address.\\n mstore(0x20, or(shl(0x78, implementation), 0x5af43d82803e903d91602b57fd5bf3))\\n instance := create(0, 0x09, 0x37)\\n }\\n require(instance != address(0), \\\"ERC1167: create failed\\\");\\n }\\n\\n /**\\n * @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`.\\n *\\n * This function uses the create2 opcode and a `salt` to deterministically deploy\\n * the clone. Using the same `implementation` and `salt` multiple time will revert, since\\n * the clones cannot be deployed twice at the same address.\\n */\\n function cloneDeterministic(address implementation, bytes32 salt) internal returns (address instance) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n // Cleans the upper 96 bits of the `implementation` word, then packs the first 3 bytes\\n // of the `implementation` address with the bytecode before the address.\\n mstore(0x00, or(shr(0xe8, shl(0x60, implementation)), 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000))\\n // Packs the remaining 17 bytes of `implementation` with the bytecode after the address.\\n mstore(0x20, or(shl(0x78, implementation), 0x5af43d82803e903d91602b57fd5bf3))\\n instance := create2(0, 0x09, 0x37, salt)\\n }\\n require(instance != address(0), \\\"ERC1167: create2 failed\\\");\\n }\\n\\n /**\\n * @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}.\\n */\\n function predictDeterministicAddress(\\n address implementation,\\n bytes32 salt,\\n address deployer\\n ) internal pure returns (address predicted) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n let ptr := mload(0x40)\\n mstore(add(ptr, 0x38), deployer)\\n mstore(add(ptr, 0x24), 0x5af43d82803e903d91602b57fd5bf3ff)\\n mstore(add(ptr, 0x14), implementation)\\n mstore(ptr, 0x3d602d80600a3d3981f3363d3d373d3d3d363d73)\\n mstore(add(ptr, 0x58), salt)\\n mstore(add(ptr, 0x78), keccak256(add(ptr, 0x0c), 0x37))\\n predicted := keccak256(add(ptr, 0x43), 0x55)\\n }\\n }\\n\\n /**\\n * @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}.\\n */\\n function predictDeterministicAddress(\\n address implementation,\\n bytes32 salt\\n ) internal view returns (address predicted) {\\n return predictDeterministicAddress(implementation, salt, address(this));\\n }\\n}\\n\",\"keccak256\":\"0x01f055f5c26ba25d7f83e9aa9ba877fbea4d0bf22227de046ea67494bc932999\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (proxy/ERC1967/ERC1967Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../Proxy.sol\\\";\\nimport \\\"./ERC1967Upgrade.sol\\\";\\n\\n/**\\n * @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an\\n * implementation address that can be changed. This address is stored in storage in the location specified by\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the\\n * implementation behind the proxy.\\n */\\ncontract ERC1967Proxy is Proxy, ERC1967Upgrade {\\n /**\\n * @dev Initializes the upgradeable proxy with an initial implementation specified by `_logic`.\\n *\\n * If `_data` is nonempty, it's used as data in a delegate call to `_logic`. This will typically be an encoded\\n * function call, and allows initializing the storage of the proxy like a Solidity constructor.\\n */\\n constructor(address _logic, bytes memory _data) payable {\\n _upgradeToAndCall(_logic, _data, false);\\n }\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _implementation() internal view virtual override returns (address impl) {\\n return ERC1967Upgrade._getImplementation();\\n }\\n}\\n\",\"keccak256\":\"0xa2b22da3032e50b55f95ec1d13336102d675f341167aa76db571ef7f8bb7975d\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../beacon/IBeacon.sol\\\";\\nimport \\\"../../interfaces/IERC1967.sol\\\";\\nimport \\\"../../interfaces/draft-IERC1822.sol\\\";\\nimport \\\"../../utils/Address.sol\\\";\\nimport \\\"../../utils/StorageSlot.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n */\\nabstract contract ERC1967Upgrade is IERC1967 {\\n // This is the keccak-256 hash of \\\"eip1967.proxy.rollback\\\" subtracted by 1\\n bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n /**\\n * @dev Storage slot with the address of the current implementation.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _getImplementation() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 implementation slot.\\n */\\n function _setImplementation(address newImplementation) private {\\n require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n }\\n\\n /**\\n * @dev Perform implementation upgrade\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeTo(address newImplementation) internal {\\n _setImplementation(newImplementation);\\n emit Upgraded(newImplementation);\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCall(address newImplementation, bytes memory data, bool forceCall) internal {\\n _upgradeTo(newImplementation);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(newImplementation, data);\\n }\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCallUUPS(address newImplementation, bytes memory data, bool forceCall) internal {\\n // Upgrades from old implementations will perform a rollback test. This test requires the new\\n // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n // this special case will break upgrade paths from old UUPS implementation to new ones.\\n if (StorageSlot.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n _setImplementation(newImplementation);\\n } else {\\n try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n require(slot == _IMPLEMENTATION_SLOT, \\\"ERC1967Upgrade: unsupported proxiableUUID\\\");\\n } catch {\\n revert(\\\"ERC1967Upgrade: new implementation is not UUPS\\\");\\n }\\n _upgradeToAndCall(newImplementation, data, forceCall);\\n }\\n }\\n\\n /**\\n * @dev Storage slot with the admin of the contract.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _getAdmin() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_ADMIN_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 admin slot.\\n */\\n function _setAdmin(address newAdmin) private {\\n require(newAdmin != address(0), \\\"ERC1967: new admin is the zero address\\\");\\n StorageSlot.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n */\\n function _changeAdmin(address newAdmin) internal {\\n emit AdminChanged(_getAdmin(), newAdmin);\\n _setAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\\n */\\n bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n /**\\n * @dev Returns the current beacon.\\n */\\n function _getBeacon() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_BEACON_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new beacon in the EIP1967 beacon slot.\\n */\\n function _setBeacon(address newBeacon) private {\\n require(Address.isContract(newBeacon), \\\"ERC1967: new beacon is not a contract\\\");\\n require(\\n Address.isContract(IBeacon(newBeacon).implementation()),\\n \\\"ERC1967: beacon implementation is not a contract\\\"\\n );\\n StorageSlot.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n }\\n\\n /**\\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n *\\n * Emits a {BeaconUpgraded} event.\\n */\\n function _upgradeBeaconToAndCall(address newBeacon, bytes memory data, bool forceCall) internal {\\n _setBeacon(newBeacon);\\n emit BeaconUpgraded(newBeacon);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x3b21ae06bf5957f73fa16754b0669c77b7abd8ba6c072d35c3281d446fdb86c2\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (proxy/Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\\n * be specified by overriding the virtual {_implementation} function.\\n *\\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\\n * different contract through the {_delegate} function.\\n *\\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\\n */\\nabstract contract Proxy {\\n /**\\n * @dev Delegates the current call to `implementation`.\\n *\\n * This function does not return to its internal call site, it will return directly to the external caller.\\n */\\n function _delegate(address implementation) internal virtual {\\n assembly {\\n // Copy msg.data. We take full control of memory in this inline assembly\\n // block because it will not return to Solidity code. We overwrite the\\n // Solidity scratch pad at memory position 0.\\n calldatacopy(0, 0, calldatasize())\\n\\n // Call the implementation.\\n // out and outsize are 0 because we don't know the size yet.\\n let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)\\n\\n // Copy the returned data.\\n returndatacopy(0, 0, returndatasize())\\n\\n switch result\\n // delegatecall returns 0 on error.\\n case 0 {\\n revert(0, returndatasize())\\n }\\n default {\\n return(0, returndatasize())\\n }\\n }\\n }\\n\\n /**\\n * @dev This is a virtual function that should be overridden so it returns the address to which the fallback function\\n * and {_fallback} should delegate.\\n */\\n function _implementation() internal view virtual returns (address);\\n\\n /**\\n * @dev Delegates the current call to the address returned by `_implementation()`.\\n *\\n * This function does not return to its internal call site, it will return directly to the external caller.\\n */\\n function _fallback() internal virtual {\\n _beforeFallback();\\n _delegate(_implementation());\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\\n * function in the contract matches the call data.\\n */\\n fallback() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data\\n * is empty.\\n */\\n receive() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`\\n * call, or as part of the Solidity `fallback` or `receive` functions.\\n *\\n * If overridden should call `super._beforeFallback()`.\\n */\\n function _beforeFallback() internal virtual {}\\n}\\n\",\"keccak256\":\"0xc130fe33f1b2132158531a87734153293f6d07bc263ff4ac90e85da9c82c0e27\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeacon {\\n /**\\n * @dev Must return an address that can be used as a delegate call target.\\n *\\n * {BeaconProxy} will check that this address is a contract.\\n */\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/StorageSlot.sol)\\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```solidity\\n * contract ERC1967 {\\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n * function _getImplementation() internal view returns (address) {\\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n * }\\n *\\n * function _setImplementation(address newImplementation) internal {\\n * require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n * }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._\\n * _Available since v4.9 for `string`, `bytes`._\\n */\\nlibrary StorageSlot {\\n struct AddressSlot {\\n address value;\\n }\\n\\n struct BooleanSlot {\\n bool value;\\n }\\n\\n struct Bytes32Slot {\\n bytes32 value;\\n }\\n\\n struct Uint256Slot {\\n uint256 value;\\n }\\n\\n struct StringSlot {\\n string value;\\n }\\n\\n struct BytesSlot {\\n bytes value;\\n }\\n\\n /**\\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n */\\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n */\\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n */\\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n */\\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` with member `value` located at `slot`.\\n */\\n function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\\n */\\n function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` with member `value` located at `slot`.\\n */\\n function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\\n */\\n function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n}\\n\",\"keccak256\":\"0xf09e68aa0dc6722a25bc46490e8d48ed864466d17313b8a0b254c36b54e49899\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165 is IERC165 {\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165).interfaceId;\\n }\\n}\\n\",\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"src/dao/IDAO.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IDAO\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for DAOs within the Aragon App DAO framework.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IDAO {\\n /// @notice The action struct to be consumed by the DAO's `execute` function resulting in an external call.\\n /// @param to The address to call.\\n /// @param value The native token value to be sent with the call.\\n /// @param data The bytes-encoded function selector and calldata for the call.\\n struct Action {\\n address to;\\n uint256 value;\\n bytes data;\\n }\\n\\n /// @notice Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\\n /// @param _where The address of the contract.\\n /// @param _who The address of a EOA or contract to give the permissions.\\n /// @param _permissionId The permission identifier.\\n /// @param _data The optional data passed to the `PermissionCondition` registered.\\n /// @return Returns true if the address has permission, false if not.\\n function hasPermission(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes memory _data\\n ) external view returns (bool);\\n\\n /// @notice Updates the DAO metadata (e.g., an IPFS hash).\\n /// @param _metadata The IPFS hash of the new metadata object.\\n function setMetadata(bytes calldata _metadata) external;\\n\\n /// @notice Emitted when the DAO metadata is updated.\\n /// @param metadata The IPFS hash of the new metadata object.\\n event MetadataSet(bytes metadata);\\n\\n /// @notice Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted.\\n /// @param _callId The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce.\\n /// @param _actions The array of actions.\\n /// @param _allowFailureMap A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @return The array of results obtained from the executed actions in `bytes`.\\n /// @return The resulting failure map containing the actions have actually failed.\\n function execute(\\n bytes32 _callId,\\n Action[] memory _actions,\\n uint256 _allowFailureMap\\n ) external returns (bytes[] memory, uint256);\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param actor The address of the caller.\\n /// @param callId The ID of the call.\\n /// @param actions The array of actions executed.\\n /// @param allowFailureMap The allow failure map encoding which actions are allowed to fail.\\n /// @param failureMap The failure map encoding which actions have failed.\\n /// @param execResults The array with the results of the executed actions.\\n /// @dev The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce.\\n event Executed(\\n address indexed actor,\\n bytes32 callId,\\n Action[] actions,\\n uint256 allowFailureMap,\\n uint256 failureMap,\\n bytes[] execResults\\n );\\n\\n /// @notice Emitted when a standard callback is registered.\\n /// @param interfaceId The ID of the interface.\\n /// @param callbackSelector The selector of the callback function.\\n /// @param magicNumber The magic number to be registered for the callback function selector.\\n event StandardCallbackRegistered(\\n bytes4 interfaceId,\\n bytes4 callbackSelector,\\n bytes4 magicNumber\\n );\\n\\n /// @notice Deposits (native) tokens to the DAO contract with a reference string.\\n /// @param _token The address of the token or address(0) in case of the native token.\\n /// @param _amount The amount of tokens to deposit.\\n /// @param _reference The reference describing the deposit reason.\\n function deposit(address _token, uint256 _amount, string calldata _reference) external payable;\\n\\n /// @notice Emitted when a token deposit has been made to the DAO.\\n /// @param sender The address of the sender.\\n /// @param token The address of the deposited token.\\n /// @param amount The amount of tokens deposited.\\n /// @param _reference The reference describing the deposit reason.\\n event Deposited(\\n address indexed sender,\\n address indexed token,\\n uint256 amount,\\n string _reference\\n );\\n\\n /// @notice Emitted when a native token deposit has been made to the DAO.\\n /// @dev This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).\\n /// @param sender The address of the sender.\\n /// @param amount The amount of native tokens deposited.\\n event NativeTokenDeposited(address sender, uint256 amount);\\n\\n /// @notice Setter for the trusted forwarder verifying the meta transaction.\\n /// @param _trustedForwarder The trusted forwarder address.\\n function setTrustedForwarder(address _trustedForwarder) external;\\n\\n /// @notice Getter for the trusted forwarder verifying the meta transaction.\\n /// @return The trusted forwarder address.\\n function getTrustedForwarder() external view returns (address);\\n\\n /// @notice Emitted when a new TrustedForwarder is set on the DAO.\\n /// @param forwarder the new forwarder address.\\n event TrustedForwarderSet(address forwarder);\\n\\n /// @notice Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\\n /// @param _hash The hash of the data to be signed.\\n /// @param _signature The signature byte array associated with `_hash`.\\n /// @return Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not.\\n function isValidSignature(bytes32 _hash, bytes memory _signature) external returns (bytes4);\\n\\n /// @notice Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\\n /// @param _interfaceId The ID of the interface.\\n /// @param _callbackSelector The selector of the callback function.\\n /// @param _magicNumber The magic number to be registered for the function signature.\\n function registerStandardCallback(\\n bytes4 _interfaceId,\\n bytes4 _callbackSelector,\\n bytes4 _magicNumber\\n ) external;\\n\\n /// @notice Removed function being left here to not corrupt the IDAO interface ID. Any call will revert.\\n /// @dev Introduced in v1.0.0. Removed in v1.4.0.\\n function setSignatureValidator(address) external;\\n}\\n\",\"keccak256\":\"0xb7f615523c26de042edce98731c658f44a1edb2464387ac1b642c4c69f57128e\",\"license\":\"AGPL-3.0-or-later\"},\"src/mocks/plugin/PluginCloneableMock.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\n/* solhint-disable one-contract-per-file */\\npragma solidity ^0.8.8;\\n\\nimport {PluginCloneable} from \\\"../../plugin/PluginCloneable.sol\\\";\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice A mock cloneable plugin to be deployed via the minimal proxy pattern.\\n/// v1.1 (Release 1, Build 1)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginCloneableMockBuild1 is PluginCloneable {\\n uint256 public state1;\\n\\n function initialize(IDAO _dao) external initializer {\\n __PluginCloneable_init(_dao);\\n state1 = 1;\\n }\\n}\\n\\n/// @notice A mock cloneable plugin to be deployed via the minimal proxy pattern.\\n/// v1.1 (Release 1, Build 2)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginCloneableMockBuild2 is PluginCloneable {\\n uint256 public state1;\\n uint256 public state2;\\n\\n function initialize(IDAO _dao) external initializer {\\n __PluginCloneable_init(_dao);\\n state1 = 1;\\n state2 = 2;\\n }\\n}\\n\\n/// @notice A mock cloneable plugin missing an initializer function.\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginCloneableMockBad is PluginCloneable {\\n uint256 public state1;\\n\\n function notAnInitializer(IDAO _dao) external {\\n __PluginCloneable_init(_dao);\\n state1 = 1;\\n }\\n}\\n\",\"keccak256\":\"0x1bb271f7b553040fad7907e97b860aa833aec9aefe7477e00ba7bdfd80d84e98\",\"license\":\"AGPL-3.0-or-later\"},\"src/mocks/plugin/PluginCloneableSetupMock.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\n/* solhint-disable one-contract-per-file */\\npragma solidity ^0.8.8;\\n\\nimport {PermissionLib} from \\\"../../permission/PermissionLib.sol\\\";\\nimport {IPluginSetup} from \\\"../../plugin/setup/IPluginSetup.sol\\\";\\nimport {PluginSetup} from \\\"../../plugin/setup/PluginSetup.sol\\\";\\nimport {ProxyLib} from \\\"../../utils/deployment/ProxyLib.sol\\\";\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\nimport {mockPermissions, mockHelpers} from \\\"./PluginSetupMockData.sol\\\";\\nimport {PluginCloneableMockBuild1, PluginCloneableMockBuild2} from \\\"./PluginCloneableMock.sol\\\";\\n\\n/// @notice A mock plugin setup of a cloneable plugin to be deployed via the minimal proxy pattern.\\n/// v1.1 (Release 1, Build 1)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginCloneableSetupMockBuild1 is PluginSetup {\\n using ProxyLib for address;\\n\\n uint16 internal constant THIS_BUILD = 1;\\n\\n constructor() PluginSetup(address(new PluginCloneableMockBuild1())) {}\\n\\n /// @inheritdoc IPluginSetup\\n function prepareInstallation(\\n address _dao,\\n bytes memory\\n ) external returns (address plugin, PreparedSetupData memory preparedSetupData) {\\n bytes memory initData = abi.encodeCall(PluginCloneableMockBuild1.initialize, (IDAO(_dao)));\\n plugin = implementation().deployMinimalProxy(initData);\\n preparedSetupData.helpers = mockHelpers(THIS_BUILD);\\n preparedSetupData.permissions = mockPermissions(\\n 0,\\n THIS_BUILD,\\n PermissionLib.Operation.Grant\\n );\\n }\\n\\n /// @inheritdoc IPluginSetup\\n function prepareUninstallation(\\n address _dao,\\n SetupPayload calldata _payload\\n ) external pure returns (PermissionLib.MultiTargetPermission[] memory permissions) {\\n (_dao, _payload);\\n permissions = mockPermissions(0, THIS_BUILD, PermissionLib.Operation.Revoke);\\n }\\n}\\n\\n/// @notice A mock plugin setup of a cloneable plugin to be deployed via the minimal proxy pattern.\\n/// v1.2 (Release 1, Build 2)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginCloneableSetupMockBuild2 is PluginSetup {\\n using ProxyLib for address;\\n\\n uint16 internal constant THIS_BUILD = 2;\\n\\n constructor() PluginSetup(address(new PluginCloneableMockBuild2())) {}\\n\\n /// @inheritdoc IPluginSetup\\n function prepareInstallation(\\n address _dao,\\n bytes memory\\n ) external returns (address plugin, PreparedSetupData memory preparedSetupData) {\\n bytes memory initData = abi.encodeCall(PluginCloneableMockBuild2.initialize, (IDAO(_dao)));\\n plugin = implementation().deployMinimalProxy(initData);\\n preparedSetupData.helpers = mockHelpers(THIS_BUILD);\\n preparedSetupData.permissions = mockPermissions(\\n 0,\\n THIS_BUILD,\\n PermissionLib.Operation.Grant\\n );\\n }\\n\\n /// @inheritdoc IPluginSetup\\n function prepareUninstallation(\\n address _dao,\\n SetupPayload calldata _payload\\n ) external pure returns (PermissionLib.MultiTargetPermission[] memory permissions) {\\n (_dao, _payload);\\n permissions = mockPermissions(0, THIS_BUILD, PermissionLib.Operation.Revoke);\\n }\\n}\\n\",\"keccak256\":\"0xfac0ce75e9d665bc9e2900c5cfa3f2667e0ea73573c4f46147453c6582eac1de\",\"license\":\"AGPL-3.0-or-later\"},\"src/mocks/plugin/PluginSetupMockData.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {PermissionLib} from \\\"../../permission/PermissionLib.sol\\\";\\n\\naddress constant NO_CONDITION = address(0);\\n\\nerror ConflictingValues();\\n\\n/// @notice Creates a mock `MultiTargetPermission` array by converting a range of `uint160` values into `address` values.\\n/// @param rangeStart The start of the range.\\n/// @param rangeEnd The end of the range (that is not included).\\n/// @param op The permission operation type.\\n/// @return permissions The mock array of permissions.\\n/// @dev DO NOT USE IN PRODUCTION!\\nfunction mockPermissions(\\n uint160 rangeStart,\\n uint160 rangeEnd,\\n PermissionLib.Operation op\\n) pure returns (PermissionLib.MultiTargetPermission[] memory permissions) {\\n if (rangeStart > rangeEnd) revert ConflictingValues();\\n\\n permissions = new PermissionLib.MultiTargetPermission[](rangeEnd - rangeStart);\\n\\n for (uint160 i = rangeStart; i < rangeEnd; i++) {\\n permissions[i - rangeStart] = PermissionLib.MultiTargetPermission({\\n operation: op,\\n where: address(i),\\n who: address(i),\\n condition: PermissionLib.NO_CONDITION,\\n permissionId: keccak256(\\\"MOCK_PERMISSION\\\")\\n });\\n }\\n}\\n\\n/// @notice Creates a mock array of helper addresses of specified length by converting `uint160` values starting from 0 into `address` values.\\n/// @param len The length of the helper array.\\n/// @return helpers The mock array of helper addresses.\\n/// @dev DO NOT USE IN PRODUCTION!\\nfunction mockHelpers(uint160 len) pure returns (address[] memory helpers) {\\n helpers = new address[](len);\\n\\n for (uint160 i = 0; i < len; i++) {\\n helpers[i] = address(i);\\n }\\n}\\n\",\"keccak256\":\"0x529d1b7ea4c348fe18edf81a044792ca8aa1f6ad9a7d2edfd35e38bf8372abf9\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/PermissionLib.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title PermissionLib\\n/// @author Aragon X - 2021-2023\\n/// @notice A library containing objects for permission processing.\\n/// @custom:security-contact sirt@aragon.org\\nlibrary PermissionLib {\\n /// @notice A constant expressing that no condition is applied to a permission.\\n address public constant NO_CONDITION = address(0);\\n\\n /// @notice The types of permission operations available in the `PermissionManager`.\\n /// @param Grant The grant operation setting a permission without a condition.\\n /// @param Revoke The revoke operation removing a permission (that was granted with or without a condition).\\n /// @param GrantWithCondition The grant operation setting a permission with a condition.\\n enum Operation {\\n Grant,\\n Revoke,\\n GrantWithCondition\\n }\\n\\n /// @notice A struct containing the information for a permission to be applied on a single target contract without a condition.\\n /// @param operation The permission operation type.\\n /// @param who The address (EOA or contract) receiving the permission.\\n /// @param permissionId The permission identifier.\\n struct SingleTargetPermission {\\n Operation operation;\\n address who;\\n bytes32 permissionId;\\n }\\n\\n /// @notice A struct containing the information for a permission to be applied on multiple target contracts, optionally, with a condition.\\n /// @param operation The permission operation type.\\n /// @param where The address of the target contract for which `who` receives permission.\\n /// @param who The address (EOA or contract) receiving the permission.\\n /// @param condition The `PermissionCondition` that will be asked for authorization on calls connected to the specified permission identifier.\\n /// @param permissionId The permission identifier.\\n struct MultiTargetPermission {\\n Operation operation;\\n address where;\\n address who;\\n address condition;\\n bytes32 permissionId;\\n }\\n}\\n\",\"keccak256\":\"0x470faf3c4891ebc6420ef6cc09f6098917568ccc79268c90954d1478199b6097\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/DaoAuthorizableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ContextUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\\\";\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\nimport {_auth} from \\\"./auth.sol\\\";\\n\\n/// @title DaoAuthorizableUpgradeable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract contract providing a meta-transaction compatible modifier for upgradeable or cloneable contracts to authorize function calls through an associated DAO.\\n/// @dev Make sure to call `__DaoAuthorizableUpgradeable_init` during initialization of the inheriting contract.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract DaoAuthorizableUpgradeable is ContextUpgradeable {\\n /// @notice The associated DAO managing the permissions of inheriting contracts.\\n IDAO private dao_;\\n\\n /// @notice Initializes the contract by setting the associated DAO.\\n /// @param _dao The associated DAO address.\\n // solhint-disable-next-line func-name-mixedcase\\n function __DaoAuthorizableUpgradeable_init(IDAO _dao) internal onlyInitializing {\\n dao_ = _dao;\\n }\\n\\n /// @notice Returns the DAO contract.\\n /// @return The DAO contract.\\n function dao() public view returns (IDAO) {\\n return dao_;\\n }\\n\\n /// @notice A modifier to make functions on inheriting contracts authorized. Permissions to call the function are checked through the associated DAO's permission manager.\\n /// @param _permissionId The permission identifier required to call the method this modifier is applied to.\\n modifier auth(bytes32 _permissionId) {\\n _auth(dao_, address(this), _msgSender(), _permissionId, _msgData());\\n _;\\n }\\n\\n /// @notice This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain (see [OpenZeppelin's guide about storage gaps](https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps)).\\n uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0x7fac6b01b037ba1cb9d6a22d3f43b0785037dcf496ffb672434d9bf7227d2585\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/auth.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice Thrown if a call is unauthorized in the associated DAO.\\n/// @param dao The associated DAO.\\n/// @param where The context in which the authorization reverted.\\n/// @param who The address (EOA or contract) missing the permission.\\n/// @param permissionId The permission identifier.\\nerror DaoUnauthorized(address dao, address where, address who, bytes32 permissionId);\\n\\n/// @notice A free function checking if a caller is granted permissions on a target contract via a permission identifier that redirects the approval to a `PermissionCondition` if this was specified in the setup.\\n/// @param _where The address of the target contract for which `who` receives permission.\\n/// @param _who The address (EOA or contract) owning the permission.\\n/// @param _permissionId The permission identifier.\\n/// @param _data The optional data passed to the `PermissionCondition` registered.\\n/// @custom:security-contact sirt@aragon.org\\nfunction _auth(\\n IDAO _dao,\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes calldata _data\\n) view {\\n if (!_dao.hasPermission(_where, _who, _permissionId, _data))\\n revert DaoUnauthorized({\\n dao: address(_dao),\\n where: _where,\\n who: _who,\\n permissionId: _permissionId\\n });\\n}\\n\",\"keccak256\":\"0x878764b4f87fe0651fb3798fb9cb87c952f8c6caf6ae79c7f09de84df6c00298\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/IPlugin.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IPlugin\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the traits of a plugin.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IPlugin {\\n enum PluginType {\\n UUPS,\\n Cloneable,\\n Constructable\\n }\\n\\n /// @notice Returns the plugin's type\\n function pluginType() external view returns (PluginType);\\n}\\n\",\"keccak256\":\"0xc57cd0d10b6380ab7f54c713a509e88fd8f4ad9288313a0e8e12b8887817ddfe\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/PluginCloneable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ERC165Upgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\\\";\\n\\nimport {IProtocolVersion} from \\\"../utils/versioning/IProtocolVersion.sol\\\";\\nimport {ProtocolVersion} from \\\"../utils/versioning/ProtocolVersion.sol\\\";\\nimport {DaoAuthorizableUpgradeable} from \\\"../permission/auth/DaoAuthorizableUpgradeable.sol\\\";\\nimport {IDAO} from \\\"../dao/IDAO.sol\\\";\\nimport {IPlugin} from \\\"./IPlugin.sol\\\";\\n\\n/// @title PluginCloneable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract, non-upgradeable contract to inherit from when creating a plugin being deployed via the minimal clones pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)).\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract PluginCloneable is\\n IPlugin,\\n ERC165Upgradeable,\\n DaoAuthorizableUpgradeable,\\n ProtocolVersion\\n{\\n /// @notice Disables the initializers on the implementation contract to prevent it from being left uninitialized.\\n /// @custom:oz-upgrades-unsafe-allow constructor\\n constructor() {\\n _disableInitializers();\\n }\\n\\n /// @notice Initializes the plugin by storing the associated DAO.\\n /// @param _dao The DAO contract.\\n // solhint-disable-next-line func-name-mixedcase\\n function __PluginCloneable_init(IDAO _dao) internal virtual onlyInitializing {\\n __DaoAuthorizableUpgradeable_init(_dao);\\n }\\n\\n /// @inheritdoc IPlugin\\n function pluginType() public pure override returns (PluginType) {\\n return PluginType.Cloneable;\\n }\\n\\n /// @notice Checks if this or the parent contract supports an interface by its ID.\\n /// @param _interfaceId The ID of the interface.\\n /// @return Returns `true` if the interface is supported.\\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\\n return\\n _interfaceId == type(IPlugin).interfaceId ||\\n _interfaceId == type(IProtocolVersion).interfaceId ||\\n super.supportsInterface(_interfaceId);\\n }\\n}\\n\",\"keccak256\":\"0x68e260b9b370d68252f0c707461d5e4c2188a7bfed42ed9192657b36330a1f7a\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/setup/IPluginSetup.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {PermissionLib} from \\\"../../permission/PermissionLib.sol\\\";\\n\\n// solhint-disable-next-line no-unused-import\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @title IPluginSetup\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for a plugin setup contract to be consumed by the `PluginSetupProcessor` for plugin installations, updates, and uninstallations.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IPluginSetup {\\n /// @notice The data associated with a prepared setup.\\n /// @param helpers The address array of helpers (contracts or EOAs) associated with this plugin version after the installation or update.\\n /// @param permissions The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the installing or updating DAO.\\n struct PreparedSetupData {\\n address[] helpers;\\n PermissionLib.MultiTargetPermission[] permissions;\\n }\\n\\n /// @notice The payload for plugin updates and uninstallations containing the existing contracts as well as optional data to be consumed by the plugin setup.\\n /// @param plugin The address of the `Plugin`.\\n /// @param currentHelpers The address array of all current helpers (contracts or EOAs) associated with the plugin to update from.\\n /// @param data The bytes-encoded data containing the input parameters for the preparation of update/uninstall as specified in the corresponding ABI on the version's metadata.\\n struct SetupPayload {\\n address plugin;\\n address[] currentHelpers;\\n bytes data;\\n }\\n\\n /// @notice Prepares the installation of a plugin.\\n /// @param _dao The address of the installing DAO.\\n /// @param _data The bytes-encoded data containing the input parameters for the installation as specified in the plugin's build metadata JSON file.\\n /// @return plugin The address of the `Plugin` contract being prepared for installation.\\n /// @return preparedSetupData The deployed plugin's relevant data which consists of helpers and permissions.\\n function prepareInstallation(\\n address _dao,\\n bytes calldata _data\\n ) external returns (address plugin, PreparedSetupData memory preparedSetupData);\\n\\n /// @notice Prepares the update of a plugin.\\n /// @param _dao The address of the updating DAO.\\n /// @param _fromBuild The build number of the plugin to update from.\\n /// @param _payload The relevant data necessary for the `prepareUpdate`. See above.\\n /// @return initData The initialization data to be passed to upgradeable contracts when the update is applied in the `PluginSetupProcessor`.\\n /// @return preparedSetupData The deployed plugin's relevant data which consists of helpers and permissions.\\n function prepareUpdate(\\n address _dao,\\n uint16 _fromBuild,\\n SetupPayload calldata _payload\\n ) external returns (bytes memory initData, PreparedSetupData memory preparedSetupData);\\n\\n /// @notice Prepares the uninstallation of a plugin.\\n /// @param _dao The address of the uninstalling DAO.\\n /// @param _payload The relevant data necessary for the `prepareUninstallation`. See above.\\n /// @return permissions The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the uninstalling DAO.\\n function prepareUninstallation(\\n address _dao,\\n SetupPayload calldata _payload\\n ) external returns (PermissionLib.MultiTargetPermission[] memory permissions);\\n\\n /// @notice Returns the plugin implementation address.\\n /// @return The address of the plugin implementation contract.\\n /// @dev The implementation can be instantiated via the `new` keyword, cloned via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)), or proxied via the UUPS proxy pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0x21c99995208039ac6ace219b6f273243811dc2aa66399e8e499e43ec30b82fa9\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/setup/PluginSetup.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ERC165} from \\\"@openzeppelin/contracts/utils/introspection/ERC165.sol\\\";\\n\\nimport {IProtocolVersion} from \\\"../../utils/versioning/IProtocolVersion.sol\\\";\\nimport {ProtocolVersion} from \\\"../../utils/versioning/ProtocolVersion.sol\\\";\\nimport {IPluginSetup} from \\\"./IPluginSetup.sol\\\";\\n\\n/// @title PluginSetup\\n/// @author Aragon X - 2022-2024\\n/// @notice An abstract contract to inherit from to implement the plugin setup for non-upgradeable plugins, i.e,\\n/// - `Plugin` being deployed via the `new` keyword\\n/// - `PluginCloneable` being deployed via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)).\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract PluginSetup is ERC165, IPluginSetup, ProtocolVersion {\\n /// @notice The address of the plugin implementation contract for initial block explorer verification and, in the case of `PluginClonable` implementations, to create [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167) clones from.\\n address internal immutable IMPLEMENTATION;\\n\\n /// @notice Thrown when attempting to prepare an update on a non-upgradeable plugin.\\n error NonUpgradeablePlugin();\\n\\n /// @notice The contract constructor, that setting the plugin implementation contract.\\n /// @param _implementation The address of the plugin implementation contract.\\n constructor(address _implementation) {\\n IMPLEMENTATION = _implementation;\\n }\\n\\n /// @inheritdoc IPluginSetup\\n /// @dev Since the underlying plugin is non-upgradeable, this non-virtual function must always revert.\\n function prepareUpdate(\\n address _dao,\\n uint16 _fromBuild,\\n SetupPayload calldata _payload\\n ) external pure returns (bytes memory, PreparedSetupData memory) {\\n (_dao, _fromBuild, _payload);\\n revert NonUpgradeablePlugin();\\n }\\n\\n /// @notice Checks if this or the parent contract supports an interface by its ID.\\n /// @param _interfaceId The ID of the interface.\\n /// @return Returns `true` if the interface is supported.\\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\\n return\\n _interfaceId == type(IPluginSetup).interfaceId ||\\n _interfaceId == type(IProtocolVersion).interfaceId ||\\n super.supportsInterface(_interfaceId);\\n }\\n\\n /// @inheritdoc IPluginSetup\\n function implementation() public view returns (address) {\\n return IMPLEMENTATION;\\n }\\n}\\n\",\"keccak256\":\"0x93044f8080758c5cf8d621e3614b8150f55572a1770880106a49dfa53784a9d2\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/deployment/ProxyLib.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ERC1967Proxy} from \\\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol\\\";\\nimport {Clones} from \\\"@openzeppelin/contracts/proxy/Clones.sol\\\";\\nimport {Address} from \\\"@openzeppelin/contracts/utils/Address.sol\\\";\\n\\n/// @title ProxyLib\\n/// @author Aragon X - 2024\\n/// @notice A library containing methods for the deployment of proxies via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)) and minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)).\\n/// @custom:security-contact sirt@aragon.org\\nlibrary ProxyLib {\\n using Address for address;\\n using Clones for address;\\n\\n /// @notice Creates an [ERC-1967](https://eips.ethereum.org/EIPS/eip-1967) UUPS proxy contract pointing to a logic contract and allows to immediately initialize it.\\n /// @param _logic The logic contract the proxy is pointing to.\\n /// @param _initCalldata The initialization data for this contract.\\n /// @return uupsProxy The address of the UUPS proxy contract created.\\n /// @dev If `_initCalldata` is non-empty, it is used in a delegate call to the `_logic` contract. This will typically be an encoded function call initializing the storage of the proxy (see [OpenZeppelin ERC1967Proxy-constructor](https://docs.openzeppelin.com/contracts/4.x/api/proxy#ERC1967Proxy-constructor-address-bytes-)).\\n function deployUUPSProxy(\\n address _logic,\\n bytes memory _initCalldata\\n ) internal returns (address uupsProxy) {\\n uupsProxy = address(new ERC1967Proxy({_logic: _logic, _data: _initCalldata}));\\n }\\n\\n /// @notice Creates an [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167) minimal proxy contract, also known as clones, pointing to a logic contract and allows to immediately initialize it.\\n /// @param _logic The logic contract the proxy is pointing to.\\n /// @param _initCalldata The initialization data for this contract.\\n /// @return minimalProxy The address of the minimal proxy contract created.\\n /// @dev If `_initCalldata` is non-empty, it is used in a call to the clone contract. This will typically be an encoded function call initializing the storage of the contract.\\n function deployMinimalProxy(\\n address _logic,\\n bytes memory _initCalldata\\n ) internal returns (address minimalProxy) {\\n minimalProxy = _logic.clone();\\n if (_initCalldata.length > 0) {\\n minimalProxy.functionCall({data: _initCalldata});\\n }\\n }\\n}\\n\",\"keccak256\":\"0xef0d1790dfa026381c021daa2ec7267357497f58cd4a2fa5c64e72e0dea95acc\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/IProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IProtocolVersion\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the semantic Aragon OSx protocol version number.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IProtocolVersion {\\n /// @notice Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\\n /// @return _version Returns the semantic Aragon OSx protocol version number.\\n /// @dev This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\\n function protocolVersion() external view returns (uint8[3] memory _version);\\n}\\n\",\"keccak256\":\"0x00a4da654d21dc1bdadbdc8bd54bb86c378c56f85e461ccc31303628ea621361\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/ProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IProtocolVersion} from \\\"./IProtocolVersion.sol\\\";\\n\\n/// @title ProtocolVersion\\n/// @author Aragon X - 2023\\n/// @notice An abstract, stateless, non-upgradeable contract providing the current Aragon OSx protocol version number.\\n/// @dev Do not add any new variables to this contract that would shift down storage in the inheritance chain.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract ProtocolVersion is IProtocolVersion {\\n // IMPORTANT: Do not add any storage variable, see the above notice.\\n\\n /// @inheritdoc IProtocolVersion\\n function protocolVersion() public pure returns (uint8[3] memory) {\\n return [1, 4, 0];\\n }\\n}\\n\",\"keccak256\":\"0x3975c937be935f687c6b6b8f379071232681e98cf04b175d72781b819ea52bdb\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"errors":{"NonUpgradeablePlugin()":[{"notice":"Thrown when attempting to prepare an update on a non-upgradeable plugin."}]},"kind":"user","methods":{"implementation()":{"notice":"Returns the plugin implementation address."},"prepareInstallation(address,bytes)":{"notice":"Prepares the installation of a plugin."},"prepareUninstallation(address,(address,address[],bytes))":{"notice":"Prepares the uninstallation of a plugin."},"prepareUpdate(address,uint16,(address,address[],bytes))":{"notice":"Prepares the update of a plugin."},"protocolVersion()":{"notice":"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with."},"supportsInterface(bytes4)":{"notice":"Checks if this or the parent contract supports an interface by its ID."}},"notice":"A mock plugin setup of a cloneable plugin to be deployed via the minimal proxy pattern. v1.1 (Release 1, Build 1)","version":1}},"PluginCloneableSetupMockBuild2":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"ConflictingValues","type":"error"},{"inputs":[],"name":"NonUpgradeablePlugin","type":"error"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_dao","type":"address"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"prepareInstallation","outputs":[{"internalType":"address","name":"plugin","type":"address"},{"components":[{"internalType":"address[]","name":"helpers","type":"address[]"},{"components":[{"internalType":"enum PermissionLib.Operation","name":"operation","type":"uint8"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"condition","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"internalType":"struct PermissionLib.MultiTargetPermission[]","name":"permissions","type":"tuple[]"}],"internalType":"struct IPluginSetup.PreparedSetupData","name":"preparedSetupData","type":"tuple"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_dao","type":"address"},{"components":[{"internalType":"address","name":"plugin","type":"address"},{"internalType":"address[]","name":"currentHelpers","type":"address[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct IPluginSetup.SetupPayload","name":"_payload","type":"tuple"}],"name":"prepareUninstallation","outputs":[{"components":[{"internalType":"enum PermissionLib.Operation","name":"operation","type":"uint8"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"condition","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"internalType":"struct PermissionLib.MultiTargetPermission[]","name":"permissions","type":"tuple[]"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_dao","type":"address"},{"internalType":"uint16","name":"_fromBuild","type":"uint16"},{"components":[{"internalType":"address","name":"plugin","type":"address"},{"internalType":"address[]","name":"currentHelpers","type":"address[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct IPluginSetup.SetupPayload","name":"_payload","type":"tuple"}],"name":"prepareUpdate","outputs":[{"internalType":"bytes","name":"","type":"bytes"},{"components":[{"internalType":"address[]","name":"helpers","type":"address[]"},{"components":[{"internalType":"enum PermissionLib.Operation","name":"operation","type":"uint8"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"condition","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"internalType":"struct PermissionLib.MultiTargetPermission[]","name":"permissions","type":"tuple[]"}],"internalType":"struct IPluginSetup.PreparedSetupData","name":"","type":"tuple"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"protocolVersion","outputs":[{"internalType":"uint8[3]","name":"","type":"uint8[3]"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"DO NOT USE IN PRODUCTION!","kind":"dev","methods":{"implementation()":{"details":"The implementation can be instantiated via the `new` keyword, cloned via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)), or proxied via the UUPS proxy pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).","returns":{"_0":"The address of the plugin implementation contract."}},"prepareInstallation(address,bytes)":{"params":{"_dao":"The address of the installing DAO.","_data":"The bytes-encoded data containing the input parameters for the installation as specified in the plugin's build metadata JSON file."},"returns":{"plugin":"The address of the `Plugin` contract being prepared for installation.","preparedSetupData":"The deployed plugin's relevant data which consists of helpers and permissions."}},"prepareUninstallation(address,(address,address[],bytes))":{"params":{"_dao":"The address of the uninstalling DAO.","_payload":"The relevant data necessary for the `prepareUninstallation`. See above."},"returns":{"permissions":"The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the uninstalling DAO."}},"prepareUpdate(address,uint16,(address,address[],bytes))":{"details":"Since the underlying plugin is non-upgradeable, this non-virtual function must always revert.","params":{"_dao":"The address of the updating DAO.","_fromBuild":"The build number of the plugin to update from.","_payload":"The relevant data necessary for the `prepareUpdate`. See above."},"returns":{"_0":"The initialization data to be passed to upgradeable contracts when the update is applied in the `PluginSetupProcessor`.","_1":"The deployed plugin's relevant data which consists of helpers and permissions."}},"protocolVersion()":{"details":"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.","returns":{"_0":"Returns the semantic Aragon OSx protocol version number."}},"supportsInterface(bytes4)":{"params":{"_interfaceId":"The ID of the interface."},"returns":{"_0":"Returns `true` if the interface is supported."}}},"version":1},"evm":{"bytecode":{"functionDebugData":{"@_11414":{"entryPoint":null,"id":11414,"parameterSlots":0,"returnSlots":0},"@_14307":{"entryPoint":null,"id":14307,"parameterSlots":1,"returnSlots":0}},"generatedSources":[],"linkReferences":{},"object":"60a060405234801561001057600080fd5b5060405161001d9061004b565b604051809103906000f080158015610039573d6000803e3d6000fd5b506001600160a01b0316608052610058565b6105da80610d3183390190565b608051610cb86100796000396000818160c101526102980152610cb86000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c80639cb0a124116100505780639cb0a124146100eb578063a8a9c29e1461010b578063f10832f11461012c57600080fd5b806301ffc9a7146100775780632ae9c6001461009f5780635c60da1b146100b4575b600080fd5b61008a6100853660046107fe565b61014d565b60405190151581526020015b60405180910390f35b6100a761019e565b6040516100969190610828565b6040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152602001610096565b6100fe6100f9366004610885565b6101c8565b604051610096919061094f565b61011e610119366004610998565b6101df565b604051610096929190610ae2565b61013f61013a366004610b26565b610217565b604051610096929190610be8565b60006001600160e01b0319821663099718b560e41b148061017d57506001600160e01b03198216621574e360e91b145b8061019857506301ffc9a760e01b6001600160e01b03198316145b92915050565b6101a66107e0565b5060408051606081018252600181526004602082015260009181019190915290565b60606101d86000600260016102f3565b9392505050565b60606101fe604051806040016040528060608152602001606081525090565b60405163a112810160e01b815260040160405180910390fd5b6000610236604051806040016040528060608152602001606081525090565b6040516001600160a01b038516602482015260009060440160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663189acdbd60e31b17905290506102c9816102ba7f000000000000000000000000000000000000000000000000000000000000000090565b6001600160a01b031690610478565b92506102d560026104b0565b82526102e460006002816102f3565b60208301525090939092509050565b6060826001600160a01b0316846001600160a01b0316111561032857604051633a4013cd60e21b815260040160405180910390fd5b6103328484610c20565b6001600160a01b031667ffffffffffffffff81111561035357610353610b10565b6040519080825280602002602001820160405280156103ac57816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282526000199092019101816103715790505b509050835b836001600160a01b0316816001600160a01b03161015610470576040518060a001604052808460028111156103e8576103e86108d3565b81526001600160a01b038316602082018190526040820152600060608201527fa280eec51ab8e1bc4b6b0c1b7f1bde785761b787a49db404e3e9338ed9b016ef608090910152826104398784610c20565b6001600160a01b03168151811061045257610452610c40565b6020026020010181905250808061046890610c56565b9150506103b1565b509392505050565b600061048c836001600160a01b0316610569565b825190915015610198576104a96001600160a01b0382168361060f565b5092915050565b6060816001600160a01b031667ffffffffffffffff8111156104d4576104d4610b10565b6040519080825280602002602001820160405280156104fd578160200160208202803683370190505b50905060005b826001600160a01b0316816001600160a01b03161015610563578082826001600160a01b03168151811061053957610539610c40565b6001600160a01b03909216602092830291909101909101528061055b81610c56565b915050610503565b50919050565b6000763d602d80600a3d3981f3363d3d373d3d3d363d730000008260601b60e81c176000526e5af43d82803e903d91602b57fd5bf38260781b17602052603760096000f090506001600160a01b03811661060a5760405162461bcd60e51b815260206004820152601660248201527f455243313136373a20637265617465206661696c65640000000000000000000060448201526064015b60405180910390fd5b919050565b60606101d8838360006040518060400160405280601e81526020017f416464726573733a206c6f772d6c6576656c2063616c6c206661696c656400008152506060824710156106c65760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610601565b600080866001600160a01b031685876040516106e29190610c7c565b60006040518083038185875af1925050503d806000811461071f576040519150601f19603f3d011682016040523d82523d6000602084013e610724565b606091505b509150915061073587838387610742565b925050505b949350505050565b606083156107b15782516000036107aa576001600160a01b0385163b6107aa5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610601565b508161073a565b61073a83838151156107c65781518083602001fd5b8060405162461bcd60e51b81526004016106019190610c98565b60405180606001604052806003906020820280368337509192915050565b60006020828403121561081057600080fd5b81356001600160e01b0319811681146101d857600080fd5b60608101818360005b600381101561085357815160ff16835260209283019290910190600101610831565b50505092915050565b80356001600160a01b038116811461060a57600080fd5b60006060828403121561056357600080fd5b6000806040838503121561089857600080fd5b6108a18361085c565b9150602083013567ffffffffffffffff8111156108bd57600080fd5b6108c985828601610873565b9150509250929050565b634e487b7160e01b600052602160045260246000fd5b600081516003811061090b57634e487b7160e01b600052602160045260246000fd5b8352506020818101516001600160a01b0390811691840191909152604080830151821690840152606080830151909116908301526080908101519082015260a00190565b6020808252825182820181905260009190848201906040850190845b8181101561098c5761097e8385516108e9565b93850193925060010161096b565b50909695505050505050565b6000806000606084860312156109ad57600080fd5b6109b68461085c565b9250602084013561ffff811681146109cd57600080fd5b9150604084013567ffffffffffffffff8111156109e957600080fd5b6109f586828701610873565b9150509250925092565b60005b83811015610a1a578181015183820152602001610a02565b50506000910152565b60008151808452610a3b8160208601602086016109ff565b601f01601f19169290920160200192915050565b805160408084528151908401819052600091602091908201906060860190845b81811015610a945783516001600160a01b031683529284019291840191600101610a6f565b50508483015186820387850152805180835290840192506000918401905b80831015610ad757610ac58285516108e9565b91508484019350600183019250610ab2565b509695505050505050565b604081526000610af56040830185610a23565b8281036020840152610b078185610a4f565b95945050505050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215610b3957600080fd5b610b428361085c565b9150602083013567ffffffffffffffff80821115610b5f57600080fd5b818501915085601f830112610b7357600080fd5b813581811115610b8557610b85610b10565b604051601f8201601f19908116603f01168101908382118183101715610bad57610bad610b10565b81604052828152886020848701011115610bc657600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6001600160a01b038316815260406020820152600061073a6040830184610a4f565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b038281168282160390808211156104a9576104a9610c0a565b634e487b7160e01b600052603260045260246000fd5b60006001600160a01b03808316818103610c7257610c72610c0a565b6001019392505050565b60008251610c8e8184602087016109ff565b9190910192915050565b6020815260006101d86020830184610a2356fea164736f6c6343000811000a608060405234801561001057600080fd5b5061001961001e565b6100dd565b600054610100900460ff161561008a5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116146100db576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6104ee806100ec6000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806341de68301161005b57806341de6830146100e75780636accab8c146100f6578063c4d66de81461010d578063efe51cca1461012257600080fd5b806301ffc9a7146100825780632ae9c600146100aa5780634162169f146100bf575b600080fd5b61009561009036600461041e565b61012b565b60405190151581526020015b60405180910390f35b6100b261017c565b6040516100a1919061044f565b60655460405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100a1565b60016040516100a19190610483565b6100ff60975481565b6040519081526020016100a1565b61012061011b3660046104ab565b6101a6565b005b6100ff60985481565b60006001600160e01b0319821663041de68360e41b148061015b57506001600160e01b03198216621574e360e91b145b8061017657506301ffc9a760e01b6001600160e01b03198316145b92915050565b610184610400565b5060408051606081018252600181526004602082015260009181019190915290565b600054610100900460ff16158080156101c65750600054600160ff909116105b806101e05750303b1580156101e0575060005460ff166001145b6102575760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b6000805460ff19166001179055801561027a576000805461ff0019166101001790555b610283826102d7565b6001609755600260985580156102d3576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b600054610100900460ff166103425760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840161024e565b61034b8161034e565b50565b600054610100900460ff166103b95760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840161024e565b606580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60405180606001604052806003906020820280368337509192915050565b60006020828403121561043057600080fd5b81356001600160e01b03198116811461044857600080fd5b9392505050565b60608101818360005b600381101561047a57815160ff16835260209283019290910190600101610458565b50505092915050565b60208101600383106104a557634e487b7160e01b600052602160045260246000fd5b91905290565b6000602082840312156104bd57600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461044857600080fdfea164736f6c6343000811000a","opcodes":"PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x1D SWAP1 PUSH2 0x4B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH2 0x39 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x80 MSTORE PUSH2 0x58 JUMP JUMPDEST PUSH2 0x5DA DUP1 PUSH2 0xD31 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH2 0xCB8 PUSH2 0x79 PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH1 0xC1 ADD MSTORE PUSH2 0x298 ADD MSTORE PUSH2 0xCB8 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x72 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9CB0A124 GT PUSH2 0x50 JUMPI DUP1 PUSH4 0x9CB0A124 EQ PUSH2 0xEB JUMPI DUP1 PUSH4 0xA8A9C29E EQ PUSH2 0x10B JUMPI DUP1 PUSH4 0xF10832F1 EQ PUSH2 0x12C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x77 JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0x9F JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0xB4 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8A PUSH2 0x85 CALLDATASIZE PUSH1 0x4 PUSH2 0x7FE JUMP JUMPDEST PUSH2 0x14D JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xA7 PUSH2 0x19E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x96 SWAP2 SWAP1 PUSH2 0x828 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x96 JUMP JUMPDEST PUSH2 0xFE PUSH2 0xF9 CALLDATASIZE PUSH1 0x4 PUSH2 0x885 JUMP JUMPDEST PUSH2 0x1C8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x96 SWAP2 SWAP1 PUSH2 0x94F JUMP JUMPDEST PUSH2 0x11E PUSH2 0x119 CALLDATASIZE PUSH1 0x4 PUSH2 0x998 JUMP JUMPDEST PUSH2 0x1DF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x96 SWAP3 SWAP2 SWAP1 PUSH2 0xAE2 JUMP JUMPDEST PUSH2 0x13F PUSH2 0x13A CALLDATASIZE PUSH1 0x4 PUSH2 0xB26 JUMP JUMPDEST PUSH2 0x217 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x96 SWAP3 SWAP2 SWAP1 PUSH2 0xBE8 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x99718B5 PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x17D JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x198 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1A6 PUSH2 0x7E0 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1D8 PUSH1 0x0 PUSH1 0x2 PUSH1 0x1 PUSH2 0x2F3 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1FE PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xA1128101 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x236 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 PUSH1 0x44 ADD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x189ACDBD PUSH1 0xE3 SHL OR SWAP1 MSTORE SWAP1 POP PUSH2 0x2C9 DUP2 PUSH2 0x2BA PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH2 0x478 JUMP JUMPDEST SWAP3 POP PUSH2 0x2D5 PUSH1 0x2 PUSH2 0x4B0 JUMP JUMPDEST DUP3 MSTORE PUSH2 0x2E4 PUSH1 0x0 PUSH1 0x2 DUP2 PUSH2 0x2F3 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP SWAP1 SWAP4 SWAP1 SWAP3 POP SWAP1 POP JUMP JUMPDEST PUSH1 0x60 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH2 0x328 JUMPI PUSH1 0x40 MLOAD PUSH4 0x3A4013CD PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x332 DUP5 DUP5 PUSH2 0xC20 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x353 JUMPI PUSH2 0x353 PUSH2 0xB10 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x3AC JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD DUP3 SWAP1 MSTORE SWAP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 DUP3 ADD MSTORE DUP3 MSTORE PUSH1 0x0 NOT SWAP1 SWAP3 ADD SWAP2 ADD DUP2 PUSH2 0x371 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP DUP4 JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT ISZERO PUSH2 0x470 JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 DUP5 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x3E8 JUMPI PUSH2 0x3E8 PUSH2 0x8D3 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x60 DUP3 ADD MSTORE PUSH32 0xA280EEC51AB8E1BC4B6B0C1B7F1BDE785761B787A49DB404E3E9338ED9B016EF PUSH1 0x80 SWAP1 SWAP2 ADD MSTORE DUP3 PUSH2 0x439 DUP8 DUP5 PUSH2 0xC20 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MLOAD DUP2 LT PUSH2 0x452 JUMPI PUSH2 0x452 PUSH2 0xC40 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP DUP1 DUP1 PUSH2 0x468 SWAP1 PUSH2 0xC56 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x3B1 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x48C DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x569 JUMP JUMPDEST DUP3 MLOAD SWAP1 SWAP2 POP ISZERO PUSH2 0x198 JUMPI PUSH2 0x4A9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP4 PUSH2 0x60F JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x4D4 JUMPI PUSH2 0x4D4 PUSH2 0xB10 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x4FD JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT ISZERO PUSH2 0x563 JUMPI DUP1 DUP3 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MLOAD DUP2 LT PUSH2 0x539 JUMPI PUSH2 0x539 PUSH2 0xC40 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE DUP1 PUSH2 0x55B DUP2 PUSH2 0xC56 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x503 JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH23 0x3D602D80600A3D3981F3363D3D373D3D3D363D73000000 DUP3 PUSH1 0x60 SHL PUSH1 0xE8 SHR OR PUSH1 0x0 MSTORE PUSH15 0x5AF43D82803E903D91602B57FD5BF3 DUP3 PUSH1 0x78 SHL OR PUSH1 0x20 MSTORE PUSH1 0x37 PUSH1 0x9 PUSH1 0x0 CREATE SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x60A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313136373A20637265617465206661696C656400000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1D8 DUP4 DUP4 PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x416464726573733A206C6F772D6C6576656C2063616C6C206661696C65640000 DUP2 MSTORE POP PUSH1 0x60 DUP3 SELFBALANCE LT ISZERO PUSH2 0x6C6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A20696E73756666696369656E742062616C616E636520666F PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x722063616C6C0000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x601 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP8 PUSH1 0x40 MLOAD PUSH2 0x6E2 SWAP2 SWAP1 PUSH2 0xC7C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x71F JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x724 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x735 DUP8 DUP4 DUP4 DUP8 PUSH2 0x742 JUMP JUMPDEST SWAP3 POP POP POP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x7B1 JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0x7AA JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0x7AA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x601 JUMP JUMPDEST POP DUP2 PUSH2 0x73A JUMP JUMPDEST PUSH2 0x73A DUP4 DUP4 DUP2 MLOAD ISZERO PUSH2 0x7C6 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x601 SWAP2 SWAP1 PUSH2 0xC98 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x810 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x1D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0x853 JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x831 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x60A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x563 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x898 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8A1 DUP4 PUSH2 0x85C JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x8BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8C9 DUP6 DUP3 DUP7 ADD PUSH2 0x873 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP2 MLOAD PUSH1 0x3 DUP2 LT PUSH2 0x90B JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP4 MSTORE POP PUSH1 0x20 DUP2 DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP1 DUP4 ADD MLOAD DUP3 AND SWAP1 DUP5 ADD MSTORE PUSH1 0x60 DUP1 DUP4 ADD MLOAD SWAP1 SWAP2 AND SWAP1 DUP4 ADD MSTORE PUSH1 0x80 SWAP1 DUP2 ADD MLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x98C JUMPI PUSH2 0x97E DUP4 DUP6 MLOAD PUSH2 0x8E9 JUMP JUMPDEST SWAP4 DUP6 ADD SWAP4 SWAP3 POP PUSH1 0x1 ADD PUSH2 0x96B JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x9AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9B6 DUP5 PUSH2 0x85C JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH2 0x9CD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x9E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9F5 DUP7 DUP3 DUP8 ADD PUSH2 0x873 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xA1A JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xA02 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0xA3B DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x9FF JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x40 DUP1 DUP5 MSTORE DUP2 MLOAD SWAP1 DUP5 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x20 SWAP2 SWAP1 DUP3 ADD SWAP1 PUSH1 0x60 DUP7 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xA94 JUMPI DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0xA6F JUMP JUMPDEST POP POP DUP5 DUP4 ADD MLOAD DUP7 DUP3 SUB DUP8 DUP6 ADD MSTORE DUP1 MLOAD DUP1 DUP4 MSTORE SWAP1 DUP5 ADD SWAP3 POP PUSH1 0x0 SWAP2 DUP5 ADD SWAP1 JUMPDEST DUP1 DUP4 LT ISZERO PUSH2 0xAD7 JUMPI PUSH2 0xAC5 DUP3 DUP6 MLOAD PUSH2 0x8E9 JUMP JUMPDEST SWAP2 POP DUP5 DUP5 ADD SWAP4 POP PUSH1 0x1 DUP4 ADD SWAP3 POP PUSH2 0xAB2 JUMP JUMPDEST POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 PUSH2 0xAF5 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0xA23 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0xB07 DUP2 DUP6 PUSH2 0xA4F JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xB39 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB42 DUP4 PUSH2 0x85C JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xB5F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xB73 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0xB85 JUMPI PUSH2 0xB85 PUSH2 0xB10 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0xBAD JUMPI PUSH2 0xBAD PUSH2 0xB10 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0xBC6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0x73A PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0xA4F JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND DUP3 DUP3 AND SUB SWAP1 DUP1 DUP3 GT ISZERO PUSH2 0x4A9 JUMPI PUSH2 0x4A9 PUSH2 0xC0A JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND DUP2 DUP2 SUB PUSH2 0xC72 JUMPI PUSH2 0xC72 PUSH2 0xC0A JUMP JUMPDEST PUSH1 0x1 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0xC8E DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x9FF JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x1D8 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0xA23 JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x19 PUSH2 0x1E JUMP JUMPDEST PUSH2 0xDD JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x8A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x27 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320696E697469 PUSH1 0x44 DUP3 ADD MSTORE PUSH7 0x616C697A696E67 PUSH1 0xC8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xFF SWAP1 DUP2 AND EQ PUSH2 0xDB JUMPI PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST JUMP JUMPDEST PUSH2 0x4EE DUP1 PUSH2 0xEC PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x7D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x41DE6830 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x41DE6830 EQ PUSH2 0xE7 JUMPI DUP1 PUSH4 0x6ACCAB8C EQ PUSH2 0xF6 JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0x10D JUMPI DUP1 PUSH4 0xEFE51CCA EQ PUSH2 0x122 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x82 JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0xAA JUMPI DUP1 PUSH4 0x4162169F EQ PUSH2 0xBF JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x95 PUSH2 0x90 CALLDATASIZE PUSH1 0x4 PUSH2 0x41E JUMP JUMPDEST PUSH2 0x12B JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xB2 PUSH2 0x17C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA1 SWAP2 SWAP1 PUSH2 0x44F JUMP JUMPDEST PUSH1 0x65 SLOAD PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xA1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x40 MLOAD PUSH2 0xA1 SWAP2 SWAP1 PUSH2 0x483 JUMP JUMPDEST PUSH2 0xFF PUSH1 0x97 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xA1 JUMP JUMPDEST PUSH2 0x120 PUSH2 0x11B CALLDATASIZE PUSH1 0x4 PUSH2 0x4AB JUMP JUMPDEST PUSH2 0x1A6 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xFF PUSH1 0x98 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x41DE683 PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x15B JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x176 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x184 PUSH2 0x400 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 DUP1 ISZERO PUSH2 0x1C6 JUMPI POP PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xFF SWAP1 SWAP2 AND LT JUMPDEST DUP1 PUSH2 0x1E0 JUMPI POP ADDRESS EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1E0 JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF AND PUSH1 0x1 EQ JUMPDEST PUSH2 0x257 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x647920696E697469616C697A6564000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE DUP1 ISZERO PUSH2 0x27A JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND PUSH2 0x100 OR SWAP1 SSTORE JUMPDEST PUSH2 0x283 DUP3 PUSH2 0x2D7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x97 SSTORE PUSH1 0x2 PUSH1 0x98 SSTORE DUP1 ISZERO PUSH2 0x2D3 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x342 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x24E JUMP JUMPDEST PUSH2 0x34B DUP2 PUSH2 0x34E JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x3B9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x24E JUMP JUMPDEST PUSH1 0x65 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x430 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x448 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0x47A JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x458 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH1 0x3 DUP4 LT PUSH2 0x4A5 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 SWAP1 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x448 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"2043:1127:49:-:0;;;2183:70;;;;;;;;;;2217:31;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1454:32:82;;;2043:1127:49;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_revert_9263":{"entryPoint":null,"id":9263,"parameterSlots":2,"returnSlots":0},"@clone_5295":{"entryPoint":1385,"id":5295,"parameterSlots":1,"returnSlots":1},"@deployMinimalProxy_14592":{"entryPoint":1144,"id":14592,"parameterSlots":2,"returnSlots":1},"@functionCallWithValue_9088":{"entryPoint":null,"id":9088,"parameterSlots":4,"returnSlots":1},"@functionCall_9004":{"entryPoint":1551,"id":9004,"parameterSlots":2,"returnSlots":1},"@implementation_14370":{"entryPoint":null,"id":14370,"parameterSlots":0,"returnSlots":1},"@isContract_8952":{"entryPoint":null,"id":8952,"parameterSlots":1,"returnSlots":1},"@mockHelpers_11760":{"entryPoint":1200,"id":11760,"parameterSlots":1,"returnSlots":1},"@mockPermissions_11721":{"entryPoint":755,"id":11721,"parameterSlots":3,"returnSlots":1},"@prepareInstallation_11468":{"entryPoint":535,"id":11468,"parameterSlots":2,"returnSlots":2},"@prepareUninstallation_11496":{"entryPoint":456,"id":11496,"parameterSlots":2,"returnSlots":1},"@prepareUpdate_14332":{"entryPoint":479,"id":14332,"parameterSlots":3,"returnSlots":2},"@protocolVersion_14765":{"entryPoint":414,"id":14765,"parameterSlots":0,"returnSlots":1},"@supportsInterface_14361":{"entryPoint":333,"id":14361,"parameterSlots":1,"returnSlots":1},"@supportsInterface_9730":{"entryPoint":null,"id":9730,"parameterSlots":1,"returnSlots":1},"@verifyCallResultFromTarget_9219":{"entryPoint":1858,"id":9219,"parameterSlots":4,"returnSlots":1},"abi_decode_address":{"entryPoint":2140,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_struct_SetupPayload_calldata":{"entryPoint":2163,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_bytes_memory_ptr":{"entryPoint":2854,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_struct$_SetupPayload_$14224_calldata_ptr":{"entryPoint":2181,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_uint16t_struct$_SetupPayload_$14224_calldata_ptr":{"entryPoint":2456,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_bytes4":{"entryPoint":2046,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encodeUpdatedPos_struct_MultiTargetPermission":{"entryPoint":2281,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_bytes":{"entryPoint":2595,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_struct_PreparedSetupData":{"entryPoint":2639,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":3196,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address_t_struct$_PreparedSetupData_$14216_memory_ptr__to_t_address_t_struct$_PreparedSetupData_$14216_memory_ptr__fromStack_reversed":{"entryPoint":3048,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr__fromStack_reversed":{"entryPoint":2383,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed":{"entryPoint":2088,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$14216_memory_ptr__to_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$14216_memory_ptr__fromStack_reversed":{"entryPoint":2786,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_contract$_IDAO_$10865__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":3224,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_68ca40b61460257f14e69f48b1a4dbc812e9afc6932f127ef8084544457b3335__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"checked_sub_t_uint160":{"entryPoint":3104,"id":null,"parameterSlots":2,"returnSlots":1},"copy_memory_to_memory_with_cleanup":{"entryPoint":2559,"id":null,"parameterSlots":3,"returnSlots":0},"increment_t_uint160":{"entryPoint":3158,"id":null,"parameterSlots":1,"returnSlots":1},"panic_error_0x11":{"entryPoint":3082,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x21":{"entryPoint":2259,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x32":{"entryPoint":3136,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":2832,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:10509:92","statements":[{"nodeType":"YulBlock","src":"6:3:92","statements":[]},{"body":{"nodeType":"YulBlock","src":"83:217:92","statements":[{"body":{"nodeType":"YulBlock","src":"129:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"138:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"141:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"131:6:92"},"nodeType":"YulFunctionCall","src":"131:12:92"},"nodeType":"YulExpressionStatement","src":"131:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"104:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"113:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"100:3:92"},"nodeType":"YulFunctionCall","src":"100:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"125:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"96:3:92"},"nodeType":"YulFunctionCall","src":"96:32:92"},"nodeType":"YulIf","src":"93:52:92"},{"nodeType":"YulVariableDeclaration","src":"154:36:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"180:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"167:12:92"},"nodeType":"YulFunctionCall","src":"167:23:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"158:5:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"254:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"263:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"266:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"256:6:92"},"nodeType":"YulFunctionCall","src":"256:12:92"},"nodeType":"YulExpressionStatement","src":"256:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"212:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"223:5:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"234:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"239:10:92","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"230:3:92"},"nodeType":"YulFunctionCall","src":"230:20:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"219:3:92"},"nodeType":"YulFunctionCall","src":"219:32:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"209:2:92"},"nodeType":"YulFunctionCall","src":"209:43:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"202:6:92"},"nodeType":"YulFunctionCall","src":"202:51:92"},"nodeType":"YulIf","src":"199:71:92"},{"nodeType":"YulAssignment","src":"279:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"289:5:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"279:6:92"}]}]},"name":"abi_decode_tuple_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"49:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"60:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"72:6:92","type":""}],"src":"14:286:92"},{"body":{"nodeType":"YulBlock","src":"400:92:92","statements":[{"nodeType":"YulAssignment","src":"410:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"422:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"433:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"418:3:92"},"nodeType":"YulFunctionCall","src":"418:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"410:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"452:9:92"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"477:6:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"470:6:92"},"nodeType":"YulFunctionCall","src":"470:14:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"463:6:92"},"nodeType":"YulFunctionCall","src":"463:22:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"445:6:92"},"nodeType":"YulFunctionCall","src":"445:41:92"},"nodeType":"YulExpressionStatement","src":"445:41:92"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"369:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"380:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"391:4:92","type":""}],"src":"305:187:92"},{"body":{"nodeType":"YulBlock","src":"640:358:92","statements":[{"nodeType":"YulAssignment","src":"650:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"662:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"673:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"658:3:92"},"nodeType":"YulFunctionCall","src":"658:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"650:4:92"}]},{"nodeType":"YulVariableDeclaration","src":"685:20:92","value":{"name":"headStart","nodeType":"YulIdentifier","src":"696:9:92"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"689:3:92","type":""}]},{"nodeType":"YulAssignment","src":"714:16:92","value":{"name":"headStart","nodeType":"YulIdentifier","src":"721:9:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"714:3:92"}]},{"nodeType":"YulVariableDeclaration","src":"739:20:92","value":{"name":"value0","nodeType":"YulIdentifier","src":"753:6:92"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"743:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"768:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"777:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"772:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"834:158:92","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"855:3:92"},{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"870:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"864:5:92"},"nodeType":"YulFunctionCall","src":"864:13:92"},{"kind":"number","nodeType":"YulLiteral","src":"879:4:92","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"860:3:92"},"nodeType":"YulFunctionCall","src":"860:24:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"848:6:92"},"nodeType":"YulFunctionCall","src":"848:37:92"},"nodeType":"YulExpressionStatement","src":"848:37:92"},{"nodeType":"YulVariableDeclaration","src":"898:14:92","value":{"kind":"number","nodeType":"YulLiteral","src":"908:4:92","type":"","value":"0x20"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"902:2:92","type":""}]},{"nodeType":"YulAssignment","src":"925:19:92","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"936:3:92"},{"name":"_1","nodeType":"YulIdentifier","src":"941:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"932:3:92"},"nodeType":"YulFunctionCall","src":"932:12:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"925:3:92"}]},{"nodeType":"YulAssignment","src":"957:25:92","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"971:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"979:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"967:3:92"},"nodeType":"YulFunctionCall","src":"967:15:92"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"957:6:92"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"798:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"801:4:92","type":"","value":"0x03"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"795:2:92"},"nodeType":"YulFunctionCall","src":"795:11:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"807:18:92","statements":[{"nodeType":"YulAssignment","src":"809:14:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"818:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"821:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"814:3:92"},"nodeType":"YulFunctionCall","src":"814:9:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"809:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"791:3:92","statements":[]},"src":"787:205:92"}]},"name":"abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"609:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"620:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"631:4:92","type":""}],"src":"497:501:92"},{"body":{"nodeType":"YulBlock","src":"1104:125:92","statements":[{"nodeType":"YulAssignment","src":"1114:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1126:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1137:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1122:3:92"},"nodeType":"YulFunctionCall","src":"1122:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1114:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1156:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1171:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"1179:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1167:3:92"},"nodeType":"YulFunctionCall","src":"1167:55:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1149:6:92"},"nodeType":"YulFunctionCall","src":"1149:74:92"},"nodeType":"YulExpressionStatement","src":"1149:74:92"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1073:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1084:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1095:4:92","type":""}],"src":"1003:226:92"},{"body":{"nodeType":"YulBlock","src":"1283:147:92","statements":[{"nodeType":"YulAssignment","src":"1293:29:92","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1315:6:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1302:12:92"},"nodeType":"YulFunctionCall","src":"1302:20:92"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"1293:5:92"}]},{"body":{"nodeType":"YulBlock","src":"1408:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1417:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1420:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1410:6:92"},"nodeType":"YulFunctionCall","src":"1410:12:92"},"nodeType":"YulExpressionStatement","src":"1410:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1344:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1355:5:92"},{"kind":"number","nodeType":"YulLiteral","src":"1362:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1351:3:92"},"nodeType":"YulFunctionCall","src":"1351:54:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1341:2:92"},"nodeType":"YulFunctionCall","src":"1341:65:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1334:6:92"},"nodeType":"YulFunctionCall","src":"1334:73:92"},"nodeType":"YulIf","src":"1331:93:92"}]},"name":"abi_decode_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"1262:6:92","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"1273:5:92","type":""}],"src":"1234:196:92"},{"body":{"nodeType":"YulBlock","src":"1510:85:92","statements":[{"body":{"nodeType":"YulBlock","src":"1549:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1558:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1561:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1551:6:92"},"nodeType":"YulFunctionCall","src":"1551:12:92"},"nodeType":"YulExpressionStatement","src":"1551:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"end","nodeType":"YulIdentifier","src":"1531:3:92"},{"name":"offset","nodeType":"YulIdentifier","src":"1536:6:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1527:3:92"},"nodeType":"YulFunctionCall","src":"1527:16:92"},{"kind":"number","nodeType":"YulLiteral","src":"1545:2:92","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1523:3:92"},"nodeType":"YulFunctionCall","src":"1523:25:92"},"nodeType":"YulIf","src":"1520:45:92"},{"nodeType":"YulAssignment","src":"1574:15:92","value":{"name":"offset","nodeType":"YulIdentifier","src":"1583:6:92"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"1574:5:92"}]}]},"name":"abi_decode_struct_SetupPayload_calldata","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"1484:6:92","type":""},{"name":"end","nodeType":"YulTypedName","src":"1492:3:92","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"1500:5:92","type":""}],"src":"1435:160:92"},{"body":{"nodeType":"YulBlock","src":"1720:321:92","statements":[{"body":{"nodeType":"YulBlock","src":"1766:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1775:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1778:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1768:6:92"},"nodeType":"YulFunctionCall","src":"1768:12:92"},"nodeType":"YulExpressionStatement","src":"1768:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1741:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"1750:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1737:3:92"},"nodeType":"YulFunctionCall","src":"1737:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"1762:2:92","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1733:3:92"},"nodeType":"YulFunctionCall","src":"1733:32:92"},"nodeType":"YulIf","src":"1730:52:92"},{"nodeType":"YulAssignment","src":"1791:39:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1820:9:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"1801:18:92"},"nodeType":"YulFunctionCall","src":"1801:29:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1791:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"1839:46:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1870:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1881:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1866:3:92"},"nodeType":"YulFunctionCall","src":"1866:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1853:12:92"},"nodeType":"YulFunctionCall","src":"1853:32:92"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1843:6:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"1928:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1937:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1940:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1930:6:92"},"nodeType":"YulFunctionCall","src":"1930:12:92"},"nodeType":"YulExpressionStatement","src":"1930:12:92"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1900:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"1908:18:92","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1897:2:92"},"nodeType":"YulFunctionCall","src":"1897:30:92"},"nodeType":"YulIf","src":"1894:50:92"},{"nodeType":"YulAssignment","src":"1953:82:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2007:9:92"},{"name":"offset","nodeType":"YulIdentifier","src":"2018:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2003:3:92"},"nodeType":"YulFunctionCall","src":"2003:22:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2027:7:92"}],"functionName":{"name":"abi_decode_struct_SetupPayload_calldata","nodeType":"YulIdentifier","src":"1963:39:92"},"nodeType":"YulFunctionCall","src":"1963:72:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1953:6:92"}]}]},"name":"abi_decode_tuple_t_addresst_struct$_SetupPayload_$14224_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1678:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1689:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1701:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1709:6:92","type":""}],"src":"1600:441:92"},{"body":{"nodeType":"YulBlock","src":"2078:95:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2095:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2102:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"2107:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2098:3:92"},"nodeType":"YulFunctionCall","src":"2098:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2088:6:92"},"nodeType":"YulFunctionCall","src":"2088:31:92"},"nodeType":"YulExpressionStatement","src":"2088:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2135:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"2138:4:92","type":"","value":"0x21"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2128:6:92"},"nodeType":"YulFunctionCall","src":"2128:15:92"},"nodeType":"YulExpressionStatement","src":"2128:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2159:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2162:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2152:6:92"},"nodeType":"YulFunctionCall","src":"2152:15:92"},"nodeType":"YulExpressionStatement","src":"2152:15:92"}]},"name":"panic_error_0x21","nodeType":"YulFunctionDefinition","src":"2046:127:92"},{"body":{"nodeType":"YulBlock","src":"2268:606:92","statements":[{"nodeType":"YulVariableDeclaration","src":"2278:23:92","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2294:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2288:5:92"},"nodeType":"YulFunctionCall","src":"2288:13:92"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"2282:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"2339:111:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2360:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2367:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"2372:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2363:3:92"},"nodeType":"YulFunctionCall","src":"2363:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2353:6:92"},"nodeType":"YulFunctionCall","src":"2353:31:92"},"nodeType":"YulExpressionStatement","src":"2353:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2404:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"2407:4:92","type":"","value":"0x21"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2397:6:92"},"nodeType":"YulFunctionCall","src":"2397:15:92"},"nodeType":"YulExpressionStatement","src":"2397:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2432:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2435:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2425:6:92"},"nodeType":"YulFunctionCall","src":"2425:15:92"},"nodeType":"YulExpressionStatement","src":"2425:15:92"}]},"condition":{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"2323:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"2327:1:92","type":"","value":"3"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2320:2:92"},"nodeType":"YulFunctionCall","src":"2320:9:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2313:6:92"},"nodeType":"YulFunctionCall","src":"2313:17:92"},"nodeType":"YulIf","src":"2310:140:92"},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2466:3:92"},{"name":"_1","nodeType":"YulIdentifier","src":"2471:2:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2459:6:92"},"nodeType":"YulFunctionCall","src":"2459:15:92"},"nodeType":"YulExpressionStatement","src":"2459:15:92"},{"nodeType":"YulVariableDeclaration","src":"2483:44:92","value":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2513:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"2521:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2509:3:92"},"nodeType":"YulFunctionCall","src":"2509:17:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2503:5:92"},"nodeType":"YulFunctionCall","src":"2503:24:92"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"2487:12:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2536:52:92","value":{"kind":"number","nodeType":"YulLiteral","src":"2546:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"2540:2:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2608:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"2613:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2604:3:92"},"nodeType":"YulFunctionCall","src":"2604:14:92"},{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"2624:12:92"},{"name":"_2","nodeType":"YulIdentifier","src":"2638:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2620:3:92"},"nodeType":"YulFunctionCall","src":"2620:21:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2597:6:92"},"nodeType":"YulFunctionCall","src":"2597:45:92"},"nodeType":"YulExpressionStatement","src":"2597:45:92"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2662:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"2667:4:92","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2658:3:92"},"nodeType":"YulFunctionCall","src":"2658:14:92"},{"arguments":[{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2688:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"2696:4:92","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2684:3:92"},"nodeType":"YulFunctionCall","src":"2684:17:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2678:5:92"},"nodeType":"YulFunctionCall","src":"2678:24:92"},{"name":"_2","nodeType":"YulIdentifier","src":"2704:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2674:3:92"},"nodeType":"YulFunctionCall","src":"2674:33:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2651:6:92"},"nodeType":"YulFunctionCall","src":"2651:57:92"},"nodeType":"YulExpressionStatement","src":"2651:57:92"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2728:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"2733:4:92","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2724:3:92"},"nodeType":"YulFunctionCall","src":"2724:14:92"},{"arguments":[{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2754:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"2762:4:92","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2750:3:92"},"nodeType":"YulFunctionCall","src":"2750:17:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2744:5:92"},"nodeType":"YulFunctionCall","src":"2744:24:92"},{"name":"_2","nodeType":"YulIdentifier","src":"2770:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2740:3:92"},"nodeType":"YulFunctionCall","src":"2740:33:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2717:6:92"},"nodeType":"YulFunctionCall","src":"2717:57:92"},"nodeType":"YulExpressionStatement","src":"2717:57:92"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2794:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"2799:4:92","type":"","value":"0x80"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2790:3:92"},"nodeType":"YulFunctionCall","src":"2790:14:92"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2816:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"2824:4:92","type":"","value":"0x80"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2812:3:92"},"nodeType":"YulFunctionCall","src":"2812:17:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2806:5:92"},"nodeType":"YulFunctionCall","src":"2806:24:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2783:6:92"},"nodeType":"YulFunctionCall","src":"2783:48:92"},"nodeType":"YulExpressionStatement","src":"2783:48:92"},{"nodeType":"YulAssignment","src":"2840:28:92","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2858:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"2863:4:92","type":"","value":"0xa0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2854:3:92"},"nodeType":"YulFunctionCall","src":"2854:14:92"},"variableNames":[{"name":"updatedPos","nodeType":"YulIdentifier","src":"2840:10:92"}]}]},"name":"abi_encodeUpdatedPos_struct_MultiTargetPermission","nodeType":"YulFunctionDefinition","parameters":[{"name":"value0","nodeType":"YulTypedName","src":"2237:6:92","type":""},{"name":"pos","nodeType":"YulTypedName","src":"2245:3:92","type":""}],"returnVariables":[{"name":"updatedPos","nodeType":"YulTypedName","src":"2253:10:92","type":""}],"src":"2178:696:92"},{"body":{"nodeType":"YulBlock","src":"3110:499:92","statements":[{"nodeType":"YulVariableDeclaration","src":"3120:12:92","value":{"kind":"number","nodeType":"YulLiteral","src":"3130:2:92","type":"","value":"32"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"3124:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3141:32:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3159:9:92"},{"name":"_1","nodeType":"YulIdentifier","src":"3170:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3155:3:92"},"nodeType":"YulFunctionCall","src":"3155:18:92"},"variables":[{"name":"tail_1","nodeType":"YulTypedName","src":"3145:6:92","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3189:9:92"},{"name":"_1","nodeType":"YulIdentifier","src":"3200:2:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3182:6:92"},"nodeType":"YulFunctionCall","src":"3182:21:92"},"nodeType":"YulExpressionStatement","src":"3182:21:92"},{"nodeType":"YulVariableDeclaration","src":"3212:17:92","value":{"name":"tail_1","nodeType":"YulIdentifier","src":"3223:6:92"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"3216:3:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3238:27:92","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3258:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3252:5:92"},"nodeType":"YulFunctionCall","src":"3252:13:92"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"3242:6:92","type":""}]},{"expression":{"arguments":[{"name":"tail_1","nodeType":"YulIdentifier","src":"3281:6:92"},{"name":"length","nodeType":"YulIdentifier","src":"3289:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3274:6:92"},"nodeType":"YulFunctionCall","src":"3274:22:92"},"nodeType":"YulExpressionStatement","src":"3274:22:92"},{"nodeType":"YulAssignment","src":"3305:25:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3316:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3327:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3312:3:92"},"nodeType":"YulFunctionCall","src":"3312:18:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"3305:3:92"}]},{"nodeType":"YulVariableDeclaration","src":"3339:29:92","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3357:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"3365:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3353:3:92"},"nodeType":"YulFunctionCall","src":"3353:15:92"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"3343:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3377:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"3386:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"3381:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"3445:138:92","statements":[{"nodeType":"YulAssignment","src":"3459:76:92","value":{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"3522:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3516:5:92"},"nodeType":"YulFunctionCall","src":"3516:13:92"},{"name":"pos","nodeType":"YulIdentifier","src":"3531:3:92"}],"functionName":{"name":"abi_encodeUpdatedPos_struct_MultiTargetPermission","nodeType":"YulIdentifier","src":"3466:49:92"},"nodeType":"YulFunctionCall","src":"3466:69:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"3459:3:92"}]},{"nodeType":"YulAssignment","src":"3548:25:92","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"3562:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"3570:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3558:3:92"},"nodeType":"YulFunctionCall","src":"3558:15:92"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"3548:6:92"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3407:1:92"},{"name":"length","nodeType":"YulIdentifier","src":"3410:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"3404:2:92"},"nodeType":"YulFunctionCall","src":"3404:13:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"3418:18:92","statements":[{"nodeType":"YulAssignment","src":"3420:14:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3429:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"3432:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3425:3:92"},"nodeType":"YulFunctionCall","src":"3425:9:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"3420:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"3400:3:92","statements":[]},"src":"3396:187:92"},{"nodeType":"YulAssignment","src":"3592:11:92","value":{"name":"pos","nodeType":"YulIdentifier","src":"3600:3:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3592:4:92"}]}]},"name":"abi_encode_tuple_t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3079:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3090:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3101:4:92","type":""}],"src":"2879:730:92"},{"body":{"nodeType":"YulBlock","src":"3750:465:92","statements":[{"body":{"nodeType":"YulBlock","src":"3796:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3805:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3808:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3798:6:92"},"nodeType":"YulFunctionCall","src":"3798:12:92"},"nodeType":"YulExpressionStatement","src":"3798:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3771:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"3780:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3767:3:92"},"nodeType":"YulFunctionCall","src":"3767:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"3792:2:92","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3763:3:92"},"nodeType":"YulFunctionCall","src":"3763:32:92"},"nodeType":"YulIf","src":"3760:52:92"},{"nodeType":"YulAssignment","src":"3821:39:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3850:9:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"3831:18:92"},"nodeType":"YulFunctionCall","src":"3831:29:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3821:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"3869:45:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3899:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3910:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3895:3:92"},"nodeType":"YulFunctionCall","src":"3895:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3882:12:92"},"nodeType":"YulFunctionCall","src":"3882:32:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"3873:5:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"3964:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3973:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3976:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3966:6:92"},"nodeType":"YulFunctionCall","src":"3966:12:92"},"nodeType":"YulExpressionStatement","src":"3966:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3936:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3947:5:92"},{"kind":"number","nodeType":"YulLiteral","src":"3954:6:92","type":"","value":"0xffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3943:3:92"},"nodeType":"YulFunctionCall","src":"3943:18:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"3933:2:92"},"nodeType":"YulFunctionCall","src":"3933:29:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3926:6:92"},"nodeType":"YulFunctionCall","src":"3926:37:92"},"nodeType":"YulIf","src":"3923:57:92"},{"nodeType":"YulAssignment","src":"3989:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"3999:5:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"3989:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"4013:46:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4044:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4055:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4040:3:92"},"nodeType":"YulFunctionCall","src":"4040:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4027:12:92"},"nodeType":"YulFunctionCall","src":"4027:32:92"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4017:6:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"4102:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4111:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4114:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4104:6:92"},"nodeType":"YulFunctionCall","src":"4104:12:92"},"nodeType":"YulExpressionStatement","src":"4104:12:92"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"4074:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"4082:18:92","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4071:2:92"},"nodeType":"YulFunctionCall","src":"4071:30:92"},"nodeType":"YulIf","src":"4068:50:92"},{"nodeType":"YulAssignment","src":"4127:82:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4181:9:92"},{"name":"offset","nodeType":"YulIdentifier","src":"4192:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4177:3:92"},"nodeType":"YulFunctionCall","src":"4177:22:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4201:7:92"}],"functionName":{"name":"abi_decode_struct_SetupPayload_calldata","nodeType":"YulIdentifier","src":"4137:39:92"},"nodeType":"YulFunctionCall","src":"4137:72:92"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"4127:6:92"}]}]},"name":"abi_decode_tuple_t_addresst_uint16t_struct$_SetupPayload_$14224_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3700:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3711:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3723:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"3731:6:92","type":""},{"name":"value2","nodeType":"YulTypedName","src":"3739:6:92","type":""}],"src":"3614:601:92"},{"body":{"nodeType":"YulBlock","src":"4286:184:92","statements":[{"nodeType":"YulVariableDeclaration","src":"4296:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"4305:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"4300:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"4365:63:92","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"4390:3:92"},{"name":"i","nodeType":"YulIdentifier","src":"4395:1:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4386:3:92"},"nodeType":"YulFunctionCall","src":"4386:11:92"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"4409:3:92"},{"name":"i","nodeType":"YulIdentifier","src":"4414:1:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4405:3:92"},"nodeType":"YulFunctionCall","src":"4405:11:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4399:5:92"},"nodeType":"YulFunctionCall","src":"4399:18:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4379:6:92"},"nodeType":"YulFunctionCall","src":"4379:39:92"},"nodeType":"YulExpressionStatement","src":"4379:39:92"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"4326:1:92"},{"name":"length","nodeType":"YulIdentifier","src":"4329:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"4323:2:92"},"nodeType":"YulFunctionCall","src":"4323:13:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"4337:19:92","statements":[{"nodeType":"YulAssignment","src":"4339:15:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"4348:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"4351:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4344:3:92"},"nodeType":"YulFunctionCall","src":"4344:10:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"4339:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"4319:3:92","statements":[]},"src":"4315:113:92"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"4448:3:92"},{"name":"length","nodeType":"YulIdentifier","src":"4453:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4444:3:92"},"nodeType":"YulFunctionCall","src":"4444:16:92"},{"kind":"number","nodeType":"YulLiteral","src":"4462:1:92","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4437:6:92"},"nodeType":"YulFunctionCall","src":"4437:27:92"},"nodeType":"YulExpressionStatement","src":"4437:27:92"}]},"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"4264:3:92","type":""},{"name":"dst","nodeType":"YulTypedName","src":"4269:3:92","type":""},{"name":"length","nodeType":"YulTypedName","src":"4274:6:92","type":""}],"src":"4220:250:92"},{"body":{"nodeType":"YulBlock","src":"4524:221:92","statements":[{"nodeType":"YulVariableDeclaration","src":"4534:26:92","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4554:5:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4548:5:92"},"nodeType":"YulFunctionCall","src":"4548:12:92"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"4538:6:92","type":""}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4576:3:92"},{"name":"length","nodeType":"YulIdentifier","src":"4581:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4569:6:92"},"nodeType":"YulFunctionCall","src":"4569:19:92"},"nodeType":"YulExpressionStatement","src":"4569:19:92"},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4636:5:92"},{"kind":"number","nodeType":"YulLiteral","src":"4643:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4632:3:92"},"nodeType":"YulFunctionCall","src":"4632:16:92"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4654:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"4659:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4650:3:92"},"nodeType":"YulFunctionCall","src":"4650:14:92"},{"name":"length","nodeType":"YulIdentifier","src":"4666:6:92"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"4597:34:92"},"nodeType":"YulFunctionCall","src":"4597:76:92"},"nodeType":"YulExpressionStatement","src":"4597:76:92"},{"nodeType":"YulAssignment","src":"4682:57:92","value":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4697:3:92"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"4710:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"4718:2:92","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4706:3:92"},"nodeType":"YulFunctionCall","src":"4706:15:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4727:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"4723:3:92"},"nodeType":"YulFunctionCall","src":"4723:7:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4702:3:92"},"nodeType":"YulFunctionCall","src":"4702:29:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4693:3:92"},"nodeType":"YulFunctionCall","src":"4693:39:92"},{"kind":"number","nodeType":"YulLiteral","src":"4734:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4689:3:92"},"nodeType":"YulFunctionCall","src":"4689:50:92"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"4682:3:92"}]}]},"name":"abi_encode_bytes","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"4501:5:92","type":""},{"name":"pos","nodeType":"YulTypedName","src":"4508:3:92","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"4516:3:92","type":""}],"src":"4475:270:92"},{"body":{"nodeType":"YulBlock","src":"4818:1094:92","statements":[{"nodeType":"YulVariableDeclaration","src":"4828:26:92","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4844:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"4849:4:92","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4840:3:92"},"nodeType":"YulFunctionCall","src":"4840:14:92"},"variables":[{"name":"tail","nodeType":"YulTypedName","src":"4832:4:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4863:32:92","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4889:5:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4883:5:92"},"nodeType":"YulFunctionCall","src":"4883:12:92"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"4867:12:92","type":""}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4911:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"4916:4:92","type":"","value":"0x40"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4904:6:92"},"nodeType":"YulFunctionCall","src":"4904:17:92"},"nodeType":"YulExpressionStatement","src":"4904:17:92"},{"nodeType":"YulVariableDeclaration","src":"4930:17:92","value":{"name":"tail","nodeType":"YulIdentifier","src":"4943:4:92"},"variables":[{"name":"pos_1","nodeType":"YulTypedName","src":"4934:5:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4956:33:92","value":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"4976:12:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4970:5:92"},"nodeType":"YulFunctionCall","src":"4970:19:92"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"4960:6:92","type":""}]},{"expression":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"5005:4:92"},{"name":"length","nodeType":"YulIdentifier","src":"5011:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4998:6:92"},"nodeType":"YulFunctionCall","src":"4998:20:92"},"nodeType":"YulExpressionStatement","src":"4998:20:92"},{"nodeType":"YulAssignment","src":"5027:21:92","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5040:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"5045:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5036:3:92"},"nodeType":"YulFunctionCall","src":"5036:12:92"},"variableNames":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5027:5:92"}]},{"nodeType":"YulVariableDeclaration","src":"5057:14:92","value":{"kind":"number","nodeType":"YulLiteral","src":"5067:4:92","type":"","value":"0x20"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"5061:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5080:35:92","value":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"5098:12:92"},{"name":"_1","nodeType":"YulIdentifier","src":"5112:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5094:3:92"},"nodeType":"YulFunctionCall","src":"5094:21:92"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"5084:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5124:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"5133:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"5128:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"5192:175:92","statements":[{"expression":{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5213:5:92"},{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"5230:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5224:5:92"},"nodeType":"YulFunctionCall","src":"5224:13:92"},{"kind":"number","nodeType":"YulLiteral","src":"5239:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5220:3:92"},"nodeType":"YulFunctionCall","src":"5220:62:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5206:6:92"},"nodeType":"YulFunctionCall","src":"5206:77:92"},"nodeType":"YulExpressionStatement","src":"5206:77:92"},{"nodeType":"YulAssignment","src":"5296:23:92","value":{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5309:5:92"},{"name":"_1","nodeType":"YulIdentifier","src":"5316:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5305:3:92"},"nodeType":"YulFunctionCall","src":"5305:14:92"},"variableNames":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5296:5:92"}]},{"nodeType":"YulAssignment","src":"5332:25:92","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"5346:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"5354:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5342:3:92"},"nodeType":"YulFunctionCall","src":"5342:15:92"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"5332:6:92"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"5154:1:92"},{"name":"length","nodeType":"YulIdentifier","src":"5157:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"5151:2:92"},"nodeType":"YulFunctionCall","src":"5151:13:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"5165:18:92","statements":[{"nodeType":"YulAssignment","src":"5167:14:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"5176:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"5179:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5172:3:92"},"nodeType":"YulFunctionCall","src":"5172:9:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"5167:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"5147:3:92","statements":[]},"src":"5143:224:92"},{"nodeType":"YulVariableDeclaration","src":"5376:43:92","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5408:5:92"},{"name":"_1","nodeType":"YulIdentifier","src":"5415:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5404:3:92"},"nodeType":"YulFunctionCall","src":"5404:14:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5398:5:92"},"nodeType":"YulFunctionCall","src":"5398:21:92"},"variables":[{"name":"memberValue0_1","nodeType":"YulTypedName","src":"5380:14:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5439:3:92"},{"name":"_1","nodeType":"YulIdentifier","src":"5444:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5435:3:92"},"nodeType":"YulFunctionCall","src":"5435:12:92"},{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5453:5:92"},{"name":"pos","nodeType":"YulIdentifier","src":"5460:3:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5449:3:92"},"nodeType":"YulFunctionCall","src":"5449:15:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5428:6:92"},"nodeType":"YulFunctionCall","src":"5428:37:92"},"nodeType":"YulExpressionStatement","src":"5428:37:92"},{"nodeType":"YulVariableDeclaration","src":"5474:18:92","value":{"name":"pos_1","nodeType":"YulIdentifier","src":"5487:5:92"},"variables":[{"name":"pos_2","nodeType":"YulTypedName","src":"5478:5:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5501:37:92","value":{"arguments":[{"name":"memberValue0_1","nodeType":"YulIdentifier","src":"5523:14:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5517:5:92"},"nodeType":"YulFunctionCall","src":"5517:21:92"},"variables":[{"name":"length_1","nodeType":"YulTypedName","src":"5505:8:92","type":""}]},{"expression":{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5554:5:92"},{"name":"length_1","nodeType":"YulIdentifier","src":"5561:8:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5547:6:92"},"nodeType":"YulFunctionCall","src":"5547:23:92"},"nodeType":"YulExpressionStatement","src":"5547:23:92"},{"nodeType":"YulAssignment","src":"5579:23:92","value":{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5592:5:92"},{"name":"_1","nodeType":"YulIdentifier","src":"5599:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5588:3:92"},"nodeType":"YulFunctionCall","src":"5588:14:92"},"variableNames":[{"name":"pos_2","nodeType":"YulIdentifier","src":"5579:5:92"}]},{"nodeType":"YulVariableDeclaration","src":"5611:39:92","value":{"arguments":[{"name":"memberValue0_1","nodeType":"YulIdentifier","src":"5631:14:92"},{"name":"_1","nodeType":"YulIdentifier","src":"5647:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5627:3:92"},"nodeType":"YulFunctionCall","src":"5627:23:92"},"variables":[{"name":"srcPtr_1","nodeType":"YulTypedName","src":"5615:8:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5659:12:92","value":{"kind":"number","nodeType":"YulLiteral","src":"5670:1:92","type":"","value":"0"},"variables":[{"name":"i_1","nodeType":"YulTypedName","src":"5663:3:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"5737:148:92","statements":[{"nodeType":"YulAssignment","src":"5751:82:92","value":{"arguments":[{"arguments":[{"name":"srcPtr_1","nodeType":"YulIdentifier","src":"5816:8:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5810:5:92"},"nodeType":"YulFunctionCall","src":"5810:15:92"},{"name":"pos_2","nodeType":"YulIdentifier","src":"5827:5:92"}],"functionName":{"name":"abi_encodeUpdatedPos_struct_MultiTargetPermission","nodeType":"YulIdentifier","src":"5760:49:92"},"nodeType":"YulFunctionCall","src":"5760:73:92"},"variableNames":[{"name":"pos_2","nodeType":"YulIdentifier","src":"5751:5:92"}]},{"nodeType":"YulAssignment","src":"5846:29:92","value":{"arguments":[{"name":"srcPtr_1","nodeType":"YulIdentifier","src":"5862:8:92"},{"name":"_1","nodeType":"YulIdentifier","src":"5872:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5858:3:92"},"nodeType":"YulFunctionCall","src":"5858:17:92"},"variableNames":[{"name":"srcPtr_1","nodeType":"YulIdentifier","src":"5846:8:92"}]}]},"condition":{"arguments":[{"name":"i_1","nodeType":"YulIdentifier","src":"5691:3:92"},{"name":"length_1","nodeType":"YulIdentifier","src":"5696:8:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"5688:2:92"},"nodeType":"YulFunctionCall","src":"5688:17:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"5706:22:92","statements":[{"nodeType":"YulAssignment","src":"5708:18:92","value":{"arguments":[{"name":"i_1","nodeType":"YulIdentifier","src":"5719:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"5724:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5715:3:92"},"nodeType":"YulFunctionCall","src":"5715:11:92"},"variableNames":[{"name":"i_1","nodeType":"YulIdentifier","src":"5708:3:92"}]}]},"pre":{"nodeType":"YulBlock","src":"5684:3:92","statements":[]},"src":"5680:205:92"},{"nodeType":"YulAssignment","src":"5894:12:92","value":{"name":"pos_2","nodeType":"YulIdentifier","src":"5901:5:92"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"5894:3:92"}]}]},"name":"abi_encode_struct_PreparedSetupData","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"4795:5:92","type":""},{"name":"pos","nodeType":"YulTypedName","src":"4802:3:92","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"4810:3:92","type":""}],"src":"4750:1162:92"},{"body":{"nodeType":"YulBlock","src":"6136:231:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6153:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6164:2:92","type":"","value":"64"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6146:6:92"},"nodeType":"YulFunctionCall","src":"6146:21:92"},"nodeType":"YulExpressionStatement","src":"6146:21:92"},{"nodeType":"YulVariableDeclaration","src":"6176:58:92","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6207:6:92"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6219:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6230:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6215:3:92"},"nodeType":"YulFunctionCall","src":"6215:18:92"}],"functionName":{"name":"abi_encode_bytes","nodeType":"YulIdentifier","src":"6190:16:92"},"nodeType":"YulFunctionCall","src":"6190:44:92"},"variables":[{"name":"tail_1","nodeType":"YulTypedName","src":"6180:6:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6254:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6265:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6250:3:92"},"nodeType":"YulFunctionCall","src":"6250:18:92"},{"arguments":[{"name":"tail_1","nodeType":"YulIdentifier","src":"6274:6:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"6282:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6270:3:92"},"nodeType":"YulFunctionCall","src":"6270:22:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6243:6:92"},"nodeType":"YulFunctionCall","src":"6243:50:92"},"nodeType":"YulExpressionStatement","src":"6243:50:92"},{"nodeType":"YulAssignment","src":"6302:59:92","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"6346:6:92"},{"name":"tail_1","nodeType":"YulIdentifier","src":"6354:6:92"}],"functionName":{"name":"abi_encode_struct_PreparedSetupData","nodeType":"YulIdentifier","src":"6310:35:92"},"nodeType":"YulFunctionCall","src":"6310:51:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6302:4:92"}]}]},"name":"abi_encode_tuple_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$14216_memory_ptr__to_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$14216_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6097:9:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"6108:6:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"6116:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6127:4:92","type":""}],"src":"5917:450:92"},{"body":{"nodeType":"YulBlock","src":"6404:95:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6421:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6428:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"6433:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"6424:3:92"},"nodeType":"YulFunctionCall","src":"6424:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6414:6:92"},"nodeType":"YulFunctionCall","src":"6414:31:92"},"nodeType":"YulExpressionStatement","src":"6414:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6461:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"6464:4:92","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6454:6:92"},"nodeType":"YulFunctionCall","src":"6454:15:92"},"nodeType":"YulExpressionStatement","src":"6454:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6485:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6488:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6478:6:92"},"nodeType":"YulFunctionCall","src":"6478:15:92"},"nodeType":"YulExpressionStatement","src":"6478:15:92"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"6372:127:92"},{"body":{"nodeType":"YulBlock","src":"6600:899:92","statements":[{"body":{"nodeType":"YulBlock","src":"6646:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6655:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6658:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6648:6:92"},"nodeType":"YulFunctionCall","src":"6648:12:92"},"nodeType":"YulExpressionStatement","src":"6648:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"6621:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"6630:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6617:3:92"},"nodeType":"YulFunctionCall","src":"6617:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"6642:2:92","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6613:3:92"},"nodeType":"YulFunctionCall","src":"6613:32:92"},"nodeType":"YulIf","src":"6610:52:92"},{"nodeType":"YulAssignment","src":"6671:39:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6700:9:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"6681:18:92"},"nodeType":"YulFunctionCall","src":"6681:29:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"6671:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"6719:46:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6750:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6761:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6746:3:92"},"nodeType":"YulFunctionCall","src":"6746:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6733:12:92"},"nodeType":"YulFunctionCall","src":"6733:32:92"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"6723:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"6774:28:92","value":{"kind":"number","nodeType":"YulLiteral","src":"6784:18:92","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"6778:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"6829:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6838:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6841:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6831:6:92"},"nodeType":"YulFunctionCall","src":"6831:12:92"},"nodeType":"YulExpressionStatement","src":"6831:12:92"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"6817:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"6825:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6814:2:92"},"nodeType":"YulFunctionCall","src":"6814:14:92"},"nodeType":"YulIf","src":"6811:34:92"},{"nodeType":"YulVariableDeclaration","src":"6854:32:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6868:9:92"},{"name":"offset","nodeType":"YulIdentifier","src":"6879:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6864:3:92"},"nodeType":"YulFunctionCall","src":"6864:22:92"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"6858:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"6934:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6943:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6946:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6936:6:92"},"nodeType":"YulFunctionCall","src":"6936:12:92"},"nodeType":"YulExpressionStatement","src":"6936:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"6913:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"6917:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6909:3:92"},"nodeType":"YulFunctionCall","src":"6909:13:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"6924:7:92"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6905:3:92"},"nodeType":"YulFunctionCall","src":"6905:27:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"6898:6:92"},"nodeType":"YulFunctionCall","src":"6898:35:92"},"nodeType":"YulIf","src":"6895:55:92"},{"nodeType":"YulVariableDeclaration","src":"6959:26:92","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"6982:2:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6969:12:92"},"nodeType":"YulFunctionCall","src":"6969:16:92"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"6963:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"7008:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"7010:16:92"},"nodeType":"YulFunctionCall","src":"7010:18:92"},"nodeType":"YulExpressionStatement","src":"7010:18:92"}]},"condition":{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"7000:2:92"},{"name":"_1","nodeType":"YulIdentifier","src":"7004:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6997:2:92"},"nodeType":"YulFunctionCall","src":"6997:10:92"},"nodeType":"YulIf","src":"6994:36:92"},{"nodeType":"YulVariableDeclaration","src":"7039:17:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7053:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"7049:3:92"},"nodeType":"YulFunctionCall","src":"7049:7:92"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"7043:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"7065:23:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7085:2:92","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"7079:5:92"},"nodeType":"YulFunctionCall","src":"7079:9:92"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"7069:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"7097:71:92","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7119:6:92"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"7143:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"7147:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7139:3:92"},"nodeType":"YulFunctionCall","src":"7139:13:92"},{"name":"_4","nodeType":"YulIdentifier","src":"7154:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7135:3:92"},"nodeType":"YulFunctionCall","src":"7135:22:92"},{"kind":"number","nodeType":"YulLiteral","src":"7159:2:92","type":"","value":"63"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7131:3:92"},"nodeType":"YulFunctionCall","src":"7131:31:92"},{"name":"_4","nodeType":"YulIdentifier","src":"7164:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7127:3:92"},"nodeType":"YulFunctionCall","src":"7127:40:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7115:3:92"},"nodeType":"YulFunctionCall","src":"7115:53:92"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"7101:10:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"7227:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"7229:16:92"},"nodeType":"YulFunctionCall","src":"7229:18:92"},"nodeType":"YulExpressionStatement","src":"7229:18:92"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"7186:10:92"},{"name":"_1","nodeType":"YulIdentifier","src":"7198:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"7183:2:92"},"nodeType":"YulFunctionCall","src":"7183:18:92"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"7206:10:92"},{"name":"memPtr","nodeType":"YulIdentifier","src":"7218:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"7203:2:92"},"nodeType":"YulFunctionCall","src":"7203:22:92"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"7180:2:92"},"nodeType":"YulFunctionCall","src":"7180:46:92"},"nodeType":"YulIf","src":"7177:72:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7265:2:92","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"7269:10:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7258:6:92"},"nodeType":"YulFunctionCall","src":"7258:22:92"},"nodeType":"YulExpressionStatement","src":"7258:22:92"},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7296:6:92"},{"name":"_3","nodeType":"YulIdentifier","src":"7304:2:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7289:6:92"},"nodeType":"YulFunctionCall","src":"7289:18:92"},"nodeType":"YulExpressionStatement","src":"7289:18:92"},{"body":{"nodeType":"YulBlock","src":"7353:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7362:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7365:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7355:6:92"},"nodeType":"YulFunctionCall","src":"7355:12:92"},"nodeType":"YulExpressionStatement","src":"7355:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"7330:2:92"},{"name":"_3","nodeType":"YulIdentifier","src":"7334:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7326:3:92"},"nodeType":"YulFunctionCall","src":"7326:11:92"},{"kind":"number","nodeType":"YulLiteral","src":"7339:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7322:3:92"},"nodeType":"YulFunctionCall","src":"7322:20:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"7344:7:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"7319:2:92"},"nodeType":"YulFunctionCall","src":"7319:33:92"},"nodeType":"YulIf","src":"7316:53:92"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7395:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"7403:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7391:3:92"},"nodeType":"YulFunctionCall","src":"7391:15:92"},{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"7412:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"7416:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7408:3:92"},"nodeType":"YulFunctionCall","src":"7408:11:92"},{"name":"_3","nodeType":"YulIdentifier","src":"7421:2:92"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"7378:12:92"},"nodeType":"YulFunctionCall","src":"7378:46:92"},"nodeType":"YulExpressionStatement","src":"7378:46:92"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7448:6:92"},{"name":"_3","nodeType":"YulIdentifier","src":"7456:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7444:3:92"},"nodeType":"YulFunctionCall","src":"7444:15:92"},{"kind":"number","nodeType":"YulLiteral","src":"7461:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7440:3:92"},"nodeType":"YulFunctionCall","src":"7440:24:92"},{"kind":"number","nodeType":"YulLiteral","src":"7466:1:92","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7433:6:92"},"nodeType":"YulFunctionCall","src":"7433:35:92"},"nodeType":"YulExpressionStatement","src":"7433:35:92"},{"nodeType":"YulAssignment","src":"7477:16:92","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"7487:6:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"7477:6:92"}]}]},"name":"abi_decode_tuple_t_addresst_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6558:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"6569:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"6581:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"6589:6:92","type":""}],"src":"6504:995:92"},{"body":{"nodeType":"YulBlock","src":"7705:209:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7722:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7737:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"7745:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7733:3:92"},"nodeType":"YulFunctionCall","src":"7733:55:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7715:6:92"},"nodeType":"YulFunctionCall","src":"7715:74:92"},"nodeType":"YulExpressionStatement","src":"7715:74:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7809:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7820:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7805:3:92"},"nodeType":"YulFunctionCall","src":"7805:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"7825:2:92","type":"","value":"64"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7798:6:92"},"nodeType":"YulFunctionCall","src":"7798:30:92"},"nodeType":"YulExpressionStatement","src":"7798:30:92"},{"nodeType":"YulAssignment","src":"7837:71:92","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"7881:6:92"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7893:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7904:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7889:3:92"},"nodeType":"YulFunctionCall","src":"7889:18:92"}],"functionName":{"name":"abi_encode_struct_PreparedSetupData","nodeType":"YulIdentifier","src":"7845:35:92"},"nodeType":"YulFunctionCall","src":"7845:63:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7837:4:92"}]}]},"name":"abi_encode_tuple_t_address_t_struct$_PreparedSetupData_$14216_memory_ptr__to_t_address_t_struct$_PreparedSetupData_$14216_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7666:9:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"7677:6:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"7685:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7696:4:92","type":""}],"src":"7504:410:92"},{"body":{"nodeType":"YulBlock","src":"8034:125:92","statements":[{"nodeType":"YulAssignment","src":"8044:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8056:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8067:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8052:3:92"},"nodeType":"YulFunctionCall","src":"8052:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"8044:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8086:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"8101:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"8109:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8097:3:92"},"nodeType":"YulFunctionCall","src":"8097:55:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8079:6:92"},"nodeType":"YulFunctionCall","src":"8079:74:92"},"nodeType":"YulExpressionStatement","src":"8079:74:92"}]},"name":"abi_encode_tuple_t_contract$_IDAO_$10865__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8003:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"8014:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"8025:4:92","type":""}],"src":"7919:240:92"},{"body":{"nodeType":"YulBlock","src":"8196:95:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8213:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8220:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"8225:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"8216:3:92"},"nodeType":"YulFunctionCall","src":"8216:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8206:6:92"},"nodeType":"YulFunctionCall","src":"8206:31:92"},"nodeType":"YulExpressionStatement","src":"8206:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8253:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"8256:4:92","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8246:6:92"},"nodeType":"YulFunctionCall","src":"8246:15:92"},"nodeType":"YulExpressionStatement","src":"8246:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8277:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8280:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8270:6:92"},"nodeType":"YulFunctionCall","src":"8270:15:92"},"nodeType":"YulExpressionStatement","src":"8270:15:92"}]},"name":"panic_error_0x11","nodeType":"YulFunctionDefinition","src":"8164:127:92"},{"body":{"nodeType":"YulBlock","src":"8345:159:92","statements":[{"nodeType":"YulVariableDeclaration","src":"8355:52:92","value":{"kind":"number","nodeType":"YulLiteral","src":"8365:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"8359:2:92","type":""}]},{"nodeType":"YulAssignment","src":"8416:35:92","value":{"arguments":[{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"8432:1:92"},{"name":"_1","nodeType":"YulIdentifier","src":"8435:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8428:3:92"},"nodeType":"YulFunctionCall","src":"8428:10:92"},{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"8444:1:92"},{"name":"_1","nodeType":"YulIdentifier","src":"8447:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8440:3:92"},"nodeType":"YulFunctionCall","src":"8440:10:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"8424:3:92"},"nodeType":"YulFunctionCall","src":"8424:27:92"},"variableNames":[{"name":"diff","nodeType":"YulIdentifier","src":"8416:4:92"}]},{"body":{"nodeType":"YulBlock","src":"8476:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"8478:16:92"},"nodeType":"YulFunctionCall","src":"8478:18:92"},"nodeType":"YulExpressionStatement","src":"8478:18:92"}]},"condition":{"arguments":[{"name":"diff","nodeType":"YulIdentifier","src":"8466:4:92"},{"name":"_1","nodeType":"YulIdentifier","src":"8472:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"8463:2:92"},"nodeType":"YulFunctionCall","src":"8463:12:92"},"nodeType":"YulIf","src":"8460:38:92"}]},"name":"checked_sub_t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"8327:1:92","type":""},{"name":"y","nodeType":"YulTypedName","src":"8330:1:92","type":""}],"returnVariables":[{"name":"diff","nodeType":"YulTypedName","src":"8336:4:92","type":""}],"src":"8296:208:92"},{"body":{"nodeType":"YulBlock","src":"8541:95:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8558:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8565:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"8570:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"8561:3:92"},"nodeType":"YulFunctionCall","src":"8561:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8551:6:92"},"nodeType":"YulFunctionCall","src":"8551:31:92"},"nodeType":"YulExpressionStatement","src":"8551:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8598:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"8601:4:92","type":"","value":"0x32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8591:6:92"},"nodeType":"YulFunctionCall","src":"8591:15:92"},"nodeType":"YulExpressionStatement","src":"8591:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8622:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8625:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8615:6:92"},"nodeType":"YulFunctionCall","src":"8615:15:92"},"nodeType":"YulExpressionStatement","src":"8615:15:92"}]},"name":"panic_error_0x32","nodeType":"YulFunctionDefinition","src":"8509:127:92"},{"body":{"nodeType":"YulBlock","src":"8688:187:92","statements":[{"nodeType":"YulVariableDeclaration","src":"8698:52:92","value":{"kind":"number","nodeType":"YulLiteral","src":"8708:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"8702:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"8759:29:92","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8778:5:92"},{"name":"_1","nodeType":"YulIdentifier","src":"8785:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8774:3:92"},"nodeType":"YulFunctionCall","src":"8774:14:92"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"8763:7:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"8816:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"8818:16:92"},"nodeType":"YulFunctionCall","src":"8818:18:92"},"nodeType":"YulExpressionStatement","src":"8818:18:92"}]},"condition":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"8803:7:92"},{"name":"_1","nodeType":"YulIdentifier","src":"8812:2:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"8800:2:92"},"nodeType":"YulFunctionCall","src":"8800:15:92"},"nodeType":"YulIf","src":"8797:41:92"},{"nodeType":"YulAssignment","src":"8847:22:92","value":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"8858:7:92"},{"kind":"number","nodeType":"YulLiteral","src":"8867:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8854:3:92"},"nodeType":"YulFunctionCall","src":"8854:15:92"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"8847:3:92"}]}]},"name":"increment_t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"8670:5:92","type":""}],"returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"8680:3:92","type":""}],"src":"8641:234:92"},{"body":{"nodeType":"YulBlock","src":"9054:172:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9071:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9082:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9064:6:92"},"nodeType":"YulFunctionCall","src":"9064:21:92"},"nodeType":"YulExpressionStatement","src":"9064:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9105:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9116:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9101:3:92"},"nodeType":"YulFunctionCall","src":"9101:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"9121:2:92","type":"","value":"22"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9094:6:92"},"nodeType":"YulFunctionCall","src":"9094:30:92"},"nodeType":"YulExpressionStatement","src":"9094:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9144:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9155:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9140:3:92"},"nodeType":"YulFunctionCall","src":"9140:18:92"},{"hexValue":"455243313136373a20637265617465206661696c6564","kind":"string","nodeType":"YulLiteral","src":"9160:24:92","type":"","value":"ERC1167: create failed"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9133:6:92"},"nodeType":"YulFunctionCall","src":"9133:52:92"},"nodeType":"YulExpressionStatement","src":"9133:52:92"},{"nodeType":"YulAssignment","src":"9194:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9206:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9217:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9202:3:92"},"nodeType":"YulFunctionCall","src":"9202:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"9194:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_68ca40b61460257f14e69f48b1a4dbc812e9afc6932f127ef8084544457b3335__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9031:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"9045:4:92","type":""}],"src":"8880:346:92"},{"body":{"nodeType":"YulBlock","src":"9405:228:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9422:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9433:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9415:6:92"},"nodeType":"YulFunctionCall","src":"9415:21:92"},"nodeType":"YulExpressionStatement","src":"9415:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9456:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9467:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9452:3:92"},"nodeType":"YulFunctionCall","src":"9452:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"9472:2:92","type":"","value":"38"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9445:6:92"},"nodeType":"YulFunctionCall","src":"9445:30:92"},"nodeType":"YulExpressionStatement","src":"9445:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9495:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9506:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9491:3:92"},"nodeType":"YulFunctionCall","src":"9491:18:92"},{"hexValue":"416464726573733a20696e73756666696369656e742062616c616e636520666f","kind":"string","nodeType":"YulLiteral","src":"9511:34:92","type":"","value":"Address: insufficient balance fo"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9484:6:92"},"nodeType":"YulFunctionCall","src":"9484:62:92"},"nodeType":"YulExpressionStatement","src":"9484:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9566:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9577:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9562:3:92"},"nodeType":"YulFunctionCall","src":"9562:18:92"},{"hexValue":"722063616c6c","kind":"string","nodeType":"YulLiteral","src":"9582:8:92","type":"","value":"r call"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9555:6:92"},"nodeType":"YulFunctionCall","src":"9555:36:92"},"nodeType":"YulExpressionStatement","src":"9555:36:92"},{"nodeType":"YulAssignment","src":"9600:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9612:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9623:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9608:3:92"},"nodeType":"YulFunctionCall","src":"9608:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"9600:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9382:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"9396:4:92","type":""}],"src":"9231:402:92"},{"body":{"nodeType":"YulBlock","src":"9775:150:92","statements":[{"nodeType":"YulVariableDeclaration","src":"9785:27:92","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"9805:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"9799:5:92"},"nodeType":"YulFunctionCall","src":"9799:13:92"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"9789:6:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"9860:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"9868:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9856:3:92"},"nodeType":"YulFunctionCall","src":"9856:17:92"},{"name":"pos","nodeType":"YulIdentifier","src":"9875:3:92"},{"name":"length","nodeType":"YulIdentifier","src":"9880:6:92"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"9821:34:92"},"nodeType":"YulFunctionCall","src":"9821:66:92"},"nodeType":"YulExpressionStatement","src":"9821:66:92"},{"nodeType":"YulAssignment","src":"9896:23:92","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"9907:3:92"},{"name":"length","nodeType":"YulIdentifier","src":"9912:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9903:3:92"},"nodeType":"YulFunctionCall","src":"9903:16:92"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"9896:3:92"}]}]},"name":"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"9751:3:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"9756:6:92","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"9767:3:92","type":""}],"src":"9638:287:92"},{"body":{"nodeType":"YulBlock","src":"10104:179:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10121:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"10132:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10114:6:92"},"nodeType":"YulFunctionCall","src":"10114:21:92"},"nodeType":"YulExpressionStatement","src":"10114:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10155:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"10166:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10151:3:92"},"nodeType":"YulFunctionCall","src":"10151:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"10171:2:92","type":"","value":"29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10144:6:92"},"nodeType":"YulFunctionCall","src":"10144:30:92"},"nodeType":"YulExpressionStatement","src":"10144:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10194:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"10205:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10190:3:92"},"nodeType":"YulFunctionCall","src":"10190:18:92"},{"hexValue":"416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374","kind":"string","nodeType":"YulLiteral","src":"10210:31:92","type":"","value":"Address: call to non-contract"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10183:6:92"},"nodeType":"YulFunctionCall","src":"10183:59:92"},"nodeType":"YulExpressionStatement","src":"10183:59:92"},{"nodeType":"YulAssignment","src":"10251:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10263:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"10274:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10259:3:92"},"nodeType":"YulFunctionCall","src":"10259:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"10251:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"10081:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"10095:4:92","type":""}],"src":"9930:353:92"},{"body":{"nodeType":"YulBlock","src":"10409:98:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10426:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"10437:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10419:6:92"},"nodeType":"YulFunctionCall","src":"10419:21:92"},"nodeType":"YulExpressionStatement","src":"10419:21:92"},{"nodeType":"YulAssignment","src":"10449:52:92","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"10474:6:92"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10486:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"10497:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10482:3:92"},"nodeType":"YulFunctionCall","src":"10482:18:92"}],"functionName":{"name":"abi_encode_bytes","nodeType":"YulIdentifier","src":"10457:16:92"},"nodeType":"YulFunctionCall","src":"10457:44:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"10449:4:92"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"10378:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"10389:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"10400:4:92","type":""}],"src":"10288:219:92"}]},"contents":"{\n { }\n function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n if iszero(eq(value, and(value, shl(224, 0xffffffff)))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 96)\n let pos := headStart\n pos := headStart\n let srcPtr := value0\n let i := 0\n for { } lt(i, 0x03) { i := add(i, 1) }\n {\n mstore(pos, and(mload(srcPtr), 0xff))\n let _1 := 0x20\n pos := add(pos, _1)\n srcPtr := add(srcPtr, _1)\n }\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_decode_address(offset) -> value\n {\n value := calldataload(offset)\n if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n }\n function abi_decode_struct_SetupPayload_calldata(offset, end) -> value\n {\n if slt(sub(end, offset), 96) { revert(0, 0) }\n value := offset\n }\n function abi_decode_tuple_t_addresst_struct$_SetupPayload_$14224_calldata_ptr(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n let offset := calldataload(add(headStart, 32))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n value1 := abi_decode_struct_SetupPayload_calldata(add(headStart, offset), dataEnd)\n }\n function panic_error_0x21()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x21)\n revert(0, 0x24)\n }\n function abi_encodeUpdatedPos_struct_MultiTargetPermission(value0, pos) -> updatedPos\n {\n let _1 := mload(value0)\n if iszero(lt(_1, 3))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x21)\n revert(0, 0x24)\n }\n mstore(pos, _1)\n let memberValue0 := mload(add(value0, 0x20))\n let _2 := 0xffffffffffffffffffffffffffffffffffffffff\n mstore(add(pos, 0x20), and(memberValue0, _2))\n mstore(add(pos, 0x40), and(mload(add(value0, 0x40)), _2))\n mstore(add(pos, 0x60), and(mload(add(value0, 0x60)), _2))\n mstore(add(pos, 0x80), mload(add(value0, 0x80)))\n updatedPos := add(pos, 0xa0)\n }\n function abi_encode_tuple_t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n let _1 := 32\n let tail_1 := add(headStart, _1)\n mstore(headStart, _1)\n let pos := tail_1\n let length := mload(value0)\n mstore(tail_1, length)\n pos := add(headStart, 64)\n let srcPtr := add(value0, _1)\n let i := 0\n for { } lt(i, length) { i := add(i, 1) }\n {\n pos := abi_encodeUpdatedPos_struct_MultiTargetPermission(mload(srcPtr), pos)\n srcPtr := add(srcPtr, _1)\n }\n tail := pos\n }\n function abi_decode_tuple_t_addresst_uint16t_struct$_SetupPayload_$14224_calldata_ptr(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n let value := calldataload(add(headStart, 32))\n if iszero(eq(value, and(value, 0xffff))) { revert(0, 0) }\n value1 := value\n let offset := calldataload(add(headStart, 64))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n value2 := abi_decode_struct_SetupPayload_calldata(add(headStart, offset), dataEnd)\n }\n function copy_memory_to_memory_with_cleanup(src, dst, length)\n {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n mstore(add(dst, length), 0)\n }\n function abi_encode_bytes(value, pos) -> end\n {\n let length := mload(value)\n mstore(pos, length)\n copy_memory_to_memory_with_cleanup(add(value, 0x20), add(pos, 0x20), length)\n end := add(add(pos, and(add(length, 31), not(31))), 0x20)\n }\n function abi_encode_struct_PreparedSetupData(value, pos) -> end\n {\n let tail := add(pos, 0x40)\n let memberValue0 := mload(value)\n mstore(pos, 0x40)\n let pos_1 := tail\n let length := mload(memberValue0)\n mstore(tail, length)\n pos_1 := add(pos, 96)\n let _1 := 0x20\n let srcPtr := add(memberValue0, _1)\n let i := 0\n for { } lt(i, length) { i := add(i, 1) }\n {\n mstore(pos_1, and(mload(srcPtr), 0xffffffffffffffffffffffffffffffffffffffff))\n pos_1 := add(pos_1, _1)\n srcPtr := add(srcPtr, _1)\n }\n let memberValue0_1 := mload(add(value, _1))\n mstore(add(pos, _1), sub(pos_1, pos))\n let pos_2 := pos_1\n let length_1 := mload(memberValue0_1)\n mstore(pos_1, length_1)\n pos_2 := add(pos_1, _1)\n let srcPtr_1 := add(memberValue0_1, _1)\n let i_1 := 0\n for { } lt(i_1, length_1) { i_1 := add(i_1, 1) }\n {\n pos_2 := abi_encodeUpdatedPos_struct_MultiTargetPermission(mload(srcPtr_1), pos_2)\n srcPtr_1 := add(srcPtr_1, _1)\n }\n end := pos_2\n }\n function abi_encode_tuple_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$14216_memory_ptr__to_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$14216_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n {\n mstore(headStart, 64)\n let tail_1 := abi_encode_bytes(value0, add(headStart, 64))\n mstore(add(headStart, 32), sub(tail_1, headStart))\n tail := abi_encode_struct_PreparedSetupData(value1, tail_1)\n }\n function panic_error_0x41()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function abi_decode_tuple_t_addresst_bytes_memory_ptr(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n let offset := calldataload(add(headStart, 32))\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n let _2 := add(headStart, offset)\n if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n let _3 := calldataload(_2)\n if gt(_3, _1) { panic_error_0x41() }\n let _4 := not(31)\n let memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n mstore(memPtr, _3)\n if gt(add(add(_2, _3), 32), dataEnd) { revert(0, 0) }\n calldatacopy(add(memPtr, 32), add(_2, 32), _3)\n mstore(add(add(memPtr, _3), 32), 0)\n value1 := memPtr\n }\n function abi_encode_tuple_t_address_t_struct$_PreparedSetupData_$14216_memory_ptr__to_t_address_t_struct$_PreparedSetupData_$14216_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n {\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n mstore(add(headStart, 32), 64)\n tail := abi_encode_struct_PreparedSetupData(value1, add(headStart, 64))\n }\n function abi_encode_tuple_t_contract$_IDAO_$10865__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function panic_error_0x11()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n function checked_sub_t_uint160(x, y) -> diff\n {\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n diff := sub(and(x, _1), and(y, _1))\n if gt(diff, _1) { panic_error_0x11() }\n }\n function panic_error_0x32()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n function increment_t_uint160(value) -> ret\n {\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n let value_1 := and(value, _1)\n if eq(value_1, _1) { panic_error_0x11() }\n ret := add(value_1, 1)\n }\n function abi_encode_tuple_t_stringliteral_68ca40b61460257f14e69f48b1a4dbc812e9afc6932f127ef8084544457b3335__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 22)\n mstore(add(headStart, 64), \"ERC1167: create failed\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 38)\n mstore(add(headStart, 64), \"Address: insufficient balance fo\")\n mstore(add(headStart, 96), \"r call\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n {\n let length := mload(value0)\n copy_memory_to_memory_with_cleanup(add(value0, 0x20), pos, length)\n end := add(pos, length)\n }\n function abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 29)\n mstore(add(headStart, 64), \"Address: call to non-contract\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n mstore(headStart, 32)\n tail := abi_encode_bytes(value0, add(headStart, 32))\n }\n}","id":92,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{"14293":[{"length":32,"start":193},{"length":32,"start":664}]},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100725760003560e01c80639cb0a124116100505780639cb0a124146100eb578063a8a9c29e1461010b578063f10832f11461012c57600080fd5b806301ffc9a7146100775780632ae9c6001461009f5780635c60da1b146100b4575b600080fd5b61008a6100853660046107fe565b61014d565b60405190151581526020015b60405180910390f35b6100a761019e565b6040516100969190610828565b6040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152602001610096565b6100fe6100f9366004610885565b6101c8565b604051610096919061094f565b61011e610119366004610998565b6101df565b604051610096929190610ae2565b61013f61013a366004610b26565b610217565b604051610096929190610be8565b60006001600160e01b0319821663099718b560e41b148061017d57506001600160e01b03198216621574e360e91b145b8061019857506301ffc9a760e01b6001600160e01b03198316145b92915050565b6101a66107e0565b5060408051606081018252600181526004602082015260009181019190915290565b60606101d86000600260016102f3565b9392505050565b60606101fe604051806040016040528060608152602001606081525090565b60405163a112810160e01b815260040160405180910390fd5b6000610236604051806040016040528060608152602001606081525090565b6040516001600160a01b038516602482015260009060440160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663189acdbd60e31b17905290506102c9816102ba7f000000000000000000000000000000000000000000000000000000000000000090565b6001600160a01b031690610478565b92506102d560026104b0565b82526102e460006002816102f3565b60208301525090939092509050565b6060826001600160a01b0316846001600160a01b0316111561032857604051633a4013cd60e21b815260040160405180910390fd5b6103328484610c20565b6001600160a01b031667ffffffffffffffff81111561035357610353610b10565b6040519080825280602002602001820160405280156103ac57816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282526000199092019101816103715790505b509050835b836001600160a01b0316816001600160a01b03161015610470576040518060a001604052808460028111156103e8576103e86108d3565b81526001600160a01b038316602082018190526040820152600060608201527fa280eec51ab8e1bc4b6b0c1b7f1bde785761b787a49db404e3e9338ed9b016ef608090910152826104398784610c20565b6001600160a01b03168151811061045257610452610c40565b6020026020010181905250808061046890610c56565b9150506103b1565b509392505050565b600061048c836001600160a01b0316610569565b825190915015610198576104a96001600160a01b0382168361060f565b5092915050565b6060816001600160a01b031667ffffffffffffffff8111156104d4576104d4610b10565b6040519080825280602002602001820160405280156104fd578160200160208202803683370190505b50905060005b826001600160a01b0316816001600160a01b03161015610563578082826001600160a01b03168151811061053957610539610c40565b6001600160a01b03909216602092830291909101909101528061055b81610c56565b915050610503565b50919050565b6000763d602d80600a3d3981f3363d3d373d3d3d363d730000008260601b60e81c176000526e5af43d82803e903d91602b57fd5bf38260781b17602052603760096000f090506001600160a01b03811661060a5760405162461bcd60e51b815260206004820152601660248201527f455243313136373a20637265617465206661696c65640000000000000000000060448201526064015b60405180910390fd5b919050565b60606101d8838360006040518060400160405280601e81526020017f416464726573733a206c6f772d6c6576656c2063616c6c206661696c656400008152506060824710156106c65760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610601565b600080866001600160a01b031685876040516106e29190610c7c565b60006040518083038185875af1925050503d806000811461071f576040519150601f19603f3d011682016040523d82523d6000602084013e610724565b606091505b509150915061073587838387610742565b925050505b949350505050565b606083156107b15782516000036107aa576001600160a01b0385163b6107aa5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610601565b508161073a565b61073a83838151156107c65781518083602001fd5b8060405162461bcd60e51b81526004016106019190610c98565b60405180606001604052806003906020820280368337509192915050565b60006020828403121561081057600080fd5b81356001600160e01b0319811681146101d857600080fd5b60608101818360005b600381101561085357815160ff16835260209283019290910190600101610831565b50505092915050565b80356001600160a01b038116811461060a57600080fd5b60006060828403121561056357600080fd5b6000806040838503121561089857600080fd5b6108a18361085c565b9150602083013567ffffffffffffffff8111156108bd57600080fd5b6108c985828601610873565b9150509250929050565b634e487b7160e01b600052602160045260246000fd5b600081516003811061090b57634e487b7160e01b600052602160045260246000fd5b8352506020818101516001600160a01b0390811691840191909152604080830151821690840152606080830151909116908301526080908101519082015260a00190565b6020808252825182820181905260009190848201906040850190845b8181101561098c5761097e8385516108e9565b93850193925060010161096b565b50909695505050505050565b6000806000606084860312156109ad57600080fd5b6109b68461085c565b9250602084013561ffff811681146109cd57600080fd5b9150604084013567ffffffffffffffff8111156109e957600080fd5b6109f586828701610873565b9150509250925092565b60005b83811015610a1a578181015183820152602001610a02565b50506000910152565b60008151808452610a3b8160208601602086016109ff565b601f01601f19169290920160200192915050565b805160408084528151908401819052600091602091908201906060860190845b81811015610a945783516001600160a01b031683529284019291840191600101610a6f565b50508483015186820387850152805180835290840192506000918401905b80831015610ad757610ac58285516108e9565b91508484019350600183019250610ab2565b509695505050505050565b604081526000610af56040830185610a23565b8281036020840152610b078185610a4f565b95945050505050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215610b3957600080fd5b610b428361085c565b9150602083013567ffffffffffffffff80821115610b5f57600080fd5b818501915085601f830112610b7357600080fd5b813581811115610b8557610b85610b10565b604051601f8201601f19908116603f01168101908382118183101715610bad57610bad610b10565b81604052828152886020848701011115610bc657600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6001600160a01b038316815260406020820152600061073a6040830184610a4f565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b038281168282160390808211156104a9576104a9610c0a565b634e487b7160e01b600052603260045260246000fd5b60006001600160a01b03808316818103610c7257610c72610c0a565b6001019392505050565b60008251610c8e8184602087016109ff565b9190910192915050565b6020815260006101d86020830184610a2356fea164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x72 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9CB0A124 GT PUSH2 0x50 JUMPI DUP1 PUSH4 0x9CB0A124 EQ PUSH2 0xEB JUMPI DUP1 PUSH4 0xA8A9C29E EQ PUSH2 0x10B JUMPI DUP1 PUSH4 0xF10832F1 EQ PUSH2 0x12C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x77 JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0x9F JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0xB4 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8A PUSH2 0x85 CALLDATASIZE PUSH1 0x4 PUSH2 0x7FE JUMP JUMPDEST PUSH2 0x14D JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xA7 PUSH2 0x19E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x96 SWAP2 SWAP1 PUSH2 0x828 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x96 JUMP JUMPDEST PUSH2 0xFE PUSH2 0xF9 CALLDATASIZE PUSH1 0x4 PUSH2 0x885 JUMP JUMPDEST PUSH2 0x1C8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x96 SWAP2 SWAP1 PUSH2 0x94F JUMP JUMPDEST PUSH2 0x11E PUSH2 0x119 CALLDATASIZE PUSH1 0x4 PUSH2 0x998 JUMP JUMPDEST PUSH2 0x1DF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x96 SWAP3 SWAP2 SWAP1 PUSH2 0xAE2 JUMP JUMPDEST PUSH2 0x13F PUSH2 0x13A CALLDATASIZE PUSH1 0x4 PUSH2 0xB26 JUMP JUMPDEST PUSH2 0x217 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x96 SWAP3 SWAP2 SWAP1 PUSH2 0xBE8 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x99718B5 PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x17D JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x198 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1A6 PUSH2 0x7E0 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1D8 PUSH1 0x0 PUSH1 0x2 PUSH1 0x1 PUSH2 0x2F3 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1FE PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xA1128101 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x236 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 PUSH1 0x44 ADD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x189ACDBD PUSH1 0xE3 SHL OR SWAP1 MSTORE SWAP1 POP PUSH2 0x2C9 DUP2 PUSH2 0x2BA PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH2 0x478 JUMP JUMPDEST SWAP3 POP PUSH2 0x2D5 PUSH1 0x2 PUSH2 0x4B0 JUMP JUMPDEST DUP3 MSTORE PUSH2 0x2E4 PUSH1 0x0 PUSH1 0x2 DUP2 PUSH2 0x2F3 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP SWAP1 SWAP4 SWAP1 SWAP3 POP SWAP1 POP JUMP JUMPDEST PUSH1 0x60 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH2 0x328 JUMPI PUSH1 0x40 MLOAD PUSH4 0x3A4013CD PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x332 DUP5 DUP5 PUSH2 0xC20 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x353 JUMPI PUSH2 0x353 PUSH2 0xB10 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x3AC JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD DUP3 SWAP1 MSTORE SWAP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 DUP3 ADD MSTORE DUP3 MSTORE PUSH1 0x0 NOT SWAP1 SWAP3 ADD SWAP2 ADD DUP2 PUSH2 0x371 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP DUP4 JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT ISZERO PUSH2 0x470 JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 DUP5 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x3E8 JUMPI PUSH2 0x3E8 PUSH2 0x8D3 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x60 DUP3 ADD MSTORE PUSH32 0xA280EEC51AB8E1BC4B6B0C1B7F1BDE785761B787A49DB404E3E9338ED9B016EF PUSH1 0x80 SWAP1 SWAP2 ADD MSTORE DUP3 PUSH2 0x439 DUP8 DUP5 PUSH2 0xC20 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MLOAD DUP2 LT PUSH2 0x452 JUMPI PUSH2 0x452 PUSH2 0xC40 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP DUP1 DUP1 PUSH2 0x468 SWAP1 PUSH2 0xC56 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x3B1 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x48C DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x569 JUMP JUMPDEST DUP3 MLOAD SWAP1 SWAP2 POP ISZERO PUSH2 0x198 JUMPI PUSH2 0x4A9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP4 PUSH2 0x60F JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x4D4 JUMPI PUSH2 0x4D4 PUSH2 0xB10 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x4FD JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT ISZERO PUSH2 0x563 JUMPI DUP1 DUP3 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MLOAD DUP2 LT PUSH2 0x539 JUMPI PUSH2 0x539 PUSH2 0xC40 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE DUP1 PUSH2 0x55B DUP2 PUSH2 0xC56 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x503 JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH23 0x3D602D80600A3D3981F3363D3D373D3D3D363D73000000 DUP3 PUSH1 0x60 SHL PUSH1 0xE8 SHR OR PUSH1 0x0 MSTORE PUSH15 0x5AF43D82803E903D91602B57FD5BF3 DUP3 PUSH1 0x78 SHL OR PUSH1 0x20 MSTORE PUSH1 0x37 PUSH1 0x9 PUSH1 0x0 CREATE SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x60A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313136373A20637265617465206661696C656400000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1D8 DUP4 DUP4 PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x416464726573733A206C6F772D6C6576656C2063616C6C206661696C65640000 DUP2 MSTORE POP PUSH1 0x60 DUP3 SELFBALANCE LT ISZERO PUSH2 0x6C6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A20696E73756666696369656E742062616C616E636520666F PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x722063616C6C0000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x601 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP8 PUSH1 0x40 MLOAD PUSH2 0x6E2 SWAP2 SWAP1 PUSH2 0xC7C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x71F JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x724 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x735 DUP8 DUP4 DUP4 DUP8 PUSH2 0x742 JUMP JUMPDEST SWAP3 POP POP POP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x7B1 JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0x7AA JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0x7AA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x601 JUMP JUMPDEST POP DUP2 PUSH2 0x73A JUMP JUMPDEST PUSH2 0x73A DUP4 DUP4 DUP2 MLOAD ISZERO PUSH2 0x7C6 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x601 SWAP2 SWAP1 PUSH2 0xC98 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x810 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x1D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0x853 JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x831 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x60A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x563 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x898 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8A1 DUP4 PUSH2 0x85C JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x8BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8C9 DUP6 DUP3 DUP7 ADD PUSH2 0x873 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP2 MLOAD PUSH1 0x3 DUP2 LT PUSH2 0x90B JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP4 MSTORE POP PUSH1 0x20 DUP2 DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP1 DUP4 ADD MLOAD DUP3 AND SWAP1 DUP5 ADD MSTORE PUSH1 0x60 DUP1 DUP4 ADD MLOAD SWAP1 SWAP2 AND SWAP1 DUP4 ADD MSTORE PUSH1 0x80 SWAP1 DUP2 ADD MLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x98C JUMPI PUSH2 0x97E DUP4 DUP6 MLOAD PUSH2 0x8E9 JUMP JUMPDEST SWAP4 DUP6 ADD SWAP4 SWAP3 POP PUSH1 0x1 ADD PUSH2 0x96B JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x9AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9B6 DUP5 PUSH2 0x85C JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH2 0x9CD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x9E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9F5 DUP7 DUP3 DUP8 ADD PUSH2 0x873 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xA1A JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xA02 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0xA3B DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x9FF JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x40 DUP1 DUP5 MSTORE DUP2 MLOAD SWAP1 DUP5 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x20 SWAP2 SWAP1 DUP3 ADD SWAP1 PUSH1 0x60 DUP7 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xA94 JUMPI DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0xA6F JUMP JUMPDEST POP POP DUP5 DUP4 ADD MLOAD DUP7 DUP3 SUB DUP8 DUP6 ADD MSTORE DUP1 MLOAD DUP1 DUP4 MSTORE SWAP1 DUP5 ADD SWAP3 POP PUSH1 0x0 SWAP2 DUP5 ADD SWAP1 JUMPDEST DUP1 DUP4 LT ISZERO PUSH2 0xAD7 JUMPI PUSH2 0xAC5 DUP3 DUP6 MLOAD PUSH2 0x8E9 JUMP JUMPDEST SWAP2 POP DUP5 DUP5 ADD SWAP4 POP PUSH1 0x1 DUP4 ADD SWAP3 POP PUSH2 0xAB2 JUMP JUMPDEST POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 PUSH2 0xAF5 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0xA23 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0xB07 DUP2 DUP6 PUSH2 0xA4F JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xB39 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB42 DUP4 PUSH2 0x85C JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xB5F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xB73 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0xB85 JUMPI PUSH2 0xB85 PUSH2 0xB10 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0xBAD JUMPI PUSH2 0xBAD PUSH2 0xB10 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0xBC6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0x73A PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0xA4F JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND DUP3 DUP3 AND SUB SWAP1 DUP1 DUP3 GT ISZERO PUSH2 0x4A9 JUMPI PUSH2 0x4A9 PUSH2 0xC0A JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND DUP2 DUP2 SUB PUSH2 0xC72 JUMPI PUSH2 0xC72 PUSH2 0xC0A JUMP JUMPDEST PUSH1 0x1 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0xC8E DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x9FF JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x1D8 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0xA23 JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"2043:1127:49:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2112:293:82;;;;;;:::i;:::-;;:::i;:::-;;;470:14:92;;463:22;445:41;;433:2;418:18;2112:293:82;;;;;;;;631:98:90;;;:::i;:::-;;;;;;;:::i;2444:94:82:-;;;-1:-1:-1;;;;;2517:14:82;1167:55:92;1149:74;;1137:2;1122:18;2444:94:82;1003:226:92;2869:299:49;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1639:265:82:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;2292:538:49:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;2112:293:82:-;2198:4;-1:-1:-1;;;;;;2233:46:82;;-1:-1:-1;;;2233:46:82;;:112;;-1:-1:-1;;;;;;;2295:50:82;;-1:-1:-1;;;2295:50:82;2233:112;:165;;;-1:-1:-1;;;;;;;;;;937:40:38;;;2361:37:82;2214:184;2112:293;-1:-1:-1;;2112:293:82:o;631:98:90:-;679:15;;:::i;:::-;-1:-1:-1;706:16:90;;;;;;;;714:1;706:16;;717:1;706:16;;;;-1:-1:-1;706:16:90;;;;;;;;631:98::o;2869:299:49:-;2991:56;3099:62;3115:1;2175;3130:30;3099:15;:62::i;:::-;3085:76;2869:299;-1:-1:-1;;;2869:299:49:o;1639:265:82:-;1780:12;1794:24;-1:-1:-1;;;;;;;;;;;;;;;;;;;1794:24:82;1875:22;;-1:-1:-1;;;1875:22:82;;;;;;;;;;;2292:538:49;2389:14;2405:42;-1:-1:-1;;;;;;;;;;;;;;;;;;;2405:42:49;2483:66;;-1:-1:-1;;;;;1167:55:92;;2483:66:49;;;1149:74:92;2459:21:49;;1122:18:92;;2483:66:49;;;-1:-1:-1;;2483:66:49;;;;;;;;;;;;;;;;-1:-1:-1;;;2483:66:49;;;;-1:-1:-1;2568:45:49;2483:66;2568:16;2517:14:82;;2444:94;2568:16:49;-1:-1:-1;;;;;2568:35:49;;;:45::i;:::-;2559:54;-1:-1:-1;2651:23:49;2175:1;2651:11;:23::i;:::-;2623:51;;2716:107;2623:25;2175:1;2623:25;2716:15;:107::i;:::-;2684:29;;;:139;-1:-1:-1;2292:538:49;;2684:17;;-1:-1:-1;2292:538:49;-1:-1:-1;2292:538:49:o;580:666:52:-;699:56;780:8;-1:-1:-1;;;;;767:21:52;:10;-1:-1:-1;;;;;767:21:52;;763:53;;;797:19;;-1:-1:-1;;;797:19:52;;;;;;;;;;;763:53;879:21;890:10;879:8;:21;:::i;:::-;-1:-1:-1;;;;;837:64:52;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;837:64:52;;-1:-1:-1;;837:64:52;;;;;;;;;;;-1:-1:-1;823:78:52;-1:-1:-1;925:10:52;908:336;941:8;-1:-1:-1;;;;;937:12:52;:1;-1:-1:-1;;;;;937:12:52;;908:336;;;996:241;;;;;;;;1057:2;996:241;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;996:241:52;;;;;;;;;;;;-1:-1:-1;996:241:52;;;;1198:28;996:241;;;;;966:11;978:14;982:10;1088:1;978:14;:::i;:::-;-1:-1:-1;;;;;966:27:52;;;;;;;;;:::i;:::-;;;;;;:271;;;;951:3;;;;;:::i;:::-;;;;908:336;;;;580:666;;;;;:::o;2237:292:85:-;2349:20;2396:14;:6;-1:-1:-1;;;;;2396:12:85;;:14::i;:::-;2424:20;;2381:29;;-1:-1:-1;2424:24:85;2420:103;;2464:48;-1:-1:-1;;;;;2464:25:85;;2497:13;2464:25;:48::i;:::-;;2237:292;;;;:::o;1529:191:52:-;1577:24;1633:3;-1:-1:-1;;;;;1619:18:52;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1619:18:52;;1609:28;;1649:9;1644:74;1668:3;-1:-1:-1;;;;;1664:7:52;:1;-1:-1:-1;;;;;1664:7:52;;1644:74;;;1709:1;1688:7;1696:1;-1:-1:-1;;;;;1688:10:52;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1688:23:52;;;:10;;;;;;;;;;;:23;1673:3;;;;:::i;:::-;;;;1644:74;;;;1529:191;;;:::o;973:759:17:-;1030:16;1362:48;1344:14;1338:4;1334:25;1328:4;1324:36;1321:90;1315:4;1308:104;1569:32;1552:14;1546:4;1542:25;1539:63;1533:4;1526:77;1644:4;1638;1635:1;1628:21;1616:33;-1:-1:-1;;;;;;1676:22:17;;1668:57;;;;-1:-1:-1;;;1668:57:17;;9082:2:92;1668:57:17;;;9064:21:92;9121:2;9101:18;;;9094:30;9160:24;9140:18;;;9133:52;9202:18;;1668:57:17;;;;;;;;;973:759;;;:::o;3701:185:33:-;3776:12;3807:72;3829:6;3837:4;3843:1;3807:72;;;;;;;;;;;;;;;;;5330:12;5387:5;5362:21;:30;;5354:81;;;;-1:-1:-1;;;5354:81:33;;9433:2:92;5354:81:33;;;9415:21:92;9472:2;9452:18;;;9445:30;9511:34;9491:18;;;9484:62;9582:8;9562:18;;;9555:36;9608:19;;5354:81:33;9231:402:92;5354:81:33;5446:12;5460:23;5487:6;-1:-1:-1;;;;;5487:11:33;5506:5;5513:4;5487:31;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5445:73;;;;5535:69;5562:6;5570:7;5579:10;5591:12;5535:26;:69::i;:::-;5528:76;;;;5165:446;;;;;;;:::o;7671:628::-;7851:12;7879:7;7875:418;;;7906:10;:17;7927:1;7906:22;7902:286;;-1:-1:-1;;;;;1702:19:33;;;8113:60;;;;-1:-1:-1;;;8113:60:33;;10132:2:92;8113:60:33;;;10114:21:92;10171:2;10151:18;;;10144:30;10210:31;10190:18;;;10183:59;10259:18;;8113:60:33;9930:353:92;8113:60:33;-1:-1:-1;8208:10:33;8201:17;;7875:418;8249:33;8257:10;8269:12;8980:17;;:21;8976:379;;9208:10;9202:17;9264:15;9251:10;9247:2;9243:19;9236:44;8976:379;9331:12;9324:20;;-1:-1:-1;;;9324:20:33;;;;;;;;:::i;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:286:92:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:92;;209:43;;199:71;;266:1;263;256:12;497:501;673:2;658:18;;662:9;753:6;631:4;787:205;801:4;798:1;795:11;787:205;;;864:13;;879:4;860:24;848:37;;908:4;932:12;;;;967:15;;;;821:1;814:9;787:205;;;791:3;;;497:501;;;;:::o;1234:196::-;1302:20;;-1:-1:-1;;;;;1351:54:92;;1341:65;;1331:93;;1420:1;1417;1410:12;1435:160;1500:5;1545:2;1536:6;1531:3;1527:16;1523:25;1520:45;;;1561:1;1558;1551:12;1600:441;1701:6;1709;1762:2;1750:9;1741:7;1737:23;1733:32;1730:52;;;1778:1;1775;1768:12;1730:52;1801:29;1820:9;1801:29;:::i;:::-;1791:39;;1881:2;1870:9;1866:18;1853:32;1908:18;1900:6;1897:30;1894:50;;;1940:1;1937;1930:12;1894:50;1963:72;2027:7;2018:6;2007:9;2003:22;1963:72;:::i;:::-;1953:82;;;1600:441;;;;;:::o;2046:127::-;2107:10;2102:3;2098:20;2095:1;2088:31;2138:4;2135:1;2128:15;2162:4;2159:1;2152:15;2178:696;2253:10;2294:6;2288:13;2327:1;2323:2;2320:9;2310:140;;2372:10;2367:3;2363:20;2360:1;2353:31;2407:4;2404:1;2397:15;2435:4;2432:1;2425:15;2310:140;2459:15;;-1:-1:-1;2521:4:92;2509:17;;;2503:24;-1:-1:-1;;;;;2620:21:92;;;2604:14;;;2597:45;;;;2696:4;2684:17;;;2678:24;2674:33;;2658:14;;;2651:57;2762:4;2750:17;;;2744:24;2740:33;;;2724:14;;;2717:57;2824:4;2812:17;;;2806:24;2790:14;;;2783:48;2863:4;2854:14;;2178:696::o;2879:730::-;3130:2;3182:21;;;3252:13;;3155:18;;;3274:22;;;3101:4;;3130:2;3353:15;;;;3327:2;3312:18;;;3101:4;3396:187;3410:6;3407:1;3404:13;3396:187;;;3466:69;3531:3;3522:6;3516:13;3466:69;:::i;:::-;3558:15;;;;3459:76;-1:-1:-1;3432:1:92;3425:9;3396:187;;;-1:-1:-1;3600:3:92;;2879:730;-1:-1:-1;;;;;;2879:730:92:o;3614:601::-;3723:6;3731;3739;3792:2;3780:9;3771:7;3767:23;3763:32;3760:52;;;3808:1;3805;3798:12;3760:52;3831:29;3850:9;3831:29;:::i;:::-;3821:39;;3910:2;3899:9;3895:18;3882:32;3954:6;3947:5;3943:18;3936:5;3933:29;3923:57;;3976:1;3973;3966:12;3923:57;3999:5;-1:-1:-1;4055:2:92;4040:18;;4027:32;4082:18;4071:30;;4068:50;;;4114:1;4111;4104:12;4068:50;4137:72;4201:7;4192:6;4181:9;4177:22;4137:72;:::i;:::-;4127:82;;;3614:601;;;;;:::o;4220:250::-;4305:1;4315:113;4329:6;4326:1;4323:13;4315:113;;;4405:11;;;4399:18;4386:11;;;4379:39;4351:2;4344:10;4315:113;;;-1:-1:-1;;4462:1:92;4444:16;;4437:27;4220:250::o;4475:270::-;4516:3;4554:5;4548:12;4581:6;4576:3;4569:19;4597:76;4666:6;4659:4;4654:3;4650:14;4643:4;4636:5;4632:16;4597:76;:::i;:::-;4727:2;4706:15;-1:-1:-1;;4702:29:92;4693:39;;;;4734:4;4689:50;;4475:270;-1:-1:-1;;4475:270:92:o;4750:1162::-;4883:12;;4849:4;4904:17;;;4970:19;;4840:14;;;4998:20;;;4810:3;;5067:4;;5094:21;;;;5045:2;5036:12;;;4810:3;5143:224;5157:6;5154:1;5151:13;5143:224;;;5224:13;;-1:-1:-1;;;;;5220:62:92;5206:77;;5342:15;;;;5305:14;;;;5179:1;5172:9;5143:224;;;-1:-1:-1;;5404:14:92;;;5398:21;5449:15;;;5435:12;;;5428:37;5517:21;;5547:23;;;5627;;;;-1:-1:-1;5670:1:92;;5588:14;;;5680:205;5696:8;5691:3;5688:17;5680:205;;;5760:73;5827:5;5816:8;5810:15;5760:73;:::i;:::-;5751:82;;5872:2;5862:8;5858:17;5846:29;;5724:1;5719:3;5715:11;5708:18;;5680:205;;;-1:-1:-1;5901:5:92;4750:1162;-1:-1:-1;;;;;;4750:1162:92:o;5917:450::-;6164:2;6153:9;6146:21;6127:4;6190:44;6230:2;6219:9;6215:18;6207:6;6190:44;:::i;:::-;6282:9;6274:6;6270:22;6265:2;6254:9;6250:18;6243:50;6310:51;6354:6;6346;6310:51;:::i;:::-;6302:59;5917:450;-1:-1:-1;;;;;5917:450:92:o;6372:127::-;6433:10;6428:3;6424:20;6421:1;6414:31;6464:4;6461:1;6454:15;6488:4;6485:1;6478:15;6504:995;6581:6;6589;6642:2;6630:9;6621:7;6617:23;6613:32;6610:52;;;6658:1;6655;6648:12;6610:52;6681:29;6700:9;6681:29;:::i;:::-;6671:39;;6761:2;6750:9;6746:18;6733:32;6784:18;6825:2;6817:6;6814:14;6811:34;;;6841:1;6838;6831:12;6811:34;6879:6;6868:9;6864:22;6854:32;;6924:7;6917:4;6913:2;6909:13;6905:27;6895:55;;6946:1;6943;6936:12;6895:55;6982:2;6969:16;7004:2;7000;6997:10;6994:36;;;7010:18;;:::i;:::-;7085:2;7079:9;7053:2;7139:13;;-1:-1:-1;;7135:22:92;;;7159:2;7131:31;7127:40;7115:53;;;7183:18;;;7203:22;;;7180:46;7177:72;;;7229:18;;:::i;:::-;7269:10;7265:2;7258:22;7304:2;7296:6;7289:18;7344:7;7339:2;7334;7330;7326:11;7322:20;7319:33;7316:53;;;7365:1;7362;7355:12;7316:53;7421:2;7416;7412;7408:11;7403:2;7395:6;7391:15;7378:46;7466:1;7461:2;7456;7448:6;7444:15;7440:24;7433:35;7487:6;7477:16;;;;;;;6504:995;;;;;:::o;7504:410::-;-1:-1:-1;;;;;7737:6:92;7733:55;7722:9;7715:74;7825:2;7820;7809:9;7805:18;7798:30;7696:4;7845:63;7904:2;7893:9;7889:18;7881:6;7845:63;:::i;8164:127::-;8225:10;8220:3;8216:20;8213:1;8206:31;8256:4;8253:1;8246:15;8280:4;8277:1;8270:15;8296:208;-1:-1:-1;;;;;8440:10:92;;;8428;;;8424:27;;8463:12;;;8460:38;;;8478:18;;:::i;8509:127::-;8570:10;8565:3;8561:20;8558:1;8551:31;8601:4;8598:1;8591:15;8625:4;8622:1;8615:15;8641:234;8680:3;-1:-1:-1;;;;;8785:2:92;8778:5;8774:14;8812:2;8803:7;8800:15;8797:41;;8818:18;;:::i;:::-;8867:1;8854:15;;8641:234;-1:-1:-1;;;8641:234:92:o;9638:287::-;9767:3;9805:6;9799:13;9821:66;9880:6;9875:3;9868:4;9860:6;9856:17;9821:66;:::i;:::-;9903:16;;;;;9638:287;-1:-1:-1;;9638:287:92:o;10288:219::-;10437:2;10426:9;10419:21;10400:4;10457:44;10497:2;10486:9;10482:18;10474:6;10457:44;:::i"},"gasEstimates":{"creation":{"codeDepositCost":"651200","executionCost":"infinite","totalCost":"infinite"},"external":{"implementation()":"infinite","prepareInstallation(address,bytes)":"infinite","prepareUninstallation(address,(address,address[],bytes))":"infinite","prepareUpdate(address,uint16,(address,address[],bytes))":"624","protocolVersion()":"infinite","supportsInterface(bytes4)":"482"}},"methodIdentifiers":{"implementation()":"5c60da1b","prepareInstallation(address,bytes)":"f10832f1","prepareUninstallation(address,(address,address[],bytes))":"9cb0a124","prepareUpdate(address,uint16,(address,address[],bytes))":"a8a9c29e","protocolVersion()":"2ae9c600","supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ConflictingValues\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NonUpgradeablePlugin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_dao\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"prepareInstallation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"plugin\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address[]\",\"name\":\"helpers\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"enum PermissionLib.Operation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"condition\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PermissionLib.MultiTargetPermission[]\",\"name\":\"permissions\",\"type\":\"tuple[]\"}],\"internalType\":\"struct IPluginSetup.PreparedSetupData\",\"name\":\"preparedSetupData\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_dao\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"plugin\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"currentHelpers\",\"type\":\"address[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IPluginSetup.SetupPayload\",\"name\":\"_payload\",\"type\":\"tuple\"}],\"name\":\"prepareUninstallation\",\"outputs\":[{\"components\":[{\"internalType\":\"enum PermissionLib.Operation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"condition\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PermissionLib.MultiTargetPermission[]\",\"name\":\"permissions\",\"type\":\"tuple[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_dao\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"_fromBuild\",\"type\":\"uint16\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"plugin\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"currentHelpers\",\"type\":\"address[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IPluginSetup.SetupPayload\",\"name\":\"_payload\",\"type\":\"tuple\"}],\"name\":\"prepareUpdate\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address[]\",\"name\":\"helpers\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"enum PermissionLib.Operation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"condition\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PermissionLib.MultiTargetPermission[]\",\"name\":\"permissions\",\"type\":\"tuple[]\"}],\"internalType\":\"struct IPluginSetup.PreparedSetupData\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"protocolVersion\",\"outputs\":[{\"internalType\":\"uint8[3]\",\"name\":\"\",\"type\":\"uint8[3]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"DO NOT USE IN PRODUCTION!\",\"kind\":\"dev\",\"methods\":{\"implementation()\":{\"details\":\"The implementation can be instantiated via the `new` keyword, cloned via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)), or proxied via the UUPS proxy pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\",\"returns\":{\"_0\":\"The address of the plugin implementation contract.\"}},\"prepareInstallation(address,bytes)\":{\"params\":{\"_dao\":\"The address of the installing DAO.\",\"_data\":\"The bytes-encoded data containing the input parameters for the installation as specified in the plugin's build metadata JSON file.\"},\"returns\":{\"plugin\":\"The address of the `Plugin` contract being prepared for installation.\",\"preparedSetupData\":\"The deployed plugin's relevant data which consists of helpers and permissions.\"}},\"prepareUninstallation(address,(address,address[],bytes))\":{\"params\":{\"_dao\":\"The address of the uninstalling DAO.\",\"_payload\":\"The relevant data necessary for the `prepareUninstallation`. See above.\"},\"returns\":{\"permissions\":\"The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the uninstalling DAO.\"}},\"prepareUpdate(address,uint16,(address,address[],bytes))\":{\"details\":\"Since the underlying plugin is non-upgradeable, this non-virtual function must always revert.\",\"params\":{\"_dao\":\"The address of the updating DAO.\",\"_fromBuild\":\"The build number of the plugin to update from.\",\"_payload\":\"The relevant data necessary for the `prepareUpdate`. See above.\"},\"returns\":{\"_0\":\"The initialization data to be passed to upgradeable contracts when the update is applied in the `PluginSetupProcessor`.\",\"_1\":\"The deployed plugin's relevant data which consists of helpers and permissions.\"}},\"protocolVersion()\":{\"details\":\"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\",\"returns\":{\"_0\":\"Returns the semantic Aragon OSx protocol version number.\"}},\"supportsInterface(bytes4)\":{\"params\":{\"_interfaceId\":\"The ID of the interface.\"},\"returns\":{\"_0\":\"Returns `true` if the interface is supported.\"}}},\"version\":1},\"userdoc\":{\"errors\":{\"NonUpgradeablePlugin()\":[{\"notice\":\"Thrown when attempting to prepare an update on a non-upgradeable plugin.\"}]},\"kind\":\"user\",\"methods\":{\"implementation()\":{\"notice\":\"Returns the plugin implementation address.\"},\"prepareInstallation(address,bytes)\":{\"notice\":\"Prepares the installation of a plugin.\"},\"prepareUninstallation(address,(address,address[],bytes))\":{\"notice\":\"Prepares the uninstallation of a plugin.\"},\"prepareUpdate(address,uint16,(address,address[],bytes))\":{\"notice\":\"Prepares the update of a plugin.\"},\"protocolVersion()\":{\"notice\":\"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Checks if this or the parent contract supports an interface by its ID.\"}},\"notice\":\"A mock plugin setup of a cloneable plugin to be deployed via the minimal proxy pattern. v1.2 (Release 1, Build 2)\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/mocks/plugin/PluginCloneableSetupMock.sol\":\"PluginCloneableSetupMockBuild2\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n function __Context_init() internal onlyInitializing {\\n }\\n\\n function __Context_init_unchained() internal onlyInitializing {\\n }\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n function _contextSuffixLength() internal view virtual returns (uint256) {\\n return 0;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x75097e35253e7fb282ee4d7f27a80eaacfa759923185bf17302a89cbc059c5ef\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165Upgradeable.sol\\\";\\nimport {Initializable} from \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165Upgradeable is Initializable, IERC165Upgradeable {\\n function __ERC165_init() internal onlyInitializing {\\n }\\n\\n function __ERC165_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165Upgradeable).interfaceId;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0xd90d7723512df65ae417adaf0801042940f0dabd60039ceeaffe34aa5b238da1\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165Upgradeable {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/IERC1967.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (interfaces/IERC1967.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\\n *\\n * _Available since v4.8.3._\\n */\\ninterface IERC1967 {\\n /**\\n * @dev Emitted when the implementation is upgraded.\\n */\\n event Upgraded(address indexed implementation);\\n\\n /**\\n * @dev Emitted when the admin account has changed.\\n */\\n event AdminChanged(address previousAdmin, address newAdmin);\\n\\n /**\\n * @dev Emitted when the beacon is changed.\\n */\\n event BeaconUpgraded(address indexed beacon);\\n}\\n\",\"keccak256\":\"0x3cbef5ebc24b415252e2f8c0c9254555d30d9f085603b4b80d9b5ed20ab87e90\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822Proxiable {\\n /**\\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n * address.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy.\\n */\\n function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/Clones.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/Clones.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev https://eips.ethereum.org/EIPS/eip-1167[EIP 1167] is a standard for\\n * deploying minimal proxy contracts, also known as \\\"clones\\\".\\n *\\n * > To simply and cheaply clone contract functionality in an immutable way, this standard specifies\\n * > a minimal bytecode implementation that delegates all calls to a known, fixed address.\\n *\\n * The library includes functions to deploy a proxy using either `create` (traditional deployment) or `create2`\\n * (salted deterministic deployment). It also includes functions to predict the addresses of clones deployed using the\\n * deterministic method.\\n *\\n * _Available since v3.4._\\n */\\nlibrary Clones {\\n /**\\n * @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`.\\n *\\n * This function uses the create opcode, which should never revert.\\n */\\n function clone(address implementation) internal returns (address instance) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n // Cleans the upper 96 bits of the `implementation` word, then packs the first 3 bytes\\n // of the `implementation` address with the bytecode before the address.\\n mstore(0x00, or(shr(0xe8, shl(0x60, implementation)), 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000))\\n // Packs the remaining 17 bytes of `implementation` with the bytecode after the address.\\n mstore(0x20, or(shl(0x78, implementation), 0x5af43d82803e903d91602b57fd5bf3))\\n instance := create(0, 0x09, 0x37)\\n }\\n require(instance != address(0), \\\"ERC1167: create failed\\\");\\n }\\n\\n /**\\n * @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`.\\n *\\n * This function uses the create2 opcode and a `salt` to deterministically deploy\\n * the clone. Using the same `implementation` and `salt` multiple time will revert, since\\n * the clones cannot be deployed twice at the same address.\\n */\\n function cloneDeterministic(address implementation, bytes32 salt) internal returns (address instance) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n // Cleans the upper 96 bits of the `implementation` word, then packs the first 3 bytes\\n // of the `implementation` address with the bytecode before the address.\\n mstore(0x00, or(shr(0xe8, shl(0x60, implementation)), 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000))\\n // Packs the remaining 17 bytes of `implementation` with the bytecode after the address.\\n mstore(0x20, or(shl(0x78, implementation), 0x5af43d82803e903d91602b57fd5bf3))\\n instance := create2(0, 0x09, 0x37, salt)\\n }\\n require(instance != address(0), \\\"ERC1167: create2 failed\\\");\\n }\\n\\n /**\\n * @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}.\\n */\\n function predictDeterministicAddress(\\n address implementation,\\n bytes32 salt,\\n address deployer\\n ) internal pure returns (address predicted) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n let ptr := mload(0x40)\\n mstore(add(ptr, 0x38), deployer)\\n mstore(add(ptr, 0x24), 0x5af43d82803e903d91602b57fd5bf3ff)\\n mstore(add(ptr, 0x14), implementation)\\n mstore(ptr, 0x3d602d80600a3d3981f3363d3d373d3d3d363d73)\\n mstore(add(ptr, 0x58), salt)\\n mstore(add(ptr, 0x78), keccak256(add(ptr, 0x0c), 0x37))\\n predicted := keccak256(add(ptr, 0x43), 0x55)\\n }\\n }\\n\\n /**\\n * @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}.\\n */\\n function predictDeterministicAddress(\\n address implementation,\\n bytes32 salt\\n ) internal view returns (address predicted) {\\n return predictDeterministicAddress(implementation, salt, address(this));\\n }\\n}\\n\",\"keccak256\":\"0x01f055f5c26ba25d7f83e9aa9ba877fbea4d0bf22227de046ea67494bc932999\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (proxy/ERC1967/ERC1967Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../Proxy.sol\\\";\\nimport \\\"./ERC1967Upgrade.sol\\\";\\n\\n/**\\n * @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an\\n * implementation address that can be changed. This address is stored in storage in the location specified by\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the\\n * implementation behind the proxy.\\n */\\ncontract ERC1967Proxy is Proxy, ERC1967Upgrade {\\n /**\\n * @dev Initializes the upgradeable proxy with an initial implementation specified by `_logic`.\\n *\\n * If `_data` is nonempty, it's used as data in a delegate call to `_logic`. This will typically be an encoded\\n * function call, and allows initializing the storage of the proxy like a Solidity constructor.\\n */\\n constructor(address _logic, bytes memory _data) payable {\\n _upgradeToAndCall(_logic, _data, false);\\n }\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _implementation() internal view virtual override returns (address impl) {\\n return ERC1967Upgrade._getImplementation();\\n }\\n}\\n\",\"keccak256\":\"0xa2b22da3032e50b55f95ec1d13336102d675f341167aa76db571ef7f8bb7975d\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../beacon/IBeacon.sol\\\";\\nimport \\\"../../interfaces/IERC1967.sol\\\";\\nimport \\\"../../interfaces/draft-IERC1822.sol\\\";\\nimport \\\"../../utils/Address.sol\\\";\\nimport \\\"../../utils/StorageSlot.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n */\\nabstract contract ERC1967Upgrade is IERC1967 {\\n // This is the keccak-256 hash of \\\"eip1967.proxy.rollback\\\" subtracted by 1\\n bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n /**\\n * @dev Storage slot with the address of the current implementation.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _getImplementation() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 implementation slot.\\n */\\n function _setImplementation(address newImplementation) private {\\n require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n }\\n\\n /**\\n * @dev Perform implementation upgrade\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeTo(address newImplementation) internal {\\n _setImplementation(newImplementation);\\n emit Upgraded(newImplementation);\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCall(address newImplementation, bytes memory data, bool forceCall) internal {\\n _upgradeTo(newImplementation);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(newImplementation, data);\\n }\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCallUUPS(address newImplementation, bytes memory data, bool forceCall) internal {\\n // Upgrades from old implementations will perform a rollback test. This test requires the new\\n // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n // this special case will break upgrade paths from old UUPS implementation to new ones.\\n if (StorageSlot.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n _setImplementation(newImplementation);\\n } else {\\n try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n require(slot == _IMPLEMENTATION_SLOT, \\\"ERC1967Upgrade: unsupported proxiableUUID\\\");\\n } catch {\\n revert(\\\"ERC1967Upgrade: new implementation is not UUPS\\\");\\n }\\n _upgradeToAndCall(newImplementation, data, forceCall);\\n }\\n }\\n\\n /**\\n * @dev Storage slot with the admin of the contract.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _getAdmin() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_ADMIN_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 admin slot.\\n */\\n function _setAdmin(address newAdmin) private {\\n require(newAdmin != address(0), \\\"ERC1967: new admin is the zero address\\\");\\n StorageSlot.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n */\\n function _changeAdmin(address newAdmin) internal {\\n emit AdminChanged(_getAdmin(), newAdmin);\\n _setAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\\n */\\n bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n /**\\n * @dev Returns the current beacon.\\n */\\n function _getBeacon() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_BEACON_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new beacon in the EIP1967 beacon slot.\\n */\\n function _setBeacon(address newBeacon) private {\\n require(Address.isContract(newBeacon), \\\"ERC1967: new beacon is not a contract\\\");\\n require(\\n Address.isContract(IBeacon(newBeacon).implementation()),\\n \\\"ERC1967: beacon implementation is not a contract\\\"\\n );\\n StorageSlot.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n }\\n\\n /**\\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n *\\n * Emits a {BeaconUpgraded} event.\\n */\\n function _upgradeBeaconToAndCall(address newBeacon, bytes memory data, bool forceCall) internal {\\n _setBeacon(newBeacon);\\n emit BeaconUpgraded(newBeacon);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x3b21ae06bf5957f73fa16754b0669c77b7abd8ba6c072d35c3281d446fdb86c2\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (proxy/Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\\n * be specified by overriding the virtual {_implementation} function.\\n *\\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\\n * different contract through the {_delegate} function.\\n *\\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\\n */\\nabstract contract Proxy {\\n /**\\n * @dev Delegates the current call to `implementation`.\\n *\\n * This function does not return to its internal call site, it will return directly to the external caller.\\n */\\n function _delegate(address implementation) internal virtual {\\n assembly {\\n // Copy msg.data. We take full control of memory in this inline assembly\\n // block because it will not return to Solidity code. We overwrite the\\n // Solidity scratch pad at memory position 0.\\n calldatacopy(0, 0, calldatasize())\\n\\n // Call the implementation.\\n // out and outsize are 0 because we don't know the size yet.\\n let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)\\n\\n // Copy the returned data.\\n returndatacopy(0, 0, returndatasize())\\n\\n switch result\\n // delegatecall returns 0 on error.\\n case 0 {\\n revert(0, returndatasize())\\n }\\n default {\\n return(0, returndatasize())\\n }\\n }\\n }\\n\\n /**\\n * @dev This is a virtual function that should be overridden so it returns the address to which the fallback function\\n * and {_fallback} should delegate.\\n */\\n function _implementation() internal view virtual returns (address);\\n\\n /**\\n * @dev Delegates the current call to the address returned by `_implementation()`.\\n *\\n * This function does not return to its internal call site, it will return directly to the external caller.\\n */\\n function _fallback() internal virtual {\\n _beforeFallback();\\n _delegate(_implementation());\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\\n * function in the contract matches the call data.\\n */\\n fallback() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data\\n * is empty.\\n */\\n receive() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`\\n * call, or as part of the Solidity `fallback` or `receive` functions.\\n *\\n * If overridden should call `super._beforeFallback()`.\\n */\\n function _beforeFallback() internal virtual {}\\n}\\n\",\"keccak256\":\"0xc130fe33f1b2132158531a87734153293f6d07bc263ff4ac90e85da9c82c0e27\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeacon {\\n /**\\n * @dev Must return an address that can be used as a delegate call target.\\n *\\n * {BeaconProxy} will check that this address is a contract.\\n */\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/StorageSlot.sol)\\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```solidity\\n * contract ERC1967 {\\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n * function _getImplementation() internal view returns (address) {\\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n * }\\n *\\n * function _setImplementation(address newImplementation) internal {\\n * require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n * }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._\\n * _Available since v4.9 for `string`, `bytes`._\\n */\\nlibrary StorageSlot {\\n struct AddressSlot {\\n address value;\\n }\\n\\n struct BooleanSlot {\\n bool value;\\n }\\n\\n struct Bytes32Slot {\\n bytes32 value;\\n }\\n\\n struct Uint256Slot {\\n uint256 value;\\n }\\n\\n struct StringSlot {\\n string value;\\n }\\n\\n struct BytesSlot {\\n bytes value;\\n }\\n\\n /**\\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n */\\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n */\\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n */\\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n */\\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` with member `value` located at `slot`.\\n */\\n function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\\n */\\n function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` with member `value` located at `slot`.\\n */\\n function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\\n */\\n function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n}\\n\",\"keccak256\":\"0xf09e68aa0dc6722a25bc46490e8d48ed864466d17313b8a0b254c36b54e49899\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165 is IERC165 {\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165).interfaceId;\\n }\\n}\\n\",\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"src/dao/IDAO.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IDAO\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for DAOs within the Aragon App DAO framework.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IDAO {\\n /// @notice The action struct to be consumed by the DAO's `execute` function resulting in an external call.\\n /// @param to The address to call.\\n /// @param value The native token value to be sent with the call.\\n /// @param data The bytes-encoded function selector and calldata for the call.\\n struct Action {\\n address to;\\n uint256 value;\\n bytes data;\\n }\\n\\n /// @notice Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\\n /// @param _where The address of the contract.\\n /// @param _who The address of a EOA or contract to give the permissions.\\n /// @param _permissionId The permission identifier.\\n /// @param _data The optional data passed to the `PermissionCondition` registered.\\n /// @return Returns true if the address has permission, false if not.\\n function hasPermission(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes memory _data\\n ) external view returns (bool);\\n\\n /// @notice Updates the DAO metadata (e.g., an IPFS hash).\\n /// @param _metadata The IPFS hash of the new metadata object.\\n function setMetadata(bytes calldata _metadata) external;\\n\\n /// @notice Emitted when the DAO metadata is updated.\\n /// @param metadata The IPFS hash of the new metadata object.\\n event MetadataSet(bytes metadata);\\n\\n /// @notice Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted.\\n /// @param _callId The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce.\\n /// @param _actions The array of actions.\\n /// @param _allowFailureMap A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @return The array of results obtained from the executed actions in `bytes`.\\n /// @return The resulting failure map containing the actions have actually failed.\\n function execute(\\n bytes32 _callId,\\n Action[] memory _actions,\\n uint256 _allowFailureMap\\n ) external returns (bytes[] memory, uint256);\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param actor The address of the caller.\\n /// @param callId The ID of the call.\\n /// @param actions The array of actions executed.\\n /// @param allowFailureMap The allow failure map encoding which actions are allowed to fail.\\n /// @param failureMap The failure map encoding which actions have failed.\\n /// @param execResults The array with the results of the executed actions.\\n /// @dev The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce.\\n event Executed(\\n address indexed actor,\\n bytes32 callId,\\n Action[] actions,\\n uint256 allowFailureMap,\\n uint256 failureMap,\\n bytes[] execResults\\n );\\n\\n /// @notice Emitted when a standard callback is registered.\\n /// @param interfaceId The ID of the interface.\\n /// @param callbackSelector The selector of the callback function.\\n /// @param magicNumber The magic number to be registered for the callback function selector.\\n event StandardCallbackRegistered(\\n bytes4 interfaceId,\\n bytes4 callbackSelector,\\n bytes4 magicNumber\\n );\\n\\n /// @notice Deposits (native) tokens to the DAO contract with a reference string.\\n /// @param _token The address of the token or address(0) in case of the native token.\\n /// @param _amount The amount of tokens to deposit.\\n /// @param _reference The reference describing the deposit reason.\\n function deposit(address _token, uint256 _amount, string calldata _reference) external payable;\\n\\n /// @notice Emitted when a token deposit has been made to the DAO.\\n /// @param sender The address of the sender.\\n /// @param token The address of the deposited token.\\n /// @param amount The amount of tokens deposited.\\n /// @param _reference The reference describing the deposit reason.\\n event Deposited(\\n address indexed sender,\\n address indexed token,\\n uint256 amount,\\n string _reference\\n );\\n\\n /// @notice Emitted when a native token deposit has been made to the DAO.\\n /// @dev This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).\\n /// @param sender The address of the sender.\\n /// @param amount The amount of native tokens deposited.\\n event NativeTokenDeposited(address sender, uint256 amount);\\n\\n /// @notice Setter for the trusted forwarder verifying the meta transaction.\\n /// @param _trustedForwarder The trusted forwarder address.\\n function setTrustedForwarder(address _trustedForwarder) external;\\n\\n /// @notice Getter for the trusted forwarder verifying the meta transaction.\\n /// @return The trusted forwarder address.\\n function getTrustedForwarder() external view returns (address);\\n\\n /// @notice Emitted when a new TrustedForwarder is set on the DAO.\\n /// @param forwarder the new forwarder address.\\n event TrustedForwarderSet(address forwarder);\\n\\n /// @notice Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\\n /// @param _hash The hash of the data to be signed.\\n /// @param _signature The signature byte array associated with `_hash`.\\n /// @return Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not.\\n function isValidSignature(bytes32 _hash, bytes memory _signature) external returns (bytes4);\\n\\n /// @notice Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\\n /// @param _interfaceId The ID of the interface.\\n /// @param _callbackSelector The selector of the callback function.\\n /// @param _magicNumber The magic number to be registered for the function signature.\\n function registerStandardCallback(\\n bytes4 _interfaceId,\\n bytes4 _callbackSelector,\\n bytes4 _magicNumber\\n ) external;\\n\\n /// @notice Removed function being left here to not corrupt the IDAO interface ID. Any call will revert.\\n /// @dev Introduced in v1.0.0. Removed in v1.4.0.\\n function setSignatureValidator(address) external;\\n}\\n\",\"keccak256\":\"0xb7f615523c26de042edce98731c658f44a1edb2464387ac1b642c4c69f57128e\",\"license\":\"AGPL-3.0-or-later\"},\"src/mocks/plugin/PluginCloneableMock.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\n/* solhint-disable one-contract-per-file */\\npragma solidity ^0.8.8;\\n\\nimport {PluginCloneable} from \\\"../../plugin/PluginCloneable.sol\\\";\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice A mock cloneable plugin to be deployed via the minimal proxy pattern.\\n/// v1.1 (Release 1, Build 1)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginCloneableMockBuild1 is PluginCloneable {\\n uint256 public state1;\\n\\n function initialize(IDAO _dao) external initializer {\\n __PluginCloneable_init(_dao);\\n state1 = 1;\\n }\\n}\\n\\n/// @notice A mock cloneable plugin to be deployed via the minimal proxy pattern.\\n/// v1.1 (Release 1, Build 2)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginCloneableMockBuild2 is PluginCloneable {\\n uint256 public state1;\\n uint256 public state2;\\n\\n function initialize(IDAO _dao) external initializer {\\n __PluginCloneable_init(_dao);\\n state1 = 1;\\n state2 = 2;\\n }\\n}\\n\\n/// @notice A mock cloneable plugin missing an initializer function.\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginCloneableMockBad is PluginCloneable {\\n uint256 public state1;\\n\\n function notAnInitializer(IDAO _dao) external {\\n __PluginCloneable_init(_dao);\\n state1 = 1;\\n }\\n}\\n\",\"keccak256\":\"0x1bb271f7b553040fad7907e97b860aa833aec9aefe7477e00ba7bdfd80d84e98\",\"license\":\"AGPL-3.0-or-later\"},\"src/mocks/plugin/PluginCloneableSetupMock.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\n/* solhint-disable one-contract-per-file */\\npragma solidity ^0.8.8;\\n\\nimport {PermissionLib} from \\\"../../permission/PermissionLib.sol\\\";\\nimport {IPluginSetup} from \\\"../../plugin/setup/IPluginSetup.sol\\\";\\nimport {PluginSetup} from \\\"../../plugin/setup/PluginSetup.sol\\\";\\nimport {ProxyLib} from \\\"../../utils/deployment/ProxyLib.sol\\\";\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\nimport {mockPermissions, mockHelpers} from \\\"./PluginSetupMockData.sol\\\";\\nimport {PluginCloneableMockBuild1, PluginCloneableMockBuild2} from \\\"./PluginCloneableMock.sol\\\";\\n\\n/// @notice A mock plugin setup of a cloneable plugin to be deployed via the minimal proxy pattern.\\n/// v1.1 (Release 1, Build 1)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginCloneableSetupMockBuild1 is PluginSetup {\\n using ProxyLib for address;\\n\\n uint16 internal constant THIS_BUILD = 1;\\n\\n constructor() PluginSetup(address(new PluginCloneableMockBuild1())) {}\\n\\n /// @inheritdoc IPluginSetup\\n function prepareInstallation(\\n address _dao,\\n bytes memory\\n ) external returns (address plugin, PreparedSetupData memory preparedSetupData) {\\n bytes memory initData = abi.encodeCall(PluginCloneableMockBuild1.initialize, (IDAO(_dao)));\\n plugin = implementation().deployMinimalProxy(initData);\\n preparedSetupData.helpers = mockHelpers(THIS_BUILD);\\n preparedSetupData.permissions = mockPermissions(\\n 0,\\n THIS_BUILD,\\n PermissionLib.Operation.Grant\\n );\\n }\\n\\n /// @inheritdoc IPluginSetup\\n function prepareUninstallation(\\n address _dao,\\n SetupPayload calldata _payload\\n ) external pure returns (PermissionLib.MultiTargetPermission[] memory permissions) {\\n (_dao, _payload);\\n permissions = mockPermissions(0, THIS_BUILD, PermissionLib.Operation.Revoke);\\n }\\n}\\n\\n/// @notice A mock plugin setup of a cloneable plugin to be deployed via the minimal proxy pattern.\\n/// v1.2 (Release 1, Build 2)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginCloneableSetupMockBuild2 is PluginSetup {\\n using ProxyLib for address;\\n\\n uint16 internal constant THIS_BUILD = 2;\\n\\n constructor() PluginSetup(address(new PluginCloneableMockBuild2())) {}\\n\\n /// @inheritdoc IPluginSetup\\n function prepareInstallation(\\n address _dao,\\n bytes memory\\n ) external returns (address plugin, PreparedSetupData memory preparedSetupData) {\\n bytes memory initData = abi.encodeCall(PluginCloneableMockBuild2.initialize, (IDAO(_dao)));\\n plugin = implementation().deployMinimalProxy(initData);\\n preparedSetupData.helpers = mockHelpers(THIS_BUILD);\\n preparedSetupData.permissions = mockPermissions(\\n 0,\\n THIS_BUILD,\\n PermissionLib.Operation.Grant\\n );\\n }\\n\\n /// @inheritdoc IPluginSetup\\n function prepareUninstallation(\\n address _dao,\\n SetupPayload calldata _payload\\n ) external pure returns (PermissionLib.MultiTargetPermission[] memory permissions) {\\n (_dao, _payload);\\n permissions = mockPermissions(0, THIS_BUILD, PermissionLib.Operation.Revoke);\\n }\\n}\\n\",\"keccak256\":\"0xfac0ce75e9d665bc9e2900c5cfa3f2667e0ea73573c4f46147453c6582eac1de\",\"license\":\"AGPL-3.0-or-later\"},\"src/mocks/plugin/PluginSetupMockData.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {PermissionLib} from \\\"../../permission/PermissionLib.sol\\\";\\n\\naddress constant NO_CONDITION = address(0);\\n\\nerror ConflictingValues();\\n\\n/// @notice Creates a mock `MultiTargetPermission` array by converting a range of `uint160` values into `address` values.\\n/// @param rangeStart The start of the range.\\n/// @param rangeEnd The end of the range (that is not included).\\n/// @param op The permission operation type.\\n/// @return permissions The mock array of permissions.\\n/// @dev DO NOT USE IN PRODUCTION!\\nfunction mockPermissions(\\n uint160 rangeStart,\\n uint160 rangeEnd,\\n PermissionLib.Operation op\\n) pure returns (PermissionLib.MultiTargetPermission[] memory permissions) {\\n if (rangeStart > rangeEnd) revert ConflictingValues();\\n\\n permissions = new PermissionLib.MultiTargetPermission[](rangeEnd - rangeStart);\\n\\n for (uint160 i = rangeStart; i < rangeEnd; i++) {\\n permissions[i - rangeStart] = PermissionLib.MultiTargetPermission({\\n operation: op,\\n where: address(i),\\n who: address(i),\\n condition: PermissionLib.NO_CONDITION,\\n permissionId: keccak256(\\\"MOCK_PERMISSION\\\")\\n });\\n }\\n}\\n\\n/// @notice Creates a mock array of helper addresses of specified length by converting `uint160` values starting from 0 into `address` values.\\n/// @param len The length of the helper array.\\n/// @return helpers The mock array of helper addresses.\\n/// @dev DO NOT USE IN PRODUCTION!\\nfunction mockHelpers(uint160 len) pure returns (address[] memory helpers) {\\n helpers = new address[](len);\\n\\n for (uint160 i = 0; i < len; i++) {\\n helpers[i] = address(i);\\n }\\n}\\n\",\"keccak256\":\"0x529d1b7ea4c348fe18edf81a044792ca8aa1f6ad9a7d2edfd35e38bf8372abf9\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/PermissionLib.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title PermissionLib\\n/// @author Aragon X - 2021-2023\\n/// @notice A library containing objects for permission processing.\\n/// @custom:security-contact sirt@aragon.org\\nlibrary PermissionLib {\\n /// @notice A constant expressing that no condition is applied to a permission.\\n address public constant NO_CONDITION = address(0);\\n\\n /// @notice The types of permission operations available in the `PermissionManager`.\\n /// @param Grant The grant operation setting a permission without a condition.\\n /// @param Revoke The revoke operation removing a permission (that was granted with or without a condition).\\n /// @param GrantWithCondition The grant operation setting a permission with a condition.\\n enum Operation {\\n Grant,\\n Revoke,\\n GrantWithCondition\\n }\\n\\n /// @notice A struct containing the information for a permission to be applied on a single target contract without a condition.\\n /// @param operation The permission operation type.\\n /// @param who The address (EOA or contract) receiving the permission.\\n /// @param permissionId The permission identifier.\\n struct SingleTargetPermission {\\n Operation operation;\\n address who;\\n bytes32 permissionId;\\n }\\n\\n /// @notice A struct containing the information for a permission to be applied on multiple target contracts, optionally, with a condition.\\n /// @param operation The permission operation type.\\n /// @param where The address of the target contract for which `who` receives permission.\\n /// @param who The address (EOA or contract) receiving the permission.\\n /// @param condition The `PermissionCondition` that will be asked for authorization on calls connected to the specified permission identifier.\\n /// @param permissionId The permission identifier.\\n struct MultiTargetPermission {\\n Operation operation;\\n address where;\\n address who;\\n address condition;\\n bytes32 permissionId;\\n }\\n}\\n\",\"keccak256\":\"0x470faf3c4891ebc6420ef6cc09f6098917568ccc79268c90954d1478199b6097\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/DaoAuthorizableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ContextUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\\\";\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\nimport {_auth} from \\\"./auth.sol\\\";\\n\\n/// @title DaoAuthorizableUpgradeable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract contract providing a meta-transaction compatible modifier for upgradeable or cloneable contracts to authorize function calls through an associated DAO.\\n/// @dev Make sure to call `__DaoAuthorizableUpgradeable_init` during initialization of the inheriting contract.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract DaoAuthorizableUpgradeable is ContextUpgradeable {\\n /// @notice The associated DAO managing the permissions of inheriting contracts.\\n IDAO private dao_;\\n\\n /// @notice Initializes the contract by setting the associated DAO.\\n /// @param _dao The associated DAO address.\\n // solhint-disable-next-line func-name-mixedcase\\n function __DaoAuthorizableUpgradeable_init(IDAO _dao) internal onlyInitializing {\\n dao_ = _dao;\\n }\\n\\n /// @notice Returns the DAO contract.\\n /// @return The DAO contract.\\n function dao() public view returns (IDAO) {\\n return dao_;\\n }\\n\\n /// @notice A modifier to make functions on inheriting contracts authorized. Permissions to call the function are checked through the associated DAO's permission manager.\\n /// @param _permissionId The permission identifier required to call the method this modifier is applied to.\\n modifier auth(bytes32 _permissionId) {\\n _auth(dao_, address(this), _msgSender(), _permissionId, _msgData());\\n _;\\n }\\n\\n /// @notice This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain (see [OpenZeppelin's guide about storage gaps](https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps)).\\n uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0x7fac6b01b037ba1cb9d6a22d3f43b0785037dcf496ffb672434d9bf7227d2585\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/auth.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice Thrown if a call is unauthorized in the associated DAO.\\n/// @param dao The associated DAO.\\n/// @param where The context in which the authorization reverted.\\n/// @param who The address (EOA or contract) missing the permission.\\n/// @param permissionId The permission identifier.\\nerror DaoUnauthorized(address dao, address where, address who, bytes32 permissionId);\\n\\n/// @notice A free function checking if a caller is granted permissions on a target contract via a permission identifier that redirects the approval to a `PermissionCondition` if this was specified in the setup.\\n/// @param _where The address of the target contract for which `who` receives permission.\\n/// @param _who The address (EOA or contract) owning the permission.\\n/// @param _permissionId The permission identifier.\\n/// @param _data The optional data passed to the `PermissionCondition` registered.\\n/// @custom:security-contact sirt@aragon.org\\nfunction _auth(\\n IDAO _dao,\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes calldata _data\\n) view {\\n if (!_dao.hasPermission(_where, _who, _permissionId, _data))\\n revert DaoUnauthorized({\\n dao: address(_dao),\\n where: _where,\\n who: _who,\\n permissionId: _permissionId\\n });\\n}\\n\",\"keccak256\":\"0x878764b4f87fe0651fb3798fb9cb87c952f8c6caf6ae79c7f09de84df6c00298\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/IPlugin.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IPlugin\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the traits of a plugin.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IPlugin {\\n enum PluginType {\\n UUPS,\\n Cloneable,\\n Constructable\\n }\\n\\n /// @notice Returns the plugin's type\\n function pluginType() external view returns (PluginType);\\n}\\n\",\"keccak256\":\"0xc57cd0d10b6380ab7f54c713a509e88fd8f4ad9288313a0e8e12b8887817ddfe\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/PluginCloneable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ERC165Upgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\\\";\\n\\nimport {IProtocolVersion} from \\\"../utils/versioning/IProtocolVersion.sol\\\";\\nimport {ProtocolVersion} from \\\"../utils/versioning/ProtocolVersion.sol\\\";\\nimport {DaoAuthorizableUpgradeable} from \\\"../permission/auth/DaoAuthorizableUpgradeable.sol\\\";\\nimport {IDAO} from \\\"../dao/IDAO.sol\\\";\\nimport {IPlugin} from \\\"./IPlugin.sol\\\";\\n\\n/// @title PluginCloneable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract, non-upgradeable contract to inherit from when creating a plugin being deployed via the minimal clones pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)).\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract PluginCloneable is\\n IPlugin,\\n ERC165Upgradeable,\\n DaoAuthorizableUpgradeable,\\n ProtocolVersion\\n{\\n /// @notice Disables the initializers on the implementation contract to prevent it from being left uninitialized.\\n /// @custom:oz-upgrades-unsafe-allow constructor\\n constructor() {\\n _disableInitializers();\\n }\\n\\n /// @notice Initializes the plugin by storing the associated DAO.\\n /// @param _dao The DAO contract.\\n // solhint-disable-next-line func-name-mixedcase\\n function __PluginCloneable_init(IDAO _dao) internal virtual onlyInitializing {\\n __DaoAuthorizableUpgradeable_init(_dao);\\n }\\n\\n /// @inheritdoc IPlugin\\n function pluginType() public pure override returns (PluginType) {\\n return PluginType.Cloneable;\\n }\\n\\n /// @notice Checks if this or the parent contract supports an interface by its ID.\\n /// @param _interfaceId The ID of the interface.\\n /// @return Returns `true` if the interface is supported.\\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\\n return\\n _interfaceId == type(IPlugin).interfaceId ||\\n _interfaceId == type(IProtocolVersion).interfaceId ||\\n super.supportsInterface(_interfaceId);\\n }\\n}\\n\",\"keccak256\":\"0x68e260b9b370d68252f0c707461d5e4c2188a7bfed42ed9192657b36330a1f7a\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/setup/IPluginSetup.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {PermissionLib} from \\\"../../permission/PermissionLib.sol\\\";\\n\\n// solhint-disable-next-line no-unused-import\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @title IPluginSetup\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for a plugin setup contract to be consumed by the `PluginSetupProcessor` for plugin installations, updates, and uninstallations.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IPluginSetup {\\n /// @notice The data associated with a prepared setup.\\n /// @param helpers The address array of helpers (contracts or EOAs) associated with this plugin version after the installation or update.\\n /// @param permissions The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the installing or updating DAO.\\n struct PreparedSetupData {\\n address[] helpers;\\n PermissionLib.MultiTargetPermission[] permissions;\\n }\\n\\n /// @notice The payload for plugin updates and uninstallations containing the existing contracts as well as optional data to be consumed by the plugin setup.\\n /// @param plugin The address of the `Plugin`.\\n /// @param currentHelpers The address array of all current helpers (contracts or EOAs) associated with the plugin to update from.\\n /// @param data The bytes-encoded data containing the input parameters for the preparation of update/uninstall as specified in the corresponding ABI on the version's metadata.\\n struct SetupPayload {\\n address plugin;\\n address[] currentHelpers;\\n bytes data;\\n }\\n\\n /// @notice Prepares the installation of a plugin.\\n /// @param _dao The address of the installing DAO.\\n /// @param _data The bytes-encoded data containing the input parameters for the installation as specified in the plugin's build metadata JSON file.\\n /// @return plugin The address of the `Plugin` contract being prepared for installation.\\n /// @return preparedSetupData The deployed plugin's relevant data which consists of helpers and permissions.\\n function prepareInstallation(\\n address _dao,\\n bytes calldata _data\\n ) external returns (address plugin, PreparedSetupData memory preparedSetupData);\\n\\n /// @notice Prepares the update of a plugin.\\n /// @param _dao The address of the updating DAO.\\n /// @param _fromBuild The build number of the plugin to update from.\\n /// @param _payload The relevant data necessary for the `prepareUpdate`. See above.\\n /// @return initData The initialization data to be passed to upgradeable contracts when the update is applied in the `PluginSetupProcessor`.\\n /// @return preparedSetupData The deployed plugin's relevant data which consists of helpers and permissions.\\n function prepareUpdate(\\n address _dao,\\n uint16 _fromBuild,\\n SetupPayload calldata _payload\\n ) external returns (bytes memory initData, PreparedSetupData memory preparedSetupData);\\n\\n /// @notice Prepares the uninstallation of a plugin.\\n /// @param _dao The address of the uninstalling DAO.\\n /// @param _payload The relevant data necessary for the `prepareUninstallation`. See above.\\n /// @return permissions The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the uninstalling DAO.\\n function prepareUninstallation(\\n address _dao,\\n SetupPayload calldata _payload\\n ) external returns (PermissionLib.MultiTargetPermission[] memory permissions);\\n\\n /// @notice Returns the plugin implementation address.\\n /// @return The address of the plugin implementation contract.\\n /// @dev The implementation can be instantiated via the `new` keyword, cloned via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)), or proxied via the UUPS proxy pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0x21c99995208039ac6ace219b6f273243811dc2aa66399e8e499e43ec30b82fa9\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/setup/PluginSetup.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ERC165} from \\\"@openzeppelin/contracts/utils/introspection/ERC165.sol\\\";\\n\\nimport {IProtocolVersion} from \\\"../../utils/versioning/IProtocolVersion.sol\\\";\\nimport {ProtocolVersion} from \\\"../../utils/versioning/ProtocolVersion.sol\\\";\\nimport {IPluginSetup} from \\\"./IPluginSetup.sol\\\";\\n\\n/// @title PluginSetup\\n/// @author Aragon X - 2022-2024\\n/// @notice An abstract contract to inherit from to implement the plugin setup for non-upgradeable plugins, i.e,\\n/// - `Plugin` being deployed via the `new` keyword\\n/// - `PluginCloneable` being deployed via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)).\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract PluginSetup is ERC165, IPluginSetup, ProtocolVersion {\\n /// @notice The address of the plugin implementation contract for initial block explorer verification and, in the case of `PluginClonable` implementations, to create [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167) clones from.\\n address internal immutable IMPLEMENTATION;\\n\\n /// @notice Thrown when attempting to prepare an update on a non-upgradeable plugin.\\n error NonUpgradeablePlugin();\\n\\n /// @notice The contract constructor, that setting the plugin implementation contract.\\n /// @param _implementation The address of the plugin implementation contract.\\n constructor(address _implementation) {\\n IMPLEMENTATION = _implementation;\\n }\\n\\n /// @inheritdoc IPluginSetup\\n /// @dev Since the underlying plugin is non-upgradeable, this non-virtual function must always revert.\\n function prepareUpdate(\\n address _dao,\\n uint16 _fromBuild,\\n SetupPayload calldata _payload\\n ) external pure returns (bytes memory, PreparedSetupData memory) {\\n (_dao, _fromBuild, _payload);\\n revert NonUpgradeablePlugin();\\n }\\n\\n /// @notice Checks if this or the parent contract supports an interface by its ID.\\n /// @param _interfaceId The ID of the interface.\\n /// @return Returns `true` if the interface is supported.\\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\\n return\\n _interfaceId == type(IPluginSetup).interfaceId ||\\n _interfaceId == type(IProtocolVersion).interfaceId ||\\n super.supportsInterface(_interfaceId);\\n }\\n\\n /// @inheritdoc IPluginSetup\\n function implementation() public view returns (address) {\\n return IMPLEMENTATION;\\n }\\n}\\n\",\"keccak256\":\"0x93044f8080758c5cf8d621e3614b8150f55572a1770880106a49dfa53784a9d2\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/deployment/ProxyLib.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ERC1967Proxy} from \\\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol\\\";\\nimport {Clones} from \\\"@openzeppelin/contracts/proxy/Clones.sol\\\";\\nimport {Address} from \\\"@openzeppelin/contracts/utils/Address.sol\\\";\\n\\n/// @title ProxyLib\\n/// @author Aragon X - 2024\\n/// @notice A library containing methods for the deployment of proxies via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)) and minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)).\\n/// @custom:security-contact sirt@aragon.org\\nlibrary ProxyLib {\\n using Address for address;\\n using Clones for address;\\n\\n /// @notice Creates an [ERC-1967](https://eips.ethereum.org/EIPS/eip-1967) UUPS proxy contract pointing to a logic contract and allows to immediately initialize it.\\n /// @param _logic The logic contract the proxy is pointing to.\\n /// @param _initCalldata The initialization data for this contract.\\n /// @return uupsProxy The address of the UUPS proxy contract created.\\n /// @dev If `_initCalldata` is non-empty, it is used in a delegate call to the `_logic` contract. This will typically be an encoded function call initializing the storage of the proxy (see [OpenZeppelin ERC1967Proxy-constructor](https://docs.openzeppelin.com/contracts/4.x/api/proxy#ERC1967Proxy-constructor-address-bytes-)).\\n function deployUUPSProxy(\\n address _logic,\\n bytes memory _initCalldata\\n ) internal returns (address uupsProxy) {\\n uupsProxy = address(new ERC1967Proxy({_logic: _logic, _data: _initCalldata}));\\n }\\n\\n /// @notice Creates an [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167) minimal proxy contract, also known as clones, pointing to a logic contract and allows to immediately initialize it.\\n /// @param _logic The logic contract the proxy is pointing to.\\n /// @param _initCalldata The initialization data for this contract.\\n /// @return minimalProxy The address of the minimal proxy contract created.\\n /// @dev If `_initCalldata` is non-empty, it is used in a call to the clone contract. This will typically be an encoded function call initializing the storage of the contract.\\n function deployMinimalProxy(\\n address _logic,\\n bytes memory _initCalldata\\n ) internal returns (address minimalProxy) {\\n minimalProxy = _logic.clone();\\n if (_initCalldata.length > 0) {\\n minimalProxy.functionCall({data: _initCalldata});\\n }\\n }\\n}\\n\",\"keccak256\":\"0xef0d1790dfa026381c021daa2ec7267357497f58cd4a2fa5c64e72e0dea95acc\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/IProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IProtocolVersion\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the semantic Aragon OSx protocol version number.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IProtocolVersion {\\n /// @notice Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\\n /// @return _version Returns the semantic Aragon OSx protocol version number.\\n /// @dev This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\\n function protocolVersion() external view returns (uint8[3] memory _version);\\n}\\n\",\"keccak256\":\"0x00a4da654d21dc1bdadbdc8bd54bb86c378c56f85e461ccc31303628ea621361\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/ProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IProtocolVersion} from \\\"./IProtocolVersion.sol\\\";\\n\\n/// @title ProtocolVersion\\n/// @author Aragon X - 2023\\n/// @notice An abstract, stateless, non-upgradeable contract providing the current Aragon OSx protocol version number.\\n/// @dev Do not add any new variables to this contract that would shift down storage in the inheritance chain.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract ProtocolVersion is IProtocolVersion {\\n // IMPORTANT: Do not add any storage variable, see the above notice.\\n\\n /// @inheritdoc IProtocolVersion\\n function protocolVersion() public pure returns (uint8[3] memory) {\\n return [1, 4, 0];\\n }\\n}\\n\",\"keccak256\":\"0x3975c937be935f687c6b6b8f379071232681e98cf04b175d72781b819ea52bdb\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"errors":{"NonUpgradeablePlugin()":[{"notice":"Thrown when attempting to prepare an update on a non-upgradeable plugin."}]},"kind":"user","methods":{"implementation()":{"notice":"Returns the plugin implementation address."},"prepareInstallation(address,bytes)":{"notice":"Prepares the installation of a plugin."},"prepareUninstallation(address,(address,address[],bytes))":{"notice":"Prepares the uninstallation of a plugin."},"prepareUpdate(address,uint16,(address,address[],bytes))":{"notice":"Prepares the update of a plugin."},"protocolVersion()":{"notice":"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with."},"supportsInterface(bytes4)":{"notice":"Checks if this or the parent contract supports an interface by its ID."}},"notice":"A mock plugin setup of a cloneable plugin to be deployed via the minimal proxy pattern. v1.2 (Release 1, Build 2)","version":1}}},"src/mocks/plugin/PluginMock.sol":{"PluginMockBuild1":{"abi":[{"inputs":[{"internalType":"contract IDAO","name":"_dao","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"dao","outputs":[{"internalType":"contract IDAO","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pluginType","outputs":[{"internalType":"enum IPlugin.PluginType","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"protocolVersion","outputs":[{"internalType":"uint8[3]","name":"","type":"uint8[3]"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"state1","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"DO NOT USE IN PRODUCTION!","kind":"dev","methods":{"dao()":{"returns":{"_0":"The DAO contract."}},"protocolVersion()":{"details":"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.","returns":{"_0":"Returns the semantic Aragon OSx protocol version number."}},"supportsInterface(bytes4)":{"params":{"_interfaceId":"The ID of the interface."},"returns":{"_0":"Returns `true` if the interface is supported."}}},"version":1},"evm":{"bytecode":{"functionDebugData":{"@_11522":{"entryPoint":null,"id":11522,"parameterSlots":1,"returnSlots":0},"@_13065":{"entryPoint":null,"id":13065,"parameterSlots":1,"returnSlots":0},"@_13372":{"entryPoint":null,"id":13372,"parameterSlots":1,"returnSlots":0},"abi_decode_tuple_t_contract$_IDAO_$10865_fromMemory":{"entryPoint":69,"id":null,"parameterSlots":2,"returnSlots":1}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:320:92","statements":[{"nodeType":"YulBlock","src":"6:3:92","statements":[]},{"body":{"nodeType":"YulBlock","src":"109:209:92","statements":[{"body":{"nodeType":"YulBlock","src":"155:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"164:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"167:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"157:6:92"},"nodeType":"YulFunctionCall","src":"157:12:92"},"nodeType":"YulExpressionStatement","src":"157:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"130:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"139:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"126:3:92"},"nodeType":"YulFunctionCall","src":"126:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"151:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"122:3:92"},"nodeType":"YulFunctionCall","src":"122:32:92"},"nodeType":"YulIf","src":"119:52:92"},{"nodeType":"YulVariableDeclaration","src":"180:29:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"199:9:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"193:5:92"},"nodeType":"YulFunctionCall","src":"193:16:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"184:5:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"272:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"281:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"284:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"274:6:92"},"nodeType":"YulFunctionCall","src":"274:12:92"},"nodeType":"YulExpressionStatement","src":"274:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"231:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"242:5:92"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"257:3:92","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"262:1:92","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"253:3:92"},"nodeType":"YulFunctionCall","src":"253:11:92"},{"kind":"number","nodeType":"YulLiteral","src":"266:1:92","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"249:3:92"},"nodeType":"YulFunctionCall","src":"249:19:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"238:3:92"},"nodeType":"YulFunctionCall","src":"238:31:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"228:2:92"},"nodeType":"YulFunctionCall","src":"228:42:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"221:6:92"},"nodeType":"YulFunctionCall","src":"221:50:92"},"nodeType":"YulIf","src":"218:70:92"},{"nodeType":"YulAssignment","src":"297:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"307:5:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"297:6:92"}]}]},"name":"abi_decode_tuple_t_contract$_IDAO_$10865_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"75:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"86:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"98:6:92","type":""}],"src":"14:304:92"}]},"contents":"{\n { }\n function abi_decode_tuple_t_contract$_IDAO_$10865_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := mload(headStart)\n if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n value0 := value\n }\n}","id":92,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60a060405234801561001057600080fd5b506040516102d53803806102d583398101604081905261002f91610045565b6001600160a01b03166080526001600055610075565b60006020828403121561005757600080fd5b81516001600160a01b038116811461006e57600080fd5b9392505050565b60805161024661008f600039600060c301526102466000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80634162169f116100505780634162169f146100a957806341de6830146100ed5780636accab8c146100fc57600080fd5b806301ffc9a71461006c5780632ae9c60014610094575b600080fd5b61007f61007a3660046101ac565b610113565b60405190151581526020015b60405180910390f35b61009c610164565b60405161008b91906101dd565b60405173ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016815260200161008b565b600260405161008b9190610211565b61010560005481565b60405190815260200161008b565b60006001600160e01b0319821663041de68360e41b148061014357506001600160e01b03198216621574e360e91b145b8061015e57506301ffc9a760e01b6001600160e01b03198316145b92915050565b61016c61018e565b5060408051606081018252600181526004602082015260009181019190915290565b60405180606001604052806003906020820280368337509192915050565b6000602082840312156101be57600080fd5b81356001600160e01b0319811681146101d657600080fd5b9392505050565b60608101818360005b600381101561020857815160ff168352602092830192909101906001016101e6565b50505092915050565b602081016003831061023357634e487b7160e01b600052602160045260246000fd5b9190529056fea164736f6c6343000811000a","opcodes":"PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x2D5 CODESIZE SUB DUP1 PUSH2 0x2D5 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0x45 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x80 MSTORE PUSH1 0x1 PUSH1 0x0 SSTORE PUSH2 0x75 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x57 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x6E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH2 0x246 PUSH2 0x8F PUSH1 0x0 CODECOPY PUSH1 0x0 PUSH1 0xC3 ADD MSTORE PUSH2 0x246 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x67 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x4162169F GT PUSH2 0x50 JUMPI DUP1 PUSH4 0x4162169F EQ PUSH2 0xA9 JUMPI DUP1 PUSH4 0x41DE6830 EQ PUSH2 0xED JUMPI DUP1 PUSH4 0x6ACCAB8C EQ PUSH2 0xFC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x6C JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0x94 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7F PUSH2 0x7A CALLDATASIZE PUSH1 0x4 PUSH2 0x1AC JUMP JUMPDEST PUSH2 0x113 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x9C PUSH2 0x164 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x8B SWAP2 SWAP1 PUSH2 0x1DD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x8B JUMP JUMPDEST PUSH1 0x2 PUSH1 0x40 MLOAD PUSH2 0x8B SWAP2 SWAP1 PUSH2 0x211 JUMP JUMPDEST PUSH2 0x105 PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x8B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x41DE683 PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x143 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x15E JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x16C PUSH2 0x18E JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x1D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0x208 JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x1E6 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH1 0x3 DUP4 LT PUSH2 0x233 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 SWAP1 MSTORE SWAP1 JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"291:135:50:-:0;;;361:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;844:10:66;;;416:1:50::1;407:6;:10:::0;291:135;;14:304:92;98:6;151:2;139:9;130:7;126:23;122:32;119:52;;;167:1;164;157:12;119:52;193:16;;-1:-1:-1;;;;;238:31:92;;228:42;;218:70;;284:1;281;274:12;218:70;307:5;14:304;-1:-1:-1;;;14:304:92:o;:::-;291:135:50;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@dao_13075":{"entryPoint":null,"id":13075,"parameterSlots":0,"returnSlots":1},"@pluginType_13384":{"entryPoint":null,"id":13384,"parameterSlots":0,"returnSlots":1},"@protocolVersion_14765":{"entryPoint":356,"id":14765,"parameterSlots":0,"returnSlots":1},"@state1_11508":{"entryPoint":null,"id":11508,"parameterSlots":0,"returnSlots":0},"@supportsInterface_13413":{"entryPoint":275,"id":13413,"parameterSlots":1,"returnSlots":1},"@supportsInterface_9730":{"entryPoint":null,"id":9730,"parameterSlots":1,"returnSlots":1},"abi_decode_tuple_t_bytes4":{"entryPoint":428,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed":{"entryPoint":477,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_contract$_IDAO_$10865__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_enum$_PluginType_$13330__to_t_uint8__fromStack_reversed":{"entryPoint":529,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:1776:92","statements":[{"nodeType":"YulBlock","src":"6:3:92","statements":[]},{"body":{"nodeType":"YulBlock","src":"83:217:92","statements":[{"body":{"nodeType":"YulBlock","src":"129:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"138:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"141:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"131:6:92"},"nodeType":"YulFunctionCall","src":"131:12:92"},"nodeType":"YulExpressionStatement","src":"131:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"104:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"113:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"100:3:92"},"nodeType":"YulFunctionCall","src":"100:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"125:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"96:3:92"},"nodeType":"YulFunctionCall","src":"96:32:92"},"nodeType":"YulIf","src":"93:52:92"},{"nodeType":"YulVariableDeclaration","src":"154:36:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"180:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"167:12:92"},"nodeType":"YulFunctionCall","src":"167:23:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"158:5:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"254:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"263:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"266:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"256:6:92"},"nodeType":"YulFunctionCall","src":"256:12:92"},"nodeType":"YulExpressionStatement","src":"256:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"212:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"223:5:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"234:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"239:10:92","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"230:3:92"},"nodeType":"YulFunctionCall","src":"230:20:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"219:3:92"},"nodeType":"YulFunctionCall","src":"219:32:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"209:2:92"},"nodeType":"YulFunctionCall","src":"209:43:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"202:6:92"},"nodeType":"YulFunctionCall","src":"202:51:92"},"nodeType":"YulIf","src":"199:71:92"},{"nodeType":"YulAssignment","src":"279:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"289:5:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"279:6:92"}]}]},"name":"abi_decode_tuple_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"49:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"60:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"72:6:92","type":""}],"src":"14:286:92"},{"body":{"nodeType":"YulBlock","src":"400:92:92","statements":[{"nodeType":"YulAssignment","src":"410:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"422:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"433:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"418:3:92"},"nodeType":"YulFunctionCall","src":"418:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"410:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"452:9:92"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"477:6:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"470:6:92"},"nodeType":"YulFunctionCall","src":"470:14:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"463:6:92"},"nodeType":"YulFunctionCall","src":"463:22:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"445:6:92"},"nodeType":"YulFunctionCall","src":"445:41:92"},"nodeType":"YulExpressionStatement","src":"445:41:92"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"369:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"380:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"391:4:92","type":""}],"src":"305:187:92"},{"body":{"nodeType":"YulBlock","src":"640:358:92","statements":[{"nodeType":"YulAssignment","src":"650:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"662:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"673:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"658:3:92"},"nodeType":"YulFunctionCall","src":"658:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"650:4:92"}]},{"nodeType":"YulVariableDeclaration","src":"685:20:92","value":{"name":"headStart","nodeType":"YulIdentifier","src":"696:9:92"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"689:3:92","type":""}]},{"nodeType":"YulAssignment","src":"714:16:92","value":{"name":"headStart","nodeType":"YulIdentifier","src":"721:9:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"714:3:92"}]},{"nodeType":"YulVariableDeclaration","src":"739:20:92","value":{"name":"value0","nodeType":"YulIdentifier","src":"753:6:92"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"743:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"768:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"777:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"772:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"834:158:92","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"855:3:92"},{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"870:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"864:5:92"},"nodeType":"YulFunctionCall","src":"864:13:92"},{"kind":"number","nodeType":"YulLiteral","src":"879:4:92","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"860:3:92"},"nodeType":"YulFunctionCall","src":"860:24:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"848:6:92"},"nodeType":"YulFunctionCall","src":"848:37:92"},"nodeType":"YulExpressionStatement","src":"848:37:92"},{"nodeType":"YulVariableDeclaration","src":"898:14:92","value":{"kind":"number","nodeType":"YulLiteral","src":"908:4:92","type":"","value":"0x20"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"902:2:92","type":""}]},{"nodeType":"YulAssignment","src":"925:19:92","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"936:3:92"},{"name":"_1","nodeType":"YulIdentifier","src":"941:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"932:3:92"},"nodeType":"YulFunctionCall","src":"932:12:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"925:3:92"}]},{"nodeType":"YulAssignment","src":"957:25:92","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"971:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"979:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"967:3:92"},"nodeType":"YulFunctionCall","src":"967:15:92"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"957:6:92"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"798:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"801:4:92","type":"","value":"0x03"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"795:2:92"},"nodeType":"YulFunctionCall","src":"795:11:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"807:18:92","statements":[{"nodeType":"YulAssignment","src":"809:14:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"818:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"821:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"814:3:92"},"nodeType":"YulFunctionCall","src":"814:9:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"809:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"791:3:92","statements":[]},"src":"787:205:92"}]},"name":"abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"609:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"620:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"631:4:92","type":""}],"src":"497:501:92"},{"body":{"nodeType":"YulBlock","src":"1118:125:92","statements":[{"nodeType":"YulAssignment","src":"1128:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1140:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1151:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1136:3:92"},"nodeType":"YulFunctionCall","src":"1136:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1128:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1170:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1185:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"1193:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1181:3:92"},"nodeType":"YulFunctionCall","src":"1181:55:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1163:6:92"},"nodeType":"YulFunctionCall","src":"1163:74:92"},"nodeType":"YulExpressionStatement","src":"1163:74:92"}]},"name":"abi_encode_tuple_t_contract$_IDAO_$10865__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1087:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1098:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1109:4:92","type":""}],"src":"1003:240:92"},{"body":{"nodeType":"YulBlock","src":"1363:229:92","statements":[{"nodeType":"YulAssignment","src":"1373:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1385:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1396:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1381:3:92"},"nodeType":"YulFunctionCall","src":"1381:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1373:4:92"}]},{"body":{"nodeType":"YulBlock","src":"1441:111:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1462:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1469:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"1474:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1465:3:92"},"nodeType":"YulFunctionCall","src":"1465:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1455:6:92"},"nodeType":"YulFunctionCall","src":"1455:31:92"},"nodeType":"YulExpressionStatement","src":"1455:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1506:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"1509:4:92","type":"","value":"0x21"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1499:6:92"},"nodeType":"YulFunctionCall","src":"1499:15:92"},"nodeType":"YulExpressionStatement","src":"1499:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1534:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1537:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1527:6:92"},"nodeType":"YulFunctionCall","src":"1527:15:92"},"nodeType":"YulExpressionStatement","src":"1527:15:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1421:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"1429:1:92","type":"","value":"3"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"1418:2:92"},"nodeType":"YulFunctionCall","src":"1418:13:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1411:6:92"},"nodeType":"YulFunctionCall","src":"1411:21:92"},"nodeType":"YulIf","src":"1408:144:92"},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1568:9:92"},{"name":"value0","nodeType":"YulIdentifier","src":"1579:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1561:6:92"},"nodeType":"YulFunctionCall","src":"1561:25:92"},"nodeType":"YulExpressionStatement","src":"1561:25:92"}]},"name":"abi_encode_tuple_t_enum$_PluginType_$13330__to_t_uint8__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1332:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1343:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1354:4:92","type":""}],"src":"1248:344:92"},{"body":{"nodeType":"YulBlock","src":"1698:76:92","statements":[{"nodeType":"YulAssignment","src":"1708:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1720:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1731:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1716:3:92"},"nodeType":"YulFunctionCall","src":"1716:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1708:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1750:9:92"},{"name":"value0","nodeType":"YulIdentifier","src":"1761:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1743:6:92"},"nodeType":"YulFunctionCall","src":"1743:25:92"},"nodeType":"YulExpressionStatement","src":"1743:25:92"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1667:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1678:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1689:4:92","type":""}],"src":"1597:177:92"}]},"contents":"{\n { }\n function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n if iszero(eq(value, and(value, shl(224, 0xffffffff)))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 96)\n let pos := headStart\n pos := headStart\n let srcPtr := value0\n let i := 0\n for { } lt(i, 0x03) { i := add(i, 1) }\n {\n mstore(pos, and(mload(srcPtr), 0xff))\n let _1 := 0x20\n pos := add(pos, _1)\n srcPtr := add(srcPtr, _1)\n }\n }\n function abi_encode_tuple_t_contract$_IDAO_$10865__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_encode_tuple_t_enum$_PluginType_$13330__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n if iszero(lt(value0, 3))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x21)\n revert(0, 0x24)\n }\n mstore(headStart, value0)\n }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n}","id":92,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{"13053":[{"length":32,"start":195}]},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100675760003560e01c80634162169f116100505780634162169f146100a957806341de6830146100ed5780636accab8c146100fc57600080fd5b806301ffc9a71461006c5780632ae9c60014610094575b600080fd5b61007f61007a3660046101ac565b610113565b60405190151581526020015b60405180910390f35b61009c610164565b60405161008b91906101dd565b60405173ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016815260200161008b565b600260405161008b9190610211565b61010560005481565b60405190815260200161008b565b60006001600160e01b0319821663041de68360e41b148061014357506001600160e01b03198216621574e360e91b145b8061015e57506301ffc9a760e01b6001600160e01b03198316145b92915050565b61016c61018e565b5060408051606081018252600181526004602082015260009181019190915290565b60405180606001604052806003906020820280368337509192915050565b6000602082840312156101be57600080fd5b81356001600160e01b0319811681146101d657600080fd5b9392505050565b60608101818360005b600381101561020857815160ff168352602092830192909101906001016101e6565b50505092915050565b602081016003831061023357634e487b7160e01b600052602160045260246000fd5b9190529056fea164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x67 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x4162169F GT PUSH2 0x50 JUMPI DUP1 PUSH4 0x4162169F EQ PUSH2 0xA9 JUMPI DUP1 PUSH4 0x41DE6830 EQ PUSH2 0xED JUMPI DUP1 PUSH4 0x6ACCAB8C EQ PUSH2 0xFC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x6C JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0x94 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7F PUSH2 0x7A CALLDATASIZE PUSH1 0x4 PUSH2 0x1AC JUMP JUMPDEST PUSH2 0x113 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x9C PUSH2 0x164 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x8B SWAP2 SWAP1 PUSH2 0x1DD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x8B JUMP JUMPDEST PUSH1 0x2 PUSH1 0x40 MLOAD PUSH2 0x8B SWAP2 SWAP1 PUSH2 0x211 JUMP JUMPDEST PUSH2 0x105 PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x8B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x41DE683 PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x143 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x15E JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x16C PUSH2 0x18E JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x1D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0x208 JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x1E6 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH1 0x3 DUP4 LT PUSH2 0x233 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 SWAP1 MSTORE SWAP1 JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"291:135:50:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1265:288:73;;;;;;:::i;:::-;;:::i;:::-;;;470:14:92;;463:22;445:41;;433:2;418:18;1265:288:73;;;;;;;;631:98:90;;;:::i;:::-;;;;;;;:::i;943:69:66:-;;;1193:42:92;1002:3:66;1181:55:92;1163:74;;1151:2;1136:18;943:69:66;1003:240:92;945:112:73;1026:24;945:112;;;;;;:::i;333:21:50:-;;;;;;;;;1743:25:92;;;1731:2;1716:18;333:21:50;1597:177:92;1265:288:73;1351:4;-1:-1:-1;;;;;;1386:41:73;;-1:-1:-1;;;1386:41:73;;:107;;-1:-1:-1;;;;;;;1443:50:73;;-1:-1:-1;;;1443:50:73;1386:107;:160;;;-1:-1:-1;;;;;;;;;;937:40:38;;;1509:37:73;1367:179;1265:288;-1:-1:-1;;1265:288:73:o;631:98:90:-;679:15;;:::i;:::-;-1:-1:-1;706:16:90;;;;;;;;714:1;706:16;;717:1;706:16;;;;-1:-1:-1;706:16:90;;;;;;;;631:98::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:286:92:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:92;;209:43;;199:71;;266:1;263;256:12;199:71;289:5;14:286;-1:-1:-1;;;14:286:92:o;497:501::-;673:2;658:18;;662:9;753:6;631:4;787:205;801:4;798:1;795:11;787:205;;;864:13;;879:4;860:24;848:37;;908:4;932:12;;;;967:15;;;;821:1;814:9;787:205;;;791:3;;;497:501;;;;:::o;1248:344::-;1396:2;1381:18;;1429:1;1418:13;;1408:144;;1474:10;1469:3;1465:20;1462:1;1455:31;1509:4;1506:1;1499:15;1537:4;1534:1;1527:15;1408:144;1561:25;;;1248:344;:::o"},"gasEstimates":{"creation":{"codeDepositCost":"116400","executionCost":"infinite","totalCost":"infinite"},"external":{"dao()":"infinite","pluginType()":"249","protocolVersion()":"infinite","state1()":"2339","supportsInterface(bytes4)":"482"}},"methodIdentifiers":{"dao()":"4162169f","pluginType()":"41de6830","protocolVersion()":"2ae9c600","state1()":"6accab8c","supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IDAO\",\"name\":\"_dao\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"dao\",\"outputs\":[{\"internalType\":\"contract IDAO\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pluginType\",\"outputs\":[{\"internalType\":\"enum IPlugin.PluginType\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"protocolVersion\",\"outputs\":[{\"internalType\":\"uint8[3]\",\"name\":\"\",\"type\":\"uint8[3]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"state1\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"DO NOT USE IN PRODUCTION!\",\"kind\":\"dev\",\"methods\":{\"dao()\":{\"returns\":{\"_0\":\"The DAO contract.\"}},\"protocolVersion()\":{\"details\":\"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\",\"returns\":{\"_0\":\"Returns the semantic Aragon OSx protocol version number.\"}},\"supportsInterface(bytes4)\":{\"params\":{\"_interfaceId\":\"The ID of the interface.\"},\"returns\":{\"_0\":\"Returns `true` if the interface is supported.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"dao()\":{\"notice\":\"Returns the DAO contract.\"},\"pluginType()\":{\"notice\":\"Returns the plugin's type\"},\"protocolVersion()\":{\"notice\":\"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Checks if this or the parent contract supports an interface by its ID.\"}},\"notice\":\"A mock plugin to be deployed via the `new` keyword. v1.1 (Release 1, Build 1)\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/mocks/plugin/PluginMock.sol\":\"PluginMockBuild1\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n function _contextSuffixLength() internal view virtual returns (uint256) {\\n return 0;\\n }\\n}\\n\",\"keccak256\":\"0xa92e4fa126feb6907daa0513ddd816b2eb91f30a808de54f63c17d0e162c3439\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165 is IERC165 {\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165).interfaceId;\\n }\\n}\\n\",\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"src/dao/IDAO.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IDAO\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for DAOs within the Aragon App DAO framework.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IDAO {\\n /// @notice The action struct to be consumed by the DAO's `execute` function resulting in an external call.\\n /// @param to The address to call.\\n /// @param value The native token value to be sent with the call.\\n /// @param data The bytes-encoded function selector and calldata for the call.\\n struct Action {\\n address to;\\n uint256 value;\\n bytes data;\\n }\\n\\n /// @notice Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\\n /// @param _where The address of the contract.\\n /// @param _who The address of a EOA or contract to give the permissions.\\n /// @param _permissionId The permission identifier.\\n /// @param _data The optional data passed to the `PermissionCondition` registered.\\n /// @return Returns true if the address has permission, false if not.\\n function hasPermission(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes memory _data\\n ) external view returns (bool);\\n\\n /// @notice Updates the DAO metadata (e.g., an IPFS hash).\\n /// @param _metadata The IPFS hash of the new metadata object.\\n function setMetadata(bytes calldata _metadata) external;\\n\\n /// @notice Emitted when the DAO metadata is updated.\\n /// @param metadata The IPFS hash of the new metadata object.\\n event MetadataSet(bytes metadata);\\n\\n /// @notice Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted.\\n /// @param _callId The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce.\\n /// @param _actions The array of actions.\\n /// @param _allowFailureMap A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @return The array of results obtained from the executed actions in `bytes`.\\n /// @return The resulting failure map containing the actions have actually failed.\\n function execute(\\n bytes32 _callId,\\n Action[] memory _actions,\\n uint256 _allowFailureMap\\n ) external returns (bytes[] memory, uint256);\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param actor The address of the caller.\\n /// @param callId The ID of the call.\\n /// @param actions The array of actions executed.\\n /// @param allowFailureMap The allow failure map encoding which actions are allowed to fail.\\n /// @param failureMap The failure map encoding which actions have failed.\\n /// @param execResults The array with the results of the executed actions.\\n /// @dev The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce.\\n event Executed(\\n address indexed actor,\\n bytes32 callId,\\n Action[] actions,\\n uint256 allowFailureMap,\\n uint256 failureMap,\\n bytes[] execResults\\n );\\n\\n /// @notice Emitted when a standard callback is registered.\\n /// @param interfaceId The ID of the interface.\\n /// @param callbackSelector The selector of the callback function.\\n /// @param magicNumber The magic number to be registered for the callback function selector.\\n event StandardCallbackRegistered(\\n bytes4 interfaceId,\\n bytes4 callbackSelector,\\n bytes4 magicNumber\\n );\\n\\n /// @notice Deposits (native) tokens to the DAO contract with a reference string.\\n /// @param _token The address of the token or address(0) in case of the native token.\\n /// @param _amount The amount of tokens to deposit.\\n /// @param _reference The reference describing the deposit reason.\\n function deposit(address _token, uint256 _amount, string calldata _reference) external payable;\\n\\n /// @notice Emitted when a token deposit has been made to the DAO.\\n /// @param sender The address of the sender.\\n /// @param token The address of the deposited token.\\n /// @param amount The amount of tokens deposited.\\n /// @param _reference The reference describing the deposit reason.\\n event Deposited(\\n address indexed sender,\\n address indexed token,\\n uint256 amount,\\n string _reference\\n );\\n\\n /// @notice Emitted when a native token deposit has been made to the DAO.\\n /// @dev This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).\\n /// @param sender The address of the sender.\\n /// @param amount The amount of native tokens deposited.\\n event NativeTokenDeposited(address sender, uint256 amount);\\n\\n /// @notice Setter for the trusted forwarder verifying the meta transaction.\\n /// @param _trustedForwarder The trusted forwarder address.\\n function setTrustedForwarder(address _trustedForwarder) external;\\n\\n /// @notice Getter for the trusted forwarder verifying the meta transaction.\\n /// @return The trusted forwarder address.\\n function getTrustedForwarder() external view returns (address);\\n\\n /// @notice Emitted when a new TrustedForwarder is set on the DAO.\\n /// @param forwarder the new forwarder address.\\n event TrustedForwarderSet(address forwarder);\\n\\n /// @notice Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\\n /// @param _hash The hash of the data to be signed.\\n /// @param _signature The signature byte array associated with `_hash`.\\n /// @return Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not.\\n function isValidSignature(bytes32 _hash, bytes memory _signature) external returns (bytes4);\\n\\n /// @notice Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\\n /// @param _interfaceId The ID of the interface.\\n /// @param _callbackSelector The selector of the callback function.\\n /// @param _magicNumber The magic number to be registered for the function signature.\\n function registerStandardCallback(\\n bytes4 _interfaceId,\\n bytes4 _callbackSelector,\\n bytes4 _magicNumber\\n ) external;\\n\\n /// @notice Removed function being left here to not corrupt the IDAO interface ID. Any call will revert.\\n /// @dev Introduced in v1.0.0. Removed in v1.4.0.\\n function setSignatureValidator(address) external;\\n}\\n\",\"keccak256\":\"0xb7f615523c26de042edce98731c658f44a1edb2464387ac1b642c4c69f57128e\",\"license\":\"AGPL-3.0-or-later\"},\"src/mocks/plugin/PluginMock.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {Plugin} from \\\"../../plugin/Plugin.sol\\\";\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice A mock plugin to be deployed via the `new` keyword.\\n/// v1.1 (Release 1, Build 1)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginMockBuild1 is Plugin {\\n uint256 public state1;\\n\\n constructor(IDAO _dao) Plugin(_dao) {\\n state1 = 1;\\n }\\n}\\n\",\"keccak256\":\"0x9aca72aa9f93de6de6cc6a093aaaceb62649bea46fba7f07a01a067c145c35bd\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/DaoAuthorizable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {Context} from \\\"@openzeppelin/contracts/utils/Context.sol\\\";\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\nimport {_auth} from \\\"./auth.sol\\\";\\n\\n/// @title DaoAuthorizable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract contract providing a meta-transaction compatible modifier for non-upgradeable contracts instantiated via the `new` keyword to authorize function calls through an associated DAO.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract DaoAuthorizable is Context {\\n /// @notice The associated DAO managing the permissions of inheriting contracts.\\n IDAO private immutable DAO;\\n\\n /// @notice Constructs the contract by setting the associated DAO.\\n /// @param _dao The associated DAO address.\\n constructor(IDAO _dao) {\\n DAO = _dao;\\n }\\n\\n /// @notice Returns the DAO contract.\\n /// @return The DAO contract.\\n function dao() public view returns (IDAO) {\\n return DAO;\\n }\\n\\n /// @notice A modifier to make functions on inheriting contracts authorized. Permissions to call the function are checked through the associated DAO's permission manager.\\n /// @param _permissionId The permission identifier required to call the method this modifier is applied to.\\n modifier auth(bytes32 _permissionId) {\\n _auth(DAO, address(this), _msgSender(), _permissionId, _msgData());\\n _;\\n }\\n}\\n\",\"keccak256\":\"0x3d0be91b4f5854ed2d2c51b53fe7ffba58cc968e972015cf60eb3ea100543e64\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/auth.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice Thrown if a call is unauthorized in the associated DAO.\\n/// @param dao The associated DAO.\\n/// @param where The context in which the authorization reverted.\\n/// @param who The address (EOA or contract) missing the permission.\\n/// @param permissionId The permission identifier.\\nerror DaoUnauthorized(address dao, address where, address who, bytes32 permissionId);\\n\\n/// @notice A free function checking if a caller is granted permissions on a target contract via a permission identifier that redirects the approval to a `PermissionCondition` if this was specified in the setup.\\n/// @param _where The address of the target contract for which `who` receives permission.\\n/// @param _who The address (EOA or contract) owning the permission.\\n/// @param _permissionId The permission identifier.\\n/// @param _data The optional data passed to the `PermissionCondition` registered.\\n/// @custom:security-contact sirt@aragon.org\\nfunction _auth(\\n IDAO _dao,\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes calldata _data\\n) view {\\n if (!_dao.hasPermission(_where, _who, _permissionId, _data))\\n revert DaoUnauthorized({\\n dao: address(_dao),\\n where: _where,\\n who: _who,\\n permissionId: _permissionId\\n });\\n}\\n\",\"keccak256\":\"0x878764b4f87fe0651fb3798fb9cb87c952f8c6caf6ae79c7f09de84df6c00298\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/IPlugin.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IPlugin\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the traits of a plugin.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IPlugin {\\n enum PluginType {\\n UUPS,\\n Cloneable,\\n Constructable\\n }\\n\\n /// @notice Returns the plugin's type\\n function pluginType() external view returns (PluginType);\\n}\\n\",\"keccak256\":\"0xc57cd0d10b6380ab7f54c713a509e88fd8f4ad9288313a0e8e12b8887817ddfe\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/Plugin.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ERC165} from \\\"@openzeppelin/contracts/utils/introspection/ERC165.sol\\\";\\n\\nimport {IProtocolVersion} from \\\"../utils/versioning/IProtocolVersion.sol\\\";\\nimport {ProtocolVersion} from \\\"../utils/versioning/ProtocolVersion.sol\\\";\\nimport {DaoAuthorizable} from \\\"../permission/auth/DaoAuthorizable.sol\\\";\\nimport {IDAO} from \\\"../dao/IDAO.sol\\\";\\nimport {IPlugin} from \\\"./IPlugin.sol\\\";\\n\\n/// @title Plugin\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract, non-upgradeable contract to inherit from when creating a plugin being deployed via the `new` keyword.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract Plugin is IPlugin, ERC165, DaoAuthorizable, ProtocolVersion {\\n /// @notice Constructs the plugin by storing the associated DAO.\\n /// @param _dao The DAO contract.\\n constructor(IDAO _dao) DaoAuthorizable(_dao) {}\\n\\n /// @inheritdoc IPlugin\\n function pluginType() public pure override returns (PluginType) {\\n return PluginType.Constructable;\\n }\\n\\n /// @notice Checks if this or the parent contract supports an interface by its ID.\\n /// @param _interfaceId The ID of the interface.\\n /// @return Returns `true` if the interface is supported.\\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\\n return\\n _interfaceId == type(IPlugin).interfaceId ||\\n _interfaceId == type(IProtocolVersion).interfaceId ||\\n super.supportsInterface(_interfaceId);\\n }\\n}\\n\",\"keccak256\":\"0xdda9f39f3f06fa66dc1b0688576143db5bd0aafdb557de36563de0aa68829135\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/IProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IProtocolVersion\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the semantic Aragon OSx protocol version number.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IProtocolVersion {\\n /// @notice Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\\n /// @return _version Returns the semantic Aragon OSx protocol version number.\\n /// @dev This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\\n function protocolVersion() external view returns (uint8[3] memory _version);\\n}\\n\",\"keccak256\":\"0x00a4da654d21dc1bdadbdc8bd54bb86c378c56f85e461ccc31303628ea621361\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/ProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IProtocolVersion} from \\\"./IProtocolVersion.sol\\\";\\n\\n/// @title ProtocolVersion\\n/// @author Aragon X - 2023\\n/// @notice An abstract, stateless, non-upgradeable contract providing the current Aragon OSx protocol version number.\\n/// @dev Do not add any new variables to this contract that would shift down storage in the inheritance chain.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract ProtocolVersion is IProtocolVersion {\\n // IMPORTANT: Do not add any storage variable, see the above notice.\\n\\n /// @inheritdoc IProtocolVersion\\n function protocolVersion() public pure returns (uint8[3] memory) {\\n return [1, 4, 0];\\n }\\n}\\n\",\"keccak256\":\"0x3975c937be935f687c6b6b8f379071232681e98cf04b175d72781b819ea52bdb\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[{"astId":11508,"contract":"src/mocks/plugin/PluginMock.sol:PluginMockBuild1","label":"state1","offset":0,"slot":"0","type":"t_uint256"}],"types":{"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"userdoc":{"kind":"user","methods":{"dao()":{"notice":"Returns the DAO contract."},"pluginType()":{"notice":"Returns the plugin's type"},"protocolVersion()":{"notice":"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with."},"supportsInterface(bytes4)":{"notice":"Checks if this or the parent contract supports an interface by its ID."}},"notice":"A mock plugin to be deployed via the `new` keyword. v1.1 (Release 1, Build 1)","version":1}}},"src/mocks/plugin/PluginSetupMock.sol":{"PluginSetupMockBuild1":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"ConflictingValues","type":"error"},{"inputs":[],"name":"NonUpgradeablePlugin","type":"error"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_dao","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"prepareInstallation","outputs":[{"internalType":"address","name":"plugin","type":"address"},{"components":[{"internalType":"address[]","name":"helpers","type":"address[]"},{"components":[{"internalType":"enum PermissionLib.Operation","name":"operation","type":"uint8"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"condition","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"internalType":"struct PermissionLib.MultiTargetPermission[]","name":"permissions","type":"tuple[]"}],"internalType":"struct IPluginSetup.PreparedSetupData","name":"preparedSetupData","type":"tuple"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_dao","type":"address"},{"components":[{"internalType":"address","name":"plugin","type":"address"},{"internalType":"address[]","name":"currentHelpers","type":"address[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct IPluginSetup.SetupPayload","name":"_payload","type":"tuple"}],"name":"prepareUninstallation","outputs":[{"components":[{"internalType":"enum PermissionLib.Operation","name":"operation","type":"uint8"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"condition","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"internalType":"struct PermissionLib.MultiTargetPermission[]","name":"permissions","type":"tuple[]"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_dao","type":"address"},{"internalType":"uint16","name":"_fromBuild","type":"uint16"},{"components":[{"internalType":"address","name":"plugin","type":"address"},{"internalType":"address[]","name":"currentHelpers","type":"address[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct IPluginSetup.SetupPayload","name":"_payload","type":"tuple"}],"name":"prepareUpdate","outputs":[{"internalType":"bytes","name":"","type":"bytes"},{"components":[{"internalType":"address[]","name":"helpers","type":"address[]"},{"components":[{"internalType":"enum PermissionLib.Operation","name":"operation","type":"uint8"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"condition","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"internalType":"struct PermissionLib.MultiTargetPermission[]","name":"permissions","type":"tuple[]"}],"internalType":"struct IPluginSetup.PreparedSetupData","name":"","type":"tuple"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"protocolVersion","outputs":[{"internalType":"uint8[3]","name":"","type":"uint8[3]"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"DO NOT USE IN PRODUCTION!","kind":"dev","methods":{"implementation()":{"details":"The implementation can be instantiated via the `new` keyword, cloned via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)), or proxied via the UUPS proxy pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).","returns":{"_0":"The address of the plugin implementation contract."}},"prepareInstallation(address,bytes)":{"params":{"_dao":"The address of the installing DAO.","_data":"The bytes-encoded data containing the input parameters for the installation as specified in the plugin's build metadata JSON file."},"returns":{"plugin":"The address of the `Plugin` contract being prepared for installation.","preparedSetupData":"The deployed plugin's relevant data which consists of helpers and permissions."}},"prepareUninstallation(address,(address,address[],bytes))":{"params":{"_dao":"The address of the uninstalling DAO.","_payload":"The relevant data necessary for the `prepareUninstallation`. See above."},"returns":{"permissions":"The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the uninstalling DAO."}},"prepareUpdate(address,uint16,(address,address[],bytes))":{"details":"Since the underlying plugin is non-upgradeable, this non-virtual function must always revert.","params":{"_dao":"The address of the updating DAO.","_fromBuild":"The build number of the plugin to update from.","_payload":"The relevant data necessary for the `prepareUpdate`. See above."},"returns":{"_0":"The initialization data to be passed to upgradeable contracts when the update is applied in the `PluginSetupProcessor`.","_1":"The deployed plugin's relevant data which consists of helpers and permissions."}},"protocolVersion()":{"details":"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.","returns":{"_0":"Returns the semantic Aragon OSx protocol version number."}},"supportsInterface(bytes4)":{"params":{"_interfaceId":"The ID of the interface."},"returns":{"_0":"Returns `true` if the interface is supported."}}},"version":1},"evm":{"bytecode":{"functionDebugData":{"@_11560":{"entryPoint":null,"id":11560,"parameterSlots":0,"returnSlots":0},"@_14307":{"entryPoint":null,"id":14307,"parameterSlots":1,"returnSlots":0},"abi_encode_tuple_t_contract$_IDAO_$10865__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:233:92","statements":[{"nodeType":"YulBlock","src":"6:3:92","statements":[]},{"body":{"nodeType":"YulBlock","src":"129:102:92","statements":[{"nodeType":"YulAssignment","src":"139:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"151:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"162:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"147:3:92"},"nodeType":"YulFunctionCall","src":"147:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"139:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"181:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"196:6:92"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"212:3:92","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"217:1:92","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"208:3:92"},"nodeType":"YulFunctionCall","src":"208:11:92"},{"kind":"number","nodeType":"YulLiteral","src":"221:1:92","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"204:3:92"},"nodeType":"YulFunctionCall","src":"204:19:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"192:3:92"},"nodeType":"YulFunctionCall","src":"192:32:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"174:6:92"},"nodeType":"YulFunctionCall","src":"174:51:92"},"nodeType":"YulExpressionStatement","src":"174:51:92"}]},"name":"abi_encode_tuple_t_contract$_IDAO_$10865__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"98:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"109:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"120:4:92","type":""}],"src":"14:217:92"}]},"contents":"{\n { }\n function abi_encode_tuple_t_contract$_IDAO_$10865__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n }\n}","id":92,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60a060405234801561001057600080fd5b50600060405161001f9061005d565b6001600160a01b039091168152602001604051809103906000f08015801561004b573d6000803e3d6000fd5b506001600160a01b031660805261006a565b6102d580610ce083390190565b608051610c5c610084600039600060c10152610c5c6000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c80639cb0a124116100505780639cb0a124146100eb578063a8a9c29e1461010b578063f10832f11461012c57600080fd5b806301ffc9a7146100775780632ae9c6001461009f5780635c60da1b146100b4575b600080fd5b61008a610085366004610501565b61014d565b60405190151581526020015b60405180910390f35b6100a761019e565b604051610096919061052b565b6040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152602001610096565b6100fe6100f936600461058d565b6101c8565b6040516100969190610657565b61011e6101193660046106a0565b6101de565b60405161009692919061079a565b61013f61013a366004610815565b610216565b6040516100969291906108d7565b60006001600160e01b0319821663099718b560e41b148061017d57506001600160e01b03198216621574e360e91b145b8061019857506301ffc9a760e01b6001600160e01b03198316145b92915050565b6101a66104d6565b5060408051606081018252600181526004602082015260009181019190915290565b60606101d76000600180610298565b9392505050565b60606101fd604051806040016040528060608152602001606081525090565b60405163a112810160e01b815260040160405180910390fd5b6000610235604051806040016040528060608152602001606081525090565b83604051610242906104f4565b6001600160a01b039091168152602001604051809103906000f08015801561026e573d6000803e3d6000fd5b50915061027b600161041d565b815261028a6000600181610298565b602082015290939092509050565b6060826001600160a01b0316846001600160a01b031611156102cd57604051633a4013cd60e21b815260040160405180910390fd5b6102d78484610917565b6001600160a01b031667ffffffffffffffff8111156102f8576102f86107ff565b60405190808252806020026020018201604052801561035157816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282526000199092019101816103165790505b509050835b836001600160a01b0316816001600160a01b03161015610415576040518060a0016040528084600281111561038d5761038d6105db565b81526001600160a01b038316602082018190526040820152600060608201527fa280eec51ab8e1bc4b6b0c1b7f1bde785761b787a49db404e3e9338ed9b016ef608090910152826103de8784610917565b6001600160a01b0316815181106103f7576103f761093e565b6020026020010181905250808061040d90610954565b915050610356565b509392505050565b6060816001600160a01b031667ffffffffffffffff811115610441576104416107ff565b60405190808252806020026020018201604052801561046a578160200160208202803683370190505b50905060005b826001600160a01b0316816001600160a01b031610156104d0578082826001600160a01b0316815181106104a6576104a661093e565b6001600160a01b0390921660209283029190910190910152806104c881610954565b915050610470565b50919050565b60405180606001604052806003906020820280368337509192915050565b6102d58061097b83390190565b60006020828403121561051357600080fd5b81356001600160e01b0319811681146101d757600080fd5b60608101818360005b600381101561055657815160ff16835260209283019290910190600101610534565b50505092915050565b80356001600160a01b038116811461057657600080fd5b919050565b6000606082840312156104d057600080fd5b600080604083850312156105a057600080fd5b6105a98361055f565b9150602083013567ffffffffffffffff8111156105c557600080fd5b6105d18582860161057b565b9150509250929050565b634e487b7160e01b600052602160045260246000fd5b600081516003811061061357634e487b7160e01b600052602160045260246000fd5b8352506020818101516001600160a01b0390811691840191909152604080830151821690840152606080830151909116908301526080908101519082015260a00190565b6020808252825182820181905260009190848201906040850190845b81811015610694576106868385516105f1565b938501939250600101610673565b50909695505050505050565b6000806000606084860312156106b557600080fd5b6106be8461055f565b9250602084013561ffff811681146106d557600080fd5b9150604084013567ffffffffffffffff8111156106f157600080fd5b6106fd8682870161057b565b9150509250925092565b805160408084528151908401819052600091602091908201906060860190845b8181101561074c5783516001600160a01b031683529284019291840191600101610727565b50508483015186820387850152805180835290840192506000918401905b8083101561078f5761077d8285516105f1565b9150848401935060018301925061076a565b509695505050505050565b604081526000835180604084015260005b818110156107c857602081870181015160608684010152016107ab565b50600060608285010152601f19601f8201168301905060608382030160208401526107f66060820185610707565b95945050505050565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561082857600080fd5b6108318361055f565b9150602083013567ffffffffffffffff8082111561084e57600080fd5b818501915085601f83011261086257600080fd5b813581811115610874576108746107ff565b604051601f8201601f19908116603f0116810190838211818310171561089c5761089c6107ff565b816040528281528860208487010111156108b557600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6001600160a01b03831681526040602082015260006108f96040830184610707565b949350505050565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0382811682821603908082111561093757610937610901565b5092915050565b634e487b7160e01b600052603260045260246000fd5b60006001600160a01b0380831681810361097057610970610901565b600101939250505056fe60a060405234801561001057600080fd5b506040516102d53803806102d583398101604081905261002f91610045565b6001600160a01b03166080526001600055610075565b60006020828403121561005757600080fd5b81516001600160a01b038116811461006e57600080fd5b9392505050565b60805161024661008f600039600060c301526102466000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80634162169f116100505780634162169f146100a957806341de6830146100ed5780636accab8c146100fc57600080fd5b806301ffc9a71461006c5780632ae9c60014610094575b600080fd5b61007f61007a3660046101ac565b610113565b60405190151581526020015b60405180910390f35b61009c610164565b60405161008b91906101dd565b60405173ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016815260200161008b565b600260405161008b9190610211565b61010560005481565b60405190815260200161008b565b60006001600160e01b0319821663041de68360e41b148061014357506001600160e01b03198216621574e360e91b145b8061015e57506301ffc9a760e01b6001600160e01b03198316145b92915050565b61016c61018e565b5060408051606081018252600181526004602082015260009181019190915290565b60405180606001604052806003906020820280368337509192915050565b6000602082840312156101be57600080fd5b81356001600160e01b0319811681146101d657600080fd5b9392505050565b60608101818360005b600381101561020857815160ff168352602092830192909101906001016101e6565b50505092915050565b602081016003831061023357634e487b7160e01b600052602160045260246000fd5b9190529056fea164736f6c6343000811000aa164736f6c6343000811000a60a060405234801561001057600080fd5b506040516102d53803806102d583398101604081905261002f91610045565b6001600160a01b03166080526001600055610075565b60006020828403121561005757600080fd5b81516001600160a01b038116811461006e57600080fd5b9392505050565b60805161024661008f600039600060c301526102466000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80634162169f116100505780634162169f146100a957806341de6830146100ed5780636accab8c146100fc57600080fd5b806301ffc9a71461006c5780632ae9c60014610094575b600080fd5b61007f61007a3660046101ac565b610113565b60405190151581526020015b60405180910390f35b61009c610164565b60405161008b91906101dd565b60405173ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016815260200161008b565b600260405161008b9190610211565b61010560005481565b60405190815260200161008b565b60006001600160e01b0319821663041de68360e41b148061014357506001600160e01b03198216621574e360e91b145b8061015e57506301ffc9a760e01b6001600160e01b03198316145b92915050565b61016c61018e565b5060408051606081018252600181526004602082015260009181019190915290565b60405180606001604052806003906020820280368337509192915050565b6000602082840312156101be57600080fd5b81356001600160e01b0319811681146101d657600080fd5b9392505050565b60608101818360005b600381101561020857815160ff168352602092830192909101906001016101e6565b50505092915050565b602081016003831061023357634e487b7160e01b600052602160045260246000fd5b9190529056fea164736f6c6343000811000a","opcodes":"PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 PUSH1 0x40 MLOAD PUSH2 0x1F SWAP1 PUSH2 0x5D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH2 0x4B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x80 MSTORE PUSH2 0x6A JUMP JUMPDEST PUSH2 0x2D5 DUP1 PUSH2 0xCE0 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH2 0xC5C PUSH2 0x84 PUSH1 0x0 CODECOPY PUSH1 0x0 PUSH1 0xC1 ADD MSTORE PUSH2 0xC5C PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x72 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9CB0A124 GT PUSH2 0x50 JUMPI DUP1 PUSH4 0x9CB0A124 EQ PUSH2 0xEB JUMPI DUP1 PUSH4 0xA8A9C29E EQ PUSH2 0x10B JUMPI DUP1 PUSH4 0xF10832F1 EQ PUSH2 0x12C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x77 JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0x9F JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0xB4 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8A PUSH2 0x85 CALLDATASIZE PUSH1 0x4 PUSH2 0x501 JUMP JUMPDEST PUSH2 0x14D JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xA7 PUSH2 0x19E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x96 SWAP2 SWAP1 PUSH2 0x52B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x96 JUMP JUMPDEST PUSH2 0xFE PUSH2 0xF9 CALLDATASIZE PUSH1 0x4 PUSH2 0x58D JUMP JUMPDEST PUSH2 0x1C8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x96 SWAP2 SWAP1 PUSH2 0x657 JUMP JUMPDEST PUSH2 0x11E PUSH2 0x119 CALLDATASIZE PUSH1 0x4 PUSH2 0x6A0 JUMP JUMPDEST PUSH2 0x1DE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x96 SWAP3 SWAP2 SWAP1 PUSH2 0x79A JUMP JUMPDEST PUSH2 0x13F PUSH2 0x13A CALLDATASIZE PUSH1 0x4 PUSH2 0x815 JUMP JUMPDEST PUSH2 0x216 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x96 SWAP3 SWAP2 SWAP1 PUSH2 0x8D7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x99718B5 PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x17D JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x198 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1A6 PUSH2 0x4D6 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1D7 PUSH1 0x0 PUSH1 0x1 DUP1 PUSH2 0x298 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1FD PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xA1128101 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x235 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST DUP4 PUSH1 0x40 MLOAD PUSH2 0x242 SWAP1 PUSH2 0x4F4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH2 0x26E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP SWAP2 POP PUSH2 0x27B PUSH1 0x1 PUSH2 0x41D JUMP JUMPDEST DUP2 MSTORE PUSH2 0x28A PUSH1 0x0 PUSH1 0x1 DUP2 PUSH2 0x298 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE SWAP1 SWAP4 SWAP1 SWAP3 POP SWAP1 POP JUMP JUMPDEST PUSH1 0x60 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH2 0x2CD JUMPI PUSH1 0x40 MLOAD PUSH4 0x3A4013CD PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2D7 DUP5 DUP5 PUSH2 0x917 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2F8 JUMPI PUSH2 0x2F8 PUSH2 0x7FF JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x351 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD DUP3 SWAP1 MSTORE SWAP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 DUP3 ADD MSTORE DUP3 MSTORE PUSH1 0x0 NOT SWAP1 SWAP3 ADD SWAP2 ADD DUP2 PUSH2 0x316 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP DUP4 JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT ISZERO PUSH2 0x415 JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 DUP5 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x38D JUMPI PUSH2 0x38D PUSH2 0x5DB JUMP JUMPDEST DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x60 DUP3 ADD MSTORE PUSH32 0xA280EEC51AB8E1BC4B6B0C1B7F1BDE785761B787A49DB404E3E9338ED9B016EF PUSH1 0x80 SWAP1 SWAP2 ADD MSTORE DUP3 PUSH2 0x3DE DUP8 DUP5 PUSH2 0x917 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MLOAD DUP2 LT PUSH2 0x3F7 JUMPI PUSH2 0x3F7 PUSH2 0x93E JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP DUP1 DUP1 PUSH2 0x40D SWAP1 PUSH2 0x954 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x356 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x441 JUMPI PUSH2 0x441 PUSH2 0x7FF JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x46A JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT ISZERO PUSH2 0x4D0 JUMPI DUP1 DUP3 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MLOAD DUP2 LT PUSH2 0x4A6 JUMPI PUSH2 0x4A6 PUSH2 0x93E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE DUP1 PUSH2 0x4C8 DUP2 PUSH2 0x954 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x470 JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x2D5 DUP1 PUSH2 0x97B DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x513 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x1D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0x556 JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x534 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x576 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x5A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5A9 DUP4 PUSH2 0x55F JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x5C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5D1 DUP6 DUP3 DUP7 ADD PUSH2 0x57B JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP2 MLOAD PUSH1 0x3 DUP2 LT PUSH2 0x613 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP4 MSTORE POP PUSH1 0x20 DUP2 DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP1 DUP4 ADD MLOAD DUP3 AND SWAP1 DUP5 ADD MSTORE PUSH1 0x60 DUP1 DUP4 ADD MLOAD SWAP1 SWAP2 AND SWAP1 DUP4 ADD MSTORE PUSH1 0x80 SWAP1 DUP2 ADD MLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x694 JUMPI PUSH2 0x686 DUP4 DUP6 MLOAD PUSH2 0x5F1 JUMP JUMPDEST SWAP4 DUP6 ADD SWAP4 SWAP3 POP PUSH1 0x1 ADD PUSH2 0x673 JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x6B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x6BE DUP5 PUSH2 0x55F JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH2 0x6D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x6F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x6FD DUP7 DUP3 DUP8 ADD PUSH2 0x57B JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x40 DUP1 DUP5 MSTORE DUP2 MLOAD SWAP1 DUP5 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x20 SWAP2 SWAP1 DUP3 ADD SWAP1 PUSH1 0x60 DUP7 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x74C JUMPI DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x727 JUMP JUMPDEST POP POP DUP5 DUP4 ADD MLOAD DUP7 DUP3 SUB DUP8 DUP6 ADD MSTORE DUP1 MLOAD DUP1 DUP4 MSTORE SWAP1 DUP5 ADD SWAP3 POP PUSH1 0x0 SWAP2 DUP5 ADD SWAP1 JUMPDEST DUP1 DUP4 LT ISZERO PUSH2 0x78F JUMPI PUSH2 0x77D DUP3 DUP6 MLOAD PUSH2 0x5F1 JUMP JUMPDEST SWAP2 POP DUP5 DUP5 ADD SWAP4 POP PUSH1 0x1 DUP4 ADD SWAP3 POP PUSH2 0x76A JUMP JUMPDEST POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 DUP4 MLOAD DUP1 PUSH1 0x40 DUP5 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x7C8 JUMPI PUSH1 0x20 DUP2 DUP8 ADD DUP2 ADD MLOAD PUSH1 0x60 DUP7 DUP5 ADD ADD MSTORE ADD PUSH2 0x7AB JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x60 DUP3 DUP6 ADD ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP4 ADD SWAP1 POP PUSH1 0x60 DUP4 DUP3 SUB ADD PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x7F6 PUSH1 0x60 DUP3 ADD DUP6 PUSH2 0x707 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x828 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x831 DUP4 PUSH2 0x55F JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x84E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x862 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x874 JUMPI PUSH2 0x874 PUSH2 0x7FF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x89C JUMPI PUSH2 0x89C PUSH2 0x7FF JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x8B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0x8F9 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x707 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND DUP3 DUP3 AND SUB SWAP1 DUP1 DUP3 GT ISZERO PUSH2 0x937 JUMPI PUSH2 0x937 PUSH2 0x901 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND DUP2 DUP2 SUB PUSH2 0x970 JUMPI PUSH2 0x970 PUSH2 0x901 JUMP JUMPDEST PUSH1 0x1 ADD SWAP4 SWAP3 POP POP POP JUMP INVALID PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x2D5 CODESIZE SUB DUP1 PUSH2 0x2D5 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0x45 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x80 MSTORE PUSH1 0x1 PUSH1 0x0 SSTORE PUSH2 0x75 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x57 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x6E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH2 0x246 PUSH2 0x8F PUSH1 0x0 CODECOPY PUSH1 0x0 PUSH1 0xC3 ADD MSTORE PUSH2 0x246 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x67 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x4162169F GT PUSH2 0x50 JUMPI DUP1 PUSH4 0x4162169F EQ PUSH2 0xA9 JUMPI DUP1 PUSH4 0x41DE6830 EQ PUSH2 0xED JUMPI DUP1 PUSH4 0x6ACCAB8C EQ PUSH2 0xFC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x6C JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0x94 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7F PUSH2 0x7A CALLDATASIZE PUSH1 0x4 PUSH2 0x1AC JUMP JUMPDEST PUSH2 0x113 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x9C PUSH2 0x164 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x8B SWAP2 SWAP1 PUSH2 0x1DD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x8B JUMP JUMPDEST PUSH1 0x2 PUSH1 0x40 MLOAD PUSH2 0x8B SWAP2 SWAP1 PUSH2 0x211 JUMP JUMPDEST PUSH2 0x105 PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x8B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x41DE683 PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x143 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x15E JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x16C PUSH2 0x18E JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x1D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0x208 JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x1E6 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH1 0x3 DUP4 LT PUSH2 0x233 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 SWAP1 MSTORE SWAP1 JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x2D5 CODESIZE SUB DUP1 PUSH2 0x2D5 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0x45 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x80 MSTORE PUSH1 0x1 PUSH1 0x0 SSTORE PUSH2 0x75 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x57 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x6E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH2 0x246 PUSH2 0x8F PUSH1 0x0 CODECOPY PUSH1 0x0 PUSH1 0xC3 ADD MSTORE PUSH2 0x246 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x67 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x4162169F GT PUSH2 0x50 JUMPI DUP1 PUSH4 0x4162169F EQ PUSH2 0xA9 JUMPI DUP1 PUSH4 0x41DE6830 EQ PUSH2 0xED JUMPI DUP1 PUSH4 0x6ACCAB8C EQ PUSH2 0xFC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x6C JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0x94 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7F PUSH2 0x7A CALLDATASIZE PUSH1 0x4 PUSH2 0x1AC JUMP JUMPDEST PUSH2 0x113 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x9C PUSH2 0x164 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x8B SWAP2 SWAP1 PUSH2 0x1DD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x8B JUMP JUMPDEST PUSH1 0x2 PUSH1 0x40 MLOAD PUSH2 0x8B SWAP2 SWAP1 PUSH2 0x211 JUMP JUMPDEST PUSH2 0x105 PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x8B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x41DE683 PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x143 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x15E JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x16C PUSH2 0x18E JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x1D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0x208 JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x1E6 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH1 0x3 DUP4 LT PUSH2 0x233 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 SWAP1 MSTORE SWAP1 JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"624:892:51:-:0;;;676:77;;;;;;;;;;744:1;710:38;;;;;:::i;:::-;-1:-1:-1;;;;;192:32:92;;;174:51;;162:2;147:18;710:38:51;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1454:32:82;;;624:892:51;;;;;;;;;;:::o;14:217:92:-;624:892:51;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@implementation_14370":{"entryPoint":null,"id":14370,"parameterSlots":0,"returnSlots":1},"@mockHelpers_11760":{"entryPoint":1053,"id":11760,"parameterSlots":1,"returnSlots":1},"@mockPermissions_11721":{"entryPoint":664,"id":11721,"parameterSlots":3,"returnSlots":1},"@prepareInstallation_11610":{"entryPoint":534,"id":11610,"parameterSlots":2,"returnSlots":2},"@prepareUninstallation_11638":{"entryPoint":456,"id":11638,"parameterSlots":2,"returnSlots":1},"@prepareUpdate_14332":{"entryPoint":478,"id":14332,"parameterSlots":3,"returnSlots":2},"@protocolVersion_14765":{"entryPoint":414,"id":14765,"parameterSlots":0,"returnSlots":1},"@supportsInterface_14361":{"entryPoint":333,"id":14361,"parameterSlots":1,"returnSlots":1},"@supportsInterface_9730":{"entryPoint":null,"id":9730,"parameterSlots":1,"returnSlots":1},"abi_decode_address":{"entryPoint":1375,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_struct_SetupPayload_calldata":{"entryPoint":1403,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_bytes_memory_ptr":{"entryPoint":2069,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_struct$_SetupPayload_$14224_calldata_ptr":{"entryPoint":1421,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_uint16t_struct$_SetupPayload_$14224_calldata_ptr":{"entryPoint":1696,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_bytes4":{"entryPoint":1281,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encodeUpdatedPos_struct_MultiTargetPermission":{"entryPoint":1521,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_struct_PreparedSetupData":{"entryPoint":1799,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address_t_struct$_PreparedSetupData_$14216_memory_ptr__to_t_address_t_struct$_PreparedSetupData_$14216_memory_ptr__fromStack_reversed":{"entryPoint":2263,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr__fromStack_reversed":{"entryPoint":1623,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed":{"entryPoint":1323,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$14216_memory_ptr__to_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$14216_memory_ptr__fromStack_reversed":{"entryPoint":1946,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_contract$_IDAO_$10865__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_t_uint160":{"entryPoint":2327,"id":null,"parameterSlots":2,"returnSlots":1},"increment_t_uint160":{"entryPoint":2388,"id":null,"parameterSlots":1,"returnSlots":1},"panic_error_0x11":{"entryPoint":2305,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x21":{"entryPoint":1499,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x32":{"entryPoint":2366,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":2047,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:8658:92","statements":[{"nodeType":"YulBlock","src":"6:3:92","statements":[]},{"body":{"nodeType":"YulBlock","src":"83:217:92","statements":[{"body":{"nodeType":"YulBlock","src":"129:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"138:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"141:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"131:6:92"},"nodeType":"YulFunctionCall","src":"131:12:92"},"nodeType":"YulExpressionStatement","src":"131:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"104:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"113:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"100:3:92"},"nodeType":"YulFunctionCall","src":"100:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"125:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"96:3:92"},"nodeType":"YulFunctionCall","src":"96:32:92"},"nodeType":"YulIf","src":"93:52:92"},{"nodeType":"YulVariableDeclaration","src":"154:36:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"180:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"167:12:92"},"nodeType":"YulFunctionCall","src":"167:23:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"158:5:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"254:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"263:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"266:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"256:6:92"},"nodeType":"YulFunctionCall","src":"256:12:92"},"nodeType":"YulExpressionStatement","src":"256:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"212:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"223:5:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"234:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"239:10:92","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"230:3:92"},"nodeType":"YulFunctionCall","src":"230:20:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"219:3:92"},"nodeType":"YulFunctionCall","src":"219:32:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"209:2:92"},"nodeType":"YulFunctionCall","src":"209:43:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"202:6:92"},"nodeType":"YulFunctionCall","src":"202:51:92"},"nodeType":"YulIf","src":"199:71:92"},{"nodeType":"YulAssignment","src":"279:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"289:5:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"279:6:92"}]}]},"name":"abi_decode_tuple_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"49:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"60:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"72:6:92","type":""}],"src":"14:286:92"},{"body":{"nodeType":"YulBlock","src":"400:92:92","statements":[{"nodeType":"YulAssignment","src":"410:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"422:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"433:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"418:3:92"},"nodeType":"YulFunctionCall","src":"418:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"410:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"452:9:92"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"477:6:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"470:6:92"},"nodeType":"YulFunctionCall","src":"470:14:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"463:6:92"},"nodeType":"YulFunctionCall","src":"463:22:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"445:6:92"},"nodeType":"YulFunctionCall","src":"445:41:92"},"nodeType":"YulExpressionStatement","src":"445:41:92"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"369:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"380:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"391:4:92","type":""}],"src":"305:187:92"},{"body":{"nodeType":"YulBlock","src":"640:358:92","statements":[{"nodeType":"YulAssignment","src":"650:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"662:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"673:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"658:3:92"},"nodeType":"YulFunctionCall","src":"658:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"650:4:92"}]},{"nodeType":"YulVariableDeclaration","src":"685:20:92","value":{"name":"headStart","nodeType":"YulIdentifier","src":"696:9:92"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"689:3:92","type":""}]},{"nodeType":"YulAssignment","src":"714:16:92","value":{"name":"headStart","nodeType":"YulIdentifier","src":"721:9:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"714:3:92"}]},{"nodeType":"YulVariableDeclaration","src":"739:20:92","value":{"name":"value0","nodeType":"YulIdentifier","src":"753:6:92"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"743:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"768:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"777:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"772:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"834:158:92","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"855:3:92"},{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"870:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"864:5:92"},"nodeType":"YulFunctionCall","src":"864:13:92"},{"kind":"number","nodeType":"YulLiteral","src":"879:4:92","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"860:3:92"},"nodeType":"YulFunctionCall","src":"860:24:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"848:6:92"},"nodeType":"YulFunctionCall","src":"848:37:92"},"nodeType":"YulExpressionStatement","src":"848:37:92"},{"nodeType":"YulVariableDeclaration","src":"898:14:92","value":{"kind":"number","nodeType":"YulLiteral","src":"908:4:92","type":"","value":"0x20"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"902:2:92","type":""}]},{"nodeType":"YulAssignment","src":"925:19:92","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"936:3:92"},{"name":"_1","nodeType":"YulIdentifier","src":"941:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"932:3:92"},"nodeType":"YulFunctionCall","src":"932:12:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"925:3:92"}]},{"nodeType":"YulAssignment","src":"957:25:92","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"971:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"979:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"967:3:92"},"nodeType":"YulFunctionCall","src":"967:15:92"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"957:6:92"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"798:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"801:4:92","type":"","value":"0x03"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"795:2:92"},"nodeType":"YulFunctionCall","src":"795:11:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"807:18:92","statements":[{"nodeType":"YulAssignment","src":"809:14:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"818:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"821:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"814:3:92"},"nodeType":"YulFunctionCall","src":"814:9:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"809:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"791:3:92","statements":[]},"src":"787:205:92"}]},"name":"abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"609:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"620:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"631:4:92","type":""}],"src":"497:501:92"},{"body":{"nodeType":"YulBlock","src":"1104:125:92","statements":[{"nodeType":"YulAssignment","src":"1114:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1126:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1137:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1122:3:92"},"nodeType":"YulFunctionCall","src":"1122:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1114:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1156:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1171:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"1179:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1167:3:92"},"nodeType":"YulFunctionCall","src":"1167:55:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1149:6:92"},"nodeType":"YulFunctionCall","src":"1149:74:92"},"nodeType":"YulExpressionStatement","src":"1149:74:92"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1073:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1084:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1095:4:92","type":""}],"src":"1003:226:92"},{"body":{"nodeType":"YulBlock","src":"1283:147:92","statements":[{"nodeType":"YulAssignment","src":"1293:29:92","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1315:6:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1302:12:92"},"nodeType":"YulFunctionCall","src":"1302:20:92"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"1293:5:92"}]},{"body":{"nodeType":"YulBlock","src":"1408:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1417:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1420:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1410:6:92"},"nodeType":"YulFunctionCall","src":"1410:12:92"},"nodeType":"YulExpressionStatement","src":"1410:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1344:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1355:5:92"},{"kind":"number","nodeType":"YulLiteral","src":"1362:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1351:3:92"},"nodeType":"YulFunctionCall","src":"1351:54:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1341:2:92"},"nodeType":"YulFunctionCall","src":"1341:65:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1334:6:92"},"nodeType":"YulFunctionCall","src":"1334:73:92"},"nodeType":"YulIf","src":"1331:93:92"}]},"name":"abi_decode_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"1262:6:92","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"1273:5:92","type":""}],"src":"1234:196:92"},{"body":{"nodeType":"YulBlock","src":"1510:85:92","statements":[{"body":{"nodeType":"YulBlock","src":"1549:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1558:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1561:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1551:6:92"},"nodeType":"YulFunctionCall","src":"1551:12:92"},"nodeType":"YulExpressionStatement","src":"1551:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"end","nodeType":"YulIdentifier","src":"1531:3:92"},{"name":"offset","nodeType":"YulIdentifier","src":"1536:6:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1527:3:92"},"nodeType":"YulFunctionCall","src":"1527:16:92"},{"kind":"number","nodeType":"YulLiteral","src":"1545:2:92","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1523:3:92"},"nodeType":"YulFunctionCall","src":"1523:25:92"},"nodeType":"YulIf","src":"1520:45:92"},{"nodeType":"YulAssignment","src":"1574:15:92","value":{"name":"offset","nodeType":"YulIdentifier","src":"1583:6:92"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"1574:5:92"}]}]},"name":"abi_decode_struct_SetupPayload_calldata","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"1484:6:92","type":""},{"name":"end","nodeType":"YulTypedName","src":"1492:3:92","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"1500:5:92","type":""}],"src":"1435:160:92"},{"body":{"nodeType":"YulBlock","src":"1720:321:92","statements":[{"body":{"nodeType":"YulBlock","src":"1766:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1775:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1778:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1768:6:92"},"nodeType":"YulFunctionCall","src":"1768:12:92"},"nodeType":"YulExpressionStatement","src":"1768:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1741:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"1750:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1737:3:92"},"nodeType":"YulFunctionCall","src":"1737:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"1762:2:92","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1733:3:92"},"nodeType":"YulFunctionCall","src":"1733:32:92"},"nodeType":"YulIf","src":"1730:52:92"},{"nodeType":"YulAssignment","src":"1791:39:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1820:9:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"1801:18:92"},"nodeType":"YulFunctionCall","src":"1801:29:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1791:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"1839:46:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1870:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1881:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1866:3:92"},"nodeType":"YulFunctionCall","src":"1866:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1853:12:92"},"nodeType":"YulFunctionCall","src":"1853:32:92"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1843:6:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"1928:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1937:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1940:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1930:6:92"},"nodeType":"YulFunctionCall","src":"1930:12:92"},"nodeType":"YulExpressionStatement","src":"1930:12:92"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1900:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"1908:18:92","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1897:2:92"},"nodeType":"YulFunctionCall","src":"1897:30:92"},"nodeType":"YulIf","src":"1894:50:92"},{"nodeType":"YulAssignment","src":"1953:82:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2007:9:92"},{"name":"offset","nodeType":"YulIdentifier","src":"2018:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2003:3:92"},"nodeType":"YulFunctionCall","src":"2003:22:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2027:7:92"}],"functionName":{"name":"abi_decode_struct_SetupPayload_calldata","nodeType":"YulIdentifier","src":"1963:39:92"},"nodeType":"YulFunctionCall","src":"1963:72:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1953:6:92"}]}]},"name":"abi_decode_tuple_t_addresst_struct$_SetupPayload_$14224_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1678:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1689:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1701:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1709:6:92","type":""}],"src":"1600:441:92"},{"body":{"nodeType":"YulBlock","src":"2078:95:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2095:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2102:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"2107:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2098:3:92"},"nodeType":"YulFunctionCall","src":"2098:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2088:6:92"},"nodeType":"YulFunctionCall","src":"2088:31:92"},"nodeType":"YulExpressionStatement","src":"2088:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2135:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"2138:4:92","type":"","value":"0x21"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2128:6:92"},"nodeType":"YulFunctionCall","src":"2128:15:92"},"nodeType":"YulExpressionStatement","src":"2128:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2159:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2162:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2152:6:92"},"nodeType":"YulFunctionCall","src":"2152:15:92"},"nodeType":"YulExpressionStatement","src":"2152:15:92"}]},"name":"panic_error_0x21","nodeType":"YulFunctionDefinition","src":"2046:127:92"},{"body":{"nodeType":"YulBlock","src":"2268:606:92","statements":[{"nodeType":"YulVariableDeclaration","src":"2278:23:92","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2294:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2288:5:92"},"nodeType":"YulFunctionCall","src":"2288:13:92"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"2282:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"2339:111:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2360:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2367:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"2372:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2363:3:92"},"nodeType":"YulFunctionCall","src":"2363:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2353:6:92"},"nodeType":"YulFunctionCall","src":"2353:31:92"},"nodeType":"YulExpressionStatement","src":"2353:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2404:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"2407:4:92","type":"","value":"0x21"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2397:6:92"},"nodeType":"YulFunctionCall","src":"2397:15:92"},"nodeType":"YulExpressionStatement","src":"2397:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2432:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2435:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2425:6:92"},"nodeType":"YulFunctionCall","src":"2425:15:92"},"nodeType":"YulExpressionStatement","src":"2425:15:92"}]},"condition":{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"2323:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"2327:1:92","type":"","value":"3"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2320:2:92"},"nodeType":"YulFunctionCall","src":"2320:9:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2313:6:92"},"nodeType":"YulFunctionCall","src":"2313:17:92"},"nodeType":"YulIf","src":"2310:140:92"},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2466:3:92"},{"name":"_1","nodeType":"YulIdentifier","src":"2471:2:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2459:6:92"},"nodeType":"YulFunctionCall","src":"2459:15:92"},"nodeType":"YulExpressionStatement","src":"2459:15:92"},{"nodeType":"YulVariableDeclaration","src":"2483:44:92","value":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2513:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"2521:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2509:3:92"},"nodeType":"YulFunctionCall","src":"2509:17:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2503:5:92"},"nodeType":"YulFunctionCall","src":"2503:24:92"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"2487:12:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2536:52:92","value":{"kind":"number","nodeType":"YulLiteral","src":"2546:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"2540:2:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2608:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"2613:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2604:3:92"},"nodeType":"YulFunctionCall","src":"2604:14:92"},{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"2624:12:92"},{"name":"_2","nodeType":"YulIdentifier","src":"2638:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2620:3:92"},"nodeType":"YulFunctionCall","src":"2620:21:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2597:6:92"},"nodeType":"YulFunctionCall","src":"2597:45:92"},"nodeType":"YulExpressionStatement","src":"2597:45:92"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2662:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"2667:4:92","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2658:3:92"},"nodeType":"YulFunctionCall","src":"2658:14:92"},{"arguments":[{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2688:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"2696:4:92","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2684:3:92"},"nodeType":"YulFunctionCall","src":"2684:17:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2678:5:92"},"nodeType":"YulFunctionCall","src":"2678:24:92"},{"name":"_2","nodeType":"YulIdentifier","src":"2704:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2674:3:92"},"nodeType":"YulFunctionCall","src":"2674:33:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2651:6:92"},"nodeType":"YulFunctionCall","src":"2651:57:92"},"nodeType":"YulExpressionStatement","src":"2651:57:92"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2728:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"2733:4:92","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2724:3:92"},"nodeType":"YulFunctionCall","src":"2724:14:92"},{"arguments":[{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2754:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"2762:4:92","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2750:3:92"},"nodeType":"YulFunctionCall","src":"2750:17:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2744:5:92"},"nodeType":"YulFunctionCall","src":"2744:24:92"},{"name":"_2","nodeType":"YulIdentifier","src":"2770:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2740:3:92"},"nodeType":"YulFunctionCall","src":"2740:33:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2717:6:92"},"nodeType":"YulFunctionCall","src":"2717:57:92"},"nodeType":"YulExpressionStatement","src":"2717:57:92"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2794:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"2799:4:92","type":"","value":"0x80"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2790:3:92"},"nodeType":"YulFunctionCall","src":"2790:14:92"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2816:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"2824:4:92","type":"","value":"0x80"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2812:3:92"},"nodeType":"YulFunctionCall","src":"2812:17:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2806:5:92"},"nodeType":"YulFunctionCall","src":"2806:24:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2783:6:92"},"nodeType":"YulFunctionCall","src":"2783:48:92"},"nodeType":"YulExpressionStatement","src":"2783:48:92"},{"nodeType":"YulAssignment","src":"2840:28:92","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2858:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"2863:4:92","type":"","value":"0xa0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2854:3:92"},"nodeType":"YulFunctionCall","src":"2854:14:92"},"variableNames":[{"name":"updatedPos","nodeType":"YulIdentifier","src":"2840:10:92"}]}]},"name":"abi_encodeUpdatedPos_struct_MultiTargetPermission","nodeType":"YulFunctionDefinition","parameters":[{"name":"value0","nodeType":"YulTypedName","src":"2237:6:92","type":""},{"name":"pos","nodeType":"YulTypedName","src":"2245:3:92","type":""}],"returnVariables":[{"name":"updatedPos","nodeType":"YulTypedName","src":"2253:10:92","type":""}],"src":"2178:696:92"},{"body":{"nodeType":"YulBlock","src":"3110:499:92","statements":[{"nodeType":"YulVariableDeclaration","src":"3120:12:92","value":{"kind":"number","nodeType":"YulLiteral","src":"3130:2:92","type":"","value":"32"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"3124:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3141:32:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3159:9:92"},{"name":"_1","nodeType":"YulIdentifier","src":"3170:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3155:3:92"},"nodeType":"YulFunctionCall","src":"3155:18:92"},"variables":[{"name":"tail_1","nodeType":"YulTypedName","src":"3145:6:92","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3189:9:92"},{"name":"_1","nodeType":"YulIdentifier","src":"3200:2:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3182:6:92"},"nodeType":"YulFunctionCall","src":"3182:21:92"},"nodeType":"YulExpressionStatement","src":"3182:21:92"},{"nodeType":"YulVariableDeclaration","src":"3212:17:92","value":{"name":"tail_1","nodeType":"YulIdentifier","src":"3223:6:92"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"3216:3:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3238:27:92","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3258:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3252:5:92"},"nodeType":"YulFunctionCall","src":"3252:13:92"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"3242:6:92","type":""}]},{"expression":{"arguments":[{"name":"tail_1","nodeType":"YulIdentifier","src":"3281:6:92"},{"name":"length","nodeType":"YulIdentifier","src":"3289:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3274:6:92"},"nodeType":"YulFunctionCall","src":"3274:22:92"},"nodeType":"YulExpressionStatement","src":"3274:22:92"},{"nodeType":"YulAssignment","src":"3305:25:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3316:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3327:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3312:3:92"},"nodeType":"YulFunctionCall","src":"3312:18:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"3305:3:92"}]},{"nodeType":"YulVariableDeclaration","src":"3339:29:92","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3357:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"3365:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3353:3:92"},"nodeType":"YulFunctionCall","src":"3353:15:92"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"3343:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3377:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"3386:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"3381:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"3445:138:92","statements":[{"nodeType":"YulAssignment","src":"3459:76:92","value":{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"3522:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3516:5:92"},"nodeType":"YulFunctionCall","src":"3516:13:92"},{"name":"pos","nodeType":"YulIdentifier","src":"3531:3:92"}],"functionName":{"name":"abi_encodeUpdatedPos_struct_MultiTargetPermission","nodeType":"YulIdentifier","src":"3466:49:92"},"nodeType":"YulFunctionCall","src":"3466:69:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"3459:3:92"}]},{"nodeType":"YulAssignment","src":"3548:25:92","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"3562:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"3570:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3558:3:92"},"nodeType":"YulFunctionCall","src":"3558:15:92"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"3548:6:92"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3407:1:92"},{"name":"length","nodeType":"YulIdentifier","src":"3410:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"3404:2:92"},"nodeType":"YulFunctionCall","src":"3404:13:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"3418:18:92","statements":[{"nodeType":"YulAssignment","src":"3420:14:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3429:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"3432:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3425:3:92"},"nodeType":"YulFunctionCall","src":"3425:9:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"3420:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"3400:3:92","statements":[]},"src":"3396:187:92"},{"nodeType":"YulAssignment","src":"3592:11:92","value":{"name":"pos","nodeType":"YulIdentifier","src":"3600:3:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3592:4:92"}]}]},"name":"abi_encode_tuple_t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3079:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3090:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3101:4:92","type":""}],"src":"2879:730:92"},{"body":{"nodeType":"YulBlock","src":"3750:465:92","statements":[{"body":{"nodeType":"YulBlock","src":"3796:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3805:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3808:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3798:6:92"},"nodeType":"YulFunctionCall","src":"3798:12:92"},"nodeType":"YulExpressionStatement","src":"3798:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3771:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"3780:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3767:3:92"},"nodeType":"YulFunctionCall","src":"3767:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"3792:2:92","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3763:3:92"},"nodeType":"YulFunctionCall","src":"3763:32:92"},"nodeType":"YulIf","src":"3760:52:92"},{"nodeType":"YulAssignment","src":"3821:39:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3850:9:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"3831:18:92"},"nodeType":"YulFunctionCall","src":"3831:29:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3821:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"3869:45:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3899:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3910:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3895:3:92"},"nodeType":"YulFunctionCall","src":"3895:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3882:12:92"},"nodeType":"YulFunctionCall","src":"3882:32:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"3873:5:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"3964:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3973:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3976:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3966:6:92"},"nodeType":"YulFunctionCall","src":"3966:12:92"},"nodeType":"YulExpressionStatement","src":"3966:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3936:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3947:5:92"},{"kind":"number","nodeType":"YulLiteral","src":"3954:6:92","type":"","value":"0xffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3943:3:92"},"nodeType":"YulFunctionCall","src":"3943:18:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"3933:2:92"},"nodeType":"YulFunctionCall","src":"3933:29:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3926:6:92"},"nodeType":"YulFunctionCall","src":"3926:37:92"},"nodeType":"YulIf","src":"3923:57:92"},{"nodeType":"YulAssignment","src":"3989:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"3999:5:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"3989:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"4013:46:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4044:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4055:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4040:3:92"},"nodeType":"YulFunctionCall","src":"4040:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4027:12:92"},"nodeType":"YulFunctionCall","src":"4027:32:92"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4017:6:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"4102:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4111:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4114:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4104:6:92"},"nodeType":"YulFunctionCall","src":"4104:12:92"},"nodeType":"YulExpressionStatement","src":"4104:12:92"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"4074:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"4082:18:92","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4071:2:92"},"nodeType":"YulFunctionCall","src":"4071:30:92"},"nodeType":"YulIf","src":"4068:50:92"},{"nodeType":"YulAssignment","src":"4127:82:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4181:9:92"},{"name":"offset","nodeType":"YulIdentifier","src":"4192:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4177:3:92"},"nodeType":"YulFunctionCall","src":"4177:22:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4201:7:92"}],"functionName":{"name":"abi_decode_struct_SetupPayload_calldata","nodeType":"YulIdentifier","src":"4137:39:92"},"nodeType":"YulFunctionCall","src":"4137:72:92"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"4127:6:92"}]}]},"name":"abi_decode_tuple_t_addresst_uint16t_struct$_SetupPayload_$14224_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3700:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3711:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3723:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"3731:6:92","type":""},{"name":"value2","nodeType":"YulTypedName","src":"3739:6:92","type":""}],"src":"3614:601:92"},{"body":{"nodeType":"YulBlock","src":"4288:1094:92","statements":[{"nodeType":"YulVariableDeclaration","src":"4298:26:92","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4314:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"4319:4:92","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4310:3:92"},"nodeType":"YulFunctionCall","src":"4310:14:92"},"variables":[{"name":"tail","nodeType":"YulTypedName","src":"4302:4:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4333:32:92","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4359:5:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4353:5:92"},"nodeType":"YulFunctionCall","src":"4353:12:92"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"4337:12:92","type":""}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4381:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"4386:4:92","type":"","value":"0x40"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4374:6:92"},"nodeType":"YulFunctionCall","src":"4374:17:92"},"nodeType":"YulExpressionStatement","src":"4374:17:92"},{"nodeType":"YulVariableDeclaration","src":"4400:17:92","value":{"name":"tail","nodeType":"YulIdentifier","src":"4413:4:92"},"variables":[{"name":"pos_1","nodeType":"YulTypedName","src":"4404:5:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4426:33:92","value":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"4446:12:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4440:5:92"},"nodeType":"YulFunctionCall","src":"4440:19:92"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"4430:6:92","type":""}]},{"expression":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"4475:4:92"},{"name":"length","nodeType":"YulIdentifier","src":"4481:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4468:6:92"},"nodeType":"YulFunctionCall","src":"4468:20:92"},"nodeType":"YulExpressionStatement","src":"4468:20:92"},{"nodeType":"YulAssignment","src":"4497:21:92","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4510:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"4515:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4506:3:92"},"nodeType":"YulFunctionCall","src":"4506:12:92"},"variableNames":[{"name":"pos_1","nodeType":"YulIdentifier","src":"4497:5:92"}]},{"nodeType":"YulVariableDeclaration","src":"4527:14:92","value":{"kind":"number","nodeType":"YulLiteral","src":"4537:4:92","type":"","value":"0x20"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"4531:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4550:35:92","value":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"4568:12:92"},{"name":"_1","nodeType":"YulIdentifier","src":"4582:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4564:3:92"},"nodeType":"YulFunctionCall","src":"4564:21:92"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"4554:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4594:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"4603:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"4598:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"4662:175:92","statements":[{"expression":{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"4683:5:92"},{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"4700:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4694:5:92"},"nodeType":"YulFunctionCall","src":"4694:13:92"},{"kind":"number","nodeType":"YulLiteral","src":"4709:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4690:3:92"},"nodeType":"YulFunctionCall","src":"4690:62:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4676:6:92"},"nodeType":"YulFunctionCall","src":"4676:77:92"},"nodeType":"YulExpressionStatement","src":"4676:77:92"},{"nodeType":"YulAssignment","src":"4766:23:92","value":{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"4779:5:92"},{"name":"_1","nodeType":"YulIdentifier","src":"4786:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4775:3:92"},"nodeType":"YulFunctionCall","src":"4775:14:92"},"variableNames":[{"name":"pos_1","nodeType":"YulIdentifier","src":"4766:5:92"}]},{"nodeType":"YulAssignment","src":"4802:25:92","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"4816:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"4824:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4812:3:92"},"nodeType":"YulFunctionCall","src":"4812:15:92"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"4802:6:92"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"4624:1:92"},{"name":"length","nodeType":"YulIdentifier","src":"4627:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"4621:2:92"},"nodeType":"YulFunctionCall","src":"4621:13:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"4635:18:92","statements":[{"nodeType":"YulAssignment","src":"4637:14:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"4646:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"4649:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4642:3:92"},"nodeType":"YulFunctionCall","src":"4642:9:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"4637:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"4617:3:92","statements":[]},"src":"4613:224:92"},{"nodeType":"YulVariableDeclaration","src":"4846:43:92","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4878:5:92"},{"name":"_1","nodeType":"YulIdentifier","src":"4885:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4874:3:92"},"nodeType":"YulFunctionCall","src":"4874:14:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4868:5:92"},"nodeType":"YulFunctionCall","src":"4868:21:92"},"variables":[{"name":"memberValue0_1","nodeType":"YulTypedName","src":"4850:14:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4909:3:92"},{"name":"_1","nodeType":"YulIdentifier","src":"4914:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4905:3:92"},"nodeType":"YulFunctionCall","src":"4905:12:92"},{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"4923:5:92"},{"name":"pos","nodeType":"YulIdentifier","src":"4930:3:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4919:3:92"},"nodeType":"YulFunctionCall","src":"4919:15:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4898:6:92"},"nodeType":"YulFunctionCall","src":"4898:37:92"},"nodeType":"YulExpressionStatement","src":"4898:37:92"},{"nodeType":"YulVariableDeclaration","src":"4944:18:92","value":{"name":"pos_1","nodeType":"YulIdentifier","src":"4957:5:92"},"variables":[{"name":"pos_2","nodeType":"YulTypedName","src":"4948:5:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4971:37:92","value":{"arguments":[{"name":"memberValue0_1","nodeType":"YulIdentifier","src":"4993:14:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4987:5:92"},"nodeType":"YulFunctionCall","src":"4987:21:92"},"variables":[{"name":"length_1","nodeType":"YulTypedName","src":"4975:8:92","type":""}]},{"expression":{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5024:5:92"},{"name":"length_1","nodeType":"YulIdentifier","src":"5031:8:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5017:6:92"},"nodeType":"YulFunctionCall","src":"5017:23:92"},"nodeType":"YulExpressionStatement","src":"5017:23:92"},{"nodeType":"YulAssignment","src":"5049:23:92","value":{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5062:5:92"},{"name":"_1","nodeType":"YulIdentifier","src":"5069:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5058:3:92"},"nodeType":"YulFunctionCall","src":"5058:14:92"},"variableNames":[{"name":"pos_2","nodeType":"YulIdentifier","src":"5049:5:92"}]},{"nodeType":"YulVariableDeclaration","src":"5081:39:92","value":{"arguments":[{"name":"memberValue0_1","nodeType":"YulIdentifier","src":"5101:14:92"},{"name":"_1","nodeType":"YulIdentifier","src":"5117:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5097:3:92"},"nodeType":"YulFunctionCall","src":"5097:23:92"},"variables":[{"name":"srcPtr_1","nodeType":"YulTypedName","src":"5085:8:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5129:12:92","value":{"kind":"number","nodeType":"YulLiteral","src":"5140:1:92","type":"","value":"0"},"variables":[{"name":"i_1","nodeType":"YulTypedName","src":"5133:3:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"5207:148:92","statements":[{"nodeType":"YulAssignment","src":"5221:82:92","value":{"arguments":[{"arguments":[{"name":"srcPtr_1","nodeType":"YulIdentifier","src":"5286:8:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5280:5:92"},"nodeType":"YulFunctionCall","src":"5280:15:92"},{"name":"pos_2","nodeType":"YulIdentifier","src":"5297:5:92"}],"functionName":{"name":"abi_encodeUpdatedPos_struct_MultiTargetPermission","nodeType":"YulIdentifier","src":"5230:49:92"},"nodeType":"YulFunctionCall","src":"5230:73:92"},"variableNames":[{"name":"pos_2","nodeType":"YulIdentifier","src":"5221:5:92"}]},{"nodeType":"YulAssignment","src":"5316:29:92","value":{"arguments":[{"name":"srcPtr_1","nodeType":"YulIdentifier","src":"5332:8:92"},{"name":"_1","nodeType":"YulIdentifier","src":"5342:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5328:3:92"},"nodeType":"YulFunctionCall","src":"5328:17:92"},"variableNames":[{"name":"srcPtr_1","nodeType":"YulIdentifier","src":"5316:8:92"}]}]},"condition":{"arguments":[{"name":"i_1","nodeType":"YulIdentifier","src":"5161:3:92"},{"name":"length_1","nodeType":"YulIdentifier","src":"5166:8:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"5158:2:92"},"nodeType":"YulFunctionCall","src":"5158:17:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"5176:22:92","statements":[{"nodeType":"YulAssignment","src":"5178:18:92","value":{"arguments":[{"name":"i_1","nodeType":"YulIdentifier","src":"5189:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"5194:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5185:3:92"},"nodeType":"YulFunctionCall","src":"5185:11:92"},"variableNames":[{"name":"i_1","nodeType":"YulIdentifier","src":"5178:3:92"}]}]},"pre":{"nodeType":"YulBlock","src":"5154:3:92","statements":[]},"src":"5150:205:92"},{"nodeType":"YulAssignment","src":"5364:12:92","value":{"name":"pos_2","nodeType":"YulIdentifier","src":"5371:5:92"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"5364:3:92"}]}]},"name":"abi_encode_struct_PreparedSetupData","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"4265:5:92","type":""},{"name":"pos","nodeType":"YulTypedName","src":"4272:3:92","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"4280:3:92","type":""}],"src":"4220:1162:92"},{"body":{"nodeType":"YulBlock","src":"5606:542:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5623:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5634:2:92","type":"","value":"64"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5616:6:92"},"nodeType":"YulFunctionCall","src":"5616:21:92"},"nodeType":"YulExpressionStatement","src":"5616:21:92"},{"nodeType":"YulVariableDeclaration","src":"5646:27:92","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5666:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5660:5:92"},"nodeType":"YulFunctionCall","src":"5660:13:92"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"5650:6:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5693:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5704:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5689:3:92"},"nodeType":"YulFunctionCall","src":"5689:18:92"},{"name":"length","nodeType":"YulIdentifier","src":"5709:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5682:6:92"},"nodeType":"YulFunctionCall","src":"5682:34:92"},"nodeType":"YulExpressionStatement","src":"5682:34:92"},{"nodeType":"YulVariableDeclaration","src":"5725:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"5734:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"5729:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"5796:92:92","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5825:9:92"},{"name":"i","nodeType":"YulIdentifier","src":"5836:1:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5821:3:92"},"nodeType":"YulFunctionCall","src":"5821:17:92"},{"kind":"number","nodeType":"YulLiteral","src":"5840:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5817:3:92"},"nodeType":"YulFunctionCall","src":"5817:26:92"},{"arguments":[{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5859:6:92"},{"name":"i","nodeType":"YulIdentifier","src":"5867:1:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5855:3:92"},"nodeType":"YulFunctionCall","src":"5855:14:92"},{"kind":"number","nodeType":"YulLiteral","src":"5871:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5851:3:92"},"nodeType":"YulFunctionCall","src":"5851:25:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5845:5:92"},"nodeType":"YulFunctionCall","src":"5845:32:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5810:6:92"},"nodeType":"YulFunctionCall","src":"5810:68:92"},"nodeType":"YulExpressionStatement","src":"5810:68:92"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"5755:1:92"},{"name":"length","nodeType":"YulIdentifier","src":"5758:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"5752:2:92"},"nodeType":"YulFunctionCall","src":"5752:13:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"5766:21:92","statements":[{"nodeType":"YulAssignment","src":"5768:17:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"5777:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"5780:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5773:3:92"},"nodeType":"YulFunctionCall","src":"5773:12:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"5768:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"5748:3:92","statements":[]},"src":"5744:144:92"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5912:9:92"},{"name":"length","nodeType":"YulIdentifier","src":"5923:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5908:3:92"},"nodeType":"YulFunctionCall","src":"5908:22:92"},{"kind":"number","nodeType":"YulLiteral","src":"5932:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5904:3:92"},"nodeType":"YulFunctionCall","src":"5904:31:92"},{"kind":"number","nodeType":"YulLiteral","src":"5937:1:92","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5897:6:92"},"nodeType":"YulFunctionCall","src":"5897:42:92"},"nodeType":"YulExpressionStatement","src":"5897:42:92"},{"nodeType":"YulVariableDeclaration","src":"5948:55:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5962:9:92"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"5981:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"5989:2:92","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5977:3:92"},"nodeType":"YulFunctionCall","src":"5977:15:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5998:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"5994:3:92"},"nodeType":"YulFunctionCall","src":"5994:7:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5973:3:92"},"nodeType":"YulFunctionCall","src":"5973:29:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5958:3:92"},"nodeType":"YulFunctionCall","src":"5958:45:92"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"5952:2:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6023:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6034:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6019:3:92"},"nodeType":"YulFunctionCall","src":"6019:20:92"},{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"6049:2:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"6053:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6045:3:92"},"nodeType":"YulFunctionCall","src":"6045:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"6065:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6041:3:92"},"nodeType":"YulFunctionCall","src":"6041:27:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6012:6:92"},"nodeType":"YulFunctionCall","src":"6012:57:92"},"nodeType":"YulExpressionStatement","src":"6012:57:92"},{"nodeType":"YulAssignment","src":"6078:64:92","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"6122:6:92"},{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"6134:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"6138:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6130:3:92"},"nodeType":"YulFunctionCall","src":"6130:11:92"}],"functionName":{"name":"abi_encode_struct_PreparedSetupData","nodeType":"YulIdentifier","src":"6086:35:92"},"nodeType":"YulFunctionCall","src":"6086:56:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6078:4:92"}]}]},"name":"abi_encode_tuple_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$14216_memory_ptr__to_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$14216_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5567:9:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"5578:6:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"5586:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5597:4:92","type":""}],"src":"5387:761:92"},{"body":{"nodeType":"YulBlock","src":"6185:95:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6202:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6209:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"6214:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"6205:3:92"},"nodeType":"YulFunctionCall","src":"6205:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6195:6:92"},"nodeType":"YulFunctionCall","src":"6195:31:92"},"nodeType":"YulExpressionStatement","src":"6195:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6242:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"6245:4:92","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6235:6:92"},"nodeType":"YulFunctionCall","src":"6235:15:92"},"nodeType":"YulExpressionStatement","src":"6235:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6266:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6269:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6259:6:92"},"nodeType":"YulFunctionCall","src":"6259:15:92"},"nodeType":"YulExpressionStatement","src":"6259:15:92"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"6153:127:92"},{"body":{"nodeType":"YulBlock","src":"6381:899:92","statements":[{"body":{"nodeType":"YulBlock","src":"6427:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6436:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6439:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6429:6:92"},"nodeType":"YulFunctionCall","src":"6429:12:92"},"nodeType":"YulExpressionStatement","src":"6429:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"6402:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"6411:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6398:3:92"},"nodeType":"YulFunctionCall","src":"6398:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"6423:2:92","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6394:3:92"},"nodeType":"YulFunctionCall","src":"6394:32:92"},"nodeType":"YulIf","src":"6391:52:92"},{"nodeType":"YulAssignment","src":"6452:39:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6481:9:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"6462:18:92"},"nodeType":"YulFunctionCall","src":"6462:29:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"6452:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"6500:46:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6531:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6542:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6527:3:92"},"nodeType":"YulFunctionCall","src":"6527:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6514:12:92"},"nodeType":"YulFunctionCall","src":"6514:32:92"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"6504:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"6555:28:92","value":{"kind":"number","nodeType":"YulLiteral","src":"6565:18:92","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"6559:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"6610:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6619:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6622:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6612:6:92"},"nodeType":"YulFunctionCall","src":"6612:12:92"},"nodeType":"YulExpressionStatement","src":"6612:12:92"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"6598:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"6606:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6595:2:92"},"nodeType":"YulFunctionCall","src":"6595:14:92"},"nodeType":"YulIf","src":"6592:34:92"},{"nodeType":"YulVariableDeclaration","src":"6635:32:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6649:9:92"},{"name":"offset","nodeType":"YulIdentifier","src":"6660:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6645:3:92"},"nodeType":"YulFunctionCall","src":"6645:22:92"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"6639:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"6715:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6724:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6727:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6717:6:92"},"nodeType":"YulFunctionCall","src":"6717:12:92"},"nodeType":"YulExpressionStatement","src":"6717:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"6694:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"6698:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6690:3:92"},"nodeType":"YulFunctionCall","src":"6690:13:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"6705:7:92"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6686:3:92"},"nodeType":"YulFunctionCall","src":"6686:27:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"6679:6:92"},"nodeType":"YulFunctionCall","src":"6679:35:92"},"nodeType":"YulIf","src":"6676:55:92"},{"nodeType":"YulVariableDeclaration","src":"6740:26:92","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"6763:2:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6750:12:92"},"nodeType":"YulFunctionCall","src":"6750:16:92"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"6744:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"6789:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"6791:16:92"},"nodeType":"YulFunctionCall","src":"6791:18:92"},"nodeType":"YulExpressionStatement","src":"6791:18:92"}]},"condition":{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"6781:2:92"},{"name":"_1","nodeType":"YulIdentifier","src":"6785:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6778:2:92"},"nodeType":"YulFunctionCall","src":"6778:10:92"},"nodeType":"YulIf","src":"6775:36:92"},{"nodeType":"YulVariableDeclaration","src":"6820:17:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6834:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"6830:3:92"},"nodeType":"YulFunctionCall","src":"6830:7:92"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"6824:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"6846:23:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6866:2:92","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6860:5:92"},"nodeType":"YulFunctionCall","src":"6860:9:92"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"6850:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"6878:71:92","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"6900:6:92"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"6924:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"6928:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6920:3:92"},"nodeType":"YulFunctionCall","src":"6920:13:92"},{"name":"_4","nodeType":"YulIdentifier","src":"6935:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"6916:3:92"},"nodeType":"YulFunctionCall","src":"6916:22:92"},{"kind":"number","nodeType":"YulLiteral","src":"6940:2:92","type":"","value":"63"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6912:3:92"},"nodeType":"YulFunctionCall","src":"6912:31:92"},{"name":"_4","nodeType":"YulIdentifier","src":"6945:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"6908:3:92"},"nodeType":"YulFunctionCall","src":"6908:40:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6896:3:92"},"nodeType":"YulFunctionCall","src":"6896:53:92"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"6882:10:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"7008:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"7010:16:92"},"nodeType":"YulFunctionCall","src":"7010:18:92"},"nodeType":"YulExpressionStatement","src":"7010:18:92"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"6967:10:92"},{"name":"_1","nodeType":"YulIdentifier","src":"6979:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6964:2:92"},"nodeType":"YulFunctionCall","src":"6964:18:92"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"6987:10:92"},{"name":"memPtr","nodeType":"YulIdentifier","src":"6999:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"6984:2:92"},"nodeType":"YulFunctionCall","src":"6984:22:92"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"6961:2:92"},"nodeType":"YulFunctionCall","src":"6961:46:92"},"nodeType":"YulIf","src":"6958:72:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7046:2:92","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"7050:10:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7039:6:92"},"nodeType":"YulFunctionCall","src":"7039:22:92"},"nodeType":"YulExpressionStatement","src":"7039:22:92"},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7077:6:92"},{"name":"_3","nodeType":"YulIdentifier","src":"7085:2:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7070:6:92"},"nodeType":"YulFunctionCall","src":"7070:18:92"},"nodeType":"YulExpressionStatement","src":"7070:18:92"},{"body":{"nodeType":"YulBlock","src":"7134:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7143:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7146:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7136:6:92"},"nodeType":"YulFunctionCall","src":"7136:12:92"},"nodeType":"YulExpressionStatement","src":"7136:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"7111:2:92"},{"name":"_3","nodeType":"YulIdentifier","src":"7115:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7107:3:92"},"nodeType":"YulFunctionCall","src":"7107:11:92"},{"kind":"number","nodeType":"YulLiteral","src":"7120:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7103:3:92"},"nodeType":"YulFunctionCall","src":"7103:20:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"7125:7:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"7100:2:92"},"nodeType":"YulFunctionCall","src":"7100:33:92"},"nodeType":"YulIf","src":"7097:53:92"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7176:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"7184:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7172:3:92"},"nodeType":"YulFunctionCall","src":"7172:15:92"},{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"7193:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"7197:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7189:3:92"},"nodeType":"YulFunctionCall","src":"7189:11:92"},{"name":"_3","nodeType":"YulIdentifier","src":"7202:2:92"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"7159:12:92"},"nodeType":"YulFunctionCall","src":"7159:46:92"},"nodeType":"YulExpressionStatement","src":"7159:46:92"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7229:6:92"},{"name":"_3","nodeType":"YulIdentifier","src":"7237:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7225:3:92"},"nodeType":"YulFunctionCall","src":"7225:15:92"},{"kind":"number","nodeType":"YulLiteral","src":"7242:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7221:3:92"},"nodeType":"YulFunctionCall","src":"7221:24:92"},{"kind":"number","nodeType":"YulLiteral","src":"7247:1:92","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7214:6:92"},"nodeType":"YulFunctionCall","src":"7214:35:92"},"nodeType":"YulExpressionStatement","src":"7214:35:92"},{"nodeType":"YulAssignment","src":"7258:16:92","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"7268:6:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"7258:6:92"}]}]},"name":"abi_decode_tuple_t_addresst_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6339:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"6350:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"6362:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"6370:6:92","type":""}],"src":"6285:995:92"},{"body":{"nodeType":"YulBlock","src":"7486:209:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7503:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7518:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"7526:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7514:3:92"},"nodeType":"YulFunctionCall","src":"7514:55:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7496:6:92"},"nodeType":"YulFunctionCall","src":"7496:74:92"},"nodeType":"YulExpressionStatement","src":"7496:74:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7590:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7601:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7586:3:92"},"nodeType":"YulFunctionCall","src":"7586:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"7606:2:92","type":"","value":"64"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7579:6:92"},"nodeType":"YulFunctionCall","src":"7579:30:92"},"nodeType":"YulExpressionStatement","src":"7579:30:92"},{"nodeType":"YulAssignment","src":"7618:71:92","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"7662:6:92"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7674:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7685:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7670:3:92"},"nodeType":"YulFunctionCall","src":"7670:18:92"}],"functionName":{"name":"abi_encode_struct_PreparedSetupData","nodeType":"YulIdentifier","src":"7626:35:92"},"nodeType":"YulFunctionCall","src":"7626:63:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7618:4:92"}]}]},"name":"abi_encode_tuple_t_address_t_struct$_PreparedSetupData_$14216_memory_ptr__to_t_address_t_struct$_PreparedSetupData_$14216_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7447:9:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"7458:6:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"7466:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7477:4:92","type":""}],"src":"7285:410:92"},{"body":{"nodeType":"YulBlock","src":"7815:125:92","statements":[{"nodeType":"YulAssignment","src":"7825:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7837:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7848:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7833:3:92"},"nodeType":"YulFunctionCall","src":"7833:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7825:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7867:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7882:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"7890:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7878:3:92"},"nodeType":"YulFunctionCall","src":"7878:55:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7860:6:92"},"nodeType":"YulFunctionCall","src":"7860:74:92"},"nodeType":"YulExpressionStatement","src":"7860:74:92"}]},"name":"abi_encode_tuple_t_contract$_IDAO_$10865__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7784:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"7795:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7806:4:92","type":""}],"src":"7700:240:92"},{"body":{"nodeType":"YulBlock","src":"7977:95:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7994:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8001:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"8006:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"7997:3:92"},"nodeType":"YulFunctionCall","src":"7997:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7987:6:92"},"nodeType":"YulFunctionCall","src":"7987:31:92"},"nodeType":"YulExpressionStatement","src":"7987:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8034:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"8037:4:92","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8027:6:92"},"nodeType":"YulFunctionCall","src":"8027:15:92"},"nodeType":"YulExpressionStatement","src":"8027:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8058:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8061:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8051:6:92"},"nodeType":"YulFunctionCall","src":"8051:15:92"},"nodeType":"YulExpressionStatement","src":"8051:15:92"}]},"name":"panic_error_0x11","nodeType":"YulFunctionDefinition","src":"7945:127:92"},{"body":{"nodeType":"YulBlock","src":"8126:159:92","statements":[{"nodeType":"YulVariableDeclaration","src":"8136:52:92","value":{"kind":"number","nodeType":"YulLiteral","src":"8146:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"8140:2:92","type":""}]},{"nodeType":"YulAssignment","src":"8197:35:92","value":{"arguments":[{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"8213:1:92"},{"name":"_1","nodeType":"YulIdentifier","src":"8216:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8209:3:92"},"nodeType":"YulFunctionCall","src":"8209:10:92"},{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"8225:1:92"},{"name":"_1","nodeType":"YulIdentifier","src":"8228:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8221:3:92"},"nodeType":"YulFunctionCall","src":"8221:10:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"8205:3:92"},"nodeType":"YulFunctionCall","src":"8205:27:92"},"variableNames":[{"name":"diff","nodeType":"YulIdentifier","src":"8197:4:92"}]},{"body":{"nodeType":"YulBlock","src":"8257:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"8259:16:92"},"nodeType":"YulFunctionCall","src":"8259:18:92"},"nodeType":"YulExpressionStatement","src":"8259:18:92"}]},"condition":{"arguments":[{"name":"diff","nodeType":"YulIdentifier","src":"8247:4:92"},{"name":"_1","nodeType":"YulIdentifier","src":"8253:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"8244:2:92"},"nodeType":"YulFunctionCall","src":"8244:12:92"},"nodeType":"YulIf","src":"8241:38:92"}]},"name":"checked_sub_t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"8108:1:92","type":""},{"name":"y","nodeType":"YulTypedName","src":"8111:1:92","type":""}],"returnVariables":[{"name":"diff","nodeType":"YulTypedName","src":"8117:4:92","type":""}],"src":"8077:208:92"},{"body":{"nodeType":"YulBlock","src":"8322:95:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8339:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8346:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"8351:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"8342:3:92"},"nodeType":"YulFunctionCall","src":"8342:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8332:6:92"},"nodeType":"YulFunctionCall","src":"8332:31:92"},"nodeType":"YulExpressionStatement","src":"8332:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8379:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"8382:4:92","type":"","value":"0x32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8372:6:92"},"nodeType":"YulFunctionCall","src":"8372:15:92"},"nodeType":"YulExpressionStatement","src":"8372:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8403:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8406:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8396:6:92"},"nodeType":"YulFunctionCall","src":"8396:15:92"},"nodeType":"YulExpressionStatement","src":"8396:15:92"}]},"name":"panic_error_0x32","nodeType":"YulFunctionDefinition","src":"8290:127:92"},{"body":{"nodeType":"YulBlock","src":"8469:187:92","statements":[{"nodeType":"YulVariableDeclaration","src":"8479:52:92","value":{"kind":"number","nodeType":"YulLiteral","src":"8489:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"8483:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"8540:29:92","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8559:5:92"},{"name":"_1","nodeType":"YulIdentifier","src":"8566:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8555:3:92"},"nodeType":"YulFunctionCall","src":"8555:14:92"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"8544:7:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"8597:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"8599:16:92"},"nodeType":"YulFunctionCall","src":"8599:18:92"},"nodeType":"YulExpressionStatement","src":"8599:18:92"}]},"condition":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"8584:7:92"},{"name":"_1","nodeType":"YulIdentifier","src":"8593:2:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"8581:2:92"},"nodeType":"YulFunctionCall","src":"8581:15:92"},"nodeType":"YulIf","src":"8578:41:92"},{"nodeType":"YulAssignment","src":"8628:22:92","value":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"8639:7:92"},{"kind":"number","nodeType":"YulLiteral","src":"8648:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8635:3:92"},"nodeType":"YulFunctionCall","src":"8635:15:92"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"8628:3:92"}]}]},"name":"increment_t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"8451:5:92","type":""}],"returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"8461:3:92","type":""}],"src":"8422:234:92"}]},"contents":"{\n { }\n function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n if iszero(eq(value, and(value, shl(224, 0xffffffff)))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 96)\n let pos := headStart\n pos := headStart\n let srcPtr := value0\n let i := 0\n for { } lt(i, 0x03) { i := add(i, 1) }\n {\n mstore(pos, and(mload(srcPtr), 0xff))\n let _1 := 0x20\n pos := add(pos, _1)\n srcPtr := add(srcPtr, _1)\n }\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_decode_address(offset) -> value\n {\n value := calldataload(offset)\n if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n }\n function abi_decode_struct_SetupPayload_calldata(offset, end) -> value\n {\n if slt(sub(end, offset), 96) { revert(0, 0) }\n value := offset\n }\n function abi_decode_tuple_t_addresst_struct$_SetupPayload_$14224_calldata_ptr(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n let offset := calldataload(add(headStart, 32))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n value1 := abi_decode_struct_SetupPayload_calldata(add(headStart, offset), dataEnd)\n }\n function panic_error_0x21()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x21)\n revert(0, 0x24)\n }\n function abi_encodeUpdatedPos_struct_MultiTargetPermission(value0, pos) -> updatedPos\n {\n let _1 := mload(value0)\n if iszero(lt(_1, 3))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x21)\n revert(0, 0x24)\n }\n mstore(pos, _1)\n let memberValue0 := mload(add(value0, 0x20))\n let _2 := 0xffffffffffffffffffffffffffffffffffffffff\n mstore(add(pos, 0x20), and(memberValue0, _2))\n mstore(add(pos, 0x40), and(mload(add(value0, 0x40)), _2))\n mstore(add(pos, 0x60), and(mload(add(value0, 0x60)), _2))\n mstore(add(pos, 0x80), mload(add(value0, 0x80)))\n updatedPos := add(pos, 0xa0)\n }\n function abi_encode_tuple_t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n let _1 := 32\n let tail_1 := add(headStart, _1)\n mstore(headStart, _1)\n let pos := tail_1\n let length := mload(value0)\n mstore(tail_1, length)\n pos := add(headStart, 64)\n let srcPtr := add(value0, _1)\n let i := 0\n for { } lt(i, length) { i := add(i, 1) }\n {\n pos := abi_encodeUpdatedPos_struct_MultiTargetPermission(mload(srcPtr), pos)\n srcPtr := add(srcPtr, _1)\n }\n tail := pos\n }\n function abi_decode_tuple_t_addresst_uint16t_struct$_SetupPayload_$14224_calldata_ptr(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n let value := calldataload(add(headStart, 32))\n if iszero(eq(value, and(value, 0xffff))) { revert(0, 0) }\n value1 := value\n let offset := calldataload(add(headStart, 64))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n value2 := abi_decode_struct_SetupPayload_calldata(add(headStart, offset), dataEnd)\n }\n function abi_encode_struct_PreparedSetupData(value, pos) -> end\n {\n let tail := add(pos, 0x40)\n let memberValue0 := mload(value)\n mstore(pos, 0x40)\n let pos_1 := tail\n let length := mload(memberValue0)\n mstore(tail, length)\n pos_1 := add(pos, 96)\n let _1 := 0x20\n let srcPtr := add(memberValue0, _1)\n let i := 0\n for { } lt(i, length) { i := add(i, 1) }\n {\n mstore(pos_1, and(mload(srcPtr), 0xffffffffffffffffffffffffffffffffffffffff))\n pos_1 := add(pos_1, _1)\n srcPtr := add(srcPtr, _1)\n }\n let memberValue0_1 := mload(add(value, _1))\n mstore(add(pos, _1), sub(pos_1, pos))\n let pos_2 := pos_1\n let length_1 := mload(memberValue0_1)\n mstore(pos_1, length_1)\n pos_2 := add(pos_1, _1)\n let srcPtr_1 := add(memberValue0_1, _1)\n let i_1 := 0\n for { } lt(i_1, length_1) { i_1 := add(i_1, 1) }\n {\n pos_2 := abi_encodeUpdatedPos_struct_MultiTargetPermission(mload(srcPtr_1), pos_2)\n srcPtr_1 := add(srcPtr_1, _1)\n }\n end := pos_2\n }\n function abi_encode_tuple_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$14216_memory_ptr__to_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$14216_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n {\n mstore(headStart, 64)\n let length := mload(value0)\n mstore(add(headStart, 64), length)\n let i := 0\n for { } lt(i, length) { i := add(i, 0x20) }\n {\n mstore(add(add(headStart, i), 96), mload(add(add(value0, i), 0x20)))\n }\n mstore(add(add(headStart, length), 96), 0)\n let _1 := add(headStart, and(add(length, 31), not(31)))\n mstore(add(headStart, 0x20), add(sub(_1, headStart), 96))\n tail := abi_encode_struct_PreparedSetupData(value1, add(_1, 96))\n }\n function panic_error_0x41()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function abi_decode_tuple_t_addresst_bytes_memory_ptr(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n let offset := calldataload(add(headStart, 32))\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n let _2 := add(headStart, offset)\n if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n let _3 := calldataload(_2)\n if gt(_3, _1) { panic_error_0x41() }\n let _4 := not(31)\n let memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n mstore(memPtr, _3)\n if gt(add(add(_2, _3), 32), dataEnd) { revert(0, 0) }\n calldatacopy(add(memPtr, 32), add(_2, 32), _3)\n mstore(add(add(memPtr, _3), 32), 0)\n value1 := memPtr\n }\n function abi_encode_tuple_t_address_t_struct$_PreparedSetupData_$14216_memory_ptr__to_t_address_t_struct$_PreparedSetupData_$14216_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n {\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n mstore(add(headStart, 32), 64)\n tail := abi_encode_struct_PreparedSetupData(value1, add(headStart, 64))\n }\n function abi_encode_tuple_t_contract$_IDAO_$10865__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function panic_error_0x11()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n function checked_sub_t_uint160(x, y) -> diff\n {\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n diff := sub(and(x, _1), and(y, _1))\n if gt(diff, _1) { panic_error_0x11() }\n }\n function panic_error_0x32()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n function increment_t_uint160(value) -> ret\n {\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n let value_1 := and(value, _1)\n if eq(value_1, _1) { panic_error_0x11() }\n ret := add(value_1, 1)\n }\n}","id":92,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{"14293":[{"length":32,"start":193}]},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100725760003560e01c80639cb0a124116100505780639cb0a124146100eb578063a8a9c29e1461010b578063f10832f11461012c57600080fd5b806301ffc9a7146100775780632ae9c6001461009f5780635c60da1b146100b4575b600080fd5b61008a610085366004610501565b61014d565b60405190151581526020015b60405180910390f35b6100a761019e565b604051610096919061052b565b6040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152602001610096565b6100fe6100f936600461058d565b6101c8565b6040516100969190610657565b61011e6101193660046106a0565b6101de565b60405161009692919061079a565b61013f61013a366004610815565b610216565b6040516100969291906108d7565b60006001600160e01b0319821663099718b560e41b148061017d57506001600160e01b03198216621574e360e91b145b8061019857506301ffc9a760e01b6001600160e01b03198316145b92915050565b6101a66104d6565b5060408051606081018252600181526004602082015260009181019190915290565b60606101d76000600180610298565b9392505050565b60606101fd604051806040016040528060608152602001606081525090565b60405163a112810160e01b815260040160405180910390fd5b6000610235604051806040016040528060608152602001606081525090565b83604051610242906104f4565b6001600160a01b039091168152602001604051809103906000f08015801561026e573d6000803e3d6000fd5b50915061027b600161041d565b815261028a6000600181610298565b602082015290939092509050565b6060826001600160a01b0316846001600160a01b031611156102cd57604051633a4013cd60e21b815260040160405180910390fd5b6102d78484610917565b6001600160a01b031667ffffffffffffffff8111156102f8576102f86107ff565b60405190808252806020026020018201604052801561035157816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282526000199092019101816103165790505b509050835b836001600160a01b0316816001600160a01b03161015610415576040518060a0016040528084600281111561038d5761038d6105db565b81526001600160a01b038316602082018190526040820152600060608201527fa280eec51ab8e1bc4b6b0c1b7f1bde785761b787a49db404e3e9338ed9b016ef608090910152826103de8784610917565b6001600160a01b0316815181106103f7576103f761093e565b6020026020010181905250808061040d90610954565b915050610356565b509392505050565b6060816001600160a01b031667ffffffffffffffff811115610441576104416107ff565b60405190808252806020026020018201604052801561046a578160200160208202803683370190505b50905060005b826001600160a01b0316816001600160a01b031610156104d0578082826001600160a01b0316815181106104a6576104a661093e565b6001600160a01b0390921660209283029190910190910152806104c881610954565b915050610470565b50919050565b60405180606001604052806003906020820280368337509192915050565b6102d58061097b83390190565b60006020828403121561051357600080fd5b81356001600160e01b0319811681146101d757600080fd5b60608101818360005b600381101561055657815160ff16835260209283019290910190600101610534565b50505092915050565b80356001600160a01b038116811461057657600080fd5b919050565b6000606082840312156104d057600080fd5b600080604083850312156105a057600080fd5b6105a98361055f565b9150602083013567ffffffffffffffff8111156105c557600080fd5b6105d18582860161057b565b9150509250929050565b634e487b7160e01b600052602160045260246000fd5b600081516003811061061357634e487b7160e01b600052602160045260246000fd5b8352506020818101516001600160a01b0390811691840191909152604080830151821690840152606080830151909116908301526080908101519082015260a00190565b6020808252825182820181905260009190848201906040850190845b81811015610694576106868385516105f1565b938501939250600101610673565b50909695505050505050565b6000806000606084860312156106b557600080fd5b6106be8461055f565b9250602084013561ffff811681146106d557600080fd5b9150604084013567ffffffffffffffff8111156106f157600080fd5b6106fd8682870161057b565b9150509250925092565b805160408084528151908401819052600091602091908201906060860190845b8181101561074c5783516001600160a01b031683529284019291840191600101610727565b50508483015186820387850152805180835290840192506000918401905b8083101561078f5761077d8285516105f1565b9150848401935060018301925061076a565b509695505050505050565b604081526000835180604084015260005b818110156107c857602081870181015160608684010152016107ab565b50600060608285010152601f19601f8201168301905060608382030160208401526107f66060820185610707565b95945050505050565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561082857600080fd5b6108318361055f565b9150602083013567ffffffffffffffff8082111561084e57600080fd5b818501915085601f83011261086257600080fd5b813581811115610874576108746107ff565b604051601f8201601f19908116603f0116810190838211818310171561089c5761089c6107ff565b816040528281528860208487010111156108b557600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6001600160a01b03831681526040602082015260006108f96040830184610707565b949350505050565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0382811682821603908082111561093757610937610901565b5092915050565b634e487b7160e01b600052603260045260246000fd5b60006001600160a01b0380831681810361097057610970610901565b600101939250505056fe60a060405234801561001057600080fd5b506040516102d53803806102d583398101604081905261002f91610045565b6001600160a01b03166080526001600055610075565b60006020828403121561005757600080fd5b81516001600160a01b038116811461006e57600080fd5b9392505050565b60805161024661008f600039600060c301526102466000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80634162169f116100505780634162169f146100a957806341de6830146100ed5780636accab8c146100fc57600080fd5b806301ffc9a71461006c5780632ae9c60014610094575b600080fd5b61007f61007a3660046101ac565b610113565b60405190151581526020015b60405180910390f35b61009c610164565b60405161008b91906101dd565b60405173ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016815260200161008b565b600260405161008b9190610211565b61010560005481565b60405190815260200161008b565b60006001600160e01b0319821663041de68360e41b148061014357506001600160e01b03198216621574e360e91b145b8061015e57506301ffc9a760e01b6001600160e01b03198316145b92915050565b61016c61018e565b5060408051606081018252600181526004602082015260009181019190915290565b60405180606001604052806003906020820280368337509192915050565b6000602082840312156101be57600080fd5b81356001600160e01b0319811681146101d657600080fd5b9392505050565b60608101818360005b600381101561020857815160ff168352602092830192909101906001016101e6565b50505092915050565b602081016003831061023357634e487b7160e01b600052602160045260246000fd5b9190529056fea164736f6c6343000811000aa164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x72 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9CB0A124 GT PUSH2 0x50 JUMPI DUP1 PUSH4 0x9CB0A124 EQ PUSH2 0xEB JUMPI DUP1 PUSH4 0xA8A9C29E EQ PUSH2 0x10B JUMPI DUP1 PUSH4 0xF10832F1 EQ PUSH2 0x12C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x77 JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0x9F JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0xB4 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8A PUSH2 0x85 CALLDATASIZE PUSH1 0x4 PUSH2 0x501 JUMP JUMPDEST PUSH2 0x14D JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xA7 PUSH2 0x19E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x96 SWAP2 SWAP1 PUSH2 0x52B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x96 JUMP JUMPDEST PUSH2 0xFE PUSH2 0xF9 CALLDATASIZE PUSH1 0x4 PUSH2 0x58D JUMP JUMPDEST PUSH2 0x1C8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x96 SWAP2 SWAP1 PUSH2 0x657 JUMP JUMPDEST PUSH2 0x11E PUSH2 0x119 CALLDATASIZE PUSH1 0x4 PUSH2 0x6A0 JUMP JUMPDEST PUSH2 0x1DE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x96 SWAP3 SWAP2 SWAP1 PUSH2 0x79A JUMP JUMPDEST PUSH2 0x13F PUSH2 0x13A CALLDATASIZE PUSH1 0x4 PUSH2 0x815 JUMP JUMPDEST PUSH2 0x216 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x96 SWAP3 SWAP2 SWAP1 PUSH2 0x8D7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x99718B5 PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x17D JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x198 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1A6 PUSH2 0x4D6 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1D7 PUSH1 0x0 PUSH1 0x1 DUP1 PUSH2 0x298 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1FD PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xA1128101 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x235 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST DUP4 PUSH1 0x40 MLOAD PUSH2 0x242 SWAP1 PUSH2 0x4F4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH2 0x26E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP SWAP2 POP PUSH2 0x27B PUSH1 0x1 PUSH2 0x41D JUMP JUMPDEST DUP2 MSTORE PUSH2 0x28A PUSH1 0x0 PUSH1 0x1 DUP2 PUSH2 0x298 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE SWAP1 SWAP4 SWAP1 SWAP3 POP SWAP1 POP JUMP JUMPDEST PUSH1 0x60 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH2 0x2CD JUMPI PUSH1 0x40 MLOAD PUSH4 0x3A4013CD PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2D7 DUP5 DUP5 PUSH2 0x917 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2F8 JUMPI PUSH2 0x2F8 PUSH2 0x7FF JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x351 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD DUP3 SWAP1 MSTORE SWAP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 DUP3 ADD MSTORE DUP3 MSTORE PUSH1 0x0 NOT SWAP1 SWAP3 ADD SWAP2 ADD DUP2 PUSH2 0x316 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP DUP4 JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT ISZERO PUSH2 0x415 JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 DUP5 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x38D JUMPI PUSH2 0x38D PUSH2 0x5DB JUMP JUMPDEST DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x60 DUP3 ADD MSTORE PUSH32 0xA280EEC51AB8E1BC4B6B0C1B7F1BDE785761B787A49DB404E3E9338ED9B016EF PUSH1 0x80 SWAP1 SWAP2 ADD MSTORE DUP3 PUSH2 0x3DE DUP8 DUP5 PUSH2 0x917 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MLOAD DUP2 LT PUSH2 0x3F7 JUMPI PUSH2 0x3F7 PUSH2 0x93E JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP DUP1 DUP1 PUSH2 0x40D SWAP1 PUSH2 0x954 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x356 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x441 JUMPI PUSH2 0x441 PUSH2 0x7FF JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x46A JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT ISZERO PUSH2 0x4D0 JUMPI DUP1 DUP3 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MLOAD DUP2 LT PUSH2 0x4A6 JUMPI PUSH2 0x4A6 PUSH2 0x93E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE DUP1 PUSH2 0x4C8 DUP2 PUSH2 0x954 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x470 JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x2D5 DUP1 PUSH2 0x97B DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x513 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x1D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0x556 JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x534 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x576 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x5A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5A9 DUP4 PUSH2 0x55F JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x5C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5D1 DUP6 DUP3 DUP7 ADD PUSH2 0x57B JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP2 MLOAD PUSH1 0x3 DUP2 LT PUSH2 0x613 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP4 MSTORE POP PUSH1 0x20 DUP2 DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP1 DUP4 ADD MLOAD DUP3 AND SWAP1 DUP5 ADD MSTORE PUSH1 0x60 DUP1 DUP4 ADD MLOAD SWAP1 SWAP2 AND SWAP1 DUP4 ADD MSTORE PUSH1 0x80 SWAP1 DUP2 ADD MLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x694 JUMPI PUSH2 0x686 DUP4 DUP6 MLOAD PUSH2 0x5F1 JUMP JUMPDEST SWAP4 DUP6 ADD SWAP4 SWAP3 POP PUSH1 0x1 ADD PUSH2 0x673 JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x6B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x6BE DUP5 PUSH2 0x55F JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH2 0x6D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x6F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x6FD DUP7 DUP3 DUP8 ADD PUSH2 0x57B JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x40 DUP1 DUP5 MSTORE DUP2 MLOAD SWAP1 DUP5 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x20 SWAP2 SWAP1 DUP3 ADD SWAP1 PUSH1 0x60 DUP7 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x74C JUMPI DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x727 JUMP JUMPDEST POP POP DUP5 DUP4 ADD MLOAD DUP7 DUP3 SUB DUP8 DUP6 ADD MSTORE DUP1 MLOAD DUP1 DUP4 MSTORE SWAP1 DUP5 ADD SWAP3 POP PUSH1 0x0 SWAP2 DUP5 ADD SWAP1 JUMPDEST DUP1 DUP4 LT ISZERO PUSH2 0x78F JUMPI PUSH2 0x77D DUP3 DUP6 MLOAD PUSH2 0x5F1 JUMP JUMPDEST SWAP2 POP DUP5 DUP5 ADD SWAP4 POP PUSH1 0x1 DUP4 ADD SWAP3 POP PUSH2 0x76A JUMP JUMPDEST POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 DUP4 MLOAD DUP1 PUSH1 0x40 DUP5 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x7C8 JUMPI PUSH1 0x20 DUP2 DUP8 ADD DUP2 ADD MLOAD PUSH1 0x60 DUP7 DUP5 ADD ADD MSTORE ADD PUSH2 0x7AB JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x60 DUP3 DUP6 ADD ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP4 ADD SWAP1 POP PUSH1 0x60 DUP4 DUP3 SUB ADD PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x7F6 PUSH1 0x60 DUP3 ADD DUP6 PUSH2 0x707 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x828 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x831 DUP4 PUSH2 0x55F JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x84E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x862 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x874 JUMPI PUSH2 0x874 PUSH2 0x7FF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x89C JUMPI PUSH2 0x89C PUSH2 0x7FF JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x8B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0x8F9 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x707 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND DUP3 DUP3 AND SUB SWAP1 DUP1 DUP3 GT ISZERO PUSH2 0x937 JUMPI PUSH2 0x937 PUSH2 0x901 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND DUP2 DUP2 SUB PUSH2 0x970 JUMPI PUSH2 0x970 PUSH2 0x901 JUMP JUMPDEST PUSH1 0x1 ADD SWAP4 SWAP3 POP POP POP JUMP INVALID PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x2D5 CODESIZE SUB DUP1 PUSH2 0x2D5 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0x45 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x80 MSTORE PUSH1 0x1 PUSH1 0x0 SSTORE PUSH2 0x75 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x57 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x6E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH2 0x246 PUSH2 0x8F PUSH1 0x0 CODECOPY PUSH1 0x0 PUSH1 0xC3 ADD MSTORE PUSH2 0x246 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x67 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x4162169F GT PUSH2 0x50 JUMPI DUP1 PUSH4 0x4162169F EQ PUSH2 0xA9 JUMPI DUP1 PUSH4 0x41DE6830 EQ PUSH2 0xED JUMPI DUP1 PUSH4 0x6ACCAB8C EQ PUSH2 0xFC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x6C JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0x94 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7F PUSH2 0x7A CALLDATASIZE PUSH1 0x4 PUSH2 0x1AC JUMP JUMPDEST PUSH2 0x113 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x9C PUSH2 0x164 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x8B SWAP2 SWAP1 PUSH2 0x1DD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x8B JUMP JUMPDEST PUSH1 0x2 PUSH1 0x40 MLOAD PUSH2 0x8B SWAP2 SWAP1 PUSH2 0x211 JUMP JUMPDEST PUSH2 0x105 PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x8B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x41DE683 PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x143 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x15E JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x16C PUSH2 0x18E JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x1D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0x208 JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x1E6 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH1 0x3 DUP4 LT PUSH2 0x233 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 SWAP1 MSTORE SWAP1 JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"624:892:51:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2112:293:82;;;;;;:::i;:::-;;:::i;:::-;;;470:14:92;;463:22;445:41;;433:2;418:18;2112:293:82;;;;;;;;631:98:90;;;:::i;:::-;;;;;;;:::i;2444:94:82:-;;;-1:-1:-1;;;;;2517:14:82;1167:55:92;1149:74;;1137:2;1122:18;2444:94:82;1003:226:92;1224:290:51;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1639:265:82:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;792:393:51:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;2112:293:82:-;2198:4;-1:-1:-1;;;;;;2233:46:82;;-1:-1:-1;;;2233:46:82;;:112;;-1:-1:-1;;;;;;;2295:50:82;;-1:-1:-1;;;2295:50:82;2233:112;:165;;;-1:-1:-1;;;;;;;;;;937:40:38;;;2361:37:82;2214:184;2112:293;-1:-1:-1;;2112:293:82:o;631:98:90:-;679:15;;:::i;:::-;-1:-1:-1;706:16:90;;;;;;;;714:1;706:16;;717:1;706:16;;;;-1:-1:-1;706:16:90;;;;;;;;631:98::o;1224:290:51:-;1346:56;1454:53;1470:1;1473;1476:30;1454:15;:53::i;:::-;1440:67;1224:290;-1:-1:-1;;;1224:290:51:o;1639:265:82:-;1780:12;1794:24;-1:-1:-1;;;;;;;;;;;;;;;;;;;1794:24:82;1875:22;;-1:-1:-1;;;1875:22:82;;;;;;;;;;;792:393:51;895:14;911:42;-1:-1:-1;;;;;;;;;;;;;;;;;;;911:42:51;1025:4;999:32;;;;;:::i;:::-;-1:-1:-1;;;;;1167:55:92;;;1149:74;;1137:2;1122:18;999:32:51;;;;;;;;;;;;;;;;;;;;;;;982:50;;1070:14;1082:1;1070:11;:14::i;:::-;1042:42;;1126:52;1042:25;1145:1;1042:25;1126:15;:52::i;:::-;1094:29;;;:84;792:393;;1094:17;;-1:-1:-1;792:393:51;-1:-1:-1;792:393:51:o;580:666:52:-;699:56;780:8;-1:-1:-1;;;;;767:21:52;:10;-1:-1:-1;;;;;767:21:52;;763:53;;;797:19;;-1:-1:-1;;;797:19:52;;;;;;;;;;;763:53;879:21;890:10;879:8;:21;:::i;:::-;-1:-1:-1;;;;;837:64:52;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;837:64:52;;-1:-1:-1;;837:64:52;;;;;;;;;;;-1:-1:-1;823:78:52;-1:-1:-1;925:10:52;908:336;941:8;-1:-1:-1;;;;;937:12:52;:1;-1:-1:-1;;;;;937:12:52;;908:336;;;996:241;;;;;;;;1057:2;996:241;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;996:241:52;;;;;;;;;;;;-1:-1:-1;996:241:52;;;;1198:28;996:241;;;;;966:11;978:14;982:10;1088:1;978:14;:::i;:::-;-1:-1:-1;;;;;966:27:52;;;;;;;;;:::i;:::-;;;;;;:271;;;;951:3;;;;;:::i;:::-;;;;908:336;;;;580:666;;;;;:::o;1529:191::-;1577:24;1633:3;-1:-1:-1;;;;;1619:18:52;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1619:18:52;;1609:28;;1649:9;1644:74;1668:3;-1:-1:-1;;;;;1664:7:52;:1;-1:-1:-1;;;;;1664:7:52;;1644:74;;;1709:1;1688:7;1696:1;-1:-1:-1;;;;;1688:10:52;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1688:23:52;;;:10;;;;;;;;;;;:23;1673:3;;;;:::i;:::-;;;;1644:74;;;;1529:191;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::o;14:286:92:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:92;;209:43;;199:71;;266:1;263;256:12;497:501;673:2;658:18;;662:9;753:6;631:4;787:205;801:4;798:1;795:11;787:205;;;864:13;;879:4;860:24;848:37;;908:4;932:12;;;;967:15;;;;821:1;814:9;787:205;;;791:3;;;497:501;;;;:::o;1234:196::-;1302:20;;-1:-1:-1;;;;;1351:54:92;;1341:65;;1331:93;;1420:1;1417;1410:12;1331:93;1234:196;;;:::o;1435:160::-;1500:5;1545:2;1536:6;1531:3;1527:16;1523:25;1520:45;;;1561:1;1558;1551:12;1600:441;1701:6;1709;1762:2;1750:9;1741:7;1737:23;1733:32;1730:52;;;1778:1;1775;1768:12;1730:52;1801:29;1820:9;1801:29;:::i;:::-;1791:39;;1881:2;1870:9;1866:18;1853:32;1908:18;1900:6;1897:30;1894:50;;;1940:1;1937;1930:12;1894:50;1963:72;2027:7;2018:6;2007:9;2003:22;1963:72;:::i;:::-;1953:82;;;1600:441;;;;;:::o;2046:127::-;2107:10;2102:3;2098:20;2095:1;2088:31;2138:4;2135:1;2128:15;2162:4;2159:1;2152:15;2178:696;2253:10;2294:6;2288:13;2327:1;2323:2;2320:9;2310:140;;2372:10;2367:3;2363:20;2360:1;2353:31;2407:4;2404:1;2397:15;2435:4;2432:1;2425:15;2310:140;2459:15;;-1:-1:-1;2521:4:92;2509:17;;;2503:24;-1:-1:-1;;;;;2620:21:92;;;2604:14;;;2597:45;;;;2696:4;2684:17;;;2678:24;2674:33;;2658:14;;;2651:57;2762:4;2750:17;;;2744:24;2740:33;;;2724:14;;;2717:57;2824:4;2812:17;;;2806:24;2790:14;;;2783:48;2863:4;2854:14;;2178:696::o;2879:730::-;3130:2;3182:21;;;3252:13;;3155:18;;;3274:22;;;3101:4;;3130:2;3353:15;;;;3327:2;3312:18;;;3101:4;3396:187;3410:6;3407:1;3404:13;3396:187;;;3466:69;3531:3;3522:6;3516:13;3466:69;:::i;:::-;3558:15;;;;3459:76;-1:-1:-1;3432:1:92;3425:9;3396:187;;;-1:-1:-1;3600:3:92;;2879:730;-1:-1:-1;;;;;;2879:730:92:o;3614:601::-;3723:6;3731;3739;3792:2;3780:9;3771:7;3767:23;3763:32;3760:52;;;3808:1;3805;3798:12;3760:52;3831:29;3850:9;3831:29;:::i;:::-;3821:39;;3910:2;3899:9;3895:18;3882:32;3954:6;3947:5;3943:18;3936:5;3933:29;3923:57;;3976:1;3973;3966:12;3923:57;3999:5;-1:-1:-1;4055:2:92;4040:18;;4027:32;4082:18;4071:30;;4068:50;;;4114:1;4111;4104:12;4068:50;4137:72;4201:7;4192:6;4181:9;4177:22;4137:72;:::i;:::-;4127:82;;;3614:601;;;;;:::o;4220:1162::-;4353:12;;4319:4;4374:17;;;4440:19;;4310:14;;;4468:20;;;4280:3;;4537:4;;4564:21;;;;4515:2;4506:12;;;4280:3;4613:224;4627:6;4624:1;4621:13;4613:224;;;4694:13;;-1:-1:-1;;;;;4690:62:92;4676:77;;4812:15;;;;4775:14;;;;4649:1;4642:9;4613:224;;;-1:-1:-1;;4874:14:92;;;4868:21;4919:15;;;4905:12;;;4898:37;4987:21;;5017:23;;;5097;;;;-1:-1:-1;5140:1:92;;5058:14;;;5150:205;5166:8;5161:3;5158:17;5150:205;;;5230:73;5297:5;5286:8;5280:15;5230:73;:::i;:::-;5221:82;;5342:2;5332:8;5328:17;5316:29;;5194:1;5189:3;5185:11;5178:18;;5150:205;;;-1:-1:-1;5371:5:92;4220:1162;-1:-1:-1;;;;;;4220:1162:92:o;5387:761::-;5634:2;5623:9;5616:21;5597:4;5666:6;5660:13;5709:6;5704:2;5693:9;5689:18;5682:34;5734:1;5744:144;5758:6;5755:1;5752:13;5744:144;;;5871:4;5855:14;;;5851:25;;5845:32;5840:2;5821:17;;;5817:26;5810:68;5773:12;5744:144;;;5748:3;5937:1;5932:2;5923:6;5912:9;5908:22;5904:31;5897:42;5998:2;5994:7;5989:2;5981:6;5977:15;5973:29;5962:9;5958:45;5948:55;;6065:2;6053:9;6049:2;6045:18;6041:27;6034:4;6023:9;6019:20;6012:57;6086:56;6138:2;6134;6130:11;6122:6;6086:56;:::i;:::-;6078:64;5387:761;-1:-1:-1;;;;;5387:761:92:o;6153:127::-;6214:10;6209:3;6205:20;6202:1;6195:31;6245:4;6242:1;6235:15;6269:4;6266:1;6259:15;6285:995;6362:6;6370;6423:2;6411:9;6402:7;6398:23;6394:32;6391:52;;;6439:1;6436;6429:12;6391:52;6462:29;6481:9;6462:29;:::i;:::-;6452:39;;6542:2;6531:9;6527:18;6514:32;6565:18;6606:2;6598:6;6595:14;6592:34;;;6622:1;6619;6612:12;6592:34;6660:6;6649:9;6645:22;6635:32;;6705:7;6698:4;6694:2;6690:13;6686:27;6676:55;;6727:1;6724;6717:12;6676:55;6763:2;6750:16;6785:2;6781;6778:10;6775:36;;;6791:18;;:::i;:::-;6866:2;6860:9;6834:2;6920:13;;-1:-1:-1;;6916:22:92;;;6940:2;6912:31;6908:40;6896:53;;;6964:18;;;6984:22;;;6961:46;6958:72;;;7010:18;;:::i;:::-;7050:10;7046:2;7039:22;7085:2;7077:6;7070:18;7125:7;7120:2;7115;7111;7107:11;7103:20;7100:33;7097:53;;;7146:1;7143;7136:12;7097:53;7202:2;7197;7193;7189:11;7184:2;7176:6;7172:15;7159:46;7247:1;7242:2;7237;7229:6;7225:15;7221:24;7214:35;7268:6;7258:16;;;;;;;6285:995;;;;;:::o;7285:410::-;-1:-1:-1;;;;;7518:6:92;7514:55;7503:9;7496:74;7606:2;7601;7590:9;7586:18;7579:30;7477:4;7626:63;7685:2;7674:9;7670:18;7662:6;7626:63;:::i;:::-;7618:71;7285:410;-1:-1:-1;;;;7285:410:92:o;7945:127::-;8006:10;8001:3;7997:20;7994:1;7987:31;8037:4;8034:1;8027:15;8061:4;8058:1;8051:15;8077:208;-1:-1:-1;;;;;8221:10:92;;;8209;;;8205:27;;8244:12;;;8241:38;;;8259:18;;:::i;:::-;8241:38;8077:208;;;;:::o;8290:127::-;8351:10;8346:3;8342:20;8339:1;8332:31;8382:4;8379:1;8372:15;8406:4;8403:1;8396:15;8422:234;8461:3;-1:-1:-1;;;;;8566:2:92;8559:5;8555:14;8593:2;8584:7;8581:15;8578:41;;8599:18;;:::i;:::-;8648:1;8635:15;;8422:234;-1:-1:-1;;;8422:234:92:o"},"gasEstimates":{"creation":{"codeDepositCost":"632800","executionCost":"infinite","totalCost":"infinite"},"external":{"implementation()":"infinite","prepareInstallation(address,bytes)":"infinite","prepareUninstallation(address,(address,address[],bytes))":"infinite","prepareUpdate(address,uint16,(address,address[],bytes))":"624","protocolVersion()":"infinite","supportsInterface(bytes4)":"482"}},"methodIdentifiers":{"implementation()":"5c60da1b","prepareInstallation(address,bytes)":"f10832f1","prepareUninstallation(address,(address,address[],bytes))":"9cb0a124","prepareUpdate(address,uint16,(address,address[],bytes))":"a8a9c29e","protocolVersion()":"2ae9c600","supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ConflictingValues\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NonUpgradeablePlugin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_dao\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"prepareInstallation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"plugin\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address[]\",\"name\":\"helpers\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"enum PermissionLib.Operation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"condition\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PermissionLib.MultiTargetPermission[]\",\"name\":\"permissions\",\"type\":\"tuple[]\"}],\"internalType\":\"struct IPluginSetup.PreparedSetupData\",\"name\":\"preparedSetupData\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_dao\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"plugin\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"currentHelpers\",\"type\":\"address[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IPluginSetup.SetupPayload\",\"name\":\"_payload\",\"type\":\"tuple\"}],\"name\":\"prepareUninstallation\",\"outputs\":[{\"components\":[{\"internalType\":\"enum PermissionLib.Operation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"condition\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PermissionLib.MultiTargetPermission[]\",\"name\":\"permissions\",\"type\":\"tuple[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_dao\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"_fromBuild\",\"type\":\"uint16\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"plugin\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"currentHelpers\",\"type\":\"address[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IPluginSetup.SetupPayload\",\"name\":\"_payload\",\"type\":\"tuple\"}],\"name\":\"prepareUpdate\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address[]\",\"name\":\"helpers\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"enum PermissionLib.Operation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"condition\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PermissionLib.MultiTargetPermission[]\",\"name\":\"permissions\",\"type\":\"tuple[]\"}],\"internalType\":\"struct IPluginSetup.PreparedSetupData\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"protocolVersion\",\"outputs\":[{\"internalType\":\"uint8[3]\",\"name\":\"\",\"type\":\"uint8[3]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"DO NOT USE IN PRODUCTION!\",\"kind\":\"dev\",\"methods\":{\"implementation()\":{\"details\":\"The implementation can be instantiated via the `new` keyword, cloned via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)), or proxied via the UUPS proxy pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\",\"returns\":{\"_0\":\"The address of the plugin implementation contract.\"}},\"prepareInstallation(address,bytes)\":{\"params\":{\"_dao\":\"The address of the installing DAO.\",\"_data\":\"The bytes-encoded data containing the input parameters for the installation as specified in the plugin's build metadata JSON file.\"},\"returns\":{\"plugin\":\"The address of the `Plugin` contract being prepared for installation.\",\"preparedSetupData\":\"The deployed plugin's relevant data which consists of helpers and permissions.\"}},\"prepareUninstallation(address,(address,address[],bytes))\":{\"params\":{\"_dao\":\"The address of the uninstalling DAO.\",\"_payload\":\"The relevant data necessary for the `prepareUninstallation`. See above.\"},\"returns\":{\"permissions\":\"The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the uninstalling DAO.\"}},\"prepareUpdate(address,uint16,(address,address[],bytes))\":{\"details\":\"Since the underlying plugin is non-upgradeable, this non-virtual function must always revert.\",\"params\":{\"_dao\":\"The address of the updating DAO.\",\"_fromBuild\":\"The build number of the plugin to update from.\",\"_payload\":\"The relevant data necessary for the `prepareUpdate`. See above.\"},\"returns\":{\"_0\":\"The initialization data to be passed to upgradeable contracts when the update is applied in the `PluginSetupProcessor`.\",\"_1\":\"The deployed plugin's relevant data which consists of helpers and permissions.\"}},\"protocolVersion()\":{\"details\":\"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\",\"returns\":{\"_0\":\"Returns the semantic Aragon OSx protocol version number.\"}},\"supportsInterface(bytes4)\":{\"params\":{\"_interfaceId\":\"The ID of the interface.\"},\"returns\":{\"_0\":\"Returns `true` if the interface is supported.\"}}},\"version\":1},\"userdoc\":{\"errors\":{\"NonUpgradeablePlugin()\":[{\"notice\":\"Thrown when attempting to prepare an update on a non-upgradeable plugin.\"}]},\"kind\":\"user\",\"methods\":{\"implementation()\":{\"notice\":\"Returns the plugin implementation address.\"},\"prepareInstallation(address,bytes)\":{\"notice\":\"Prepares the installation of a plugin.\"},\"prepareUninstallation(address,(address,address[],bytes))\":{\"notice\":\"Prepares the uninstallation of a plugin.\"},\"prepareUpdate(address,uint16,(address,address[],bytes))\":{\"notice\":\"Prepares the update of a plugin.\"},\"protocolVersion()\":{\"notice\":\"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Checks if this or the parent contract supports an interface by its ID.\"}},\"notice\":\"A mock plugin setup of a plugin to be deployed via the `new` keyword. v1.1 (Release 1, Build 1)\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/mocks/plugin/PluginSetupMock.sol\":\"PluginSetupMockBuild1\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n function _contextSuffixLength() internal view virtual returns (uint256) {\\n return 0;\\n }\\n}\\n\",\"keccak256\":\"0xa92e4fa126feb6907daa0513ddd816b2eb91f30a808de54f63c17d0e162c3439\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165 is IERC165 {\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165).interfaceId;\\n }\\n}\\n\",\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"src/dao/IDAO.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IDAO\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for DAOs within the Aragon App DAO framework.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IDAO {\\n /// @notice The action struct to be consumed by the DAO's `execute` function resulting in an external call.\\n /// @param to The address to call.\\n /// @param value The native token value to be sent with the call.\\n /// @param data The bytes-encoded function selector and calldata for the call.\\n struct Action {\\n address to;\\n uint256 value;\\n bytes data;\\n }\\n\\n /// @notice Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\\n /// @param _where The address of the contract.\\n /// @param _who The address of a EOA or contract to give the permissions.\\n /// @param _permissionId The permission identifier.\\n /// @param _data The optional data passed to the `PermissionCondition` registered.\\n /// @return Returns true if the address has permission, false if not.\\n function hasPermission(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes memory _data\\n ) external view returns (bool);\\n\\n /// @notice Updates the DAO metadata (e.g., an IPFS hash).\\n /// @param _metadata The IPFS hash of the new metadata object.\\n function setMetadata(bytes calldata _metadata) external;\\n\\n /// @notice Emitted when the DAO metadata is updated.\\n /// @param metadata The IPFS hash of the new metadata object.\\n event MetadataSet(bytes metadata);\\n\\n /// @notice Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted.\\n /// @param _callId The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce.\\n /// @param _actions The array of actions.\\n /// @param _allowFailureMap A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @return The array of results obtained from the executed actions in `bytes`.\\n /// @return The resulting failure map containing the actions have actually failed.\\n function execute(\\n bytes32 _callId,\\n Action[] memory _actions,\\n uint256 _allowFailureMap\\n ) external returns (bytes[] memory, uint256);\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param actor The address of the caller.\\n /// @param callId The ID of the call.\\n /// @param actions The array of actions executed.\\n /// @param allowFailureMap The allow failure map encoding which actions are allowed to fail.\\n /// @param failureMap The failure map encoding which actions have failed.\\n /// @param execResults The array with the results of the executed actions.\\n /// @dev The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce.\\n event Executed(\\n address indexed actor,\\n bytes32 callId,\\n Action[] actions,\\n uint256 allowFailureMap,\\n uint256 failureMap,\\n bytes[] execResults\\n );\\n\\n /// @notice Emitted when a standard callback is registered.\\n /// @param interfaceId The ID of the interface.\\n /// @param callbackSelector The selector of the callback function.\\n /// @param magicNumber The magic number to be registered for the callback function selector.\\n event StandardCallbackRegistered(\\n bytes4 interfaceId,\\n bytes4 callbackSelector,\\n bytes4 magicNumber\\n );\\n\\n /// @notice Deposits (native) tokens to the DAO contract with a reference string.\\n /// @param _token The address of the token or address(0) in case of the native token.\\n /// @param _amount The amount of tokens to deposit.\\n /// @param _reference The reference describing the deposit reason.\\n function deposit(address _token, uint256 _amount, string calldata _reference) external payable;\\n\\n /// @notice Emitted when a token deposit has been made to the DAO.\\n /// @param sender The address of the sender.\\n /// @param token The address of the deposited token.\\n /// @param amount The amount of tokens deposited.\\n /// @param _reference The reference describing the deposit reason.\\n event Deposited(\\n address indexed sender,\\n address indexed token,\\n uint256 amount,\\n string _reference\\n );\\n\\n /// @notice Emitted when a native token deposit has been made to the DAO.\\n /// @dev This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).\\n /// @param sender The address of the sender.\\n /// @param amount The amount of native tokens deposited.\\n event NativeTokenDeposited(address sender, uint256 amount);\\n\\n /// @notice Setter for the trusted forwarder verifying the meta transaction.\\n /// @param _trustedForwarder The trusted forwarder address.\\n function setTrustedForwarder(address _trustedForwarder) external;\\n\\n /// @notice Getter for the trusted forwarder verifying the meta transaction.\\n /// @return The trusted forwarder address.\\n function getTrustedForwarder() external view returns (address);\\n\\n /// @notice Emitted when a new TrustedForwarder is set on the DAO.\\n /// @param forwarder the new forwarder address.\\n event TrustedForwarderSet(address forwarder);\\n\\n /// @notice Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\\n /// @param _hash The hash of the data to be signed.\\n /// @param _signature The signature byte array associated with `_hash`.\\n /// @return Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not.\\n function isValidSignature(bytes32 _hash, bytes memory _signature) external returns (bytes4);\\n\\n /// @notice Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\\n /// @param _interfaceId The ID of the interface.\\n /// @param _callbackSelector The selector of the callback function.\\n /// @param _magicNumber The magic number to be registered for the function signature.\\n function registerStandardCallback(\\n bytes4 _interfaceId,\\n bytes4 _callbackSelector,\\n bytes4 _magicNumber\\n ) external;\\n\\n /// @notice Removed function being left here to not corrupt the IDAO interface ID. Any call will revert.\\n /// @dev Introduced in v1.0.0. Removed in v1.4.0.\\n function setSignatureValidator(address) external;\\n}\\n\",\"keccak256\":\"0xb7f615523c26de042edce98731c658f44a1edb2464387ac1b642c4c69f57128e\",\"license\":\"AGPL-3.0-or-later\"},\"src/mocks/plugin/PluginMock.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {Plugin} from \\\"../../plugin/Plugin.sol\\\";\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice A mock plugin to be deployed via the `new` keyword.\\n/// v1.1 (Release 1, Build 1)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginMockBuild1 is Plugin {\\n uint256 public state1;\\n\\n constructor(IDAO _dao) Plugin(_dao) {\\n state1 = 1;\\n }\\n}\\n\",\"keccak256\":\"0x9aca72aa9f93de6de6cc6a093aaaceb62649bea46fba7f07a01a067c145c35bd\",\"license\":\"AGPL-3.0-or-later\"},\"src/mocks/plugin/PluginSetupMock.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\n/* solhint-disable one-contract-per-file */\\npragma solidity ^0.8.8;\\n\\nimport {PermissionLib} from \\\"../../permission/PermissionLib.sol\\\";\\nimport {IPluginSetup} from \\\"../../plugin/setup/IPluginSetup.sol\\\";\\nimport {PluginSetup} from \\\"../../plugin/setup/PluginSetup.sol\\\";\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\nimport {mockPermissions, mockHelpers} from \\\"./PluginSetupMockData.sol\\\";\\nimport {PluginMockBuild1} from \\\"./PluginMock.sol\\\";\\n\\n/// @notice A mock plugin setup of a plugin to be deployed via the `new` keyword.\\n/// v1.1 (Release 1, Build 1)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginSetupMockBuild1 is PluginSetup {\\n constructor() PluginSetup(address(new PluginMockBuild1(IDAO(address(0))))) {}\\n\\n /// @inheritdoc IPluginSetup\\n function prepareInstallation(\\n address _dao,\\n bytes memory _data\\n ) external returns (address plugin, PreparedSetupData memory preparedSetupData) {\\n (_data);\\n plugin = address(new PluginMockBuild1(IDAO(_dao)));\\n preparedSetupData.helpers = mockHelpers(1);\\n preparedSetupData.permissions = mockPermissions(0, 1, PermissionLib.Operation.Grant);\\n }\\n\\n /// @inheritdoc IPluginSetup\\n function prepareUninstallation(\\n address _dao,\\n SetupPayload calldata _payload\\n ) external pure returns (PermissionLib.MultiTargetPermission[] memory permissions) {\\n (_dao, _payload);\\n permissions = mockPermissions(0, 1, PermissionLib.Operation.Revoke);\\n }\\n}\\n\",\"keccak256\":\"0xa6f273174c0824bf16728b127487e2e98e70068951de6989dc9bb6aac633e597\",\"license\":\"AGPL-3.0-or-later\"},\"src/mocks/plugin/PluginSetupMockData.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {PermissionLib} from \\\"../../permission/PermissionLib.sol\\\";\\n\\naddress constant NO_CONDITION = address(0);\\n\\nerror ConflictingValues();\\n\\n/// @notice Creates a mock `MultiTargetPermission` array by converting a range of `uint160` values into `address` values.\\n/// @param rangeStart The start of the range.\\n/// @param rangeEnd The end of the range (that is not included).\\n/// @param op The permission operation type.\\n/// @return permissions The mock array of permissions.\\n/// @dev DO NOT USE IN PRODUCTION!\\nfunction mockPermissions(\\n uint160 rangeStart,\\n uint160 rangeEnd,\\n PermissionLib.Operation op\\n) pure returns (PermissionLib.MultiTargetPermission[] memory permissions) {\\n if (rangeStart > rangeEnd) revert ConflictingValues();\\n\\n permissions = new PermissionLib.MultiTargetPermission[](rangeEnd - rangeStart);\\n\\n for (uint160 i = rangeStart; i < rangeEnd; i++) {\\n permissions[i - rangeStart] = PermissionLib.MultiTargetPermission({\\n operation: op,\\n where: address(i),\\n who: address(i),\\n condition: PermissionLib.NO_CONDITION,\\n permissionId: keccak256(\\\"MOCK_PERMISSION\\\")\\n });\\n }\\n}\\n\\n/// @notice Creates a mock array of helper addresses of specified length by converting `uint160` values starting from 0 into `address` values.\\n/// @param len The length of the helper array.\\n/// @return helpers The mock array of helper addresses.\\n/// @dev DO NOT USE IN PRODUCTION!\\nfunction mockHelpers(uint160 len) pure returns (address[] memory helpers) {\\n helpers = new address[](len);\\n\\n for (uint160 i = 0; i < len; i++) {\\n helpers[i] = address(i);\\n }\\n}\\n\",\"keccak256\":\"0x529d1b7ea4c348fe18edf81a044792ca8aa1f6ad9a7d2edfd35e38bf8372abf9\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/PermissionLib.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title PermissionLib\\n/// @author Aragon X - 2021-2023\\n/// @notice A library containing objects for permission processing.\\n/// @custom:security-contact sirt@aragon.org\\nlibrary PermissionLib {\\n /// @notice A constant expressing that no condition is applied to a permission.\\n address public constant NO_CONDITION = address(0);\\n\\n /// @notice The types of permission operations available in the `PermissionManager`.\\n /// @param Grant The grant operation setting a permission without a condition.\\n /// @param Revoke The revoke operation removing a permission (that was granted with or without a condition).\\n /// @param GrantWithCondition The grant operation setting a permission with a condition.\\n enum Operation {\\n Grant,\\n Revoke,\\n GrantWithCondition\\n }\\n\\n /// @notice A struct containing the information for a permission to be applied on a single target contract without a condition.\\n /// @param operation The permission operation type.\\n /// @param who The address (EOA or contract) receiving the permission.\\n /// @param permissionId The permission identifier.\\n struct SingleTargetPermission {\\n Operation operation;\\n address who;\\n bytes32 permissionId;\\n }\\n\\n /// @notice A struct containing the information for a permission to be applied on multiple target contracts, optionally, with a condition.\\n /// @param operation The permission operation type.\\n /// @param where The address of the target contract for which `who` receives permission.\\n /// @param who The address (EOA or contract) receiving the permission.\\n /// @param condition The `PermissionCondition` that will be asked for authorization on calls connected to the specified permission identifier.\\n /// @param permissionId The permission identifier.\\n struct MultiTargetPermission {\\n Operation operation;\\n address where;\\n address who;\\n address condition;\\n bytes32 permissionId;\\n }\\n}\\n\",\"keccak256\":\"0x470faf3c4891ebc6420ef6cc09f6098917568ccc79268c90954d1478199b6097\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/DaoAuthorizable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {Context} from \\\"@openzeppelin/contracts/utils/Context.sol\\\";\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\nimport {_auth} from \\\"./auth.sol\\\";\\n\\n/// @title DaoAuthorizable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract contract providing a meta-transaction compatible modifier for non-upgradeable contracts instantiated via the `new` keyword to authorize function calls through an associated DAO.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract DaoAuthorizable is Context {\\n /// @notice The associated DAO managing the permissions of inheriting contracts.\\n IDAO private immutable DAO;\\n\\n /// @notice Constructs the contract by setting the associated DAO.\\n /// @param _dao The associated DAO address.\\n constructor(IDAO _dao) {\\n DAO = _dao;\\n }\\n\\n /// @notice Returns the DAO contract.\\n /// @return The DAO contract.\\n function dao() public view returns (IDAO) {\\n return DAO;\\n }\\n\\n /// @notice A modifier to make functions on inheriting contracts authorized. Permissions to call the function are checked through the associated DAO's permission manager.\\n /// @param _permissionId The permission identifier required to call the method this modifier is applied to.\\n modifier auth(bytes32 _permissionId) {\\n _auth(DAO, address(this), _msgSender(), _permissionId, _msgData());\\n _;\\n }\\n}\\n\",\"keccak256\":\"0x3d0be91b4f5854ed2d2c51b53fe7ffba58cc968e972015cf60eb3ea100543e64\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/auth.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice Thrown if a call is unauthorized in the associated DAO.\\n/// @param dao The associated DAO.\\n/// @param where The context in which the authorization reverted.\\n/// @param who The address (EOA or contract) missing the permission.\\n/// @param permissionId The permission identifier.\\nerror DaoUnauthorized(address dao, address where, address who, bytes32 permissionId);\\n\\n/// @notice A free function checking if a caller is granted permissions on a target contract via a permission identifier that redirects the approval to a `PermissionCondition` if this was specified in the setup.\\n/// @param _where The address of the target contract for which `who` receives permission.\\n/// @param _who The address (EOA or contract) owning the permission.\\n/// @param _permissionId The permission identifier.\\n/// @param _data The optional data passed to the `PermissionCondition` registered.\\n/// @custom:security-contact sirt@aragon.org\\nfunction _auth(\\n IDAO _dao,\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes calldata _data\\n) view {\\n if (!_dao.hasPermission(_where, _who, _permissionId, _data))\\n revert DaoUnauthorized({\\n dao: address(_dao),\\n where: _where,\\n who: _who,\\n permissionId: _permissionId\\n });\\n}\\n\",\"keccak256\":\"0x878764b4f87fe0651fb3798fb9cb87c952f8c6caf6ae79c7f09de84df6c00298\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/IPlugin.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IPlugin\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the traits of a plugin.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IPlugin {\\n enum PluginType {\\n UUPS,\\n Cloneable,\\n Constructable\\n }\\n\\n /// @notice Returns the plugin's type\\n function pluginType() external view returns (PluginType);\\n}\\n\",\"keccak256\":\"0xc57cd0d10b6380ab7f54c713a509e88fd8f4ad9288313a0e8e12b8887817ddfe\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/Plugin.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ERC165} from \\\"@openzeppelin/contracts/utils/introspection/ERC165.sol\\\";\\n\\nimport {IProtocolVersion} from \\\"../utils/versioning/IProtocolVersion.sol\\\";\\nimport {ProtocolVersion} from \\\"../utils/versioning/ProtocolVersion.sol\\\";\\nimport {DaoAuthorizable} from \\\"../permission/auth/DaoAuthorizable.sol\\\";\\nimport {IDAO} from \\\"../dao/IDAO.sol\\\";\\nimport {IPlugin} from \\\"./IPlugin.sol\\\";\\n\\n/// @title Plugin\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract, non-upgradeable contract to inherit from when creating a plugin being deployed via the `new` keyword.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract Plugin is IPlugin, ERC165, DaoAuthorizable, ProtocolVersion {\\n /// @notice Constructs the plugin by storing the associated DAO.\\n /// @param _dao The DAO contract.\\n constructor(IDAO _dao) DaoAuthorizable(_dao) {}\\n\\n /// @inheritdoc IPlugin\\n function pluginType() public pure override returns (PluginType) {\\n return PluginType.Constructable;\\n }\\n\\n /// @notice Checks if this or the parent contract supports an interface by its ID.\\n /// @param _interfaceId The ID of the interface.\\n /// @return Returns `true` if the interface is supported.\\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\\n return\\n _interfaceId == type(IPlugin).interfaceId ||\\n _interfaceId == type(IProtocolVersion).interfaceId ||\\n super.supportsInterface(_interfaceId);\\n }\\n}\\n\",\"keccak256\":\"0xdda9f39f3f06fa66dc1b0688576143db5bd0aafdb557de36563de0aa68829135\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/setup/IPluginSetup.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {PermissionLib} from \\\"../../permission/PermissionLib.sol\\\";\\n\\n// solhint-disable-next-line no-unused-import\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @title IPluginSetup\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for a plugin setup contract to be consumed by the `PluginSetupProcessor` for plugin installations, updates, and uninstallations.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IPluginSetup {\\n /// @notice The data associated with a prepared setup.\\n /// @param helpers The address array of helpers (contracts or EOAs) associated with this plugin version after the installation or update.\\n /// @param permissions The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the installing or updating DAO.\\n struct PreparedSetupData {\\n address[] helpers;\\n PermissionLib.MultiTargetPermission[] permissions;\\n }\\n\\n /// @notice The payload for plugin updates and uninstallations containing the existing contracts as well as optional data to be consumed by the plugin setup.\\n /// @param plugin The address of the `Plugin`.\\n /// @param currentHelpers The address array of all current helpers (contracts or EOAs) associated with the plugin to update from.\\n /// @param data The bytes-encoded data containing the input parameters for the preparation of update/uninstall as specified in the corresponding ABI on the version's metadata.\\n struct SetupPayload {\\n address plugin;\\n address[] currentHelpers;\\n bytes data;\\n }\\n\\n /// @notice Prepares the installation of a plugin.\\n /// @param _dao The address of the installing DAO.\\n /// @param _data The bytes-encoded data containing the input parameters for the installation as specified in the plugin's build metadata JSON file.\\n /// @return plugin The address of the `Plugin` contract being prepared for installation.\\n /// @return preparedSetupData The deployed plugin's relevant data which consists of helpers and permissions.\\n function prepareInstallation(\\n address _dao,\\n bytes calldata _data\\n ) external returns (address plugin, PreparedSetupData memory preparedSetupData);\\n\\n /// @notice Prepares the update of a plugin.\\n /// @param _dao The address of the updating DAO.\\n /// @param _fromBuild The build number of the plugin to update from.\\n /// @param _payload The relevant data necessary for the `prepareUpdate`. See above.\\n /// @return initData The initialization data to be passed to upgradeable contracts when the update is applied in the `PluginSetupProcessor`.\\n /// @return preparedSetupData The deployed plugin's relevant data which consists of helpers and permissions.\\n function prepareUpdate(\\n address _dao,\\n uint16 _fromBuild,\\n SetupPayload calldata _payload\\n ) external returns (bytes memory initData, PreparedSetupData memory preparedSetupData);\\n\\n /// @notice Prepares the uninstallation of a plugin.\\n /// @param _dao The address of the uninstalling DAO.\\n /// @param _payload The relevant data necessary for the `prepareUninstallation`. See above.\\n /// @return permissions The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the uninstalling DAO.\\n function prepareUninstallation(\\n address _dao,\\n SetupPayload calldata _payload\\n ) external returns (PermissionLib.MultiTargetPermission[] memory permissions);\\n\\n /// @notice Returns the plugin implementation address.\\n /// @return The address of the plugin implementation contract.\\n /// @dev The implementation can be instantiated via the `new` keyword, cloned via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)), or proxied via the UUPS proxy pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0x21c99995208039ac6ace219b6f273243811dc2aa66399e8e499e43ec30b82fa9\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/setup/PluginSetup.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ERC165} from \\\"@openzeppelin/contracts/utils/introspection/ERC165.sol\\\";\\n\\nimport {IProtocolVersion} from \\\"../../utils/versioning/IProtocolVersion.sol\\\";\\nimport {ProtocolVersion} from \\\"../../utils/versioning/ProtocolVersion.sol\\\";\\nimport {IPluginSetup} from \\\"./IPluginSetup.sol\\\";\\n\\n/// @title PluginSetup\\n/// @author Aragon X - 2022-2024\\n/// @notice An abstract contract to inherit from to implement the plugin setup for non-upgradeable plugins, i.e,\\n/// - `Plugin` being deployed via the `new` keyword\\n/// - `PluginCloneable` being deployed via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)).\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract PluginSetup is ERC165, IPluginSetup, ProtocolVersion {\\n /// @notice The address of the plugin implementation contract for initial block explorer verification and, in the case of `PluginClonable` implementations, to create [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167) clones from.\\n address internal immutable IMPLEMENTATION;\\n\\n /// @notice Thrown when attempting to prepare an update on a non-upgradeable plugin.\\n error NonUpgradeablePlugin();\\n\\n /// @notice The contract constructor, that setting the plugin implementation contract.\\n /// @param _implementation The address of the plugin implementation contract.\\n constructor(address _implementation) {\\n IMPLEMENTATION = _implementation;\\n }\\n\\n /// @inheritdoc IPluginSetup\\n /// @dev Since the underlying plugin is non-upgradeable, this non-virtual function must always revert.\\n function prepareUpdate(\\n address _dao,\\n uint16 _fromBuild,\\n SetupPayload calldata _payload\\n ) external pure returns (bytes memory, PreparedSetupData memory) {\\n (_dao, _fromBuild, _payload);\\n revert NonUpgradeablePlugin();\\n }\\n\\n /// @notice Checks if this or the parent contract supports an interface by its ID.\\n /// @param _interfaceId The ID of the interface.\\n /// @return Returns `true` if the interface is supported.\\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\\n return\\n _interfaceId == type(IPluginSetup).interfaceId ||\\n _interfaceId == type(IProtocolVersion).interfaceId ||\\n super.supportsInterface(_interfaceId);\\n }\\n\\n /// @inheritdoc IPluginSetup\\n function implementation() public view returns (address) {\\n return IMPLEMENTATION;\\n }\\n}\\n\",\"keccak256\":\"0x93044f8080758c5cf8d621e3614b8150f55572a1770880106a49dfa53784a9d2\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/IProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IProtocolVersion\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the semantic Aragon OSx protocol version number.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IProtocolVersion {\\n /// @notice Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\\n /// @return _version Returns the semantic Aragon OSx protocol version number.\\n /// @dev This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\\n function protocolVersion() external view returns (uint8[3] memory _version);\\n}\\n\",\"keccak256\":\"0x00a4da654d21dc1bdadbdc8bd54bb86c378c56f85e461ccc31303628ea621361\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/ProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IProtocolVersion} from \\\"./IProtocolVersion.sol\\\";\\n\\n/// @title ProtocolVersion\\n/// @author Aragon X - 2023\\n/// @notice An abstract, stateless, non-upgradeable contract providing the current Aragon OSx protocol version number.\\n/// @dev Do not add any new variables to this contract that would shift down storage in the inheritance chain.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract ProtocolVersion is IProtocolVersion {\\n // IMPORTANT: Do not add any storage variable, see the above notice.\\n\\n /// @inheritdoc IProtocolVersion\\n function protocolVersion() public pure returns (uint8[3] memory) {\\n return [1, 4, 0];\\n }\\n}\\n\",\"keccak256\":\"0x3975c937be935f687c6b6b8f379071232681e98cf04b175d72781b819ea52bdb\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"errors":{"NonUpgradeablePlugin()":[{"notice":"Thrown when attempting to prepare an update on a non-upgradeable plugin."}]},"kind":"user","methods":{"implementation()":{"notice":"Returns the plugin implementation address."},"prepareInstallation(address,bytes)":{"notice":"Prepares the installation of a plugin."},"prepareUninstallation(address,(address,address[],bytes))":{"notice":"Prepares the uninstallation of a plugin."},"prepareUpdate(address,uint16,(address,address[],bytes))":{"notice":"Prepares the update of a plugin."},"protocolVersion()":{"notice":"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with."},"supportsInterface(bytes4)":{"notice":"Checks if this or the parent contract supports an interface by its ID."}},"notice":"A mock plugin setup of a plugin to be deployed via the `new` keyword. v1.1 (Release 1, Build 1)","version":1}}},"src/mocks/plugin/PluginUUPSUpgradeableMock.sol":{"PluginUUPSUpgradeableMockBad":{"abi":[{"inputs":[{"internalType":"address","name":"dao","type":"address"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"name":"DaoUnauthorized","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"beacon","type":"address"}],"name":"BeaconUpgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"inputs":[],"name":"UPGRADE_PLUGIN_PERMISSION_ID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dao","outputs":[{"internalType":"contract IDAO","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IDAO","name":"_dao","type":"address"}],"name":"notAnInitializer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pluginType","outputs":[{"internalType":"enum IPlugin.PluginType","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"protocolVersion","outputs":[{"internalType":"uint8[3]","name":"","type":"uint8[3]"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"state1","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"}],"name":"upgradeTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"}],"devdoc":{"details":"DO NOT USE IN PRODUCTION!","errors":{"DaoUnauthorized(address,address,address,bytes32)":[{"params":{"dao":"The associated DAO.","permissionId":"The permission identifier.","where":"The context in which the authorization reverted.","who":"The address (EOA or contract) missing the permission."}}]},"kind":"dev","methods":{"dao()":{"returns":{"_0":"The DAO contract."}},"implementation()":{"returns":{"_0":"The address of the implementation contract."}},"protocolVersion()":{"details":"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.","returns":{"_0":"Returns the semantic Aragon OSx protocol version number."}},"proxiableUUID()":{"details":"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier."},"supportsInterface(bytes4)":{"params":{"_interfaceId":"The ID of the interface."},"returns":{"_0":"Returns `true` if the interface is supported."}},"upgradeTo(address)":{"custom:oz-upgrades-unsafe-allow-reachable":"delegatecall","details":"Upgrade the implementation of the proxy to `newImplementation`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."},"upgradeToAndCall(address,bytes)":{"custom:oz-upgrades-unsafe-allow-reachable":"delegatecall","details":"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."}},"version":1},"evm":{"bytecode":{"functionDebugData":{"@_13538":{"entryPoint":null,"id":13538,"parameterSlots":0,"returnSlots":0},"@_disableInitializers_515":{"entryPoint":34,"id":515,"parameterSlots":0,"returnSlots":0},"abi_encode_tuple_t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:608:92","statements":[{"nodeType":"YulBlock","src":"6:3:92","statements":[]},{"body":{"nodeType":"YulBlock","src":"188:229:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"205:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"216:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"198:6:92"},"nodeType":"YulFunctionCall","src":"198:21:92"},"nodeType":"YulExpressionStatement","src":"198:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"239:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"250:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"235:3:92"},"nodeType":"YulFunctionCall","src":"235:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"255:2:92","type":"","value":"39"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"228:6:92"},"nodeType":"YulFunctionCall","src":"228:30:92"},"nodeType":"YulExpressionStatement","src":"228:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"278:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"289:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"274:3:92"},"nodeType":"YulFunctionCall","src":"274:18:92"},{"hexValue":"496e697469616c697a61626c653a20636f6e747261637420697320696e697469","kind":"string","nodeType":"YulLiteral","src":"294:34:92","type":"","value":"Initializable: contract is initi"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"267:6:92"},"nodeType":"YulFunctionCall","src":"267:62:92"},"nodeType":"YulExpressionStatement","src":"267:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"349:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"360:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"345:3:92"},"nodeType":"YulFunctionCall","src":"345:18:92"},{"hexValue":"616c697a696e67","kind":"string","nodeType":"YulLiteral","src":"365:9:92","type":"","value":"alizing"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"338:6:92"},"nodeType":"YulFunctionCall","src":"338:37:92"},"nodeType":"YulExpressionStatement","src":"338:37:92"},{"nodeType":"YulAssignment","src":"384:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"396:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"407:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"392:3:92"},"nodeType":"YulFunctionCall","src":"392:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"384:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"165:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"179:4:92","type":""}],"src":"14:403:92"},{"body":{"nodeType":"YulBlock","src":"519:87:92","statements":[{"nodeType":"YulAssignment","src":"529:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"541:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"552:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"537:3:92"},"nodeType":"YulFunctionCall","src":"537:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"529:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"571:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"586:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"594:4:92","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"582:3:92"},"nodeType":"YulFunctionCall","src":"582:17:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"564:6:92"},"nodeType":"YulFunctionCall","src":"564:36:92"},"nodeType":"YulExpressionStatement","src":"564:36:92"}]},"name":"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"488:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"499:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"510:4:92","type":""}],"src":"422:184:92"}]},"contents":"{\n { }\n function abi_encode_tuple_t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 39)\n mstore(add(headStart, 64), \"Initializable: contract is initi\")\n mstore(add(headStart, 96), \"alizing\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xff))\n }\n}","id":92,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60a06040523060805234801561001457600080fd5b5061001d610022565b6100e1565b600054610100900460ff161561008e5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116146100df576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b608051610fe6610118600039600081816102de015281816103680152818161045e015281816104e301526105cd0152610fe66000f3fe6080604052600436106100bc5760003560e01c80634f1ef286116100745780636accab8c1161004e5780636accab8c146101d35780638883bbd7146101ea578063c9c4bfca1461020a57600080fd5b80634f1ef2861461018857806352d1902d1461019b5780635c60da1b146101be57600080fd5b80633659cfe6116100a55780633659cfe6146101185780634162169f1461013a57806341de68301461016c57600080fd5b806301ffc9a7146100c15780632ae9c600146100f6575b600080fd5b3480156100cd57600080fd5b506100e16100dc366004610d1e565b61023e565b60405190151581526020015b60405180910390f35b34801561010257600080fd5b5061010b6102aa565b6040516100ed9190610d48565b34801561012457600080fd5b50610138610133366004610d91565b6102d4565b005b34801561014657600080fd5b5060c9546001600160a01b03165b6040516001600160a01b0390911681526020016100ed565b34801561017857600080fd5b5060006040516100ed9190610dae565b610138610196366004610dec565b610454565b3480156101a757600080fd5b506101b06105c0565b6040519081526020016100ed565b3480156101ca57600080fd5b50610154610685565b3480156101df57600080fd5b506101b061012d5481565b3480156101f657600080fd5b50610138610205366004610d91565b6106bd565b34801561021657600080fd5b506101b07f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f581565b60006001600160e01b0319821663041de68360e41b148061026e57506001600160e01b03198216621574e360e91b145b8061028957506001600160e01b031982166352d1902d60e01b145b806102a457506301ffc9a760e01b6001600160e01b03198316145b92915050565b6102b2610d00565b5060408051606081018252600181526004602082015260009181019190915290565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036103665760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b60648201526084015b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166103c17f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b03161461042c5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b606482015260840161035d565b610435816106cf565b604080516000808252602082019092526104519183919061070c565b50565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036104e15760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b606482015260840161035d565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661053c7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b0316146105a75760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b606482015260840161035d565b6105b0826106cf565b6105bc8282600161070c565b5050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106605760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000606482015260840161035d565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b60006106b87f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b6106c6816108b1565b50600161012d55565b60c9547f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f5906105bc906001600160a01b0316303384600036610925565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156107445761073f836109e1565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561079e575060408051601f3d908101601f1916820190925261079b91810190610eb0565b60015b6108105760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201527f6f6e206973206e6f742055555053000000000000000000000000000000000000606482015260840161035d565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146108a55760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f7860448201527f6961626c65555549440000000000000000000000000000000000000000000000606482015260840161035d565b5061073f838383610aac565b600054610100900460ff1661091c5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840161035d565b61045181610ad7565b604051637ef7c88360e11b81526001600160a01b0387169063fdef9106906109599088908890889088908890600401610ec9565b602060405180830381865afa158015610976573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061099a9190610f1d565b6109d957604051630cb6f8ed60e21b81526001600160a01b0380881660048301528087166024830152851660448201526064810184905260840161035d565b505050505050565b6001600160a01b0381163b610a5e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e747261637400000000000000000000000000000000000000606482015260840161035d565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610ab583610b71565b600082511180610ac25750805b1561073f57610ad18383610bb1565b50505050565b600054610100900460ff16610b425760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840161035d565b60c9805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610b7a816109e1565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060610bd68383604051806060016040528060278152602001610fb360279139610bdd565b9392505050565b6060600080856001600160a01b031685604051610bfa9190610f63565b600060405180830381855af49150503d8060008114610c35576040519150601f19603f3d011682016040523d82523d6000602084013e610c3a565b606091505b5091509150610c4b86838387610c55565b9695505050505050565b60608315610cc4578251600003610cbd576001600160a01b0385163b610cbd5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161035d565b5081610cce565b610cce8383610cd6565b949350505050565b815115610ce65781518083602001fd5b8060405162461bcd60e51b815260040161035d9190610f7f565b60405180606001604052806003906020820280368337509192915050565b600060208284031215610d3057600080fd5b81356001600160e01b031981168114610bd657600080fd5b60608101818360005b6003811015610d7357815160ff16835260209283019290910190600101610d51565b50505092915050565b6001600160a01b038116811461045157600080fd5b600060208284031215610da357600080fd5b8135610bd681610d7c565b6020810160038310610dd057634e487b7160e01b600052602160045260246000fd5b91905290565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215610dff57600080fd5b8235610e0a81610d7c565b9150602083013567ffffffffffffffff80821115610e2757600080fd5b818501915085601f830112610e3b57600080fd5b813581811115610e4d57610e4d610dd6565b604051601f8201601f19908116603f01168101908382118183101715610e7557610e75610dd6565b81604052828152886020848701011115610e8e57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b600060208284031215610ec257600080fd5b5051919050565b60006001600160a01b03808816835280871660208401525084604083015260806060830152826080830152828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b600060208284031215610f2f57600080fd5b81518015158114610bd657600080fd5b60005b83811015610f5a578181015183820152602001610f42565b50506000910152565b60008251610f75818460208701610f3f565b9190910192915050565b6020815260008251806020840152610f9e816040850160208701610f3f565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a","opcodes":"PUSH1 0xA0 PUSH1 0x40 MSTORE ADDRESS PUSH1 0x80 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x14 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1D PUSH2 0x22 JUMP JUMPDEST PUSH2 0xE1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x8E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x27 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320696E697469 PUSH1 0x44 DUP3 ADD MSTORE PUSH7 0x616C697A696E67 PUSH1 0xC8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xFF SWAP1 DUP2 AND EQ PUSH2 0xDF JUMPI PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH2 0xFE6 PUSH2 0x118 PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH2 0x2DE ADD MSTORE DUP2 DUP2 PUSH2 0x368 ADD MSTORE DUP2 DUP2 PUSH2 0x45E ADD MSTORE DUP2 DUP2 PUSH2 0x4E3 ADD MSTORE PUSH2 0x5CD ADD MSTORE PUSH2 0xFE6 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xBC JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x4F1EF286 GT PUSH2 0x74 JUMPI DUP1 PUSH4 0x6ACCAB8C GT PUSH2 0x4E JUMPI DUP1 PUSH4 0x6ACCAB8C EQ PUSH2 0x1D3 JUMPI DUP1 PUSH4 0x8883BBD7 EQ PUSH2 0x1EA JUMPI DUP1 PUSH4 0xC9C4BFCA EQ PUSH2 0x20A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x188 JUMPI DUP1 PUSH4 0x52D1902D EQ PUSH2 0x19B JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0x1BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x3659CFE6 GT PUSH2 0xA5 JUMPI DUP1 PUSH4 0x3659CFE6 EQ PUSH2 0x118 JUMPI DUP1 PUSH4 0x4162169F EQ PUSH2 0x13A JUMPI DUP1 PUSH4 0x41DE6830 EQ PUSH2 0x16C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xC1 JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0xF6 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xCD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xE1 PUSH2 0xDC CALLDATASIZE PUSH1 0x4 PUSH2 0xD1E JUMP JUMPDEST PUSH2 0x23E JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x102 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x10B PUSH2 0x2AA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xED SWAP2 SWAP1 PUSH2 0xD48 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x124 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x138 PUSH2 0x133 CALLDATASIZE PUSH1 0x4 PUSH2 0xD91 JUMP JUMPDEST PUSH2 0x2D4 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x146 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xC9 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xED JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x178 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 PUSH1 0x40 MLOAD PUSH2 0xED SWAP2 SWAP1 PUSH2 0xDAE JUMP JUMPDEST PUSH2 0x138 PUSH2 0x196 CALLDATASIZE PUSH1 0x4 PUSH2 0xDEC JUMP JUMPDEST PUSH2 0x454 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1B0 PUSH2 0x5C0 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xED JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x154 PUSH2 0x685 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1B0 PUSH2 0x12D SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x138 PUSH2 0x205 CALLDATASIZE PUSH1 0x4 PUSH2 0xD91 JUMP JUMPDEST PUSH2 0x6BD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x216 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1B0 PUSH32 0x821B6E3A557148015A918C89E5D092E878A69854A2D1A410635F771BD5A8A3F5 DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x41DE683 PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x26E JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x289 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x52D1902D PUSH1 0xE0 SHL EQ JUMPDEST DUP1 PUSH2 0x2A4 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x2B2 PUSH2 0xD00 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x366 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x19195B1959D85D1958D85B1B PUSH1 0xA2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3C1 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x42C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x6163746976652070726F7879 PUSH1 0xA0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x35D JUMP JUMPDEST PUSH2 0x435 DUP2 PUSH2 0x6CF JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x451 SWAP2 DUP4 SWAP2 SWAP1 PUSH2 0x70C JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x4E1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x19195B1959D85D1958D85B1B PUSH1 0xA2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x35D JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x53C PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x5A7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x6163746976652070726F7879 PUSH1 0xA0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x35D JUMP JUMPDEST PUSH2 0x5B0 DUP3 PUSH2 0x6CF JUMP JUMPDEST PUSH2 0x5BC DUP3 DUP3 PUSH1 0x1 PUSH2 0x70C JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x660 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x38 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x555550535570677261646561626C653A206D757374206E6F742062652063616C PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6C6564207468726F7567682064656C656761746563616C6C0000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x35D JUMP JUMPDEST POP PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6B8 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x6C6 DUP2 PUSH2 0x8B1 JUMP JUMPDEST POP PUSH1 0x1 PUSH2 0x12D SSTORE JUMP JUMPDEST PUSH1 0xC9 SLOAD PUSH32 0x821B6E3A557148015A918C89E5D092E878A69854A2D1A410635F771BD5A8A3F5 SWAP1 PUSH2 0x5BC SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ADDRESS CALLER DUP5 PUSH1 0x0 CALLDATASIZE PUSH2 0x925 JUMP JUMPDEST PUSH32 0x4910FDFA16FED3260ED0E7147F7CC6DA11A60208B5B9406D12A635614FFD9143 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x744 JUMPI PUSH2 0x73F DUP4 PUSH2 0x9E1 JUMP JUMPDEST POP POP POP JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x52D1902D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x79E JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x79B SWAP2 DUP2 ADD SWAP1 PUSH2 0xEB0 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x810 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524331393637557067726164653A206E657720696D706C656D656E74617469 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F6E206973206E6F742055555053000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x35D JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC DUP2 EQ PUSH2 0x8A5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524331393637557067726164653A20756E737570706F727465642070726F78 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6961626C65555549440000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x35D JUMP JUMPDEST POP PUSH2 0x73F DUP4 DUP4 DUP4 PUSH2 0xAAC JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x91C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x35D JUMP JUMPDEST PUSH2 0x451 DUP2 PUSH2 0xAD7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x7EF7C883 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0xFDEF9106 SWAP1 PUSH2 0x959 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0xEC9 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x976 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x99A SWAP2 SWAP1 PUSH2 0xF1D JUMP JUMPDEST PUSH2 0x9D9 JUMPI PUSH1 0x40 MLOAD PUSH4 0xCB6F8ED PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND PUSH1 0x4 DUP4 ADD MSTORE DUP1 DUP8 AND PUSH1 0x24 DUP4 ADD MSTORE DUP6 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x84 ADD PUSH2 0x35D JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND EXTCODESIZE PUSH2 0xA5E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313936373A206E657720696D706C656D656E746174696F6E206973206E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F74206120636F6E747261637400000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x35D JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xAB5 DUP4 PUSH2 0xB71 JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD GT DUP1 PUSH2 0xAC2 JUMPI POP DUP1 JUMPDEST ISZERO PUSH2 0x73F JUMPI PUSH2 0xAD1 DUP4 DUP4 PUSH2 0xBB1 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0xB42 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x35D JUMP JUMPDEST PUSH1 0xC9 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xB7A DUP2 PUSH2 0x9E1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xBD6 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xFB3 PUSH1 0x27 SWAP2 CODECOPY PUSH2 0xBDD JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0xBFA SWAP2 SWAP1 PUSH2 0xF63 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xC35 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xC3A JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0xC4B DUP7 DUP4 DUP4 DUP8 PUSH2 0xC55 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0xCC4 JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0xCBD JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0xCBD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x35D JUMP JUMPDEST POP DUP2 PUSH2 0xCCE JUMP JUMPDEST PUSH2 0xCCE DUP4 DUP4 PUSH2 0xCD6 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0xCE6 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x35D SWAP2 SWAP1 PUSH2 0xF7F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xD30 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0xBD6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0xD73 JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0xD51 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x451 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xDA3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xBD6 DUP2 PUSH2 0xD7C JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH1 0x3 DUP4 LT PUSH2 0xDD0 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 SWAP1 MSTORE SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xDFF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0xE0A DUP2 PUSH2 0xD7C JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xE27 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xE3B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0xE4D JUMPI PUSH2 0xE4D PUSH2 0xDD6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0xE75 JUMPI PUSH2 0xE75 PUSH2 0xDD6 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0xE8E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xEC2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND DUP4 MSTORE DUP1 DUP8 AND PUSH1 0x20 DUP5 ADD MSTORE POP DUP5 PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x80 PUSH1 0x60 DUP4 ADD MSTORE DUP3 PUSH1 0x80 DUP4 ADD MSTORE DUP3 DUP5 PUSH1 0xA0 DUP5 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0xA0 DUP5 DUP5 ADD ADD MSTORE PUSH1 0xA0 PUSH1 0x1F NOT PUSH1 0x1F DUP6 ADD AND DUP4 ADD ADD SWAP1 POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xF2F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xBD6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xF5A JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xF42 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0xF75 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0xF3F JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0xF9E DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0xF3F JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A164 PUSH20 0x6F6C6343000811000A0000000000000000000000 ","sourceMap":"1988:216:53:-:0;;;1198:4:5;1155:48;;1988:216:53;;;;;;;;;-1:-1:-1;1489:22:75;:20;:22::i;:::-;1988:216:53;;5939:280:4;6007:13;;;;;;;6006:14;5998:66;;;;-1:-1:-1;;;5998:66:4;;216:2:92;5998:66:4;;;198:21:92;255:2;235:18;;;228:30;294:34;274:18;;;267:62;-1:-1:-1;;;345:18:92;;;338:37;392:19;;5998:66:4;;;;;;;;6078:12;;6094:15;6078:12;;;:31;6074:139;;6125:12;:30;;-1:-1:-1;;6125:30:4;6140:15;6125:30;;;;;;6174:28;;564:36:92;;;6174:28:4;;552:2:92;537:18;6174:28:4;;;;;;;6074:139;5939:280::o;422:184:92:-;1988:216:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@UPGRADE_PLUGIN_PERMISSION_ID_13556":{"entryPoint":null,"id":13556,"parameterSlots":0,"returnSlots":0},"@__DaoAuthorizableUpgradeable_init_13125":{"entryPoint":2775,"id":13125,"parameterSlots":1,"returnSlots":0},"@__PluginUUPSUpgradeable_init_13570":{"entryPoint":2225,"id":13570,"parameterSlots":1,"returnSlots":0},"@_auth_13211":{"entryPoint":2341,"id":13211,"parameterSlots":6,"returnSlots":0},"@_authorizeUpgrade_13627":{"entryPoint":1743,"id":13627,"parameterSlots":1,"returnSlots":0},"@_getImplementation_76":{"entryPoint":null,"id":76,"parameterSlots":0,"returnSlots":1},"@_msgData_2579":{"entryPoint":null,"id":2579,"parameterSlots":0,"returnSlots":2},"@_msgSender_2570":{"entryPoint":null,"id":2570,"parameterSlots":0,"returnSlots":1},"@_revert_1000":{"entryPoint":3286,"id":1000,"parameterSlots":2,"returnSlots":0},"@_setImplementation_100":{"entryPoint":2529,"id":100,"parameterSlots":1,"returnSlots":0},"@_upgradeToAndCallUUPS_198":{"entryPoint":1804,"id":198,"parameterSlots":3,"returnSlots":0},"@_upgradeToAndCall_145":{"entryPoint":2732,"id":145,"parameterSlots":3,"returnSlots":0},"@_upgradeTo_115":{"entryPoint":2929,"id":115,"parameterSlots":1,"returnSlots":0},"@dao_13135":{"entryPoint":null,"id":13135,"parameterSlots":0,"returnSlots":1},"@functionDelegateCall_888":{"entryPoint":2993,"id":888,"parameterSlots":2,"returnSlots":1},"@functionDelegateCall_917":{"entryPoint":3037,"id":917,"parameterSlots":3,"returnSlots":1},"@getAddressSlot_2699":{"entryPoint":null,"id":2699,"parameterSlots":1,"returnSlots":1},"@getBooleanSlot_2710":{"entryPoint":null,"id":2710,"parameterSlots":1,"returnSlots":1},"@implementation_13616":{"entryPoint":1669,"id":13616,"parameterSlots":0,"returnSlots":1},"@isContract_689":{"entryPoint":null,"id":689,"parameterSlots":1,"returnSlots":1},"@notAnInitializer_11920":{"entryPoint":1725,"id":11920,"parameterSlots":1,"returnSlots":0},"@pluginType_13550":{"entryPoint":null,"id":13550,"parameterSlots":0,"returnSlots":1},"@protocolVersion_14765":{"entryPoint":682,"id":14765,"parameterSlots":0,"returnSlots":1},"@proxiableUUID_616":{"entryPoint":1472,"id":616,"parameterSlots":0,"returnSlots":1},"@state1_11905":{"entryPoint":null,"id":11905,"parameterSlots":0,"returnSlots":0},"@supportsInterface_13606":{"entryPoint":574,"id":13606,"parameterSlots":1,"returnSlots":1},"@supportsInterface_2816":{"entryPoint":null,"id":2816,"parameterSlots":1,"returnSlots":1},"@upgradeToAndCall_659":{"entryPoint":1108,"id":659,"parameterSlots":2,"returnSlots":0},"@upgradeTo_638":{"entryPoint":724,"id":638,"parameterSlots":1,"returnSlots":0},"@verifyCallResultFromTarget_956":{"entryPoint":3157,"id":956,"parameterSlots":4,"returnSlots":1},"abi_decode_tuple_t_address":{"entryPoint":3473,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_bytes_memory_ptr":{"entryPoint":3564,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_bool_fromMemory":{"entryPoint":3869,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes32_fromMemory":{"entryPoint":3760,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes4":{"entryPoint":3358,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_contract$_IDAO_$10865":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":3939,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address_t_address_t_address_t_bytes32__to_t_address_t_address_t_address_t_bytes32__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":5,"returnSlots":1},"abi_encode_tuple_t_address_t_address_t_bytes32_t_bytes_calldata_ptr__to_t_address_t_address_t_bytes32_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":3785,"id":null,"parameterSlots":6,"returnSlots":1},"abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed":{"entryPoint":3400,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_contract$_IDAO_$10865__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_enum$_PluginType_$13330__to_t_uint8__fromStack_reversed":{"entryPoint":3502,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":3967,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_36e108fa7a809b52ab1951dd91c117a7bc9ac5250bdf1aa162d4e104f7edf9eb__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_52f1ead4d9653e13afbd2e90ef2587c30187cd50b2e97d784e3f7a7541247434__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_67f0151b4ad1dcfa0e3302a0cd6019f51582ef1807b37dceb00bd852a514f7f4__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_76b6b6debfc5febf101145a79ecf0b0d2e89e397dfdab2bca99888370411152c__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_8e8e2fbcb586f700b5b14e2c4a650c8d83b9773c31c5fe8962070ea544e11f24__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"copy_memory_to_memory_with_cleanup":{"entryPoint":3903,"id":null,"parameterSlots":3,"returnSlots":0},"panic_error_0x41":{"entryPoint":3542,"id":null,"parameterSlots":0,"returnSlots":0},"validator_revert_address":{"entryPoint":3452,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:9912:92","statements":[{"nodeType":"YulBlock","src":"6:3:92","statements":[]},{"body":{"nodeType":"YulBlock","src":"83:217:92","statements":[{"body":{"nodeType":"YulBlock","src":"129:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"138:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"141:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"131:6:92"},"nodeType":"YulFunctionCall","src":"131:12:92"},"nodeType":"YulExpressionStatement","src":"131:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"104:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"113:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"100:3:92"},"nodeType":"YulFunctionCall","src":"100:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"125:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"96:3:92"},"nodeType":"YulFunctionCall","src":"96:32:92"},"nodeType":"YulIf","src":"93:52:92"},{"nodeType":"YulVariableDeclaration","src":"154:36:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"180:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"167:12:92"},"nodeType":"YulFunctionCall","src":"167:23:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"158:5:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"254:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"263:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"266:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"256:6:92"},"nodeType":"YulFunctionCall","src":"256:12:92"},"nodeType":"YulExpressionStatement","src":"256:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"212:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"223:5:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"234:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"239:10:92","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"230:3:92"},"nodeType":"YulFunctionCall","src":"230:20:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"219:3:92"},"nodeType":"YulFunctionCall","src":"219:32:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"209:2:92"},"nodeType":"YulFunctionCall","src":"209:43:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"202:6:92"},"nodeType":"YulFunctionCall","src":"202:51:92"},"nodeType":"YulIf","src":"199:71:92"},{"nodeType":"YulAssignment","src":"279:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"289:5:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"279:6:92"}]}]},"name":"abi_decode_tuple_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"49:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"60:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"72:6:92","type":""}],"src":"14:286:92"},{"body":{"nodeType":"YulBlock","src":"400:92:92","statements":[{"nodeType":"YulAssignment","src":"410:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"422:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"433:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"418:3:92"},"nodeType":"YulFunctionCall","src":"418:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"410:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"452:9:92"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"477:6:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"470:6:92"},"nodeType":"YulFunctionCall","src":"470:14:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"463:6:92"},"nodeType":"YulFunctionCall","src":"463:22:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"445:6:92"},"nodeType":"YulFunctionCall","src":"445:41:92"},"nodeType":"YulExpressionStatement","src":"445:41:92"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"369:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"380:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"391:4:92","type":""}],"src":"305:187:92"},{"body":{"nodeType":"YulBlock","src":"640:358:92","statements":[{"nodeType":"YulAssignment","src":"650:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"662:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"673:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"658:3:92"},"nodeType":"YulFunctionCall","src":"658:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"650:4:92"}]},{"nodeType":"YulVariableDeclaration","src":"685:20:92","value":{"name":"headStart","nodeType":"YulIdentifier","src":"696:9:92"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"689:3:92","type":""}]},{"nodeType":"YulAssignment","src":"714:16:92","value":{"name":"headStart","nodeType":"YulIdentifier","src":"721:9:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"714:3:92"}]},{"nodeType":"YulVariableDeclaration","src":"739:20:92","value":{"name":"value0","nodeType":"YulIdentifier","src":"753:6:92"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"743:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"768:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"777:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"772:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"834:158:92","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"855:3:92"},{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"870:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"864:5:92"},"nodeType":"YulFunctionCall","src":"864:13:92"},{"kind":"number","nodeType":"YulLiteral","src":"879:4:92","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"860:3:92"},"nodeType":"YulFunctionCall","src":"860:24:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"848:6:92"},"nodeType":"YulFunctionCall","src":"848:37:92"},"nodeType":"YulExpressionStatement","src":"848:37:92"},{"nodeType":"YulVariableDeclaration","src":"898:14:92","value":{"kind":"number","nodeType":"YulLiteral","src":"908:4:92","type":"","value":"0x20"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"902:2:92","type":""}]},{"nodeType":"YulAssignment","src":"925:19:92","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"936:3:92"},{"name":"_1","nodeType":"YulIdentifier","src":"941:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"932:3:92"},"nodeType":"YulFunctionCall","src":"932:12:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"925:3:92"}]},{"nodeType":"YulAssignment","src":"957:25:92","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"971:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"979:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"967:3:92"},"nodeType":"YulFunctionCall","src":"967:15:92"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"957:6:92"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"798:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"801:4:92","type":"","value":"0x03"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"795:2:92"},"nodeType":"YulFunctionCall","src":"795:11:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"807:18:92","statements":[{"nodeType":"YulAssignment","src":"809:14:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"818:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"821:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"814:3:92"},"nodeType":"YulFunctionCall","src":"814:9:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"809:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"791:3:92","statements":[]},"src":"787:205:92"}]},"name":"abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"609:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"620:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"631:4:92","type":""}],"src":"497:501:92"},{"body":{"nodeType":"YulBlock","src":"1048:109:92","statements":[{"body":{"nodeType":"YulBlock","src":"1135:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1144:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1147:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1137:6:92"},"nodeType":"YulFunctionCall","src":"1137:12:92"},"nodeType":"YulExpressionStatement","src":"1137:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1071:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1082:5:92"},{"kind":"number","nodeType":"YulLiteral","src":"1089:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1078:3:92"},"nodeType":"YulFunctionCall","src":"1078:54:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1068:2:92"},"nodeType":"YulFunctionCall","src":"1068:65:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1061:6:92"},"nodeType":"YulFunctionCall","src":"1061:73:92"},"nodeType":"YulIf","src":"1058:93:92"}]},"name":"validator_revert_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1037:5:92","type":""}],"src":"1003:154:92"},{"body":{"nodeType":"YulBlock","src":"1232:177:92","statements":[{"body":{"nodeType":"YulBlock","src":"1278:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1287:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1290:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1280:6:92"},"nodeType":"YulFunctionCall","src":"1280:12:92"},"nodeType":"YulExpressionStatement","src":"1280:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1253:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"1262:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1249:3:92"},"nodeType":"YulFunctionCall","src":"1249:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"1274:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1245:3:92"},"nodeType":"YulFunctionCall","src":"1245:32:92"},"nodeType":"YulIf","src":"1242:52:92"},{"nodeType":"YulVariableDeclaration","src":"1303:36:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1329:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1316:12:92"},"nodeType":"YulFunctionCall","src":"1316:23:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"1307:5:92","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1373:5:92"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"1348:24:92"},"nodeType":"YulFunctionCall","src":"1348:31:92"},"nodeType":"YulExpressionStatement","src":"1348:31:92"},{"nodeType":"YulAssignment","src":"1388:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"1398:5:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1388:6:92"}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1198:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1209:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1221:6:92","type":""}],"src":"1162:247:92"},{"body":{"nodeType":"YulBlock","src":"1529:125:92","statements":[{"nodeType":"YulAssignment","src":"1539:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1551:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1562:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1547:3:92"},"nodeType":"YulFunctionCall","src":"1547:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1539:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1581:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1596:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"1604:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1592:3:92"},"nodeType":"YulFunctionCall","src":"1592:55:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1574:6:92"},"nodeType":"YulFunctionCall","src":"1574:74:92"},"nodeType":"YulExpressionStatement","src":"1574:74:92"}]},"name":"abi_encode_tuple_t_contract$_IDAO_$10865__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1498:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1509:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1520:4:92","type":""}],"src":"1414:240:92"},{"body":{"nodeType":"YulBlock","src":"1774:229:92","statements":[{"nodeType":"YulAssignment","src":"1784:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1796:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1807:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1792:3:92"},"nodeType":"YulFunctionCall","src":"1792:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1784:4:92"}]},{"body":{"nodeType":"YulBlock","src":"1852:111:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1873:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1880:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"1885:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1876:3:92"},"nodeType":"YulFunctionCall","src":"1876:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1866:6:92"},"nodeType":"YulFunctionCall","src":"1866:31:92"},"nodeType":"YulExpressionStatement","src":"1866:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1917:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"1920:4:92","type":"","value":"0x21"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1910:6:92"},"nodeType":"YulFunctionCall","src":"1910:15:92"},"nodeType":"YulExpressionStatement","src":"1910:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1945:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1948:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1938:6:92"},"nodeType":"YulFunctionCall","src":"1938:15:92"},"nodeType":"YulExpressionStatement","src":"1938:15:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1832:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"1840:1:92","type":"","value":"3"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"1829:2:92"},"nodeType":"YulFunctionCall","src":"1829:13:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1822:6:92"},"nodeType":"YulFunctionCall","src":"1822:21:92"},"nodeType":"YulIf","src":"1819:144:92"},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1979:9:92"},{"name":"value0","nodeType":"YulIdentifier","src":"1990:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1972:6:92"},"nodeType":"YulFunctionCall","src":"1972:25:92"},"nodeType":"YulExpressionStatement","src":"1972:25:92"}]},"name":"abi_encode_tuple_t_enum$_PluginType_$13330__to_t_uint8__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1743:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1754:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1765:4:92","type":""}],"src":"1659:344:92"},{"body":{"nodeType":"YulBlock","src":"2040:95:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2057:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2064:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"2069:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2060:3:92"},"nodeType":"YulFunctionCall","src":"2060:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2050:6:92"},"nodeType":"YulFunctionCall","src":"2050:31:92"},"nodeType":"YulExpressionStatement","src":"2050:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2097:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"2100:4:92","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2090:6:92"},"nodeType":"YulFunctionCall","src":"2090:15:92"},"nodeType":"YulExpressionStatement","src":"2090:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2121:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2124:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2114:6:92"},"nodeType":"YulFunctionCall","src":"2114:15:92"},"nodeType":"YulExpressionStatement","src":"2114:15:92"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"2008:127:92"},{"body":{"nodeType":"YulBlock","src":"2236:960:92","statements":[{"body":{"nodeType":"YulBlock","src":"2282:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2291:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2294:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2284:6:92"},"nodeType":"YulFunctionCall","src":"2284:12:92"},"nodeType":"YulExpressionStatement","src":"2284:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2257:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"2266:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2253:3:92"},"nodeType":"YulFunctionCall","src":"2253:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"2278:2:92","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2249:3:92"},"nodeType":"YulFunctionCall","src":"2249:32:92"},"nodeType":"YulIf","src":"2246:52:92"},{"nodeType":"YulVariableDeclaration","src":"2307:36:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2333:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2320:12:92"},"nodeType":"YulFunctionCall","src":"2320:23:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"2311:5:92","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2377:5:92"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"2352:24:92"},"nodeType":"YulFunctionCall","src":"2352:31:92"},"nodeType":"YulExpressionStatement","src":"2352:31:92"},{"nodeType":"YulAssignment","src":"2392:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"2402:5:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2392:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"2416:46:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2447:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2458:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2443:3:92"},"nodeType":"YulFunctionCall","src":"2443:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2430:12:92"},"nodeType":"YulFunctionCall","src":"2430:32:92"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"2420:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2471:28:92","value":{"kind":"number","nodeType":"YulLiteral","src":"2481:18:92","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"2475:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"2526:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2535:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2538:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2528:6:92"},"nodeType":"YulFunctionCall","src":"2528:12:92"},"nodeType":"YulExpressionStatement","src":"2528:12:92"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"2514:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"2522:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2511:2:92"},"nodeType":"YulFunctionCall","src":"2511:14:92"},"nodeType":"YulIf","src":"2508:34:92"},{"nodeType":"YulVariableDeclaration","src":"2551:32:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2565:9:92"},{"name":"offset","nodeType":"YulIdentifier","src":"2576:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2561:3:92"},"nodeType":"YulFunctionCall","src":"2561:22:92"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"2555:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"2631:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2640:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2643:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2633:6:92"},"nodeType":"YulFunctionCall","src":"2633:12:92"},"nodeType":"YulExpressionStatement","src":"2633:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"2610:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"2614:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2606:3:92"},"nodeType":"YulFunctionCall","src":"2606:13:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2621:7:92"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2602:3:92"},"nodeType":"YulFunctionCall","src":"2602:27:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2595:6:92"},"nodeType":"YulFunctionCall","src":"2595:35:92"},"nodeType":"YulIf","src":"2592:55:92"},{"nodeType":"YulVariableDeclaration","src":"2656:26:92","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"2679:2:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2666:12:92"},"nodeType":"YulFunctionCall","src":"2666:16:92"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"2660:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"2705:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"2707:16:92"},"nodeType":"YulFunctionCall","src":"2707:18:92"},"nodeType":"YulExpressionStatement","src":"2707:18:92"}]},"condition":{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"2697:2:92"},{"name":"_1","nodeType":"YulIdentifier","src":"2701:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2694:2:92"},"nodeType":"YulFunctionCall","src":"2694:10:92"},"nodeType":"YulIf","src":"2691:36:92"},{"nodeType":"YulVariableDeclaration","src":"2736:17:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2750:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"2746:3:92"},"nodeType":"YulFunctionCall","src":"2746:7:92"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"2740:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2762:23:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2782:2:92","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2776:5:92"},"nodeType":"YulFunctionCall","src":"2776:9:92"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"2766:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2794:71:92","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"2816:6:92"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"2840:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"2844:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2836:3:92"},"nodeType":"YulFunctionCall","src":"2836:13:92"},{"name":"_4","nodeType":"YulIdentifier","src":"2851:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2832:3:92"},"nodeType":"YulFunctionCall","src":"2832:22:92"},{"kind":"number","nodeType":"YulLiteral","src":"2856:2:92","type":"","value":"63"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2828:3:92"},"nodeType":"YulFunctionCall","src":"2828:31:92"},{"name":"_4","nodeType":"YulIdentifier","src":"2861:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2824:3:92"},"nodeType":"YulFunctionCall","src":"2824:40:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2812:3:92"},"nodeType":"YulFunctionCall","src":"2812:53:92"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"2798:10:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"2924:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"2926:16:92"},"nodeType":"YulFunctionCall","src":"2926:18:92"},"nodeType":"YulExpressionStatement","src":"2926:18:92"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"2883:10:92"},{"name":"_1","nodeType":"YulIdentifier","src":"2895:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2880:2:92"},"nodeType":"YulFunctionCall","src":"2880:18:92"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"2903:10:92"},{"name":"memPtr","nodeType":"YulIdentifier","src":"2915:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2900:2:92"},"nodeType":"YulFunctionCall","src":"2900:22:92"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"2877:2:92"},"nodeType":"YulFunctionCall","src":"2877:46:92"},"nodeType":"YulIf","src":"2874:72:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2962:2:92","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"2966:10:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2955:6:92"},"nodeType":"YulFunctionCall","src":"2955:22:92"},"nodeType":"YulExpressionStatement","src":"2955:22:92"},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"2993:6:92"},{"name":"_3","nodeType":"YulIdentifier","src":"3001:2:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2986:6:92"},"nodeType":"YulFunctionCall","src":"2986:18:92"},"nodeType":"YulExpressionStatement","src":"2986:18:92"},{"body":{"nodeType":"YulBlock","src":"3050:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3059:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3062:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3052:6:92"},"nodeType":"YulFunctionCall","src":"3052:12:92"},"nodeType":"YulExpressionStatement","src":"3052:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"3027:2:92"},{"name":"_3","nodeType":"YulIdentifier","src":"3031:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3023:3:92"},"nodeType":"YulFunctionCall","src":"3023:11:92"},{"kind":"number","nodeType":"YulLiteral","src":"3036:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3019:3:92"},"nodeType":"YulFunctionCall","src":"3019:20:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3041:7:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3016:2:92"},"nodeType":"YulFunctionCall","src":"3016:33:92"},"nodeType":"YulIf","src":"3013:53:92"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"3092:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"3100:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3088:3:92"},"nodeType":"YulFunctionCall","src":"3088:15:92"},{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"3109:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"3113:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3105:3:92"},"nodeType":"YulFunctionCall","src":"3105:11:92"},{"name":"_3","nodeType":"YulIdentifier","src":"3118:2:92"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"3075:12:92"},"nodeType":"YulFunctionCall","src":"3075:46:92"},"nodeType":"YulExpressionStatement","src":"3075:46:92"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"3145:6:92"},{"name":"_3","nodeType":"YulIdentifier","src":"3153:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3141:3:92"},"nodeType":"YulFunctionCall","src":"3141:15:92"},{"kind":"number","nodeType":"YulLiteral","src":"3158:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3137:3:92"},"nodeType":"YulFunctionCall","src":"3137:24:92"},{"kind":"number","nodeType":"YulLiteral","src":"3163:1:92","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3130:6:92"},"nodeType":"YulFunctionCall","src":"3130:35:92"},"nodeType":"YulExpressionStatement","src":"3130:35:92"},{"nodeType":"YulAssignment","src":"3174:16:92","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"3184:6:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"3174:6:92"}]}]},"name":"abi_decode_tuple_t_addresst_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2194:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2205:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2217:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2225:6:92","type":""}],"src":"2140:1056:92"},{"body":{"nodeType":"YulBlock","src":"3302:76:92","statements":[{"nodeType":"YulAssignment","src":"3312:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3324:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3335:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3320:3:92"},"nodeType":"YulFunctionCall","src":"3320:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3312:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3354:9:92"},{"name":"value0","nodeType":"YulIdentifier","src":"3365:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3347:6:92"},"nodeType":"YulFunctionCall","src":"3347:25:92"},"nodeType":"YulExpressionStatement","src":"3347:25:92"}]},"name":"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3271:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3282:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3293:4:92","type":""}],"src":"3201:177:92"},{"body":{"nodeType":"YulBlock","src":"3484:125:92","statements":[{"nodeType":"YulAssignment","src":"3494:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3506:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3517:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3502:3:92"},"nodeType":"YulFunctionCall","src":"3502:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3494:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3536:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3551:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"3559:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3547:3:92"},"nodeType":"YulFunctionCall","src":"3547:55:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3529:6:92"},"nodeType":"YulFunctionCall","src":"3529:74:92"},"nodeType":"YulExpressionStatement","src":"3529:74:92"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3453:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3464:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3475:4:92","type":""}],"src":"3383:226:92"},{"body":{"nodeType":"YulBlock","src":"3715:76:92","statements":[{"nodeType":"YulAssignment","src":"3725:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3737:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3748:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3733:3:92"},"nodeType":"YulFunctionCall","src":"3733:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3725:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3767:9:92"},{"name":"value0","nodeType":"YulIdentifier","src":"3778:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3760:6:92"},"nodeType":"YulFunctionCall","src":"3760:25:92"},"nodeType":"YulExpressionStatement","src":"3760:25:92"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3684:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3695:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3706:4:92","type":""}],"src":"3614:177:92"},{"body":{"nodeType":"YulBlock","src":"3880:177:92","statements":[{"body":{"nodeType":"YulBlock","src":"3926:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3935:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3938:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3928:6:92"},"nodeType":"YulFunctionCall","src":"3928:12:92"},"nodeType":"YulExpressionStatement","src":"3928:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3901:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"3910:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3897:3:92"},"nodeType":"YulFunctionCall","src":"3897:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"3922:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3893:3:92"},"nodeType":"YulFunctionCall","src":"3893:32:92"},"nodeType":"YulIf","src":"3890:52:92"},{"nodeType":"YulVariableDeclaration","src":"3951:36:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3977:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3964:12:92"},"nodeType":"YulFunctionCall","src":"3964:23:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"3955:5:92","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4021:5:92"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"3996:24:92"},"nodeType":"YulFunctionCall","src":"3996:31:92"},"nodeType":"YulExpressionStatement","src":"3996:31:92"},{"nodeType":"YulAssignment","src":"4036:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"4046:5:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"4036:6:92"}]}]},"name":"abi_decode_tuple_t_contract$_IDAO_$10865","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3846:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3857:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3869:6:92","type":""}],"src":"3796:261:92"},{"body":{"nodeType":"YulBlock","src":"4236:234:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4253:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4264:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4246:6:92"},"nodeType":"YulFunctionCall","src":"4246:21:92"},"nodeType":"YulExpressionStatement","src":"4246:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4287:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4298:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4283:3:92"},"nodeType":"YulFunctionCall","src":"4283:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"4303:2:92","type":"","value":"44"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4276:6:92"},"nodeType":"YulFunctionCall","src":"4276:30:92"},"nodeType":"YulExpressionStatement","src":"4276:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4326:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4337:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4322:3:92"},"nodeType":"YulFunctionCall","src":"4322:18:92"},{"hexValue":"46756e6374696f6e206d7573742062652063616c6c6564207468726f75676820","kind":"string","nodeType":"YulLiteral","src":"4342:34:92","type":"","value":"Function must be called through "}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4315:6:92"},"nodeType":"YulFunctionCall","src":"4315:62:92"},"nodeType":"YulExpressionStatement","src":"4315:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4397:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4408:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4393:3:92"},"nodeType":"YulFunctionCall","src":"4393:18:92"},{"hexValue":"64656c656761746563616c6c","kind":"string","nodeType":"YulLiteral","src":"4413:14:92","type":"","value":"delegatecall"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4386:6:92"},"nodeType":"YulFunctionCall","src":"4386:42:92"},"nodeType":"YulExpressionStatement","src":"4386:42:92"},{"nodeType":"YulAssignment","src":"4437:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4449:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4460:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4445:3:92"},"nodeType":"YulFunctionCall","src":"4445:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4437:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_36e108fa7a809b52ab1951dd91c117a7bc9ac5250bdf1aa162d4e104f7edf9eb__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4213:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4227:4:92","type":""}],"src":"4062:408:92"},{"body":{"nodeType":"YulBlock","src":"4649:234:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4666:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4677:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4659:6:92"},"nodeType":"YulFunctionCall","src":"4659:21:92"},"nodeType":"YulExpressionStatement","src":"4659:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4700:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4711:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4696:3:92"},"nodeType":"YulFunctionCall","src":"4696:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"4716:2:92","type":"","value":"44"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4689:6:92"},"nodeType":"YulFunctionCall","src":"4689:30:92"},"nodeType":"YulExpressionStatement","src":"4689:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4739:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4750:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4735:3:92"},"nodeType":"YulFunctionCall","src":"4735:18:92"},{"hexValue":"46756e6374696f6e206d7573742062652063616c6c6564207468726f75676820","kind":"string","nodeType":"YulLiteral","src":"4755:34:92","type":"","value":"Function must be called through "}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4728:6:92"},"nodeType":"YulFunctionCall","src":"4728:62:92"},"nodeType":"YulExpressionStatement","src":"4728:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4810:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4821:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4806:3:92"},"nodeType":"YulFunctionCall","src":"4806:18:92"},{"hexValue":"6163746976652070726f7879","kind":"string","nodeType":"YulLiteral","src":"4826:14:92","type":"","value":"active proxy"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4799:6:92"},"nodeType":"YulFunctionCall","src":"4799:42:92"},"nodeType":"YulExpressionStatement","src":"4799:42:92"},{"nodeType":"YulAssignment","src":"4850:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4862:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4873:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4858:3:92"},"nodeType":"YulFunctionCall","src":"4858:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4850:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_52f1ead4d9653e13afbd2e90ef2587c30187cd50b2e97d784e3f7a7541247434__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4626:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4640:4:92","type":""}],"src":"4475:408:92"},{"body":{"nodeType":"YulBlock","src":"5062:246:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5079:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5090:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5072:6:92"},"nodeType":"YulFunctionCall","src":"5072:21:92"},"nodeType":"YulExpressionStatement","src":"5072:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5113:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5124:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5109:3:92"},"nodeType":"YulFunctionCall","src":"5109:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"5129:2:92","type":"","value":"56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5102:6:92"},"nodeType":"YulFunctionCall","src":"5102:30:92"},"nodeType":"YulExpressionStatement","src":"5102:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5152:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5163:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5148:3:92"},"nodeType":"YulFunctionCall","src":"5148:18:92"},{"hexValue":"555550535570677261646561626c653a206d757374206e6f742062652063616c","kind":"string","nodeType":"YulLiteral","src":"5168:34:92","type":"","value":"UUPSUpgradeable: must not be cal"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5141:6:92"},"nodeType":"YulFunctionCall","src":"5141:62:92"},"nodeType":"YulExpressionStatement","src":"5141:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5223:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5234:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5219:3:92"},"nodeType":"YulFunctionCall","src":"5219:18:92"},{"hexValue":"6c6564207468726f7567682064656c656761746563616c6c","kind":"string","nodeType":"YulLiteral","src":"5239:26:92","type":"","value":"led through delegatecall"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5212:6:92"},"nodeType":"YulFunctionCall","src":"5212:54:92"},"nodeType":"YulExpressionStatement","src":"5212:54:92"},{"nodeType":"YulAssignment","src":"5275:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5287:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5298:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5283:3:92"},"nodeType":"YulFunctionCall","src":"5283:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5275:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_67f0151b4ad1dcfa0e3302a0cd6019f51582ef1807b37dceb00bd852a514f7f4__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5039:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5053:4:92","type":""}],"src":"4888:420:92"},{"body":{"nodeType":"YulBlock","src":"5394:103:92","statements":[{"body":{"nodeType":"YulBlock","src":"5440:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5449:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5452:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5442:6:92"},"nodeType":"YulFunctionCall","src":"5442:12:92"},"nodeType":"YulExpressionStatement","src":"5442:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"5415:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"5424:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5411:3:92"},"nodeType":"YulFunctionCall","src":"5411:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"5436:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"5407:3:92"},"nodeType":"YulFunctionCall","src":"5407:32:92"},"nodeType":"YulIf","src":"5404:52:92"},{"nodeType":"YulAssignment","src":"5465:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5481:9:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5475:5:92"},"nodeType":"YulFunctionCall","src":"5475:16:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"5465:6:92"}]}]},"name":"abi_decode_tuple_t_bytes32_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5360:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"5371:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"5383:6:92","type":""}],"src":"5313:184:92"},{"body":{"nodeType":"YulBlock","src":"5676:236:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5693:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5704:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5686:6:92"},"nodeType":"YulFunctionCall","src":"5686:21:92"},"nodeType":"YulExpressionStatement","src":"5686:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5727:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5738:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5723:3:92"},"nodeType":"YulFunctionCall","src":"5723:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"5743:2:92","type":"","value":"46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5716:6:92"},"nodeType":"YulFunctionCall","src":"5716:30:92"},"nodeType":"YulExpressionStatement","src":"5716:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5766:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5777:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5762:3:92"},"nodeType":"YulFunctionCall","src":"5762:18:92"},{"hexValue":"45524331393637557067726164653a206e657720696d706c656d656e74617469","kind":"string","nodeType":"YulLiteral","src":"5782:34:92","type":"","value":"ERC1967Upgrade: new implementati"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5755:6:92"},"nodeType":"YulFunctionCall","src":"5755:62:92"},"nodeType":"YulExpressionStatement","src":"5755:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5837:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5848:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5833:3:92"},"nodeType":"YulFunctionCall","src":"5833:18:92"},{"hexValue":"6f6e206973206e6f742055555053","kind":"string","nodeType":"YulLiteral","src":"5853:16:92","type":"","value":"on is not UUPS"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5826:6:92"},"nodeType":"YulFunctionCall","src":"5826:44:92"},"nodeType":"YulExpressionStatement","src":"5826:44:92"},{"nodeType":"YulAssignment","src":"5879:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5891:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5902:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5887:3:92"},"nodeType":"YulFunctionCall","src":"5887:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5879:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_8e8e2fbcb586f700b5b14e2c4a650c8d83b9773c31c5fe8962070ea544e11f24__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5653:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5667:4:92","type":""}],"src":"5502:410:92"},{"body":{"nodeType":"YulBlock","src":"6091:231:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6108:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6119:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6101:6:92"},"nodeType":"YulFunctionCall","src":"6101:21:92"},"nodeType":"YulExpressionStatement","src":"6101:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6142:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6153:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6138:3:92"},"nodeType":"YulFunctionCall","src":"6138:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"6158:2:92","type":"","value":"41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6131:6:92"},"nodeType":"YulFunctionCall","src":"6131:30:92"},"nodeType":"YulExpressionStatement","src":"6131:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6181:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6192:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6177:3:92"},"nodeType":"YulFunctionCall","src":"6177:18:92"},{"hexValue":"45524331393637557067726164653a20756e737570706f727465642070726f78","kind":"string","nodeType":"YulLiteral","src":"6197:34:92","type":"","value":"ERC1967Upgrade: unsupported prox"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6170:6:92"},"nodeType":"YulFunctionCall","src":"6170:62:92"},"nodeType":"YulExpressionStatement","src":"6170:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6252:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6263:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6248:3:92"},"nodeType":"YulFunctionCall","src":"6248:18:92"},{"hexValue":"6961626c6555554944","kind":"string","nodeType":"YulLiteral","src":"6268:11:92","type":"","value":"iableUUID"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6241:6:92"},"nodeType":"YulFunctionCall","src":"6241:39:92"},"nodeType":"YulExpressionStatement","src":"6241:39:92"},{"nodeType":"YulAssignment","src":"6289:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6301:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6312:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6297:3:92"},"nodeType":"YulFunctionCall","src":"6297:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6289:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_76b6b6debfc5febf101145a79ecf0b0d2e89e397dfdab2bca99888370411152c__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6068:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6082:4:92","type":""}],"src":"5917:405:92"},{"body":{"nodeType":"YulBlock","src":"6501:233:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6518:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6529:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6511:6:92"},"nodeType":"YulFunctionCall","src":"6511:21:92"},"nodeType":"YulExpressionStatement","src":"6511:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6552:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6563:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6548:3:92"},"nodeType":"YulFunctionCall","src":"6548:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"6568:2:92","type":"","value":"43"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6541:6:92"},"nodeType":"YulFunctionCall","src":"6541:30:92"},"nodeType":"YulExpressionStatement","src":"6541:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6591:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6602:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6587:3:92"},"nodeType":"YulFunctionCall","src":"6587:18:92"},{"hexValue":"496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069","kind":"string","nodeType":"YulLiteral","src":"6607:34:92","type":"","value":"Initializable: contract is not i"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6580:6:92"},"nodeType":"YulFunctionCall","src":"6580:62:92"},"nodeType":"YulExpressionStatement","src":"6580:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6662:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6673:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6658:3:92"},"nodeType":"YulFunctionCall","src":"6658:18:92"},{"hexValue":"6e697469616c697a696e67","kind":"string","nodeType":"YulLiteral","src":"6678:13:92","type":"","value":"nitializing"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6651:6:92"},"nodeType":"YulFunctionCall","src":"6651:41:92"},"nodeType":"YulExpressionStatement","src":"6651:41:92"},{"nodeType":"YulAssignment","src":"6701:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6713:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6724:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6709:3:92"},"nodeType":"YulFunctionCall","src":"6709:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6701:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6478:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6492:4:92","type":""}],"src":"6327:407:92"},{"body":{"nodeType":"YulBlock","src":"6952:472:92","statements":[{"nodeType":"YulVariableDeclaration","src":"6962:52:92","value":{"kind":"number","nodeType":"YulLiteral","src":"6972:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"6966:2:92","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7030:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7045:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"7053:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7041:3:92"},"nodeType":"YulFunctionCall","src":"7041:15:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7023:6:92"},"nodeType":"YulFunctionCall","src":"7023:34:92"},"nodeType":"YulExpressionStatement","src":"7023:34:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7077:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7088:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7073:3:92"},"nodeType":"YulFunctionCall","src":"7073:18:92"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"7097:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"7105:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7093:3:92"},"nodeType":"YulFunctionCall","src":"7093:15:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7066:6:92"},"nodeType":"YulFunctionCall","src":"7066:43:92"},"nodeType":"YulExpressionStatement","src":"7066:43:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7129:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7140:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7125:3:92"},"nodeType":"YulFunctionCall","src":"7125:18:92"},{"name":"value2","nodeType":"YulIdentifier","src":"7145:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7118:6:92"},"nodeType":"YulFunctionCall","src":"7118:34:92"},"nodeType":"YulExpressionStatement","src":"7118:34:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7172:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7183:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7168:3:92"},"nodeType":"YulFunctionCall","src":"7168:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"7188:3:92","type":"","value":"128"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7161:6:92"},"nodeType":"YulFunctionCall","src":"7161:31:92"},"nodeType":"YulExpressionStatement","src":"7161:31:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7212:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7223:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7208:3:92"},"nodeType":"YulFunctionCall","src":"7208:19:92"},{"name":"value4","nodeType":"YulIdentifier","src":"7229:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7201:6:92"},"nodeType":"YulFunctionCall","src":"7201:35:92"},"nodeType":"YulExpressionStatement","src":"7201:35:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7262:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7273:3:92","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7258:3:92"},"nodeType":"YulFunctionCall","src":"7258:19:92"},{"name":"value3","nodeType":"YulIdentifier","src":"7279:6:92"},{"name":"value4","nodeType":"YulIdentifier","src":"7287:6:92"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"7245:12:92"},"nodeType":"YulFunctionCall","src":"7245:49:92"},"nodeType":"YulExpressionStatement","src":"7245:49:92"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7318:9:92"},{"name":"value4","nodeType":"YulIdentifier","src":"7329:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7314:3:92"},"nodeType":"YulFunctionCall","src":"7314:22:92"},{"kind":"number","nodeType":"YulLiteral","src":"7338:3:92","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7310:3:92"},"nodeType":"YulFunctionCall","src":"7310:32:92"},{"kind":"number","nodeType":"YulLiteral","src":"7344:1:92","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7303:6:92"},"nodeType":"YulFunctionCall","src":"7303:43:92"},"nodeType":"YulExpressionStatement","src":"7303:43:92"},{"nodeType":"YulAssignment","src":"7355:63:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7371:9:92"},{"arguments":[{"arguments":[{"name":"value4","nodeType":"YulIdentifier","src":"7390:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"7398:2:92","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7386:3:92"},"nodeType":"YulFunctionCall","src":"7386:15:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7407:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"7403:3:92"},"nodeType":"YulFunctionCall","src":"7403:7:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7382:3:92"},"nodeType":"YulFunctionCall","src":"7382:29:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7367:3:92"},"nodeType":"YulFunctionCall","src":"7367:45:92"},{"kind":"number","nodeType":"YulLiteral","src":"7414:3:92","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7363:3:92"},"nodeType":"YulFunctionCall","src":"7363:55:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7355:4:92"}]}]},"name":"abi_encode_tuple_t_address_t_address_t_bytes32_t_bytes_calldata_ptr__to_t_address_t_address_t_bytes32_t_bytes_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6889:9:92","type":""},{"name":"value4","nodeType":"YulTypedName","src":"6900:6:92","type":""},{"name":"value3","nodeType":"YulTypedName","src":"6908:6:92","type":""},{"name":"value2","nodeType":"YulTypedName","src":"6916:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"6924:6:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"6932:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6943:4:92","type":""}],"src":"6739:685:92"},{"body":{"nodeType":"YulBlock","src":"7507:199:92","statements":[{"body":{"nodeType":"YulBlock","src":"7553:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7562:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7565:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7555:6:92"},"nodeType":"YulFunctionCall","src":"7555:12:92"},"nodeType":"YulExpressionStatement","src":"7555:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"7528:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"7537:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"7524:3:92"},"nodeType":"YulFunctionCall","src":"7524:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"7549:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"7520:3:92"},"nodeType":"YulFunctionCall","src":"7520:32:92"},"nodeType":"YulIf","src":"7517:52:92"},{"nodeType":"YulVariableDeclaration","src":"7578:29:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7597:9:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"7591:5:92"},"nodeType":"YulFunctionCall","src":"7591:16:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"7582:5:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"7660:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7669:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7672:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7662:6:92"},"nodeType":"YulFunctionCall","src":"7662:12:92"},"nodeType":"YulExpressionStatement","src":"7662:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7629:5:92"},{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7650:5:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"7643:6:92"},"nodeType":"YulFunctionCall","src":"7643:13:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"7636:6:92"},"nodeType":"YulFunctionCall","src":"7636:21:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"7626:2:92"},"nodeType":"YulFunctionCall","src":"7626:32:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"7619:6:92"},"nodeType":"YulFunctionCall","src":"7619:40:92"},"nodeType":"YulIf","src":"7616:60:92"},{"nodeType":"YulAssignment","src":"7685:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"7695:5:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"7685:6:92"}]}]},"name":"abi_decode_tuple_t_bool_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7473:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"7484:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"7496:6:92","type":""}],"src":"7429:277:92"},{"body":{"nodeType":"YulBlock","src":"7896:294:92","statements":[{"nodeType":"YulAssignment","src":"7906:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7918:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7929:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7914:3:92"},"nodeType":"YulFunctionCall","src":"7914:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7906:4:92"}]},{"nodeType":"YulVariableDeclaration","src":"7942:52:92","value":{"kind":"number","nodeType":"YulLiteral","src":"7952:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"7946:2:92","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8010:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"8025:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"8033:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8021:3:92"},"nodeType":"YulFunctionCall","src":"8021:15:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8003:6:92"},"nodeType":"YulFunctionCall","src":"8003:34:92"},"nodeType":"YulExpressionStatement","src":"8003:34:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8057:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8068:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8053:3:92"},"nodeType":"YulFunctionCall","src":"8053:18:92"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"8077:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"8085:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8073:3:92"},"nodeType":"YulFunctionCall","src":"8073:15:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8046:6:92"},"nodeType":"YulFunctionCall","src":"8046:43:92"},"nodeType":"YulExpressionStatement","src":"8046:43:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8109:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8120:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8105:3:92"},"nodeType":"YulFunctionCall","src":"8105:18:92"},{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"8129:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"8137:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8125:3:92"},"nodeType":"YulFunctionCall","src":"8125:15:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8098:6:92"},"nodeType":"YulFunctionCall","src":"8098:43:92"},"nodeType":"YulExpressionStatement","src":"8098:43:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8161:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8172:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8157:3:92"},"nodeType":"YulFunctionCall","src":"8157:18:92"},{"name":"value3","nodeType":"YulIdentifier","src":"8177:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8150:6:92"},"nodeType":"YulFunctionCall","src":"8150:34:92"},"nodeType":"YulExpressionStatement","src":"8150:34:92"}]},"name":"abi_encode_tuple_t_address_t_address_t_address_t_bytes32__to_t_address_t_address_t_address_t_bytes32__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7841:9:92","type":""},{"name":"value3","nodeType":"YulTypedName","src":"7852:6:92","type":""},{"name":"value2","nodeType":"YulTypedName","src":"7860:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"7868:6:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"7876:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7887:4:92","type":""}],"src":"7711:479:92"},{"body":{"nodeType":"YulBlock","src":"8369:235:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8386:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8397:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8379:6:92"},"nodeType":"YulFunctionCall","src":"8379:21:92"},"nodeType":"YulExpressionStatement","src":"8379:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8420:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8431:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8416:3:92"},"nodeType":"YulFunctionCall","src":"8416:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"8436:2:92","type":"","value":"45"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8409:6:92"},"nodeType":"YulFunctionCall","src":"8409:30:92"},"nodeType":"YulExpressionStatement","src":"8409:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8459:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8470:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8455:3:92"},"nodeType":"YulFunctionCall","src":"8455:18:92"},{"hexValue":"455243313936373a206e657720696d706c656d656e746174696f6e206973206e","kind":"string","nodeType":"YulLiteral","src":"8475:34:92","type":"","value":"ERC1967: new implementation is n"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8448:6:92"},"nodeType":"YulFunctionCall","src":"8448:62:92"},"nodeType":"YulExpressionStatement","src":"8448:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8530:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8541:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8526:3:92"},"nodeType":"YulFunctionCall","src":"8526:18:92"},{"hexValue":"6f74206120636f6e7472616374","kind":"string","nodeType":"YulLiteral","src":"8546:15:92","type":"","value":"ot a contract"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8519:6:92"},"nodeType":"YulFunctionCall","src":"8519:43:92"},"nodeType":"YulExpressionStatement","src":"8519:43:92"},{"nodeType":"YulAssignment","src":"8571:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8583:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8594:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8579:3:92"},"nodeType":"YulFunctionCall","src":"8579:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"8571:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8346:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"8360:4:92","type":""}],"src":"8195:409:92"},{"body":{"nodeType":"YulBlock","src":"8675:184:92","statements":[{"nodeType":"YulVariableDeclaration","src":"8685:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"8694:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"8689:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"8754:63:92","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"8779:3:92"},{"name":"i","nodeType":"YulIdentifier","src":"8784:1:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8775:3:92"},"nodeType":"YulFunctionCall","src":"8775:11:92"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"8798:3:92"},{"name":"i","nodeType":"YulIdentifier","src":"8803:1:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8794:3:92"},"nodeType":"YulFunctionCall","src":"8794:11:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"8788:5:92"},"nodeType":"YulFunctionCall","src":"8788:18:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8768:6:92"},"nodeType":"YulFunctionCall","src":"8768:39:92"},"nodeType":"YulExpressionStatement","src":"8768:39:92"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"8715:1:92"},{"name":"length","nodeType":"YulIdentifier","src":"8718:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"8712:2:92"},"nodeType":"YulFunctionCall","src":"8712:13:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"8726:19:92","statements":[{"nodeType":"YulAssignment","src":"8728:15:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"8737:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"8740:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8733:3:92"},"nodeType":"YulFunctionCall","src":"8733:10:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"8728:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"8708:3:92","statements":[]},"src":"8704:113:92"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"8837:3:92"},{"name":"length","nodeType":"YulIdentifier","src":"8842:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8833:3:92"},"nodeType":"YulFunctionCall","src":"8833:16:92"},{"kind":"number","nodeType":"YulLiteral","src":"8851:1:92","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8826:6:92"},"nodeType":"YulFunctionCall","src":"8826:27:92"},"nodeType":"YulExpressionStatement","src":"8826:27:92"}]},"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"8653:3:92","type":""},{"name":"dst","nodeType":"YulTypedName","src":"8658:3:92","type":""},{"name":"length","nodeType":"YulTypedName","src":"8663:6:92","type":""}],"src":"8609:250:92"},{"body":{"nodeType":"YulBlock","src":"9001:150:92","statements":[{"nodeType":"YulVariableDeclaration","src":"9011:27:92","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"9031:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"9025:5:92"},"nodeType":"YulFunctionCall","src":"9025:13:92"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"9015:6:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"9086:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"9094:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9082:3:92"},"nodeType":"YulFunctionCall","src":"9082:17:92"},{"name":"pos","nodeType":"YulIdentifier","src":"9101:3:92"},{"name":"length","nodeType":"YulIdentifier","src":"9106:6:92"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"9047:34:92"},"nodeType":"YulFunctionCall","src":"9047:66:92"},"nodeType":"YulExpressionStatement","src":"9047:66:92"},{"nodeType":"YulAssignment","src":"9122:23:92","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"9133:3:92"},{"name":"length","nodeType":"YulIdentifier","src":"9138:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9129:3:92"},"nodeType":"YulFunctionCall","src":"9129:16:92"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"9122:3:92"}]}]},"name":"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"8977:3:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"8982:6:92","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"8993:3:92","type":""}],"src":"8864:287:92"},{"body":{"nodeType":"YulBlock","src":"9330:179:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9347:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9358:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9340:6:92"},"nodeType":"YulFunctionCall","src":"9340:21:92"},"nodeType":"YulExpressionStatement","src":"9340:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9381:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9392:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9377:3:92"},"nodeType":"YulFunctionCall","src":"9377:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"9397:2:92","type":"","value":"29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9370:6:92"},"nodeType":"YulFunctionCall","src":"9370:30:92"},"nodeType":"YulExpressionStatement","src":"9370:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9420:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9431:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9416:3:92"},"nodeType":"YulFunctionCall","src":"9416:18:92"},{"hexValue":"416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374","kind":"string","nodeType":"YulLiteral","src":"9436:31:92","type":"","value":"Address: call to non-contract"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9409:6:92"},"nodeType":"YulFunctionCall","src":"9409:59:92"},"nodeType":"YulExpressionStatement","src":"9409:59:92"},{"nodeType":"YulAssignment","src":"9477:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9489:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9500:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9485:3:92"},"nodeType":"YulFunctionCall","src":"9485:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"9477:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9307:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"9321:4:92","type":""}],"src":"9156:353:92"},{"body":{"nodeType":"YulBlock","src":"9635:275:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9652:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9663:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9645:6:92"},"nodeType":"YulFunctionCall","src":"9645:21:92"},"nodeType":"YulExpressionStatement","src":"9645:21:92"},{"nodeType":"YulVariableDeclaration","src":"9675:27:92","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"9695:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"9689:5:92"},"nodeType":"YulFunctionCall","src":"9689:13:92"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"9679:6:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9722:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9733:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9718:3:92"},"nodeType":"YulFunctionCall","src":"9718:18:92"},{"name":"length","nodeType":"YulIdentifier","src":"9738:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9711:6:92"},"nodeType":"YulFunctionCall","src":"9711:34:92"},"nodeType":"YulExpressionStatement","src":"9711:34:92"},{"expression":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"9793:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"9801:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9789:3:92"},"nodeType":"YulFunctionCall","src":"9789:15:92"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9810:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9821:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9806:3:92"},"nodeType":"YulFunctionCall","src":"9806:18:92"},{"name":"length","nodeType":"YulIdentifier","src":"9826:6:92"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"9754:34:92"},"nodeType":"YulFunctionCall","src":"9754:79:92"},"nodeType":"YulExpressionStatement","src":"9754:79:92"},{"nodeType":"YulAssignment","src":"9842:62:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9858:9:92"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"9877:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"9885:2:92","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9873:3:92"},"nodeType":"YulFunctionCall","src":"9873:15:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9894:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"9890:3:92"},"nodeType":"YulFunctionCall","src":"9890:7:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"9869:3:92"},"nodeType":"YulFunctionCall","src":"9869:29:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9854:3:92"},"nodeType":"YulFunctionCall","src":"9854:45:92"},{"kind":"number","nodeType":"YulLiteral","src":"9901:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9850:3:92"},"nodeType":"YulFunctionCall","src":"9850:54:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"9842:4:92"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9604:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"9615:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"9626:4:92","type":""}],"src":"9514:396:92"}]},"contents":"{\n { }\n function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n if iszero(eq(value, and(value, shl(224, 0xffffffff)))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 96)\n let pos := headStart\n pos := headStart\n let srcPtr := value0\n let i := 0\n for { } lt(i, 0x03) { i := add(i, 1) }\n {\n mstore(pos, and(mload(srcPtr), 0xff))\n let _1 := 0x20\n pos := add(pos, _1)\n srcPtr := add(srcPtr, _1)\n }\n }\n function validator_revert_address(value)\n {\n if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n }\n function abi_encode_tuple_t_contract$_IDAO_$10865__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_encode_tuple_t_enum$_PluginType_$13330__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n if iszero(lt(value0, 3))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x21)\n revert(0, 0x24)\n }\n mstore(headStart, value0)\n }\n function panic_error_0x41()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function abi_decode_tuple_t_addresst_bytes_memory_ptr(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n let offset := calldataload(add(headStart, 32))\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n let _2 := add(headStart, offset)\n if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n let _3 := calldataload(_2)\n if gt(_3, _1) { panic_error_0x41() }\n let _4 := not(31)\n let memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n mstore(memPtr, _3)\n if gt(add(add(_2, _3), 32), dataEnd) { revert(0, 0) }\n calldatacopy(add(memPtr, 32), add(_2, 32), _3)\n mstore(add(add(memPtr, _3), 32), 0)\n value1 := memPtr\n }\n function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_decode_tuple_t_contract$_IDAO_$10865(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n }\n function abi_encode_tuple_t_stringliteral_36e108fa7a809b52ab1951dd91c117a7bc9ac5250bdf1aa162d4e104f7edf9eb__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 44)\n mstore(add(headStart, 64), \"Function must be called through \")\n mstore(add(headStart, 96), \"delegatecall\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_52f1ead4d9653e13afbd2e90ef2587c30187cd50b2e97d784e3f7a7541247434__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 44)\n mstore(add(headStart, 64), \"Function must be called through \")\n mstore(add(headStart, 96), \"active proxy\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_67f0151b4ad1dcfa0e3302a0cd6019f51582ef1807b37dceb00bd852a514f7f4__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 56)\n mstore(add(headStart, 64), \"UUPSUpgradeable: must not be cal\")\n mstore(add(headStart, 96), \"led through delegatecall\")\n tail := add(headStart, 128)\n }\n function abi_decode_tuple_t_bytes32_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := mload(headStart)\n }\n function abi_encode_tuple_t_stringliteral_8e8e2fbcb586f700b5b14e2c4a650c8d83b9773c31c5fe8962070ea544e11f24__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 46)\n mstore(add(headStart, 64), \"ERC1967Upgrade: new implementati\")\n mstore(add(headStart, 96), \"on is not UUPS\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_76b6b6debfc5febf101145a79ecf0b0d2e89e397dfdab2bca99888370411152c__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 41)\n mstore(add(headStart, 64), \"ERC1967Upgrade: unsupported prox\")\n mstore(add(headStart, 96), \"iableUUID\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 43)\n mstore(add(headStart, 64), \"Initializable: contract is not i\")\n mstore(add(headStart, 96), \"nitializing\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_address_t_address_t_bytes32_t_bytes_calldata_ptr__to_t_address_t_address_t_bytes32_t_bytes_memory_ptr__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n {\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n mstore(add(headStart, 64), value2)\n mstore(add(headStart, 96), 128)\n mstore(add(headStart, 128), value4)\n calldatacopy(add(headStart, 160), value3, value4)\n mstore(add(add(headStart, value4), 160), 0)\n tail := add(add(headStart, and(add(value4, 31), not(31))), 160)\n }\n function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := mload(headStart)\n if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_address_t_address_t_address_t_bytes32__to_t_address_t_address_t_address_t_bytes32__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n {\n tail := add(headStart, 128)\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n mstore(add(headStart, 64), and(value2, _1))\n mstore(add(headStart, 96), value3)\n }\n function abi_encode_tuple_t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 45)\n mstore(add(headStart, 64), \"ERC1967: new implementation is n\")\n mstore(add(headStart, 96), \"ot a contract\")\n tail := add(headStart, 128)\n }\n function copy_memory_to_memory_with_cleanup(src, dst, length)\n {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n mstore(add(dst, length), 0)\n }\n function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n {\n let length := mload(value0)\n copy_memory_to_memory_with_cleanup(add(value0, 0x20), pos, length)\n end := add(pos, length)\n }\n function abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 29)\n mstore(add(headStart, 64), \"Address: call to non-contract\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n mstore(headStart, 32)\n let length := mload(value0)\n mstore(add(headStart, 32), length)\n copy_memory_to_memory_with_cleanup(add(value0, 32), add(headStart, 64), length)\n tail := add(add(headStart, and(add(length, 31), not(31))), 64)\n }\n}","id":92,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{"554":[{"length":32,"start":734},{"length":32,"start":872},{"length":32,"start":1118},{"length":32,"start":1251},{"length":32,"start":1485}]},"linkReferences":{},"object":"6080604052600436106100bc5760003560e01c80634f1ef286116100745780636accab8c1161004e5780636accab8c146101d35780638883bbd7146101ea578063c9c4bfca1461020a57600080fd5b80634f1ef2861461018857806352d1902d1461019b5780635c60da1b146101be57600080fd5b80633659cfe6116100a55780633659cfe6146101185780634162169f1461013a57806341de68301461016c57600080fd5b806301ffc9a7146100c15780632ae9c600146100f6575b600080fd5b3480156100cd57600080fd5b506100e16100dc366004610d1e565b61023e565b60405190151581526020015b60405180910390f35b34801561010257600080fd5b5061010b6102aa565b6040516100ed9190610d48565b34801561012457600080fd5b50610138610133366004610d91565b6102d4565b005b34801561014657600080fd5b5060c9546001600160a01b03165b6040516001600160a01b0390911681526020016100ed565b34801561017857600080fd5b5060006040516100ed9190610dae565b610138610196366004610dec565b610454565b3480156101a757600080fd5b506101b06105c0565b6040519081526020016100ed565b3480156101ca57600080fd5b50610154610685565b3480156101df57600080fd5b506101b061012d5481565b3480156101f657600080fd5b50610138610205366004610d91565b6106bd565b34801561021657600080fd5b506101b07f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f581565b60006001600160e01b0319821663041de68360e41b148061026e57506001600160e01b03198216621574e360e91b145b8061028957506001600160e01b031982166352d1902d60e01b145b806102a457506301ffc9a760e01b6001600160e01b03198316145b92915050565b6102b2610d00565b5060408051606081018252600181526004602082015260009181019190915290565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036103665760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b60648201526084015b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166103c17f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b03161461042c5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b606482015260840161035d565b610435816106cf565b604080516000808252602082019092526104519183919061070c565b50565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036104e15760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b606482015260840161035d565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661053c7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b0316146105a75760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b606482015260840161035d565b6105b0826106cf565b6105bc8282600161070c565b5050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106605760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000606482015260840161035d565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b60006106b87f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b6106c6816108b1565b50600161012d55565b60c9547f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f5906105bc906001600160a01b0316303384600036610925565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156107445761073f836109e1565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561079e575060408051601f3d908101601f1916820190925261079b91810190610eb0565b60015b6108105760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201527f6f6e206973206e6f742055555053000000000000000000000000000000000000606482015260840161035d565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146108a55760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f7860448201527f6961626c65555549440000000000000000000000000000000000000000000000606482015260840161035d565b5061073f838383610aac565b600054610100900460ff1661091c5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840161035d565b61045181610ad7565b604051637ef7c88360e11b81526001600160a01b0387169063fdef9106906109599088908890889088908890600401610ec9565b602060405180830381865afa158015610976573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061099a9190610f1d565b6109d957604051630cb6f8ed60e21b81526001600160a01b0380881660048301528087166024830152851660448201526064810184905260840161035d565b505050505050565b6001600160a01b0381163b610a5e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e747261637400000000000000000000000000000000000000606482015260840161035d565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610ab583610b71565b600082511180610ac25750805b1561073f57610ad18383610bb1565b50505050565b600054610100900460ff16610b425760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840161035d565b60c9805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610b7a816109e1565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060610bd68383604051806060016040528060278152602001610fb360279139610bdd565b9392505050565b6060600080856001600160a01b031685604051610bfa9190610f63565b600060405180830381855af49150503d8060008114610c35576040519150601f19603f3d011682016040523d82523d6000602084013e610c3a565b606091505b5091509150610c4b86838387610c55565b9695505050505050565b60608315610cc4578251600003610cbd576001600160a01b0385163b610cbd5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161035d565b5081610cce565b610cce8383610cd6565b949350505050565b815115610ce65781518083602001fd5b8060405162461bcd60e51b815260040161035d9190610f7f565b60405180606001604052806003906020820280368337509192915050565b600060208284031215610d3057600080fd5b81356001600160e01b031981168114610bd657600080fd5b60608101818360005b6003811015610d7357815160ff16835260209283019290910190600101610d51565b50505092915050565b6001600160a01b038116811461045157600080fd5b600060208284031215610da357600080fd5b8135610bd681610d7c565b6020810160038310610dd057634e487b7160e01b600052602160045260246000fd5b91905290565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215610dff57600080fd5b8235610e0a81610d7c565b9150602083013567ffffffffffffffff80821115610e2757600080fd5b818501915085601f830112610e3b57600080fd5b813581811115610e4d57610e4d610dd6565b604051601f8201601f19908116603f01168101908382118183101715610e7557610e75610dd6565b81604052828152886020848701011115610e8e57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b600060208284031215610ec257600080fd5b5051919050565b60006001600160a01b03808816835280871660208401525084604083015260806060830152826080830152828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b600060208284031215610f2f57600080fd5b81518015158114610bd657600080fd5b60005b83811015610f5a578181015183820152602001610f42565b50506000910152565b60008251610f75818460208701610f3f565b9190910192915050565b6020815260008251806020840152610f9e816040850160208701610f3f565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xBC JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x4F1EF286 GT PUSH2 0x74 JUMPI DUP1 PUSH4 0x6ACCAB8C GT PUSH2 0x4E JUMPI DUP1 PUSH4 0x6ACCAB8C EQ PUSH2 0x1D3 JUMPI DUP1 PUSH4 0x8883BBD7 EQ PUSH2 0x1EA JUMPI DUP1 PUSH4 0xC9C4BFCA EQ PUSH2 0x20A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x188 JUMPI DUP1 PUSH4 0x52D1902D EQ PUSH2 0x19B JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0x1BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x3659CFE6 GT PUSH2 0xA5 JUMPI DUP1 PUSH4 0x3659CFE6 EQ PUSH2 0x118 JUMPI DUP1 PUSH4 0x4162169F EQ PUSH2 0x13A JUMPI DUP1 PUSH4 0x41DE6830 EQ PUSH2 0x16C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xC1 JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0xF6 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xCD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xE1 PUSH2 0xDC CALLDATASIZE PUSH1 0x4 PUSH2 0xD1E JUMP JUMPDEST PUSH2 0x23E JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x102 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x10B PUSH2 0x2AA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xED SWAP2 SWAP1 PUSH2 0xD48 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x124 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x138 PUSH2 0x133 CALLDATASIZE PUSH1 0x4 PUSH2 0xD91 JUMP JUMPDEST PUSH2 0x2D4 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x146 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xC9 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xED JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x178 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 PUSH1 0x40 MLOAD PUSH2 0xED SWAP2 SWAP1 PUSH2 0xDAE JUMP JUMPDEST PUSH2 0x138 PUSH2 0x196 CALLDATASIZE PUSH1 0x4 PUSH2 0xDEC JUMP JUMPDEST PUSH2 0x454 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1B0 PUSH2 0x5C0 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xED JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x154 PUSH2 0x685 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1B0 PUSH2 0x12D SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x138 PUSH2 0x205 CALLDATASIZE PUSH1 0x4 PUSH2 0xD91 JUMP JUMPDEST PUSH2 0x6BD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x216 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1B0 PUSH32 0x821B6E3A557148015A918C89E5D092E878A69854A2D1A410635F771BD5A8A3F5 DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x41DE683 PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x26E JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x289 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x52D1902D PUSH1 0xE0 SHL EQ JUMPDEST DUP1 PUSH2 0x2A4 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x2B2 PUSH2 0xD00 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x366 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x19195B1959D85D1958D85B1B PUSH1 0xA2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3C1 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x42C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x6163746976652070726F7879 PUSH1 0xA0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x35D JUMP JUMPDEST PUSH2 0x435 DUP2 PUSH2 0x6CF JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x451 SWAP2 DUP4 SWAP2 SWAP1 PUSH2 0x70C JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x4E1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x19195B1959D85D1958D85B1B PUSH1 0xA2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x35D JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x53C PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x5A7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x6163746976652070726F7879 PUSH1 0xA0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x35D JUMP JUMPDEST PUSH2 0x5B0 DUP3 PUSH2 0x6CF JUMP JUMPDEST PUSH2 0x5BC DUP3 DUP3 PUSH1 0x1 PUSH2 0x70C JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x660 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x38 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x555550535570677261646561626C653A206D757374206E6F742062652063616C PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6C6564207468726F7567682064656C656761746563616C6C0000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x35D JUMP JUMPDEST POP PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6B8 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x6C6 DUP2 PUSH2 0x8B1 JUMP JUMPDEST POP PUSH1 0x1 PUSH2 0x12D SSTORE JUMP JUMPDEST PUSH1 0xC9 SLOAD PUSH32 0x821B6E3A557148015A918C89E5D092E878A69854A2D1A410635F771BD5A8A3F5 SWAP1 PUSH2 0x5BC SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ADDRESS CALLER DUP5 PUSH1 0x0 CALLDATASIZE PUSH2 0x925 JUMP JUMPDEST PUSH32 0x4910FDFA16FED3260ED0E7147F7CC6DA11A60208B5B9406D12A635614FFD9143 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x744 JUMPI PUSH2 0x73F DUP4 PUSH2 0x9E1 JUMP JUMPDEST POP POP POP JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x52D1902D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x79E JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x79B SWAP2 DUP2 ADD SWAP1 PUSH2 0xEB0 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x810 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524331393637557067726164653A206E657720696D706C656D656E74617469 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F6E206973206E6F742055555053000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x35D JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC DUP2 EQ PUSH2 0x8A5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524331393637557067726164653A20756E737570706F727465642070726F78 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6961626C65555549440000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x35D JUMP JUMPDEST POP PUSH2 0x73F DUP4 DUP4 DUP4 PUSH2 0xAAC JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x91C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x35D JUMP JUMPDEST PUSH2 0x451 DUP2 PUSH2 0xAD7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x7EF7C883 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0xFDEF9106 SWAP1 PUSH2 0x959 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0xEC9 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x976 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x99A SWAP2 SWAP1 PUSH2 0xF1D JUMP JUMPDEST PUSH2 0x9D9 JUMPI PUSH1 0x40 MLOAD PUSH4 0xCB6F8ED PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND PUSH1 0x4 DUP4 ADD MSTORE DUP1 DUP8 AND PUSH1 0x24 DUP4 ADD MSTORE DUP6 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x84 ADD PUSH2 0x35D JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND EXTCODESIZE PUSH2 0xA5E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313936373A206E657720696D706C656D656E746174696F6E206973206E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F74206120636F6E747261637400000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x35D JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xAB5 DUP4 PUSH2 0xB71 JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD GT DUP1 PUSH2 0xAC2 JUMPI POP DUP1 JUMPDEST ISZERO PUSH2 0x73F JUMPI PUSH2 0xAD1 DUP4 DUP4 PUSH2 0xBB1 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0xB42 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x35D JUMP JUMPDEST PUSH1 0xC9 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xB7A DUP2 PUSH2 0x9E1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xBD6 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xFB3 PUSH1 0x27 SWAP2 CODECOPY PUSH2 0xBDD JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0xBFA SWAP2 SWAP1 PUSH2 0xF63 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xC35 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xC3A JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0xC4B DUP7 DUP4 DUP4 DUP8 PUSH2 0xC55 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0xCC4 JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0xCBD JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0xCBD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x35D JUMP JUMPDEST POP DUP2 PUSH2 0xCCE JUMP JUMPDEST PUSH2 0xCCE DUP4 DUP4 PUSH2 0xCD6 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0xCE6 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x35D SWAP2 SWAP1 PUSH2 0xF7F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xD30 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0xBD6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0xD73 JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0xD51 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x451 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xDA3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xBD6 DUP2 PUSH2 0xD7C JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH1 0x3 DUP4 LT PUSH2 0xDD0 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 SWAP1 MSTORE SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xDFF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0xE0A DUP2 PUSH2 0xD7C JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xE27 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xE3B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0xE4D JUMPI PUSH2 0xE4D PUSH2 0xDD6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0xE75 JUMPI PUSH2 0xE75 PUSH2 0xDD6 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0xE8E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xEC2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND DUP4 MSTORE DUP1 DUP8 AND PUSH1 0x20 DUP5 ADD MSTORE POP DUP5 PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x80 PUSH1 0x60 DUP4 ADD MSTORE DUP3 PUSH1 0x80 DUP4 ADD MSTORE DUP3 DUP5 PUSH1 0xA0 DUP5 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0xA0 DUP5 DUP5 ADD ADD MSTORE PUSH1 0xA0 PUSH1 0x1F NOT PUSH1 0x1F DUP6 ADD AND DUP4 ADD ADD SWAP1 POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xF2F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xBD6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xF5A JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xF42 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0xF75 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0xF3F JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0xF9E DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0xF3F JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A164 PUSH20 0x6F6C6343000811000A0000000000000000000000 ","sourceMap":"1988:216:53:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2358:366:75;;;;;;;;;;-1:-1:-1;2358:366:75;;;;;:::i;:::-;;:::i;:::-;;;470:14:92;;463:22;445:41;;433:2;418:18;2358:366:75;;;;;;;;631:98:90;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;3408:195:5:-;;;;;;;;;;-1:-1:-1;3408:195:5;;;;;:::i;:::-;;:::i;:::-;;1200:70:67;;;;;;;;;;-1:-1:-1;1259:4:67;;-1:-1:-1;;;;;1259:4:67;1200:70;;;-1:-1:-1;;;;;1592:55:92;;;1574:74;;1562:2;1547:18;1200:70:67;1414:240:92;1552:103:75;;;;;;;;;;-1:-1:-1;1604:10:75;1552:103;;;;;;:::i;3922:220:5:-;;;;;;:::i;:::-;;:::i;3027:131::-;;;;;;;;;;;;;:::i;:::-;;;3347:25:92;;;3335:2;3320:18;3027:131:5;3201:177:92;3005:100:75;;;;;;;;;;;;;:::i;2057:21:53:-;;;;;;;;;;;;;;;;2085:117;;;;;;;;;;-1:-1:-1;2085:117:53;;;;;:::i;:::-;;:::i;1753:93:75:-;;;;;;;;;;;;1808:38;1753:93;;2358:366;2444:4;-1:-1:-1;;;;;;2479:41:75;;-1:-1:-1;;;2479:41:75;;:107;;-1:-1:-1;;;;;;;2536:50:75;;-1:-1:-1;;;2536:50:75;2479:107;:185;;;-1:-1:-1;;;;;;;2602:62:75;;-1:-1:-1;;;2602:62:75;2479:185;:238;;;-1:-1:-1;;;;;;;;;;1189:51:11;;;2680:37:75;2460:257;2358:366;-1:-1:-1;;2358:366:75:o;631:98:90:-;679:15;;:::i;:::-;-1:-1:-1;706:16:90;;;;;;;;714:1;706:16;;717:1;706:16;;;;-1:-1:-1;706:16:90;;;;;;;;631:98::o;3408:195:5:-;-1:-1:-1;;;;;1764:6:5;1747:23;1755:4;1747:23;1739:80;;;;-1:-1:-1;;;1739:80:5;;4264:2:92;1739:80:5;;;4246:21:92;4303:2;4283:18;;;4276:30;4342:34;4322:18;;;4315:62;-1:-1:-1;;;4393:18:92;;;4386:42;4445:19;;1739:80:5;;;;;;;;;1861:6;-1:-1:-1;;;;;1837:30:5;:20;1180:66:2;1557:65;-1:-1:-1;;;;;1557:65:2;;1478:151;1837:20:5;-1:-1:-1;;;;;1837:30:5;;1829:87;;;;-1:-1:-1;;;1829:87:5;;4677:2:92;1829:87:5;;;4659:21:92;4716:2;4696:18;;;4689:30;4755:34;4735:18;;;4728:62;-1:-1:-1;;;4806:18:92;;;4799:42;4858:19;;1829:87:5;4475:408:92;1829:87:5;3489:36:::1;3507:17;3489;:36::i;:::-;3576:12;::::0;;3586:1:::1;3576:12:::0;;;::::1;::::0;::::1;::::0;;;3535:61:::1;::::0;3557:17;;3576:12;3535:21:::1;:61::i;:::-;3408:195:::0;:::o;3922:220::-;-1:-1:-1;;;;;1764:6:5;1747:23;1755:4;1747:23;1739:80;;;;-1:-1:-1;;;1739:80:5;;4264:2:92;1739:80:5;;;4246:21:92;4303:2;4283:18;;;4276:30;4342:34;4322:18;;;4315:62;-1:-1:-1;;;4393:18:92;;;4386:42;4445:19;;1739:80:5;4062:408:92;1739:80:5;1861:6;-1:-1:-1;;;;;1837:30:5;:20;1180:66:2;1557:65;-1:-1:-1;;;;;1557:65:2;;1478:151;1837:20:5;-1:-1:-1;;;;;1837:30:5;;1829:87;;;;-1:-1:-1;;;1829:87:5;;4677:2:92;1829:87:5;;;4659:21:92;4716:2;4696:18;;;4689:30;4755:34;4735:18;;;4728:62;-1:-1:-1;;;4806:18:92;;;4799:42;4858:19;;1829:87:5;4475:408:92;1829:87:5;4037:36:::1;4055:17;4037;:36::i;:::-;4083:52;4105:17;4124:4;4130;4083:21;:52::i;:::-;3922:220:::0;;:::o;3027:131::-;3105:7;2190:4;-1:-1:-1;;;;;2199:6:5;2182:23;;2174:92;;;;-1:-1:-1;;;2174:92:5;;5090:2:92;2174:92:5;;;5072:21:92;5129:2;5109:18;;;5102:30;5168:34;5148:18;;;5141:62;5239:26;5219:18;;;5212:54;5283:19;;2174:92:5;4888:420:92;2174:92:5;-1:-1:-1;1180:66:2::1;3027:131:5::0;:::o;3005:100:75:-;3052:7;3078:20;1180:66:2;1557:65;-1:-1:-1;;;;;1557:65:2;;1478:151;3078:20:75;3071:27;;3005:100;:::o;2085:117:53:-;2141:34;2170:4;2141:28;:34::i;:::-;-1:-1:-1;2194:1:53;2185:6;:10;2085:117::o;3446:204:75:-;1616:4:67;;1808:38:75;;1610:67:67;;-1:-1:-1;;;;;1616:4:67;1630;965:10:8;1651:13:67;1039:14:8;;1610:5:67;:67::i;2841:944:2:-;839:66;3257:59;;;3253:526;;;3332:37;3351:17;3332:18;:37::i;:::-;2841:944;;;:::o;3253:526::-;3433:17;-1:-1:-1;;;;;3404:61:2;;:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3404:63:2;;;;;;;;-1:-1:-1;;3404:63:2;;;;;;;;;;;;:::i;:::-;;;3400:302;;3631:56;;-1:-1:-1;;;3631:56:2;;5704:2:92;3631:56:2;;;5686:21:92;5743:2;5723:18;;;5716:30;5782:34;5762:18;;;5755:62;5853:16;5833:18;;;5826:44;5887:19;;3631:56:2;5502:410:92;3400:302:2;1180:66;3517:28;;3509:82;;;;-1:-1:-1;;;3509:82:2;;6119:2:92;3509:82:2;;;6101:21:92;6158:2;6138:18;;;6131:30;6197:34;6177:18;;;6170:62;6268:11;6248:18;;;6241:39;6297:19;;3509:82:2;5917:405:92;3509:82:2;3468:138;3715:53;3733:17;3752:4;3758:9;3715:17;:53::i;2014:139:75:-;5374:13:4;;;;;;;5366:69;;;;-1:-1:-1;;;5366:69:4;;6529:2:92;5366:69:4;;;6511:21:92;6568:2;6548:18;;;6541:30;6607:34;6587:18;;;6580:62;-1:-1:-1;;;6658:18:92;;;6651:41;6709:19;;5366:69:4;6327:407:92;5366:69:4;2107:39:75::1;2141:4;2107:33;:39::i;1041:363:68:-:0;1180:54;;-1:-1:-1;;;1180:54:68;;-1:-1:-1;;;;;1180:18:68;;;;;:54;;1199:6;;1207:4;;1213:13;;1228:5;;;;1180:54;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1175:226;;1251:150;;-1:-1:-1;;;1251:150:68;;-1:-1:-1;;;;;8021:15:92;;;1251:150:68;;;8003:34:92;8073:15;;;8053:18;;;8046:43;8125:15;;8105:18;;;8098:43;8157:18;;;8150:34;;;7914:19;;1251:150:68;7711:479:92;1175:226:68;1041:363;;;;;;:::o;1720:281:2:-;-1:-1:-1;;;;;1713:19:6;;;1793:106:2;;;;-1:-1:-1;;;1793:106:2;;8397:2:92;1793:106:2;;;8379:21:92;8436:2;8416:18;;;8409:30;8475:34;8455:18;;;8448:62;8546:15;8526:18;;;8519:43;8579:19;;1793:106:2;8195:409:92;1793:106:2;1180:66;1909:85;;-1:-1:-1;;1909:85:2;-1:-1:-1;;;;;1909:85:2;;;;;;;;;;1720:281::o;2393:276::-;2501:29;2512:17;2501:10;:29::i;:::-;2558:1;2544:4;:11;:15;:28;;;;2563:9;2544:28;2540:123;;;2588:64;2628:17;2647:4;2588:39;:64::i;:::-;;2393:276;;;:::o;1010:108:67:-;5374:13:4;;;;;;;5366:69;;;;-1:-1:-1;;;5366:69:4;;6529:2:92;5366:69:4;;;6511:21:92;6568:2;6548:18;;;6541:30;6607:34;6587:18;;;6580:62;-1:-1:-1;;;6658:18:92;;;6651:41;6709:19;;5366:69:4;6327:407:92;5366:69:4;1100:4:67::1;:11:::0;;-1:-1:-1;;1100:11:67::1;-1:-1:-1::0;;;;;1100:11:67;;;::::1;::::0;;;::::1;::::0;;1010:108::o;2107:152:2:-;2173:37;2192:17;2173:18;:37::i;:::-;2225:27;;-1:-1:-1;;;;;2225:27:2;;;;;;;;2107:152;:::o;6685:198:6:-;6768:12;6799:77;6820:6;6828:4;6799:77;;;;;;;;;;;;;;;;;:20;:77::i;:::-;6792:84;6685:198;-1:-1:-1;;;6685:198:6:o;7069:325::-;7210:12;7235;7249:23;7276:6;-1:-1:-1;;;;;7276:19:6;7296:4;7276:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7234:67;;;;7318:69;7345:6;7353:7;7362:10;7374:12;7318:26;:69::i;:::-;7311:76;7069:325;-1:-1:-1;;;;;;7069:325:6:o;7682:628::-;7862:12;7890:7;7886:418;;;7917:10;:17;7938:1;7917:22;7913:286;;-1:-1:-1;;;;;1713:19:6;;;8124:60;;;;-1:-1:-1;;;8124:60:6;;9358:2:92;8124:60:6;;;9340:21:92;9397:2;9377:18;;;9370:30;9436:31;9416:18;;;9409:59;9485:18;;8124:60:6;9156:353:92;8124:60:6;-1:-1:-1;8219:10:6;8212:17;;7886:418;8260:33;8268:10;8280:12;8260:7;:33::i;:::-;7682:628;;;;;;:::o;8832:540::-;8991:17;;:21;8987:379;;9219:10;9213:17;9275:15;9262:10;9258:2;9254:19;9247:44;8987:379;9342:12;9335:20;;-1:-1:-1;;;9335:20:6;;;;;;;;:::i;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:286:92:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:92;;209:43;;199:71;;266:1;263;256:12;497:501;673:2;658:18;;662:9;753:6;631:4;787:205;801:4;798:1;795:11;787:205;;;864:13;;879:4;860:24;848:37;;908:4;932:12;;;;967:15;;;;821:1;814:9;787:205;;;791:3;;;497:501;;;;:::o;1003:154::-;-1:-1:-1;;;;;1082:5:92;1078:54;1071:5;1068:65;1058:93;;1147:1;1144;1137:12;1162:247;1221:6;1274:2;1262:9;1253:7;1249:23;1245:32;1242:52;;;1290:1;1287;1280:12;1242:52;1329:9;1316:23;1348:31;1373:5;1348:31;:::i;1659:344::-;1807:2;1792:18;;1840:1;1829:13;;1819:144;;1885:10;1880:3;1876:20;1873:1;1866:31;1920:4;1917:1;1910:15;1948:4;1945:1;1938:15;1819:144;1972:25;;;1659:344;:::o;2008:127::-;2069:10;2064:3;2060:20;2057:1;2050:31;2100:4;2097:1;2090:15;2124:4;2121:1;2114:15;2140:1056;2217:6;2225;2278:2;2266:9;2257:7;2253:23;2249:32;2246:52;;;2294:1;2291;2284:12;2246:52;2333:9;2320:23;2352:31;2377:5;2352:31;:::i;:::-;2402:5;-1:-1:-1;2458:2:92;2443:18;;2430:32;2481:18;2511:14;;;2508:34;;;2538:1;2535;2528:12;2508:34;2576:6;2565:9;2561:22;2551:32;;2621:7;2614:4;2610:2;2606:13;2602:27;2592:55;;2643:1;2640;2633:12;2592:55;2679:2;2666:16;2701:2;2697;2694:10;2691:36;;;2707:18;;:::i;:::-;2782:2;2776:9;2750:2;2836:13;;-1:-1:-1;;2832:22:92;;;2856:2;2828:31;2824:40;2812:53;;;2880:18;;;2900:22;;;2877:46;2874:72;;;2926:18;;:::i;:::-;2966:10;2962:2;2955:22;3001:2;2993:6;2986:18;3041:7;3036:2;3031;3027;3023:11;3019:20;3016:33;3013:53;;;3062:1;3059;3052:12;3013:53;3118:2;3113;3109;3105:11;3100:2;3092:6;3088:15;3075:46;3163:1;3158:2;3153;3145:6;3141:15;3137:24;3130:35;3184:6;3174:16;;;;;;;2140:1056;;;;;:::o;5313:184::-;5383:6;5436:2;5424:9;5415:7;5411:23;5407:32;5404:52;;;5452:1;5449;5442:12;5404:52;-1:-1:-1;5475:16:92;;5313:184;-1:-1:-1;5313:184:92:o;6739:685::-;6943:4;-1:-1:-1;;;;;7053:2:92;7045:6;7041:15;7030:9;7023:34;7105:2;7097:6;7093:15;7088:2;7077:9;7073:18;7066:43;;7145:6;7140:2;7129:9;7125:18;7118:34;7188:3;7183:2;7172:9;7168:18;7161:31;7229:6;7223:3;7212:9;7208:19;7201:35;7287:6;7279;7273:3;7262:9;7258:19;7245:49;7344:1;7338:3;7329:6;7318:9;7314:22;7310:32;7303:43;7414:3;7407:2;7403:7;7398:2;7390:6;7386:15;7382:29;7371:9;7367:45;7363:55;7355:63;;6739:685;;;;;;;;:::o;7429:277::-;7496:6;7549:2;7537:9;7528:7;7524:23;7520:32;7517:52;;;7565:1;7562;7555:12;7517:52;7597:9;7591:16;7650:5;7643:13;7636:21;7629:5;7626:32;7616:60;;7672:1;7669;7662:12;8609:250;8694:1;8704:113;8718:6;8715:1;8712:13;8704:113;;;8794:11;;;8788:18;8775:11;;;8768:39;8740:2;8733:10;8704:113;;;-1:-1:-1;;8851:1:92;8833:16;;8826:27;8609:250::o;8864:287::-;8993:3;9031:6;9025:13;9047:66;9106:6;9101:3;9094:4;9086:6;9082:17;9047:66;:::i;:::-;9129:16;;;;;8864:287;-1:-1:-1;;8864:287:92:o;9514:396::-;9663:2;9652:9;9645:21;9626:4;9695:6;9689:13;9738:6;9733:2;9722:9;9718:18;9711:34;9754:79;9826:6;9821:2;9810:9;9806:18;9801:2;9793:6;9789:15;9754:79;:::i;:::-;9894:2;9873:15;-1:-1:-1;;9869:29:92;9854:45;;;;9901:2;9850:54;;9514:396;-1:-1:-1;;9514:396:92:o"},"gasEstimates":{"creation":{"codeDepositCost":"814000","executionCost":"infinite","totalCost":"infinite"},"external":{"UPGRADE_PLUGIN_PERMISSION_ID()":"261","dao()":"2365","implementation()":"2436","notAnInitializer(address)":"infinite","pluginType()":"294","protocolVersion()":"infinite","proxiableUUID()":"infinite","state1()":"2317","supportsInterface(bytes4)":"560","upgradeTo(address)":"infinite","upgradeToAndCall(address,bytes)":"infinite"}},"methodIdentifiers":{"UPGRADE_PLUGIN_PERMISSION_ID()":"c9c4bfca","dao()":"4162169f","implementation()":"5c60da1b","notAnInitializer(address)":"8883bbd7","pluginType()":"41de6830","protocolVersion()":"2ae9c600","proxiableUUID()":"52d1902d","state1()":"6accab8c","supportsInterface(bytes4)":"01ffc9a7","upgradeTo(address)":"3659cfe6","upgradeToAndCall(address,bytes)":"4f1ef286"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"dao\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"name\":\"DaoUnauthorized\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"UPGRADE_PLUGIN_PERMISSION_ID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"dao\",\"outputs\":[{\"internalType\":\"contract IDAO\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IDAO\",\"name\":\"_dao\",\"type\":\"address\"}],\"name\":\"notAnInitializer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pluginType\",\"outputs\":[{\"internalType\":\"enum IPlugin.PluginType\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"protocolVersion\",\"outputs\":[{\"internalType\":\"uint8[3]\",\"name\":\"\",\"type\":\"uint8[3]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"state1\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"upgradeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"DO NOT USE IN PRODUCTION!\",\"errors\":{\"DaoUnauthorized(address,address,address,bytes32)\":[{\"params\":{\"dao\":\"The associated DAO.\",\"permissionId\":\"The permission identifier.\",\"where\":\"The context in which the authorization reverted.\",\"who\":\"The address (EOA or contract) missing the permission.\"}}]},\"kind\":\"dev\",\"methods\":{\"dao()\":{\"returns\":{\"_0\":\"The DAO contract.\"}},\"implementation()\":{\"returns\":{\"_0\":\"The address of the implementation contract.\"}},\"protocolVersion()\":{\"details\":\"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\",\"returns\":{\"_0\":\"Returns the semantic Aragon OSx protocol version number.\"}},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"supportsInterface(bytes4)\":{\"params\":{\"_interfaceId\":\"The ID of the interface.\"},\"returns\":{\"_0\":\"Returns `true` if the interface is supported.\"}},\"upgradeTo(address)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"},\"upgradeToAndCall(address,bytes)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"}},\"version\":1},\"userdoc\":{\"errors\":{\"DaoUnauthorized(address,address,address,bytes32)\":[{\"notice\":\"Thrown if a call is unauthorized in the associated DAO.\"}]},\"kind\":\"user\",\"methods\":{\"UPGRADE_PLUGIN_PERMISSION_ID()\":{\"notice\":\"The ID of the permission required to call the `_authorizeUpgrade` function.\"},\"dao()\":{\"notice\":\"Returns the DAO contract.\"},\"implementation()\":{\"notice\":\"Returns the address of the implementation contract in the [proxy storage slot](https://eips.ethereum.org/EIPS/eip-1967) slot the [UUPS proxy](https://eips.ethereum.org/EIPS/eip-1822) is pointing to.\"},\"pluginType()\":{\"notice\":\"Returns the plugin's type\"},\"protocolVersion()\":{\"notice\":\"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Checks if an interface is supported by this or its parent contract.\"}},\"notice\":\"A mock upgradeable plugin missing an initializer function.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/mocks/plugin/PluginUUPSUpgradeableMock.sol\":\"PluginUUPSUpgradeableMockBad\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/interfaces/IERC1967Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (interfaces/IERC1967.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\\n *\\n * _Available since v4.8.3._\\n */\\ninterface IERC1967Upgradeable {\\n /**\\n * @dev Emitted when the implementation is upgraded.\\n */\\n event Upgraded(address indexed implementation);\\n\\n /**\\n * @dev Emitted when the admin account has changed.\\n */\\n event AdminChanged(address previousAdmin, address newAdmin);\\n\\n /**\\n * @dev Emitted when the beacon is changed.\\n */\\n event BeaconUpgraded(address indexed beacon);\\n}\\n\",\"keccak256\":\"0x47d6e06872b12e72c79d1b5eb55842f860b5fb1207b2317c2358d2766b950a7b\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822ProxiableUpgradeable {\\n /**\\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n * address.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy.\\n */\\n function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../beacon/IBeaconUpgradeable.sol\\\";\\nimport \\\"../../interfaces/IERC1967Upgradeable.sol\\\";\\nimport \\\"../../interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\nimport \\\"../../utils/StorageSlotUpgradeable.sol\\\";\\nimport {Initializable} from \\\"../utils/Initializable.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n */\\nabstract contract ERC1967UpgradeUpgradeable is Initializable, IERC1967Upgradeable {\\n // This is the keccak-256 hash of \\\"eip1967.proxy.rollback\\\" subtracted by 1\\n bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n /**\\n * @dev Storage slot with the address of the current implementation.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n function __ERC1967Upgrade_init() internal onlyInitializing {\\n }\\n\\n function __ERC1967Upgrade_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _getImplementation() internal view returns (address) {\\n return StorageSlotUpgradeable.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 implementation slot.\\n */\\n function _setImplementation(address newImplementation) private {\\n require(AddressUpgradeable.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n StorageSlotUpgradeable.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n }\\n\\n /**\\n * @dev Perform implementation upgrade\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeTo(address newImplementation) internal {\\n _setImplementation(newImplementation);\\n emit Upgraded(newImplementation);\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCall(address newImplementation, bytes memory data, bool forceCall) internal {\\n _upgradeTo(newImplementation);\\n if (data.length > 0 || forceCall) {\\n AddressUpgradeable.functionDelegateCall(newImplementation, data);\\n }\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCallUUPS(address newImplementation, bytes memory data, bool forceCall) internal {\\n // Upgrades from old implementations will perform a rollback test. This test requires the new\\n // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n // this special case will break upgrade paths from old UUPS implementation to new ones.\\n if (StorageSlotUpgradeable.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n _setImplementation(newImplementation);\\n } else {\\n try IERC1822ProxiableUpgradeable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n require(slot == _IMPLEMENTATION_SLOT, \\\"ERC1967Upgrade: unsupported proxiableUUID\\\");\\n } catch {\\n revert(\\\"ERC1967Upgrade: new implementation is not UUPS\\\");\\n }\\n _upgradeToAndCall(newImplementation, data, forceCall);\\n }\\n }\\n\\n /**\\n * @dev Storage slot with the admin of the contract.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _getAdmin() internal view returns (address) {\\n return StorageSlotUpgradeable.getAddressSlot(_ADMIN_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 admin slot.\\n */\\n function _setAdmin(address newAdmin) private {\\n require(newAdmin != address(0), \\\"ERC1967: new admin is the zero address\\\");\\n StorageSlotUpgradeable.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n */\\n function _changeAdmin(address newAdmin) internal {\\n emit AdminChanged(_getAdmin(), newAdmin);\\n _setAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\\n */\\n bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n /**\\n * @dev Returns the current beacon.\\n */\\n function _getBeacon() internal view returns (address) {\\n return StorageSlotUpgradeable.getAddressSlot(_BEACON_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new beacon in the EIP1967 beacon slot.\\n */\\n function _setBeacon(address newBeacon) private {\\n require(AddressUpgradeable.isContract(newBeacon), \\\"ERC1967: new beacon is not a contract\\\");\\n require(\\n AddressUpgradeable.isContract(IBeaconUpgradeable(newBeacon).implementation()),\\n \\\"ERC1967: beacon implementation is not a contract\\\"\\n );\\n StorageSlotUpgradeable.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n }\\n\\n /**\\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n *\\n * Emits a {BeaconUpgraded} event.\\n */\\n function _upgradeBeaconToAndCall(address newBeacon, bytes memory data, bool forceCall) internal {\\n _setBeacon(newBeacon);\\n emit BeaconUpgraded(newBeacon);\\n if (data.length > 0 || forceCall) {\\n AddressUpgradeable.functionDelegateCall(IBeaconUpgradeable(newBeacon).implementation(), data);\\n }\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x7795808e3899c805254e3ae58074b20f799b466e3f43e057e47bedee5fb771f8\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeaconUpgradeable {\\n /**\\n * @dev Must return an address that can be used as a delegate call target.\\n *\\n * {BeaconProxy} will check that this address is a contract.\\n */\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/UUPSUpgradeable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport \\\"../ERC1967/ERC1967UpgradeUpgradeable.sol\\\";\\nimport {Initializable} from \\\"./Initializable.sol\\\";\\n\\n/**\\n * @dev An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an\\n * {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy.\\n *\\n * A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is\\n * reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing\\n * `UUPSUpgradeable` with a custom implementation of upgrades.\\n *\\n * The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism.\\n *\\n * _Available since v4.1._\\n */\\nabstract contract UUPSUpgradeable is Initializable, IERC1822ProxiableUpgradeable, ERC1967UpgradeUpgradeable {\\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable state-variable-assignment\\n address private immutable __self = address(this);\\n\\n /**\\n * @dev Check that the execution is being performed through a delegatecall call and that the execution context is\\n * a proxy contract with an implementation (as defined in ERC1967) pointing to self. This should only be the case\\n * for UUPS and transparent proxies that are using the current contract as their implementation. Execution of a\\n * function through ERC1167 minimal proxies (clones) would not normally pass this test, but is not guaranteed to\\n * fail.\\n */\\n modifier onlyProxy() {\\n require(address(this) != __self, \\\"Function must be called through delegatecall\\\");\\n require(_getImplementation() == __self, \\\"Function must be called through active proxy\\\");\\n _;\\n }\\n\\n /**\\n * @dev Check that the execution is not being performed through a delegate call. This allows a function to be\\n * callable on the implementing contract but not through proxies.\\n */\\n modifier notDelegated() {\\n require(address(this) == __self, \\\"UUPSUpgradeable: must not be called through delegatecall\\\");\\n _;\\n }\\n\\n function __UUPSUpgradeable_init() internal onlyInitializing {\\n }\\n\\n function __UUPSUpgradeable_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the\\n * implementation. It is used to validate the implementation's compatibility when performing an upgrade.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\\n */\\n function proxiableUUID() external view virtual override notDelegated returns (bytes32) {\\n return _IMPLEMENTATION_SLOT;\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy to `newImplementation`.\\n *\\n * Calls {_authorizeUpgrade}.\\n *\\n * Emits an {Upgraded} event.\\n *\\n * @custom:oz-upgrades-unsafe-allow-reachable delegatecall\\n */\\n function upgradeTo(address newImplementation) public virtual onlyProxy {\\n _authorizeUpgrade(newImplementation);\\n _upgradeToAndCallUUPS(newImplementation, new bytes(0), false);\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call\\n * encoded in `data`.\\n *\\n * Calls {_authorizeUpgrade}.\\n *\\n * Emits an {Upgraded} event.\\n *\\n * @custom:oz-upgrades-unsafe-allow-reachable delegatecall\\n */\\n function upgradeToAndCall(address newImplementation, bytes memory data) public payable virtual onlyProxy {\\n _authorizeUpgrade(newImplementation);\\n _upgradeToAndCallUUPS(newImplementation, data, true);\\n }\\n\\n /**\\n * @dev Function that should revert when `msg.sender` is not authorized to upgrade the contract. Called by\\n * {upgradeTo} and {upgradeToAndCall}.\\n *\\n * Normally, this function will use an xref:access.adoc[access control] modifier such as {Ownable-onlyOwner}.\\n *\\n * ```solidity\\n * function _authorizeUpgrade(address) internal override onlyOwner {}\\n * ```\\n */\\n function _authorizeUpgrade(address newImplementation) internal virtual;\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0xefb41f5c1a00249b7a99f0782f8c557865605426a3fb6e5fe9ae334293ae4f33\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n function __Context_init() internal onlyInitializing {\\n }\\n\\n function __Context_init_unchained() internal onlyInitializing {\\n }\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n function _contextSuffixLength() internal view virtual returns (uint256) {\\n return 0;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x75097e35253e7fb282ee4d7f27a80eaacfa759923185bf17302a89cbc059c5ef\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/StorageSlot.sol)\\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```solidity\\n * contract ERC1967 {\\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n * function _getImplementation() internal view returns (address) {\\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n * }\\n *\\n * function _setImplementation(address newImplementation) internal {\\n * require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n * }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._\\n * _Available since v4.9 for `string`, `bytes`._\\n */\\nlibrary StorageSlotUpgradeable {\\n struct AddressSlot {\\n address value;\\n }\\n\\n struct BooleanSlot {\\n bool value;\\n }\\n\\n struct Bytes32Slot {\\n bytes32 value;\\n }\\n\\n struct Uint256Slot {\\n uint256 value;\\n }\\n\\n struct StringSlot {\\n string value;\\n }\\n\\n struct BytesSlot {\\n bytes value;\\n }\\n\\n /**\\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n */\\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n */\\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n */\\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n */\\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` with member `value` located at `slot`.\\n */\\n function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\\n */\\n function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` with member `value` located at `slot`.\\n */\\n function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\\n */\\n function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n}\\n\",\"keccak256\":\"0x07ac95acad040f1fb1f6120dd0aa5f702db69446e95f82613721879d30de0908\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165Upgradeable.sol\\\";\\nimport {Initializable} from \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165Upgradeable is Initializable, IERC165Upgradeable {\\n function __ERC165_init() internal onlyInitializing {\\n }\\n\\n function __ERC165_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165Upgradeable).interfaceId;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0xd90d7723512df65ae417adaf0801042940f0dabd60039ceeaffe34aa5b238da1\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165Upgradeable {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\"},\"src/dao/IDAO.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IDAO\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for DAOs within the Aragon App DAO framework.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IDAO {\\n /// @notice The action struct to be consumed by the DAO's `execute` function resulting in an external call.\\n /// @param to The address to call.\\n /// @param value The native token value to be sent with the call.\\n /// @param data The bytes-encoded function selector and calldata for the call.\\n struct Action {\\n address to;\\n uint256 value;\\n bytes data;\\n }\\n\\n /// @notice Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\\n /// @param _where The address of the contract.\\n /// @param _who The address of a EOA or contract to give the permissions.\\n /// @param _permissionId The permission identifier.\\n /// @param _data The optional data passed to the `PermissionCondition` registered.\\n /// @return Returns true if the address has permission, false if not.\\n function hasPermission(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes memory _data\\n ) external view returns (bool);\\n\\n /// @notice Updates the DAO metadata (e.g., an IPFS hash).\\n /// @param _metadata The IPFS hash of the new metadata object.\\n function setMetadata(bytes calldata _metadata) external;\\n\\n /// @notice Emitted when the DAO metadata is updated.\\n /// @param metadata The IPFS hash of the new metadata object.\\n event MetadataSet(bytes metadata);\\n\\n /// @notice Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted.\\n /// @param _callId The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce.\\n /// @param _actions The array of actions.\\n /// @param _allowFailureMap A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @return The array of results obtained from the executed actions in `bytes`.\\n /// @return The resulting failure map containing the actions have actually failed.\\n function execute(\\n bytes32 _callId,\\n Action[] memory _actions,\\n uint256 _allowFailureMap\\n ) external returns (bytes[] memory, uint256);\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param actor The address of the caller.\\n /// @param callId The ID of the call.\\n /// @param actions The array of actions executed.\\n /// @param allowFailureMap The allow failure map encoding which actions are allowed to fail.\\n /// @param failureMap The failure map encoding which actions have failed.\\n /// @param execResults The array with the results of the executed actions.\\n /// @dev The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce.\\n event Executed(\\n address indexed actor,\\n bytes32 callId,\\n Action[] actions,\\n uint256 allowFailureMap,\\n uint256 failureMap,\\n bytes[] execResults\\n );\\n\\n /// @notice Emitted when a standard callback is registered.\\n /// @param interfaceId The ID of the interface.\\n /// @param callbackSelector The selector of the callback function.\\n /// @param magicNumber The magic number to be registered for the callback function selector.\\n event StandardCallbackRegistered(\\n bytes4 interfaceId,\\n bytes4 callbackSelector,\\n bytes4 magicNumber\\n );\\n\\n /// @notice Deposits (native) tokens to the DAO contract with a reference string.\\n /// @param _token The address of the token or address(0) in case of the native token.\\n /// @param _amount The amount of tokens to deposit.\\n /// @param _reference The reference describing the deposit reason.\\n function deposit(address _token, uint256 _amount, string calldata _reference) external payable;\\n\\n /// @notice Emitted when a token deposit has been made to the DAO.\\n /// @param sender The address of the sender.\\n /// @param token The address of the deposited token.\\n /// @param amount The amount of tokens deposited.\\n /// @param _reference The reference describing the deposit reason.\\n event Deposited(\\n address indexed sender,\\n address indexed token,\\n uint256 amount,\\n string _reference\\n );\\n\\n /// @notice Emitted when a native token deposit has been made to the DAO.\\n /// @dev This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).\\n /// @param sender The address of the sender.\\n /// @param amount The amount of native tokens deposited.\\n event NativeTokenDeposited(address sender, uint256 amount);\\n\\n /// @notice Setter for the trusted forwarder verifying the meta transaction.\\n /// @param _trustedForwarder The trusted forwarder address.\\n function setTrustedForwarder(address _trustedForwarder) external;\\n\\n /// @notice Getter for the trusted forwarder verifying the meta transaction.\\n /// @return The trusted forwarder address.\\n function getTrustedForwarder() external view returns (address);\\n\\n /// @notice Emitted when a new TrustedForwarder is set on the DAO.\\n /// @param forwarder the new forwarder address.\\n event TrustedForwarderSet(address forwarder);\\n\\n /// @notice Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\\n /// @param _hash The hash of the data to be signed.\\n /// @param _signature The signature byte array associated with `_hash`.\\n /// @return Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not.\\n function isValidSignature(bytes32 _hash, bytes memory _signature) external returns (bytes4);\\n\\n /// @notice Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\\n /// @param _interfaceId The ID of the interface.\\n /// @param _callbackSelector The selector of the callback function.\\n /// @param _magicNumber The magic number to be registered for the function signature.\\n function registerStandardCallback(\\n bytes4 _interfaceId,\\n bytes4 _callbackSelector,\\n bytes4 _magicNumber\\n ) external;\\n\\n /// @notice Removed function being left here to not corrupt the IDAO interface ID. Any call will revert.\\n /// @dev Introduced in v1.0.0. Removed in v1.4.0.\\n function setSignatureValidator(address) external;\\n}\\n\",\"keccak256\":\"0xb7f615523c26de042edce98731c658f44a1edb2464387ac1b642c4c69f57128e\",\"license\":\"AGPL-3.0-or-later\"},\"src/mocks/plugin/PluginUUPSUpgradeableMock.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\n/* solhint-disable one-contract-per-file */\\npragma solidity ^0.8.8;\\n\\nimport {PluginUUPSUpgradeable} from \\\"../../plugin/PluginUUPSUpgradeable.sol\\\";\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice A mock upgradeable plugin to be deployed via the UUPS proxy pattern.\\n/// v1.1 (Release 1, Build 1)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableMockBuild1 is PluginUUPSUpgradeable {\\n uint256 public state1;\\n\\n function initialize(IDAO _dao) external initializer {\\n __PluginUUPSUpgradeable_init(_dao);\\n state1 = 1;\\n }\\n}\\n\\n/// @notice A mock upgradeable plugin to be deployed via the UUPS proxy pattern.\\n/// v1.1 (Release 1, Build 2)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableMockBuild2 is PluginUUPSUpgradeable {\\n uint256 public state1;\\n uint256 public state2;\\n\\n function initialize(IDAO _dao) external reinitializer(2) {\\n __PluginUUPSUpgradeable_init(_dao);\\n state1 = 1;\\n state2 = 2;\\n }\\n\\n function initializeFrom(uint16 _previousBuild) external reinitializer(2) {\\n if (_previousBuild < 2) {\\n state2 = 2;\\n }\\n }\\n}\\n\\n/// @notice A mock upgradeable plugin to be deployed via the UUPS proxy pattern.\\n/// v1.1 (Release 1, Build 3)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableMockBuild3 is PluginUUPSUpgradeable {\\n uint256 public state1;\\n uint256 public state2;\\n uint256 public state3;\\n\\n function initialize(IDAO _dao) external reinitializer(3) {\\n __PluginUUPSUpgradeable_init(_dao);\\n state1 = 1;\\n state2 = 2;\\n state3 = 3;\\n }\\n\\n function initializeFrom(uint16 _previousBuild) external reinitializer(3) {\\n if (_previousBuild < 2) {\\n state2 = 2;\\n }\\n if (_previousBuild < 3) {\\n state3 = 3;\\n }\\n }\\n}\\n\\n/// @notice A mock upgradeable plugin missing an initializer function.\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableMockBad is PluginUUPSUpgradeable {\\n uint256 public state1;\\n\\n function notAnInitializer(IDAO _dao) external {\\n __PluginUUPSUpgradeable_init(_dao);\\n state1 = 1;\\n }\\n}\\n\",\"keccak256\":\"0x2917df3b1da0de27f58cf531afeaa4e6c4285717247cbdd9ecc7880ae5cb9cb0\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/DaoAuthorizableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ContextUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\\\";\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\nimport {_auth} from \\\"./auth.sol\\\";\\n\\n/// @title DaoAuthorizableUpgradeable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract contract providing a meta-transaction compatible modifier for upgradeable or cloneable contracts to authorize function calls through an associated DAO.\\n/// @dev Make sure to call `__DaoAuthorizableUpgradeable_init` during initialization of the inheriting contract.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract DaoAuthorizableUpgradeable is ContextUpgradeable {\\n /// @notice The associated DAO managing the permissions of inheriting contracts.\\n IDAO private dao_;\\n\\n /// @notice Initializes the contract by setting the associated DAO.\\n /// @param _dao The associated DAO address.\\n // solhint-disable-next-line func-name-mixedcase\\n function __DaoAuthorizableUpgradeable_init(IDAO _dao) internal onlyInitializing {\\n dao_ = _dao;\\n }\\n\\n /// @notice Returns the DAO contract.\\n /// @return The DAO contract.\\n function dao() public view returns (IDAO) {\\n return dao_;\\n }\\n\\n /// @notice A modifier to make functions on inheriting contracts authorized. Permissions to call the function are checked through the associated DAO's permission manager.\\n /// @param _permissionId The permission identifier required to call the method this modifier is applied to.\\n modifier auth(bytes32 _permissionId) {\\n _auth(dao_, address(this), _msgSender(), _permissionId, _msgData());\\n _;\\n }\\n\\n /// @notice This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain (see [OpenZeppelin's guide about storage gaps](https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps)).\\n uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0x7fac6b01b037ba1cb9d6a22d3f43b0785037dcf496ffb672434d9bf7227d2585\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/auth.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice Thrown if a call is unauthorized in the associated DAO.\\n/// @param dao The associated DAO.\\n/// @param where The context in which the authorization reverted.\\n/// @param who The address (EOA or contract) missing the permission.\\n/// @param permissionId The permission identifier.\\nerror DaoUnauthorized(address dao, address where, address who, bytes32 permissionId);\\n\\n/// @notice A free function checking if a caller is granted permissions on a target contract via a permission identifier that redirects the approval to a `PermissionCondition` if this was specified in the setup.\\n/// @param _where The address of the target contract for which `who` receives permission.\\n/// @param _who The address (EOA or contract) owning the permission.\\n/// @param _permissionId The permission identifier.\\n/// @param _data The optional data passed to the `PermissionCondition` registered.\\n/// @custom:security-contact sirt@aragon.org\\nfunction _auth(\\n IDAO _dao,\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes calldata _data\\n) view {\\n if (!_dao.hasPermission(_where, _who, _permissionId, _data))\\n revert DaoUnauthorized({\\n dao: address(_dao),\\n where: _where,\\n who: _who,\\n permissionId: _permissionId\\n });\\n}\\n\",\"keccak256\":\"0x878764b4f87fe0651fb3798fb9cb87c952f8c6caf6ae79c7f09de84df6c00298\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/IPlugin.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IPlugin\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the traits of a plugin.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IPlugin {\\n enum PluginType {\\n UUPS,\\n Cloneable,\\n Constructable\\n }\\n\\n /// @notice Returns the plugin's type\\n function pluginType() external view returns (PluginType);\\n}\\n\",\"keccak256\":\"0xc57cd0d10b6380ab7f54c713a509e88fd8f4ad9288313a0e8e12b8887817ddfe\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/PluginUUPSUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {UUPSUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\\\";\\nimport {IERC1822ProxiableUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport {ERC165Upgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\\\";\\n\\nimport {IProtocolVersion} from \\\"../utils/versioning/IProtocolVersion.sol\\\";\\nimport {ProtocolVersion} from \\\"../utils/versioning/ProtocolVersion.sol\\\";\\nimport {DaoAuthorizableUpgradeable} from \\\"../permission/auth/DaoAuthorizableUpgradeable.sol\\\";\\nimport {IDAO} from \\\"../dao/IDAO.sol\\\";\\nimport {IPlugin} from \\\"./IPlugin.sol\\\";\\n\\n/// @title PluginUUPSUpgradeable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract, upgradeable contract to inherit from when creating a plugin being deployed via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract PluginUUPSUpgradeable is\\n IPlugin,\\n ERC165Upgradeable,\\n UUPSUpgradeable,\\n DaoAuthorizableUpgradeable,\\n ProtocolVersion\\n{\\n // NOTE: When adding new state variables to the contract, the size of `_gap` has to be adapted below as well.\\n\\n /// @notice Disables the initializers on the implementation contract to prevent it from being left uninitialized.\\n /// @custom:oz-upgrades-unsafe-allow constructor\\n constructor() {\\n _disableInitializers();\\n }\\n\\n /// @inheritdoc IPlugin\\n function pluginType() public pure override returns (PluginType) {\\n return PluginType.UUPS;\\n }\\n\\n /// @notice The ID of the permission required to call the `_authorizeUpgrade` function.\\n bytes32 public constant UPGRADE_PLUGIN_PERMISSION_ID = keccak256(\\\"UPGRADE_PLUGIN_PERMISSION\\\");\\n\\n /// @notice Initializes the plugin by storing the associated DAO.\\n /// @param _dao The DAO contract.\\n // solhint-disable-next-line func-name-mixedcase\\n function __PluginUUPSUpgradeable_init(IDAO _dao) internal virtual onlyInitializing {\\n __DaoAuthorizableUpgradeable_init(_dao);\\n }\\n\\n /// @notice Checks if an interface is supported by this or its parent contract.\\n /// @param _interfaceId The ID of the interface.\\n /// @return Returns `true` if the interface is supported.\\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\\n return\\n _interfaceId == type(IPlugin).interfaceId ||\\n _interfaceId == type(IProtocolVersion).interfaceId ||\\n _interfaceId == type(IERC1822ProxiableUpgradeable).interfaceId ||\\n super.supportsInterface(_interfaceId);\\n }\\n\\n /// @notice Returns the address of the implementation contract in the [proxy storage slot](https://eips.ethereum.org/EIPS/eip-1967) slot the [UUPS proxy](https://eips.ethereum.org/EIPS/eip-1822) is pointing to.\\n /// @return The address of the implementation contract.\\n function implementation() public view returns (address) {\\n return _getImplementation();\\n }\\n\\n /// @notice Internal method authorizing the upgrade of the contract via the [upgradeability mechanism for UUPS proxies](https://docs.openzeppelin.com/contracts/4.x/api/proxy#UUPSUpgradeable) (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\\n /// @dev The caller must have the `UPGRADE_PLUGIN_PERMISSION_ID` permission.\\n function _authorizeUpgrade(\\n address\\n )\\n internal\\n virtual\\n override\\n auth(UPGRADE_PLUGIN_PERMISSION_ID)\\n // solhint-disable-next-line no-empty-blocks\\n {\\n\\n }\\n\\n /// @notice This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain (see [OpenZeppelin's guide about storage gaps](https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps)).\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x127e7c4f839cb8c8486070990b78e22313f1ff089ffe6a4ff23ae358e48f0037\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/IProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IProtocolVersion\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the semantic Aragon OSx protocol version number.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IProtocolVersion {\\n /// @notice Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\\n /// @return _version Returns the semantic Aragon OSx protocol version number.\\n /// @dev This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\\n function protocolVersion() external view returns (uint8[3] memory _version);\\n}\\n\",\"keccak256\":\"0x00a4da654d21dc1bdadbdc8bd54bb86c378c56f85e461ccc31303628ea621361\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/ProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IProtocolVersion} from \\\"./IProtocolVersion.sol\\\";\\n\\n/// @title ProtocolVersion\\n/// @author Aragon X - 2023\\n/// @notice An abstract, stateless, non-upgradeable contract providing the current Aragon OSx protocol version number.\\n/// @dev Do not add any new variables to this contract that would shift down storage in the inheritance chain.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract ProtocolVersion is IProtocolVersion {\\n // IMPORTANT: Do not add any storage variable, see the above notice.\\n\\n /// @inheritdoc IProtocolVersion\\n function protocolVersion() public pure returns (uint8[3] memory) {\\n return [1, 4, 0];\\n }\\n}\\n\",\"keccak256\":\"0x3975c937be935f687c6b6b8f379071232681e98cf04b175d72781b819ea52bdb\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[{"astId":372,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBad","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":375,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBad","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":2821,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBad","label":"__gap","offset":0,"slot":"1","type":"t_array(t_uint256)50_storage"},{"astId":354,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBad","label":"__gap","offset":0,"slot":"51","type":"t_array(t_uint256)50_storage"},{"astId":670,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBad","label":"__gap","offset":0,"slot":"101","type":"t_array(t_uint256)50_storage"},{"astId":2592,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBad","label":"__gap","offset":0,"slot":"151","type":"t_array(t_uint256)50_storage"},{"astId":13111,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBad","label":"dao_","offset":0,"slot":"201","type":"t_contract(IDAO)10865"},{"astId":13160,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBad","label":"__gap","offset":0,"slot":"202","type":"t_array(t_uint256)49_storage"},{"astId":13632,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBad","label":"__gap","offset":0,"slot":"251","type":"t_array(t_uint256)50_storage"},{"astId":11905,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBad","label":"state1","offset":0,"slot":"301","type":"t_uint256"}],"types":{"t_array(t_uint256)49_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[49]","numberOfBytes":"1568"},"t_array(t_uint256)50_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[50]","numberOfBytes":"1600"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_contract(IDAO)10865":{"encoding":"inplace","label":"contract IDAO","numberOfBytes":"20"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"errors":{"DaoUnauthorized(address,address,address,bytes32)":[{"notice":"Thrown if a call is unauthorized in the associated DAO."}]},"kind":"user","methods":{"UPGRADE_PLUGIN_PERMISSION_ID()":{"notice":"The ID of the permission required to call the `_authorizeUpgrade` function."},"dao()":{"notice":"Returns the DAO contract."},"implementation()":{"notice":"Returns the address of the implementation contract in the [proxy storage slot](https://eips.ethereum.org/EIPS/eip-1967) slot the [UUPS proxy](https://eips.ethereum.org/EIPS/eip-1822) is pointing to."},"pluginType()":{"notice":"Returns the plugin's type"},"protocolVersion()":{"notice":"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with."},"supportsInterface(bytes4)":{"notice":"Checks if an interface is supported by this or its parent contract."}},"notice":"A mock upgradeable plugin missing an initializer function.","version":1}},"PluginUUPSUpgradeableMockBuild1":{"abi":[{"inputs":[{"internalType":"address","name":"dao","type":"address"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"name":"DaoUnauthorized","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"beacon","type":"address"}],"name":"BeaconUpgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"inputs":[],"name":"UPGRADE_PLUGIN_PERMISSION_ID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dao","outputs":[{"internalType":"contract IDAO","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IDAO","name":"_dao","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pluginType","outputs":[{"internalType":"enum IPlugin.PluginType","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"protocolVersion","outputs":[{"internalType":"uint8[3]","name":"","type":"uint8[3]"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"state1","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"}],"name":"upgradeTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"}],"devdoc":{"details":"DO NOT USE IN PRODUCTION!","errors":{"DaoUnauthorized(address,address,address,bytes32)":[{"params":{"dao":"The associated DAO.","permissionId":"The permission identifier.","where":"The context in which the authorization reverted.","who":"The address (EOA or contract) missing the permission."}}]},"kind":"dev","methods":{"dao()":{"returns":{"_0":"The DAO contract."}},"implementation()":{"returns":{"_0":"The address of the implementation contract."}},"protocolVersion()":{"details":"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.","returns":{"_0":"Returns the semantic Aragon OSx protocol version number."}},"proxiableUUID()":{"details":"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier."},"supportsInterface(bytes4)":{"params":{"_interfaceId":"The ID of the interface."},"returns":{"_0":"Returns `true` if the interface is supported."}},"upgradeTo(address)":{"custom:oz-upgrades-unsafe-allow-reachable":"delegatecall","details":"Upgrade the implementation of the proxy to `newImplementation`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."},"upgradeToAndCall(address,bytes)":{"custom:oz-upgrades-unsafe-allow-reachable":"delegatecall","details":"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."}},"version":1},"evm":{"bytecode":{"functionDebugData":{"@_13538":{"entryPoint":null,"id":13538,"parameterSlots":0,"returnSlots":0},"@_disableInitializers_515":{"entryPoint":34,"id":515,"parameterSlots":0,"returnSlots":0},"abi_encode_tuple_t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:608:92","statements":[{"nodeType":"YulBlock","src":"6:3:92","statements":[]},{"body":{"nodeType":"YulBlock","src":"188:229:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"205:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"216:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"198:6:92"},"nodeType":"YulFunctionCall","src":"198:21:92"},"nodeType":"YulExpressionStatement","src":"198:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"239:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"250:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"235:3:92"},"nodeType":"YulFunctionCall","src":"235:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"255:2:92","type":"","value":"39"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"228:6:92"},"nodeType":"YulFunctionCall","src":"228:30:92"},"nodeType":"YulExpressionStatement","src":"228:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"278:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"289:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"274:3:92"},"nodeType":"YulFunctionCall","src":"274:18:92"},{"hexValue":"496e697469616c697a61626c653a20636f6e747261637420697320696e697469","kind":"string","nodeType":"YulLiteral","src":"294:34:92","type":"","value":"Initializable: contract is initi"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"267:6:92"},"nodeType":"YulFunctionCall","src":"267:62:92"},"nodeType":"YulExpressionStatement","src":"267:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"349:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"360:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"345:3:92"},"nodeType":"YulFunctionCall","src":"345:18:92"},{"hexValue":"616c697a696e67","kind":"string","nodeType":"YulLiteral","src":"365:9:92","type":"","value":"alizing"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"338:6:92"},"nodeType":"YulFunctionCall","src":"338:37:92"},"nodeType":"YulExpressionStatement","src":"338:37:92"},{"nodeType":"YulAssignment","src":"384:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"396:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"407:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"392:3:92"},"nodeType":"YulFunctionCall","src":"392:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"384:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"165:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"179:4:92","type":""}],"src":"14:403:92"},{"body":{"nodeType":"YulBlock","src":"519:87:92","statements":[{"nodeType":"YulAssignment","src":"529:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"541:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"552:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"537:3:92"},"nodeType":"YulFunctionCall","src":"537:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"529:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"571:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"586:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"594:4:92","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"582:3:92"},"nodeType":"YulFunctionCall","src":"582:17:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"564:6:92"},"nodeType":"YulFunctionCall","src":"564:36:92"},"nodeType":"YulExpressionStatement","src":"564:36:92"}]},"name":"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"488:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"499:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"510:4:92","type":""}],"src":"422:184:92"}]},"contents":"{\n { }\n function abi_encode_tuple_t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 39)\n mstore(add(headStart, 64), \"Initializable: contract is initi\")\n mstore(add(headStart, 96), \"alizing\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xff))\n }\n}","id":92,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60a06040523060805234801561001457600080fd5b5061001d610022565b6100e1565b600054610100900460ff161561008e5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116146100df576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6080516110fb610118600039600081816102de015281816103680152818161045e015281816104e301526105cd01526110fb6000f3fe6080604052600436106100bc5760003560e01c80634f1ef286116100745780636accab8c1161004e5780636accab8c146101d3578063c4d66de8146101ea578063c9c4bfca1461020a57600080fd5b80634f1ef2861461018857806352d1902d1461019b5780635c60da1b146101be57600080fd5b80633659cfe6116100a55780633659cfe6146101185780634162169f1461013a57806341de68301461016c57600080fd5b806301ffc9a7146100c15780632ae9c600146100f6575b600080fd5b3480156100cd57600080fd5b506100e16100dc366004610e33565b61023e565b60405190151581526020015b60405180910390f35b34801561010257600080fd5b5061010b6102aa565b6040516100ed9190610e5d565b34801561012457600080fd5b50610138610133366004610ea6565b6102d4565b005b34801561014657600080fd5b5060c9546001600160a01b03165b6040516001600160a01b0390911681526020016100ed565b34801561017857600080fd5b5060006040516100ed9190610ec3565b610138610196366004610f01565b610454565b3480156101a757600080fd5b506101b06105c0565b6040519081526020016100ed565b3480156101ca57600080fd5b50610154610685565b3480156101df57600080fd5b506101b061012d5481565b3480156101f657600080fd5b50610138610205366004610ea6565b6106bd565b34801561021657600080fd5b506101b07f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f581565b60006001600160e01b0319821663041de68360e41b148061026e57506001600160e01b03198216621574e360e91b145b8061028957506001600160e01b031982166352d1902d60e01b145b806102a457506301ffc9a760e01b6001600160e01b03198316145b92915050565b6102b2610e15565b5060408051606081018252600181526004602082015260009181019190915290565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036103665760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b60648201526084015b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166103c17f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b03161461042c5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b606482015260840161035d565b610435816107e4565b6040805160008082526020820190925261045191839190610821565b50565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036104e15760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b606482015260840161035d565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661053c7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b0316146105a75760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b606482015260840161035d565b6105b0826107e4565b6105bc82826001610821565b5050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106605760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000606482015260840161035d565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b60006106b87f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b600054610100900460ff16158080156106dd5750600054600160ff909116105b806106f75750303b1580156106f7575060005460ff166001145b6107695760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161035d565b6000805460ff19166001179055801561078c576000805461ff0019166101001790555b610795826109c6565b600161012d5580156105bc576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b60c9547f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f5906105bc906001600160a01b0316303384600036610a3a565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156108595761085483610af6565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156108b3575060408051601f3d908101601f191682019092526108b091810190610fc5565b60015b6109255760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201527f6f6e206973206e6f742055555053000000000000000000000000000000000000606482015260840161035d565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146109ba5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f7860448201527f6961626c65555549440000000000000000000000000000000000000000000000606482015260840161035d565b50610854838383610bc1565b600054610100900460ff16610a315760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840161035d565b61045181610bec565b604051637ef7c88360e11b81526001600160a01b0387169063fdef910690610a6e9088908890889088908890600401610fde565b602060405180830381865afa158015610a8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aaf9190611032565b610aee57604051630cb6f8ed60e21b81526001600160a01b0380881660048301528087166024830152851660448201526064810184905260840161035d565b505050505050565b6001600160a01b0381163b610b735760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e747261637400000000000000000000000000000000000000606482015260840161035d565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610bca83610c86565b600082511180610bd75750805b1561085457610be68383610cc6565b50505050565b600054610100900460ff16610c575760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840161035d565b60c9805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610c8f81610af6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060610ceb83836040518060600160405280602781526020016110c860279139610cf2565b9392505050565b6060600080856001600160a01b031685604051610d0f9190611078565b600060405180830381855af49150503d8060008114610d4a576040519150601f19603f3d011682016040523d82523d6000602084013e610d4f565b606091505b5091509150610d6086838387610d6a565b9695505050505050565b60608315610dd9578251600003610dd2576001600160a01b0385163b610dd25760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161035d565b5081610de3565b610de38383610deb565b949350505050565b815115610dfb5781518083602001fd5b8060405162461bcd60e51b815260040161035d9190611094565b60405180606001604052806003906020820280368337509192915050565b600060208284031215610e4557600080fd5b81356001600160e01b031981168114610ceb57600080fd5b60608101818360005b6003811015610e8857815160ff16835260209283019290910190600101610e66565b50505092915050565b6001600160a01b038116811461045157600080fd5b600060208284031215610eb857600080fd5b8135610ceb81610e91565b6020810160038310610ee557634e487b7160e01b600052602160045260246000fd5b91905290565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215610f1457600080fd5b8235610f1f81610e91565b9150602083013567ffffffffffffffff80821115610f3c57600080fd5b818501915085601f830112610f5057600080fd5b813581811115610f6257610f62610eeb565b604051601f8201601f19908116603f01168101908382118183101715610f8a57610f8a610eeb565b81604052828152886020848701011115610fa357600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b600060208284031215610fd757600080fd5b5051919050565b60006001600160a01b03808816835280871660208401525084604083015260806060830152826080830152828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b60006020828403121561104457600080fd5b81518015158114610ceb57600080fd5b60005b8381101561106f578181015183820152602001611057565b50506000910152565b6000825161108a818460208701611054565b9190910192915050565b60208152600082518060208401526110b3816040850160208701611054565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a","opcodes":"PUSH1 0xA0 PUSH1 0x40 MSTORE ADDRESS PUSH1 0x80 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x14 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1D PUSH2 0x22 JUMP JUMPDEST PUSH2 0xE1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x8E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x27 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320696E697469 PUSH1 0x44 DUP3 ADD MSTORE PUSH7 0x616C697A696E67 PUSH1 0xC8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xFF SWAP1 DUP2 AND EQ PUSH2 0xDF JUMPI PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH2 0x10FB PUSH2 0x118 PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH2 0x2DE ADD MSTORE DUP2 DUP2 PUSH2 0x368 ADD MSTORE DUP2 DUP2 PUSH2 0x45E ADD MSTORE DUP2 DUP2 PUSH2 0x4E3 ADD MSTORE PUSH2 0x5CD ADD MSTORE PUSH2 0x10FB PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xBC JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x4F1EF286 GT PUSH2 0x74 JUMPI DUP1 PUSH4 0x6ACCAB8C GT PUSH2 0x4E JUMPI DUP1 PUSH4 0x6ACCAB8C EQ PUSH2 0x1D3 JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0x1EA JUMPI DUP1 PUSH4 0xC9C4BFCA EQ PUSH2 0x20A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x188 JUMPI DUP1 PUSH4 0x52D1902D EQ PUSH2 0x19B JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0x1BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x3659CFE6 GT PUSH2 0xA5 JUMPI DUP1 PUSH4 0x3659CFE6 EQ PUSH2 0x118 JUMPI DUP1 PUSH4 0x4162169F EQ PUSH2 0x13A JUMPI DUP1 PUSH4 0x41DE6830 EQ PUSH2 0x16C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xC1 JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0xF6 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xCD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xE1 PUSH2 0xDC CALLDATASIZE PUSH1 0x4 PUSH2 0xE33 JUMP JUMPDEST PUSH2 0x23E JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x102 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x10B PUSH2 0x2AA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xED SWAP2 SWAP1 PUSH2 0xE5D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x124 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x138 PUSH2 0x133 CALLDATASIZE PUSH1 0x4 PUSH2 0xEA6 JUMP JUMPDEST PUSH2 0x2D4 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x146 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xC9 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xED JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x178 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 PUSH1 0x40 MLOAD PUSH2 0xED SWAP2 SWAP1 PUSH2 0xEC3 JUMP JUMPDEST PUSH2 0x138 PUSH2 0x196 CALLDATASIZE PUSH1 0x4 PUSH2 0xF01 JUMP JUMPDEST PUSH2 0x454 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1B0 PUSH2 0x5C0 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xED JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x154 PUSH2 0x685 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1B0 PUSH2 0x12D SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x138 PUSH2 0x205 CALLDATASIZE PUSH1 0x4 PUSH2 0xEA6 JUMP JUMPDEST PUSH2 0x6BD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x216 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1B0 PUSH32 0x821B6E3A557148015A918C89E5D092E878A69854A2D1A410635F771BD5A8A3F5 DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x41DE683 PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x26E JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x289 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x52D1902D PUSH1 0xE0 SHL EQ JUMPDEST DUP1 PUSH2 0x2A4 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x2B2 PUSH2 0xE15 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x366 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x19195B1959D85D1958D85B1B PUSH1 0xA2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3C1 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x42C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x6163746976652070726F7879 PUSH1 0xA0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x35D JUMP JUMPDEST PUSH2 0x435 DUP2 PUSH2 0x7E4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x451 SWAP2 DUP4 SWAP2 SWAP1 PUSH2 0x821 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x4E1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x19195B1959D85D1958D85B1B PUSH1 0xA2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x35D JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x53C PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x5A7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x6163746976652070726F7879 PUSH1 0xA0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x35D JUMP JUMPDEST PUSH2 0x5B0 DUP3 PUSH2 0x7E4 JUMP JUMPDEST PUSH2 0x5BC DUP3 DUP3 PUSH1 0x1 PUSH2 0x821 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x660 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x38 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x555550535570677261646561626C653A206D757374206E6F742062652063616C PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6C6564207468726F7567682064656C656761746563616C6C0000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x35D JUMP JUMPDEST POP PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6B8 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 DUP1 ISZERO PUSH2 0x6DD JUMPI POP PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xFF SWAP1 SWAP2 AND LT JUMPDEST DUP1 PUSH2 0x6F7 JUMPI POP ADDRESS EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x6F7 JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF AND PUSH1 0x1 EQ JUMPDEST PUSH2 0x769 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x647920696E697469616C697A6564000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x35D JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE DUP1 ISZERO PUSH2 0x78C JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND PUSH2 0x100 OR SWAP1 SSTORE JUMPDEST PUSH2 0x795 DUP3 PUSH2 0x9C6 JUMP JUMPDEST PUSH1 0x1 PUSH2 0x12D SSTORE DUP1 ISZERO PUSH2 0x5BC JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0xC9 SLOAD PUSH32 0x821B6E3A557148015A918C89E5D092E878A69854A2D1A410635F771BD5A8A3F5 SWAP1 PUSH2 0x5BC SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ADDRESS CALLER DUP5 PUSH1 0x0 CALLDATASIZE PUSH2 0xA3A JUMP JUMPDEST PUSH32 0x4910FDFA16FED3260ED0E7147F7CC6DA11A60208B5B9406D12A635614FFD9143 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x859 JUMPI PUSH2 0x854 DUP4 PUSH2 0xAF6 JUMP JUMPDEST POP POP POP JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x52D1902D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x8B3 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x8B0 SWAP2 DUP2 ADD SWAP1 PUSH2 0xFC5 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x925 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524331393637557067726164653A206E657720696D706C656D656E74617469 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F6E206973206E6F742055555053000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x35D JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC DUP2 EQ PUSH2 0x9BA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524331393637557067726164653A20756E737570706F727465642070726F78 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6961626C65555549440000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x35D JUMP JUMPDEST POP PUSH2 0x854 DUP4 DUP4 DUP4 PUSH2 0xBC1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0xA31 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x35D JUMP JUMPDEST PUSH2 0x451 DUP2 PUSH2 0xBEC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x7EF7C883 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0xFDEF9106 SWAP1 PUSH2 0xA6E SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0xFDE JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xA8B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xAAF SWAP2 SWAP1 PUSH2 0x1032 JUMP JUMPDEST PUSH2 0xAEE JUMPI PUSH1 0x40 MLOAD PUSH4 0xCB6F8ED PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND PUSH1 0x4 DUP4 ADD MSTORE DUP1 DUP8 AND PUSH1 0x24 DUP4 ADD MSTORE DUP6 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x84 ADD PUSH2 0x35D JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND EXTCODESIZE PUSH2 0xB73 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313936373A206E657720696D706C656D656E746174696F6E206973206E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F74206120636F6E747261637400000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x35D JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xBCA DUP4 PUSH2 0xC86 JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD GT DUP1 PUSH2 0xBD7 JUMPI POP DUP1 JUMPDEST ISZERO PUSH2 0x854 JUMPI PUSH2 0xBE6 DUP4 DUP4 PUSH2 0xCC6 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0xC57 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x35D JUMP JUMPDEST PUSH1 0xC9 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xC8F DUP2 PUSH2 0xAF6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xCEB DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x10C8 PUSH1 0x27 SWAP2 CODECOPY PUSH2 0xCF2 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0xD0F SWAP2 SWAP1 PUSH2 0x1078 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xD4A JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xD4F JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0xD60 DUP7 DUP4 DUP4 DUP8 PUSH2 0xD6A JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0xDD9 JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0xDD2 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0xDD2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x35D JUMP JUMPDEST POP DUP2 PUSH2 0xDE3 JUMP JUMPDEST PUSH2 0xDE3 DUP4 DUP4 PUSH2 0xDEB JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0xDFB JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x35D SWAP2 SWAP1 PUSH2 0x1094 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xE45 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0xCEB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0xE88 JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0xE66 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x451 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xEB8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xCEB DUP2 PUSH2 0xE91 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH1 0x3 DUP4 LT PUSH2 0xEE5 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 SWAP1 MSTORE SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xF14 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0xF1F DUP2 PUSH2 0xE91 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xF3C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xF50 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0xF62 JUMPI PUSH2 0xF62 PUSH2 0xEEB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0xF8A JUMPI PUSH2 0xF8A PUSH2 0xEEB JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0xFA3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xFD7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND DUP4 MSTORE DUP1 DUP8 AND PUSH1 0x20 DUP5 ADD MSTORE POP DUP5 PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x80 PUSH1 0x60 DUP4 ADD MSTORE DUP3 PUSH1 0x80 DUP4 ADD MSTORE DUP3 DUP5 PUSH1 0xA0 DUP5 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0xA0 DUP5 DUP5 ADD ADD MSTORE PUSH1 0xA0 PUSH1 0x1F NOT PUSH1 0x1F DUP6 ADD AND DUP4 ADD ADD SWAP1 POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1044 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xCEB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x106F JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1057 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x108A DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x1054 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x10B3 DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x1054 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A164 PUSH20 0x6F6C6343000811000A0000000000000000000000 ","sourceMap":"382:225:53:-:0;;;1198:4:5;1155:48;;382:225:53;;;;;;;;;-1:-1:-1;1489:22:75;:20;:22::i;:::-;382:225:53;;5939:280:4;6007:13;;;;;;;6006:14;5998:66;;;;-1:-1:-1;;;5998:66:4;;216:2:92;5998:66:4;;;198:21:92;255:2;235:18;;;228:30;294:34;274:18;;;267:62;-1:-1:-1;;;345:18:92;;;338:37;392:19;;5998:66:4;;;;;;;;6078:12;;6094:15;6078:12;;;:31;6074:139;;6125:12;:30;;-1:-1:-1;;6125:30:4;6140:15;6125:30;;;;;;6174:28;;564:36:92;;;6174:28:4;;552:2:92;537:18;6174:28:4;;;;;;;6074:139;5939:280::o;422:184:92:-;382:225:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@UPGRADE_PLUGIN_PERMISSION_ID_13556":{"entryPoint":null,"id":13556,"parameterSlots":0,"returnSlots":0},"@__DaoAuthorizableUpgradeable_init_13125":{"entryPoint":3052,"id":13125,"parameterSlots":1,"returnSlots":0},"@__PluginUUPSUpgradeable_init_13570":{"entryPoint":2502,"id":13570,"parameterSlots":1,"returnSlots":0},"@_auth_13211":{"entryPoint":2618,"id":13211,"parameterSlots":6,"returnSlots":0},"@_authorizeUpgrade_13627":{"entryPoint":2020,"id":13627,"parameterSlots":1,"returnSlots":0},"@_getImplementation_76":{"entryPoint":null,"id":76,"parameterSlots":0,"returnSlots":1},"@_msgData_2579":{"entryPoint":null,"id":2579,"parameterSlots":0,"returnSlots":2},"@_msgSender_2570":{"entryPoint":null,"id":2570,"parameterSlots":0,"returnSlots":1},"@_revert_1000":{"entryPoint":3563,"id":1000,"parameterSlots":2,"returnSlots":0},"@_setImplementation_100":{"entryPoint":2806,"id":100,"parameterSlots":1,"returnSlots":0},"@_upgradeToAndCallUUPS_198":{"entryPoint":2081,"id":198,"parameterSlots":3,"returnSlots":0},"@_upgradeToAndCall_145":{"entryPoint":3009,"id":145,"parameterSlots":3,"returnSlots":0},"@_upgradeTo_115":{"entryPoint":3206,"id":115,"parameterSlots":1,"returnSlots":0},"@dao_13135":{"entryPoint":null,"id":13135,"parameterSlots":0,"returnSlots":1},"@functionDelegateCall_888":{"entryPoint":3270,"id":888,"parameterSlots":2,"returnSlots":1},"@functionDelegateCall_917":{"entryPoint":3314,"id":917,"parameterSlots":3,"returnSlots":1},"@getAddressSlot_2699":{"entryPoint":null,"id":2699,"parameterSlots":1,"returnSlots":1},"@getBooleanSlot_2710":{"entryPoint":null,"id":2710,"parameterSlots":1,"returnSlots":1},"@implementation_13616":{"entryPoint":1669,"id":13616,"parameterSlots":0,"returnSlots":1},"@initialize_11788":{"entryPoint":1725,"id":11788,"parameterSlots":1,"returnSlots":0},"@isContract_689":{"entryPoint":null,"id":689,"parameterSlots":1,"returnSlots":1},"@pluginType_13550":{"entryPoint":null,"id":13550,"parameterSlots":0,"returnSlots":1},"@protocolVersion_14765":{"entryPoint":682,"id":14765,"parameterSlots":0,"returnSlots":1},"@proxiableUUID_616":{"entryPoint":1472,"id":616,"parameterSlots":0,"returnSlots":1},"@state1_11771":{"entryPoint":null,"id":11771,"parameterSlots":0,"returnSlots":0},"@supportsInterface_13606":{"entryPoint":574,"id":13606,"parameterSlots":1,"returnSlots":1},"@supportsInterface_2816":{"entryPoint":null,"id":2816,"parameterSlots":1,"returnSlots":1},"@upgradeToAndCall_659":{"entryPoint":1108,"id":659,"parameterSlots":2,"returnSlots":0},"@upgradeTo_638":{"entryPoint":724,"id":638,"parameterSlots":1,"returnSlots":0},"@verifyCallResultFromTarget_956":{"entryPoint":3434,"id":956,"parameterSlots":4,"returnSlots":1},"abi_decode_tuple_t_address":{"entryPoint":3750,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_bytes_memory_ptr":{"entryPoint":3841,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_bool_fromMemory":{"entryPoint":4146,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes32_fromMemory":{"entryPoint":4037,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes4":{"entryPoint":3635,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_contract$_IDAO_$10865":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":4216,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address_t_address_t_address_t_bytes32__to_t_address_t_address_t_address_t_bytes32__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":5,"returnSlots":1},"abi_encode_tuple_t_address_t_address_t_bytes32_t_bytes_calldata_ptr__to_t_address_t_address_t_bytes32_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":4062,"id":null,"parameterSlots":6,"returnSlots":1},"abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed":{"entryPoint":3677,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_contract$_IDAO_$10865__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_enum$_PluginType_$13330__to_t_uint8__fromStack_reversed":{"entryPoint":3779,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_rational_1_by_1__to_t_uint8__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":4244,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_36e108fa7a809b52ab1951dd91c117a7bc9ac5250bdf1aa162d4e104f7edf9eb__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_52f1ead4d9653e13afbd2e90ef2587c30187cd50b2e97d784e3f7a7541247434__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_67f0151b4ad1dcfa0e3302a0cd6019f51582ef1807b37dceb00bd852a514f7f4__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_76b6b6debfc5febf101145a79ecf0b0d2e89e397dfdab2bca99888370411152c__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_8e8e2fbcb586f700b5b14e2c4a650c8d83b9773c31c5fe8962070ea544e11f24__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"copy_memory_to_memory_with_cleanup":{"entryPoint":4180,"id":null,"parameterSlots":3,"returnSlots":0},"panic_error_0x41":{"entryPoint":3819,"id":null,"parameterSlots":0,"returnSlots":0},"validator_revert_address":{"entryPoint":3729,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:10526:92","statements":[{"nodeType":"YulBlock","src":"6:3:92","statements":[]},{"body":{"nodeType":"YulBlock","src":"83:217:92","statements":[{"body":{"nodeType":"YulBlock","src":"129:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"138:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"141:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"131:6:92"},"nodeType":"YulFunctionCall","src":"131:12:92"},"nodeType":"YulExpressionStatement","src":"131:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"104:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"113:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"100:3:92"},"nodeType":"YulFunctionCall","src":"100:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"125:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"96:3:92"},"nodeType":"YulFunctionCall","src":"96:32:92"},"nodeType":"YulIf","src":"93:52:92"},{"nodeType":"YulVariableDeclaration","src":"154:36:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"180:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"167:12:92"},"nodeType":"YulFunctionCall","src":"167:23:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"158:5:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"254:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"263:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"266:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"256:6:92"},"nodeType":"YulFunctionCall","src":"256:12:92"},"nodeType":"YulExpressionStatement","src":"256:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"212:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"223:5:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"234:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"239:10:92","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"230:3:92"},"nodeType":"YulFunctionCall","src":"230:20:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"219:3:92"},"nodeType":"YulFunctionCall","src":"219:32:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"209:2:92"},"nodeType":"YulFunctionCall","src":"209:43:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"202:6:92"},"nodeType":"YulFunctionCall","src":"202:51:92"},"nodeType":"YulIf","src":"199:71:92"},{"nodeType":"YulAssignment","src":"279:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"289:5:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"279:6:92"}]}]},"name":"abi_decode_tuple_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"49:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"60:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"72:6:92","type":""}],"src":"14:286:92"},{"body":{"nodeType":"YulBlock","src":"400:92:92","statements":[{"nodeType":"YulAssignment","src":"410:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"422:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"433:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"418:3:92"},"nodeType":"YulFunctionCall","src":"418:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"410:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"452:9:92"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"477:6:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"470:6:92"},"nodeType":"YulFunctionCall","src":"470:14:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"463:6:92"},"nodeType":"YulFunctionCall","src":"463:22:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"445:6:92"},"nodeType":"YulFunctionCall","src":"445:41:92"},"nodeType":"YulExpressionStatement","src":"445:41:92"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"369:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"380:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"391:4:92","type":""}],"src":"305:187:92"},{"body":{"nodeType":"YulBlock","src":"640:358:92","statements":[{"nodeType":"YulAssignment","src":"650:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"662:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"673:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"658:3:92"},"nodeType":"YulFunctionCall","src":"658:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"650:4:92"}]},{"nodeType":"YulVariableDeclaration","src":"685:20:92","value":{"name":"headStart","nodeType":"YulIdentifier","src":"696:9:92"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"689:3:92","type":""}]},{"nodeType":"YulAssignment","src":"714:16:92","value":{"name":"headStart","nodeType":"YulIdentifier","src":"721:9:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"714:3:92"}]},{"nodeType":"YulVariableDeclaration","src":"739:20:92","value":{"name":"value0","nodeType":"YulIdentifier","src":"753:6:92"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"743:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"768:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"777:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"772:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"834:158:92","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"855:3:92"},{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"870:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"864:5:92"},"nodeType":"YulFunctionCall","src":"864:13:92"},{"kind":"number","nodeType":"YulLiteral","src":"879:4:92","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"860:3:92"},"nodeType":"YulFunctionCall","src":"860:24:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"848:6:92"},"nodeType":"YulFunctionCall","src":"848:37:92"},"nodeType":"YulExpressionStatement","src":"848:37:92"},{"nodeType":"YulVariableDeclaration","src":"898:14:92","value":{"kind":"number","nodeType":"YulLiteral","src":"908:4:92","type":"","value":"0x20"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"902:2:92","type":""}]},{"nodeType":"YulAssignment","src":"925:19:92","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"936:3:92"},{"name":"_1","nodeType":"YulIdentifier","src":"941:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"932:3:92"},"nodeType":"YulFunctionCall","src":"932:12:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"925:3:92"}]},{"nodeType":"YulAssignment","src":"957:25:92","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"971:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"979:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"967:3:92"},"nodeType":"YulFunctionCall","src":"967:15:92"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"957:6:92"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"798:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"801:4:92","type":"","value":"0x03"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"795:2:92"},"nodeType":"YulFunctionCall","src":"795:11:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"807:18:92","statements":[{"nodeType":"YulAssignment","src":"809:14:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"818:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"821:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"814:3:92"},"nodeType":"YulFunctionCall","src":"814:9:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"809:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"791:3:92","statements":[]},"src":"787:205:92"}]},"name":"abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"609:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"620:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"631:4:92","type":""}],"src":"497:501:92"},{"body":{"nodeType":"YulBlock","src":"1048:109:92","statements":[{"body":{"nodeType":"YulBlock","src":"1135:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1144:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1147:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1137:6:92"},"nodeType":"YulFunctionCall","src":"1137:12:92"},"nodeType":"YulExpressionStatement","src":"1137:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1071:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1082:5:92"},{"kind":"number","nodeType":"YulLiteral","src":"1089:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1078:3:92"},"nodeType":"YulFunctionCall","src":"1078:54:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1068:2:92"},"nodeType":"YulFunctionCall","src":"1068:65:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1061:6:92"},"nodeType":"YulFunctionCall","src":"1061:73:92"},"nodeType":"YulIf","src":"1058:93:92"}]},"name":"validator_revert_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1037:5:92","type":""}],"src":"1003:154:92"},{"body":{"nodeType":"YulBlock","src":"1232:177:92","statements":[{"body":{"nodeType":"YulBlock","src":"1278:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1287:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1290:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1280:6:92"},"nodeType":"YulFunctionCall","src":"1280:12:92"},"nodeType":"YulExpressionStatement","src":"1280:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1253:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"1262:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1249:3:92"},"nodeType":"YulFunctionCall","src":"1249:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"1274:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1245:3:92"},"nodeType":"YulFunctionCall","src":"1245:32:92"},"nodeType":"YulIf","src":"1242:52:92"},{"nodeType":"YulVariableDeclaration","src":"1303:36:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1329:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1316:12:92"},"nodeType":"YulFunctionCall","src":"1316:23:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"1307:5:92","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1373:5:92"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"1348:24:92"},"nodeType":"YulFunctionCall","src":"1348:31:92"},"nodeType":"YulExpressionStatement","src":"1348:31:92"},{"nodeType":"YulAssignment","src":"1388:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"1398:5:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1388:6:92"}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1198:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1209:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1221:6:92","type":""}],"src":"1162:247:92"},{"body":{"nodeType":"YulBlock","src":"1529:125:92","statements":[{"nodeType":"YulAssignment","src":"1539:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1551:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1562:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1547:3:92"},"nodeType":"YulFunctionCall","src":"1547:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1539:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1581:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1596:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"1604:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1592:3:92"},"nodeType":"YulFunctionCall","src":"1592:55:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1574:6:92"},"nodeType":"YulFunctionCall","src":"1574:74:92"},"nodeType":"YulExpressionStatement","src":"1574:74:92"}]},"name":"abi_encode_tuple_t_contract$_IDAO_$10865__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1498:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1509:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1520:4:92","type":""}],"src":"1414:240:92"},{"body":{"nodeType":"YulBlock","src":"1774:229:92","statements":[{"nodeType":"YulAssignment","src":"1784:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1796:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1807:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1792:3:92"},"nodeType":"YulFunctionCall","src":"1792:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1784:4:92"}]},{"body":{"nodeType":"YulBlock","src":"1852:111:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1873:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1880:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"1885:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1876:3:92"},"nodeType":"YulFunctionCall","src":"1876:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1866:6:92"},"nodeType":"YulFunctionCall","src":"1866:31:92"},"nodeType":"YulExpressionStatement","src":"1866:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1917:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"1920:4:92","type":"","value":"0x21"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1910:6:92"},"nodeType":"YulFunctionCall","src":"1910:15:92"},"nodeType":"YulExpressionStatement","src":"1910:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1945:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1948:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1938:6:92"},"nodeType":"YulFunctionCall","src":"1938:15:92"},"nodeType":"YulExpressionStatement","src":"1938:15:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1832:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"1840:1:92","type":"","value":"3"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"1829:2:92"},"nodeType":"YulFunctionCall","src":"1829:13:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1822:6:92"},"nodeType":"YulFunctionCall","src":"1822:21:92"},"nodeType":"YulIf","src":"1819:144:92"},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1979:9:92"},{"name":"value0","nodeType":"YulIdentifier","src":"1990:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1972:6:92"},"nodeType":"YulFunctionCall","src":"1972:25:92"},"nodeType":"YulExpressionStatement","src":"1972:25:92"}]},"name":"abi_encode_tuple_t_enum$_PluginType_$13330__to_t_uint8__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1743:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1754:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1765:4:92","type":""}],"src":"1659:344:92"},{"body":{"nodeType":"YulBlock","src":"2040:95:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2057:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2064:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"2069:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2060:3:92"},"nodeType":"YulFunctionCall","src":"2060:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2050:6:92"},"nodeType":"YulFunctionCall","src":"2050:31:92"},"nodeType":"YulExpressionStatement","src":"2050:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2097:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"2100:4:92","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2090:6:92"},"nodeType":"YulFunctionCall","src":"2090:15:92"},"nodeType":"YulExpressionStatement","src":"2090:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2121:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2124:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2114:6:92"},"nodeType":"YulFunctionCall","src":"2114:15:92"},"nodeType":"YulExpressionStatement","src":"2114:15:92"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"2008:127:92"},{"body":{"nodeType":"YulBlock","src":"2236:960:92","statements":[{"body":{"nodeType":"YulBlock","src":"2282:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2291:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2294:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2284:6:92"},"nodeType":"YulFunctionCall","src":"2284:12:92"},"nodeType":"YulExpressionStatement","src":"2284:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2257:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"2266:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2253:3:92"},"nodeType":"YulFunctionCall","src":"2253:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"2278:2:92","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2249:3:92"},"nodeType":"YulFunctionCall","src":"2249:32:92"},"nodeType":"YulIf","src":"2246:52:92"},{"nodeType":"YulVariableDeclaration","src":"2307:36:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2333:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2320:12:92"},"nodeType":"YulFunctionCall","src":"2320:23:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"2311:5:92","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2377:5:92"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"2352:24:92"},"nodeType":"YulFunctionCall","src":"2352:31:92"},"nodeType":"YulExpressionStatement","src":"2352:31:92"},{"nodeType":"YulAssignment","src":"2392:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"2402:5:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2392:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"2416:46:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2447:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2458:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2443:3:92"},"nodeType":"YulFunctionCall","src":"2443:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2430:12:92"},"nodeType":"YulFunctionCall","src":"2430:32:92"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"2420:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2471:28:92","value":{"kind":"number","nodeType":"YulLiteral","src":"2481:18:92","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"2475:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"2526:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2535:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2538:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2528:6:92"},"nodeType":"YulFunctionCall","src":"2528:12:92"},"nodeType":"YulExpressionStatement","src":"2528:12:92"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"2514:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"2522:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2511:2:92"},"nodeType":"YulFunctionCall","src":"2511:14:92"},"nodeType":"YulIf","src":"2508:34:92"},{"nodeType":"YulVariableDeclaration","src":"2551:32:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2565:9:92"},{"name":"offset","nodeType":"YulIdentifier","src":"2576:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2561:3:92"},"nodeType":"YulFunctionCall","src":"2561:22:92"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"2555:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"2631:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2640:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2643:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2633:6:92"},"nodeType":"YulFunctionCall","src":"2633:12:92"},"nodeType":"YulExpressionStatement","src":"2633:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"2610:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"2614:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2606:3:92"},"nodeType":"YulFunctionCall","src":"2606:13:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2621:7:92"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2602:3:92"},"nodeType":"YulFunctionCall","src":"2602:27:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2595:6:92"},"nodeType":"YulFunctionCall","src":"2595:35:92"},"nodeType":"YulIf","src":"2592:55:92"},{"nodeType":"YulVariableDeclaration","src":"2656:26:92","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"2679:2:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2666:12:92"},"nodeType":"YulFunctionCall","src":"2666:16:92"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"2660:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"2705:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"2707:16:92"},"nodeType":"YulFunctionCall","src":"2707:18:92"},"nodeType":"YulExpressionStatement","src":"2707:18:92"}]},"condition":{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"2697:2:92"},{"name":"_1","nodeType":"YulIdentifier","src":"2701:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2694:2:92"},"nodeType":"YulFunctionCall","src":"2694:10:92"},"nodeType":"YulIf","src":"2691:36:92"},{"nodeType":"YulVariableDeclaration","src":"2736:17:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2750:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"2746:3:92"},"nodeType":"YulFunctionCall","src":"2746:7:92"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"2740:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2762:23:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2782:2:92","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2776:5:92"},"nodeType":"YulFunctionCall","src":"2776:9:92"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"2766:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2794:71:92","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"2816:6:92"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"2840:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"2844:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2836:3:92"},"nodeType":"YulFunctionCall","src":"2836:13:92"},{"name":"_4","nodeType":"YulIdentifier","src":"2851:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2832:3:92"},"nodeType":"YulFunctionCall","src":"2832:22:92"},{"kind":"number","nodeType":"YulLiteral","src":"2856:2:92","type":"","value":"63"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2828:3:92"},"nodeType":"YulFunctionCall","src":"2828:31:92"},{"name":"_4","nodeType":"YulIdentifier","src":"2861:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2824:3:92"},"nodeType":"YulFunctionCall","src":"2824:40:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2812:3:92"},"nodeType":"YulFunctionCall","src":"2812:53:92"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"2798:10:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"2924:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"2926:16:92"},"nodeType":"YulFunctionCall","src":"2926:18:92"},"nodeType":"YulExpressionStatement","src":"2926:18:92"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"2883:10:92"},{"name":"_1","nodeType":"YulIdentifier","src":"2895:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2880:2:92"},"nodeType":"YulFunctionCall","src":"2880:18:92"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"2903:10:92"},{"name":"memPtr","nodeType":"YulIdentifier","src":"2915:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2900:2:92"},"nodeType":"YulFunctionCall","src":"2900:22:92"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"2877:2:92"},"nodeType":"YulFunctionCall","src":"2877:46:92"},"nodeType":"YulIf","src":"2874:72:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2962:2:92","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"2966:10:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2955:6:92"},"nodeType":"YulFunctionCall","src":"2955:22:92"},"nodeType":"YulExpressionStatement","src":"2955:22:92"},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"2993:6:92"},{"name":"_3","nodeType":"YulIdentifier","src":"3001:2:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2986:6:92"},"nodeType":"YulFunctionCall","src":"2986:18:92"},"nodeType":"YulExpressionStatement","src":"2986:18:92"},{"body":{"nodeType":"YulBlock","src":"3050:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3059:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3062:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3052:6:92"},"nodeType":"YulFunctionCall","src":"3052:12:92"},"nodeType":"YulExpressionStatement","src":"3052:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"3027:2:92"},{"name":"_3","nodeType":"YulIdentifier","src":"3031:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3023:3:92"},"nodeType":"YulFunctionCall","src":"3023:11:92"},{"kind":"number","nodeType":"YulLiteral","src":"3036:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3019:3:92"},"nodeType":"YulFunctionCall","src":"3019:20:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3041:7:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3016:2:92"},"nodeType":"YulFunctionCall","src":"3016:33:92"},"nodeType":"YulIf","src":"3013:53:92"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"3092:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"3100:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3088:3:92"},"nodeType":"YulFunctionCall","src":"3088:15:92"},{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"3109:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"3113:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3105:3:92"},"nodeType":"YulFunctionCall","src":"3105:11:92"},{"name":"_3","nodeType":"YulIdentifier","src":"3118:2:92"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"3075:12:92"},"nodeType":"YulFunctionCall","src":"3075:46:92"},"nodeType":"YulExpressionStatement","src":"3075:46:92"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"3145:6:92"},{"name":"_3","nodeType":"YulIdentifier","src":"3153:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3141:3:92"},"nodeType":"YulFunctionCall","src":"3141:15:92"},{"kind":"number","nodeType":"YulLiteral","src":"3158:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3137:3:92"},"nodeType":"YulFunctionCall","src":"3137:24:92"},{"kind":"number","nodeType":"YulLiteral","src":"3163:1:92","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3130:6:92"},"nodeType":"YulFunctionCall","src":"3130:35:92"},"nodeType":"YulExpressionStatement","src":"3130:35:92"},{"nodeType":"YulAssignment","src":"3174:16:92","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"3184:6:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"3174:6:92"}]}]},"name":"abi_decode_tuple_t_addresst_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2194:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2205:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2217:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2225:6:92","type":""}],"src":"2140:1056:92"},{"body":{"nodeType":"YulBlock","src":"3302:76:92","statements":[{"nodeType":"YulAssignment","src":"3312:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3324:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3335:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3320:3:92"},"nodeType":"YulFunctionCall","src":"3320:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3312:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3354:9:92"},{"name":"value0","nodeType":"YulIdentifier","src":"3365:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3347:6:92"},"nodeType":"YulFunctionCall","src":"3347:25:92"},"nodeType":"YulExpressionStatement","src":"3347:25:92"}]},"name":"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3271:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3282:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3293:4:92","type":""}],"src":"3201:177:92"},{"body":{"nodeType":"YulBlock","src":"3484:125:92","statements":[{"nodeType":"YulAssignment","src":"3494:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3506:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3517:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3502:3:92"},"nodeType":"YulFunctionCall","src":"3502:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3494:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3536:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3551:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"3559:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3547:3:92"},"nodeType":"YulFunctionCall","src":"3547:55:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3529:6:92"},"nodeType":"YulFunctionCall","src":"3529:74:92"},"nodeType":"YulExpressionStatement","src":"3529:74:92"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3453:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3464:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3475:4:92","type":""}],"src":"3383:226:92"},{"body":{"nodeType":"YulBlock","src":"3715:76:92","statements":[{"nodeType":"YulAssignment","src":"3725:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3737:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3748:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3733:3:92"},"nodeType":"YulFunctionCall","src":"3733:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3725:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3767:9:92"},{"name":"value0","nodeType":"YulIdentifier","src":"3778:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3760:6:92"},"nodeType":"YulFunctionCall","src":"3760:25:92"},"nodeType":"YulExpressionStatement","src":"3760:25:92"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3684:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3695:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3706:4:92","type":""}],"src":"3614:177:92"},{"body":{"nodeType":"YulBlock","src":"3880:177:92","statements":[{"body":{"nodeType":"YulBlock","src":"3926:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3935:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3938:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3928:6:92"},"nodeType":"YulFunctionCall","src":"3928:12:92"},"nodeType":"YulExpressionStatement","src":"3928:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3901:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"3910:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3897:3:92"},"nodeType":"YulFunctionCall","src":"3897:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"3922:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3893:3:92"},"nodeType":"YulFunctionCall","src":"3893:32:92"},"nodeType":"YulIf","src":"3890:52:92"},{"nodeType":"YulVariableDeclaration","src":"3951:36:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3977:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3964:12:92"},"nodeType":"YulFunctionCall","src":"3964:23:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"3955:5:92","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4021:5:92"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"3996:24:92"},"nodeType":"YulFunctionCall","src":"3996:31:92"},"nodeType":"YulExpressionStatement","src":"3996:31:92"},{"nodeType":"YulAssignment","src":"4036:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"4046:5:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"4036:6:92"}]}]},"name":"abi_decode_tuple_t_contract$_IDAO_$10865","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3846:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3857:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3869:6:92","type":""}],"src":"3796:261:92"},{"body":{"nodeType":"YulBlock","src":"4236:234:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4253:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4264:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4246:6:92"},"nodeType":"YulFunctionCall","src":"4246:21:92"},"nodeType":"YulExpressionStatement","src":"4246:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4287:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4298:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4283:3:92"},"nodeType":"YulFunctionCall","src":"4283:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"4303:2:92","type":"","value":"44"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4276:6:92"},"nodeType":"YulFunctionCall","src":"4276:30:92"},"nodeType":"YulExpressionStatement","src":"4276:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4326:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4337:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4322:3:92"},"nodeType":"YulFunctionCall","src":"4322:18:92"},{"hexValue":"46756e6374696f6e206d7573742062652063616c6c6564207468726f75676820","kind":"string","nodeType":"YulLiteral","src":"4342:34:92","type":"","value":"Function must be called through "}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4315:6:92"},"nodeType":"YulFunctionCall","src":"4315:62:92"},"nodeType":"YulExpressionStatement","src":"4315:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4397:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4408:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4393:3:92"},"nodeType":"YulFunctionCall","src":"4393:18:92"},{"hexValue":"64656c656761746563616c6c","kind":"string","nodeType":"YulLiteral","src":"4413:14:92","type":"","value":"delegatecall"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4386:6:92"},"nodeType":"YulFunctionCall","src":"4386:42:92"},"nodeType":"YulExpressionStatement","src":"4386:42:92"},{"nodeType":"YulAssignment","src":"4437:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4449:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4460:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4445:3:92"},"nodeType":"YulFunctionCall","src":"4445:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4437:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_36e108fa7a809b52ab1951dd91c117a7bc9ac5250bdf1aa162d4e104f7edf9eb__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4213:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4227:4:92","type":""}],"src":"4062:408:92"},{"body":{"nodeType":"YulBlock","src":"4649:234:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4666:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4677:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4659:6:92"},"nodeType":"YulFunctionCall","src":"4659:21:92"},"nodeType":"YulExpressionStatement","src":"4659:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4700:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4711:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4696:3:92"},"nodeType":"YulFunctionCall","src":"4696:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"4716:2:92","type":"","value":"44"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4689:6:92"},"nodeType":"YulFunctionCall","src":"4689:30:92"},"nodeType":"YulExpressionStatement","src":"4689:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4739:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4750:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4735:3:92"},"nodeType":"YulFunctionCall","src":"4735:18:92"},{"hexValue":"46756e6374696f6e206d7573742062652063616c6c6564207468726f75676820","kind":"string","nodeType":"YulLiteral","src":"4755:34:92","type":"","value":"Function must be called through "}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4728:6:92"},"nodeType":"YulFunctionCall","src":"4728:62:92"},"nodeType":"YulExpressionStatement","src":"4728:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4810:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4821:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4806:3:92"},"nodeType":"YulFunctionCall","src":"4806:18:92"},{"hexValue":"6163746976652070726f7879","kind":"string","nodeType":"YulLiteral","src":"4826:14:92","type":"","value":"active proxy"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4799:6:92"},"nodeType":"YulFunctionCall","src":"4799:42:92"},"nodeType":"YulExpressionStatement","src":"4799:42:92"},{"nodeType":"YulAssignment","src":"4850:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4862:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4873:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4858:3:92"},"nodeType":"YulFunctionCall","src":"4858:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4850:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_52f1ead4d9653e13afbd2e90ef2587c30187cd50b2e97d784e3f7a7541247434__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4626:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4640:4:92","type":""}],"src":"4475:408:92"},{"body":{"nodeType":"YulBlock","src":"5062:246:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5079:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5090:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5072:6:92"},"nodeType":"YulFunctionCall","src":"5072:21:92"},"nodeType":"YulExpressionStatement","src":"5072:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5113:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5124:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5109:3:92"},"nodeType":"YulFunctionCall","src":"5109:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"5129:2:92","type":"","value":"56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5102:6:92"},"nodeType":"YulFunctionCall","src":"5102:30:92"},"nodeType":"YulExpressionStatement","src":"5102:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5152:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5163:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5148:3:92"},"nodeType":"YulFunctionCall","src":"5148:18:92"},{"hexValue":"555550535570677261646561626c653a206d757374206e6f742062652063616c","kind":"string","nodeType":"YulLiteral","src":"5168:34:92","type":"","value":"UUPSUpgradeable: must not be cal"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5141:6:92"},"nodeType":"YulFunctionCall","src":"5141:62:92"},"nodeType":"YulExpressionStatement","src":"5141:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5223:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5234:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5219:3:92"},"nodeType":"YulFunctionCall","src":"5219:18:92"},{"hexValue":"6c6564207468726f7567682064656c656761746563616c6c","kind":"string","nodeType":"YulLiteral","src":"5239:26:92","type":"","value":"led through delegatecall"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5212:6:92"},"nodeType":"YulFunctionCall","src":"5212:54:92"},"nodeType":"YulExpressionStatement","src":"5212:54:92"},{"nodeType":"YulAssignment","src":"5275:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5287:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5298:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5283:3:92"},"nodeType":"YulFunctionCall","src":"5283:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5275:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_67f0151b4ad1dcfa0e3302a0cd6019f51582ef1807b37dceb00bd852a514f7f4__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5039:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5053:4:92","type":""}],"src":"4888:420:92"},{"body":{"nodeType":"YulBlock","src":"5487:236:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5504:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5515:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5497:6:92"},"nodeType":"YulFunctionCall","src":"5497:21:92"},"nodeType":"YulExpressionStatement","src":"5497:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5538:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5549:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5534:3:92"},"nodeType":"YulFunctionCall","src":"5534:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"5554:2:92","type":"","value":"46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5527:6:92"},"nodeType":"YulFunctionCall","src":"5527:30:92"},"nodeType":"YulExpressionStatement","src":"5527:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5577:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5588:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5573:3:92"},"nodeType":"YulFunctionCall","src":"5573:18:92"},{"hexValue":"496e697469616c697a61626c653a20636f6e747261637420697320616c726561","kind":"string","nodeType":"YulLiteral","src":"5593:34:92","type":"","value":"Initializable: contract is alrea"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5566:6:92"},"nodeType":"YulFunctionCall","src":"5566:62:92"},"nodeType":"YulExpressionStatement","src":"5566:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5648:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5659:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5644:3:92"},"nodeType":"YulFunctionCall","src":"5644:18:92"},{"hexValue":"647920696e697469616c697a6564","kind":"string","nodeType":"YulLiteral","src":"5664:16:92","type":"","value":"dy initialized"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5637:6:92"},"nodeType":"YulFunctionCall","src":"5637:44:92"},"nodeType":"YulExpressionStatement","src":"5637:44:92"},{"nodeType":"YulAssignment","src":"5690:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5702:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5713:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5698:3:92"},"nodeType":"YulFunctionCall","src":"5698:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5690:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5464:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5478:4:92","type":""}],"src":"5313:410:92"},{"body":{"nodeType":"YulBlock","src":"5835:87:92","statements":[{"nodeType":"YulAssignment","src":"5845:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5857:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5868:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5853:3:92"},"nodeType":"YulFunctionCall","src":"5853:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5845:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5887:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5902:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"5910:4:92","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5898:3:92"},"nodeType":"YulFunctionCall","src":"5898:17:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5880:6:92"},"nodeType":"YulFunctionCall","src":"5880:36:92"},"nodeType":"YulExpressionStatement","src":"5880:36:92"}]},"name":"abi_encode_tuple_t_rational_1_by_1__to_t_uint8__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5804:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"5815:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5826:4:92","type":""}],"src":"5728:194:92"},{"body":{"nodeType":"YulBlock","src":"6008:103:92","statements":[{"body":{"nodeType":"YulBlock","src":"6054:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6063:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6066:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6056:6:92"},"nodeType":"YulFunctionCall","src":"6056:12:92"},"nodeType":"YulExpressionStatement","src":"6056:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"6029:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"6038:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6025:3:92"},"nodeType":"YulFunctionCall","src":"6025:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"6050:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6021:3:92"},"nodeType":"YulFunctionCall","src":"6021:32:92"},"nodeType":"YulIf","src":"6018:52:92"},{"nodeType":"YulAssignment","src":"6079:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6095:9:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6089:5:92"},"nodeType":"YulFunctionCall","src":"6089:16:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"6079:6:92"}]}]},"name":"abi_decode_tuple_t_bytes32_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5974:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"5985:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"5997:6:92","type":""}],"src":"5927:184:92"},{"body":{"nodeType":"YulBlock","src":"6290:236:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6307:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6318:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6300:6:92"},"nodeType":"YulFunctionCall","src":"6300:21:92"},"nodeType":"YulExpressionStatement","src":"6300:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6341:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6352:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6337:3:92"},"nodeType":"YulFunctionCall","src":"6337:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"6357:2:92","type":"","value":"46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6330:6:92"},"nodeType":"YulFunctionCall","src":"6330:30:92"},"nodeType":"YulExpressionStatement","src":"6330:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6380:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6391:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6376:3:92"},"nodeType":"YulFunctionCall","src":"6376:18:92"},{"hexValue":"45524331393637557067726164653a206e657720696d706c656d656e74617469","kind":"string","nodeType":"YulLiteral","src":"6396:34:92","type":"","value":"ERC1967Upgrade: new implementati"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6369:6:92"},"nodeType":"YulFunctionCall","src":"6369:62:92"},"nodeType":"YulExpressionStatement","src":"6369:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6451:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6462:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6447:3:92"},"nodeType":"YulFunctionCall","src":"6447:18:92"},{"hexValue":"6f6e206973206e6f742055555053","kind":"string","nodeType":"YulLiteral","src":"6467:16:92","type":"","value":"on is not UUPS"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6440:6:92"},"nodeType":"YulFunctionCall","src":"6440:44:92"},"nodeType":"YulExpressionStatement","src":"6440:44:92"},{"nodeType":"YulAssignment","src":"6493:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6505:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6516:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6501:3:92"},"nodeType":"YulFunctionCall","src":"6501:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6493:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_8e8e2fbcb586f700b5b14e2c4a650c8d83b9773c31c5fe8962070ea544e11f24__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6267:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6281:4:92","type":""}],"src":"6116:410:92"},{"body":{"nodeType":"YulBlock","src":"6705:231:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6722:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6733:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6715:6:92"},"nodeType":"YulFunctionCall","src":"6715:21:92"},"nodeType":"YulExpressionStatement","src":"6715:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6756:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6767:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6752:3:92"},"nodeType":"YulFunctionCall","src":"6752:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"6772:2:92","type":"","value":"41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6745:6:92"},"nodeType":"YulFunctionCall","src":"6745:30:92"},"nodeType":"YulExpressionStatement","src":"6745:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6795:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6806:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6791:3:92"},"nodeType":"YulFunctionCall","src":"6791:18:92"},{"hexValue":"45524331393637557067726164653a20756e737570706f727465642070726f78","kind":"string","nodeType":"YulLiteral","src":"6811:34:92","type":"","value":"ERC1967Upgrade: unsupported prox"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6784:6:92"},"nodeType":"YulFunctionCall","src":"6784:62:92"},"nodeType":"YulExpressionStatement","src":"6784:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6866:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6877:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6862:3:92"},"nodeType":"YulFunctionCall","src":"6862:18:92"},{"hexValue":"6961626c6555554944","kind":"string","nodeType":"YulLiteral","src":"6882:11:92","type":"","value":"iableUUID"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6855:6:92"},"nodeType":"YulFunctionCall","src":"6855:39:92"},"nodeType":"YulExpressionStatement","src":"6855:39:92"},{"nodeType":"YulAssignment","src":"6903:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6915:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6926:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6911:3:92"},"nodeType":"YulFunctionCall","src":"6911:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6903:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_76b6b6debfc5febf101145a79ecf0b0d2e89e397dfdab2bca99888370411152c__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6682:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6696:4:92","type":""}],"src":"6531:405:92"},{"body":{"nodeType":"YulBlock","src":"7115:233:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7132:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7143:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7125:6:92"},"nodeType":"YulFunctionCall","src":"7125:21:92"},"nodeType":"YulExpressionStatement","src":"7125:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7166:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7177:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7162:3:92"},"nodeType":"YulFunctionCall","src":"7162:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"7182:2:92","type":"","value":"43"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7155:6:92"},"nodeType":"YulFunctionCall","src":"7155:30:92"},"nodeType":"YulExpressionStatement","src":"7155:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7205:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7216:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7201:3:92"},"nodeType":"YulFunctionCall","src":"7201:18:92"},{"hexValue":"496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069","kind":"string","nodeType":"YulLiteral","src":"7221:34:92","type":"","value":"Initializable: contract is not i"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7194:6:92"},"nodeType":"YulFunctionCall","src":"7194:62:92"},"nodeType":"YulExpressionStatement","src":"7194:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7276:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7287:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7272:3:92"},"nodeType":"YulFunctionCall","src":"7272:18:92"},{"hexValue":"6e697469616c697a696e67","kind":"string","nodeType":"YulLiteral","src":"7292:13:92","type":"","value":"nitializing"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7265:6:92"},"nodeType":"YulFunctionCall","src":"7265:41:92"},"nodeType":"YulExpressionStatement","src":"7265:41:92"},{"nodeType":"YulAssignment","src":"7315:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7327:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7338:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7323:3:92"},"nodeType":"YulFunctionCall","src":"7323:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7315:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7092:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7106:4:92","type":""}],"src":"6941:407:92"},{"body":{"nodeType":"YulBlock","src":"7566:472:92","statements":[{"nodeType":"YulVariableDeclaration","src":"7576:52:92","value":{"kind":"number","nodeType":"YulLiteral","src":"7586:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"7580:2:92","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7644:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7659:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"7667:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7655:3:92"},"nodeType":"YulFunctionCall","src":"7655:15:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7637:6:92"},"nodeType":"YulFunctionCall","src":"7637:34:92"},"nodeType":"YulExpressionStatement","src":"7637:34:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7691:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7702:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7687:3:92"},"nodeType":"YulFunctionCall","src":"7687:18:92"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"7711:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"7719:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7707:3:92"},"nodeType":"YulFunctionCall","src":"7707:15:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7680:6:92"},"nodeType":"YulFunctionCall","src":"7680:43:92"},"nodeType":"YulExpressionStatement","src":"7680:43:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7743:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7754:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7739:3:92"},"nodeType":"YulFunctionCall","src":"7739:18:92"},{"name":"value2","nodeType":"YulIdentifier","src":"7759:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7732:6:92"},"nodeType":"YulFunctionCall","src":"7732:34:92"},"nodeType":"YulExpressionStatement","src":"7732:34:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7786:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7797:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7782:3:92"},"nodeType":"YulFunctionCall","src":"7782:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"7802:3:92","type":"","value":"128"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7775:6:92"},"nodeType":"YulFunctionCall","src":"7775:31:92"},"nodeType":"YulExpressionStatement","src":"7775:31:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7826:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7837:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7822:3:92"},"nodeType":"YulFunctionCall","src":"7822:19:92"},{"name":"value4","nodeType":"YulIdentifier","src":"7843:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7815:6:92"},"nodeType":"YulFunctionCall","src":"7815:35:92"},"nodeType":"YulExpressionStatement","src":"7815:35:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7876:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7887:3:92","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7872:3:92"},"nodeType":"YulFunctionCall","src":"7872:19:92"},{"name":"value3","nodeType":"YulIdentifier","src":"7893:6:92"},{"name":"value4","nodeType":"YulIdentifier","src":"7901:6:92"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"7859:12:92"},"nodeType":"YulFunctionCall","src":"7859:49:92"},"nodeType":"YulExpressionStatement","src":"7859:49:92"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7932:9:92"},{"name":"value4","nodeType":"YulIdentifier","src":"7943:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7928:3:92"},"nodeType":"YulFunctionCall","src":"7928:22:92"},{"kind":"number","nodeType":"YulLiteral","src":"7952:3:92","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7924:3:92"},"nodeType":"YulFunctionCall","src":"7924:32:92"},{"kind":"number","nodeType":"YulLiteral","src":"7958:1:92","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7917:6:92"},"nodeType":"YulFunctionCall","src":"7917:43:92"},"nodeType":"YulExpressionStatement","src":"7917:43:92"},{"nodeType":"YulAssignment","src":"7969:63:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7985:9:92"},{"arguments":[{"arguments":[{"name":"value4","nodeType":"YulIdentifier","src":"8004:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"8012:2:92","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8000:3:92"},"nodeType":"YulFunctionCall","src":"8000:15:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8021:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"8017:3:92"},"nodeType":"YulFunctionCall","src":"8017:7:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7996:3:92"},"nodeType":"YulFunctionCall","src":"7996:29:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7981:3:92"},"nodeType":"YulFunctionCall","src":"7981:45:92"},{"kind":"number","nodeType":"YulLiteral","src":"8028:3:92","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7977:3:92"},"nodeType":"YulFunctionCall","src":"7977:55:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7969:4:92"}]}]},"name":"abi_encode_tuple_t_address_t_address_t_bytes32_t_bytes_calldata_ptr__to_t_address_t_address_t_bytes32_t_bytes_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7503:9:92","type":""},{"name":"value4","nodeType":"YulTypedName","src":"7514:6:92","type":""},{"name":"value3","nodeType":"YulTypedName","src":"7522:6:92","type":""},{"name":"value2","nodeType":"YulTypedName","src":"7530:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"7538:6:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"7546:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7557:4:92","type":""}],"src":"7353:685:92"},{"body":{"nodeType":"YulBlock","src":"8121:199:92","statements":[{"body":{"nodeType":"YulBlock","src":"8167:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8176:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8179:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8169:6:92"},"nodeType":"YulFunctionCall","src":"8169:12:92"},"nodeType":"YulExpressionStatement","src":"8169:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"8142:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"8151:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"8138:3:92"},"nodeType":"YulFunctionCall","src":"8138:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"8163:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"8134:3:92"},"nodeType":"YulFunctionCall","src":"8134:32:92"},"nodeType":"YulIf","src":"8131:52:92"},{"nodeType":"YulVariableDeclaration","src":"8192:29:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8211:9:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"8205:5:92"},"nodeType":"YulFunctionCall","src":"8205:16:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"8196:5:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"8274:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8283:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8286:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8276:6:92"},"nodeType":"YulFunctionCall","src":"8276:12:92"},"nodeType":"YulExpressionStatement","src":"8276:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8243:5:92"},{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8264:5:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"8257:6:92"},"nodeType":"YulFunctionCall","src":"8257:13:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"8250:6:92"},"nodeType":"YulFunctionCall","src":"8250:21:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"8240:2:92"},"nodeType":"YulFunctionCall","src":"8240:32:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"8233:6:92"},"nodeType":"YulFunctionCall","src":"8233:40:92"},"nodeType":"YulIf","src":"8230:60:92"},{"nodeType":"YulAssignment","src":"8299:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"8309:5:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"8299:6:92"}]}]},"name":"abi_decode_tuple_t_bool_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8087:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"8098:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"8110:6:92","type":""}],"src":"8043:277:92"},{"body":{"nodeType":"YulBlock","src":"8510:294:92","statements":[{"nodeType":"YulAssignment","src":"8520:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8532:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8543:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8528:3:92"},"nodeType":"YulFunctionCall","src":"8528:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"8520:4:92"}]},{"nodeType":"YulVariableDeclaration","src":"8556:52:92","value":{"kind":"number","nodeType":"YulLiteral","src":"8566:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"8560:2:92","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8624:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"8639:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"8647:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8635:3:92"},"nodeType":"YulFunctionCall","src":"8635:15:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8617:6:92"},"nodeType":"YulFunctionCall","src":"8617:34:92"},"nodeType":"YulExpressionStatement","src":"8617:34:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8671:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8682:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8667:3:92"},"nodeType":"YulFunctionCall","src":"8667:18:92"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"8691:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"8699:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8687:3:92"},"nodeType":"YulFunctionCall","src":"8687:15:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8660:6:92"},"nodeType":"YulFunctionCall","src":"8660:43:92"},"nodeType":"YulExpressionStatement","src":"8660:43:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8723:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8734:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8719:3:92"},"nodeType":"YulFunctionCall","src":"8719:18:92"},{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"8743:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"8751:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8739:3:92"},"nodeType":"YulFunctionCall","src":"8739:15:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8712:6:92"},"nodeType":"YulFunctionCall","src":"8712:43:92"},"nodeType":"YulExpressionStatement","src":"8712:43:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8775:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8786:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8771:3:92"},"nodeType":"YulFunctionCall","src":"8771:18:92"},{"name":"value3","nodeType":"YulIdentifier","src":"8791:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8764:6:92"},"nodeType":"YulFunctionCall","src":"8764:34:92"},"nodeType":"YulExpressionStatement","src":"8764:34:92"}]},"name":"abi_encode_tuple_t_address_t_address_t_address_t_bytes32__to_t_address_t_address_t_address_t_bytes32__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8455:9:92","type":""},{"name":"value3","nodeType":"YulTypedName","src":"8466:6:92","type":""},{"name":"value2","nodeType":"YulTypedName","src":"8474:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"8482:6:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"8490:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"8501:4:92","type":""}],"src":"8325:479:92"},{"body":{"nodeType":"YulBlock","src":"8983:235:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9000:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9011:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8993:6:92"},"nodeType":"YulFunctionCall","src":"8993:21:92"},"nodeType":"YulExpressionStatement","src":"8993:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9034:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9045:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9030:3:92"},"nodeType":"YulFunctionCall","src":"9030:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"9050:2:92","type":"","value":"45"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9023:6:92"},"nodeType":"YulFunctionCall","src":"9023:30:92"},"nodeType":"YulExpressionStatement","src":"9023:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9073:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9084:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9069:3:92"},"nodeType":"YulFunctionCall","src":"9069:18:92"},{"hexValue":"455243313936373a206e657720696d706c656d656e746174696f6e206973206e","kind":"string","nodeType":"YulLiteral","src":"9089:34:92","type":"","value":"ERC1967: new implementation is n"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9062:6:92"},"nodeType":"YulFunctionCall","src":"9062:62:92"},"nodeType":"YulExpressionStatement","src":"9062:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9144:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9155:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9140:3:92"},"nodeType":"YulFunctionCall","src":"9140:18:92"},{"hexValue":"6f74206120636f6e7472616374","kind":"string","nodeType":"YulLiteral","src":"9160:15:92","type":"","value":"ot a contract"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9133:6:92"},"nodeType":"YulFunctionCall","src":"9133:43:92"},"nodeType":"YulExpressionStatement","src":"9133:43:92"},{"nodeType":"YulAssignment","src":"9185:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9197:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9208:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9193:3:92"},"nodeType":"YulFunctionCall","src":"9193:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"9185:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8960:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"8974:4:92","type":""}],"src":"8809:409:92"},{"body":{"nodeType":"YulBlock","src":"9289:184:92","statements":[{"nodeType":"YulVariableDeclaration","src":"9299:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"9308:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"9303:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"9368:63:92","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"9393:3:92"},{"name":"i","nodeType":"YulIdentifier","src":"9398:1:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9389:3:92"},"nodeType":"YulFunctionCall","src":"9389:11:92"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"9412:3:92"},{"name":"i","nodeType":"YulIdentifier","src":"9417:1:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9408:3:92"},"nodeType":"YulFunctionCall","src":"9408:11:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"9402:5:92"},"nodeType":"YulFunctionCall","src":"9402:18:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9382:6:92"},"nodeType":"YulFunctionCall","src":"9382:39:92"},"nodeType":"YulExpressionStatement","src":"9382:39:92"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"9329:1:92"},{"name":"length","nodeType":"YulIdentifier","src":"9332:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"9326:2:92"},"nodeType":"YulFunctionCall","src":"9326:13:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"9340:19:92","statements":[{"nodeType":"YulAssignment","src":"9342:15:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"9351:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"9354:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9347:3:92"},"nodeType":"YulFunctionCall","src":"9347:10:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"9342:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"9322:3:92","statements":[]},"src":"9318:113:92"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"9451:3:92"},{"name":"length","nodeType":"YulIdentifier","src":"9456:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9447:3:92"},"nodeType":"YulFunctionCall","src":"9447:16:92"},{"kind":"number","nodeType":"YulLiteral","src":"9465:1:92","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9440:6:92"},"nodeType":"YulFunctionCall","src":"9440:27:92"},"nodeType":"YulExpressionStatement","src":"9440:27:92"}]},"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"9267:3:92","type":""},{"name":"dst","nodeType":"YulTypedName","src":"9272:3:92","type":""},{"name":"length","nodeType":"YulTypedName","src":"9277:6:92","type":""}],"src":"9223:250:92"},{"body":{"nodeType":"YulBlock","src":"9615:150:92","statements":[{"nodeType":"YulVariableDeclaration","src":"9625:27:92","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"9645:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"9639:5:92"},"nodeType":"YulFunctionCall","src":"9639:13:92"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"9629:6:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"9700:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"9708:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9696:3:92"},"nodeType":"YulFunctionCall","src":"9696:17:92"},{"name":"pos","nodeType":"YulIdentifier","src":"9715:3:92"},{"name":"length","nodeType":"YulIdentifier","src":"9720:6:92"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"9661:34:92"},"nodeType":"YulFunctionCall","src":"9661:66:92"},"nodeType":"YulExpressionStatement","src":"9661:66:92"},{"nodeType":"YulAssignment","src":"9736:23:92","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"9747:3:92"},{"name":"length","nodeType":"YulIdentifier","src":"9752:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9743:3:92"},"nodeType":"YulFunctionCall","src":"9743:16:92"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"9736:3:92"}]}]},"name":"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"9591:3:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"9596:6:92","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"9607:3:92","type":""}],"src":"9478:287:92"},{"body":{"nodeType":"YulBlock","src":"9944:179:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9961:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9972:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9954:6:92"},"nodeType":"YulFunctionCall","src":"9954:21:92"},"nodeType":"YulExpressionStatement","src":"9954:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9995:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"10006:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9991:3:92"},"nodeType":"YulFunctionCall","src":"9991:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"10011:2:92","type":"","value":"29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9984:6:92"},"nodeType":"YulFunctionCall","src":"9984:30:92"},"nodeType":"YulExpressionStatement","src":"9984:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10034:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"10045:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10030:3:92"},"nodeType":"YulFunctionCall","src":"10030:18:92"},{"hexValue":"416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374","kind":"string","nodeType":"YulLiteral","src":"10050:31:92","type":"","value":"Address: call to non-contract"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10023:6:92"},"nodeType":"YulFunctionCall","src":"10023:59:92"},"nodeType":"YulExpressionStatement","src":"10023:59:92"},{"nodeType":"YulAssignment","src":"10091:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10103:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"10114:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10099:3:92"},"nodeType":"YulFunctionCall","src":"10099:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"10091:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9921:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"9935:4:92","type":""}],"src":"9770:353:92"},{"body":{"nodeType":"YulBlock","src":"10249:275:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10266:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"10277:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10259:6:92"},"nodeType":"YulFunctionCall","src":"10259:21:92"},"nodeType":"YulExpressionStatement","src":"10259:21:92"},{"nodeType":"YulVariableDeclaration","src":"10289:27:92","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"10309:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"10303:5:92"},"nodeType":"YulFunctionCall","src":"10303:13:92"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"10293:6:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10336:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"10347:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10332:3:92"},"nodeType":"YulFunctionCall","src":"10332:18:92"},{"name":"length","nodeType":"YulIdentifier","src":"10352:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10325:6:92"},"nodeType":"YulFunctionCall","src":"10325:34:92"},"nodeType":"YulExpressionStatement","src":"10325:34:92"},{"expression":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"10407:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"10415:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10403:3:92"},"nodeType":"YulFunctionCall","src":"10403:15:92"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10424:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"10435:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10420:3:92"},"nodeType":"YulFunctionCall","src":"10420:18:92"},{"name":"length","nodeType":"YulIdentifier","src":"10440:6:92"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"10368:34:92"},"nodeType":"YulFunctionCall","src":"10368:79:92"},"nodeType":"YulExpressionStatement","src":"10368:79:92"},{"nodeType":"YulAssignment","src":"10456:62:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10472:9:92"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"10491:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"10499:2:92","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10487:3:92"},"nodeType":"YulFunctionCall","src":"10487:15:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10508:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"10504:3:92"},"nodeType":"YulFunctionCall","src":"10504:7:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"10483:3:92"},"nodeType":"YulFunctionCall","src":"10483:29:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10468:3:92"},"nodeType":"YulFunctionCall","src":"10468:45:92"},{"kind":"number","nodeType":"YulLiteral","src":"10515:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10464:3:92"},"nodeType":"YulFunctionCall","src":"10464:54:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"10456:4:92"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"10218:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"10229:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"10240:4:92","type":""}],"src":"10128:396:92"}]},"contents":"{\n { }\n function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n if iszero(eq(value, and(value, shl(224, 0xffffffff)))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 96)\n let pos := headStart\n pos := headStart\n let srcPtr := value0\n let i := 0\n for { } lt(i, 0x03) { i := add(i, 1) }\n {\n mstore(pos, and(mload(srcPtr), 0xff))\n let _1 := 0x20\n pos := add(pos, _1)\n srcPtr := add(srcPtr, _1)\n }\n }\n function validator_revert_address(value)\n {\n if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n }\n function abi_encode_tuple_t_contract$_IDAO_$10865__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_encode_tuple_t_enum$_PluginType_$13330__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n if iszero(lt(value0, 3))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x21)\n revert(0, 0x24)\n }\n mstore(headStart, value0)\n }\n function panic_error_0x41()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function abi_decode_tuple_t_addresst_bytes_memory_ptr(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n let offset := calldataload(add(headStart, 32))\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n let _2 := add(headStart, offset)\n if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n let _3 := calldataload(_2)\n if gt(_3, _1) { panic_error_0x41() }\n let _4 := not(31)\n let memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n mstore(memPtr, _3)\n if gt(add(add(_2, _3), 32), dataEnd) { revert(0, 0) }\n calldatacopy(add(memPtr, 32), add(_2, 32), _3)\n mstore(add(add(memPtr, _3), 32), 0)\n value1 := memPtr\n }\n function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_decode_tuple_t_contract$_IDAO_$10865(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n }\n function abi_encode_tuple_t_stringliteral_36e108fa7a809b52ab1951dd91c117a7bc9ac5250bdf1aa162d4e104f7edf9eb__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 44)\n mstore(add(headStart, 64), \"Function must be called through \")\n mstore(add(headStart, 96), \"delegatecall\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_52f1ead4d9653e13afbd2e90ef2587c30187cd50b2e97d784e3f7a7541247434__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 44)\n mstore(add(headStart, 64), \"Function must be called through \")\n mstore(add(headStart, 96), \"active proxy\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_67f0151b4ad1dcfa0e3302a0cd6019f51582ef1807b37dceb00bd852a514f7f4__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 56)\n mstore(add(headStart, 64), \"UUPSUpgradeable: must not be cal\")\n mstore(add(headStart, 96), \"led through delegatecall\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 46)\n mstore(add(headStart, 64), \"Initializable: contract is alrea\")\n mstore(add(headStart, 96), \"dy initialized\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_rational_1_by_1__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xff))\n }\n function abi_decode_tuple_t_bytes32_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := mload(headStart)\n }\n function abi_encode_tuple_t_stringliteral_8e8e2fbcb586f700b5b14e2c4a650c8d83b9773c31c5fe8962070ea544e11f24__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 46)\n mstore(add(headStart, 64), \"ERC1967Upgrade: new implementati\")\n mstore(add(headStart, 96), \"on is not UUPS\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_76b6b6debfc5febf101145a79ecf0b0d2e89e397dfdab2bca99888370411152c__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 41)\n mstore(add(headStart, 64), \"ERC1967Upgrade: unsupported prox\")\n mstore(add(headStart, 96), \"iableUUID\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 43)\n mstore(add(headStart, 64), \"Initializable: contract is not i\")\n mstore(add(headStart, 96), \"nitializing\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_address_t_address_t_bytes32_t_bytes_calldata_ptr__to_t_address_t_address_t_bytes32_t_bytes_memory_ptr__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n {\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n mstore(add(headStart, 64), value2)\n mstore(add(headStart, 96), 128)\n mstore(add(headStart, 128), value4)\n calldatacopy(add(headStart, 160), value3, value4)\n mstore(add(add(headStart, value4), 160), 0)\n tail := add(add(headStart, and(add(value4, 31), not(31))), 160)\n }\n function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := mload(headStart)\n if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_address_t_address_t_address_t_bytes32__to_t_address_t_address_t_address_t_bytes32__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n {\n tail := add(headStart, 128)\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n mstore(add(headStart, 64), and(value2, _1))\n mstore(add(headStart, 96), value3)\n }\n function abi_encode_tuple_t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 45)\n mstore(add(headStart, 64), \"ERC1967: new implementation is n\")\n mstore(add(headStart, 96), \"ot a contract\")\n tail := add(headStart, 128)\n }\n function copy_memory_to_memory_with_cleanup(src, dst, length)\n {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n mstore(add(dst, length), 0)\n }\n function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n {\n let length := mload(value0)\n copy_memory_to_memory_with_cleanup(add(value0, 0x20), pos, length)\n end := add(pos, length)\n }\n function abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 29)\n mstore(add(headStart, 64), \"Address: call to non-contract\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n mstore(headStart, 32)\n let length := mload(value0)\n mstore(add(headStart, 32), length)\n copy_memory_to_memory_with_cleanup(add(value0, 32), add(headStart, 64), length)\n tail := add(add(headStart, and(add(length, 31), not(31))), 64)\n }\n}","id":92,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{"554":[{"length":32,"start":734},{"length":32,"start":872},{"length":32,"start":1118},{"length":32,"start":1251},{"length":32,"start":1485}]},"linkReferences":{},"object":"6080604052600436106100bc5760003560e01c80634f1ef286116100745780636accab8c1161004e5780636accab8c146101d3578063c4d66de8146101ea578063c9c4bfca1461020a57600080fd5b80634f1ef2861461018857806352d1902d1461019b5780635c60da1b146101be57600080fd5b80633659cfe6116100a55780633659cfe6146101185780634162169f1461013a57806341de68301461016c57600080fd5b806301ffc9a7146100c15780632ae9c600146100f6575b600080fd5b3480156100cd57600080fd5b506100e16100dc366004610e33565b61023e565b60405190151581526020015b60405180910390f35b34801561010257600080fd5b5061010b6102aa565b6040516100ed9190610e5d565b34801561012457600080fd5b50610138610133366004610ea6565b6102d4565b005b34801561014657600080fd5b5060c9546001600160a01b03165b6040516001600160a01b0390911681526020016100ed565b34801561017857600080fd5b5060006040516100ed9190610ec3565b610138610196366004610f01565b610454565b3480156101a757600080fd5b506101b06105c0565b6040519081526020016100ed565b3480156101ca57600080fd5b50610154610685565b3480156101df57600080fd5b506101b061012d5481565b3480156101f657600080fd5b50610138610205366004610ea6565b6106bd565b34801561021657600080fd5b506101b07f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f581565b60006001600160e01b0319821663041de68360e41b148061026e57506001600160e01b03198216621574e360e91b145b8061028957506001600160e01b031982166352d1902d60e01b145b806102a457506301ffc9a760e01b6001600160e01b03198316145b92915050565b6102b2610e15565b5060408051606081018252600181526004602082015260009181019190915290565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036103665760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b60648201526084015b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166103c17f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b03161461042c5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b606482015260840161035d565b610435816107e4565b6040805160008082526020820190925261045191839190610821565b50565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036104e15760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b606482015260840161035d565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661053c7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b0316146105a75760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b606482015260840161035d565b6105b0826107e4565b6105bc82826001610821565b5050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106605760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000606482015260840161035d565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b60006106b87f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b600054610100900460ff16158080156106dd5750600054600160ff909116105b806106f75750303b1580156106f7575060005460ff166001145b6107695760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161035d565b6000805460ff19166001179055801561078c576000805461ff0019166101001790555b610795826109c6565b600161012d5580156105bc576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b60c9547f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f5906105bc906001600160a01b0316303384600036610a3a565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156108595761085483610af6565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156108b3575060408051601f3d908101601f191682019092526108b091810190610fc5565b60015b6109255760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201527f6f6e206973206e6f742055555053000000000000000000000000000000000000606482015260840161035d565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146109ba5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f7860448201527f6961626c65555549440000000000000000000000000000000000000000000000606482015260840161035d565b50610854838383610bc1565b600054610100900460ff16610a315760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840161035d565b61045181610bec565b604051637ef7c88360e11b81526001600160a01b0387169063fdef910690610a6e9088908890889088908890600401610fde565b602060405180830381865afa158015610a8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aaf9190611032565b610aee57604051630cb6f8ed60e21b81526001600160a01b0380881660048301528087166024830152851660448201526064810184905260840161035d565b505050505050565b6001600160a01b0381163b610b735760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e747261637400000000000000000000000000000000000000606482015260840161035d565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610bca83610c86565b600082511180610bd75750805b1561085457610be68383610cc6565b50505050565b600054610100900460ff16610c575760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840161035d565b60c9805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610c8f81610af6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060610ceb83836040518060600160405280602781526020016110c860279139610cf2565b9392505050565b6060600080856001600160a01b031685604051610d0f9190611078565b600060405180830381855af49150503d8060008114610d4a576040519150601f19603f3d011682016040523d82523d6000602084013e610d4f565b606091505b5091509150610d6086838387610d6a565b9695505050505050565b60608315610dd9578251600003610dd2576001600160a01b0385163b610dd25760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161035d565b5081610de3565b610de38383610deb565b949350505050565b815115610dfb5781518083602001fd5b8060405162461bcd60e51b815260040161035d9190611094565b60405180606001604052806003906020820280368337509192915050565b600060208284031215610e4557600080fd5b81356001600160e01b031981168114610ceb57600080fd5b60608101818360005b6003811015610e8857815160ff16835260209283019290910190600101610e66565b50505092915050565b6001600160a01b038116811461045157600080fd5b600060208284031215610eb857600080fd5b8135610ceb81610e91565b6020810160038310610ee557634e487b7160e01b600052602160045260246000fd5b91905290565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215610f1457600080fd5b8235610f1f81610e91565b9150602083013567ffffffffffffffff80821115610f3c57600080fd5b818501915085601f830112610f5057600080fd5b813581811115610f6257610f62610eeb565b604051601f8201601f19908116603f01168101908382118183101715610f8a57610f8a610eeb565b81604052828152886020848701011115610fa357600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b600060208284031215610fd757600080fd5b5051919050565b60006001600160a01b03808816835280871660208401525084604083015260806060830152826080830152828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b60006020828403121561104457600080fd5b81518015158114610ceb57600080fd5b60005b8381101561106f578181015183820152602001611057565b50506000910152565b6000825161108a818460208701611054565b9190910192915050565b60208152600082518060208401526110b3816040850160208701611054565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xBC JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x4F1EF286 GT PUSH2 0x74 JUMPI DUP1 PUSH4 0x6ACCAB8C GT PUSH2 0x4E JUMPI DUP1 PUSH4 0x6ACCAB8C EQ PUSH2 0x1D3 JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0x1EA JUMPI DUP1 PUSH4 0xC9C4BFCA EQ PUSH2 0x20A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x188 JUMPI DUP1 PUSH4 0x52D1902D EQ PUSH2 0x19B JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0x1BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x3659CFE6 GT PUSH2 0xA5 JUMPI DUP1 PUSH4 0x3659CFE6 EQ PUSH2 0x118 JUMPI DUP1 PUSH4 0x4162169F EQ PUSH2 0x13A JUMPI DUP1 PUSH4 0x41DE6830 EQ PUSH2 0x16C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xC1 JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0xF6 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xCD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xE1 PUSH2 0xDC CALLDATASIZE PUSH1 0x4 PUSH2 0xE33 JUMP JUMPDEST PUSH2 0x23E JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x102 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x10B PUSH2 0x2AA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xED SWAP2 SWAP1 PUSH2 0xE5D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x124 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x138 PUSH2 0x133 CALLDATASIZE PUSH1 0x4 PUSH2 0xEA6 JUMP JUMPDEST PUSH2 0x2D4 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x146 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xC9 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xED JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x178 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 PUSH1 0x40 MLOAD PUSH2 0xED SWAP2 SWAP1 PUSH2 0xEC3 JUMP JUMPDEST PUSH2 0x138 PUSH2 0x196 CALLDATASIZE PUSH1 0x4 PUSH2 0xF01 JUMP JUMPDEST PUSH2 0x454 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1B0 PUSH2 0x5C0 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xED JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x154 PUSH2 0x685 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1B0 PUSH2 0x12D SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x138 PUSH2 0x205 CALLDATASIZE PUSH1 0x4 PUSH2 0xEA6 JUMP JUMPDEST PUSH2 0x6BD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x216 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1B0 PUSH32 0x821B6E3A557148015A918C89E5D092E878A69854A2D1A410635F771BD5A8A3F5 DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x41DE683 PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x26E JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x289 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x52D1902D PUSH1 0xE0 SHL EQ JUMPDEST DUP1 PUSH2 0x2A4 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x2B2 PUSH2 0xE15 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x366 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x19195B1959D85D1958D85B1B PUSH1 0xA2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3C1 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x42C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x6163746976652070726F7879 PUSH1 0xA0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x35D JUMP JUMPDEST PUSH2 0x435 DUP2 PUSH2 0x7E4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x451 SWAP2 DUP4 SWAP2 SWAP1 PUSH2 0x821 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x4E1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x19195B1959D85D1958D85B1B PUSH1 0xA2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x35D JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x53C PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x5A7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x6163746976652070726F7879 PUSH1 0xA0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x35D JUMP JUMPDEST PUSH2 0x5B0 DUP3 PUSH2 0x7E4 JUMP JUMPDEST PUSH2 0x5BC DUP3 DUP3 PUSH1 0x1 PUSH2 0x821 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x660 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x38 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x555550535570677261646561626C653A206D757374206E6F742062652063616C PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6C6564207468726F7567682064656C656761746563616C6C0000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x35D JUMP JUMPDEST POP PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6B8 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 DUP1 ISZERO PUSH2 0x6DD JUMPI POP PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xFF SWAP1 SWAP2 AND LT JUMPDEST DUP1 PUSH2 0x6F7 JUMPI POP ADDRESS EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x6F7 JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF AND PUSH1 0x1 EQ JUMPDEST PUSH2 0x769 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x647920696E697469616C697A6564000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x35D JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE DUP1 ISZERO PUSH2 0x78C JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND PUSH2 0x100 OR SWAP1 SSTORE JUMPDEST PUSH2 0x795 DUP3 PUSH2 0x9C6 JUMP JUMPDEST PUSH1 0x1 PUSH2 0x12D SSTORE DUP1 ISZERO PUSH2 0x5BC JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0xC9 SLOAD PUSH32 0x821B6E3A557148015A918C89E5D092E878A69854A2D1A410635F771BD5A8A3F5 SWAP1 PUSH2 0x5BC SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ADDRESS CALLER DUP5 PUSH1 0x0 CALLDATASIZE PUSH2 0xA3A JUMP JUMPDEST PUSH32 0x4910FDFA16FED3260ED0E7147F7CC6DA11A60208B5B9406D12A635614FFD9143 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x859 JUMPI PUSH2 0x854 DUP4 PUSH2 0xAF6 JUMP JUMPDEST POP POP POP JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x52D1902D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x8B3 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x8B0 SWAP2 DUP2 ADD SWAP1 PUSH2 0xFC5 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x925 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524331393637557067726164653A206E657720696D706C656D656E74617469 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F6E206973206E6F742055555053000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x35D JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC DUP2 EQ PUSH2 0x9BA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524331393637557067726164653A20756E737570706F727465642070726F78 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6961626C65555549440000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x35D JUMP JUMPDEST POP PUSH2 0x854 DUP4 DUP4 DUP4 PUSH2 0xBC1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0xA31 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x35D JUMP JUMPDEST PUSH2 0x451 DUP2 PUSH2 0xBEC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x7EF7C883 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0xFDEF9106 SWAP1 PUSH2 0xA6E SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0xFDE JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xA8B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xAAF SWAP2 SWAP1 PUSH2 0x1032 JUMP JUMPDEST PUSH2 0xAEE JUMPI PUSH1 0x40 MLOAD PUSH4 0xCB6F8ED PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND PUSH1 0x4 DUP4 ADD MSTORE DUP1 DUP8 AND PUSH1 0x24 DUP4 ADD MSTORE DUP6 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x84 ADD PUSH2 0x35D JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND EXTCODESIZE PUSH2 0xB73 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313936373A206E657720696D706C656D656E746174696F6E206973206E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F74206120636F6E747261637400000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x35D JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xBCA DUP4 PUSH2 0xC86 JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD GT DUP1 PUSH2 0xBD7 JUMPI POP DUP1 JUMPDEST ISZERO PUSH2 0x854 JUMPI PUSH2 0xBE6 DUP4 DUP4 PUSH2 0xCC6 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0xC57 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x35D JUMP JUMPDEST PUSH1 0xC9 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xC8F DUP2 PUSH2 0xAF6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xCEB DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x10C8 PUSH1 0x27 SWAP2 CODECOPY PUSH2 0xCF2 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0xD0F SWAP2 SWAP1 PUSH2 0x1078 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xD4A JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xD4F JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0xD60 DUP7 DUP4 DUP4 DUP8 PUSH2 0xD6A JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0xDD9 JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0xDD2 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0xDD2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x35D JUMP JUMPDEST POP DUP2 PUSH2 0xDE3 JUMP JUMPDEST PUSH2 0xDE3 DUP4 DUP4 PUSH2 0xDEB JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0xDFB JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x35D SWAP2 SWAP1 PUSH2 0x1094 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xE45 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0xCEB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0xE88 JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0xE66 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x451 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xEB8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xCEB DUP2 PUSH2 0xE91 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH1 0x3 DUP4 LT PUSH2 0xEE5 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 SWAP1 MSTORE SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xF14 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0xF1F DUP2 PUSH2 0xE91 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xF3C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xF50 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0xF62 JUMPI PUSH2 0xF62 PUSH2 0xEEB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0xF8A JUMPI PUSH2 0xF8A PUSH2 0xEEB JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0xFA3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xFD7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND DUP4 MSTORE DUP1 DUP8 AND PUSH1 0x20 DUP5 ADD MSTORE POP DUP5 PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x80 PUSH1 0x60 DUP4 ADD MSTORE DUP3 PUSH1 0x80 DUP4 ADD MSTORE DUP3 DUP5 PUSH1 0xA0 DUP5 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0xA0 DUP5 DUP5 ADD ADD MSTORE PUSH1 0xA0 PUSH1 0x1F NOT PUSH1 0x1F DUP6 ADD AND DUP4 ADD ADD SWAP1 POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1044 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xCEB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x106F JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1057 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x108A DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x1054 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x10B3 DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x1054 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A164 PUSH20 0x6F6C6343000811000A0000000000000000000000 ","sourceMap":"382:225:53:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2358:366:75;;;;;;;;;;-1:-1:-1;2358:366:75;;;;;:::i;:::-;;:::i;:::-;;;470:14:92;;463:22;445:41;;433:2;418:18;2358:366:75;;;;;;;;631:98:90;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;3408:195:5:-;;;;;;;;;;-1:-1:-1;3408:195:5;;;;;:::i;:::-;;:::i;:::-;;1200:70:67;;;;;;;;;;-1:-1:-1;1259:4:67;;-1:-1:-1;;;;;1259:4:67;1200:70;;;-1:-1:-1;;;;;1592:55:92;;;1574:74;;1562:2;1547:18;1200:70:67;1414:240:92;1552:103:75;;;;;;;;;;-1:-1:-1;1604:10:75;1552:103;;;;;;:::i;3922:220:5:-;;;;;;:::i;:::-;;:::i;3027:131::-;;;;;;;;;;;;;:::i;:::-;;;3347:25:92;;;3335:2;3320:18;3027:131:5;3201:177:92;3005:100:75;;;;;;;;;;;;;:::i;454:21:53:-;;;;;;;;;;;;;;;;482:123;;;;;;;;;;-1:-1:-1;482:123:53;;;;;:::i;:::-;;:::i;1753:93:75:-;;;;;;;;;;;;1808:38;1753:93;;2358:366;2444:4;-1:-1:-1;;;;;;2479:41:75;;-1:-1:-1;;;2479:41:75;;:107;;-1:-1:-1;;;;;;;2536:50:75;;-1:-1:-1;;;2536:50:75;2479:107;:185;;;-1:-1:-1;;;;;;;2602:62:75;;-1:-1:-1;;;2602:62:75;2479:185;:238;;;-1:-1:-1;;;;;;;;;;1189:51:11;;;2680:37:75;2460:257;2358:366;-1:-1:-1;;2358:366:75:o;631:98:90:-;679:15;;:::i;:::-;-1:-1:-1;706:16:90;;;;;;;;714:1;706:16;;717:1;706:16;;;;-1:-1:-1;706:16:90;;;;;;;;631:98::o;3408:195:5:-;-1:-1:-1;;;;;1764:6:5;1747:23;1755:4;1747:23;1739:80;;;;-1:-1:-1;;;1739:80:5;;4264:2:92;1739:80:5;;;4246:21:92;4303:2;4283:18;;;4276:30;4342:34;4322:18;;;4315:62;-1:-1:-1;;;4393:18:92;;;4386:42;4445:19;;1739:80:5;;;;;;;;;1861:6;-1:-1:-1;;;;;1837:30:5;:20;1180:66:2;1557:65;-1:-1:-1;;;;;1557:65:2;;1478:151;1837:20:5;-1:-1:-1;;;;;1837:30:5;;1829:87;;;;-1:-1:-1;;;1829:87:5;;4677:2:92;1829:87:5;;;4659:21:92;4716:2;4696:18;;;4689:30;4755:34;4735:18;;;4728:62;-1:-1:-1;;;4806:18:92;;;4799:42;4858:19;;1829:87:5;4475:408:92;1829:87:5;3489:36:::1;3507:17;3489;:36::i;:::-;3576:12;::::0;;3586:1:::1;3576:12:::0;;;::::1;::::0;::::1;::::0;;;3535:61:::1;::::0;3557:17;;3576:12;3535:21:::1;:61::i;:::-;3408:195:::0;:::o;3922:220::-;-1:-1:-1;;;;;1764:6:5;1747:23;1755:4;1747:23;1739:80;;;;-1:-1:-1;;;1739:80:5;;4264:2:92;1739:80:5;;;4246:21:92;4303:2;4283:18;;;4276:30;4342:34;4322:18;;;4315:62;-1:-1:-1;;;4393:18:92;;;4386:42;4445:19;;1739:80:5;4062:408:92;1739:80:5;1861:6;-1:-1:-1;;;;;1837:30:5;:20;1180:66:2;1557:65;-1:-1:-1;;;;;1557:65:2;;1478:151;1837:20:5;-1:-1:-1;;;;;1837:30:5;;1829:87;;;;-1:-1:-1;;;1829:87:5;;4677:2:92;1829:87:5;;;4659:21:92;4716:2;4696:18;;;4689:30;4755:34;4735:18;;;4728:62;-1:-1:-1;;;4806:18:92;;;4799:42;4858:19;;1829:87:5;4475:408:92;1829:87:5;4037:36:::1;4055:17;4037;:36::i;:::-;4083:52;4105:17;4124:4;4130;4083:21;:52::i;:::-;3922:220:::0;;:::o;3027:131::-;3105:7;2190:4;-1:-1:-1;;;;;2199:6:5;2182:23;;2174:92;;;;-1:-1:-1;;;2174:92:5;;5090:2:92;2174:92:5;;;5072:21:92;5129:2;5109:18;;;5102:30;5168:34;5148:18;;;5141:62;5239:26;5219:18;;;5212:54;5283:19;;2174:92:5;4888:420:92;2174:92:5;-1:-1:-1;1180:66:2::1;3027:131:5::0;:::o;3005:100:75:-;3052:7;3078:20;1180:66:2;1557:65;-1:-1:-1;;;;;1557:65:2;;1478:151;3078:20:75;3071:27;;3005:100;:::o;482:123:53:-;3279:19:4;3302:13;;;;;;3301:14;;3347:34;;;;-1:-1:-1;3365:12:4;;3380:1;3365:12;;;;:16;3347:34;3346:108;;;-1:-1:-1;3426:4:4;1713:19:6;:23;;;3387:66:4;;-1:-1:-1;3436:12:4;;;;;:17;3387:66;3325:201;;;;-1:-1:-1;;;3325:201:4;;5515:2:92;3325:201:4;;;5497:21:92;5554:2;5534:18;;;5527:30;5593:34;5573:18;;;5566:62;5664:16;5644:18;;;5637:44;5698:19;;3325:201:4;5313:410:92;3325:201:4;3536:12;:16;;-1:-1:-1;;3536:16:4;3551:1;3536:16;;;3562:65;;;;3596:13;:20;;-1:-1:-1;;3596:20:4;;;;;3562:65;544:34:53::1;573:4;544:28;:34::i;:::-;597:1;588:6;:10:::0;3647:99:4;;;;3697:5;3681:21;;-1:-1:-1;;3681:21:4;;;3721:14;;-1:-1:-1;5880:36:92;;3721:14:4;;5868:2:92;5853:18;3721:14:4;;;;;;;3269:483;482:123:53;:::o;3446:204:75:-;1616:4:67;;1808:38:75;;1610:67:67;;-1:-1:-1;;;;;1616:4:67;1630;965:10:8;1651:13:67;1039:14:8;;1610:5:67;:67::i;2841:944:2:-;839:66;3257:59;;;3253:526;;;3332:37;3351:17;3332:18;:37::i;:::-;2841:944;;;:::o;3253:526::-;3433:17;-1:-1:-1;;;;;3404:61:2;;:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3404:63:2;;;;;;;;-1:-1:-1;;3404:63:2;;;;;;;;;;;;:::i;:::-;;;3400:302;;3631:56;;-1:-1:-1;;;3631:56:2;;6318:2:92;3631:56:2;;;6300:21:92;6357:2;6337:18;;;6330:30;6396:34;6376:18;;;6369:62;6467:16;6447:18;;;6440:44;6501:19;;3631:56:2;6116:410:92;3400:302:2;1180:66;3517:28;;3509:82;;;;-1:-1:-1;;;3509:82:2;;6733:2:92;3509:82:2;;;6715:21:92;6772:2;6752:18;;;6745:30;6811:34;6791:18;;;6784:62;6882:11;6862:18;;;6855:39;6911:19;;3509:82:2;6531:405:92;3509:82:2;3468:138;3715:53;3733:17;3752:4;3758:9;3715:17;:53::i;2014:139:75:-;5374:13:4;;;;;;;5366:69;;;;-1:-1:-1;;;5366:69:4;;7143:2:92;5366:69:4;;;7125:21:92;7182:2;7162:18;;;7155:30;7221:34;7201:18;;;7194:62;-1:-1:-1;;;7272:18:92;;;7265:41;7323:19;;5366:69:4;6941:407:92;5366:69:4;2107:39:75::1;2141:4;2107:33;:39::i;1041:363:68:-:0;1180:54;;-1:-1:-1;;;1180:54:68;;-1:-1:-1;;;;;1180:18:68;;;;;:54;;1199:6;;1207:4;;1213:13;;1228:5;;;;1180:54;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1175:226;;1251:150;;-1:-1:-1;;;1251:150:68;;-1:-1:-1;;;;;8635:15:92;;;1251:150:68;;;8617:34:92;8687:15;;;8667:18;;;8660:43;8739:15;;8719:18;;;8712:43;8771:18;;;8764:34;;;8528:19;;1251:150:68;8325:479:92;1175:226:68;1041:363;;;;;;:::o;1720:281:2:-;-1:-1:-1;;;;;1713:19:6;;;1793:106:2;;;;-1:-1:-1;;;1793:106:2;;9011:2:92;1793:106:2;;;8993:21:92;9050:2;9030:18;;;9023:30;9089:34;9069:18;;;9062:62;9160:15;9140:18;;;9133:43;9193:19;;1793:106:2;8809:409:92;1793:106:2;1180:66;1909:85;;-1:-1:-1;;1909:85:2;-1:-1:-1;;;;;1909:85:2;;;;;;;;;;1720:281::o;2393:276::-;2501:29;2512:17;2501:10;:29::i;:::-;2558:1;2544:4;:11;:15;:28;;;;2563:9;2544:28;2540:123;;;2588:64;2628:17;2647:4;2588:39;:64::i;:::-;;2393:276;;;:::o;1010:108:67:-;5374:13:4;;;;;;;5366:69;;;;-1:-1:-1;;;5366:69:4;;7143:2:92;5366:69:4;;;7125:21:92;7182:2;7162:18;;;7155:30;7221:34;7201:18;;;7194:62;-1:-1:-1;;;7272:18:92;;;7265:41;7323:19;;5366:69:4;6941:407:92;5366:69:4;1100:4:67::1;:11:::0;;-1:-1:-1;;1100:11:67::1;-1:-1:-1::0;;;;;1100:11:67;;;::::1;::::0;;;::::1;::::0;;1010:108::o;2107:152:2:-;2173:37;2192:17;2173:18;:37::i;:::-;2225:27;;-1:-1:-1;;;;;2225:27:2;;;;;;;;2107:152;:::o;6685:198:6:-;6768:12;6799:77;6820:6;6828:4;6799:77;;;;;;;;;;;;;;;;;:20;:77::i;:::-;6792:84;6685:198;-1:-1:-1;;;6685:198:6:o;7069:325::-;7210:12;7235;7249:23;7276:6;-1:-1:-1;;;;;7276:19:6;7296:4;7276:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7234:67;;;;7318:69;7345:6;7353:7;7362:10;7374:12;7318:26;:69::i;:::-;7311:76;7069:325;-1:-1:-1;;;;;;7069:325:6:o;7682:628::-;7862:12;7890:7;7886:418;;;7917:10;:17;7938:1;7917:22;7913:286;;-1:-1:-1;;;;;1713:19:6;;;8124:60;;;;-1:-1:-1;;;8124:60:6;;9972:2:92;8124:60:6;;;9954:21:92;10011:2;9991:18;;;9984:30;10050:31;10030:18;;;10023:59;10099:18;;8124:60:6;9770:353:92;8124:60:6;-1:-1:-1;8219:10:6;8212:17;;7886:418;8260:33;8268:10;8280:12;8260:7;:33::i;:::-;7682:628;;;;;;:::o;8832:540::-;8991:17;;:21;8987:379;;9219:10;9213:17;9275:15;9262:10;9258:2;9254:19;9247:44;8987:379;9342:12;9335:20;;-1:-1:-1;;;9335:20:6;;;;;;;;:::i;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:286:92:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:92;;209:43;;199:71;;266:1;263;256:12;497:501;673:2;658:18;;662:9;753:6;631:4;787:205;801:4;798:1;795:11;787:205;;;864:13;;879:4;860:24;848:37;;908:4;932:12;;;;967:15;;;;821:1;814:9;787:205;;;791:3;;;497:501;;;;:::o;1003:154::-;-1:-1:-1;;;;;1082:5:92;1078:54;1071:5;1068:65;1058:93;;1147:1;1144;1137:12;1162:247;1221:6;1274:2;1262:9;1253:7;1249:23;1245:32;1242:52;;;1290:1;1287;1280:12;1242:52;1329:9;1316:23;1348:31;1373:5;1348:31;:::i;1659:344::-;1807:2;1792:18;;1840:1;1829:13;;1819:144;;1885:10;1880:3;1876:20;1873:1;1866:31;1920:4;1917:1;1910:15;1948:4;1945:1;1938:15;1819:144;1972:25;;;1659:344;:::o;2008:127::-;2069:10;2064:3;2060:20;2057:1;2050:31;2100:4;2097:1;2090:15;2124:4;2121:1;2114:15;2140:1056;2217:6;2225;2278:2;2266:9;2257:7;2253:23;2249:32;2246:52;;;2294:1;2291;2284:12;2246:52;2333:9;2320:23;2352:31;2377:5;2352:31;:::i;:::-;2402:5;-1:-1:-1;2458:2:92;2443:18;;2430:32;2481:18;2511:14;;;2508:34;;;2538:1;2535;2528:12;2508:34;2576:6;2565:9;2561:22;2551:32;;2621:7;2614:4;2610:2;2606:13;2602:27;2592:55;;2643:1;2640;2633:12;2592:55;2679:2;2666:16;2701:2;2697;2694:10;2691:36;;;2707:18;;:::i;:::-;2782:2;2776:9;2750:2;2836:13;;-1:-1:-1;;2832:22:92;;;2856:2;2828:31;2824:40;2812:53;;;2880:18;;;2900:22;;;2877:46;2874:72;;;2926:18;;:::i;:::-;2966:10;2962:2;2955:22;3001:2;2993:6;2986:18;3041:7;3036:2;3031;3027;3023:11;3019:20;3016:33;3013:53;;;3062:1;3059;3052:12;3013:53;3118:2;3113;3109;3105:11;3100:2;3092:6;3088:15;3075:46;3163:1;3158:2;3153;3145:6;3141:15;3137:24;3130:35;3184:6;3174:16;;;;;;;2140:1056;;;;;:::o;5927:184::-;5997:6;6050:2;6038:9;6029:7;6025:23;6021:32;6018:52;;;6066:1;6063;6056:12;6018:52;-1:-1:-1;6089:16:92;;5927:184;-1:-1:-1;5927:184:92:o;7353:685::-;7557:4;-1:-1:-1;;;;;7667:2:92;7659:6;7655:15;7644:9;7637:34;7719:2;7711:6;7707:15;7702:2;7691:9;7687:18;7680:43;;7759:6;7754:2;7743:9;7739:18;7732:34;7802:3;7797:2;7786:9;7782:18;7775:31;7843:6;7837:3;7826:9;7822:19;7815:35;7901:6;7893;7887:3;7876:9;7872:19;7859:49;7958:1;7952:3;7943:6;7932:9;7928:22;7924:32;7917:43;8028:3;8021:2;8017:7;8012:2;8004:6;8000:15;7996:29;7985:9;7981:45;7977:55;7969:63;;7353:685;;;;;;;;:::o;8043:277::-;8110:6;8163:2;8151:9;8142:7;8138:23;8134:32;8131:52;;;8179:1;8176;8169:12;8131:52;8211:9;8205:16;8264:5;8257:13;8250:21;8243:5;8240:32;8230:60;;8286:1;8283;8276:12;9223:250;9308:1;9318:113;9332:6;9329:1;9326:13;9318:113;;;9408:11;;;9402:18;9389:11;;;9382:39;9354:2;9347:10;9318:113;;;-1:-1:-1;;9465:1:92;9447:16;;9440:27;9223:250::o;9478:287::-;9607:3;9645:6;9639:13;9661:66;9720:6;9715:3;9708:4;9700:6;9696:17;9661:66;:::i;:::-;9743:16;;;;;9478:287;-1:-1:-1;;9478:287:92:o;10128:396::-;10277:2;10266:9;10259:21;10240:4;10309:6;10303:13;10352:6;10347:2;10336:9;10332:18;10325:34;10368:79;10440:6;10435:2;10424:9;10420:18;10415:2;10407:6;10403:15;10368:79;:::i;:::-;10508:2;10487:15;-1:-1:-1;;10483:29:92;10468:45;;;;10515:2;10464:54;;10128:396;-1:-1:-1;;10128:396:92:o"},"gasEstimates":{"creation":{"codeDepositCost":"869400","executionCost":"infinite","totalCost":"infinite"},"external":{"UPGRADE_PLUGIN_PERMISSION_ID()":"261","dao()":"2365","implementation()":"2436","initialize(address)":"infinite","pluginType()":"294","protocolVersion()":"infinite","proxiableUUID()":"infinite","state1()":"2317","supportsInterface(bytes4)":"560","upgradeTo(address)":"infinite","upgradeToAndCall(address,bytes)":"infinite"}},"methodIdentifiers":{"UPGRADE_PLUGIN_PERMISSION_ID()":"c9c4bfca","dao()":"4162169f","implementation()":"5c60da1b","initialize(address)":"c4d66de8","pluginType()":"41de6830","protocolVersion()":"2ae9c600","proxiableUUID()":"52d1902d","state1()":"6accab8c","supportsInterface(bytes4)":"01ffc9a7","upgradeTo(address)":"3659cfe6","upgradeToAndCall(address,bytes)":"4f1ef286"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"dao\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"name\":\"DaoUnauthorized\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"UPGRADE_PLUGIN_PERMISSION_ID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"dao\",\"outputs\":[{\"internalType\":\"contract IDAO\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IDAO\",\"name\":\"_dao\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pluginType\",\"outputs\":[{\"internalType\":\"enum IPlugin.PluginType\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"protocolVersion\",\"outputs\":[{\"internalType\":\"uint8[3]\",\"name\":\"\",\"type\":\"uint8[3]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"state1\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"upgradeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"DO NOT USE IN PRODUCTION!\",\"errors\":{\"DaoUnauthorized(address,address,address,bytes32)\":[{\"params\":{\"dao\":\"The associated DAO.\",\"permissionId\":\"The permission identifier.\",\"where\":\"The context in which the authorization reverted.\",\"who\":\"The address (EOA or contract) missing the permission.\"}}]},\"kind\":\"dev\",\"methods\":{\"dao()\":{\"returns\":{\"_0\":\"The DAO contract.\"}},\"implementation()\":{\"returns\":{\"_0\":\"The address of the implementation contract.\"}},\"protocolVersion()\":{\"details\":\"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\",\"returns\":{\"_0\":\"Returns the semantic Aragon OSx protocol version number.\"}},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"supportsInterface(bytes4)\":{\"params\":{\"_interfaceId\":\"The ID of the interface.\"},\"returns\":{\"_0\":\"Returns `true` if the interface is supported.\"}},\"upgradeTo(address)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"},\"upgradeToAndCall(address,bytes)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"}},\"version\":1},\"userdoc\":{\"errors\":{\"DaoUnauthorized(address,address,address,bytes32)\":[{\"notice\":\"Thrown if a call is unauthorized in the associated DAO.\"}]},\"kind\":\"user\",\"methods\":{\"UPGRADE_PLUGIN_PERMISSION_ID()\":{\"notice\":\"The ID of the permission required to call the `_authorizeUpgrade` function.\"},\"dao()\":{\"notice\":\"Returns the DAO contract.\"},\"implementation()\":{\"notice\":\"Returns the address of the implementation contract in the [proxy storage slot](https://eips.ethereum.org/EIPS/eip-1967) slot the [UUPS proxy](https://eips.ethereum.org/EIPS/eip-1822) is pointing to.\"},\"pluginType()\":{\"notice\":\"Returns the plugin's type\"},\"protocolVersion()\":{\"notice\":\"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Checks if an interface is supported by this or its parent contract.\"}},\"notice\":\"A mock upgradeable plugin to be deployed via the UUPS proxy pattern. v1.1 (Release 1, Build 1)\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/mocks/plugin/PluginUUPSUpgradeableMock.sol\":\"PluginUUPSUpgradeableMockBuild1\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/interfaces/IERC1967Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (interfaces/IERC1967.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\\n *\\n * _Available since v4.8.3._\\n */\\ninterface IERC1967Upgradeable {\\n /**\\n * @dev Emitted when the implementation is upgraded.\\n */\\n event Upgraded(address indexed implementation);\\n\\n /**\\n * @dev Emitted when the admin account has changed.\\n */\\n event AdminChanged(address previousAdmin, address newAdmin);\\n\\n /**\\n * @dev Emitted when the beacon is changed.\\n */\\n event BeaconUpgraded(address indexed beacon);\\n}\\n\",\"keccak256\":\"0x47d6e06872b12e72c79d1b5eb55842f860b5fb1207b2317c2358d2766b950a7b\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822ProxiableUpgradeable {\\n /**\\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n * address.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy.\\n */\\n function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../beacon/IBeaconUpgradeable.sol\\\";\\nimport \\\"../../interfaces/IERC1967Upgradeable.sol\\\";\\nimport \\\"../../interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\nimport \\\"../../utils/StorageSlotUpgradeable.sol\\\";\\nimport {Initializable} from \\\"../utils/Initializable.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n */\\nabstract contract ERC1967UpgradeUpgradeable is Initializable, IERC1967Upgradeable {\\n // This is the keccak-256 hash of \\\"eip1967.proxy.rollback\\\" subtracted by 1\\n bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n /**\\n * @dev Storage slot with the address of the current implementation.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n function __ERC1967Upgrade_init() internal onlyInitializing {\\n }\\n\\n function __ERC1967Upgrade_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _getImplementation() internal view returns (address) {\\n return StorageSlotUpgradeable.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 implementation slot.\\n */\\n function _setImplementation(address newImplementation) private {\\n require(AddressUpgradeable.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n StorageSlotUpgradeable.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n }\\n\\n /**\\n * @dev Perform implementation upgrade\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeTo(address newImplementation) internal {\\n _setImplementation(newImplementation);\\n emit Upgraded(newImplementation);\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCall(address newImplementation, bytes memory data, bool forceCall) internal {\\n _upgradeTo(newImplementation);\\n if (data.length > 0 || forceCall) {\\n AddressUpgradeable.functionDelegateCall(newImplementation, data);\\n }\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCallUUPS(address newImplementation, bytes memory data, bool forceCall) internal {\\n // Upgrades from old implementations will perform a rollback test. This test requires the new\\n // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n // this special case will break upgrade paths from old UUPS implementation to new ones.\\n if (StorageSlotUpgradeable.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n _setImplementation(newImplementation);\\n } else {\\n try IERC1822ProxiableUpgradeable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n require(slot == _IMPLEMENTATION_SLOT, \\\"ERC1967Upgrade: unsupported proxiableUUID\\\");\\n } catch {\\n revert(\\\"ERC1967Upgrade: new implementation is not UUPS\\\");\\n }\\n _upgradeToAndCall(newImplementation, data, forceCall);\\n }\\n }\\n\\n /**\\n * @dev Storage slot with the admin of the contract.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _getAdmin() internal view returns (address) {\\n return StorageSlotUpgradeable.getAddressSlot(_ADMIN_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 admin slot.\\n */\\n function _setAdmin(address newAdmin) private {\\n require(newAdmin != address(0), \\\"ERC1967: new admin is the zero address\\\");\\n StorageSlotUpgradeable.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n */\\n function _changeAdmin(address newAdmin) internal {\\n emit AdminChanged(_getAdmin(), newAdmin);\\n _setAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\\n */\\n bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n /**\\n * @dev Returns the current beacon.\\n */\\n function _getBeacon() internal view returns (address) {\\n return StorageSlotUpgradeable.getAddressSlot(_BEACON_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new beacon in the EIP1967 beacon slot.\\n */\\n function _setBeacon(address newBeacon) private {\\n require(AddressUpgradeable.isContract(newBeacon), \\\"ERC1967: new beacon is not a contract\\\");\\n require(\\n AddressUpgradeable.isContract(IBeaconUpgradeable(newBeacon).implementation()),\\n \\\"ERC1967: beacon implementation is not a contract\\\"\\n );\\n StorageSlotUpgradeable.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n }\\n\\n /**\\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n *\\n * Emits a {BeaconUpgraded} event.\\n */\\n function _upgradeBeaconToAndCall(address newBeacon, bytes memory data, bool forceCall) internal {\\n _setBeacon(newBeacon);\\n emit BeaconUpgraded(newBeacon);\\n if (data.length > 0 || forceCall) {\\n AddressUpgradeable.functionDelegateCall(IBeaconUpgradeable(newBeacon).implementation(), data);\\n }\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x7795808e3899c805254e3ae58074b20f799b466e3f43e057e47bedee5fb771f8\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeaconUpgradeable {\\n /**\\n * @dev Must return an address that can be used as a delegate call target.\\n *\\n * {BeaconProxy} will check that this address is a contract.\\n */\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/UUPSUpgradeable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport \\\"../ERC1967/ERC1967UpgradeUpgradeable.sol\\\";\\nimport {Initializable} from \\\"./Initializable.sol\\\";\\n\\n/**\\n * @dev An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an\\n * {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy.\\n *\\n * A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is\\n * reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing\\n * `UUPSUpgradeable` with a custom implementation of upgrades.\\n *\\n * The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism.\\n *\\n * _Available since v4.1._\\n */\\nabstract contract UUPSUpgradeable is Initializable, IERC1822ProxiableUpgradeable, ERC1967UpgradeUpgradeable {\\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable state-variable-assignment\\n address private immutable __self = address(this);\\n\\n /**\\n * @dev Check that the execution is being performed through a delegatecall call and that the execution context is\\n * a proxy contract with an implementation (as defined in ERC1967) pointing to self. This should only be the case\\n * for UUPS and transparent proxies that are using the current contract as their implementation. Execution of a\\n * function through ERC1167 minimal proxies (clones) would not normally pass this test, but is not guaranteed to\\n * fail.\\n */\\n modifier onlyProxy() {\\n require(address(this) != __self, \\\"Function must be called through delegatecall\\\");\\n require(_getImplementation() == __self, \\\"Function must be called through active proxy\\\");\\n _;\\n }\\n\\n /**\\n * @dev Check that the execution is not being performed through a delegate call. This allows a function to be\\n * callable on the implementing contract but not through proxies.\\n */\\n modifier notDelegated() {\\n require(address(this) == __self, \\\"UUPSUpgradeable: must not be called through delegatecall\\\");\\n _;\\n }\\n\\n function __UUPSUpgradeable_init() internal onlyInitializing {\\n }\\n\\n function __UUPSUpgradeable_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the\\n * implementation. It is used to validate the implementation's compatibility when performing an upgrade.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\\n */\\n function proxiableUUID() external view virtual override notDelegated returns (bytes32) {\\n return _IMPLEMENTATION_SLOT;\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy to `newImplementation`.\\n *\\n * Calls {_authorizeUpgrade}.\\n *\\n * Emits an {Upgraded} event.\\n *\\n * @custom:oz-upgrades-unsafe-allow-reachable delegatecall\\n */\\n function upgradeTo(address newImplementation) public virtual onlyProxy {\\n _authorizeUpgrade(newImplementation);\\n _upgradeToAndCallUUPS(newImplementation, new bytes(0), false);\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call\\n * encoded in `data`.\\n *\\n * Calls {_authorizeUpgrade}.\\n *\\n * Emits an {Upgraded} event.\\n *\\n * @custom:oz-upgrades-unsafe-allow-reachable delegatecall\\n */\\n function upgradeToAndCall(address newImplementation, bytes memory data) public payable virtual onlyProxy {\\n _authorizeUpgrade(newImplementation);\\n _upgradeToAndCallUUPS(newImplementation, data, true);\\n }\\n\\n /**\\n * @dev Function that should revert when `msg.sender` is not authorized to upgrade the contract. Called by\\n * {upgradeTo} and {upgradeToAndCall}.\\n *\\n * Normally, this function will use an xref:access.adoc[access control] modifier such as {Ownable-onlyOwner}.\\n *\\n * ```solidity\\n * function _authorizeUpgrade(address) internal override onlyOwner {}\\n * ```\\n */\\n function _authorizeUpgrade(address newImplementation) internal virtual;\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0xefb41f5c1a00249b7a99f0782f8c557865605426a3fb6e5fe9ae334293ae4f33\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n function __Context_init() internal onlyInitializing {\\n }\\n\\n function __Context_init_unchained() internal onlyInitializing {\\n }\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n function _contextSuffixLength() internal view virtual returns (uint256) {\\n return 0;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x75097e35253e7fb282ee4d7f27a80eaacfa759923185bf17302a89cbc059c5ef\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/StorageSlot.sol)\\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```solidity\\n * contract ERC1967 {\\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n * function _getImplementation() internal view returns (address) {\\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n * }\\n *\\n * function _setImplementation(address newImplementation) internal {\\n * require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n * }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._\\n * _Available since v4.9 for `string`, `bytes`._\\n */\\nlibrary StorageSlotUpgradeable {\\n struct AddressSlot {\\n address value;\\n }\\n\\n struct BooleanSlot {\\n bool value;\\n }\\n\\n struct Bytes32Slot {\\n bytes32 value;\\n }\\n\\n struct Uint256Slot {\\n uint256 value;\\n }\\n\\n struct StringSlot {\\n string value;\\n }\\n\\n struct BytesSlot {\\n bytes value;\\n }\\n\\n /**\\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n */\\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n */\\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n */\\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n */\\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` with member `value` located at `slot`.\\n */\\n function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\\n */\\n function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` with member `value` located at `slot`.\\n */\\n function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\\n */\\n function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n}\\n\",\"keccak256\":\"0x07ac95acad040f1fb1f6120dd0aa5f702db69446e95f82613721879d30de0908\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165Upgradeable.sol\\\";\\nimport {Initializable} from \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165Upgradeable is Initializable, IERC165Upgradeable {\\n function __ERC165_init() internal onlyInitializing {\\n }\\n\\n function __ERC165_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165Upgradeable).interfaceId;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0xd90d7723512df65ae417adaf0801042940f0dabd60039ceeaffe34aa5b238da1\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165Upgradeable {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\"},\"src/dao/IDAO.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IDAO\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for DAOs within the Aragon App DAO framework.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IDAO {\\n /// @notice The action struct to be consumed by the DAO's `execute` function resulting in an external call.\\n /// @param to The address to call.\\n /// @param value The native token value to be sent with the call.\\n /// @param data The bytes-encoded function selector and calldata for the call.\\n struct Action {\\n address to;\\n uint256 value;\\n bytes data;\\n }\\n\\n /// @notice Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\\n /// @param _where The address of the contract.\\n /// @param _who The address of a EOA or contract to give the permissions.\\n /// @param _permissionId The permission identifier.\\n /// @param _data The optional data passed to the `PermissionCondition` registered.\\n /// @return Returns true if the address has permission, false if not.\\n function hasPermission(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes memory _data\\n ) external view returns (bool);\\n\\n /// @notice Updates the DAO metadata (e.g., an IPFS hash).\\n /// @param _metadata The IPFS hash of the new metadata object.\\n function setMetadata(bytes calldata _metadata) external;\\n\\n /// @notice Emitted when the DAO metadata is updated.\\n /// @param metadata The IPFS hash of the new metadata object.\\n event MetadataSet(bytes metadata);\\n\\n /// @notice Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted.\\n /// @param _callId The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce.\\n /// @param _actions The array of actions.\\n /// @param _allowFailureMap A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @return The array of results obtained from the executed actions in `bytes`.\\n /// @return The resulting failure map containing the actions have actually failed.\\n function execute(\\n bytes32 _callId,\\n Action[] memory _actions,\\n uint256 _allowFailureMap\\n ) external returns (bytes[] memory, uint256);\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param actor The address of the caller.\\n /// @param callId The ID of the call.\\n /// @param actions The array of actions executed.\\n /// @param allowFailureMap The allow failure map encoding which actions are allowed to fail.\\n /// @param failureMap The failure map encoding which actions have failed.\\n /// @param execResults The array with the results of the executed actions.\\n /// @dev The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce.\\n event Executed(\\n address indexed actor,\\n bytes32 callId,\\n Action[] actions,\\n uint256 allowFailureMap,\\n uint256 failureMap,\\n bytes[] execResults\\n );\\n\\n /// @notice Emitted when a standard callback is registered.\\n /// @param interfaceId The ID of the interface.\\n /// @param callbackSelector The selector of the callback function.\\n /// @param magicNumber The magic number to be registered for the callback function selector.\\n event StandardCallbackRegistered(\\n bytes4 interfaceId,\\n bytes4 callbackSelector,\\n bytes4 magicNumber\\n );\\n\\n /// @notice Deposits (native) tokens to the DAO contract with a reference string.\\n /// @param _token The address of the token or address(0) in case of the native token.\\n /// @param _amount The amount of tokens to deposit.\\n /// @param _reference The reference describing the deposit reason.\\n function deposit(address _token, uint256 _amount, string calldata _reference) external payable;\\n\\n /// @notice Emitted when a token deposit has been made to the DAO.\\n /// @param sender The address of the sender.\\n /// @param token The address of the deposited token.\\n /// @param amount The amount of tokens deposited.\\n /// @param _reference The reference describing the deposit reason.\\n event Deposited(\\n address indexed sender,\\n address indexed token,\\n uint256 amount,\\n string _reference\\n );\\n\\n /// @notice Emitted when a native token deposit has been made to the DAO.\\n /// @dev This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).\\n /// @param sender The address of the sender.\\n /// @param amount The amount of native tokens deposited.\\n event NativeTokenDeposited(address sender, uint256 amount);\\n\\n /// @notice Setter for the trusted forwarder verifying the meta transaction.\\n /// @param _trustedForwarder The trusted forwarder address.\\n function setTrustedForwarder(address _trustedForwarder) external;\\n\\n /// @notice Getter for the trusted forwarder verifying the meta transaction.\\n /// @return The trusted forwarder address.\\n function getTrustedForwarder() external view returns (address);\\n\\n /// @notice Emitted when a new TrustedForwarder is set on the DAO.\\n /// @param forwarder the new forwarder address.\\n event TrustedForwarderSet(address forwarder);\\n\\n /// @notice Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\\n /// @param _hash The hash of the data to be signed.\\n /// @param _signature The signature byte array associated with `_hash`.\\n /// @return Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not.\\n function isValidSignature(bytes32 _hash, bytes memory _signature) external returns (bytes4);\\n\\n /// @notice Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\\n /// @param _interfaceId The ID of the interface.\\n /// @param _callbackSelector The selector of the callback function.\\n /// @param _magicNumber The magic number to be registered for the function signature.\\n function registerStandardCallback(\\n bytes4 _interfaceId,\\n bytes4 _callbackSelector,\\n bytes4 _magicNumber\\n ) external;\\n\\n /// @notice Removed function being left here to not corrupt the IDAO interface ID. Any call will revert.\\n /// @dev Introduced in v1.0.0. Removed in v1.4.0.\\n function setSignatureValidator(address) external;\\n}\\n\",\"keccak256\":\"0xb7f615523c26de042edce98731c658f44a1edb2464387ac1b642c4c69f57128e\",\"license\":\"AGPL-3.0-or-later\"},\"src/mocks/plugin/PluginUUPSUpgradeableMock.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\n/* solhint-disable one-contract-per-file */\\npragma solidity ^0.8.8;\\n\\nimport {PluginUUPSUpgradeable} from \\\"../../plugin/PluginUUPSUpgradeable.sol\\\";\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice A mock upgradeable plugin to be deployed via the UUPS proxy pattern.\\n/// v1.1 (Release 1, Build 1)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableMockBuild1 is PluginUUPSUpgradeable {\\n uint256 public state1;\\n\\n function initialize(IDAO _dao) external initializer {\\n __PluginUUPSUpgradeable_init(_dao);\\n state1 = 1;\\n }\\n}\\n\\n/// @notice A mock upgradeable plugin to be deployed via the UUPS proxy pattern.\\n/// v1.1 (Release 1, Build 2)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableMockBuild2 is PluginUUPSUpgradeable {\\n uint256 public state1;\\n uint256 public state2;\\n\\n function initialize(IDAO _dao) external reinitializer(2) {\\n __PluginUUPSUpgradeable_init(_dao);\\n state1 = 1;\\n state2 = 2;\\n }\\n\\n function initializeFrom(uint16 _previousBuild) external reinitializer(2) {\\n if (_previousBuild < 2) {\\n state2 = 2;\\n }\\n }\\n}\\n\\n/// @notice A mock upgradeable plugin to be deployed via the UUPS proxy pattern.\\n/// v1.1 (Release 1, Build 3)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableMockBuild3 is PluginUUPSUpgradeable {\\n uint256 public state1;\\n uint256 public state2;\\n uint256 public state3;\\n\\n function initialize(IDAO _dao) external reinitializer(3) {\\n __PluginUUPSUpgradeable_init(_dao);\\n state1 = 1;\\n state2 = 2;\\n state3 = 3;\\n }\\n\\n function initializeFrom(uint16 _previousBuild) external reinitializer(3) {\\n if (_previousBuild < 2) {\\n state2 = 2;\\n }\\n if (_previousBuild < 3) {\\n state3 = 3;\\n }\\n }\\n}\\n\\n/// @notice A mock upgradeable plugin missing an initializer function.\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableMockBad is PluginUUPSUpgradeable {\\n uint256 public state1;\\n\\n function notAnInitializer(IDAO _dao) external {\\n __PluginUUPSUpgradeable_init(_dao);\\n state1 = 1;\\n }\\n}\\n\",\"keccak256\":\"0x2917df3b1da0de27f58cf531afeaa4e6c4285717247cbdd9ecc7880ae5cb9cb0\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/DaoAuthorizableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ContextUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\\\";\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\nimport {_auth} from \\\"./auth.sol\\\";\\n\\n/// @title DaoAuthorizableUpgradeable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract contract providing a meta-transaction compatible modifier for upgradeable or cloneable contracts to authorize function calls through an associated DAO.\\n/// @dev Make sure to call `__DaoAuthorizableUpgradeable_init` during initialization of the inheriting contract.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract DaoAuthorizableUpgradeable is ContextUpgradeable {\\n /// @notice The associated DAO managing the permissions of inheriting contracts.\\n IDAO private dao_;\\n\\n /// @notice Initializes the contract by setting the associated DAO.\\n /// @param _dao The associated DAO address.\\n // solhint-disable-next-line func-name-mixedcase\\n function __DaoAuthorizableUpgradeable_init(IDAO _dao) internal onlyInitializing {\\n dao_ = _dao;\\n }\\n\\n /// @notice Returns the DAO contract.\\n /// @return The DAO contract.\\n function dao() public view returns (IDAO) {\\n return dao_;\\n }\\n\\n /// @notice A modifier to make functions on inheriting contracts authorized. Permissions to call the function are checked through the associated DAO's permission manager.\\n /// @param _permissionId The permission identifier required to call the method this modifier is applied to.\\n modifier auth(bytes32 _permissionId) {\\n _auth(dao_, address(this), _msgSender(), _permissionId, _msgData());\\n _;\\n }\\n\\n /// @notice This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain (see [OpenZeppelin's guide about storage gaps](https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps)).\\n uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0x7fac6b01b037ba1cb9d6a22d3f43b0785037dcf496ffb672434d9bf7227d2585\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/auth.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice Thrown if a call is unauthorized in the associated DAO.\\n/// @param dao The associated DAO.\\n/// @param where The context in which the authorization reverted.\\n/// @param who The address (EOA or contract) missing the permission.\\n/// @param permissionId The permission identifier.\\nerror DaoUnauthorized(address dao, address where, address who, bytes32 permissionId);\\n\\n/// @notice A free function checking if a caller is granted permissions on a target contract via a permission identifier that redirects the approval to a `PermissionCondition` if this was specified in the setup.\\n/// @param _where The address of the target contract for which `who` receives permission.\\n/// @param _who The address (EOA or contract) owning the permission.\\n/// @param _permissionId The permission identifier.\\n/// @param _data The optional data passed to the `PermissionCondition` registered.\\n/// @custom:security-contact sirt@aragon.org\\nfunction _auth(\\n IDAO _dao,\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes calldata _data\\n) view {\\n if (!_dao.hasPermission(_where, _who, _permissionId, _data))\\n revert DaoUnauthorized({\\n dao: address(_dao),\\n where: _where,\\n who: _who,\\n permissionId: _permissionId\\n });\\n}\\n\",\"keccak256\":\"0x878764b4f87fe0651fb3798fb9cb87c952f8c6caf6ae79c7f09de84df6c00298\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/IPlugin.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IPlugin\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the traits of a plugin.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IPlugin {\\n enum PluginType {\\n UUPS,\\n Cloneable,\\n Constructable\\n }\\n\\n /// @notice Returns the plugin's type\\n function pluginType() external view returns (PluginType);\\n}\\n\",\"keccak256\":\"0xc57cd0d10b6380ab7f54c713a509e88fd8f4ad9288313a0e8e12b8887817ddfe\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/PluginUUPSUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {UUPSUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\\\";\\nimport {IERC1822ProxiableUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport {ERC165Upgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\\\";\\n\\nimport {IProtocolVersion} from \\\"../utils/versioning/IProtocolVersion.sol\\\";\\nimport {ProtocolVersion} from \\\"../utils/versioning/ProtocolVersion.sol\\\";\\nimport {DaoAuthorizableUpgradeable} from \\\"../permission/auth/DaoAuthorizableUpgradeable.sol\\\";\\nimport {IDAO} from \\\"../dao/IDAO.sol\\\";\\nimport {IPlugin} from \\\"./IPlugin.sol\\\";\\n\\n/// @title PluginUUPSUpgradeable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract, upgradeable contract to inherit from when creating a plugin being deployed via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract PluginUUPSUpgradeable is\\n IPlugin,\\n ERC165Upgradeable,\\n UUPSUpgradeable,\\n DaoAuthorizableUpgradeable,\\n ProtocolVersion\\n{\\n // NOTE: When adding new state variables to the contract, the size of `_gap` has to be adapted below as well.\\n\\n /// @notice Disables the initializers on the implementation contract to prevent it from being left uninitialized.\\n /// @custom:oz-upgrades-unsafe-allow constructor\\n constructor() {\\n _disableInitializers();\\n }\\n\\n /// @inheritdoc IPlugin\\n function pluginType() public pure override returns (PluginType) {\\n return PluginType.UUPS;\\n }\\n\\n /// @notice The ID of the permission required to call the `_authorizeUpgrade` function.\\n bytes32 public constant UPGRADE_PLUGIN_PERMISSION_ID = keccak256(\\\"UPGRADE_PLUGIN_PERMISSION\\\");\\n\\n /// @notice Initializes the plugin by storing the associated DAO.\\n /// @param _dao The DAO contract.\\n // solhint-disable-next-line func-name-mixedcase\\n function __PluginUUPSUpgradeable_init(IDAO _dao) internal virtual onlyInitializing {\\n __DaoAuthorizableUpgradeable_init(_dao);\\n }\\n\\n /// @notice Checks if an interface is supported by this or its parent contract.\\n /// @param _interfaceId The ID of the interface.\\n /// @return Returns `true` if the interface is supported.\\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\\n return\\n _interfaceId == type(IPlugin).interfaceId ||\\n _interfaceId == type(IProtocolVersion).interfaceId ||\\n _interfaceId == type(IERC1822ProxiableUpgradeable).interfaceId ||\\n super.supportsInterface(_interfaceId);\\n }\\n\\n /// @notice Returns the address of the implementation contract in the [proxy storage slot](https://eips.ethereum.org/EIPS/eip-1967) slot the [UUPS proxy](https://eips.ethereum.org/EIPS/eip-1822) is pointing to.\\n /// @return The address of the implementation contract.\\n function implementation() public view returns (address) {\\n return _getImplementation();\\n }\\n\\n /// @notice Internal method authorizing the upgrade of the contract via the [upgradeability mechanism for UUPS proxies](https://docs.openzeppelin.com/contracts/4.x/api/proxy#UUPSUpgradeable) (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\\n /// @dev The caller must have the `UPGRADE_PLUGIN_PERMISSION_ID` permission.\\n function _authorizeUpgrade(\\n address\\n )\\n internal\\n virtual\\n override\\n auth(UPGRADE_PLUGIN_PERMISSION_ID)\\n // solhint-disable-next-line no-empty-blocks\\n {\\n\\n }\\n\\n /// @notice This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain (see [OpenZeppelin's guide about storage gaps](https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps)).\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x127e7c4f839cb8c8486070990b78e22313f1ff089ffe6a4ff23ae358e48f0037\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/IProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IProtocolVersion\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the semantic Aragon OSx protocol version number.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IProtocolVersion {\\n /// @notice Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\\n /// @return _version Returns the semantic Aragon OSx protocol version number.\\n /// @dev This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\\n function protocolVersion() external view returns (uint8[3] memory _version);\\n}\\n\",\"keccak256\":\"0x00a4da654d21dc1bdadbdc8bd54bb86c378c56f85e461ccc31303628ea621361\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/ProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IProtocolVersion} from \\\"./IProtocolVersion.sol\\\";\\n\\n/// @title ProtocolVersion\\n/// @author Aragon X - 2023\\n/// @notice An abstract, stateless, non-upgradeable contract providing the current Aragon OSx protocol version number.\\n/// @dev Do not add any new variables to this contract that would shift down storage in the inheritance chain.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract ProtocolVersion is IProtocolVersion {\\n // IMPORTANT: Do not add any storage variable, see the above notice.\\n\\n /// @inheritdoc IProtocolVersion\\n function protocolVersion() public pure returns (uint8[3] memory) {\\n return [1, 4, 0];\\n }\\n}\\n\",\"keccak256\":\"0x3975c937be935f687c6b6b8f379071232681e98cf04b175d72781b819ea52bdb\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[{"astId":372,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild1","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":375,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild1","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":2821,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild1","label":"__gap","offset":0,"slot":"1","type":"t_array(t_uint256)50_storage"},{"astId":354,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild1","label":"__gap","offset":0,"slot":"51","type":"t_array(t_uint256)50_storage"},{"astId":670,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild1","label":"__gap","offset":0,"slot":"101","type":"t_array(t_uint256)50_storage"},{"astId":2592,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild1","label":"__gap","offset":0,"slot":"151","type":"t_array(t_uint256)50_storage"},{"astId":13111,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild1","label":"dao_","offset":0,"slot":"201","type":"t_contract(IDAO)10865"},{"astId":13160,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild1","label":"__gap","offset":0,"slot":"202","type":"t_array(t_uint256)49_storage"},{"astId":13632,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild1","label":"__gap","offset":0,"slot":"251","type":"t_array(t_uint256)50_storage"},{"astId":11771,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild1","label":"state1","offset":0,"slot":"301","type":"t_uint256"}],"types":{"t_array(t_uint256)49_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[49]","numberOfBytes":"1568"},"t_array(t_uint256)50_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[50]","numberOfBytes":"1600"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_contract(IDAO)10865":{"encoding":"inplace","label":"contract IDAO","numberOfBytes":"20"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"errors":{"DaoUnauthorized(address,address,address,bytes32)":[{"notice":"Thrown if a call is unauthorized in the associated DAO."}]},"kind":"user","methods":{"UPGRADE_PLUGIN_PERMISSION_ID()":{"notice":"The ID of the permission required to call the `_authorizeUpgrade` function."},"dao()":{"notice":"Returns the DAO contract."},"implementation()":{"notice":"Returns the address of the implementation contract in the [proxy storage slot](https://eips.ethereum.org/EIPS/eip-1967) slot the [UUPS proxy](https://eips.ethereum.org/EIPS/eip-1822) is pointing to."},"pluginType()":{"notice":"Returns the plugin's type"},"protocolVersion()":{"notice":"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with."},"supportsInterface(bytes4)":{"notice":"Checks if an interface is supported by this or its parent contract."}},"notice":"A mock upgradeable plugin to be deployed via the UUPS proxy pattern. v1.1 (Release 1, Build 1)","version":1}},"PluginUUPSUpgradeableMockBuild2":{"abi":[{"inputs":[{"internalType":"address","name":"dao","type":"address"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"name":"DaoUnauthorized","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"beacon","type":"address"}],"name":"BeaconUpgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"inputs":[],"name":"UPGRADE_PLUGIN_PERMISSION_ID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dao","outputs":[{"internalType":"contract IDAO","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IDAO","name":"_dao","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"_previousBuild","type":"uint16"}],"name":"initializeFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pluginType","outputs":[{"internalType":"enum IPlugin.PluginType","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"protocolVersion","outputs":[{"internalType":"uint8[3]","name":"","type":"uint8[3]"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"state1","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"state2","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"}],"name":"upgradeTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"}],"devdoc":{"details":"DO NOT USE IN PRODUCTION!","errors":{"DaoUnauthorized(address,address,address,bytes32)":[{"params":{"dao":"The associated DAO.","permissionId":"The permission identifier.","where":"The context in which the authorization reverted.","who":"The address (EOA or contract) missing the permission."}}]},"kind":"dev","methods":{"dao()":{"returns":{"_0":"The DAO contract."}},"implementation()":{"returns":{"_0":"The address of the implementation contract."}},"protocolVersion()":{"details":"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.","returns":{"_0":"Returns the semantic Aragon OSx protocol version number."}},"proxiableUUID()":{"details":"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier."},"supportsInterface(bytes4)":{"params":{"_interfaceId":"The ID of the interface."},"returns":{"_0":"Returns `true` if the interface is supported."}},"upgradeTo(address)":{"custom:oz-upgrades-unsafe-allow-reachable":"delegatecall","details":"Upgrade the implementation of the proxy to `newImplementation`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."},"upgradeToAndCall(address,bytes)":{"custom:oz-upgrades-unsafe-allow-reachable":"delegatecall","details":"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."}},"version":1},"evm":{"bytecode":{"functionDebugData":{"@_13538":{"entryPoint":null,"id":13538,"parameterSlots":0,"returnSlots":0},"@_disableInitializers_515":{"entryPoint":34,"id":515,"parameterSlots":0,"returnSlots":0},"abi_encode_tuple_t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:608:92","statements":[{"nodeType":"YulBlock","src":"6:3:92","statements":[]},{"body":{"nodeType":"YulBlock","src":"188:229:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"205:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"216:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"198:6:92"},"nodeType":"YulFunctionCall","src":"198:21:92"},"nodeType":"YulExpressionStatement","src":"198:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"239:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"250:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"235:3:92"},"nodeType":"YulFunctionCall","src":"235:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"255:2:92","type":"","value":"39"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"228:6:92"},"nodeType":"YulFunctionCall","src":"228:30:92"},"nodeType":"YulExpressionStatement","src":"228:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"278:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"289:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"274:3:92"},"nodeType":"YulFunctionCall","src":"274:18:92"},{"hexValue":"496e697469616c697a61626c653a20636f6e747261637420697320696e697469","kind":"string","nodeType":"YulLiteral","src":"294:34:92","type":"","value":"Initializable: contract is initi"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"267:6:92"},"nodeType":"YulFunctionCall","src":"267:62:92"},"nodeType":"YulExpressionStatement","src":"267:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"349:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"360:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"345:3:92"},"nodeType":"YulFunctionCall","src":"345:18:92"},{"hexValue":"616c697a696e67","kind":"string","nodeType":"YulLiteral","src":"365:9:92","type":"","value":"alizing"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"338:6:92"},"nodeType":"YulFunctionCall","src":"338:37:92"},"nodeType":"YulExpressionStatement","src":"338:37:92"},{"nodeType":"YulAssignment","src":"384:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"396:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"407:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"392:3:92"},"nodeType":"YulFunctionCall","src":"392:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"384:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"165:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"179:4:92","type":""}],"src":"14:403:92"},{"body":{"nodeType":"YulBlock","src":"519:87:92","statements":[{"nodeType":"YulAssignment","src":"529:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"541:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"552:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"537:3:92"},"nodeType":"YulFunctionCall","src":"537:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"529:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"571:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"586:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"594:4:92","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"582:3:92"},"nodeType":"YulFunctionCall","src":"582:17:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"564:6:92"},"nodeType":"YulFunctionCall","src":"564:36:92"},"nodeType":"YulExpressionStatement","src":"564:36:92"}]},"name":"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"488:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"499:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"510:4:92","type":""}],"src":"422:184:92"}]},"contents":"{\n { }\n function abi_encode_tuple_t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 39)\n mstore(add(headStart, 64), \"Initializable: contract is initi\")\n mstore(add(headStart, 96), \"alizing\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xff))\n }\n}","id":92,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60a06040523060805234801561001457600080fd5b5061001d610022565b6100e1565b600054610100900460ff161561008e5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116146100df576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b60805161122461011860003960008181610423015281816104a80152818161059e01528181610623015261070d01526112246000f3fe6080604052600436106100d25760003560e01c80634f1ef2861161007f5780636accab8c116100595780636accab8c14610209578063c4d66de814610220578063c9c4bfca14610240578063efe51cca1461027457600080fd5b80634f1ef286146101be57806352d1902d146101d15780635c60da1b146101f457600080fd5b80633659cfe6116100b05780633659cfe6146101505780634162169f1461017057806341de6830146101a257600080fd5b806301ffc9a7146100d7578063039a8c501461010c5780632ae9c6001461012e575b600080fd5b3480156100e357600080fd5b506100f76100f2366004610f38565b61028b565b60405190151581526020015b60405180910390f35b34801561011857600080fd5b5061012c610127366004610f62565b6102f7565b005b34801561013a57600080fd5b506101436103ef565b6040516101039190610f86565b34801561015c57600080fd5b5061012c61016b366004610fcf565b610419565b34801561017c57600080fd5b5060c9546001600160a01b03165b6040516001600160a01b039091168152602001610103565b3480156101ae57600080fd5b5060006040516101039190610fec565b61012c6101cc36600461102a565b610594565b3480156101dd57600080fd5b506101e6610700565b604051908152602001610103565b34801561020057600080fd5b5061018a6107c5565b34801561021557600080fd5b506101e661012d5481565b34801561022c57600080fd5b5061012c61023b366004610fcf565b6107fd565b34801561024c57600080fd5b506101e67f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f581565b34801561028057600080fd5b506101e661012e5481565b60006001600160e01b0319821663041de68360e41b14806102bb57506001600160e01b03198216621574e360e91b145b806102d657506001600160e01b031982166352d1902d60e01b145b806102f157506301ffc9a760e01b6001600160e01b03198316145b92915050565b600054600290610100900460ff16158015610319575060005460ff8083169116105b6103815760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805461ffff191660ff831617610100179055600261ffff831610156103a957600261012e555b6000805461ff001916905560405160ff821681527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b6103f7610f1a565b5060408051606081018252600181526004602082015260009181019190915290565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036104a65760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b6064820152608401610378565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166105017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b03161461056c5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b6064820152608401610378565b610575816108e9565b6040805160008082526020820190925261059191839190610926565b50565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036106215760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b6064820152608401610378565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661067c7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b0316146106e75760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b6064820152608401610378565b6106f0826108e9565b6106fc82826001610926565b5050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146107a05760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610378565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b60006107f87f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b600054600290610100900460ff1615801561081f575060005460ff8083169116105b6108825760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610378565b6000805461ffff191660ff83161761010017905561089f82610acb565b600161012d55600261012e556000805461ff001916905560405160ff821681527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020016103e3565b60c9547f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f5906106fc906001600160a01b0316303384600036610b3f565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561095e5761095983610bfb565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156109b8575060408051601f3d908101601f191682019092526109b5918101906110ee565b60015b610a2a5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201527f6f6e206973206e6f7420555550530000000000000000000000000000000000006064820152608401610378565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114610abf5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f7860448201527f6961626c655555494400000000000000000000000000000000000000000000006064820152608401610378565b50610959838383610cc6565b600054610100900460ff16610b365760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610378565b61059181610cf1565b604051637ef7c88360e11b81526001600160a01b0387169063fdef910690610b739088908890889088908890600401611107565b602060405180830381865afa158015610b90573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bb4919061115b565b610bf357604051630cb6f8ed60e21b81526001600160a01b03808816600483015280871660248301528516604482015260648101849052608401610378565b505050505050565b6001600160a01b0381163b610c785760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e7472616374000000000000000000000000000000000000006064820152608401610378565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610ccf83610d8b565b600082511180610cdc5750805b1561095957610ceb8383610dcb565b50505050565b600054610100900460ff16610d5c5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610378565b60c9805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610d9481610bfb565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060610df083836040518060600160405280602781526020016111f160279139610df7565b9392505050565b6060600080856001600160a01b031685604051610e1491906111a1565b600060405180830381855af49150503d8060008114610e4f576040519150601f19603f3d011682016040523d82523d6000602084013e610e54565b606091505b5091509150610e6586838387610e6f565b9695505050505050565b60608315610ede578251600003610ed7576001600160a01b0385163b610ed75760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610378565b5081610ee8565b610ee88383610ef0565b949350505050565b815115610f005781518083602001fd5b8060405162461bcd60e51b815260040161037891906111bd565b60405180606001604052806003906020820280368337509192915050565b600060208284031215610f4a57600080fd5b81356001600160e01b031981168114610df057600080fd5b600060208284031215610f7457600080fd5b813561ffff81168114610df057600080fd5b60608101818360005b6003811015610fb157815160ff16835260209283019290910190600101610f8f565b50505092915050565b6001600160a01b038116811461059157600080fd5b600060208284031215610fe157600080fd5b8135610df081610fba565b602081016003831061100e57634e487b7160e01b600052602160045260246000fd5b91905290565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561103d57600080fd5b823561104881610fba565b9150602083013567ffffffffffffffff8082111561106557600080fd5b818501915085601f83011261107957600080fd5b81358181111561108b5761108b611014565b604051601f8201601f19908116603f011681019083821181831017156110b3576110b3611014565b816040528281528860208487010111156110cc57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60006020828403121561110057600080fd5b5051919050565b60006001600160a01b03808816835280871660208401525084604083015260806060830152826080830152828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b60006020828403121561116d57600080fd5b81518015158114610df057600080fd5b60005b83811015611198578181015183820152602001611180565b50506000910152565b600082516111b381846020870161117d565b9190910192915050565b60208152600082518060208401526111dc81604085016020870161117d565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a","opcodes":"PUSH1 0xA0 PUSH1 0x40 MSTORE ADDRESS PUSH1 0x80 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x14 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1D PUSH2 0x22 JUMP JUMPDEST PUSH2 0xE1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x8E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x27 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320696E697469 PUSH1 0x44 DUP3 ADD MSTORE PUSH7 0x616C697A696E67 PUSH1 0xC8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xFF SWAP1 DUP2 AND EQ PUSH2 0xDF JUMPI PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH2 0x1224 PUSH2 0x118 PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH2 0x423 ADD MSTORE DUP2 DUP2 PUSH2 0x4A8 ADD MSTORE DUP2 DUP2 PUSH2 0x59E ADD MSTORE DUP2 DUP2 PUSH2 0x623 ADD MSTORE PUSH2 0x70D ADD MSTORE PUSH2 0x1224 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xD2 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x4F1EF286 GT PUSH2 0x7F JUMPI DUP1 PUSH4 0x6ACCAB8C GT PUSH2 0x59 JUMPI DUP1 PUSH4 0x6ACCAB8C EQ PUSH2 0x209 JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0x220 JUMPI DUP1 PUSH4 0xC9C4BFCA EQ PUSH2 0x240 JUMPI DUP1 PUSH4 0xEFE51CCA EQ PUSH2 0x274 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x1BE JUMPI DUP1 PUSH4 0x52D1902D EQ PUSH2 0x1D1 JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0x1F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x3659CFE6 GT PUSH2 0xB0 JUMPI DUP1 PUSH4 0x3659CFE6 EQ PUSH2 0x150 JUMPI DUP1 PUSH4 0x4162169F EQ PUSH2 0x170 JUMPI DUP1 PUSH4 0x41DE6830 EQ PUSH2 0x1A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xD7 JUMPI DUP1 PUSH4 0x39A8C50 EQ PUSH2 0x10C JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0x12E JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xE3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF7 PUSH2 0xF2 CALLDATASIZE PUSH1 0x4 PUSH2 0xF38 JUMP JUMPDEST PUSH2 0x28B JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x118 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x12C PUSH2 0x127 CALLDATASIZE PUSH1 0x4 PUSH2 0xF62 JUMP JUMPDEST PUSH2 0x2F7 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x13A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x143 PUSH2 0x3EF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x103 SWAP2 SWAP1 PUSH2 0xF86 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x15C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x12C PUSH2 0x16B CALLDATASIZE PUSH1 0x4 PUSH2 0xFCF JUMP JUMPDEST PUSH2 0x419 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x17C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xC9 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x103 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 PUSH1 0x40 MLOAD PUSH2 0x103 SWAP2 SWAP1 PUSH2 0xFEC JUMP JUMPDEST PUSH2 0x12C PUSH2 0x1CC CALLDATASIZE PUSH1 0x4 PUSH2 0x102A JUMP JUMPDEST PUSH2 0x594 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1E6 PUSH2 0x700 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x103 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x200 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x18A PUSH2 0x7C5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x215 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1E6 PUSH2 0x12D SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x22C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x12C PUSH2 0x23B CALLDATASIZE PUSH1 0x4 PUSH2 0xFCF JUMP JUMPDEST PUSH2 0x7FD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x24C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1E6 PUSH32 0x821B6E3A557148015A918C89E5D092E878A69854A2D1A410635F771BD5A8A3F5 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x280 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1E6 PUSH2 0x12E SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x41DE683 PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x2BB JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x2D6 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x52D1902D PUSH1 0xE0 SHL EQ JUMPDEST DUP1 PUSH2 0x2F1 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x2 SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH2 0x319 JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF DUP1 DUP4 AND SWAP2 AND LT JUMPDEST PUSH2 0x381 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x44 DUP3 ADD MSTORE PUSH14 0x191E481A5B9A5D1A585B1A5E9959 PUSH1 0x92 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH2 0xFFFF NOT AND PUSH1 0xFF DUP4 AND OR PUSH2 0x100 OR SWAP1 SSTORE PUSH1 0x2 PUSH2 0xFFFF DUP4 AND LT ISZERO PUSH2 0x3A9 JUMPI PUSH1 0x2 PUSH2 0x12E SSTORE JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH1 0xFF DUP3 AND DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH2 0x3F7 PUSH2 0xF1A JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x4A6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x19195B1959D85D1958D85B1B PUSH1 0xA2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x378 JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x501 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x56C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x6163746976652070726F7879 PUSH1 0xA0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x378 JUMP JUMPDEST PUSH2 0x575 DUP2 PUSH2 0x8E9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x591 SWAP2 DUP4 SWAP2 SWAP1 PUSH2 0x926 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x621 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x19195B1959D85D1958D85B1B PUSH1 0xA2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x378 JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x67C PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x6E7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x6163746976652070726F7879 PUSH1 0xA0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x378 JUMP JUMPDEST PUSH2 0x6F0 DUP3 PUSH2 0x8E9 JUMP JUMPDEST PUSH2 0x6FC DUP3 DUP3 PUSH1 0x1 PUSH2 0x926 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x7A0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x38 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x555550535570677261646561626C653A206D757374206E6F742062652063616C PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6C6564207468726F7567682064656C656761746563616C6C0000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x378 JUMP JUMPDEST POP PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7F8 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x2 SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH2 0x81F JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF DUP1 DUP4 AND SWAP2 AND LT JUMPDEST PUSH2 0x882 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x44 DUP3 ADD MSTORE PUSH14 0x191E481A5B9A5D1A585B1A5E9959 PUSH1 0x92 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x378 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH2 0xFFFF NOT AND PUSH1 0xFF DUP4 AND OR PUSH2 0x100 OR SWAP1 SSTORE PUSH2 0x89F DUP3 PUSH2 0xACB JUMP JUMPDEST PUSH1 0x1 PUSH2 0x12D SSTORE PUSH1 0x2 PUSH2 0x12E SSTORE PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH1 0xFF DUP3 AND DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH2 0x3E3 JUMP JUMPDEST PUSH1 0xC9 SLOAD PUSH32 0x821B6E3A557148015A918C89E5D092E878A69854A2D1A410635F771BD5A8A3F5 SWAP1 PUSH2 0x6FC SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ADDRESS CALLER DUP5 PUSH1 0x0 CALLDATASIZE PUSH2 0xB3F JUMP JUMPDEST PUSH32 0x4910FDFA16FED3260ED0E7147F7CC6DA11A60208B5B9406D12A635614FFD9143 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x95E JUMPI PUSH2 0x959 DUP4 PUSH2 0xBFB JUMP JUMPDEST POP POP POP JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x52D1902D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x9B8 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x9B5 SWAP2 DUP2 ADD SWAP1 PUSH2 0x10EE JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0xA2A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524331393637557067726164653A206E657720696D706C656D656E74617469 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F6E206973206E6F742055555053000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x378 JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC DUP2 EQ PUSH2 0xABF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524331393637557067726164653A20756E737570706F727465642070726F78 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6961626C65555549440000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x378 JUMP JUMPDEST POP PUSH2 0x959 DUP4 DUP4 DUP4 PUSH2 0xCC6 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0xB36 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x378 JUMP JUMPDEST PUSH2 0x591 DUP2 PUSH2 0xCF1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x7EF7C883 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0xFDEF9106 SWAP1 PUSH2 0xB73 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x1107 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xB90 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xBB4 SWAP2 SWAP1 PUSH2 0x115B JUMP JUMPDEST PUSH2 0xBF3 JUMPI PUSH1 0x40 MLOAD PUSH4 0xCB6F8ED PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND PUSH1 0x4 DUP4 ADD MSTORE DUP1 DUP8 AND PUSH1 0x24 DUP4 ADD MSTORE DUP6 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x84 ADD PUSH2 0x378 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND EXTCODESIZE PUSH2 0xC78 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313936373A206E657720696D706C656D656E746174696F6E206973206E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F74206120636F6E747261637400000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x378 JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xCCF DUP4 PUSH2 0xD8B JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD GT DUP1 PUSH2 0xCDC JUMPI POP DUP1 JUMPDEST ISZERO PUSH2 0x959 JUMPI PUSH2 0xCEB DUP4 DUP4 PUSH2 0xDCB JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0xD5C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x378 JUMP JUMPDEST PUSH1 0xC9 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xD94 DUP2 PUSH2 0xBFB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xDF0 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x11F1 PUSH1 0x27 SWAP2 CODECOPY PUSH2 0xDF7 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0xE14 SWAP2 SWAP1 PUSH2 0x11A1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xE4F JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xE54 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0xE65 DUP7 DUP4 DUP4 DUP8 PUSH2 0xE6F JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0xEDE JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0xED7 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0xED7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x378 JUMP JUMPDEST POP DUP2 PUSH2 0xEE8 JUMP JUMPDEST PUSH2 0xEE8 DUP4 DUP4 PUSH2 0xEF0 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0xF00 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x378 SWAP2 SWAP1 PUSH2 0x11BD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xF4A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0xDF0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xF74 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH2 0xDF0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0xFB1 JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0xF8F JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x591 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xFE1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xDF0 DUP2 PUSH2 0xFBA JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH1 0x3 DUP4 LT PUSH2 0x100E JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 SWAP1 MSTORE SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x103D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x1048 DUP2 PUSH2 0xFBA JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1065 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1079 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x108B JUMPI PUSH2 0x108B PUSH2 0x1014 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x10B3 JUMPI PUSH2 0x10B3 PUSH2 0x1014 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x10CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1100 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND DUP4 MSTORE DUP1 DUP8 AND PUSH1 0x20 DUP5 ADD MSTORE POP DUP5 PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x80 PUSH1 0x60 DUP4 ADD MSTORE DUP3 PUSH1 0x80 DUP4 ADD MSTORE DUP3 DUP5 PUSH1 0xA0 DUP5 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0xA0 DUP5 DUP5 ADD ADD MSTORE PUSH1 0xA0 PUSH1 0x1F NOT PUSH1 0x1F DUP6 ADD AND DUP4 ADD ADD SWAP1 POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x116D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xDF0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1198 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1180 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x11B3 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x117D JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x11DC DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x117D JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A164 PUSH20 0x6F6C6343000811000A0000000000000000000000 ","sourceMap":"755:431:53:-:0;;;1198:4:5;1155:48;;755:431:53;;;;;;;;;-1:-1:-1;1489:22:75;:20;:22::i;:::-;755:431:53;;5939:280:4;6007:13;;;;;;;6006:14;5998:66;;;;-1:-1:-1;;;5998:66:4;;216:2:92;5998:66:4;;;198:21:92;255:2;235:18;;;228:30;294:34;274:18;;;267:62;-1:-1:-1;;;345:18:92;;;338:37;392:19;;5998:66:4;;;;;;;;6078:12;;6094:15;6078:12;;;:31;6074:139;;6125:12;:30;;-1:-1:-1;;6125:30:4;6140:15;6125:30;;;;;;6174:28;;564:36:92;;;6174:28:4;;552:2:92;537:18;6174:28:4;;;;;;;6074:139;5939:280::o;422:184:92:-;755:431:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@UPGRADE_PLUGIN_PERMISSION_ID_13556":{"entryPoint":null,"id":13556,"parameterSlots":0,"returnSlots":0},"@__DaoAuthorizableUpgradeable_init_13125":{"entryPoint":3313,"id":13125,"parameterSlots":1,"returnSlots":0},"@__PluginUUPSUpgradeable_init_13570":{"entryPoint":2763,"id":13570,"parameterSlots":1,"returnSlots":0},"@_auth_13211":{"entryPoint":2879,"id":13211,"parameterSlots":6,"returnSlots":0},"@_authorizeUpgrade_13627":{"entryPoint":2281,"id":13627,"parameterSlots":1,"returnSlots":0},"@_getImplementation_76":{"entryPoint":null,"id":76,"parameterSlots":0,"returnSlots":1},"@_msgData_2579":{"entryPoint":null,"id":2579,"parameterSlots":0,"returnSlots":2},"@_msgSender_2570":{"entryPoint":null,"id":2570,"parameterSlots":0,"returnSlots":1},"@_revert_1000":{"entryPoint":3824,"id":1000,"parameterSlots":2,"returnSlots":0},"@_setImplementation_100":{"entryPoint":3067,"id":100,"parameterSlots":1,"returnSlots":0},"@_upgradeToAndCallUUPS_198":{"entryPoint":2342,"id":198,"parameterSlots":3,"returnSlots":0},"@_upgradeToAndCall_145":{"entryPoint":3270,"id":145,"parameterSlots":3,"returnSlots":0},"@_upgradeTo_115":{"entryPoint":3467,"id":115,"parameterSlots":1,"returnSlots":0},"@dao_13135":{"entryPoint":null,"id":13135,"parameterSlots":0,"returnSlots":1},"@functionDelegateCall_888":{"entryPoint":3531,"id":888,"parameterSlots":2,"returnSlots":1},"@functionDelegateCall_917":{"entryPoint":3575,"id":917,"parameterSlots":3,"returnSlots":1},"@getAddressSlot_2699":{"entryPoint":null,"id":2699,"parameterSlots":1,"returnSlots":1},"@getBooleanSlot_2710":{"entryPoint":null,"id":2710,"parameterSlots":1,"returnSlots":1},"@implementation_13616":{"entryPoint":1989,"id":13616,"parameterSlots":0,"returnSlots":1},"@initializeFrom_11836":{"entryPoint":759,"id":11836,"parameterSlots":1,"returnSlots":0},"@initialize_11818":{"entryPoint":2045,"id":11818,"parameterSlots":1,"returnSlots":0},"@isContract_689":{"entryPoint":null,"id":689,"parameterSlots":1,"returnSlots":1},"@pluginType_13550":{"entryPoint":null,"id":13550,"parameterSlots":0,"returnSlots":1},"@protocolVersion_14765":{"entryPoint":1007,"id":14765,"parameterSlots":0,"returnSlots":1},"@proxiableUUID_616":{"entryPoint":1792,"id":616,"parameterSlots":0,"returnSlots":1},"@state1_11794":{"entryPoint":null,"id":11794,"parameterSlots":0,"returnSlots":0},"@state2_11796":{"entryPoint":null,"id":11796,"parameterSlots":0,"returnSlots":0},"@supportsInterface_13606":{"entryPoint":651,"id":13606,"parameterSlots":1,"returnSlots":1},"@supportsInterface_2816":{"entryPoint":null,"id":2816,"parameterSlots":1,"returnSlots":1},"@upgradeToAndCall_659":{"entryPoint":1428,"id":659,"parameterSlots":2,"returnSlots":0},"@upgradeTo_638":{"entryPoint":1049,"id":638,"parameterSlots":1,"returnSlots":0},"@verifyCallResultFromTarget_956":{"entryPoint":3695,"id":956,"parameterSlots":4,"returnSlots":1},"abi_decode_tuple_t_address":{"entryPoint":4047,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_bytes_memory_ptr":{"entryPoint":4138,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_bool_fromMemory":{"entryPoint":4443,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes32_fromMemory":{"entryPoint":4334,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes4":{"entryPoint":3896,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_contract$_IDAO_$10865":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint16":{"entryPoint":3938,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":4513,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address_t_address_t_address_t_bytes32__to_t_address_t_address_t_address_t_bytes32__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":5,"returnSlots":1},"abi_encode_tuple_t_address_t_address_t_bytes32_t_bytes_calldata_ptr__to_t_address_t_address_t_bytes32_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":4359,"id":null,"parameterSlots":6,"returnSlots":1},"abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed":{"entryPoint":3974,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_contract$_IDAO_$10865__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_enum$_PluginType_$13330__to_t_uint8__fromStack_reversed":{"entryPoint":4076,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":4541,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_36e108fa7a809b52ab1951dd91c117a7bc9ac5250bdf1aa162d4e104f7edf9eb__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_52f1ead4d9653e13afbd2e90ef2587c30187cd50b2e97d784e3f7a7541247434__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_67f0151b4ad1dcfa0e3302a0cd6019f51582ef1807b37dceb00bd852a514f7f4__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_76b6b6debfc5febf101145a79ecf0b0d2e89e397dfdab2bca99888370411152c__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_8e8e2fbcb586f700b5b14e2c4a650c8d83b9773c31c5fe8962070ea544e11f24__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"copy_memory_to_memory_with_cleanup":{"entryPoint":4477,"id":null,"parameterSlots":3,"returnSlots":0},"panic_error_0x41":{"entryPoint":4116,"id":null,"parameterSlots":0,"returnSlots":0},"validator_revert_address":{"entryPoint":4026,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:10793:92","statements":[{"nodeType":"YulBlock","src":"6:3:92","statements":[]},{"body":{"nodeType":"YulBlock","src":"83:217:92","statements":[{"body":{"nodeType":"YulBlock","src":"129:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"138:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"141:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"131:6:92"},"nodeType":"YulFunctionCall","src":"131:12:92"},"nodeType":"YulExpressionStatement","src":"131:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"104:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"113:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"100:3:92"},"nodeType":"YulFunctionCall","src":"100:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"125:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"96:3:92"},"nodeType":"YulFunctionCall","src":"96:32:92"},"nodeType":"YulIf","src":"93:52:92"},{"nodeType":"YulVariableDeclaration","src":"154:36:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"180:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"167:12:92"},"nodeType":"YulFunctionCall","src":"167:23:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"158:5:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"254:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"263:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"266:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"256:6:92"},"nodeType":"YulFunctionCall","src":"256:12:92"},"nodeType":"YulExpressionStatement","src":"256:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"212:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"223:5:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"234:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"239:10:92","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"230:3:92"},"nodeType":"YulFunctionCall","src":"230:20:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"219:3:92"},"nodeType":"YulFunctionCall","src":"219:32:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"209:2:92"},"nodeType":"YulFunctionCall","src":"209:43:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"202:6:92"},"nodeType":"YulFunctionCall","src":"202:51:92"},"nodeType":"YulIf","src":"199:71:92"},{"nodeType":"YulAssignment","src":"279:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"289:5:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"279:6:92"}]}]},"name":"abi_decode_tuple_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"49:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"60:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"72:6:92","type":""}],"src":"14:286:92"},{"body":{"nodeType":"YulBlock","src":"400:92:92","statements":[{"nodeType":"YulAssignment","src":"410:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"422:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"433:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"418:3:92"},"nodeType":"YulFunctionCall","src":"418:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"410:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"452:9:92"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"477:6:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"470:6:92"},"nodeType":"YulFunctionCall","src":"470:14:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"463:6:92"},"nodeType":"YulFunctionCall","src":"463:22:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"445:6:92"},"nodeType":"YulFunctionCall","src":"445:41:92"},"nodeType":"YulExpressionStatement","src":"445:41:92"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"369:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"380:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"391:4:92","type":""}],"src":"305:187:92"},{"body":{"nodeType":"YulBlock","src":"566:203:92","statements":[{"body":{"nodeType":"YulBlock","src":"612:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"621:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"624:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"614:6:92"},"nodeType":"YulFunctionCall","src":"614:12:92"},"nodeType":"YulExpressionStatement","src":"614:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"587:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"596:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"583:3:92"},"nodeType":"YulFunctionCall","src":"583:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"608:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"579:3:92"},"nodeType":"YulFunctionCall","src":"579:32:92"},"nodeType":"YulIf","src":"576:52:92"},{"nodeType":"YulVariableDeclaration","src":"637:36:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"663:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"650:12:92"},"nodeType":"YulFunctionCall","src":"650:23:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"641:5:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"723:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"732:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"735:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"725:6:92"},"nodeType":"YulFunctionCall","src":"725:12:92"},"nodeType":"YulExpressionStatement","src":"725:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"695:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"706:5:92"},{"kind":"number","nodeType":"YulLiteral","src":"713:6:92","type":"","value":"0xffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"702:3:92"},"nodeType":"YulFunctionCall","src":"702:18:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"692:2:92"},"nodeType":"YulFunctionCall","src":"692:29:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"685:6:92"},"nodeType":"YulFunctionCall","src":"685:37:92"},"nodeType":"YulIf","src":"682:57:92"},{"nodeType":"YulAssignment","src":"748:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"758:5:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"748:6:92"}]}]},"name":"abi_decode_tuple_t_uint16","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"532:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"543:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"555:6:92","type":""}],"src":"497:272:92"},{"body":{"nodeType":"YulBlock","src":"917:358:92","statements":[{"nodeType":"YulAssignment","src":"927:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"939:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"950:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"935:3:92"},"nodeType":"YulFunctionCall","src":"935:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"927:4:92"}]},{"nodeType":"YulVariableDeclaration","src":"962:20:92","value":{"name":"headStart","nodeType":"YulIdentifier","src":"973:9:92"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"966:3:92","type":""}]},{"nodeType":"YulAssignment","src":"991:16:92","value":{"name":"headStart","nodeType":"YulIdentifier","src":"998:9:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"991:3:92"}]},{"nodeType":"YulVariableDeclaration","src":"1016:20:92","value":{"name":"value0","nodeType":"YulIdentifier","src":"1030:6:92"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"1020:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"1045:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"1054:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"1049:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"1111:158:92","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1132:3:92"},{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"1147:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1141:5:92"},"nodeType":"YulFunctionCall","src":"1141:13:92"},{"kind":"number","nodeType":"YulLiteral","src":"1156:4:92","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1137:3:92"},"nodeType":"YulFunctionCall","src":"1137:24:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1125:6:92"},"nodeType":"YulFunctionCall","src":"1125:37:92"},"nodeType":"YulExpressionStatement","src":"1125:37:92"},{"nodeType":"YulVariableDeclaration","src":"1175:14:92","value":{"kind":"number","nodeType":"YulLiteral","src":"1185:4:92","type":"","value":"0x20"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"1179:2:92","type":""}]},{"nodeType":"YulAssignment","src":"1202:19:92","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1213:3:92"},{"name":"_1","nodeType":"YulIdentifier","src":"1218:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1209:3:92"},"nodeType":"YulFunctionCall","src":"1209:12:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"1202:3:92"}]},{"nodeType":"YulAssignment","src":"1234:25:92","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"1248:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"1256:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1244:3:92"},"nodeType":"YulFunctionCall","src":"1244:15:92"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"1234:6:92"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"1075:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"1078:4:92","type":"","value":"0x03"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"1072:2:92"},"nodeType":"YulFunctionCall","src":"1072:11:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"1084:18:92","statements":[{"nodeType":"YulAssignment","src":"1086:14:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"1095:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"1098:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1091:3:92"},"nodeType":"YulFunctionCall","src":"1091:9:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"1086:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"1068:3:92","statements":[]},"src":"1064:205:92"}]},"name":"abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"886:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"897:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"908:4:92","type":""}],"src":"774:501:92"},{"body":{"nodeType":"YulBlock","src":"1325:109:92","statements":[{"body":{"nodeType":"YulBlock","src":"1412:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1421:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1424:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1414:6:92"},"nodeType":"YulFunctionCall","src":"1414:12:92"},"nodeType":"YulExpressionStatement","src":"1414:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1348:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1359:5:92"},{"kind":"number","nodeType":"YulLiteral","src":"1366:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1355:3:92"},"nodeType":"YulFunctionCall","src":"1355:54:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1345:2:92"},"nodeType":"YulFunctionCall","src":"1345:65:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1338:6:92"},"nodeType":"YulFunctionCall","src":"1338:73:92"},"nodeType":"YulIf","src":"1335:93:92"}]},"name":"validator_revert_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1314:5:92","type":""}],"src":"1280:154:92"},{"body":{"nodeType":"YulBlock","src":"1509:177:92","statements":[{"body":{"nodeType":"YulBlock","src":"1555:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1564:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1567:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1557:6:92"},"nodeType":"YulFunctionCall","src":"1557:12:92"},"nodeType":"YulExpressionStatement","src":"1557:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1530:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"1539:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1526:3:92"},"nodeType":"YulFunctionCall","src":"1526:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"1551:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1522:3:92"},"nodeType":"YulFunctionCall","src":"1522:32:92"},"nodeType":"YulIf","src":"1519:52:92"},{"nodeType":"YulVariableDeclaration","src":"1580:36:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1606:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1593:12:92"},"nodeType":"YulFunctionCall","src":"1593:23:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"1584:5:92","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1650:5:92"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"1625:24:92"},"nodeType":"YulFunctionCall","src":"1625:31:92"},"nodeType":"YulExpressionStatement","src":"1625:31:92"},{"nodeType":"YulAssignment","src":"1665:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"1675:5:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1665:6:92"}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1475:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1486:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1498:6:92","type":""}],"src":"1439:247:92"},{"body":{"nodeType":"YulBlock","src":"1806:125:92","statements":[{"nodeType":"YulAssignment","src":"1816:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1828:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1839:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1824:3:92"},"nodeType":"YulFunctionCall","src":"1824:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1816:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1858:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1873:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"1881:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1869:3:92"},"nodeType":"YulFunctionCall","src":"1869:55:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1851:6:92"},"nodeType":"YulFunctionCall","src":"1851:74:92"},"nodeType":"YulExpressionStatement","src":"1851:74:92"}]},"name":"abi_encode_tuple_t_contract$_IDAO_$10865__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1775:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1786:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1797:4:92","type":""}],"src":"1691:240:92"},{"body":{"nodeType":"YulBlock","src":"2051:229:92","statements":[{"nodeType":"YulAssignment","src":"2061:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2073:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2084:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2069:3:92"},"nodeType":"YulFunctionCall","src":"2069:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2061:4:92"}]},{"body":{"nodeType":"YulBlock","src":"2129:111:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2150:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2157:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"2162:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2153:3:92"},"nodeType":"YulFunctionCall","src":"2153:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2143:6:92"},"nodeType":"YulFunctionCall","src":"2143:31:92"},"nodeType":"YulExpressionStatement","src":"2143:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2194:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"2197:4:92","type":"","value":"0x21"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2187:6:92"},"nodeType":"YulFunctionCall","src":"2187:15:92"},"nodeType":"YulExpressionStatement","src":"2187:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2222:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2225:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2215:6:92"},"nodeType":"YulFunctionCall","src":"2215:15:92"},"nodeType":"YulExpressionStatement","src":"2215:15:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2109:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"2117:1:92","type":"","value":"3"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2106:2:92"},"nodeType":"YulFunctionCall","src":"2106:13:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2099:6:92"},"nodeType":"YulFunctionCall","src":"2099:21:92"},"nodeType":"YulIf","src":"2096:144:92"},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2256:9:92"},{"name":"value0","nodeType":"YulIdentifier","src":"2267:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2249:6:92"},"nodeType":"YulFunctionCall","src":"2249:25:92"},"nodeType":"YulExpressionStatement","src":"2249:25:92"}]},"name":"abi_encode_tuple_t_enum$_PluginType_$13330__to_t_uint8__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2020:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"2031:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2042:4:92","type":""}],"src":"1936:344:92"},{"body":{"nodeType":"YulBlock","src":"2317:95:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2334:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2341:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"2346:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2337:3:92"},"nodeType":"YulFunctionCall","src":"2337:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2327:6:92"},"nodeType":"YulFunctionCall","src":"2327:31:92"},"nodeType":"YulExpressionStatement","src":"2327:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2374:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"2377:4:92","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2367:6:92"},"nodeType":"YulFunctionCall","src":"2367:15:92"},"nodeType":"YulExpressionStatement","src":"2367:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2398:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2401:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2391:6:92"},"nodeType":"YulFunctionCall","src":"2391:15:92"},"nodeType":"YulExpressionStatement","src":"2391:15:92"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"2285:127:92"},{"body":{"nodeType":"YulBlock","src":"2513:960:92","statements":[{"body":{"nodeType":"YulBlock","src":"2559:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2568:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2571:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2561:6:92"},"nodeType":"YulFunctionCall","src":"2561:12:92"},"nodeType":"YulExpressionStatement","src":"2561:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2534:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"2543:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2530:3:92"},"nodeType":"YulFunctionCall","src":"2530:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"2555:2:92","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2526:3:92"},"nodeType":"YulFunctionCall","src":"2526:32:92"},"nodeType":"YulIf","src":"2523:52:92"},{"nodeType":"YulVariableDeclaration","src":"2584:36:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2610:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2597:12:92"},"nodeType":"YulFunctionCall","src":"2597:23:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"2588:5:92","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2654:5:92"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"2629:24:92"},"nodeType":"YulFunctionCall","src":"2629:31:92"},"nodeType":"YulExpressionStatement","src":"2629:31:92"},{"nodeType":"YulAssignment","src":"2669:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"2679:5:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2669:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"2693:46:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2724:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2735:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2720:3:92"},"nodeType":"YulFunctionCall","src":"2720:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2707:12:92"},"nodeType":"YulFunctionCall","src":"2707:32:92"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"2697:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2748:28:92","value":{"kind":"number","nodeType":"YulLiteral","src":"2758:18:92","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"2752:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"2803:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2812:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2815:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2805:6:92"},"nodeType":"YulFunctionCall","src":"2805:12:92"},"nodeType":"YulExpressionStatement","src":"2805:12:92"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"2791:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"2799:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2788:2:92"},"nodeType":"YulFunctionCall","src":"2788:14:92"},"nodeType":"YulIf","src":"2785:34:92"},{"nodeType":"YulVariableDeclaration","src":"2828:32:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2842:9:92"},{"name":"offset","nodeType":"YulIdentifier","src":"2853:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2838:3:92"},"nodeType":"YulFunctionCall","src":"2838:22:92"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"2832:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"2908:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2917:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2920:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2910:6:92"},"nodeType":"YulFunctionCall","src":"2910:12:92"},"nodeType":"YulExpressionStatement","src":"2910:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"2887:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"2891:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2883:3:92"},"nodeType":"YulFunctionCall","src":"2883:13:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2898:7:92"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2879:3:92"},"nodeType":"YulFunctionCall","src":"2879:27:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2872:6:92"},"nodeType":"YulFunctionCall","src":"2872:35:92"},"nodeType":"YulIf","src":"2869:55:92"},{"nodeType":"YulVariableDeclaration","src":"2933:26:92","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"2956:2:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2943:12:92"},"nodeType":"YulFunctionCall","src":"2943:16:92"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"2937:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"2982:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"2984:16:92"},"nodeType":"YulFunctionCall","src":"2984:18:92"},"nodeType":"YulExpressionStatement","src":"2984:18:92"}]},"condition":{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"2974:2:92"},{"name":"_1","nodeType":"YulIdentifier","src":"2978:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2971:2:92"},"nodeType":"YulFunctionCall","src":"2971:10:92"},"nodeType":"YulIf","src":"2968:36:92"},{"nodeType":"YulVariableDeclaration","src":"3013:17:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3027:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"3023:3:92"},"nodeType":"YulFunctionCall","src":"3023:7:92"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"3017:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3039:23:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3059:2:92","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3053:5:92"},"nodeType":"YulFunctionCall","src":"3053:9:92"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"3043:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3071:71:92","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"3093:6:92"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"3117:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"3121:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3113:3:92"},"nodeType":"YulFunctionCall","src":"3113:13:92"},{"name":"_4","nodeType":"YulIdentifier","src":"3128:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3109:3:92"},"nodeType":"YulFunctionCall","src":"3109:22:92"},{"kind":"number","nodeType":"YulLiteral","src":"3133:2:92","type":"","value":"63"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3105:3:92"},"nodeType":"YulFunctionCall","src":"3105:31:92"},{"name":"_4","nodeType":"YulIdentifier","src":"3138:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3101:3:92"},"nodeType":"YulFunctionCall","src":"3101:40:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3089:3:92"},"nodeType":"YulFunctionCall","src":"3089:53:92"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"3075:10:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"3201:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"3203:16:92"},"nodeType":"YulFunctionCall","src":"3203:18:92"},"nodeType":"YulExpressionStatement","src":"3203:18:92"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"3160:10:92"},{"name":"_1","nodeType":"YulIdentifier","src":"3172:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3157:2:92"},"nodeType":"YulFunctionCall","src":"3157:18:92"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"3180:10:92"},{"name":"memPtr","nodeType":"YulIdentifier","src":"3192:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"3177:2:92"},"nodeType":"YulFunctionCall","src":"3177:22:92"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"3154:2:92"},"nodeType":"YulFunctionCall","src":"3154:46:92"},"nodeType":"YulIf","src":"3151:72:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3239:2:92","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"3243:10:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3232:6:92"},"nodeType":"YulFunctionCall","src":"3232:22:92"},"nodeType":"YulExpressionStatement","src":"3232:22:92"},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"3270:6:92"},{"name":"_3","nodeType":"YulIdentifier","src":"3278:2:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3263:6:92"},"nodeType":"YulFunctionCall","src":"3263:18:92"},"nodeType":"YulExpressionStatement","src":"3263:18:92"},{"body":{"nodeType":"YulBlock","src":"3327:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3336:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3339:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3329:6:92"},"nodeType":"YulFunctionCall","src":"3329:12:92"},"nodeType":"YulExpressionStatement","src":"3329:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"3304:2:92"},{"name":"_3","nodeType":"YulIdentifier","src":"3308:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3300:3:92"},"nodeType":"YulFunctionCall","src":"3300:11:92"},{"kind":"number","nodeType":"YulLiteral","src":"3313:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3296:3:92"},"nodeType":"YulFunctionCall","src":"3296:20:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3318:7:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3293:2:92"},"nodeType":"YulFunctionCall","src":"3293:33:92"},"nodeType":"YulIf","src":"3290:53:92"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"3369:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"3377:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3365:3:92"},"nodeType":"YulFunctionCall","src":"3365:15:92"},{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"3386:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"3390:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3382:3:92"},"nodeType":"YulFunctionCall","src":"3382:11:92"},{"name":"_3","nodeType":"YulIdentifier","src":"3395:2:92"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"3352:12:92"},"nodeType":"YulFunctionCall","src":"3352:46:92"},"nodeType":"YulExpressionStatement","src":"3352:46:92"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"3422:6:92"},{"name":"_3","nodeType":"YulIdentifier","src":"3430:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3418:3:92"},"nodeType":"YulFunctionCall","src":"3418:15:92"},{"kind":"number","nodeType":"YulLiteral","src":"3435:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3414:3:92"},"nodeType":"YulFunctionCall","src":"3414:24:92"},{"kind":"number","nodeType":"YulLiteral","src":"3440:1:92","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3407:6:92"},"nodeType":"YulFunctionCall","src":"3407:35:92"},"nodeType":"YulExpressionStatement","src":"3407:35:92"},{"nodeType":"YulAssignment","src":"3451:16:92","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"3461:6:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"3451:6:92"}]}]},"name":"abi_decode_tuple_t_addresst_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2471:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2482:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2494:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2502:6:92","type":""}],"src":"2417:1056:92"},{"body":{"nodeType":"YulBlock","src":"3579:76:92","statements":[{"nodeType":"YulAssignment","src":"3589:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3601:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3612:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3597:3:92"},"nodeType":"YulFunctionCall","src":"3597:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3589:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3631:9:92"},{"name":"value0","nodeType":"YulIdentifier","src":"3642:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3624:6:92"},"nodeType":"YulFunctionCall","src":"3624:25:92"},"nodeType":"YulExpressionStatement","src":"3624:25:92"}]},"name":"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3548:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3559:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3570:4:92","type":""}],"src":"3478:177:92"},{"body":{"nodeType":"YulBlock","src":"3761:125:92","statements":[{"nodeType":"YulAssignment","src":"3771:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3783:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3794:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3779:3:92"},"nodeType":"YulFunctionCall","src":"3779:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3771:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3813:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3828:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"3836:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3824:3:92"},"nodeType":"YulFunctionCall","src":"3824:55:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3806:6:92"},"nodeType":"YulFunctionCall","src":"3806:74:92"},"nodeType":"YulExpressionStatement","src":"3806:74:92"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3730:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3741:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3752:4:92","type":""}],"src":"3660:226:92"},{"body":{"nodeType":"YulBlock","src":"3992:76:92","statements":[{"nodeType":"YulAssignment","src":"4002:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4014:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4025:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4010:3:92"},"nodeType":"YulFunctionCall","src":"4010:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4002:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4044:9:92"},{"name":"value0","nodeType":"YulIdentifier","src":"4055:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4037:6:92"},"nodeType":"YulFunctionCall","src":"4037:25:92"},"nodeType":"YulExpressionStatement","src":"4037:25:92"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3961:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3972:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3983:4:92","type":""}],"src":"3891:177:92"},{"body":{"nodeType":"YulBlock","src":"4157:177:92","statements":[{"body":{"nodeType":"YulBlock","src":"4203:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4212:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4215:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4205:6:92"},"nodeType":"YulFunctionCall","src":"4205:12:92"},"nodeType":"YulExpressionStatement","src":"4205:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"4178:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"4187:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4174:3:92"},"nodeType":"YulFunctionCall","src":"4174:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"4199:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4170:3:92"},"nodeType":"YulFunctionCall","src":"4170:32:92"},"nodeType":"YulIf","src":"4167:52:92"},{"nodeType":"YulVariableDeclaration","src":"4228:36:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4254:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4241:12:92"},"nodeType":"YulFunctionCall","src":"4241:23:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"4232:5:92","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4298:5:92"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"4273:24:92"},"nodeType":"YulFunctionCall","src":"4273:31:92"},"nodeType":"YulExpressionStatement","src":"4273:31:92"},{"nodeType":"YulAssignment","src":"4313:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"4323:5:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"4313:6:92"}]}]},"name":"abi_decode_tuple_t_contract$_IDAO_$10865","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4123:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"4134:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"4146:6:92","type":""}],"src":"4073:261:92"},{"body":{"nodeType":"YulBlock","src":"4513:236:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4530:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4541:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4523:6:92"},"nodeType":"YulFunctionCall","src":"4523:21:92"},"nodeType":"YulExpressionStatement","src":"4523:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4564:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4575:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4560:3:92"},"nodeType":"YulFunctionCall","src":"4560:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"4580:2:92","type":"","value":"46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4553:6:92"},"nodeType":"YulFunctionCall","src":"4553:30:92"},"nodeType":"YulExpressionStatement","src":"4553:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4603:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4614:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4599:3:92"},"nodeType":"YulFunctionCall","src":"4599:18:92"},{"hexValue":"496e697469616c697a61626c653a20636f6e747261637420697320616c726561","kind":"string","nodeType":"YulLiteral","src":"4619:34:92","type":"","value":"Initializable: contract is alrea"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4592:6:92"},"nodeType":"YulFunctionCall","src":"4592:62:92"},"nodeType":"YulExpressionStatement","src":"4592:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4674:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4685:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4670:3:92"},"nodeType":"YulFunctionCall","src":"4670:18:92"},{"hexValue":"647920696e697469616c697a6564","kind":"string","nodeType":"YulLiteral","src":"4690:16:92","type":"","value":"dy initialized"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4663:6:92"},"nodeType":"YulFunctionCall","src":"4663:44:92"},"nodeType":"YulExpressionStatement","src":"4663:44:92"},{"nodeType":"YulAssignment","src":"4716:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4728:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4739:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4724:3:92"},"nodeType":"YulFunctionCall","src":"4724:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4716:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4490:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4504:4:92","type":""}],"src":"4339:410:92"},{"body":{"nodeType":"YulBlock","src":"4851:87:92","statements":[{"nodeType":"YulAssignment","src":"4861:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4873:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4884:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4869:3:92"},"nodeType":"YulFunctionCall","src":"4869:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4861:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4903:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4918:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"4926:4:92","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4914:3:92"},"nodeType":"YulFunctionCall","src":"4914:17:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4896:6:92"},"nodeType":"YulFunctionCall","src":"4896:36:92"},"nodeType":"YulExpressionStatement","src":"4896:36:92"}]},"name":"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4820:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"4831:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4842:4:92","type":""}],"src":"4754:184:92"},{"body":{"nodeType":"YulBlock","src":"5117:234:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5134:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5145:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5127:6:92"},"nodeType":"YulFunctionCall","src":"5127:21:92"},"nodeType":"YulExpressionStatement","src":"5127:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5168:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5179:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5164:3:92"},"nodeType":"YulFunctionCall","src":"5164:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"5184:2:92","type":"","value":"44"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5157:6:92"},"nodeType":"YulFunctionCall","src":"5157:30:92"},"nodeType":"YulExpressionStatement","src":"5157:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5207:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5218:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5203:3:92"},"nodeType":"YulFunctionCall","src":"5203:18:92"},{"hexValue":"46756e6374696f6e206d7573742062652063616c6c6564207468726f75676820","kind":"string","nodeType":"YulLiteral","src":"5223:34:92","type":"","value":"Function must be called through "}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5196:6:92"},"nodeType":"YulFunctionCall","src":"5196:62:92"},"nodeType":"YulExpressionStatement","src":"5196:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5278:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5289:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5274:3:92"},"nodeType":"YulFunctionCall","src":"5274:18:92"},{"hexValue":"64656c656761746563616c6c","kind":"string","nodeType":"YulLiteral","src":"5294:14:92","type":"","value":"delegatecall"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5267:6:92"},"nodeType":"YulFunctionCall","src":"5267:42:92"},"nodeType":"YulExpressionStatement","src":"5267:42:92"},{"nodeType":"YulAssignment","src":"5318:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5330:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5341:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5326:3:92"},"nodeType":"YulFunctionCall","src":"5326:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5318:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_36e108fa7a809b52ab1951dd91c117a7bc9ac5250bdf1aa162d4e104f7edf9eb__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5094:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5108:4:92","type":""}],"src":"4943:408:92"},{"body":{"nodeType":"YulBlock","src":"5530:234:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5547:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5558:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5540:6:92"},"nodeType":"YulFunctionCall","src":"5540:21:92"},"nodeType":"YulExpressionStatement","src":"5540:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5581:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5592:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5577:3:92"},"nodeType":"YulFunctionCall","src":"5577:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"5597:2:92","type":"","value":"44"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5570:6:92"},"nodeType":"YulFunctionCall","src":"5570:30:92"},"nodeType":"YulExpressionStatement","src":"5570:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5620:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5631:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5616:3:92"},"nodeType":"YulFunctionCall","src":"5616:18:92"},{"hexValue":"46756e6374696f6e206d7573742062652063616c6c6564207468726f75676820","kind":"string","nodeType":"YulLiteral","src":"5636:34:92","type":"","value":"Function must be called through "}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5609:6:92"},"nodeType":"YulFunctionCall","src":"5609:62:92"},"nodeType":"YulExpressionStatement","src":"5609:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5691:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5702:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5687:3:92"},"nodeType":"YulFunctionCall","src":"5687:18:92"},{"hexValue":"6163746976652070726f7879","kind":"string","nodeType":"YulLiteral","src":"5707:14:92","type":"","value":"active proxy"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5680:6:92"},"nodeType":"YulFunctionCall","src":"5680:42:92"},"nodeType":"YulExpressionStatement","src":"5680:42:92"},{"nodeType":"YulAssignment","src":"5731:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5743:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5754:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5739:3:92"},"nodeType":"YulFunctionCall","src":"5739:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5731:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_52f1ead4d9653e13afbd2e90ef2587c30187cd50b2e97d784e3f7a7541247434__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5507:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5521:4:92","type":""}],"src":"5356:408:92"},{"body":{"nodeType":"YulBlock","src":"5943:246:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5960:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5971:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5953:6:92"},"nodeType":"YulFunctionCall","src":"5953:21:92"},"nodeType":"YulExpressionStatement","src":"5953:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5994:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6005:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5990:3:92"},"nodeType":"YulFunctionCall","src":"5990:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"6010:2:92","type":"","value":"56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5983:6:92"},"nodeType":"YulFunctionCall","src":"5983:30:92"},"nodeType":"YulExpressionStatement","src":"5983:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6033:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6044:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6029:3:92"},"nodeType":"YulFunctionCall","src":"6029:18:92"},{"hexValue":"555550535570677261646561626c653a206d757374206e6f742062652063616c","kind":"string","nodeType":"YulLiteral","src":"6049:34:92","type":"","value":"UUPSUpgradeable: must not be cal"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6022:6:92"},"nodeType":"YulFunctionCall","src":"6022:62:92"},"nodeType":"YulExpressionStatement","src":"6022:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6104:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6115:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6100:3:92"},"nodeType":"YulFunctionCall","src":"6100:18:92"},{"hexValue":"6c6564207468726f7567682064656c656761746563616c6c","kind":"string","nodeType":"YulLiteral","src":"6120:26:92","type":"","value":"led through delegatecall"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6093:6:92"},"nodeType":"YulFunctionCall","src":"6093:54:92"},"nodeType":"YulExpressionStatement","src":"6093:54:92"},{"nodeType":"YulAssignment","src":"6156:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6168:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6179:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6164:3:92"},"nodeType":"YulFunctionCall","src":"6164:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6156:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_67f0151b4ad1dcfa0e3302a0cd6019f51582ef1807b37dceb00bd852a514f7f4__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5920:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5934:4:92","type":""}],"src":"5769:420:92"},{"body":{"nodeType":"YulBlock","src":"6275:103:92","statements":[{"body":{"nodeType":"YulBlock","src":"6321:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6330:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6333:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6323:6:92"},"nodeType":"YulFunctionCall","src":"6323:12:92"},"nodeType":"YulExpressionStatement","src":"6323:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"6296:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"6305:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6292:3:92"},"nodeType":"YulFunctionCall","src":"6292:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"6317:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6288:3:92"},"nodeType":"YulFunctionCall","src":"6288:32:92"},"nodeType":"YulIf","src":"6285:52:92"},{"nodeType":"YulAssignment","src":"6346:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6362:9:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6356:5:92"},"nodeType":"YulFunctionCall","src":"6356:16:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"6346:6:92"}]}]},"name":"abi_decode_tuple_t_bytes32_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6241:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"6252:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"6264:6:92","type":""}],"src":"6194:184:92"},{"body":{"nodeType":"YulBlock","src":"6557:236:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6574:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6585:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6567:6:92"},"nodeType":"YulFunctionCall","src":"6567:21:92"},"nodeType":"YulExpressionStatement","src":"6567:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6608:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6619:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6604:3:92"},"nodeType":"YulFunctionCall","src":"6604:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"6624:2:92","type":"","value":"46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6597:6:92"},"nodeType":"YulFunctionCall","src":"6597:30:92"},"nodeType":"YulExpressionStatement","src":"6597:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6647:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6658:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6643:3:92"},"nodeType":"YulFunctionCall","src":"6643:18:92"},{"hexValue":"45524331393637557067726164653a206e657720696d706c656d656e74617469","kind":"string","nodeType":"YulLiteral","src":"6663:34:92","type":"","value":"ERC1967Upgrade: new implementati"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6636:6:92"},"nodeType":"YulFunctionCall","src":"6636:62:92"},"nodeType":"YulExpressionStatement","src":"6636:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6718:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6729:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6714:3:92"},"nodeType":"YulFunctionCall","src":"6714:18:92"},{"hexValue":"6f6e206973206e6f742055555053","kind":"string","nodeType":"YulLiteral","src":"6734:16:92","type":"","value":"on is not UUPS"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6707:6:92"},"nodeType":"YulFunctionCall","src":"6707:44:92"},"nodeType":"YulExpressionStatement","src":"6707:44:92"},{"nodeType":"YulAssignment","src":"6760:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6772:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6783:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6768:3:92"},"nodeType":"YulFunctionCall","src":"6768:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6760:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_8e8e2fbcb586f700b5b14e2c4a650c8d83b9773c31c5fe8962070ea544e11f24__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6534:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6548:4:92","type":""}],"src":"6383:410:92"},{"body":{"nodeType":"YulBlock","src":"6972:231:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6989:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7000:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6982:6:92"},"nodeType":"YulFunctionCall","src":"6982:21:92"},"nodeType":"YulExpressionStatement","src":"6982:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7023:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7034:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7019:3:92"},"nodeType":"YulFunctionCall","src":"7019:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"7039:2:92","type":"","value":"41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7012:6:92"},"nodeType":"YulFunctionCall","src":"7012:30:92"},"nodeType":"YulExpressionStatement","src":"7012:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7062:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7073:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7058:3:92"},"nodeType":"YulFunctionCall","src":"7058:18:92"},{"hexValue":"45524331393637557067726164653a20756e737570706f727465642070726f78","kind":"string","nodeType":"YulLiteral","src":"7078:34:92","type":"","value":"ERC1967Upgrade: unsupported prox"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7051:6:92"},"nodeType":"YulFunctionCall","src":"7051:62:92"},"nodeType":"YulExpressionStatement","src":"7051:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7133:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7144:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7129:3:92"},"nodeType":"YulFunctionCall","src":"7129:18:92"},{"hexValue":"6961626c6555554944","kind":"string","nodeType":"YulLiteral","src":"7149:11:92","type":"","value":"iableUUID"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7122:6:92"},"nodeType":"YulFunctionCall","src":"7122:39:92"},"nodeType":"YulExpressionStatement","src":"7122:39:92"},{"nodeType":"YulAssignment","src":"7170:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7182:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7193:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7178:3:92"},"nodeType":"YulFunctionCall","src":"7178:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7170:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_76b6b6debfc5febf101145a79ecf0b0d2e89e397dfdab2bca99888370411152c__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6949:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6963:4:92","type":""}],"src":"6798:405:92"},{"body":{"nodeType":"YulBlock","src":"7382:233:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7399:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7410:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7392:6:92"},"nodeType":"YulFunctionCall","src":"7392:21:92"},"nodeType":"YulExpressionStatement","src":"7392:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7433:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7444:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7429:3:92"},"nodeType":"YulFunctionCall","src":"7429:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"7449:2:92","type":"","value":"43"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7422:6:92"},"nodeType":"YulFunctionCall","src":"7422:30:92"},"nodeType":"YulExpressionStatement","src":"7422:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7472:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7483:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7468:3:92"},"nodeType":"YulFunctionCall","src":"7468:18:92"},{"hexValue":"496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069","kind":"string","nodeType":"YulLiteral","src":"7488:34:92","type":"","value":"Initializable: contract is not i"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7461:6:92"},"nodeType":"YulFunctionCall","src":"7461:62:92"},"nodeType":"YulExpressionStatement","src":"7461:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7543:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7554:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7539:3:92"},"nodeType":"YulFunctionCall","src":"7539:18:92"},{"hexValue":"6e697469616c697a696e67","kind":"string","nodeType":"YulLiteral","src":"7559:13:92","type":"","value":"nitializing"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7532:6:92"},"nodeType":"YulFunctionCall","src":"7532:41:92"},"nodeType":"YulExpressionStatement","src":"7532:41:92"},{"nodeType":"YulAssignment","src":"7582:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7594:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7605:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7590:3:92"},"nodeType":"YulFunctionCall","src":"7590:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7582:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7359:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7373:4:92","type":""}],"src":"7208:407:92"},{"body":{"nodeType":"YulBlock","src":"7833:472:92","statements":[{"nodeType":"YulVariableDeclaration","src":"7843:52:92","value":{"kind":"number","nodeType":"YulLiteral","src":"7853:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"7847:2:92","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7911:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7926:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"7934:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7922:3:92"},"nodeType":"YulFunctionCall","src":"7922:15:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7904:6:92"},"nodeType":"YulFunctionCall","src":"7904:34:92"},"nodeType":"YulExpressionStatement","src":"7904:34:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7958:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7969:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7954:3:92"},"nodeType":"YulFunctionCall","src":"7954:18:92"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"7978:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"7986:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7974:3:92"},"nodeType":"YulFunctionCall","src":"7974:15:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7947:6:92"},"nodeType":"YulFunctionCall","src":"7947:43:92"},"nodeType":"YulExpressionStatement","src":"7947:43:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8010:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8021:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8006:3:92"},"nodeType":"YulFunctionCall","src":"8006:18:92"},{"name":"value2","nodeType":"YulIdentifier","src":"8026:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7999:6:92"},"nodeType":"YulFunctionCall","src":"7999:34:92"},"nodeType":"YulExpressionStatement","src":"7999:34:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8053:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8064:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8049:3:92"},"nodeType":"YulFunctionCall","src":"8049:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"8069:3:92","type":"","value":"128"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8042:6:92"},"nodeType":"YulFunctionCall","src":"8042:31:92"},"nodeType":"YulExpressionStatement","src":"8042:31:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8093:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8104:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8089:3:92"},"nodeType":"YulFunctionCall","src":"8089:19:92"},{"name":"value4","nodeType":"YulIdentifier","src":"8110:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8082:6:92"},"nodeType":"YulFunctionCall","src":"8082:35:92"},"nodeType":"YulExpressionStatement","src":"8082:35:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8143:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8154:3:92","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8139:3:92"},"nodeType":"YulFunctionCall","src":"8139:19:92"},{"name":"value3","nodeType":"YulIdentifier","src":"8160:6:92"},{"name":"value4","nodeType":"YulIdentifier","src":"8168:6:92"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"8126:12:92"},"nodeType":"YulFunctionCall","src":"8126:49:92"},"nodeType":"YulExpressionStatement","src":"8126:49:92"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8199:9:92"},{"name":"value4","nodeType":"YulIdentifier","src":"8210:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8195:3:92"},"nodeType":"YulFunctionCall","src":"8195:22:92"},{"kind":"number","nodeType":"YulLiteral","src":"8219:3:92","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8191:3:92"},"nodeType":"YulFunctionCall","src":"8191:32:92"},{"kind":"number","nodeType":"YulLiteral","src":"8225:1:92","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8184:6:92"},"nodeType":"YulFunctionCall","src":"8184:43:92"},"nodeType":"YulExpressionStatement","src":"8184:43:92"},{"nodeType":"YulAssignment","src":"8236:63:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8252:9:92"},{"arguments":[{"arguments":[{"name":"value4","nodeType":"YulIdentifier","src":"8271:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"8279:2:92","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8267:3:92"},"nodeType":"YulFunctionCall","src":"8267:15:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8288:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"8284:3:92"},"nodeType":"YulFunctionCall","src":"8284:7:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8263:3:92"},"nodeType":"YulFunctionCall","src":"8263:29:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8248:3:92"},"nodeType":"YulFunctionCall","src":"8248:45:92"},{"kind":"number","nodeType":"YulLiteral","src":"8295:3:92","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8244:3:92"},"nodeType":"YulFunctionCall","src":"8244:55:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"8236:4:92"}]}]},"name":"abi_encode_tuple_t_address_t_address_t_bytes32_t_bytes_calldata_ptr__to_t_address_t_address_t_bytes32_t_bytes_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7770:9:92","type":""},{"name":"value4","nodeType":"YulTypedName","src":"7781:6:92","type":""},{"name":"value3","nodeType":"YulTypedName","src":"7789:6:92","type":""},{"name":"value2","nodeType":"YulTypedName","src":"7797:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"7805:6:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"7813:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7824:4:92","type":""}],"src":"7620:685:92"},{"body":{"nodeType":"YulBlock","src":"8388:199:92","statements":[{"body":{"nodeType":"YulBlock","src":"8434:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8443:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8446:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8436:6:92"},"nodeType":"YulFunctionCall","src":"8436:12:92"},"nodeType":"YulExpressionStatement","src":"8436:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"8409:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"8418:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"8405:3:92"},"nodeType":"YulFunctionCall","src":"8405:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"8430:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"8401:3:92"},"nodeType":"YulFunctionCall","src":"8401:32:92"},"nodeType":"YulIf","src":"8398:52:92"},{"nodeType":"YulVariableDeclaration","src":"8459:29:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8478:9:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"8472:5:92"},"nodeType":"YulFunctionCall","src":"8472:16:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"8463:5:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"8541:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8550:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8553:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8543:6:92"},"nodeType":"YulFunctionCall","src":"8543:12:92"},"nodeType":"YulExpressionStatement","src":"8543:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8510:5:92"},{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8531:5:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"8524:6:92"},"nodeType":"YulFunctionCall","src":"8524:13:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"8517:6:92"},"nodeType":"YulFunctionCall","src":"8517:21:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"8507:2:92"},"nodeType":"YulFunctionCall","src":"8507:32:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"8500:6:92"},"nodeType":"YulFunctionCall","src":"8500:40:92"},"nodeType":"YulIf","src":"8497:60:92"},{"nodeType":"YulAssignment","src":"8566:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"8576:5:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"8566:6:92"}]}]},"name":"abi_decode_tuple_t_bool_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8354:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"8365:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"8377:6:92","type":""}],"src":"8310:277:92"},{"body":{"nodeType":"YulBlock","src":"8777:294:92","statements":[{"nodeType":"YulAssignment","src":"8787:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8799:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8810:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8795:3:92"},"nodeType":"YulFunctionCall","src":"8795:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"8787:4:92"}]},{"nodeType":"YulVariableDeclaration","src":"8823:52:92","value":{"kind":"number","nodeType":"YulLiteral","src":"8833:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"8827:2:92","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8891:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"8906:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"8914:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8902:3:92"},"nodeType":"YulFunctionCall","src":"8902:15:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8884:6:92"},"nodeType":"YulFunctionCall","src":"8884:34:92"},"nodeType":"YulExpressionStatement","src":"8884:34:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8938:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8949:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8934:3:92"},"nodeType":"YulFunctionCall","src":"8934:18:92"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"8958:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"8966:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8954:3:92"},"nodeType":"YulFunctionCall","src":"8954:15:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8927:6:92"},"nodeType":"YulFunctionCall","src":"8927:43:92"},"nodeType":"YulExpressionStatement","src":"8927:43:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8990:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9001:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8986:3:92"},"nodeType":"YulFunctionCall","src":"8986:18:92"},{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"9010:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"9018:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"9006:3:92"},"nodeType":"YulFunctionCall","src":"9006:15:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8979:6:92"},"nodeType":"YulFunctionCall","src":"8979:43:92"},"nodeType":"YulExpressionStatement","src":"8979:43:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9042:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9053:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9038:3:92"},"nodeType":"YulFunctionCall","src":"9038:18:92"},{"name":"value3","nodeType":"YulIdentifier","src":"9058:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9031:6:92"},"nodeType":"YulFunctionCall","src":"9031:34:92"},"nodeType":"YulExpressionStatement","src":"9031:34:92"}]},"name":"abi_encode_tuple_t_address_t_address_t_address_t_bytes32__to_t_address_t_address_t_address_t_bytes32__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8722:9:92","type":""},{"name":"value3","nodeType":"YulTypedName","src":"8733:6:92","type":""},{"name":"value2","nodeType":"YulTypedName","src":"8741:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"8749:6:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"8757:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"8768:4:92","type":""}],"src":"8592:479:92"},{"body":{"nodeType":"YulBlock","src":"9250:235:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9267:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9278:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9260:6:92"},"nodeType":"YulFunctionCall","src":"9260:21:92"},"nodeType":"YulExpressionStatement","src":"9260:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9301:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9312:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9297:3:92"},"nodeType":"YulFunctionCall","src":"9297:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"9317:2:92","type":"","value":"45"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9290:6:92"},"nodeType":"YulFunctionCall","src":"9290:30:92"},"nodeType":"YulExpressionStatement","src":"9290:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9340:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9351:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9336:3:92"},"nodeType":"YulFunctionCall","src":"9336:18:92"},{"hexValue":"455243313936373a206e657720696d706c656d656e746174696f6e206973206e","kind":"string","nodeType":"YulLiteral","src":"9356:34:92","type":"","value":"ERC1967: new implementation is n"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9329:6:92"},"nodeType":"YulFunctionCall","src":"9329:62:92"},"nodeType":"YulExpressionStatement","src":"9329:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9411:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9422:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9407:3:92"},"nodeType":"YulFunctionCall","src":"9407:18:92"},{"hexValue":"6f74206120636f6e7472616374","kind":"string","nodeType":"YulLiteral","src":"9427:15:92","type":"","value":"ot a contract"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9400:6:92"},"nodeType":"YulFunctionCall","src":"9400:43:92"},"nodeType":"YulExpressionStatement","src":"9400:43:92"},{"nodeType":"YulAssignment","src":"9452:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9464:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9475:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9460:3:92"},"nodeType":"YulFunctionCall","src":"9460:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"9452:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9227:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"9241:4:92","type":""}],"src":"9076:409:92"},{"body":{"nodeType":"YulBlock","src":"9556:184:92","statements":[{"nodeType":"YulVariableDeclaration","src":"9566:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"9575:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"9570:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"9635:63:92","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"9660:3:92"},{"name":"i","nodeType":"YulIdentifier","src":"9665:1:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9656:3:92"},"nodeType":"YulFunctionCall","src":"9656:11:92"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"9679:3:92"},{"name":"i","nodeType":"YulIdentifier","src":"9684:1:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9675:3:92"},"nodeType":"YulFunctionCall","src":"9675:11:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"9669:5:92"},"nodeType":"YulFunctionCall","src":"9669:18:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9649:6:92"},"nodeType":"YulFunctionCall","src":"9649:39:92"},"nodeType":"YulExpressionStatement","src":"9649:39:92"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"9596:1:92"},{"name":"length","nodeType":"YulIdentifier","src":"9599:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"9593:2:92"},"nodeType":"YulFunctionCall","src":"9593:13:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"9607:19:92","statements":[{"nodeType":"YulAssignment","src":"9609:15:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"9618:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"9621:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9614:3:92"},"nodeType":"YulFunctionCall","src":"9614:10:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"9609:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"9589:3:92","statements":[]},"src":"9585:113:92"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"9718:3:92"},{"name":"length","nodeType":"YulIdentifier","src":"9723:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9714:3:92"},"nodeType":"YulFunctionCall","src":"9714:16:92"},{"kind":"number","nodeType":"YulLiteral","src":"9732:1:92","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9707:6:92"},"nodeType":"YulFunctionCall","src":"9707:27:92"},"nodeType":"YulExpressionStatement","src":"9707:27:92"}]},"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"9534:3:92","type":""},{"name":"dst","nodeType":"YulTypedName","src":"9539:3:92","type":""},{"name":"length","nodeType":"YulTypedName","src":"9544:6:92","type":""}],"src":"9490:250:92"},{"body":{"nodeType":"YulBlock","src":"9882:150:92","statements":[{"nodeType":"YulVariableDeclaration","src":"9892:27:92","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"9912:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"9906:5:92"},"nodeType":"YulFunctionCall","src":"9906:13:92"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"9896:6:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"9967:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"9975:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9963:3:92"},"nodeType":"YulFunctionCall","src":"9963:17:92"},{"name":"pos","nodeType":"YulIdentifier","src":"9982:3:92"},{"name":"length","nodeType":"YulIdentifier","src":"9987:6:92"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"9928:34:92"},"nodeType":"YulFunctionCall","src":"9928:66:92"},"nodeType":"YulExpressionStatement","src":"9928:66:92"},{"nodeType":"YulAssignment","src":"10003:23:92","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"10014:3:92"},{"name":"length","nodeType":"YulIdentifier","src":"10019:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10010:3:92"},"nodeType":"YulFunctionCall","src":"10010:16:92"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"10003:3:92"}]}]},"name":"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"9858:3:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"9863:6:92","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"9874:3:92","type":""}],"src":"9745:287:92"},{"body":{"nodeType":"YulBlock","src":"10211:179:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10228:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"10239:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10221:6:92"},"nodeType":"YulFunctionCall","src":"10221:21:92"},"nodeType":"YulExpressionStatement","src":"10221:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10262:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"10273:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10258:3:92"},"nodeType":"YulFunctionCall","src":"10258:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"10278:2:92","type":"","value":"29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10251:6:92"},"nodeType":"YulFunctionCall","src":"10251:30:92"},"nodeType":"YulExpressionStatement","src":"10251:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10301:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"10312:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10297:3:92"},"nodeType":"YulFunctionCall","src":"10297:18:92"},{"hexValue":"416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374","kind":"string","nodeType":"YulLiteral","src":"10317:31:92","type":"","value":"Address: call to non-contract"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10290:6:92"},"nodeType":"YulFunctionCall","src":"10290:59:92"},"nodeType":"YulExpressionStatement","src":"10290:59:92"},{"nodeType":"YulAssignment","src":"10358:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10370:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"10381:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10366:3:92"},"nodeType":"YulFunctionCall","src":"10366:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"10358:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"10188:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"10202:4:92","type":""}],"src":"10037:353:92"},{"body":{"nodeType":"YulBlock","src":"10516:275:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10533:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"10544:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10526:6:92"},"nodeType":"YulFunctionCall","src":"10526:21:92"},"nodeType":"YulExpressionStatement","src":"10526:21:92"},{"nodeType":"YulVariableDeclaration","src":"10556:27:92","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"10576:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"10570:5:92"},"nodeType":"YulFunctionCall","src":"10570:13:92"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"10560:6:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10603:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"10614:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10599:3:92"},"nodeType":"YulFunctionCall","src":"10599:18:92"},{"name":"length","nodeType":"YulIdentifier","src":"10619:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10592:6:92"},"nodeType":"YulFunctionCall","src":"10592:34:92"},"nodeType":"YulExpressionStatement","src":"10592:34:92"},{"expression":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"10674:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"10682:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10670:3:92"},"nodeType":"YulFunctionCall","src":"10670:15:92"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10691:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"10702:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10687:3:92"},"nodeType":"YulFunctionCall","src":"10687:18:92"},{"name":"length","nodeType":"YulIdentifier","src":"10707:6:92"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"10635:34:92"},"nodeType":"YulFunctionCall","src":"10635:79:92"},"nodeType":"YulExpressionStatement","src":"10635:79:92"},{"nodeType":"YulAssignment","src":"10723:62:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10739:9:92"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"10758:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"10766:2:92","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10754:3:92"},"nodeType":"YulFunctionCall","src":"10754:15:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10775:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"10771:3:92"},"nodeType":"YulFunctionCall","src":"10771:7:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"10750:3:92"},"nodeType":"YulFunctionCall","src":"10750:29:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10735:3:92"},"nodeType":"YulFunctionCall","src":"10735:45:92"},{"kind":"number","nodeType":"YulLiteral","src":"10782:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10731:3:92"},"nodeType":"YulFunctionCall","src":"10731:54:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"10723:4:92"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"10485:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"10496:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"10507:4:92","type":""}],"src":"10395:396:92"}]},"contents":"{\n { }\n function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n if iszero(eq(value, and(value, shl(224, 0xffffffff)))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function abi_decode_tuple_t_uint16(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n if iszero(eq(value, and(value, 0xffff))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 96)\n let pos := headStart\n pos := headStart\n let srcPtr := value0\n let i := 0\n for { } lt(i, 0x03) { i := add(i, 1) }\n {\n mstore(pos, and(mload(srcPtr), 0xff))\n let _1 := 0x20\n pos := add(pos, _1)\n srcPtr := add(srcPtr, _1)\n }\n }\n function validator_revert_address(value)\n {\n if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n }\n function abi_encode_tuple_t_contract$_IDAO_$10865__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_encode_tuple_t_enum$_PluginType_$13330__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n if iszero(lt(value0, 3))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x21)\n revert(0, 0x24)\n }\n mstore(headStart, value0)\n }\n function panic_error_0x41()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function abi_decode_tuple_t_addresst_bytes_memory_ptr(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n let offset := calldataload(add(headStart, 32))\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n let _2 := add(headStart, offset)\n if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n let _3 := calldataload(_2)\n if gt(_3, _1) { panic_error_0x41() }\n let _4 := not(31)\n let memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n mstore(memPtr, _3)\n if gt(add(add(_2, _3), 32), dataEnd) { revert(0, 0) }\n calldatacopy(add(memPtr, 32), add(_2, 32), _3)\n mstore(add(add(memPtr, _3), 32), 0)\n value1 := memPtr\n }\n function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_decode_tuple_t_contract$_IDAO_$10865(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n }\n function abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 46)\n mstore(add(headStart, 64), \"Initializable: contract is alrea\")\n mstore(add(headStart, 96), \"dy initialized\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xff))\n }\n function abi_encode_tuple_t_stringliteral_36e108fa7a809b52ab1951dd91c117a7bc9ac5250bdf1aa162d4e104f7edf9eb__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 44)\n mstore(add(headStart, 64), \"Function must be called through \")\n mstore(add(headStart, 96), \"delegatecall\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_52f1ead4d9653e13afbd2e90ef2587c30187cd50b2e97d784e3f7a7541247434__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 44)\n mstore(add(headStart, 64), \"Function must be called through \")\n mstore(add(headStart, 96), \"active proxy\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_67f0151b4ad1dcfa0e3302a0cd6019f51582ef1807b37dceb00bd852a514f7f4__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 56)\n mstore(add(headStart, 64), \"UUPSUpgradeable: must not be cal\")\n mstore(add(headStart, 96), \"led through delegatecall\")\n tail := add(headStart, 128)\n }\n function abi_decode_tuple_t_bytes32_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := mload(headStart)\n }\n function abi_encode_tuple_t_stringliteral_8e8e2fbcb586f700b5b14e2c4a650c8d83b9773c31c5fe8962070ea544e11f24__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 46)\n mstore(add(headStart, 64), \"ERC1967Upgrade: new implementati\")\n mstore(add(headStart, 96), \"on is not UUPS\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_76b6b6debfc5febf101145a79ecf0b0d2e89e397dfdab2bca99888370411152c__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 41)\n mstore(add(headStart, 64), \"ERC1967Upgrade: unsupported prox\")\n mstore(add(headStart, 96), \"iableUUID\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 43)\n mstore(add(headStart, 64), \"Initializable: contract is not i\")\n mstore(add(headStart, 96), \"nitializing\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_address_t_address_t_bytes32_t_bytes_calldata_ptr__to_t_address_t_address_t_bytes32_t_bytes_memory_ptr__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n {\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n mstore(add(headStart, 64), value2)\n mstore(add(headStart, 96), 128)\n mstore(add(headStart, 128), value4)\n calldatacopy(add(headStart, 160), value3, value4)\n mstore(add(add(headStart, value4), 160), 0)\n tail := add(add(headStart, and(add(value4, 31), not(31))), 160)\n }\n function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := mload(headStart)\n if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_address_t_address_t_address_t_bytes32__to_t_address_t_address_t_address_t_bytes32__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n {\n tail := add(headStart, 128)\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n mstore(add(headStart, 64), and(value2, _1))\n mstore(add(headStart, 96), value3)\n }\n function abi_encode_tuple_t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 45)\n mstore(add(headStart, 64), \"ERC1967: new implementation is n\")\n mstore(add(headStart, 96), \"ot a contract\")\n tail := add(headStart, 128)\n }\n function copy_memory_to_memory_with_cleanup(src, dst, length)\n {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n mstore(add(dst, length), 0)\n }\n function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n {\n let length := mload(value0)\n copy_memory_to_memory_with_cleanup(add(value0, 0x20), pos, length)\n end := add(pos, length)\n }\n function abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 29)\n mstore(add(headStart, 64), \"Address: call to non-contract\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n mstore(headStart, 32)\n let length := mload(value0)\n mstore(add(headStart, 32), length)\n copy_memory_to_memory_with_cleanup(add(value0, 32), add(headStart, 64), length)\n tail := add(add(headStart, and(add(length, 31), not(31))), 64)\n }\n}","id":92,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{"554":[{"length":32,"start":1059},{"length":32,"start":1192},{"length":32,"start":1438},{"length":32,"start":1571},{"length":32,"start":1805}]},"linkReferences":{},"object":"6080604052600436106100d25760003560e01c80634f1ef2861161007f5780636accab8c116100595780636accab8c14610209578063c4d66de814610220578063c9c4bfca14610240578063efe51cca1461027457600080fd5b80634f1ef286146101be57806352d1902d146101d15780635c60da1b146101f457600080fd5b80633659cfe6116100b05780633659cfe6146101505780634162169f1461017057806341de6830146101a257600080fd5b806301ffc9a7146100d7578063039a8c501461010c5780632ae9c6001461012e575b600080fd5b3480156100e357600080fd5b506100f76100f2366004610f38565b61028b565b60405190151581526020015b60405180910390f35b34801561011857600080fd5b5061012c610127366004610f62565b6102f7565b005b34801561013a57600080fd5b506101436103ef565b6040516101039190610f86565b34801561015c57600080fd5b5061012c61016b366004610fcf565b610419565b34801561017c57600080fd5b5060c9546001600160a01b03165b6040516001600160a01b039091168152602001610103565b3480156101ae57600080fd5b5060006040516101039190610fec565b61012c6101cc36600461102a565b610594565b3480156101dd57600080fd5b506101e6610700565b604051908152602001610103565b34801561020057600080fd5b5061018a6107c5565b34801561021557600080fd5b506101e661012d5481565b34801561022c57600080fd5b5061012c61023b366004610fcf565b6107fd565b34801561024c57600080fd5b506101e67f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f581565b34801561028057600080fd5b506101e661012e5481565b60006001600160e01b0319821663041de68360e41b14806102bb57506001600160e01b03198216621574e360e91b145b806102d657506001600160e01b031982166352d1902d60e01b145b806102f157506301ffc9a760e01b6001600160e01b03198316145b92915050565b600054600290610100900460ff16158015610319575060005460ff8083169116105b6103815760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805461ffff191660ff831617610100179055600261ffff831610156103a957600261012e555b6000805461ff001916905560405160ff821681527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b6103f7610f1a565b5060408051606081018252600181526004602082015260009181019190915290565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036104a65760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b6064820152608401610378565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166105017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b03161461056c5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b6064820152608401610378565b610575816108e9565b6040805160008082526020820190925261059191839190610926565b50565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036106215760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b6064820152608401610378565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661067c7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b0316146106e75760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b6064820152608401610378565b6106f0826108e9565b6106fc82826001610926565b5050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146107a05760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610378565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b60006107f87f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b600054600290610100900460ff1615801561081f575060005460ff8083169116105b6108825760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610378565b6000805461ffff191660ff83161761010017905561089f82610acb565b600161012d55600261012e556000805461ff001916905560405160ff821681527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020016103e3565b60c9547f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f5906106fc906001600160a01b0316303384600036610b3f565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561095e5761095983610bfb565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156109b8575060408051601f3d908101601f191682019092526109b5918101906110ee565b60015b610a2a5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201527f6f6e206973206e6f7420555550530000000000000000000000000000000000006064820152608401610378565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114610abf5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f7860448201527f6961626c655555494400000000000000000000000000000000000000000000006064820152608401610378565b50610959838383610cc6565b600054610100900460ff16610b365760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610378565b61059181610cf1565b604051637ef7c88360e11b81526001600160a01b0387169063fdef910690610b739088908890889088908890600401611107565b602060405180830381865afa158015610b90573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bb4919061115b565b610bf357604051630cb6f8ed60e21b81526001600160a01b03808816600483015280871660248301528516604482015260648101849052608401610378565b505050505050565b6001600160a01b0381163b610c785760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e7472616374000000000000000000000000000000000000006064820152608401610378565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610ccf83610d8b565b600082511180610cdc5750805b1561095957610ceb8383610dcb565b50505050565b600054610100900460ff16610d5c5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610378565b60c9805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610d9481610bfb565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060610df083836040518060600160405280602781526020016111f160279139610df7565b9392505050565b6060600080856001600160a01b031685604051610e1491906111a1565b600060405180830381855af49150503d8060008114610e4f576040519150601f19603f3d011682016040523d82523d6000602084013e610e54565b606091505b5091509150610e6586838387610e6f565b9695505050505050565b60608315610ede578251600003610ed7576001600160a01b0385163b610ed75760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610378565b5081610ee8565b610ee88383610ef0565b949350505050565b815115610f005781518083602001fd5b8060405162461bcd60e51b815260040161037891906111bd565b60405180606001604052806003906020820280368337509192915050565b600060208284031215610f4a57600080fd5b81356001600160e01b031981168114610df057600080fd5b600060208284031215610f7457600080fd5b813561ffff81168114610df057600080fd5b60608101818360005b6003811015610fb157815160ff16835260209283019290910190600101610f8f565b50505092915050565b6001600160a01b038116811461059157600080fd5b600060208284031215610fe157600080fd5b8135610df081610fba565b602081016003831061100e57634e487b7160e01b600052602160045260246000fd5b91905290565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561103d57600080fd5b823561104881610fba565b9150602083013567ffffffffffffffff8082111561106557600080fd5b818501915085601f83011261107957600080fd5b81358181111561108b5761108b611014565b604051601f8201601f19908116603f011681019083821181831017156110b3576110b3611014565b816040528281528860208487010111156110cc57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60006020828403121561110057600080fd5b5051919050565b60006001600160a01b03808816835280871660208401525084604083015260806060830152826080830152828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b60006020828403121561116d57600080fd5b81518015158114610df057600080fd5b60005b83811015611198578181015183820152602001611180565b50506000910152565b600082516111b381846020870161117d565b9190910192915050565b60208152600082518060208401526111dc81604085016020870161117d565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xD2 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x4F1EF286 GT PUSH2 0x7F JUMPI DUP1 PUSH4 0x6ACCAB8C GT PUSH2 0x59 JUMPI DUP1 PUSH4 0x6ACCAB8C EQ PUSH2 0x209 JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0x220 JUMPI DUP1 PUSH4 0xC9C4BFCA EQ PUSH2 0x240 JUMPI DUP1 PUSH4 0xEFE51CCA EQ PUSH2 0x274 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x1BE JUMPI DUP1 PUSH4 0x52D1902D EQ PUSH2 0x1D1 JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0x1F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x3659CFE6 GT PUSH2 0xB0 JUMPI DUP1 PUSH4 0x3659CFE6 EQ PUSH2 0x150 JUMPI DUP1 PUSH4 0x4162169F EQ PUSH2 0x170 JUMPI DUP1 PUSH4 0x41DE6830 EQ PUSH2 0x1A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xD7 JUMPI DUP1 PUSH4 0x39A8C50 EQ PUSH2 0x10C JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0x12E JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xE3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF7 PUSH2 0xF2 CALLDATASIZE PUSH1 0x4 PUSH2 0xF38 JUMP JUMPDEST PUSH2 0x28B JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x118 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x12C PUSH2 0x127 CALLDATASIZE PUSH1 0x4 PUSH2 0xF62 JUMP JUMPDEST PUSH2 0x2F7 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x13A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x143 PUSH2 0x3EF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x103 SWAP2 SWAP1 PUSH2 0xF86 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x15C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x12C PUSH2 0x16B CALLDATASIZE PUSH1 0x4 PUSH2 0xFCF JUMP JUMPDEST PUSH2 0x419 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x17C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xC9 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x103 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 PUSH1 0x40 MLOAD PUSH2 0x103 SWAP2 SWAP1 PUSH2 0xFEC JUMP JUMPDEST PUSH2 0x12C PUSH2 0x1CC CALLDATASIZE PUSH1 0x4 PUSH2 0x102A JUMP JUMPDEST PUSH2 0x594 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1E6 PUSH2 0x700 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x103 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x200 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x18A PUSH2 0x7C5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x215 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1E6 PUSH2 0x12D SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x22C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x12C PUSH2 0x23B CALLDATASIZE PUSH1 0x4 PUSH2 0xFCF JUMP JUMPDEST PUSH2 0x7FD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x24C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1E6 PUSH32 0x821B6E3A557148015A918C89E5D092E878A69854A2D1A410635F771BD5A8A3F5 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x280 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1E6 PUSH2 0x12E SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x41DE683 PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x2BB JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x2D6 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x52D1902D PUSH1 0xE0 SHL EQ JUMPDEST DUP1 PUSH2 0x2F1 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x2 SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH2 0x319 JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF DUP1 DUP4 AND SWAP2 AND LT JUMPDEST PUSH2 0x381 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x44 DUP3 ADD MSTORE PUSH14 0x191E481A5B9A5D1A585B1A5E9959 PUSH1 0x92 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH2 0xFFFF NOT AND PUSH1 0xFF DUP4 AND OR PUSH2 0x100 OR SWAP1 SSTORE PUSH1 0x2 PUSH2 0xFFFF DUP4 AND LT ISZERO PUSH2 0x3A9 JUMPI PUSH1 0x2 PUSH2 0x12E SSTORE JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH1 0xFF DUP3 AND DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH2 0x3F7 PUSH2 0xF1A JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x4A6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x19195B1959D85D1958D85B1B PUSH1 0xA2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x378 JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x501 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x56C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x6163746976652070726F7879 PUSH1 0xA0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x378 JUMP JUMPDEST PUSH2 0x575 DUP2 PUSH2 0x8E9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x591 SWAP2 DUP4 SWAP2 SWAP1 PUSH2 0x926 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x621 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x19195B1959D85D1958D85B1B PUSH1 0xA2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x378 JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x67C PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x6E7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x6163746976652070726F7879 PUSH1 0xA0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x378 JUMP JUMPDEST PUSH2 0x6F0 DUP3 PUSH2 0x8E9 JUMP JUMPDEST PUSH2 0x6FC DUP3 DUP3 PUSH1 0x1 PUSH2 0x926 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x7A0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x38 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x555550535570677261646561626C653A206D757374206E6F742062652063616C PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6C6564207468726F7567682064656C656761746563616C6C0000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x378 JUMP JUMPDEST POP PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7F8 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x2 SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH2 0x81F JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF DUP1 DUP4 AND SWAP2 AND LT JUMPDEST PUSH2 0x882 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x44 DUP3 ADD MSTORE PUSH14 0x191E481A5B9A5D1A585B1A5E9959 PUSH1 0x92 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x378 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH2 0xFFFF NOT AND PUSH1 0xFF DUP4 AND OR PUSH2 0x100 OR SWAP1 SSTORE PUSH2 0x89F DUP3 PUSH2 0xACB JUMP JUMPDEST PUSH1 0x1 PUSH2 0x12D SSTORE PUSH1 0x2 PUSH2 0x12E SSTORE PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH1 0xFF DUP3 AND DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH2 0x3E3 JUMP JUMPDEST PUSH1 0xC9 SLOAD PUSH32 0x821B6E3A557148015A918C89E5D092E878A69854A2D1A410635F771BD5A8A3F5 SWAP1 PUSH2 0x6FC SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ADDRESS CALLER DUP5 PUSH1 0x0 CALLDATASIZE PUSH2 0xB3F JUMP JUMPDEST PUSH32 0x4910FDFA16FED3260ED0E7147F7CC6DA11A60208B5B9406D12A635614FFD9143 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x95E JUMPI PUSH2 0x959 DUP4 PUSH2 0xBFB JUMP JUMPDEST POP POP POP JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x52D1902D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x9B8 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x9B5 SWAP2 DUP2 ADD SWAP1 PUSH2 0x10EE JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0xA2A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524331393637557067726164653A206E657720696D706C656D656E74617469 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F6E206973206E6F742055555053000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x378 JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC DUP2 EQ PUSH2 0xABF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524331393637557067726164653A20756E737570706F727465642070726F78 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6961626C65555549440000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x378 JUMP JUMPDEST POP PUSH2 0x959 DUP4 DUP4 DUP4 PUSH2 0xCC6 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0xB36 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x378 JUMP JUMPDEST PUSH2 0x591 DUP2 PUSH2 0xCF1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x7EF7C883 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0xFDEF9106 SWAP1 PUSH2 0xB73 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x1107 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xB90 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xBB4 SWAP2 SWAP1 PUSH2 0x115B JUMP JUMPDEST PUSH2 0xBF3 JUMPI PUSH1 0x40 MLOAD PUSH4 0xCB6F8ED PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND PUSH1 0x4 DUP4 ADD MSTORE DUP1 DUP8 AND PUSH1 0x24 DUP4 ADD MSTORE DUP6 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x84 ADD PUSH2 0x378 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND EXTCODESIZE PUSH2 0xC78 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313936373A206E657720696D706C656D656E746174696F6E206973206E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F74206120636F6E747261637400000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x378 JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xCCF DUP4 PUSH2 0xD8B JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD GT DUP1 PUSH2 0xCDC JUMPI POP DUP1 JUMPDEST ISZERO PUSH2 0x959 JUMPI PUSH2 0xCEB DUP4 DUP4 PUSH2 0xDCB JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0xD5C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x378 JUMP JUMPDEST PUSH1 0xC9 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xD94 DUP2 PUSH2 0xBFB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xDF0 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x11F1 PUSH1 0x27 SWAP2 CODECOPY PUSH2 0xDF7 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0xE14 SWAP2 SWAP1 PUSH2 0x11A1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xE4F JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xE54 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0xE65 DUP7 DUP4 DUP4 DUP8 PUSH2 0xE6F JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0xEDE JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0xED7 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0xED7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x378 JUMP JUMPDEST POP DUP2 PUSH2 0xEE8 JUMP JUMPDEST PUSH2 0xEE8 DUP4 DUP4 PUSH2 0xEF0 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0xF00 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x378 SWAP2 SWAP1 PUSH2 0x11BD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xF4A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0xDF0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xF74 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH2 0xDF0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0xFB1 JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0xF8F JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x591 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xFE1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xDF0 DUP2 PUSH2 0xFBA JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH1 0x3 DUP4 LT PUSH2 0x100E JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 SWAP1 MSTORE SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x103D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x1048 DUP2 PUSH2 0xFBA JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1065 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1079 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x108B JUMPI PUSH2 0x108B PUSH2 0x1014 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x10B3 JUMPI PUSH2 0x10B3 PUSH2 0x1014 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x10CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1100 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND DUP4 MSTORE DUP1 DUP8 AND PUSH1 0x20 DUP5 ADD MSTORE POP DUP5 PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x80 PUSH1 0x60 DUP4 ADD MSTORE DUP3 PUSH1 0x80 DUP4 ADD MSTORE DUP3 DUP5 PUSH1 0xA0 DUP5 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0xA0 DUP5 DUP5 ADD ADD MSTORE PUSH1 0xA0 PUSH1 0x1F NOT PUSH1 0x1F DUP6 ADD AND DUP4 ADD ADD SWAP1 POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x116D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xDF0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1198 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1180 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x11B3 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x117D JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x11DC DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x117D JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A164 PUSH20 0x6F6C6343000811000A0000000000000000000000 ","sourceMap":"755:431:53:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2358:366:75;;;;;;;;;;-1:-1:-1;2358:366:75;;;;;:::i;:::-;;:::i;:::-;;;470:14:92;;463:22;445:41;;433:2;418:18;2358:366:75;;;;;;;;1036:148:53;;;;;;;;;;-1:-1:-1;1036:148:53;;;;;:::i;:::-;;:::i;:::-;;631:98:90;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;3408:195:5:-;;;;;;;;;;-1:-1:-1;3408:195:5;;;;;:::i;:::-;;:::i;1200:70:67:-;;;;;;;;;;-1:-1:-1;1259:4:67;;-1:-1:-1;;;;;1259:4:67;1200:70;;;-1:-1:-1;;;;;1869:55:92;;;1851:74;;1839:2;1824:18;1200:70:67;1691:240:92;1552:103:75;;;;;;;;;;-1:-1:-1;1604:10:75;1552:103;;;;;;:::i;3922:220:5:-;;;;;;:::i;:::-;;:::i;3027:131::-;;;;;;;;;;;;;:::i;:::-;;;3624:25:92;;;3612:2;3597:18;3027:131:5;3478:177:92;3005:100:75;;;;;;;;;;;;;:::i;827:21:53:-;;;;;;;;;;;;;;;;882:148;;;;;;;;;;-1:-1:-1;882:148:53;;;;;:::i;:::-;;:::i;1753:93:75:-;;;;;;;;;;;;1808:38;1753:93;;854:21:53;;;;;;;;;;;;;;;;2358:366:75;2444:4;-1:-1:-1;;;;;;2479:41:75;;-1:-1:-1;;;2479:41:75;;:107;;-1:-1:-1;;;;;;;2536:50:75;;-1:-1:-1;;;2536:50:75;2479:107;:185;;;-1:-1:-1;;;;;;;2602:62:75;;-1:-1:-1;;;2602:62:75;2479:185;:238;;;-1:-1:-1;;;;;;;;;;1189:51:11;;;2680:37:75;2460:257;2358:366;-1:-1:-1;;2358:366:75:o;1036:148:53:-;4882:13:4;;1106:1:53;;4882:13:4;;;;;4881:14;:40;;;;-1:-1:-1;4899:12:4;;:22;;;;:12;;:22;4881:40;4873:99;;;;-1:-1:-1;;;4873:99:4;;4541:2:92;4873:99:4;;;4523:21:92;4580:2;4560:18;;;4553:30;4619:34;4599:18;;;4592:62;-1:-1:-1;;;4670:18:92;;;4663:44;4724:19;;4873:99:4;;;;;;;;;4982:12;:22;;-1:-1:-1;;5014:20:4;4982:22;;;5014:20;4982:22;5014:20;;;1140:1:53::1;1123:18;::::0;::::1;;1119:59;;;1166:1;1157:6;:10:::0;1119:59:::1;5071:5:4::0;5055:21;;-1:-1:-1;;5055:21:4;;;5091:20;;4926:4:92;4914:17;;4896:36;;5091:20:4;;4884:2:92;4869:18;5091:20:4;;;;;;;;1036:148:53;;:::o;631:98:90:-;679:15;;:::i;:::-;-1:-1:-1;706:16:90;;;;;;;;714:1;706:16;;717:1;706:16;;;;-1:-1:-1;706:16:90;;;;;;;;631:98::o;3408:195:5:-;-1:-1:-1;;;;;1764:6:5;1747:23;1755:4;1747:23;1739:80;;;;-1:-1:-1;;;1739:80:5;;5145:2:92;1739:80:5;;;5127:21:92;5184:2;5164:18;;;5157:30;5223:34;5203:18;;;5196:62;-1:-1:-1;;;5274:18:92;;;5267:42;5326:19;;1739:80:5;4943:408:92;1739:80:5;1861:6;-1:-1:-1;;;;;1837:30:5;:20;1180:66:2;1557:65;-1:-1:-1;;;;;1557:65:2;;1478:151;1837:20:5;-1:-1:-1;;;;;1837:30:5;;1829:87;;;;-1:-1:-1;;;1829:87:5;;5558:2:92;1829:87:5;;;5540:21:92;5597:2;5577:18;;;5570:30;5636:34;5616:18;;;5609:62;-1:-1:-1;;;5687:18:92;;;5680:42;5739:19;;1829:87:5;5356:408:92;1829:87:5;3489:36:::1;3507:17;3489;:36::i;:::-;3576:12;::::0;;3586:1:::1;3576:12:::0;;;::::1;::::0;::::1;::::0;;;3535:61:::1;::::0;3557:17;;3576:12;3535:21:::1;:61::i;:::-;3408:195:::0;:::o;3922:220::-;-1:-1:-1;;;;;1764:6:5;1747:23;1755:4;1747:23;1739:80;;;;-1:-1:-1;;;1739:80:5;;5145:2:92;1739:80:5;;;5127:21:92;5184:2;5164:18;;;5157:30;5223:34;5203:18;;;5196:62;-1:-1:-1;;;5274:18:92;;;5267:42;5326:19;;1739:80:5;4943:408:92;1739:80:5;1861:6;-1:-1:-1;;;;;1837:30:5;:20;1180:66:2;1557:65;-1:-1:-1;;;;;1557:65:2;;1478:151;1837:20:5;-1:-1:-1;;;;;1837:30:5;;1829:87;;;;-1:-1:-1;;;1829:87:5;;5558:2:92;1829:87:5;;;5540:21:92;5597:2;5577:18;;;5570:30;5636:34;5616:18;;;5609:62;-1:-1:-1;;;5687:18:92;;;5680:42;5739:19;;1829:87:5;5356:408:92;1829:87:5;4037:36:::1;4055:17;4037;:36::i;:::-;4083:52;4105:17;4124:4;4130;4083:21;:52::i;:::-;3922:220:::0;;:::o;3027:131::-;3105:7;2190:4;-1:-1:-1;;;;;2199:6:5;2182:23;;2174:92;;;;-1:-1:-1;;;2174:92:5;;5971:2:92;2174:92:5;;;5953:21:92;6010:2;5990:18;;;5983:30;6049:34;6029:18;;;6022:62;6120:26;6100:18;;;6093:54;6164:19;;2174:92:5;5769:420:92;2174:92:5;-1:-1:-1;1180:66:2::1;3027:131:5::0;:::o;3005:100:75:-;3052:7;3078:20;1180:66:2;1557:65;-1:-1:-1;;;;;1557:65:2;;1478:151;3078:20:75;3071:27;;3005:100;:::o;882:148:53:-;4882:13:4;;936:1:53;;4882:13:4;;;;;4881:14;:40;;;;-1:-1:-1;4899:12:4;;:22;;;;:12;;:22;4881:40;4873:99;;;;-1:-1:-1;;;4873:99:4;;4541:2:92;4873:99:4;;;4523:21:92;4580:2;4560:18;;;4553:30;4619:34;4599:18;;;4592:62;-1:-1:-1;;;4670:18:92;;;4663:44;4724:19;;4873:99:4;4339:410:92;4873:99:4;4982:12;:22;;-1:-1:-1;;5014:20:4;4982:22;;;5014:20;4982:22;5014:20;;;949:34:53::1;978:4:::0;949:28:::1;:34::i;:::-;1002:1;993:6;:10:::0;1022:1:::1;1013:6;:10:::0;-1:-1:-1;5055:21:4;;-1:-1:-1;;5055:21:4;;;5091:20;;4926:4:92;4914:17;;4896:36;;5091:20:4;;4884:2:92;4869:18;5091:20:4;4754:184:92;3446:204:75;1616:4:67;;1808:38:75;;1610:67:67;;-1:-1:-1;;;;;1616:4:67;1630;965:10:8;1651:13:67;1039:14:8;;1610:5:67;:67::i;2841:944:2:-;839:66;3257:59;;;3253:526;;;3332:37;3351:17;3332:18;:37::i;:::-;2841:944;;;:::o;3253:526::-;3433:17;-1:-1:-1;;;;;3404:61:2;;:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3404:63:2;;;;;;;;-1:-1:-1;;3404:63:2;;;;;;;;;;;;:::i;:::-;;;3400:302;;3631:56;;-1:-1:-1;;;3631:56:2;;6585:2:92;3631:56:2;;;6567:21:92;6624:2;6604:18;;;6597:30;6663:34;6643:18;;;6636:62;6734:16;6714:18;;;6707:44;6768:19;;3631:56:2;6383:410:92;3400:302:2;1180:66;3517:28;;3509:82;;;;-1:-1:-1;;;3509:82:2;;7000:2:92;3509:82:2;;;6982:21:92;7039:2;7019:18;;;7012:30;7078:34;7058:18;;;7051:62;7149:11;7129:18;;;7122:39;7178:19;;3509:82:2;6798:405:92;3509:82:2;3468:138;3715:53;3733:17;3752:4;3758:9;3715:17;:53::i;2014:139:75:-;5374:13:4;;;;;;;5366:69;;;;-1:-1:-1;;;5366:69:4;;7410:2:92;5366:69:4;;;7392:21:92;7449:2;7429:18;;;7422:30;7488:34;7468:18;;;7461:62;-1:-1:-1;;;7539:18:92;;;7532:41;7590:19;;5366:69:4;7208:407:92;5366:69:4;2107:39:75::1;2141:4;2107:33;:39::i;1041:363:68:-:0;1180:54;;-1:-1:-1;;;1180:54:68;;-1:-1:-1;;;;;1180:18:68;;;;;:54;;1199:6;;1207:4;;1213:13;;1228:5;;;;1180:54;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1175:226;;1251:150;;-1:-1:-1;;;1251:150:68;;-1:-1:-1;;;;;8902:15:92;;;1251:150:68;;;8884:34:92;8954:15;;;8934:18;;;8927:43;9006:15;;8986:18;;;8979:43;9038:18;;;9031:34;;;8795:19;;1251:150:68;8592:479:92;1175:226:68;1041:363;;;;;;:::o;1720:281:2:-;-1:-1:-1;;;;;1713:19:6;;;1793:106:2;;;;-1:-1:-1;;;1793:106:2;;9278:2:92;1793:106:2;;;9260:21:92;9317:2;9297:18;;;9290:30;9356:34;9336:18;;;9329:62;9427:15;9407:18;;;9400:43;9460:19;;1793:106:2;9076:409:92;1793:106:2;1180:66;1909:85;;-1:-1:-1;;1909:85:2;-1:-1:-1;;;;;1909:85:2;;;;;;;;;;1720:281::o;2393:276::-;2501:29;2512:17;2501:10;:29::i;:::-;2558:1;2544:4;:11;:15;:28;;;;2563:9;2544:28;2540:123;;;2588:64;2628:17;2647:4;2588:39;:64::i;:::-;;2393:276;;;:::o;1010:108:67:-;5374:13:4;;;;;;;5366:69;;;;-1:-1:-1;;;5366:69:4;;7410:2:92;5366:69:4;;;7392:21:92;7449:2;7429:18;;;7422:30;7488:34;7468:18;;;7461:62;-1:-1:-1;;;7539:18:92;;;7532:41;7590:19;;5366:69:4;7208:407:92;5366:69:4;1100:4:67::1;:11:::0;;-1:-1:-1;;1100:11:67::1;-1:-1:-1::0;;;;;1100:11:67;;;::::1;::::0;;;::::1;::::0;;1010:108::o;2107:152:2:-;2173:37;2192:17;2173:18;:37::i;:::-;2225:27;;-1:-1:-1;;;;;2225:27:2;;;;;;;;2107:152;:::o;6685:198:6:-;6768:12;6799:77;6820:6;6828:4;6799:77;;;;;;;;;;;;;;;;;:20;:77::i;:::-;6792:84;6685:198;-1:-1:-1;;;6685:198:6:o;7069:325::-;7210:12;7235;7249:23;7276:6;-1:-1:-1;;;;;7276:19:6;7296:4;7276:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7234:67;;;;7318:69;7345:6;7353:7;7362:10;7374:12;7318:26;:69::i;:::-;7311:76;7069:325;-1:-1:-1;;;;;;7069:325:6:o;7682:628::-;7862:12;7890:7;7886:418;;;7917:10;:17;7938:1;7917:22;7913:286;;-1:-1:-1;;;;;1713:19:6;;;8124:60;;;;-1:-1:-1;;;8124:60:6;;10239:2:92;8124:60:6;;;10221:21:92;10278:2;10258:18;;;10251:30;10317:31;10297:18;;;10290:59;10366:18;;8124:60:6;10037:353:92;8124:60:6;-1:-1:-1;8219:10:6;8212:17;;7886:418;8260:33;8268:10;8280:12;8260:7;:33::i;:::-;7682:628;;;;;;:::o;8832:540::-;8991:17;;:21;8987:379;;9219:10;9213:17;9275:15;9262:10;9258:2;9254:19;9247:44;8987:379;9342:12;9335:20;;-1:-1:-1;;;9335:20:6;;;;;;;;:::i;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:286:92:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:92;;209:43;;199:71;;266:1;263;256:12;497:272;555:6;608:2;596:9;587:7;583:23;579:32;576:52;;;624:1;621;614:12;576:52;663:9;650:23;713:6;706:5;702:18;695:5;692:29;682:57;;735:1;732;725:12;774:501;950:2;935:18;;939:9;1030:6;908:4;1064:205;1078:4;1075:1;1072:11;1064:205;;;1141:13;;1156:4;1137:24;1125:37;;1185:4;1209:12;;;;1244:15;;;;1098:1;1091:9;1064:205;;;1068:3;;;774:501;;;;:::o;1280:154::-;-1:-1:-1;;;;;1359:5:92;1355:54;1348:5;1345:65;1335:93;;1424:1;1421;1414:12;1439:247;1498:6;1551:2;1539:9;1530:7;1526:23;1522:32;1519:52;;;1567:1;1564;1557:12;1519:52;1606:9;1593:23;1625:31;1650:5;1625:31;:::i;1936:344::-;2084:2;2069:18;;2117:1;2106:13;;2096:144;;2162:10;2157:3;2153:20;2150:1;2143:31;2197:4;2194:1;2187:15;2225:4;2222:1;2215:15;2096:144;2249:25;;;1936:344;:::o;2285:127::-;2346:10;2341:3;2337:20;2334:1;2327:31;2377:4;2374:1;2367:15;2401:4;2398:1;2391:15;2417:1056;2494:6;2502;2555:2;2543:9;2534:7;2530:23;2526:32;2523:52;;;2571:1;2568;2561:12;2523:52;2610:9;2597:23;2629:31;2654:5;2629:31;:::i;:::-;2679:5;-1:-1:-1;2735:2:92;2720:18;;2707:32;2758:18;2788:14;;;2785:34;;;2815:1;2812;2805:12;2785:34;2853:6;2842:9;2838:22;2828:32;;2898:7;2891:4;2887:2;2883:13;2879:27;2869:55;;2920:1;2917;2910:12;2869:55;2956:2;2943:16;2978:2;2974;2971:10;2968:36;;;2984:18;;:::i;:::-;3059:2;3053:9;3027:2;3113:13;;-1:-1:-1;;3109:22:92;;;3133:2;3105:31;3101:40;3089:53;;;3157:18;;;3177:22;;;3154:46;3151:72;;;3203:18;;:::i;:::-;3243:10;3239:2;3232:22;3278:2;3270:6;3263:18;3318:7;3313:2;3308;3304;3300:11;3296:20;3293:33;3290:53;;;3339:1;3336;3329:12;3290:53;3395:2;3390;3386;3382:11;3377:2;3369:6;3365:15;3352:46;3440:1;3435:2;3430;3422:6;3418:15;3414:24;3407:35;3461:6;3451:16;;;;;;;2417:1056;;;;;:::o;6194:184::-;6264:6;6317:2;6305:9;6296:7;6292:23;6288:32;6285:52;;;6333:1;6330;6323:12;6285:52;-1:-1:-1;6356:16:92;;6194:184;-1:-1:-1;6194:184:92:o;7620:685::-;7824:4;-1:-1:-1;;;;;7934:2:92;7926:6;7922:15;7911:9;7904:34;7986:2;7978:6;7974:15;7969:2;7958:9;7954:18;7947:43;;8026:6;8021:2;8010:9;8006:18;7999:34;8069:3;8064:2;8053:9;8049:18;8042:31;8110:6;8104:3;8093:9;8089:19;8082:35;8168:6;8160;8154:3;8143:9;8139:19;8126:49;8225:1;8219:3;8210:6;8199:9;8195:22;8191:32;8184:43;8295:3;8288:2;8284:7;8279:2;8271:6;8267:15;8263:29;8252:9;8248:45;8244:55;8236:63;;7620:685;;;;;;;;:::o;8310:277::-;8377:6;8430:2;8418:9;8409:7;8405:23;8401:32;8398:52;;;8446:1;8443;8436:12;8398:52;8478:9;8472:16;8531:5;8524:13;8517:21;8510:5;8507:32;8497:60;;8553:1;8550;8543:12;9490:250;9575:1;9585:113;9599:6;9596:1;9593:13;9585:113;;;9675:11;;;9669:18;9656:11;;;9649:39;9621:2;9614:10;9585:113;;;-1:-1:-1;;9732:1:92;9714:16;;9707:27;9490:250::o;9745:287::-;9874:3;9912:6;9906:13;9928:66;9987:6;9982:3;9975:4;9967:6;9963:17;9928:66;:::i;:::-;10010:16;;;;;9745:287;-1:-1:-1;;9745:287:92:o;10395:396::-;10544:2;10533:9;10526:21;10507:4;10576:6;10570:13;10619:6;10614:2;10603:9;10599:18;10592:34;10635:79;10707:6;10702:2;10691:9;10687:18;10682:2;10674:6;10670:15;10635:79;:::i;:::-;10775:2;10754:15;-1:-1:-1;;10750:29:92;10735:45;;;;10782:2;10731:54;;10395:396;-1:-1:-1;;10395:396:92:o"},"gasEstimates":{"creation":{"codeDepositCost":"928800","executionCost":"infinite","totalCost":"infinite"},"external":{"UPGRADE_PLUGIN_PERMISSION_ID()":"261","dao()":"2365","implementation()":"2436","initialize(address)":"infinite","initializeFrom(uint16)":"76250","pluginType()":"294","protocolVersion()":"infinite","proxiableUUID()":"infinite","state1()":"2317","state2()":"2383","supportsInterface(bytes4)":"560","upgradeTo(address)":"infinite","upgradeToAndCall(address,bytes)":"infinite"}},"methodIdentifiers":{"UPGRADE_PLUGIN_PERMISSION_ID()":"c9c4bfca","dao()":"4162169f","implementation()":"5c60da1b","initialize(address)":"c4d66de8","initializeFrom(uint16)":"039a8c50","pluginType()":"41de6830","protocolVersion()":"2ae9c600","proxiableUUID()":"52d1902d","state1()":"6accab8c","state2()":"efe51cca","supportsInterface(bytes4)":"01ffc9a7","upgradeTo(address)":"3659cfe6","upgradeToAndCall(address,bytes)":"4f1ef286"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"dao\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"name\":\"DaoUnauthorized\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"UPGRADE_PLUGIN_PERMISSION_ID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"dao\",\"outputs\":[{\"internalType\":\"contract IDAO\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IDAO\",\"name\":\"_dao\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"_previousBuild\",\"type\":\"uint16\"}],\"name\":\"initializeFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pluginType\",\"outputs\":[{\"internalType\":\"enum IPlugin.PluginType\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"protocolVersion\",\"outputs\":[{\"internalType\":\"uint8[3]\",\"name\":\"\",\"type\":\"uint8[3]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"state1\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"state2\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"upgradeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"DO NOT USE IN PRODUCTION!\",\"errors\":{\"DaoUnauthorized(address,address,address,bytes32)\":[{\"params\":{\"dao\":\"The associated DAO.\",\"permissionId\":\"The permission identifier.\",\"where\":\"The context in which the authorization reverted.\",\"who\":\"The address (EOA or contract) missing the permission.\"}}]},\"kind\":\"dev\",\"methods\":{\"dao()\":{\"returns\":{\"_0\":\"The DAO contract.\"}},\"implementation()\":{\"returns\":{\"_0\":\"The address of the implementation contract.\"}},\"protocolVersion()\":{\"details\":\"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\",\"returns\":{\"_0\":\"Returns the semantic Aragon OSx protocol version number.\"}},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"supportsInterface(bytes4)\":{\"params\":{\"_interfaceId\":\"The ID of the interface.\"},\"returns\":{\"_0\":\"Returns `true` if the interface is supported.\"}},\"upgradeTo(address)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"},\"upgradeToAndCall(address,bytes)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"}},\"version\":1},\"userdoc\":{\"errors\":{\"DaoUnauthorized(address,address,address,bytes32)\":[{\"notice\":\"Thrown if a call is unauthorized in the associated DAO.\"}]},\"kind\":\"user\",\"methods\":{\"UPGRADE_PLUGIN_PERMISSION_ID()\":{\"notice\":\"The ID of the permission required to call the `_authorizeUpgrade` function.\"},\"dao()\":{\"notice\":\"Returns the DAO contract.\"},\"implementation()\":{\"notice\":\"Returns the address of the implementation contract in the [proxy storage slot](https://eips.ethereum.org/EIPS/eip-1967) slot the [UUPS proxy](https://eips.ethereum.org/EIPS/eip-1822) is pointing to.\"},\"pluginType()\":{\"notice\":\"Returns the plugin's type\"},\"protocolVersion()\":{\"notice\":\"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Checks if an interface is supported by this or its parent contract.\"}},\"notice\":\"A mock upgradeable plugin to be deployed via the UUPS proxy pattern. v1.1 (Release 1, Build 2)\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/mocks/plugin/PluginUUPSUpgradeableMock.sol\":\"PluginUUPSUpgradeableMockBuild2\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/interfaces/IERC1967Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (interfaces/IERC1967.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\\n *\\n * _Available since v4.8.3._\\n */\\ninterface IERC1967Upgradeable {\\n /**\\n * @dev Emitted when the implementation is upgraded.\\n */\\n event Upgraded(address indexed implementation);\\n\\n /**\\n * @dev Emitted when the admin account has changed.\\n */\\n event AdminChanged(address previousAdmin, address newAdmin);\\n\\n /**\\n * @dev Emitted when the beacon is changed.\\n */\\n event BeaconUpgraded(address indexed beacon);\\n}\\n\",\"keccak256\":\"0x47d6e06872b12e72c79d1b5eb55842f860b5fb1207b2317c2358d2766b950a7b\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822ProxiableUpgradeable {\\n /**\\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n * address.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy.\\n */\\n function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../beacon/IBeaconUpgradeable.sol\\\";\\nimport \\\"../../interfaces/IERC1967Upgradeable.sol\\\";\\nimport \\\"../../interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\nimport \\\"../../utils/StorageSlotUpgradeable.sol\\\";\\nimport {Initializable} from \\\"../utils/Initializable.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n */\\nabstract contract ERC1967UpgradeUpgradeable is Initializable, IERC1967Upgradeable {\\n // This is the keccak-256 hash of \\\"eip1967.proxy.rollback\\\" subtracted by 1\\n bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n /**\\n * @dev Storage slot with the address of the current implementation.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n function __ERC1967Upgrade_init() internal onlyInitializing {\\n }\\n\\n function __ERC1967Upgrade_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _getImplementation() internal view returns (address) {\\n return StorageSlotUpgradeable.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 implementation slot.\\n */\\n function _setImplementation(address newImplementation) private {\\n require(AddressUpgradeable.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n StorageSlotUpgradeable.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n }\\n\\n /**\\n * @dev Perform implementation upgrade\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeTo(address newImplementation) internal {\\n _setImplementation(newImplementation);\\n emit Upgraded(newImplementation);\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCall(address newImplementation, bytes memory data, bool forceCall) internal {\\n _upgradeTo(newImplementation);\\n if (data.length > 0 || forceCall) {\\n AddressUpgradeable.functionDelegateCall(newImplementation, data);\\n }\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCallUUPS(address newImplementation, bytes memory data, bool forceCall) internal {\\n // Upgrades from old implementations will perform a rollback test. This test requires the new\\n // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n // this special case will break upgrade paths from old UUPS implementation to new ones.\\n if (StorageSlotUpgradeable.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n _setImplementation(newImplementation);\\n } else {\\n try IERC1822ProxiableUpgradeable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n require(slot == _IMPLEMENTATION_SLOT, \\\"ERC1967Upgrade: unsupported proxiableUUID\\\");\\n } catch {\\n revert(\\\"ERC1967Upgrade: new implementation is not UUPS\\\");\\n }\\n _upgradeToAndCall(newImplementation, data, forceCall);\\n }\\n }\\n\\n /**\\n * @dev Storage slot with the admin of the contract.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _getAdmin() internal view returns (address) {\\n return StorageSlotUpgradeable.getAddressSlot(_ADMIN_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 admin slot.\\n */\\n function _setAdmin(address newAdmin) private {\\n require(newAdmin != address(0), \\\"ERC1967: new admin is the zero address\\\");\\n StorageSlotUpgradeable.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n */\\n function _changeAdmin(address newAdmin) internal {\\n emit AdminChanged(_getAdmin(), newAdmin);\\n _setAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\\n */\\n bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n /**\\n * @dev Returns the current beacon.\\n */\\n function _getBeacon() internal view returns (address) {\\n return StorageSlotUpgradeable.getAddressSlot(_BEACON_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new beacon in the EIP1967 beacon slot.\\n */\\n function _setBeacon(address newBeacon) private {\\n require(AddressUpgradeable.isContract(newBeacon), \\\"ERC1967: new beacon is not a contract\\\");\\n require(\\n AddressUpgradeable.isContract(IBeaconUpgradeable(newBeacon).implementation()),\\n \\\"ERC1967: beacon implementation is not a contract\\\"\\n );\\n StorageSlotUpgradeable.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n }\\n\\n /**\\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n *\\n * Emits a {BeaconUpgraded} event.\\n */\\n function _upgradeBeaconToAndCall(address newBeacon, bytes memory data, bool forceCall) internal {\\n _setBeacon(newBeacon);\\n emit BeaconUpgraded(newBeacon);\\n if (data.length > 0 || forceCall) {\\n AddressUpgradeable.functionDelegateCall(IBeaconUpgradeable(newBeacon).implementation(), data);\\n }\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x7795808e3899c805254e3ae58074b20f799b466e3f43e057e47bedee5fb771f8\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeaconUpgradeable {\\n /**\\n * @dev Must return an address that can be used as a delegate call target.\\n *\\n * {BeaconProxy} will check that this address is a contract.\\n */\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/UUPSUpgradeable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport \\\"../ERC1967/ERC1967UpgradeUpgradeable.sol\\\";\\nimport {Initializable} from \\\"./Initializable.sol\\\";\\n\\n/**\\n * @dev An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an\\n * {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy.\\n *\\n * A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is\\n * reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing\\n * `UUPSUpgradeable` with a custom implementation of upgrades.\\n *\\n * The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism.\\n *\\n * _Available since v4.1._\\n */\\nabstract contract UUPSUpgradeable is Initializable, IERC1822ProxiableUpgradeable, ERC1967UpgradeUpgradeable {\\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable state-variable-assignment\\n address private immutable __self = address(this);\\n\\n /**\\n * @dev Check that the execution is being performed through a delegatecall call and that the execution context is\\n * a proxy contract with an implementation (as defined in ERC1967) pointing to self. This should only be the case\\n * for UUPS and transparent proxies that are using the current contract as their implementation. Execution of a\\n * function through ERC1167 minimal proxies (clones) would not normally pass this test, but is not guaranteed to\\n * fail.\\n */\\n modifier onlyProxy() {\\n require(address(this) != __self, \\\"Function must be called through delegatecall\\\");\\n require(_getImplementation() == __self, \\\"Function must be called through active proxy\\\");\\n _;\\n }\\n\\n /**\\n * @dev Check that the execution is not being performed through a delegate call. This allows a function to be\\n * callable on the implementing contract but not through proxies.\\n */\\n modifier notDelegated() {\\n require(address(this) == __self, \\\"UUPSUpgradeable: must not be called through delegatecall\\\");\\n _;\\n }\\n\\n function __UUPSUpgradeable_init() internal onlyInitializing {\\n }\\n\\n function __UUPSUpgradeable_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the\\n * implementation. It is used to validate the implementation's compatibility when performing an upgrade.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\\n */\\n function proxiableUUID() external view virtual override notDelegated returns (bytes32) {\\n return _IMPLEMENTATION_SLOT;\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy to `newImplementation`.\\n *\\n * Calls {_authorizeUpgrade}.\\n *\\n * Emits an {Upgraded} event.\\n *\\n * @custom:oz-upgrades-unsafe-allow-reachable delegatecall\\n */\\n function upgradeTo(address newImplementation) public virtual onlyProxy {\\n _authorizeUpgrade(newImplementation);\\n _upgradeToAndCallUUPS(newImplementation, new bytes(0), false);\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call\\n * encoded in `data`.\\n *\\n * Calls {_authorizeUpgrade}.\\n *\\n * Emits an {Upgraded} event.\\n *\\n * @custom:oz-upgrades-unsafe-allow-reachable delegatecall\\n */\\n function upgradeToAndCall(address newImplementation, bytes memory data) public payable virtual onlyProxy {\\n _authorizeUpgrade(newImplementation);\\n _upgradeToAndCallUUPS(newImplementation, data, true);\\n }\\n\\n /**\\n * @dev Function that should revert when `msg.sender` is not authorized to upgrade the contract. Called by\\n * {upgradeTo} and {upgradeToAndCall}.\\n *\\n * Normally, this function will use an xref:access.adoc[access control] modifier such as {Ownable-onlyOwner}.\\n *\\n * ```solidity\\n * function _authorizeUpgrade(address) internal override onlyOwner {}\\n * ```\\n */\\n function _authorizeUpgrade(address newImplementation) internal virtual;\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0xefb41f5c1a00249b7a99f0782f8c557865605426a3fb6e5fe9ae334293ae4f33\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n function __Context_init() internal onlyInitializing {\\n }\\n\\n function __Context_init_unchained() internal onlyInitializing {\\n }\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n function _contextSuffixLength() internal view virtual returns (uint256) {\\n return 0;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x75097e35253e7fb282ee4d7f27a80eaacfa759923185bf17302a89cbc059c5ef\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/StorageSlot.sol)\\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```solidity\\n * contract ERC1967 {\\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n * function _getImplementation() internal view returns (address) {\\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n * }\\n *\\n * function _setImplementation(address newImplementation) internal {\\n * require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n * }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._\\n * _Available since v4.9 for `string`, `bytes`._\\n */\\nlibrary StorageSlotUpgradeable {\\n struct AddressSlot {\\n address value;\\n }\\n\\n struct BooleanSlot {\\n bool value;\\n }\\n\\n struct Bytes32Slot {\\n bytes32 value;\\n }\\n\\n struct Uint256Slot {\\n uint256 value;\\n }\\n\\n struct StringSlot {\\n string value;\\n }\\n\\n struct BytesSlot {\\n bytes value;\\n }\\n\\n /**\\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n */\\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n */\\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n */\\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n */\\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` with member `value` located at `slot`.\\n */\\n function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\\n */\\n function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` with member `value` located at `slot`.\\n */\\n function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\\n */\\n function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n}\\n\",\"keccak256\":\"0x07ac95acad040f1fb1f6120dd0aa5f702db69446e95f82613721879d30de0908\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165Upgradeable.sol\\\";\\nimport {Initializable} from \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165Upgradeable is Initializable, IERC165Upgradeable {\\n function __ERC165_init() internal onlyInitializing {\\n }\\n\\n function __ERC165_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165Upgradeable).interfaceId;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0xd90d7723512df65ae417adaf0801042940f0dabd60039ceeaffe34aa5b238da1\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165Upgradeable {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\"},\"src/dao/IDAO.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IDAO\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for DAOs within the Aragon App DAO framework.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IDAO {\\n /// @notice The action struct to be consumed by the DAO's `execute` function resulting in an external call.\\n /// @param to The address to call.\\n /// @param value The native token value to be sent with the call.\\n /// @param data The bytes-encoded function selector and calldata for the call.\\n struct Action {\\n address to;\\n uint256 value;\\n bytes data;\\n }\\n\\n /// @notice Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\\n /// @param _where The address of the contract.\\n /// @param _who The address of a EOA or contract to give the permissions.\\n /// @param _permissionId The permission identifier.\\n /// @param _data The optional data passed to the `PermissionCondition` registered.\\n /// @return Returns true if the address has permission, false if not.\\n function hasPermission(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes memory _data\\n ) external view returns (bool);\\n\\n /// @notice Updates the DAO metadata (e.g., an IPFS hash).\\n /// @param _metadata The IPFS hash of the new metadata object.\\n function setMetadata(bytes calldata _metadata) external;\\n\\n /// @notice Emitted when the DAO metadata is updated.\\n /// @param metadata The IPFS hash of the new metadata object.\\n event MetadataSet(bytes metadata);\\n\\n /// @notice Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted.\\n /// @param _callId The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce.\\n /// @param _actions The array of actions.\\n /// @param _allowFailureMap A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @return The array of results obtained from the executed actions in `bytes`.\\n /// @return The resulting failure map containing the actions have actually failed.\\n function execute(\\n bytes32 _callId,\\n Action[] memory _actions,\\n uint256 _allowFailureMap\\n ) external returns (bytes[] memory, uint256);\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param actor The address of the caller.\\n /// @param callId The ID of the call.\\n /// @param actions The array of actions executed.\\n /// @param allowFailureMap The allow failure map encoding which actions are allowed to fail.\\n /// @param failureMap The failure map encoding which actions have failed.\\n /// @param execResults The array with the results of the executed actions.\\n /// @dev The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce.\\n event Executed(\\n address indexed actor,\\n bytes32 callId,\\n Action[] actions,\\n uint256 allowFailureMap,\\n uint256 failureMap,\\n bytes[] execResults\\n );\\n\\n /// @notice Emitted when a standard callback is registered.\\n /// @param interfaceId The ID of the interface.\\n /// @param callbackSelector The selector of the callback function.\\n /// @param magicNumber The magic number to be registered for the callback function selector.\\n event StandardCallbackRegistered(\\n bytes4 interfaceId,\\n bytes4 callbackSelector,\\n bytes4 magicNumber\\n );\\n\\n /// @notice Deposits (native) tokens to the DAO contract with a reference string.\\n /// @param _token The address of the token or address(0) in case of the native token.\\n /// @param _amount The amount of tokens to deposit.\\n /// @param _reference The reference describing the deposit reason.\\n function deposit(address _token, uint256 _amount, string calldata _reference) external payable;\\n\\n /// @notice Emitted when a token deposit has been made to the DAO.\\n /// @param sender The address of the sender.\\n /// @param token The address of the deposited token.\\n /// @param amount The amount of tokens deposited.\\n /// @param _reference The reference describing the deposit reason.\\n event Deposited(\\n address indexed sender,\\n address indexed token,\\n uint256 amount,\\n string _reference\\n );\\n\\n /// @notice Emitted when a native token deposit has been made to the DAO.\\n /// @dev This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).\\n /// @param sender The address of the sender.\\n /// @param amount The amount of native tokens deposited.\\n event NativeTokenDeposited(address sender, uint256 amount);\\n\\n /// @notice Setter for the trusted forwarder verifying the meta transaction.\\n /// @param _trustedForwarder The trusted forwarder address.\\n function setTrustedForwarder(address _trustedForwarder) external;\\n\\n /// @notice Getter for the trusted forwarder verifying the meta transaction.\\n /// @return The trusted forwarder address.\\n function getTrustedForwarder() external view returns (address);\\n\\n /// @notice Emitted when a new TrustedForwarder is set on the DAO.\\n /// @param forwarder the new forwarder address.\\n event TrustedForwarderSet(address forwarder);\\n\\n /// @notice Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\\n /// @param _hash The hash of the data to be signed.\\n /// @param _signature The signature byte array associated with `_hash`.\\n /// @return Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not.\\n function isValidSignature(bytes32 _hash, bytes memory _signature) external returns (bytes4);\\n\\n /// @notice Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\\n /// @param _interfaceId The ID of the interface.\\n /// @param _callbackSelector The selector of the callback function.\\n /// @param _magicNumber The magic number to be registered for the function signature.\\n function registerStandardCallback(\\n bytes4 _interfaceId,\\n bytes4 _callbackSelector,\\n bytes4 _magicNumber\\n ) external;\\n\\n /// @notice Removed function being left here to not corrupt the IDAO interface ID. Any call will revert.\\n /// @dev Introduced in v1.0.0. Removed in v1.4.0.\\n function setSignatureValidator(address) external;\\n}\\n\",\"keccak256\":\"0xb7f615523c26de042edce98731c658f44a1edb2464387ac1b642c4c69f57128e\",\"license\":\"AGPL-3.0-or-later\"},\"src/mocks/plugin/PluginUUPSUpgradeableMock.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\n/* solhint-disable one-contract-per-file */\\npragma solidity ^0.8.8;\\n\\nimport {PluginUUPSUpgradeable} from \\\"../../plugin/PluginUUPSUpgradeable.sol\\\";\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice A mock upgradeable plugin to be deployed via the UUPS proxy pattern.\\n/// v1.1 (Release 1, Build 1)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableMockBuild1 is PluginUUPSUpgradeable {\\n uint256 public state1;\\n\\n function initialize(IDAO _dao) external initializer {\\n __PluginUUPSUpgradeable_init(_dao);\\n state1 = 1;\\n }\\n}\\n\\n/// @notice A mock upgradeable plugin to be deployed via the UUPS proxy pattern.\\n/// v1.1 (Release 1, Build 2)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableMockBuild2 is PluginUUPSUpgradeable {\\n uint256 public state1;\\n uint256 public state2;\\n\\n function initialize(IDAO _dao) external reinitializer(2) {\\n __PluginUUPSUpgradeable_init(_dao);\\n state1 = 1;\\n state2 = 2;\\n }\\n\\n function initializeFrom(uint16 _previousBuild) external reinitializer(2) {\\n if (_previousBuild < 2) {\\n state2 = 2;\\n }\\n }\\n}\\n\\n/// @notice A mock upgradeable plugin to be deployed via the UUPS proxy pattern.\\n/// v1.1 (Release 1, Build 3)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableMockBuild3 is PluginUUPSUpgradeable {\\n uint256 public state1;\\n uint256 public state2;\\n uint256 public state3;\\n\\n function initialize(IDAO _dao) external reinitializer(3) {\\n __PluginUUPSUpgradeable_init(_dao);\\n state1 = 1;\\n state2 = 2;\\n state3 = 3;\\n }\\n\\n function initializeFrom(uint16 _previousBuild) external reinitializer(3) {\\n if (_previousBuild < 2) {\\n state2 = 2;\\n }\\n if (_previousBuild < 3) {\\n state3 = 3;\\n }\\n }\\n}\\n\\n/// @notice A mock upgradeable plugin missing an initializer function.\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableMockBad is PluginUUPSUpgradeable {\\n uint256 public state1;\\n\\n function notAnInitializer(IDAO _dao) external {\\n __PluginUUPSUpgradeable_init(_dao);\\n state1 = 1;\\n }\\n}\\n\",\"keccak256\":\"0x2917df3b1da0de27f58cf531afeaa4e6c4285717247cbdd9ecc7880ae5cb9cb0\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/DaoAuthorizableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ContextUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\\\";\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\nimport {_auth} from \\\"./auth.sol\\\";\\n\\n/// @title DaoAuthorizableUpgradeable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract contract providing a meta-transaction compatible modifier for upgradeable or cloneable contracts to authorize function calls through an associated DAO.\\n/// @dev Make sure to call `__DaoAuthorizableUpgradeable_init` during initialization of the inheriting contract.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract DaoAuthorizableUpgradeable is ContextUpgradeable {\\n /// @notice The associated DAO managing the permissions of inheriting contracts.\\n IDAO private dao_;\\n\\n /// @notice Initializes the contract by setting the associated DAO.\\n /// @param _dao The associated DAO address.\\n // solhint-disable-next-line func-name-mixedcase\\n function __DaoAuthorizableUpgradeable_init(IDAO _dao) internal onlyInitializing {\\n dao_ = _dao;\\n }\\n\\n /// @notice Returns the DAO contract.\\n /// @return The DAO contract.\\n function dao() public view returns (IDAO) {\\n return dao_;\\n }\\n\\n /// @notice A modifier to make functions on inheriting contracts authorized. Permissions to call the function are checked through the associated DAO's permission manager.\\n /// @param _permissionId The permission identifier required to call the method this modifier is applied to.\\n modifier auth(bytes32 _permissionId) {\\n _auth(dao_, address(this), _msgSender(), _permissionId, _msgData());\\n _;\\n }\\n\\n /// @notice This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain (see [OpenZeppelin's guide about storage gaps](https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps)).\\n uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0x7fac6b01b037ba1cb9d6a22d3f43b0785037dcf496ffb672434d9bf7227d2585\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/auth.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice Thrown if a call is unauthorized in the associated DAO.\\n/// @param dao The associated DAO.\\n/// @param where The context in which the authorization reverted.\\n/// @param who The address (EOA or contract) missing the permission.\\n/// @param permissionId The permission identifier.\\nerror DaoUnauthorized(address dao, address where, address who, bytes32 permissionId);\\n\\n/// @notice A free function checking if a caller is granted permissions on a target contract via a permission identifier that redirects the approval to a `PermissionCondition` if this was specified in the setup.\\n/// @param _where The address of the target contract for which `who` receives permission.\\n/// @param _who The address (EOA or contract) owning the permission.\\n/// @param _permissionId The permission identifier.\\n/// @param _data The optional data passed to the `PermissionCondition` registered.\\n/// @custom:security-contact sirt@aragon.org\\nfunction _auth(\\n IDAO _dao,\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes calldata _data\\n) view {\\n if (!_dao.hasPermission(_where, _who, _permissionId, _data))\\n revert DaoUnauthorized({\\n dao: address(_dao),\\n where: _where,\\n who: _who,\\n permissionId: _permissionId\\n });\\n}\\n\",\"keccak256\":\"0x878764b4f87fe0651fb3798fb9cb87c952f8c6caf6ae79c7f09de84df6c00298\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/IPlugin.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IPlugin\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the traits of a plugin.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IPlugin {\\n enum PluginType {\\n UUPS,\\n Cloneable,\\n Constructable\\n }\\n\\n /// @notice Returns the plugin's type\\n function pluginType() external view returns (PluginType);\\n}\\n\",\"keccak256\":\"0xc57cd0d10b6380ab7f54c713a509e88fd8f4ad9288313a0e8e12b8887817ddfe\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/PluginUUPSUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {UUPSUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\\\";\\nimport {IERC1822ProxiableUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport {ERC165Upgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\\\";\\n\\nimport {IProtocolVersion} from \\\"../utils/versioning/IProtocolVersion.sol\\\";\\nimport {ProtocolVersion} from \\\"../utils/versioning/ProtocolVersion.sol\\\";\\nimport {DaoAuthorizableUpgradeable} from \\\"../permission/auth/DaoAuthorizableUpgradeable.sol\\\";\\nimport {IDAO} from \\\"../dao/IDAO.sol\\\";\\nimport {IPlugin} from \\\"./IPlugin.sol\\\";\\n\\n/// @title PluginUUPSUpgradeable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract, upgradeable contract to inherit from when creating a plugin being deployed via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract PluginUUPSUpgradeable is\\n IPlugin,\\n ERC165Upgradeable,\\n UUPSUpgradeable,\\n DaoAuthorizableUpgradeable,\\n ProtocolVersion\\n{\\n // NOTE: When adding new state variables to the contract, the size of `_gap` has to be adapted below as well.\\n\\n /// @notice Disables the initializers on the implementation contract to prevent it from being left uninitialized.\\n /// @custom:oz-upgrades-unsafe-allow constructor\\n constructor() {\\n _disableInitializers();\\n }\\n\\n /// @inheritdoc IPlugin\\n function pluginType() public pure override returns (PluginType) {\\n return PluginType.UUPS;\\n }\\n\\n /// @notice The ID of the permission required to call the `_authorizeUpgrade` function.\\n bytes32 public constant UPGRADE_PLUGIN_PERMISSION_ID = keccak256(\\\"UPGRADE_PLUGIN_PERMISSION\\\");\\n\\n /// @notice Initializes the plugin by storing the associated DAO.\\n /// @param _dao The DAO contract.\\n // solhint-disable-next-line func-name-mixedcase\\n function __PluginUUPSUpgradeable_init(IDAO _dao) internal virtual onlyInitializing {\\n __DaoAuthorizableUpgradeable_init(_dao);\\n }\\n\\n /// @notice Checks if an interface is supported by this or its parent contract.\\n /// @param _interfaceId The ID of the interface.\\n /// @return Returns `true` if the interface is supported.\\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\\n return\\n _interfaceId == type(IPlugin).interfaceId ||\\n _interfaceId == type(IProtocolVersion).interfaceId ||\\n _interfaceId == type(IERC1822ProxiableUpgradeable).interfaceId ||\\n super.supportsInterface(_interfaceId);\\n }\\n\\n /// @notice Returns the address of the implementation contract in the [proxy storage slot](https://eips.ethereum.org/EIPS/eip-1967) slot the [UUPS proxy](https://eips.ethereum.org/EIPS/eip-1822) is pointing to.\\n /// @return The address of the implementation contract.\\n function implementation() public view returns (address) {\\n return _getImplementation();\\n }\\n\\n /// @notice Internal method authorizing the upgrade of the contract via the [upgradeability mechanism for UUPS proxies](https://docs.openzeppelin.com/contracts/4.x/api/proxy#UUPSUpgradeable) (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\\n /// @dev The caller must have the `UPGRADE_PLUGIN_PERMISSION_ID` permission.\\n function _authorizeUpgrade(\\n address\\n )\\n internal\\n virtual\\n override\\n auth(UPGRADE_PLUGIN_PERMISSION_ID)\\n // solhint-disable-next-line no-empty-blocks\\n {\\n\\n }\\n\\n /// @notice This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain (see [OpenZeppelin's guide about storage gaps](https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps)).\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x127e7c4f839cb8c8486070990b78e22313f1ff089ffe6a4ff23ae358e48f0037\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/IProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IProtocolVersion\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the semantic Aragon OSx protocol version number.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IProtocolVersion {\\n /// @notice Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\\n /// @return _version Returns the semantic Aragon OSx protocol version number.\\n /// @dev This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\\n function protocolVersion() external view returns (uint8[3] memory _version);\\n}\\n\",\"keccak256\":\"0x00a4da654d21dc1bdadbdc8bd54bb86c378c56f85e461ccc31303628ea621361\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/ProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IProtocolVersion} from \\\"./IProtocolVersion.sol\\\";\\n\\n/// @title ProtocolVersion\\n/// @author Aragon X - 2023\\n/// @notice An abstract, stateless, non-upgradeable contract providing the current Aragon OSx protocol version number.\\n/// @dev Do not add any new variables to this contract that would shift down storage in the inheritance chain.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract ProtocolVersion is IProtocolVersion {\\n // IMPORTANT: Do not add any storage variable, see the above notice.\\n\\n /// @inheritdoc IProtocolVersion\\n function protocolVersion() public pure returns (uint8[3] memory) {\\n return [1, 4, 0];\\n }\\n}\\n\",\"keccak256\":\"0x3975c937be935f687c6b6b8f379071232681e98cf04b175d72781b819ea52bdb\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[{"astId":372,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild2","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":375,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild2","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":2821,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild2","label":"__gap","offset":0,"slot":"1","type":"t_array(t_uint256)50_storage"},{"astId":354,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild2","label":"__gap","offset":0,"slot":"51","type":"t_array(t_uint256)50_storage"},{"astId":670,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild2","label":"__gap","offset":0,"slot":"101","type":"t_array(t_uint256)50_storage"},{"astId":2592,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild2","label":"__gap","offset":0,"slot":"151","type":"t_array(t_uint256)50_storage"},{"astId":13111,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild2","label":"dao_","offset":0,"slot":"201","type":"t_contract(IDAO)10865"},{"astId":13160,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild2","label":"__gap","offset":0,"slot":"202","type":"t_array(t_uint256)49_storage"},{"astId":13632,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild2","label":"__gap","offset":0,"slot":"251","type":"t_array(t_uint256)50_storage"},{"astId":11794,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild2","label":"state1","offset":0,"slot":"301","type":"t_uint256"},{"astId":11796,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild2","label":"state2","offset":0,"slot":"302","type":"t_uint256"}],"types":{"t_array(t_uint256)49_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[49]","numberOfBytes":"1568"},"t_array(t_uint256)50_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[50]","numberOfBytes":"1600"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_contract(IDAO)10865":{"encoding":"inplace","label":"contract IDAO","numberOfBytes":"20"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"errors":{"DaoUnauthorized(address,address,address,bytes32)":[{"notice":"Thrown if a call is unauthorized in the associated DAO."}]},"kind":"user","methods":{"UPGRADE_PLUGIN_PERMISSION_ID()":{"notice":"The ID of the permission required to call the `_authorizeUpgrade` function."},"dao()":{"notice":"Returns the DAO contract."},"implementation()":{"notice":"Returns the address of the implementation contract in the [proxy storage slot](https://eips.ethereum.org/EIPS/eip-1967) slot the [UUPS proxy](https://eips.ethereum.org/EIPS/eip-1822) is pointing to."},"pluginType()":{"notice":"Returns the plugin's type"},"protocolVersion()":{"notice":"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with."},"supportsInterface(bytes4)":{"notice":"Checks if an interface is supported by this or its parent contract."}},"notice":"A mock upgradeable plugin to be deployed via the UUPS proxy pattern. v1.1 (Release 1, Build 2)","version":1}},"PluginUUPSUpgradeableMockBuild3":{"abi":[{"inputs":[{"internalType":"address","name":"dao","type":"address"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"name":"DaoUnauthorized","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"beacon","type":"address"}],"name":"BeaconUpgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"inputs":[],"name":"UPGRADE_PLUGIN_PERMISSION_ID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dao","outputs":[{"internalType":"contract IDAO","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IDAO","name":"_dao","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"_previousBuild","type":"uint16"}],"name":"initializeFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pluginType","outputs":[{"internalType":"enum IPlugin.PluginType","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"protocolVersion","outputs":[{"internalType":"uint8[3]","name":"","type":"uint8[3]"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"state1","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"state2","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"state3","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"}],"name":"upgradeTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"}],"devdoc":{"details":"DO NOT USE IN PRODUCTION!","errors":{"DaoUnauthorized(address,address,address,bytes32)":[{"params":{"dao":"The associated DAO.","permissionId":"The permission identifier.","where":"The context in which the authorization reverted.","who":"The address (EOA or contract) missing the permission."}}]},"kind":"dev","methods":{"dao()":{"returns":{"_0":"The DAO contract."}},"implementation()":{"returns":{"_0":"The address of the implementation contract."}},"protocolVersion()":{"details":"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.","returns":{"_0":"Returns the semantic Aragon OSx protocol version number."}},"proxiableUUID()":{"details":"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier."},"supportsInterface(bytes4)":{"params":{"_interfaceId":"The ID of the interface."},"returns":{"_0":"Returns `true` if the interface is supported."}},"upgradeTo(address)":{"custom:oz-upgrades-unsafe-allow-reachable":"delegatecall","details":"Upgrade the implementation of the proxy to `newImplementation`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."},"upgradeToAndCall(address,bytes)":{"custom:oz-upgrades-unsafe-allow-reachable":"delegatecall","details":"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."}},"version":1},"evm":{"bytecode":{"functionDebugData":{"@_13538":{"entryPoint":null,"id":13538,"parameterSlots":0,"returnSlots":0},"@_disableInitializers_515":{"entryPoint":34,"id":515,"parameterSlots":0,"returnSlots":0},"abi_encode_tuple_t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:608:92","statements":[{"nodeType":"YulBlock","src":"6:3:92","statements":[]},{"body":{"nodeType":"YulBlock","src":"188:229:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"205:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"216:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"198:6:92"},"nodeType":"YulFunctionCall","src":"198:21:92"},"nodeType":"YulExpressionStatement","src":"198:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"239:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"250:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"235:3:92"},"nodeType":"YulFunctionCall","src":"235:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"255:2:92","type":"","value":"39"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"228:6:92"},"nodeType":"YulFunctionCall","src":"228:30:92"},"nodeType":"YulExpressionStatement","src":"228:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"278:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"289:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"274:3:92"},"nodeType":"YulFunctionCall","src":"274:18:92"},{"hexValue":"496e697469616c697a61626c653a20636f6e747261637420697320696e697469","kind":"string","nodeType":"YulLiteral","src":"294:34:92","type":"","value":"Initializable: contract is initi"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"267:6:92"},"nodeType":"YulFunctionCall","src":"267:62:92"},"nodeType":"YulExpressionStatement","src":"267:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"349:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"360:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"345:3:92"},"nodeType":"YulFunctionCall","src":"345:18:92"},{"hexValue":"616c697a696e67","kind":"string","nodeType":"YulLiteral","src":"365:9:92","type":"","value":"alizing"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"338:6:92"},"nodeType":"YulFunctionCall","src":"338:37:92"},"nodeType":"YulExpressionStatement","src":"338:37:92"},{"nodeType":"YulAssignment","src":"384:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"396:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"407:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"392:3:92"},"nodeType":"YulFunctionCall","src":"392:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"384:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"165:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"179:4:92","type":""}],"src":"14:403:92"},{"body":{"nodeType":"YulBlock","src":"519:87:92","statements":[{"nodeType":"YulAssignment","src":"529:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"541:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"552:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"537:3:92"},"nodeType":"YulFunctionCall","src":"537:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"529:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"571:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"586:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"594:4:92","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"582:3:92"},"nodeType":"YulFunctionCall","src":"582:17:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"564:6:92"},"nodeType":"YulFunctionCall","src":"564:36:92"},"nodeType":"YulExpressionStatement","src":"564:36:92"}]},"name":"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"488:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"499:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"510:4:92","type":""}],"src":"422:184:92"}]},"contents":"{\n { }\n function abi_encode_tuple_t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 39)\n mstore(add(headStart, 64), \"Initializable: contract is initi\")\n mstore(add(headStart, 96), \"alizing\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xff))\n }\n}","id":92,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60a06040523060805234801561001457600080fd5b5061001d610022565b6100e1565b600054610100900460ff161561008e5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116146100df576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b60805161126061011860003960008181610459015281816104de015281816105d401528181610659015261074301526112606000f3fe6080604052600436106100dd5760003560e01c80634f1ef2861161007f5780636accab8c116100595780636accab8c1461022b578063c4d66de814610242578063c9c4bfca14610262578063efe51cca1461029657600080fd5b80634f1ef286146101ee57806352d1902d146102015780635c60da1b1461021657600080fd5b80632ae9c600116100bb5780632ae9c6001461015e5780633659cfe6146101805780634162169f146101a057806341de6830146101d257600080fd5b806301ffc9a7146100e2578063039a8c50146101175780632491118d14610139575b600080fd5b3480156100ee57600080fd5b506101026100fd366004610f74565b6102ad565b60405190151581526020015b60405180910390f35b34801561012357600080fd5b50610137610132366004610f9e565b610319565b005b34801561014557600080fd5b5061015061012f5481565b60405190815260200161010e565b34801561016a57600080fd5b50610173610425565b60405161010e9190610fc2565b34801561018c57600080fd5b5061013761019b36600461100b565b61044f565b3480156101ac57600080fd5b5060c9546001600160a01b03165b6040516001600160a01b03909116815260200161010e565b3480156101de57600080fd5b50600060405161010e9190611028565b6101376101fc366004611066565b6105ca565b34801561020d57600080fd5b50610150610736565b34801561022257600080fd5b506101ba6107fb565b34801561023757600080fd5b5061015061012d5481565b34801561024e57600080fd5b5061013761025d36600461100b565b610833565b34801561026e57600080fd5b506101507f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f581565b3480156102a257600080fd5b5061015061012e5481565b60006001600160e01b0319821663041de68360e41b14806102dd57506001600160e01b03198216621574e360e91b145b806102f857506001600160e01b031982166352d1902d60e01b145b8061031357506301ffc9a760e01b6001600160e01b03198316145b92915050565b600054600390610100900460ff1615801561033b575060005460ff8083169116105b6103a35760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805461ffff191660ff831617610100179055600261ffff831610156103cb57600261012e555b60038261ffff1610156103df57600361012f555b6000805461ff001916905560405160ff821681527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b61042d610f56565b5060408051606081018252600181526004602082015260009181019190915290565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036104dc5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b606482015260840161039a565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166105377f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b0316146105a25760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b606482015260840161039a565b6105ab81610925565b604080516000808252602082019092526105c791839190610962565b50565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036106575760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b606482015260840161039a565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166106b27f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b03161461071d5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b606482015260840161039a565b61072682610925565b61073282826001610962565b5050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146107d65760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000606482015260840161039a565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b600061082e7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b600054600390610100900460ff16158015610855575060005460ff8083169116105b6108b85760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161039a565b6000805461ffff191660ff8316176101001790556108d582610b07565b600161012d55600261012e55600361012f556000805461ff001916905560405160ff821681527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602001610419565b60c9547f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f590610732906001600160a01b0316303384600036610b7b565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561099a5761099583610c37565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156109f4575060408051601f3d908101601f191682019092526109f19181019061112a565b60015b610a665760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201527f6f6e206973206e6f742055555053000000000000000000000000000000000000606482015260840161039a565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114610afb5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f7860448201527f6961626c65555549440000000000000000000000000000000000000000000000606482015260840161039a565b50610995838383610d02565b600054610100900460ff16610b725760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840161039a565b6105c781610d2d565b604051637ef7c88360e11b81526001600160a01b0387169063fdef910690610baf9088908890889088908890600401611143565b602060405180830381865afa158015610bcc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bf09190611197565b610c2f57604051630cb6f8ed60e21b81526001600160a01b0380881660048301528087166024830152851660448201526064810184905260840161039a565b505050505050565b6001600160a01b0381163b610cb45760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e747261637400000000000000000000000000000000000000606482015260840161039a565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610d0b83610dc7565b600082511180610d185750805b1561099557610d278383610e07565b50505050565b600054610100900460ff16610d985760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840161039a565b60c9805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610dd081610c37565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060610e2c838360405180606001604052806027815260200161122d60279139610e33565b9392505050565b6060600080856001600160a01b031685604051610e5091906111dd565b600060405180830381855af49150503d8060008114610e8b576040519150601f19603f3d011682016040523d82523d6000602084013e610e90565b606091505b5091509150610ea186838387610eab565b9695505050505050565b60608315610f1a578251600003610f13576001600160a01b0385163b610f135760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161039a565b5081610f24565b610f248383610f2c565b949350505050565b815115610f3c5781518083602001fd5b8060405162461bcd60e51b815260040161039a91906111f9565b60405180606001604052806003906020820280368337509192915050565b600060208284031215610f8657600080fd5b81356001600160e01b031981168114610e2c57600080fd5b600060208284031215610fb057600080fd5b813561ffff81168114610e2c57600080fd5b60608101818360005b6003811015610fed57815160ff16835260209283019290910190600101610fcb565b50505092915050565b6001600160a01b03811681146105c757600080fd5b60006020828403121561101d57600080fd5b8135610e2c81610ff6565b602081016003831061104a57634e487b7160e01b600052602160045260246000fd5b91905290565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561107957600080fd5b823561108481610ff6565b9150602083013567ffffffffffffffff808211156110a157600080fd5b818501915085601f8301126110b557600080fd5b8135818111156110c7576110c7611050565b604051601f8201601f19908116603f011681019083821181831017156110ef576110ef611050565b8160405282815288602084870101111561110857600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60006020828403121561113c57600080fd5b5051919050565b60006001600160a01b03808816835280871660208401525084604083015260806060830152826080830152828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b6000602082840312156111a957600080fd5b81518015158114610e2c57600080fd5b60005b838110156111d45781810151838201526020016111bc565b50506000910152565b600082516111ef8184602087016111b9565b9190910192915050565b60208152600082518060208401526112188160408501602087016111b9565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a","opcodes":"PUSH1 0xA0 PUSH1 0x40 MSTORE ADDRESS PUSH1 0x80 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x14 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1D PUSH2 0x22 JUMP JUMPDEST PUSH2 0xE1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x8E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x27 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320696E697469 PUSH1 0x44 DUP3 ADD MSTORE PUSH7 0x616C697A696E67 PUSH1 0xC8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xFF SWAP1 DUP2 AND EQ PUSH2 0xDF JUMPI PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH2 0x1260 PUSH2 0x118 PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH2 0x459 ADD MSTORE DUP2 DUP2 PUSH2 0x4DE ADD MSTORE DUP2 DUP2 PUSH2 0x5D4 ADD MSTORE DUP2 DUP2 PUSH2 0x659 ADD MSTORE PUSH2 0x743 ADD MSTORE PUSH2 0x1260 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xDD JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x4F1EF286 GT PUSH2 0x7F JUMPI DUP1 PUSH4 0x6ACCAB8C GT PUSH2 0x59 JUMPI DUP1 PUSH4 0x6ACCAB8C EQ PUSH2 0x22B JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0x242 JUMPI DUP1 PUSH4 0xC9C4BFCA EQ PUSH2 0x262 JUMPI DUP1 PUSH4 0xEFE51CCA EQ PUSH2 0x296 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x1EE JUMPI DUP1 PUSH4 0x52D1902D EQ PUSH2 0x201 JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0x216 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x2AE9C600 GT PUSH2 0xBB JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0x15E JUMPI DUP1 PUSH4 0x3659CFE6 EQ PUSH2 0x180 JUMPI DUP1 PUSH4 0x4162169F EQ PUSH2 0x1A0 JUMPI DUP1 PUSH4 0x41DE6830 EQ PUSH2 0x1D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xE2 JUMPI DUP1 PUSH4 0x39A8C50 EQ PUSH2 0x117 JUMPI DUP1 PUSH4 0x2491118D EQ PUSH2 0x139 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xEE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x102 PUSH2 0xFD CALLDATASIZE PUSH1 0x4 PUSH2 0xF74 JUMP JUMPDEST PUSH2 0x2AD JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x123 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x137 PUSH2 0x132 CALLDATASIZE PUSH1 0x4 PUSH2 0xF9E JUMP JUMPDEST PUSH2 0x319 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x145 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x150 PUSH2 0x12F SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x10E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x16A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x173 PUSH2 0x425 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x10E SWAP2 SWAP1 PUSH2 0xFC2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x18C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x137 PUSH2 0x19B CALLDATASIZE PUSH1 0x4 PUSH2 0x100B JUMP JUMPDEST PUSH2 0x44F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xC9 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x10E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 PUSH1 0x40 MLOAD PUSH2 0x10E SWAP2 SWAP1 PUSH2 0x1028 JUMP JUMPDEST PUSH2 0x137 PUSH2 0x1FC CALLDATASIZE PUSH1 0x4 PUSH2 0x1066 JUMP JUMPDEST PUSH2 0x5CA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x20D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x150 PUSH2 0x736 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x222 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1BA PUSH2 0x7FB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x237 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x150 PUSH2 0x12D SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x24E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x137 PUSH2 0x25D CALLDATASIZE PUSH1 0x4 PUSH2 0x100B JUMP JUMPDEST PUSH2 0x833 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x26E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x150 PUSH32 0x821B6E3A557148015A918C89E5D092E878A69854A2D1A410635F771BD5A8A3F5 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x150 PUSH2 0x12E SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x41DE683 PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x2DD JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x2F8 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x52D1902D PUSH1 0xE0 SHL EQ JUMPDEST DUP1 PUSH2 0x313 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x3 SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH2 0x33B JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF DUP1 DUP4 AND SWAP2 AND LT JUMPDEST PUSH2 0x3A3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x44 DUP3 ADD MSTORE PUSH14 0x191E481A5B9A5D1A585B1A5E9959 PUSH1 0x92 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH2 0xFFFF NOT AND PUSH1 0xFF DUP4 AND OR PUSH2 0x100 OR SWAP1 SSTORE PUSH1 0x2 PUSH2 0xFFFF DUP4 AND LT ISZERO PUSH2 0x3CB JUMPI PUSH1 0x2 PUSH2 0x12E SSTORE JUMPDEST PUSH1 0x3 DUP3 PUSH2 0xFFFF AND LT ISZERO PUSH2 0x3DF JUMPI PUSH1 0x3 PUSH2 0x12F SSTORE JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH1 0xFF DUP3 AND DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH2 0x42D PUSH2 0xF56 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x4DC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x19195B1959D85D1958D85B1B PUSH1 0xA2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x39A JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x537 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x5A2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x6163746976652070726F7879 PUSH1 0xA0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x39A JUMP JUMPDEST PUSH2 0x5AB DUP2 PUSH2 0x925 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x5C7 SWAP2 DUP4 SWAP2 SWAP1 PUSH2 0x962 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x657 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x19195B1959D85D1958D85B1B PUSH1 0xA2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x39A JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x6B2 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x71D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x6163746976652070726F7879 PUSH1 0xA0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x39A JUMP JUMPDEST PUSH2 0x726 DUP3 PUSH2 0x925 JUMP JUMPDEST PUSH2 0x732 DUP3 DUP3 PUSH1 0x1 PUSH2 0x962 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x7D6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x38 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x555550535570677261646561626C653A206D757374206E6F742062652063616C PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6C6564207468726F7567682064656C656761746563616C6C0000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x39A JUMP JUMPDEST POP PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x82E PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x3 SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH2 0x855 JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF DUP1 DUP4 AND SWAP2 AND LT JUMPDEST PUSH2 0x8B8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x44 DUP3 ADD MSTORE PUSH14 0x191E481A5B9A5D1A585B1A5E9959 PUSH1 0x92 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x39A JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH2 0xFFFF NOT AND PUSH1 0xFF DUP4 AND OR PUSH2 0x100 OR SWAP1 SSTORE PUSH2 0x8D5 DUP3 PUSH2 0xB07 JUMP JUMPDEST PUSH1 0x1 PUSH2 0x12D SSTORE PUSH1 0x2 PUSH2 0x12E SSTORE PUSH1 0x3 PUSH2 0x12F SSTORE PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH1 0xFF DUP3 AND DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH2 0x419 JUMP JUMPDEST PUSH1 0xC9 SLOAD PUSH32 0x821B6E3A557148015A918C89E5D092E878A69854A2D1A410635F771BD5A8A3F5 SWAP1 PUSH2 0x732 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ADDRESS CALLER DUP5 PUSH1 0x0 CALLDATASIZE PUSH2 0xB7B JUMP JUMPDEST PUSH32 0x4910FDFA16FED3260ED0E7147F7CC6DA11A60208B5B9406D12A635614FFD9143 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x99A JUMPI PUSH2 0x995 DUP4 PUSH2 0xC37 JUMP JUMPDEST POP POP POP JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x52D1902D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x9F4 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x9F1 SWAP2 DUP2 ADD SWAP1 PUSH2 0x112A JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0xA66 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524331393637557067726164653A206E657720696D706C656D656E74617469 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F6E206973206E6F742055555053000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x39A JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC DUP2 EQ PUSH2 0xAFB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524331393637557067726164653A20756E737570706F727465642070726F78 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6961626C65555549440000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x39A JUMP JUMPDEST POP PUSH2 0x995 DUP4 DUP4 DUP4 PUSH2 0xD02 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0xB72 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x39A JUMP JUMPDEST PUSH2 0x5C7 DUP2 PUSH2 0xD2D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x7EF7C883 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0xFDEF9106 SWAP1 PUSH2 0xBAF SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x1143 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xBCC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xBF0 SWAP2 SWAP1 PUSH2 0x1197 JUMP JUMPDEST PUSH2 0xC2F JUMPI PUSH1 0x40 MLOAD PUSH4 0xCB6F8ED PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND PUSH1 0x4 DUP4 ADD MSTORE DUP1 DUP8 AND PUSH1 0x24 DUP4 ADD MSTORE DUP6 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x84 ADD PUSH2 0x39A JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND EXTCODESIZE PUSH2 0xCB4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313936373A206E657720696D706C656D656E746174696F6E206973206E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F74206120636F6E747261637400000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x39A JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xD0B DUP4 PUSH2 0xDC7 JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD GT DUP1 PUSH2 0xD18 JUMPI POP DUP1 JUMPDEST ISZERO PUSH2 0x995 JUMPI PUSH2 0xD27 DUP4 DUP4 PUSH2 0xE07 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0xD98 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x39A JUMP JUMPDEST PUSH1 0xC9 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xDD0 DUP2 PUSH2 0xC37 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xE2C DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x122D PUSH1 0x27 SWAP2 CODECOPY PUSH2 0xE33 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0xE50 SWAP2 SWAP1 PUSH2 0x11DD JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xE8B JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xE90 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0xEA1 DUP7 DUP4 DUP4 DUP8 PUSH2 0xEAB JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0xF1A JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0xF13 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0xF13 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x39A JUMP JUMPDEST POP DUP2 PUSH2 0xF24 JUMP JUMPDEST PUSH2 0xF24 DUP4 DUP4 PUSH2 0xF2C JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0xF3C JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x39A SWAP2 SWAP1 PUSH2 0x11F9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xF86 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0xE2C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xFB0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH2 0xE2C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0xFED JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0xFCB JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x5C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x101D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xE2C DUP2 PUSH2 0xFF6 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH1 0x3 DUP4 LT PUSH2 0x104A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 SWAP1 MSTORE SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1079 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x1084 DUP2 PUSH2 0xFF6 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x10A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x10B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x10C7 JUMPI PUSH2 0x10C7 PUSH2 0x1050 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x10EF JUMPI PUSH2 0x10EF PUSH2 0x1050 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x1108 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x113C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND DUP4 MSTORE DUP1 DUP8 AND PUSH1 0x20 DUP5 ADD MSTORE POP DUP5 PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x80 PUSH1 0x60 DUP4 ADD MSTORE DUP3 PUSH1 0x80 DUP4 ADD MSTORE DUP3 DUP5 PUSH1 0xA0 DUP5 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0xA0 DUP5 DUP5 ADD ADD MSTORE PUSH1 0xA0 PUSH1 0x1F NOT PUSH1 0x1F DUP6 ADD AND DUP4 ADD ADD SWAP1 POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x11A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xE2C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x11D4 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x11BC JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x11EF DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x11B9 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x1218 DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x11B9 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A164 PUSH20 0x6F6C6343000811000A0000000000000000000000 ","sourceMap":"1334:546:53:-:0;;;1198:4:5;1155:48;;1334:546:53;;;;;;;;;-1:-1:-1;1489:22:75;:20;:22::i;:::-;1334:546:53;;5939:280:4;6007:13;;;;;;;6006:14;5998:66;;;;-1:-1:-1;;;5998:66:4;;216:2:92;5998:66:4;;;198:21:92;255:2;235:18;;;228:30;294:34;274:18;;;267:62;-1:-1:-1;;;345:18:92;;;338:37;392:19;;5998:66:4;;;;;;;;6078:12;;6094:15;6078:12;;;:31;6074:139;;6125:12;:30;;-1:-1:-1;;6125:30:4;6140:15;6125:30;;;;;;6174:28;;564:36:92;;;6174:28:4;;552:2:92;537:18;6174:28:4;;;;;;;6074:139;5939:280::o;422:184:92:-;1334:546:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@UPGRADE_PLUGIN_PERMISSION_ID_13556":{"entryPoint":null,"id":13556,"parameterSlots":0,"returnSlots":0},"@__DaoAuthorizableUpgradeable_init_13125":{"entryPoint":3373,"id":13125,"parameterSlots":1,"returnSlots":0},"@__PluginUUPSUpgradeable_init_13570":{"entryPoint":2823,"id":13570,"parameterSlots":1,"returnSlots":0},"@_auth_13211":{"entryPoint":2939,"id":13211,"parameterSlots":6,"returnSlots":0},"@_authorizeUpgrade_13627":{"entryPoint":2341,"id":13627,"parameterSlots":1,"returnSlots":0},"@_getImplementation_76":{"entryPoint":null,"id":76,"parameterSlots":0,"returnSlots":1},"@_msgData_2579":{"entryPoint":null,"id":2579,"parameterSlots":0,"returnSlots":2},"@_msgSender_2570":{"entryPoint":null,"id":2570,"parameterSlots":0,"returnSlots":1},"@_revert_1000":{"entryPoint":3884,"id":1000,"parameterSlots":2,"returnSlots":0},"@_setImplementation_100":{"entryPoint":3127,"id":100,"parameterSlots":1,"returnSlots":0},"@_upgradeToAndCallUUPS_198":{"entryPoint":2402,"id":198,"parameterSlots":3,"returnSlots":0},"@_upgradeToAndCall_145":{"entryPoint":3330,"id":145,"parameterSlots":3,"returnSlots":0},"@_upgradeTo_115":{"entryPoint":3527,"id":115,"parameterSlots":1,"returnSlots":0},"@dao_13135":{"entryPoint":null,"id":13135,"parameterSlots":0,"returnSlots":1},"@functionDelegateCall_888":{"entryPoint":3591,"id":888,"parameterSlots":2,"returnSlots":1},"@functionDelegateCall_917":{"entryPoint":3635,"id":917,"parameterSlots":3,"returnSlots":1},"@getAddressSlot_2699":{"entryPoint":null,"id":2699,"parameterSlots":1,"returnSlots":1},"@getBooleanSlot_2710":{"entryPoint":null,"id":2710,"parameterSlots":1,"returnSlots":1},"@implementation_13616":{"entryPoint":2043,"id":13616,"parameterSlots":0,"returnSlots":1},"@initializeFrom_11899":{"entryPoint":793,"id":11899,"parameterSlots":1,"returnSlots":0},"@initialize_11872":{"entryPoint":2099,"id":11872,"parameterSlots":1,"returnSlots":0},"@isContract_689":{"entryPoint":null,"id":689,"parameterSlots":1,"returnSlots":1},"@pluginType_13550":{"entryPoint":null,"id":13550,"parameterSlots":0,"returnSlots":1},"@protocolVersion_14765":{"entryPoint":1061,"id":14765,"parameterSlots":0,"returnSlots":1},"@proxiableUUID_616":{"entryPoint":1846,"id":616,"parameterSlots":0,"returnSlots":1},"@state1_11842":{"entryPoint":null,"id":11842,"parameterSlots":0,"returnSlots":0},"@state2_11844":{"entryPoint":null,"id":11844,"parameterSlots":0,"returnSlots":0},"@state3_11846":{"entryPoint":null,"id":11846,"parameterSlots":0,"returnSlots":0},"@supportsInterface_13606":{"entryPoint":685,"id":13606,"parameterSlots":1,"returnSlots":1},"@supportsInterface_2816":{"entryPoint":null,"id":2816,"parameterSlots":1,"returnSlots":1},"@upgradeToAndCall_659":{"entryPoint":1482,"id":659,"parameterSlots":2,"returnSlots":0},"@upgradeTo_638":{"entryPoint":1103,"id":638,"parameterSlots":1,"returnSlots":0},"@verifyCallResultFromTarget_956":{"entryPoint":3755,"id":956,"parameterSlots":4,"returnSlots":1},"abi_decode_tuple_t_address":{"entryPoint":4107,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_bytes_memory_ptr":{"entryPoint":4198,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_bool_fromMemory":{"entryPoint":4503,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes32_fromMemory":{"entryPoint":4394,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes4":{"entryPoint":3956,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_contract$_IDAO_$10865":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint16":{"entryPoint":3998,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":4573,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address_t_address_t_address_t_bytes32__to_t_address_t_address_t_address_t_bytes32__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":5,"returnSlots":1},"abi_encode_tuple_t_address_t_address_t_bytes32_t_bytes_calldata_ptr__to_t_address_t_address_t_bytes32_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":4419,"id":null,"parameterSlots":6,"returnSlots":1},"abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed":{"entryPoint":4034,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_contract$_IDAO_$10865__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_enum$_PluginType_$13330__to_t_uint8__fromStack_reversed":{"entryPoint":4136,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":4601,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_36e108fa7a809b52ab1951dd91c117a7bc9ac5250bdf1aa162d4e104f7edf9eb__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_52f1ead4d9653e13afbd2e90ef2587c30187cd50b2e97d784e3f7a7541247434__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_67f0151b4ad1dcfa0e3302a0cd6019f51582ef1807b37dceb00bd852a514f7f4__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_76b6b6debfc5febf101145a79ecf0b0d2e89e397dfdab2bca99888370411152c__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_8e8e2fbcb586f700b5b14e2c4a650c8d83b9773c31c5fe8962070ea544e11f24__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"copy_memory_to_memory_with_cleanup":{"entryPoint":4537,"id":null,"parameterSlots":3,"returnSlots":0},"panic_error_0x41":{"entryPoint":4176,"id":null,"parameterSlots":0,"returnSlots":0},"validator_revert_address":{"entryPoint":4086,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:10793:92","statements":[{"nodeType":"YulBlock","src":"6:3:92","statements":[]},{"body":{"nodeType":"YulBlock","src":"83:217:92","statements":[{"body":{"nodeType":"YulBlock","src":"129:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"138:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"141:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"131:6:92"},"nodeType":"YulFunctionCall","src":"131:12:92"},"nodeType":"YulExpressionStatement","src":"131:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"104:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"113:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"100:3:92"},"nodeType":"YulFunctionCall","src":"100:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"125:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"96:3:92"},"nodeType":"YulFunctionCall","src":"96:32:92"},"nodeType":"YulIf","src":"93:52:92"},{"nodeType":"YulVariableDeclaration","src":"154:36:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"180:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"167:12:92"},"nodeType":"YulFunctionCall","src":"167:23:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"158:5:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"254:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"263:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"266:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"256:6:92"},"nodeType":"YulFunctionCall","src":"256:12:92"},"nodeType":"YulExpressionStatement","src":"256:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"212:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"223:5:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"234:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"239:10:92","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"230:3:92"},"nodeType":"YulFunctionCall","src":"230:20:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"219:3:92"},"nodeType":"YulFunctionCall","src":"219:32:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"209:2:92"},"nodeType":"YulFunctionCall","src":"209:43:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"202:6:92"},"nodeType":"YulFunctionCall","src":"202:51:92"},"nodeType":"YulIf","src":"199:71:92"},{"nodeType":"YulAssignment","src":"279:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"289:5:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"279:6:92"}]}]},"name":"abi_decode_tuple_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"49:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"60:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"72:6:92","type":""}],"src":"14:286:92"},{"body":{"nodeType":"YulBlock","src":"400:92:92","statements":[{"nodeType":"YulAssignment","src":"410:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"422:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"433:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"418:3:92"},"nodeType":"YulFunctionCall","src":"418:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"410:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"452:9:92"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"477:6:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"470:6:92"},"nodeType":"YulFunctionCall","src":"470:14:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"463:6:92"},"nodeType":"YulFunctionCall","src":"463:22:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"445:6:92"},"nodeType":"YulFunctionCall","src":"445:41:92"},"nodeType":"YulExpressionStatement","src":"445:41:92"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"369:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"380:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"391:4:92","type":""}],"src":"305:187:92"},{"body":{"nodeType":"YulBlock","src":"566:203:92","statements":[{"body":{"nodeType":"YulBlock","src":"612:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"621:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"624:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"614:6:92"},"nodeType":"YulFunctionCall","src":"614:12:92"},"nodeType":"YulExpressionStatement","src":"614:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"587:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"596:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"583:3:92"},"nodeType":"YulFunctionCall","src":"583:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"608:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"579:3:92"},"nodeType":"YulFunctionCall","src":"579:32:92"},"nodeType":"YulIf","src":"576:52:92"},{"nodeType":"YulVariableDeclaration","src":"637:36:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"663:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"650:12:92"},"nodeType":"YulFunctionCall","src":"650:23:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"641:5:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"723:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"732:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"735:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"725:6:92"},"nodeType":"YulFunctionCall","src":"725:12:92"},"nodeType":"YulExpressionStatement","src":"725:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"695:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"706:5:92"},{"kind":"number","nodeType":"YulLiteral","src":"713:6:92","type":"","value":"0xffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"702:3:92"},"nodeType":"YulFunctionCall","src":"702:18:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"692:2:92"},"nodeType":"YulFunctionCall","src":"692:29:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"685:6:92"},"nodeType":"YulFunctionCall","src":"685:37:92"},"nodeType":"YulIf","src":"682:57:92"},{"nodeType":"YulAssignment","src":"748:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"758:5:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"748:6:92"}]}]},"name":"abi_decode_tuple_t_uint16","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"532:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"543:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"555:6:92","type":""}],"src":"497:272:92"},{"body":{"nodeType":"YulBlock","src":"875:76:92","statements":[{"nodeType":"YulAssignment","src":"885:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"897:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"908:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"893:3:92"},"nodeType":"YulFunctionCall","src":"893:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"885:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"927:9:92"},{"name":"value0","nodeType":"YulIdentifier","src":"938:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"920:6:92"},"nodeType":"YulFunctionCall","src":"920:25:92"},"nodeType":"YulExpressionStatement","src":"920:25:92"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"844:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"855:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"866:4:92","type":""}],"src":"774:177:92"},{"body":{"nodeType":"YulBlock","src":"1099:358:92","statements":[{"nodeType":"YulAssignment","src":"1109:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1121:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1132:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1117:3:92"},"nodeType":"YulFunctionCall","src":"1117:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1109:4:92"}]},{"nodeType":"YulVariableDeclaration","src":"1144:20:92","value":{"name":"headStart","nodeType":"YulIdentifier","src":"1155:9:92"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"1148:3:92","type":""}]},{"nodeType":"YulAssignment","src":"1173:16:92","value":{"name":"headStart","nodeType":"YulIdentifier","src":"1180:9:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"1173:3:92"}]},{"nodeType":"YulVariableDeclaration","src":"1198:20:92","value":{"name":"value0","nodeType":"YulIdentifier","src":"1212:6:92"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"1202:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"1227:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"1236:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"1231:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"1293:158:92","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1314:3:92"},{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"1329:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1323:5:92"},"nodeType":"YulFunctionCall","src":"1323:13:92"},{"kind":"number","nodeType":"YulLiteral","src":"1338:4:92","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1319:3:92"},"nodeType":"YulFunctionCall","src":"1319:24:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1307:6:92"},"nodeType":"YulFunctionCall","src":"1307:37:92"},"nodeType":"YulExpressionStatement","src":"1307:37:92"},{"nodeType":"YulVariableDeclaration","src":"1357:14:92","value":{"kind":"number","nodeType":"YulLiteral","src":"1367:4:92","type":"","value":"0x20"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"1361:2:92","type":""}]},{"nodeType":"YulAssignment","src":"1384:19:92","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1395:3:92"},{"name":"_1","nodeType":"YulIdentifier","src":"1400:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1391:3:92"},"nodeType":"YulFunctionCall","src":"1391:12:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"1384:3:92"}]},{"nodeType":"YulAssignment","src":"1416:25:92","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"1430:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"1438:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1426:3:92"},"nodeType":"YulFunctionCall","src":"1426:15:92"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"1416:6:92"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"1257:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"1260:4:92","type":"","value":"0x03"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"1254:2:92"},"nodeType":"YulFunctionCall","src":"1254:11:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"1266:18:92","statements":[{"nodeType":"YulAssignment","src":"1268:14:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"1277:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"1280:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1273:3:92"},"nodeType":"YulFunctionCall","src":"1273:9:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"1268:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"1250:3:92","statements":[]},"src":"1246:205:92"}]},"name":"abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1068:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1079:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1090:4:92","type":""}],"src":"956:501:92"},{"body":{"nodeType":"YulBlock","src":"1507:109:92","statements":[{"body":{"nodeType":"YulBlock","src":"1594:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1603:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1606:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1596:6:92"},"nodeType":"YulFunctionCall","src":"1596:12:92"},"nodeType":"YulExpressionStatement","src":"1596:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1530:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1541:5:92"},{"kind":"number","nodeType":"YulLiteral","src":"1548:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1537:3:92"},"nodeType":"YulFunctionCall","src":"1537:54:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1527:2:92"},"nodeType":"YulFunctionCall","src":"1527:65:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1520:6:92"},"nodeType":"YulFunctionCall","src":"1520:73:92"},"nodeType":"YulIf","src":"1517:93:92"}]},"name":"validator_revert_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1496:5:92","type":""}],"src":"1462:154:92"},{"body":{"nodeType":"YulBlock","src":"1691:177:92","statements":[{"body":{"nodeType":"YulBlock","src":"1737:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1746:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1749:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1739:6:92"},"nodeType":"YulFunctionCall","src":"1739:12:92"},"nodeType":"YulExpressionStatement","src":"1739:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1712:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"1721:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1708:3:92"},"nodeType":"YulFunctionCall","src":"1708:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"1733:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1704:3:92"},"nodeType":"YulFunctionCall","src":"1704:32:92"},"nodeType":"YulIf","src":"1701:52:92"},{"nodeType":"YulVariableDeclaration","src":"1762:36:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1788:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1775:12:92"},"nodeType":"YulFunctionCall","src":"1775:23:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"1766:5:92","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1832:5:92"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"1807:24:92"},"nodeType":"YulFunctionCall","src":"1807:31:92"},"nodeType":"YulExpressionStatement","src":"1807:31:92"},{"nodeType":"YulAssignment","src":"1847:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"1857:5:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1847:6:92"}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1657:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1668:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1680:6:92","type":""}],"src":"1621:247:92"},{"body":{"nodeType":"YulBlock","src":"1988:125:92","statements":[{"nodeType":"YulAssignment","src":"1998:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2010:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2021:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2006:3:92"},"nodeType":"YulFunctionCall","src":"2006:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1998:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2040:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2055:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"2063:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2051:3:92"},"nodeType":"YulFunctionCall","src":"2051:55:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2033:6:92"},"nodeType":"YulFunctionCall","src":"2033:74:92"},"nodeType":"YulExpressionStatement","src":"2033:74:92"}]},"name":"abi_encode_tuple_t_contract$_IDAO_$10865__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1957:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1968:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1979:4:92","type":""}],"src":"1873:240:92"},{"body":{"nodeType":"YulBlock","src":"2233:229:92","statements":[{"nodeType":"YulAssignment","src":"2243:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2255:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2266:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2251:3:92"},"nodeType":"YulFunctionCall","src":"2251:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2243:4:92"}]},{"body":{"nodeType":"YulBlock","src":"2311:111:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2332:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2339:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"2344:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2335:3:92"},"nodeType":"YulFunctionCall","src":"2335:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2325:6:92"},"nodeType":"YulFunctionCall","src":"2325:31:92"},"nodeType":"YulExpressionStatement","src":"2325:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2376:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"2379:4:92","type":"","value":"0x21"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2369:6:92"},"nodeType":"YulFunctionCall","src":"2369:15:92"},"nodeType":"YulExpressionStatement","src":"2369:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2404:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2407:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2397:6:92"},"nodeType":"YulFunctionCall","src":"2397:15:92"},"nodeType":"YulExpressionStatement","src":"2397:15:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2291:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"2299:1:92","type":"","value":"3"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2288:2:92"},"nodeType":"YulFunctionCall","src":"2288:13:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2281:6:92"},"nodeType":"YulFunctionCall","src":"2281:21:92"},"nodeType":"YulIf","src":"2278:144:92"},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2438:9:92"},{"name":"value0","nodeType":"YulIdentifier","src":"2449:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2431:6:92"},"nodeType":"YulFunctionCall","src":"2431:25:92"},"nodeType":"YulExpressionStatement","src":"2431:25:92"}]},"name":"abi_encode_tuple_t_enum$_PluginType_$13330__to_t_uint8__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2202:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"2213:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2224:4:92","type":""}],"src":"2118:344:92"},{"body":{"nodeType":"YulBlock","src":"2499:95:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2516:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2523:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"2528:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2519:3:92"},"nodeType":"YulFunctionCall","src":"2519:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2509:6:92"},"nodeType":"YulFunctionCall","src":"2509:31:92"},"nodeType":"YulExpressionStatement","src":"2509:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2556:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"2559:4:92","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2549:6:92"},"nodeType":"YulFunctionCall","src":"2549:15:92"},"nodeType":"YulExpressionStatement","src":"2549:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2580:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2583:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2573:6:92"},"nodeType":"YulFunctionCall","src":"2573:15:92"},"nodeType":"YulExpressionStatement","src":"2573:15:92"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"2467:127:92"},{"body":{"nodeType":"YulBlock","src":"2695:960:92","statements":[{"body":{"nodeType":"YulBlock","src":"2741:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2750:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2753:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2743:6:92"},"nodeType":"YulFunctionCall","src":"2743:12:92"},"nodeType":"YulExpressionStatement","src":"2743:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2716:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"2725:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2712:3:92"},"nodeType":"YulFunctionCall","src":"2712:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"2737:2:92","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2708:3:92"},"nodeType":"YulFunctionCall","src":"2708:32:92"},"nodeType":"YulIf","src":"2705:52:92"},{"nodeType":"YulVariableDeclaration","src":"2766:36:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2792:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2779:12:92"},"nodeType":"YulFunctionCall","src":"2779:23:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"2770:5:92","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2836:5:92"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"2811:24:92"},"nodeType":"YulFunctionCall","src":"2811:31:92"},"nodeType":"YulExpressionStatement","src":"2811:31:92"},{"nodeType":"YulAssignment","src":"2851:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"2861:5:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2851:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"2875:46:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2906:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2917:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2902:3:92"},"nodeType":"YulFunctionCall","src":"2902:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2889:12:92"},"nodeType":"YulFunctionCall","src":"2889:32:92"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"2879:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2930:28:92","value":{"kind":"number","nodeType":"YulLiteral","src":"2940:18:92","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"2934:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"2985:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2994:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2997:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2987:6:92"},"nodeType":"YulFunctionCall","src":"2987:12:92"},"nodeType":"YulExpressionStatement","src":"2987:12:92"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"2973:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"2981:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2970:2:92"},"nodeType":"YulFunctionCall","src":"2970:14:92"},"nodeType":"YulIf","src":"2967:34:92"},{"nodeType":"YulVariableDeclaration","src":"3010:32:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3024:9:92"},{"name":"offset","nodeType":"YulIdentifier","src":"3035:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3020:3:92"},"nodeType":"YulFunctionCall","src":"3020:22:92"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"3014:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"3090:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3099:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3102:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3092:6:92"},"nodeType":"YulFunctionCall","src":"3092:12:92"},"nodeType":"YulExpressionStatement","src":"3092:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"3069:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"3073:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3065:3:92"},"nodeType":"YulFunctionCall","src":"3065:13:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3080:7:92"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3061:3:92"},"nodeType":"YulFunctionCall","src":"3061:27:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3054:6:92"},"nodeType":"YulFunctionCall","src":"3054:35:92"},"nodeType":"YulIf","src":"3051:55:92"},{"nodeType":"YulVariableDeclaration","src":"3115:26:92","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"3138:2:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3125:12:92"},"nodeType":"YulFunctionCall","src":"3125:16:92"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"3119:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"3164:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"3166:16:92"},"nodeType":"YulFunctionCall","src":"3166:18:92"},"nodeType":"YulExpressionStatement","src":"3166:18:92"}]},"condition":{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"3156:2:92"},{"name":"_1","nodeType":"YulIdentifier","src":"3160:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3153:2:92"},"nodeType":"YulFunctionCall","src":"3153:10:92"},"nodeType":"YulIf","src":"3150:36:92"},{"nodeType":"YulVariableDeclaration","src":"3195:17:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3209:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"3205:3:92"},"nodeType":"YulFunctionCall","src":"3205:7:92"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"3199:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3221:23:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3241:2:92","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3235:5:92"},"nodeType":"YulFunctionCall","src":"3235:9:92"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"3225:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3253:71:92","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"3275:6:92"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"3299:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"3303:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3295:3:92"},"nodeType":"YulFunctionCall","src":"3295:13:92"},{"name":"_4","nodeType":"YulIdentifier","src":"3310:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3291:3:92"},"nodeType":"YulFunctionCall","src":"3291:22:92"},{"kind":"number","nodeType":"YulLiteral","src":"3315:2:92","type":"","value":"63"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3287:3:92"},"nodeType":"YulFunctionCall","src":"3287:31:92"},{"name":"_4","nodeType":"YulIdentifier","src":"3320:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3283:3:92"},"nodeType":"YulFunctionCall","src":"3283:40:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3271:3:92"},"nodeType":"YulFunctionCall","src":"3271:53:92"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"3257:10:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"3383:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"3385:16:92"},"nodeType":"YulFunctionCall","src":"3385:18:92"},"nodeType":"YulExpressionStatement","src":"3385:18:92"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"3342:10:92"},{"name":"_1","nodeType":"YulIdentifier","src":"3354:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3339:2:92"},"nodeType":"YulFunctionCall","src":"3339:18:92"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"3362:10:92"},{"name":"memPtr","nodeType":"YulIdentifier","src":"3374:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"3359:2:92"},"nodeType":"YulFunctionCall","src":"3359:22:92"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"3336:2:92"},"nodeType":"YulFunctionCall","src":"3336:46:92"},"nodeType":"YulIf","src":"3333:72:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3421:2:92","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"3425:10:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3414:6:92"},"nodeType":"YulFunctionCall","src":"3414:22:92"},"nodeType":"YulExpressionStatement","src":"3414:22:92"},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"3452:6:92"},{"name":"_3","nodeType":"YulIdentifier","src":"3460:2:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3445:6:92"},"nodeType":"YulFunctionCall","src":"3445:18:92"},"nodeType":"YulExpressionStatement","src":"3445:18:92"},{"body":{"nodeType":"YulBlock","src":"3509:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3518:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3521:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3511:6:92"},"nodeType":"YulFunctionCall","src":"3511:12:92"},"nodeType":"YulExpressionStatement","src":"3511:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"3486:2:92"},{"name":"_3","nodeType":"YulIdentifier","src":"3490:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3482:3:92"},"nodeType":"YulFunctionCall","src":"3482:11:92"},{"kind":"number","nodeType":"YulLiteral","src":"3495:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3478:3:92"},"nodeType":"YulFunctionCall","src":"3478:20:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3500:7:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3475:2:92"},"nodeType":"YulFunctionCall","src":"3475:33:92"},"nodeType":"YulIf","src":"3472:53:92"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"3551:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"3559:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3547:3:92"},"nodeType":"YulFunctionCall","src":"3547:15:92"},{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"3568:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"3572:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3564:3:92"},"nodeType":"YulFunctionCall","src":"3564:11:92"},{"name":"_3","nodeType":"YulIdentifier","src":"3577:2:92"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"3534:12:92"},"nodeType":"YulFunctionCall","src":"3534:46:92"},"nodeType":"YulExpressionStatement","src":"3534:46:92"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"3604:6:92"},{"name":"_3","nodeType":"YulIdentifier","src":"3612:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3600:3:92"},"nodeType":"YulFunctionCall","src":"3600:15:92"},{"kind":"number","nodeType":"YulLiteral","src":"3617:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3596:3:92"},"nodeType":"YulFunctionCall","src":"3596:24:92"},{"kind":"number","nodeType":"YulLiteral","src":"3622:1:92","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3589:6:92"},"nodeType":"YulFunctionCall","src":"3589:35:92"},"nodeType":"YulExpressionStatement","src":"3589:35:92"},{"nodeType":"YulAssignment","src":"3633:16:92","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"3643:6:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"3633:6:92"}]}]},"name":"abi_decode_tuple_t_addresst_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2653:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2664:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2676:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2684:6:92","type":""}],"src":"2599:1056:92"},{"body":{"nodeType":"YulBlock","src":"3761:76:92","statements":[{"nodeType":"YulAssignment","src":"3771:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3783:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3794:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3779:3:92"},"nodeType":"YulFunctionCall","src":"3779:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3771:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3813:9:92"},{"name":"value0","nodeType":"YulIdentifier","src":"3824:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3806:6:92"},"nodeType":"YulFunctionCall","src":"3806:25:92"},"nodeType":"YulExpressionStatement","src":"3806:25:92"}]},"name":"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3730:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3741:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3752:4:92","type":""}],"src":"3660:177:92"},{"body":{"nodeType":"YulBlock","src":"3943:125:92","statements":[{"nodeType":"YulAssignment","src":"3953:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3965:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3976:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3961:3:92"},"nodeType":"YulFunctionCall","src":"3961:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3953:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3995:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4010:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"4018:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4006:3:92"},"nodeType":"YulFunctionCall","src":"4006:55:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3988:6:92"},"nodeType":"YulFunctionCall","src":"3988:74:92"},"nodeType":"YulExpressionStatement","src":"3988:74:92"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3912:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3923:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3934:4:92","type":""}],"src":"3842:226:92"},{"body":{"nodeType":"YulBlock","src":"4157:177:92","statements":[{"body":{"nodeType":"YulBlock","src":"4203:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4212:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4215:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4205:6:92"},"nodeType":"YulFunctionCall","src":"4205:12:92"},"nodeType":"YulExpressionStatement","src":"4205:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"4178:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"4187:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4174:3:92"},"nodeType":"YulFunctionCall","src":"4174:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"4199:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4170:3:92"},"nodeType":"YulFunctionCall","src":"4170:32:92"},"nodeType":"YulIf","src":"4167:52:92"},{"nodeType":"YulVariableDeclaration","src":"4228:36:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4254:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4241:12:92"},"nodeType":"YulFunctionCall","src":"4241:23:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"4232:5:92","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4298:5:92"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"4273:24:92"},"nodeType":"YulFunctionCall","src":"4273:31:92"},"nodeType":"YulExpressionStatement","src":"4273:31:92"},{"nodeType":"YulAssignment","src":"4313:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"4323:5:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"4313:6:92"}]}]},"name":"abi_decode_tuple_t_contract$_IDAO_$10865","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4123:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"4134:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"4146:6:92","type":""}],"src":"4073:261:92"},{"body":{"nodeType":"YulBlock","src":"4513:236:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4530:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4541:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4523:6:92"},"nodeType":"YulFunctionCall","src":"4523:21:92"},"nodeType":"YulExpressionStatement","src":"4523:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4564:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4575:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4560:3:92"},"nodeType":"YulFunctionCall","src":"4560:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"4580:2:92","type":"","value":"46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4553:6:92"},"nodeType":"YulFunctionCall","src":"4553:30:92"},"nodeType":"YulExpressionStatement","src":"4553:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4603:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4614:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4599:3:92"},"nodeType":"YulFunctionCall","src":"4599:18:92"},{"hexValue":"496e697469616c697a61626c653a20636f6e747261637420697320616c726561","kind":"string","nodeType":"YulLiteral","src":"4619:34:92","type":"","value":"Initializable: contract is alrea"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4592:6:92"},"nodeType":"YulFunctionCall","src":"4592:62:92"},"nodeType":"YulExpressionStatement","src":"4592:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4674:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4685:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4670:3:92"},"nodeType":"YulFunctionCall","src":"4670:18:92"},{"hexValue":"647920696e697469616c697a6564","kind":"string","nodeType":"YulLiteral","src":"4690:16:92","type":"","value":"dy initialized"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4663:6:92"},"nodeType":"YulFunctionCall","src":"4663:44:92"},"nodeType":"YulExpressionStatement","src":"4663:44:92"},{"nodeType":"YulAssignment","src":"4716:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4728:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4739:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4724:3:92"},"nodeType":"YulFunctionCall","src":"4724:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4716:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4490:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4504:4:92","type":""}],"src":"4339:410:92"},{"body":{"nodeType":"YulBlock","src":"4851:87:92","statements":[{"nodeType":"YulAssignment","src":"4861:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4873:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4884:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4869:3:92"},"nodeType":"YulFunctionCall","src":"4869:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4861:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4903:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4918:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"4926:4:92","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4914:3:92"},"nodeType":"YulFunctionCall","src":"4914:17:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4896:6:92"},"nodeType":"YulFunctionCall","src":"4896:36:92"},"nodeType":"YulExpressionStatement","src":"4896:36:92"}]},"name":"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4820:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"4831:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4842:4:92","type":""}],"src":"4754:184:92"},{"body":{"nodeType":"YulBlock","src":"5117:234:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5134:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5145:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5127:6:92"},"nodeType":"YulFunctionCall","src":"5127:21:92"},"nodeType":"YulExpressionStatement","src":"5127:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5168:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5179:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5164:3:92"},"nodeType":"YulFunctionCall","src":"5164:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"5184:2:92","type":"","value":"44"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5157:6:92"},"nodeType":"YulFunctionCall","src":"5157:30:92"},"nodeType":"YulExpressionStatement","src":"5157:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5207:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5218:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5203:3:92"},"nodeType":"YulFunctionCall","src":"5203:18:92"},{"hexValue":"46756e6374696f6e206d7573742062652063616c6c6564207468726f75676820","kind":"string","nodeType":"YulLiteral","src":"5223:34:92","type":"","value":"Function must be called through "}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5196:6:92"},"nodeType":"YulFunctionCall","src":"5196:62:92"},"nodeType":"YulExpressionStatement","src":"5196:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5278:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5289:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5274:3:92"},"nodeType":"YulFunctionCall","src":"5274:18:92"},{"hexValue":"64656c656761746563616c6c","kind":"string","nodeType":"YulLiteral","src":"5294:14:92","type":"","value":"delegatecall"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5267:6:92"},"nodeType":"YulFunctionCall","src":"5267:42:92"},"nodeType":"YulExpressionStatement","src":"5267:42:92"},{"nodeType":"YulAssignment","src":"5318:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5330:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5341:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5326:3:92"},"nodeType":"YulFunctionCall","src":"5326:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5318:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_36e108fa7a809b52ab1951dd91c117a7bc9ac5250bdf1aa162d4e104f7edf9eb__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5094:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5108:4:92","type":""}],"src":"4943:408:92"},{"body":{"nodeType":"YulBlock","src":"5530:234:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5547:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5558:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5540:6:92"},"nodeType":"YulFunctionCall","src":"5540:21:92"},"nodeType":"YulExpressionStatement","src":"5540:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5581:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5592:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5577:3:92"},"nodeType":"YulFunctionCall","src":"5577:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"5597:2:92","type":"","value":"44"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5570:6:92"},"nodeType":"YulFunctionCall","src":"5570:30:92"},"nodeType":"YulExpressionStatement","src":"5570:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5620:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5631:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5616:3:92"},"nodeType":"YulFunctionCall","src":"5616:18:92"},{"hexValue":"46756e6374696f6e206d7573742062652063616c6c6564207468726f75676820","kind":"string","nodeType":"YulLiteral","src":"5636:34:92","type":"","value":"Function must be called through "}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5609:6:92"},"nodeType":"YulFunctionCall","src":"5609:62:92"},"nodeType":"YulExpressionStatement","src":"5609:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5691:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5702:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5687:3:92"},"nodeType":"YulFunctionCall","src":"5687:18:92"},{"hexValue":"6163746976652070726f7879","kind":"string","nodeType":"YulLiteral","src":"5707:14:92","type":"","value":"active proxy"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5680:6:92"},"nodeType":"YulFunctionCall","src":"5680:42:92"},"nodeType":"YulExpressionStatement","src":"5680:42:92"},{"nodeType":"YulAssignment","src":"5731:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5743:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5754:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5739:3:92"},"nodeType":"YulFunctionCall","src":"5739:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5731:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_52f1ead4d9653e13afbd2e90ef2587c30187cd50b2e97d784e3f7a7541247434__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5507:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5521:4:92","type":""}],"src":"5356:408:92"},{"body":{"nodeType":"YulBlock","src":"5943:246:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5960:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5971:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5953:6:92"},"nodeType":"YulFunctionCall","src":"5953:21:92"},"nodeType":"YulExpressionStatement","src":"5953:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5994:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6005:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5990:3:92"},"nodeType":"YulFunctionCall","src":"5990:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"6010:2:92","type":"","value":"56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5983:6:92"},"nodeType":"YulFunctionCall","src":"5983:30:92"},"nodeType":"YulExpressionStatement","src":"5983:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6033:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6044:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6029:3:92"},"nodeType":"YulFunctionCall","src":"6029:18:92"},{"hexValue":"555550535570677261646561626c653a206d757374206e6f742062652063616c","kind":"string","nodeType":"YulLiteral","src":"6049:34:92","type":"","value":"UUPSUpgradeable: must not be cal"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6022:6:92"},"nodeType":"YulFunctionCall","src":"6022:62:92"},"nodeType":"YulExpressionStatement","src":"6022:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6104:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6115:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6100:3:92"},"nodeType":"YulFunctionCall","src":"6100:18:92"},{"hexValue":"6c6564207468726f7567682064656c656761746563616c6c","kind":"string","nodeType":"YulLiteral","src":"6120:26:92","type":"","value":"led through delegatecall"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6093:6:92"},"nodeType":"YulFunctionCall","src":"6093:54:92"},"nodeType":"YulExpressionStatement","src":"6093:54:92"},{"nodeType":"YulAssignment","src":"6156:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6168:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6179:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6164:3:92"},"nodeType":"YulFunctionCall","src":"6164:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6156:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_67f0151b4ad1dcfa0e3302a0cd6019f51582ef1807b37dceb00bd852a514f7f4__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5920:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5934:4:92","type":""}],"src":"5769:420:92"},{"body":{"nodeType":"YulBlock","src":"6275:103:92","statements":[{"body":{"nodeType":"YulBlock","src":"6321:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6330:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6333:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6323:6:92"},"nodeType":"YulFunctionCall","src":"6323:12:92"},"nodeType":"YulExpressionStatement","src":"6323:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"6296:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"6305:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6292:3:92"},"nodeType":"YulFunctionCall","src":"6292:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"6317:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6288:3:92"},"nodeType":"YulFunctionCall","src":"6288:32:92"},"nodeType":"YulIf","src":"6285:52:92"},{"nodeType":"YulAssignment","src":"6346:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6362:9:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6356:5:92"},"nodeType":"YulFunctionCall","src":"6356:16:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"6346:6:92"}]}]},"name":"abi_decode_tuple_t_bytes32_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6241:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"6252:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"6264:6:92","type":""}],"src":"6194:184:92"},{"body":{"nodeType":"YulBlock","src":"6557:236:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6574:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6585:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6567:6:92"},"nodeType":"YulFunctionCall","src":"6567:21:92"},"nodeType":"YulExpressionStatement","src":"6567:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6608:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6619:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6604:3:92"},"nodeType":"YulFunctionCall","src":"6604:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"6624:2:92","type":"","value":"46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6597:6:92"},"nodeType":"YulFunctionCall","src":"6597:30:92"},"nodeType":"YulExpressionStatement","src":"6597:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6647:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6658:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6643:3:92"},"nodeType":"YulFunctionCall","src":"6643:18:92"},{"hexValue":"45524331393637557067726164653a206e657720696d706c656d656e74617469","kind":"string","nodeType":"YulLiteral","src":"6663:34:92","type":"","value":"ERC1967Upgrade: new implementati"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6636:6:92"},"nodeType":"YulFunctionCall","src":"6636:62:92"},"nodeType":"YulExpressionStatement","src":"6636:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6718:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6729:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6714:3:92"},"nodeType":"YulFunctionCall","src":"6714:18:92"},{"hexValue":"6f6e206973206e6f742055555053","kind":"string","nodeType":"YulLiteral","src":"6734:16:92","type":"","value":"on is not UUPS"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6707:6:92"},"nodeType":"YulFunctionCall","src":"6707:44:92"},"nodeType":"YulExpressionStatement","src":"6707:44:92"},{"nodeType":"YulAssignment","src":"6760:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6772:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6783:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6768:3:92"},"nodeType":"YulFunctionCall","src":"6768:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6760:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_8e8e2fbcb586f700b5b14e2c4a650c8d83b9773c31c5fe8962070ea544e11f24__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6534:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6548:4:92","type":""}],"src":"6383:410:92"},{"body":{"nodeType":"YulBlock","src":"6972:231:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6989:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7000:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6982:6:92"},"nodeType":"YulFunctionCall","src":"6982:21:92"},"nodeType":"YulExpressionStatement","src":"6982:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7023:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7034:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7019:3:92"},"nodeType":"YulFunctionCall","src":"7019:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"7039:2:92","type":"","value":"41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7012:6:92"},"nodeType":"YulFunctionCall","src":"7012:30:92"},"nodeType":"YulExpressionStatement","src":"7012:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7062:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7073:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7058:3:92"},"nodeType":"YulFunctionCall","src":"7058:18:92"},{"hexValue":"45524331393637557067726164653a20756e737570706f727465642070726f78","kind":"string","nodeType":"YulLiteral","src":"7078:34:92","type":"","value":"ERC1967Upgrade: unsupported prox"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7051:6:92"},"nodeType":"YulFunctionCall","src":"7051:62:92"},"nodeType":"YulExpressionStatement","src":"7051:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7133:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7144:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7129:3:92"},"nodeType":"YulFunctionCall","src":"7129:18:92"},{"hexValue":"6961626c6555554944","kind":"string","nodeType":"YulLiteral","src":"7149:11:92","type":"","value":"iableUUID"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7122:6:92"},"nodeType":"YulFunctionCall","src":"7122:39:92"},"nodeType":"YulExpressionStatement","src":"7122:39:92"},{"nodeType":"YulAssignment","src":"7170:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7182:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7193:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7178:3:92"},"nodeType":"YulFunctionCall","src":"7178:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7170:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_76b6b6debfc5febf101145a79ecf0b0d2e89e397dfdab2bca99888370411152c__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6949:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6963:4:92","type":""}],"src":"6798:405:92"},{"body":{"nodeType":"YulBlock","src":"7382:233:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7399:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7410:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7392:6:92"},"nodeType":"YulFunctionCall","src":"7392:21:92"},"nodeType":"YulExpressionStatement","src":"7392:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7433:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7444:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7429:3:92"},"nodeType":"YulFunctionCall","src":"7429:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"7449:2:92","type":"","value":"43"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7422:6:92"},"nodeType":"YulFunctionCall","src":"7422:30:92"},"nodeType":"YulExpressionStatement","src":"7422:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7472:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7483:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7468:3:92"},"nodeType":"YulFunctionCall","src":"7468:18:92"},{"hexValue":"496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069","kind":"string","nodeType":"YulLiteral","src":"7488:34:92","type":"","value":"Initializable: contract is not i"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7461:6:92"},"nodeType":"YulFunctionCall","src":"7461:62:92"},"nodeType":"YulExpressionStatement","src":"7461:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7543:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7554:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7539:3:92"},"nodeType":"YulFunctionCall","src":"7539:18:92"},{"hexValue":"6e697469616c697a696e67","kind":"string","nodeType":"YulLiteral","src":"7559:13:92","type":"","value":"nitializing"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7532:6:92"},"nodeType":"YulFunctionCall","src":"7532:41:92"},"nodeType":"YulExpressionStatement","src":"7532:41:92"},{"nodeType":"YulAssignment","src":"7582:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7594:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7605:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7590:3:92"},"nodeType":"YulFunctionCall","src":"7590:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7582:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7359:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7373:4:92","type":""}],"src":"7208:407:92"},{"body":{"nodeType":"YulBlock","src":"7833:472:92","statements":[{"nodeType":"YulVariableDeclaration","src":"7843:52:92","value":{"kind":"number","nodeType":"YulLiteral","src":"7853:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"7847:2:92","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7911:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7926:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"7934:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7922:3:92"},"nodeType":"YulFunctionCall","src":"7922:15:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7904:6:92"},"nodeType":"YulFunctionCall","src":"7904:34:92"},"nodeType":"YulExpressionStatement","src":"7904:34:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7958:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7969:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7954:3:92"},"nodeType":"YulFunctionCall","src":"7954:18:92"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"7978:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"7986:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7974:3:92"},"nodeType":"YulFunctionCall","src":"7974:15:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7947:6:92"},"nodeType":"YulFunctionCall","src":"7947:43:92"},"nodeType":"YulExpressionStatement","src":"7947:43:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8010:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8021:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8006:3:92"},"nodeType":"YulFunctionCall","src":"8006:18:92"},{"name":"value2","nodeType":"YulIdentifier","src":"8026:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7999:6:92"},"nodeType":"YulFunctionCall","src":"7999:34:92"},"nodeType":"YulExpressionStatement","src":"7999:34:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8053:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8064:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8049:3:92"},"nodeType":"YulFunctionCall","src":"8049:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"8069:3:92","type":"","value":"128"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8042:6:92"},"nodeType":"YulFunctionCall","src":"8042:31:92"},"nodeType":"YulExpressionStatement","src":"8042:31:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8093:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8104:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8089:3:92"},"nodeType":"YulFunctionCall","src":"8089:19:92"},{"name":"value4","nodeType":"YulIdentifier","src":"8110:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8082:6:92"},"nodeType":"YulFunctionCall","src":"8082:35:92"},"nodeType":"YulExpressionStatement","src":"8082:35:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8143:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8154:3:92","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8139:3:92"},"nodeType":"YulFunctionCall","src":"8139:19:92"},{"name":"value3","nodeType":"YulIdentifier","src":"8160:6:92"},{"name":"value4","nodeType":"YulIdentifier","src":"8168:6:92"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"8126:12:92"},"nodeType":"YulFunctionCall","src":"8126:49:92"},"nodeType":"YulExpressionStatement","src":"8126:49:92"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8199:9:92"},{"name":"value4","nodeType":"YulIdentifier","src":"8210:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8195:3:92"},"nodeType":"YulFunctionCall","src":"8195:22:92"},{"kind":"number","nodeType":"YulLiteral","src":"8219:3:92","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8191:3:92"},"nodeType":"YulFunctionCall","src":"8191:32:92"},{"kind":"number","nodeType":"YulLiteral","src":"8225:1:92","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8184:6:92"},"nodeType":"YulFunctionCall","src":"8184:43:92"},"nodeType":"YulExpressionStatement","src":"8184:43:92"},{"nodeType":"YulAssignment","src":"8236:63:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8252:9:92"},{"arguments":[{"arguments":[{"name":"value4","nodeType":"YulIdentifier","src":"8271:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"8279:2:92","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8267:3:92"},"nodeType":"YulFunctionCall","src":"8267:15:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8288:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"8284:3:92"},"nodeType":"YulFunctionCall","src":"8284:7:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8263:3:92"},"nodeType":"YulFunctionCall","src":"8263:29:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8248:3:92"},"nodeType":"YulFunctionCall","src":"8248:45:92"},{"kind":"number","nodeType":"YulLiteral","src":"8295:3:92","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8244:3:92"},"nodeType":"YulFunctionCall","src":"8244:55:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"8236:4:92"}]}]},"name":"abi_encode_tuple_t_address_t_address_t_bytes32_t_bytes_calldata_ptr__to_t_address_t_address_t_bytes32_t_bytes_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7770:9:92","type":""},{"name":"value4","nodeType":"YulTypedName","src":"7781:6:92","type":""},{"name":"value3","nodeType":"YulTypedName","src":"7789:6:92","type":""},{"name":"value2","nodeType":"YulTypedName","src":"7797:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"7805:6:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"7813:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7824:4:92","type":""}],"src":"7620:685:92"},{"body":{"nodeType":"YulBlock","src":"8388:199:92","statements":[{"body":{"nodeType":"YulBlock","src":"8434:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8443:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8446:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8436:6:92"},"nodeType":"YulFunctionCall","src":"8436:12:92"},"nodeType":"YulExpressionStatement","src":"8436:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"8409:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"8418:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"8405:3:92"},"nodeType":"YulFunctionCall","src":"8405:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"8430:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"8401:3:92"},"nodeType":"YulFunctionCall","src":"8401:32:92"},"nodeType":"YulIf","src":"8398:52:92"},{"nodeType":"YulVariableDeclaration","src":"8459:29:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8478:9:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"8472:5:92"},"nodeType":"YulFunctionCall","src":"8472:16:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"8463:5:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"8541:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8550:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8553:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8543:6:92"},"nodeType":"YulFunctionCall","src":"8543:12:92"},"nodeType":"YulExpressionStatement","src":"8543:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8510:5:92"},{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8531:5:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"8524:6:92"},"nodeType":"YulFunctionCall","src":"8524:13:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"8517:6:92"},"nodeType":"YulFunctionCall","src":"8517:21:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"8507:2:92"},"nodeType":"YulFunctionCall","src":"8507:32:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"8500:6:92"},"nodeType":"YulFunctionCall","src":"8500:40:92"},"nodeType":"YulIf","src":"8497:60:92"},{"nodeType":"YulAssignment","src":"8566:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"8576:5:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"8566:6:92"}]}]},"name":"abi_decode_tuple_t_bool_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8354:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"8365:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"8377:6:92","type":""}],"src":"8310:277:92"},{"body":{"nodeType":"YulBlock","src":"8777:294:92","statements":[{"nodeType":"YulAssignment","src":"8787:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8799:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8810:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8795:3:92"},"nodeType":"YulFunctionCall","src":"8795:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"8787:4:92"}]},{"nodeType":"YulVariableDeclaration","src":"8823:52:92","value":{"kind":"number","nodeType":"YulLiteral","src":"8833:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"8827:2:92","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8891:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"8906:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"8914:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8902:3:92"},"nodeType":"YulFunctionCall","src":"8902:15:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8884:6:92"},"nodeType":"YulFunctionCall","src":"8884:34:92"},"nodeType":"YulExpressionStatement","src":"8884:34:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8938:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8949:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8934:3:92"},"nodeType":"YulFunctionCall","src":"8934:18:92"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"8958:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"8966:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8954:3:92"},"nodeType":"YulFunctionCall","src":"8954:15:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8927:6:92"},"nodeType":"YulFunctionCall","src":"8927:43:92"},"nodeType":"YulExpressionStatement","src":"8927:43:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8990:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9001:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8986:3:92"},"nodeType":"YulFunctionCall","src":"8986:18:92"},{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"9010:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"9018:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"9006:3:92"},"nodeType":"YulFunctionCall","src":"9006:15:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8979:6:92"},"nodeType":"YulFunctionCall","src":"8979:43:92"},"nodeType":"YulExpressionStatement","src":"8979:43:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9042:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9053:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9038:3:92"},"nodeType":"YulFunctionCall","src":"9038:18:92"},{"name":"value3","nodeType":"YulIdentifier","src":"9058:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9031:6:92"},"nodeType":"YulFunctionCall","src":"9031:34:92"},"nodeType":"YulExpressionStatement","src":"9031:34:92"}]},"name":"abi_encode_tuple_t_address_t_address_t_address_t_bytes32__to_t_address_t_address_t_address_t_bytes32__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8722:9:92","type":""},{"name":"value3","nodeType":"YulTypedName","src":"8733:6:92","type":""},{"name":"value2","nodeType":"YulTypedName","src":"8741:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"8749:6:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"8757:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"8768:4:92","type":""}],"src":"8592:479:92"},{"body":{"nodeType":"YulBlock","src":"9250:235:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9267:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9278:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9260:6:92"},"nodeType":"YulFunctionCall","src":"9260:21:92"},"nodeType":"YulExpressionStatement","src":"9260:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9301:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9312:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9297:3:92"},"nodeType":"YulFunctionCall","src":"9297:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"9317:2:92","type":"","value":"45"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9290:6:92"},"nodeType":"YulFunctionCall","src":"9290:30:92"},"nodeType":"YulExpressionStatement","src":"9290:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9340:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9351:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9336:3:92"},"nodeType":"YulFunctionCall","src":"9336:18:92"},{"hexValue":"455243313936373a206e657720696d706c656d656e746174696f6e206973206e","kind":"string","nodeType":"YulLiteral","src":"9356:34:92","type":"","value":"ERC1967: new implementation is n"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9329:6:92"},"nodeType":"YulFunctionCall","src":"9329:62:92"},"nodeType":"YulExpressionStatement","src":"9329:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9411:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9422:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9407:3:92"},"nodeType":"YulFunctionCall","src":"9407:18:92"},{"hexValue":"6f74206120636f6e7472616374","kind":"string","nodeType":"YulLiteral","src":"9427:15:92","type":"","value":"ot a contract"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9400:6:92"},"nodeType":"YulFunctionCall","src":"9400:43:92"},"nodeType":"YulExpressionStatement","src":"9400:43:92"},{"nodeType":"YulAssignment","src":"9452:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9464:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9475:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9460:3:92"},"nodeType":"YulFunctionCall","src":"9460:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"9452:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9227:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"9241:4:92","type":""}],"src":"9076:409:92"},{"body":{"nodeType":"YulBlock","src":"9556:184:92","statements":[{"nodeType":"YulVariableDeclaration","src":"9566:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"9575:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"9570:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"9635:63:92","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"9660:3:92"},{"name":"i","nodeType":"YulIdentifier","src":"9665:1:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9656:3:92"},"nodeType":"YulFunctionCall","src":"9656:11:92"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"9679:3:92"},{"name":"i","nodeType":"YulIdentifier","src":"9684:1:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9675:3:92"},"nodeType":"YulFunctionCall","src":"9675:11:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"9669:5:92"},"nodeType":"YulFunctionCall","src":"9669:18:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9649:6:92"},"nodeType":"YulFunctionCall","src":"9649:39:92"},"nodeType":"YulExpressionStatement","src":"9649:39:92"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"9596:1:92"},{"name":"length","nodeType":"YulIdentifier","src":"9599:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"9593:2:92"},"nodeType":"YulFunctionCall","src":"9593:13:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"9607:19:92","statements":[{"nodeType":"YulAssignment","src":"9609:15:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"9618:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"9621:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9614:3:92"},"nodeType":"YulFunctionCall","src":"9614:10:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"9609:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"9589:3:92","statements":[]},"src":"9585:113:92"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"9718:3:92"},{"name":"length","nodeType":"YulIdentifier","src":"9723:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9714:3:92"},"nodeType":"YulFunctionCall","src":"9714:16:92"},{"kind":"number","nodeType":"YulLiteral","src":"9732:1:92","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9707:6:92"},"nodeType":"YulFunctionCall","src":"9707:27:92"},"nodeType":"YulExpressionStatement","src":"9707:27:92"}]},"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"9534:3:92","type":""},{"name":"dst","nodeType":"YulTypedName","src":"9539:3:92","type":""},{"name":"length","nodeType":"YulTypedName","src":"9544:6:92","type":""}],"src":"9490:250:92"},{"body":{"nodeType":"YulBlock","src":"9882:150:92","statements":[{"nodeType":"YulVariableDeclaration","src":"9892:27:92","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"9912:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"9906:5:92"},"nodeType":"YulFunctionCall","src":"9906:13:92"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"9896:6:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"9967:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"9975:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9963:3:92"},"nodeType":"YulFunctionCall","src":"9963:17:92"},{"name":"pos","nodeType":"YulIdentifier","src":"9982:3:92"},{"name":"length","nodeType":"YulIdentifier","src":"9987:6:92"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"9928:34:92"},"nodeType":"YulFunctionCall","src":"9928:66:92"},"nodeType":"YulExpressionStatement","src":"9928:66:92"},{"nodeType":"YulAssignment","src":"10003:23:92","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"10014:3:92"},{"name":"length","nodeType":"YulIdentifier","src":"10019:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10010:3:92"},"nodeType":"YulFunctionCall","src":"10010:16:92"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"10003:3:92"}]}]},"name":"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"9858:3:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"9863:6:92","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"9874:3:92","type":""}],"src":"9745:287:92"},{"body":{"nodeType":"YulBlock","src":"10211:179:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10228:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"10239:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10221:6:92"},"nodeType":"YulFunctionCall","src":"10221:21:92"},"nodeType":"YulExpressionStatement","src":"10221:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10262:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"10273:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10258:3:92"},"nodeType":"YulFunctionCall","src":"10258:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"10278:2:92","type":"","value":"29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10251:6:92"},"nodeType":"YulFunctionCall","src":"10251:30:92"},"nodeType":"YulExpressionStatement","src":"10251:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10301:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"10312:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10297:3:92"},"nodeType":"YulFunctionCall","src":"10297:18:92"},{"hexValue":"416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374","kind":"string","nodeType":"YulLiteral","src":"10317:31:92","type":"","value":"Address: call to non-contract"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10290:6:92"},"nodeType":"YulFunctionCall","src":"10290:59:92"},"nodeType":"YulExpressionStatement","src":"10290:59:92"},{"nodeType":"YulAssignment","src":"10358:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10370:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"10381:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10366:3:92"},"nodeType":"YulFunctionCall","src":"10366:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"10358:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"10188:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"10202:4:92","type":""}],"src":"10037:353:92"},{"body":{"nodeType":"YulBlock","src":"10516:275:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10533:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"10544:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10526:6:92"},"nodeType":"YulFunctionCall","src":"10526:21:92"},"nodeType":"YulExpressionStatement","src":"10526:21:92"},{"nodeType":"YulVariableDeclaration","src":"10556:27:92","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"10576:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"10570:5:92"},"nodeType":"YulFunctionCall","src":"10570:13:92"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"10560:6:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10603:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"10614:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10599:3:92"},"nodeType":"YulFunctionCall","src":"10599:18:92"},{"name":"length","nodeType":"YulIdentifier","src":"10619:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10592:6:92"},"nodeType":"YulFunctionCall","src":"10592:34:92"},"nodeType":"YulExpressionStatement","src":"10592:34:92"},{"expression":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"10674:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"10682:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10670:3:92"},"nodeType":"YulFunctionCall","src":"10670:15:92"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10691:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"10702:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10687:3:92"},"nodeType":"YulFunctionCall","src":"10687:18:92"},{"name":"length","nodeType":"YulIdentifier","src":"10707:6:92"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"10635:34:92"},"nodeType":"YulFunctionCall","src":"10635:79:92"},"nodeType":"YulExpressionStatement","src":"10635:79:92"},{"nodeType":"YulAssignment","src":"10723:62:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10739:9:92"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"10758:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"10766:2:92","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10754:3:92"},"nodeType":"YulFunctionCall","src":"10754:15:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10775:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"10771:3:92"},"nodeType":"YulFunctionCall","src":"10771:7:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"10750:3:92"},"nodeType":"YulFunctionCall","src":"10750:29:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10735:3:92"},"nodeType":"YulFunctionCall","src":"10735:45:92"},{"kind":"number","nodeType":"YulLiteral","src":"10782:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10731:3:92"},"nodeType":"YulFunctionCall","src":"10731:54:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"10723:4:92"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"10485:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"10496:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"10507:4:92","type":""}],"src":"10395:396:92"}]},"contents":"{\n { }\n function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n if iszero(eq(value, and(value, shl(224, 0xffffffff)))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function abi_decode_tuple_t_uint16(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n if iszero(eq(value, and(value, 0xffff))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 96)\n let pos := headStart\n pos := headStart\n let srcPtr := value0\n let i := 0\n for { } lt(i, 0x03) { i := add(i, 1) }\n {\n mstore(pos, and(mload(srcPtr), 0xff))\n let _1 := 0x20\n pos := add(pos, _1)\n srcPtr := add(srcPtr, _1)\n }\n }\n function validator_revert_address(value)\n {\n if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n }\n function abi_encode_tuple_t_contract$_IDAO_$10865__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_encode_tuple_t_enum$_PluginType_$13330__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n if iszero(lt(value0, 3))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x21)\n revert(0, 0x24)\n }\n mstore(headStart, value0)\n }\n function panic_error_0x41()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function abi_decode_tuple_t_addresst_bytes_memory_ptr(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n let offset := calldataload(add(headStart, 32))\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n let _2 := add(headStart, offset)\n if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n let _3 := calldataload(_2)\n if gt(_3, _1) { panic_error_0x41() }\n let _4 := not(31)\n let memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n mstore(memPtr, _3)\n if gt(add(add(_2, _3), 32), dataEnd) { revert(0, 0) }\n calldatacopy(add(memPtr, 32), add(_2, 32), _3)\n mstore(add(add(memPtr, _3), 32), 0)\n value1 := memPtr\n }\n function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_decode_tuple_t_contract$_IDAO_$10865(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n }\n function abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 46)\n mstore(add(headStart, 64), \"Initializable: contract is alrea\")\n mstore(add(headStart, 96), \"dy initialized\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xff))\n }\n function abi_encode_tuple_t_stringliteral_36e108fa7a809b52ab1951dd91c117a7bc9ac5250bdf1aa162d4e104f7edf9eb__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 44)\n mstore(add(headStart, 64), \"Function must be called through \")\n mstore(add(headStart, 96), \"delegatecall\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_52f1ead4d9653e13afbd2e90ef2587c30187cd50b2e97d784e3f7a7541247434__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 44)\n mstore(add(headStart, 64), \"Function must be called through \")\n mstore(add(headStart, 96), \"active proxy\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_67f0151b4ad1dcfa0e3302a0cd6019f51582ef1807b37dceb00bd852a514f7f4__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 56)\n mstore(add(headStart, 64), \"UUPSUpgradeable: must not be cal\")\n mstore(add(headStart, 96), \"led through delegatecall\")\n tail := add(headStart, 128)\n }\n function abi_decode_tuple_t_bytes32_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := mload(headStart)\n }\n function abi_encode_tuple_t_stringliteral_8e8e2fbcb586f700b5b14e2c4a650c8d83b9773c31c5fe8962070ea544e11f24__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 46)\n mstore(add(headStart, 64), \"ERC1967Upgrade: new implementati\")\n mstore(add(headStart, 96), \"on is not UUPS\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_76b6b6debfc5febf101145a79ecf0b0d2e89e397dfdab2bca99888370411152c__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 41)\n mstore(add(headStart, 64), \"ERC1967Upgrade: unsupported prox\")\n mstore(add(headStart, 96), \"iableUUID\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 43)\n mstore(add(headStart, 64), \"Initializable: contract is not i\")\n mstore(add(headStart, 96), \"nitializing\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_address_t_address_t_bytes32_t_bytes_calldata_ptr__to_t_address_t_address_t_bytes32_t_bytes_memory_ptr__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n {\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n mstore(add(headStart, 64), value2)\n mstore(add(headStart, 96), 128)\n mstore(add(headStart, 128), value4)\n calldatacopy(add(headStart, 160), value3, value4)\n mstore(add(add(headStart, value4), 160), 0)\n tail := add(add(headStart, and(add(value4, 31), not(31))), 160)\n }\n function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := mload(headStart)\n if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_address_t_address_t_address_t_bytes32__to_t_address_t_address_t_address_t_bytes32__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n {\n tail := add(headStart, 128)\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n mstore(add(headStart, 64), and(value2, _1))\n mstore(add(headStart, 96), value3)\n }\n function abi_encode_tuple_t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 45)\n mstore(add(headStart, 64), \"ERC1967: new implementation is n\")\n mstore(add(headStart, 96), \"ot a contract\")\n tail := add(headStart, 128)\n }\n function copy_memory_to_memory_with_cleanup(src, dst, length)\n {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n mstore(add(dst, length), 0)\n }\n function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n {\n let length := mload(value0)\n copy_memory_to_memory_with_cleanup(add(value0, 0x20), pos, length)\n end := add(pos, length)\n }\n function abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 29)\n mstore(add(headStart, 64), \"Address: call to non-contract\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n mstore(headStart, 32)\n let length := mload(value0)\n mstore(add(headStart, 32), length)\n copy_memory_to_memory_with_cleanup(add(value0, 32), add(headStart, 64), length)\n tail := add(add(headStart, and(add(length, 31), not(31))), 64)\n }\n}","id":92,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{"554":[{"length":32,"start":1113},{"length":32,"start":1246},{"length":32,"start":1492},{"length":32,"start":1625},{"length":32,"start":1859}]},"linkReferences":{},"object":"6080604052600436106100dd5760003560e01c80634f1ef2861161007f5780636accab8c116100595780636accab8c1461022b578063c4d66de814610242578063c9c4bfca14610262578063efe51cca1461029657600080fd5b80634f1ef286146101ee57806352d1902d146102015780635c60da1b1461021657600080fd5b80632ae9c600116100bb5780632ae9c6001461015e5780633659cfe6146101805780634162169f146101a057806341de6830146101d257600080fd5b806301ffc9a7146100e2578063039a8c50146101175780632491118d14610139575b600080fd5b3480156100ee57600080fd5b506101026100fd366004610f74565b6102ad565b60405190151581526020015b60405180910390f35b34801561012357600080fd5b50610137610132366004610f9e565b610319565b005b34801561014557600080fd5b5061015061012f5481565b60405190815260200161010e565b34801561016a57600080fd5b50610173610425565b60405161010e9190610fc2565b34801561018c57600080fd5b5061013761019b36600461100b565b61044f565b3480156101ac57600080fd5b5060c9546001600160a01b03165b6040516001600160a01b03909116815260200161010e565b3480156101de57600080fd5b50600060405161010e9190611028565b6101376101fc366004611066565b6105ca565b34801561020d57600080fd5b50610150610736565b34801561022257600080fd5b506101ba6107fb565b34801561023757600080fd5b5061015061012d5481565b34801561024e57600080fd5b5061013761025d36600461100b565b610833565b34801561026e57600080fd5b506101507f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f581565b3480156102a257600080fd5b5061015061012e5481565b60006001600160e01b0319821663041de68360e41b14806102dd57506001600160e01b03198216621574e360e91b145b806102f857506001600160e01b031982166352d1902d60e01b145b8061031357506301ffc9a760e01b6001600160e01b03198316145b92915050565b600054600390610100900460ff1615801561033b575060005460ff8083169116105b6103a35760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805461ffff191660ff831617610100179055600261ffff831610156103cb57600261012e555b60038261ffff1610156103df57600361012f555b6000805461ff001916905560405160ff821681527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b61042d610f56565b5060408051606081018252600181526004602082015260009181019190915290565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036104dc5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b606482015260840161039a565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166105377f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b0316146105a25760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b606482015260840161039a565b6105ab81610925565b604080516000808252602082019092526105c791839190610962565b50565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036106575760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b606482015260840161039a565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166106b27f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b03161461071d5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b606482015260840161039a565b61072682610925565b61073282826001610962565b5050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146107d65760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000606482015260840161039a565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b600061082e7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b600054600390610100900460ff16158015610855575060005460ff8083169116105b6108b85760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161039a565b6000805461ffff191660ff8316176101001790556108d582610b07565b600161012d55600261012e55600361012f556000805461ff001916905560405160ff821681527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602001610419565b60c9547f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f590610732906001600160a01b0316303384600036610b7b565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561099a5761099583610c37565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156109f4575060408051601f3d908101601f191682019092526109f19181019061112a565b60015b610a665760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201527f6f6e206973206e6f742055555053000000000000000000000000000000000000606482015260840161039a565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114610afb5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f7860448201527f6961626c65555549440000000000000000000000000000000000000000000000606482015260840161039a565b50610995838383610d02565b600054610100900460ff16610b725760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840161039a565b6105c781610d2d565b604051637ef7c88360e11b81526001600160a01b0387169063fdef910690610baf9088908890889088908890600401611143565b602060405180830381865afa158015610bcc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bf09190611197565b610c2f57604051630cb6f8ed60e21b81526001600160a01b0380881660048301528087166024830152851660448201526064810184905260840161039a565b505050505050565b6001600160a01b0381163b610cb45760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e747261637400000000000000000000000000000000000000606482015260840161039a565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610d0b83610dc7565b600082511180610d185750805b1561099557610d278383610e07565b50505050565b600054610100900460ff16610d985760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840161039a565b60c9805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610dd081610c37565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060610e2c838360405180606001604052806027815260200161122d60279139610e33565b9392505050565b6060600080856001600160a01b031685604051610e5091906111dd565b600060405180830381855af49150503d8060008114610e8b576040519150601f19603f3d011682016040523d82523d6000602084013e610e90565b606091505b5091509150610ea186838387610eab565b9695505050505050565b60608315610f1a578251600003610f13576001600160a01b0385163b610f135760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161039a565b5081610f24565b610f248383610f2c565b949350505050565b815115610f3c5781518083602001fd5b8060405162461bcd60e51b815260040161039a91906111f9565b60405180606001604052806003906020820280368337509192915050565b600060208284031215610f8657600080fd5b81356001600160e01b031981168114610e2c57600080fd5b600060208284031215610fb057600080fd5b813561ffff81168114610e2c57600080fd5b60608101818360005b6003811015610fed57815160ff16835260209283019290910190600101610fcb565b50505092915050565b6001600160a01b03811681146105c757600080fd5b60006020828403121561101d57600080fd5b8135610e2c81610ff6565b602081016003831061104a57634e487b7160e01b600052602160045260246000fd5b91905290565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561107957600080fd5b823561108481610ff6565b9150602083013567ffffffffffffffff808211156110a157600080fd5b818501915085601f8301126110b557600080fd5b8135818111156110c7576110c7611050565b604051601f8201601f19908116603f011681019083821181831017156110ef576110ef611050565b8160405282815288602084870101111561110857600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60006020828403121561113c57600080fd5b5051919050565b60006001600160a01b03808816835280871660208401525084604083015260806060830152826080830152828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b6000602082840312156111a957600080fd5b81518015158114610e2c57600080fd5b60005b838110156111d45781810151838201526020016111bc565b50506000910152565b600082516111ef8184602087016111b9565b9190910192915050565b60208152600082518060208401526112188160408501602087016111b9565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xDD JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x4F1EF286 GT PUSH2 0x7F JUMPI DUP1 PUSH4 0x6ACCAB8C GT PUSH2 0x59 JUMPI DUP1 PUSH4 0x6ACCAB8C EQ PUSH2 0x22B JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0x242 JUMPI DUP1 PUSH4 0xC9C4BFCA EQ PUSH2 0x262 JUMPI DUP1 PUSH4 0xEFE51CCA EQ PUSH2 0x296 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x1EE JUMPI DUP1 PUSH4 0x52D1902D EQ PUSH2 0x201 JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0x216 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x2AE9C600 GT PUSH2 0xBB JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0x15E JUMPI DUP1 PUSH4 0x3659CFE6 EQ PUSH2 0x180 JUMPI DUP1 PUSH4 0x4162169F EQ PUSH2 0x1A0 JUMPI DUP1 PUSH4 0x41DE6830 EQ PUSH2 0x1D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xE2 JUMPI DUP1 PUSH4 0x39A8C50 EQ PUSH2 0x117 JUMPI DUP1 PUSH4 0x2491118D EQ PUSH2 0x139 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xEE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x102 PUSH2 0xFD CALLDATASIZE PUSH1 0x4 PUSH2 0xF74 JUMP JUMPDEST PUSH2 0x2AD JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x123 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x137 PUSH2 0x132 CALLDATASIZE PUSH1 0x4 PUSH2 0xF9E JUMP JUMPDEST PUSH2 0x319 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x145 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x150 PUSH2 0x12F SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x10E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x16A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x173 PUSH2 0x425 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x10E SWAP2 SWAP1 PUSH2 0xFC2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x18C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x137 PUSH2 0x19B CALLDATASIZE PUSH1 0x4 PUSH2 0x100B JUMP JUMPDEST PUSH2 0x44F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xC9 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x10E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 PUSH1 0x40 MLOAD PUSH2 0x10E SWAP2 SWAP1 PUSH2 0x1028 JUMP JUMPDEST PUSH2 0x137 PUSH2 0x1FC CALLDATASIZE PUSH1 0x4 PUSH2 0x1066 JUMP JUMPDEST PUSH2 0x5CA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x20D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x150 PUSH2 0x736 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x222 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1BA PUSH2 0x7FB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x237 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x150 PUSH2 0x12D SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x24E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x137 PUSH2 0x25D CALLDATASIZE PUSH1 0x4 PUSH2 0x100B JUMP JUMPDEST PUSH2 0x833 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x26E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x150 PUSH32 0x821B6E3A557148015A918C89E5D092E878A69854A2D1A410635F771BD5A8A3F5 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x150 PUSH2 0x12E SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x41DE683 PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x2DD JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x2F8 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x52D1902D PUSH1 0xE0 SHL EQ JUMPDEST DUP1 PUSH2 0x313 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x3 SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH2 0x33B JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF DUP1 DUP4 AND SWAP2 AND LT JUMPDEST PUSH2 0x3A3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x44 DUP3 ADD MSTORE PUSH14 0x191E481A5B9A5D1A585B1A5E9959 PUSH1 0x92 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH2 0xFFFF NOT AND PUSH1 0xFF DUP4 AND OR PUSH2 0x100 OR SWAP1 SSTORE PUSH1 0x2 PUSH2 0xFFFF DUP4 AND LT ISZERO PUSH2 0x3CB JUMPI PUSH1 0x2 PUSH2 0x12E SSTORE JUMPDEST PUSH1 0x3 DUP3 PUSH2 0xFFFF AND LT ISZERO PUSH2 0x3DF JUMPI PUSH1 0x3 PUSH2 0x12F SSTORE JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH1 0xFF DUP3 AND DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH2 0x42D PUSH2 0xF56 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x4DC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x19195B1959D85D1958D85B1B PUSH1 0xA2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x39A JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x537 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x5A2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x6163746976652070726F7879 PUSH1 0xA0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x39A JUMP JUMPDEST PUSH2 0x5AB DUP2 PUSH2 0x925 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x5C7 SWAP2 DUP4 SWAP2 SWAP1 PUSH2 0x962 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x657 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x19195B1959D85D1958D85B1B PUSH1 0xA2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x39A JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x6B2 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x71D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x6163746976652070726F7879 PUSH1 0xA0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x39A JUMP JUMPDEST PUSH2 0x726 DUP3 PUSH2 0x925 JUMP JUMPDEST PUSH2 0x732 DUP3 DUP3 PUSH1 0x1 PUSH2 0x962 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x7D6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x38 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x555550535570677261646561626C653A206D757374206E6F742062652063616C PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6C6564207468726F7567682064656C656761746563616C6C0000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x39A JUMP JUMPDEST POP PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x82E PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x3 SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH2 0x855 JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF DUP1 DUP4 AND SWAP2 AND LT JUMPDEST PUSH2 0x8B8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x44 DUP3 ADD MSTORE PUSH14 0x191E481A5B9A5D1A585B1A5E9959 PUSH1 0x92 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x39A JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH2 0xFFFF NOT AND PUSH1 0xFF DUP4 AND OR PUSH2 0x100 OR SWAP1 SSTORE PUSH2 0x8D5 DUP3 PUSH2 0xB07 JUMP JUMPDEST PUSH1 0x1 PUSH2 0x12D SSTORE PUSH1 0x2 PUSH2 0x12E SSTORE PUSH1 0x3 PUSH2 0x12F SSTORE PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH1 0xFF DUP3 AND DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH2 0x419 JUMP JUMPDEST PUSH1 0xC9 SLOAD PUSH32 0x821B6E3A557148015A918C89E5D092E878A69854A2D1A410635F771BD5A8A3F5 SWAP1 PUSH2 0x732 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ADDRESS CALLER DUP5 PUSH1 0x0 CALLDATASIZE PUSH2 0xB7B JUMP JUMPDEST PUSH32 0x4910FDFA16FED3260ED0E7147F7CC6DA11A60208B5B9406D12A635614FFD9143 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x99A JUMPI PUSH2 0x995 DUP4 PUSH2 0xC37 JUMP JUMPDEST POP POP POP JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x52D1902D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x9F4 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x9F1 SWAP2 DUP2 ADD SWAP1 PUSH2 0x112A JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0xA66 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524331393637557067726164653A206E657720696D706C656D656E74617469 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F6E206973206E6F742055555053000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x39A JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC DUP2 EQ PUSH2 0xAFB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524331393637557067726164653A20756E737570706F727465642070726F78 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6961626C65555549440000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x39A JUMP JUMPDEST POP PUSH2 0x995 DUP4 DUP4 DUP4 PUSH2 0xD02 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0xB72 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x39A JUMP JUMPDEST PUSH2 0x5C7 DUP2 PUSH2 0xD2D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x7EF7C883 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0xFDEF9106 SWAP1 PUSH2 0xBAF SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x1143 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xBCC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xBF0 SWAP2 SWAP1 PUSH2 0x1197 JUMP JUMPDEST PUSH2 0xC2F JUMPI PUSH1 0x40 MLOAD PUSH4 0xCB6F8ED PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND PUSH1 0x4 DUP4 ADD MSTORE DUP1 DUP8 AND PUSH1 0x24 DUP4 ADD MSTORE DUP6 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x84 ADD PUSH2 0x39A JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND EXTCODESIZE PUSH2 0xCB4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313936373A206E657720696D706C656D656E746174696F6E206973206E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F74206120636F6E747261637400000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x39A JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xD0B DUP4 PUSH2 0xDC7 JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD GT DUP1 PUSH2 0xD18 JUMPI POP DUP1 JUMPDEST ISZERO PUSH2 0x995 JUMPI PUSH2 0xD27 DUP4 DUP4 PUSH2 0xE07 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0xD98 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x39A JUMP JUMPDEST PUSH1 0xC9 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xDD0 DUP2 PUSH2 0xC37 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xE2C DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x122D PUSH1 0x27 SWAP2 CODECOPY PUSH2 0xE33 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0xE50 SWAP2 SWAP1 PUSH2 0x11DD JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xE8B JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xE90 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0xEA1 DUP7 DUP4 DUP4 DUP8 PUSH2 0xEAB JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0xF1A JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0xF13 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0xF13 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x39A JUMP JUMPDEST POP DUP2 PUSH2 0xF24 JUMP JUMPDEST PUSH2 0xF24 DUP4 DUP4 PUSH2 0xF2C JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0xF3C JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x39A SWAP2 SWAP1 PUSH2 0x11F9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xF86 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0xE2C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xFB0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH2 0xE2C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0xFED JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0xFCB JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x5C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x101D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xE2C DUP2 PUSH2 0xFF6 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH1 0x3 DUP4 LT PUSH2 0x104A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 SWAP1 MSTORE SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1079 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x1084 DUP2 PUSH2 0xFF6 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x10A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x10B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x10C7 JUMPI PUSH2 0x10C7 PUSH2 0x1050 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x10EF JUMPI PUSH2 0x10EF PUSH2 0x1050 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x1108 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x113C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND DUP4 MSTORE DUP1 DUP8 AND PUSH1 0x20 DUP5 ADD MSTORE POP DUP5 PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x80 PUSH1 0x60 DUP4 ADD MSTORE DUP3 PUSH1 0x80 DUP4 ADD MSTORE DUP3 DUP5 PUSH1 0xA0 DUP5 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0xA0 DUP5 DUP5 ADD ADD MSTORE PUSH1 0xA0 PUSH1 0x1F NOT PUSH1 0x1F DUP6 ADD AND DUP4 ADD ADD SWAP1 POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x11A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xE2C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x11D4 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x11BC JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x11EF DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x11B9 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x1218 DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x11B9 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A164 PUSH20 0x6F6C6343000811000A0000000000000000000000 ","sourceMap":"1334:546:53:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2358:366:75;;;;;;;;;;-1:-1:-1;2358:366:75;;;;;:::i;:::-;;:::i;:::-;;;470:14:92;;463:22;445:41;;433:2;418:18;2358:366:75;;;;;;;;1662:216:53;;;;;;;;;;-1:-1:-1;1662:216:53;;;;;:::i;:::-;;:::i;:::-;;1460:21;;;;;;;;;;;;;;;;;;;920:25:92;;;908:2;893:18;1460:21:53;774:177:92;631:98:90;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;3408:195:5:-;;;;;;;;;;-1:-1:-1;3408:195:5;;;;;:::i;:::-;;:::i;1200:70:67:-;;;;;;;;;;-1:-1:-1;1259:4:67;;-1:-1:-1;;;;;1259:4:67;1200:70;;;-1:-1:-1;;;;;2051:55:92;;;2033:74;;2021:2;2006:18;1200:70:67;1873:240:92;1552:103:75;;;;;;;;;;-1:-1:-1;1604:10:75;1552:103;;;;;;:::i;3922:220:5:-;;;;;;:::i;:::-;;:::i;3027:131::-;;;;;;;;;;;;;:::i;3005:100:75:-;;;;;;;;;;;;;:::i;1406:21:53:-;;;;;;;;;;;;;;;;1488:168;;;;;;;;;;-1:-1:-1;1488:168:53;;;;;:::i;:::-;;:::i;1753:93:75:-;;;;;;;;;;;;1808:38;1753:93;;1433:21:53;;;;;;;;;;;;;;;;2358:366:75;2444:4;-1:-1:-1;;;;;;2479:41:75;;-1:-1:-1;;;2479:41:75;;:107;;-1:-1:-1;;;;;;;2536:50:75;;-1:-1:-1;;;2536:50:75;2479:107;:185;;;-1:-1:-1;;;;;;;2602:62:75;;-1:-1:-1;;;2602:62:75;2479:185;:238;;;-1:-1:-1;;;;;;;;;;1189:51:11;;;2680:37:75;2460:257;2358:366;-1:-1:-1;;2358:366:75:o;1662:216:53:-;4882:13:4;;1732:1:53;;4882:13:4;;;;;4881:14;:40;;;;-1:-1:-1;4899:12:4;;:22;;;;:12;;:22;4881:40;4873:99;;;;-1:-1:-1;;;4873:99:4;;4541:2:92;4873:99:4;;;4523:21:92;4580:2;4560:18;;;4553:30;4619:34;4599:18;;;4592:62;-1:-1:-1;;;4670:18:92;;;4663:44;4724:19;;4873:99:4;;;;;;;;;4982:12;:22;;-1:-1:-1;;5014:20:4;4982:22;;;5014:20;4982:22;5014:20;;;1766:1:53::1;1749:18;::::0;::::1;;1745:59;;;1792:1;1783:6;:10:::0;1745:59:::1;1834:1;1817:14;:18;;;1813:59;;;1860:1;1851:6;:10:::0;1813:59:::1;5071:5:4::0;5055:21;;-1:-1:-1;;5055:21:4;;;5091:20;;4926:4:92;4914:17;;4896:36;;5091:20:4;;4884:2:92;4869:18;5091:20:4;;;;;;;;1662:216:53;;:::o;631:98:90:-;679:15;;:::i;:::-;-1:-1:-1;706:16:90;;;;;;;;714:1;706:16;;717:1;706:16;;;;-1:-1:-1;706:16:90;;;;;;;;631:98::o;3408:195:5:-;-1:-1:-1;;;;;1764:6:5;1747:23;1755:4;1747:23;1739:80;;;;-1:-1:-1;;;1739:80:5;;5145:2:92;1739:80:5;;;5127:21:92;5184:2;5164:18;;;5157:30;5223:34;5203:18;;;5196:62;-1:-1:-1;;;5274:18:92;;;5267:42;5326:19;;1739:80:5;4943:408:92;1739:80:5;1861:6;-1:-1:-1;;;;;1837:30:5;:20;1180:66:2;1557:65;-1:-1:-1;;;;;1557:65:2;;1478:151;1837:20:5;-1:-1:-1;;;;;1837:30:5;;1829:87;;;;-1:-1:-1;;;1829:87:5;;5558:2:92;1829:87:5;;;5540:21:92;5597:2;5577:18;;;5570:30;5636:34;5616:18;;;5609:62;-1:-1:-1;;;5687:18:92;;;5680:42;5739:19;;1829:87:5;5356:408:92;1829:87:5;3489:36:::1;3507:17;3489;:36::i;:::-;3576:12;::::0;;3586:1:::1;3576:12:::0;;;::::1;::::0;::::1;::::0;;;3535:61:::1;::::0;3557:17;;3576:12;3535:21:::1;:61::i;:::-;3408:195:::0;:::o;3922:220::-;-1:-1:-1;;;;;1764:6:5;1747:23;1755:4;1747:23;1739:80;;;;-1:-1:-1;;;1739:80:5;;5145:2:92;1739:80:5;;;5127:21:92;5184:2;5164:18;;;5157:30;5223:34;5203:18;;;5196:62;-1:-1:-1;;;5274:18:92;;;5267:42;5326:19;;1739:80:5;4943:408:92;1739:80:5;1861:6;-1:-1:-1;;;;;1837:30:5;:20;1180:66:2;1557:65;-1:-1:-1;;;;;1557:65:2;;1478:151;1837:20:5;-1:-1:-1;;;;;1837:30:5;;1829:87;;;;-1:-1:-1;;;1829:87:5;;5558:2:92;1829:87:5;;;5540:21:92;5597:2;5577:18;;;5570:30;5636:34;5616:18;;;5609:62;-1:-1:-1;;;5687:18:92;;;5680:42;5739:19;;1829:87:5;5356:408:92;1829:87:5;4037:36:::1;4055:17;4037;:36::i;:::-;4083:52;4105:17;4124:4;4130;4083:21;:52::i;:::-;3922:220:::0;;:::o;3027:131::-;3105:7;2190:4;-1:-1:-1;;;;;2199:6:5;2182:23;;2174:92;;;;-1:-1:-1;;;2174:92:5;;5971:2:92;2174:92:5;;;5953:21:92;6010:2;5990:18;;;5983:30;6049:34;6029:18;;;6022:62;6120:26;6100:18;;;6093:54;6164:19;;2174:92:5;5769:420:92;2174:92:5;-1:-1:-1;1180:66:2::1;3027:131:5::0;:::o;3005:100:75:-;3052:7;3078:20;1180:66:2;1557:65;-1:-1:-1;;;;;1557:65:2;;1478:151;3078:20:75;3071:27;;3005:100;:::o;1488:168:53:-;4882:13:4;;1542:1:53;;4882:13:4;;;;;4881:14;:40;;;;-1:-1:-1;4899:12:4;;:22;;;;:12;;:22;4881:40;4873:99;;;;-1:-1:-1;;;4873:99:4;;4541:2:92;4873:99:4;;;4523:21:92;4580:2;4560:18;;;4553:30;4619:34;4599:18;;;4592:62;-1:-1:-1;;;4670:18:92;;;4663:44;4724:19;;4873:99:4;4339:410:92;4873:99:4;4982:12;:22;;-1:-1:-1;;5014:20:4;4982:22;;;5014:20;4982:22;5014:20;;;1555:34:53::1;1584:4:::0;1555:28:::1;:34::i;:::-;1608:1;1599:6;:10:::0;1628:1:::1;1619:6;:10:::0;1648:1:::1;1639:6;:10:::0;-1:-1:-1;5055:21:4;;-1:-1:-1;;5055:21:4;;;5091:20;;4926:4:92;4914:17;;4896:36;;5091:20:4;;4884:2:92;4869:18;5091:20:4;4754:184:92;3446:204:75;1616:4:67;;1808:38:75;;1610:67:67;;-1:-1:-1;;;;;1616:4:67;1630;965:10:8;1651:13:67;1039:14:8;;1610:5:67;:67::i;2841:944:2:-;839:66;3257:59;;;3253:526;;;3332:37;3351:17;3332:18;:37::i;:::-;2841:944;;;:::o;3253:526::-;3433:17;-1:-1:-1;;;;;3404:61:2;;:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3404:63:2;;;;;;;;-1:-1:-1;;3404:63:2;;;;;;;;;;;;:::i;:::-;;;3400:302;;3631:56;;-1:-1:-1;;;3631:56:2;;6585:2:92;3631:56:2;;;6567:21:92;6624:2;6604:18;;;6597:30;6663:34;6643:18;;;6636:62;6734:16;6714:18;;;6707:44;6768:19;;3631:56:2;6383:410:92;3400:302:2;1180:66;3517:28;;3509:82;;;;-1:-1:-1;;;3509:82:2;;7000:2:92;3509:82:2;;;6982:21:92;7039:2;7019:18;;;7012:30;7078:34;7058:18;;;7051:62;7149:11;7129:18;;;7122:39;7178:19;;3509:82:2;6798:405:92;3509:82:2;3468:138;3715:53;3733:17;3752:4;3758:9;3715:17;:53::i;2014:139:75:-;5374:13:4;;;;;;;5366:69;;;;-1:-1:-1;;;5366:69:4;;7410:2:92;5366:69:4;;;7392:21:92;7449:2;7429:18;;;7422:30;7488:34;7468:18;;;7461:62;-1:-1:-1;;;7539:18:92;;;7532:41;7590:19;;5366:69:4;7208:407:92;5366:69:4;2107:39:75::1;2141:4;2107:33;:39::i;1041:363:68:-:0;1180:54;;-1:-1:-1;;;1180:54:68;;-1:-1:-1;;;;;1180:18:68;;;;;:54;;1199:6;;1207:4;;1213:13;;1228:5;;;;1180:54;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1175:226;;1251:150;;-1:-1:-1;;;1251:150:68;;-1:-1:-1;;;;;8902:15:92;;;1251:150:68;;;8884:34:92;8954:15;;;8934:18;;;8927:43;9006:15;;8986:18;;;8979:43;9038:18;;;9031:34;;;8795:19;;1251:150:68;8592:479:92;1175:226:68;1041:363;;;;;;:::o;1720:281:2:-;-1:-1:-1;;;;;1713:19:6;;;1793:106:2;;;;-1:-1:-1;;;1793:106:2;;9278:2:92;1793:106:2;;;9260:21:92;9317:2;9297:18;;;9290:30;9356:34;9336:18;;;9329:62;9427:15;9407:18;;;9400:43;9460:19;;1793:106:2;9076:409:92;1793:106:2;1180:66;1909:85;;-1:-1:-1;;1909:85:2;-1:-1:-1;;;;;1909:85:2;;;;;;;;;;1720:281::o;2393:276::-;2501:29;2512:17;2501:10;:29::i;:::-;2558:1;2544:4;:11;:15;:28;;;;2563:9;2544:28;2540:123;;;2588:64;2628:17;2647:4;2588:39;:64::i;:::-;;2393:276;;;:::o;1010:108:67:-;5374:13:4;;;;;;;5366:69;;;;-1:-1:-1;;;5366:69:4;;7410:2:92;5366:69:4;;;7392:21:92;7449:2;7429:18;;;7422:30;7488:34;7468:18;;;7461:62;-1:-1:-1;;;7539:18:92;;;7532:41;7590:19;;5366:69:4;7208:407:92;5366:69:4;1100:4:67::1;:11:::0;;-1:-1:-1;;1100:11:67::1;-1:-1:-1::0;;;;;1100:11:67;;;::::1;::::0;;;::::1;::::0;;1010:108::o;2107:152:2:-;2173:37;2192:17;2173:18;:37::i;:::-;2225:27;;-1:-1:-1;;;;;2225:27:2;;;;;;;;2107:152;:::o;6685:198:6:-;6768:12;6799:77;6820:6;6828:4;6799:77;;;;;;;;;;;;;;;;;:20;:77::i;:::-;6792:84;6685:198;-1:-1:-1;;;6685:198:6:o;7069:325::-;7210:12;7235;7249:23;7276:6;-1:-1:-1;;;;;7276:19:6;7296:4;7276:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7234:67;;;;7318:69;7345:6;7353:7;7362:10;7374:12;7318:26;:69::i;:::-;7311:76;7069:325;-1:-1:-1;;;;;;7069:325:6:o;7682:628::-;7862:12;7890:7;7886:418;;;7917:10;:17;7938:1;7917:22;7913:286;;-1:-1:-1;;;;;1713:19:6;;;8124:60;;;;-1:-1:-1;;;8124:60:6;;10239:2:92;8124:60:6;;;10221:21:92;10278:2;10258:18;;;10251:30;10317:31;10297:18;;;10290:59;10366:18;;8124:60:6;10037:353:92;8124:60:6;-1:-1:-1;8219:10:6;8212:17;;7886:418;8260:33;8268:10;8280:12;8260:7;:33::i;:::-;7682:628;;;;;;:::o;8832:540::-;8991:17;;:21;8987:379;;9219:10;9213:17;9275:15;9262:10;9258:2;9254:19;9247:44;8987:379;9342:12;9335:20;;-1:-1:-1;;;9335:20:6;;;;;;;;:::i;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:286:92:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:92;;209:43;;199:71;;266:1;263;256:12;497:272;555:6;608:2;596:9;587:7;583:23;579:32;576:52;;;624:1;621;614:12;576:52;663:9;650:23;713:6;706:5;702:18;695:5;692:29;682:57;;735:1;732;725:12;956:501;1132:2;1117:18;;1121:9;1212:6;1090:4;1246:205;1260:4;1257:1;1254:11;1246:205;;;1323:13;;1338:4;1319:24;1307:37;;1367:4;1391:12;;;;1426:15;;;;1280:1;1273:9;1246:205;;;1250:3;;;956:501;;;;:::o;1462:154::-;-1:-1:-1;;;;;1541:5:92;1537:54;1530:5;1527:65;1517:93;;1606:1;1603;1596:12;1621:247;1680:6;1733:2;1721:9;1712:7;1708:23;1704:32;1701:52;;;1749:1;1746;1739:12;1701:52;1788:9;1775:23;1807:31;1832:5;1807:31;:::i;2118:344::-;2266:2;2251:18;;2299:1;2288:13;;2278:144;;2344:10;2339:3;2335:20;2332:1;2325:31;2379:4;2376:1;2369:15;2407:4;2404:1;2397:15;2278:144;2431:25;;;2118:344;:::o;2467:127::-;2528:10;2523:3;2519:20;2516:1;2509:31;2559:4;2556:1;2549:15;2583:4;2580:1;2573:15;2599:1056;2676:6;2684;2737:2;2725:9;2716:7;2712:23;2708:32;2705:52;;;2753:1;2750;2743:12;2705:52;2792:9;2779:23;2811:31;2836:5;2811:31;:::i;:::-;2861:5;-1:-1:-1;2917:2:92;2902:18;;2889:32;2940:18;2970:14;;;2967:34;;;2997:1;2994;2987:12;2967:34;3035:6;3024:9;3020:22;3010:32;;3080:7;3073:4;3069:2;3065:13;3061:27;3051:55;;3102:1;3099;3092:12;3051:55;3138:2;3125:16;3160:2;3156;3153:10;3150:36;;;3166:18;;:::i;:::-;3241:2;3235:9;3209:2;3295:13;;-1:-1:-1;;3291:22:92;;;3315:2;3287:31;3283:40;3271:53;;;3339:18;;;3359:22;;;3336:46;3333:72;;;3385:18;;:::i;:::-;3425:10;3421:2;3414:22;3460:2;3452:6;3445:18;3500:7;3495:2;3490;3486;3482:11;3478:20;3475:33;3472:53;;;3521:1;3518;3511:12;3472:53;3577:2;3572;3568;3564:11;3559:2;3551:6;3547:15;3534:46;3622:1;3617:2;3612;3604:6;3600:15;3596:24;3589:35;3643:6;3633:16;;;;;;;2599:1056;;;;;:::o;6194:184::-;6264:6;6317:2;6305:9;6296:7;6292:23;6288:32;6285:52;;;6333:1;6330;6323:12;6285:52;-1:-1:-1;6356:16:92;;6194:184;-1:-1:-1;6194:184:92:o;7620:685::-;7824:4;-1:-1:-1;;;;;7934:2:92;7926:6;7922:15;7911:9;7904:34;7986:2;7978:6;7974:15;7969:2;7958:9;7954:18;7947:43;;8026:6;8021:2;8010:9;8006:18;7999:34;8069:3;8064:2;8053:9;8049:18;8042:31;8110:6;8104:3;8093:9;8089:19;8082:35;8168:6;8160;8154:3;8143:9;8139:19;8126:49;8225:1;8219:3;8210:6;8199:9;8195:22;8191:32;8184:43;8295:3;8288:2;8284:7;8279:2;8271:6;8267:15;8263:29;8252:9;8248:45;8244:55;8236:63;;7620:685;;;;;;;;:::o;8310:277::-;8377:6;8430:2;8418:9;8409:7;8405:23;8401:32;8398:52;;;8446:1;8443;8436:12;8398:52;8478:9;8472:16;8531:5;8524:13;8517:21;8510:5;8507:32;8497:60;;8553:1;8550;8543:12;9490:250;9575:1;9585:113;9599:6;9596:1;9593:13;9585:113;;;9675:11;;;9669:18;9656:11;;;9649:39;9621:2;9614:10;9585:113;;;-1:-1:-1;;9732:1:92;9714:16;;9707:27;9490:250::o;9745:287::-;9874:3;9912:6;9906:13;9928:66;9987:6;9982:3;9975:4;9967:6;9963:17;9928:66;:::i;:::-;10010:16;;;;;9745:287;-1:-1:-1;;9745:287:92:o;10395:396::-;10544:2;10533:9;10526:21;10507:4;10576:6;10570:13;10619:6;10614:2;10603:9;10599:18;10592:34;10635:79;10707:6;10702:2;10691:9;10687:18;10682:2;10674:6;10670:15;10635:79;:::i;:::-;10775:2;10754:15;-1:-1:-1;;10750:29:92;10735:45;;;;10782:2;10731:54;;10395:396;-1:-1:-1;;10395:396:92:o"},"gasEstimates":{"creation":{"codeDepositCost":"940800","executionCost":"infinite","totalCost":"infinite"},"external":{"UPGRADE_PLUGIN_PERMISSION_ID()":"261","dao()":"2387","implementation()":"2436","initialize(address)":"infinite","initializeFrom(uint16)":"98388","pluginType()":"316","protocolVersion()":"infinite","proxiableUUID()":"infinite","state1()":"2317","state2()":"2383","state3()":"2363","supportsInterface(bytes4)":"560","upgradeTo(address)":"infinite","upgradeToAndCall(address,bytes)":"infinite"}},"methodIdentifiers":{"UPGRADE_PLUGIN_PERMISSION_ID()":"c9c4bfca","dao()":"4162169f","implementation()":"5c60da1b","initialize(address)":"c4d66de8","initializeFrom(uint16)":"039a8c50","pluginType()":"41de6830","protocolVersion()":"2ae9c600","proxiableUUID()":"52d1902d","state1()":"6accab8c","state2()":"efe51cca","state3()":"2491118d","supportsInterface(bytes4)":"01ffc9a7","upgradeTo(address)":"3659cfe6","upgradeToAndCall(address,bytes)":"4f1ef286"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"dao\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"name\":\"DaoUnauthorized\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"UPGRADE_PLUGIN_PERMISSION_ID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"dao\",\"outputs\":[{\"internalType\":\"contract IDAO\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IDAO\",\"name\":\"_dao\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"_previousBuild\",\"type\":\"uint16\"}],\"name\":\"initializeFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pluginType\",\"outputs\":[{\"internalType\":\"enum IPlugin.PluginType\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"protocolVersion\",\"outputs\":[{\"internalType\":\"uint8[3]\",\"name\":\"\",\"type\":\"uint8[3]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"state1\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"state2\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"state3\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"upgradeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"DO NOT USE IN PRODUCTION!\",\"errors\":{\"DaoUnauthorized(address,address,address,bytes32)\":[{\"params\":{\"dao\":\"The associated DAO.\",\"permissionId\":\"The permission identifier.\",\"where\":\"The context in which the authorization reverted.\",\"who\":\"The address (EOA or contract) missing the permission.\"}}]},\"kind\":\"dev\",\"methods\":{\"dao()\":{\"returns\":{\"_0\":\"The DAO contract.\"}},\"implementation()\":{\"returns\":{\"_0\":\"The address of the implementation contract.\"}},\"protocolVersion()\":{\"details\":\"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\",\"returns\":{\"_0\":\"Returns the semantic Aragon OSx protocol version number.\"}},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"supportsInterface(bytes4)\":{\"params\":{\"_interfaceId\":\"The ID of the interface.\"},\"returns\":{\"_0\":\"Returns `true` if the interface is supported.\"}},\"upgradeTo(address)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"},\"upgradeToAndCall(address,bytes)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"}},\"version\":1},\"userdoc\":{\"errors\":{\"DaoUnauthorized(address,address,address,bytes32)\":[{\"notice\":\"Thrown if a call is unauthorized in the associated DAO.\"}]},\"kind\":\"user\",\"methods\":{\"UPGRADE_PLUGIN_PERMISSION_ID()\":{\"notice\":\"The ID of the permission required to call the `_authorizeUpgrade` function.\"},\"dao()\":{\"notice\":\"Returns the DAO contract.\"},\"implementation()\":{\"notice\":\"Returns the address of the implementation contract in the [proxy storage slot](https://eips.ethereum.org/EIPS/eip-1967) slot the [UUPS proxy](https://eips.ethereum.org/EIPS/eip-1822) is pointing to.\"},\"pluginType()\":{\"notice\":\"Returns the plugin's type\"},\"protocolVersion()\":{\"notice\":\"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Checks if an interface is supported by this or its parent contract.\"}},\"notice\":\"A mock upgradeable plugin to be deployed via the UUPS proxy pattern. v1.1 (Release 1, Build 3)\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/mocks/plugin/PluginUUPSUpgradeableMock.sol\":\"PluginUUPSUpgradeableMockBuild3\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/interfaces/IERC1967Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (interfaces/IERC1967.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\\n *\\n * _Available since v4.8.3._\\n */\\ninterface IERC1967Upgradeable {\\n /**\\n * @dev Emitted when the implementation is upgraded.\\n */\\n event Upgraded(address indexed implementation);\\n\\n /**\\n * @dev Emitted when the admin account has changed.\\n */\\n event AdminChanged(address previousAdmin, address newAdmin);\\n\\n /**\\n * @dev Emitted when the beacon is changed.\\n */\\n event BeaconUpgraded(address indexed beacon);\\n}\\n\",\"keccak256\":\"0x47d6e06872b12e72c79d1b5eb55842f860b5fb1207b2317c2358d2766b950a7b\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822ProxiableUpgradeable {\\n /**\\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n * address.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy.\\n */\\n function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../beacon/IBeaconUpgradeable.sol\\\";\\nimport \\\"../../interfaces/IERC1967Upgradeable.sol\\\";\\nimport \\\"../../interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\nimport \\\"../../utils/StorageSlotUpgradeable.sol\\\";\\nimport {Initializable} from \\\"../utils/Initializable.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n */\\nabstract contract ERC1967UpgradeUpgradeable is Initializable, IERC1967Upgradeable {\\n // This is the keccak-256 hash of \\\"eip1967.proxy.rollback\\\" subtracted by 1\\n bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n /**\\n * @dev Storage slot with the address of the current implementation.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n function __ERC1967Upgrade_init() internal onlyInitializing {\\n }\\n\\n function __ERC1967Upgrade_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _getImplementation() internal view returns (address) {\\n return StorageSlotUpgradeable.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 implementation slot.\\n */\\n function _setImplementation(address newImplementation) private {\\n require(AddressUpgradeable.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n StorageSlotUpgradeable.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n }\\n\\n /**\\n * @dev Perform implementation upgrade\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeTo(address newImplementation) internal {\\n _setImplementation(newImplementation);\\n emit Upgraded(newImplementation);\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCall(address newImplementation, bytes memory data, bool forceCall) internal {\\n _upgradeTo(newImplementation);\\n if (data.length > 0 || forceCall) {\\n AddressUpgradeable.functionDelegateCall(newImplementation, data);\\n }\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCallUUPS(address newImplementation, bytes memory data, bool forceCall) internal {\\n // Upgrades from old implementations will perform a rollback test. This test requires the new\\n // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n // this special case will break upgrade paths from old UUPS implementation to new ones.\\n if (StorageSlotUpgradeable.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n _setImplementation(newImplementation);\\n } else {\\n try IERC1822ProxiableUpgradeable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n require(slot == _IMPLEMENTATION_SLOT, \\\"ERC1967Upgrade: unsupported proxiableUUID\\\");\\n } catch {\\n revert(\\\"ERC1967Upgrade: new implementation is not UUPS\\\");\\n }\\n _upgradeToAndCall(newImplementation, data, forceCall);\\n }\\n }\\n\\n /**\\n * @dev Storage slot with the admin of the contract.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _getAdmin() internal view returns (address) {\\n return StorageSlotUpgradeable.getAddressSlot(_ADMIN_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 admin slot.\\n */\\n function _setAdmin(address newAdmin) private {\\n require(newAdmin != address(0), \\\"ERC1967: new admin is the zero address\\\");\\n StorageSlotUpgradeable.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n */\\n function _changeAdmin(address newAdmin) internal {\\n emit AdminChanged(_getAdmin(), newAdmin);\\n _setAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\\n */\\n bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n /**\\n * @dev Returns the current beacon.\\n */\\n function _getBeacon() internal view returns (address) {\\n return StorageSlotUpgradeable.getAddressSlot(_BEACON_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new beacon in the EIP1967 beacon slot.\\n */\\n function _setBeacon(address newBeacon) private {\\n require(AddressUpgradeable.isContract(newBeacon), \\\"ERC1967: new beacon is not a contract\\\");\\n require(\\n AddressUpgradeable.isContract(IBeaconUpgradeable(newBeacon).implementation()),\\n \\\"ERC1967: beacon implementation is not a contract\\\"\\n );\\n StorageSlotUpgradeable.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n }\\n\\n /**\\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n *\\n * Emits a {BeaconUpgraded} event.\\n */\\n function _upgradeBeaconToAndCall(address newBeacon, bytes memory data, bool forceCall) internal {\\n _setBeacon(newBeacon);\\n emit BeaconUpgraded(newBeacon);\\n if (data.length > 0 || forceCall) {\\n AddressUpgradeable.functionDelegateCall(IBeaconUpgradeable(newBeacon).implementation(), data);\\n }\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x7795808e3899c805254e3ae58074b20f799b466e3f43e057e47bedee5fb771f8\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeaconUpgradeable {\\n /**\\n * @dev Must return an address that can be used as a delegate call target.\\n *\\n * {BeaconProxy} will check that this address is a contract.\\n */\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/UUPSUpgradeable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport \\\"../ERC1967/ERC1967UpgradeUpgradeable.sol\\\";\\nimport {Initializable} from \\\"./Initializable.sol\\\";\\n\\n/**\\n * @dev An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an\\n * {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy.\\n *\\n * A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is\\n * reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing\\n * `UUPSUpgradeable` with a custom implementation of upgrades.\\n *\\n * The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism.\\n *\\n * _Available since v4.1._\\n */\\nabstract contract UUPSUpgradeable is Initializable, IERC1822ProxiableUpgradeable, ERC1967UpgradeUpgradeable {\\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable state-variable-assignment\\n address private immutable __self = address(this);\\n\\n /**\\n * @dev Check that the execution is being performed through a delegatecall call and that the execution context is\\n * a proxy contract with an implementation (as defined in ERC1967) pointing to self. This should only be the case\\n * for UUPS and transparent proxies that are using the current contract as their implementation. Execution of a\\n * function through ERC1167 minimal proxies (clones) would not normally pass this test, but is not guaranteed to\\n * fail.\\n */\\n modifier onlyProxy() {\\n require(address(this) != __self, \\\"Function must be called through delegatecall\\\");\\n require(_getImplementation() == __self, \\\"Function must be called through active proxy\\\");\\n _;\\n }\\n\\n /**\\n * @dev Check that the execution is not being performed through a delegate call. This allows a function to be\\n * callable on the implementing contract but not through proxies.\\n */\\n modifier notDelegated() {\\n require(address(this) == __self, \\\"UUPSUpgradeable: must not be called through delegatecall\\\");\\n _;\\n }\\n\\n function __UUPSUpgradeable_init() internal onlyInitializing {\\n }\\n\\n function __UUPSUpgradeable_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the\\n * implementation. It is used to validate the implementation's compatibility when performing an upgrade.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\\n */\\n function proxiableUUID() external view virtual override notDelegated returns (bytes32) {\\n return _IMPLEMENTATION_SLOT;\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy to `newImplementation`.\\n *\\n * Calls {_authorizeUpgrade}.\\n *\\n * Emits an {Upgraded} event.\\n *\\n * @custom:oz-upgrades-unsafe-allow-reachable delegatecall\\n */\\n function upgradeTo(address newImplementation) public virtual onlyProxy {\\n _authorizeUpgrade(newImplementation);\\n _upgradeToAndCallUUPS(newImplementation, new bytes(0), false);\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call\\n * encoded in `data`.\\n *\\n * Calls {_authorizeUpgrade}.\\n *\\n * Emits an {Upgraded} event.\\n *\\n * @custom:oz-upgrades-unsafe-allow-reachable delegatecall\\n */\\n function upgradeToAndCall(address newImplementation, bytes memory data) public payable virtual onlyProxy {\\n _authorizeUpgrade(newImplementation);\\n _upgradeToAndCallUUPS(newImplementation, data, true);\\n }\\n\\n /**\\n * @dev Function that should revert when `msg.sender` is not authorized to upgrade the contract. Called by\\n * {upgradeTo} and {upgradeToAndCall}.\\n *\\n * Normally, this function will use an xref:access.adoc[access control] modifier such as {Ownable-onlyOwner}.\\n *\\n * ```solidity\\n * function _authorizeUpgrade(address) internal override onlyOwner {}\\n * ```\\n */\\n function _authorizeUpgrade(address newImplementation) internal virtual;\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0xefb41f5c1a00249b7a99f0782f8c557865605426a3fb6e5fe9ae334293ae4f33\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n function __Context_init() internal onlyInitializing {\\n }\\n\\n function __Context_init_unchained() internal onlyInitializing {\\n }\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n function _contextSuffixLength() internal view virtual returns (uint256) {\\n return 0;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x75097e35253e7fb282ee4d7f27a80eaacfa759923185bf17302a89cbc059c5ef\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/StorageSlot.sol)\\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```solidity\\n * contract ERC1967 {\\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n * function _getImplementation() internal view returns (address) {\\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n * }\\n *\\n * function _setImplementation(address newImplementation) internal {\\n * require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n * }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._\\n * _Available since v4.9 for `string`, `bytes`._\\n */\\nlibrary StorageSlotUpgradeable {\\n struct AddressSlot {\\n address value;\\n }\\n\\n struct BooleanSlot {\\n bool value;\\n }\\n\\n struct Bytes32Slot {\\n bytes32 value;\\n }\\n\\n struct Uint256Slot {\\n uint256 value;\\n }\\n\\n struct StringSlot {\\n string value;\\n }\\n\\n struct BytesSlot {\\n bytes value;\\n }\\n\\n /**\\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n */\\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n */\\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n */\\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n */\\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` with member `value` located at `slot`.\\n */\\n function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\\n */\\n function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` with member `value` located at `slot`.\\n */\\n function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\\n */\\n function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n}\\n\",\"keccak256\":\"0x07ac95acad040f1fb1f6120dd0aa5f702db69446e95f82613721879d30de0908\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165Upgradeable.sol\\\";\\nimport {Initializable} from \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165Upgradeable is Initializable, IERC165Upgradeable {\\n function __ERC165_init() internal onlyInitializing {\\n }\\n\\n function __ERC165_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165Upgradeable).interfaceId;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0xd90d7723512df65ae417adaf0801042940f0dabd60039ceeaffe34aa5b238da1\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165Upgradeable {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\"},\"src/dao/IDAO.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IDAO\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for DAOs within the Aragon App DAO framework.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IDAO {\\n /// @notice The action struct to be consumed by the DAO's `execute` function resulting in an external call.\\n /// @param to The address to call.\\n /// @param value The native token value to be sent with the call.\\n /// @param data The bytes-encoded function selector and calldata for the call.\\n struct Action {\\n address to;\\n uint256 value;\\n bytes data;\\n }\\n\\n /// @notice Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\\n /// @param _where The address of the contract.\\n /// @param _who The address of a EOA or contract to give the permissions.\\n /// @param _permissionId The permission identifier.\\n /// @param _data The optional data passed to the `PermissionCondition` registered.\\n /// @return Returns true if the address has permission, false if not.\\n function hasPermission(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes memory _data\\n ) external view returns (bool);\\n\\n /// @notice Updates the DAO metadata (e.g., an IPFS hash).\\n /// @param _metadata The IPFS hash of the new metadata object.\\n function setMetadata(bytes calldata _metadata) external;\\n\\n /// @notice Emitted when the DAO metadata is updated.\\n /// @param metadata The IPFS hash of the new metadata object.\\n event MetadataSet(bytes metadata);\\n\\n /// @notice Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted.\\n /// @param _callId The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce.\\n /// @param _actions The array of actions.\\n /// @param _allowFailureMap A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @return The array of results obtained from the executed actions in `bytes`.\\n /// @return The resulting failure map containing the actions have actually failed.\\n function execute(\\n bytes32 _callId,\\n Action[] memory _actions,\\n uint256 _allowFailureMap\\n ) external returns (bytes[] memory, uint256);\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param actor The address of the caller.\\n /// @param callId The ID of the call.\\n /// @param actions The array of actions executed.\\n /// @param allowFailureMap The allow failure map encoding which actions are allowed to fail.\\n /// @param failureMap The failure map encoding which actions have failed.\\n /// @param execResults The array with the results of the executed actions.\\n /// @dev The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce.\\n event Executed(\\n address indexed actor,\\n bytes32 callId,\\n Action[] actions,\\n uint256 allowFailureMap,\\n uint256 failureMap,\\n bytes[] execResults\\n );\\n\\n /// @notice Emitted when a standard callback is registered.\\n /// @param interfaceId The ID of the interface.\\n /// @param callbackSelector The selector of the callback function.\\n /// @param magicNumber The magic number to be registered for the callback function selector.\\n event StandardCallbackRegistered(\\n bytes4 interfaceId,\\n bytes4 callbackSelector,\\n bytes4 magicNumber\\n );\\n\\n /// @notice Deposits (native) tokens to the DAO contract with a reference string.\\n /// @param _token The address of the token or address(0) in case of the native token.\\n /// @param _amount The amount of tokens to deposit.\\n /// @param _reference The reference describing the deposit reason.\\n function deposit(address _token, uint256 _amount, string calldata _reference) external payable;\\n\\n /// @notice Emitted when a token deposit has been made to the DAO.\\n /// @param sender The address of the sender.\\n /// @param token The address of the deposited token.\\n /// @param amount The amount of tokens deposited.\\n /// @param _reference The reference describing the deposit reason.\\n event Deposited(\\n address indexed sender,\\n address indexed token,\\n uint256 amount,\\n string _reference\\n );\\n\\n /// @notice Emitted when a native token deposit has been made to the DAO.\\n /// @dev This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).\\n /// @param sender The address of the sender.\\n /// @param amount The amount of native tokens deposited.\\n event NativeTokenDeposited(address sender, uint256 amount);\\n\\n /// @notice Setter for the trusted forwarder verifying the meta transaction.\\n /// @param _trustedForwarder The trusted forwarder address.\\n function setTrustedForwarder(address _trustedForwarder) external;\\n\\n /// @notice Getter for the trusted forwarder verifying the meta transaction.\\n /// @return The trusted forwarder address.\\n function getTrustedForwarder() external view returns (address);\\n\\n /// @notice Emitted when a new TrustedForwarder is set on the DAO.\\n /// @param forwarder the new forwarder address.\\n event TrustedForwarderSet(address forwarder);\\n\\n /// @notice Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\\n /// @param _hash The hash of the data to be signed.\\n /// @param _signature The signature byte array associated with `_hash`.\\n /// @return Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not.\\n function isValidSignature(bytes32 _hash, bytes memory _signature) external returns (bytes4);\\n\\n /// @notice Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\\n /// @param _interfaceId The ID of the interface.\\n /// @param _callbackSelector The selector of the callback function.\\n /// @param _magicNumber The magic number to be registered for the function signature.\\n function registerStandardCallback(\\n bytes4 _interfaceId,\\n bytes4 _callbackSelector,\\n bytes4 _magicNumber\\n ) external;\\n\\n /// @notice Removed function being left here to not corrupt the IDAO interface ID. Any call will revert.\\n /// @dev Introduced in v1.0.0. Removed in v1.4.0.\\n function setSignatureValidator(address) external;\\n}\\n\",\"keccak256\":\"0xb7f615523c26de042edce98731c658f44a1edb2464387ac1b642c4c69f57128e\",\"license\":\"AGPL-3.0-or-later\"},\"src/mocks/plugin/PluginUUPSUpgradeableMock.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\n/* solhint-disable one-contract-per-file */\\npragma solidity ^0.8.8;\\n\\nimport {PluginUUPSUpgradeable} from \\\"../../plugin/PluginUUPSUpgradeable.sol\\\";\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice A mock upgradeable plugin to be deployed via the UUPS proxy pattern.\\n/// v1.1 (Release 1, Build 1)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableMockBuild1 is PluginUUPSUpgradeable {\\n uint256 public state1;\\n\\n function initialize(IDAO _dao) external initializer {\\n __PluginUUPSUpgradeable_init(_dao);\\n state1 = 1;\\n }\\n}\\n\\n/// @notice A mock upgradeable plugin to be deployed via the UUPS proxy pattern.\\n/// v1.1 (Release 1, Build 2)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableMockBuild2 is PluginUUPSUpgradeable {\\n uint256 public state1;\\n uint256 public state2;\\n\\n function initialize(IDAO _dao) external reinitializer(2) {\\n __PluginUUPSUpgradeable_init(_dao);\\n state1 = 1;\\n state2 = 2;\\n }\\n\\n function initializeFrom(uint16 _previousBuild) external reinitializer(2) {\\n if (_previousBuild < 2) {\\n state2 = 2;\\n }\\n }\\n}\\n\\n/// @notice A mock upgradeable plugin to be deployed via the UUPS proxy pattern.\\n/// v1.1 (Release 1, Build 3)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableMockBuild3 is PluginUUPSUpgradeable {\\n uint256 public state1;\\n uint256 public state2;\\n uint256 public state3;\\n\\n function initialize(IDAO _dao) external reinitializer(3) {\\n __PluginUUPSUpgradeable_init(_dao);\\n state1 = 1;\\n state2 = 2;\\n state3 = 3;\\n }\\n\\n function initializeFrom(uint16 _previousBuild) external reinitializer(3) {\\n if (_previousBuild < 2) {\\n state2 = 2;\\n }\\n if (_previousBuild < 3) {\\n state3 = 3;\\n }\\n }\\n}\\n\\n/// @notice A mock upgradeable plugin missing an initializer function.\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableMockBad is PluginUUPSUpgradeable {\\n uint256 public state1;\\n\\n function notAnInitializer(IDAO _dao) external {\\n __PluginUUPSUpgradeable_init(_dao);\\n state1 = 1;\\n }\\n}\\n\",\"keccak256\":\"0x2917df3b1da0de27f58cf531afeaa4e6c4285717247cbdd9ecc7880ae5cb9cb0\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/DaoAuthorizableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ContextUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\\\";\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\nimport {_auth} from \\\"./auth.sol\\\";\\n\\n/// @title DaoAuthorizableUpgradeable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract contract providing a meta-transaction compatible modifier for upgradeable or cloneable contracts to authorize function calls through an associated DAO.\\n/// @dev Make sure to call `__DaoAuthorizableUpgradeable_init` during initialization of the inheriting contract.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract DaoAuthorizableUpgradeable is ContextUpgradeable {\\n /// @notice The associated DAO managing the permissions of inheriting contracts.\\n IDAO private dao_;\\n\\n /// @notice Initializes the contract by setting the associated DAO.\\n /// @param _dao The associated DAO address.\\n // solhint-disable-next-line func-name-mixedcase\\n function __DaoAuthorizableUpgradeable_init(IDAO _dao) internal onlyInitializing {\\n dao_ = _dao;\\n }\\n\\n /// @notice Returns the DAO contract.\\n /// @return The DAO contract.\\n function dao() public view returns (IDAO) {\\n return dao_;\\n }\\n\\n /// @notice A modifier to make functions on inheriting contracts authorized. Permissions to call the function are checked through the associated DAO's permission manager.\\n /// @param _permissionId The permission identifier required to call the method this modifier is applied to.\\n modifier auth(bytes32 _permissionId) {\\n _auth(dao_, address(this), _msgSender(), _permissionId, _msgData());\\n _;\\n }\\n\\n /// @notice This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain (see [OpenZeppelin's guide about storage gaps](https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps)).\\n uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0x7fac6b01b037ba1cb9d6a22d3f43b0785037dcf496ffb672434d9bf7227d2585\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/auth.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice Thrown if a call is unauthorized in the associated DAO.\\n/// @param dao The associated DAO.\\n/// @param where The context in which the authorization reverted.\\n/// @param who The address (EOA or contract) missing the permission.\\n/// @param permissionId The permission identifier.\\nerror DaoUnauthorized(address dao, address where, address who, bytes32 permissionId);\\n\\n/// @notice A free function checking if a caller is granted permissions on a target contract via a permission identifier that redirects the approval to a `PermissionCondition` if this was specified in the setup.\\n/// @param _where The address of the target contract for which `who` receives permission.\\n/// @param _who The address (EOA or contract) owning the permission.\\n/// @param _permissionId The permission identifier.\\n/// @param _data The optional data passed to the `PermissionCondition` registered.\\n/// @custom:security-contact sirt@aragon.org\\nfunction _auth(\\n IDAO _dao,\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes calldata _data\\n) view {\\n if (!_dao.hasPermission(_where, _who, _permissionId, _data))\\n revert DaoUnauthorized({\\n dao: address(_dao),\\n where: _where,\\n who: _who,\\n permissionId: _permissionId\\n });\\n}\\n\",\"keccak256\":\"0x878764b4f87fe0651fb3798fb9cb87c952f8c6caf6ae79c7f09de84df6c00298\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/IPlugin.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IPlugin\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the traits of a plugin.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IPlugin {\\n enum PluginType {\\n UUPS,\\n Cloneable,\\n Constructable\\n }\\n\\n /// @notice Returns the plugin's type\\n function pluginType() external view returns (PluginType);\\n}\\n\",\"keccak256\":\"0xc57cd0d10b6380ab7f54c713a509e88fd8f4ad9288313a0e8e12b8887817ddfe\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/PluginUUPSUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {UUPSUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\\\";\\nimport {IERC1822ProxiableUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport {ERC165Upgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\\\";\\n\\nimport {IProtocolVersion} from \\\"../utils/versioning/IProtocolVersion.sol\\\";\\nimport {ProtocolVersion} from \\\"../utils/versioning/ProtocolVersion.sol\\\";\\nimport {DaoAuthorizableUpgradeable} from \\\"../permission/auth/DaoAuthorizableUpgradeable.sol\\\";\\nimport {IDAO} from \\\"../dao/IDAO.sol\\\";\\nimport {IPlugin} from \\\"./IPlugin.sol\\\";\\n\\n/// @title PluginUUPSUpgradeable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract, upgradeable contract to inherit from when creating a plugin being deployed via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract PluginUUPSUpgradeable is\\n IPlugin,\\n ERC165Upgradeable,\\n UUPSUpgradeable,\\n DaoAuthorizableUpgradeable,\\n ProtocolVersion\\n{\\n // NOTE: When adding new state variables to the contract, the size of `_gap` has to be adapted below as well.\\n\\n /// @notice Disables the initializers on the implementation contract to prevent it from being left uninitialized.\\n /// @custom:oz-upgrades-unsafe-allow constructor\\n constructor() {\\n _disableInitializers();\\n }\\n\\n /// @inheritdoc IPlugin\\n function pluginType() public pure override returns (PluginType) {\\n return PluginType.UUPS;\\n }\\n\\n /// @notice The ID of the permission required to call the `_authorizeUpgrade` function.\\n bytes32 public constant UPGRADE_PLUGIN_PERMISSION_ID = keccak256(\\\"UPGRADE_PLUGIN_PERMISSION\\\");\\n\\n /// @notice Initializes the plugin by storing the associated DAO.\\n /// @param _dao The DAO contract.\\n // solhint-disable-next-line func-name-mixedcase\\n function __PluginUUPSUpgradeable_init(IDAO _dao) internal virtual onlyInitializing {\\n __DaoAuthorizableUpgradeable_init(_dao);\\n }\\n\\n /// @notice Checks if an interface is supported by this or its parent contract.\\n /// @param _interfaceId The ID of the interface.\\n /// @return Returns `true` if the interface is supported.\\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\\n return\\n _interfaceId == type(IPlugin).interfaceId ||\\n _interfaceId == type(IProtocolVersion).interfaceId ||\\n _interfaceId == type(IERC1822ProxiableUpgradeable).interfaceId ||\\n super.supportsInterface(_interfaceId);\\n }\\n\\n /// @notice Returns the address of the implementation contract in the [proxy storage slot](https://eips.ethereum.org/EIPS/eip-1967) slot the [UUPS proxy](https://eips.ethereum.org/EIPS/eip-1822) is pointing to.\\n /// @return The address of the implementation contract.\\n function implementation() public view returns (address) {\\n return _getImplementation();\\n }\\n\\n /// @notice Internal method authorizing the upgrade of the contract via the [upgradeability mechanism for UUPS proxies](https://docs.openzeppelin.com/contracts/4.x/api/proxy#UUPSUpgradeable) (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\\n /// @dev The caller must have the `UPGRADE_PLUGIN_PERMISSION_ID` permission.\\n function _authorizeUpgrade(\\n address\\n )\\n internal\\n virtual\\n override\\n auth(UPGRADE_PLUGIN_PERMISSION_ID)\\n // solhint-disable-next-line no-empty-blocks\\n {\\n\\n }\\n\\n /// @notice This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain (see [OpenZeppelin's guide about storage gaps](https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps)).\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x127e7c4f839cb8c8486070990b78e22313f1ff089ffe6a4ff23ae358e48f0037\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/IProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IProtocolVersion\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the semantic Aragon OSx protocol version number.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IProtocolVersion {\\n /// @notice Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\\n /// @return _version Returns the semantic Aragon OSx protocol version number.\\n /// @dev This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\\n function protocolVersion() external view returns (uint8[3] memory _version);\\n}\\n\",\"keccak256\":\"0x00a4da654d21dc1bdadbdc8bd54bb86c378c56f85e461ccc31303628ea621361\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/ProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IProtocolVersion} from \\\"./IProtocolVersion.sol\\\";\\n\\n/// @title ProtocolVersion\\n/// @author Aragon X - 2023\\n/// @notice An abstract, stateless, non-upgradeable contract providing the current Aragon OSx protocol version number.\\n/// @dev Do not add any new variables to this contract that would shift down storage in the inheritance chain.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract ProtocolVersion is IProtocolVersion {\\n // IMPORTANT: Do not add any storage variable, see the above notice.\\n\\n /// @inheritdoc IProtocolVersion\\n function protocolVersion() public pure returns (uint8[3] memory) {\\n return [1, 4, 0];\\n }\\n}\\n\",\"keccak256\":\"0x3975c937be935f687c6b6b8f379071232681e98cf04b175d72781b819ea52bdb\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[{"astId":372,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild3","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":375,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild3","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":2821,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild3","label":"__gap","offset":0,"slot":"1","type":"t_array(t_uint256)50_storage"},{"astId":354,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild3","label":"__gap","offset":0,"slot":"51","type":"t_array(t_uint256)50_storage"},{"astId":670,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild3","label":"__gap","offset":0,"slot":"101","type":"t_array(t_uint256)50_storage"},{"astId":2592,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild3","label":"__gap","offset":0,"slot":"151","type":"t_array(t_uint256)50_storage"},{"astId":13111,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild3","label":"dao_","offset":0,"slot":"201","type":"t_contract(IDAO)10865"},{"astId":13160,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild3","label":"__gap","offset":0,"slot":"202","type":"t_array(t_uint256)49_storage"},{"astId":13632,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild3","label":"__gap","offset":0,"slot":"251","type":"t_array(t_uint256)50_storage"},{"astId":11842,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild3","label":"state1","offset":0,"slot":"301","type":"t_uint256"},{"astId":11844,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild3","label":"state2","offset":0,"slot":"302","type":"t_uint256"},{"astId":11846,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild3","label":"state3","offset":0,"slot":"303","type":"t_uint256"}],"types":{"t_array(t_uint256)49_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[49]","numberOfBytes":"1568"},"t_array(t_uint256)50_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[50]","numberOfBytes":"1600"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_contract(IDAO)10865":{"encoding":"inplace","label":"contract IDAO","numberOfBytes":"20"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"errors":{"DaoUnauthorized(address,address,address,bytes32)":[{"notice":"Thrown if a call is unauthorized in the associated DAO."}]},"kind":"user","methods":{"UPGRADE_PLUGIN_PERMISSION_ID()":{"notice":"The ID of the permission required to call the `_authorizeUpgrade` function."},"dao()":{"notice":"Returns the DAO contract."},"implementation()":{"notice":"Returns the address of the implementation contract in the [proxy storage slot](https://eips.ethereum.org/EIPS/eip-1967) slot the [UUPS proxy](https://eips.ethereum.org/EIPS/eip-1822) is pointing to."},"pluginType()":{"notice":"Returns the plugin's type"},"protocolVersion()":{"notice":"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with."},"supportsInterface(bytes4)":{"notice":"Checks if an interface is supported by this or its parent contract."}},"notice":"A mock upgradeable plugin to be deployed via the UUPS proxy pattern. v1.1 (Release 1, Build 3)","version":1}}},"src/mocks/plugin/PluginUUPSUpgradeableSetupMock.sol":{"PluginUUPSUpgradeableSetupMockBuild1":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"ConflictingValues","type":"error"},{"inputs":[{"internalType":"uint16","name":"fromBuild","type":"uint16"},{"internalType":"uint16","name":"thisBuild","type":"uint16"}],"name":"InvalidUpdatePath","type":"error"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_dao","type":"address"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"prepareInstallation","outputs":[{"internalType":"address","name":"plugin","type":"address"},{"components":[{"internalType":"address[]","name":"helpers","type":"address[]"},{"components":[{"internalType":"enum PermissionLib.Operation","name":"operation","type":"uint8"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"condition","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"internalType":"struct PermissionLib.MultiTargetPermission[]","name":"permissions","type":"tuple[]"}],"internalType":"struct IPluginSetup.PreparedSetupData","name":"preparedSetupData","type":"tuple"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_dao","type":"address"},{"components":[{"internalType":"address","name":"plugin","type":"address"},{"internalType":"address[]","name":"currentHelpers","type":"address[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct IPluginSetup.SetupPayload","name":"_payload","type":"tuple"}],"name":"prepareUninstallation","outputs":[{"components":[{"internalType":"enum PermissionLib.Operation","name":"operation","type":"uint8"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"condition","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"internalType":"struct PermissionLib.MultiTargetPermission[]","name":"permissions","type":"tuple[]"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_dao","type":"address"},{"internalType":"uint16","name":"_fromBuild","type":"uint16"},{"components":[{"internalType":"address","name":"plugin","type":"address"},{"internalType":"address[]","name":"currentHelpers","type":"address[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct IPluginSetup.SetupPayload","name":"_payload","type":"tuple"}],"name":"prepareUpdate","outputs":[{"internalType":"bytes","name":"","type":"bytes"},{"components":[{"internalType":"address[]","name":"helpers","type":"address[]"},{"components":[{"internalType":"enum PermissionLib.Operation","name":"operation","type":"uint8"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"condition","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"internalType":"struct PermissionLib.MultiTargetPermission[]","name":"permissions","type":"tuple[]"}],"internalType":"struct IPluginSetup.PreparedSetupData","name":"","type":"tuple"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"protocolVersion","outputs":[{"internalType":"uint8[3]","name":"","type":"uint8[3]"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"DO NOT USE IN PRODUCTION!","errors":{"InvalidUpdatePath(uint16,uint16)":[{"params":{"fromBuild":"The build number to update from.","thisBuild":"The build number of this setup to update to."}}]},"kind":"dev","methods":{"implementation()":{"details":"The implementation can be instantiated via the `new` keyword, cloned via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)), or proxied via the UUPS proxy pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).","returns":{"_0":"The address of the plugin implementation contract."}},"prepareInstallation(address,bytes)":{"params":{"_dao":"The address of the installing DAO.","_data":"The bytes-encoded data containing the input parameters for the installation as specified in the plugin's build metadata JSON file."},"returns":{"plugin":"The address of the `Plugin` contract being prepared for installation.","preparedSetupData":"The deployed plugin's relevant data which consists of helpers and permissions."}},"prepareUninstallation(address,(address,address[],bytes))":{"params":{"_dao":"The address of the uninstalling DAO.","_payload":"The relevant data necessary for the `prepareUninstallation`. See above."},"returns":{"permissions":"The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the uninstalling DAO."}},"prepareUpdate(address,uint16,(address,address[],bytes))":{"details":"The default implementation for the initial build 1 that reverts because no earlier build exists.","params":{"_dao":"The address of the updating DAO.","_fromBuild":"The build number of the plugin to update from.","_payload":"The relevant data necessary for the `prepareUpdate`. See above."},"returns":{"_0":"The initialization data to be passed to upgradeable contracts when the update is applied in the `PluginSetupProcessor`.","_1":"The deployed plugin's relevant data which consists of helpers and permissions."}},"protocolVersion()":{"details":"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.","returns":{"_0":"Returns the semantic Aragon OSx protocol version number."}},"supportsInterface(bytes4)":{"params":{"_interfaceId":"The ID of the interface."},"returns":{"_0":"Returns `true` if the interface is supported."}}},"version":1},"evm":{"bytecode":{"functionDebugData":{"@_11962":{"entryPoint":null,"id":11962,"parameterSlots":0,"returnSlots":0},"@_14409":{"entryPoint":null,"id":14409,"parameterSlots":1,"returnSlots":0}},"generatedSources":[],"linkReferences":{},"object":"60a060405234801561001057600080fd5b5060405161001d9061004b565b604051809103906000f080158015610039573d6000803e3d6000fd5b506001600160a01b0316608052610058565b6112138061126083390190565b6080516111e76100796000396000818160d201526102d301526111e76000f3fe60806040523480156200001157600080fd5b50600436106200007b5760003560e01c80639cb0a12411620000565780639cb0a12414620000fd578063a8a9c29e1462000123578063f10832f1146200014a57600080fd5b806301ffc9a714620000805780632ae9c60014620000ac5780635c60da1b14620000c5575b600080fd5b6200009762000091366004620005f8565b62000171565b60405190151581526020015b60405180910390f35b620000b6620001c4565b604051620000a3919062000624565b6040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152602001620000a3565b620001146200010e3660046200068a565b620001f0565b604051620000a391906200075b565b6200013a62000134366004620007a8565b62000208565b604051620000a3929190620008f7565b620001616200015b3660046200093f565b6200024f565b604051620000a392919062000a0d565b60006001600160e01b0319821663099718b560e41b1480620001a257506001600160e01b03198216621574e360e91b145b80620001be57506301ffc9a760e01b6001600160e01b03198316145b92915050565b620001ce620005cc565b5060408051606081018252600181526004602082015260009181019190915290565b606062000201600060018062000333565b9392505050565b606062000228604051806040016040528060608152602001606081525090565b60405163098990c560e11b8152600060048201526001602482015260440160405180910390fd5b60006200026f604051806040016040528060608152602001606081525090565b6040516001600160a01b038516602482015260009060440160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663189acdbd60e31b17905290506200030581620002f57f000000000000000000000000000000000000000000000000000000000000000090565b6001600160a01b031690620004cc565b925062000313600162000508565b825262000324600060018162000333565b60208301525090939092509050565b6060826001600160a01b0316846001600160a01b031611156200036957604051633a4013cd60e21b815260040160405180910390fd5b62000375848462000a4f565b6001600160a01b031667ffffffffffffffff81111562000399576200039962000929565b604051908082528060200260200182016040528015620003f457816020015b6040805160a081018252600080825260208083018290529282018190526060820181905260808201528252600019909201910181620003b85790505b509050835b836001600160a01b0316816001600160a01b03161015620004c4576040518060a00160405280846002811115620004345762000434620006de565b81526001600160a01b038316602082018190526040820152600060608201527fa280eec51ab8e1bc4b6b0c1b7f1bde785761b787a49db404e3e9338ed9b016ef6080909101528262000487878462000a4f565b6001600160a01b031681518110620004a357620004a362000a79565b60200260200101819052508080620004bb9062000a8f565b915050620003f9565b509392505050565b60008282604051620004de90620005ea565b620004eb92919062000ab8565b604051809103906000f080158015620004c4573d6000803e3d6000fd5b6060816001600160a01b031667ffffffffffffffff8111156200052f576200052f62000929565b60405190808252806020026020018201604052801562000559578160200160208202803683370190505b50905060005b826001600160a01b0316816001600160a01b03161015620005c6578082826001600160a01b03168151811062000599576200059962000a79565b6001600160a01b039092166020928302919091019091015280620005bd8162000a8f565b9150506200055f565b50919050565b60405180606001604052806003906020820280368337509192915050565b6106fe8062000add83390190565b6000602082840312156200060b57600080fd5b81356001600160e01b0319811681146200020157600080fd5b60608101818360005b60038110156200065157815160ff168352602092830192909101906001016200062d565b50505092915050565b80356001600160a01b03811681146200067257600080fd5b919050565b600060608284031215620005c657600080fd5b600080604083850312156200069e57600080fd5b620006a9836200065a565b9150602083013567ffffffffffffffff811115620006c657600080fd5b620006d48582860162000677565b9150509250929050565b634e487b7160e01b600052602160045260246000fd5b60008151600381106200071757634e487b7160e01b600052602160045260246000fd5b8352506020818101516001600160a01b0390811691840191909152604080830151821690840152606080830151909116908301526080908101519082015260a00190565b6020808252825182820181905260009190848201906040850190845b818110156200079c576200078d838551620006f4565b93850193925060010162000777565b50909695505050505050565b600080600060608486031215620007be57600080fd5b620007c9846200065a565b9250602084013561ffff81168114620007e157600080fd5b9150604084013567ffffffffffffffff811115620007fe57600080fd5b6200080c8682870162000677565b9150509250925092565b6000815180845260005b818110156200083e5760208185018101518683018201520162000820565b506000602082860101526020601f19601f83011685010191505092915050565b805160408084528151908401819052600091602091908201906060860190845b81811015620008a55783516001600160a01b0316835292840192918401916001016200087e565b50508483015186820387850152805180835290840192506000918401905b80831015620008ec57620008d9828551620006f4565b91508484019350600183019250620008c3565b509695505050505050565b6040815260006200090c604083018562000816565b82810360208401526200092081856200085e565b95945050505050565b634e487b7160e01b600052604160045260246000fd5b600080604083850312156200095357600080fd5b6200095e836200065a565b9150602083013567ffffffffffffffff808211156200097c57600080fd5b818501915085601f8301126200099157600080fd5b813581811115620009a657620009a662000929565b604051601f8201601f19908116603f01168101908382118183101715620009d157620009d162000929565b81604052828152886020848701011115620009eb57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6001600160a01b038316815260406020820152600062000a3160408301846200085e565b949350505050565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0382811682821603908082111562000a725762000a7262000a39565b5092915050565b634e487b7160e01b600052603260045260246000fd5b60006001600160a01b0380831681810362000aae5762000aae62000a39565b6001019392505050565b6001600160a01b038316815260406020820152600062000a3160408301846200081656fe60806040526040516106fe3803806106fe83398101604081905261002291610319565b61002e82826000610035565b5050610436565b61003e8361006b565b60008251118061004b5750805b156100665761006483836100ab60201b6100291760201c565b505b505050565b610074816100d7565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606100d083836040518060600160405280602781526020016106d7602791396101a9565b9392505050565b6100ea8161022260201b6100551760201c565b6101515760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b806101887f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61023160201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6060600080856001600160a01b0316856040516101c691906103e7565b600060405180830381855af49150503d8060008114610201576040519150601f19603f3d011682016040523d82523d6000602084013e610206565b606091505b50909250905061021886838387610234565b9695505050505050565b6001600160a01b03163b151590565b90565b606083156102a357825160000361029c576001600160a01b0385163b61029c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610148565b50816102ad565b6102ad83836102b5565b949350505050565b8151156102c55781518083602001fd5b8060405162461bcd60e51b81526004016101489190610403565b634e487b7160e01b600052604160045260246000fd5b60005b838110156103105781810151838201526020016102f8565b50506000910152565b6000806040838503121561032c57600080fd5b82516001600160a01b038116811461034357600080fd5b60208401519092506001600160401b038082111561036057600080fd5b818501915085601f83011261037457600080fd5b815181811115610386576103866102df565b604051601f8201601f19908116603f011681019083821181831017156103ae576103ae6102df565b816040528281528860208487010111156103c757600080fd5b6103d88360208301602088016102f5565b80955050505050509250929050565b600082516103f98184602087016102f5565b9190910192915050565b60208152600082518060208401526104228160408501602087016102f5565b601f01601f19169190910160400192915050565b610292806104456000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b61009f565b565b606061004e838360405180606001604052806027815260200161025f602791396100c3565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e8080156100be573d6000f35b3d6000fd5b6060600080856001600160a01b0316856040516100e0919061020f565b600060405180830381855af49150503d806000811461011b576040519150601f19603f3d011682016040523d82523d6000602084013e610120565b606091505b50915091506101318683838761013b565b9695505050505050565b606083156101af5782516000036101a8576001600160a01b0385163b6101a85760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b50816101b9565b6101b983836101c1565b949350505050565b8151156101d15781518083602001fd5b8060405162461bcd60e51b815260040161019f919061022b565b60005b838110156102065781810151838201526020016101ee565b50506000910152565b600082516102218184602087016101eb565b9190910192915050565b602081526000825180602084015261024a8160408501602087016101eb565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a60a06040523060805234801561001457600080fd5b5061001d610022565b6100e1565b600054610100900460ff161561008e5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116146100df576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6080516110fb610118600039600081816102de015281816103680152818161045e015281816104e301526105cd01526110fb6000f3fe6080604052600436106100bc5760003560e01c80634f1ef286116100745780636accab8c1161004e5780636accab8c146101d3578063c4d66de8146101ea578063c9c4bfca1461020a57600080fd5b80634f1ef2861461018857806352d1902d1461019b5780635c60da1b146101be57600080fd5b80633659cfe6116100a55780633659cfe6146101185780634162169f1461013a57806341de68301461016c57600080fd5b806301ffc9a7146100c15780632ae9c600146100f6575b600080fd5b3480156100cd57600080fd5b506100e16100dc366004610e33565b61023e565b60405190151581526020015b60405180910390f35b34801561010257600080fd5b5061010b6102aa565b6040516100ed9190610e5d565b34801561012457600080fd5b50610138610133366004610ea6565b6102d4565b005b34801561014657600080fd5b5060c9546001600160a01b03165b6040516001600160a01b0390911681526020016100ed565b34801561017857600080fd5b5060006040516100ed9190610ec3565b610138610196366004610f01565b610454565b3480156101a757600080fd5b506101b06105c0565b6040519081526020016100ed565b3480156101ca57600080fd5b50610154610685565b3480156101df57600080fd5b506101b061012d5481565b3480156101f657600080fd5b50610138610205366004610ea6565b6106bd565b34801561021657600080fd5b506101b07f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f581565b60006001600160e01b0319821663041de68360e41b148061026e57506001600160e01b03198216621574e360e91b145b8061028957506001600160e01b031982166352d1902d60e01b145b806102a457506301ffc9a760e01b6001600160e01b03198316145b92915050565b6102b2610e15565b5060408051606081018252600181526004602082015260009181019190915290565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036103665760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b60648201526084015b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166103c17f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b03161461042c5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b606482015260840161035d565b610435816107e4565b6040805160008082526020820190925261045191839190610821565b50565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036104e15760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b606482015260840161035d565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661053c7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b0316146105a75760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b606482015260840161035d565b6105b0826107e4565b6105bc82826001610821565b5050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106605760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000606482015260840161035d565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b60006106b87f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b600054610100900460ff16158080156106dd5750600054600160ff909116105b806106f75750303b1580156106f7575060005460ff166001145b6107695760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161035d565b6000805460ff19166001179055801561078c576000805461ff0019166101001790555b610795826109c6565b600161012d5580156105bc576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b60c9547f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f5906105bc906001600160a01b0316303384600036610a3a565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156108595761085483610af6565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156108b3575060408051601f3d908101601f191682019092526108b091810190610fc5565b60015b6109255760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201527f6f6e206973206e6f742055555053000000000000000000000000000000000000606482015260840161035d565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146109ba5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f7860448201527f6961626c65555549440000000000000000000000000000000000000000000000606482015260840161035d565b50610854838383610bc1565b600054610100900460ff16610a315760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840161035d565b61045181610bec565b604051637ef7c88360e11b81526001600160a01b0387169063fdef910690610a6e9088908890889088908890600401610fde565b602060405180830381865afa158015610a8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aaf9190611032565b610aee57604051630cb6f8ed60e21b81526001600160a01b0380881660048301528087166024830152851660448201526064810184905260840161035d565b505050505050565b6001600160a01b0381163b610b735760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e747261637400000000000000000000000000000000000000606482015260840161035d565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610bca83610c86565b600082511180610bd75750805b1561085457610be68383610cc6565b50505050565b600054610100900460ff16610c575760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840161035d565b60c9805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610c8f81610af6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060610ceb83836040518060600160405280602781526020016110c860279139610cf2565b9392505050565b6060600080856001600160a01b031685604051610d0f9190611078565b600060405180830381855af49150503d8060008114610d4a576040519150601f19603f3d011682016040523d82523d6000602084013e610d4f565b606091505b5091509150610d6086838387610d6a565b9695505050505050565b60608315610dd9578251600003610dd2576001600160a01b0385163b610dd25760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161035d565b5081610de3565b610de38383610deb565b949350505050565b815115610dfb5781518083602001fd5b8060405162461bcd60e51b815260040161035d9190611094565b60405180606001604052806003906020820280368337509192915050565b600060208284031215610e4557600080fd5b81356001600160e01b031981168114610ceb57600080fd5b60608101818360005b6003811015610e8857815160ff16835260209283019290910190600101610e66565b50505092915050565b6001600160a01b038116811461045157600080fd5b600060208284031215610eb857600080fd5b8135610ceb81610e91565b6020810160038310610ee557634e487b7160e01b600052602160045260246000fd5b91905290565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215610f1457600080fd5b8235610f1f81610e91565b9150602083013567ffffffffffffffff80821115610f3c57600080fd5b818501915085601f830112610f5057600080fd5b813581811115610f6257610f62610eeb565b604051601f8201601f19908116603f01168101908382118183101715610f8a57610f8a610eeb565b81604052828152886020848701011115610fa357600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b600060208284031215610fd757600080fd5b5051919050565b60006001600160a01b03808816835280871660208401525084604083015260806060830152826080830152828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b60006020828403121561104457600080fd5b81518015158114610ceb57600080fd5b60005b8381101561106f578181015183820152602001611057565b50506000910152565b6000825161108a818460208701611054565b9190910192915050565b60208152600082518060208401526110b3816040850160208701611054565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a","opcodes":"PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x1D SWAP1 PUSH2 0x4B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH2 0x39 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x80 MSTORE PUSH2 0x58 JUMP JUMPDEST PUSH2 0x1213 DUP1 PUSH2 0x1260 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH2 0x11E7 PUSH2 0x79 PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH1 0xD2 ADD MSTORE PUSH2 0x2D3 ADD MSTORE PUSH2 0x11E7 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH3 0x7B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9CB0A124 GT PUSH3 0x56 JUMPI DUP1 PUSH4 0x9CB0A124 EQ PUSH3 0xFD JUMPI DUP1 PUSH4 0xA8A9C29E EQ PUSH3 0x123 JUMPI DUP1 PUSH4 0xF10832F1 EQ PUSH3 0x14A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH3 0x80 JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH3 0xAC JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH3 0xC5 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x97 PUSH3 0x91 CALLDATASIZE PUSH1 0x4 PUSH3 0x5F8 JUMP JUMPDEST PUSH3 0x171 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0xB6 PUSH3 0x1C4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0xA3 SWAP2 SWAP1 PUSH3 0x624 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH3 0xA3 JUMP JUMPDEST PUSH3 0x114 PUSH3 0x10E CALLDATASIZE PUSH1 0x4 PUSH3 0x68A JUMP JUMPDEST PUSH3 0x1F0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0xA3 SWAP2 SWAP1 PUSH3 0x75B JUMP JUMPDEST PUSH3 0x13A PUSH3 0x134 CALLDATASIZE PUSH1 0x4 PUSH3 0x7A8 JUMP JUMPDEST PUSH3 0x208 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0xA3 SWAP3 SWAP2 SWAP1 PUSH3 0x8F7 JUMP JUMPDEST PUSH3 0x161 PUSH3 0x15B CALLDATASIZE PUSH1 0x4 PUSH3 0x93F JUMP JUMPDEST PUSH3 0x24F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0xA3 SWAP3 SWAP2 SWAP1 PUSH3 0xA0D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x99718B5 PUSH1 0xE4 SHL EQ DUP1 PUSH3 0x1A2 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH3 0x1BE JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH3 0x1CE PUSH3 0x5CC JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH3 0x201 PUSH1 0x0 PUSH1 0x1 DUP1 PUSH3 0x333 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH3 0x228 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x98990C5 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH3 0x26F PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 PUSH1 0x44 ADD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x189ACDBD PUSH1 0xE3 SHL OR SWAP1 MSTORE SWAP1 POP PUSH3 0x305 DUP2 PUSH3 0x2F5 PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH3 0x4CC JUMP JUMPDEST SWAP3 POP PUSH3 0x313 PUSH1 0x1 PUSH3 0x508 JUMP JUMPDEST DUP3 MSTORE PUSH3 0x324 PUSH1 0x0 PUSH1 0x1 DUP2 PUSH3 0x333 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP SWAP1 SWAP4 SWAP1 SWAP3 POP SWAP1 POP JUMP JUMPDEST PUSH1 0x60 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH3 0x369 JUMPI PUSH1 0x40 MLOAD PUSH4 0x3A4013CD PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0x375 DUP5 DUP5 PUSH3 0xA4F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x399 JUMPI PUSH3 0x399 PUSH3 0x929 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH3 0x3F4 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD DUP3 SWAP1 MSTORE SWAP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 DUP3 ADD MSTORE DUP3 MSTORE PUSH1 0x0 NOT SWAP1 SWAP3 ADD SWAP2 ADD DUP2 PUSH3 0x3B8 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP DUP4 JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT ISZERO PUSH3 0x4C4 JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 DUP5 PUSH1 0x2 DUP2 GT ISZERO PUSH3 0x434 JUMPI PUSH3 0x434 PUSH3 0x6DE JUMP JUMPDEST DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x60 DUP3 ADD MSTORE PUSH32 0xA280EEC51AB8E1BC4B6B0C1B7F1BDE785761B787A49DB404E3E9338ED9B016EF PUSH1 0x80 SWAP1 SWAP2 ADD MSTORE DUP3 PUSH3 0x487 DUP8 DUP5 PUSH3 0xA4F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MLOAD DUP2 LT PUSH3 0x4A3 JUMPI PUSH3 0x4A3 PUSH3 0xA79 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP DUP1 DUP1 PUSH3 0x4BB SWAP1 PUSH3 0xA8F JUMP JUMPDEST SWAP2 POP POP PUSH3 0x3F9 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH3 0x4DE SWAP1 PUSH3 0x5EA JUMP JUMPDEST PUSH3 0x4EB SWAP3 SWAP2 SWAP1 PUSH3 0xAB8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH3 0x4C4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x60 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x52F JUMPI PUSH3 0x52F PUSH3 0x929 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH3 0x559 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT ISZERO PUSH3 0x5C6 JUMPI DUP1 DUP3 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MLOAD DUP2 LT PUSH3 0x599 JUMPI PUSH3 0x599 PUSH3 0xA79 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE DUP1 PUSH3 0x5BD DUP2 PUSH3 0xA8F JUMP JUMPDEST SWAP2 POP POP PUSH3 0x55F JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x6FE DUP1 PUSH3 0xADD DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x60B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH3 0x201 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH3 0x651 JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH3 0x62D JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x672 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x5C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x69E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x6A9 DUP4 PUSH3 0x65A JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x6C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x6D4 DUP6 DUP3 DUP7 ADD PUSH3 0x677 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP2 MLOAD PUSH1 0x3 DUP2 LT PUSH3 0x717 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP4 MSTORE POP PUSH1 0x20 DUP2 DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP1 DUP4 ADD MLOAD DUP3 AND SWAP1 DUP5 ADD MSTORE PUSH1 0x60 DUP1 DUP4 ADD MLOAD SWAP1 SWAP2 AND SWAP1 DUP4 ADD MSTORE PUSH1 0x80 SWAP1 DUP2 ADD MLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x79C JUMPI PUSH3 0x78D DUP4 DUP6 MLOAD PUSH3 0x6F4 JUMP JUMPDEST SWAP4 DUP6 ADD SWAP4 SWAP3 POP PUSH1 0x1 ADD PUSH3 0x777 JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH3 0x7BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x7C9 DUP5 PUSH3 0x65A JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH3 0x7E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x7FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x80C DUP7 DUP3 DUP8 ADD PUSH3 0x677 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x83E JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD DUP3 ADD MSTORE ADD PUSH3 0x820 JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x20 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x20 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x40 DUP1 DUP5 MSTORE DUP2 MLOAD SWAP1 DUP5 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x20 SWAP2 SWAP1 DUP3 ADD SWAP1 PUSH1 0x60 DUP7 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x8A5 JUMPI DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH3 0x87E JUMP JUMPDEST POP POP DUP5 DUP4 ADD MLOAD DUP7 DUP3 SUB DUP8 DUP6 ADD MSTORE DUP1 MLOAD DUP1 DUP4 MSTORE SWAP1 DUP5 ADD SWAP3 POP PUSH1 0x0 SWAP2 DUP5 ADD SWAP1 JUMPDEST DUP1 DUP4 LT ISZERO PUSH3 0x8EC JUMPI PUSH3 0x8D9 DUP3 DUP6 MLOAD PUSH3 0x6F4 JUMP JUMPDEST SWAP2 POP DUP5 DUP5 ADD SWAP4 POP PUSH1 0x1 DUP4 ADD SWAP3 POP PUSH3 0x8C3 JUMP JUMPDEST POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 PUSH3 0x90C PUSH1 0x40 DUP4 ADD DUP6 PUSH3 0x816 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 ADD MSTORE PUSH3 0x920 DUP2 DUP6 PUSH3 0x85E JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x953 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x95E DUP4 PUSH3 0x65A JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH3 0x97C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x991 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH3 0x9A6 JUMPI PUSH3 0x9A6 PUSH3 0x929 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH3 0x9D1 JUMPI PUSH3 0x9D1 PUSH3 0x929 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH3 0x9EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH3 0xA31 PUSH1 0x40 DUP4 ADD DUP5 PUSH3 0x85E JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND DUP3 DUP3 AND SUB SWAP1 DUP1 DUP3 GT ISZERO PUSH3 0xA72 JUMPI PUSH3 0xA72 PUSH3 0xA39 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND DUP2 DUP2 SUB PUSH3 0xAAE JUMPI PUSH3 0xAAE PUSH3 0xA39 JUMP JUMPDEST PUSH1 0x1 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH3 0xA31 PUSH1 0x40 DUP4 ADD DUP5 PUSH3 0x816 JUMP INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH2 0x6FE CODESIZE SUB DUP1 PUSH2 0x6FE DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x22 SWAP2 PUSH2 0x319 JUMP JUMPDEST PUSH2 0x2E DUP3 DUP3 PUSH1 0x0 PUSH2 0x35 JUMP JUMPDEST POP POP PUSH2 0x436 JUMP JUMPDEST PUSH2 0x3E DUP4 PUSH2 0x6B JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD GT DUP1 PUSH2 0x4B JUMPI POP DUP1 JUMPDEST ISZERO PUSH2 0x66 JUMPI PUSH2 0x64 DUP4 DUP4 PUSH2 0xAB PUSH1 0x20 SHL PUSH2 0x29 OR PUSH1 0x20 SHR JUMP JUMPDEST POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x74 DUP2 PUSH2 0xD7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xD0 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x6D7 PUSH1 0x27 SWAP2 CODECOPY PUSH2 0x1A9 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xEA DUP2 PUSH2 0x222 PUSH1 0x20 SHL PUSH2 0x55 OR PUSH1 0x20 SHR JUMP JUMPDEST PUSH2 0x151 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313936373A206E657720696D706C656D656E746174696F6E206973206E PUSH1 0x44 DUP3 ADD MSTORE PUSH13 0x1BDD08184818DBDB9D1C9858DD PUSH1 0x9A SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH2 0x188 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC PUSH1 0x0 SHL PUSH2 0x231 PUSH1 0x20 SHL PUSH2 0x64 OR PUSH1 0x20 SHR JUMP JUMPDEST DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0x1C6 SWAP2 SWAP1 PUSH2 0x3E7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x201 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x206 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x218 DUP7 DUP4 DUP4 DUP8 PUSH2 0x234 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x2A3 JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0x29C JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0x29C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x148 JUMP JUMPDEST POP DUP2 PUSH2 0x2AD JUMP JUMPDEST PUSH2 0x2AD DUP4 DUP4 PUSH2 0x2B5 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x2C5 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x148 SWAP2 SWAP1 PUSH2 0x403 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x310 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2F8 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x32C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x343 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x360 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x374 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x386 JUMPI PUSH2 0x386 PUSH2 0x2DF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x3AE JUMPI PUSH2 0x3AE PUSH2 0x2DF JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x3C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3D8 DUP4 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x2F5 JUMP JUMPDEST DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x3F9 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x2F5 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x422 DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x2F5 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x292 DUP1 PUSH2 0x445 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLDATASIZE PUSH2 0x13 JUMPI PUSH2 0x11 PUSH2 0x17 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x11 JUMPDEST PUSH2 0x27 PUSH2 0x22 PUSH2 0x67 JUMP JUMPDEST PUSH2 0x9F JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x60 PUSH2 0x4E DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x25F PUSH1 0x27 SWAP2 CODECOPY PUSH2 0xC3 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9A PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 DUP1 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE PUSH1 0x0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH2 0xBE JUMPI RETURNDATASIZE PUSH1 0x0 RETURN JUMPDEST RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0xE0 SWAP2 SWAP1 PUSH2 0x20F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x11B JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x120 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x131 DUP7 DUP4 DUP4 DUP8 PUSH2 0x13B JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x1AF JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0x1A8 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0x1A8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP DUP2 PUSH2 0x1B9 JUMP JUMPDEST PUSH2 0x1B9 DUP4 DUP4 PUSH2 0x1C1 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x1D1 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x19F SWAP2 SWAP1 PUSH2 0x22B JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x206 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1EE JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x221 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x1EB JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x24A DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x1EB JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A164 PUSH20 0x6F6C6343000811000A416464726573733A206C6F PUSH24 0x2D6C6576656C2064656C65676174652063616C6C20666169 PUSH13 0x6564A164736F6C634300081100 EXP PUSH1 0xA0 PUSH1 0x40 MSTORE ADDRESS PUSH1 0x80 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x14 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1D PUSH2 0x22 JUMP JUMPDEST PUSH2 0xE1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x8E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x27 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320696E697469 PUSH1 0x44 DUP3 ADD MSTORE PUSH7 0x616C697A696E67 PUSH1 0xC8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xFF SWAP1 DUP2 AND EQ PUSH2 0xDF JUMPI PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH2 0x10FB PUSH2 0x118 PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH2 0x2DE ADD MSTORE DUP2 DUP2 PUSH2 0x368 ADD MSTORE DUP2 DUP2 PUSH2 0x45E ADD MSTORE DUP2 DUP2 PUSH2 0x4E3 ADD MSTORE PUSH2 0x5CD ADD MSTORE PUSH2 0x10FB PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xBC JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x4F1EF286 GT PUSH2 0x74 JUMPI DUP1 PUSH4 0x6ACCAB8C GT PUSH2 0x4E JUMPI DUP1 PUSH4 0x6ACCAB8C EQ PUSH2 0x1D3 JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0x1EA JUMPI DUP1 PUSH4 0xC9C4BFCA EQ PUSH2 0x20A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x188 JUMPI DUP1 PUSH4 0x52D1902D EQ PUSH2 0x19B JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0x1BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x3659CFE6 GT PUSH2 0xA5 JUMPI DUP1 PUSH4 0x3659CFE6 EQ PUSH2 0x118 JUMPI DUP1 PUSH4 0x4162169F EQ PUSH2 0x13A JUMPI DUP1 PUSH4 0x41DE6830 EQ PUSH2 0x16C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xC1 JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0xF6 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xCD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xE1 PUSH2 0xDC CALLDATASIZE PUSH1 0x4 PUSH2 0xE33 JUMP JUMPDEST PUSH2 0x23E JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x102 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x10B PUSH2 0x2AA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xED SWAP2 SWAP1 PUSH2 0xE5D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x124 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x138 PUSH2 0x133 CALLDATASIZE PUSH1 0x4 PUSH2 0xEA6 JUMP JUMPDEST PUSH2 0x2D4 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x146 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xC9 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xED JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x178 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 PUSH1 0x40 MLOAD PUSH2 0xED SWAP2 SWAP1 PUSH2 0xEC3 JUMP JUMPDEST PUSH2 0x138 PUSH2 0x196 CALLDATASIZE PUSH1 0x4 PUSH2 0xF01 JUMP JUMPDEST PUSH2 0x454 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1B0 PUSH2 0x5C0 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xED JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x154 PUSH2 0x685 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1B0 PUSH2 0x12D SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x138 PUSH2 0x205 CALLDATASIZE PUSH1 0x4 PUSH2 0xEA6 JUMP JUMPDEST PUSH2 0x6BD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x216 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1B0 PUSH32 0x821B6E3A557148015A918C89E5D092E878A69854A2D1A410635F771BD5A8A3F5 DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x41DE683 PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x26E JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x289 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x52D1902D PUSH1 0xE0 SHL EQ JUMPDEST DUP1 PUSH2 0x2A4 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x2B2 PUSH2 0xE15 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x366 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x19195B1959D85D1958D85B1B PUSH1 0xA2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3C1 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x42C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x6163746976652070726F7879 PUSH1 0xA0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x35D JUMP JUMPDEST PUSH2 0x435 DUP2 PUSH2 0x7E4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x451 SWAP2 DUP4 SWAP2 SWAP1 PUSH2 0x821 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x4E1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x19195B1959D85D1958D85B1B PUSH1 0xA2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x35D JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x53C PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x5A7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x6163746976652070726F7879 PUSH1 0xA0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x35D JUMP JUMPDEST PUSH2 0x5B0 DUP3 PUSH2 0x7E4 JUMP JUMPDEST PUSH2 0x5BC DUP3 DUP3 PUSH1 0x1 PUSH2 0x821 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x660 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x38 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x555550535570677261646561626C653A206D757374206E6F742062652063616C PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6C6564207468726F7567682064656C656761746563616C6C0000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x35D JUMP JUMPDEST POP PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6B8 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 DUP1 ISZERO PUSH2 0x6DD JUMPI POP PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xFF SWAP1 SWAP2 AND LT JUMPDEST DUP1 PUSH2 0x6F7 JUMPI POP ADDRESS EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x6F7 JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF AND PUSH1 0x1 EQ JUMPDEST PUSH2 0x769 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x647920696E697469616C697A6564000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x35D JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE DUP1 ISZERO PUSH2 0x78C JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND PUSH2 0x100 OR SWAP1 SSTORE JUMPDEST PUSH2 0x795 DUP3 PUSH2 0x9C6 JUMP JUMPDEST PUSH1 0x1 PUSH2 0x12D SSTORE DUP1 ISZERO PUSH2 0x5BC JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0xC9 SLOAD PUSH32 0x821B6E3A557148015A918C89E5D092E878A69854A2D1A410635F771BD5A8A3F5 SWAP1 PUSH2 0x5BC SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ADDRESS CALLER DUP5 PUSH1 0x0 CALLDATASIZE PUSH2 0xA3A JUMP JUMPDEST PUSH32 0x4910FDFA16FED3260ED0E7147F7CC6DA11A60208B5B9406D12A635614FFD9143 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x859 JUMPI PUSH2 0x854 DUP4 PUSH2 0xAF6 JUMP JUMPDEST POP POP POP JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x52D1902D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x8B3 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x8B0 SWAP2 DUP2 ADD SWAP1 PUSH2 0xFC5 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x925 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524331393637557067726164653A206E657720696D706C656D656E74617469 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F6E206973206E6F742055555053000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x35D JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC DUP2 EQ PUSH2 0x9BA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524331393637557067726164653A20756E737570706F727465642070726F78 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6961626C65555549440000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x35D JUMP JUMPDEST POP PUSH2 0x854 DUP4 DUP4 DUP4 PUSH2 0xBC1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0xA31 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x35D JUMP JUMPDEST PUSH2 0x451 DUP2 PUSH2 0xBEC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x7EF7C883 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0xFDEF9106 SWAP1 PUSH2 0xA6E SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0xFDE JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xA8B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xAAF SWAP2 SWAP1 PUSH2 0x1032 JUMP JUMPDEST PUSH2 0xAEE JUMPI PUSH1 0x40 MLOAD PUSH4 0xCB6F8ED PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND PUSH1 0x4 DUP4 ADD MSTORE DUP1 DUP8 AND PUSH1 0x24 DUP4 ADD MSTORE DUP6 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x84 ADD PUSH2 0x35D JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND EXTCODESIZE PUSH2 0xB73 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313936373A206E657720696D706C656D656E746174696F6E206973206E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F74206120636F6E747261637400000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x35D JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xBCA DUP4 PUSH2 0xC86 JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD GT DUP1 PUSH2 0xBD7 JUMPI POP DUP1 JUMPDEST ISZERO PUSH2 0x854 JUMPI PUSH2 0xBE6 DUP4 DUP4 PUSH2 0xCC6 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0xC57 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x35D JUMP JUMPDEST PUSH1 0xC9 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xC8F DUP2 PUSH2 0xAF6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xCEB DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x10C8 PUSH1 0x27 SWAP2 CODECOPY PUSH2 0xCF2 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0xD0F SWAP2 SWAP1 PUSH2 0x1078 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xD4A JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xD4F JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0xD60 DUP7 DUP4 DUP4 DUP8 PUSH2 0xD6A JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0xDD9 JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0xDD2 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0xDD2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x35D JUMP JUMPDEST POP DUP2 PUSH2 0xDE3 JUMP JUMPDEST PUSH2 0xDE3 DUP4 DUP4 PUSH2 0xDEB JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0xDFB JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x35D SWAP2 SWAP1 PUSH2 0x1094 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xE45 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0xCEB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0xE88 JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0xE66 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x451 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xEB8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xCEB DUP2 PUSH2 0xE91 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH1 0x3 DUP4 LT PUSH2 0xEE5 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 SWAP1 MSTORE SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xF14 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0xF1F DUP2 PUSH2 0xE91 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xF3C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xF50 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0xF62 JUMPI PUSH2 0xF62 PUSH2 0xEEB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0xF8A JUMPI PUSH2 0xF8A PUSH2 0xEEB JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0xFA3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xFD7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND DUP4 MSTORE DUP1 DUP8 AND PUSH1 0x20 DUP5 ADD MSTORE POP DUP5 PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x80 PUSH1 0x60 DUP4 ADD MSTORE DUP3 PUSH1 0x80 DUP4 ADD MSTORE DUP3 DUP5 PUSH1 0xA0 DUP5 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0xA0 DUP5 DUP5 ADD ADD MSTORE PUSH1 0xA0 PUSH1 0x1F NOT PUSH1 0x1F DUP6 ADD AND DUP4 ADD ADD SWAP1 POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1044 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xCEB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x106F JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1057 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x108A DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x1054 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x10B3 DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x1054 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A164 PUSH20 0x6F6C6343000811000A0000000000000000000000 ","sourceMap":"816:1588:54:-:0;;;973:87;;;;;;;;;;1018:37;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1605:32:83;;;816:1588:54;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@deployUUPSProxy_14563":{"entryPoint":1228,"id":14563,"parameterSlots":2,"returnSlots":1},"@implementation_14447":{"entryPoint":null,"id":14447,"parameterSlots":0,"returnSlots":1},"@mockHelpers_11760":{"entryPoint":1288,"id":11760,"parameterSlots":1,"returnSlots":1},"@mockPermissions_11721":{"entryPoint":819,"id":11721,"parameterSlots":3,"returnSlots":1},"@prepareInstallation_12016":{"entryPoint":591,"id":12016,"parameterSlots":2,"returnSlots":2},"@prepareUninstallation_12071":{"entryPoint":496,"id":12071,"parameterSlots":2,"returnSlots":1},"@prepareUpdate_12043":{"entryPoint":520,"id":12043,"parameterSlots":3,"returnSlots":2},"@protocolVersion_14765":{"entryPoint":452,"id":14765,"parameterSlots":0,"returnSlots":1},"@supportsInterface_14438":{"entryPoint":369,"id":14438,"parameterSlots":1,"returnSlots":1},"@supportsInterface_9730":{"entryPoint":null,"id":9730,"parameterSlots":1,"returnSlots":1},"abi_decode_address":{"entryPoint":1626,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_struct_SetupPayload_calldata":{"entryPoint":1655,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_bytes_memory_ptr":{"entryPoint":2367,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_struct$_SetupPayload_$14224_calldata_ptr":{"entryPoint":1674,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_uint16t_struct$_SetupPayload_$14224_calldata_ptr":{"entryPoint":1960,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_bytes4":{"entryPoint":1528,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encodeUpdatedPos_struct_MultiTargetPermission":{"entryPoint":1780,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_bytes":{"entryPoint":2070,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_struct_PreparedSetupData":{"entryPoint":2142,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address_t_bytes_memory_ptr__to_t_address_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":2744,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_address_t_struct$_PreparedSetupData_$14216_memory_ptr__to_t_address_t_struct$_PreparedSetupData_$14216_memory_ptr__fromStack_reversed":{"entryPoint":2573,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr__fromStack_reversed":{"entryPoint":1883,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed":{"entryPoint":1572,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$14216_memory_ptr__to_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$14216_memory_ptr__fromStack_reversed":{"entryPoint":2295,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_contract$_IDAO_$10865__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_rational_0_by_1_t_uint16__to_t_uint16_t_uint16__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"checked_sub_t_uint160":{"entryPoint":2639,"id":null,"parameterSlots":2,"returnSlots":1},"increment_t_uint160":{"entryPoint":2703,"id":null,"parameterSlots":1,"returnSlots":1},"panic_error_0x11":{"entryPoint":2617,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x21":{"entryPoint":1758,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x32":{"entryPoint":2681,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":2345,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:9417:92","statements":[{"nodeType":"YulBlock","src":"6:3:92","statements":[]},{"body":{"nodeType":"YulBlock","src":"83:217:92","statements":[{"body":{"nodeType":"YulBlock","src":"129:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"138:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"141:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"131:6:92"},"nodeType":"YulFunctionCall","src":"131:12:92"},"nodeType":"YulExpressionStatement","src":"131:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"104:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"113:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"100:3:92"},"nodeType":"YulFunctionCall","src":"100:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"125:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"96:3:92"},"nodeType":"YulFunctionCall","src":"96:32:92"},"nodeType":"YulIf","src":"93:52:92"},{"nodeType":"YulVariableDeclaration","src":"154:36:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"180:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"167:12:92"},"nodeType":"YulFunctionCall","src":"167:23:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"158:5:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"254:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"263:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"266:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"256:6:92"},"nodeType":"YulFunctionCall","src":"256:12:92"},"nodeType":"YulExpressionStatement","src":"256:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"212:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"223:5:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"234:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"239:10:92","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"230:3:92"},"nodeType":"YulFunctionCall","src":"230:20:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"219:3:92"},"nodeType":"YulFunctionCall","src":"219:32:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"209:2:92"},"nodeType":"YulFunctionCall","src":"209:43:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"202:6:92"},"nodeType":"YulFunctionCall","src":"202:51:92"},"nodeType":"YulIf","src":"199:71:92"},{"nodeType":"YulAssignment","src":"279:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"289:5:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"279:6:92"}]}]},"name":"abi_decode_tuple_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"49:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"60:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"72:6:92","type":""}],"src":"14:286:92"},{"body":{"nodeType":"YulBlock","src":"400:92:92","statements":[{"nodeType":"YulAssignment","src":"410:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"422:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"433:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"418:3:92"},"nodeType":"YulFunctionCall","src":"418:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"410:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"452:9:92"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"477:6:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"470:6:92"},"nodeType":"YulFunctionCall","src":"470:14:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"463:6:92"},"nodeType":"YulFunctionCall","src":"463:22:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"445:6:92"},"nodeType":"YulFunctionCall","src":"445:41:92"},"nodeType":"YulExpressionStatement","src":"445:41:92"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"369:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"380:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"391:4:92","type":""}],"src":"305:187:92"},{"body":{"nodeType":"YulBlock","src":"640:358:92","statements":[{"nodeType":"YulAssignment","src":"650:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"662:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"673:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"658:3:92"},"nodeType":"YulFunctionCall","src":"658:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"650:4:92"}]},{"nodeType":"YulVariableDeclaration","src":"685:20:92","value":{"name":"headStart","nodeType":"YulIdentifier","src":"696:9:92"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"689:3:92","type":""}]},{"nodeType":"YulAssignment","src":"714:16:92","value":{"name":"headStart","nodeType":"YulIdentifier","src":"721:9:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"714:3:92"}]},{"nodeType":"YulVariableDeclaration","src":"739:20:92","value":{"name":"value0","nodeType":"YulIdentifier","src":"753:6:92"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"743:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"768:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"777:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"772:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"834:158:92","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"855:3:92"},{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"870:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"864:5:92"},"nodeType":"YulFunctionCall","src":"864:13:92"},{"kind":"number","nodeType":"YulLiteral","src":"879:4:92","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"860:3:92"},"nodeType":"YulFunctionCall","src":"860:24:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"848:6:92"},"nodeType":"YulFunctionCall","src":"848:37:92"},"nodeType":"YulExpressionStatement","src":"848:37:92"},{"nodeType":"YulVariableDeclaration","src":"898:14:92","value":{"kind":"number","nodeType":"YulLiteral","src":"908:4:92","type":"","value":"0x20"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"902:2:92","type":""}]},{"nodeType":"YulAssignment","src":"925:19:92","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"936:3:92"},{"name":"_1","nodeType":"YulIdentifier","src":"941:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"932:3:92"},"nodeType":"YulFunctionCall","src":"932:12:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"925:3:92"}]},{"nodeType":"YulAssignment","src":"957:25:92","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"971:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"979:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"967:3:92"},"nodeType":"YulFunctionCall","src":"967:15:92"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"957:6:92"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"798:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"801:4:92","type":"","value":"0x03"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"795:2:92"},"nodeType":"YulFunctionCall","src":"795:11:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"807:18:92","statements":[{"nodeType":"YulAssignment","src":"809:14:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"818:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"821:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"814:3:92"},"nodeType":"YulFunctionCall","src":"814:9:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"809:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"791:3:92","statements":[]},"src":"787:205:92"}]},"name":"abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"609:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"620:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"631:4:92","type":""}],"src":"497:501:92"},{"body":{"nodeType":"YulBlock","src":"1104:125:92","statements":[{"nodeType":"YulAssignment","src":"1114:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1126:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1137:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1122:3:92"},"nodeType":"YulFunctionCall","src":"1122:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1114:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1156:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1171:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"1179:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1167:3:92"},"nodeType":"YulFunctionCall","src":"1167:55:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1149:6:92"},"nodeType":"YulFunctionCall","src":"1149:74:92"},"nodeType":"YulExpressionStatement","src":"1149:74:92"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1073:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1084:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1095:4:92","type":""}],"src":"1003:226:92"},{"body":{"nodeType":"YulBlock","src":"1283:147:92","statements":[{"nodeType":"YulAssignment","src":"1293:29:92","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1315:6:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1302:12:92"},"nodeType":"YulFunctionCall","src":"1302:20:92"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"1293:5:92"}]},{"body":{"nodeType":"YulBlock","src":"1408:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1417:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1420:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1410:6:92"},"nodeType":"YulFunctionCall","src":"1410:12:92"},"nodeType":"YulExpressionStatement","src":"1410:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1344:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1355:5:92"},{"kind":"number","nodeType":"YulLiteral","src":"1362:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1351:3:92"},"nodeType":"YulFunctionCall","src":"1351:54:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1341:2:92"},"nodeType":"YulFunctionCall","src":"1341:65:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1334:6:92"},"nodeType":"YulFunctionCall","src":"1334:73:92"},"nodeType":"YulIf","src":"1331:93:92"}]},"name":"abi_decode_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"1262:6:92","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"1273:5:92","type":""}],"src":"1234:196:92"},{"body":{"nodeType":"YulBlock","src":"1510:85:92","statements":[{"body":{"nodeType":"YulBlock","src":"1549:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1558:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1561:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1551:6:92"},"nodeType":"YulFunctionCall","src":"1551:12:92"},"nodeType":"YulExpressionStatement","src":"1551:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"end","nodeType":"YulIdentifier","src":"1531:3:92"},{"name":"offset","nodeType":"YulIdentifier","src":"1536:6:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1527:3:92"},"nodeType":"YulFunctionCall","src":"1527:16:92"},{"kind":"number","nodeType":"YulLiteral","src":"1545:2:92","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1523:3:92"},"nodeType":"YulFunctionCall","src":"1523:25:92"},"nodeType":"YulIf","src":"1520:45:92"},{"nodeType":"YulAssignment","src":"1574:15:92","value":{"name":"offset","nodeType":"YulIdentifier","src":"1583:6:92"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"1574:5:92"}]}]},"name":"abi_decode_struct_SetupPayload_calldata","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"1484:6:92","type":""},{"name":"end","nodeType":"YulTypedName","src":"1492:3:92","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"1500:5:92","type":""}],"src":"1435:160:92"},{"body":{"nodeType":"YulBlock","src":"1720:321:92","statements":[{"body":{"nodeType":"YulBlock","src":"1766:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1775:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1778:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1768:6:92"},"nodeType":"YulFunctionCall","src":"1768:12:92"},"nodeType":"YulExpressionStatement","src":"1768:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1741:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"1750:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1737:3:92"},"nodeType":"YulFunctionCall","src":"1737:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"1762:2:92","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1733:3:92"},"nodeType":"YulFunctionCall","src":"1733:32:92"},"nodeType":"YulIf","src":"1730:52:92"},{"nodeType":"YulAssignment","src":"1791:39:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1820:9:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"1801:18:92"},"nodeType":"YulFunctionCall","src":"1801:29:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1791:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"1839:46:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1870:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1881:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1866:3:92"},"nodeType":"YulFunctionCall","src":"1866:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1853:12:92"},"nodeType":"YulFunctionCall","src":"1853:32:92"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1843:6:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"1928:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1937:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1940:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1930:6:92"},"nodeType":"YulFunctionCall","src":"1930:12:92"},"nodeType":"YulExpressionStatement","src":"1930:12:92"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1900:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"1908:18:92","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1897:2:92"},"nodeType":"YulFunctionCall","src":"1897:30:92"},"nodeType":"YulIf","src":"1894:50:92"},{"nodeType":"YulAssignment","src":"1953:82:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2007:9:92"},{"name":"offset","nodeType":"YulIdentifier","src":"2018:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2003:3:92"},"nodeType":"YulFunctionCall","src":"2003:22:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2027:7:92"}],"functionName":{"name":"abi_decode_struct_SetupPayload_calldata","nodeType":"YulIdentifier","src":"1963:39:92"},"nodeType":"YulFunctionCall","src":"1963:72:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1953:6:92"}]}]},"name":"abi_decode_tuple_t_addresst_struct$_SetupPayload_$14224_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1678:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1689:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1701:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1709:6:92","type":""}],"src":"1600:441:92"},{"body":{"nodeType":"YulBlock","src":"2078:95:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2095:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2102:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"2107:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2098:3:92"},"nodeType":"YulFunctionCall","src":"2098:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2088:6:92"},"nodeType":"YulFunctionCall","src":"2088:31:92"},"nodeType":"YulExpressionStatement","src":"2088:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2135:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"2138:4:92","type":"","value":"0x21"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2128:6:92"},"nodeType":"YulFunctionCall","src":"2128:15:92"},"nodeType":"YulExpressionStatement","src":"2128:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2159:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2162:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2152:6:92"},"nodeType":"YulFunctionCall","src":"2152:15:92"},"nodeType":"YulExpressionStatement","src":"2152:15:92"}]},"name":"panic_error_0x21","nodeType":"YulFunctionDefinition","src":"2046:127:92"},{"body":{"nodeType":"YulBlock","src":"2268:606:92","statements":[{"nodeType":"YulVariableDeclaration","src":"2278:23:92","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2294:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2288:5:92"},"nodeType":"YulFunctionCall","src":"2288:13:92"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"2282:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"2339:111:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2360:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2367:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"2372:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2363:3:92"},"nodeType":"YulFunctionCall","src":"2363:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2353:6:92"},"nodeType":"YulFunctionCall","src":"2353:31:92"},"nodeType":"YulExpressionStatement","src":"2353:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2404:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"2407:4:92","type":"","value":"0x21"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2397:6:92"},"nodeType":"YulFunctionCall","src":"2397:15:92"},"nodeType":"YulExpressionStatement","src":"2397:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2432:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2435:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2425:6:92"},"nodeType":"YulFunctionCall","src":"2425:15:92"},"nodeType":"YulExpressionStatement","src":"2425:15:92"}]},"condition":{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"2323:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"2327:1:92","type":"","value":"3"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2320:2:92"},"nodeType":"YulFunctionCall","src":"2320:9:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2313:6:92"},"nodeType":"YulFunctionCall","src":"2313:17:92"},"nodeType":"YulIf","src":"2310:140:92"},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2466:3:92"},{"name":"_1","nodeType":"YulIdentifier","src":"2471:2:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2459:6:92"},"nodeType":"YulFunctionCall","src":"2459:15:92"},"nodeType":"YulExpressionStatement","src":"2459:15:92"},{"nodeType":"YulVariableDeclaration","src":"2483:44:92","value":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2513:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"2521:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2509:3:92"},"nodeType":"YulFunctionCall","src":"2509:17:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2503:5:92"},"nodeType":"YulFunctionCall","src":"2503:24:92"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"2487:12:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2536:52:92","value":{"kind":"number","nodeType":"YulLiteral","src":"2546:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"2540:2:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2608:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"2613:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2604:3:92"},"nodeType":"YulFunctionCall","src":"2604:14:92"},{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"2624:12:92"},{"name":"_2","nodeType":"YulIdentifier","src":"2638:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2620:3:92"},"nodeType":"YulFunctionCall","src":"2620:21:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2597:6:92"},"nodeType":"YulFunctionCall","src":"2597:45:92"},"nodeType":"YulExpressionStatement","src":"2597:45:92"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2662:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"2667:4:92","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2658:3:92"},"nodeType":"YulFunctionCall","src":"2658:14:92"},{"arguments":[{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2688:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"2696:4:92","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2684:3:92"},"nodeType":"YulFunctionCall","src":"2684:17:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2678:5:92"},"nodeType":"YulFunctionCall","src":"2678:24:92"},{"name":"_2","nodeType":"YulIdentifier","src":"2704:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2674:3:92"},"nodeType":"YulFunctionCall","src":"2674:33:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2651:6:92"},"nodeType":"YulFunctionCall","src":"2651:57:92"},"nodeType":"YulExpressionStatement","src":"2651:57:92"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2728:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"2733:4:92","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2724:3:92"},"nodeType":"YulFunctionCall","src":"2724:14:92"},{"arguments":[{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2754:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"2762:4:92","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2750:3:92"},"nodeType":"YulFunctionCall","src":"2750:17:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2744:5:92"},"nodeType":"YulFunctionCall","src":"2744:24:92"},{"name":"_2","nodeType":"YulIdentifier","src":"2770:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2740:3:92"},"nodeType":"YulFunctionCall","src":"2740:33:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2717:6:92"},"nodeType":"YulFunctionCall","src":"2717:57:92"},"nodeType":"YulExpressionStatement","src":"2717:57:92"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2794:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"2799:4:92","type":"","value":"0x80"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2790:3:92"},"nodeType":"YulFunctionCall","src":"2790:14:92"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2816:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"2824:4:92","type":"","value":"0x80"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2812:3:92"},"nodeType":"YulFunctionCall","src":"2812:17:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2806:5:92"},"nodeType":"YulFunctionCall","src":"2806:24:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2783:6:92"},"nodeType":"YulFunctionCall","src":"2783:48:92"},"nodeType":"YulExpressionStatement","src":"2783:48:92"},{"nodeType":"YulAssignment","src":"2840:28:92","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2858:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"2863:4:92","type":"","value":"0xa0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2854:3:92"},"nodeType":"YulFunctionCall","src":"2854:14:92"},"variableNames":[{"name":"updatedPos","nodeType":"YulIdentifier","src":"2840:10:92"}]}]},"name":"abi_encodeUpdatedPos_struct_MultiTargetPermission","nodeType":"YulFunctionDefinition","parameters":[{"name":"value0","nodeType":"YulTypedName","src":"2237:6:92","type":""},{"name":"pos","nodeType":"YulTypedName","src":"2245:3:92","type":""}],"returnVariables":[{"name":"updatedPos","nodeType":"YulTypedName","src":"2253:10:92","type":""}],"src":"2178:696:92"},{"body":{"nodeType":"YulBlock","src":"3110:499:92","statements":[{"nodeType":"YulVariableDeclaration","src":"3120:12:92","value":{"kind":"number","nodeType":"YulLiteral","src":"3130:2:92","type":"","value":"32"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"3124:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3141:32:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3159:9:92"},{"name":"_1","nodeType":"YulIdentifier","src":"3170:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3155:3:92"},"nodeType":"YulFunctionCall","src":"3155:18:92"},"variables":[{"name":"tail_1","nodeType":"YulTypedName","src":"3145:6:92","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3189:9:92"},{"name":"_1","nodeType":"YulIdentifier","src":"3200:2:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3182:6:92"},"nodeType":"YulFunctionCall","src":"3182:21:92"},"nodeType":"YulExpressionStatement","src":"3182:21:92"},{"nodeType":"YulVariableDeclaration","src":"3212:17:92","value":{"name":"tail_1","nodeType":"YulIdentifier","src":"3223:6:92"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"3216:3:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3238:27:92","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3258:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3252:5:92"},"nodeType":"YulFunctionCall","src":"3252:13:92"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"3242:6:92","type":""}]},{"expression":{"arguments":[{"name":"tail_1","nodeType":"YulIdentifier","src":"3281:6:92"},{"name":"length","nodeType":"YulIdentifier","src":"3289:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3274:6:92"},"nodeType":"YulFunctionCall","src":"3274:22:92"},"nodeType":"YulExpressionStatement","src":"3274:22:92"},{"nodeType":"YulAssignment","src":"3305:25:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3316:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3327:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3312:3:92"},"nodeType":"YulFunctionCall","src":"3312:18:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"3305:3:92"}]},{"nodeType":"YulVariableDeclaration","src":"3339:29:92","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3357:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"3365:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3353:3:92"},"nodeType":"YulFunctionCall","src":"3353:15:92"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"3343:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3377:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"3386:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"3381:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"3445:138:92","statements":[{"nodeType":"YulAssignment","src":"3459:76:92","value":{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"3522:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3516:5:92"},"nodeType":"YulFunctionCall","src":"3516:13:92"},{"name":"pos","nodeType":"YulIdentifier","src":"3531:3:92"}],"functionName":{"name":"abi_encodeUpdatedPos_struct_MultiTargetPermission","nodeType":"YulIdentifier","src":"3466:49:92"},"nodeType":"YulFunctionCall","src":"3466:69:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"3459:3:92"}]},{"nodeType":"YulAssignment","src":"3548:25:92","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"3562:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"3570:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3558:3:92"},"nodeType":"YulFunctionCall","src":"3558:15:92"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"3548:6:92"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3407:1:92"},{"name":"length","nodeType":"YulIdentifier","src":"3410:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"3404:2:92"},"nodeType":"YulFunctionCall","src":"3404:13:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"3418:18:92","statements":[{"nodeType":"YulAssignment","src":"3420:14:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3429:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"3432:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3425:3:92"},"nodeType":"YulFunctionCall","src":"3425:9:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"3420:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"3400:3:92","statements":[]},"src":"3396:187:92"},{"nodeType":"YulAssignment","src":"3592:11:92","value":{"name":"pos","nodeType":"YulIdentifier","src":"3600:3:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3592:4:92"}]}]},"name":"abi_encode_tuple_t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3079:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3090:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3101:4:92","type":""}],"src":"2879:730:92"},{"body":{"nodeType":"YulBlock","src":"3750:465:92","statements":[{"body":{"nodeType":"YulBlock","src":"3796:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3805:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3808:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3798:6:92"},"nodeType":"YulFunctionCall","src":"3798:12:92"},"nodeType":"YulExpressionStatement","src":"3798:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3771:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"3780:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3767:3:92"},"nodeType":"YulFunctionCall","src":"3767:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"3792:2:92","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3763:3:92"},"nodeType":"YulFunctionCall","src":"3763:32:92"},"nodeType":"YulIf","src":"3760:52:92"},{"nodeType":"YulAssignment","src":"3821:39:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3850:9:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"3831:18:92"},"nodeType":"YulFunctionCall","src":"3831:29:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3821:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"3869:45:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3899:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3910:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3895:3:92"},"nodeType":"YulFunctionCall","src":"3895:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3882:12:92"},"nodeType":"YulFunctionCall","src":"3882:32:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"3873:5:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"3964:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3973:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3976:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3966:6:92"},"nodeType":"YulFunctionCall","src":"3966:12:92"},"nodeType":"YulExpressionStatement","src":"3966:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3936:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3947:5:92"},{"kind":"number","nodeType":"YulLiteral","src":"3954:6:92","type":"","value":"0xffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3943:3:92"},"nodeType":"YulFunctionCall","src":"3943:18:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"3933:2:92"},"nodeType":"YulFunctionCall","src":"3933:29:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3926:6:92"},"nodeType":"YulFunctionCall","src":"3926:37:92"},"nodeType":"YulIf","src":"3923:57:92"},{"nodeType":"YulAssignment","src":"3989:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"3999:5:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"3989:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"4013:46:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4044:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4055:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4040:3:92"},"nodeType":"YulFunctionCall","src":"4040:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4027:12:92"},"nodeType":"YulFunctionCall","src":"4027:32:92"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4017:6:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"4102:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4111:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4114:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4104:6:92"},"nodeType":"YulFunctionCall","src":"4104:12:92"},"nodeType":"YulExpressionStatement","src":"4104:12:92"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"4074:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"4082:18:92","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4071:2:92"},"nodeType":"YulFunctionCall","src":"4071:30:92"},"nodeType":"YulIf","src":"4068:50:92"},{"nodeType":"YulAssignment","src":"4127:82:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4181:9:92"},{"name":"offset","nodeType":"YulIdentifier","src":"4192:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4177:3:92"},"nodeType":"YulFunctionCall","src":"4177:22:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4201:7:92"}],"functionName":{"name":"abi_decode_struct_SetupPayload_calldata","nodeType":"YulIdentifier","src":"4137:39:92"},"nodeType":"YulFunctionCall","src":"4137:72:92"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"4127:6:92"}]}]},"name":"abi_decode_tuple_t_addresst_uint16t_struct$_SetupPayload_$14224_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3700:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3711:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3723:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"3731:6:92","type":""},{"name":"value2","nodeType":"YulTypedName","src":"3739:6:92","type":""}],"src":"3614:601:92"},{"body":{"nodeType":"YulBlock","src":"4269:373:92","statements":[{"nodeType":"YulVariableDeclaration","src":"4279:26:92","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4299:5:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4293:5:92"},"nodeType":"YulFunctionCall","src":"4293:12:92"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"4283:6:92","type":""}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4321:3:92"},{"name":"length","nodeType":"YulIdentifier","src":"4326:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4314:6:92"},"nodeType":"YulFunctionCall","src":"4314:19:92"},"nodeType":"YulExpressionStatement","src":"4314:19:92"},{"nodeType":"YulVariableDeclaration","src":"4342:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"4351:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"4346:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"4413:110:92","statements":[{"nodeType":"YulVariableDeclaration","src":"4427:14:92","value":{"kind":"number","nodeType":"YulLiteral","src":"4437:4:92","type":"","value":"0x20"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"4431:2:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4469:3:92"},{"name":"i","nodeType":"YulIdentifier","src":"4474:1:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4465:3:92"},"nodeType":"YulFunctionCall","src":"4465:11:92"},{"name":"_1","nodeType":"YulIdentifier","src":"4478:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4461:3:92"},"nodeType":"YulFunctionCall","src":"4461:20:92"},{"arguments":[{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4497:5:92"},{"name":"i","nodeType":"YulIdentifier","src":"4504:1:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4493:3:92"},"nodeType":"YulFunctionCall","src":"4493:13:92"},{"name":"_1","nodeType":"YulIdentifier","src":"4508:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4489:3:92"},"nodeType":"YulFunctionCall","src":"4489:22:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4483:5:92"},"nodeType":"YulFunctionCall","src":"4483:29:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4454:6:92"},"nodeType":"YulFunctionCall","src":"4454:59:92"},"nodeType":"YulExpressionStatement","src":"4454:59:92"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"4372:1:92"},{"name":"length","nodeType":"YulIdentifier","src":"4375:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"4369:2:92"},"nodeType":"YulFunctionCall","src":"4369:13:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"4383:21:92","statements":[{"nodeType":"YulAssignment","src":"4385:17:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"4394:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"4397:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4390:3:92"},"nodeType":"YulFunctionCall","src":"4390:12:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"4385:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"4365:3:92","statements":[]},"src":"4361:162:92"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4547:3:92"},{"name":"length","nodeType":"YulIdentifier","src":"4552:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4543:3:92"},"nodeType":"YulFunctionCall","src":"4543:16:92"},{"kind":"number","nodeType":"YulLiteral","src":"4561:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4539:3:92"},"nodeType":"YulFunctionCall","src":"4539:27:92"},{"kind":"number","nodeType":"YulLiteral","src":"4568:1:92","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4532:6:92"},"nodeType":"YulFunctionCall","src":"4532:38:92"},"nodeType":"YulExpressionStatement","src":"4532:38:92"},{"nodeType":"YulAssignment","src":"4579:57:92","value":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4594:3:92"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"4607:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"4615:2:92","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4603:3:92"},"nodeType":"YulFunctionCall","src":"4603:15:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4624:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"4620:3:92"},"nodeType":"YulFunctionCall","src":"4620:7:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4599:3:92"},"nodeType":"YulFunctionCall","src":"4599:29:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4590:3:92"},"nodeType":"YulFunctionCall","src":"4590:39:92"},{"kind":"number","nodeType":"YulLiteral","src":"4631:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4586:3:92"},"nodeType":"YulFunctionCall","src":"4586:50:92"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"4579:3:92"}]}]},"name":"abi_encode_bytes","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"4246:5:92","type":""},{"name":"pos","nodeType":"YulTypedName","src":"4253:3:92","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"4261:3:92","type":""}],"src":"4220:422:92"},{"body":{"nodeType":"YulBlock","src":"4715:1094:92","statements":[{"nodeType":"YulVariableDeclaration","src":"4725:26:92","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4741:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"4746:4:92","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4737:3:92"},"nodeType":"YulFunctionCall","src":"4737:14:92"},"variables":[{"name":"tail","nodeType":"YulTypedName","src":"4729:4:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4760:32:92","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4786:5:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4780:5:92"},"nodeType":"YulFunctionCall","src":"4780:12:92"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"4764:12:92","type":""}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4808:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"4813:4:92","type":"","value":"0x40"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4801:6:92"},"nodeType":"YulFunctionCall","src":"4801:17:92"},"nodeType":"YulExpressionStatement","src":"4801:17:92"},{"nodeType":"YulVariableDeclaration","src":"4827:17:92","value":{"name":"tail","nodeType":"YulIdentifier","src":"4840:4:92"},"variables":[{"name":"pos_1","nodeType":"YulTypedName","src":"4831:5:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4853:33:92","value":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"4873:12:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4867:5:92"},"nodeType":"YulFunctionCall","src":"4867:19:92"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"4857:6:92","type":""}]},{"expression":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"4902:4:92"},{"name":"length","nodeType":"YulIdentifier","src":"4908:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4895:6:92"},"nodeType":"YulFunctionCall","src":"4895:20:92"},"nodeType":"YulExpressionStatement","src":"4895:20:92"},{"nodeType":"YulAssignment","src":"4924:21:92","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4937:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"4942:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4933:3:92"},"nodeType":"YulFunctionCall","src":"4933:12:92"},"variableNames":[{"name":"pos_1","nodeType":"YulIdentifier","src":"4924:5:92"}]},{"nodeType":"YulVariableDeclaration","src":"4954:14:92","value":{"kind":"number","nodeType":"YulLiteral","src":"4964:4:92","type":"","value":"0x20"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"4958:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4977:35:92","value":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"4995:12:92"},{"name":"_1","nodeType":"YulIdentifier","src":"5009:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4991:3:92"},"nodeType":"YulFunctionCall","src":"4991:21:92"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"4981:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5021:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"5030:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"5025:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"5089:175:92","statements":[{"expression":{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5110:5:92"},{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"5127:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5121:5:92"},"nodeType":"YulFunctionCall","src":"5121:13:92"},{"kind":"number","nodeType":"YulLiteral","src":"5136:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5117:3:92"},"nodeType":"YulFunctionCall","src":"5117:62:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5103:6:92"},"nodeType":"YulFunctionCall","src":"5103:77:92"},"nodeType":"YulExpressionStatement","src":"5103:77:92"},{"nodeType":"YulAssignment","src":"5193:23:92","value":{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5206:5:92"},{"name":"_1","nodeType":"YulIdentifier","src":"5213:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5202:3:92"},"nodeType":"YulFunctionCall","src":"5202:14:92"},"variableNames":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5193:5:92"}]},{"nodeType":"YulAssignment","src":"5229:25:92","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"5243:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"5251:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5239:3:92"},"nodeType":"YulFunctionCall","src":"5239:15:92"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"5229:6:92"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"5051:1:92"},{"name":"length","nodeType":"YulIdentifier","src":"5054:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"5048:2:92"},"nodeType":"YulFunctionCall","src":"5048:13:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"5062:18:92","statements":[{"nodeType":"YulAssignment","src":"5064:14:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"5073:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"5076:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5069:3:92"},"nodeType":"YulFunctionCall","src":"5069:9:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"5064:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"5044:3:92","statements":[]},"src":"5040:224:92"},{"nodeType":"YulVariableDeclaration","src":"5273:43:92","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5305:5:92"},{"name":"_1","nodeType":"YulIdentifier","src":"5312:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5301:3:92"},"nodeType":"YulFunctionCall","src":"5301:14:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5295:5:92"},"nodeType":"YulFunctionCall","src":"5295:21:92"},"variables":[{"name":"memberValue0_1","nodeType":"YulTypedName","src":"5277:14:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5336:3:92"},{"name":"_1","nodeType":"YulIdentifier","src":"5341:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5332:3:92"},"nodeType":"YulFunctionCall","src":"5332:12:92"},{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5350:5:92"},{"name":"pos","nodeType":"YulIdentifier","src":"5357:3:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5346:3:92"},"nodeType":"YulFunctionCall","src":"5346:15:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5325:6:92"},"nodeType":"YulFunctionCall","src":"5325:37:92"},"nodeType":"YulExpressionStatement","src":"5325:37:92"},{"nodeType":"YulVariableDeclaration","src":"5371:18:92","value":{"name":"pos_1","nodeType":"YulIdentifier","src":"5384:5:92"},"variables":[{"name":"pos_2","nodeType":"YulTypedName","src":"5375:5:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5398:37:92","value":{"arguments":[{"name":"memberValue0_1","nodeType":"YulIdentifier","src":"5420:14:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5414:5:92"},"nodeType":"YulFunctionCall","src":"5414:21:92"},"variables":[{"name":"length_1","nodeType":"YulTypedName","src":"5402:8:92","type":""}]},{"expression":{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5451:5:92"},{"name":"length_1","nodeType":"YulIdentifier","src":"5458:8:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5444:6:92"},"nodeType":"YulFunctionCall","src":"5444:23:92"},"nodeType":"YulExpressionStatement","src":"5444:23:92"},{"nodeType":"YulAssignment","src":"5476:23:92","value":{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5489:5:92"},{"name":"_1","nodeType":"YulIdentifier","src":"5496:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5485:3:92"},"nodeType":"YulFunctionCall","src":"5485:14:92"},"variableNames":[{"name":"pos_2","nodeType":"YulIdentifier","src":"5476:5:92"}]},{"nodeType":"YulVariableDeclaration","src":"5508:39:92","value":{"arguments":[{"name":"memberValue0_1","nodeType":"YulIdentifier","src":"5528:14:92"},{"name":"_1","nodeType":"YulIdentifier","src":"5544:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5524:3:92"},"nodeType":"YulFunctionCall","src":"5524:23:92"},"variables":[{"name":"srcPtr_1","nodeType":"YulTypedName","src":"5512:8:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5556:12:92","value":{"kind":"number","nodeType":"YulLiteral","src":"5567:1:92","type":"","value":"0"},"variables":[{"name":"i_1","nodeType":"YulTypedName","src":"5560:3:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"5634:148:92","statements":[{"nodeType":"YulAssignment","src":"5648:82:92","value":{"arguments":[{"arguments":[{"name":"srcPtr_1","nodeType":"YulIdentifier","src":"5713:8:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5707:5:92"},"nodeType":"YulFunctionCall","src":"5707:15:92"},{"name":"pos_2","nodeType":"YulIdentifier","src":"5724:5:92"}],"functionName":{"name":"abi_encodeUpdatedPos_struct_MultiTargetPermission","nodeType":"YulIdentifier","src":"5657:49:92"},"nodeType":"YulFunctionCall","src":"5657:73:92"},"variableNames":[{"name":"pos_2","nodeType":"YulIdentifier","src":"5648:5:92"}]},{"nodeType":"YulAssignment","src":"5743:29:92","value":{"arguments":[{"name":"srcPtr_1","nodeType":"YulIdentifier","src":"5759:8:92"},{"name":"_1","nodeType":"YulIdentifier","src":"5769:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5755:3:92"},"nodeType":"YulFunctionCall","src":"5755:17:92"},"variableNames":[{"name":"srcPtr_1","nodeType":"YulIdentifier","src":"5743:8:92"}]}]},"condition":{"arguments":[{"name":"i_1","nodeType":"YulIdentifier","src":"5588:3:92"},{"name":"length_1","nodeType":"YulIdentifier","src":"5593:8:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"5585:2:92"},"nodeType":"YulFunctionCall","src":"5585:17:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"5603:22:92","statements":[{"nodeType":"YulAssignment","src":"5605:18:92","value":{"arguments":[{"name":"i_1","nodeType":"YulIdentifier","src":"5616:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"5621:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5612:3:92"},"nodeType":"YulFunctionCall","src":"5612:11:92"},"variableNames":[{"name":"i_1","nodeType":"YulIdentifier","src":"5605:3:92"}]}]},"pre":{"nodeType":"YulBlock","src":"5581:3:92","statements":[]},"src":"5577:205:92"},{"nodeType":"YulAssignment","src":"5791:12:92","value":{"name":"pos_2","nodeType":"YulIdentifier","src":"5798:5:92"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"5791:3:92"}]}]},"name":"abi_encode_struct_PreparedSetupData","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"4692:5:92","type":""},{"name":"pos","nodeType":"YulTypedName","src":"4699:3:92","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"4707:3:92","type":""}],"src":"4647:1162:92"},{"body":{"nodeType":"YulBlock","src":"6033:231:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6050:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6061:2:92","type":"","value":"64"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6043:6:92"},"nodeType":"YulFunctionCall","src":"6043:21:92"},"nodeType":"YulExpressionStatement","src":"6043:21:92"},{"nodeType":"YulVariableDeclaration","src":"6073:58:92","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6104:6:92"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6116:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6127:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6112:3:92"},"nodeType":"YulFunctionCall","src":"6112:18:92"}],"functionName":{"name":"abi_encode_bytes","nodeType":"YulIdentifier","src":"6087:16:92"},"nodeType":"YulFunctionCall","src":"6087:44:92"},"variables":[{"name":"tail_1","nodeType":"YulTypedName","src":"6077:6:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6151:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6162:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6147:3:92"},"nodeType":"YulFunctionCall","src":"6147:18:92"},{"arguments":[{"name":"tail_1","nodeType":"YulIdentifier","src":"6171:6:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"6179:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6167:3:92"},"nodeType":"YulFunctionCall","src":"6167:22:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6140:6:92"},"nodeType":"YulFunctionCall","src":"6140:50:92"},"nodeType":"YulExpressionStatement","src":"6140:50:92"},{"nodeType":"YulAssignment","src":"6199:59:92","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"6243:6:92"},{"name":"tail_1","nodeType":"YulIdentifier","src":"6251:6:92"}],"functionName":{"name":"abi_encode_struct_PreparedSetupData","nodeType":"YulIdentifier","src":"6207:35:92"},"nodeType":"YulFunctionCall","src":"6207:51:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6199:4:92"}]}]},"name":"abi_encode_tuple_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$14216_memory_ptr__to_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$14216_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5994:9:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"6005:6:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"6013:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6024:4:92","type":""}],"src":"5814:450:92"},{"body":{"nodeType":"YulBlock","src":"6301:95:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6318:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6325:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"6330:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"6321:3:92"},"nodeType":"YulFunctionCall","src":"6321:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6311:6:92"},"nodeType":"YulFunctionCall","src":"6311:31:92"},"nodeType":"YulExpressionStatement","src":"6311:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6358:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"6361:4:92","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6351:6:92"},"nodeType":"YulFunctionCall","src":"6351:15:92"},"nodeType":"YulExpressionStatement","src":"6351:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6382:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6385:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6375:6:92"},"nodeType":"YulFunctionCall","src":"6375:15:92"},"nodeType":"YulExpressionStatement","src":"6375:15:92"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"6269:127:92"},{"body":{"nodeType":"YulBlock","src":"6497:899:92","statements":[{"body":{"nodeType":"YulBlock","src":"6543:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6552:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6555:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6545:6:92"},"nodeType":"YulFunctionCall","src":"6545:12:92"},"nodeType":"YulExpressionStatement","src":"6545:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"6518:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"6527:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6514:3:92"},"nodeType":"YulFunctionCall","src":"6514:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"6539:2:92","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6510:3:92"},"nodeType":"YulFunctionCall","src":"6510:32:92"},"nodeType":"YulIf","src":"6507:52:92"},{"nodeType":"YulAssignment","src":"6568:39:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6597:9:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"6578:18:92"},"nodeType":"YulFunctionCall","src":"6578:29:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"6568:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"6616:46:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6647:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6658:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6643:3:92"},"nodeType":"YulFunctionCall","src":"6643:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6630:12:92"},"nodeType":"YulFunctionCall","src":"6630:32:92"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"6620:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"6671:28:92","value":{"kind":"number","nodeType":"YulLiteral","src":"6681:18:92","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"6675:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"6726:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6735:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6738:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6728:6:92"},"nodeType":"YulFunctionCall","src":"6728:12:92"},"nodeType":"YulExpressionStatement","src":"6728:12:92"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"6714:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"6722:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6711:2:92"},"nodeType":"YulFunctionCall","src":"6711:14:92"},"nodeType":"YulIf","src":"6708:34:92"},{"nodeType":"YulVariableDeclaration","src":"6751:32:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6765:9:92"},{"name":"offset","nodeType":"YulIdentifier","src":"6776:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6761:3:92"},"nodeType":"YulFunctionCall","src":"6761:22:92"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"6755:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"6831:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6840:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6843:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6833:6:92"},"nodeType":"YulFunctionCall","src":"6833:12:92"},"nodeType":"YulExpressionStatement","src":"6833:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"6810:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"6814:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6806:3:92"},"nodeType":"YulFunctionCall","src":"6806:13:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"6821:7:92"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6802:3:92"},"nodeType":"YulFunctionCall","src":"6802:27:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"6795:6:92"},"nodeType":"YulFunctionCall","src":"6795:35:92"},"nodeType":"YulIf","src":"6792:55:92"},{"nodeType":"YulVariableDeclaration","src":"6856:26:92","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"6879:2:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6866:12:92"},"nodeType":"YulFunctionCall","src":"6866:16:92"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"6860:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"6905:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"6907:16:92"},"nodeType":"YulFunctionCall","src":"6907:18:92"},"nodeType":"YulExpressionStatement","src":"6907:18:92"}]},"condition":{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"6897:2:92"},{"name":"_1","nodeType":"YulIdentifier","src":"6901:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6894:2:92"},"nodeType":"YulFunctionCall","src":"6894:10:92"},"nodeType":"YulIf","src":"6891:36:92"},{"nodeType":"YulVariableDeclaration","src":"6936:17:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6950:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"6946:3:92"},"nodeType":"YulFunctionCall","src":"6946:7:92"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"6940:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"6962:23:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6982:2:92","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6976:5:92"},"nodeType":"YulFunctionCall","src":"6976:9:92"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"6966:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"6994:71:92","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7016:6:92"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"7040:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"7044:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7036:3:92"},"nodeType":"YulFunctionCall","src":"7036:13:92"},{"name":"_4","nodeType":"YulIdentifier","src":"7051:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7032:3:92"},"nodeType":"YulFunctionCall","src":"7032:22:92"},{"kind":"number","nodeType":"YulLiteral","src":"7056:2:92","type":"","value":"63"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7028:3:92"},"nodeType":"YulFunctionCall","src":"7028:31:92"},{"name":"_4","nodeType":"YulIdentifier","src":"7061:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7024:3:92"},"nodeType":"YulFunctionCall","src":"7024:40:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7012:3:92"},"nodeType":"YulFunctionCall","src":"7012:53:92"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"6998:10:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"7124:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"7126:16:92"},"nodeType":"YulFunctionCall","src":"7126:18:92"},"nodeType":"YulExpressionStatement","src":"7126:18:92"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"7083:10:92"},{"name":"_1","nodeType":"YulIdentifier","src":"7095:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"7080:2:92"},"nodeType":"YulFunctionCall","src":"7080:18:92"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"7103:10:92"},{"name":"memPtr","nodeType":"YulIdentifier","src":"7115:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"7100:2:92"},"nodeType":"YulFunctionCall","src":"7100:22:92"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"7077:2:92"},"nodeType":"YulFunctionCall","src":"7077:46:92"},"nodeType":"YulIf","src":"7074:72:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7162:2:92","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"7166:10:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7155:6:92"},"nodeType":"YulFunctionCall","src":"7155:22:92"},"nodeType":"YulExpressionStatement","src":"7155:22:92"},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7193:6:92"},{"name":"_3","nodeType":"YulIdentifier","src":"7201:2:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7186:6:92"},"nodeType":"YulFunctionCall","src":"7186:18:92"},"nodeType":"YulExpressionStatement","src":"7186:18:92"},{"body":{"nodeType":"YulBlock","src":"7250:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7259:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7262:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7252:6:92"},"nodeType":"YulFunctionCall","src":"7252:12:92"},"nodeType":"YulExpressionStatement","src":"7252:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"7227:2:92"},{"name":"_3","nodeType":"YulIdentifier","src":"7231:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7223:3:92"},"nodeType":"YulFunctionCall","src":"7223:11:92"},{"kind":"number","nodeType":"YulLiteral","src":"7236:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7219:3:92"},"nodeType":"YulFunctionCall","src":"7219:20:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"7241:7:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"7216:2:92"},"nodeType":"YulFunctionCall","src":"7216:33:92"},"nodeType":"YulIf","src":"7213:53:92"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7292:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"7300:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7288:3:92"},"nodeType":"YulFunctionCall","src":"7288:15:92"},{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"7309:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"7313:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7305:3:92"},"nodeType":"YulFunctionCall","src":"7305:11:92"},{"name":"_3","nodeType":"YulIdentifier","src":"7318:2:92"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"7275:12:92"},"nodeType":"YulFunctionCall","src":"7275:46:92"},"nodeType":"YulExpressionStatement","src":"7275:46:92"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7345:6:92"},{"name":"_3","nodeType":"YulIdentifier","src":"7353:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7341:3:92"},"nodeType":"YulFunctionCall","src":"7341:15:92"},{"kind":"number","nodeType":"YulLiteral","src":"7358:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7337:3:92"},"nodeType":"YulFunctionCall","src":"7337:24:92"},{"kind":"number","nodeType":"YulLiteral","src":"7363:1:92","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7330:6:92"},"nodeType":"YulFunctionCall","src":"7330:35:92"},"nodeType":"YulExpressionStatement","src":"7330:35:92"},{"nodeType":"YulAssignment","src":"7374:16:92","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"7384:6:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"7374:6:92"}]}]},"name":"abi_decode_tuple_t_addresst_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6455:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"6466:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"6478:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"6486:6:92","type":""}],"src":"6401:995:92"},{"body":{"nodeType":"YulBlock","src":"7602:209:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7619:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7634:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"7642:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7630:3:92"},"nodeType":"YulFunctionCall","src":"7630:55:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7612:6:92"},"nodeType":"YulFunctionCall","src":"7612:74:92"},"nodeType":"YulExpressionStatement","src":"7612:74:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7706:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7717:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7702:3:92"},"nodeType":"YulFunctionCall","src":"7702:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"7722:2:92","type":"","value":"64"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7695:6:92"},"nodeType":"YulFunctionCall","src":"7695:30:92"},"nodeType":"YulExpressionStatement","src":"7695:30:92"},{"nodeType":"YulAssignment","src":"7734:71:92","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"7778:6:92"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7790:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7801:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7786:3:92"},"nodeType":"YulFunctionCall","src":"7786:18:92"}],"functionName":{"name":"abi_encode_struct_PreparedSetupData","nodeType":"YulIdentifier","src":"7742:35:92"},"nodeType":"YulFunctionCall","src":"7742:63:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7734:4:92"}]}]},"name":"abi_encode_tuple_t_address_t_struct$_PreparedSetupData_$14216_memory_ptr__to_t_address_t_struct$_PreparedSetupData_$14216_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7563:9:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"7574:6:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"7582:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7593:4:92","type":""}],"src":"7401:410:92"},{"body":{"nodeType":"YulBlock","src":"7950:162:92","statements":[{"nodeType":"YulAssignment","src":"7960:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7972:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7983:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7968:3:92"},"nodeType":"YulFunctionCall","src":"7968:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7960:4:92"}]},{"nodeType":"YulVariableDeclaration","src":"7995:16:92","value":{"kind":"number","nodeType":"YulLiteral","src":"8005:6:92","type":"","value":"0xffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"7999:2:92","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8027:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"8042:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"8050:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8038:3:92"},"nodeType":"YulFunctionCall","src":"8038:15:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8020:6:92"},"nodeType":"YulFunctionCall","src":"8020:34:92"},"nodeType":"YulExpressionStatement","src":"8020:34:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8074:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8085:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8070:3:92"},"nodeType":"YulFunctionCall","src":"8070:18:92"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"8094:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"8102:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8090:3:92"},"nodeType":"YulFunctionCall","src":"8090:15:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8063:6:92"},"nodeType":"YulFunctionCall","src":"8063:43:92"},"nodeType":"YulExpressionStatement","src":"8063:43:92"}]},"name":"abi_encode_tuple_t_rational_0_by_1_t_uint16__to_t_uint16_t_uint16__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7911:9:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"7922:6:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"7930:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7941:4:92","type":""}],"src":"7816:296:92"},{"body":{"nodeType":"YulBlock","src":"8232:125:92","statements":[{"nodeType":"YulAssignment","src":"8242:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8254:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8265:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8250:3:92"},"nodeType":"YulFunctionCall","src":"8250:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"8242:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8284:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"8299:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"8307:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8295:3:92"},"nodeType":"YulFunctionCall","src":"8295:55:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8277:6:92"},"nodeType":"YulFunctionCall","src":"8277:74:92"},"nodeType":"YulExpressionStatement","src":"8277:74:92"}]},"name":"abi_encode_tuple_t_contract$_IDAO_$10865__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8201:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"8212:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"8223:4:92","type":""}],"src":"8117:240:92"},{"body":{"nodeType":"YulBlock","src":"8394:95:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8411:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8418:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"8423:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"8414:3:92"},"nodeType":"YulFunctionCall","src":"8414:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8404:6:92"},"nodeType":"YulFunctionCall","src":"8404:31:92"},"nodeType":"YulExpressionStatement","src":"8404:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8451:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"8454:4:92","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8444:6:92"},"nodeType":"YulFunctionCall","src":"8444:15:92"},"nodeType":"YulExpressionStatement","src":"8444:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8475:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8478:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8468:6:92"},"nodeType":"YulFunctionCall","src":"8468:15:92"},"nodeType":"YulExpressionStatement","src":"8468:15:92"}]},"name":"panic_error_0x11","nodeType":"YulFunctionDefinition","src":"8362:127:92"},{"body":{"nodeType":"YulBlock","src":"8543:159:92","statements":[{"nodeType":"YulVariableDeclaration","src":"8553:52:92","value":{"kind":"number","nodeType":"YulLiteral","src":"8563:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"8557:2:92","type":""}]},{"nodeType":"YulAssignment","src":"8614:35:92","value":{"arguments":[{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"8630:1:92"},{"name":"_1","nodeType":"YulIdentifier","src":"8633:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8626:3:92"},"nodeType":"YulFunctionCall","src":"8626:10:92"},{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"8642:1:92"},{"name":"_1","nodeType":"YulIdentifier","src":"8645:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8638:3:92"},"nodeType":"YulFunctionCall","src":"8638:10:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"8622:3:92"},"nodeType":"YulFunctionCall","src":"8622:27:92"},"variableNames":[{"name":"diff","nodeType":"YulIdentifier","src":"8614:4:92"}]},{"body":{"nodeType":"YulBlock","src":"8674:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"8676:16:92"},"nodeType":"YulFunctionCall","src":"8676:18:92"},"nodeType":"YulExpressionStatement","src":"8676:18:92"}]},"condition":{"arguments":[{"name":"diff","nodeType":"YulIdentifier","src":"8664:4:92"},{"name":"_1","nodeType":"YulIdentifier","src":"8670:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"8661:2:92"},"nodeType":"YulFunctionCall","src":"8661:12:92"},"nodeType":"YulIf","src":"8658:38:92"}]},"name":"checked_sub_t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"8525:1:92","type":""},{"name":"y","nodeType":"YulTypedName","src":"8528:1:92","type":""}],"returnVariables":[{"name":"diff","nodeType":"YulTypedName","src":"8534:4:92","type":""}],"src":"8494:208:92"},{"body":{"nodeType":"YulBlock","src":"8739:95:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8756:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8763:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"8768:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"8759:3:92"},"nodeType":"YulFunctionCall","src":"8759:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8749:6:92"},"nodeType":"YulFunctionCall","src":"8749:31:92"},"nodeType":"YulExpressionStatement","src":"8749:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8796:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"8799:4:92","type":"","value":"0x32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8789:6:92"},"nodeType":"YulFunctionCall","src":"8789:15:92"},"nodeType":"YulExpressionStatement","src":"8789:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8820:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8823:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8813:6:92"},"nodeType":"YulFunctionCall","src":"8813:15:92"},"nodeType":"YulExpressionStatement","src":"8813:15:92"}]},"name":"panic_error_0x32","nodeType":"YulFunctionDefinition","src":"8707:127:92"},{"body":{"nodeType":"YulBlock","src":"8886:187:92","statements":[{"nodeType":"YulVariableDeclaration","src":"8896:52:92","value":{"kind":"number","nodeType":"YulLiteral","src":"8906:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"8900:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"8957:29:92","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8976:5:92"},{"name":"_1","nodeType":"YulIdentifier","src":"8983:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8972:3:92"},"nodeType":"YulFunctionCall","src":"8972:14:92"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"8961:7:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"9014:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"9016:16:92"},"nodeType":"YulFunctionCall","src":"9016:18:92"},"nodeType":"YulExpressionStatement","src":"9016:18:92"}]},"condition":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"9001:7:92"},{"name":"_1","nodeType":"YulIdentifier","src":"9010:2:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"8998:2:92"},"nodeType":"YulFunctionCall","src":"8998:15:92"},"nodeType":"YulIf","src":"8995:41:92"},{"nodeType":"YulAssignment","src":"9045:22:92","value":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"9056:7:92"},{"kind":"number","nodeType":"YulLiteral","src":"9065:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9052:3:92"},"nodeType":"YulFunctionCall","src":"9052:15:92"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"9045:3:92"}]}]},"name":"increment_t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"8868:5:92","type":""}],"returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"8878:3:92","type":""}],"src":"8839:234:92"},{"body":{"nodeType":"YulBlock","src":"9225:190:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9242:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"9257:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"9265:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"9253:3:92"},"nodeType":"YulFunctionCall","src":"9253:55:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9235:6:92"},"nodeType":"YulFunctionCall","src":"9235:74:92"},"nodeType":"YulExpressionStatement","src":"9235:74:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9329:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9340:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9325:3:92"},"nodeType":"YulFunctionCall","src":"9325:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"9345:2:92","type":"","value":"64"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9318:6:92"},"nodeType":"YulFunctionCall","src":"9318:30:92"},"nodeType":"YulExpressionStatement","src":"9318:30:92"},{"nodeType":"YulAssignment","src":"9357:52:92","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"9382:6:92"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9394:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9405:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9390:3:92"},"nodeType":"YulFunctionCall","src":"9390:18:92"}],"functionName":{"name":"abi_encode_bytes","nodeType":"YulIdentifier","src":"9365:16:92"},"nodeType":"YulFunctionCall","src":"9365:44:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"9357:4:92"}]}]},"name":"abi_encode_tuple_t_address_t_bytes_memory_ptr__to_t_address_t_bytes_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9186:9:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"9197:6:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"9205:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"9216:4:92","type":""}],"src":"9078:337:92"}]},"contents":"{\n { }\n function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n if iszero(eq(value, and(value, shl(224, 0xffffffff)))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 96)\n let pos := headStart\n pos := headStart\n let srcPtr := value0\n let i := 0\n for { } lt(i, 0x03) { i := add(i, 1) }\n {\n mstore(pos, and(mload(srcPtr), 0xff))\n let _1 := 0x20\n pos := add(pos, _1)\n srcPtr := add(srcPtr, _1)\n }\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_decode_address(offset) -> value\n {\n value := calldataload(offset)\n if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n }\n function abi_decode_struct_SetupPayload_calldata(offset, end) -> value\n {\n if slt(sub(end, offset), 96) { revert(0, 0) }\n value := offset\n }\n function abi_decode_tuple_t_addresst_struct$_SetupPayload_$14224_calldata_ptr(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n let offset := calldataload(add(headStart, 32))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n value1 := abi_decode_struct_SetupPayload_calldata(add(headStart, offset), dataEnd)\n }\n function panic_error_0x21()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x21)\n revert(0, 0x24)\n }\n function abi_encodeUpdatedPos_struct_MultiTargetPermission(value0, pos) -> updatedPos\n {\n let _1 := mload(value0)\n if iszero(lt(_1, 3))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x21)\n revert(0, 0x24)\n }\n mstore(pos, _1)\n let memberValue0 := mload(add(value0, 0x20))\n let _2 := 0xffffffffffffffffffffffffffffffffffffffff\n mstore(add(pos, 0x20), and(memberValue0, _2))\n mstore(add(pos, 0x40), and(mload(add(value0, 0x40)), _2))\n mstore(add(pos, 0x60), and(mload(add(value0, 0x60)), _2))\n mstore(add(pos, 0x80), mload(add(value0, 0x80)))\n updatedPos := add(pos, 0xa0)\n }\n function abi_encode_tuple_t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n let _1 := 32\n let tail_1 := add(headStart, _1)\n mstore(headStart, _1)\n let pos := tail_1\n let length := mload(value0)\n mstore(tail_1, length)\n pos := add(headStart, 64)\n let srcPtr := add(value0, _1)\n let i := 0\n for { } lt(i, length) { i := add(i, 1) }\n {\n pos := abi_encodeUpdatedPos_struct_MultiTargetPermission(mload(srcPtr), pos)\n srcPtr := add(srcPtr, _1)\n }\n tail := pos\n }\n function abi_decode_tuple_t_addresst_uint16t_struct$_SetupPayload_$14224_calldata_ptr(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n let value := calldataload(add(headStart, 32))\n if iszero(eq(value, and(value, 0xffff))) { revert(0, 0) }\n value1 := value\n let offset := calldataload(add(headStart, 64))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n value2 := abi_decode_struct_SetupPayload_calldata(add(headStart, offset), dataEnd)\n }\n function abi_encode_bytes(value, pos) -> end\n {\n let length := mload(value)\n mstore(pos, length)\n let i := 0\n for { } lt(i, length) { i := add(i, 0x20) }\n {\n let _1 := 0x20\n mstore(add(add(pos, i), _1), mload(add(add(value, i), _1)))\n }\n mstore(add(add(pos, length), 0x20), 0)\n end := add(add(pos, and(add(length, 31), not(31))), 0x20)\n }\n function abi_encode_struct_PreparedSetupData(value, pos) -> end\n {\n let tail := add(pos, 0x40)\n let memberValue0 := mload(value)\n mstore(pos, 0x40)\n let pos_1 := tail\n let length := mload(memberValue0)\n mstore(tail, length)\n pos_1 := add(pos, 96)\n let _1 := 0x20\n let srcPtr := add(memberValue0, _1)\n let i := 0\n for { } lt(i, length) { i := add(i, 1) }\n {\n mstore(pos_1, and(mload(srcPtr), 0xffffffffffffffffffffffffffffffffffffffff))\n pos_1 := add(pos_1, _1)\n srcPtr := add(srcPtr, _1)\n }\n let memberValue0_1 := mload(add(value, _1))\n mstore(add(pos, _1), sub(pos_1, pos))\n let pos_2 := pos_1\n let length_1 := mload(memberValue0_1)\n mstore(pos_1, length_1)\n pos_2 := add(pos_1, _1)\n let srcPtr_1 := add(memberValue0_1, _1)\n let i_1 := 0\n for { } lt(i_1, length_1) { i_1 := add(i_1, 1) }\n {\n pos_2 := abi_encodeUpdatedPos_struct_MultiTargetPermission(mload(srcPtr_1), pos_2)\n srcPtr_1 := add(srcPtr_1, _1)\n }\n end := pos_2\n }\n function abi_encode_tuple_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$14216_memory_ptr__to_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$14216_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n {\n mstore(headStart, 64)\n let tail_1 := abi_encode_bytes(value0, add(headStart, 64))\n mstore(add(headStart, 32), sub(tail_1, headStart))\n tail := abi_encode_struct_PreparedSetupData(value1, tail_1)\n }\n function panic_error_0x41()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function abi_decode_tuple_t_addresst_bytes_memory_ptr(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n let offset := calldataload(add(headStart, 32))\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n let _2 := add(headStart, offset)\n if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n let _3 := calldataload(_2)\n if gt(_3, _1) { panic_error_0x41() }\n let _4 := not(31)\n let memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n mstore(memPtr, _3)\n if gt(add(add(_2, _3), 32), dataEnd) { revert(0, 0) }\n calldatacopy(add(memPtr, 32), add(_2, 32), _3)\n mstore(add(add(memPtr, _3), 32), 0)\n value1 := memPtr\n }\n function abi_encode_tuple_t_address_t_struct$_PreparedSetupData_$14216_memory_ptr__to_t_address_t_struct$_PreparedSetupData_$14216_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n {\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n mstore(add(headStart, 32), 64)\n tail := abi_encode_struct_PreparedSetupData(value1, add(headStart, 64))\n }\n function abi_encode_tuple_t_rational_0_by_1_t_uint16__to_t_uint16_t_uint16__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n let _1 := 0xffff\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n }\n function abi_encode_tuple_t_contract$_IDAO_$10865__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function panic_error_0x11()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n function checked_sub_t_uint160(x, y) -> diff\n {\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n diff := sub(and(x, _1), and(y, _1))\n if gt(diff, _1) { panic_error_0x11() }\n }\n function panic_error_0x32()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n function increment_t_uint160(value) -> ret\n {\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n let value_1 := and(value, _1)\n if eq(value_1, _1) { panic_error_0x11() }\n ret := add(value_1, 1)\n }\n function abi_encode_tuple_t_address_t_bytes_memory_ptr__to_t_address_t_bytes_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n {\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n mstore(add(headStart, 32), 64)\n tail := abi_encode_bytes(value1, add(headStart, 64))\n }\n}","id":92,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{"14391":[{"length":32,"start":210},{"length":32,"start":723}]},"linkReferences":{},"object":"60806040523480156200001157600080fd5b50600436106200007b5760003560e01c80639cb0a12411620000565780639cb0a12414620000fd578063a8a9c29e1462000123578063f10832f1146200014a57600080fd5b806301ffc9a714620000805780632ae9c60014620000ac5780635c60da1b14620000c5575b600080fd5b6200009762000091366004620005f8565b62000171565b60405190151581526020015b60405180910390f35b620000b6620001c4565b604051620000a3919062000624565b6040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152602001620000a3565b620001146200010e3660046200068a565b620001f0565b604051620000a391906200075b565b6200013a62000134366004620007a8565b62000208565b604051620000a3929190620008f7565b620001616200015b3660046200093f565b6200024f565b604051620000a392919062000a0d565b60006001600160e01b0319821663099718b560e41b1480620001a257506001600160e01b03198216621574e360e91b145b80620001be57506301ffc9a760e01b6001600160e01b03198316145b92915050565b620001ce620005cc565b5060408051606081018252600181526004602082015260009181019190915290565b606062000201600060018062000333565b9392505050565b606062000228604051806040016040528060608152602001606081525090565b60405163098990c560e11b8152600060048201526001602482015260440160405180910390fd5b60006200026f604051806040016040528060608152602001606081525090565b6040516001600160a01b038516602482015260009060440160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663189acdbd60e31b17905290506200030581620002f57f000000000000000000000000000000000000000000000000000000000000000090565b6001600160a01b031690620004cc565b925062000313600162000508565b825262000324600060018162000333565b60208301525090939092509050565b6060826001600160a01b0316846001600160a01b031611156200036957604051633a4013cd60e21b815260040160405180910390fd5b62000375848462000a4f565b6001600160a01b031667ffffffffffffffff81111562000399576200039962000929565b604051908082528060200260200182016040528015620003f457816020015b6040805160a081018252600080825260208083018290529282018190526060820181905260808201528252600019909201910181620003b85790505b509050835b836001600160a01b0316816001600160a01b03161015620004c4576040518060a00160405280846002811115620004345762000434620006de565b81526001600160a01b038316602082018190526040820152600060608201527fa280eec51ab8e1bc4b6b0c1b7f1bde785761b787a49db404e3e9338ed9b016ef6080909101528262000487878462000a4f565b6001600160a01b031681518110620004a357620004a362000a79565b60200260200101819052508080620004bb9062000a8f565b915050620003f9565b509392505050565b60008282604051620004de90620005ea565b620004eb92919062000ab8565b604051809103906000f080158015620004c4573d6000803e3d6000fd5b6060816001600160a01b031667ffffffffffffffff8111156200052f576200052f62000929565b60405190808252806020026020018201604052801562000559578160200160208202803683370190505b50905060005b826001600160a01b0316816001600160a01b03161015620005c6578082826001600160a01b03168151811062000599576200059962000a79565b6001600160a01b039092166020928302919091019091015280620005bd8162000a8f565b9150506200055f565b50919050565b60405180606001604052806003906020820280368337509192915050565b6106fe8062000add83390190565b6000602082840312156200060b57600080fd5b81356001600160e01b0319811681146200020157600080fd5b60608101818360005b60038110156200065157815160ff168352602092830192909101906001016200062d565b50505092915050565b80356001600160a01b03811681146200067257600080fd5b919050565b600060608284031215620005c657600080fd5b600080604083850312156200069e57600080fd5b620006a9836200065a565b9150602083013567ffffffffffffffff811115620006c657600080fd5b620006d48582860162000677565b9150509250929050565b634e487b7160e01b600052602160045260246000fd5b60008151600381106200071757634e487b7160e01b600052602160045260246000fd5b8352506020818101516001600160a01b0390811691840191909152604080830151821690840152606080830151909116908301526080908101519082015260a00190565b6020808252825182820181905260009190848201906040850190845b818110156200079c576200078d838551620006f4565b93850193925060010162000777565b50909695505050505050565b600080600060608486031215620007be57600080fd5b620007c9846200065a565b9250602084013561ffff81168114620007e157600080fd5b9150604084013567ffffffffffffffff811115620007fe57600080fd5b6200080c8682870162000677565b9150509250925092565b6000815180845260005b818110156200083e5760208185018101518683018201520162000820565b506000602082860101526020601f19601f83011685010191505092915050565b805160408084528151908401819052600091602091908201906060860190845b81811015620008a55783516001600160a01b0316835292840192918401916001016200087e565b50508483015186820387850152805180835290840192506000918401905b80831015620008ec57620008d9828551620006f4565b91508484019350600183019250620008c3565b509695505050505050565b6040815260006200090c604083018562000816565b82810360208401526200092081856200085e565b95945050505050565b634e487b7160e01b600052604160045260246000fd5b600080604083850312156200095357600080fd5b6200095e836200065a565b9150602083013567ffffffffffffffff808211156200097c57600080fd5b818501915085601f8301126200099157600080fd5b813581811115620009a657620009a662000929565b604051601f8201601f19908116603f01168101908382118183101715620009d157620009d162000929565b81604052828152886020848701011115620009eb57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6001600160a01b038316815260406020820152600062000a3160408301846200085e565b949350505050565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0382811682821603908082111562000a725762000a7262000a39565b5092915050565b634e487b7160e01b600052603260045260246000fd5b60006001600160a01b0380831681810362000aae5762000aae62000a39565b6001019392505050565b6001600160a01b038316815260406020820152600062000a3160408301846200081656fe60806040526040516106fe3803806106fe83398101604081905261002291610319565b61002e82826000610035565b5050610436565b61003e8361006b565b60008251118061004b5750805b156100665761006483836100ab60201b6100291760201c565b505b505050565b610074816100d7565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606100d083836040518060600160405280602781526020016106d7602791396101a9565b9392505050565b6100ea8161022260201b6100551760201c565b6101515760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b806101887f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61023160201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6060600080856001600160a01b0316856040516101c691906103e7565b600060405180830381855af49150503d8060008114610201576040519150601f19603f3d011682016040523d82523d6000602084013e610206565b606091505b50909250905061021886838387610234565b9695505050505050565b6001600160a01b03163b151590565b90565b606083156102a357825160000361029c576001600160a01b0385163b61029c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610148565b50816102ad565b6102ad83836102b5565b949350505050565b8151156102c55781518083602001fd5b8060405162461bcd60e51b81526004016101489190610403565b634e487b7160e01b600052604160045260246000fd5b60005b838110156103105781810151838201526020016102f8565b50506000910152565b6000806040838503121561032c57600080fd5b82516001600160a01b038116811461034357600080fd5b60208401519092506001600160401b038082111561036057600080fd5b818501915085601f83011261037457600080fd5b815181811115610386576103866102df565b604051601f8201601f19908116603f011681019083821181831017156103ae576103ae6102df565b816040528281528860208487010111156103c757600080fd5b6103d88360208301602088016102f5565b80955050505050509250929050565b600082516103f98184602087016102f5565b9190910192915050565b60208152600082518060208401526104228160408501602087016102f5565b601f01601f19169190910160400192915050565b610292806104456000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b61009f565b565b606061004e838360405180606001604052806027815260200161025f602791396100c3565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e8080156100be573d6000f35b3d6000fd5b6060600080856001600160a01b0316856040516100e0919061020f565b600060405180830381855af49150503d806000811461011b576040519150601f19603f3d011682016040523d82523d6000602084013e610120565b606091505b50915091506101318683838761013b565b9695505050505050565b606083156101af5782516000036101a8576001600160a01b0385163b6101a85760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b50816101b9565b6101b983836101c1565b949350505050565b8151156101d15781518083602001fd5b8060405162461bcd60e51b815260040161019f919061022b565b60005b838110156102065781810151838201526020016101ee565b50506000910152565b600082516102218184602087016101eb565b9190910192915050565b602081526000825180602084015261024a8160408501602087016101eb565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH3 0x7B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9CB0A124 GT PUSH3 0x56 JUMPI DUP1 PUSH4 0x9CB0A124 EQ PUSH3 0xFD JUMPI DUP1 PUSH4 0xA8A9C29E EQ PUSH3 0x123 JUMPI DUP1 PUSH4 0xF10832F1 EQ PUSH3 0x14A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH3 0x80 JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH3 0xAC JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH3 0xC5 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x97 PUSH3 0x91 CALLDATASIZE PUSH1 0x4 PUSH3 0x5F8 JUMP JUMPDEST PUSH3 0x171 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0xB6 PUSH3 0x1C4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0xA3 SWAP2 SWAP1 PUSH3 0x624 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH3 0xA3 JUMP JUMPDEST PUSH3 0x114 PUSH3 0x10E CALLDATASIZE PUSH1 0x4 PUSH3 0x68A JUMP JUMPDEST PUSH3 0x1F0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0xA3 SWAP2 SWAP1 PUSH3 0x75B JUMP JUMPDEST PUSH3 0x13A PUSH3 0x134 CALLDATASIZE PUSH1 0x4 PUSH3 0x7A8 JUMP JUMPDEST PUSH3 0x208 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0xA3 SWAP3 SWAP2 SWAP1 PUSH3 0x8F7 JUMP JUMPDEST PUSH3 0x161 PUSH3 0x15B CALLDATASIZE PUSH1 0x4 PUSH3 0x93F JUMP JUMPDEST PUSH3 0x24F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0xA3 SWAP3 SWAP2 SWAP1 PUSH3 0xA0D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x99718B5 PUSH1 0xE4 SHL EQ DUP1 PUSH3 0x1A2 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH3 0x1BE JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH3 0x1CE PUSH3 0x5CC JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH3 0x201 PUSH1 0x0 PUSH1 0x1 DUP1 PUSH3 0x333 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH3 0x228 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x98990C5 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH3 0x26F PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 PUSH1 0x44 ADD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x189ACDBD PUSH1 0xE3 SHL OR SWAP1 MSTORE SWAP1 POP PUSH3 0x305 DUP2 PUSH3 0x2F5 PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH3 0x4CC JUMP JUMPDEST SWAP3 POP PUSH3 0x313 PUSH1 0x1 PUSH3 0x508 JUMP JUMPDEST DUP3 MSTORE PUSH3 0x324 PUSH1 0x0 PUSH1 0x1 DUP2 PUSH3 0x333 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP SWAP1 SWAP4 SWAP1 SWAP3 POP SWAP1 POP JUMP JUMPDEST PUSH1 0x60 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH3 0x369 JUMPI PUSH1 0x40 MLOAD PUSH4 0x3A4013CD PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0x375 DUP5 DUP5 PUSH3 0xA4F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x399 JUMPI PUSH3 0x399 PUSH3 0x929 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH3 0x3F4 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD DUP3 SWAP1 MSTORE SWAP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 DUP3 ADD MSTORE DUP3 MSTORE PUSH1 0x0 NOT SWAP1 SWAP3 ADD SWAP2 ADD DUP2 PUSH3 0x3B8 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP DUP4 JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT ISZERO PUSH3 0x4C4 JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 DUP5 PUSH1 0x2 DUP2 GT ISZERO PUSH3 0x434 JUMPI PUSH3 0x434 PUSH3 0x6DE JUMP JUMPDEST DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x60 DUP3 ADD MSTORE PUSH32 0xA280EEC51AB8E1BC4B6B0C1B7F1BDE785761B787A49DB404E3E9338ED9B016EF PUSH1 0x80 SWAP1 SWAP2 ADD MSTORE DUP3 PUSH3 0x487 DUP8 DUP5 PUSH3 0xA4F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MLOAD DUP2 LT PUSH3 0x4A3 JUMPI PUSH3 0x4A3 PUSH3 0xA79 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP DUP1 DUP1 PUSH3 0x4BB SWAP1 PUSH3 0xA8F JUMP JUMPDEST SWAP2 POP POP PUSH3 0x3F9 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH3 0x4DE SWAP1 PUSH3 0x5EA JUMP JUMPDEST PUSH3 0x4EB SWAP3 SWAP2 SWAP1 PUSH3 0xAB8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH3 0x4C4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x60 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x52F JUMPI PUSH3 0x52F PUSH3 0x929 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH3 0x559 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT ISZERO PUSH3 0x5C6 JUMPI DUP1 DUP3 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MLOAD DUP2 LT PUSH3 0x599 JUMPI PUSH3 0x599 PUSH3 0xA79 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE DUP1 PUSH3 0x5BD DUP2 PUSH3 0xA8F JUMP JUMPDEST SWAP2 POP POP PUSH3 0x55F JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x6FE DUP1 PUSH3 0xADD DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x60B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH3 0x201 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH3 0x651 JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH3 0x62D JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x672 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x5C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x69E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x6A9 DUP4 PUSH3 0x65A JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x6C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x6D4 DUP6 DUP3 DUP7 ADD PUSH3 0x677 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP2 MLOAD PUSH1 0x3 DUP2 LT PUSH3 0x717 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP4 MSTORE POP PUSH1 0x20 DUP2 DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP1 DUP4 ADD MLOAD DUP3 AND SWAP1 DUP5 ADD MSTORE PUSH1 0x60 DUP1 DUP4 ADD MLOAD SWAP1 SWAP2 AND SWAP1 DUP4 ADD MSTORE PUSH1 0x80 SWAP1 DUP2 ADD MLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x79C JUMPI PUSH3 0x78D DUP4 DUP6 MLOAD PUSH3 0x6F4 JUMP JUMPDEST SWAP4 DUP6 ADD SWAP4 SWAP3 POP PUSH1 0x1 ADD PUSH3 0x777 JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH3 0x7BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x7C9 DUP5 PUSH3 0x65A JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH3 0x7E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x7FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x80C DUP7 DUP3 DUP8 ADD PUSH3 0x677 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x83E JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD DUP3 ADD MSTORE ADD PUSH3 0x820 JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x20 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x20 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x40 DUP1 DUP5 MSTORE DUP2 MLOAD SWAP1 DUP5 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x20 SWAP2 SWAP1 DUP3 ADD SWAP1 PUSH1 0x60 DUP7 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x8A5 JUMPI DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH3 0x87E JUMP JUMPDEST POP POP DUP5 DUP4 ADD MLOAD DUP7 DUP3 SUB DUP8 DUP6 ADD MSTORE DUP1 MLOAD DUP1 DUP4 MSTORE SWAP1 DUP5 ADD SWAP3 POP PUSH1 0x0 SWAP2 DUP5 ADD SWAP1 JUMPDEST DUP1 DUP4 LT ISZERO PUSH3 0x8EC JUMPI PUSH3 0x8D9 DUP3 DUP6 MLOAD PUSH3 0x6F4 JUMP JUMPDEST SWAP2 POP DUP5 DUP5 ADD SWAP4 POP PUSH1 0x1 DUP4 ADD SWAP3 POP PUSH3 0x8C3 JUMP JUMPDEST POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 PUSH3 0x90C PUSH1 0x40 DUP4 ADD DUP6 PUSH3 0x816 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 ADD MSTORE PUSH3 0x920 DUP2 DUP6 PUSH3 0x85E JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x953 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x95E DUP4 PUSH3 0x65A JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH3 0x97C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x991 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH3 0x9A6 JUMPI PUSH3 0x9A6 PUSH3 0x929 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH3 0x9D1 JUMPI PUSH3 0x9D1 PUSH3 0x929 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH3 0x9EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH3 0xA31 PUSH1 0x40 DUP4 ADD DUP5 PUSH3 0x85E JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND DUP3 DUP3 AND SUB SWAP1 DUP1 DUP3 GT ISZERO PUSH3 0xA72 JUMPI PUSH3 0xA72 PUSH3 0xA39 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND DUP2 DUP2 SUB PUSH3 0xAAE JUMPI PUSH3 0xAAE PUSH3 0xA39 JUMP JUMPDEST PUSH1 0x1 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH3 0xA31 PUSH1 0x40 DUP4 ADD DUP5 PUSH3 0x816 JUMP INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH2 0x6FE CODESIZE SUB DUP1 PUSH2 0x6FE DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x22 SWAP2 PUSH2 0x319 JUMP JUMPDEST PUSH2 0x2E DUP3 DUP3 PUSH1 0x0 PUSH2 0x35 JUMP JUMPDEST POP POP PUSH2 0x436 JUMP JUMPDEST PUSH2 0x3E DUP4 PUSH2 0x6B JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD GT DUP1 PUSH2 0x4B JUMPI POP DUP1 JUMPDEST ISZERO PUSH2 0x66 JUMPI PUSH2 0x64 DUP4 DUP4 PUSH2 0xAB PUSH1 0x20 SHL PUSH2 0x29 OR PUSH1 0x20 SHR JUMP JUMPDEST POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x74 DUP2 PUSH2 0xD7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xD0 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x6D7 PUSH1 0x27 SWAP2 CODECOPY PUSH2 0x1A9 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xEA DUP2 PUSH2 0x222 PUSH1 0x20 SHL PUSH2 0x55 OR PUSH1 0x20 SHR JUMP JUMPDEST PUSH2 0x151 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313936373A206E657720696D706C656D656E746174696F6E206973206E PUSH1 0x44 DUP3 ADD MSTORE PUSH13 0x1BDD08184818DBDB9D1C9858DD PUSH1 0x9A SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH2 0x188 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC PUSH1 0x0 SHL PUSH2 0x231 PUSH1 0x20 SHL PUSH2 0x64 OR PUSH1 0x20 SHR JUMP JUMPDEST DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0x1C6 SWAP2 SWAP1 PUSH2 0x3E7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x201 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x206 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x218 DUP7 DUP4 DUP4 DUP8 PUSH2 0x234 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x2A3 JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0x29C JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0x29C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x148 JUMP JUMPDEST POP DUP2 PUSH2 0x2AD JUMP JUMPDEST PUSH2 0x2AD DUP4 DUP4 PUSH2 0x2B5 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x2C5 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x148 SWAP2 SWAP1 PUSH2 0x403 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x310 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2F8 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x32C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x343 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x360 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x374 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x386 JUMPI PUSH2 0x386 PUSH2 0x2DF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x3AE JUMPI PUSH2 0x3AE PUSH2 0x2DF JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x3C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3D8 DUP4 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x2F5 JUMP JUMPDEST DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x3F9 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x2F5 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x422 DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x2F5 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x292 DUP1 PUSH2 0x445 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLDATASIZE PUSH2 0x13 JUMPI PUSH2 0x11 PUSH2 0x17 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x11 JUMPDEST PUSH2 0x27 PUSH2 0x22 PUSH2 0x67 JUMP JUMPDEST PUSH2 0x9F JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x60 PUSH2 0x4E DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x25F PUSH1 0x27 SWAP2 CODECOPY PUSH2 0xC3 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9A PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 DUP1 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE PUSH1 0x0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH2 0xBE JUMPI RETURNDATASIZE PUSH1 0x0 RETURN JUMPDEST RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0xE0 SWAP2 SWAP1 PUSH2 0x20F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x11B JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x120 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x131 DUP7 DUP4 DUP4 DUP8 PUSH2 0x13B JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x1AF JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0x1A8 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0x1A8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP DUP2 PUSH2 0x1B9 JUMP JUMPDEST PUSH2 0x1B9 DUP4 DUP4 PUSH2 0x1C1 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x1D1 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x19F SWAP2 SWAP1 PUSH2 0x22B JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x206 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1EE JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x221 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x1EB JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x24A DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x1EB JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A164 PUSH20 0x6F6C6343000811000A416464726573733A206C6F PUSH24 0x2D6C6576656C2064656C65676174652063616C6C20666169 PUSH13 0x6564A164736F6C634300081100 EXP ","sourceMap":"816:1588:54:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1852:293:83;;;;;;:::i;:::-;;:::i;:::-;;;470:14:92;;463:22;445:41;;433:2;418:18;1852:293:83;;;;;;;;631:98:90;;;:::i;:::-;;;;;;;:::i;2184:94:83:-;;;-1:-1:-1;;;;;2257:14:83;1167:55:92;1149:74;;1137:2;1122:18;2184:94:83;1003:226:92;2103:299:54;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1757:307::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;1099:509::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;1852:293:83:-;1938:4;-1:-1:-1;;;;;;1973:46:83;;-1:-1:-1;;;1973:46:83;;:112;;-1:-1:-1;;;;;;;2035:50:83;;-1:-1:-1;;;2035:50:83;1973:112;:165;;;-1:-1:-1;;;;;;;;;;937:40:38;;;2101:37:83;1954:184;1852:293;-1:-1:-1;;1852:293:83:o;631:98:90:-;679:15;;:::i;:::-;-1:-1:-1;706:16:90;;;;;;;;714:1;706:16;;717:1;706:16;;;;-1:-1:-1;706:16:90;;;;;;;;631:98::o;2103:299:54:-;2225:56;2333:62;2349:1;965;;2333:15;:62::i;:::-;2319:76;2103:299;-1:-1:-1;;;2103:299:54:o;1757:307::-;1906:12;1920:24;-1:-1:-1;;;;;;;;;;;;;;;;;;;1920:24:54;2001:56;;-1:-1:-1;;;2001:56:54;;2031:1;2001:56;;;8020:34:92;965:1:54;8070:18:92;;;8063:43;7968:18;;2001:56:54;;;;;;;1099:509;1194:14;1210:42;-1:-1:-1;;;;;;;;;;;;;;;;;;;1210:42:54;1288:106;;-1:-1:-1;;;;;1167:55:92;;1288:106:54;;;1149:74:92;1264:21:54;;1122:18:92;;1288:106:54;;;-1:-1:-1;;1288:106:54;;;;;;;;;;;;;;;;-1:-1:-1;;;1288:106:54;;;;-1:-1:-1;1413:42:54;1288:106;1413:16;2257:14:83;;2184:94;1413:16:54;-1:-1:-1;;;;;1413:32:54;;;:42::i;:::-;1404:51;;1493:14;1505:1;1493:11;:14::i;:::-;1465:42;;1549:52;1465:25;1568:1;1465:25;1549:15;:52::i;:::-;1517:29;;;:84;-1:-1:-1;1099:509:54;;1517:17;;-1:-1:-1;1099:509:54;-1:-1:-1;1099:509:54:o;580:666:52:-;699:56;780:8;-1:-1:-1;;;;;767:21:52;:10;-1:-1:-1;;;;;767:21:52;;763:53;;;797:19;;-1:-1:-1;;;797:19:52;;;;;;;;;;;763:53;879:21;890:10;879:8;:21;:::i;:::-;-1:-1:-1;;;;;837:64:52;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;837:64:52;;-1:-1:-1;;837:64:52;;;;;;;;;;;-1:-1:-1;823:78:52;-1:-1:-1;925:10:52;908:336;941:8;-1:-1:-1;;;;;937:12:52;:1;-1:-1:-1;;;;;937:12:52;;908:336;;;996:241;;;;;;;;1057:2;996:241;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;996:241:52;;;;;;;;;;;;-1:-1:-1;996:241:52;;;;1198:28;996:241;;;;;966:11;978:14;982:10;1088:1;978:14;:::i;:::-;-1:-1:-1;;;;;966:27:52;;;;;;;;;:::i;:::-;;;;;;:271;;;;951:3;;;;;:::i;:::-;;;;908:336;;;;580:666;;;;;:::o;1415:222:85:-;1524:17;1599:6;1614:13;1573:56;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;1529:191:52;1577:24;1633:3;-1:-1:-1;;;;;1619:18:52;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1619:18:52;;1609:28;;1649:9;1644:74;1668:3;-1:-1:-1;;;;;1664:7:52;:1;-1:-1:-1;;;;;1664:7:52;;1644:74;;;1709:1;1688:7;1696:1;-1:-1:-1;;;;;1688:10:52;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1688:23:52;;;:10;;;;;;;;;;;:23;1673:3;;;;:::i;:::-;;;;1644:74;;;;1529:191;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::o;14:286:92:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:92;;209:43;;199:71;;266:1;263;256:12;497:501;673:2;658:18;;662:9;753:6;631:4;787:205;801:4;798:1;795:11;787:205;;;864:13;;879:4;860:24;848:37;;908:4;932:12;;;;967:15;;;;821:1;814:9;787:205;;;791:3;;;497:501;;;;:::o;1234:196::-;1302:20;;-1:-1:-1;;;;;1351:54:92;;1341:65;;1331:93;;1420:1;1417;1410:12;1331:93;1234:196;;;:::o;1435:160::-;1500:5;1545:2;1536:6;1531:3;1527:16;1523:25;1520:45;;;1561:1;1558;1551:12;1600:441;1701:6;1709;1762:2;1750:9;1741:7;1737:23;1733:32;1730:52;;;1778:1;1775;1768:12;1730:52;1801:29;1820:9;1801:29;:::i;:::-;1791:39;;1881:2;1870:9;1866:18;1853:32;1908:18;1900:6;1897:30;1894:50;;;1940:1;1937;1930:12;1894:50;1963:72;2027:7;2018:6;2007:9;2003:22;1963:72;:::i;:::-;1953:82;;;1600:441;;;;;:::o;2046:127::-;2107:10;2102:3;2098:20;2095:1;2088:31;2138:4;2135:1;2128:15;2162:4;2159:1;2152:15;2178:696;2253:10;2294:6;2288:13;2327:1;2323:2;2320:9;2310:140;;2372:10;2367:3;2363:20;2360:1;2353:31;2407:4;2404:1;2397:15;2435:4;2432:1;2425:15;2310:140;2459:15;;-1:-1:-1;2521:4:92;2509:17;;;2503:24;-1:-1:-1;;;;;2620:21:92;;;2604:14;;;2597:45;;;;2696:4;2684:17;;;2678:24;2674:33;;2658:14;;;2651:57;2762:4;2750:17;;;2744:24;2740:33;;;2724:14;;;2717:57;2824:4;2812:17;;;2806:24;2790:14;;;2783:48;2863:4;2854:14;;2178:696::o;2879:730::-;3130:2;3182:21;;;3252:13;;3155:18;;;3274:22;;;3101:4;;3130:2;3353:15;;;;3327:2;3312:18;;;3101:4;3396:187;3410:6;3407:1;3404:13;3396:187;;;3466:69;3531:3;3522:6;3516:13;3466:69;:::i;:::-;3558:15;;;;3459:76;-1:-1:-1;3432:1:92;3425:9;3396:187;;;-1:-1:-1;3600:3:92;;2879:730;-1:-1:-1;;;;;;2879:730:92:o;3614:601::-;3723:6;3731;3739;3792:2;3780:9;3771:7;3767:23;3763:32;3760:52;;;3808:1;3805;3798:12;3760:52;3831:29;3850:9;3831:29;:::i;:::-;3821:39;;3910:2;3899:9;3895:18;3882:32;3954:6;3947:5;3943:18;3936:5;3933:29;3923:57;;3976:1;3973;3966:12;3923:57;3999:5;-1:-1:-1;4055:2:92;4040:18;;4027:32;4082:18;4071:30;;4068:50;;;4114:1;4111;4104:12;4068:50;4137:72;4201:7;4192:6;4181:9;4177:22;4137:72;:::i;:::-;4127:82;;;3614:601;;;;;:::o;4220:422::-;4261:3;4299:5;4293:12;4326:6;4321:3;4314:19;4351:1;4361:162;4375:6;4372:1;4369:13;4361:162;;;4437:4;4493:13;;;4489:22;;4483:29;4465:11;;;4461:20;;4454:59;4390:12;4361:162;;;4365:3;4568:1;4561:4;4552:6;4547:3;4543:16;4539:27;4532:38;4631:4;4624:2;4620:7;4615:2;4607:6;4603:15;4599:29;4594:3;4590:39;4586:50;4579:57;;;4220:422;;;;:::o;4647:1162::-;4780:12;;4746:4;4801:17;;;4867:19;;4737:14;;;4895:20;;;4707:3;;4964:4;;4991:21;;;;4942:2;4933:12;;;4707:3;5040:224;5054:6;5051:1;5048:13;5040:224;;;5121:13;;-1:-1:-1;;;;;5117:62:92;5103:77;;5239:15;;;;5202:14;;;;5076:1;5069:9;5040:224;;;-1:-1:-1;;5301:14:92;;;5295:21;5346:15;;;5332:12;;;5325:37;5414:21;;5444:23;;;5524;;;;-1:-1:-1;5567:1:92;;5485:14;;;5577:205;5593:8;5588:3;5585:17;5577:205;;;5657:73;5724:5;5713:8;5707:15;5657:73;:::i;:::-;5648:82;;5769:2;5759:8;5755:17;5743:29;;5621:1;5616:3;5612:11;5605:18;;5577:205;;;-1:-1:-1;5798:5:92;4647:1162;-1:-1:-1;;;;;;4647:1162:92:o;5814:450::-;6061:2;6050:9;6043:21;6024:4;6087:44;6127:2;6116:9;6112:18;6104:6;6087:44;:::i;:::-;6179:9;6171:6;6167:22;6162:2;6151:9;6147:18;6140:50;6207:51;6251:6;6243;6207:51;:::i;:::-;6199:59;5814:450;-1:-1:-1;;;;;5814:450:92:o;6269:127::-;6330:10;6325:3;6321:20;6318:1;6311:31;6361:4;6358:1;6351:15;6385:4;6382:1;6375:15;6401:995;6478:6;6486;6539:2;6527:9;6518:7;6514:23;6510:32;6507:52;;;6555:1;6552;6545:12;6507:52;6578:29;6597:9;6578:29;:::i;:::-;6568:39;;6658:2;6647:9;6643:18;6630:32;6681:18;6722:2;6714:6;6711:14;6708:34;;;6738:1;6735;6728:12;6708:34;6776:6;6765:9;6761:22;6751:32;;6821:7;6814:4;6810:2;6806:13;6802:27;6792:55;;6843:1;6840;6833:12;6792:55;6879:2;6866:16;6901:2;6897;6894:10;6891:36;;;6907:18;;:::i;:::-;6982:2;6976:9;6950:2;7036:13;;-1:-1:-1;;7032:22:92;;;7056:2;7028:31;7024:40;7012:53;;;7080:18;;;7100:22;;;7077:46;7074:72;;;7126:18;;:::i;:::-;7166:10;7162:2;7155:22;7201:2;7193:6;7186:18;7241:7;7236:2;7231;7227;7223:11;7219:20;7216:33;7213:53;;;7262:1;7259;7252:12;7213:53;7318:2;7313;7309;7305:11;7300:2;7292:6;7288:15;7275:46;7363:1;7358:2;7353;7345:6;7341:15;7337:24;7330:35;7384:6;7374:16;;;;;;;6401:995;;;;;:::o;7401:410::-;-1:-1:-1;;;;;7634:6:92;7630:55;7619:9;7612:74;7722:2;7717;7706:9;7702:18;7695:30;7593:4;7742:63;7801:2;7790:9;7786:18;7778:6;7742:63;:::i;:::-;7734:71;7401:410;-1:-1:-1;;;;7401:410:92:o;8362:127::-;8423:10;8418:3;8414:20;8411:1;8404:31;8454:4;8451:1;8444:15;8478:4;8475:1;8468:15;8494:208;-1:-1:-1;;;;;8638:10:92;;;8626;;;8622:27;;8661:12;;;8658:38;;;8676:18;;:::i;:::-;8658:38;8494:208;;;;:::o;8707:127::-;8768:10;8763:3;8759:20;8756:1;8749:31;8799:4;8796:1;8789:15;8823:4;8820:1;8813:15;8839:234;8878:3;-1:-1:-1;;;;;8983:2:92;8976:5;8972:14;9010:2;9001:7;8998:15;8995:41;;9016:18;;:::i;:::-;9065:1;9052:15;;8839:234;-1:-1:-1;;;8839:234:92:o;9078:337::-;-1:-1:-1;;;;;9257:6:92;9253:55;9242:9;9235:74;9345:2;9340;9329:9;9325:18;9318:30;9216:4;9365:44;9405:2;9394:9;9390:18;9382:6;9365:44;:::i"},"gasEstimates":{"creation":{"codeDepositCost":"916600","executionCost":"infinite","totalCost":"infinite"},"external":{"implementation()":"infinite","prepareInstallation(address,bytes)":"infinite","prepareUninstallation(address,(address,address[],bytes))":"infinite","prepareUpdate(address,uint16,(address,address[],bytes))":"660","protocolVersion()":"infinite","supportsInterface(bytes4)":"482"}},"methodIdentifiers":{"implementation()":"5c60da1b","prepareInstallation(address,bytes)":"f10832f1","prepareUninstallation(address,(address,address[],bytes))":"9cb0a124","prepareUpdate(address,uint16,(address,address[],bytes))":"a8a9c29e","protocolVersion()":"2ae9c600","supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ConflictingValues\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"fromBuild\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"thisBuild\",\"type\":\"uint16\"}],\"name\":\"InvalidUpdatePath\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_dao\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"prepareInstallation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"plugin\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address[]\",\"name\":\"helpers\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"enum PermissionLib.Operation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"condition\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PermissionLib.MultiTargetPermission[]\",\"name\":\"permissions\",\"type\":\"tuple[]\"}],\"internalType\":\"struct IPluginSetup.PreparedSetupData\",\"name\":\"preparedSetupData\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_dao\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"plugin\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"currentHelpers\",\"type\":\"address[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IPluginSetup.SetupPayload\",\"name\":\"_payload\",\"type\":\"tuple\"}],\"name\":\"prepareUninstallation\",\"outputs\":[{\"components\":[{\"internalType\":\"enum PermissionLib.Operation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"condition\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PermissionLib.MultiTargetPermission[]\",\"name\":\"permissions\",\"type\":\"tuple[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_dao\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"_fromBuild\",\"type\":\"uint16\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"plugin\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"currentHelpers\",\"type\":\"address[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IPluginSetup.SetupPayload\",\"name\":\"_payload\",\"type\":\"tuple\"}],\"name\":\"prepareUpdate\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address[]\",\"name\":\"helpers\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"enum PermissionLib.Operation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"condition\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PermissionLib.MultiTargetPermission[]\",\"name\":\"permissions\",\"type\":\"tuple[]\"}],\"internalType\":\"struct IPluginSetup.PreparedSetupData\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"protocolVersion\",\"outputs\":[{\"internalType\":\"uint8[3]\",\"name\":\"\",\"type\":\"uint8[3]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"DO NOT USE IN PRODUCTION!\",\"errors\":{\"InvalidUpdatePath(uint16,uint16)\":[{\"params\":{\"fromBuild\":\"The build number to update from.\",\"thisBuild\":\"The build number of this setup to update to.\"}}]},\"kind\":\"dev\",\"methods\":{\"implementation()\":{\"details\":\"The implementation can be instantiated via the `new` keyword, cloned via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)), or proxied via the UUPS proxy pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\",\"returns\":{\"_0\":\"The address of the plugin implementation contract.\"}},\"prepareInstallation(address,bytes)\":{\"params\":{\"_dao\":\"The address of the installing DAO.\",\"_data\":\"The bytes-encoded data containing the input parameters for the installation as specified in the plugin's build metadata JSON file.\"},\"returns\":{\"plugin\":\"The address of the `Plugin` contract being prepared for installation.\",\"preparedSetupData\":\"The deployed plugin's relevant data which consists of helpers and permissions.\"}},\"prepareUninstallation(address,(address,address[],bytes))\":{\"params\":{\"_dao\":\"The address of the uninstalling DAO.\",\"_payload\":\"The relevant data necessary for the `prepareUninstallation`. See above.\"},\"returns\":{\"permissions\":\"The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the uninstalling DAO.\"}},\"prepareUpdate(address,uint16,(address,address[],bytes))\":{\"details\":\"The default implementation for the initial build 1 that reverts because no earlier build exists.\",\"params\":{\"_dao\":\"The address of the updating DAO.\",\"_fromBuild\":\"The build number of the plugin to update from.\",\"_payload\":\"The relevant data necessary for the `prepareUpdate`. See above.\"},\"returns\":{\"_0\":\"The initialization data to be passed to upgradeable contracts when the update is applied in the `PluginSetupProcessor`.\",\"_1\":\"The deployed plugin's relevant data which consists of helpers and permissions.\"}},\"protocolVersion()\":{\"details\":\"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\",\"returns\":{\"_0\":\"Returns the semantic Aragon OSx protocol version number.\"}},\"supportsInterface(bytes4)\":{\"params\":{\"_interfaceId\":\"The ID of the interface.\"},\"returns\":{\"_0\":\"Returns `true` if the interface is supported.\"}}},\"version\":1},\"userdoc\":{\"errors\":{\"InvalidUpdatePath(uint16,uint16)\":[{\"notice\":\"Thrown when an update path is not available, for example, if this is the initial build.\"}]},\"kind\":\"user\",\"methods\":{\"implementation()\":{\"notice\":\"Returns the plugin implementation address.\"},\"prepareInstallation(address,bytes)\":{\"notice\":\"Prepares the installation of a plugin.\"},\"prepareUninstallation(address,(address,address[],bytes))\":{\"notice\":\"Prepares the uninstallation of a plugin.\"},\"prepareUpdate(address,uint16,(address,address[],bytes))\":{\"notice\":\"Prepares the update of a plugin.\"},\"protocolVersion()\":{\"notice\":\"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Checks if this or the parent contract supports an interface by its ID.\"}},\"notice\":\"A mock plugin setup of an upgradeable plugin to be deployed via the UUPS pattern. v1.1 (Release 1, Build 1)\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/mocks/plugin/PluginUUPSUpgradeableSetupMock.sol\":\"PluginUUPSUpgradeableSetupMockBuild1\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/interfaces/IERC1967Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (interfaces/IERC1967.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\\n *\\n * _Available since v4.8.3._\\n */\\ninterface IERC1967Upgradeable {\\n /**\\n * @dev Emitted when the implementation is upgraded.\\n */\\n event Upgraded(address indexed implementation);\\n\\n /**\\n * @dev Emitted when the admin account has changed.\\n */\\n event AdminChanged(address previousAdmin, address newAdmin);\\n\\n /**\\n * @dev Emitted when the beacon is changed.\\n */\\n event BeaconUpgraded(address indexed beacon);\\n}\\n\",\"keccak256\":\"0x47d6e06872b12e72c79d1b5eb55842f860b5fb1207b2317c2358d2766b950a7b\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822ProxiableUpgradeable {\\n /**\\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n * address.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy.\\n */\\n function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../beacon/IBeaconUpgradeable.sol\\\";\\nimport \\\"../../interfaces/IERC1967Upgradeable.sol\\\";\\nimport \\\"../../interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\nimport \\\"../../utils/StorageSlotUpgradeable.sol\\\";\\nimport {Initializable} from \\\"../utils/Initializable.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n */\\nabstract contract ERC1967UpgradeUpgradeable is Initializable, IERC1967Upgradeable {\\n // This is the keccak-256 hash of \\\"eip1967.proxy.rollback\\\" subtracted by 1\\n bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n /**\\n * @dev Storage slot with the address of the current implementation.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n function __ERC1967Upgrade_init() internal onlyInitializing {\\n }\\n\\n function __ERC1967Upgrade_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _getImplementation() internal view returns (address) {\\n return StorageSlotUpgradeable.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 implementation slot.\\n */\\n function _setImplementation(address newImplementation) private {\\n require(AddressUpgradeable.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n StorageSlotUpgradeable.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n }\\n\\n /**\\n * @dev Perform implementation upgrade\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeTo(address newImplementation) internal {\\n _setImplementation(newImplementation);\\n emit Upgraded(newImplementation);\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCall(address newImplementation, bytes memory data, bool forceCall) internal {\\n _upgradeTo(newImplementation);\\n if (data.length > 0 || forceCall) {\\n AddressUpgradeable.functionDelegateCall(newImplementation, data);\\n }\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCallUUPS(address newImplementation, bytes memory data, bool forceCall) internal {\\n // Upgrades from old implementations will perform a rollback test. This test requires the new\\n // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n // this special case will break upgrade paths from old UUPS implementation to new ones.\\n if (StorageSlotUpgradeable.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n _setImplementation(newImplementation);\\n } else {\\n try IERC1822ProxiableUpgradeable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n require(slot == _IMPLEMENTATION_SLOT, \\\"ERC1967Upgrade: unsupported proxiableUUID\\\");\\n } catch {\\n revert(\\\"ERC1967Upgrade: new implementation is not UUPS\\\");\\n }\\n _upgradeToAndCall(newImplementation, data, forceCall);\\n }\\n }\\n\\n /**\\n * @dev Storage slot with the admin of the contract.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _getAdmin() internal view returns (address) {\\n return StorageSlotUpgradeable.getAddressSlot(_ADMIN_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 admin slot.\\n */\\n function _setAdmin(address newAdmin) private {\\n require(newAdmin != address(0), \\\"ERC1967: new admin is the zero address\\\");\\n StorageSlotUpgradeable.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n */\\n function _changeAdmin(address newAdmin) internal {\\n emit AdminChanged(_getAdmin(), newAdmin);\\n _setAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\\n */\\n bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n /**\\n * @dev Returns the current beacon.\\n */\\n function _getBeacon() internal view returns (address) {\\n return StorageSlotUpgradeable.getAddressSlot(_BEACON_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new beacon in the EIP1967 beacon slot.\\n */\\n function _setBeacon(address newBeacon) private {\\n require(AddressUpgradeable.isContract(newBeacon), \\\"ERC1967: new beacon is not a contract\\\");\\n require(\\n AddressUpgradeable.isContract(IBeaconUpgradeable(newBeacon).implementation()),\\n \\\"ERC1967: beacon implementation is not a contract\\\"\\n );\\n StorageSlotUpgradeable.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n }\\n\\n /**\\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n *\\n * Emits a {BeaconUpgraded} event.\\n */\\n function _upgradeBeaconToAndCall(address newBeacon, bytes memory data, bool forceCall) internal {\\n _setBeacon(newBeacon);\\n emit BeaconUpgraded(newBeacon);\\n if (data.length > 0 || forceCall) {\\n AddressUpgradeable.functionDelegateCall(IBeaconUpgradeable(newBeacon).implementation(), data);\\n }\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x7795808e3899c805254e3ae58074b20f799b466e3f43e057e47bedee5fb771f8\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeaconUpgradeable {\\n /**\\n * @dev Must return an address that can be used as a delegate call target.\\n *\\n * {BeaconProxy} will check that this address is a contract.\\n */\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/UUPSUpgradeable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport \\\"../ERC1967/ERC1967UpgradeUpgradeable.sol\\\";\\nimport {Initializable} from \\\"./Initializable.sol\\\";\\n\\n/**\\n * @dev An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an\\n * {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy.\\n *\\n * A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is\\n * reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing\\n * `UUPSUpgradeable` with a custom implementation of upgrades.\\n *\\n * The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism.\\n *\\n * _Available since v4.1._\\n */\\nabstract contract UUPSUpgradeable is Initializable, IERC1822ProxiableUpgradeable, ERC1967UpgradeUpgradeable {\\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable state-variable-assignment\\n address private immutable __self = address(this);\\n\\n /**\\n * @dev Check that the execution is being performed through a delegatecall call and that the execution context is\\n * a proxy contract with an implementation (as defined in ERC1967) pointing to self. This should only be the case\\n * for UUPS and transparent proxies that are using the current contract as their implementation. Execution of a\\n * function through ERC1167 minimal proxies (clones) would not normally pass this test, but is not guaranteed to\\n * fail.\\n */\\n modifier onlyProxy() {\\n require(address(this) != __self, \\\"Function must be called through delegatecall\\\");\\n require(_getImplementation() == __self, \\\"Function must be called through active proxy\\\");\\n _;\\n }\\n\\n /**\\n * @dev Check that the execution is not being performed through a delegate call. This allows a function to be\\n * callable on the implementing contract but not through proxies.\\n */\\n modifier notDelegated() {\\n require(address(this) == __self, \\\"UUPSUpgradeable: must not be called through delegatecall\\\");\\n _;\\n }\\n\\n function __UUPSUpgradeable_init() internal onlyInitializing {\\n }\\n\\n function __UUPSUpgradeable_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the\\n * implementation. It is used to validate the implementation's compatibility when performing an upgrade.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\\n */\\n function proxiableUUID() external view virtual override notDelegated returns (bytes32) {\\n return _IMPLEMENTATION_SLOT;\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy to `newImplementation`.\\n *\\n * Calls {_authorizeUpgrade}.\\n *\\n * Emits an {Upgraded} event.\\n *\\n * @custom:oz-upgrades-unsafe-allow-reachable delegatecall\\n */\\n function upgradeTo(address newImplementation) public virtual onlyProxy {\\n _authorizeUpgrade(newImplementation);\\n _upgradeToAndCallUUPS(newImplementation, new bytes(0), false);\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call\\n * encoded in `data`.\\n *\\n * Calls {_authorizeUpgrade}.\\n *\\n * Emits an {Upgraded} event.\\n *\\n * @custom:oz-upgrades-unsafe-allow-reachable delegatecall\\n */\\n function upgradeToAndCall(address newImplementation, bytes memory data) public payable virtual onlyProxy {\\n _authorizeUpgrade(newImplementation);\\n _upgradeToAndCallUUPS(newImplementation, data, true);\\n }\\n\\n /**\\n * @dev Function that should revert when `msg.sender` is not authorized to upgrade the contract. Called by\\n * {upgradeTo} and {upgradeToAndCall}.\\n *\\n * Normally, this function will use an xref:access.adoc[access control] modifier such as {Ownable-onlyOwner}.\\n *\\n * ```solidity\\n * function _authorizeUpgrade(address) internal override onlyOwner {}\\n * ```\\n */\\n function _authorizeUpgrade(address newImplementation) internal virtual;\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0xefb41f5c1a00249b7a99f0782f8c557865605426a3fb6e5fe9ae334293ae4f33\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n function __Context_init() internal onlyInitializing {\\n }\\n\\n function __Context_init_unchained() internal onlyInitializing {\\n }\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n function _contextSuffixLength() internal view virtual returns (uint256) {\\n return 0;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x75097e35253e7fb282ee4d7f27a80eaacfa759923185bf17302a89cbc059c5ef\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/StorageSlot.sol)\\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```solidity\\n * contract ERC1967 {\\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n * function _getImplementation() internal view returns (address) {\\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n * }\\n *\\n * function _setImplementation(address newImplementation) internal {\\n * require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n * }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._\\n * _Available since v4.9 for `string`, `bytes`._\\n */\\nlibrary StorageSlotUpgradeable {\\n struct AddressSlot {\\n address value;\\n }\\n\\n struct BooleanSlot {\\n bool value;\\n }\\n\\n struct Bytes32Slot {\\n bytes32 value;\\n }\\n\\n struct Uint256Slot {\\n uint256 value;\\n }\\n\\n struct StringSlot {\\n string value;\\n }\\n\\n struct BytesSlot {\\n bytes value;\\n }\\n\\n /**\\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n */\\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n */\\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n */\\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n */\\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` with member `value` located at `slot`.\\n */\\n function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\\n */\\n function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` with member `value` located at `slot`.\\n */\\n function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\\n */\\n function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n}\\n\",\"keccak256\":\"0x07ac95acad040f1fb1f6120dd0aa5f702db69446e95f82613721879d30de0908\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165Upgradeable.sol\\\";\\nimport {Initializable} from \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165Upgradeable is Initializable, IERC165Upgradeable {\\n function __ERC165_init() internal onlyInitializing {\\n }\\n\\n function __ERC165_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165Upgradeable).interfaceId;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0xd90d7723512df65ae417adaf0801042940f0dabd60039ceeaffe34aa5b238da1\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165Upgradeable {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/IERC1967.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (interfaces/IERC1967.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\\n *\\n * _Available since v4.8.3._\\n */\\ninterface IERC1967 {\\n /**\\n * @dev Emitted when the implementation is upgraded.\\n */\\n event Upgraded(address indexed implementation);\\n\\n /**\\n * @dev Emitted when the admin account has changed.\\n */\\n event AdminChanged(address previousAdmin, address newAdmin);\\n\\n /**\\n * @dev Emitted when the beacon is changed.\\n */\\n event BeaconUpgraded(address indexed beacon);\\n}\\n\",\"keccak256\":\"0x3cbef5ebc24b415252e2f8c0c9254555d30d9f085603b4b80d9b5ed20ab87e90\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822Proxiable {\\n /**\\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n * address.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy.\\n */\\n function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/Clones.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/Clones.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev https://eips.ethereum.org/EIPS/eip-1167[EIP 1167] is a standard for\\n * deploying minimal proxy contracts, also known as \\\"clones\\\".\\n *\\n * > To simply and cheaply clone contract functionality in an immutable way, this standard specifies\\n * > a minimal bytecode implementation that delegates all calls to a known, fixed address.\\n *\\n * The library includes functions to deploy a proxy using either `create` (traditional deployment) or `create2`\\n * (salted deterministic deployment). It also includes functions to predict the addresses of clones deployed using the\\n * deterministic method.\\n *\\n * _Available since v3.4._\\n */\\nlibrary Clones {\\n /**\\n * @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`.\\n *\\n * This function uses the create opcode, which should never revert.\\n */\\n function clone(address implementation) internal returns (address instance) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n // Cleans the upper 96 bits of the `implementation` word, then packs the first 3 bytes\\n // of the `implementation` address with the bytecode before the address.\\n mstore(0x00, or(shr(0xe8, shl(0x60, implementation)), 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000))\\n // Packs the remaining 17 bytes of `implementation` with the bytecode after the address.\\n mstore(0x20, or(shl(0x78, implementation), 0x5af43d82803e903d91602b57fd5bf3))\\n instance := create(0, 0x09, 0x37)\\n }\\n require(instance != address(0), \\\"ERC1167: create failed\\\");\\n }\\n\\n /**\\n * @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`.\\n *\\n * This function uses the create2 opcode and a `salt` to deterministically deploy\\n * the clone. Using the same `implementation` and `salt` multiple time will revert, since\\n * the clones cannot be deployed twice at the same address.\\n */\\n function cloneDeterministic(address implementation, bytes32 salt) internal returns (address instance) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n // Cleans the upper 96 bits of the `implementation` word, then packs the first 3 bytes\\n // of the `implementation` address with the bytecode before the address.\\n mstore(0x00, or(shr(0xe8, shl(0x60, implementation)), 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000))\\n // Packs the remaining 17 bytes of `implementation` with the bytecode after the address.\\n mstore(0x20, or(shl(0x78, implementation), 0x5af43d82803e903d91602b57fd5bf3))\\n instance := create2(0, 0x09, 0x37, salt)\\n }\\n require(instance != address(0), \\\"ERC1167: create2 failed\\\");\\n }\\n\\n /**\\n * @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}.\\n */\\n function predictDeterministicAddress(\\n address implementation,\\n bytes32 salt,\\n address deployer\\n ) internal pure returns (address predicted) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n let ptr := mload(0x40)\\n mstore(add(ptr, 0x38), deployer)\\n mstore(add(ptr, 0x24), 0x5af43d82803e903d91602b57fd5bf3ff)\\n mstore(add(ptr, 0x14), implementation)\\n mstore(ptr, 0x3d602d80600a3d3981f3363d3d373d3d3d363d73)\\n mstore(add(ptr, 0x58), salt)\\n mstore(add(ptr, 0x78), keccak256(add(ptr, 0x0c), 0x37))\\n predicted := keccak256(add(ptr, 0x43), 0x55)\\n }\\n }\\n\\n /**\\n * @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}.\\n */\\n function predictDeterministicAddress(\\n address implementation,\\n bytes32 salt\\n ) internal view returns (address predicted) {\\n return predictDeterministicAddress(implementation, salt, address(this));\\n }\\n}\\n\",\"keccak256\":\"0x01f055f5c26ba25d7f83e9aa9ba877fbea4d0bf22227de046ea67494bc932999\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (proxy/ERC1967/ERC1967Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../Proxy.sol\\\";\\nimport \\\"./ERC1967Upgrade.sol\\\";\\n\\n/**\\n * @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an\\n * implementation address that can be changed. This address is stored in storage in the location specified by\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the\\n * implementation behind the proxy.\\n */\\ncontract ERC1967Proxy is Proxy, ERC1967Upgrade {\\n /**\\n * @dev Initializes the upgradeable proxy with an initial implementation specified by `_logic`.\\n *\\n * If `_data` is nonempty, it's used as data in a delegate call to `_logic`. This will typically be an encoded\\n * function call, and allows initializing the storage of the proxy like a Solidity constructor.\\n */\\n constructor(address _logic, bytes memory _data) payable {\\n _upgradeToAndCall(_logic, _data, false);\\n }\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _implementation() internal view virtual override returns (address impl) {\\n return ERC1967Upgrade._getImplementation();\\n }\\n}\\n\",\"keccak256\":\"0xa2b22da3032e50b55f95ec1d13336102d675f341167aa76db571ef7f8bb7975d\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../beacon/IBeacon.sol\\\";\\nimport \\\"../../interfaces/IERC1967.sol\\\";\\nimport \\\"../../interfaces/draft-IERC1822.sol\\\";\\nimport \\\"../../utils/Address.sol\\\";\\nimport \\\"../../utils/StorageSlot.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n */\\nabstract contract ERC1967Upgrade is IERC1967 {\\n // This is the keccak-256 hash of \\\"eip1967.proxy.rollback\\\" subtracted by 1\\n bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n /**\\n * @dev Storage slot with the address of the current implementation.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _getImplementation() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 implementation slot.\\n */\\n function _setImplementation(address newImplementation) private {\\n require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n }\\n\\n /**\\n * @dev Perform implementation upgrade\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeTo(address newImplementation) internal {\\n _setImplementation(newImplementation);\\n emit Upgraded(newImplementation);\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCall(address newImplementation, bytes memory data, bool forceCall) internal {\\n _upgradeTo(newImplementation);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(newImplementation, data);\\n }\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCallUUPS(address newImplementation, bytes memory data, bool forceCall) internal {\\n // Upgrades from old implementations will perform a rollback test. This test requires the new\\n // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n // this special case will break upgrade paths from old UUPS implementation to new ones.\\n if (StorageSlot.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n _setImplementation(newImplementation);\\n } else {\\n try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n require(slot == _IMPLEMENTATION_SLOT, \\\"ERC1967Upgrade: unsupported proxiableUUID\\\");\\n } catch {\\n revert(\\\"ERC1967Upgrade: new implementation is not UUPS\\\");\\n }\\n _upgradeToAndCall(newImplementation, data, forceCall);\\n }\\n }\\n\\n /**\\n * @dev Storage slot with the admin of the contract.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _getAdmin() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_ADMIN_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 admin slot.\\n */\\n function _setAdmin(address newAdmin) private {\\n require(newAdmin != address(0), \\\"ERC1967: new admin is the zero address\\\");\\n StorageSlot.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n */\\n function _changeAdmin(address newAdmin) internal {\\n emit AdminChanged(_getAdmin(), newAdmin);\\n _setAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\\n */\\n bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n /**\\n * @dev Returns the current beacon.\\n */\\n function _getBeacon() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_BEACON_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new beacon in the EIP1967 beacon slot.\\n */\\n function _setBeacon(address newBeacon) private {\\n require(Address.isContract(newBeacon), \\\"ERC1967: new beacon is not a contract\\\");\\n require(\\n Address.isContract(IBeacon(newBeacon).implementation()),\\n \\\"ERC1967: beacon implementation is not a contract\\\"\\n );\\n StorageSlot.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n }\\n\\n /**\\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n *\\n * Emits a {BeaconUpgraded} event.\\n */\\n function _upgradeBeaconToAndCall(address newBeacon, bytes memory data, bool forceCall) internal {\\n _setBeacon(newBeacon);\\n emit BeaconUpgraded(newBeacon);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x3b21ae06bf5957f73fa16754b0669c77b7abd8ba6c072d35c3281d446fdb86c2\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (proxy/Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\\n * be specified by overriding the virtual {_implementation} function.\\n *\\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\\n * different contract through the {_delegate} function.\\n *\\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\\n */\\nabstract contract Proxy {\\n /**\\n * @dev Delegates the current call to `implementation`.\\n *\\n * This function does not return to its internal call site, it will return directly to the external caller.\\n */\\n function _delegate(address implementation) internal virtual {\\n assembly {\\n // Copy msg.data. We take full control of memory in this inline assembly\\n // block because it will not return to Solidity code. We overwrite the\\n // Solidity scratch pad at memory position 0.\\n calldatacopy(0, 0, calldatasize())\\n\\n // Call the implementation.\\n // out and outsize are 0 because we don't know the size yet.\\n let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)\\n\\n // Copy the returned data.\\n returndatacopy(0, 0, returndatasize())\\n\\n switch result\\n // delegatecall returns 0 on error.\\n case 0 {\\n revert(0, returndatasize())\\n }\\n default {\\n return(0, returndatasize())\\n }\\n }\\n }\\n\\n /**\\n * @dev This is a virtual function that should be overridden so it returns the address to which the fallback function\\n * and {_fallback} should delegate.\\n */\\n function _implementation() internal view virtual returns (address);\\n\\n /**\\n * @dev Delegates the current call to the address returned by `_implementation()`.\\n *\\n * This function does not return to its internal call site, it will return directly to the external caller.\\n */\\n function _fallback() internal virtual {\\n _beforeFallback();\\n _delegate(_implementation());\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\\n * function in the contract matches the call data.\\n */\\n fallback() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data\\n * is empty.\\n */\\n receive() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`\\n * call, or as part of the Solidity `fallback` or `receive` functions.\\n *\\n * If overridden should call `super._beforeFallback()`.\\n */\\n function _beforeFallback() internal virtual {}\\n}\\n\",\"keccak256\":\"0xc130fe33f1b2132158531a87734153293f6d07bc263ff4ac90e85da9c82c0e27\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeacon {\\n /**\\n * @dev Must return an address that can be used as a delegate call target.\\n *\\n * {BeaconProxy} will check that this address is a contract.\\n */\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/StorageSlot.sol)\\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```solidity\\n * contract ERC1967 {\\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n * function _getImplementation() internal view returns (address) {\\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n * }\\n *\\n * function _setImplementation(address newImplementation) internal {\\n * require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n * }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._\\n * _Available since v4.9 for `string`, `bytes`._\\n */\\nlibrary StorageSlot {\\n struct AddressSlot {\\n address value;\\n }\\n\\n struct BooleanSlot {\\n bool value;\\n }\\n\\n struct Bytes32Slot {\\n bytes32 value;\\n }\\n\\n struct Uint256Slot {\\n uint256 value;\\n }\\n\\n struct StringSlot {\\n string value;\\n }\\n\\n struct BytesSlot {\\n bytes value;\\n }\\n\\n /**\\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n */\\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n */\\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n */\\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n */\\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` with member `value` located at `slot`.\\n */\\n function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\\n */\\n function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` with member `value` located at `slot`.\\n */\\n function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\\n */\\n function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n}\\n\",\"keccak256\":\"0xf09e68aa0dc6722a25bc46490e8d48ed864466d17313b8a0b254c36b54e49899\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165 is IERC165 {\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165).interfaceId;\\n }\\n}\\n\",\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"src/dao/IDAO.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IDAO\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for DAOs within the Aragon App DAO framework.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IDAO {\\n /// @notice The action struct to be consumed by the DAO's `execute` function resulting in an external call.\\n /// @param to The address to call.\\n /// @param value The native token value to be sent with the call.\\n /// @param data The bytes-encoded function selector and calldata for the call.\\n struct Action {\\n address to;\\n uint256 value;\\n bytes data;\\n }\\n\\n /// @notice Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\\n /// @param _where The address of the contract.\\n /// @param _who The address of a EOA or contract to give the permissions.\\n /// @param _permissionId The permission identifier.\\n /// @param _data The optional data passed to the `PermissionCondition` registered.\\n /// @return Returns true if the address has permission, false if not.\\n function hasPermission(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes memory _data\\n ) external view returns (bool);\\n\\n /// @notice Updates the DAO metadata (e.g., an IPFS hash).\\n /// @param _metadata The IPFS hash of the new metadata object.\\n function setMetadata(bytes calldata _metadata) external;\\n\\n /// @notice Emitted when the DAO metadata is updated.\\n /// @param metadata The IPFS hash of the new metadata object.\\n event MetadataSet(bytes metadata);\\n\\n /// @notice Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted.\\n /// @param _callId The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce.\\n /// @param _actions The array of actions.\\n /// @param _allowFailureMap A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @return The array of results obtained from the executed actions in `bytes`.\\n /// @return The resulting failure map containing the actions have actually failed.\\n function execute(\\n bytes32 _callId,\\n Action[] memory _actions,\\n uint256 _allowFailureMap\\n ) external returns (bytes[] memory, uint256);\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param actor The address of the caller.\\n /// @param callId The ID of the call.\\n /// @param actions The array of actions executed.\\n /// @param allowFailureMap The allow failure map encoding which actions are allowed to fail.\\n /// @param failureMap The failure map encoding which actions have failed.\\n /// @param execResults The array with the results of the executed actions.\\n /// @dev The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce.\\n event Executed(\\n address indexed actor,\\n bytes32 callId,\\n Action[] actions,\\n uint256 allowFailureMap,\\n uint256 failureMap,\\n bytes[] execResults\\n );\\n\\n /// @notice Emitted when a standard callback is registered.\\n /// @param interfaceId The ID of the interface.\\n /// @param callbackSelector The selector of the callback function.\\n /// @param magicNumber The magic number to be registered for the callback function selector.\\n event StandardCallbackRegistered(\\n bytes4 interfaceId,\\n bytes4 callbackSelector,\\n bytes4 magicNumber\\n );\\n\\n /// @notice Deposits (native) tokens to the DAO contract with a reference string.\\n /// @param _token The address of the token or address(0) in case of the native token.\\n /// @param _amount The amount of tokens to deposit.\\n /// @param _reference The reference describing the deposit reason.\\n function deposit(address _token, uint256 _amount, string calldata _reference) external payable;\\n\\n /// @notice Emitted when a token deposit has been made to the DAO.\\n /// @param sender The address of the sender.\\n /// @param token The address of the deposited token.\\n /// @param amount The amount of tokens deposited.\\n /// @param _reference The reference describing the deposit reason.\\n event Deposited(\\n address indexed sender,\\n address indexed token,\\n uint256 amount,\\n string _reference\\n );\\n\\n /// @notice Emitted when a native token deposit has been made to the DAO.\\n /// @dev This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).\\n /// @param sender The address of the sender.\\n /// @param amount The amount of native tokens deposited.\\n event NativeTokenDeposited(address sender, uint256 amount);\\n\\n /// @notice Setter for the trusted forwarder verifying the meta transaction.\\n /// @param _trustedForwarder The trusted forwarder address.\\n function setTrustedForwarder(address _trustedForwarder) external;\\n\\n /// @notice Getter for the trusted forwarder verifying the meta transaction.\\n /// @return The trusted forwarder address.\\n function getTrustedForwarder() external view returns (address);\\n\\n /// @notice Emitted when a new TrustedForwarder is set on the DAO.\\n /// @param forwarder the new forwarder address.\\n event TrustedForwarderSet(address forwarder);\\n\\n /// @notice Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\\n /// @param _hash The hash of the data to be signed.\\n /// @param _signature The signature byte array associated with `_hash`.\\n /// @return Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not.\\n function isValidSignature(bytes32 _hash, bytes memory _signature) external returns (bytes4);\\n\\n /// @notice Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\\n /// @param _interfaceId The ID of the interface.\\n /// @param _callbackSelector The selector of the callback function.\\n /// @param _magicNumber The magic number to be registered for the function signature.\\n function registerStandardCallback(\\n bytes4 _interfaceId,\\n bytes4 _callbackSelector,\\n bytes4 _magicNumber\\n ) external;\\n\\n /// @notice Removed function being left here to not corrupt the IDAO interface ID. Any call will revert.\\n /// @dev Introduced in v1.0.0. Removed in v1.4.0.\\n function setSignatureValidator(address) external;\\n}\\n\",\"keccak256\":\"0xb7f615523c26de042edce98731c658f44a1edb2464387ac1b642c4c69f57128e\",\"license\":\"AGPL-3.0-or-later\"},\"src/mocks/plugin/PluginSetupMockData.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {PermissionLib} from \\\"../../permission/PermissionLib.sol\\\";\\n\\naddress constant NO_CONDITION = address(0);\\n\\nerror ConflictingValues();\\n\\n/// @notice Creates a mock `MultiTargetPermission` array by converting a range of `uint160` values into `address` values.\\n/// @param rangeStart The start of the range.\\n/// @param rangeEnd The end of the range (that is not included).\\n/// @param op The permission operation type.\\n/// @return permissions The mock array of permissions.\\n/// @dev DO NOT USE IN PRODUCTION!\\nfunction mockPermissions(\\n uint160 rangeStart,\\n uint160 rangeEnd,\\n PermissionLib.Operation op\\n) pure returns (PermissionLib.MultiTargetPermission[] memory permissions) {\\n if (rangeStart > rangeEnd) revert ConflictingValues();\\n\\n permissions = new PermissionLib.MultiTargetPermission[](rangeEnd - rangeStart);\\n\\n for (uint160 i = rangeStart; i < rangeEnd; i++) {\\n permissions[i - rangeStart] = PermissionLib.MultiTargetPermission({\\n operation: op,\\n where: address(i),\\n who: address(i),\\n condition: PermissionLib.NO_CONDITION,\\n permissionId: keccak256(\\\"MOCK_PERMISSION\\\")\\n });\\n }\\n}\\n\\n/// @notice Creates a mock array of helper addresses of specified length by converting `uint160` values starting from 0 into `address` values.\\n/// @param len The length of the helper array.\\n/// @return helpers The mock array of helper addresses.\\n/// @dev DO NOT USE IN PRODUCTION!\\nfunction mockHelpers(uint160 len) pure returns (address[] memory helpers) {\\n helpers = new address[](len);\\n\\n for (uint160 i = 0; i < len; i++) {\\n helpers[i] = address(i);\\n }\\n}\\n\",\"keccak256\":\"0x529d1b7ea4c348fe18edf81a044792ca8aa1f6ad9a7d2edfd35e38bf8372abf9\",\"license\":\"AGPL-3.0-or-later\"},\"src/mocks/plugin/PluginUUPSUpgradeableMock.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\n/* solhint-disable one-contract-per-file */\\npragma solidity ^0.8.8;\\n\\nimport {PluginUUPSUpgradeable} from \\\"../../plugin/PluginUUPSUpgradeable.sol\\\";\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice A mock upgradeable plugin to be deployed via the UUPS proxy pattern.\\n/// v1.1 (Release 1, Build 1)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableMockBuild1 is PluginUUPSUpgradeable {\\n uint256 public state1;\\n\\n function initialize(IDAO _dao) external initializer {\\n __PluginUUPSUpgradeable_init(_dao);\\n state1 = 1;\\n }\\n}\\n\\n/// @notice A mock upgradeable plugin to be deployed via the UUPS proxy pattern.\\n/// v1.1 (Release 1, Build 2)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableMockBuild2 is PluginUUPSUpgradeable {\\n uint256 public state1;\\n uint256 public state2;\\n\\n function initialize(IDAO _dao) external reinitializer(2) {\\n __PluginUUPSUpgradeable_init(_dao);\\n state1 = 1;\\n state2 = 2;\\n }\\n\\n function initializeFrom(uint16 _previousBuild) external reinitializer(2) {\\n if (_previousBuild < 2) {\\n state2 = 2;\\n }\\n }\\n}\\n\\n/// @notice A mock upgradeable plugin to be deployed via the UUPS proxy pattern.\\n/// v1.1 (Release 1, Build 3)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableMockBuild3 is PluginUUPSUpgradeable {\\n uint256 public state1;\\n uint256 public state2;\\n uint256 public state3;\\n\\n function initialize(IDAO _dao) external reinitializer(3) {\\n __PluginUUPSUpgradeable_init(_dao);\\n state1 = 1;\\n state2 = 2;\\n state3 = 3;\\n }\\n\\n function initializeFrom(uint16 _previousBuild) external reinitializer(3) {\\n if (_previousBuild < 2) {\\n state2 = 2;\\n }\\n if (_previousBuild < 3) {\\n state3 = 3;\\n }\\n }\\n}\\n\\n/// @notice A mock upgradeable plugin missing an initializer function.\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableMockBad is PluginUUPSUpgradeable {\\n uint256 public state1;\\n\\n function notAnInitializer(IDAO _dao) external {\\n __PluginUUPSUpgradeable_init(_dao);\\n state1 = 1;\\n }\\n}\\n\",\"keccak256\":\"0x2917df3b1da0de27f58cf531afeaa4e6c4285717247cbdd9ecc7880ae5cb9cb0\",\"license\":\"AGPL-3.0-or-later\"},\"src/mocks/plugin/PluginUUPSUpgradeableSetupMock.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\n/* solhint-disable one-contract-per-file */\\npragma solidity ^0.8.8;\\n\\nimport {PermissionLib} from \\\"../../permission/PermissionLib.sol\\\";\\nimport {IPluginSetup} from \\\"../../plugin/setup/IPluginSetup.sol\\\";\\nimport {PluginUpgradeableSetup} from \\\"../../plugin/setup/PluginUpgradeableSetup.sol\\\";\\nimport {ProxyLib} from \\\"../../utils/deployment/ProxyLib.sol\\\";\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\nimport {mockPermissions, mockHelpers} from \\\"./PluginSetupMockData.sol\\\";\\nimport {PluginUUPSUpgradeableMockBuild1, PluginUUPSUpgradeableMockBuild2, PluginUUPSUpgradeableMockBuild3} from \\\"./PluginUUPSUpgradeableMock.sol\\\";\\n\\n/// @notice A mock plugin setup of an upgradeable plugin to be deployed via the UUPS pattern.\\n/// v1.1 (Release 1, Build 1)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableSetupMockBuild1 is PluginUpgradeableSetup {\\n using ProxyLib for address;\\n\\n uint16 internal constant THIS_BUILD = 1;\\n\\n constructor() PluginUpgradeableSetup(address(new PluginUUPSUpgradeableMockBuild1())) {}\\n\\n /// @inheritdoc IPluginSetup\\n function prepareInstallation(\\n address _dao,\\n bytes memory\\n ) public returns (address plugin, PreparedSetupData memory preparedSetupData) {\\n bytes memory initData = abi.encodeCall(\\n PluginUUPSUpgradeableMockBuild1.initialize,\\n (IDAO(_dao))\\n );\\n plugin = implementation().deployUUPSProxy(initData);\\n preparedSetupData.helpers = mockHelpers(1);\\n preparedSetupData.permissions = mockPermissions(0, 1, PermissionLib.Operation.Grant);\\n }\\n\\n /// @inheritdoc IPluginSetup\\n /// @dev The default implementation for the initial build 1 that reverts because no earlier build exists.\\n function prepareUpdate(\\n address _dao,\\n uint16 _fromBuild,\\n SetupPayload calldata _payload\\n ) external pure virtual returns (bytes memory, PreparedSetupData memory) {\\n (_dao, _fromBuild, _payload);\\n revert InvalidUpdatePath({fromBuild: 0, thisBuild: THIS_BUILD});\\n }\\n\\n /// @inheritdoc IPluginSetup\\n function prepareUninstallation(\\n address _dao,\\n SetupPayload calldata _payload\\n ) external pure returns (PermissionLib.MultiTargetPermission[] memory permissions) {\\n (_dao, _payload);\\n permissions = mockPermissions(0, THIS_BUILD, PermissionLib.Operation.Revoke);\\n }\\n}\\n\\n/// @notice A mock plugin setup of an upgradeable plugin to be deployed via the UUPS pattern.\\n/// v1.2 (Release 1, Build 2)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableSetupMockBuild2 is PluginUpgradeableSetup {\\n using ProxyLib for address;\\n\\n uint16 internal constant THIS_BUILD = 2;\\n\\n constructor() PluginUpgradeableSetup(address(new PluginUUPSUpgradeableMockBuild2())) {}\\n\\n /// @inheritdoc IPluginSetup\\n function prepareInstallation(\\n address _dao,\\n bytes memory\\n ) external returns (address plugin, PreparedSetupData memory preparedSetupData) {\\n bytes memory initData = abi.encodeCall(\\n PluginUUPSUpgradeableMockBuild2.initialize,\\n (IDAO(_dao))\\n );\\n plugin = implementation().deployUUPSProxy(initData);\\n preparedSetupData.helpers = mockHelpers(THIS_BUILD);\\n preparedSetupData.permissions = mockPermissions(\\n 0,\\n THIS_BUILD,\\n PermissionLib.Operation.Grant\\n );\\n }\\n\\n /// @inheritdoc IPluginSetup\\n function prepareUpdate(\\n address _dao,\\n uint16 _fromBuild,\\n SetupPayload calldata _payload\\n )\\n external\\n pure\\n override\\n returns (bytes memory initData, PreparedSetupData memory preparedSetupData)\\n {\\n (_dao, _payload);\\n\\n // Update from Build 1\\n if (_fromBuild == 1) {\\n preparedSetupData.helpers = mockHelpers(THIS_BUILD);\\n initData = abi.encodeCall(PluginUUPSUpgradeableMockBuild2.initializeFrom, (_fromBuild));\\n preparedSetupData.permissions = mockPermissions(\\n _fromBuild,\\n THIS_BUILD,\\n PermissionLib.Operation.Grant\\n );\\n }\\n }\\n\\n /// @inheritdoc IPluginSetup\\n function prepareUninstallation(\\n address _dao,\\n SetupPayload calldata _payload\\n ) external pure returns (PermissionLib.MultiTargetPermission[] memory permissions) {\\n (_dao, _payload);\\n permissions = mockPermissions(0, THIS_BUILD, PermissionLib.Operation.Revoke);\\n }\\n}\\n\\n/// @notice A mock plugin setup of an upgradeable plugin to be deployed via the UUPS pattern.\\n/// v1.3 (Release 1, Build 3)\\ncontract PluginUUPSUpgradeableSetupMockBuild3 is PluginUpgradeableSetup {\\n using ProxyLib for address;\\n\\n uint16 internal constant THIS_BUILD = 3;\\n\\n constructor() PluginUpgradeableSetup(address(new PluginUUPSUpgradeableMockBuild3())) {}\\n\\n /// @inheritdoc IPluginSetup\\n function prepareInstallation(\\n address _dao,\\n bytes memory\\n ) external returns (address plugin, PreparedSetupData memory preparedSetupData) {\\n bytes memory initData = abi.encodeCall(\\n PluginUUPSUpgradeableMockBuild3.initialize,\\n (IDAO(_dao))\\n );\\n plugin = implementation().deployUUPSProxy(initData);\\n preparedSetupData.helpers = mockHelpers(THIS_BUILD);\\n preparedSetupData.permissions = mockPermissions(\\n 0,\\n THIS_BUILD,\\n PermissionLib.Operation.Grant\\n );\\n }\\n\\n /// @inheritdoc IPluginSetup\\n function prepareUpdate(\\n address _dao,\\n uint16 _fromBuild,\\n SetupPayload calldata _payload\\n )\\n external\\n pure\\n override\\n returns (bytes memory initData, PreparedSetupData memory preparedSetupData)\\n {\\n (_dao, _payload);\\n\\n // Update from Build 1\\n if (_fromBuild == 1) {\\n preparedSetupData.helpers = mockHelpers(THIS_BUILD);\\n initData = abi.encodeCall(PluginUUPSUpgradeableMockBuild3.initializeFrom, (_fromBuild));\\n preparedSetupData.permissions = mockPermissions(\\n _fromBuild,\\n THIS_BUILD,\\n PermissionLib.Operation.Grant\\n );\\n\\n // If this update path should not be supported, you can revert with an error, e.g.,\\n // revert InvalidUpdatePath({fromBuild: _fromBuild, thisBuild: THIS_BUILD});\\n }\\n\\n // Update from Build 2\\n if (_fromBuild == 2) {\\n preparedSetupData.helpers = mockHelpers(THIS_BUILD);\\n initData = abi.encodeCall(PluginUUPSUpgradeableMockBuild3.initializeFrom, (_fromBuild));\\n preparedSetupData.permissions = mockPermissions(\\n _fromBuild,\\n THIS_BUILD,\\n PermissionLib.Operation.Grant\\n );\\n }\\n }\\n\\n /// @inheritdoc IPluginSetup\\n function prepareUninstallation(\\n address _dao,\\n SetupPayload calldata _payload\\n ) external pure returns (PermissionLib.MultiTargetPermission[] memory permissions) {\\n (_dao, _payload);\\n permissions = mockPermissions(0, THIS_BUILD, PermissionLib.Operation.Revoke);\\n }\\n}\\n\",\"keccak256\":\"0x6be5a7611fe85f0e6e1ea08f42bcce810bc4973da1eaa04c88445b8d9af130ba\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/PermissionLib.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title PermissionLib\\n/// @author Aragon X - 2021-2023\\n/// @notice A library containing objects for permission processing.\\n/// @custom:security-contact sirt@aragon.org\\nlibrary PermissionLib {\\n /// @notice A constant expressing that no condition is applied to a permission.\\n address public constant NO_CONDITION = address(0);\\n\\n /// @notice The types of permission operations available in the `PermissionManager`.\\n /// @param Grant The grant operation setting a permission without a condition.\\n /// @param Revoke The revoke operation removing a permission (that was granted with or without a condition).\\n /// @param GrantWithCondition The grant operation setting a permission with a condition.\\n enum Operation {\\n Grant,\\n Revoke,\\n GrantWithCondition\\n }\\n\\n /// @notice A struct containing the information for a permission to be applied on a single target contract without a condition.\\n /// @param operation The permission operation type.\\n /// @param who The address (EOA or contract) receiving the permission.\\n /// @param permissionId The permission identifier.\\n struct SingleTargetPermission {\\n Operation operation;\\n address who;\\n bytes32 permissionId;\\n }\\n\\n /// @notice A struct containing the information for a permission to be applied on multiple target contracts, optionally, with a condition.\\n /// @param operation The permission operation type.\\n /// @param where The address of the target contract for which `who` receives permission.\\n /// @param who The address (EOA or contract) receiving the permission.\\n /// @param condition The `PermissionCondition` that will be asked for authorization on calls connected to the specified permission identifier.\\n /// @param permissionId The permission identifier.\\n struct MultiTargetPermission {\\n Operation operation;\\n address where;\\n address who;\\n address condition;\\n bytes32 permissionId;\\n }\\n}\\n\",\"keccak256\":\"0x470faf3c4891ebc6420ef6cc09f6098917568ccc79268c90954d1478199b6097\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/DaoAuthorizableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ContextUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\\\";\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\nimport {_auth} from \\\"./auth.sol\\\";\\n\\n/// @title DaoAuthorizableUpgradeable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract contract providing a meta-transaction compatible modifier for upgradeable or cloneable contracts to authorize function calls through an associated DAO.\\n/// @dev Make sure to call `__DaoAuthorizableUpgradeable_init` during initialization of the inheriting contract.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract DaoAuthorizableUpgradeable is ContextUpgradeable {\\n /// @notice The associated DAO managing the permissions of inheriting contracts.\\n IDAO private dao_;\\n\\n /// @notice Initializes the contract by setting the associated DAO.\\n /// @param _dao The associated DAO address.\\n // solhint-disable-next-line func-name-mixedcase\\n function __DaoAuthorizableUpgradeable_init(IDAO _dao) internal onlyInitializing {\\n dao_ = _dao;\\n }\\n\\n /// @notice Returns the DAO contract.\\n /// @return The DAO contract.\\n function dao() public view returns (IDAO) {\\n return dao_;\\n }\\n\\n /// @notice A modifier to make functions on inheriting contracts authorized. Permissions to call the function are checked through the associated DAO's permission manager.\\n /// @param _permissionId The permission identifier required to call the method this modifier is applied to.\\n modifier auth(bytes32 _permissionId) {\\n _auth(dao_, address(this), _msgSender(), _permissionId, _msgData());\\n _;\\n }\\n\\n /// @notice This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain (see [OpenZeppelin's guide about storage gaps](https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps)).\\n uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0x7fac6b01b037ba1cb9d6a22d3f43b0785037dcf496ffb672434d9bf7227d2585\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/auth.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice Thrown if a call is unauthorized in the associated DAO.\\n/// @param dao The associated DAO.\\n/// @param where The context in which the authorization reverted.\\n/// @param who The address (EOA or contract) missing the permission.\\n/// @param permissionId The permission identifier.\\nerror DaoUnauthorized(address dao, address where, address who, bytes32 permissionId);\\n\\n/// @notice A free function checking if a caller is granted permissions on a target contract via a permission identifier that redirects the approval to a `PermissionCondition` if this was specified in the setup.\\n/// @param _where The address of the target contract for which `who` receives permission.\\n/// @param _who The address (EOA or contract) owning the permission.\\n/// @param _permissionId The permission identifier.\\n/// @param _data The optional data passed to the `PermissionCondition` registered.\\n/// @custom:security-contact sirt@aragon.org\\nfunction _auth(\\n IDAO _dao,\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes calldata _data\\n) view {\\n if (!_dao.hasPermission(_where, _who, _permissionId, _data))\\n revert DaoUnauthorized({\\n dao: address(_dao),\\n where: _where,\\n who: _who,\\n permissionId: _permissionId\\n });\\n}\\n\",\"keccak256\":\"0x878764b4f87fe0651fb3798fb9cb87c952f8c6caf6ae79c7f09de84df6c00298\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/IPlugin.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IPlugin\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the traits of a plugin.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IPlugin {\\n enum PluginType {\\n UUPS,\\n Cloneable,\\n Constructable\\n }\\n\\n /// @notice Returns the plugin's type\\n function pluginType() external view returns (PluginType);\\n}\\n\",\"keccak256\":\"0xc57cd0d10b6380ab7f54c713a509e88fd8f4ad9288313a0e8e12b8887817ddfe\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/PluginUUPSUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {UUPSUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\\\";\\nimport {IERC1822ProxiableUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport {ERC165Upgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\\\";\\n\\nimport {IProtocolVersion} from \\\"../utils/versioning/IProtocolVersion.sol\\\";\\nimport {ProtocolVersion} from \\\"../utils/versioning/ProtocolVersion.sol\\\";\\nimport {DaoAuthorizableUpgradeable} from \\\"../permission/auth/DaoAuthorizableUpgradeable.sol\\\";\\nimport {IDAO} from \\\"../dao/IDAO.sol\\\";\\nimport {IPlugin} from \\\"./IPlugin.sol\\\";\\n\\n/// @title PluginUUPSUpgradeable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract, upgradeable contract to inherit from when creating a plugin being deployed via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract PluginUUPSUpgradeable is\\n IPlugin,\\n ERC165Upgradeable,\\n UUPSUpgradeable,\\n DaoAuthorizableUpgradeable,\\n ProtocolVersion\\n{\\n // NOTE: When adding new state variables to the contract, the size of `_gap` has to be adapted below as well.\\n\\n /// @notice Disables the initializers on the implementation contract to prevent it from being left uninitialized.\\n /// @custom:oz-upgrades-unsafe-allow constructor\\n constructor() {\\n _disableInitializers();\\n }\\n\\n /// @inheritdoc IPlugin\\n function pluginType() public pure override returns (PluginType) {\\n return PluginType.UUPS;\\n }\\n\\n /// @notice The ID of the permission required to call the `_authorizeUpgrade` function.\\n bytes32 public constant UPGRADE_PLUGIN_PERMISSION_ID = keccak256(\\\"UPGRADE_PLUGIN_PERMISSION\\\");\\n\\n /// @notice Initializes the plugin by storing the associated DAO.\\n /// @param _dao The DAO contract.\\n // solhint-disable-next-line func-name-mixedcase\\n function __PluginUUPSUpgradeable_init(IDAO _dao) internal virtual onlyInitializing {\\n __DaoAuthorizableUpgradeable_init(_dao);\\n }\\n\\n /// @notice Checks if an interface is supported by this or its parent contract.\\n /// @param _interfaceId The ID of the interface.\\n /// @return Returns `true` if the interface is supported.\\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\\n return\\n _interfaceId == type(IPlugin).interfaceId ||\\n _interfaceId == type(IProtocolVersion).interfaceId ||\\n _interfaceId == type(IERC1822ProxiableUpgradeable).interfaceId ||\\n super.supportsInterface(_interfaceId);\\n }\\n\\n /// @notice Returns the address of the implementation contract in the [proxy storage slot](https://eips.ethereum.org/EIPS/eip-1967) slot the [UUPS proxy](https://eips.ethereum.org/EIPS/eip-1822) is pointing to.\\n /// @return The address of the implementation contract.\\n function implementation() public view returns (address) {\\n return _getImplementation();\\n }\\n\\n /// @notice Internal method authorizing the upgrade of the contract via the [upgradeability mechanism for UUPS proxies](https://docs.openzeppelin.com/contracts/4.x/api/proxy#UUPSUpgradeable) (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\\n /// @dev The caller must have the `UPGRADE_PLUGIN_PERMISSION_ID` permission.\\n function _authorizeUpgrade(\\n address\\n )\\n internal\\n virtual\\n override\\n auth(UPGRADE_PLUGIN_PERMISSION_ID)\\n // solhint-disable-next-line no-empty-blocks\\n {\\n\\n }\\n\\n /// @notice This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain (see [OpenZeppelin's guide about storage gaps](https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps)).\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x127e7c4f839cb8c8486070990b78e22313f1ff089ffe6a4ff23ae358e48f0037\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/setup/IPluginSetup.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {PermissionLib} from \\\"../../permission/PermissionLib.sol\\\";\\n\\n// solhint-disable-next-line no-unused-import\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @title IPluginSetup\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for a plugin setup contract to be consumed by the `PluginSetupProcessor` for plugin installations, updates, and uninstallations.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IPluginSetup {\\n /// @notice The data associated with a prepared setup.\\n /// @param helpers The address array of helpers (contracts or EOAs) associated with this plugin version after the installation or update.\\n /// @param permissions The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the installing or updating DAO.\\n struct PreparedSetupData {\\n address[] helpers;\\n PermissionLib.MultiTargetPermission[] permissions;\\n }\\n\\n /// @notice The payload for plugin updates and uninstallations containing the existing contracts as well as optional data to be consumed by the plugin setup.\\n /// @param plugin The address of the `Plugin`.\\n /// @param currentHelpers The address array of all current helpers (contracts or EOAs) associated with the plugin to update from.\\n /// @param data The bytes-encoded data containing the input parameters for the preparation of update/uninstall as specified in the corresponding ABI on the version's metadata.\\n struct SetupPayload {\\n address plugin;\\n address[] currentHelpers;\\n bytes data;\\n }\\n\\n /// @notice Prepares the installation of a plugin.\\n /// @param _dao The address of the installing DAO.\\n /// @param _data The bytes-encoded data containing the input parameters for the installation as specified in the plugin's build metadata JSON file.\\n /// @return plugin The address of the `Plugin` contract being prepared for installation.\\n /// @return preparedSetupData The deployed plugin's relevant data which consists of helpers and permissions.\\n function prepareInstallation(\\n address _dao,\\n bytes calldata _data\\n ) external returns (address plugin, PreparedSetupData memory preparedSetupData);\\n\\n /// @notice Prepares the update of a plugin.\\n /// @param _dao The address of the updating DAO.\\n /// @param _fromBuild The build number of the plugin to update from.\\n /// @param _payload The relevant data necessary for the `prepareUpdate`. See above.\\n /// @return initData The initialization data to be passed to upgradeable contracts when the update is applied in the `PluginSetupProcessor`.\\n /// @return preparedSetupData The deployed plugin's relevant data which consists of helpers and permissions.\\n function prepareUpdate(\\n address _dao,\\n uint16 _fromBuild,\\n SetupPayload calldata _payload\\n ) external returns (bytes memory initData, PreparedSetupData memory preparedSetupData);\\n\\n /// @notice Prepares the uninstallation of a plugin.\\n /// @param _dao The address of the uninstalling DAO.\\n /// @param _payload The relevant data necessary for the `prepareUninstallation`. See above.\\n /// @return permissions The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the uninstalling DAO.\\n function prepareUninstallation(\\n address _dao,\\n SetupPayload calldata _payload\\n ) external returns (PermissionLib.MultiTargetPermission[] memory permissions);\\n\\n /// @notice Returns the plugin implementation address.\\n /// @return The address of the plugin implementation contract.\\n /// @dev The implementation can be instantiated via the `new` keyword, cloned via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)), or proxied via the UUPS proxy pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0x21c99995208039ac6ace219b6f273243811dc2aa66399e8e499e43ec30b82fa9\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/setup/PluginUpgradeableSetup.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ERC165} from \\\"@openzeppelin/contracts/utils/introspection/ERC165.sol\\\";\\n\\nimport {IProtocolVersion} from \\\"../../utils/versioning/IProtocolVersion.sol\\\";\\nimport {ProtocolVersion} from \\\"../../utils/versioning/ProtocolVersion.sol\\\";\\nimport {IPluginSetup} from \\\"./IPluginSetup.sol\\\";\\n\\n/// @title PluginUpgradeableSetup\\n/// @author Aragon X - 2022-2024\\n/// @notice An abstract contract to inherit from to implement the plugin setup for upgradeable plugins, i.e, `PluginUUPSUpgradeable` being deployed via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822) and [ERC-1967](https://eips.ethereum.org/EIPS/eip-1967)).\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract PluginUpgradeableSetup is ERC165, IPluginSetup, ProtocolVersion {\\n /// @notice The address of the plugin implementation contract for initial block explorer verification\\n /// and to create [ERC-1967](https://eips.ethereum.org/EIPS/eip-1967) UUPS proxies from.\\n address internal immutable IMPLEMENTATION;\\n\\n /// @notice Thrown when an update path is not available, for example, if this is the initial build.\\n /// @param fromBuild The build number to update from.\\n /// @param thisBuild The build number of this setup to update to.\\n error InvalidUpdatePath(uint16 fromBuild, uint16 thisBuild);\\n\\n /// @notice The contract constructor, that setting the plugin implementation contract.\\n /// @param _implementation The address of the plugin implementation contract.\\n constructor(address _implementation) {\\n IMPLEMENTATION = _implementation;\\n }\\n\\n /// @notice Checks if this or the parent contract supports an interface by its ID.\\n /// @param _interfaceId The ID of the interface.\\n /// @return Returns `true` if the interface is supported.\\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\\n return\\n _interfaceId == type(IPluginSetup).interfaceId ||\\n _interfaceId == type(IProtocolVersion).interfaceId ||\\n super.supportsInterface(_interfaceId);\\n }\\n\\n /// @inheritdoc IPluginSetup\\n function implementation() public view returns (address) {\\n return IMPLEMENTATION;\\n }\\n}\\n\",\"keccak256\":\"0x2842d919d1ecb4fbeb40953128c3da3b36dcf6e91255089e987c2f11ff8d061e\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/deployment/ProxyLib.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ERC1967Proxy} from \\\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol\\\";\\nimport {Clones} from \\\"@openzeppelin/contracts/proxy/Clones.sol\\\";\\nimport {Address} from \\\"@openzeppelin/contracts/utils/Address.sol\\\";\\n\\n/// @title ProxyLib\\n/// @author Aragon X - 2024\\n/// @notice A library containing methods for the deployment of proxies via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)) and minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)).\\n/// @custom:security-contact sirt@aragon.org\\nlibrary ProxyLib {\\n using Address for address;\\n using Clones for address;\\n\\n /// @notice Creates an [ERC-1967](https://eips.ethereum.org/EIPS/eip-1967) UUPS proxy contract pointing to a logic contract and allows to immediately initialize it.\\n /// @param _logic The logic contract the proxy is pointing to.\\n /// @param _initCalldata The initialization data for this contract.\\n /// @return uupsProxy The address of the UUPS proxy contract created.\\n /// @dev If `_initCalldata` is non-empty, it is used in a delegate call to the `_logic` contract. This will typically be an encoded function call initializing the storage of the proxy (see [OpenZeppelin ERC1967Proxy-constructor](https://docs.openzeppelin.com/contracts/4.x/api/proxy#ERC1967Proxy-constructor-address-bytes-)).\\n function deployUUPSProxy(\\n address _logic,\\n bytes memory _initCalldata\\n ) internal returns (address uupsProxy) {\\n uupsProxy = address(new ERC1967Proxy({_logic: _logic, _data: _initCalldata}));\\n }\\n\\n /// @notice Creates an [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167) minimal proxy contract, also known as clones, pointing to a logic contract and allows to immediately initialize it.\\n /// @param _logic The logic contract the proxy is pointing to.\\n /// @param _initCalldata The initialization data for this contract.\\n /// @return minimalProxy The address of the minimal proxy contract created.\\n /// @dev If `_initCalldata` is non-empty, it is used in a call to the clone contract. This will typically be an encoded function call initializing the storage of the contract.\\n function deployMinimalProxy(\\n address _logic,\\n bytes memory _initCalldata\\n ) internal returns (address minimalProxy) {\\n minimalProxy = _logic.clone();\\n if (_initCalldata.length > 0) {\\n minimalProxy.functionCall({data: _initCalldata});\\n }\\n }\\n}\\n\",\"keccak256\":\"0xef0d1790dfa026381c021daa2ec7267357497f58cd4a2fa5c64e72e0dea95acc\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/IProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IProtocolVersion\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the semantic Aragon OSx protocol version number.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IProtocolVersion {\\n /// @notice Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\\n /// @return _version Returns the semantic Aragon OSx protocol version number.\\n /// @dev This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\\n function protocolVersion() external view returns (uint8[3] memory _version);\\n}\\n\",\"keccak256\":\"0x00a4da654d21dc1bdadbdc8bd54bb86c378c56f85e461ccc31303628ea621361\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/ProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IProtocolVersion} from \\\"./IProtocolVersion.sol\\\";\\n\\n/// @title ProtocolVersion\\n/// @author Aragon X - 2023\\n/// @notice An abstract, stateless, non-upgradeable contract providing the current Aragon OSx protocol version number.\\n/// @dev Do not add any new variables to this contract that would shift down storage in the inheritance chain.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract ProtocolVersion is IProtocolVersion {\\n // IMPORTANT: Do not add any storage variable, see the above notice.\\n\\n /// @inheritdoc IProtocolVersion\\n function protocolVersion() public pure returns (uint8[3] memory) {\\n return [1, 4, 0];\\n }\\n}\\n\",\"keccak256\":\"0x3975c937be935f687c6b6b8f379071232681e98cf04b175d72781b819ea52bdb\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"errors":{"InvalidUpdatePath(uint16,uint16)":[{"notice":"Thrown when an update path is not available, for example, if this is the initial build."}]},"kind":"user","methods":{"implementation()":{"notice":"Returns the plugin implementation address."},"prepareInstallation(address,bytes)":{"notice":"Prepares the installation of a plugin."},"prepareUninstallation(address,(address,address[],bytes))":{"notice":"Prepares the uninstallation of a plugin."},"prepareUpdate(address,uint16,(address,address[],bytes))":{"notice":"Prepares the update of a plugin."},"protocolVersion()":{"notice":"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with."},"supportsInterface(bytes4)":{"notice":"Checks if this or the parent contract supports an interface by its ID."}},"notice":"A mock plugin setup of an upgradeable plugin to be deployed via the UUPS pattern. v1.1 (Release 1, Build 1)","version":1}},"PluginUUPSUpgradeableSetupMockBuild2":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"ConflictingValues","type":"error"},{"inputs":[{"internalType":"uint16","name":"fromBuild","type":"uint16"},{"internalType":"uint16","name":"thisBuild","type":"uint16"}],"name":"InvalidUpdatePath","type":"error"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_dao","type":"address"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"prepareInstallation","outputs":[{"internalType":"address","name":"plugin","type":"address"},{"components":[{"internalType":"address[]","name":"helpers","type":"address[]"},{"components":[{"internalType":"enum PermissionLib.Operation","name":"operation","type":"uint8"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"condition","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"internalType":"struct PermissionLib.MultiTargetPermission[]","name":"permissions","type":"tuple[]"}],"internalType":"struct IPluginSetup.PreparedSetupData","name":"preparedSetupData","type":"tuple"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_dao","type":"address"},{"components":[{"internalType":"address","name":"plugin","type":"address"},{"internalType":"address[]","name":"currentHelpers","type":"address[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct IPluginSetup.SetupPayload","name":"_payload","type":"tuple"}],"name":"prepareUninstallation","outputs":[{"components":[{"internalType":"enum PermissionLib.Operation","name":"operation","type":"uint8"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"condition","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"internalType":"struct PermissionLib.MultiTargetPermission[]","name":"permissions","type":"tuple[]"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_dao","type":"address"},{"internalType":"uint16","name":"_fromBuild","type":"uint16"},{"components":[{"internalType":"address","name":"plugin","type":"address"},{"internalType":"address[]","name":"currentHelpers","type":"address[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct IPluginSetup.SetupPayload","name":"_payload","type":"tuple"}],"name":"prepareUpdate","outputs":[{"internalType":"bytes","name":"initData","type":"bytes"},{"components":[{"internalType":"address[]","name":"helpers","type":"address[]"},{"components":[{"internalType":"enum PermissionLib.Operation","name":"operation","type":"uint8"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"condition","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"internalType":"struct PermissionLib.MultiTargetPermission[]","name":"permissions","type":"tuple[]"}],"internalType":"struct IPluginSetup.PreparedSetupData","name":"preparedSetupData","type":"tuple"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"protocolVersion","outputs":[{"internalType":"uint8[3]","name":"","type":"uint8[3]"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"DO NOT USE IN PRODUCTION!","errors":{"InvalidUpdatePath(uint16,uint16)":[{"params":{"fromBuild":"The build number to update from.","thisBuild":"The build number of this setup to update to."}}]},"kind":"dev","methods":{"implementation()":{"details":"The implementation can be instantiated via the `new` keyword, cloned via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)), or proxied via the UUPS proxy pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).","returns":{"_0":"The address of the plugin implementation contract."}},"prepareInstallation(address,bytes)":{"params":{"_dao":"The address of the installing DAO.","_data":"The bytes-encoded data containing the input parameters for the installation as specified in the plugin's build metadata JSON file."},"returns":{"plugin":"The address of the `Plugin` contract being prepared for installation.","preparedSetupData":"The deployed plugin's relevant data which consists of helpers and permissions."}},"prepareUninstallation(address,(address,address[],bytes))":{"params":{"_dao":"The address of the uninstalling DAO.","_payload":"The relevant data necessary for the `prepareUninstallation`. See above."},"returns":{"permissions":"The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the uninstalling DAO."}},"prepareUpdate(address,uint16,(address,address[],bytes))":{"params":{"_dao":"The address of the updating DAO.","_fromBuild":"The build number of the plugin to update from.","_payload":"The relevant data necessary for the `prepareUpdate`. See above."},"returns":{"initData":"The initialization data to be passed to upgradeable contracts when the update is applied in the `PluginSetupProcessor`.","preparedSetupData":"The deployed plugin's relevant data which consists of helpers and permissions."}},"protocolVersion()":{"details":"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.","returns":{"_0":"Returns the semantic Aragon OSx protocol version number."}},"supportsInterface(bytes4)":{"params":{"_interfaceId":"The ID of the interface."},"returns":{"_0":"Returns `true` if the interface is supported."}}},"version":1},"evm":{"bytecode":{"functionDebugData":{"@_12094":{"entryPoint":null,"id":12094,"parameterSlots":0,"returnSlots":0},"@_14409":{"entryPoint":null,"id":14409,"parameterSlots":1,"returnSlots":0}},"generatedSources":[],"linkReferences":{},"object":"60a060405234801561001057600080fd5b5060405161001d9061004b565b604051809103906000f080158015610039573d6000803e3d6000fd5b506001600160a01b0316608052610058565b61133c806112c683390190565b60805161124d6100796000396000818160d20152610339015261124d6000f3fe60806040523480156200001157600080fd5b50600436106200007b5760003560e01c80639cb0a12411620000565780639cb0a12414620000fd578063a8a9c29e1462000123578063f10832f1146200014a57600080fd5b806301ffc9a714620000805780632ae9c60014620000ac5780635c60da1b14620000c5575b600080fd5b62000097620000913660046200065e565b62000171565b60405190151581526020015b60405180910390f35b620000b6620001c4565b604051620000a391906200068a565b6040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152602001620000a3565b620001146200010e366004620006f0565b620001f0565b604051620000a39190620007c1565b6200013a620001343660046200080e565b62000209565b604051620000a39291906200095d565b620001616200015b366004620009a5565b620002b5565b604051620000a392919062000a73565b60006001600160e01b0319821663099718b560e41b1480620001a257506001600160e01b03198216621574e360e91b145b80620001be57506301ffc9a760e01b6001600160e01b03198316145b92915050565b620001ce62000632565b5060408051606081018252600181526004602082015260009181019190915290565b60606200020260006002600162000399565b9392505050565b606062000229604051806040016040528060608152602001606081525090565b8361ffff16600103620002ad5762000242600262000532565b815260405161ffff8516602482015260440160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166239a8c560e41b1790529150620002a761ffff85166002600062000399565b60208201525b935093915050565b6000620002d5604051806040016040528060608152602001606081525090565b6040516001600160a01b038516602482015260009060440160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663189acdbd60e31b17905290506200036b816200035b7f000000000000000000000000000000000000000000000000000000000000000090565b6001600160a01b031690620005f6565b925062000379600262000532565b82526200038a600060028162000399565b60208301525090939092509050565b6060826001600160a01b0316846001600160a01b03161115620003cf57604051633a4013cd60e21b815260040160405180910390fd5b620003db848462000ab5565b6001600160a01b031667ffffffffffffffff811115620003ff57620003ff6200098f565b6040519080825280602002602001820160405280156200045a57816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282526000199092019101816200041e5790505b509050835b836001600160a01b0316816001600160a01b031610156200052a576040518060a001604052808460028111156200049a576200049a62000744565b81526001600160a01b038316602082018190526040820152600060608201527fa280eec51ab8e1bc4b6b0c1b7f1bde785761b787a49db404e3e9338ed9b016ef60809091015282620004ed878462000ab5565b6001600160a01b03168151811062000509576200050962000adf565b60200260200101819052508080620005219062000af5565b9150506200045f565b509392505050565b6060816001600160a01b031667ffffffffffffffff8111156200055957620005596200098f565b60405190808252806020026020018201604052801562000583578160200160208202803683370190505b50905060005b826001600160a01b0316816001600160a01b03161015620005f0578082826001600160a01b031681518110620005c357620005c362000adf565b6001600160a01b039092166020928302919091019091015280620005e78162000af5565b91505062000589565b50919050565b60008282604051620006089062000650565b6200061592919062000b1e565b604051809103906000f0801580156200052a573d6000803e3d6000fd5b60405180606001604052806003906020820280368337509192915050565b6106fe8062000b4383390190565b6000602082840312156200067157600080fd5b81356001600160e01b0319811681146200020257600080fd5b60608101818360005b6003811015620006b757815160ff1683526020928301929091019060010162000693565b50505092915050565b80356001600160a01b0381168114620006d857600080fd5b919050565b600060608284031215620005f057600080fd5b600080604083850312156200070457600080fd5b6200070f83620006c0565b9150602083013567ffffffffffffffff8111156200072c57600080fd5b6200073a85828601620006dd565b9150509250929050565b634e487b7160e01b600052602160045260246000fd5b60008151600381106200077d57634e487b7160e01b600052602160045260246000fd5b8352506020818101516001600160a01b0390811691840191909152604080830151821690840152606080830151909116908301526080908101519082015260a00190565b6020808252825182820181905260009190848201906040850190845b818110156200080257620007f38385516200075a565b938501939250600101620007dd565b50909695505050505050565b6000806000606084860312156200082457600080fd5b6200082f84620006c0565b9250602084013561ffff811681146200084757600080fd5b9150604084013567ffffffffffffffff8111156200086457600080fd5b6200087286828701620006dd565b9150509250925092565b6000815180845260005b81811015620008a45760208185018101518683018201520162000886565b506000602082860101526020601f19601f83011685010191505092915050565b805160408084528151908401819052600091602091908201906060860190845b818110156200090b5783516001600160a01b031683529284019291840191600101620008e4565b50508483015186820387850152805180835290840192506000918401905b8083101562000952576200093f8285516200075a565b9150848401935060018301925062000929565b509695505050505050565b6040815260006200097260408301856200087c565b8281036020840152620009868185620008c4565b95945050505050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215620009b957600080fd5b620009c483620006c0565b9150602083013567ffffffffffffffff80821115620009e257600080fd5b818501915085601f830112620009f757600080fd5b81358181111562000a0c5762000a0c6200098f565b604051601f8201601f19908116603f0116810190838211818310171562000a375762000a376200098f565b8160405282815288602084870101111562000a5157600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6001600160a01b038316815260406020820152600062000a976040830184620008c4565b949350505050565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0382811682821603908082111562000ad85762000ad862000a9f565b5092915050565b634e487b7160e01b600052603260045260246000fd5b60006001600160a01b0380831681810362000b145762000b1462000a9f565b6001019392505050565b6001600160a01b038316815260406020820152600062000a9760408301846200087c56fe60806040526040516106fe3803806106fe83398101604081905261002291610319565b61002e82826000610035565b5050610436565b61003e8361006b565b60008251118061004b5750805b156100665761006483836100ab60201b6100291760201c565b505b505050565b610074816100d7565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606100d083836040518060600160405280602781526020016106d7602791396101a9565b9392505050565b6100ea8161022260201b6100551760201c565b6101515760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b806101887f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61023160201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6060600080856001600160a01b0316856040516101c691906103e7565b600060405180830381855af49150503d8060008114610201576040519150601f19603f3d011682016040523d82523d6000602084013e610206565b606091505b50909250905061021886838387610234565b9695505050505050565b6001600160a01b03163b151590565b90565b606083156102a357825160000361029c576001600160a01b0385163b61029c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610148565b50816102ad565b6102ad83836102b5565b949350505050565b8151156102c55781518083602001fd5b8060405162461bcd60e51b81526004016101489190610403565b634e487b7160e01b600052604160045260246000fd5b60005b838110156103105781810151838201526020016102f8565b50506000910152565b6000806040838503121561032c57600080fd5b82516001600160a01b038116811461034357600080fd5b60208401519092506001600160401b038082111561036057600080fd5b818501915085601f83011261037457600080fd5b815181811115610386576103866102df565b604051601f8201601f19908116603f011681019083821181831017156103ae576103ae6102df565b816040528281528860208487010111156103c757600080fd5b6103d88360208301602088016102f5565b80955050505050509250929050565b600082516103f98184602087016102f5565b9190910192915050565b60208152600082518060208401526104228160408501602087016102f5565b601f01601f19169190910160400192915050565b610292806104456000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b61009f565b565b606061004e838360405180606001604052806027815260200161025f602791396100c3565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e8080156100be573d6000f35b3d6000fd5b6060600080856001600160a01b0316856040516100e0919061020f565b600060405180830381855af49150503d806000811461011b576040519150601f19603f3d011682016040523d82523d6000602084013e610120565b606091505b50915091506101318683838761013b565b9695505050505050565b606083156101af5782516000036101a8576001600160a01b0385163b6101a85760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b50816101b9565b6101b983836101c1565b949350505050565b8151156101d15781518083602001fd5b8060405162461bcd60e51b815260040161019f919061022b565b60005b838110156102065781810151838201526020016101ee565b50506000910152565b600082516102218184602087016101eb565b9190910192915050565b602081526000825180602084015261024a8160408501602087016101eb565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a60a06040523060805234801561001457600080fd5b5061001d610022565b6100e1565b600054610100900460ff161561008e5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116146100df576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b60805161122461011860003960008181610423015281816104a80152818161059e01528181610623015261070d01526112246000f3fe6080604052600436106100d25760003560e01c80634f1ef2861161007f5780636accab8c116100595780636accab8c14610209578063c4d66de814610220578063c9c4bfca14610240578063efe51cca1461027457600080fd5b80634f1ef286146101be57806352d1902d146101d15780635c60da1b146101f457600080fd5b80633659cfe6116100b05780633659cfe6146101505780634162169f1461017057806341de6830146101a257600080fd5b806301ffc9a7146100d7578063039a8c501461010c5780632ae9c6001461012e575b600080fd5b3480156100e357600080fd5b506100f76100f2366004610f38565b61028b565b60405190151581526020015b60405180910390f35b34801561011857600080fd5b5061012c610127366004610f62565b6102f7565b005b34801561013a57600080fd5b506101436103ef565b6040516101039190610f86565b34801561015c57600080fd5b5061012c61016b366004610fcf565b610419565b34801561017c57600080fd5b5060c9546001600160a01b03165b6040516001600160a01b039091168152602001610103565b3480156101ae57600080fd5b5060006040516101039190610fec565b61012c6101cc36600461102a565b610594565b3480156101dd57600080fd5b506101e6610700565b604051908152602001610103565b34801561020057600080fd5b5061018a6107c5565b34801561021557600080fd5b506101e661012d5481565b34801561022c57600080fd5b5061012c61023b366004610fcf565b6107fd565b34801561024c57600080fd5b506101e67f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f581565b34801561028057600080fd5b506101e661012e5481565b60006001600160e01b0319821663041de68360e41b14806102bb57506001600160e01b03198216621574e360e91b145b806102d657506001600160e01b031982166352d1902d60e01b145b806102f157506301ffc9a760e01b6001600160e01b03198316145b92915050565b600054600290610100900460ff16158015610319575060005460ff8083169116105b6103815760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805461ffff191660ff831617610100179055600261ffff831610156103a957600261012e555b6000805461ff001916905560405160ff821681527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b6103f7610f1a565b5060408051606081018252600181526004602082015260009181019190915290565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036104a65760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b6064820152608401610378565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166105017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b03161461056c5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b6064820152608401610378565b610575816108e9565b6040805160008082526020820190925261059191839190610926565b50565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036106215760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b6064820152608401610378565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661067c7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b0316146106e75760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b6064820152608401610378565b6106f0826108e9565b6106fc82826001610926565b5050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146107a05760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610378565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b60006107f87f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b600054600290610100900460ff1615801561081f575060005460ff8083169116105b6108825760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610378565b6000805461ffff191660ff83161761010017905561089f82610acb565b600161012d55600261012e556000805461ff001916905560405160ff821681527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020016103e3565b60c9547f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f5906106fc906001600160a01b0316303384600036610b3f565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561095e5761095983610bfb565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156109b8575060408051601f3d908101601f191682019092526109b5918101906110ee565b60015b610a2a5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201527f6f6e206973206e6f7420555550530000000000000000000000000000000000006064820152608401610378565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114610abf5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f7860448201527f6961626c655555494400000000000000000000000000000000000000000000006064820152608401610378565b50610959838383610cc6565b600054610100900460ff16610b365760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610378565b61059181610cf1565b604051637ef7c88360e11b81526001600160a01b0387169063fdef910690610b739088908890889088908890600401611107565b602060405180830381865afa158015610b90573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bb4919061115b565b610bf357604051630cb6f8ed60e21b81526001600160a01b03808816600483015280871660248301528516604482015260648101849052608401610378565b505050505050565b6001600160a01b0381163b610c785760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e7472616374000000000000000000000000000000000000006064820152608401610378565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610ccf83610d8b565b600082511180610cdc5750805b1561095957610ceb8383610dcb565b50505050565b600054610100900460ff16610d5c5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610378565b60c9805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610d9481610bfb565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060610df083836040518060600160405280602781526020016111f160279139610df7565b9392505050565b6060600080856001600160a01b031685604051610e1491906111a1565b600060405180830381855af49150503d8060008114610e4f576040519150601f19603f3d011682016040523d82523d6000602084013e610e54565b606091505b5091509150610e6586838387610e6f565b9695505050505050565b60608315610ede578251600003610ed7576001600160a01b0385163b610ed75760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610378565b5081610ee8565b610ee88383610ef0565b949350505050565b815115610f005781518083602001fd5b8060405162461bcd60e51b815260040161037891906111bd565b60405180606001604052806003906020820280368337509192915050565b600060208284031215610f4a57600080fd5b81356001600160e01b031981168114610df057600080fd5b600060208284031215610f7457600080fd5b813561ffff81168114610df057600080fd5b60608101818360005b6003811015610fb157815160ff16835260209283019290910190600101610f8f565b50505092915050565b6001600160a01b038116811461059157600080fd5b600060208284031215610fe157600080fd5b8135610df081610fba565b602081016003831061100e57634e487b7160e01b600052602160045260246000fd5b91905290565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561103d57600080fd5b823561104881610fba565b9150602083013567ffffffffffffffff8082111561106557600080fd5b818501915085601f83011261107957600080fd5b81358181111561108b5761108b611014565b604051601f8201601f19908116603f011681019083821181831017156110b3576110b3611014565b816040528281528860208487010111156110cc57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60006020828403121561110057600080fd5b5051919050565b60006001600160a01b03808816835280871660208401525084604083015260806060830152826080830152828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b60006020828403121561116d57600080fd5b81518015158114610df057600080fd5b60005b83811015611198578181015183820152602001611180565b50506000910152565b600082516111b381846020870161117d565b9190910192915050565b60208152600082518060208401526111dc81604085016020870161117d565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a","opcodes":"PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x1D SWAP1 PUSH2 0x4B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH2 0x39 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x80 MSTORE PUSH2 0x58 JUMP JUMPDEST PUSH2 0x133C DUP1 PUSH2 0x12C6 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH2 0x124D PUSH2 0x79 PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH1 0xD2 ADD MSTORE PUSH2 0x339 ADD MSTORE PUSH2 0x124D PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH3 0x7B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9CB0A124 GT PUSH3 0x56 JUMPI DUP1 PUSH4 0x9CB0A124 EQ PUSH3 0xFD JUMPI DUP1 PUSH4 0xA8A9C29E EQ PUSH3 0x123 JUMPI DUP1 PUSH4 0xF10832F1 EQ PUSH3 0x14A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH3 0x80 JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH3 0xAC JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH3 0xC5 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x97 PUSH3 0x91 CALLDATASIZE PUSH1 0x4 PUSH3 0x65E JUMP JUMPDEST PUSH3 0x171 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0xB6 PUSH3 0x1C4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0xA3 SWAP2 SWAP1 PUSH3 0x68A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH3 0xA3 JUMP JUMPDEST PUSH3 0x114 PUSH3 0x10E CALLDATASIZE PUSH1 0x4 PUSH3 0x6F0 JUMP JUMPDEST PUSH3 0x1F0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0xA3 SWAP2 SWAP1 PUSH3 0x7C1 JUMP JUMPDEST PUSH3 0x13A PUSH3 0x134 CALLDATASIZE PUSH1 0x4 PUSH3 0x80E JUMP JUMPDEST PUSH3 0x209 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0xA3 SWAP3 SWAP2 SWAP1 PUSH3 0x95D JUMP JUMPDEST PUSH3 0x161 PUSH3 0x15B CALLDATASIZE PUSH1 0x4 PUSH3 0x9A5 JUMP JUMPDEST PUSH3 0x2B5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0xA3 SWAP3 SWAP2 SWAP1 PUSH3 0xA73 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x99718B5 PUSH1 0xE4 SHL EQ DUP1 PUSH3 0x1A2 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH3 0x1BE JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH3 0x1CE PUSH3 0x632 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH3 0x202 PUSH1 0x0 PUSH1 0x2 PUSH1 0x1 PUSH3 0x399 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH3 0x229 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST DUP4 PUSH2 0xFFFF AND PUSH1 0x1 SUB PUSH3 0x2AD JUMPI PUSH3 0x242 PUSH1 0x2 PUSH3 0x532 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x40 MLOAD PUSH2 0xFFFF DUP6 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH3 0x39A8C5 PUSH1 0xE4 SHL OR SWAP1 MSTORE SWAP2 POP PUSH3 0x2A7 PUSH2 0xFFFF DUP6 AND PUSH1 0x2 PUSH1 0x0 PUSH3 0x399 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE JUMPDEST SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x2D5 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 PUSH1 0x44 ADD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x189ACDBD PUSH1 0xE3 SHL OR SWAP1 MSTORE SWAP1 POP PUSH3 0x36B DUP2 PUSH3 0x35B PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH3 0x5F6 JUMP JUMPDEST SWAP3 POP PUSH3 0x379 PUSH1 0x2 PUSH3 0x532 JUMP JUMPDEST DUP3 MSTORE PUSH3 0x38A PUSH1 0x0 PUSH1 0x2 DUP2 PUSH3 0x399 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP SWAP1 SWAP4 SWAP1 SWAP3 POP SWAP1 POP JUMP JUMPDEST PUSH1 0x60 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH3 0x3CF JUMPI PUSH1 0x40 MLOAD PUSH4 0x3A4013CD PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0x3DB DUP5 DUP5 PUSH3 0xAB5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x3FF JUMPI PUSH3 0x3FF PUSH3 0x98F JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH3 0x45A JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD DUP3 SWAP1 MSTORE SWAP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 DUP3 ADD MSTORE DUP3 MSTORE PUSH1 0x0 NOT SWAP1 SWAP3 ADD SWAP2 ADD DUP2 PUSH3 0x41E JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP DUP4 JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT ISZERO PUSH3 0x52A JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 DUP5 PUSH1 0x2 DUP2 GT ISZERO PUSH3 0x49A JUMPI PUSH3 0x49A PUSH3 0x744 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x60 DUP3 ADD MSTORE PUSH32 0xA280EEC51AB8E1BC4B6B0C1B7F1BDE785761B787A49DB404E3E9338ED9B016EF PUSH1 0x80 SWAP1 SWAP2 ADD MSTORE DUP3 PUSH3 0x4ED DUP8 DUP5 PUSH3 0xAB5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MLOAD DUP2 LT PUSH3 0x509 JUMPI PUSH3 0x509 PUSH3 0xADF JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP DUP1 DUP1 PUSH3 0x521 SWAP1 PUSH3 0xAF5 JUMP JUMPDEST SWAP2 POP POP PUSH3 0x45F JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x559 JUMPI PUSH3 0x559 PUSH3 0x98F JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH3 0x583 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT ISZERO PUSH3 0x5F0 JUMPI DUP1 DUP3 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MLOAD DUP2 LT PUSH3 0x5C3 JUMPI PUSH3 0x5C3 PUSH3 0xADF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE DUP1 PUSH3 0x5E7 DUP2 PUSH3 0xAF5 JUMP JUMPDEST SWAP2 POP POP PUSH3 0x589 JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH3 0x608 SWAP1 PUSH3 0x650 JUMP JUMPDEST PUSH3 0x615 SWAP3 SWAP2 SWAP1 PUSH3 0xB1E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH3 0x52A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x6FE DUP1 PUSH3 0xB43 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x671 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH3 0x202 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH3 0x6B7 JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH3 0x693 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x6D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x5F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x704 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x70F DUP4 PUSH3 0x6C0 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x72C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x73A DUP6 DUP3 DUP7 ADD PUSH3 0x6DD JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP2 MLOAD PUSH1 0x3 DUP2 LT PUSH3 0x77D JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP4 MSTORE POP PUSH1 0x20 DUP2 DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP1 DUP4 ADD MLOAD DUP3 AND SWAP1 DUP5 ADD MSTORE PUSH1 0x60 DUP1 DUP4 ADD MLOAD SWAP1 SWAP2 AND SWAP1 DUP4 ADD MSTORE PUSH1 0x80 SWAP1 DUP2 ADD MLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x802 JUMPI PUSH3 0x7F3 DUP4 DUP6 MLOAD PUSH3 0x75A JUMP JUMPDEST SWAP4 DUP6 ADD SWAP4 SWAP3 POP PUSH1 0x1 ADD PUSH3 0x7DD JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH3 0x824 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x82F DUP5 PUSH3 0x6C0 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH3 0x847 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x864 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x872 DUP7 DUP3 DUP8 ADD PUSH3 0x6DD JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x8A4 JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD DUP3 ADD MSTORE ADD PUSH3 0x886 JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x20 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x20 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x40 DUP1 DUP5 MSTORE DUP2 MLOAD SWAP1 DUP5 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x20 SWAP2 SWAP1 DUP3 ADD SWAP1 PUSH1 0x60 DUP7 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x90B JUMPI DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH3 0x8E4 JUMP JUMPDEST POP POP DUP5 DUP4 ADD MLOAD DUP7 DUP3 SUB DUP8 DUP6 ADD MSTORE DUP1 MLOAD DUP1 DUP4 MSTORE SWAP1 DUP5 ADD SWAP3 POP PUSH1 0x0 SWAP2 DUP5 ADD SWAP1 JUMPDEST DUP1 DUP4 LT ISZERO PUSH3 0x952 JUMPI PUSH3 0x93F DUP3 DUP6 MLOAD PUSH3 0x75A JUMP JUMPDEST SWAP2 POP DUP5 DUP5 ADD SWAP4 POP PUSH1 0x1 DUP4 ADD SWAP3 POP PUSH3 0x929 JUMP JUMPDEST POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 PUSH3 0x972 PUSH1 0x40 DUP4 ADD DUP6 PUSH3 0x87C JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 ADD MSTORE PUSH3 0x986 DUP2 DUP6 PUSH3 0x8C4 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x9B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x9C4 DUP4 PUSH3 0x6C0 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH3 0x9E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x9F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH3 0xA0C JUMPI PUSH3 0xA0C PUSH3 0x98F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH3 0xA37 JUMPI PUSH3 0xA37 PUSH3 0x98F JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH3 0xA51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH3 0xA97 PUSH1 0x40 DUP4 ADD DUP5 PUSH3 0x8C4 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND DUP3 DUP3 AND SUB SWAP1 DUP1 DUP3 GT ISZERO PUSH3 0xAD8 JUMPI PUSH3 0xAD8 PUSH3 0xA9F JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND DUP2 DUP2 SUB PUSH3 0xB14 JUMPI PUSH3 0xB14 PUSH3 0xA9F JUMP JUMPDEST PUSH1 0x1 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH3 0xA97 PUSH1 0x40 DUP4 ADD DUP5 PUSH3 0x87C JUMP INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH2 0x6FE CODESIZE SUB DUP1 PUSH2 0x6FE DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x22 SWAP2 PUSH2 0x319 JUMP JUMPDEST PUSH2 0x2E DUP3 DUP3 PUSH1 0x0 PUSH2 0x35 JUMP JUMPDEST POP POP PUSH2 0x436 JUMP JUMPDEST PUSH2 0x3E DUP4 PUSH2 0x6B JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD GT DUP1 PUSH2 0x4B JUMPI POP DUP1 JUMPDEST ISZERO PUSH2 0x66 JUMPI PUSH2 0x64 DUP4 DUP4 PUSH2 0xAB PUSH1 0x20 SHL PUSH2 0x29 OR PUSH1 0x20 SHR JUMP JUMPDEST POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x74 DUP2 PUSH2 0xD7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xD0 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x6D7 PUSH1 0x27 SWAP2 CODECOPY PUSH2 0x1A9 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xEA DUP2 PUSH2 0x222 PUSH1 0x20 SHL PUSH2 0x55 OR PUSH1 0x20 SHR JUMP JUMPDEST PUSH2 0x151 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313936373A206E657720696D706C656D656E746174696F6E206973206E PUSH1 0x44 DUP3 ADD MSTORE PUSH13 0x1BDD08184818DBDB9D1C9858DD PUSH1 0x9A SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH2 0x188 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC PUSH1 0x0 SHL PUSH2 0x231 PUSH1 0x20 SHL PUSH2 0x64 OR PUSH1 0x20 SHR JUMP JUMPDEST DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0x1C6 SWAP2 SWAP1 PUSH2 0x3E7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x201 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x206 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x218 DUP7 DUP4 DUP4 DUP8 PUSH2 0x234 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x2A3 JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0x29C JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0x29C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x148 JUMP JUMPDEST POP DUP2 PUSH2 0x2AD JUMP JUMPDEST PUSH2 0x2AD DUP4 DUP4 PUSH2 0x2B5 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x2C5 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x148 SWAP2 SWAP1 PUSH2 0x403 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x310 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2F8 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x32C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x343 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x360 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x374 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x386 JUMPI PUSH2 0x386 PUSH2 0x2DF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x3AE JUMPI PUSH2 0x3AE PUSH2 0x2DF JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x3C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3D8 DUP4 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x2F5 JUMP JUMPDEST DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x3F9 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x2F5 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x422 DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x2F5 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x292 DUP1 PUSH2 0x445 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLDATASIZE PUSH2 0x13 JUMPI PUSH2 0x11 PUSH2 0x17 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x11 JUMPDEST PUSH2 0x27 PUSH2 0x22 PUSH2 0x67 JUMP JUMPDEST PUSH2 0x9F JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x60 PUSH2 0x4E DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x25F PUSH1 0x27 SWAP2 CODECOPY PUSH2 0xC3 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9A PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 DUP1 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE PUSH1 0x0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH2 0xBE JUMPI RETURNDATASIZE PUSH1 0x0 RETURN JUMPDEST RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0xE0 SWAP2 SWAP1 PUSH2 0x20F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x11B JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x120 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x131 DUP7 DUP4 DUP4 DUP8 PUSH2 0x13B JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x1AF JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0x1A8 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0x1A8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP DUP2 PUSH2 0x1B9 JUMP JUMPDEST PUSH2 0x1B9 DUP4 DUP4 PUSH2 0x1C1 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x1D1 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x19F SWAP2 SWAP1 PUSH2 0x22B JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x206 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1EE JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x221 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x1EB JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x24A DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x1EB JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A164 PUSH20 0x6F6C6343000811000A416464726573733A206C6F PUSH24 0x2D6C6576656C2064656C65676174652063616C6C20666169 PUSH13 0x6564A164736F6C634300081100 EXP PUSH1 0xA0 PUSH1 0x40 MSTORE ADDRESS PUSH1 0x80 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x14 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1D PUSH2 0x22 JUMP JUMPDEST PUSH2 0xE1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x8E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x27 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320696E697469 PUSH1 0x44 DUP3 ADD MSTORE PUSH7 0x616C697A696E67 PUSH1 0xC8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xFF SWAP1 DUP2 AND EQ PUSH2 0xDF JUMPI PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH2 0x1224 PUSH2 0x118 PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH2 0x423 ADD MSTORE DUP2 DUP2 PUSH2 0x4A8 ADD MSTORE DUP2 DUP2 PUSH2 0x59E ADD MSTORE DUP2 DUP2 PUSH2 0x623 ADD MSTORE PUSH2 0x70D ADD MSTORE PUSH2 0x1224 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xD2 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x4F1EF286 GT PUSH2 0x7F JUMPI DUP1 PUSH4 0x6ACCAB8C GT PUSH2 0x59 JUMPI DUP1 PUSH4 0x6ACCAB8C EQ PUSH2 0x209 JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0x220 JUMPI DUP1 PUSH4 0xC9C4BFCA EQ PUSH2 0x240 JUMPI DUP1 PUSH4 0xEFE51CCA EQ PUSH2 0x274 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x1BE JUMPI DUP1 PUSH4 0x52D1902D EQ PUSH2 0x1D1 JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0x1F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x3659CFE6 GT PUSH2 0xB0 JUMPI DUP1 PUSH4 0x3659CFE6 EQ PUSH2 0x150 JUMPI DUP1 PUSH4 0x4162169F EQ PUSH2 0x170 JUMPI DUP1 PUSH4 0x41DE6830 EQ PUSH2 0x1A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xD7 JUMPI DUP1 PUSH4 0x39A8C50 EQ PUSH2 0x10C JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0x12E JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xE3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF7 PUSH2 0xF2 CALLDATASIZE PUSH1 0x4 PUSH2 0xF38 JUMP JUMPDEST PUSH2 0x28B JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x118 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x12C PUSH2 0x127 CALLDATASIZE PUSH1 0x4 PUSH2 0xF62 JUMP JUMPDEST PUSH2 0x2F7 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x13A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x143 PUSH2 0x3EF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x103 SWAP2 SWAP1 PUSH2 0xF86 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x15C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x12C PUSH2 0x16B CALLDATASIZE PUSH1 0x4 PUSH2 0xFCF JUMP JUMPDEST PUSH2 0x419 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x17C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xC9 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x103 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 PUSH1 0x40 MLOAD PUSH2 0x103 SWAP2 SWAP1 PUSH2 0xFEC JUMP JUMPDEST PUSH2 0x12C PUSH2 0x1CC CALLDATASIZE PUSH1 0x4 PUSH2 0x102A JUMP JUMPDEST PUSH2 0x594 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1E6 PUSH2 0x700 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x103 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x200 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x18A PUSH2 0x7C5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x215 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1E6 PUSH2 0x12D SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x22C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x12C PUSH2 0x23B CALLDATASIZE PUSH1 0x4 PUSH2 0xFCF JUMP JUMPDEST PUSH2 0x7FD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x24C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1E6 PUSH32 0x821B6E3A557148015A918C89E5D092E878A69854A2D1A410635F771BD5A8A3F5 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x280 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1E6 PUSH2 0x12E SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x41DE683 PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x2BB JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x2D6 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x52D1902D PUSH1 0xE0 SHL EQ JUMPDEST DUP1 PUSH2 0x2F1 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x2 SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH2 0x319 JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF DUP1 DUP4 AND SWAP2 AND LT JUMPDEST PUSH2 0x381 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x44 DUP3 ADD MSTORE PUSH14 0x191E481A5B9A5D1A585B1A5E9959 PUSH1 0x92 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH2 0xFFFF NOT AND PUSH1 0xFF DUP4 AND OR PUSH2 0x100 OR SWAP1 SSTORE PUSH1 0x2 PUSH2 0xFFFF DUP4 AND LT ISZERO PUSH2 0x3A9 JUMPI PUSH1 0x2 PUSH2 0x12E SSTORE JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH1 0xFF DUP3 AND DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH2 0x3F7 PUSH2 0xF1A JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x4A6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x19195B1959D85D1958D85B1B PUSH1 0xA2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x378 JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x501 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x56C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x6163746976652070726F7879 PUSH1 0xA0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x378 JUMP JUMPDEST PUSH2 0x575 DUP2 PUSH2 0x8E9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x591 SWAP2 DUP4 SWAP2 SWAP1 PUSH2 0x926 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x621 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x19195B1959D85D1958D85B1B PUSH1 0xA2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x378 JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x67C PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x6E7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x6163746976652070726F7879 PUSH1 0xA0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x378 JUMP JUMPDEST PUSH2 0x6F0 DUP3 PUSH2 0x8E9 JUMP JUMPDEST PUSH2 0x6FC DUP3 DUP3 PUSH1 0x1 PUSH2 0x926 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x7A0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x38 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x555550535570677261646561626C653A206D757374206E6F742062652063616C PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6C6564207468726F7567682064656C656761746563616C6C0000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x378 JUMP JUMPDEST POP PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7F8 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x2 SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH2 0x81F JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF DUP1 DUP4 AND SWAP2 AND LT JUMPDEST PUSH2 0x882 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x44 DUP3 ADD MSTORE PUSH14 0x191E481A5B9A5D1A585B1A5E9959 PUSH1 0x92 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x378 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH2 0xFFFF NOT AND PUSH1 0xFF DUP4 AND OR PUSH2 0x100 OR SWAP1 SSTORE PUSH2 0x89F DUP3 PUSH2 0xACB JUMP JUMPDEST PUSH1 0x1 PUSH2 0x12D SSTORE PUSH1 0x2 PUSH2 0x12E SSTORE PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH1 0xFF DUP3 AND DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH2 0x3E3 JUMP JUMPDEST PUSH1 0xC9 SLOAD PUSH32 0x821B6E3A557148015A918C89E5D092E878A69854A2D1A410635F771BD5A8A3F5 SWAP1 PUSH2 0x6FC SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ADDRESS CALLER DUP5 PUSH1 0x0 CALLDATASIZE PUSH2 0xB3F JUMP JUMPDEST PUSH32 0x4910FDFA16FED3260ED0E7147F7CC6DA11A60208B5B9406D12A635614FFD9143 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x95E JUMPI PUSH2 0x959 DUP4 PUSH2 0xBFB JUMP JUMPDEST POP POP POP JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x52D1902D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x9B8 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x9B5 SWAP2 DUP2 ADD SWAP1 PUSH2 0x10EE JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0xA2A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524331393637557067726164653A206E657720696D706C656D656E74617469 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F6E206973206E6F742055555053000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x378 JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC DUP2 EQ PUSH2 0xABF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524331393637557067726164653A20756E737570706F727465642070726F78 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6961626C65555549440000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x378 JUMP JUMPDEST POP PUSH2 0x959 DUP4 DUP4 DUP4 PUSH2 0xCC6 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0xB36 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x378 JUMP JUMPDEST PUSH2 0x591 DUP2 PUSH2 0xCF1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x7EF7C883 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0xFDEF9106 SWAP1 PUSH2 0xB73 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x1107 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xB90 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xBB4 SWAP2 SWAP1 PUSH2 0x115B JUMP JUMPDEST PUSH2 0xBF3 JUMPI PUSH1 0x40 MLOAD PUSH4 0xCB6F8ED PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND PUSH1 0x4 DUP4 ADD MSTORE DUP1 DUP8 AND PUSH1 0x24 DUP4 ADD MSTORE DUP6 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x84 ADD PUSH2 0x378 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND EXTCODESIZE PUSH2 0xC78 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313936373A206E657720696D706C656D656E746174696F6E206973206E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F74206120636F6E747261637400000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x378 JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xCCF DUP4 PUSH2 0xD8B JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD GT DUP1 PUSH2 0xCDC JUMPI POP DUP1 JUMPDEST ISZERO PUSH2 0x959 JUMPI PUSH2 0xCEB DUP4 DUP4 PUSH2 0xDCB JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0xD5C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x378 JUMP JUMPDEST PUSH1 0xC9 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xD94 DUP2 PUSH2 0xBFB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xDF0 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x11F1 PUSH1 0x27 SWAP2 CODECOPY PUSH2 0xDF7 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0xE14 SWAP2 SWAP1 PUSH2 0x11A1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xE4F JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xE54 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0xE65 DUP7 DUP4 DUP4 DUP8 PUSH2 0xE6F JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0xEDE JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0xED7 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0xED7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x378 JUMP JUMPDEST POP DUP2 PUSH2 0xEE8 JUMP JUMPDEST PUSH2 0xEE8 DUP4 DUP4 PUSH2 0xEF0 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0xF00 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x378 SWAP2 SWAP1 PUSH2 0x11BD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xF4A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0xDF0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xF74 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH2 0xDF0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0xFB1 JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0xF8F JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x591 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xFE1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xDF0 DUP2 PUSH2 0xFBA JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH1 0x3 DUP4 LT PUSH2 0x100E JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 SWAP1 MSTORE SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x103D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x1048 DUP2 PUSH2 0xFBA JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1065 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1079 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x108B JUMPI PUSH2 0x108B PUSH2 0x1014 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x10B3 JUMPI PUSH2 0x10B3 PUSH2 0x1014 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x10CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1100 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND DUP4 MSTORE DUP1 DUP8 AND PUSH1 0x20 DUP5 ADD MSTORE POP DUP5 PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x80 PUSH1 0x60 DUP4 ADD MSTORE DUP3 PUSH1 0x80 DUP4 ADD MSTORE DUP3 DUP5 PUSH1 0xA0 DUP5 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0xA0 DUP5 DUP5 ADD ADD MSTORE PUSH1 0xA0 PUSH1 0x1F NOT PUSH1 0x1F DUP6 ADD AND DUP4 ADD ADD SWAP1 POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x116D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xDF0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1198 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1180 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x11B3 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x117D JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x11DC DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x117D JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A164 PUSH20 0x6F6C6343000811000A0000000000000000000000 ","sourceMap":"2565:1940:54:-:0;;;2722:87;;;;;;;;;;2767:37;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1605:32:83;;;2565:1940:54;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@deployUUPSProxy_14563":{"entryPoint":1526,"id":14563,"parameterSlots":2,"returnSlots":1},"@implementation_14447":{"entryPoint":null,"id":14447,"parameterSlots":0,"returnSlots":1},"@mockHelpers_11760":{"entryPoint":1330,"id":11760,"parameterSlots":1,"returnSlots":1},"@mockPermissions_11721":{"entryPoint":921,"id":11721,"parameterSlots":3,"returnSlots":1},"@prepareInstallation_12148":{"entryPoint":693,"id":12148,"parameterSlots":2,"returnSlots":2},"@prepareUninstallation_12233":{"entryPoint":496,"id":12233,"parameterSlots":2,"returnSlots":1},"@prepareUpdate_12205":{"entryPoint":521,"id":12205,"parameterSlots":3,"returnSlots":2},"@protocolVersion_14765":{"entryPoint":452,"id":14765,"parameterSlots":0,"returnSlots":1},"@supportsInterface_14438":{"entryPoint":369,"id":14438,"parameterSlots":1,"returnSlots":1},"@supportsInterface_9730":{"entryPoint":null,"id":9730,"parameterSlots":1,"returnSlots":1},"abi_decode_address":{"entryPoint":1728,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_struct_SetupPayload_calldata":{"entryPoint":1757,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_bytes_memory_ptr":{"entryPoint":2469,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_struct$_SetupPayload_$14224_calldata_ptr":{"entryPoint":1776,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_uint16t_struct$_SetupPayload_$14224_calldata_ptr":{"entryPoint":2062,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_bytes4":{"entryPoint":1630,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encodeUpdatedPos_struct_MultiTargetPermission":{"entryPoint":1882,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_bytes":{"entryPoint":2172,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_struct_PreparedSetupData":{"entryPoint":2244,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address_t_bytes_memory_ptr__to_t_address_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":2846,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_address_t_struct$_PreparedSetupData_$14216_memory_ptr__to_t_address_t_struct$_PreparedSetupData_$14216_memory_ptr__fromStack_reversed":{"entryPoint":2675,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr__fromStack_reversed":{"entryPoint":1985,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed":{"entryPoint":1674,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$14216_memory_ptr__to_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$14216_memory_ptr__fromStack_reversed":{"entryPoint":2397,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_contract$_IDAO_$10865__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_uint16__to_t_uint16__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_t_uint160":{"entryPoint":2741,"id":null,"parameterSlots":2,"returnSlots":1},"increment_t_uint160":{"entryPoint":2805,"id":null,"parameterSlots":1,"returnSlots":1},"panic_error_0x11":{"entryPoint":2719,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x21":{"entryPoint":1860,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x32":{"entryPoint":2783,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":2447,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:9309:92","statements":[{"nodeType":"YulBlock","src":"6:3:92","statements":[]},{"body":{"nodeType":"YulBlock","src":"83:217:92","statements":[{"body":{"nodeType":"YulBlock","src":"129:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"138:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"141:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"131:6:92"},"nodeType":"YulFunctionCall","src":"131:12:92"},"nodeType":"YulExpressionStatement","src":"131:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"104:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"113:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"100:3:92"},"nodeType":"YulFunctionCall","src":"100:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"125:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"96:3:92"},"nodeType":"YulFunctionCall","src":"96:32:92"},"nodeType":"YulIf","src":"93:52:92"},{"nodeType":"YulVariableDeclaration","src":"154:36:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"180:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"167:12:92"},"nodeType":"YulFunctionCall","src":"167:23:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"158:5:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"254:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"263:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"266:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"256:6:92"},"nodeType":"YulFunctionCall","src":"256:12:92"},"nodeType":"YulExpressionStatement","src":"256:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"212:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"223:5:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"234:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"239:10:92","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"230:3:92"},"nodeType":"YulFunctionCall","src":"230:20:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"219:3:92"},"nodeType":"YulFunctionCall","src":"219:32:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"209:2:92"},"nodeType":"YulFunctionCall","src":"209:43:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"202:6:92"},"nodeType":"YulFunctionCall","src":"202:51:92"},"nodeType":"YulIf","src":"199:71:92"},{"nodeType":"YulAssignment","src":"279:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"289:5:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"279:6:92"}]}]},"name":"abi_decode_tuple_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"49:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"60:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"72:6:92","type":""}],"src":"14:286:92"},{"body":{"nodeType":"YulBlock","src":"400:92:92","statements":[{"nodeType":"YulAssignment","src":"410:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"422:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"433:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"418:3:92"},"nodeType":"YulFunctionCall","src":"418:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"410:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"452:9:92"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"477:6:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"470:6:92"},"nodeType":"YulFunctionCall","src":"470:14:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"463:6:92"},"nodeType":"YulFunctionCall","src":"463:22:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"445:6:92"},"nodeType":"YulFunctionCall","src":"445:41:92"},"nodeType":"YulExpressionStatement","src":"445:41:92"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"369:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"380:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"391:4:92","type":""}],"src":"305:187:92"},{"body":{"nodeType":"YulBlock","src":"640:358:92","statements":[{"nodeType":"YulAssignment","src":"650:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"662:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"673:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"658:3:92"},"nodeType":"YulFunctionCall","src":"658:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"650:4:92"}]},{"nodeType":"YulVariableDeclaration","src":"685:20:92","value":{"name":"headStart","nodeType":"YulIdentifier","src":"696:9:92"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"689:3:92","type":""}]},{"nodeType":"YulAssignment","src":"714:16:92","value":{"name":"headStart","nodeType":"YulIdentifier","src":"721:9:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"714:3:92"}]},{"nodeType":"YulVariableDeclaration","src":"739:20:92","value":{"name":"value0","nodeType":"YulIdentifier","src":"753:6:92"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"743:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"768:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"777:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"772:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"834:158:92","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"855:3:92"},{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"870:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"864:5:92"},"nodeType":"YulFunctionCall","src":"864:13:92"},{"kind":"number","nodeType":"YulLiteral","src":"879:4:92","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"860:3:92"},"nodeType":"YulFunctionCall","src":"860:24:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"848:6:92"},"nodeType":"YulFunctionCall","src":"848:37:92"},"nodeType":"YulExpressionStatement","src":"848:37:92"},{"nodeType":"YulVariableDeclaration","src":"898:14:92","value":{"kind":"number","nodeType":"YulLiteral","src":"908:4:92","type":"","value":"0x20"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"902:2:92","type":""}]},{"nodeType":"YulAssignment","src":"925:19:92","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"936:3:92"},{"name":"_1","nodeType":"YulIdentifier","src":"941:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"932:3:92"},"nodeType":"YulFunctionCall","src":"932:12:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"925:3:92"}]},{"nodeType":"YulAssignment","src":"957:25:92","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"971:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"979:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"967:3:92"},"nodeType":"YulFunctionCall","src":"967:15:92"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"957:6:92"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"798:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"801:4:92","type":"","value":"0x03"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"795:2:92"},"nodeType":"YulFunctionCall","src":"795:11:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"807:18:92","statements":[{"nodeType":"YulAssignment","src":"809:14:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"818:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"821:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"814:3:92"},"nodeType":"YulFunctionCall","src":"814:9:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"809:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"791:3:92","statements":[]},"src":"787:205:92"}]},"name":"abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"609:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"620:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"631:4:92","type":""}],"src":"497:501:92"},{"body":{"nodeType":"YulBlock","src":"1104:125:92","statements":[{"nodeType":"YulAssignment","src":"1114:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1126:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1137:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1122:3:92"},"nodeType":"YulFunctionCall","src":"1122:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1114:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1156:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1171:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"1179:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1167:3:92"},"nodeType":"YulFunctionCall","src":"1167:55:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1149:6:92"},"nodeType":"YulFunctionCall","src":"1149:74:92"},"nodeType":"YulExpressionStatement","src":"1149:74:92"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1073:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1084:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1095:4:92","type":""}],"src":"1003:226:92"},{"body":{"nodeType":"YulBlock","src":"1283:147:92","statements":[{"nodeType":"YulAssignment","src":"1293:29:92","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1315:6:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1302:12:92"},"nodeType":"YulFunctionCall","src":"1302:20:92"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"1293:5:92"}]},{"body":{"nodeType":"YulBlock","src":"1408:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1417:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1420:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1410:6:92"},"nodeType":"YulFunctionCall","src":"1410:12:92"},"nodeType":"YulExpressionStatement","src":"1410:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1344:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1355:5:92"},{"kind":"number","nodeType":"YulLiteral","src":"1362:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1351:3:92"},"nodeType":"YulFunctionCall","src":"1351:54:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1341:2:92"},"nodeType":"YulFunctionCall","src":"1341:65:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1334:6:92"},"nodeType":"YulFunctionCall","src":"1334:73:92"},"nodeType":"YulIf","src":"1331:93:92"}]},"name":"abi_decode_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"1262:6:92","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"1273:5:92","type":""}],"src":"1234:196:92"},{"body":{"nodeType":"YulBlock","src":"1510:85:92","statements":[{"body":{"nodeType":"YulBlock","src":"1549:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1558:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1561:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1551:6:92"},"nodeType":"YulFunctionCall","src":"1551:12:92"},"nodeType":"YulExpressionStatement","src":"1551:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"end","nodeType":"YulIdentifier","src":"1531:3:92"},{"name":"offset","nodeType":"YulIdentifier","src":"1536:6:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1527:3:92"},"nodeType":"YulFunctionCall","src":"1527:16:92"},{"kind":"number","nodeType":"YulLiteral","src":"1545:2:92","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1523:3:92"},"nodeType":"YulFunctionCall","src":"1523:25:92"},"nodeType":"YulIf","src":"1520:45:92"},{"nodeType":"YulAssignment","src":"1574:15:92","value":{"name":"offset","nodeType":"YulIdentifier","src":"1583:6:92"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"1574:5:92"}]}]},"name":"abi_decode_struct_SetupPayload_calldata","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"1484:6:92","type":""},{"name":"end","nodeType":"YulTypedName","src":"1492:3:92","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"1500:5:92","type":""}],"src":"1435:160:92"},{"body":{"nodeType":"YulBlock","src":"1720:321:92","statements":[{"body":{"nodeType":"YulBlock","src":"1766:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1775:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1778:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1768:6:92"},"nodeType":"YulFunctionCall","src":"1768:12:92"},"nodeType":"YulExpressionStatement","src":"1768:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1741:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"1750:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1737:3:92"},"nodeType":"YulFunctionCall","src":"1737:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"1762:2:92","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1733:3:92"},"nodeType":"YulFunctionCall","src":"1733:32:92"},"nodeType":"YulIf","src":"1730:52:92"},{"nodeType":"YulAssignment","src":"1791:39:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1820:9:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"1801:18:92"},"nodeType":"YulFunctionCall","src":"1801:29:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1791:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"1839:46:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1870:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1881:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1866:3:92"},"nodeType":"YulFunctionCall","src":"1866:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1853:12:92"},"nodeType":"YulFunctionCall","src":"1853:32:92"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1843:6:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"1928:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1937:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1940:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1930:6:92"},"nodeType":"YulFunctionCall","src":"1930:12:92"},"nodeType":"YulExpressionStatement","src":"1930:12:92"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1900:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"1908:18:92","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1897:2:92"},"nodeType":"YulFunctionCall","src":"1897:30:92"},"nodeType":"YulIf","src":"1894:50:92"},{"nodeType":"YulAssignment","src":"1953:82:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2007:9:92"},{"name":"offset","nodeType":"YulIdentifier","src":"2018:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2003:3:92"},"nodeType":"YulFunctionCall","src":"2003:22:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2027:7:92"}],"functionName":{"name":"abi_decode_struct_SetupPayload_calldata","nodeType":"YulIdentifier","src":"1963:39:92"},"nodeType":"YulFunctionCall","src":"1963:72:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1953:6:92"}]}]},"name":"abi_decode_tuple_t_addresst_struct$_SetupPayload_$14224_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1678:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1689:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1701:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1709:6:92","type":""}],"src":"1600:441:92"},{"body":{"nodeType":"YulBlock","src":"2078:95:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2095:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2102:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"2107:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2098:3:92"},"nodeType":"YulFunctionCall","src":"2098:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2088:6:92"},"nodeType":"YulFunctionCall","src":"2088:31:92"},"nodeType":"YulExpressionStatement","src":"2088:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2135:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"2138:4:92","type":"","value":"0x21"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2128:6:92"},"nodeType":"YulFunctionCall","src":"2128:15:92"},"nodeType":"YulExpressionStatement","src":"2128:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2159:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2162:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2152:6:92"},"nodeType":"YulFunctionCall","src":"2152:15:92"},"nodeType":"YulExpressionStatement","src":"2152:15:92"}]},"name":"panic_error_0x21","nodeType":"YulFunctionDefinition","src":"2046:127:92"},{"body":{"nodeType":"YulBlock","src":"2268:606:92","statements":[{"nodeType":"YulVariableDeclaration","src":"2278:23:92","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2294:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2288:5:92"},"nodeType":"YulFunctionCall","src":"2288:13:92"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"2282:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"2339:111:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2360:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2367:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"2372:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2363:3:92"},"nodeType":"YulFunctionCall","src":"2363:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2353:6:92"},"nodeType":"YulFunctionCall","src":"2353:31:92"},"nodeType":"YulExpressionStatement","src":"2353:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2404:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"2407:4:92","type":"","value":"0x21"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2397:6:92"},"nodeType":"YulFunctionCall","src":"2397:15:92"},"nodeType":"YulExpressionStatement","src":"2397:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2432:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2435:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2425:6:92"},"nodeType":"YulFunctionCall","src":"2425:15:92"},"nodeType":"YulExpressionStatement","src":"2425:15:92"}]},"condition":{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"2323:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"2327:1:92","type":"","value":"3"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2320:2:92"},"nodeType":"YulFunctionCall","src":"2320:9:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2313:6:92"},"nodeType":"YulFunctionCall","src":"2313:17:92"},"nodeType":"YulIf","src":"2310:140:92"},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2466:3:92"},{"name":"_1","nodeType":"YulIdentifier","src":"2471:2:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2459:6:92"},"nodeType":"YulFunctionCall","src":"2459:15:92"},"nodeType":"YulExpressionStatement","src":"2459:15:92"},{"nodeType":"YulVariableDeclaration","src":"2483:44:92","value":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2513:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"2521:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2509:3:92"},"nodeType":"YulFunctionCall","src":"2509:17:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2503:5:92"},"nodeType":"YulFunctionCall","src":"2503:24:92"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"2487:12:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2536:52:92","value":{"kind":"number","nodeType":"YulLiteral","src":"2546:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"2540:2:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2608:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"2613:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2604:3:92"},"nodeType":"YulFunctionCall","src":"2604:14:92"},{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"2624:12:92"},{"name":"_2","nodeType":"YulIdentifier","src":"2638:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2620:3:92"},"nodeType":"YulFunctionCall","src":"2620:21:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2597:6:92"},"nodeType":"YulFunctionCall","src":"2597:45:92"},"nodeType":"YulExpressionStatement","src":"2597:45:92"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2662:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"2667:4:92","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2658:3:92"},"nodeType":"YulFunctionCall","src":"2658:14:92"},{"arguments":[{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2688:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"2696:4:92","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2684:3:92"},"nodeType":"YulFunctionCall","src":"2684:17:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2678:5:92"},"nodeType":"YulFunctionCall","src":"2678:24:92"},{"name":"_2","nodeType":"YulIdentifier","src":"2704:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2674:3:92"},"nodeType":"YulFunctionCall","src":"2674:33:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2651:6:92"},"nodeType":"YulFunctionCall","src":"2651:57:92"},"nodeType":"YulExpressionStatement","src":"2651:57:92"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2728:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"2733:4:92","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2724:3:92"},"nodeType":"YulFunctionCall","src":"2724:14:92"},{"arguments":[{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2754:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"2762:4:92","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2750:3:92"},"nodeType":"YulFunctionCall","src":"2750:17:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2744:5:92"},"nodeType":"YulFunctionCall","src":"2744:24:92"},{"name":"_2","nodeType":"YulIdentifier","src":"2770:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2740:3:92"},"nodeType":"YulFunctionCall","src":"2740:33:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2717:6:92"},"nodeType":"YulFunctionCall","src":"2717:57:92"},"nodeType":"YulExpressionStatement","src":"2717:57:92"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2794:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"2799:4:92","type":"","value":"0x80"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2790:3:92"},"nodeType":"YulFunctionCall","src":"2790:14:92"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2816:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"2824:4:92","type":"","value":"0x80"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2812:3:92"},"nodeType":"YulFunctionCall","src":"2812:17:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2806:5:92"},"nodeType":"YulFunctionCall","src":"2806:24:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2783:6:92"},"nodeType":"YulFunctionCall","src":"2783:48:92"},"nodeType":"YulExpressionStatement","src":"2783:48:92"},{"nodeType":"YulAssignment","src":"2840:28:92","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2858:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"2863:4:92","type":"","value":"0xa0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2854:3:92"},"nodeType":"YulFunctionCall","src":"2854:14:92"},"variableNames":[{"name":"updatedPos","nodeType":"YulIdentifier","src":"2840:10:92"}]}]},"name":"abi_encodeUpdatedPos_struct_MultiTargetPermission","nodeType":"YulFunctionDefinition","parameters":[{"name":"value0","nodeType":"YulTypedName","src":"2237:6:92","type":""},{"name":"pos","nodeType":"YulTypedName","src":"2245:3:92","type":""}],"returnVariables":[{"name":"updatedPos","nodeType":"YulTypedName","src":"2253:10:92","type":""}],"src":"2178:696:92"},{"body":{"nodeType":"YulBlock","src":"3110:499:92","statements":[{"nodeType":"YulVariableDeclaration","src":"3120:12:92","value":{"kind":"number","nodeType":"YulLiteral","src":"3130:2:92","type":"","value":"32"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"3124:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3141:32:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3159:9:92"},{"name":"_1","nodeType":"YulIdentifier","src":"3170:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3155:3:92"},"nodeType":"YulFunctionCall","src":"3155:18:92"},"variables":[{"name":"tail_1","nodeType":"YulTypedName","src":"3145:6:92","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3189:9:92"},{"name":"_1","nodeType":"YulIdentifier","src":"3200:2:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3182:6:92"},"nodeType":"YulFunctionCall","src":"3182:21:92"},"nodeType":"YulExpressionStatement","src":"3182:21:92"},{"nodeType":"YulVariableDeclaration","src":"3212:17:92","value":{"name":"tail_1","nodeType":"YulIdentifier","src":"3223:6:92"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"3216:3:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3238:27:92","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3258:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3252:5:92"},"nodeType":"YulFunctionCall","src":"3252:13:92"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"3242:6:92","type":""}]},{"expression":{"arguments":[{"name":"tail_1","nodeType":"YulIdentifier","src":"3281:6:92"},{"name":"length","nodeType":"YulIdentifier","src":"3289:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3274:6:92"},"nodeType":"YulFunctionCall","src":"3274:22:92"},"nodeType":"YulExpressionStatement","src":"3274:22:92"},{"nodeType":"YulAssignment","src":"3305:25:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3316:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3327:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3312:3:92"},"nodeType":"YulFunctionCall","src":"3312:18:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"3305:3:92"}]},{"nodeType":"YulVariableDeclaration","src":"3339:29:92","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3357:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"3365:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3353:3:92"},"nodeType":"YulFunctionCall","src":"3353:15:92"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"3343:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3377:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"3386:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"3381:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"3445:138:92","statements":[{"nodeType":"YulAssignment","src":"3459:76:92","value":{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"3522:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3516:5:92"},"nodeType":"YulFunctionCall","src":"3516:13:92"},{"name":"pos","nodeType":"YulIdentifier","src":"3531:3:92"}],"functionName":{"name":"abi_encodeUpdatedPos_struct_MultiTargetPermission","nodeType":"YulIdentifier","src":"3466:49:92"},"nodeType":"YulFunctionCall","src":"3466:69:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"3459:3:92"}]},{"nodeType":"YulAssignment","src":"3548:25:92","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"3562:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"3570:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3558:3:92"},"nodeType":"YulFunctionCall","src":"3558:15:92"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"3548:6:92"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3407:1:92"},{"name":"length","nodeType":"YulIdentifier","src":"3410:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"3404:2:92"},"nodeType":"YulFunctionCall","src":"3404:13:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"3418:18:92","statements":[{"nodeType":"YulAssignment","src":"3420:14:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3429:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"3432:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3425:3:92"},"nodeType":"YulFunctionCall","src":"3425:9:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"3420:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"3400:3:92","statements":[]},"src":"3396:187:92"},{"nodeType":"YulAssignment","src":"3592:11:92","value":{"name":"pos","nodeType":"YulIdentifier","src":"3600:3:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3592:4:92"}]}]},"name":"abi_encode_tuple_t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3079:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3090:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3101:4:92","type":""}],"src":"2879:730:92"},{"body":{"nodeType":"YulBlock","src":"3750:465:92","statements":[{"body":{"nodeType":"YulBlock","src":"3796:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3805:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3808:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3798:6:92"},"nodeType":"YulFunctionCall","src":"3798:12:92"},"nodeType":"YulExpressionStatement","src":"3798:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3771:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"3780:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3767:3:92"},"nodeType":"YulFunctionCall","src":"3767:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"3792:2:92","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3763:3:92"},"nodeType":"YulFunctionCall","src":"3763:32:92"},"nodeType":"YulIf","src":"3760:52:92"},{"nodeType":"YulAssignment","src":"3821:39:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3850:9:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"3831:18:92"},"nodeType":"YulFunctionCall","src":"3831:29:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3821:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"3869:45:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3899:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3910:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3895:3:92"},"nodeType":"YulFunctionCall","src":"3895:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3882:12:92"},"nodeType":"YulFunctionCall","src":"3882:32:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"3873:5:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"3964:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3973:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3976:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3966:6:92"},"nodeType":"YulFunctionCall","src":"3966:12:92"},"nodeType":"YulExpressionStatement","src":"3966:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3936:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3947:5:92"},{"kind":"number","nodeType":"YulLiteral","src":"3954:6:92","type":"","value":"0xffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3943:3:92"},"nodeType":"YulFunctionCall","src":"3943:18:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"3933:2:92"},"nodeType":"YulFunctionCall","src":"3933:29:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3926:6:92"},"nodeType":"YulFunctionCall","src":"3926:37:92"},"nodeType":"YulIf","src":"3923:57:92"},{"nodeType":"YulAssignment","src":"3989:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"3999:5:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"3989:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"4013:46:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4044:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4055:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4040:3:92"},"nodeType":"YulFunctionCall","src":"4040:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4027:12:92"},"nodeType":"YulFunctionCall","src":"4027:32:92"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4017:6:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"4102:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4111:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4114:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4104:6:92"},"nodeType":"YulFunctionCall","src":"4104:12:92"},"nodeType":"YulExpressionStatement","src":"4104:12:92"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"4074:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"4082:18:92","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4071:2:92"},"nodeType":"YulFunctionCall","src":"4071:30:92"},"nodeType":"YulIf","src":"4068:50:92"},{"nodeType":"YulAssignment","src":"4127:82:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4181:9:92"},{"name":"offset","nodeType":"YulIdentifier","src":"4192:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4177:3:92"},"nodeType":"YulFunctionCall","src":"4177:22:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4201:7:92"}],"functionName":{"name":"abi_decode_struct_SetupPayload_calldata","nodeType":"YulIdentifier","src":"4137:39:92"},"nodeType":"YulFunctionCall","src":"4137:72:92"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"4127:6:92"}]}]},"name":"abi_decode_tuple_t_addresst_uint16t_struct$_SetupPayload_$14224_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3700:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3711:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3723:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"3731:6:92","type":""},{"name":"value2","nodeType":"YulTypedName","src":"3739:6:92","type":""}],"src":"3614:601:92"},{"body":{"nodeType":"YulBlock","src":"4269:373:92","statements":[{"nodeType":"YulVariableDeclaration","src":"4279:26:92","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4299:5:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4293:5:92"},"nodeType":"YulFunctionCall","src":"4293:12:92"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"4283:6:92","type":""}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4321:3:92"},{"name":"length","nodeType":"YulIdentifier","src":"4326:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4314:6:92"},"nodeType":"YulFunctionCall","src":"4314:19:92"},"nodeType":"YulExpressionStatement","src":"4314:19:92"},{"nodeType":"YulVariableDeclaration","src":"4342:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"4351:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"4346:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"4413:110:92","statements":[{"nodeType":"YulVariableDeclaration","src":"4427:14:92","value":{"kind":"number","nodeType":"YulLiteral","src":"4437:4:92","type":"","value":"0x20"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"4431:2:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4469:3:92"},{"name":"i","nodeType":"YulIdentifier","src":"4474:1:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4465:3:92"},"nodeType":"YulFunctionCall","src":"4465:11:92"},{"name":"_1","nodeType":"YulIdentifier","src":"4478:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4461:3:92"},"nodeType":"YulFunctionCall","src":"4461:20:92"},{"arguments":[{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4497:5:92"},{"name":"i","nodeType":"YulIdentifier","src":"4504:1:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4493:3:92"},"nodeType":"YulFunctionCall","src":"4493:13:92"},{"name":"_1","nodeType":"YulIdentifier","src":"4508:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4489:3:92"},"nodeType":"YulFunctionCall","src":"4489:22:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4483:5:92"},"nodeType":"YulFunctionCall","src":"4483:29:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4454:6:92"},"nodeType":"YulFunctionCall","src":"4454:59:92"},"nodeType":"YulExpressionStatement","src":"4454:59:92"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"4372:1:92"},{"name":"length","nodeType":"YulIdentifier","src":"4375:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"4369:2:92"},"nodeType":"YulFunctionCall","src":"4369:13:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"4383:21:92","statements":[{"nodeType":"YulAssignment","src":"4385:17:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"4394:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"4397:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4390:3:92"},"nodeType":"YulFunctionCall","src":"4390:12:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"4385:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"4365:3:92","statements":[]},"src":"4361:162:92"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4547:3:92"},{"name":"length","nodeType":"YulIdentifier","src":"4552:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4543:3:92"},"nodeType":"YulFunctionCall","src":"4543:16:92"},{"kind":"number","nodeType":"YulLiteral","src":"4561:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4539:3:92"},"nodeType":"YulFunctionCall","src":"4539:27:92"},{"kind":"number","nodeType":"YulLiteral","src":"4568:1:92","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4532:6:92"},"nodeType":"YulFunctionCall","src":"4532:38:92"},"nodeType":"YulExpressionStatement","src":"4532:38:92"},{"nodeType":"YulAssignment","src":"4579:57:92","value":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4594:3:92"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"4607:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"4615:2:92","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4603:3:92"},"nodeType":"YulFunctionCall","src":"4603:15:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4624:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"4620:3:92"},"nodeType":"YulFunctionCall","src":"4620:7:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4599:3:92"},"nodeType":"YulFunctionCall","src":"4599:29:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4590:3:92"},"nodeType":"YulFunctionCall","src":"4590:39:92"},{"kind":"number","nodeType":"YulLiteral","src":"4631:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4586:3:92"},"nodeType":"YulFunctionCall","src":"4586:50:92"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"4579:3:92"}]}]},"name":"abi_encode_bytes","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"4246:5:92","type":""},{"name":"pos","nodeType":"YulTypedName","src":"4253:3:92","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"4261:3:92","type":""}],"src":"4220:422:92"},{"body":{"nodeType":"YulBlock","src":"4715:1094:92","statements":[{"nodeType":"YulVariableDeclaration","src":"4725:26:92","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4741:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"4746:4:92","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4737:3:92"},"nodeType":"YulFunctionCall","src":"4737:14:92"},"variables":[{"name":"tail","nodeType":"YulTypedName","src":"4729:4:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4760:32:92","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4786:5:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4780:5:92"},"nodeType":"YulFunctionCall","src":"4780:12:92"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"4764:12:92","type":""}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4808:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"4813:4:92","type":"","value":"0x40"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4801:6:92"},"nodeType":"YulFunctionCall","src":"4801:17:92"},"nodeType":"YulExpressionStatement","src":"4801:17:92"},{"nodeType":"YulVariableDeclaration","src":"4827:17:92","value":{"name":"tail","nodeType":"YulIdentifier","src":"4840:4:92"},"variables":[{"name":"pos_1","nodeType":"YulTypedName","src":"4831:5:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4853:33:92","value":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"4873:12:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4867:5:92"},"nodeType":"YulFunctionCall","src":"4867:19:92"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"4857:6:92","type":""}]},{"expression":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"4902:4:92"},{"name":"length","nodeType":"YulIdentifier","src":"4908:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4895:6:92"},"nodeType":"YulFunctionCall","src":"4895:20:92"},"nodeType":"YulExpressionStatement","src":"4895:20:92"},{"nodeType":"YulAssignment","src":"4924:21:92","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4937:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"4942:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4933:3:92"},"nodeType":"YulFunctionCall","src":"4933:12:92"},"variableNames":[{"name":"pos_1","nodeType":"YulIdentifier","src":"4924:5:92"}]},{"nodeType":"YulVariableDeclaration","src":"4954:14:92","value":{"kind":"number","nodeType":"YulLiteral","src":"4964:4:92","type":"","value":"0x20"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"4958:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4977:35:92","value":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"4995:12:92"},{"name":"_1","nodeType":"YulIdentifier","src":"5009:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4991:3:92"},"nodeType":"YulFunctionCall","src":"4991:21:92"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"4981:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5021:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"5030:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"5025:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"5089:175:92","statements":[{"expression":{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5110:5:92"},{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"5127:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5121:5:92"},"nodeType":"YulFunctionCall","src":"5121:13:92"},{"kind":"number","nodeType":"YulLiteral","src":"5136:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5117:3:92"},"nodeType":"YulFunctionCall","src":"5117:62:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5103:6:92"},"nodeType":"YulFunctionCall","src":"5103:77:92"},"nodeType":"YulExpressionStatement","src":"5103:77:92"},{"nodeType":"YulAssignment","src":"5193:23:92","value":{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5206:5:92"},{"name":"_1","nodeType":"YulIdentifier","src":"5213:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5202:3:92"},"nodeType":"YulFunctionCall","src":"5202:14:92"},"variableNames":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5193:5:92"}]},{"nodeType":"YulAssignment","src":"5229:25:92","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"5243:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"5251:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5239:3:92"},"nodeType":"YulFunctionCall","src":"5239:15:92"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"5229:6:92"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"5051:1:92"},{"name":"length","nodeType":"YulIdentifier","src":"5054:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"5048:2:92"},"nodeType":"YulFunctionCall","src":"5048:13:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"5062:18:92","statements":[{"nodeType":"YulAssignment","src":"5064:14:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"5073:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"5076:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5069:3:92"},"nodeType":"YulFunctionCall","src":"5069:9:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"5064:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"5044:3:92","statements":[]},"src":"5040:224:92"},{"nodeType":"YulVariableDeclaration","src":"5273:43:92","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5305:5:92"},{"name":"_1","nodeType":"YulIdentifier","src":"5312:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5301:3:92"},"nodeType":"YulFunctionCall","src":"5301:14:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5295:5:92"},"nodeType":"YulFunctionCall","src":"5295:21:92"},"variables":[{"name":"memberValue0_1","nodeType":"YulTypedName","src":"5277:14:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5336:3:92"},{"name":"_1","nodeType":"YulIdentifier","src":"5341:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5332:3:92"},"nodeType":"YulFunctionCall","src":"5332:12:92"},{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5350:5:92"},{"name":"pos","nodeType":"YulIdentifier","src":"5357:3:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5346:3:92"},"nodeType":"YulFunctionCall","src":"5346:15:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5325:6:92"},"nodeType":"YulFunctionCall","src":"5325:37:92"},"nodeType":"YulExpressionStatement","src":"5325:37:92"},{"nodeType":"YulVariableDeclaration","src":"5371:18:92","value":{"name":"pos_1","nodeType":"YulIdentifier","src":"5384:5:92"},"variables":[{"name":"pos_2","nodeType":"YulTypedName","src":"5375:5:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5398:37:92","value":{"arguments":[{"name":"memberValue0_1","nodeType":"YulIdentifier","src":"5420:14:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5414:5:92"},"nodeType":"YulFunctionCall","src":"5414:21:92"},"variables":[{"name":"length_1","nodeType":"YulTypedName","src":"5402:8:92","type":""}]},{"expression":{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5451:5:92"},{"name":"length_1","nodeType":"YulIdentifier","src":"5458:8:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5444:6:92"},"nodeType":"YulFunctionCall","src":"5444:23:92"},"nodeType":"YulExpressionStatement","src":"5444:23:92"},{"nodeType":"YulAssignment","src":"5476:23:92","value":{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5489:5:92"},{"name":"_1","nodeType":"YulIdentifier","src":"5496:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5485:3:92"},"nodeType":"YulFunctionCall","src":"5485:14:92"},"variableNames":[{"name":"pos_2","nodeType":"YulIdentifier","src":"5476:5:92"}]},{"nodeType":"YulVariableDeclaration","src":"5508:39:92","value":{"arguments":[{"name":"memberValue0_1","nodeType":"YulIdentifier","src":"5528:14:92"},{"name":"_1","nodeType":"YulIdentifier","src":"5544:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5524:3:92"},"nodeType":"YulFunctionCall","src":"5524:23:92"},"variables":[{"name":"srcPtr_1","nodeType":"YulTypedName","src":"5512:8:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5556:12:92","value":{"kind":"number","nodeType":"YulLiteral","src":"5567:1:92","type":"","value":"0"},"variables":[{"name":"i_1","nodeType":"YulTypedName","src":"5560:3:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"5634:148:92","statements":[{"nodeType":"YulAssignment","src":"5648:82:92","value":{"arguments":[{"arguments":[{"name":"srcPtr_1","nodeType":"YulIdentifier","src":"5713:8:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5707:5:92"},"nodeType":"YulFunctionCall","src":"5707:15:92"},{"name":"pos_2","nodeType":"YulIdentifier","src":"5724:5:92"}],"functionName":{"name":"abi_encodeUpdatedPos_struct_MultiTargetPermission","nodeType":"YulIdentifier","src":"5657:49:92"},"nodeType":"YulFunctionCall","src":"5657:73:92"},"variableNames":[{"name":"pos_2","nodeType":"YulIdentifier","src":"5648:5:92"}]},{"nodeType":"YulAssignment","src":"5743:29:92","value":{"arguments":[{"name":"srcPtr_1","nodeType":"YulIdentifier","src":"5759:8:92"},{"name":"_1","nodeType":"YulIdentifier","src":"5769:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5755:3:92"},"nodeType":"YulFunctionCall","src":"5755:17:92"},"variableNames":[{"name":"srcPtr_1","nodeType":"YulIdentifier","src":"5743:8:92"}]}]},"condition":{"arguments":[{"name":"i_1","nodeType":"YulIdentifier","src":"5588:3:92"},{"name":"length_1","nodeType":"YulIdentifier","src":"5593:8:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"5585:2:92"},"nodeType":"YulFunctionCall","src":"5585:17:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"5603:22:92","statements":[{"nodeType":"YulAssignment","src":"5605:18:92","value":{"arguments":[{"name":"i_1","nodeType":"YulIdentifier","src":"5616:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"5621:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5612:3:92"},"nodeType":"YulFunctionCall","src":"5612:11:92"},"variableNames":[{"name":"i_1","nodeType":"YulIdentifier","src":"5605:3:92"}]}]},"pre":{"nodeType":"YulBlock","src":"5581:3:92","statements":[]},"src":"5577:205:92"},{"nodeType":"YulAssignment","src":"5791:12:92","value":{"name":"pos_2","nodeType":"YulIdentifier","src":"5798:5:92"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"5791:3:92"}]}]},"name":"abi_encode_struct_PreparedSetupData","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"4692:5:92","type":""},{"name":"pos","nodeType":"YulTypedName","src":"4699:3:92","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"4707:3:92","type":""}],"src":"4647:1162:92"},{"body":{"nodeType":"YulBlock","src":"6033:231:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6050:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6061:2:92","type":"","value":"64"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6043:6:92"},"nodeType":"YulFunctionCall","src":"6043:21:92"},"nodeType":"YulExpressionStatement","src":"6043:21:92"},{"nodeType":"YulVariableDeclaration","src":"6073:58:92","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6104:6:92"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6116:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6127:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6112:3:92"},"nodeType":"YulFunctionCall","src":"6112:18:92"}],"functionName":{"name":"abi_encode_bytes","nodeType":"YulIdentifier","src":"6087:16:92"},"nodeType":"YulFunctionCall","src":"6087:44:92"},"variables":[{"name":"tail_1","nodeType":"YulTypedName","src":"6077:6:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6151:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6162:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6147:3:92"},"nodeType":"YulFunctionCall","src":"6147:18:92"},{"arguments":[{"name":"tail_1","nodeType":"YulIdentifier","src":"6171:6:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"6179:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6167:3:92"},"nodeType":"YulFunctionCall","src":"6167:22:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6140:6:92"},"nodeType":"YulFunctionCall","src":"6140:50:92"},"nodeType":"YulExpressionStatement","src":"6140:50:92"},{"nodeType":"YulAssignment","src":"6199:59:92","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"6243:6:92"},{"name":"tail_1","nodeType":"YulIdentifier","src":"6251:6:92"}],"functionName":{"name":"abi_encode_struct_PreparedSetupData","nodeType":"YulIdentifier","src":"6207:35:92"},"nodeType":"YulFunctionCall","src":"6207:51:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6199:4:92"}]}]},"name":"abi_encode_tuple_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$14216_memory_ptr__to_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$14216_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5994:9:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"6005:6:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"6013:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6024:4:92","type":""}],"src":"5814:450:92"},{"body":{"nodeType":"YulBlock","src":"6301:95:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6318:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6325:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"6330:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"6321:3:92"},"nodeType":"YulFunctionCall","src":"6321:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6311:6:92"},"nodeType":"YulFunctionCall","src":"6311:31:92"},"nodeType":"YulExpressionStatement","src":"6311:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6358:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"6361:4:92","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6351:6:92"},"nodeType":"YulFunctionCall","src":"6351:15:92"},"nodeType":"YulExpressionStatement","src":"6351:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6382:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6385:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6375:6:92"},"nodeType":"YulFunctionCall","src":"6375:15:92"},"nodeType":"YulExpressionStatement","src":"6375:15:92"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"6269:127:92"},{"body":{"nodeType":"YulBlock","src":"6497:899:92","statements":[{"body":{"nodeType":"YulBlock","src":"6543:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6552:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6555:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6545:6:92"},"nodeType":"YulFunctionCall","src":"6545:12:92"},"nodeType":"YulExpressionStatement","src":"6545:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"6518:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"6527:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6514:3:92"},"nodeType":"YulFunctionCall","src":"6514:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"6539:2:92","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6510:3:92"},"nodeType":"YulFunctionCall","src":"6510:32:92"},"nodeType":"YulIf","src":"6507:52:92"},{"nodeType":"YulAssignment","src":"6568:39:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6597:9:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"6578:18:92"},"nodeType":"YulFunctionCall","src":"6578:29:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"6568:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"6616:46:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6647:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6658:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6643:3:92"},"nodeType":"YulFunctionCall","src":"6643:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6630:12:92"},"nodeType":"YulFunctionCall","src":"6630:32:92"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"6620:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"6671:28:92","value":{"kind":"number","nodeType":"YulLiteral","src":"6681:18:92","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"6675:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"6726:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6735:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6738:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6728:6:92"},"nodeType":"YulFunctionCall","src":"6728:12:92"},"nodeType":"YulExpressionStatement","src":"6728:12:92"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"6714:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"6722:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6711:2:92"},"nodeType":"YulFunctionCall","src":"6711:14:92"},"nodeType":"YulIf","src":"6708:34:92"},{"nodeType":"YulVariableDeclaration","src":"6751:32:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6765:9:92"},{"name":"offset","nodeType":"YulIdentifier","src":"6776:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6761:3:92"},"nodeType":"YulFunctionCall","src":"6761:22:92"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"6755:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"6831:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6840:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6843:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6833:6:92"},"nodeType":"YulFunctionCall","src":"6833:12:92"},"nodeType":"YulExpressionStatement","src":"6833:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"6810:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"6814:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6806:3:92"},"nodeType":"YulFunctionCall","src":"6806:13:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"6821:7:92"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6802:3:92"},"nodeType":"YulFunctionCall","src":"6802:27:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"6795:6:92"},"nodeType":"YulFunctionCall","src":"6795:35:92"},"nodeType":"YulIf","src":"6792:55:92"},{"nodeType":"YulVariableDeclaration","src":"6856:26:92","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"6879:2:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6866:12:92"},"nodeType":"YulFunctionCall","src":"6866:16:92"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"6860:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"6905:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"6907:16:92"},"nodeType":"YulFunctionCall","src":"6907:18:92"},"nodeType":"YulExpressionStatement","src":"6907:18:92"}]},"condition":{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"6897:2:92"},{"name":"_1","nodeType":"YulIdentifier","src":"6901:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6894:2:92"},"nodeType":"YulFunctionCall","src":"6894:10:92"},"nodeType":"YulIf","src":"6891:36:92"},{"nodeType":"YulVariableDeclaration","src":"6936:17:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6950:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"6946:3:92"},"nodeType":"YulFunctionCall","src":"6946:7:92"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"6940:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"6962:23:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6982:2:92","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6976:5:92"},"nodeType":"YulFunctionCall","src":"6976:9:92"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"6966:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"6994:71:92","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7016:6:92"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"7040:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"7044:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7036:3:92"},"nodeType":"YulFunctionCall","src":"7036:13:92"},{"name":"_4","nodeType":"YulIdentifier","src":"7051:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7032:3:92"},"nodeType":"YulFunctionCall","src":"7032:22:92"},{"kind":"number","nodeType":"YulLiteral","src":"7056:2:92","type":"","value":"63"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7028:3:92"},"nodeType":"YulFunctionCall","src":"7028:31:92"},{"name":"_4","nodeType":"YulIdentifier","src":"7061:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7024:3:92"},"nodeType":"YulFunctionCall","src":"7024:40:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7012:3:92"},"nodeType":"YulFunctionCall","src":"7012:53:92"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"6998:10:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"7124:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"7126:16:92"},"nodeType":"YulFunctionCall","src":"7126:18:92"},"nodeType":"YulExpressionStatement","src":"7126:18:92"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"7083:10:92"},{"name":"_1","nodeType":"YulIdentifier","src":"7095:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"7080:2:92"},"nodeType":"YulFunctionCall","src":"7080:18:92"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"7103:10:92"},{"name":"memPtr","nodeType":"YulIdentifier","src":"7115:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"7100:2:92"},"nodeType":"YulFunctionCall","src":"7100:22:92"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"7077:2:92"},"nodeType":"YulFunctionCall","src":"7077:46:92"},"nodeType":"YulIf","src":"7074:72:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7162:2:92","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"7166:10:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7155:6:92"},"nodeType":"YulFunctionCall","src":"7155:22:92"},"nodeType":"YulExpressionStatement","src":"7155:22:92"},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7193:6:92"},{"name":"_3","nodeType":"YulIdentifier","src":"7201:2:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7186:6:92"},"nodeType":"YulFunctionCall","src":"7186:18:92"},"nodeType":"YulExpressionStatement","src":"7186:18:92"},{"body":{"nodeType":"YulBlock","src":"7250:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7259:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7262:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7252:6:92"},"nodeType":"YulFunctionCall","src":"7252:12:92"},"nodeType":"YulExpressionStatement","src":"7252:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"7227:2:92"},{"name":"_3","nodeType":"YulIdentifier","src":"7231:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7223:3:92"},"nodeType":"YulFunctionCall","src":"7223:11:92"},{"kind":"number","nodeType":"YulLiteral","src":"7236:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7219:3:92"},"nodeType":"YulFunctionCall","src":"7219:20:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"7241:7:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"7216:2:92"},"nodeType":"YulFunctionCall","src":"7216:33:92"},"nodeType":"YulIf","src":"7213:53:92"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7292:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"7300:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7288:3:92"},"nodeType":"YulFunctionCall","src":"7288:15:92"},{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"7309:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"7313:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7305:3:92"},"nodeType":"YulFunctionCall","src":"7305:11:92"},{"name":"_3","nodeType":"YulIdentifier","src":"7318:2:92"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"7275:12:92"},"nodeType":"YulFunctionCall","src":"7275:46:92"},"nodeType":"YulExpressionStatement","src":"7275:46:92"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7345:6:92"},{"name":"_3","nodeType":"YulIdentifier","src":"7353:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7341:3:92"},"nodeType":"YulFunctionCall","src":"7341:15:92"},{"kind":"number","nodeType":"YulLiteral","src":"7358:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7337:3:92"},"nodeType":"YulFunctionCall","src":"7337:24:92"},{"kind":"number","nodeType":"YulLiteral","src":"7363:1:92","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7330:6:92"},"nodeType":"YulFunctionCall","src":"7330:35:92"},"nodeType":"YulExpressionStatement","src":"7330:35:92"},{"nodeType":"YulAssignment","src":"7374:16:92","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"7384:6:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"7374:6:92"}]}]},"name":"abi_decode_tuple_t_addresst_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6455:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"6466:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"6478:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"6486:6:92","type":""}],"src":"6401:995:92"},{"body":{"nodeType":"YulBlock","src":"7602:209:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7619:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7634:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"7642:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7630:3:92"},"nodeType":"YulFunctionCall","src":"7630:55:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7612:6:92"},"nodeType":"YulFunctionCall","src":"7612:74:92"},"nodeType":"YulExpressionStatement","src":"7612:74:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7706:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7717:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7702:3:92"},"nodeType":"YulFunctionCall","src":"7702:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"7722:2:92","type":"","value":"64"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7695:6:92"},"nodeType":"YulFunctionCall","src":"7695:30:92"},"nodeType":"YulExpressionStatement","src":"7695:30:92"},{"nodeType":"YulAssignment","src":"7734:71:92","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"7778:6:92"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7790:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7801:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7786:3:92"},"nodeType":"YulFunctionCall","src":"7786:18:92"}],"functionName":{"name":"abi_encode_struct_PreparedSetupData","nodeType":"YulIdentifier","src":"7742:35:92"},"nodeType":"YulFunctionCall","src":"7742:63:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7734:4:92"}]}]},"name":"abi_encode_tuple_t_address_t_struct$_PreparedSetupData_$14216_memory_ptr__to_t_address_t_struct$_PreparedSetupData_$14216_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7563:9:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"7574:6:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"7582:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7593:4:92","type":""}],"src":"7401:410:92"},{"body":{"nodeType":"YulBlock","src":"7915:89:92","statements":[{"nodeType":"YulAssignment","src":"7925:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7937:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7948:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7933:3:92"},"nodeType":"YulFunctionCall","src":"7933:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7925:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7967:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7982:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"7990:6:92","type":"","value":"0xffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7978:3:92"},"nodeType":"YulFunctionCall","src":"7978:19:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7960:6:92"},"nodeType":"YulFunctionCall","src":"7960:38:92"},"nodeType":"YulExpressionStatement","src":"7960:38:92"}]},"name":"abi_encode_tuple_t_uint16__to_t_uint16__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7884:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"7895:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7906:4:92","type":""}],"src":"7816:188:92"},{"body":{"nodeType":"YulBlock","src":"8124:125:92","statements":[{"nodeType":"YulAssignment","src":"8134:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8146:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8157:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8142:3:92"},"nodeType":"YulFunctionCall","src":"8142:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"8134:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8176:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"8191:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"8199:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8187:3:92"},"nodeType":"YulFunctionCall","src":"8187:55:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8169:6:92"},"nodeType":"YulFunctionCall","src":"8169:74:92"},"nodeType":"YulExpressionStatement","src":"8169:74:92"}]},"name":"abi_encode_tuple_t_contract$_IDAO_$10865__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8093:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"8104:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"8115:4:92","type":""}],"src":"8009:240:92"},{"body":{"nodeType":"YulBlock","src":"8286:95:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8303:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8310:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"8315:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"8306:3:92"},"nodeType":"YulFunctionCall","src":"8306:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8296:6:92"},"nodeType":"YulFunctionCall","src":"8296:31:92"},"nodeType":"YulExpressionStatement","src":"8296:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8343:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"8346:4:92","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8336:6:92"},"nodeType":"YulFunctionCall","src":"8336:15:92"},"nodeType":"YulExpressionStatement","src":"8336:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8367:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8370:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8360:6:92"},"nodeType":"YulFunctionCall","src":"8360:15:92"},"nodeType":"YulExpressionStatement","src":"8360:15:92"}]},"name":"panic_error_0x11","nodeType":"YulFunctionDefinition","src":"8254:127:92"},{"body":{"nodeType":"YulBlock","src":"8435:159:92","statements":[{"nodeType":"YulVariableDeclaration","src":"8445:52:92","value":{"kind":"number","nodeType":"YulLiteral","src":"8455:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"8449:2:92","type":""}]},{"nodeType":"YulAssignment","src":"8506:35:92","value":{"arguments":[{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"8522:1:92"},{"name":"_1","nodeType":"YulIdentifier","src":"8525:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8518:3:92"},"nodeType":"YulFunctionCall","src":"8518:10:92"},{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"8534:1:92"},{"name":"_1","nodeType":"YulIdentifier","src":"8537:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8530:3:92"},"nodeType":"YulFunctionCall","src":"8530:10:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"8514:3:92"},"nodeType":"YulFunctionCall","src":"8514:27:92"},"variableNames":[{"name":"diff","nodeType":"YulIdentifier","src":"8506:4:92"}]},{"body":{"nodeType":"YulBlock","src":"8566:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"8568:16:92"},"nodeType":"YulFunctionCall","src":"8568:18:92"},"nodeType":"YulExpressionStatement","src":"8568:18:92"}]},"condition":{"arguments":[{"name":"diff","nodeType":"YulIdentifier","src":"8556:4:92"},{"name":"_1","nodeType":"YulIdentifier","src":"8562:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"8553:2:92"},"nodeType":"YulFunctionCall","src":"8553:12:92"},"nodeType":"YulIf","src":"8550:38:92"}]},"name":"checked_sub_t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"8417:1:92","type":""},{"name":"y","nodeType":"YulTypedName","src":"8420:1:92","type":""}],"returnVariables":[{"name":"diff","nodeType":"YulTypedName","src":"8426:4:92","type":""}],"src":"8386:208:92"},{"body":{"nodeType":"YulBlock","src":"8631:95:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8648:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8655:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"8660:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"8651:3:92"},"nodeType":"YulFunctionCall","src":"8651:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8641:6:92"},"nodeType":"YulFunctionCall","src":"8641:31:92"},"nodeType":"YulExpressionStatement","src":"8641:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8688:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"8691:4:92","type":"","value":"0x32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8681:6:92"},"nodeType":"YulFunctionCall","src":"8681:15:92"},"nodeType":"YulExpressionStatement","src":"8681:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8712:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8715:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8705:6:92"},"nodeType":"YulFunctionCall","src":"8705:15:92"},"nodeType":"YulExpressionStatement","src":"8705:15:92"}]},"name":"panic_error_0x32","nodeType":"YulFunctionDefinition","src":"8599:127:92"},{"body":{"nodeType":"YulBlock","src":"8778:187:92","statements":[{"nodeType":"YulVariableDeclaration","src":"8788:52:92","value":{"kind":"number","nodeType":"YulLiteral","src":"8798:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"8792:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"8849:29:92","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8868:5:92"},{"name":"_1","nodeType":"YulIdentifier","src":"8875:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8864:3:92"},"nodeType":"YulFunctionCall","src":"8864:14:92"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"8853:7:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"8906:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"8908:16:92"},"nodeType":"YulFunctionCall","src":"8908:18:92"},"nodeType":"YulExpressionStatement","src":"8908:18:92"}]},"condition":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"8893:7:92"},{"name":"_1","nodeType":"YulIdentifier","src":"8902:2:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"8890:2:92"},"nodeType":"YulFunctionCall","src":"8890:15:92"},"nodeType":"YulIf","src":"8887:41:92"},{"nodeType":"YulAssignment","src":"8937:22:92","value":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"8948:7:92"},{"kind":"number","nodeType":"YulLiteral","src":"8957:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8944:3:92"},"nodeType":"YulFunctionCall","src":"8944:15:92"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"8937:3:92"}]}]},"name":"increment_t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"8760:5:92","type":""}],"returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"8770:3:92","type":""}],"src":"8731:234:92"},{"body":{"nodeType":"YulBlock","src":"9117:190:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9134:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"9149:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"9157:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"9145:3:92"},"nodeType":"YulFunctionCall","src":"9145:55:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9127:6:92"},"nodeType":"YulFunctionCall","src":"9127:74:92"},"nodeType":"YulExpressionStatement","src":"9127:74:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9221:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9232:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9217:3:92"},"nodeType":"YulFunctionCall","src":"9217:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"9237:2:92","type":"","value":"64"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9210:6:92"},"nodeType":"YulFunctionCall","src":"9210:30:92"},"nodeType":"YulExpressionStatement","src":"9210:30:92"},{"nodeType":"YulAssignment","src":"9249:52:92","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"9274:6:92"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9286:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9297:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9282:3:92"},"nodeType":"YulFunctionCall","src":"9282:18:92"}],"functionName":{"name":"abi_encode_bytes","nodeType":"YulIdentifier","src":"9257:16:92"},"nodeType":"YulFunctionCall","src":"9257:44:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"9249:4:92"}]}]},"name":"abi_encode_tuple_t_address_t_bytes_memory_ptr__to_t_address_t_bytes_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9078:9:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"9089:6:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"9097:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"9108:4:92","type":""}],"src":"8970:337:92"}]},"contents":"{\n { }\n function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n if iszero(eq(value, and(value, shl(224, 0xffffffff)))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 96)\n let pos := headStart\n pos := headStart\n let srcPtr := value0\n let i := 0\n for { } lt(i, 0x03) { i := add(i, 1) }\n {\n mstore(pos, and(mload(srcPtr), 0xff))\n let _1 := 0x20\n pos := add(pos, _1)\n srcPtr := add(srcPtr, _1)\n }\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_decode_address(offset) -> value\n {\n value := calldataload(offset)\n if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n }\n function abi_decode_struct_SetupPayload_calldata(offset, end) -> value\n {\n if slt(sub(end, offset), 96) { revert(0, 0) }\n value := offset\n }\n function abi_decode_tuple_t_addresst_struct$_SetupPayload_$14224_calldata_ptr(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n let offset := calldataload(add(headStart, 32))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n value1 := abi_decode_struct_SetupPayload_calldata(add(headStart, offset), dataEnd)\n }\n function panic_error_0x21()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x21)\n revert(0, 0x24)\n }\n function abi_encodeUpdatedPos_struct_MultiTargetPermission(value0, pos) -> updatedPos\n {\n let _1 := mload(value0)\n if iszero(lt(_1, 3))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x21)\n revert(0, 0x24)\n }\n mstore(pos, _1)\n let memberValue0 := mload(add(value0, 0x20))\n let _2 := 0xffffffffffffffffffffffffffffffffffffffff\n mstore(add(pos, 0x20), and(memberValue0, _2))\n mstore(add(pos, 0x40), and(mload(add(value0, 0x40)), _2))\n mstore(add(pos, 0x60), and(mload(add(value0, 0x60)), _2))\n mstore(add(pos, 0x80), mload(add(value0, 0x80)))\n updatedPos := add(pos, 0xa0)\n }\n function abi_encode_tuple_t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n let _1 := 32\n let tail_1 := add(headStart, _1)\n mstore(headStart, _1)\n let pos := tail_1\n let length := mload(value0)\n mstore(tail_1, length)\n pos := add(headStart, 64)\n let srcPtr := add(value0, _1)\n let i := 0\n for { } lt(i, length) { i := add(i, 1) }\n {\n pos := abi_encodeUpdatedPos_struct_MultiTargetPermission(mload(srcPtr), pos)\n srcPtr := add(srcPtr, _1)\n }\n tail := pos\n }\n function abi_decode_tuple_t_addresst_uint16t_struct$_SetupPayload_$14224_calldata_ptr(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n let value := calldataload(add(headStart, 32))\n if iszero(eq(value, and(value, 0xffff))) { revert(0, 0) }\n value1 := value\n let offset := calldataload(add(headStart, 64))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n value2 := abi_decode_struct_SetupPayload_calldata(add(headStart, offset), dataEnd)\n }\n function abi_encode_bytes(value, pos) -> end\n {\n let length := mload(value)\n mstore(pos, length)\n let i := 0\n for { } lt(i, length) { i := add(i, 0x20) }\n {\n let _1 := 0x20\n mstore(add(add(pos, i), _1), mload(add(add(value, i), _1)))\n }\n mstore(add(add(pos, length), 0x20), 0)\n end := add(add(pos, and(add(length, 31), not(31))), 0x20)\n }\n function abi_encode_struct_PreparedSetupData(value, pos) -> end\n {\n let tail := add(pos, 0x40)\n let memberValue0 := mload(value)\n mstore(pos, 0x40)\n let pos_1 := tail\n let length := mload(memberValue0)\n mstore(tail, length)\n pos_1 := add(pos, 96)\n let _1 := 0x20\n let srcPtr := add(memberValue0, _1)\n let i := 0\n for { } lt(i, length) { i := add(i, 1) }\n {\n mstore(pos_1, and(mload(srcPtr), 0xffffffffffffffffffffffffffffffffffffffff))\n pos_1 := add(pos_1, _1)\n srcPtr := add(srcPtr, _1)\n }\n let memberValue0_1 := mload(add(value, _1))\n mstore(add(pos, _1), sub(pos_1, pos))\n let pos_2 := pos_1\n let length_1 := mload(memberValue0_1)\n mstore(pos_1, length_1)\n pos_2 := add(pos_1, _1)\n let srcPtr_1 := add(memberValue0_1, _1)\n let i_1 := 0\n for { } lt(i_1, length_1) { i_1 := add(i_1, 1) }\n {\n pos_2 := abi_encodeUpdatedPos_struct_MultiTargetPermission(mload(srcPtr_1), pos_2)\n srcPtr_1 := add(srcPtr_1, _1)\n }\n end := pos_2\n }\n function abi_encode_tuple_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$14216_memory_ptr__to_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$14216_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n {\n mstore(headStart, 64)\n let tail_1 := abi_encode_bytes(value0, add(headStart, 64))\n mstore(add(headStart, 32), sub(tail_1, headStart))\n tail := abi_encode_struct_PreparedSetupData(value1, tail_1)\n }\n function panic_error_0x41()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function abi_decode_tuple_t_addresst_bytes_memory_ptr(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n let offset := calldataload(add(headStart, 32))\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n let _2 := add(headStart, offset)\n if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n let _3 := calldataload(_2)\n if gt(_3, _1) { panic_error_0x41() }\n let _4 := not(31)\n let memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n mstore(memPtr, _3)\n if gt(add(add(_2, _3), 32), dataEnd) { revert(0, 0) }\n calldatacopy(add(memPtr, 32), add(_2, 32), _3)\n mstore(add(add(memPtr, _3), 32), 0)\n value1 := memPtr\n }\n function abi_encode_tuple_t_address_t_struct$_PreparedSetupData_$14216_memory_ptr__to_t_address_t_struct$_PreparedSetupData_$14216_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n {\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n mstore(add(headStart, 32), 64)\n tail := abi_encode_struct_PreparedSetupData(value1, add(headStart, 64))\n }\n function abi_encode_tuple_t_uint16__to_t_uint16__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffff))\n }\n function abi_encode_tuple_t_contract$_IDAO_$10865__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function panic_error_0x11()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n function checked_sub_t_uint160(x, y) -> diff\n {\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n diff := sub(and(x, _1), and(y, _1))\n if gt(diff, _1) { panic_error_0x11() }\n }\n function panic_error_0x32()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n function increment_t_uint160(value) -> ret\n {\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n let value_1 := and(value, _1)\n if eq(value_1, _1) { panic_error_0x11() }\n ret := add(value_1, 1)\n }\n function abi_encode_tuple_t_address_t_bytes_memory_ptr__to_t_address_t_bytes_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n {\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n mstore(add(headStart, 32), 64)\n tail := abi_encode_bytes(value1, add(headStart, 64))\n }\n}","id":92,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{"14391":[{"length":32,"start":210},{"length":32,"start":825}]},"linkReferences":{},"object":"60806040523480156200001157600080fd5b50600436106200007b5760003560e01c80639cb0a12411620000565780639cb0a12414620000fd578063a8a9c29e1462000123578063f10832f1146200014a57600080fd5b806301ffc9a714620000805780632ae9c60014620000ac5780635c60da1b14620000c5575b600080fd5b62000097620000913660046200065e565b62000171565b60405190151581526020015b60405180910390f35b620000b6620001c4565b604051620000a391906200068a565b6040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152602001620000a3565b620001146200010e366004620006f0565b620001f0565b604051620000a39190620007c1565b6200013a620001343660046200080e565b62000209565b604051620000a39291906200095d565b620001616200015b366004620009a5565b620002b5565b604051620000a392919062000a73565b60006001600160e01b0319821663099718b560e41b1480620001a257506001600160e01b03198216621574e360e91b145b80620001be57506301ffc9a760e01b6001600160e01b03198316145b92915050565b620001ce62000632565b5060408051606081018252600181526004602082015260009181019190915290565b60606200020260006002600162000399565b9392505050565b606062000229604051806040016040528060608152602001606081525090565b8361ffff16600103620002ad5762000242600262000532565b815260405161ffff8516602482015260440160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166239a8c560e41b1790529150620002a761ffff85166002600062000399565b60208201525b935093915050565b6000620002d5604051806040016040528060608152602001606081525090565b6040516001600160a01b038516602482015260009060440160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663189acdbd60e31b17905290506200036b816200035b7f000000000000000000000000000000000000000000000000000000000000000090565b6001600160a01b031690620005f6565b925062000379600262000532565b82526200038a600060028162000399565b60208301525090939092509050565b6060826001600160a01b0316846001600160a01b03161115620003cf57604051633a4013cd60e21b815260040160405180910390fd5b620003db848462000ab5565b6001600160a01b031667ffffffffffffffff811115620003ff57620003ff6200098f565b6040519080825280602002602001820160405280156200045a57816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282526000199092019101816200041e5790505b509050835b836001600160a01b0316816001600160a01b031610156200052a576040518060a001604052808460028111156200049a576200049a62000744565b81526001600160a01b038316602082018190526040820152600060608201527fa280eec51ab8e1bc4b6b0c1b7f1bde785761b787a49db404e3e9338ed9b016ef60809091015282620004ed878462000ab5565b6001600160a01b03168151811062000509576200050962000adf565b60200260200101819052508080620005219062000af5565b9150506200045f565b509392505050565b6060816001600160a01b031667ffffffffffffffff8111156200055957620005596200098f565b60405190808252806020026020018201604052801562000583578160200160208202803683370190505b50905060005b826001600160a01b0316816001600160a01b03161015620005f0578082826001600160a01b031681518110620005c357620005c362000adf565b6001600160a01b039092166020928302919091019091015280620005e78162000af5565b91505062000589565b50919050565b60008282604051620006089062000650565b6200061592919062000b1e565b604051809103906000f0801580156200052a573d6000803e3d6000fd5b60405180606001604052806003906020820280368337509192915050565b6106fe8062000b4383390190565b6000602082840312156200067157600080fd5b81356001600160e01b0319811681146200020257600080fd5b60608101818360005b6003811015620006b757815160ff1683526020928301929091019060010162000693565b50505092915050565b80356001600160a01b0381168114620006d857600080fd5b919050565b600060608284031215620005f057600080fd5b600080604083850312156200070457600080fd5b6200070f83620006c0565b9150602083013567ffffffffffffffff8111156200072c57600080fd5b6200073a85828601620006dd565b9150509250929050565b634e487b7160e01b600052602160045260246000fd5b60008151600381106200077d57634e487b7160e01b600052602160045260246000fd5b8352506020818101516001600160a01b0390811691840191909152604080830151821690840152606080830151909116908301526080908101519082015260a00190565b6020808252825182820181905260009190848201906040850190845b818110156200080257620007f38385516200075a565b938501939250600101620007dd565b50909695505050505050565b6000806000606084860312156200082457600080fd5b6200082f84620006c0565b9250602084013561ffff811681146200084757600080fd5b9150604084013567ffffffffffffffff8111156200086457600080fd5b6200087286828701620006dd565b9150509250925092565b6000815180845260005b81811015620008a45760208185018101518683018201520162000886565b506000602082860101526020601f19601f83011685010191505092915050565b805160408084528151908401819052600091602091908201906060860190845b818110156200090b5783516001600160a01b031683529284019291840191600101620008e4565b50508483015186820387850152805180835290840192506000918401905b8083101562000952576200093f8285516200075a565b9150848401935060018301925062000929565b509695505050505050565b6040815260006200097260408301856200087c565b8281036020840152620009868185620008c4565b95945050505050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215620009b957600080fd5b620009c483620006c0565b9150602083013567ffffffffffffffff80821115620009e257600080fd5b818501915085601f830112620009f757600080fd5b81358181111562000a0c5762000a0c6200098f565b604051601f8201601f19908116603f0116810190838211818310171562000a375762000a376200098f565b8160405282815288602084870101111562000a5157600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6001600160a01b038316815260406020820152600062000a976040830184620008c4565b949350505050565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0382811682821603908082111562000ad85762000ad862000a9f565b5092915050565b634e487b7160e01b600052603260045260246000fd5b60006001600160a01b0380831681810362000b145762000b1462000a9f565b6001019392505050565b6001600160a01b038316815260406020820152600062000a9760408301846200087c56fe60806040526040516106fe3803806106fe83398101604081905261002291610319565b61002e82826000610035565b5050610436565b61003e8361006b565b60008251118061004b5750805b156100665761006483836100ab60201b6100291760201c565b505b505050565b610074816100d7565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606100d083836040518060600160405280602781526020016106d7602791396101a9565b9392505050565b6100ea8161022260201b6100551760201c565b6101515760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b806101887f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61023160201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6060600080856001600160a01b0316856040516101c691906103e7565b600060405180830381855af49150503d8060008114610201576040519150601f19603f3d011682016040523d82523d6000602084013e610206565b606091505b50909250905061021886838387610234565b9695505050505050565b6001600160a01b03163b151590565b90565b606083156102a357825160000361029c576001600160a01b0385163b61029c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610148565b50816102ad565b6102ad83836102b5565b949350505050565b8151156102c55781518083602001fd5b8060405162461bcd60e51b81526004016101489190610403565b634e487b7160e01b600052604160045260246000fd5b60005b838110156103105781810151838201526020016102f8565b50506000910152565b6000806040838503121561032c57600080fd5b82516001600160a01b038116811461034357600080fd5b60208401519092506001600160401b038082111561036057600080fd5b818501915085601f83011261037457600080fd5b815181811115610386576103866102df565b604051601f8201601f19908116603f011681019083821181831017156103ae576103ae6102df565b816040528281528860208487010111156103c757600080fd5b6103d88360208301602088016102f5565b80955050505050509250929050565b600082516103f98184602087016102f5565b9190910192915050565b60208152600082518060208401526104228160408501602087016102f5565b601f01601f19169190910160400192915050565b610292806104456000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b61009f565b565b606061004e838360405180606001604052806027815260200161025f602791396100c3565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e8080156100be573d6000f35b3d6000fd5b6060600080856001600160a01b0316856040516100e0919061020f565b600060405180830381855af49150503d806000811461011b576040519150601f19603f3d011682016040523d82523d6000602084013e610120565b606091505b50915091506101318683838761013b565b9695505050505050565b606083156101af5782516000036101a8576001600160a01b0385163b6101a85760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b50816101b9565b6101b983836101c1565b949350505050565b8151156101d15781518083602001fd5b8060405162461bcd60e51b815260040161019f919061022b565b60005b838110156102065781810151838201526020016101ee565b50506000910152565b600082516102218184602087016101eb565b9190910192915050565b602081526000825180602084015261024a8160408501602087016101eb565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH3 0x7B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9CB0A124 GT PUSH3 0x56 JUMPI DUP1 PUSH4 0x9CB0A124 EQ PUSH3 0xFD JUMPI DUP1 PUSH4 0xA8A9C29E EQ PUSH3 0x123 JUMPI DUP1 PUSH4 0xF10832F1 EQ PUSH3 0x14A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH3 0x80 JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH3 0xAC JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH3 0xC5 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x97 PUSH3 0x91 CALLDATASIZE PUSH1 0x4 PUSH3 0x65E JUMP JUMPDEST PUSH3 0x171 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0xB6 PUSH3 0x1C4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0xA3 SWAP2 SWAP1 PUSH3 0x68A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH3 0xA3 JUMP JUMPDEST PUSH3 0x114 PUSH3 0x10E CALLDATASIZE PUSH1 0x4 PUSH3 0x6F0 JUMP JUMPDEST PUSH3 0x1F0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0xA3 SWAP2 SWAP1 PUSH3 0x7C1 JUMP JUMPDEST PUSH3 0x13A PUSH3 0x134 CALLDATASIZE PUSH1 0x4 PUSH3 0x80E JUMP JUMPDEST PUSH3 0x209 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0xA3 SWAP3 SWAP2 SWAP1 PUSH3 0x95D JUMP JUMPDEST PUSH3 0x161 PUSH3 0x15B CALLDATASIZE PUSH1 0x4 PUSH3 0x9A5 JUMP JUMPDEST PUSH3 0x2B5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0xA3 SWAP3 SWAP2 SWAP1 PUSH3 0xA73 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x99718B5 PUSH1 0xE4 SHL EQ DUP1 PUSH3 0x1A2 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH3 0x1BE JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH3 0x1CE PUSH3 0x632 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH3 0x202 PUSH1 0x0 PUSH1 0x2 PUSH1 0x1 PUSH3 0x399 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH3 0x229 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST DUP4 PUSH2 0xFFFF AND PUSH1 0x1 SUB PUSH3 0x2AD JUMPI PUSH3 0x242 PUSH1 0x2 PUSH3 0x532 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x40 MLOAD PUSH2 0xFFFF DUP6 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH3 0x39A8C5 PUSH1 0xE4 SHL OR SWAP1 MSTORE SWAP2 POP PUSH3 0x2A7 PUSH2 0xFFFF DUP6 AND PUSH1 0x2 PUSH1 0x0 PUSH3 0x399 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE JUMPDEST SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x2D5 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 PUSH1 0x44 ADD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x189ACDBD PUSH1 0xE3 SHL OR SWAP1 MSTORE SWAP1 POP PUSH3 0x36B DUP2 PUSH3 0x35B PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH3 0x5F6 JUMP JUMPDEST SWAP3 POP PUSH3 0x379 PUSH1 0x2 PUSH3 0x532 JUMP JUMPDEST DUP3 MSTORE PUSH3 0x38A PUSH1 0x0 PUSH1 0x2 DUP2 PUSH3 0x399 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP SWAP1 SWAP4 SWAP1 SWAP3 POP SWAP1 POP JUMP JUMPDEST PUSH1 0x60 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH3 0x3CF JUMPI PUSH1 0x40 MLOAD PUSH4 0x3A4013CD PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0x3DB DUP5 DUP5 PUSH3 0xAB5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x3FF JUMPI PUSH3 0x3FF PUSH3 0x98F JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH3 0x45A JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD DUP3 SWAP1 MSTORE SWAP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 DUP3 ADD MSTORE DUP3 MSTORE PUSH1 0x0 NOT SWAP1 SWAP3 ADD SWAP2 ADD DUP2 PUSH3 0x41E JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP DUP4 JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT ISZERO PUSH3 0x52A JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 DUP5 PUSH1 0x2 DUP2 GT ISZERO PUSH3 0x49A JUMPI PUSH3 0x49A PUSH3 0x744 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x60 DUP3 ADD MSTORE PUSH32 0xA280EEC51AB8E1BC4B6B0C1B7F1BDE785761B787A49DB404E3E9338ED9B016EF PUSH1 0x80 SWAP1 SWAP2 ADD MSTORE DUP3 PUSH3 0x4ED DUP8 DUP5 PUSH3 0xAB5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MLOAD DUP2 LT PUSH3 0x509 JUMPI PUSH3 0x509 PUSH3 0xADF JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP DUP1 DUP1 PUSH3 0x521 SWAP1 PUSH3 0xAF5 JUMP JUMPDEST SWAP2 POP POP PUSH3 0x45F JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x559 JUMPI PUSH3 0x559 PUSH3 0x98F JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH3 0x583 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT ISZERO PUSH3 0x5F0 JUMPI DUP1 DUP3 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MLOAD DUP2 LT PUSH3 0x5C3 JUMPI PUSH3 0x5C3 PUSH3 0xADF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE DUP1 PUSH3 0x5E7 DUP2 PUSH3 0xAF5 JUMP JUMPDEST SWAP2 POP POP PUSH3 0x589 JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH3 0x608 SWAP1 PUSH3 0x650 JUMP JUMPDEST PUSH3 0x615 SWAP3 SWAP2 SWAP1 PUSH3 0xB1E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH3 0x52A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x6FE DUP1 PUSH3 0xB43 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x671 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH3 0x202 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH3 0x6B7 JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH3 0x693 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x6D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x5F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x704 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x70F DUP4 PUSH3 0x6C0 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x72C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x73A DUP6 DUP3 DUP7 ADD PUSH3 0x6DD JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP2 MLOAD PUSH1 0x3 DUP2 LT PUSH3 0x77D JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP4 MSTORE POP PUSH1 0x20 DUP2 DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP1 DUP4 ADD MLOAD DUP3 AND SWAP1 DUP5 ADD MSTORE PUSH1 0x60 DUP1 DUP4 ADD MLOAD SWAP1 SWAP2 AND SWAP1 DUP4 ADD MSTORE PUSH1 0x80 SWAP1 DUP2 ADD MLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x802 JUMPI PUSH3 0x7F3 DUP4 DUP6 MLOAD PUSH3 0x75A JUMP JUMPDEST SWAP4 DUP6 ADD SWAP4 SWAP3 POP PUSH1 0x1 ADD PUSH3 0x7DD JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH3 0x824 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x82F DUP5 PUSH3 0x6C0 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH3 0x847 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x864 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x872 DUP7 DUP3 DUP8 ADD PUSH3 0x6DD JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x8A4 JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD DUP3 ADD MSTORE ADD PUSH3 0x886 JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x20 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x20 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x40 DUP1 DUP5 MSTORE DUP2 MLOAD SWAP1 DUP5 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x20 SWAP2 SWAP1 DUP3 ADD SWAP1 PUSH1 0x60 DUP7 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x90B JUMPI DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH3 0x8E4 JUMP JUMPDEST POP POP DUP5 DUP4 ADD MLOAD DUP7 DUP3 SUB DUP8 DUP6 ADD MSTORE DUP1 MLOAD DUP1 DUP4 MSTORE SWAP1 DUP5 ADD SWAP3 POP PUSH1 0x0 SWAP2 DUP5 ADD SWAP1 JUMPDEST DUP1 DUP4 LT ISZERO PUSH3 0x952 JUMPI PUSH3 0x93F DUP3 DUP6 MLOAD PUSH3 0x75A JUMP JUMPDEST SWAP2 POP DUP5 DUP5 ADD SWAP4 POP PUSH1 0x1 DUP4 ADD SWAP3 POP PUSH3 0x929 JUMP JUMPDEST POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 PUSH3 0x972 PUSH1 0x40 DUP4 ADD DUP6 PUSH3 0x87C JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 ADD MSTORE PUSH3 0x986 DUP2 DUP6 PUSH3 0x8C4 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x9B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x9C4 DUP4 PUSH3 0x6C0 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH3 0x9E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x9F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH3 0xA0C JUMPI PUSH3 0xA0C PUSH3 0x98F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH3 0xA37 JUMPI PUSH3 0xA37 PUSH3 0x98F JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH3 0xA51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH3 0xA97 PUSH1 0x40 DUP4 ADD DUP5 PUSH3 0x8C4 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND DUP3 DUP3 AND SUB SWAP1 DUP1 DUP3 GT ISZERO PUSH3 0xAD8 JUMPI PUSH3 0xAD8 PUSH3 0xA9F JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND DUP2 DUP2 SUB PUSH3 0xB14 JUMPI PUSH3 0xB14 PUSH3 0xA9F JUMP JUMPDEST PUSH1 0x1 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH3 0xA97 PUSH1 0x40 DUP4 ADD DUP5 PUSH3 0x87C JUMP INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH2 0x6FE CODESIZE SUB DUP1 PUSH2 0x6FE DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x22 SWAP2 PUSH2 0x319 JUMP JUMPDEST PUSH2 0x2E DUP3 DUP3 PUSH1 0x0 PUSH2 0x35 JUMP JUMPDEST POP POP PUSH2 0x436 JUMP JUMPDEST PUSH2 0x3E DUP4 PUSH2 0x6B JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD GT DUP1 PUSH2 0x4B JUMPI POP DUP1 JUMPDEST ISZERO PUSH2 0x66 JUMPI PUSH2 0x64 DUP4 DUP4 PUSH2 0xAB PUSH1 0x20 SHL PUSH2 0x29 OR PUSH1 0x20 SHR JUMP JUMPDEST POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x74 DUP2 PUSH2 0xD7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xD0 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x6D7 PUSH1 0x27 SWAP2 CODECOPY PUSH2 0x1A9 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xEA DUP2 PUSH2 0x222 PUSH1 0x20 SHL PUSH2 0x55 OR PUSH1 0x20 SHR JUMP JUMPDEST PUSH2 0x151 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313936373A206E657720696D706C656D656E746174696F6E206973206E PUSH1 0x44 DUP3 ADD MSTORE PUSH13 0x1BDD08184818DBDB9D1C9858DD PUSH1 0x9A SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH2 0x188 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC PUSH1 0x0 SHL PUSH2 0x231 PUSH1 0x20 SHL PUSH2 0x64 OR PUSH1 0x20 SHR JUMP JUMPDEST DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0x1C6 SWAP2 SWAP1 PUSH2 0x3E7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x201 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x206 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x218 DUP7 DUP4 DUP4 DUP8 PUSH2 0x234 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x2A3 JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0x29C JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0x29C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x148 JUMP JUMPDEST POP DUP2 PUSH2 0x2AD JUMP JUMPDEST PUSH2 0x2AD DUP4 DUP4 PUSH2 0x2B5 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x2C5 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x148 SWAP2 SWAP1 PUSH2 0x403 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x310 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2F8 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x32C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x343 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x360 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x374 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x386 JUMPI PUSH2 0x386 PUSH2 0x2DF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x3AE JUMPI PUSH2 0x3AE PUSH2 0x2DF JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x3C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3D8 DUP4 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x2F5 JUMP JUMPDEST DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x3F9 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x2F5 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x422 DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x2F5 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x292 DUP1 PUSH2 0x445 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLDATASIZE PUSH2 0x13 JUMPI PUSH2 0x11 PUSH2 0x17 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x11 JUMPDEST PUSH2 0x27 PUSH2 0x22 PUSH2 0x67 JUMP JUMPDEST PUSH2 0x9F JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x60 PUSH2 0x4E DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x25F PUSH1 0x27 SWAP2 CODECOPY PUSH2 0xC3 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9A PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 DUP1 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE PUSH1 0x0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH2 0xBE JUMPI RETURNDATASIZE PUSH1 0x0 RETURN JUMPDEST RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0xE0 SWAP2 SWAP1 PUSH2 0x20F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x11B JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x120 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x131 DUP7 DUP4 DUP4 DUP8 PUSH2 0x13B JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x1AF JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0x1A8 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0x1A8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP DUP2 PUSH2 0x1B9 JUMP JUMPDEST PUSH2 0x1B9 DUP4 DUP4 PUSH2 0x1C1 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x1D1 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x19F SWAP2 SWAP1 PUSH2 0x22B JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x206 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1EE JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x221 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x1EB JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x24A DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x1EB JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A164 PUSH20 0x6F6C6343000811000A416464726573733A206C6F PUSH24 0x2D6C6576656C2064656C65676174652063616C6C20666169 PUSH13 0x6564A164736F6C634300081100 EXP ","sourceMap":"2565:1940:54:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1852:293:83;;;;;;:::i;:::-;;:::i;:::-;;;470:14:92;;463:22;445:41;;433:2;418:18;1852:293:83;;;;;;;;631:98:90;;;:::i;:::-;;;;;;;:::i;2184:94:83:-;;;-1:-1:-1;;;;;2257:14:83;1167:55:92;1149:74;;1137:2;1122:18;2184:94:83;1003:226:92;4204:299:54;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;3462:703::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;2848:575::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;1852:293:83:-;1938:4;-1:-1:-1;;;;;;1973:46:83;;-1:-1:-1;;;1973:46:83;;:112;;-1:-1:-1;;;;;;;2035:50:83;;-1:-1:-1;;;2035:50:83;1973:112;:165;;;-1:-1:-1;;;;;;;;;;937:40:38;;;2101:37:83;1954:184;1852:293;-1:-1:-1;;1852:293:83:o;631:98:90:-;679:15;;:::i;:::-;-1:-1:-1;706:16:90;;;;;;;;714:1;706:16;;717:1;706:16;;;;-1:-1:-1;706:16:90;;;;;;;;631:98::o;4204:299:54:-;4326:56;4434:62;4450:1;2714;4465:30;4434:15;:62::i;:::-;4420:76;4204:299;-1:-1:-1;;;4204:299:54:o;3462:703::-;3644:21;3667:42;-1:-1:-1;;;;;;;;;;;;;;;;;;;3667:42:54;3787:10;:15;;3801:1;3787:15;3783:376;;3846:23;2714:1;3846:11;:23::i;:::-;3818:51;;3894:76;;7990:6:92;7978:19;;3894:76:54;;;7960:38:92;7933:18;;3894:76:54;;;-1:-1:-1;;3894:76:54;;;;;;;;;;;;;;;;-1:-1:-1;;;3894:76:54;;;;-1:-1:-1;4016:132:54;;;;2714:1;-1:-1:-1;4016:15:54;:132::i;:::-;3984:29;;;:164;3783:376;3462:703;;;;;;:::o;2848:575::-;2945:14;2961:42;-1:-1:-1;;;;;;;;;;;;;;;;;;;2961:42:54;3039:106;;-1:-1:-1;;;;;1167:55:92;;3039:106:54;;;1149:74:92;3015:21:54;;1122:18:92;;3039:106:54;;;-1:-1:-1;;3039:106:54;;;;;;;;;;;;;;;;-1:-1:-1;;;3039:106:54;;;;-1:-1:-1;3164:42:54;3039:106;3164:16;2257:14:83;;2184:94;3164:16:54;-1:-1:-1;;;;;3164:32:54;;;:42::i;:::-;3155:51;-1:-1:-1;3244:23:54;2714:1;3244:11;:23::i;:::-;3216:51;;3309:107;3216:25;2714:1;3216:25;3309:15;:107::i;:::-;3277:29;;;:139;-1:-1:-1;2848:575:54;;3277:17;;-1:-1:-1;2848:575:54;-1:-1:-1;2848:575:54:o;580:666:52:-;699:56;780:8;-1:-1:-1;;;;;767:21:52;:10;-1:-1:-1;;;;;767:21:52;;763:53;;;797:19;;-1:-1:-1;;;797:19:52;;;;;;;;;;;763:53;879:21;890:10;879:8;:21;:::i;:::-;-1:-1:-1;;;;;837:64:52;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;837:64:52;;-1:-1:-1;;837:64:52;;;;;;;;;;;-1:-1:-1;823:78:52;-1:-1:-1;925:10:52;908:336;941:8;-1:-1:-1;;;;;937:12:52;:1;-1:-1:-1;;;;;937:12:52;;908:336;;;996:241;;;;;;;;1057:2;996:241;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;996:241:52;;;;;;;;;;;;-1:-1:-1;996:241:52;;;;1198:28;996:241;;;;;966:11;978:14;982:10;1088:1;978:14;:::i;:::-;-1:-1:-1;;;;;966:27:52;;;;;;;;;:::i;:::-;;;;;;:271;;;;951:3;;;;;:::i;:::-;;;;908:336;;;;580:666;;;;;:::o;1529:191::-;1577:24;1633:3;-1:-1:-1;;;;;1619:18:52;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1619:18:52;;1609:28;;1649:9;1644:74;1668:3;-1:-1:-1;;;;;1664:7:52;:1;-1:-1:-1;;;;;1664:7:52;;1644:74;;;1709:1;1688:7;1696:1;-1:-1:-1;;;;;1688:10:52;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1688:23:52;;;:10;;;;;;;;;;;:23;1673:3;;;;:::i;:::-;;;;1644:74;;;;1529:191;;;:::o;1415:222:85:-;1524:17;1599:6;1614:13;1573:56;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::o;14:286:92:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:92;;209:43;;199:71;;266:1;263;256:12;497:501;673:2;658:18;;662:9;753:6;631:4;787:205;801:4;798:1;795:11;787:205;;;864:13;;879:4;860:24;848:37;;908:4;932:12;;;;967:15;;;;821:1;814:9;787:205;;;791:3;;;497:501;;;;:::o;1234:196::-;1302:20;;-1:-1:-1;;;;;1351:54:92;;1341:65;;1331:93;;1420:1;1417;1410:12;1331:93;1234:196;;;:::o;1435:160::-;1500:5;1545:2;1536:6;1531:3;1527:16;1523:25;1520:45;;;1561:1;1558;1551:12;1600:441;1701:6;1709;1762:2;1750:9;1741:7;1737:23;1733:32;1730:52;;;1778:1;1775;1768:12;1730:52;1801:29;1820:9;1801:29;:::i;:::-;1791:39;;1881:2;1870:9;1866:18;1853:32;1908:18;1900:6;1897:30;1894:50;;;1940:1;1937;1930:12;1894:50;1963:72;2027:7;2018:6;2007:9;2003:22;1963:72;:::i;:::-;1953:82;;;1600:441;;;;;:::o;2046:127::-;2107:10;2102:3;2098:20;2095:1;2088:31;2138:4;2135:1;2128:15;2162:4;2159:1;2152:15;2178:696;2253:10;2294:6;2288:13;2327:1;2323:2;2320:9;2310:140;;2372:10;2367:3;2363:20;2360:1;2353:31;2407:4;2404:1;2397:15;2435:4;2432:1;2425:15;2310:140;2459:15;;-1:-1:-1;2521:4:92;2509:17;;;2503:24;-1:-1:-1;;;;;2620:21:92;;;2604:14;;;2597:45;;;;2696:4;2684:17;;;2678:24;2674:33;;2658:14;;;2651:57;2762:4;2750:17;;;2744:24;2740:33;;;2724:14;;;2717:57;2824:4;2812:17;;;2806:24;2790:14;;;2783:48;2863:4;2854:14;;2178:696::o;2879:730::-;3130:2;3182:21;;;3252:13;;3155:18;;;3274:22;;;3101:4;;3130:2;3353:15;;;;3327:2;3312:18;;;3101:4;3396:187;3410:6;3407:1;3404:13;3396:187;;;3466:69;3531:3;3522:6;3516:13;3466:69;:::i;:::-;3558:15;;;;3459:76;-1:-1:-1;3432:1:92;3425:9;3396:187;;;-1:-1:-1;3600:3:92;;2879:730;-1:-1:-1;;;;;;2879:730:92:o;3614:601::-;3723:6;3731;3739;3792:2;3780:9;3771:7;3767:23;3763:32;3760:52;;;3808:1;3805;3798:12;3760:52;3831:29;3850:9;3831:29;:::i;:::-;3821:39;;3910:2;3899:9;3895:18;3882:32;3954:6;3947:5;3943:18;3936:5;3933:29;3923:57;;3976:1;3973;3966:12;3923:57;3999:5;-1:-1:-1;4055:2:92;4040:18;;4027:32;4082:18;4071:30;;4068:50;;;4114:1;4111;4104:12;4068:50;4137:72;4201:7;4192:6;4181:9;4177:22;4137:72;:::i;:::-;4127:82;;;3614:601;;;;;:::o;4220:422::-;4261:3;4299:5;4293:12;4326:6;4321:3;4314:19;4351:1;4361:162;4375:6;4372:1;4369:13;4361:162;;;4437:4;4493:13;;;4489:22;;4483:29;4465:11;;;4461:20;;4454:59;4390:12;4361:162;;;4365:3;4568:1;4561:4;4552:6;4547:3;4543:16;4539:27;4532:38;4631:4;4624:2;4620:7;4615:2;4607:6;4603:15;4599:29;4594:3;4590:39;4586:50;4579:57;;;4220:422;;;;:::o;4647:1162::-;4780:12;;4746:4;4801:17;;;4867:19;;4737:14;;;4895:20;;;4707:3;;4964:4;;4991:21;;;;4942:2;4933:12;;;4707:3;5040:224;5054:6;5051:1;5048:13;5040:224;;;5121:13;;-1:-1:-1;;;;;5117:62:92;5103:77;;5239:15;;;;5202:14;;;;5076:1;5069:9;5040:224;;;-1:-1:-1;;5301:14:92;;;5295:21;5346:15;;;5332:12;;;5325:37;5414:21;;5444:23;;;5524;;;;-1:-1:-1;5567:1:92;;5485:14;;;5577:205;5593:8;5588:3;5585:17;5577:205;;;5657:73;5724:5;5713:8;5707:15;5657:73;:::i;:::-;5648:82;;5769:2;5759:8;5755:17;5743:29;;5621:1;5616:3;5612:11;5605:18;;5577:205;;;-1:-1:-1;5798:5:92;4647:1162;-1:-1:-1;;;;;;4647:1162:92:o;5814:450::-;6061:2;6050:9;6043:21;6024:4;6087:44;6127:2;6116:9;6112:18;6104:6;6087:44;:::i;:::-;6179:9;6171:6;6167:22;6162:2;6151:9;6147:18;6140:50;6207:51;6251:6;6243;6207:51;:::i;:::-;6199:59;5814:450;-1:-1:-1;;;;;5814:450:92:o;6269:127::-;6330:10;6325:3;6321:20;6318:1;6311:31;6361:4;6358:1;6351:15;6385:4;6382:1;6375:15;6401:995;6478:6;6486;6539:2;6527:9;6518:7;6514:23;6510:32;6507:52;;;6555:1;6552;6545:12;6507:52;6578:29;6597:9;6578:29;:::i;:::-;6568:39;;6658:2;6647:9;6643:18;6630:32;6681:18;6722:2;6714:6;6711:14;6708:34;;;6738:1;6735;6728:12;6708:34;6776:6;6765:9;6761:22;6751:32;;6821:7;6814:4;6810:2;6806:13;6802:27;6792:55;;6843:1;6840;6833:12;6792:55;6879:2;6866:16;6901:2;6897;6894:10;6891:36;;;6907:18;;:::i;:::-;6982:2;6976:9;6950:2;7036:13;;-1:-1:-1;;7032:22:92;;;7056:2;7028:31;7024:40;7012:53;;;7080:18;;;7100:22;;;7077:46;7074:72;;;7126:18;;:::i;:::-;7166:10;7162:2;7155:22;7201:2;7193:6;7186:18;7241:7;7236:2;7231;7227;7223:11;7219:20;7216:33;7213:53;;;7262:1;7259;7252:12;7213:53;7318:2;7313;7309;7305:11;7300:2;7292:6;7288:15;7275:46;7363:1;7358:2;7353;7345:6;7341:15;7337:24;7330:35;7384:6;7374:16;;;;;;;6401:995;;;;;:::o;7401:410::-;-1:-1:-1;;;;;7634:6:92;7630:55;7619:9;7612:74;7722:2;7717;7706:9;7702:18;7695:30;7593:4;7742:63;7801:2;7790:9;7786:18;7778:6;7742:63;:::i;:::-;7734:71;7401:410;-1:-1:-1;;;;7401:410:92:o;8254:127::-;8315:10;8310:3;8306:20;8303:1;8296:31;8346:4;8343:1;8336:15;8370:4;8367:1;8360:15;8386:208;-1:-1:-1;;;;;8530:10:92;;;8518;;;8514:27;;8553:12;;;8550:38;;;8568:18;;:::i;:::-;8550:38;8386:208;;;;:::o;8599:127::-;8660:10;8655:3;8651:20;8648:1;8641:31;8691:4;8688:1;8681:15;8715:4;8712:1;8705:15;8731:234;8770:3;-1:-1:-1;;;;;8875:2:92;8868:5;8864:14;8902:2;8893:7;8890:15;8887:41;;8908:18;;:::i;:::-;8957:1;8944:15;;8731:234;-1:-1:-1;;;8731:234:92:o;8970:337::-;-1:-1:-1;;;;;9149:6:92;9145:55;9134:9;9127:74;9237:2;9232;9221:9;9217:18;9210:30;9108:4;9257:44;9297:2;9286:9;9282:18;9274:6;9257:44;:::i"},"gasEstimates":{"creation":{"codeDepositCost":"937000","executionCost":"infinite","totalCost":"infinite"},"external":{"implementation()":"infinite","prepareInstallation(address,bytes)":"infinite","prepareUninstallation(address,(address,address[],bytes))":"infinite","prepareUpdate(address,uint16,(address,address[],bytes))":"infinite","protocolVersion()":"infinite","supportsInterface(bytes4)":"482"}},"methodIdentifiers":{"implementation()":"5c60da1b","prepareInstallation(address,bytes)":"f10832f1","prepareUninstallation(address,(address,address[],bytes))":"9cb0a124","prepareUpdate(address,uint16,(address,address[],bytes))":"a8a9c29e","protocolVersion()":"2ae9c600","supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ConflictingValues\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"fromBuild\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"thisBuild\",\"type\":\"uint16\"}],\"name\":\"InvalidUpdatePath\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_dao\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"prepareInstallation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"plugin\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address[]\",\"name\":\"helpers\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"enum PermissionLib.Operation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"condition\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PermissionLib.MultiTargetPermission[]\",\"name\":\"permissions\",\"type\":\"tuple[]\"}],\"internalType\":\"struct IPluginSetup.PreparedSetupData\",\"name\":\"preparedSetupData\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_dao\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"plugin\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"currentHelpers\",\"type\":\"address[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IPluginSetup.SetupPayload\",\"name\":\"_payload\",\"type\":\"tuple\"}],\"name\":\"prepareUninstallation\",\"outputs\":[{\"components\":[{\"internalType\":\"enum PermissionLib.Operation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"condition\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PermissionLib.MultiTargetPermission[]\",\"name\":\"permissions\",\"type\":\"tuple[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_dao\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"_fromBuild\",\"type\":\"uint16\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"plugin\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"currentHelpers\",\"type\":\"address[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IPluginSetup.SetupPayload\",\"name\":\"_payload\",\"type\":\"tuple\"}],\"name\":\"prepareUpdate\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"initData\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address[]\",\"name\":\"helpers\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"enum PermissionLib.Operation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"condition\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PermissionLib.MultiTargetPermission[]\",\"name\":\"permissions\",\"type\":\"tuple[]\"}],\"internalType\":\"struct IPluginSetup.PreparedSetupData\",\"name\":\"preparedSetupData\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"protocolVersion\",\"outputs\":[{\"internalType\":\"uint8[3]\",\"name\":\"\",\"type\":\"uint8[3]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"DO NOT USE IN PRODUCTION!\",\"errors\":{\"InvalidUpdatePath(uint16,uint16)\":[{\"params\":{\"fromBuild\":\"The build number to update from.\",\"thisBuild\":\"The build number of this setup to update to.\"}}]},\"kind\":\"dev\",\"methods\":{\"implementation()\":{\"details\":\"The implementation can be instantiated via the `new` keyword, cloned via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)), or proxied via the UUPS proxy pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\",\"returns\":{\"_0\":\"The address of the plugin implementation contract.\"}},\"prepareInstallation(address,bytes)\":{\"params\":{\"_dao\":\"The address of the installing DAO.\",\"_data\":\"The bytes-encoded data containing the input parameters for the installation as specified in the plugin's build metadata JSON file.\"},\"returns\":{\"plugin\":\"The address of the `Plugin` contract being prepared for installation.\",\"preparedSetupData\":\"The deployed plugin's relevant data which consists of helpers and permissions.\"}},\"prepareUninstallation(address,(address,address[],bytes))\":{\"params\":{\"_dao\":\"The address of the uninstalling DAO.\",\"_payload\":\"The relevant data necessary for the `prepareUninstallation`. See above.\"},\"returns\":{\"permissions\":\"The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the uninstalling DAO.\"}},\"prepareUpdate(address,uint16,(address,address[],bytes))\":{\"params\":{\"_dao\":\"The address of the updating DAO.\",\"_fromBuild\":\"The build number of the plugin to update from.\",\"_payload\":\"The relevant data necessary for the `prepareUpdate`. See above.\"},\"returns\":{\"initData\":\"The initialization data to be passed to upgradeable contracts when the update is applied in the `PluginSetupProcessor`.\",\"preparedSetupData\":\"The deployed plugin's relevant data which consists of helpers and permissions.\"}},\"protocolVersion()\":{\"details\":\"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\",\"returns\":{\"_0\":\"Returns the semantic Aragon OSx protocol version number.\"}},\"supportsInterface(bytes4)\":{\"params\":{\"_interfaceId\":\"The ID of the interface.\"},\"returns\":{\"_0\":\"Returns `true` if the interface is supported.\"}}},\"version\":1},\"userdoc\":{\"errors\":{\"InvalidUpdatePath(uint16,uint16)\":[{\"notice\":\"Thrown when an update path is not available, for example, if this is the initial build.\"}]},\"kind\":\"user\",\"methods\":{\"implementation()\":{\"notice\":\"Returns the plugin implementation address.\"},\"prepareInstallation(address,bytes)\":{\"notice\":\"Prepares the installation of a plugin.\"},\"prepareUninstallation(address,(address,address[],bytes))\":{\"notice\":\"Prepares the uninstallation of a plugin.\"},\"prepareUpdate(address,uint16,(address,address[],bytes))\":{\"notice\":\"Prepares the update of a plugin.\"},\"protocolVersion()\":{\"notice\":\"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Checks if this or the parent contract supports an interface by its ID.\"}},\"notice\":\"A mock plugin setup of an upgradeable plugin to be deployed via the UUPS pattern. v1.2 (Release 1, Build 2)\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/mocks/plugin/PluginUUPSUpgradeableSetupMock.sol\":\"PluginUUPSUpgradeableSetupMockBuild2\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/interfaces/IERC1967Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (interfaces/IERC1967.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\\n *\\n * _Available since v4.8.3._\\n */\\ninterface IERC1967Upgradeable {\\n /**\\n * @dev Emitted when the implementation is upgraded.\\n */\\n event Upgraded(address indexed implementation);\\n\\n /**\\n * @dev Emitted when the admin account has changed.\\n */\\n event AdminChanged(address previousAdmin, address newAdmin);\\n\\n /**\\n * @dev Emitted when the beacon is changed.\\n */\\n event BeaconUpgraded(address indexed beacon);\\n}\\n\",\"keccak256\":\"0x47d6e06872b12e72c79d1b5eb55842f860b5fb1207b2317c2358d2766b950a7b\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822ProxiableUpgradeable {\\n /**\\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n * address.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy.\\n */\\n function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../beacon/IBeaconUpgradeable.sol\\\";\\nimport \\\"../../interfaces/IERC1967Upgradeable.sol\\\";\\nimport \\\"../../interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\nimport \\\"../../utils/StorageSlotUpgradeable.sol\\\";\\nimport {Initializable} from \\\"../utils/Initializable.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n */\\nabstract contract ERC1967UpgradeUpgradeable is Initializable, IERC1967Upgradeable {\\n // This is the keccak-256 hash of \\\"eip1967.proxy.rollback\\\" subtracted by 1\\n bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n /**\\n * @dev Storage slot with the address of the current implementation.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n function __ERC1967Upgrade_init() internal onlyInitializing {\\n }\\n\\n function __ERC1967Upgrade_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _getImplementation() internal view returns (address) {\\n return StorageSlotUpgradeable.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 implementation slot.\\n */\\n function _setImplementation(address newImplementation) private {\\n require(AddressUpgradeable.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n StorageSlotUpgradeable.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n }\\n\\n /**\\n * @dev Perform implementation upgrade\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeTo(address newImplementation) internal {\\n _setImplementation(newImplementation);\\n emit Upgraded(newImplementation);\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCall(address newImplementation, bytes memory data, bool forceCall) internal {\\n _upgradeTo(newImplementation);\\n if (data.length > 0 || forceCall) {\\n AddressUpgradeable.functionDelegateCall(newImplementation, data);\\n }\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCallUUPS(address newImplementation, bytes memory data, bool forceCall) internal {\\n // Upgrades from old implementations will perform a rollback test. This test requires the new\\n // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n // this special case will break upgrade paths from old UUPS implementation to new ones.\\n if (StorageSlotUpgradeable.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n _setImplementation(newImplementation);\\n } else {\\n try IERC1822ProxiableUpgradeable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n require(slot == _IMPLEMENTATION_SLOT, \\\"ERC1967Upgrade: unsupported proxiableUUID\\\");\\n } catch {\\n revert(\\\"ERC1967Upgrade: new implementation is not UUPS\\\");\\n }\\n _upgradeToAndCall(newImplementation, data, forceCall);\\n }\\n }\\n\\n /**\\n * @dev Storage slot with the admin of the contract.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _getAdmin() internal view returns (address) {\\n return StorageSlotUpgradeable.getAddressSlot(_ADMIN_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 admin slot.\\n */\\n function _setAdmin(address newAdmin) private {\\n require(newAdmin != address(0), \\\"ERC1967: new admin is the zero address\\\");\\n StorageSlotUpgradeable.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n */\\n function _changeAdmin(address newAdmin) internal {\\n emit AdminChanged(_getAdmin(), newAdmin);\\n _setAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\\n */\\n bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n /**\\n * @dev Returns the current beacon.\\n */\\n function _getBeacon() internal view returns (address) {\\n return StorageSlotUpgradeable.getAddressSlot(_BEACON_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new beacon in the EIP1967 beacon slot.\\n */\\n function _setBeacon(address newBeacon) private {\\n require(AddressUpgradeable.isContract(newBeacon), \\\"ERC1967: new beacon is not a contract\\\");\\n require(\\n AddressUpgradeable.isContract(IBeaconUpgradeable(newBeacon).implementation()),\\n \\\"ERC1967: beacon implementation is not a contract\\\"\\n );\\n StorageSlotUpgradeable.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n }\\n\\n /**\\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n *\\n * Emits a {BeaconUpgraded} event.\\n */\\n function _upgradeBeaconToAndCall(address newBeacon, bytes memory data, bool forceCall) internal {\\n _setBeacon(newBeacon);\\n emit BeaconUpgraded(newBeacon);\\n if (data.length > 0 || forceCall) {\\n AddressUpgradeable.functionDelegateCall(IBeaconUpgradeable(newBeacon).implementation(), data);\\n }\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x7795808e3899c805254e3ae58074b20f799b466e3f43e057e47bedee5fb771f8\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeaconUpgradeable {\\n /**\\n * @dev Must return an address that can be used as a delegate call target.\\n *\\n * {BeaconProxy} will check that this address is a contract.\\n */\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/UUPSUpgradeable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport \\\"../ERC1967/ERC1967UpgradeUpgradeable.sol\\\";\\nimport {Initializable} from \\\"./Initializable.sol\\\";\\n\\n/**\\n * @dev An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an\\n * {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy.\\n *\\n * A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is\\n * reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing\\n * `UUPSUpgradeable` with a custom implementation of upgrades.\\n *\\n * The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism.\\n *\\n * _Available since v4.1._\\n */\\nabstract contract UUPSUpgradeable is Initializable, IERC1822ProxiableUpgradeable, ERC1967UpgradeUpgradeable {\\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable state-variable-assignment\\n address private immutable __self = address(this);\\n\\n /**\\n * @dev Check that the execution is being performed through a delegatecall call and that the execution context is\\n * a proxy contract with an implementation (as defined in ERC1967) pointing to self. This should only be the case\\n * for UUPS and transparent proxies that are using the current contract as their implementation. Execution of a\\n * function through ERC1167 minimal proxies (clones) would not normally pass this test, but is not guaranteed to\\n * fail.\\n */\\n modifier onlyProxy() {\\n require(address(this) != __self, \\\"Function must be called through delegatecall\\\");\\n require(_getImplementation() == __self, \\\"Function must be called through active proxy\\\");\\n _;\\n }\\n\\n /**\\n * @dev Check that the execution is not being performed through a delegate call. This allows a function to be\\n * callable on the implementing contract but not through proxies.\\n */\\n modifier notDelegated() {\\n require(address(this) == __self, \\\"UUPSUpgradeable: must not be called through delegatecall\\\");\\n _;\\n }\\n\\n function __UUPSUpgradeable_init() internal onlyInitializing {\\n }\\n\\n function __UUPSUpgradeable_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the\\n * implementation. It is used to validate the implementation's compatibility when performing an upgrade.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\\n */\\n function proxiableUUID() external view virtual override notDelegated returns (bytes32) {\\n return _IMPLEMENTATION_SLOT;\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy to `newImplementation`.\\n *\\n * Calls {_authorizeUpgrade}.\\n *\\n * Emits an {Upgraded} event.\\n *\\n * @custom:oz-upgrades-unsafe-allow-reachable delegatecall\\n */\\n function upgradeTo(address newImplementation) public virtual onlyProxy {\\n _authorizeUpgrade(newImplementation);\\n _upgradeToAndCallUUPS(newImplementation, new bytes(0), false);\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call\\n * encoded in `data`.\\n *\\n * Calls {_authorizeUpgrade}.\\n *\\n * Emits an {Upgraded} event.\\n *\\n * @custom:oz-upgrades-unsafe-allow-reachable delegatecall\\n */\\n function upgradeToAndCall(address newImplementation, bytes memory data) public payable virtual onlyProxy {\\n _authorizeUpgrade(newImplementation);\\n _upgradeToAndCallUUPS(newImplementation, data, true);\\n }\\n\\n /**\\n * @dev Function that should revert when `msg.sender` is not authorized to upgrade the contract. Called by\\n * {upgradeTo} and {upgradeToAndCall}.\\n *\\n * Normally, this function will use an xref:access.adoc[access control] modifier such as {Ownable-onlyOwner}.\\n *\\n * ```solidity\\n * function _authorizeUpgrade(address) internal override onlyOwner {}\\n * ```\\n */\\n function _authorizeUpgrade(address newImplementation) internal virtual;\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0xefb41f5c1a00249b7a99f0782f8c557865605426a3fb6e5fe9ae334293ae4f33\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n function __Context_init() internal onlyInitializing {\\n }\\n\\n function __Context_init_unchained() internal onlyInitializing {\\n }\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n function _contextSuffixLength() internal view virtual returns (uint256) {\\n return 0;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x75097e35253e7fb282ee4d7f27a80eaacfa759923185bf17302a89cbc059c5ef\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/StorageSlot.sol)\\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```solidity\\n * contract ERC1967 {\\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n * function _getImplementation() internal view returns (address) {\\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n * }\\n *\\n * function _setImplementation(address newImplementation) internal {\\n * require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n * }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._\\n * _Available since v4.9 for `string`, `bytes`._\\n */\\nlibrary StorageSlotUpgradeable {\\n struct AddressSlot {\\n address value;\\n }\\n\\n struct BooleanSlot {\\n bool value;\\n }\\n\\n struct Bytes32Slot {\\n bytes32 value;\\n }\\n\\n struct Uint256Slot {\\n uint256 value;\\n }\\n\\n struct StringSlot {\\n string value;\\n }\\n\\n struct BytesSlot {\\n bytes value;\\n }\\n\\n /**\\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n */\\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n */\\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n */\\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n */\\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` with member `value` located at `slot`.\\n */\\n function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\\n */\\n function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` with member `value` located at `slot`.\\n */\\n function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\\n */\\n function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n}\\n\",\"keccak256\":\"0x07ac95acad040f1fb1f6120dd0aa5f702db69446e95f82613721879d30de0908\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165Upgradeable.sol\\\";\\nimport {Initializable} from \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165Upgradeable is Initializable, IERC165Upgradeable {\\n function __ERC165_init() internal onlyInitializing {\\n }\\n\\n function __ERC165_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165Upgradeable).interfaceId;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0xd90d7723512df65ae417adaf0801042940f0dabd60039ceeaffe34aa5b238da1\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165Upgradeable {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/IERC1967.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (interfaces/IERC1967.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\\n *\\n * _Available since v4.8.3._\\n */\\ninterface IERC1967 {\\n /**\\n * @dev Emitted when the implementation is upgraded.\\n */\\n event Upgraded(address indexed implementation);\\n\\n /**\\n * @dev Emitted when the admin account has changed.\\n */\\n event AdminChanged(address previousAdmin, address newAdmin);\\n\\n /**\\n * @dev Emitted when the beacon is changed.\\n */\\n event BeaconUpgraded(address indexed beacon);\\n}\\n\",\"keccak256\":\"0x3cbef5ebc24b415252e2f8c0c9254555d30d9f085603b4b80d9b5ed20ab87e90\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822Proxiable {\\n /**\\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n * address.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy.\\n */\\n function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/Clones.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/Clones.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev https://eips.ethereum.org/EIPS/eip-1167[EIP 1167] is a standard for\\n * deploying minimal proxy contracts, also known as \\\"clones\\\".\\n *\\n * > To simply and cheaply clone contract functionality in an immutable way, this standard specifies\\n * > a minimal bytecode implementation that delegates all calls to a known, fixed address.\\n *\\n * The library includes functions to deploy a proxy using either `create` (traditional deployment) or `create2`\\n * (salted deterministic deployment). It also includes functions to predict the addresses of clones deployed using the\\n * deterministic method.\\n *\\n * _Available since v3.4._\\n */\\nlibrary Clones {\\n /**\\n * @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`.\\n *\\n * This function uses the create opcode, which should never revert.\\n */\\n function clone(address implementation) internal returns (address instance) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n // Cleans the upper 96 bits of the `implementation` word, then packs the first 3 bytes\\n // of the `implementation` address with the bytecode before the address.\\n mstore(0x00, or(shr(0xe8, shl(0x60, implementation)), 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000))\\n // Packs the remaining 17 bytes of `implementation` with the bytecode after the address.\\n mstore(0x20, or(shl(0x78, implementation), 0x5af43d82803e903d91602b57fd5bf3))\\n instance := create(0, 0x09, 0x37)\\n }\\n require(instance != address(0), \\\"ERC1167: create failed\\\");\\n }\\n\\n /**\\n * @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`.\\n *\\n * This function uses the create2 opcode and a `salt` to deterministically deploy\\n * the clone. Using the same `implementation` and `salt` multiple time will revert, since\\n * the clones cannot be deployed twice at the same address.\\n */\\n function cloneDeterministic(address implementation, bytes32 salt) internal returns (address instance) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n // Cleans the upper 96 bits of the `implementation` word, then packs the first 3 bytes\\n // of the `implementation` address with the bytecode before the address.\\n mstore(0x00, or(shr(0xe8, shl(0x60, implementation)), 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000))\\n // Packs the remaining 17 bytes of `implementation` with the bytecode after the address.\\n mstore(0x20, or(shl(0x78, implementation), 0x5af43d82803e903d91602b57fd5bf3))\\n instance := create2(0, 0x09, 0x37, salt)\\n }\\n require(instance != address(0), \\\"ERC1167: create2 failed\\\");\\n }\\n\\n /**\\n * @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}.\\n */\\n function predictDeterministicAddress(\\n address implementation,\\n bytes32 salt,\\n address deployer\\n ) internal pure returns (address predicted) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n let ptr := mload(0x40)\\n mstore(add(ptr, 0x38), deployer)\\n mstore(add(ptr, 0x24), 0x5af43d82803e903d91602b57fd5bf3ff)\\n mstore(add(ptr, 0x14), implementation)\\n mstore(ptr, 0x3d602d80600a3d3981f3363d3d373d3d3d363d73)\\n mstore(add(ptr, 0x58), salt)\\n mstore(add(ptr, 0x78), keccak256(add(ptr, 0x0c), 0x37))\\n predicted := keccak256(add(ptr, 0x43), 0x55)\\n }\\n }\\n\\n /**\\n * @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}.\\n */\\n function predictDeterministicAddress(\\n address implementation,\\n bytes32 salt\\n ) internal view returns (address predicted) {\\n return predictDeterministicAddress(implementation, salt, address(this));\\n }\\n}\\n\",\"keccak256\":\"0x01f055f5c26ba25d7f83e9aa9ba877fbea4d0bf22227de046ea67494bc932999\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (proxy/ERC1967/ERC1967Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../Proxy.sol\\\";\\nimport \\\"./ERC1967Upgrade.sol\\\";\\n\\n/**\\n * @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an\\n * implementation address that can be changed. This address is stored in storage in the location specified by\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the\\n * implementation behind the proxy.\\n */\\ncontract ERC1967Proxy is Proxy, ERC1967Upgrade {\\n /**\\n * @dev Initializes the upgradeable proxy with an initial implementation specified by `_logic`.\\n *\\n * If `_data` is nonempty, it's used as data in a delegate call to `_logic`. This will typically be an encoded\\n * function call, and allows initializing the storage of the proxy like a Solidity constructor.\\n */\\n constructor(address _logic, bytes memory _data) payable {\\n _upgradeToAndCall(_logic, _data, false);\\n }\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _implementation() internal view virtual override returns (address impl) {\\n return ERC1967Upgrade._getImplementation();\\n }\\n}\\n\",\"keccak256\":\"0xa2b22da3032e50b55f95ec1d13336102d675f341167aa76db571ef7f8bb7975d\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../beacon/IBeacon.sol\\\";\\nimport \\\"../../interfaces/IERC1967.sol\\\";\\nimport \\\"../../interfaces/draft-IERC1822.sol\\\";\\nimport \\\"../../utils/Address.sol\\\";\\nimport \\\"../../utils/StorageSlot.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n */\\nabstract contract ERC1967Upgrade is IERC1967 {\\n // This is the keccak-256 hash of \\\"eip1967.proxy.rollback\\\" subtracted by 1\\n bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n /**\\n * @dev Storage slot with the address of the current implementation.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _getImplementation() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 implementation slot.\\n */\\n function _setImplementation(address newImplementation) private {\\n require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n }\\n\\n /**\\n * @dev Perform implementation upgrade\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeTo(address newImplementation) internal {\\n _setImplementation(newImplementation);\\n emit Upgraded(newImplementation);\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCall(address newImplementation, bytes memory data, bool forceCall) internal {\\n _upgradeTo(newImplementation);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(newImplementation, data);\\n }\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCallUUPS(address newImplementation, bytes memory data, bool forceCall) internal {\\n // Upgrades from old implementations will perform a rollback test. This test requires the new\\n // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n // this special case will break upgrade paths from old UUPS implementation to new ones.\\n if (StorageSlot.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n _setImplementation(newImplementation);\\n } else {\\n try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n require(slot == _IMPLEMENTATION_SLOT, \\\"ERC1967Upgrade: unsupported proxiableUUID\\\");\\n } catch {\\n revert(\\\"ERC1967Upgrade: new implementation is not UUPS\\\");\\n }\\n _upgradeToAndCall(newImplementation, data, forceCall);\\n }\\n }\\n\\n /**\\n * @dev Storage slot with the admin of the contract.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _getAdmin() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_ADMIN_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 admin slot.\\n */\\n function _setAdmin(address newAdmin) private {\\n require(newAdmin != address(0), \\\"ERC1967: new admin is the zero address\\\");\\n StorageSlot.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n */\\n function _changeAdmin(address newAdmin) internal {\\n emit AdminChanged(_getAdmin(), newAdmin);\\n _setAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\\n */\\n bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n /**\\n * @dev Returns the current beacon.\\n */\\n function _getBeacon() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_BEACON_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new beacon in the EIP1967 beacon slot.\\n */\\n function _setBeacon(address newBeacon) private {\\n require(Address.isContract(newBeacon), \\\"ERC1967: new beacon is not a contract\\\");\\n require(\\n Address.isContract(IBeacon(newBeacon).implementation()),\\n \\\"ERC1967: beacon implementation is not a contract\\\"\\n );\\n StorageSlot.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n }\\n\\n /**\\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n *\\n * Emits a {BeaconUpgraded} event.\\n */\\n function _upgradeBeaconToAndCall(address newBeacon, bytes memory data, bool forceCall) internal {\\n _setBeacon(newBeacon);\\n emit BeaconUpgraded(newBeacon);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x3b21ae06bf5957f73fa16754b0669c77b7abd8ba6c072d35c3281d446fdb86c2\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (proxy/Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\\n * be specified by overriding the virtual {_implementation} function.\\n *\\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\\n * different contract through the {_delegate} function.\\n *\\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\\n */\\nabstract contract Proxy {\\n /**\\n * @dev Delegates the current call to `implementation`.\\n *\\n * This function does not return to its internal call site, it will return directly to the external caller.\\n */\\n function _delegate(address implementation) internal virtual {\\n assembly {\\n // Copy msg.data. We take full control of memory in this inline assembly\\n // block because it will not return to Solidity code. We overwrite the\\n // Solidity scratch pad at memory position 0.\\n calldatacopy(0, 0, calldatasize())\\n\\n // Call the implementation.\\n // out and outsize are 0 because we don't know the size yet.\\n let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)\\n\\n // Copy the returned data.\\n returndatacopy(0, 0, returndatasize())\\n\\n switch result\\n // delegatecall returns 0 on error.\\n case 0 {\\n revert(0, returndatasize())\\n }\\n default {\\n return(0, returndatasize())\\n }\\n }\\n }\\n\\n /**\\n * @dev This is a virtual function that should be overridden so it returns the address to which the fallback function\\n * and {_fallback} should delegate.\\n */\\n function _implementation() internal view virtual returns (address);\\n\\n /**\\n * @dev Delegates the current call to the address returned by `_implementation()`.\\n *\\n * This function does not return to its internal call site, it will return directly to the external caller.\\n */\\n function _fallback() internal virtual {\\n _beforeFallback();\\n _delegate(_implementation());\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\\n * function in the contract matches the call data.\\n */\\n fallback() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data\\n * is empty.\\n */\\n receive() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`\\n * call, or as part of the Solidity `fallback` or `receive` functions.\\n *\\n * If overridden should call `super._beforeFallback()`.\\n */\\n function _beforeFallback() internal virtual {}\\n}\\n\",\"keccak256\":\"0xc130fe33f1b2132158531a87734153293f6d07bc263ff4ac90e85da9c82c0e27\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeacon {\\n /**\\n * @dev Must return an address that can be used as a delegate call target.\\n *\\n * {BeaconProxy} will check that this address is a contract.\\n */\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/StorageSlot.sol)\\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```solidity\\n * contract ERC1967 {\\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n * function _getImplementation() internal view returns (address) {\\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n * }\\n *\\n * function _setImplementation(address newImplementation) internal {\\n * require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n * }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._\\n * _Available since v4.9 for `string`, `bytes`._\\n */\\nlibrary StorageSlot {\\n struct AddressSlot {\\n address value;\\n }\\n\\n struct BooleanSlot {\\n bool value;\\n }\\n\\n struct Bytes32Slot {\\n bytes32 value;\\n }\\n\\n struct Uint256Slot {\\n uint256 value;\\n }\\n\\n struct StringSlot {\\n string value;\\n }\\n\\n struct BytesSlot {\\n bytes value;\\n }\\n\\n /**\\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n */\\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n */\\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n */\\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n */\\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` with member `value` located at `slot`.\\n */\\n function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\\n */\\n function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` with member `value` located at `slot`.\\n */\\n function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\\n */\\n function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n}\\n\",\"keccak256\":\"0xf09e68aa0dc6722a25bc46490e8d48ed864466d17313b8a0b254c36b54e49899\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165 is IERC165 {\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165).interfaceId;\\n }\\n}\\n\",\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"src/dao/IDAO.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IDAO\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for DAOs within the Aragon App DAO framework.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IDAO {\\n /// @notice The action struct to be consumed by the DAO's `execute` function resulting in an external call.\\n /// @param to The address to call.\\n /// @param value The native token value to be sent with the call.\\n /// @param data The bytes-encoded function selector and calldata for the call.\\n struct Action {\\n address to;\\n uint256 value;\\n bytes data;\\n }\\n\\n /// @notice Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\\n /// @param _where The address of the contract.\\n /// @param _who The address of a EOA or contract to give the permissions.\\n /// @param _permissionId The permission identifier.\\n /// @param _data The optional data passed to the `PermissionCondition` registered.\\n /// @return Returns true if the address has permission, false if not.\\n function hasPermission(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes memory _data\\n ) external view returns (bool);\\n\\n /// @notice Updates the DAO metadata (e.g., an IPFS hash).\\n /// @param _metadata The IPFS hash of the new metadata object.\\n function setMetadata(bytes calldata _metadata) external;\\n\\n /// @notice Emitted when the DAO metadata is updated.\\n /// @param metadata The IPFS hash of the new metadata object.\\n event MetadataSet(bytes metadata);\\n\\n /// @notice Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted.\\n /// @param _callId The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce.\\n /// @param _actions The array of actions.\\n /// @param _allowFailureMap A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @return The array of results obtained from the executed actions in `bytes`.\\n /// @return The resulting failure map containing the actions have actually failed.\\n function execute(\\n bytes32 _callId,\\n Action[] memory _actions,\\n uint256 _allowFailureMap\\n ) external returns (bytes[] memory, uint256);\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param actor The address of the caller.\\n /// @param callId The ID of the call.\\n /// @param actions The array of actions executed.\\n /// @param allowFailureMap The allow failure map encoding which actions are allowed to fail.\\n /// @param failureMap The failure map encoding which actions have failed.\\n /// @param execResults The array with the results of the executed actions.\\n /// @dev The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce.\\n event Executed(\\n address indexed actor,\\n bytes32 callId,\\n Action[] actions,\\n uint256 allowFailureMap,\\n uint256 failureMap,\\n bytes[] execResults\\n );\\n\\n /// @notice Emitted when a standard callback is registered.\\n /// @param interfaceId The ID of the interface.\\n /// @param callbackSelector The selector of the callback function.\\n /// @param magicNumber The magic number to be registered for the callback function selector.\\n event StandardCallbackRegistered(\\n bytes4 interfaceId,\\n bytes4 callbackSelector,\\n bytes4 magicNumber\\n );\\n\\n /// @notice Deposits (native) tokens to the DAO contract with a reference string.\\n /// @param _token The address of the token or address(0) in case of the native token.\\n /// @param _amount The amount of tokens to deposit.\\n /// @param _reference The reference describing the deposit reason.\\n function deposit(address _token, uint256 _amount, string calldata _reference) external payable;\\n\\n /// @notice Emitted when a token deposit has been made to the DAO.\\n /// @param sender The address of the sender.\\n /// @param token The address of the deposited token.\\n /// @param amount The amount of tokens deposited.\\n /// @param _reference The reference describing the deposit reason.\\n event Deposited(\\n address indexed sender,\\n address indexed token,\\n uint256 amount,\\n string _reference\\n );\\n\\n /// @notice Emitted when a native token deposit has been made to the DAO.\\n /// @dev This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).\\n /// @param sender The address of the sender.\\n /// @param amount The amount of native tokens deposited.\\n event NativeTokenDeposited(address sender, uint256 amount);\\n\\n /// @notice Setter for the trusted forwarder verifying the meta transaction.\\n /// @param _trustedForwarder The trusted forwarder address.\\n function setTrustedForwarder(address _trustedForwarder) external;\\n\\n /// @notice Getter for the trusted forwarder verifying the meta transaction.\\n /// @return The trusted forwarder address.\\n function getTrustedForwarder() external view returns (address);\\n\\n /// @notice Emitted when a new TrustedForwarder is set on the DAO.\\n /// @param forwarder the new forwarder address.\\n event TrustedForwarderSet(address forwarder);\\n\\n /// @notice Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\\n /// @param _hash The hash of the data to be signed.\\n /// @param _signature The signature byte array associated with `_hash`.\\n /// @return Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not.\\n function isValidSignature(bytes32 _hash, bytes memory _signature) external returns (bytes4);\\n\\n /// @notice Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\\n /// @param _interfaceId The ID of the interface.\\n /// @param _callbackSelector The selector of the callback function.\\n /// @param _magicNumber The magic number to be registered for the function signature.\\n function registerStandardCallback(\\n bytes4 _interfaceId,\\n bytes4 _callbackSelector,\\n bytes4 _magicNumber\\n ) external;\\n\\n /// @notice Removed function being left here to not corrupt the IDAO interface ID. Any call will revert.\\n /// @dev Introduced in v1.0.0. Removed in v1.4.0.\\n function setSignatureValidator(address) external;\\n}\\n\",\"keccak256\":\"0xb7f615523c26de042edce98731c658f44a1edb2464387ac1b642c4c69f57128e\",\"license\":\"AGPL-3.0-or-later\"},\"src/mocks/plugin/PluginSetupMockData.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {PermissionLib} from \\\"../../permission/PermissionLib.sol\\\";\\n\\naddress constant NO_CONDITION = address(0);\\n\\nerror ConflictingValues();\\n\\n/// @notice Creates a mock `MultiTargetPermission` array by converting a range of `uint160` values into `address` values.\\n/// @param rangeStart The start of the range.\\n/// @param rangeEnd The end of the range (that is not included).\\n/// @param op The permission operation type.\\n/// @return permissions The mock array of permissions.\\n/// @dev DO NOT USE IN PRODUCTION!\\nfunction mockPermissions(\\n uint160 rangeStart,\\n uint160 rangeEnd,\\n PermissionLib.Operation op\\n) pure returns (PermissionLib.MultiTargetPermission[] memory permissions) {\\n if (rangeStart > rangeEnd) revert ConflictingValues();\\n\\n permissions = new PermissionLib.MultiTargetPermission[](rangeEnd - rangeStart);\\n\\n for (uint160 i = rangeStart; i < rangeEnd; i++) {\\n permissions[i - rangeStart] = PermissionLib.MultiTargetPermission({\\n operation: op,\\n where: address(i),\\n who: address(i),\\n condition: PermissionLib.NO_CONDITION,\\n permissionId: keccak256(\\\"MOCK_PERMISSION\\\")\\n });\\n }\\n}\\n\\n/// @notice Creates a mock array of helper addresses of specified length by converting `uint160` values starting from 0 into `address` values.\\n/// @param len The length of the helper array.\\n/// @return helpers The mock array of helper addresses.\\n/// @dev DO NOT USE IN PRODUCTION!\\nfunction mockHelpers(uint160 len) pure returns (address[] memory helpers) {\\n helpers = new address[](len);\\n\\n for (uint160 i = 0; i < len; i++) {\\n helpers[i] = address(i);\\n }\\n}\\n\",\"keccak256\":\"0x529d1b7ea4c348fe18edf81a044792ca8aa1f6ad9a7d2edfd35e38bf8372abf9\",\"license\":\"AGPL-3.0-or-later\"},\"src/mocks/plugin/PluginUUPSUpgradeableMock.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\n/* solhint-disable one-contract-per-file */\\npragma solidity ^0.8.8;\\n\\nimport {PluginUUPSUpgradeable} from \\\"../../plugin/PluginUUPSUpgradeable.sol\\\";\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice A mock upgradeable plugin to be deployed via the UUPS proxy pattern.\\n/// v1.1 (Release 1, Build 1)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableMockBuild1 is PluginUUPSUpgradeable {\\n uint256 public state1;\\n\\n function initialize(IDAO _dao) external initializer {\\n __PluginUUPSUpgradeable_init(_dao);\\n state1 = 1;\\n }\\n}\\n\\n/// @notice A mock upgradeable plugin to be deployed via the UUPS proxy pattern.\\n/// v1.1 (Release 1, Build 2)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableMockBuild2 is PluginUUPSUpgradeable {\\n uint256 public state1;\\n uint256 public state2;\\n\\n function initialize(IDAO _dao) external reinitializer(2) {\\n __PluginUUPSUpgradeable_init(_dao);\\n state1 = 1;\\n state2 = 2;\\n }\\n\\n function initializeFrom(uint16 _previousBuild) external reinitializer(2) {\\n if (_previousBuild < 2) {\\n state2 = 2;\\n }\\n }\\n}\\n\\n/// @notice A mock upgradeable plugin to be deployed via the UUPS proxy pattern.\\n/// v1.1 (Release 1, Build 3)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableMockBuild3 is PluginUUPSUpgradeable {\\n uint256 public state1;\\n uint256 public state2;\\n uint256 public state3;\\n\\n function initialize(IDAO _dao) external reinitializer(3) {\\n __PluginUUPSUpgradeable_init(_dao);\\n state1 = 1;\\n state2 = 2;\\n state3 = 3;\\n }\\n\\n function initializeFrom(uint16 _previousBuild) external reinitializer(3) {\\n if (_previousBuild < 2) {\\n state2 = 2;\\n }\\n if (_previousBuild < 3) {\\n state3 = 3;\\n }\\n }\\n}\\n\\n/// @notice A mock upgradeable plugin missing an initializer function.\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableMockBad is PluginUUPSUpgradeable {\\n uint256 public state1;\\n\\n function notAnInitializer(IDAO _dao) external {\\n __PluginUUPSUpgradeable_init(_dao);\\n state1 = 1;\\n }\\n}\\n\",\"keccak256\":\"0x2917df3b1da0de27f58cf531afeaa4e6c4285717247cbdd9ecc7880ae5cb9cb0\",\"license\":\"AGPL-3.0-or-later\"},\"src/mocks/plugin/PluginUUPSUpgradeableSetupMock.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\n/* solhint-disable one-contract-per-file */\\npragma solidity ^0.8.8;\\n\\nimport {PermissionLib} from \\\"../../permission/PermissionLib.sol\\\";\\nimport {IPluginSetup} from \\\"../../plugin/setup/IPluginSetup.sol\\\";\\nimport {PluginUpgradeableSetup} from \\\"../../plugin/setup/PluginUpgradeableSetup.sol\\\";\\nimport {ProxyLib} from \\\"../../utils/deployment/ProxyLib.sol\\\";\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\nimport {mockPermissions, mockHelpers} from \\\"./PluginSetupMockData.sol\\\";\\nimport {PluginUUPSUpgradeableMockBuild1, PluginUUPSUpgradeableMockBuild2, PluginUUPSUpgradeableMockBuild3} from \\\"./PluginUUPSUpgradeableMock.sol\\\";\\n\\n/// @notice A mock plugin setup of an upgradeable plugin to be deployed via the UUPS pattern.\\n/// v1.1 (Release 1, Build 1)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableSetupMockBuild1 is PluginUpgradeableSetup {\\n using ProxyLib for address;\\n\\n uint16 internal constant THIS_BUILD = 1;\\n\\n constructor() PluginUpgradeableSetup(address(new PluginUUPSUpgradeableMockBuild1())) {}\\n\\n /// @inheritdoc IPluginSetup\\n function prepareInstallation(\\n address _dao,\\n bytes memory\\n ) public returns (address plugin, PreparedSetupData memory preparedSetupData) {\\n bytes memory initData = abi.encodeCall(\\n PluginUUPSUpgradeableMockBuild1.initialize,\\n (IDAO(_dao))\\n );\\n plugin = implementation().deployUUPSProxy(initData);\\n preparedSetupData.helpers = mockHelpers(1);\\n preparedSetupData.permissions = mockPermissions(0, 1, PermissionLib.Operation.Grant);\\n }\\n\\n /// @inheritdoc IPluginSetup\\n /// @dev The default implementation for the initial build 1 that reverts because no earlier build exists.\\n function prepareUpdate(\\n address _dao,\\n uint16 _fromBuild,\\n SetupPayload calldata _payload\\n ) external pure virtual returns (bytes memory, PreparedSetupData memory) {\\n (_dao, _fromBuild, _payload);\\n revert InvalidUpdatePath({fromBuild: 0, thisBuild: THIS_BUILD});\\n }\\n\\n /// @inheritdoc IPluginSetup\\n function prepareUninstallation(\\n address _dao,\\n SetupPayload calldata _payload\\n ) external pure returns (PermissionLib.MultiTargetPermission[] memory permissions) {\\n (_dao, _payload);\\n permissions = mockPermissions(0, THIS_BUILD, PermissionLib.Operation.Revoke);\\n }\\n}\\n\\n/// @notice A mock plugin setup of an upgradeable plugin to be deployed via the UUPS pattern.\\n/// v1.2 (Release 1, Build 2)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableSetupMockBuild2 is PluginUpgradeableSetup {\\n using ProxyLib for address;\\n\\n uint16 internal constant THIS_BUILD = 2;\\n\\n constructor() PluginUpgradeableSetup(address(new PluginUUPSUpgradeableMockBuild2())) {}\\n\\n /// @inheritdoc IPluginSetup\\n function prepareInstallation(\\n address _dao,\\n bytes memory\\n ) external returns (address plugin, PreparedSetupData memory preparedSetupData) {\\n bytes memory initData = abi.encodeCall(\\n PluginUUPSUpgradeableMockBuild2.initialize,\\n (IDAO(_dao))\\n );\\n plugin = implementation().deployUUPSProxy(initData);\\n preparedSetupData.helpers = mockHelpers(THIS_BUILD);\\n preparedSetupData.permissions = mockPermissions(\\n 0,\\n THIS_BUILD,\\n PermissionLib.Operation.Grant\\n );\\n }\\n\\n /// @inheritdoc IPluginSetup\\n function prepareUpdate(\\n address _dao,\\n uint16 _fromBuild,\\n SetupPayload calldata _payload\\n )\\n external\\n pure\\n override\\n returns (bytes memory initData, PreparedSetupData memory preparedSetupData)\\n {\\n (_dao, _payload);\\n\\n // Update from Build 1\\n if (_fromBuild == 1) {\\n preparedSetupData.helpers = mockHelpers(THIS_BUILD);\\n initData = abi.encodeCall(PluginUUPSUpgradeableMockBuild2.initializeFrom, (_fromBuild));\\n preparedSetupData.permissions = mockPermissions(\\n _fromBuild,\\n THIS_BUILD,\\n PermissionLib.Operation.Grant\\n );\\n }\\n }\\n\\n /// @inheritdoc IPluginSetup\\n function prepareUninstallation(\\n address _dao,\\n SetupPayload calldata _payload\\n ) external pure returns (PermissionLib.MultiTargetPermission[] memory permissions) {\\n (_dao, _payload);\\n permissions = mockPermissions(0, THIS_BUILD, PermissionLib.Operation.Revoke);\\n }\\n}\\n\\n/// @notice A mock plugin setup of an upgradeable plugin to be deployed via the UUPS pattern.\\n/// v1.3 (Release 1, Build 3)\\ncontract PluginUUPSUpgradeableSetupMockBuild3 is PluginUpgradeableSetup {\\n using ProxyLib for address;\\n\\n uint16 internal constant THIS_BUILD = 3;\\n\\n constructor() PluginUpgradeableSetup(address(new PluginUUPSUpgradeableMockBuild3())) {}\\n\\n /// @inheritdoc IPluginSetup\\n function prepareInstallation(\\n address _dao,\\n bytes memory\\n ) external returns (address plugin, PreparedSetupData memory preparedSetupData) {\\n bytes memory initData = abi.encodeCall(\\n PluginUUPSUpgradeableMockBuild3.initialize,\\n (IDAO(_dao))\\n );\\n plugin = implementation().deployUUPSProxy(initData);\\n preparedSetupData.helpers = mockHelpers(THIS_BUILD);\\n preparedSetupData.permissions = mockPermissions(\\n 0,\\n THIS_BUILD,\\n PermissionLib.Operation.Grant\\n );\\n }\\n\\n /// @inheritdoc IPluginSetup\\n function prepareUpdate(\\n address _dao,\\n uint16 _fromBuild,\\n SetupPayload calldata _payload\\n )\\n external\\n pure\\n override\\n returns (bytes memory initData, PreparedSetupData memory preparedSetupData)\\n {\\n (_dao, _payload);\\n\\n // Update from Build 1\\n if (_fromBuild == 1) {\\n preparedSetupData.helpers = mockHelpers(THIS_BUILD);\\n initData = abi.encodeCall(PluginUUPSUpgradeableMockBuild3.initializeFrom, (_fromBuild));\\n preparedSetupData.permissions = mockPermissions(\\n _fromBuild,\\n THIS_BUILD,\\n PermissionLib.Operation.Grant\\n );\\n\\n // If this update path should not be supported, you can revert with an error, e.g.,\\n // revert InvalidUpdatePath({fromBuild: _fromBuild, thisBuild: THIS_BUILD});\\n }\\n\\n // Update from Build 2\\n if (_fromBuild == 2) {\\n preparedSetupData.helpers = mockHelpers(THIS_BUILD);\\n initData = abi.encodeCall(PluginUUPSUpgradeableMockBuild3.initializeFrom, (_fromBuild));\\n preparedSetupData.permissions = mockPermissions(\\n _fromBuild,\\n THIS_BUILD,\\n PermissionLib.Operation.Grant\\n );\\n }\\n }\\n\\n /// @inheritdoc IPluginSetup\\n function prepareUninstallation(\\n address _dao,\\n SetupPayload calldata _payload\\n ) external pure returns (PermissionLib.MultiTargetPermission[] memory permissions) {\\n (_dao, _payload);\\n permissions = mockPermissions(0, THIS_BUILD, PermissionLib.Operation.Revoke);\\n }\\n}\\n\",\"keccak256\":\"0x6be5a7611fe85f0e6e1ea08f42bcce810bc4973da1eaa04c88445b8d9af130ba\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/PermissionLib.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title PermissionLib\\n/// @author Aragon X - 2021-2023\\n/// @notice A library containing objects for permission processing.\\n/// @custom:security-contact sirt@aragon.org\\nlibrary PermissionLib {\\n /// @notice A constant expressing that no condition is applied to a permission.\\n address public constant NO_CONDITION = address(0);\\n\\n /// @notice The types of permission operations available in the `PermissionManager`.\\n /// @param Grant The grant operation setting a permission without a condition.\\n /// @param Revoke The revoke operation removing a permission (that was granted with or without a condition).\\n /// @param GrantWithCondition The grant operation setting a permission with a condition.\\n enum Operation {\\n Grant,\\n Revoke,\\n GrantWithCondition\\n }\\n\\n /// @notice A struct containing the information for a permission to be applied on a single target contract without a condition.\\n /// @param operation The permission operation type.\\n /// @param who The address (EOA or contract) receiving the permission.\\n /// @param permissionId The permission identifier.\\n struct SingleTargetPermission {\\n Operation operation;\\n address who;\\n bytes32 permissionId;\\n }\\n\\n /// @notice A struct containing the information for a permission to be applied on multiple target contracts, optionally, with a condition.\\n /// @param operation The permission operation type.\\n /// @param where The address of the target contract for which `who` receives permission.\\n /// @param who The address (EOA or contract) receiving the permission.\\n /// @param condition The `PermissionCondition` that will be asked for authorization on calls connected to the specified permission identifier.\\n /// @param permissionId The permission identifier.\\n struct MultiTargetPermission {\\n Operation operation;\\n address where;\\n address who;\\n address condition;\\n bytes32 permissionId;\\n }\\n}\\n\",\"keccak256\":\"0x470faf3c4891ebc6420ef6cc09f6098917568ccc79268c90954d1478199b6097\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/DaoAuthorizableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ContextUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\\\";\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\nimport {_auth} from \\\"./auth.sol\\\";\\n\\n/// @title DaoAuthorizableUpgradeable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract contract providing a meta-transaction compatible modifier for upgradeable or cloneable contracts to authorize function calls through an associated DAO.\\n/// @dev Make sure to call `__DaoAuthorizableUpgradeable_init` during initialization of the inheriting contract.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract DaoAuthorizableUpgradeable is ContextUpgradeable {\\n /// @notice The associated DAO managing the permissions of inheriting contracts.\\n IDAO private dao_;\\n\\n /// @notice Initializes the contract by setting the associated DAO.\\n /// @param _dao The associated DAO address.\\n // solhint-disable-next-line func-name-mixedcase\\n function __DaoAuthorizableUpgradeable_init(IDAO _dao) internal onlyInitializing {\\n dao_ = _dao;\\n }\\n\\n /// @notice Returns the DAO contract.\\n /// @return The DAO contract.\\n function dao() public view returns (IDAO) {\\n return dao_;\\n }\\n\\n /// @notice A modifier to make functions on inheriting contracts authorized. Permissions to call the function are checked through the associated DAO's permission manager.\\n /// @param _permissionId The permission identifier required to call the method this modifier is applied to.\\n modifier auth(bytes32 _permissionId) {\\n _auth(dao_, address(this), _msgSender(), _permissionId, _msgData());\\n _;\\n }\\n\\n /// @notice This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain (see [OpenZeppelin's guide about storage gaps](https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps)).\\n uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0x7fac6b01b037ba1cb9d6a22d3f43b0785037dcf496ffb672434d9bf7227d2585\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/auth.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice Thrown if a call is unauthorized in the associated DAO.\\n/// @param dao The associated DAO.\\n/// @param where The context in which the authorization reverted.\\n/// @param who The address (EOA or contract) missing the permission.\\n/// @param permissionId The permission identifier.\\nerror DaoUnauthorized(address dao, address where, address who, bytes32 permissionId);\\n\\n/// @notice A free function checking if a caller is granted permissions on a target contract via a permission identifier that redirects the approval to a `PermissionCondition` if this was specified in the setup.\\n/// @param _where The address of the target contract for which `who` receives permission.\\n/// @param _who The address (EOA or contract) owning the permission.\\n/// @param _permissionId The permission identifier.\\n/// @param _data The optional data passed to the `PermissionCondition` registered.\\n/// @custom:security-contact sirt@aragon.org\\nfunction _auth(\\n IDAO _dao,\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes calldata _data\\n) view {\\n if (!_dao.hasPermission(_where, _who, _permissionId, _data))\\n revert DaoUnauthorized({\\n dao: address(_dao),\\n where: _where,\\n who: _who,\\n permissionId: _permissionId\\n });\\n}\\n\",\"keccak256\":\"0x878764b4f87fe0651fb3798fb9cb87c952f8c6caf6ae79c7f09de84df6c00298\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/IPlugin.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IPlugin\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the traits of a plugin.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IPlugin {\\n enum PluginType {\\n UUPS,\\n Cloneable,\\n Constructable\\n }\\n\\n /// @notice Returns the plugin's type\\n function pluginType() external view returns (PluginType);\\n}\\n\",\"keccak256\":\"0xc57cd0d10b6380ab7f54c713a509e88fd8f4ad9288313a0e8e12b8887817ddfe\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/PluginUUPSUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {UUPSUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\\\";\\nimport {IERC1822ProxiableUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport {ERC165Upgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\\\";\\n\\nimport {IProtocolVersion} from \\\"../utils/versioning/IProtocolVersion.sol\\\";\\nimport {ProtocolVersion} from \\\"../utils/versioning/ProtocolVersion.sol\\\";\\nimport {DaoAuthorizableUpgradeable} from \\\"../permission/auth/DaoAuthorizableUpgradeable.sol\\\";\\nimport {IDAO} from \\\"../dao/IDAO.sol\\\";\\nimport {IPlugin} from \\\"./IPlugin.sol\\\";\\n\\n/// @title PluginUUPSUpgradeable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract, upgradeable contract to inherit from when creating a plugin being deployed via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract PluginUUPSUpgradeable is\\n IPlugin,\\n ERC165Upgradeable,\\n UUPSUpgradeable,\\n DaoAuthorizableUpgradeable,\\n ProtocolVersion\\n{\\n // NOTE: When adding new state variables to the contract, the size of `_gap` has to be adapted below as well.\\n\\n /// @notice Disables the initializers on the implementation contract to prevent it from being left uninitialized.\\n /// @custom:oz-upgrades-unsafe-allow constructor\\n constructor() {\\n _disableInitializers();\\n }\\n\\n /// @inheritdoc IPlugin\\n function pluginType() public pure override returns (PluginType) {\\n return PluginType.UUPS;\\n }\\n\\n /// @notice The ID of the permission required to call the `_authorizeUpgrade` function.\\n bytes32 public constant UPGRADE_PLUGIN_PERMISSION_ID = keccak256(\\\"UPGRADE_PLUGIN_PERMISSION\\\");\\n\\n /// @notice Initializes the plugin by storing the associated DAO.\\n /// @param _dao The DAO contract.\\n // solhint-disable-next-line func-name-mixedcase\\n function __PluginUUPSUpgradeable_init(IDAO _dao) internal virtual onlyInitializing {\\n __DaoAuthorizableUpgradeable_init(_dao);\\n }\\n\\n /// @notice Checks if an interface is supported by this or its parent contract.\\n /// @param _interfaceId The ID of the interface.\\n /// @return Returns `true` if the interface is supported.\\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\\n return\\n _interfaceId == type(IPlugin).interfaceId ||\\n _interfaceId == type(IProtocolVersion).interfaceId ||\\n _interfaceId == type(IERC1822ProxiableUpgradeable).interfaceId ||\\n super.supportsInterface(_interfaceId);\\n }\\n\\n /// @notice Returns the address of the implementation contract in the [proxy storage slot](https://eips.ethereum.org/EIPS/eip-1967) slot the [UUPS proxy](https://eips.ethereum.org/EIPS/eip-1822) is pointing to.\\n /// @return The address of the implementation contract.\\n function implementation() public view returns (address) {\\n return _getImplementation();\\n }\\n\\n /// @notice Internal method authorizing the upgrade of the contract via the [upgradeability mechanism for UUPS proxies](https://docs.openzeppelin.com/contracts/4.x/api/proxy#UUPSUpgradeable) (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\\n /// @dev The caller must have the `UPGRADE_PLUGIN_PERMISSION_ID` permission.\\n function _authorizeUpgrade(\\n address\\n )\\n internal\\n virtual\\n override\\n auth(UPGRADE_PLUGIN_PERMISSION_ID)\\n // solhint-disable-next-line no-empty-blocks\\n {\\n\\n }\\n\\n /// @notice This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain (see [OpenZeppelin's guide about storage gaps](https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps)).\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x127e7c4f839cb8c8486070990b78e22313f1ff089ffe6a4ff23ae358e48f0037\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/setup/IPluginSetup.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {PermissionLib} from \\\"../../permission/PermissionLib.sol\\\";\\n\\n// solhint-disable-next-line no-unused-import\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @title IPluginSetup\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for a plugin setup contract to be consumed by the `PluginSetupProcessor` for plugin installations, updates, and uninstallations.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IPluginSetup {\\n /// @notice The data associated with a prepared setup.\\n /// @param helpers The address array of helpers (contracts or EOAs) associated with this plugin version after the installation or update.\\n /// @param permissions The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the installing or updating DAO.\\n struct PreparedSetupData {\\n address[] helpers;\\n PermissionLib.MultiTargetPermission[] permissions;\\n }\\n\\n /// @notice The payload for plugin updates and uninstallations containing the existing contracts as well as optional data to be consumed by the plugin setup.\\n /// @param plugin The address of the `Plugin`.\\n /// @param currentHelpers The address array of all current helpers (contracts or EOAs) associated with the plugin to update from.\\n /// @param data The bytes-encoded data containing the input parameters for the preparation of update/uninstall as specified in the corresponding ABI on the version's metadata.\\n struct SetupPayload {\\n address plugin;\\n address[] currentHelpers;\\n bytes data;\\n }\\n\\n /// @notice Prepares the installation of a plugin.\\n /// @param _dao The address of the installing DAO.\\n /// @param _data The bytes-encoded data containing the input parameters for the installation as specified in the plugin's build metadata JSON file.\\n /// @return plugin The address of the `Plugin` contract being prepared for installation.\\n /// @return preparedSetupData The deployed plugin's relevant data which consists of helpers and permissions.\\n function prepareInstallation(\\n address _dao,\\n bytes calldata _data\\n ) external returns (address plugin, PreparedSetupData memory preparedSetupData);\\n\\n /// @notice Prepares the update of a plugin.\\n /// @param _dao The address of the updating DAO.\\n /// @param _fromBuild The build number of the plugin to update from.\\n /// @param _payload The relevant data necessary for the `prepareUpdate`. See above.\\n /// @return initData The initialization data to be passed to upgradeable contracts when the update is applied in the `PluginSetupProcessor`.\\n /// @return preparedSetupData The deployed plugin's relevant data which consists of helpers and permissions.\\n function prepareUpdate(\\n address _dao,\\n uint16 _fromBuild,\\n SetupPayload calldata _payload\\n ) external returns (bytes memory initData, PreparedSetupData memory preparedSetupData);\\n\\n /// @notice Prepares the uninstallation of a plugin.\\n /// @param _dao The address of the uninstalling DAO.\\n /// @param _payload The relevant data necessary for the `prepareUninstallation`. See above.\\n /// @return permissions The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the uninstalling DAO.\\n function prepareUninstallation(\\n address _dao,\\n SetupPayload calldata _payload\\n ) external returns (PermissionLib.MultiTargetPermission[] memory permissions);\\n\\n /// @notice Returns the plugin implementation address.\\n /// @return The address of the plugin implementation contract.\\n /// @dev The implementation can be instantiated via the `new` keyword, cloned via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)), or proxied via the UUPS proxy pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0x21c99995208039ac6ace219b6f273243811dc2aa66399e8e499e43ec30b82fa9\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/setup/PluginUpgradeableSetup.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ERC165} from \\\"@openzeppelin/contracts/utils/introspection/ERC165.sol\\\";\\n\\nimport {IProtocolVersion} from \\\"../../utils/versioning/IProtocolVersion.sol\\\";\\nimport {ProtocolVersion} from \\\"../../utils/versioning/ProtocolVersion.sol\\\";\\nimport {IPluginSetup} from \\\"./IPluginSetup.sol\\\";\\n\\n/// @title PluginUpgradeableSetup\\n/// @author Aragon X - 2022-2024\\n/// @notice An abstract contract to inherit from to implement the plugin setup for upgradeable plugins, i.e, `PluginUUPSUpgradeable` being deployed via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822) and [ERC-1967](https://eips.ethereum.org/EIPS/eip-1967)).\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract PluginUpgradeableSetup is ERC165, IPluginSetup, ProtocolVersion {\\n /// @notice The address of the plugin implementation contract for initial block explorer verification\\n /// and to create [ERC-1967](https://eips.ethereum.org/EIPS/eip-1967) UUPS proxies from.\\n address internal immutable IMPLEMENTATION;\\n\\n /// @notice Thrown when an update path is not available, for example, if this is the initial build.\\n /// @param fromBuild The build number to update from.\\n /// @param thisBuild The build number of this setup to update to.\\n error InvalidUpdatePath(uint16 fromBuild, uint16 thisBuild);\\n\\n /// @notice The contract constructor, that setting the plugin implementation contract.\\n /// @param _implementation The address of the plugin implementation contract.\\n constructor(address _implementation) {\\n IMPLEMENTATION = _implementation;\\n }\\n\\n /// @notice Checks if this or the parent contract supports an interface by its ID.\\n /// @param _interfaceId The ID of the interface.\\n /// @return Returns `true` if the interface is supported.\\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\\n return\\n _interfaceId == type(IPluginSetup).interfaceId ||\\n _interfaceId == type(IProtocolVersion).interfaceId ||\\n super.supportsInterface(_interfaceId);\\n }\\n\\n /// @inheritdoc IPluginSetup\\n function implementation() public view returns (address) {\\n return IMPLEMENTATION;\\n }\\n}\\n\",\"keccak256\":\"0x2842d919d1ecb4fbeb40953128c3da3b36dcf6e91255089e987c2f11ff8d061e\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/deployment/ProxyLib.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ERC1967Proxy} from \\\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol\\\";\\nimport {Clones} from \\\"@openzeppelin/contracts/proxy/Clones.sol\\\";\\nimport {Address} from \\\"@openzeppelin/contracts/utils/Address.sol\\\";\\n\\n/// @title ProxyLib\\n/// @author Aragon X - 2024\\n/// @notice A library containing methods for the deployment of proxies via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)) and minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)).\\n/// @custom:security-contact sirt@aragon.org\\nlibrary ProxyLib {\\n using Address for address;\\n using Clones for address;\\n\\n /// @notice Creates an [ERC-1967](https://eips.ethereum.org/EIPS/eip-1967) UUPS proxy contract pointing to a logic contract and allows to immediately initialize it.\\n /// @param _logic The logic contract the proxy is pointing to.\\n /// @param _initCalldata The initialization data for this contract.\\n /// @return uupsProxy The address of the UUPS proxy contract created.\\n /// @dev If `_initCalldata` is non-empty, it is used in a delegate call to the `_logic` contract. This will typically be an encoded function call initializing the storage of the proxy (see [OpenZeppelin ERC1967Proxy-constructor](https://docs.openzeppelin.com/contracts/4.x/api/proxy#ERC1967Proxy-constructor-address-bytes-)).\\n function deployUUPSProxy(\\n address _logic,\\n bytes memory _initCalldata\\n ) internal returns (address uupsProxy) {\\n uupsProxy = address(new ERC1967Proxy({_logic: _logic, _data: _initCalldata}));\\n }\\n\\n /// @notice Creates an [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167) minimal proxy contract, also known as clones, pointing to a logic contract and allows to immediately initialize it.\\n /// @param _logic The logic contract the proxy is pointing to.\\n /// @param _initCalldata The initialization data for this contract.\\n /// @return minimalProxy The address of the minimal proxy contract created.\\n /// @dev If `_initCalldata` is non-empty, it is used in a call to the clone contract. This will typically be an encoded function call initializing the storage of the contract.\\n function deployMinimalProxy(\\n address _logic,\\n bytes memory _initCalldata\\n ) internal returns (address minimalProxy) {\\n minimalProxy = _logic.clone();\\n if (_initCalldata.length > 0) {\\n minimalProxy.functionCall({data: _initCalldata});\\n }\\n }\\n}\\n\",\"keccak256\":\"0xef0d1790dfa026381c021daa2ec7267357497f58cd4a2fa5c64e72e0dea95acc\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/IProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IProtocolVersion\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the semantic Aragon OSx protocol version number.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IProtocolVersion {\\n /// @notice Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\\n /// @return _version Returns the semantic Aragon OSx protocol version number.\\n /// @dev This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\\n function protocolVersion() external view returns (uint8[3] memory _version);\\n}\\n\",\"keccak256\":\"0x00a4da654d21dc1bdadbdc8bd54bb86c378c56f85e461ccc31303628ea621361\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/ProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IProtocolVersion} from \\\"./IProtocolVersion.sol\\\";\\n\\n/// @title ProtocolVersion\\n/// @author Aragon X - 2023\\n/// @notice An abstract, stateless, non-upgradeable contract providing the current Aragon OSx protocol version number.\\n/// @dev Do not add any new variables to this contract that would shift down storage in the inheritance chain.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract ProtocolVersion is IProtocolVersion {\\n // IMPORTANT: Do not add any storage variable, see the above notice.\\n\\n /// @inheritdoc IProtocolVersion\\n function protocolVersion() public pure returns (uint8[3] memory) {\\n return [1, 4, 0];\\n }\\n}\\n\",\"keccak256\":\"0x3975c937be935f687c6b6b8f379071232681e98cf04b175d72781b819ea52bdb\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"errors":{"InvalidUpdatePath(uint16,uint16)":[{"notice":"Thrown when an update path is not available, for example, if this is the initial build."}]},"kind":"user","methods":{"implementation()":{"notice":"Returns the plugin implementation address."},"prepareInstallation(address,bytes)":{"notice":"Prepares the installation of a plugin."},"prepareUninstallation(address,(address,address[],bytes))":{"notice":"Prepares the uninstallation of a plugin."},"prepareUpdate(address,uint16,(address,address[],bytes))":{"notice":"Prepares the update of a plugin."},"protocolVersion()":{"notice":"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with."},"supportsInterface(bytes4)":{"notice":"Checks if this or the parent contract supports an interface by its ID."}},"notice":"A mock plugin setup of an upgradeable plugin to be deployed via the UUPS pattern. v1.2 (Release 1, Build 2)","version":1}},"PluginUUPSUpgradeableSetupMockBuild3":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"ConflictingValues","type":"error"},{"inputs":[{"internalType":"uint16","name":"fromBuild","type":"uint16"},{"internalType":"uint16","name":"thisBuild","type":"uint16"}],"name":"InvalidUpdatePath","type":"error"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_dao","type":"address"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"prepareInstallation","outputs":[{"internalType":"address","name":"plugin","type":"address"},{"components":[{"internalType":"address[]","name":"helpers","type":"address[]"},{"components":[{"internalType":"enum PermissionLib.Operation","name":"operation","type":"uint8"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"condition","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"internalType":"struct PermissionLib.MultiTargetPermission[]","name":"permissions","type":"tuple[]"}],"internalType":"struct IPluginSetup.PreparedSetupData","name":"preparedSetupData","type":"tuple"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_dao","type":"address"},{"components":[{"internalType":"address","name":"plugin","type":"address"},{"internalType":"address[]","name":"currentHelpers","type":"address[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct IPluginSetup.SetupPayload","name":"_payload","type":"tuple"}],"name":"prepareUninstallation","outputs":[{"components":[{"internalType":"enum PermissionLib.Operation","name":"operation","type":"uint8"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"condition","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"internalType":"struct PermissionLib.MultiTargetPermission[]","name":"permissions","type":"tuple[]"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_dao","type":"address"},{"internalType":"uint16","name":"_fromBuild","type":"uint16"},{"components":[{"internalType":"address","name":"plugin","type":"address"},{"internalType":"address[]","name":"currentHelpers","type":"address[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct IPluginSetup.SetupPayload","name":"_payload","type":"tuple"}],"name":"prepareUpdate","outputs":[{"internalType":"bytes","name":"initData","type":"bytes"},{"components":[{"internalType":"address[]","name":"helpers","type":"address[]"},{"components":[{"internalType":"enum PermissionLib.Operation","name":"operation","type":"uint8"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"condition","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"internalType":"struct PermissionLib.MultiTargetPermission[]","name":"permissions","type":"tuple[]"}],"internalType":"struct IPluginSetup.PreparedSetupData","name":"preparedSetupData","type":"tuple"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"protocolVersion","outputs":[{"internalType":"uint8[3]","name":"","type":"uint8[3]"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"errors":{"InvalidUpdatePath(uint16,uint16)":[{"params":{"fromBuild":"The build number to update from.","thisBuild":"The build number of this setup to update to."}}]},"kind":"dev","methods":{"implementation()":{"details":"The implementation can be instantiated via the `new` keyword, cloned via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)), or proxied via the UUPS proxy pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).","returns":{"_0":"The address of the plugin implementation contract."}},"prepareInstallation(address,bytes)":{"params":{"_dao":"The address of the installing DAO.","_data":"The bytes-encoded data containing the input parameters for the installation as specified in the plugin's build metadata JSON file."},"returns":{"plugin":"The address of the `Plugin` contract being prepared for installation.","preparedSetupData":"The deployed plugin's relevant data which consists of helpers and permissions."}},"prepareUninstallation(address,(address,address[],bytes))":{"params":{"_dao":"The address of the uninstalling DAO.","_payload":"The relevant data necessary for the `prepareUninstallation`. See above."},"returns":{"permissions":"The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the uninstalling DAO."}},"prepareUpdate(address,uint16,(address,address[],bytes))":{"params":{"_dao":"The address of the updating DAO.","_fromBuild":"The build number of the plugin to update from.","_payload":"The relevant data necessary for the `prepareUpdate`. See above."},"returns":{"initData":"The initialization data to be passed to upgradeable contracts when the update is applied in the `PluginSetupProcessor`.","preparedSetupData":"The deployed plugin's relevant data which consists of helpers and permissions."}},"protocolVersion()":{"details":"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.","returns":{"_0":"Returns the semantic Aragon OSx protocol version number."}},"supportsInterface(bytes4)":{"params":{"_interfaceId":"The ID of the interface."},"returns":{"_0":"Returns `true` if the interface is supported."}}},"version":1},"evm":{"bytecode":{"functionDebugData":{"@_12256":{"entryPoint":null,"id":12256,"parameterSlots":0,"returnSlots":0},"@_14409":{"entryPoint":null,"id":14409,"parameterSlots":1,"returnSlots":0}},"generatedSources":[],"linkReferences":{},"object":"60a060405234801561001057600080fd5b5060405161001d9061004b565b604051809103906000f080158015610039573d6000803e3d6000fd5b506001600160a01b0316608052610058565b6113788061130b83390190565b6080516112926100796000396000818160d2015261037e01526112926000f3fe60806040523480156200001157600080fd5b50600436106200007b5760003560e01c80639cb0a12411620000565780639cb0a12414620000fd578063a8a9c29e1462000123578063f10832f1146200014a57600080fd5b806301ffc9a714620000805780632ae9c60014620000ac5780635c60da1b14620000c5575b600080fd5b6200009762000091366004620006a3565b62000171565b60405190151581526020015b60405180910390f35b620000b6620001c4565b604051620000a39190620006cf565b6040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152602001620000a3565b620001146200010e36600462000735565b620001f0565b604051620000a3919062000806565b6200013a6200013436600462000853565b62000209565b604051620000a3929190620009a2565b620001616200015b366004620009ea565b6200030f565b604051620000a392919062000ab8565b60006001600160e01b0319821663099718b560e41b1480620001a257506001600160e01b03198216621574e360e91b145b80620001be57506301ffc9a760e01b6001600160e01b03198316145b92915050565b620001ce62000677565b5060408051606081018252600181526004602082015260009181019190915290565b606062000202600060036001620003de565b9392505050565b606062000229604051806040016040528060608152602001606081525090565b8361ffff16600103620002985762000242600362000577565b815260405161ffff8516602482015260440160408051601f198184030181529190526020810180516001600160e01b03166239a8c560e41b17905291506200029261ffff851660036000620003de565b60208201525b8361ffff166002036200030757620002b1600362000577565b815260405161ffff8516602482015260440160408051601f198184030181529190526020810180516001600160e01b03166239a8c560e41b17905291506200030161ffff851660036000620003de565b60208201525b935093915050565b60006200032f604051806040016040528060608152602001606081525090565b6040516001600160a01b038516602482015260009060440160408051601f198184030181529190526020810180516001600160e01b031663189acdbd60e31b1790529050620003b081620003a07f000000000000000000000000000000000000000000000000000000000000000090565b6001600160a01b0316906200063b565b9250620003be600362000577565b8252620003cf6000600381620003de565b60208301525090939092509050565b6060826001600160a01b0316846001600160a01b031611156200041457604051633a4013cd60e21b815260040160405180910390fd5b62000420848462000afa565b6001600160a01b031667ffffffffffffffff811115620004445762000444620009d4565b6040519080825280602002602001820160405280156200049f57816020015b6040805160a081018252600080825260208083018290529282018190526060820181905260808201528252600019909201910181620004635790505b509050835b836001600160a01b0316816001600160a01b031610156200056f576040518060a00160405280846002811115620004df57620004df62000789565b81526001600160a01b038316602082018190526040820152600060608201527fa280eec51ab8e1bc4b6b0c1b7f1bde785761b787a49db404e3e9338ed9b016ef6080909101528262000532878462000afa565b6001600160a01b0316815181106200054e576200054e62000b24565b60200260200101819052508080620005669062000b3a565b915050620004a4565b509392505050565b6060816001600160a01b031667ffffffffffffffff8111156200059e576200059e620009d4565b604051908082528060200260200182016040528015620005c8578160200160208202803683370190505b50905060005b826001600160a01b0316816001600160a01b0316101562000635578082826001600160a01b03168151811062000608576200060862000b24565b6001600160a01b0390921660209283029190910190910152806200062c8162000b3a565b915050620005ce565b50919050565b600082826040516200064d9062000695565b6200065a92919062000b63565b604051809103906000f0801580156200056f573d6000803e3d6000fd5b60405180606001604052806003906020820280368337509192915050565b6106fe8062000b8883390190565b600060208284031215620006b657600080fd5b81356001600160e01b0319811681146200020257600080fd5b60608101818360005b6003811015620006fc57815160ff16835260209283019290910190600101620006d8565b50505092915050565b80356001600160a01b03811681146200071d57600080fd5b919050565b6000606082840312156200063557600080fd5b600080604083850312156200074957600080fd5b620007548362000705565b9150602083013567ffffffffffffffff8111156200077157600080fd5b6200077f8582860162000722565b9150509250929050565b634e487b7160e01b600052602160045260246000fd5b6000815160038110620007c257634e487b7160e01b600052602160045260246000fd5b8352506020818101516001600160a01b0390811691840191909152604080830151821690840152606080830151909116908301526080908101519082015260a00190565b6020808252825182820181905260009190848201906040850190845b818110156200084757620008388385516200079f565b93850193925060010162000822565b50909695505050505050565b6000806000606084860312156200086957600080fd5b620008748462000705565b9250602084013561ffff811681146200088c57600080fd5b9150604084013567ffffffffffffffff811115620008a957600080fd5b620008b78682870162000722565b9150509250925092565b6000815180845260005b81811015620008e957602081850181015186830182015201620008cb565b506000602082860101526020601f19601f83011685010191505092915050565b805160408084528151908401819052600091602091908201906060860190845b81811015620009505783516001600160a01b03168352928401929184019160010162000929565b50508483015186820387850152805180835290840192506000918401905b808310156200099757620009848285516200079f565b915084840193506001830192506200096e565b509695505050505050565b604081526000620009b76040830185620008c1565b8281036020840152620009cb818562000909565b95945050505050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215620009fe57600080fd5b62000a098362000705565b9150602083013567ffffffffffffffff8082111562000a2757600080fd5b818501915085601f83011262000a3c57600080fd5b81358181111562000a515762000a51620009d4565b604051601f8201601f19908116603f0116810190838211818310171562000a7c5762000a7c620009d4565b8160405282815288602084870101111562000a9657600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6001600160a01b038316815260406020820152600062000adc604083018462000909565b949350505050565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0382811682821603908082111562000b1d5762000b1d62000ae4565b5092915050565b634e487b7160e01b600052603260045260246000fd5b60006001600160a01b0380831681810362000b595762000b5962000ae4565b6001019392505050565b6001600160a01b038316815260406020820152600062000adc6040830184620008c156fe60806040526040516106fe3803806106fe83398101604081905261002291610319565b61002e82826000610035565b5050610436565b61003e8361006b565b60008251118061004b5750805b156100665761006483836100ab60201b6100291760201c565b505b505050565b610074816100d7565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606100d083836040518060600160405280602781526020016106d7602791396101a9565b9392505050565b6100ea8161022260201b6100551760201c565b6101515760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b806101887f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61023160201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6060600080856001600160a01b0316856040516101c691906103e7565b600060405180830381855af49150503d8060008114610201576040519150601f19603f3d011682016040523d82523d6000602084013e610206565b606091505b50909250905061021886838387610234565b9695505050505050565b6001600160a01b03163b151590565b90565b606083156102a357825160000361029c576001600160a01b0385163b61029c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610148565b50816102ad565b6102ad83836102b5565b949350505050565b8151156102c55781518083602001fd5b8060405162461bcd60e51b81526004016101489190610403565b634e487b7160e01b600052604160045260246000fd5b60005b838110156103105781810151838201526020016102f8565b50506000910152565b6000806040838503121561032c57600080fd5b82516001600160a01b038116811461034357600080fd5b60208401519092506001600160401b038082111561036057600080fd5b818501915085601f83011261037457600080fd5b815181811115610386576103866102df565b604051601f8201601f19908116603f011681019083821181831017156103ae576103ae6102df565b816040528281528860208487010111156103c757600080fd5b6103d88360208301602088016102f5565b80955050505050509250929050565b600082516103f98184602087016102f5565b9190910192915050565b60208152600082518060208401526104228160408501602087016102f5565b601f01601f19169190910160400192915050565b610292806104456000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b61009f565b565b606061004e838360405180606001604052806027815260200161025f602791396100c3565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e8080156100be573d6000f35b3d6000fd5b6060600080856001600160a01b0316856040516100e0919061020f565b600060405180830381855af49150503d806000811461011b576040519150601f19603f3d011682016040523d82523d6000602084013e610120565b606091505b50915091506101318683838761013b565b9695505050505050565b606083156101af5782516000036101a8576001600160a01b0385163b6101a85760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b50816101b9565b6101b983836101c1565b949350505050565b8151156101d15781518083602001fd5b8060405162461bcd60e51b815260040161019f919061022b565b60005b838110156102065781810151838201526020016101ee565b50506000910152565b600082516102218184602087016101eb565b9190910192915050565b602081526000825180602084015261024a8160408501602087016101eb565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a60a06040523060805234801561001457600080fd5b5061001d610022565b6100e1565b600054610100900460ff161561008e5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116146100df576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b60805161126061011860003960008181610459015281816104de015281816105d401528181610659015261074301526112606000f3fe6080604052600436106100dd5760003560e01c80634f1ef2861161007f5780636accab8c116100595780636accab8c1461022b578063c4d66de814610242578063c9c4bfca14610262578063efe51cca1461029657600080fd5b80634f1ef286146101ee57806352d1902d146102015780635c60da1b1461021657600080fd5b80632ae9c600116100bb5780632ae9c6001461015e5780633659cfe6146101805780634162169f146101a057806341de6830146101d257600080fd5b806301ffc9a7146100e2578063039a8c50146101175780632491118d14610139575b600080fd5b3480156100ee57600080fd5b506101026100fd366004610f74565b6102ad565b60405190151581526020015b60405180910390f35b34801561012357600080fd5b50610137610132366004610f9e565b610319565b005b34801561014557600080fd5b5061015061012f5481565b60405190815260200161010e565b34801561016a57600080fd5b50610173610425565b60405161010e9190610fc2565b34801561018c57600080fd5b5061013761019b36600461100b565b61044f565b3480156101ac57600080fd5b5060c9546001600160a01b03165b6040516001600160a01b03909116815260200161010e565b3480156101de57600080fd5b50600060405161010e9190611028565b6101376101fc366004611066565b6105ca565b34801561020d57600080fd5b50610150610736565b34801561022257600080fd5b506101ba6107fb565b34801561023757600080fd5b5061015061012d5481565b34801561024e57600080fd5b5061013761025d36600461100b565b610833565b34801561026e57600080fd5b506101507f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f581565b3480156102a257600080fd5b5061015061012e5481565b60006001600160e01b0319821663041de68360e41b14806102dd57506001600160e01b03198216621574e360e91b145b806102f857506001600160e01b031982166352d1902d60e01b145b8061031357506301ffc9a760e01b6001600160e01b03198316145b92915050565b600054600390610100900460ff1615801561033b575060005460ff8083169116105b6103a35760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805461ffff191660ff831617610100179055600261ffff831610156103cb57600261012e555b60038261ffff1610156103df57600361012f555b6000805461ff001916905560405160ff821681527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b61042d610f56565b5060408051606081018252600181526004602082015260009181019190915290565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036104dc5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b606482015260840161039a565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166105377f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b0316146105a25760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b606482015260840161039a565b6105ab81610925565b604080516000808252602082019092526105c791839190610962565b50565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036106575760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b606482015260840161039a565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166106b27f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b03161461071d5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b606482015260840161039a565b61072682610925565b61073282826001610962565b5050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146107d65760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000606482015260840161039a565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b600061082e7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b600054600390610100900460ff16158015610855575060005460ff8083169116105b6108b85760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161039a565b6000805461ffff191660ff8316176101001790556108d582610b07565b600161012d55600261012e55600361012f556000805461ff001916905560405160ff821681527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602001610419565b60c9547f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f590610732906001600160a01b0316303384600036610b7b565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561099a5761099583610c37565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156109f4575060408051601f3d908101601f191682019092526109f19181019061112a565b60015b610a665760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201527f6f6e206973206e6f742055555053000000000000000000000000000000000000606482015260840161039a565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114610afb5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f7860448201527f6961626c65555549440000000000000000000000000000000000000000000000606482015260840161039a565b50610995838383610d02565b600054610100900460ff16610b725760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840161039a565b6105c781610d2d565b604051637ef7c88360e11b81526001600160a01b0387169063fdef910690610baf9088908890889088908890600401611143565b602060405180830381865afa158015610bcc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bf09190611197565b610c2f57604051630cb6f8ed60e21b81526001600160a01b0380881660048301528087166024830152851660448201526064810184905260840161039a565b505050505050565b6001600160a01b0381163b610cb45760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e747261637400000000000000000000000000000000000000606482015260840161039a565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610d0b83610dc7565b600082511180610d185750805b1561099557610d278383610e07565b50505050565b600054610100900460ff16610d985760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840161039a565b60c9805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610dd081610c37565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060610e2c838360405180606001604052806027815260200161122d60279139610e33565b9392505050565b6060600080856001600160a01b031685604051610e5091906111dd565b600060405180830381855af49150503d8060008114610e8b576040519150601f19603f3d011682016040523d82523d6000602084013e610e90565b606091505b5091509150610ea186838387610eab565b9695505050505050565b60608315610f1a578251600003610f13576001600160a01b0385163b610f135760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161039a565b5081610f24565b610f248383610f2c565b949350505050565b815115610f3c5781518083602001fd5b8060405162461bcd60e51b815260040161039a91906111f9565b60405180606001604052806003906020820280368337509192915050565b600060208284031215610f8657600080fd5b81356001600160e01b031981168114610e2c57600080fd5b600060208284031215610fb057600080fd5b813561ffff81168114610e2c57600080fd5b60608101818360005b6003811015610fed57815160ff16835260209283019290910190600101610fcb565b50505092915050565b6001600160a01b03811681146105c757600080fd5b60006020828403121561101d57600080fd5b8135610e2c81610ff6565b602081016003831061104a57634e487b7160e01b600052602160045260246000fd5b91905290565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561107957600080fd5b823561108481610ff6565b9150602083013567ffffffffffffffff808211156110a157600080fd5b818501915085601f8301126110b557600080fd5b8135818111156110c7576110c7611050565b604051601f8201601f19908116603f011681019083821181831017156110ef576110ef611050565b8160405282815288602084870101111561110857600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60006020828403121561113c57600080fd5b5051919050565b60006001600160a01b03808816835280871660208401525084604083015260806060830152826080830152828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b6000602082840312156111a957600080fd5b81518015158114610e2c57600080fd5b60005b838110156111d45781810151838201526020016111bc565b50506000910152565b600082516111ef8184602087016111b9565b9190910192915050565b60208152600082518060208401526112188160408501602087016111b9565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a","opcodes":"PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x1D SWAP1 PUSH2 0x4B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH2 0x39 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x80 MSTORE PUSH2 0x58 JUMP JUMPDEST PUSH2 0x1378 DUP1 PUSH2 0x130B DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH2 0x1292 PUSH2 0x79 PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH1 0xD2 ADD MSTORE PUSH2 0x37E ADD MSTORE PUSH2 0x1292 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH3 0x7B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9CB0A124 GT PUSH3 0x56 JUMPI DUP1 PUSH4 0x9CB0A124 EQ PUSH3 0xFD JUMPI DUP1 PUSH4 0xA8A9C29E EQ PUSH3 0x123 JUMPI DUP1 PUSH4 0xF10832F1 EQ PUSH3 0x14A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH3 0x80 JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH3 0xAC JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH3 0xC5 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x97 PUSH3 0x91 CALLDATASIZE PUSH1 0x4 PUSH3 0x6A3 JUMP JUMPDEST PUSH3 0x171 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0xB6 PUSH3 0x1C4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0xA3 SWAP2 SWAP1 PUSH3 0x6CF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH3 0xA3 JUMP JUMPDEST PUSH3 0x114 PUSH3 0x10E CALLDATASIZE PUSH1 0x4 PUSH3 0x735 JUMP JUMPDEST PUSH3 0x1F0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0xA3 SWAP2 SWAP1 PUSH3 0x806 JUMP JUMPDEST PUSH3 0x13A PUSH3 0x134 CALLDATASIZE PUSH1 0x4 PUSH3 0x853 JUMP JUMPDEST PUSH3 0x209 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0xA3 SWAP3 SWAP2 SWAP1 PUSH3 0x9A2 JUMP JUMPDEST PUSH3 0x161 PUSH3 0x15B CALLDATASIZE PUSH1 0x4 PUSH3 0x9EA JUMP JUMPDEST PUSH3 0x30F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0xA3 SWAP3 SWAP2 SWAP1 PUSH3 0xAB8 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x99718B5 PUSH1 0xE4 SHL EQ DUP1 PUSH3 0x1A2 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH3 0x1BE JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH3 0x1CE PUSH3 0x677 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH3 0x202 PUSH1 0x0 PUSH1 0x3 PUSH1 0x1 PUSH3 0x3DE JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH3 0x229 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST DUP4 PUSH2 0xFFFF AND PUSH1 0x1 SUB PUSH3 0x298 JUMPI PUSH3 0x242 PUSH1 0x3 PUSH3 0x577 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x40 MLOAD PUSH2 0xFFFF DUP6 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH3 0x39A8C5 PUSH1 0xE4 SHL OR SWAP1 MSTORE SWAP2 POP PUSH3 0x292 PUSH2 0xFFFF DUP6 AND PUSH1 0x3 PUSH1 0x0 PUSH3 0x3DE JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE JUMPDEST DUP4 PUSH2 0xFFFF AND PUSH1 0x2 SUB PUSH3 0x307 JUMPI PUSH3 0x2B1 PUSH1 0x3 PUSH3 0x577 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x40 MLOAD PUSH2 0xFFFF DUP6 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH3 0x39A8C5 PUSH1 0xE4 SHL OR SWAP1 MSTORE SWAP2 POP PUSH3 0x301 PUSH2 0xFFFF DUP6 AND PUSH1 0x3 PUSH1 0x0 PUSH3 0x3DE JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE JUMPDEST SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x32F PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 PUSH1 0x44 ADD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x189ACDBD PUSH1 0xE3 SHL OR SWAP1 MSTORE SWAP1 POP PUSH3 0x3B0 DUP2 PUSH3 0x3A0 PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH3 0x63B JUMP JUMPDEST SWAP3 POP PUSH3 0x3BE PUSH1 0x3 PUSH3 0x577 JUMP JUMPDEST DUP3 MSTORE PUSH3 0x3CF PUSH1 0x0 PUSH1 0x3 DUP2 PUSH3 0x3DE JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP SWAP1 SWAP4 SWAP1 SWAP3 POP SWAP1 POP JUMP JUMPDEST PUSH1 0x60 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH3 0x414 JUMPI PUSH1 0x40 MLOAD PUSH4 0x3A4013CD PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0x420 DUP5 DUP5 PUSH3 0xAFA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x444 JUMPI PUSH3 0x444 PUSH3 0x9D4 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH3 0x49F JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD DUP3 SWAP1 MSTORE SWAP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 DUP3 ADD MSTORE DUP3 MSTORE PUSH1 0x0 NOT SWAP1 SWAP3 ADD SWAP2 ADD DUP2 PUSH3 0x463 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP DUP4 JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT ISZERO PUSH3 0x56F JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 DUP5 PUSH1 0x2 DUP2 GT ISZERO PUSH3 0x4DF JUMPI PUSH3 0x4DF PUSH3 0x789 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x60 DUP3 ADD MSTORE PUSH32 0xA280EEC51AB8E1BC4B6B0C1B7F1BDE785761B787A49DB404E3E9338ED9B016EF PUSH1 0x80 SWAP1 SWAP2 ADD MSTORE DUP3 PUSH3 0x532 DUP8 DUP5 PUSH3 0xAFA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MLOAD DUP2 LT PUSH3 0x54E JUMPI PUSH3 0x54E PUSH3 0xB24 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP DUP1 DUP1 PUSH3 0x566 SWAP1 PUSH3 0xB3A JUMP JUMPDEST SWAP2 POP POP PUSH3 0x4A4 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x59E JUMPI PUSH3 0x59E PUSH3 0x9D4 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH3 0x5C8 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT ISZERO PUSH3 0x635 JUMPI DUP1 DUP3 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MLOAD DUP2 LT PUSH3 0x608 JUMPI PUSH3 0x608 PUSH3 0xB24 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE DUP1 PUSH3 0x62C DUP2 PUSH3 0xB3A JUMP JUMPDEST SWAP2 POP POP PUSH3 0x5CE JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH3 0x64D SWAP1 PUSH3 0x695 JUMP JUMPDEST PUSH3 0x65A SWAP3 SWAP2 SWAP1 PUSH3 0xB63 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH3 0x56F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x6FE DUP1 PUSH3 0xB88 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x6B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH3 0x202 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH3 0x6FC JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH3 0x6D8 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x71D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x635 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x749 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x754 DUP4 PUSH3 0x705 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x771 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x77F DUP6 DUP3 DUP7 ADD PUSH3 0x722 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP2 MLOAD PUSH1 0x3 DUP2 LT PUSH3 0x7C2 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP4 MSTORE POP PUSH1 0x20 DUP2 DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP1 DUP4 ADD MLOAD DUP3 AND SWAP1 DUP5 ADD MSTORE PUSH1 0x60 DUP1 DUP4 ADD MLOAD SWAP1 SWAP2 AND SWAP1 DUP4 ADD MSTORE PUSH1 0x80 SWAP1 DUP2 ADD MLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x847 JUMPI PUSH3 0x838 DUP4 DUP6 MLOAD PUSH3 0x79F JUMP JUMPDEST SWAP4 DUP6 ADD SWAP4 SWAP3 POP PUSH1 0x1 ADD PUSH3 0x822 JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH3 0x869 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x874 DUP5 PUSH3 0x705 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH3 0x88C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x8A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x8B7 DUP7 DUP3 DUP8 ADD PUSH3 0x722 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x8E9 JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD DUP3 ADD MSTORE ADD PUSH3 0x8CB JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x20 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x20 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x40 DUP1 DUP5 MSTORE DUP2 MLOAD SWAP1 DUP5 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x20 SWAP2 SWAP1 DUP3 ADD SWAP1 PUSH1 0x60 DUP7 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x950 JUMPI DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH3 0x929 JUMP JUMPDEST POP POP DUP5 DUP4 ADD MLOAD DUP7 DUP3 SUB DUP8 DUP6 ADD MSTORE DUP1 MLOAD DUP1 DUP4 MSTORE SWAP1 DUP5 ADD SWAP3 POP PUSH1 0x0 SWAP2 DUP5 ADD SWAP1 JUMPDEST DUP1 DUP4 LT ISZERO PUSH3 0x997 JUMPI PUSH3 0x984 DUP3 DUP6 MLOAD PUSH3 0x79F JUMP JUMPDEST SWAP2 POP DUP5 DUP5 ADD SWAP4 POP PUSH1 0x1 DUP4 ADD SWAP3 POP PUSH3 0x96E JUMP JUMPDEST POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 PUSH3 0x9B7 PUSH1 0x40 DUP4 ADD DUP6 PUSH3 0x8C1 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 ADD MSTORE PUSH3 0x9CB DUP2 DUP6 PUSH3 0x909 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x9FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0xA09 DUP4 PUSH3 0x705 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH3 0xA27 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH3 0xA3C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH3 0xA51 JUMPI PUSH3 0xA51 PUSH3 0x9D4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH3 0xA7C JUMPI PUSH3 0xA7C PUSH3 0x9D4 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH3 0xA96 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH3 0xADC PUSH1 0x40 DUP4 ADD DUP5 PUSH3 0x909 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND DUP3 DUP3 AND SUB SWAP1 DUP1 DUP3 GT ISZERO PUSH3 0xB1D JUMPI PUSH3 0xB1D PUSH3 0xAE4 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND DUP2 DUP2 SUB PUSH3 0xB59 JUMPI PUSH3 0xB59 PUSH3 0xAE4 JUMP JUMPDEST PUSH1 0x1 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH3 0xADC PUSH1 0x40 DUP4 ADD DUP5 PUSH3 0x8C1 JUMP INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH2 0x6FE CODESIZE SUB DUP1 PUSH2 0x6FE DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x22 SWAP2 PUSH2 0x319 JUMP JUMPDEST PUSH2 0x2E DUP3 DUP3 PUSH1 0x0 PUSH2 0x35 JUMP JUMPDEST POP POP PUSH2 0x436 JUMP JUMPDEST PUSH2 0x3E DUP4 PUSH2 0x6B JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD GT DUP1 PUSH2 0x4B JUMPI POP DUP1 JUMPDEST ISZERO PUSH2 0x66 JUMPI PUSH2 0x64 DUP4 DUP4 PUSH2 0xAB PUSH1 0x20 SHL PUSH2 0x29 OR PUSH1 0x20 SHR JUMP JUMPDEST POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x74 DUP2 PUSH2 0xD7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xD0 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x6D7 PUSH1 0x27 SWAP2 CODECOPY PUSH2 0x1A9 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xEA DUP2 PUSH2 0x222 PUSH1 0x20 SHL PUSH2 0x55 OR PUSH1 0x20 SHR JUMP JUMPDEST PUSH2 0x151 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313936373A206E657720696D706C656D656E746174696F6E206973206E PUSH1 0x44 DUP3 ADD MSTORE PUSH13 0x1BDD08184818DBDB9D1C9858DD PUSH1 0x9A SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH2 0x188 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC PUSH1 0x0 SHL PUSH2 0x231 PUSH1 0x20 SHL PUSH2 0x64 OR PUSH1 0x20 SHR JUMP JUMPDEST DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0x1C6 SWAP2 SWAP1 PUSH2 0x3E7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x201 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x206 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x218 DUP7 DUP4 DUP4 DUP8 PUSH2 0x234 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x2A3 JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0x29C JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0x29C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x148 JUMP JUMPDEST POP DUP2 PUSH2 0x2AD JUMP JUMPDEST PUSH2 0x2AD DUP4 DUP4 PUSH2 0x2B5 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x2C5 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x148 SWAP2 SWAP1 PUSH2 0x403 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x310 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2F8 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x32C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x343 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x360 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x374 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x386 JUMPI PUSH2 0x386 PUSH2 0x2DF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x3AE JUMPI PUSH2 0x3AE PUSH2 0x2DF JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x3C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3D8 DUP4 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x2F5 JUMP JUMPDEST DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x3F9 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x2F5 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x422 DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x2F5 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x292 DUP1 PUSH2 0x445 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLDATASIZE PUSH2 0x13 JUMPI PUSH2 0x11 PUSH2 0x17 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x11 JUMPDEST PUSH2 0x27 PUSH2 0x22 PUSH2 0x67 JUMP JUMPDEST PUSH2 0x9F JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x60 PUSH2 0x4E DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x25F PUSH1 0x27 SWAP2 CODECOPY PUSH2 0xC3 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9A PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 DUP1 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE PUSH1 0x0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH2 0xBE JUMPI RETURNDATASIZE PUSH1 0x0 RETURN JUMPDEST RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0xE0 SWAP2 SWAP1 PUSH2 0x20F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x11B JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x120 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x131 DUP7 DUP4 DUP4 DUP8 PUSH2 0x13B JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x1AF JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0x1A8 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0x1A8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP DUP2 PUSH2 0x1B9 JUMP JUMPDEST PUSH2 0x1B9 DUP4 DUP4 PUSH2 0x1C1 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x1D1 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x19F SWAP2 SWAP1 PUSH2 0x22B JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x206 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1EE JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x221 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x1EB JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x24A DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x1EB JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A164 PUSH20 0x6F6C6343000811000A416464726573733A206C6F PUSH24 0x2D6C6576656C2064656C65676174652063616C6C20666169 PUSH13 0x6564A164736F6C634300081100 EXP PUSH1 0xA0 PUSH1 0x40 MSTORE ADDRESS PUSH1 0x80 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x14 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1D PUSH2 0x22 JUMP JUMPDEST PUSH2 0xE1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x8E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x27 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320696E697469 PUSH1 0x44 DUP3 ADD MSTORE PUSH7 0x616C697A696E67 PUSH1 0xC8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xFF SWAP1 DUP2 AND EQ PUSH2 0xDF JUMPI PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH2 0x1260 PUSH2 0x118 PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH2 0x459 ADD MSTORE DUP2 DUP2 PUSH2 0x4DE ADD MSTORE DUP2 DUP2 PUSH2 0x5D4 ADD MSTORE DUP2 DUP2 PUSH2 0x659 ADD MSTORE PUSH2 0x743 ADD MSTORE PUSH2 0x1260 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xDD JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x4F1EF286 GT PUSH2 0x7F JUMPI DUP1 PUSH4 0x6ACCAB8C GT PUSH2 0x59 JUMPI DUP1 PUSH4 0x6ACCAB8C EQ PUSH2 0x22B JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0x242 JUMPI DUP1 PUSH4 0xC9C4BFCA EQ PUSH2 0x262 JUMPI DUP1 PUSH4 0xEFE51CCA EQ PUSH2 0x296 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x1EE JUMPI DUP1 PUSH4 0x52D1902D EQ PUSH2 0x201 JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0x216 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x2AE9C600 GT PUSH2 0xBB JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0x15E JUMPI DUP1 PUSH4 0x3659CFE6 EQ PUSH2 0x180 JUMPI DUP1 PUSH4 0x4162169F EQ PUSH2 0x1A0 JUMPI DUP1 PUSH4 0x41DE6830 EQ PUSH2 0x1D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xE2 JUMPI DUP1 PUSH4 0x39A8C50 EQ PUSH2 0x117 JUMPI DUP1 PUSH4 0x2491118D EQ PUSH2 0x139 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xEE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x102 PUSH2 0xFD CALLDATASIZE PUSH1 0x4 PUSH2 0xF74 JUMP JUMPDEST PUSH2 0x2AD JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x123 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x137 PUSH2 0x132 CALLDATASIZE PUSH1 0x4 PUSH2 0xF9E JUMP JUMPDEST PUSH2 0x319 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x145 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x150 PUSH2 0x12F SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x10E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x16A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x173 PUSH2 0x425 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x10E SWAP2 SWAP1 PUSH2 0xFC2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x18C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x137 PUSH2 0x19B CALLDATASIZE PUSH1 0x4 PUSH2 0x100B JUMP JUMPDEST PUSH2 0x44F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xC9 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x10E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 PUSH1 0x40 MLOAD PUSH2 0x10E SWAP2 SWAP1 PUSH2 0x1028 JUMP JUMPDEST PUSH2 0x137 PUSH2 0x1FC CALLDATASIZE PUSH1 0x4 PUSH2 0x1066 JUMP JUMPDEST PUSH2 0x5CA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x20D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x150 PUSH2 0x736 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x222 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1BA PUSH2 0x7FB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x237 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x150 PUSH2 0x12D SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x24E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x137 PUSH2 0x25D CALLDATASIZE PUSH1 0x4 PUSH2 0x100B JUMP JUMPDEST PUSH2 0x833 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x26E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x150 PUSH32 0x821B6E3A557148015A918C89E5D092E878A69854A2D1A410635F771BD5A8A3F5 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x150 PUSH2 0x12E SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x41DE683 PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x2DD JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x2F8 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x52D1902D PUSH1 0xE0 SHL EQ JUMPDEST DUP1 PUSH2 0x313 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x3 SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH2 0x33B JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF DUP1 DUP4 AND SWAP2 AND LT JUMPDEST PUSH2 0x3A3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x44 DUP3 ADD MSTORE PUSH14 0x191E481A5B9A5D1A585B1A5E9959 PUSH1 0x92 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH2 0xFFFF NOT AND PUSH1 0xFF DUP4 AND OR PUSH2 0x100 OR SWAP1 SSTORE PUSH1 0x2 PUSH2 0xFFFF DUP4 AND LT ISZERO PUSH2 0x3CB JUMPI PUSH1 0x2 PUSH2 0x12E SSTORE JUMPDEST PUSH1 0x3 DUP3 PUSH2 0xFFFF AND LT ISZERO PUSH2 0x3DF JUMPI PUSH1 0x3 PUSH2 0x12F SSTORE JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH1 0xFF DUP3 AND DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH2 0x42D PUSH2 0xF56 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x4DC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x19195B1959D85D1958D85B1B PUSH1 0xA2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x39A JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x537 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x5A2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x6163746976652070726F7879 PUSH1 0xA0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x39A JUMP JUMPDEST PUSH2 0x5AB DUP2 PUSH2 0x925 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x5C7 SWAP2 DUP4 SWAP2 SWAP1 PUSH2 0x962 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x657 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x19195B1959D85D1958D85B1B PUSH1 0xA2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x39A JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x6B2 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x71D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x6163746976652070726F7879 PUSH1 0xA0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x39A JUMP JUMPDEST PUSH2 0x726 DUP3 PUSH2 0x925 JUMP JUMPDEST PUSH2 0x732 DUP3 DUP3 PUSH1 0x1 PUSH2 0x962 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x7D6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x38 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x555550535570677261646561626C653A206D757374206E6F742062652063616C PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6C6564207468726F7567682064656C656761746563616C6C0000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x39A JUMP JUMPDEST POP PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x82E PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x3 SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH2 0x855 JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF DUP1 DUP4 AND SWAP2 AND LT JUMPDEST PUSH2 0x8B8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x44 DUP3 ADD MSTORE PUSH14 0x191E481A5B9A5D1A585B1A5E9959 PUSH1 0x92 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x39A JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH2 0xFFFF NOT AND PUSH1 0xFF DUP4 AND OR PUSH2 0x100 OR SWAP1 SSTORE PUSH2 0x8D5 DUP3 PUSH2 0xB07 JUMP JUMPDEST PUSH1 0x1 PUSH2 0x12D SSTORE PUSH1 0x2 PUSH2 0x12E SSTORE PUSH1 0x3 PUSH2 0x12F SSTORE PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH1 0xFF DUP3 AND DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH2 0x419 JUMP JUMPDEST PUSH1 0xC9 SLOAD PUSH32 0x821B6E3A557148015A918C89E5D092E878A69854A2D1A410635F771BD5A8A3F5 SWAP1 PUSH2 0x732 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ADDRESS CALLER DUP5 PUSH1 0x0 CALLDATASIZE PUSH2 0xB7B JUMP JUMPDEST PUSH32 0x4910FDFA16FED3260ED0E7147F7CC6DA11A60208B5B9406D12A635614FFD9143 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x99A JUMPI PUSH2 0x995 DUP4 PUSH2 0xC37 JUMP JUMPDEST POP POP POP JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x52D1902D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x9F4 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x9F1 SWAP2 DUP2 ADD SWAP1 PUSH2 0x112A JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0xA66 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524331393637557067726164653A206E657720696D706C656D656E74617469 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F6E206973206E6F742055555053000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x39A JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC DUP2 EQ PUSH2 0xAFB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524331393637557067726164653A20756E737570706F727465642070726F78 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6961626C65555549440000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x39A JUMP JUMPDEST POP PUSH2 0x995 DUP4 DUP4 DUP4 PUSH2 0xD02 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0xB72 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x39A JUMP JUMPDEST PUSH2 0x5C7 DUP2 PUSH2 0xD2D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x7EF7C883 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0xFDEF9106 SWAP1 PUSH2 0xBAF SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x1143 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xBCC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xBF0 SWAP2 SWAP1 PUSH2 0x1197 JUMP JUMPDEST PUSH2 0xC2F JUMPI PUSH1 0x40 MLOAD PUSH4 0xCB6F8ED PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND PUSH1 0x4 DUP4 ADD MSTORE DUP1 DUP8 AND PUSH1 0x24 DUP4 ADD MSTORE DUP6 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x84 ADD PUSH2 0x39A JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND EXTCODESIZE PUSH2 0xCB4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313936373A206E657720696D706C656D656E746174696F6E206973206E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F74206120636F6E747261637400000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x39A JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xD0B DUP4 PUSH2 0xDC7 JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD GT DUP1 PUSH2 0xD18 JUMPI POP DUP1 JUMPDEST ISZERO PUSH2 0x995 JUMPI PUSH2 0xD27 DUP4 DUP4 PUSH2 0xE07 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0xD98 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x39A JUMP JUMPDEST PUSH1 0xC9 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xDD0 DUP2 PUSH2 0xC37 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xE2C DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x122D PUSH1 0x27 SWAP2 CODECOPY PUSH2 0xE33 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0xE50 SWAP2 SWAP1 PUSH2 0x11DD JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xE8B JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xE90 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0xEA1 DUP7 DUP4 DUP4 DUP8 PUSH2 0xEAB JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0xF1A JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0xF13 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0xF13 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x39A JUMP JUMPDEST POP DUP2 PUSH2 0xF24 JUMP JUMPDEST PUSH2 0xF24 DUP4 DUP4 PUSH2 0xF2C JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0xF3C JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x39A SWAP2 SWAP1 PUSH2 0x11F9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xF86 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0xE2C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xFB0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH2 0xE2C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0xFED JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0xFCB JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x5C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x101D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xE2C DUP2 PUSH2 0xFF6 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH1 0x3 DUP4 LT PUSH2 0x104A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 SWAP1 MSTORE SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1079 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x1084 DUP2 PUSH2 0xFF6 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x10A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x10B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x10C7 JUMPI PUSH2 0x10C7 PUSH2 0x1050 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x10EF JUMPI PUSH2 0x10EF PUSH2 0x1050 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x1108 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x113C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND DUP4 MSTORE DUP1 DUP8 AND PUSH1 0x20 DUP5 ADD MSTORE POP DUP5 PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x80 PUSH1 0x60 DUP4 ADD MSTORE DUP3 PUSH1 0x80 DUP4 ADD MSTORE DUP3 DUP5 PUSH1 0xA0 DUP5 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0xA0 DUP5 DUP5 ADD ADD MSTORE PUSH1 0xA0 PUSH1 0x1F NOT PUSH1 0x1F DUP6 ADD AND DUP4 ADD ADD SWAP1 POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x11A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xE2C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x11D4 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x11BC JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x11EF DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x11B9 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x1218 DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x11B9 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A164 PUSH20 0x6F6C6343000811000A0000000000000000000000 ","sourceMap":"4631:2543:54:-:0;;;4788:87;;;;;;;;;;4833:37;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1605:32:83;;;4631:2543:54;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@deployUUPSProxy_14563":{"entryPoint":1595,"id":14563,"parameterSlots":2,"returnSlots":1},"@implementation_14447":{"entryPoint":null,"id":14447,"parameterSlots":0,"returnSlots":1},"@mockHelpers_11760":{"entryPoint":1399,"id":11760,"parameterSlots":1,"returnSlots":1},"@mockPermissions_11721":{"entryPoint":990,"id":11721,"parameterSlots":3,"returnSlots":1},"@prepareInstallation_12310":{"entryPoint":783,"id":12310,"parameterSlots":2,"returnSlots":2},"@prepareUninstallation_12430":{"entryPoint":496,"id":12430,"parameterSlots":2,"returnSlots":1},"@prepareUpdate_12402":{"entryPoint":521,"id":12402,"parameterSlots":3,"returnSlots":2},"@protocolVersion_14765":{"entryPoint":452,"id":14765,"parameterSlots":0,"returnSlots":1},"@supportsInterface_14438":{"entryPoint":369,"id":14438,"parameterSlots":1,"returnSlots":1},"@supportsInterface_9730":{"entryPoint":null,"id":9730,"parameterSlots":1,"returnSlots":1},"abi_decode_address":{"entryPoint":1797,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_struct_SetupPayload_calldata":{"entryPoint":1826,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_bytes_memory_ptr":{"entryPoint":2538,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_struct$_SetupPayload_$14224_calldata_ptr":{"entryPoint":1845,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_uint16t_struct$_SetupPayload_$14224_calldata_ptr":{"entryPoint":2131,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_bytes4":{"entryPoint":1699,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encodeUpdatedPos_struct_MultiTargetPermission":{"entryPoint":1951,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_bytes":{"entryPoint":2241,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_struct_PreparedSetupData":{"entryPoint":2313,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address_t_bytes_memory_ptr__to_t_address_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":2915,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_address_t_struct$_PreparedSetupData_$14216_memory_ptr__to_t_address_t_struct$_PreparedSetupData_$14216_memory_ptr__fromStack_reversed":{"entryPoint":2744,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr__fromStack_reversed":{"entryPoint":2054,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed":{"entryPoint":1743,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$14216_memory_ptr__to_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$14216_memory_ptr__fromStack_reversed":{"entryPoint":2466,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_contract$_IDAO_$10865__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_uint16__to_t_uint16__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_t_uint160":{"entryPoint":2810,"id":null,"parameterSlots":2,"returnSlots":1},"increment_t_uint160":{"entryPoint":2874,"id":null,"parameterSlots":1,"returnSlots":1},"panic_error_0x11":{"entryPoint":2788,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x21":{"entryPoint":1929,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x32":{"entryPoint":2852,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":2516,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:9309:92","statements":[{"nodeType":"YulBlock","src":"6:3:92","statements":[]},{"body":{"nodeType":"YulBlock","src":"83:217:92","statements":[{"body":{"nodeType":"YulBlock","src":"129:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"138:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"141:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"131:6:92"},"nodeType":"YulFunctionCall","src":"131:12:92"},"nodeType":"YulExpressionStatement","src":"131:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"104:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"113:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"100:3:92"},"nodeType":"YulFunctionCall","src":"100:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"125:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"96:3:92"},"nodeType":"YulFunctionCall","src":"96:32:92"},"nodeType":"YulIf","src":"93:52:92"},{"nodeType":"YulVariableDeclaration","src":"154:36:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"180:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"167:12:92"},"nodeType":"YulFunctionCall","src":"167:23:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"158:5:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"254:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"263:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"266:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"256:6:92"},"nodeType":"YulFunctionCall","src":"256:12:92"},"nodeType":"YulExpressionStatement","src":"256:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"212:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"223:5:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"234:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"239:10:92","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"230:3:92"},"nodeType":"YulFunctionCall","src":"230:20:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"219:3:92"},"nodeType":"YulFunctionCall","src":"219:32:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"209:2:92"},"nodeType":"YulFunctionCall","src":"209:43:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"202:6:92"},"nodeType":"YulFunctionCall","src":"202:51:92"},"nodeType":"YulIf","src":"199:71:92"},{"nodeType":"YulAssignment","src":"279:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"289:5:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"279:6:92"}]}]},"name":"abi_decode_tuple_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"49:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"60:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"72:6:92","type":""}],"src":"14:286:92"},{"body":{"nodeType":"YulBlock","src":"400:92:92","statements":[{"nodeType":"YulAssignment","src":"410:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"422:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"433:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"418:3:92"},"nodeType":"YulFunctionCall","src":"418:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"410:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"452:9:92"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"477:6:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"470:6:92"},"nodeType":"YulFunctionCall","src":"470:14:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"463:6:92"},"nodeType":"YulFunctionCall","src":"463:22:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"445:6:92"},"nodeType":"YulFunctionCall","src":"445:41:92"},"nodeType":"YulExpressionStatement","src":"445:41:92"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"369:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"380:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"391:4:92","type":""}],"src":"305:187:92"},{"body":{"nodeType":"YulBlock","src":"640:358:92","statements":[{"nodeType":"YulAssignment","src":"650:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"662:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"673:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"658:3:92"},"nodeType":"YulFunctionCall","src":"658:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"650:4:92"}]},{"nodeType":"YulVariableDeclaration","src":"685:20:92","value":{"name":"headStart","nodeType":"YulIdentifier","src":"696:9:92"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"689:3:92","type":""}]},{"nodeType":"YulAssignment","src":"714:16:92","value":{"name":"headStart","nodeType":"YulIdentifier","src":"721:9:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"714:3:92"}]},{"nodeType":"YulVariableDeclaration","src":"739:20:92","value":{"name":"value0","nodeType":"YulIdentifier","src":"753:6:92"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"743:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"768:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"777:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"772:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"834:158:92","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"855:3:92"},{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"870:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"864:5:92"},"nodeType":"YulFunctionCall","src":"864:13:92"},{"kind":"number","nodeType":"YulLiteral","src":"879:4:92","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"860:3:92"},"nodeType":"YulFunctionCall","src":"860:24:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"848:6:92"},"nodeType":"YulFunctionCall","src":"848:37:92"},"nodeType":"YulExpressionStatement","src":"848:37:92"},{"nodeType":"YulVariableDeclaration","src":"898:14:92","value":{"kind":"number","nodeType":"YulLiteral","src":"908:4:92","type":"","value":"0x20"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"902:2:92","type":""}]},{"nodeType":"YulAssignment","src":"925:19:92","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"936:3:92"},{"name":"_1","nodeType":"YulIdentifier","src":"941:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"932:3:92"},"nodeType":"YulFunctionCall","src":"932:12:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"925:3:92"}]},{"nodeType":"YulAssignment","src":"957:25:92","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"971:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"979:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"967:3:92"},"nodeType":"YulFunctionCall","src":"967:15:92"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"957:6:92"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"798:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"801:4:92","type":"","value":"0x03"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"795:2:92"},"nodeType":"YulFunctionCall","src":"795:11:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"807:18:92","statements":[{"nodeType":"YulAssignment","src":"809:14:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"818:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"821:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"814:3:92"},"nodeType":"YulFunctionCall","src":"814:9:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"809:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"791:3:92","statements":[]},"src":"787:205:92"}]},"name":"abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"609:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"620:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"631:4:92","type":""}],"src":"497:501:92"},{"body":{"nodeType":"YulBlock","src":"1104:125:92","statements":[{"nodeType":"YulAssignment","src":"1114:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1126:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1137:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1122:3:92"},"nodeType":"YulFunctionCall","src":"1122:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1114:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1156:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1171:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"1179:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1167:3:92"},"nodeType":"YulFunctionCall","src":"1167:55:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1149:6:92"},"nodeType":"YulFunctionCall","src":"1149:74:92"},"nodeType":"YulExpressionStatement","src":"1149:74:92"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1073:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1084:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1095:4:92","type":""}],"src":"1003:226:92"},{"body":{"nodeType":"YulBlock","src":"1283:147:92","statements":[{"nodeType":"YulAssignment","src":"1293:29:92","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1315:6:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1302:12:92"},"nodeType":"YulFunctionCall","src":"1302:20:92"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"1293:5:92"}]},{"body":{"nodeType":"YulBlock","src":"1408:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1417:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1420:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1410:6:92"},"nodeType":"YulFunctionCall","src":"1410:12:92"},"nodeType":"YulExpressionStatement","src":"1410:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1344:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1355:5:92"},{"kind":"number","nodeType":"YulLiteral","src":"1362:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1351:3:92"},"nodeType":"YulFunctionCall","src":"1351:54:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1341:2:92"},"nodeType":"YulFunctionCall","src":"1341:65:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1334:6:92"},"nodeType":"YulFunctionCall","src":"1334:73:92"},"nodeType":"YulIf","src":"1331:93:92"}]},"name":"abi_decode_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"1262:6:92","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"1273:5:92","type":""}],"src":"1234:196:92"},{"body":{"nodeType":"YulBlock","src":"1510:85:92","statements":[{"body":{"nodeType":"YulBlock","src":"1549:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1558:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1561:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1551:6:92"},"nodeType":"YulFunctionCall","src":"1551:12:92"},"nodeType":"YulExpressionStatement","src":"1551:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"end","nodeType":"YulIdentifier","src":"1531:3:92"},{"name":"offset","nodeType":"YulIdentifier","src":"1536:6:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1527:3:92"},"nodeType":"YulFunctionCall","src":"1527:16:92"},{"kind":"number","nodeType":"YulLiteral","src":"1545:2:92","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1523:3:92"},"nodeType":"YulFunctionCall","src":"1523:25:92"},"nodeType":"YulIf","src":"1520:45:92"},{"nodeType":"YulAssignment","src":"1574:15:92","value":{"name":"offset","nodeType":"YulIdentifier","src":"1583:6:92"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"1574:5:92"}]}]},"name":"abi_decode_struct_SetupPayload_calldata","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"1484:6:92","type":""},{"name":"end","nodeType":"YulTypedName","src":"1492:3:92","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"1500:5:92","type":""}],"src":"1435:160:92"},{"body":{"nodeType":"YulBlock","src":"1720:321:92","statements":[{"body":{"nodeType":"YulBlock","src":"1766:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1775:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1778:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1768:6:92"},"nodeType":"YulFunctionCall","src":"1768:12:92"},"nodeType":"YulExpressionStatement","src":"1768:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1741:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"1750:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1737:3:92"},"nodeType":"YulFunctionCall","src":"1737:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"1762:2:92","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1733:3:92"},"nodeType":"YulFunctionCall","src":"1733:32:92"},"nodeType":"YulIf","src":"1730:52:92"},{"nodeType":"YulAssignment","src":"1791:39:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1820:9:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"1801:18:92"},"nodeType":"YulFunctionCall","src":"1801:29:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1791:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"1839:46:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1870:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1881:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1866:3:92"},"nodeType":"YulFunctionCall","src":"1866:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1853:12:92"},"nodeType":"YulFunctionCall","src":"1853:32:92"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1843:6:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"1928:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1937:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1940:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1930:6:92"},"nodeType":"YulFunctionCall","src":"1930:12:92"},"nodeType":"YulExpressionStatement","src":"1930:12:92"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1900:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"1908:18:92","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1897:2:92"},"nodeType":"YulFunctionCall","src":"1897:30:92"},"nodeType":"YulIf","src":"1894:50:92"},{"nodeType":"YulAssignment","src":"1953:82:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2007:9:92"},{"name":"offset","nodeType":"YulIdentifier","src":"2018:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2003:3:92"},"nodeType":"YulFunctionCall","src":"2003:22:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2027:7:92"}],"functionName":{"name":"abi_decode_struct_SetupPayload_calldata","nodeType":"YulIdentifier","src":"1963:39:92"},"nodeType":"YulFunctionCall","src":"1963:72:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1953:6:92"}]}]},"name":"abi_decode_tuple_t_addresst_struct$_SetupPayload_$14224_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1678:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1689:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1701:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1709:6:92","type":""}],"src":"1600:441:92"},{"body":{"nodeType":"YulBlock","src":"2078:95:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2095:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2102:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"2107:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2098:3:92"},"nodeType":"YulFunctionCall","src":"2098:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2088:6:92"},"nodeType":"YulFunctionCall","src":"2088:31:92"},"nodeType":"YulExpressionStatement","src":"2088:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2135:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"2138:4:92","type":"","value":"0x21"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2128:6:92"},"nodeType":"YulFunctionCall","src":"2128:15:92"},"nodeType":"YulExpressionStatement","src":"2128:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2159:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2162:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2152:6:92"},"nodeType":"YulFunctionCall","src":"2152:15:92"},"nodeType":"YulExpressionStatement","src":"2152:15:92"}]},"name":"panic_error_0x21","nodeType":"YulFunctionDefinition","src":"2046:127:92"},{"body":{"nodeType":"YulBlock","src":"2268:606:92","statements":[{"nodeType":"YulVariableDeclaration","src":"2278:23:92","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2294:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2288:5:92"},"nodeType":"YulFunctionCall","src":"2288:13:92"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"2282:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"2339:111:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2360:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2367:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"2372:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2363:3:92"},"nodeType":"YulFunctionCall","src":"2363:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2353:6:92"},"nodeType":"YulFunctionCall","src":"2353:31:92"},"nodeType":"YulExpressionStatement","src":"2353:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2404:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"2407:4:92","type":"","value":"0x21"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2397:6:92"},"nodeType":"YulFunctionCall","src":"2397:15:92"},"nodeType":"YulExpressionStatement","src":"2397:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2432:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2435:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2425:6:92"},"nodeType":"YulFunctionCall","src":"2425:15:92"},"nodeType":"YulExpressionStatement","src":"2425:15:92"}]},"condition":{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"2323:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"2327:1:92","type":"","value":"3"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2320:2:92"},"nodeType":"YulFunctionCall","src":"2320:9:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2313:6:92"},"nodeType":"YulFunctionCall","src":"2313:17:92"},"nodeType":"YulIf","src":"2310:140:92"},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2466:3:92"},{"name":"_1","nodeType":"YulIdentifier","src":"2471:2:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2459:6:92"},"nodeType":"YulFunctionCall","src":"2459:15:92"},"nodeType":"YulExpressionStatement","src":"2459:15:92"},{"nodeType":"YulVariableDeclaration","src":"2483:44:92","value":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2513:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"2521:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2509:3:92"},"nodeType":"YulFunctionCall","src":"2509:17:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2503:5:92"},"nodeType":"YulFunctionCall","src":"2503:24:92"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"2487:12:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2536:52:92","value":{"kind":"number","nodeType":"YulLiteral","src":"2546:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"2540:2:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2608:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"2613:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2604:3:92"},"nodeType":"YulFunctionCall","src":"2604:14:92"},{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"2624:12:92"},{"name":"_2","nodeType":"YulIdentifier","src":"2638:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2620:3:92"},"nodeType":"YulFunctionCall","src":"2620:21:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2597:6:92"},"nodeType":"YulFunctionCall","src":"2597:45:92"},"nodeType":"YulExpressionStatement","src":"2597:45:92"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2662:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"2667:4:92","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2658:3:92"},"nodeType":"YulFunctionCall","src":"2658:14:92"},{"arguments":[{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2688:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"2696:4:92","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2684:3:92"},"nodeType":"YulFunctionCall","src":"2684:17:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2678:5:92"},"nodeType":"YulFunctionCall","src":"2678:24:92"},{"name":"_2","nodeType":"YulIdentifier","src":"2704:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2674:3:92"},"nodeType":"YulFunctionCall","src":"2674:33:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2651:6:92"},"nodeType":"YulFunctionCall","src":"2651:57:92"},"nodeType":"YulExpressionStatement","src":"2651:57:92"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2728:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"2733:4:92","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2724:3:92"},"nodeType":"YulFunctionCall","src":"2724:14:92"},{"arguments":[{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2754:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"2762:4:92","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2750:3:92"},"nodeType":"YulFunctionCall","src":"2750:17:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2744:5:92"},"nodeType":"YulFunctionCall","src":"2744:24:92"},{"name":"_2","nodeType":"YulIdentifier","src":"2770:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2740:3:92"},"nodeType":"YulFunctionCall","src":"2740:33:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2717:6:92"},"nodeType":"YulFunctionCall","src":"2717:57:92"},"nodeType":"YulExpressionStatement","src":"2717:57:92"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2794:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"2799:4:92","type":"","value":"0x80"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2790:3:92"},"nodeType":"YulFunctionCall","src":"2790:14:92"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2816:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"2824:4:92","type":"","value":"0x80"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2812:3:92"},"nodeType":"YulFunctionCall","src":"2812:17:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2806:5:92"},"nodeType":"YulFunctionCall","src":"2806:24:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2783:6:92"},"nodeType":"YulFunctionCall","src":"2783:48:92"},"nodeType":"YulExpressionStatement","src":"2783:48:92"},{"nodeType":"YulAssignment","src":"2840:28:92","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2858:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"2863:4:92","type":"","value":"0xa0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2854:3:92"},"nodeType":"YulFunctionCall","src":"2854:14:92"},"variableNames":[{"name":"updatedPos","nodeType":"YulIdentifier","src":"2840:10:92"}]}]},"name":"abi_encodeUpdatedPos_struct_MultiTargetPermission","nodeType":"YulFunctionDefinition","parameters":[{"name":"value0","nodeType":"YulTypedName","src":"2237:6:92","type":""},{"name":"pos","nodeType":"YulTypedName","src":"2245:3:92","type":""}],"returnVariables":[{"name":"updatedPos","nodeType":"YulTypedName","src":"2253:10:92","type":""}],"src":"2178:696:92"},{"body":{"nodeType":"YulBlock","src":"3110:499:92","statements":[{"nodeType":"YulVariableDeclaration","src":"3120:12:92","value":{"kind":"number","nodeType":"YulLiteral","src":"3130:2:92","type":"","value":"32"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"3124:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3141:32:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3159:9:92"},{"name":"_1","nodeType":"YulIdentifier","src":"3170:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3155:3:92"},"nodeType":"YulFunctionCall","src":"3155:18:92"},"variables":[{"name":"tail_1","nodeType":"YulTypedName","src":"3145:6:92","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3189:9:92"},{"name":"_1","nodeType":"YulIdentifier","src":"3200:2:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3182:6:92"},"nodeType":"YulFunctionCall","src":"3182:21:92"},"nodeType":"YulExpressionStatement","src":"3182:21:92"},{"nodeType":"YulVariableDeclaration","src":"3212:17:92","value":{"name":"tail_1","nodeType":"YulIdentifier","src":"3223:6:92"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"3216:3:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3238:27:92","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3258:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3252:5:92"},"nodeType":"YulFunctionCall","src":"3252:13:92"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"3242:6:92","type":""}]},{"expression":{"arguments":[{"name":"tail_1","nodeType":"YulIdentifier","src":"3281:6:92"},{"name":"length","nodeType":"YulIdentifier","src":"3289:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3274:6:92"},"nodeType":"YulFunctionCall","src":"3274:22:92"},"nodeType":"YulExpressionStatement","src":"3274:22:92"},{"nodeType":"YulAssignment","src":"3305:25:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3316:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3327:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3312:3:92"},"nodeType":"YulFunctionCall","src":"3312:18:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"3305:3:92"}]},{"nodeType":"YulVariableDeclaration","src":"3339:29:92","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3357:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"3365:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3353:3:92"},"nodeType":"YulFunctionCall","src":"3353:15:92"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"3343:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3377:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"3386:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"3381:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"3445:138:92","statements":[{"nodeType":"YulAssignment","src":"3459:76:92","value":{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"3522:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3516:5:92"},"nodeType":"YulFunctionCall","src":"3516:13:92"},{"name":"pos","nodeType":"YulIdentifier","src":"3531:3:92"}],"functionName":{"name":"abi_encodeUpdatedPos_struct_MultiTargetPermission","nodeType":"YulIdentifier","src":"3466:49:92"},"nodeType":"YulFunctionCall","src":"3466:69:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"3459:3:92"}]},{"nodeType":"YulAssignment","src":"3548:25:92","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"3562:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"3570:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3558:3:92"},"nodeType":"YulFunctionCall","src":"3558:15:92"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"3548:6:92"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3407:1:92"},{"name":"length","nodeType":"YulIdentifier","src":"3410:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"3404:2:92"},"nodeType":"YulFunctionCall","src":"3404:13:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"3418:18:92","statements":[{"nodeType":"YulAssignment","src":"3420:14:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3429:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"3432:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3425:3:92"},"nodeType":"YulFunctionCall","src":"3425:9:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"3420:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"3400:3:92","statements":[]},"src":"3396:187:92"},{"nodeType":"YulAssignment","src":"3592:11:92","value":{"name":"pos","nodeType":"YulIdentifier","src":"3600:3:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3592:4:92"}]}]},"name":"abi_encode_tuple_t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3079:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3090:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3101:4:92","type":""}],"src":"2879:730:92"},{"body":{"nodeType":"YulBlock","src":"3750:465:92","statements":[{"body":{"nodeType":"YulBlock","src":"3796:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3805:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3808:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3798:6:92"},"nodeType":"YulFunctionCall","src":"3798:12:92"},"nodeType":"YulExpressionStatement","src":"3798:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3771:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"3780:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3767:3:92"},"nodeType":"YulFunctionCall","src":"3767:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"3792:2:92","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3763:3:92"},"nodeType":"YulFunctionCall","src":"3763:32:92"},"nodeType":"YulIf","src":"3760:52:92"},{"nodeType":"YulAssignment","src":"3821:39:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3850:9:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"3831:18:92"},"nodeType":"YulFunctionCall","src":"3831:29:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3821:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"3869:45:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3899:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3910:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3895:3:92"},"nodeType":"YulFunctionCall","src":"3895:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3882:12:92"},"nodeType":"YulFunctionCall","src":"3882:32:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"3873:5:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"3964:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3973:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3976:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3966:6:92"},"nodeType":"YulFunctionCall","src":"3966:12:92"},"nodeType":"YulExpressionStatement","src":"3966:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3936:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3947:5:92"},{"kind":"number","nodeType":"YulLiteral","src":"3954:6:92","type":"","value":"0xffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3943:3:92"},"nodeType":"YulFunctionCall","src":"3943:18:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"3933:2:92"},"nodeType":"YulFunctionCall","src":"3933:29:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3926:6:92"},"nodeType":"YulFunctionCall","src":"3926:37:92"},"nodeType":"YulIf","src":"3923:57:92"},{"nodeType":"YulAssignment","src":"3989:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"3999:5:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"3989:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"4013:46:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4044:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4055:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4040:3:92"},"nodeType":"YulFunctionCall","src":"4040:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4027:12:92"},"nodeType":"YulFunctionCall","src":"4027:32:92"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4017:6:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"4102:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4111:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4114:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4104:6:92"},"nodeType":"YulFunctionCall","src":"4104:12:92"},"nodeType":"YulExpressionStatement","src":"4104:12:92"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"4074:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"4082:18:92","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4071:2:92"},"nodeType":"YulFunctionCall","src":"4071:30:92"},"nodeType":"YulIf","src":"4068:50:92"},{"nodeType":"YulAssignment","src":"4127:82:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4181:9:92"},{"name":"offset","nodeType":"YulIdentifier","src":"4192:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4177:3:92"},"nodeType":"YulFunctionCall","src":"4177:22:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4201:7:92"}],"functionName":{"name":"abi_decode_struct_SetupPayload_calldata","nodeType":"YulIdentifier","src":"4137:39:92"},"nodeType":"YulFunctionCall","src":"4137:72:92"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"4127:6:92"}]}]},"name":"abi_decode_tuple_t_addresst_uint16t_struct$_SetupPayload_$14224_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3700:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3711:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3723:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"3731:6:92","type":""},{"name":"value2","nodeType":"YulTypedName","src":"3739:6:92","type":""}],"src":"3614:601:92"},{"body":{"nodeType":"YulBlock","src":"4269:373:92","statements":[{"nodeType":"YulVariableDeclaration","src":"4279:26:92","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4299:5:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4293:5:92"},"nodeType":"YulFunctionCall","src":"4293:12:92"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"4283:6:92","type":""}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4321:3:92"},{"name":"length","nodeType":"YulIdentifier","src":"4326:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4314:6:92"},"nodeType":"YulFunctionCall","src":"4314:19:92"},"nodeType":"YulExpressionStatement","src":"4314:19:92"},{"nodeType":"YulVariableDeclaration","src":"4342:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"4351:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"4346:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"4413:110:92","statements":[{"nodeType":"YulVariableDeclaration","src":"4427:14:92","value":{"kind":"number","nodeType":"YulLiteral","src":"4437:4:92","type":"","value":"0x20"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"4431:2:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4469:3:92"},{"name":"i","nodeType":"YulIdentifier","src":"4474:1:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4465:3:92"},"nodeType":"YulFunctionCall","src":"4465:11:92"},{"name":"_1","nodeType":"YulIdentifier","src":"4478:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4461:3:92"},"nodeType":"YulFunctionCall","src":"4461:20:92"},{"arguments":[{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4497:5:92"},{"name":"i","nodeType":"YulIdentifier","src":"4504:1:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4493:3:92"},"nodeType":"YulFunctionCall","src":"4493:13:92"},{"name":"_1","nodeType":"YulIdentifier","src":"4508:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4489:3:92"},"nodeType":"YulFunctionCall","src":"4489:22:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4483:5:92"},"nodeType":"YulFunctionCall","src":"4483:29:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4454:6:92"},"nodeType":"YulFunctionCall","src":"4454:59:92"},"nodeType":"YulExpressionStatement","src":"4454:59:92"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"4372:1:92"},{"name":"length","nodeType":"YulIdentifier","src":"4375:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"4369:2:92"},"nodeType":"YulFunctionCall","src":"4369:13:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"4383:21:92","statements":[{"nodeType":"YulAssignment","src":"4385:17:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"4394:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"4397:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4390:3:92"},"nodeType":"YulFunctionCall","src":"4390:12:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"4385:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"4365:3:92","statements":[]},"src":"4361:162:92"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4547:3:92"},{"name":"length","nodeType":"YulIdentifier","src":"4552:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4543:3:92"},"nodeType":"YulFunctionCall","src":"4543:16:92"},{"kind":"number","nodeType":"YulLiteral","src":"4561:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4539:3:92"},"nodeType":"YulFunctionCall","src":"4539:27:92"},{"kind":"number","nodeType":"YulLiteral","src":"4568:1:92","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4532:6:92"},"nodeType":"YulFunctionCall","src":"4532:38:92"},"nodeType":"YulExpressionStatement","src":"4532:38:92"},{"nodeType":"YulAssignment","src":"4579:57:92","value":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4594:3:92"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"4607:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"4615:2:92","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4603:3:92"},"nodeType":"YulFunctionCall","src":"4603:15:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4624:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"4620:3:92"},"nodeType":"YulFunctionCall","src":"4620:7:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4599:3:92"},"nodeType":"YulFunctionCall","src":"4599:29:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4590:3:92"},"nodeType":"YulFunctionCall","src":"4590:39:92"},{"kind":"number","nodeType":"YulLiteral","src":"4631:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4586:3:92"},"nodeType":"YulFunctionCall","src":"4586:50:92"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"4579:3:92"}]}]},"name":"abi_encode_bytes","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"4246:5:92","type":""},{"name":"pos","nodeType":"YulTypedName","src":"4253:3:92","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"4261:3:92","type":""}],"src":"4220:422:92"},{"body":{"nodeType":"YulBlock","src":"4715:1094:92","statements":[{"nodeType":"YulVariableDeclaration","src":"4725:26:92","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4741:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"4746:4:92","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4737:3:92"},"nodeType":"YulFunctionCall","src":"4737:14:92"},"variables":[{"name":"tail","nodeType":"YulTypedName","src":"4729:4:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4760:32:92","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4786:5:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4780:5:92"},"nodeType":"YulFunctionCall","src":"4780:12:92"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"4764:12:92","type":""}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4808:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"4813:4:92","type":"","value":"0x40"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4801:6:92"},"nodeType":"YulFunctionCall","src":"4801:17:92"},"nodeType":"YulExpressionStatement","src":"4801:17:92"},{"nodeType":"YulVariableDeclaration","src":"4827:17:92","value":{"name":"tail","nodeType":"YulIdentifier","src":"4840:4:92"},"variables":[{"name":"pos_1","nodeType":"YulTypedName","src":"4831:5:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4853:33:92","value":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"4873:12:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4867:5:92"},"nodeType":"YulFunctionCall","src":"4867:19:92"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"4857:6:92","type":""}]},{"expression":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"4902:4:92"},{"name":"length","nodeType":"YulIdentifier","src":"4908:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4895:6:92"},"nodeType":"YulFunctionCall","src":"4895:20:92"},"nodeType":"YulExpressionStatement","src":"4895:20:92"},{"nodeType":"YulAssignment","src":"4924:21:92","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4937:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"4942:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4933:3:92"},"nodeType":"YulFunctionCall","src":"4933:12:92"},"variableNames":[{"name":"pos_1","nodeType":"YulIdentifier","src":"4924:5:92"}]},{"nodeType":"YulVariableDeclaration","src":"4954:14:92","value":{"kind":"number","nodeType":"YulLiteral","src":"4964:4:92","type":"","value":"0x20"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"4958:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4977:35:92","value":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"4995:12:92"},{"name":"_1","nodeType":"YulIdentifier","src":"5009:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4991:3:92"},"nodeType":"YulFunctionCall","src":"4991:21:92"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"4981:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5021:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"5030:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"5025:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"5089:175:92","statements":[{"expression":{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5110:5:92"},{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"5127:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5121:5:92"},"nodeType":"YulFunctionCall","src":"5121:13:92"},{"kind":"number","nodeType":"YulLiteral","src":"5136:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5117:3:92"},"nodeType":"YulFunctionCall","src":"5117:62:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5103:6:92"},"nodeType":"YulFunctionCall","src":"5103:77:92"},"nodeType":"YulExpressionStatement","src":"5103:77:92"},{"nodeType":"YulAssignment","src":"5193:23:92","value":{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5206:5:92"},{"name":"_1","nodeType":"YulIdentifier","src":"5213:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5202:3:92"},"nodeType":"YulFunctionCall","src":"5202:14:92"},"variableNames":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5193:5:92"}]},{"nodeType":"YulAssignment","src":"5229:25:92","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"5243:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"5251:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5239:3:92"},"nodeType":"YulFunctionCall","src":"5239:15:92"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"5229:6:92"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"5051:1:92"},{"name":"length","nodeType":"YulIdentifier","src":"5054:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"5048:2:92"},"nodeType":"YulFunctionCall","src":"5048:13:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"5062:18:92","statements":[{"nodeType":"YulAssignment","src":"5064:14:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"5073:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"5076:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5069:3:92"},"nodeType":"YulFunctionCall","src":"5069:9:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"5064:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"5044:3:92","statements":[]},"src":"5040:224:92"},{"nodeType":"YulVariableDeclaration","src":"5273:43:92","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5305:5:92"},{"name":"_1","nodeType":"YulIdentifier","src":"5312:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5301:3:92"},"nodeType":"YulFunctionCall","src":"5301:14:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5295:5:92"},"nodeType":"YulFunctionCall","src":"5295:21:92"},"variables":[{"name":"memberValue0_1","nodeType":"YulTypedName","src":"5277:14:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5336:3:92"},{"name":"_1","nodeType":"YulIdentifier","src":"5341:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5332:3:92"},"nodeType":"YulFunctionCall","src":"5332:12:92"},{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5350:5:92"},{"name":"pos","nodeType":"YulIdentifier","src":"5357:3:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5346:3:92"},"nodeType":"YulFunctionCall","src":"5346:15:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5325:6:92"},"nodeType":"YulFunctionCall","src":"5325:37:92"},"nodeType":"YulExpressionStatement","src":"5325:37:92"},{"nodeType":"YulVariableDeclaration","src":"5371:18:92","value":{"name":"pos_1","nodeType":"YulIdentifier","src":"5384:5:92"},"variables":[{"name":"pos_2","nodeType":"YulTypedName","src":"5375:5:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5398:37:92","value":{"arguments":[{"name":"memberValue0_1","nodeType":"YulIdentifier","src":"5420:14:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5414:5:92"},"nodeType":"YulFunctionCall","src":"5414:21:92"},"variables":[{"name":"length_1","nodeType":"YulTypedName","src":"5402:8:92","type":""}]},{"expression":{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5451:5:92"},{"name":"length_1","nodeType":"YulIdentifier","src":"5458:8:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5444:6:92"},"nodeType":"YulFunctionCall","src":"5444:23:92"},"nodeType":"YulExpressionStatement","src":"5444:23:92"},{"nodeType":"YulAssignment","src":"5476:23:92","value":{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5489:5:92"},{"name":"_1","nodeType":"YulIdentifier","src":"5496:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5485:3:92"},"nodeType":"YulFunctionCall","src":"5485:14:92"},"variableNames":[{"name":"pos_2","nodeType":"YulIdentifier","src":"5476:5:92"}]},{"nodeType":"YulVariableDeclaration","src":"5508:39:92","value":{"arguments":[{"name":"memberValue0_1","nodeType":"YulIdentifier","src":"5528:14:92"},{"name":"_1","nodeType":"YulIdentifier","src":"5544:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5524:3:92"},"nodeType":"YulFunctionCall","src":"5524:23:92"},"variables":[{"name":"srcPtr_1","nodeType":"YulTypedName","src":"5512:8:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5556:12:92","value":{"kind":"number","nodeType":"YulLiteral","src":"5567:1:92","type":"","value":"0"},"variables":[{"name":"i_1","nodeType":"YulTypedName","src":"5560:3:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"5634:148:92","statements":[{"nodeType":"YulAssignment","src":"5648:82:92","value":{"arguments":[{"arguments":[{"name":"srcPtr_1","nodeType":"YulIdentifier","src":"5713:8:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5707:5:92"},"nodeType":"YulFunctionCall","src":"5707:15:92"},{"name":"pos_2","nodeType":"YulIdentifier","src":"5724:5:92"}],"functionName":{"name":"abi_encodeUpdatedPos_struct_MultiTargetPermission","nodeType":"YulIdentifier","src":"5657:49:92"},"nodeType":"YulFunctionCall","src":"5657:73:92"},"variableNames":[{"name":"pos_2","nodeType":"YulIdentifier","src":"5648:5:92"}]},{"nodeType":"YulAssignment","src":"5743:29:92","value":{"arguments":[{"name":"srcPtr_1","nodeType":"YulIdentifier","src":"5759:8:92"},{"name":"_1","nodeType":"YulIdentifier","src":"5769:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5755:3:92"},"nodeType":"YulFunctionCall","src":"5755:17:92"},"variableNames":[{"name":"srcPtr_1","nodeType":"YulIdentifier","src":"5743:8:92"}]}]},"condition":{"arguments":[{"name":"i_1","nodeType":"YulIdentifier","src":"5588:3:92"},{"name":"length_1","nodeType":"YulIdentifier","src":"5593:8:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"5585:2:92"},"nodeType":"YulFunctionCall","src":"5585:17:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"5603:22:92","statements":[{"nodeType":"YulAssignment","src":"5605:18:92","value":{"arguments":[{"name":"i_1","nodeType":"YulIdentifier","src":"5616:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"5621:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5612:3:92"},"nodeType":"YulFunctionCall","src":"5612:11:92"},"variableNames":[{"name":"i_1","nodeType":"YulIdentifier","src":"5605:3:92"}]}]},"pre":{"nodeType":"YulBlock","src":"5581:3:92","statements":[]},"src":"5577:205:92"},{"nodeType":"YulAssignment","src":"5791:12:92","value":{"name":"pos_2","nodeType":"YulIdentifier","src":"5798:5:92"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"5791:3:92"}]}]},"name":"abi_encode_struct_PreparedSetupData","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"4692:5:92","type":""},{"name":"pos","nodeType":"YulTypedName","src":"4699:3:92","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"4707:3:92","type":""}],"src":"4647:1162:92"},{"body":{"nodeType":"YulBlock","src":"6033:231:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6050:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6061:2:92","type":"","value":"64"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6043:6:92"},"nodeType":"YulFunctionCall","src":"6043:21:92"},"nodeType":"YulExpressionStatement","src":"6043:21:92"},{"nodeType":"YulVariableDeclaration","src":"6073:58:92","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6104:6:92"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6116:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6127:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6112:3:92"},"nodeType":"YulFunctionCall","src":"6112:18:92"}],"functionName":{"name":"abi_encode_bytes","nodeType":"YulIdentifier","src":"6087:16:92"},"nodeType":"YulFunctionCall","src":"6087:44:92"},"variables":[{"name":"tail_1","nodeType":"YulTypedName","src":"6077:6:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6151:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6162:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6147:3:92"},"nodeType":"YulFunctionCall","src":"6147:18:92"},{"arguments":[{"name":"tail_1","nodeType":"YulIdentifier","src":"6171:6:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"6179:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6167:3:92"},"nodeType":"YulFunctionCall","src":"6167:22:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6140:6:92"},"nodeType":"YulFunctionCall","src":"6140:50:92"},"nodeType":"YulExpressionStatement","src":"6140:50:92"},{"nodeType":"YulAssignment","src":"6199:59:92","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"6243:6:92"},{"name":"tail_1","nodeType":"YulIdentifier","src":"6251:6:92"}],"functionName":{"name":"abi_encode_struct_PreparedSetupData","nodeType":"YulIdentifier","src":"6207:35:92"},"nodeType":"YulFunctionCall","src":"6207:51:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6199:4:92"}]}]},"name":"abi_encode_tuple_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$14216_memory_ptr__to_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$14216_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5994:9:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"6005:6:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"6013:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6024:4:92","type":""}],"src":"5814:450:92"},{"body":{"nodeType":"YulBlock","src":"6301:95:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6318:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6325:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"6330:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"6321:3:92"},"nodeType":"YulFunctionCall","src":"6321:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6311:6:92"},"nodeType":"YulFunctionCall","src":"6311:31:92"},"nodeType":"YulExpressionStatement","src":"6311:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6358:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"6361:4:92","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6351:6:92"},"nodeType":"YulFunctionCall","src":"6351:15:92"},"nodeType":"YulExpressionStatement","src":"6351:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6382:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6385:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6375:6:92"},"nodeType":"YulFunctionCall","src":"6375:15:92"},"nodeType":"YulExpressionStatement","src":"6375:15:92"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"6269:127:92"},{"body":{"nodeType":"YulBlock","src":"6497:899:92","statements":[{"body":{"nodeType":"YulBlock","src":"6543:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6552:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6555:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6545:6:92"},"nodeType":"YulFunctionCall","src":"6545:12:92"},"nodeType":"YulExpressionStatement","src":"6545:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"6518:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"6527:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6514:3:92"},"nodeType":"YulFunctionCall","src":"6514:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"6539:2:92","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6510:3:92"},"nodeType":"YulFunctionCall","src":"6510:32:92"},"nodeType":"YulIf","src":"6507:52:92"},{"nodeType":"YulAssignment","src":"6568:39:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6597:9:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"6578:18:92"},"nodeType":"YulFunctionCall","src":"6578:29:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"6568:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"6616:46:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6647:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6658:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6643:3:92"},"nodeType":"YulFunctionCall","src":"6643:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6630:12:92"},"nodeType":"YulFunctionCall","src":"6630:32:92"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"6620:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"6671:28:92","value":{"kind":"number","nodeType":"YulLiteral","src":"6681:18:92","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"6675:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"6726:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6735:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6738:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6728:6:92"},"nodeType":"YulFunctionCall","src":"6728:12:92"},"nodeType":"YulExpressionStatement","src":"6728:12:92"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"6714:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"6722:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6711:2:92"},"nodeType":"YulFunctionCall","src":"6711:14:92"},"nodeType":"YulIf","src":"6708:34:92"},{"nodeType":"YulVariableDeclaration","src":"6751:32:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6765:9:92"},{"name":"offset","nodeType":"YulIdentifier","src":"6776:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6761:3:92"},"nodeType":"YulFunctionCall","src":"6761:22:92"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"6755:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"6831:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6840:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6843:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6833:6:92"},"nodeType":"YulFunctionCall","src":"6833:12:92"},"nodeType":"YulExpressionStatement","src":"6833:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"6810:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"6814:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6806:3:92"},"nodeType":"YulFunctionCall","src":"6806:13:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"6821:7:92"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6802:3:92"},"nodeType":"YulFunctionCall","src":"6802:27:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"6795:6:92"},"nodeType":"YulFunctionCall","src":"6795:35:92"},"nodeType":"YulIf","src":"6792:55:92"},{"nodeType":"YulVariableDeclaration","src":"6856:26:92","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"6879:2:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6866:12:92"},"nodeType":"YulFunctionCall","src":"6866:16:92"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"6860:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"6905:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"6907:16:92"},"nodeType":"YulFunctionCall","src":"6907:18:92"},"nodeType":"YulExpressionStatement","src":"6907:18:92"}]},"condition":{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"6897:2:92"},{"name":"_1","nodeType":"YulIdentifier","src":"6901:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6894:2:92"},"nodeType":"YulFunctionCall","src":"6894:10:92"},"nodeType":"YulIf","src":"6891:36:92"},{"nodeType":"YulVariableDeclaration","src":"6936:17:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6950:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"6946:3:92"},"nodeType":"YulFunctionCall","src":"6946:7:92"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"6940:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"6962:23:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6982:2:92","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6976:5:92"},"nodeType":"YulFunctionCall","src":"6976:9:92"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"6966:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"6994:71:92","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7016:6:92"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"7040:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"7044:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7036:3:92"},"nodeType":"YulFunctionCall","src":"7036:13:92"},{"name":"_4","nodeType":"YulIdentifier","src":"7051:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7032:3:92"},"nodeType":"YulFunctionCall","src":"7032:22:92"},{"kind":"number","nodeType":"YulLiteral","src":"7056:2:92","type":"","value":"63"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7028:3:92"},"nodeType":"YulFunctionCall","src":"7028:31:92"},{"name":"_4","nodeType":"YulIdentifier","src":"7061:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7024:3:92"},"nodeType":"YulFunctionCall","src":"7024:40:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7012:3:92"},"nodeType":"YulFunctionCall","src":"7012:53:92"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"6998:10:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"7124:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"7126:16:92"},"nodeType":"YulFunctionCall","src":"7126:18:92"},"nodeType":"YulExpressionStatement","src":"7126:18:92"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"7083:10:92"},{"name":"_1","nodeType":"YulIdentifier","src":"7095:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"7080:2:92"},"nodeType":"YulFunctionCall","src":"7080:18:92"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"7103:10:92"},{"name":"memPtr","nodeType":"YulIdentifier","src":"7115:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"7100:2:92"},"nodeType":"YulFunctionCall","src":"7100:22:92"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"7077:2:92"},"nodeType":"YulFunctionCall","src":"7077:46:92"},"nodeType":"YulIf","src":"7074:72:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7162:2:92","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"7166:10:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7155:6:92"},"nodeType":"YulFunctionCall","src":"7155:22:92"},"nodeType":"YulExpressionStatement","src":"7155:22:92"},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7193:6:92"},{"name":"_3","nodeType":"YulIdentifier","src":"7201:2:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7186:6:92"},"nodeType":"YulFunctionCall","src":"7186:18:92"},"nodeType":"YulExpressionStatement","src":"7186:18:92"},{"body":{"nodeType":"YulBlock","src":"7250:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7259:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7262:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7252:6:92"},"nodeType":"YulFunctionCall","src":"7252:12:92"},"nodeType":"YulExpressionStatement","src":"7252:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"7227:2:92"},{"name":"_3","nodeType":"YulIdentifier","src":"7231:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7223:3:92"},"nodeType":"YulFunctionCall","src":"7223:11:92"},{"kind":"number","nodeType":"YulLiteral","src":"7236:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7219:3:92"},"nodeType":"YulFunctionCall","src":"7219:20:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"7241:7:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"7216:2:92"},"nodeType":"YulFunctionCall","src":"7216:33:92"},"nodeType":"YulIf","src":"7213:53:92"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7292:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"7300:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7288:3:92"},"nodeType":"YulFunctionCall","src":"7288:15:92"},{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"7309:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"7313:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7305:3:92"},"nodeType":"YulFunctionCall","src":"7305:11:92"},{"name":"_3","nodeType":"YulIdentifier","src":"7318:2:92"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"7275:12:92"},"nodeType":"YulFunctionCall","src":"7275:46:92"},"nodeType":"YulExpressionStatement","src":"7275:46:92"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7345:6:92"},{"name":"_3","nodeType":"YulIdentifier","src":"7353:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7341:3:92"},"nodeType":"YulFunctionCall","src":"7341:15:92"},{"kind":"number","nodeType":"YulLiteral","src":"7358:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7337:3:92"},"nodeType":"YulFunctionCall","src":"7337:24:92"},{"kind":"number","nodeType":"YulLiteral","src":"7363:1:92","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7330:6:92"},"nodeType":"YulFunctionCall","src":"7330:35:92"},"nodeType":"YulExpressionStatement","src":"7330:35:92"},{"nodeType":"YulAssignment","src":"7374:16:92","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"7384:6:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"7374:6:92"}]}]},"name":"abi_decode_tuple_t_addresst_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6455:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"6466:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"6478:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"6486:6:92","type":""}],"src":"6401:995:92"},{"body":{"nodeType":"YulBlock","src":"7602:209:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7619:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7634:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"7642:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7630:3:92"},"nodeType":"YulFunctionCall","src":"7630:55:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7612:6:92"},"nodeType":"YulFunctionCall","src":"7612:74:92"},"nodeType":"YulExpressionStatement","src":"7612:74:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7706:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7717:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7702:3:92"},"nodeType":"YulFunctionCall","src":"7702:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"7722:2:92","type":"","value":"64"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7695:6:92"},"nodeType":"YulFunctionCall","src":"7695:30:92"},"nodeType":"YulExpressionStatement","src":"7695:30:92"},{"nodeType":"YulAssignment","src":"7734:71:92","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"7778:6:92"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7790:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7801:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7786:3:92"},"nodeType":"YulFunctionCall","src":"7786:18:92"}],"functionName":{"name":"abi_encode_struct_PreparedSetupData","nodeType":"YulIdentifier","src":"7742:35:92"},"nodeType":"YulFunctionCall","src":"7742:63:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7734:4:92"}]}]},"name":"abi_encode_tuple_t_address_t_struct$_PreparedSetupData_$14216_memory_ptr__to_t_address_t_struct$_PreparedSetupData_$14216_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7563:9:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"7574:6:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"7582:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7593:4:92","type":""}],"src":"7401:410:92"},{"body":{"nodeType":"YulBlock","src":"7915:89:92","statements":[{"nodeType":"YulAssignment","src":"7925:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7937:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7948:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7933:3:92"},"nodeType":"YulFunctionCall","src":"7933:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7925:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7967:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7982:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"7990:6:92","type":"","value":"0xffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7978:3:92"},"nodeType":"YulFunctionCall","src":"7978:19:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7960:6:92"},"nodeType":"YulFunctionCall","src":"7960:38:92"},"nodeType":"YulExpressionStatement","src":"7960:38:92"}]},"name":"abi_encode_tuple_t_uint16__to_t_uint16__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7884:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"7895:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7906:4:92","type":""}],"src":"7816:188:92"},{"body":{"nodeType":"YulBlock","src":"8124:125:92","statements":[{"nodeType":"YulAssignment","src":"8134:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8146:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8157:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8142:3:92"},"nodeType":"YulFunctionCall","src":"8142:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"8134:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8176:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"8191:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"8199:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8187:3:92"},"nodeType":"YulFunctionCall","src":"8187:55:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8169:6:92"},"nodeType":"YulFunctionCall","src":"8169:74:92"},"nodeType":"YulExpressionStatement","src":"8169:74:92"}]},"name":"abi_encode_tuple_t_contract$_IDAO_$10865__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8093:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"8104:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"8115:4:92","type":""}],"src":"8009:240:92"},{"body":{"nodeType":"YulBlock","src":"8286:95:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8303:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8310:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"8315:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"8306:3:92"},"nodeType":"YulFunctionCall","src":"8306:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8296:6:92"},"nodeType":"YulFunctionCall","src":"8296:31:92"},"nodeType":"YulExpressionStatement","src":"8296:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8343:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"8346:4:92","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8336:6:92"},"nodeType":"YulFunctionCall","src":"8336:15:92"},"nodeType":"YulExpressionStatement","src":"8336:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8367:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8370:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8360:6:92"},"nodeType":"YulFunctionCall","src":"8360:15:92"},"nodeType":"YulExpressionStatement","src":"8360:15:92"}]},"name":"panic_error_0x11","nodeType":"YulFunctionDefinition","src":"8254:127:92"},{"body":{"nodeType":"YulBlock","src":"8435:159:92","statements":[{"nodeType":"YulVariableDeclaration","src":"8445:52:92","value":{"kind":"number","nodeType":"YulLiteral","src":"8455:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"8449:2:92","type":""}]},{"nodeType":"YulAssignment","src":"8506:35:92","value":{"arguments":[{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"8522:1:92"},{"name":"_1","nodeType":"YulIdentifier","src":"8525:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8518:3:92"},"nodeType":"YulFunctionCall","src":"8518:10:92"},{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"8534:1:92"},{"name":"_1","nodeType":"YulIdentifier","src":"8537:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8530:3:92"},"nodeType":"YulFunctionCall","src":"8530:10:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"8514:3:92"},"nodeType":"YulFunctionCall","src":"8514:27:92"},"variableNames":[{"name":"diff","nodeType":"YulIdentifier","src":"8506:4:92"}]},{"body":{"nodeType":"YulBlock","src":"8566:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"8568:16:92"},"nodeType":"YulFunctionCall","src":"8568:18:92"},"nodeType":"YulExpressionStatement","src":"8568:18:92"}]},"condition":{"arguments":[{"name":"diff","nodeType":"YulIdentifier","src":"8556:4:92"},{"name":"_1","nodeType":"YulIdentifier","src":"8562:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"8553:2:92"},"nodeType":"YulFunctionCall","src":"8553:12:92"},"nodeType":"YulIf","src":"8550:38:92"}]},"name":"checked_sub_t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"8417:1:92","type":""},{"name":"y","nodeType":"YulTypedName","src":"8420:1:92","type":""}],"returnVariables":[{"name":"diff","nodeType":"YulTypedName","src":"8426:4:92","type":""}],"src":"8386:208:92"},{"body":{"nodeType":"YulBlock","src":"8631:95:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8648:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8655:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"8660:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"8651:3:92"},"nodeType":"YulFunctionCall","src":"8651:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8641:6:92"},"nodeType":"YulFunctionCall","src":"8641:31:92"},"nodeType":"YulExpressionStatement","src":"8641:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8688:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"8691:4:92","type":"","value":"0x32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8681:6:92"},"nodeType":"YulFunctionCall","src":"8681:15:92"},"nodeType":"YulExpressionStatement","src":"8681:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8712:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8715:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8705:6:92"},"nodeType":"YulFunctionCall","src":"8705:15:92"},"nodeType":"YulExpressionStatement","src":"8705:15:92"}]},"name":"panic_error_0x32","nodeType":"YulFunctionDefinition","src":"8599:127:92"},{"body":{"nodeType":"YulBlock","src":"8778:187:92","statements":[{"nodeType":"YulVariableDeclaration","src":"8788:52:92","value":{"kind":"number","nodeType":"YulLiteral","src":"8798:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"8792:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"8849:29:92","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8868:5:92"},{"name":"_1","nodeType":"YulIdentifier","src":"8875:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8864:3:92"},"nodeType":"YulFunctionCall","src":"8864:14:92"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"8853:7:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"8906:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"8908:16:92"},"nodeType":"YulFunctionCall","src":"8908:18:92"},"nodeType":"YulExpressionStatement","src":"8908:18:92"}]},"condition":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"8893:7:92"},{"name":"_1","nodeType":"YulIdentifier","src":"8902:2:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"8890:2:92"},"nodeType":"YulFunctionCall","src":"8890:15:92"},"nodeType":"YulIf","src":"8887:41:92"},{"nodeType":"YulAssignment","src":"8937:22:92","value":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"8948:7:92"},{"kind":"number","nodeType":"YulLiteral","src":"8957:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8944:3:92"},"nodeType":"YulFunctionCall","src":"8944:15:92"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"8937:3:92"}]}]},"name":"increment_t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"8760:5:92","type":""}],"returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"8770:3:92","type":""}],"src":"8731:234:92"},{"body":{"nodeType":"YulBlock","src":"9117:190:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9134:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"9149:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"9157:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"9145:3:92"},"nodeType":"YulFunctionCall","src":"9145:55:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9127:6:92"},"nodeType":"YulFunctionCall","src":"9127:74:92"},"nodeType":"YulExpressionStatement","src":"9127:74:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9221:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9232:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9217:3:92"},"nodeType":"YulFunctionCall","src":"9217:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"9237:2:92","type":"","value":"64"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9210:6:92"},"nodeType":"YulFunctionCall","src":"9210:30:92"},"nodeType":"YulExpressionStatement","src":"9210:30:92"},{"nodeType":"YulAssignment","src":"9249:52:92","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"9274:6:92"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9286:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9297:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9282:3:92"},"nodeType":"YulFunctionCall","src":"9282:18:92"}],"functionName":{"name":"abi_encode_bytes","nodeType":"YulIdentifier","src":"9257:16:92"},"nodeType":"YulFunctionCall","src":"9257:44:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"9249:4:92"}]}]},"name":"abi_encode_tuple_t_address_t_bytes_memory_ptr__to_t_address_t_bytes_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9078:9:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"9089:6:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"9097:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"9108:4:92","type":""}],"src":"8970:337:92"}]},"contents":"{\n { }\n function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n if iszero(eq(value, and(value, shl(224, 0xffffffff)))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 96)\n let pos := headStart\n pos := headStart\n let srcPtr := value0\n let i := 0\n for { } lt(i, 0x03) { i := add(i, 1) }\n {\n mstore(pos, and(mload(srcPtr), 0xff))\n let _1 := 0x20\n pos := add(pos, _1)\n srcPtr := add(srcPtr, _1)\n }\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_decode_address(offset) -> value\n {\n value := calldataload(offset)\n if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n }\n function abi_decode_struct_SetupPayload_calldata(offset, end) -> value\n {\n if slt(sub(end, offset), 96) { revert(0, 0) }\n value := offset\n }\n function abi_decode_tuple_t_addresst_struct$_SetupPayload_$14224_calldata_ptr(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n let offset := calldataload(add(headStart, 32))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n value1 := abi_decode_struct_SetupPayload_calldata(add(headStart, offset), dataEnd)\n }\n function panic_error_0x21()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x21)\n revert(0, 0x24)\n }\n function abi_encodeUpdatedPos_struct_MultiTargetPermission(value0, pos) -> updatedPos\n {\n let _1 := mload(value0)\n if iszero(lt(_1, 3))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x21)\n revert(0, 0x24)\n }\n mstore(pos, _1)\n let memberValue0 := mload(add(value0, 0x20))\n let _2 := 0xffffffffffffffffffffffffffffffffffffffff\n mstore(add(pos, 0x20), and(memberValue0, _2))\n mstore(add(pos, 0x40), and(mload(add(value0, 0x40)), _2))\n mstore(add(pos, 0x60), and(mload(add(value0, 0x60)), _2))\n mstore(add(pos, 0x80), mload(add(value0, 0x80)))\n updatedPos := add(pos, 0xa0)\n }\n function abi_encode_tuple_t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_MultiTargetPermission_$13037_memory_ptr_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n let _1 := 32\n let tail_1 := add(headStart, _1)\n mstore(headStart, _1)\n let pos := tail_1\n let length := mload(value0)\n mstore(tail_1, length)\n pos := add(headStart, 64)\n let srcPtr := add(value0, _1)\n let i := 0\n for { } lt(i, length) { i := add(i, 1) }\n {\n pos := abi_encodeUpdatedPos_struct_MultiTargetPermission(mload(srcPtr), pos)\n srcPtr := add(srcPtr, _1)\n }\n tail := pos\n }\n function abi_decode_tuple_t_addresst_uint16t_struct$_SetupPayload_$14224_calldata_ptr(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n let value := calldataload(add(headStart, 32))\n if iszero(eq(value, and(value, 0xffff))) { revert(0, 0) }\n value1 := value\n let offset := calldataload(add(headStart, 64))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n value2 := abi_decode_struct_SetupPayload_calldata(add(headStart, offset), dataEnd)\n }\n function abi_encode_bytes(value, pos) -> end\n {\n let length := mload(value)\n mstore(pos, length)\n let i := 0\n for { } lt(i, length) { i := add(i, 0x20) }\n {\n let _1 := 0x20\n mstore(add(add(pos, i), _1), mload(add(add(value, i), _1)))\n }\n mstore(add(add(pos, length), 0x20), 0)\n end := add(add(pos, and(add(length, 31), not(31))), 0x20)\n }\n function abi_encode_struct_PreparedSetupData(value, pos) -> end\n {\n let tail := add(pos, 0x40)\n let memberValue0 := mload(value)\n mstore(pos, 0x40)\n let pos_1 := tail\n let length := mload(memberValue0)\n mstore(tail, length)\n pos_1 := add(pos, 96)\n let _1 := 0x20\n let srcPtr := add(memberValue0, _1)\n let i := 0\n for { } lt(i, length) { i := add(i, 1) }\n {\n mstore(pos_1, and(mload(srcPtr), 0xffffffffffffffffffffffffffffffffffffffff))\n pos_1 := add(pos_1, _1)\n srcPtr := add(srcPtr, _1)\n }\n let memberValue0_1 := mload(add(value, _1))\n mstore(add(pos, _1), sub(pos_1, pos))\n let pos_2 := pos_1\n let length_1 := mload(memberValue0_1)\n mstore(pos_1, length_1)\n pos_2 := add(pos_1, _1)\n let srcPtr_1 := add(memberValue0_1, _1)\n let i_1 := 0\n for { } lt(i_1, length_1) { i_1 := add(i_1, 1) }\n {\n pos_2 := abi_encodeUpdatedPos_struct_MultiTargetPermission(mload(srcPtr_1), pos_2)\n srcPtr_1 := add(srcPtr_1, _1)\n }\n end := pos_2\n }\n function abi_encode_tuple_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$14216_memory_ptr__to_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$14216_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n {\n mstore(headStart, 64)\n let tail_1 := abi_encode_bytes(value0, add(headStart, 64))\n mstore(add(headStart, 32), sub(tail_1, headStart))\n tail := abi_encode_struct_PreparedSetupData(value1, tail_1)\n }\n function panic_error_0x41()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function abi_decode_tuple_t_addresst_bytes_memory_ptr(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n let offset := calldataload(add(headStart, 32))\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n let _2 := add(headStart, offset)\n if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n let _3 := calldataload(_2)\n if gt(_3, _1) { panic_error_0x41() }\n let _4 := not(31)\n let memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n mstore(memPtr, _3)\n if gt(add(add(_2, _3), 32), dataEnd) { revert(0, 0) }\n calldatacopy(add(memPtr, 32), add(_2, 32), _3)\n mstore(add(add(memPtr, _3), 32), 0)\n value1 := memPtr\n }\n function abi_encode_tuple_t_address_t_struct$_PreparedSetupData_$14216_memory_ptr__to_t_address_t_struct$_PreparedSetupData_$14216_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n {\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n mstore(add(headStart, 32), 64)\n tail := abi_encode_struct_PreparedSetupData(value1, add(headStart, 64))\n }\n function abi_encode_tuple_t_uint16__to_t_uint16__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffff))\n }\n function abi_encode_tuple_t_contract$_IDAO_$10865__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function panic_error_0x11()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n function checked_sub_t_uint160(x, y) -> diff\n {\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n diff := sub(and(x, _1), and(y, _1))\n if gt(diff, _1) { panic_error_0x11() }\n }\n function panic_error_0x32()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n function increment_t_uint160(value) -> ret\n {\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n let value_1 := and(value, _1)\n if eq(value_1, _1) { panic_error_0x11() }\n ret := add(value_1, 1)\n }\n function abi_encode_tuple_t_address_t_bytes_memory_ptr__to_t_address_t_bytes_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n {\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n mstore(add(headStart, 32), 64)\n tail := abi_encode_bytes(value1, add(headStart, 64))\n }\n}","id":92,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{"14391":[{"length":32,"start":210},{"length":32,"start":894}]},"linkReferences":{},"object":"60806040523480156200001157600080fd5b50600436106200007b5760003560e01c80639cb0a12411620000565780639cb0a12414620000fd578063a8a9c29e1462000123578063f10832f1146200014a57600080fd5b806301ffc9a714620000805780632ae9c60014620000ac5780635c60da1b14620000c5575b600080fd5b6200009762000091366004620006a3565b62000171565b60405190151581526020015b60405180910390f35b620000b6620001c4565b604051620000a39190620006cf565b6040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152602001620000a3565b620001146200010e36600462000735565b620001f0565b604051620000a3919062000806565b6200013a6200013436600462000853565b62000209565b604051620000a3929190620009a2565b620001616200015b366004620009ea565b6200030f565b604051620000a392919062000ab8565b60006001600160e01b0319821663099718b560e41b1480620001a257506001600160e01b03198216621574e360e91b145b80620001be57506301ffc9a760e01b6001600160e01b03198316145b92915050565b620001ce62000677565b5060408051606081018252600181526004602082015260009181019190915290565b606062000202600060036001620003de565b9392505050565b606062000229604051806040016040528060608152602001606081525090565b8361ffff16600103620002985762000242600362000577565b815260405161ffff8516602482015260440160408051601f198184030181529190526020810180516001600160e01b03166239a8c560e41b17905291506200029261ffff851660036000620003de565b60208201525b8361ffff166002036200030757620002b1600362000577565b815260405161ffff8516602482015260440160408051601f198184030181529190526020810180516001600160e01b03166239a8c560e41b17905291506200030161ffff851660036000620003de565b60208201525b935093915050565b60006200032f604051806040016040528060608152602001606081525090565b6040516001600160a01b038516602482015260009060440160408051601f198184030181529190526020810180516001600160e01b031663189acdbd60e31b1790529050620003b081620003a07f000000000000000000000000000000000000000000000000000000000000000090565b6001600160a01b0316906200063b565b9250620003be600362000577565b8252620003cf6000600381620003de565b60208301525090939092509050565b6060826001600160a01b0316846001600160a01b031611156200041457604051633a4013cd60e21b815260040160405180910390fd5b62000420848462000afa565b6001600160a01b031667ffffffffffffffff811115620004445762000444620009d4565b6040519080825280602002602001820160405280156200049f57816020015b6040805160a081018252600080825260208083018290529282018190526060820181905260808201528252600019909201910181620004635790505b509050835b836001600160a01b0316816001600160a01b031610156200056f576040518060a00160405280846002811115620004df57620004df62000789565b81526001600160a01b038316602082018190526040820152600060608201527fa280eec51ab8e1bc4b6b0c1b7f1bde785761b787a49db404e3e9338ed9b016ef6080909101528262000532878462000afa565b6001600160a01b0316815181106200054e576200054e62000b24565b60200260200101819052508080620005669062000b3a565b915050620004a4565b509392505050565b6060816001600160a01b031667ffffffffffffffff8111156200059e576200059e620009d4565b604051908082528060200260200182016040528015620005c8578160200160208202803683370190505b50905060005b826001600160a01b0316816001600160a01b0316101562000635578082826001600160a01b03168151811062000608576200060862000b24565b6001600160a01b0390921660209283029190910190910152806200062c8162000b3a565b915050620005ce565b50919050565b600082826040516200064d9062000695565b6200065a92919062000b63565b604051809103906000f0801580156200056f573d6000803e3d6000fd5b60405180606001604052806003906020820280368337509192915050565b6106fe8062000b8883390190565b600060208284031215620006b657600080fd5b81356001600160e01b0319811681146200020257600080fd5b60608101818360005b6003811015620006fc57815160ff16835260209283019290910190600101620006d8565b50505092915050565b80356001600160a01b03811681146200071d57600080fd5b919050565b6000606082840312156200063557600080fd5b600080604083850312156200074957600080fd5b620007548362000705565b9150602083013567ffffffffffffffff8111156200077157600080fd5b6200077f8582860162000722565b9150509250929050565b634e487b7160e01b600052602160045260246000fd5b6000815160038110620007c257634e487b7160e01b600052602160045260246000fd5b8352506020818101516001600160a01b0390811691840191909152604080830151821690840152606080830151909116908301526080908101519082015260a00190565b6020808252825182820181905260009190848201906040850190845b818110156200084757620008388385516200079f565b93850193925060010162000822565b50909695505050505050565b6000806000606084860312156200086957600080fd5b620008748462000705565b9250602084013561ffff811681146200088c57600080fd5b9150604084013567ffffffffffffffff811115620008a957600080fd5b620008b78682870162000722565b9150509250925092565b6000815180845260005b81811015620008e957602081850181015186830182015201620008cb565b506000602082860101526020601f19601f83011685010191505092915050565b805160408084528151908401819052600091602091908201906060860190845b81811015620009505783516001600160a01b03168352928401929184019160010162000929565b50508483015186820387850152805180835290840192506000918401905b808310156200099757620009848285516200079f565b915084840193506001830192506200096e565b509695505050505050565b604081526000620009b76040830185620008c1565b8281036020840152620009cb818562000909565b95945050505050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215620009fe57600080fd5b62000a098362000705565b9150602083013567ffffffffffffffff8082111562000a2757600080fd5b818501915085601f83011262000a3c57600080fd5b81358181111562000a515762000a51620009d4565b604051601f8201601f19908116603f0116810190838211818310171562000a7c5762000a7c620009d4565b8160405282815288602084870101111562000a9657600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6001600160a01b038316815260406020820152600062000adc604083018462000909565b949350505050565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0382811682821603908082111562000b1d5762000b1d62000ae4565b5092915050565b634e487b7160e01b600052603260045260246000fd5b60006001600160a01b0380831681810362000b595762000b5962000ae4565b6001019392505050565b6001600160a01b038316815260406020820152600062000adc6040830184620008c156fe60806040526040516106fe3803806106fe83398101604081905261002291610319565b61002e82826000610035565b5050610436565b61003e8361006b565b60008251118061004b5750805b156100665761006483836100ab60201b6100291760201c565b505b505050565b610074816100d7565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606100d083836040518060600160405280602781526020016106d7602791396101a9565b9392505050565b6100ea8161022260201b6100551760201c565b6101515760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b806101887f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61023160201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6060600080856001600160a01b0316856040516101c691906103e7565b600060405180830381855af49150503d8060008114610201576040519150601f19603f3d011682016040523d82523d6000602084013e610206565b606091505b50909250905061021886838387610234565b9695505050505050565b6001600160a01b03163b151590565b90565b606083156102a357825160000361029c576001600160a01b0385163b61029c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610148565b50816102ad565b6102ad83836102b5565b949350505050565b8151156102c55781518083602001fd5b8060405162461bcd60e51b81526004016101489190610403565b634e487b7160e01b600052604160045260246000fd5b60005b838110156103105781810151838201526020016102f8565b50506000910152565b6000806040838503121561032c57600080fd5b82516001600160a01b038116811461034357600080fd5b60208401519092506001600160401b038082111561036057600080fd5b818501915085601f83011261037457600080fd5b815181811115610386576103866102df565b604051601f8201601f19908116603f011681019083821181831017156103ae576103ae6102df565b816040528281528860208487010111156103c757600080fd5b6103d88360208301602088016102f5565b80955050505050509250929050565b600082516103f98184602087016102f5565b9190910192915050565b60208152600082518060208401526104228160408501602087016102f5565b601f01601f19169190910160400192915050565b610292806104456000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b61009f565b565b606061004e838360405180606001604052806027815260200161025f602791396100c3565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e8080156100be573d6000f35b3d6000fd5b6060600080856001600160a01b0316856040516100e0919061020f565b600060405180830381855af49150503d806000811461011b576040519150601f19603f3d011682016040523d82523d6000602084013e610120565b606091505b50915091506101318683838761013b565b9695505050505050565b606083156101af5782516000036101a8576001600160a01b0385163b6101a85760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b50816101b9565b6101b983836101c1565b949350505050565b8151156101d15781518083602001fd5b8060405162461bcd60e51b815260040161019f919061022b565b60005b838110156102065781810151838201526020016101ee565b50506000910152565b600082516102218184602087016101eb565b9190910192915050565b602081526000825180602084015261024a8160408501602087016101eb565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH3 0x7B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9CB0A124 GT PUSH3 0x56 JUMPI DUP1 PUSH4 0x9CB0A124 EQ PUSH3 0xFD JUMPI DUP1 PUSH4 0xA8A9C29E EQ PUSH3 0x123 JUMPI DUP1 PUSH4 0xF10832F1 EQ PUSH3 0x14A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH3 0x80 JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH3 0xAC JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH3 0xC5 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x97 PUSH3 0x91 CALLDATASIZE PUSH1 0x4 PUSH3 0x6A3 JUMP JUMPDEST PUSH3 0x171 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0xB6 PUSH3 0x1C4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0xA3 SWAP2 SWAP1 PUSH3 0x6CF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH3 0xA3 JUMP JUMPDEST PUSH3 0x114 PUSH3 0x10E CALLDATASIZE PUSH1 0x4 PUSH3 0x735 JUMP JUMPDEST PUSH3 0x1F0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0xA3 SWAP2 SWAP1 PUSH3 0x806 JUMP JUMPDEST PUSH3 0x13A PUSH3 0x134 CALLDATASIZE PUSH1 0x4 PUSH3 0x853 JUMP JUMPDEST PUSH3 0x209 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0xA3 SWAP3 SWAP2 SWAP1 PUSH3 0x9A2 JUMP JUMPDEST PUSH3 0x161 PUSH3 0x15B CALLDATASIZE PUSH1 0x4 PUSH3 0x9EA JUMP JUMPDEST PUSH3 0x30F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0xA3 SWAP3 SWAP2 SWAP1 PUSH3 0xAB8 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x99718B5 PUSH1 0xE4 SHL EQ DUP1 PUSH3 0x1A2 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH3 0x1BE JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH3 0x1CE PUSH3 0x677 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH3 0x202 PUSH1 0x0 PUSH1 0x3 PUSH1 0x1 PUSH3 0x3DE JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH3 0x229 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST DUP4 PUSH2 0xFFFF AND PUSH1 0x1 SUB PUSH3 0x298 JUMPI PUSH3 0x242 PUSH1 0x3 PUSH3 0x577 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x40 MLOAD PUSH2 0xFFFF DUP6 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH3 0x39A8C5 PUSH1 0xE4 SHL OR SWAP1 MSTORE SWAP2 POP PUSH3 0x292 PUSH2 0xFFFF DUP6 AND PUSH1 0x3 PUSH1 0x0 PUSH3 0x3DE JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE JUMPDEST DUP4 PUSH2 0xFFFF AND PUSH1 0x2 SUB PUSH3 0x307 JUMPI PUSH3 0x2B1 PUSH1 0x3 PUSH3 0x577 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x40 MLOAD PUSH2 0xFFFF DUP6 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH3 0x39A8C5 PUSH1 0xE4 SHL OR SWAP1 MSTORE SWAP2 POP PUSH3 0x301 PUSH2 0xFFFF DUP6 AND PUSH1 0x3 PUSH1 0x0 PUSH3 0x3DE JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE JUMPDEST SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x32F PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 PUSH1 0x44 ADD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x189ACDBD PUSH1 0xE3 SHL OR SWAP1 MSTORE SWAP1 POP PUSH3 0x3B0 DUP2 PUSH3 0x3A0 PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH3 0x63B JUMP JUMPDEST SWAP3 POP PUSH3 0x3BE PUSH1 0x3 PUSH3 0x577 JUMP JUMPDEST DUP3 MSTORE PUSH3 0x3CF PUSH1 0x0 PUSH1 0x3 DUP2 PUSH3 0x3DE JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP SWAP1 SWAP4 SWAP1 SWAP3 POP SWAP1 POP JUMP JUMPDEST PUSH1 0x60 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH3 0x414 JUMPI PUSH1 0x40 MLOAD PUSH4 0x3A4013CD PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0x420 DUP5 DUP5 PUSH3 0xAFA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x444 JUMPI PUSH3 0x444 PUSH3 0x9D4 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH3 0x49F JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD DUP3 SWAP1 MSTORE SWAP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 DUP3 ADD MSTORE DUP3 MSTORE PUSH1 0x0 NOT SWAP1 SWAP3 ADD SWAP2 ADD DUP2 PUSH3 0x463 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP DUP4 JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT ISZERO PUSH3 0x56F JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 DUP5 PUSH1 0x2 DUP2 GT ISZERO PUSH3 0x4DF JUMPI PUSH3 0x4DF PUSH3 0x789 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x60 DUP3 ADD MSTORE PUSH32 0xA280EEC51AB8E1BC4B6B0C1B7F1BDE785761B787A49DB404E3E9338ED9B016EF PUSH1 0x80 SWAP1 SWAP2 ADD MSTORE DUP3 PUSH3 0x532 DUP8 DUP5 PUSH3 0xAFA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MLOAD DUP2 LT PUSH3 0x54E JUMPI PUSH3 0x54E PUSH3 0xB24 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP DUP1 DUP1 PUSH3 0x566 SWAP1 PUSH3 0xB3A JUMP JUMPDEST SWAP2 POP POP PUSH3 0x4A4 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x59E JUMPI PUSH3 0x59E PUSH3 0x9D4 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH3 0x5C8 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT ISZERO PUSH3 0x635 JUMPI DUP1 DUP3 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MLOAD DUP2 LT PUSH3 0x608 JUMPI PUSH3 0x608 PUSH3 0xB24 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE DUP1 PUSH3 0x62C DUP2 PUSH3 0xB3A JUMP JUMPDEST SWAP2 POP POP PUSH3 0x5CE JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH3 0x64D SWAP1 PUSH3 0x695 JUMP JUMPDEST PUSH3 0x65A SWAP3 SWAP2 SWAP1 PUSH3 0xB63 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH3 0x56F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x6FE DUP1 PUSH3 0xB88 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x6B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH3 0x202 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH3 0x6FC JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH3 0x6D8 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x71D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x635 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x749 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x754 DUP4 PUSH3 0x705 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x771 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x77F DUP6 DUP3 DUP7 ADD PUSH3 0x722 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP2 MLOAD PUSH1 0x3 DUP2 LT PUSH3 0x7C2 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP4 MSTORE POP PUSH1 0x20 DUP2 DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP1 DUP4 ADD MLOAD DUP3 AND SWAP1 DUP5 ADD MSTORE PUSH1 0x60 DUP1 DUP4 ADD MLOAD SWAP1 SWAP2 AND SWAP1 DUP4 ADD MSTORE PUSH1 0x80 SWAP1 DUP2 ADD MLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x847 JUMPI PUSH3 0x838 DUP4 DUP6 MLOAD PUSH3 0x79F JUMP JUMPDEST SWAP4 DUP6 ADD SWAP4 SWAP3 POP PUSH1 0x1 ADD PUSH3 0x822 JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH3 0x869 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x874 DUP5 PUSH3 0x705 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH3 0x88C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x8A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x8B7 DUP7 DUP3 DUP8 ADD PUSH3 0x722 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x8E9 JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD DUP3 ADD MSTORE ADD PUSH3 0x8CB JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x20 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x20 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x40 DUP1 DUP5 MSTORE DUP2 MLOAD SWAP1 DUP5 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x20 SWAP2 SWAP1 DUP3 ADD SWAP1 PUSH1 0x60 DUP7 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x950 JUMPI DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH3 0x929 JUMP JUMPDEST POP POP DUP5 DUP4 ADD MLOAD DUP7 DUP3 SUB DUP8 DUP6 ADD MSTORE DUP1 MLOAD DUP1 DUP4 MSTORE SWAP1 DUP5 ADD SWAP3 POP PUSH1 0x0 SWAP2 DUP5 ADD SWAP1 JUMPDEST DUP1 DUP4 LT ISZERO PUSH3 0x997 JUMPI PUSH3 0x984 DUP3 DUP6 MLOAD PUSH3 0x79F JUMP JUMPDEST SWAP2 POP DUP5 DUP5 ADD SWAP4 POP PUSH1 0x1 DUP4 ADD SWAP3 POP PUSH3 0x96E JUMP JUMPDEST POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 PUSH3 0x9B7 PUSH1 0x40 DUP4 ADD DUP6 PUSH3 0x8C1 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 ADD MSTORE PUSH3 0x9CB DUP2 DUP6 PUSH3 0x909 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x9FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0xA09 DUP4 PUSH3 0x705 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH3 0xA27 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH3 0xA3C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH3 0xA51 JUMPI PUSH3 0xA51 PUSH3 0x9D4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH3 0xA7C JUMPI PUSH3 0xA7C PUSH3 0x9D4 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH3 0xA96 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH3 0xADC PUSH1 0x40 DUP4 ADD DUP5 PUSH3 0x909 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND DUP3 DUP3 AND SUB SWAP1 DUP1 DUP3 GT ISZERO PUSH3 0xB1D JUMPI PUSH3 0xB1D PUSH3 0xAE4 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND DUP2 DUP2 SUB PUSH3 0xB59 JUMPI PUSH3 0xB59 PUSH3 0xAE4 JUMP JUMPDEST PUSH1 0x1 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH3 0xADC PUSH1 0x40 DUP4 ADD DUP5 PUSH3 0x8C1 JUMP INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH2 0x6FE CODESIZE SUB DUP1 PUSH2 0x6FE DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x22 SWAP2 PUSH2 0x319 JUMP JUMPDEST PUSH2 0x2E DUP3 DUP3 PUSH1 0x0 PUSH2 0x35 JUMP JUMPDEST POP POP PUSH2 0x436 JUMP JUMPDEST PUSH2 0x3E DUP4 PUSH2 0x6B JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD GT DUP1 PUSH2 0x4B JUMPI POP DUP1 JUMPDEST ISZERO PUSH2 0x66 JUMPI PUSH2 0x64 DUP4 DUP4 PUSH2 0xAB PUSH1 0x20 SHL PUSH2 0x29 OR PUSH1 0x20 SHR JUMP JUMPDEST POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x74 DUP2 PUSH2 0xD7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xD0 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x6D7 PUSH1 0x27 SWAP2 CODECOPY PUSH2 0x1A9 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xEA DUP2 PUSH2 0x222 PUSH1 0x20 SHL PUSH2 0x55 OR PUSH1 0x20 SHR JUMP JUMPDEST PUSH2 0x151 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313936373A206E657720696D706C656D656E746174696F6E206973206E PUSH1 0x44 DUP3 ADD MSTORE PUSH13 0x1BDD08184818DBDB9D1C9858DD PUSH1 0x9A SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH2 0x188 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC PUSH1 0x0 SHL PUSH2 0x231 PUSH1 0x20 SHL PUSH2 0x64 OR PUSH1 0x20 SHR JUMP JUMPDEST DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0x1C6 SWAP2 SWAP1 PUSH2 0x3E7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x201 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x206 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x218 DUP7 DUP4 DUP4 DUP8 PUSH2 0x234 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x2A3 JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0x29C JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0x29C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x148 JUMP JUMPDEST POP DUP2 PUSH2 0x2AD JUMP JUMPDEST PUSH2 0x2AD DUP4 DUP4 PUSH2 0x2B5 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x2C5 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x148 SWAP2 SWAP1 PUSH2 0x403 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x310 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2F8 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x32C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x343 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x360 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x374 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x386 JUMPI PUSH2 0x386 PUSH2 0x2DF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x3AE JUMPI PUSH2 0x3AE PUSH2 0x2DF JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x3C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3D8 DUP4 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x2F5 JUMP JUMPDEST DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x3F9 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x2F5 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x422 DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x2F5 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x292 DUP1 PUSH2 0x445 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLDATASIZE PUSH2 0x13 JUMPI PUSH2 0x11 PUSH2 0x17 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x11 JUMPDEST PUSH2 0x27 PUSH2 0x22 PUSH2 0x67 JUMP JUMPDEST PUSH2 0x9F JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x60 PUSH2 0x4E DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x25F PUSH1 0x27 SWAP2 CODECOPY PUSH2 0xC3 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9A PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 DUP1 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE PUSH1 0x0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH2 0xBE JUMPI RETURNDATASIZE PUSH1 0x0 RETURN JUMPDEST RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0xE0 SWAP2 SWAP1 PUSH2 0x20F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x11B JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x120 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x131 DUP7 DUP4 DUP4 DUP8 PUSH2 0x13B JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x1AF JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0x1A8 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0x1A8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP DUP2 PUSH2 0x1B9 JUMP JUMPDEST PUSH2 0x1B9 DUP4 DUP4 PUSH2 0x1C1 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x1D1 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x19F SWAP2 SWAP1 PUSH2 0x22B JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x206 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1EE JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x221 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x1EB JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x24A DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x1EB JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A164 PUSH20 0x6F6C6343000811000A416464726573733A206C6F PUSH24 0x2D6C6576656C2064656C65676174652063616C6C20666169 PUSH13 0x6564A164736F6C634300081100 EXP ","sourceMap":"4631:2543:54:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1852:293:83;;;;;;:::i;:::-;;:::i;:::-;;;470:14:92;;463:22;445:41;;433:2;418:18;1852:293:83;;;;;;;;631:98:90;;;:::i;:::-;;;;;;;:::i;2184:94:83:-;;;-1:-1:-1;;;;;2257:14:83;1167:55:92;1149:74;;1137:2;1122:18;2184:94:83;1003:226:92;6873:299:54;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;5528:1306::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;4914:575::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;1852:293:83:-;1938:4;-1:-1:-1;;;;;;1973:46:83;;-1:-1:-1;;;1973:46:83;;:112;;-1:-1:-1;;;;;;;2035:50:83;;-1:-1:-1;;;2035:50:83;1973:112;:165;;;-1:-1:-1;;;;;;;;;;937:40:38;;;2101:37:83;1954:184;1852:293;-1:-1:-1;;1852:293:83:o;631:98:90:-;679:15;;:::i;:::-;-1:-1:-1;706:16:90;;;;;;;;714:1;706:16;;717:1;706:16;;;;-1:-1:-1;706:16:90;;;;;;;;631:98::o;6873:299:54:-;6995:56;7103:62;7119:1;4780;7134:30;7103:15;:62::i;:::-;7089:76;6873:299;-1:-1:-1;;;6873:299:54:o;5528:1306::-;5710:21;5733:42;-1:-1:-1;;;;;;;;;;;;;;;;;;;5733:42:54;5853:10;:15;;5867:1;5853:15;5849:562;;5912:23;4780:1;5912:11;:23::i;:::-;5884:51;;5960:76;;7990:6:92;7978:19;;5960:76:54;;;7960:38:92;7933:18;;5960:76:54;;;-1:-1:-1;;5960:76:54;;;;;;;;;;;;;;-1:-1:-1;;;;;5960:76:54;-1:-1:-1;;;5960:76:54;;;;-1:-1:-1;6082:132:54;;;;4780:1;-1:-1:-1;6082:15:54;:132::i;:::-;6050:29;;;:164;5849:562;6456:10;:15;;6470:1;6456:15;6452:376;;6515:23;4780:1;6515:11;:23::i;:::-;6487:51;;6563:76;;7990:6:92;7978:19;;6563:76:54;;;7960:38:92;7933:18;;6563:76:54;;;-1:-1:-1;;6563:76:54;;;;;;;;;;;;;;-1:-1:-1;;;;;6563:76:54;-1:-1:-1;;;6563:76:54;;;;-1:-1:-1;6685:132:54;;;;4780:1;-1:-1:-1;6685:15:54;:132::i;:::-;6653:29;;;:164;6452:376;5528:1306;;;;;;:::o;4914:575::-;5011:14;5027:42;-1:-1:-1;;;;;;;;;;;;;;;;;;;5027:42:54;5105:106;;-1:-1:-1;;;;;1167:55:92;;5105:106:54;;;1149:74:92;5081:21:54;;1122:18:92;;5105:106:54;;;-1:-1:-1;;5105:106:54;;;;;;;;;;;;;;-1:-1:-1;;;;;5105:106:54;-1:-1:-1;;;5105:106:54;;;;-1:-1:-1;5230:42:54;5105:106;5230:16;2257:14:83;;2184:94;5230:16:54;-1:-1:-1;;;;;5230:32:54;;;:42::i;:::-;5221:51;-1:-1:-1;5310:23:54;4780:1;5310:11;:23::i;:::-;5282:51;;5375:107;5282:25;4780:1;5282:25;5375:15;:107::i;:::-;5343:29;;;:139;-1:-1:-1;4914:575:54;;5343:17;;-1:-1:-1;4914:575:54;-1:-1:-1;4914:575:54:o;580:666:52:-;699:56;780:8;-1:-1:-1;;;;;767:21:52;:10;-1:-1:-1;;;;;767:21:52;;763:53;;;797:19;;-1:-1:-1;;;797:19:52;;;;;;;;;;;763:53;879:21;890:10;879:8;:21;:::i;:::-;-1:-1:-1;;;;;837:64:52;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;837:64:52;;-1:-1:-1;;837:64:52;;;;;;;;;;;-1:-1:-1;823:78:52;-1:-1:-1;925:10:52;908:336;941:8;-1:-1:-1;;;;;937:12:52;:1;-1:-1:-1;;;;;937:12:52;;908:336;;;996:241;;;;;;;;1057:2;996:241;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;996:241:52;;;;;;;;;;;;-1:-1:-1;996:241:52;;;;1198:28;996:241;;;;;966:11;978:14;982:10;1088:1;978:14;:::i;:::-;-1:-1:-1;;;;;966:27:52;;;;;;;;;:::i;:::-;;;;;;:271;;;;951:3;;;;;:::i;:::-;;;;908:336;;;;580:666;;;;;:::o;1529:191::-;1577:24;1633:3;-1:-1:-1;;;;;1619:18:52;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1619:18:52;;1609:28;;1649:9;1644:74;1668:3;-1:-1:-1;;;;;1664:7:52;:1;-1:-1:-1;;;;;1664:7:52;;1644:74;;;1709:1;1688:7;1696:1;-1:-1:-1;;;;;1688:10:52;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1688:23:52;;;:10;;;;;;;;;;;:23;1673:3;;;;:::i;:::-;;;;1644:74;;;;1529:191;;;:::o;1415:222:85:-;1524:17;1599:6;1614:13;1573:56;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::o;14:286:92:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:92;;209:43;;199:71;;266:1;263;256:12;497:501;673:2;658:18;;662:9;753:6;631:4;787:205;801:4;798:1;795:11;787:205;;;864:13;;879:4;860:24;848:37;;908:4;932:12;;;;967:15;;;;821:1;814:9;787:205;;;791:3;;;497:501;;;;:::o;1234:196::-;1302:20;;-1:-1:-1;;;;;1351:54:92;;1341:65;;1331:93;;1420:1;1417;1410:12;1331:93;1234:196;;;:::o;1435:160::-;1500:5;1545:2;1536:6;1531:3;1527:16;1523:25;1520:45;;;1561:1;1558;1551:12;1600:441;1701:6;1709;1762:2;1750:9;1741:7;1737:23;1733:32;1730:52;;;1778:1;1775;1768:12;1730:52;1801:29;1820:9;1801:29;:::i;:::-;1791:39;;1881:2;1870:9;1866:18;1853:32;1908:18;1900:6;1897:30;1894:50;;;1940:1;1937;1930:12;1894:50;1963:72;2027:7;2018:6;2007:9;2003:22;1963:72;:::i;:::-;1953:82;;;1600:441;;;;;:::o;2046:127::-;2107:10;2102:3;2098:20;2095:1;2088:31;2138:4;2135:1;2128:15;2162:4;2159:1;2152:15;2178:696;2253:10;2294:6;2288:13;2327:1;2323:2;2320:9;2310:140;;2372:10;2367:3;2363:20;2360:1;2353:31;2407:4;2404:1;2397:15;2435:4;2432:1;2425:15;2310:140;2459:15;;-1:-1:-1;2521:4:92;2509:17;;;2503:24;-1:-1:-1;;;;;2620:21:92;;;2604:14;;;2597:45;;;;2696:4;2684:17;;;2678:24;2674:33;;2658:14;;;2651:57;2762:4;2750:17;;;2744:24;2740:33;;;2724:14;;;2717:57;2824:4;2812:17;;;2806:24;2790:14;;;2783:48;2863:4;2854:14;;2178:696::o;2879:730::-;3130:2;3182:21;;;3252:13;;3155:18;;;3274:22;;;3101:4;;3130:2;3353:15;;;;3327:2;3312:18;;;3101:4;3396:187;3410:6;3407:1;3404:13;3396:187;;;3466:69;3531:3;3522:6;3516:13;3466:69;:::i;:::-;3558:15;;;;3459:76;-1:-1:-1;3432:1:92;3425:9;3396:187;;;-1:-1:-1;3600:3:92;;2879:730;-1:-1:-1;;;;;;2879:730:92:o;3614:601::-;3723:6;3731;3739;3792:2;3780:9;3771:7;3767:23;3763:32;3760:52;;;3808:1;3805;3798:12;3760:52;3831:29;3850:9;3831:29;:::i;:::-;3821:39;;3910:2;3899:9;3895:18;3882:32;3954:6;3947:5;3943:18;3936:5;3933:29;3923:57;;3976:1;3973;3966:12;3923:57;3999:5;-1:-1:-1;4055:2:92;4040:18;;4027:32;4082:18;4071:30;;4068:50;;;4114:1;4111;4104:12;4068:50;4137:72;4201:7;4192:6;4181:9;4177:22;4137:72;:::i;:::-;4127:82;;;3614:601;;;;;:::o;4220:422::-;4261:3;4299:5;4293:12;4326:6;4321:3;4314:19;4351:1;4361:162;4375:6;4372:1;4369:13;4361:162;;;4437:4;4493:13;;;4489:22;;4483:29;4465:11;;;4461:20;;4454:59;4390:12;4361:162;;;4365:3;4568:1;4561:4;4552:6;4547:3;4543:16;4539:27;4532:38;4631:4;4624:2;4620:7;4615:2;4607:6;4603:15;4599:29;4594:3;4590:39;4586:50;4579:57;;;4220:422;;;;:::o;4647:1162::-;4780:12;;4746:4;4801:17;;;4867:19;;4737:14;;;4895:20;;;4707:3;;4964:4;;4991:21;;;;4942:2;4933:12;;;4707:3;5040:224;5054:6;5051:1;5048:13;5040:224;;;5121:13;;-1:-1:-1;;;;;5117:62:92;5103:77;;5239:15;;;;5202:14;;;;5076:1;5069:9;5040:224;;;-1:-1:-1;;5301:14:92;;;5295:21;5346:15;;;5332:12;;;5325:37;5414:21;;5444:23;;;5524;;;;-1:-1:-1;5567:1:92;;5485:14;;;5577:205;5593:8;5588:3;5585:17;5577:205;;;5657:73;5724:5;5713:8;5707:15;5657:73;:::i;:::-;5648:82;;5769:2;5759:8;5755:17;5743:29;;5621:1;5616:3;5612:11;5605:18;;5577:205;;;-1:-1:-1;5798:5:92;4647:1162;-1:-1:-1;;;;;;4647:1162:92:o;5814:450::-;6061:2;6050:9;6043:21;6024:4;6087:44;6127:2;6116:9;6112:18;6104:6;6087:44;:::i;:::-;6179:9;6171:6;6167:22;6162:2;6151:9;6147:18;6140:50;6207:51;6251:6;6243;6207:51;:::i;:::-;6199:59;5814:450;-1:-1:-1;;;;;5814:450:92:o;6269:127::-;6330:10;6325:3;6321:20;6318:1;6311:31;6361:4;6358:1;6351:15;6385:4;6382:1;6375:15;6401:995;6478:6;6486;6539:2;6527:9;6518:7;6514:23;6510:32;6507:52;;;6555:1;6552;6545:12;6507:52;6578:29;6597:9;6578:29;:::i;:::-;6568:39;;6658:2;6647:9;6643:18;6630:32;6681:18;6722:2;6714:6;6711:14;6708:34;;;6738:1;6735;6728:12;6708:34;6776:6;6765:9;6761:22;6751:32;;6821:7;6814:4;6810:2;6806:13;6802:27;6792:55;;6843:1;6840;6833:12;6792:55;6879:2;6866:16;6901:2;6897;6894:10;6891:36;;;6907:18;;:::i;:::-;6982:2;6976:9;6950:2;7036:13;;-1:-1:-1;;7032:22:92;;;7056:2;7028:31;7024:40;7012:53;;;7080:18;;;7100:22;;;7077:46;7074:72;;;7126:18;;:::i;:::-;7166:10;7162:2;7155:22;7201:2;7193:6;7186:18;7241:7;7236:2;7231;7227;7223:11;7219:20;7216:33;7213:53;;;7262:1;7259;7252:12;7213:53;7318:2;7313;7309;7305:11;7300:2;7292:6;7288:15;7275:46;7363:1;7358:2;7353;7345:6;7341:15;7337:24;7330:35;7384:6;7374:16;;;;;;;6401:995;;;;;:::o;7401:410::-;-1:-1:-1;;;;;7634:6:92;7630:55;7619:9;7612:74;7722:2;7717;7706:9;7702:18;7695:30;7593:4;7742:63;7801:2;7790:9;7786:18;7778:6;7742:63;:::i;:::-;7734:71;7401:410;-1:-1:-1;;;;7401:410:92:o;8254:127::-;8315:10;8310:3;8306:20;8303:1;8296:31;8346:4;8343:1;8336:15;8370:4;8367:1;8360:15;8386:208;-1:-1:-1;;;;;8530:10:92;;;8518;;;8514:27;;8553:12;;;8550:38;;;8568:18;;:::i;:::-;8550:38;8386:208;;;;:::o;8599:127::-;8660:10;8655:3;8651:20;8648:1;8641:31;8691:4;8688:1;8681:15;8715:4;8712:1;8705:15;8731:234;8770:3;-1:-1:-1;;;;;8875:2:92;8868:5;8864:14;8902:2;8893:7;8890:15;8887:41;;8908:18;;:::i;:::-;8957:1;8944:15;;8731:234;-1:-1:-1;;;8731:234:92:o;8970:337::-;-1:-1:-1;;;;;9149:6:92;9145:55;9134:9;9127:74;9237:2;9232;9221:9;9217:18;9210:30;9108:4;9257:44;9297:2;9286:9;9282:18;9274:6;9257:44;:::i"},"gasEstimates":{"creation":{"codeDepositCost":"950800","executionCost":"infinite","totalCost":"infinite"},"external":{"implementation()":"infinite","prepareInstallation(address,bytes)":"infinite","prepareUninstallation(address,(address,address[],bytes))":"infinite","prepareUpdate(address,uint16,(address,address[],bytes))":"infinite","protocolVersion()":"infinite","supportsInterface(bytes4)":"482"}},"methodIdentifiers":{"implementation()":"5c60da1b","prepareInstallation(address,bytes)":"f10832f1","prepareUninstallation(address,(address,address[],bytes))":"9cb0a124","prepareUpdate(address,uint16,(address,address[],bytes))":"a8a9c29e","protocolVersion()":"2ae9c600","supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ConflictingValues\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"fromBuild\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"thisBuild\",\"type\":\"uint16\"}],\"name\":\"InvalidUpdatePath\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_dao\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"prepareInstallation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"plugin\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address[]\",\"name\":\"helpers\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"enum PermissionLib.Operation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"condition\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PermissionLib.MultiTargetPermission[]\",\"name\":\"permissions\",\"type\":\"tuple[]\"}],\"internalType\":\"struct IPluginSetup.PreparedSetupData\",\"name\":\"preparedSetupData\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_dao\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"plugin\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"currentHelpers\",\"type\":\"address[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IPluginSetup.SetupPayload\",\"name\":\"_payload\",\"type\":\"tuple\"}],\"name\":\"prepareUninstallation\",\"outputs\":[{\"components\":[{\"internalType\":\"enum PermissionLib.Operation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"condition\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PermissionLib.MultiTargetPermission[]\",\"name\":\"permissions\",\"type\":\"tuple[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_dao\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"_fromBuild\",\"type\":\"uint16\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"plugin\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"currentHelpers\",\"type\":\"address[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IPluginSetup.SetupPayload\",\"name\":\"_payload\",\"type\":\"tuple\"}],\"name\":\"prepareUpdate\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"initData\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address[]\",\"name\":\"helpers\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"enum PermissionLib.Operation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"condition\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PermissionLib.MultiTargetPermission[]\",\"name\":\"permissions\",\"type\":\"tuple[]\"}],\"internalType\":\"struct IPluginSetup.PreparedSetupData\",\"name\":\"preparedSetupData\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"protocolVersion\",\"outputs\":[{\"internalType\":\"uint8[3]\",\"name\":\"\",\"type\":\"uint8[3]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"InvalidUpdatePath(uint16,uint16)\":[{\"params\":{\"fromBuild\":\"The build number to update from.\",\"thisBuild\":\"The build number of this setup to update to.\"}}]},\"kind\":\"dev\",\"methods\":{\"implementation()\":{\"details\":\"The implementation can be instantiated via the `new` keyword, cloned via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)), or proxied via the UUPS proxy pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\",\"returns\":{\"_0\":\"The address of the plugin implementation contract.\"}},\"prepareInstallation(address,bytes)\":{\"params\":{\"_dao\":\"The address of the installing DAO.\",\"_data\":\"The bytes-encoded data containing the input parameters for the installation as specified in the plugin's build metadata JSON file.\"},\"returns\":{\"plugin\":\"The address of the `Plugin` contract being prepared for installation.\",\"preparedSetupData\":\"The deployed plugin's relevant data which consists of helpers and permissions.\"}},\"prepareUninstallation(address,(address,address[],bytes))\":{\"params\":{\"_dao\":\"The address of the uninstalling DAO.\",\"_payload\":\"The relevant data necessary for the `prepareUninstallation`. See above.\"},\"returns\":{\"permissions\":\"The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the uninstalling DAO.\"}},\"prepareUpdate(address,uint16,(address,address[],bytes))\":{\"params\":{\"_dao\":\"The address of the updating DAO.\",\"_fromBuild\":\"The build number of the plugin to update from.\",\"_payload\":\"The relevant data necessary for the `prepareUpdate`. See above.\"},\"returns\":{\"initData\":\"The initialization data to be passed to upgradeable contracts when the update is applied in the `PluginSetupProcessor`.\",\"preparedSetupData\":\"The deployed plugin's relevant data which consists of helpers and permissions.\"}},\"protocolVersion()\":{\"details\":\"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\",\"returns\":{\"_0\":\"Returns the semantic Aragon OSx protocol version number.\"}},\"supportsInterface(bytes4)\":{\"params\":{\"_interfaceId\":\"The ID of the interface.\"},\"returns\":{\"_0\":\"Returns `true` if the interface is supported.\"}}},\"version\":1},\"userdoc\":{\"errors\":{\"InvalidUpdatePath(uint16,uint16)\":[{\"notice\":\"Thrown when an update path is not available, for example, if this is the initial build.\"}]},\"kind\":\"user\",\"methods\":{\"implementation()\":{\"notice\":\"Returns the plugin implementation address.\"},\"prepareInstallation(address,bytes)\":{\"notice\":\"Prepares the installation of a plugin.\"},\"prepareUninstallation(address,(address,address[],bytes))\":{\"notice\":\"Prepares the uninstallation of a plugin.\"},\"prepareUpdate(address,uint16,(address,address[],bytes))\":{\"notice\":\"Prepares the update of a plugin.\"},\"protocolVersion()\":{\"notice\":\"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Checks if this or the parent contract supports an interface by its ID.\"}},\"notice\":\"A mock plugin setup of an upgradeable plugin to be deployed via the UUPS pattern. v1.3 (Release 1, Build 3)\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/mocks/plugin/PluginUUPSUpgradeableSetupMock.sol\":\"PluginUUPSUpgradeableSetupMockBuild3\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/interfaces/IERC1967Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (interfaces/IERC1967.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\\n *\\n * _Available since v4.8.3._\\n */\\ninterface IERC1967Upgradeable {\\n /**\\n * @dev Emitted when the implementation is upgraded.\\n */\\n event Upgraded(address indexed implementation);\\n\\n /**\\n * @dev Emitted when the admin account has changed.\\n */\\n event AdminChanged(address previousAdmin, address newAdmin);\\n\\n /**\\n * @dev Emitted when the beacon is changed.\\n */\\n event BeaconUpgraded(address indexed beacon);\\n}\\n\",\"keccak256\":\"0x47d6e06872b12e72c79d1b5eb55842f860b5fb1207b2317c2358d2766b950a7b\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822ProxiableUpgradeable {\\n /**\\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n * address.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy.\\n */\\n function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../beacon/IBeaconUpgradeable.sol\\\";\\nimport \\\"../../interfaces/IERC1967Upgradeable.sol\\\";\\nimport \\\"../../interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\nimport \\\"../../utils/StorageSlotUpgradeable.sol\\\";\\nimport {Initializable} from \\\"../utils/Initializable.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n */\\nabstract contract ERC1967UpgradeUpgradeable is Initializable, IERC1967Upgradeable {\\n // This is the keccak-256 hash of \\\"eip1967.proxy.rollback\\\" subtracted by 1\\n bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n /**\\n * @dev Storage slot with the address of the current implementation.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n function __ERC1967Upgrade_init() internal onlyInitializing {\\n }\\n\\n function __ERC1967Upgrade_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _getImplementation() internal view returns (address) {\\n return StorageSlotUpgradeable.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 implementation slot.\\n */\\n function _setImplementation(address newImplementation) private {\\n require(AddressUpgradeable.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n StorageSlotUpgradeable.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n }\\n\\n /**\\n * @dev Perform implementation upgrade\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeTo(address newImplementation) internal {\\n _setImplementation(newImplementation);\\n emit Upgraded(newImplementation);\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCall(address newImplementation, bytes memory data, bool forceCall) internal {\\n _upgradeTo(newImplementation);\\n if (data.length > 0 || forceCall) {\\n AddressUpgradeable.functionDelegateCall(newImplementation, data);\\n }\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCallUUPS(address newImplementation, bytes memory data, bool forceCall) internal {\\n // Upgrades from old implementations will perform a rollback test. This test requires the new\\n // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n // this special case will break upgrade paths from old UUPS implementation to new ones.\\n if (StorageSlotUpgradeable.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n _setImplementation(newImplementation);\\n } else {\\n try IERC1822ProxiableUpgradeable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n require(slot == _IMPLEMENTATION_SLOT, \\\"ERC1967Upgrade: unsupported proxiableUUID\\\");\\n } catch {\\n revert(\\\"ERC1967Upgrade: new implementation is not UUPS\\\");\\n }\\n _upgradeToAndCall(newImplementation, data, forceCall);\\n }\\n }\\n\\n /**\\n * @dev Storage slot with the admin of the contract.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _getAdmin() internal view returns (address) {\\n return StorageSlotUpgradeable.getAddressSlot(_ADMIN_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 admin slot.\\n */\\n function _setAdmin(address newAdmin) private {\\n require(newAdmin != address(0), \\\"ERC1967: new admin is the zero address\\\");\\n StorageSlotUpgradeable.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n */\\n function _changeAdmin(address newAdmin) internal {\\n emit AdminChanged(_getAdmin(), newAdmin);\\n _setAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\\n */\\n bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n /**\\n * @dev Returns the current beacon.\\n */\\n function _getBeacon() internal view returns (address) {\\n return StorageSlotUpgradeable.getAddressSlot(_BEACON_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new beacon in the EIP1967 beacon slot.\\n */\\n function _setBeacon(address newBeacon) private {\\n require(AddressUpgradeable.isContract(newBeacon), \\\"ERC1967: new beacon is not a contract\\\");\\n require(\\n AddressUpgradeable.isContract(IBeaconUpgradeable(newBeacon).implementation()),\\n \\\"ERC1967: beacon implementation is not a contract\\\"\\n );\\n StorageSlotUpgradeable.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n }\\n\\n /**\\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n *\\n * Emits a {BeaconUpgraded} event.\\n */\\n function _upgradeBeaconToAndCall(address newBeacon, bytes memory data, bool forceCall) internal {\\n _setBeacon(newBeacon);\\n emit BeaconUpgraded(newBeacon);\\n if (data.length > 0 || forceCall) {\\n AddressUpgradeable.functionDelegateCall(IBeaconUpgradeable(newBeacon).implementation(), data);\\n }\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x7795808e3899c805254e3ae58074b20f799b466e3f43e057e47bedee5fb771f8\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeaconUpgradeable {\\n /**\\n * @dev Must return an address that can be used as a delegate call target.\\n *\\n * {BeaconProxy} will check that this address is a contract.\\n */\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/UUPSUpgradeable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport \\\"../ERC1967/ERC1967UpgradeUpgradeable.sol\\\";\\nimport {Initializable} from \\\"./Initializable.sol\\\";\\n\\n/**\\n * @dev An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an\\n * {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy.\\n *\\n * A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is\\n * reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing\\n * `UUPSUpgradeable` with a custom implementation of upgrades.\\n *\\n * The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism.\\n *\\n * _Available since v4.1._\\n */\\nabstract contract UUPSUpgradeable is Initializable, IERC1822ProxiableUpgradeable, ERC1967UpgradeUpgradeable {\\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable state-variable-assignment\\n address private immutable __self = address(this);\\n\\n /**\\n * @dev Check that the execution is being performed through a delegatecall call and that the execution context is\\n * a proxy contract with an implementation (as defined in ERC1967) pointing to self. This should only be the case\\n * for UUPS and transparent proxies that are using the current contract as their implementation. Execution of a\\n * function through ERC1167 minimal proxies (clones) would not normally pass this test, but is not guaranteed to\\n * fail.\\n */\\n modifier onlyProxy() {\\n require(address(this) != __self, \\\"Function must be called through delegatecall\\\");\\n require(_getImplementation() == __self, \\\"Function must be called through active proxy\\\");\\n _;\\n }\\n\\n /**\\n * @dev Check that the execution is not being performed through a delegate call. This allows a function to be\\n * callable on the implementing contract but not through proxies.\\n */\\n modifier notDelegated() {\\n require(address(this) == __self, \\\"UUPSUpgradeable: must not be called through delegatecall\\\");\\n _;\\n }\\n\\n function __UUPSUpgradeable_init() internal onlyInitializing {\\n }\\n\\n function __UUPSUpgradeable_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the\\n * implementation. It is used to validate the implementation's compatibility when performing an upgrade.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\\n */\\n function proxiableUUID() external view virtual override notDelegated returns (bytes32) {\\n return _IMPLEMENTATION_SLOT;\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy to `newImplementation`.\\n *\\n * Calls {_authorizeUpgrade}.\\n *\\n * Emits an {Upgraded} event.\\n *\\n * @custom:oz-upgrades-unsafe-allow-reachable delegatecall\\n */\\n function upgradeTo(address newImplementation) public virtual onlyProxy {\\n _authorizeUpgrade(newImplementation);\\n _upgradeToAndCallUUPS(newImplementation, new bytes(0), false);\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call\\n * encoded in `data`.\\n *\\n * Calls {_authorizeUpgrade}.\\n *\\n * Emits an {Upgraded} event.\\n *\\n * @custom:oz-upgrades-unsafe-allow-reachable delegatecall\\n */\\n function upgradeToAndCall(address newImplementation, bytes memory data) public payable virtual onlyProxy {\\n _authorizeUpgrade(newImplementation);\\n _upgradeToAndCallUUPS(newImplementation, data, true);\\n }\\n\\n /**\\n * @dev Function that should revert when `msg.sender` is not authorized to upgrade the contract. Called by\\n * {upgradeTo} and {upgradeToAndCall}.\\n *\\n * Normally, this function will use an xref:access.adoc[access control] modifier such as {Ownable-onlyOwner}.\\n *\\n * ```solidity\\n * function _authorizeUpgrade(address) internal override onlyOwner {}\\n * ```\\n */\\n function _authorizeUpgrade(address newImplementation) internal virtual;\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0xefb41f5c1a00249b7a99f0782f8c557865605426a3fb6e5fe9ae334293ae4f33\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n function __Context_init() internal onlyInitializing {\\n }\\n\\n function __Context_init_unchained() internal onlyInitializing {\\n }\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n function _contextSuffixLength() internal view virtual returns (uint256) {\\n return 0;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x75097e35253e7fb282ee4d7f27a80eaacfa759923185bf17302a89cbc059c5ef\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/StorageSlot.sol)\\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```solidity\\n * contract ERC1967 {\\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n * function _getImplementation() internal view returns (address) {\\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n * }\\n *\\n * function _setImplementation(address newImplementation) internal {\\n * require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n * }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._\\n * _Available since v4.9 for `string`, `bytes`._\\n */\\nlibrary StorageSlotUpgradeable {\\n struct AddressSlot {\\n address value;\\n }\\n\\n struct BooleanSlot {\\n bool value;\\n }\\n\\n struct Bytes32Slot {\\n bytes32 value;\\n }\\n\\n struct Uint256Slot {\\n uint256 value;\\n }\\n\\n struct StringSlot {\\n string value;\\n }\\n\\n struct BytesSlot {\\n bytes value;\\n }\\n\\n /**\\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n */\\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n */\\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n */\\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n */\\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` with member `value` located at `slot`.\\n */\\n function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\\n */\\n function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` with member `value` located at `slot`.\\n */\\n function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\\n */\\n function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n}\\n\",\"keccak256\":\"0x07ac95acad040f1fb1f6120dd0aa5f702db69446e95f82613721879d30de0908\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165Upgradeable.sol\\\";\\nimport {Initializable} from \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165Upgradeable is Initializable, IERC165Upgradeable {\\n function __ERC165_init() internal onlyInitializing {\\n }\\n\\n function __ERC165_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165Upgradeable).interfaceId;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0xd90d7723512df65ae417adaf0801042940f0dabd60039ceeaffe34aa5b238da1\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165Upgradeable {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/IERC1967.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (interfaces/IERC1967.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\\n *\\n * _Available since v4.8.3._\\n */\\ninterface IERC1967 {\\n /**\\n * @dev Emitted when the implementation is upgraded.\\n */\\n event Upgraded(address indexed implementation);\\n\\n /**\\n * @dev Emitted when the admin account has changed.\\n */\\n event AdminChanged(address previousAdmin, address newAdmin);\\n\\n /**\\n * @dev Emitted when the beacon is changed.\\n */\\n event BeaconUpgraded(address indexed beacon);\\n}\\n\",\"keccak256\":\"0x3cbef5ebc24b415252e2f8c0c9254555d30d9f085603b4b80d9b5ed20ab87e90\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822Proxiable {\\n /**\\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n * address.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy.\\n */\\n function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/Clones.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/Clones.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev https://eips.ethereum.org/EIPS/eip-1167[EIP 1167] is a standard for\\n * deploying minimal proxy contracts, also known as \\\"clones\\\".\\n *\\n * > To simply and cheaply clone contract functionality in an immutable way, this standard specifies\\n * > a minimal bytecode implementation that delegates all calls to a known, fixed address.\\n *\\n * The library includes functions to deploy a proxy using either `create` (traditional deployment) or `create2`\\n * (salted deterministic deployment). It also includes functions to predict the addresses of clones deployed using the\\n * deterministic method.\\n *\\n * _Available since v3.4._\\n */\\nlibrary Clones {\\n /**\\n * @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`.\\n *\\n * This function uses the create opcode, which should never revert.\\n */\\n function clone(address implementation) internal returns (address instance) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n // Cleans the upper 96 bits of the `implementation` word, then packs the first 3 bytes\\n // of the `implementation` address with the bytecode before the address.\\n mstore(0x00, or(shr(0xe8, shl(0x60, implementation)), 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000))\\n // Packs the remaining 17 bytes of `implementation` with the bytecode after the address.\\n mstore(0x20, or(shl(0x78, implementation), 0x5af43d82803e903d91602b57fd5bf3))\\n instance := create(0, 0x09, 0x37)\\n }\\n require(instance != address(0), \\\"ERC1167: create failed\\\");\\n }\\n\\n /**\\n * @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`.\\n *\\n * This function uses the create2 opcode and a `salt` to deterministically deploy\\n * the clone. Using the same `implementation` and `salt` multiple time will revert, since\\n * the clones cannot be deployed twice at the same address.\\n */\\n function cloneDeterministic(address implementation, bytes32 salt) internal returns (address instance) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n // Cleans the upper 96 bits of the `implementation` word, then packs the first 3 bytes\\n // of the `implementation` address with the bytecode before the address.\\n mstore(0x00, or(shr(0xe8, shl(0x60, implementation)), 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000))\\n // Packs the remaining 17 bytes of `implementation` with the bytecode after the address.\\n mstore(0x20, or(shl(0x78, implementation), 0x5af43d82803e903d91602b57fd5bf3))\\n instance := create2(0, 0x09, 0x37, salt)\\n }\\n require(instance != address(0), \\\"ERC1167: create2 failed\\\");\\n }\\n\\n /**\\n * @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}.\\n */\\n function predictDeterministicAddress(\\n address implementation,\\n bytes32 salt,\\n address deployer\\n ) internal pure returns (address predicted) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n let ptr := mload(0x40)\\n mstore(add(ptr, 0x38), deployer)\\n mstore(add(ptr, 0x24), 0x5af43d82803e903d91602b57fd5bf3ff)\\n mstore(add(ptr, 0x14), implementation)\\n mstore(ptr, 0x3d602d80600a3d3981f3363d3d373d3d3d363d73)\\n mstore(add(ptr, 0x58), salt)\\n mstore(add(ptr, 0x78), keccak256(add(ptr, 0x0c), 0x37))\\n predicted := keccak256(add(ptr, 0x43), 0x55)\\n }\\n }\\n\\n /**\\n * @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}.\\n */\\n function predictDeterministicAddress(\\n address implementation,\\n bytes32 salt\\n ) internal view returns (address predicted) {\\n return predictDeterministicAddress(implementation, salt, address(this));\\n }\\n}\\n\",\"keccak256\":\"0x01f055f5c26ba25d7f83e9aa9ba877fbea4d0bf22227de046ea67494bc932999\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (proxy/ERC1967/ERC1967Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../Proxy.sol\\\";\\nimport \\\"./ERC1967Upgrade.sol\\\";\\n\\n/**\\n * @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an\\n * implementation address that can be changed. This address is stored in storage in the location specified by\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the\\n * implementation behind the proxy.\\n */\\ncontract ERC1967Proxy is Proxy, ERC1967Upgrade {\\n /**\\n * @dev Initializes the upgradeable proxy with an initial implementation specified by `_logic`.\\n *\\n * If `_data` is nonempty, it's used as data in a delegate call to `_logic`. This will typically be an encoded\\n * function call, and allows initializing the storage of the proxy like a Solidity constructor.\\n */\\n constructor(address _logic, bytes memory _data) payable {\\n _upgradeToAndCall(_logic, _data, false);\\n }\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _implementation() internal view virtual override returns (address impl) {\\n return ERC1967Upgrade._getImplementation();\\n }\\n}\\n\",\"keccak256\":\"0xa2b22da3032e50b55f95ec1d13336102d675f341167aa76db571ef7f8bb7975d\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../beacon/IBeacon.sol\\\";\\nimport \\\"../../interfaces/IERC1967.sol\\\";\\nimport \\\"../../interfaces/draft-IERC1822.sol\\\";\\nimport \\\"../../utils/Address.sol\\\";\\nimport \\\"../../utils/StorageSlot.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n */\\nabstract contract ERC1967Upgrade is IERC1967 {\\n // This is the keccak-256 hash of \\\"eip1967.proxy.rollback\\\" subtracted by 1\\n bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n /**\\n * @dev Storage slot with the address of the current implementation.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _getImplementation() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 implementation slot.\\n */\\n function _setImplementation(address newImplementation) private {\\n require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n }\\n\\n /**\\n * @dev Perform implementation upgrade\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeTo(address newImplementation) internal {\\n _setImplementation(newImplementation);\\n emit Upgraded(newImplementation);\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCall(address newImplementation, bytes memory data, bool forceCall) internal {\\n _upgradeTo(newImplementation);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(newImplementation, data);\\n }\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCallUUPS(address newImplementation, bytes memory data, bool forceCall) internal {\\n // Upgrades from old implementations will perform a rollback test. This test requires the new\\n // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n // this special case will break upgrade paths from old UUPS implementation to new ones.\\n if (StorageSlot.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n _setImplementation(newImplementation);\\n } else {\\n try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n require(slot == _IMPLEMENTATION_SLOT, \\\"ERC1967Upgrade: unsupported proxiableUUID\\\");\\n } catch {\\n revert(\\\"ERC1967Upgrade: new implementation is not UUPS\\\");\\n }\\n _upgradeToAndCall(newImplementation, data, forceCall);\\n }\\n }\\n\\n /**\\n * @dev Storage slot with the admin of the contract.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _getAdmin() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_ADMIN_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 admin slot.\\n */\\n function _setAdmin(address newAdmin) private {\\n require(newAdmin != address(0), \\\"ERC1967: new admin is the zero address\\\");\\n StorageSlot.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n */\\n function _changeAdmin(address newAdmin) internal {\\n emit AdminChanged(_getAdmin(), newAdmin);\\n _setAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\\n */\\n bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n /**\\n * @dev Returns the current beacon.\\n */\\n function _getBeacon() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_BEACON_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new beacon in the EIP1967 beacon slot.\\n */\\n function _setBeacon(address newBeacon) private {\\n require(Address.isContract(newBeacon), \\\"ERC1967: new beacon is not a contract\\\");\\n require(\\n Address.isContract(IBeacon(newBeacon).implementation()),\\n \\\"ERC1967: beacon implementation is not a contract\\\"\\n );\\n StorageSlot.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n }\\n\\n /**\\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n *\\n * Emits a {BeaconUpgraded} event.\\n */\\n function _upgradeBeaconToAndCall(address newBeacon, bytes memory data, bool forceCall) internal {\\n _setBeacon(newBeacon);\\n emit BeaconUpgraded(newBeacon);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x3b21ae06bf5957f73fa16754b0669c77b7abd8ba6c072d35c3281d446fdb86c2\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (proxy/Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\\n * be specified by overriding the virtual {_implementation} function.\\n *\\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\\n * different contract through the {_delegate} function.\\n *\\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\\n */\\nabstract contract Proxy {\\n /**\\n * @dev Delegates the current call to `implementation`.\\n *\\n * This function does not return to its internal call site, it will return directly to the external caller.\\n */\\n function _delegate(address implementation) internal virtual {\\n assembly {\\n // Copy msg.data. We take full control of memory in this inline assembly\\n // block because it will not return to Solidity code. We overwrite the\\n // Solidity scratch pad at memory position 0.\\n calldatacopy(0, 0, calldatasize())\\n\\n // Call the implementation.\\n // out and outsize are 0 because we don't know the size yet.\\n let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)\\n\\n // Copy the returned data.\\n returndatacopy(0, 0, returndatasize())\\n\\n switch result\\n // delegatecall returns 0 on error.\\n case 0 {\\n revert(0, returndatasize())\\n }\\n default {\\n return(0, returndatasize())\\n }\\n }\\n }\\n\\n /**\\n * @dev This is a virtual function that should be overridden so it returns the address to which the fallback function\\n * and {_fallback} should delegate.\\n */\\n function _implementation() internal view virtual returns (address);\\n\\n /**\\n * @dev Delegates the current call to the address returned by `_implementation()`.\\n *\\n * This function does not return to its internal call site, it will return directly to the external caller.\\n */\\n function _fallback() internal virtual {\\n _beforeFallback();\\n _delegate(_implementation());\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\\n * function in the contract matches the call data.\\n */\\n fallback() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data\\n * is empty.\\n */\\n receive() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`\\n * call, or as part of the Solidity `fallback` or `receive` functions.\\n *\\n * If overridden should call `super._beforeFallback()`.\\n */\\n function _beforeFallback() internal virtual {}\\n}\\n\",\"keccak256\":\"0xc130fe33f1b2132158531a87734153293f6d07bc263ff4ac90e85da9c82c0e27\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeacon {\\n /**\\n * @dev Must return an address that can be used as a delegate call target.\\n *\\n * {BeaconProxy} will check that this address is a contract.\\n */\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/StorageSlot.sol)\\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```solidity\\n * contract ERC1967 {\\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n * function _getImplementation() internal view returns (address) {\\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n * }\\n *\\n * function _setImplementation(address newImplementation) internal {\\n * require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n * }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._\\n * _Available since v4.9 for `string`, `bytes`._\\n */\\nlibrary StorageSlot {\\n struct AddressSlot {\\n address value;\\n }\\n\\n struct BooleanSlot {\\n bool value;\\n }\\n\\n struct Bytes32Slot {\\n bytes32 value;\\n }\\n\\n struct Uint256Slot {\\n uint256 value;\\n }\\n\\n struct StringSlot {\\n string value;\\n }\\n\\n struct BytesSlot {\\n bytes value;\\n }\\n\\n /**\\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n */\\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n */\\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n */\\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n */\\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` with member `value` located at `slot`.\\n */\\n function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\\n */\\n function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` with member `value` located at `slot`.\\n */\\n function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\\n */\\n function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n}\\n\",\"keccak256\":\"0xf09e68aa0dc6722a25bc46490e8d48ed864466d17313b8a0b254c36b54e49899\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165 is IERC165 {\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165).interfaceId;\\n }\\n}\\n\",\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"src/dao/IDAO.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IDAO\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for DAOs within the Aragon App DAO framework.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IDAO {\\n /// @notice The action struct to be consumed by the DAO's `execute` function resulting in an external call.\\n /// @param to The address to call.\\n /// @param value The native token value to be sent with the call.\\n /// @param data The bytes-encoded function selector and calldata for the call.\\n struct Action {\\n address to;\\n uint256 value;\\n bytes data;\\n }\\n\\n /// @notice Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\\n /// @param _where The address of the contract.\\n /// @param _who The address of a EOA or contract to give the permissions.\\n /// @param _permissionId The permission identifier.\\n /// @param _data The optional data passed to the `PermissionCondition` registered.\\n /// @return Returns true if the address has permission, false if not.\\n function hasPermission(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes memory _data\\n ) external view returns (bool);\\n\\n /// @notice Updates the DAO metadata (e.g., an IPFS hash).\\n /// @param _metadata The IPFS hash of the new metadata object.\\n function setMetadata(bytes calldata _metadata) external;\\n\\n /// @notice Emitted when the DAO metadata is updated.\\n /// @param metadata The IPFS hash of the new metadata object.\\n event MetadataSet(bytes metadata);\\n\\n /// @notice Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted.\\n /// @param _callId The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce.\\n /// @param _actions The array of actions.\\n /// @param _allowFailureMap A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @return The array of results obtained from the executed actions in `bytes`.\\n /// @return The resulting failure map containing the actions have actually failed.\\n function execute(\\n bytes32 _callId,\\n Action[] memory _actions,\\n uint256 _allowFailureMap\\n ) external returns (bytes[] memory, uint256);\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param actor The address of the caller.\\n /// @param callId The ID of the call.\\n /// @param actions The array of actions executed.\\n /// @param allowFailureMap The allow failure map encoding which actions are allowed to fail.\\n /// @param failureMap The failure map encoding which actions have failed.\\n /// @param execResults The array with the results of the executed actions.\\n /// @dev The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce.\\n event Executed(\\n address indexed actor,\\n bytes32 callId,\\n Action[] actions,\\n uint256 allowFailureMap,\\n uint256 failureMap,\\n bytes[] execResults\\n );\\n\\n /// @notice Emitted when a standard callback is registered.\\n /// @param interfaceId The ID of the interface.\\n /// @param callbackSelector The selector of the callback function.\\n /// @param magicNumber The magic number to be registered for the callback function selector.\\n event StandardCallbackRegistered(\\n bytes4 interfaceId,\\n bytes4 callbackSelector,\\n bytes4 magicNumber\\n );\\n\\n /// @notice Deposits (native) tokens to the DAO contract with a reference string.\\n /// @param _token The address of the token or address(0) in case of the native token.\\n /// @param _amount The amount of tokens to deposit.\\n /// @param _reference The reference describing the deposit reason.\\n function deposit(address _token, uint256 _amount, string calldata _reference) external payable;\\n\\n /// @notice Emitted when a token deposit has been made to the DAO.\\n /// @param sender The address of the sender.\\n /// @param token The address of the deposited token.\\n /// @param amount The amount of tokens deposited.\\n /// @param _reference The reference describing the deposit reason.\\n event Deposited(\\n address indexed sender,\\n address indexed token,\\n uint256 amount,\\n string _reference\\n );\\n\\n /// @notice Emitted when a native token deposit has been made to the DAO.\\n /// @dev This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).\\n /// @param sender The address of the sender.\\n /// @param amount The amount of native tokens deposited.\\n event NativeTokenDeposited(address sender, uint256 amount);\\n\\n /// @notice Setter for the trusted forwarder verifying the meta transaction.\\n /// @param _trustedForwarder The trusted forwarder address.\\n function setTrustedForwarder(address _trustedForwarder) external;\\n\\n /// @notice Getter for the trusted forwarder verifying the meta transaction.\\n /// @return The trusted forwarder address.\\n function getTrustedForwarder() external view returns (address);\\n\\n /// @notice Emitted when a new TrustedForwarder is set on the DAO.\\n /// @param forwarder the new forwarder address.\\n event TrustedForwarderSet(address forwarder);\\n\\n /// @notice Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\\n /// @param _hash The hash of the data to be signed.\\n /// @param _signature The signature byte array associated with `_hash`.\\n /// @return Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not.\\n function isValidSignature(bytes32 _hash, bytes memory _signature) external returns (bytes4);\\n\\n /// @notice Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\\n /// @param _interfaceId The ID of the interface.\\n /// @param _callbackSelector The selector of the callback function.\\n /// @param _magicNumber The magic number to be registered for the function signature.\\n function registerStandardCallback(\\n bytes4 _interfaceId,\\n bytes4 _callbackSelector,\\n bytes4 _magicNumber\\n ) external;\\n\\n /// @notice Removed function being left here to not corrupt the IDAO interface ID. Any call will revert.\\n /// @dev Introduced in v1.0.0. Removed in v1.4.0.\\n function setSignatureValidator(address) external;\\n}\\n\",\"keccak256\":\"0xb7f615523c26de042edce98731c658f44a1edb2464387ac1b642c4c69f57128e\",\"license\":\"AGPL-3.0-or-later\"},\"src/mocks/plugin/PluginSetupMockData.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {PermissionLib} from \\\"../../permission/PermissionLib.sol\\\";\\n\\naddress constant NO_CONDITION = address(0);\\n\\nerror ConflictingValues();\\n\\n/// @notice Creates a mock `MultiTargetPermission` array by converting a range of `uint160` values into `address` values.\\n/// @param rangeStart The start of the range.\\n/// @param rangeEnd The end of the range (that is not included).\\n/// @param op The permission operation type.\\n/// @return permissions The mock array of permissions.\\n/// @dev DO NOT USE IN PRODUCTION!\\nfunction mockPermissions(\\n uint160 rangeStart,\\n uint160 rangeEnd,\\n PermissionLib.Operation op\\n) pure returns (PermissionLib.MultiTargetPermission[] memory permissions) {\\n if (rangeStart > rangeEnd) revert ConflictingValues();\\n\\n permissions = new PermissionLib.MultiTargetPermission[](rangeEnd - rangeStart);\\n\\n for (uint160 i = rangeStart; i < rangeEnd; i++) {\\n permissions[i - rangeStart] = PermissionLib.MultiTargetPermission({\\n operation: op,\\n where: address(i),\\n who: address(i),\\n condition: PermissionLib.NO_CONDITION,\\n permissionId: keccak256(\\\"MOCK_PERMISSION\\\")\\n });\\n }\\n}\\n\\n/// @notice Creates a mock array of helper addresses of specified length by converting `uint160` values starting from 0 into `address` values.\\n/// @param len The length of the helper array.\\n/// @return helpers The mock array of helper addresses.\\n/// @dev DO NOT USE IN PRODUCTION!\\nfunction mockHelpers(uint160 len) pure returns (address[] memory helpers) {\\n helpers = new address[](len);\\n\\n for (uint160 i = 0; i < len; i++) {\\n helpers[i] = address(i);\\n }\\n}\\n\",\"keccak256\":\"0x529d1b7ea4c348fe18edf81a044792ca8aa1f6ad9a7d2edfd35e38bf8372abf9\",\"license\":\"AGPL-3.0-or-later\"},\"src/mocks/plugin/PluginUUPSUpgradeableMock.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\n/* solhint-disable one-contract-per-file */\\npragma solidity ^0.8.8;\\n\\nimport {PluginUUPSUpgradeable} from \\\"../../plugin/PluginUUPSUpgradeable.sol\\\";\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice A mock upgradeable plugin to be deployed via the UUPS proxy pattern.\\n/// v1.1 (Release 1, Build 1)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableMockBuild1 is PluginUUPSUpgradeable {\\n uint256 public state1;\\n\\n function initialize(IDAO _dao) external initializer {\\n __PluginUUPSUpgradeable_init(_dao);\\n state1 = 1;\\n }\\n}\\n\\n/// @notice A mock upgradeable plugin to be deployed via the UUPS proxy pattern.\\n/// v1.1 (Release 1, Build 2)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableMockBuild2 is PluginUUPSUpgradeable {\\n uint256 public state1;\\n uint256 public state2;\\n\\n function initialize(IDAO _dao) external reinitializer(2) {\\n __PluginUUPSUpgradeable_init(_dao);\\n state1 = 1;\\n state2 = 2;\\n }\\n\\n function initializeFrom(uint16 _previousBuild) external reinitializer(2) {\\n if (_previousBuild < 2) {\\n state2 = 2;\\n }\\n }\\n}\\n\\n/// @notice A mock upgradeable plugin to be deployed via the UUPS proxy pattern.\\n/// v1.1 (Release 1, Build 3)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableMockBuild3 is PluginUUPSUpgradeable {\\n uint256 public state1;\\n uint256 public state2;\\n uint256 public state3;\\n\\n function initialize(IDAO _dao) external reinitializer(3) {\\n __PluginUUPSUpgradeable_init(_dao);\\n state1 = 1;\\n state2 = 2;\\n state3 = 3;\\n }\\n\\n function initializeFrom(uint16 _previousBuild) external reinitializer(3) {\\n if (_previousBuild < 2) {\\n state2 = 2;\\n }\\n if (_previousBuild < 3) {\\n state3 = 3;\\n }\\n }\\n}\\n\\n/// @notice A mock upgradeable plugin missing an initializer function.\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableMockBad is PluginUUPSUpgradeable {\\n uint256 public state1;\\n\\n function notAnInitializer(IDAO _dao) external {\\n __PluginUUPSUpgradeable_init(_dao);\\n state1 = 1;\\n }\\n}\\n\",\"keccak256\":\"0x2917df3b1da0de27f58cf531afeaa4e6c4285717247cbdd9ecc7880ae5cb9cb0\",\"license\":\"AGPL-3.0-or-later\"},\"src/mocks/plugin/PluginUUPSUpgradeableSetupMock.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\n/* solhint-disable one-contract-per-file */\\npragma solidity ^0.8.8;\\n\\nimport {PermissionLib} from \\\"../../permission/PermissionLib.sol\\\";\\nimport {IPluginSetup} from \\\"../../plugin/setup/IPluginSetup.sol\\\";\\nimport {PluginUpgradeableSetup} from \\\"../../plugin/setup/PluginUpgradeableSetup.sol\\\";\\nimport {ProxyLib} from \\\"../../utils/deployment/ProxyLib.sol\\\";\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\nimport {mockPermissions, mockHelpers} from \\\"./PluginSetupMockData.sol\\\";\\nimport {PluginUUPSUpgradeableMockBuild1, PluginUUPSUpgradeableMockBuild2, PluginUUPSUpgradeableMockBuild3} from \\\"./PluginUUPSUpgradeableMock.sol\\\";\\n\\n/// @notice A mock plugin setup of an upgradeable plugin to be deployed via the UUPS pattern.\\n/// v1.1 (Release 1, Build 1)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableSetupMockBuild1 is PluginUpgradeableSetup {\\n using ProxyLib for address;\\n\\n uint16 internal constant THIS_BUILD = 1;\\n\\n constructor() PluginUpgradeableSetup(address(new PluginUUPSUpgradeableMockBuild1())) {}\\n\\n /// @inheritdoc IPluginSetup\\n function prepareInstallation(\\n address _dao,\\n bytes memory\\n ) public returns (address plugin, PreparedSetupData memory preparedSetupData) {\\n bytes memory initData = abi.encodeCall(\\n PluginUUPSUpgradeableMockBuild1.initialize,\\n (IDAO(_dao))\\n );\\n plugin = implementation().deployUUPSProxy(initData);\\n preparedSetupData.helpers = mockHelpers(1);\\n preparedSetupData.permissions = mockPermissions(0, 1, PermissionLib.Operation.Grant);\\n }\\n\\n /// @inheritdoc IPluginSetup\\n /// @dev The default implementation for the initial build 1 that reverts because no earlier build exists.\\n function prepareUpdate(\\n address _dao,\\n uint16 _fromBuild,\\n SetupPayload calldata _payload\\n ) external pure virtual returns (bytes memory, PreparedSetupData memory) {\\n (_dao, _fromBuild, _payload);\\n revert InvalidUpdatePath({fromBuild: 0, thisBuild: THIS_BUILD});\\n }\\n\\n /// @inheritdoc IPluginSetup\\n function prepareUninstallation(\\n address _dao,\\n SetupPayload calldata _payload\\n ) external pure returns (PermissionLib.MultiTargetPermission[] memory permissions) {\\n (_dao, _payload);\\n permissions = mockPermissions(0, THIS_BUILD, PermissionLib.Operation.Revoke);\\n }\\n}\\n\\n/// @notice A mock plugin setup of an upgradeable plugin to be deployed via the UUPS pattern.\\n/// v1.2 (Release 1, Build 2)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableSetupMockBuild2 is PluginUpgradeableSetup {\\n using ProxyLib for address;\\n\\n uint16 internal constant THIS_BUILD = 2;\\n\\n constructor() PluginUpgradeableSetup(address(new PluginUUPSUpgradeableMockBuild2())) {}\\n\\n /// @inheritdoc IPluginSetup\\n function prepareInstallation(\\n address _dao,\\n bytes memory\\n ) external returns (address plugin, PreparedSetupData memory preparedSetupData) {\\n bytes memory initData = abi.encodeCall(\\n PluginUUPSUpgradeableMockBuild2.initialize,\\n (IDAO(_dao))\\n );\\n plugin = implementation().deployUUPSProxy(initData);\\n preparedSetupData.helpers = mockHelpers(THIS_BUILD);\\n preparedSetupData.permissions = mockPermissions(\\n 0,\\n THIS_BUILD,\\n PermissionLib.Operation.Grant\\n );\\n }\\n\\n /// @inheritdoc IPluginSetup\\n function prepareUpdate(\\n address _dao,\\n uint16 _fromBuild,\\n SetupPayload calldata _payload\\n )\\n external\\n pure\\n override\\n returns (bytes memory initData, PreparedSetupData memory preparedSetupData)\\n {\\n (_dao, _payload);\\n\\n // Update from Build 1\\n if (_fromBuild == 1) {\\n preparedSetupData.helpers = mockHelpers(THIS_BUILD);\\n initData = abi.encodeCall(PluginUUPSUpgradeableMockBuild2.initializeFrom, (_fromBuild));\\n preparedSetupData.permissions = mockPermissions(\\n _fromBuild,\\n THIS_BUILD,\\n PermissionLib.Operation.Grant\\n );\\n }\\n }\\n\\n /// @inheritdoc IPluginSetup\\n function prepareUninstallation(\\n address _dao,\\n SetupPayload calldata _payload\\n ) external pure returns (PermissionLib.MultiTargetPermission[] memory permissions) {\\n (_dao, _payload);\\n permissions = mockPermissions(0, THIS_BUILD, PermissionLib.Operation.Revoke);\\n }\\n}\\n\\n/// @notice A mock plugin setup of an upgradeable plugin to be deployed via the UUPS pattern.\\n/// v1.3 (Release 1, Build 3)\\ncontract PluginUUPSUpgradeableSetupMockBuild3 is PluginUpgradeableSetup {\\n using ProxyLib for address;\\n\\n uint16 internal constant THIS_BUILD = 3;\\n\\n constructor() PluginUpgradeableSetup(address(new PluginUUPSUpgradeableMockBuild3())) {}\\n\\n /// @inheritdoc IPluginSetup\\n function prepareInstallation(\\n address _dao,\\n bytes memory\\n ) external returns (address plugin, PreparedSetupData memory preparedSetupData) {\\n bytes memory initData = abi.encodeCall(\\n PluginUUPSUpgradeableMockBuild3.initialize,\\n (IDAO(_dao))\\n );\\n plugin = implementation().deployUUPSProxy(initData);\\n preparedSetupData.helpers = mockHelpers(THIS_BUILD);\\n preparedSetupData.permissions = mockPermissions(\\n 0,\\n THIS_BUILD,\\n PermissionLib.Operation.Grant\\n );\\n }\\n\\n /// @inheritdoc IPluginSetup\\n function prepareUpdate(\\n address _dao,\\n uint16 _fromBuild,\\n SetupPayload calldata _payload\\n )\\n external\\n pure\\n override\\n returns (bytes memory initData, PreparedSetupData memory preparedSetupData)\\n {\\n (_dao, _payload);\\n\\n // Update from Build 1\\n if (_fromBuild == 1) {\\n preparedSetupData.helpers = mockHelpers(THIS_BUILD);\\n initData = abi.encodeCall(PluginUUPSUpgradeableMockBuild3.initializeFrom, (_fromBuild));\\n preparedSetupData.permissions = mockPermissions(\\n _fromBuild,\\n THIS_BUILD,\\n PermissionLib.Operation.Grant\\n );\\n\\n // If this update path should not be supported, you can revert with an error, e.g.,\\n // revert InvalidUpdatePath({fromBuild: _fromBuild, thisBuild: THIS_BUILD});\\n }\\n\\n // Update from Build 2\\n if (_fromBuild == 2) {\\n preparedSetupData.helpers = mockHelpers(THIS_BUILD);\\n initData = abi.encodeCall(PluginUUPSUpgradeableMockBuild3.initializeFrom, (_fromBuild));\\n preparedSetupData.permissions = mockPermissions(\\n _fromBuild,\\n THIS_BUILD,\\n PermissionLib.Operation.Grant\\n );\\n }\\n }\\n\\n /// @inheritdoc IPluginSetup\\n function prepareUninstallation(\\n address _dao,\\n SetupPayload calldata _payload\\n ) external pure returns (PermissionLib.MultiTargetPermission[] memory permissions) {\\n (_dao, _payload);\\n permissions = mockPermissions(0, THIS_BUILD, PermissionLib.Operation.Revoke);\\n }\\n}\\n\",\"keccak256\":\"0x6be5a7611fe85f0e6e1ea08f42bcce810bc4973da1eaa04c88445b8d9af130ba\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/PermissionLib.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title PermissionLib\\n/// @author Aragon X - 2021-2023\\n/// @notice A library containing objects for permission processing.\\n/// @custom:security-contact sirt@aragon.org\\nlibrary PermissionLib {\\n /// @notice A constant expressing that no condition is applied to a permission.\\n address public constant NO_CONDITION = address(0);\\n\\n /// @notice The types of permission operations available in the `PermissionManager`.\\n /// @param Grant The grant operation setting a permission without a condition.\\n /// @param Revoke The revoke operation removing a permission (that was granted with or without a condition).\\n /// @param GrantWithCondition The grant operation setting a permission with a condition.\\n enum Operation {\\n Grant,\\n Revoke,\\n GrantWithCondition\\n }\\n\\n /// @notice A struct containing the information for a permission to be applied on a single target contract without a condition.\\n /// @param operation The permission operation type.\\n /// @param who The address (EOA or contract) receiving the permission.\\n /// @param permissionId The permission identifier.\\n struct SingleTargetPermission {\\n Operation operation;\\n address who;\\n bytes32 permissionId;\\n }\\n\\n /// @notice A struct containing the information for a permission to be applied on multiple target contracts, optionally, with a condition.\\n /// @param operation The permission operation type.\\n /// @param where The address of the target contract for which `who` receives permission.\\n /// @param who The address (EOA or contract) receiving the permission.\\n /// @param condition The `PermissionCondition` that will be asked for authorization on calls connected to the specified permission identifier.\\n /// @param permissionId The permission identifier.\\n struct MultiTargetPermission {\\n Operation operation;\\n address where;\\n address who;\\n address condition;\\n bytes32 permissionId;\\n }\\n}\\n\",\"keccak256\":\"0x470faf3c4891ebc6420ef6cc09f6098917568ccc79268c90954d1478199b6097\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/DaoAuthorizableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ContextUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\\\";\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\nimport {_auth} from \\\"./auth.sol\\\";\\n\\n/// @title DaoAuthorizableUpgradeable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract contract providing a meta-transaction compatible modifier for upgradeable or cloneable contracts to authorize function calls through an associated DAO.\\n/// @dev Make sure to call `__DaoAuthorizableUpgradeable_init` during initialization of the inheriting contract.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract DaoAuthorizableUpgradeable is ContextUpgradeable {\\n /// @notice The associated DAO managing the permissions of inheriting contracts.\\n IDAO private dao_;\\n\\n /// @notice Initializes the contract by setting the associated DAO.\\n /// @param _dao The associated DAO address.\\n // solhint-disable-next-line func-name-mixedcase\\n function __DaoAuthorizableUpgradeable_init(IDAO _dao) internal onlyInitializing {\\n dao_ = _dao;\\n }\\n\\n /// @notice Returns the DAO contract.\\n /// @return The DAO contract.\\n function dao() public view returns (IDAO) {\\n return dao_;\\n }\\n\\n /// @notice A modifier to make functions on inheriting contracts authorized. Permissions to call the function are checked through the associated DAO's permission manager.\\n /// @param _permissionId The permission identifier required to call the method this modifier is applied to.\\n modifier auth(bytes32 _permissionId) {\\n _auth(dao_, address(this), _msgSender(), _permissionId, _msgData());\\n _;\\n }\\n\\n /// @notice This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain (see [OpenZeppelin's guide about storage gaps](https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps)).\\n uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0x7fac6b01b037ba1cb9d6a22d3f43b0785037dcf496ffb672434d9bf7227d2585\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/auth.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice Thrown if a call is unauthorized in the associated DAO.\\n/// @param dao The associated DAO.\\n/// @param where The context in which the authorization reverted.\\n/// @param who The address (EOA or contract) missing the permission.\\n/// @param permissionId The permission identifier.\\nerror DaoUnauthorized(address dao, address where, address who, bytes32 permissionId);\\n\\n/// @notice A free function checking if a caller is granted permissions on a target contract via a permission identifier that redirects the approval to a `PermissionCondition` if this was specified in the setup.\\n/// @param _where The address of the target contract for which `who` receives permission.\\n/// @param _who The address (EOA or contract) owning the permission.\\n/// @param _permissionId The permission identifier.\\n/// @param _data The optional data passed to the `PermissionCondition` registered.\\n/// @custom:security-contact sirt@aragon.org\\nfunction _auth(\\n IDAO _dao,\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes calldata _data\\n) view {\\n if (!_dao.hasPermission(_where, _who, _permissionId, _data))\\n revert DaoUnauthorized({\\n dao: address(_dao),\\n where: _where,\\n who: _who,\\n permissionId: _permissionId\\n });\\n}\\n\",\"keccak256\":\"0x878764b4f87fe0651fb3798fb9cb87c952f8c6caf6ae79c7f09de84df6c00298\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/IPlugin.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IPlugin\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the traits of a plugin.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IPlugin {\\n enum PluginType {\\n UUPS,\\n Cloneable,\\n Constructable\\n }\\n\\n /// @notice Returns the plugin's type\\n function pluginType() external view returns (PluginType);\\n}\\n\",\"keccak256\":\"0xc57cd0d10b6380ab7f54c713a509e88fd8f4ad9288313a0e8e12b8887817ddfe\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/PluginUUPSUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {UUPSUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\\\";\\nimport {IERC1822ProxiableUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport {ERC165Upgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\\\";\\n\\nimport {IProtocolVersion} from \\\"../utils/versioning/IProtocolVersion.sol\\\";\\nimport {ProtocolVersion} from \\\"../utils/versioning/ProtocolVersion.sol\\\";\\nimport {DaoAuthorizableUpgradeable} from \\\"../permission/auth/DaoAuthorizableUpgradeable.sol\\\";\\nimport {IDAO} from \\\"../dao/IDAO.sol\\\";\\nimport {IPlugin} from \\\"./IPlugin.sol\\\";\\n\\n/// @title PluginUUPSUpgradeable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract, upgradeable contract to inherit from when creating a plugin being deployed via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract PluginUUPSUpgradeable is\\n IPlugin,\\n ERC165Upgradeable,\\n UUPSUpgradeable,\\n DaoAuthorizableUpgradeable,\\n ProtocolVersion\\n{\\n // NOTE: When adding new state variables to the contract, the size of `_gap` has to be adapted below as well.\\n\\n /// @notice Disables the initializers on the implementation contract to prevent it from being left uninitialized.\\n /// @custom:oz-upgrades-unsafe-allow constructor\\n constructor() {\\n _disableInitializers();\\n }\\n\\n /// @inheritdoc IPlugin\\n function pluginType() public pure override returns (PluginType) {\\n return PluginType.UUPS;\\n }\\n\\n /// @notice The ID of the permission required to call the `_authorizeUpgrade` function.\\n bytes32 public constant UPGRADE_PLUGIN_PERMISSION_ID = keccak256(\\\"UPGRADE_PLUGIN_PERMISSION\\\");\\n\\n /// @notice Initializes the plugin by storing the associated DAO.\\n /// @param _dao The DAO contract.\\n // solhint-disable-next-line func-name-mixedcase\\n function __PluginUUPSUpgradeable_init(IDAO _dao) internal virtual onlyInitializing {\\n __DaoAuthorizableUpgradeable_init(_dao);\\n }\\n\\n /// @notice Checks if an interface is supported by this or its parent contract.\\n /// @param _interfaceId The ID of the interface.\\n /// @return Returns `true` if the interface is supported.\\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\\n return\\n _interfaceId == type(IPlugin).interfaceId ||\\n _interfaceId == type(IProtocolVersion).interfaceId ||\\n _interfaceId == type(IERC1822ProxiableUpgradeable).interfaceId ||\\n super.supportsInterface(_interfaceId);\\n }\\n\\n /// @notice Returns the address of the implementation contract in the [proxy storage slot](https://eips.ethereum.org/EIPS/eip-1967) slot the [UUPS proxy](https://eips.ethereum.org/EIPS/eip-1822) is pointing to.\\n /// @return The address of the implementation contract.\\n function implementation() public view returns (address) {\\n return _getImplementation();\\n }\\n\\n /// @notice Internal method authorizing the upgrade of the contract via the [upgradeability mechanism for UUPS proxies](https://docs.openzeppelin.com/contracts/4.x/api/proxy#UUPSUpgradeable) (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\\n /// @dev The caller must have the `UPGRADE_PLUGIN_PERMISSION_ID` permission.\\n function _authorizeUpgrade(\\n address\\n )\\n internal\\n virtual\\n override\\n auth(UPGRADE_PLUGIN_PERMISSION_ID)\\n // solhint-disable-next-line no-empty-blocks\\n {\\n\\n }\\n\\n /// @notice This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain (see [OpenZeppelin's guide about storage gaps](https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps)).\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x127e7c4f839cb8c8486070990b78e22313f1ff089ffe6a4ff23ae358e48f0037\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/setup/IPluginSetup.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {PermissionLib} from \\\"../../permission/PermissionLib.sol\\\";\\n\\n// solhint-disable-next-line no-unused-import\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @title IPluginSetup\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for a plugin setup contract to be consumed by the `PluginSetupProcessor` for plugin installations, updates, and uninstallations.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IPluginSetup {\\n /// @notice The data associated with a prepared setup.\\n /// @param helpers The address array of helpers (contracts or EOAs) associated with this plugin version after the installation or update.\\n /// @param permissions The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the installing or updating DAO.\\n struct PreparedSetupData {\\n address[] helpers;\\n PermissionLib.MultiTargetPermission[] permissions;\\n }\\n\\n /// @notice The payload for plugin updates and uninstallations containing the existing contracts as well as optional data to be consumed by the plugin setup.\\n /// @param plugin The address of the `Plugin`.\\n /// @param currentHelpers The address array of all current helpers (contracts or EOAs) associated with the plugin to update from.\\n /// @param data The bytes-encoded data containing the input parameters for the preparation of update/uninstall as specified in the corresponding ABI on the version's metadata.\\n struct SetupPayload {\\n address plugin;\\n address[] currentHelpers;\\n bytes data;\\n }\\n\\n /// @notice Prepares the installation of a plugin.\\n /// @param _dao The address of the installing DAO.\\n /// @param _data The bytes-encoded data containing the input parameters for the installation as specified in the plugin's build metadata JSON file.\\n /// @return plugin The address of the `Plugin` contract being prepared for installation.\\n /// @return preparedSetupData The deployed plugin's relevant data which consists of helpers and permissions.\\n function prepareInstallation(\\n address _dao,\\n bytes calldata _data\\n ) external returns (address plugin, PreparedSetupData memory preparedSetupData);\\n\\n /// @notice Prepares the update of a plugin.\\n /// @param _dao The address of the updating DAO.\\n /// @param _fromBuild The build number of the plugin to update from.\\n /// @param _payload The relevant data necessary for the `prepareUpdate`. See above.\\n /// @return initData The initialization data to be passed to upgradeable contracts when the update is applied in the `PluginSetupProcessor`.\\n /// @return preparedSetupData The deployed plugin's relevant data which consists of helpers and permissions.\\n function prepareUpdate(\\n address _dao,\\n uint16 _fromBuild,\\n SetupPayload calldata _payload\\n ) external returns (bytes memory initData, PreparedSetupData memory preparedSetupData);\\n\\n /// @notice Prepares the uninstallation of a plugin.\\n /// @param _dao The address of the uninstalling DAO.\\n /// @param _payload The relevant data necessary for the `prepareUninstallation`. See above.\\n /// @return permissions The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the uninstalling DAO.\\n function prepareUninstallation(\\n address _dao,\\n SetupPayload calldata _payload\\n ) external returns (PermissionLib.MultiTargetPermission[] memory permissions);\\n\\n /// @notice Returns the plugin implementation address.\\n /// @return The address of the plugin implementation contract.\\n /// @dev The implementation can be instantiated via the `new` keyword, cloned via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)), or proxied via the UUPS proxy pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0x21c99995208039ac6ace219b6f273243811dc2aa66399e8e499e43ec30b82fa9\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/setup/PluginUpgradeableSetup.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ERC165} from \\\"@openzeppelin/contracts/utils/introspection/ERC165.sol\\\";\\n\\nimport {IProtocolVersion} from \\\"../../utils/versioning/IProtocolVersion.sol\\\";\\nimport {ProtocolVersion} from \\\"../../utils/versioning/ProtocolVersion.sol\\\";\\nimport {IPluginSetup} from \\\"./IPluginSetup.sol\\\";\\n\\n/// @title PluginUpgradeableSetup\\n/// @author Aragon X - 2022-2024\\n/// @notice An abstract contract to inherit from to implement the plugin setup for upgradeable plugins, i.e, `PluginUUPSUpgradeable` being deployed via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822) and [ERC-1967](https://eips.ethereum.org/EIPS/eip-1967)).\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract PluginUpgradeableSetup is ERC165, IPluginSetup, ProtocolVersion {\\n /// @notice The address of the plugin implementation contract for initial block explorer verification\\n /// and to create [ERC-1967](https://eips.ethereum.org/EIPS/eip-1967) UUPS proxies from.\\n address internal immutable IMPLEMENTATION;\\n\\n /// @notice Thrown when an update path is not available, for example, if this is the initial build.\\n /// @param fromBuild The build number to update from.\\n /// @param thisBuild The build number of this setup to update to.\\n error InvalidUpdatePath(uint16 fromBuild, uint16 thisBuild);\\n\\n /// @notice The contract constructor, that setting the plugin implementation contract.\\n /// @param _implementation The address of the plugin implementation contract.\\n constructor(address _implementation) {\\n IMPLEMENTATION = _implementation;\\n }\\n\\n /// @notice Checks if this or the parent contract supports an interface by its ID.\\n /// @param _interfaceId The ID of the interface.\\n /// @return Returns `true` if the interface is supported.\\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\\n return\\n _interfaceId == type(IPluginSetup).interfaceId ||\\n _interfaceId == type(IProtocolVersion).interfaceId ||\\n super.supportsInterface(_interfaceId);\\n }\\n\\n /// @inheritdoc IPluginSetup\\n function implementation() public view returns (address) {\\n return IMPLEMENTATION;\\n }\\n}\\n\",\"keccak256\":\"0x2842d919d1ecb4fbeb40953128c3da3b36dcf6e91255089e987c2f11ff8d061e\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/deployment/ProxyLib.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ERC1967Proxy} from \\\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol\\\";\\nimport {Clones} from \\\"@openzeppelin/contracts/proxy/Clones.sol\\\";\\nimport {Address} from \\\"@openzeppelin/contracts/utils/Address.sol\\\";\\n\\n/// @title ProxyLib\\n/// @author Aragon X - 2024\\n/// @notice A library containing methods for the deployment of proxies via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)) and minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)).\\n/// @custom:security-contact sirt@aragon.org\\nlibrary ProxyLib {\\n using Address for address;\\n using Clones for address;\\n\\n /// @notice Creates an [ERC-1967](https://eips.ethereum.org/EIPS/eip-1967) UUPS proxy contract pointing to a logic contract and allows to immediately initialize it.\\n /// @param _logic The logic contract the proxy is pointing to.\\n /// @param _initCalldata The initialization data for this contract.\\n /// @return uupsProxy The address of the UUPS proxy contract created.\\n /// @dev If `_initCalldata` is non-empty, it is used in a delegate call to the `_logic` contract. This will typically be an encoded function call initializing the storage of the proxy (see [OpenZeppelin ERC1967Proxy-constructor](https://docs.openzeppelin.com/contracts/4.x/api/proxy#ERC1967Proxy-constructor-address-bytes-)).\\n function deployUUPSProxy(\\n address _logic,\\n bytes memory _initCalldata\\n ) internal returns (address uupsProxy) {\\n uupsProxy = address(new ERC1967Proxy({_logic: _logic, _data: _initCalldata}));\\n }\\n\\n /// @notice Creates an [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167) minimal proxy contract, also known as clones, pointing to a logic contract and allows to immediately initialize it.\\n /// @param _logic The logic contract the proxy is pointing to.\\n /// @param _initCalldata The initialization data for this contract.\\n /// @return minimalProxy The address of the minimal proxy contract created.\\n /// @dev If `_initCalldata` is non-empty, it is used in a call to the clone contract. This will typically be an encoded function call initializing the storage of the contract.\\n function deployMinimalProxy(\\n address _logic,\\n bytes memory _initCalldata\\n ) internal returns (address minimalProxy) {\\n minimalProxy = _logic.clone();\\n if (_initCalldata.length > 0) {\\n minimalProxy.functionCall({data: _initCalldata});\\n }\\n }\\n}\\n\",\"keccak256\":\"0xef0d1790dfa026381c021daa2ec7267357497f58cd4a2fa5c64e72e0dea95acc\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/IProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IProtocolVersion\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the semantic Aragon OSx protocol version number.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IProtocolVersion {\\n /// @notice Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\\n /// @return _version Returns the semantic Aragon OSx protocol version number.\\n /// @dev This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\\n function protocolVersion() external view returns (uint8[3] memory _version);\\n}\\n\",\"keccak256\":\"0x00a4da654d21dc1bdadbdc8bd54bb86c378c56f85e461ccc31303628ea621361\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/ProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IProtocolVersion} from \\\"./IProtocolVersion.sol\\\";\\n\\n/// @title ProtocolVersion\\n/// @author Aragon X - 2023\\n/// @notice An abstract, stateless, non-upgradeable contract providing the current Aragon OSx protocol version number.\\n/// @dev Do not add any new variables to this contract that would shift down storage in the inheritance chain.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract ProtocolVersion is IProtocolVersion {\\n // IMPORTANT: Do not add any storage variable, see the above notice.\\n\\n /// @inheritdoc IProtocolVersion\\n function protocolVersion() public pure returns (uint8[3] memory) {\\n return [1, 4, 0];\\n }\\n}\\n\",\"keccak256\":\"0x3975c937be935f687c6b6b8f379071232681e98cf04b175d72781b819ea52bdb\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"errors":{"InvalidUpdatePath(uint16,uint16)":[{"notice":"Thrown when an update path is not available, for example, if this is the initial build."}]},"kind":"user","methods":{"implementation()":{"notice":"Returns the plugin implementation address."},"prepareInstallation(address,bytes)":{"notice":"Prepares the installation of a plugin."},"prepareUninstallation(address,(address,address[],bytes))":{"notice":"Prepares the uninstallation of a plugin."},"prepareUpdate(address,uint16,(address,address[],bytes))":{"notice":"Prepares the update of a plugin."},"protocolVersion()":{"notice":"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with."},"supportsInterface(bytes4)":{"notice":"Checks if this or the parent contract supports an interface by its ID."}},"notice":"A mock plugin setup of an upgradeable plugin to be deployed via the UUPS pattern. v1.3 (Release 1, Build 3)","version":1}}},"src/mocks/plugin/extensions/governance/AddresslistMock.sol":{"AddresslistMock":{"abi":[{"inputs":[{"internalType":"address","name":"member","type":"address"}],"name":"InvalidAddresslistUpdate","type":"error"},{"inputs":[{"internalType":"address[]","name":"_newAddresses","type":"address[]"}],"name":"addAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"addresslistLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_blockNumber","type":"uint256"}],"name":"addresslistLengthAtBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"isListed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_blockNumber","type":"uint256"}],"name":"isListedAtBlock","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_exitingAddresses","type":"address[]"}],"name":"removeAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"DO NOT USE IN PRODUCTION!","errors":{"InvalidAddresslistUpdate(address)":[{"params":{"member":"The array of member addresses to be added or removed."}}]},"kind":"dev","methods":{"addresslistLength()":{"returns":{"_0":"The current address list length."}},"addresslistLengthAtBlock(uint256)":{"params":{"_blockNumber":"The specific block to get the count from. If `0`, then the latest checkpoint value is returned."},"returns":{"_0":"The address list length at the specified block number."}},"isListed(address)":{"params":{"_account":"The account address being checked."},"returns":{"_0":"Whether the account is currently listed."}},"isListedAtBlock(address,uint256)":{"params":{"_account":"The account address being checked.","_blockNumber":"The block number."},"returns":{"_0":"Whether the account is listed at the specified block number."}}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b50610905806100206000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c8063a84eb99911610050578063a84eb999146100ba578063b1bb8d26146100cd578063f794062e146100f057600080fd5b806327f1608d146100775780633628731c146100925780636a6b2d86146100a7575b600080fd5b61007f610103565b6040519081526020015b60405180910390f35b6100a56100a0366004610795565b61011d565b005b61007f6100b536600461080a565b61012b565b6100a56100c8366004610795565b61013e565b6100e06100db36600461083f565b610148565b6040519015158152602001610089565b6100e06100fe366004610869565b610174565b600061010f60016101a8565b6001600160e01b0316905090565b61012782826101f1565b5050565b60006101386001836102e9565b92915050565b610127828261039c565b6001600160a01b038216600090815260208190526040812061016a90836102e9565b6001149392505050565b6001600160a01b0381166000908152602081905260408120610195906101a8565b6001600160e01b03166001149050919050565b805460009080156101e7576101d0836101c260018461089a565b600091825260209091200190565b5464010000000090046001600160e01b03166101ea565b60005b9392505050565b60005b818110156102d457610226838383818110610211576102116108ad565b90506020020160208101906100fe9190610869565b1561027c5782828281811061023d5761023d6108ad565b90506020020160208101906102529190610869565b60405163c0b7477d60e01b81526001600160a01b0390911660048201526024015b60405180910390fd5b6102ca6001600080868686818110610296576102966108ad565b90506020020160208101906102ab9190610869565b6001600160a01b03168152602081019190915260400160002090610405565b50506001016101f4565b506102e360016104398361043d565b50505050565b600043821061033a5760405162461bcd60e51b815260206004820181905260248201527f436865636b706f696e74733a20626c6f636b206e6f7420796574206d696e65646044820152606401610273565b600061034583610475565b84549091506000610358868483856104f5565b905080156103865761036f866101c260018461089a565b5464010000000090046001600160e01b0316610389565b60005b6001600160e01b03169695505050505050565b60005b818110156103f6576103bc838383818110610211576102116108ad565b6103d25782828281811061023d5761023d6108ad565b6103ec6000806000868686818110610296576102966108ad565b505060010161039f565b506102e360016105538361043d565b6000806104238461041543610475565b61041e86610558565b6105d7565b6001600160e01b03918216969116945092505050565b0190565b60008061046885610463610450886101a8565b6001600160e01b0316868863ffffffff16565b610405565b915091505b935093915050565b600063ffffffff8211156104f15760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201527f32206269747300000000000000000000000000000000000000000000000000006064820152608401610273565b5090565b60005b8183101561054b57600061050c848461077a565b60008781526020902090915063ffffffff86169082015463ffffffff16111561053757809250610545565b6105428160016108c3565b93505b506104f8565b509392505050565b900390565b60006001600160e01b038211156104f15760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203260448201527f32342062697473000000000000000000000000000000000000000000000000006064820152608401610273565b8254600090819080156107205760006105f5876101c260018561089a565b60408051808201909152905463ffffffff8082168084526401000000009092046001600160e01b0316602084015291925090871610156106775760405162461bcd60e51b815260206004820152601b60248201527f436865636b706f696e743a2064656372656173696e67206b65797300000000006044820152606401610273565b805163ffffffff8088169116036106c05784610698886101c260018661089a565b80546001600160e01b03929092166401000000000263ffffffff909216919091179055610710565b6040805180820190915263ffffffff80881682526001600160e01b0380881660208085019182528b54600181018d5560008d81529190912094519151909216640100000000029216919091179101555b60200151925083915061046d9050565b50506040805180820190915263ffffffff80851682526001600160e01b0380851660208085019182528854600181018a5560008a81529182209551925190931664010000000002919093161792019190915590508161046d565b600061078960028484186108d6565b6101ea908484166108c3565b600080602083850312156107a857600080fd5b823567ffffffffffffffff808211156107c057600080fd5b818501915085601f8301126107d457600080fd5b8135818111156107e357600080fd5b8660208260051b85010111156107f857600080fd5b60209290920196919550909350505050565b60006020828403121561081c57600080fd5b5035919050565b80356001600160a01b038116811461083a57600080fd5b919050565b6000806040838503121561085257600080fd5b61085b83610823565b946020939093013593505050565b60006020828403121561087b57600080fd5b6101ea82610823565b634e487b7160e01b600052601160045260246000fd5b8181038181111561013857610138610884565b634e487b7160e01b600052603260045260246000fd5b8082018082111561013857610138610884565b6000826108f357634e487b7160e01b600052601260045260246000fd5b50049056fea164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x905 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x72 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xA84EB999 GT PUSH2 0x50 JUMPI DUP1 PUSH4 0xA84EB999 EQ PUSH2 0xBA JUMPI DUP1 PUSH4 0xB1BB8D26 EQ PUSH2 0xCD JUMPI DUP1 PUSH4 0xF794062E EQ PUSH2 0xF0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x27F1608D EQ PUSH2 0x77 JUMPI DUP1 PUSH4 0x3628731C EQ PUSH2 0x92 JUMPI DUP1 PUSH4 0x6A6B2D86 EQ PUSH2 0xA7 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7F PUSH2 0x103 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xA5 PUSH2 0xA0 CALLDATASIZE PUSH1 0x4 PUSH2 0x795 JUMP JUMPDEST PUSH2 0x11D JUMP JUMPDEST STOP JUMPDEST PUSH2 0x7F PUSH2 0xB5 CALLDATASIZE PUSH1 0x4 PUSH2 0x80A JUMP JUMPDEST PUSH2 0x12B JUMP JUMPDEST PUSH2 0xA5 PUSH2 0xC8 CALLDATASIZE PUSH1 0x4 PUSH2 0x795 JUMP JUMPDEST PUSH2 0x13E JUMP JUMPDEST PUSH2 0xE0 PUSH2 0xDB CALLDATASIZE PUSH1 0x4 PUSH2 0x83F JUMP JUMPDEST PUSH2 0x148 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x89 JUMP JUMPDEST PUSH2 0xE0 PUSH2 0xFE CALLDATASIZE PUSH1 0x4 PUSH2 0x869 JUMP JUMPDEST PUSH2 0x174 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x10F PUSH1 0x1 PUSH2 0x1A8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x127 DUP3 DUP3 PUSH2 0x1F1 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x138 PUSH1 0x1 DUP4 PUSH2 0x2E9 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x127 DUP3 DUP3 PUSH2 0x39C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0x16A SWAP1 DUP4 PUSH2 0x2E9 JUMP JUMPDEST PUSH1 0x1 EQ SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0x195 SWAP1 PUSH2 0x1A8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 EQ SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 SLOAD PUSH1 0x0 SWAP1 DUP1 ISZERO PUSH2 0x1E7 JUMPI PUSH2 0x1D0 DUP4 PUSH2 0x1C2 PUSH1 0x1 DUP5 PUSH2 0x89A JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SWAP1 JUMP JUMPDEST SLOAD PUSH5 0x100000000 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH2 0x1EA JUMP JUMPDEST PUSH1 0x0 JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x2D4 JUMPI PUSH2 0x226 DUP4 DUP4 DUP4 DUP2 DUP2 LT PUSH2 0x211 JUMPI PUSH2 0x211 PUSH2 0x8AD JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0xFE SWAP2 SWAP1 PUSH2 0x869 JUMP JUMPDEST ISZERO PUSH2 0x27C JUMPI DUP3 DUP3 DUP3 DUP2 DUP2 LT PUSH2 0x23D JUMPI PUSH2 0x23D PUSH2 0x8AD JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x252 SWAP2 SWAP1 PUSH2 0x869 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xC0B7477D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2CA PUSH1 0x1 PUSH1 0x0 DUP1 DUP7 DUP7 DUP7 DUP2 DUP2 LT PUSH2 0x296 JUMPI PUSH2 0x296 PUSH2 0x8AD JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x2AB SWAP2 SWAP1 PUSH2 0x869 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SWAP1 PUSH2 0x405 JUMP JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x1F4 JUMP JUMPDEST POP PUSH2 0x2E3 PUSH1 0x1 PUSH2 0x439 DUP4 PUSH2 0x43D JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 NUMBER DUP3 LT PUSH2 0x33A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x436865636B706F696E74733A20626C6F636B206E6F7420796574206D696E6564 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x273 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x345 DUP4 PUSH2 0x475 JUMP JUMPDEST DUP5 SLOAD SWAP1 SWAP2 POP PUSH1 0x0 PUSH2 0x358 DUP7 DUP5 DUP4 DUP6 PUSH2 0x4F5 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x386 JUMPI PUSH2 0x36F DUP7 PUSH2 0x1C2 PUSH1 0x1 DUP5 PUSH2 0x89A JUMP JUMPDEST SLOAD PUSH5 0x100000000 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH2 0x389 JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x3F6 JUMPI PUSH2 0x3BC DUP4 DUP4 DUP4 DUP2 DUP2 LT PUSH2 0x211 JUMPI PUSH2 0x211 PUSH2 0x8AD JUMP JUMPDEST PUSH2 0x3D2 JUMPI DUP3 DUP3 DUP3 DUP2 DUP2 LT PUSH2 0x23D JUMPI PUSH2 0x23D PUSH2 0x8AD JUMP JUMPDEST PUSH2 0x3EC PUSH1 0x0 DUP1 PUSH1 0x0 DUP7 DUP7 DUP7 DUP2 DUP2 LT PUSH2 0x296 JUMPI PUSH2 0x296 PUSH2 0x8AD JUMP JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x39F JUMP JUMPDEST POP PUSH2 0x2E3 PUSH1 0x1 PUSH2 0x553 DUP4 PUSH2 0x43D JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x423 DUP5 PUSH2 0x415 NUMBER PUSH2 0x475 JUMP JUMPDEST PUSH2 0x41E DUP7 PUSH2 0x558 JUMP JUMPDEST PUSH2 0x5D7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB SWAP2 DUP3 AND SWAP7 SWAP2 AND SWAP5 POP SWAP3 POP POP POP JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x468 DUP6 PUSH2 0x463 PUSH2 0x450 DUP9 PUSH2 0x1A8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND DUP7 DUP9 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x405 JUMP JUMPDEST SWAP2 POP SWAP2 POP JUMPDEST SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH4 0xFFFFFFFF DUP3 GT ISZERO PUSH2 0x4F1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53616665436173743A2076616C756520646F65736E27742066697420696E2033 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x3220626974730000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x273 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP2 DUP4 LT ISZERO PUSH2 0x54B JUMPI PUSH1 0x0 PUSH2 0x50C DUP5 DUP5 PUSH2 0x77A JUMP JUMPDEST PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x20 SWAP1 KECCAK256 SWAP1 SWAP2 POP PUSH4 0xFFFFFFFF DUP7 AND SWAP1 DUP3 ADD SLOAD PUSH4 0xFFFFFFFF AND GT ISZERO PUSH2 0x537 JUMPI DUP1 SWAP3 POP PUSH2 0x545 JUMP JUMPDEST PUSH2 0x542 DUP2 PUSH1 0x1 PUSH2 0x8C3 JUMP JUMPDEST SWAP4 POP JUMPDEST POP PUSH2 0x4F8 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB DUP3 GT ISZERO PUSH2 0x4F1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x27 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53616665436173743A2076616C756520646F65736E27742066697420696E2032 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x3234206269747300000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x273 JUMP JUMPDEST DUP3 SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 DUP1 ISZERO PUSH2 0x720 JUMPI PUSH1 0x0 PUSH2 0x5F5 DUP8 PUSH2 0x1C2 PUSH1 0x1 DUP6 PUSH2 0x89A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE SWAP1 SLOAD PUSH4 0xFFFFFFFF DUP1 DUP3 AND DUP1 DUP5 MSTORE PUSH5 0x100000000 SWAP1 SWAP3 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x20 DUP5 ADD MSTORE SWAP2 SWAP3 POP SWAP1 DUP8 AND LT ISZERO PUSH2 0x677 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x436865636B706F696E743A2064656372656173696E67206B6579730000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x273 JUMP JUMPDEST DUP1 MLOAD PUSH4 0xFFFFFFFF DUP1 DUP9 AND SWAP2 AND SUB PUSH2 0x6C0 JUMPI DUP5 PUSH2 0x698 DUP9 PUSH2 0x1C2 PUSH1 0x1 DUP7 PUSH2 0x89A JUMP JUMPDEST DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB SWAP3 SWAP1 SWAP3 AND PUSH5 0x100000000 MUL PUSH4 0xFFFFFFFF SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x710 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH4 0xFFFFFFFF DUP1 DUP9 AND DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB DUP1 DUP9 AND PUSH1 0x20 DUP1 DUP6 ADD SWAP2 DUP3 MSTORE DUP12 SLOAD PUSH1 0x1 DUP2 ADD DUP14 SSTORE PUSH1 0x0 DUP14 DUP2 MSTORE SWAP2 SWAP1 SWAP2 KECCAK256 SWAP5 MLOAD SWAP2 MLOAD SWAP1 SWAP3 AND PUSH5 0x100000000 MUL SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP2 ADD SSTORE JUMPDEST PUSH1 0x20 ADD MLOAD SWAP3 POP DUP4 SWAP2 POP PUSH2 0x46D SWAP1 POP JUMP JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH4 0xFFFFFFFF DUP1 DUP6 AND DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB DUP1 DUP6 AND PUSH1 0x20 DUP1 DUP6 ADD SWAP2 DUP3 MSTORE DUP9 SLOAD PUSH1 0x1 DUP2 ADD DUP11 SSTORE PUSH1 0x0 DUP11 DUP2 MSTORE SWAP2 DUP3 KECCAK256 SWAP6 MLOAD SWAP3 MLOAD SWAP1 SWAP4 AND PUSH5 0x100000000 MUL SWAP2 SWAP1 SWAP4 AND OR SWAP3 ADD SWAP2 SWAP1 SWAP2 SSTORE SWAP1 POP DUP2 PUSH2 0x46D JUMP JUMPDEST PUSH1 0x0 PUSH2 0x789 PUSH1 0x2 DUP5 DUP5 XOR PUSH2 0x8D6 JUMP JUMPDEST PUSH2 0x1EA SWAP1 DUP5 DUP5 AND PUSH2 0x8C3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x7A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x7C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x7D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x7E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 PUSH1 0x20 DUP3 PUSH1 0x5 SHL DUP6 ADD ADD GT ISZERO PUSH2 0x7F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 SWAP3 SWAP1 SWAP3 ADD SWAP7 SWAP2 SWAP6 POP SWAP1 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x81C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x83A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x852 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x85B DUP4 PUSH2 0x823 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x87B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1EA DUP3 PUSH2 0x823 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x138 JUMPI PUSH2 0x138 PUSH2 0x884 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x138 JUMPI PUSH2 0x138 PUSH2 0x884 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x8F3 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP DIV SWAP1 JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"295:288:55:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_addAddresses_13773":{"entryPoint":497,"id":13773,"parameterSlots":2,"returnSlots":0},"@_insert_1418":{"entryPoint":1495,"id":1418,"parameterSlots":3,"returnSlots":2},"@_removeAddresses_13825":{"entryPoint":924,"id":13825,"parameterSlots":2,"returnSlots":0},"@_uncheckedAdd_14716":{"entryPoint":1081,"id":14716,"parameterSlots":2,"returnSlots":1},"@_uncheckedSub_14732":{"entryPoint":1363,"id":14732,"parameterSlots":2,"returnSlots":1},"@_unsafeAccess_1537":{"entryPoint":null,"id":1537,"parameterSlots":2,"returnSlots":1},"@_upperBinaryLookup_1470":{"entryPoint":1269,"id":1470,"parameterSlots":4,"returnSlots":1},"@addAddresses_12449":{"entryPoint":285,"id":12449,"parameterSlots":2,"returnSlots":0},"@addresslistLengthAtBlock_13711":{"entryPoint":299,"id":13711,"parameterSlots":1,"returnSlots":1},"@addresslistLength_13722":{"entryPoint":259,"id":13722,"parameterSlots":0,"returnSlots":1},"@average_2900":{"entryPoint":1914,"id":2900,"parameterSlots":2,"returnSlots":1},"@getAtBlock_1073":{"entryPoint":745,"id":1073,"parameterSlots":2,"returnSlots":1},"@isListedAtBlock_13680":{"entryPoint":328,"id":13680,"parameterSlots":2,"returnSlots":1},"@isListed_13697":{"entryPoint":372,"id":13697,"parameterSlots":1,"returnSlots":1},"@latest_1265":{"entryPoint":424,"id":1265,"parameterSlots":1,"returnSlots":1},"@push_1201":{"entryPoint":1029,"id":1201,"parameterSlots":2,"returnSlots":2},"@push_1235":{"entryPoint":1085,"id":1235,"parameterSlots":3,"returnSlots":2},"@removeAddresses_12460":{"entryPoint":318,"id":12460,"parameterSlots":2,"returnSlots":0},"@toUint224_3803":{"entryPoint":1368,"id":3803,"parameterSlots":1,"returnSlots":1},"@toUint32_4403":{"entryPoint":1141,"id":4403,"parameterSlots":1,"returnSlots":1},"abi_decode_address":{"entryPoint":2083,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_tuple_t_address":{"entryPoint":2153,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_uint256":{"entryPoint":2111,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_array$_t_address_$dyn_calldata_ptr":{"entryPoint":1941,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_uint256":{"entryPoint":2058,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_4f6b1769383e9e01fad001f10d4f9180a25f63424c2597419936b157d29f34ec__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_65bd29ebd873d82da6b3634513fc6582859c8e00f2a09cb4bdbeddf7d05eb5be__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_9d2acf551b2466898443b9bc3a403a4d86037386bc5a8960c1bbb0f204e69b79__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_c907489dafcfb622d3b83f2657a14d6da2f59e0de3116af0d6a80554c1a7cb19__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"checked_add_t_uint256":{"entryPoint":2243,"id":null,"parameterSlots":2,"returnSlots":1},"checked_div_t_uint256":{"entryPoint":2262,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_t_uint256":{"entryPoint":2202,"id":null,"parameterSlots":2,"returnSlots":1},"panic_error_0x11":{"entryPoint":2180,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x32":{"entryPoint":2221,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:4353:92","statements":[{"nodeType":"YulBlock","src":"6:3:92","statements":[]},{"body":{"nodeType":"YulBlock","src":"115:76:92","statements":[{"nodeType":"YulAssignment","src":"125:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"137:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"148:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"133:3:92"},"nodeType":"YulFunctionCall","src":"133:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"125:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"167:9:92"},{"name":"value0","nodeType":"YulIdentifier","src":"178:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"160:6:92"},"nodeType":"YulFunctionCall","src":"160:25:92"},"nodeType":"YulExpressionStatement","src":"160:25:92"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"84:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"95:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"106:4:92","type":""}],"src":"14:177:92"},{"body":{"nodeType":"YulBlock","src":"301:510:92","statements":[{"body":{"nodeType":"YulBlock","src":"347:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"356:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"359:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"349:6:92"},"nodeType":"YulFunctionCall","src":"349:12:92"},"nodeType":"YulExpressionStatement","src":"349:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"322:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"331:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"318:3:92"},"nodeType":"YulFunctionCall","src":"318:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"343:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"314:3:92"},"nodeType":"YulFunctionCall","src":"314:32:92"},"nodeType":"YulIf","src":"311:52:92"},{"nodeType":"YulVariableDeclaration","src":"372:37:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"399:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"386:12:92"},"nodeType":"YulFunctionCall","src":"386:23:92"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"376:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"418:28:92","value":{"kind":"number","nodeType":"YulLiteral","src":"428:18:92","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"422:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"473:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"482:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"485:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"475:6:92"},"nodeType":"YulFunctionCall","src":"475:12:92"},"nodeType":"YulExpressionStatement","src":"475:12:92"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"461:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"469:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"458:2:92"},"nodeType":"YulFunctionCall","src":"458:14:92"},"nodeType":"YulIf","src":"455:34:92"},{"nodeType":"YulVariableDeclaration","src":"498:32:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"512:9:92"},{"name":"offset","nodeType":"YulIdentifier","src":"523:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"508:3:92"},"nodeType":"YulFunctionCall","src":"508:22:92"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"502:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"578:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"587:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"590:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"580:6:92"},"nodeType":"YulFunctionCall","src":"580:12:92"},"nodeType":"YulExpressionStatement","src":"580:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"557:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"561:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"553:3:92"},"nodeType":"YulFunctionCall","src":"553:13:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"568:7:92"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"549:3:92"},"nodeType":"YulFunctionCall","src":"549:27:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"542:6:92"},"nodeType":"YulFunctionCall","src":"542:35:92"},"nodeType":"YulIf","src":"539:55:92"},{"nodeType":"YulVariableDeclaration","src":"603:30:92","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"630:2:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"617:12:92"},"nodeType":"YulFunctionCall","src":"617:16:92"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"607:6:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"660:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"669:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"672:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"662:6:92"},"nodeType":"YulFunctionCall","src":"662:12:92"},"nodeType":"YulExpressionStatement","src":"662:12:92"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"648:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"656:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"645:2:92"},"nodeType":"YulFunctionCall","src":"645:14:92"},"nodeType":"YulIf","src":"642:34:92"},{"body":{"nodeType":"YulBlock","src":"734:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"743:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"746:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"736:6:92"},"nodeType":"YulFunctionCall","src":"736:12:92"},"nodeType":"YulExpressionStatement","src":"736:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"699:2:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"707:1:92","type":"","value":"5"},{"name":"length","nodeType":"YulIdentifier","src":"710:6:92"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"703:3:92"},"nodeType":"YulFunctionCall","src":"703:14:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"695:3:92"},"nodeType":"YulFunctionCall","src":"695:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"720:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"691:3:92"},"nodeType":"YulFunctionCall","src":"691:32:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"725:7:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"688:2:92"},"nodeType":"YulFunctionCall","src":"688:45:92"},"nodeType":"YulIf","src":"685:65:92"},{"nodeType":"YulAssignment","src":"759:21:92","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"773:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"777:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"769:3:92"},"nodeType":"YulFunctionCall","src":"769:11:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"759:6:92"}]},{"nodeType":"YulAssignment","src":"789:16:92","value":{"name":"length","nodeType":"YulIdentifier","src":"799:6:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"789:6:92"}]}]},"name":"abi_decode_tuple_t_array$_t_address_$dyn_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"259:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"270:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"282:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"290:6:92","type":""}],"src":"196:615:92"},{"body":{"nodeType":"YulBlock","src":"886:110:92","statements":[{"body":{"nodeType":"YulBlock","src":"932:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"941:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"944:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"934:6:92"},"nodeType":"YulFunctionCall","src":"934:12:92"},"nodeType":"YulExpressionStatement","src":"934:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"907:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"916:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"903:3:92"},"nodeType":"YulFunctionCall","src":"903:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"928:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"899:3:92"},"nodeType":"YulFunctionCall","src":"899:32:92"},"nodeType":"YulIf","src":"896:52:92"},{"nodeType":"YulAssignment","src":"957:33:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"980:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"967:12:92"},"nodeType":"YulFunctionCall","src":"967:23:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"957:6:92"}]}]},"name":"abi_decode_tuple_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"852:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"863:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"875:6:92","type":""}],"src":"816:180:92"},{"body":{"nodeType":"YulBlock","src":"1050:147:92","statements":[{"nodeType":"YulAssignment","src":"1060:29:92","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1082:6:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1069:12:92"},"nodeType":"YulFunctionCall","src":"1069:20:92"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"1060:5:92"}]},{"body":{"nodeType":"YulBlock","src":"1175:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1184:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1187:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1177:6:92"},"nodeType":"YulFunctionCall","src":"1177:12:92"},"nodeType":"YulExpressionStatement","src":"1177:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1111:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1122:5:92"},{"kind":"number","nodeType":"YulLiteral","src":"1129:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1118:3:92"},"nodeType":"YulFunctionCall","src":"1118:54:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1108:2:92"},"nodeType":"YulFunctionCall","src":"1108:65:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1101:6:92"},"nodeType":"YulFunctionCall","src":"1101:73:92"},"nodeType":"YulIf","src":"1098:93:92"}]},"name":"abi_decode_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"1029:6:92","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"1040:5:92","type":""}],"src":"1001:196:92"},{"body":{"nodeType":"YulBlock","src":"1289:167:92","statements":[{"body":{"nodeType":"YulBlock","src":"1335:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1344:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1347:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1337:6:92"},"nodeType":"YulFunctionCall","src":"1337:12:92"},"nodeType":"YulExpressionStatement","src":"1337:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1310:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"1319:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1306:3:92"},"nodeType":"YulFunctionCall","src":"1306:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"1331:2:92","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1302:3:92"},"nodeType":"YulFunctionCall","src":"1302:32:92"},"nodeType":"YulIf","src":"1299:52:92"},{"nodeType":"YulAssignment","src":"1360:39:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1389:9:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"1370:18:92"},"nodeType":"YulFunctionCall","src":"1370:29:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1360:6:92"}]},{"nodeType":"YulAssignment","src":"1408:42:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1435:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1446:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1431:3:92"},"nodeType":"YulFunctionCall","src":"1431:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1418:12:92"},"nodeType":"YulFunctionCall","src":"1418:32:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1408:6:92"}]}]},"name":"abi_decode_tuple_t_addresst_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1247:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1258:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1270:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1278:6:92","type":""}],"src":"1202:254:92"},{"body":{"nodeType":"YulBlock","src":"1556:92:92","statements":[{"nodeType":"YulAssignment","src":"1566:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1578:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1589:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1574:3:92"},"nodeType":"YulFunctionCall","src":"1574:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1566:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1608:9:92"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1633:6:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1626:6:92"},"nodeType":"YulFunctionCall","src":"1626:14:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1619:6:92"},"nodeType":"YulFunctionCall","src":"1619:22:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1601:6:92"},"nodeType":"YulFunctionCall","src":"1601:41:92"},"nodeType":"YulExpressionStatement","src":"1601:41:92"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1525:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1536:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1547:4:92","type":""}],"src":"1461:187:92"},{"body":{"nodeType":"YulBlock","src":"1723:116:92","statements":[{"body":{"nodeType":"YulBlock","src":"1769:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1778:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1781:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1771:6:92"},"nodeType":"YulFunctionCall","src":"1771:12:92"},"nodeType":"YulExpressionStatement","src":"1771:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1744:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"1753:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1740:3:92"},"nodeType":"YulFunctionCall","src":"1740:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"1765:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1736:3:92"},"nodeType":"YulFunctionCall","src":"1736:32:92"},"nodeType":"YulIf","src":"1733:52:92"},{"nodeType":"YulAssignment","src":"1794:39:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1823:9:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"1804:18:92"},"nodeType":"YulFunctionCall","src":"1804:29:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1794:6:92"}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1689:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1700:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1712:6:92","type":""}],"src":"1653:186:92"},{"body":{"nodeType":"YulBlock","src":"1876:95:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1893:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1900:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"1905:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1896:3:92"},"nodeType":"YulFunctionCall","src":"1896:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1886:6:92"},"nodeType":"YulFunctionCall","src":"1886:31:92"},"nodeType":"YulExpressionStatement","src":"1886:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1933:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"1936:4:92","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1926:6:92"},"nodeType":"YulFunctionCall","src":"1926:15:92"},"nodeType":"YulExpressionStatement","src":"1926:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1957:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1960:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1950:6:92"},"nodeType":"YulFunctionCall","src":"1950:15:92"},"nodeType":"YulExpressionStatement","src":"1950:15:92"}]},"name":"panic_error_0x11","nodeType":"YulFunctionDefinition","src":"1844:127:92"},{"body":{"nodeType":"YulBlock","src":"2025:79:92","statements":[{"nodeType":"YulAssignment","src":"2035:17:92","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"2047:1:92"},{"name":"y","nodeType":"YulIdentifier","src":"2050:1:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2043:3:92"},"nodeType":"YulFunctionCall","src":"2043:9:92"},"variableNames":[{"name":"diff","nodeType":"YulIdentifier","src":"2035:4:92"}]},{"body":{"nodeType":"YulBlock","src":"2076:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"2078:16:92"},"nodeType":"YulFunctionCall","src":"2078:18:92"},"nodeType":"YulExpressionStatement","src":"2078:18:92"}]},"condition":{"arguments":[{"name":"diff","nodeType":"YulIdentifier","src":"2067:4:92"},{"name":"x","nodeType":"YulIdentifier","src":"2073:1:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2064:2:92"},"nodeType":"YulFunctionCall","src":"2064:11:92"},"nodeType":"YulIf","src":"2061:37:92"}]},"name":"checked_sub_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"2007:1:92","type":""},{"name":"y","nodeType":"YulTypedName","src":"2010:1:92","type":""}],"returnVariables":[{"name":"diff","nodeType":"YulTypedName","src":"2016:4:92","type":""}],"src":"1976:128:92"},{"body":{"nodeType":"YulBlock","src":"2141:95:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2158:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2165:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"2170:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2161:3:92"},"nodeType":"YulFunctionCall","src":"2161:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2151:6:92"},"nodeType":"YulFunctionCall","src":"2151:31:92"},"nodeType":"YulExpressionStatement","src":"2151:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2198:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"2201:4:92","type":"","value":"0x32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2191:6:92"},"nodeType":"YulFunctionCall","src":"2191:15:92"},"nodeType":"YulExpressionStatement","src":"2191:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2222:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2225:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2215:6:92"},"nodeType":"YulFunctionCall","src":"2215:15:92"},"nodeType":"YulExpressionStatement","src":"2215:15:92"}]},"name":"panic_error_0x32","nodeType":"YulFunctionDefinition","src":"2109:127:92"},{"body":{"nodeType":"YulBlock","src":"2342:125:92","statements":[{"nodeType":"YulAssignment","src":"2352:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2364:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2375:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2360:3:92"},"nodeType":"YulFunctionCall","src":"2360:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2352:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2394:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2409:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"2417:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2405:3:92"},"nodeType":"YulFunctionCall","src":"2405:55:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2387:6:92"},"nodeType":"YulFunctionCall","src":"2387:74:92"},"nodeType":"YulExpressionStatement","src":"2387:74:92"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2311:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"2322:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2333:4:92","type":""}],"src":"2241:226:92"},{"body":{"nodeType":"YulBlock","src":"2646:182:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2663:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2674:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2656:6:92"},"nodeType":"YulFunctionCall","src":"2656:21:92"},"nodeType":"YulExpressionStatement","src":"2656:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2697:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2708:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2693:3:92"},"nodeType":"YulFunctionCall","src":"2693:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"2713:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2686:6:92"},"nodeType":"YulFunctionCall","src":"2686:30:92"},"nodeType":"YulExpressionStatement","src":"2686:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2736:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2747:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2732:3:92"},"nodeType":"YulFunctionCall","src":"2732:18:92"},{"hexValue":"436865636b706f696e74733a20626c6f636b206e6f7420796574206d696e6564","kind":"string","nodeType":"YulLiteral","src":"2752:34:92","type":"","value":"Checkpoints: block not yet mined"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2725:6:92"},"nodeType":"YulFunctionCall","src":"2725:62:92"},"nodeType":"YulExpressionStatement","src":"2725:62:92"},{"nodeType":"YulAssignment","src":"2796:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2808:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2819:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2804:3:92"},"nodeType":"YulFunctionCall","src":"2804:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2796:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_65bd29ebd873d82da6b3634513fc6582859c8e00f2a09cb4bdbeddf7d05eb5be__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2623:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2637:4:92","type":""}],"src":"2472:356:92"},{"body":{"nodeType":"YulBlock","src":"3007:228:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3024:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3035:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3017:6:92"},"nodeType":"YulFunctionCall","src":"3017:21:92"},"nodeType":"YulExpressionStatement","src":"3017:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3058:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3069:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3054:3:92"},"nodeType":"YulFunctionCall","src":"3054:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"3074:2:92","type":"","value":"38"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3047:6:92"},"nodeType":"YulFunctionCall","src":"3047:30:92"},"nodeType":"YulExpressionStatement","src":"3047:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3097:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3108:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3093:3:92"},"nodeType":"YulFunctionCall","src":"3093:18:92"},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e2033","kind":"string","nodeType":"YulLiteral","src":"3113:34:92","type":"","value":"SafeCast: value doesn't fit in 3"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3086:6:92"},"nodeType":"YulFunctionCall","src":"3086:62:92"},"nodeType":"YulExpressionStatement","src":"3086:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3168:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3179:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3164:3:92"},"nodeType":"YulFunctionCall","src":"3164:18:92"},{"hexValue":"322062697473","kind":"string","nodeType":"YulLiteral","src":"3184:8:92","type":"","value":"2 bits"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3157:6:92"},"nodeType":"YulFunctionCall","src":"3157:36:92"},"nodeType":"YulExpressionStatement","src":"3157:36:92"},{"nodeType":"YulAssignment","src":"3202:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3214:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3225:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3210:3:92"},"nodeType":"YulFunctionCall","src":"3210:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3202:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_c907489dafcfb622d3b83f2657a14d6da2f59e0de3116af0d6a80554c1a7cb19__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2984:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2998:4:92","type":""}],"src":"2833:402:92"},{"body":{"nodeType":"YulBlock","src":"3288:77:92","statements":[{"nodeType":"YulAssignment","src":"3298:16:92","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"3309:1:92"},{"name":"y","nodeType":"YulIdentifier","src":"3312:1:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3305:3:92"},"nodeType":"YulFunctionCall","src":"3305:9:92"},"variableNames":[{"name":"sum","nodeType":"YulIdentifier","src":"3298:3:92"}]},{"body":{"nodeType":"YulBlock","src":"3337:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"3339:16:92"},"nodeType":"YulFunctionCall","src":"3339:18:92"},"nodeType":"YulExpressionStatement","src":"3339:18:92"}]},"condition":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"3329:1:92"},{"name":"sum","nodeType":"YulIdentifier","src":"3332:3:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3326:2:92"},"nodeType":"YulFunctionCall","src":"3326:10:92"},"nodeType":"YulIf","src":"3323:36:92"}]},"name":"checked_add_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"3271:1:92","type":""},{"name":"y","nodeType":"YulTypedName","src":"3274:1:92","type":""}],"returnVariables":[{"name":"sum","nodeType":"YulTypedName","src":"3280:3:92","type":""}],"src":"3240:125:92"},{"body":{"nodeType":"YulBlock","src":"3544:229:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3561:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3572:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3554:6:92"},"nodeType":"YulFunctionCall","src":"3554:21:92"},"nodeType":"YulExpressionStatement","src":"3554:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3595:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3606:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3591:3:92"},"nodeType":"YulFunctionCall","src":"3591:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"3611:2:92","type":"","value":"39"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3584:6:92"},"nodeType":"YulFunctionCall","src":"3584:30:92"},"nodeType":"YulExpressionStatement","src":"3584:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3634:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3645:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3630:3:92"},"nodeType":"YulFunctionCall","src":"3630:18:92"},{"hexValue":"53616665436173743a2076616c756520646f65736e27742066697420696e2032","kind":"string","nodeType":"YulLiteral","src":"3650:34:92","type":"","value":"SafeCast: value doesn't fit in 2"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3623:6:92"},"nodeType":"YulFunctionCall","src":"3623:62:92"},"nodeType":"YulExpressionStatement","src":"3623:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3705:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3716:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3701:3:92"},"nodeType":"YulFunctionCall","src":"3701:18:92"},{"hexValue":"32342062697473","kind":"string","nodeType":"YulLiteral","src":"3721:9:92","type":"","value":"24 bits"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3694:6:92"},"nodeType":"YulFunctionCall","src":"3694:37:92"},"nodeType":"YulExpressionStatement","src":"3694:37:92"},{"nodeType":"YulAssignment","src":"3740:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3752:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3763:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3748:3:92"},"nodeType":"YulFunctionCall","src":"3748:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3740:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_9d2acf551b2466898443b9bc3a403a4d86037386bc5a8960c1bbb0f204e69b79__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3521:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3535:4:92","type":""}],"src":"3370:403:92"},{"body":{"nodeType":"YulBlock","src":"3952:177:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3969:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3980:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3962:6:92"},"nodeType":"YulFunctionCall","src":"3962:21:92"},"nodeType":"YulExpressionStatement","src":"3962:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4003:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4014:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3999:3:92"},"nodeType":"YulFunctionCall","src":"3999:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"4019:2:92","type":"","value":"27"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3992:6:92"},"nodeType":"YulFunctionCall","src":"3992:30:92"},"nodeType":"YulExpressionStatement","src":"3992:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4042:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4053:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4038:3:92"},"nodeType":"YulFunctionCall","src":"4038:18:92"},{"hexValue":"436865636b706f696e743a2064656372656173696e67206b657973","kind":"string","nodeType":"YulLiteral","src":"4058:29:92","type":"","value":"Checkpoint: decreasing keys"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4031:6:92"},"nodeType":"YulFunctionCall","src":"4031:57:92"},"nodeType":"YulExpressionStatement","src":"4031:57:92"},{"nodeType":"YulAssignment","src":"4097:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4109:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4120:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4105:3:92"},"nodeType":"YulFunctionCall","src":"4105:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4097:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_4f6b1769383e9e01fad001f10d4f9180a25f63424c2597419936b157d29f34ec__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3929:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3943:4:92","type":""}],"src":"3778:351:92"},{"body":{"nodeType":"YulBlock","src":"4180:171:92","statements":[{"body":{"nodeType":"YulBlock","src":"4211:111:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4232:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4239:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"4244:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"4235:3:92"},"nodeType":"YulFunctionCall","src":"4235:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4225:6:92"},"nodeType":"YulFunctionCall","src":"4225:31:92"},"nodeType":"YulExpressionStatement","src":"4225:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4276:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"4279:4:92","type":"","value":"0x12"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4269:6:92"},"nodeType":"YulFunctionCall","src":"4269:15:92"},"nodeType":"YulExpressionStatement","src":"4269:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4304:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4307:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4297:6:92"},"nodeType":"YulFunctionCall","src":"4297:15:92"},"nodeType":"YulExpressionStatement","src":"4297:15:92"}]},"condition":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"4200:1:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"4193:6:92"},"nodeType":"YulFunctionCall","src":"4193:9:92"},"nodeType":"YulIf","src":"4190:132:92"},{"nodeType":"YulAssignment","src":"4331:14:92","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"4340:1:92"},{"name":"y","nodeType":"YulIdentifier","src":"4343:1:92"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"4336:3:92"},"nodeType":"YulFunctionCall","src":"4336:9:92"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"4331:1:92"}]}]},"name":"checked_div_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"4165:1:92","type":""},{"name":"y","nodeType":"YulTypedName","src":"4168:1:92","type":""}],"returnVariables":[{"name":"r","nodeType":"YulTypedName","src":"4174:1:92","type":""}],"src":"4134:217:92"}]},"contents":"{\n { }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_decode_tuple_t_array$_t_address_$dyn_calldata_ptr(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let offset := calldataload(headStart)\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n let _2 := add(headStart, offset)\n if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n let length := calldataload(_2)\n if gt(length, _1) { revert(0, 0) }\n if gt(add(add(_2, shl(5, length)), 32), dataEnd) { revert(0, 0) }\n value0 := add(_2, 32)\n value1 := length\n }\n function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := calldataload(headStart)\n }\n function abi_decode_address(offset) -> value\n {\n value := calldataload(offset)\n if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := calldataload(add(headStart, 32))\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n }\n function panic_error_0x11()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n function checked_sub_t_uint256(x, y) -> diff\n {\n diff := sub(x, y)\n if gt(diff, x) { panic_error_0x11() }\n }\n function panic_error_0x32()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_encode_tuple_t_stringliteral_65bd29ebd873d82da6b3634513fc6582859c8e00f2a09cb4bdbeddf7d05eb5be__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 32)\n mstore(add(headStart, 64), \"Checkpoints: block not yet mined\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_c907489dafcfb622d3b83f2657a14d6da2f59e0de3116af0d6a80554c1a7cb19__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 38)\n mstore(add(headStart, 64), \"SafeCast: value doesn't fit in 3\")\n mstore(add(headStart, 96), \"2 bits\")\n tail := add(headStart, 128)\n }\n function checked_add_t_uint256(x, y) -> sum\n {\n sum := add(x, y)\n if gt(x, sum) { panic_error_0x11() }\n }\n function abi_encode_tuple_t_stringliteral_9d2acf551b2466898443b9bc3a403a4d86037386bc5a8960c1bbb0f204e69b79__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 39)\n mstore(add(headStart, 64), \"SafeCast: value doesn't fit in 2\")\n mstore(add(headStart, 96), \"24 bits\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_4f6b1769383e9e01fad001f10d4f9180a25f63424c2597419936b157d29f34ec__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 27)\n mstore(add(headStart, 64), \"Checkpoint: decreasing keys\")\n tail := add(headStart, 96)\n }\n function checked_div_t_uint256(x, y) -> r\n {\n if iszero(y)\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x12)\n revert(0, 0x24)\n }\n r := div(x, y)\n }\n}","id":92,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100725760003560e01c8063a84eb99911610050578063a84eb999146100ba578063b1bb8d26146100cd578063f794062e146100f057600080fd5b806327f1608d146100775780633628731c146100925780636a6b2d86146100a7575b600080fd5b61007f610103565b6040519081526020015b60405180910390f35b6100a56100a0366004610795565b61011d565b005b61007f6100b536600461080a565b61012b565b6100a56100c8366004610795565b61013e565b6100e06100db36600461083f565b610148565b6040519015158152602001610089565b6100e06100fe366004610869565b610174565b600061010f60016101a8565b6001600160e01b0316905090565b61012782826101f1565b5050565b60006101386001836102e9565b92915050565b610127828261039c565b6001600160a01b038216600090815260208190526040812061016a90836102e9565b6001149392505050565b6001600160a01b0381166000908152602081905260408120610195906101a8565b6001600160e01b03166001149050919050565b805460009080156101e7576101d0836101c260018461089a565b600091825260209091200190565b5464010000000090046001600160e01b03166101ea565b60005b9392505050565b60005b818110156102d457610226838383818110610211576102116108ad565b90506020020160208101906100fe9190610869565b1561027c5782828281811061023d5761023d6108ad565b90506020020160208101906102529190610869565b60405163c0b7477d60e01b81526001600160a01b0390911660048201526024015b60405180910390fd5b6102ca6001600080868686818110610296576102966108ad565b90506020020160208101906102ab9190610869565b6001600160a01b03168152602081019190915260400160002090610405565b50506001016101f4565b506102e360016104398361043d565b50505050565b600043821061033a5760405162461bcd60e51b815260206004820181905260248201527f436865636b706f696e74733a20626c6f636b206e6f7420796574206d696e65646044820152606401610273565b600061034583610475565b84549091506000610358868483856104f5565b905080156103865761036f866101c260018461089a565b5464010000000090046001600160e01b0316610389565b60005b6001600160e01b03169695505050505050565b60005b818110156103f6576103bc838383818110610211576102116108ad565b6103d25782828281811061023d5761023d6108ad565b6103ec6000806000868686818110610296576102966108ad565b505060010161039f565b506102e360016105538361043d565b6000806104238461041543610475565b61041e86610558565b6105d7565b6001600160e01b03918216969116945092505050565b0190565b60008061046885610463610450886101a8565b6001600160e01b0316868863ffffffff16565b610405565b915091505b935093915050565b600063ffffffff8211156104f15760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201527f32206269747300000000000000000000000000000000000000000000000000006064820152608401610273565b5090565b60005b8183101561054b57600061050c848461077a565b60008781526020902090915063ffffffff86169082015463ffffffff16111561053757809250610545565b6105428160016108c3565b93505b506104f8565b509392505050565b900390565b60006001600160e01b038211156104f15760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203260448201527f32342062697473000000000000000000000000000000000000000000000000006064820152608401610273565b8254600090819080156107205760006105f5876101c260018561089a565b60408051808201909152905463ffffffff8082168084526401000000009092046001600160e01b0316602084015291925090871610156106775760405162461bcd60e51b815260206004820152601b60248201527f436865636b706f696e743a2064656372656173696e67206b65797300000000006044820152606401610273565b805163ffffffff8088169116036106c05784610698886101c260018661089a565b80546001600160e01b03929092166401000000000263ffffffff909216919091179055610710565b6040805180820190915263ffffffff80881682526001600160e01b0380881660208085019182528b54600181018d5560008d81529190912094519151909216640100000000029216919091179101555b60200151925083915061046d9050565b50506040805180820190915263ffffffff80851682526001600160e01b0380851660208085019182528854600181018a5560008a81529182209551925190931664010000000002919093161792019190915590508161046d565b600061078960028484186108d6565b6101ea908484166108c3565b600080602083850312156107a857600080fd5b823567ffffffffffffffff808211156107c057600080fd5b818501915085601f8301126107d457600080fd5b8135818111156107e357600080fd5b8660208260051b85010111156107f857600080fd5b60209290920196919550909350505050565b60006020828403121561081c57600080fd5b5035919050565b80356001600160a01b038116811461083a57600080fd5b919050565b6000806040838503121561085257600080fd5b61085b83610823565b946020939093013593505050565b60006020828403121561087b57600080fd5b6101ea82610823565b634e487b7160e01b600052601160045260246000fd5b8181038181111561013857610138610884565b634e487b7160e01b600052603260045260246000fd5b8082018082111561013857610138610884565b6000826108f357634e487b7160e01b600052601260045260246000fd5b50049056fea164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x72 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xA84EB999 GT PUSH2 0x50 JUMPI DUP1 PUSH4 0xA84EB999 EQ PUSH2 0xBA JUMPI DUP1 PUSH4 0xB1BB8D26 EQ PUSH2 0xCD JUMPI DUP1 PUSH4 0xF794062E EQ PUSH2 0xF0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x27F1608D EQ PUSH2 0x77 JUMPI DUP1 PUSH4 0x3628731C EQ PUSH2 0x92 JUMPI DUP1 PUSH4 0x6A6B2D86 EQ PUSH2 0xA7 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7F PUSH2 0x103 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xA5 PUSH2 0xA0 CALLDATASIZE PUSH1 0x4 PUSH2 0x795 JUMP JUMPDEST PUSH2 0x11D JUMP JUMPDEST STOP JUMPDEST PUSH2 0x7F PUSH2 0xB5 CALLDATASIZE PUSH1 0x4 PUSH2 0x80A JUMP JUMPDEST PUSH2 0x12B JUMP JUMPDEST PUSH2 0xA5 PUSH2 0xC8 CALLDATASIZE PUSH1 0x4 PUSH2 0x795 JUMP JUMPDEST PUSH2 0x13E JUMP JUMPDEST PUSH2 0xE0 PUSH2 0xDB CALLDATASIZE PUSH1 0x4 PUSH2 0x83F JUMP JUMPDEST PUSH2 0x148 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x89 JUMP JUMPDEST PUSH2 0xE0 PUSH2 0xFE CALLDATASIZE PUSH1 0x4 PUSH2 0x869 JUMP JUMPDEST PUSH2 0x174 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x10F PUSH1 0x1 PUSH2 0x1A8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x127 DUP3 DUP3 PUSH2 0x1F1 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x138 PUSH1 0x1 DUP4 PUSH2 0x2E9 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x127 DUP3 DUP3 PUSH2 0x39C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0x16A SWAP1 DUP4 PUSH2 0x2E9 JUMP JUMPDEST PUSH1 0x1 EQ SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0x195 SWAP1 PUSH2 0x1A8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 EQ SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 SLOAD PUSH1 0x0 SWAP1 DUP1 ISZERO PUSH2 0x1E7 JUMPI PUSH2 0x1D0 DUP4 PUSH2 0x1C2 PUSH1 0x1 DUP5 PUSH2 0x89A JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SWAP1 JUMP JUMPDEST SLOAD PUSH5 0x100000000 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH2 0x1EA JUMP JUMPDEST PUSH1 0x0 JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x2D4 JUMPI PUSH2 0x226 DUP4 DUP4 DUP4 DUP2 DUP2 LT PUSH2 0x211 JUMPI PUSH2 0x211 PUSH2 0x8AD JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0xFE SWAP2 SWAP1 PUSH2 0x869 JUMP JUMPDEST ISZERO PUSH2 0x27C JUMPI DUP3 DUP3 DUP3 DUP2 DUP2 LT PUSH2 0x23D JUMPI PUSH2 0x23D PUSH2 0x8AD JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x252 SWAP2 SWAP1 PUSH2 0x869 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xC0B7477D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2CA PUSH1 0x1 PUSH1 0x0 DUP1 DUP7 DUP7 DUP7 DUP2 DUP2 LT PUSH2 0x296 JUMPI PUSH2 0x296 PUSH2 0x8AD JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x2AB SWAP2 SWAP1 PUSH2 0x869 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SWAP1 PUSH2 0x405 JUMP JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x1F4 JUMP JUMPDEST POP PUSH2 0x2E3 PUSH1 0x1 PUSH2 0x439 DUP4 PUSH2 0x43D JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 NUMBER DUP3 LT PUSH2 0x33A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x436865636B706F696E74733A20626C6F636B206E6F7420796574206D696E6564 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x273 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x345 DUP4 PUSH2 0x475 JUMP JUMPDEST DUP5 SLOAD SWAP1 SWAP2 POP PUSH1 0x0 PUSH2 0x358 DUP7 DUP5 DUP4 DUP6 PUSH2 0x4F5 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x386 JUMPI PUSH2 0x36F DUP7 PUSH2 0x1C2 PUSH1 0x1 DUP5 PUSH2 0x89A JUMP JUMPDEST SLOAD PUSH5 0x100000000 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH2 0x389 JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x3F6 JUMPI PUSH2 0x3BC DUP4 DUP4 DUP4 DUP2 DUP2 LT PUSH2 0x211 JUMPI PUSH2 0x211 PUSH2 0x8AD JUMP JUMPDEST PUSH2 0x3D2 JUMPI DUP3 DUP3 DUP3 DUP2 DUP2 LT PUSH2 0x23D JUMPI PUSH2 0x23D PUSH2 0x8AD JUMP JUMPDEST PUSH2 0x3EC PUSH1 0x0 DUP1 PUSH1 0x0 DUP7 DUP7 DUP7 DUP2 DUP2 LT PUSH2 0x296 JUMPI PUSH2 0x296 PUSH2 0x8AD JUMP JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x39F JUMP JUMPDEST POP PUSH2 0x2E3 PUSH1 0x1 PUSH2 0x553 DUP4 PUSH2 0x43D JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x423 DUP5 PUSH2 0x415 NUMBER PUSH2 0x475 JUMP JUMPDEST PUSH2 0x41E DUP7 PUSH2 0x558 JUMP JUMPDEST PUSH2 0x5D7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB SWAP2 DUP3 AND SWAP7 SWAP2 AND SWAP5 POP SWAP3 POP POP POP JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x468 DUP6 PUSH2 0x463 PUSH2 0x450 DUP9 PUSH2 0x1A8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND DUP7 DUP9 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x405 JUMP JUMPDEST SWAP2 POP SWAP2 POP JUMPDEST SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH4 0xFFFFFFFF DUP3 GT ISZERO PUSH2 0x4F1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53616665436173743A2076616C756520646F65736E27742066697420696E2033 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x3220626974730000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x273 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP2 DUP4 LT ISZERO PUSH2 0x54B JUMPI PUSH1 0x0 PUSH2 0x50C DUP5 DUP5 PUSH2 0x77A JUMP JUMPDEST PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x20 SWAP1 KECCAK256 SWAP1 SWAP2 POP PUSH4 0xFFFFFFFF DUP7 AND SWAP1 DUP3 ADD SLOAD PUSH4 0xFFFFFFFF AND GT ISZERO PUSH2 0x537 JUMPI DUP1 SWAP3 POP PUSH2 0x545 JUMP JUMPDEST PUSH2 0x542 DUP2 PUSH1 0x1 PUSH2 0x8C3 JUMP JUMPDEST SWAP4 POP JUMPDEST POP PUSH2 0x4F8 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB DUP3 GT ISZERO PUSH2 0x4F1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x27 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53616665436173743A2076616C756520646F65736E27742066697420696E2032 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x3234206269747300000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x273 JUMP JUMPDEST DUP3 SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 DUP1 ISZERO PUSH2 0x720 JUMPI PUSH1 0x0 PUSH2 0x5F5 DUP8 PUSH2 0x1C2 PUSH1 0x1 DUP6 PUSH2 0x89A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE SWAP1 SLOAD PUSH4 0xFFFFFFFF DUP1 DUP3 AND DUP1 DUP5 MSTORE PUSH5 0x100000000 SWAP1 SWAP3 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x20 DUP5 ADD MSTORE SWAP2 SWAP3 POP SWAP1 DUP8 AND LT ISZERO PUSH2 0x677 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x436865636B706F696E743A2064656372656173696E67206B6579730000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x273 JUMP JUMPDEST DUP1 MLOAD PUSH4 0xFFFFFFFF DUP1 DUP9 AND SWAP2 AND SUB PUSH2 0x6C0 JUMPI DUP5 PUSH2 0x698 DUP9 PUSH2 0x1C2 PUSH1 0x1 DUP7 PUSH2 0x89A JUMP JUMPDEST DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB SWAP3 SWAP1 SWAP3 AND PUSH5 0x100000000 MUL PUSH4 0xFFFFFFFF SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x710 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH4 0xFFFFFFFF DUP1 DUP9 AND DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB DUP1 DUP9 AND PUSH1 0x20 DUP1 DUP6 ADD SWAP2 DUP3 MSTORE DUP12 SLOAD PUSH1 0x1 DUP2 ADD DUP14 SSTORE PUSH1 0x0 DUP14 DUP2 MSTORE SWAP2 SWAP1 SWAP2 KECCAK256 SWAP5 MLOAD SWAP2 MLOAD SWAP1 SWAP3 AND PUSH5 0x100000000 MUL SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP2 ADD SSTORE JUMPDEST PUSH1 0x20 ADD MLOAD SWAP3 POP DUP4 SWAP2 POP PUSH2 0x46D SWAP1 POP JUMP JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH4 0xFFFFFFFF DUP1 DUP6 AND DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB DUP1 DUP6 AND PUSH1 0x20 DUP1 DUP6 ADD SWAP2 DUP3 MSTORE DUP9 SLOAD PUSH1 0x1 DUP2 ADD DUP11 SSTORE PUSH1 0x0 DUP11 DUP2 MSTORE SWAP2 DUP3 KECCAK256 SWAP6 MLOAD SWAP3 MLOAD SWAP1 SWAP4 AND PUSH5 0x100000000 MUL SWAP2 SWAP1 SWAP4 AND OR SWAP3 ADD SWAP2 SWAP1 SWAP2 SSTORE SWAP1 POP DUP2 PUSH2 0x46D JUMP JUMPDEST PUSH1 0x0 PUSH2 0x789 PUSH1 0x2 DUP5 DUP5 XOR PUSH2 0x8D6 JUMP JUMPDEST PUSH2 0x1EA SWAP1 DUP5 DUP5 AND PUSH2 0x8C3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x7A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x7C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x7D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x7E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 PUSH1 0x20 DUP3 PUSH1 0x5 SHL DUP6 ADD ADD GT ISZERO PUSH2 0x7F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 SWAP3 SWAP1 SWAP3 ADD SWAP7 SWAP2 SWAP6 POP SWAP1 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x81C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x83A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x852 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x85B DUP4 PUSH2 0x823 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x87B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1EA DUP3 PUSH2 0x823 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x138 JUMPI PUSH2 0x138 PUSH2 0x884 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x138 JUMPI PUSH2 0x138 PUSH2 0x884 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x8F3 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP DIV SWAP1 JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"295:288:55:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2721:129:76;;;:::i;:::-;;;160:25:92;;;148:2;133:18;2721:129:76;;;;;;;;341:110:55;;;;;;:::i;:::-;;:::i;:::-;;2430:172:76;;;;;;:::i;:::-;;:::i;457:124:55:-;;;;;;:::i;:::-;;:::i;1602:209:76:-;;;;;;:::i;:::-;;:::i;:::-;;;1626:14:92;;1619:22;1601:41;;1589:2;1574:18;1602:209:76;1461:187:92;2004:142:76;;;;;;:::i;:::-;;:::i;2721:129::-;2779:7;2805:38;:29;:36;:38::i;:::-;-1:-1:-1;;;;;2798:45:76;;;2721:129;:::o;341:110:55:-;416:28;430:13;;416;:28::i;:::-;341:110;;:::o;2430:172:76:-;2515:7;2541:54;:29;2582:12;2541:40;:54::i;:::-;2534:61;2430:172;-1:-1:-1;;2430:172:76:o;457:124:55:-;539:35;556:17;;539:16;:35::i;1602:209:76:-;-1:-1:-1;;;;;1741:33:76;;1718:4;1741:33;;;;;;;;;;:58;;1786:12;1741:44;:58::i;:::-;1803:1;1741:63;;1602:209;-1:-1:-1;;;1602:209:76:o;2004:142::-;-1:-1:-1;;;;;2092:33:76;;2069:4;2092:33;;;;;;;;;;:42;;:40;:42::i;:::-;-1:-1:-1;;;;;2092:47:76;2138:1;2092:47;2085:54;;2004:142;;;:::o;3867:205:7:-;3961:24;;3928:7;;4002:8;;:63;;4017:41;4031:4;4050:7;4056:1;4050:3;:7;:::i;:::-;7702:25;7762:20;;;7827:4;7814:18;;;7810:28;;7617:237;4017:41;:48;;;;-1:-1:-1;;;;;4017:48:7;4002:63;;;4013:1;4002:63;3995:70;3867:205;-1:-1:-1;;;3867:205:7:o;2992:519:76:-;3081:9;3076:348;3092:24;;;3076:348;;;3138:26;3147:13;;3161:1;3147:16;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;3138:26::-;3134:114;;;3216:13;;3230:1;3216:16;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;3191:42;;-1:-1:-1;;;3191:42:76;;-1:-1:-1;;;;;2405:55:92;;;3191:42:76;;;2387:74:92;2360:18;;3191:42:76;;;;;;;;3134:114;3304:49;3351:1;3304:23;:41;3328:13;;3342:1;3328:16;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3304:41:76;;;;;;;;;;;;-1:-1:-1;3304:41:76;;:46;:49::i;:::-;-1:-1:-1;;3396:3:76;;3076:348;;;-1:-1:-1;3433:71:76;:29;3468:13;3483;3433:34;:71::i;:::-;;;2992:519;;:::o;1255:450:7:-;1341:7;1382:12;1368:11;:26;1360:71;;;;-1:-1:-1;;;1360:71:7;;2674:2:92;1360:71:7;;;2656:21:92;;;2693:18;;;2686:30;2752:34;2732:18;;;2725:62;2804:18;;1360:71:7;2472:356:92;1360:71:7;1441:10;1454:41;1483:11;1454:28;:41::i;:::-;1520:24;;1441:54;;-1:-1:-1;1506:11:7;1568:50;1520:4;1441:54;1506:11;1520:24;1568:18;:50::i;:::-;1554:64;-1:-1:-1;1635:8:7;;:63;;1650:41;1664:4;1683:7;1689:1;1683:3;:7;:::i;1650:41::-;:48;;;;-1:-1:-1;;;;;1650:48:7;1635:63;;;1646:1;1635:63;-1:-1:-1;;;;;1628:70:7;;1255:450;-1:-1:-1;;;;;;1255:450:7:o;3674:551:76:-;3770:9;3765:369;3781:28;;;3765:369;;;3832:30;3841:17;;3859:1;3841:20;;;;;;;:::i;3832:30::-;3827:123;;3914:17;;3932:1;3914:20;;;;;;;:::i;3827:123::-;4010:53;4061:1;4010:23;:45;4034:17;;4052:1;4034:20;;;;;;;:::i;4010:53::-;-1:-1:-1;;4106:3:76;;3765:369;;;-1:-1:-1;4143:75:76;:29;4178:13;4193:17;4143:34;:75::i;3066:219:7:-;3135:7;;3170:108;3178:4;3197:42;3226:12;3197:28;:42::i;:::-;3241:36;3271:5;3241:29;:36::i;:::-;3170:7;:108::i;:::-;-1:-1:-1;;;;;3163:115:7;;;;;;;-1:-1:-1;3066:219:7;-1:-1:-1;;;3066:219:7:o;309:115:88:-;410:5;;309:115::o;3517:230:7:-;3670:7;3679;3705:35;3710:4;3716:23;3719:12;3726:4;3719:6;:12::i;:::-;-1:-1:-1;;;;;3716:23:7;3733:5;3716:2;:23;;:::i;:::-;3705:4;:35::i;:::-;3698:42;;;;3517:230;;;;;;;:::o;15275:187:14:-;15331:6;15366:16;15357:25;;;15349:76;;;;-1:-1:-1;;;15349:76:14;;3035:2:92;15349:76:14;;;3017:21:92;3074:2;3054:18;;;3047:30;3113:34;3093:18;;;3086:62;3184:8;3164:18;;;3157:36;3210:19;;15349:76:14;2833:402:92;15349:76:14;-1:-1:-1;15449:5:14;15275:187::o;6229:449:7:-;6383:7;6402:249;6415:4;6409:3;:10;6402:249;;;6435:11;6449:34;6473:3;6478:4;6449:23;:34::i;:::-;7702:25;7762:20;;;7827:4;7814:18;;6435:48;;-1:-1:-1;6501:43:7;;;;7810:28;;6501:37;;;:43;6497:144;;;6571:3;6564:10;;6497:144;;;6619:7;:3;6625:1;6619:7;:::i;:::-;6613:13;;6497:144;6421:230;6402:249;;;-1:-1:-1;6667:4:7;6229:449;-1:-1:-1;;;6229:449:7:o;665:115:88:-;766:5;;;665:115::o;2847:192:14:-;2904:7;-1:-1:-1;;;;;2931:26:14;;;2923:78;;;;-1:-1:-1;;;2923:78:14;;3572:2:92;2923:78:14;;;3554:21:92;3611:2;3591:18;;;3584:30;3650:34;3630:18;;;3623:62;3721:9;3701:18;;;3694:37;3748:19;;2923:78:14;3370:403:92;5027:856:7;5157:11;;5115:7;;;;5183;;5179:698;;5258:22;5283:28;5297:4;5303:7;5309:1;5303:3;:7;:::i;5283:28::-;5258:53;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5258:53:7;;;;;;;-1:-1:-1;5389:24:7;;;-1:-1:-1;5389:24:7;5381:64;;;;-1:-1:-1;;;5381:64:7;;3980:2:92;5381:64:7;;;3962:21:92;4019:2;3999:18;;;3992:30;4058:29;4038:18;;;4031:57;4105:18;;5381:64:7;3778:351:92;5381:64:7;5509:17;;:24;;;;;;;5505:202;;5591:5;5553:28;5567:4;5573:7;5579:1;5573:3;:7;:::i;5553:28::-;:43;;-1:-1:-1;;;;;5553:43:7;;;;;;;;;;;;;;;;5505:202;;;5645:46;;;;;;;;;;;;;;;-1:-1:-1;;;;;5645:46:7;;;;;;;;;;5635:57;;;;;;;-1:-1:-1;5635:57:7;;;;;;;;;;;;;;;;;;;;;;;;;5505:202;5728:11;;;;-1:-1:-1;5741:5:7;;-1:-1:-1;5720:27:7;;-1:-1:-1;5720:27:7;5179:698;-1:-1:-1;;5788:46:7;;;;;;;;;;;;;;;-1:-1:-1;;;;;5788:46:7;;;;;;;;;;5778:57;;;;;;;-1:-1:-1;5778:57:7;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5827:5:7;5849:17;;816:153:13;878:7;951:11;961:1;952:5;;;951:11;:::i;:::-;941:21;;942:5;;;941:21;:::i;196:615:92:-;282:6;290;343:2;331:9;322:7;318:23;314:32;311:52;;;359:1;356;349:12;311:52;399:9;386:23;428:18;469:2;461:6;458:14;455:34;;;485:1;482;475:12;455:34;523:6;512:9;508:22;498:32;;568:7;561:4;557:2;553:13;549:27;539:55;;590:1;587;580:12;539:55;630:2;617:16;656:2;648:6;645:14;642:34;;;672:1;669;662:12;642:34;725:7;720:2;710:6;707:1;703:14;699:2;695:23;691:32;688:45;685:65;;;746:1;743;736:12;685:65;777:2;769:11;;;;;799:6;;-1:-1:-1;196:615:92;;-1:-1:-1;;;;196:615:92:o;816:180::-;875:6;928:2;916:9;907:7;903:23;899:32;896:52;;;944:1;941;934:12;896:52;-1:-1:-1;967:23:92;;816:180;-1:-1:-1;816:180:92:o;1001:196::-;1069:20;;-1:-1:-1;;;;;1118:54:92;;1108:65;;1098:93;;1187:1;1184;1177:12;1098:93;1001:196;;;:::o;1202:254::-;1270:6;1278;1331:2;1319:9;1310:7;1306:23;1302:32;1299:52;;;1347:1;1344;1337:12;1299:52;1370:29;1389:9;1370:29;:::i;:::-;1360:39;1446:2;1431:18;;;;1418:32;;-1:-1:-1;;;1202:254:92:o;1653:186::-;1712:6;1765:2;1753:9;1744:7;1740:23;1736:32;1733:52;;;1781:1;1778;1771:12;1733:52;1804:29;1823:9;1804:29;:::i;1844:127::-;1905:10;1900:3;1896:20;1893:1;1886:31;1936:4;1933:1;1926:15;1960:4;1957:1;1950:15;1976:128;2043:9;;;2064:11;;;2061:37;;;2078:18;;:::i;2109:127::-;2170:10;2165:3;2161:20;2158:1;2151:31;2201:4;2198:1;2191:15;2225:4;2222:1;2215:15;3240:125;3305:9;;;3326:10;;;3323:36;;;3339:18;;:::i;4134:217::-;4174:1;4200;4190:132;;4244:10;4239:3;4235:20;4232:1;4225:31;4279:4;4276:1;4269:15;4307:4;4304:1;4297:15;4190:132;-1:-1:-1;4336:9:92;;4134:217::o"},"gasEstimates":{"creation":{"codeDepositCost":"461800","executionCost":"499","totalCost":"462299"},"external":{"addAddresses(address[])":"infinite","addresslistLength()":"4681","addresslistLengthAtBlock(uint256)":"infinite","isListed(address)":"infinite","isListedAtBlock(address,uint256)":"infinite","removeAddresses(address[])":"infinite"}},"methodIdentifiers":{"addAddresses(address[])":"3628731c","addresslistLength()":"27f1608d","addresslistLengthAtBlock(uint256)":"6a6b2d86","isListed(address)":"f794062e","isListedAtBlock(address,uint256)":"b1bb8d26","removeAddresses(address[])":"a84eb999"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"member\",\"type\":\"address\"}],\"name\":\"InvalidAddresslistUpdate\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_newAddresses\",\"type\":\"address[]\"}],\"name\":\"addAddresses\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"addresslistLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_blockNumber\",\"type\":\"uint256\"}],\"name\":\"addresslistLengthAtBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"isListed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_blockNumber\",\"type\":\"uint256\"}],\"name\":\"isListedAtBlock\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_exitingAddresses\",\"type\":\"address[]\"}],\"name\":\"removeAddresses\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"DO NOT USE IN PRODUCTION!\",\"errors\":{\"InvalidAddresslistUpdate(address)\":[{\"params\":{\"member\":\"The array of member addresses to be added or removed.\"}}]},\"kind\":\"dev\",\"methods\":{\"addresslistLength()\":{\"returns\":{\"_0\":\"The current address list length.\"}},\"addresslistLengthAtBlock(uint256)\":{\"params\":{\"_blockNumber\":\"The specific block to get the count from. If `0`, then the latest checkpoint value is returned.\"},\"returns\":{\"_0\":\"The address list length at the specified block number.\"}},\"isListed(address)\":{\"params\":{\"_account\":\"The account address being checked.\"},\"returns\":{\"_0\":\"Whether the account is currently listed.\"}},\"isListedAtBlock(address,uint256)\":{\"params\":{\"_account\":\"The account address being checked.\",\"_blockNumber\":\"The block number.\"},\"returns\":{\"_0\":\"Whether the account is listed at the specified block number.\"}}},\"version\":1},\"userdoc\":{\"errors\":{\"InvalidAddresslistUpdate(address)\":[{\"notice\":\"Thrown when the address list update is invalid, which can be caused by the addition of an existing member or removal of a non-existing member.\"}]},\"kind\":\"user\",\"methods\":{\"addresslistLength()\":{\"notice\":\"Returns the current length of the address list.\"},\"addresslistLengthAtBlock(uint256)\":{\"notice\":\"Returns the length of the address list at a specific block number.\"},\"isListed(address)\":{\"notice\":\"Checks if an account is currently on the address list.\"},\"isListedAtBlock(address,uint256)\":{\"notice\":\"Checks if an account is on the address list at a specific block number.\"}},\"notice\":\"A mock addresslist that everyone can add and remove addresses to and from, respectively.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/mocks/plugin/extensions/governance/AddresslistMock.sol\":\"AddresslistMock\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/utils/CheckpointsUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Checkpoints.sol)\\n// This file was procedurally generated from scripts/generate/templates/Checkpoints.js.\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./math/MathUpgradeable.sol\\\";\\nimport \\\"./math/SafeCastUpgradeable.sol\\\";\\n\\n/**\\n * @dev This library defines the `History` struct, for checkpointing values as they change at different points in\\n * time, and later looking up past values by block number. See {Votes} as an example.\\n *\\n * To create a history of checkpoints define a variable type `Checkpoints.History` in your contract, and store a new\\n * checkpoint for the current transaction block using the {push} function.\\n *\\n * _Available since v4.5._\\n */\\nlibrary CheckpointsUpgradeable {\\n struct History {\\n Checkpoint[] _checkpoints;\\n }\\n\\n struct Checkpoint {\\n uint32 _blockNumber;\\n uint224 _value;\\n }\\n\\n /**\\n * @dev Returns the value at a given block number. If a checkpoint is not available at that block, the closest one\\n * before it is returned, or zero otherwise. Because the number returned corresponds to that at the end of the\\n * block, the requested block number must be in the past, excluding the current block.\\n */\\n function getAtBlock(History storage self, uint256 blockNumber) internal view returns (uint256) {\\n require(blockNumber < block.number, \\\"Checkpoints: block not yet mined\\\");\\n uint32 key = SafeCastUpgradeable.toUint32(blockNumber);\\n\\n uint256 len = self._checkpoints.length;\\n uint256 pos = _upperBinaryLookup(self._checkpoints, key, 0, len);\\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\\n }\\n\\n /**\\n * @dev Returns the value at a given block number. If a checkpoint is not available at that block, the closest one\\n * before it is returned, or zero otherwise. Similar to {upperLookup} but optimized for the case when the searched\\n * checkpoint is probably \\\"recent\\\", defined as being among the last sqrt(N) checkpoints where N is the number of\\n * checkpoints.\\n */\\n function getAtProbablyRecentBlock(History storage self, uint256 blockNumber) internal view returns (uint256) {\\n require(blockNumber < block.number, \\\"Checkpoints: block not yet mined\\\");\\n uint32 key = SafeCastUpgradeable.toUint32(blockNumber);\\n\\n uint256 len = self._checkpoints.length;\\n\\n uint256 low = 0;\\n uint256 high = len;\\n\\n if (len > 5) {\\n uint256 mid = len - MathUpgradeable.sqrt(len);\\n if (key < _unsafeAccess(self._checkpoints, mid)._blockNumber) {\\n high = mid;\\n } else {\\n low = mid + 1;\\n }\\n }\\n\\n uint256 pos = _upperBinaryLookup(self._checkpoints, key, low, high);\\n\\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\\n }\\n\\n /**\\n * @dev Pushes a value onto a History so that it is stored as the checkpoint for the current block.\\n *\\n * Returns previous value and new value.\\n */\\n function push(History storage self, uint256 value) internal returns (uint256, uint256) {\\n return _insert(self._checkpoints, SafeCastUpgradeable.toUint32(block.number), SafeCastUpgradeable.toUint224(value));\\n }\\n\\n /**\\n * @dev Pushes a value onto a History, by updating the latest value using binary operation `op`. The new value will\\n * be set to `op(latest, delta)`.\\n *\\n * Returns previous value and new value.\\n */\\n function push(\\n History storage self,\\n function(uint256, uint256) view returns (uint256) op,\\n uint256 delta\\n ) internal returns (uint256, uint256) {\\n return push(self, op(latest(self), delta));\\n }\\n\\n /**\\n * @dev Returns the value in the most recent checkpoint, or zero if there are no checkpoints.\\n */\\n function latest(History storage self) internal view returns (uint224) {\\n uint256 pos = self._checkpoints.length;\\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\\n }\\n\\n /**\\n * @dev Returns whether there is a checkpoint in the structure (i.e. it is not empty), and if so the key and value\\n * in the most recent checkpoint.\\n */\\n function latestCheckpoint(\\n History storage self\\n ) internal view returns (bool exists, uint32 _blockNumber, uint224 _value) {\\n uint256 pos = self._checkpoints.length;\\n if (pos == 0) {\\n return (false, 0, 0);\\n } else {\\n Checkpoint memory ckpt = _unsafeAccess(self._checkpoints, pos - 1);\\n return (true, ckpt._blockNumber, ckpt._value);\\n }\\n }\\n\\n /**\\n * @dev Returns the number of checkpoint.\\n */\\n function length(History storage self) internal view returns (uint256) {\\n return self._checkpoints.length;\\n }\\n\\n /**\\n * @dev Pushes a (`key`, `value`) pair into an ordered list of checkpoints, either by inserting a new checkpoint,\\n * or by updating the last one.\\n */\\n function _insert(Checkpoint[] storage self, uint32 key, uint224 value) private returns (uint224, uint224) {\\n uint256 pos = self.length;\\n\\n if (pos > 0) {\\n // Copying to memory is important here.\\n Checkpoint memory last = _unsafeAccess(self, pos - 1);\\n\\n // Checkpoint keys must be non-decreasing.\\n require(last._blockNumber <= key, \\\"Checkpoint: decreasing keys\\\");\\n\\n // Update or push new checkpoint\\n if (last._blockNumber == key) {\\n _unsafeAccess(self, pos - 1)._value = value;\\n } else {\\n self.push(Checkpoint({_blockNumber: key, _value: value}));\\n }\\n return (last._value, value);\\n } else {\\n self.push(Checkpoint({_blockNumber: key, _value: value}));\\n return (0, value);\\n }\\n }\\n\\n /**\\n * @dev Return the index of the last (most recent) checkpoint with key lower or equal than the search key, or `high` if there is none.\\n * `low` and `high` define a section where to do the search, with inclusive `low` and exclusive `high`.\\n *\\n * WARNING: `high` should not be greater than the array's length.\\n */\\n function _upperBinaryLookup(\\n Checkpoint[] storage self,\\n uint32 key,\\n uint256 low,\\n uint256 high\\n ) private view returns (uint256) {\\n while (low < high) {\\n uint256 mid = MathUpgradeable.average(low, high);\\n if (_unsafeAccess(self, mid)._blockNumber > key) {\\n high = mid;\\n } else {\\n low = mid + 1;\\n }\\n }\\n return high;\\n }\\n\\n /**\\n * @dev Return the index of the first (oldest) checkpoint with key is greater or equal than the search key, or `high` if there is none.\\n * `low` and `high` define a section where to do the search, with inclusive `low` and exclusive `high`.\\n *\\n * WARNING: `high` should not be greater than the array's length.\\n */\\n function _lowerBinaryLookup(\\n Checkpoint[] storage self,\\n uint32 key,\\n uint256 low,\\n uint256 high\\n ) private view returns (uint256) {\\n while (low < high) {\\n uint256 mid = MathUpgradeable.average(low, high);\\n if (_unsafeAccess(self, mid)._blockNumber < key) {\\n low = mid + 1;\\n } else {\\n high = mid;\\n }\\n }\\n return high;\\n }\\n\\n /**\\n * @dev Access an element of the array without performing bounds check. The position is assumed to be within bounds.\\n */\\n function _unsafeAccess(Checkpoint[] storage self, uint256 pos) private pure returns (Checkpoint storage result) {\\n assembly {\\n mstore(0, self.slot)\\n result.slot := add(keccak256(0, 0x20), pos)\\n }\\n }\\n\\n struct Trace224 {\\n Checkpoint224[] _checkpoints;\\n }\\n\\n struct Checkpoint224 {\\n uint32 _key;\\n uint224 _value;\\n }\\n\\n /**\\n * @dev Pushes a (`key`, `value`) pair into a Trace224 so that it is stored as the checkpoint.\\n *\\n * Returns previous value and new value.\\n */\\n function push(Trace224 storage self, uint32 key, uint224 value) internal returns (uint224, uint224) {\\n return _insert(self._checkpoints, key, value);\\n }\\n\\n /**\\n * @dev Returns the value in the first (oldest) checkpoint with key greater or equal than the search key, or zero if there is none.\\n */\\n function lowerLookup(Trace224 storage self, uint32 key) internal view returns (uint224) {\\n uint256 len = self._checkpoints.length;\\n uint256 pos = _lowerBinaryLookup(self._checkpoints, key, 0, len);\\n return pos == len ? 0 : _unsafeAccess(self._checkpoints, pos)._value;\\n }\\n\\n /**\\n * @dev Returns the value in the last (most recent) checkpoint with key lower or equal than the search key, or zero if there is none.\\n */\\n function upperLookup(Trace224 storage self, uint32 key) internal view returns (uint224) {\\n uint256 len = self._checkpoints.length;\\n uint256 pos = _upperBinaryLookup(self._checkpoints, key, 0, len);\\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\\n }\\n\\n /**\\n * @dev Returns the value in the last (most recent) checkpoint with key lower or equal than the search key, or zero if there is none.\\n *\\n * NOTE: This is a variant of {upperLookup} that is optimised to find \\\"recent\\\" checkpoint (checkpoints with high keys).\\n */\\n function upperLookupRecent(Trace224 storage self, uint32 key) internal view returns (uint224) {\\n uint256 len = self._checkpoints.length;\\n\\n uint256 low = 0;\\n uint256 high = len;\\n\\n if (len > 5) {\\n uint256 mid = len - MathUpgradeable.sqrt(len);\\n if (key < _unsafeAccess(self._checkpoints, mid)._key) {\\n high = mid;\\n } else {\\n low = mid + 1;\\n }\\n }\\n\\n uint256 pos = _upperBinaryLookup(self._checkpoints, key, low, high);\\n\\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\\n }\\n\\n /**\\n * @dev Returns the value in the most recent checkpoint, or zero if there are no checkpoints.\\n */\\n function latest(Trace224 storage self) internal view returns (uint224) {\\n uint256 pos = self._checkpoints.length;\\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\\n }\\n\\n /**\\n * @dev Returns whether there is a checkpoint in the structure (i.e. it is not empty), and if so the key and value\\n * in the most recent checkpoint.\\n */\\n function latestCheckpoint(Trace224 storage self) internal view returns (bool exists, uint32 _key, uint224 _value) {\\n uint256 pos = self._checkpoints.length;\\n if (pos == 0) {\\n return (false, 0, 0);\\n } else {\\n Checkpoint224 memory ckpt = _unsafeAccess(self._checkpoints, pos - 1);\\n return (true, ckpt._key, ckpt._value);\\n }\\n }\\n\\n /**\\n * @dev Returns the number of checkpoint.\\n */\\n function length(Trace224 storage self) internal view returns (uint256) {\\n return self._checkpoints.length;\\n }\\n\\n /**\\n * @dev Pushes a (`key`, `value`) pair into an ordered list of checkpoints, either by inserting a new checkpoint,\\n * or by updating the last one.\\n */\\n function _insert(Checkpoint224[] storage self, uint32 key, uint224 value) private returns (uint224, uint224) {\\n uint256 pos = self.length;\\n\\n if (pos > 0) {\\n // Copying to memory is important here.\\n Checkpoint224 memory last = _unsafeAccess(self, pos - 1);\\n\\n // Checkpoint keys must be non-decreasing.\\n require(last._key <= key, \\\"Checkpoint: decreasing keys\\\");\\n\\n // Update or push new checkpoint\\n if (last._key == key) {\\n _unsafeAccess(self, pos - 1)._value = value;\\n } else {\\n self.push(Checkpoint224({_key: key, _value: value}));\\n }\\n return (last._value, value);\\n } else {\\n self.push(Checkpoint224({_key: key, _value: value}));\\n return (0, value);\\n }\\n }\\n\\n /**\\n * @dev Return the index of the last (most recent) checkpoint with key lower or equal than the search key, or `high` if there is none.\\n * `low` and `high` define a section where to do the search, with inclusive `low` and exclusive `high`.\\n *\\n * WARNING: `high` should not be greater than the array's length.\\n */\\n function _upperBinaryLookup(\\n Checkpoint224[] storage self,\\n uint32 key,\\n uint256 low,\\n uint256 high\\n ) private view returns (uint256) {\\n while (low < high) {\\n uint256 mid = MathUpgradeable.average(low, high);\\n if (_unsafeAccess(self, mid)._key > key) {\\n high = mid;\\n } else {\\n low = mid + 1;\\n }\\n }\\n return high;\\n }\\n\\n /**\\n * @dev Return the index of the first (oldest) checkpoint with key is greater or equal than the search key, or `high` if there is none.\\n * `low` and `high` define a section where to do the search, with inclusive `low` and exclusive `high`.\\n *\\n * WARNING: `high` should not be greater than the array's length.\\n */\\n function _lowerBinaryLookup(\\n Checkpoint224[] storage self,\\n uint32 key,\\n uint256 low,\\n uint256 high\\n ) private view returns (uint256) {\\n while (low < high) {\\n uint256 mid = MathUpgradeable.average(low, high);\\n if (_unsafeAccess(self, mid)._key < key) {\\n low = mid + 1;\\n } else {\\n high = mid;\\n }\\n }\\n return high;\\n }\\n\\n /**\\n * @dev Access an element of the array without performing bounds check. The position is assumed to be within bounds.\\n */\\n function _unsafeAccess(\\n Checkpoint224[] storage self,\\n uint256 pos\\n ) private pure returns (Checkpoint224 storage result) {\\n assembly {\\n mstore(0, self.slot)\\n result.slot := add(keccak256(0, 0x20), pos)\\n }\\n }\\n\\n struct Trace160 {\\n Checkpoint160[] _checkpoints;\\n }\\n\\n struct Checkpoint160 {\\n uint96 _key;\\n uint160 _value;\\n }\\n\\n /**\\n * @dev Pushes a (`key`, `value`) pair into a Trace160 so that it is stored as the checkpoint.\\n *\\n * Returns previous value and new value.\\n */\\n function push(Trace160 storage self, uint96 key, uint160 value) internal returns (uint160, uint160) {\\n return _insert(self._checkpoints, key, value);\\n }\\n\\n /**\\n * @dev Returns the value in the first (oldest) checkpoint with key greater or equal than the search key, or zero if there is none.\\n */\\n function lowerLookup(Trace160 storage self, uint96 key) internal view returns (uint160) {\\n uint256 len = self._checkpoints.length;\\n uint256 pos = _lowerBinaryLookup(self._checkpoints, key, 0, len);\\n return pos == len ? 0 : _unsafeAccess(self._checkpoints, pos)._value;\\n }\\n\\n /**\\n * @dev Returns the value in the last (most recent) checkpoint with key lower or equal than the search key, or zero if there is none.\\n */\\n function upperLookup(Trace160 storage self, uint96 key) internal view returns (uint160) {\\n uint256 len = self._checkpoints.length;\\n uint256 pos = _upperBinaryLookup(self._checkpoints, key, 0, len);\\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\\n }\\n\\n /**\\n * @dev Returns the value in the last (most recent) checkpoint with key lower or equal than the search key, or zero if there is none.\\n *\\n * NOTE: This is a variant of {upperLookup} that is optimised to find \\\"recent\\\" checkpoint (checkpoints with high keys).\\n */\\n function upperLookupRecent(Trace160 storage self, uint96 key) internal view returns (uint160) {\\n uint256 len = self._checkpoints.length;\\n\\n uint256 low = 0;\\n uint256 high = len;\\n\\n if (len > 5) {\\n uint256 mid = len - MathUpgradeable.sqrt(len);\\n if (key < _unsafeAccess(self._checkpoints, mid)._key) {\\n high = mid;\\n } else {\\n low = mid + 1;\\n }\\n }\\n\\n uint256 pos = _upperBinaryLookup(self._checkpoints, key, low, high);\\n\\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\\n }\\n\\n /**\\n * @dev Returns the value in the most recent checkpoint, or zero if there are no checkpoints.\\n */\\n function latest(Trace160 storage self) internal view returns (uint160) {\\n uint256 pos = self._checkpoints.length;\\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\\n }\\n\\n /**\\n * @dev Returns whether there is a checkpoint in the structure (i.e. it is not empty), and if so the key and value\\n * in the most recent checkpoint.\\n */\\n function latestCheckpoint(Trace160 storage self) internal view returns (bool exists, uint96 _key, uint160 _value) {\\n uint256 pos = self._checkpoints.length;\\n if (pos == 0) {\\n return (false, 0, 0);\\n } else {\\n Checkpoint160 memory ckpt = _unsafeAccess(self._checkpoints, pos - 1);\\n return (true, ckpt._key, ckpt._value);\\n }\\n }\\n\\n /**\\n * @dev Returns the number of checkpoint.\\n */\\n function length(Trace160 storage self) internal view returns (uint256) {\\n return self._checkpoints.length;\\n }\\n\\n /**\\n * @dev Pushes a (`key`, `value`) pair into an ordered list of checkpoints, either by inserting a new checkpoint,\\n * or by updating the last one.\\n */\\n function _insert(Checkpoint160[] storage self, uint96 key, uint160 value) private returns (uint160, uint160) {\\n uint256 pos = self.length;\\n\\n if (pos > 0) {\\n // Copying to memory is important here.\\n Checkpoint160 memory last = _unsafeAccess(self, pos - 1);\\n\\n // Checkpoint keys must be non-decreasing.\\n require(last._key <= key, \\\"Checkpoint: decreasing keys\\\");\\n\\n // Update or push new checkpoint\\n if (last._key == key) {\\n _unsafeAccess(self, pos - 1)._value = value;\\n } else {\\n self.push(Checkpoint160({_key: key, _value: value}));\\n }\\n return (last._value, value);\\n } else {\\n self.push(Checkpoint160({_key: key, _value: value}));\\n return (0, value);\\n }\\n }\\n\\n /**\\n * @dev Return the index of the last (most recent) checkpoint with key lower or equal than the search key, or `high` if there is none.\\n * `low` and `high` define a section where to do the search, with inclusive `low` and exclusive `high`.\\n *\\n * WARNING: `high` should not be greater than the array's length.\\n */\\n function _upperBinaryLookup(\\n Checkpoint160[] storage self,\\n uint96 key,\\n uint256 low,\\n uint256 high\\n ) private view returns (uint256) {\\n while (low < high) {\\n uint256 mid = MathUpgradeable.average(low, high);\\n if (_unsafeAccess(self, mid)._key > key) {\\n high = mid;\\n } else {\\n low = mid + 1;\\n }\\n }\\n return high;\\n }\\n\\n /**\\n * @dev Return the index of the first (oldest) checkpoint with key is greater or equal than the search key, or `high` if there is none.\\n * `low` and `high` define a section where to do the search, with inclusive `low` and exclusive `high`.\\n *\\n * WARNING: `high` should not be greater than the array's length.\\n */\\n function _lowerBinaryLookup(\\n Checkpoint160[] storage self,\\n uint96 key,\\n uint256 low,\\n uint256 high\\n ) private view returns (uint256) {\\n while (low < high) {\\n uint256 mid = MathUpgradeable.average(low, high);\\n if (_unsafeAccess(self, mid)._key < key) {\\n low = mid + 1;\\n } else {\\n high = mid;\\n }\\n }\\n return high;\\n }\\n\\n /**\\n * @dev Access an element of the array without performing bounds check. The position is assumed to be within bounds.\\n */\\n function _unsafeAccess(\\n Checkpoint160[] storage self,\\n uint256 pos\\n ) private pure returns (Checkpoint160 storage result) {\\n assembly {\\n mstore(0, self.slot)\\n result.slot := add(keccak256(0, 0x20), pos)\\n }\\n }\\n}\\n\",\"keccak256\":\"0x51ea916844ee2c53874c6895ce37acbca0250977b49b48909d75ad439f38f211\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/math/MathUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/math/Math.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard math utilities missing in the Solidity language.\\n */\\nlibrary MathUpgradeable {\\n enum Rounding {\\n Down, // Toward negative infinity\\n Up, // Toward infinity\\n Zero // Toward zero\\n }\\n\\n /**\\n * @dev Returns the largest of two numbers.\\n */\\n function max(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two numbers.\\n */\\n function min(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two numbers. The result is rounded towards\\n * zero.\\n */\\n function average(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b) / 2 can overflow.\\n return (a & b) + (a ^ b) / 2;\\n }\\n\\n /**\\n * @dev Returns the ceiling of the division of two numbers.\\n *\\n * This differs from standard division with `/` in that it rounds up instead\\n * of rounding down.\\n */\\n function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b - 1) / b can overflow on addition, so we distribute.\\n return a == 0 ? 0 : (a - 1) / b + 1;\\n }\\n\\n /**\\n * @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\\n * @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)\\n * with further edits by Uniswap Labs also under MIT license.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator) internal pure returns (uint256 result) {\\n unchecked {\\n // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use\\n // use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\\n // variables such that product = prod1 * 2^256 + prod0.\\n uint256 prod0; // Least significant 256 bits of the product\\n uint256 prod1; // Most significant 256 bits of the product\\n assembly {\\n let mm := mulmod(x, y, not(0))\\n prod0 := mul(x, y)\\n prod1 := sub(sub(mm, prod0), lt(mm, prod0))\\n }\\n\\n // Handle non-overflow cases, 256 by 256 division.\\n if (prod1 == 0) {\\n // Solidity will revert if denominator == 0, unlike the div opcode on its own.\\n // The surrounding unchecked block does not change this fact.\\n // See https://docs.soliditylang.org/en/latest/control-structures.html#checked-or-unchecked-arithmetic.\\n return prod0 / denominator;\\n }\\n\\n // Make sure the result is less than 2^256. Also prevents denominator == 0.\\n require(denominator > prod1, \\\"Math: mulDiv overflow\\\");\\n\\n ///////////////////////////////////////////////\\n // 512 by 256 division.\\n ///////////////////////////////////////////////\\n\\n // Make division exact by subtracting the remainder from [prod1 prod0].\\n uint256 remainder;\\n assembly {\\n // Compute remainder using mulmod.\\n remainder := mulmod(x, y, denominator)\\n\\n // Subtract 256 bit number from 512 bit number.\\n prod1 := sub(prod1, gt(remainder, prod0))\\n prod0 := sub(prod0, remainder)\\n }\\n\\n // Factor powers of two out of denominator and compute largest power of two divisor of denominator. Always >= 1.\\n // See https://cs.stackexchange.com/q/138556/92363.\\n\\n // Does not overflow because the denominator cannot be zero at this stage in the function.\\n uint256 twos = denominator & (~denominator + 1);\\n assembly {\\n // Divide denominator by twos.\\n denominator := div(denominator, twos)\\n\\n // Divide [prod1 prod0] by twos.\\n prod0 := div(prod0, twos)\\n\\n // Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one.\\n twos := add(div(sub(0, twos), twos), 1)\\n }\\n\\n // Shift in bits from prod1 into prod0.\\n prod0 |= prod1 * twos;\\n\\n // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such\\n // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for\\n // four bits. That is, denominator * inv = 1 mod 2^4.\\n uint256 inverse = (3 * denominator) ^ 2;\\n\\n // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also works\\n // in modular arithmetic, doubling the correct bits in each step.\\n inverse *= 2 - denominator * inverse; // inverse mod 2^8\\n inverse *= 2 - denominator * inverse; // inverse mod 2^16\\n inverse *= 2 - denominator * inverse; // inverse mod 2^32\\n inverse *= 2 - denominator * inverse; // inverse mod 2^64\\n inverse *= 2 - denominator * inverse; // inverse mod 2^128\\n inverse *= 2 - denominator * inverse; // inverse mod 2^256\\n\\n // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\\n // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is\\n // less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1\\n // is no longer required.\\n result = prod0 * inverse;\\n return result;\\n }\\n }\\n\\n /**\\n * @notice Calculates x * y / denominator with full precision, following the selected rounding direction.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator, Rounding rounding) internal pure returns (uint256) {\\n uint256 result = mulDiv(x, y, denominator);\\n if (rounding == Rounding.Up && mulmod(x, y, denominator) > 0) {\\n result += 1;\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down.\\n *\\n * Inspired by Henry S. Warren, Jr.'s \\\"Hacker's Delight\\\" (Chapter 11).\\n */\\n function sqrt(uint256 a) internal pure returns (uint256) {\\n if (a == 0) {\\n return 0;\\n }\\n\\n // For our first guess, we get the biggest power of 2 which is smaller than the square root of the target.\\n //\\n // We know that the \\\"msb\\\" (most significant bit) of our target number `a` is a power of 2 such that we have\\n // `msb(a) <= a < 2*msb(a)`. This value can be written `msb(a)=2**k` with `k=log2(a)`.\\n //\\n // This can be rewritten `2**log2(a) <= a < 2**(log2(a) + 1)`\\n // \\u2192 `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))`\\n // \\u2192 `2**(k/2) <= sqrt(a) < 2**((k+1)/2) <= 2**(k/2 + 1)`\\n //\\n // Consequently, `2**(log2(a) / 2)` is a good first approximation of `sqrt(a)` with at least 1 correct bit.\\n uint256 result = 1 << (log2(a) >> 1);\\n\\n // At this point `result` is an estimation with one bit of precision. We know the true value is a uint128,\\n // since it is the square root of a uint256. Newton's method converges quadratically (precision doubles at\\n // every iteration). We thus need at most 7 iteration to turn our partial result with one bit of precision\\n // into the expected uint128 result.\\n unchecked {\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n return min(result, a / result);\\n }\\n }\\n\\n /**\\n * @notice Calculates sqrt(a), following the selected rounding direction.\\n */\\n function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = sqrt(a);\\n return result + (rounding == Rounding.Up && result * result < a ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 2, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 128;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 64;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 32;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 16;\\n }\\n if (value >> 8 > 0) {\\n value >>= 8;\\n result += 8;\\n }\\n if (value >> 4 > 0) {\\n value >>= 4;\\n result += 4;\\n }\\n if (value >> 2 > 0) {\\n value >>= 2;\\n result += 2;\\n }\\n if (value >> 1 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 2, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log2(value);\\n return result + (rounding == Rounding.Up && 1 << result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 10, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >= 10 ** 64) {\\n value /= 10 ** 64;\\n result += 64;\\n }\\n if (value >= 10 ** 32) {\\n value /= 10 ** 32;\\n result += 32;\\n }\\n if (value >= 10 ** 16) {\\n value /= 10 ** 16;\\n result += 16;\\n }\\n if (value >= 10 ** 8) {\\n value /= 10 ** 8;\\n result += 8;\\n }\\n if (value >= 10 ** 4) {\\n value /= 10 ** 4;\\n result += 4;\\n }\\n if (value >= 10 ** 2) {\\n value /= 10 ** 2;\\n result += 2;\\n }\\n if (value >= 10 ** 1) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log10(value);\\n return result + (rounding == Rounding.Up && 10 ** result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 256, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n *\\n * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.\\n */\\n function log256(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 16;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 8;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 4;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 2;\\n }\\n if (value >> 8 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 256, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log256(value);\\n return result + (rounding == Rounding.Up && 1 << (result << 3) < value ? 1 : 0);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x2bc0007987c229ae7624eb29be6a9b84f6a6a5872f76248b15208b131ea41c4e\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/SafeCast.sol)\\n// This file was procedurally generated from scripts/generate/templates/SafeCast.js.\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Wrappers over Solidity's uintXX/intXX casting operators with added overflow\\n * checks.\\n *\\n * Downcasting from uint256/int256 in Solidity does not revert on overflow. This can\\n * easily result in undesired exploitation or bugs, since developers usually\\n * assume that overflows raise errors. `SafeCast` restores this intuition by\\n * reverting the transaction when such an operation overflows.\\n *\\n * Using this library instead of the unchecked operations eliminates an entire\\n * class of bugs, so it's recommended to use it always.\\n *\\n * Can be combined with {SafeMath} and {SignedSafeMath} to extend it to smaller types, by performing\\n * all math on `uint256` and `int256` and then downcasting.\\n */\\nlibrary SafeCastUpgradeable {\\n /**\\n * @dev Returns the downcasted uint248 from uint256, reverting on\\n * overflow (when the input is greater than largest uint248).\\n *\\n * Counterpart to Solidity's `uint248` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 248 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint248(uint256 value) internal pure returns (uint248) {\\n require(value <= type(uint248).max, \\\"SafeCast: value doesn't fit in 248 bits\\\");\\n return uint248(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint240 from uint256, reverting on\\n * overflow (when the input is greater than largest uint240).\\n *\\n * Counterpart to Solidity's `uint240` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 240 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint240(uint256 value) internal pure returns (uint240) {\\n require(value <= type(uint240).max, \\\"SafeCast: value doesn't fit in 240 bits\\\");\\n return uint240(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint232 from uint256, reverting on\\n * overflow (when the input is greater than largest uint232).\\n *\\n * Counterpart to Solidity's `uint232` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 232 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint232(uint256 value) internal pure returns (uint232) {\\n require(value <= type(uint232).max, \\\"SafeCast: value doesn't fit in 232 bits\\\");\\n return uint232(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint224 from uint256, reverting on\\n * overflow (when the input is greater than largest uint224).\\n *\\n * Counterpart to Solidity's `uint224` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 224 bits\\n *\\n * _Available since v4.2._\\n */\\n function toUint224(uint256 value) internal pure returns (uint224) {\\n require(value <= type(uint224).max, \\\"SafeCast: value doesn't fit in 224 bits\\\");\\n return uint224(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint216 from uint256, reverting on\\n * overflow (when the input is greater than largest uint216).\\n *\\n * Counterpart to Solidity's `uint216` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 216 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint216(uint256 value) internal pure returns (uint216) {\\n require(value <= type(uint216).max, \\\"SafeCast: value doesn't fit in 216 bits\\\");\\n return uint216(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint208 from uint256, reverting on\\n * overflow (when the input is greater than largest uint208).\\n *\\n * Counterpart to Solidity's `uint208` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 208 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint208(uint256 value) internal pure returns (uint208) {\\n require(value <= type(uint208).max, \\\"SafeCast: value doesn't fit in 208 bits\\\");\\n return uint208(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint200 from uint256, reverting on\\n * overflow (when the input is greater than largest uint200).\\n *\\n * Counterpart to Solidity's `uint200` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 200 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint200(uint256 value) internal pure returns (uint200) {\\n require(value <= type(uint200).max, \\\"SafeCast: value doesn't fit in 200 bits\\\");\\n return uint200(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint192 from uint256, reverting on\\n * overflow (when the input is greater than largest uint192).\\n *\\n * Counterpart to Solidity's `uint192` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 192 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint192(uint256 value) internal pure returns (uint192) {\\n require(value <= type(uint192).max, \\\"SafeCast: value doesn't fit in 192 bits\\\");\\n return uint192(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint184 from uint256, reverting on\\n * overflow (when the input is greater than largest uint184).\\n *\\n * Counterpart to Solidity's `uint184` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 184 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint184(uint256 value) internal pure returns (uint184) {\\n require(value <= type(uint184).max, \\\"SafeCast: value doesn't fit in 184 bits\\\");\\n return uint184(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint176 from uint256, reverting on\\n * overflow (when the input is greater than largest uint176).\\n *\\n * Counterpart to Solidity's `uint176` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 176 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint176(uint256 value) internal pure returns (uint176) {\\n require(value <= type(uint176).max, \\\"SafeCast: value doesn't fit in 176 bits\\\");\\n return uint176(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint168 from uint256, reverting on\\n * overflow (when the input is greater than largest uint168).\\n *\\n * Counterpart to Solidity's `uint168` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 168 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint168(uint256 value) internal pure returns (uint168) {\\n require(value <= type(uint168).max, \\\"SafeCast: value doesn't fit in 168 bits\\\");\\n return uint168(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint160 from uint256, reverting on\\n * overflow (when the input is greater than largest uint160).\\n *\\n * Counterpart to Solidity's `uint160` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 160 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint160(uint256 value) internal pure returns (uint160) {\\n require(value <= type(uint160).max, \\\"SafeCast: value doesn't fit in 160 bits\\\");\\n return uint160(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint152 from uint256, reverting on\\n * overflow (when the input is greater than largest uint152).\\n *\\n * Counterpart to Solidity's `uint152` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 152 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint152(uint256 value) internal pure returns (uint152) {\\n require(value <= type(uint152).max, \\\"SafeCast: value doesn't fit in 152 bits\\\");\\n return uint152(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint144 from uint256, reverting on\\n * overflow (when the input is greater than largest uint144).\\n *\\n * Counterpart to Solidity's `uint144` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 144 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint144(uint256 value) internal pure returns (uint144) {\\n require(value <= type(uint144).max, \\\"SafeCast: value doesn't fit in 144 bits\\\");\\n return uint144(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint136 from uint256, reverting on\\n * overflow (when the input is greater than largest uint136).\\n *\\n * Counterpart to Solidity's `uint136` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 136 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint136(uint256 value) internal pure returns (uint136) {\\n require(value <= type(uint136).max, \\\"SafeCast: value doesn't fit in 136 bits\\\");\\n return uint136(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint128 from uint256, reverting on\\n * overflow (when the input is greater than largest uint128).\\n *\\n * Counterpart to Solidity's `uint128` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 128 bits\\n *\\n * _Available since v2.5._\\n */\\n function toUint128(uint256 value) internal pure returns (uint128) {\\n require(value <= type(uint128).max, \\\"SafeCast: value doesn't fit in 128 bits\\\");\\n return uint128(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint120 from uint256, reverting on\\n * overflow (when the input is greater than largest uint120).\\n *\\n * Counterpart to Solidity's `uint120` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 120 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint120(uint256 value) internal pure returns (uint120) {\\n require(value <= type(uint120).max, \\\"SafeCast: value doesn't fit in 120 bits\\\");\\n return uint120(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint112 from uint256, reverting on\\n * overflow (when the input is greater than largest uint112).\\n *\\n * Counterpart to Solidity's `uint112` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 112 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint112(uint256 value) internal pure returns (uint112) {\\n require(value <= type(uint112).max, \\\"SafeCast: value doesn't fit in 112 bits\\\");\\n return uint112(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint104 from uint256, reverting on\\n * overflow (when the input is greater than largest uint104).\\n *\\n * Counterpart to Solidity's `uint104` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 104 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint104(uint256 value) internal pure returns (uint104) {\\n require(value <= type(uint104).max, \\\"SafeCast: value doesn't fit in 104 bits\\\");\\n return uint104(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint96 from uint256, reverting on\\n * overflow (when the input is greater than largest uint96).\\n *\\n * Counterpart to Solidity's `uint96` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 96 bits\\n *\\n * _Available since v4.2._\\n */\\n function toUint96(uint256 value) internal pure returns (uint96) {\\n require(value <= type(uint96).max, \\\"SafeCast: value doesn't fit in 96 bits\\\");\\n return uint96(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint88 from uint256, reverting on\\n * overflow (when the input is greater than largest uint88).\\n *\\n * Counterpart to Solidity's `uint88` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 88 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint88(uint256 value) internal pure returns (uint88) {\\n require(value <= type(uint88).max, \\\"SafeCast: value doesn't fit in 88 bits\\\");\\n return uint88(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint80 from uint256, reverting on\\n * overflow (when the input is greater than largest uint80).\\n *\\n * Counterpart to Solidity's `uint80` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 80 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint80(uint256 value) internal pure returns (uint80) {\\n require(value <= type(uint80).max, \\\"SafeCast: value doesn't fit in 80 bits\\\");\\n return uint80(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint72 from uint256, reverting on\\n * overflow (when the input is greater than largest uint72).\\n *\\n * Counterpart to Solidity's `uint72` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 72 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint72(uint256 value) internal pure returns (uint72) {\\n require(value <= type(uint72).max, \\\"SafeCast: value doesn't fit in 72 bits\\\");\\n return uint72(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint64 from uint256, reverting on\\n * overflow (when the input is greater than largest uint64).\\n *\\n * Counterpart to Solidity's `uint64` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 64 bits\\n *\\n * _Available since v2.5._\\n */\\n function toUint64(uint256 value) internal pure returns (uint64) {\\n require(value <= type(uint64).max, \\\"SafeCast: value doesn't fit in 64 bits\\\");\\n return uint64(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint56 from uint256, reverting on\\n * overflow (when the input is greater than largest uint56).\\n *\\n * Counterpart to Solidity's `uint56` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 56 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint56(uint256 value) internal pure returns (uint56) {\\n require(value <= type(uint56).max, \\\"SafeCast: value doesn't fit in 56 bits\\\");\\n return uint56(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint48 from uint256, reverting on\\n * overflow (when the input is greater than largest uint48).\\n *\\n * Counterpart to Solidity's `uint48` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 48 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint48(uint256 value) internal pure returns (uint48) {\\n require(value <= type(uint48).max, \\\"SafeCast: value doesn't fit in 48 bits\\\");\\n return uint48(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint40 from uint256, reverting on\\n * overflow (when the input is greater than largest uint40).\\n *\\n * Counterpart to Solidity's `uint40` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 40 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint40(uint256 value) internal pure returns (uint40) {\\n require(value <= type(uint40).max, \\\"SafeCast: value doesn't fit in 40 bits\\\");\\n return uint40(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint32 from uint256, reverting on\\n * overflow (when the input is greater than largest uint32).\\n *\\n * Counterpart to Solidity's `uint32` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 32 bits\\n *\\n * _Available since v2.5._\\n */\\n function toUint32(uint256 value) internal pure returns (uint32) {\\n require(value <= type(uint32).max, \\\"SafeCast: value doesn't fit in 32 bits\\\");\\n return uint32(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint24 from uint256, reverting on\\n * overflow (when the input is greater than largest uint24).\\n *\\n * Counterpart to Solidity's `uint24` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 24 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint24(uint256 value) internal pure returns (uint24) {\\n require(value <= type(uint24).max, \\\"SafeCast: value doesn't fit in 24 bits\\\");\\n return uint24(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint16 from uint256, reverting on\\n * overflow (when the input is greater than largest uint16).\\n *\\n * Counterpart to Solidity's `uint16` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 16 bits\\n *\\n * _Available since v2.5._\\n */\\n function toUint16(uint256 value) internal pure returns (uint16) {\\n require(value <= type(uint16).max, \\\"SafeCast: value doesn't fit in 16 bits\\\");\\n return uint16(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint8 from uint256, reverting on\\n * overflow (when the input is greater than largest uint8).\\n *\\n * Counterpart to Solidity's `uint8` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 8 bits\\n *\\n * _Available since v2.5._\\n */\\n function toUint8(uint256 value) internal pure returns (uint8) {\\n require(value <= type(uint8).max, \\\"SafeCast: value doesn't fit in 8 bits\\\");\\n return uint8(value);\\n }\\n\\n /**\\n * @dev Converts a signed int256 into an unsigned uint256.\\n *\\n * Requirements:\\n *\\n * - input must be greater than or equal to 0.\\n *\\n * _Available since v3.0._\\n */\\n function toUint256(int256 value) internal pure returns (uint256) {\\n require(value >= 0, \\\"SafeCast: value must be positive\\\");\\n return uint256(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted int248 from int256, reverting on\\n * overflow (when the input is less than smallest int248 or\\n * greater than largest int248).\\n *\\n * Counterpart to Solidity's `int248` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 248 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt248(int256 value) internal pure returns (int248 downcasted) {\\n downcasted = int248(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 248 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int240 from int256, reverting on\\n * overflow (when the input is less than smallest int240 or\\n * greater than largest int240).\\n *\\n * Counterpart to Solidity's `int240` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 240 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt240(int256 value) internal pure returns (int240 downcasted) {\\n downcasted = int240(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 240 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int232 from int256, reverting on\\n * overflow (when the input is less than smallest int232 or\\n * greater than largest int232).\\n *\\n * Counterpart to Solidity's `int232` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 232 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt232(int256 value) internal pure returns (int232 downcasted) {\\n downcasted = int232(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 232 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int224 from int256, reverting on\\n * overflow (when the input is less than smallest int224 or\\n * greater than largest int224).\\n *\\n * Counterpart to Solidity's `int224` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 224 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt224(int256 value) internal pure returns (int224 downcasted) {\\n downcasted = int224(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 224 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int216 from int256, reverting on\\n * overflow (when the input is less than smallest int216 or\\n * greater than largest int216).\\n *\\n * Counterpart to Solidity's `int216` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 216 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt216(int256 value) internal pure returns (int216 downcasted) {\\n downcasted = int216(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 216 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int208 from int256, reverting on\\n * overflow (when the input is less than smallest int208 or\\n * greater than largest int208).\\n *\\n * Counterpart to Solidity's `int208` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 208 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt208(int256 value) internal pure returns (int208 downcasted) {\\n downcasted = int208(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 208 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int200 from int256, reverting on\\n * overflow (when the input is less than smallest int200 or\\n * greater than largest int200).\\n *\\n * Counterpart to Solidity's `int200` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 200 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt200(int256 value) internal pure returns (int200 downcasted) {\\n downcasted = int200(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 200 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int192 from int256, reverting on\\n * overflow (when the input is less than smallest int192 or\\n * greater than largest int192).\\n *\\n * Counterpart to Solidity's `int192` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 192 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt192(int256 value) internal pure returns (int192 downcasted) {\\n downcasted = int192(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 192 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int184 from int256, reverting on\\n * overflow (when the input is less than smallest int184 or\\n * greater than largest int184).\\n *\\n * Counterpart to Solidity's `int184` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 184 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt184(int256 value) internal pure returns (int184 downcasted) {\\n downcasted = int184(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 184 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int176 from int256, reverting on\\n * overflow (when the input is less than smallest int176 or\\n * greater than largest int176).\\n *\\n * Counterpart to Solidity's `int176` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 176 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt176(int256 value) internal pure returns (int176 downcasted) {\\n downcasted = int176(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 176 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int168 from int256, reverting on\\n * overflow (when the input is less than smallest int168 or\\n * greater than largest int168).\\n *\\n * Counterpart to Solidity's `int168` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 168 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt168(int256 value) internal pure returns (int168 downcasted) {\\n downcasted = int168(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 168 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int160 from int256, reverting on\\n * overflow (when the input is less than smallest int160 or\\n * greater than largest int160).\\n *\\n * Counterpart to Solidity's `int160` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 160 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt160(int256 value) internal pure returns (int160 downcasted) {\\n downcasted = int160(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 160 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int152 from int256, reverting on\\n * overflow (when the input is less than smallest int152 or\\n * greater than largest int152).\\n *\\n * Counterpart to Solidity's `int152` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 152 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt152(int256 value) internal pure returns (int152 downcasted) {\\n downcasted = int152(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 152 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int144 from int256, reverting on\\n * overflow (when the input is less than smallest int144 or\\n * greater than largest int144).\\n *\\n * Counterpart to Solidity's `int144` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 144 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt144(int256 value) internal pure returns (int144 downcasted) {\\n downcasted = int144(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 144 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int136 from int256, reverting on\\n * overflow (when the input is less than smallest int136 or\\n * greater than largest int136).\\n *\\n * Counterpart to Solidity's `int136` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 136 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt136(int256 value) internal pure returns (int136 downcasted) {\\n downcasted = int136(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 136 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int128 from int256, reverting on\\n * overflow (when the input is less than smallest int128 or\\n * greater than largest int128).\\n *\\n * Counterpart to Solidity's `int128` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 128 bits\\n *\\n * _Available since v3.1._\\n */\\n function toInt128(int256 value) internal pure returns (int128 downcasted) {\\n downcasted = int128(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 128 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int120 from int256, reverting on\\n * overflow (when the input is less than smallest int120 or\\n * greater than largest int120).\\n *\\n * Counterpart to Solidity's `int120` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 120 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt120(int256 value) internal pure returns (int120 downcasted) {\\n downcasted = int120(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 120 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int112 from int256, reverting on\\n * overflow (when the input is less than smallest int112 or\\n * greater than largest int112).\\n *\\n * Counterpart to Solidity's `int112` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 112 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt112(int256 value) internal pure returns (int112 downcasted) {\\n downcasted = int112(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 112 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int104 from int256, reverting on\\n * overflow (when the input is less than smallest int104 or\\n * greater than largest int104).\\n *\\n * Counterpart to Solidity's `int104` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 104 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt104(int256 value) internal pure returns (int104 downcasted) {\\n downcasted = int104(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 104 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int96 from int256, reverting on\\n * overflow (when the input is less than smallest int96 or\\n * greater than largest int96).\\n *\\n * Counterpart to Solidity's `int96` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 96 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt96(int256 value) internal pure returns (int96 downcasted) {\\n downcasted = int96(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 96 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int88 from int256, reverting on\\n * overflow (when the input is less than smallest int88 or\\n * greater than largest int88).\\n *\\n * Counterpart to Solidity's `int88` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 88 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt88(int256 value) internal pure returns (int88 downcasted) {\\n downcasted = int88(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 88 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int80 from int256, reverting on\\n * overflow (when the input is less than smallest int80 or\\n * greater than largest int80).\\n *\\n * Counterpart to Solidity's `int80` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 80 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt80(int256 value) internal pure returns (int80 downcasted) {\\n downcasted = int80(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 80 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int72 from int256, reverting on\\n * overflow (when the input is less than smallest int72 or\\n * greater than largest int72).\\n *\\n * Counterpart to Solidity's `int72` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 72 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt72(int256 value) internal pure returns (int72 downcasted) {\\n downcasted = int72(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 72 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int64 from int256, reverting on\\n * overflow (when the input is less than smallest int64 or\\n * greater than largest int64).\\n *\\n * Counterpart to Solidity's `int64` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 64 bits\\n *\\n * _Available since v3.1._\\n */\\n function toInt64(int256 value) internal pure returns (int64 downcasted) {\\n downcasted = int64(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 64 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int56 from int256, reverting on\\n * overflow (when the input is less than smallest int56 or\\n * greater than largest int56).\\n *\\n * Counterpart to Solidity's `int56` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 56 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt56(int256 value) internal pure returns (int56 downcasted) {\\n downcasted = int56(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 56 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int48 from int256, reverting on\\n * overflow (when the input is less than smallest int48 or\\n * greater than largest int48).\\n *\\n * Counterpart to Solidity's `int48` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 48 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt48(int256 value) internal pure returns (int48 downcasted) {\\n downcasted = int48(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 48 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int40 from int256, reverting on\\n * overflow (when the input is less than smallest int40 or\\n * greater than largest int40).\\n *\\n * Counterpart to Solidity's `int40` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 40 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt40(int256 value) internal pure returns (int40 downcasted) {\\n downcasted = int40(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 40 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int32 from int256, reverting on\\n * overflow (when the input is less than smallest int32 or\\n * greater than largest int32).\\n *\\n * Counterpart to Solidity's `int32` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 32 bits\\n *\\n * _Available since v3.1._\\n */\\n function toInt32(int256 value) internal pure returns (int32 downcasted) {\\n downcasted = int32(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 32 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int24 from int256, reverting on\\n * overflow (when the input is less than smallest int24 or\\n * greater than largest int24).\\n *\\n * Counterpart to Solidity's `int24` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 24 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt24(int256 value) internal pure returns (int24 downcasted) {\\n downcasted = int24(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 24 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int16 from int256, reverting on\\n * overflow (when the input is less than smallest int16 or\\n * greater than largest int16).\\n *\\n * Counterpart to Solidity's `int16` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 16 bits\\n *\\n * _Available since v3.1._\\n */\\n function toInt16(int256 value) internal pure returns (int16 downcasted) {\\n downcasted = int16(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 16 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int8 from int256, reverting on\\n * overflow (when the input is less than smallest int8 or\\n * greater than largest int8).\\n *\\n * Counterpart to Solidity's `int8` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 8 bits\\n *\\n * _Available since v3.1._\\n */\\n function toInt8(int256 value) internal pure returns (int8 downcasted) {\\n downcasted = int8(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 8 bits\\\");\\n }\\n\\n /**\\n * @dev Converts an unsigned uint256 into a signed int256.\\n *\\n * Requirements:\\n *\\n * - input must be less than or equal to maxInt256.\\n *\\n * _Available since v3.0._\\n */\\n function toInt256(uint256 value) internal pure returns (int256) {\\n // Note: Unsafe cast below is okay because `type(int256).max` is guaranteed to be positive\\n require(value <= uint256(type(int256).max), \\\"SafeCast: value doesn't fit in an int256\\\");\\n return int256(value);\\n }\\n}\\n\",\"keccak256\":\"0xcef50f95b43b038aa40aed25b62fc45906c681a5c1d504a4fdcf3bc6330a8d4b\",\"license\":\"MIT\"},\"src/mocks/plugin/extensions/governance/AddresslistMock.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {Addresslist} from \\\"../../../../plugin/extensions/governance/Addresslist.sol\\\";\\n\\n/// @notice A mock addresslist that everyone can add and remove addresses to and from, respectively.\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract AddresslistMock is Addresslist {\\n function addAddresses(address[] calldata _newAddresses) external {\\n _addAddresses(_newAddresses);\\n }\\n\\n function removeAddresses(address[] calldata _exitingAddresses) external {\\n _removeAddresses(_exitingAddresses);\\n }\\n}\\n\",\"keccak256\":\"0x56d535d76c8ab01f0752b068ca458a262e7d17f091e7e59f9b0d8be9accafaf9\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/extensions/governance/Addresslist.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {CheckpointsUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/CheckpointsUpgradeable.sol\\\";\\n\\nimport {_uncheckedAdd, _uncheckedSub} from \\\"../../../utils/math/UncheckedMath.sol\\\";\\n\\n/// @title Addresslist\\n/// @author Aragon X - 2021-2023\\n/// @notice The majority voting implementation using a list of member addresses.\\n/// @dev This contract inherits from `MajorityVotingBase` and implements the `IMajorityVoting` interface.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract Addresslist {\\n using CheckpointsUpgradeable for CheckpointsUpgradeable.History;\\n\\n /// @notice The mapping containing the checkpointed history of the address list.\\n // solhint-disable-next-line named-parameters-mapping\\n mapping(address => CheckpointsUpgradeable.History) private _addresslistCheckpoints;\\n\\n /// @notice The checkpointed history of the length of the address list.\\n CheckpointsUpgradeable.History private _addresslistLengthCheckpoints;\\n\\n /// @notice Thrown when the address list update is invalid, which can be caused by the addition of an existing member or removal of a non-existing member.\\n /// @param member The array of member addresses to be added or removed.\\n error InvalidAddresslistUpdate(address member);\\n\\n /// @notice Checks if an account is on the address list at a specific block number.\\n /// @param _account The account address being checked.\\n /// @param _blockNumber The block number.\\n /// @return Whether the account is listed at the specified block number.\\n function isListedAtBlock(\\n address _account,\\n uint256 _blockNumber\\n ) public view virtual returns (bool) {\\n return _addresslistCheckpoints[_account].getAtBlock(_blockNumber) == 1;\\n }\\n\\n /// @notice Checks if an account is currently on the address list.\\n /// @param _account The account address being checked.\\n /// @return Whether the account is currently listed.\\n function isListed(address _account) public view virtual returns (bool) {\\n return _addresslistCheckpoints[_account].latest() == 1;\\n }\\n\\n /// @notice Returns the length of the address list at a specific block number.\\n /// @param _blockNumber The specific block to get the count from. If `0`, then the latest checkpoint value is returned.\\n /// @return The address list length at the specified block number.\\n function addresslistLengthAtBlock(uint256 _blockNumber) public view virtual returns (uint256) {\\n return _addresslistLengthCheckpoints.getAtBlock(_blockNumber);\\n }\\n\\n /// @notice Returns the current length of the address list.\\n /// @return The current address list length.\\n function addresslistLength() public view virtual returns (uint256) {\\n return _addresslistLengthCheckpoints.latest();\\n }\\n\\n /// @notice Internal function to add new addresses to the address list.\\n /// @param _newAddresses The new addresses to be added.\\n function _addAddresses(address[] calldata _newAddresses) internal virtual {\\n for (uint256 i; i < _newAddresses.length; ) {\\n if (isListed(_newAddresses[i])) {\\n revert InvalidAddresslistUpdate(_newAddresses[i]);\\n }\\n\\n // Mark the address as listed\\n _addresslistCheckpoints[_newAddresses[i]].push(1);\\n\\n unchecked {\\n ++i;\\n }\\n }\\n _addresslistLengthCheckpoints.push(_uncheckedAdd, _newAddresses.length);\\n }\\n\\n /// @notice Internal function to remove existing addresses from the address list.\\n /// @param _exitingAddresses The existing addresses to be removed.\\n function _removeAddresses(address[] calldata _exitingAddresses) internal virtual {\\n for (uint256 i; i < _exitingAddresses.length; ) {\\n if (!isListed(_exitingAddresses[i])) {\\n revert InvalidAddresslistUpdate(_exitingAddresses[i]);\\n }\\n\\n // Mark the address as not listed\\n _addresslistCheckpoints[_exitingAddresses[i]].push(0);\\n\\n unchecked {\\n ++i;\\n }\\n }\\n _addresslistLengthCheckpoints.push(_uncheckedSub, _exitingAddresses.length);\\n }\\n\\n /// @dev This empty reserved space is put in place to allow future versions to add new\\n /// variables without shifting down storage in the inheritance chain.\\n /// https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n uint256[48] private __gap;\\n}\\n\",\"keccak256\":\"0x61daf3913f46d0408a1f2af86d594cb5d05cb1d9253ccd14a6e4d9c980b14b69\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/math/UncheckedMath.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @notice Adds two unsigned integers without checking the result for overflow errors (using safe math).\\n/// @param a The first summand.\\n/// @param b The second summand.\\n/// @return The sum.\\n/// @custom:security-contact sirt@aragon.org\\nfunction _uncheckedAdd(uint256 a, uint256 b) pure returns (uint256) {\\n unchecked {\\n return a + b;\\n }\\n}\\n\\n/// @notice Subtracts two unsigned integers without checking the result for overflow errors (using safe math).\\n/// @param a The minuend.\\n/// @param b The subtrahend.\\n/// @return The difference.\\n/// @custom:security-contact sirt@aragon.org\\nfunction _uncheckedSub(uint256 a, uint256 b) pure returns (uint256) {\\n unchecked {\\n return a - b;\\n }\\n}\\n\",\"keccak256\":\"0x358210b59bad961994be2e9bea64eadae3567b3f17ebeaf347dd990f52ce3d6d\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[{"astId":13651,"contract":"src/mocks/plugin/extensions/governance/AddresslistMock.sol:AddresslistMock","label":"_addresslistCheckpoints","offset":0,"slot":"0","type":"t_mapping(t_address,t_struct(History)1011_storage)"},{"astId":13655,"contract":"src/mocks/plugin/extensions/governance/AddresslistMock.sol:AddresslistMock","label":"_addresslistLengthCheckpoints","offset":0,"slot":"1","type":"t_struct(History)1011_storage"},{"astId":13830,"contract":"src/mocks/plugin/extensions/governance/AddresslistMock.sol:AddresslistMock","label":"__gap","offset":0,"slot":"2","type":"t_array(t_uint256)48_storage"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_array(t_struct(Checkpoint)1016_storage)dyn_storage":{"base":"t_struct(Checkpoint)1016_storage","encoding":"dynamic_array","label":"struct CheckpointsUpgradeable.Checkpoint[]","numberOfBytes":"32"},"t_array(t_uint256)48_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[48]","numberOfBytes":"1536"},"t_mapping(t_address,t_struct(History)1011_storage)":{"encoding":"mapping","key":"t_address","label":"mapping(address => struct CheckpointsUpgradeable.History)","numberOfBytes":"32","value":"t_struct(History)1011_storage"},"t_struct(Checkpoint)1016_storage":{"encoding":"inplace","label":"struct CheckpointsUpgradeable.Checkpoint","members":[{"astId":1013,"contract":"src/mocks/plugin/extensions/governance/AddresslistMock.sol:AddresslistMock","label":"_blockNumber","offset":0,"slot":"0","type":"t_uint32"},{"astId":1015,"contract":"src/mocks/plugin/extensions/governance/AddresslistMock.sol:AddresslistMock","label":"_value","offset":4,"slot":"0","type":"t_uint224"}],"numberOfBytes":"32"},"t_struct(History)1011_storage":{"encoding":"inplace","label":"struct CheckpointsUpgradeable.History","members":[{"astId":1010,"contract":"src/mocks/plugin/extensions/governance/AddresslistMock.sol:AddresslistMock","label":"_checkpoints","offset":0,"slot":"0","type":"t_array(t_struct(Checkpoint)1016_storage)dyn_storage"}],"numberOfBytes":"32"},"t_uint224":{"encoding":"inplace","label":"uint224","numberOfBytes":"28"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint32":{"encoding":"inplace","label":"uint32","numberOfBytes":"4"}}},"userdoc":{"errors":{"InvalidAddresslistUpdate(address)":[{"notice":"Thrown when the address list update is invalid, which can be caused by the addition of an existing member or removal of a non-existing member."}]},"kind":"user","methods":{"addresslistLength()":{"notice":"Returns the current length of the address list."},"addresslistLengthAtBlock(uint256)":{"notice":"Returns the length of the address list at a specific block number."},"isListed(address)":{"notice":"Checks if an account is currently on the address list."},"isListedAtBlock(address,uint256)":{"notice":"Checks if an account is on the address list at a specific block number."}},"notice":"A mock addresslist that everyone can add and remove addresses to and from, respectively.","version":1}}},"src/mocks/plugin/extensions/proposal/ProposalMock.sol":{"ProposalMock":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":true,"internalType":"address","name":"creator","type":"address"},{"indexed":false,"internalType":"uint64","name":"startDate","type":"uint64"},{"indexed":false,"internalType":"uint64","name":"endDate","type":"uint64"},{"indexed":false,"internalType":"bytes","name":"metadata","type":"bytes"},{"components":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"indexed":false,"internalType":"struct IDAO.Action[]","name":"actions","type":"tuple[]"},{"indexed":false,"internalType":"uint256","name":"allowFailureMap","type":"uint256"}],"name":"ProposalCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalExecuted","type":"event"},{"inputs":[{"internalType":"address","name":"_creator","type":"address"},{"internalType":"bytes","name":"_metadata","type":"bytes"},{"internalType":"uint64","name":"_startDate","type":"uint64"},{"internalType":"uint64","name":"_endDate","type":"uint64"},{"components":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct IDAO.Action[]","name":"_actions","type":"tuple[]"},{"internalType":"uint256","name":"_allowFailureMap","type":"uint256"}],"name":"createProposal","outputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"createProposalId","outputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IDAO","name":"_dao","type":"address"},{"internalType":"uint256","name":"_proposalId","type":"uint256"},{"components":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct IDAO.Action[]","name":"_actions","type":"tuple[]"},{"internalType":"uint256","name":"_allowFailureMap","type":"uint256"}],"name":"executeProposal","outputs":[{"internalType":"bytes[]","name":"execResults","type":"bytes[]"},{"internalType":"uint256","name":"failureMap","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"proposalCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"DO NOT USE IN PRODUCTION!","kind":"dev","methods":{"proposalCount()":{"returns":{"_0":"The proposal count."}},"supportsInterface(bytes4)":{"params":{"_interfaceId":"The ID of the interface."},"returns":{"_0":"Returns `true` if the interface is supported."}}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b506109bf806100206000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c806373e1166d1161005057806373e1166d146100b55780637b2bf56e146100d6578063da35c664146100e657600080fd5b806301ffc9a71461006c578063634a9a8814610094575b600080fd5b61007f61007a36600461027d565b6100ee565b60405190151581526020015b60405180910390f35b6100a76100a2366004610382565b610125565b60405161008b929190610544565b6100c86100c3366004610616565b610142565b60405190815260200161008b565b60008054600181019091556100c8565b6000546100c8565b60006001600160e01b0319821663368d719960e21b148061011f57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600061013586868686610161565b9097909650945050505050565b60006101548989898989898989610217565b9998505050505050505050565b6040516331c6fcc960e21b81526060906000906001600160a01b0387169063c71bf32490610197908890889088906004016106ed565b6000604051808303816000875af11580156101b6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526101de9190810190610785565b604051919350915085907f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f90600090a294509492505050565b600080546001810182559050886001600160a01b0316817fa6c1f8f4276dc3f243459e13b557c84e8f4e90b2e09070bad5f6909cee687c9288888c8c8a8a8a60405161026997969594939291906108a2565b60405180910390a398975050505050505050565b60006020828403121561028f57600080fd5b81356001600160e01b0319811681146102a757600080fd5b9392505050565b6001600160a01b03811681146102c357600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff811182821017156102ff576102ff6102c6565b60405290565b604051601f8201601f1916810167ffffffffffffffff8111828210171561032e5761032e6102c6565b604052919050565b600067ffffffffffffffff821115610350576103506102c6565b5060051b60200190565b600067ffffffffffffffff821115610374576103746102c6565b50601f01601f191660200190565b6000806000806080858703121561039857600080fd5b6103a285356102ae565b8435935060208501359250604085013567ffffffffffffffff808211156103c857600080fd5b818701915087601f8301126103dc57600080fd5b6103ee6103e98335610336565b610305565b82358082526020808301929160051b8501018a81111561040d57600080fd5b602085015b818110156104e057848135111561042857600080fd5b803586016060818e03601f1901121561044057600080fd5b6104486102dc565b6020820135610456816102ae565b81526040820135602082015260608201358781111561047457600080fd5b8083019250508d603f83011261048957600080fd5b602082013561049a6103e98261035a565b8181528f60408386010111156104af57600080fd5b8160408501602083013760006020838301015280604084015250508086525050602084019350602081019050610412565b50979a969950976060013596505050505050565b60005b8381101561050f5781810151838201526020016104f7565b50506000910152565b600081518084526105308160208601602086016104f4565b601f01601f19169290920160200192915050565b6000604082016040835280855180835260608501915060608160051b8601019250602080880160005b8381101561059b57605f19888703018552610589868351610518565b9550938201939082019060010161056d565b50509490940194909452949350505050565b803567ffffffffffffffff811681146105c557600080fd5b919050565b60008083601f8401126105dc57600080fd5b50813567ffffffffffffffff8111156105f457600080fd5b6020830191508360208260051b850101111561060f57600080fd5b9250929050565b60008060008060008060008060c0898b03121561063257600080fd5b883561063d816102ae565b9750602089013567ffffffffffffffff8082111561065a57600080fd5b818b0191508b601f83011261066e57600080fd5b81358181111561067d57600080fd5b8c602082850101111561068f57600080fd5b60208301995097506106a360408c016105ad565b96506106b160608c016105ad565b955060808b01359150808211156106c757600080fd5b506106d48b828c016105ca565b999c989b50969995989497949560a00135949350505050565b600060608083018684526020828186015281875180845260808701915060808160051b880101935082890160005b8281101561076e57888603607f19018452815180516001600160a01b03168752858101518688015260409081015190870188905261075b88880182610518565b965050928401929084019060010161071b565b505050505060409390930193909352509392505050565b600080604080848603121561079957600080fd5b835167ffffffffffffffff808211156107b157600080fd5b818601915086601f8301126107c557600080fd5b815160206107d56103e983610336565b82815260059290921b8401810191818101908a8411156107f457600080fd5b8286015b84811015610865578051868111156108105760008081fd5b8701603f81018d136108225760008081fd5b848101516108326103e98261035a565b8181528e8b8385010111156108475760008081fd5b610856828883018d86016104f4565b855250509183019183016107f8565b509890910151979997985050505050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b600067ffffffffffffffff808a1683526020818a1681850152604060a0818601526108d160a086018a8c610879565b606086820381880152818983528483019050848a60051b8401018b60005b8c81101561099457858303601f190184528135368f9003605e1901811261091557600080fd5b8e018035610922816102ae565b6001600160a01b0316845280890135898501528781013536829003601e1901811261094c57600080fd5b0188810190358a81111561095f57600080fd5b80360382131561096e57600080fd5b86898601526109808786018284610879565b958a019594505050908701906001016108ef565b5050809750505050505050508260808301529897505050505050505056fea164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x9BF DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x67 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x73E1166D GT PUSH2 0x50 JUMPI DUP1 PUSH4 0x73E1166D EQ PUSH2 0xB5 JUMPI DUP1 PUSH4 0x7B2BF56E EQ PUSH2 0xD6 JUMPI DUP1 PUSH4 0xDA35C664 EQ PUSH2 0xE6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x6C JUMPI DUP1 PUSH4 0x634A9A88 EQ PUSH2 0x94 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7F PUSH2 0x7A CALLDATASIZE PUSH1 0x4 PUSH2 0x27D JUMP JUMPDEST PUSH2 0xEE JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xA7 PUSH2 0xA2 CALLDATASIZE PUSH1 0x4 PUSH2 0x382 JUMP JUMPDEST PUSH2 0x125 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x8B SWAP3 SWAP2 SWAP1 PUSH2 0x544 JUMP JUMPDEST PUSH2 0xC8 PUSH2 0xC3 CALLDATASIZE PUSH1 0x4 PUSH2 0x616 JUMP JUMPDEST PUSH2 0x142 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x8B JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 DUP2 ADD SWAP1 SWAP2 SSTORE PUSH2 0xC8 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0xC8 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x368D7199 PUSH1 0xE2 SHL EQ DUP1 PUSH2 0x11F JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x135 DUP7 DUP7 DUP7 DUP7 PUSH2 0x161 JUMP JUMPDEST SWAP1 SWAP8 SWAP1 SWAP7 POP SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x154 DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 PUSH2 0x217 JUMP JUMPDEST SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x31C6FCC9 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x60 SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0xC71BF324 SWAP1 PUSH2 0x197 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x6ED JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1B6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x1DE SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x785 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 SWAP4 POP SWAP2 POP DUP6 SWAP1 PUSH32 0x712AE1383F79AC853F8D882153778E0260EF8F03B504E2866E0593E04D2B291F SWAP1 PUSH1 0x0 SWAP1 LOG2 SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 DUP2 ADD DUP3 SSTORE SWAP1 POP DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH32 0xA6C1F8F4276DC3F243459E13B557C84E8F4E90B2E09070BAD5F6909CEE687C92 DUP9 DUP9 DUP13 DUP13 DUP11 DUP11 DUP11 PUSH1 0x40 MLOAD PUSH2 0x269 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x8A2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x28F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x2A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x2C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x60 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x2FF JUMPI PUSH2 0x2FF PUSH2 0x2C6 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x32E JUMPI PUSH2 0x32E PUSH2 0x2C6 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x350 JUMPI PUSH2 0x350 PUSH2 0x2C6 JUMP JUMPDEST POP PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x374 JUMPI PUSH2 0x374 PUSH2 0x2C6 JUMP JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x398 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3A2 DUP6 CALLDATALOAD PUSH2 0x2AE JUMP JUMPDEST DUP5 CALLDATALOAD SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x3C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3EE PUSH2 0x3E9 DUP4 CALLDATALOAD PUSH2 0x336 JUMP JUMPDEST PUSH2 0x305 JUMP JUMPDEST DUP3 CALLDATALOAD DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP3 SWAP2 PUSH1 0x5 SHL DUP6 ADD ADD DUP11 DUP2 GT ISZERO PUSH2 0x40D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP6 ADD JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x4E0 JUMPI DUP5 DUP2 CALLDATALOAD GT ISZERO PUSH2 0x428 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD DUP7 ADD PUSH1 0x60 DUP2 DUP15 SUB PUSH1 0x1F NOT ADD SLT ISZERO PUSH2 0x440 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x448 PUSH2 0x2DC JUMP JUMPDEST PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH2 0x456 DUP2 PUSH2 0x2AE JUMP JUMPDEST DUP2 MSTORE PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x60 DUP3 ADD CALLDATALOAD DUP8 DUP2 GT ISZERO PUSH2 0x474 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 DUP4 ADD SWAP3 POP POP DUP14 PUSH1 0x3F DUP4 ADD SLT PUSH2 0x489 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH2 0x49A PUSH2 0x3E9 DUP3 PUSH2 0x35A JUMP JUMPDEST DUP2 DUP2 MSTORE DUP16 PUSH1 0x40 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0x4AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP4 DUP4 ADD ADD MSTORE DUP1 PUSH1 0x40 DUP5 ADD MSTORE POP POP DUP1 DUP7 MSTORE POP POP PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x412 JUMP JUMPDEST POP SWAP8 SWAP11 SWAP7 SWAP10 POP SWAP8 PUSH1 0x60 ADD CALLDATALOAD SWAP7 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x50F JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x4F7 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x530 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x4F4 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD PUSH1 0x40 DUP4 MSTORE DUP1 DUP6 MLOAD DUP1 DUP4 MSTORE PUSH1 0x60 DUP6 ADD SWAP2 POP PUSH1 0x60 DUP2 PUSH1 0x5 SHL DUP7 ADD ADD SWAP3 POP PUSH1 0x20 DUP1 DUP9 ADD PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x59B JUMPI PUSH1 0x5F NOT DUP9 DUP8 SUB ADD DUP6 MSTORE PUSH2 0x589 DUP7 DUP4 MLOAD PUSH2 0x518 JUMP JUMPDEST SWAP6 POP SWAP4 DUP3 ADD SWAP4 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x56D JUMP JUMPDEST POP POP SWAP5 SWAP1 SWAP5 ADD SWAP5 SWAP1 SWAP5 MSTORE SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x5C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x5DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x5F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 PUSH1 0x5 SHL DUP6 ADD ADD GT ISZERO PUSH2 0x60F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP10 DUP12 SUB SLT ISZERO PUSH2 0x632 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP9 CALLDATALOAD PUSH2 0x63D DUP2 PUSH2 0x2AE JUMP JUMPDEST SWAP8 POP PUSH1 0x20 DUP10 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x65A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP12 ADD SWAP2 POP DUP12 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x66E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x67D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP13 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x68F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP10 POP SWAP8 POP PUSH2 0x6A3 PUSH1 0x40 DUP13 ADD PUSH2 0x5AD JUMP JUMPDEST SWAP7 POP PUSH2 0x6B1 PUSH1 0x60 DUP13 ADD PUSH2 0x5AD JUMP JUMPDEST SWAP6 POP PUSH1 0x80 DUP12 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x6C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x6D4 DUP12 DUP3 DUP13 ADD PUSH2 0x5CA JUMP JUMPDEST SWAP10 SWAP13 SWAP9 SWAP12 POP SWAP7 SWAP10 SWAP6 SWAP9 SWAP5 SWAP8 SWAP5 SWAP6 PUSH1 0xA0 ADD CALLDATALOAD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP1 DUP4 ADD DUP7 DUP5 MSTORE PUSH1 0x20 DUP3 DUP2 DUP7 ADD MSTORE DUP2 DUP8 MLOAD DUP1 DUP5 MSTORE PUSH1 0x80 DUP8 ADD SWAP2 POP PUSH1 0x80 DUP2 PUSH1 0x5 SHL DUP9 ADD ADD SWAP4 POP DUP3 DUP10 ADD PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x76E JUMPI DUP9 DUP7 SUB PUSH1 0x7F NOT ADD DUP5 MSTORE DUP2 MLOAD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 MSTORE DUP6 DUP2 ADD MLOAD DUP7 DUP9 ADD MSTORE PUSH1 0x40 SWAP1 DUP2 ADD MLOAD SWAP1 DUP8 ADD DUP9 SWAP1 MSTORE PUSH2 0x75B DUP9 DUP9 ADD DUP3 PUSH2 0x518 JUMP JUMPDEST SWAP7 POP POP SWAP3 DUP5 ADD SWAP3 SWAP1 DUP5 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x71B JUMP JUMPDEST POP POP POP POP POP PUSH1 0x40 SWAP4 SWAP1 SWAP4 ADD SWAP4 SWAP1 SWAP4 MSTORE POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP1 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x799 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x7B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP7 ADD SWAP2 POP DUP7 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x7C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x20 PUSH2 0x7D5 PUSH2 0x3E9 DUP4 PUSH2 0x336 JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH1 0x5 SWAP3 SWAP1 SWAP3 SHL DUP5 ADD DUP2 ADD SWAP2 DUP2 DUP2 ADD SWAP1 DUP11 DUP5 GT ISZERO PUSH2 0x7F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 DUP7 ADD JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x865 JUMPI DUP1 MLOAD DUP7 DUP2 GT ISZERO PUSH2 0x810 JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST DUP8 ADD PUSH1 0x3F DUP2 ADD DUP14 SGT PUSH2 0x822 JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST DUP5 DUP2 ADD MLOAD PUSH2 0x832 PUSH2 0x3E9 DUP3 PUSH2 0x35A JUMP JUMPDEST DUP2 DUP2 MSTORE DUP15 DUP12 DUP4 DUP6 ADD ADD GT ISZERO PUSH2 0x847 JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST PUSH2 0x856 DUP3 DUP9 DUP4 ADD DUP14 DUP7 ADD PUSH2 0x4F4 JUMP JUMPDEST DUP6 MSTORE POP POP SWAP2 DUP4 ADD SWAP2 DUP4 ADD PUSH2 0x7F8 JUMP JUMPDEST POP SWAP9 SWAP1 SWAP2 ADD MLOAD SWAP8 SWAP10 SWAP8 SWAP9 POP POP POP POP POP POP POP POP JUMP JUMPDEST DUP2 DUP4 MSTORE DUP2 DUP2 PUSH1 0x20 DUP6 ADD CALLDATACOPY POP PUSH1 0x0 DUP3 DUP3 ADD PUSH1 0x20 SWAP1 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1F SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND SWAP1 SWAP2 ADD ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP11 AND DUP4 MSTORE PUSH1 0x20 DUP2 DUP11 AND DUP2 DUP6 ADD MSTORE PUSH1 0x40 PUSH1 0xA0 DUP2 DUP7 ADD MSTORE PUSH2 0x8D1 PUSH1 0xA0 DUP7 ADD DUP11 DUP13 PUSH2 0x879 JUMP JUMPDEST PUSH1 0x60 DUP7 DUP3 SUB DUP2 DUP9 ADD MSTORE DUP2 DUP10 DUP4 MSTORE DUP5 DUP4 ADD SWAP1 POP DUP5 DUP11 PUSH1 0x5 SHL DUP5 ADD ADD DUP12 PUSH1 0x0 JUMPDEST DUP13 DUP2 LT ISZERO PUSH2 0x994 JUMPI DUP6 DUP4 SUB PUSH1 0x1F NOT ADD DUP5 MSTORE DUP2 CALLDATALOAD CALLDATASIZE DUP16 SWAP1 SUB PUSH1 0x5E NOT ADD DUP2 SLT PUSH2 0x915 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP15 ADD DUP1 CALLDATALOAD PUSH2 0x922 DUP2 PUSH2 0x2AE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 MSTORE DUP1 DUP10 ADD CALLDATALOAD DUP10 DUP6 ADD MSTORE DUP8 DUP2 ADD CALLDATALOAD CALLDATASIZE DUP3 SWAP1 SUB PUSH1 0x1E NOT ADD DUP2 SLT PUSH2 0x94C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST ADD DUP9 DUP2 ADD SWAP1 CALLDATALOAD DUP11 DUP2 GT ISZERO PUSH2 0x95F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATASIZE SUB DUP3 SGT ISZERO PUSH2 0x96E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 DUP10 DUP7 ADD MSTORE PUSH2 0x980 DUP8 DUP7 ADD DUP3 DUP5 PUSH2 0x879 JUMP JUMPDEST SWAP6 DUP11 ADD SWAP6 SWAP5 POP POP POP SWAP1 DUP8 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x8EF JUMP JUMPDEST POP POP DUP1 SWAP8 POP POP POP POP POP POP POP POP DUP3 PUSH1 0x80 DUP4 ADD MSTORE SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"315:948:56:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_createProposalId_13970":{"entryPoint":null,"id":13970,"parameterSlots":0,"returnSlots":1},"@_createProposal_14006":{"entryPoint":535,"id":14006,"parameterSlots":8,"returnSlots":1},"@_executeProposal_14045":{"entryPoint":353,"id":14045,"parameterSlots":4,"returnSlots":2},"@createProposalId_12481":{"entryPoint":null,"id":12481,"parameterSlots":0,"returnSlots":1},"@createProposal_12512":{"entryPoint":322,"id":12512,"parameterSlots":8,"returnSlots":1},"@current_9312":{"entryPoint":null,"id":9312,"parameterSlots":1,"returnSlots":1},"@executeProposal_12543":{"entryPoint":293,"id":12543,"parameterSlots":4,"returnSlots":2},"@increment_9326":{"entryPoint":null,"id":9326,"parameterSlots":1,"returnSlots":0},"@proposalCount_13931":{"entryPoint":null,"id":13931,"parameterSlots":0,"returnSlots":1},"@supportsInterface_13953":{"entryPoint":238,"id":13953,"parameterSlots":1,"returnSlots":1},"@supportsInterface_9730":{"entryPoint":null,"id":9730,"parameterSlots":1,"returnSlots":1},"abi_decode_array_struct_Action_calldata_dyn_calldata":{"entryPoint":1482,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_bytes_calldata_ptrt_uint64t_uint64t_array$_t_struct$_Action_$10724_calldata_ptr_$dyn_calldata_ptrt_uint256":{"entryPoint":1558,"id":null,"parameterSlots":2,"returnSlots":8},"abi_decode_tuple_t_array$_t_bytes_memory_ptr_$dyn_memory_ptrt_uint256_fromMemory":{"entryPoint":1925,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_bytes4":{"entryPoint":637,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_contract$_IDAO_$10865t_uint256t_array$_t_struct$_Action_$10724_memory_ptr_$dyn_memory_ptrt_uint256":{"entryPoint":898,"id":null,"parameterSlots":2,"returnSlots":4},"abi_decode_uint64":{"entryPoint":1453,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_bytes":{"entryPoint":1304,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_bytes_calldata":{"entryPoint":2169,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_t_uint256__to_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_t_uint256__fromStack_reversed":{"entryPoint":1348,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bytes32_t_array$_t_struct$_Action_$10724_memory_ptr_$dyn_memory_ptr_t_uint256__to_t_bytes32_t_array$_t_struct$_Action_$10724_memory_ptr_$dyn_memory_ptr_t_uint256__fromStack_reversed":{"entryPoint":1773,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_uint64_t_uint64_t_bytes_calldata_ptr_t_array$_t_struct$_Action_$10724_calldata_ptr_$dyn_calldata_ptr_t_uint256__to_t_uint64_t_uint64_t_bytes_memory_ptr_t_array$_t_struct$_Action_$10724_memory_ptr_$dyn_memory_ptr_t_uint256__fromStack_reversed":{"entryPoint":2210,"id":null,"parameterSlots":8,"returnSlots":1},"allocate_memory":{"entryPoint":773,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_memory_2869":{"entryPoint":732,"id":null,"parameterSlots":0,"returnSlots":1},"array_allocation_size_array_struct_Action_dyn":{"entryPoint":822,"id":null,"parameterSlots":1,"returnSlots":1},"array_allocation_size_bytes":{"entryPoint":858,"id":null,"parameterSlots":1,"returnSlots":1},"copy_memory_to_memory_with_cleanup":{"entryPoint":1268,"id":null,"parameterSlots":3,"returnSlots":0},"panic_error_0x41":{"entryPoint":710,"id":null,"parameterSlots":0,"returnSlots":0},"validator_revert_contract_IDAO":{"entryPoint":686,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:12924:92","statements":[{"nodeType":"YulBlock","src":"6:3:92","statements":[]},{"body":{"nodeType":"YulBlock","src":"83:217:92","statements":[{"body":{"nodeType":"YulBlock","src":"129:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"138:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"141:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"131:6:92"},"nodeType":"YulFunctionCall","src":"131:12:92"},"nodeType":"YulExpressionStatement","src":"131:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"104:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"113:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"100:3:92"},"nodeType":"YulFunctionCall","src":"100:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"125:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"96:3:92"},"nodeType":"YulFunctionCall","src":"96:32:92"},"nodeType":"YulIf","src":"93:52:92"},{"nodeType":"YulVariableDeclaration","src":"154:36:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"180:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"167:12:92"},"nodeType":"YulFunctionCall","src":"167:23:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"158:5:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"254:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"263:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"266:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"256:6:92"},"nodeType":"YulFunctionCall","src":"256:12:92"},"nodeType":"YulExpressionStatement","src":"256:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"212:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"223:5:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"234:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"239:10:92","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"230:3:92"},"nodeType":"YulFunctionCall","src":"230:20:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"219:3:92"},"nodeType":"YulFunctionCall","src":"219:32:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"209:2:92"},"nodeType":"YulFunctionCall","src":"209:43:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"202:6:92"},"nodeType":"YulFunctionCall","src":"202:51:92"},"nodeType":"YulIf","src":"199:71:92"},{"nodeType":"YulAssignment","src":"279:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"289:5:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"279:6:92"}]}]},"name":"abi_decode_tuple_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"49:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"60:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"72:6:92","type":""}],"src":"14:286:92"},{"body":{"nodeType":"YulBlock","src":"400:92:92","statements":[{"nodeType":"YulAssignment","src":"410:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"422:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"433:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"418:3:92"},"nodeType":"YulFunctionCall","src":"418:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"410:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"452:9:92"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"477:6:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"470:6:92"},"nodeType":"YulFunctionCall","src":"470:14:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"463:6:92"},"nodeType":"YulFunctionCall","src":"463:22:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"445:6:92"},"nodeType":"YulFunctionCall","src":"445:41:92"},"nodeType":"YulExpressionStatement","src":"445:41:92"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"369:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"380:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"391:4:92","type":""}],"src":"305:187:92"},{"body":{"nodeType":"YulBlock","src":"548:109:92","statements":[{"body":{"nodeType":"YulBlock","src":"635:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"644:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"647:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"637:6:92"},"nodeType":"YulFunctionCall","src":"637:12:92"},"nodeType":"YulExpressionStatement","src":"637:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"571:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"582:5:92"},{"kind":"number","nodeType":"YulLiteral","src":"589:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"578:3:92"},"nodeType":"YulFunctionCall","src":"578:54:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"568:2:92"},"nodeType":"YulFunctionCall","src":"568:65:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"561:6:92"},"nodeType":"YulFunctionCall","src":"561:73:92"},"nodeType":"YulIf","src":"558:93:92"}]},"name":"validator_revert_contract_IDAO","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"537:5:92","type":""}],"src":"497:160:92"},{"body":{"nodeType":"YulBlock","src":"694:95:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"711:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"718:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"723:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"714:3:92"},"nodeType":"YulFunctionCall","src":"714:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"704:6:92"},"nodeType":"YulFunctionCall","src":"704:31:92"},"nodeType":"YulExpressionStatement","src":"704:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"751:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"754:4:92","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"744:6:92"},"nodeType":"YulFunctionCall","src":"744:15:92"},"nodeType":"YulExpressionStatement","src":"744:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"775:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"778:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"768:6:92"},"nodeType":"YulFunctionCall","src":"768:15:92"},"nodeType":"YulExpressionStatement","src":"768:15:92"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"662:127:92"},{"body":{"nodeType":"YulBlock","src":"840:207:92","statements":[{"nodeType":"YulAssignment","src":"850:19:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"866:2:92","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"860:5:92"},"nodeType":"YulFunctionCall","src":"860:9:92"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"850:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"878:35:92","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"900:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"908:4:92","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"896:3:92"},"nodeType":"YulFunctionCall","src":"896:17:92"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"882:10:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"988:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"990:16:92"},"nodeType":"YulFunctionCall","src":"990:18:92"},"nodeType":"YulExpressionStatement","src":"990:18:92"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"931:10:92"},{"kind":"number","nodeType":"YulLiteral","src":"943:18:92","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"928:2:92"},"nodeType":"YulFunctionCall","src":"928:34:92"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"967:10:92"},{"name":"memPtr","nodeType":"YulIdentifier","src":"979:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"964:2:92"},"nodeType":"YulFunctionCall","src":"964:22:92"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"925:2:92"},"nodeType":"YulFunctionCall","src":"925:62:92"},"nodeType":"YulIf","src":"922:88:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1026:2:92","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"1030:10:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1019:6:92"},"nodeType":"YulFunctionCall","src":"1019:22:92"},"nodeType":"YulExpressionStatement","src":"1019:22:92"}]},"name":"allocate_memory_2869","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"829:6:92","type":""}],"src":"794:253:92"},{"body":{"nodeType":"YulBlock","src":"1097:230:92","statements":[{"nodeType":"YulAssignment","src":"1107:19:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1123:2:92","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1117:5:92"},"nodeType":"YulFunctionCall","src":"1117:9:92"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1107:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"1135:58:92","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1157:6:92"},{"arguments":[{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"1173:4:92"},{"kind":"number","nodeType":"YulLiteral","src":"1179:2:92","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1169:3:92"},"nodeType":"YulFunctionCall","src":"1169:13:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1188:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"1184:3:92"},"nodeType":"YulFunctionCall","src":"1184:7:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1165:3:92"},"nodeType":"YulFunctionCall","src":"1165:27:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1153:3:92"},"nodeType":"YulFunctionCall","src":"1153:40:92"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"1139:10:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"1268:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"1270:16:92"},"nodeType":"YulFunctionCall","src":"1270:18:92"},"nodeType":"YulExpressionStatement","src":"1270:18:92"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"1211:10:92"},{"kind":"number","nodeType":"YulLiteral","src":"1223:18:92","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1208:2:92"},"nodeType":"YulFunctionCall","src":"1208:34:92"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"1247:10:92"},{"name":"memPtr","nodeType":"YulIdentifier","src":"1259:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"1244:2:92"},"nodeType":"YulFunctionCall","src":"1244:22:92"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"1205:2:92"},"nodeType":"YulFunctionCall","src":"1205:62:92"},"nodeType":"YulIf","src":"1202:88:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1306:2:92","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"1310:10:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1299:6:92"},"nodeType":"YulFunctionCall","src":"1299:22:92"},"nodeType":"YulExpressionStatement","src":"1299:22:92"}]},"name":"allocate_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"size","nodeType":"YulTypedName","src":"1077:4:92","type":""}],"returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"1086:6:92","type":""}],"src":"1052:275:92"},{"body":{"nodeType":"YulBlock","src":"1407:114:92","statements":[{"body":{"nodeType":"YulBlock","src":"1451:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"1453:16:92"},"nodeType":"YulFunctionCall","src":"1453:18:92"},"nodeType":"YulExpressionStatement","src":"1453:18:92"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"1423:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"1431:18:92","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1420:2:92"},"nodeType":"YulFunctionCall","src":"1420:30:92"},"nodeType":"YulIf","src":"1417:56:92"},{"nodeType":"YulAssignment","src":"1482:33:92","value":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1498:1:92","type":"","value":"5"},{"name":"length","nodeType":"YulIdentifier","src":"1501:6:92"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1494:3:92"},"nodeType":"YulFunctionCall","src":"1494:14:92"},{"kind":"number","nodeType":"YulLiteral","src":"1510:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1490:3:92"},"nodeType":"YulFunctionCall","src":"1490:25:92"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"1482:4:92"}]}]},"name":"array_allocation_size_array_struct_Action_dyn","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nodeType":"YulTypedName","src":"1387:6:92","type":""}],"returnVariables":[{"name":"size","nodeType":"YulTypedName","src":"1398:4:92","type":""}],"src":"1332:189:92"},{"body":{"nodeType":"YulBlock","src":"1583:129:92","statements":[{"body":{"nodeType":"YulBlock","src":"1627:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"1629:16:92"},"nodeType":"YulFunctionCall","src":"1629:18:92"},"nodeType":"YulExpressionStatement","src":"1629:18:92"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"1599:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"1607:18:92","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1596:2:92"},"nodeType":"YulFunctionCall","src":"1596:30:92"},"nodeType":"YulIf","src":"1593:56:92"},{"nodeType":"YulAssignment","src":"1658:48:92","value":{"arguments":[{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"1678:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"1686:2:92","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1674:3:92"},"nodeType":"YulFunctionCall","src":"1674:15:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1695:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"1691:3:92"},"nodeType":"YulFunctionCall","src":"1691:7:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1670:3:92"},"nodeType":"YulFunctionCall","src":"1670:29:92"},{"kind":"number","nodeType":"YulLiteral","src":"1701:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1666:3:92"},"nodeType":"YulFunctionCall","src":"1666:40:92"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"1658:4:92"}]}]},"name":"array_allocation_size_bytes","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nodeType":"YulTypedName","src":"1563:6:92","type":""}],"returnVariables":[{"name":"size","nodeType":"YulTypedName","src":"1574:4:92","type":""}],"src":"1526:186:92"},{"body":{"nodeType":"YulBlock","src":"1902:2024:92","statements":[{"body":{"nodeType":"YulBlock","src":"1949:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1958:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1961:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1951:6:92"},"nodeType":"YulFunctionCall","src":"1951:12:92"},"nodeType":"YulExpressionStatement","src":"1951:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1923:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"1932:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1919:3:92"},"nodeType":"YulFunctionCall","src":"1919:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"1944:3:92","type":"","value":"128"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1915:3:92"},"nodeType":"YulFunctionCall","src":"1915:33:92"},"nodeType":"YulIf","src":"1912:53:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2018:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2005:12:92"},"nodeType":"YulFunctionCall","src":"2005:23:92"}],"functionName":{"name":"validator_revert_contract_IDAO","nodeType":"YulIdentifier","src":"1974:30:92"},"nodeType":"YulFunctionCall","src":"1974:55:92"},"nodeType":"YulExpressionStatement","src":"1974:55:92"},{"nodeType":"YulAssignment","src":"2038:33:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2061:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2048:12:92"},"nodeType":"YulFunctionCall","src":"2048:23:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2038:6:92"}]},{"nodeType":"YulAssignment","src":"2080:42:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2107:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2118:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2103:3:92"},"nodeType":"YulFunctionCall","src":"2103:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2090:12:92"},"nodeType":"YulFunctionCall","src":"2090:32:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"2080:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"2131:46:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2162:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2173:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2158:3:92"},"nodeType":"YulFunctionCall","src":"2158:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2145:12:92"},"nodeType":"YulFunctionCall","src":"2145:32:92"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"2135:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2186:28:92","value":{"kind":"number","nodeType":"YulLiteral","src":"2196:18:92","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"2190:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"2241:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2250:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2253:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2243:6:92"},"nodeType":"YulFunctionCall","src":"2243:12:92"},"nodeType":"YulExpressionStatement","src":"2243:12:92"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"2229:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"2237:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2226:2:92"},"nodeType":"YulFunctionCall","src":"2226:14:92"},"nodeType":"YulIf","src":"2223:34:92"},{"nodeType":"YulVariableDeclaration","src":"2266:32:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2280:9:92"},{"name":"offset","nodeType":"YulIdentifier","src":"2291:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2276:3:92"},"nodeType":"YulFunctionCall","src":"2276:22:92"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"2270:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"2346:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2355:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2358:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2348:6:92"},"nodeType":"YulFunctionCall","src":"2348:12:92"},"nodeType":"YulExpressionStatement","src":"2348:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"2325:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"2329:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2321:3:92"},"nodeType":"YulFunctionCall","src":"2321:13:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2336:7:92"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2317:3:92"},"nodeType":"YulFunctionCall","src":"2317:27:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2310:6:92"},"nodeType":"YulFunctionCall","src":"2310:35:92"},"nodeType":"YulIf","src":"2307:55:92"},{"nodeType":"YulVariableDeclaration","src":"2371:91:92","value":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"2457:2:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2444:12:92"},"nodeType":"YulFunctionCall","src":"2444:16:92"}],"functionName":{"name":"array_allocation_size_array_struct_Action_dyn","nodeType":"YulIdentifier","src":"2398:45:92"},"nodeType":"YulFunctionCall","src":"2398:63:92"}],"functionName":{"name":"allocate_memory","nodeType":"YulIdentifier","src":"2382:15:92"},"nodeType":"YulFunctionCall","src":"2382:80:92"},"variables":[{"name":"dst","nodeType":"YulTypedName","src":"2375:3:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2471:16:92","value":{"name":"dst","nodeType":"YulIdentifier","src":"2484:3:92"},"variables":[{"name":"dst_1","nodeType":"YulTypedName","src":"2475:5:92","type":""}]},{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"2503:3:92"},{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"2521:2:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2508:12:92"},"nodeType":"YulFunctionCall","src":"2508:16:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2496:6:92"},"nodeType":"YulFunctionCall","src":"2496:29:92"},"nodeType":"YulExpressionStatement","src":"2496:29:92"},{"nodeType":"YulAssignment","src":"2534:19:92","value":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"2545:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"2550:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2541:3:92"},"nodeType":"YulFunctionCall","src":"2541:12:92"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"2534:3:92"}]},{"nodeType":"YulVariableDeclaration","src":"2562:56:92","value":{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"2584:2:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2592:1:92","type":"","value":"5"},{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"2608:2:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2595:12:92"},"nodeType":"YulFunctionCall","src":"2595:16:92"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2588:3:92"},"nodeType":"YulFunctionCall","src":"2588:24:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2580:3:92"},"nodeType":"YulFunctionCall","src":"2580:33:92"},{"kind":"number","nodeType":"YulLiteral","src":"2615:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2576:3:92"},"nodeType":"YulFunctionCall","src":"2576:42:92"},"variables":[{"name":"srcEnd","nodeType":"YulTypedName","src":"2566:6:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"2650:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2659:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2662:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2652:6:92"},"nodeType":"YulFunctionCall","src":"2652:12:92"},"nodeType":"YulExpressionStatement","src":"2652:12:92"}]},"condition":{"arguments":[{"name":"srcEnd","nodeType":"YulIdentifier","src":"2633:6:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2641:7:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2630:2:92"},"nodeType":"YulFunctionCall","src":"2630:19:92"},"nodeType":"YulIf","src":"2627:39:92"},{"nodeType":"YulVariableDeclaration","src":"2675:22:92","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"2690:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"2694:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2686:3:92"},"nodeType":"YulFunctionCall","src":"2686:11:92"},"variables":[{"name":"src","nodeType":"YulTypedName","src":"2679:3:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"2762:1081:92","statements":[{"body":{"nodeType":"YulBlock","src":"2805:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2814:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2817:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2807:6:92"},"nodeType":"YulFunctionCall","src":"2807:12:92"},"nodeType":"YulExpressionStatement","src":"2807:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"2795:3:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2782:12:92"},"nodeType":"YulFunctionCall","src":"2782:17:92"},{"name":"_1","nodeType":"YulIdentifier","src":"2801:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2779:2:92"},"nodeType":"YulFunctionCall","src":"2779:25:92"},"nodeType":"YulIf","src":"2776:45:92"},{"nodeType":"YulVariableDeclaration","src":"2834:36:92","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"2848:2:92"},{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"2865:3:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2852:12:92"},"nodeType":"YulFunctionCall","src":"2852:17:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2844:3:92"},"nodeType":"YulFunctionCall","src":"2844:26:92"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"2838:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"2928:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2937:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2940:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2930:6:92"},"nodeType":"YulFunctionCall","src":"2930:12:92"},"nodeType":"YulExpressionStatement","src":"2930:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2898:7:92"},{"name":"_3","nodeType":"YulIdentifier","src":"2907:2:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2894:3:92"},"nodeType":"YulFunctionCall","src":"2894:16:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2916:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"2912:3:92"},"nodeType":"YulFunctionCall","src":"2912:7:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2890:3:92"},"nodeType":"YulFunctionCall","src":"2890:30:92"},{"kind":"number","nodeType":"YulLiteral","src":"2922:4:92","type":"","value":"0x60"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2886:3:92"},"nodeType":"YulFunctionCall","src":"2886:41:92"},"nodeType":"YulIf","src":"2883:61:92"},{"nodeType":"YulVariableDeclaration","src":"2957:35:92","value":{"arguments":[],"functionName":{"name":"allocate_memory_2869","nodeType":"YulIdentifier","src":"2970:20:92"},"nodeType":"YulFunctionCall","src":"2970:22:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"2961:5:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3005:40:92","value":{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"3037:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"3041:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3033:3:92"},"nodeType":"YulFunctionCall","src":"3033:11:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3020:12:92"},"nodeType":"YulFunctionCall","src":"3020:25:92"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"3009:7:92","type":""}]},{"expression":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"3089:7:92"}],"functionName":{"name":"validator_revert_contract_IDAO","nodeType":"YulIdentifier","src":"3058:30:92"},"nodeType":"YulFunctionCall","src":"3058:39:92"},"nodeType":"YulExpressionStatement","src":"3058:39:92"},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3117:5:92"},{"name":"value_1","nodeType":"YulIdentifier","src":"3124:7:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3110:6:92"},"nodeType":"YulFunctionCall","src":"3110:22:92"},"nodeType":"YulExpressionStatement","src":"3110:22:92"},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3156:5:92"},{"kind":"number","nodeType":"YulLiteral","src":"3163:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3152:3:92"},"nodeType":"YulFunctionCall","src":"3152:14:92"},{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"3185:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"3189:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3181:3:92"},"nodeType":"YulFunctionCall","src":"3181:11:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3168:12:92"},"nodeType":"YulFunctionCall","src":"3168:25:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3145:6:92"},"nodeType":"YulFunctionCall","src":"3145:49:92"},"nodeType":"YulExpressionStatement","src":"3145:49:92"},{"nodeType":"YulVariableDeclaration","src":"3207:43:92","value":{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"3240:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"3244:4:92","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3236:3:92"},"nodeType":"YulFunctionCall","src":"3236:13:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3223:12:92"},"nodeType":"YulFunctionCall","src":"3223:27:92"},"variables":[{"name":"offset_1","nodeType":"YulTypedName","src":"3211:8:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"3283:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3292:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3295:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3285:6:92"},"nodeType":"YulFunctionCall","src":"3285:12:92"},"nodeType":"YulExpressionStatement","src":"3285:12:92"}]},"condition":{"arguments":[{"name":"offset_1","nodeType":"YulIdentifier","src":"3269:8:92"},{"name":"_1","nodeType":"YulIdentifier","src":"3279:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3266:2:92"},"nodeType":"YulFunctionCall","src":"3266:16:92"},"nodeType":"YulIf","src":"3263:36:92"},{"nodeType":"YulVariableDeclaration","src":"3312:27:92","value":{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"3326:2:92"},{"name":"offset_1","nodeType":"YulIdentifier","src":"3330:8:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3322:3:92"},"nodeType":"YulFunctionCall","src":"3322:17:92"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"3316:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"3389:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3398:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3401:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3391:6:92"},"nodeType":"YulFunctionCall","src":"3391:12:92"},"nodeType":"YulExpressionStatement","src":"3391:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_4","nodeType":"YulIdentifier","src":"3370:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"3374:2:92","type":"","value":"63"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3366:3:92"},"nodeType":"YulFunctionCall","src":"3366:11:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3379:7:92"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3362:3:92"},"nodeType":"YulFunctionCall","src":"3362:25:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3355:6:92"},"nodeType":"YulFunctionCall","src":"3355:33:92"},"nodeType":"YulIf","src":"3352:53:92"},{"nodeType":"YulVariableDeclaration","src":"3418:35:92","value":{"arguments":[{"arguments":[{"name":"_4","nodeType":"YulIdentifier","src":"3445:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"3449:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3441:3:92"},"nodeType":"YulFunctionCall","src":"3441:11:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3428:12:92"},"nodeType":"YulFunctionCall","src":"3428:25:92"},"variables":[{"name":"_5","nodeType":"YulTypedName","src":"3422:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3466:61:92","value":{"arguments":[{"arguments":[{"name":"_5","nodeType":"YulIdentifier","src":"3523:2:92"}],"functionName":{"name":"array_allocation_size_bytes","nodeType":"YulIdentifier","src":"3495:27:92"},"nodeType":"YulFunctionCall","src":"3495:31:92"}],"functionName":{"name":"allocate_memory","nodeType":"YulIdentifier","src":"3479:15:92"},"nodeType":"YulFunctionCall","src":"3479:48:92"},"variables":[{"name":"array","nodeType":"YulTypedName","src":"3470:5:92","type":""}]},{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"3547:5:92"},{"name":"_5","nodeType":"YulIdentifier","src":"3554:2:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3540:6:92"},"nodeType":"YulFunctionCall","src":"3540:17:92"},"nodeType":"YulExpressionStatement","src":"3540:17:92"},{"body":{"nodeType":"YulBlock","src":"3607:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3616:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3619:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3609:6:92"},"nodeType":"YulFunctionCall","src":"3609:12:92"},"nodeType":"YulExpressionStatement","src":"3609:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_4","nodeType":"YulIdentifier","src":"3584:2:92"},{"name":"_5","nodeType":"YulIdentifier","src":"3588:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3580:3:92"},"nodeType":"YulFunctionCall","src":"3580:11:92"},{"kind":"number","nodeType":"YulLiteral","src":"3593:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3576:3:92"},"nodeType":"YulFunctionCall","src":"3576:20:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3598:7:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3573:2:92"},"nodeType":"YulFunctionCall","src":"3573:33:92"},"nodeType":"YulIf","src":"3570:53:92"},{"expression":{"arguments":[{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"3653:5:92"},{"kind":"number","nodeType":"YulLiteral","src":"3660:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3649:3:92"},"nodeType":"YulFunctionCall","src":"3649:14:92"},{"arguments":[{"name":"_4","nodeType":"YulIdentifier","src":"3669:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"3673:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3665:3:92"},"nodeType":"YulFunctionCall","src":"3665:11:92"},{"name":"_5","nodeType":"YulIdentifier","src":"3678:2:92"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"3636:12:92"},"nodeType":"YulFunctionCall","src":"3636:45:92"},"nodeType":"YulExpressionStatement","src":"3636:45:92"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"3709:5:92"},{"name":"_5","nodeType":"YulIdentifier","src":"3716:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3705:3:92"},"nodeType":"YulFunctionCall","src":"3705:14:92"},{"kind":"number","nodeType":"YulLiteral","src":"3721:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3701:3:92"},"nodeType":"YulFunctionCall","src":"3701:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"3726:1:92","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3694:6:92"},"nodeType":"YulFunctionCall","src":"3694:34:92"},"nodeType":"YulExpressionStatement","src":"3694:34:92"},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3752:5:92"},{"kind":"number","nodeType":"YulLiteral","src":"3759:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3748:3:92"},"nodeType":"YulFunctionCall","src":"3748:14:92"},{"name":"array","nodeType":"YulIdentifier","src":"3764:5:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3741:6:92"},"nodeType":"YulFunctionCall","src":"3741:29:92"},"nodeType":"YulExpressionStatement","src":"3741:29:92"},{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"3790:3:92"},{"name":"value","nodeType":"YulIdentifier","src":"3795:5:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3783:6:92"},"nodeType":"YulFunctionCall","src":"3783:18:92"},"nodeType":"YulExpressionStatement","src":"3783:18:92"},{"nodeType":"YulAssignment","src":"3814:19:92","value":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"3825:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"3830:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3821:3:92"},"nodeType":"YulFunctionCall","src":"3821:12:92"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"3814:3:92"}]}]},"condition":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"2717:3:92"},{"name":"srcEnd","nodeType":"YulIdentifier","src":"2722:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2714:2:92"},"nodeType":"YulFunctionCall","src":"2714:15:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"2730:23:92","statements":[{"nodeType":"YulAssignment","src":"2732:19:92","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"2743:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"2748:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2739:3:92"},"nodeType":"YulFunctionCall","src":"2739:12:92"},"variableNames":[{"name":"src","nodeType":"YulIdentifier","src":"2732:3:92"}]}]},"pre":{"nodeType":"YulBlock","src":"2710:3:92","statements":[]},"src":"2706:1137:92"},{"nodeType":"YulAssignment","src":"3852:15:92","value":{"name":"dst_1","nodeType":"YulIdentifier","src":"3862:5:92"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"3852:6:92"}]},{"nodeType":"YulAssignment","src":"3876:44:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3903:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3914:4:92","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3899:3:92"},"nodeType":"YulFunctionCall","src":"3899:20:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3886:12:92"},"nodeType":"YulFunctionCall","src":"3886:34:92"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"3876:6:92"}]}]},"name":"abi_decode_tuple_t_contract$_IDAO_$10865t_uint256t_array$_t_struct$_Action_$10724_memory_ptr_$dyn_memory_ptrt_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1844:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1855:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1867:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1875:6:92","type":""},{"name":"value2","nodeType":"YulTypedName","src":"1883:6:92","type":""},{"name":"value3","nodeType":"YulTypedName","src":"1891:6:92","type":""}],"src":"1717:2209:92"},{"body":{"nodeType":"YulBlock","src":"3997:184:92","statements":[{"nodeType":"YulVariableDeclaration","src":"4007:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"4016:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"4011:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"4076:63:92","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"4101:3:92"},{"name":"i","nodeType":"YulIdentifier","src":"4106:1:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4097:3:92"},"nodeType":"YulFunctionCall","src":"4097:11:92"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"4120:3:92"},{"name":"i","nodeType":"YulIdentifier","src":"4125:1:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4116:3:92"},"nodeType":"YulFunctionCall","src":"4116:11:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4110:5:92"},"nodeType":"YulFunctionCall","src":"4110:18:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4090:6:92"},"nodeType":"YulFunctionCall","src":"4090:39:92"},"nodeType":"YulExpressionStatement","src":"4090:39:92"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"4037:1:92"},{"name":"length","nodeType":"YulIdentifier","src":"4040:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"4034:2:92"},"nodeType":"YulFunctionCall","src":"4034:13:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"4048:19:92","statements":[{"nodeType":"YulAssignment","src":"4050:15:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"4059:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"4062:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4055:3:92"},"nodeType":"YulFunctionCall","src":"4055:10:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"4050:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"4030:3:92","statements":[]},"src":"4026:113:92"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"4159:3:92"},{"name":"length","nodeType":"YulIdentifier","src":"4164:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4155:3:92"},"nodeType":"YulFunctionCall","src":"4155:16:92"},{"kind":"number","nodeType":"YulLiteral","src":"4173:1:92","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4148:6:92"},"nodeType":"YulFunctionCall","src":"4148:27:92"},"nodeType":"YulExpressionStatement","src":"4148:27:92"}]},"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"3975:3:92","type":""},{"name":"dst","nodeType":"YulTypedName","src":"3980:3:92","type":""},{"name":"length","nodeType":"YulTypedName","src":"3985:6:92","type":""}],"src":"3931:250:92"},{"body":{"nodeType":"YulBlock","src":"4235:221:92","statements":[{"nodeType":"YulVariableDeclaration","src":"4245:26:92","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4265:5:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4259:5:92"},"nodeType":"YulFunctionCall","src":"4259:12:92"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"4249:6:92","type":""}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4287:3:92"},{"name":"length","nodeType":"YulIdentifier","src":"4292:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4280:6:92"},"nodeType":"YulFunctionCall","src":"4280:19:92"},"nodeType":"YulExpressionStatement","src":"4280:19:92"},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4347:5:92"},{"kind":"number","nodeType":"YulLiteral","src":"4354:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4343:3:92"},"nodeType":"YulFunctionCall","src":"4343:16:92"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4365:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"4370:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4361:3:92"},"nodeType":"YulFunctionCall","src":"4361:14:92"},{"name":"length","nodeType":"YulIdentifier","src":"4377:6:92"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"4308:34:92"},"nodeType":"YulFunctionCall","src":"4308:76:92"},"nodeType":"YulExpressionStatement","src":"4308:76:92"},{"nodeType":"YulAssignment","src":"4393:57:92","value":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4408:3:92"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"4421:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"4429:2:92","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4417:3:92"},"nodeType":"YulFunctionCall","src":"4417:15:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4438:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"4434:3:92"},"nodeType":"YulFunctionCall","src":"4434:7:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4413:3:92"},"nodeType":"YulFunctionCall","src":"4413:29:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4404:3:92"},"nodeType":"YulFunctionCall","src":"4404:39:92"},{"kind":"number","nodeType":"YulLiteral","src":"4445:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4400:3:92"},"nodeType":"YulFunctionCall","src":"4400:50:92"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"4393:3:92"}]}]},"name":"abi_encode_bytes","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"4212:5:92","type":""},{"name":"pos","nodeType":"YulTypedName","src":"4219:3:92","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"4227:3:92","type":""}],"src":"4186:270:92"},{"body":{"nodeType":"YulBlock","src":"4658:676:92","statements":[{"nodeType":"YulVariableDeclaration","src":"4668:32:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4686:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4697:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4682:3:92"},"nodeType":"YulFunctionCall","src":"4682:18:92"},"variables":[{"name":"tail_1","nodeType":"YulTypedName","src":"4672:6:92","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4716:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4727:2:92","type":"","value":"64"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4709:6:92"},"nodeType":"YulFunctionCall","src":"4709:21:92"},"nodeType":"YulExpressionStatement","src":"4709:21:92"},{"nodeType":"YulVariableDeclaration","src":"4739:17:92","value":{"name":"tail_1","nodeType":"YulIdentifier","src":"4750:6:92"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"4743:3:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4765:27:92","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4785:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4779:5:92"},"nodeType":"YulFunctionCall","src":"4779:13:92"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"4769:6:92","type":""}]},{"expression":{"arguments":[{"name":"tail_1","nodeType":"YulIdentifier","src":"4808:6:92"},{"name":"length","nodeType":"YulIdentifier","src":"4816:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4801:6:92"},"nodeType":"YulFunctionCall","src":"4801:22:92"},"nodeType":"YulExpressionStatement","src":"4801:22:92"},{"nodeType":"YulAssignment","src":"4832:25:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4843:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4854:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4839:3:92"},"nodeType":"YulFunctionCall","src":"4839:18:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"4832:3:92"}]},{"nodeType":"YulVariableDeclaration","src":"4866:53:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4888:9:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4903:1:92","type":"","value":"5"},{"name":"length","nodeType":"YulIdentifier","src":"4906:6:92"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"4899:3:92"},"nodeType":"YulFunctionCall","src":"4899:14:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4884:3:92"},"nodeType":"YulFunctionCall","src":"4884:30:92"},{"kind":"number","nodeType":"YulLiteral","src":"4916:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4880:3:92"},"nodeType":"YulFunctionCall","src":"4880:39:92"},"variables":[{"name":"tail_2","nodeType":"YulTypedName","src":"4870:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4928:14:92","value":{"kind":"number","nodeType":"YulLiteral","src":"4938:4:92","type":"","value":"0x20"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"4932:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4951:29:92","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4969:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"4977:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4965:3:92"},"nodeType":"YulFunctionCall","src":"4965:15:92"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"4955:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4989:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"4998:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"4993:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"5057:205:92","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5078:3:92"},{"arguments":[{"arguments":[{"name":"tail_2","nodeType":"YulIdentifier","src":"5091:6:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"5099:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5087:3:92"},"nodeType":"YulFunctionCall","src":"5087:22:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5115:2:92","type":"","value":"95"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"5111:3:92"},"nodeType":"YulFunctionCall","src":"5111:7:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5083:3:92"},"nodeType":"YulFunctionCall","src":"5083:36:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5071:6:92"},"nodeType":"YulFunctionCall","src":"5071:49:92"},"nodeType":"YulExpressionStatement","src":"5071:49:92"},{"nodeType":"YulAssignment","src":"5133:49:92","value":{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"5166:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5160:5:92"},"nodeType":"YulFunctionCall","src":"5160:13:92"},{"name":"tail_2","nodeType":"YulIdentifier","src":"5175:6:92"}],"functionName":{"name":"abi_encode_bytes","nodeType":"YulIdentifier","src":"5143:16:92"},"nodeType":"YulFunctionCall","src":"5143:39:92"},"variableNames":[{"name":"tail_2","nodeType":"YulIdentifier","src":"5133:6:92"}]},{"nodeType":"YulAssignment","src":"5195:25:92","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"5209:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"5217:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5205:3:92"},"nodeType":"YulFunctionCall","src":"5205:15:92"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"5195:6:92"}]},{"nodeType":"YulAssignment","src":"5233:19:92","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5244:3:92"},{"name":"_1","nodeType":"YulIdentifier","src":"5249:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5240:3:92"},"nodeType":"YulFunctionCall","src":"5240:12:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"5233:3:92"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"5019:1:92"},{"name":"length","nodeType":"YulIdentifier","src":"5022:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"5016:2:92"},"nodeType":"YulFunctionCall","src":"5016:13:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"5030:18:92","statements":[{"nodeType":"YulAssignment","src":"5032:14:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"5041:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"5044:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5037:3:92"},"nodeType":"YulFunctionCall","src":"5037:9:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"5032:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"5012:3:92","statements":[]},"src":"5008:254:92"},{"nodeType":"YulAssignment","src":"5271:14:92","value":{"name":"tail_2","nodeType":"YulIdentifier","src":"5279:6:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5271:4:92"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5305:9:92"},{"name":"_1","nodeType":"YulIdentifier","src":"5316:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5301:3:92"},"nodeType":"YulFunctionCall","src":"5301:18:92"},{"name":"value1","nodeType":"YulIdentifier","src":"5321:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5294:6:92"},"nodeType":"YulFunctionCall","src":"5294:34:92"},"nodeType":"YulExpressionStatement","src":"5294:34:92"}]},"name":"abi_encode_tuple_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_t_uint256__to_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4619:9:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"4630:6:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"4638:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4649:4:92","type":""}],"src":"4461:873:92"},{"body":{"nodeType":"YulBlock","src":"5387:123:92","statements":[{"nodeType":"YulAssignment","src":"5397:29:92","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"5419:6:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"5406:12:92"},"nodeType":"YulFunctionCall","src":"5406:20:92"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"5397:5:92"}]},{"body":{"nodeType":"YulBlock","src":"5488:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5497:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5500:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5490:6:92"},"nodeType":"YulFunctionCall","src":"5490:12:92"},"nodeType":"YulExpressionStatement","src":"5490:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5448:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5459:5:92"},{"kind":"number","nodeType":"YulLiteral","src":"5466:18:92","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5455:3:92"},"nodeType":"YulFunctionCall","src":"5455:30:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"5445:2:92"},"nodeType":"YulFunctionCall","src":"5445:41:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"5438:6:92"},"nodeType":"YulFunctionCall","src":"5438:49:92"},"nodeType":"YulIf","src":"5435:69:92"}]},"name":"abi_decode_uint64","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"5366:6:92","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"5377:5:92","type":""}],"src":"5339:171:92"},{"body":{"nodeType":"YulBlock","src":"5614:283:92","statements":[{"body":{"nodeType":"YulBlock","src":"5663:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5672:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5675:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5665:6:92"},"nodeType":"YulFunctionCall","src":"5665:12:92"},"nodeType":"YulExpressionStatement","src":"5665:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"5642:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"5650:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5638:3:92"},"nodeType":"YulFunctionCall","src":"5638:17:92"},{"name":"end","nodeType":"YulIdentifier","src":"5657:3:92"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"5634:3:92"},"nodeType":"YulFunctionCall","src":"5634:27:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"5627:6:92"},"nodeType":"YulFunctionCall","src":"5627:35:92"},"nodeType":"YulIf","src":"5624:55:92"},{"nodeType":"YulAssignment","src":"5688:30:92","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"5711:6:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"5698:12:92"},"nodeType":"YulFunctionCall","src":"5698:20:92"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"5688:6:92"}]},{"body":{"nodeType":"YulBlock","src":"5761:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5770:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5773:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5763:6:92"},"nodeType":"YulFunctionCall","src":"5763:12:92"},"nodeType":"YulExpressionStatement","src":"5763:12:92"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"5733:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"5741:18:92","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5730:2:92"},"nodeType":"YulFunctionCall","src":"5730:30:92"},"nodeType":"YulIf","src":"5727:50:92"},{"nodeType":"YulAssignment","src":"5786:29:92","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"5802:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"5810:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5798:3:92"},"nodeType":"YulFunctionCall","src":"5798:17:92"},"variableNames":[{"name":"arrayPos","nodeType":"YulIdentifier","src":"5786:8:92"}]},{"body":{"nodeType":"YulBlock","src":"5875:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5884:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5887:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5877:6:92"},"nodeType":"YulFunctionCall","src":"5877:12:92"},"nodeType":"YulExpressionStatement","src":"5877:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"5838:6:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5850:1:92","type":"","value":"5"},{"name":"length","nodeType":"YulIdentifier","src":"5853:6:92"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"5846:3:92"},"nodeType":"YulFunctionCall","src":"5846:14:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5834:3:92"},"nodeType":"YulFunctionCall","src":"5834:27:92"},{"kind":"number","nodeType":"YulLiteral","src":"5863:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5830:3:92"},"nodeType":"YulFunctionCall","src":"5830:38:92"},{"name":"end","nodeType":"YulIdentifier","src":"5870:3:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5827:2:92"},"nodeType":"YulFunctionCall","src":"5827:47:92"},"nodeType":"YulIf","src":"5824:67:92"}]},"name":"abi_decode_array_struct_Action_calldata_dyn_calldata","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"5577:6:92","type":""},{"name":"end","nodeType":"YulTypedName","src":"5585:3:92","type":""}],"returnVariables":[{"name":"arrayPos","nodeType":"YulTypedName","src":"5593:8:92","type":""},{"name":"length","nodeType":"YulTypedName","src":"5603:6:92","type":""}],"src":"5515:382:92"},{"body":{"nodeType":"YulBlock","src":"6136:1070:92","statements":[{"body":{"nodeType":"YulBlock","src":"6183:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6192:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6195:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6185:6:92"},"nodeType":"YulFunctionCall","src":"6185:12:92"},"nodeType":"YulExpressionStatement","src":"6185:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"6157:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"6166:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6153:3:92"},"nodeType":"YulFunctionCall","src":"6153:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"6178:3:92","type":"","value":"192"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6149:3:92"},"nodeType":"YulFunctionCall","src":"6149:33:92"},"nodeType":"YulIf","src":"6146:53:92"},{"nodeType":"YulVariableDeclaration","src":"6208:36:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6234:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6221:12:92"},"nodeType":"YulFunctionCall","src":"6221:23:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"6212:5:92","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6284:5:92"}],"functionName":{"name":"validator_revert_contract_IDAO","nodeType":"YulIdentifier","src":"6253:30:92"},"nodeType":"YulFunctionCall","src":"6253:37:92"},"nodeType":"YulExpressionStatement","src":"6253:37:92"},{"nodeType":"YulAssignment","src":"6299:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"6309:5:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"6299:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"6323:46:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6354:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6365:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6350:3:92"},"nodeType":"YulFunctionCall","src":"6350:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6337:12:92"},"nodeType":"YulFunctionCall","src":"6337:32:92"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"6327:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"6378:28:92","value":{"kind":"number","nodeType":"YulLiteral","src":"6388:18:92","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"6382:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"6433:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6442:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6445:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6435:6:92"},"nodeType":"YulFunctionCall","src":"6435:12:92"},"nodeType":"YulExpressionStatement","src":"6435:12:92"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"6421:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"6429:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6418:2:92"},"nodeType":"YulFunctionCall","src":"6418:14:92"},"nodeType":"YulIf","src":"6415:34:92"},{"nodeType":"YulVariableDeclaration","src":"6458:32:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6472:9:92"},{"name":"offset","nodeType":"YulIdentifier","src":"6483:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6468:3:92"},"nodeType":"YulFunctionCall","src":"6468:22:92"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"6462:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"6538:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6547:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6550:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6540:6:92"},"nodeType":"YulFunctionCall","src":"6540:12:92"},"nodeType":"YulExpressionStatement","src":"6540:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"6517:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"6521:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6513:3:92"},"nodeType":"YulFunctionCall","src":"6513:13:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"6528:7:92"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6509:3:92"},"nodeType":"YulFunctionCall","src":"6509:27:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"6502:6:92"},"nodeType":"YulFunctionCall","src":"6502:35:92"},"nodeType":"YulIf","src":"6499:55:92"},{"nodeType":"YulVariableDeclaration","src":"6563:30:92","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"6590:2:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6577:12:92"},"nodeType":"YulFunctionCall","src":"6577:16:92"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"6567:6:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"6620:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6629:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6632:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6622:6:92"},"nodeType":"YulFunctionCall","src":"6622:12:92"},"nodeType":"YulExpressionStatement","src":"6622:12:92"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"6608:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"6616:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6605:2:92"},"nodeType":"YulFunctionCall","src":"6605:14:92"},"nodeType":"YulIf","src":"6602:34:92"},{"body":{"nodeType":"YulBlock","src":"6686:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6695:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6698:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6688:6:92"},"nodeType":"YulFunctionCall","src":"6688:12:92"},"nodeType":"YulExpressionStatement","src":"6688:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"6659:2:92"},{"name":"length","nodeType":"YulIdentifier","src":"6663:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6655:3:92"},"nodeType":"YulFunctionCall","src":"6655:15:92"},{"kind":"number","nodeType":"YulLiteral","src":"6672:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6651:3:92"},"nodeType":"YulFunctionCall","src":"6651:24:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"6677:7:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6648:2:92"},"nodeType":"YulFunctionCall","src":"6648:37:92"},"nodeType":"YulIf","src":"6645:57:92"},{"nodeType":"YulAssignment","src":"6711:21:92","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"6725:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"6729:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6721:3:92"},"nodeType":"YulFunctionCall","src":"6721:11:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"6711:6:92"}]},{"nodeType":"YulAssignment","src":"6741:16:92","value":{"name":"length","nodeType":"YulIdentifier","src":"6751:6:92"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"6741:6:92"}]},{"nodeType":"YulAssignment","src":"6766:47:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6798:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6809:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6794:3:92"},"nodeType":"YulFunctionCall","src":"6794:18:92"}],"functionName":{"name":"abi_decode_uint64","nodeType":"YulIdentifier","src":"6776:17:92"},"nodeType":"YulFunctionCall","src":"6776:37:92"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"6766:6:92"}]},{"nodeType":"YulAssignment","src":"6822:47:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6854:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6865:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6850:3:92"},"nodeType":"YulFunctionCall","src":"6850:18:92"}],"functionName":{"name":"abi_decode_uint64","nodeType":"YulIdentifier","src":"6832:17:92"},"nodeType":"YulFunctionCall","src":"6832:37:92"},"variableNames":[{"name":"value4","nodeType":"YulIdentifier","src":"6822:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"6878:49:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6911:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6922:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6907:3:92"},"nodeType":"YulFunctionCall","src":"6907:19:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6894:12:92"},"nodeType":"YulFunctionCall","src":"6894:33:92"},"variables":[{"name":"offset_1","nodeType":"YulTypedName","src":"6882:8:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"6956:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6965:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6968:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6958:6:92"},"nodeType":"YulFunctionCall","src":"6958:12:92"},"nodeType":"YulExpressionStatement","src":"6958:12:92"}]},"condition":{"arguments":[{"name":"offset_1","nodeType":"YulIdentifier","src":"6942:8:92"},{"name":"_1","nodeType":"YulIdentifier","src":"6952:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6939:2:92"},"nodeType":"YulFunctionCall","src":"6939:16:92"},"nodeType":"YulIf","src":"6936:36:92"},{"nodeType":"YulVariableDeclaration","src":"6981:113:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7064:9:92"},{"name":"offset_1","nodeType":"YulIdentifier","src":"7075:8:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7060:3:92"},"nodeType":"YulFunctionCall","src":"7060:24:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"7086:7:92"}],"functionName":{"name":"abi_decode_array_struct_Action_calldata_dyn_calldata","nodeType":"YulIdentifier","src":"7007:52:92"},"nodeType":"YulFunctionCall","src":"7007:87:92"},"variables":[{"name":"value5_1","nodeType":"YulTypedName","src":"6985:8:92","type":""},{"name":"value6_1","nodeType":"YulTypedName","src":"6995:8:92","type":""}]},{"nodeType":"YulAssignment","src":"7103:18:92","value":{"name":"value5_1","nodeType":"YulIdentifier","src":"7113:8:92"},"variableNames":[{"name":"value5","nodeType":"YulIdentifier","src":"7103:6:92"}]},{"nodeType":"YulAssignment","src":"7130:18:92","value":{"name":"value6_1","nodeType":"YulIdentifier","src":"7140:8:92"},"variableNames":[{"name":"value6","nodeType":"YulIdentifier","src":"7130:6:92"}]},{"nodeType":"YulAssignment","src":"7157:43:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7184:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7195:3:92","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7180:3:92"},"nodeType":"YulFunctionCall","src":"7180:19:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"7167:12:92"},"nodeType":"YulFunctionCall","src":"7167:33:92"},"variableNames":[{"name":"value7","nodeType":"YulIdentifier","src":"7157:6:92"}]}]},"name":"abi_decode_tuple_t_addresst_bytes_calldata_ptrt_uint64t_uint64t_array$_t_struct$_Action_$10724_calldata_ptr_$dyn_calldata_ptrt_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6046:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"6057:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"6069:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"6077:6:92","type":""},{"name":"value2","nodeType":"YulTypedName","src":"6085:6:92","type":""},{"name":"value3","nodeType":"YulTypedName","src":"6093:6:92","type":""},{"name":"value4","nodeType":"YulTypedName","src":"6101:6:92","type":""},{"name":"value5","nodeType":"YulTypedName","src":"6109:6:92","type":""},{"name":"value6","nodeType":"YulTypedName","src":"6117:6:92","type":""},{"name":"value7","nodeType":"YulTypedName","src":"6125:6:92","type":""}],"src":"5902:1304:92"},{"body":{"nodeType":"YulBlock","src":"7312:76:92","statements":[{"nodeType":"YulAssignment","src":"7322:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7334:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7345:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7330:3:92"},"nodeType":"YulFunctionCall","src":"7330:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7322:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7364:9:92"},{"name":"value0","nodeType":"YulIdentifier","src":"7375:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7357:6:92"},"nodeType":"YulFunctionCall","src":"7357:25:92"},"nodeType":"YulExpressionStatement","src":"7357:25:92"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7281:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"7292:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7303:4:92","type":""}],"src":"7211:177:92"},{"body":{"nodeType":"YulBlock","src":"7650:1048:92","statements":[{"nodeType":"YulVariableDeclaration","src":"7660:12:92","value":{"kind":"number","nodeType":"YulLiteral","src":"7670:2:92","type":"","value":"96"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"7664:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"7681:32:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7699:9:92"},{"name":"_1","nodeType":"YulIdentifier","src":"7710:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7695:3:92"},"nodeType":"YulFunctionCall","src":"7695:18:92"},"variables":[{"name":"tail_1","nodeType":"YulTypedName","src":"7685:6:92","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7729:9:92"},{"name":"value0","nodeType":"YulIdentifier","src":"7740:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7722:6:92"},"nodeType":"YulFunctionCall","src":"7722:25:92"},"nodeType":"YulExpressionStatement","src":"7722:25:92"},{"nodeType":"YulVariableDeclaration","src":"7756:12:92","value":{"kind":"number","nodeType":"YulLiteral","src":"7766:2:92","type":"","value":"32"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"7760:2:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7788:9:92"},{"name":"_2","nodeType":"YulIdentifier","src":"7799:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7784:3:92"},"nodeType":"YulFunctionCall","src":"7784:18:92"},{"name":"_1","nodeType":"YulIdentifier","src":"7804:2:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7777:6:92"},"nodeType":"YulFunctionCall","src":"7777:30:92"},"nodeType":"YulExpressionStatement","src":"7777:30:92"},{"nodeType":"YulVariableDeclaration","src":"7816:17:92","value":{"name":"tail_1","nodeType":"YulIdentifier","src":"7827:6:92"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"7820:3:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"7842:27:92","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"7862:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"7856:5:92"},"nodeType":"YulFunctionCall","src":"7856:13:92"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"7846:6:92","type":""}]},{"expression":{"arguments":[{"name":"tail_1","nodeType":"YulIdentifier","src":"7885:6:92"},{"name":"length","nodeType":"YulIdentifier","src":"7893:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7878:6:92"},"nodeType":"YulFunctionCall","src":"7878:22:92"},"nodeType":"YulExpressionStatement","src":"7878:22:92"},{"nodeType":"YulAssignment","src":"7909:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7920:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7931:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7916:3:92"},"nodeType":"YulFunctionCall","src":"7916:19:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"7909:3:92"}]},{"nodeType":"YulVariableDeclaration","src":"7944:54:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7966:9:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7981:1:92","type":"","value":"5"},{"name":"length","nodeType":"YulIdentifier","src":"7984:6:92"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"7977:3:92"},"nodeType":"YulFunctionCall","src":"7977:14:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7962:3:92"},"nodeType":"YulFunctionCall","src":"7962:30:92"},{"kind":"number","nodeType":"YulLiteral","src":"7994:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7958:3:92"},"nodeType":"YulFunctionCall","src":"7958:40:92"},"variables":[{"name":"tail_2","nodeType":"YulTypedName","src":"7948:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"8007:29:92","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"8025:6:92"},{"name":"_2","nodeType":"YulIdentifier","src":"8033:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8021:3:92"},"nodeType":"YulFunctionCall","src":"8021:15:92"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"8011:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"8045:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"8054:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"8049:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"8113:511:92","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"8134:3:92"},{"arguments":[{"arguments":[{"name":"tail_2","nodeType":"YulIdentifier","src":"8147:6:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"8155:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"8143:3:92"},"nodeType":"YulFunctionCall","src":"8143:22:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8171:3:92","type":"","value":"127"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"8167:3:92"},"nodeType":"YulFunctionCall","src":"8167:8:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8139:3:92"},"nodeType":"YulFunctionCall","src":"8139:37:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8127:6:92"},"nodeType":"YulFunctionCall","src":"8127:50:92"},"nodeType":"YulExpressionStatement","src":"8127:50:92"},{"nodeType":"YulVariableDeclaration","src":"8190:23:92","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"8206:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"8200:5:92"},"nodeType":"YulFunctionCall","src":"8200:13:92"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"8194:2:92","type":""}]},{"expression":{"arguments":[{"name":"tail_2","nodeType":"YulIdentifier","src":"8233:6:92"},{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"8251:2:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"8245:5:92"},"nodeType":"YulFunctionCall","src":"8245:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8256:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8241:3:92"},"nodeType":"YulFunctionCall","src":"8241:58:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8226:6:92"},"nodeType":"YulFunctionCall","src":"8226:74:92"},"nodeType":"YulExpressionStatement","src":"8226:74:92"},{"expression":{"arguments":[{"arguments":[{"name":"tail_2","nodeType":"YulIdentifier","src":"8324:6:92"},{"name":"_2","nodeType":"YulIdentifier","src":"8332:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8320:3:92"},"nodeType":"YulFunctionCall","src":"8320:15:92"},{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"8347:2:92"},{"name":"_2","nodeType":"YulIdentifier","src":"8351:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8343:3:92"},"nodeType":"YulFunctionCall","src":"8343:11:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"8337:5:92"},"nodeType":"YulFunctionCall","src":"8337:18:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8313:6:92"},"nodeType":"YulFunctionCall","src":"8313:43:92"},"nodeType":"YulExpressionStatement","src":"8313:43:92"},{"nodeType":"YulVariableDeclaration","src":"8369:14:92","value":{"kind":"number","nodeType":"YulLiteral","src":"8379:4:92","type":"","value":"0x40"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"8373:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"8396:38:92","value":{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"8426:2:92"},{"name":"_4","nodeType":"YulIdentifier","src":"8430:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8422:3:92"},"nodeType":"YulFunctionCall","src":"8422:11:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"8416:5:92"},"nodeType":"YulFunctionCall","src":"8416:18:92"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"8400:12:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"tail_2","nodeType":"YulIdentifier","src":"8458:6:92"},{"name":"_4","nodeType":"YulIdentifier","src":"8466:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8454:3:92"},"nodeType":"YulFunctionCall","src":"8454:15:92"},{"name":"_1","nodeType":"YulIdentifier","src":"8471:2:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8447:6:92"},"nodeType":"YulFunctionCall","src":"8447:27:92"},"nodeType":"YulExpressionStatement","src":"8447:27:92"},{"nodeType":"YulAssignment","src":"8487:57:92","value":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"8514:12:92"},{"arguments":[{"name":"tail_2","nodeType":"YulIdentifier","src":"8532:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"8540:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8528:3:92"},"nodeType":"YulFunctionCall","src":"8528:15:92"}],"functionName":{"name":"abi_encode_bytes","nodeType":"YulIdentifier","src":"8497:16:92"},"nodeType":"YulFunctionCall","src":"8497:47:92"},"variableNames":[{"name":"tail_2","nodeType":"YulIdentifier","src":"8487:6:92"}]},{"nodeType":"YulAssignment","src":"8557:25:92","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"8571:6:92"},{"name":"_2","nodeType":"YulIdentifier","src":"8579:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8567:3:92"},"nodeType":"YulFunctionCall","src":"8567:15:92"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"8557:6:92"}]},{"nodeType":"YulAssignment","src":"8595:19:92","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"8606:3:92"},{"name":"_2","nodeType":"YulIdentifier","src":"8611:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8602:3:92"},"nodeType":"YulFunctionCall","src":"8602:12:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"8595:3:92"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"8075:1:92"},{"name":"length","nodeType":"YulIdentifier","src":"8078:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"8072:2:92"},"nodeType":"YulFunctionCall","src":"8072:13:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"8086:18:92","statements":[{"nodeType":"YulAssignment","src":"8088:14:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"8097:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"8100:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8093:3:92"},"nodeType":"YulFunctionCall","src":"8093:9:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"8088:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"8068:3:92","statements":[]},"src":"8064:560:92"},{"nodeType":"YulAssignment","src":"8633:14:92","value":{"name":"tail_2","nodeType":"YulIdentifier","src":"8641:6:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"8633:4:92"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8667:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8678:4:92","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8663:3:92"},"nodeType":"YulFunctionCall","src":"8663:20:92"},{"name":"value2","nodeType":"YulIdentifier","src":"8685:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8656:6:92"},"nodeType":"YulFunctionCall","src":"8656:36:92"},"nodeType":"YulExpressionStatement","src":"8656:36:92"}]},"name":"abi_encode_tuple_t_bytes32_t_array$_t_struct$_Action_$10724_memory_ptr_$dyn_memory_ptr_t_uint256__to_t_bytes32_t_array$_t_struct$_Action_$10724_memory_ptr_$dyn_memory_ptr_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7603:9:92","type":""},{"name":"value2","nodeType":"YulTypedName","src":"7614:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"7622:6:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"7630:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7641:4:92","type":""}],"src":"7393:1305:92"},{"body":{"nodeType":"YulBlock","src":"8835:1571:92","statements":[{"nodeType":"YulVariableDeclaration","src":"8845:12:92","value":{"kind":"number","nodeType":"YulLiteral","src":"8855:2:92","type":"","value":"64"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"8849:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"8902:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8911:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8914:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8904:6:92"},"nodeType":"YulFunctionCall","src":"8904:12:92"},"nodeType":"YulExpressionStatement","src":"8904:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"8877:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"8886:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"8873:3:92"},"nodeType":"YulFunctionCall","src":"8873:23:92"},{"name":"_1","nodeType":"YulIdentifier","src":"8898:2:92"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"8869:3:92"},"nodeType":"YulFunctionCall","src":"8869:32:92"},"nodeType":"YulIf","src":"8866:52:92"},{"nodeType":"YulVariableDeclaration","src":"8927:30:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8947:9:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"8941:5:92"},"nodeType":"YulFunctionCall","src":"8941:16:92"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"8931:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"8966:28:92","value":{"kind":"number","nodeType":"YulLiteral","src":"8976:18:92","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"8970:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"9021:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9030:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"9033:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9023:6:92"},"nodeType":"YulFunctionCall","src":"9023:12:92"},"nodeType":"YulExpressionStatement","src":"9023:12:92"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"9009:6:92"},{"name":"_2","nodeType":"YulIdentifier","src":"9017:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"9006:2:92"},"nodeType":"YulFunctionCall","src":"9006:14:92"},"nodeType":"YulIf","src":"9003:34:92"},{"nodeType":"YulVariableDeclaration","src":"9046:32:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9060:9:92"},{"name":"offset","nodeType":"YulIdentifier","src":"9071:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9056:3:92"},"nodeType":"YulFunctionCall","src":"9056:22:92"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"9050:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"9126:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9135:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"9138:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9128:6:92"},"nodeType":"YulFunctionCall","src":"9128:12:92"},"nodeType":"YulExpressionStatement","src":"9128:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"9105:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"9109:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9101:3:92"},"nodeType":"YulFunctionCall","src":"9101:13:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"9116:7:92"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"9097:3:92"},"nodeType":"YulFunctionCall","src":"9097:27:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"9090:6:92"},"nodeType":"YulFunctionCall","src":"9090:35:92"},"nodeType":"YulIf","src":"9087:55:92"},{"nodeType":"YulVariableDeclaration","src":"9151:19:92","value":{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"9167:2:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"9161:5:92"},"nodeType":"YulFunctionCall","src":"9161:9:92"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"9155:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"9179:14:92","value":{"kind":"number","nodeType":"YulLiteral","src":"9189:4:92","type":"","value":"0x20"},"variables":[{"name":"_5","nodeType":"YulTypedName","src":"9183:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"9202:77:92","value":{"arguments":[{"arguments":[{"name":"_4","nodeType":"YulIdentifier","src":"9275:2:92"}],"functionName":{"name":"array_allocation_size_array_struct_Action_dyn","nodeType":"YulIdentifier","src":"9229:45:92"},"nodeType":"YulFunctionCall","src":"9229:49:92"}],"functionName":{"name":"allocate_memory","nodeType":"YulIdentifier","src":"9213:15:92"},"nodeType":"YulFunctionCall","src":"9213:66:92"},"variables":[{"name":"dst","nodeType":"YulTypedName","src":"9206:3:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"9288:16:92","value":{"name":"dst","nodeType":"YulIdentifier","src":"9301:3:92"},"variables":[{"name":"dst_1","nodeType":"YulTypedName","src":"9292:5:92","type":""}]},{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"9320:3:92"},{"name":"_4","nodeType":"YulIdentifier","src":"9325:2:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9313:6:92"},"nodeType":"YulFunctionCall","src":"9313:15:92"},"nodeType":"YulExpressionStatement","src":"9313:15:92"},{"nodeType":"YulAssignment","src":"9337:19:92","value":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"9348:3:92"},{"name":"_5","nodeType":"YulIdentifier","src":"9353:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9344:3:92"},"nodeType":"YulFunctionCall","src":"9344:12:92"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"9337:3:92"}]},{"nodeType":"YulVariableDeclaration","src":"9365:42:92","value":{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"9387:2:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9395:1:92","type":"","value":"5"},{"name":"_4","nodeType":"YulIdentifier","src":"9398:2:92"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"9391:3:92"},"nodeType":"YulFunctionCall","src":"9391:10:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9383:3:92"},"nodeType":"YulFunctionCall","src":"9383:19:92"},{"name":"_5","nodeType":"YulIdentifier","src":"9404:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9379:3:92"},"nodeType":"YulFunctionCall","src":"9379:28:92"},"variables":[{"name":"srcEnd","nodeType":"YulTypedName","src":"9369:6:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"9439:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9448:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"9451:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9441:6:92"},"nodeType":"YulFunctionCall","src":"9441:12:92"},"nodeType":"YulExpressionStatement","src":"9441:12:92"}]},"condition":{"arguments":[{"name":"srcEnd","nodeType":"YulIdentifier","src":"9422:6:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"9430:7:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"9419:2:92"},"nodeType":"YulFunctionCall","src":"9419:19:92"},"nodeType":"YulIf","src":"9416:39:92"},{"nodeType":"YulVariableDeclaration","src":"9464:22:92","value":{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"9479:2:92"},{"name":"_5","nodeType":"YulIdentifier","src":"9483:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9475:3:92"},"nodeType":"YulFunctionCall","src":"9475:11:92"},"variables":[{"name":"src","nodeType":"YulTypedName","src":"9468:3:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"9551:781:92","statements":[{"nodeType":"YulVariableDeclaration","src":"9565:29:92","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"9590:3:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"9584:5:92"},"nodeType":"YulFunctionCall","src":"9584:10:92"},"variables":[{"name":"innerOffset","nodeType":"YulTypedName","src":"9569:11:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"9642:74:92","statements":[{"nodeType":"YulVariableDeclaration","src":"9660:11:92","value":{"kind":"number","nodeType":"YulLiteral","src":"9670:1:92","type":"","value":"0"},"variables":[{"name":"_6","nodeType":"YulTypedName","src":"9664:2:92","type":""}]},{"expression":{"arguments":[{"name":"_6","nodeType":"YulIdentifier","src":"9695:2:92"},{"name":"_6","nodeType":"YulIdentifier","src":"9699:2:92"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9688:6:92"},"nodeType":"YulFunctionCall","src":"9688:14:92"},"nodeType":"YulExpressionStatement","src":"9688:14:92"}]},"condition":{"arguments":[{"name":"innerOffset","nodeType":"YulIdentifier","src":"9613:11:92"},{"name":"_2","nodeType":"YulIdentifier","src":"9626:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"9610:2:92"},"nodeType":"YulFunctionCall","src":"9610:19:92"},"nodeType":"YulIf","src":"9607:109:92"},{"nodeType":"YulVariableDeclaration","src":"9729:30:92","value":{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"9743:2:92"},{"name":"innerOffset","nodeType":"YulIdentifier","src":"9747:11:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9739:3:92"},"nodeType":"YulFunctionCall","src":"9739:20:92"},"variables":[{"name":"_7","nodeType":"YulTypedName","src":"9733:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"9821:74:92","statements":[{"nodeType":"YulVariableDeclaration","src":"9839:11:92","value":{"kind":"number","nodeType":"YulLiteral","src":"9849:1:92","type":"","value":"0"},"variables":[{"name":"_8","nodeType":"YulTypedName","src":"9843:2:92","type":""}]},{"expression":{"arguments":[{"name":"_8","nodeType":"YulIdentifier","src":"9874:2:92"},{"name":"_8","nodeType":"YulIdentifier","src":"9878:2:92"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9867:6:92"},"nodeType":"YulFunctionCall","src":"9867:14:92"},"nodeType":"YulExpressionStatement","src":"9867:14:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_7","nodeType":"YulIdentifier","src":"9790:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"9794:2:92","type":"","value":"63"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9786:3:92"},"nodeType":"YulFunctionCall","src":"9786:11:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"9799:7:92"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"9782:3:92"},"nodeType":"YulFunctionCall","src":"9782:25:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"9775:6:92"},"nodeType":"YulFunctionCall","src":"9775:33:92"},"nodeType":"YulIf","src":"9772:123:92"},{"nodeType":"YulVariableDeclaration","src":"9908:28:92","value":{"arguments":[{"arguments":[{"name":"_7","nodeType":"YulIdentifier","src":"9928:2:92"},{"name":"_5","nodeType":"YulIdentifier","src":"9932:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9924:3:92"},"nodeType":"YulFunctionCall","src":"9924:11:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"9918:5:92"},"nodeType":"YulFunctionCall","src":"9918:18:92"},"variables":[{"name":"_9","nodeType":"YulTypedName","src":"9912:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"9949:61:92","value":{"arguments":[{"arguments":[{"name":"_9","nodeType":"YulIdentifier","src":"10006:2:92"}],"functionName":{"name":"array_allocation_size_bytes","nodeType":"YulIdentifier","src":"9978:27:92"},"nodeType":"YulFunctionCall","src":"9978:31:92"}],"functionName":{"name":"allocate_memory","nodeType":"YulIdentifier","src":"9962:15:92"},"nodeType":"YulFunctionCall","src":"9962:48:92"},"variables":[{"name":"array","nodeType":"YulTypedName","src":"9953:5:92","type":""}]},{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"10030:5:92"},{"name":"_9","nodeType":"YulIdentifier","src":"10037:2:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10023:6:92"},"nodeType":"YulFunctionCall","src":"10023:17:92"},"nodeType":"YulExpressionStatement","src":"10023:17:92"},{"body":{"nodeType":"YulBlock","src":"10102:77:92","statements":[{"nodeType":"YulVariableDeclaration","src":"10120:12:92","value":{"kind":"number","nodeType":"YulLiteral","src":"10131:1:92","type":"","value":"0"},"variables":[{"name":"_10","nodeType":"YulTypedName","src":"10124:3:92","type":""}]},{"expression":{"arguments":[{"name":"_10","nodeType":"YulIdentifier","src":"10156:3:92"},{"name":"_10","nodeType":"YulIdentifier","src":"10161:3:92"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"10149:6:92"},"nodeType":"YulFunctionCall","src":"10149:16:92"},"nodeType":"YulExpressionStatement","src":"10149:16:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_7","nodeType":"YulIdentifier","src":"10067:2:92"},{"name":"_9","nodeType":"YulIdentifier","src":"10071:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10063:3:92"},"nodeType":"YulFunctionCall","src":"10063:11:92"},{"name":"_1","nodeType":"YulIdentifier","src":"10076:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10059:3:92"},"nodeType":"YulFunctionCall","src":"10059:20:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"10081:7:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"10056:2:92"},"nodeType":"YulFunctionCall","src":"10056:33:92"},"nodeType":"YulIf","src":"10053:126:92"},{"expression":{"arguments":[{"arguments":[{"name":"_7","nodeType":"YulIdentifier","src":"10231:2:92"},{"name":"_1","nodeType":"YulIdentifier","src":"10235:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10227:3:92"},"nodeType":"YulFunctionCall","src":"10227:11:92"},{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"10244:5:92"},{"name":"_5","nodeType":"YulIdentifier","src":"10251:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10240:3:92"},"nodeType":"YulFunctionCall","src":"10240:14:92"},{"name":"_9","nodeType":"YulIdentifier","src":"10256:2:92"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"10192:34:92"},"nodeType":"YulFunctionCall","src":"10192:67:92"},"nodeType":"YulExpressionStatement","src":"10192:67:92"},{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"10279:3:92"},{"name":"array","nodeType":"YulIdentifier","src":"10284:5:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10272:6:92"},"nodeType":"YulFunctionCall","src":"10272:18:92"},"nodeType":"YulExpressionStatement","src":"10272:18:92"},{"nodeType":"YulAssignment","src":"10303:19:92","value":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"10314:3:92"},{"name":"_5","nodeType":"YulIdentifier","src":"10319:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10310:3:92"},"nodeType":"YulFunctionCall","src":"10310:12:92"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"10303:3:92"}]}]},"condition":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"9506:3:92"},{"name":"srcEnd","nodeType":"YulIdentifier","src":"9511:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"9503:2:92"},"nodeType":"YulFunctionCall","src":"9503:15:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"9519:23:92","statements":[{"nodeType":"YulAssignment","src":"9521:19:92","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"9532:3:92"},{"name":"_5","nodeType":"YulIdentifier","src":"9537:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9528:3:92"},"nodeType":"YulFunctionCall","src":"9528:12:92"},"variableNames":[{"name":"src","nodeType":"YulIdentifier","src":"9521:3:92"}]}]},"pre":{"nodeType":"YulBlock","src":"9499:3:92","statements":[]},"src":"9495:837:92"},{"nodeType":"YulAssignment","src":"10341:15:92","value":{"name":"dst_1","nodeType":"YulIdentifier","src":"10351:5:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"10341:6:92"}]},{"nodeType":"YulAssignment","src":"10365:35:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10385:9:92"},{"name":"_5","nodeType":"YulIdentifier","src":"10396:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10381:3:92"},"nodeType":"YulFunctionCall","src":"10381:18:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"10375:5:92"},"nodeType":"YulFunctionCall","src":"10375:25:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"10365:6:92"}]}]},"name":"abi_decode_tuple_t_array$_t_bytes_memory_ptr_$dyn_memory_ptrt_uint256_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8793:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"8804:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"8816:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"8824:6:92","type":""}],"src":"8703:1703:92"},{"body":{"nodeType":"YulBlock","src":"10477:200:92","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"10494:3:92"},{"name":"length","nodeType":"YulIdentifier","src":"10499:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10487:6:92"},"nodeType":"YulFunctionCall","src":"10487:19:92"},"nodeType":"YulExpressionStatement","src":"10487:19:92"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"10532:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"10537:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10528:3:92"},"nodeType":"YulFunctionCall","src":"10528:14:92"},{"name":"start","nodeType":"YulIdentifier","src":"10544:5:92"},{"name":"length","nodeType":"YulIdentifier","src":"10551:6:92"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"10515:12:92"},"nodeType":"YulFunctionCall","src":"10515:43:92"},"nodeType":"YulExpressionStatement","src":"10515:43:92"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"10582:3:92"},{"name":"length","nodeType":"YulIdentifier","src":"10587:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10578:3:92"},"nodeType":"YulFunctionCall","src":"10578:16:92"},{"kind":"number","nodeType":"YulLiteral","src":"10596:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10574:3:92"},"nodeType":"YulFunctionCall","src":"10574:27:92"},{"kind":"number","nodeType":"YulLiteral","src":"10603:1:92","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10567:6:92"},"nodeType":"YulFunctionCall","src":"10567:38:92"},"nodeType":"YulExpressionStatement","src":"10567:38:92"},{"nodeType":"YulAssignment","src":"10614:57:92","value":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"10629:3:92"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"10642:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"10650:2:92","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10638:3:92"},"nodeType":"YulFunctionCall","src":"10638:15:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10659:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"10655:3:92"},"nodeType":"YulFunctionCall","src":"10655:7:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"10634:3:92"},"nodeType":"YulFunctionCall","src":"10634:29:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10625:3:92"},"nodeType":"YulFunctionCall","src":"10625:39:92"},{"kind":"number","nodeType":"YulLiteral","src":"10666:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10621:3:92"},"nodeType":"YulFunctionCall","src":"10621:50:92"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"10614:3:92"}]}]},"name":"abi_encode_bytes_calldata","nodeType":"YulFunctionDefinition","parameters":[{"name":"start","nodeType":"YulTypedName","src":"10446:5:92","type":""},{"name":"length","nodeType":"YulTypedName","src":"10453:6:92","type":""},{"name":"pos","nodeType":"YulTypedName","src":"10461:3:92","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"10469:3:92","type":""}],"src":"10411:266:92"},{"body":{"nodeType":"YulBlock","src":"11031:1891:92","statements":[{"nodeType":"YulVariableDeclaration","src":"11041:28:92","value":{"kind":"number","nodeType":"YulLiteral","src":"11051:18:92","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"11045:2:92","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11085:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"11100:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"11108:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"11096:3:92"},"nodeType":"YulFunctionCall","src":"11096:15:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11078:6:92"},"nodeType":"YulFunctionCall","src":"11078:34:92"},"nodeType":"YulExpressionStatement","src":"11078:34:92"},{"nodeType":"YulVariableDeclaration","src":"11121:12:92","value":{"kind":"number","nodeType":"YulLiteral","src":"11131:2:92","type":"","value":"32"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"11125:2:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11153:9:92"},{"name":"_2","nodeType":"YulIdentifier","src":"11164:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11149:3:92"},"nodeType":"YulFunctionCall","src":"11149:18:92"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"11173:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"11181:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"11169:3:92"},"nodeType":"YulFunctionCall","src":"11169:15:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11142:6:92"},"nodeType":"YulFunctionCall","src":"11142:43:92"},"nodeType":"YulExpressionStatement","src":"11142:43:92"},{"nodeType":"YulVariableDeclaration","src":"11194:12:92","value":{"kind":"number","nodeType":"YulLiteral","src":"11204:2:92","type":"","value":"64"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"11198:2:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11226:9:92"},{"name":"_3","nodeType":"YulIdentifier","src":"11237:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11222:3:92"},"nodeType":"YulFunctionCall","src":"11222:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"11242:3:92","type":"","value":"160"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11215:6:92"},"nodeType":"YulFunctionCall","src":"11215:31:92"},"nodeType":"YulExpressionStatement","src":"11215:31:92"},{"nodeType":"YulVariableDeclaration","src":"11255:76:92","value":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"11295:6:92"},{"name":"value3","nodeType":"YulIdentifier","src":"11303:6:92"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11315:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"11326:3:92","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11311:3:92"},"nodeType":"YulFunctionCall","src":"11311:19:92"}],"functionName":{"name":"abi_encode_bytes_calldata","nodeType":"YulIdentifier","src":"11269:25:92"},"nodeType":"YulFunctionCall","src":"11269:62:92"},"variables":[{"name":"tail_1","nodeType":"YulTypedName","src":"11259:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"11340:12:92","value":{"kind":"number","nodeType":"YulLiteral","src":"11350:2:92","type":"","value":"96"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"11344:2:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11372:9:92"},{"name":"_4","nodeType":"YulIdentifier","src":"11383:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11368:3:92"},"nodeType":"YulFunctionCall","src":"11368:18:92"},{"arguments":[{"name":"tail_1","nodeType":"YulIdentifier","src":"11392:6:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"11400:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"11388:3:92"},"nodeType":"YulFunctionCall","src":"11388:22:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11361:6:92"},"nodeType":"YulFunctionCall","src":"11361:50:92"},"nodeType":"YulExpressionStatement","src":"11361:50:92"},{"nodeType":"YulVariableDeclaration","src":"11420:17:92","value":{"name":"tail_1","nodeType":"YulIdentifier","src":"11431:6:92"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"11424:3:92","type":""}]},{"expression":{"arguments":[{"name":"tail_1","nodeType":"YulIdentifier","src":"11453:6:92"},{"name":"value5","nodeType":"YulIdentifier","src":"11461:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11446:6:92"},"nodeType":"YulFunctionCall","src":"11446:22:92"},"nodeType":"YulExpressionStatement","src":"11446:22:92"},{"nodeType":"YulAssignment","src":"11477:22:92","value":{"arguments":[{"name":"tail_1","nodeType":"YulIdentifier","src":"11488:6:92"},{"name":"_2","nodeType":"YulIdentifier","src":"11496:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11484:3:92"},"nodeType":"YulFunctionCall","src":"11484:15:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"11477:3:92"}]},{"nodeType":"YulVariableDeclaration","src":"11508:50:92","value":{"arguments":[{"arguments":[{"name":"tail_1","nodeType":"YulIdentifier","src":"11530:6:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"11542:1:92","type":"","value":"5"},{"name":"value5","nodeType":"YulIdentifier","src":"11545:6:92"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"11538:3:92"},"nodeType":"YulFunctionCall","src":"11538:14:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11526:3:92"},"nodeType":"YulFunctionCall","src":"11526:27:92"},{"name":"_2","nodeType":"YulIdentifier","src":"11555:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11522:3:92"},"nodeType":"YulFunctionCall","src":"11522:36:92"},"variables":[{"name":"tail_2","nodeType":"YulTypedName","src":"11512:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"11567:20:92","value":{"name":"value4","nodeType":"YulIdentifier","src":"11581:6:92"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"11571:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"11596:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"11605:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"11600:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"11664:1185:92","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"11685:3:92"},{"arguments":[{"arguments":[{"name":"tail_2","nodeType":"YulIdentifier","src":"11698:6:92"},{"name":"tail_1","nodeType":"YulIdentifier","src":"11706:6:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"11694:3:92"},"nodeType":"YulFunctionCall","src":"11694:19:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"11719:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"11715:3:92"},"nodeType":"YulFunctionCall","src":"11715:7:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11690:3:92"},"nodeType":"YulFunctionCall","src":"11690:33:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11678:6:92"},"nodeType":"YulFunctionCall","src":"11678:46:92"},"nodeType":"YulExpressionStatement","src":"11678:46:92"},{"nodeType":"YulVariableDeclaration","src":"11737:46:92","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"11776:6:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"11763:12:92"},"nodeType":"YulFunctionCall","src":"11763:20:92"},"variables":[{"name":"rel_offset_of_tail","nodeType":"YulTypedName","src":"11741:18:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"11874:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"11883:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"11886:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"11876:6:92"},"nodeType":"YulFunctionCall","src":"11876:12:92"},"nodeType":"YulExpressionStatement","src":"11876:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"rel_offset_of_tail","nodeType":"YulIdentifier","src":"11810:18:92"},{"arguments":[{"arguments":[{"arguments":[],"functionName":{"name":"calldatasize","nodeType":"YulIdentifier","src":"11838:12:92"},"nodeType":"YulFunctionCall","src":"11838:14:92"},{"name":"value4","nodeType":"YulIdentifier","src":"11854:6:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"11834:3:92"},"nodeType":"YulFunctionCall","src":"11834:27:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"11867:2:92","type":"","value":"94"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"11863:3:92"},"nodeType":"YulFunctionCall","src":"11863:7:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11830:3:92"},"nodeType":"YulFunctionCall","src":"11830:41:92"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"11806:3:92"},"nodeType":"YulFunctionCall","src":"11806:66:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"11799:6:92"},"nodeType":"YulFunctionCall","src":"11799:74:92"},"nodeType":"YulIf","src":"11796:94:92"},{"nodeType":"YulVariableDeclaration","src":"11903:44:92","value":{"arguments":[{"name":"rel_offset_of_tail","nodeType":"YulIdentifier","src":"11920:18:92"},{"name":"value4","nodeType":"YulIdentifier","src":"11940:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11916:3:92"},"nodeType":"YulFunctionCall","src":"11916:31:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"11907:5:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"11960:34:92","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"11988:5:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"11975:12:92"},"nodeType":"YulFunctionCall","src":"11975:19:92"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"11964:7:92","type":""}]},{"expression":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"12038:7:92"}],"functionName":{"name":"validator_revert_contract_IDAO","nodeType":"YulIdentifier","src":"12007:30:92"},"nodeType":"YulFunctionCall","src":"12007:39:92"},"nodeType":"YulExpressionStatement","src":"12007:39:92"},{"expression":{"arguments":[{"name":"tail_2","nodeType":"YulIdentifier","src":"12066:6:92"},{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"12078:7:92"},{"kind":"number","nodeType":"YulLiteral","src":"12087:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"12074:3:92"},"nodeType":"YulFunctionCall","src":"12074:56:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12059:6:92"},"nodeType":"YulFunctionCall","src":"12059:72:92"},"nodeType":"YulExpressionStatement","src":"12059:72:92"},{"expression":{"arguments":[{"arguments":[{"name":"tail_2","nodeType":"YulIdentifier","src":"12155:6:92"},{"name":"_2","nodeType":"YulIdentifier","src":"12163:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12151:3:92"},"nodeType":"YulFunctionCall","src":"12151:15:92"},{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"12185:5:92"},{"name":"_2","nodeType":"YulIdentifier","src":"12192:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12181:3:92"},"nodeType":"YulFunctionCall","src":"12181:14:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"12168:12:92"},"nodeType":"YulFunctionCall","src":"12168:28:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12144:6:92"},"nodeType":"YulFunctionCall","src":"12144:53:92"},"nodeType":"YulExpressionStatement","src":"12144:53:92"},{"nodeType":"YulVariableDeclaration","src":"12210:56:92","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"12255:5:92"},{"name":"_3","nodeType":"YulIdentifier","src":"12262:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12251:3:92"},"nodeType":"YulFunctionCall","src":"12251:14:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"12238:12:92"},"nodeType":"YulFunctionCall","src":"12238:28:92"},"variables":[{"name":"rel_offset_of_tail_1","nodeType":"YulTypedName","src":"12214:20:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"12358:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"12367:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"12370:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"12360:6:92"},"nodeType":"YulFunctionCall","src":"12360:12:92"},"nodeType":"YulExpressionStatement","src":"12360:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"rel_offset_of_tail_1","nodeType":"YulIdentifier","src":"12293:20:92"},{"arguments":[{"arguments":[{"arguments":[],"functionName":{"name":"calldatasize","nodeType":"YulIdentifier","src":"12323:12:92"},"nodeType":"YulFunctionCall","src":"12323:14:92"},{"name":"value","nodeType":"YulIdentifier","src":"12339:5:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"12319:3:92"},"nodeType":"YulFunctionCall","src":"12319:26:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"12351:2:92","type":"","value":"30"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"12347:3:92"},"nodeType":"YulFunctionCall","src":"12347:7:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12315:3:92"},"nodeType":"YulFunctionCall","src":"12315:40:92"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"12289:3:92"},"nodeType":"YulFunctionCall","src":"12289:67:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"12282:6:92"},"nodeType":"YulFunctionCall","src":"12282:75:92"},"nodeType":"YulIf","src":"12279:95:92"},{"nodeType":"YulVariableDeclaration","src":"12387:47:92","value":{"arguments":[{"name":"rel_offset_of_tail_1","nodeType":"YulIdentifier","src":"12406:20:92"},{"name":"value","nodeType":"YulIdentifier","src":"12428:5:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12402:3:92"},"nodeType":"YulFunctionCall","src":"12402:32:92"},"variables":[{"name":"value_2","nodeType":"YulTypedName","src":"12391:7:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"12447:35:92","value":{"arguments":[{"name":"value_2","nodeType":"YulIdentifier","src":"12474:7:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"12461:12:92"},"nodeType":"YulFunctionCall","src":"12461:21:92"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"12451:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"12495:31:92","value":{"arguments":[{"name":"value_2","nodeType":"YulIdentifier","src":"12514:7:92"},{"name":"_2","nodeType":"YulIdentifier","src":"12523:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12510:3:92"},"nodeType":"YulFunctionCall","src":"12510:16:92"},"variables":[{"name":"value_3","nodeType":"YulTypedName","src":"12499:7:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"12557:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"12566:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"12569:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"12559:6:92"},"nodeType":"YulFunctionCall","src":"12559:12:92"},"nodeType":"YulExpressionStatement","src":"12559:12:92"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"12545:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"12553:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"12542:2:92"},"nodeType":"YulFunctionCall","src":"12542:14:92"},"nodeType":"YulIf","src":"12539:34:92"},{"body":{"nodeType":"YulBlock","src":"12631:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"12640:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"12643:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"12633:6:92"},"nodeType":"YulFunctionCall","src":"12633:12:92"},"nodeType":"YulExpressionStatement","src":"12633:12:92"}]},"condition":{"arguments":[{"name":"value_3","nodeType":"YulIdentifier","src":"12593:7:92"},{"arguments":[{"arguments":[],"functionName":{"name":"calldatasize","nodeType":"YulIdentifier","src":"12606:12:92"},"nodeType":"YulFunctionCall","src":"12606:14:92"},{"name":"length","nodeType":"YulIdentifier","src":"12622:6:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"12602:3:92"},"nodeType":"YulFunctionCall","src":"12602:27:92"}],"functionName":{"name":"sgt","nodeType":"YulIdentifier","src":"12589:3:92"},"nodeType":"YulFunctionCall","src":"12589:41:92"},"nodeType":"YulIf","src":"12586:61:92"},{"expression":{"arguments":[{"arguments":[{"name":"tail_2","nodeType":"YulIdentifier","src":"12671:6:92"},{"name":"_3","nodeType":"YulIdentifier","src":"12679:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12667:3:92"},"nodeType":"YulFunctionCall","src":"12667:15:92"},{"name":"_4","nodeType":"YulIdentifier","src":"12684:2:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12660:6:92"},"nodeType":"YulFunctionCall","src":"12660:27:92"},"nodeType":"YulExpressionStatement","src":"12660:27:92"},{"nodeType":"YulAssignment","src":"12700:69:92","value":{"arguments":[{"name":"value_3","nodeType":"YulIdentifier","src":"12736:7:92"},{"name":"length","nodeType":"YulIdentifier","src":"12745:6:92"},{"arguments":[{"name":"tail_2","nodeType":"YulIdentifier","src":"12757:6:92"},{"name":"_4","nodeType":"YulIdentifier","src":"12765:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12753:3:92"},"nodeType":"YulFunctionCall","src":"12753:15:92"}],"functionName":{"name":"abi_encode_bytes_calldata","nodeType":"YulIdentifier","src":"12710:25:92"},"nodeType":"YulFunctionCall","src":"12710:59:92"},"variableNames":[{"name":"tail_2","nodeType":"YulIdentifier","src":"12700:6:92"}]},{"nodeType":"YulAssignment","src":"12782:25:92","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"12796:6:92"},{"name":"_2","nodeType":"YulIdentifier","src":"12804:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12792:3:92"},"nodeType":"YulFunctionCall","src":"12792:15:92"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"12782:6:92"}]},{"nodeType":"YulAssignment","src":"12820:19:92","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"12831:3:92"},{"name":"_2","nodeType":"YulIdentifier","src":"12836:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12827:3:92"},"nodeType":"YulFunctionCall","src":"12827:12:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"12820:3:92"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"11626:1:92"},{"name":"value5","nodeType":"YulIdentifier","src":"11629:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"11623:2:92"},"nodeType":"YulFunctionCall","src":"11623:13:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"11637:18:92","statements":[{"nodeType":"YulAssignment","src":"11639:14:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"11648:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"11651:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11644:3:92"},"nodeType":"YulFunctionCall","src":"11644:9:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"11639:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"11619:3:92","statements":[]},"src":"11615:1234:92"},{"nodeType":"YulAssignment","src":"12858:14:92","value":{"name":"tail_2","nodeType":"YulIdentifier","src":"12866:6:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"12858:4:92"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12892:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"12903:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12888:3:92"},"nodeType":"YulFunctionCall","src":"12888:19:92"},{"name":"value6","nodeType":"YulIdentifier","src":"12909:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12881:6:92"},"nodeType":"YulFunctionCall","src":"12881:35:92"},"nodeType":"YulExpressionStatement","src":"12881:35:92"}]},"name":"abi_encode_tuple_t_uint64_t_uint64_t_bytes_calldata_ptr_t_array$_t_struct$_Action_$10724_calldata_ptr_$dyn_calldata_ptr_t_uint256__to_t_uint64_t_uint64_t_bytes_memory_ptr_t_array$_t_struct$_Action_$10724_memory_ptr_$dyn_memory_ptr_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"10952:9:92","type":""},{"name":"value6","nodeType":"YulTypedName","src":"10963:6:92","type":""},{"name":"value5","nodeType":"YulTypedName","src":"10971:6:92","type":""},{"name":"value4","nodeType":"YulTypedName","src":"10979:6:92","type":""},{"name":"value3","nodeType":"YulTypedName","src":"10987:6:92","type":""},{"name":"value2","nodeType":"YulTypedName","src":"10995:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"11003:6:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"11011:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"11022:4:92","type":""}],"src":"10682:2240:92"}]},"contents":"{\n { }\n function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n if iszero(eq(value, and(value, shl(224, 0xffffffff)))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function validator_revert_contract_IDAO(value)\n {\n if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n }\n function panic_error_0x41()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function allocate_memory_2869() -> memPtr\n {\n memPtr := mload(64)\n let newFreePtr := add(memPtr, 0x60)\n if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n }\n function allocate_memory(size) -> memPtr\n {\n memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(size, 31), not(31)))\n if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n }\n function array_allocation_size_array_struct_Action_dyn(length) -> size\n {\n if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n size := add(shl(5, length), 0x20)\n }\n function array_allocation_size_bytes(length) -> size\n {\n if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n size := add(and(add(length, 31), not(31)), 0x20)\n }\n function abi_decode_tuple_t_contract$_IDAO_$10865t_uint256t_array$_t_struct$_Action_$10724_memory_ptr_$dyn_memory_ptrt_uint256(headStart, dataEnd) -> value0, value1, value2, value3\n {\n if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n validator_revert_contract_IDAO(calldataload(headStart))\n value0 := calldataload(headStart)\n value1 := calldataload(add(headStart, 32))\n let offset := calldataload(add(headStart, 64))\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n let _2 := add(headStart, offset)\n if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n let dst := allocate_memory(array_allocation_size_array_struct_Action_dyn(calldataload(_2)))\n let dst_1 := dst\n mstore(dst, calldataload(_2))\n dst := add(dst, 32)\n let srcEnd := add(add(_2, shl(5, calldataload(_2))), 32)\n if gt(srcEnd, dataEnd) { revert(0, 0) }\n let src := add(_2, 32)\n for { } lt(src, srcEnd) { src := add(src, 32) }\n {\n if gt(calldataload(src), _1) { revert(0, 0) }\n let _3 := add(_2, calldataload(src))\n if slt(add(sub(dataEnd, _3), not(31)), 0x60) { revert(0, 0) }\n let value := allocate_memory_2869()\n let value_1 := calldataload(add(_3, 32))\n validator_revert_contract_IDAO(value_1)\n mstore(value, value_1)\n mstore(add(value, 32), calldataload(add(_3, 64)))\n let offset_1 := calldataload(add(_3, 0x60))\n if gt(offset_1, _1) { revert(0, 0) }\n let _4 := add(_3, offset_1)\n if iszero(slt(add(_4, 63), dataEnd)) { revert(0, 0) }\n let _5 := calldataload(add(_4, 32))\n let array := allocate_memory(array_allocation_size_bytes(_5))\n mstore(array, _5)\n if gt(add(add(_4, _5), 64), dataEnd) { revert(0, 0) }\n calldatacopy(add(array, 32), add(_4, 64), _5)\n mstore(add(add(array, _5), 32), 0)\n mstore(add(value, 64), array)\n mstore(dst, value)\n dst := add(dst, 32)\n }\n value2 := dst_1\n value3 := calldataload(add(headStart, 0x60))\n }\n function copy_memory_to_memory_with_cleanup(src, dst, length)\n {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n mstore(add(dst, length), 0)\n }\n function abi_encode_bytes(value, pos) -> end\n {\n let length := mload(value)\n mstore(pos, length)\n copy_memory_to_memory_with_cleanup(add(value, 0x20), add(pos, 0x20), length)\n end := add(add(pos, and(add(length, 31), not(31))), 0x20)\n }\n function abi_encode_tuple_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_t_uint256__to_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n {\n let tail_1 := add(headStart, 64)\n mstore(headStart, 64)\n let pos := tail_1\n let length := mload(value0)\n mstore(tail_1, length)\n pos := add(headStart, 96)\n let tail_2 := add(add(headStart, shl(5, length)), 96)\n let _1 := 0x20\n let srcPtr := add(value0, _1)\n let i := 0\n for { } lt(i, length) { i := add(i, 1) }\n {\n mstore(pos, add(sub(tail_2, headStart), not(95)))\n tail_2 := abi_encode_bytes(mload(srcPtr), tail_2)\n srcPtr := add(srcPtr, _1)\n pos := add(pos, _1)\n }\n tail := tail_2\n mstore(add(headStart, _1), value1)\n }\n function abi_decode_uint64(offset) -> value\n {\n value := calldataload(offset)\n if iszero(eq(value, and(value, 0xffffffffffffffff))) { revert(0, 0) }\n }\n function abi_decode_array_struct_Action_calldata_dyn_calldata(offset, end) -> arrayPos, length\n {\n if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n length := calldataload(offset)\n if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n arrayPos := add(offset, 0x20)\n if gt(add(add(offset, shl(5, length)), 0x20), end) { revert(0, 0) }\n }\n function abi_decode_tuple_t_addresst_bytes_calldata_ptrt_uint64t_uint64t_array$_t_struct$_Action_$10724_calldata_ptr_$dyn_calldata_ptrt_uint256(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6, value7\n {\n if slt(sub(dataEnd, headStart), 192) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_contract_IDAO(value)\n value0 := value\n let offset := calldataload(add(headStart, 32))\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n let _2 := add(headStart, offset)\n if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n let length := calldataload(_2)\n if gt(length, _1) { revert(0, 0) }\n if gt(add(add(_2, length), 32), dataEnd) { revert(0, 0) }\n value1 := add(_2, 32)\n value2 := length\n value3 := abi_decode_uint64(add(headStart, 64))\n value4 := abi_decode_uint64(add(headStart, 96))\n let offset_1 := calldataload(add(headStart, 128))\n if gt(offset_1, _1) { revert(0, 0) }\n let value5_1, value6_1 := abi_decode_array_struct_Action_calldata_dyn_calldata(add(headStart, offset_1), dataEnd)\n value5 := value5_1\n value6 := value6_1\n value7 := calldataload(add(headStart, 160))\n }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_encode_tuple_t_bytes32_t_array$_t_struct$_Action_$10724_memory_ptr_$dyn_memory_ptr_t_uint256__to_t_bytes32_t_array$_t_struct$_Action_$10724_memory_ptr_$dyn_memory_ptr_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n {\n let _1 := 96\n let tail_1 := add(headStart, _1)\n mstore(headStart, value0)\n let _2 := 32\n mstore(add(headStart, _2), _1)\n let pos := tail_1\n let length := mload(value1)\n mstore(tail_1, length)\n pos := add(headStart, 128)\n let tail_2 := add(add(headStart, shl(5, length)), 128)\n let srcPtr := add(value1, _2)\n let i := 0\n for { } lt(i, length) { i := add(i, 1) }\n {\n mstore(pos, add(sub(tail_2, headStart), not(127)))\n let _3 := mload(srcPtr)\n mstore(tail_2, and(mload(_3), 0xffffffffffffffffffffffffffffffffffffffff))\n mstore(add(tail_2, _2), mload(add(_3, _2)))\n let _4 := 0x40\n let memberValue0 := mload(add(_3, _4))\n mstore(add(tail_2, _4), _1)\n tail_2 := abi_encode_bytes(memberValue0, add(tail_2, _1))\n srcPtr := add(srcPtr, _2)\n pos := add(pos, _2)\n }\n tail := tail_2\n mstore(add(headStart, 0x40), value2)\n }\n function abi_decode_tuple_t_array$_t_bytes_memory_ptr_$dyn_memory_ptrt_uint256_fromMemory(headStart, dataEnd) -> value0, value1\n {\n let _1 := 64\n if slt(sub(dataEnd, headStart), _1) { revert(0, 0) }\n let offset := mload(headStart)\n let _2 := 0xffffffffffffffff\n if gt(offset, _2) { revert(0, 0) }\n let _3 := add(headStart, offset)\n if iszero(slt(add(_3, 0x1f), dataEnd)) { revert(0, 0) }\n let _4 := mload(_3)\n let _5 := 0x20\n let dst := allocate_memory(array_allocation_size_array_struct_Action_dyn(_4))\n let dst_1 := dst\n mstore(dst, _4)\n dst := add(dst, _5)\n let srcEnd := add(add(_3, shl(5, _4)), _5)\n if gt(srcEnd, dataEnd) { revert(0, 0) }\n let src := add(_3, _5)\n for { } lt(src, srcEnd) { src := add(src, _5) }\n {\n let innerOffset := mload(src)\n if gt(innerOffset, _2)\n {\n let _6 := 0\n revert(_6, _6)\n }\n let _7 := add(_3, innerOffset)\n if iszero(slt(add(_7, 63), dataEnd))\n {\n let _8 := 0\n revert(_8, _8)\n }\n let _9 := mload(add(_7, _5))\n let array := allocate_memory(array_allocation_size_bytes(_9))\n mstore(array, _9)\n if gt(add(add(_7, _9), _1), dataEnd)\n {\n let _10 := 0\n revert(_10, _10)\n }\n copy_memory_to_memory_with_cleanup(add(_7, _1), add(array, _5), _9)\n mstore(dst, array)\n dst := add(dst, _5)\n }\n value0 := dst_1\n value1 := mload(add(headStart, _5))\n }\n function abi_encode_bytes_calldata(start, length, pos) -> end\n {\n mstore(pos, length)\n calldatacopy(add(pos, 0x20), start, length)\n mstore(add(add(pos, length), 0x20), 0)\n end := add(add(pos, and(add(length, 31), not(31))), 0x20)\n }\n function abi_encode_tuple_t_uint64_t_uint64_t_bytes_calldata_ptr_t_array$_t_struct$_Action_$10724_calldata_ptr_$dyn_calldata_ptr_t_uint256__to_t_uint64_t_uint64_t_bytes_memory_ptr_t_array$_t_struct$_Action_$10724_memory_ptr_$dyn_memory_ptr_t_uint256__fromStack_reversed(headStart, value6, value5, value4, value3, value2, value1, value0) -> tail\n {\n let _1 := 0xffffffffffffffff\n mstore(headStart, and(value0, _1))\n let _2 := 32\n mstore(add(headStart, _2), and(value1, _1))\n let _3 := 64\n mstore(add(headStart, _3), 160)\n let tail_1 := abi_encode_bytes_calldata(value2, value3, add(headStart, 160))\n let _4 := 96\n mstore(add(headStart, _4), sub(tail_1, headStart))\n let pos := tail_1\n mstore(tail_1, value5)\n pos := add(tail_1, _2)\n let tail_2 := add(add(tail_1, shl(5, value5)), _2)\n let srcPtr := value4\n let i := 0\n for { } lt(i, value5) { i := add(i, 1) }\n {\n mstore(pos, add(sub(tail_2, tail_1), not(31)))\n let rel_offset_of_tail := calldataload(srcPtr)\n if iszero(slt(rel_offset_of_tail, add(sub(calldatasize(), value4), not(94)))) { revert(0, 0) }\n let value := add(rel_offset_of_tail, value4)\n let value_1 := calldataload(value)\n validator_revert_contract_IDAO(value_1)\n mstore(tail_2, and(value_1, 0xffffffffffffffffffffffffffffffffffffffff))\n mstore(add(tail_2, _2), calldataload(add(value, _2)))\n let rel_offset_of_tail_1 := calldataload(add(value, _3))\n if iszero(slt(rel_offset_of_tail_1, add(sub(calldatasize(), value), not(30)))) { revert(0, 0) }\n let value_2 := add(rel_offset_of_tail_1, value)\n let length := calldataload(value_2)\n let value_3 := add(value_2, _2)\n if gt(length, _1) { revert(0, 0) }\n if sgt(value_3, sub(calldatasize(), length)) { revert(0, 0) }\n mstore(add(tail_2, _3), _4)\n tail_2 := abi_encode_bytes_calldata(value_3, length, add(tail_2, _4))\n srcPtr := add(srcPtr, _2)\n pos := add(pos, _2)\n }\n tail := tail_2\n mstore(add(headStart, 128), value6)\n }\n}","id":92,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100675760003560e01c806373e1166d1161005057806373e1166d146100b55780637b2bf56e146100d6578063da35c664146100e657600080fd5b806301ffc9a71461006c578063634a9a8814610094575b600080fd5b61007f61007a36600461027d565b6100ee565b60405190151581526020015b60405180910390f35b6100a76100a2366004610382565b610125565b60405161008b929190610544565b6100c86100c3366004610616565b610142565b60405190815260200161008b565b60008054600181019091556100c8565b6000546100c8565b60006001600160e01b0319821663368d719960e21b148061011f57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600061013586868686610161565b9097909650945050505050565b60006101548989898989898989610217565b9998505050505050505050565b6040516331c6fcc960e21b81526060906000906001600160a01b0387169063c71bf32490610197908890889088906004016106ed565b6000604051808303816000875af11580156101b6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526101de9190810190610785565b604051919350915085907f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f90600090a294509492505050565b600080546001810182559050886001600160a01b0316817fa6c1f8f4276dc3f243459e13b557c84e8f4e90b2e09070bad5f6909cee687c9288888c8c8a8a8a60405161026997969594939291906108a2565b60405180910390a398975050505050505050565b60006020828403121561028f57600080fd5b81356001600160e01b0319811681146102a757600080fd5b9392505050565b6001600160a01b03811681146102c357600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff811182821017156102ff576102ff6102c6565b60405290565b604051601f8201601f1916810167ffffffffffffffff8111828210171561032e5761032e6102c6565b604052919050565b600067ffffffffffffffff821115610350576103506102c6565b5060051b60200190565b600067ffffffffffffffff821115610374576103746102c6565b50601f01601f191660200190565b6000806000806080858703121561039857600080fd5b6103a285356102ae565b8435935060208501359250604085013567ffffffffffffffff808211156103c857600080fd5b818701915087601f8301126103dc57600080fd5b6103ee6103e98335610336565b610305565b82358082526020808301929160051b8501018a81111561040d57600080fd5b602085015b818110156104e057848135111561042857600080fd5b803586016060818e03601f1901121561044057600080fd5b6104486102dc565b6020820135610456816102ae565b81526040820135602082015260608201358781111561047457600080fd5b8083019250508d603f83011261048957600080fd5b602082013561049a6103e98261035a565b8181528f60408386010111156104af57600080fd5b8160408501602083013760006020838301015280604084015250508086525050602084019350602081019050610412565b50979a969950976060013596505050505050565b60005b8381101561050f5781810151838201526020016104f7565b50506000910152565b600081518084526105308160208601602086016104f4565b601f01601f19169290920160200192915050565b6000604082016040835280855180835260608501915060608160051b8601019250602080880160005b8381101561059b57605f19888703018552610589868351610518565b9550938201939082019060010161056d565b50509490940194909452949350505050565b803567ffffffffffffffff811681146105c557600080fd5b919050565b60008083601f8401126105dc57600080fd5b50813567ffffffffffffffff8111156105f457600080fd5b6020830191508360208260051b850101111561060f57600080fd5b9250929050565b60008060008060008060008060c0898b03121561063257600080fd5b883561063d816102ae565b9750602089013567ffffffffffffffff8082111561065a57600080fd5b818b0191508b601f83011261066e57600080fd5b81358181111561067d57600080fd5b8c602082850101111561068f57600080fd5b60208301995097506106a360408c016105ad565b96506106b160608c016105ad565b955060808b01359150808211156106c757600080fd5b506106d48b828c016105ca565b999c989b50969995989497949560a00135949350505050565b600060608083018684526020828186015281875180845260808701915060808160051b880101935082890160005b8281101561076e57888603607f19018452815180516001600160a01b03168752858101518688015260409081015190870188905261075b88880182610518565b965050928401929084019060010161071b565b505050505060409390930193909352509392505050565b600080604080848603121561079957600080fd5b835167ffffffffffffffff808211156107b157600080fd5b818601915086601f8301126107c557600080fd5b815160206107d56103e983610336565b82815260059290921b8401810191818101908a8411156107f457600080fd5b8286015b84811015610865578051868111156108105760008081fd5b8701603f81018d136108225760008081fd5b848101516108326103e98261035a565b8181528e8b8385010111156108475760008081fd5b610856828883018d86016104f4565b855250509183019183016107f8565b509890910151979997985050505050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b600067ffffffffffffffff808a1683526020818a1681850152604060a0818601526108d160a086018a8c610879565b606086820381880152818983528483019050848a60051b8401018b60005b8c81101561099457858303601f190184528135368f9003605e1901811261091557600080fd5b8e018035610922816102ae565b6001600160a01b0316845280890135898501528781013536829003601e1901811261094c57600080fd5b0188810190358a81111561095f57600080fd5b80360382131561096e57600080fd5b86898601526109808786018284610879565b958a019594505050908701906001016108ef565b5050809750505050505050508260808301529897505050505050505056fea164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x67 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x73E1166D GT PUSH2 0x50 JUMPI DUP1 PUSH4 0x73E1166D EQ PUSH2 0xB5 JUMPI DUP1 PUSH4 0x7B2BF56E EQ PUSH2 0xD6 JUMPI DUP1 PUSH4 0xDA35C664 EQ PUSH2 0xE6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x6C JUMPI DUP1 PUSH4 0x634A9A88 EQ PUSH2 0x94 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7F PUSH2 0x7A CALLDATASIZE PUSH1 0x4 PUSH2 0x27D JUMP JUMPDEST PUSH2 0xEE JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xA7 PUSH2 0xA2 CALLDATASIZE PUSH1 0x4 PUSH2 0x382 JUMP JUMPDEST PUSH2 0x125 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x8B SWAP3 SWAP2 SWAP1 PUSH2 0x544 JUMP JUMPDEST PUSH2 0xC8 PUSH2 0xC3 CALLDATASIZE PUSH1 0x4 PUSH2 0x616 JUMP JUMPDEST PUSH2 0x142 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x8B JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 DUP2 ADD SWAP1 SWAP2 SSTORE PUSH2 0xC8 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0xC8 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x368D7199 PUSH1 0xE2 SHL EQ DUP1 PUSH2 0x11F JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x135 DUP7 DUP7 DUP7 DUP7 PUSH2 0x161 JUMP JUMPDEST SWAP1 SWAP8 SWAP1 SWAP7 POP SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x154 DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 PUSH2 0x217 JUMP JUMPDEST SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x31C6FCC9 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x60 SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0xC71BF324 SWAP1 PUSH2 0x197 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x6ED JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1B6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x1DE SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x785 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 SWAP4 POP SWAP2 POP DUP6 SWAP1 PUSH32 0x712AE1383F79AC853F8D882153778E0260EF8F03B504E2866E0593E04D2B291F SWAP1 PUSH1 0x0 SWAP1 LOG2 SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 DUP2 ADD DUP3 SSTORE SWAP1 POP DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH32 0xA6C1F8F4276DC3F243459E13B557C84E8F4E90B2E09070BAD5F6909CEE687C92 DUP9 DUP9 DUP13 DUP13 DUP11 DUP11 DUP11 PUSH1 0x40 MLOAD PUSH2 0x269 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x8A2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x28F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x2A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x2C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x60 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x2FF JUMPI PUSH2 0x2FF PUSH2 0x2C6 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x32E JUMPI PUSH2 0x32E PUSH2 0x2C6 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x350 JUMPI PUSH2 0x350 PUSH2 0x2C6 JUMP JUMPDEST POP PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x374 JUMPI PUSH2 0x374 PUSH2 0x2C6 JUMP JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x398 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3A2 DUP6 CALLDATALOAD PUSH2 0x2AE JUMP JUMPDEST DUP5 CALLDATALOAD SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x3C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3EE PUSH2 0x3E9 DUP4 CALLDATALOAD PUSH2 0x336 JUMP JUMPDEST PUSH2 0x305 JUMP JUMPDEST DUP3 CALLDATALOAD DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP3 SWAP2 PUSH1 0x5 SHL DUP6 ADD ADD DUP11 DUP2 GT ISZERO PUSH2 0x40D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP6 ADD JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x4E0 JUMPI DUP5 DUP2 CALLDATALOAD GT ISZERO PUSH2 0x428 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD DUP7 ADD PUSH1 0x60 DUP2 DUP15 SUB PUSH1 0x1F NOT ADD SLT ISZERO PUSH2 0x440 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x448 PUSH2 0x2DC JUMP JUMPDEST PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH2 0x456 DUP2 PUSH2 0x2AE JUMP JUMPDEST DUP2 MSTORE PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x60 DUP3 ADD CALLDATALOAD DUP8 DUP2 GT ISZERO PUSH2 0x474 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 DUP4 ADD SWAP3 POP POP DUP14 PUSH1 0x3F DUP4 ADD SLT PUSH2 0x489 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH2 0x49A PUSH2 0x3E9 DUP3 PUSH2 0x35A JUMP JUMPDEST DUP2 DUP2 MSTORE DUP16 PUSH1 0x40 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0x4AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP4 DUP4 ADD ADD MSTORE DUP1 PUSH1 0x40 DUP5 ADD MSTORE POP POP DUP1 DUP7 MSTORE POP POP PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x412 JUMP JUMPDEST POP SWAP8 SWAP11 SWAP7 SWAP10 POP SWAP8 PUSH1 0x60 ADD CALLDATALOAD SWAP7 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x50F JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x4F7 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x530 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x4F4 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD PUSH1 0x40 DUP4 MSTORE DUP1 DUP6 MLOAD DUP1 DUP4 MSTORE PUSH1 0x60 DUP6 ADD SWAP2 POP PUSH1 0x60 DUP2 PUSH1 0x5 SHL DUP7 ADD ADD SWAP3 POP PUSH1 0x20 DUP1 DUP9 ADD PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x59B JUMPI PUSH1 0x5F NOT DUP9 DUP8 SUB ADD DUP6 MSTORE PUSH2 0x589 DUP7 DUP4 MLOAD PUSH2 0x518 JUMP JUMPDEST SWAP6 POP SWAP4 DUP3 ADD SWAP4 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x56D JUMP JUMPDEST POP POP SWAP5 SWAP1 SWAP5 ADD SWAP5 SWAP1 SWAP5 MSTORE SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x5C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x5DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x5F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 PUSH1 0x5 SHL DUP6 ADD ADD GT ISZERO PUSH2 0x60F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP10 DUP12 SUB SLT ISZERO PUSH2 0x632 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP9 CALLDATALOAD PUSH2 0x63D DUP2 PUSH2 0x2AE JUMP JUMPDEST SWAP8 POP PUSH1 0x20 DUP10 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x65A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP12 ADD SWAP2 POP DUP12 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x66E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x67D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP13 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x68F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP10 POP SWAP8 POP PUSH2 0x6A3 PUSH1 0x40 DUP13 ADD PUSH2 0x5AD JUMP JUMPDEST SWAP7 POP PUSH2 0x6B1 PUSH1 0x60 DUP13 ADD PUSH2 0x5AD JUMP JUMPDEST SWAP6 POP PUSH1 0x80 DUP12 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x6C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x6D4 DUP12 DUP3 DUP13 ADD PUSH2 0x5CA JUMP JUMPDEST SWAP10 SWAP13 SWAP9 SWAP12 POP SWAP7 SWAP10 SWAP6 SWAP9 SWAP5 SWAP8 SWAP5 SWAP6 PUSH1 0xA0 ADD CALLDATALOAD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP1 DUP4 ADD DUP7 DUP5 MSTORE PUSH1 0x20 DUP3 DUP2 DUP7 ADD MSTORE DUP2 DUP8 MLOAD DUP1 DUP5 MSTORE PUSH1 0x80 DUP8 ADD SWAP2 POP PUSH1 0x80 DUP2 PUSH1 0x5 SHL DUP9 ADD ADD SWAP4 POP DUP3 DUP10 ADD PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x76E JUMPI DUP9 DUP7 SUB PUSH1 0x7F NOT ADD DUP5 MSTORE DUP2 MLOAD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 MSTORE DUP6 DUP2 ADD MLOAD DUP7 DUP9 ADD MSTORE PUSH1 0x40 SWAP1 DUP2 ADD MLOAD SWAP1 DUP8 ADD DUP9 SWAP1 MSTORE PUSH2 0x75B DUP9 DUP9 ADD DUP3 PUSH2 0x518 JUMP JUMPDEST SWAP7 POP POP SWAP3 DUP5 ADD SWAP3 SWAP1 DUP5 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x71B JUMP JUMPDEST POP POP POP POP POP PUSH1 0x40 SWAP4 SWAP1 SWAP4 ADD SWAP4 SWAP1 SWAP4 MSTORE POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP1 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x799 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x7B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP7 ADD SWAP2 POP DUP7 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x7C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x20 PUSH2 0x7D5 PUSH2 0x3E9 DUP4 PUSH2 0x336 JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH1 0x5 SWAP3 SWAP1 SWAP3 SHL DUP5 ADD DUP2 ADD SWAP2 DUP2 DUP2 ADD SWAP1 DUP11 DUP5 GT ISZERO PUSH2 0x7F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 DUP7 ADD JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x865 JUMPI DUP1 MLOAD DUP7 DUP2 GT ISZERO PUSH2 0x810 JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST DUP8 ADD PUSH1 0x3F DUP2 ADD DUP14 SGT PUSH2 0x822 JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST DUP5 DUP2 ADD MLOAD PUSH2 0x832 PUSH2 0x3E9 DUP3 PUSH2 0x35A JUMP JUMPDEST DUP2 DUP2 MSTORE DUP15 DUP12 DUP4 DUP6 ADD ADD GT ISZERO PUSH2 0x847 JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST PUSH2 0x856 DUP3 DUP9 DUP4 ADD DUP14 DUP7 ADD PUSH2 0x4F4 JUMP JUMPDEST DUP6 MSTORE POP POP SWAP2 DUP4 ADD SWAP2 DUP4 ADD PUSH2 0x7F8 JUMP JUMPDEST POP SWAP9 SWAP1 SWAP2 ADD MLOAD SWAP8 SWAP10 SWAP8 SWAP9 POP POP POP POP POP POP POP POP JUMP JUMPDEST DUP2 DUP4 MSTORE DUP2 DUP2 PUSH1 0x20 DUP6 ADD CALLDATACOPY POP PUSH1 0x0 DUP3 DUP3 ADD PUSH1 0x20 SWAP1 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1F SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND SWAP1 SWAP2 ADD ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP11 AND DUP4 MSTORE PUSH1 0x20 DUP2 DUP11 AND DUP2 DUP6 ADD MSTORE PUSH1 0x40 PUSH1 0xA0 DUP2 DUP7 ADD MSTORE PUSH2 0x8D1 PUSH1 0xA0 DUP7 ADD DUP11 DUP13 PUSH2 0x879 JUMP JUMPDEST PUSH1 0x60 DUP7 DUP3 SUB DUP2 DUP9 ADD MSTORE DUP2 DUP10 DUP4 MSTORE DUP5 DUP4 ADD SWAP1 POP DUP5 DUP11 PUSH1 0x5 SHL DUP5 ADD ADD DUP12 PUSH1 0x0 JUMPDEST DUP13 DUP2 LT ISZERO PUSH2 0x994 JUMPI DUP6 DUP4 SUB PUSH1 0x1F NOT ADD DUP5 MSTORE DUP2 CALLDATALOAD CALLDATASIZE DUP16 SWAP1 SUB PUSH1 0x5E NOT ADD DUP2 SLT PUSH2 0x915 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP15 ADD DUP1 CALLDATALOAD PUSH2 0x922 DUP2 PUSH2 0x2AE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 MSTORE DUP1 DUP10 ADD CALLDATALOAD DUP10 DUP6 ADD MSTORE DUP8 DUP2 ADD CALLDATALOAD CALLDATASIZE DUP3 SWAP1 SUB PUSH1 0x1E NOT ADD DUP2 SLT PUSH2 0x94C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST ADD DUP9 DUP2 ADD SWAP1 CALLDATALOAD DUP11 DUP2 GT ISZERO PUSH2 0x95F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATASIZE SUB DUP3 SGT ISZERO PUSH2 0x96E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 DUP10 DUP7 ADD MSTORE PUSH2 0x980 DUP8 DUP7 ADD DUP3 DUP5 PUSH2 0x879 JUMP JUMPDEST SWAP6 DUP11 ADD SWAP6 SWAP5 POP POP POP SWAP1 DUP8 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x8EF JUMP JUMPDEST POP POP DUP1 SWAP8 POP POP POP POP POP POP POP POP DUP3 PUSH1 0x80 DUP4 ADD MSTORE SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"315:948:56:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1134:200:79;;;;;;:::i;:::-;;:::i;:::-;;;470:14:92;;463:22;445:41;;433:2;418:18;1134:200:79;;;;;;;;935:326:56;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;476:453::-;;;;;;:::i;:::-;;:::i;:::-;;;7357:25:92;;;7345:2;7330:18;476:453:56;7211:177:92;355:115:56;401:18;918:14:35;;1050:1;1032:19;;;;;355:115:56;;813:113:79;868:7;918:14:35;813:113:79;355:115:56;1134:200:79;1220:4;-1:-1:-1;;;;;;1243:43:79;;-1:-1:-1;;;1243:43:79;;:84;;-1:-1:-1;;;;;;;;;;937:40:38;;;1290:37:79;1236:91;1134:200;-1:-1:-1;;1134:200:79:o;935:326:56:-;1105:26;1133:18;1191:63;1208:4;1214:11;1227:8;1237:16;1191;:63::i;:::-;1163:91;;;;-1:-1:-1;935:326:56;-1:-1:-1;;;;;935:326:56:o;476:453::-;711:18;754:168;783:8;805:9;;828:10;852:8;874;;896:16;754:15;:168::i;:::-;741:181;476:453;-1:-1:-1;;;;;;;;;476:453:56:o;3429:392:79:-;3694:62;;-1:-1:-1;;;3694:62:79;;3608:26;;3636:18;;-1:-1:-1;;;;;3694:12:79;;;;;:62;;3715:11;;3729:8;;3739:16;;3694:62;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3694:62:79;;;;;;;;;;;;:::i;:::-;3771:43;;3666:90;;-1:-1:-1;3666:90:79;-1:-1:-1;3801:11:79;;3771:43;;;;;3429:392;;;;;;;:::o;2216:600::-;2460:18;918:14:35;;1050:1;1032:19;;;;2490:32:79;;2613:8;-1:-1:-1;;;;;2538:271:79;2580:10;2538:271;2679:10;2712:8;2645:9;;2743:8;;2782:16;2538:271;;;;;;;;;;;;:::i;:::-;;;;;;;;2216:600;;;;;;;;;;:::o;14:286:92:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:92;;209:43;;199:71;;266:1;263;256:12;199:71;289:5;14:286;-1:-1:-1;;;14:286:92:o;497:160::-;-1:-1:-1;;;;;582:5:92;578:54;571:5;568:65;558:93;;647:1;644;637:12;558:93;497:160;:::o;662:127::-;723:10;718:3;714:20;711:1;704:31;754:4;751:1;744:15;778:4;775:1;768:15;794:253;866:2;860:9;908:4;896:17;;943:18;928:34;;964:22;;;925:62;922:88;;;990:18;;:::i;:::-;1026:2;1019:22;794:253;:::o;1052:275::-;1123:2;1117:9;1188:2;1169:13;;-1:-1:-1;;1165:27:92;1153:40;;1223:18;1208:34;;1244:22;;;1205:62;1202:88;;;1270:18;;:::i;:::-;1306:2;1299:22;1052:275;;-1:-1:-1;1052:275:92:o;1332:189::-;1398:4;1431:18;1423:6;1420:30;1417:56;;;1453:18;;:::i;:::-;-1:-1:-1;1498:1:92;1494:14;1510:4;1490:25;;1332:189::o;1526:186::-;1574:4;1607:18;1599:6;1596:30;1593:56;;;1629:18;;:::i;:::-;-1:-1:-1;1695:2:92;1674:15;-1:-1:-1;;1670:29:92;1701:4;1666:40;;1526:186::o;1717:2209::-;1867:6;1875;1883;1891;1944:3;1932:9;1923:7;1919:23;1915:33;1912:53;;;1961:1;1958;1951:12;1912:53;1974:55;2018:9;2005:23;1974:55;:::i;:::-;2061:9;2048:23;2038:33;;2118:2;2107:9;2103:18;2090:32;2080:42;;2173:2;2162:9;2158:18;2145:32;2196:18;2237:2;2229:6;2226:14;2223:34;;;2253:1;2250;2243:12;2223:34;2291:6;2280:9;2276:22;2266:32;;2336:7;2329:4;2325:2;2321:13;2317:27;2307:55;;2358:1;2355;2348:12;2307:55;2382:80;2398:63;2457:2;2444:16;2398:63;:::i;:::-;2382:80;:::i;:::-;2508:16;;2496:29;;;2550:2;2541:12;;;;2484:3;2592:1;2588:24;2580:33;;2576:42;2630:19;;;2627:39;;;2662:1;2659;2652:12;2627:39;2694:2;2690;2686:11;2706:1137;2722:6;2717:3;2714:15;2706:1137;;;2801:2;2795:3;2782:17;2779:25;2776:45;;;2817:1;2814;2807:12;2776:45;2852:17;;2844:26;;2922:4;2894:16;;;-1:-1:-1;;2890:30:92;2886:41;2883:61;;;2940:1;2937;2930:12;2883:61;2970:22;;:::i;:::-;3041:2;3037;3033:11;3020:25;3058:39;3089:7;3058:39;:::i;:::-;3110:22;;3189:2;3181:11;;3168:25;3163:2;3152:14;;3145:49;3244:4;3236:13;;3223:27;3266:16;;;3263:36;;;3295:1;3292;3285:12;3263:36;3330:8;3326:2;3322:17;3312:27;;;3379:7;3374:2;3370;3366:11;3362:25;3352:53;;3401:1;3398;3391:12;3352:53;3449:2;3445;3441:11;3428:25;3479:48;3495:31;3523:2;3495:31;:::i;3479:48::-;3554:2;3547:5;3540:17;3598:7;3593:2;3588;3584;3580:11;3576:20;3573:33;3570:53;;;3619:1;3616;3609:12;3570:53;3678:2;3673;3669;3665:11;3660:2;3653:5;3649:14;3636:45;3726:1;3721:2;3716;3709:5;3705:14;3701:23;3694:34;3764:5;3759:2;3752:5;3748:14;3741:29;;;3795:5;3790:3;3783:18;;;3830:2;3825:3;3821:12;3814:19;;2748:2;2743:3;2739:12;2732:19;;2706:1137;;;-1:-1:-1;1717:2209:92;;;;-1:-1:-1;3862:5:92;3914:4;3899:20;3886:34;;-1:-1:-1;;;;;;1717:2209:92:o;3931:250::-;4016:1;4026:113;4040:6;4037:1;4034:13;4026:113;;;4116:11;;;4110:18;4097:11;;;4090:39;4062:2;4055:10;4026:113;;;-1:-1:-1;;4173:1:92;4155:16;;4148:27;3931:250::o;4186:270::-;4227:3;4265:5;4259:12;4292:6;4287:3;4280:19;4308:76;4377:6;4370:4;4365:3;4361:14;4354:4;4347:5;4343:16;4308:76;:::i;:::-;4438:2;4417:15;-1:-1:-1;;4413:29:92;4404:39;;;;4445:4;4400:50;;4186:270;-1:-1:-1;;4186:270:92:o;4461:873::-;4649:4;4697:2;4686:9;4682:18;4727:2;4716:9;4709:21;4750:6;4785;4779:13;4816:6;4808;4801:22;4854:2;4843:9;4839:18;4832:25;;4916:2;4906:6;4903:1;4899:14;4888:9;4884:30;4880:39;4866:53;;4938:4;4977:2;4969:6;4965:15;4998:1;5008:254;5022:6;5019:1;5016:13;5008:254;;;5115:2;5111:7;5099:9;5091:6;5087:22;5083:36;5078:3;5071:49;5143:39;5175:6;5166;5160:13;5143:39;:::i;:::-;5133:49;-1:-1:-1;5240:12:92;;;;5205:15;;;;5044:1;5037:9;5008:254;;;-1:-1:-1;;5301:18:92;;;;5294:34;;;;5279:6;4461:873;-1:-1:-1;;;;4461:873:92:o;5339:171::-;5406:20;;5466:18;5455:30;;5445:41;;5435:69;;5500:1;5497;5490:12;5435:69;5339:171;;;:::o;5515:382::-;5593:8;5603:6;5657:3;5650:4;5642:6;5638:17;5634:27;5624:55;;5675:1;5672;5665:12;5624:55;-1:-1:-1;5698:20:92;;5741:18;5730:30;;5727:50;;;5773:1;5770;5763:12;5727:50;5810:4;5802:6;5798:17;5786:29;;5870:3;5863:4;5853:6;5850:1;5846:14;5838:6;5834:27;5830:38;5827:47;5824:67;;;5887:1;5884;5877:12;5824:67;5515:382;;;;;:::o;5902:1304::-;6069:6;6077;6085;6093;6101;6109;6117;6125;6178:3;6166:9;6157:7;6153:23;6149:33;6146:53;;;6195:1;6192;6185:12;6146:53;6234:9;6221:23;6253:37;6284:5;6253:37;:::i;:::-;6309:5;-1:-1:-1;6365:2:92;6350:18;;6337:32;6388:18;6418:14;;;6415:34;;;6445:1;6442;6435:12;6415:34;6483:6;6472:9;6468:22;6458:32;;6528:7;6521:4;6517:2;6513:13;6509:27;6499:55;;6550:1;6547;6540:12;6499:55;6590:2;6577:16;6616:2;6608:6;6605:14;6602:34;;;6632:1;6629;6622:12;6602:34;6677:7;6672:2;6663:6;6659:2;6655:15;6651:24;6648:37;6645:57;;;6698:1;6695;6688:12;6645:57;6729:2;6721:11;;;-1:-1:-1;6751:6:92;-1:-1:-1;6776:37:92;6809:2;6794:18;;6776:37;:::i;:::-;6766:47;;6832:37;6865:2;6854:9;6850:18;6832:37;:::i;:::-;6822:47;;6922:3;6911:9;6907:19;6894:33;6878:49;;6952:2;6942:8;6939:16;6936:36;;;6968:1;6965;6958:12;6936:36;;7007:87;7086:7;7075:8;7064:9;7060:24;7007:87;:::i;:::-;5902:1304;;;;-1:-1:-1;5902:1304:92;;;;;;6981:113;;7195:3;7180:19;7167:33;;5902:1304;-1:-1:-1;;;;5902:1304:92:o;7393:1305::-;7641:4;7670:2;7710;7699:9;7695:18;7740:6;7729:9;7722:25;7766:2;7804;7799;7788:9;7784:18;7777:30;7827:6;7862;7856:13;7893:6;7885;7878:22;7931:3;7920:9;7916:19;7909:26;;7994:3;7984:6;7981:1;7977:14;7966:9;7962:30;7958:40;7944:54;;8033:2;8025:6;8021:15;8054:1;8064:560;8078:6;8075:1;8072:13;8064:560;;;8143:22;;;-1:-1:-1;;8139:37:92;8127:50;;8200:13;;8245:9;;-1:-1:-1;;;;;8241:58:92;8226:74;;8343:11;;;8337:18;8320:15;;;8313:43;8379:4;8422:11;;;8416:18;8454:15;;;8447:27;;;8497:47;8528:15;;;8416:18;8497:47;:::i;:::-;8487:57;-1:-1:-1;;8602:12:92;;;;8567:15;;;;8100:1;8093:9;8064:560;;;-1:-1:-1;;;;;8678:4:92;8663:20;;;;8656:36;;;;-1:-1:-1;8641:6:92;7393:1305;-1:-1:-1;;;7393:1305:92:o;8703:1703::-;8816:6;8824;8855:2;8898;8886:9;8877:7;8873:23;8869:32;8866:52;;;8914:1;8911;8904:12;8866:52;8947:9;8941:16;8976:18;9017:2;9009:6;9006:14;9003:34;;;9033:1;9030;9023:12;9003:34;9071:6;9060:9;9056:22;9046:32;;9116:7;9109:4;9105:2;9101:13;9097:27;9087:55;;9138:1;9135;9128:12;9087:55;9167:2;9161:9;9189:4;9213:66;9229:49;9275:2;9229:49;:::i;9213:66::-;9313:15;;;9395:1;9391:10;;;;9383:19;;9379:28;;;9344:12;;;;9419:19;;;9416:39;;;9451:1;9448;9441:12;9416:39;9483:2;9479;9475:11;9495:837;9511:6;9506:3;9503:15;9495:837;;;9590:3;9584:10;9626:2;9613:11;9610:19;9607:109;;;9670:1;9699:2;9695;9688:14;9607:109;9739:20;;9794:2;9786:11;;9782:25;-1:-1:-1;9772:123:92;;9849:1;9878:2;9874;9867:14;9772:123;9932:2;9928;9924:11;9918:18;9962:48;9978:31;10006:2;9978:31;:::i;9962:48::-;10037:2;10030:5;10023:17;10081:7;10076:2;10071;10067;10063:11;10059:20;10056:33;10053:126;;;10131:1;10161:3;10156;10149:16;10053:126;10192:67;10256:2;10251;10244:5;10240:14;10235:2;10231;10227:11;10192:67;:::i;:::-;10272:18;;-1:-1:-1;;10310:12:92;;;;9528;;9495:837;;;-1:-1:-1;10381:18:92;;;;10375:25;10351:5;;10375:25;;-1:-1:-1;;;;;;;;8703:1703:92:o;10411:266::-;10499:6;10494:3;10487:19;10551:6;10544:5;10537:4;10532:3;10528:14;10515:43;-1:-1:-1;10603:1:92;10578:16;;;10596:4;10574:27;;;10567:38;;;;10659:2;10638:15;;;-1:-1:-1;;10634:29:92;10625:39;;;10621:50;;10411:266::o;10682:2240::-;11022:4;11051:18;11108:2;11100:6;11096:15;11085:9;11078:34;11131:2;11181;11173:6;11169:15;11164:2;11153:9;11149:18;11142:43;11204:2;11242:3;11237:2;11226:9;11222:18;11215:31;11269:62;11326:3;11315:9;11311:19;11303:6;11295;11269:62;:::i;:::-;11350:2;11400:9;11392:6;11388:22;11383:2;11372:9;11368:18;11361:50;11431:6;11461;11453;11446:22;11496:2;11488:6;11484:15;11477:22;;11555:2;11545:6;11542:1;11538:14;11530:6;11526:27;11522:36;11581:6;11605:1;11615:1234;11629:6;11626:1;11623:13;11615:1234;;;11694:19;;;-1:-1:-1;;11690:33:92;11678:46;;11763:20;;11838:14;11834:27;;;-1:-1:-1;;11830:41:92;11806:66;;11796:94;;11886:1;11883;11876:12;11796:94;11916:31;;11975:19;;12007:39;11975:19;12007:39;:::i;:::-;-1:-1:-1;;;;;12074:56:92;12059:72;;12181:14;;;12168:28;12151:15;;;12144:53;12251:14;;;12238:28;12323:14;12319:26;;;-1:-1:-1;;12315:40:92;12289:67;;12279:95;;12370:1;12367;12360:12;12279:95;12402:32;12510:16;;;;12461:21;12542:14;;;12539:34;;;12569:1;12566;12559:12;12539:34;12622:6;12606:14;12602:27;12593:7;12589:41;12586:61;;;12643:1;12640;12633:12;12586:61;12684:2;12679;12671:6;12667:15;12660:27;12710:59;12765:2;12757:6;12753:15;12745:6;12736:7;12710:59;:::i;:::-;12827:12;;;;12700:69;-1:-1:-1;;;12792:15:92;;;;11651:1;11644:9;11615:1234;;;11619:3;;12866:6;12858:14;;;;;;;;;12909:6;12903:3;12892:9;12888:19;12881:35;10682:2240;;;;;;;;;;:::o"},"gasEstimates":{"creation":{"codeDepositCost":"499000","executionCost":"530","totalCost":"499530"},"external":{"createProposal(address,bytes,uint64,uint64,(address,uint256,bytes)[],uint256)":"infinite","createProposalId()":"24432","executeProposal(address,uint256,(address,uint256,bytes)[],uint256)":"infinite","proposalCount()":"2336","supportsInterface(bytes4)":"427"}},"methodIdentifiers":{"createProposal(address,bytes,uint64,uint64,(address,uint256,bytes)[],uint256)":"73e1166d","createProposalId()":"7b2bf56e","executeProposal(address,uint256,(address,uint256,bytes)[],uint256)":"634a9a88","proposalCount()":"da35c664","supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"proposalId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"creator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"startDate\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"endDate\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"struct IDAO.Action[]\",\"name\":\"actions\",\"type\":\"tuple[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"allowFailureMap\",\"type\":\"uint256\"}],\"name\":\"ProposalCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"proposalId\",\"type\":\"uint256\"}],\"name\":\"ProposalExecuted\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_creator\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_metadata\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"_startDate\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"_endDate\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IDAO.Action[]\",\"name\":\"_actions\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"_allowFailureMap\",\"type\":\"uint256\"}],\"name\":\"createProposal\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"proposalId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"createProposalId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"proposalId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IDAO\",\"name\":\"_dao\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_proposalId\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IDAO.Action[]\",\"name\":\"_actions\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"_allowFailureMap\",\"type\":\"uint256\"}],\"name\":\"executeProposal\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"execResults\",\"type\":\"bytes[]\"},{\"internalType\":\"uint256\",\"name\":\"failureMap\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proposalCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"DO NOT USE IN PRODUCTION!\",\"kind\":\"dev\",\"methods\":{\"proposalCount()\":{\"returns\":{\"_0\":\"The proposal count.\"}},\"supportsInterface(bytes4)\":{\"params\":{\"_interfaceId\":\"The ID of the interface.\"},\"returns\":{\"_0\":\"Returns `true` if the interface is supported.\"}}},\"version\":1},\"userdoc\":{\"events\":{\"ProposalCreated(uint256,address,uint64,uint64,bytes,(address,uint256,bytes)[],uint256)\":{\"notice\":\"Emitted when a proposal is created.\"},\"ProposalExecuted(uint256)\":{\"notice\":\"Emitted when a proposal is executed.\"}},\"kind\":\"user\",\"methods\":{\"proposalCount()\":{\"notice\":\"Returns the proposal count determining the next proposal ID.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Checks if this or the parent contract supports an interface by its ID.\"}},\"notice\":\"A mock contract containing functions to create and execute proposals.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/mocks/plugin/extensions/proposal/ProposalMock.sol\":\"ProposalMock\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Counters.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Counters.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title Counters\\n * @author Matt Condon (@shrugs)\\n * @dev Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number\\n * of elements in a mapping, issuing ERC721 ids, or counting request ids.\\n *\\n * Include with `using Counters for Counters.Counter;`\\n */\\nlibrary Counters {\\n struct Counter {\\n // This variable should never be directly accessed by users of the library: interactions must be restricted to\\n // the library's function. As of Solidity v0.5.2, this cannot be enforced, though there is a proposal to add\\n // this feature: see https://github.com/ethereum/solidity/issues/4637\\n uint256 _value; // default: 0\\n }\\n\\n function current(Counter storage counter) internal view returns (uint256) {\\n return counter._value;\\n }\\n\\n function increment(Counter storage counter) internal {\\n unchecked {\\n counter._value += 1;\\n }\\n }\\n\\n function decrement(Counter storage counter) internal {\\n uint256 value = counter._value;\\n require(value > 0, \\\"Counter: decrement overflow\\\");\\n unchecked {\\n counter._value = value - 1;\\n }\\n }\\n\\n function reset(Counter storage counter) internal {\\n counter._value = 0;\\n }\\n}\\n\",\"keccak256\":\"0xf0018c2440fbe238dd3a8732fa8e17a0f9dce84d31451dc8a32f6d62b349c9f1\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165 is IERC165 {\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165).interfaceId;\\n }\\n}\\n\",\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"src/dao/IDAO.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IDAO\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for DAOs within the Aragon App DAO framework.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IDAO {\\n /// @notice The action struct to be consumed by the DAO's `execute` function resulting in an external call.\\n /// @param to The address to call.\\n /// @param value The native token value to be sent with the call.\\n /// @param data The bytes-encoded function selector and calldata for the call.\\n struct Action {\\n address to;\\n uint256 value;\\n bytes data;\\n }\\n\\n /// @notice Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\\n /// @param _where The address of the contract.\\n /// @param _who The address of a EOA or contract to give the permissions.\\n /// @param _permissionId The permission identifier.\\n /// @param _data The optional data passed to the `PermissionCondition` registered.\\n /// @return Returns true if the address has permission, false if not.\\n function hasPermission(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes memory _data\\n ) external view returns (bool);\\n\\n /// @notice Updates the DAO metadata (e.g., an IPFS hash).\\n /// @param _metadata The IPFS hash of the new metadata object.\\n function setMetadata(bytes calldata _metadata) external;\\n\\n /// @notice Emitted when the DAO metadata is updated.\\n /// @param metadata The IPFS hash of the new metadata object.\\n event MetadataSet(bytes metadata);\\n\\n /// @notice Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted.\\n /// @param _callId The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce.\\n /// @param _actions The array of actions.\\n /// @param _allowFailureMap A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @return The array of results obtained from the executed actions in `bytes`.\\n /// @return The resulting failure map containing the actions have actually failed.\\n function execute(\\n bytes32 _callId,\\n Action[] memory _actions,\\n uint256 _allowFailureMap\\n ) external returns (bytes[] memory, uint256);\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param actor The address of the caller.\\n /// @param callId The ID of the call.\\n /// @param actions The array of actions executed.\\n /// @param allowFailureMap The allow failure map encoding which actions are allowed to fail.\\n /// @param failureMap The failure map encoding which actions have failed.\\n /// @param execResults The array with the results of the executed actions.\\n /// @dev The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce.\\n event Executed(\\n address indexed actor,\\n bytes32 callId,\\n Action[] actions,\\n uint256 allowFailureMap,\\n uint256 failureMap,\\n bytes[] execResults\\n );\\n\\n /// @notice Emitted when a standard callback is registered.\\n /// @param interfaceId The ID of the interface.\\n /// @param callbackSelector The selector of the callback function.\\n /// @param magicNumber The magic number to be registered for the callback function selector.\\n event StandardCallbackRegistered(\\n bytes4 interfaceId,\\n bytes4 callbackSelector,\\n bytes4 magicNumber\\n );\\n\\n /// @notice Deposits (native) tokens to the DAO contract with a reference string.\\n /// @param _token The address of the token or address(0) in case of the native token.\\n /// @param _amount The amount of tokens to deposit.\\n /// @param _reference The reference describing the deposit reason.\\n function deposit(address _token, uint256 _amount, string calldata _reference) external payable;\\n\\n /// @notice Emitted when a token deposit has been made to the DAO.\\n /// @param sender The address of the sender.\\n /// @param token The address of the deposited token.\\n /// @param amount The amount of tokens deposited.\\n /// @param _reference The reference describing the deposit reason.\\n event Deposited(\\n address indexed sender,\\n address indexed token,\\n uint256 amount,\\n string _reference\\n );\\n\\n /// @notice Emitted when a native token deposit has been made to the DAO.\\n /// @dev This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).\\n /// @param sender The address of the sender.\\n /// @param amount The amount of native tokens deposited.\\n event NativeTokenDeposited(address sender, uint256 amount);\\n\\n /// @notice Setter for the trusted forwarder verifying the meta transaction.\\n /// @param _trustedForwarder The trusted forwarder address.\\n function setTrustedForwarder(address _trustedForwarder) external;\\n\\n /// @notice Getter for the trusted forwarder verifying the meta transaction.\\n /// @return The trusted forwarder address.\\n function getTrustedForwarder() external view returns (address);\\n\\n /// @notice Emitted when a new TrustedForwarder is set on the DAO.\\n /// @param forwarder the new forwarder address.\\n event TrustedForwarderSet(address forwarder);\\n\\n /// @notice Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\\n /// @param _hash The hash of the data to be signed.\\n /// @param _signature The signature byte array associated with `_hash`.\\n /// @return Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not.\\n function isValidSignature(bytes32 _hash, bytes memory _signature) external returns (bytes4);\\n\\n /// @notice Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\\n /// @param _interfaceId The ID of the interface.\\n /// @param _callbackSelector The selector of the callback function.\\n /// @param _magicNumber The magic number to be registered for the function signature.\\n function registerStandardCallback(\\n bytes4 _interfaceId,\\n bytes4 _callbackSelector,\\n bytes4 _magicNumber\\n ) external;\\n\\n /// @notice Removed function being left here to not corrupt the IDAO interface ID. Any call will revert.\\n /// @dev Introduced in v1.0.0. Removed in v1.4.0.\\n function setSignatureValidator(address) external;\\n}\\n\",\"keccak256\":\"0xb7f615523c26de042edce98731c658f44a1edb2464387ac1b642c4c69f57128e\",\"license\":\"AGPL-3.0-or-later\"},\"src/mocks/plugin/extensions/proposal/ProposalMock.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {Proposal} from \\\"../../../../plugin/extensions/proposal/Proposal.sol\\\";\\nimport {IDAO} from \\\"../../../../dao/IDAO.sol\\\";\\n\\n/// @notice A mock contract containing functions to create and execute proposals.\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract ProposalMock is Proposal {\\n function createProposalId() external returns (uint256 proposalId) {\\n proposalId = _createProposalId();\\n }\\n\\n function createProposal(\\n address _creator,\\n bytes calldata _metadata,\\n uint64 _startDate,\\n uint64 _endDate,\\n IDAO.Action[] calldata _actions,\\n uint256 _allowFailureMap\\n ) external returns (uint256 proposalId) {\\n proposalId = _createProposal(\\n _creator,\\n _metadata,\\n _startDate,\\n _endDate,\\n _actions,\\n _allowFailureMap\\n );\\n }\\n\\n function executeProposal(\\n IDAO _dao,\\n uint256 _proposalId,\\n IDAO.Action[] memory _actions,\\n uint256 _allowFailureMap\\n ) external returns (bytes[] memory execResults, uint256 failureMap) {\\n (execResults, failureMap) = _executeProposal(_dao, _proposalId, _actions, _allowFailureMap);\\n }\\n}\\n\",\"keccak256\":\"0x7be72ca248e5d388d9fa1bc96955544d66c58defe7c626e533b32ad11ef86459\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/extensions/proposal/IProposal.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IDAO} from \\\"../../../dao/IDAO.sol\\\";\\n\\n/// @title IProposal\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface to be implemented by DAO plugins that create and execute proposals.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IProposal {\\n /// @notice Emitted when a proposal is created.\\n /// @param proposalId The ID of the proposal.\\n /// @param creator The creator of the proposal.\\n /// @param startDate The start date of the proposal in seconds.\\n /// @param endDate The end date of the proposal in seconds.\\n /// @param metadata The metadata of the proposal.\\n /// @param actions The actions that will be executed if the proposal passes.\\n /// @param allowFailureMap A bitmap allowing the proposal to succeed, even if individual actions might revert. If the bit at index `i` is 1, the proposal succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n event ProposalCreated(\\n uint256 indexed proposalId,\\n address indexed creator,\\n uint64 startDate,\\n uint64 endDate,\\n bytes metadata,\\n IDAO.Action[] actions,\\n uint256 allowFailureMap\\n );\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param proposalId The ID of the proposal.\\n event ProposalExecuted(uint256 indexed proposalId);\\n\\n /// @notice Returns the proposal count determining the next proposal ID.\\n /// @return The proposal count.\\n function proposalCount() external view returns (uint256);\\n}\\n\",\"keccak256\":\"0x06205453d6800f598d41848ba9ebf50919ffb773f3ba63247ddcfb2464358239\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/extensions/proposal/Proposal.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {Counters} from \\\"@openzeppelin/contracts/utils/Counters.sol\\\";\\nimport {ERC165} from \\\"@openzeppelin/contracts/utils/introspection/ERC165.sol\\\";\\n\\nimport {IDAO} from \\\"../../../dao/IDAO.sol\\\";\\nimport {IProposal} from \\\"./IProposal.sol\\\";\\n\\n/// @title Proposal\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract contract containing the traits and internal functionality to create and execute proposals that can be inherited by non-upgradeable DAO plugins.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract Proposal is IProposal, ERC165 {\\n using Counters for Counters.Counter;\\n\\n /// @notice The incremental ID for proposals and executions.\\n Counters.Counter private proposalCounter;\\n\\n /// @inheritdoc IProposal\\n function proposalCount() public view override returns (uint256) {\\n return proposalCounter.current();\\n }\\n\\n /// @notice Checks if this or the parent contract supports an interface by its ID.\\n /// @param _interfaceId The ID of the interface.\\n /// @return Returns `true` if the interface is supported.\\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\\n return _interfaceId == type(IProposal).interfaceId || super.supportsInterface(_interfaceId);\\n }\\n\\n /// @notice Creates a proposal ID.\\n /// @return proposalId The proposal ID.\\n function _createProposalId() internal returns (uint256 proposalId) {\\n proposalId = proposalCount();\\n proposalCounter.increment();\\n }\\n\\n /// @notice Internal function to create a proposal.\\n /// @param _metadata The proposal metadata.\\n /// @param _startDate The start date of the proposal in seconds.\\n /// @param _endDate The end date of the proposal in seconds.\\n /// @param _allowFailureMap A bitmap allowing the proposal to succeed, even if individual actions might revert. If the bit at index `i` is 1, the proposal succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @param _actions The actions that will be executed after the proposal passes.\\n /// @return proposalId The ID of the proposal.\\n function _createProposal(\\n address _creator,\\n bytes calldata _metadata,\\n uint64 _startDate,\\n uint64 _endDate,\\n IDAO.Action[] calldata _actions,\\n uint256 _allowFailureMap\\n ) internal virtual returns (uint256 proposalId) {\\n proposalId = _createProposalId();\\n\\n emit ProposalCreated({\\n proposalId: proposalId,\\n creator: _creator,\\n metadata: _metadata,\\n startDate: _startDate,\\n endDate: _endDate,\\n actions: _actions,\\n allowFailureMap: _allowFailureMap\\n });\\n }\\n\\n /// @notice Internal function to execute a proposal.\\n /// @param _proposalId The ID of the proposal to be executed.\\n /// @param _actions The array of actions to be executed.\\n /// @param _allowFailureMap A bitmap allowing the proposal to succeed, even if individual actions might revert. If the bit at index `i` is 1, the proposal succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @return execResults The array with the results of the executed actions.\\n /// @return failureMap The failure map encoding which actions have failed.\\n function _executeProposal(\\n IDAO _dao,\\n uint256 _proposalId,\\n IDAO.Action[] memory _actions,\\n uint256 _allowFailureMap\\n ) internal virtual returns (bytes[] memory execResults, uint256 failureMap) {\\n (execResults, failureMap) = _dao.execute(bytes32(_proposalId), _actions, _allowFailureMap);\\n emit ProposalExecuted({proposalId: _proposalId});\\n }\\n}\\n\",\"keccak256\":\"0xdd97adbd91ca0bdf56017e6a219f1d714ab686aeab22dc701ee82d913591458e\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[{"astId":13919,"contract":"src/mocks/plugin/extensions/proposal/ProposalMock.sol:ProposalMock","label":"proposalCounter","offset":0,"slot":"0","type":"t_struct(Counter)9300_storage"}],"types":{"t_struct(Counter)9300_storage":{"encoding":"inplace","label":"struct Counters.Counter","members":[{"astId":9299,"contract":"src/mocks/plugin/extensions/proposal/ProposalMock.sol:ProposalMock","label":"_value","offset":0,"slot":"0","type":"t_uint256"}],"numberOfBytes":"32"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"userdoc":{"events":{"ProposalCreated(uint256,address,uint64,uint64,bytes,(address,uint256,bytes)[],uint256)":{"notice":"Emitted when a proposal is created."},"ProposalExecuted(uint256)":{"notice":"Emitted when a proposal is executed."}},"kind":"user","methods":{"proposalCount()":{"notice":"Returns the proposal count determining the next proposal ID."},"supportsInterface(bytes4)":{"notice":"Checks if this or the parent contract supports an interface by its ID."}},"notice":"A mock contract containing functions to create and execute proposals.","version":1}}},"src/mocks/plugin/extensions/proposal/ProposalUpgradeableMock.sol":{"ProposalUpgradeableMock":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":true,"internalType":"address","name":"creator","type":"address"},{"indexed":false,"internalType":"uint64","name":"startDate","type":"uint64"},{"indexed":false,"internalType":"uint64","name":"endDate","type":"uint64"},{"indexed":false,"internalType":"bytes","name":"metadata","type":"bytes"},{"components":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"indexed":false,"internalType":"struct IDAO.Action[]","name":"actions","type":"tuple[]"},{"indexed":false,"internalType":"uint256","name":"allowFailureMap","type":"uint256"}],"name":"ProposalCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalExecuted","type":"event"},{"inputs":[{"internalType":"address","name":"_creator","type":"address"},{"internalType":"bytes","name":"_metadata","type":"bytes"},{"internalType":"uint64","name":"_startDate","type":"uint64"},{"internalType":"uint64","name":"_endDate","type":"uint64"},{"components":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct IDAO.Action[]","name":"_actions","type":"tuple[]"},{"internalType":"uint256","name":"_allowFailureMap","type":"uint256"}],"name":"createProposal","outputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"createProposalId","outputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IDAO","name":"_dao","type":"address"},{"internalType":"uint256","name":"_proposalId","type":"uint256"},{"components":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct IDAO.Action[]","name":"_actions","type":"tuple[]"},{"internalType":"uint256","name":"_allowFailureMap","type":"uint256"}],"name":"executeProposal","outputs":[{"internalType":"bytes[]","name":"execResults","type":"bytes[]"},{"internalType":"uint256","name":"failureMap","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"proposalCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"DO NOT USE IN PRODUCTION!","kind":"dev","methods":{"proposalCount()":{"returns":{"_0":"The proposal count."}},"supportsInterface(bytes4)":{"params":{"_interfaceId":"The ID of the interface."},"returns":{"_0":"Returns `true` if the interface is supported."}}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b506109ee806100206000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c806373e1166d1161005057806373e1166d146100b55780637b2bf56e146100d6578063da35c664146100de57600080fd5b806301ffc9a71461006c578063634a9a8814610094575b600080fd5b61007f61007a3660046102ac565b6100e6565b60405190151581526020015b60405180910390f35b6100a76100a23660046103b1565b61011d565b60405161008b929190610573565b6100c86100c3366004610645565b61013a565b60405190815260200161008b565b6100c8610159565b6100c8610168565b60006001600160e01b0319821663368d719960e21b148061011757506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600061012d86868686610173565b9097909650945050505050565b600061014c8989898989898989610229565b9998505050505050505050565b600061016361028f565b905090565b600061016360335490565b6040516331c6fcc960e21b81526060906000906001600160a01b0387169063c71bf324906101a99088908890889060040161071c565b6000604051808303816000875af11580156101c8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526101f091908101906107b4565b604051919350915085907f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f90600090a294509492505050565b600061023361028f565b9050886001600160a01b0316817fa6c1f8f4276dc3f243459e13b557c84e8f4e90b2e09070bad5f6909cee687c9288888c8c8a8a8a60405161027b97969594939291906108d1565b60405180910390a398975050505050505050565b6000610299610168565b90506102a9603380546001019055565b90565b6000602082840312156102be57600080fd5b81356001600160e01b0319811681146102d657600080fd5b9392505050565b6001600160a01b03811681146102f257600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171561032e5761032e6102f5565b60405290565b604051601f8201601f1916810167ffffffffffffffff8111828210171561035d5761035d6102f5565b604052919050565b600067ffffffffffffffff82111561037f5761037f6102f5565b5060051b60200190565b600067ffffffffffffffff8211156103a3576103a36102f5565b50601f01601f191660200190565b600080600080608085870312156103c757600080fd5b6103d185356102dd565b8435935060208501359250604085013567ffffffffffffffff808211156103f757600080fd5b818701915087601f83011261040b57600080fd5b61041d6104188335610365565b610334565b82358082526020808301929160051b8501018a81111561043c57600080fd5b602085015b8181101561050f57848135111561045757600080fd5b803586016060818e03601f1901121561046f57600080fd5b61047761030b565b6020820135610485816102dd565b8152604082013560208201526060820135878111156104a357600080fd5b8083019250508d603f8301126104b857600080fd5b60208201356104c961041882610389565b8181528f60408386010111156104de57600080fd5b8160408501602083013760006020838301015280604084015250508086525050602084019350602081019050610441565b50979a969950976060013596505050505050565b60005b8381101561053e578181015183820152602001610526565b50506000910152565b6000815180845261055f816020860160208601610523565b601f01601f19169290920160200192915050565b6000604082016040835280855180835260608501915060608160051b8601019250602080880160005b838110156105ca57605f198887030185526105b8868351610547565b9550938201939082019060010161059c565b50509490940194909452949350505050565b803567ffffffffffffffff811681146105f457600080fd5b919050565b60008083601f84011261060b57600080fd5b50813567ffffffffffffffff81111561062357600080fd5b6020830191508360208260051b850101111561063e57600080fd5b9250929050565b60008060008060008060008060c0898b03121561066157600080fd5b883561066c816102dd565b9750602089013567ffffffffffffffff8082111561068957600080fd5b818b0191508b601f83011261069d57600080fd5b8135818111156106ac57600080fd5b8c60208285010111156106be57600080fd5b60208301995097506106d260408c016105dc565b96506106e060608c016105dc565b955060808b01359150808211156106f657600080fd5b506107038b828c016105f9565b999c989b50969995989497949560a00135949350505050565b600060608083018684526020828186015281875180845260808701915060808160051b880101935082890160005b8281101561079d57888603607f19018452815180516001600160a01b03168752858101518688015260409081015190870188905261078a88880182610547565b965050928401929084019060010161074a565b505050505060409390930193909352509392505050565b60008060408084860312156107c857600080fd5b835167ffffffffffffffff808211156107e057600080fd5b818601915086601f8301126107f457600080fd5b8151602061080461041883610365565b82815260059290921b8401810191818101908a84111561082357600080fd5b8286015b848110156108945780518681111561083f5760008081fd5b8701603f81018d136108515760008081fd5b8481015161086161041882610389565b8181528e8b8385010111156108765760008081fd5b610885828883018d8601610523565b85525050918301918301610827565b509890910151979997985050505050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b600067ffffffffffffffff808a1683526020818a1681850152604060a08186015261090060a086018a8c6108a8565b606086820381880152818983528483019050848a60051b8401018b60005b8c8110156109c357858303601f190184528135368f9003605e1901811261094457600080fd5b8e018035610951816102dd565b6001600160a01b0316845280890135898501528781013536829003601e1901811261097b57600080fd5b0188810190358a81111561098e57600080fd5b80360382131561099d57600080fd5b86898601526109af87860182846108a8565b958a0195945050509087019060010161091e565b5050809750505050505050508260808301529897505050505050505056fea164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x9EE DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x67 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x73E1166D GT PUSH2 0x50 JUMPI DUP1 PUSH4 0x73E1166D EQ PUSH2 0xB5 JUMPI DUP1 PUSH4 0x7B2BF56E EQ PUSH2 0xD6 JUMPI DUP1 PUSH4 0xDA35C664 EQ PUSH2 0xDE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x6C JUMPI DUP1 PUSH4 0x634A9A88 EQ PUSH2 0x94 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7F PUSH2 0x7A CALLDATASIZE PUSH1 0x4 PUSH2 0x2AC JUMP JUMPDEST PUSH2 0xE6 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xA7 PUSH2 0xA2 CALLDATASIZE PUSH1 0x4 PUSH2 0x3B1 JUMP JUMPDEST PUSH2 0x11D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x8B SWAP3 SWAP2 SWAP1 PUSH2 0x573 JUMP JUMPDEST PUSH2 0xC8 PUSH2 0xC3 CALLDATASIZE PUSH1 0x4 PUSH2 0x645 JUMP JUMPDEST PUSH2 0x13A JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x8B JUMP JUMPDEST PUSH2 0xC8 PUSH2 0x159 JUMP JUMPDEST PUSH2 0xC8 PUSH2 0x168 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x368D7199 PUSH1 0xE2 SHL EQ DUP1 PUSH2 0x117 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x12D DUP7 DUP7 DUP7 DUP7 PUSH2 0x173 JUMP JUMPDEST SWAP1 SWAP8 SWAP1 SWAP7 POP SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x14C DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 PUSH2 0x229 JUMP JUMPDEST SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x163 PUSH2 0x28F JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x163 PUSH1 0x33 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x31C6FCC9 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x60 SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0xC71BF324 SWAP1 PUSH2 0x1A9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x71C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1C8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x1F0 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x7B4 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 SWAP4 POP SWAP2 POP DUP6 SWAP1 PUSH32 0x712AE1383F79AC853F8D882153778E0260EF8F03B504E2866E0593E04D2B291F SWAP1 PUSH1 0x0 SWAP1 LOG2 SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x233 PUSH2 0x28F JUMP JUMPDEST SWAP1 POP DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH32 0xA6C1F8F4276DC3F243459E13B557C84E8F4E90B2E09070BAD5F6909CEE687C92 DUP9 DUP9 DUP13 DUP13 DUP11 DUP11 DUP11 PUSH1 0x40 MLOAD PUSH2 0x27B SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x8D1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x299 PUSH2 0x168 JUMP JUMPDEST SWAP1 POP PUSH2 0x2A9 PUSH1 0x33 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x2D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x2F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x60 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x32E JUMPI PUSH2 0x32E PUSH2 0x2F5 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x35D JUMPI PUSH2 0x35D PUSH2 0x2F5 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x37F JUMPI PUSH2 0x37F PUSH2 0x2F5 JUMP JUMPDEST POP PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x3A3 JUMPI PUSH2 0x3A3 PUSH2 0x2F5 JUMP JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x3C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3D1 DUP6 CALLDATALOAD PUSH2 0x2DD JUMP JUMPDEST DUP5 CALLDATALOAD SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x3F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x40B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x41D PUSH2 0x418 DUP4 CALLDATALOAD PUSH2 0x365 JUMP JUMPDEST PUSH2 0x334 JUMP JUMPDEST DUP3 CALLDATALOAD DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP3 SWAP2 PUSH1 0x5 SHL DUP6 ADD ADD DUP11 DUP2 GT ISZERO PUSH2 0x43C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP6 ADD JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x50F JUMPI DUP5 DUP2 CALLDATALOAD GT ISZERO PUSH2 0x457 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD DUP7 ADD PUSH1 0x60 DUP2 DUP15 SUB PUSH1 0x1F NOT ADD SLT ISZERO PUSH2 0x46F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x477 PUSH2 0x30B JUMP JUMPDEST PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH2 0x485 DUP2 PUSH2 0x2DD JUMP JUMPDEST DUP2 MSTORE PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x60 DUP3 ADD CALLDATALOAD DUP8 DUP2 GT ISZERO PUSH2 0x4A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 DUP4 ADD SWAP3 POP POP DUP14 PUSH1 0x3F DUP4 ADD SLT PUSH2 0x4B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH2 0x4C9 PUSH2 0x418 DUP3 PUSH2 0x389 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP16 PUSH1 0x40 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0x4DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP4 DUP4 ADD ADD MSTORE DUP1 PUSH1 0x40 DUP5 ADD MSTORE POP POP DUP1 DUP7 MSTORE POP POP PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x441 JUMP JUMPDEST POP SWAP8 SWAP11 SWAP7 SWAP10 POP SWAP8 PUSH1 0x60 ADD CALLDATALOAD SWAP7 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x53E JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x526 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x55F DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x523 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD PUSH1 0x40 DUP4 MSTORE DUP1 DUP6 MLOAD DUP1 DUP4 MSTORE PUSH1 0x60 DUP6 ADD SWAP2 POP PUSH1 0x60 DUP2 PUSH1 0x5 SHL DUP7 ADD ADD SWAP3 POP PUSH1 0x20 DUP1 DUP9 ADD PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x5CA JUMPI PUSH1 0x5F NOT DUP9 DUP8 SUB ADD DUP6 MSTORE PUSH2 0x5B8 DUP7 DUP4 MLOAD PUSH2 0x547 JUMP JUMPDEST SWAP6 POP SWAP4 DUP3 ADD SWAP4 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x59C JUMP JUMPDEST POP POP SWAP5 SWAP1 SWAP5 ADD SWAP5 SWAP1 SWAP5 MSTORE SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x5F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x60B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x623 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 PUSH1 0x5 SHL DUP6 ADD ADD GT ISZERO PUSH2 0x63E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP10 DUP12 SUB SLT ISZERO PUSH2 0x661 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP9 CALLDATALOAD PUSH2 0x66C DUP2 PUSH2 0x2DD JUMP JUMPDEST SWAP8 POP PUSH1 0x20 DUP10 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x689 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP12 ADD SWAP2 POP DUP12 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x69D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x6AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP13 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x6BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP10 POP SWAP8 POP PUSH2 0x6D2 PUSH1 0x40 DUP13 ADD PUSH2 0x5DC JUMP JUMPDEST SWAP7 POP PUSH2 0x6E0 PUSH1 0x60 DUP13 ADD PUSH2 0x5DC JUMP JUMPDEST SWAP6 POP PUSH1 0x80 DUP12 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x6F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x703 DUP12 DUP3 DUP13 ADD PUSH2 0x5F9 JUMP JUMPDEST SWAP10 SWAP13 SWAP9 SWAP12 POP SWAP7 SWAP10 SWAP6 SWAP9 SWAP5 SWAP8 SWAP5 SWAP6 PUSH1 0xA0 ADD CALLDATALOAD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP1 DUP4 ADD DUP7 DUP5 MSTORE PUSH1 0x20 DUP3 DUP2 DUP7 ADD MSTORE DUP2 DUP8 MLOAD DUP1 DUP5 MSTORE PUSH1 0x80 DUP8 ADD SWAP2 POP PUSH1 0x80 DUP2 PUSH1 0x5 SHL DUP9 ADD ADD SWAP4 POP DUP3 DUP10 ADD PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x79D JUMPI DUP9 DUP7 SUB PUSH1 0x7F NOT ADD DUP5 MSTORE DUP2 MLOAD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 MSTORE DUP6 DUP2 ADD MLOAD DUP7 DUP9 ADD MSTORE PUSH1 0x40 SWAP1 DUP2 ADD MLOAD SWAP1 DUP8 ADD DUP9 SWAP1 MSTORE PUSH2 0x78A DUP9 DUP9 ADD DUP3 PUSH2 0x547 JUMP JUMPDEST SWAP7 POP POP SWAP3 DUP5 ADD SWAP3 SWAP1 DUP5 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x74A JUMP JUMPDEST POP POP POP POP POP PUSH1 0x40 SWAP4 SWAP1 SWAP4 ADD SWAP4 SWAP1 SWAP4 MSTORE POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP1 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x7C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x7E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP7 ADD SWAP2 POP DUP7 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x7F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x20 PUSH2 0x804 PUSH2 0x418 DUP4 PUSH2 0x365 JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH1 0x5 SWAP3 SWAP1 SWAP3 SHL DUP5 ADD DUP2 ADD SWAP2 DUP2 DUP2 ADD SWAP1 DUP11 DUP5 GT ISZERO PUSH2 0x823 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 DUP7 ADD JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x894 JUMPI DUP1 MLOAD DUP7 DUP2 GT ISZERO PUSH2 0x83F JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST DUP8 ADD PUSH1 0x3F DUP2 ADD DUP14 SGT PUSH2 0x851 JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST DUP5 DUP2 ADD MLOAD PUSH2 0x861 PUSH2 0x418 DUP3 PUSH2 0x389 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP15 DUP12 DUP4 DUP6 ADD ADD GT ISZERO PUSH2 0x876 JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST PUSH2 0x885 DUP3 DUP9 DUP4 ADD DUP14 DUP7 ADD PUSH2 0x523 JUMP JUMPDEST DUP6 MSTORE POP POP SWAP2 DUP4 ADD SWAP2 DUP4 ADD PUSH2 0x827 JUMP JUMPDEST POP SWAP9 SWAP1 SWAP2 ADD MLOAD SWAP8 SWAP10 SWAP8 SWAP9 POP POP POP POP POP POP POP POP JUMP JUMPDEST DUP2 DUP4 MSTORE DUP2 DUP2 PUSH1 0x20 DUP6 ADD CALLDATACOPY POP PUSH1 0x0 DUP3 DUP3 ADD PUSH1 0x20 SWAP1 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1F SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND SWAP1 SWAP2 ADD ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP11 AND DUP4 MSTORE PUSH1 0x20 DUP2 DUP11 AND DUP2 DUP6 ADD MSTORE PUSH1 0x40 PUSH1 0xA0 DUP2 DUP7 ADD MSTORE PUSH2 0x900 PUSH1 0xA0 DUP7 ADD DUP11 DUP13 PUSH2 0x8A8 JUMP JUMPDEST PUSH1 0x60 DUP7 DUP3 SUB DUP2 DUP9 ADD MSTORE DUP2 DUP10 DUP4 MSTORE DUP5 DUP4 ADD SWAP1 POP DUP5 DUP11 PUSH1 0x5 SHL DUP5 ADD ADD DUP12 PUSH1 0x0 JUMPDEST DUP13 DUP2 LT ISZERO PUSH2 0x9C3 JUMPI DUP6 DUP4 SUB PUSH1 0x1F NOT ADD DUP5 MSTORE DUP2 CALLDATALOAD CALLDATASIZE DUP16 SWAP1 SUB PUSH1 0x5E NOT ADD DUP2 SLT PUSH2 0x944 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP15 ADD DUP1 CALLDATALOAD PUSH2 0x951 DUP2 PUSH2 0x2DD JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 MSTORE DUP1 DUP10 ADD CALLDATALOAD DUP10 DUP6 ADD MSTORE DUP8 DUP2 ADD CALLDATALOAD CALLDATASIZE DUP3 SWAP1 SUB PUSH1 0x1E NOT ADD DUP2 SLT PUSH2 0x97B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST ADD DUP9 DUP2 ADD SWAP1 CALLDATALOAD DUP11 DUP2 GT ISZERO PUSH2 0x98E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATASIZE SUB DUP3 SGT ISZERO PUSH2 0x99D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 DUP10 DUP7 ADD MSTORE PUSH2 0x9AF DUP8 DUP7 ADD DUP3 DUP5 PUSH2 0x8A8 JUMP JUMPDEST SWAP6 DUP11 ADD SWAP6 SWAP5 POP POP POP SWAP1 DUP8 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x91E JUMP JUMPDEST POP POP DUP1 SWAP8 POP POP POP POP POP POP POP POP DUP3 PUSH1 0x80 DUP4 ADD MSTORE SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"425:970:57:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_createProposalId_14120":{"entryPoint":655,"id":14120,"parameterSlots":0,"returnSlots":1},"@_createProposal_14156":{"entryPoint":553,"id":14156,"parameterSlots":8,"returnSlots":1},"@_executeProposal_14195":{"entryPoint":371,"id":14195,"parameterSlots":4,"returnSlots":2},"@createProposalId_12564":{"entryPoint":345,"id":12564,"parameterSlots":0,"returnSlots":1},"@createProposal_12595":{"entryPoint":314,"id":12595,"parameterSlots":8,"returnSlots":1},"@current_2611":{"entryPoint":null,"id":2611,"parameterSlots":1,"returnSlots":1},"@executeProposal_12626":{"entryPoint":285,"id":12626,"parameterSlots":4,"returnSlots":2},"@increment_2625":{"entryPoint":null,"id":2625,"parameterSlots":1,"returnSlots":0},"@proposalCount_14081":{"entryPoint":360,"id":14081,"parameterSlots":0,"returnSlots":1},"@supportsInterface_14103":{"entryPoint":230,"id":14103,"parameterSlots":1,"returnSlots":1},"@supportsInterface_2816":{"entryPoint":null,"id":2816,"parameterSlots":1,"returnSlots":1},"abi_decode_array_struct_Action_calldata_dyn_calldata":{"entryPoint":1529,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_bytes_calldata_ptrt_uint64t_uint64t_array$_t_struct$_Action_$10724_calldata_ptr_$dyn_calldata_ptrt_uint256":{"entryPoint":1605,"id":null,"parameterSlots":2,"returnSlots":8},"abi_decode_tuple_t_array$_t_bytes_memory_ptr_$dyn_memory_ptrt_uint256_fromMemory":{"entryPoint":1972,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_bytes4":{"entryPoint":684,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_contract$_IDAO_$10865t_uint256t_array$_t_struct$_Action_$10724_memory_ptr_$dyn_memory_ptrt_uint256":{"entryPoint":945,"id":null,"parameterSlots":2,"returnSlots":4},"abi_decode_uint64":{"entryPoint":1500,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_bytes":{"entryPoint":1351,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_bytes_calldata":{"entryPoint":2216,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_t_uint256__to_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_t_uint256__fromStack_reversed":{"entryPoint":1395,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bytes32_t_array$_t_struct$_Action_$10724_memory_ptr_$dyn_memory_ptr_t_uint256__to_t_bytes32_t_array$_t_struct$_Action_$10724_memory_ptr_$dyn_memory_ptr_t_uint256__fromStack_reversed":{"entryPoint":1820,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_uint64_t_uint64_t_bytes_calldata_ptr_t_array$_t_struct$_Action_$10724_calldata_ptr_$dyn_calldata_ptr_t_uint256__to_t_uint64_t_uint64_t_bytes_memory_ptr_t_array$_t_struct$_Action_$10724_memory_ptr_$dyn_memory_ptr_t_uint256__fromStack_reversed":{"entryPoint":2257,"id":null,"parameterSlots":8,"returnSlots":1},"allocate_memory":{"entryPoint":820,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_memory_2869":{"entryPoint":779,"id":null,"parameterSlots":0,"returnSlots":1},"array_allocation_size_array_struct_Action_dyn":{"entryPoint":869,"id":null,"parameterSlots":1,"returnSlots":1},"array_allocation_size_bytes":{"entryPoint":905,"id":null,"parameterSlots":1,"returnSlots":1},"copy_memory_to_memory_with_cleanup":{"entryPoint":1315,"id":null,"parameterSlots":3,"returnSlots":0},"panic_error_0x41":{"entryPoint":757,"id":null,"parameterSlots":0,"returnSlots":0},"validator_revert_contract_IDAO":{"entryPoint":733,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:12924:92","statements":[{"nodeType":"YulBlock","src":"6:3:92","statements":[]},{"body":{"nodeType":"YulBlock","src":"83:217:92","statements":[{"body":{"nodeType":"YulBlock","src":"129:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"138:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"141:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"131:6:92"},"nodeType":"YulFunctionCall","src":"131:12:92"},"nodeType":"YulExpressionStatement","src":"131:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"104:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"113:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"100:3:92"},"nodeType":"YulFunctionCall","src":"100:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"125:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"96:3:92"},"nodeType":"YulFunctionCall","src":"96:32:92"},"nodeType":"YulIf","src":"93:52:92"},{"nodeType":"YulVariableDeclaration","src":"154:36:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"180:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"167:12:92"},"nodeType":"YulFunctionCall","src":"167:23:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"158:5:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"254:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"263:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"266:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"256:6:92"},"nodeType":"YulFunctionCall","src":"256:12:92"},"nodeType":"YulExpressionStatement","src":"256:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"212:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"223:5:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"234:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"239:10:92","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"230:3:92"},"nodeType":"YulFunctionCall","src":"230:20:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"219:3:92"},"nodeType":"YulFunctionCall","src":"219:32:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"209:2:92"},"nodeType":"YulFunctionCall","src":"209:43:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"202:6:92"},"nodeType":"YulFunctionCall","src":"202:51:92"},"nodeType":"YulIf","src":"199:71:92"},{"nodeType":"YulAssignment","src":"279:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"289:5:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"279:6:92"}]}]},"name":"abi_decode_tuple_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"49:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"60:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"72:6:92","type":""}],"src":"14:286:92"},{"body":{"nodeType":"YulBlock","src":"400:92:92","statements":[{"nodeType":"YulAssignment","src":"410:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"422:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"433:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"418:3:92"},"nodeType":"YulFunctionCall","src":"418:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"410:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"452:9:92"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"477:6:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"470:6:92"},"nodeType":"YulFunctionCall","src":"470:14:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"463:6:92"},"nodeType":"YulFunctionCall","src":"463:22:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"445:6:92"},"nodeType":"YulFunctionCall","src":"445:41:92"},"nodeType":"YulExpressionStatement","src":"445:41:92"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"369:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"380:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"391:4:92","type":""}],"src":"305:187:92"},{"body":{"nodeType":"YulBlock","src":"548:109:92","statements":[{"body":{"nodeType":"YulBlock","src":"635:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"644:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"647:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"637:6:92"},"nodeType":"YulFunctionCall","src":"637:12:92"},"nodeType":"YulExpressionStatement","src":"637:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"571:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"582:5:92"},{"kind":"number","nodeType":"YulLiteral","src":"589:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"578:3:92"},"nodeType":"YulFunctionCall","src":"578:54:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"568:2:92"},"nodeType":"YulFunctionCall","src":"568:65:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"561:6:92"},"nodeType":"YulFunctionCall","src":"561:73:92"},"nodeType":"YulIf","src":"558:93:92"}]},"name":"validator_revert_contract_IDAO","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"537:5:92","type":""}],"src":"497:160:92"},{"body":{"nodeType":"YulBlock","src":"694:95:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"711:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"718:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"723:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"714:3:92"},"nodeType":"YulFunctionCall","src":"714:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"704:6:92"},"nodeType":"YulFunctionCall","src":"704:31:92"},"nodeType":"YulExpressionStatement","src":"704:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"751:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"754:4:92","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"744:6:92"},"nodeType":"YulFunctionCall","src":"744:15:92"},"nodeType":"YulExpressionStatement","src":"744:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"775:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"778:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"768:6:92"},"nodeType":"YulFunctionCall","src":"768:15:92"},"nodeType":"YulExpressionStatement","src":"768:15:92"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"662:127:92"},{"body":{"nodeType":"YulBlock","src":"840:207:92","statements":[{"nodeType":"YulAssignment","src":"850:19:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"866:2:92","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"860:5:92"},"nodeType":"YulFunctionCall","src":"860:9:92"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"850:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"878:35:92","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"900:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"908:4:92","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"896:3:92"},"nodeType":"YulFunctionCall","src":"896:17:92"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"882:10:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"988:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"990:16:92"},"nodeType":"YulFunctionCall","src":"990:18:92"},"nodeType":"YulExpressionStatement","src":"990:18:92"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"931:10:92"},{"kind":"number","nodeType":"YulLiteral","src":"943:18:92","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"928:2:92"},"nodeType":"YulFunctionCall","src":"928:34:92"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"967:10:92"},{"name":"memPtr","nodeType":"YulIdentifier","src":"979:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"964:2:92"},"nodeType":"YulFunctionCall","src":"964:22:92"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"925:2:92"},"nodeType":"YulFunctionCall","src":"925:62:92"},"nodeType":"YulIf","src":"922:88:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1026:2:92","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"1030:10:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1019:6:92"},"nodeType":"YulFunctionCall","src":"1019:22:92"},"nodeType":"YulExpressionStatement","src":"1019:22:92"}]},"name":"allocate_memory_2869","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"829:6:92","type":""}],"src":"794:253:92"},{"body":{"nodeType":"YulBlock","src":"1097:230:92","statements":[{"nodeType":"YulAssignment","src":"1107:19:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1123:2:92","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1117:5:92"},"nodeType":"YulFunctionCall","src":"1117:9:92"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1107:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"1135:58:92","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1157:6:92"},{"arguments":[{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"1173:4:92"},{"kind":"number","nodeType":"YulLiteral","src":"1179:2:92","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1169:3:92"},"nodeType":"YulFunctionCall","src":"1169:13:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1188:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"1184:3:92"},"nodeType":"YulFunctionCall","src":"1184:7:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1165:3:92"},"nodeType":"YulFunctionCall","src":"1165:27:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1153:3:92"},"nodeType":"YulFunctionCall","src":"1153:40:92"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"1139:10:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"1268:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"1270:16:92"},"nodeType":"YulFunctionCall","src":"1270:18:92"},"nodeType":"YulExpressionStatement","src":"1270:18:92"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"1211:10:92"},{"kind":"number","nodeType":"YulLiteral","src":"1223:18:92","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1208:2:92"},"nodeType":"YulFunctionCall","src":"1208:34:92"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"1247:10:92"},{"name":"memPtr","nodeType":"YulIdentifier","src":"1259:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"1244:2:92"},"nodeType":"YulFunctionCall","src":"1244:22:92"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"1205:2:92"},"nodeType":"YulFunctionCall","src":"1205:62:92"},"nodeType":"YulIf","src":"1202:88:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1306:2:92","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"1310:10:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1299:6:92"},"nodeType":"YulFunctionCall","src":"1299:22:92"},"nodeType":"YulExpressionStatement","src":"1299:22:92"}]},"name":"allocate_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"size","nodeType":"YulTypedName","src":"1077:4:92","type":""}],"returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"1086:6:92","type":""}],"src":"1052:275:92"},{"body":{"nodeType":"YulBlock","src":"1407:114:92","statements":[{"body":{"nodeType":"YulBlock","src":"1451:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"1453:16:92"},"nodeType":"YulFunctionCall","src":"1453:18:92"},"nodeType":"YulExpressionStatement","src":"1453:18:92"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"1423:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"1431:18:92","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1420:2:92"},"nodeType":"YulFunctionCall","src":"1420:30:92"},"nodeType":"YulIf","src":"1417:56:92"},{"nodeType":"YulAssignment","src":"1482:33:92","value":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1498:1:92","type":"","value":"5"},{"name":"length","nodeType":"YulIdentifier","src":"1501:6:92"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1494:3:92"},"nodeType":"YulFunctionCall","src":"1494:14:92"},{"kind":"number","nodeType":"YulLiteral","src":"1510:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1490:3:92"},"nodeType":"YulFunctionCall","src":"1490:25:92"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"1482:4:92"}]}]},"name":"array_allocation_size_array_struct_Action_dyn","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nodeType":"YulTypedName","src":"1387:6:92","type":""}],"returnVariables":[{"name":"size","nodeType":"YulTypedName","src":"1398:4:92","type":""}],"src":"1332:189:92"},{"body":{"nodeType":"YulBlock","src":"1583:129:92","statements":[{"body":{"nodeType":"YulBlock","src":"1627:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"1629:16:92"},"nodeType":"YulFunctionCall","src":"1629:18:92"},"nodeType":"YulExpressionStatement","src":"1629:18:92"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"1599:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"1607:18:92","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1596:2:92"},"nodeType":"YulFunctionCall","src":"1596:30:92"},"nodeType":"YulIf","src":"1593:56:92"},{"nodeType":"YulAssignment","src":"1658:48:92","value":{"arguments":[{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"1678:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"1686:2:92","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1674:3:92"},"nodeType":"YulFunctionCall","src":"1674:15:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1695:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"1691:3:92"},"nodeType":"YulFunctionCall","src":"1691:7:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1670:3:92"},"nodeType":"YulFunctionCall","src":"1670:29:92"},{"kind":"number","nodeType":"YulLiteral","src":"1701:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1666:3:92"},"nodeType":"YulFunctionCall","src":"1666:40:92"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"1658:4:92"}]}]},"name":"array_allocation_size_bytes","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nodeType":"YulTypedName","src":"1563:6:92","type":""}],"returnVariables":[{"name":"size","nodeType":"YulTypedName","src":"1574:4:92","type":""}],"src":"1526:186:92"},{"body":{"nodeType":"YulBlock","src":"1902:2024:92","statements":[{"body":{"nodeType":"YulBlock","src":"1949:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1958:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1961:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1951:6:92"},"nodeType":"YulFunctionCall","src":"1951:12:92"},"nodeType":"YulExpressionStatement","src":"1951:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1923:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"1932:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1919:3:92"},"nodeType":"YulFunctionCall","src":"1919:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"1944:3:92","type":"","value":"128"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1915:3:92"},"nodeType":"YulFunctionCall","src":"1915:33:92"},"nodeType":"YulIf","src":"1912:53:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2018:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2005:12:92"},"nodeType":"YulFunctionCall","src":"2005:23:92"}],"functionName":{"name":"validator_revert_contract_IDAO","nodeType":"YulIdentifier","src":"1974:30:92"},"nodeType":"YulFunctionCall","src":"1974:55:92"},"nodeType":"YulExpressionStatement","src":"1974:55:92"},{"nodeType":"YulAssignment","src":"2038:33:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2061:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2048:12:92"},"nodeType":"YulFunctionCall","src":"2048:23:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2038:6:92"}]},{"nodeType":"YulAssignment","src":"2080:42:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2107:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2118:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2103:3:92"},"nodeType":"YulFunctionCall","src":"2103:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2090:12:92"},"nodeType":"YulFunctionCall","src":"2090:32:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"2080:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"2131:46:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2162:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2173:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2158:3:92"},"nodeType":"YulFunctionCall","src":"2158:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2145:12:92"},"nodeType":"YulFunctionCall","src":"2145:32:92"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"2135:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2186:28:92","value":{"kind":"number","nodeType":"YulLiteral","src":"2196:18:92","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"2190:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"2241:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2250:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2253:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2243:6:92"},"nodeType":"YulFunctionCall","src":"2243:12:92"},"nodeType":"YulExpressionStatement","src":"2243:12:92"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"2229:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"2237:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2226:2:92"},"nodeType":"YulFunctionCall","src":"2226:14:92"},"nodeType":"YulIf","src":"2223:34:92"},{"nodeType":"YulVariableDeclaration","src":"2266:32:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2280:9:92"},{"name":"offset","nodeType":"YulIdentifier","src":"2291:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2276:3:92"},"nodeType":"YulFunctionCall","src":"2276:22:92"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"2270:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"2346:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2355:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2358:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2348:6:92"},"nodeType":"YulFunctionCall","src":"2348:12:92"},"nodeType":"YulExpressionStatement","src":"2348:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"2325:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"2329:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2321:3:92"},"nodeType":"YulFunctionCall","src":"2321:13:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2336:7:92"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2317:3:92"},"nodeType":"YulFunctionCall","src":"2317:27:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2310:6:92"},"nodeType":"YulFunctionCall","src":"2310:35:92"},"nodeType":"YulIf","src":"2307:55:92"},{"nodeType":"YulVariableDeclaration","src":"2371:91:92","value":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"2457:2:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2444:12:92"},"nodeType":"YulFunctionCall","src":"2444:16:92"}],"functionName":{"name":"array_allocation_size_array_struct_Action_dyn","nodeType":"YulIdentifier","src":"2398:45:92"},"nodeType":"YulFunctionCall","src":"2398:63:92"}],"functionName":{"name":"allocate_memory","nodeType":"YulIdentifier","src":"2382:15:92"},"nodeType":"YulFunctionCall","src":"2382:80:92"},"variables":[{"name":"dst","nodeType":"YulTypedName","src":"2375:3:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2471:16:92","value":{"name":"dst","nodeType":"YulIdentifier","src":"2484:3:92"},"variables":[{"name":"dst_1","nodeType":"YulTypedName","src":"2475:5:92","type":""}]},{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"2503:3:92"},{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"2521:2:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2508:12:92"},"nodeType":"YulFunctionCall","src":"2508:16:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2496:6:92"},"nodeType":"YulFunctionCall","src":"2496:29:92"},"nodeType":"YulExpressionStatement","src":"2496:29:92"},{"nodeType":"YulAssignment","src":"2534:19:92","value":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"2545:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"2550:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2541:3:92"},"nodeType":"YulFunctionCall","src":"2541:12:92"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"2534:3:92"}]},{"nodeType":"YulVariableDeclaration","src":"2562:56:92","value":{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"2584:2:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2592:1:92","type":"","value":"5"},{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"2608:2:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2595:12:92"},"nodeType":"YulFunctionCall","src":"2595:16:92"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2588:3:92"},"nodeType":"YulFunctionCall","src":"2588:24:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2580:3:92"},"nodeType":"YulFunctionCall","src":"2580:33:92"},{"kind":"number","nodeType":"YulLiteral","src":"2615:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2576:3:92"},"nodeType":"YulFunctionCall","src":"2576:42:92"},"variables":[{"name":"srcEnd","nodeType":"YulTypedName","src":"2566:6:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"2650:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2659:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2662:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2652:6:92"},"nodeType":"YulFunctionCall","src":"2652:12:92"},"nodeType":"YulExpressionStatement","src":"2652:12:92"}]},"condition":{"arguments":[{"name":"srcEnd","nodeType":"YulIdentifier","src":"2633:6:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2641:7:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2630:2:92"},"nodeType":"YulFunctionCall","src":"2630:19:92"},"nodeType":"YulIf","src":"2627:39:92"},{"nodeType":"YulVariableDeclaration","src":"2675:22:92","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"2690:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"2694:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2686:3:92"},"nodeType":"YulFunctionCall","src":"2686:11:92"},"variables":[{"name":"src","nodeType":"YulTypedName","src":"2679:3:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"2762:1081:92","statements":[{"body":{"nodeType":"YulBlock","src":"2805:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2814:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2817:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2807:6:92"},"nodeType":"YulFunctionCall","src":"2807:12:92"},"nodeType":"YulExpressionStatement","src":"2807:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"2795:3:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2782:12:92"},"nodeType":"YulFunctionCall","src":"2782:17:92"},{"name":"_1","nodeType":"YulIdentifier","src":"2801:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2779:2:92"},"nodeType":"YulFunctionCall","src":"2779:25:92"},"nodeType":"YulIf","src":"2776:45:92"},{"nodeType":"YulVariableDeclaration","src":"2834:36:92","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"2848:2:92"},{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"2865:3:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2852:12:92"},"nodeType":"YulFunctionCall","src":"2852:17:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2844:3:92"},"nodeType":"YulFunctionCall","src":"2844:26:92"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"2838:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"2928:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2937:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2940:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2930:6:92"},"nodeType":"YulFunctionCall","src":"2930:12:92"},"nodeType":"YulExpressionStatement","src":"2930:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2898:7:92"},{"name":"_3","nodeType":"YulIdentifier","src":"2907:2:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2894:3:92"},"nodeType":"YulFunctionCall","src":"2894:16:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2916:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"2912:3:92"},"nodeType":"YulFunctionCall","src":"2912:7:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2890:3:92"},"nodeType":"YulFunctionCall","src":"2890:30:92"},{"kind":"number","nodeType":"YulLiteral","src":"2922:4:92","type":"","value":"0x60"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2886:3:92"},"nodeType":"YulFunctionCall","src":"2886:41:92"},"nodeType":"YulIf","src":"2883:61:92"},{"nodeType":"YulVariableDeclaration","src":"2957:35:92","value":{"arguments":[],"functionName":{"name":"allocate_memory_2869","nodeType":"YulIdentifier","src":"2970:20:92"},"nodeType":"YulFunctionCall","src":"2970:22:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"2961:5:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3005:40:92","value":{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"3037:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"3041:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3033:3:92"},"nodeType":"YulFunctionCall","src":"3033:11:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3020:12:92"},"nodeType":"YulFunctionCall","src":"3020:25:92"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"3009:7:92","type":""}]},{"expression":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"3089:7:92"}],"functionName":{"name":"validator_revert_contract_IDAO","nodeType":"YulIdentifier","src":"3058:30:92"},"nodeType":"YulFunctionCall","src":"3058:39:92"},"nodeType":"YulExpressionStatement","src":"3058:39:92"},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3117:5:92"},{"name":"value_1","nodeType":"YulIdentifier","src":"3124:7:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3110:6:92"},"nodeType":"YulFunctionCall","src":"3110:22:92"},"nodeType":"YulExpressionStatement","src":"3110:22:92"},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3156:5:92"},{"kind":"number","nodeType":"YulLiteral","src":"3163:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3152:3:92"},"nodeType":"YulFunctionCall","src":"3152:14:92"},{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"3185:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"3189:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3181:3:92"},"nodeType":"YulFunctionCall","src":"3181:11:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3168:12:92"},"nodeType":"YulFunctionCall","src":"3168:25:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3145:6:92"},"nodeType":"YulFunctionCall","src":"3145:49:92"},"nodeType":"YulExpressionStatement","src":"3145:49:92"},{"nodeType":"YulVariableDeclaration","src":"3207:43:92","value":{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"3240:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"3244:4:92","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3236:3:92"},"nodeType":"YulFunctionCall","src":"3236:13:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3223:12:92"},"nodeType":"YulFunctionCall","src":"3223:27:92"},"variables":[{"name":"offset_1","nodeType":"YulTypedName","src":"3211:8:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"3283:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3292:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3295:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3285:6:92"},"nodeType":"YulFunctionCall","src":"3285:12:92"},"nodeType":"YulExpressionStatement","src":"3285:12:92"}]},"condition":{"arguments":[{"name":"offset_1","nodeType":"YulIdentifier","src":"3269:8:92"},{"name":"_1","nodeType":"YulIdentifier","src":"3279:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3266:2:92"},"nodeType":"YulFunctionCall","src":"3266:16:92"},"nodeType":"YulIf","src":"3263:36:92"},{"nodeType":"YulVariableDeclaration","src":"3312:27:92","value":{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"3326:2:92"},{"name":"offset_1","nodeType":"YulIdentifier","src":"3330:8:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3322:3:92"},"nodeType":"YulFunctionCall","src":"3322:17:92"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"3316:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"3389:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3398:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3401:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3391:6:92"},"nodeType":"YulFunctionCall","src":"3391:12:92"},"nodeType":"YulExpressionStatement","src":"3391:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_4","nodeType":"YulIdentifier","src":"3370:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"3374:2:92","type":"","value":"63"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3366:3:92"},"nodeType":"YulFunctionCall","src":"3366:11:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3379:7:92"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3362:3:92"},"nodeType":"YulFunctionCall","src":"3362:25:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3355:6:92"},"nodeType":"YulFunctionCall","src":"3355:33:92"},"nodeType":"YulIf","src":"3352:53:92"},{"nodeType":"YulVariableDeclaration","src":"3418:35:92","value":{"arguments":[{"arguments":[{"name":"_4","nodeType":"YulIdentifier","src":"3445:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"3449:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3441:3:92"},"nodeType":"YulFunctionCall","src":"3441:11:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3428:12:92"},"nodeType":"YulFunctionCall","src":"3428:25:92"},"variables":[{"name":"_5","nodeType":"YulTypedName","src":"3422:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3466:61:92","value":{"arguments":[{"arguments":[{"name":"_5","nodeType":"YulIdentifier","src":"3523:2:92"}],"functionName":{"name":"array_allocation_size_bytes","nodeType":"YulIdentifier","src":"3495:27:92"},"nodeType":"YulFunctionCall","src":"3495:31:92"}],"functionName":{"name":"allocate_memory","nodeType":"YulIdentifier","src":"3479:15:92"},"nodeType":"YulFunctionCall","src":"3479:48:92"},"variables":[{"name":"array","nodeType":"YulTypedName","src":"3470:5:92","type":""}]},{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"3547:5:92"},{"name":"_5","nodeType":"YulIdentifier","src":"3554:2:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3540:6:92"},"nodeType":"YulFunctionCall","src":"3540:17:92"},"nodeType":"YulExpressionStatement","src":"3540:17:92"},{"body":{"nodeType":"YulBlock","src":"3607:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3616:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3619:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3609:6:92"},"nodeType":"YulFunctionCall","src":"3609:12:92"},"nodeType":"YulExpressionStatement","src":"3609:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_4","nodeType":"YulIdentifier","src":"3584:2:92"},{"name":"_5","nodeType":"YulIdentifier","src":"3588:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3580:3:92"},"nodeType":"YulFunctionCall","src":"3580:11:92"},{"kind":"number","nodeType":"YulLiteral","src":"3593:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3576:3:92"},"nodeType":"YulFunctionCall","src":"3576:20:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3598:7:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3573:2:92"},"nodeType":"YulFunctionCall","src":"3573:33:92"},"nodeType":"YulIf","src":"3570:53:92"},{"expression":{"arguments":[{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"3653:5:92"},{"kind":"number","nodeType":"YulLiteral","src":"3660:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3649:3:92"},"nodeType":"YulFunctionCall","src":"3649:14:92"},{"arguments":[{"name":"_4","nodeType":"YulIdentifier","src":"3669:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"3673:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3665:3:92"},"nodeType":"YulFunctionCall","src":"3665:11:92"},{"name":"_5","nodeType":"YulIdentifier","src":"3678:2:92"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"3636:12:92"},"nodeType":"YulFunctionCall","src":"3636:45:92"},"nodeType":"YulExpressionStatement","src":"3636:45:92"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"3709:5:92"},{"name":"_5","nodeType":"YulIdentifier","src":"3716:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3705:3:92"},"nodeType":"YulFunctionCall","src":"3705:14:92"},{"kind":"number","nodeType":"YulLiteral","src":"3721:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3701:3:92"},"nodeType":"YulFunctionCall","src":"3701:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"3726:1:92","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3694:6:92"},"nodeType":"YulFunctionCall","src":"3694:34:92"},"nodeType":"YulExpressionStatement","src":"3694:34:92"},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3752:5:92"},{"kind":"number","nodeType":"YulLiteral","src":"3759:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3748:3:92"},"nodeType":"YulFunctionCall","src":"3748:14:92"},{"name":"array","nodeType":"YulIdentifier","src":"3764:5:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3741:6:92"},"nodeType":"YulFunctionCall","src":"3741:29:92"},"nodeType":"YulExpressionStatement","src":"3741:29:92"},{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"3790:3:92"},{"name":"value","nodeType":"YulIdentifier","src":"3795:5:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3783:6:92"},"nodeType":"YulFunctionCall","src":"3783:18:92"},"nodeType":"YulExpressionStatement","src":"3783:18:92"},{"nodeType":"YulAssignment","src":"3814:19:92","value":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"3825:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"3830:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3821:3:92"},"nodeType":"YulFunctionCall","src":"3821:12:92"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"3814:3:92"}]}]},"condition":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"2717:3:92"},{"name":"srcEnd","nodeType":"YulIdentifier","src":"2722:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2714:2:92"},"nodeType":"YulFunctionCall","src":"2714:15:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"2730:23:92","statements":[{"nodeType":"YulAssignment","src":"2732:19:92","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"2743:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"2748:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2739:3:92"},"nodeType":"YulFunctionCall","src":"2739:12:92"},"variableNames":[{"name":"src","nodeType":"YulIdentifier","src":"2732:3:92"}]}]},"pre":{"nodeType":"YulBlock","src":"2710:3:92","statements":[]},"src":"2706:1137:92"},{"nodeType":"YulAssignment","src":"3852:15:92","value":{"name":"dst_1","nodeType":"YulIdentifier","src":"3862:5:92"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"3852:6:92"}]},{"nodeType":"YulAssignment","src":"3876:44:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3903:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3914:4:92","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3899:3:92"},"nodeType":"YulFunctionCall","src":"3899:20:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3886:12:92"},"nodeType":"YulFunctionCall","src":"3886:34:92"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"3876:6:92"}]}]},"name":"abi_decode_tuple_t_contract$_IDAO_$10865t_uint256t_array$_t_struct$_Action_$10724_memory_ptr_$dyn_memory_ptrt_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1844:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1855:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1867:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1875:6:92","type":""},{"name":"value2","nodeType":"YulTypedName","src":"1883:6:92","type":""},{"name":"value3","nodeType":"YulTypedName","src":"1891:6:92","type":""}],"src":"1717:2209:92"},{"body":{"nodeType":"YulBlock","src":"3997:184:92","statements":[{"nodeType":"YulVariableDeclaration","src":"4007:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"4016:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"4011:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"4076:63:92","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"4101:3:92"},{"name":"i","nodeType":"YulIdentifier","src":"4106:1:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4097:3:92"},"nodeType":"YulFunctionCall","src":"4097:11:92"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"4120:3:92"},{"name":"i","nodeType":"YulIdentifier","src":"4125:1:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4116:3:92"},"nodeType":"YulFunctionCall","src":"4116:11:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4110:5:92"},"nodeType":"YulFunctionCall","src":"4110:18:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4090:6:92"},"nodeType":"YulFunctionCall","src":"4090:39:92"},"nodeType":"YulExpressionStatement","src":"4090:39:92"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"4037:1:92"},{"name":"length","nodeType":"YulIdentifier","src":"4040:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"4034:2:92"},"nodeType":"YulFunctionCall","src":"4034:13:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"4048:19:92","statements":[{"nodeType":"YulAssignment","src":"4050:15:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"4059:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"4062:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4055:3:92"},"nodeType":"YulFunctionCall","src":"4055:10:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"4050:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"4030:3:92","statements":[]},"src":"4026:113:92"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"4159:3:92"},{"name":"length","nodeType":"YulIdentifier","src":"4164:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4155:3:92"},"nodeType":"YulFunctionCall","src":"4155:16:92"},{"kind":"number","nodeType":"YulLiteral","src":"4173:1:92","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4148:6:92"},"nodeType":"YulFunctionCall","src":"4148:27:92"},"nodeType":"YulExpressionStatement","src":"4148:27:92"}]},"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"3975:3:92","type":""},{"name":"dst","nodeType":"YulTypedName","src":"3980:3:92","type":""},{"name":"length","nodeType":"YulTypedName","src":"3985:6:92","type":""}],"src":"3931:250:92"},{"body":{"nodeType":"YulBlock","src":"4235:221:92","statements":[{"nodeType":"YulVariableDeclaration","src":"4245:26:92","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4265:5:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4259:5:92"},"nodeType":"YulFunctionCall","src":"4259:12:92"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"4249:6:92","type":""}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4287:3:92"},{"name":"length","nodeType":"YulIdentifier","src":"4292:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4280:6:92"},"nodeType":"YulFunctionCall","src":"4280:19:92"},"nodeType":"YulExpressionStatement","src":"4280:19:92"},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4347:5:92"},{"kind":"number","nodeType":"YulLiteral","src":"4354:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4343:3:92"},"nodeType":"YulFunctionCall","src":"4343:16:92"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4365:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"4370:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4361:3:92"},"nodeType":"YulFunctionCall","src":"4361:14:92"},{"name":"length","nodeType":"YulIdentifier","src":"4377:6:92"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"4308:34:92"},"nodeType":"YulFunctionCall","src":"4308:76:92"},"nodeType":"YulExpressionStatement","src":"4308:76:92"},{"nodeType":"YulAssignment","src":"4393:57:92","value":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4408:3:92"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"4421:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"4429:2:92","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4417:3:92"},"nodeType":"YulFunctionCall","src":"4417:15:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4438:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"4434:3:92"},"nodeType":"YulFunctionCall","src":"4434:7:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4413:3:92"},"nodeType":"YulFunctionCall","src":"4413:29:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4404:3:92"},"nodeType":"YulFunctionCall","src":"4404:39:92"},{"kind":"number","nodeType":"YulLiteral","src":"4445:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4400:3:92"},"nodeType":"YulFunctionCall","src":"4400:50:92"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"4393:3:92"}]}]},"name":"abi_encode_bytes","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"4212:5:92","type":""},{"name":"pos","nodeType":"YulTypedName","src":"4219:3:92","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"4227:3:92","type":""}],"src":"4186:270:92"},{"body":{"nodeType":"YulBlock","src":"4658:676:92","statements":[{"nodeType":"YulVariableDeclaration","src":"4668:32:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4686:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4697:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4682:3:92"},"nodeType":"YulFunctionCall","src":"4682:18:92"},"variables":[{"name":"tail_1","nodeType":"YulTypedName","src":"4672:6:92","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4716:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4727:2:92","type":"","value":"64"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4709:6:92"},"nodeType":"YulFunctionCall","src":"4709:21:92"},"nodeType":"YulExpressionStatement","src":"4709:21:92"},{"nodeType":"YulVariableDeclaration","src":"4739:17:92","value":{"name":"tail_1","nodeType":"YulIdentifier","src":"4750:6:92"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"4743:3:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4765:27:92","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4785:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4779:5:92"},"nodeType":"YulFunctionCall","src":"4779:13:92"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"4769:6:92","type":""}]},{"expression":{"arguments":[{"name":"tail_1","nodeType":"YulIdentifier","src":"4808:6:92"},{"name":"length","nodeType":"YulIdentifier","src":"4816:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4801:6:92"},"nodeType":"YulFunctionCall","src":"4801:22:92"},"nodeType":"YulExpressionStatement","src":"4801:22:92"},{"nodeType":"YulAssignment","src":"4832:25:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4843:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4854:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4839:3:92"},"nodeType":"YulFunctionCall","src":"4839:18:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"4832:3:92"}]},{"nodeType":"YulVariableDeclaration","src":"4866:53:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4888:9:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4903:1:92","type":"","value":"5"},{"name":"length","nodeType":"YulIdentifier","src":"4906:6:92"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"4899:3:92"},"nodeType":"YulFunctionCall","src":"4899:14:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4884:3:92"},"nodeType":"YulFunctionCall","src":"4884:30:92"},{"kind":"number","nodeType":"YulLiteral","src":"4916:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4880:3:92"},"nodeType":"YulFunctionCall","src":"4880:39:92"},"variables":[{"name":"tail_2","nodeType":"YulTypedName","src":"4870:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4928:14:92","value":{"kind":"number","nodeType":"YulLiteral","src":"4938:4:92","type":"","value":"0x20"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"4932:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4951:29:92","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4969:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"4977:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4965:3:92"},"nodeType":"YulFunctionCall","src":"4965:15:92"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"4955:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4989:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"4998:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"4993:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"5057:205:92","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5078:3:92"},{"arguments":[{"arguments":[{"name":"tail_2","nodeType":"YulIdentifier","src":"5091:6:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"5099:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5087:3:92"},"nodeType":"YulFunctionCall","src":"5087:22:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5115:2:92","type":"","value":"95"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"5111:3:92"},"nodeType":"YulFunctionCall","src":"5111:7:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5083:3:92"},"nodeType":"YulFunctionCall","src":"5083:36:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5071:6:92"},"nodeType":"YulFunctionCall","src":"5071:49:92"},"nodeType":"YulExpressionStatement","src":"5071:49:92"},{"nodeType":"YulAssignment","src":"5133:49:92","value":{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"5166:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5160:5:92"},"nodeType":"YulFunctionCall","src":"5160:13:92"},{"name":"tail_2","nodeType":"YulIdentifier","src":"5175:6:92"}],"functionName":{"name":"abi_encode_bytes","nodeType":"YulIdentifier","src":"5143:16:92"},"nodeType":"YulFunctionCall","src":"5143:39:92"},"variableNames":[{"name":"tail_2","nodeType":"YulIdentifier","src":"5133:6:92"}]},{"nodeType":"YulAssignment","src":"5195:25:92","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"5209:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"5217:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5205:3:92"},"nodeType":"YulFunctionCall","src":"5205:15:92"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"5195:6:92"}]},{"nodeType":"YulAssignment","src":"5233:19:92","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5244:3:92"},{"name":"_1","nodeType":"YulIdentifier","src":"5249:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5240:3:92"},"nodeType":"YulFunctionCall","src":"5240:12:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"5233:3:92"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"5019:1:92"},{"name":"length","nodeType":"YulIdentifier","src":"5022:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"5016:2:92"},"nodeType":"YulFunctionCall","src":"5016:13:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"5030:18:92","statements":[{"nodeType":"YulAssignment","src":"5032:14:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"5041:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"5044:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5037:3:92"},"nodeType":"YulFunctionCall","src":"5037:9:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"5032:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"5012:3:92","statements":[]},"src":"5008:254:92"},{"nodeType":"YulAssignment","src":"5271:14:92","value":{"name":"tail_2","nodeType":"YulIdentifier","src":"5279:6:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5271:4:92"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5305:9:92"},{"name":"_1","nodeType":"YulIdentifier","src":"5316:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5301:3:92"},"nodeType":"YulFunctionCall","src":"5301:18:92"},{"name":"value1","nodeType":"YulIdentifier","src":"5321:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5294:6:92"},"nodeType":"YulFunctionCall","src":"5294:34:92"},"nodeType":"YulExpressionStatement","src":"5294:34:92"}]},"name":"abi_encode_tuple_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_t_uint256__to_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4619:9:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"4630:6:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"4638:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4649:4:92","type":""}],"src":"4461:873:92"},{"body":{"nodeType":"YulBlock","src":"5387:123:92","statements":[{"nodeType":"YulAssignment","src":"5397:29:92","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"5419:6:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"5406:12:92"},"nodeType":"YulFunctionCall","src":"5406:20:92"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"5397:5:92"}]},{"body":{"nodeType":"YulBlock","src":"5488:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5497:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5500:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5490:6:92"},"nodeType":"YulFunctionCall","src":"5490:12:92"},"nodeType":"YulExpressionStatement","src":"5490:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5448:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5459:5:92"},{"kind":"number","nodeType":"YulLiteral","src":"5466:18:92","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5455:3:92"},"nodeType":"YulFunctionCall","src":"5455:30:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"5445:2:92"},"nodeType":"YulFunctionCall","src":"5445:41:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"5438:6:92"},"nodeType":"YulFunctionCall","src":"5438:49:92"},"nodeType":"YulIf","src":"5435:69:92"}]},"name":"abi_decode_uint64","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"5366:6:92","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"5377:5:92","type":""}],"src":"5339:171:92"},{"body":{"nodeType":"YulBlock","src":"5614:283:92","statements":[{"body":{"nodeType":"YulBlock","src":"5663:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5672:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5675:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5665:6:92"},"nodeType":"YulFunctionCall","src":"5665:12:92"},"nodeType":"YulExpressionStatement","src":"5665:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"5642:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"5650:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5638:3:92"},"nodeType":"YulFunctionCall","src":"5638:17:92"},{"name":"end","nodeType":"YulIdentifier","src":"5657:3:92"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"5634:3:92"},"nodeType":"YulFunctionCall","src":"5634:27:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"5627:6:92"},"nodeType":"YulFunctionCall","src":"5627:35:92"},"nodeType":"YulIf","src":"5624:55:92"},{"nodeType":"YulAssignment","src":"5688:30:92","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"5711:6:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"5698:12:92"},"nodeType":"YulFunctionCall","src":"5698:20:92"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"5688:6:92"}]},{"body":{"nodeType":"YulBlock","src":"5761:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5770:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5773:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5763:6:92"},"nodeType":"YulFunctionCall","src":"5763:12:92"},"nodeType":"YulExpressionStatement","src":"5763:12:92"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"5733:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"5741:18:92","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5730:2:92"},"nodeType":"YulFunctionCall","src":"5730:30:92"},"nodeType":"YulIf","src":"5727:50:92"},{"nodeType":"YulAssignment","src":"5786:29:92","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"5802:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"5810:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5798:3:92"},"nodeType":"YulFunctionCall","src":"5798:17:92"},"variableNames":[{"name":"arrayPos","nodeType":"YulIdentifier","src":"5786:8:92"}]},{"body":{"nodeType":"YulBlock","src":"5875:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5884:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5887:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5877:6:92"},"nodeType":"YulFunctionCall","src":"5877:12:92"},"nodeType":"YulExpressionStatement","src":"5877:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"5838:6:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5850:1:92","type":"","value":"5"},{"name":"length","nodeType":"YulIdentifier","src":"5853:6:92"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"5846:3:92"},"nodeType":"YulFunctionCall","src":"5846:14:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5834:3:92"},"nodeType":"YulFunctionCall","src":"5834:27:92"},{"kind":"number","nodeType":"YulLiteral","src":"5863:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5830:3:92"},"nodeType":"YulFunctionCall","src":"5830:38:92"},{"name":"end","nodeType":"YulIdentifier","src":"5870:3:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5827:2:92"},"nodeType":"YulFunctionCall","src":"5827:47:92"},"nodeType":"YulIf","src":"5824:67:92"}]},"name":"abi_decode_array_struct_Action_calldata_dyn_calldata","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"5577:6:92","type":""},{"name":"end","nodeType":"YulTypedName","src":"5585:3:92","type":""}],"returnVariables":[{"name":"arrayPos","nodeType":"YulTypedName","src":"5593:8:92","type":""},{"name":"length","nodeType":"YulTypedName","src":"5603:6:92","type":""}],"src":"5515:382:92"},{"body":{"nodeType":"YulBlock","src":"6136:1070:92","statements":[{"body":{"nodeType":"YulBlock","src":"6183:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6192:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6195:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6185:6:92"},"nodeType":"YulFunctionCall","src":"6185:12:92"},"nodeType":"YulExpressionStatement","src":"6185:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"6157:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"6166:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6153:3:92"},"nodeType":"YulFunctionCall","src":"6153:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"6178:3:92","type":"","value":"192"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6149:3:92"},"nodeType":"YulFunctionCall","src":"6149:33:92"},"nodeType":"YulIf","src":"6146:53:92"},{"nodeType":"YulVariableDeclaration","src":"6208:36:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6234:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6221:12:92"},"nodeType":"YulFunctionCall","src":"6221:23:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"6212:5:92","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6284:5:92"}],"functionName":{"name":"validator_revert_contract_IDAO","nodeType":"YulIdentifier","src":"6253:30:92"},"nodeType":"YulFunctionCall","src":"6253:37:92"},"nodeType":"YulExpressionStatement","src":"6253:37:92"},{"nodeType":"YulAssignment","src":"6299:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"6309:5:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"6299:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"6323:46:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6354:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6365:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6350:3:92"},"nodeType":"YulFunctionCall","src":"6350:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6337:12:92"},"nodeType":"YulFunctionCall","src":"6337:32:92"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"6327:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"6378:28:92","value":{"kind":"number","nodeType":"YulLiteral","src":"6388:18:92","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"6382:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"6433:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6442:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6445:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6435:6:92"},"nodeType":"YulFunctionCall","src":"6435:12:92"},"nodeType":"YulExpressionStatement","src":"6435:12:92"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"6421:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"6429:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6418:2:92"},"nodeType":"YulFunctionCall","src":"6418:14:92"},"nodeType":"YulIf","src":"6415:34:92"},{"nodeType":"YulVariableDeclaration","src":"6458:32:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6472:9:92"},{"name":"offset","nodeType":"YulIdentifier","src":"6483:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6468:3:92"},"nodeType":"YulFunctionCall","src":"6468:22:92"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"6462:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"6538:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6547:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6550:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6540:6:92"},"nodeType":"YulFunctionCall","src":"6540:12:92"},"nodeType":"YulExpressionStatement","src":"6540:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"6517:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"6521:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6513:3:92"},"nodeType":"YulFunctionCall","src":"6513:13:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"6528:7:92"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6509:3:92"},"nodeType":"YulFunctionCall","src":"6509:27:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"6502:6:92"},"nodeType":"YulFunctionCall","src":"6502:35:92"},"nodeType":"YulIf","src":"6499:55:92"},{"nodeType":"YulVariableDeclaration","src":"6563:30:92","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"6590:2:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6577:12:92"},"nodeType":"YulFunctionCall","src":"6577:16:92"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"6567:6:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"6620:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6629:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6632:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6622:6:92"},"nodeType":"YulFunctionCall","src":"6622:12:92"},"nodeType":"YulExpressionStatement","src":"6622:12:92"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"6608:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"6616:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6605:2:92"},"nodeType":"YulFunctionCall","src":"6605:14:92"},"nodeType":"YulIf","src":"6602:34:92"},{"body":{"nodeType":"YulBlock","src":"6686:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6695:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6698:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6688:6:92"},"nodeType":"YulFunctionCall","src":"6688:12:92"},"nodeType":"YulExpressionStatement","src":"6688:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"6659:2:92"},{"name":"length","nodeType":"YulIdentifier","src":"6663:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6655:3:92"},"nodeType":"YulFunctionCall","src":"6655:15:92"},{"kind":"number","nodeType":"YulLiteral","src":"6672:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6651:3:92"},"nodeType":"YulFunctionCall","src":"6651:24:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"6677:7:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6648:2:92"},"nodeType":"YulFunctionCall","src":"6648:37:92"},"nodeType":"YulIf","src":"6645:57:92"},{"nodeType":"YulAssignment","src":"6711:21:92","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"6725:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"6729:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6721:3:92"},"nodeType":"YulFunctionCall","src":"6721:11:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"6711:6:92"}]},{"nodeType":"YulAssignment","src":"6741:16:92","value":{"name":"length","nodeType":"YulIdentifier","src":"6751:6:92"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"6741:6:92"}]},{"nodeType":"YulAssignment","src":"6766:47:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6798:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6809:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6794:3:92"},"nodeType":"YulFunctionCall","src":"6794:18:92"}],"functionName":{"name":"abi_decode_uint64","nodeType":"YulIdentifier","src":"6776:17:92"},"nodeType":"YulFunctionCall","src":"6776:37:92"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"6766:6:92"}]},{"nodeType":"YulAssignment","src":"6822:47:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6854:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6865:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6850:3:92"},"nodeType":"YulFunctionCall","src":"6850:18:92"}],"functionName":{"name":"abi_decode_uint64","nodeType":"YulIdentifier","src":"6832:17:92"},"nodeType":"YulFunctionCall","src":"6832:37:92"},"variableNames":[{"name":"value4","nodeType":"YulIdentifier","src":"6822:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"6878:49:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6911:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6922:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6907:3:92"},"nodeType":"YulFunctionCall","src":"6907:19:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6894:12:92"},"nodeType":"YulFunctionCall","src":"6894:33:92"},"variables":[{"name":"offset_1","nodeType":"YulTypedName","src":"6882:8:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"6956:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6965:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6968:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6958:6:92"},"nodeType":"YulFunctionCall","src":"6958:12:92"},"nodeType":"YulExpressionStatement","src":"6958:12:92"}]},"condition":{"arguments":[{"name":"offset_1","nodeType":"YulIdentifier","src":"6942:8:92"},{"name":"_1","nodeType":"YulIdentifier","src":"6952:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6939:2:92"},"nodeType":"YulFunctionCall","src":"6939:16:92"},"nodeType":"YulIf","src":"6936:36:92"},{"nodeType":"YulVariableDeclaration","src":"6981:113:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7064:9:92"},{"name":"offset_1","nodeType":"YulIdentifier","src":"7075:8:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7060:3:92"},"nodeType":"YulFunctionCall","src":"7060:24:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"7086:7:92"}],"functionName":{"name":"abi_decode_array_struct_Action_calldata_dyn_calldata","nodeType":"YulIdentifier","src":"7007:52:92"},"nodeType":"YulFunctionCall","src":"7007:87:92"},"variables":[{"name":"value5_1","nodeType":"YulTypedName","src":"6985:8:92","type":""},{"name":"value6_1","nodeType":"YulTypedName","src":"6995:8:92","type":""}]},{"nodeType":"YulAssignment","src":"7103:18:92","value":{"name":"value5_1","nodeType":"YulIdentifier","src":"7113:8:92"},"variableNames":[{"name":"value5","nodeType":"YulIdentifier","src":"7103:6:92"}]},{"nodeType":"YulAssignment","src":"7130:18:92","value":{"name":"value6_1","nodeType":"YulIdentifier","src":"7140:8:92"},"variableNames":[{"name":"value6","nodeType":"YulIdentifier","src":"7130:6:92"}]},{"nodeType":"YulAssignment","src":"7157:43:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7184:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7195:3:92","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7180:3:92"},"nodeType":"YulFunctionCall","src":"7180:19:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"7167:12:92"},"nodeType":"YulFunctionCall","src":"7167:33:92"},"variableNames":[{"name":"value7","nodeType":"YulIdentifier","src":"7157:6:92"}]}]},"name":"abi_decode_tuple_t_addresst_bytes_calldata_ptrt_uint64t_uint64t_array$_t_struct$_Action_$10724_calldata_ptr_$dyn_calldata_ptrt_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6046:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"6057:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"6069:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"6077:6:92","type":""},{"name":"value2","nodeType":"YulTypedName","src":"6085:6:92","type":""},{"name":"value3","nodeType":"YulTypedName","src":"6093:6:92","type":""},{"name":"value4","nodeType":"YulTypedName","src":"6101:6:92","type":""},{"name":"value5","nodeType":"YulTypedName","src":"6109:6:92","type":""},{"name":"value6","nodeType":"YulTypedName","src":"6117:6:92","type":""},{"name":"value7","nodeType":"YulTypedName","src":"6125:6:92","type":""}],"src":"5902:1304:92"},{"body":{"nodeType":"YulBlock","src":"7312:76:92","statements":[{"nodeType":"YulAssignment","src":"7322:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7334:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7345:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7330:3:92"},"nodeType":"YulFunctionCall","src":"7330:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7322:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7364:9:92"},{"name":"value0","nodeType":"YulIdentifier","src":"7375:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7357:6:92"},"nodeType":"YulFunctionCall","src":"7357:25:92"},"nodeType":"YulExpressionStatement","src":"7357:25:92"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7281:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"7292:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7303:4:92","type":""}],"src":"7211:177:92"},{"body":{"nodeType":"YulBlock","src":"7650:1048:92","statements":[{"nodeType":"YulVariableDeclaration","src":"7660:12:92","value":{"kind":"number","nodeType":"YulLiteral","src":"7670:2:92","type":"","value":"96"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"7664:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"7681:32:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7699:9:92"},{"name":"_1","nodeType":"YulIdentifier","src":"7710:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7695:3:92"},"nodeType":"YulFunctionCall","src":"7695:18:92"},"variables":[{"name":"tail_1","nodeType":"YulTypedName","src":"7685:6:92","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7729:9:92"},{"name":"value0","nodeType":"YulIdentifier","src":"7740:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7722:6:92"},"nodeType":"YulFunctionCall","src":"7722:25:92"},"nodeType":"YulExpressionStatement","src":"7722:25:92"},{"nodeType":"YulVariableDeclaration","src":"7756:12:92","value":{"kind":"number","nodeType":"YulLiteral","src":"7766:2:92","type":"","value":"32"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"7760:2:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7788:9:92"},{"name":"_2","nodeType":"YulIdentifier","src":"7799:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7784:3:92"},"nodeType":"YulFunctionCall","src":"7784:18:92"},{"name":"_1","nodeType":"YulIdentifier","src":"7804:2:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7777:6:92"},"nodeType":"YulFunctionCall","src":"7777:30:92"},"nodeType":"YulExpressionStatement","src":"7777:30:92"},{"nodeType":"YulVariableDeclaration","src":"7816:17:92","value":{"name":"tail_1","nodeType":"YulIdentifier","src":"7827:6:92"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"7820:3:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"7842:27:92","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"7862:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"7856:5:92"},"nodeType":"YulFunctionCall","src":"7856:13:92"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"7846:6:92","type":""}]},{"expression":{"arguments":[{"name":"tail_1","nodeType":"YulIdentifier","src":"7885:6:92"},{"name":"length","nodeType":"YulIdentifier","src":"7893:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7878:6:92"},"nodeType":"YulFunctionCall","src":"7878:22:92"},"nodeType":"YulExpressionStatement","src":"7878:22:92"},{"nodeType":"YulAssignment","src":"7909:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7920:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7931:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7916:3:92"},"nodeType":"YulFunctionCall","src":"7916:19:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"7909:3:92"}]},{"nodeType":"YulVariableDeclaration","src":"7944:54:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7966:9:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7981:1:92","type":"","value":"5"},{"name":"length","nodeType":"YulIdentifier","src":"7984:6:92"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"7977:3:92"},"nodeType":"YulFunctionCall","src":"7977:14:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7962:3:92"},"nodeType":"YulFunctionCall","src":"7962:30:92"},{"kind":"number","nodeType":"YulLiteral","src":"7994:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7958:3:92"},"nodeType":"YulFunctionCall","src":"7958:40:92"},"variables":[{"name":"tail_2","nodeType":"YulTypedName","src":"7948:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"8007:29:92","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"8025:6:92"},{"name":"_2","nodeType":"YulIdentifier","src":"8033:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8021:3:92"},"nodeType":"YulFunctionCall","src":"8021:15:92"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"8011:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"8045:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"8054:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"8049:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"8113:511:92","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"8134:3:92"},{"arguments":[{"arguments":[{"name":"tail_2","nodeType":"YulIdentifier","src":"8147:6:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"8155:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"8143:3:92"},"nodeType":"YulFunctionCall","src":"8143:22:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8171:3:92","type":"","value":"127"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"8167:3:92"},"nodeType":"YulFunctionCall","src":"8167:8:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8139:3:92"},"nodeType":"YulFunctionCall","src":"8139:37:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8127:6:92"},"nodeType":"YulFunctionCall","src":"8127:50:92"},"nodeType":"YulExpressionStatement","src":"8127:50:92"},{"nodeType":"YulVariableDeclaration","src":"8190:23:92","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"8206:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"8200:5:92"},"nodeType":"YulFunctionCall","src":"8200:13:92"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"8194:2:92","type":""}]},{"expression":{"arguments":[{"name":"tail_2","nodeType":"YulIdentifier","src":"8233:6:92"},{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"8251:2:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"8245:5:92"},"nodeType":"YulFunctionCall","src":"8245:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8256:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8241:3:92"},"nodeType":"YulFunctionCall","src":"8241:58:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8226:6:92"},"nodeType":"YulFunctionCall","src":"8226:74:92"},"nodeType":"YulExpressionStatement","src":"8226:74:92"},{"expression":{"arguments":[{"arguments":[{"name":"tail_2","nodeType":"YulIdentifier","src":"8324:6:92"},{"name":"_2","nodeType":"YulIdentifier","src":"8332:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8320:3:92"},"nodeType":"YulFunctionCall","src":"8320:15:92"},{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"8347:2:92"},{"name":"_2","nodeType":"YulIdentifier","src":"8351:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8343:3:92"},"nodeType":"YulFunctionCall","src":"8343:11:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"8337:5:92"},"nodeType":"YulFunctionCall","src":"8337:18:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8313:6:92"},"nodeType":"YulFunctionCall","src":"8313:43:92"},"nodeType":"YulExpressionStatement","src":"8313:43:92"},{"nodeType":"YulVariableDeclaration","src":"8369:14:92","value":{"kind":"number","nodeType":"YulLiteral","src":"8379:4:92","type":"","value":"0x40"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"8373:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"8396:38:92","value":{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"8426:2:92"},{"name":"_4","nodeType":"YulIdentifier","src":"8430:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8422:3:92"},"nodeType":"YulFunctionCall","src":"8422:11:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"8416:5:92"},"nodeType":"YulFunctionCall","src":"8416:18:92"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"8400:12:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"tail_2","nodeType":"YulIdentifier","src":"8458:6:92"},{"name":"_4","nodeType":"YulIdentifier","src":"8466:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8454:3:92"},"nodeType":"YulFunctionCall","src":"8454:15:92"},{"name":"_1","nodeType":"YulIdentifier","src":"8471:2:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8447:6:92"},"nodeType":"YulFunctionCall","src":"8447:27:92"},"nodeType":"YulExpressionStatement","src":"8447:27:92"},{"nodeType":"YulAssignment","src":"8487:57:92","value":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"8514:12:92"},{"arguments":[{"name":"tail_2","nodeType":"YulIdentifier","src":"8532:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"8540:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8528:3:92"},"nodeType":"YulFunctionCall","src":"8528:15:92"}],"functionName":{"name":"abi_encode_bytes","nodeType":"YulIdentifier","src":"8497:16:92"},"nodeType":"YulFunctionCall","src":"8497:47:92"},"variableNames":[{"name":"tail_2","nodeType":"YulIdentifier","src":"8487:6:92"}]},{"nodeType":"YulAssignment","src":"8557:25:92","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"8571:6:92"},{"name":"_2","nodeType":"YulIdentifier","src":"8579:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8567:3:92"},"nodeType":"YulFunctionCall","src":"8567:15:92"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"8557:6:92"}]},{"nodeType":"YulAssignment","src":"8595:19:92","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"8606:3:92"},{"name":"_2","nodeType":"YulIdentifier","src":"8611:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8602:3:92"},"nodeType":"YulFunctionCall","src":"8602:12:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"8595:3:92"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"8075:1:92"},{"name":"length","nodeType":"YulIdentifier","src":"8078:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"8072:2:92"},"nodeType":"YulFunctionCall","src":"8072:13:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"8086:18:92","statements":[{"nodeType":"YulAssignment","src":"8088:14:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"8097:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"8100:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8093:3:92"},"nodeType":"YulFunctionCall","src":"8093:9:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"8088:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"8068:3:92","statements":[]},"src":"8064:560:92"},{"nodeType":"YulAssignment","src":"8633:14:92","value":{"name":"tail_2","nodeType":"YulIdentifier","src":"8641:6:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"8633:4:92"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8667:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8678:4:92","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8663:3:92"},"nodeType":"YulFunctionCall","src":"8663:20:92"},{"name":"value2","nodeType":"YulIdentifier","src":"8685:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8656:6:92"},"nodeType":"YulFunctionCall","src":"8656:36:92"},"nodeType":"YulExpressionStatement","src":"8656:36:92"}]},"name":"abi_encode_tuple_t_bytes32_t_array$_t_struct$_Action_$10724_memory_ptr_$dyn_memory_ptr_t_uint256__to_t_bytes32_t_array$_t_struct$_Action_$10724_memory_ptr_$dyn_memory_ptr_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7603:9:92","type":""},{"name":"value2","nodeType":"YulTypedName","src":"7614:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"7622:6:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"7630:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7641:4:92","type":""}],"src":"7393:1305:92"},{"body":{"nodeType":"YulBlock","src":"8835:1571:92","statements":[{"nodeType":"YulVariableDeclaration","src":"8845:12:92","value":{"kind":"number","nodeType":"YulLiteral","src":"8855:2:92","type":"","value":"64"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"8849:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"8902:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8911:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8914:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8904:6:92"},"nodeType":"YulFunctionCall","src":"8904:12:92"},"nodeType":"YulExpressionStatement","src":"8904:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"8877:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"8886:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"8873:3:92"},"nodeType":"YulFunctionCall","src":"8873:23:92"},{"name":"_1","nodeType":"YulIdentifier","src":"8898:2:92"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"8869:3:92"},"nodeType":"YulFunctionCall","src":"8869:32:92"},"nodeType":"YulIf","src":"8866:52:92"},{"nodeType":"YulVariableDeclaration","src":"8927:30:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8947:9:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"8941:5:92"},"nodeType":"YulFunctionCall","src":"8941:16:92"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"8931:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"8966:28:92","value":{"kind":"number","nodeType":"YulLiteral","src":"8976:18:92","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"8970:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"9021:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9030:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"9033:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9023:6:92"},"nodeType":"YulFunctionCall","src":"9023:12:92"},"nodeType":"YulExpressionStatement","src":"9023:12:92"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"9009:6:92"},{"name":"_2","nodeType":"YulIdentifier","src":"9017:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"9006:2:92"},"nodeType":"YulFunctionCall","src":"9006:14:92"},"nodeType":"YulIf","src":"9003:34:92"},{"nodeType":"YulVariableDeclaration","src":"9046:32:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9060:9:92"},{"name":"offset","nodeType":"YulIdentifier","src":"9071:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9056:3:92"},"nodeType":"YulFunctionCall","src":"9056:22:92"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"9050:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"9126:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9135:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"9138:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9128:6:92"},"nodeType":"YulFunctionCall","src":"9128:12:92"},"nodeType":"YulExpressionStatement","src":"9128:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"9105:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"9109:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9101:3:92"},"nodeType":"YulFunctionCall","src":"9101:13:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"9116:7:92"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"9097:3:92"},"nodeType":"YulFunctionCall","src":"9097:27:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"9090:6:92"},"nodeType":"YulFunctionCall","src":"9090:35:92"},"nodeType":"YulIf","src":"9087:55:92"},{"nodeType":"YulVariableDeclaration","src":"9151:19:92","value":{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"9167:2:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"9161:5:92"},"nodeType":"YulFunctionCall","src":"9161:9:92"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"9155:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"9179:14:92","value":{"kind":"number","nodeType":"YulLiteral","src":"9189:4:92","type":"","value":"0x20"},"variables":[{"name":"_5","nodeType":"YulTypedName","src":"9183:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"9202:77:92","value":{"arguments":[{"arguments":[{"name":"_4","nodeType":"YulIdentifier","src":"9275:2:92"}],"functionName":{"name":"array_allocation_size_array_struct_Action_dyn","nodeType":"YulIdentifier","src":"9229:45:92"},"nodeType":"YulFunctionCall","src":"9229:49:92"}],"functionName":{"name":"allocate_memory","nodeType":"YulIdentifier","src":"9213:15:92"},"nodeType":"YulFunctionCall","src":"9213:66:92"},"variables":[{"name":"dst","nodeType":"YulTypedName","src":"9206:3:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"9288:16:92","value":{"name":"dst","nodeType":"YulIdentifier","src":"9301:3:92"},"variables":[{"name":"dst_1","nodeType":"YulTypedName","src":"9292:5:92","type":""}]},{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"9320:3:92"},{"name":"_4","nodeType":"YulIdentifier","src":"9325:2:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9313:6:92"},"nodeType":"YulFunctionCall","src":"9313:15:92"},"nodeType":"YulExpressionStatement","src":"9313:15:92"},{"nodeType":"YulAssignment","src":"9337:19:92","value":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"9348:3:92"},{"name":"_5","nodeType":"YulIdentifier","src":"9353:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9344:3:92"},"nodeType":"YulFunctionCall","src":"9344:12:92"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"9337:3:92"}]},{"nodeType":"YulVariableDeclaration","src":"9365:42:92","value":{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"9387:2:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9395:1:92","type":"","value":"5"},{"name":"_4","nodeType":"YulIdentifier","src":"9398:2:92"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"9391:3:92"},"nodeType":"YulFunctionCall","src":"9391:10:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9383:3:92"},"nodeType":"YulFunctionCall","src":"9383:19:92"},{"name":"_5","nodeType":"YulIdentifier","src":"9404:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9379:3:92"},"nodeType":"YulFunctionCall","src":"9379:28:92"},"variables":[{"name":"srcEnd","nodeType":"YulTypedName","src":"9369:6:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"9439:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9448:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"9451:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9441:6:92"},"nodeType":"YulFunctionCall","src":"9441:12:92"},"nodeType":"YulExpressionStatement","src":"9441:12:92"}]},"condition":{"arguments":[{"name":"srcEnd","nodeType":"YulIdentifier","src":"9422:6:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"9430:7:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"9419:2:92"},"nodeType":"YulFunctionCall","src":"9419:19:92"},"nodeType":"YulIf","src":"9416:39:92"},{"nodeType":"YulVariableDeclaration","src":"9464:22:92","value":{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"9479:2:92"},{"name":"_5","nodeType":"YulIdentifier","src":"9483:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9475:3:92"},"nodeType":"YulFunctionCall","src":"9475:11:92"},"variables":[{"name":"src","nodeType":"YulTypedName","src":"9468:3:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"9551:781:92","statements":[{"nodeType":"YulVariableDeclaration","src":"9565:29:92","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"9590:3:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"9584:5:92"},"nodeType":"YulFunctionCall","src":"9584:10:92"},"variables":[{"name":"innerOffset","nodeType":"YulTypedName","src":"9569:11:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"9642:74:92","statements":[{"nodeType":"YulVariableDeclaration","src":"9660:11:92","value":{"kind":"number","nodeType":"YulLiteral","src":"9670:1:92","type":"","value":"0"},"variables":[{"name":"_6","nodeType":"YulTypedName","src":"9664:2:92","type":""}]},{"expression":{"arguments":[{"name":"_6","nodeType":"YulIdentifier","src":"9695:2:92"},{"name":"_6","nodeType":"YulIdentifier","src":"9699:2:92"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9688:6:92"},"nodeType":"YulFunctionCall","src":"9688:14:92"},"nodeType":"YulExpressionStatement","src":"9688:14:92"}]},"condition":{"arguments":[{"name":"innerOffset","nodeType":"YulIdentifier","src":"9613:11:92"},{"name":"_2","nodeType":"YulIdentifier","src":"9626:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"9610:2:92"},"nodeType":"YulFunctionCall","src":"9610:19:92"},"nodeType":"YulIf","src":"9607:109:92"},{"nodeType":"YulVariableDeclaration","src":"9729:30:92","value":{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"9743:2:92"},{"name":"innerOffset","nodeType":"YulIdentifier","src":"9747:11:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9739:3:92"},"nodeType":"YulFunctionCall","src":"9739:20:92"},"variables":[{"name":"_7","nodeType":"YulTypedName","src":"9733:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"9821:74:92","statements":[{"nodeType":"YulVariableDeclaration","src":"9839:11:92","value":{"kind":"number","nodeType":"YulLiteral","src":"9849:1:92","type":"","value":"0"},"variables":[{"name":"_8","nodeType":"YulTypedName","src":"9843:2:92","type":""}]},{"expression":{"arguments":[{"name":"_8","nodeType":"YulIdentifier","src":"9874:2:92"},{"name":"_8","nodeType":"YulIdentifier","src":"9878:2:92"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9867:6:92"},"nodeType":"YulFunctionCall","src":"9867:14:92"},"nodeType":"YulExpressionStatement","src":"9867:14:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_7","nodeType":"YulIdentifier","src":"9790:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"9794:2:92","type":"","value":"63"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9786:3:92"},"nodeType":"YulFunctionCall","src":"9786:11:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"9799:7:92"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"9782:3:92"},"nodeType":"YulFunctionCall","src":"9782:25:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"9775:6:92"},"nodeType":"YulFunctionCall","src":"9775:33:92"},"nodeType":"YulIf","src":"9772:123:92"},{"nodeType":"YulVariableDeclaration","src":"9908:28:92","value":{"arguments":[{"arguments":[{"name":"_7","nodeType":"YulIdentifier","src":"9928:2:92"},{"name":"_5","nodeType":"YulIdentifier","src":"9932:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9924:3:92"},"nodeType":"YulFunctionCall","src":"9924:11:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"9918:5:92"},"nodeType":"YulFunctionCall","src":"9918:18:92"},"variables":[{"name":"_9","nodeType":"YulTypedName","src":"9912:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"9949:61:92","value":{"arguments":[{"arguments":[{"name":"_9","nodeType":"YulIdentifier","src":"10006:2:92"}],"functionName":{"name":"array_allocation_size_bytes","nodeType":"YulIdentifier","src":"9978:27:92"},"nodeType":"YulFunctionCall","src":"9978:31:92"}],"functionName":{"name":"allocate_memory","nodeType":"YulIdentifier","src":"9962:15:92"},"nodeType":"YulFunctionCall","src":"9962:48:92"},"variables":[{"name":"array","nodeType":"YulTypedName","src":"9953:5:92","type":""}]},{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"10030:5:92"},{"name":"_9","nodeType":"YulIdentifier","src":"10037:2:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10023:6:92"},"nodeType":"YulFunctionCall","src":"10023:17:92"},"nodeType":"YulExpressionStatement","src":"10023:17:92"},{"body":{"nodeType":"YulBlock","src":"10102:77:92","statements":[{"nodeType":"YulVariableDeclaration","src":"10120:12:92","value":{"kind":"number","nodeType":"YulLiteral","src":"10131:1:92","type":"","value":"0"},"variables":[{"name":"_10","nodeType":"YulTypedName","src":"10124:3:92","type":""}]},{"expression":{"arguments":[{"name":"_10","nodeType":"YulIdentifier","src":"10156:3:92"},{"name":"_10","nodeType":"YulIdentifier","src":"10161:3:92"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"10149:6:92"},"nodeType":"YulFunctionCall","src":"10149:16:92"},"nodeType":"YulExpressionStatement","src":"10149:16:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_7","nodeType":"YulIdentifier","src":"10067:2:92"},{"name":"_9","nodeType":"YulIdentifier","src":"10071:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10063:3:92"},"nodeType":"YulFunctionCall","src":"10063:11:92"},{"name":"_1","nodeType":"YulIdentifier","src":"10076:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10059:3:92"},"nodeType":"YulFunctionCall","src":"10059:20:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"10081:7:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"10056:2:92"},"nodeType":"YulFunctionCall","src":"10056:33:92"},"nodeType":"YulIf","src":"10053:126:92"},{"expression":{"arguments":[{"arguments":[{"name":"_7","nodeType":"YulIdentifier","src":"10231:2:92"},{"name":"_1","nodeType":"YulIdentifier","src":"10235:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10227:3:92"},"nodeType":"YulFunctionCall","src":"10227:11:92"},{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"10244:5:92"},{"name":"_5","nodeType":"YulIdentifier","src":"10251:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10240:3:92"},"nodeType":"YulFunctionCall","src":"10240:14:92"},{"name":"_9","nodeType":"YulIdentifier","src":"10256:2:92"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"10192:34:92"},"nodeType":"YulFunctionCall","src":"10192:67:92"},"nodeType":"YulExpressionStatement","src":"10192:67:92"},{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"10279:3:92"},{"name":"array","nodeType":"YulIdentifier","src":"10284:5:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10272:6:92"},"nodeType":"YulFunctionCall","src":"10272:18:92"},"nodeType":"YulExpressionStatement","src":"10272:18:92"},{"nodeType":"YulAssignment","src":"10303:19:92","value":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"10314:3:92"},{"name":"_5","nodeType":"YulIdentifier","src":"10319:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10310:3:92"},"nodeType":"YulFunctionCall","src":"10310:12:92"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"10303:3:92"}]}]},"condition":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"9506:3:92"},{"name":"srcEnd","nodeType":"YulIdentifier","src":"9511:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"9503:2:92"},"nodeType":"YulFunctionCall","src":"9503:15:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"9519:23:92","statements":[{"nodeType":"YulAssignment","src":"9521:19:92","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"9532:3:92"},{"name":"_5","nodeType":"YulIdentifier","src":"9537:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9528:3:92"},"nodeType":"YulFunctionCall","src":"9528:12:92"},"variableNames":[{"name":"src","nodeType":"YulIdentifier","src":"9521:3:92"}]}]},"pre":{"nodeType":"YulBlock","src":"9499:3:92","statements":[]},"src":"9495:837:92"},{"nodeType":"YulAssignment","src":"10341:15:92","value":{"name":"dst_1","nodeType":"YulIdentifier","src":"10351:5:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"10341:6:92"}]},{"nodeType":"YulAssignment","src":"10365:35:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10385:9:92"},{"name":"_5","nodeType":"YulIdentifier","src":"10396:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10381:3:92"},"nodeType":"YulFunctionCall","src":"10381:18:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"10375:5:92"},"nodeType":"YulFunctionCall","src":"10375:25:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"10365:6:92"}]}]},"name":"abi_decode_tuple_t_array$_t_bytes_memory_ptr_$dyn_memory_ptrt_uint256_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8793:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"8804:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"8816:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"8824:6:92","type":""}],"src":"8703:1703:92"},{"body":{"nodeType":"YulBlock","src":"10477:200:92","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"10494:3:92"},{"name":"length","nodeType":"YulIdentifier","src":"10499:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10487:6:92"},"nodeType":"YulFunctionCall","src":"10487:19:92"},"nodeType":"YulExpressionStatement","src":"10487:19:92"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"10532:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"10537:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10528:3:92"},"nodeType":"YulFunctionCall","src":"10528:14:92"},{"name":"start","nodeType":"YulIdentifier","src":"10544:5:92"},{"name":"length","nodeType":"YulIdentifier","src":"10551:6:92"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"10515:12:92"},"nodeType":"YulFunctionCall","src":"10515:43:92"},"nodeType":"YulExpressionStatement","src":"10515:43:92"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"10582:3:92"},{"name":"length","nodeType":"YulIdentifier","src":"10587:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10578:3:92"},"nodeType":"YulFunctionCall","src":"10578:16:92"},{"kind":"number","nodeType":"YulLiteral","src":"10596:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10574:3:92"},"nodeType":"YulFunctionCall","src":"10574:27:92"},{"kind":"number","nodeType":"YulLiteral","src":"10603:1:92","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10567:6:92"},"nodeType":"YulFunctionCall","src":"10567:38:92"},"nodeType":"YulExpressionStatement","src":"10567:38:92"},{"nodeType":"YulAssignment","src":"10614:57:92","value":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"10629:3:92"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"10642:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"10650:2:92","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10638:3:92"},"nodeType":"YulFunctionCall","src":"10638:15:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10659:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"10655:3:92"},"nodeType":"YulFunctionCall","src":"10655:7:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"10634:3:92"},"nodeType":"YulFunctionCall","src":"10634:29:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10625:3:92"},"nodeType":"YulFunctionCall","src":"10625:39:92"},{"kind":"number","nodeType":"YulLiteral","src":"10666:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10621:3:92"},"nodeType":"YulFunctionCall","src":"10621:50:92"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"10614:3:92"}]}]},"name":"abi_encode_bytes_calldata","nodeType":"YulFunctionDefinition","parameters":[{"name":"start","nodeType":"YulTypedName","src":"10446:5:92","type":""},{"name":"length","nodeType":"YulTypedName","src":"10453:6:92","type":""},{"name":"pos","nodeType":"YulTypedName","src":"10461:3:92","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"10469:3:92","type":""}],"src":"10411:266:92"},{"body":{"nodeType":"YulBlock","src":"11031:1891:92","statements":[{"nodeType":"YulVariableDeclaration","src":"11041:28:92","value":{"kind":"number","nodeType":"YulLiteral","src":"11051:18:92","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"11045:2:92","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11085:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"11100:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"11108:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"11096:3:92"},"nodeType":"YulFunctionCall","src":"11096:15:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11078:6:92"},"nodeType":"YulFunctionCall","src":"11078:34:92"},"nodeType":"YulExpressionStatement","src":"11078:34:92"},{"nodeType":"YulVariableDeclaration","src":"11121:12:92","value":{"kind":"number","nodeType":"YulLiteral","src":"11131:2:92","type":"","value":"32"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"11125:2:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11153:9:92"},{"name":"_2","nodeType":"YulIdentifier","src":"11164:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11149:3:92"},"nodeType":"YulFunctionCall","src":"11149:18:92"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"11173:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"11181:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"11169:3:92"},"nodeType":"YulFunctionCall","src":"11169:15:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11142:6:92"},"nodeType":"YulFunctionCall","src":"11142:43:92"},"nodeType":"YulExpressionStatement","src":"11142:43:92"},{"nodeType":"YulVariableDeclaration","src":"11194:12:92","value":{"kind":"number","nodeType":"YulLiteral","src":"11204:2:92","type":"","value":"64"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"11198:2:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11226:9:92"},{"name":"_3","nodeType":"YulIdentifier","src":"11237:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11222:3:92"},"nodeType":"YulFunctionCall","src":"11222:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"11242:3:92","type":"","value":"160"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11215:6:92"},"nodeType":"YulFunctionCall","src":"11215:31:92"},"nodeType":"YulExpressionStatement","src":"11215:31:92"},{"nodeType":"YulVariableDeclaration","src":"11255:76:92","value":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"11295:6:92"},{"name":"value3","nodeType":"YulIdentifier","src":"11303:6:92"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11315:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"11326:3:92","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11311:3:92"},"nodeType":"YulFunctionCall","src":"11311:19:92"}],"functionName":{"name":"abi_encode_bytes_calldata","nodeType":"YulIdentifier","src":"11269:25:92"},"nodeType":"YulFunctionCall","src":"11269:62:92"},"variables":[{"name":"tail_1","nodeType":"YulTypedName","src":"11259:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"11340:12:92","value":{"kind":"number","nodeType":"YulLiteral","src":"11350:2:92","type":"","value":"96"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"11344:2:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11372:9:92"},{"name":"_4","nodeType":"YulIdentifier","src":"11383:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11368:3:92"},"nodeType":"YulFunctionCall","src":"11368:18:92"},{"arguments":[{"name":"tail_1","nodeType":"YulIdentifier","src":"11392:6:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"11400:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"11388:3:92"},"nodeType":"YulFunctionCall","src":"11388:22:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11361:6:92"},"nodeType":"YulFunctionCall","src":"11361:50:92"},"nodeType":"YulExpressionStatement","src":"11361:50:92"},{"nodeType":"YulVariableDeclaration","src":"11420:17:92","value":{"name":"tail_1","nodeType":"YulIdentifier","src":"11431:6:92"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"11424:3:92","type":""}]},{"expression":{"arguments":[{"name":"tail_1","nodeType":"YulIdentifier","src":"11453:6:92"},{"name":"value5","nodeType":"YulIdentifier","src":"11461:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11446:6:92"},"nodeType":"YulFunctionCall","src":"11446:22:92"},"nodeType":"YulExpressionStatement","src":"11446:22:92"},{"nodeType":"YulAssignment","src":"11477:22:92","value":{"arguments":[{"name":"tail_1","nodeType":"YulIdentifier","src":"11488:6:92"},{"name":"_2","nodeType":"YulIdentifier","src":"11496:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11484:3:92"},"nodeType":"YulFunctionCall","src":"11484:15:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"11477:3:92"}]},{"nodeType":"YulVariableDeclaration","src":"11508:50:92","value":{"arguments":[{"arguments":[{"name":"tail_1","nodeType":"YulIdentifier","src":"11530:6:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"11542:1:92","type":"","value":"5"},{"name":"value5","nodeType":"YulIdentifier","src":"11545:6:92"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"11538:3:92"},"nodeType":"YulFunctionCall","src":"11538:14:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11526:3:92"},"nodeType":"YulFunctionCall","src":"11526:27:92"},{"name":"_2","nodeType":"YulIdentifier","src":"11555:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11522:3:92"},"nodeType":"YulFunctionCall","src":"11522:36:92"},"variables":[{"name":"tail_2","nodeType":"YulTypedName","src":"11512:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"11567:20:92","value":{"name":"value4","nodeType":"YulIdentifier","src":"11581:6:92"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"11571:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"11596:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"11605:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"11600:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"11664:1185:92","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"11685:3:92"},{"arguments":[{"arguments":[{"name":"tail_2","nodeType":"YulIdentifier","src":"11698:6:92"},{"name":"tail_1","nodeType":"YulIdentifier","src":"11706:6:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"11694:3:92"},"nodeType":"YulFunctionCall","src":"11694:19:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"11719:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"11715:3:92"},"nodeType":"YulFunctionCall","src":"11715:7:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11690:3:92"},"nodeType":"YulFunctionCall","src":"11690:33:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11678:6:92"},"nodeType":"YulFunctionCall","src":"11678:46:92"},"nodeType":"YulExpressionStatement","src":"11678:46:92"},{"nodeType":"YulVariableDeclaration","src":"11737:46:92","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"11776:6:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"11763:12:92"},"nodeType":"YulFunctionCall","src":"11763:20:92"},"variables":[{"name":"rel_offset_of_tail","nodeType":"YulTypedName","src":"11741:18:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"11874:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"11883:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"11886:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"11876:6:92"},"nodeType":"YulFunctionCall","src":"11876:12:92"},"nodeType":"YulExpressionStatement","src":"11876:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"rel_offset_of_tail","nodeType":"YulIdentifier","src":"11810:18:92"},{"arguments":[{"arguments":[{"arguments":[],"functionName":{"name":"calldatasize","nodeType":"YulIdentifier","src":"11838:12:92"},"nodeType":"YulFunctionCall","src":"11838:14:92"},{"name":"value4","nodeType":"YulIdentifier","src":"11854:6:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"11834:3:92"},"nodeType":"YulFunctionCall","src":"11834:27:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"11867:2:92","type":"","value":"94"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"11863:3:92"},"nodeType":"YulFunctionCall","src":"11863:7:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11830:3:92"},"nodeType":"YulFunctionCall","src":"11830:41:92"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"11806:3:92"},"nodeType":"YulFunctionCall","src":"11806:66:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"11799:6:92"},"nodeType":"YulFunctionCall","src":"11799:74:92"},"nodeType":"YulIf","src":"11796:94:92"},{"nodeType":"YulVariableDeclaration","src":"11903:44:92","value":{"arguments":[{"name":"rel_offset_of_tail","nodeType":"YulIdentifier","src":"11920:18:92"},{"name":"value4","nodeType":"YulIdentifier","src":"11940:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11916:3:92"},"nodeType":"YulFunctionCall","src":"11916:31:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"11907:5:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"11960:34:92","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"11988:5:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"11975:12:92"},"nodeType":"YulFunctionCall","src":"11975:19:92"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"11964:7:92","type":""}]},{"expression":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"12038:7:92"}],"functionName":{"name":"validator_revert_contract_IDAO","nodeType":"YulIdentifier","src":"12007:30:92"},"nodeType":"YulFunctionCall","src":"12007:39:92"},"nodeType":"YulExpressionStatement","src":"12007:39:92"},{"expression":{"arguments":[{"name":"tail_2","nodeType":"YulIdentifier","src":"12066:6:92"},{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"12078:7:92"},{"kind":"number","nodeType":"YulLiteral","src":"12087:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"12074:3:92"},"nodeType":"YulFunctionCall","src":"12074:56:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12059:6:92"},"nodeType":"YulFunctionCall","src":"12059:72:92"},"nodeType":"YulExpressionStatement","src":"12059:72:92"},{"expression":{"arguments":[{"arguments":[{"name":"tail_2","nodeType":"YulIdentifier","src":"12155:6:92"},{"name":"_2","nodeType":"YulIdentifier","src":"12163:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12151:3:92"},"nodeType":"YulFunctionCall","src":"12151:15:92"},{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"12185:5:92"},{"name":"_2","nodeType":"YulIdentifier","src":"12192:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12181:3:92"},"nodeType":"YulFunctionCall","src":"12181:14:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"12168:12:92"},"nodeType":"YulFunctionCall","src":"12168:28:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12144:6:92"},"nodeType":"YulFunctionCall","src":"12144:53:92"},"nodeType":"YulExpressionStatement","src":"12144:53:92"},{"nodeType":"YulVariableDeclaration","src":"12210:56:92","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"12255:5:92"},{"name":"_3","nodeType":"YulIdentifier","src":"12262:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12251:3:92"},"nodeType":"YulFunctionCall","src":"12251:14:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"12238:12:92"},"nodeType":"YulFunctionCall","src":"12238:28:92"},"variables":[{"name":"rel_offset_of_tail_1","nodeType":"YulTypedName","src":"12214:20:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"12358:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"12367:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"12370:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"12360:6:92"},"nodeType":"YulFunctionCall","src":"12360:12:92"},"nodeType":"YulExpressionStatement","src":"12360:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"rel_offset_of_tail_1","nodeType":"YulIdentifier","src":"12293:20:92"},{"arguments":[{"arguments":[{"arguments":[],"functionName":{"name":"calldatasize","nodeType":"YulIdentifier","src":"12323:12:92"},"nodeType":"YulFunctionCall","src":"12323:14:92"},{"name":"value","nodeType":"YulIdentifier","src":"12339:5:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"12319:3:92"},"nodeType":"YulFunctionCall","src":"12319:26:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"12351:2:92","type":"","value":"30"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"12347:3:92"},"nodeType":"YulFunctionCall","src":"12347:7:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12315:3:92"},"nodeType":"YulFunctionCall","src":"12315:40:92"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"12289:3:92"},"nodeType":"YulFunctionCall","src":"12289:67:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"12282:6:92"},"nodeType":"YulFunctionCall","src":"12282:75:92"},"nodeType":"YulIf","src":"12279:95:92"},{"nodeType":"YulVariableDeclaration","src":"12387:47:92","value":{"arguments":[{"name":"rel_offset_of_tail_1","nodeType":"YulIdentifier","src":"12406:20:92"},{"name":"value","nodeType":"YulIdentifier","src":"12428:5:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12402:3:92"},"nodeType":"YulFunctionCall","src":"12402:32:92"},"variables":[{"name":"value_2","nodeType":"YulTypedName","src":"12391:7:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"12447:35:92","value":{"arguments":[{"name":"value_2","nodeType":"YulIdentifier","src":"12474:7:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"12461:12:92"},"nodeType":"YulFunctionCall","src":"12461:21:92"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"12451:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"12495:31:92","value":{"arguments":[{"name":"value_2","nodeType":"YulIdentifier","src":"12514:7:92"},{"name":"_2","nodeType":"YulIdentifier","src":"12523:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12510:3:92"},"nodeType":"YulFunctionCall","src":"12510:16:92"},"variables":[{"name":"value_3","nodeType":"YulTypedName","src":"12499:7:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"12557:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"12566:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"12569:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"12559:6:92"},"nodeType":"YulFunctionCall","src":"12559:12:92"},"nodeType":"YulExpressionStatement","src":"12559:12:92"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"12545:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"12553:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"12542:2:92"},"nodeType":"YulFunctionCall","src":"12542:14:92"},"nodeType":"YulIf","src":"12539:34:92"},{"body":{"nodeType":"YulBlock","src":"12631:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"12640:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"12643:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"12633:6:92"},"nodeType":"YulFunctionCall","src":"12633:12:92"},"nodeType":"YulExpressionStatement","src":"12633:12:92"}]},"condition":{"arguments":[{"name":"value_3","nodeType":"YulIdentifier","src":"12593:7:92"},{"arguments":[{"arguments":[],"functionName":{"name":"calldatasize","nodeType":"YulIdentifier","src":"12606:12:92"},"nodeType":"YulFunctionCall","src":"12606:14:92"},{"name":"length","nodeType":"YulIdentifier","src":"12622:6:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"12602:3:92"},"nodeType":"YulFunctionCall","src":"12602:27:92"}],"functionName":{"name":"sgt","nodeType":"YulIdentifier","src":"12589:3:92"},"nodeType":"YulFunctionCall","src":"12589:41:92"},"nodeType":"YulIf","src":"12586:61:92"},{"expression":{"arguments":[{"arguments":[{"name":"tail_2","nodeType":"YulIdentifier","src":"12671:6:92"},{"name":"_3","nodeType":"YulIdentifier","src":"12679:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12667:3:92"},"nodeType":"YulFunctionCall","src":"12667:15:92"},{"name":"_4","nodeType":"YulIdentifier","src":"12684:2:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12660:6:92"},"nodeType":"YulFunctionCall","src":"12660:27:92"},"nodeType":"YulExpressionStatement","src":"12660:27:92"},{"nodeType":"YulAssignment","src":"12700:69:92","value":{"arguments":[{"name":"value_3","nodeType":"YulIdentifier","src":"12736:7:92"},{"name":"length","nodeType":"YulIdentifier","src":"12745:6:92"},{"arguments":[{"name":"tail_2","nodeType":"YulIdentifier","src":"12757:6:92"},{"name":"_4","nodeType":"YulIdentifier","src":"12765:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12753:3:92"},"nodeType":"YulFunctionCall","src":"12753:15:92"}],"functionName":{"name":"abi_encode_bytes_calldata","nodeType":"YulIdentifier","src":"12710:25:92"},"nodeType":"YulFunctionCall","src":"12710:59:92"},"variableNames":[{"name":"tail_2","nodeType":"YulIdentifier","src":"12700:6:92"}]},{"nodeType":"YulAssignment","src":"12782:25:92","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"12796:6:92"},{"name":"_2","nodeType":"YulIdentifier","src":"12804:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12792:3:92"},"nodeType":"YulFunctionCall","src":"12792:15:92"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"12782:6:92"}]},{"nodeType":"YulAssignment","src":"12820:19:92","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"12831:3:92"},{"name":"_2","nodeType":"YulIdentifier","src":"12836:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12827:3:92"},"nodeType":"YulFunctionCall","src":"12827:12:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"12820:3:92"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"11626:1:92"},{"name":"value5","nodeType":"YulIdentifier","src":"11629:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"11623:2:92"},"nodeType":"YulFunctionCall","src":"11623:13:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"11637:18:92","statements":[{"nodeType":"YulAssignment","src":"11639:14:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"11648:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"11651:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11644:3:92"},"nodeType":"YulFunctionCall","src":"11644:9:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"11639:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"11619:3:92","statements":[]},"src":"11615:1234:92"},{"nodeType":"YulAssignment","src":"12858:14:92","value":{"name":"tail_2","nodeType":"YulIdentifier","src":"12866:6:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"12858:4:92"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12892:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"12903:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12888:3:92"},"nodeType":"YulFunctionCall","src":"12888:19:92"},{"name":"value6","nodeType":"YulIdentifier","src":"12909:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12881:6:92"},"nodeType":"YulFunctionCall","src":"12881:35:92"},"nodeType":"YulExpressionStatement","src":"12881:35:92"}]},"name":"abi_encode_tuple_t_uint64_t_uint64_t_bytes_calldata_ptr_t_array$_t_struct$_Action_$10724_calldata_ptr_$dyn_calldata_ptr_t_uint256__to_t_uint64_t_uint64_t_bytes_memory_ptr_t_array$_t_struct$_Action_$10724_memory_ptr_$dyn_memory_ptr_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"10952:9:92","type":""},{"name":"value6","nodeType":"YulTypedName","src":"10963:6:92","type":""},{"name":"value5","nodeType":"YulTypedName","src":"10971:6:92","type":""},{"name":"value4","nodeType":"YulTypedName","src":"10979:6:92","type":""},{"name":"value3","nodeType":"YulTypedName","src":"10987:6:92","type":""},{"name":"value2","nodeType":"YulTypedName","src":"10995:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"11003:6:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"11011:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"11022:4:92","type":""}],"src":"10682:2240:92"}]},"contents":"{\n { }\n function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n if iszero(eq(value, and(value, shl(224, 0xffffffff)))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function validator_revert_contract_IDAO(value)\n {\n if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n }\n function panic_error_0x41()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function allocate_memory_2869() -> memPtr\n {\n memPtr := mload(64)\n let newFreePtr := add(memPtr, 0x60)\n if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n }\n function allocate_memory(size) -> memPtr\n {\n memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(size, 31), not(31)))\n if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n }\n function array_allocation_size_array_struct_Action_dyn(length) -> size\n {\n if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n size := add(shl(5, length), 0x20)\n }\n function array_allocation_size_bytes(length) -> size\n {\n if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n size := add(and(add(length, 31), not(31)), 0x20)\n }\n function abi_decode_tuple_t_contract$_IDAO_$10865t_uint256t_array$_t_struct$_Action_$10724_memory_ptr_$dyn_memory_ptrt_uint256(headStart, dataEnd) -> value0, value1, value2, value3\n {\n if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n validator_revert_contract_IDAO(calldataload(headStart))\n value0 := calldataload(headStart)\n value1 := calldataload(add(headStart, 32))\n let offset := calldataload(add(headStart, 64))\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n let _2 := add(headStart, offset)\n if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n let dst := allocate_memory(array_allocation_size_array_struct_Action_dyn(calldataload(_2)))\n let dst_1 := dst\n mstore(dst, calldataload(_2))\n dst := add(dst, 32)\n let srcEnd := add(add(_2, shl(5, calldataload(_2))), 32)\n if gt(srcEnd, dataEnd) { revert(0, 0) }\n let src := add(_2, 32)\n for { } lt(src, srcEnd) { src := add(src, 32) }\n {\n if gt(calldataload(src), _1) { revert(0, 0) }\n let _3 := add(_2, calldataload(src))\n if slt(add(sub(dataEnd, _3), not(31)), 0x60) { revert(0, 0) }\n let value := allocate_memory_2869()\n let value_1 := calldataload(add(_3, 32))\n validator_revert_contract_IDAO(value_1)\n mstore(value, value_1)\n mstore(add(value, 32), calldataload(add(_3, 64)))\n let offset_1 := calldataload(add(_3, 0x60))\n if gt(offset_1, _1) { revert(0, 0) }\n let _4 := add(_3, offset_1)\n if iszero(slt(add(_4, 63), dataEnd)) { revert(0, 0) }\n let _5 := calldataload(add(_4, 32))\n let array := allocate_memory(array_allocation_size_bytes(_5))\n mstore(array, _5)\n if gt(add(add(_4, _5), 64), dataEnd) { revert(0, 0) }\n calldatacopy(add(array, 32), add(_4, 64), _5)\n mstore(add(add(array, _5), 32), 0)\n mstore(add(value, 64), array)\n mstore(dst, value)\n dst := add(dst, 32)\n }\n value2 := dst_1\n value3 := calldataload(add(headStart, 0x60))\n }\n function copy_memory_to_memory_with_cleanup(src, dst, length)\n {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n mstore(add(dst, length), 0)\n }\n function abi_encode_bytes(value, pos) -> end\n {\n let length := mload(value)\n mstore(pos, length)\n copy_memory_to_memory_with_cleanup(add(value, 0x20), add(pos, 0x20), length)\n end := add(add(pos, and(add(length, 31), not(31))), 0x20)\n }\n function abi_encode_tuple_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_t_uint256__to_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n {\n let tail_1 := add(headStart, 64)\n mstore(headStart, 64)\n let pos := tail_1\n let length := mload(value0)\n mstore(tail_1, length)\n pos := add(headStart, 96)\n let tail_2 := add(add(headStart, shl(5, length)), 96)\n let _1 := 0x20\n let srcPtr := add(value0, _1)\n let i := 0\n for { } lt(i, length) { i := add(i, 1) }\n {\n mstore(pos, add(sub(tail_2, headStart), not(95)))\n tail_2 := abi_encode_bytes(mload(srcPtr), tail_2)\n srcPtr := add(srcPtr, _1)\n pos := add(pos, _1)\n }\n tail := tail_2\n mstore(add(headStart, _1), value1)\n }\n function abi_decode_uint64(offset) -> value\n {\n value := calldataload(offset)\n if iszero(eq(value, and(value, 0xffffffffffffffff))) { revert(0, 0) }\n }\n function abi_decode_array_struct_Action_calldata_dyn_calldata(offset, end) -> arrayPos, length\n {\n if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n length := calldataload(offset)\n if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n arrayPos := add(offset, 0x20)\n if gt(add(add(offset, shl(5, length)), 0x20), end) { revert(0, 0) }\n }\n function abi_decode_tuple_t_addresst_bytes_calldata_ptrt_uint64t_uint64t_array$_t_struct$_Action_$10724_calldata_ptr_$dyn_calldata_ptrt_uint256(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6, value7\n {\n if slt(sub(dataEnd, headStart), 192) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_contract_IDAO(value)\n value0 := value\n let offset := calldataload(add(headStart, 32))\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n let _2 := add(headStart, offset)\n if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n let length := calldataload(_2)\n if gt(length, _1) { revert(0, 0) }\n if gt(add(add(_2, length), 32), dataEnd) { revert(0, 0) }\n value1 := add(_2, 32)\n value2 := length\n value3 := abi_decode_uint64(add(headStart, 64))\n value4 := abi_decode_uint64(add(headStart, 96))\n let offset_1 := calldataload(add(headStart, 128))\n if gt(offset_1, _1) { revert(0, 0) }\n let value5_1, value6_1 := abi_decode_array_struct_Action_calldata_dyn_calldata(add(headStart, offset_1), dataEnd)\n value5 := value5_1\n value6 := value6_1\n value7 := calldataload(add(headStart, 160))\n }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_encode_tuple_t_bytes32_t_array$_t_struct$_Action_$10724_memory_ptr_$dyn_memory_ptr_t_uint256__to_t_bytes32_t_array$_t_struct$_Action_$10724_memory_ptr_$dyn_memory_ptr_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n {\n let _1 := 96\n let tail_1 := add(headStart, _1)\n mstore(headStart, value0)\n let _2 := 32\n mstore(add(headStart, _2), _1)\n let pos := tail_1\n let length := mload(value1)\n mstore(tail_1, length)\n pos := add(headStart, 128)\n let tail_2 := add(add(headStart, shl(5, length)), 128)\n let srcPtr := add(value1, _2)\n let i := 0\n for { } lt(i, length) { i := add(i, 1) }\n {\n mstore(pos, add(sub(tail_2, headStart), not(127)))\n let _3 := mload(srcPtr)\n mstore(tail_2, and(mload(_3), 0xffffffffffffffffffffffffffffffffffffffff))\n mstore(add(tail_2, _2), mload(add(_3, _2)))\n let _4 := 0x40\n let memberValue0 := mload(add(_3, _4))\n mstore(add(tail_2, _4), _1)\n tail_2 := abi_encode_bytes(memberValue0, add(tail_2, _1))\n srcPtr := add(srcPtr, _2)\n pos := add(pos, _2)\n }\n tail := tail_2\n mstore(add(headStart, 0x40), value2)\n }\n function abi_decode_tuple_t_array$_t_bytes_memory_ptr_$dyn_memory_ptrt_uint256_fromMemory(headStart, dataEnd) -> value0, value1\n {\n let _1 := 64\n if slt(sub(dataEnd, headStart), _1) { revert(0, 0) }\n let offset := mload(headStart)\n let _2 := 0xffffffffffffffff\n if gt(offset, _2) { revert(0, 0) }\n let _3 := add(headStart, offset)\n if iszero(slt(add(_3, 0x1f), dataEnd)) { revert(0, 0) }\n let _4 := mload(_3)\n let _5 := 0x20\n let dst := allocate_memory(array_allocation_size_array_struct_Action_dyn(_4))\n let dst_1 := dst\n mstore(dst, _4)\n dst := add(dst, _5)\n let srcEnd := add(add(_3, shl(5, _4)), _5)\n if gt(srcEnd, dataEnd) { revert(0, 0) }\n let src := add(_3, _5)\n for { } lt(src, srcEnd) { src := add(src, _5) }\n {\n let innerOffset := mload(src)\n if gt(innerOffset, _2)\n {\n let _6 := 0\n revert(_6, _6)\n }\n let _7 := add(_3, innerOffset)\n if iszero(slt(add(_7, 63), dataEnd))\n {\n let _8 := 0\n revert(_8, _8)\n }\n let _9 := mload(add(_7, _5))\n let array := allocate_memory(array_allocation_size_bytes(_9))\n mstore(array, _9)\n if gt(add(add(_7, _9), _1), dataEnd)\n {\n let _10 := 0\n revert(_10, _10)\n }\n copy_memory_to_memory_with_cleanup(add(_7, _1), add(array, _5), _9)\n mstore(dst, array)\n dst := add(dst, _5)\n }\n value0 := dst_1\n value1 := mload(add(headStart, _5))\n }\n function abi_encode_bytes_calldata(start, length, pos) -> end\n {\n mstore(pos, length)\n calldatacopy(add(pos, 0x20), start, length)\n mstore(add(add(pos, length), 0x20), 0)\n end := add(add(pos, and(add(length, 31), not(31))), 0x20)\n }\n function abi_encode_tuple_t_uint64_t_uint64_t_bytes_calldata_ptr_t_array$_t_struct$_Action_$10724_calldata_ptr_$dyn_calldata_ptr_t_uint256__to_t_uint64_t_uint64_t_bytes_memory_ptr_t_array$_t_struct$_Action_$10724_memory_ptr_$dyn_memory_ptr_t_uint256__fromStack_reversed(headStart, value6, value5, value4, value3, value2, value1, value0) -> tail\n {\n let _1 := 0xffffffffffffffff\n mstore(headStart, and(value0, _1))\n let _2 := 32\n mstore(add(headStart, _2), and(value1, _1))\n let _3 := 64\n mstore(add(headStart, _3), 160)\n let tail_1 := abi_encode_bytes_calldata(value2, value3, add(headStart, 160))\n let _4 := 96\n mstore(add(headStart, _4), sub(tail_1, headStart))\n let pos := tail_1\n mstore(tail_1, value5)\n pos := add(tail_1, _2)\n let tail_2 := add(add(tail_1, shl(5, value5)), _2)\n let srcPtr := value4\n let i := 0\n for { } lt(i, value5) { i := add(i, 1) }\n {\n mstore(pos, add(sub(tail_2, tail_1), not(31)))\n let rel_offset_of_tail := calldataload(srcPtr)\n if iszero(slt(rel_offset_of_tail, add(sub(calldatasize(), value4), not(94)))) { revert(0, 0) }\n let value := add(rel_offset_of_tail, value4)\n let value_1 := calldataload(value)\n validator_revert_contract_IDAO(value_1)\n mstore(tail_2, and(value_1, 0xffffffffffffffffffffffffffffffffffffffff))\n mstore(add(tail_2, _2), calldataload(add(value, _2)))\n let rel_offset_of_tail_1 := calldataload(add(value, _3))\n if iszero(slt(rel_offset_of_tail_1, add(sub(calldatasize(), value), not(30)))) { revert(0, 0) }\n let value_2 := add(rel_offset_of_tail_1, value)\n let length := calldataload(value_2)\n let value_3 := add(value_2, _2)\n if gt(length, _1) { revert(0, 0) }\n if sgt(value_3, sub(calldatasize(), length)) { revert(0, 0) }\n mstore(add(tail_2, _3), _4)\n tail_2 := abi_encode_bytes_calldata(value_3, length, add(tail_2, _4))\n srcPtr := add(srcPtr, _2)\n pos := add(pos, _2)\n }\n tail := tail_2\n mstore(add(headStart, 128), value6)\n }\n}","id":92,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100675760003560e01c806373e1166d1161005057806373e1166d146100b55780637b2bf56e146100d6578063da35c664146100de57600080fd5b806301ffc9a71461006c578063634a9a8814610094575b600080fd5b61007f61007a3660046102ac565b6100e6565b60405190151581526020015b60405180910390f35b6100a76100a23660046103b1565b61011d565b60405161008b929190610573565b6100c86100c3366004610645565b61013a565b60405190815260200161008b565b6100c8610159565b6100c8610168565b60006001600160e01b0319821663368d719960e21b148061011757506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600061012d86868686610173565b9097909650945050505050565b600061014c8989898989898989610229565b9998505050505050505050565b600061016361028f565b905090565b600061016360335490565b6040516331c6fcc960e21b81526060906000906001600160a01b0387169063c71bf324906101a99088908890889060040161071c565b6000604051808303816000875af11580156101c8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526101f091908101906107b4565b604051919350915085907f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f90600090a294509492505050565b600061023361028f565b9050886001600160a01b0316817fa6c1f8f4276dc3f243459e13b557c84e8f4e90b2e09070bad5f6909cee687c9288888c8c8a8a8a60405161027b97969594939291906108d1565b60405180910390a398975050505050505050565b6000610299610168565b90506102a9603380546001019055565b90565b6000602082840312156102be57600080fd5b81356001600160e01b0319811681146102d657600080fd5b9392505050565b6001600160a01b03811681146102f257600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171561032e5761032e6102f5565b60405290565b604051601f8201601f1916810167ffffffffffffffff8111828210171561035d5761035d6102f5565b604052919050565b600067ffffffffffffffff82111561037f5761037f6102f5565b5060051b60200190565b600067ffffffffffffffff8211156103a3576103a36102f5565b50601f01601f191660200190565b600080600080608085870312156103c757600080fd5b6103d185356102dd565b8435935060208501359250604085013567ffffffffffffffff808211156103f757600080fd5b818701915087601f83011261040b57600080fd5b61041d6104188335610365565b610334565b82358082526020808301929160051b8501018a81111561043c57600080fd5b602085015b8181101561050f57848135111561045757600080fd5b803586016060818e03601f1901121561046f57600080fd5b61047761030b565b6020820135610485816102dd565b8152604082013560208201526060820135878111156104a357600080fd5b8083019250508d603f8301126104b857600080fd5b60208201356104c961041882610389565b8181528f60408386010111156104de57600080fd5b8160408501602083013760006020838301015280604084015250508086525050602084019350602081019050610441565b50979a969950976060013596505050505050565b60005b8381101561053e578181015183820152602001610526565b50506000910152565b6000815180845261055f816020860160208601610523565b601f01601f19169290920160200192915050565b6000604082016040835280855180835260608501915060608160051b8601019250602080880160005b838110156105ca57605f198887030185526105b8868351610547565b9550938201939082019060010161059c565b50509490940194909452949350505050565b803567ffffffffffffffff811681146105f457600080fd5b919050565b60008083601f84011261060b57600080fd5b50813567ffffffffffffffff81111561062357600080fd5b6020830191508360208260051b850101111561063e57600080fd5b9250929050565b60008060008060008060008060c0898b03121561066157600080fd5b883561066c816102dd565b9750602089013567ffffffffffffffff8082111561068957600080fd5b818b0191508b601f83011261069d57600080fd5b8135818111156106ac57600080fd5b8c60208285010111156106be57600080fd5b60208301995097506106d260408c016105dc565b96506106e060608c016105dc565b955060808b01359150808211156106f657600080fd5b506107038b828c016105f9565b999c989b50969995989497949560a00135949350505050565b600060608083018684526020828186015281875180845260808701915060808160051b880101935082890160005b8281101561079d57888603607f19018452815180516001600160a01b03168752858101518688015260409081015190870188905261078a88880182610547565b965050928401929084019060010161074a565b505050505060409390930193909352509392505050565b60008060408084860312156107c857600080fd5b835167ffffffffffffffff808211156107e057600080fd5b818601915086601f8301126107f457600080fd5b8151602061080461041883610365565b82815260059290921b8401810191818101908a84111561082357600080fd5b8286015b848110156108945780518681111561083f5760008081fd5b8701603f81018d136108515760008081fd5b8481015161086161041882610389565b8181528e8b8385010111156108765760008081fd5b610885828883018d8601610523565b85525050918301918301610827565b509890910151979997985050505050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b600067ffffffffffffffff808a1683526020818a1681850152604060a08186015261090060a086018a8c6108a8565b606086820381880152818983528483019050848a60051b8401018b60005b8c8110156109c357858303601f190184528135368f9003605e1901811261094457600080fd5b8e018035610951816102dd565b6001600160a01b0316845280890135898501528781013536829003601e1901811261097b57600080fd5b0188810190358a81111561098e57600080fd5b80360382131561099d57600080fd5b86898601526109af87860182846108a8565b958a0195945050509087019060010161091e565b5050809750505050505050508260808301529897505050505050505056fea164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x67 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x73E1166D GT PUSH2 0x50 JUMPI DUP1 PUSH4 0x73E1166D EQ PUSH2 0xB5 JUMPI DUP1 PUSH4 0x7B2BF56E EQ PUSH2 0xD6 JUMPI DUP1 PUSH4 0xDA35C664 EQ PUSH2 0xDE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x6C JUMPI DUP1 PUSH4 0x634A9A88 EQ PUSH2 0x94 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7F PUSH2 0x7A CALLDATASIZE PUSH1 0x4 PUSH2 0x2AC JUMP JUMPDEST PUSH2 0xE6 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xA7 PUSH2 0xA2 CALLDATASIZE PUSH1 0x4 PUSH2 0x3B1 JUMP JUMPDEST PUSH2 0x11D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x8B SWAP3 SWAP2 SWAP1 PUSH2 0x573 JUMP JUMPDEST PUSH2 0xC8 PUSH2 0xC3 CALLDATASIZE PUSH1 0x4 PUSH2 0x645 JUMP JUMPDEST PUSH2 0x13A JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x8B JUMP JUMPDEST PUSH2 0xC8 PUSH2 0x159 JUMP JUMPDEST PUSH2 0xC8 PUSH2 0x168 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x368D7199 PUSH1 0xE2 SHL EQ DUP1 PUSH2 0x117 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x12D DUP7 DUP7 DUP7 DUP7 PUSH2 0x173 JUMP JUMPDEST SWAP1 SWAP8 SWAP1 SWAP7 POP SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x14C DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 PUSH2 0x229 JUMP JUMPDEST SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x163 PUSH2 0x28F JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x163 PUSH1 0x33 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x31C6FCC9 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x60 SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0xC71BF324 SWAP1 PUSH2 0x1A9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x71C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1C8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x1F0 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x7B4 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 SWAP4 POP SWAP2 POP DUP6 SWAP1 PUSH32 0x712AE1383F79AC853F8D882153778E0260EF8F03B504E2866E0593E04D2B291F SWAP1 PUSH1 0x0 SWAP1 LOG2 SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x233 PUSH2 0x28F JUMP JUMPDEST SWAP1 POP DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH32 0xA6C1F8F4276DC3F243459E13B557C84E8F4E90B2E09070BAD5F6909CEE687C92 DUP9 DUP9 DUP13 DUP13 DUP11 DUP11 DUP11 PUSH1 0x40 MLOAD PUSH2 0x27B SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x8D1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x299 PUSH2 0x168 JUMP JUMPDEST SWAP1 POP PUSH2 0x2A9 PUSH1 0x33 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x2D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x2F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x60 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x32E JUMPI PUSH2 0x32E PUSH2 0x2F5 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x35D JUMPI PUSH2 0x35D PUSH2 0x2F5 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x37F JUMPI PUSH2 0x37F PUSH2 0x2F5 JUMP JUMPDEST POP PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x3A3 JUMPI PUSH2 0x3A3 PUSH2 0x2F5 JUMP JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x3C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3D1 DUP6 CALLDATALOAD PUSH2 0x2DD JUMP JUMPDEST DUP5 CALLDATALOAD SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x3F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x40B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x41D PUSH2 0x418 DUP4 CALLDATALOAD PUSH2 0x365 JUMP JUMPDEST PUSH2 0x334 JUMP JUMPDEST DUP3 CALLDATALOAD DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP3 SWAP2 PUSH1 0x5 SHL DUP6 ADD ADD DUP11 DUP2 GT ISZERO PUSH2 0x43C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP6 ADD JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x50F JUMPI DUP5 DUP2 CALLDATALOAD GT ISZERO PUSH2 0x457 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD DUP7 ADD PUSH1 0x60 DUP2 DUP15 SUB PUSH1 0x1F NOT ADD SLT ISZERO PUSH2 0x46F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x477 PUSH2 0x30B JUMP JUMPDEST PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH2 0x485 DUP2 PUSH2 0x2DD JUMP JUMPDEST DUP2 MSTORE PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x60 DUP3 ADD CALLDATALOAD DUP8 DUP2 GT ISZERO PUSH2 0x4A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 DUP4 ADD SWAP3 POP POP DUP14 PUSH1 0x3F DUP4 ADD SLT PUSH2 0x4B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH2 0x4C9 PUSH2 0x418 DUP3 PUSH2 0x389 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP16 PUSH1 0x40 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0x4DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP4 DUP4 ADD ADD MSTORE DUP1 PUSH1 0x40 DUP5 ADD MSTORE POP POP DUP1 DUP7 MSTORE POP POP PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x441 JUMP JUMPDEST POP SWAP8 SWAP11 SWAP7 SWAP10 POP SWAP8 PUSH1 0x60 ADD CALLDATALOAD SWAP7 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x53E JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x526 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x55F DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x523 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD PUSH1 0x40 DUP4 MSTORE DUP1 DUP6 MLOAD DUP1 DUP4 MSTORE PUSH1 0x60 DUP6 ADD SWAP2 POP PUSH1 0x60 DUP2 PUSH1 0x5 SHL DUP7 ADD ADD SWAP3 POP PUSH1 0x20 DUP1 DUP9 ADD PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x5CA JUMPI PUSH1 0x5F NOT DUP9 DUP8 SUB ADD DUP6 MSTORE PUSH2 0x5B8 DUP7 DUP4 MLOAD PUSH2 0x547 JUMP JUMPDEST SWAP6 POP SWAP4 DUP3 ADD SWAP4 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x59C JUMP JUMPDEST POP POP SWAP5 SWAP1 SWAP5 ADD SWAP5 SWAP1 SWAP5 MSTORE SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x5F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x60B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x623 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 PUSH1 0x5 SHL DUP6 ADD ADD GT ISZERO PUSH2 0x63E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP10 DUP12 SUB SLT ISZERO PUSH2 0x661 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP9 CALLDATALOAD PUSH2 0x66C DUP2 PUSH2 0x2DD JUMP JUMPDEST SWAP8 POP PUSH1 0x20 DUP10 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x689 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP12 ADD SWAP2 POP DUP12 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x69D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x6AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP13 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x6BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP10 POP SWAP8 POP PUSH2 0x6D2 PUSH1 0x40 DUP13 ADD PUSH2 0x5DC JUMP JUMPDEST SWAP7 POP PUSH2 0x6E0 PUSH1 0x60 DUP13 ADD PUSH2 0x5DC JUMP JUMPDEST SWAP6 POP PUSH1 0x80 DUP12 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x6F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x703 DUP12 DUP3 DUP13 ADD PUSH2 0x5F9 JUMP JUMPDEST SWAP10 SWAP13 SWAP9 SWAP12 POP SWAP7 SWAP10 SWAP6 SWAP9 SWAP5 SWAP8 SWAP5 SWAP6 PUSH1 0xA0 ADD CALLDATALOAD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP1 DUP4 ADD DUP7 DUP5 MSTORE PUSH1 0x20 DUP3 DUP2 DUP7 ADD MSTORE DUP2 DUP8 MLOAD DUP1 DUP5 MSTORE PUSH1 0x80 DUP8 ADD SWAP2 POP PUSH1 0x80 DUP2 PUSH1 0x5 SHL DUP9 ADD ADD SWAP4 POP DUP3 DUP10 ADD PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x79D JUMPI DUP9 DUP7 SUB PUSH1 0x7F NOT ADD DUP5 MSTORE DUP2 MLOAD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 MSTORE DUP6 DUP2 ADD MLOAD DUP7 DUP9 ADD MSTORE PUSH1 0x40 SWAP1 DUP2 ADD MLOAD SWAP1 DUP8 ADD DUP9 SWAP1 MSTORE PUSH2 0x78A DUP9 DUP9 ADD DUP3 PUSH2 0x547 JUMP JUMPDEST SWAP7 POP POP SWAP3 DUP5 ADD SWAP3 SWAP1 DUP5 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x74A JUMP JUMPDEST POP POP POP POP POP PUSH1 0x40 SWAP4 SWAP1 SWAP4 ADD SWAP4 SWAP1 SWAP4 MSTORE POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP1 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x7C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x7E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP7 ADD SWAP2 POP DUP7 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x7F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x20 PUSH2 0x804 PUSH2 0x418 DUP4 PUSH2 0x365 JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH1 0x5 SWAP3 SWAP1 SWAP3 SHL DUP5 ADD DUP2 ADD SWAP2 DUP2 DUP2 ADD SWAP1 DUP11 DUP5 GT ISZERO PUSH2 0x823 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 DUP7 ADD JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x894 JUMPI DUP1 MLOAD DUP7 DUP2 GT ISZERO PUSH2 0x83F JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST DUP8 ADD PUSH1 0x3F DUP2 ADD DUP14 SGT PUSH2 0x851 JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST DUP5 DUP2 ADD MLOAD PUSH2 0x861 PUSH2 0x418 DUP3 PUSH2 0x389 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP15 DUP12 DUP4 DUP6 ADD ADD GT ISZERO PUSH2 0x876 JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST PUSH2 0x885 DUP3 DUP9 DUP4 ADD DUP14 DUP7 ADD PUSH2 0x523 JUMP JUMPDEST DUP6 MSTORE POP POP SWAP2 DUP4 ADD SWAP2 DUP4 ADD PUSH2 0x827 JUMP JUMPDEST POP SWAP9 SWAP1 SWAP2 ADD MLOAD SWAP8 SWAP10 SWAP8 SWAP9 POP POP POP POP POP POP POP POP JUMP JUMPDEST DUP2 DUP4 MSTORE DUP2 DUP2 PUSH1 0x20 DUP6 ADD CALLDATACOPY POP PUSH1 0x0 DUP3 DUP3 ADD PUSH1 0x20 SWAP1 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1F SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND SWAP1 SWAP2 ADD ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP11 AND DUP4 MSTORE PUSH1 0x20 DUP2 DUP11 AND DUP2 DUP6 ADD MSTORE PUSH1 0x40 PUSH1 0xA0 DUP2 DUP7 ADD MSTORE PUSH2 0x900 PUSH1 0xA0 DUP7 ADD DUP11 DUP13 PUSH2 0x8A8 JUMP JUMPDEST PUSH1 0x60 DUP7 DUP3 SUB DUP2 DUP9 ADD MSTORE DUP2 DUP10 DUP4 MSTORE DUP5 DUP4 ADD SWAP1 POP DUP5 DUP11 PUSH1 0x5 SHL DUP5 ADD ADD DUP12 PUSH1 0x0 JUMPDEST DUP13 DUP2 LT ISZERO PUSH2 0x9C3 JUMPI DUP6 DUP4 SUB PUSH1 0x1F NOT ADD DUP5 MSTORE DUP2 CALLDATALOAD CALLDATASIZE DUP16 SWAP1 SUB PUSH1 0x5E NOT ADD DUP2 SLT PUSH2 0x944 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP15 ADD DUP1 CALLDATALOAD PUSH2 0x951 DUP2 PUSH2 0x2DD JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 MSTORE DUP1 DUP10 ADD CALLDATALOAD DUP10 DUP6 ADD MSTORE DUP8 DUP2 ADD CALLDATALOAD CALLDATASIZE DUP3 SWAP1 SUB PUSH1 0x1E NOT ADD DUP2 SLT PUSH2 0x97B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST ADD DUP9 DUP2 ADD SWAP1 CALLDATALOAD DUP11 DUP2 GT ISZERO PUSH2 0x98E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATASIZE SUB DUP3 SGT ISZERO PUSH2 0x99D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 DUP10 DUP7 ADD MSTORE PUSH2 0x9AF DUP8 DUP7 ADD DUP3 DUP5 PUSH2 0x8A8 JUMP JUMPDEST SWAP6 DUP11 ADD SWAP6 SWAP5 POP POP POP SWAP1 DUP8 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x91E JUMP JUMPDEST POP POP DUP1 SWAP8 POP POP POP POP POP POP POP POP DUP3 PUSH1 0x80 DUP4 ADD MSTORE SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"425:970:57:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1264:200:80;;;;;;:::i;:::-;;:::i;:::-;;;470:14:92;;463:22;445:41;;433:2;418:18;1264:200:80;;;;;;;;1067:326:57;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;608:453::-;;;;;;:::i;:::-;;:::i;:::-;;;7357:25:92;;;7345:2;7330:18;608:453:57;7211:177:92;487:115:57;;;:::i;943:113:80:-;;;:::i;1264:200::-;1350:4;-1:-1:-1;;;;;;1373:43:80;;-1:-1:-1;;;1373:43:80;;:84;;-1:-1:-1;;;;;;;;;;1189:51:11;;;1420:37:80;1366:91;1264:200;-1:-1:-1;;1264:200:80:o;1067:326:57:-;1237:26;1265:18;1323:63;1340:4;1346:11;1359:8;1369:16;1323;:63::i;:::-;1295:91;;;;-1:-1:-1;1067:326:57;-1:-1:-1;;;;;1067:326:57:o;608:453::-;843:18;886:168;915:8;937:9;;960:10;984:8;1006;;1028:16;886:15;:168::i;:::-;873:181;608:453;-1:-1:-1;;;;;;;;;608:453:57:o;487:115::-;533:18;576:19;:17;:19::i;:::-;563:32;;487:115;:::o;943:113:80:-;998:7;1024:25;:15;929:14:9;;838:112;3559:392:80;3824:62;;-1:-1:-1;;;3824:62:80;;3738:26;;3766:18;;-1:-1:-1;;;;;3824:12:80;;;;;:62;;3845:11;;3859:8;;3869:16;;3824:62;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3824:62:80;;;;;;;;;;;;:::i;:::-;3901:43;;3796:90;;-1:-1:-1;3796:90:80;-1:-1:-1;3931:11:80;;3901:43;;;;;3559:392;;;;;;;:::o;2346:600::-;2590:18;2633:19;:17;:19::i;:::-;2620:32;;2743:8;-1:-1:-1;;;;;2668:271:80;2710:10;2668:271;2809:10;2842:8;2775:9;;2873:8;;2912:16;2668:271;;;;;;;;;;;;:::i;:::-;;;;;;;;2346:600;;;;;;;;;;:::o;1553:149::-;1600:18;1643:15;:13;:15::i;:::-;1630:28;;1668:27;:15;1043:19:9;;1061:1;1043:19;;;956:123;1668:27:80;1553:149;:::o;14:286:92:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:92;;209:43;;199:71;;266:1;263;256:12;199:71;289:5;14:286;-1:-1:-1;;;14:286:92:o;497:160::-;-1:-1:-1;;;;;582:5:92;578:54;571:5;568:65;558:93;;647:1;644;637:12;558:93;497:160;:::o;662:127::-;723:10;718:3;714:20;711:1;704:31;754:4;751:1;744:15;778:4;775:1;768:15;794:253;866:2;860:9;908:4;896:17;;943:18;928:34;;964:22;;;925:62;922:88;;;990:18;;:::i;:::-;1026:2;1019:22;794:253;:::o;1052:275::-;1123:2;1117:9;1188:2;1169:13;;-1:-1:-1;;1165:27:92;1153:40;;1223:18;1208:34;;1244:22;;;1205:62;1202:88;;;1270:18;;:::i;:::-;1306:2;1299:22;1052:275;;-1:-1:-1;1052:275:92:o;1332:189::-;1398:4;1431:18;1423:6;1420:30;1417:56;;;1453:18;;:::i;:::-;-1:-1:-1;1498:1:92;1494:14;1510:4;1490:25;;1332:189::o;1526:186::-;1574:4;1607:18;1599:6;1596:30;1593:56;;;1629:18;;:::i;:::-;-1:-1:-1;1695:2:92;1674:15;-1:-1:-1;;1670:29:92;1701:4;1666:40;;1526:186::o;1717:2209::-;1867:6;1875;1883;1891;1944:3;1932:9;1923:7;1919:23;1915:33;1912:53;;;1961:1;1958;1951:12;1912:53;1974:55;2018:9;2005:23;1974:55;:::i;:::-;2061:9;2048:23;2038:33;;2118:2;2107:9;2103:18;2090:32;2080:42;;2173:2;2162:9;2158:18;2145:32;2196:18;2237:2;2229:6;2226:14;2223:34;;;2253:1;2250;2243:12;2223:34;2291:6;2280:9;2276:22;2266:32;;2336:7;2329:4;2325:2;2321:13;2317:27;2307:55;;2358:1;2355;2348:12;2307:55;2382:80;2398:63;2457:2;2444:16;2398:63;:::i;:::-;2382:80;:::i;:::-;2508:16;;2496:29;;;2550:2;2541:12;;;;2484:3;2592:1;2588:24;2580:33;;2576:42;2630:19;;;2627:39;;;2662:1;2659;2652:12;2627:39;2694:2;2690;2686:11;2706:1137;2722:6;2717:3;2714:15;2706:1137;;;2801:2;2795:3;2782:17;2779:25;2776:45;;;2817:1;2814;2807:12;2776:45;2852:17;;2844:26;;2922:4;2894:16;;;-1:-1:-1;;2890:30:92;2886:41;2883:61;;;2940:1;2937;2930:12;2883:61;2970:22;;:::i;:::-;3041:2;3037;3033:11;3020:25;3058:39;3089:7;3058:39;:::i;:::-;3110:22;;3189:2;3181:11;;3168:25;3163:2;3152:14;;3145:49;3244:4;3236:13;;3223:27;3266:16;;;3263:36;;;3295:1;3292;3285:12;3263:36;3330:8;3326:2;3322:17;3312:27;;;3379:7;3374:2;3370;3366:11;3362:25;3352:53;;3401:1;3398;3391:12;3352:53;3449:2;3445;3441:11;3428:25;3479:48;3495:31;3523:2;3495:31;:::i;3479:48::-;3554:2;3547:5;3540:17;3598:7;3593:2;3588;3584;3580:11;3576:20;3573:33;3570:53;;;3619:1;3616;3609:12;3570:53;3678:2;3673;3669;3665:11;3660:2;3653:5;3649:14;3636:45;3726:1;3721:2;3716;3709:5;3705:14;3701:23;3694:34;3764:5;3759:2;3752:5;3748:14;3741:29;;;3795:5;3790:3;3783:18;;;3830:2;3825:3;3821:12;3814:19;;2748:2;2743:3;2739:12;2732:19;;2706:1137;;;-1:-1:-1;1717:2209:92;;;;-1:-1:-1;3862:5:92;3914:4;3899:20;3886:34;;-1:-1:-1;;;;;;1717:2209:92:o;3931:250::-;4016:1;4026:113;4040:6;4037:1;4034:13;4026:113;;;4116:11;;;4110:18;4097:11;;;4090:39;4062:2;4055:10;4026:113;;;-1:-1:-1;;4173:1:92;4155:16;;4148:27;3931:250::o;4186:270::-;4227:3;4265:5;4259:12;4292:6;4287:3;4280:19;4308:76;4377:6;4370:4;4365:3;4361:14;4354:4;4347:5;4343:16;4308:76;:::i;:::-;4438:2;4417:15;-1:-1:-1;;4413:29:92;4404:39;;;;4445:4;4400:50;;4186:270;-1:-1:-1;;4186:270:92:o;4461:873::-;4649:4;4697:2;4686:9;4682:18;4727:2;4716:9;4709:21;4750:6;4785;4779:13;4816:6;4808;4801:22;4854:2;4843:9;4839:18;4832:25;;4916:2;4906:6;4903:1;4899:14;4888:9;4884:30;4880:39;4866:53;;4938:4;4977:2;4969:6;4965:15;4998:1;5008:254;5022:6;5019:1;5016:13;5008:254;;;5115:2;5111:7;5099:9;5091:6;5087:22;5083:36;5078:3;5071:49;5143:39;5175:6;5166;5160:13;5143:39;:::i;:::-;5133:49;-1:-1:-1;5240:12:92;;;;5205:15;;;;5044:1;5037:9;5008:254;;;-1:-1:-1;;5301:18:92;;;;5294:34;;;;5279:6;4461:873;-1:-1:-1;;;;4461:873:92:o;5339:171::-;5406:20;;5466:18;5455:30;;5445:41;;5435:69;;5500:1;5497;5490:12;5435:69;5339:171;;;:::o;5515:382::-;5593:8;5603:6;5657:3;5650:4;5642:6;5638:17;5634:27;5624:55;;5675:1;5672;5665:12;5624:55;-1:-1:-1;5698:20:92;;5741:18;5730:30;;5727:50;;;5773:1;5770;5763:12;5727:50;5810:4;5802:6;5798:17;5786:29;;5870:3;5863:4;5853:6;5850:1;5846:14;5838:6;5834:27;5830:38;5827:47;5824:67;;;5887:1;5884;5877:12;5824:67;5515:382;;;;;:::o;5902:1304::-;6069:6;6077;6085;6093;6101;6109;6117;6125;6178:3;6166:9;6157:7;6153:23;6149:33;6146:53;;;6195:1;6192;6185:12;6146:53;6234:9;6221:23;6253:37;6284:5;6253:37;:::i;:::-;6309:5;-1:-1:-1;6365:2:92;6350:18;;6337:32;6388:18;6418:14;;;6415:34;;;6445:1;6442;6435:12;6415:34;6483:6;6472:9;6468:22;6458:32;;6528:7;6521:4;6517:2;6513:13;6509:27;6499:55;;6550:1;6547;6540:12;6499:55;6590:2;6577:16;6616:2;6608:6;6605:14;6602:34;;;6632:1;6629;6622:12;6602:34;6677:7;6672:2;6663:6;6659:2;6655:15;6651:24;6648:37;6645:57;;;6698:1;6695;6688:12;6645:57;6729:2;6721:11;;;-1:-1:-1;6751:6:92;-1:-1:-1;6776:37:92;6809:2;6794:18;;6776:37;:::i;:::-;6766:47;;6832:37;6865:2;6854:9;6850:18;6832:37;:::i;:::-;6822:47;;6922:3;6911:9;6907:19;6894:33;6878:49;;6952:2;6942:8;6939:16;6936:36;;;6968:1;6965;6958:12;6936:36;;7007:87;7086:7;7075:8;7064:9;7060:24;7007:87;:::i;:::-;5902:1304;;;;-1:-1:-1;5902:1304:92;;;;;;6981:113;;7195:3;7180:19;7167:33;;5902:1304;-1:-1:-1;;;;5902:1304:92:o;7393:1305::-;7641:4;7670:2;7710;7699:9;7695:18;7740:6;7729:9;7722:25;7766:2;7804;7799;7788:9;7784:18;7777:30;7827:6;7862;7856:13;7893:6;7885;7878:22;7931:3;7920:9;7916:19;7909:26;;7994:3;7984:6;7981:1;7977:14;7966:9;7962:30;7958:40;7944:54;;8033:2;8025:6;8021:15;8054:1;8064:560;8078:6;8075:1;8072:13;8064:560;;;8143:22;;;-1:-1:-1;;8139:37:92;8127:50;;8200:13;;8245:9;;-1:-1:-1;;;;;8241:58:92;8226:74;;8343:11;;;8337:18;8320:15;;;8313:43;8379:4;8422:11;;;8416:18;8454:15;;;8447:27;;;8497:47;8528:15;;;8416:18;8497:47;:::i;:::-;8487:57;-1:-1:-1;;8602:12:92;;;;8567:15;;;;8100:1;8093:9;8064:560;;;-1:-1:-1;;;;;8678:4:92;8663:20;;;;8656:36;;;;-1:-1:-1;8641:6:92;7393:1305;-1:-1:-1;;;7393:1305:92:o;8703:1703::-;8816:6;8824;8855:2;8898;8886:9;8877:7;8873:23;8869:32;8866:52;;;8914:1;8911;8904:12;8866:52;8947:9;8941:16;8976:18;9017:2;9009:6;9006:14;9003:34;;;9033:1;9030;9023:12;9003:34;9071:6;9060:9;9056:22;9046:32;;9116:7;9109:4;9105:2;9101:13;9097:27;9087:55;;9138:1;9135;9128:12;9087:55;9167:2;9161:9;9189:4;9213:66;9229:49;9275:2;9229:49;:::i;9213:66::-;9313:15;;;9395:1;9391:10;;;;9383:19;;9379:28;;;9344:12;;;;9419:19;;;9416:39;;;9451:1;9448;9441:12;9416:39;9483:2;9479;9475:11;9495:837;9511:6;9506:3;9503:15;9495:837;;;9590:3;9584:10;9626:2;9613:11;9610:19;9607:109;;;9670:1;9699:2;9695;9688:14;9607:109;9739:20;;9794:2;9786:11;;9782:25;-1:-1:-1;9772:123:92;;9849:1;9878:2;9874;9867:14;9772:123;9932:2;9928;9924:11;9918:18;9962:48;9978:31;10006:2;9978:31;:::i;9962:48::-;10037:2;10030:5;10023:17;10081:7;10076:2;10071;10067;10063:11;10059:20;10056:33;10053:126;;;10131:1;10161:3;10156;10149:16;10053:126;10192:67;10256:2;10251;10244:5;10240:14;10235:2;10231;10227:11;10192:67;:::i;:::-;10272:18;;-1:-1:-1;;10310:12:92;;;;9528;;9495:837;;;-1:-1:-1;10381:18:92;;;;10375:25;10351:5;;10375:25;;-1:-1:-1;;;;;;;;8703:1703:92:o;10411:266::-;10499:6;10494:3;10487:19;10551:6;10544:5;10537:4;10532:3;10528:14;10515:43;-1:-1:-1;10603:1:92;10578:16;;;10596:4;10574:27;;;10567:38;;;;10659:2;10638:15;;;-1:-1:-1;;10634:29:92;10625:39;;;10621:50;;10411:266::o;10682:2240::-;11022:4;11051:18;11108:2;11100:6;11096:15;11085:9;11078:34;11131:2;11181;11173:6;11169:15;11164:2;11153:9;11149:18;11142:43;11204:2;11242:3;11237:2;11226:9;11222:18;11215:31;11269:62;11326:3;11315:9;11311:19;11303:6;11295;11269:62;:::i;:::-;11350:2;11400:9;11392:6;11388:22;11383:2;11372:9;11368:18;11361:50;11431:6;11461;11453;11446:22;11496:2;11488:6;11484:15;11477:22;;11555:2;11545:6;11542:1;11538:14;11530:6;11526:27;11522:36;11581:6;11605:1;11615:1234;11629:6;11626:1;11623:13;11615:1234;;;11694:19;;;-1:-1:-1;;11690:33:92;11678:46;;11763:20;;11838:14;11834:27;;;-1:-1:-1;;11830:41:92;11806:66;;11796:94;;11886:1;11883;11876:12;11796:94;11916:31;;11975:19;;12007:39;11975:19;12007:39;:::i;:::-;-1:-1:-1;;;;;12074:56:92;12059:72;;12181:14;;;12168:28;12151:15;;;12144:53;12251:14;;;12238:28;12323:14;12319:26;;;-1:-1:-1;;12315:40:92;12289:67;;12279:95;;12370:1;12367;12360:12;12279:95;12402:32;12510:16;;;;12461:21;12542:14;;;12539:34;;;12569:1;12566;12559:12;12539:34;12622:6;12606:14;12602:27;12593:7;12589:41;12586:61;;;12643:1;12640;12633:12;12586:61;12684:2;12679;12671:6;12667:15;12660:27;12710:59;12765:2;12757:6;12753:15;12745:6;12736:7;12710:59;:::i;:::-;12827:12;;;;12700:69;-1:-1:-1;;;12792:15:92;;;;11651:1;11644:9;11615:1234;;;11619:3;;12866:6;12858:14;;;;;;;;;12909:6;12903:3;12892:9;12888:19;12881:35;10682:2240;;;;;;;;;;:::o"},"gasEstimates":{"creation":{"codeDepositCost":"508400","executionCost":"543","totalCost":"508943"},"external":{"createProposal(address,bytes,uint64,uint64,(address,uint256,bytes)[],uint256)":"infinite","createProposalId()":"infinite","executeProposal(address,uint256,(address,uint256,bytes)[],uint256)":"infinite","proposalCount()":"2374","supportsInterface(bytes4)":"427"}},"methodIdentifiers":{"createProposal(address,bytes,uint64,uint64,(address,uint256,bytes)[],uint256)":"73e1166d","createProposalId()":"7b2bf56e","executeProposal(address,uint256,(address,uint256,bytes)[],uint256)":"634a9a88","proposalCount()":"da35c664","supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"proposalId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"creator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"startDate\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"endDate\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"struct IDAO.Action[]\",\"name\":\"actions\",\"type\":\"tuple[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"allowFailureMap\",\"type\":\"uint256\"}],\"name\":\"ProposalCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"proposalId\",\"type\":\"uint256\"}],\"name\":\"ProposalExecuted\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_creator\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_metadata\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"_startDate\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"_endDate\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IDAO.Action[]\",\"name\":\"_actions\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"_allowFailureMap\",\"type\":\"uint256\"}],\"name\":\"createProposal\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"proposalId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"createProposalId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"proposalId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IDAO\",\"name\":\"_dao\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_proposalId\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IDAO.Action[]\",\"name\":\"_actions\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"_allowFailureMap\",\"type\":\"uint256\"}],\"name\":\"executeProposal\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"execResults\",\"type\":\"bytes[]\"},{\"internalType\":\"uint256\",\"name\":\"failureMap\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proposalCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"DO NOT USE IN PRODUCTION!\",\"kind\":\"dev\",\"methods\":{\"proposalCount()\":{\"returns\":{\"_0\":\"The proposal count.\"}},\"supportsInterface(bytes4)\":{\"params\":{\"_interfaceId\":\"The ID of the interface.\"},\"returns\":{\"_0\":\"Returns `true` if the interface is supported.\"}}},\"version\":1},\"userdoc\":{\"events\":{\"ProposalCreated(uint256,address,uint64,uint64,bytes,(address,uint256,bytes)[],uint256)\":{\"notice\":\"Emitted when a proposal is created.\"},\"ProposalExecuted(uint256)\":{\"notice\":\"Emitted when a proposal is executed.\"}},\"kind\":\"user\",\"methods\":{\"proposalCount()\":{\"notice\":\"Returns the proposal count determining the next proposal ID.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Checks if this or the parent contract supports an interface by its ID.\"}},\"notice\":\"A mock contract containing functions to create and execute proposals as well as storage gaps in inherited contracts to be used in UUPS upgradeable contracts.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/mocks/plugin/extensions/proposal/ProposalUpgradeableMock.sol\":\"ProposalUpgradeableMock\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Counters.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title Counters\\n * @author Matt Condon (@shrugs)\\n * @dev Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number\\n * of elements in a mapping, issuing ERC721 ids, or counting request ids.\\n *\\n * Include with `using Counters for Counters.Counter;`\\n */\\nlibrary CountersUpgradeable {\\n struct Counter {\\n // This variable should never be directly accessed by users of the library: interactions must be restricted to\\n // the library's function. As of Solidity v0.5.2, this cannot be enforced, though there is a proposal to add\\n // this feature: see https://github.com/ethereum/solidity/issues/4637\\n uint256 _value; // default: 0\\n }\\n\\n function current(Counter storage counter) internal view returns (uint256) {\\n return counter._value;\\n }\\n\\n function increment(Counter storage counter) internal {\\n unchecked {\\n counter._value += 1;\\n }\\n }\\n\\n function decrement(Counter storage counter) internal {\\n uint256 value = counter._value;\\n require(value > 0, \\\"Counter: decrement overflow\\\");\\n unchecked {\\n counter._value = value - 1;\\n }\\n }\\n\\n function reset(Counter storage counter) internal {\\n counter._value = 0;\\n }\\n}\\n\",\"keccak256\":\"0x798741e231b22b81e2dd2eddaaf8832dee4baf5cd8e2dbaa5c1dd12a1c053c4d\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165Upgradeable.sol\\\";\\nimport {Initializable} from \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165Upgradeable is Initializable, IERC165Upgradeable {\\n function __ERC165_init() internal onlyInitializing {\\n }\\n\\n function __ERC165_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165Upgradeable).interfaceId;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0xd90d7723512df65ae417adaf0801042940f0dabd60039ceeaffe34aa5b238da1\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165Upgradeable {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\"},\"src/dao/IDAO.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IDAO\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for DAOs within the Aragon App DAO framework.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IDAO {\\n /// @notice The action struct to be consumed by the DAO's `execute` function resulting in an external call.\\n /// @param to The address to call.\\n /// @param value The native token value to be sent with the call.\\n /// @param data The bytes-encoded function selector and calldata for the call.\\n struct Action {\\n address to;\\n uint256 value;\\n bytes data;\\n }\\n\\n /// @notice Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\\n /// @param _where The address of the contract.\\n /// @param _who The address of a EOA or contract to give the permissions.\\n /// @param _permissionId The permission identifier.\\n /// @param _data The optional data passed to the `PermissionCondition` registered.\\n /// @return Returns true if the address has permission, false if not.\\n function hasPermission(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes memory _data\\n ) external view returns (bool);\\n\\n /// @notice Updates the DAO metadata (e.g., an IPFS hash).\\n /// @param _metadata The IPFS hash of the new metadata object.\\n function setMetadata(bytes calldata _metadata) external;\\n\\n /// @notice Emitted when the DAO metadata is updated.\\n /// @param metadata The IPFS hash of the new metadata object.\\n event MetadataSet(bytes metadata);\\n\\n /// @notice Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted.\\n /// @param _callId The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce.\\n /// @param _actions The array of actions.\\n /// @param _allowFailureMap A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @return The array of results obtained from the executed actions in `bytes`.\\n /// @return The resulting failure map containing the actions have actually failed.\\n function execute(\\n bytes32 _callId,\\n Action[] memory _actions,\\n uint256 _allowFailureMap\\n ) external returns (bytes[] memory, uint256);\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param actor The address of the caller.\\n /// @param callId The ID of the call.\\n /// @param actions The array of actions executed.\\n /// @param allowFailureMap The allow failure map encoding which actions are allowed to fail.\\n /// @param failureMap The failure map encoding which actions have failed.\\n /// @param execResults The array with the results of the executed actions.\\n /// @dev The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce.\\n event Executed(\\n address indexed actor,\\n bytes32 callId,\\n Action[] actions,\\n uint256 allowFailureMap,\\n uint256 failureMap,\\n bytes[] execResults\\n );\\n\\n /// @notice Emitted when a standard callback is registered.\\n /// @param interfaceId The ID of the interface.\\n /// @param callbackSelector The selector of the callback function.\\n /// @param magicNumber The magic number to be registered for the callback function selector.\\n event StandardCallbackRegistered(\\n bytes4 interfaceId,\\n bytes4 callbackSelector,\\n bytes4 magicNumber\\n );\\n\\n /// @notice Deposits (native) tokens to the DAO contract with a reference string.\\n /// @param _token The address of the token or address(0) in case of the native token.\\n /// @param _amount The amount of tokens to deposit.\\n /// @param _reference The reference describing the deposit reason.\\n function deposit(address _token, uint256 _amount, string calldata _reference) external payable;\\n\\n /// @notice Emitted when a token deposit has been made to the DAO.\\n /// @param sender The address of the sender.\\n /// @param token The address of the deposited token.\\n /// @param amount The amount of tokens deposited.\\n /// @param _reference The reference describing the deposit reason.\\n event Deposited(\\n address indexed sender,\\n address indexed token,\\n uint256 amount,\\n string _reference\\n );\\n\\n /// @notice Emitted when a native token deposit has been made to the DAO.\\n /// @dev This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).\\n /// @param sender The address of the sender.\\n /// @param amount The amount of native tokens deposited.\\n event NativeTokenDeposited(address sender, uint256 amount);\\n\\n /// @notice Setter for the trusted forwarder verifying the meta transaction.\\n /// @param _trustedForwarder The trusted forwarder address.\\n function setTrustedForwarder(address _trustedForwarder) external;\\n\\n /// @notice Getter for the trusted forwarder verifying the meta transaction.\\n /// @return The trusted forwarder address.\\n function getTrustedForwarder() external view returns (address);\\n\\n /// @notice Emitted when a new TrustedForwarder is set on the DAO.\\n /// @param forwarder the new forwarder address.\\n event TrustedForwarderSet(address forwarder);\\n\\n /// @notice Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\\n /// @param _hash The hash of the data to be signed.\\n /// @param _signature The signature byte array associated with `_hash`.\\n /// @return Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not.\\n function isValidSignature(bytes32 _hash, bytes memory _signature) external returns (bytes4);\\n\\n /// @notice Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\\n /// @param _interfaceId The ID of the interface.\\n /// @param _callbackSelector The selector of the callback function.\\n /// @param _magicNumber The magic number to be registered for the function signature.\\n function registerStandardCallback(\\n bytes4 _interfaceId,\\n bytes4 _callbackSelector,\\n bytes4 _magicNumber\\n ) external;\\n\\n /// @notice Removed function being left here to not corrupt the IDAO interface ID. Any call will revert.\\n /// @dev Introduced in v1.0.0. Removed in v1.4.0.\\n function setSignatureValidator(address) external;\\n}\\n\",\"keccak256\":\"0xb7f615523c26de042edce98731c658f44a1edb2464387ac1b642c4c69f57128e\",\"license\":\"AGPL-3.0-or-later\"},\"src/mocks/plugin/extensions/proposal/ProposalUpgradeableMock.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ProposalUpgradeable} from \\\"../../../../plugin/extensions/proposal/ProposalUpgradeable.sol\\\";\\nimport {IDAO} from \\\"../../../../dao/IDAO.sol\\\";\\n\\n/// @notice A mock contract containing functions to create and execute proposals as well as storage gaps in inherited contracts to be used in UUPS upgradeable contracts.\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract ProposalUpgradeableMock is ProposalUpgradeable {\\n function createProposalId() external returns (uint256 proposalId) {\\n proposalId = _createProposalId();\\n }\\n\\n function createProposal(\\n address _creator,\\n bytes calldata _metadata,\\n uint64 _startDate,\\n uint64 _endDate,\\n IDAO.Action[] calldata _actions,\\n uint256 _allowFailureMap\\n ) external returns (uint256 proposalId) {\\n proposalId = _createProposal(\\n _creator,\\n _metadata,\\n _startDate,\\n _endDate,\\n _actions,\\n _allowFailureMap\\n );\\n }\\n\\n function executeProposal(\\n IDAO _dao,\\n uint256 _proposalId,\\n IDAO.Action[] memory _actions,\\n uint256 _allowFailureMap\\n ) external returns (bytes[] memory execResults, uint256 failureMap) {\\n (execResults, failureMap) = _executeProposal(_dao, _proposalId, _actions, _allowFailureMap);\\n }\\n}\\n\",\"keccak256\":\"0x0c8c9471fdd46b4a1bd6ec963eaab4852941bd134ae637a486a8abbd54642f7c\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/extensions/proposal/IProposal.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IDAO} from \\\"../../../dao/IDAO.sol\\\";\\n\\n/// @title IProposal\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface to be implemented by DAO plugins that create and execute proposals.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IProposal {\\n /// @notice Emitted when a proposal is created.\\n /// @param proposalId The ID of the proposal.\\n /// @param creator The creator of the proposal.\\n /// @param startDate The start date of the proposal in seconds.\\n /// @param endDate The end date of the proposal in seconds.\\n /// @param metadata The metadata of the proposal.\\n /// @param actions The actions that will be executed if the proposal passes.\\n /// @param allowFailureMap A bitmap allowing the proposal to succeed, even if individual actions might revert. If the bit at index `i` is 1, the proposal succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n event ProposalCreated(\\n uint256 indexed proposalId,\\n address indexed creator,\\n uint64 startDate,\\n uint64 endDate,\\n bytes metadata,\\n IDAO.Action[] actions,\\n uint256 allowFailureMap\\n );\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param proposalId The ID of the proposal.\\n event ProposalExecuted(uint256 indexed proposalId);\\n\\n /// @notice Returns the proposal count determining the next proposal ID.\\n /// @return The proposal count.\\n function proposalCount() external view returns (uint256);\\n}\\n\",\"keccak256\":\"0x06205453d6800f598d41848ba9ebf50919ffb773f3ba63247ddcfb2464358239\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/extensions/proposal/ProposalUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {CountersUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol\\\";\\nimport {ERC165Upgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\\\";\\n\\nimport {IDAO} from \\\"../../../dao/IDAO.sol\\\";\\nimport {IProposal} from \\\"./IProposal.sol\\\";\\n\\n/// @title ProposalUpgradeable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract contract containing the traits and internal functionality to create and execute proposals that can be inherited by upgradeable DAO plugins.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract ProposalUpgradeable is IProposal, ERC165Upgradeable {\\n using CountersUpgradeable for CountersUpgradeable.Counter;\\n\\n /// @notice The incremental ID for proposals and executions.\\n CountersUpgradeable.Counter private proposalCounter;\\n\\n /// @inheritdoc IProposal\\n function proposalCount() public view override returns (uint256) {\\n return proposalCounter.current();\\n }\\n\\n /// @notice Checks if this or the parent contract supports an interface by its ID.\\n /// @param _interfaceId The ID of the interface.\\n /// @return Returns `true` if the interface is supported.\\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\\n return _interfaceId == type(IProposal).interfaceId || super.supportsInterface(_interfaceId);\\n }\\n\\n /// @notice Creates a proposal ID.\\n /// @return proposalId The proposal ID.\\n function _createProposalId() internal returns (uint256 proposalId) {\\n proposalId = proposalCount();\\n proposalCounter.increment();\\n }\\n\\n /// @notice Internal function to create a proposal.\\n /// @param _metadata The proposal metadata.\\n /// @param _startDate The start date of the proposal in seconds.\\n /// @param _endDate The end date of the proposal in seconds.\\n /// @param _allowFailureMap A bitmap allowing the proposal to succeed, even if individual actions might revert. If the bit at index `i` is 1, the proposal succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @param _actions The actions that will be executed after the proposal passes.\\n /// @return proposalId The ID of the proposal.\\n function _createProposal(\\n address _creator,\\n bytes calldata _metadata,\\n uint64 _startDate,\\n uint64 _endDate,\\n IDAO.Action[] calldata _actions,\\n uint256 _allowFailureMap\\n ) internal virtual returns (uint256 proposalId) {\\n proposalId = _createProposalId();\\n\\n emit ProposalCreated({\\n proposalId: proposalId,\\n creator: _creator,\\n metadata: _metadata,\\n startDate: _startDate,\\n endDate: _endDate,\\n actions: _actions,\\n allowFailureMap: _allowFailureMap\\n });\\n }\\n\\n /// @notice Internal function to execute a proposal.\\n /// @param _proposalId The ID of the proposal to be executed.\\n /// @param _actions The array of actions to be executed.\\n /// @param _allowFailureMap A bitmap allowing the proposal to succeed, even if individual actions might revert. If the bit at index `i` is 1, the proposal succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @return execResults The array with the results of the executed actions.\\n /// @return failureMap The failure map encoding which actions have failed.\\n function _executeProposal(\\n IDAO _dao,\\n uint256 _proposalId,\\n IDAO.Action[] memory _actions,\\n uint256 _allowFailureMap\\n ) internal virtual returns (bytes[] memory execResults, uint256 failureMap) {\\n (execResults, failureMap) = _dao.execute(bytes32(_proposalId), _actions, _allowFailureMap);\\n emit ProposalExecuted({proposalId: _proposalId});\\n }\\n\\n /// @notice This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain (see [OpenZeppelin's guide about storage gaps](https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps)).\\n uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0x6ec477b535a4c08fb0464db637f67bed89c89086150c1d3c107f9a69afc65a73\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[{"astId":372,"contract":"src/mocks/plugin/extensions/proposal/ProposalUpgradeableMock.sol:ProposalUpgradeableMock","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":375,"contract":"src/mocks/plugin/extensions/proposal/ProposalUpgradeableMock.sol:ProposalUpgradeableMock","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":2821,"contract":"src/mocks/plugin/extensions/proposal/ProposalUpgradeableMock.sol:ProposalUpgradeableMock","label":"__gap","offset":0,"slot":"1","type":"t_array(t_uint256)50_storage"},{"astId":14069,"contract":"src/mocks/plugin/extensions/proposal/ProposalUpgradeableMock.sol:ProposalUpgradeableMock","label":"proposalCounter","offset":0,"slot":"51","type":"t_struct(Counter)2599_storage"},{"astId":14200,"contract":"src/mocks/plugin/extensions/proposal/ProposalUpgradeableMock.sol:ProposalUpgradeableMock","label":"__gap","offset":0,"slot":"52","type":"t_array(t_uint256)49_storage"}],"types":{"t_array(t_uint256)49_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[49]","numberOfBytes":"1568"},"t_array(t_uint256)50_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[50]","numberOfBytes":"1600"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_struct(Counter)2599_storage":{"encoding":"inplace","label":"struct CountersUpgradeable.Counter","members":[{"astId":2598,"contract":"src/mocks/plugin/extensions/proposal/ProposalUpgradeableMock.sol:ProposalUpgradeableMock","label":"_value","offset":0,"slot":"0","type":"t_uint256"}],"numberOfBytes":"32"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"events":{"ProposalCreated(uint256,address,uint64,uint64,bytes,(address,uint256,bytes)[],uint256)":{"notice":"Emitted when a proposal is created."},"ProposalExecuted(uint256)":{"notice":"Emitted when a proposal is executed."}},"kind":"user","methods":{"proposalCount()":{"notice":"Returns the proposal count determining the next proposal ID."},"supportsInterface(bytes4)":{"notice":"Checks if this or the parent contract supports an interface by its ID."}},"notice":"A mock contract containing functions to create and execute proposals as well as storage gaps in inherited contracts to be used in UUPS upgradeable contracts.","version":1}}},"src/mocks/token/ERC1155Mock.sol":{"ERC1155Mock":{"abi":[{"inputs":[{"internalType":"string","name":"_uri","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"TransferSingle","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"value","type":"string"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"URI","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeBatchTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"DO NOT USE IN PRODUCTION!","kind":"dev","methods":{"balanceOf(address,uint256)":{"details":"See {IERC1155-balanceOf}. Requirements: - `account` cannot be the zero address."},"balanceOfBatch(address[],uint256[])":{"details":"See {IERC1155-balanceOfBatch}. Requirements: - `accounts` and `ids` must have the same length."},"isApprovedForAll(address,address)":{"details":"See {IERC1155-isApprovedForAll}."},"safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)":{"details":"See {IERC1155-safeBatchTransferFrom}."},"safeTransferFrom(address,address,uint256,uint256,bytes)":{"details":"See {IERC1155-safeTransferFrom}."},"setApprovalForAll(address,bool)":{"details":"See {IERC1155-setApprovalForAll}."},"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."},"uri(uint256)":{"details":"See {IERC1155MetadataURI-uri}. This implementation returns the same URI for *all* token types. It relies on the token type ID substitution mechanism https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP]. Clients calling this function must replace the `\\{id\\}` substring with the actual token type ID."}},"version":1},"evm":{"bytecode":{"functionDebugData":{"@_12643":{"entryPoint":null,"id":12643,"parameterSlots":1,"returnSlots":0},"@_5800":{"entryPoint":null,"id":5800,"parameterSlots":1,"returnSlots":0},"@_setURI_6311":{"entryPoint":72,"id":6311,"parameterSlots":1,"returnSlots":0},"abi_decode_tuple_t_string_memory_ptr_fromMemory":{"entryPoint":112,"id":null,"parameterSlots":2,"returnSlots":1},"array_dataslot_string_storage":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"clean_up_bytearray_end_slots_string_storage":{"entryPoint":385,"id":null,"parameterSlots":3,"returnSlots":0},"copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage":{"entryPoint":468,"id":null,"parameterSlots":2,"returnSlots":0},"extract_byte_array_length":{"entryPoint":325,"id":null,"parameterSlots":1,"returnSlots":1},"extract_used_part_and_set_length_of_short_byte_array":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"panic_error_0x41":{"entryPoint":90,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:3779:92","statements":[{"nodeType":"YulBlock","src":"6:3:92","statements":[]},{"body":{"nodeType":"YulBlock","src":"46:95:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"63:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"70:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"75:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"66:3:92"},"nodeType":"YulFunctionCall","src":"66:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"56:6:92"},"nodeType":"YulFunctionCall","src":"56:31:92"},"nodeType":"YulExpressionStatement","src":"56:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"103:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"106:4:92","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"96:6:92"},"nodeType":"YulFunctionCall","src":"96:15:92"},"nodeType":"YulExpressionStatement","src":"96:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"127:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"130:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"120:6:92"},"nodeType":"YulFunctionCall","src":"120:15:92"},"nodeType":"YulExpressionStatement","src":"120:15:92"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"14:127:92"},{"body":{"nodeType":"YulBlock","src":"237:951:92","statements":[{"nodeType":"YulVariableDeclaration","src":"247:12:92","value":{"kind":"number","nodeType":"YulLiteral","src":"257:2:92","type":"","value":"32"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"251:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"304:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"313:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"316:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"306:6:92"},"nodeType":"YulFunctionCall","src":"306:12:92"},"nodeType":"YulExpressionStatement","src":"306:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"279:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"288:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"275:3:92"},"nodeType":"YulFunctionCall","src":"275:23:92"},{"name":"_1","nodeType":"YulIdentifier","src":"300:2:92"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"271:3:92"},"nodeType":"YulFunctionCall","src":"271:32:92"},"nodeType":"YulIf","src":"268:52:92"},{"nodeType":"YulVariableDeclaration","src":"329:30:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"349:9:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"343:5:92"},"nodeType":"YulFunctionCall","src":"343:16:92"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"333:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"368:28:92","value":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"386:2:92","type":"","value":"64"},{"kind":"number","nodeType":"YulLiteral","src":"390:1:92","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"382:3:92"},"nodeType":"YulFunctionCall","src":"382:10:92"},{"kind":"number","nodeType":"YulLiteral","src":"394:1:92","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"378:3:92"},"nodeType":"YulFunctionCall","src":"378:18:92"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"372:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"423:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"432:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"435:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"425:6:92"},"nodeType":"YulFunctionCall","src":"425:12:92"},"nodeType":"YulExpressionStatement","src":"425:12:92"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"411:6:92"},{"name":"_2","nodeType":"YulIdentifier","src":"419:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"408:2:92"},"nodeType":"YulFunctionCall","src":"408:14:92"},"nodeType":"YulIf","src":"405:34:92"},{"nodeType":"YulVariableDeclaration","src":"448:32:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"462:9:92"},{"name":"offset","nodeType":"YulIdentifier","src":"473:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"458:3:92"},"nodeType":"YulFunctionCall","src":"458:22:92"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"452:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"528:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"537:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"540:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"530:6:92"},"nodeType":"YulFunctionCall","src":"530:12:92"},"nodeType":"YulExpressionStatement","src":"530:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"507:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"511:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"503:3:92"},"nodeType":"YulFunctionCall","src":"503:13:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"518:7:92"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"499:3:92"},"nodeType":"YulFunctionCall","src":"499:27:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"492:6:92"},"nodeType":"YulFunctionCall","src":"492:35:92"},"nodeType":"YulIf","src":"489:55:92"},{"nodeType":"YulVariableDeclaration","src":"553:19:92","value":{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"569:2:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"563:5:92"},"nodeType":"YulFunctionCall","src":"563:9:92"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"557:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"595:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"597:16:92"},"nodeType":"YulFunctionCall","src":"597:18:92"},"nodeType":"YulExpressionStatement","src":"597:18:92"}]},"condition":{"arguments":[{"name":"_4","nodeType":"YulIdentifier","src":"587:2:92"},{"name":"_2","nodeType":"YulIdentifier","src":"591:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"584:2:92"},"nodeType":"YulFunctionCall","src":"584:10:92"},"nodeType":"YulIf","src":"581:36:92"},{"nodeType":"YulVariableDeclaration","src":"626:17:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"640:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"636:3:92"},"nodeType":"YulFunctionCall","src":"636:7:92"},"variables":[{"name":"_5","nodeType":"YulTypedName","src":"630:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"652:23:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"672:2:92","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"666:5:92"},"nodeType":"YulFunctionCall","src":"666:9:92"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"656:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"684:71:92","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"706:6:92"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"_4","nodeType":"YulIdentifier","src":"730:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"734:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"726:3:92"},"nodeType":"YulFunctionCall","src":"726:13:92"},{"name":"_5","nodeType":"YulIdentifier","src":"741:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"722:3:92"},"nodeType":"YulFunctionCall","src":"722:22:92"},{"kind":"number","nodeType":"YulLiteral","src":"746:2:92","type":"","value":"63"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"718:3:92"},"nodeType":"YulFunctionCall","src":"718:31:92"},{"name":"_5","nodeType":"YulIdentifier","src":"751:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"714:3:92"},"nodeType":"YulFunctionCall","src":"714:40:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"702:3:92"},"nodeType":"YulFunctionCall","src":"702:53:92"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"688:10:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"814:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"816:16:92"},"nodeType":"YulFunctionCall","src":"816:18:92"},"nodeType":"YulExpressionStatement","src":"816:18:92"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"773:10:92"},{"name":"_2","nodeType":"YulIdentifier","src":"785:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"770:2:92"},"nodeType":"YulFunctionCall","src":"770:18:92"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"793:10:92"},{"name":"memPtr","nodeType":"YulIdentifier","src":"805:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"790:2:92"},"nodeType":"YulFunctionCall","src":"790:22:92"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"767:2:92"},"nodeType":"YulFunctionCall","src":"767:46:92"},"nodeType":"YulIf","src":"764:72:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"852:2:92","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"856:10:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"845:6:92"},"nodeType":"YulFunctionCall","src":"845:22:92"},"nodeType":"YulExpressionStatement","src":"845:22:92"},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"883:6:92"},{"name":"_4","nodeType":"YulIdentifier","src":"891:2:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"876:6:92"},"nodeType":"YulFunctionCall","src":"876:18:92"},"nodeType":"YulExpressionStatement","src":"876:18:92"},{"body":{"nodeType":"YulBlock","src":"940:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"949:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"952:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"942:6:92"},"nodeType":"YulFunctionCall","src":"942:12:92"},"nodeType":"YulExpressionStatement","src":"942:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"917:2:92"},{"name":"_4","nodeType":"YulIdentifier","src":"921:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"913:3:92"},"nodeType":"YulFunctionCall","src":"913:11:92"},{"name":"_1","nodeType":"YulIdentifier","src":"926:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"909:3:92"},"nodeType":"YulFunctionCall","src":"909:20:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"931:7:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"906:2:92"},"nodeType":"YulFunctionCall","src":"906:33:92"},"nodeType":"YulIf","src":"903:53:92"},{"nodeType":"YulVariableDeclaration","src":"965:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"974:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"969:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"1030:83:92","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1059:6:92"},{"name":"i","nodeType":"YulIdentifier","src":"1067:1:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1055:3:92"},"nodeType":"YulFunctionCall","src":"1055:14:92"},{"name":"_1","nodeType":"YulIdentifier","src":"1071:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1051:3:92"},"nodeType":"YulFunctionCall","src":"1051:23:92"},{"arguments":[{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"1090:2:92"},{"name":"i","nodeType":"YulIdentifier","src":"1094:1:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1086:3:92"},"nodeType":"YulFunctionCall","src":"1086:10:92"},{"name":"_1","nodeType":"YulIdentifier","src":"1098:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1082:3:92"},"nodeType":"YulFunctionCall","src":"1082:19:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1076:5:92"},"nodeType":"YulFunctionCall","src":"1076:26:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1044:6:92"},"nodeType":"YulFunctionCall","src":"1044:59:92"},"nodeType":"YulExpressionStatement","src":"1044:59:92"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"995:1:92"},{"name":"_4","nodeType":"YulIdentifier","src":"998:2:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"992:2:92"},"nodeType":"YulFunctionCall","src":"992:9:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"1002:19:92","statements":[{"nodeType":"YulAssignment","src":"1004:15:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"1013:1:92"},{"name":"_1","nodeType":"YulIdentifier","src":"1016:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1009:3:92"},"nodeType":"YulFunctionCall","src":"1009:10:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"1004:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"988:3:92","statements":[]},"src":"984:129:92"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1137:6:92"},{"name":"_4","nodeType":"YulIdentifier","src":"1145:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1133:3:92"},"nodeType":"YulFunctionCall","src":"1133:15:92"},{"name":"_1","nodeType":"YulIdentifier","src":"1150:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1129:3:92"},"nodeType":"YulFunctionCall","src":"1129:24:92"},{"kind":"number","nodeType":"YulLiteral","src":"1155:1:92","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1122:6:92"},"nodeType":"YulFunctionCall","src":"1122:35:92"},"nodeType":"YulExpressionStatement","src":"1122:35:92"},{"nodeType":"YulAssignment","src":"1166:16:92","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"1176:6:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1166:6:92"}]}]},"name":"abi_decode_tuple_t_string_memory_ptr_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"203:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"214:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"226:6:92","type":""}],"src":"146:1042:92"},{"body":{"nodeType":"YulBlock","src":"1248:325:92","statements":[{"nodeType":"YulAssignment","src":"1258:22:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1272:1:92","type":"","value":"1"},{"name":"data","nodeType":"YulIdentifier","src":"1275:4:92"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"1268:3:92"},"nodeType":"YulFunctionCall","src":"1268:12:92"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"1258:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"1289:38:92","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"1319:4:92"},{"kind":"number","nodeType":"YulLiteral","src":"1325:1:92","type":"","value":"1"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1315:3:92"},"nodeType":"YulFunctionCall","src":"1315:12:92"},"variables":[{"name":"outOfPlaceEncoding","nodeType":"YulTypedName","src":"1293:18:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"1366:31:92","statements":[{"nodeType":"YulAssignment","src":"1368:27:92","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"1382:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"1390:4:92","type":"","value":"0x7f"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1378:3:92"},"nodeType":"YulFunctionCall","src":"1378:17:92"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"1368:6:92"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"1346:18:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1339:6:92"},"nodeType":"YulFunctionCall","src":"1339:26:92"},"nodeType":"YulIf","src":"1336:61:92"},{"body":{"nodeType":"YulBlock","src":"1456:111:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1477:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1484:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"1489:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1480:3:92"},"nodeType":"YulFunctionCall","src":"1480:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1470:6:92"},"nodeType":"YulFunctionCall","src":"1470:31:92"},"nodeType":"YulExpressionStatement","src":"1470:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1521:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"1524:4:92","type":"","value":"0x22"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1514:6:92"},"nodeType":"YulFunctionCall","src":"1514:15:92"},"nodeType":"YulExpressionStatement","src":"1514:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1549:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1552:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1542:6:92"},"nodeType":"YulFunctionCall","src":"1542:15:92"},"nodeType":"YulExpressionStatement","src":"1542:15:92"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"1412:18:92"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"1435:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"1443:2:92","type":"","value":"32"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"1432:2:92"},"nodeType":"YulFunctionCall","src":"1432:14:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1409:2:92"},"nodeType":"YulFunctionCall","src":"1409:38:92"},"nodeType":"YulIf","src":"1406:161:92"}]},"name":"extract_byte_array_length","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"1228:4:92","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"1237:6:92","type":""}],"src":"1193:380:92"},{"body":{"nodeType":"YulBlock","src":"1634:65:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1651:1:92","type":"","value":"0"},{"name":"ptr","nodeType":"YulIdentifier","src":"1654:3:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1644:6:92"},"nodeType":"YulFunctionCall","src":"1644:14:92"},"nodeType":"YulExpressionStatement","src":"1644:14:92"},{"nodeType":"YulAssignment","src":"1667:26:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1685:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1688:4:92","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nodeType":"YulIdentifier","src":"1675:9:92"},"nodeType":"YulFunctionCall","src":"1675:18:92"},"variableNames":[{"name":"data","nodeType":"YulIdentifier","src":"1667:4:92"}]}]},"name":"array_dataslot_string_storage","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nodeType":"YulTypedName","src":"1617:3:92","type":""}],"returnVariables":[{"name":"data","nodeType":"YulTypedName","src":"1625:4:92","type":""}],"src":"1578:121:92"},{"body":{"nodeType":"YulBlock","src":"1785:464:92","statements":[{"body":{"nodeType":"YulBlock","src":"1818:425:92","statements":[{"nodeType":"YulVariableDeclaration","src":"1832:11:92","value":{"kind":"number","nodeType":"YulLiteral","src":"1842:1:92","type":"","value":"0"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"1836:2:92","type":""}]},{"expression":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"1863:2:92"},{"name":"array","nodeType":"YulIdentifier","src":"1867:5:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1856:6:92"},"nodeType":"YulFunctionCall","src":"1856:17:92"},"nodeType":"YulExpressionStatement","src":"1856:17:92"},{"nodeType":"YulVariableDeclaration","src":"1886:31:92","value":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"1908:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"1912:4:92","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nodeType":"YulIdentifier","src":"1898:9:92"},"nodeType":"YulFunctionCall","src":"1898:19:92"},"variables":[{"name":"data","nodeType":"YulTypedName","src":"1890:4:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"1930:57:92","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"1953:4:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1963:1:92","type":"","value":"5"},{"arguments":[{"name":"startIndex","nodeType":"YulIdentifier","src":"1970:10:92"},{"kind":"number","nodeType":"YulLiteral","src":"1982:2:92","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1966:3:92"},"nodeType":"YulFunctionCall","src":"1966:19:92"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"1959:3:92"},"nodeType":"YulFunctionCall","src":"1959:27:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1949:3:92"},"nodeType":"YulFunctionCall","src":"1949:38:92"},"variables":[{"name":"deleteStart","nodeType":"YulTypedName","src":"1934:11:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"2024:23:92","statements":[{"nodeType":"YulAssignment","src":"2026:19:92","value":{"name":"data","nodeType":"YulIdentifier","src":"2041:4:92"},"variableNames":[{"name":"deleteStart","nodeType":"YulIdentifier","src":"2026:11:92"}]}]},"condition":{"arguments":[{"name":"startIndex","nodeType":"YulIdentifier","src":"2006:10:92"},{"kind":"number","nodeType":"YulLiteral","src":"2018:4:92","type":"","value":"0x20"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2003:2:92"},"nodeType":"YulFunctionCall","src":"2003:20:92"},"nodeType":"YulIf","src":"2000:47:92"},{"nodeType":"YulVariableDeclaration","src":"2060:41:92","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"2074:4:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2084:1:92","type":"","value":"5"},{"arguments":[{"name":"len","nodeType":"YulIdentifier","src":"2091:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"2096:2:92","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2087:3:92"},"nodeType":"YulFunctionCall","src":"2087:12:92"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"2080:3:92"},"nodeType":"YulFunctionCall","src":"2080:20:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2070:3:92"},"nodeType":"YulFunctionCall","src":"2070:31:92"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"2064:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2114:24:92","value":{"name":"deleteStart","nodeType":"YulIdentifier","src":"2127:11:92"},"variables":[{"name":"start","nodeType":"YulTypedName","src":"2118:5:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"2212:21:92","statements":[{"expression":{"arguments":[{"name":"start","nodeType":"YulIdentifier","src":"2221:5:92"},{"name":"_1","nodeType":"YulIdentifier","src":"2228:2:92"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"2214:6:92"},"nodeType":"YulFunctionCall","src":"2214:17:92"},"nodeType":"YulExpressionStatement","src":"2214:17:92"}]},"condition":{"arguments":[{"name":"start","nodeType":"YulIdentifier","src":"2162:5:92"},{"name":"_2","nodeType":"YulIdentifier","src":"2169:2:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2159:2:92"},"nodeType":"YulFunctionCall","src":"2159:13:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"2173:26:92","statements":[{"nodeType":"YulAssignment","src":"2175:22:92","value":{"arguments":[{"name":"start","nodeType":"YulIdentifier","src":"2188:5:92"},{"kind":"number","nodeType":"YulLiteral","src":"2195:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2184:3:92"},"nodeType":"YulFunctionCall","src":"2184:13:92"},"variableNames":[{"name":"start","nodeType":"YulIdentifier","src":"2175:5:92"}]}]},"pre":{"nodeType":"YulBlock","src":"2155:3:92","statements":[]},"src":"2151:82:92"}]},"condition":{"arguments":[{"name":"len","nodeType":"YulIdentifier","src":"1801:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"1806:2:92","type":"","value":"31"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1798:2:92"},"nodeType":"YulFunctionCall","src":"1798:11:92"},"nodeType":"YulIf","src":"1795:448:92"}]},"name":"clean_up_bytearray_end_slots_string_storage","nodeType":"YulFunctionDefinition","parameters":[{"name":"array","nodeType":"YulTypedName","src":"1757:5:92","type":""},{"name":"len","nodeType":"YulTypedName","src":"1764:3:92","type":""},{"name":"startIndex","nodeType":"YulTypedName","src":"1769:10:92","type":""}],"src":"1704:545:92"},{"body":{"nodeType":"YulBlock","src":"2339:81:92","statements":[{"nodeType":"YulAssignment","src":"2349:65:92","value":{"arguments":[{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"2364:4:92"},{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2382:1:92","type":"","value":"3"},{"name":"len","nodeType":"YulIdentifier","src":"2385:3:92"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2378:3:92"},"nodeType":"YulFunctionCall","src":"2378:11:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2395:1:92","type":"","value":"0"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"2391:3:92"},"nodeType":"YulFunctionCall","src":"2391:6:92"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"2374:3:92"},"nodeType":"YulFunctionCall","src":"2374:24:92"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"2370:3:92"},"nodeType":"YulFunctionCall","src":"2370:29:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2360:3:92"},"nodeType":"YulFunctionCall","src":"2360:40:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2406:1:92","type":"","value":"1"},{"name":"len","nodeType":"YulIdentifier","src":"2409:3:92"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2402:3:92"},"nodeType":"YulFunctionCall","src":"2402:11:92"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"2357:2:92"},"nodeType":"YulFunctionCall","src":"2357:57:92"},"variableNames":[{"name":"used","nodeType":"YulIdentifier","src":"2349:4:92"}]}]},"name":"extract_used_part_and_set_length_of_short_byte_array","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"2316:4:92","type":""},{"name":"len","nodeType":"YulTypedName","src":"2322:3:92","type":""}],"returnVariables":[{"name":"used","nodeType":"YulTypedName","src":"2330:4:92","type":""}],"src":"2254:166:92"},{"body":{"nodeType":"YulBlock","src":"2521:1256:92","statements":[{"nodeType":"YulVariableDeclaration","src":"2531:24:92","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"2551:3:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2545:5:92"},"nodeType":"YulFunctionCall","src":"2545:10:92"},"variables":[{"name":"newLen","nodeType":"YulTypedName","src":"2535:6:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"2598:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"2600:16:92"},"nodeType":"YulFunctionCall","src":"2600:18:92"},"nodeType":"YulExpressionStatement","src":"2600:18:92"}]},"condition":{"arguments":[{"name":"newLen","nodeType":"YulIdentifier","src":"2570:6:92"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2586:2:92","type":"","value":"64"},{"kind":"number","nodeType":"YulLiteral","src":"2590:1:92","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2582:3:92"},"nodeType":"YulFunctionCall","src":"2582:10:92"},{"kind":"number","nodeType":"YulLiteral","src":"2594:1:92","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2578:3:92"},"nodeType":"YulFunctionCall","src":"2578:18:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2567:2:92"},"nodeType":"YulFunctionCall","src":"2567:30:92"},"nodeType":"YulIf","src":"2564:56:92"},{"expression":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"2673:4:92"},{"arguments":[{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"2711:4:92"}],"functionName":{"name":"sload","nodeType":"YulIdentifier","src":"2705:5:92"},"nodeType":"YulFunctionCall","src":"2705:11:92"}],"functionName":{"name":"extract_byte_array_length","nodeType":"YulIdentifier","src":"2679:25:92"},"nodeType":"YulFunctionCall","src":"2679:38:92"},{"name":"newLen","nodeType":"YulIdentifier","src":"2719:6:92"}],"functionName":{"name":"clean_up_bytearray_end_slots_string_storage","nodeType":"YulIdentifier","src":"2629:43:92"},"nodeType":"YulFunctionCall","src":"2629:97:92"},"nodeType":"YulExpressionStatement","src":"2629:97:92"},{"nodeType":"YulVariableDeclaration","src":"2735:18:92","value":{"kind":"number","nodeType":"YulLiteral","src":"2752:1:92","type":"","value":"0"},"variables":[{"name":"srcOffset","nodeType":"YulTypedName","src":"2739:9:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2762:23:92","value":{"kind":"number","nodeType":"YulLiteral","src":"2781:4:92","type":"","value":"0x20"},"variables":[{"name":"srcOffset_1","nodeType":"YulTypedName","src":"2766:11:92","type":""}]},{"nodeType":"YulAssignment","src":"2794:24:92","value":{"name":"srcOffset_1","nodeType":"YulIdentifier","src":"2807:11:92"},"variableNames":[{"name":"srcOffset","nodeType":"YulIdentifier","src":"2794:9:92"}]},{"cases":[{"body":{"nodeType":"YulBlock","src":"2864:656:92","statements":[{"nodeType":"YulVariableDeclaration","src":"2878:35:92","value":{"arguments":[{"name":"newLen","nodeType":"YulIdentifier","src":"2897:6:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2909:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"2905:3:92"},"nodeType":"YulFunctionCall","src":"2905:7:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2893:3:92"},"nodeType":"YulFunctionCall","src":"2893:20:92"},"variables":[{"name":"loopEnd","nodeType":"YulTypedName","src":"2882:7:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2926:49:92","value":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"2970:4:92"}],"functionName":{"name":"array_dataslot_string_storage","nodeType":"YulIdentifier","src":"2940:29:92"},"nodeType":"YulFunctionCall","src":"2940:35:92"},"variables":[{"name":"dstPtr","nodeType":"YulTypedName","src":"2930:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2988:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"2997:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"2992:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"3075:172:92","statements":[{"expression":{"arguments":[{"name":"dstPtr","nodeType":"YulIdentifier","src":"3100:6:92"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"3118:3:92"},{"name":"srcOffset","nodeType":"YulIdentifier","src":"3123:9:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3114:3:92"},"nodeType":"YulFunctionCall","src":"3114:19:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3108:5:92"},"nodeType":"YulFunctionCall","src":"3108:26:92"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"3093:6:92"},"nodeType":"YulFunctionCall","src":"3093:42:92"},"nodeType":"YulExpressionStatement","src":"3093:42:92"},{"nodeType":"YulAssignment","src":"3152:24:92","value":{"arguments":[{"name":"dstPtr","nodeType":"YulIdentifier","src":"3166:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"3174:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3162:3:92"},"nodeType":"YulFunctionCall","src":"3162:14:92"},"variableNames":[{"name":"dstPtr","nodeType":"YulIdentifier","src":"3152:6:92"}]},{"nodeType":"YulAssignment","src":"3193:40:92","value":{"arguments":[{"name":"srcOffset","nodeType":"YulIdentifier","src":"3210:9:92"},{"name":"srcOffset_1","nodeType":"YulIdentifier","src":"3221:11:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3206:3:92"},"nodeType":"YulFunctionCall","src":"3206:27:92"},"variableNames":[{"name":"srcOffset","nodeType":"YulIdentifier","src":"3193:9:92"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3022:1:92"},{"name":"loopEnd","nodeType":"YulIdentifier","src":"3025:7:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"3019:2:92"},"nodeType":"YulFunctionCall","src":"3019:14:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"3034:28:92","statements":[{"nodeType":"YulAssignment","src":"3036:24:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3045:1:92"},{"name":"srcOffset_1","nodeType":"YulIdentifier","src":"3048:11:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3041:3:92"},"nodeType":"YulFunctionCall","src":"3041:19:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"3036:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"3015:3:92","statements":[]},"src":"3011:236:92"},{"body":{"nodeType":"YulBlock","src":"3295:166:92","statements":[{"nodeType":"YulVariableDeclaration","src":"3313:43:92","value":{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"3340:3:92"},{"name":"srcOffset","nodeType":"YulIdentifier","src":"3345:9:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3336:3:92"},"nodeType":"YulFunctionCall","src":"3336:19:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3330:5:92"},"nodeType":"YulFunctionCall","src":"3330:26:92"},"variables":[{"name":"lastValue","nodeType":"YulTypedName","src":"3317:9:92","type":""}]},{"expression":{"arguments":[{"name":"dstPtr","nodeType":"YulIdentifier","src":"3380:6:92"},{"arguments":[{"name":"lastValue","nodeType":"YulIdentifier","src":"3392:9:92"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3419:1:92","type":"","value":"3"},{"name":"newLen","nodeType":"YulIdentifier","src":"3422:6:92"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"3415:3:92"},"nodeType":"YulFunctionCall","src":"3415:14:92"},{"kind":"number","nodeType":"YulLiteral","src":"3431:3:92","type":"","value":"248"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3411:3:92"},"nodeType":"YulFunctionCall","src":"3411:24:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3441:1:92","type":"","value":"0"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"3437:3:92"},"nodeType":"YulFunctionCall","src":"3437:6:92"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"3407:3:92"},"nodeType":"YulFunctionCall","src":"3407:37:92"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"3403:3:92"},"nodeType":"YulFunctionCall","src":"3403:42:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3388:3:92"},"nodeType":"YulFunctionCall","src":"3388:58:92"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"3373:6:92"},"nodeType":"YulFunctionCall","src":"3373:74:92"},"nodeType":"YulExpressionStatement","src":"3373:74:92"}]},"condition":{"arguments":[{"name":"loopEnd","nodeType":"YulIdentifier","src":"3266:7:92"},{"name":"newLen","nodeType":"YulIdentifier","src":"3275:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"3263:2:92"},"nodeType":"YulFunctionCall","src":"3263:19:92"},"nodeType":"YulIf","src":"3260:201:92"},{"expression":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"3481:4:92"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3495:1:92","type":"","value":"1"},{"name":"newLen","nodeType":"YulIdentifier","src":"3498:6:92"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"3491:3:92"},"nodeType":"YulFunctionCall","src":"3491:14:92"},{"kind":"number","nodeType":"YulLiteral","src":"3507:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3487:3:92"},"nodeType":"YulFunctionCall","src":"3487:22:92"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"3474:6:92"},"nodeType":"YulFunctionCall","src":"3474:36:92"},"nodeType":"YulExpressionStatement","src":"3474:36:92"}]},"nodeType":"YulCase","src":"2857:663:92","value":{"kind":"number","nodeType":"YulLiteral","src":"2862:1:92","type":"","value":"1"}},{"body":{"nodeType":"YulBlock","src":"3537:234:92","statements":[{"nodeType":"YulVariableDeclaration","src":"3551:14:92","value":{"kind":"number","nodeType":"YulLiteral","src":"3564:1:92","type":"","value":"0"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"3555:5:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"3600:67:92","statements":[{"nodeType":"YulAssignment","src":"3618:35:92","value":{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"3637:3:92"},{"name":"srcOffset","nodeType":"YulIdentifier","src":"3642:9:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3633:3:92"},"nodeType":"YulFunctionCall","src":"3633:19:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3627:5:92"},"nodeType":"YulFunctionCall","src":"3627:26:92"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"3618:5:92"}]}]},"condition":{"name":"newLen","nodeType":"YulIdentifier","src":"3581:6:92"},"nodeType":"YulIf","src":"3578:89:92"},{"expression":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"3687:4:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3746:5:92"},{"name":"newLen","nodeType":"YulIdentifier","src":"3753:6:92"}],"functionName":{"name":"extract_used_part_and_set_length_of_short_byte_array","nodeType":"YulIdentifier","src":"3693:52:92"},"nodeType":"YulFunctionCall","src":"3693:67:92"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"3680:6:92"},"nodeType":"YulFunctionCall","src":"3680:81:92"},"nodeType":"YulExpressionStatement","src":"3680:81:92"}]},"nodeType":"YulCase","src":"3529:242:92","value":"default"}],"expression":{"arguments":[{"name":"newLen","nodeType":"YulIdentifier","src":"2837:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"2845:2:92","type":"","value":"31"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2834:2:92"},"nodeType":"YulFunctionCall","src":"2834:14:92"},"nodeType":"YulSwitch","src":"2827:944:92"}]},"name":"copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage","nodeType":"YulFunctionDefinition","parameters":[{"name":"slot","nodeType":"YulTypedName","src":"2506:4:92","type":""},{"name":"src","nodeType":"YulTypedName","src":"2512:3:92","type":""}],"src":"2425:1352:92"}]},"contents":"{\n { }\n function panic_error_0x41()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function abi_decode_tuple_t_string_memory_ptr_fromMemory(headStart, dataEnd) -> value0\n {\n let _1 := 32\n if slt(sub(dataEnd, headStart), _1) { revert(0, 0) }\n let offset := mload(headStart)\n let _2 := sub(shl(64, 1), 1)\n if gt(offset, _2) { revert(0, 0) }\n let _3 := add(headStart, offset)\n if iszero(slt(add(_3, 0x1f), dataEnd)) { revert(0, 0) }\n let _4 := mload(_3)\n if gt(_4, _2) { panic_error_0x41() }\n let _5 := not(31)\n let memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(and(add(_4, 0x1f), _5), 63), _5))\n if or(gt(newFreePtr, _2), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n mstore(memPtr, _4)\n if gt(add(add(_3, _4), _1), dataEnd) { revert(0, 0) }\n let i := 0\n for { } lt(i, _4) { i := add(i, _1) }\n {\n mstore(add(add(memPtr, i), _1), mload(add(add(_3, i), _1)))\n }\n mstore(add(add(memPtr, _4), _1), 0)\n value0 := memPtr\n }\n function extract_byte_array_length(data) -> length\n {\n length := shr(1, data)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n if eq(outOfPlaceEncoding, lt(length, 32))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n }\n function array_dataslot_string_storage(ptr) -> data\n {\n mstore(0, ptr)\n data := keccak256(0, 0x20)\n }\n function clean_up_bytearray_end_slots_string_storage(array, len, startIndex)\n {\n if gt(len, 31)\n {\n let _1 := 0\n mstore(_1, array)\n let data := keccak256(_1, 0x20)\n let deleteStart := add(data, shr(5, add(startIndex, 31)))\n if lt(startIndex, 0x20) { deleteStart := data }\n let _2 := add(data, shr(5, add(len, 31)))\n let start := deleteStart\n for { } lt(start, _2) { start := add(start, 1) }\n { sstore(start, _1) }\n }\n }\n function extract_used_part_and_set_length_of_short_byte_array(data, len) -> used\n {\n used := or(and(data, not(shr(shl(3, len), not(0)))), shl(1, len))\n }\n function copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage(slot, src)\n {\n let newLen := mload(src)\n if gt(newLen, sub(shl(64, 1), 1)) { panic_error_0x41() }\n clean_up_bytearray_end_slots_string_storage(slot, extract_byte_array_length(sload(slot)), newLen)\n let srcOffset := 0\n let srcOffset_1 := 0x20\n srcOffset := srcOffset_1\n switch gt(newLen, 31)\n case 1 {\n let loopEnd := and(newLen, not(31))\n let dstPtr := array_dataslot_string_storage(slot)\n let i := 0\n for { } lt(i, loopEnd) { i := add(i, srcOffset_1) }\n {\n sstore(dstPtr, mload(add(src, srcOffset)))\n dstPtr := add(dstPtr, 1)\n srcOffset := add(srcOffset, srcOffset_1)\n }\n if lt(loopEnd, newLen)\n {\n let lastValue := mload(add(src, srcOffset))\n sstore(dstPtr, and(lastValue, not(shr(and(shl(3, newLen), 248), not(0)))))\n }\n sstore(slot, add(shl(1, newLen), 1))\n }\n default {\n let value := 0\n if newLen\n {\n value := mload(add(src, srcOffset))\n }\n sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, newLen))\n }\n }\n}","id":92,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60806040523480156200001157600080fd5b5060405162001a8938038062001a89833981016040819052620000349162000070565b80620000408162000048565b5050620002a0565b6002620000568282620001d4565b5050565b634e487b7160e01b600052604160045260246000fd5b600060208083850312156200008457600080fd5b82516001600160401b03808211156200009c57600080fd5b818501915085601f830112620000b157600080fd5b815181811115620000c657620000c66200005a565b604051601f8201601f19908116603f01168101908382118183101715620000f157620000f16200005a565b8160405282815288868487010111156200010a57600080fd5b600093505b828410156200012e57848401860151818501870152928501926200010f565b600086848301015280965050505050505092915050565b600181811c908216806200015a57607f821691505b6020821081036200017b57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620001cf57600081815260208120601f850160051c81016020861015620001aa5750805b601f850160051c820191505b81811015620001cb57828155600101620001b6565b5050505b505050565b81516001600160401b03811115620001f057620001f06200005a565b620002088162000201845462000145565b8462000181565b602080601f831160018114620002405760008415620002275750858301515b600019600386901b1c1916600185901b178555620001cb565b600085815260208120601f198616915b82811015620002715788860151825594840194600190910190840162000250565b5085821015620002905787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6117d980620002b06000396000f3fe608060405234801561001057600080fd5b50600436106100bd5760003560e01c80634e1273f411610076578063e985e9c51161005b578063e985e9c514610186578063f242432a146101c2578063f5298aca146101d557600080fd5b80634e1273f414610153578063a22cb4651461017357600080fd5b80630e89341c116100a75780630e89341c1461010b578063156e29f61461012b5780632eb2c2d61461014057600080fd5b8062fdd58e146100c257806301ffc9a7146100e8575b600080fd5b6100d56100d03660046110b9565b6101e8565b6040519081526020015b60405180910390f35b6100fb6100f63660046110fc565b610294565b60405190151581526020016100df565b61011e610119366004611120565b6102e4565b6040516100df919061117f565b61013e610139366004611192565b610378565b005b61013e61014e366004611311565b610398565b6101666101613660046113bb565b61042b565b6040516100df91906114c1565b61013e6101813660046114d4565b610569565b6100fb610194366004611510565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205460ff1690565b61013e6101d0366004611543565b610578565b61013e6101e3366004611192565b610604565b60006001600160a01b03831661026b5760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201527f616c6964206f776e65720000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b506000818152602081815260408083206001600160a01b03861684529091529020545b92915050565b60006001600160e01b03198216636cdb3d1360e11b14806102c557506001600160e01b031982166303a24d0760e21b145b8061028e57506301ffc9a760e01b6001600160e01b031983161461028e565b6060600280546102f3906115a8565b80601f016020809104026020016040519081016040528092919081815260200182805461031f906115a8565b801561036c5780601f106103415761010080835404028352916020019161036c565b820191906000526020600020905b81548152906001019060200180831161034f57829003601f168201915b50505050509050919050565b6103938383836040518060200160405280600081525061060f565b505050565b6001600160a01b0385163314806103b457506103b48533610194565b6104175760405162461bcd60e51b815260206004820152602e60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201526d195c881bdc88185c1c1c9bdd995960921b6064820152608401610262565b6104248585858585610723565b5050505050565b606081518351146104a45760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e67746860448201527f206d69736d6174636800000000000000000000000000000000000000000000006064820152608401610262565b6000835167ffffffffffffffff8111156104c0576104c06111c5565b6040519080825280602002602001820160405280156104e9578160200160208202803683370190505b50905060005b84518110156105615761053485828151811061050d5761050d6115e2565b6020026020010151858381518110610527576105276115e2565b60200260200101516101e8565b828281518110610546576105466115e2565b602090810291909101015261055a8161160e565b90506104ef565b509392505050565b610574338383610996565b5050565b6001600160a01b03851633148061059457506105948533610194565b6105f75760405162461bcd60e51b815260206004820152602e60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201526d195c881bdc88185c1c1c9bdd995960921b6064820152608401610262565b6104248585858585610a8a565b610393838383610c35565b6001600160a01b03841661066f5760405162461bcd60e51b815260206004820152602160248201527f455243313135353a206d696e7420746f20746865207a65726f206164647265736044820152607360f81b6064820152608401610262565b33600061067b85610db1565b9050600061068885610db1565b90506000868152602081815260408083206001600160a01b038b168452909152812080548792906106ba908490611627565b909155505060408051878152602081018790526001600160a01b03808a1692600092918716917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a461071a83600089898989610dfc565b50505050505050565b815183511461079a5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060448201527f6d69736d617463680000000000000000000000000000000000000000000000006064820152608401610262565b6001600160a01b0384166107fe5760405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b6064820152608401610262565b3360005b845181101561092857600085828151811061081f5761081f6115e2565b60200260200101519050600085838151811061083d5761083d6115e2565b602090810291909101810151600084815280835260408082206001600160a01b038e1683529093529190912054909150818110156108d05760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201526939103a3930b739b332b960b11b6064820152608401610262565b6000838152602081815260408083206001600160a01b038e8116855292528083208585039055908b1682528120805484929061090d908490611627565b92505081905550505050806109219061160e565b9050610802565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb878760405161097892919061163a565b60405180910390a461098e818787878787610fa1565b505050505050565b816001600160a01b0316836001600160a01b031603610a1d5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c2073746174757360448201527f20666f722073656c6600000000000000000000000000000000000000000000006064820152608401610262565b6001600160a01b03838116600081815260016020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b038416610aee5760405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b6064820152608401610262565b336000610afa85610db1565b90506000610b0785610db1565b90506000868152602081815260408083206001600160a01b038c16845290915290205485811015610b8d5760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201526939103a3930b739b332b960b11b6064820152608401610262565b6000878152602081815260408083206001600160a01b038d8116855292528083208985039055908a16825281208054889290610bca908490611627565b909155505060408051888152602081018890526001600160a01b03808b16928c821692918816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4610c2a848a8a8a8a8a610dfc565b505050505050505050565b6001600160a01b038316610c975760405162461bcd60e51b815260206004820152602360248201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260448201526265737360e81b6064820152608401610262565b336000610ca384610db1565b90506000610cb084610db1565b60408051602080820183526000918290528882528181528282206001600160a01b038b1683529052205490915084811015610d395760405162461bcd60e51b8152602060048201526024808201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c604482015263616e636560e01b6064820152608401610262565b6000868152602081815260408083206001600160a01b038b81168086529184528285208a8703905582518b81529384018a90529092908816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a460408051602081019091526000905261071a565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110610deb57610deb6115e2565b602090810291909101015292915050565b6001600160a01b0384163b1561098e5760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e6190610e409089908990889088908890600401611668565b6020604051808303816000875af1925050508015610e7b575060408051601f3d908101601f19168201909252610e78918101906116ab565b60015b610f3057610e876116c8565b806308c379a003610ec05750610e9b6116e4565b80610ea65750610ec2565b8060405162461bcd60e51b8152600401610262919061117f565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e2d4552433131353560448201527f526563656976657220696d706c656d656e7465720000000000000000000000006064820152608401610262565b6001600160e01b0319811663f23a6e6160e01b1461071a5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a656374656044820152676420746f6b656e7360c01b6064820152608401610262565b6001600160a01b0384163b1561098e5760405163bc197c8160e01b81526001600160a01b0385169063bc197c8190610fe5908990899088908890889060040161176e565b6020604051808303816000875af1925050508015611020575060408051601f3d908101601f1916820190925261101d918101906116ab565b60015b61102c57610e876116c8565b6001600160e01b0319811663bc197c8160e01b1461071a5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a656374656044820152676420746f6b656e7360c01b6064820152608401610262565b80356001600160a01b03811681146110b457600080fd5b919050565b600080604083850312156110cc57600080fd5b6110d58361109d565b946020939093013593505050565b6001600160e01b0319811681146110f957600080fd5b50565b60006020828403121561110e57600080fd5b8135611119816110e3565b9392505050565b60006020828403121561113257600080fd5b5035919050565b6000815180845260005b8181101561115f57602081850181015186830182015201611143565b506000602082860101526020601f19601f83011685010191505092915050565b6020815260006111196020830184611139565b6000806000606084860312156111a757600080fd5b6111b08461109d565b95602085013595506040909401359392505050565b634e487b7160e01b600052604160045260246000fd5b601f8201601f1916810167ffffffffffffffff81118282101715611201576112016111c5565b6040525050565b600067ffffffffffffffff821115611222576112226111c5565b5060051b60200190565b600082601f83011261123d57600080fd5b8135602061124a82611208565b60405161125782826111db565b83815260059390931b850182019282810191508684111561127757600080fd5b8286015b84811015611292578035835291830191830161127b565b509695505050505050565b600082601f8301126112ae57600080fd5b813567ffffffffffffffff8111156112c8576112c86111c5565b6040516112df601f8301601f1916602001826111db565b8181528460208386010111156112f457600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a0868803121561132957600080fd5b6113328661109d565b94506113406020870161109d565b9350604086013567ffffffffffffffff8082111561135d57600080fd5b61136989838a0161122c565b9450606088013591508082111561137f57600080fd5b61138b89838a0161122c565b935060808801359150808211156113a157600080fd5b506113ae8882890161129d565b9150509295509295909350565b600080604083850312156113ce57600080fd5b823567ffffffffffffffff808211156113e657600080fd5b818501915085601f8301126113fa57600080fd5b8135602061140782611208565b60405161141482826111db565b83815260059390931b850182019282810191508984111561143457600080fd5b948201945b838610156114595761144a8661109d565b82529482019490820190611439565b9650508601359250508082111561146f57600080fd5b5061147c8582860161122c565b9150509250929050565b600081518084526020808501945080840160005b838110156114b65781518752958201959082019060010161149a565b509495945050505050565b6020815260006111196020830184611486565b600080604083850312156114e757600080fd5b6114f08361109d565b91506020830135801515811461150557600080fd5b809150509250929050565b6000806040838503121561152357600080fd5b61152c8361109d565b915061153a6020840161109d565b90509250929050565b600080600080600060a0868803121561155b57600080fd5b6115648661109d565b94506115726020870161109d565b93506040860135925060608601359150608086013567ffffffffffffffff81111561159c57600080fd5b6113ae8882890161129d565b600181811c908216806115bc57607f821691505b6020821081036115dc57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201611620576116206115f8565b5060010190565b8082018082111561028e5761028e6115f8565b60408152600061164d6040830185611486565b828103602084015261165f8185611486565b95945050505050565b60006001600160a01b03808816835280871660208401525084604083015283606083015260a060808301526116a060a0830184611139565b979650505050505050565b6000602082840312156116bd57600080fd5b8151611119816110e3565b600060033d11156116e15760046000803e5060005160e01c5b90565b600060443d10156116f25790565b6040516003193d81016004833e81513d67ffffffffffffffff816024840111818411171561172257505050505090565b828501915081518181111561173a5750505050505090565b843d87010160208285010111156117545750505050505090565b611763602082860101876111db565b509095945050505050565b60006001600160a01b03808816835280871660208401525060a0604083015261179a60a0830186611486565b82810360608401526117ac8186611486565b905082810360808401526117c08185611139565b9897505050505050505056fea164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x1A89 CODESIZE SUB DUP1 PUSH3 0x1A89 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x34 SWAP2 PUSH3 0x70 JUMP JUMPDEST DUP1 PUSH3 0x40 DUP2 PUSH3 0x48 JUMP JUMPDEST POP POP PUSH3 0x2A0 JUMP JUMPDEST PUSH1 0x2 PUSH3 0x56 DUP3 DUP3 PUSH3 0x1D4 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x84 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH3 0x9C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH3 0xB1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH3 0xC6 JUMPI PUSH3 0xC6 PUSH3 0x5A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH3 0xF1 JUMPI PUSH3 0xF1 PUSH3 0x5A JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 DUP7 DUP5 DUP8 ADD ADD GT ISZERO PUSH3 0x10A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP4 POP JUMPDEST DUP3 DUP5 LT ISZERO PUSH3 0x12E JUMPI DUP5 DUP5 ADD DUP7 ADD MLOAD DUP2 DUP6 ADD DUP8 ADD MSTORE SWAP3 DUP6 ADD SWAP3 PUSH3 0x10F JUMP JUMPDEST PUSH1 0x0 DUP7 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP7 POP POP POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH3 0x15A JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH3 0x17B JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH3 0x1CF JUMPI PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP7 LT ISZERO PUSH3 0x1AA JUMPI POP DUP1 JUMPDEST PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x1CB JUMPI DUP3 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x1B6 JUMP JUMPDEST POP POP POP JUMPDEST POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH3 0x1F0 JUMPI PUSH3 0x1F0 PUSH3 0x5A JUMP JUMPDEST PUSH3 0x208 DUP2 PUSH3 0x201 DUP5 SLOAD PUSH3 0x145 JUMP JUMPDEST DUP5 PUSH3 0x181 JUMP JUMPDEST PUSH1 0x20 DUP1 PUSH1 0x1F DUP4 GT PUSH1 0x1 DUP2 EQ PUSH3 0x240 JUMPI PUSH1 0x0 DUP5 ISZERO PUSH3 0x227 JUMPI POP DUP6 DUP4 ADD MLOAD JUMPDEST PUSH1 0x0 NOT PUSH1 0x3 DUP7 SWAP1 SHL SHR NOT AND PUSH1 0x1 DUP6 SWAP1 SHL OR DUP6 SSTORE PUSH3 0x1CB JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F NOT DUP7 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH3 0x271 JUMPI DUP9 DUP7 ADD MLOAD DUP3 SSTORE SWAP5 DUP5 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 DUP5 ADD PUSH3 0x250 JUMP JUMPDEST POP DUP6 DUP3 LT ISZERO PUSH3 0x290 JUMPI DUP8 DUP6 ADD MLOAD PUSH1 0x0 NOT PUSH1 0x3 DUP9 SWAP1 SHL PUSH1 0xF8 AND SHR NOT AND DUP2 SSTORE JUMPDEST POP POP POP POP POP PUSH1 0x1 SWAP1 DUP2 SHL ADD SWAP1 SSTORE POP JUMP JUMPDEST PUSH2 0x17D9 DUP1 PUSH3 0x2B0 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xBD JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x4E1273F4 GT PUSH2 0x76 JUMPI DUP1 PUSH4 0xE985E9C5 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x186 JUMPI DUP1 PUSH4 0xF242432A EQ PUSH2 0x1C2 JUMPI DUP1 PUSH4 0xF5298ACA EQ PUSH2 0x1D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x4E1273F4 EQ PUSH2 0x153 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x173 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xE89341C GT PUSH2 0xA7 JUMPI DUP1 PUSH4 0xE89341C EQ PUSH2 0x10B JUMPI DUP1 PUSH4 0x156E29F6 EQ PUSH2 0x12B JUMPI DUP1 PUSH4 0x2EB2C2D6 EQ PUSH2 0x140 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH3 0xFDD58E EQ PUSH2 0xC2 JUMPI DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xE8 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD5 PUSH2 0xD0 CALLDATASIZE PUSH1 0x4 PUSH2 0x10B9 JUMP JUMPDEST PUSH2 0x1E8 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xFB PUSH2 0xF6 CALLDATASIZE PUSH1 0x4 PUSH2 0x10FC JUMP JUMPDEST PUSH2 0x294 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xDF JUMP JUMPDEST PUSH2 0x11E PUSH2 0x119 CALLDATASIZE PUSH1 0x4 PUSH2 0x1120 JUMP JUMPDEST PUSH2 0x2E4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xDF SWAP2 SWAP1 PUSH2 0x117F JUMP JUMPDEST PUSH2 0x13E PUSH2 0x139 CALLDATASIZE PUSH1 0x4 PUSH2 0x1192 JUMP JUMPDEST PUSH2 0x378 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x13E PUSH2 0x14E CALLDATASIZE PUSH1 0x4 PUSH2 0x1311 JUMP JUMPDEST PUSH2 0x398 JUMP JUMPDEST PUSH2 0x166 PUSH2 0x161 CALLDATASIZE PUSH1 0x4 PUSH2 0x13BB JUMP JUMPDEST PUSH2 0x42B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xDF SWAP2 SWAP1 PUSH2 0x14C1 JUMP JUMPDEST PUSH2 0x13E PUSH2 0x181 CALLDATASIZE PUSH1 0x4 PUSH2 0x14D4 JUMP JUMPDEST PUSH2 0x569 JUMP JUMPDEST PUSH2 0xFB PUSH2 0x194 CALLDATASIZE PUSH1 0x4 PUSH2 0x1510 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x13E PUSH2 0x1D0 CALLDATASIZE PUSH1 0x4 PUSH2 0x1543 JUMP JUMPDEST PUSH2 0x578 JUMP JUMPDEST PUSH2 0x13E PUSH2 0x1E3 CALLDATASIZE PUSH1 0x4 PUSH2 0x1192 JUMP JUMPDEST PUSH2 0x604 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x26B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A2061646472657373207A65726F206973206E6F7420612076 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x616C6964206F776E657200000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x6CDB3D13 PUSH1 0xE1 SHL EQ DUP1 PUSH2 0x2C5 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x3A24D07 PUSH1 0xE2 SHL EQ JUMPDEST DUP1 PUSH2 0x28E JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ PUSH2 0x28E JUMP JUMPDEST PUSH1 0x60 PUSH1 0x2 DUP1 SLOAD PUSH2 0x2F3 SWAP1 PUSH2 0x15A8 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x31F SWAP1 PUSH2 0x15A8 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x36C JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x341 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x36C JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x34F JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x393 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x60F JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND CALLER EQ DUP1 PUSH2 0x3B4 JUMPI POP PUSH2 0x3B4 DUP6 CALLER PUSH2 0x194 JUMP JUMPDEST PUSH2 0x417 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A2063616C6C6572206973206E6F7420746F6B656E206F776E PUSH1 0x44 DUP3 ADD MSTORE PUSH14 0x195C881BDC88185C1C1C9BDD9959 PUSH1 0x92 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x262 JUMP JUMPDEST PUSH2 0x424 DUP6 DUP6 DUP6 DUP6 DUP6 PUSH2 0x723 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 MLOAD DUP4 MLOAD EQ PUSH2 0x4A4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A206163636F756E747320616E6420696473206C656E677468 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x206D69736D617463680000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x262 JUMP JUMPDEST PUSH1 0x0 DUP4 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x4C0 JUMPI PUSH2 0x4C0 PUSH2 0x11C5 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x4E9 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x561 JUMPI PUSH2 0x534 DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x50D JUMPI PUSH2 0x50D PUSH2 0x15E2 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x527 JUMPI PUSH2 0x527 PUSH2 0x15E2 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x1E8 JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x546 JUMPI PUSH2 0x546 PUSH2 0x15E2 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH2 0x55A DUP2 PUSH2 0x160E JUMP JUMPDEST SWAP1 POP PUSH2 0x4EF JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x574 CALLER DUP4 DUP4 PUSH2 0x996 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND CALLER EQ DUP1 PUSH2 0x594 JUMPI POP PUSH2 0x594 DUP6 CALLER PUSH2 0x194 JUMP JUMPDEST PUSH2 0x5F7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A2063616C6C6572206973206E6F7420746F6B656E206F776E PUSH1 0x44 DUP3 ADD MSTORE PUSH14 0x195C881BDC88185C1C1C9BDD9959 PUSH1 0x92 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x262 JUMP JUMPDEST PUSH2 0x424 DUP6 DUP6 DUP6 DUP6 DUP6 PUSH2 0xA8A JUMP JUMPDEST PUSH2 0x393 DUP4 DUP4 DUP4 PUSH2 0xC35 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x66F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A206D696E7420746F20746865207A65726F20616464726573 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x73 PUSH1 0xF8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x262 JUMP JUMPDEST CALLER PUSH1 0x0 PUSH2 0x67B DUP6 PUSH2 0xDB1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x688 DUP6 PUSH2 0xDB1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 DUP1 SLOAD DUP8 SWAP3 SWAP1 PUSH2 0x6BA SWAP1 DUP5 SWAP1 PUSH2 0x1627 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x40 DUP1 MLOAD DUP8 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP11 AND SWAP3 PUSH1 0x0 SWAP3 SWAP2 DUP8 AND SWAP2 PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x71A DUP4 PUSH1 0x0 DUP10 DUP10 DUP10 DUP10 PUSH2 0xDFC JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST DUP2 MLOAD DUP4 MLOAD EQ PUSH2 0x79A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x28 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A2069647320616E6420616D6F756E7473206C656E67746820 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6D69736D61746368000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x262 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x7FE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A207472616E7366657220746F20746865207A65726F206164 PUSH1 0x44 DUP3 ADD MSTORE PUSH5 0x6472657373 PUSH1 0xD8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x262 JUMP JUMPDEST CALLER PUSH1 0x0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x928 JUMPI PUSH1 0x0 DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x81F JUMPI PUSH2 0x81F PUSH2 0x15E2 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x83D JUMPI PUSH2 0x83D PUSH2 0x15E2 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD PUSH1 0x0 DUP5 DUP2 MSTORE DUP1 DUP4 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP15 AND DUP4 MSTORE SWAP1 SWAP4 MSTORE SWAP2 SWAP1 SWAP2 KECCAK256 SLOAD SWAP1 SWAP2 POP DUP2 DUP2 LT ISZERO PUSH2 0x8D0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A20696E73756666696369656E742062616C616E636520666F PUSH1 0x44 DUP3 ADD MSTORE PUSH10 0x39103A3930B739B332B9 PUSH1 0xB1 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x262 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP15 DUP2 AND DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 DUP6 DUP6 SUB SWAP1 SSTORE SWAP1 DUP12 AND DUP3 MSTORE DUP2 KECCAK256 DUP1 SLOAD DUP5 SWAP3 SWAP1 PUSH2 0x90D SWAP1 DUP5 SWAP1 PUSH2 0x1627 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP POP POP POP DUP1 PUSH2 0x921 SWAP1 PUSH2 0x160E JUMP JUMPDEST SWAP1 POP PUSH2 0x802 JUMP JUMPDEST POP DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB DUP8 DUP8 PUSH1 0x40 MLOAD PUSH2 0x978 SWAP3 SWAP2 SWAP1 PUSH2 0x163A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x98E DUP2 DUP8 DUP8 DUP8 DUP8 DUP8 PUSH2 0xFA1 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0xA1D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A2073657474696E6720617070726F76616C20737461747573 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x20666F722073656C660000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x262 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND DUP7 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP2 MLOAD SWAP2 DUP3 MSTORE PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0xAEE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A207472616E7366657220746F20746865207A65726F206164 PUSH1 0x44 DUP3 ADD MSTORE PUSH5 0x6472657373 PUSH1 0xD8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x262 JUMP JUMPDEST CALLER PUSH1 0x0 PUSH2 0xAFA DUP6 PUSH2 0xDB1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xB07 DUP6 PUSH2 0xDB1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD DUP6 DUP2 LT ISZERO PUSH2 0xB8D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A20696E73756666696369656E742062616C616E636520666F PUSH1 0x44 DUP3 ADD MSTORE PUSH10 0x39103A3930B739B332B9 PUSH1 0xB1 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x262 JUMP JUMPDEST PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP14 DUP2 AND DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 DUP10 DUP6 SUB SWAP1 SSTORE SWAP1 DUP11 AND DUP3 MSTORE DUP2 KECCAK256 DUP1 SLOAD DUP9 SWAP3 SWAP1 PUSH2 0xBCA SWAP1 DUP5 SWAP1 PUSH2 0x1627 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x40 DUP1 MLOAD DUP9 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP9 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP12 AND SWAP3 DUP13 DUP3 AND SWAP3 SWAP2 DUP9 AND SWAP2 PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0xC2A DUP5 DUP11 DUP11 DUP11 DUP11 DUP11 PUSH2 0xDFC JUMP JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0xC97 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x23 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A206275726E2066726F6D20746865207A65726F2061646472 PUSH1 0x44 DUP3 ADD MSTORE PUSH3 0x657373 PUSH1 0xE8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x262 JUMP JUMPDEST CALLER PUSH1 0x0 PUSH2 0xCA3 DUP5 PUSH2 0xDB1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xCB0 DUP5 PUSH2 0xDB1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 ADD DUP4 MSTORE PUSH1 0x0 SWAP2 DUP3 SWAP1 MSTORE DUP9 DUP3 MSTORE DUP2 DUP2 MSTORE DUP3 DUP3 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND DUP4 MSTORE SWAP1 MSTORE KECCAK256 SLOAD SWAP1 SWAP2 POP DUP5 DUP2 LT ISZERO PUSH2 0xD39 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x455243313135353A206275726E20616D6F756E7420657863656564732062616C PUSH1 0x44 DUP3 ADD MSTORE PUSH4 0x616E6365 PUSH1 0xE0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x262 JUMP JUMPDEST PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 DUP2 AND DUP1 DUP7 MSTORE SWAP2 DUP5 MSTORE DUP3 DUP6 KECCAK256 DUP11 DUP8 SUB SWAP1 SSTORE DUP3 MLOAD DUP12 DUP2 MSTORE SWAP4 DUP5 ADD DUP11 SWAP1 MSTORE SWAP1 SWAP3 SWAP1 DUP9 AND SWAP2 PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 SWAP1 MSTORE PUSH2 0x71A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 PUSH1 0x0 SWAP2 SWAP1 PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP3 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xDEB JUMPI PUSH2 0xDEB PUSH2 0x15E2 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO PUSH2 0x98E JUMPI PUSH1 0x40 MLOAD PUSH4 0xF23A6E61 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0xF23A6E61 SWAP1 PUSH2 0xE40 SWAP1 DUP10 SWAP1 DUP10 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x1668 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0xE7B JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0xE78 SWAP2 DUP2 ADD SWAP1 PUSH2 0x16AB JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0xF30 JUMPI PUSH2 0xE87 PUSH2 0x16C8 JUMP JUMPDEST DUP1 PUSH4 0x8C379A0 SUB PUSH2 0xEC0 JUMPI POP PUSH2 0xE9B PUSH2 0x16E4 JUMP JUMPDEST DUP1 PUSH2 0xEA6 JUMPI POP PUSH2 0xEC2 JUMP JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x262 SWAP2 SWAP1 PUSH2 0x117F JUMP JUMPDEST POP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x34 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A207472616E7366657220746F206E6F6E2D45524331313535 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x526563656976657220696D706C656D656E746572000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x262 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH4 0xF23A6E61 PUSH1 0xE0 SHL EQ PUSH2 0x71A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x28 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A204552433131353552656365697665722072656A65637465 PUSH1 0x44 DUP3 ADD MSTORE PUSH8 0x6420746F6B656E73 PUSH1 0xC0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x262 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO PUSH2 0x98E JUMPI PUSH1 0x40 MLOAD PUSH4 0xBC197C81 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0xBC197C81 SWAP1 PUSH2 0xFE5 SWAP1 DUP10 SWAP1 DUP10 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x176E JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x1020 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x101D SWAP2 DUP2 ADD SWAP1 PUSH2 0x16AB JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x102C JUMPI PUSH2 0xE87 PUSH2 0x16C8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH4 0xBC197C81 PUSH1 0xE0 SHL EQ PUSH2 0x71A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x28 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A204552433131353552656365697665722072656A65637465 PUSH1 0x44 DUP3 ADD MSTORE PUSH8 0x6420746F6B656E73 PUSH1 0xC0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x262 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x10B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x10CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x10D5 DUP4 PUSH2 0x109D JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x10F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x110E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1119 DUP2 PUSH2 0x10E3 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1132 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x115F JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD DUP3 ADD MSTORE ADD PUSH2 0x1143 JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x20 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x20 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x1119 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x1139 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x11A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x11B0 DUP5 PUSH2 0x109D JUMP JUMPDEST SWAP6 PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP6 POP PUSH1 0x40 SWAP1 SWAP5 ADD CALLDATALOAD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x1201 JUMPI PUSH2 0x1201 PUSH2 0x11C5 JUMP JUMPDEST PUSH1 0x40 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x1222 JUMPI PUSH2 0x1222 PUSH2 0x11C5 JUMP JUMPDEST POP PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x123D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x20 PUSH2 0x124A DUP3 PUSH2 0x1208 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1257 DUP3 DUP3 PUSH2 0x11DB JUMP JUMPDEST DUP4 DUP2 MSTORE PUSH1 0x5 SWAP4 SWAP1 SWAP4 SHL DUP6 ADD DUP3 ADD SWAP3 DUP3 DUP2 ADD SWAP2 POP DUP7 DUP5 GT ISZERO PUSH2 0x1277 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 DUP7 ADD JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x1292 JUMPI DUP1 CALLDATALOAD DUP4 MSTORE SWAP2 DUP4 ADD SWAP2 DUP4 ADD PUSH2 0x127B JUMP JUMPDEST POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x12AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x12C8 JUMPI PUSH2 0x12C8 PUSH2 0x11C5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x12DF PUSH1 0x1F DUP4 ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 PUSH2 0x11DB JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 PUSH1 0x20 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0x12F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP6 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 SWAP2 DUP2 ADD PUSH1 0x20 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x1329 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1332 DUP7 PUSH2 0x109D JUMP JUMPDEST SWAP5 POP PUSH2 0x1340 PUSH1 0x20 DUP8 ADD PUSH2 0x109D JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x135D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1369 DUP10 DUP4 DUP11 ADD PUSH2 0x122C JUMP JUMPDEST SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x137F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x138B DUP10 DUP4 DUP11 ADD PUSH2 0x122C JUMP JUMPDEST SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x13A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x13AE DUP9 DUP3 DUP10 ADD PUSH2 0x129D JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x13CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x13E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x13FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x20 PUSH2 0x1407 DUP3 PUSH2 0x1208 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1414 DUP3 DUP3 PUSH2 0x11DB JUMP JUMPDEST DUP4 DUP2 MSTORE PUSH1 0x5 SWAP4 SWAP1 SWAP4 SHL DUP6 ADD DUP3 ADD SWAP3 DUP3 DUP2 ADD SWAP2 POP DUP10 DUP5 GT ISZERO PUSH2 0x1434 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP5 DUP3 ADD SWAP5 JUMPDEST DUP4 DUP7 LT ISZERO PUSH2 0x1459 JUMPI PUSH2 0x144A DUP7 PUSH2 0x109D JUMP JUMPDEST DUP3 MSTORE SWAP5 DUP3 ADD SWAP5 SWAP1 DUP3 ADD SWAP1 PUSH2 0x1439 JUMP JUMPDEST SWAP7 POP POP DUP7 ADD CALLDATALOAD SWAP3 POP POP DUP1 DUP3 GT ISZERO PUSH2 0x146F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x147C DUP6 DUP3 DUP7 ADD PUSH2 0x122C JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP1 DUP5 ADD PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x14B6 JUMPI DUP2 MLOAD DUP8 MSTORE SWAP6 DUP3 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x149A JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x1119 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x1486 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x14E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x14F0 DUP4 PUSH2 0x109D JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x1505 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1523 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x152C DUP4 PUSH2 0x109D JUMP JUMPDEST SWAP2 POP PUSH2 0x153A PUSH1 0x20 DUP5 ADD PUSH2 0x109D JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x155B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1564 DUP7 PUSH2 0x109D JUMP JUMPDEST SWAP5 POP PUSH2 0x1572 PUSH1 0x20 DUP8 ADD PUSH2 0x109D JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD SWAP2 POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x159C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x13AE DUP9 DUP3 DUP10 ADD PUSH2 0x129D JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x15BC JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x15DC JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 ADD PUSH2 0x1620 JUMPI PUSH2 0x1620 PUSH2 0x15F8 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x28E JUMPI PUSH2 0x28E PUSH2 0x15F8 JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 PUSH2 0x164D PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x1486 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x165F DUP2 DUP6 PUSH2 0x1486 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND DUP4 MSTORE DUP1 DUP8 AND PUSH1 0x20 DUP5 ADD MSTORE POP DUP5 PUSH1 0x40 DUP4 ADD MSTORE DUP4 PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0xA0 PUSH1 0x80 DUP4 ADD MSTORE PUSH2 0x16A0 PUSH1 0xA0 DUP4 ADD DUP5 PUSH2 0x1139 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x16BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x1119 DUP2 PUSH2 0x10E3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x3 RETURNDATASIZE GT ISZERO PUSH2 0x16E1 JUMPI PUSH1 0x4 PUSH1 0x0 DUP1 RETURNDATACOPY POP PUSH1 0x0 MLOAD PUSH1 0xE0 SHR JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x44 RETURNDATASIZE LT ISZERO PUSH2 0x16F2 JUMPI SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x3 NOT RETURNDATASIZE DUP2 ADD PUSH1 0x4 DUP4 RETURNDATACOPY DUP2 MLOAD RETURNDATASIZE PUSH8 0xFFFFFFFFFFFFFFFF DUP2 PUSH1 0x24 DUP5 ADD GT DUP2 DUP5 GT OR ISZERO PUSH2 0x1722 JUMPI POP POP POP POP POP SWAP1 JUMP JUMPDEST DUP3 DUP6 ADD SWAP2 POP DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x173A JUMPI POP POP POP POP POP POP SWAP1 JUMP JUMPDEST DUP5 RETURNDATASIZE DUP8 ADD ADD PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x1754 JUMPI POP POP POP POP POP POP SWAP1 JUMP JUMPDEST PUSH2 0x1763 PUSH1 0x20 DUP3 DUP7 ADD ADD DUP8 PUSH2 0x11DB JUMP JUMPDEST POP SWAP1 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND DUP4 MSTORE DUP1 DUP8 AND PUSH1 0x20 DUP5 ADD MSTORE POP PUSH1 0xA0 PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x179A PUSH1 0xA0 DUP4 ADD DUP7 PUSH2 0x1486 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x60 DUP5 ADD MSTORE PUSH2 0x17AC DUP2 DUP7 PUSH2 0x1486 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 SUB PUSH1 0x80 DUP5 ADD MSTORE PUSH2 0x17C0 DUP2 DUP6 PUSH2 0x1139 JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"303:349:58:-:0;;;341:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;381:4;1149:13:22;381:4:58;1149:7:22;:13::i;:::-;1107:62;341:48:58;303:349;;8149:86:22;8215:4;:13;8222:6;8215:4;:13;:::i;:::-;;8149:86;:::o;14:127:92:-;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:1042;226:6;257:2;300;288:9;279:7;275:23;271:32;268:52;;;316:1;313;306:12;268:52;343:16;;-1:-1:-1;;;;;408:14:92;;;405:34;;;435:1;432;425:12;405:34;473:6;462:9;458:22;448:32;;518:7;511:4;507:2;503:13;499:27;489:55;;540:1;537;530:12;489:55;569:2;563:9;591:2;587;584:10;581:36;;;597:18;;:::i;:::-;672:2;666:9;640:2;726:13;;-1:-1:-1;;722:22:92;;;746:2;718:31;714:40;702:53;;;770:18;;;790:22;;;767:46;764:72;;;816:18;;:::i;:::-;856:10;852:2;845:22;891:2;883:6;876:18;931:7;926:2;921;917;913:11;909:20;906:33;903:53;;;952:1;949;942:12;903:53;974:1;965:10;;984:129;998:2;995:1;992:9;984:129;;;1086:10;;;1082:19;;1076:26;1055:14;;;1051:23;;1044:59;1009:10;;;;984:129;;;1155:1;1150:2;1145;1137:6;1133:15;1129:24;1122:35;1176:6;1166:16;;;;;;;;146:1042;;;;:::o;1193:380::-;1272:1;1268:12;;;;1315;;;1336:61;;1390:4;1382:6;1378:17;1368:27;;1336:61;1443:2;1435:6;1432:14;1412:18;1409:38;1406:161;;1489:10;1484:3;1480:20;1477:1;1470:31;1524:4;1521:1;1514:15;1552:4;1549:1;1542:15;1406:161;;1193:380;;;:::o;1704:545::-;1806:2;1801:3;1798:11;1795:448;;;1842:1;1867:5;1863:2;1856:17;1912:4;1908:2;1898:19;1982:2;1970:10;1966:19;1963:1;1959:27;1953:4;1949:38;2018:4;2006:10;2003:20;2000:47;;;-1:-1:-1;2041:4:92;2000:47;2096:2;2091:3;2087:12;2084:1;2080:20;2074:4;2070:31;2060:41;;2151:82;2169:2;2162:5;2159:13;2151:82;;;2214:17;;;2195:1;2184:13;2151:82;;;2155:3;;;1795:448;1704:545;;;:::o;2425:1352::-;2545:10;;-1:-1:-1;;;;;2567:30:92;;2564:56;;;2600:18;;:::i;:::-;2629:97;2719:6;2679:38;2711:4;2705:11;2679:38;:::i;:::-;2673:4;2629:97;:::i;:::-;2781:4;;2845:2;2834:14;;2862:1;2857:663;;;;3564:1;3581:6;3578:89;;;-1:-1:-1;3633:19:92;;;3627:26;3578:89;-1:-1:-1;;2382:1:92;2378:11;;;2374:24;2370:29;2360:40;2406:1;2402:11;;;2357:57;3680:81;;2827:944;;2857:663;1651:1;1644:14;;;1688:4;1675:18;;-1:-1:-1;;2893:20:92;;;3011:236;3025:7;3022:1;3019:14;3011:236;;;3114:19;;;3108:26;3093:42;;3206:27;;;;3174:1;3162:14;;;;3041:19;;3011:236;;;3015:3;3275:6;3266:7;3263:19;3260:201;;;3336:19;;;3330:26;-1:-1:-1;;3419:1:92;3415:14;;;3431:3;3411:24;3407:37;3403:42;3388:58;3373:74;;3260:201;-1:-1:-1;;;;;3507:1:92;3491:14;;;3487:22;3474:36;;-1:-1:-1;2425:1352:92:o;:::-;303:349:58;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_afterTokenTransfer_6821":{"entryPoint":null,"id":6821,"parameterSlots":6,"returnSlots":0},"@_asSingletonArray_6977":{"entryPoint":3505,"id":6977,"parameterSlots":1,"returnSlots":1},"@_beforeTokenTransfer_6802":{"entryPoint":null,"id":6802,"parameterSlots":6,"returnSlots":0},"@_burn_6628":{"entryPoint":3125,"id":6628,"parameterSlots":3,"returnSlots":0},"@_doSafeBatchTransferAcceptanceCheck_6949":{"entryPoint":4001,"id":6949,"parameterSlots":6,"returnSlots":0},"@_doSafeTransferAcceptanceCheck_6884":{"entryPoint":3580,"id":6884,"parameterSlots":6,"returnSlots":0},"@_mint_6412":{"entryPoint":1551,"id":6412,"parameterSlots":4,"returnSlots":0},"@_msgSender_9276":{"entryPoint":null,"id":9276,"parameterSlots":0,"returnSlots":1},"@_safeBatchTransferFrom_6300":{"entryPoint":1827,"id":6300,"parameterSlots":5,"returnSlots":0},"@_safeTransferFrom_6165":{"entryPoint":2698,"id":6165,"parameterSlots":5,"returnSlots":0},"@_setApprovalForAll_6783":{"entryPoint":2454,"id":6783,"parameterSlots":3,"returnSlots":0},"@balanceOfBatch_5935":{"entryPoint":1067,"id":5935,"parameterSlots":2,"returnSlots":1},"@balanceOf_5871":{"entryPoint":488,"id":5871,"parameterSlots":2,"returnSlots":1},"@burn_12679":{"entryPoint":1540,"id":12679,"parameterSlots":3,"returnSlots":0},"@isApprovedForAll_5970":{"entryPoint":null,"id":5970,"parameterSlots":2,"returnSlots":1},"@isContract_8952":{"entryPoint":null,"id":8952,"parameterSlots":1,"returnSlots":1},"@mint_12663":{"entryPoint":888,"id":12663,"parameterSlots":3,"returnSlots":0},"@safeBatchTransferFrom_6048":{"entryPoint":920,"id":6048,"parameterSlots":5,"returnSlots":0},"@safeTransferFrom_6008":{"entryPoint":1400,"id":6008,"parameterSlots":5,"returnSlots":0},"@setApprovalForAll_5952":{"entryPoint":1385,"id":5952,"parameterSlots":2,"returnSlots":0},"@supportsInterface_5831":{"entryPoint":660,"id":5831,"parameterSlots":1,"returnSlots":1},"@supportsInterface_9730":{"entryPoint":null,"id":9730,"parameterSlots":1,"returnSlots":1},"@uri_5843":{"entryPoint":740,"id":5843,"parameterSlots":1,"returnSlots":1},"abi_decode_address":{"entryPoint":4253,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_array_uint256_dyn":{"entryPoint":4652,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_bytes":{"entryPoint":4765,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_address":{"entryPoint":5392,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_addresst_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptrt_bytes_memory_ptr":{"entryPoint":4881,"id":null,"parameterSlots":2,"returnSlots":5},"abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_bytes_memory_ptr":{"entryPoint":5443,"id":null,"parameterSlots":2,"returnSlots":5},"abi_decode_tuple_t_addresst_bool":{"entryPoint":5332,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_uint256":{"entryPoint":4281,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_uint256t_uint256":{"entryPoint":4498,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_array$_t_address_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptr":{"entryPoint":5051,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_bytes4":{"entryPoint":4348,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes4_fromMemory":{"entryPoint":5803,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256":{"entryPoint":4384,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_array_uint256_dyn":{"entryPoint":5254,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_string":{"entryPoint":4409,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr_t_bytes_memory_ptr__to_t_address_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":5998,"id":null,"parameterSlots":6,"returnSlots":1},"abi_encode_tuple_t_address_t_address_t_uint256_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_uint256_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":5736,"id":null,"parameterSlots":6,"returnSlots":1},"abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed":{"entryPoint":5313,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed":{"entryPoint":5690,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":4479,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_0587cccad73a80a7f013db13c596f4febc1968dc77e1d3589d5e7a509a3d6503__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_294a5de01910e2350ff231c633ae2d453ed6b1b72c75506234b7aace63eae685__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_415a1b99e1fd4a18cf87c08995f5a9130182e8d76e9c17c497bfebaaef9265ad__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_47c72b42072ed6c647dec3a0a5c88bec44d3e901c64659bff94ecce0a0323156__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_6faf1c67f278b07c6771dcf4c315a89c21c0eaed11d9ab3d51774da1cfef545d__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_87fd4aee52f5758d127cd9704d5ffef70f36ed1e87eb99b6f40e37a25c79a76a__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_8ac7e9556b567c1c94bb4daaa3c3a65be5ac686579615210cb910fb8cb8d65bf__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_df9806c6dc743de602e49918a67b580590d69ab768bdb59f977c0a884a91a7c2__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_e155f5d69798c6205436a388a4f3a5fd42f54147b40f4d63a2c8071ff8a9fee5__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_e909e0c9a8f96b4f9af03b716811ece20beb070be416893ed1d50619b5930807__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_ebf031a1b7ee1d0b3a7752b450a3268e8b6c334561b48c1c0ba0f5bac05749f2__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_f591f7b75ffc499e05f8b34c3364b2eceff651378d9549db1d5d67c0d8255c5d__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"array_allocation_size_array_uint256_dyn":{"entryPoint":4616,"id":null,"parameterSlots":1,"returnSlots":1},"checked_add_t_uint256":{"entryPoint":5671,"id":null,"parameterSlots":2,"returnSlots":1},"extract_byte_array_length":{"entryPoint":5544,"id":null,"parameterSlots":1,"returnSlots":1},"finalize_allocation":{"entryPoint":4571,"id":null,"parameterSlots":2,"returnSlots":0},"increment_t_uint256":{"entryPoint":5646,"id":null,"parameterSlots":1,"returnSlots":1},"panic_error_0x11":{"entryPoint":5624,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x32":{"entryPoint":5602,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":4549,"id":null,"parameterSlots":0,"returnSlots":0},"return_data_selector":{"entryPoint":5832,"id":null,"parameterSlots":0,"returnSlots":1},"try_decode_error_message":{"entryPoint":5860,"id":null,"parameterSlots":0,"returnSlots":1},"validator_revert_bytes4":{"entryPoint":4323,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:17467:92","statements":[{"nodeType":"YulBlock","src":"6:3:92","statements":[]},{"body":{"nodeType":"YulBlock","src":"63:147:92","statements":[{"nodeType":"YulAssignment","src":"73:29:92","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"95:6:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"82:12:92"},"nodeType":"YulFunctionCall","src":"82:20:92"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"73:5:92"}]},{"body":{"nodeType":"YulBlock","src":"188:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"197:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"200:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"190:6:92"},"nodeType":"YulFunctionCall","src":"190:12:92"},"nodeType":"YulExpressionStatement","src":"190:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"124:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"135:5:92"},{"kind":"number","nodeType":"YulLiteral","src":"142:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"131:3:92"},"nodeType":"YulFunctionCall","src":"131:54:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"121:2:92"},"nodeType":"YulFunctionCall","src":"121:65:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"114:6:92"},"nodeType":"YulFunctionCall","src":"114:73:92"},"nodeType":"YulIf","src":"111:93:92"}]},"name":"abi_decode_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"42:6:92","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"53:5:92","type":""}],"src":"14:196:92"},{"body":{"nodeType":"YulBlock","src":"302:167:92","statements":[{"body":{"nodeType":"YulBlock","src":"348:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"357:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"360:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"350:6:92"},"nodeType":"YulFunctionCall","src":"350:12:92"},"nodeType":"YulExpressionStatement","src":"350:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"323:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"332:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"319:3:92"},"nodeType":"YulFunctionCall","src":"319:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"344:2:92","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"315:3:92"},"nodeType":"YulFunctionCall","src":"315:32:92"},"nodeType":"YulIf","src":"312:52:92"},{"nodeType":"YulAssignment","src":"373:39:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"402:9:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"383:18:92"},"nodeType":"YulFunctionCall","src":"383:29:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"373:6:92"}]},{"nodeType":"YulAssignment","src":"421:42:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"448:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"459:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"444:3:92"},"nodeType":"YulFunctionCall","src":"444:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"431:12:92"},"nodeType":"YulFunctionCall","src":"431:32:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"421:6:92"}]}]},"name":"abi_decode_tuple_t_addresst_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"260:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"271:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"283:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"291:6:92","type":""}],"src":"215:254:92"},{"body":{"nodeType":"YulBlock","src":"575:76:92","statements":[{"nodeType":"YulAssignment","src":"585:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"597:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"608:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"593:3:92"},"nodeType":"YulFunctionCall","src":"593:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"585:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"627:9:92"},{"name":"value0","nodeType":"YulIdentifier","src":"638:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"620:6:92"},"nodeType":"YulFunctionCall","src":"620:25:92"},"nodeType":"YulExpressionStatement","src":"620:25:92"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"544:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"555:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"566:4:92","type":""}],"src":"474:177:92"},{"body":{"nodeType":"YulBlock","src":"700:87:92","statements":[{"body":{"nodeType":"YulBlock","src":"765:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"774:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"777:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"767:6:92"},"nodeType":"YulFunctionCall","src":"767:12:92"},"nodeType":"YulExpressionStatement","src":"767:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"723:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"734:5:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"745:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"750:10:92","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"741:3:92"},"nodeType":"YulFunctionCall","src":"741:20:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"730:3:92"},"nodeType":"YulFunctionCall","src":"730:32:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"720:2:92"},"nodeType":"YulFunctionCall","src":"720:43:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"713:6:92"},"nodeType":"YulFunctionCall","src":"713:51:92"},"nodeType":"YulIf","src":"710:71:92"}]},"name":"validator_revert_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"689:5:92","type":""}],"src":"656:131:92"},{"body":{"nodeType":"YulBlock","src":"861:176:92","statements":[{"body":{"nodeType":"YulBlock","src":"907:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"916:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"919:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"909:6:92"},"nodeType":"YulFunctionCall","src":"909:12:92"},"nodeType":"YulExpressionStatement","src":"909:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"882:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"891:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"878:3:92"},"nodeType":"YulFunctionCall","src":"878:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"903:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"874:3:92"},"nodeType":"YulFunctionCall","src":"874:32:92"},"nodeType":"YulIf","src":"871:52:92"},{"nodeType":"YulVariableDeclaration","src":"932:36:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"958:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"945:12:92"},"nodeType":"YulFunctionCall","src":"945:23:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"936:5:92","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1001:5:92"}],"functionName":{"name":"validator_revert_bytes4","nodeType":"YulIdentifier","src":"977:23:92"},"nodeType":"YulFunctionCall","src":"977:30:92"},"nodeType":"YulExpressionStatement","src":"977:30:92"},{"nodeType":"YulAssignment","src":"1016:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"1026:5:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1016:6:92"}]}]},"name":"abi_decode_tuple_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"827:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"838:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"850:6:92","type":""}],"src":"792:245:92"},{"body":{"nodeType":"YulBlock","src":"1137:92:92","statements":[{"nodeType":"YulAssignment","src":"1147:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1159:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1170:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1155:3:92"},"nodeType":"YulFunctionCall","src":"1155:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1147:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1189:9:92"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1214:6:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1207:6:92"},"nodeType":"YulFunctionCall","src":"1207:14:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1200:6:92"},"nodeType":"YulFunctionCall","src":"1200:22:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1182:6:92"},"nodeType":"YulFunctionCall","src":"1182:41:92"},"nodeType":"YulExpressionStatement","src":"1182:41:92"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1106:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1117:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1128:4:92","type":""}],"src":"1042:187:92"},{"body":{"nodeType":"YulBlock","src":"1304:110:92","statements":[{"body":{"nodeType":"YulBlock","src":"1350:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1359:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1362:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1352:6:92"},"nodeType":"YulFunctionCall","src":"1352:12:92"},"nodeType":"YulExpressionStatement","src":"1352:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1325:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"1334:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1321:3:92"},"nodeType":"YulFunctionCall","src":"1321:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"1346:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1317:3:92"},"nodeType":"YulFunctionCall","src":"1317:32:92"},"nodeType":"YulIf","src":"1314:52:92"},{"nodeType":"YulAssignment","src":"1375:33:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1398:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1385:12:92"},"nodeType":"YulFunctionCall","src":"1385:23:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1375:6:92"}]}]},"name":"abi_decode_tuple_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1270:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1281:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1293:6:92","type":""}],"src":"1234:180:92"},{"body":{"nodeType":"YulBlock","src":"1469:373:92","statements":[{"nodeType":"YulVariableDeclaration","src":"1479:26:92","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1499:5:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1493:5:92"},"nodeType":"YulFunctionCall","src":"1493:12:92"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"1483:6:92","type":""}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1521:3:92"},{"name":"length","nodeType":"YulIdentifier","src":"1526:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1514:6:92"},"nodeType":"YulFunctionCall","src":"1514:19:92"},"nodeType":"YulExpressionStatement","src":"1514:19:92"},{"nodeType":"YulVariableDeclaration","src":"1542:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"1551:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"1546:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"1613:110:92","statements":[{"nodeType":"YulVariableDeclaration","src":"1627:14:92","value":{"kind":"number","nodeType":"YulLiteral","src":"1637:4:92","type":"","value":"0x20"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"1631:2:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1669:3:92"},{"name":"i","nodeType":"YulIdentifier","src":"1674:1:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1665:3:92"},"nodeType":"YulFunctionCall","src":"1665:11:92"},{"name":"_1","nodeType":"YulIdentifier","src":"1678:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1661:3:92"},"nodeType":"YulFunctionCall","src":"1661:20:92"},{"arguments":[{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1697:5:92"},{"name":"i","nodeType":"YulIdentifier","src":"1704:1:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1693:3:92"},"nodeType":"YulFunctionCall","src":"1693:13:92"},{"name":"_1","nodeType":"YulIdentifier","src":"1708:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1689:3:92"},"nodeType":"YulFunctionCall","src":"1689:22:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1683:5:92"},"nodeType":"YulFunctionCall","src":"1683:29:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1654:6:92"},"nodeType":"YulFunctionCall","src":"1654:59:92"},"nodeType":"YulExpressionStatement","src":"1654:59:92"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"1572:1:92"},{"name":"length","nodeType":"YulIdentifier","src":"1575:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"1569:2:92"},"nodeType":"YulFunctionCall","src":"1569:13:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"1583:21:92","statements":[{"nodeType":"YulAssignment","src":"1585:17:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"1594:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"1597:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1590:3:92"},"nodeType":"YulFunctionCall","src":"1590:12:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"1585:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"1565:3:92","statements":[]},"src":"1561:162:92"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1747:3:92"},{"name":"length","nodeType":"YulIdentifier","src":"1752:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1743:3:92"},"nodeType":"YulFunctionCall","src":"1743:16:92"},{"kind":"number","nodeType":"YulLiteral","src":"1761:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1739:3:92"},"nodeType":"YulFunctionCall","src":"1739:27:92"},{"kind":"number","nodeType":"YulLiteral","src":"1768:1:92","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1732:6:92"},"nodeType":"YulFunctionCall","src":"1732:38:92"},"nodeType":"YulExpressionStatement","src":"1732:38:92"},{"nodeType":"YulAssignment","src":"1779:57:92","value":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1794:3:92"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"1807:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"1815:2:92","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1803:3:92"},"nodeType":"YulFunctionCall","src":"1803:15:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1824:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"1820:3:92"},"nodeType":"YulFunctionCall","src":"1820:7:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1799:3:92"},"nodeType":"YulFunctionCall","src":"1799:29:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1790:3:92"},"nodeType":"YulFunctionCall","src":"1790:39:92"},{"kind":"number","nodeType":"YulLiteral","src":"1831:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1786:3:92"},"nodeType":"YulFunctionCall","src":"1786:50:92"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1779:3:92"}]}]},"name":"abi_encode_string","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1446:5:92","type":""},{"name":"pos","nodeType":"YulTypedName","src":"1453:3:92","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1461:3:92","type":""}],"src":"1419:423:92"},{"body":{"nodeType":"YulBlock","src":"1968:99:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1985:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1996:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1978:6:92"},"nodeType":"YulFunctionCall","src":"1978:21:92"},"nodeType":"YulExpressionStatement","src":"1978:21:92"},{"nodeType":"YulAssignment","src":"2008:53:92","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2034:6:92"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2046:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2057:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2042:3:92"},"nodeType":"YulFunctionCall","src":"2042:18:92"}],"functionName":{"name":"abi_encode_string","nodeType":"YulIdentifier","src":"2016:17:92"},"nodeType":"YulFunctionCall","src":"2016:45:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2008:4:92"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1937:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1948:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1959:4:92","type":""}],"src":"1847:220:92"},{"body":{"nodeType":"YulBlock","src":"2176:218:92","statements":[{"body":{"nodeType":"YulBlock","src":"2222:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2231:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2234:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2224:6:92"},"nodeType":"YulFunctionCall","src":"2224:12:92"},"nodeType":"YulExpressionStatement","src":"2224:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2197:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"2206:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2193:3:92"},"nodeType":"YulFunctionCall","src":"2193:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"2218:2:92","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2189:3:92"},"nodeType":"YulFunctionCall","src":"2189:32:92"},"nodeType":"YulIf","src":"2186:52:92"},{"nodeType":"YulAssignment","src":"2247:39:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2276:9:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"2257:18:92"},"nodeType":"YulFunctionCall","src":"2257:29:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2247:6:92"}]},{"nodeType":"YulAssignment","src":"2295:42:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2322:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2333:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2318:3:92"},"nodeType":"YulFunctionCall","src":"2318:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2305:12:92"},"nodeType":"YulFunctionCall","src":"2305:32:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"2295:6:92"}]},{"nodeType":"YulAssignment","src":"2346:42:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2373:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2384:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2369:3:92"},"nodeType":"YulFunctionCall","src":"2369:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2356:12:92"},"nodeType":"YulFunctionCall","src":"2356:32:92"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"2346:6:92"}]}]},"name":"abi_decode_tuple_t_addresst_uint256t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2126:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2137:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2149:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2157:6:92","type":""},{"name":"value2","nodeType":"YulTypedName","src":"2165:6:92","type":""}],"src":"2072:322:92"},{"body":{"nodeType":"YulBlock","src":"2431:95:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2448:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2455:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"2460:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2451:3:92"},"nodeType":"YulFunctionCall","src":"2451:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2441:6:92"},"nodeType":"YulFunctionCall","src":"2441:31:92"},"nodeType":"YulExpressionStatement","src":"2441:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2488:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"2491:4:92","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2481:6:92"},"nodeType":"YulFunctionCall","src":"2481:15:92"},"nodeType":"YulExpressionStatement","src":"2481:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2512:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2515:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2505:6:92"},"nodeType":"YulFunctionCall","src":"2505:15:92"},"nodeType":"YulExpressionStatement","src":"2505:15:92"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"2399:127:92"},{"body":{"nodeType":"YulBlock","src":"2578:202:92","statements":[{"nodeType":"YulVariableDeclaration","src":"2588:58:92","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"2610:6:92"},{"arguments":[{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"2626:4:92"},{"kind":"number","nodeType":"YulLiteral","src":"2632:2:92","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2622:3:92"},"nodeType":"YulFunctionCall","src":"2622:13:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2641:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"2637:3:92"},"nodeType":"YulFunctionCall","src":"2637:7:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2618:3:92"},"nodeType":"YulFunctionCall","src":"2618:27:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2606:3:92"},"nodeType":"YulFunctionCall","src":"2606:40:92"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"2592:10:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"2721:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"2723:16:92"},"nodeType":"YulFunctionCall","src":"2723:18:92"},"nodeType":"YulExpressionStatement","src":"2723:18:92"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"2664:10:92"},{"kind":"number","nodeType":"YulLiteral","src":"2676:18:92","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2661:2:92"},"nodeType":"YulFunctionCall","src":"2661:34:92"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"2700:10:92"},{"name":"memPtr","nodeType":"YulIdentifier","src":"2712:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2697:2:92"},"nodeType":"YulFunctionCall","src":"2697:22:92"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"2658:2:92"},"nodeType":"YulFunctionCall","src":"2658:62:92"},"nodeType":"YulIf","src":"2655:88:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2759:2:92","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"2763:10:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2752:6:92"},"nodeType":"YulFunctionCall","src":"2752:22:92"},"nodeType":"YulExpressionStatement","src":"2752:22:92"}]},"name":"finalize_allocation","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"2560:6:92","type":""},{"name":"size","nodeType":"YulTypedName","src":"2568:4:92","type":""}],"src":"2531:249:92"},{"body":{"nodeType":"YulBlock","src":"2854:114:92","statements":[{"body":{"nodeType":"YulBlock","src":"2898:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"2900:16:92"},"nodeType":"YulFunctionCall","src":"2900:18:92"},"nodeType":"YulExpressionStatement","src":"2900:18:92"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"2870:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"2878:18:92","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2867:2:92"},"nodeType":"YulFunctionCall","src":"2867:30:92"},"nodeType":"YulIf","src":"2864:56:92"},{"nodeType":"YulAssignment","src":"2929:33:92","value":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2945:1:92","type":"","value":"5"},{"name":"length","nodeType":"YulIdentifier","src":"2948:6:92"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2941:3:92"},"nodeType":"YulFunctionCall","src":"2941:14:92"},{"kind":"number","nodeType":"YulLiteral","src":"2957:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2937:3:92"},"nodeType":"YulFunctionCall","src":"2937:25:92"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"2929:4:92"}]}]},"name":"array_allocation_size_array_uint256_dyn","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nodeType":"YulTypedName","src":"2834:6:92","type":""}],"returnVariables":[{"name":"size","nodeType":"YulTypedName","src":"2845:4:92","type":""}],"src":"2785:183:92"},{"body":{"nodeType":"YulBlock","src":"3037:660:92","statements":[{"body":{"nodeType":"YulBlock","src":"3086:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3095:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3098:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3088:6:92"},"nodeType":"YulFunctionCall","src":"3088:12:92"},"nodeType":"YulExpressionStatement","src":"3088:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"3065:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"3073:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3061:3:92"},"nodeType":"YulFunctionCall","src":"3061:17:92"},{"name":"end","nodeType":"YulIdentifier","src":"3080:3:92"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3057:3:92"},"nodeType":"YulFunctionCall","src":"3057:27:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3050:6:92"},"nodeType":"YulFunctionCall","src":"3050:35:92"},"nodeType":"YulIf","src":"3047:55:92"},{"nodeType":"YulVariableDeclaration","src":"3111:30:92","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"3134:6:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3121:12:92"},"nodeType":"YulFunctionCall","src":"3121:20:92"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"3115:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3150:14:92","value":{"kind":"number","nodeType":"YulLiteral","src":"3160:4:92","type":"","value":"0x20"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"3154:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3173:53:92","value":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"3223:2:92"}],"functionName":{"name":"array_allocation_size_array_uint256_dyn","nodeType":"YulIdentifier","src":"3183:39:92"},"nodeType":"YulFunctionCall","src":"3183:43:92"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"3177:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3235:23:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3255:2:92","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3249:5:92"},"nodeType":"YulFunctionCall","src":"3249:9:92"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"3239:6:92","type":""}]},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"3287:6:92"},{"name":"_3","nodeType":"YulIdentifier","src":"3295:2:92"}],"functionName":{"name":"finalize_allocation","nodeType":"YulIdentifier","src":"3267:19:92"},"nodeType":"YulFunctionCall","src":"3267:31:92"},"nodeType":"YulExpressionStatement","src":"3267:31:92"},{"nodeType":"YulVariableDeclaration","src":"3307:17:92","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"3318:6:92"},"variables":[{"name":"dst","nodeType":"YulTypedName","src":"3311:3:92","type":""}]},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"3340:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"3348:2:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3333:6:92"},"nodeType":"YulFunctionCall","src":"3333:18:92"},"nodeType":"YulExpressionStatement","src":"3333:18:92"},{"nodeType":"YulAssignment","src":"3360:22:92","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"3371:6:92"},{"name":"_2","nodeType":"YulIdentifier","src":"3379:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3367:3:92"},"nodeType":"YulFunctionCall","src":"3367:15:92"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"3360:3:92"}]},{"nodeType":"YulVariableDeclaration","src":"3391:46:92","value":{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"3413:6:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3425:1:92","type":"","value":"5"},{"name":"_1","nodeType":"YulIdentifier","src":"3428:2:92"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"3421:3:92"},"nodeType":"YulFunctionCall","src":"3421:10:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3409:3:92"},"nodeType":"YulFunctionCall","src":"3409:23:92"},{"name":"_2","nodeType":"YulIdentifier","src":"3434:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3405:3:92"},"nodeType":"YulFunctionCall","src":"3405:32:92"},"variables":[{"name":"srcEnd","nodeType":"YulTypedName","src":"3395:6:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"3465:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3474:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3477:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3467:6:92"},"nodeType":"YulFunctionCall","src":"3467:12:92"},"nodeType":"YulExpressionStatement","src":"3467:12:92"}]},"condition":{"arguments":[{"name":"srcEnd","nodeType":"YulIdentifier","src":"3452:6:92"},{"name":"end","nodeType":"YulIdentifier","src":"3460:3:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3449:2:92"},"nodeType":"YulFunctionCall","src":"3449:15:92"},"nodeType":"YulIf","src":"3446:35:92"},{"nodeType":"YulVariableDeclaration","src":"3490:26:92","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"3505:6:92"},{"name":"_2","nodeType":"YulIdentifier","src":"3513:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3501:3:92"},"nodeType":"YulFunctionCall","src":"3501:15:92"},"variables":[{"name":"src","nodeType":"YulTypedName","src":"3494:3:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"3581:86:92","statements":[{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"3602:3:92"},{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"3620:3:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3607:12:92"},"nodeType":"YulFunctionCall","src":"3607:17:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3595:6:92"},"nodeType":"YulFunctionCall","src":"3595:30:92"},"nodeType":"YulExpressionStatement","src":"3595:30:92"},{"nodeType":"YulAssignment","src":"3638:19:92","value":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"3649:3:92"},{"name":"_2","nodeType":"YulIdentifier","src":"3654:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3645:3:92"},"nodeType":"YulFunctionCall","src":"3645:12:92"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"3638:3:92"}]}]},"condition":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"3536:3:92"},{"name":"srcEnd","nodeType":"YulIdentifier","src":"3541:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"3533:2:92"},"nodeType":"YulFunctionCall","src":"3533:15:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"3549:23:92","statements":[{"nodeType":"YulAssignment","src":"3551:19:92","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"3562:3:92"},{"name":"_2","nodeType":"YulIdentifier","src":"3567:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3558:3:92"},"nodeType":"YulFunctionCall","src":"3558:12:92"},"variableNames":[{"name":"src","nodeType":"YulIdentifier","src":"3551:3:92"}]}]},"pre":{"nodeType":"YulBlock","src":"3529:3:92","statements":[]},"src":"3525:142:92"},{"nodeType":"YulAssignment","src":"3676:15:92","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"3685:6:92"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"3676:5:92"}]}]},"name":"abi_decode_array_uint256_dyn","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"3011:6:92","type":""},{"name":"end","nodeType":"YulTypedName","src":"3019:3:92","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"3027:5:92","type":""}],"src":"2973:724:92"},{"body":{"nodeType":"YulBlock","src":"3754:503:92","statements":[{"body":{"nodeType":"YulBlock","src":"3803:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3812:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3815:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3805:6:92"},"nodeType":"YulFunctionCall","src":"3805:12:92"},"nodeType":"YulExpressionStatement","src":"3805:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"3782:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"3790:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3778:3:92"},"nodeType":"YulFunctionCall","src":"3778:17:92"},{"name":"end","nodeType":"YulIdentifier","src":"3797:3:92"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3774:3:92"},"nodeType":"YulFunctionCall","src":"3774:27:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3767:6:92"},"nodeType":"YulFunctionCall","src":"3767:35:92"},"nodeType":"YulIf","src":"3764:55:92"},{"nodeType":"YulVariableDeclaration","src":"3828:30:92","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"3851:6:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3838:12:92"},"nodeType":"YulFunctionCall","src":"3838:20:92"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"3832:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"3897:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"3899:16:92"},"nodeType":"YulFunctionCall","src":"3899:18:92"},"nodeType":"YulExpressionStatement","src":"3899:18:92"}]},"condition":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"3873:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"3877:18:92","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3870:2:92"},"nodeType":"YulFunctionCall","src":"3870:26:92"},"nodeType":"YulIf","src":"3867:52:92"},{"nodeType":"YulVariableDeclaration","src":"3928:23:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3948:2:92","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3942:5:92"},"nodeType":"YulFunctionCall","src":"3942:9:92"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"3932:6:92","type":""}]},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"3980:6:92"},{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"4000:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"4004:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3996:3:92"},"nodeType":"YulFunctionCall","src":"3996:13:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4015:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"4011:3:92"},"nodeType":"YulFunctionCall","src":"4011:7:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3992:3:92"},"nodeType":"YulFunctionCall","src":"3992:27:92"},{"kind":"number","nodeType":"YulLiteral","src":"4021:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3988:3:92"},"nodeType":"YulFunctionCall","src":"3988:38:92"}],"functionName":{"name":"finalize_allocation","nodeType":"YulIdentifier","src":"3960:19:92"},"nodeType":"YulFunctionCall","src":"3960:67:92"},"nodeType":"YulExpressionStatement","src":"3960:67:92"},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"4043:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"4051:2:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4036:6:92"},"nodeType":"YulFunctionCall","src":"4036:18:92"},"nodeType":"YulExpressionStatement","src":"4036:18:92"},{"body":{"nodeType":"YulBlock","src":"4102:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4111:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4114:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4104:6:92"},"nodeType":"YulFunctionCall","src":"4104:12:92"},"nodeType":"YulExpressionStatement","src":"4104:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"4077:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"4085:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4073:3:92"},"nodeType":"YulFunctionCall","src":"4073:15:92"},{"kind":"number","nodeType":"YulLiteral","src":"4090:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4069:3:92"},"nodeType":"YulFunctionCall","src":"4069:26:92"},{"name":"end","nodeType":"YulIdentifier","src":"4097:3:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4066:2:92"},"nodeType":"YulFunctionCall","src":"4066:35:92"},"nodeType":"YulIf","src":"4063:55:92"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"4144:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"4152:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4140:3:92"},"nodeType":"YulFunctionCall","src":"4140:17:92"},{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"4163:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"4171:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4159:3:92"},"nodeType":"YulFunctionCall","src":"4159:17:92"},{"name":"_1","nodeType":"YulIdentifier","src":"4178:2:92"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"4127:12:92"},"nodeType":"YulFunctionCall","src":"4127:54:92"},"nodeType":"YulExpressionStatement","src":"4127:54:92"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"4205:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"4213:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4201:3:92"},"nodeType":"YulFunctionCall","src":"4201:15:92"},{"kind":"number","nodeType":"YulLiteral","src":"4218:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4197:3:92"},"nodeType":"YulFunctionCall","src":"4197:26:92"},{"kind":"number","nodeType":"YulLiteral","src":"4225:1:92","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4190:6:92"},"nodeType":"YulFunctionCall","src":"4190:37:92"},"nodeType":"YulExpressionStatement","src":"4190:37:92"},{"nodeType":"YulAssignment","src":"4236:15:92","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"4245:6:92"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"4236:5:92"}]}]},"name":"abi_decode_bytes","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"3728:6:92","type":""},{"name":"end","nodeType":"YulTypedName","src":"3736:3:92","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"3744:5:92","type":""}],"src":"3702:555:92"},{"body":{"nodeType":"YulBlock","src":"4459:746:92","statements":[{"body":{"nodeType":"YulBlock","src":"4506:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4515:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4518:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4508:6:92"},"nodeType":"YulFunctionCall","src":"4508:12:92"},"nodeType":"YulExpressionStatement","src":"4508:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"4480:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"4489:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4476:3:92"},"nodeType":"YulFunctionCall","src":"4476:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"4501:3:92","type":"","value":"160"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4472:3:92"},"nodeType":"YulFunctionCall","src":"4472:33:92"},"nodeType":"YulIf","src":"4469:53:92"},{"nodeType":"YulAssignment","src":"4531:39:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4560:9:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"4541:18:92"},"nodeType":"YulFunctionCall","src":"4541:29:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"4531:6:92"}]},{"nodeType":"YulAssignment","src":"4579:48:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4612:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4623:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4608:3:92"},"nodeType":"YulFunctionCall","src":"4608:18:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"4589:18:92"},"nodeType":"YulFunctionCall","src":"4589:38:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"4579:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"4636:46:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4667:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4678:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4663:3:92"},"nodeType":"YulFunctionCall","src":"4663:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4650:12:92"},"nodeType":"YulFunctionCall","src":"4650:32:92"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4640:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4691:28:92","value":{"kind":"number","nodeType":"YulLiteral","src":"4701:18:92","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"4695:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"4746:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4755:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4758:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4748:6:92"},"nodeType":"YulFunctionCall","src":"4748:12:92"},"nodeType":"YulExpressionStatement","src":"4748:12:92"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"4734:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"4742:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4731:2:92"},"nodeType":"YulFunctionCall","src":"4731:14:92"},"nodeType":"YulIf","src":"4728:34:92"},{"nodeType":"YulAssignment","src":"4771:71:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4814:9:92"},{"name":"offset","nodeType":"YulIdentifier","src":"4825:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4810:3:92"},"nodeType":"YulFunctionCall","src":"4810:22:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4834:7:92"}],"functionName":{"name":"abi_decode_array_uint256_dyn","nodeType":"YulIdentifier","src":"4781:28:92"},"nodeType":"YulFunctionCall","src":"4781:61:92"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"4771:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"4851:48:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4884:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4895:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4880:3:92"},"nodeType":"YulFunctionCall","src":"4880:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4867:12:92"},"nodeType":"YulFunctionCall","src":"4867:32:92"},"variables":[{"name":"offset_1","nodeType":"YulTypedName","src":"4855:8:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"4928:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4937:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4940:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4930:6:92"},"nodeType":"YulFunctionCall","src":"4930:12:92"},"nodeType":"YulExpressionStatement","src":"4930:12:92"}]},"condition":{"arguments":[{"name":"offset_1","nodeType":"YulIdentifier","src":"4914:8:92"},{"name":"_1","nodeType":"YulIdentifier","src":"4924:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4911:2:92"},"nodeType":"YulFunctionCall","src":"4911:16:92"},"nodeType":"YulIf","src":"4908:36:92"},{"nodeType":"YulAssignment","src":"4953:73:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4996:9:92"},{"name":"offset_1","nodeType":"YulIdentifier","src":"5007:8:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4992:3:92"},"nodeType":"YulFunctionCall","src":"4992:24:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"5018:7:92"}],"functionName":{"name":"abi_decode_array_uint256_dyn","nodeType":"YulIdentifier","src":"4963:28:92"},"nodeType":"YulFunctionCall","src":"4963:63:92"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"4953:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"5035:49:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5068:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5079:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5064:3:92"},"nodeType":"YulFunctionCall","src":"5064:19:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"5051:12:92"},"nodeType":"YulFunctionCall","src":"5051:33:92"},"variables":[{"name":"offset_2","nodeType":"YulTypedName","src":"5039:8:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"5113:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5122:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5125:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5115:6:92"},"nodeType":"YulFunctionCall","src":"5115:12:92"},"nodeType":"YulExpressionStatement","src":"5115:12:92"}]},"condition":{"arguments":[{"name":"offset_2","nodeType":"YulIdentifier","src":"5099:8:92"},{"name":"_1","nodeType":"YulIdentifier","src":"5109:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5096:2:92"},"nodeType":"YulFunctionCall","src":"5096:16:92"},"nodeType":"YulIf","src":"5093:36:92"},{"nodeType":"YulAssignment","src":"5138:61:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5169:9:92"},{"name":"offset_2","nodeType":"YulIdentifier","src":"5180:8:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5165:3:92"},"nodeType":"YulFunctionCall","src":"5165:24:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"5191:7:92"}],"functionName":{"name":"abi_decode_bytes","nodeType":"YulIdentifier","src":"5148:16:92"},"nodeType":"YulFunctionCall","src":"5148:51:92"},"variableNames":[{"name":"value4","nodeType":"YulIdentifier","src":"5138:6:92"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptrt_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4393:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"4404:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"4416:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"4424:6:92","type":""},{"name":"value2","nodeType":"YulTypedName","src":"4432:6:92","type":""},{"name":"value3","nodeType":"YulTypedName","src":"4440:6:92","type":""},{"name":"value4","nodeType":"YulTypedName","src":"4448:6:92","type":""}],"src":"4262:943:92"},{"body":{"nodeType":"YulBlock","src":"5347:1071:92","statements":[{"body":{"nodeType":"YulBlock","src":"5393:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5402:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5405:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5395:6:92"},"nodeType":"YulFunctionCall","src":"5395:12:92"},"nodeType":"YulExpressionStatement","src":"5395:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"5368:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"5377:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5364:3:92"},"nodeType":"YulFunctionCall","src":"5364:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"5389:2:92","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"5360:3:92"},"nodeType":"YulFunctionCall","src":"5360:32:92"},"nodeType":"YulIf","src":"5357:52:92"},{"nodeType":"YulVariableDeclaration","src":"5418:37:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5445:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"5432:12:92"},"nodeType":"YulFunctionCall","src":"5432:23:92"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"5422:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5464:28:92","value":{"kind":"number","nodeType":"YulLiteral","src":"5474:18:92","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"5468:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"5519:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5528:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5531:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5521:6:92"},"nodeType":"YulFunctionCall","src":"5521:12:92"},"nodeType":"YulExpressionStatement","src":"5521:12:92"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"5507:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"5515:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5504:2:92"},"nodeType":"YulFunctionCall","src":"5504:14:92"},"nodeType":"YulIf","src":"5501:34:92"},{"nodeType":"YulVariableDeclaration","src":"5544:32:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5558:9:92"},{"name":"offset","nodeType":"YulIdentifier","src":"5569:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5554:3:92"},"nodeType":"YulFunctionCall","src":"5554:22:92"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"5548:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"5624:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5633:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5636:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5626:6:92"},"nodeType":"YulFunctionCall","src":"5626:12:92"},"nodeType":"YulExpressionStatement","src":"5626:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"5603:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"5607:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5599:3:92"},"nodeType":"YulFunctionCall","src":"5599:13:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"5614:7:92"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"5595:3:92"},"nodeType":"YulFunctionCall","src":"5595:27:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"5588:6:92"},"nodeType":"YulFunctionCall","src":"5588:35:92"},"nodeType":"YulIf","src":"5585:55:92"},{"nodeType":"YulVariableDeclaration","src":"5649:26:92","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"5672:2:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"5659:12:92"},"nodeType":"YulFunctionCall","src":"5659:16:92"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"5653:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5684:14:92","value":{"kind":"number","nodeType":"YulLiteral","src":"5694:4:92","type":"","value":"0x20"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"5688:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5707:53:92","value":{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"5757:2:92"}],"functionName":{"name":"array_allocation_size_array_uint256_dyn","nodeType":"YulIdentifier","src":"5717:39:92"},"nodeType":"YulFunctionCall","src":"5717:43:92"},"variables":[{"name":"_5","nodeType":"YulTypedName","src":"5711:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5769:23:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5789:2:92","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5783:5:92"},"nodeType":"YulFunctionCall","src":"5783:9:92"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"5773:6:92","type":""}]},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"5821:6:92"},{"name":"_5","nodeType":"YulIdentifier","src":"5829:2:92"}],"functionName":{"name":"finalize_allocation","nodeType":"YulIdentifier","src":"5801:19:92"},"nodeType":"YulFunctionCall","src":"5801:31:92"},"nodeType":"YulExpressionStatement","src":"5801:31:92"},{"nodeType":"YulVariableDeclaration","src":"5841:17:92","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"5852:6:92"},"variables":[{"name":"dst","nodeType":"YulTypedName","src":"5845:3:92","type":""}]},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"5874:6:92"},{"name":"_3","nodeType":"YulIdentifier","src":"5882:2:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5867:6:92"},"nodeType":"YulFunctionCall","src":"5867:18:92"},"nodeType":"YulExpressionStatement","src":"5867:18:92"},{"nodeType":"YulAssignment","src":"5894:22:92","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"5905:6:92"},{"name":"_4","nodeType":"YulIdentifier","src":"5913:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5901:3:92"},"nodeType":"YulFunctionCall","src":"5901:15:92"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"5894:3:92"}]},{"nodeType":"YulVariableDeclaration","src":"5925:42:92","value":{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"5947:2:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5955:1:92","type":"","value":"5"},{"name":"_3","nodeType":"YulIdentifier","src":"5958:2:92"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"5951:3:92"},"nodeType":"YulFunctionCall","src":"5951:10:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5943:3:92"},"nodeType":"YulFunctionCall","src":"5943:19:92"},{"name":"_4","nodeType":"YulIdentifier","src":"5964:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5939:3:92"},"nodeType":"YulFunctionCall","src":"5939:28:92"},"variables":[{"name":"srcEnd","nodeType":"YulTypedName","src":"5929:6:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"5999:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6008:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6011:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6001:6:92"},"nodeType":"YulFunctionCall","src":"6001:12:92"},"nodeType":"YulExpressionStatement","src":"6001:12:92"}]},"condition":{"arguments":[{"name":"srcEnd","nodeType":"YulIdentifier","src":"5982:6:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"5990:7:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5979:2:92"},"nodeType":"YulFunctionCall","src":"5979:19:92"},"nodeType":"YulIf","src":"5976:39:92"},{"nodeType":"YulVariableDeclaration","src":"6024:22:92","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"6039:2:92"},{"name":"_4","nodeType":"YulIdentifier","src":"6043:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6035:3:92"},"nodeType":"YulFunctionCall","src":"6035:11:92"},"variables":[{"name":"src","nodeType":"YulTypedName","src":"6028:3:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"6111:92:92","statements":[{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"6132:3:92"},{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"6156:3:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"6137:18:92"},"nodeType":"YulFunctionCall","src":"6137:23:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6125:6:92"},"nodeType":"YulFunctionCall","src":"6125:36:92"},"nodeType":"YulExpressionStatement","src":"6125:36:92"},{"nodeType":"YulAssignment","src":"6174:19:92","value":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"6185:3:92"},{"name":"_4","nodeType":"YulIdentifier","src":"6190:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6181:3:92"},"nodeType":"YulFunctionCall","src":"6181:12:92"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"6174:3:92"}]}]},"condition":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"6066:3:92"},{"name":"srcEnd","nodeType":"YulIdentifier","src":"6071:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"6063:2:92"},"nodeType":"YulFunctionCall","src":"6063:15:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"6079:23:92","statements":[{"nodeType":"YulAssignment","src":"6081:19:92","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"6092:3:92"},{"name":"_4","nodeType":"YulIdentifier","src":"6097:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6088:3:92"},"nodeType":"YulFunctionCall","src":"6088:12:92"},"variableNames":[{"name":"src","nodeType":"YulIdentifier","src":"6081:3:92"}]}]},"pre":{"nodeType":"YulBlock","src":"6059:3:92","statements":[]},"src":"6055:148:92"},{"nodeType":"YulAssignment","src":"6212:16:92","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"6222:6:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"6212:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"6237:48:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6270:9:92"},{"name":"_4","nodeType":"YulIdentifier","src":"6281:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6266:3:92"},"nodeType":"YulFunctionCall","src":"6266:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6253:12:92"},"nodeType":"YulFunctionCall","src":"6253:32:92"},"variables":[{"name":"offset_1","nodeType":"YulTypedName","src":"6241:8:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"6314:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6323:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6326:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6316:6:92"},"nodeType":"YulFunctionCall","src":"6316:12:92"},"nodeType":"YulExpressionStatement","src":"6316:12:92"}]},"condition":{"arguments":[{"name":"offset_1","nodeType":"YulIdentifier","src":"6300:8:92"},{"name":"_1","nodeType":"YulIdentifier","src":"6310:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6297:2:92"},"nodeType":"YulFunctionCall","src":"6297:16:92"},"nodeType":"YulIf","src":"6294:36:92"},{"nodeType":"YulAssignment","src":"6339:73:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6382:9:92"},{"name":"offset_1","nodeType":"YulIdentifier","src":"6393:8:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6378:3:92"},"nodeType":"YulFunctionCall","src":"6378:24:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"6404:7:92"}],"functionName":{"name":"abi_decode_array_uint256_dyn","nodeType":"YulIdentifier","src":"6349:28:92"},"nodeType":"YulFunctionCall","src":"6349:63:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"6339:6:92"}]}]},"name":"abi_decode_tuple_t_array$_t_address_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5305:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"5316:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"5328:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"5336:6:92","type":""}],"src":"5210:1208:92"},{"body":{"nodeType":"YulBlock","src":"6484:374:92","statements":[{"nodeType":"YulVariableDeclaration","src":"6494:26:92","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6514:5:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6508:5:92"},"nodeType":"YulFunctionCall","src":"6508:12:92"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"6498:6:92","type":""}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6536:3:92"},{"name":"length","nodeType":"YulIdentifier","src":"6541:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6529:6:92"},"nodeType":"YulFunctionCall","src":"6529:19:92"},"nodeType":"YulExpressionStatement","src":"6529:19:92"},{"nodeType":"YulVariableDeclaration","src":"6557:14:92","value":{"kind":"number","nodeType":"YulLiteral","src":"6567:4:92","type":"","value":"0x20"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"6561:2:92","type":""}]},{"nodeType":"YulAssignment","src":"6580:19:92","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6591:3:92"},{"name":"_1","nodeType":"YulIdentifier","src":"6596:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6587:3:92"},"nodeType":"YulFunctionCall","src":"6587:12:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"6580:3:92"}]},{"nodeType":"YulVariableDeclaration","src":"6608:28:92","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6626:5:92"},{"name":"_1","nodeType":"YulIdentifier","src":"6633:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6622:3:92"},"nodeType":"YulFunctionCall","src":"6622:14:92"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"6612:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"6645:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"6654:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"6649:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"6713:120:92","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6734:3:92"},{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"6745:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6739:5:92"},"nodeType":"YulFunctionCall","src":"6739:13:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6727:6:92"},"nodeType":"YulFunctionCall","src":"6727:26:92"},"nodeType":"YulExpressionStatement","src":"6727:26:92"},{"nodeType":"YulAssignment","src":"6766:19:92","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6777:3:92"},{"name":"_1","nodeType":"YulIdentifier","src":"6782:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6773:3:92"},"nodeType":"YulFunctionCall","src":"6773:12:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"6766:3:92"}]},{"nodeType":"YulAssignment","src":"6798:25:92","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"6812:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"6820:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6808:3:92"},"nodeType":"YulFunctionCall","src":"6808:15:92"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"6798:6:92"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"6675:1:92"},{"name":"length","nodeType":"YulIdentifier","src":"6678:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"6672:2:92"},"nodeType":"YulFunctionCall","src":"6672:13:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"6686:18:92","statements":[{"nodeType":"YulAssignment","src":"6688:14:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"6697:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"6700:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6693:3:92"},"nodeType":"YulFunctionCall","src":"6693:9:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"6688:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"6668:3:92","statements":[]},"src":"6664:169:92"},{"nodeType":"YulAssignment","src":"6842:10:92","value":{"name":"pos","nodeType":"YulIdentifier","src":"6849:3:92"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"6842:3:92"}]}]},"name":"abi_encode_array_uint256_dyn","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"6461:5:92","type":""},{"name":"pos","nodeType":"YulTypedName","src":"6468:3:92","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"6476:3:92","type":""}],"src":"6423:435:92"},{"body":{"nodeType":"YulBlock","src":"7014:110:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7031:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7042:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7024:6:92"},"nodeType":"YulFunctionCall","src":"7024:21:92"},"nodeType":"YulExpressionStatement","src":"7024:21:92"},{"nodeType":"YulAssignment","src":"7054:64:92","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7091:6:92"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7103:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7114:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7099:3:92"},"nodeType":"YulFunctionCall","src":"7099:18:92"}],"functionName":{"name":"abi_encode_array_uint256_dyn","nodeType":"YulIdentifier","src":"7062:28:92"},"nodeType":"YulFunctionCall","src":"7062:56:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7054:4:92"}]}]},"name":"abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6983:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"6994:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7005:4:92","type":""}],"src":"6863:261:92"},{"body":{"nodeType":"YulBlock","src":"7213:263:92","statements":[{"body":{"nodeType":"YulBlock","src":"7259:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7268:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7271:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7261:6:92"},"nodeType":"YulFunctionCall","src":"7261:12:92"},"nodeType":"YulExpressionStatement","src":"7261:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"7234:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"7243:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"7230:3:92"},"nodeType":"YulFunctionCall","src":"7230:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"7255:2:92","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"7226:3:92"},"nodeType":"YulFunctionCall","src":"7226:32:92"},"nodeType":"YulIf","src":"7223:52:92"},{"nodeType":"YulAssignment","src":"7284:39:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7313:9:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"7294:18:92"},"nodeType":"YulFunctionCall","src":"7294:29:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"7284:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"7332:45:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7362:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7373:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7358:3:92"},"nodeType":"YulFunctionCall","src":"7358:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"7345:12:92"},"nodeType":"YulFunctionCall","src":"7345:32:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"7336:5:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"7430:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7439:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7442:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7432:6:92"},"nodeType":"YulFunctionCall","src":"7432:12:92"},"nodeType":"YulExpressionStatement","src":"7432:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7399:5:92"},{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7420:5:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"7413:6:92"},"nodeType":"YulFunctionCall","src":"7413:13:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"7406:6:92"},"nodeType":"YulFunctionCall","src":"7406:21:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"7396:2:92"},"nodeType":"YulFunctionCall","src":"7396:32:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"7389:6:92"},"nodeType":"YulFunctionCall","src":"7389:40:92"},"nodeType":"YulIf","src":"7386:60:92"},{"nodeType":"YulAssignment","src":"7455:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"7465:5:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"7455:6:92"}]}]},"name":"abi_decode_tuple_t_addresst_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7171:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"7182:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"7194:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"7202:6:92","type":""}],"src":"7129:347:92"},{"body":{"nodeType":"YulBlock","src":"7568:173:92","statements":[{"body":{"nodeType":"YulBlock","src":"7614:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7623:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7626:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7616:6:92"},"nodeType":"YulFunctionCall","src":"7616:12:92"},"nodeType":"YulExpressionStatement","src":"7616:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"7589:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"7598:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"7585:3:92"},"nodeType":"YulFunctionCall","src":"7585:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"7610:2:92","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"7581:3:92"},"nodeType":"YulFunctionCall","src":"7581:32:92"},"nodeType":"YulIf","src":"7578:52:92"},{"nodeType":"YulAssignment","src":"7639:39:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7668:9:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"7649:18:92"},"nodeType":"YulFunctionCall","src":"7649:29:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"7639:6:92"}]},{"nodeType":"YulAssignment","src":"7687:48:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7720:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7731:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7716:3:92"},"nodeType":"YulFunctionCall","src":"7716:18:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"7697:18:92"},"nodeType":"YulFunctionCall","src":"7697:38:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"7687:6:92"}]}]},"name":"abi_decode_tuple_t_addresst_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7526:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"7537:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"7549:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"7557:6:92","type":""}],"src":"7481:260:92"},{"body":{"nodeType":"YulBlock","src":"7893:459:92","statements":[{"body":{"nodeType":"YulBlock","src":"7940:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7949:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7952:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7942:6:92"},"nodeType":"YulFunctionCall","src":"7942:12:92"},"nodeType":"YulExpressionStatement","src":"7942:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"7914:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"7923:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"7910:3:92"},"nodeType":"YulFunctionCall","src":"7910:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"7935:3:92","type":"","value":"160"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"7906:3:92"},"nodeType":"YulFunctionCall","src":"7906:33:92"},"nodeType":"YulIf","src":"7903:53:92"},{"nodeType":"YulAssignment","src":"7965:39:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7994:9:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"7975:18:92"},"nodeType":"YulFunctionCall","src":"7975:29:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"7965:6:92"}]},{"nodeType":"YulAssignment","src":"8013:48:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8046:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8057:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8042:3:92"},"nodeType":"YulFunctionCall","src":"8042:18:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"8023:18:92"},"nodeType":"YulFunctionCall","src":"8023:38:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"8013:6:92"}]},{"nodeType":"YulAssignment","src":"8070:42:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8097:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8108:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8093:3:92"},"nodeType":"YulFunctionCall","src":"8093:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"8080:12:92"},"nodeType":"YulFunctionCall","src":"8080:32:92"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"8070:6:92"}]},{"nodeType":"YulAssignment","src":"8121:42:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8148:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8159:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8144:3:92"},"nodeType":"YulFunctionCall","src":"8144:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"8131:12:92"},"nodeType":"YulFunctionCall","src":"8131:32:92"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"8121:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"8172:47:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8203:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8214:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8199:3:92"},"nodeType":"YulFunctionCall","src":"8199:19:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"8186:12:92"},"nodeType":"YulFunctionCall","src":"8186:33:92"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"8176:6:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"8262:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8271:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8274:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8264:6:92"},"nodeType":"YulFunctionCall","src":"8264:12:92"},"nodeType":"YulExpressionStatement","src":"8264:12:92"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"8234:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"8242:18:92","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"8231:2:92"},"nodeType":"YulFunctionCall","src":"8231:30:92"},"nodeType":"YulIf","src":"8228:50:92"},{"nodeType":"YulAssignment","src":"8287:59:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8318:9:92"},{"name":"offset","nodeType":"YulIdentifier","src":"8329:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8314:3:92"},"nodeType":"YulFunctionCall","src":"8314:22:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"8338:7:92"}],"functionName":{"name":"abi_decode_bytes","nodeType":"YulIdentifier","src":"8297:16:92"},"nodeType":"YulFunctionCall","src":"8297:49:92"},"variableNames":[{"name":"value4","nodeType":"YulIdentifier","src":"8287:6:92"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7827:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"7838:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"7850:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"7858:6:92","type":""},{"name":"value2","nodeType":"YulTypedName","src":"7866:6:92","type":""},{"name":"value3","nodeType":"YulTypedName","src":"7874:6:92","type":""},{"name":"value4","nodeType":"YulTypedName","src":"7882:6:92","type":""}],"src":"7746:606:92"},{"body":{"nodeType":"YulBlock","src":"8531:232:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8548:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8559:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8541:6:92"},"nodeType":"YulFunctionCall","src":"8541:21:92"},"nodeType":"YulExpressionStatement","src":"8541:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8582:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8593:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8578:3:92"},"nodeType":"YulFunctionCall","src":"8578:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"8598:2:92","type":"","value":"42"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8571:6:92"},"nodeType":"YulFunctionCall","src":"8571:30:92"},"nodeType":"YulExpressionStatement","src":"8571:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8621:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8632:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8617:3:92"},"nodeType":"YulFunctionCall","src":"8617:18:92"},{"hexValue":"455243313135353a2061646472657373207a65726f206973206e6f7420612076","kind":"string","nodeType":"YulLiteral","src":"8637:34:92","type":"","value":"ERC1155: address zero is not a v"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8610:6:92"},"nodeType":"YulFunctionCall","src":"8610:62:92"},"nodeType":"YulExpressionStatement","src":"8610:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8692:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8703:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8688:3:92"},"nodeType":"YulFunctionCall","src":"8688:18:92"},{"hexValue":"616c6964206f776e6572","kind":"string","nodeType":"YulLiteral","src":"8708:12:92","type":"","value":"alid owner"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8681:6:92"},"nodeType":"YulFunctionCall","src":"8681:40:92"},"nodeType":"YulExpressionStatement","src":"8681:40:92"},{"nodeType":"YulAssignment","src":"8730:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8742:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8753:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8738:3:92"},"nodeType":"YulFunctionCall","src":"8738:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"8730:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_415a1b99e1fd4a18cf87c08995f5a9130182e8d76e9c17c497bfebaaef9265ad__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8508:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"8522:4:92","type":""}],"src":"8357:406:92"},{"body":{"nodeType":"YulBlock","src":"8823:325:92","statements":[{"nodeType":"YulAssignment","src":"8833:22:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8847:1:92","type":"","value":"1"},{"name":"data","nodeType":"YulIdentifier","src":"8850:4:92"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"8843:3:92"},"nodeType":"YulFunctionCall","src":"8843:12:92"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"8833:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"8864:38:92","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"8894:4:92"},{"kind":"number","nodeType":"YulLiteral","src":"8900:1:92","type":"","value":"1"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8890:3:92"},"nodeType":"YulFunctionCall","src":"8890:12:92"},"variables":[{"name":"outOfPlaceEncoding","nodeType":"YulTypedName","src":"8868:18:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"8941:31:92","statements":[{"nodeType":"YulAssignment","src":"8943:27:92","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"8957:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"8965:4:92","type":"","value":"0x7f"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8953:3:92"},"nodeType":"YulFunctionCall","src":"8953:17:92"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"8943:6:92"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"8921:18:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"8914:6:92"},"nodeType":"YulFunctionCall","src":"8914:26:92"},"nodeType":"YulIf","src":"8911:61:92"},{"body":{"nodeType":"YulBlock","src":"9031:111:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9052:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9059:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"9064:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"9055:3:92"},"nodeType":"YulFunctionCall","src":"9055:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9045:6:92"},"nodeType":"YulFunctionCall","src":"9045:31:92"},"nodeType":"YulExpressionStatement","src":"9045:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9096:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"9099:4:92","type":"","value":"0x22"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9089:6:92"},"nodeType":"YulFunctionCall","src":"9089:15:92"},"nodeType":"YulExpressionStatement","src":"9089:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9124:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"9127:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9117:6:92"},"nodeType":"YulFunctionCall","src":"9117:15:92"},"nodeType":"YulExpressionStatement","src":"9117:15:92"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"8987:18:92"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"9010:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"9018:2:92","type":"","value":"32"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"9007:2:92"},"nodeType":"YulFunctionCall","src":"9007:14:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"8984:2:92"},"nodeType":"YulFunctionCall","src":"8984:38:92"},"nodeType":"YulIf","src":"8981:161:92"}]},"name":"extract_byte_array_length","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"8803:4:92","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"8812:6:92","type":""}],"src":"8768:380:92"},{"body":{"nodeType":"YulBlock","src":"9327:236:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9344:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9355:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9337:6:92"},"nodeType":"YulFunctionCall","src":"9337:21:92"},"nodeType":"YulExpressionStatement","src":"9337:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9378:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9389:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9374:3:92"},"nodeType":"YulFunctionCall","src":"9374:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"9394:2:92","type":"","value":"46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9367:6:92"},"nodeType":"YulFunctionCall","src":"9367:30:92"},"nodeType":"YulExpressionStatement","src":"9367:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9417:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9428:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9413:3:92"},"nodeType":"YulFunctionCall","src":"9413:18:92"},{"hexValue":"455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e","kind":"string","nodeType":"YulLiteral","src":"9433:34:92","type":"","value":"ERC1155: caller is not token own"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9406:6:92"},"nodeType":"YulFunctionCall","src":"9406:62:92"},"nodeType":"YulExpressionStatement","src":"9406:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9488:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9499:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9484:3:92"},"nodeType":"YulFunctionCall","src":"9484:18:92"},{"hexValue":"6572206f7220617070726f766564","kind":"string","nodeType":"YulLiteral","src":"9504:16:92","type":"","value":"er or approved"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9477:6:92"},"nodeType":"YulFunctionCall","src":"9477:44:92"},"nodeType":"YulExpressionStatement","src":"9477:44:92"},{"nodeType":"YulAssignment","src":"9530:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9542:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9553:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9538:3:92"},"nodeType":"YulFunctionCall","src":"9538:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"9530:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_47c72b42072ed6c647dec3a0a5c88bec44d3e901c64659bff94ecce0a0323156__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9304:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"9318:4:92","type":""}],"src":"9153:410:92"},{"body":{"nodeType":"YulBlock","src":"9742:231:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9759:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9770:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9752:6:92"},"nodeType":"YulFunctionCall","src":"9752:21:92"},"nodeType":"YulExpressionStatement","src":"9752:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9793:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9804:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9789:3:92"},"nodeType":"YulFunctionCall","src":"9789:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"9809:2:92","type":"","value":"41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9782:6:92"},"nodeType":"YulFunctionCall","src":"9782:30:92"},"nodeType":"YulExpressionStatement","src":"9782:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9832:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9843:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9828:3:92"},"nodeType":"YulFunctionCall","src":"9828:18:92"},{"hexValue":"455243313135353a206163636f756e747320616e6420696473206c656e677468","kind":"string","nodeType":"YulLiteral","src":"9848:34:92","type":"","value":"ERC1155: accounts and ids length"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9821:6:92"},"nodeType":"YulFunctionCall","src":"9821:62:92"},"nodeType":"YulExpressionStatement","src":"9821:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9903:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9914:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9899:3:92"},"nodeType":"YulFunctionCall","src":"9899:18:92"},{"hexValue":"206d69736d61746368","kind":"string","nodeType":"YulLiteral","src":"9919:11:92","type":"","value":" mismatch"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9892:6:92"},"nodeType":"YulFunctionCall","src":"9892:39:92"},"nodeType":"YulExpressionStatement","src":"9892:39:92"},{"nodeType":"YulAssignment","src":"9940:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9952:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9963:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9948:3:92"},"nodeType":"YulFunctionCall","src":"9948:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"9940:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_e155f5d69798c6205436a388a4f3a5fd42f54147b40f4d63a2c8071ff8a9fee5__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9719:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"9733:4:92","type":""}],"src":"9568:405:92"},{"body":{"nodeType":"YulBlock","src":"10010:95:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10027:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10034:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"10039:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"10030:3:92"},"nodeType":"YulFunctionCall","src":"10030:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10020:6:92"},"nodeType":"YulFunctionCall","src":"10020:31:92"},"nodeType":"YulExpressionStatement","src":"10020:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10067:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"10070:4:92","type":"","value":"0x32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10060:6:92"},"nodeType":"YulFunctionCall","src":"10060:15:92"},"nodeType":"YulExpressionStatement","src":"10060:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10091:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"10094:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"10084:6:92"},"nodeType":"YulFunctionCall","src":"10084:15:92"},"nodeType":"YulExpressionStatement","src":"10084:15:92"}]},"name":"panic_error_0x32","nodeType":"YulFunctionDefinition","src":"9978:127:92"},{"body":{"nodeType":"YulBlock","src":"10142:95:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10159:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10166:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"10171:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"10162:3:92"},"nodeType":"YulFunctionCall","src":"10162:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10152:6:92"},"nodeType":"YulFunctionCall","src":"10152:31:92"},"nodeType":"YulExpressionStatement","src":"10152:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10199:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"10202:4:92","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10192:6:92"},"nodeType":"YulFunctionCall","src":"10192:15:92"},"nodeType":"YulExpressionStatement","src":"10192:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10223:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"10226:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"10216:6:92"},"nodeType":"YulFunctionCall","src":"10216:15:92"},"nodeType":"YulExpressionStatement","src":"10216:15:92"}]},"name":"panic_error_0x11","nodeType":"YulFunctionDefinition","src":"10110:127:92"},{"body":{"nodeType":"YulBlock","src":"10289:88:92","statements":[{"body":{"nodeType":"YulBlock","src":"10320:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"10322:16:92"},"nodeType":"YulFunctionCall","src":"10322:18:92"},"nodeType":"YulExpressionStatement","src":"10322:18:92"}]},"condition":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"10305:5:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10316:1:92","type":"","value":"0"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"10312:3:92"},"nodeType":"YulFunctionCall","src":"10312:6:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"10302:2:92"},"nodeType":"YulFunctionCall","src":"10302:17:92"},"nodeType":"YulIf","src":"10299:43:92"},{"nodeType":"YulAssignment","src":"10351:20:92","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"10362:5:92"},{"kind":"number","nodeType":"YulLiteral","src":"10369:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10358:3:92"},"nodeType":"YulFunctionCall","src":"10358:13:92"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"10351:3:92"}]}]},"name":"increment_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"10271:5:92","type":""}],"returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"10281:3:92","type":""}],"src":"10242:135:92"},{"body":{"nodeType":"YulBlock","src":"10556:223:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10573:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"10584:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10566:6:92"},"nodeType":"YulFunctionCall","src":"10566:21:92"},"nodeType":"YulExpressionStatement","src":"10566:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10607:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"10618:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10603:3:92"},"nodeType":"YulFunctionCall","src":"10603:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"10623:2:92","type":"","value":"33"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10596:6:92"},"nodeType":"YulFunctionCall","src":"10596:30:92"},"nodeType":"YulExpressionStatement","src":"10596:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10646:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"10657:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10642:3:92"},"nodeType":"YulFunctionCall","src":"10642:18:92"},{"hexValue":"455243313135353a206d696e7420746f20746865207a65726f20616464726573","kind":"string","nodeType":"YulLiteral","src":"10662:34:92","type":"","value":"ERC1155: mint to the zero addres"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10635:6:92"},"nodeType":"YulFunctionCall","src":"10635:62:92"},"nodeType":"YulExpressionStatement","src":"10635:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10717:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"10728:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10713:3:92"},"nodeType":"YulFunctionCall","src":"10713:18:92"},{"hexValue":"73","kind":"string","nodeType":"YulLiteral","src":"10733:3:92","type":"","value":"s"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10706:6:92"},"nodeType":"YulFunctionCall","src":"10706:31:92"},"nodeType":"YulExpressionStatement","src":"10706:31:92"},{"nodeType":"YulAssignment","src":"10746:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10758:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"10769:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10754:3:92"},"nodeType":"YulFunctionCall","src":"10754:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"10746:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_ebf031a1b7ee1d0b3a7752b450a3268e8b6c334561b48c1c0ba0f5bac05749f2__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"10533:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"10547:4:92","type":""}],"src":"10382:397:92"},{"body":{"nodeType":"YulBlock","src":"10832:77:92","statements":[{"nodeType":"YulAssignment","src":"10842:16:92","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"10853:1:92"},{"name":"y","nodeType":"YulIdentifier","src":"10856:1:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10849:3:92"},"nodeType":"YulFunctionCall","src":"10849:9:92"},"variableNames":[{"name":"sum","nodeType":"YulIdentifier","src":"10842:3:92"}]},{"body":{"nodeType":"YulBlock","src":"10881:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"10883:16:92"},"nodeType":"YulFunctionCall","src":"10883:18:92"},"nodeType":"YulExpressionStatement","src":"10883:18:92"}]},"condition":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"10873:1:92"},{"name":"sum","nodeType":"YulIdentifier","src":"10876:3:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"10870:2:92"},"nodeType":"YulFunctionCall","src":"10870:10:92"},"nodeType":"YulIf","src":"10867:36:92"}]},"name":"checked_add_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"10815:1:92","type":""},{"name":"y","nodeType":"YulTypedName","src":"10818:1:92","type":""}],"returnVariables":[{"name":"sum","nodeType":"YulTypedName","src":"10824:3:92","type":""}],"src":"10784:125:92"},{"body":{"nodeType":"YulBlock","src":"11043:119:92","statements":[{"nodeType":"YulAssignment","src":"11053:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11065:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"11076:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11061:3:92"},"nodeType":"YulFunctionCall","src":"11061:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"11053:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11095:9:92"},{"name":"value0","nodeType":"YulIdentifier","src":"11106:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11088:6:92"},"nodeType":"YulFunctionCall","src":"11088:25:92"},"nodeType":"YulExpressionStatement","src":"11088:25:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11133:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"11144:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11129:3:92"},"nodeType":"YulFunctionCall","src":"11129:18:92"},{"name":"value1","nodeType":"YulIdentifier","src":"11149:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11122:6:92"},"nodeType":"YulFunctionCall","src":"11122:34:92"},"nodeType":"YulExpressionStatement","src":"11122:34:92"}]},"name":"abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"11004:9:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"11015:6:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"11023:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"11034:4:92","type":""}],"src":"10914:248:92"},{"body":{"nodeType":"YulBlock","src":"11341:230:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11358:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"11369:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11351:6:92"},"nodeType":"YulFunctionCall","src":"11351:21:92"},"nodeType":"YulExpressionStatement","src":"11351:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11392:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"11403:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11388:3:92"},"nodeType":"YulFunctionCall","src":"11388:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"11408:2:92","type":"","value":"40"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11381:6:92"},"nodeType":"YulFunctionCall","src":"11381:30:92"},"nodeType":"YulExpressionStatement","src":"11381:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11431:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"11442:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11427:3:92"},"nodeType":"YulFunctionCall","src":"11427:18:92"},{"hexValue":"455243313135353a2069647320616e6420616d6f756e7473206c656e67746820","kind":"string","nodeType":"YulLiteral","src":"11447:34:92","type":"","value":"ERC1155: ids and amounts length "}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11420:6:92"},"nodeType":"YulFunctionCall","src":"11420:62:92"},"nodeType":"YulExpressionStatement","src":"11420:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11502:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"11513:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11498:3:92"},"nodeType":"YulFunctionCall","src":"11498:18:92"},{"hexValue":"6d69736d61746368","kind":"string","nodeType":"YulLiteral","src":"11518:10:92","type":"","value":"mismatch"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11491:6:92"},"nodeType":"YulFunctionCall","src":"11491:38:92"},"nodeType":"YulExpressionStatement","src":"11491:38:92"},{"nodeType":"YulAssignment","src":"11538:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11550:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"11561:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11546:3:92"},"nodeType":"YulFunctionCall","src":"11546:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"11538:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_e909e0c9a8f96b4f9af03b716811ece20beb070be416893ed1d50619b5930807__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"11318:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"11332:4:92","type":""}],"src":"11167:404:92"},{"body":{"nodeType":"YulBlock","src":"11750:227:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11767:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"11778:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11760:6:92"},"nodeType":"YulFunctionCall","src":"11760:21:92"},"nodeType":"YulExpressionStatement","src":"11760:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11801:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"11812:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11797:3:92"},"nodeType":"YulFunctionCall","src":"11797:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"11817:2:92","type":"","value":"37"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11790:6:92"},"nodeType":"YulFunctionCall","src":"11790:30:92"},"nodeType":"YulExpressionStatement","src":"11790:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11840:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"11851:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11836:3:92"},"nodeType":"YulFunctionCall","src":"11836:18:92"},{"hexValue":"455243313135353a207472616e7366657220746f20746865207a65726f206164","kind":"string","nodeType":"YulLiteral","src":"11856:34:92","type":"","value":"ERC1155: transfer to the zero ad"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11829:6:92"},"nodeType":"YulFunctionCall","src":"11829:62:92"},"nodeType":"YulExpressionStatement","src":"11829:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11911:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"11922:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11907:3:92"},"nodeType":"YulFunctionCall","src":"11907:18:92"},{"hexValue":"6472657373","kind":"string","nodeType":"YulLiteral","src":"11927:7:92","type":"","value":"dress"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11900:6:92"},"nodeType":"YulFunctionCall","src":"11900:35:92"},"nodeType":"YulExpressionStatement","src":"11900:35:92"},{"nodeType":"YulAssignment","src":"11944:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11956:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"11967:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11952:3:92"},"nodeType":"YulFunctionCall","src":"11952:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"11944:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_6faf1c67f278b07c6771dcf4c315a89c21c0eaed11d9ab3d51774da1cfef545d__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"11727:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"11741:4:92","type":""}],"src":"11576:401:92"},{"body":{"nodeType":"YulBlock","src":"12156:232:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12173:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"12184:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12166:6:92"},"nodeType":"YulFunctionCall","src":"12166:21:92"},"nodeType":"YulExpressionStatement","src":"12166:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12207:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"12218:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12203:3:92"},"nodeType":"YulFunctionCall","src":"12203:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"12223:2:92","type":"","value":"42"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12196:6:92"},"nodeType":"YulFunctionCall","src":"12196:30:92"},"nodeType":"YulExpressionStatement","src":"12196:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12246:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"12257:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12242:3:92"},"nodeType":"YulFunctionCall","src":"12242:18:92"},{"hexValue":"455243313135353a20696e73756666696369656e742062616c616e636520666f","kind":"string","nodeType":"YulLiteral","src":"12262:34:92","type":"","value":"ERC1155: insufficient balance fo"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12235:6:92"},"nodeType":"YulFunctionCall","src":"12235:62:92"},"nodeType":"YulExpressionStatement","src":"12235:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12317:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"12328:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12313:3:92"},"nodeType":"YulFunctionCall","src":"12313:18:92"},{"hexValue":"72207472616e73666572","kind":"string","nodeType":"YulLiteral","src":"12333:12:92","type":"","value":"r transfer"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12306:6:92"},"nodeType":"YulFunctionCall","src":"12306:40:92"},"nodeType":"YulExpressionStatement","src":"12306:40:92"},{"nodeType":"YulAssignment","src":"12355:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12367:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"12378:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12363:3:92"},"nodeType":"YulFunctionCall","src":"12363:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"12355:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_8ac7e9556b567c1c94bb4daaa3c3a65be5ac686579615210cb910fb8cb8d65bf__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"12133:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"12147:4:92","type":""}],"src":"11982:406:92"},{"body":{"nodeType":"YulBlock","src":"12622:236:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12639:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"12650:2:92","type":"","value":"64"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12632:6:92"},"nodeType":"YulFunctionCall","src":"12632:21:92"},"nodeType":"YulExpressionStatement","src":"12632:21:92"},{"nodeType":"YulVariableDeclaration","src":"12662:70:92","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"12705:6:92"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12717:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"12728:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12713:3:92"},"nodeType":"YulFunctionCall","src":"12713:18:92"}],"functionName":{"name":"abi_encode_array_uint256_dyn","nodeType":"YulIdentifier","src":"12676:28:92"},"nodeType":"YulFunctionCall","src":"12676:56:92"},"variables":[{"name":"tail_1","nodeType":"YulTypedName","src":"12666:6:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12752:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"12763:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12748:3:92"},"nodeType":"YulFunctionCall","src":"12748:18:92"},{"arguments":[{"name":"tail_1","nodeType":"YulIdentifier","src":"12772:6:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"12780:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"12768:3:92"},"nodeType":"YulFunctionCall","src":"12768:22:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12741:6:92"},"nodeType":"YulFunctionCall","src":"12741:50:92"},"nodeType":"YulExpressionStatement","src":"12741:50:92"},{"nodeType":"YulAssignment","src":"12800:52:92","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"12837:6:92"},{"name":"tail_1","nodeType":"YulIdentifier","src":"12845:6:92"}],"functionName":{"name":"abi_encode_array_uint256_dyn","nodeType":"YulIdentifier","src":"12808:28:92"},"nodeType":"YulFunctionCall","src":"12808:44:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"12800:4:92"}]}]},"name":"abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"12583:9:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"12594:6:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"12602:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"12613:4:92","type":""}],"src":"12393:465:92"},{"body":{"nodeType":"YulBlock","src":"13037:231:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13054:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"13065:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13047:6:92"},"nodeType":"YulFunctionCall","src":"13047:21:92"},"nodeType":"YulExpressionStatement","src":"13047:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13088:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"13099:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13084:3:92"},"nodeType":"YulFunctionCall","src":"13084:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"13104:2:92","type":"","value":"41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13077:6:92"},"nodeType":"YulFunctionCall","src":"13077:30:92"},"nodeType":"YulExpressionStatement","src":"13077:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13127:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"13138:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13123:3:92"},"nodeType":"YulFunctionCall","src":"13123:18:92"},{"hexValue":"455243313135353a2073657474696e6720617070726f76616c20737461747573","kind":"string","nodeType":"YulLiteral","src":"13143:34:92","type":"","value":"ERC1155: setting approval status"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13116:6:92"},"nodeType":"YulFunctionCall","src":"13116:62:92"},"nodeType":"YulExpressionStatement","src":"13116:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13198:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"13209:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13194:3:92"},"nodeType":"YulFunctionCall","src":"13194:18:92"},{"hexValue":"20666f722073656c66","kind":"string","nodeType":"YulLiteral","src":"13214:11:92","type":"","value":" for self"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13187:6:92"},"nodeType":"YulFunctionCall","src":"13187:39:92"},"nodeType":"YulExpressionStatement","src":"13187:39:92"},{"nodeType":"YulAssignment","src":"13235:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13247:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"13258:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13243:3:92"},"nodeType":"YulFunctionCall","src":"13243:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"13235:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_df9806c6dc743de602e49918a67b580590d69ab768bdb59f977c0a884a91a7c2__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"13014:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"13028:4:92","type":""}],"src":"12863:405:92"},{"body":{"nodeType":"YulBlock","src":"13447:225:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13464:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"13475:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13457:6:92"},"nodeType":"YulFunctionCall","src":"13457:21:92"},"nodeType":"YulExpressionStatement","src":"13457:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13498:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"13509:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13494:3:92"},"nodeType":"YulFunctionCall","src":"13494:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"13514:2:92","type":"","value":"35"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13487:6:92"},"nodeType":"YulFunctionCall","src":"13487:30:92"},"nodeType":"YulExpressionStatement","src":"13487:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13537:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"13548:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13533:3:92"},"nodeType":"YulFunctionCall","src":"13533:18:92"},{"hexValue":"455243313135353a206275726e2066726f6d20746865207a65726f2061646472","kind":"string","nodeType":"YulLiteral","src":"13553:34:92","type":"","value":"ERC1155: burn from the zero addr"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13526:6:92"},"nodeType":"YulFunctionCall","src":"13526:62:92"},"nodeType":"YulExpressionStatement","src":"13526:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13608:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"13619:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13604:3:92"},"nodeType":"YulFunctionCall","src":"13604:18:92"},{"hexValue":"657373","kind":"string","nodeType":"YulLiteral","src":"13624:5:92","type":"","value":"ess"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13597:6:92"},"nodeType":"YulFunctionCall","src":"13597:33:92"},"nodeType":"YulExpressionStatement","src":"13597:33:92"},{"nodeType":"YulAssignment","src":"13639:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13651:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"13662:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13647:3:92"},"nodeType":"YulFunctionCall","src":"13647:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"13639:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_87fd4aee52f5758d127cd9704d5ffef70f36ed1e87eb99b6f40e37a25c79a76a__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"13424:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"13438:4:92","type":""}],"src":"13273:399:92"},{"body":{"nodeType":"YulBlock","src":"13851:226:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13868:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"13879:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13861:6:92"},"nodeType":"YulFunctionCall","src":"13861:21:92"},"nodeType":"YulExpressionStatement","src":"13861:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13902:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"13913:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13898:3:92"},"nodeType":"YulFunctionCall","src":"13898:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"13918:2:92","type":"","value":"36"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13891:6:92"},"nodeType":"YulFunctionCall","src":"13891:30:92"},"nodeType":"YulExpressionStatement","src":"13891:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13941:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"13952:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13937:3:92"},"nodeType":"YulFunctionCall","src":"13937:18:92"},{"hexValue":"455243313135353a206275726e20616d6f756e7420657863656564732062616c","kind":"string","nodeType":"YulLiteral","src":"13957:34:92","type":"","value":"ERC1155: burn amount exceeds bal"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13930:6:92"},"nodeType":"YulFunctionCall","src":"13930:62:92"},"nodeType":"YulExpressionStatement","src":"13930:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14012:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"14023:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14008:3:92"},"nodeType":"YulFunctionCall","src":"14008:18:92"},{"hexValue":"616e6365","kind":"string","nodeType":"YulLiteral","src":"14028:6:92","type":"","value":"ance"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"14001:6:92"},"nodeType":"YulFunctionCall","src":"14001:34:92"},"nodeType":"YulExpressionStatement","src":"14001:34:92"},{"nodeType":"YulAssignment","src":"14044:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14056:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"14067:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14052:3:92"},"nodeType":"YulFunctionCall","src":"14052:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"14044:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_294a5de01910e2350ff231c633ae2d453ed6b1b72c75506234b7aace63eae685__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"13828:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"13842:4:92","type":""}],"src":"13677:400:92"},{"body":{"nodeType":"YulBlock","src":"14313:353:92","statements":[{"nodeType":"YulVariableDeclaration","src":"14323:52:92","value":{"kind":"number","nodeType":"YulLiteral","src":"14333:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"14327:2:92","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14391:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"14406:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"14414:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"14402:3:92"},"nodeType":"YulFunctionCall","src":"14402:15:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"14384:6:92"},"nodeType":"YulFunctionCall","src":"14384:34:92"},"nodeType":"YulExpressionStatement","src":"14384:34:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14438:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"14449:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14434:3:92"},"nodeType":"YulFunctionCall","src":"14434:18:92"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"14458:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"14466:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"14454:3:92"},"nodeType":"YulFunctionCall","src":"14454:15:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"14427:6:92"},"nodeType":"YulFunctionCall","src":"14427:43:92"},"nodeType":"YulExpressionStatement","src":"14427:43:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14490:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"14501:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14486:3:92"},"nodeType":"YulFunctionCall","src":"14486:18:92"},{"name":"value2","nodeType":"YulIdentifier","src":"14506:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"14479:6:92"},"nodeType":"YulFunctionCall","src":"14479:34:92"},"nodeType":"YulExpressionStatement","src":"14479:34:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14533:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"14544:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14529:3:92"},"nodeType":"YulFunctionCall","src":"14529:18:92"},{"name":"value3","nodeType":"YulIdentifier","src":"14549:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"14522:6:92"},"nodeType":"YulFunctionCall","src":"14522:34:92"},"nodeType":"YulExpressionStatement","src":"14522:34:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14576:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"14587:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14572:3:92"},"nodeType":"YulFunctionCall","src":"14572:19:92"},{"kind":"number","nodeType":"YulLiteral","src":"14593:3:92","type":"","value":"160"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"14565:6:92"},"nodeType":"YulFunctionCall","src":"14565:32:92"},"nodeType":"YulExpressionStatement","src":"14565:32:92"},{"nodeType":"YulAssignment","src":"14606:54:92","value":{"arguments":[{"name":"value4","nodeType":"YulIdentifier","src":"14632:6:92"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14644:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"14655:3:92","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14640:3:92"},"nodeType":"YulFunctionCall","src":"14640:19:92"}],"functionName":{"name":"abi_encode_string","nodeType":"YulIdentifier","src":"14614:17:92"},"nodeType":"YulFunctionCall","src":"14614:46:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"14606:4:92"}]}]},"name":"abi_encode_tuple_t_address_t_address_t_uint256_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_uint256_t_bytes_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"14250:9:92","type":""},{"name":"value4","nodeType":"YulTypedName","src":"14261:6:92","type":""},{"name":"value3","nodeType":"YulTypedName","src":"14269:6:92","type":""},{"name":"value2","nodeType":"YulTypedName","src":"14277:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"14285:6:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"14293:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"14304:4:92","type":""}],"src":"14082:584:92"},{"body":{"nodeType":"YulBlock","src":"14751:169:92","statements":[{"body":{"nodeType":"YulBlock","src":"14797:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"14806:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"14809:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"14799:6:92"},"nodeType":"YulFunctionCall","src":"14799:12:92"},"nodeType":"YulExpressionStatement","src":"14799:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"14772:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"14781:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"14768:3:92"},"nodeType":"YulFunctionCall","src":"14768:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"14793:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"14764:3:92"},"nodeType":"YulFunctionCall","src":"14764:32:92"},"nodeType":"YulIf","src":"14761:52:92"},{"nodeType":"YulVariableDeclaration","src":"14822:29:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14841:9:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"14835:5:92"},"nodeType":"YulFunctionCall","src":"14835:16:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"14826:5:92","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"14884:5:92"}],"functionName":{"name":"validator_revert_bytes4","nodeType":"YulIdentifier","src":"14860:23:92"},"nodeType":"YulFunctionCall","src":"14860:30:92"},"nodeType":"YulExpressionStatement","src":"14860:30:92"},{"nodeType":"YulAssignment","src":"14899:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"14909:5:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"14899:6:92"}]}]},"name":"abi_decode_tuple_t_bytes4_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"14717:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"14728:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"14740:6:92","type":""}],"src":"14671:249:92"},{"body":{"nodeType":"YulBlock","src":"14968:136:92","statements":[{"body":{"nodeType":"YulBlock","src":"15013:85:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"15042:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"15045:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"15048:1:92","type":"","value":"4"}],"functionName":{"name":"returndatacopy","nodeType":"YulIdentifier","src":"15027:14:92"},"nodeType":"YulFunctionCall","src":"15027:23:92"},"nodeType":"YulExpressionStatement","src":"15027:23:92"},{"nodeType":"YulAssignment","src":"15063:25:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"15074:3:92","type":"","value":"224"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"15085:1:92","type":"","value":"0"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"15079:5:92"},"nodeType":"YulFunctionCall","src":"15079:8:92"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"15070:3:92"},"nodeType":"YulFunctionCall","src":"15070:18:92"},"variableNames":[{"name":"sig","nodeType":"YulIdentifier","src":"15063:3:92"}]}]},"condition":{"arguments":[{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"14984:14:92"},"nodeType":"YulFunctionCall","src":"14984:16:92"},{"kind":"number","nodeType":"YulLiteral","src":"15002:1:92","type":"","value":"3"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"14981:2:92"},"nodeType":"YulFunctionCall","src":"14981:23:92"},"nodeType":"YulIf","src":"14978:120:92"}]},"name":"return_data_selector","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"sig","nodeType":"YulTypedName","src":"14960:3:92","type":""}],"src":"14925:179:92"},{"body":{"nodeType":"YulBlock","src":"15156:624:92","statements":[{"body":{"nodeType":"YulBlock","src":"15196:9:92","statements":[{"nodeType":"YulLeave","src":"15198:5:92"}]},"condition":{"arguments":[{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"15172:14:92"},"nodeType":"YulFunctionCall","src":"15172:16:92"},{"kind":"number","nodeType":"YulLiteral","src":"15190:4:92","type":"","value":"0x44"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"15169:2:92"},"nodeType":"YulFunctionCall","src":"15169:26:92"},"nodeType":"YulIf","src":"15166:39:92"},{"nodeType":"YulVariableDeclaration","src":"15214:21:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"15232:2:92","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"15226:5:92"},"nodeType":"YulFunctionCall","src":"15226:9:92"},"variables":[{"name":"data","nodeType":"YulTypedName","src":"15218:4:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"15244:16:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"15258:1:92","type":"","value":"3"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"15254:3:92"},"nodeType":"YulFunctionCall","src":"15254:6:92"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"15248:2:92","type":""}]},{"expression":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"15284:4:92"},{"kind":"number","nodeType":"YulLiteral","src":"15290:1:92","type":"","value":"4"},{"arguments":[{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"15297:14:92"},"nodeType":"YulFunctionCall","src":"15297:16:92"},{"name":"_1","nodeType":"YulIdentifier","src":"15315:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15293:3:92"},"nodeType":"YulFunctionCall","src":"15293:25:92"}],"functionName":{"name":"returndatacopy","nodeType":"YulIdentifier","src":"15269:14:92"},"nodeType":"YulFunctionCall","src":"15269:50:92"},"nodeType":"YulExpressionStatement","src":"15269:50:92"},{"nodeType":"YulVariableDeclaration","src":"15328:25:92","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"15348:4:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"15342:5:92"},"nodeType":"YulFunctionCall","src":"15342:11:92"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"15332:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"15362:26:92","value":{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"15372:14:92"},"nodeType":"YulFunctionCall","src":"15372:16:92"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"15366:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"15397:28:92","value":{"kind":"number","nodeType":"YulLiteral","src":"15407:18:92","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"15401:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"15483:9:92","statements":[{"nodeType":"YulLeave","src":"15485:5:92"}]},"condition":{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"15443:6:92"},{"name":"_3","nodeType":"YulIdentifier","src":"15451:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"15440:2:92"},"nodeType":"YulFunctionCall","src":"15440:14:92"},{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"15463:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"15471:4:92","type":"","value":"0x24"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15459:3:92"},"nodeType":"YulFunctionCall","src":"15459:17:92"},{"name":"_2","nodeType":"YulIdentifier","src":"15478:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"15456:2:92"},"nodeType":"YulFunctionCall","src":"15456:25:92"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"15437:2:92"},"nodeType":"YulFunctionCall","src":"15437:45:92"},"nodeType":"YulIf","src":"15434:58:92"},{"nodeType":"YulVariableDeclaration","src":"15501:28:92","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"15516:4:92"},{"name":"offset","nodeType":"YulIdentifier","src":"15522:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15512:3:92"},"nodeType":"YulFunctionCall","src":"15512:17:92"},"variables":[{"name":"msg","nodeType":"YulTypedName","src":"15505:3:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"15538:24:92","value":{"arguments":[{"name":"msg","nodeType":"YulIdentifier","src":"15558:3:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"15552:5:92"},"nodeType":"YulFunctionCall","src":"15552:10:92"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"15542:6:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"15589:9:92","statements":[{"nodeType":"YulLeave","src":"15591:5:92"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"15577:6:92"},{"name":"_3","nodeType":"YulIdentifier","src":"15585:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"15574:2:92"},"nodeType":"YulFunctionCall","src":"15574:14:92"},"nodeType":"YulIf","src":"15571:27:92"},{"body":{"nodeType":"YulBlock","src":"15680:9:92","statements":[{"nodeType":"YulLeave","src":"15682:5:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"msg","nodeType":"YulIdentifier","src":"15621:3:92"},{"name":"length","nodeType":"YulIdentifier","src":"15626:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15617:3:92"},"nodeType":"YulFunctionCall","src":"15617:16:92"},{"kind":"number","nodeType":"YulLiteral","src":"15635:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15613:3:92"},"nodeType":"YulFunctionCall","src":"15613:27:92"},{"arguments":[{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"15650:4:92"},{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"15656:14:92"},"nodeType":"YulFunctionCall","src":"15656:16:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15646:3:92"},"nodeType":"YulFunctionCall","src":"15646:27:92"},{"name":"_1","nodeType":"YulIdentifier","src":"15675:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15642:3:92"},"nodeType":"YulFunctionCall","src":"15642:36:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"15610:2:92"},"nodeType":"YulFunctionCall","src":"15610:69:92"},"nodeType":"YulIf","src":"15607:82:92"},{"expression":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"15718:4:92"},{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"15732:6:92"},{"name":"length","nodeType":"YulIdentifier","src":"15740:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15728:3:92"},"nodeType":"YulFunctionCall","src":"15728:19:92"},{"kind":"number","nodeType":"YulLiteral","src":"15749:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15724:3:92"},"nodeType":"YulFunctionCall","src":"15724:30:92"}],"functionName":{"name":"finalize_allocation","nodeType":"YulIdentifier","src":"15698:19:92"},"nodeType":"YulFunctionCall","src":"15698:57:92"},"nodeType":"YulExpressionStatement","src":"15698:57:92"},{"nodeType":"YulAssignment","src":"15764:10:92","value":{"name":"msg","nodeType":"YulIdentifier","src":"15771:3:92"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"15764:3:92"}]}]},"name":"try_decode_error_message","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"15148:3:92","type":""}],"src":"15109:671:92"},{"body":{"nodeType":"YulBlock","src":"15959:242:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15976:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"15987:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15969:6:92"},"nodeType":"YulFunctionCall","src":"15969:21:92"},"nodeType":"YulExpressionStatement","src":"15969:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"16010:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"16021:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16006:3:92"},"nodeType":"YulFunctionCall","src":"16006:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"16026:2:92","type":"","value":"52"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15999:6:92"},"nodeType":"YulFunctionCall","src":"15999:30:92"},"nodeType":"YulExpressionStatement","src":"15999:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"16049:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"16060:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16045:3:92"},"nodeType":"YulFunctionCall","src":"16045:18:92"},{"hexValue":"455243313135353a207472616e7366657220746f206e6f6e2d45524331313535","kind":"string","nodeType":"YulLiteral","src":"16065:34:92","type":"","value":"ERC1155: transfer to non-ERC1155"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"16038:6:92"},"nodeType":"YulFunctionCall","src":"16038:62:92"},"nodeType":"YulExpressionStatement","src":"16038:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"16120:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"16131:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16116:3:92"},"nodeType":"YulFunctionCall","src":"16116:18:92"},{"hexValue":"526563656976657220696d706c656d656e746572","kind":"string","nodeType":"YulLiteral","src":"16136:22:92","type":"","value":"Receiver implementer"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"16109:6:92"},"nodeType":"YulFunctionCall","src":"16109:50:92"},"nodeType":"YulExpressionStatement","src":"16109:50:92"},{"nodeType":"YulAssignment","src":"16168:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"16180:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"16191:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16176:3:92"},"nodeType":"YulFunctionCall","src":"16176:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"16168:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_f591f7b75ffc499e05f8b34c3364b2eceff651378d9549db1d5d67c0d8255c5d__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"15936:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"15950:4:92","type":""}],"src":"15785:416:92"},{"body":{"nodeType":"YulBlock","src":"16380:230:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"16397:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"16408:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"16390:6:92"},"nodeType":"YulFunctionCall","src":"16390:21:92"},"nodeType":"YulExpressionStatement","src":"16390:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"16431:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"16442:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16427:3:92"},"nodeType":"YulFunctionCall","src":"16427:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"16447:2:92","type":"","value":"40"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"16420:6:92"},"nodeType":"YulFunctionCall","src":"16420:30:92"},"nodeType":"YulExpressionStatement","src":"16420:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"16470:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"16481:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16466:3:92"},"nodeType":"YulFunctionCall","src":"16466:18:92"},{"hexValue":"455243313135353a204552433131353552656365697665722072656a65637465","kind":"string","nodeType":"YulLiteral","src":"16486:34:92","type":"","value":"ERC1155: ERC1155Receiver rejecte"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"16459:6:92"},"nodeType":"YulFunctionCall","src":"16459:62:92"},"nodeType":"YulExpressionStatement","src":"16459:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"16541:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"16552:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16537:3:92"},"nodeType":"YulFunctionCall","src":"16537:18:92"},{"hexValue":"6420746f6b656e73","kind":"string","nodeType":"YulLiteral","src":"16557:10:92","type":"","value":"d tokens"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"16530:6:92"},"nodeType":"YulFunctionCall","src":"16530:38:92"},"nodeType":"YulExpressionStatement","src":"16530:38:92"},{"nodeType":"YulAssignment","src":"16577:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"16589:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"16600:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16585:3:92"},"nodeType":"YulFunctionCall","src":"16585:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"16577:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_0587cccad73a80a7f013db13c596f4febc1968dc77e1d3589d5e7a509a3d6503__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"16357:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"16371:4:92","type":""}],"src":"16206:404:92"},{"body":{"nodeType":"YulBlock","src":"16946:519:92","statements":[{"nodeType":"YulVariableDeclaration","src":"16956:52:92","value":{"kind":"number","nodeType":"YulLiteral","src":"16966:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"16960:2:92","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17024:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"17039:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"17047:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"17035:3:92"},"nodeType":"YulFunctionCall","src":"17035:15:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17017:6:92"},"nodeType":"YulFunctionCall","src":"17017:34:92"},"nodeType":"YulExpressionStatement","src":"17017:34:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17071:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"17082:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17067:3:92"},"nodeType":"YulFunctionCall","src":"17067:18:92"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"17091:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"17099:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"17087:3:92"},"nodeType":"YulFunctionCall","src":"17087:15:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17060:6:92"},"nodeType":"YulFunctionCall","src":"17060:43:92"},"nodeType":"YulExpressionStatement","src":"17060:43:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17123:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"17134:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17119:3:92"},"nodeType":"YulFunctionCall","src":"17119:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"17139:3:92","type":"","value":"160"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17112:6:92"},"nodeType":"YulFunctionCall","src":"17112:31:92"},"nodeType":"YulExpressionStatement","src":"17112:31:92"},{"nodeType":"YulVariableDeclaration","src":"17152:71:92","value":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"17195:6:92"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17207:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"17218:3:92","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17203:3:92"},"nodeType":"YulFunctionCall","src":"17203:19:92"}],"functionName":{"name":"abi_encode_array_uint256_dyn","nodeType":"YulIdentifier","src":"17166:28:92"},"nodeType":"YulFunctionCall","src":"17166:57:92"},"variables":[{"name":"tail_1","nodeType":"YulTypedName","src":"17156:6:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17243:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"17254:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17239:3:92"},"nodeType":"YulFunctionCall","src":"17239:18:92"},{"arguments":[{"name":"tail_1","nodeType":"YulIdentifier","src":"17263:6:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"17271:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"17259:3:92"},"nodeType":"YulFunctionCall","src":"17259:22:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17232:6:92"},"nodeType":"YulFunctionCall","src":"17232:50:92"},"nodeType":"YulExpressionStatement","src":"17232:50:92"},{"nodeType":"YulVariableDeclaration","src":"17291:58:92","value":{"arguments":[{"name":"value3","nodeType":"YulIdentifier","src":"17334:6:92"},{"name":"tail_1","nodeType":"YulIdentifier","src":"17342:6:92"}],"functionName":{"name":"abi_encode_array_uint256_dyn","nodeType":"YulIdentifier","src":"17305:28:92"},"nodeType":"YulFunctionCall","src":"17305:44:92"},"variables":[{"name":"tail_2","nodeType":"YulTypedName","src":"17295:6:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17369:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"17380:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17365:3:92"},"nodeType":"YulFunctionCall","src":"17365:19:92"},{"arguments":[{"name":"tail_2","nodeType":"YulIdentifier","src":"17390:6:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"17398:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"17386:3:92"},"nodeType":"YulFunctionCall","src":"17386:22:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17358:6:92"},"nodeType":"YulFunctionCall","src":"17358:51:92"},"nodeType":"YulExpressionStatement","src":"17358:51:92"},{"nodeType":"YulAssignment","src":"17418:41:92","value":{"arguments":[{"name":"value4","nodeType":"YulIdentifier","src":"17444:6:92"},{"name":"tail_2","nodeType":"YulIdentifier","src":"17452:6:92"}],"functionName":{"name":"abi_encode_string","nodeType":"YulIdentifier","src":"17426:17:92"},"nodeType":"YulFunctionCall","src":"17426:33:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"17418:4:92"}]}]},"name":"abi_encode_tuple_t_address_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr_t_bytes_memory_ptr__to_t_address_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr_t_bytes_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"16883:9:92","type":""},{"name":"value4","nodeType":"YulTypedName","src":"16894:6:92","type":""},{"name":"value3","nodeType":"YulTypedName","src":"16902:6:92","type":""},{"name":"value2","nodeType":"YulTypedName","src":"16910:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"16918:6:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"16926:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"16937:4:92","type":""}],"src":"16615:850:92"}]},"contents":"{\n { }\n function abi_decode_address(offset) -> value\n {\n value := calldataload(offset)\n if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := calldataload(add(headStart, 32))\n }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function validator_revert_bytes4(value)\n {\n if iszero(eq(value, and(value, shl(224, 0xffffffff)))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_bytes4(value)\n value0 := value\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := calldataload(headStart)\n }\n function abi_encode_string(value, pos) -> end\n {\n let length := mload(value)\n mstore(pos, length)\n let i := 0\n for { } lt(i, length) { i := add(i, 0x20) }\n {\n let _1 := 0x20\n mstore(add(add(pos, i), _1), mload(add(add(value, i), _1)))\n }\n mstore(add(add(pos, length), 0x20), 0)\n end := add(add(pos, and(add(length, 31), not(31))), 0x20)\n }\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n mstore(headStart, 32)\n tail := abi_encode_string(value0, add(headStart, 32))\n }\n function abi_decode_tuple_t_addresst_uint256t_uint256(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := calldataload(add(headStart, 32))\n value2 := calldataload(add(headStart, 64))\n }\n function panic_error_0x41()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function finalize_allocation(memPtr, size)\n {\n let newFreePtr := add(memPtr, and(add(size, 31), not(31)))\n if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n }\n function array_allocation_size_array_uint256_dyn(length) -> size\n {\n if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n size := add(shl(5, length), 0x20)\n }\n function abi_decode_array_uint256_dyn(offset, end) -> array\n {\n if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n let _1 := calldataload(offset)\n let _2 := 0x20\n let _3 := array_allocation_size_array_uint256_dyn(_1)\n let memPtr := mload(64)\n finalize_allocation(memPtr, _3)\n let dst := memPtr\n mstore(memPtr, _1)\n dst := add(memPtr, _2)\n let srcEnd := add(add(offset, shl(5, _1)), _2)\n if gt(srcEnd, end) { revert(0, 0) }\n let src := add(offset, _2)\n for { } lt(src, srcEnd) { src := add(src, _2) }\n {\n mstore(dst, calldataload(src))\n dst := add(dst, _2)\n }\n array := memPtr\n }\n function abi_decode_bytes(offset, end) -> array\n {\n if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n let _1 := calldataload(offset)\n if gt(_1, 0xffffffffffffffff) { panic_error_0x41() }\n let memPtr := mload(64)\n finalize_allocation(memPtr, add(and(add(_1, 0x1f), not(31)), 0x20))\n mstore(memPtr, _1)\n if gt(add(add(offset, _1), 0x20), end) { revert(0, 0) }\n calldatacopy(add(memPtr, 0x20), add(offset, 0x20), _1)\n mstore(add(add(memPtr, _1), 0x20), 0)\n array := memPtr\n }\n function abi_decode_tuple_t_addresst_addresst_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptrt_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4\n {\n if slt(sub(dataEnd, headStart), 160) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := abi_decode_address(add(headStart, 32))\n let offset := calldataload(add(headStart, 64))\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n value2 := abi_decode_array_uint256_dyn(add(headStart, offset), dataEnd)\n let offset_1 := calldataload(add(headStart, 96))\n if gt(offset_1, _1) { revert(0, 0) }\n value3 := abi_decode_array_uint256_dyn(add(headStart, offset_1), dataEnd)\n let offset_2 := calldataload(add(headStart, 128))\n if gt(offset_2, _1) { revert(0, 0) }\n value4 := abi_decode_bytes(add(headStart, offset_2), dataEnd)\n }\n function abi_decode_tuple_t_array$_t_address_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptr(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n let offset := calldataload(headStart)\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n let _2 := add(headStart, offset)\n if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n let _3 := calldataload(_2)\n let _4 := 0x20\n let _5 := array_allocation_size_array_uint256_dyn(_3)\n let memPtr := mload(64)\n finalize_allocation(memPtr, _5)\n let dst := memPtr\n mstore(memPtr, _3)\n dst := add(memPtr, _4)\n let srcEnd := add(add(_2, shl(5, _3)), _4)\n if gt(srcEnd, dataEnd) { revert(0, 0) }\n let src := add(_2, _4)\n for { } lt(src, srcEnd) { src := add(src, _4) }\n {\n mstore(dst, abi_decode_address(src))\n dst := add(dst, _4)\n }\n value0 := memPtr\n let offset_1 := calldataload(add(headStart, _4))\n if gt(offset_1, _1) { revert(0, 0) }\n value1 := abi_decode_array_uint256_dyn(add(headStart, offset_1), dataEnd)\n }\n function abi_encode_array_uint256_dyn(value, pos) -> end\n {\n let length := mload(value)\n mstore(pos, length)\n let _1 := 0x20\n pos := add(pos, _1)\n let srcPtr := add(value, _1)\n let i := 0\n for { } lt(i, length) { i := add(i, 1) }\n {\n mstore(pos, mload(srcPtr))\n pos := add(pos, _1)\n srcPtr := add(srcPtr, _1)\n }\n end := pos\n }\n function abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n mstore(headStart, 32)\n tail := abi_encode_array_uint256_dyn(value0, add(headStart, 32))\n }\n function abi_decode_tuple_t_addresst_bool(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n let value := calldataload(add(headStart, 32))\n if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n value1 := value\n }\n function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := abi_decode_address(add(headStart, 32))\n }\n function abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4\n {\n if slt(sub(dataEnd, headStart), 160) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := abi_decode_address(add(headStart, 32))\n value2 := calldataload(add(headStart, 64))\n value3 := calldataload(add(headStart, 96))\n let offset := calldataload(add(headStart, 128))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n value4 := abi_decode_bytes(add(headStart, offset), dataEnd)\n }\n function abi_encode_tuple_t_stringliteral_415a1b99e1fd4a18cf87c08995f5a9130182e8d76e9c17c497bfebaaef9265ad__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 42)\n mstore(add(headStart, 64), \"ERC1155: address zero is not a v\")\n mstore(add(headStart, 96), \"alid owner\")\n tail := add(headStart, 128)\n }\n function extract_byte_array_length(data) -> length\n {\n length := shr(1, data)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n if eq(outOfPlaceEncoding, lt(length, 32))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n }\n function abi_encode_tuple_t_stringliteral_47c72b42072ed6c647dec3a0a5c88bec44d3e901c64659bff94ecce0a0323156__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 46)\n mstore(add(headStart, 64), \"ERC1155: caller is not token own\")\n mstore(add(headStart, 96), \"er or approved\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_e155f5d69798c6205436a388a4f3a5fd42f54147b40f4d63a2c8071ff8a9fee5__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 41)\n mstore(add(headStart, 64), \"ERC1155: accounts and ids length\")\n mstore(add(headStart, 96), \" mismatch\")\n tail := add(headStart, 128)\n }\n function panic_error_0x32()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n function panic_error_0x11()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n function increment_t_uint256(value) -> ret\n {\n if eq(value, not(0)) { panic_error_0x11() }\n ret := add(value, 1)\n }\n function abi_encode_tuple_t_stringliteral_ebf031a1b7ee1d0b3a7752b450a3268e8b6c334561b48c1c0ba0f5bac05749f2__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 33)\n mstore(add(headStart, 64), \"ERC1155: mint to the zero addres\")\n mstore(add(headStart, 96), \"s\")\n tail := add(headStart, 128)\n }\n function checked_add_t_uint256(x, y) -> sum\n {\n sum := add(x, y)\n if gt(x, sum) { panic_error_0x11() }\n }\n function abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n mstore(headStart, value0)\n mstore(add(headStart, 32), value1)\n }\n function abi_encode_tuple_t_stringliteral_e909e0c9a8f96b4f9af03b716811ece20beb070be416893ed1d50619b5930807__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 40)\n mstore(add(headStart, 64), \"ERC1155: ids and amounts length \")\n mstore(add(headStart, 96), \"mismatch\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_6faf1c67f278b07c6771dcf4c315a89c21c0eaed11d9ab3d51774da1cfef545d__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 37)\n mstore(add(headStart, 64), \"ERC1155: transfer to the zero ad\")\n mstore(add(headStart, 96), \"dress\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_8ac7e9556b567c1c94bb4daaa3c3a65be5ac686579615210cb910fb8cb8d65bf__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 42)\n mstore(add(headStart, 64), \"ERC1155: insufficient balance fo\")\n mstore(add(headStart, 96), \"r transfer\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n {\n mstore(headStart, 64)\n let tail_1 := abi_encode_array_uint256_dyn(value0, add(headStart, 64))\n mstore(add(headStart, 32), sub(tail_1, headStart))\n tail := abi_encode_array_uint256_dyn(value1, tail_1)\n }\n function abi_encode_tuple_t_stringliteral_df9806c6dc743de602e49918a67b580590d69ab768bdb59f977c0a884a91a7c2__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 41)\n mstore(add(headStart, 64), \"ERC1155: setting approval status\")\n mstore(add(headStart, 96), \" for self\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_87fd4aee52f5758d127cd9704d5ffef70f36ed1e87eb99b6f40e37a25c79a76a__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 35)\n mstore(add(headStart, 64), \"ERC1155: burn from the zero addr\")\n mstore(add(headStart, 96), \"ess\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_294a5de01910e2350ff231c633ae2d453ed6b1b72c75506234b7aace63eae685__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 36)\n mstore(add(headStart, 64), \"ERC1155: burn amount exceeds bal\")\n mstore(add(headStart, 96), \"ance\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_address_t_address_t_uint256_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_uint256_t_bytes_memory_ptr__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n {\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n mstore(add(headStart, 64), value2)\n mstore(add(headStart, 96), value3)\n mstore(add(headStart, 128), 160)\n tail := abi_encode_string(value4, add(headStart, 160))\n }\n function abi_decode_tuple_t_bytes4_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := mload(headStart)\n validator_revert_bytes4(value)\n value0 := value\n }\n function return_data_selector() -> sig\n {\n if gt(returndatasize(), 3)\n {\n returndatacopy(0, 0, 4)\n sig := shr(224, mload(0))\n }\n }\n function try_decode_error_message() -> ret\n {\n if lt(returndatasize(), 0x44) { leave }\n let data := mload(64)\n let _1 := not(3)\n returndatacopy(data, 4, add(returndatasize(), _1))\n let offset := mload(data)\n let _2 := returndatasize()\n let _3 := 0xffffffffffffffff\n if or(gt(offset, _3), gt(add(offset, 0x24), _2)) { leave }\n let msg := add(data, offset)\n let length := mload(msg)\n if gt(length, _3) { leave }\n if gt(add(add(msg, length), 0x20), add(add(data, returndatasize()), _1)) { leave }\n finalize_allocation(data, add(add(offset, length), 0x20))\n ret := msg\n }\n function abi_encode_tuple_t_stringliteral_f591f7b75ffc499e05f8b34c3364b2eceff651378d9549db1d5d67c0d8255c5d__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 52)\n mstore(add(headStart, 64), \"ERC1155: transfer to non-ERC1155\")\n mstore(add(headStart, 96), \"Receiver implementer\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_0587cccad73a80a7f013db13c596f4febc1968dc77e1d3589d5e7a509a3d6503__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 40)\n mstore(add(headStart, 64), \"ERC1155: ERC1155Receiver rejecte\")\n mstore(add(headStart, 96), \"d tokens\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_address_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr_t_bytes_memory_ptr__to_t_address_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr_t_bytes_memory_ptr__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n {\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n mstore(add(headStart, 64), 160)\n let tail_1 := abi_encode_array_uint256_dyn(value2, add(headStart, 160))\n mstore(add(headStart, 96), sub(tail_1, headStart))\n let tail_2 := abi_encode_array_uint256_dyn(value3, tail_1)\n mstore(add(headStart, 128), sub(tail_2, headStart))\n tail := abi_encode_string(value4, tail_2)\n }\n}","id":92,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100bd5760003560e01c80634e1273f411610076578063e985e9c51161005b578063e985e9c514610186578063f242432a146101c2578063f5298aca146101d557600080fd5b80634e1273f414610153578063a22cb4651461017357600080fd5b80630e89341c116100a75780630e89341c1461010b578063156e29f61461012b5780632eb2c2d61461014057600080fd5b8062fdd58e146100c257806301ffc9a7146100e8575b600080fd5b6100d56100d03660046110b9565b6101e8565b6040519081526020015b60405180910390f35b6100fb6100f63660046110fc565b610294565b60405190151581526020016100df565b61011e610119366004611120565b6102e4565b6040516100df919061117f565b61013e610139366004611192565b610378565b005b61013e61014e366004611311565b610398565b6101666101613660046113bb565b61042b565b6040516100df91906114c1565b61013e6101813660046114d4565b610569565b6100fb610194366004611510565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205460ff1690565b61013e6101d0366004611543565b610578565b61013e6101e3366004611192565b610604565b60006001600160a01b03831661026b5760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201527f616c6964206f776e65720000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b506000818152602081815260408083206001600160a01b03861684529091529020545b92915050565b60006001600160e01b03198216636cdb3d1360e11b14806102c557506001600160e01b031982166303a24d0760e21b145b8061028e57506301ffc9a760e01b6001600160e01b031983161461028e565b6060600280546102f3906115a8565b80601f016020809104026020016040519081016040528092919081815260200182805461031f906115a8565b801561036c5780601f106103415761010080835404028352916020019161036c565b820191906000526020600020905b81548152906001019060200180831161034f57829003601f168201915b50505050509050919050565b6103938383836040518060200160405280600081525061060f565b505050565b6001600160a01b0385163314806103b457506103b48533610194565b6104175760405162461bcd60e51b815260206004820152602e60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201526d195c881bdc88185c1c1c9bdd995960921b6064820152608401610262565b6104248585858585610723565b5050505050565b606081518351146104a45760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e67746860448201527f206d69736d6174636800000000000000000000000000000000000000000000006064820152608401610262565b6000835167ffffffffffffffff8111156104c0576104c06111c5565b6040519080825280602002602001820160405280156104e9578160200160208202803683370190505b50905060005b84518110156105615761053485828151811061050d5761050d6115e2565b6020026020010151858381518110610527576105276115e2565b60200260200101516101e8565b828281518110610546576105466115e2565b602090810291909101015261055a8161160e565b90506104ef565b509392505050565b610574338383610996565b5050565b6001600160a01b03851633148061059457506105948533610194565b6105f75760405162461bcd60e51b815260206004820152602e60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201526d195c881bdc88185c1c1c9bdd995960921b6064820152608401610262565b6104248585858585610a8a565b610393838383610c35565b6001600160a01b03841661066f5760405162461bcd60e51b815260206004820152602160248201527f455243313135353a206d696e7420746f20746865207a65726f206164647265736044820152607360f81b6064820152608401610262565b33600061067b85610db1565b9050600061068885610db1565b90506000868152602081815260408083206001600160a01b038b168452909152812080548792906106ba908490611627565b909155505060408051878152602081018790526001600160a01b03808a1692600092918716917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a461071a83600089898989610dfc565b50505050505050565b815183511461079a5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060448201527f6d69736d617463680000000000000000000000000000000000000000000000006064820152608401610262565b6001600160a01b0384166107fe5760405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b6064820152608401610262565b3360005b845181101561092857600085828151811061081f5761081f6115e2565b60200260200101519050600085838151811061083d5761083d6115e2565b602090810291909101810151600084815280835260408082206001600160a01b038e1683529093529190912054909150818110156108d05760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201526939103a3930b739b332b960b11b6064820152608401610262565b6000838152602081815260408083206001600160a01b038e8116855292528083208585039055908b1682528120805484929061090d908490611627565b92505081905550505050806109219061160e565b9050610802565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb878760405161097892919061163a565b60405180910390a461098e818787878787610fa1565b505050505050565b816001600160a01b0316836001600160a01b031603610a1d5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c2073746174757360448201527f20666f722073656c6600000000000000000000000000000000000000000000006064820152608401610262565b6001600160a01b03838116600081815260016020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b038416610aee5760405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b6064820152608401610262565b336000610afa85610db1565b90506000610b0785610db1565b90506000868152602081815260408083206001600160a01b038c16845290915290205485811015610b8d5760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201526939103a3930b739b332b960b11b6064820152608401610262565b6000878152602081815260408083206001600160a01b038d8116855292528083208985039055908a16825281208054889290610bca908490611627565b909155505060408051888152602081018890526001600160a01b03808b16928c821692918816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4610c2a848a8a8a8a8a610dfc565b505050505050505050565b6001600160a01b038316610c975760405162461bcd60e51b815260206004820152602360248201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260448201526265737360e81b6064820152608401610262565b336000610ca384610db1565b90506000610cb084610db1565b60408051602080820183526000918290528882528181528282206001600160a01b038b1683529052205490915084811015610d395760405162461bcd60e51b8152602060048201526024808201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c604482015263616e636560e01b6064820152608401610262565b6000868152602081815260408083206001600160a01b038b81168086529184528285208a8703905582518b81529384018a90529092908816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a460408051602081019091526000905261071a565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110610deb57610deb6115e2565b602090810291909101015292915050565b6001600160a01b0384163b1561098e5760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e6190610e409089908990889088908890600401611668565b6020604051808303816000875af1925050508015610e7b575060408051601f3d908101601f19168201909252610e78918101906116ab565b60015b610f3057610e876116c8565b806308c379a003610ec05750610e9b6116e4565b80610ea65750610ec2565b8060405162461bcd60e51b8152600401610262919061117f565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e2d4552433131353560448201527f526563656976657220696d706c656d656e7465720000000000000000000000006064820152608401610262565b6001600160e01b0319811663f23a6e6160e01b1461071a5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a656374656044820152676420746f6b656e7360c01b6064820152608401610262565b6001600160a01b0384163b1561098e5760405163bc197c8160e01b81526001600160a01b0385169063bc197c8190610fe5908990899088908890889060040161176e565b6020604051808303816000875af1925050508015611020575060408051601f3d908101601f1916820190925261101d918101906116ab565b60015b61102c57610e876116c8565b6001600160e01b0319811663bc197c8160e01b1461071a5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a656374656044820152676420746f6b656e7360c01b6064820152608401610262565b80356001600160a01b03811681146110b457600080fd5b919050565b600080604083850312156110cc57600080fd5b6110d58361109d565b946020939093013593505050565b6001600160e01b0319811681146110f957600080fd5b50565b60006020828403121561110e57600080fd5b8135611119816110e3565b9392505050565b60006020828403121561113257600080fd5b5035919050565b6000815180845260005b8181101561115f57602081850181015186830182015201611143565b506000602082860101526020601f19601f83011685010191505092915050565b6020815260006111196020830184611139565b6000806000606084860312156111a757600080fd5b6111b08461109d565b95602085013595506040909401359392505050565b634e487b7160e01b600052604160045260246000fd5b601f8201601f1916810167ffffffffffffffff81118282101715611201576112016111c5565b6040525050565b600067ffffffffffffffff821115611222576112226111c5565b5060051b60200190565b600082601f83011261123d57600080fd5b8135602061124a82611208565b60405161125782826111db565b83815260059390931b850182019282810191508684111561127757600080fd5b8286015b84811015611292578035835291830191830161127b565b509695505050505050565b600082601f8301126112ae57600080fd5b813567ffffffffffffffff8111156112c8576112c86111c5565b6040516112df601f8301601f1916602001826111db565b8181528460208386010111156112f457600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a0868803121561132957600080fd5b6113328661109d565b94506113406020870161109d565b9350604086013567ffffffffffffffff8082111561135d57600080fd5b61136989838a0161122c565b9450606088013591508082111561137f57600080fd5b61138b89838a0161122c565b935060808801359150808211156113a157600080fd5b506113ae8882890161129d565b9150509295509295909350565b600080604083850312156113ce57600080fd5b823567ffffffffffffffff808211156113e657600080fd5b818501915085601f8301126113fa57600080fd5b8135602061140782611208565b60405161141482826111db565b83815260059390931b850182019282810191508984111561143457600080fd5b948201945b838610156114595761144a8661109d565b82529482019490820190611439565b9650508601359250508082111561146f57600080fd5b5061147c8582860161122c565b9150509250929050565b600081518084526020808501945080840160005b838110156114b65781518752958201959082019060010161149a565b509495945050505050565b6020815260006111196020830184611486565b600080604083850312156114e757600080fd5b6114f08361109d565b91506020830135801515811461150557600080fd5b809150509250929050565b6000806040838503121561152357600080fd5b61152c8361109d565b915061153a6020840161109d565b90509250929050565b600080600080600060a0868803121561155b57600080fd5b6115648661109d565b94506115726020870161109d565b93506040860135925060608601359150608086013567ffffffffffffffff81111561159c57600080fd5b6113ae8882890161129d565b600181811c908216806115bc57607f821691505b6020821081036115dc57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201611620576116206115f8565b5060010190565b8082018082111561028e5761028e6115f8565b60408152600061164d6040830185611486565b828103602084015261165f8185611486565b95945050505050565b60006001600160a01b03808816835280871660208401525084604083015283606083015260a060808301526116a060a0830184611139565b979650505050505050565b6000602082840312156116bd57600080fd5b8151611119816110e3565b600060033d11156116e15760046000803e5060005160e01c5b90565b600060443d10156116f25790565b6040516003193d81016004833e81513d67ffffffffffffffff816024840111818411171561172257505050505090565b828501915081518181111561173a5750505050505090565b843d87010160208285010111156117545750505050505090565b611763602082860101876111db565b509095945050505050565b60006001600160a01b03808816835280871660208401525060a0604083015261179a60a0830186611486565b82810360608401526117ac8186611486565b905082810360808401526117c08185611139565b9897505050505050505056fea164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xBD JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x4E1273F4 GT PUSH2 0x76 JUMPI DUP1 PUSH4 0xE985E9C5 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x186 JUMPI DUP1 PUSH4 0xF242432A EQ PUSH2 0x1C2 JUMPI DUP1 PUSH4 0xF5298ACA EQ PUSH2 0x1D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x4E1273F4 EQ PUSH2 0x153 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x173 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xE89341C GT PUSH2 0xA7 JUMPI DUP1 PUSH4 0xE89341C EQ PUSH2 0x10B JUMPI DUP1 PUSH4 0x156E29F6 EQ PUSH2 0x12B JUMPI DUP1 PUSH4 0x2EB2C2D6 EQ PUSH2 0x140 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH3 0xFDD58E EQ PUSH2 0xC2 JUMPI DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xE8 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD5 PUSH2 0xD0 CALLDATASIZE PUSH1 0x4 PUSH2 0x10B9 JUMP JUMPDEST PUSH2 0x1E8 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xFB PUSH2 0xF6 CALLDATASIZE PUSH1 0x4 PUSH2 0x10FC JUMP JUMPDEST PUSH2 0x294 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xDF JUMP JUMPDEST PUSH2 0x11E PUSH2 0x119 CALLDATASIZE PUSH1 0x4 PUSH2 0x1120 JUMP JUMPDEST PUSH2 0x2E4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xDF SWAP2 SWAP1 PUSH2 0x117F JUMP JUMPDEST PUSH2 0x13E PUSH2 0x139 CALLDATASIZE PUSH1 0x4 PUSH2 0x1192 JUMP JUMPDEST PUSH2 0x378 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x13E PUSH2 0x14E CALLDATASIZE PUSH1 0x4 PUSH2 0x1311 JUMP JUMPDEST PUSH2 0x398 JUMP JUMPDEST PUSH2 0x166 PUSH2 0x161 CALLDATASIZE PUSH1 0x4 PUSH2 0x13BB JUMP JUMPDEST PUSH2 0x42B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xDF SWAP2 SWAP1 PUSH2 0x14C1 JUMP JUMPDEST PUSH2 0x13E PUSH2 0x181 CALLDATASIZE PUSH1 0x4 PUSH2 0x14D4 JUMP JUMPDEST PUSH2 0x569 JUMP JUMPDEST PUSH2 0xFB PUSH2 0x194 CALLDATASIZE PUSH1 0x4 PUSH2 0x1510 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x13E PUSH2 0x1D0 CALLDATASIZE PUSH1 0x4 PUSH2 0x1543 JUMP JUMPDEST PUSH2 0x578 JUMP JUMPDEST PUSH2 0x13E PUSH2 0x1E3 CALLDATASIZE PUSH1 0x4 PUSH2 0x1192 JUMP JUMPDEST PUSH2 0x604 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x26B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A2061646472657373207A65726F206973206E6F7420612076 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x616C6964206F776E657200000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x6CDB3D13 PUSH1 0xE1 SHL EQ DUP1 PUSH2 0x2C5 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x3A24D07 PUSH1 0xE2 SHL EQ JUMPDEST DUP1 PUSH2 0x28E JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ PUSH2 0x28E JUMP JUMPDEST PUSH1 0x60 PUSH1 0x2 DUP1 SLOAD PUSH2 0x2F3 SWAP1 PUSH2 0x15A8 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x31F SWAP1 PUSH2 0x15A8 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x36C JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x341 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x36C JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x34F JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x393 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x60F JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND CALLER EQ DUP1 PUSH2 0x3B4 JUMPI POP PUSH2 0x3B4 DUP6 CALLER PUSH2 0x194 JUMP JUMPDEST PUSH2 0x417 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A2063616C6C6572206973206E6F7420746F6B656E206F776E PUSH1 0x44 DUP3 ADD MSTORE PUSH14 0x195C881BDC88185C1C1C9BDD9959 PUSH1 0x92 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x262 JUMP JUMPDEST PUSH2 0x424 DUP6 DUP6 DUP6 DUP6 DUP6 PUSH2 0x723 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 MLOAD DUP4 MLOAD EQ PUSH2 0x4A4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A206163636F756E747320616E6420696473206C656E677468 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x206D69736D617463680000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x262 JUMP JUMPDEST PUSH1 0x0 DUP4 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x4C0 JUMPI PUSH2 0x4C0 PUSH2 0x11C5 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x4E9 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x561 JUMPI PUSH2 0x534 DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x50D JUMPI PUSH2 0x50D PUSH2 0x15E2 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x527 JUMPI PUSH2 0x527 PUSH2 0x15E2 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x1E8 JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x546 JUMPI PUSH2 0x546 PUSH2 0x15E2 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH2 0x55A DUP2 PUSH2 0x160E JUMP JUMPDEST SWAP1 POP PUSH2 0x4EF JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x574 CALLER DUP4 DUP4 PUSH2 0x996 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND CALLER EQ DUP1 PUSH2 0x594 JUMPI POP PUSH2 0x594 DUP6 CALLER PUSH2 0x194 JUMP JUMPDEST PUSH2 0x5F7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A2063616C6C6572206973206E6F7420746F6B656E206F776E PUSH1 0x44 DUP3 ADD MSTORE PUSH14 0x195C881BDC88185C1C1C9BDD9959 PUSH1 0x92 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x262 JUMP JUMPDEST PUSH2 0x424 DUP6 DUP6 DUP6 DUP6 DUP6 PUSH2 0xA8A JUMP JUMPDEST PUSH2 0x393 DUP4 DUP4 DUP4 PUSH2 0xC35 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x66F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A206D696E7420746F20746865207A65726F20616464726573 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x73 PUSH1 0xF8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x262 JUMP JUMPDEST CALLER PUSH1 0x0 PUSH2 0x67B DUP6 PUSH2 0xDB1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x688 DUP6 PUSH2 0xDB1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 DUP1 SLOAD DUP8 SWAP3 SWAP1 PUSH2 0x6BA SWAP1 DUP5 SWAP1 PUSH2 0x1627 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x40 DUP1 MLOAD DUP8 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP11 AND SWAP3 PUSH1 0x0 SWAP3 SWAP2 DUP8 AND SWAP2 PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x71A DUP4 PUSH1 0x0 DUP10 DUP10 DUP10 DUP10 PUSH2 0xDFC JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST DUP2 MLOAD DUP4 MLOAD EQ PUSH2 0x79A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x28 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A2069647320616E6420616D6F756E7473206C656E67746820 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6D69736D61746368000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x262 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x7FE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A207472616E7366657220746F20746865207A65726F206164 PUSH1 0x44 DUP3 ADD MSTORE PUSH5 0x6472657373 PUSH1 0xD8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x262 JUMP JUMPDEST CALLER PUSH1 0x0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x928 JUMPI PUSH1 0x0 DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x81F JUMPI PUSH2 0x81F PUSH2 0x15E2 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x83D JUMPI PUSH2 0x83D PUSH2 0x15E2 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD PUSH1 0x0 DUP5 DUP2 MSTORE DUP1 DUP4 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP15 AND DUP4 MSTORE SWAP1 SWAP4 MSTORE SWAP2 SWAP1 SWAP2 KECCAK256 SLOAD SWAP1 SWAP2 POP DUP2 DUP2 LT ISZERO PUSH2 0x8D0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A20696E73756666696369656E742062616C616E636520666F PUSH1 0x44 DUP3 ADD MSTORE PUSH10 0x39103A3930B739B332B9 PUSH1 0xB1 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x262 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP15 DUP2 AND DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 DUP6 DUP6 SUB SWAP1 SSTORE SWAP1 DUP12 AND DUP3 MSTORE DUP2 KECCAK256 DUP1 SLOAD DUP5 SWAP3 SWAP1 PUSH2 0x90D SWAP1 DUP5 SWAP1 PUSH2 0x1627 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP POP POP POP DUP1 PUSH2 0x921 SWAP1 PUSH2 0x160E JUMP JUMPDEST SWAP1 POP PUSH2 0x802 JUMP JUMPDEST POP DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB DUP8 DUP8 PUSH1 0x40 MLOAD PUSH2 0x978 SWAP3 SWAP2 SWAP1 PUSH2 0x163A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x98E DUP2 DUP8 DUP8 DUP8 DUP8 DUP8 PUSH2 0xFA1 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0xA1D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A2073657474696E6720617070726F76616C20737461747573 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x20666F722073656C660000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x262 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND DUP7 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP2 MLOAD SWAP2 DUP3 MSTORE PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0xAEE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A207472616E7366657220746F20746865207A65726F206164 PUSH1 0x44 DUP3 ADD MSTORE PUSH5 0x6472657373 PUSH1 0xD8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x262 JUMP JUMPDEST CALLER PUSH1 0x0 PUSH2 0xAFA DUP6 PUSH2 0xDB1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xB07 DUP6 PUSH2 0xDB1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD DUP6 DUP2 LT ISZERO PUSH2 0xB8D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A20696E73756666696369656E742062616C616E636520666F PUSH1 0x44 DUP3 ADD MSTORE PUSH10 0x39103A3930B739B332B9 PUSH1 0xB1 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x262 JUMP JUMPDEST PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP14 DUP2 AND DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 DUP10 DUP6 SUB SWAP1 SSTORE SWAP1 DUP11 AND DUP3 MSTORE DUP2 KECCAK256 DUP1 SLOAD DUP9 SWAP3 SWAP1 PUSH2 0xBCA SWAP1 DUP5 SWAP1 PUSH2 0x1627 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x40 DUP1 MLOAD DUP9 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP9 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP12 AND SWAP3 DUP13 DUP3 AND SWAP3 SWAP2 DUP9 AND SWAP2 PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0xC2A DUP5 DUP11 DUP11 DUP11 DUP11 DUP11 PUSH2 0xDFC JUMP JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0xC97 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x23 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A206275726E2066726F6D20746865207A65726F2061646472 PUSH1 0x44 DUP3 ADD MSTORE PUSH3 0x657373 PUSH1 0xE8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x262 JUMP JUMPDEST CALLER PUSH1 0x0 PUSH2 0xCA3 DUP5 PUSH2 0xDB1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xCB0 DUP5 PUSH2 0xDB1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 ADD DUP4 MSTORE PUSH1 0x0 SWAP2 DUP3 SWAP1 MSTORE DUP9 DUP3 MSTORE DUP2 DUP2 MSTORE DUP3 DUP3 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND DUP4 MSTORE SWAP1 MSTORE KECCAK256 SLOAD SWAP1 SWAP2 POP DUP5 DUP2 LT ISZERO PUSH2 0xD39 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x455243313135353A206275726E20616D6F756E7420657863656564732062616C PUSH1 0x44 DUP3 ADD MSTORE PUSH4 0x616E6365 PUSH1 0xE0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x262 JUMP JUMPDEST PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 DUP2 AND DUP1 DUP7 MSTORE SWAP2 DUP5 MSTORE DUP3 DUP6 KECCAK256 DUP11 DUP8 SUB SWAP1 SSTORE DUP3 MLOAD DUP12 DUP2 MSTORE SWAP4 DUP5 ADD DUP11 SWAP1 MSTORE SWAP1 SWAP3 SWAP1 DUP9 AND SWAP2 PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 SWAP1 MSTORE PUSH2 0x71A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 PUSH1 0x0 SWAP2 SWAP1 PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP3 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xDEB JUMPI PUSH2 0xDEB PUSH2 0x15E2 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO PUSH2 0x98E JUMPI PUSH1 0x40 MLOAD PUSH4 0xF23A6E61 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0xF23A6E61 SWAP1 PUSH2 0xE40 SWAP1 DUP10 SWAP1 DUP10 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x1668 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0xE7B JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0xE78 SWAP2 DUP2 ADD SWAP1 PUSH2 0x16AB JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0xF30 JUMPI PUSH2 0xE87 PUSH2 0x16C8 JUMP JUMPDEST DUP1 PUSH4 0x8C379A0 SUB PUSH2 0xEC0 JUMPI POP PUSH2 0xE9B PUSH2 0x16E4 JUMP JUMPDEST DUP1 PUSH2 0xEA6 JUMPI POP PUSH2 0xEC2 JUMP JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x262 SWAP2 SWAP1 PUSH2 0x117F JUMP JUMPDEST POP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x34 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A207472616E7366657220746F206E6F6E2D45524331313535 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x526563656976657220696D706C656D656E746572000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x262 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH4 0xF23A6E61 PUSH1 0xE0 SHL EQ PUSH2 0x71A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x28 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A204552433131353552656365697665722072656A65637465 PUSH1 0x44 DUP3 ADD MSTORE PUSH8 0x6420746F6B656E73 PUSH1 0xC0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x262 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO PUSH2 0x98E JUMPI PUSH1 0x40 MLOAD PUSH4 0xBC197C81 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0xBC197C81 SWAP1 PUSH2 0xFE5 SWAP1 DUP10 SWAP1 DUP10 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x176E JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x1020 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x101D SWAP2 DUP2 ADD SWAP1 PUSH2 0x16AB JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x102C JUMPI PUSH2 0xE87 PUSH2 0x16C8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH4 0xBC197C81 PUSH1 0xE0 SHL EQ PUSH2 0x71A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x28 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313135353A204552433131353552656365697665722072656A65637465 PUSH1 0x44 DUP3 ADD MSTORE PUSH8 0x6420746F6B656E73 PUSH1 0xC0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x262 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x10B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x10CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x10D5 DUP4 PUSH2 0x109D JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x10F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x110E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1119 DUP2 PUSH2 0x10E3 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1132 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x115F JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD DUP3 ADD MSTORE ADD PUSH2 0x1143 JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x20 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x20 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x1119 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x1139 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x11A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x11B0 DUP5 PUSH2 0x109D JUMP JUMPDEST SWAP6 PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP6 POP PUSH1 0x40 SWAP1 SWAP5 ADD CALLDATALOAD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x1201 JUMPI PUSH2 0x1201 PUSH2 0x11C5 JUMP JUMPDEST PUSH1 0x40 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x1222 JUMPI PUSH2 0x1222 PUSH2 0x11C5 JUMP JUMPDEST POP PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x123D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x20 PUSH2 0x124A DUP3 PUSH2 0x1208 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1257 DUP3 DUP3 PUSH2 0x11DB JUMP JUMPDEST DUP4 DUP2 MSTORE PUSH1 0x5 SWAP4 SWAP1 SWAP4 SHL DUP6 ADD DUP3 ADD SWAP3 DUP3 DUP2 ADD SWAP2 POP DUP7 DUP5 GT ISZERO PUSH2 0x1277 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 DUP7 ADD JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x1292 JUMPI DUP1 CALLDATALOAD DUP4 MSTORE SWAP2 DUP4 ADD SWAP2 DUP4 ADD PUSH2 0x127B JUMP JUMPDEST POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x12AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x12C8 JUMPI PUSH2 0x12C8 PUSH2 0x11C5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x12DF PUSH1 0x1F DUP4 ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 PUSH2 0x11DB JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 PUSH1 0x20 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0x12F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP6 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 SWAP2 DUP2 ADD PUSH1 0x20 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x1329 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1332 DUP7 PUSH2 0x109D JUMP JUMPDEST SWAP5 POP PUSH2 0x1340 PUSH1 0x20 DUP8 ADD PUSH2 0x109D JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x135D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1369 DUP10 DUP4 DUP11 ADD PUSH2 0x122C JUMP JUMPDEST SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x137F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x138B DUP10 DUP4 DUP11 ADD PUSH2 0x122C JUMP JUMPDEST SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x13A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x13AE DUP9 DUP3 DUP10 ADD PUSH2 0x129D JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x13CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x13E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x13FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x20 PUSH2 0x1407 DUP3 PUSH2 0x1208 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1414 DUP3 DUP3 PUSH2 0x11DB JUMP JUMPDEST DUP4 DUP2 MSTORE PUSH1 0x5 SWAP4 SWAP1 SWAP4 SHL DUP6 ADD DUP3 ADD SWAP3 DUP3 DUP2 ADD SWAP2 POP DUP10 DUP5 GT ISZERO PUSH2 0x1434 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP5 DUP3 ADD SWAP5 JUMPDEST DUP4 DUP7 LT ISZERO PUSH2 0x1459 JUMPI PUSH2 0x144A DUP7 PUSH2 0x109D JUMP JUMPDEST DUP3 MSTORE SWAP5 DUP3 ADD SWAP5 SWAP1 DUP3 ADD SWAP1 PUSH2 0x1439 JUMP JUMPDEST SWAP7 POP POP DUP7 ADD CALLDATALOAD SWAP3 POP POP DUP1 DUP3 GT ISZERO PUSH2 0x146F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x147C DUP6 DUP3 DUP7 ADD PUSH2 0x122C JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP1 DUP5 ADD PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x14B6 JUMPI DUP2 MLOAD DUP8 MSTORE SWAP6 DUP3 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x149A JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x1119 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x1486 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x14E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x14F0 DUP4 PUSH2 0x109D JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x1505 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1523 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x152C DUP4 PUSH2 0x109D JUMP JUMPDEST SWAP2 POP PUSH2 0x153A PUSH1 0x20 DUP5 ADD PUSH2 0x109D JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x155B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1564 DUP7 PUSH2 0x109D JUMP JUMPDEST SWAP5 POP PUSH2 0x1572 PUSH1 0x20 DUP8 ADD PUSH2 0x109D JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD SWAP2 POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x159C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x13AE DUP9 DUP3 DUP10 ADD PUSH2 0x129D JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x15BC JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x15DC JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 ADD PUSH2 0x1620 JUMPI PUSH2 0x1620 PUSH2 0x15F8 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x28E JUMPI PUSH2 0x28E PUSH2 0x15F8 JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 PUSH2 0x164D PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x1486 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x165F DUP2 DUP6 PUSH2 0x1486 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND DUP4 MSTORE DUP1 DUP8 AND PUSH1 0x20 DUP5 ADD MSTORE POP DUP5 PUSH1 0x40 DUP4 ADD MSTORE DUP4 PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0xA0 PUSH1 0x80 DUP4 ADD MSTORE PUSH2 0x16A0 PUSH1 0xA0 DUP4 ADD DUP5 PUSH2 0x1139 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x16BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x1119 DUP2 PUSH2 0x10E3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x3 RETURNDATASIZE GT ISZERO PUSH2 0x16E1 JUMPI PUSH1 0x4 PUSH1 0x0 DUP1 RETURNDATACOPY POP PUSH1 0x0 MLOAD PUSH1 0xE0 SHR JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x44 RETURNDATASIZE LT ISZERO PUSH2 0x16F2 JUMPI SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x3 NOT RETURNDATASIZE DUP2 ADD PUSH1 0x4 DUP4 RETURNDATACOPY DUP2 MLOAD RETURNDATASIZE PUSH8 0xFFFFFFFFFFFFFFFF DUP2 PUSH1 0x24 DUP5 ADD GT DUP2 DUP5 GT OR ISZERO PUSH2 0x1722 JUMPI POP POP POP POP POP SWAP1 JUMP JUMPDEST DUP3 DUP6 ADD SWAP2 POP DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x173A JUMPI POP POP POP POP POP POP SWAP1 JUMP JUMPDEST DUP5 RETURNDATASIZE DUP8 ADD ADD PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x1754 JUMPI POP POP POP POP POP POP SWAP1 JUMP JUMPDEST PUSH2 0x1763 PUSH1 0x20 DUP3 DUP7 ADD ADD DUP8 PUSH2 0x11DB JUMP JUMPDEST POP SWAP1 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND DUP4 MSTORE DUP1 DUP8 AND PUSH1 0x20 DUP5 ADD MSTORE POP PUSH1 0xA0 PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x179A PUSH1 0xA0 DUP4 ADD DUP7 PUSH2 0x1486 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x60 DUP5 ADD MSTORE PUSH2 0x17AC DUP2 DUP7 PUSH2 0x1486 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 SUB PUSH1 0x80 DUP5 ADD MSTORE PUSH2 0x17C0 DUP2 DUP6 PUSH2 0x1139 JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"303:349:58:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2185:227:22;;;;;;:::i;:::-;;:::i;:::-;;;620:25:92;;;608:2;593:18;2185:227:22;;;;;;;;1236:305;;;;;;:::i;:::-;;:::i;:::-;;;1207:14:92;;1200:22;1182:41;;1170:2;1155:18;1236:305:22;1042:187:92;1940:103:22;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;395:130:58:-;;;;;;:::i;:::-;;:::i;:::-;;4042:426:22;;;;;;:::i;:::-;;:::i;2569:486::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;3123:153::-;;;;;;:::i;:::-;;:::i;3343:166::-;;;;;;:::i;:::-;-1:-1:-1;;;;;3465:27:22;;;3442:4;3465:27;;;:18;:27;;;;;;;;:37;;;;;;;;;;;;;;;3343:166;3576:394;;;;;;:::i;:::-;;:::i;531:119:58:-;;;;;;:::i;:::-;;:::i;2185:227:22:-;2271:7;-1:-1:-1;;;;;2298:21:22;;2290:76;;;;-1:-1:-1;;;2290:76:22;;8559:2:92;2290:76:22;;;8541:21:92;8598:2;8578:18;;;8571:30;8637:34;8617:18;;;8610:62;8708:12;8688:18;;;8681:40;8738:19;;2290:76:22;;;;;;;;;-1:-1:-1;2383:9:22;:13;;;;;;;;;;;-1:-1:-1;;;;;2383:22:22;;;;;;;;;;2185:227;;;;;:::o;1236:305::-;1338:4;-1:-1:-1;;;;;;1373:41:22;;-1:-1:-1;;;1373:41:22;;:109;;-1:-1:-1;;;;;;;1430:52:22;;-1:-1:-1;;;1430:52:22;1373:109;:161;;;-1:-1:-1;;;;;;;;;;937:40:38;;;1498:36:22;829:155:38;1940:103:22;2000:13;2032:4;2025:11;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1940:103;;;:::o;395:130:58:-;476:42;482:7;491;500:6;508:9;;;;;;;;;;;;476:5;:42::i;:::-;395:130;;;:::o;4042:426:22:-;-1:-1:-1;;;;;4267:20:22;;734:10:34;4267:20:22;;:60;;-1:-1:-1;4291:36:22;4308:4;734:10:34;3343:166:22;:::i;4291:36::-;4246:153;;;;-1:-1:-1;;;4246:153:22;;9355:2:92;4246:153:22;;;9337:21:92;9394:2;9374:18;;;9367:30;9433:34;9413:18;;;9406:62;-1:-1:-1;;;9484:18:92;;;9477:44;9538:19;;4246:153:22;9153:410:92;4246:153:22;4409:52;4432:4;4438:2;4442:3;4447:7;4456:4;4409:22;:52::i;:::-;4042:426;;;;;:::o;2569:486::-;2702:16;2757:3;:10;2738:8;:15;:29;2730:83;;;;-1:-1:-1;;;2730:83:22;;9770:2:92;2730:83:22;;;9752:21:92;9809:2;9789:18;;;9782:30;9848:34;9828:18;;;9821:62;9919:11;9899:18;;;9892:39;9948:19;;2730:83:22;9568:405:92;2730:83:22;2824:30;2871:8;:15;2857:30;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2857:30:22;;2824:63;;2903:9;2898:120;2922:8;:15;2918:1;:19;2898:120;;;2977:30;2987:8;2996:1;2987:11;;;;;;;;:::i;:::-;;;;;;;3000:3;3004:1;3000:6;;;;;;;;:::i;:::-;;;;;;;2977:9;:30::i;:::-;2958:13;2972:1;2958:16;;;;;;;;:::i;:::-;;;;;;;;;;:49;2939:3;;;:::i;:::-;;;2898:120;;;-1:-1:-1;3035:13:22;2569:486;-1:-1:-1;;;2569:486:22:o;3123:153::-;3217:52;734:10:34;3250:8:22;3260;3217:18;:52::i;:::-;3123:153;;:::o;3576:394::-;-1:-1:-1;;;;;3776:20:22;;734:10:34;3776:20:22;;:60;;-1:-1:-1;3800:36:22;3817:4;734:10:34;3343:166:22;:::i;3800:36::-;3755:153;;;;-1:-1:-1;;;3755:153:22;;9355:2:92;3755:153:22;;;9337:21:92;9394:2;9374:18;;;9367:30;9433:34;9413:18;;;9406:62;-1:-1:-1;;;9484:18:92;;;9477:44;9538:19;;3755:153:22;9153:410:92;3755:153:22;3918:45;3936:4;3942:2;3946;3950:6;3958:4;3918:17;:45::i;531:119:58:-;612:31;618:7;627;636:6;612:5;:31::i;8608:671:22:-;-1:-1:-1;;;;;8717:16:22;;8709:62;;;;-1:-1:-1;;;8709:62:22;;10584:2:92;8709:62:22;;;10566:21:92;10623:2;10603:18;;;10596:30;10662:34;10642:18;;;10635:62;-1:-1:-1;;;10713:18:92;;;10706:31;10754:19;;8709:62:22;10382:397:92;8709:62:22;734:10:34;8782:16:22;8846:21;8864:2;8846:17;:21::i;:::-;8823:44;;8877:24;8904:25;8922:6;8904:17;:25::i;:::-;8877:52;;9017:9;:13;;;;;;;;;;;-1:-1:-1;;;;;9017:17:22;;;;;;;;;:27;;9038:6;;9017:9;:27;;9038:6;;9017:27;:::i;:::-;;;;-1:-1:-1;;9059:52:22;;;11088:25:92;;;11144:2;11129:18;;11122:34;;;-1:-1:-1;;;;;9059:52:22;;;;9092:1;;9059:52;;;;;;11061:18:92;9059:52:22;;;;;;;9198:74;9229:8;9247:1;9251:2;9255;9259:6;9267:4;9198:30;:74::i;:::-;8699:580;;;8608:671;;;;:::o;6211:1115::-;6431:7;:14;6417:3;:10;:28;6409:81;;;;-1:-1:-1;;;6409:81:22;;11369:2:92;6409:81:22;;;11351:21:92;11408:2;11388:18;;;11381:30;11447:34;11427:18;;;11420:62;11518:10;11498:18;;;11491:38;11546:19;;6409:81:22;11167:404:92;6409:81:22;-1:-1:-1;;;;;6508:16:22;;6500:66;;;;-1:-1:-1;;;6500:66:22;;11778:2:92;6500:66:22;;;11760:21:92;11817:2;11797:18;;;11790:30;11856:34;11836:18;;;11829:62;-1:-1:-1;;;11907:18:92;;;11900:35;11952:19;;6500:66:22;11576:401:92;6500:66:22;734:10:34;6577:16:22;6690:411;6714:3;:10;6710:1;:14;6690:411;;;6745:10;6758:3;6762:1;6758:6;;;;;;;;:::i;:::-;;;;;;;6745:19;;6778:14;6795:7;6803:1;6795:10;;;;;;;;:::i;:::-;;;;;;;;;;;;6820:19;6842:13;;;;;;;;;;-1:-1:-1;;;;;6842:19:22;;;;;;;;;;;;6795:10;;-1:-1:-1;6883:21:22;;;;6875:76;;;;-1:-1:-1;;;6875:76:22;;12184:2:92;6875:76:22;;;12166:21:92;12223:2;12203:18;;;12196:30;12262:34;12242:18;;;12235:62;-1:-1:-1;;;12313:18:92;;;12306:40;12363:19;;6875:76:22;11982:406:92;6875:76:22;6993:9;:13;;;;;;;;;;;-1:-1:-1;;;;;6993:19:22;;;;;;;;;;7015:20;;;6993:42;;7063:17;;;;;;;:27;;7015:20;;6993:9;7063:27;;7015:20;;7063:27;:::i;:::-;;;;;;;;6731:370;;;6726:3;;;;:::i;:::-;;;6690:411;;;;7146:2;-1:-1:-1;;;;;7116:47:22;7140:4;-1:-1:-1;;;;;7116:47:22;7130:8;-1:-1:-1;;;;;7116:47:22;;7150:3;7155:7;7116:47;;;;;;;:::i;:::-;;;;;;;;7244:75;7280:8;7290:4;7296:2;7300:3;7305:7;7314:4;7244:35;:75::i;:::-;6399:927;6211:1115;;;;;:::o;12790:293::-;12910:8;-1:-1:-1;;;;;12901:17:22;:5;-1:-1:-1;;;;;12901:17:22;;12893:71;;;;-1:-1:-1;;;12893:71:22;;13065:2:92;12893:71:22;;;13047:21:92;13104:2;13084:18;;;13077:30;13143:34;13123:18;;;13116:62;13214:11;13194:18;;;13187:39;13243:19;;12893:71:22;12863:405:92;12893:71:22;-1:-1:-1;;;;;12974:25:22;;;;;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;:46;;-1:-1:-1;;12974:46:22;;;;;;;;;;13035:41;;1182::92;;;13035::22;;1155:18:92;13035:41:22;;;;;;;12790:293;;;:::o;4918:947::-;-1:-1:-1;;;;;5099:16:22;;5091:66;;;;-1:-1:-1;;;5091:66:22;;11778:2:92;5091:66:22;;;11760:21:92;11817:2;11797:18;;;11790:30;11856:34;11836:18;;;11829:62;-1:-1:-1;;;11907:18:92;;;11900:35;11952:19;;5091:66:22;11576:401:92;5091:66:22;734:10:34;5168:16:22;5232:21;5250:2;5232:17;:21::i;:::-;5209:44;;5263:24;5290:25;5308:6;5290:17;:25::i;:::-;5263:52;;5397:19;5419:13;;;;;;;;;;;-1:-1:-1;;;;;5419:19:22;;;;;;;;;;5456:21;;;;5448:76;;;;-1:-1:-1;;;5448:76:22;;12184:2:92;5448:76:22;;;12166:21:92;12223:2;12203:18;;;12196:30;12262:34;12242:18;;;12235:62;-1:-1:-1;;;12313:18:92;;;12306:40;12363:19;;5448:76:22;11982:406:92;5448:76:22;5558:9;:13;;;;;;;;;;;-1:-1:-1;;;;;5558:19:22;;;;;;;;;;5580:20;;;5558:42;;5620:17;;;;;;;:27;;5580:20;;5558:9;5620:27;;5580:20;;5620:27;:::i;:::-;;;;-1:-1:-1;;5663:46:22;;;11088:25:92;;;11144:2;11129:18;;11122:34;;;-1:-1:-1;;;;;5663:46:22;;;;;;;;;;;;;;11061:18:92;5663:46:22;;;;;;;5790:68;5821:8;5831:4;5837:2;5841;5845:6;5853:4;5790:30;:68::i;:::-;5081:784;;;;4918:947;;;;;:::o;10746:756::-;-1:-1:-1;;;;;10838:18:22;;10830:66;;;;-1:-1:-1;;;10830:66:22;;13475:2:92;10830:66:22;;;13457:21:92;13514:2;13494:18;;;13487:30;13553:34;13533:18;;;13526:62;-1:-1:-1;;;13604:18:92;;;13597:33;13647:19;;10830:66:22;13273:399:92;10830:66:22;734:10:34;10907:16:22;10971:21;10989:2;10971:17;:21::i;:::-;10948:44;;11002:24;11029:25;11047:6;11029:17;:25::i;:::-;11065:66;;;;;;;;;-1:-1:-1;11065:66:22;;;;11164:13;;;;;;;;;-1:-1:-1;;;;;11164:19:22;;;;;;;;11002:52;;-1:-1:-1;11201:21:22;;;;11193:70;;;;-1:-1:-1;;;11193:70:22;;13879:2:92;11193:70:22;;;13861:21:92;13918:2;13898:18;;;13891:30;13957:34;13937:18;;;13930:62;-1:-1:-1;;;14008:18:92;;;14001:34;14052:19;;11193:70:22;13677:400:92;11193:70:22;11297:9;:13;;;;;;;;;;;-1:-1:-1;;;;;11297:19:22;;;;;;;;;;;;11319:20;;;11297:42;;11365:54;;11088:25:92;;;11129:18;;;11122:34;;;11297:19:22;;11365:54;;;;;;11061:18:92;11365:54:22;;;;;;;11430:65;;;;;;;;;11474:1;11430:65;;;6211:1115;16914:193;17033:16;;;17047:1;17033:16;;;;;;;;;16980;;17008:22;;17033:16;;;;;;;;;;;;-1:-1:-1;17033:16:22;17008:41;;17070:7;17059:5;17065:1;17059:8;;;;;;;;:::i;:::-;;;;;;;;;;:18;17095:5;16914:193;-1:-1:-1;;16914:193:22:o;15385:725::-;-1:-1:-1;;;;;15592:13:22;;1702:19:33;:23;15588:516:22;;15627:72;;-1:-1:-1;;;15627:72:22;;-1:-1:-1;;;;;15627:38:22;;;;;:72;;15666:8;;15676:4;;15682:2;;15686:6;;15694:4;;15627:72;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15627:72:22;;;;;;;;-1:-1:-1;;15627:72:22;;;;;;;;;;;;:::i;:::-;;;15623:471;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;15970:6;15963:14;;-1:-1:-1;;;15963:14:22;;;;;;;;:::i;15623:471::-;;;16017:62;;-1:-1:-1;;;16017:62:22;;15987:2:92;16017:62:22;;;15969:21:92;16026:2;16006:18;;;15999:30;16065:34;16045:18;;;16038:62;16136:22;16116:18;;;16109:50;16176:19;;16017:62:22;15785:416:92;15623:471:22;-1:-1:-1;;;;;;15748:55:22;;-1:-1:-1;;;15748:55:22;15744:152;;15827:50;;-1:-1:-1;;;15827:50:22;;16408:2:92;15827:50:22;;;16390:21:92;16447:2;16427:18;;;16420:30;16486:34;16466:18;;;16459:62;-1:-1:-1;;;16537:18:92;;;16530:38;16585:19;;15827:50:22;16206:404:92;16116:792:22;-1:-1:-1;;;;;16348:13:22;;1702:19:33;:23;16344:558:22;;16383:79;;-1:-1:-1;;;16383:79:22;;-1:-1:-1;;;;;16383:43:22;;;;;:79;;16427:8;;16437:4;;16443:3;;16448:7;;16457:4;;16383:79;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16383:79:22;;;;;;;;-1:-1:-1;;16383:79:22;;;;;;;;;;;;:::i;:::-;;;16379:513;;;;:::i;:::-;-1:-1:-1;;;;;;16541:60:22;;-1:-1:-1;;;16541:60:22;16537:157;;16625:50;;-1:-1:-1;;;16625:50:22;;16408:2:92;16625:50:22;;;16390:21:92;16447:2;16427:18;;;16420:30;16486:34;16466:18;;;16459:62;-1:-1:-1;;;16537:18:92;;;16530:38;16585:19;;16625:50:22;16206:404:92;14:196;82:20;;-1:-1:-1;;;;;131:54:92;;121:65;;111:93;;200:1;197;190:12;111:93;14:196;;;:::o;215:254::-;283:6;291;344:2;332:9;323:7;319:23;315:32;312:52;;;360:1;357;350:12;312:52;383:29;402:9;383:29;:::i;:::-;373:39;459:2;444:18;;;;431:32;;-1:-1:-1;;;215:254:92:o;656:131::-;-1:-1:-1;;;;;;730:32:92;;720:43;;710:71;;777:1;774;767:12;710:71;656:131;:::o;792:245::-;850:6;903:2;891:9;882:7;878:23;874:32;871:52;;;919:1;916;909:12;871:52;958:9;945:23;977:30;1001:5;977:30;:::i;:::-;1026:5;792:245;-1:-1:-1;;;792:245:92:o;1234:180::-;1293:6;1346:2;1334:9;1325:7;1321:23;1317:32;1314:52;;;1362:1;1359;1352:12;1314:52;-1:-1:-1;1385:23:92;;1234:180;-1:-1:-1;1234:180:92:o;1419:423::-;1461:3;1499:5;1493:12;1526:6;1521:3;1514:19;1551:1;1561:162;1575:6;1572:1;1569:13;1561:162;;;1637:4;1693:13;;;1689:22;;1683:29;1665:11;;;1661:20;;1654:59;1590:12;1561:162;;;1565:3;1768:1;1761:4;1752:6;1747:3;1743:16;1739:27;1732:38;1831:4;1824:2;1820:7;1815:2;1807:6;1803:15;1799:29;1794:3;1790:39;1786:50;1779:57;;;1419:423;;;;:::o;1847:220::-;1996:2;1985:9;1978:21;1959:4;2016:45;2057:2;2046:9;2042:18;2034:6;2016:45;:::i;2072:322::-;2149:6;2157;2165;2218:2;2206:9;2197:7;2193:23;2189:32;2186:52;;;2234:1;2231;2224:12;2186:52;2257:29;2276:9;2257:29;:::i;:::-;2247:39;2333:2;2318:18;;2305:32;;-1:-1:-1;2384:2:92;2369:18;;;2356:32;;2072:322;-1:-1:-1;;;2072:322:92:o;2399:127::-;2460:10;2455:3;2451:20;2448:1;2441:31;2491:4;2488:1;2481:15;2515:4;2512:1;2505:15;2531:249;2641:2;2622:13;;-1:-1:-1;;2618:27:92;2606:40;;2676:18;2661:34;;2697:22;;;2658:62;2655:88;;;2723:18;;:::i;:::-;2759:2;2752:22;-1:-1:-1;;2531:249:92:o;2785:183::-;2845:4;2878:18;2870:6;2867:30;2864:56;;;2900:18;;:::i;:::-;-1:-1:-1;2945:1:92;2941:14;2957:4;2937:25;;2785:183::o;2973:724::-;3027:5;3080:3;3073:4;3065:6;3061:17;3057:27;3047:55;;3098:1;3095;3088:12;3047:55;3134:6;3121:20;3160:4;3183:43;3223:2;3183:43;:::i;:::-;3255:2;3249:9;3267:31;3295:2;3287:6;3267:31;:::i;:::-;3333:18;;;3425:1;3421:10;;;;3409:23;;3405:32;;;3367:15;;;;-1:-1:-1;3449:15:92;;;3446:35;;;3477:1;3474;3467:12;3446:35;3513:2;3505:6;3501:15;3525:142;3541:6;3536:3;3533:15;3525:142;;;3607:17;;3595:30;;3645:12;;;;3558;;3525:142;;;-1:-1:-1;3685:6:92;2973:724;-1:-1:-1;;;;;;2973:724:92:o;3702:555::-;3744:5;3797:3;3790:4;3782:6;3778:17;3774:27;3764:55;;3815:1;3812;3805:12;3764:55;3851:6;3838:20;3877:18;3873:2;3870:26;3867:52;;;3899:18;;:::i;:::-;3948:2;3942:9;3960:67;4015:2;3996:13;;-1:-1:-1;;3992:27:92;4021:4;3988:38;3942:9;3960:67;:::i;:::-;4051:2;4043:6;4036:18;4097:3;4090:4;4085:2;4077:6;4073:15;4069:26;4066:35;4063:55;;;4114:1;4111;4104:12;4063:55;4178:2;4171:4;4163:6;4159:17;4152:4;4144:6;4140:17;4127:54;4225:1;4201:15;;;4218:4;4197:26;4190:37;;;;4205:6;3702:555;-1:-1:-1;;;3702:555:92:o;4262:943::-;4416:6;4424;4432;4440;4448;4501:3;4489:9;4480:7;4476:23;4472:33;4469:53;;;4518:1;4515;4508:12;4469:53;4541:29;4560:9;4541:29;:::i;:::-;4531:39;;4589:38;4623:2;4612:9;4608:18;4589:38;:::i;:::-;4579:48;;4678:2;4667:9;4663:18;4650:32;4701:18;4742:2;4734:6;4731:14;4728:34;;;4758:1;4755;4748:12;4728:34;4781:61;4834:7;4825:6;4814:9;4810:22;4781:61;:::i;:::-;4771:71;;4895:2;4884:9;4880:18;4867:32;4851:48;;4924:2;4914:8;4911:16;4908:36;;;4940:1;4937;4930:12;4908:36;4963:63;5018:7;5007:8;4996:9;4992:24;4963:63;:::i;:::-;4953:73;;5079:3;5068:9;5064:19;5051:33;5035:49;;5109:2;5099:8;5096:16;5093:36;;;5125:1;5122;5115:12;5093:36;;5148:51;5191:7;5180:8;5169:9;5165:24;5148:51;:::i;:::-;5138:61;;;4262:943;;;;;;;;:::o;5210:1208::-;5328:6;5336;5389:2;5377:9;5368:7;5364:23;5360:32;5357:52;;;5405:1;5402;5395:12;5357:52;5445:9;5432:23;5474:18;5515:2;5507:6;5504:14;5501:34;;;5531:1;5528;5521:12;5501:34;5569:6;5558:9;5554:22;5544:32;;5614:7;5607:4;5603:2;5599:13;5595:27;5585:55;;5636:1;5633;5626:12;5585:55;5672:2;5659:16;5694:4;5717:43;5757:2;5717:43;:::i;:::-;5789:2;5783:9;5801:31;5829:2;5821:6;5801:31;:::i;:::-;5867:18;;;5955:1;5951:10;;;;5943:19;;5939:28;;;5901:15;;;;-1:-1:-1;5979:19:92;;;5976:39;;;6011:1;6008;6001:12;5976:39;6035:11;;;;6055:148;6071:6;6066:3;6063:15;6055:148;;;6137:23;6156:3;6137:23;:::i;:::-;6125:36;;6088:12;;;;6181;;;;6055:148;;;6222:6;-1:-1:-1;;6266:18:92;;6253:32;;-1:-1:-1;;6297:16:92;;;6294:36;;;6326:1;6323;6316:12;6294:36;;6349:63;6404:7;6393:8;6382:9;6378:24;6349:63;:::i;:::-;6339:73;;;5210:1208;;;;;:::o;6423:435::-;6476:3;6514:5;6508:12;6541:6;6536:3;6529:19;6567:4;6596:2;6591:3;6587:12;6580:19;;6633:2;6626:5;6622:14;6654:1;6664:169;6678:6;6675:1;6672:13;6664:169;;;6739:13;;6727:26;;6773:12;;;;6808:15;;;;6700:1;6693:9;6664:169;;;-1:-1:-1;6849:3:92;;6423:435;-1:-1:-1;;;;;6423:435:92:o;6863:261::-;7042:2;7031:9;7024:21;7005:4;7062:56;7114:2;7103:9;7099:18;7091:6;7062:56;:::i;7129:347::-;7194:6;7202;7255:2;7243:9;7234:7;7230:23;7226:32;7223:52;;;7271:1;7268;7261:12;7223:52;7294:29;7313:9;7294:29;:::i;:::-;7284:39;;7373:2;7362:9;7358:18;7345:32;7420:5;7413:13;7406:21;7399:5;7396:32;7386:60;;7442:1;7439;7432:12;7386:60;7465:5;7455:15;;;7129:347;;;;;:::o;7481:260::-;7549:6;7557;7610:2;7598:9;7589:7;7585:23;7581:32;7578:52;;;7626:1;7623;7616:12;7578:52;7649:29;7668:9;7649:29;:::i;:::-;7639:39;;7697:38;7731:2;7720:9;7716:18;7697:38;:::i;:::-;7687:48;;7481:260;;;;;:::o;7746:606::-;7850:6;7858;7866;7874;7882;7935:3;7923:9;7914:7;7910:23;7906:33;7903:53;;;7952:1;7949;7942:12;7903:53;7975:29;7994:9;7975:29;:::i;:::-;7965:39;;8023:38;8057:2;8046:9;8042:18;8023:38;:::i;:::-;8013:48;;8108:2;8097:9;8093:18;8080:32;8070:42;;8159:2;8148:9;8144:18;8131:32;8121:42;;8214:3;8203:9;8199:19;8186:33;8242:18;8234:6;8231:30;8228:50;;;8274:1;8271;8264:12;8228:50;8297:49;8338:7;8329:6;8318:9;8314:22;8297:49;:::i;8768:380::-;8847:1;8843:12;;;;8890;;;8911:61;;8965:4;8957:6;8953:17;8943:27;;8911:61;9018:2;9010:6;9007:14;8987:18;8984:38;8981:161;;9064:10;9059:3;9055:20;9052:1;9045:31;9099:4;9096:1;9089:15;9127:4;9124:1;9117:15;8981:161;;8768:380;;;:::o;9978:127::-;10039:10;10034:3;10030:20;10027:1;10020:31;10070:4;10067:1;10060:15;10094:4;10091:1;10084:15;10110:127;10171:10;10166:3;10162:20;10159:1;10152:31;10202:4;10199:1;10192:15;10226:4;10223:1;10216:15;10242:135;10281:3;10302:17;;;10299:43;;10322:18;;:::i;:::-;-1:-1:-1;10369:1:92;10358:13;;10242:135::o;10784:125::-;10849:9;;;10870:10;;;10867:36;;;10883:18;;:::i;12393:465::-;12650:2;12639:9;12632:21;12613:4;12676:56;12728:2;12717:9;12713:18;12705:6;12676:56;:::i;:::-;12780:9;12772:6;12768:22;12763:2;12752:9;12748:18;12741:50;12808:44;12845:6;12837;12808:44;:::i;:::-;12800:52;12393:465;-1:-1:-1;;;;;12393:465:92:o;14082:584::-;14304:4;-1:-1:-1;;;;;14414:2:92;14406:6;14402:15;14391:9;14384:34;14466:2;14458:6;14454:15;14449:2;14438:9;14434:18;14427:43;;14506:6;14501:2;14490:9;14486:18;14479:34;14549:6;14544:2;14533:9;14529:18;14522:34;14593:3;14587;14576:9;14572:19;14565:32;14614:46;14655:3;14644:9;14640:19;14632:6;14614:46;:::i;:::-;14606:54;14082:584;-1:-1:-1;;;;;;;14082:584:92:o;14671:249::-;14740:6;14793:2;14781:9;14772:7;14768:23;14764:32;14761:52;;;14809:1;14806;14799:12;14761:52;14841:9;14835:16;14860:30;14884:5;14860:30;:::i;14925:179::-;14960:3;15002:1;14984:16;14981:23;14978:120;;;15048:1;15045;15042;15027:23;-1:-1:-1;15085:1:92;15079:8;15074:3;15070:18;14978:120;14925:179;:::o;15109:671::-;15148:3;15190:4;15172:16;15169:26;15166:39;;;15109:671;:::o;15166:39::-;15232:2;15226:9;-1:-1:-1;;15297:16:92;15293:25;;15290:1;15226:9;15269:50;15348:4;15342:11;15372:16;15407:18;15478:2;15471:4;15463:6;15459:17;15456:25;15451:2;15443:6;15440:14;15437:45;15434:58;;;15485:5;;;;;15109:671;:::o;15434:58::-;15522:6;15516:4;15512:17;15501:28;;15558:3;15552:10;15585:2;15577:6;15574:14;15571:27;;;15591:5;;;;;;15109:671;:::o;15571:27::-;15675:2;15656:16;15650:4;15646:27;15642:36;15635:4;15626:6;15621:3;15617:16;15613:27;15610:69;15607:82;;;15682:5;;;;;;15109:671;:::o;15607:82::-;15698:57;15749:4;15740:6;15732;15728:19;15724:30;15718:4;15698:57;:::i;:::-;-1:-1:-1;15771:3:92;;15109:671;-1:-1:-1;;;;;15109:671:92:o;16615:850::-;16937:4;-1:-1:-1;;;;;17047:2:92;17039:6;17035:15;17024:9;17017:34;17099:2;17091:6;17087:15;17082:2;17071:9;17067:18;17060:43;;17139:3;17134:2;17123:9;17119:18;17112:31;17166:57;17218:3;17207:9;17203:19;17195:6;17166:57;:::i;:::-;17271:9;17263:6;17259:22;17254:2;17243:9;17239:18;17232:50;17305:44;17342:6;17334;17305:44;:::i;:::-;17291:58;;17398:9;17390:6;17386:22;17380:3;17369:9;17365:19;17358:51;17426:33;17452:6;17444;17426:33;:::i;:::-;17418:41;16615:850;-1:-1:-1;;;;;;;;16615:850:92:o"},"gasEstimates":{"creation":{"codeDepositCost":"1221000","executionCost":"infinite","totalCost":"infinite"},"external":{"balanceOf(address,uint256)":"2700","balanceOfBatch(address[],uint256[])":"infinite","burn(address,uint256,uint256)":"infinite","isApprovedForAll(address,address)":"infinite","mint(address,uint256,uint256)":"infinite","safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)":"infinite","safeTransferFrom(address,address,uint256,uint256,bytes)":"infinite","setApprovalForAll(address,bool)":"26728","supportsInterface(bytes4)":"578","uri(uint256)":"infinite"}},"methodIdentifiers":{"balanceOf(address,uint256)":"00fdd58e","balanceOfBatch(address[],uint256[])":"4e1273f4","burn(address,uint256,uint256)":"f5298aca","isApprovedForAll(address,address)":"e985e9c5","mint(address,uint256,uint256)":"156e29f6","safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)":"2eb2c2d6","safeTransferFrom(address,address,uint256,uint256,bytes)":"f242432a","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","uri(uint256)":"0e89341c"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_uri\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"}],\"name\":\"TransferBatch\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"TransferSingle\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"URI\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"accounts\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"}],\"name\":\"balanceOfBatch\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeBatchTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"uri\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"DO NOT USE IN PRODUCTION!\",\"kind\":\"dev\",\"methods\":{\"balanceOf(address,uint256)\":{\"details\":\"See {IERC1155-balanceOf}. Requirements: - `account` cannot be the zero address.\"},\"balanceOfBatch(address[],uint256[])\":{\"details\":\"See {IERC1155-balanceOfBatch}. Requirements: - `accounts` and `ids` must have the same length.\"},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC1155-isApprovedForAll}.\"},\"safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)\":{\"details\":\"See {IERC1155-safeBatchTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,uint256,bytes)\":{\"details\":\"See {IERC1155-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC1155-setApprovalForAll}.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"uri(uint256)\":{\"details\":\"See {IERC1155MetadataURI-uri}. This implementation returns the same URI for *all* token types. It relies on the token type ID substitution mechanism https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP]. Clients calling this function must replace the `\\\\{id\\\\}` substring with the actual token type ID.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"A mock [ERC-1155](https://eips.ethereum.org/EIPS/eip-1155) token that can be minted and burned by everyone.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/mocks/token/ERC1155Mock.sol\":\"ERC1155Mock\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC1155/ERC1155.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC1155/ERC1155.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC1155.sol\\\";\\nimport \\\"./IERC1155Receiver.sol\\\";\\nimport \\\"./extensions/IERC1155MetadataURI.sol\\\";\\nimport \\\"../../utils/Address.sol\\\";\\nimport \\\"../../utils/Context.sol\\\";\\nimport \\\"../../utils/introspection/ERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the basic standard multi-token.\\n * See https://eips.ethereum.org/EIPS/eip-1155\\n * Originally based on code by Enjin: https://github.com/enjin/erc-1155\\n *\\n * _Available since v3.1._\\n */\\ncontract ERC1155 is Context, ERC165, IERC1155, IERC1155MetadataURI {\\n using Address for address;\\n\\n // Mapping from token ID to account balances\\n mapping(uint256 => mapping(address => uint256)) private _balances;\\n\\n // Mapping from account to operator approvals\\n mapping(address => mapping(address => bool)) private _operatorApprovals;\\n\\n // Used as the URI for all token types by relying on ID substitution, e.g. https://token-cdn-domain/{id}.json\\n string private _uri;\\n\\n /**\\n * @dev See {_setURI}.\\n */\\n constructor(string memory uri_) {\\n _setURI(uri_);\\n }\\n\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) {\\n return\\n interfaceId == type(IERC1155).interfaceId ||\\n interfaceId == type(IERC1155MetadataURI).interfaceId ||\\n super.supportsInterface(interfaceId);\\n }\\n\\n /**\\n * @dev See {IERC1155MetadataURI-uri}.\\n *\\n * This implementation returns the same URI for *all* token types. It relies\\n * on the token type ID substitution mechanism\\n * https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP].\\n *\\n * Clients calling this function must replace the `\\\\{id\\\\}` substring with the\\n * actual token type ID.\\n */\\n function uri(uint256) public view virtual override returns (string memory) {\\n return _uri;\\n }\\n\\n /**\\n * @dev See {IERC1155-balanceOf}.\\n *\\n * Requirements:\\n *\\n * - `account` cannot be the zero address.\\n */\\n function balanceOf(address account, uint256 id) public view virtual override returns (uint256) {\\n require(account != address(0), \\\"ERC1155: address zero is not a valid owner\\\");\\n return _balances[id][account];\\n }\\n\\n /**\\n * @dev See {IERC1155-balanceOfBatch}.\\n *\\n * Requirements:\\n *\\n * - `accounts` and `ids` must have the same length.\\n */\\n function balanceOfBatch(\\n address[] memory accounts,\\n uint256[] memory ids\\n ) public view virtual override returns (uint256[] memory) {\\n require(accounts.length == ids.length, \\\"ERC1155: accounts and ids length mismatch\\\");\\n\\n uint256[] memory batchBalances = new uint256[](accounts.length);\\n\\n for (uint256 i = 0; i < accounts.length; ++i) {\\n batchBalances[i] = balanceOf(accounts[i], ids[i]);\\n }\\n\\n return batchBalances;\\n }\\n\\n /**\\n * @dev See {IERC1155-setApprovalForAll}.\\n */\\n function setApprovalForAll(address operator, bool approved) public virtual override {\\n _setApprovalForAll(_msgSender(), operator, approved);\\n }\\n\\n /**\\n * @dev See {IERC1155-isApprovedForAll}.\\n */\\n function isApprovedForAll(address account, address operator) public view virtual override returns (bool) {\\n return _operatorApprovals[account][operator];\\n }\\n\\n /**\\n * @dev See {IERC1155-safeTransferFrom}.\\n */\\n function safeTransferFrom(\\n address from,\\n address to,\\n uint256 id,\\n uint256 amount,\\n bytes memory data\\n ) public virtual override {\\n require(\\n from == _msgSender() || isApprovedForAll(from, _msgSender()),\\n \\\"ERC1155: caller is not token owner or approved\\\"\\n );\\n _safeTransferFrom(from, to, id, amount, data);\\n }\\n\\n /**\\n * @dev See {IERC1155-safeBatchTransferFrom}.\\n */\\n function safeBatchTransferFrom(\\n address from,\\n address to,\\n uint256[] memory ids,\\n uint256[] memory amounts,\\n bytes memory data\\n ) public virtual override {\\n require(\\n from == _msgSender() || isApprovedForAll(from, _msgSender()),\\n \\\"ERC1155: caller is not token owner or approved\\\"\\n );\\n _safeBatchTransferFrom(from, to, ids, amounts, data);\\n }\\n\\n /**\\n * @dev Transfers `amount` tokens of token type `id` from `from` to `to`.\\n *\\n * Emits a {TransferSingle} event.\\n *\\n * Requirements:\\n *\\n * - `to` cannot be the zero address.\\n * - `from` must have a balance of tokens of type `id` of at least `amount`.\\n * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the\\n * acceptance magic value.\\n */\\n function _safeTransferFrom(\\n address from,\\n address to,\\n uint256 id,\\n uint256 amount,\\n bytes memory data\\n ) internal virtual {\\n require(to != address(0), \\\"ERC1155: transfer to the zero address\\\");\\n\\n address operator = _msgSender();\\n uint256[] memory ids = _asSingletonArray(id);\\n uint256[] memory amounts = _asSingletonArray(amount);\\n\\n _beforeTokenTransfer(operator, from, to, ids, amounts, data);\\n\\n uint256 fromBalance = _balances[id][from];\\n require(fromBalance >= amount, \\\"ERC1155: insufficient balance for transfer\\\");\\n unchecked {\\n _balances[id][from] = fromBalance - amount;\\n }\\n _balances[id][to] += amount;\\n\\n emit TransferSingle(operator, from, to, id, amount);\\n\\n _afterTokenTransfer(operator, from, to, ids, amounts, data);\\n\\n _doSafeTransferAcceptanceCheck(operator, from, to, id, amount, data);\\n }\\n\\n /**\\n * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_safeTransferFrom}.\\n *\\n * Emits a {TransferBatch} event.\\n *\\n * Requirements:\\n *\\n * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the\\n * acceptance magic value.\\n */\\n function _safeBatchTransferFrom(\\n address from,\\n address to,\\n uint256[] memory ids,\\n uint256[] memory amounts,\\n bytes memory data\\n ) internal virtual {\\n require(ids.length == amounts.length, \\\"ERC1155: ids and amounts length mismatch\\\");\\n require(to != address(0), \\\"ERC1155: transfer to the zero address\\\");\\n\\n address operator = _msgSender();\\n\\n _beforeTokenTransfer(operator, from, to, ids, amounts, data);\\n\\n for (uint256 i = 0; i < ids.length; ++i) {\\n uint256 id = ids[i];\\n uint256 amount = amounts[i];\\n\\n uint256 fromBalance = _balances[id][from];\\n require(fromBalance >= amount, \\\"ERC1155: insufficient balance for transfer\\\");\\n unchecked {\\n _balances[id][from] = fromBalance - amount;\\n }\\n _balances[id][to] += amount;\\n }\\n\\n emit TransferBatch(operator, from, to, ids, amounts);\\n\\n _afterTokenTransfer(operator, from, to, ids, amounts, data);\\n\\n _doSafeBatchTransferAcceptanceCheck(operator, from, to, ids, amounts, data);\\n }\\n\\n /**\\n * @dev Sets a new URI for all token types, by relying on the token type ID\\n * substitution mechanism\\n * https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP].\\n *\\n * By this mechanism, any occurrence of the `\\\\{id\\\\}` substring in either the\\n * URI or any of the amounts in the JSON file at said URI will be replaced by\\n * clients with the token type ID.\\n *\\n * For example, the `https://token-cdn-domain/\\\\{id\\\\}.json` URI would be\\n * interpreted by clients as\\n * `https://token-cdn-domain/000000000000000000000000000000000000000000000000000000000004cce0.json`\\n * for token type ID 0x4cce0.\\n *\\n * See {uri}.\\n *\\n * Because these URIs cannot be meaningfully represented by the {URI} event,\\n * this function emits no events.\\n */\\n function _setURI(string memory newuri) internal virtual {\\n _uri = newuri;\\n }\\n\\n /**\\n * @dev Creates `amount` tokens of token type `id`, and assigns them to `to`.\\n *\\n * Emits a {TransferSingle} event.\\n *\\n * Requirements:\\n *\\n * - `to` cannot be the zero address.\\n * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the\\n * acceptance magic value.\\n */\\n function _mint(address to, uint256 id, uint256 amount, bytes memory data) internal virtual {\\n require(to != address(0), \\\"ERC1155: mint to the zero address\\\");\\n\\n address operator = _msgSender();\\n uint256[] memory ids = _asSingletonArray(id);\\n uint256[] memory amounts = _asSingletonArray(amount);\\n\\n _beforeTokenTransfer(operator, address(0), to, ids, amounts, data);\\n\\n _balances[id][to] += amount;\\n emit TransferSingle(operator, address(0), to, id, amount);\\n\\n _afterTokenTransfer(operator, address(0), to, ids, amounts, data);\\n\\n _doSafeTransferAcceptanceCheck(operator, address(0), to, id, amount, data);\\n }\\n\\n /**\\n * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_mint}.\\n *\\n * Emits a {TransferBatch} event.\\n *\\n * Requirements:\\n *\\n * - `ids` and `amounts` must have the same length.\\n * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the\\n * acceptance magic value.\\n */\\n function _mintBatch(\\n address to,\\n uint256[] memory ids,\\n uint256[] memory amounts,\\n bytes memory data\\n ) internal virtual {\\n require(to != address(0), \\\"ERC1155: mint to the zero address\\\");\\n require(ids.length == amounts.length, \\\"ERC1155: ids and amounts length mismatch\\\");\\n\\n address operator = _msgSender();\\n\\n _beforeTokenTransfer(operator, address(0), to, ids, amounts, data);\\n\\n for (uint256 i = 0; i < ids.length; i++) {\\n _balances[ids[i]][to] += amounts[i];\\n }\\n\\n emit TransferBatch(operator, address(0), to, ids, amounts);\\n\\n _afterTokenTransfer(operator, address(0), to, ids, amounts, data);\\n\\n _doSafeBatchTransferAcceptanceCheck(operator, address(0), to, ids, amounts, data);\\n }\\n\\n /**\\n * @dev Destroys `amount` tokens of token type `id` from `from`\\n *\\n * Emits a {TransferSingle} event.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `from` must have at least `amount` tokens of token type `id`.\\n */\\n function _burn(address from, uint256 id, uint256 amount) internal virtual {\\n require(from != address(0), \\\"ERC1155: burn from the zero address\\\");\\n\\n address operator = _msgSender();\\n uint256[] memory ids = _asSingletonArray(id);\\n uint256[] memory amounts = _asSingletonArray(amount);\\n\\n _beforeTokenTransfer(operator, from, address(0), ids, amounts, \\\"\\\");\\n\\n uint256 fromBalance = _balances[id][from];\\n require(fromBalance >= amount, \\\"ERC1155: burn amount exceeds balance\\\");\\n unchecked {\\n _balances[id][from] = fromBalance - amount;\\n }\\n\\n emit TransferSingle(operator, from, address(0), id, amount);\\n\\n _afterTokenTransfer(operator, from, address(0), ids, amounts, \\\"\\\");\\n }\\n\\n /**\\n * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_burn}.\\n *\\n * Emits a {TransferBatch} event.\\n *\\n * Requirements:\\n *\\n * - `ids` and `amounts` must have the same length.\\n */\\n function _burnBatch(address from, uint256[] memory ids, uint256[] memory amounts) internal virtual {\\n require(from != address(0), \\\"ERC1155: burn from the zero address\\\");\\n require(ids.length == amounts.length, \\\"ERC1155: ids and amounts length mismatch\\\");\\n\\n address operator = _msgSender();\\n\\n _beforeTokenTransfer(operator, from, address(0), ids, amounts, \\\"\\\");\\n\\n for (uint256 i = 0; i < ids.length; i++) {\\n uint256 id = ids[i];\\n uint256 amount = amounts[i];\\n\\n uint256 fromBalance = _balances[id][from];\\n require(fromBalance >= amount, \\\"ERC1155: burn amount exceeds balance\\\");\\n unchecked {\\n _balances[id][from] = fromBalance - amount;\\n }\\n }\\n\\n emit TransferBatch(operator, from, address(0), ids, amounts);\\n\\n _afterTokenTransfer(operator, from, address(0), ids, amounts, \\\"\\\");\\n }\\n\\n /**\\n * @dev Approve `operator` to operate on all of `owner` tokens\\n *\\n * Emits an {ApprovalForAll} event.\\n */\\n function _setApprovalForAll(address owner, address operator, bool approved) internal virtual {\\n require(owner != operator, \\\"ERC1155: setting approval status for self\\\");\\n _operatorApprovals[owner][operator] = approved;\\n emit ApprovalForAll(owner, operator, approved);\\n }\\n\\n /**\\n * @dev Hook that is called before any token transfer. This includes minting\\n * and burning, as well as batched variants.\\n *\\n * The same hook is called on both single and batched variants. For single\\n * transfers, the length of the `ids` and `amounts` arrays will be 1.\\n *\\n * Calling conditions (for each `id` and `amount` pair):\\n *\\n * - When `from` and `to` are both non-zero, `amount` of ``from``'s tokens\\n * of token type `id` will be transferred to `to`.\\n * - When `from` is zero, `amount` tokens of token type `id` will be minted\\n * for `to`.\\n * - when `to` is zero, `amount` of ``from``'s tokens of token type `id`\\n * will be burned.\\n * - `from` and `to` are never both zero.\\n * - `ids` and `amounts` have the same, non-zero length.\\n *\\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n */\\n function _beforeTokenTransfer(\\n address operator,\\n address from,\\n address to,\\n uint256[] memory ids,\\n uint256[] memory amounts,\\n bytes memory data\\n ) internal virtual {}\\n\\n /**\\n * @dev Hook that is called after any token transfer. This includes minting\\n * and burning, as well as batched variants.\\n *\\n * The same hook is called on both single and batched variants. For single\\n * transfers, the length of the `id` and `amount` arrays will be 1.\\n *\\n * Calling conditions (for each `id` and `amount` pair):\\n *\\n * - When `from` and `to` are both non-zero, `amount` of ``from``'s tokens\\n * of token type `id` will be transferred to `to`.\\n * - When `from` is zero, `amount` tokens of token type `id` will be minted\\n * for `to`.\\n * - when `to` is zero, `amount` of ``from``'s tokens of token type `id`\\n * will be burned.\\n * - `from` and `to` are never both zero.\\n * - `ids` and `amounts` have the same, non-zero length.\\n *\\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n */\\n function _afterTokenTransfer(\\n address operator,\\n address from,\\n address to,\\n uint256[] memory ids,\\n uint256[] memory amounts,\\n bytes memory data\\n ) internal virtual {}\\n\\n function _doSafeTransferAcceptanceCheck(\\n address operator,\\n address from,\\n address to,\\n uint256 id,\\n uint256 amount,\\n bytes memory data\\n ) private {\\n if (to.isContract()) {\\n try IERC1155Receiver(to).onERC1155Received(operator, from, id, amount, data) returns (bytes4 response) {\\n if (response != IERC1155Receiver.onERC1155Received.selector) {\\n revert(\\\"ERC1155: ERC1155Receiver rejected tokens\\\");\\n }\\n } catch Error(string memory reason) {\\n revert(reason);\\n } catch {\\n revert(\\\"ERC1155: transfer to non-ERC1155Receiver implementer\\\");\\n }\\n }\\n }\\n\\n function _doSafeBatchTransferAcceptanceCheck(\\n address operator,\\n address from,\\n address to,\\n uint256[] memory ids,\\n uint256[] memory amounts,\\n bytes memory data\\n ) private {\\n if (to.isContract()) {\\n try IERC1155Receiver(to).onERC1155BatchReceived(operator, from, ids, amounts, data) returns (\\n bytes4 response\\n ) {\\n if (response != IERC1155Receiver.onERC1155BatchReceived.selector) {\\n revert(\\\"ERC1155: ERC1155Receiver rejected tokens\\\");\\n }\\n } catch Error(string memory reason) {\\n revert(reason);\\n } catch {\\n revert(\\\"ERC1155: transfer to non-ERC1155Receiver implementer\\\");\\n }\\n }\\n }\\n\\n function _asSingletonArray(uint256 element) private pure returns (uint256[] memory) {\\n uint256[] memory array = new uint256[](1);\\n array[0] = element;\\n\\n return array;\\n }\\n}\\n\",\"keccak256\":\"0x81149353c99ccf8ff18af7701bc3f38665c7a97e344cdc0d27f927f03d22af0e\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC1155/IERC1155.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC1155/IERC1155.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC1155 compliant contract, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-1155[EIP].\\n *\\n * _Available since v3.1._\\n */\\ninterface IERC1155 is IERC165 {\\n /**\\n * @dev Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`.\\n */\\n event TransferSingle(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value);\\n\\n /**\\n * @dev Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all\\n * transfers.\\n */\\n event TransferBatch(\\n address indexed operator,\\n address indexed from,\\n address indexed to,\\n uint256[] ids,\\n uint256[] values\\n );\\n\\n /**\\n * @dev Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to\\n * `approved`.\\n */\\n event ApprovalForAll(address indexed account, address indexed operator, bool approved);\\n\\n /**\\n * @dev Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI.\\n *\\n * If an {URI} event was emitted for `id`, the standard\\n * https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value\\n * returned by {IERC1155MetadataURI-uri}.\\n */\\n event URI(string value, uint256 indexed id);\\n\\n /**\\n * @dev Returns the amount of tokens of token type `id` owned by `account`.\\n *\\n * Requirements:\\n *\\n * - `account` cannot be the zero address.\\n */\\n function balanceOf(address account, uint256 id) external view returns (uint256);\\n\\n /**\\n * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}.\\n *\\n * Requirements:\\n *\\n * - `accounts` and `ids` must have the same length.\\n */\\n function balanceOfBatch(\\n address[] calldata accounts,\\n uint256[] calldata ids\\n ) external view returns (uint256[] memory);\\n\\n /**\\n * @dev Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`,\\n *\\n * Emits an {ApprovalForAll} event.\\n *\\n * Requirements:\\n *\\n * - `operator` cannot be the caller.\\n */\\n function setApprovalForAll(address operator, bool approved) external;\\n\\n /**\\n * @dev Returns true if `operator` is approved to transfer ``account``'s tokens.\\n *\\n * See {setApprovalForAll}.\\n */\\n function isApprovedForAll(address account, address operator) external view returns (bool);\\n\\n /**\\n * @dev Transfers `amount` tokens of token type `id` from `from` to `to`.\\n *\\n * Emits a {TransferSingle} event.\\n *\\n * Requirements:\\n *\\n * - `to` cannot be the zero address.\\n * - If the caller is not `from`, it must have been approved to spend ``from``'s tokens via {setApprovalForAll}.\\n * - `from` must have a balance of tokens of type `id` of at least `amount`.\\n * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the\\n * acceptance magic value.\\n */\\n function safeTransferFrom(address from, address to, uint256 id, uint256 amount, bytes calldata data) external;\\n\\n /**\\n * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}.\\n *\\n * Emits a {TransferBatch} event.\\n *\\n * Requirements:\\n *\\n * - `ids` and `amounts` must have the same length.\\n * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the\\n * acceptance magic value.\\n */\\n function safeBatchTransferFrom(\\n address from,\\n address to,\\n uint256[] calldata ids,\\n uint256[] calldata amounts,\\n bytes calldata data\\n ) external;\\n}\\n\",\"keccak256\":\"0xcab667ddad478ff0d39c2053ca77fac778af8483c18ab07d810277b4216fd582\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC1155/IERC1155Receiver.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev _Available since v3.1._\\n */\\ninterface IERC1155Receiver is IERC165 {\\n /**\\n * @dev Handles the receipt of a single ERC1155 token type. This function is\\n * called at the end of a `safeTransferFrom` after the balance has been updated.\\n *\\n * NOTE: To accept the transfer, this must return\\n * `bytes4(keccak256(\\\"onERC1155Received(address,address,uint256,uint256,bytes)\\\"))`\\n * (i.e. 0xf23a6e61, or its own function selector).\\n *\\n * @param operator The address which initiated the transfer (i.e. msg.sender)\\n * @param from The address which previously owned the token\\n * @param id The ID of the token being transferred\\n * @param value The amount of tokens being transferred\\n * @param data Additional data with no specified format\\n * @return `bytes4(keccak256(\\\"onERC1155Received(address,address,uint256,uint256,bytes)\\\"))` if transfer is allowed\\n */\\n function onERC1155Received(\\n address operator,\\n address from,\\n uint256 id,\\n uint256 value,\\n bytes calldata data\\n ) external returns (bytes4);\\n\\n /**\\n * @dev Handles the receipt of a multiple ERC1155 token types. This function\\n * is called at the end of a `safeBatchTransferFrom` after the balances have\\n * been updated.\\n *\\n * NOTE: To accept the transfer(s), this must return\\n * `bytes4(keccak256(\\\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\\\"))`\\n * (i.e. 0xbc197c81, or its own function selector).\\n *\\n * @param operator The address which initiated the batch transfer (i.e. msg.sender)\\n * @param from The address which previously owned the token\\n * @param ids An array containing ids of each token being transferred (order and length must match values array)\\n * @param values An array containing amounts of each token being transferred (order and length must match ids array)\\n * @param data Additional data with no specified format\\n * @return `bytes4(keccak256(\\\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\\\"))` if transfer is allowed\\n */\\n function onERC1155BatchReceived(\\n address operator,\\n address from,\\n uint256[] calldata ids,\\n uint256[] calldata values,\\n bytes calldata data\\n ) external returns (bytes4);\\n}\\n\",\"keccak256\":\"0xeb373f1fdc7b755c6a750123a9b9e3a8a02c1470042fd6505d875000a80bde0b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC1155/extensions/IERC1155MetadataURI.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC1155.sol\\\";\\n\\n/**\\n * @dev Interface of the optional ERC1155MetadataExtension interface, as defined\\n * in the https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[EIP].\\n *\\n * _Available since v3.1._\\n */\\ninterface IERC1155MetadataURI is IERC1155 {\\n /**\\n * @dev Returns the URI for token type `id`.\\n *\\n * If the `\\\\{id\\\\}` substring is present in the URI, it must be replaced by\\n * clients with the actual token type ID.\\n */\\n function uri(uint256 id) external view returns (string memory);\\n}\\n\",\"keccak256\":\"0xa66d18b9a85458d28fc3304717964502ae36f7f8a2ff35bc83f6f85d74b03574\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n function _contextSuffixLength() internal view virtual returns (uint256) {\\n return 0;\\n }\\n}\\n\",\"keccak256\":\"0xa92e4fa126feb6907daa0513ddd816b2eb91f30a808de54f63c17d0e162c3439\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165 is IERC165 {\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165).interfaceId;\\n }\\n}\\n\",\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"src/mocks/token/ERC1155Mock.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ERC1155} from \\\"@openzeppelin/contracts/token/ERC1155/ERC1155.sol\\\";\\n\\n/// @notice A mock [ERC-1155](https://eips.ethereum.org/EIPS/eip-1155) token that can be minted and burned by everyone.\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract ERC1155Mock is ERC1155 {\\n constructor(string memory _uri) ERC1155(_uri) {}\\n\\n function mint(address account, uint256 tokenId, uint256 amount) public {\\n _mint(account, tokenId, amount, bytes(\\\"\\\"));\\n }\\n\\n function burn(address account, uint256 tokenId, uint256 amount) public {\\n _burn(account, tokenId, amount);\\n }\\n}\\n\",\"keccak256\":\"0x2054da54ffb8f618c2b76d13f172a3121ab4149985c1d75918fb01c572c4b5ba\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[{"astId":5781,"contract":"src/mocks/token/ERC1155Mock.sol:ERC1155Mock","label":"_balances","offset":0,"slot":"0","type":"t_mapping(t_uint256,t_mapping(t_address,t_uint256))"},{"astId":5787,"contract":"src/mocks/token/ERC1155Mock.sol:ERC1155Mock","label":"_operatorApprovals","offset":0,"slot":"1","type":"t_mapping(t_address,t_mapping(t_address,t_bool))"},{"astId":5789,"contract":"src/mocks/token/ERC1155Mock.sol:ERC1155Mock","label":"_uri","offset":0,"slot":"2","type":"t_string_storage"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_mapping(t_address,t_bool)":{"encoding":"mapping","key":"t_address","label":"mapping(address => bool)","numberOfBytes":"32","value":"t_bool"},"t_mapping(t_address,t_mapping(t_address,t_bool))":{"encoding":"mapping","key":"t_address","label":"mapping(address => mapping(address => bool))","numberOfBytes":"32","value":"t_mapping(t_address,t_bool)"},"t_mapping(t_address,t_uint256)":{"encoding":"mapping","key":"t_address","label":"mapping(address => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_mapping(t_uint256,t_mapping(t_address,t_uint256))":{"encoding":"mapping","key":"t_uint256","label":"mapping(uint256 => mapping(address => uint256))","numberOfBytes":"32","value":"t_mapping(t_address,t_uint256)"},"t_string_storage":{"encoding":"bytes","label":"string","numberOfBytes":"32"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"userdoc":{"kind":"user","methods":{},"notice":"A mock [ERC-1155](https://eips.ethereum.org/EIPS/eip-1155) token that can be minted and burned by everyone.","version":1}}},"src/mocks/token/ERC20Mock.sol":{"ERC20Mock":{"abi":[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals_","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"_decimals","type":"uint8"}],"name":"setDecimals","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"DO NOT USE IN PRODUCTION!","kind":"dev","methods":{"allowance(address,address)":{"details":"See {IERC20-allowance}."},"approve(address,uint256)":{"details":"See {IERC20-approve}. NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address."},"balanceOf(address)":{"details":"See {IERC20-balanceOf}."},"decimals()":{"details":"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}."},"decreaseAllowance(address,uint256)":{"details":"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`."},"increaseAllowance(address,uint256)":{"details":"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address."},"name()":{"details":"Returns the name of the token."},"symbol()":{"details":"Returns the symbol of the token, usually a shorter version of the name."},"totalSupply()":{"details":"See {IERC20-totalSupply}."},"transfer(address,uint256)":{"details":"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `amount`."},"transferFrom(address,address,uint256)":{"details":"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `amount`. - the caller must have allowance for ``from``'s tokens of at least `amount`."}},"version":1},"evm":{"bytecode":{"functionDebugData":{"@_12702":{"entryPoint":null,"id":12702,"parameterSlots":2,"returnSlots":0},"@_7201":{"entryPoint":null,"id":7201,"parameterSlots":2,"returnSlots":0},"abi_decode_string_fromMemory":{"entryPoint":129,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr_fromMemory":{"entryPoint":304,"id":null,"parameterSlots":2,"returnSlots":2},"array_dataslot_string_storage":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"clean_up_bytearray_end_slots_string_storage":{"entryPoint":470,"id":null,"parameterSlots":3,"returnSlots":0},"copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage":{"entryPoint":553,"id":null,"parameterSlots":2,"returnSlots":0},"extract_byte_array_length":{"entryPoint":410,"id":null,"parameterSlots":1,"returnSlots":1},"extract_used_part_and_set_length_of_short_byte_array":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"panic_error_0x41":{"entryPoint":107,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:4144:92","statements":[{"nodeType":"YulBlock","src":"6:3:92","statements":[]},{"body":{"nodeType":"YulBlock","src":"46:95:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"63:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"70:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"75:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"66:3:92"},"nodeType":"YulFunctionCall","src":"66:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"56:6:92"},"nodeType":"YulFunctionCall","src":"56:31:92"},"nodeType":"YulExpressionStatement","src":"56:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"103:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"106:4:92","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"96:6:92"},"nodeType":"YulFunctionCall","src":"96:15:92"},"nodeType":"YulExpressionStatement","src":"96:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"127:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"130:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"120:6:92"},"nodeType":"YulFunctionCall","src":"120:15:92"},"nodeType":"YulExpressionStatement","src":"120:15:92"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"14:127:92"},{"body":{"nodeType":"YulBlock","src":"210:776:92","statements":[{"body":{"nodeType":"YulBlock","src":"259:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"268:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"271:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"261:6:92"},"nodeType":"YulFunctionCall","src":"261:12:92"},"nodeType":"YulExpressionStatement","src":"261:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"238:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"246:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"234:3:92"},"nodeType":"YulFunctionCall","src":"234:17:92"},{"name":"end","nodeType":"YulIdentifier","src":"253:3:92"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"230:3:92"},"nodeType":"YulFunctionCall","src":"230:27:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"223:6:92"},"nodeType":"YulFunctionCall","src":"223:35:92"},"nodeType":"YulIf","src":"220:55:92"},{"nodeType":"YulVariableDeclaration","src":"284:23:92","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"300:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"294:5:92"},"nodeType":"YulFunctionCall","src":"294:13:92"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"288:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"316:28:92","value":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"334:2:92","type":"","value":"64"},{"kind":"number","nodeType":"YulLiteral","src":"338:1:92","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"330:3:92"},"nodeType":"YulFunctionCall","src":"330:10:92"},{"kind":"number","nodeType":"YulLiteral","src":"342:1:92","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"326:3:92"},"nodeType":"YulFunctionCall","src":"326:18:92"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"320:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"367:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"369:16:92"},"nodeType":"YulFunctionCall","src":"369:18:92"},"nodeType":"YulExpressionStatement","src":"369:18:92"}]},"condition":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"359:2:92"},{"name":"_2","nodeType":"YulIdentifier","src":"363:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"356:2:92"},"nodeType":"YulFunctionCall","src":"356:10:92"},"nodeType":"YulIf","src":"353:36:92"},{"nodeType":"YulVariableDeclaration","src":"398:17:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"412:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"408:3:92"},"nodeType":"YulFunctionCall","src":"408:7:92"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"402:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"424:23:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"444:2:92","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"438:5:92"},"nodeType":"YulFunctionCall","src":"438:9:92"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"428:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"456:71:92","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"478:6:92"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"502:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"506:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"498:3:92"},"nodeType":"YulFunctionCall","src":"498:13:92"},{"name":"_3","nodeType":"YulIdentifier","src":"513:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"494:3:92"},"nodeType":"YulFunctionCall","src":"494:22:92"},{"kind":"number","nodeType":"YulLiteral","src":"518:2:92","type":"","value":"63"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"490:3:92"},"nodeType":"YulFunctionCall","src":"490:31:92"},{"name":"_3","nodeType":"YulIdentifier","src":"523:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"486:3:92"},"nodeType":"YulFunctionCall","src":"486:40:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"474:3:92"},"nodeType":"YulFunctionCall","src":"474:53:92"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"460:10:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"586:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"588:16:92"},"nodeType":"YulFunctionCall","src":"588:18:92"},"nodeType":"YulExpressionStatement","src":"588:18:92"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"545:10:92"},{"name":"_2","nodeType":"YulIdentifier","src":"557:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"542:2:92"},"nodeType":"YulFunctionCall","src":"542:18:92"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"565:10:92"},{"name":"memPtr","nodeType":"YulIdentifier","src":"577:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"562:2:92"},"nodeType":"YulFunctionCall","src":"562:22:92"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"539:2:92"},"nodeType":"YulFunctionCall","src":"539:46:92"},"nodeType":"YulIf","src":"536:72:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"624:2:92","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"628:10:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"617:6:92"},"nodeType":"YulFunctionCall","src":"617:22:92"},"nodeType":"YulExpressionStatement","src":"617:22:92"},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"655:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"663:2:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"648:6:92"},"nodeType":"YulFunctionCall","src":"648:18:92"},"nodeType":"YulExpressionStatement","src":"648:18:92"},{"nodeType":"YulVariableDeclaration","src":"675:14:92","value":{"kind":"number","nodeType":"YulLiteral","src":"685:4:92","type":"","value":"0x20"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"679:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"735:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"744:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"747:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"737:6:92"},"nodeType":"YulFunctionCall","src":"737:12:92"},"nodeType":"YulExpressionStatement","src":"737:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"712:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"720:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"708:3:92"},"nodeType":"YulFunctionCall","src":"708:15:92"},{"name":"_4","nodeType":"YulIdentifier","src":"725:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"704:3:92"},"nodeType":"YulFunctionCall","src":"704:24:92"},{"name":"end","nodeType":"YulIdentifier","src":"730:3:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"701:2:92"},"nodeType":"YulFunctionCall","src":"701:33:92"},"nodeType":"YulIf","src":"698:53:92"},{"nodeType":"YulVariableDeclaration","src":"760:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"769:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"764:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"825:87:92","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"854:6:92"},{"name":"i","nodeType":"YulIdentifier","src":"862:1:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"850:3:92"},"nodeType":"YulFunctionCall","src":"850:14:92"},{"name":"_4","nodeType":"YulIdentifier","src":"866:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"846:3:92"},"nodeType":"YulFunctionCall","src":"846:23:92"},{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"885:6:92"},{"name":"i","nodeType":"YulIdentifier","src":"893:1:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"881:3:92"},"nodeType":"YulFunctionCall","src":"881:14:92"},{"name":"_4","nodeType":"YulIdentifier","src":"897:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"877:3:92"},"nodeType":"YulFunctionCall","src":"877:23:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"871:5:92"},"nodeType":"YulFunctionCall","src":"871:30:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"839:6:92"},"nodeType":"YulFunctionCall","src":"839:63:92"},"nodeType":"YulExpressionStatement","src":"839:63:92"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"790:1:92"},{"name":"_1","nodeType":"YulIdentifier","src":"793:2:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"787:2:92"},"nodeType":"YulFunctionCall","src":"787:9:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"797:19:92","statements":[{"nodeType":"YulAssignment","src":"799:15:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"808:1:92"},{"name":"_4","nodeType":"YulIdentifier","src":"811:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"804:3:92"},"nodeType":"YulFunctionCall","src":"804:10:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"799:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"783:3:92","statements":[]},"src":"779:133:92"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"936:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"944:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"932:3:92"},"nodeType":"YulFunctionCall","src":"932:15:92"},{"name":"_4","nodeType":"YulIdentifier","src":"949:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"928:3:92"},"nodeType":"YulFunctionCall","src":"928:24:92"},{"kind":"number","nodeType":"YulLiteral","src":"954:1:92","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"921:6:92"},"nodeType":"YulFunctionCall","src":"921:35:92"},"nodeType":"YulExpressionStatement","src":"921:35:92"},{"nodeType":"YulAssignment","src":"965:15:92","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"974:6:92"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"965:5:92"}]}]},"name":"abi_decode_string_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"184:6:92","type":""},{"name":"end","nodeType":"YulTypedName","src":"192:3:92","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"200:5:92","type":""}],"src":"146:840:92"},{"body":{"nodeType":"YulBlock","src":"1109:444:92","statements":[{"body":{"nodeType":"YulBlock","src":"1155:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1164:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1167:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1157:6:92"},"nodeType":"YulFunctionCall","src":"1157:12:92"},"nodeType":"YulExpressionStatement","src":"1157:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1130:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"1139:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1126:3:92"},"nodeType":"YulFunctionCall","src":"1126:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"1151:2:92","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1122:3:92"},"nodeType":"YulFunctionCall","src":"1122:32:92"},"nodeType":"YulIf","src":"1119:52:92"},{"nodeType":"YulVariableDeclaration","src":"1180:30:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1200:9:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1194:5:92"},"nodeType":"YulFunctionCall","src":"1194:16:92"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1184:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"1219:28:92","value":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1237:2:92","type":"","value":"64"},{"kind":"number","nodeType":"YulLiteral","src":"1241:1:92","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1233:3:92"},"nodeType":"YulFunctionCall","src":"1233:10:92"},{"kind":"number","nodeType":"YulLiteral","src":"1245:1:92","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1229:3:92"},"nodeType":"YulFunctionCall","src":"1229:18:92"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"1223:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"1274:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1283:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1286:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1276:6:92"},"nodeType":"YulFunctionCall","src":"1276:12:92"},"nodeType":"YulExpressionStatement","src":"1276:12:92"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1262:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"1270:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1259:2:92"},"nodeType":"YulFunctionCall","src":"1259:14:92"},"nodeType":"YulIf","src":"1256:34:92"},{"nodeType":"YulAssignment","src":"1299:71:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1342:9:92"},{"name":"offset","nodeType":"YulIdentifier","src":"1353:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1338:3:92"},"nodeType":"YulFunctionCall","src":"1338:22:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1362:7:92"}],"functionName":{"name":"abi_decode_string_fromMemory","nodeType":"YulIdentifier","src":"1309:28:92"},"nodeType":"YulFunctionCall","src":"1309:61:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1299:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"1379:41:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1405:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1416:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1401:3:92"},"nodeType":"YulFunctionCall","src":"1401:18:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1395:5:92"},"nodeType":"YulFunctionCall","src":"1395:25:92"},"variables":[{"name":"offset_1","nodeType":"YulTypedName","src":"1383:8:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"1449:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1458:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1461:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1451:6:92"},"nodeType":"YulFunctionCall","src":"1451:12:92"},"nodeType":"YulExpressionStatement","src":"1451:12:92"}]},"condition":{"arguments":[{"name":"offset_1","nodeType":"YulIdentifier","src":"1435:8:92"},{"name":"_1","nodeType":"YulIdentifier","src":"1445:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1432:2:92"},"nodeType":"YulFunctionCall","src":"1432:16:92"},"nodeType":"YulIf","src":"1429:36:92"},{"nodeType":"YulAssignment","src":"1474:73:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1517:9:92"},{"name":"offset_1","nodeType":"YulIdentifier","src":"1528:8:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1513:3:92"},"nodeType":"YulFunctionCall","src":"1513:24:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1539:7:92"}],"functionName":{"name":"abi_decode_string_fromMemory","nodeType":"YulIdentifier","src":"1484:28:92"},"nodeType":"YulFunctionCall","src":"1484:63:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1474:6:92"}]}]},"name":"abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1067:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1078:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1090:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1098:6:92","type":""}],"src":"991:562:92"},{"body":{"nodeType":"YulBlock","src":"1613:325:92","statements":[{"nodeType":"YulAssignment","src":"1623:22:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1637:1:92","type":"","value":"1"},{"name":"data","nodeType":"YulIdentifier","src":"1640:4:92"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"1633:3:92"},"nodeType":"YulFunctionCall","src":"1633:12:92"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"1623:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"1654:38:92","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"1684:4:92"},{"kind":"number","nodeType":"YulLiteral","src":"1690:1:92","type":"","value":"1"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1680:3:92"},"nodeType":"YulFunctionCall","src":"1680:12:92"},"variables":[{"name":"outOfPlaceEncoding","nodeType":"YulTypedName","src":"1658:18:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"1731:31:92","statements":[{"nodeType":"YulAssignment","src":"1733:27:92","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"1747:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"1755:4:92","type":"","value":"0x7f"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1743:3:92"},"nodeType":"YulFunctionCall","src":"1743:17:92"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"1733:6:92"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"1711:18:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1704:6:92"},"nodeType":"YulFunctionCall","src":"1704:26:92"},"nodeType":"YulIf","src":"1701:61:92"},{"body":{"nodeType":"YulBlock","src":"1821:111:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1842:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1849:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"1854:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1845:3:92"},"nodeType":"YulFunctionCall","src":"1845:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1835:6:92"},"nodeType":"YulFunctionCall","src":"1835:31:92"},"nodeType":"YulExpressionStatement","src":"1835:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1886:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"1889:4:92","type":"","value":"0x22"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1879:6:92"},"nodeType":"YulFunctionCall","src":"1879:15:92"},"nodeType":"YulExpressionStatement","src":"1879:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1914:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1917:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1907:6:92"},"nodeType":"YulFunctionCall","src":"1907:15:92"},"nodeType":"YulExpressionStatement","src":"1907:15:92"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"1777:18:92"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"1800:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"1808:2:92","type":"","value":"32"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"1797:2:92"},"nodeType":"YulFunctionCall","src":"1797:14:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1774:2:92"},"nodeType":"YulFunctionCall","src":"1774:38:92"},"nodeType":"YulIf","src":"1771:161:92"}]},"name":"extract_byte_array_length","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"1593:4:92","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"1602:6:92","type":""}],"src":"1558:380:92"},{"body":{"nodeType":"YulBlock","src":"1999:65:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2016:1:92","type":"","value":"0"},{"name":"ptr","nodeType":"YulIdentifier","src":"2019:3:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2009:6:92"},"nodeType":"YulFunctionCall","src":"2009:14:92"},"nodeType":"YulExpressionStatement","src":"2009:14:92"},{"nodeType":"YulAssignment","src":"2032:26:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2050:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2053:4:92","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nodeType":"YulIdentifier","src":"2040:9:92"},"nodeType":"YulFunctionCall","src":"2040:18:92"},"variableNames":[{"name":"data","nodeType":"YulIdentifier","src":"2032:4:92"}]}]},"name":"array_dataslot_string_storage","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nodeType":"YulTypedName","src":"1982:3:92","type":""}],"returnVariables":[{"name":"data","nodeType":"YulTypedName","src":"1990:4:92","type":""}],"src":"1943:121:92"},{"body":{"nodeType":"YulBlock","src":"2150:464:92","statements":[{"body":{"nodeType":"YulBlock","src":"2183:425:92","statements":[{"nodeType":"YulVariableDeclaration","src":"2197:11:92","value":{"kind":"number","nodeType":"YulLiteral","src":"2207:1:92","type":"","value":"0"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"2201:2:92","type":""}]},{"expression":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"2228:2:92"},{"name":"array","nodeType":"YulIdentifier","src":"2232:5:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2221:6:92"},"nodeType":"YulFunctionCall","src":"2221:17:92"},"nodeType":"YulExpressionStatement","src":"2221:17:92"},{"nodeType":"YulVariableDeclaration","src":"2251:31:92","value":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"2273:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"2277:4:92","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nodeType":"YulIdentifier","src":"2263:9:92"},"nodeType":"YulFunctionCall","src":"2263:19:92"},"variables":[{"name":"data","nodeType":"YulTypedName","src":"2255:4:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2295:57:92","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"2318:4:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2328:1:92","type":"","value":"5"},{"arguments":[{"name":"startIndex","nodeType":"YulIdentifier","src":"2335:10:92"},{"kind":"number","nodeType":"YulLiteral","src":"2347:2:92","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2331:3:92"},"nodeType":"YulFunctionCall","src":"2331:19:92"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"2324:3:92"},"nodeType":"YulFunctionCall","src":"2324:27:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2314:3:92"},"nodeType":"YulFunctionCall","src":"2314:38:92"},"variables":[{"name":"deleteStart","nodeType":"YulTypedName","src":"2299:11:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"2389:23:92","statements":[{"nodeType":"YulAssignment","src":"2391:19:92","value":{"name":"data","nodeType":"YulIdentifier","src":"2406:4:92"},"variableNames":[{"name":"deleteStart","nodeType":"YulIdentifier","src":"2391:11:92"}]}]},"condition":{"arguments":[{"name":"startIndex","nodeType":"YulIdentifier","src":"2371:10:92"},{"kind":"number","nodeType":"YulLiteral","src":"2383:4:92","type":"","value":"0x20"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2368:2:92"},"nodeType":"YulFunctionCall","src":"2368:20:92"},"nodeType":"YulIf","src":"2365:47:92"},{"nodeType":"YulVariableDeclaration","src":"2425:41:92","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"2439:4:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2449:1:92","type":"","value":"5"},{"arguments":[{"name":"len","nodeType":"YulIdentifier","src":"2456:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"2461:2:92","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2452:3:92"},"nodeType":"YulFunctionCall","src":"2452:12:92"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"2445:3:92"},"nodeType":"YulFunctionCall","src":"2445:20:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2435:3:92"},"nodeType":"YulFunctionCall","src":"2435:31:92"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"2429:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2479:24:92","value":{"name":"deleteStart","nodeType":"YulIdentifier","src":"2492:11:92"},"variables":[{"name":"start","nodeType":"YulTypedName","src":"2483:5:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"2577:21:92","statements":[{"expression":{"arguments":[{"name":"start","nodeType":"YulIdentifier","src":"2586:5:92"},{"name":"_1","nodeType":"YulIdentifier","src":"2593:2:92"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"2579:6:92"},"nodeType":"YulFunctionCall","src":"2579:17:92"},"nodeType":"YulExpressionStatement","src":"2579:17:92"}]},"condition":{"arguments":[{"name":"start","nodeType":"YulIdentifier","src":"2527:5:92"},{"name":"_2","nodeType":"YulIdentifier","src":"2534:2:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2524:2:92"},"nodeType":"YulFunctionCall","src":"2524:13:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"2538:26:92","statements":[{"nodeType":"YulAssignment","src":"2540:22:92","value":{"arguments":[{"name":"start","nodeType":"YulIdentifier","src":"2553:5:92"},{"kind":"number","nodeType":"YulLiteral","src":"2560:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2549:3:92"},"nodeType":"YulFunctionCall","src":"2549:13:92"},"variableNames":[{"name":"start","nodeType":"YulIdentifier","src":"2540:5:92"}]}]},"pre":{"nodeType":"YulBlock","src":"2520:3:92","statements":[]},"src":"2516:82:92"}]},"condition":{"arguments":[{"name":"len","nodeType":"YulIdentifier","src":"2166:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"2171:2:92","type":"","value":"31"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2163:2:92"},"nodeType":"YulFunctionCall","src":"2163:11:92"},"nodeType":"YulIf","src":"2160:448:92"}]},"name":"clean_up_bytearray_end_slots_string_storage","nodeType":"YulFunctionDefinition","parameters":[{"name":"array","nodeType":"YulTypedName","src":"2122:5:92","type":""},{"name":"len","nodeType":"YulTypedName","src":"2129:3:92","type":""},{"name":"startIndex","nodeType":"YulTypedName","src":"2134:10:92","type":""}],"src":"2069:545:92"},{"body":{"nodeType":"YulBlock","src":"2704:81:92","statements":[{"nodeType":"YulAssignment","src":"2714:65:92","value":{"arguments":[{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"2729:4:92"},{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2747:1:92","type":"","value":"3"},{"name":"len","nodeType":"YulIdentifier","src":"2750:3:92"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2743:3:92"},"nodeType":"YulFunctionCall","src":"2743:11:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2760:1:92","type":"","value":"0"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"2756:3:92"},"nodeType":"YulFunctionCall","src":"2756:6:92"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"2739:3:92"},"nodeType":"YulFunctionCall","src":"2739:24:92"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"2735:3:92"},"nodeType":"YulFunctionCall","src":"2735:29:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2725:3:92"},"nodeType":"YulFunctionCall","src":"2725:40:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2771:1:92","type":"","value":"1"},{"name":"len","nodeType":"YulIdentifier","src":"2774:3:92"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2767:3:92"},"nodeType":"YulFunctionCall","src":"2767:11:92"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"2722:2:92"},"nodeType":"YulFunctionCall","src":"2722:57:92"},"variableNames":[{"name":"used","nodeType":"YulIdentifier","src":"2714:4:92"}]}]},"name":"extract_used_part_and_set_length_of_short_byte_array","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"2681:4:92","type":""},{"name":"len","nodeType":"YulTypedName","src":"2687:3:92","type":""}],"returnVariables":[{"name":"used","nodeType":"YulTypedName","src":"2695:4:92","type":""}],"src":"2619:166:92"},{"body":{"nodeType":"YulBlock","src":"2886:1256:92","statements":[{"nodeType":"YulVariableDeclaration","src":"2896:24:92","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"2916:3:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2910:5:92"},"nodeType":"YulFunctionCall","src":"2910:10:92"},"variables":[{"name":"newLen","nodeType":"YulTypedName","src":"2900:6:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"2963:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"2965:16:92"},"nodeType":"YulFunctionCall","src":"2965:18:92"},"nodeType":"YulExpressionStatement","src":"2965:18:92"}]},"condition":{"arguments":[{"name":"newLen","nodeType":"YulIdentifier","src":"2935:6:92"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2951:2:92","type":"","value":"64"},{"kind":"number","nodeType":"YulLiteral","src":"2955:1:92","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2947:3:92"},"nodeType":"YulFunctionCall","src":"2947:10:92"},{"kind":"number","nodeType":"YulLiteral","src":"2959:1:92","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2943:3:92"},"nodeType":"YulFunctionCall","src":"2943:18:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2932:2:92"},"nodeType":"YulFunctionCall","src":"2932:30:92"},"nodeType":"YulIf","src":"2929:56:92"},{"expression":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"3038:4:92"},{"arguments":[{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"3076:4:92"}],"functionName":{"name":"sload","nodeType":"YulIdentifier","src":"3070:5:92"},"nodeType":"YulFunctionCall","src":"3070:11:92"}],"functionName":{"name":"extract_byte_array_length","nodeType":"YulIdentifier","src":"3044:25:92"},"nodeType":"YulFunctionCall","src":"3044:38:92"},{"name":"newLen","nodeType":"YulIdentifier","src":"3084:6:92"}],"functionName":{"name":"clean_up_bytearray_end_slots_string_storage","nodeType":"YulIdentifier","src":"2994:43:92"},"nodeType":"YulFunctionCall","src":"2994:97:92"},"nodeType":"YulExpressionStatement","src":"2994:97:92"},{"nodeType":"YulVariableDeclaration","src":"3100:18:92","value":{"kind":"number","nodeType":"YulLiteral","src":"3117:1:92","type":"","value":"0"},"variables":[{"name":"srcOffset","nodeType":"YulTypedName","src":"3104:9:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3127:23:92","value":{"kind":"number","nodeType":"YulLiteral","src":"3146:4:92","type":"","value":"0x20"},"variables":[{"name":"srcOffset_1","nodeType":"YulTypedName","src":"3131:11:92","type":""}]},{"nodeType":"YulAssignment","src":"3159:24:92","value":{"name":"srcOffset_1","nodeType":"YulIdentifier","src":"3172:11:92"},"variableNames":[{"name":"srcOffset","nodeType":"YulIdentifier","src":"3159:9:92"}]},{"cases":[{"body":{"nodeType":"YulBlock","src":"3229:656:92","statements":[{"nodeType":"YulVariableDeclaration","src":"3243:35:92","value":{"arguments":[{"name":"newLen","nodeType":"YulIdentifier","src":"3262:6:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3274:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"3270:3:92"},"nodeType":"YulFunctionCall","src":"3270:7:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3258:3:92"},"nodeType":"YulFunctionCall","src":"3258:20:92"},"variables":[{"name":"loopEnd","nodeType":"YulTypedName","src":"3247:7:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3291:49:92","value":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"3335:4:92"}],"functionName":{"name":"array_dataslot_string_storage","nodeType":"YulIdentifier","src":"3305:29:92"},"nodeType":"YulFunctionCall","src":"3305:35:92"},"variables":[{"name":"dstPtr","nodeType":"YulTypedName","src":"3295:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3353:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"3362:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"3357:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"3440:172:92","statements":[{"expression":{"arguments":[{"name":"dstPtr","nodeType":"YulIdentifier","src":"3465:6:92"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"3483:3:92"},{"name":"srcOffset","nodeType":"YulIdentifier","src":"3488:9:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3479:3:92"},"nodeType":"YulFunctionCall","src":"3479:19:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3473:5:92"},"nodeType":"YulFunctionCall","src":"3473:26:92"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"3458:6:92"},"nodeType":"YulFunctionCall","src":"3458:42:92"},"nodeType":"YulExpressionStatement","src":"3458:42:92"},{"nodeType":"YulAssignment","src":"3517:24:92","value":{"arguments":[{"name":"dstPtr","nodeType":"YulIdentifier","src":"3531:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"3539:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3527:3:92"},"nodeType":"YulFunctionCall","src":"3527:14:92"},"variableNames":[{"name":"dstPtr","nodeType":"YulIdentifier","src":"3517:6:92"}]},{"nodeType":"YulAssignment","src":"3558:40:92","value":{"arguments":[{"name":"srcOffset","nodeType":"YulIdentifier","src":"3575:9:92"},{"name":"srcOffset_1","nodeType":"YulIdentifier","src":"3586:11:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3571:3:92"},"nodeType":"YulFunctionCall","src":"3571:27:92"},"variableNames":[{"name":"srcOffset","nodeType":"YulIdentifier","src":"3558:9:92"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3387:1:92"},{"name":"loopEnd","nodeType":"YulIdentifier","src":"3390:7:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"3384:2:92"},"nodeType":"YulFunctionCall","src":"3384:14:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"3399:28:92","statements":[{"nodeType":"YulAssignment","src":"3401:24:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3410:1:92"},{"name":"srcOffset_1","nodeType":"YulIdentifier","src":"3413:11:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3406:3:92"},"nodeType":"YulFunctionCall","src":"3406:19:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"3401:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"3380:3:92","statements":[]},"src":"3376:236:92"},{"body":{"nodeType":"YulBlock","src":"3660:166:92","statements":[{"nodeType":"YulVariableDeclaration","src":"3678:43:92","value":{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"3705:3:92"},{"name":"srcOffset","nodeType":"YulIdentifier","src":"3710:9:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3701:3:92"},"nodeType":"YulFunctionCall","src":"3701:19:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3695:5:92"},"nodeType":"YulFunctionCall","src":"3695:26:92"},"variables":[{"name":"lastValue","nodeType":"YulTypedName","src":"3682:9:92","type":""}]},{"expression":{"arguments":[{"name":"dstPtr","nodeType":"YulIdentifier","src":"3745:6:92"},{"arguments":[{"name":"lastValue","nodeType":"YulIdentifier","src":"3757:9:92"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3784:1:92","type":"","value":"3"},{"name":"newLen","nodeType":"YulIdentifier","src":"3787:6:92"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"3780:3:92"},"nodeType":"YulFunctionCall","src":"3780:14:92"},{"kind":"number","nodeType":"YulLiteral","src":"3796:3:92","type":"","value":"248"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3776:3:92"},"nodeType":"YulFunctionCall","src":"3776:24:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3806:1:92","type":"","value":"0"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"3802:3:92"},"nodeType":"YulFunctionCall","src":"3802:6:92"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"3772:3:92"},"nodeType":"YulFunctionCall","src":"3772:37:92"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"3768:3:92"},"nodeType":"YulFunctionCall","src":"3768:42:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3753:3:92"},"nodeType":"YulFunctionCall","src":"3753:58:92"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"3738:6:92"},"nodeType":"YulFunctionCall","src":"3738:74:92"},"nodeType":"YulExpressionStatement","src":"3738:74:92"}]},"condition":{"arguments":[{"name":"loopEnd","nodeType":"YulIdentifier","src":"3631:7:92"},{"name":"newLen","nodeType":"YulIdentifier","src":"3640:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"3628:2:92"},"nodeType":"YulFunctionCall","src":"3628:19:92"},"nodeType":"YulIf","src":"3625:201:92"},{"expression":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"3846:4:92"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3860:1:92","type":"","value":"1"},{"name":"newLen","nodeType":"YulIdentifier","src":"3863:6:92"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"3856:3:92"},"nodeType":"YulFunctionCall","src":"3856:14:92"},{"kind":"number","nodeType":"YulLiteral","src":"3872:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3852:3:92"},"nodeType":"YulFunctionCall","src":"3852:22:92"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"3839:6:92"},"nodeType":"YulFunctionCall","src":"3839:36:92"},"nodeType":"YulExpressionStatement","src":"3839:36:92"}]},"nodeType":"YulCase","src":"3222:663:92","value":{"kind":"number","nodeType":"YulLiteral","src":"3227:1:92","type":"","value":"1"}},{"body":{"nodeType":"YulBlock","src":"3902:234:92","statements":[{"nodeType":"YulVariableDeclaration","src":"3916:14:92","value":{"kind":"number","nodeType":"YulLiteral","src":"3929:1:92","type":"","value":"0"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"3920:5:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"3965:67:92","statements":[{"nodeType":"YulAssignment","src":"3983:35:92","value":{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"4002:3:92"},{"name":"srcOffset","nodeType":"YulIdentifier","src":"4007:9:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3998:3:92"},"nodeType":"YulFunctionCall","src":"3998:19:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3992:5:92"},"nodeType":"YulFunctionCall","src":"3992:26:92"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"3983:5:92"}]}]},"condition":{"name":"newLen","nodeType":"YulIdentifier","src":"3946:6:92"},"nodeType":"YulIf","src":"3943:89:92"},{"expression":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"4052:4:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4111:5:92"},{"name":"newLen","nodeType":"YulIdentifier","src":"4118:6:92"}],"functionName":{"name":"extract_used_part_and_set_length_of_short_byte_array","nodeType":"YulIdentifier","src":"4058:52:92"},"nodeType":"YulFunctionCall","src":"4058:67:92"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"4045:6:92"},"nodeType":"YulFunctionCall","src":"4045:81:92"},"nodeType":"YulExpressionStatement","src":"4045:81:92"}]},"nodeType":"YulCase","src":"3894:242:92","value":"default"}],"expression":{"arguments":[{"name":"newLen","nodeType":"YulIdentifier","src":"3202:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"3210:2:92","type":"","value":"31"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3199:2:92"},"nodeType":"YulFunctionCall","src":"3199:14:92"},"nodeType":"YulSwitch","src":"3192:944:92"}]},"name":"copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage","nodeType":"YulFunctionDefinition","parameters":[{"name":"slot","nodeType":"YulTypedName","src":"2871:4:92","type":""},{"name":"src","nodeType":"YulTypedName","src":"2877:3:92","type":""}],"src":"2790:1352:92"}]},"contents":"{\n { }\n function panic_error_0x41()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function abi_decode_string_fromMemory(offset, end) -> array\n {\n if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n let _1 := mload(offset)\n let _2 := sub(shl(64, 1), 1)\n if gt(_1, _2) { panic_error_0x41() }\n let _3 := not(31)\n let memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(and(add(_1, 0x1f), _3), 63), _3))\n if or(gt(newFreePtr, _2), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n mstore(memPtr, _1)\n let _4 := 0x20\n if gt(add(add(offset, _1), _4), end) { revert(0, 0) }\n let i := 0\n for { } lt(i, _1) { i := add(i, _4) }\n {\n mstore(add(add(memPtr, i), _4), mload(add(add(offset, i), _4)))\n }\n mstore(add(add(memPtr, _1), _4), 0)\n array := memPtr\n }\n function abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr_fromMemory(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n let offset := mload(headStart)\n let _1 := sub(shl(64, 1), 1)\n if gt(offset, _1) { revert(0, 0) }\n value0 := abi_decode_string_fromMemory(add(headStart, offset), dataEnd)\n let offset_1 := mload(add(headStart, 32))\n if gt(offset_1, _1) { revert(0, 0) }\n value1 := abi_decode_string_fromMemory(add(headStart, offset_1), dataEnd)\n }\n function extract_byte_array_length(data) -> length\n {\n length := shr(1, data)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n if eq(outOfPlaceEncoding, lt(length, 32))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n }\n function array_dataslot_string_storage(ptr) -> data\n {\n mstore(0, ptr)\n data := keccak256(0, 0x20)\n }\n function clean_up_bytearray_end_slots_string_storage(array, len, startIndex)\n {\n if gt(len, 31)\n {\n let _1 := 0\n mstore(_1, array)\n let data := keccak256(_1, 0x20)\n let deleteStart := add(data, shr(5, add(startIndex, 31)))\n if lt(startIndex, 0x20) { deleteStart := data }\n let _2 := add(data, shr(5, add(len, 31)))\n let start := deleteStart\n for { } lt(start, _2) { start := add(start, 1) }\n { sstore(start, _1) }\n }\n }\n function extract_used_part_and_set_length_of_short_byte_array(data, len) -> used\n {\n used := or(and(data, not(shr(shl(3, len), not(0)))), shl(1, len))\n }\n function copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage(slot, src)\n {\n let newLen := mload(src)\n if gt(newLen, sub(shl(64, 1), 1)) { panic_error_0x41() }\n clean_up_bytearray_end_slots_string_storage(slot, extract_byte_array_length(sload(slot)), newLen)\n let srcOffset := 0\n let srcOffset_1 := 0x20\n srcOffset := srcOffset_1\n switch gt(newLen, 31)\n case 1 {\n let loopEnd := and(newLen, not(31))\n let dstPtr := array_dataslot_string_storage(slot)\n let i := 0\n for { } lt(i, loopEnd) { i := add(i, srcOffset_1) }\n {\n sstore(dstPtr, mload(add(src, srcOffset)))\n dstPtr := add(dstPtr, 1)\n srcOffset := add(srcOffset, srcOffset_1)\n }\n if lt(loopEnd, newLen)\n {\n let lastValue := mload(add(src, srcOffset))\n sstore(dstPtr, and(lastValue, not(shr(and(shl(3, newLen), 248), not(0)))))\n }\n sstore(slot, add(shl(1, newLen), 1))\n }\n default {\n let value := 0\n if newLen\n {\n value := mload(add(src, srcOffset))\n }\n sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, newLen))\n }\n }\n}","id":92,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60806040526005805460ff191660121790553480156200001e57600080fd5b5060405162000ed038038062000ed0833981016040819052620000419162000130565b8181600362000051838262000229565b50600462000060828262000229565b5050505050620002f5565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200009357600080fd5b81516001600160401b0380821115620000b057620000b06200006b565b604051601f8301601f19908116603f01168101908282118183101715620000db57620000db6200006b565b81604052838152602092508683858801011115620000f857600080fd5b600091505b838210156200011c5785820183015181830184015290820190620000fd565b600093810190920192909252949350505050565b600080604083850312156200014457600080fd5b82516001600160401b03808211156200015c57600080fd5b6200016a8683870162000081565b935060208501519150808211156200018157600080fd5b50620001908582860162000081565b9150509250929050565b600181811c90821680620001af57607f821691505b602082108103620001d057634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200022457600081815260208120601f850160051c81016020861015620001ff5750805b601f850160051c820191505b8181101562000220578281556001016200020b565b5050505b505050565b81516001600160401b038111156200024557620002456200006b565b6200025d816200025684546200019a565b84620001d6565b602080601f8311600181146200029557600084156200027c5750858301515b600019600386901b1c1916600185901b17855562000220565b600085815260208120601f198616915b82811015620002c657888601518255948401946001909101908401620002a5565b5085821015620002e55787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b610bcb80620003056000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c80637a1395aa1161008c578063a9059cbb11610066578063a9059cbb146101eb578063dd62ed3e146101fe578063e30443bc14610237578063f785ef721461024a57600080fd5b80637a1395aa146101aa57806395d89b41146101d0578063a457c2d7146101d857600080fd5b806323b872dd116100c857806323b872dd14610142578063313ce56714610155578063395093511461016e57806370a082311461018157600080fd5b806306fdde03146100ef578063095ea7b31461010d57806318160ddd14610130575b600080fd5b6100f7610257565b6040516101049190610a00565b60405180910390f35b61012061011b366004610a6a565b6102e9565b6040519015158152602001610104565b6002545b604051908152602001610104565b610120610150366004610a94565b610303565b60055460ff165b60405160ff9091168152602001610104565b61012061017c366004610a6a565b610327565b61013461018f366004610ad0565b6001600160a01b031660009081526020819052604090205490565b6101ce6101b8366004610af2565b6005805460ff191660ff92909216919091179055565b005b6100f7610366565b6101206101e6366004610a6a565b610375565b6101206101f9366004610a6a565b610424565b61013461020c366004610b15565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6101ce610245366004610a6a565b610432565b60055461015c9060ff1681565b60606003805461026690610b48565b80601f016020809104026020016040519081016040528092919081815260200182805461029290610b48565b80156102df5780601f106102b4576101008083540402835291602001916102df565b820191906000526020600020905b8154815290600101906020018083116102c257829003601f168201915b5050505050905090565b6000336102f7818585610486565b60019150505b92915050565b6000336103118582856105aa565b61031c85858561063c565b506001949350505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091906102f79082908690610361908790610b98565b610486565b60606004805461026690610b48565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909190838110156104175760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b61031c8286868403610486565b6000336102f781858561063c565b6001600160a01b0382166000908152602081905260409020548181101561046b57610466836104618385610bab565b61080f565b505050565b8181111561046657610466836104818484610bab565b6108ce565b6001600160a01b0383166104e85760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161040e565b6001600160a01b0382166105495760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161040e565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03838116600090815260016020908152604080832093861683529290522054600019811461063657818110156106295760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161040e565b6106368484848403610486565b50505050565b6001600160a01b0383166106b85760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f6472657373000000000000000000000000000000000000000000000000000000606482015260840161040e565b6001600160a01b03821661071a5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161040e565b6001600160a01b038316600090815260208190526040902054818110156107a95760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e63650000000000000000000000000000000000000000000000000000606482015260840161040e565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610636565b6001600160a01b0382166108655760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161040e565b80600260008282546108779190610b98565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6001600160a01b03821661092e5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161040e565b6001600160a01b038216600090815260208190526040902054818110156109a25760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b606482015260840161040e565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b600060208083528351808285015260005b81811015610a2d57858101830151858201604001528201610a11565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610a6557600080fd5b919050565b60008060408385031215610a7d57600080fd5b610a8683610a4e565b946020939093013593505050565b600080600060608486031215610aa957600080fd5b610ab284610a4e565b9250610ac060208501610a4e565b9150604084013590509250925092565b600060208284031215610ae257600080fd5b610aeb82610a4e565b9392505050565b600060208284031215610b0457600080fd5b813560ff81168114610aeb57600080fd5b60008060408385031215610b2857600080fd5b610b3183610a4e565b9150610b3f60208401610a4e565b90509250929050565b600181811c90821680610b5c57607f821691505b602082108103610b7c57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156102fd576102fd610b82565b818103818111156102fd576102fd610b8256fea164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x5 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x12 OR SWAP1 SSTORE CALLVALUE DUP1 ISZERO PUSH3 0x1E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0xED0 CODESIZE SUB DUP1 PUSH3 0xED0 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x41 SWAP2 PUSH3 0x130 JUMP JUMPDEST DUP2 DUP2 PUSH1 0x3 PUSH3 0x51 DUP4 DUP3 PUSH3 0x229 JUMP JUMPDEST POP PUSH1 0x4 PUSH3 0x60 DUP3 DUP3 PUSH3 0x229 JUMP JUMPDEST POP POP POP POP POP PUSH3 0x2F5 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x93 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH3 0xB0 JUMPI PUSH3 0xB0 PUSH3 0x6B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP4 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP3 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH3 0xDB JUMPI PUSH3 0xDB PUSH3 0x6B JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP4 DUP2 MSTORE PUSH1 0x20 SWAP3 POP DUP7 DUP4 DUP6 DUP9 ADD ADD GT ISZERO PUSH3 0xF8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP2 POP JUMPDEST DUP4 DUP3 LT ISZERO PUSH3 0x11C JUMPI DUP6 DUP3 ADD DUP4 ADD MLOAD DUP2 DUP4 ADD DUP5 ADD MSTORE SWAP1 DUP3 ADD SWAP1 PUSH3 0xFD JUMP JUMPDEST PUSH1 0x0 SWAP4 DUP2 ADD SWAP1 SWAP3 ADD SWAP3 SWAP1 SWAP3 MSTORE SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x144 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH3 0x15C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x16A DUP7 DUP4 DUP8 ADD PUSH3 0x81 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD MLOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH3 0x181 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x190 DUP6 DUP3 DUP7 ADD PUSH3 0x81 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH3 0x1AF JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH3 0x1D0 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH3 0x224 JUMPI PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP7 LT ISZERO PUSH3 0x1FF JUMPI POP DUP1 JUMPDEST PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x220 JUMPI DUP3 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x20B JUMP JUMPDEST POP POP POP JUMPDEST POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH3 0x245 JUMPI PUSH3 0x245 PUSH3 0x6B JUMP JUMPDEST PUSH3 0x25D DUP2 PUSH3 0x256 DUP5 SLOAD PUSH3 0x19A JUMP JUMPDEST DUP5 PUSH3 0x1D6 JUMP JUMPDEST PUSH1 0x20 DUP1 PUSH1 0x1F DUP4 GT PUSH1 0x1 DUP2 EQ PUSH3 0x295 JUMPI PUSH1 0x0 DUP5 ISZERO PUSH3 0x27C JUMPI POP DUP6 DUP4 ADD MLOAD JUMPDEST PUSH1 0x0 NOT PUSH1 0x3 DUP7 SWAP1 SHL SHR NOT AND PUSH1 0x1 DUP6 SWAP1 SHL OR DUP6 SSTORE PUSH3 0x220 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F NOT DUP7 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH3 0x2C6 JUMPI DUP9 DUP7 ADD MLOAD DUP3 SSTORE SWAP5 DUP5 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 DUP5 ADD PUSH3 0x2A5 JUMP JUMPDEST POP DUP6 DUP3 LT ISZERO PUSH3 0x2E5 JUMPI DUP8 DUP6 ADD MLOAD PUSH1 0x0 NOT PUSH1 0x3 DUP9 SWAP1 SHL PUSH1 0xF8 AND SHR NOT AND DUP2 SSTORE JUMPDEST POP POP POP POP POP PUSH1 0x1 SWAP1 DUP2 SHL ADD SWAP1 SSTORE POP JUMP JUMPDEST PUSH2 0xBCB DUP1 PUSH3 0x305 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xEA JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7A1395AA GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xA9059CBB GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x1EB JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x1FE JUMPI DUP1 PUSH4 0xE30443BC EQ PUSH2 0x237 JUMPI DUP1 PUSH4 0xF785EF72 EQ PUSH2 0x24A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x7A1395AA EQ PUSH2 0x1AA JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x1D0 JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x1D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0xC8 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x142 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x155 JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x16E JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x181 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xEF JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x10D JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x130 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF7 PUSH2 0x257 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x104 SWAP2 SWAP1 PUSH2 0xA00 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x120 PUSH2 0x11B CALLDATASIZE PUSH1 0x4 PUSH2 0xA6A JUMP JUMPDEST PUSH2 0x2E9 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x104 JUMP JUMPDEST PUSH1 0x2 SLOAD JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x104 JUMP JUMPDEST PUSH2 0x120 PUSH2 0x150 CALLDATASIZE PUSH1 0x4 PUSH2 0xA94 JUMP JUMPDEST PUSH2 0x303 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x104 JUMP JUMPDEST PUSH2 0x120 PUSH2 0x17C CALLDATASIZE PUSH1 0x4 PUSH2 0xA6A JUMP JUMPDEST PUSH2 0x327 JUMP JUMPDEST PUSH2 0x134 PUSH2 0x18F CALLDATASIZE PUSH1 0x4 PUSH2 0xAD0 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x1CE PUSH2 0x1B8 CALLDATASIZE PUSH1 0x4 PUSH2 0xAF2 JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST STOP JUMPDEST PUSH2 0xF7 PUSH2 0x366 JUMP JUMPDEST PUSH2 0x120 PUSH2 0x1E6 CALLDATASIZE PUSH1 0x4 PUSH2 0xA6A JUMP JUMPDEST PUSH2 0x375 JUMP JUMPDEST PUSH2 0x120 PUSH2 0x1F9 CALLDATASIZE PUSH1 0x4 PUSH2 0xA6A JUMP JUMPDEST PUSH2 0x424 JUMP JUMPDEST PUSH2 0x134 PUSH2 0x20C CALLDATASIZE PUSH1 0x4 PUSH2 0xB15 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x1CE PUSH2 0x245 CALLDATASIZE PUSH1 0x4 PUSH2 0xA6A JUMP JUMPDEST PUSH2 0x432 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH2 0x15C SWAP1 PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x3 DUP1 SLOAD PUSH2 0x266 SWAP1 PUSH2 0xB48 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x292 SWAP1 PUSH2 0xB48 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x2DF JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x2B4 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x2DF JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x2C2 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0x2F7 DUP2 DUP6 DUP6 PUSH2 0x486 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0x311 DUP6 DUP3 DUP6 PUSH2 0x5AA JUMP JUMPDEST PUSH2 0x31C DUP6 DUP6 DUP6 PUSH2 0x63C JUMP JUMPDEST POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 SWAP1 PUSH2 0x2F7 SWAP1 DUP3 SWAP1 DUP7 SWAP1 PUSH2 0x361 SWAP1 DUP8 SWAP1 PUSH2 0xB98 JUMP JUMPDEST PUSH2 0x486 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x4 DUP1 SLOAD PUSH2 0x266 SWAP1 PUSH2 0xB48 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 SWAP1 DUP4 DUP2 LT ISZERO PUSH2 0x417 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A2064656372656173656420616C6C6F77616E63652062656C6F77 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x207A65726F000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x31C DUP3 DUP7 DUP7 DUP5 SUB PUSH2 0x486 JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0x2F7 DUP2 DUP6 DUP6 PUSH2 0x63C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 DUP2 LT ISZERO PUSH2 0x46B JUMPI PUSH2 0x466 DUP4 PUSH2 0x461 DUP4 DUP6 PUSH2 0xBAB JUMP JUMPDEST PUSH2 0x80F JUMP JUMPDEST POP POP POP JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x466 JUMPI PUSH2 0x466 DUP4 PUSH2 0x481 DUP5 DUP5 PUSH2 0xBAB JUMP JUMPDEST PUSH2 0x8CE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x4E8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x45524332303A20617070726F76652066726F6D20746865207A65726F20616464 PUSH1 0x44 DUP3 ADD MSTORE PUSH4 0x72657373 PUSH1 0xE0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x40E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x549 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20617070726F766520746F20746865207A65726F206164647265 PUSH1 0x44 DUP3 ADD MSTORE PUSH2 0x7373 PUSH1 0xF0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x40E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE SWAP1 MLOAD DUP5 DUP2 MSTORE PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP7 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0x0 NOT DUP2 EQ PUSH2 0x636 JUMPI DUP2 DUP2 LT ISZERO PUSH2 0x629 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E73756666696369656E7420616C6C6F77616E6365000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x40E JUMP JUMPDEST PUSH2 0x636 DUP5 DUP5 DUP5 DUP5 SUB PUSH2 0x486 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x6B8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E736665722066726F6D20746865207A65726F206164 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6472657373000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x40E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x71A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x23 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E7366657220746F20746865207A65726F2061646472 PUSH1 0x44 DUP3 ADD MSTORE PUSH3 0x657373 PUSH1 0xE8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x40E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 DUP2 LT ISZERO PUSH2 0x7A9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E7366657220616D6F756E7420657863656564732062 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x616C616E63650000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x40E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP8 SUB SWAP1 SSTORE SWAP4 DUP8 AND DUP1 DUP4 MSTORE SWAP2 DUP5 SWAP1 KECCAK256 DUP1 SLOAD DUP8 ADD SWAP1 SSTORE SWAP3 MLOAD DUP6 DUP2 MSTORE SWAP1 SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH2 0x636 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x865 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A206D696E7420746F20746865207A65726F206164647265737300 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x40E JUMP JUMPDEST DUP1 PUSH1 0x2 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x877 SWAP2 SWAP1 PUSH2 0xB98 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD DUP7 ADD SWAP1 SSTORE MLOAD DUP5 DUP2 MSTORE PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x92E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A206275726E2066726F6D20746865207A65726F20616464726573 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x73 PUSH1 0xF8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x40E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 DUP2 LT ISZERO PUSH2 0x9A2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A206275726E20616D6F756E7420657863656564732062616C616E PUSH1 0x44 DUP3 ADD MSTORE PUSH2 0x6365 PUSH1 0xF0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x40E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP7 DUP7 SUB SWAP1 SSTORE PUSH1 0x2 DUP1 SLOAD DUP8 SWAP1 SUB SWAP1 SSTORE MLOAD DUP6 DUP2 MSTORE SWAP2 SWAP3 SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xA2D JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0xA11 JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x40 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x40 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP3 POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xA65 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xA7D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA86 DUP4 PUSH2 0xA4E JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xAA9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xAB2 DUP5 PUSH2 0xA4E JUMP JUMPDEST SWAP3 POP PUSH2 0xAC0 PUSH1 0x20 DUP6 ADD PUSH2 0xA4E JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xAE2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xAEB DUP3 PUSH2 0xA4E JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xB04 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0xAEB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xB28 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB31 DUP4 PUSH2 0xA4E JUMP JUMPDEST SWAP2 POP PUSH2 0xB3F PUSH1 0x20 DUP5 ADD PUSH2 0xA4E JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0xB5C JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0xB7C JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x2FD JUMPI PUSH2 0x2FD PUSH2 0xB82 JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x2FD JUMPI PUSH2 0x2FD PUSH2 0xB82 JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"293:694:59:-:0;;;327:27;;;-1:-1:-1;;327:27:59;352:2;327:27;;;361:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;423:5;430:7;2046:5:26;:13;423:5:59;2046::26;:13;:::i;:::-;-1:-1:-1;2069:7:26;:17;2079:7;2069;:17;:::i;:::-;;1980:113;;361:80:59;;293:694;;14:127:92;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:840;200:5;253:3;246:4;238:6;234:17;230:27;220:55;;271:1;268;261:12;220:55;294:13;;-1:-1:-1;;;;;356:10:92;;;353:36;;;369:18;;:::i;:::-;444:2;438:9;412:2;498:13;;-1:-1:-1;;494:22:92;;;518:2;490:31;486:40;474:53;;;542:18;;;562:22;;;539:46;536:72;;;588:18;;:::i;:::-;628:10;624:2;617:22;663:2;655:6;648:18;685:4;675:14;;730:3;725:2;720;712:6;708:15;704:24;701:33;698:53;;;747:1;744;737:12;698:53;769:1;760:10;;779:133;793:2;790:1;787:9;779:133;;;881:14;;;877:23;;871:30;850:14;;;846:23;;839:63;804:10;;;;779:133;;;954:1;932:15;;;928:24;;;921:35;;;;936:6;146:840;-1:-1:-1;;;;146:840:92:o;991:562::-;1090:6;1098;1151:2;1139:9;1130:7;1126:23;1122:32;1119:52;;;1167:1;1164;1157:12;1119:52;1194:16;;-1:-1:-1;;;;;1259:14:92;;;1256:34;;;1286:1;1283;1276:12;1256:34;1309:61;1362:7;1353:6;1342:9;1338:22;1309:61;:::i;:::-;1299:71;;1416:2;1405:9;1401:18;1395:25;1379:41;;1445:2;1435:8;1432:16;1429:36;;;1461:1;1458;1451:12;1429:36;;1484:63;1539:7;1528:8;1517:9;1513:24;1484:63;:::i;:::-;1474:73;;;991:562;;;;;:::o;1558:380::-;1637:1;1633:12;;;;1680;;;1701:61;;1755:4;1747:6;1743:17;1733:27;;1701:61;1808:2;1800:6;1797:14;1777:18;1774:38;1771:161;;1854:10;1849:3;1845:20;1842:1;1835:31;1889:4;1886:1;1879:15;1917:4;1914:1;1907:15;1771:161;;1558:380;;;:::o;2069:545::-;2171:2;2166:3;2163:11;2160:448;;;2207:1;2232:5;2228:2;2221:17;2277:4;2273:2;2263:19;2347:2;2335:10;2331:19;2328:1;2324:27;2318:4;2314:38;2383:4;2371:10;2368:20;2365:47;;;-1:-1:-1;2406:4:92;2365:47;2461:2;2456:3;2452:12;2449:1;2445:20;2439:4;2435:31;2425:41;;2516:82;2534:2;2527:5;2524:13;2516:82;;;2579:17;;;2560:1;2549:13;2516:82;;;2520:3;;;2160:448;2069:545;;;:::o;2790:1352::-;2910:10;;-1:-1:-1;;;;;2932:30:92;;2929:56;;;2965:18;;:::i;:::-;2994:97;3084:6;3044:38;3076:4;3070:11;3044:38;:::i;:::-;3038:4;2994:97;:::i;:::-;3146:4;;3210:2;3199:14;;3227:1;3222:663;;;;3929:1;3946:6;3943:89;;;-1:-1:-1;3998:19:92;;;3992:26;3943:89;-1:-1:-1;;2747:1:92;2743:11;;;2739:24;2735:29;2725:40;2771:1;2767:11;;;2722:57;4045:81;;3192:944;;3222:663;2016:1;2009:14;;;2053:4;2040:18;;-1:-1:-1;;3258:20:92;;;3376:236;3390:7;3387:1;3384:14;3376:236;;;3479:19;;;3473:26;3458:42;;3571:27;;;;3539:1;3527:14;;;;3406:19;;3376:236;;;3380:3;3640:6;3631:7;3628:19;3625:201;;;3701:19;;;3695:26;-1:-1:-1;;3784:1:92;3780:14;;;3796:3;3776:24;3772:37;3768:42;3753:58;3738:74;;3625:201;-1:-1:-1;;;;;3872:1:92;3856:14;;;3852:22;3839:36;;-1:-1:-1;2790:1352:92:o;:::-;293:694:59;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_afterTokenTransfer_7742":{"entryPoint":null,"id":7742,"parameterSlots":3,"returnSlots":0},"@_approve_7677":{"entryPoint":1158,"id":7677,"parameterSlots":3,"returnSlots":0},"@_beforeTokenTransfer_7731":{"entryPoint":null,"id":7731,"parameterSlots":3,"returnSlots":0},"@_burn_7632":{"entryPoint":2254,"id":7632,"parameterSlots":2,"returnSlots":0},"@_mint_7560":{"entryPoint":2063,"id":7560,"parameterSlots":2,"returnSlots":0},"@_msgSender_9276":{"entryPoint":null,"id":9276,"parameterSlots":0,"returnSlots":1},"@_spendAllowance_7720":{"entryPoint":1450,"id":7720,"parameterSlots":3,"returnSlots":0},"@_transfer_7503":{"entryPoint":1596,"id":7503,"parameterSlots":3,"returnSlots":0},"@allowance_7298":{"entryPoint":null,"id":7298,"parameterSlots":2,"returnSlots":1},"@approve_7323":{"entryPoint":745,"id":7323,"parameterSlots":2,"returnSlots":1},"@balanceOf_7255":{"entryPoint":null,"id":7255,"parameterSlots":1,"returnSlots":1},"@decimals_12721":{"entryPoint":null,"id":12721,"parameterSlots":0,"returnSlots":1},"@decimals__12690":{"entryPoint":null,"id":12690,"parameterSlots":0,"returnSlots":0},"@decreaseAllowance_7426":{"entryPoint":885,"id":7426,"parameterSlots":2,"returnSlots":1},"@increaseAllowance_7385":{"entryPoint":807,"id":7385,"parameterSlots":2,"returnSlots":1},"@name_7211":{"entryPoint":599,"id":7211,"parameterSlots":0,"returnSlots":1},"@setBalance_12759":{"entryPoint":1074,"id":12759,"parameterSlots":2,"returnSlots":0},"@setDecimals_12712":{"entryPoint":null,"id":12712,"parameterSlots":1,"returnSlots":0},"@symbol_7221":{"entryPoint":870,"id":7221,"parameterSlots":0,"returnSlots":1},"@totalSupply_7241":{"entryPoint":null,"id":7241,"parameterSlots":0,"returnSlots":1},"@transferFrom_7356":{"entryPoint":771,"id":7356,"parameterSlots":3,"returnSlots":1},"@transfer_7280":{"entryPoint":1060,"id":7280,"parameterSlots":2,"returnSlots":1},"abi_decode_address":{"entryPoint":2638,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_tuple_t_address":{"entryPoint":2768,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_address":{"entryPoint":2837,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_addresst_uint256":{"entryPoint":2708,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_addresst_uint256":{"entryPoint":2666,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_uint8":{"entryPoint":2802,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":2560,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_149b126e7125232b4200af45303d04fba8b74653b1a295a6a561a528c33fefdd__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_3b6607e091cba9325f958656d2b5e0622ab7dc0eac71a26ac788cb25bc19f4fe__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"checked_add_t_uint256":{"entryPoint":2968,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_t_uint256":{"entryPoint":2987,"id":null,"parameterSlots":2,"returnSlots":1},"extract_byte_array_length":{"entryPoint":2888,"id":null,"parameterSlots":1,"returnSlots":1},"panic_error_0x11":{"entryPoint":2946,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:7384:92","statements":[{"nodeType":"YulBlock","src":"6:3:92","statements":[]},{"body":{"nodeType":"YulBlock","src":"135:427:92","statements":[{"nodeType":"YulVariableDeclaration","src":"145:12:92","value":{"kind":"number","nodeType":"YulLiteral","src":"155:2:92","type":"","value":"32"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"149:2:92","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"173:9:92"},{"name":"_1","nodeType":"YulIdentifier","src":"184:2:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"166:6:92"},"nodeType":"YulFunctionCall","src":"166:21:92"},"nodeType":"YulExpressionStatement","src":"166:21:92"},{"nodeType":"YulVariableDeclaration","src":"196:27:92","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"216:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"210:5:92"},"nodeType":"YulFunctionCall","src":"210:13:92"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"200:6:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"243:9:92"},{"name":"_1","nodeType":"YulIdentifier","src":"254:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"239:3:92"},"nodeType":"YulFunctionCall","src":"239:18:92"},{"name":"length","nodeType":"YulIdentifier","src":"259:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"232:6:92"},"nodeType":"YulFunctionCall","src":"232:34:92"},"nodeType":"YulExpressionStatement","src":"232:34:92"},{"nodeType":"YulVariableDeclaration","src":"275:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"284:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"279:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"344:90:92","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"373:9:92"},{"name":"i","nodeType":"YulIdentifier","src":"384:1:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"369:3:92"},"nodeType":"YulFunctionCall","src":"369:17:92"},{"kind":"number","nodeType":"YulLiteral","src":"388:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"365:3:92"},"nodeType":"YulFunctionCall","src":"365:26:92"},{"arguments":[{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"407:6:92"},{"name":"i","nodeType":"YulIdentifier","src":"415:1:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"403:3:92"},"nodeType":"YulFunctionCall","src":"403:14:92"},{"name":"_1","nodeType":"YulIdentifier","src":"419:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"399:3:92"},"nodeType":"YulFunctionCall","src":"399:23:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"393:5:92"},"nodeType":"YulFunctionCall","src":"393:30:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"358:6:92"},"nodeType":"YulFunctionCall","src":"358:66:92"},"nodeType":"YulExpressionStatement","src":"358:66:92"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"305:1:92"},{"name":"length","nodeType":"YulIdentifier","src":"308:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"302:2:92"},"nodeType":"YulFunctionCall","src":"302:13:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"316:19:92","statements":[{"nodeType":"YulAssignment","src":"318:15:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"327:1:92"},{"name":"_1","nodeType":"YulIdentifier","src":"330:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"323:3:92"},"nodeType":"YulFunctionCall","src":"323:10:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"318:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"298:3:92","statements":[]},"src":"294:140:92"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"458:9:92"},{"name":"length","nodeType":"YulIdentifier","src":"469:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"454:3:92"},"nodeType":"YulFunctionCall","src":"454:22:92"},{"kind":"number","nodeType":"YulLiteral","src":"478:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"450:3:92"},"nodeType":"YulFunctionCall","src":"450:31:92"},{"kind":"number","nodeType":"YulLiteral","src":"483:1:92","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"443:6:92"},"nodeType":"YulFunctionCall","src":"443:42:92"},"nodeType":"YulExpressionStatement","src":"443:42:92"},{"nodeType":"YulAssignment","src":"494:62:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"510:9:92"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"529:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"537:2:92","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"525:3:92"},"nodeType":"YulFunctionCall","src":"525:15:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"546:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"542:3:92"},"nodeType":"YulFunctionCall","src":"542:7:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"521:3:92"},"nodeType":"YulFunctionCall","src":"521:29:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"506:3:92"},"nodeType":"YulFunctionCall","src":"506:45:92"},{"kind":"number","nodeType":"YulLiteral","src":"553:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"502:3:92"},"nodeType":"YulFunctionCall","src":"502:54:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"494:4:92"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"104:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"115:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"126:4:92","type":""}],"src":"14:548:92"},{"body":{"nodeType":"YulBlock","src":"616:147:92","statements":[{"nodeType":"YulAssignment","src":"626:29:92","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"648:6:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"635:12:92"},"nodeType":"YulFunctionCall","src":"635:20:92"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"626:5:92"}]},{"body":{"nodeType":"YulBlock","src":"741:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"750:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"753:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"743:6:92"},"nodeType":"YulFunctionCall","src":"743:12:92"},"nodeType":"YulExpressionStatement","src":"743:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"677:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"688:5:92"},{"kind":"number","nodeType":"YulLiteral","src":"695:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"684:3:92"},"nodeType":"YulFunctionCall","src":"684:54:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"674:2:92"},"nodeType":"YulFunctionCall","src":"674:65:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"667:6:92"},"nodeType":"YulFunctionCall","src":"667:73:92"},"nodeType":"YulIf","src":"664:93:92"}]},"name":"abi_decode_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"595:6:92","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"606:5:92","type":""}],"src":"567:196:92"},{"body":{"nodeType":"YulBlock","src":"855:167:92","statements":[{"body":{"nodeType":"YulBlock","src":"901:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"910:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"913:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"903:6:92"},"nodeType":"YulFunctionCall","src":"903:12:92"},"nodeType":"YulExpressionStatement","src":"903:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"876:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"885:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"872:3:92"},"nodeType":"YulFunctionCall","src":"872:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"897:2:92","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"868:3:92"},"nodeType":"YulFunctionCall","src":"868:32:92"},"nodeType":"YulIf","src":"865:52:92"},{"nodeType":"YulAssignment","src":"926:39:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"955:9:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"936:18:92"},"nodeType":"YulFunctionCall","src":"936:29:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"926:6:92"}]},{"nodeType":"YulAssignment","src":"974:42:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1001:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1012:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"997:3:92"},"nodeType":"YulFunctionCall","src":"997:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"984:12:92"},"nodeType":"YulFunctionCall","src":"984:32:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"974:6:92"}]}]},"name":"abi_decode_tuple_t_addresst_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"813:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"824:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"836:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"844:6:92","type":""}],"src":"768:254:92"},{"body":{"nodeType":"YulBlock","src":"1122:92:92","statements":[{"nodeType":"YulAssignment","src":"1132:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1144:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1155:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1140:3:92"},"nodeType":"YulFunctionCall","src":"1140:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1132:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1174:9:92"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1199:6:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1192:6:92"},"nodeType":"YulFunctionCall","src":"1192:14:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1185:6:92"},"nodeType":"YulFunctionCall","src":"1185:22:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1167:6:92"},"nodeType":"YulFunctionCall","src":"1167:41:92"},"nodeType":"YulExpressionStatement","src":"1167:41:92"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1091:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1102:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1113:4:92","type":""}],"src":"1027:187:92"},{"body":{"nodeType":"YulBlock","src":"1320:76:92","statements":[{"nodeType":"YulAssignment","src":"1330:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1342:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1353:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1338:3:92"},"nodeType":"YulFunctionCall","src":"1338:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1330:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1372:9:92"},{"name":"value0","nodeType":"YulIdentifier","src":"1383:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1365:6:92"},"nodeType":"YulFunctionCall","src":"1365:25:92"},"nodeType":"YulExpressionStatement","src":"1365:25:92"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1289:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1300:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1311:4:92","type":""}],"src":"1219:177:92"},{"body":{"nodeType":"YulBlock","src":"1505:224:92","statements":[{"body":{"nodeType":"YulBlock","src":"1551:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1560:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1563:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1553:6:92"},"nodeType":"YulFunctionCall","src":"1553:12:92"},"nodeType":"YulExpressionStatement","src":"1553:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1526:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"1535:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1522:3:92"},"nodeType":"YulFunctionCall","src":"1522:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"1547:2:92","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1518:3:92"},"nodeType":"YulFunctionCall","src":"1518:32:92"},"nodeType":"YulIf","src":"1515:52:92"},{"nodeType":"YulAssignment","src":"1576:39:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1605:9:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"1586:18:92"},"nodeType":"YulFunctionCall","src":"1586:29:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1576:6:92"}]},{"nodeType":"YulAssignment","src":"1624:48:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1657:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1668:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1653:3:92"},"nodeType":"YulFunctionCall","src":"1653:18:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"1634:18:92"},"nodeType":"YulFunctionCall","src":"1634:38:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1624:6:92"}]},{"nodeType":"YulAssignment","src":"1681:42:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1708:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1719:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1704:3:92"},"nodeType":"YulFunctionCall","src":"1704:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1691:12:92"},"nodeType":"YulFunctionCall","src":"1691:32:92"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"1681:6:92"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1455:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1466:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1478:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1486:6:92","type":""},{"name":"value2","nodeType":"YulTypedName","src":"1494:6:92","type":""}],"src":"1401:328:92"},{"body":{"nodeType":"YulBlock","src":"1831:87:92","statements":[{"nodeType":"YulAssignment","src":"1841:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1853:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1864:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1849:3:92"},"nodeType":"YulFunctionCall","src":"1849:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1841:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1883:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1898:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"1906:4:92","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1894:3:92"},"nodeType":"YulFunctionCall","src":"1894:17:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1876:6:92"},"nodeType":"YulFunctionCall","src":"1876:36:92"},"nodeType":"YulExpressionStatement","src":"1876:36:92"}]},"name":"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1800:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1811:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1822:4:92","type":""}],"src":"1734:184:92"},{"body":{"nodeType":"YulBlock","src":"1993:116:92","statements":[{"body":{"nodeType":"YulBlock","src":"2039:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2048:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2051:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2041:6:92"},"nodeType":"YulFunctionCall","src":"2041:12:92"},"nodeType":"YulExpressionStatement","src":"2041:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2014:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"2023:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2010:3:92"},"nodeType":"YulFunctionCall","src":"2010:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"2035:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2006:3:92"},"nodeType":"YulFunctionCall","src":"2006:32:92"},"nodeType":"YulIf","src":"2003:52:92"},{"nodeType":"YulAssignment","src":"2064:39:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2093:9:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"2074:18:92"},"nodeType":"YulFunctionCall","src":"2074:29:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2064:6:92"}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1959:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1970:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1982:6:92","type":""}],"src":"1923:186:92"},{"body":{"nodeType":"YulBlock","src":"2182:201:92","statements":[{"body":{"nodeType":"YulBlock","src":"2228:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2237:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2240:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2230:6:92"},"nodeType":"YulFunctionCall","src":"2230:12:92"},"nodeType":"YulExpressionStatement","src":"2230:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2203:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"2212:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2199:3:92"},"nodeType":"YulFunctionCall","src":"2199:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"2224:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2195:3:92"},"nodeType":"YulFunctionCall","src":"2195:32:92"},"nodeType":"YulIf","src":"2192:52:92"},{"nodeType":"YulVariableDeclaration","src":"2253:36:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2279:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2266:12:92"},"nodeType":"YulFunctionCall","src":"2266:23:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"2257:5:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"2337:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2346:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2349:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2339:6:92"},"nodeType":"YulFunctionCall","src":"2339:12:92"},"nodeType":"YulExpressionStatement","src":"2339:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2311:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2322:5:92"},{"kind":"number","nodeType":"YulLiteral","src":"2329:4:92","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2318:3:92"},"nodeType":"YulFunctionCall","src":"2318:16:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"2308:2:92"},"nodeType":"YulFunctionCall","src":"2308:27:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2301:6:92"},"nodeType":"YulFunctionCall","src":"2301:35:92"},"nodeType":"YulIf","src":"2298:55:92"},{"nodeType":"YulAssignment","src":"2362:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"2372:5:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2362:6:92"}]}]},"name":"abi_decode_tuple_t_uint8","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2148:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2159:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2171:6:92","type":""}],"src":"2114:269:92"},{"body":{"nodeType":"YulBlock","src":"2475:173:92","statements":[{"body":{"nodeType":"YulBlock","src":"2521:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2530:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2533:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2523:6:92"},"nodeType":"YulFunctionCall","src":"2523:12:92"},"nodeType":"YulExpressionStatement","src":"2523:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2496:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"2505:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2492:3:92"},"nodeType":"YulFunctionCall","src":"2492:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"2517:2:92","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2488:3:92"},"nodeType":"YulFunctionCall","src":"2488:32:92"},"nodeType":"YulIf","src":"2485:52:92"},{"nodeType":"YulAssignment","src":"2546:39:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2575:9:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"2556:18:92"},"nodeType":"YulFunctionCall","src":"2556:29:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2546:6:92"}]},{"nodeType":"YulAssignment","src":"2594:48:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2627:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2638:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2623:3:92"},"nodeType":"YulFunctionCall","src":"2623:18:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"2604:18:92"},"nodeType":"YulFunctionCall","src":"2604:38:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"2594:6:92"}]}]},"name":"abi_decode_tuple_t_addresst_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2433:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2444:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2456:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2464:6:92","type":""}],"src":"2388:260:92"},{"body":{"nodeType":"YulBlock","src":"2708:325:92","statements":[{"nodeType":"YulAssignment","src":"2718:22:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2732:1:92","type":"","value":"1"},{"name":"data","nodeType":"YulIdentifier","src":"2735:4:92"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"2728:3:92"},"nodeType":"YulFunctionCall","src":"2728:12:92"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"2718:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"2749:38:92","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"2779:4:92"},{"kind":"number","nodeType":"YulLiteral","src":"2785:1:92","type":"","value":"1"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2775:3:92"},"nodeType":"YulFunctionCall","src":"2775:12:92"},"variables":[{"name":"outOfPlaceEncoding","nodeType":"YulTypedName","src":"2753:18:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"2826:31:92","statements":[{"nodeType":"YulAssignment","src":"2828:27:92","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"2842:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"2850:4:92","type":"","value":"0x7f"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2838:3:92"},"nodeType":"YulFunctionCall","src":"2838:17:92"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"2828:6:92"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"2806:18:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2799:6:92"},"nodeType":"YulFunctionCall","src":"2799:26:92"},"nodeType":"YulIf","src":"2796:61:92"},{"body":{"nodeType":"YulBlock","src":"2916:111:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2937:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2944:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"2949:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2940:3:92"},"nodeType":"YulFunctionCall","src":"2940:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2930:6:92"},"nodeType":"YulFunctionCall","src":"2930:31:92"},"nodeType":"YulExpressionStatement","src":"2930:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2981:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"2984:4:92","type":"","value":"0x22"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2974:6:92"},"nodeType":"YulFunctionCall","src":"2974:15:92"},"nodeType":"YulExpressionStatement","src":"2974:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3009:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3012:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3002:6:92"},"nodeType":"YulFunctionCall","src":"3002:15:92"},"nodeType":"YulExpressionStatement","src":"3002:15:92"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"2872:18:92"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"2895:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"2903:2:92","type":"","value":"32"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2892:2:92"},"nodeType":"YulFunctionCall","src":"2892:14:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"2869:2:92"},"nodeType":"YulFunctionCall","src":"2869:38:92"},"nodeType":"YulIf","src":"2866:161:92"}]},"name":"extract_byte_array_length","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"2688:4:92","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"2697:6:92","type":""}],"src":"2653:380:92"},{"body":{"nodeType":"YulBlock","src":"3070:95:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3087:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3094:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"3099:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"3090:3:92"},"nodeType":"YulFunctionCall","src":"3090:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3080:6:92"},"nodeType":"YulFunctionCall","src":"3080:31:92"},"nodeType":"YulExpressionStatement","src":"3080:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3127:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"3130:4:92","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3120:6:92"},"nodeType":"YulFunctionCall","src":"3120:15:92"},"nodeType":"YulExpressionStatement","src":"3120:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3151:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3154:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3144:6:92"},"nodeType":"YulFunctionCall","src":"3144:15:92"},"nodeType":"YulExpressionStatement","src":"3144:15:92"}]},"name":"panic_error_0x11","nodeType":"YulFunctionDefinition","src":"3038:127:92"},{"body":{"nodeType":"YulBlock","src":"3218:77:92","statements":[{"nodeType":"YulAssignment","src":"3228:16:92","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"3239:1:92"},{"name":"y","nodeType":"YulIdentifier","src":"3242:1:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3235:3:92"},"nodeType":"YulFunctionCall","src":"3235:9:92"},"variableNames":[{"name":"sum","nodeType":"YulIdentifier","src":"3228:3:92"}]},{"body":{"nodeType":"YulBlock","src":"3267:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"3269:16:92"},"nodeType":"YulFunctionCall","src":"3269:18:92"},"nodeType":"YulExpressionStatement","src":"3269:18:92"}]},"condition":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"3259:1:92"},{"name":"sum","nodeType":"YulIdentifier","src":"3262:3:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3256:2:92"},"nodeType":"YulFunctionCall","src":"3256:10:92"},"nodeType":"YulIf","src":"3253:36:92"}]},"name":"checked_add_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"3201:1:92","type":""},{"name":"y","nodeType":"YulTypedName","src":"3204:1:92","type":""}],"returnVariables":[{"name":"sum","nodeType":"YulTypedName","src":"3210:3:92","type":""}],"src":"3170:125:92"},{"body":{"nodeType":"YulBlock","src":"3474:227:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3491:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3502:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3484:6:92"},"nodeType":"YulFunctionCall","src":"3484:21:92"},"nodeType":"YulExpressionStatement","src":"3484:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3525:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3536:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3521:3:92"},"nodeType":"YulFunctionCall","src":"3521:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"3541:2:92","type":"","value":"37"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3514:6:92"},"nodeType":"YulFunctionCall","src":"3514:30:92"},"nodeType":"YulExpressionStatement","src":"3514:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3564:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3575:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3560:3:92"},"nodeType":"YulFunctionCall","src":"3560:18:92"},{"hexValue":"45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77","kind":"string","nodeType":"YulLiteral","src":"3580:34:92","type":"","value":"ERC20: decreased allowance below"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3553:6:92"},"nodeType":"YulFunctionCall","src":"3553:62:92"},"nodeType":"YulExpressionStatement","src":"3553:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3635:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3646:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3631:3:92"},"nodeType":"YulFunctionCall","src":"3631:18:92"},{"hexValue":"207a65726f","kind":"string","nodeType":"YulLiteral","src":"3651:7:92","type":"","value":" zero"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3624:6:92"},"nodeType":"YulFunctionCall","src":"3624:35:92"},"nodeType":"YulExpressionStatement","src":"3624:35:92"},{"nodeType":"YulAssignment","src":"3668:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3680:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3691:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3676:3:92"},"nodeType":"YulFunctionCall","src":"3676:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3668:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3451:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3465:4:92","type":""}],"src":"3300:401:92"},{"body":{"nodeType":"YulBlock","src":"3755:79:92","statements":[{"nodeType":"YulAssignment","src":"3765:17:92","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"3777:1:92"},{"name":"y","nodeType":"YulIdentifier","src":"3780:1:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3773:3:92"},"nodeType":"YulFunctionCall","src":"3773:9:92"},"variableNames":[{"name":"diff","nodeType":"YulIdentifier","src":"3765:4:92"}]},{"body":{"nodeType":"YulBlock","src":"3806:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"3808:16:92"},"nodeType":"YulFunctionCall","src":"3808:18:92"},"nodeType":"YulExpressionStatement","src":"3808:18:92"}]},"condition":{"arguments":[{"name":"diff","nodeType":"YulIdentifier","src":"3797:4:92"},{"name":"x","nodeType":"YulIdentifier","src":"3803:1:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3794:2:92"},"nodeType":"YulFunctionCall","src":"3794:11:92"},"nodeType":"YulIf","src":"3791:37:92"}]},"name":"checked_sub_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"3737:1:92","type":""},{"name":"y","nodeType":"YulTypedName","src":"3740:1:92","type":""}],"returnVariables":[{"name":"diff","nodeType":"YulTypedName","src":"3746:4:92","type":""}],"src":"3706:128:92"},{"body":{"nodeType":"YulBlock","src":"4013:226:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4030:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4041:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4023:6:92"},"nodeType":"YulFunctionCall","src":"4023:21:92"},"nodeType":"YulExpressionStatement","src":"4023:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4064:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4075:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4060:3:92"},"nodeType":"YulFunctionCall","src":"4060:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"4080:2:92","type":"","value":"36"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4053:6:92"},"nodeType":"YulFunctionCall","src":"4053:30:92"},"nodeType":"YulExpressionStatement","src":"4053:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4103:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4114:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4099:3:92"},"nodeType":"YulFunctionCall","src":"4099:18:92"},{"hexValue":"45524332303a20617070726f76652066726f6d20746865207a65726f20616464","kind":"string","nodeType":"YulLiteral","src":"4119:34:92","type":"","value":"ERC20: approve from the zero add"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4092:6:92"},"nodeType":"YulFunctionCall","src":"4092:62:92"},"nodeType":"YulExpressionStatement","src":"4092:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4174:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4185:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4170:3:92"},"nodeType":"YulFunctionCall","src":"4170:18:92"},{"hexValue":"72657373","kind":"string","nodeType":"YulLiteral","src":"4190:6:92","type":"","value":"ress"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4163:6:92"},"nodeType":"YulFunctionCall","src":"4163:34:92"},"nodeType":"YulExpressionStatement","src":"4163:34:92"},{"nodeType":"YulAssignment","src":"4206:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4218:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4229:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4214:3:92"},"nodeType":"YulFunctionCall","src":"4214:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4206:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3990:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4004:4:92","type":""}],"src":"3839:400:92"},{"body":{"nodeType":"YulBlock","src":"4418:224:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4435:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4446:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4428:6:92"},"nodeType":"YulFunctionCall","src":"4428:21:92"},"nodeType":"YulExpressionStatement","src":"4428:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4469:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4480:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4465:3:92"},"nodeType":"YulFunctionCall","src":"4465:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"4485:2:92","type":"","value":"34"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4458:6:92"},"nodeType":"YulFunctionCall","src":"4458:30:92"},"nodeType":"YulExpressionStatement","src":"4458:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4508:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4519:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4504:3:92"},"nodeType":"YulFunctionCall","src":"4504:18:92"},{"hexValue":"45524332303a20617070726f766520746f20746865207a65726f206164647265","kind":"string","nodeType":"YulLiteral","src":"4524:34:92","type":"","value":"ERC20: approve to the zero addre"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4497:6:92"},"nodeType":"YulFunctionCall","src":"4497:62:92"},"nodeType":"YulExpressionStatement","src":"4497:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4579:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4590:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4575:3:92"},"nodeType":"YulFunctionCall","src":"4575:18:92"},{"hexValue":"7373","kind":"string","nodeType":"YulLiteral","src":"4595:4:92","type":"","value":"ss"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4568:6:92"},"nodeType":"YulFunctionCall","src":"4568:32:92"},"nodeType":"YulExpressionStatement","src":"4568:32:92"},{"nodeType":"YulAssignment","src":"4609:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4621:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4632:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4617:3:92"},"nodeType":"YulFunctionCall","src":"4617:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4609:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4395:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4409:4:92","type":""}],"src":"4244:398:92"},{"body":{"nodeType":"YulBlock","src":"4821:179:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4838:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4849:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4831:6:92"},"nodeType":"YulFunctionCall","src":"4831:21:92"},"nodeType":"YulExpressionStatement","src":"4831:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4872:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4883:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4868:3:92"},"nodeType":"YulFunctionCall","src":"4868:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"4888:2:92","type":"","value":"29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4861:6:92"},"nodeType":"YulFunctionCall","src":"4861:30:92"},"nodeType":"YulExpressionStatement","src":"4861:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4911:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4922:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4907:3:92"},"nodeType":"YulFunctionCall","src":"4907:18:92"},{"hexValue":"45524332303a20696e73756666696369656e7420616c6c6f77616e6365","kind":"string","nodeType":"YulLiteral","src":"4927:31:92","type":"","value":"ERC20: insufficient allowance"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4900:6:92"},"nodeType":"YulFunctionCall","src":"4900:59:92"},"nodeType":"YulExpressionStatement","src":"4900:59:92"},{"nodeType":"YulAssignment","src":"4968:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4980:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4991:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4976:3:92"},"nodeType":"YulFunctionCall","src":"4976:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4968:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_3b6607e091cba9325f958656d2b5e0622ab7dc0eac71a26ac788cb25bc19f4fe__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4798:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4812:4:92","type":""}],"src":"4647:353:92"},{"body":{"nodeType":"YulBlock","src":"5179:227:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5196:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5207:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5189:6:92"},"nodeType":"YulFunctionCall","src":"5189:21:92"},"nodeType":"YulExpressionStatement","src":"5189:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5230:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5241:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5226:3:92"},"nodeType":"YulFunctionCall","src":"5226:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"5246:2:92","type":"","value":"37"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5219:6:92"},"nodeType":"YulFunctionCall","src":"5219:30:92"},"nodeType":"YulExpressionStatement","src":"5219:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5269:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5280:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5265:3:92"},"nodeType":"YulFunctionCall","src":"5265:18:92"},{"hexValue":"45524332303a207472616e736665722066726f6d20746865207a65726f206164","kind":"string","nodeType":"YulLiteral","src":"5285:34:92","type":"","value":"ERC20: transfer from the zero ad"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5258:6:92"},"nodeType":"YulFunctionCall","src":"5258:62:92"},"nodeType":"YulExpressionStatement","src":"5258:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5340:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5351:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5336:3:92"},"nodeType":"YulFunctionCall","src":"5336:18:92"},{"hexValue":"6472657373","kind":"string","nodeType":"YulLiteral","src":"5356:7:92","type":"","value":"dress"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5329:6:92"},"nodeType":"YulFunctionCall","src":"5329:35:92"},"nodeType":"YulExpressionStatement","src":"5329:35:92"},{"nodeType":"YulAssignment","src":"5373:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5385:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5396:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5381:3:92"},"nodeType":"YulFunctionCall","src":"5381:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5373:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5156:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5170:4:92","type":""}],"src":"5005:401:92"},{"body":{"nodeType":"YulBlock","src":"5585:225:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5602:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5613:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5595:6:92"},"nodeType":"YulFunctionCall","src":"5595:21:92"},"nodeType":"YulExpressionStatement","src":"5595:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5636:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5647:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5632:3:92"},"nodeType":"YulFunctionCall","src":"5632:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"5652:2:92","type":"","value":"35"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5625:6:92"},"nodeType":"YulFunctionCall","src":"5625:30:92"},"nodeType":"YulExpressionStatement","src":"5625:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5675:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5686:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5671:3:92"},"nodeType":"YulFunctionCall","src":"5671:18:92"},{"hexValue":"45524332303a207472616e7366657220746f20746865207a65726f2061646472","kind":"string","nodeType":"YulLiteral","src":"5691:34:92","type":"","value":"ERC20: transfer to the zero addr"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5664:6:92"},"nodeType":"YulFunctionCall","src":"5664:62:92"},"nodeType":"YulExpressionStatement","src":"5664:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5746:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5757:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5742:3:92"},"nodeType":"YulFunctionCall","src":"5742:18:92"},{"hexValue":"657373","kind":"string","nodeType":"YulLiteral","src":"5762:5:92","type":"","value":"ess"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5735:6:92"},"nodeType":"YulFunctionCall","src":"5735:33:92"},"nodeType":"YulExpressionStatement","src":"5735:33:92"},{"nodeType":"YulAssignment","src":"5777:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5789:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5800:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5785:3:92"},"nodeType":"YulFunctionCall","src":"5785:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5777:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5562:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5576:4:92","type":""}],"src":"5411:399:92"},{"body":{"nodeType":"YulBlock","src":"5989:228:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6006:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6017:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5999:6:92"},"nodeType":"YulFunctionCall","src":"5999:21:92"},"nodeType":"YulExpressionStatement","src":"5999:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6040:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6051:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6036:3:92"},"nodeType":"YulFunctionCall","src":"6036:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"6056:2:92","type":"","value":"38"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6029:6:92"},"nodeType":"YulFunctionCall","src":"6029:30:92"},"nodeType":"YulExpressionStatement","src":"6029:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6079:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6090:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6075:3:92"},"nodeType":"YulFunctionCall","src":"6075:18:92"},{"hexValue":"45524332303a207472616e7366657220616d6f756e7420657863656564732062","kind":"string","nodeType":"YulLiteral","src":"6095:34:92","type":"","value":"ERC20: transfer amount exceeds b"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6068:6:92"},"nodeType":"YulFunctionCall","src":"6068:62:92"},"nodeType":"YulExpressionStatement","src":"6068:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6150:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6161:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6146:3:92"},"nodeType":"YulFunctionCall","src":"6146:18:92"},{"hexValue":"616c616e6365","kind":"string","nodeType":"YulLiteral","src":"6166:8:92","type":"","value":"alance"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6139:6:92"},"nodeType":"YulFunctionCall","src":"6139:36:92"},"nodeType":"YulExpressionStatement","src":"6139:36:92"},{"nodeType":"YulAssignment","src":"6184:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6196:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6207:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6192:3:92"},"nodeType":"YulFunctionCall","src":"6192:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6184:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5966:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5980:4:92","type":""}],"src":"5815:402:92"},{"body":{"nodeType":"YulBlock","src":"6396:181:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6413:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6424:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6406:6:92"},"nodeType":"YulFunctionCall","src":"6406:21:92"},"nodeType":"YulExpressionStatement","src":"6406:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6447:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6458:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6443:3:92"},"nodeType":"YulFunctionCall","src":"6443:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"6463:2:92","type":"","value":"31"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6436:6:92"},"nodeType":"YulFunctionCall","src":"6436:30:92"},"nodeType":"YulExpressionStatement","src":"6436:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6486:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6497:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6482:3:92"},"nodeType":"YulFunctionCall","src":"6482:18:92"},{"hexValue":"45524332303a206d696e7420746f20746865207a65726f2061646472657373","kind":"string","nodeType":"YulLiteral","src":"6502:33:92","type":"","value":"ERC20: mint to the zero address"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6475:6:92"},"nodeType":"YulFunctionCall","src":"6475:61:92"},"nodeType":"YulExpressionStatement","src":"6475:61:92"},{"nodeType":"YulAssignment","src":"6545:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6557:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6568:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6553:3:92"},"nodeType":"YulFunctionCall","src":"6553:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6545:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6373:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6387:4:92","type":""}],"src":"6222:355:92"},{"body":{"nodeType":"YulBlock","src":"6756:223:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6773:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6784:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6766:6:92"},"nodeType":"YulFunctionCall","src":"6766:21:92"},"nodeType":"YulExpressionStatement","src":"6766:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6807:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6818:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6803:3:92"},"nodeType":"YulFunctionCall","src":"6803:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"6823:2:92","type":"","value":"33"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6796:6:92"},"nodeType":"YulFunctionCall","src":"6796:30:92"},"nodeType":"YulExpressionStatement","src":"6796:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6846:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6857:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6842:3:92"},"nodeType":"YulFunctionCall","src":"6842:18:92"},{"hexValue":"45524332303a206275726e2066726f6d20746865207a65726f20616464726573","kind":"string","nodeType":"YulLiteral","src":"6862:34:92","type":"","value":"ERC20: burn from the zero addres"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6835:6:92"},"nodeType":"YulFunctionCall","src":"6835:62:92"},"nodeType":"YulExpressionStatement","src":"6835:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6917:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6928:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6913:3:92"},"nodeType":"YulFunctionCall","src":"6913:18:92"},{"hexValue":"73","kind":"string","nodeType":"YulLiteral","src":"6933:3:92","type":"","value":"s"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6906:6:92"},"nodeType":"YulFunctionCall","src":"6906:31:92"},"nodeType":"YulExpressionStatement","src":"6906:31:92"},{"nodeType":"YulAssignment","src":"6946:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6958:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6969:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6954:3:92"},"nodeType":"YulFunctionCall","src":"6954:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6946:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6733:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6747:4:92","type":""}],"src":"6582:397:92"},{"body":{"nodeType":"YulBlock","src":"7158:224:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7175:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7186:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7168:6:92"},"nodeType":"YulFunctionCall","src":"7168:21:92"},"nodeType":"YulExpressionStatement","src":"7168:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7209:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7220:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7205:3:92"},"nodeType":"YulFunctionCall","src":"7205:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"7225:2:92","type":"","value":"34"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7198:6:92"},"nodeType":"YulFunctionCall","src":"7198:30:92"},"nodeType":"YulExpressionStatement","src":"7198:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7248:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7259:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7244:3:92"},"nodeType":"YulFunctionCall","src":"7244:18:92"},{"hexValue":"45524332303a206275726e20616d6f756e7420657863656564732062616c616e","kind":"string","nodeType":"YulLiteral","src":"7264:34:92","type":"","value":"ERC20: burn amount exceeds balan"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7237:6:92"},"nodeType":"YulFunctionCall","src":"7237:62:92"},"nodeType":"YulExpressionStatement","src":"7237:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7319:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7330:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7315:3:92"},"nodeType":"YulFunctionCall","src":"7315:18:92"},{"hexValue":"6365","kind":"string","nodeType":"YulLiteral","src":"7335:4:92","type":"","value":"ce"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7308:6:92"},"nodeType":"YulFunctionCall","src":"7308:32:92"},"nodeType":"YulExpressionStatement","src":"7308:32:92"},{"nodeType":"YulAssignment","src":"7349:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7361:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7372:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7357:3:92"},"nodeType":"YulFunctionCall","src":"7357:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7349:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_149b126e7125232b4200af45303d04fba8b74653b1a295a6a561a528c33fefdd__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7135:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7149:4:92","type":""}],"src":"6984:398:92"}]},"contents":"{\n { }\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n let _1 := 32\n mstore(headStart, _1)\n let length := mload(value0)\n mstore(add(headStart, _1), length)\n let i := 0\n for { } lt(i, length) { i := add(i, _1) }\n {\n mstore(add(add(headStart, i), 64), mload(add(add(value0, i), _1)))\n }\n mstore(add(add(headStart, length), 64), 0)\n tail := add(add(headStart, and(add(length, 31), not(31))), 64)\n }\n function abi_decode_address(offset) -> value\n {\n value := calldataload(offset)\n if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := calldataload(add(headStart, 32))\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := abi_decode_address(add(headStart, 32))\n value2 := calldataload(add(headStart, 64))\n }\n function abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xff))\n }\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n }\n function abi_decode_tuple_t_uint8(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n if iszero(eq(value, and(value, 0xff))) { revert(0, 0) }\n value0 := value\n }\n function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := abi_decode_address(add(headStart, 32))\n }\n function extract_byte_array_length(data) -> length\n {\n length := shr(1, data)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n if eq(outOfPlaceEncoding, lt(length, 32))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n }\n function panic_error_0x11()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n function checked_add_t_uint256(x, y) -> sum\n {\n sum := add(x, y)\n if gt(x, sum) { panic_error_0x11() }\n }\n function abi_encode_tuple_t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 37)\n mstore(add(headStart, 64), \"ERC20: decreased allowance below\")\n mstore(add(headStart, 96), \" zero\")\n tail := add(headStart, 128)\n }\n function checked_sub_t_uint256(x, y) -> diff\n {\n diff := sub(x, y)\n if gt(diff, x) { panic_error_0x11() }\n }\n function abi_encode_tuple_t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 36)\n mstore(add(headStart, 64), \"ERC20: approve from the zero add\")\n mstore(add(headStart, 96), \"ress\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 34)\n mstore(add(headStart, 64), \"ERC20: approve to the zero addre\")\n mstore(add(headStart, 96), \"ss\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_3b6607e091cba9325f958656d2b5e0622ab7dc0eac71a26ac788cb25bc19f4fe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 29)\n mstore(add(headStart, 64), \"ERC20: insufficient allowance\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 37)\n mstore(add(headStart, 64), \"ERC20: transfer from the zero ad\")\n mstore(add(headStart, 96), \"dress\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 35)\n mstore(add(headStart, 64), \"ERC20: transfer to the zero addr\")\n mstore(add(headStart, 96), \"ess\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 38)\n mstore(add(headStart, 64), \"ERC20: transfer amount exceeds b\")\n mstore(add(headStart, 96), \"alance\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 31)\n mstore(add(headStart, 64), \"ERC20: mint to the zero address\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 33)\n mstore(add(headStart, 64), \"ERC20: burn from the zero addres\")\n mstore(add(headStart, 96), \"s\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_149b126e7125232b4200af45303d04fba8b74653b1a295a6a561a528c33fefdd__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 34)\n mstore(add(headStart, 64), \"ERC20: burn amount exceeds balan\")\n mstore(add(headStart, 96), \"ce\")\n tail := add(headStart, 128)\n }\n}","id":92,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100ea5760003560e01c80637a1395aa1161008c578063a9059cbb11610066578063a9059cbb146101eb578063dd62ed3e146101fe578063e30443bc14610237578063f785ef721461024a57600080fd5b80637a1395aa146101aa57806395d89b41146101d0578063a457c2d7146101d857600080fd5b806323b872dd116100c857806323b872dd14610142578063313ce56714610155578063395093511461016e57806370a082311461018157600080fd5b806306fdde03146100ef578063095ea7b31461010d57806318160ddd14610130575b600080fd5b6100f7610257565b6040516101049190610a00565b60405180910390f35b61012061011b366004610a6a565b6102e9565b6040519015158152602001610104565b6002545b604051908152602001610104565b610120610150366004610a94565b610303565b60055460ff165b60405160ff9091168152602001610104565b61012061017c366004610a6a565b610327565b61013461018f366004610ad0565b6001600160a01b031660009081526020819052604090205490565b6101ce6101b8366004610af2565b6005805460ff191660ff92909216919091179055565b005b6100f7610366565b6101206101e6366004610a6a565b610375565b6101206101f9366004610a6a565b610424565b61013461020c366004610b15565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6101ce610245366004610a6a565b610432565b60055461015c9060ff1681565b60606003805461026690610b48565b80601f016020809104026020016040519081016040528092919081815260200182805461029290610b48565b80156102df5780601f106102b4576101008083540402835291602001916102df565b820191906000526020600020905b8154815290600101906020018083116102c257829003601f168201915b5050505050905090565b6000336102f7818585610486565b60019150505b92915050565b6000336103118582856105aa565b61031c85858561063c565b506001949350505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091906102f79082908690610361908790610b98565b610486565b60606004805461026690610b48565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909190838110156104175760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b61031c8286868403610486565b6000336102f781858561063c565b6001600160a01b0382166000908152602081905260409020548181101561046b57610466836104618385610bab565b61080f565b505050565b8181111561046657610466836104818484610bab565b6108ce565b6001600160a01b0383166104e85760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161040e565b6001600160a01b0382166105495760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161040e565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03838116600090815260016020908152604080832093861683529290522054600019811461063657818110156106295760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161040e565b6106368484848403610486565b50505050565b6001600160a01b0383166106b85760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f6472657373000000000000000000000000000000000000000000000000000000606482015260840161040e565b6001600160a01b03821661071a5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161040e565b6001600160a01b038316600090815260208190526040902054818110156107a95760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e63650000000000000000000000000000000000000000000000000000606482015260840161040e565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610636565b6001600160a01b0382166108655760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161040e565b80600260008282546108779190610b98565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6001600160a01b03821661092e5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161040e565b6001600160a01b038216600090815260208190526040902054818110156109a25760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b606482015260840161040e565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b600060208083528351808285015260005b81811015610a2d57858101830151858201604001528201610a11565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610a6557600080fd5b919050565b60008060408385031215610a7d57600080fd5b610a8683610a4e565b946020939093013593505050565b600080600060608486031215610aa957600080fd5b610ab284610a4e565b9250610ac060208501610a4e565b9150604084013590509250925092565b600060208284031215610ae257600080fd5b610aeb82610a4e565b9392505050565b600060208284031215610b0457600080fd5b813560ff81168114610aeb57600080fd5b60008060408385031215610b2857600080fd5b610b3183610a4e565b9150610b3f60208401610a4e565b90509250929050565b600181811c90821680610b5c57607f821691505b602082108103610b7c57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156102fd576102fd610b82565b818103818111156102fd576102fd610b8256fea164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xEA JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7A1395AA GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xA9059CBB GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x1EB JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x1FE JUMPI DUP1 PUSH4 0xE30443BC EQ PUSH2 0x237 JUMPI DUP1 PUSH4 0xF785EF72 EQ PUSH2 0x24A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x7A1395AA EQ PUSH2 0x1AA JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x1D0 JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x1D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0xC8 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x142 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x155 JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x16E JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x181 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xEF JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x10D JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x130 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF7 PUSH2 0x257 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x104 SWAP2 SWAP1 PUSH2 0xA00 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x120 PUSH2 0x11B CALLDATASIZE PUSH1 0x4 PUSH2 0xA6A JUMP JUMPDEST PUSH2 0x2E9 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x104 JUMP JUMPDEST PUSH1 0x2 SLOAD JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x104 JUMP JUMPDEST PUSH2 0x120 PUSH2 0x150 CALLDATASIZE PUSH1 0x4 PUSH2 0xA94 JUMP JUMPDEST PUSH2 0x303 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x104 JUMP JUMPDEST PUSH2 0x120 PUSH2 0x17C CALLDATASIZE PUSH1 0x4 PUSH2 0xA6A JUMP JUMPDEST PUSH2 0x327 JUMP JUMPDEST PUSH2 0x134 PUSH2 0x18F CALLDATASIZE PUSH1 0x4 PUSH2 0xAD0 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x1CE PUSH2 0x1B8 CALLDATASIZE PUSH1 0x4 PUSH2 0xAF2 JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST STOP JUMPDEST PUSH2 0xF7 PUSH2 0x366 JUMP JUMPDEST PUSH2 0x120 PUSH2 0x1E6 CALLDATASIZE PUSH1 0x4 PUSH2 0xA6A JUMP JUMPDEST PUSH2 0x375 JUMP JUMPDEST PUSH2 0x120 PUSH2 0x1F9 CALLDATASIZE PUSH1 0x4 PUSH2 0xA6A JUMP JUMPDEST PUSH2 0x424 JUMP JUMPDEST PUSH2 0x134 PUSH2 0x20C CALLDATASIZE PUSH1 0x4 PUSH2 0xB15 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x1CE PUSH2 0x245 CALLDATASIZE PUSH1 0x4 PUSH2 0xA6A JUMP JUMPDEST PUSH2 0x432 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH2 0x15C SWAP1 PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x3 DUP1 SLOAD PUSH2 0x266 SWAP1 PUSH2 0xB48 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x292 SWAP1 PUSH2 0xB48 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x2DF JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x2B4 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x2DF JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x2C2 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0x2F7 DUP2 DUP6 DUP6 PUSH2 0x486 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0x311 DUP6 DUP3 DUP6 PUSH2 0x5AA JUMP JUMPDEST PUSH2 0x31C DUP6 DUP6 DUP6 PUSH2 0x63C JUMP JUMPDEST POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 SWAP1 PUSH2 0x2F7 SWAP1 DUP3 SWAP1 DUP7 SWAP1 PUSH2 0x361 SWAP1 DUP8 SWAP1 PUSH2 0xB98 JUMP JUMPDEST PUSH2 0x486 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x4 DUP1 SLOAD PUSH2 0x266 SWAP1 PUSH2 0xB48 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 SWAP1 DUP4 DUP2 LT ISZERO PUSH2 0x417 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A2064656372656173656420616C6C6F77616E63652062656C6F77 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x207A65726F000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x31C DUP3 DUP7 DUP7 DUP5 SUB PUSH2 0x486 JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0x2F7 DUP2 DUP6 DUP6 PUSH2 0x63C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 DUP2 LT ISZERO PUSH2 0x46B JUMPI PUSH2 0x466 DUP4 PUSH2 0x461 DUP4 DUP6 PUSH2 0xBAB JUMP JUMPDEST PUSH2 0x80F JUMP JUMPDEST POP POP POP JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x466 JUMPI PUSH2 0x466 DUP4 PUSH2 0x481 DUP5 DUP5 PUSH2 0xBAB JUMP JUMPDEST PUSH2 0x8CE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x4E8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x45524332303A20617070726F76652066726F6D20746865207A65726F20616464 PUSH1 0x44 DUP3 ADD MSTORE PUSH4 0x72657373 PUSH1 0xE0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x40E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x549 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20617070726F766520746F20746865207A65726F206164647265 PUSH1 0x44 DUP3 ADD MSTORE PUSH2 0x7373 PUSH1 0xF0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x40E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE SWAP1 MLOAD DUP5 DUP2 MSTORE PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP7 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0x0 NOT DUP2 EQ PUSH2 0x636 JUMPI DUP2 DUP2 LT ISZERO PUSH2 0x629 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E73756666696369656E7420616C6C6F77616E6365000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x40E JUMP JUMPDEST PUSH2 0x636 DUP5 DUP5 DUP5 DUP5 SUB PUSH2 0x486 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x6B8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E736665722066726F6D20746865207A65726F206164 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6472657373000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x40E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x71A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x23 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E7366657220746F20746865207A65726F2061646472 PUSH1 0x44 DUP3 ADD MSTORE PUSH3 0x657373 PUSH1 0xE8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x40E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 DUP2 LT ISZERO PUSH2 0x7A9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E7366657220616D6F756E7420657863656564732062 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x616C616E63650000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x40E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP8 SUB SWAP1 SSTORE SWAP4 DUP8 AND DUP1 DUP4 MSTORE SWAP2 DUP5 SWAP1 KECCAK256 DUP1 SLOAD DUP8 ADD SWAP1 SSTORE SWAP3 MLOAD DUP6 DUP2 MSTORE SWAP1 SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH2 0x636 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x865 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A206D696E7420746F20746865207A65726F206164647265737300 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x40E JUMP JUMPDEST DUP1 PUSH1 0x2 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x877 SWAP2 SWAP1 PUSH2 0xB98 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD DUP7 ADD SWAP1 SSTORE MLOAD DUP5 DUP2 MSTORE PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x92E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A206275726E2066726F6D20746865207A65726F20616464726573 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x73 PUSH1 0xF8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x40E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 DUP2 LT ISZERO PUSH2 0x9A2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A206275726E20616D6F756E7420657863656564732062616C616E PUSH1 0x44 DUP3 ADD MSTORE PUSH2 0x6365 PUSH1 0xF0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x40E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP7 DUP7 SUB SWAP1 SSTORE PUSH1 0x2 DUP1 SLOAD DUP8 SWAP1 SUB SWAP1 SSTORE MLOAD DUP6 DUP2 MSTORE SWAP2 SWAP3 SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xA2D JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0xA11 JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x40 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x40 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP3 POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xA65 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xA7D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA86 DUP4 PUSH2 0xA4E JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xAA9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xAB2 DUP5 PUSH2 0xA4E JUMP JUMPDEST SWAP3 POP PUSH2 0xAC0 PUSH1 0x20 DUP6 ADD PUSH2 0xA4E JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xAE2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xAEB DUP3 PUSH2 0xA4E JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xB04 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0xAEB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xB28 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB31 DUP4 PUSH2 0xA4E JUMP JUMPDEST SWAP2 POP PUSH2 0xB3F PUSH1 0x20 DUP5 ADD PUSH2 0xA4E JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0xB5C JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0xB7C JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x2FD JUMPI PUSH2 0x2FD PUSH2 0xB82 JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x2FD JUMPI PUSH2 0x2FD PUSH2 0xB82 JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"293:694:59:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2158:98:26;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4444:197;;;;;;:::i;:::-;;:::i;:::-;;;1192:14:92;;1185:22;1167:41;;1155:2;1140:18;4444:197:26;1027:187:92;3255:106:26;3342:12;;3255:106;;;1365:25:92;;;1353:2;1338:18;3255:106:26;1219:177:92;5203:256:26;;;;;;:::i;:::-;;:::i;536:90:59:-;610:9;;;;536:90;;;1906:4:92;1894:17;;;1876:36;;1864:2;1849:18;536:90:59;1734:184:92;5854:234:26;;;;;;:::i;:::-;;:::i;3419:125::-;;;;;;:::i;:::-;-1:-1:-1;;;;;3519:18:26;3493:7;3519:18;;;;;;;;;;;;3419:125;447:83:59;;;;;;:::i;:::-;502:9;:21;;-1:-1:-1;;502:21:59;;;;;;;;;;;;447:83;;;2369:102:26;;;:::i;6575:427::-;;;;;;:::i;:::-;;:::i;3740:189::-;;;;;;:::i;:::-;;:::i;3987:149::-;;;;;;:::i;:::-;-1:-1:-1;;;;;4102:18:26;;;4076:7;4102:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3987:149;739:246:59;;;;;;:::i;:::-;;:::i;327:27::-;;;;;;;;;2158:98:26;2212:13;2244:5;2237:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2158:98;:::o;4444:197::-;4527:4;734:10:34;4581:32:26;734:10:34;4597:7:26;4606:6;4581:8;:32::i;:::-;4630:4;4623:11;;;4444:197;;;;;:::o;5203:256::-;5300:4;734:10:34;5356:38:26;5372:4;734:10:34;5387:6:26;5356:15;:38::i;:::-;5404:27;5414:4;5420:2;5424:6;5404:9;:27::i;:::-;-1:-1:-1;5448:4:26;;5203:256;-1:-1:-1;;;;5203:256:26:o;5854:234::-;734:10:34;5942:4:26;4102:18;;;:11;:18;;;;;;;;-1:-1:-1;;;;;4102:27:26;;;;;;;;;;5942:4;;734:10:34;5996:64:26;;734:10:34;;4102:27:26;;6021:38;;6049:10;;6021:38;:::i;:::-;5996:8;:64::i;2369:102::-;2425:13;2457:7;2450:14;;;;;:::i;6575:427::-;734:10:34;6668:4:26;4102:18;;;:11;:18;;;;;;;;-1:-1:-1;;;;;4102:27:26;;;;;;;;;;6668:4;;734:10:34;6812:15:26;6792:16;:35;;6784:85;;;;-1:-1:-1;;;6784:85:26;;3502:2:92;6784:85:26;;;3484:21:92;3541:2;3521:18;;;3514:30;3580:34;3560:18;;;3553:62;3651:7;3631:18;;;3624:35;3676:19;;6784:85:26;;;;;;;;;6903:60;6912:5;6919:7;6947:15;6928:16;:34;6903:8;:60::i;3740:189::-;3819:4;734:10:34;3873:28:26;734:10:34;3890:2:26;3894:6;3873:9;:28::i;739:246:59:-;-1:-1:-1;;;;;3519:18:26;;804:11:59;3519:18:26;;;;;;;;;;;845:12:59;;;841:138;;;873:23;879:2;883:12;892:3;883:6;:12;:::i;:::-;873:5;:23::i;:::-;794:191;739:246;;:::o;841:138::-;923:6;917:3;:12;913:66;;;945:23;951:2;955:12;961:6;955:3;:12;:::i;:::-;945:5;:23::i;10457:340:26:-;-1:-1:-1;;;;;10558:19:26;;10550:68;;;;-1:-1:-1;;;10550:68:26;;4041:2:92;10550:68:26;;;4023:21:92;4080:2;4060:18;;;4053:30;4119:34;4099:18;;;4092:62;-1:-1:-1;;;4170:18:92;;;4163:34;4214:19;;10550:68:26;3839:400:92;10550:68:26;-1:-1:-1;;;;;10636:21:26;;10628:68;;;;-1:-1:-1;;;10628:68:26;;4446:2:92;10628:68:26;;;4428:21:92;4485:2;4465:18;;;4458:30;4524:34;4504:18;;;4497:62;-1:-1:-1;;;4575:18:92;;;4568:32;4617:19;;10628:68:26;4244:398:92;10628:68:26;-1:-1:-1;;;;;10707:18:26;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;10758:32;;1365:25:92;;;10758:32:26;;1338:18:92;10758:32:26;;;;;;;10457:340;;;:::o;11078:411::-;-1:-1:-1;;;;;4102:18:26;;;11178:24;4102:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;-1:-1:-1;;11244:37:26;;11240:243;;11325:6;11305:16;:26;;11297:68;;;;-1:-1:-1;;;11297:68:26;;4849:2:92;11297:68:26;;;4831:21:92;4888:2;4868:18;;;4861:30;4927:31;4907:18;;;4900:59;4976:18;;11297:68:26;4647:353:92;11297:68:26;11407:51;11416:5;11423:7;11451:6;11432:16;:25;11407:8;:51::i;:::-;11168:321;11078:411;;;:::o;7456:788::-;-1:-1:-1;;;;;7552:18:26;;7544:68;;;;-1:-1:-1;;;7544:68:26;;5207:2:92;7544:68:26;;;5189:21:92;5246:2;5226:18;;;5219:30;5285:34;5265:18;;;5258:62;5356:7;5336:18;;;5329:35;5381:19;;7544:68:26;5005:401:92;7544:68:26;-1:-1:-1;;;;;7630:16:26;;7622:64;;;;-1:-1:-1;;;7622:64:26;;5613:2:92;7622:64:26;;;5595:21:92;5652:2;5632:18;;;5625:30;5691:34;5671:18;;;5664:62;-1:-1:-1;;;5742:18:92;;;5735:33;5785:19;;7622:64:26;5411:399:92;7622:64:26;-1:-1:-1;;;;;7768:15:26;;7746:19;7768:15;;;;;;;;;;;7801:21;;;;7793:72;;;;-1:-1:-1;;;7793:72:26;;6017:2:92;7793:72:26;;;5999:21:92;6056:2;6036:18;;;6029:30;6095:34;6075:18;;;6068:62;6166:8;6146:18;;;6139:36;6192:19;;7793:72:26;5815:402:92;7793:72:26;-1:-1:-1;;;;;7899:15:26;;;:9;:15;;;;;;;;;;;7917:20;;;7899:38;;8114:13;;;;;;;;;;:23;;;;;;8163:26;;1365:25:92;;;8114:13:26;;8163:26;;1338:18:92;8163:26:26;;;;;;;8200:37;739:246:59;8520:535:26;-1:-1:-1;;;;;8603:21:26;;8595:65;;;;-1:-1:-1;;;8595:65:26;;6424:2:92;8595:65:26;;;6406:21:92;6463:2;6443:18;;;6436:30;6502:33;6482:18;;;6475:61;6553:18;;8595:65:26;6222:355:92;8595:65:26;8747:6;8731:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;8899:18:26;;:9;:18;;;;;;;;;;;:28;;;;;;8952:37;1365:25:92;;;8952:37:26;;1338:18:92;8952:37:26;;;;;;;8520:535;;:::o;9375:659::-;-1:-1:-1;;;;;9458:21:26;;9450:67;;;;-1:-1:-1;;;9450:67:26;;6784:2:92;9450:67:26;;;6766:21:92;6823:2;6803:18;;;6796:30;6862:34;6842:18;;;6835:62;-1:-1:-1;;;6913:18:92;;;6906:31;6954:19;;9450:67:26;6582:397:92;9450:67:26;-1:-1:-1;;;;;9613:18:26;;9588:22;9613:18;;;;;;;;;;;9649:24;;;;9641:71;;;;-1:-1:-1;;;9641:71:26;;7186:2:92;9641:71:26;;;7168:21:92;7225:2;7205:18;;;7198:30;7264:34;7244:18;;;7237:62;-1:-1:-1;;;7315:18:92;;;7308:32;7357:19;;9641:71:26;6984:398:92;9641:71:26;-1:-1:-1;;;;;9746:18:26;;:9;:18;;;;;;;;;;;9767:23;;;9746:44;;9883:12;:22;;;;;;;9931:37;1365:25:92;;;9746:9:26;;:18;9931:37;;1338:18:92;9931:37:26;;;;;;;794:191:59;739:246;;:::o;14:548:92:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:196::-;635:20;;-1:-1:-1;;;;;684:54:92;;674:65;;664:93;;753:1;750;743:12;664:93;567:196;;;:::o;768:254::-;836:6;844;897:2;885:9;876:7;872:23;868:32;865:52;;;913:1;910;903:12;865:52;936:29;955:9;936:29;:::i;:::-;926:39;1012:2;997:18;;;;984:32;;-1:-1:-1;;;768:254:92:o;1401:328::-;1478:6;1486;1494;1547:2;1535:9;1526:7;1522:23;1518:32;1515:52;;;1563:1;1560;1553:12;1515:52;1586:29;1605:9;1586:29;:::i;:::-;1576:39;;1634:38;1668:2;1657:9;1653:18;1634:38;:::i;:::-;1624:48;;1719:2;1708:9;1704:18;1691:32;1681:42;;1401:328;;;;;:::o;1923:186::-;1982:6;2035:2;2023:9;2014:7;2010:23;2006:32;2003:52;;;2051:1;2048;2041:12;2003:52;2074:29;2093:9;2074:29;:::i;:::-;2064:39;1923:186;-1:-1:-1;;;1923:186:92:o;2114:269::-;2171:6;2224:2;2212:9;2203:7;2199:23;2195:32;2192:52;;;2240:1;2237;2230:12;2192:52;2279:9;2266:23;2329:4;2322:5;2318:16;2311:5;2308:27;2298:55;;2349:1;2346;2339:12;2388:260;2456:6;2464;2517:2;2505:9;2496:7;2492:23;2488:32;2485:52;;;2533:1;2530;2523:12;2485:52;2556:29;2575:9;2556:29;:::i;:::-;2546:39;;2604:38;2638:2;2627:9;2623:18;2604:38;:::i;:::-;2594:48;;2388:260;;;;;:::o;2653:380::-;2732:1;2728:12;;;;2775;;;2796:61;;2850:4;2842:6;2838:17;2828:27;;2796:61;2903:2;2895:6;2892:14;2872:18;2869:38;2866:161;;2949:10;2944:3;2940:20;2937:1;2930:31;2984:4;2981:1;2974:15;3012:4;3009:1;3002:15;2866:161;;2653:380;;;:::o;3038:127::-;3099:10;3094:3;3090:20;3087:1;3080:31;3130:4;3127:1;3120:15;3154:4;3151:1;3144:15;3170:125;3235:9;;;3256:10;;;3253:36;;;3269:18;;:::i;3706:128::-;3773:9;;;3794:11;;;3791:37;;;3808:18;;:::i"},"gasEstimates":{"creation":{"codeDepositCost":"603800","executionCost":"infinite","totalCost":"infinite"},"external":{"allowance(address,address)":"infinite","approve(address,uint256)":"24651","balanceOf(address)":"2629","decimals()":"2341","decimals_()":"2401","decreaseAllowance(address,uint256)":"26967","increaseAllowance(address,uint256)":"infinite","name()":"infinite","setBalance(address,uint256)":"53237","setDecimals(uint8)":"24511","symbol()":"infinite","totalSupply()":"2349","transfer(address,uint256)":"51072","transferFrom(address,address,uint256)":"infinite"}},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","decimals_()":"f785ef72","decreaseAllowance(address,uint256)":"a457c2d7","increaseAllowance(address,uint256)":"39509351","name()":"06fdde03","setBalance(address,uint256)":"e30443bc","setDecimals(uint8)":"7a1395aa","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals_\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"setBalance\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"_decimals\",\"type\":\"uint8\"}],\"name\":\"setDecimals\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"DO NOT USE IN PRODUCTION!\",\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `amount`. - the caller must have allowance for ``from``'s tokens of at least `amount`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"A mock [ERC-20](https://eips.ethereum.org/EIPS/eip-20) token that can be minted and burned by everyone.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/mocks/token/ERC20Mock.sol\":\"ERC20Mock\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/ERC20.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC20.sol\\\";\\nimport \\\"./extensions/IERC20Metadata.sol\\\";\\nimport \\\"../../utils/Context.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC20} interface.\\n *\\n * This implementation is agnostic to the way tokens are created. This means\\n * that a supply mechanism has to be added in a derived contract using {_mint}.\\n * For a generic mechanism see {ERC20PresetMinterPauser}.\\n *\\n * TIP: For a detailed writeup see our guide\\n * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How\\n * to implement supply mechanisms].\\n *\\n * The default value of {decimals} is 18. To change this, you should override\\n * this function so it returns a different value.\\n *\\n * We have followed general OpenZeppelin Contracts guidelines: functions revert\\n * instead returning `false` on failure. This behavior is nonetheless\\n * conventional and does not conflict with the expectations of ERC20\\n * applications.\\n *\\n * Additionally, an {Approval} event is emitted on calls to {transferFrom}.\\n * This allows applications to reconstruct the allowance for all accounts just\\n * by listening to said events. Other implementations of the EIP may not emit\\n * these events, as it isn't required by the specification.\\n *\\n * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}\\n * functions have been added to mitigate the well-known issues around setting\\n * allowances. See {IERC20-approve}.\\n */\\ncontract ERC20 is Context, IERC20, IERC20Metadata {\\n mapping(address => uint256) private _balances;\\n\\n mapping(address => mapping(address => uint256)) private _allowances;\\n\\n uint256 private _totalSupply;\\n\\n string private _name;\\n string private _symbol;\\n\\n /**\\n * @dev Sets the values for {name} and {symbol}.\\n *\\n * All two of these values are immutable: they can only be set once during\\n * construction.\\n */\\n constructor(string memory name_, string memory symbol_) {\\n _name = name_;\\n _symbol = symbol_;\\n }\\n\\n /**\\n * @dev Returns the name of the token.\\n */\\n function name() public view virtual override returns (string memory) {\\n return _name;\\n }\\n\\n /**\\n * @dev Returns the symbol of the token, usually a shorter version of the\\n * name.\\n */\\n function symbol() public view virtual override returns (string memory) {\\n return _symbol;\\n }\\n\\n /**\\n * @dev Returns the number of decimals used to get its user representation.\\n * For example, if `decimals` equals `2`, a balance of `505` tokens should\\n * be displayed to a user as `5.05` (`505 / 10 ** 2`).\\n *\\n * Tokens usually opt for a value of 18, imitating the relationship between\\n * Ether and Wei. This is the default value returned by this function, unless\\n * it's overridden.\\n *\\n * NOTE: This information is only used for _display_ purposes: it in\\n * no way affects any of the arithmetic of the contract, including\\n * {IERC20-balanceOf} and {IERC20-transfer}.\\n */\\n function decimals() public view virtual override returns (uint8) {\\n return 18;\\n }\\n\\n /**\\n * @dev See {IERC20-totalSupply}.\\n */\\n function totalSupply() public view virtual override returns (uint256) {\\n return _totalSupply;\\n }\\n\\n /**\\n * @dev See {IERC20-balanceOf}.\\n */\\n function balanceOf(address account) public view virtual override returns (uint256) {\\n return _balances[account];\\n }\\n\\n /**\\n * @dev See {IERC20-transfer}.\\n *\\n * Requirements:\\n *\\n * - `to` cannot be the zero address.\\n * - the caller must have a balance of at least `amount`.\\n */\\n function transfer(address to, uint256 amount) public virtual override returns (bool) {\\n address owner = _msgSender();\\n _transfer(owner, to, amount);\\n return true;\\n }\\n\\n /**\\n * @dev See {IERC20-allowance}.\\n */\\n function allowance(address owner, address spender) public view virtual override returns (uint256) {\\n return _allowances[owner][spender];\\n }\\n\\n /**\\n * @dev See {IERC20-approve}.\\n *\\n * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on\\n * `transferFrom`. This is semantically equivalent to an infinite approval.\\n *\\n * Requirements:\\n *\\n * - `spender` cannot be the zero address.\\n */\\n function approve(address spender, uint256 amount) public virtual override returns (bool) {\\n address owner = _msgSender();\\n _approve(owner, spender, amount);\\n return true;\\n }\\n\\n /**\\n * @dev See {IERC20-transferFrom}.\\n *\\n * Emits an {Approval} event indicating the updated allowance. This is not\\n * required by the EIP. See the note at the beginning of {ERC20}.\\n *\\n * NOTE: Does not update the allowance if the current allowance\\n * is the maximum `uint256`.\\n *\\n * Requirements:\\n *\\n * - `from` and `to` cannot be the zero address.\\n * - `from` must have a balance of at least `amount`.\\n * - the caller must have allowance for ``from``'s tokens of at least\\n * `amount`.\\n */\\n function transferFrom(address from, address to, uint256 amount) public virtual override returns (bool) {\\n address spender = _msgSender();\\n _spendAllowance(from, spender, amount);\\n _transfer(from, to, amount);\\n return true;\\n }\\n\\n /**\\n * @dev Atomically increases the allowance granted to `spender` by the caller.\\n *\\n * This is an alternative to {approve} that can be used as a mitigation for\\n * problems described in {IERC20-approve}.\\n *\\n * Emits an {Approval} event indicating the updated allowance.\\n *\\n * Requirements:\\n *\\n * - `spender` cannot be the zero address.\\n */\\n function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {\\n address owner = _msgSender();\\n _approve(owner, spender, allowance(owner, spender) + addedValue);\\n return true;\\n }\\n\\n /**\\n * @dev Atomically decreases the allowance granted to `spender` by the caller.\\n *\\n * This is an alternative to {approve} that can be used as a mitigation for\\n * problems described in {IERC20-approve}.\\n *\\n * Emits an {Approval} event indicating the updated allowance.\\n *\\n * Requirements:\\n *\\n * - `spender` cannot be the zero address.\\n * - `spender` must have allowance for the caller of at least\\n * `subtractedValue`.\\n */\\n function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {\\n address owner = _msgSender();\\n uint256 currentAllowance = allowance(owner, spender);\\n require(currentAllowance >= subtractedValue, \\\"ERC20: decreased allowance below zero\\\");\\n unchecked {\\n _approve(owner, spender, currentAllowance - subtractedValue);\\n }\\n\\n return true;\\n }\\n\\n /**\\n * @dev Moves `amount` of tokens from `from` to `to`.\\n *\\n * This internal function is equivalent to {transfer}, and can be used to\\n * e.g. implement automatic token fees, slashing mechanisms, etc.\\n *\\n * Emits a {Transfer} event.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `to` cannot be the zero address.\\n * - `from` must have a balance of at least `amount`.\\n */\\n function _transfer(address from, address to, uint256 amount) internal virtual {\\n require(from != address(0), \\\"ERC20: transfer from the zero address\\\");\\n require(to != address(0), \\\"ERC20: transfer to the zero address\\\");\\n\\n _beforeTokenTransfer(from, to, amount);\\n\\n uint256 fromBalance = _balances[from];\\n require(fromBalance >= amount, \\\"ERC20: transfer amount exceeds balance\\\");\\n unchecked {\\n _balances[from] = fromBalance - amount;\\n // Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by\\n // decrementing then incrementing.\\n _balances[to] += amount;\\n }\\n\\n emit Transfer(from, to, amount);\\n\\n _afterTokenTransfer(from, to, amount);\\n }\\n\\n /** @dev Creates `amount` tokens and assigns them to `account`, increasing\\n * the total supply.\\n *\\n * Emits a {Transfer} event with `from` set to the zero address.\\n *\\n * Requirements:\\n *\\n * - `account` cannot be the zero address.\\n */\\n function _mint(address account, uint256 amount) internal virtual {\\n require(account != address(0), \\\"ERC20: mint to the zero address\\\");\\n\\n _beforeTokenTransfer(address(0), account, amount);\\n\\n _totalSupply += amount;\\n unchecked {\\n // Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above.\\n _balances[account] += amount;\\n }\\n emit Transfer(address(0), account, amount);\\n\\n _afterTokenTransfer(address(0), account, amount);\\n }\\n\\n /**\\n * @dev Destroys `amount` tokens from `account`, reducing the\\n * total supply.\\n *\\n * Emits a {Transfer} event with `to` set to the zero address.\\n *\\n * Requirements:\\n *\\n * - `account` cannot be the zero address.\\n * - `account` must have at least `amount` tokens.\\n */\\n function _burn(address account, uint256 amount) internal virtual {\\n require(account != address(0), \\\"ERC20: burn from the zero address\\\");\\n\\n _beforeTokenTransfer(account, address(0), amount);\\n\\n uint256 accountBalance = _balances[account];\\n require(accountBalance >= amount, \\\"ERC20: burn amount exceeds balance\\\");\\n unchecked {\\n _balances[account] = accountBalance - amount;\\n // Overflow not possible: amount <= accountBalance <= totalSupply.\\n _totalSupply -= amount;\\n }\\n\\n emit Transfer(account, address(0), amount);\\n\\n _afterTokenTransfer(account, address(0), amount);\\n }\\n\\n /**\\n * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.\\n *\\n * This internal function is equivalent to `approve`, and can be used to\\n * e.g. set automatic allowances for certain subsystems, etc.\\n *\\n * Emits an {Approval} event.\\n *\\n * Requirements:\\n *\\n * - `owner` cannot be the zero address.\\n * - `spender` cannot be the zero address.\\n */\\n function _approve(address owner, address spender, uint256 amount) internal virtual {\\n require(owner != address(0), \\\"ERC20: approve from the zero address\\\");\\n require(spender != address(0), \\\"ERC20: approve to the zero address\\\");\\n\\n _allowances[owner][spender] = amount;\\n emit Approval(owner, spender, amount);\\n }\\n\\n /**\\n * @dev Updates `owner` s allowance for `spender` based on spent `amount`.\\n *\\n * Does not update the allowance amount in case of infinite allowance.\\n * Revert if not enough allowance is available.\\n *\\n * Might emit an {Approval} event.\\n */\\n function _spendAllowance(address owner, address spender, uint256 amount) internal virtual {\\n uint256 currentAllowance = allowance(owner, spender);\\n if (currentAllowance != type(uint256).max) {\\n require(currentAllowance >= amount, \\\"ERC20: insufficient allowance\\\");\\n unchecked {\\n _approve(owner, spender, currentAllowance - amount);\\n }\\n }\\n }\\n\\n /**\\n * @dev Hook that is called before any transfer of tokens. This includes\\n * minting and burning.\\n *\\n * Calling conditions:\\n *\\n * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\\n * will be transferred to `to`.\\n * - when `from` is zero, `amount` tokens will be minted for `to`.\\n * - when `to` is zero, `amount` of ``from``'s tokens will be burned.\\n * - `from` and `to` are never both zero.\\n *\\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n */\\n function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual {}\\n\\n /**\\n * @dev Hook that is called after any transfer of tokens. This includes\\n * minting and burning.\\n *\\n * Calling conditions:\\n *\\n * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\\n * has been transferred to `to`.\\n * - when `from` is zero, `amount` tokens have been minted for `to`.\\n * - when `to` is zero, `amount` of ``from``'s tokens have been burned.\\n * - `from` and `to` are never both zero.\\n *\\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n */\\n function _afterTokenTransfer(address from, address to, uint256 amount) internal virtual {}\\n}\\n\",\"keccak256\":\"0xa56ca923f70c1748830700250b19c61b70db9a683516dc5e216694a50445d99c\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n /**\\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n * another (`to`).\\n *\\n * Note that `value` may be zero.\\n */\\n event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n /**\\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n * a call to {approve}. `value` is the new allowance.\\n */\\n event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n /**\\n * @dev Returns the amount of tokens in existence.\\n */\\n function totalSupply() external view returns (uint256);\\n\\n /**\\n * @dev Returns the amount of tokens owned by `account`.\\n */\\n function balanceOf(address account) external view returns (uint256);\\n\\n /**\\n * @dev Moves `amount` tokens from the caller's account to `to`.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transfer(address to, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Returns the remaining number of tokens that `spender` will be\\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n * zero by default.\\n *\\n * This value changes when {approve} or {transferFrom} are called.\\n */\\n function allowance(address owner, address spender) external view returns (uint256);\\n\\n /**\\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n * that someone may use both the old and the new allowance by unfortunate\\n * transaction ordering. One possible solution to mitigate this race\\n * condition is to first reduce the spender's allowance to 0 and set the\\n * desired value afterwards:\\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n *\\n * Emits an {Approval} event.\\n */\\n function approve(address spender, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Moves `amount` tokens from `from` to `to` using the\\n * allowance mechanism. `amount` is then deducted from the caller's\\n * allowance.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transferFrom(address from, address to, uint256 amount) external returns (bool);\\n}\\n\",\"keccak256\":\"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC20.sol\\\";\\n\\n/**\\n * @dev Interface for the optional metadata functions from the ERC20 standard.\\n *\\n * _Available since v4.1._\\n */\\ninterface IERC20Metadata is IERC20 {\\n /**\\n * @dev Returns the name of the token.\\n */\\n function name() external view returns (string memory);\\n\\n /**\\n * @dev Returns the symbol of the token.\\n */\\n function symbol() external view returns (string memory);\\n\\n /**\\n * @dev Returns the decimals places of the token.\\n */\\n function decimals() external view returns (uint8);\\n}\\n\",\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n function _contextSuffixLength() internal view virtual returns (uint256) {\\n return 0;\\n }\\n}\\n\",\"keccak256\":\"0xa92e4fa126feb6907daa0513ddd816b2eb91f30a808de54f63c17d0e162c3439\",\"license\":\"MIT\"},\"src/mocks/token/ERC20Mock.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ERC20} from \\\"@openzeppelin/contracts/token/ERC20/ERC20.sol\\\";\\n\\n/// @notice A mock [ERC-20](https://eips.ethereum.org/EIPS/eip-20) token that can be minted and burned by everyone.\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract ERC20Mock is ERC20 {\\n uint8 public decimals_ = 18;\\n\\n constructor(string memory _name, string memory _symbol) ERC20(_name, _symbol) {}\\n\\n function setDecimals(uint8 _decimals) public {\\n decimals_ = _decimals;\\n }\\n\\n function decimals() public view override returns (uint8) {\\n return decimals_;\\n }\\n\\n // sets the balance of the address\\n // this mints/burns the amount depending on the current balance\\n function setBalance(address to, uint256 amount) public {\\n uint256 old = balanceOf(to);\\n if (old < amount) {\\n _mint(to, amount - old);\\n } else if (old > amount) {\\n _burn(to, old - amount);\\n }\\n }\\n}\\n\",\"keccak256\":\"0xd5266fd470ef694b970b57add12c6e00dc653cd003ba9170c62713d7bfc4550c\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[{"astId":7172,"contract":"src/mocks/token/ERC20Mock.sol:ERC20Mock","label":"_balances","offset":0,"slot":"0","type":"t_mapping(t_address,t_uint256)"},{"astId":7178,"contract":"src/mocks/token/ERC20Mock.sol:ERC20Mock","label":"_allowances","offset":0,"slot":"1","type":"t_mapping(t_address,t_mapping(t_address,t_uint256))"},{"astId":7180,"contract":"src/mocks/token/ERC20Mock.sol:ERC20Mock","label":"_totalSupply","offset":0,"slot":"2","type":"t_uint256"},{"astId":7182,"contract":"src/mocks/token/ERC20Mock.sol:ERC20Mock","label":"_name","offset":0,"slot":"3","type":"t_string_storage"},{"astId":7184,"contract":"src/mocks/token/ERC20Mock.sol:ERC20Mock","label":"_symbol","offset":0,"slot":"4","type":"t_string_storage"},{"astId":12690,"contract":"src/mocks/token/ERC20Mock.sol:ERC20Mock","label":"decimals_","offset":0,"slot":"5","type":"t_uint8"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_mapping(t_address,t_mapping(t_address,t_uint256))":{"encoding":"mapping","key":"t_address","label":"mapping(address => mapping(address => uint256))","numberOfBytes":"32","value":"t_mapping(t_address,t_uint256)"},"t_mapping(t_address,t_uint256)":{"encoding":"mapping","key":"t_address","label":"mapping(address => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_string_storage":{"encoding":"bytes","label":"string","numberOfBytes":"32"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"kind":"user","methods":{},"notice":"A mock [ERC-20](https://eips.ethereum.org/EIPS/eip-20) token that can be minted and burned by everyone.","version":1}}},"src/mocks/token/ERC721Mock.sol":{"ERC721Mock":{"abi":[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"DO NOT USE IN PRODUCTION!","kind":"dev","methods":{"approve(address,uint256)":{"details":"See {IERC721-approve}."},"balanceOf(address)":{"details":"See {IERC721-balanceOf}."},"getApproved(uint256)":{"details":"See {IERC721-getApproved}."},"isApprovedForAll(address,address)":{"details":"See {IERC721-isApprovedForAll}."},"name()":{"details":"See {IERC721Metadata-name}."},"ownerOf(uint256)":{"details":"See {IERC721-ownerOf}."},"safeTransferFrom(address,address,uint256)":{"details":"See {IERC721-safeTransferFrom}."},"safeTransferFrom(address,address,uint256,bytes)":{"details":"See {IERC721-safeTransferFrom}."},"setApprovalForAll(address,bool)":{"details":"See {IERC721-setApprovalForAll}."},"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."},"symbol()":{"details":"See {IERC721Metadata-symbol}."},"tokenURI(uint256)":{"details":"See {IERC721Metadata-tokenURI}."},"transferFrom(address,address,uint256)":{"details":"See {IERC721-transferFrom}."}},"version":1},"evm":{"bytecode":{"functionDebugData":{"@_12779":{"entryPoint":null,"id":12779,"parameterSlots":2,"returnSlots":0},"@_7909":{"entryPoint":null,"id":7909,"parameterSlots":2,"returnSlots":0},"abi_decode_string_fromMemory":{"entryPoint":116,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr_fromMemory":{"entryPoint":291,"id":null,"parameterSlots":2,"returnSlots":2},"array_dataslot_string_storage":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"clean_up_bytearray_end_slots_string_storage":{"entryPoint":457,"id":null,"parameterSlots":3,"returnSlots":0},"copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage":{"entryPoint":540,"id":null,"parameterSlots":2,"returnSlots":0},"extract_byte_array_length":{"entryPoint":397,"id":null,"parameterSlots":1,"returnSlots":1},"extract_used_part_and_set_length_of_short_byte_array":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"panic_error_0x41":{"entryPoint":94,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:4144:92","statements":[{"nodeType":"YulBlock","src":"6:3:92","statements":[]},{"body":{"nodeType":"YulBlock","src":"46:95:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"63:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"70:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"75:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"66:3:92"},"nodeType":"YulFunctionCall","src":"66:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"56:6:92"},"nodeType":"YulFunctionCall","src":"56:31:92"},"nodeType":"YulExpressionStatement","src":"56:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"103:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"106:4:92","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"96:6:92"},"nodeType":"YulFunctionCall","src":"96:15:92"},"nodeType":"YulExpressionStatement","src":"96:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"127:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"130:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"120:6:92"},"nodeType":"YulFunctionCall","src":"120:15:92"},"nodeType":"YulExpressionStatement","src":"120:15:92"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"14:127:92"},{"body":{"nodeType":"YulBlock","src":"210:776:92","statements":[{"body":{"nodeType":"YulBlock","src":"259:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"268:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"271:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"261:6:92"},"nodeType":"YulFunctionCall","src":"261:12:92"},"nodeType":"YulExpressionStatement","src":"261:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"238:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"246:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"234:3:92"},"nodeType":"YulFunctionCall","src":"234:17:92"},{"name":"end","nodeType":"YulIdentifier","src":"253:3:92"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"230:3:92"},"nodeType":"YulFunctionCall","src":"230:27:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"223:6:92"},"nodeType":"YulFunctionCall","src":"223:35:92"},"nodeType":"YulIf","src":"220:55:92"},{"nodeType":"YulVariableDeclaration","src":"284:23:92","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"300:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"294:5:92"},"nodeType":"YulFunctionCall","src":"294:13:92"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"288:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"316:28:92","value":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"334:2:92","type":"","value":"64"},{"kind":"number","nodeType":"YulLiteral","src":"338:1:92","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"330:3:92"},"nodeType":"YulFunctionCall","src":"330:10:92"},{"kind":"number","nodeType":"YulLiteral","src":"342:1:92","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"326:3:92"},"nodeType":"YulFunctionCall","src":"326:18:92"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"320:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"367:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"369:16:92"},"nodeType":"YulFunctionCall","src":"369:18:92"},"nodeType":"YulExpressionStatement","src":"369:18:92"}]},"condition":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"359:2:92"},{"name":"_2","nodeType":"YulIdentifier","src":"363:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"356:2:92"},"nodeType":"YulFunctionCall","src":"356:10:92"},"nodeType":"YulIf","src":"353:36:92"},{"nodeType":"YulVariableDeclaration","src":"398:17:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"412:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"408:3:92"},"nodeType":"YulFunctionCall","src":"408:7:92"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"402:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"424:23:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"444:2:92","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"438:5:92"},"nodeType":"YulFunctionCall","src":"438:9:92"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"428:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"456:71:92","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"478:6:92"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"502:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"506:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"498:3:92"},"nodeType":"YulFunctionCall","src":"498:13:92"},{"name":"_3","nodeType":"YulIdentifier","src":"513:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"494:3:92"},"nodeType":"YulFunctionCall","src":"494:22:92"},{"kind":"number","nodeType":"YulLiteral","src":"518:2:92","type":"","value":"63"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"490:3:92"},"nodeType":"YulFunctionCall","src":"490:31:92"},{"name":"_3","nodeType":"YulIdentifier","src":"523:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"486:3:92"},"nodeType":"YulFunctionCall","src":"486:40:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"474:3:92"},"nodeType":"YulFunctionCall","src":"474:53:92"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"460:10:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"586:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"588:16:92"},"nodeType":"YulFunctionCall","src":"588:18:92"},"nodeType":"YulExpressionStatement","src":"588:18:92"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"545:10:92"},{"name":"_2","nodeType":"YulIdentifier","src":"557:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"542:2:92"},"nodeType":"YulFunctionCall","src":"542:18:92"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"565:10:92"},{"name":"memPtr","nodeType":"YulIdentifier","src":"577:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"562:2:92"},"nodeType":"YulFunctionCall","src":"562:22:92"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"539:2:92"},"nodeType":"YulFunctionCall","src":"539:46:92"},"nodeType":"YulIf","src":"536:72:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"624:2:92","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"628:10:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"617:6:92"},"nodeType":"YulFunctionCall","src":"617:22:92"},"nodeType":"YulExpressionStatement","src":"617:22:92"},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"655:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"663:2:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"648:6:92"},"nodeType":"YulFunctionCall","src":"648:18:92"},"nodeType":"YulExpressionStatement","src":"648:18:92"},{"nodeType":"YulVariableDeclaration","src":"675:14:92","value":{"kind":"number","nodeType":"YulLiteral","src":"685:4:92","type":"","value":"0x20"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"679:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"735:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"744:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"747:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"737:6:92"},"nodeType":"YulFunctionCall","src":"737:12:92"},"nodeType":"YulExpressionStatement","src":"737:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"712:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"720:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"708:3:92"},"nodeType":"YulFunctionCall","src":"708:15:92"},{"name":"_4","nodeType":"YulIdentifier","src":"725:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"704:3:92"},"nodeType":"YulFunctionCall","src":"704:24:92"},{"name":"end","nodeType":"YulIdentifier","src":"730:3:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"701:2:92"},"nodeType":"YulFunctionCall","src":"701:33:92"},"nodeType":"YulIf","src":"698:53:92"},{"nodeType":"YulVariableDeclaration","src":"760:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"769:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"764:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"825:87:92","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"854:6:92"},{"name":"i","nodeType":"YulIdentifier","src":"862:1:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"850:3:92"},"nodeType":"YulFunctionCall","src":"850:14:92"},{"name":"_4","nodeType":"YulIdentifier","src":"866:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"846:3:92"},"nodeType":"YulFunctionCall","src":"846:23:92"},{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"885:6:92"},{"name":"i","nodeType":"YulIdentifier","src":"893:1:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"881:3:92"},"nodeType":"YulFunctionCall","src":"881:14:92"},{"name":"_4","nodeType":"YulIdentifier","src":"897:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"877:3:92"},"nodeType":"YulFunctionCall","src":"877:23:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"871:5:92"},"nodeType":"YulFunctionCall","src":"871:30:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"839:6:92"},"nodeType":"YulFunctionCall","src":"839:63:92"},"nodeType":"YulExpressionStatement","src":"839:63:92"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"790:1:92"},{"name":"_1","nodeType":"YulIdentifier","src":"793:2:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"787:2:92"},"nodeType":"YulFunctionCall","src":"787:9:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"797:19:92","statements":[{"nodeType":"YulAssignment","src":"799:15:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"808:1:92"},{"name":"_4","nodeType":"YulIdentifier","src":"811:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"804:3:92"},"nodeType":"YulFunctionCall","src":"804:10:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"799:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"783:3:92","statements":[]},"src":"779:133:92"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"936:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"944:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"932:3:92"},"nodeType":"YulFunctionCall","src":"932:15:92"},{"name":"_4","nodeType":"YulIdentifier","src":"949:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"928:3:92"},"nodeType":"YulFunctionCall","src":"928:24:92"},{"kind":"number","nodeType":"YulLiteral","src":"954:1:92","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"921:6:92"},"nodeType":"YulFunctionCall","src":"921:35:92"},"nodeType":"YulExpressionStatement","src":"921:35:92"},{"nodeType":"YulAssignment","src":"965:15:92","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"974:6:92"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"965:5:92"}]}]},"name":"abi_decode_string_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"184:6:92","type":""},{"name":"end","nodeType":"YulTypedName","src":"192:3:92","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"200:5:92","type":""}],"src":"146:840:92"},{"body":{"nodeType":"YulBlock","src":"1109:444:92","statements":[{"body":{"nodeType":"YulBlock","src":"1155:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1164:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1167:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1157:6:92"},"nodeType":"YulFunctionCall","src":"1157:12:92"},"nodeType":"YulExpressionStatement","src":"1157:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1130:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"1139:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1126:3:92"},"nodeType":"YulFunctionCall","src":"1126:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"1151:2:92","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1122:3:92"},"nodeType":"YulFunctionCall","src":"1122:32:92"},"nodeType":"YulIf","src":"1119:52:92"},{"nodeType":"YulVariableDeclaration","src":"1180:30:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1200:9:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1194:5:92"},"nodeType":"YulFunctionCall","src":"1194:16:92"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1184:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"1219:28:92","value":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1237:2:92","type":"","value":"64"},{"kind":"number","nodeType":"YulLiteral","src":"1241:1:92","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1233:3:92"},"nodeType":"YulFunctionCall","src":"1233:10:92"},{"kind":"number","nodeType":"YulLiteral","src":"1245:1:92","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1229:3:92"},"nodeType":"YulFunctionCall","src":"1229:18:92"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"1223:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"1274:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1283:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1286:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1276:6:92"},"nodeType":"YulFunctionCall","src":"1276:12:92"},"nodeType":"YulExpressionStatement","src":"1276:12:92"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1262:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"1270:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1259:2:92"},"nodeType":"YulFunctionCall","src":"1259:14:92"},"nodeType":"YulIf","src":"1256:34:92"},{"nodeType":"YulAssignment","src":"1299:71:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1342:9:92"},{"name":"offset","nodeType":"YulIdentifier","src":"1353:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1338:3:92"},"nodeType":"YulFunctionCall","src":"1338:22:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1362:7:92"}],"functionName":{"name":"abi_decode_string_fromMemory","nodeType":"YulIdentifier","src":"1309:28:92"},"nodeType":"YulFunctionCall","src":"1309:61:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1299:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"1379:41:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1405:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1416:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1401:3:92"},"nodeType":"YulFunctionCall","src":"1401:18:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1395:5:92"},"nodeType":"YulFunctionCall","src":"1395:25:92"},"variables":[{"name":"offset_1","nodeType":"YulTypedName","src":"1383:8:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"1449:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1458:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1461:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1451:6:92"},"nodeType":"YulFunctionCall","src":"1451:12:92"},"nodeType":"YulExpressionStatement","src":"1451:12:92"}]},"condition":{"arguments":[{"name":"offset_1","nodeType":"YulIdentifier","src":"1435:8:92"},{"name":"_1","nodeType":"YulIdentifier","src":"1445:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1432:2:92"},"nodeType":"YulFunctionCall","src":"1432:16:92"},"nodeType":"YulIf","src":"1429:36:92"},{"nodeType":"YulAssignment","src":"1474:73:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1517:9:92"},{"name":"offset_1","nodeType":"YulIdentifier","src":"1528:8:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1513:3:92"},"nodeType":"YulFunctionCall","src":"1513:24:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1539:7:92"}],"functionName":{"name":"abi_decode_string_fromMemory","nodeType":"YulIdentifier","src":"1484:28:92"},"nodeType":"YulFunctionCall","src":"1484:63:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1474:6:92"}]}]},"name":"abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1067:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1078:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1090:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1098:6:92","type":""}],"src":"991:562:92"},{"body":{"nodeType":"YulBlock","src":"1613:325:92","statements":[{"nodeType":"YulAssignment","src":"1623:22:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1637:1:92","type":"","value":"1"},{"name":"data","nodeType":"YulIdentifier","src":"1640:4:92"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"1633:3:92"},"nodeType":"YulFunctionCall","src":"1633:12:92"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"1623:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"1654:38:92","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"1684:4:92"},{"kind":"number","nodeType":"YulLiteral","src":"1690:1:92","type":"","value":"1"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1680:3:92"},"nodeType":"YulFunctionCall","src":"1680:12:92"},"variables":[{"name":"outOfPlaceEncoding","nodeType":"YulTypedName","src":"1658:18:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"1731:31:92","statements":[{"nodeType":"YulAssignment","src":"1733:27:92","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"1747:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"1755:4:92","type":"","value":"0x7f"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1743:3:92"},"nodeType":"YulFunctionCall","src":"1743:17:92"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"1733:6:92"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"1711:18:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1704:6:92"},"nodeType":"YulFunctionCall","src":"1704:26:92"},"nodeType":"YulIf","src":"1701:61:92"},{"body":{"nodeType":"YulBlock","src":"1821:111:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1842:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1849:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"1854:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1845:3:92"},"nodeType":"YulFunctionCall","src":"1845:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1835:6:92"},"nodeType":"YulFunctionCall","src":"1835:31:92"},"nodeType":"YulExpressionStatement","src":"1835:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1886:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"1889:4:92","type":"","value":"0x22"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1879:6:92"},"nodeType":"YulFunctionCall","src":"1879:15:92"},"nodeType":"YulExpressionStatement","src":"1879:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1914:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1917:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1907:6:92"},"nodeType":"YulFunctionCall","src":"1907:15:92"},"nodeType":"YulExpressionStatement","src":"1907:15:92"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"1777:18:92"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"1800:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"1808:2:92","type":"","value":"32"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"1797:2:92"},"nodeType":"YulFunctionCall","src":"1797:14:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1774:2:92"},"nodeType":"YulFunctionCall","src":"1774:38:92"},"nodeType":"YulIf","src":"1771:161:92"}]},"name":"extract_byte_array_length","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"1593:4:92","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"1602:6:92","type":""}],"src":"1558:380:92"},{"body":{"nodeType":"YulBlock","src":"1999:65:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2016:1:92","type":"","value":"0"},{"name":"ptr","nodeType":"YulIdentifier","src":"2019:3:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2009:6:92"},"nodeType":"YulFunctionCall","src":"2009:14:92"},"nodeType":"YulExpressionStatement","src":"2009:14:92"},{"nodeType":"YulAssignment","src":"2032:26:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2050:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2053:4:92","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nodeType":"YulIdentifier","src":"2040:9:92"},"nodeType":"YulFunctionCall","src":"2040:18:92"},"variableNames":[{"name":"data","nodeType":"YulIdentifier","src":"2032:4:92"}]}]},"name":"array_dataslot_string_storage","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nodeType":"YulTypedName","src":"1982:3:92","type":""}],"returnVariables":[{"name":"data","nodeType":"YulTypedName","src":"1990:4:92","type":""}],"src":"1943:121:92"},{"body":{"nodeType":"YulBlock","src":"2150:464:92","statements":[{"body":{"nodeType":"YulBlock","src":"2183:425:92","statements":[{"nodeType":"YulVariableDeclaration","src":"2197:11:92","value":{"kind":"number","nodeType":"YulLiteral","src":"2207:1:92","type":"","value":"0"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"2201:2:92","type":""}]},{"expression":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"2228:2:92"},{"name":"array","nodeType":"YulIdentifier","src":"2232:5:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2221:6:92"},"nodeType":"YulFunctionCall","src":"2221:17:92"},"nodeType":"YulExpressionStatement","src":"2221:17:92"},{"nodeType":"YulVariableDeclaration","src":"2251:31:92","value":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"2273:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"2277:4:92","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nodeType":"YulIdentifier","src":"2263:9:92"},"nodeType":"YulFunctionCall","src":"2263:19:92"},"variables":[{"name":"data","nodeType":"YulTypedName","src":"2255:4:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2295:57:92","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"2318:4:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2328:1:92","type":"","value":"5"},{"arguments":[{"name":"startIndex","nodeType":"YulIdentifier","src":"2335:10:92"},{"kind":"number","nodeType":"YulLiteral","src":"2347:2:92","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2331:3:92"},"nodeType":"YulFunctionCall","src":"2331:19:92"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"2324:3:92"},"nodeType":"YulFunctionCall","src":"2324:27:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2314:3:92"},"nodeType":"YulFunctionCall","src":"2314:38:92"},"variables":[{"name":"deleteStart","nodeType":"YulTypedName","src":"2299:11:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"2389:23:92","statements":[{"nodeType":"YulAssignment","src":"2391:19:92","value":{"name":"data","nodeType":"YulIdentifier","src":"2406:4:92"},"variableNames":[{"name":"deleteStart","nodeType":"YulIdentifier","src":"2391:11:92"}]}]},"condition":{"arguments":[{"name":"startIndex","nodeType":"YulIdentifier","src":"2371:10:92"},{"kind":"number","nodeType":"YulLiteral","src":"2383:4:92","type":"","value":"0x20"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2368:2:92"},"nodeType":"YulFunctionCall","src":"2368:20:92"},"nodeType":"YulIf","src":"2365:47:92"},{"nodeType":"YulVariableDeclaration","src":"2425:41:92","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"2439:4:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2449:1:92","type":"","value":"5"},{"arguments":[{"name":"len","nodeType":"YulIdentifier","src":"2456:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"2461:2:92","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2452:3:92"},"nodeType":"YulFunctionCall","src":"2452:12:92"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"2445:3:92"},"nodeType":"YulFunctionCall","src":"2445:20:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2435:3:92"},"nodeType":"YulFunctionCall","src":"2435:31:92"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"2429:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2479:24:92","value":{"name":"deleteStart","nodeType":"YulIdentifier","src":"2492:11:92"},"variables":[{"name":"start","nodeType":"YulTypedName","src":"2483:5:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"2577:21:92","statements":[{"expression":{"arguments":[{"name":"start","nodeType":"YulIdentifier","src":"2586:5:92"},{"name":"_1","nodeType":"YulIdentifier","src":"2593:2:92"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"2579:6:92"},"nodeType":"YulFunctionCall","src":"2579:17:92"},"nodeType":"YulExpressionStatement","src":"2579:17:92"}]},"condition":{"arguments":[{"name":"start","nodeType":"YulIdentifier","src":"2527:5:92"},{"name":"_2","nodeType":"YulIdentifier","src":"2534:2:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2524:2:92"},"nodeType":"YulFunctionCall","src":"2524:13:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"2538:26:92","statements":[{"nodeType":"YulAssignment","src":"2540:22:92","value":{"arguments":[{"name":"start","nodeType":"YulIdentifier","src":"2553:5:92"},{"kind":"number","nodeType":"YulLiteral","src":"2560:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2549:3:92"},"nodeType":"YulFunctionCall","src":"2549:13:92"},"variableNames":[{"name":"start","nodeType":"YulIdentifier","src":"2540:5:92"}]}]},"pre":{"nodeType":"YulBlock","src":"2520:3:92","statements":[]},"src":"2516:82:92"}]},"condition":{"arguments":[{"name":"len","nodeType":"YulIdentifier","src":"2166:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"2171:2:92","type":"","value":"31"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2163:2:92"},"nodeType":"YulFunctionCall","src":"2163:11:92"},"nodeType":"YulIf","src":"2160:448:92"}]},"name":"clean_up_bytearray_end_slots_string_storage","nodeType":"YulFunctionDefinition","parameters":[{"name":"array","nodeType":"YulTypedName","src":"2122:5:92","type":""},{"name":"len","nodeType":"YulTypedName","src":"2129:3:92","type":""},{"name":"startIndex","nodeType":"YulTypedName","src":"2134:10:92","type":""}],"src":"2069:545:92"},{"body":{"nodeType":"YulBlock","src":"2704:81:92","statements":[{"nodeType":"YulAssignment","src":"2714:65:92","value":{"arguments":[{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"2729:4:92"},{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2747:1:92","type":"","value":"3"},{"name":"len","nodeType":"YulIdentifier","src":"2750:3:92"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2743:3:92"},"nodeType":"YulFunctionCall","src":"2743:11:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2760:1:92","type":"","value":"0"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"2756:3:92"},"nodeType":"YulFunctionCall","src":"2756:6:92"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"2739:3:92"},"nodeType":"YulFunctionCall","src":"2739:24:92"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"2735:3:92"},"nodeType":"YulFunctionCall","src":"2735:29:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2725:3:92"},"nodeType":"YulFunctionCall","src":"2725:40:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2771:1:92","type":"","value":"1"},{"name":"len","nodeType":"YulIdentifier","src":"2774:3:92"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2767:3:92"},"nodeType":"YulFunctionCall","src":"2767:11:92"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"2722:2:92"},"nodeType":"YulFunctionCall","src":"2722:57:92"},"variableNames":[{"name":"used","nodeType":"YulIdentifier","src":"2714:4:92"}]}]},"name":"extract_used_part_and_set_length_of_short_byte_array","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"2681:4:92","type":""},{"name":"len","nodeType":"YulTypedName","src":"2687:3:92","type":""}],"returnVariables":[{"name":"used","nodeType":"YulTypedName","src":"2695:4:92","type":""}],"src":"2619:166:92"},{"body":{"nodeType":"YulBlock","src":"2886:1256:92","statements":[{"nodeType":"YulVariableDeclaration","src":"2896:24:92","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"2916:3:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2910:5:92"},"nodeType":"YulFunctionCall","src":"2910:10:92"},"variables":[{"name":"newLen","nodeType":"YulTypedName","src":"2900:6:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"2963:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"2965:16:92"},"nodeType":"YulFunctionCall","src":"2965:18:92"},"nodeType":"YulExpressionStatement","src":"2965:18:92"}]},"condition":{"arguments":[{"name":"newLen","nodeType":"YulIdentifier","src":"2935:6:92"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2951:2:92","type":"","value":"64"},{"kind":"number","nodeType":"YulLiteral","src":"2955:1:92","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2947:3:92"},"nodeType":"YulFunctionCall","src":"2947:10:92"},{"kind":"number","nodeType":"YulLiteral","src":"2959:1:92","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2943:3:92"},"nodeType":"YulFunctionCall","src":"2943:18:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2932:2:92"},"nodeType":"YulFunctionCall","src":"2932:30:92"},"nodeType":"YulIf","src":"2929:56:92"},{"expression":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"3038:4:92"},{"arguments":[{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"3076:4:92"}],"functionName":{"name":"sload","nodeType":"YulIdentifier","src":"3070:5:92"},"nodeType":"YulFunctionCall","src":"3070:11:92"}],"functionName":{"name":"extract_byte_array_length","nodeType":"YulIdentifier","src":"3044:25:92"},"nodeType":"YulFunctionCall","src":"3044:38:92"},{"name":"newLen","nodeType":"YulIdentifier","src":"3084:6:92"}],"functionName":{"name":"clean_up_bytearray_end_slots_string_storage","nodeType":"YulIdentifier","src":"2994:43:92"},"nodeType":"YulFunctionCall","src":"2994:97:92"},"nodeType":"YulExpressionStatement","src":"2994:97:92"},{"nodeType":"YulVariableDeclaration","src":"3100:18:92","value":{"kind":"number","nodeType":"YulLiteral","src":"3117:1:92","type":"","value":"0"},"variables":[{"name":"srcOffset","nodeType":"YulTypedName","src":"3104:9:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3127:23:92","value":{"kind":"number","nodeType":"YulLiteral","src":"3146:4:92","type":"","value":"0x20"},"variables":[{"name":"srcOffset_1","nodeType":"YulTypedName","src":"3131:11:92","type":""}]},{"nodeType":"YulAssignment","src":"3159:24:92","value":{"name":"srcOffset_1","nodeType":"YulIdentifier","src":"3172:11:92"},"variableNames":[{"name":"srcOffset","nodeType":"YulIdentifier","src":"3159:9:92"}]},{"cases":[{"body":{"nodeType":"YulBlock","src":"3229:656:92","statements":[{"nodeType":"YulVariableDeclaration","src":"3243:35:92","value":{"arguments":[{"name":"newLen","nodeType":"YulIdentifier","src":"3262:6:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3274:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"3270:3:92"},"nodeType":"YulFunctionCall","src":"3270:7:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3258:3:92"},"nodeType":"YulFunctionCall","src":"3258:20:92"},"variables":[{"name":"loopEnd","nodeType":"YulTypedName","src":"3247:7:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3291:49:92","value":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"3335:4:92"}],"functionName":{"name":"array_dataslot_string_storage","nodeType":"YulIdentifier","src":"3305:29:92"},"nodeType":"YulFunctionCall","src":"3305:35:92"},"variables":[{"name":"dstPtr","nodeType":"YulTypedName","src":"3295:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3353:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"3362:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"3357:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"3440:172:92","statements":[{"expression":{"arguments":[{"name":"dstPtr","nodeType":"YulIdentifier","src":"3465:6:92"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"3483:3:92"},{"name":"srcOffset","nodeType":"YulIdentifier","src":"3488:9:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3479:3:92"},"nodeType":"YulFunctionCall","src":"3479:19:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3473:5:92"},"nodeType":"YulFunctionCall","src":"3473:26:92"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"3458:6:92"},"nodeType":"YulFunctionCall","src":"3458:42:92"},"nodeType":"YulExpressionStatement","src":"3458:42:92"},{"nodeType":"YulAssignment","src":"3517:24:92","value":{"arguments":[{"name":"dstPtr","nodeType":"YulIdentifier","src":"3531:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"3539:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3527:3:92"},"nodeType":"YulFunctionCall","src":"3527:14:92"},"variableNames":[{"name":"dstPtr","nodeType":"YulIdentifier","src":"3517:6:92"}]},{"nodeType":"YulAssignment","src":"3558:40:92","value":{"arguments":[{"name":"srcOffset","nodeType":"YulIdentifier","src":"3575:9:92"},{"name":"srcOffset_1","nodeType":"YulIdentifier","src":"3586:11:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3571:3:92"},"nodeType":"YulFunctionCall","src":"3571:27:92"},"variableNames":[{"name":"srcOffset","nodeType":"YulIdentifier","src":"3558:9:92"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3387:1:92"},{"name":"loopEnd","nodeType":"YulIdentifier","src":"3390:7:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"3384:2:92"},"nodeType":"YulFunctionCall","src":"3384:14:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"3399:28:92","statements":[{"nodeType":"YulAssignment","src":"3401:24:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3410:1:92"},{"name":"srcOffset_1","nodeType":"YulIdentifier","src":"3413:11:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3406:3:92"},"nodeType":"YulFunctionCall","src":"3406:19:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"3401:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"3380:3:92","statements":[]},"src":"3376:236:92"},{"body":{"nodeType":"YulBlock","src":"3660:166:92","statements":[{"nodeType":"YulVariableDeclaration","src":"3678:43:92","value":{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"3705:3:92"},{"name":"srcOffset","nodeType":"YulIdentifier","src":"3710:9:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3701:3:92"},"nodeType":"YulFunctionCall","src":"3701:19:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3695:5:92"},"nodeType":"YulFunctionCall","src":"3695:26:92"},"variables":[{"name":"lastValue","nodeType":"YulTypedName","src":"3682:9:92","type":""}]},{"expression":{"arguments":[{"name":"dstPtr","nodeType":"YulIdentifier","src":"3745:6:92"},{"arguments":[{"name":"lastValue","nodeType":"YulIdentifier","src":"3757:9:92"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3784:1:92","type":"","value":"3"},{"name":"newLen","nodeType":"YulIdentifier","src":"3787:6:92"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"3780:3:92"},"nodeType":"YulFunctionCall","src":"3780:14:92"},{"kind":"number","nodeType":"YulLiteral","src":"3796:3:92","type":"","value":"248"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3776:3:92"},"nodeType":"YulFunctionCall","src":"3776:24:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3806:1:92","type":"","value":"0"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"3802:3:92"},"nodeType":"YulFunctionCall","src":"3802:6:92"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"3772:3:92"},"nodeType":"YulFunctionCall","src":"3772:37:92"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"3768:3:92"},"nodeType":"YulFunctionCall","src":"3768:42:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3753:3:92"},"nodeType":"YulFunctionCall","src":"3753:58:92"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"3738:6:92"},"nodeType":"YulFunctionCall","src":"3738:74:92"},"nodeType":"YulExpressionStatement","src":"3738:74:92"}]},"condition":{"arguments":[{"name":"loopEnd","nodeType":"YulIdentifier","src":"3631:7:92"},{"name":"newLen","nodeType":"YulIdentifier","src":"3640:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"3628:2:92"},"nodeType":"YulFunctionCall","src":"3628:19:92"},"nodeType":"YulIf","src":"3625:201:92"},{"expression":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"3846:4:92"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3860:1:92","type":"","value":"1"},{"name":"newLen","nodeType":"YulIdentifier","src":"3863:6:92"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"3856:3:92"},"nodeType":"YulFunctionCall","src":"3856:14:92"},{"kind":"number","nodeType":"YulLiteral","src":"3872:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3852:3:92"},"nodeType":"YulFunctionCall","src":"3852:22:92"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"3839:6:92"},"nodeType":"YulFunctionCall","src":"3839:36:92"},"nodeType":"YulExpressionStatement","src":"3839:36:92"}]},"nodeType":"YulCase","src":"3222:663:92","value":{"kind":"number","nodeType":"YulLiteral","src":"3227:1:92","type":"","value":"1"}},{"body":{"nodeType":"YulBlock","src":"3902:234:92","statements":[{"nodeType":"YulVariableDeclaration","src":"3916:14:92","value":{"kind":"number","nodeType":"YulLiteral","src":"3929:1:92","type":"","value":"0"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"3920:5:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"3965:67:92","statements":[{"nodeType":"YulAssignment","src":"3983:35:92","value":{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"4002:3:92"},{"name":"srcOffset","nodeType":"YulIdentifier","src":"4007:9:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3998:3:92"},"nodeType":"YulFunctionCall","src":"3998:19:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3992:5:92"},"nodeType":"YulFunctionCall","src":"3992:26:92"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"3983:5:92"}]}]},"condition":{"name":"newLen","nodeType":"YulIdentifier","src":"3946:6:92"},"nodeType":"YulIf","src":"3943:89:92"},{"expression":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"4052:4:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4111:5:92"},{"name":"newLen","nodeType":"YulIdentifier","src":"4118:6:92"}],"functionName":{"name":"extract_used_part_and_set_length_of_short_byte_array","nodeType":"YulIdentifier","src":"4058:52:92"},"nodeType":"YulFunctionCall","src":"4058:67:92"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"4045:6:92"},"nodeType":"YulFunctionCall","src":"4045:81:92"},"nodeType":"YulExpressionStatement","src":"4045:81:92"}]},"nodeType":"YulCase","src":"3894:242:92","value":"default"}],"expression":{"arguments":[{"name":"newLen","nodeType":"YulIdentifier","src":"3202:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"3210:2:92","type":"","value":"31"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3199:2:92"},"nodeType":"YulFunctionCall","src":"3199:14:92"},"nodeType":"YulSwitch","src":"3192:944:92"}]},"name":"copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage","nodeType":"YulFunctionDefinition","parameters":[{"name":"slot","nodeType":"YulTypedName","src":"2871:4:92","type":""},{"name":"src","nodeType":"YulTypedName","src":"2877:3:92","type":""}],"src":"2790:1352:92"}]},"contents":"{\n { }\n function panic_error_0x41()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function abi_decode_string_fromMemory(offset, end) -> array\n {\n if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n let _1 := mload(offset)\n let _2 := sub(shl(64, 1), 1)\n if gt(_1, _2) { panic_error_0x41() }\n let _3 := not(31)\n let memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(and(add(_1, 0x1f), _3), 63), _3))\n if or(gt(newFreePtr, _2), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n mstore(memPtr, _1)\n let _4 := 0x20\n if gt(add(add(offset, _1), _4), end) { revert(0, 0) }\n let i := 0\n for { } lt(i, _1) { i := add(i, _4) }\n {\n mstore(add(add(memPtr, i), _4), mload(add(add(offset, i), _4)))\n }\n mstore(add(add(memPtr, _1), _4), 0)\n array := memPtr\n }\n function abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr_fromMemory(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n let offset := mload(headStart)\n let _1 := sub(shl(64, 1), 1)\n if gt(offset, _1) { revert(0, 0) }\n value0 := abi_decode_string_fromMemory(add(headStart, offset), dataEnd)\n let offset_1 := mload(add(headStart, 32))\n if gt(offset_1, _1) { revert(0, 0) }\n value1 := abi_decode_string_fromMemory(add(headStart, offset_1), dataEnd)\n }\n function extract_byte_array_length(data) -> length\n {\n length := shr(1, data)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n if eq(outOfPlaceEncoding, lt(length, 32))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n }\n function array_dataslot_string_storage(ptr) -> data\n {\n mstore(0, ptr)\n data := keccak256(0, 0x20)\n }\n function clean_up_bytearray_end_slots_string_storage(array, len, startIndex)\n {\n if gt(len, 31)\n {\n let _1 := 0\n mstore(_1, array)\n let data := keccak256(_1, 0x20)\n let deleteStart := add(data, shr(5, add(startIndex, 31)))\n if lt(startIndex, 0x20) { deleteStart := data }\n let _2 := add(data, shr(5, add(len, 31)))\n let start := deleteStart\n for { } lt(start, _2) { start := add(start, 1) }\n { sstore(start, _1) }\n }\n }\n function extract_used_part_and_set_length_of_short_byte_array(data, len) -> used\n {\n used := or(and(data, not(shr(shl(3, len), not(0)))), shl(1, len))\n }\n function copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage(slot, src)\n {\n let newLen := mload(src)\n if gt(newLen, sub(shl(64, 1), 1)) { panic_error_0x41() }\n clean_up_bytearray_end_slots_string_storage(slot, extract_byte_array_length(sload(slot)), newLen)\n let srcOffset := 0\n let srcOffset_1 := 0x20\n srcOffset := srcOffset_1\n switch gt(newLen, 31)\n case 1 {\n let loopEnd := and(newLen, not(31))\n let dstPtr := array_dataslot_string_storage(slot)\n let i := 0\n for { } lt(i, loopEnd) { i := add(i, srcOffset_1) }\n {\n sstore(dstPtr, mload(add(src, srcOffset)))\n dstPtr := add(dstPtr, 1)\n srcOffset := add(srcOffset, srcOffset_1)\n }\n if lt(loopEnd, newLen)\n {\n let lastValue := mload(add(src, srcOffset))\n sstore(dstPtr, and(lastValue, not(shr(and(shl(3, newLen), 248), not(0)))))\n }\n sstore(slot, add(shl(1, newLen), 1))\n }\n default {\n let value := 0\n if newLen\n {\n value := mload(add(src, srcOffset))\n }\n sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, newLen))\n }\n }\n}","id":92,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60806040523480156200001157600080fd5b506040516200174538038062001745833981016040819052620000349162000123565b818160006200004483826200021c565b5060016200005382826200021c565b5050505050620002e8565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200008657600080fd5b81516001600160401b0380821115620000a357620000a36200005e565b604051601f8301601f19908116603f01168101908282118183101715620000ce57620000ce6200005e565b81604052838152602092508683858801011115620000eb57600080fd5b600091505b838210156200010f5785820183015181830184015290820190620000f0565b600093810190920192909252949350505050565b600080604083850312156200013757600080fd5b82516001600160401b03808211156200014f57600080fd5b6200015d8683870162000074565b935060208501519150808211156200017457600080fd5b50620001838582860162000074565b9150509250929050565b600181811c90821680620001a257607f821691505b602082108103620001c357634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200021757600081815260208120601f850160051c81016020861015620001f25750805b601f850160051c820191505b818110156200021357828155600101620001fe565b5050505b505050565b81516001600160401b038111156200023857620002386200005e565b62000250816200024984546200018d565b84620001c9565b602080601f8311600181146200028857600084156200026f5750858301515b600019600386901b1c1916600185901b17855562000213565b600085815260208120601f198616915b82811015620002b95788860151825594840194600190910190840162000298565b5085821015620002d85787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61144d80620002f86000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806342966c6811610097578063a22cb46511610066578063a22cb465146101ff578063b88d4fde14610212578063c87b56dd14610225578063e985e9c51461023857600080fd5b806342966c68146101b05780636352211e146101c357806370a08231146101d657806395d89b41146101f757600080fd5b8063095ea7b3116100d3578063095ea7b31461016257806323b872dd1461017757806340c10f191461018a57806342842e0e1461019d57600080fd5b806301ffc9a7146100fa57806306fdde0314610122578063081812fc14610137575b600080fd5b61010d6101083660046110e7565b610274565b60405190151581526020015b60405180910390f35b61012a6102c6565b6040516101199190611154565b61014a610145366004611167565b610358565b6040516001600160a01b039091168152602001610119565b61017561017036600461119c565b61037f565b005b6101756101853660046111c6565b610499565b61017561019836600461119c565b610510565b6101756101ab3660046111c6565b61051e565b6101756101be366004611167565b610539565b61014a6101d1366004611167565b610545565b6101e96101e4366004611202565b6105aa565b604051908152602001610119565b61012a610644565b61017561020d36600461121d565b610653565b61017561022036600461126f565b61065e565b61012a610233366004611167565b6106dc565b61010d61024636600461134b565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b60006001600160e01b031982166380ac58cd60e01b14806102a557506001600160e01b03198216635b5e139f60e01b145b806102c057506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600080546102d59061137e565b80601f01602080910402602001604051908101604052809291908181526020018280546103019061137e565b801561034e5780601f106103235761010080835404028352916020019161034e565b820191906000526020600020905b81548152906001019060200180831161033157829003601f168201915b5050505050905090565b600061036382610750565b506000908152600460205260409020546001600160a01b031690565b600061038a82610545565b9050806001600160a01b0316836001600160a01b0316036103fc5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b038216148061041857506104188133610246565b61048a5760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c00000060648201526084016103f3565b61049483836107b4565b505050565b6104a33382610822565b6105055760405162461bcd60e51b815260206004820152602d60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201526c1c881bdc88185c1c1c9bdd9959609a1b60648201526084016103f3565b6104948383836108a1565b61051a8282610a81565b5050565b6104948383836040518060200160405280600081525061065e565b61054281610c0c565b50565b6000818152600260205260408120546001600160a01b0316806102c05760405162461bcd60e51b815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e204944000000000000000060448201526064016103f3565b60006001600160a01b0382166106285760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f74206120766160448201527f6c6964206f776e6572000000000000000000000000000000000000000000000060648201526084016103f3565b506001600160a01b031660009081526003602052604090205490565b6060600180546102d59061137e565b61051a338383610ca1565b6106683383610822565b6106ca5760405162461bcd60e51b815260206004820152602d60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201526c1c881bdc88185c1c1c9bdd9959609a1b60648201526084016103f3565b6106d684848484610d6f565b50505050565b60606106e782610750565b60006106fe60408051602081019091526000815290565b9050600081511161071e5760405180602001604052806000815250610749565b8061072884610df8565b6040516020016107399291906113b8565b6040516020818303038152906040525b9392505050565b6000818152600260205260409020546001600160a01b03166105425760405162461bcd60e51b815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e204944000000000000000060448201526064016103f3565b600081815260046020526040902080546001600160a01b0319166001600160a01b03841690811790915581906107e982610545565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008061082e83610545565b9050806001600160a01b0316846001600160a01b0316148061087557506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b806108995750836001600160a01b031661088e84610358565b6001600160a01b0316145b949350505050565b826001600160a01b03166108b482610545565b6001600160a01b0316146109185760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016103f3565b6001600160a01b03821661097a5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016103f3565b826001600160a01b031661098d82610545565b6001600160a01b0316146109f15760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016103f3565b600081815260046020908152604080832080546001600160a01b03199081169091556001600160a01b0387811680865260038552838620805460001901905590871680865283862080546001019055868652600290945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6001600160a01b038216610ad75760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016103f3565b6000818152600260205260409020546001600160a01b031615610b3c5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016103f3565b6000818152600260205260409020546001600160a01b031615610ba15760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016103f3565b6001600160a01b038216600081815260036020908152604080832080546001019055848352600290915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6000610c1782610545565b9050610c2282610545565b600083815260046020908152604080832080546001600160a01b03199081169091556001600160a01b0385168085526003845282852080546000190190558785526002909352818420805490911690555192935084927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b816001600160a01b0316836001600160a01b031603610d025760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016103f3565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b610d7a8484846108a1565b610d8684848484610e98565b6106d65760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e746572000000000000000000000000000060648201526084016103f3565b60606000610e0583610fef565b600101905060008167ffffffffffffffff811115610e2557610e25611259565b6040519080825280601f01601f191660200182016040528015610e4f576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084610e5957509392505050565b60006001600160a01b0384163b15610fe457604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290610edc9033908990889088906004016113e7565b6020604051808303816000875af1925050508015610f17575060408051601f3d908101601f19168201909252610f1491810190611423565b60015b610fca573d808015610f45576040519150601f19603f3d011682016040523d82523d6000602084013e610f4a565b606091505b508051600003610fc25760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e746572000000000000000000000000000060648201526084016103f3565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050610899565b506001949350505050565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310611038577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310611064576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061108257662386f26fc10000830492506010015b6305f5e100831061109a576305f5e100830492506008015b61271083106110ae57612710830492506004015b606483106110c0576064830492506002015b600a83106102c05760010192915050565b6001600160e01b03198116811461054257600080fd5b6000602082840312156110f957600080fd5b8135610749816110d1565b60005b8381101561111f578181015183820152602001611107565b50506000910152565b60008151808452611140816020860160208601611104565b601f01601f19169290920160200192915050565b6020815260006107496020830184611128565b60006020828403121561117957600080fd5b5035919050565b80356001600160a01b038116811461119757600080fd5b919050565b600080604083850312156111af57600080fd5b6111b883611180565b946020939093013593505050565b6000806000606084860312156111db57600080fd5b6111e484611180565b92506111f260208501611180565b9150604084013590509250925092565b60006020828403121561121457600080fd5b61074982611180565b6000806040838503121561123057600080fd5b61123983611180565b91506020830135801515811461124e57600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b6000806000806080858703121561128557600080fd5b61128e85611180565b935061129c60208601611180565b925060408501359150606085013567ffffffffffffffff808211156112c057600080fd5b818701915087601f8301126112d457600080fd5b8135818111156112e6576112e6611259565b604051601f8201601f19908116603f0116810190838211818310171561130e5761130e611259565b816040528281528a602084870101111561132757600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b6000806040838503121561135e57600080fd5b61136783611180565b915061137560208401611180565b90509250929050565b600181811c9082168061139257607f821691505b6020821081036113b257634e487b7160e01b600052602260045260246000fd5b50919050565b600083516113ca818460208801611104565b8351908301906113de818360208801611104565b01949350505050565b60006001600160a01b038087168352808616602084015250836040830152608060608301526114196080830184611128565b9695505050505050565b60006020828403121561143557600080fd5b8151610749816110d156fea164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x1745 CODESIZE SUB DUP1 PUSH3 0x1745 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x34 SWAP2 PUSH3 0x123 JUMP JUMPDEST DUP2 DUP2 PUSH1 0x0 PUSH3 0x44 DUP4 DUP3 PUSH3 0x21C JUMP JUMPDEST POP PUSH1 0x1 PUSH3 0x53 DUP3 DUP3 PUSH3 0x21C JUMP JUMPDEST POP POP POP POP POP PUSH3 0x2E8 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x86 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH3 0xA3 JUMPI PUSH3 0xA3 PUSH3 0x5E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP4 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP3 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH3 0xCE JUMPI PUSH3 0xCE PUSH3 0x5E JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP4 DUP2 MSTORE PUSH1 0x20 SWAP3 POP DUP7 DUP4 DUP6 DUP9 ADD ADD GT ISZERO PUSH3 0xEB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP2 POP JUMPDEST DUP4 DUP3 LT ISZERO PUSH3 0x10F JUMPI DUP6 DUP3 ADD DUP4 ADD MLOAD DUP2 DUP4 ADD DUP5 ADD MSTORE SWAP1 DUP3 ADD SWAP1 PUSH3 0xF0 JUMP JUMPDEST PUSH1 0x0 SWAP4 DUP2 ADD SWAP1 SWAP3 ADD SWAP3 SWAP1 SWAP3 MSTORE SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x137 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH3 0x14F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x15D DUP7 DUP4 DUP8 ADD PUSH3 0x74 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD MLOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH3 0x174 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x183 DUP6 DUP3 DUP7 ADD PUSH3 0x74 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH3 0x1A2 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH3 0x1C3 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH3 0x217 JUMPI PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP7 LT ISZERO PUSH3 0x1F2 JUMPI POP DUP1 JUMPDEST PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x213 JUMPI DUP3 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x1FE JUMP JUMPDEST POP POP POP JUMPDEST POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH3 0x238 JUMPI PUSH3 0x238 PUSH3 0x5E JUMP JUMPDEST PUSH3 0x250 DUP2 PUSH3 0x249 DUP5 SLOAD PUSH3 0x18D JUMP JUMPDEST DUP5 PUSH3 0x1C9 JUMP JUMPDEST PUSH1 0x20 DUP1 PUSH1 0x1F DUP4 GT PUSH1 0x1 DUP2 EQ PUSH3 0x288 JUMPI PUSH1 0x0 DUP5 ISZERO PUSH3 0x26F JUMPI POP DUP6 DUP4 ADD MLOAD JUMPDEST PUSH1 0x0 NOT PUSH1 0x3 DUP7 SWAP1 SHL SHR NOT AND PUSH1 0x1 DUP6 SWAP1 SHL OR DUP6 SSTORE PUSH3 0x213 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F NOT DUP7 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH3 0x2B9 JUMPI DUP9 DUP7 ADD MLOAD DUP3 SSTORE SWAP5 DUP5 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 DUP5 ADD PUSH3 0x298 JUMP JUMPDEST POP DUP6 DUP3 LT ISZERO PUSH3 0x2D8 JUMPI DUP8 DUP6 ADD MLOAD PUSH1 0x0 NOT PUSH1 0x3 DUP9 SWAP1 SHL PUSH1 0xF8 AND SHR NOT AND DUP2 SSTORE JUMPDEST POP POP POP POP POP PUSH1 0x1 SWAP1 DUP2 SHL ADD SWAP1 SSTORE POP JUMP JUMPDEST PUSH2 0x144D DUP1 PUSH3 0x2F8 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xF5 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x42966C68 GT PUSH2 0x97 JUMPI DUP1 PUSH4 0xA22CB465 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x1FF JUMPI DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0x212 JUMPI DUP1 PUSH4 0xC87B56DD EQ PUSH2 0x225 JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x238 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x42966C68 EQ PUSH2 0x1B0 JUMPI DUP1 PUSH4 0x6352211E EQ PUSH2 0x1C3 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x1D6 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x1F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x95EA7B3 GT PUSH2 0xD3 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x162 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x177 JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x18A JUMPI DUP1 PUSH4 0x42842E0E EQ PUSH2 0x19D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xFA JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x122 JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x137 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x10D PUSH2 0x108 CALLDATASIZE PUSH1 0x4 PUSH2 0x10E7 JUMP JUMPDEST PUSH2 0x274 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x12A PUSH2 0x2C6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x119 SWAP2 SWAP1 PUSH2 0x1154 JUMP JUMPDEST PUSH2 0x14A PUSH2 0x145 CALLDATASIZE PUSH1 0x4 PUSH2 0x1167 JUMP JUMPDEST PUSH2 0x358 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x119 JUMP JUMPDEST PUSH2 0x175 PUSH2 0x170 CALLDATASIZE PUSH1 0x4 PUSH2 0x119C JUMP JUMPDEST PUSH2 0x37F JUMP JUMPDEST STOP JUMPDEST PUSH2 0x175 PUSH2 0x185 CALLDATASIZE PUSH1 0x4 PUSH2 0x11C6 JUMP JUMPDEST PUSH2 0x499 JUMP JUMPDEST PUSH2 0x175 PUSH2 0x198 CALLDATASIZE PUSH1 0x4 PUSH2 0x119C JUMP JUMPDEST PUSH2 0x510 JUMP JUMPDEST PUSH2 0x175 PUSH2 0x1AB CALLDATASIZE PUSH1 0x4 PUSH2 0x11C6 JUMP JUMPDEST PUSH2 0x51E JUMP JUMPDEST PUSH2 0x175 PUSH2 0x1BE CALLDATASIZE PUSH1 0x4 PUSH2 0x1167 JUMP JUMPDEST PUSH2 0x539 JUMP JUMPDEST PUSH2 0x14A PUSH2 0x1D1 CALLDATASIZE PUSH1 0x4 PUSH2 0x1167 JUMP JUMPDEST PUSH2 0x545 JUMP JUMPDEST PUSH2 0x1E9 PUSH2 0x1E4 CALLDATASIZE PUSH1 0x4 PUSH2 0x1202 JUMP JUMPDEST PUSH2 0x5AA JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x119 JUMP JUMPDEST PUSH2 0x12A PUSH2 0x644 JUMP JUMPDEST PUSH2 0x175 PUSH2 0x20D CALLDATASIZE PUSH1 0x4 PUSH2 0x121D JUMP JUMPDEST PUSH2 0x653 JUMP JUMPDEST PUSH2 0x175 PUSH2 0x220 CALLDATASIZE PUSH1 0x4 PUSH2 0x126F JUMP JUMPDEST PUSH2 0x65E JUMP JUMPDEST PUSH2 0x12A PUSH2 0x233 CALLDATASIZE PUSH1 0x4 PUSH2 0x1167 JUMP JUMPDEST PUSH2 0x6DC JUMP JUMPDEST PUSH2 0x10D PUSH2 0x246 CALLDATASIZE PUSH1 0x4 PUSH2 0x134B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x80AC58CD PUSH1 0xE0 SHL EQ DUP1 PUSH2 0x2A5 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x5B5E139F PUSH1 0xE0 SHL EQ JUMPDEST DUP1 PUSH2 0x2C0 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 SLOAD PUSH2 0x2D5 SWAP1 PUSH2 0x137E JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x301 SWAP1 PUSH2 0x137E JUMP JUMPDEST DUP1 ISZERO PUSH2 0x34E JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x323 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x34E JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x331 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x363 DUP3 PUSH2 0x750 JUMP JUMPDEST POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x38A DUP3 PUSH2 0x545 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x3FC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F76616C20746F2063757272656E74206F776E65 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x39 PUSH1 0xF9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND EQ DUP1 PUSH2 0x418 JUMPI POP PUSH2 0x418 DUP2 CALLER PUSH2 0x246 JUMP JUMPDEST PUSH2 0x48A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F76652063616C6C6572206973206E6F7420746F PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6B656E206F776E6572206F7220617070726F76656420666F7220616C6C000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3F3 JUMP JUMPDEST PUSH2 0x494 DUP4 DUP4 PUSH2 0x7B4 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x4A3 CALLER DUP3 PUSH2 0x822 JUMP JUMPDEST PUSH2 0x505 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A2063616C6C6572206973206E6F7420746F6B656E206F776E65 PUSH1 0x44 DUP3 ADD MSTORE PUSH13 0x1C881BDC88185C1C1C9BDD9959 PUSH1 0x9A SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3F3 JUMP JUMPDEST PUSH2 0x494 DUP4 DUP4 DUP4 PUSH2 0x8A1 JUMP JUMPDEST PUSH2 0x51A DUP3 DUP3 PUSH2 0xA81 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x494 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x65E JUMP JUMPDEST PUSH2 0x542 DUP2 PUSH2 0xC0C JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP1 PUSH2 0x2C0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20696E76616C696420746F6B656E2049440000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3F3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x628 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A2061646472657373207A65726F206973206E6F742061207661 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6C6964206F776E65720000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3F3 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 DUP1 SLOAD PUSH2 0x2D5 SWAP1 PUSH2 0x137E JUMP JUMPDEST PUSH2 0x51A CALLER DUP4 DUP4 PUSH2 0xCA1 JUMP JUMPDEST PUSH2 0x668 CALLER DUP4 PUSH2 0x822 JUMP JUMPDEST PUSH2 0x6CA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A2063616C6C6572206973206E6F7420746F6B656E206F776E65 PUSH1 0x44 DUP3 ADD MSTORE PUSH13 0x1C881BDC88185C1C1C9BDD9959 PUSH1 0x9A SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3F3 JUMP JUMPDEST PUSH2 0x6D6 DUP5 DUP5 DUP5 DUP5 PUSH2 0xD6F JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x6E7 DUP3 PUSH2 0x750 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6FE PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE SWAP1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 MLOAD GT PUSH2 0x71E JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x749 JUMP JUMPDEST DUP1 PUSH2 0x728 DUP5 PUSH2 0xDF8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x739 SWAP3 SWAP2 SWAP1 PUSH2 0x13B8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x542 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20696E76616C696420746F6B656E2049440000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3F3 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP2 SWAP1 PUSH2 0x7E9 DUP3 PUSH2 0x545 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x82E DUP4 PUSH2 0x545 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x875 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP9 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST DUP1 PUSH2 0x899 JUMPI POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x88E DUP5 PUSH2 0x358 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x8B4 DUP3 PUSH2 0x545 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x918 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E736665722066726F6D20696E636F727265637420 PUSH1 0x44 DUP3 ADD MSTORE PUSH5 0x37BBB732B9 PUSH1 0xD9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3F3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x97A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F20746865207A65726F20616464 PUSH1 0x44 DUP3 ADD MSTORE PUSH4 0x72657373 PUSH1 0xE0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3F3 JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x98D DUP3 PUSH2 0x545 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x9F1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E736665722066726F6D20696E636F727265637420 PUSH1 0x44 DUP3 ADD MSTORE PUSH5 0x37BBB732B9 PUSH1 0xD9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3F3 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 DUP2 AND SWAP1 SWAP2 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND DUP1 DUP7 MSTORE PUSH1 0x3 DUP6 MSTORE DUP4 DUP7 KECCAK256 DUP1 SLOAD PUSH1 0x0 NOT ADD SWAP1 SSTORE SWAP1 DUP8 AND DUP1 DUP7 MSTORE DUP4 DUP7 KECCAK256 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE DUP7 DUP7 MSTORE PUSH1 0x2 SWAP1 SWAP5 MSTORE DUP3 DUP6 KECCAK256 DUP1 SLOAD SWAP1 SWAP3 AND DUP5 OR SWAP1 SWAP2 SSTORE SWAP1 MLOAD DUP5 SWAP4 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 LOG4 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xAD7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206D696E7420746F20746865207A65726F2061646472657373 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3F3 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0xB3C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20746F6B656E20616C7265616479206D696E74656400000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3F3 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0xBA1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20746F6B656E20616C7265616479206D696E74656400000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3F3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE DUP5 DUP4 MSTORE PUSH1 0x2 SWAP1 SWAP2 MSTORE DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND DUP5 OR SWAP1 SSTORE MLOAD DUP4 SWAP3 SWAP2 SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 DUP3 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC17 DUP3 PUSH2 0x545 JUMP JUMPDEST SWAP1 POP PUSH2 0xC22 DUP3 PUSH2 0x545 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 DUP2 AND SWAP1 SWAP2 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP1 DUP6 MSTORE PUSH1 0x3 DUP5 MSTORE DUP3 DUP6 KECCAK256 DUP1 SLOAD PUSH1 0x0 NOT ADD SWAP1 SSTORE DUP8 DUP6 MSTORE PUSH1 0x2 SWAP1 SWAP4 MSTORE DUP2 DUP5 KECCAK256 DUP1 SLOAD SWAP1 SWAP2 AND SWAP1 SSTORE MLOAD SWAP3 SWAP4 POP DUP5 SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 DUP4 SWAP1 LOG4 POP POP JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0xD02 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F766520746F2063616C6C657200000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3F3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND DUP7 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP2 MLOAD SWAP2 DUP3 MSTORE PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0xD7A DUP5 DUP5 DUP5 PUSH2 0x8A1 JUMP JUMPDEST PUSH2 0xD86 DUP5 DUP5 DUP5 DUP5 PUSH2 0xE98 JUMP JUMPDEST PUSH2 0x6D6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x32 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F206E6F6E204552433732315265 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x63656976657220696D706C656D656E7465720000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3F3 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0xE05 DUP4 PUSH2 0xFEF JUMP JUMPDEST PUSH1 0x1 ADD SWAP1 POP PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xE25 JUMPI PUSH2 0xE25 PUSH2 0x1259 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xE4F JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP DUP2 DUP2 ADD PUSH1 0x20 ADD JUMPDEST PUSH1 0x0 NOT ADD PUSH32 0x3031323334353637383961626364656600000000000000000000000000000000 PUSH1 0xA DUP7 MOD BYTE DUP2 MSTORE8 PUSH1 0xA DUP6 DIV SWAP5 POP DUP5 PUSH2 0xE59 JUMPI POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO PUSH2 0xFE4 JUMPI PUSH1 0x40 MLOAD PUSH4 0xA85BD01 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0x150B7A02 SWAP1 PUSH2 0xEDC SWAP1 CALLER SWAP1 DUP10 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x13E7 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0xF17 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0xF14 SWAP2 DUP2 ADD SWAP1 PUSH2 0x1423 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0xFCA JUMPI RETURNDATASIZE DUP1 DUP1 ISZERO PUSH2 0xF45 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xF4A JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP DUP1 MLOAD PUSH1 0x0 SUB PUSH2 0xFC2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x32 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F206E6F6E204552433732315265 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x63656976657220696D706C656D656E7465720000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3F3 JUMP JUMPDEST DUP1 MLOAD DUP2 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH4 0xA85BD01 PUSH1 0xE1 SHL EQ SWAP1 POP PUSH2 0x899 JUMP JUMPDEST POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH27 0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F010000000000000000 DUP4 LT PUSH2 0x1038 JUMPI PUSH27 0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F010000000000000000 DUP4 DIV SWAP3 POP PUSH1 0x40 ADD JUMPDEST PUSH14 0x4EE2D6D415B85ACEF8100000000 DUP4 LT PUSH2 0x1064 JUMPI PUSH14 0x4EE2D6D415B85ACEF8100000000 DUP4 DIV SWAP3 POP PUSH1 0x20 ADD JUMPDEST PUSH7 0x2386F26FC10000 DUP4 LT PUSH2 0x1082 JUMPI PUSH7 0x2386F26FC10000 DUP4 DIV SWAP3 POP PUSH1 0x10 ADD JUMPDEST PUSH4 0x5F5E100 DUP4 LT PUSH2 0x109A JUMPI PUSH4 0x5F5E100 DUP4 DIV SWAP3 POP PUSH1 0x8 ADD JUMPDEST PUSH2 0x2710 DUP4 LT PUSH2 0x10AE JUMPI PUSH2 0x2710 DUP4 DIV SWAP3 POP PUSH1 0x4 ADD JUMPDEST PUSH1 0x64 DUP4 LT PUSH2 0x10C0 JUMPI PUSH1 0x64 DUP4 DIV SWAP3 POP PUSH1 0x2 ADD JUMPDEST PUSH1 0xA DUP4 LT PUSH2 0x2C0 JUMPI PUSH1 0x1 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x542 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x10F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x749 DUP2 PUSH2 0x10D1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x111F JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1107 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x1140 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x1104 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x749 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x1128 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1179 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x1197 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x11AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x11B8 DUP4 PUSH2 0x1180 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x11DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x11E4 DUP5 PUSH2 0x1180 JUMP JUMPDEST SWAP3 POP PUSH2 0x11F2 PUSH1 0x20 DUP6 ADD PUSH2 0x1180 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1214 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x749 DUP3 PUSH2 0x1180 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1230 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1239 DUP4 PUSH2 0x1180 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x124E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x1285 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x128E DUP6 PUSH2 0x1180 JUMP JUMPDEST SWAP4 POP PUSH2 0x129C PUSH1 0x20 DUP7 ADD PUSH2 0x1180 JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x12C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x12D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x12E6 JUMPI PUSH2 0x12E6 PUSH2 0x1259 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x130E JUMPI PUSH2 0x130E PUSH2 0x1259 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP11 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x1327 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x135E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1367 DUP4 PUSH2 0x1180 JUMP JUMPDEST SWAP2 POP PUSH2 0x1375 PUSH1 0x20 DUP5 ADD PUSH2 0x1180 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x1392 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x13B2 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP4 MLOAD PUSH2 0x13CA DUP2 DUP5 PUSH1 0x20 DUP9 ADD PUSH2 0x1104 JUMP JUMPDEST DUP4 MLOAD SWAP1 DUP4 ADD SWAP1 PUSH2 0x13DE DUP2 DUP4 PUSH1 0x20 DUP9 ADD PUSH2 0x1104 JUMP JUMPDEST ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND DUP4 MSTORE DUP1 DUP7 AND PUSH1 0x20 DUP5 ADD MSTORE POP DUP4 PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x80 PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x1419 PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x1128 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1435 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x749 DUP2 PUSH2 0x10D1 JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"298:295:60:-:0;;;334:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;397:5;404:7;1456:5:29;:13;397:5:60;1456::29;:13;:::i;:::-;-1:-1:-1;1479:7:29;:17;1489:7;1479;:17;:::i;:::-;;1390:113;;334:81:60;;298:295;;14:127:92;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:840;200:5;253:3;246:4;238:6;234:17;230:27;220:55;;271:1;268;261:12;220:55;294:13;;-1:-1:-1;;;;;356:10:92;;;353:36;;;369:18;;:::i;:::-;444:2;438:9;412:2;498:13;;-1:-1:-1;;494:22:92;;;518:2;490:31;486:40;474:53;;;542:18;;;562:22;;;539:46;536:72;;;588:18;;:::i;:::-;628:10;624:2;617:22;663:2;655:6;648:18;685:4;675:14;;730:3;725:2;720;712:6;708:15;704:24;701:33;698:53;;;747:1;744;737:12;698:53;769:1;760:10;;779:133;793:2;790:1;787:9;779:133;;;881:14;;;877:23;;871:30;850:14;;;846:23;;839:63;804:10;;;;779:133;;;954:1;932:15;;;928:24;;;921:35;;;;936:6;146:840;-1:-1:-1;;;;146:840:92:o;991:562::-;1090:6;1098;1151:2;1139:9;1130:7;1126:23;1122:32;1119:52;;;1167:1;1164;1157:12;1119:52;1194:16;;-1:-1:-1;;;;;1259:14:92;;;1256:34;;;1286:1;1283;1276:12;1256:34;1309:61;1362:7;1353:6;1342:9;1338:22;1309:61;:::i;:::-;1299:71;;1416:2;1405:9;1401:18;1395:25;1379:41;;1445:2;1435:8;1432:16;1429:36;;;1461:1;1458;1451:12;1429:36;;1484:63;1539:7;1528:8;1517:9;1513:24;1484:63;:::i;:::-;1474:73;;;991:562;;;;;:::o;1558:380::-;1637:1;1633:12;;;;1680;;;1701:61;;1755:4;1747:6;1743:17;1733:27;;1701:61;1808:2;1800:6;1797:14;1777:18;1774:38;1771:161;;1854:10;1849:3;1845:20;1842:1;1835:31;1889:4;1886:1;1879:15;1917:4;1914:1;1907:15;1771:161;;1558:380;;;:::o;2069:545::-;2171:2;2166:3;2163:11;2160:448;;;2207:1;2232:5;2228:2;2221:17;2277:4;2273:2;2263:19;2347:2;2335:10;2331:19;2328:1;2324:27;2318:4;2314:38;2383:4;2371:10;2368:20;2365:47;;;-1:-1:-1;2406:4:92;2365:47;2461:2;2456:3;2452:12;2449:1;2445:20;2439:4;2435:31;2425:41;;2516:82;2534:2;2527:5;2524:13;2516:82;;;2579:17;;;2560:1;2549:13;2516:82;;;2520:3;;;2160:448;2069:545;;;:::o;2790:1352::-;2910:10;;-1:-1:-1;;;;;2932:30:92;;2929:56;;;2965:18;;:::i;:::-;2994:97;3084:6;3044:38;3076:4;3070:11;3044:38;:::i;:::-;3038:4;2994:97;:::i;:::-;3146:4;;3210:2;3199:14;;3227:1;3222:663;;;;3929:1;3946:6;3943:89;;;-1:-1:-1;3998:19:92;;;3992:26;3943:89;-1:-1:-1;;2747:1:92;2743:11;;;2739:24;2735:29;2725:40;2771:1;2767:11;;;2722:57;4045:81;;3192:944;;3222:663;2016:1;2009:14;;;2053:4;2040:18;;-1:-1:-1;;3258:20:92;;;3376:236;3390:7;3387:1;3384:14;3376:236;;;3479:19;;;3473:26;3458:42;;3571:27;;;;3539:1;3527:14;;;;3406:19;;3376:236;;;3380:3;3640:6;3631:7;3628:19;3625:201;;;3701:19;;;3695:26;-1:-1:-1;;3784:1:92;3780:14;;;3796:3;3776:24;3772:37;3768:42;3753:58;3738:74;;3625:201;-1:-1:-1;;;;;3872:1:92;3856:14;;;3852:22;3839:36;;-1:-1:-1;2790:1352:92:o;:::-;298:295:60;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_afterTokenTransfer_8757":{"entryPoint":null,"id":8757,"parameterSlots":4,"returnSlots":0},"@_approve_8623":{"entryPoint":1972,"id":8623,"parameterSlots":2,"returnSlots":0},"@_baseURI_8060":{"entryPoint":null,"id":8060,"parameterSlots":0,"returnSlots":1},"@_beforeTokenTransfer_8744":{"entryPoint":null,"id":8744,"parameterSlots":4,"returnSlots":0},"@_burn_8514":{"entryPoint":3084,"id":8514,"parameterSlots":1,"returnSlots":0},"@_checkOnERC721Received_8731":{"entryPoint":3736,"id":8731,"parameterSlots":4,"returnSlots":1},"@_exists_8292":{"entryPoint":null,"id":8292,"parameterSlots":1,"returnSlots":1},"@_isApprovedOrOwner_8326":{"entryPoint":2082,"id":8326,"parameterSlots":2,"returnSlots":1},"@_mint_8447":{"entryPoint":2689,"id":8447,"parameterSlots":2,"returnSlots":0},"@_msgSender_9276":{"entryPoint":null,"id":9276,"parameterSlots":0,"returnSlots":1},"@_ownerOf_8274":{"entryPoint":null,"id":8274,"parameterSlots":1,"returnSlots":1},"@_requireMinted_8669":{"entryPoint":1872,"id":8669,"parameterSlots":1,"returnSlots":0},"@_safeTransfer_8261":{"entryPoint":3439,"id":8261,"parameterSlots":4,"returnSlots":0},"@_setApprovalForAll_8655":{"entryPoint":3233,"id":8655,"parameterSlots":3,"returnSlots":0},"@_transfer_8599":{"entryPoint":2209,"id":8599,"parameterSlots":3,"returnSlots":0},"@approve_8103":{"entryPoint":895,"id":8103,"parameterSlots":2,"returnSlots":0},"@balanceOf_7964":{"entryPoint":1450,"id":7964,"parameterSlots":1,"returnSlots":1},"@burn_12802":{"entryPoint":1337,"id":12802,"parameterSlots":1,"returnSlots":0},"@getApproved_8121":{"entryPoint":856,"id":8121,"parameterSlots":1,"returnSlots":1},"@isApprovedForAll_8156":{"entryPoint":null,"id":8156,"parameterSlots":2,"returnSlots":1},"@isContract_8952":{"entryPoint":null,"id":8952,"parameterSlots":1,"returnSlots":1},"@log10_10446":{"entryPoint":4079,"id":10446,"parameterSlots":1,"returnSlots":1},"@mint_12792":{"entryPoint":1296,"id":12792,"parameterSlots":2,"returnSlots":0},"@name_8002":{"entryPoint":710,"id":8002,"parameterSlots":0,"returnSlots":1},"@ownerOf_7992":{"entryPoint":1349,"id":7992,"parameterSlots":1,"returnSlots":1},"@safeTransferFrom_8202":{"entryPoint":1310,"id":8202,"parameterSlots":3,"returnSlots":0},"@safeTransferFrom_8232":{"entryPoint":1630,"id":8232,"parameterSlots":4,"returnSlots":0},"@setApprovalForAll_8138":{"entryPoint":1619,"id":8138,"parameterSlots":2,"returnSlots":0},"@supportsInterface_7940":{"entryPoint":628,"id":7940,"parameterSlots":1,"returnSlots":1},"@supportsInterface_9730":{"entryPoint":null,"id":9730,"parameterSlots":1,"returnSlots":1},"@symbol_8012":{"entryPoint":1604,"id":8012,"parameterSlots":0,"returnSlots":1},"@toString_9537":{"entryPoint":3576,"id":9537,"parameterSlots":1,"returnSlots":1},"@tokenURI_8051":{"entryPoint":1756,"id":8051,"parameterSlots":1,"returnSlots":1},"@transferFrom_8183":{"entryPoint":1177,"id":8183,"parameterSlots":3,"returnSlots":0},"abi_decode_address":{"entryPoint":4480,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_tuple_t_address":{"entryPoint":4610,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_address":{"entryPoint":4939,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_addresst_uint256":{"entryPoint":4550,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr":{"entryPoint":4719,"id":null,"parameterSlots":2,"returnSlots":4},"abi_decode_tuple_t_addresst_bool":{"entryPoint":4637,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_uint256":{"entryPoint":4508,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_bytes4":{"entryPoint":4327,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes4_fromMemory":{"entryPoint":5155,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256":{"entryPoint":4455,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_string":{"entryPoint":4392,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_packed_t_string_memory_ptr_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":5048,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address_t_address_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":5095,"id":null,"parameterSlots":5,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":4436,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_12a8e5623d251e191fe4a291d9a59bcc01a4db7a1f5c20fc8de44358c18308af__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_c6e14a63ffb144eeef7cce6988e5dce07c60a7e0a7b1ef25dbe18c61483e0a83__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"copy_memory_to_memory_with_cleanup":{"entryPoint":4356,"id":null,"parameterSlots":3,"returnSlots":0},"extract_byte_array_length":{"entryPoint":4990,"id":null,"parameterSlots":1,"returnSlots":1},"panic_error_0x12":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":4697,"id":null,"parameterSlots":0,"returnSlots":0},"validator_revert_bytes4":{"entryPoint":4305,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:10919:92","statements":[{"nodeType":"YulBlock","src":"6:3:92","statements":[]},{"body":{"nodeType":"YulBlock","src":"58:87:92","statements":[{"body":{"nodeType":"YulBlock","src":"123:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"132:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"135:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"125:6:92"},"nodeType":"YulFunctionCall","src":"125:12:92"},"nodeType":"YulExpressionStatement","src":"125:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"81:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"92:5:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"103:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"108:10:92","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"99:3:92"},"nodeType":"YulFunctionCall","src":"99:20:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"88:3:92"},"nodeType":"YulFunctionCall","src":"88:32:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"78:2:92"},"nodeType":"YulFunctionCall","src":"78:43:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"71:6:92"},"nodeType":"YulFunctionCall","src":"71:51:92"},"nodeType":"YulIf","src":"68:71:92"}]},"name":"validator_revert_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"47:5:92","type":""}],"src":"14:131:92"},{"body":{"nodeType":"YulBlock","src":"219:176:92","statements":[{"body":{"nodeType":"YulBlock","src":"265:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"274:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"277:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"267:6:92"},"nodeType":"YulFunctionCall","src":"267:12:92"},"nodeType":"YulExpressionStatement","src":"267:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"240:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"249:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"236:3:92"},"nodeType":"YulFunctionCall","src":"236:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"261:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"232:3:92"},"nodeType":"YulFunctionCall","src":"232:32:92"},"nodeType":"YulIf","src":"229:52:92"},{"nodeType":"YulVariableDeclaration","src":"290:36:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"316:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"303:12:92"},"nodeType":"YulFunctionCall","src":"303:23:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"294:5:92","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"359:5:92"}],"functionName":{"name":"validator_revert_bytes4","nodeType":"YulIdentifier","src":"335:23:92"},"nodeType":"YulFunctionCall","src":"335:30:92"},"nodeType":"YulExpressionStatement","src":"335:30:92"},{"nodeType":"YulAssignment","src":"374:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"384:5:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"374:6:92"}]}]},"name":"abi_decode_tuple_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"185:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"196:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"208:6:92","type":""}],"src":"150:245:92"},{"body":{"nodeType":"YulBlock","src":"495:92:92","statements":[{"nodeType":"YulAssignment","src":"505:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"517:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"528:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"513:3:92"},"nodeType":"YulFunctionCall","src":"513:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"505:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"547:9:92"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"572:6:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"565:6:92"},"nodeType":"YulFunctionCall","src":"565:14:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"558:6:92"},"nodeType":"YulFunctionCall","src":"558:22:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"540:6:92"},"nodeType":"YulFunctionCall","src":"540:41:92"},"nodeType":"YulExpressionStatement","src":"540:41:92"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"464:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"475:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"486:4:92","type":""}],"src":"400:187:92"},{"body":{"nodeType":"YulBlock","src":"658:184:92","statements":[{"nodeType":"YulVariableDeclaration","src":"668:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"677:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"672:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"737:63:92","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"762:3:92"},{"name":"i","nodeType":"YulIdentifier","src":"767:1:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"758:3:92"},"nodeType":"YulFunctionCall","src":"758:11:92"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"781:3:92"},{"name":"i","nodeType":"YulIdentifier","src":"786:1:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"777:3:92"},"nodeType":"YulFunctionCall","src":"777:11:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"771:5:92"},"nodeType":"YulFunctionCall","src":"771:18:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"751:6:92"},"nodeType":"YulFunctionCall","src":"751:39:92"},"nodeType":"YulExpressionStatement","src":"751:39:92"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"698:1:92"},{"name":"length","nodeType":"YulIdentifier","src":"701:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"695:2:92"},"nodeType":"YulFunctionCall","src":"695:13:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"709:19:92","statements":[{"nodeType":"YulAssignment","src":"711:15:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"720:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"723:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"716:3:92"},"nodeType":"YulFunctionCall","src":"716:10:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"711:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"691:3:92","statements":[]},"src":"687:113:92"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"820:3:92"},{"name":"length","nodeType":"YulIdentifier","src":"825:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"816:3:92"},"nodeType":"YulFunctionCall","src":"816:16:92"},{"kind":"number","nodeType":"YulLiteral","src":"834:1:92","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"809:6:92"},"nodeType":"YulFunctionCall","src":"809:27:92"},"nodeType":"YulExpressionStatement","src":"809:27:92"}]},"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"636:3:92","type":""},{"name":"dst","nodeType":"YulTypedName","src":"641:3:92","type":""},{"name":"length","nodeType":"YulTypedName","src":"646:6:92","type":""}],"src":"592:250:92"},{"body":{"nodeType":"YulBlock","src":"897:221:92","statements":[{"nodeType":"YulVariableDeclaration","src":"907:26:92","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"927:5:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"921:5:92"},"nodeType":"YulFunctionCall","src":"921:12:92"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"911:6:92","type":""}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"949:3:92"},{"name":"length","nodeType":"YulIdentifier","src":"954:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"942:6:92"},"nodeType":"YulFunctionCall","src":"942:19:92"},"nodeType":"YulExpressionStatement","src":"942:19:92"},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1009:5:92"},{"kind":"number","nodeType":"YulLiteral","src":"1016:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1005:3:92"},"nodeType":"YulFunctionCall","src":"1005:16:92"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1027:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"1032:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1023:3:92"},"nodeType":"YulFunctionCall","src":"1023:14:92"},{"name":"length","nodeType":"YulIdentifier","src":"1039:6:92"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"970:34:92"},"nodeType":"YulFunctionCall","src":"970:76:92"},"nodeType":"YulExpressionStatement","src":"970:76:92"},{"nodeType":"YulAssignment","src":"1055:57:92","value":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1070:3:92"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"1083:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"1091:2:92","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1079:3:92"},"nodeType":"YulFunctionCall","src":"1079:15:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1100:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"1096:3:92"},"nodeType":"YulFunctionCall","src":"1096:7:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1075:3:92"},"nodeType":"YulFunctionCall","src":"1075:29:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1066:3:92"},"nodeType":"YulFunctionCall","src":"1066:39:92"},{"kind":"number","nodeType":"YulLiteral","src":"1107:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1062:3:92"},"nodeType":"YulFunctionCall","src":"1062:50:92"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1055:3:92"}]}]},"name":"abi_encode_string","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"874:5:92","type":""},{"name":"pos","nodeType":"YulTypedName","src":"881:3:92","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"889:3:92","type":""}],"src":"847:271:92"},{"body":{"nodeType":"YulBlock","src":"1244:99:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1261:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1272:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1254:6:92"},"nodeType":"YulFunctionCall","src":"1254:21:92"},"nodeType":"YulExpressionStatement","src":"1254:21:92"},{"nodeType":"YulAssignment","src":"1284:53:92","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1310:6:92"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1322:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1333:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1318:3:92"},"nodeType":"YulFunctionCall","src":"1318:18:92"}],"functionName":{"name":"abi_encode_string","nodeType":"YulIdentifier","src":"1292:17:92"},"nodeType":"YulFunctionCall","src":"1292:45:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1284:4:92"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1213:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1224:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1235:4:92","type":""}],"src":"1123:220:92"},{"body":{"nodeType":"YulBlock","src":"1418:110:92","statements":[{"body":{"nodeType":"YulBlock","src":"1464:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1473:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1476:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1466:6:92"},"nodeType":"YulFunctionCall","src":"1466:12:92"},"nodeType":"YulExpressionStatement","src":"1466:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1439:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"1448:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1435:3:92"},"nodeType":"YulFunctionCall","src":"1435:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"1460:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1431:3:92"},"nodeType":"YulFunctionCall","src":"1431:32:92"},"nodeType":"YulIf","src":"1428:52:92"},{"nodeType":"YulAssignment","src":"1489:33:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1512:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1499:12:92"},"nodeType":"YulFunctionCall","src":"1499:23:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1489:6:92"}]}]},"name":"abi_decode_tuple_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1384:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1395:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1407:6:92","type":""}],"src":"1348:180:92"},{"body":{"nodeType":"YulBlock","src":"1634:125:92","statements":[{"nodeType":"YulAssignment","src":"1644:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1656:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1667:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1652:3:92"},"nodeType":"YulFunctionCall","src":"1652:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1644:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1686:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1701:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"1709:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1697:3:92"},"nodeType":"YulFunctionCall","src":"1697:55:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1679:6:92"},"nodeType":"YulFunctionCall","src":"1679:74:92"},"nodeType":"YulExpressionStatement","src":"1679:74:92"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1603:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1614:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1625:4:92","type":""}],"src":"1533:226:92"},{"body":{"nodeType":"YulBlock","src":"1813:147:92","statements":[{"nodeType":"YulAssignment","src":"1823:29:92","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1845:6:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1832:12:92"},"nodeType":"YulFunctionCall","src":"1832:20:92"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"1823:5:92"}]},{"body":{"nodeType":"YulBlock","src":"1938:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1947:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1950:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1940:6:92"},"nodeType":"YulFunctionCall","src":"1940:12:92"},"nodeType":"YulExpressionStatement","src":"1940:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1874:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1885:5:92"},{"kind":"number","nodeType":"YulLiteral","src":"1892:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1881:3:92"},"nodeType":"YulFunctionCall","src":"1881:54:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1871:2:92"},"nodeType":"YulFunctionCall","src":"1871:65:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1864:6:92"},"nodeType":"YulFunctionCall","src":"1864:73:92"},"nodeType":"YulIf","src":"1861:93:92"}]},"name":"abi_decode_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"1792:6:92","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"1803:5:92","type":""}],"src":"1764:196:92"},{"body":{"nodeType":"YulBlock","src":"2052:167:92","statements":[{"body":{"nodeType":"YulBlock","src":"2098:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2107:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2110:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2100:6:92"},"nodeType":"YulFunctionCall","src":"2100:12:92"},"nodeType":"YulExpressionStatement","src":"2100:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2073:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"2082:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2069:3:92"},"nodeType":"YulFunctionCall","src":"2069:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"2094:2:92","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2065:3:92"},"nodeType":"YulFunctionCall","src":"2065:32:92"},"nodeType":"YulIf","src":"2062:52:92"},{"nodeType":"YulAssignment","src":"2123:39:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2152:9:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"2133:18:92"},"nodeType":"YulFunctionCall","src":"2133:29:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2123:6:92"}]},{"nodeType":"YulAssignment","src":"2171:42:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2198:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2209:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2194:3:92"},"nodeType":"YulFunctionCall","src":"2194:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2181:12:92"},"nodeType":"YulFunctionCall","src":"2181:32:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"2171:6:92"}]}]},"name":"abi_decode_tuple_t_addresst_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2010:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2021:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2033:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2041:6:92","type":""}],"src":"1965:254:92"},{"body":{"nodeType":"YulBlock","src":"2328:224:92","statements":[{"body":{"nodeType":"YulBlock","src":"2374:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2383:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2386:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2376:6:92"},"nodeType":"YulFunctionCall","src":"2376:12:92"},"nodeType":"YulExpressionStatement","src":"2376:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2349:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"2358:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2345:3:92"},"nodeType":"YulFunctionCall","src":"2345:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"2370:2:92","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2341:3:92"},"nodeType":"YulFunctionCall","src":"2341:32:92"},"nodeType":"YulIf","src":"2338:52:92"},{"nodeType":"YulAssignment","src":"2399:39:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2428:9:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"2409:18:92"},"nodeType":"YulFunctionCall","src":"2409:29:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2399:6:92"}]},{"nodeType":"YulAssignment","src":"2447:48:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2480:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2491:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2476:3:92"},"nodeType":"YulFunctionCall","src":"2476:18:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"2457:18:92"},"nodeType":"YulFunctionCall","src":"2457:38:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"2447:6:92"}]},{"nodeType":"YulAssignment","src":"2504:42:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2531:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2542:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2527:3:92"},"nodeType":"YulFunctionCall","src":"2527:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2514:12:92"},"nodeType":"YulFunctionCall","src":"2514:32:92"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"2504:6:92"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2278:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2289:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2301:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2309:6:92","type":""},{"name":"value2","nodeType":"YulTypedName","src":"2317:6:92","type":""}],"src":"2224:328:92"},{"body":{"nodeType":"YulBlock","src":"2627:116:92","statements":[{"body":{"nodeType":"YulBlock","src":"2673:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2682:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2685:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2675:6:92"},"nodeType":"YulFunctionCall","src":"2675:12:92"},"nodeType":"YulExpressionStatement","src":"2675:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2648:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"2657:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2644:3:92"},"nodeType":"YulFunctionCall","src":"2644:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"2669:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2640:3:92"},"nodeType":"YulFunctionCall","src":"2640:32:92"},"nodeType":"YulIf","src":"2637:52:92"},{"nodeType":"YulAssignment","src":"2698:39:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2727:9:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"2708:18:92"},"nodeType":"YulFunctionCall","src":"2708:29:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2698:6:92"}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2593:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2604:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2616:6:92","type":""}],"src":"2557:186:92"},{"body":{"nodeType":"YulBlock","src":"2849:76:92","statements":[{"nodeType":"YulAssignment","src":"2859:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2871:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2882:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2867:3:92"},"nodeType":"YulFunctionCall","src":"2867:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2859:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2901:9:92"},{"name":"value0","nodeType":"YulIdentifier","src":"2912:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2894:6:92"},"nodeType":"YulFunctionCall","src":"2894:25:92"},"nodeType":"YulExpressionStatement","src":"2894:25:92"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2818:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"2829:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2840:4:92","type":""}],"src":"2748:177:92"},{"body":{"nodeType":"YulBlock","src":"3014:263:92","statements":[{"body":{"nodeType":"YulBlock","src":"3060:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3069:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3072:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3062:6:92"},"nodeType":"YulFunctionCall","src":"3062:12:92"},"nodeType":"YulExpressionStatement","src":"3062:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3035:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"3044:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3031:3:92"},"nodeType":"YulFunctionCall","src":"3031:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"3056:2:92","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3027:3:92"},"nodeType":"YulFunctionCall","src":"3027:32:92"},"nodeType":"YulIf","src":"3024:52:92"},{"nodeType":"YulAssignment","src":"3085:39:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3114:9:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"3095:18:92"},"nodeType":"YulFunctionCall","src":"3095:29:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3085:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"3133:45:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3163:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3174:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3159:3:92"},"nodeType":"YulFunctionCall","src":"3159:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3146:12:92"},"nodeType":"YulFunctionCall","src":"3146:32:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"3137:5:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"3231:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3240:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3243:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3233:6:92"},"nodeType":"YulFunctionCall","src":"3233:12:92"},"nodeType":"YulExpressionStatement","src":"3233:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3200:5:92"},{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3221:5:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3214:6:92"},"nodeType":"YulFunctionCall","src":"3214:13:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3207:6:92"},"nodeType":"YulFunctionCall","src":"3207:21:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"3197:2:92"},"nodeType":"YulFunctionCall","src":"3197:32:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3190:6:92"},"nodeType":"YulFunctionCall","src":"3190:40:92"},"nodeType":"YulIf","src":"3187:60:92"},{"nodeType":"YulAssignment","src":"3256:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"3266:5:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"3256:6:92"}]}]},"name":"abi_decode_tuple_t_addresst_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2972:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2983:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2995:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"3003:6:92","type":""}],"src":"2930:347:92"},{"body":{"nodeType":"YulBlock","src":"3314:95:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3331:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3338:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"3343:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"3334:3:92"},"nodeType":"YulFunctionCall","src":"3334:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3324:6:92"},"nodeType":"YulFunctionCall","src":"3324:31:92"},"nodeType":"YulExpressionStatement","src":"3324:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3371:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"3374:4:92","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3364:6:92"},"nodeType":"YulFunctionCall","src":"3364:15:92"},"nodeType":"YulExpressionStatement","src":"3364:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3395:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3398:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3388:6:92"},"nodeType":"YulFunctionCall","src":"3388:15:92"},"nodeType":"YulExpressionStatement","src":"3388:15:92"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"3282:127:92"},{"body":{"nodeType":"YulBlock","src":"3544:1008:92","statements":[{"body":{"nodeType":"YulBlock","src":"3591:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3600:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3603:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3593:6:92"},"nodeType":"YulFunctionCall","src":"3593:12:92"},"nodeType":"YulExpressionStatement","src":"3593:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3565:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"3574:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3561:3:92"},"nodeType":"YulFunctionCall","src":"3561:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"3586:3:92","type":"","value":"128"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3557:3:92"},"nodeType":"YulFunctionCall","src":"3557:33:92"},"nodeType":"YulIf","src":"3554:53:92"},{"nodeType":"YulAssignment","src":"3616:39:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3645:9:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"3626:18:92"},"nodeType":"YulFunctionCall","src":"3626:29:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3616:6:92"}]},{"nodeType":"YulAssignment","src":"3664:48:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3697:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3708:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3693:3:92"},"nodeType":"YulFunctionCall","src":"3693:18:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"3674:18:92"},"nodeType":"YulFunctionCall","src":"3674:38:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"3664:6:92"}]},{"nodeType":"YulAssignment","src":"3721:42:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3748:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3759:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3744:3:92"},"nodeType":"YulFunctionCall","src":"3744:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3731:12:92"},"nodeType":"YulFunctionCall","src":"3731:32:92"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"3721:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"3772:46:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3803:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3814:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3799:3:92"},"nodeType":"YulFunctionCall","src":"3799:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3786:12:92"},"nodeType":"YulFunctionCall","src":"3786:32:92"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"3776:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3827:28:92","value":{"kind":"number","nodeType":"YulLiteral","src":"3837:18:92","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"3831:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"3882:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3891:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3894:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3884:6:92"},"nodeType":"YulFunctionCall","src":"3884:12:92"},"nodeType":"YulExpressionStatement","src":"3884:12:92"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"3870:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"3878:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3867:2:92"},"nodeType":"YulFunctionCall","src":"3867:14:92"},"nodeType":"YulIf","src":"3864:34:92"},{"nodeType":"YulVariableDeclaration","src":"3907:32:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3921:9:92"},{"name":"offset","nodeType":"YulIdentifier","src":"3932:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3917:3:92"},"nodeType":"YulFunctionCall","src":"3917:22:92"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"3911:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"3987:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3996:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3999:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3989:6:92"},"nodeType":"YulFunctionCall","src":"3989:12:92"},"nodeType":"YulExpressionStatement","src":"3989:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"3966:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"3970:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3962:3:92"},"nodeType":"YulFunctionCall","src":"3962:13:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3977:7:92"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3958:3:92"},"nodeType":"YulFunctionCall","src":"3958:27:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3951:6:92"},"nodeType":"YulFunctionCall","src":"3951:35:92"},"nodeType":"YulIf","src":"3948:55:92"},{"nodeType":"YulVariableDeclaration","src":"4012:26:92","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"4035:2:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4022:12:92"},"nodeType":"YulFunctionCall","src":"4022:16:92"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"4016:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"4061:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"4063:16:92"},"nodeType":"YulFunctionCall","src":"4063:18:92"},"nodeType":"YulExpressionStatement","src":"4063:18:92"}]},"condition":{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"4053:2:92"},{"name":"_1","nodeType":"YulIdentifier","src":"4057:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4050:2:92"},"nodeType":"YulFunctionCall","src":"4050:10:92"},"nodeType":"YulIf","src":"4047:36:92"},{"nodeType":"YulVariableDeclaration","src":"4092:17:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4106:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"4102:3:92"},"nodeType":"YulFunctionCall","src":"4102:7:92"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"4096:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4118:23:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4138:2:92","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4132:5:92"},"nodeType":"YulFunctionCall","src":"4132:9:92"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"4122:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4150:71:92","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"4172:6:92"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"4196:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"4200:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4192:3:92"},"nodeType":"YulFunctionCall","src":"4192:13:92"},{"name":"_4","nodeType":"YulIdentifier","src":"4207:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4188:3:92"},"nodeType":"YulFunctionCall","src":"4188:22:92"},{"kind":"number","nodeType":"YulLiteral","src":"4212:2:92","type":"","value":"63"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4184:3:92"},"nodeType":"YulFunctionCall","src":"4184:31:92"},{"name":"_4","nodeType":"YulIdentifier","src":"4217:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4180:3:92"},"nodeType":"YulFunctionCall","src":"4180:40:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4168:3:92"},"nodeType":"YulFunctionCall","src":"4168:53:92"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"4154:10:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"4280:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"4282:16:92"},"nodeType":"YulFunctionCall","src":"4282:18:92"},"nodeType":"YulExpressionStatement","src":"4282:18:92"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"4239:10:92"},{"name":"_1","nodeType":"YulIdentifier","src":"4251:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4236:2:92"},"nodeType":"YulFunctionCall","src":"4236:18:92"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"4259:10:92"},{"name":"memPtr","nodeType":"YulIdentifier","src":"4271:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"4256:2:92"},"nodeType":"YulFunctionCall","src":"4256:22:92"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"4233:2:92"},"nodeType":"YulFunctionCall","src":"4233:46:92"},"nodeType":"YulIf","src":"4230:72:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4318:2:92","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"4322:10:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4311:6:92"},"nodeType":"YulFunctionCall","src":"4311:22:92"},"nodeType":"YulExpressionStatement","src":"4311:22:92"},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"4349:6:92"},{"name":"_3","nodeType":"YulIdentifier","src":"4357:2:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4342:6:92"},"nodeType":"YulFunctionCall","src":"4342:18:92"},"nodeType":"YulExpressionStatement","src":"4342:18:92"},{"body":{"nodeType":"YulBlock","src":"4406:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4415:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4418:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4408:6:92"},"nodeType":"YulFunctionCall","src":"4408:12:92"},"nodeType":"YulExpressionStatement","src":"4408:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"4383:2:92"},{"name":"_3","nodeType":"YulIdentifier","src":"4387:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4379:3:92"},"nodeType":"YulFunctionCall","src":"4379:11:92"},{"kind":"number","nodeType":"YulLiteral","src":"4392:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4375:3:92"},"nodeType":"YulFunctionCall","src":"4375:20:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4397:7:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4372:2:92"},"nodeType":"YulFunctionCall","src":"4372:33:92"},"nodeType":"YulIf","src":"4369:53:92"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"4448:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"4456:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4444:3:92"},"nodeType":"YulFunctionCall","src":"4444:15:92"},{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"4465:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"4469:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4461:3:92"},"nodeType":"YulFunctionCall","src":"4461:11:92"},{"name":"_3","nodeType":"YulIdentifier","src":"4474:2:92"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"4431:12:92"},"nodeType":"YulFunctionCall","src":"4431:46:92"},"nodeType":"YulExpressionStatement","src":"4431:46:92"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"4501:6:92"},{"name":"_3","nodeType":"YulIdentifier","src":"4509:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4497:3:92"},"nodeType":"YulFunctionCall","src":"4497:15:92"},{"kind":"number","nodeType":"YulLiteral","src":"4514:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4493:3:92"},"nodeType":"YulFunctionCall","src":"4493:24:92"},{"kind":"number","nodeType":"YulLiteral","src":"4519:1:92","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4486:6:92"},"nodeType":"YulFunctionCall","src":"4486:35:92"},"nodeType":"YulExpressionStatement","src":"4486:35:92"},{"nodeType":"YulAssignment","src":"4530:16:92","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"4540:6:92"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"4530:6:92"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3486:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3497:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3509:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"3517:6:92","type":""},{"name":"value2","nodeType":"YulTypedName","src":"3525:6:92","type":""},{"name":"value3","nodeType":"YulTypedName","src":"3533:6:92","type":""}],"src":"3414:1138:92"},{"body":{"nodeType":"YulBlock","src":"4644:173:92","statements":[{"body":{"nodeType":"YulBlock","src":"4690:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4699:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4702:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4692:6:92"},"nodeType":"YulFunctionCall","src":"4692:12:92"},"nodeType":"YulExpressionStatement","src":"4692:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"4665:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"4674:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4661:3:92"},"nodeType":"YulFunctionCall","src":"4661:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"4686:2:92","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4657:3:92"},"nodeType":"YulFunctionCall","src":"4657:32:92"},"nodeType":"YulIf","src":"4654:52:92"},{"nodeType":"YulAssignment","src":"4715:39:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4744:9:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"4725:18:92"},"nodeType":"YulFunctionCall","src":"4725:29:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"4715:6:92"}]},{"nodeType":"YulAssignment","src":"4763:48:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4796:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"4807:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4792:3:92"},"nodeType":"YulFunctionCall","src":"4792:18:92"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"4773:18:92"},"nodeType":"YulFunctionCall","src":"4773:38:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"4763:6:92"}]}]},"name":"abi_decode_tuple_t_addresst_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4602:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"4613:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"4625:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"4633:6:92","type":""}],"src":"4557:260:92"},{"body":{"nodeType":"YulBlock","src":"4877:325:92","statements":[{"nodeType":"YulAssignment","src":"4887:22:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4901:1:92","type":"","value":"1"},{"name":"data","nodeType":"YulIdentifier","src":"4904:4:92"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"4897:3:92"},"nodeType":"YulFunctionCall","src":"4897:12:92"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"4887:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"4918:38:92","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"4948:4:92"},{"kind":"number","nodeType":"YulLiteral","src":"4954:1:92","type":"","value":"1"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4944:3:92"},"nodeType":"YulFunctionCall","src":"4944:12:92"},"variables":[{"name":"outOfPlaceEncoding","nodeType":"YulTypedName","src":"4922:18:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"4995:31:92","statements":[{"nodeType":"YulAssignment","src":"4997:27:92","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"5011:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"5019:4:92","type":"","value":"0x7f"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5007:3:92"},"nodeType":"YulFunctionCall","src":"5007:17:92"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"4997:6:92"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"4975:18:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"4968:6:92"},"nodeType":"YulFunctionCall","src":"4968:26:92"},"nodeType":"YulIf","src":"4965:61:92"},{"body":{"nodeType":"YulBlock","src":"5085:111:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5106:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5113:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"5118:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"5109:3:92"},"nodeType":"YulFunctionCall","src":"5109:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5099:6:92"},"nodeType":"YulFunctionCall","src":"5099:31:92"},"nodeType":"YulExpressionStatement","src":"5099:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5150:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"5153:4:92","type":"","value":"0x22"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5143:6:92"},"nodeType":"YulFunctionCall","src":"5143:15:92"},"nodeType":"YulExpressionStatement","src":"5143:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5178:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5181:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5171:6:92"},"nodeType":"YulFunctionCall","src":"5171:15:92"},"nodeType":"YulExpressionStatement","src":"5171:15:92"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"5041:18:92"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"5064:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"5072:2:92","type":"","value":"32"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"5061:2:92"},"nodeType":"YulFunctionCall","src":"5061:14:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"5038:2:92"},"nodeType":"YulFunctionCall","src":"5038:38:92"},"nodeType":"YulIf","src":"5035:161:92"}]},"name":"extract_byte_array_length","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"4857:4:92","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"4866:6:92","type":""}],"src":"4822:380:92"},{"body":{"nodeType":"YulBlock","src":"5381:223:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5398:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5409:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5391:6:92"},"nodeType":"YulFunctionCall","src":"5391:21:92"},"nodeType":"YulExpressionStatement","src":"5391:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5432:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5443:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5428:3:92"},"nodeType":"YulFunctionCall","src":"5428:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"5448:2:92","type":"","value":"33"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5421:6:92"},"nodeType":"YulFunctionCall","src":"5421:30:92"},"nodeType":"YulExpressionStatement","src":"5421:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5471:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5482:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5467:3:92"},"nodeType":"YulFunctionCall","src":"5467:18:92"},{"hexValue":"4552433732313a20617070726f76616c20746f2063757272656e74206f776e65","kind":"string","nodeType":"YulLiteral","src":"5487:34:92","type":"","value":"ERC721: approval to current owne"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5460:6:92"},"nodeType":"YulFunctionCall","src":"5460:62:92"},"nodeType":"YulExpressionStatement","src":"5460:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5542:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5553:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5538:3:92"},"nodeType":"YulFunctionCall","src":"5538:18:92"},{"hexValue":"72","kind":"string","nodeType":"YulLiteral","src":"5558:3:92","type":"","value":"r"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5531:6:92"},"nodeType":"YulFunctionCall","src":"5531:31:92"},"nodeType":"YulExpressionStatement","src":"5531:31:92"},{"nodeType":"YulAssignment","src":"5571:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5583:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5594:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5579:3:92"},"nodeType":"YulFunctionCall","src":"5579:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5571:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5358:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5372:4:92","type":""}],"src":"5207:397:92"},{"body":{"nodeType":"YulBlock","src":"5783:251:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5800:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5811:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5793:6:92"},"nodeType":"YulFunctionCall","src":"5793:21:92"},"nodeType":"YulExpressionStatement","src":"5793:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5834:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5845:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5830:3:92"},"nodeType":"YulFunctionCall","src":"5830:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"5850:2:92","type":"","value":"61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5823:6:92"},"nodeType":"YulFunctionCall","src":"5823:30:92"},"nodeType":"YulExpressionStatement","src":"5823:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5873:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5884:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5869:3:92"},"nodeType":"YulFunctionCall","src":"5869:18:92"},{"hexValue":"4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f","kind":"string","nodeType":"YulLiteral","src":"5889:34:92","type":"","value":"ERC721: approve caller is not to"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5862:6:92"},"nodeType":"YulFunctionCall","src":"5862:62:92"},"nodeType":"YulExpressionStatement","src":"5862:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5944:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"5955:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5940:3:92"},"nodeType":"YulFunctionCall","src":"5940:18:92"},{"hexValue":"6b656e206f776e6572206f7220617070726f76656420666f7220616c6c","kind":"string","nodeType":"YulLiteral","src":"5960:31:92","type":"","value":"ken owner or approved for all"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5933:6:92"},"nodeType":"YulFunctionCall","src":"5933:59:92"},"nodeType":"YulExpressionStatement","src":"5933:59:92"},{"nodeType":"YulAssignment","src":"6001:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6013:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6024:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6009:3:92"},"nodeType":"YulFunctionCall","src":"6009:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6001:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_c6e14a63ffb144eeef7cce6988e5dce07c60a7e0a7b1ef25dbe18c61483e0a83__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5760:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5774:4:92","type":""}],"src":"5609:425:92"},{"body":{"nodeType":"YulBlock","src":"6213:235:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6230:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6241:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6223:6:92"},"nodeType":"YulFunctionCall","src":"6223:21:92"},"nodeType":"YulExpressionStatement","src":"6223:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6264:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6275:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6260:3:92"},"nodeType":"YulFunctionCall","src":"6260:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"6280:2:92","type":"","value":"45"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6253:6:92"},"nodeType":"YulFunctionCall","src":"6253:30:92"},"nodeType":"YulExpressionStatement","src":"6253:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6303:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6314:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6299:3:92"},"nodeType":"YulFunctionCall","src":"6299:18:92"},{"hexValue":"4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e65","kind":"string","nodeType":"YulLiteral","src":"6319:34:92","type":"","value":"ERC721: caller is not token owne"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6292:6:92"},"nodeType":"YulFunctionCall","src":"6292:62:92"},"nodeType":"YulExpressionStatement","src":"6292:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6374:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6385:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6370:3:92"},"nodeType":"YulFunctionCall","src":"6370:18:92"},{"hexValue":"72206f7220617070726f766564","kind":"string","nodeType":"YulLiteral","src":"6390:15:92","type":"","value":"r or approved"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6363:6:92"},"nodeType":"YulFunctionCall","src":"6363:43:92"},"nodeType":"YulExpressionStatement","src":"6363:43:92"},{"nodeType":"YulAssignment","src":"6415:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6427:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6438:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6423:3:92"},"nodeType":"YulFunctionCall","src":"6423:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6415:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_12a8e5623d251e191fe4a291d9a59bcc01a4db7a1f5c20fc8de44358c18308af__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6190:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6204:4:92","type":""}],"src":"6039:409:92"},{"body":{"nodeType":"YulBlock","src":"6627:174:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6644:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6655:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6637:6:92"},"nodeType":"YulFunctionCall","src":"6637:21:92"},"nodeType":"YulExpressionStatement","src":"6637:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6678:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6689:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6674:3:92"},"nodeType":"YulFunctionCall","src":"6674:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"6694:2:92","type":"","value":"24"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6667:6:92"},"nodeType":"YulFunctionCall","src":"6667:30:92"},"nodeType":"YulExpressionStatement","src":"6667:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6717:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6728:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6713:3:92"},"nodeType":"YulFunctionCall","src":"6713:18:92"},{"hexValue":"4552433732313a20696e76616c696420746f6b656e204944","kind":"string","nodeType":"YulLiteral","src":"6733:26:92","type":"","value":"ERC721: invalid token ID"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6706:6:92"},"nodeType":"YulFunctionCall","src":"6706:54:92"},"nodeType":"YulExpressionStatement","src":"6706:54:92"},{"nodeType":"YulAssignment","src":"6769:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6781:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"6792:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6777:3:92"},"nodeType":"YulFunctionCall","src":"6777:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6769:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6604:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6618:4:92","type":""}],"src":"6453:348:92"},{"body":{"nodeType":"YulBlock","src":"6980:231:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6997:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7008:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6990:6:92"},"nodeType":"YulFunctionCall","src":"6990:21:92"},"nodeType":"YulExpressionStatement","src":"6990:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7031:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7042:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7027:3:92"},"nodeType":"YulFunctionCall","src":"7027:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"7047:2:92","type":"","value":"41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7020:6:92"},"nodeType":"YulFunctionCall","src":"7020:30:92"},"nodeType":"YulExpressionStatement","src":"7020:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7070:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7081:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7066:3:92"},"nodeType":"YulFunctionCall","src":"7066:18:92"},{"hexValue":"4552433732313a2061646472657373207a65726f206973206e6f742061207661","kind":"string","nodeType":"YulLiteral","src":"7086:34:92","type":"","value":"ERC721: address zero is not a va"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7059:6:92"},"nodeType":"YulFunctionCall","src":"7059:62:92"},"nodeType":"YulExpressionStatement","src":"7059:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7141:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7152:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7137:3:92"},"nodeType":"YulFunctionCall","src":"7137:18:92"},{"hexValue":"6c6964206f776e6572","kind":"string","nodeType":"YulLiteral","src":"7157:11:92","type":"","value":"lid owner"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7130:6:92"},"nodeType":"YulFunctionCall","src":"7130:39:92"},"nodeType":"YulExpressionStatement","src":"7130:39:92"},{"nodeType":"YulAssignment","src":"7178:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7190:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7201:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7186:3:92"},"nodeType":"YulFunctionCall","src":"7186:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7178:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6957:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6971:4:92","type":""}],"src":"6806:405:92"},{"body":{"nodeType":"YulBlock","src":"7403:309:92","statements":[{"nodeType":"YulVariableDeclaration","src":"7413:27:92","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7433:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"7427:5:92"},"nodeType":"YulFunctionCall","src":"7427:13:92"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"7417:6:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7488:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"7496:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7484:3:92"},"nodeType":"YulFunctionCall","src":"7484:17:92"},{"name":"pos","nodeType":"YulIdentifier","src":"7503:3:92"},{"name":"length","nodeType":"YulIdentifier","src":"7508:6:92"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"7449:34:92"},"nodeType":"YulFunctionCall","src":"7449:66:92"},"nodeType":"YulExpressionStatement","src":"7449:66:92"},{"nodeType":"YulVariableDeclaration","src":"7524:29:92","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"7541:3:92"},{"name":"length","nodeType":"YulIdentifier","src":"7546:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7537:3:92"},"nodeType":"YulFunctionCall","src":"7537:16:92"},"variables":[{"name":"end_1","nodeType":"YulTypedName","src":"7528:5:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"7562:29:92","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"7584:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"7578:5:92"},"nodeType":"YulFunctionCall","src":"7578:13:92"},"variables":[{"name":"length_1","nodeType":"YulTypedName","src":"7566:8:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"7639:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"7647:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7635:3:92"},"nodeType":"YulFunctionCall","src":"7635:17:92"},{"name":"end_1","nodeType":"YulIdentifier","src":"7654:5:92"},{"name":"length_1","nodeType":"YulIdentifier","src":"7661:8:92"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"7600:34:92"},"nodeType":"YulFunctionCall","src":"7600:70:92"},"nodeType":"YulExpressionStatement","src":"7600:70:92"},{"nodeType":"YulAssignment","src":"7679:27:92","value":{"arguments":[{"name":"end_1","nodeType":"YulIdentifier","src":"7690:5:92"},{"name":"length_1","nodeType":"YulIdentifier","src":"7697:8:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7686:3:92"},"nodeType":"YulFunctionCall","src":"7686:20:92"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"7679:3:92"}]}]},"name":"abi_encode_tuple_packed_t_string_memory_ptr_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"7371:3:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"7376:6:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"7384:6:92","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"7395:3:92","type":""}],"src":"7216:496:92"},{"body":{"nodeType":"YulBlock","src":"7891:227:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7908:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7919:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7901:6:92"},"nodeType":"YulFunctionCall","src":"7901:21:92"},"nodeType":"YulExpressionStatement","src":"7901:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7942:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7953:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7938:3:92"},"nodeType":"YulFunctionCall","src":"7938:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"7958:2:92","type":"","value":"37"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7931:6:92"},"nodeType":"YulFunctionCall","src":"7931:30:92"},"nodeType":"YulExpressionStatement","src":"7931:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7981:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"7992:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7977:3:92"},"nodeType":"YulFunctionCall","src":"7977:18:92"},{"hexValue":"4552433732313a207472616e736665722066726f6d20696e636f727265637420","kind":"string","nodeType":"YulLiteral","src":"7997:34:92","type":"","value":"ERC721: transfer from incorrect "}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7970:6:92"},"nodeType":"YulFunctionCall","src":"7970:62:92"},"nodeType":"YulExpressionStatement","src":"7970:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8052:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8063:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8048:3:92"},"nodeType":"YulFunctionCall","src":"8048:18:92"},{"hexValue":"6f776e6572","kind":"string","nodeType":"YulLiteral","src":"8068:7:92","type":"","value":"owner"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8041:6:92"},"nodeType":"YulFunctionCall","src":"8041:35:92"},"nodeType":"YulExpressionStatement","src":"8041:35:92"},{"nodeType":"YulAssignment","src":"8085:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8097:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8108:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8093:3:92"},"nodeType":"YulFunctionCall","src":"8093:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"8085:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7868:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7882:4:92","type":""}],"src":"7717:401:92"},{"body":{"nodeType":"YulBlock","src":"8297:226:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8314:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8325:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8307:6:92"},"nodeType":"YulFunctionCall","src":"8307:21:92"},"nodeType":"YulExpressionStatement","src":"8307:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8348:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8359:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8344:3:92"},"nodeType":"YulFunctionCall","src":"8344:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"8364:2:92","type":"","value":"36"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8337:6:92"},"nodeType":"YulFunctionCall","src":"8337:30:92"},"nodeType":"YulExpressionStatement","src":"8337:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8387:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8398:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8383:3:92"},"nodeType":"YulFunctionCall","src":"8383:18:92"},{"hexValue":"4552433732313a207472616e7366657220746f20746865207a65726f20616464","kind":"string","nodeType":"YulLiteral","src":"8403:34:92","type":"","value":"ERC721: transfer to the zero add"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8376:6:92"},"nodeType":"YulFunctionCall","src":"8376:62:92"},"nodeType":"YulExpressionStatement","src":"8376:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8458:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8469:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8454:3:92"},"nodeType":"YulFunctionCall","src":"8454:18:92"},{"hexValue":"72657373","kind":"string","nodeType":"YulLiteral","src":"8474:6:92","type":"","value":"ress"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8447:6:92"},"nodeType":"YulFunctionCall","src":"8447:34:92"},"nodeType":"YulExpressionStatement","src":"8447:34:92"},{"nodeType":"YulAssignment","src":"8490:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8502:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8513:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8498:3:92"},"nodeType":"YulFunctionCall","src":"8498:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"8490:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8274:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"8288:4:92","type":""}],"src":"8123:400:92"},{"body":{"nodeType":"YulBlock","src":"8702:182:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8719:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8730:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8712:6:92"},"nodeType":"YulFunctionCall","src":"8712:21:92"},"nodeType":"YulExpressionStatement","src":"8712:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8753:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8764:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8749:3:92"},"nodeType":"YulFunctionCall","src":"8749:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"8769:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8742:6:92"},"nodeType":"YulFunctionCall","src":"8742:30:92"},"nodeType":"YulExpressionStatement","src":"8742:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8792:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8803:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8788:3:92"},"nodeType":"YulFunctionCall","src":"8788:18:92"},{"hexValue":"4552433732313a206d696e7420746f20746865207a65726f2061646472657373","kind":"string","nodeType":"YulLiteral","src":"8808:34:92","type":"","value":"ERC721: mint to the zero address"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8781:6:92"},"nodeType":"YulFunctionCall","src":"8781:62:92"},"nodeType":"YulExpressionStatement","src":"8781:62:92"},{"nodeType":"YulAssignment","src":"8852:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8864:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"8875:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8860:3:92"},"nodeType":"YulFunctionCall","src":"8860:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"8852:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8679:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"8693:4:92","type":""}],"src":"8528:356:92"},{"body":{"nodeType":"YulBlock","src":"9063:178:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9080:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9091:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9073:6:92"},"nodeType":"YulFunctionCall","src":"9073:21:92"},"nodeType":"YulExpressionStatement","src":"9073:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9114:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9125:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9110:3:92"},"nodeType":"YulFunctionCall","src":"9110:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"9130:2:92","type":"","value":"28"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9103:6:92"},"nodeType":"YulFunctionCall","src":"9103:30:92"},"nodeType":"YulExpressionStatement","src":"9103:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9153:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9164:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9149:3:92"},"nodeType":"YulFunctionCall","src":"9149:18:92"},{"hexValue":"4552433732313a20746f6b656e20616c7265616479206d696e746564","kind":"string","nodeType":"YulLiteral","src":"9169:30:92","type":"","value":"ERC721: token already minted"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9142:6:92"},"nodeType":"YulFunctionCall","src":"9142:58:92"},"nodeType":"YulExpressionStatement","src":"9142:58:92"},{"nodeType":"YulAssignment","src":"9209:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9221:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9232:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9217:3:92"},"nodeType":"YulFunctionCall","src":"9217:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"9209:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9040:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"9054:4:92","type":""}],"src":"8889:352:92"},{"body":{"nodeType":"YulBlock","src":"9420:175:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9437:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9448:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9430:6:92"},"nodeType":"YulFunctionCall","src":"9430:21:92"},"nodeType":"YulExpressionStatement","src":"9430:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9471:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9482:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9467:3:92"},"nodeType":"YulFunctionCall","src":"9467:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"9487:2:92","type":"","value":"25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9460:6:92"},"nodeType":"YulFunctionCall","src":"9460:30:92"},"nodeType":"YulExpressionStatement","src":"9460:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9510:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9521:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9506:3:92"},"nodeType":"YulFunctionCall","src":"9506:18:92"},{"hexValue":"4552433732313a20617070726f766520746f2063616c6c6572","kind":"string","nodeType":"YulLiteral","src":"9526:27:92","type":"","value":"ERC721: approve to caller"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9499:6:92"},"nodeType":"YulFunctionCall","src":"9499:55:92"},"nodeType":"YulExpressionStatement","src":"9499:55:92"},{"nodeType":"YulAssignment","src":"9563:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9575:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9586:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9571:3:92"},"nodeType":"YulFunctionCall","src":"9571:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"9563:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9397:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"9411:4:92","type":""}],"src":"9246:349:92"},{"body":{"nodeType":"YulBlock","src":"9774:240:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9791:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9802:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9784:6:92"},"nodeType":"YulFunctionCall","src":"9784:21:92"},"nodeType":"YulExpressionStatement","src":"9784:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9825:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9836:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9821:3:92"},"nodeType":"YulFunctionCall","src":"9821:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"9841:2:92","type":"","value":"50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9814:6:92"},"nodeType":"YulFunctionCall","src":"9814:30:92"},"nodeType":"YulExpressionStatement","src":"9814:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9864:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9875:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9860:3:92"},"nodeType":"YulFunctionCall","src":"9860:18:92"},{"hexValue":"4552433732313a207472616e7366657220746f206e6f6e204552433732315265","kind":"string","nodeType":"YulLiteral","src":"9880:34:92","type":"","value":"ERC721: transfer to non ERC721Re"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9853:6:92"},"nodeType":"YulFunctionCall","src":"9853:62:92"},"nodeType":"YulExpressionStatement","src":"9853:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9935:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"9946:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9931:3:92"},"nodeType":"YulFunctionCall","src":"9931:18:92"},{"hexValue":"63656976657220696d706c656d656e746572","kind":"string","nodeType":"YulLiteral","src":"9951:20:92","type":"","value":"ceiver implementer"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9924:6:92"},"nodeType":"YulFunctionCall","src":"9924:48:92"},"nodeType":"YulExpressionStatement","src":"9924:48:92"},{"nodeType":"YulAssignment","src":"9981:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9993:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"10004:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9989:3:92"},"nodeType":"YulFunctionCall","src":"9989:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"9981:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9751:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"9765:4:92","type":""}],"src":"9600:414:92"},{"body":{"nodeType":"YulBlock","src":"10051:95:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10068:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10075:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"10080:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"10071:3:92"},"nodeType":"YulFunctionCall","src":"10071:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10061:6:92"},"nodeType":"YulFunctionCall","src":"10061:31:92"},"nodeType":"YulExpressionStatement","src":"10061:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10108:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"10111:4:92","type":"","value":"0x12"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10101:6:92"},"nodeType":"YulFunctionCall","src":"10101:15:92"},"nodeType":"YulExpressionStatement","src":"10101:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10132:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"10135:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"10125:6:92"},"nodeType":"YulFunctionCall","src":"10125:15:92"},"nodeType":"YulExpressionStatement","src":"10125:15:92"}]},"name":"panic_error_0x12","nodeType":"YulFunctionDefinition","src":"10019:127:92"},{"body":{"nodeType":"YulBlock","src":"10354:309:92","statements":[{"nodeType":"YulVariableDeclaration","src":"10364:52:92","value":{"kind":"number","nodeType":"YulLiteral","src":"10374:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"10368:2:92","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10432:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"10447:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"10455:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"10443:3:92"},"nodeType":"YulFunctionCall","src":"10443:15:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10425:6:92"},"nodeType":"YulFunctionCall","src":"10425:34:92"},"nodeType":"YulExpressionStatement","src":"10425:34:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10479:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"10490:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10475:3:92"},"nodeType":"YulFunctionCall","src":"10475:18:92"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"10499:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"10507:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"10495:3:92"},"nodeType":"YulFunctionCall","src":"10495:15:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10468:6:92"},"nodeType":"YulFunctionCall","src":"10468:43:92"},"nodeType":"YulExpressionStatement","src":"10468:43:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10531:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"10542:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10527:3:92"},"nodeType":"YulFunctionCall","src":"10527:18:92"},{"name":"value2","nodeType":"YulIdentifier","src":"10547:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10520:6:92"},"nodeType":"YulFunctionCall","src":"10520:34:92"},"nodeType":"YulExpressionStatement","src":"10520:34:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10574:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"10585:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10570:3:92"},"nodeType":"YulFunctionCall","src":"10570:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"10590:3:92","type":"","value":"128"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10563:6:92"},"nodeType":"YulFunctionCall","src":"10563:31:92"},"nodeType":"YulExpressionStatement","src":"10563:31:92"},{"nodeType":"YulAssignment","src":"10603:54:92","value":{"arguments":[{"name":"value3","nodeType":"YulIdentifier","src":"10629:6:92"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10641:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"10652:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10637:3:92"},"nodeType":"YulFunctionCall","src":"10637:19:92"}],"functionName":{"name":"abi_encode_string","nodeType":"YulIdentifier","src":"10611:17:92"},"nodeType":"YulFunctionCall","src":"10611:46:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"10603:4:92"}]}]},"name":"abi_encode_tuple_t_address_t_address_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"10299:9:92","type":""},{"name":"value3","nodeType":"YulTypedName","src":"10310:6:92","type":""},{"name":"value2","nodeType":"YulTypedName","src":"10318:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"10326:6:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"10334:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"10345:4:92","type":""}],"src":"10151:512:92"},{"body":{"nodeType":"YulBlock","src":"10748:169:92","statements":[{"body":{"nodeType":"YulBlock","src":"10794:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10803:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"10806:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"10796:6:92"},"nodeType":"YulFunctionCall","src":"10796:12:92"},"nodeType":"YulExpressionStatement","src":"10796:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"10769:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"10778:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"10765:3:92"},"nodeType":"YulFunctionCall","src":"10765:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"10790:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"10761:3:92"},"nodeType":"YulFunctionCall","src":"10761:32:92"},"nodeType":"YulIf","src":"10758:52:92"},{"nodeType":"YulVariableDeclaration","src":"10819:29:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10838:9:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"10832:5:92"},"nodeType":"YulFunctionCall","src":"10832:16:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"10823:5:92","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"10881:5:92"}],"functionName":{"name":"validator_revert_bytes4","nodeType":"YulIdentifier","src":"10857:23:92"},"nodeType":"YulFunctionCall","src":"10857:30:92"},"nodeType":"YulExpressionStatement","src":"10857:30:92"},{"nodeType":"YulAssignment","src":"10896:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"10906:5:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"10896:6:92"}]}]},"name":"abi_decode_tuple_t_bytes4_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"10714:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"10725:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"10737:6:92","type":""}],"src":"10668:249:92"}]},"contents":"{\n { }\n function validator_revert_bytes4(value)\n {\n if iszero(eq(value, and(value, shl(224, 0xffffffff)))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_bytes4(value)\n value0 := value\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function copy_memory_to_memory_with_cleanup(src, dst, length)\n {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n mstore(add(dst, length), 0)\n }\n function abi_encode_string(value, pos) -> end\n {\n let length := mload(value)\n mstore(pos, length)\n copy_memory_to_memory_with_cleanup(add(value, 0x20), add(pos, 0x20), length)\n end := add(add(pos, and(add(length, 31), not(31))), 0x20)\n }\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n mstore(headStart, 32)\n tail := abi_encode_string(value0, add(headStart, 32))\n }\n function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := calldataload(headStart)\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_decode_address(offset) -> value\n {\n value := calldataload(offset)\n if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := calldataload(add(headStart, 32))\n }\n function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := abi_decode_address(add(headStart, 32))\n value2 := calldataload(add(headStart, 64))\n }\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_decode_tuple_t_addresst_bool(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n let value := calldataload(add(headStart, 32))\n if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n value1 := value\n }\n function panic_error_0x41()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n {\n if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := abi_decode_address(add(headStart, 32))\n value2 := calldataload(add(headStart, 64))\n let offset := calldataload(add(headStart, 96))\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n let _2 := add(headStart, offset)\n if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n let _3 := calldataload(_2)\n if gt(_3, _1) { panic_error_0x41() }\n let _4 := not(31)\n let memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n mstore(memPtr, _3)\n if gt(add(add(_2, _3), 32), dataEnd) { revert(0, 0) }\n calldatacopy(add(memPtr, 32), add(_2, 32), _3)\n mstore(add(add(memPtr, _3), 32), 0)\n value3 := memPtr\n }\n function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := abi_decode_address(add(headStart, 32))\n }\n function extract_byte_array_length(data) -> length\n {\n length := shr(1, data)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n if eq(outOfPlaceEncoding, lt(length, 32))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n }\n function abi_encode_tuple_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 33)\n mstore(add(headStart, 64), \"ERC721: approval to current owne\")\n mstore(add(headStart, 96), \"r\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_c6e14a63ffb144eeef7cce6988e5dce07c60a7e0a7b1ef25dbe18c61483e0a83__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 61)\n mstore(add(headStart, 64), \"ERC721: approve caller is not to\")\n mstore(add(headStart, 96), \"ken owner or approved for all\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_12a8e5623d251e191fe4a291d9a59bcc01a4db7a1f5c20fc8de44358c18308af__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 45)\n mstore(add(headStart, 64), \"ERC721: caller is not token owne\")\n mstore(add(headStart, 96), \"r or approved\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 24)\n mstore(add(headStart, 64), \"ERC721: invalid token ID\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 41)\n mstore(add(headStart, 64), \"ERC721: address zero is not a va\")\n mstore(add(headStart, 96), \"lid owner\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_packed_t_string_memory_ptr_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n {\n let length := mload(value0)\n copy_memory_to_memory_with_cleanup(add(value0, 0x20), pos, length)\n let end_1 := add(pos, length)\n let length_1 := mload(value1)\n copy_memory_to_memory_with_cleanup(add(value1, 0x20), end_1, length_1)\n end := add(end_1, length_1)\n }\n function abi_encode_tuple_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 37)\n mstore(add(headStart, 64), \"ERC721: transfer from incorrect \")\n mstore(add(headStart, 96), \"owner\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 36)\n mstore(add(headStart, 64), \"ERC721: transfer to the zero add\")\n mstore(add(headStart, 96), \"ress\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 32)\n mstore(add(headStart, 64), \"ERC721: mint to the zero address\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 28)\n mstore(add(headStart, 64), \"ERC721: token already minted\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 25)\n mstore(add(headStart, 64), \"ERC721: approve to caller\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 50)\n mstore(add(headStart, 64), \"ERC721: transfer to non ERC721Re\")\n mstore(add(headStart, 96), \"ceiver implementer\")\n tail := add(headStart, 128)\n }\n function panic_error_0x12()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x12)\n revert(0, 0x24)\n }\n function abi_encode_tuple_t_address_t_address_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n {\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n mstore(add(headStart, 64), value2)\n mstore(add(headStart, 96), 128)\n tail := abi_encode_string(value3, add(headStart, 128))\n }\n function abi_decode_tuple_t_bytes4_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := mload(headStart)\n validator_revert_bytes4(value)\n value0 := value\n }\n}","id":92,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100f55760003560e01c806342966c6811610097578063a22cb46511610066578063a22cb465146101ff578063b88d4fde14610212578063c87b56dd14610225578063e985e9c51461023857600080fd5b806342966c68146101b05780636352211e146101c357806370a08231146101d657806395d89b41146101f757600080fd5b8063095ea7b3116100d3578063095ea7b31461016257806323b872dd1461017757806340c10f191461018a57806342842e0e1461019d57600080fd5b806301ffc9a7146100fa57806306fdde0314610122578063081812fc14610137575b600080fd5b61010d6101083660046110e7565b610274565b60405190151581526020015b60405180910390f35b61012a6102c6565b6040516101199190611154565b61014a610145366004611167565b610358565b6040516001600160a01b039091168152602001610119565b61017561017036600461119c565b61037f565b005b6101756101853660046111c6565b610499565b61017561019836600461119c565b610510565b6101756101ab3660046111c6565b61051e565b6101756101be366004611167565b610539565b61014a6101d1366004611167565b610545565b6101e96101e4366004611202565b6105aa565b604051908152602001610119565b61012a610644565b61017561020d36600461121d565b610653565b61017561022036600461126f565b61065e565b61012a610233366004611167565b6106dc565b61010d61024636600461134b565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b60006001600160e01b031982166380ac58cd60e01b14806102a557506001600160e01b03198216635b5e139f60e01b145b806102c057506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600080546102d59061137e565b80601f01602080910402602001604051908101604052809291908181526020018280546103019061137e565b801561034e5780601f106103235761010080835404028352916020019161034e565b820191906000526020600020905b81548152906001019060200180831161033157829003601f168201915b5050505050905090565b600061036382610750565b506000908152600460205260409020546001600160a01b031690565b600061038a82610545565b9050806001600160a01b0316836001600160a01b0316036103fc5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b038216148061041857506104188133610246565b61048a5760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c00000060648201526084016103f3565b61049483836107b4565b505050565b6104a33382610822565b6105055760405162461bcd60e51b815260206004820152602d60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201526c1c881bdc88185c1c1c9bdd9959609a1b60648201526084016103f3565b6104948383836108a1565b61051a8282610a81565b5050565b6104948383836040518060200160405280600081525061065e565b61054281610c0c565b50565b6000818152600260205260408120546001600160a01b0316806102c05760405162461bcd60e51b815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e204944000000000000000060448201526064016103f3565b60006001600160a01b0382166106285760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f74206120766160448201527f6c6964206f776e6572000000000000000000000000000000000000000000000060648201526084016103f3565b506001600160a01b031660009081526003602052604090205490565b6060600180546102d59061137e565b61051a338383610ca1565b6106683383610822565b6106ca5760405162461bcd60e51b815260206004820152602d60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201526c1c881bdc88185c1c1c9bdd9959609a1b60648201526084016103f3565b6106d684848484610d6f565b50505050565b60606106e782610750565b60006106fe60408051602081019091526000815290565b9050600081511161071e5760405180602001604052806000815250610749565b8061072884610df8565b6040516020016107399291906113b8565b6040516020818303038152906040525b9392505050565b6000818152600260205260409020546001600160a01b03166105425760405162461bcd60e51b815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e204944000000000000000060448201526064016103f3565b600081815260046020526040902080546001600160a01b0319166001600160a01b03841690811790915581906107e982610545565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008061082e83610545565b9050806001600160a01b0316846001600160a01b0316148061087557506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b806108995750836001600160a01b031661088e84610358565b6001600160a01b0316145b949350505050565b826001600160a01b03166108b482610545565b6001600160a01b0316146109185760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016103f3565b6001600160a01b03821661097a5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016103f3565b826001600160a01b031661098d82610545565b6001600160a01b0316146109f15760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016103f3565b600081815260046020908152604080832080546001600160a01b03199081169091556001600160a01b0387811680865260038552838620805460001901905590871680865283862080546001019055868652600290945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6001600160a01b038216610ad75760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016103f3565b6000818152600260205260409020546001600160a01b031615610b3c5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016103f3565b6000818152600260205260409020546001600160a01b031615610ba15760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016103f3565b6001600160a01b038216600081815260036020908152604080832080546001019055848352600290915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6000610c1782610545565b9050610c2282610545565b600083815260046020908152604080832080546001600160a01b03199081169091556001600160a01b0385168085526003845282852080546000190190558785526002909352818420805490911690555192935084927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b816001600160a01b0316836001600160a01b031603610d025760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016103f3565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b610d7a8484846108a1565b610d8684848484610e98565b6106d65760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e746572000000000000000000000000000060648201526084016103f3565b60606000610e0583610fef565b600101905060008167ffffffffffffffff811115610e2557610e25611259565b6040519080825280601f01601f191660200182016040528015610e4f576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084610e5957509392505050565b60006001600160a01b0384163b15610fe457604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290610edc9033908990889088906004016113e7565b6020604051808303816000875af1925050508015610f17575060408051601f3d908101601f19168201909252610f1491810190611423565b60015b610fca573d808015610f45576040519150601f19603f3d011682016040523d82523d6000602084013e610f4a565b606091505b508051600003610fc25760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e746572000000000000000000000000000060648201526084016103f3565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050610899565b506001949350505050565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310611038577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310611064576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061108257662386f26fc10000830492506010015b6305f5e100831061109a576305f5e100830492506008015b61271083106110ae57612710830492506004015b606483106110c0576064830492506002015b600a83106102c05760010192915050565b6001600160e01b03198116811461054257600080fd5b6000602082840312156110f957600080fd5b8135610749816110d1565b60005b8381101561111f578181015183820152602001611107565b50506000910152565b60008151808452611140816020860160208601611104565b601f01601f19169290920160200192915050565b6020815260006107496020830184611128565b60006020828403121561117957600080fd5b5035919050565b80356001600160a01b038116811461119757600080fd5b919050565b600080604083850312156111af57600080fd5b6111b883611180565b946020939093013593505050565b6000806000606084860312156111db57600080fd5b6111e484611180565b92506111f260208501611180565b9150604084013590509250925092565b60006020828403121561121457600080fd5b61074982611180565b6000806040838503121561123057600080fd5b61123983611180565b91506020830135801515811461124e57600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b6000806000806080858703121561128557600080fd5b61128e85611180565b935061129c60208601611180565b925060408501359150606085013567ffffffffffffffff808211156112c057600080fd5b818701915087601f8301126112d457600080fd5b8135818111156112e6576112e6611259565b604051601f8201601f19908116603f0116810190838211818310171561130e5761130e611259565b816040528281528a602084870101111561132757600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b6000806040838503121561135e57600080fd5b61136783611180565b915061137560208401611180565b90509250929050565b600181811c9082168061139257607f821691505b6020821081036113b257634e487b7160e01b600052602260045260246000fd5b50919050565b600083516113ca818460208801611104565b8351908301906113de818360208801611104565b01949350505050565b60006001600160a01b038087168352808616602084015250836040830152608060608301526114196080830184611128565b9695505050505050565b60006020828403121561143557600080fd5b8151610749816110d156fea164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xF5 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x42966C68 GT PUSH2 0x97 JUMPI DUP1 PUSH4 0xA22CB465 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x1FF JUMPI DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0x212 JUMPI DUP1 PUSH4 0xC87B56DD EQ PUSH2 0x225 JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x238 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x42966C68 EQ PUSH2 0x1B0 JUMPI DUP1 PUSH4 0x6352211E EQ PUSH2 0x1C3 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x1D6 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x1F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x95EA7B3 GT PUSH2 0xD3 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x162 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x177 JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x18A JUMPI DUP1 PUSH4 0x42842E0E EQ PUSH2 0x19D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xFA JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x122 JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x137 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x10D PUSH2 0x108 CALLDATASIZE PUSH1 0x4 PUSH2 0x10E7 JUMP JUMPDEST PUSH2 0x274 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x12A PUSH2 0x2C6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x119 SWAP2 SWAP1 PUSH2 0x1154 JUMP JUMPDEST PUSH2 0x14A PUSH2 0x145 CALLDATASIZE PUSH1 0x4 PUSH2 0x1167 JUMP JUMPDEST PUSH2 0x358 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x119 JUMP JUMPDEST PUSH2 0x175 PUSH2 0x170 CALLDATASIZE PUSH1 0x4 PUSH2 0x119C JUMP JUMPDEST PUSH2 0x37F JUMP JUMPDEST STOP JUMPDEST PUSH2 0x175 PUSH2 0x185 CALLDATASIZE PUSH1 0x4 PUSH2 0x11C6 JUMP JUMPDEST PUSH2 0x499 JUMP JUMPDEST PUSH2 0x175 PUSH2 0x198 CALLDATASIZE PUSH1 0x4 PUSH2 0x119C JUMP JUMPDEST PUSH2 0x510 JUMP JUMPDEST PUSH2 0x175 PUSH2 0x1AB CALLDATASIZE PUSH1 0x4 PUSH2 0x11C6 JUMP JUMPDEST PUSH2 0x51E JUMP JUMPDEST PUSH2 0x175 PUSH2 0x1BE CALLDATASIZE PUSH1 0x4 PUSH2 0x1167 JUMP JUMPDEST PUSH2 0x539 JUMP JUMPDEST PUSH2 0x14A PUSH2 0x1D1 CALLDATASIZE PUSH1 0x4 PUSH2 0x1167 JUMP JUMPDEST PUSH2 0x545 JUMP JUMPDEST PUSH2 0x1E9 PUSH2 0x1E4 CALLDATASIZE PUSH1 0x4 PUSH2 0x1202 JUMP JUMPDEST PUSH2 0x5AA JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x119 JUMP JUMPDEST PUSH2 0x12A PUSH2 0x644 JUMP JUMPDEST PUSH2 0x175 PUSH2 0x20D CALLDATASIZE PUSH1 0x4 PUSH2 0x121D JUMP JUMPDEST PUSH2 0x653 JUMP JUMPDEST PUSH2 0x175 PUSH2 0x220 CALLDATASIZE PUSH1 0x4 PUSH2 0x126F JUMP JUMPDEST PUSH2 0x65E JUMP JUMPDEST PUSH2 0x12A PUSH2 0x233 CALLDATASIZE PUSH1 0x4 PUSH2 0x1167 JUMP JUMPDEST PUSH2 0x6DC JUMP JUMPDEST PUSH2 0x10D PUSH2 0x246 CALLDATASIZE PUSH1 0x4 PUSH2 0x134B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x80AC58CD PUSH1 0xE0 SHL EQ DUP1 PUSH2 0x2A5 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x5B5E139F PUSH1 0xE0 SHL EQ JUMPDEST DUP1 PUSH2 0x2C0 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 SLOAD PUSH2 0x2D5 SWAP1 PUSH2 0x137E JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x301 SWAP1 PUSH2 0x137E JUMP JUMPDEST DUP1 ISZERO PUSH2 0x34E JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x323 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x34E JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x331 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x363 DUP3 PUSH2 0x750 JUMP JUMPDEST POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x38A DUP3 PUSH2 0x545 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x3FC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F76616C20746F2063757272656E74206F776E65 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x39 PUSH1 0xF9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND EQ DUP1 PUSH2 0x418 JUMPI POP PUSH2 0x418 DUP2 CALLER PUSH2 0x246 JUMP JUMPDEST PUSH2 0x48A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F76652063616C6C6572206973206E6F7420746F PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6B656E206F776E6572206F7220617070726F76656420666F7220616C6C000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3F3 JUMP JUMPDEST PUSH2 0x494 DUP4 DUP4 PUSH2 0x7B4 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x4A3 CALLER DUP3 PUSH2 0x822 JUMP JUMPDEST PUSH2 0x505 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A2063616C6C6572206973206E6F7420746F6B656E206F776E65 PUSH1 0x44 DUP3 ADD MSTORE PUSH13 0x1C881BDC88185C1C1C9BDD9959 PUSH1 0x9A SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3F3 JUMP JUMPDEST PUSH2 0x494 DUP4 DUP4 DUP4 PUSH2 0x8A1 JUMP JUMPDEST PUSH2 0x51A DUP3 DUP3 PUSH2 0xA81 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x494 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x65E JUMP JUMPDEST PUSH2 0x542 DUP2 PUSH2 0xC0C JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP1 PUSH2 0x2C0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20696E76616C696420746F6B656E2049440000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3F3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x628 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A2061646472657373207A65726F206973206E6F742061207661 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6C6964206F776E65720000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3F3 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 DUP1 SLOAD PUSH2 0x2D5 SWAP1 PUSH2 0x137E JUMP JUMPDEST PUSH2 0x51A CALLER DUP4 DUP4 PUSH2 0xCA1 JUMP JUMPDEST PUSH2 0x668 CALLER DUP4 PUSH2 0x822 JUMP JUMPDEST PUSH2 0x6CA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A2063616C6C6572206973206E6F7420746F6B656E206F776E65 PUSH1 0x44 DUP3 ADD MSTORE PUSH13 0x1C881BDC88185C1C1C9BDD9959 PUSH1 0x9A SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3F3 JUMP JUMPDEST PUSH2 0x6D6 DUP5 DUP5 DUP5 DUP5 PUSH2 0xD6F JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x6E7 DUP3 PUSH2 0x750 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6FE PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE SWAP1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 MLOAD GT PUSH2 0x71E JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x749 JUMP JUMPDEST DUP1 PUSH2 0x728 DUP5 PUSH2 0xDF8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x739 SWAP3 SWAP2 SWAP1 PUSH2 0x13B8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x542 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20696E76616C696420746F6B656E2049440000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3F3 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP2 SWAP1 PUSH2 0x7E9 DUP3 PUSH2 0x545 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x82E DUP4 PUSH2 0x545 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x875 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP9 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST DUP1 PUSH2 0x899 JUMPI POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x88E DUP5 PUSH2 0x358 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x8B4 DUP3 PUSH2 0x545 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x918 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E736665722066726F6D20696E636F727265637420 PUSH1 0x44 DUP3 ADD MSTORE PUSH5 0x37BBB732B9 PUSH1 0xD9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3F3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x97A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F20746865207A65726F20616464 PUSH1 0x44 DUP3 ADD MSTORE PUSH4 0x72657373 PUSH1 0xE0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3F3 JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x98D DUP3 PUSH2 0x545 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x9F1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E736665722066726F6D20696E636F727265637420 PUSH1 0x44 DUP3 ADD MSTORE PUSH5 0x37BBB732B9 PUSH1 0xD9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3F3 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 DUP2 AND SWAP1 SWAP2 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND DUP1 DUP7 MSTORE PUSH1 0x3 DUP6 MSTORE DUP4 DUP7 KECCAK256 DUP1 SLOAD PUSH1 0x0 NOT ADD SWAP1 SSTORE SWAP1 DUP8 AND DUP1 DUP7 MSTORE DUP4 DUP7 KECCAK256 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE DUP7 DUP7 MSTORE PUSH1 0x2 SWAP1 SWAP5 MSTORE DUP3 DUP6 KECCAK256 DUP1 SLOAD SWAP1 SWAP3 AND DUP5 OR SWAP1 SWAP2 SSTORE SWAP1 MLOAD DUP5 SWAP4 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 LOG4 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xAD7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206D696E7420746F20746865207A65726F2061646472657373 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3F3 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0xB3C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20746F6B656E20616C7265616479206D696E74656400000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3F3 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0xBA1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20746F6B656E20616C7265616479206D696E74656400000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3F3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE DUP5 DUP4 MSTORE PUSH1 0x2 SWAP1 SWAP2 MSTORE DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND DUP5 OR SWAP1 SSTORE MLOAD DUP4 SWAP3 SWAP2 SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 DUP3 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC17 DUP3 PUSH2 0x545 JUMP JUMPDEST SWAP1 POP PUSH2 0xC22 DUP3 PUSH2 0x545 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 DUP2 AND SWAP1 SWAP2 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP1 DUP6 MSTORE PUSH1 0x3 DUP5 MSTORE DUP3 DUP6 KECCAK256 DUP1 SLOAD PUSH1 0x0 NOT ADD SWAP1 SSTORE DUP8 DUP6 MSTORE PUSH1 0x2 SWAP1 SWAP4 MSTORE DUP2 DUP5 KECCAK256 DUP1 SLOAD SWAP1 SWAP2 AND SWAP1 SSTORE MLOAD SWAP3 SWAP4 POP DUP5 SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 DUP4 SWAP1 LOG4 POP POP JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0xD02 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F766520746F2063616C6C657200000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3F3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND DUP7 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP2 MLOAD SWAP2 DUP3 MSTORE PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0xD7A DUP5 DUP5 DUP5 PUSH2 0x8A1 JUMP JUMPDEST PUSH2 0xD86 DUP5 DUP5 DUP5 DUP5 PUSH2 0xE98 JUMP JUMPDEST PUSH2 0x6D6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x32 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F206E6F6E204552433732315265 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x63656976657220696D706C656D656E7465720000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3F3 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0xE05 DUP4 PUSH2 0xFEF JUMP JUMPDEST PUSH1 0x1 ADD SWAP1 POP PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xE25 JUMPI PUSH2 0xE25 PUSH2 0x1259 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xE4F JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP DUP2 DUP2 ADD PUSH1 0x20 ADD JUMPDEST PUSH1 0x0 NOT ADD PUSH32 0x3031323334353637383961626364656600000000000000000000000000000000 PUSH1 0xA DUP7 MOD BYTE DUP2 MSTORE8 PUSH1 0xA DUP6 DIV SWAP5 POP DUP5 PUSH2 0xE59 JUMPI POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO PUSH2 0xFE4 JUMPI PUSH1 0x40 MLOAD PUSH4 0xA85BD01 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0x150B7A02 SWAP1 PUSH2 0xEDC SWAP1 CALLER SWAP1 DUP10 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x13E7 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0xF17 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0xF14 SWAP2 DUP2 ADD SWAP1 PUSH2 0x1423 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0xFCA JUMPI RETURNDATASIZE DUP1 DUP1 ISZERO PUSH2 0xF45 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xF4A JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP DUP1 MLOAD PUSH1 0x0 SUB PUSH2 0xFC2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x32 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F206E6F6E204552433732315265 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x63656976657220696D706C656D656E7465720000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3F3 JUMP JUMPDEST DUP1 MLOAD DUP2 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH4 0xA85BD01 PUSH1 0xE1 SHL EQ SWAP1 POP PUSH2 0x899 JUMP JUMPDEST POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH27 0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F010000000000000000 DUP4 LT PUSH2 0x1038 JUMPI PUSH27 0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F010000000000000000 DUP4 DIV SWAP3 POP PUSH1 0x40 ADD JUMPDEST PUSH14 0x4EE2D6D415B85ACEF8100000000 DUP4 LT PUSH2 0x1064 JUMPI PUSH14 0x4EE2D6D415B85ACEF8100000000 DUP4 DIV SWAP3 POP PUSH1 0x20 ADD JUMPDEST PUSH7 0x2386F26FC10000 DUP4 LT PUSH2 0x1082 JUMPI PUSH7 0x2386F26FC10000 DUP4 DIV SWAP3 POP PUSH1 0x10 ADD JUMPDEST PUSH4 0x5F5E100 DUP4 LT PUSH2 0x109A JUMPI PUSH4 0x5F5E100 DUP4 DIV SWAP3 POP PUSH1 0x8 ADD JUMPDEST PUSH2 0x2710 DUP4 LT PUSH2 0x10AE JUMPI PUSH2 0x2710 DUP4 DIV SWAP3 POP PUSH1 0x4 ADD JUMPDEST PUSH1 0x64 DUP4 LT PUSH2 0x10C0 JUMPI PUSH1 0x64 DUP4 DIV SWAP3 POP PUSH1 0x2 ADD JUMPDEST PUSH1 0xA DUP4 LT PUSH2 0x2C0 JUMPI PUSH1 0x1 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x542 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x10F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x749 DUP2 PUSH2 0x10D1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x111F JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1107 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x1140 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x1104 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x749 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x1128 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1179 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x1197 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x11AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x11B8 DUP4 PUSH2 0x1180 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x11DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x11E4 DUP5 PUSH2 0x1180 JUMP JUMPDEST SWAP3 POP PUSH2 0x11F2 PUSH1 0x20 DUP6 ADD PUSH2 0x1180 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1214 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x749 DUP3 PUSH2 0x1180 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1230 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1239 DUP4 PUSH2 0x1180 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x124E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x1285 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x128E DUP6 PUSH2 0x1180 JUMP JUMPDEST SWAP4 POP PUSH2 0x129C PUSH1 0x20 DUP7 ADD PUSH2 0x1180 JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x12C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x12D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x12E6 JUMPI PUSH2 0x12E6 PUSH2 0x1259 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x130E JUMPI PUSH2 0x130E PUSH2 0x1259 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP11 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x1327 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x135E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1367 DUP4 PUSH2 0x1180 JUMP JUMPDEST SWAP2 POP PUSH2 0x1375 PUSH1 0x20 DUP5 ADD PUSH2 0x1180 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x1392 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x13B2 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP4 MLOAD PUSH2 0x13CA DUP2 DUP5 PUSH1 0x20 DUP9 ADD PUSH2 0x1104 JUMP JUMPDEST DUP4 MLOAD SWAP1 DUP4 ADD SWAP1 PUSH2 0x13DE DUP2 DUP4 PUSH1 0x20 DUP9 ADD PUSH2 0x1104 JUMP JUMPDEST ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND DUP4 MSTORE DUP1 DUP7 AND PUSH1 0x20 DUP5 ADD MSTORE POP DUP4 PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x80 PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x1419 PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x1128 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1435 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x749 DUP2 PUSH2 0x10D1 JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"298:295:60:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1570:300:29;;;;;;:::i;:::-;;:::i;:::-;;;565:14:92;;558:22;540:41;;528:2;513:18;1570:300:29;;;;;;;;2471:98;;;:::i;:::-;;;;;;;:::i;3935:167::-;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;1697:55:92;;;1679:74;;1667:2;1652:18;3935:167:29;1533:226:92;3468:406:29;;;;;;:::i;:::-;;:::i;:::-;;4612:296;;;;;;:::i;:::-;;:::i;421:95:60:-;;;;;;:::i;:::-;;:::i;4974:149:29:-;;;;;;:::i;:::-;;:::i;522:69:60:-;;;;;;:::i;:::-;;:::i;2190:219:29:-;;;;;;:::i;:::-;;:::i;1929:204::-;;;;;;:::i;:::-;;:::i;:::-;;;2894:25:92;;;2882:2;2867:18;1929:204:29;2748:177:92;2633:102:29;;;:::i;4169:153::-;;;;;;:::i;:::-;;:::i;5189:276::-;;;;;;:::i;:::-;;:::i;2801:::-;;;;;;:::i;:::-;;:::i;4388:162::-;;;;;;:::i;:::-;-1:-1:-1;;;;;4508:25:29;;;4485:4;4508:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;4388:162;1570:300;1672:4;-1:-1:-1;;;;;;1707:40:29;;-1:-1:-1;;;1707:40:29;;:104;;-1:-1:-1;;;;;;;1763:48:29;;-1:-1:-1;;;1763:48:29;1707:104;:156;;;-1:-1:-1;;;;;;;;;;937:40:38;;;1827:36:29;1688:175;1570:300;-1:-1:-1;;1570:300:29:o;2471:98::-;2525:13;2557:5;2550:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2471:98;:::o;3935:167::-;4011:7;4030:23;4045:7;4030:14;:23::i;:::-;-1:-1:-1;4071:24:29;;;;:15;:24;;;;;;-1:-1:-1;;;;;4071:24:29;;3935:167::o;3468:406::-;3548:13;3564:23;3579:7;3564:14;:23::i;:::-;3548:39;;3611:5;-1:-1:-1;;;;;3605:11:29;:2;-1:-1:-1;;;;;3605:11:29;;3597:57;;;;-1:-1:-1;;;3597:57:29;;5409:2:92;3597:57:29;;;5391:21:92;5448:2;5428:18;;;5421:30;5487:34;5467:18;;;5460:62;-1:-1:-1;;;5538:18:92;;;5531:31;5579:19;;3597:57:29;;;;;;;;;734:10:34;-1:-1:-1;;;;;3686:21:29;;;;:62;;-1:-1:-1;3711:37:29;3728:5;734:10:34;4388:162:29;:::i;3711:37::-;3665:170;;;;-1:-1:-1;;;3665:170:29;;5811:2:92;3665:170:29;;;5793:21:92;5850:2;5830:18;;;5823:30;5889:34;5869:18;;;5862:62;5960:31;5940:18;;;5933:59;6009:19;;3665:170:29;5609:425:92;3665:170:29;3846:21;3855:2;3859:7;3846:8;:21::i;:::-;3538:336;3468:406;;:::o;4612:296::-;4771:41;734:10:34;4804:7:29;4771:18;:41::i;:::-;4763:99;;;;-1:-1:-1;;;4763:99:29;;6241:2:92;4763:99:29;;;6223:21:92;6280:2;6260:18;;;6253:30;6319:34;6299:18;;;6292:62;-1:-1:-1;;;6370:18:92;;;6363:43;6423:19;;4763:99:29;6039:409:92;4763:99:29;4873:28;4883:4;4889:2;4893:7;4873:9;:28::i;421:95:60:-;486:23;492:7;501;486:5;:23::i;:::-;421:95;;:::o;4974:149:29:-;5077:39;5094:4;5100:2;5104:7;5077:39;;;;;;;;;;;;:16;:39::i;522:69:60:-;570:14;576:7;570:5;:14::i;:::-;522:69;:::o;2190:219:29:-;2262:7;6794:16;;;:7;:16;;;;;;-1:-1:-1;;;;;6794:16:29;;2324:56;;;;-1:-1:-1;;;2324:56:29;;6655:2:92;2324:56:29;;;6637:21:92;6694:2;6674:18;;;6667:30;6733:26;6713:18;;;6706:54;6777:18;;2324:56:29;6453:348:92;1929:204:29;2001:7;-1:-1:-1;;;;;2028:19:29;;2020:73;;;;-1:-1:-1;;;2020:73:29;;7008:2:92;2020:73:29;;;6990:21:92;7047:2;7027:18;;;7020:30;7086:34;7066:18;;;7059:62;7157:11;7137:18;;;7130:39;7186:19;;2020:73:29;6806:405:92;2020:73:29;-1:-1:-1;;;;;;2110:16:29;;;;;:9;:16;;;;;;;1929:204::o;2633:102::-;2689:13;2721:7;2714:14;;;;;:::i;4169:153::-;4263:52;734:10:34;4296:8:29;4306;4263:18;:52::i;5189:276::-;5319:41;734:10:34;5352:7:29;5319:18;:41::i;:::-;5311:99;;;;-1:-1:-1;;;5311:99:29;;6241:2:92;5311:99:29;;;6223:21:92;6280:2;6260:18;;;6253:30;6319:34;6299:18;;;6292:62;-1:-1:-1;;;6370:18:92;;;6363:43;6423:19;;5311:99:29;6039:409:92;5311:99:29;5420:38;5434:4;5440:2;5444:7;5453:4;5420:13;:38::i;:::-;5189:276;;;;:::o;2801:::-;2874:13;2899:23;2914:7;2899:14;:23::i;:::-;2933:21;2957:10;3395:9;;;;;;;;;-1:-1:-1;3395:9:29;;;3319:92;2957:10;2933:34;;3008:1;2990:7;2984:21;:25;:86;;;;;;;;;;;;;;;;;3036:7;3045:18;:7;:16;:18::i;:::-;3019:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2984:86;2977:93;2801:276;-1:-1:-1;;;2801:276:29:o;13240:133::-;7185:4;6794:16;;;:7;:16;;;;;;-1:-1:-1;;;;;6794:16:29;13313:53;;;;-1:-1:-1;;;13313:53:29;;6655:2:92;13313:53:29;;;6637:21:92;6694:2;6674:18;;;6667:30;6733:26;6713:18;;;6706:54;6777:18;;13313:53:29;6453:348:92;12572:171:29;12646:24;;;;:15;:24;;;;;:29;;-1:-1:-1;;;;;;12646:29:29;-1:-1:-1;;;;;12646:29:29;;;;;;;;:24;;12699:23;12646:24;12699:14;:23::i;:::-;-1:-1:-1;;;;;12690:46:29;;;;;;;;;;;12572:171;;:::o;7404:261::-;7497:4;7513:13;7529:23;7544:7;7529:14;:23::i;:::-;7513:39;;7581:5;-1:-1:-1;;;;;7570:16:29;:7;-1:-1:-1;;;;;7570:16:29;;:52;;;-1:-1:-1;;;;;;4508:25:29;;;4485:4;4508:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;7590:32;7570:87;;;;7650:7;-1:-1:-1;;;;;7626:31:29;:20;7638:7;7626:11;:20::i;:::-;-1:-1:-1;;;;;7626:31:29;;7570:87;7562:96;7404:261;-1:-1:-1;;;;7404:261:29:o;11257:1203::-;11381:4;-1:-1:-1;;;;;11354:31:29;:23;11369:7;11354:14;:23::i;:::-;-1:-1:-1;;;;;11354:31:29;;11346:81;;;;-1:-1:-1;;;11346:81:29;;7919:2:92;11346:81:29;;;7901:21:92;7958:2;7938:18;;;7931:30;7997:34;7977:18;;;7970:62;-1:-1:-1;;;8048:18:92;;;8041:35;8093:19;;11346:81:29;7717:401:92;11346:81:29;-1:-1:-1;;;;;11445:16:29;;11437:65;;;;-1:-1:-1;;;11437:65:29;;8325:2:92;11437:65:29;;;8307:21:92;8364:2;8344:18;;;8337:30;8403:34;8383:18;;;8376:62;-1:-1:-1;;;8454:18:92;;;8447:34;8498:19;;11437:65:29;8123:400:92;11437:65:29;11682:4;-1:-1:-1;;;;;11655:31:29;:23;11670:7;11655:14;:23::i;:::-;-1:-1:-1;;;;;11655:31:29;;11647:81;;;;-1:-1:-1;;;11647:81:29;;7919:2:92;11647:81:29;;;7901:21:92;7958:2;7938:18;;;7931:30;7997:34;7977:18;;;7970:62;-1:-1:-1;;;8048:18:92;;;8041:35;8093:19;;11647:81:29;7717:401:92;11647:81:29;11797:24;;;;:15;:24;;;;;;;;11790:31;;-1:-1:-1;;;;;;11790:31:29;;;;;;-1:-1:-1;;;;;12265:15:29;;;;;;:9;:15;;;;;:20;;-1:-1:-1;;12265:20:29;;;12299:13;;;;;;;;;:18;;11790:31;12299:18;;;12337:16;;;:7;:16;;;;;;:21;;;;;;;;;;12374:27;;11813:7;;12374:27;;;3538:336;3468:406;;:::o;8925:920::-;-1:-1:-1;;;;;9004:16:29;;8996:61;;;;-1:-1:-1;;;8996:61:29;;8730:2:92;8996:61:29;;;8712:21:92;;;8749:18;;;8742:30;8808:34;8788:18;;;8781:62;8860:18;;8996:61:29;8528:356:92;8996:61:29;7185:4;6794:16;;;:7;:16;;;;;;-1:-1:-1;;;;;6794:16:29;7208:31;9067:58;;;;-1:-1:-1;;;9067:58:29;;9091:2:92;9067:58:29;;;9073:21:92;9130:2;9110:18;;;9103:30;9169;9149:18;;;9142:58;9217:18;;9067:58:29;8889:352:92;9067:58:29;7185:4;6794:16;;;:7;:16;;;;;;-1:-1:-1;;;;;6794:16:29;7208:31;9271:58;;;;-1:-1:-1;;;9271:58:29;;9091:2:92;9271:58:29;;;9073:21:92;9130:2;9110:18;;;9103:30;9169;9149:18;;;9142:58;9217:18;;9271:58:29;8889:352:92;9271:58:29;-1:-1:-1;;;;;9671:13:29;;;;;;:9;:13;;;;;;;;:18;;9688:1;9671:18;;;9710:16;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;9710:21:29;;;;;9747:33;9718:7;;9671:13;;9747:33;;9671:13;;9747:33;421:95:60;;:::o;10171:762:29:-;10230:13;10246:23;10261:7;10246:14;:23::i;:::-;10230:39;;10441:23;10456:7;10441:14;:23::i;:::-;10509:24;;;;:15;:24;;;;;;;;10502:31;;-1:-1:-1;;;;;;10502:31:29;;;;;;-1:-1:-1;;;;;10749:16:29;;;;;:9;:16;;;;;:21;;-1:-1:-1;;10749:21:29;;;10797:16;;;:7;:16;;;;;;10790:23;;;;;;;10829:36;10433:31;;-1:-1:-1;10525:7:29;;10829:36;;10509:24;;10829:36;421:95:60;;:::o;12879:277:29:-;12999:8;-1:-1:-1;;;;;12990:17:29;:5;-1:-1:-1;;;;;12990:17:29;;12982:55;;;;-1:-1:-1;;;12982:55:29;;9448:2:92;12982:55:29;;;9430:21:92;9487:2;9467:18;;;9460:30;9526:27;9506:18;;;9499:55;9571:18;;12982:55:29;9246:349:92;12982:55:29;-1:-1:-1;;;;;13047:25:29;;;;;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;:46;;-1:-1:-1;;13047:46:29;;;;;;;;;;13108:41;;540::92;;;13108::29;;513:18:92;13108:41:29;;;;;;;12879:277;;;:::o;6326:267::-;6438:28;6448:4;6454:2;6458:7;6438:9;:28::i;:::-;6484:47;6507:4;6513:2;6517:7;6526:4;6484:22;:47::i;:::-;6476:110;;;;-1:-1:-1;;;6476:110:29;;9802:2:92;6476:110:29;;;9784:21:92;9841:2;9821:18;;;9814:30;9880:34;9860:18;;;9853:62;9951:20;9931:18;;;9924:48;9989:19;;6476:110:29;9600:414:92;447:696:37;503:13;552:14;569:17;580:5;569:10;:17::i;:::-;589:1;569:21;552:38;;604:20;638:6;627:18;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;627:18:37;-1:-1:-1;604:41:37;-1:-1:-1;765:28:37;;;781:2;765:28;820:280;-1:-1:-1;;851:5:37;990:8;985:2;974:14;;969:30;851:5;956:44;1044:2;1035:11;;;-1:-1:-1;1064:21:37;820:280;1064:21;-1:-1:-1;1120:6:37;447:696;-1:-1:-1;;;447:696:37:o;13925:831:29:-;14074:4;-1:-1:-1;;;;;14094:13:29;;1702:19:33;:23;14090:660:29;;14129:71;;-1:-1:-1;;;14129:71:29;;-1:-1:-1;;;;;14129:36:29;;;;;:71;;734:10:34;;14180:4:29;;14186:7;;14195:4;;14129:71;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14129:71:29;;;;;;;;-1:-1:-1;;14129:71:29;;;;;;;;;;;;:::i;:::-;;;14125:573;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14367:6;:13;14384:1;14367:18;14363:321;;14409:60;;-1:-1:-1;;;14409:60:29;;9802:2:92;14409:60:29;;;9784:21:92;9841:2;9821:18;;;9814:30;9880:34;9860:18;;;9853:62;9951:20;9931:18;;;9924:48;9989:19;;14409:60:29;9600:414:92;14363:321:29;14636:6;14630:13;14621:6;14617:2;14613:15;14606:38;14125:573;-1:-1:-1;;;;;;14250:51:29;-1:-1:-1;;;14250:51:29;;-1:-1:-1;14243:58:29;;14090:660;-1:-1:-1;14735:4:29;13925:831;;;;;;:::o;10139:916:40:-;10192:7;;10276:8;10267:17;;10263:103;;10313:8;10304:17;;;-1:-1:-1;10349:2:40;10339:12;10263:103;10392:8;10383:5;:17;10379:103;;10429:8;10420:17;;;-1:-1:-1;10465:2:40;10455:12;10379:103;10508:8;10499:5;:17;10495:103;;10545:8;10536:17;;;-1:-1:-1;10581:2:40;10571:12;10495:103;10624:7;10615:5;:16;10611:100;;10660:7;10651:16;;;-1:-1:-1;10695:1:40;10685:11;10611:100;10737:7;10728:5;:16;10724:100;;10773:7;10764:16;;;-1:-1:-1;10808:1:40;10798:11;10724:100;10850:7;10841:5;:16;10837:100;;10886:7;10877:16;;;-1:-1:-1;10921:1:40;10911:11;10837:100;10963:7;10954:5;:16;10950:66;;11000:1;10990:11;11042:6;10139:916;-1:-1:-1;;10139:916:40:o;14:131:92:-;-1:-1:-1;;;;;;88:32:92;;78:43;;68:71;;135:1;132;125:12;150:245;208:6;261:2;249:9;240:7;236:23;232:32;229:52;;;277:1;274;267:12;229:52;316:9;303:23;335:30;359:5;335:30;:::i;592:250::-;677:1;687:113;701:6;698:1;695:13;687:113;;;777:11;;;771:18;758:11;;;751:39;723:2;716:10;687:113;;;-1:-1:-1;;834:1:92;816:16;;809:27;592:250::o;847:271::-;889:3;927:5;921:12;954:6;949:3;942:19;970:76;1039:6;1032:4;1027:3;1023:14;1016:4;1009:5;1005:16;970:76;:::i;:::-;1100:2;1079:15;-1:-1:-1;;1075:29:92;1066:39;;;;1107:4;1062:50;;847:271;-1:-1:-1;;847:271:92:o;1123:220::-;1272:2;1261:9;1254:21;1235:4;1292:45;1333:2;1322:9;1318:18;1310:6;1292:45;:::i;1348:180::-;1407:6;1460:2;1448:9;1439:7;1435:23;1431:32;1428:52;;;1476:1;1473;1466:12;1428:52;-1:-1:-1;1499:23:92;;1348:180;-1:-1:-1;1348:180:92:o;1764:196::-;1832:20;;-1:-1:-1;;;;;1881:54:92;;1871:65;;1861:93;;1950:1;1947;1940:12;1861:93;1764:196;;;:::o;1965:254::-;2033:6;2041;2094:2;2082:9;2073:7;2069:23;2065:32;2062:52;;;2110:1;2107;2100:12;2062:52;2133:29;2152:9;2133:29;:::i;:::-;2123:39;2209:2;2194:18;;;;2181:32;;-1:-1:-1;;;1965:254:92:o;2224:328::-;2301:6;2309;2317;2370:2;2358:9;2349:7;2345:23;2341:32;2338:52;;;2386:1;2383;2376:12;2338:52;2409:29;2428:9;2409:29;:::i;:::-;2399:39;;2457:38;2491:2;2480:9;2476:18;2457:38;:::i;:::-;2447:48;;2542:2;2531:9;2527:18;2514:32;2504:42;;2224:328;;;;;:::o;2557:186::-;2616:6;2669:2;2657:9;2648:7;2644:23;2640:32;2637:52;;;2685:1;2682;2675:12;2637:52;2708:29;2727:9;2708:29;:::i;2930:347::-;2995:6;3003;3056:2;3044:9;3035:7;3031:23;3027:32;3024:52;;;3072:1;3069;3062:12;3024:52;3095:29;3114:9;3095:29;:::i;:::-;3085:39;;3174:2;3163:9;3159:18;3146:32;3221:5;3214:13;3207:21;3200:5;3197:32;3187:60;;3243:1;3240;3233:12;3187:60;3266:5;3256:15;;;2930:347;;;;;:::o;3282:127::-;3343:10;3338:3;3334:20;3331:1;3324:31;3374:4;3371:1;3364:15;3398:4;3395:1;3388:15;3414:1138;3509:6;3517;3525;3533;3586:3;3574:9;3565:7;3561:23;3557:33;3554:53;;;3603:1;3600;3593:12;3554:53;3626:29;3645:9;3626:29;:::i;:::-;3616:39;;3674:38;3708:2;3697:9;3693:18;3674:38;:::i;:::-;3664:48;;3759:2;3748:9;3744:18;3731:32;3721:42;;3814:2;3803:9;3799:18;3786:32;3837:18;3878:2;3870:6;3867:14;3864:34;;;3894:1;3891;3884:12;3864:34;3932:6;3921:9;3917:22;3907:32;;3977:7;3970:4;3966:2;3962:13;3958:27;3948:55;;3999:1;3996;3989:12;3948:55;4035:2;4022:16;4057:2;4053;4050:10;4047:36;;;4063:18;;:::i;:::-;4138:2;4132:9;4106:2;4192:13;;-1:-1:-1;;4188:22:92;;;4212:2;4184:31;4180:40;4168:53;;;4236:18;;;4256:22;;;4233:46;4230:72;;;4282:18;;:::i;:::-;4322:10;4318:2;4311:22;4357:2;4349:6;4342:18;4397:7;4392:2;4387;4383;4379:11;4375:20;4372:33;4369:53;;;4418:1;4415;4408:12;4369:53;4474:2;4469;4465;4461:11;4456:2;4448:6;4444:15;4431:46;4519:1;4514:2;4509;4501:6;4497:15;4493:24;4486:35;4540:6;4530:16;;;;;;;3414:1138;;;;;;;:::o;4557:260::-;4625:6;4633;4686:2;4674:9;4665:7;4661:23;4657:32;4654:52;;;4702:1;4699;4692:12;4654:52;4725:29;4744:9;4725:29;:::i;:::-;4715:39;;4773:38;4807:2;4796:9;4792:18;4773:38;:::i;:::-;4763:48;;4557:260;;;;;:::o;4822:380::-;4901:1;4897:12;;;;4944;;;4965:61;;5019:4;5011:6;5007:17;4997:27;;4965:61;5072:2;5064:6;5061:14;5041:18;5038:38;5035:161;;5118:10;5113:3;5109:20;5106:1;5099:31;5153:4;5150:1;5143:15;5181:4;5178:1;5171:15;5035:161;;4822:380;;;:::o;7216:496::-;7395:3;7433:6;7427:13;7449:66;7508:6;7503:3;7496:4;7488:6;7484:17;7449:66;:::i;:::-;7578:13;;7537:16;;;;7600:70;7578:13;7537:16;7647:4;7635:17;;7600:70;:::i;:::-;7686:20;;7216:496;-1:-1:-1;;;;7216:496:92:o;10151:512::-;10345:4;-1:-1:-1;;;;;10455:2:92;10447:6;10443:15;10432:9;10425:34;10507:2;10499:6;10495:15;10490:2;10479:9;10475:18;10468:43;;10547:6;10542:2;10531:9;10527:18;10520:34;10590:3;10585:2;10574:9;10570:18;10563:31;10611:46;10652:3;10641:9;10637:19;10629:6;10611:46;:::i;:::-;10603:54;10151:512;-1:-1:-1;;;;;;10151:512:92:o;10668:249::-;10737:6;10790:2;10778:9;10769:7;10765:23;10761:32;10758:52;;;10806:1;10803;10796:12;10758:52;10838:9;10832:16;10857:30;10881:5;10857:30;:::i"},"gasEstimates":{"creation":{"codeDepositCost":"1039400","executionCost":"infinite","totalCost":"infinite"},"external":{"approve(address,uint256)":"infinite","balanceOf(address)":"2656","burn(uint256)":"infinite","getApproved(uint256)":"4792","isApprovedForAll(address,address)":"infinite","mint(address,uint256)":"55386","name()":"infinite","ownerOf(uint256)":"2577","safeTransferFrom(address,address,uint256)":"infinite","safeTransferFrom(address,address,uint256,bytes)":"infinite","setApprovalForAll(address,bool)":"26705","supportsInterface(bytes4)":"534","symbol()":"infinite","tokenURI(uint256)":"infinite","transferFrom(address,address,uint256)":"infinite"}},"methodIdentifiers":{"approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","burn(uint256)":"42966c68","getApproved(uint256)":"081812fc","isApprovedForAll(address,address)":"e985e9c5","mint(address,uint256)":"40c10f19","name()":"06fdde03","ownerOf(uint256)":"6352211e","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","tokenURI(uint256)":"c87b56dd","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"DO NOT USE IN PRODUCTION!\",\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"See {IERC721-approve}.\"},\"balanceOf(address)\":{\"details\":\"See {IERC721-balanceOf}.\"},\"getApproved(uint256)\":{\"details\":\"See {IERC721-getApproved}.\"},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC721-isApprovedForAll}.\"},\"name()\":{\"details\":\"See {IERC721Metadata-name}.\"},\"ownerOf(uint256)\":{\"details\":\"See {IERC721-ownerOf}.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC721-setApprovalForAll}.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"symbol()\":{\"details\":\"See {IERC721Metadata-symbol}.\"},\"tokenURI(uint256)\":{\"details\":\"See {IERC721Metadata-tokenURI}.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-transferFrom}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"A mock [ERC-721](https://eips.ethereum.org/EIPS/eip-721) token that can be minted and burned by everyone.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/mocks/token/ERC721Mock.sol\":\"ERC721Mock\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC721/ERC721.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC721/ERC721.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC721.sol\\\";\\nimport \\\"./IERC721Receiver.sol\\\";\\nimport \\\"./extensions/IERC721Metadata.sol\\\";\\nimport \\\"../../utils/Address.sol\\\";\\nimport \\\"../../utils/Context.sol\\\";\\nimport \\\"../../utils/Strings.sol\\\";\\nimport \\\"../../utils/introspection/ERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including\\n * the Metadata extension, but not including the Enumerable extension, which is available separately as\\n * {ERC721Enumerable}.\\n */\\ncontract ERC721 is Context, ERC165, IERC721, IERC721Metadata {\\n using Address for address;\\n using Strings for uint256;\\n\\n // Token name\\n string private _name;\\n\\n // Token symbol\\n string private _symbol;\\n\\n // Mapping from token ID to owner address\\n mapping(uint256 => address) private _owners;\\n\\n // Mapping owner address to token count\\n mapping(address => uint256) private _balances;\\n\\n // Mapping from token ID to approved address\\n mapping(uint256 => address) private _tokenApprovals;\\n\\n // Mapping from owner to operator approvals\\n mapping(address => mapping(address => bool)) private _operatorApprovals;\\n\\n /**\\n * @dev Initializes the contract by setting a `name` and a `symbol` to the token collection.\\n */\\n constructor(string memory name_, string memory symbol_) {\\n _name = name_;\\n _symbol = symbol_;\\n }\\n\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) {\\n return\\n interfaceId == type(IERC721).interfaceId ||\\n interfaceId == type(IERC721Metadata).interfaceId ||\\n super.supportsInterface(interfaceId);\\n }\\n\\n /**\\n * @dev See {IERC721-balanceOf}.\\n */\\n function balanceOf(address owner) public view virtual override returns (uint256) {\\n require(owner != address(0), \\\"ERC721: address zero is not a valid owner\\\");\\n return _balances[owner];\\n }\\n\\n /**\\n * @dev See {IERC721-ownerOf}.\\n */\\n function ownerOf(uint256 tokenId) public view virtual override returns (address) {\\n address owner = _ownerOf(tokenId);\\n require(owner != address(0), \\\"ERC721: invalid token ID\\\");\\n return owner;\\n }\\n\\n /**\\n * @dev See {IERC721Metadata-name}.\\n */\\n function name() public view virtual override returns (string memory) {\\n return _name;\\n }\\n\\n /**\\n * @dev See {IERC721Metadata-symbol}.\\n */\\n function symbol() public view virtual override returns (string memory) {\\n return _symbol;\\n }\\n\\n /**\\n * @dev See {IERC721Metadata-tokenURI}.\\n */\\n function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {\\n _requireMinted(tokenId);\\n\\n string memory baseURI = _baseURI();\\n return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : \\\"\\\";\\n }\\n\\n /**\\n * @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\\n * token will be the concatenation of the `baseURI` and the `tokenId`. Empty\\n * by default, can be overridden in child contracts.\\n */\\n function _baseURI() internal view virtual returns (string memory) {\\n return \\\"\\\";\\n }\\n\\n /**\\n * @dev See {IERC721-approve}.\\n */\\n function approve(address to, uint256 tokenId) public virtual override {\\n address owner = ERC721.ownerOf(tokenId);\\n require(to != owner, \\\"ERC721: approval to current owner\\\");\\n\\n require(\\n _msgSender() == owner || isApprovedForAll(owner, _msgSender()),\\n \\\"ERC721: approve caller is not token owner or approved for all\\\"\\n );\\n\\n _approve(to, tokenId);\\n }\\n\\n /**\\n * @dev See {IERC721-getApproved}.\\n */\\n function getApproved(uint256 tokenId) public view virtual override returns (address) {\\n _requireMinted(tokenId);\\n\\n return _tokenApprovals[tokenId];\\n }\\n\\n /**\\n * @dev See {IERC721-setApprovalForAll}.\\n */\\n function setApprovalForAll(address operator, bool approved) public virtual override {\\n _setApprovalForAll(_msgSender(), operator, approved);\\n }\\n\\n /**\\n * @dev See {IERC721-isApprovedForAll}.\\n */\\n function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) {\\n return _operatorApprovals[owner][operator];\\n }\\n\\n /**\\n * @dev See {IERC721-transferFrom}.\\n */\\n function transferFrom(address from, address to, uint256 tokenId) public virtual override {\\n //solhint-disable-next-line max-line-length\\n require(_isApprovedOrOwner(_msgSender(), tokenId), \\\"ERC721: caller is not token owner or approved\\\");\\n\\n _transfer(from, to, tokenId);\\n }\\n\\n /**\\n * @dev See {IERC721-safeTransferFrom}.\\n */\\n function safeTransferFrom(address from, address to, uint256 tokenId) public virtual override {\\n safeTransferFrom(from, to, tokenId, \\\"\\\");\\n }\\n\\n /**\\n * @dev See {IERC721-safeTransferFrom}.\\n */\\n function safeTransferFrom(address from, address to, uint256 tokenId, bytes memory data) public virtual override {\\n require(_isApprovedOrOwner(_msgSender(), tokenId), \\\"ERC721: caller is not token owner or approved\\\");\\n _safeTransfer(from, to, tokenId, data);\\n }\\n\\n /**\\n * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\\n * are aware of the ERC721 protocol to prevent tokens from being forever locked.\\n *\\n * `data` is additional data, it has no specified format and it is sent in call to `to`.\\n *\\n * This internal function is equivalent to {safeTransferFrom}, and can be used to e.g.\\n * implement alternative mechanisms to perform token transfer, such as signature-based.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must exist and be owned by `from`.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n *\\n * Emits a {Transfer} event.\\n */\\n function _safeTransfer(address from, address to, uint256 tokenId, bytes memory data) internal virtual {\\n _transfer(from, to, tokenId);\\n require(_checkOnERC721Received(from, to, tokenId, data), \\\"ERC721: transfer to non ERC721Receiver implementer\\\");\\n }\\n\\n /**\\n * @dev Returns the owner of the `tokenId`. Does NOT revert if token doesn't exist\\n */\\n function _ownerOf(uint256 tokenId) internal view virtual returns (address) {\\n return _owners[tokenId];\\n }\\n\\n /**\\n * @dev Returns whether `tokenId` exists.\\n *\\n * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}.\\n *\\n * Tokens start existing when they are minted (`_mint`),\\n * and stop existing when they are burned (`_burn`).\\n */\\n function _exists(uint256 tokenId) internal view virtual returns (bool) {\\n return _ownerOf(tokenId) != address(0);\\n }\\n\\n /**\\n * @dev Returns whether `spender` is allowed to manage `tokenId`.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must exist.\\n */\\n function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) {\\n address owner = ERC721.ownerOf(tokenId);\\n return (spender == owner || isApprovedForAll(owner, spender) || getApproved(tokenId) == spender);\\n }\\n\\n /**\\n * @dev Safely mints `tokenId` and transfers it to `to`.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must not exist.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n *\\n * Emits a {Transfer} event.\\n */\\n function _safeMint(address to, uint256 tokenId) internal virtual {\\n _safeMint(to, tokenId, \\\"\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\\n * forwarded in {IERC721Receiver-onERC721Received} to contract recipients.\\n */\\n function _safeMint(address to, uint256 tokenId, bytes memory data) internal virtual {\\n _mint(to, tokenId);\\n require(\\n _checkOnERC721Received(address(0), to, tokenId, data),\\n \\\"ERC721: transfer to non ERC721Receiver implementer\\\"\\n );\\n }\\n\\n /**\\n * @dev Mints `tokenId` and transfers it to `to`.\\n *\\n * WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\\n *\\n * Requirements:\\n *\\n * - `tokenId` must not exist.\\n * - `to` cannot be the zero address.\\n *\\n * Emits a {Transfer} event.\\n */\\n function _mint(address to, uint256 tokenId) internal virtual {\\n require(to != address(0), \\\"ERC721: mint to the zero address\\\");\\n require(!_exists(tokenId), \\\"ERC721: token already minted\\\");\\n\\n _beforeTokenTransfer(address(0), to, tokenId, 1);\\n\\n // Check that tokenId was not minted by `_beforeTokenTransfer` hook\\n require(!_exists(tokenId), \\\"ERC721: token already minted\\\");\\n\\n unchecked {\\n // Will not overflow unless all 2**256 token ids are minted to the same owner.\\n // Given that tokens are minted one by one, it is impossible in practice that\\n // this ever happens. Might change if we allow batch minting.\\n // The ERC fails to describe this case.\\n _balances[to] += 1;\\n }\\n\\n _owners[tokenId] = to;\\n\\n emit Transfer(address(0), to, tokenId);\\n\\n _afterTokenTransfer(address(0), to, tokenId, 1);\\n }\\n\\n /**\\n * @dev Destroys `tokenId`.\\n * The approval is cleared when the token is burned.\\n * This is an internal function that does not check if the sender is authorized to operate on the token.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must exist.\\n *\\n * Emits a {Transfer} event.\\n */\\n function _burn(uint256 tokenId) internal virtual {\\n address owner = ERC721.ownerOf(tokenId);\\n\\n _beforeTokenTransfer(owner, address(0), tokenId, 1);\\n\\n // Update ownership in case tokenId was transferred by `_beforeTokenTransfer` hook\\n owner = ERC721.ownerOf(tokenId);\\n\\n // Clear approvals\\n delete _tokenApprovals[tokenId];\\n\\n unchecked {\\n // Cannot overflow, as that would require more tokens to be burned/transferred\\n // out than the owner initially received through minting and transferring in.\\n _balances[owner] -= 1;\\n }\\n delete _owners[tokenId];\\n\\n emit Transfer(owner, address(0), tokenId);\\n\\n _afterTokenTransfer(owner, address(0), tokenId, 1);\\n }\\n\\n /**\\n * @dev Transfers `tokenId` from `from` to `to`.\\n * As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\\n *\\n * Requirements:\\n *\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must be owned by `from`.\\n *\\n * Emits a {Transfer} event.\\n */\\n function _transfer(address from, address to, uint256 tokenId) internal virtual {\\n require(ERC721.ownerOf(tokenId) == from, \\\"ERC721: transfer from incorrect owner\\\");\\n require(to != address(0), \\\"ERC721: transfer to the zero address\\\");\\n\\n _beforeTokenTransfer(from, to, tokenId, 1);\\n\\n // Check that tokenId was not transferred by `_beforeTokenTransfer` hook\\n require(ERC721.ownerOf(tokenId) == from, \\\"ERC721: transfer from incorrect owner\\\");\\n\\n // Clear approvals from the previous owner\\n delete _tokenApprovals[tokenId];\\n\\n unchecked {\\n // `_balances[from]` cannot overflow for the same reason as described in `_burn`:\\n // `from`'s balance is the number of token held, which is at least one before the current\\n // transfer.\\n // `_balances[to]` could overflow in the conditions described in `_mint`. That would require\\n // all 2**256 token ids to be minted, which in practice is impossible.\\n _balances[from] -= 1;\\n _balances[to] += 1;\\n }\\n _owners[tokenId] = to;\\n\\n emit Transfer(from, to, tokenId);\\n\\n _afterTokenTransfer(from, to, tokenId, 1);\\n }\\n\\n /**\\n * @dev Approve `to` to operate on `tokenId`\\n *\\n * Emits an {Approval} event.\\n */\\n function _approve(address to, uint256 tokenId) internal virtual {\\n _tokenApprovals[tokenId] = to;\\n emit Approval(ERC721.ownerOf(tokenId), to, tokenId);\\n }\\n\\n /**\\n * @dev Approve `operator` to operate on all of `owner` tokens\\n *\\n * Emits an {ApprovalForAll} event.\\n */\\n function _setApprovalForAll(address owner, address operator, bool approved) internal virtual {\\n require(owner != operator, \\\"ERC721: approve to caller\\\");\\n _operatorApprovals[owner][operator] = approved;\\n emit ApprovalForAll(owner, operator, approved);\\n }\\n\\n /**\\n * @dev Reverts if the `tokenId` has not been minted yet.\\n */\\n function _requireMinted(uint256 tokenId) internal view virtual {\\n require(_exists(tokenId), \\\"ERC721: invalid token ID\\\");\\n }\\n\\n /**\\n * @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address.\\n * The call is not executed if the target address is not a contract.\\n *\\n * @param from address representing the previous owner of the given token ID\\n * @param to target address that will receive the tokens\\n * @param tokenId uint256 ID of the token to be transferred\\n * @param data bytes optional data to send along with the call\\n * @return bool whether the call correctly returned the expected magic value\\n */\\n function _checkOnERC721Received(\\n address from,\\n address to,\\n uint256 tokenId,\\n bytes memory data\\n ) private returns (bool) {\\n if (to.isContract()) {\\n try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, data) returns (bytes4 retval) {\\n return retval == IERC721Receiver.onERC721Received.selector;\\n } catch (bytes memory reason) {\\n if (reason.length == 0) {\\n revert(\\\"ERC721: transfer to non ERC721Receiver implementer\\\");\\n } else {\\n /// @solidity memory-safe-assembly\\n assembly {\\n revert(add(32, reason), mload(reason))\\n }\\n }\\n }\\n } else {\\n return true;\\n }\\n }\\n\\n /**\\n * @dev Hook that is called before any token transfer. This includes minting and burning. If {ERC721Consecutive} is\\n * used, the hook may be called as part of a consecutive (batch) mint, as indicated by `batchSize` greater than 1.\\n *\\n * Calling conditions:\\n *\\n * - When `from` and `to` are both non-zero, ``from``'s tokens will be transferred to `to`.\\n * - When `from` is zero, the tokens will be minted for `to`.\\n * - When `to` is zero, ``from``'s tokens will be burned.\\n * - `from` and `to` are never both zero.\\n * - `batchSize` is non-zero.\\n *\\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n */\\n function _beforeTokenTransfer(address from, address to, uint256 firstTokenId, uint256 batchSize) internal virtual {}\\n\\n /**\\n * @dev Hook that is called after any token transfer. This includes minting and burning. If {ERC721Consecutive} is\\n * used, the hook may be called as part of a consecutive (batch) mint, as indicated by `batchSize` greater than 1.\\n *\\n * Calling conditions:\\n *\\n * - When `from` and `to` are both non-zero, ``from``'s tokens were transferred to `to`.\\n * - When `from` is zero, the tokens were minted for `to`.\\n * - When `to` is zero, ``from``'s tokens were burned.\\n * - `from` and `to` are never both zero.\\n * - `batchSize` is non-zero.\\n *\\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n */\\n function _afterTokenTransfer(address from, address to, uint256 firstTokenId, uint256 batchSize) internal virtual {}\\n\\n /**\\n * @dev Unsafe write access to the balances, used by extensions that \\\"mint\\\" tokens using an {ownerOf} override.\\n *\\n * WARNING: Anyone calling this MUST ensure that the balances remain consistent with the ownership. The invariant\\n * being that for any address `a` the value returned by `balanceOf(a)` must be equal to the number of tokens such\\n * that `ownerOf(tokenId)` is `a`.\\n */\\n // solhint-disable-next-line func-name-mixedcase\\n function __unsafe_increaseBalance(address account, uint256 amount) internal {\\n _balances[account] += amount;\\n }\\n}\\n\",\"keccak256\":\"0x2c309e7df9e05e6ce15bedfe74f3c61b467fc37e0fae9eab496acf5ea0bbd7ff\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC721/IERC721.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC721 compliant contract.\\n */\\ninterface IERC721 is IERC165 {\\n /**\\n * @dev Emitted when `tokenId` token is transferred from `from` to `to`.\\n */\\n event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);\\n\\n /**\\n * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.\\n */\\n event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);\\n\\n /**\\n * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\\n */\\n event ApprovalForAll(address indexed owner, address indexed operator, bool approved);\\n\\n /**\\n * @dev Returns the number of tokens in ``owner``'s account.\\n */\\n function balanceOf(address owner) external view returns (uint256 balance);\\n\\n /**\\n * @dev Returns the owner of the `tokenId` token.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must exist.\\n */\\n function ownerOf(uint256 tokenId) external view returns (address owner);\\n\\n /**\\n * @dev Safely transfers `tokenId` token from `from` to `to`.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must exist and be owned by `from`.\\n * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n *\\n * Emits a {Transfer} event.\\n */\\n function safeTransferFrom(address from, address to, uint256 tokenId, bytes calldata data) external;\\n\\n /**\\n * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\\n * are aware of the ERC721 protocol to prevent tokens from being forever locked.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must exist and be owned by `from`.\\n * - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n *\\n * Emits a {Transfer} event.\\n */\\n function safeTransferFrom(address from, address to, uint256 tokenId) external;\\n\\n /**\\n * @dev Transfers `tokenId` token from `from` to `to`.\\n *\\n * WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721\\n * or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must\\n * understand this adds an external call which potentially creates a reentrancy vulnerability.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must be owned by `from`.\\n * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transferFrom(address from, address to, uint256 tokenId) external;\\n\\n /**\\n * @dev Gives permission to `to` to transfer `tokenId` token to another account.\\n * The approval is cleared when the token is transferred.\\n *\\n * Only a single account can be approved at a time, so approving the zero address clears previous approvals.\\n *\\n * Requirements:\\n *\\n * - The caller must own the token or be an approved operator.\\n * - `tokenId` must exist.\\n *\\n * Emits an {Approval} event.\\n */\\n function approve(address to, uint256 tokenId) external;\\n\\n /**\\n * @dev Approve or remove `operator` as an operator for the caller.\\n * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\\n *\\n * Requirements:\\n *\\n * - The `operator` cannot be the caller.\\n *\\n * Emits an {ApprovalForAll} event.\\n */\\n function setApprovalForAll(address operator, bool approved) external;\\n\\n /**\\n * @dev Returns the account approved for `tokenId` token.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must exist.\\n */\\n function getApproved(uint256 tokenId) external view returns (address operator);\\n\\n /**\\n * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\\n *\\n * See {setApprovalForAll}\\n */\\n function isApprovedForAll(address owner, address operator) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x5bce51e11f7d194b79ea59fe00c9e8de9fa2c5530124960f29a24d4c740a3266\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC721/IERC721Receiver.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title ERC721 token receiver interface\\n * @dev Interface for any contract that wants to support safeTransfers\\n * from ERC721 asset contracts.\\n */\\ninterface IERC721Receiver {\\n /**\\n * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}\\n * by `operator` from `from`, this function is called.\\n *\\n * It must return its Solidity selector to confirm the token transfer.\\n * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted.\\n *\\n * The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`.\\n */\\n function onERC721Received(\\n address operator,\\n address from,\\n uint256 tokenId,\\n bytes calldata data\\n ) external returns (bytes4);\\n}\\n\",\"keccak256\":\"0xa82b58eca1ee256be466e536706850163d2ec7821945abd6b4778cfb3bee37da\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Metadata.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC721.sol\\\";\\n\\n/**\\n * @title ERC-721 Non-Fungible Token Standard, optional metadata extension\\n * @dev See https://eips.ethereum.org/EIPS/eip-721\\n */\\ninterface IERC721Metadata is IERC721 {\\n /**\\n * @dev Returns the token collection name.\\n */\\n function name() external view returns (string memory);\\n\\n /**\\n * @dev Returns the token collection symbol.\\n */\\n function symbol() external view returns (string memory);\\n\\n /**\\n * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.\\n */\\n function tokenURI(uint256 tokenId) external view returns (string memory);\\n}\\n\",\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n function _contextSuffixLength() internal view virtual returns (uint256) {\\n return 0;\\n }\\n}\\n\",\"keccak256\":\"0xa92e4fa126feb6907daa0513ddd816b2eb91f30a808de54f63c17d0e162c3439\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Strings.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Strings.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./math/Math.sol\\\";\\nimport \\\"./math/SignedMath.sol\\\";\\n\\n/**\\n * @dev String operations.\\n */\\nlibrary Strings {\\n bytes16 private constant _SYMBOLS = \\\"0123456789abcdef\\\";\\n uint8 private constant _ADDRESS_LENGTH = 20;\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` decimal representation.\\n */\\n function toString(uint256 value) internal pure returns (string memory) {\\n unchecked {\\n uint256 length = Math.log10(value) + 1;\\n string memory buffer = new string(length);\\n uint256 ptr;\\n /// @solidity memory-safe-assembly\\n assembly {\\n ptr := add(buffer, add(32, length))\\n }\\n while (true) {\\n ptr--;\\n /// @solidity memory-safe-assembly\\n assembly {\\n mstore8(ptr, byte(mod(value, 10), _SYMBOLS))\\n }\\n value /= 10;\\n if (value == 0) break;\\n }\\n return buffer;\\n }\\n }\\n\\n /**\\n * @dev Converts a `int256` to its ASCII `string` decimal representation.\\n */\\n function toString(int256 value) internal pure returns (string memory) {\\n return string(abi.encodePacked(value < 0 ? \\\"-\\\" : \\\"\\\", toString(SignedMath.abs(value))));\\n }\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\\n */\\n function toHexString(uint256 value) internal pure returns (string memory) {\\n unchecked {\\n return toHexString(value, Math.log256(value) + 1);\\n }\\n }\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\\n */\\n function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\\n bytes memory buffer = new bytes(2 * length + 2);\\n buffer[0] = \\\"0\\\";\\n buffer[1] = \\\"x\\\";\\n for (uint256 i = 2 * length + 1; i > 1; --i) {\\n buffer[i] = _SYMBOLS[value & 0xf];\\n value >>= 4;\\n }\\n require(value == 0, \\\"Strings: hex length insufficient\\\");\\n return string(buffer);\\n }\\n\\n /**\\n * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.\\n */\\n function toHexString(address addr) internal pure returns (string memory) {\\n return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);\\n }\\n\\n /**\\n * @dev Returns true if the two strings are equal.\\n */\\n function equal(string memory a, string memory b) internal pure returns (bool) {\\n return keccak256(bytes(a)) == keccak256(bytes(b));\\n }\\n}\\n\",\"keccak256\":\"0x3088eb2868e8d13d89d16670b5f8612c4ab9ff8956272837d8e90106c59c14a0\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165 is IERC165 {\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165).interfaceId;\\n }\\n}\\n\",\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/math/Math.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard math utilities missing in the Solidity language.\\n */\\nlibrary Math {\\n enum Rounding {\\n Down, // Toward negative infinity\\n Up, // Toward infinity\\n Zero // Toward zero\\n }\\n\\n /**\\n * @dev Returns the largest of two numbers.\\n */\\n function max(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two numbers.\\n */\\n function min(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two numbers. The result is rounded towards\\n * zero.\\n */\\n function average(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b) / 2 can overflow.\\n return (a & b) + (a ^ b) / 2;\\n }\\n\\n /**\\n * @dev Returns the ceiling of the division of two numbers.\\n *\\n * This differs from standard division with `/` in that it rounds up instead\\n * of rounding down.\\n */\\n function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b - 1) / b can overflow on addition, so we distribute.\\n return a == 0 ? 0 : (a - 1) / b + 1;\\n }\\n\\n /**\\n * @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\\n * @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)\\n * with further edits by Uniswap Labs also under MIT license.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator) internal pure returns (uint256 result) {\\n unchecked {\\n // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use\\n // use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\\n // variables such that product = prod1 * 2^256 + prod0.\\n uint256 prod0; // Least significant 256 bits of the product\\n uint256 prod1; // Most significant 256 bits of the product\\n assembly {\\n let mm := mulmod(x, y, not(0))\\n prod0 := mul(x, y)\\n prod1 := sub(sub(mm, prod0), lt(mm, prod0))\\n }\\n\\n // Handle non-overflow cases, 256 by 256 division.\\n if (prod1 == 0) {\\n // Solidity will revert if denominator == 0, unlike the div opcode on its own.\\n // The surrounding unchecked block does not change this fact.\\n // See https://docs.soliditylang.org/en/latest/control-structures.html#checked-or-unchecked-arithmetic.\\n return prod0 / denominator;\\n }\\n\\n // Make sure the result is less than 2^256. Also prevents denominator == 0.\\n require(denominator > prod1, \\\"Math: mulDiv overflow\\\");\\n\\n ///////////////////////////////////////////////\\n // 512 by 256 division.\\n ///////////////////////////////////////////////\\n\\n // Make division exact by subtracting the remainder from [prod1 prod0].\\n uint256 remainder;\\n assembly {\\n // Compute remainder using mulmod.\\n remainder := mulmod(x, y, denominator)\\n\\n // Subtract 256 bit number from 512 bit number.\\n prod1 := sub(prod1, gt(remainder, prod0))\\n prod0 := sub(prod0, remainder)\\n }\\n\\n // Factor powers of two out of denominator and compute largest power of two divisor of denominator. Always >= 1.\\n // See https://cs.stackexchange.com/q/138556/92363.\\n\\n // Does not overflow because the denominator cannot be zero at this stage in the function.\\n uint256 twos = denominator & (~denominator + 1);\\n assembly {\\n // Divide denominator by twos.\\n denominator := div(denominator, twos)\\n\\n // Divide [prod1 prod0] by twos.\\n prod0 := div(prod0, twos)\\n\\n // Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one.\\n twos := add(div(sub(0, twos), twos), 1)\\n }\\n\\n // Shift in bits from prod1 into prod0.\\n prod0 |= prod1 * twos;\\n\\n // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such\\n // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for\\n // four bits. That is, denominator * inv = 1 mod 2^4.\\n uint256 inverse = (3 * denominator) ^ 2;\\n\\n // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also works\\n // in modular arithmetic, doubling the correct bits in each step.\\n inverse *= 2 - denominator * inverse; // inverse mod 2^8\\n inverse *= 2 - denominator * inverse; // inverse mod 2^16\\n inverse *= 2 - denominator * inverse; // inverse mod 2^32\\n inverse *= 2 - denominator * inverse; // inverse mod 2^64\\n inverse *= 2 - denominator * inverse; // inverse mod 2^128\\n inverse *= 2 - denominator * inverse; // inverse mod 2^256\\n\\n // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\\n // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is\\n // less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1\\n // is no longer required.\\n result = prod0 * inverse;\\n return result;\\n }\\n }\\n\\n /**\\n * @notice Calculates x * y / denominator with full precision, following the selected rounding direction.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator, Rounding rounding) internal pure returns (uint256) {\\n uint256 result = mulDiv(x, y, denominator);\\n if (rounding == Rounding.Up && mulmod(x, y, denominator) > 0) {\\n result += 1;\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down.\\n *\\n * Inspired by Henry S. Warren, Jr.'s \\\"Hacker's Delight\\\" (Chapter 11).\\n */\\n function sqrt(uint256 a) internal pure returns (uint256) {\\n if (a == 0) {\\n return 0;\\n }\\n\\n // For our first guess, we get the biggest power of 2 which is smaller than the square root of the target.\\n //\\n // We know that the \\\"msb\\\" (most significant bit) of our target number `a` is a power of 2 such that we have\\n // `msb(a) <= a < 2*msb(a)`. This value can be written `msb(a)=2**k` with `k=log2(a)`.\\n //\\n // This can be rewritten `2**log2(a) <= a < 2**(log2(a) + 1)`\\n // \\u2192 `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))`\\n // \\u2192 `2**(k/2) <= sqrt(a) < 2**((k+1)/2) <= 2**(k/2 + 1)`\\n //\\n // Consequently, `2**(log2(a) / 2)` is a good first approximation of `sqrt(a)` with at least 1 correct bit.\\n uint256 result = 1 << (log2(a) >> 1);\\n\\n // At this point `result` is an estimation with one bit of precision. We know the true value is a uint128,\\n // since it is the square root of a uint256. Newton's method converges quadratically (precision doubles at\\n // every iteration). We thus need at most 7 iteration to turn our partial result with one bit of precision\\n // into the expected uint128 result.\\n unchecked {\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n return min(result, a / result);\\n }\\n }\\n\\n /**\\n * @notice Calculates sqrt(a), following the selected rounding direction.\\n */\\n function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = sqrt(a);\\n return result + (rounding == Rounding.Up && result * result < a ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 2, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 128;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 64;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 32;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 16;\\n }\\n if (value >> 8 > 0) {\\n value >>= 8;\\n result += 8;\\n }\\n if (value >> 4 > 0) {\\n value >>= 4;\\n result += 4;\\n }\\n if (value >> 2 > 0) {\\n value >>= 2;\\n result += 2;\\n }\\n if (value >> 1 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 2, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log2(value);\\n return result + (rounding == Rounding.Up && 1 << result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 10, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >= 10 ** 64) {\\n value /= 10 ** 64;\\n result += 64;\\n }\\n if (value >= 10 ** 32) {\\n value /= 10 ** 32;\\n result += 32;\\n }\\n if (value >= 10 ** 16) {\\n value /= 10 ** 16;\\n result += 16;\\n }\\n if (value >= 10 ** 8) {\\n value /= 10 ** 8;\\n result += 8;\\n }\\n if (value >= 10 ** 4) {\\n value /= 10 ** 4;\\n result += 4;\\n }\\n if (value >= 10 ** 2) {\\n value /= 10 ** 2;\\n result += 2;\\n }\\n if (value >= 10 ** 1) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log10(value);\\n return result + (rounding == Rounding.Up && 10 ** result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 256, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n *\\n * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.\\n */\\n function log256(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 16;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 8;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 4;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 2;\\n }\\n if (value >> 8 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 256, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log256(value);\\n return result + (rounding == Rounding.Up && 1 << (result << 3) < value ? 1 : 0);\\n }\\n }\\n}\\n\",\"keccak256\":\"0xe4455ac1eb7fc497bb7402579e7b4d64d928b846fce7d2b6fde06d366f21c2b3\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/SignedMath.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard signed math utilities missing in the Solidity language.\\n */\\nlibrary SignedMath {\\n /**\\n * @dev Returns the largest of two signed numbers.\\n */\\n function max(int256 a, int256 b) internal pure returns (int256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two signed numbers.\\n */\\n function min(int256 a, int256 b) internal pure returns (int256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two signed numbers without overflow.\\n * The result is rounded towards zero.\\n */\\n function average(int256 a, int256 b) internal pure returns (int256) {\\n // Formula from the book \\\"Hacker's Delight\\\"\\n int256 x = (a & b) + ((a ^ b) >> 1);\\n return x + (int256(uint256(x) >> 255) & (a ^ b));\\n }\\n\\n /**\\n * @dev Returns the absolute unsigned value of a signed value.\\n */\\n function abs(int256 n) internal pure returns (uint256) {\\n unchecked {\\n // must be unchecked in order to support `n = type(int256).min`\\n return uint256(n >= 0 ? n : -n);\\n }\\n }\\n}\\n\",\"keccak256\":\"0xf92515413956f529d95977adc9b0567d583c6203fc31ab1c23824c35187e3ddc\",\"license\":\"MIT\"},\"src/mocks/token/ERC721Mock.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ERC721} from \\\"@openzeppelin/contracts/token/ERC721/ERC721.sol\\\";\\n\\n/// @notice A mock [ERC-721](https://eips.ethereum.org/EIPS/eip-721) token that can be minted and burned by everyone.\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract ERC721Mock is ERC721 {\\n constructor(string memory name_, string memory symbol_) ERC721(name_, symbol_) {}\\n\\n function mint(address account, uint256 tokenId) public {\\n _mint(account, tokenId);\\n }\\n\\n function burn(uint256 tokenId) public {\\n _burn(tokenId);\\n }\\n}\\n\",\"keccak256\":\"0xc19c7f14d72ecefa0d99a994f9aca81e91f69644bbe237a3e244b25df887b88d\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[{"astId":7872,"contract":"src/mocks/token/ERC721Mock.sol:ERC721Mock","label":"_name","offset":0,"slot":"0","type":"t_string_storage"},{"astId":7874,"contract":"src/mocks/token/ERC721Mock.sol:ERC721Mock","label":"_symbol","offset":0,"slot":"1","type":"t_string_storage"},{"astId":7878,"contract":"src/mocks/token/ERC721Mock.sol:ERC721Mock","label":"_owners","offset":0,"slot":"2","type":"t_mapping(t_uint256,t_address)"},{"astId":7882,"contract":"src/mocks/token/ERC721Mock.sol:ERC721Mock","label":"_balances","offset":0,"slot":"3","type":"t_mapping(t_address,t_uint256)"},{"astId":7886,"contract":"src/mocks/token/ERC721Mock.sol:ERC721Mock","label":"_tokenApprovals","offset":0,"slot":"4","type":"t_mapping(t_uint256,t_address)"},{"astId":7892,"contract":"src/mocks/token/ERC721Mock.sol:ERC721Mock","label":"_operatorApprovals","offset":0,"slot":"5","type":"t_mapping(t_address,t_mapping(t_address,t_bool))"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_mapping(t_address,t_bool)":{"encoding":"mapping","key":"t_address","label":"mapping(address => bool)","numberOfBytes":"32","value":"t_bool"},"t_mapping(t_address,t_mapping(t_address,t_bool))":{"encoding":"mapping","key":"t_address","label":"mapping(address => mapping(address => bool))","numberOfBytes":"32","value":"t_mapping(t_address,t_bool)"},"t_mapping(t_address,t_uint256)":{"encoding":"mapping","key":"t_address","label":"mapping(address => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_mapping(t_uint256,t_address)":{"encoding":"mapping","key":"t_uint256","label":"mapping(uint256 => address)","numberOfBytes":"32","value":"t_address"},"t_string_storage":{"encoding":"bytes","label":"string","numberOfBytes":"32"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"userdoc":{"kind":"user","methods":{},"notice":"A mock [ERC-721](https://eips.ethereum.org/EIPS/eip-721) token that can be minted and burned by everyone.","version":1}}},"src/mocks/utils/math/BitmapMock.sol":{"BitmapMock":{"abi":[{"inputs":[{"internalType":"uint256","name":"_bitmap","type":"uint256"},{"internalType":"uint8","name":"_index","type":"uint8"}],"name":"flipBit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"_bitmap","type":"uint256"},{"internalType":"uint8","name":"_index","type":"uint8"}],"name":"hasBit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"}],"devdoc":{"details":"DO NOT USE IN PRODUCTION!","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b5060dc8061001f6000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c806330c869ef1460375780637a3a148514605b575b600080fd5b60466042366004609b565b6077565b60405190151581526020015b60405180910390f35b606a6066366004609b565b608c565b6040519081526020016052565b6000600160ff83161b831615155b9392505050565b6000600160ff83161b83186085565b6000806040838503121560ad57600080fd5b82359150602083013560ff8116811460c457600080fd5b80915050925092905056fea164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xDC DUP1 PUSH2 0x1F PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x32 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x30C869EF EQ PUSH1 0x37 JUMPI DUP1 PUSH4 0x7A3A1485 EQ PUSH1 0x5B JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x46 PUSH1 0x42 CALLDATASIZE PUSH1 0x4 PUSH1 0x9B JUMP JUMPDEST PUSH1 0x77 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x6A PUSH1 0x66 CALLDATASIZE PUSH1 0x4 PUSH1 0x9B JUMP JUMPDEST PUSH1 0x8C JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x52 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xFF DUP4 AND SHL DUP4 AND ISZERO ISZERO JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xFF DUP4 AND SHL DUP4 XOR PUSH1 0x85 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH1 0xAD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH1 0xC4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"266:283:61:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@flipBit_12839":{"entryPoint":140,"id":12839,"parameterSlots":2,"returnSlots":1},"@flipBit_14637":{"entryPoint":null,"id":14637,"parameterSlots":2,"returnSlots":1},"@hasBit_12824":{"entryPoint":119,"id":12824,"parameterSlots":2,"returnSlots":1},"@hasBit_14619":{"entryPoint":null,"id":14619,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256t_uint8":{"entryPoint":155,"id":null,"parameterSlots":2,"returnSlots":2},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:727:92","statements":[{"nodeType":"YulBlock","src":"6:3:92","statements":[]},{"body":{"nodeType":"YulBlock","src":"99:252:92","statements":[{"body":{"nodeType":"YulBlock","src":"145:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"154:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"157:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"147:6:92"},"nodeType":"YulFunctionCall","src":"147:12:92"},"nodeType":"YulExpressionStatement","src":"147:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"120:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"129:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"116:3:92"},"nodeType":"YulFunctionCall","src":"116:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"141:2:92","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"112:3:92"},"nodeType":"YulFunctionCall","src":"112:32:92"},"nodeType":"YulIf","src":"109:52:92"},{"nodeType":"YulAssignment","src":"170:33:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"193:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"180:12:92"},"nodeType":"YulFunctionCall","src":"180:23:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"170:6:92"}]},{"nodeType":"YulVariableDeclaration","src":"212:45:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"242:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"253:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"238:3:92"},"nodeType":"YulFunctionCall","src":"238:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"225:12:92"},"nodeType":"YulFunctionCall","src":"225:32:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"216:5:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"305:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"314:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"317:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"307:6:92"},"nodeType":"YulFunctionCall","src":"307:12:92"},"nodeType":"YulExpressionStatement","src":"307:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"279:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"290:5:92"},{"kind":"number","nodeType":"YulLiteral","src":"297:4:92","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"286:3:92"},"nodeType":"YulFunctionCall","src":"286:16:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"276:2:92"},"nodeType":"YulFunctionCall","src":"276:27:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"269:6:92"},"nodeType":"YulFunctionCall","src":"269:35:92"},"nodeType":"YulIf","src":"266:55:92"},{"nodeType":"YulAssignment","src":"330:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"340:5:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"330:6:92"}]}]},"name":"abi_decode_tuple_t_uint256t_uint8","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"57:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"68:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"80:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"88:6:92","type":""}],"src":"14:337:92"},{"body":{"nodeType":"YulBlock","src":"451:92:92","statements":[{"nodeType":"YulAssignment","src":"461:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"473:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"484:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"469:3:92"},"nodeType":"YulFunctionCall","src":"469:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"461:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"503:9:92"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"528:6:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"521:6:92"},"nodeType":"YulFunctionCall","src":"521:14:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"514:6:92"},"nodeType":"YulFunctionCall","src":"514:22:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"496:6:92"},"nodeType":"YulFunctionCall","src":"496:41:92"},"nodeType":"YulExpressionStatement","src":"496:41:92"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"420:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"431:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"442:4:92","type":""}],"src":"356:187:92"},{"body":{"nodeType":"YulBlock","src":"649:76:92","statements":[{"nodeType":"YulAssignment","src":"659:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"671:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"682:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"667:3:92"},"nodeType":"YulFunctionCall","src":"667:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"659:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"701:9:92"},{"name":"value0","nodeType":"YulIdentifier","src":"712:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"694:6:92"},"nodeType":"YulFunctionCall","src":"694:25:92"},"nodeType":"YulExpressionStatement","src":"694:25:92"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"618:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"629:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"640:4:92","type":""}],"src":"548:177:92"}]},"contents":"{\n { }\n function abi_decode_tuple_t_uint256t_uint8(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := calldataload(headStart)\n let value := calldataload(add(headStart, 32))\n if iszero(eq(value, and(value, 0xff))) { revert(0, 0) }\n value1 := value\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n}","id":92,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"6080604052348015600f57600080fd5b506004361060325760003560e01c806330c869ef1460375780637a3a148514605b575b600080fd5b60466042366004609b565b6077565b60405190151581526020015b60405180910390f35b606a6066366004609b565b608c565b6040519081526020016052565b6000600160ff83161b831615155b9392505050565b6000600160ff83161b83186085565b6000806040838503121560ad57600080fd5b82359150602083013560ff8116811460c457600080fd5b80915050925092905056fea164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x32 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x30C869EF EQ PUSH1 0x37 JUMPI DUP1 PUSH4 0x7A3A1485 EQ PUSH1 0x5B JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x46 PUSH1 0x42 CALLDATASIZE PUSH1 0x4 PUSH1 0x9B JUMP JUMPDEST PUSH1 0x77 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x6A PUSH1 0x66 CALLDATASIZE PUSH1 0x4 PUSH1 0x9B JUMP JUMPDEST PUSH1 0x8C JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x52 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xFF DUP4 AND SHL DUP4 AND ISZERO ISZERO JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xFF DUP4 AND SHL DUP4 XOR PUSH1 0x85 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH1 0xAD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH1 0xC4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"266:283:61:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;292:122;;;;;;:::i;:::-;;:::i;:::-;;;521:14:92;;514:22;496:41;;484:2;469:18;292:122:61;;;;;;;;420:127;;;;;;:::i;:::-;;:::i;:::-;;;694:25:92;;;682:2;667:18;420:127:61;548:177:92;292:122:61;360:4;408:1:86;:10;;;;398:21;;432:12;;383:24:61;376:31;292:122;-1:-1:-1;;;292:122:61:o;420:127::-;489:7;761:1:86;:10;;;;751:21;;515:25:61;669:106:86;14:337:92;80:6;88;141:2;129:9;120:7;116:23;112:32;109:52;;;157:1;154;147:12;109:52;193:9;180:23;170:33;;253:2;242:9;238:18;225:32;297:4;290:5;286:16;279:5;276:27;266:55;;317:1;314;307:12;266:55;340:5;330:15;;;14:337;;;;;:::o"},"gasEstimates":{"creation":{"codeDepositCost":"44000","executionCost":"93","totalCost":"44093"},"external":{"flipBit(uint256,uint8)":"391","hasBit(uint256,uint8)":"359"}},"methodIdentifiers":{"flipBit(uint256,uint8)":"7a3a1485","hasBit(uint256,uint8)":"30c869ef"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_bitmap\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"_index\",\"type\":\"uint8\"}],\"name\":\"flipBit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_bitmap\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"_index\",\"type\":\"uint8\"}],\"name\":\"hasBit\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"DO NOT USE IN PRODUCTION!\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"A mock contract containing functions manipulating bitmaps.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/mocks/utils/math/BitmapMock.sol\":\"BitmapMock\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"src/mocks/utils/math/BitmapMock.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {hasBit as _hasBit, flipBit as _flipBit} from \\\"../../../utils/math/BitMap.sol\\\";\\n\\n/// @notice A mock contract containing functions manipulating bitmaps.\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract BitmapMock {\\n function hasBit(uint256 _bitmap, uint8 _index) public pure returns (bool) {\\n return _hasBit(_bitmap, _index);\\n }\\n\\n function flipBit(uint256 _bitmap, uint8 _index) public pure returns (uint256) {\\n return _flipBit(_bitmap, _index);\\n }\\n}\\n\",\"keccak256\":\"0x67d05948db896db9be88aa96e3de574ea44f42679dbbcb28d108a222f5531990\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/math/BitMap.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @param bitmap The `uint256` representation of bits.\\n/// @param index The index number to check whether 1 or 0 is set.\\n/// @return Returns `true` if the bit is set at `index` on `bitmap`.\\n/// @custom:security-contact sirt@aragon.org\\nfunction hasBit(uint256 bitmap, uint8 index) pure returns (bool) {\\n uint256 bitValue = bitmap & (1 << index);\\n return bitValue > 0;\\n}\\n\\n/// @param bitmap The `uint256` representation of bits.\\n/// @param index The index number to set the bit.\\n/// @return Returns a new number in which the bit is set at `index`.\\n/// @custom:security-contact sirt@aragon.org\\nfunction flipBit(uint256 bitmap, uint8 index) pure returns (uint256) {\\n return bitmap ^ (1 << index);\\n}\\n\",\"keccak256\":\"0x95c28a23170c6aae93ca1ad74588a7d35084cbd430eb4b7b11c7c0488e298297\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"notice":"A mock contract containing functions manipulating bitmaps.","version":1}}},"src/mocks/utils/math/RatioMock.sol":{"RatioMock":{"abi":[{"inputs":[{"internalType":"uint256","name":"limit","type":"uint256"},{"internalType":"uint256","name":"actual","type":"uint256"}],"name":"RatioOutOfBounds","type":"error"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"},{"internalType":"uint256","name":"_ratio","type":"uint256"}],"name":"applyRatioCeiled","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getRatioBase","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"}],"devdoc":{"details":"DO NOT USE IN PRODUCTION!","errors":{"RatioOutOfBounds(uint256,uint256)":[{"params":{"actual":"The actual value.","limit":"The maximal value."}}]},"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b506101a3806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80633d9de6701461003b578063a027562014610052575b600080fd5b620f42405b60405190815260200160405180910390f35b6100406100603660046100f0565b600061006c8383610075565b90505b92915050565b6000620f42408211156100ab5760405163cc80c19560e01b8152620f424060048201526024810183905260440160405180910390fd5b6100b58284610128565b925060006100c6620f424085610155565b90506100d5620f424085610169565b915080156100e9576100e68261017d565b91505b5092915050565b6000806040838503121561010357600080fd5b50508035926020909101359150565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761006f5761006f610112565b634e487b7160e01b600052601260045260246000fd5b6000826101645761016461013f565b500690565b6000826101785761017861013f565b500490565b60006001820161018f5761018f610112565b506001019056fea164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1A3 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x3D9DE670 EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0xA0275620 EQ PUSH2 0x52 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0xF4240 JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x40 PUSH2 0x60 CALLDATASIZE PUSH1 0x4 PUSH2 0xF0 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6C DUP4 DUP4 PUSH2 0x75 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0xF4240 DUP3 GT ISZERO PUSH2 0xAB JUMPI PUSH1 0x40 MLOAD PUSH4 0xCC80C195 PUSH1 0xE0 SHL DUP2 MSTORE PUSH3 0xF4240 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x44 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xB5 DUP3 DUP5 PUSH2 0x128 JUMP JUMPDEST SWAP3 POP PUSH1 0x0 PUSH2 0xC6 PUSH3 0xF4240 DUP6 PUSH2 0x155 JUMP JUMPDEST SWAP1 POP PUSH2 0xD5 PUSH3 0xF4240 DUP6 PUSH2 0x169 JUMP JUMPDEST SWAP2 POP DUP1 ISZERO PUSH2 0xE9 JUMPI PUSH2 0xE6 DUP3 PUSH2 0x17D JUMP JUMPDEST SWAP2 POP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x103 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP1 DUP3 MUL DUP2 ISZERO DUP3 DUP3 DIV DUP5 EQ OR PUSH2 0x6F JUMPI PUSH2 0x6F PUSH2 0x112 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x164 JUMPI PUSH2 0x164 PUSH2 0x13F JUMP JUMPDEST POP MOD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x178 JUMPI PUSH2 0x178 PUSH2 0x13F JUMP JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 ADD PUSH2 0x18F JUMPI PUSH2 0x18F PUSH2 0x112 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"256:266:62:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_applyRatioCeiled_14698":{"entryPoint":117,"id":14698,"parameterSlots":2,"returnSlots":1},"@applyRatioCeiled_12869":{"entryPoint":null,"id":12869,"parameterSlots":2,"returnSlots":1},"@getRatioBase_12854":{"entryPoint":null,"id":12854,"parameterSlots":0,"returnSlots":1},"abi_decode_tuple_t_uint256t_uint256":{"entryPoint":240,"id":null,"parameterSlots":2,"returnSlots":2},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"checked_div_t_uint256":{"entryPoint":361,"id":null,"parameterSlots":2,"returnSlots":1},"checked_mul_t_uint256":{"entryPoint":296,"id":null,"parameterSlots":2,"returnSlots":1},"increment_t_uint256":{"entryPoint":381,"id":null,"parameterSlots":1,"returnSlots":1},"mod_t_uint256":{"entryPoint":341,"id":null,"parameterSlots":2,"returnSlots":1},"panic_error_0x11":{"entryPoint":274,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x12":{"entryPoint":319,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:1518:92","statements":[{"nodeType":"YulBlock","src":"6:3:92","statements":[]},{"body":{"nodeType":"YulBlock","src":"115:76:92","statements":[{"nodeType":"YulAssignment","src":"125:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"137:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"148:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"133:3:92"},"nodeType":"YulFunctionCall","src":"133:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"125:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"167:9:92"},{"name":"value0","nodeType":"YulIdentifier","src":"178:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"160:6:92"},"nodeType":"YulFunctionCall","src":"160:25:92"},"nodeType":"YulExpressionStatement","src":"160:25:92"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"84:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"95:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"106:4:92","type":""}],"src":"14:177:92"},{"body":{"nodeType":"YulBlock","src":"283:161:92","statements":[{"body":{"nodeType":"YulBlock","src":"329:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"338:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"341:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"331:6:92"},"nodeType":"YulFunctionCall","src":"331:12:92"},"nodeType":"YulExpressionStatement","src":"331:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"304:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"313:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"300:3:92"},"nodeType":"YulFunctionCall","src":"300:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"325:2:92","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"296:3:92"},"nodeType":"YulFunctionCall","src":"296:32:92"},"nodeType":"YulIf","src":"293:52:92"},{"nodeType":"YulAssignment","src":"354:33:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"377:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"364:12:92"},"nodeType":"YulFunctionCall","src":"364:23:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"354:6:92"}]},{"nodeType":"YulAssignment","src":"396:42:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"423:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"434:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"419:3:92"},"nodeType":"YulFunctionCall","src":"419:18:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"406:12:92"},"nodeType":"YulFunctionCall","src":"406:32:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"396:6:92"}]}]},"name":"abi_decode_tuple_t_uint256t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"241:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"252:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"264:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"272:6:92","type":""}],"src":"196:248:92"},{"body":{"nodeType":"YulBlock","src":"578:119:92","statements":[{"nodeType":"YulAssignment","src":"588:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"600:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"611:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"596:3:92"},"nodeType":"YulFunctionCall","src":"596:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"588:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"630:9:92"},{"name":"value0","nodeType":"YulIdentifier","src":"641:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"623:6:92"},"nodeType":"YulFunctionCall","src":"623:25:92"},"nodeType":"YulExpressionStatement","src":"623:25:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"668:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"679:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"664:3:92"},"nodeType":"YulFunctionCall","src":"664:18:92"},{"name":"value1","nodeType":"YulIdentifier","src":"684:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"657:6:92"},"nodeType":"YulFunctionCall","src":"657:34:92"},"nodeType":"YulExpressionStatement","src":"657:34:92"}]},"name":"abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"539:9:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"550:6:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"558:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"569:4:92","type":""}],"src":"449:248:92"},{"body":{"nodeType":"YulBlock","src":"734:95:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"751:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"758:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"763:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"754:3:92"},"nodeType":"YulFunctionCall","src":"754:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"744:6:92"},"nodeType":"YulFunctionCall","src":"744:31:92"},"nodeType":"YulExpressionStatement","src":"744:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"791:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"794:4:92","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"784:6:92"},"nodeType":"YulFunctionCall","src":"784:15:92"},"nodeType":"YulExpressionStatement","src":"784:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"815:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"818:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"808:6:92"},"nodeType":"YulFunctionCall","src":"808:15:92"},"nodeType":"YulExpressionStatement","src":"808:15:92"}]},"name":"panic_error_0x11","nodeType":"YulFunctionDefinition","src":"702:127:92"},{"body":{"nodeType":"YulBlock","src":"886:116:92","statements":[{"nodeType":"YulAssignment","src":"896:20:92","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"911:1:92"},{"name":"y","nodeType":"YulIdentifier","src":"914:1:92"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"907:3:92"},"nodeType":"YulFunctionCall","src":"907:9:92"},"variableNames":[{"name":"product","nodeType":"YulIdentifier","src":"896:7:92"}]},{"body":{"nodeType":"YulBlock","src":"974:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"976:16:92"},"nodeType":"YulFunctionCall","src":"976:18:92"},"nodeType":"YulExpressionStatement","src":"976:18:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"945:1:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"938:6:92"},"nodeType":"YulFunctionCall","src":"938:9:92"},{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"952:1:92"},{"arguments":[{"name":"product","nodeType":"YulIdentifier","src":"959:7:92"},{"name":"x","nodeType":"YulIdentifier","src":"968:1:92"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"955:3:92"},"nodeType":"YulFunctionCall","src":"955:15:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"949:2:92"},"nodeType":"YulFunctionCall","src":"949:22:92"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"935:2:92"},"nodeType":"YulFunctionCall","src":"935:37:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"928:6:92"},"nodeType":"YulFunctionCall","src":"928:45:92"},"nodeType":"YulIf","src":"925:71:92"}]},"name":"checked_mul_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"865:1:92","type":""},{"name":"y","nodeType":"YulTypedName","src":"868:1:92","type":""}],"returnVariables":[{"name":"product","nodeType":"YulTypedName","src":"874:7:92","type":""}],"src":"834:168:92"},{"body":{"nodeType":"YulBlock","src":"1039:95:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1056:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1063:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"1068:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1059:3:92"},"nodeType":"YulFunctionCall","src":"1059:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1049:6:92"},"nodeType":"YulFunctionCall","src":"1049:31:92"},"nodeType":"YulExpressionStatement","src":"1049:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1096:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"1099:4:92","type":"","value":"0x12"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1089:6:92"},"nodeType":"YulFunctionCall","src":"1089:15:92"},"nodeType":"YulExpressionStatement","src":"1089:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1120:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1123:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1113:6:92"},"nodeType":"YulFunctionCall","src":"1113:15:92"},"nodeType":"YulExpressionStatement","src":"1113:15:92"}]},"name":"panic_error_0x12","nodeType":"YulFunctionDefinition","src":"1007:127:92"},{"body":{"nodeType":"YulBlock","src":"1177:74:92","statements":[{"body":{"nodeType":"YulBlock","src":"1200:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x12","nodeType":"YulIdentifier","src":"1202:16:92"},"nodeType":"YulFunctionCall","src":"1202:18:92"},"nodeType":"YulExpressionStatement","src":"1202:18:92"}]},"condition":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"1197:1:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1190:6:92"},"nodeType":"YulFunctionCall","src":"1190:9:92"},"nodeType":"YulIf","src":"1187:35:92"},{"nodeType":"YulAssignment","src":"1231:14:92","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"1240:1:92"},{"name":"y","nodeType":"YulIdentifier","src":"1243:1:92"}],"functionName":{"name":"mod","nodeType":"YulIdentifier","src":"1236:3:92"},"nodeType":"YulFunctionCall","src":"1236:9:92"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"1231:1:92"}]}]},"name":"mod_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"1162:1:92","type":""},{"name":"y","nodeType":"YulTypedName","src":"1165:1:92","type":""}],"returnVariables":[{"name":"r","nodeType":"YulTypedName","src":"1171:1:92","type":""}],"src":"1139:112:92"},{"body":{"nodeType":"YulBlock","src":"1302:74:92","statements":[{"body":{"nodeType":"YulBlock","src":"1325:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x12","nodeType":"YulIdentifier","src":"1327:16:92"},"nodeType":"YulFunctionCall","src":"1327:18:92"},"nodeType":"YulExpressionStatement","src":"1327:18:92"}]},"condition":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"1322:1:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1315:6:92"},"nodeType":"YulFunctionCall","src":"1315:9:92"},"nodeType":"YulIf","src":"1312:35:92"},{"nodeType":"YulAssignment","src":"1356:14:92","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"1365:1:92"},{"name":"y","nodeType":"YulIdentifier","src":"1368:1:92"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"1361:3:92"},"nodeType":"YulFunctionCall","src":"1361:9:92"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"1356:1:92"}]}]},"name":"checked_div_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"1287:1:92","type":""},{"name":"y","nodeType":"YulTypedName","src":"1290:1:92","type":""}],"returnVariables":[{"name":"r","nodeType":"YulTypedName","src":"1296:1:92","type":""}],"src":"1256:120:92"},{"body":{"nodeType":"YulBlock","src":"1428:88:92","statements":[{"body":{"nodeType":"YulBlock","src":"1459:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"1461:16:92"},"nodeType":"YulFunctionCall","src":"1461:18:92"},"nodeType":"YulExpressionStatement","src":"1461:18:92"}]},"condition":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1444:5:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1455:1:92","type":"","value":"0"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"1451:3:92"},"nodeType":"YulFunctionCall","src":"1451:6:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1441:2:92"},"nodeType":"YulFunctionCall","src":"1441:17:92"},"nodeType":"YulIf","src":"1438:43:92"},{"nodeType":"YulAssignment","src":"1490:20:92","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1501:5:92"},{"kind":"number","nodeType":"YulLiteral","src":"1508:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1497:3:92"},"nodeType":"YulFunctionCall","src":"1497:13:92"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"1490:3:92"}]}]},"name":"increment_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1410:5:92","type":""}],"returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"1420:3:92","type":""}],"src":"1381:135:92"}]},"contents":"{\n { }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_decode_tuple_t_uint256t_uint256(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := calldataload(headStart)\n value1 := calldataload(add(headStart, 32))\n }\n function abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n mstore(headStart, value0)\n mstore(add(headStart, 32), value1)\n }\n function panic_error_0x11()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n function checked_mul_t_uint256(x, y) -> product\n {\n product := mul(x, y)\n if iszero(or(iszero(x), eq(y, div(product, x)))) { panic_error_0x11() }\n }\n function panic_error_0x12()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x12)\n revert(0, 0x24)\n }\n function mod_t_uint256(x, y) -> r\n {\n if iszero(y) { panic_error_0x12() }\n r := mod(x, y)\n }\n function checked_div_t_uint256(x, y) -> r\n {\n if iszero(y) { panic_error_0x12() }\n r := div(x, y)\n }\n function increment_t_uint256(value) -> ret\n {\n if eq(value, not(0)) { panic_error_0x11() }\n ret := add(value, 1)\n }\n}","id":92,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100365760003560e01c80633d9de6701461003b578063a027562014610052575b600080fd5b620f42405b60405190815260200160405180910390f35b6100406100603660046100f0565b600061006c8383610075565b90505b92915050565b6000620f42408211156100ab5760405163cc80c19560e01b8152620f424060048201526024810183905260440160405180910390fd5b6100b58284610128565b925060006100c6620f424085610155565b90506100d5620f424085610169565b915080156100e9576100e68261017d565b91505b5092915050565b6000806040838503121561010357600080fd5b50508035926020909101359150565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761006f5761006f610112565b634e487b7160e01b600052601260045260246000fd5b6000826101645761016461013f565b500690565b6000826101785761017861013f565b500490565b60006001820161018f5761018f610112565b506001019056fea164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x3D9DE670 EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0xA0275620 EQ PUSH2 0x52 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0xF4240 JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x40 PUSH2 0x60 CALLDATASIZE PUSH1 0x4 PUSH2 0xF0 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6C DUP4 DUP4 PUSH2 0x75 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0xF4240 DUP3 GT ISZERO PUSH2 0xAB JUMPI PUSH1 0x40 MLOAD PUSH4 0xCC80C195 PUSH1 0xE0 SHL DUP2 MSTORE PUSH3 0xF4240 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x44 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xB5 DUP3 DUP5 PUSH2 0x128 JUMP JUMPDEST SWAP3 POP PUSH1 0x0 PUSH2 0xC6 PUSH3 0xF4240 DUP6 PUSH2 0x155 JUMP JUMPDEST SWAP1 POP PUSH2 0xD5 PUSH3 0xF4240 DUP6 PUSH2 0x169 JUMP JUMPDEST SWAP2 POP DUP1 ISZERO PUSH2 0xE9 JUMPI PUSH2 0xE6 DUP3 PUSH2 0x17D JUMP JUMPDEST SWAP2 POP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x103 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP1 DUP3 MUL DUP2 ISZERO DUP3 DUP3 DIV DUP5 EQ OR PUSH2 0x6F JUMPI PUSH2 0x6F PUSH2 0x112 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x164 JUMPI PUSH2 0x164 PUSH2 0x13F JUMP JUMPDEST POP MOD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x178 JUMPI PUSH2 0x178 PUSH2 0x13F JUMP JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 ADD PUSH2 0x18F JUMPI PUSH2 0x18F PUSH2 0x112 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"256:266:62:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;281:88;215:7:87;281:88:62;;;160:25:92;;;148:2;133:18;281:88:62;;;;;;;375:145;;;;;;:::i;:::-;454:7;480:33;498:6;506;480:17;:33::i;:::-;473:40;;375:145;;;;;:::o;706:394:87:-;779:14;215:7;805:6;:19;801:102;;;843:53;;-1:-1:-1;;;843:53:87;;215:7;843:53;;;623:25:92;664:18;;;657:34;;;596:18;;843:53:87;;;;;;;801:102;918:15;927:6;918;:15;:::i;:::-;909:24;-1:-1:-1;939:17:87;959:19;215:7;909:24;959:19;:::i;:::-;939:39;-1:-1:-1;993:19:87;215:7;993:6;:19;:::i;:::-;984:28;-1:-1:-1;1057:14:87;;1053:45;;1083:8;;;:::i;:::-;;;1053:45;795:305;706:394;;;;:::o;196:248:92:-;264:6;272;325:2;313:9;304:7;300:23;296:32;293:52;;;341:1;338;331:12;293:52;-1:-1:-1;;364:23:92;;;434:2;419:18;;;406:32;;-1:-1:-1;196:248:92:o;702:127::-;763:10;758:3;754:20;751:1;744:31;794:4;791:1;784:15;818:4;815:1;808:15;834:168;907:9;;;938;;955:15;;;949:22;;935:37;925:71;;976:18;;:::i;1007:127::-;1068:10;1063:3;1059:20;1056:1;1049:31;1099:4;1096:1;1089:15;1123:4;1120:1;1113:15;1139:112;1171:1;1197;1187:35;;1202:18;;:::i;:::-;-1:-1:-1;1236:9:92;;1139:112::o;1256:120::-;1296:1;1322;1312:35;;1327:18;;:::i;:::-;-1:-1:-1;1361:9:92;;1256:120::o;1381:135::-;1420:3;1441:17;;;1438:43;;1461:18;;:::i;:::-;-1:-1:-1;1508:1:92;1497:13;;1381:135::o"},"gasEstimates":{"creation":{"codeDepositCost":"83800","executionCost":"135","totalCost":"83935"},"external":{"applyRatioCeiled(uint256,uint256)":"infinite","getRatioBase()":"147"}},"methodIdentifiers":{"applyRatioCeiled(uint256,uint256)":"a0275620","getRatioBase()":"3d9de670"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"actual\",\"type\":\"uint256\"}],\"name\":\"RatioOutOfBounds\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_ratio\",\"type\":\"uint256\"}],\"name\":\"applyRatioCeiled\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRatioBase\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"DO NOT USE IN PRODUCTION!\",\"errors\":{\"RatioOutOfBounds(uint256,uint256)\":[{\"params\":{\"actual\":\"The actual value.\",\"limit\":\"The maximal value.\"}}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"errors\":{\"RatioOutOfBounds(uint256,uint256)\":[{\"notice\":\"Thrown if a ratio value exceeds the maximal value of `10**6`.\"}]},\"kind\":\"user\",\"methods\":{},\"notice\":\"A mock contract containing functions manipulating bitmaps.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/mocks/utils/math/RatioMock.sol\":\"RatioMock\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"src/mocks/utils/math/RatioMock.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {RATIO_BASE, _applyRatioCeiled} from \\\"../../../utils/math/Ratio.sol\\\";\\n\\n/// @notice A mock contract containing functions manipulating bitmaps.\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract RatioMock {\\n function getRatioBase() public pure returns (uint256) {\\n return RATIO_BASE;\\n }\\n\\n function applyRatioCeiled(uint256 _value, uint256 _ratio) public pure returns (uint256) {\\n return _applyRatioCeiled(_value, _ratio);\\n }\\n}\\n\",\"keccak256\":\"0x2d940d4529805864a62b7b4488564adbb180947ec9c36b14ca34640da5f81d8a\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/math/Ratio.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n// The base value to encode real-valued ratios on the interval `[0,1]` as integers on the interval `[0, 10**6]`.\\nuint256 constant RATIO_BASE = 10 ** 6;\\n\\n/// @notice Thrown if a ratio value exceeds the maximal value of `10**6`.\\n/// @param limit The maximal value.\\n/// @param actual The actual value.\\nerror RatioOutOfBounds(uint256 limit, uint256 actual);\\n\\n/// @notice Applies a ratio to a value and ceils the remainder.\\n/// @param _value The value to which the ratio is applied.\\n/// @param _ratio The ratio that must be in the interval `[0, 10**6]`.\\n/// @return result The resulting value.\\n/// @custom:security-contact sirt@aragon.org\\nfunction _applyRatioCeiled(uint256 _value, uint256 _ratio) pure returns (uint256 result) {\\n if (_ratio > RATIO_BASE) {\\n revert RatioOutOfBounds({limit: RATIO_BASE, actual: _ratio});\\n }\\n\\n _value = _value * _ratio;\\n uint256 remainder = _value % RATIO_BASE;\\n result = _value / RATIO_BASE;\\n\\n // Check if ceiling is needed\\n if (remainder != 0) {\\n ++result;\\n }\\n}\\n\",\"keccak256\":\"0xf7c1e2192bacde5f81da2d8474fd7836f93511c97515611436b7795a3c7999bb\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"errors":{"RatioOutOfBounds(uint256,uint256)":[{"notice":"Thrown if a ratio value exceeds the maximal value of `10**6`."}]},"kind":"user","methods":{},"notice":"A mock contract containing functions manipulating bitmaps.","version":1}}},"src/mocks/utils/versioning/ProtocolVersionMock.sol":{"ProtocolVersionMock":{"abi":[{"inputs":[],"name":"protocolVersion","outputs":[{"internalType":"uint8[3]","name":"","type":"uint8[3]"}],"stateMutability":"pure","type":"function"}],"devdoc":{"details":"DO NOT USE IN PRODUCTION!","kind":"dev","methods":{"protocolVersion()":{"details":"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.","returns":{"_0":"Returns the semantic Aragon OSx protocol version number."}}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b5060cc8061001f6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c80632ae9c60014602d575b600080fd5b60336047565b604051603e9190608d565b60405180910390f35b604d606f565b5060408051606081018252600181526004602082015260009181019190915290565b60405180606001604052806003906020820280368337509192915050565b60608101818360005b600381101560b657815160ff168352602092830192909101906001016096565b5050509291505056fea164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xCC DUP1 PUSH2 0x1F PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x28 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x2AE9C600 EQ PUSH1 0x2D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x33 PUSH1 0x47 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x3E SWAP2 SWAP1 PUSH1 0x8D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x4D PUSH1 0x6F JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH1 0xB6 JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH1 0x96 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"303:52:63:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@protocolVersion_14765":{"entryPoint":71,"id":14765,"parameterSlots":0,"returnSlots":1},"abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed":{"entryPoint":141,"id":null,"parameterSlots":2,"returnSlots":1}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:517:92","statements":[{"nodeType":"YulBlock","src":"6:3:92","statements":[]},{"body":{"nodeType":"YulBlock","src":"157:358:92","statements":[{"nodeType":"YulAssignment","src":"167:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"179:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"190:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"175:3:92"},"nodeType":"YulFunctionCall","src":"175:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"167:4:92"}]},{"nodeType":"YulVariableDeclaration","src":"202:20:92","value":{"name":"headStart","nodeType":"YulIdentifier","src":"213:9:92"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"206:3:92","type":""}]},{"nodeType":"YulAssignment","src":"231:16:92","value":{"name":"headStart","nodeType":"YulIdentifier","src":"238:9:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"231:3:92"}]},{"nodeType":"YulVariableDeclaration","src":"256:20:92","value":{"name":"value0","nodeType":"YulIdentifier","src":"270:6:92"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"260:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"285:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"294:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"289:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"351:158:92","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"372:3:92"},{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"387:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"381:5:92"},"nodeType":"YulFunctionCall","src":"381:13:92"},{"kind":"number","nodeType":"YulLiteral","src":"396:4:92","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"377:3:92"},"nodeType":"YulFunctionCall","src":"377:24:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"365:6:92"},"nodeType":"YulFunctionCall","src":"365:37:92"},"nodeType":"YulExpressionStatement","src":"365:37:92"},{"nodeType":"YulVariableDeclaration","src":"415:14:92","value":{"kind":"number","nodeType":"YulLiteral","src":"425:4:92","type":"","value":"0x20"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"419:2:92","type":""}]},{"nodeType":"YulAssignment","src":"442:19:92","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"453:3:92"},{"name":"_1","nodeType":"YulIdentifier","src":"458:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"449:3:92"},"nodeType":"YulFunctionCall","src":"449:12:92"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"442:3:92"}]},{"nodeType":"YulAssignment","src":"474:25:92","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"488:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"496:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"484:3:92"},"nodeType":"YulFunctionCall","src":"484:15:92"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"474:6:92"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"315:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"318:4:92","type":"","value":"0x03"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"312:2:92"},"nodeType":"YulFunctionCall","src":"312:11:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"324:18:92","statements":[{"nodeType":"YulAssignment","src":"326:14:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"335:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"338:1:92","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"331:3:92"},"nodeType":"YulFunctionCall","src":"331:9:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"326:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"308:3:92","statements":[]},"src":"304:205:92"}]},"name":"abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"126:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"137:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"148:4:92","type":""}],"src":"14:501:92"}]},"contents":"{\n { }\n function abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 96)\n let pos := headStart\n pos := headStart\n let srcPtr := value0\n let i := 0\n for { } lt(i, 0x03) { i := add(i, 1) }\n {\n mstore(pos, and(mload(srcPtr), 0xff))\n let _1 := 0x20\n pos := add(pos, _1)\n srcPtr := add(srcPtr, _1)\n }\n }\n}","id":92,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"6080604052348015600f57600080fd5b506004361060285760003560e01c80632ae9c60014602d575b600080fd5b60336047565b604051603e9190608d565b60405180910390f35b604d606f565b5060408051606081018252600181526004602082015260009181019190915290565b60405180606001604052806003906020820280368337509192915050565b60608101818360005b600381101560b657815160ff168352602092830192909101906001016096565b5050509291505056fea164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x28 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x2AE9C600 EQ PUSH1 0x2D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x33 PUSH1 0x47 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x3E SWAP2 SWAP1 PUSH1 0x8D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x4D PUSH1 0x6F JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH1 0xB6 JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH1 0x96 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"303:52:63:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;631:98:90;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;679:15;;:::i;:::-;-1:-1:-1;706:16:90;;;;;;;;714:1;706:16;;717:1;706:16;;;;-1:-1:-1;706:16:90;;;;;;;;631:98::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:501:92:-;190:2;175:18;;179:9;270:6;148:4;304:205;318:4;315:1;312:11;304:205;;;381:13;;396:4;377:24;365:37;;425:4;449:12;;;;484:15;;;;338:1;331:9;304:205;;;308:3;;;14:501;;;;:::o"},"gasEstimates":{"creation":{"codeDepositCost":"40800","executionCost":"93","totalCost":"40893"},"external":{"protocolVersion()":"infinite"}},"methodIdentifiers":{"protocolVersion()":"2ae9c600"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"protocolVersion\",\"outputs\":[{\"internalType\":\"uint8[3]\",\"name\":\"\",\"type\":\"uint8[3]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"DO NOT USE IN PRODUCTION!\",\"kind\":\"dev\",\"methods\":{\"protocolVersion()\":{\"details\":\"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\",\"returns\":{\"_0\":\"Returns the semantic Aragon OSx protocol version number.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"protocolVersion()\":{\"notice\":\"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\"}},\"notice\":\"A mock contract returning the OSx protocol version number.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/mocks/utils/versioning/ProtocolVersionMock.sol\":\"ProtocolVersionMock\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"src/mocks/utils/versioning/ProtocolVersionMock.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ProtocolVersion} from \\\"../../../utils/versioning/ProtocolVersion.sol\\\";\\n\\n/// @notice A mock contract returning the OSx protocol version number.\\n/// @dev DO NOT USE IN PRODUCTION!\\n// solhint-disable-next-line no-empty-blocks\\ncontract ProtocolVersionMock is ProtocolVersion {\\n\\n}\\n\",\"keccak256\":\"0xbc4700a0f9fe7aca222c373791f5db98ea73c0d11d5354a4f2b1eddae178848a\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/IProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IProtocolVersion\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the semantic Aragon OSx protocol version number.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IProtocolVersion {\\n /// @notice Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\\n /// @return _version Returns the semantic Aragon OSx protocol version number.\\n /// @dev This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\\n function protocolVersion() external view returns (uint8[3] memory _version);\\n}\\n\",\"keccak256\":\"0x00a4da654d21dc1bdadbdc8bd54bb86c378c56f85e461ccc31303628ea621361\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/ProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IProtocolVersion} from \\\"./IProtocolVersion.sol\\\";\\n\\n/// @title ProtocolVersion\\n/// @author Aragon X - 2023\\n/// @notice An abstract, stateless, non-upgradeable contract providing the current Aragon OSx protocol version number.\\n/// @dev Do not add any new variables to this contract that would shift down storage in the inheritance chain.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract ProtocolVersion is IProtocolVersion {\\n // IMPORTANT: Do not add any storage variable, see the above notice.\\n\\n /// @inheritdoc IProtocolVersion\\n function protocolVersion() public pure returns (uint8[3] memory) {\\n return [1, 4, 0];\\n }\\n}\\n\",\"keccak256\":\"0x3975c937be935f687c6b6b8f379071232681e98cf04b175d72781b819ea52bdb\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{"protocolVersion()":{"notice":"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with."}},"notice":"A mock contract returning the OSx protocol version number.","version":1}}},"src/mocks/utils/versioning/VersionComparisonLibMock.sol":{"VersionComparisonLibMock":{"abi":[{"inputs":[{"internalType":"uint8[3]","name":"lhs","type":"uint8[3]"},{"internalType":"uint8[3]","name":"rhs","type":"uint8[3]"}],"name":"eq","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint8[3]","name":"lhs","type":"uint8[3]"},{"internalType":"uint8[3]","name":"rhs","type":"uint8[3]"}],"name":"gt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint8[3]","name":"lhs","type":"uint8[3]"},{"internalType":"uint8[3]","name":"rhs","type":"uint8[3]"}],"name":"gte","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint8[3]","name":"lhs","type":"uint8[3]"},{"internalType":"uint8[3]","name":"rhs","type":"uint8[3]"}],"name":"lt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint8[3]","name":"lhs","type":"uint8[3]"},{"internalType":"uint8[3]","name":"rhs","type":"uint8[3]"}],"name":"lte","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint8[3]","name":"lhs","type":"uint8[3]"},{"internalType":"uint8[3]","name":"rhs","type":"uint8[3]"}],"name":"neq","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"}],"devdoc":{"details":"DO NOT USE IN PRODUCTION!","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b5061052f806100206000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c80639fdb5746116100505780639fdb5746146100c4578063d343ec1b146100d7578063f92e9bb1146100ea57600080fd5b80632198ac8d14610077578063668a90f61461009e57806396b38697146100b1575b600080fd5b61008a6100853660046104ed565b6100fd565b604051901515815260200160405180910390f35b61008a6100ac3660046104ed565b610112565b61008a6100bf3660046104ed565b61011e565b61008a6100d23660046104ed565b61012a565b61008a6100e53660046104ed565b610136565b61008a6100f83660046104ed565b610142565b6000610109838361014e565b90505b92915050565b600061010983836101e8565b6000610109838361027a565b6000610109838361030c565b6000610109838361039d565b600061010983836103f4565b8051825160009160ff9081169116101561016a5750600161010c565b8151835160ff918216911611156101835750600061010c565b6020808301519084015160ff918216911610156101a25750600161010c565b6020808301519084015160ff918216911611156101c15750600061010c565b6040808301519084015160ff9182169116116101df5750600161010c565b50600092915050565b8051825160009160ff908116911610156102045750600161010c565b8151835160ff9182169116111561021d5750600061010c565b6020808301519084015160ff9182169116101561023c5750600161010c565b6020808301519084015160ff9182169116111561025b5750600061010c565b6040808301519084015160ff918216911610156101df5750600161010c565b8051825160009160ff908116911611156102965750600161010c565b8151835160ff918216911610156102af5750600061010c565b6020808301519084015160ff918216911611156102ce5750600161010c565b6020808301519084015160ff918216911610156102ed5750600061010c565b6040808301519084015160ff918216911611156101df5750600161010c565b8051825160009160ff908116911611156103285750600161010c565b8151835160ff918216911610156103415750600061010c565b6020808301519084015160ff918216911611156103605750600161010c565b6020808301519084015160ff9182169116101561037f5750600061010c565b6040808301519084015160ff9182169116106101df5750600161010c565b8051825160009160ff9182169116146103b85750600161010c565b6020808301519084015160ff9081169116146103d65750600161010c565b6040808301519084015160ff9081169116146101df5750600161010c565b8051825160009160ff91821691161461040f5750600061010c565b6020808301519084015160ff90811691161461042d5750600061010c565b6040808301519084015160ff90811691161461044b5750600061010c565b50600192915050565b803560ff8116811461046557600080fd5b919050565b600082601f83011261047b57600080fd5b6040516060810181811067ffffffffffffffff821117156104ac57634e487b7160e01b600052604160045260246000fd5b6040528060608401858111156104c157600080fd5b845b818110156104e2576104d481610454565b8352602092830192016104c3565b509195945050505050565b60008060c0838503121561050057600080fd5b61050a848461046a565b9150610519846060850161046a565b9050925092905056fea164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x52F DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x72 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9FDB5746 GT PUSH2 0x50 JUMPI DUP1 PUSH4 0x9FDB5746 EQ PUSH2 0xC4 JUMPI DUP1 PUSH4 0xD343EC1B EQ PUSH2 0xD7 JUMPI DUP1 PUSH4 0xF92E9BB1 EQ PUSH2 0xEA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x2198AC8D EQ PUSH2 0x77 JUMPI DUP1 PUSH4 0x668A90F6 EQ PUSH2 0x9E JUMPI DUP1 PUSH4 0x96B38697 EQ PUSH2 0xB1 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8A PUSH2 0x85 CALLDATASIZE PUSH1 0x4 PUSH2 0x4ED JUMP JUMPDEST PUSH2 0xFD JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x8A PUSH2 0xAC CALLDATASIZE PUSH1 0x4 PUSH2 0x4ED JUMP JUMPDEST PUSH2 0x112 JUMP JUMPDEST PUSH2 0x8A PUSH2 0xBF CALLDATASIZE PUSH1 0x4 PUSH2 0x4ED JUMP JUMPDEST PUSH2 0x11E JUMP JUMPDEST PUSH2 0x8A PUSH2 0xD2 CALLDATASIZE PUSH1 0x4 PUSH2 0x4ED JUMP JUMPDEST PUSH2 0x12A JUMP JUMPDEST PUSH2 0x8A PUSH2 0xE5 CALLDATASIZE PUSH1 0x4 PUSH2 0x4ED JUMP JUMPDEST PUSH2 0x136 JUMP JUMPDEST PUSH2 0x8A PUSH2 0xF8 CALLDATASIZE PUSH1 0x4 PUSH2 0x4ED JUMP JUMPDEST PUSH2 0x142 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x109 DUP4 DUP4 PUSH2 0x14E JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x109 DUP4 DUP4 PUSH2 0x1E8 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x109 DUP4 DUP4 PUSH2 0x27A JUMP JUMPDEST PUSH1 0x0 PUSH2 0x109 DUP4 DUP4 PUSH2 0x30C JUMP JUMPDEST PUSH1 0x0 PUSH2 0x109 DUP4 DUP4 PUSH2 0x39D JUMP JUMPDEST PUSH1 0x0 PUSH2 0x109 DUP4 DUP4 PUSH2 0x3F4 JUMP JUMPDEST DUP1 MLOAD DUP3 MLOAD PUSH1 0x0 SWAP2 PUSH1 0xFF SWAP1 DUP2 AND SWAP2 AND LT ISZERO PUSH2 0x16A JUMPI POP PUSH1 0x1 PUSH2 0x10C JUMP JUMPDEST DUP2 MLOAD DUP4 MLOAD PUSH1 0xFF SWAP2 DUP3 AND SWAP2 AND GT ISZERO PUSH2 0x183 JUMPI POP PUSH1 0x0 PUSH2 0x10C JUMP JUMPDEST PUSH1 0x20 DUP1 DUP4 ADD MLOAD SWAP1 DUP5 ADD MLOAD PUSH1 0xFF SWAP2 DUP3 AND SWAP2 AND LT ISZERO PUSH2 0x1A2 JUMPI POP PUSH1 0x1 PUSH2 0x10C JUMP JUMPDEST PUSH1 0x20 DUP1 DUP4 ADD MLOAD SWAP1 DUP5 ADD MLOAD PUSH1 0xFF SWAP2 DUP3 AND SWAP2 AND GT ISZERO PUSH2 0x1C1 JUMPI POP PUSH1 0x0 PUSH2 0x10C JUMP JUMPDEST PUSH1 0x40 DUP1 DUP4 ADD MLOAD SWAP1 DUP5 ADD MLOAD PUSH1 0xFF SWAP2 DUP3 AND SWAP2 AND GT PUSH2 0x1DF JUMPI POP PUSH1 0x1 PUSH2 0x10C JUMP JUMPDEST POP PUSH1 0x0 SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD DUP3 MLOAD PUSH1 0x0 SWAP2 PUSH1 0xFF SWAP1 DUP2 AND SWAP2 AND LT ISZERO PUSH2 0x204 JUMPI POP PUSH1 0x1 PUSH2 0x10C JUMP JUMPDEST DUP2 MLOAD DUP4 MLOAD PUSH1 0xFF SWAP2 DUP3 AND SWAP2 AND GT ISZERO PUSH2 0x21D JUMPI POP PUSH1 0x0 PUSH2 0x10C JUMP JUMPDEST PUSH1 0x20 DUP1 DUP4 ADD MLOAD SWAP1 DUP5 ADD MLOAD PUSH1 0xFF SWAP2 DUP3 AND SWAP2 AND LT ISZERO PUSH2 0x23C JUMPI POP PUSH1 0x1 PUSH2 0x10C JUMP JUMPDEST PUSH1 0x20 DUP1 DUP4 ADD MLOAD SWAP1 DUP5 ADD MLOAD PUSH1 0xFF SWAP2 DUP3 AND SWAP2 AND GT ISZERO PUSH2 0x25B JUMPI POP PUSH1 0x0 PUSH2 0x10C JUMP JUMPDEST PUSH1 0x40 DUP1 DUP4 ADD MLOAD SWAP1 DUP5 ADD MLOAD PUSH1 0xFF SWAP2 DUP3 AND SWAP2 AND LT ISZERO PUSH2 0x1DF JUMPI POP PUSH1 0x1 PUSH2 0x10C JUMP JUMPDEST DUP1 MLOAD DUP3 MLOAD PUSH1 0x0 SWAP2 PUSH1 0xFF SWAP1 DUP2 AND SWAP2 AND GT ISZERO PUSH2 0x296 JUMPI POP PUSH1 0x1 PUSH2 0x10C JUMP JUMPDEST DUP2 MLOAD DUP4 MLOAD PUSH1 0xFF SWAP2 DUP3 AND SWAP2 AND LT ISZERO PUSH2 0x2AF JUMPI POP PUSH1 0x0 PUSH2 0x10C JUMP JUMPDEST PUSH1 0x20 DUP1 DUP4 ADD MLOAD SWAP1 DUP5 ADD MLOAD PUSH1 0xFF SWAP2 DUP3 AND SWAP2 AND GT ISZERO PUSH2 0x2CE JUMPI POP PUSH1 0x1 PUSH2 0x10C JUMP JUMPDEST PUSH1 0x20 DUP1 DUP4 ADD MLOAD SWAP1 DUP5 ADD MLOAD PUSH1 0xFF SWAP2 DUP3 AND SWAP2 AND LT ISZERO PUSH2 0x2ED JUMPI POP PUSH1 0x0 PUSH2 0x10C JUMP JUMPDEST PUSH1 0x40 DUP1 DUP4 ADD MLOAD SWAP1 DUP5 ADD MLOAD PUSH1 0xFF SWAP2 DUP3 AND SWAP2 AND GT ISZERO PUSH2 0x1DF JUMPI POP PUSH1 0x1 PUSH2 0x10C JUMP JUMPDEST DUP1 MLOAD DUP3 MLOAD PUSH1 0x0 SWAP2 PUSH1 0xFF SWAP1 DUP2 AND SWAP2 AND GT ISZERO PUSH2 0x328 JUMPI POP PUSH1 0x1 PUSH2 0x10C JUMP JUMPDEST DUP2 MLOAD DUP4 MLOAD PUSH1 0xFF SWAP2 DUP3 AND SWAP2 AND LT ISZERO PUSH2 0x341 JUMPI POP PUSH1 0x0 PUSH2 0x10C JUMP JUMPDEST PUSH1 0x20 DUP1 DUP4 ADD MLOAD SWAP1 DUP5 ADD MLOAD PUSH1 0xFF SWAP2 DUP3 AND SWAP2 AND GT ISZERO PUSH2 0x360 JUMPI POP PUSH1 0x1 PUSH2 0x10C JUMP JUMPDEST PUSH1 0x20 DUP1 DUP4 ADD MLOAD SWAP1 DUP5 ADD MLOAD PUSH1 0xFF SWAP2 DUP3 AND SWAP2 AND LT ISZERO PUSH2 0x37F JUMPI POP PUSH1 0x0 PUSH2 0x10C JUMP JUMPDEST PUSH1 0x40 DUP1 DUP4 ADD MLOAD SWAP1 DUP5 ADD MLOAD PUSH1 0xFF SWAP2 DUP3 AND SWAP2 AND LT PUSH2 0x1DF JUMPI POP PUSH1 0x1 PUSH2 0x10C JUMP JUMPDEST DUP1 MLOAD DUP3 MLOAD PUSH1 0x0 SWAP2 PUSH1 0xFF SWAP2 DUP3 AND SWAP2 AND EQ PUSH2 0x3B8 JUMPI POP PUSH1 0x1 PUSH2 0x10C JUMP JUMPDEST PUSH1 0x20 DUP1 DUP4 ADD MLOAD SWAP1 DUP5 ADD MLOAD PUSH1 0xFF SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x3D6 JUMPI POP PUSH1 0x1 PUSH2 0x10C JUMP JUMPDEST PUSH1 0x40 DUP1 DUP4 ADD MLOAD SWAP1 DUP5 ADD MLOAD PUSH1 0xFF SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x1DF JUMPI POP PUSH1 0x1 PUSH2 0x10C JUMP JUMPDEST DUP1 MLOAD DUP3 MLOAD PUSH1 0x0 SWAP2 PUSH1 0xFF SWAP2 DUP3 AND SWAP2 AND EQ PUSH2 0x40F JUMPI POP PUSH1 0x0 PUSH2 0x10C JUMP JUMPDEST PUSH1 0x20 DUP1 DUP4 ADD MLOAD SWAP1 DUP5 ADD MLOAD PUSH1 0xFF SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x42D JUMPI POP PUSH1 0x0 PUSH2 0x10C JUMP JUMPDEST PUSH1 0x40 DUP1 DUP4 ADD MLOAD SWAP1 DUP5 ADD MLOAD PUSH1 0xFF SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x44B JUMPI POP PUSH1 0x0 PUSH2 0x10C JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x465 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x47B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x60 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x4AC JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP5 ADD DUP6 DUP2 GT ISZERO PUSH2 0x4C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x4E2 JUMPI PUSH2 0x4D4 DUP2 PUSH2 0x454 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 ADD PUSH2 0x4C3 JUMP JUMPDEST POP SWAP2 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0xC0 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x500 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x50A DUP5 DUP5 PUSH2 0x46A JUMP JUMPDEST SWAP2 POP PUSH2 0x519 DUP5 PUSH1 0x60 DUP6 ADD PUSH2 0x46A JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"283:820:64:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@eq_12907":{"entryPoint":322,"id":12907,"parameterSlots":2,"returnSlots":1},"@eq_14816":{"entryPoint":1012,"id":14816,"parameterSlots":2,"returnSlots":1},"@gt_12983":{"entryPoint":286,"id":12983,"parameterSlots":2,"returnSlots":1},"@gt_15064":{"entryPoint":634,"id":15064,"parameterSlots":2,"returnSlots":1},"@gte_13002":{"entryPoint":298,"id":13002,"parameterSlots":2,"returnSlots":1},"@gte_15131":{"entryPoint":780,"id":15131,"parameterSlots":2,"returnSlots":1},"@lt_12945":{"entryPoint":274,"id":12945,"parameterSlots":2,"returnSlots":1},"@lt_14930":{"entryPoint":488,"id":14930,"parameterSlots":2,"returnSlots":1},"@lte_12964":{"entryPoint":253,"id":12964,"parameterSlots":2,"returnSlots":1},"@lte_14997":{"entryPoint":334,"id":14997,"parameterSlots":2,"returnSlots":1},"@neq_12926":{"entryPoint":310,"id":12926,"parameterSlots":2,"returnSlots":1},"@neq_14863":{"entryPoint":925,"id":14863,"parameterSlots":2,"returnSlots":1},"abi_decode_array_uint8":{"entryPoint":1130,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_array$_t_uint8_$3_memory_ptrt_array$_t_uint8_$3_memory_ptr":{"entryPoint":1261,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_uint8":{"entryPoint":1108,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"panic_error_0x32":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:1580:92","statements":[{"nodeType":"YulBlock","src":"6:3:92","statements":[]},{"body":{"nodeType":"YulBlock","src":"61:109:92","statements":[{"nodeType":"YulAssignment","src":"71:29:92","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"93:6:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"80:12:92"},"nodeType":"YulFunctionCall","src":"80:20:92"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"71:5:92"}]},{"body":{"nodeType":"YulBlock","src":"148:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"157:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"160:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"150:6:92"},"nodeType":"YulFunctionCall","src":"150:12:92"},"nodeType":"YulExpressionStatement","src":"150:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"122:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"133:5:92"},{"kind":"number","nodeType":"YulLiteral","src":"140:4:92","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"129:3:92"},"nodeType":"YulFunctionCall","src":"129:16:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"119:2:92"},"nodeType":"YulFunctionCall","src":"119:27:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"112:6:92"},"nodeType":"YulFunctionCall","src":"112:35:92"},"nodeType":"YulIf","src":"109:55:92"}]},"name":"abi_decode_uint8","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"40:6:92","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"51:5:92","type":""}],"src":"14:156:92"},{"body":{"nodeType":"YulBlock","src":"233:687:92","statements":[{"body":{"nodeType":"YulBlock","src":"282:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"291:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"294:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"284:6:92"},"nodeType":"YulFunctionCall","src":"284:12:92"},"nodeType":"YulExpressionStatement","src":"284:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"261:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"269:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"257:3:92"},"nodeType":"YulFunctionCall","src":"257:17:92"},{"name":"end","nodeType":"YulIdentifier","src":"276:3:92"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"253:3:92"},"nodeType":"YulFunctionCall","src":"253:27:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"246:6:92"},"nodeType":"YulFunctionCall","src":"246:35:92"},"nodeType":"YulIf","src":"243:55:92"},{"nodeType":"YulVariableDeclaration","src":"307:23:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"327:2:92","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"321:5:92"},"nodeType":"YulFunctionCall","src":"321:9:92"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"311:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"339:33:92","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"361:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"369:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"357:3:92"},"nodeType":"YulFunctionCall","src":"357:15:92"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"343:10:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"455:111:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"476:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"483:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"488:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"479:3:92"},"nodeType":"YulFunctionCall","src":"479:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"469:6:92"},"nodeType":"YulFunctionCall","src":"469:31:92"},"nodeType":"YulExpressionStatement","src":"469:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"520:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"523:4:92","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"513:6:92"},"nodeType":"YulFunctionCall","src":"513:15:92"},"nodeType":"YulExpressionStatement","src":"513:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"548:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"551:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"541:6:92"},"nodeType":"YulFunctionCall","src":"541:15:92"},"nodeType":"YulExpressionStatement","src":"541:15:92"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"390:10:92"},{"kind":"number","nodeType":"YulLiteral","src":"402:18:92","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"387:2:92"},"nodeType":"YulFunctionCall","src":"387:34:92"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"426:10:92"},{"name":"memPtr","nodeType":"YulIdentifier","src":"438:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"423:2:92"},"nodeType":"YulFunctionCall","src":"423:22:92"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"384:2:92"},"nodeType":"YulFunctionCall","src":"384:62:92"},"nodeType":"YulIf","src":"381:185:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"582:2:92","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"586:10:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"575:6:92"},"nodeType":"YulFunctionCall","src":"575:22:92"},"nodeType":"YulExpressionStatement","src":"575:22:92"},{"nodeType":"YulVariableDeclaration","src":"606:17:92","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"617:6:92"},"variables":[{"name":"dst","nodeType":"YulTypedName","src":"610:3:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"632:29:92","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"650:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"658:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"646:3:92"},"nodeType":"YulFunctionCall","src":"646:15:92"},"variables":[{"name":"srcEnd","nodeType":"YulTypedName","src":"636:6:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"689:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"698:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"701:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"691:6:92"},"nodeType":"YulFunctionCall","src":"691:12:92"},"nodeType":"YulExpressionStatement","src":"691:12:92"}]},"condition":{"arguments":[{"name":"srcEnd","nodeType":"YulIdentifier","src":"676:6:92"},{"name":"end","nodeType":"YulIdentifier","src":"684:3:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"673:2:92"},"nodeType":"YulFunctionCall","src":"673:15:92"},"nodeType":"YulIf","src":"670:35:92"},{"nodeType":"YulVariableDeclaration","src":"714:17:92","value":{"name":"offset","nodeType":"YulIdentifier","src":"725:6:92"},"variables":[{"name":"src","nodeType":"YulTypedName","src":"718:3:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"798:92:92","statements":[{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"819:3:92"},{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"841:3:92"}],"functionName":{"name":"abi_decode_uint8","nodeType":"YulIdentifier","src":"824:16:92"},"nodeType":"YulFunctionCall","src":"824:21:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"812:6:92"},"nodeType":"YulFunctionCall","src":"812:34:92"},"nodeType":"YulExpressionStatement","src":"812:34:92"},{"nodeType":"YulAssignment","src":"859:21:92","value":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"870:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"875:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"866:3:92"},"nodeType":"YulFunctionCall","src":"866:14:92"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"859:3:92"}]}]},"condition":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"751:3:92"},{"name":"srcEnd","nodeType":"YulIdentifier","src":"756:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"748:2:92"},"nodeType":"YulFunctionCall","src":"748:15:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"764:25:92","statements":[{"nodeType":"YulAssignment","src":"766:21:92","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"777:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"782:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"773:3:92"},"nodeType":"YulFunctionCall","src":"773:14:92"},"variableNames":[{"name":"src","nodeType":"YulIdentifier","src":"766:3:92"}]}]},"pre":{"nodeType":"YulBlock","src":"744:3:92","statements":[]},"src":"740:150:92"},{"nodeType":"YulAssignment","src":"899:15:92","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"908:6:92"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"899:5:92"}]}]},"name":"abi_decode_array_uint8","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"207:6:92","type":""},{"name":"end","nodeType":"YulTypedName","src":"215:3:92","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"223:5:92","type":""}],"src":"175:745:92"},{"body":{"nodeType":"YulBlock","src":"1054:200:92","statements":[{"body":{"nodeType":"YulBlock","src":"1101:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1110:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1113:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1103:6:92"},"nodeType":"YulFunctionCall","src":"1103:12:92"},"nodeType":"YulExpressionStatement","src":"1103:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1075:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"1084:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1071:3:92"},"nodeType":"YulFunctionCall","src":"1071:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"1096:3:92","type":"","value":"192"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1067:3:92"},"nodeType":"YulFunctionCall","src":"1067:33:92"},"nodeType":"YulIf","src":"1064:53:92"},{"nodeType":"YulAssignment","src":"1126:52:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1159:9:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1170:7:92"}],"functionName":{"name":"abi_decode_array_uint8","nodeType":"YulIdentifier","src":"1136:22:92"},"nodeType":"YulFunctionCall","src":"1136:42:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1126:6:92"}]},{"nodeType":"YulAssignment","src":"1187:61:92","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1224:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1235:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1220:3:92"},"nodeType":"YulFunctionCall","src":"1220:18:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1240:7:92"}],"functionName":{"name":"abi_decode_array_uint8","nodeType":"YulIdentifier","src":"1197:22:92"},"nodeType":"YulFunctionCall","src":"1197:51:92"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1187:6:92"}]}]},"name":"abi_decode_tuple_t_array$_t_uint8_$3_memory_ptrt_array$_t_uint8_$3_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1012:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1023:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1035:6:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1043:6:92","type":""}],"src":"925:329:92"},{"body":{"nodeType":"YulBlock","src":"1354:92:92","statements":[{"nodeType":"YulAssignment","src":"1364:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1376:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1387:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1372:3:92"},"nodeType":"YulFunctionCall","src":"1372:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1364:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1406:9:92"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1431:6:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1424:6:92"},"nodeType":"YulFunctionCall","src":"1424:14:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1417:6:92"},"nodeType":"YulFunctionCall","src":"1417:22:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1399:6:92"},"nodeType":"YulFunctionCall","src":"1399:41:92"},"nodeType":"YulExpressionStatement","src":"1399:41:92"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1323:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1334:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1345:4:92","type":""}],"src":"1259:187:92"},{"body":{"nodeType":"YulBlock","src":"1483:95:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1500:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1507:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"1512:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1503:3:92"},"nodeType":"YulFunctionCall","src":"1503:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1493:6:92"},"nodeType":"YulFunctionCall","src":"1493:31:92"},"nodeType":"YulExpressionStatement","src":"1493:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1540:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"1543:4:92","type":"","value":"0x32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1533:6:92"},"nodeType":"YulFunctionCall","src":"1533:15:92"},"nodeType":"YulExpressionStatement","src":"1533:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1564:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1567:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1557:6:92"},"nodeType":"YulFunctionCall","src":"1557:15:92"},"nodeType":"YulExpressionStatement","src":"1557:15:92"}]},"name":"panic_error_0x32","nodeType":"YulFunctionDefinition","src":"1451:127:92"}]},"contents":"{\n { }\n function abi_decode_uint8(offset) -> value\n {\n value := calldataload(offset)\n if iszero(eq(value, and(value, 0xff))) { revert(0, 0) }\n }\n function abi_decode_array_uint8(offset, end) -> array\n {\n if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n let memPtr := mload(64)\n let newFreePtr := add(memPtr, 96)\n if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n mstore(64, newFreePtr)\n let dst := memPtr\n let srcEnd := add(offset, 96)\n if gt(srcEnd, end) { revert(0, 0) }\n let src := offset\n for { } lt(src, srcEnd) { src := add(src, 0x20) }\n {\n mstore(dst, abi_decode_uint8(src))\n dst := add(dst, 0x20)\n }\n array := memPtr\n }\n function abi_decode_tuple_t_array$_t_uint8_$3_memory_ptrt_array$_t_uint8_$3_memory_ptr(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 192) { revert(0, 0) }\n value0 := abi_decode_array_uint8(headStart, dataEnd)\n value1 := abi_decode_array_uint8(add(headStart, 96), dataEnd)\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function panic_error_0x32()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n}","id":92,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100725760003560e01c80639fdb5746116100505780639fdb5746146100c4578063d343ec1b146100d7578063f92e9bb1146100ea57600080fd5b80632198ac8d14610077578063668a90f61461009e57806396b38697146100b1575b600080fd5b61008a6100853660046104ed565b6100fd565b604051901515815260200160405180910390f35b61008a6100ac3660046104ed565b610112565b61008a6100bf3660046104ed565b61011e565b61008a6100d23660046104ed565b61012a565b61008a6100e53660046104ed565b610136565b61008a6100f83660046104ed565b610142565b6000610109838361014e565b90505b92915050565b600061010983836101e8565b6000610109838361027a565b6000610109838361030c565b6000610109838361039d565b600061010983836103f4565b8051825160009160ff9081169116101561016a5750600161010c565b8151835160ff918216911611156101835750600061010c565b6020808301519084015160ff918216911610156101a25750600161010c565b6020808301519084015160ff918216911611156101c15750600061010c565b6040808301519084015160ff9182169116116101df5750600161010c565b50600092915050565b8051825160009160ff908116911610156102045750600161010c565b8151835160ff9182169116111561021d5750600061010c565b6020808301519084015160ff9182169116101561023c5750600161010c565b6020808301519084015160ff9182169116111561025b5750600061010c565b6040808301519084015160ff918216911610156101df5750600161010c565b8051825160009160ff908116911611156102965750600161010c565b8151835160ff918216911610156102af5750600061010c565b6020808301519084015160ff918216911611156102ce5750600161010c565b6020808301519084015160ff918216911610156102ed5750600061010c565b6040808301519084015160ff918216911611156101df5750600161010c565b8051825160009160ff908116911611156103285750600161010c565b8151835160ff918216911610156103415750600061010c565b6020808301519084015160ff918216911611156103605750600161010c565b6020808301519084015160ff9182169116101561037f5750600061010c565b6040808301519084015160ff9182169116106101df5750600161010c565b8051825160009160ff9182169116146103b85750600161010c565b6020808301519084015160ff9081169116146103d65750600161010c565b6040808301519084015160ff9081169116146101df5750600161010c565b8051825160009160ff91821691161461040f5750600061010c565b6020808301519084015160ff90811691161461042d5750600061010c565b6040808301519084015160ff90811691161461044b5750600061010c565b50600192915050565b803560ff8116811461046557600080fd5b919050565b600082601f83011261047b57600080fd5b6040516060810181811067ffffffffffffffff821117156104ac57634e487b7160e01b600052604160045260246000fd5b6040528060608401858111156104c157600080fd5b845b818110156104e2576104d481610454565b8352602092830192016104c3565b509195945050505050565b60008060c0838503121561050057600080fd5b61050a848461046a565b9150610519846060850161046a565b9050925092905056fea164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x72 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9FDB5746 GT PUSH2 0x50 JUMPI DUP1 PUSH4 0x9FDB5746 EQ PUSH2 0xC4 JUMPI DUP1 PUSH4 0xD343EC1B EQ PUSH2 0xD7 JUMPI DUP1 PUSH4 0xF92E9BB1 EQ PUSH2 0xEA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x2198AC8D EQ PUSH2 0x77 JUMPI DUP1 PUSH4 0x668A90F6 EQ PUSH2 0x9E JUMPI DUP1 PUSH4 0x96B38697 EQ PUSH2 0xB1 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8A PUSH2 0x85 CALLDATASIZE PUSH1 0x4 PUSH2 0x4ED JUMP JUMPDEST PUSH2 0xFD JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x8A PUSH2 0xAC CALLDATASIZE PUSH1 0x4 PUSH2 0x4ED JUMP JUMPDEST PUSH2 0x112 JUMP JUMPDEST PUSH2 0x8A PUSH2 0xBF CALLDATASIZE PUSH1 0x4 PUSH2 0x4ED JUMP JUMPDEST PUSH2 0x11E JUMP JUMPDEST PUSH2 0x8A PUSH2 0xD2 CALLDATASIZE PUSH1 0x4 PUSH2 0x4ED JUMP JUMPDEST PUSH2 0x12A JUMP JUMPDEST PUSH2 0x8A PUSH2 0xE5 CALLDATASIZE PUSH1 0x4 PUSH2 0x4ED JUMP JUMPDEST PUSH2 0x136 JUMP JUMPDEST PUSH2 0x8A PUSH2 0xF8 CALLDATASIZE PUSH1 0x4 PUSH2 0x4ED JUMP JUMPDEST PUSH2 0x142 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x109 DUP4 DUP4 PUSH2 0x14E JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x109 DUP4 DUP4 PUSH2 0x1E8 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x109 DUP4 DUP4 PUSH2 0x27A JUMP JUMPDEST PUSH1 0x0 PUSH2 0x109 DUP4 DUP4 PUSH2 0x30C JUMP JUMPDEST PUSH1 0x0 PUSH2 0x109 DUP4 DUP4 PUSH2 0x39D JUMP JUMPDEST PUSH1 0x0 PUSH2 0x109 DUP4 DUP4 PUSH2 0x3F4 JUMP JUMPDEST DUP1 MLOAD DUP3 MLOAD PUSH1 0x0 SWAP2 PUSH1 0xFF SWAP1 DUP2 AND SWAP2 AND LT ISZERO PUSH2 0x16A JUMPI POP PUSH1 0x1 PUSH2 0x10C JUMP JUMPDEST DUP2 MLOAD DUP4 MLOAD PUSH1 0xFF SWAP2 DUP3 AND SWAP2 AND GT ISZERO PUSH2 0x183 JUMPI POP PUSH1 0x0 PUSH2 0x10C JUMP JUMPDEST PUSH1 0x20 DUP1 DUP4 ADD MLOAD SWAP1 DUP5 ADD MLOAD PUSH1 0xFF SWAP2 DUP3 AND SWAP2 AND LT ISZERO PUSH2 0x1A2 JUMPI POP PUSH1 0x1 PUSH2 0x10C JUMP JUMPDEST PUSH1 0x20 DUP1 DUP4 ADD MLOAD SWAP1 DUP5 ADD MLOAD PUSH1 0xFF SWAP2 DUP3 AND SWAP2 AND GT ISZERO PUSH2 0x1C1 JUMPI POP PUSH1 0x0 PUSH2 0x10C JUMP JUMPDEST PUSH1 0x40 DUP1 DUP4 ADD MLOAD SWAP1 DUP5 ADD MLOAD PUSH1 0xFF SWAP2 DUP3 AND SWAP2 AND GT PUSH2 0x1DF JUMPI POP PUSH1 0x1 PUSH2 0x10C JUMP JUMPDEST POP PUSH1 0x0 SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD DUP3 MLOAD PUSH1 0x0 SWAP2 PUSH1 0xFF SWAP1 DUP2 AND SWAP2 AND LT ISZERO PUSH2 0x204 JUMPI POP PUSH1 0x1 PUSH2 0x10C JUMP JUMPDEST DUP2 MLOAD DUP4 MLOAD PUSH1 0xFF SWAP2 DUP3 AND SWAP2 AND GT ISZERO PUSH2 0x21D JUMPI POP PUSH1 0x0 PUSH2 0x10C JUMP JUMPDEST PUSH1 0x20 DUP1 DUP4 ADD MLOAD SWAP1 DUP5 ADD MLOAD PUSH1 0xFF SWAP2 DUP3 AND SWAP2 AND LT ISZERO PUSH2 0x23C JUMPI POP PUSH1 0x1 PUSH2 0x10C JUMP JUMPDEST PUSH1 0x20 DUP1 DUP4 ADD MLOAD SWAP1 DUP5 ADD MLOAD PUSH1 0xFF SWAP2 DUP3 AND SWAP2 AND GT ISZERO PUSH2 0x25B JUMPI POP PUSH1 0x0 PUSH2 0x10C JUMP JUMPDEST PUSH1 0x40 DUP1 DUP4 ADD MLOAD SWAP1 DUP5 ADD MLOAD PUSH1 0xFF SWAP2 DUP3 AND SWAP2 AND LT ISZERO PUSH2 0x1DF JUMPI POP PUSH1 0x1 PUSH2 0x10C JUMP JUMPDEST DUP1 MLOAD DUP3 MLOAD PUSH1 0x0 SWAP2 PUSH1 0xFF SWAP1 DUP2 AND SWAP2 AND GT ISZERO PUSH2 0x296 JUMPI POP PUSH1 0x1 PUSH2 0x10C JUMP JUMPDEST DUP2 MLOAD DUP4 MLOAD PUSH1 0xFF SWAP2 DUP3 AND SWAP2 AND LT ISZERO PUSH2 0x2AF JUMPI POP PUSH1 0x0 PUSH2 0x10C JUMP JUMPDEST PUSH1 0x20 DUP1 DUP4 ADD MLOAD SWAP1 DUP5 ADD MLOAD PUSH1 0xFF SWAP2 DUP3 AND SWAP2 AND GT ISZERO PUSH2 0x2CE JUMPI POP PUSH1 0x1 PUSH2 0x10C JUMP JUMPDEST PUSH1 0x20 DUP1 DUP4 ADD MLOAD SWAP1 DUP5 ADD MLOAD PUSH1 0xFF SWAP2 DUP3 AND SWAP2 AND LT ISZERO PUSH2 0x2ED JUMPI POP PUSH1 0x0 PUSH2 0x10C JUMP JUMPDEST PUSH1 0x40 DUP1 DUP4 ADD MLOAD SWAP1 DUP5 ADD MLOAD PUSH1 0xFF SWAP2 DUP3 AND SWAP2 AND GT ISZERO PUSH2 0x1DF JUMPI POP PUSH1 0x1 PUSH2 0x10C JUMP JUMPDEST DUP1 MLOAD DUP3 MLOAD PUSH1 0x0 SWAP2 PUSH1 0xFF SWAP1 DUP2 AND SWAP2 AND GT ISZERO PUSH2 0x328 JUMPI POP PUSH1 0x1 PUSH2 0x10C JUMP JUMPDEST DUP2 MLOAD DUP4 MLOAD PUSH1 0xFF SWAP2 DUP3 AND SWAP2 AND LT ISZERO PUSH2 0x341 JUMPI POP PUSH1 0x0 PUSH2 0x10C JUMP JUMPDEST PUSH1 0x20 DUP1 DUP4 ADD MLOAD SWAP1 DUP5 ADD MLOAD PUSH1 0xFF SWAP2 DUP3 AND SWAP2 AND GT ISZERO PUSH2 0x360 JUMPI POP PUSH1 0x1 PUSH2 0x10C JUMP JUMPDEST PUSH1 0x20 DUP1 DUP4 ADD MLOAD SWAP1 DUP5 ADD MLOAD PUSH1 0xFF SWAP2 DUP3 AND SWAP2 AND LT ISZERO PUSH2 0x37F JUMPI POP PUSH1 0x0 PUSH2 0x10C JUMP JUMPDEST PUSH1 0x40 DUP1 DUP4 ADD MLOAD SWAP1 DUP5 ADD MLOAD PUSH1 0xFF SWAP2 DUP3 AND SWAP2 AND LT PUSH2 0x1DF JUMPI POP PUSH1 0x1 PUSH2 0x10C JUMP JUMPDEST DUP1 MLOAD DUP3 MLOAD PUSH1 0x0 SWAP2 PUSH1 0xFF SWAP2 DUP3 AND SWAP2 AND EQ PUSH2 0x3B8 JUMPI POP PUSH1 0x1 PUSH2 0x10C JUMP JUMPDEST PUSH1 0x20 DUP1 DUP4 ADD MLOAD SWAP1 DUP5 ADD MLOAD PUSH1 0xFF SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x3D6 JUMPI POP PUSH1 0x1 PUSH2 0x10C JUMP JUMPDEST PUSH1 0x40 DUP1 DUP4 ADD MLOAD SWAP1 DUP5 ADD MLOAD PUSH1 0xFF SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x1DF JUMPI POP PUSH1 0x1 PUSH2 0x10C JUMP JUMPDEST DUP1 MLOAD DUP3 MLOAD PUSH1 0x0 SWAP2 PUSH1 0xFF SWAP2 DUP3 AND SWAP2 AND EQ PUSH2 0x40F JUMPI POP PUSH1 0x0 PUSH2 0x10C JUMP JUMPDEST PUSH1 0x20 DUP1 DUP4 ADD MLOAD SWAP1 DUP5 ADD MLOAD PUSH1 0xFF SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x42D JUMPI POP PUSH1 0x0 PUSH2 0x10C JUMP JUMPDEST PUSH1 0x40 DUP1 DUP4 ADD MLOAD SWAP1 DUP5 ADD MLOAD PUSH1 0xFF SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x44B JUMPI POP PUSH1 0x0 PUSH2 0x10C JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x465 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x47B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x60 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x4AC JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP5 ADD DUP6 DUP2 GT ISZERO PUSH2 0x4C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x4E2 JUMPI PUSH2 0x4D4 DUP2 PUSH2 0x454 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 ADD PUSH2 0x4C3 JUMP JUMPDEST POP SWAP2 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0xC0 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x500 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x50A DUP5 DUP5 PUSH2 0x46A JUMP JUMPDEST SWAP2 POP PUSH2 0x519 DUP5 PUSH1 0x60 DUP6 ADD PUSH2 0x46A JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"283:820:64:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;737:118;;;;;;:::i;:::-;;:::i;:::-;;;1424:14:92;;1417:22;1399:41;;1387:2;1372:18;737:118:64;;;;;;;615:116;;;;;;:::i;:::-;;:::i;861:::-;;;;;;:::i;:::-;;:::i;983:118::-;;;;;;:::i;:::-;;:::i;491:::-;;;;;;:::i;:::-;;:::i;369:116::-;;;;;;:::i;:::-;;:::i;737:118::-;813:4;836:12;:3;844;836:7;:12::i;:::-;829:19;;737:118;;;;;:::o;615:116::-;690:4;713:11;:3;720;713:6;:11::i;861:116::-;936:4;959:11;:3;966;959:6;:11::i;983:118::-;1059:4;1082:12;:3;1090;1082:7;:12::i;491:118::-;567:4;590:12;:3;598;590:7;:12::i;369:116::-;444:4;467:11;:3;474;467:6;:11::i;2262:329:91:-;2369:6;;2360;;2340:4;;2360:15;;;;;;;2356:32;;;-1:-1:-1;2384:4:91;2377:11;;2356:32;2411:6;;2402;;:15;;;;;;;2398:33;;;-1:-1:-1;2426:5:91;2419:12;;2398:33;2455:6;;;;;2446;;;;:15;;;;;;;2442:32;;;-1:-1:-1;2470:4:91;2463:11;;2442:32;2497:6;;;;;2488;;;;:15;;;;;;;2484:33;;;-1:-1:-1;2512:5:91;2505:12;;2484:33;2542:6;;;;;2532;;;;:16;;;;;;;2528:33;;-1:-1:-1;2557:4:91;2550:11;;2528:33;-1:-1:-1;2579:5:91;2262:329;;;;:::o;1627:327::-;1733:6;;1724;;1704:4;;1724:15;;;;;;;1720:32;;;-1:-1:-1;1748:4:91;1741:11;;1720:32;1775:6;;1766;;:15;;;;;;;1762:33;;;-1:-1:-1;1790:5:91;1783:12;;1762:33;1819:6;;;;;1810;;;;:15;;;;;;;1806:32;;;-1:-1:-1;1834:4:91;1827:11;;1806:32;1861:6;;;;;1852;;;;:15;;;;;;;1848:33;;;-1:-1:-1;1876:5:91;1869:12;;1848:33;1905:6;;;;;1896;;;;:15;;;;;;;1892:32;;;-1:-1:-1;1920:4:91;1913:11;;2881:327;2987:6;;2978;;2958:4;;2978:15;;;;;;;2974:32;;;-1:-1:-1;3002:4:91;2995:11;;2974:32;3029:6;;3020;;:15;;;;;;;3016:33;;;-1:-1:-1;3044:5:91;3037:12;;3016:33;3073:6;;;;;3064;;;;:15;;;;;;;3060:32;;;-1:-1:-1;3088:4:91;3081:11;;3060:32;3115:6;;;;;3106;;;;:15;;;;;;;3102:33;;;-1:-1:-1;3130:5:91;3123:12;;3102:33;3159:6;;;;;3150;;;;:15;;;;;;;3146:32;;;-1:-1:-1;3174:4:91;3167:11;;3522:329;3629:6;;3620;;3600:4;;3620:15;;;;;;;3616:32;;;-1:-1:-1;3644:4:91;3637:11;;3616:32;3671:6;;3662;;:15;;;;;;;3658:33;;;-1:-1:-1;3686:5:91;3679:12;;3658:33;3715:6;;;;;3706;;;;:15;;;;;;;3702:32;;;-1:-1:-1;3730:4:91;3723:11;;3702:32;3757:6;;;;;3748;;;;:15;;;;;;;3744:33;;;-1:-1:-1;3772:5:91;3765:12;;3744:33;3802:6;;;;;3792;;;;:16;;;;;;;3788:33;;-1:-1:-1;3817:4:91;3810:11;;1098:245;1206:6;;1196;;1176:4;;1196:16;;;;;;;1192:33;;-1:-1:-1;1221:4:91;1214:11;;1192:33;1250:6;;;;;1240;;;;:16;;;;;;;1236:33;;-1:-1:-1;1265:4:91;1258:11;;1236:33;1294:6;;;;;1284;;;;:16;;;;;;;1280:33;;-1:-1:-1;1309:4:91;1302:11;;587:246;694:6;;684;;664:4;;684:16;;;;;;;680:34;;-1:-1:-1;709:5:91;702:12;;680:34;739:6;;;;;729;;;;:16;;;;;;;725:34;;-1:-1:-1;754:5:91;747:12;;725:34;784:6;;;;;774;;;;:16;;;;;;;770:34;;-1:-1:-1;799:5:91;792:12;;770:34;-1:-1:-1;822:4:91;587:246;;;;:::o;14:156:92:-;80:20;;140:4;129:16;;119:27;;109:55;;160:1;157;150:12;109:55;14:156;;;:::o;175:745::-;223:5;276:3;269:4;261:6;257:17;253:27;243:55;;294:1;291;284:12;243:55;327:2;321:9;369:2;361:6;357:15;438:6;426:10;423:22;402:18;390:10;387:34;384:62;381:185;;;488:10;483:3;479:20;476:1;469:31;523:4;520:1;513:15;551:4;548:1;541:15;381:185;582:2;575:22;617:6;658:2;646:15;;673;;;670:35;;;701:1;698;691:12;670:35;725:6;740:150;756:6;751:3;748:15;740:150;;;824:21;841:3;824:21;:::i;:::-;812:34;;875:4;866:14;;;;773;740:150;;;-1:-1:-1;908:6:92;;175:745;-1:-1:-1;;;;;175:745:92:o;925:329::-;1035:6;1043;1096:3;1084:9;1075:7;1071:23;1067:33;1064:53;;;1113:1;1110;1103:12;1064:53;1136:42;1170:7;1159:9;1136:42;:::i;:::-;1126:52;;1197:51;1240:7;1235:2;1224:9;1220:18;1197:51;:::i;:::-;1187:61;;925:329;;;;;:::o"},"gasEstimates":{"creation":{"codeDepositCost":"265400","executionCost":"306","totalCost":"265706"},"external":{"eq(uint8[3],uint8[3])":"infinite","gt(uint8[3],uint8[3])":"infinite","gte(uint8[3],uint8[3])":"infinite","lt(uint8[3],uint8[3])":"infinite","lte(uint8[3],uint8[3])":"infinite","neq(uint8[3],uint8[3])":"infinite"}},"methodIdentifiers":{"eq(uint8[3],uint8[3])":"f92e9bb1","gt(uint8[3],uint8[3])":"96b38697","gte(uint8[3],uint8[3])":"9fdb5746","lt(uint8[3],uint8[3])":"668a90f6","lte(uint8[3],uint8[3])":"2198ac8d","neq(uint8[3],uint8[3])":"d343ec1b"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint8[3]\",\"name\":\"lhs\",\"type\":\"uint8[3]\"},{\"internalType\":\"uint8[3]\",\"name\":\"rhs\",\"type\":\"uint8[3]\"}],\"name\":\"eq\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8[3]\",\"name\":\"lhs\",\"type\":\"uint8[3]\"},{\"internalType\":\"uint8[3]\",\"name\":\"rhs\",\"type\":\"uint8[3]\"}],\"name\":\"gt\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8[3]\",\"name\":\"lhs\",\"type\":\"uint8[3]\"},{\"internalType\":\"uint8[3]\",\"name\":\"rhs\",\"type\":\"uint8[3]\"}],\"name\":\"gte\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8[3]\",\"name\":\"lhs\",\"type\":\"uint8[3]\"},{\"internalType\":\"uint8[3]\",\"name\":\"rhs\",\"type\":\"uint8[3]\"}],\"name\":\"lt\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8[3]\",\"name\":\"lhs\",\"type\":\"uint8[3]\"},{\"internalType\":\"uint8[3]\",\"name\":\"rhs\",\"type\":\"uint8[3]\"}],\"name\":\"lte\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8[3]\",\"name\":\"lhs\",\"type\":\"uint8[3]\"},{\"internalType\":\"uint8[3]\",\"name\":\"rhs\",\"type\":\"uint8[3]\"}],\"name\":\"neq\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"DO NOT USE IN PRODUCTION!\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"A mock contract containing functions to compare semantic version numbers.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/mocks/utils/versioning/VersionComparisonLibMock.sol\":\"VersionComparisonLibMock\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"src/mocks/utils/versioning/VersionComparisonLibMock.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {VersionComparisonLib} from \\\"../../../utils/versioning/VersionComparisonLib.sol\\\";\\n\\n/// @notice A mock contract containing functions to compare semantic version numbers.\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract VersionComparisonLibMock {\\n using VersionComparisonLib for uint8[3];\\n\\n function eq(uint8[3] memory lhs, uint8[3] memory rhs) public pure returns (bool) {\\n return lhs.eq(rhs);\\n }\\n\\n function neq(uint8[3] memory lhs, uint8[3] memory rhs) public pure returns (bool) {\\n return lhs.neq(rhs);\\n }\\n\\n function lt(uint8[3] memory lhs, uint8[3] memory rhs) public pure returns (bool) {\\n return lhs.lt(rhs);\\n }\\n\\n function lte(uint8[3] memory lhs, uint8[3] memory rhs) public pure returns (bool) {\\n return lhs.lte(rhs);\\n }\\n\\n function gt(uint8[3] memory lhs, uint8[3] memory rhs) public pure returns (bool) {\\n return lhs.gt(rhs);\\n }\\n\\n function gte(uint8[3] memory lhs, uint8[3] memory rhs) public pure returns (bool) {\\n return lhs.gte(rhs);\\n }\\n}\\n\",\"keccak256\":\"0x3abbc50700897cb6669f2fa9bfaa940e284916346b4903597a29d7487d977b60\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/VersionComparisonLib.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title VersionComparisonLib\\n/// @author Aragon X - 2023\\n/// @notice A library containing methods for [semantic version number](https://semver.org/spec/v2.0.0.html) comparison.\\n/// @custom:security-contact sirt@aragon.org\\nlibrary VersionComparisonLib {\\n /// @notice Equality comparator for two semantic version numbers.\\n /// @param lhs The left-hand side semantic version number.\\n /// @param rhs The right-hand side semantic version number.\\n /// @return Whether the two numbers are equal or not.\\n function eq(uint8[3] memory lhs, uint8[3] memory rhs) internal pure returns (bool) {\\n if (lhs[0] != rhs[0]) return false;\\n\\n if (lhs[1] != rhs[1]) return false;\\n\\n if (lhs[2] != rhs[2]) return false;\\n\\n return true;\\n }\\n\\n /// @notice Inequality comparator for two semantic version numbers.\\n /// @param lhs The left-hand side semantic version number.\\n /// @param rhs The right-hand side semantic version number.\\n /// @return Whether the two numbers are inequal or not.\\n function neq(uint8[3] memory lhs, uint8[3] memory rhs) internal pure returns (bool) {\\n if (lhs[0] != rhs[0]) return true;\\n\\n if (lhs[1] != rhs[1]) return true;\\n\\n if (lhs[2] != rhs[2]) return true;\\n\\n return false;\\n }\\n\\n /// @notice Less than comparator for two semantic version numbers.\\n /// @param lhs The left-hand side semantic version number.\\n /// @param rhs The right-hand side semantic version number.\\n /// @return Whether the first number is less than the second number or not.\\n function lt(uint8[3] memory lhs, uint8[3] memory rhs) internal pure returns (bool) {\\n if (lhs[0] < rhs[0]) return true;\\n if (lhs[0] > rhs[0]) return false;\\n\\n if (lhs[1] < rhs[1]) return true;\\n if (lhs[1] > rhs[1]) return false;\\n\\n if (lhs[2] < rhs[2]) return true;\\n\\n return false;\\n }\\n\\n /// @notice Less than or equal to comparator for two semantic version numbers.\\n /// @param lhs The left-hand side semantic version number.\\n /// @param rhs The right-hand side semantic version number.\\n /// @return Whether the first number is less than or equal to the second number or not.\\n function lte(uint8[3] memory lhs, uint8[3] memory rhs) internal pure returns (bool) {\\n if (lhs[0] < rhs[0]) return true;\\n if (lhs[0] > rhs[0]) return false;\\n\\n if (lhs[1] < rhs[1]) return true;\\n if (lhs[1] > rhs[1]) return false;\\n\\n if (lhs[2] <= rhs[2]) return true;\\n\\n return false;\\n }\\n\\n /// @notice Greater than comparator for two semantic version numbers.\\n /// @param lhs The left-hand side semantic version number.\\n /// @param rhs The right-hand side semantic version number.\\n /// @return Whether the first number is greater than the second number or not.\\n function gt(uint8[3] memory lhs, uint8[3] memory rhs) internal pure returns (bool) {\\n if (lhs[0] > rhs[0]) return true;\\n if (lhs[0] < rhs[0]) return false;\\n\\n if (lhs[1] > rhs[1]) return true;\\n if (lhs[1] < rhs[1]) return false;\\n\\n if (lhs[2] > rhs[2]) return true;\\n\\n return false;\\n }\\n\\n /// @notice Greater than or equal to comparator for two semantic version numbers.\\n /// @param lhs The left-hand side semantic version number.\\n /// @param rhs The right-hand side semantic version number.\\n /// @return Whether the first number is greater than or equal to the second number or not.\\n function gte(uint8[3] memory lhs, uint8[3] memory rhs) internal pure returns (bool) {\\n if (lhs[0] > rhs[0]) return true;\\n if (lhs[0] < rhs[0]) return false;\\n\\n if (lhs[1] > rhs[1]) return true;\\n if (lhs[1] < rhs[1]) return false;\\n\\n if (lhs[2] >= rhs[2]) return true;\\n\\n return false;\\n }\\n}\\n\",\"keccak256\":\"0x559ed1adc1f16900db347c5586369c8b39849b8e0bce851a2d9f73d19ec9252a\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"notice":"A mock contract containing functions to compare semantic version numbers.","version":1}}},"src/permission/PermissionLib.sol":{"PermissionLib":{"abi":[{"inputs":[],"name":"NO_CONDITION","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"devdoc":{"author":"Aragon X - 2021-2023","custom:security-contact":"sirt@aragon.org","kind":"dev","methods":{},"title":"PermissionLib","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"6075610038600b82828239805160001a607314602b57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe730000000000000000000000000000000000000000301460806040526004361060335760003560e01c80636dd02a5b146038575b600080fd5b603f600081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f3fea164736f6c6343000811000a","opcodes":"PUSH1 0x75 PUSH2 0x38 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2B JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH1 0x33 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6DD02A5B EQ PUSH1 0x38 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3F PUSH1 0x0 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"243:1810:65:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;243:1810:65;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@NO_CONDITION_13013":{"entryPoint":null,"id":13013,"parameterSlots":0,"returnSlots":0},"abi_encode_tuple_t_address__to_t_address__fromStack_library_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:250:92","statements":[{"nodeType":"YulBlock","src":"6:3:92","statements":[]},{"body":{"nodeType":"YulBlock","src":"123:125:92","statements":[{"nodeType":"YulAssignment","src":"133:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"145:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"156:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"141:3:92"},"nodeType":"YulFunctionCall","src":"141:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"133:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"175:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"190:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"198:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"186:3:92"},"nodeType":"YulFunctionCall","src":"186:55:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"168:6:92"},"nodeType":"YulFunctionCall","src":"168:74:92"},"nodeType":"YulExpressionStatement","src":"168:74:92"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_library_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"92:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"103:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"114:4:92","type":""}],"src":"14:234:92"}]},"contents":"{\n { }\n function abi_encode_tuple_t_address__to_t_address__fromStack_library_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n}","id":92,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"730000000000000000000000000000000000000000301460806040526004361060335760003560e01c80636dd02a5b146038575b600080fd5b603f600081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f3fea164736f6c6343000811000a","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH1 0x33 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6DD02A5B EQ PUSH1 0x38 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3F PUSH1 0x0 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"243:1810:65:-:0;;;;;;;;;;;;;;;;;;;;;;;;355:49;;402:1;355:49;;;;;198:42:92;186:55;;;168:74;;156:2;141:18;355:49:65;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"23400","executionCost":"106","totalCost":"23506"},"external":{"NO_CONDITION()":"154"}},"methodIdentifiers":{"NO_CONDITION()":"6dd02a5b"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"NO_CONDITION\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Aragon X - 2021-2023\",\"custom:security-contact\":\"sirt@aragon.org\",\"kind\":\"dev\",\"methods\":{},\"title\":\"PermissionLib\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"NO_CONDITION()\":{\"notice\":\"A constant expressing that no condition is applied to a permission.\"}},\"notice\":\"A library containing objects for permission processing.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/permission/PermissionLib.sol\":\"PermissionLib\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"src/permission/PermissionLib.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title PermissionLib\\n/// @author Aragon X - 2021-2023\\n/// @notice A library containing objects for permission processing.\\n/// @custom:security-contact sirt@aragon.org\\nlibrary PermissionLib {\\n /// @notice A constant expressing that no condition is applied to a permission.\\n address public constant NO_CONDITION = address(0);\\n\\n /// @notice The types of permission operations available in the `PermissionManager`.\\n /// @param Grant The grant operation setting a permission without a condition.\\n /// @param Revoke The revoke operation removing a permission (that was granted with or without a condition).\\n /// @param GrantWithCondition The grant operation setting a permission with a condition.\\n enum Operation {\\n Grant,\\n Revoke,\\n GrantWithCondition\\n }\\n\\n /// @notice A struct containing the information for a permission to be applied on a single target contract without a condition.\\n /// @param operation The permission operation type.\\n /// @param who The address (EOA or contract) receiving the permission.\\n /// @param permissionId The permission identifier.\\n struct SingleTargetPermission {\\n Operation operation;\\n address who;\\n bytes32 permissionId;\\n }\\n\\n /// @notice A struct containing the information for a permission to be applied on multiple target contracts, optionally, with a condition.\\n /// @param operation The permission operation type.\\n /// @param where The address of the target contract for which `who` receives permission.\\n /// @param who The address (EOA or contract) receiving the permission.\\n /// @param condition The `PermissionCondition` that will be asked for authorization on calls connected to the specified permission identifier.\\n /// @param permissionId The permission identifier.\\n struct MultiTargetPermission {\\n Operation operation;\\n address where;\\n address who;\\n address condition;\\n bytes32 permissionId;\\n }\\n}\\n\",\"keccak256\":\"0x470faf3c4891ebc6420ef6cc09f6098917568ccc79268c90954d1478199b6097\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{"NO_CONDITION()":{"notice":"A constant expressing that no condition is applied to a permission."}},"notice":"A library containing objects for permission processing.","version":1}}},"src/permission/auth/DaoAuthorizable.sol":{"DaoAuthorizable":{"abi":[{"inputs":[],"name":"dao","outputs":[{"internalType":"contract IDAO","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"devdoc":{"author":"Aragon X - 2022-2023","custom:security-contact":"sirt@aragon.org","kind":"dev","methods":{"constructor":{"params":{"_dao":"The associated DAO address."}},"dao()":{"returns":{"_0":"The DAO contract."}}},"title":"DaoAuthorizable","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"dao()":"4162169f"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"dao\",\"outputs\":[{\"internalType\":\"contract IDAO\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Aragon X - 2022-2023\",\"custom:security-contact\":\"sirt@aragon.org\",\"kind\":\"dev\",\"methods\":{\"constructor\":{\"params\":{\"_dao\":\"The associated DAO address.\"}},\"dao()\":{\"returns\":{\"_0\":\"The DAO contract.\"}}},\"title\":\"DaoAuthorizable\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"constructor\":{\"notice\":\"Constructs the contract by setting the associated DAO.\"},\"dao()\":{\"notice\":\"Returns the DAO contract.\"}},\"notice\":\"An abstract contract providing a meta-transaction compatible modifier for non-upgradeable contracts instantiated via the `new` keyword to authorize function calls through an associated DAO.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/permission/auth/DaoAuthorizable.sol\":\"DaoAuthorizable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n function _contextSuffixLength() internal view virtual returns (uint256) {\\n return 0;\\n }\\n}\\n\",\"keccak256\":\"0xa92e4fa126feb6907daa0513ddd816b2eb91f30a808de54f63c17d0e162c3439\",\"license\":\"MIT\"},\"src/dao/IDAO.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IDAO\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for DAOs within the Aragon App DAO framework.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IDAO {\\n /// @notice The action struct to be consumed by the DAO's `execute` function resulting in an external call.\\n /// @param to The address to call.\\n /// @param value The native token value to be sent with the call.\\n /// @param data The bytes-encoded function selector and calldata for the call.\\n struct Action {\\n address to;\\n uint256 value;\\n bytes data;\\n }\\n\\n /// @notice Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\\n /// @param _where The address of the contract.\\n /// @param _who The address of a EOA or contract to give the permissions.\\n /// @param _permissionId The permission identifier.\\n /// @param _data The optional data passed to the `PermissionCondition` registered.\\n /// @return Returns true if the address has permission, false if not.\\n function hasPermission(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes memory _data\\n ) external view returns (bool);\\n\\n /// @notice Updates the DAO metadata (e.g., an IPFS hash).\\n /// @param _metadata The IPFS hash of the new metadata object.\\n function setMetadata(bytes calldata _metadata) external;\\n\\n /// @notice Emitted when the DAO metadata is updated.\\n /// @param metadata The IPFS hash of the new metadata object.\\n event MetadataSet(bytes metadata);\\n\\n /// @notice Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted.\\n /// @param _callId The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce.\\n /// @param _actions The array of actions.\\n /// @param _allowFailureMap A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @return The array of results obtained from the executed actions in `bytes`.\\n /// @return The resulting failure map containing the actions have actually failed.\\n function execute(\\n bytes32 _callId,\\n Action[] memory _actions,\\n uint256 _allowFailureMap\\n ) external returns (bytes[] memory, uint256);\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param actor The address of the caller.\\n /// @param callId The ID of the call.\\n /// @param actions The array of actions executed.\\n /// @param allowFailureMap The allow failure map encoding which actions are allowed to fail.\\n /// @param failureMap The failure map encoding which actions have failed.\\n /// @param execResults The array with the results of the executed actions.\\n /// @dev The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce.\\n event Executed(\\n address indexed actor,\\n bytes32 callId,\\n Action[] actions,\\n uint256 allowFailureMap,\\n uint256 failureMap,\\n bytes[] execResults\\n );\\n\\n /// @notice Emitted when a standard callback is registered.\\n /// @param interfaceId The ID of the interface.\\n /// @param callbackSelector The selector of the callback function.\\n /// @param magicNumber The magic number to be registered for the callback function selector.\\n event StandardCallbackRegistered(\\n bytes4 interfaceId,\\n bytes4 callbackSelector,\\n bytes4 magicNumber\\n );\\n\\n /// @notice Deposits (native) tokens to the DAO contract with a reference string.\\n /// @param _token The address of the token or address(0) in case of the native token.\\n /// @param _amount The amount of tokens to deposit.\\n /// @param _reference The reference describing the deposit reason.\\n function deposit(address _token, uint256 _amount, string calldata _reference) external payable;\\n\\n /// @notice Emitted when a token deposit has been made to the DAO.\\n /// @param sender The address of the sender.\\n /// @param token The address of the deposited token.\\n /// @param amount The amount of tokens deposited.\\n /// @param _reference The reference describing the deposit reason.\\n event Deposited(\\n address indexed sender,\\n address indexed token,\\n uint256 amount,\\n string _reference\\n );\\n\\n /// @notice Emitted when a native token deposit has been made to the DAO.\\n /// @dev This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).\\n /// @param sender The address of the sender.\\n /// @param amount The amount of native tokens deposited.\\n event NativeTokenDeposited(address sender, uint256 amount);\\n\\n /// @notice Setter for the trusted forwarder verifying the meta transaction.\\n /// @param _trustedForwarder The trusted forwarder address.\\n function setTrustedForwarder(address _trustedForwarder) external;\\n\\n /// @notice Getter for the trusted forwarder verifying the meta transaction.\\n /// @return The trusted forwarder address.\\n function getTrustedForwarder() external view returns (address);\\n\\n /// @notice Emitted when a new TrustedForwarder is set on the DAO.\\n /// @param forwarder the new forwarder address.\\n event TrustedForwarderSet(address forwarder);\\n\\n /// @notice Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\\n /// @param _hash The hash of the data to be signed.\\n /// @param _signature The signature byte array associated with `_hash`.\\n /// @return Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not.\\n function isValidSignature(bytes32 _hash, bytes memory _signature) external returns (bytes4);\\n\\n /// @notice Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\\n /// @param _interfaceId The ID of the interface.\\n /// @param _callbackSelector The selector of the callback function.\\n /// @param _magicNumber The magic number to be registered for the function signature.\\n function registerStandardCallback(\\n bytes4 _interfaceId,\\n bytes4 _callbackSelector,\\n bytes4 _magicNumber\\n ) external;\\n\\n /// @notice Removed function being left here to not corrupt the IDAO interface ID. Any call will revert.\\n /// @dev Introduced in v1.0.0. Removed in v1.4.0.\\n function setSignatureValidator(address) external;\\n}\\n\",\"keccak256\":\"0xb7f615523c26de042edce98731c658f44a1edb2464387ac1b642c4c69f57128e\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/DaoAuthorizable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {Context} from \\\"@openzeppelin/contracts/utils/Context.sol\\\";\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\nimport {_auth} from \\\"./auth.sol\\\";\\n\\n/// @title DaoAuthorizable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract contract providing a meta-transaction compatible modifier for non-upgradeable contracts instantiated via the `new` keyword to authorize function calls through an associated DAO.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract DaoAuthorizable is Context {\\n /// @notice The associated DAO managing the permissions of inheriting contracts.\\n IDAO private immutable DAO;\\n\\n /// @notice Constructs the contract by setting the associated DAO.\\n /// @param _dao The associated DAO address.\\n constructor(IDAO _dao) {\\n DAO = _dao;\\n }\\n\\n /// @notice Returns the DAO contract.\\n /// @return The DAO contract.\\n function dao() public view returns (IDAO) {\\n return DAO;\\n }\\n\\n /// @notice A modifier to make functions on inheriting contracts authorized. Permissions to call the function are checked through the associated DAO's permission manager.\\n /// @param _permissionId The permission identifier required to call the method this modifier is applied to.\\n modifier auth(bytes32 _permissionId) {\\n _auth(DAO, address(this), _msgSender(), _permissionId, _msgData());\\n _;\\n }\\n}\\n\",\"keccak256\":\"0x3d0be91b4f5854ed2d2c51b53fe7ffba58cc968e972015cf60eb3ea100543e64\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/auth.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice Thrown if a call is unauthorized in the associated DAO.\\n/// @param dao The associated DAO.\\n/// @param where The context in which the authorization reverted.\\n/// @param who The address (EOA or contract) missing the permission.\\n/// @param permissionId The permission identifier.\\nerror DaoUnauthorized(address dao, address where, address who, bytes32 permissionId);\\n\\n/// @notice A free function checking if a caller is granted permissions on a target contract via a permission identifier that redirects the approval to a `PermissionCondition` if this was specified in the setup.\\n/// @param _where The address of the target contract for which `who` receives permission.\\n/// @param _who The address (EOA or contract) owning the permission.\\n/// @param _permissionId The permission identifier.\\n/// @param _data The optional data passed to the `PermissionCondition` registered.\\n/// @custom:security-contact sirt@aragon.org\\nfunction _auth(\\n IDAO _dao,\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes calldata _data\\n) view {\\n if (!_dao.hasPermission(_where, _who, _permissionId, _data))\\n revert DaoUnauthorized({\\n dao: address(_dao),\\n where: _where,\\n who: _who,\\n permissionId: _permissionId\\n });\\n}\\n\",\"keccak256\":\"0x878764b4f87fe0651fb3798fb9cb87c952f8c6caf6ae79c7f09de84df6c00298\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{"constructor":{"notice":"Constructs the contract by setting the associated DAO."},"dao()":{"notice":"Returns the DAO contract."}},"notice":"An abstract contract providing a meta-transaction compatible modifier for non-upgradeable contracts instantiated via the `new` keyword to authorize function calls through an associated DAO.","version":1}}},"src/permission/auth/DaoAuthorizableUpgradeable.sol":{"DaoAuthorizableUpgradeable":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"inputs":[],"name":"dao","outputs":[{"internalType":"contract IDAO","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"devdoc":{"author":"Aragon X - 2022-2023","custom:security-contact":"sirt@aragon.org","details":"Make sure to call `__DaoAuthorizableUpgradeable_init` during initialization of the inheriting contract.","kind":"dev","methods":{"dao()":{"returns":{"_0":"The DAO contract."}}},"title":"DaoAuthorizableUpgradeable","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"dao()":"4162169f"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"dao\",\"outputs\":[{\"internalType\":\"contract IDAO\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Aragon X - 2022-2023\",\"custom:security-contact\":\"sirt@aragon.org\",\"details\":\"Make sure to call `__DaoAuthorizableUpgradeable_init` during initialization of the inheriting contract.\",\"kind\":\"dev\",\"methods\":{\"dao()\":{\"returns\":{\"_0\":\"The DAO contract.\"}}},\"title\":\"DaoAuthorizableUpgradeable\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"dao()\":{\"notice\":\"Returns the DAO contract.\"}},\"notice\":\"An abstract contract providing a meta-transaction compatible modifier for upgradeable or cloneable contracts to authorize function calls through an associated DAO.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/permission/auth/DaoAuthorizableUpgradeable.sol\":\"DaoAuthorizableUpgradeable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n function __Context_init() internal onlyInitializing {\\n }\\n\\n function __Context_init_unchained() internal onlyInitializing {\\n }\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n function _contextSuffixLength() internal view virtual returns (uint256) {\\n return 0;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x75097e35253e7fb282ee4d7f27a80eaacfa759923185bf17302a89cbc059c5ef\",\"license\":\"MIT\"},\"src/dao/IDAO.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IDAO\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for DAOs within the Aragon App DAO framework.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IDAO {\\n /// @notice The action struct to be consumed by the DAO's `execute` function resulting in an external call.\\n /// @param to The address to call.\\n /// @param value The native token value to be sent with the call.\\n /// @param data The bytes-encoded function selector and calldata for the call.\\n struct Action {\\n address to;\\n uint256 value;\\n bytes data;\\n }\\n\\n /// @notice Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\\n /// @param _where The address of the contract.\\n /// @param _who The address of a EOA or contract to give the permissions.\\n /// @param _permissionId The permission identifier.\\n /// @param _data The optional data passed to the `PermissionCondition` registered.\\n /// @return Returns true if the address has permission, false if not.\\n function hasPermission(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes memory _data\\n ) external view returns (bool);\\n\\n /// @notice Updates the DAO metadata (e.g., an IPFS hash).\\n /// @param _metadata The IPFS hash of the new metadata object.\\n function setMetadata(bytes calldata _metadata) external;\\n\\n /// @notice Emitted when the DAO metadata is updated.\\n /// @param metadata The IPFS hash of the new metadata object.\\n event MetadataSet(bytes metadata);\\n\\n /// @notice Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted.\\n /// @param _callId The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce.\\n /// @param _actions The array of actions.\\n /// @param _allowFailureMap A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @return The array of results obtained from the executed actions in `bytes`.\\n /// @return The resulting failure map containing the actions have actually failed.\\n function execute(\\n bytes32 _callId,\\n Action[] memory _actions,\\n uint256 _allowFailureMap\\n ) external returns (bytes[] memory, uint256);\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param actor The address of the caller.\\n /// @param callId The ID of the call.\\n /// @param actions The array of actions executed.\\n /// @param allowFailureMap The allow failure map encoding which actions are allowed to fail.\\n /// @param failureMap The failure map encoding which actions have failed.\\n /// @param execResults The array with the results of the executed actions.\\n /// @dev The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce.\\n event Executed(\\n address indexed actor,\\n bytes32 callId,\\n Action[] actions,\\n uint256 allowFailureMap,\\n uint256 failureMap,\\n bytes[] execResults\\n );\\n\\n /// @notice Emitted when a standard callback is registered.\\n /// @param interfaceId The ID of the interface.\\n /// @param callbackSelector The selector of the callback function.\\n /// @param magicNumber The magic number to be registered for the callback function selector.\\n event StandardCallbackRegistered(\\n bytes4 interfaceId,\\n bytes4 callbackSelector,\\n bytes4 magicNumber\\n );\\n\\n /// @notice Deposits (native) tokens to the DAO contract with a reference string.\\n /// @param _token The address of the token or address(0) in case of the native token.\\n /// @param _amount The amount of tokens to deposit.\\n /// @param _reference The reference describing the deposit reason.\\n function deposit(address _token, uint256 _amount, string calldata _reference) external payable;\\n\\n /// @notice Emitted when a token deposit has been made to the DAO.\\n /// @param sender The address of the sender.\\n /// @param token The address of the deposited token.\\n /// @param amount The amount of tokens deposited.\\n /// @param _reference The reference describing the deposit reason.\\n event Deposited(\\n address indexed sender,\\n address indexed token,\\n uint256 amount,\\n string _reference\\n );\\n\\n /// @notice Emitted when a native token deposit has been made to the DAO.\\n /// @dev This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).\\n /// @param sender The address of the sender.\\n /// @param amount The amount of native tokens deposited.\\n event NativeTokenDeposited(address sender, uint256 amount);\\n\\n /// @notice Setter for the trusted forwarder verifying the meta transaction.\\n /// @param _trustedForwarder The trusted forwarder address.\\n function setTrustedForwarder(address _trustedForwarder) external;\\n\\n /// @notice Getter for the trusted forwarder verifying the meta transaction.\\n /// @return The trusted forwarder address.\\n function getTrustedForwarder() external view returns (address);\\n\\n /// @notice Emitted when a new TrustedForwarder is set on the DAO.\\n /// @param forwarder the new forwarder address.\\n event TrustedForwarderSet(address forwarder);\\n\\n /// @notice Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\\n /// @param _hash The hash of the data to be signed.\\n /// @param _signature The signature byte array associated with `_hash`.\\n /// @return Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not.\\n function isValidSignature(bytes32 _hash, bytes memory _signature) external returns (bytes4);\\n\\n /// @notice Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\\n /// @param _interfaceId The ID of the interface.\\n /// @param _callbackSelector The selector of the callback function.\\n /// @param _magicNumber The magic number to be registered for the function signature.\\n function registerStandardCallback(\\n bytes4 _interfaceId,\\n bytes4 _callbackSelector,\\n bytes4 _magicNumber\\n ) external;\\n\\n /// @notice Removed function being left here to not corrupt the IDAO interface ID. Any call will revert.\\n /// @dev Introduced in v1.0.0. Removed in v1.4.0.\\n function setSignatureValidator(address) external;\\n}\\n\",\"keccak256\":\"0xb7f615523c26de042edce98731c658f44a1edb2464387ac1b642c4c69f57128e\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/DaoAuthorizableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ContextUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\\\";\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\nimport {_auth} from \\\"./auth.sol\\\";\\n\\n/// @title DaoAuthorizableUpgradeable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract contract providing a meta-transaction compatible modifier for upgradeable or cloneable contracts to authorize function calls through an associated DAO.\\n/// @dev Make sure to call `__DaoAuthorizableUpgradeable_init` during initialization of the inheriting contract.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract DaoAuthorizableUpgradeable is ContextUpgradeable {\\n /// @notice The associated DAO managing the permissions of inheriting contracts.\\n IDAO private dao_;\\n\\n /// @notice Initializes the contract by setting the associated DAO.\\n /// @param _dao The associated DAO address.\\n // solhint-disable-next-line func-name-mixedcase\\n function __DaoAuthorizableUpgradeable_init(IDAO _dao) internal onlyInitializing {\\n dao_ = _dao;\\n }\\n\\n /// @notice Returns the DAO contract.\\n /// @return The DAO contract.\\n function dao() public view returns (IDAO) {\\n return dao_;\\n }\\n\\n /// @notice A modifier to make functions on inheriting contracts authorized. Permissions to call the function are checked through the associated DAO's permission manager.\\n /// @param _permissionId The permission identifier required to call the method this modifier is applied to.\\n modifier auth(bytes32 _permissionId) {\\n _auth(dao_, address(this), _msgSender(), _permissionId, _msgData());\\n _;\\n }\\n\\n /// @notice This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain (see [OpenZeppelin's guide about storage gaps](https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps)).\\n uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0x7fac6b01b037ba1cb9d6a22d3f43b0785037dcf496ffb672434d9bf7227d2585\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/auth.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice Thrown if a call is unauthorized in the associated DAO.\\n/// @param dao The associated DAO.\\n/// @param where The context in which the authorization reverted.\\n/// @param who The address (EOA or contract) missing the permission.\\n/// @param permissionId The permission identifier.\\nerror DaoUnauthorized(address dao, address where, address who, bytes32 permissionId);\\n\\n/// @notice A free function checking if a caller is granted permissions on a target contract via a permission identifier that redirects the approval to a `PermissionCondition` if this was specified in the setup.\\n/// @param _where The address of the target contract for which `who` receives permission.\\n/// @param _who The address (EOA or contract) owning the permission.\\n/// @param _permissionId The permission identifier.\\n/// @param _data The optional data passed to the `PermissionCondition` registered.\\n/// @custom:security-contact sirt@aragon.org\\nfunction _auth(\\n IDAO _dao,\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes calldata _data\\n) view {\\n if (!_dao.hasPermission(_where, _who, _permissionId, _data))\\n revert DaoUnauthorized({\\n dao: address(_dao),\\n where: _where,\\n who: _who,\\n permissionId: _permissionId\\n });\\n}\\n\",\"keccak256\":\"0x878764b4f87fe0651fb3798fb9cb87c952f8c6caf6ae79c7f09de84df6c00298\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[{"astId":372,"contract":"src/permission/auth/DaoAuthorizableUpgradeable.sol:DaoAuthorizableUpgradeable","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":375,"contract":"src/permission/auth/DaoAuthorizableUpgradeable.sol:DaoAuthorizableUpgradeable","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":2592,"contract":"src/permission/auth/DaoAuthorizableUpgradeable.sol:DaoAuthorizableUpgradeable","label":"__gap","offset":0,"slot":"1","type":"t_array(t_uint256)50_storage"},{"astId":13111,"contract":"src/permission/auth/DaoAuthorizableUpgradeable.sol:DaoAuthorizableUpgradeable","label":"dao_","offset":0,"slot":"51","type":"t_contract(IDAO)10865"},{"astId":13160,"contract":"src/permission/auth/DaoAuthorizableUpgradeable.sol:DaoAuthorizableUpgradeable","label":"__gap","offset":0,"slot":"52","type":"t_array(t_uint256)49_storage"}],"types":{"t_array(t_uint256)49_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[49]","numberOfBytes":"1568"},"t_array(t_uint256)50_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[50]","numberOfBytes":"1600"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_contract(IDAO)10865":{"encoding":"inplace","label":"contract IDAO","numberOfBytes":"20"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"kind":"user","methods":{"dao()":{"notice":"Returns the DAO contract."}},"notice":"An abstract contract providing a meta-transaction compatible modifier for upgradeable or cloneable contracts to authorize function calls through an associated DAO.","version":1}}},"src/permission/condition/IPermissionCondition.sol":{"IPermissionCondition":{"abi":[{"inputs":[{"internalType":"address","name":"_where","type":"address"},{"internalType":"address","name":"_who","type":"address"},{"internalType":"bytes32","name":"_permissionId","type":"bytes32"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"isGranted","outputs":[{"internalType":"bool","name":"isPermitted","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"author":"Aragon X - 2021-2023","custom:security-contact":"sirt@aragon.org","details":"To attach a condition to a permission, the `grantWithCondition` function must be used and refer to the implementing contract's address with the `condition` argument.","kind":"dev","methods":{"isGranted(address,address,bytes32,bytes)":{"params":{"_data":"Optional data passed to the `PermissionCondition` implementation.","_permissionId":"The permission identifier.","_where":"The address of the target contract.","_who":"The address (EOA or contract) for which the permissions are checked."},"returns":{"isPermitted":"Returns true if the call is permitted."}}},"title":"IPermissionCondition","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"isGranted(address,address,bytes32,bytes)":"2675fdd0"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_who\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_permissionId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"isGranted\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"isPermitted\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Aragon X - 2021-2023\",\"custom:security-contact\":\"sirt@aragon.org\",\"details\":\"To attach a condition to a permission, the `grantWithCondition` function must be used and refer to the implementing contract's address with the `condition` argument.\",\"kind\":\"dev\",\"methods\":{\"isGranted(address,address,bytes32,bytes)\":{\"params\":{\"_data\":\"Optional data passed to the `PermissionCondition` implementation.\",\"_permissionId\":\"The permission identifier.\",\"_where\":\"The address of the target contract.\",\"_who\":\"The address (EOA or contract) for which the permissions are checked.\"},\"returns\":{\"isPermitted\":\"Returns true if the call is permitted.\"}}},\"title\":\"IPermissionCondition\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"isGranted(address,address,bytes32,bytes)\":{\"notice\":\"Checks if a call is permitted.\"}},\"notice\":\"An interface to be implemented to support custom permission logic.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/permission/condition/IPermissionCondition.sol\":\"IPermissionCondition\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"src/permission/condition/IPermissionCondition.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IPermissionCondition\\n/// @author Aragon X - 2021-2023\\n/// @notice An interface to be implemented to support custom permission logic.\\n/// @dev To attach a condition to a permission, the `grantWithCondition` function must be used and refer to the implementing contract's address with the `condition` argument.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IPermissionCondition {\\n /// @notice Checks if a call is permitted.\\n /// @param _where The address of the target contract.\\n /// @param _who The address (EOA or contract) for which the permissions are checked.\\n /// @param _permissionId The permission identifier.\\n /// @param _data Optional data passed to the `PermissionCondition` implementation.\\n /// @return isPermitted Returns true if the call is permitted.\\n function isGranted(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes calldata _data\\n ) external view returns (bool isPermitted);\\n}\\n\",\"keccak256\":\"0xc3280622bdb57856f0b20ded71537fc99b344d1e6a0430abfaca8304a9ece922\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{"isGranted(address,address,bytes32,bytes)":{"notice":"Checks if a call is permitted."}},"notice":"An interface to be implemented to support custom permission logic.","version":1}}},"src/permission/condition/PermissionCondition.sol":{"PermissionCondition":{"abi":[{"inputs":[{"internalType":"address","name":"_where","type":"address"},{"internalType":"address","name":"_who","type":"address"},{"internalType":"bytes32","name":"_permissionId","type":"bytes32"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"isGranted","outputs":[{"internalType":"bool","name":"isPermitted","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"protocolVersion","outputs":[{"internalType":"uint8[3]","name":"","type":"uint8[3]"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"author":"Aragon X - 2023","custom:security-contact":"sirt@aragon.org","kind":"dev","methods":{"isGranted(address,address,bytes32,bytes)":{"params":{"_data":"Optional data passed to the `PermissionCondition` implementation.","_permissionId":"The permission identifier.","_where":"The address of the target contract.","_who":"The address (EOA or contract) for which the permissions are checked."},"returns":{"isPermitted":"Returns true if the call is permitted."}},"protocolVersion()":{"details":"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.","returns":{"_0":"Returns the semantic Aragon OSx protocol version number."}},"supportsInterface(bytes4)":{"params":{"_interfaceId":"The ID of the interface."},"returns":{"_0":"Returns `true` if the interface is supported."}}},"title":"PermissionCondition","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"isGranted(address,address,bytes32,bytes)":"2675fdd0","protocolVersion()":"2ae9c600","supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_who\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_permissionId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"isGranted\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"isPermitted\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"protocolVersion\",\"outputs\":[{\"internalType\":\"uint8[3]\",\"name\":\"\",\"type\":\"uint8[3]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Aragon X - 2023\",\"custom:security-contact\":\"sirt@aragon.org\",\"kind\":\"dev\",\"methods\":{\"isGranted(address,address,bytes32,bytes)\":{\"params\":{\"_data\":\"Optional data passed to the `PermissionCondition` implementation.\",\"_permissionId\":\"The permission identifier.\",\"_where\":\"The address of the target contract.\",\"_who\":\"The address (EOA or contract) for which the permissions are checked.\"},\"returns\":{\"isPermitted\":\"Returns true if the call is permitted.\"}},\"protocolVersion()\":{\"details\":\"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\",\"returns\":{\"_0\":\"Returns the semantic Aragon OSx protocol version number.\"}},\"supportsInterface(bytes4)\":{\"params\":{\"_interfaceId\":\"The ID of the interface.\"},\"returns\":{\"_0\":\"Returns `true` if the interface is supported.\"}}},\"title\":\"PermissionCondition\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"isGranted(address,address,bytes32,bytes)\":{\"notice\":\"Checks if a call is permitted.\"},\"protocolVersion()\":{\"notice\":\"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Checks if an interface is supported by this or its parent contract.\"}},\"notice\":\"An abstract contract for non-upgradeable contracts instantiated via the `new` keyword to inherit from to support customary permissions depending on arbitrary on-chain state.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/permission/condition/PermissionCondition.sol\":\"PermissionCondition\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165 is IERC165 {\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165).interfaceId;\\n }\\n}\\n\",\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"src/permission/condition/IPermissionCondition.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IPermissionCondition\\n/// @author Aragon X - 2021-2023\\n/// @notice An interface to be implemented to support custom permission logic.\\n/// @dev To attach a condition to a permission, the `grantWithCondition` function must be used and refer to the implementing contract's address with the `condition` argument.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IPermissionCondition {\\n /// @notice Checks if a call is permitted.\\n /// @param _where The address of the target contract.\\n /// @param _who The address (EOA or contract) for which the permissions are checked.\\n /// @param _permissionId The permission identifier.\\n /// @param _data Optional data passed to the `PermissionCondition` implementation.\\n /// @return isPermitted Returns true if the call is permitted.\\n function isGranted(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes calldata _data\\n ) external view returns (bool isPermitted);\\n}\\n\",\"keccak256\":\"0xc3280622bdb57856f0b20ded71537fc99b344d1e6a0430abfaca8304a9ece922\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/condition/PermissionCondition.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ERC165} from \\\"@openzeppelin/contracts/utils/introspection/ERC165.sol\\\";\\n\\nimport {IProtocolVersion} from \\\"../../utils/versioning/IProtocolVersion.sol\\\";\\nimport {ProtocolVersion} from \\\"../../utils/versioning/ProtocolVersion.sol\\\";\\nimport {IPermissionCondition} from \\\"./IPermissionCondition.sol\\\";\\n\\n/// @title PermissionCondition\\n/// @author Aragon X - 2023\\n/// @notice An abstract contract for non-upgradeable contracts instantiated via the `new` keyword to inherit from to support customary permissions depending on arbitrary on-chain state.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract PermissionCondition is ERC165, IPermissionCondition, ProtocolVersion {\\n /// @notice Checks if an interface is supported by this or its parent contract.\\n /// @param _interfaceId The ID of the interface.\\n /// @return Returns `true` if the interface is supported.\\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\\n return\\n _interfaceId == type(IPermissionCondition).interfaceId ||\\n _interfaceId == type(IProtocolVersion).interfaceId ||\\n super.supportsInterface(_interfaceId);\\n }\\n}\\n\",\"keccak256\":\"0xd952ceadfde4fdb7c26d1df7b7e401846e6134bee70364e91664504b7a9aa52a\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/IProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IProtocolVersion\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the semantic Aragon OSx protocol version number.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IProtocolVersion {\\n /// @notice Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\\n /// @return _version Returns the semantic Aragon OSx protocol version number.\\n /// @dev This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\\n function protocolVersion() external view returns (uint8[3] memory _version);\\n}\\n\",\"keccak256\":\"0x00a4da654d21dc1bdadbdc8bd54bb86c378c56f85e461ccc31303628ea621361\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/ProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IProtocolVersion} from \\\"./IProtocolVersion.sol\\\";\\n\\n/// @title ProtocolVersion\\n/// @author Aragon X - 2023\\n/// @notice An abstract, stateless, non-upgradeable contract providing the current Aragon OSx protocol version number.\\n/// @dev Do not add any new variables to this contract that would shift down storage in the inheritance chain.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract ProtocolVersion is IProtocolVersion {\\n // IMPORTANT: Do not add any storage variable, see the above notice.\\n\\n /// @inheritdoc IProtocolVersion\\n function protocolVersion() public pure returns (uint8[3] memory) {\\n return [1, 4, 0];\\n }\\n}\\n\",\"keccak256\":\"0x3975c937be935f687c6b6b8f379071232681e98cf04b175d72781b819ea52bdb\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{"isGranted(address,address,bytes32,bytes)":{"notice":"Checks if a call is permitted."},"protocolVersion()":{"notice":"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with."},"supportsInterface(bytes4)":{"notice":"Checks if an interface is supported by this or its parent contract."}},"notice":"An abstract contract for non-upgradeable contracts instantiated via the `new` keyword to inherit from to support customary permissions depending on arbitrary on-chain state.","version":1}}},"src/permission/condition/PermissionConditionUpgradeable.sol":{"PermissionConditionUpgradeable":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"inputs":[{"internalType":"address","name":"_where","type":"address"},{"internalType":"address","name":"_who","type":"address"},{"internalType":"bytes32","name":"_permissionId","type":"bytes32"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"isGranted","outputs":[{"internalType":"bool","name":"isPermitted","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"protocolVersion","outputs":[{"internalType":"uint8[3]","name":"","type":"uint8[3]"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"author":"Aragon X - 2023","custom:security-contact":"sirt@aragon.org","kind":"dev","methods":{"isGranted(address,address,bytes32,bytes)":{"params":{"_data":"Optional data passed to the `PermissionCondition` implementation.","_permissionId":"The permission identifier.","_where":"The address of the target contract.","_who":"The address (EOA or contract) for which the permissions are checked."},"returns":{"isPermitted":"Returns true if the call is permitted."}},"protocolVersion()":{"details":"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.","returns":{"_0":"Returns the semantic Aragon OSx protocol version number."}},"supportsInterface(bytes4)":{"params":{"_interfaceId":"The ID of the interface."},"returns":{"_0":"Returns `true` if the interface is supported."}}},"title":"PermissionConditionUpgradeable","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"isGranted(address,address,bytes32,bytes)":"2675fdd0","protocolVersion()":"2ae9c600","supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_who\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_permissionId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"isGranted\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"isPermitted\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"protocolVersion\",\"outputs\":[{\"internalType\":\"uint8[3]\",\"name\":\"\",\"type\":\"uint8[3]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Aragon X - 2023\",\"custom:security-contact\":\"sirt@aragon.org\",\"kind\":\"dev\",\"methods\":{\"isGranted(address,address,bytes32,bytes)\":{\"params\":{\"_data\":\"Optional data passed to the `PermissionCondition` implementation.\",\"_permissionId\":\"The permission identifier.\",\"_where\":\"The address of the target contract.\",\"_who\":\"The address (EOA or contract) for which the permissions are checked.\"},\"returns\":{\"isPermitted\":\"Returns true if the call is permitted.\"}},\"protocolVersion()\":{\"details\":\"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\",\"returns\":{\"_0\":\"Returns the semantic Aragon OSx protocol version number.\"}},\"supportsInterface(bytes4)\":{\"params\":{\"_interfaceId\":\"The ID of the interface.\"},\"returns\":{\"_0\":\"Returns `true` if the interface is supported.\"}}},\"title\":\"PermissionConditionUpgradeable\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"isGranted(address,address,bytes32,bytes)\":{\"notice\":\"Checks if a call is permitted.\"},\"protocolVersion()\":{\"notice\":\"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Checks if an interface is supported by this or its parent contract.\"}},\"notice\":\"An abstract contract for upgradeable or cloneable contracts to inherit from and to support customary permissions depending on arbitrary on-chain state.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/permission/condition/PermissionConditionUpgradeable.sol\":\"PermissionConditionUpgradeable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165Upgradeable.sol\\\";\\nimport {Initializable} from \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165Upgradeable is Initializable, IERC165Upgradeable {\\n function __ERC165_init() internal onlyInitializing {\\n }\\n\\n function __ERC165_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165Upgradeable).interfaceId;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0xd90d7723512df65ae417adaf0801042940f0dabd60039ceeaffe34aa5b238da1\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165Upgradeable {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\"},\"src/permission/condition/IPermissionCondition.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IPermissionCondition\\n/// @author Aragon X - 2021-2023\\n/// @notice An interface to be implemented to support custom permission logic.\\n/// @dev To attach a condition to a permission, the `grantWithCondition` function must be used and refer to the implementing contract's address with the `condition` argument.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IPermissionCondition {\\n /// @notice Checks if a call is permitted.\\n /// @param _where The address of the target contract.\\n /// @param _who The address (EOA or contract) for which the permissions are checked.\\n /// @param _permissionId The permission identifier.\\n /// @param _data Optional data passed to the `PermissionCondition` implementation.\\n /// @return isPermitted Returns true if the call is permitted.\\n function isGranted(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes calldata _data\\n ) external view returns (bool isPermitted);\\n}\\n\",\"keccak256\":\"0xc3280622bdb57856f0b20ded71537fc99b344d1e6a0430abfaca8304a9ece922\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/condition/PermissionConditionUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ERC165Upgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\\\";\\n\\nimport {IProtocolVersion} from \\\"../../utils/versioning/IProtocolVersion.sol\\\";\\nimport {ProtocolVersion} from \\\"../../utils/versioning/ProtocolVersion.sol\\\";\\nimport {IPermissionCondition} from \\\"./IPermissionCondition.sol\\\";\\n\\n/// @title PermissionConditionUpgradeable\\n/// @author Aragon X - 2023\\n/// @notice An abstract contract for upgradeable or cloneable contracts to inherit from and to support customary permissions depending on arbitrary on-chain state.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract PermissionConditionUpgradeable is\\n ERC165Upgradeable,\\n IPermissionCondition,\\n ProtocolVersion\\n{\\n /// @notice Checks if an interface is supported by this or its parent contract.\\n /// @param _interfaceId The ID of the interface.\\n /// @return Returns `true` if the interface is supported.\\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\\n return\\n _interfaceId == type(IPermissionCondition).interfaceId ||\\n _interfaceId == type(IProtocolVersion).interfaceId ||\\n super.supportsInterface(_interfaceId);\\n }\\n}\\n\",\"keccak256\":\"0x0d4eb8813760958455448f862015209d01904cc2a4fa15ccb5c85ca13548e275\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/IProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IProtocolVersion\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the semantic Aragon OSx protocol version number.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IProtocolVersion {\\n /// @notice Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\\n /// @return _version Returns the semantic Aragon OSx protocol version number.\\n /// @dev This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\\n function protocolVersion() external view returns (uint8[3] memory _version);\\n}\\n\",\"keccak256\":\"0x00a4da654d21dc1bdadbdc8bd54bb86c378c56f85e461ccc31303628ea621361\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/ProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IProtocolVersion} from \\\"./IProtocolVersion.sol\\\";\\n\\n/// @title ProtocolVersion\\n/// @author Aragon X - 2023\\n/// @notice An abstract, stateless, non-upgradeable contract providing the current Aragon OSx protocol version number.\\n/// @dev Do not add any new variables to this contract that would shift down storage in the inheritance chain.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract ProtocolVersion is IProtocolVersion {\\n // IMPORTANT: Do not add any storage variable, see the above notice.\\n\\n /// @inheritdoc IProtocolVersion\\n function protocolVersion() public pure returns (uint8[3] memory) {\\n return [1, 4, 0];\\n }\\n}\\n\",\"keccak256\":\"0x3975c937be935f687c6b6b8f379071232681e98cf04b175d72781b819ea52bdb\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[{"astId":372,"contract":"src/permission/condition/PermissionConditionUpgradeable.sol:PermissionConditionUpgradeable","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":375,"contract":"src/permission/condition/PermissionConditionUpgradeable.sol:PermissionConditionUpgradeable","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":2821,"contract":"src/permission/condition/PermissionConditionUpgradeable.sol:PermissionConditionUpgradeable","label":"__gap","offset":0,"slot":"1","type":"t_array(t_uint256)50_storage"}],"types":{"t_array(t_uint256)50_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[50]","numberOfBytes":"1600"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"kind":"user","methods":{"isGranted(address,address,bytes32,bytes)":{"notice":"Checks if a call is permitted."},"protocolVersion()":{"notice":"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with."},"supportsInterface(bytes4)":{"notice":"Checks if an interface is supported by this or its parent contract."}},"notice":"An abstract contract for upgradeable or cloneable contracts to inherit from and to support customary permissions depending on arbitrary on-chain state.","version":1}}},"src/plugin/IPlugin.sol":{"IPlugin":{"abi":[{"inputs":[],"name":"pluginType","outputs":[{"internalType":"enum IPlugin.PluginType","name":"","type":"uint8"}],"stateMutability":"view","type":"function"}],"devdoc":{"author":"Aragon X - 2022-2023","custom:security-contact":"sirt@aragon.org","kind":"dev","methods":{},"title":"IPlugin","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"pluginType()":"41de6830"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"pluginType\",\"outputs\":[{\"internalType\":\"enum IPlugin.PluginType\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Aragon X - 2022-2023\",\"custom:security-contact\":\"sirt@aragon.org\",\"kind\":\"dev\",\"methods\":{},\"title\":\"IPlugin\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"pluginType()\":{\"notice\":\"Returns the plugin's type\"}},\"notice\":\"An interface defining the traits of a plugin.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/plugin/IPlugin.sol\":\"IPlugin\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"src/plugin/IPlugin.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IPlugin\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the traits of a plugin.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IPlugin {\\n enum PluginType {\\n UUPS,\\n Cloneable,\\n Constructable\\n }\\n\\n /// @notice Returns the plugin's type\\n function pluginType() external view returns (PluginType);\\n}\\n\",\"keccak256\":\"0xc57cd0d10b6380ab7f54c713a509e88fd8f4ad9288313a0e8e12b8887817ddfe\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{"pluginType()":{"notice":"Returns the plugin's type"}},"notice":"An interface defining the traits of a plugin.","version":1}}},"src/plugin/Plugin.sol":{"Plugin":{"abi":[{"inputs":[],"name":"dao","outputs":[{"internalType":"contract IDAO","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pluginType","outputs":[{"internalType":"enum IPlugin.PluginType","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"protocolVersion","outputs":[{"internalType":"uint8[3]","name":"","type":"uint8[3]"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"author":"Aragon X - 2022-2023","custom:security-contact":"sirt@aragon.org","kind":"dev","methods":{"constructor":{"params":{"_dao":"The DAO contract."}},"dao()":{"returns":{"_0":"The DAO contract."}},"protocolVersion()":{"details":"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.","returns":{"_0":"Returns the semantic Aragon OSx protocol version number."}},"supportsInterface(bytes4)":{"params":{"_interfaceId":"The ID of the interface."},"returns":{"_0":"Returns `true` if the interface is supported."}}},"title":"Plugin","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"dao()":"4162169f","pluginType()":"41de6830","protocolVersion()":"2ae9c600","supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"dao\",\"outputs\":[{\"internalType\":\"contract IDAO\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pluginType\",\"outputs\":[{\"internalType\":\"enum IPlugin.PluginType\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"protocolVersion\",\"outputs\":[{\"internalType\":\"uint8[3]\",\"name\":\"\",\"type\":\"uint8[3]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Aragon X - 2022-2023\",\"custom:security-contact\":\"sirt@aragon.org\",\"kind\":\"dev\",\"methods\":{\"constructor\":{\"params\":{\"_dao\":\"The DAO contract.\"}},\"dao()\":{\"returns\":{\"_0\":\"The DAO contract.\"}},\"protocolVersion()\":{\"details\":\"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\",\"returns\":{\"_0\":\"Returns the semantic Aragon OSx protocol version number.\"}},\"supportsInterface(bytes4)\":{\"params\":{\"_interfaceId\":\"The ID of the interface.\"},\"returns\":{\"_0\":\"Returns `true` if the interface is supported.\"}}},\"title\":\"Plugin\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"constructor\":{\"notice\":\"Constructs the plugin by storing the associated DAO.\"},\"dao()\":{\"notice\":\"Returns the DAO contract.\"},\"pluginType()\":{\"notice\":\"Returns the plugin's type\"},\"protocolVersion()\":{\"notice\":\"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Checks if this or the parent contract supports an interface by its ID.\"}},\"notice\":\"An abstract, non-upgradeable contract to inherit from when creating a plugin being deployed via the `new` keyword.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/plugin/Plugin.sol\":\"Plugin\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n function _contextSuffixLength() internal view virtual returns (uint256) {\\n return 0;\\n }\\n}\\n\",\"keccak256\":\"0xa92e4fa126feb6907daa0513ddd816b2eb91f30a808de54f63c17d0e162c3439\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165 is IERC165 {\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165).interfaceId;\\n }\\n}\\n\",\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"src/dao/IDAO.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IDAO\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for DAOs within the Aragon App DAO framework.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IDAO {\\n /// @notice The action struct to be consumed by the DAO's `execute` function resulting in an external call.\\n /// @param to The address to call.\\n /// @param value The native token value to be sent with the call.\\n /// @param data The bytes-encoded function selector and calldata for the call.\\n struct Action {\\n address to;\\n uint256 value;\\n bytes data;\\n }\\n\\n /// @notice Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\\n /// @param _where The address of the contract.\\n /// @param _who The address of a EOA or contract to give the permissions.\\n /// @param _permissionId The permission identifier.\\n /// @param _data The optional data passed to the `PermissionCondition` registered.\\n /// @return Returns true if the address has permission, false if not.\\n function hasPermission(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes memory _data\\n ) external view returns (bool);\\n\\n /// @notice Updates the DAO metadata (e.g., an IPFS hash).\\n /// @param _metadata The IPFS hash of the new metadata object.\\n function setMetadata(bytes calldata _metadata) external;\\n\\n /// @notice Emitted when the DAO metadata is updated.\\n /// @param metadata The IPFS hash of the new metadata object.\\n event MetadataSet(bytes metadata);\\n\\n /// @notice Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted.\\n /// @param _callId The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce.\\n /// @param _actions The array of actions.\\n /// @param _allowFailureMap A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @return The array of results obtained from the executed actions in `bytes`.\\n /// @return The resulting failure map containing the actions have actually failed.\\n function execute(\\n bytes32 _callId,\\n Action[] memory _actions,\\n uint256 _allowFailureMap\\n ) external returns (bytes[] memory, uint256);\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param actor The address of the caller.\\n /// @param callId The ID of the call.\\n /// @param actions The array of actions executed.\\n /// @param allowFailureMap The allow failure map encoding which actions are allowed to fail.\\n /// @param failureMap The failure map encoding which actions have failed.\\n /// @param execResults The array with the results of the executed actions.\\n /// @dev The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce.\\n event Executed(\\n address indexed actor,\\n bytes32 callId,\\n Action[] actions,\\n uint256 allowFailureMap,\\n uint256 failureMap,\\n bytes[] execResults\\n );\\n\\n /// @notice Emitted when a standard callback is registered.\\n /// @param interfaceId The ID of the interface.\\n /// @param callbackSelector The selector of the callback function.\\n /// @param magicNumber The magic number to be registered for the callback function selector.\\n event StandardCallbackRegistered(\\n bytes4 interfaceId,\\n bytes4 callbackSelector,\\n bytes4 magicNumber\\n );\\n\\n /// @notice Deposits (native) tokens to the DAO contract with a reference string.\\n /// @param _token The address of the token or address(0) in case of the native token.\\n /// @param _amount The amount of tokens to deposit.\\n /// @param _reference The reference describing the deposit reason.\\n function deposit(address _token, uint256 _amount, string calldata _reference) external payable;\\n\\n /// @notice Emitted when a token deposit has been made to the DAO.\\n /// @param sender The address of the sender.\\n /// @param token The address of the deposited token.\\n /// @param amount The amount of tokens deposited.\\n /// @param _reference The reference describing the deposit reason.\\n event Deposited(\\n address indexed sender,\\n address indexed token,\\n uint256 amount,\\n string _reference\\n );\\n\\n /// @notice Emitted when a native token deposit has been made to the DAO.\\n /// @dev This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).\\n /// @param sender The address of the sender.\\n /// @param amount The amount of native tokens deposited.\\n event NativeTokenDeposited(address sender, uint256 amount);\\n\\n /// @notice Setter for the trusted forwarder verifying the meta transaction.\\n /// @param _trustedForwarder The trusted forwarder address.\\n function setTrustedForwarder(address _trustedForwarder) external;\\n\\n /// @notice Getter for the trusted forwarder verifying the meta transaction.\\n /// @return The trusted forwarder address.\\n function getTrustedForwarder() external view returns (address);\\n\\n /// @notice Emitted when a new TrustedForwarder is set on the DAO.\\n /// @param forwarder the new forwarder address.\\n event TrustedForwarderSet(address forwarder);\\n\\n /// @notice Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\\n /// @param _hash The hash of the data to be signed.\\n /// @param _signature The signature byte array associated with `_hash`.\\n /// @return Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not.\\n function isValidSignature(bytes32 _hash, bytes memory _signature) external returns (bytes4);\\n\\n /// @notice Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\\n /// @param _interfaceId The ID of the interface.\\n /// @param _callbackSelector The selector of the callback function.\\n /// @param _magicNumber The magic number to be registered for the function signature.\\n function registerStandardCallback(\\n bytes4 _interfaceId,\\n bytes4 _callbackSelector,\\n bytes4 _magicNumber\\n ) external;\\n\\n /// @notice Removed function being left here to not corrupt the IDAO interface ID. Any call will revert.\\n /// @dev Introduced in v1.0.0. Removed in v1.4.0.\\n function setSignatureValidator(address) external;\\n}\\n\",\"keccak256\":\"0xb7f615523c26de042edce98731c658f44a1edb2464387ac1b642c4c69f57128e\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/DaoAuthorizable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {Context} from \\\"@openzeppelin/contracts/utils/Context.sol\\\";\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\nimport {_auth} from \\\"./auth.sol\\\";\\n\\n/// @title DaoAuthorizable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract contract providing a meta-transaction compatible modifier for non-upgradeable contracts instantiated via the `new` keyword to authorize function calls through an associated DAO.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract DaoAuthorizable is Context {\\n /// @notice The associated DAO managing the permissions of inheriting contracts.\\n IDAO private immutable DAO;\\n\\n /// @notice Constructs the contract by setting the associated DAO.\\n /// @param _dao The associated DAO address.\\n constructor(IDAO _dao) {\\n DAO = _dao;\\n }\\n\\n /// @notice Returns the DAO contract.\\n /// @return The DAO contract.\\n function dao() public view returns (IDAO) {\\n return DAO;\\n }\\n\\n /// @notice A modifier to make functions on inheriting contracts authorized. Permissions to call the function are checked through the associated DAO's permission manager.\\n /// @param _permissionId The permission identifier required to call the method this modifier is applied to.\\n modifier auth(bytes32 _permissionId) {\\n _auth(DAO, address(this), _msgSender(), _permissionId, _msgData());\\n _;\\n }\\n}\\n\",\"keccak256\":\"0x3d0be91b4f5854ed2d2c51b53fe7ffba58cc968e972015cf60eb3ea100543e64\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/auth.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice Thrown if a call is unauthorized in the associated DAO.\\n/// @param dao The associated DAO.\\n/// @param where The context in which the authorization reverted.\\n/// @param who The address (EOA or contract) missing the permission.\\n/// @param permissionId The permission identifier.\\nerror DaoUnauthorized(address dao, address where, address who, bytes32 permissionId);\\n\\n/// @notice A free function checking if a caller is granted permissions on a target contract via a permission identifier that redirects the approval to a `PermissionCondition` if this was specified in the setup.\\n/// @param _where The address of the target contract for which `who` receives permission.\\n/// @param _who The address (EOA or contract) owning the permission.\\n/// @param _permissionId The permission identifier.\\n/// @param _data The optional data passed to the `PermissionCondition` registered.\\n/// @custom:security-contact sirt@aragon.org\\nfunction _auth(\\n IDAO _dao,\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes calldata _data\\n) view {\\n if (!_dao.hasPermission(_where, _who, _permissionId, _data))\\n revert DaoUnauthorized({\\n dao: address(_dao),\\n where: _where,\\n who: _who,\\n permissionId: _permissionId\\n });\\n}\\n\",\"keccak256\":\"0x878764b4f87fe0651fb3798fb9cb87c952f8c6caf6ae79c7f09de84df6c00298\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/IPlugin.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IPlugin\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the traits of a plugin.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IPlugin {\\n enum PluginType {\\n UUPS,\\n Cloneable,\\n Constructable\\n }\\n\\n /// @notice Returns the plugin's type\\n function pluginType() external view returns (PluginType);\\n}\\n\",\"keccak256\":\"0xc57cd0d10b6380ab7f54c713a509e88fd8f4ad9288313a0e8e12b8887817ddfe\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/Plugin.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ERC165} from \\\"@openzeppelin/contracts/utils/introspection/ERC165.sol\\\";\\n\\nimport {IProtocolVersion} from \\\"../utils/versioning/IProtocolVersion.sol\\\";\\nimport {ProtocolVersion} from \\\"../utils/versioning/ProtocolVersion.sol\\\";\\nimport {DaoAuthorizable} from \\\"../permission/auth/DaoAuthorizable.sol\\\";\\nimport {IDAO} from \\\"../dao/IDAO.sol\\\";\\nimport {IPlugin} from \\\"./IPlugin.sol\\\";\\n\\n/// @title Plugin\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract, non-upgradeable contract to inherit from when creating a plugin being deployed via the `new` keyword.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract Plugin is IPlugin, ERC165, DaoAuthorizable, ProtocolVersion {\\n /// @notice Constructs the plugin by storing the associated DAO.\\n /// @param _dao The DAO contract.\\n constructor(IDAO _dao) DaoAuthorizable(_dao) {}\\n\\n /// @inheritdoc IPlugin\\n function pluginType() public pure override returns (PluginType) {\\n return PluginType.Constructable;\\n }\\n\\n /// @notice Checks if this or the parent contract supports an interface by its ID.\\n /// @param _interfaceId The ID of the interface.\\n /// @return Returns `true` if the interface is supported.\\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\\n return\\n _interfaceId == type(IPlugin).interfaceId ||\\n _interfaceId == type(IProtocolVersion).interfaceId ||\\n super.supportsInterface(_interfaceId);\\n }\\n}\\n\",\"keccak256\":\"0xdda9f39f3f06fa66dc1b0688576143db5bd0aafdb557de36563de0aa68829135\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/IProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IProtocolVersion\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the semantic Aragon OSx protocol version number.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IProtocolVersion {\\n /// @notice Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\\n /// @return _version Returns the semantic Aragon OSx protocol version number.\\n /// @dev This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\\n function protocolVersion() external view returns (uint8[3] memory _version);\\n}\\n\",\"keccak256\":\"0x00a4da654d21dc1bdadbdc8bd54bb86c378c56f85e461ccc31303628ea621361\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/ProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IProtocolVersion} from \\\"./IProtocolVersion.sol\\\";\\n\\n/// @title ProtocolVersion\\n/// @author Aragon X - 2023\\n/// @notice An abstract, stateless, non-upgradeable contract providing the current Aragon OSx protocol version number.\\n/// @dev Do not add any new variables to this contract that would shift down storage in the inheritance chain.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract ProtocolVersion is IProtocolVersion {\\n // IMPORTANT: Do not add any storage variable, see the above notice.\\n\\n /// @inheritdoc IProtocolVersion\\n function protocolVersion() public pure returns (uint8[3] memory) {\\n return [1, 4, 0];\\n }\\n}\\n\",\"keccak256\":\"0x3975c937be935f687c6b6b8f379071232681e98cf04b175d72781b819ea52bdb\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{"constructor":{"notice":"Constructs the plugin by storing the associated DAO."},"dao()":{"notice":"Returns the DAO contract."},"pluginType()":{"notice":"Returns the plugin's type"},"protocolVersion()":{"notice":"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with."},"supportsInterface(bytes4)":{"notice":"Checks if this or the parent contract supports an interface by its ID."}},"notice":"An abstract, non-upgradeable contract to inherit from when creating a plugin being deployed via the `new` keyword.","version":1}}},"src/plugin/PluginCloneable.sol":{"PluginCloneable":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"inputs":[],"name":"dao","outputs":[{"internalType":"contract IDAO","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pluginType","outputs":[{"internalType":"enum IPlugin.PluginType","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"protocolVersion","outputs":[{"internalType":"uint8[3]","name":"","type":"uint8[3]"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"author":"Aragon X - 2022-2023","custom:security-contact":"sirt@aragon.org","kind":"dev","methods":{"constructor":{"custom:oz-upgrades-unsafe-allow":"constructor"},"dao()":{"returns":{"_0":"The DAO contract."}},"protocolVersion()":{"details":"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.","returns":{"_0":"Returns the semantic Aragon OSx protocol version number."}},"supportsInterface(bytes4)":{"params":{"_interfaceId":"The ID of the interface."},"returns":{"_0":"Returns `true` if the interface is supported."}}},"title":"PluginCloneable","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"dao()":"4162169f","pluginType()":"41de6830","protocolVersion()":"2ae9c600","supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"dao\",\"outputs\":[{\"internalType\":\"contract IDAO\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pluginType\",\"outputs\":[{\"internalType\":\"enum IPlugin.PluginType\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"protocolVersion\",\"outputs\":[{\"internalType\":\"uint8[3]\",\"name\":\"\",\"type\":\"uint8[3]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Aragon X - 2022-2023\",\"custom:security-contact\":\"sirt@aragon.org\",\"kind\":\"dev\",\"methods\":{\"constructor\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor\"},\"dao()\":{\"returns\":{\"_0\":\"The DAO contract.\"}},\"protocolVersion()\":{\"details\":\"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\",\"returns\":{\"_0\":\"Returns the semantic Aragon OSx protocol version number.\"}},\"supportsInterface(bytes4)\":{\"params\":{\"_interfaceId\":\"The ID of the interface.\"},\"returns\":{\"_0\":\"Returns `true` if the interface is supported.\"}}},\"title\":\"PluginCloneable\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"constructor\":{\"notice\":\"Disables the initializers on the implementation contract to prevent it from being left uninitialized.\"},\"dao()\":{\"notice\":\"Returns the DAO contract.\"},\"pluginType()\":{\"notice\":\"Returns the plugin's type\"},\"protocolVersion()\":{\"notice\":\"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Checks if this or the parent contract supports an interface by its ID.\"}},\"notice\":\"An abstract, non-upgradeable contract to inherit from when creating a plugin being deployed via the minimal clones pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)).\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/plugin/PluginCloneable.sol\":\"PluginCloneable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n function __Context_init() internal onlyInitializing {\\n }\\n\\n function __Context_init_unchained() internal onlyInitializing {\\n }\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n function _contextSuffixLength() internal view virtual returns (uint256) {\\n return 0;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x75097e35253e7fb282ee4d7f27a80eaacfa759923185bf17302a89cbc059c5ef\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165Upgradeable.sol\\\";\\nimport {Initializable} from \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165Upgradeable is Initializable, IERC165Upgradeable {\\n function __ERC165_init() internal onlyInitializing {\\n }\\n\\n function __ERC165_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165Upgradeable).interfaceId;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0xd90d7723512df65ae417adaf0801042940f0dabd60039ceeaffe34aa5b238da1\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165Upgradeable {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\"},\"src/dao/IDAO.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IDAO\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for DAOs within the Aragon App DAO framework.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IDAO {\\n /// @notice The action struct to be consumed by the DAO's `execute` function resulting in an external call.\\n /// @param to The address to call.\\n /// @param value The native token value to be sent with the call.\\n /// @param data The bytes-encoded function selector and calldata for the call.\\n struct Action {\\n address to;\\n uint256 value;\\n bytes data;\\n }\\n\\n /// @notice Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\\n /// @param _where The address of the contract.\\n /// @param _who The address of a EOA or contract to give the permissions.\\n /// @param _permissionId The permission identifier.\\n /// @param _data The optional data passed to the `PermissionCondition` registered.\\n /// @return Returns true if the address has permission, false if not.\\n function hasPermission(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes memory _data\\n ) external view returns (bool);\\n\\n /// @notice Updates the DAO metadata (e.g., an IPFS hash).\\n /// @param _metadata The IPFS hash of the new metadata object.\\n function setMetadata(bytes calldata _metadata) external;\\n\\n /// @notice Emitted when the DAO metadata is updated.\\n /// @param metadata The IPFS hash of the new metadata object.\\n event MetadataSet(bytes metadata);\\n\\n /// @notice Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted.\\n /// @param _callId The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce.\\n /// @param _actions The array of actions.\\n /// @param _allowFailureMap A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @return The array of results obtained from the executed actions in `bytes`.\\n /// @return The resulting failure map containing the actions have actually failed.\\n function execute(\\n bytes32 _callId,\\n Action[] memory _actions,\\n uint256 _allowFailureMap\\n ) external returns (bytes[] memory, uint256);\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param actor The address of the caller.\\n /// @param callId The ID of the call.\\n /// @param actions The array of actions executed.\\n /// @param allowFailureMap The allow failure map encoding which actions are allowed to fail.\\n /// @param failureMap The failure map encoding which actions have failed.\\n /// @param execResults The array with the results of the executed actions.\\n /// @dev The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce.\\n event Executed(\\n address indexed actor,\\n bytes32 callId,\\n Action[] actions,\\n uint256 allowFailureMap,\\n uint256 failureMap,\\n bytes[] execResults\\n );\\n\\n /// @notice Emitted when a standard callback is registered.\\n /// @param interfaceId The ID of the interface.\\n /// @param callbackSelector The selector of the callback function.\\n /// @param magicNumber The magic number to be registered for the callback function selector.\\n event StandardCallbackRegistered(\\n bytes4 interfaceId,\\n bytes4 callbackSelector,\\n bytes4 magicNumber\\n );\\n\\n /// @notice Deposits (native) tokens to the DAO contract with a reference string.\\n /// @param _token The address of the token or address(0) in case of the native token.\\n /// @param _amount The amount of tokens to deposit.\\n /// @param _reference The reference describing the deposit reason.\\n function deposit(address _token, uint256 _amount, string calldata _reference) external payable;\\n\\n /// @notice Emitted when a token deposit has been made to the DAO.\\n /// @param sender The address of the sender.\\n /// @param token The address of the deposited token.\\n /// @param amount The amount of tokens deposited.\\n /// @param _reference The reference describing the deposit reason.\\n event Deposited(\\n address indexed sender,\\n address indexed token,\\n uint256 amount,\\n string _reference\\n );\\n\\n /// @notice Emitted when a native token deposit has been made to the DAO.\\n /// @dev This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).\\n /// @param sender The address of the sender.\\n /// @param amount The amount of native tokens deposited.\\n event NativeTokenDeposited(address sender, uint256 amount);\\n\\n /// @notice Setter for the trusted forwarder verifying the meta transaction.\\n /// @param _trustedForwarder The trusted forwarder address.\\n function setTrustedForwarder(address _trustedForwarder) external;\\n\\n /// @notice Getter for the trusted forwarder verifying the meta transaction.\\n /// @return The trusted forwarder address.\\n function getTrustedForwarder() external view returns (address);\\n\\n /// @notice Emitted when a new TrustedForwarder is set on the DAO.\\n /// @param forwarder the new forwarder address.\\n event TrustedForwarderSet(address forwarder);\\n\\n /// @notice Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\\n /// @param _hash The hash of the data to be signed.\\n /// @param _signature The signature byte array associated with `_hash`.\\n /// @return Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not.\\n function isValidSignature(bytes32 _hash, bytes memory _signature) external returns (bytes4);\\n\\n /// @notice Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\\n /// @param _interfaceId The ID of the interface.\\n /// @param _callbackSelector The selector of the callback function.\\n /// @param _magicNumber The magic number to be registered for the function signature.\\n function registerStandardCallback(\\n bytes4 _interfaceId,\\n bytes4 _callbackSelector,\\n bytes4 _magicNumber\\n ) external;\\n\\n /// @notice Removed function being left here to not corrupt the IDAO interface ID. Any call will revert.\\n /// @dev Introduced in v1.0.0. Removed in v1.4.0.\\n function setSignatureValidator(address) external;\\n}\\n\",\"keccak256\":\"0xb7f615523c26de042edce98731c658f44a1edb2464387ac1b642c4c69f57128e\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/DaoAuthorizableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ContextUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\\\";\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\nimport {_auth} from \\\"./auth.sol\\\";\\n\\n/// @title DaoAuthorizableUpgradeable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract contract providing a meta-transaction compatible modifier for upgradeable or cloneable contracts to authorize function calls through an associated DAO.\\n/// @dev Make sure to call `__DaoAuthorizableUpgradeable_init` during initialization of the inheriting contract.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract DaoAuthorizableUpgradeable is ContextUpgradeable {\\n /// @notice The associated DAO managing the permissions of inheriting contracts.\\n IDAO private dao_;\\n\\n /// @notice Initializes the contract by setting the associated DAO.\\n /// @param _dao The associated DAO address.\\n // solhint-disable-next-line func-name-mixedcase\\n function __DaoAuthorizableUpgradeable_init(IDAO _dao) internal onlyInitializing {\\n dao_ = _dao;\\n }\\n\\n /// @notice Returns the DAO contract.\\n /// @return The DAO contract.\\n function dao() public view returns (IDAO) {\\n return dao_;\\n }\\n\\n /// @notice A modifier to make functions on inheriting contracts authorized. Permissions to call the function are checked through the associated DAO's permission manager.\\n /// @param _permissionId The permission identifier required to call the method this modifier is applied to.\\n modifier auth(bytes32 _permissionId) {\\n _auth(dao_, address(this), _msgSender(), _permissionId, _msgData());\\n _;\\n }\\n\\n /// @notice This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain (see [OpenZeppelin's guide about storage gaps](https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps)).\\n uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0x7fac6b01b037ba1cb9d6a22d3f43b0785037dcf496ffb672434d9bf7227d2585\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/auth.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice Thrown if a call is unauthorized in the associated DAO.\\n/// @param dao The associated DAO.\\n/// @param where The context in which the authorization reverted.\\n/// @param who The address (EOA or contract) missing the permission.\\n/// @param permissionId The permission identifier.\\nerror DaoUnauthorized(address dao, address where, address who, bytes32 permissionId);\\n\\n/// @notice A free function checking if a caller is granted permissions on a target contract via a permission identifier that redirects the approval to a `PermissionCondition` if this was specified in the setup.\\n/// @param _where The address of the target contract for which `who` receives permission.\\n/// @param _who The address (EOA or contract) owning the permission.\\n/// @param _permissionId The permission identifier.\\n/// @param _data The optional data passed to the `PermissionCondition` registered.\\n/// @custom:security-contact sirt@aragon.org\\nfunction _auth(\\n IDAO _dao,\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes calldata _data\\n) view {\\n if (!_dao.hasPermission(_where, _who, _permissionId, _data))\\n revert DaoUnauthorized({\\n dao: address(_dao),\\n where: _where,\\n who: _who,\\n permissionId: _permissionId\\n });\\n}\\n\",\"keccak256\":\"0x878764b4f87fe0651fb3798fb9cb87c952f8c6caf6ae79c7f09de84df6c00298\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/IPlugin.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IPlugin\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the traits of a plugin.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IPlugin {\\n enum PluginType {\\n UUPS,\\n Cloneable,\\n Constructable\\n }\\n\\n /// @notice Returns the plugin's type\\n function pluginType() external view returns (PluginType);\\n}\\n\",\"keccak256\":\"0xc57cd0d10b6380ab7f54c713a509e88fd8f4ad9288313a0e8e12b8887817ddfe\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/PluginCloneable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ERC165Upgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\\\";\\n\\nimport {IProtocolVersion} from \\\"../utils/versioning/IProtocolVersion.sol\\\";\\nimport {ProtocolVersion} from \\\"../utils/versioning/ProtocolVersion.sol\\\";\\nimport {DaoAuthorizableUpgradeable} from \\\"../permission/auth/DaoAuthorizableUpgradeable.sol\\\";\\nimport {IDAO} from \\\"../dao/IDAO.sol\\\";\\nimport {IPlugin} from \\\"./IPlugin.sol\\\";\\n\\n/// @title PluginCloneable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract, non-upgradeable contract to inherit from when creating a plugin being deployed via the minimal clones pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)).\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract PluginCloneable is\\n IPlugin,\\n ERC165Upgradeable,\\n DaoAuthorizableUpgradeable,\\n ProtocolVersion\\n{\\n /// @notice Disables the initializers on the implementation contract to prevent it from being left uninitialized.\\n /// @custom:oz-upgrades-unsafe-allow constructor\\n constructor() {\\n _disableInitializers();\\n }\\n\\n /// @notice Initializes the plugin by storing the associated DAO.\\n /// @param _dao The DAO contract.\\n // solhint-disable-next-line func-name-mixedcase\\n function __PluginCloneable_init(IDAO _dao) internal virtual onlyInitializing {\\n __DaoAuthorizableUpgradeable_init(_dao);\\n }\\n\\n /// @inheritdoc IPlugin\\n function pluginType() public pure override returns (PluginType) {\\n return PluginType.Cloneable;\\n }\\n\\n /// @notice Checks if this or the parent contract supports an interface by its ID.\\n /// @param _interfaceId The ID of the interface.\\n /// @return Returns `true` if the interface is supported.\\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\\n return\\n _interfaceId == type(IPlugin).interfaceId ||\\n _interfaceId == type(IProtocolVersion).interfaceId ||\\n super.supportsInterface(_interfaceId);\\n }\\n}\\n\",\"keccak256\":\"0x68e260b9b370d68252f0c707461d5e4c2188a7bfed42ed9192657b36330a1f7a\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/IProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IProtocolVersion\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the semantic Aragon OSx protocol version number.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IProtocolVersion {\\n /// @notice Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\\n /// @return _version Returns the semantic Aragon OSx protocol version number.\\n /// @dev This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\\n function protocolVersion() external view returns (uint8[3] memory _version);\\n}\\n\",\"keccak256\":\"0x00a4da654d21dc1bdadbdc8bd54bb86c378c56f85e461ccc31303628ea621361\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/ProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IProtocolVersion} from \\\"./IProtocolVersion.sol\\\";\\n\\n/// @title ProtocolVersion\\n/// @author Aragon X - 2023\\n/// @notice An abstract, stateless, non-upgradeable contract providing the current Aragon OSx protocol version number.\\n/// @dev Do not add any new variables to this contract that would shift down storage in the inheritance chain.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract ProtocolVersion is IProtocolVersion {\\n // IMPORTANT: Do not add any storage variable, see the above notice.\\n\\n /// @inheritdoc IProtocolVersion\\n function protocolVersion() public pure returns (uint8[3] memory) {\\n return [1, 4, 0];\\n }\\n}\\n\",\"keccak256\":\"0x3975c937be935f687c6b6b8f379071232681e98cf04b175d72781b819ea52bdb\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[{"astId":372,"contract":"src/plugin/PluginCloneable.sol:PluginCloneable","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":375,"contract":"src/plugin/PluginCloneable.sol:PluginCloneable","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":2821,"contract":"src/plugin/PluginCloneable.sol:PluginCloneable","label":"__gap","offset":0,"slot":"1","type":"t_array(t_uint256)50_storage"},{"astId":2592,"contract":"src/plugin/PluginCloneable.sol:PluginCloneable","label":"__gap","offset":0,"slot":"51","type":"t_array(t_uint256)50_storage"},{"astId":13111,"contract":"src/plugin/PluginCloneable.sol:PluginCloneable","label":"dao_","offset":0,"slot":"101","type":"t_contract(IDAO)10865"},{"astId":13160,"contract":"src/plugin/PluginCloneable.sol:PluginCloneable","label":"__gap","offset":0,"slot":"102","type":"t_array(t_uint256)49_storage"}],"types":{"t_array(t_uint256)49_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[49]","numberOfBytes":"1568"},"t_array(t_uint256)50_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[50]","numberOfBytes":"1600"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_contract(IDAO)10865":{"encoding":"inplace","label":"contract IDAO","numberOfBytes":"20"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"kind":"user","methods":{"constructor":{"notice":"Disables the initializers on the implementation contract to prevent it from being left uninitialized."},"dao()":{"notice":"Returns the DAO contract."},"pluginType()":{"notice":"Returns the plugin's type"},"protocolVersion()":{"notice":"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with."},"supportsInterface(bytes4)":{"notice":"Checks if this or the parent contract supports an interface by its ID."}},"notice":"An abstract, non-upgradeable contract to inherit from when creating a plugin being deployed via the minimal clones pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)).","version":1}}},"src/plugin/PluginUUPSUpgradeable.sol":{"PluginUUPSUpgradeable":{"abi":[{"inputs":[{"internalType":"address","name":"dao","type":"address"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"name":"DaoUnauthorized","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"beacon","type":"address"}],"name":"BeaconUpgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"inputs":[],"name":"UPGRADE_PLUGIN_PERMISSION_ID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dao","outputs":[{"internalType":"contract IDAO","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pluginType","outputs":[{"internalType":"enum IPlugin.PluginType","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"protocolVersion","outputs":[{"internalType":"uint8[3]","name":"","type":"uint8[3]"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"}],"name":"upgradeTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"}],"devdoc":{"author":"Aragon X - 2022-2023","custom:security-contact":"sirt@aragon.org","errors":{"DaoUnauthorized(address,address,address,bytes32)":[{"params":{"dao":"The associated DAO.","permissionId":"The permission identifier.","where":"The context in which the authorization reverted.","who":"The address (EOA or contract) missing the permission."}}]},"kind":"dev","methods":{"constructor":{"custom:oz-upgrades-unsafe-allow":"constructor"},"dao()":{"returns":{"_0":"The DAO contract."}},"implementation()":{"returns":{"_0":"The address of the implementation contract."}},"protocolVersion()":{"details":"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.","returns":{"_0":"Returns the semantic Aragon OSx protocol version number."}},"proxiableUUID()":{"details":"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier."},"supportsInterface(bytes4)":{"params":{"_interfaceId":"The ID of the interface."},"returns":{"_0":"Returns `true` if the interface is supported."}},"upgradeTo(address)":{"custom:oz-upgrades-unsafe-allow-reachable":"delegatecall","details":"Upgrade the implementation of the proxy to `newImplementation`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."},"upgradeToAndCall(address,bytes)":{"custom:oz-upgrades-unsafe-allow-reachable":"delegatecall","details":"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."}},"title":"PluginUUPSUpgradeable","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"UPGRADE_PLUGIN_PERMISSION_ID()":"c9c4bfca","dao()":"4162169f","implementation()":"5c60da1b","pluginType()":"41de6830","protocolVersion()":"2ae9c600","proxiableUUID()":"52d1902d","supportsInterface(bytes4)":"01ffc9a7","upgradeTo(address)":"3659cfe6","upgradeToAndCall(address,bytes)":"4f1ef286"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"dao\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"name\":\"DaoUnauthorized\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"UPGRADE_PLUGIN_PERMISSION_ID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"dao\",\"outputs\":[{\"internalType\":\"contract IDAO\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pluginType\",\"outputs\":[{\"internalType\":\"enum IPlugin.PluginType\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"protocolVersion\",\"outputs\":[{\"internalType\":\"uint8[3]\",\"name\":\"\",\"type\":\"uint8[3]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"upgradeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Aragon X - 2022-2023\",\"custom:security-contact\":\"sirt@aragon.org\",\"errors\":{\"DaoUnauthorized(address,address,address,bytes32)\":[{\"params\":{\"dao\":\"The associated DAO.\",\"permissionId\":\"The permission identifier.\",\"where\":\"The context in which the authorization reverted.\",\"who\":\"The address (EOA or contract) missing the permission.\"}}]},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor\"},\"dao()\":{\"returns\":{\"_0\":\"The DAO contract.\"}},\"implementation()\":{\"returns\":{\"_0\":\"The address of the implementation contract.\"}},\"protocolVersion()\":{\"details\":\"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\",\"returns\":{\"_0\":\"Returns the semantic Aragon OSx protocol version number.\"}},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"supportsInterface(bytes4)\":{\"params\":{\"_interfaceId\":\"The ID of the interface.\"},\"returns\":{\"_0\":\"Returns `true` if the interface is supported.\"}},\"upgradeTo(address)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"},\"upgradeToAndCall(address,bytes)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"}},\"title\":\"PluginUUPSUpgradeable\",\"version\":1},\"userdoc\":{\"errors\":{\"DaoUnauthorized(address,address,address,bytes32)\":[{\"notice\":\"Thrown if a call is unauthorized in the associated DAO.\"}]},\"kind\":\"user\",\"methods\":{\"UPGRADE_PLUGIN_PERMISSION_ID()\":{\"notice\":\"The ID of the permission required to call the `_authorizeUpgrade` function.\"},\"constructor\":{\"notice\":\"Disables the initializers on the implementation contract to prevent it from being left uninitialized.\"},\"dao()\":{\"notice\":\"Returns the DAO contract.\"},\"implementation()\":{\"notice\":\"Returns the address of the implementation contract in the [proxy storage slot](https://eips.ethereum.org/EIPS/eip-1967) slot the [UUPS proxy](https://eips.ethereum.org/EIPS/eip-1822) is pointing to.\"},\"pluginType()\":{\"notice\":\"Returns the plugin's type\"},\"protocolVersion()\":{\"notice\":\"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Checks if an interface is supported by this or its parent contract.\"}},\"notice\":\"An abstract, upgradeable contract to inherit from when creating a plugin being deployed via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/plugin/PluginUUPSUpgradeable.sol\":\"PluginUUPSUpgradeable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/interfaces/IERC1967Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (interfaces/IERC1967.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\\n *\\n * _Available since v4.8.3._\\n */\\ninterface IERC1967Upgradeable {\\n /**\\n * @dev Emitted when the implementation is upgraded.\\n */\\n event Upgraded(address indexed implementation);\\n\\n /**\\n * @dev Emitted when the admin account has changed.\\n */\\n event AdminChanged(address previousAdmin, address newAdmin);\\n\\n /**\\n * @dev Emitted when the beacon is changed.\\n */\\n event BeaconUpgraded(address indexed beacon);\\n}\\n\",\"keccak256\":\"0x47d6e06872b12e72c79d1b5eb55842f860b5fb1207b2317c2358d2766b950a7b\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822ProxiableUpgradeable {\\n /**\\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n * address.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy.\\n */\\n function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../beacon/IBeaconUpgradeable.sol\\\";\\nimport \\\"../../interfaces/IERC1967Upgradeable.sol\\\";\\nimport \\\"../../interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\nimport \\\"../../utils/StorageSlotUpgradeable.sol\\\";\\nimport {Initializable} from \\\"../utils/Initializable.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n */\\nabstract contract ERC1967UpgradeUpgradeable is Initializable, IERC1967Upgradeable {\\n // This is the keccak-256 hash of \\\"eip1967.proxy.rollback\\\" subtracted by 1\\n bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n /**\\n * @dev Storage slot with the address of the current implementation.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n function __ERC1967Upgrade_init() internal onlyInitializing {\\n }\\n\\n function __ERC1967Upgrade_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _getImplementation() internal view returns (address) {\\n return StorageSlotUpgradeable.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 implementation slot.\\n */\\n function _setImplementation(address newImplementation) private {\\n require(AddressUpgradeable.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n StorageSlotUpgradeable.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n }\\n\\n /**\\n * @dev Perform implementation upgrade\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeTo(address newImplementation) internal {\\n _setImplementation(newImplementation);\\n emit Upgraded(newImplementation);\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCall(address newImplementation, bytes memory data, bool forceCall) internal {\\n _upgradeTo(newImplementation);\\n if (data.length > 0 || forceCall) {\\n AddressUpgradeable.functionDelegateCall(newImplementation, data);\\n }\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCallUUPS(address newImplementation, bytes memory data, bool forceCall) internal {\\n // Upgrades from old implementations will perform a rollback test. This test requires the new\\n // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n // this special case will break upgrade paths from old UUPS implementation to new ones.\\n if (StorageSlotUpgradeable.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n _setImplementation(newImplementation);\\n } else {\\n try IERC1822ProxiableUpgradeable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n require(slot == _IMPLEMENTATION_SLOT, \\\"ERC1967Upgrade: unsupported proxiableUUID\\\");\\n } catch {\\n revert(\\\"ERC1967Upgrade: new implementation is not UUPS\\\");\\n }\\n _upgradeToAndCall(newImplementation, data, forceCall);\\n }\\n }\\n\\n /**\\n * @dev Storage slot with the admin of the contract.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _getAdmin() internal view returns (address) {\\n return StorageSlotUpgradeable.getAddressSlot(_ADMIN_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 admin slot.\\n */\\n function _setAdmin(address newAdmin) private {\\n require(newAdmin != address(0), \\\"ERC1967: new admin is the zero address\\\");\\n StorageSlotUpgradeable.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n */\\n function _changeAdmin(address newAdmin) internal {\\n emit AdminChanged(_getAdmin(), newAdmin);\\n _setAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\\n */\\n bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n /**\\n * @dev Returns the current beacon.\\n */\\n function _getBeacon() internal view returns (address) {\\n return StorageSlotUpgradeable.getAddressSlot(_BEACON_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new beacon in the EIP1967 beacon slot.\\n */\\n function _setBeacon(address newBeacon) private {\\n require(AddressUpgradeable.isContract(newBeacon), \\\"ERC1967: new beacon is not a contract\\\");\\n require(\\n AddressUpgradeable.isContract(IBeaconUpgradeable(newBeacon).implementation()),\\n \\\"ERC1967: beacon implementation is not a contract\\\"\\n );\\n StorageSlotUpgradeable.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n }\\n\\n /**\\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n *\\n * Emits a {BeaconUpgraded} event.\\n */\\n function _upgradeBeaconToAndCall(address newBeacon, bytes memory data, bool forceCall) internal {\\n _setBeacon(newBeacon);\\n emit BeaconUpgraded(newBeacon);\\n if (data.length > 0 || forceCall) {\\n AddressUpgradeable.functionDelegateCall(IBeaconUpgradeable(newBeacon).implementation(), data);\\n }\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x7795808e3899c805254e3ae58074b20f799b466e3f43e057e47bedee5fb771f8\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeaconUpgradeable {\\n /**\\n * @dev Must return an address that can be used as a delegate call target.\\n *\\n * {BeaconProxy} will check that this address is a contract.\\n */\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/UUPSUpgradeable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport \\\"../ERC1967/ERC1967UpgradeUpgradeable.sol\\\";\\nimport {Initializable} from \\\"./Initializable.sol\\\";\\n\\n/**\\n * @dev An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an\\n * {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy.\\n *\\n * A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is\\n * reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing\\n * `UUPSUpgradeable` with a custom implementation of upgrades.\\n *\\n * The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism.\\n *\\n * _Available since v4.1._\\n */\\nabstract contract UUPSUpgradeable is Initializable, IERC1822ProxiableUpgradeable, ERC1967UpgradeUpgradeable {\\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable state-variable-assignment\\n address private immutable __self = address(this);\\n\\n /**\\n * @dev Check that the execution is being performed through a delegatecall call and that the execution context is\\n * a proxy contract with an implementation (as defined in ERC1967) pointing to self. This should only be the case\\n * for UUPS and transparent proxies that are using the current contract as their implementation. Execution of a\\n * function through ERC1167 minimal proxies (clones) would not normally pass this test, but is not guaranteed to\\n * fail.\\n */\\n modifier onlyProxy() {\\n require(address(this) != __self, \\\"Function must be called through delegatecall\\\");\\n require(_getImplementation() == __self, \\\"Function must be called through active proxy\\\");\\n _;\\n }\\n\\n /**\\n * @dev Check that the execution is not being performed through a delegate call. This allows a function to be\\n * callable on the implementing contract but not through proxies.\\n */\\n modifier notDelegated() {\\n require(address(this) == __self, \\\"UUPSUpgradeable: must not be called through delegatecall\\\");\\n _;\\n }\\n\\n function __UUPSUpgradeable_init() internal onlyInitializing {\\n }\\n\\n function __UUPSUpgradeable_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the\\n * implementation. It is used to validate the implementation's compatibility when performing an upgrade.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\\n */\\n function proxiableUUID() external view virtual override notDelegated returns (bytes32) {\\n return _IMPLEMENTATION_SLOT;\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy to `newImplementation`.\\n *\\n * Calls {_authorizeUpgrade}.\\n *\\n * Emits an {Upgraded} event.\\n *\\n * @custom:oz-upgrades-unsafe-allow-reachable delegatecall\\n */\\n function upgradeTo(address newImplementation) public virtual onlyProxy {\\n _authorizeUpgrade(newImplementation);\\n _upgradeToAndCallUUPS(newImplementation, new bytes(0), false);\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call\\n * encoded in `data`.\\n *\\n * Calls {_authorizeUpgrade}.\\n *\\n * Emits an {Upgraded} event.\\n *\\n * @custom:oz-upgrades-unsafe-allow-reachable delegatecall\\n */\\n function upgradeToAndCall(address newImplementation, bytes memory data) public payable virtual onlyProxy {\\n _authorizeUpgrade(newImplementation);\\n _upgradeToAndCallUUPS(newImplementation, data, true);\\n }\\n\\n /**\\n * @dev Function that should revert when `msg.sender` is not authorized to upgrade the contract. Called by\\n * {upgradeTo} and {upgradeToAndCall}.\\n *\\n * Normally, this function will use an xref:access.adoc[access control] modifier such as {Ownable-onlyOwner}.\\n *\\n * ```solidity\\n * function _authorizeUpgrade(address) internal override onlyOwner {}\\n * ```\\n */\\n function _authorizeUpgrade(address newImplementation) internal virtual;\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0xefb41f5c1a00249b7a99f0782f8c557865605426a3fb6e5fe9ae334293ae4f33\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n function __Context_init() internal onlyInitializing {\\n }\\n\\n function __Context_init_unchained() internal onlyInitializing {\\n }\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n function _contextSuffixLength() internal view virtual returns (uint256) {\\n return 0;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x75097e35253e7fb282ee4d7f27a80eaacfa759923185bf17302a89cbc059c5ef\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/StorageSlot.sol)\\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```solidity\\n * contract ERC1967 {\\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n * function _getImplementation() internal view returns (address) {\\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n * }\\n *\\n * function _setImplementation(address newImplementation) internal {\\n * require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n * }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._\\n * _Available since v4.9 for `string`, `bytes`._\\n */\\nlibrary StorageSlotUpgradeable {\\n struct AddressSlot {\\n address value;\\n }\\n\\n struct BooleanSlot {\\n bool value;\\n }\\n\\n struct Bytes32Slot {\\n bytes32 value;\\n }\\n\\n struct Uint256Slot {\\n uint256 value;\\n }\\n\\n struct StringSlot {\\n string value;\\n }\\n\\n struct BytesSlot {\\n bytes value;\\n }\\n\\n /**\\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n */\\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n */\\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n */\\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n */\\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` with member `value` located at `slot`.\\n */\\n function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\\n */\\n function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` with member `value` located at `slot`.\\n */\\n function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\\n */\\n function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n}\\n\",\"keccak256\":\"0x07ac95acad040f1fb1f6120dd0aa5f702db69446e95f82613721879d30de0908\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165Upgradeable.sol\\\";\\nimport {Initializable} from \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165Upgradeable is Initializable, IERC165Upgradeable {\\n function __ERC165_init() internal onlyInitializing {\\n }\\n\\n function __ERC165_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165Upgradeable).interfaceId;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0xd90d7723512df65ae417adaf0801042940f0dabd60039ceeaffe34aa5b238da1\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165Upgradeable {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\"},\"src/dao/IDAO.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IDAO\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for DAOs within the Aragon App DAO framework.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IDAO {\\n /// @notice The action struct to be consumed by the DAO's `execute` function resulting in an external call.\\n /// @param to The address to call.\\n /// @param value The native token value to be sent with the call.\\n /// @param data The bytes-encoded function selector and calldata for the call.\\n struct Action {\\n address to;\\n uint256 value;\\n bytes data;\\n }\\n\\n /// @notice Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\\n /// @param _where The address of the contract.\\n /// @param _who The address of a EOA or contract to give the permissions.\\n /// @param _permissionId The permission identifier.\\n /// @param _data The optional data passed to the `PermissionCondition` registered.\\n /// @return Returns true if the address has permission, false if not.\\n function hasPermission(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes memory _data\\n ) external view returns (bool);\\n\\n /// @notice Updates the DAO metadata (e.g., an IPFS hash).\\n /// @param _metadata The IPFS hash of the new metadata object.\\n function setMetadata(bytes calldata _metadata) external;\\n\\n /// @notice Emitted when the DAO metadata is updated.\\n /// @param metadata The IPFS hash of the new metadata object.\\n event MetadataSet(bytes metadata);\\n\\n /// @notice Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted.\\n /// @param _callId The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce.\\n /// @param _actions The array of actions.\\n /// @param _allowFailureMap A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @return The array of results obtained from the executed actions in `bytes`.\\n /// @return The resulting failure map containing the actions have actually failed.\\n function execute(\\n bytes32 _callId,\\n Action[] memory _actions,\\n uint256 _allowFailureMap\\n ) external returns (bytes[] memory, uint256);\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param actor The address of the caller.\\n /// @param callId The ID of the call.\\n /// @param actions The array of actions executed.\\n /// @param allowFailureMap The allow failure map encoding which actions are allowed to fail.\\n /// @param failureMap The failure map encoding which actions have failed.\\n /// @param execResults The array with the results of the executed actions.\\n /// @dev The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce.\\n event Executed(\\n address indexed actor,\\n bytes32 callId,\\n Action[] actions,\\n uint256 allowFailureMap,\\n uint256 failureMap,\\n bytes[] execResults\\n );\\n\\n /// @notice Emitted when a standard callback is registered.\\n /// @param interfaceId The ID of the interface.\\n /// @param callbackSelector The selector of the callback function.\\n /// @param magicNumber The magic number to be registered for the callback function selector.\\n event StandardCallbackRegistered(\\n bytes4 interfaceId,\\n bytes4 callbackSelector,\\n bytes4 magicNumber\\n );\\n\\n /// @notice Deposits (native) tokens to the DAO contract with a reference string.\\n /// @param _token The address of the token or address(0) in case of the native token.\\n /// @param _amount The amount of tokens to deposit.\\n /// @param _reference The reference describing the deposit reason.\\n function deposit(address _token, uint256 _amount, string calldata _reference) external payable;\\n\\n /// @notice Emitted when a token deposit has been made to the DAO.\\n /// @param sender The address of the sender.\\n /// @param token The address of the deposited token.\\n /// @param amount The amount of tokens deposited.\\n /// @param _reference The reference describing the deposit reason.\\n event Deposited(\\n address indexed sender,\\n address indexed token,\\n uint256 amount,\\n string _reference\\n );\\n\\n /// @notice Emitted when a native token deposit has been made to the DAO.\\n /// @dev This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).\\n /// @param sender The address of the sender.\\n /// @param amount The amount of native tokens deposited.\\n event NativeTokenDeposited(address sender, uint256 amount);\\n\\n /// @notice Setter for the trusted forwarder verifying the meta transaction.\\n /// @param _trustedForwarder The trusted forwarder address.\\n function setTrustedForwarder(address _trustedForwarder) external;\\n\\n /// @notice Getter for the trusted forwarder verifying the meta transaction.\\n /// @return The trusted forwarder address.\\n function getTrustedForwarder() external view returns (address);\\n\\n /// @notice Emitted when a new TrustedForwarder is set on the DAO.\\n /// @param forwarder the new forwarder address.\\n event TrustedForwarderSet(address forwarder);\\n\\n /// @notice Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\\n /// @param _hash The hash of the data to be signed.\\n /// @param _signature The signature byte array associated with `_hash`.\\n /// @return Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not.\\n function isValidSignature(bytes32 _hash, bytes memory _signature) external returns (bytes4);\\n\\n /// @notice Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\\n /// @param _interfaceId The ID of the interface.\\n /// @param _callbackSelector The selector of the callback function.\\n /// @param _magicNumber The magic number to be registered for the function signature.\\n function registerStandardCallback(\\n bytes4 _interfaceId,\\n bytes4 _callbackSelector,\\n bytes4 _magicNumber\\n ) external;\\n\\n /// @notice Removed function being left here to not corrupt the IDAO interface ID. Any call will revert.\\n /// @dev Introduced in v1.0.0. Removed in v1.4.0.\\n function setSignatureValidator(address) external;\\n}\\n\",\"keccak256\":\"0xb7f615523c26de042edce98731c658f44a1edb2464387ac1b642c4c69f57128e\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/DaoAuthorizableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ContextUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\\\";\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\nimport {_auth} from \\\"./auth.sol\\\";\\n\\n/// @title DaoAuthorizableUpgradeable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract contract providing a meta-transaction compatible modifier for upgradeable or cloneable contracts to authorize function calls through an associated DAO.\\n/// @dev Make sure to call `__DaoAuthorizableUpgradeable_init` during initialization of the inheriting contract.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract DaoAuthorizableUpgradeable is ContextUpgradeable {\\n /// @notice The associated DAO managing the permissions of inheriting contracts.\\n IDAO private dao_;\\n\\n /// @notice Initializes the contract by setting the associated DAO.\\n /// @param _dao The associated DAO address.\\n // solhint-disable-next-line func-name-mixedcase\\n function __DaoAuthorizableUpgradeable_init(IDAO _dao) internal onlyInitializing {\\n dao_ = _dao;\\n }\\n\\n /// @notice Returns the DAO contract.\\n /// @return The DAO contract.\\n function dao() public view returns (IDAO) {\\n return dao_;\\n }\\n\\n /// @notice A modifier to make functions on inheriting contracts authorized. Permissions to call the function are checked through the associated DAO's permission manager.\\n /// @param _permissionId The permission identifier required to call the method this modifier is applied to.\\n modifier auth(bytes32 _permissionId) {\\n _auth(dao_, address(this), _msgSender(), _permissionId, _msgData());\\n _;\\n }\\n\\n /// @notice This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain (see [OpenZeppelin's guide about storage gaps](https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps)).\\n uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0x7fac6b01b037ba1cb9d6a22d3f43b0785037dcf496ffb672434d9bf7227d2585\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/auth.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice Thrown if a call is unauthorized in the associated DAO.\\n/// @param dao The associated DAO.\\n/// @param where The context in which the authorization reverted.\\n/// @param who The address (EOA or contract) missing the permission.\\n/// @param permissionId The permission identifier.\\nerror DaoUnauthorized(address dao, address where, address who, bytes32 permissionId);\\n\\n/// @notice A free function checking if a caller is granted permissions on a target contract via a permission identifier that redirects the approval to a `PermissionCondition` if this was specified in the setup.\\n/// @param _where The address of the target contract for which `who` receives permission.\\n/// @param _who The address (EOA or contract) owning the permission.\\n/// @param _permissionId The permission identifier.\\n/// @param _data The optional data passed to the `PermissionCondition` registered.\\n/// @custom:security-contact sirt@aragon.org\\nfunction _auth(\\n IDAO _dao,\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes calldata _data\\n) view {\\n if (!_dao.hasPermission(_where, _who, _permissionId, _data))\\n revert DaoUnauthorized({\\n dao: address(_dao),\\n where: _where,\\n who: _who,\\n permissionId: _permissionId\\n });\\n}\\n\",\"keccak256\":\"0x878764b4f87fe0651fb3798fb9cb87c952f8c6caf6ae79c7f09de84df6c00298\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/IPlugin.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IPlugin\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the traits of a plugin.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IPlugin {\\n enum PluginType {\\n UUPS,\\n Cloneable,\\n Constructable\\n }\\n\\n /// @notice Returns the plugin's type\\n function pluginType() external view returns (PluginType);\\n}\\n\",\"keccak256\":\"0xc57cd0d10b6380ab7f54c713a509e88fd8f4ad9288313a0e8e12b8887817ddfe\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/PluginUUPSUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {UUPSUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\\\";\\nimport {IERC1822ProxiableUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport {ERC165Upgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\\\";\\n\\nimport {IProtocolVersion} from \\\"../utils/versioning/IProtocolVersion.sol\\\";\\nimport {ProtocolVersion} from \\\"../utils/versioning/ProtocolVersion.sol\\\";\\nimport {DaoAuthorizableUpgradeable} from \\\"../permission/auth/DaoAuthorizableUpgradeable.sol\\\";\\nimport {IDAO} from \\\"../dao/IDAO.sol\\\";\\nimport {IPlugin} from \\\"./IPlugin.sol\\\";\\n\\n/// @title PluginUUPSUpgradeable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract, upgradeable contract to inherit from when creating a plugin being deployed via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract PluginUUPSUpgradeable is\\n IPlugin,\\n ERC165Upgradeable,\\n UUPSUpgradeable,\\n DaoAuthorizableUpgradeable,\\n ProtocolVersion\\n{\\n // NOTE: When adding new state variables to the contract, the size of `_gap` has to be adapted below as well.\\n\\n /// @notice Disables the initializers on the implementation contract to prevent it from being left uninitialized.\\n /// @custom:oz-upgrades-unsafe-allow constructor\\n constructor() {\\n _disableInitializers();\\n }\\n\\n /// @inheritdoc IPlugin\\n function pluginType() public pure override returns (PluginType) {\\n return PluginType.UUPS;\\n }\\n\\n /// @notice The ID of the permission required to call the `_authorizeUpgrade` function.\\n bytes32 public constant UPGRADE_PLUGIN_PERMISSION_ID = keccak256(\\\"UPGRADE_PLUGIN_PERMISSION\\\");\\n\\n /// @notice Initializes the plugin by storing the associated DAO.\\n /// @param _dao The DAO contract.\\n // solhint-disable-next-line func-name-mixedcase\\n function __PluginUUPSUpgradeable_init(IDAO _dao) internal virtual onlyInitializing {\\n __DaoAuthorizableUpgradeable_init(_dao);\\n }\\n\\n /// @notice Checks if an interface is supported by this or its parent contract.\\n /// @param _interfaceId The ID of the interface.\\n /// @return Returns `true` if the interface is supported.\\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\\n return\\n _interfaceId == type(IPlugin).interfaceId ||\\n _interfaceId == type(IProtocolVersion).interfaceId ||\\n _interfaceId == type(IERC1822ProxiableUpgradeable).interfaceId ||\\n super.supportsInterface(_interfaceId);\\n }\\n\\n /// @notice Returns the address of the implementation contract in the [proxy storage slot](https://eips.ethereum.org/EIPS/eip-1967) slot the [UUPS proxy](https://eips.ethereum.org/EIPS/eip-1822) is pointing to.\\n /// @return The address of the implementation contract.\\n function implementation() public view returns (address) {\\n return _getImplementation();\\n }\\n\\n /// @notice Internal method authorizing the upgrade of the contract via the [upgradeability mechanism for UUPS proxies](https://docs.openzeppelin.com/contracts/4.x/api/proxy#UUPSUpgradeable) (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\\n /// @dev The caller must have the `UPGRADE_PLUGIN_PERMISSION_ID` permission.\\n function _authorizeUpgrade(\\n address\\n )\\n internal\\n virtual\\n override\\n auth(UPGRADE_PLUGIN_PERMISSION_ID)\\n // solhint-disable-next-line no-empty-blocks\\n {\\n\\n }\\n\\n /// @notice This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain (see [OpenZeppelin's guide about storage gaps](https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps)).\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x127e7c4f839cb8c8486070990b78e22313f1ff089ffe6a4ff23ae358e48f0037\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/IProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IProtocolVersion\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the semantic Aragon OSx protocol version number.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IProtocolVersion {\\n /// @notice Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\\n /// @return _version Returns the semantic Aragon OSx protocol version number.\\n /// @dev This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\\n function protocolVersion() external view returns (uint8[3] memory _version);\\n}\\n\",\"keccak256\":\"0x00a4da654d21dc1bdadbdc8bd54bb86c378c56f85e461ccc31303628ea621361\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/ProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IProtocolVersion} from \\\"./IProtocolVersion.sol\\\";\\n\\n/// @title ProtocolVersion\\n/// @author Aragon X - 2023\\n/// @notice An abstract, stateless, non-upgradeable contract providing the current Aragon OSx protocol version number.\\n/// @dev Do not add any new variables to this contract that would shift down storage in the inheritance chain.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract ProtocolVersion is IProtocolVersion {\\n // IMPORTANT: Do not add any storage variable, see the above notice.\\n\\n /// @inheritdoc IProtocolVersion\\n function protocolVersion() public pure returns (uint8[3] memory) {\\n return [1, 4, 0];\\n }\\n}\\n\",\"keccak256\":\"0x3975c937be935f687c6b6b8f379071232681e98cf04b175d72781b819ea52bdb\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[{"astId":372,"contract":"src/plugin/PluginUUPSUpgradeable.sol:PluginUUPSUpgradeable","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":375,"contract":"src/plugin/PluginUUPSUpgradeable.sol:PluginUUPSUpgradeable","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":2821,"contract":"src/plugin/PluginUUPSUpgradeable.sol:PluginUUPSUpgradeable","label":"__gap","offset":0,"slot":"1","type":"t_array(t_uint256)50_storage"},{"astId":354,"contract":"src/plugin/PluginUUPSUpgradeable.sol:PluginUUPSUpgradeable","label":"__gap","offset":0,"slot":"51","type":"t_array(t_uint256)50_storage"},{"astId":670,"contract":"src/plugin/PluginUUPSUpgradeable.sol:PluginUUPSUpgradeable","label":"__gap","offset":0,"slot":"101","type":"t_array(t_uint256)50_storage"},{"astId":2592,"contract":"src/plugin/PluginUUPSUpgradeable.sol:PluginUUPSUpgradeable","label":"__gap","offset":0,"slot":"151","type":"t_array(t_uint256)50_storage"},{"astId":13111,"contract":"src/plugin/PluginUUPSUpgradeable.sol:PluginUUPSUpgradeable","label":"dao_","offset":0,"slot":"201","type":"t_contract(IDAO)10865"},{"astId":13160,"contract":"src/plugin/PluginUUPSUpgradeable.sol:PluginUUPSUpgradeable","label":"__gap","offset":0,"slot":"202","type":"t_array(t_uint256)49_storage"},{"astId":13632,"contract":"src/plugin/PluginUUPSUpgradeable.sol:PluginUUPSUpgradeable","label":"__gap","offset":0,"slot":"251","type":"t_array(t_uint256)50_storage"}],"types":{"t_array(t_uint256)49_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[49]","numberOfBytes":"1568"},"t_array(t_uint256)50_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[50]","numberOfBytes":"1600"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_contract(IDAO)10865":{"encoding":"inplace","label":"contract IDAO","numberOfBytes":"20"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"errors":{"DaoUnauthorized(address,address,address,bytes32)":[{"notice":"Thrown if a call is unauthorized in the associated DAO."}]},"kind":"user","methods":{"UPGRADE_PLUGIN_PERMISSION_ID()":{"notice":"The ID of the permission required to call the `_authorizeUpgrade` function."},"constructor":{"notice":"Disables the initializers on the implementation contract to prevent it from being left uninitialized."},"dao()":{"notice":"Returns the DAO contract."},"implementation()":{"notice":"Returns the address of the implementation contract in the [proxy storage slot](https://eips.ethereum.org/EIPS/eip-1967) slot the [UUPS proxy](https://eips.ethereum.org/EIPS/eip-1822) is pointing to."},"pluginType()":{"notice":"Returns the plugin's type"},"protocolVersion()":{"notice":"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with."},"supportsInterface(bytes4)":{"notice":"Checks if an interface is supported by this or its parent contract."}},"notice":"An abstract, upgradeable contract to inherit from when creating a plugin being deployed via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).","version":1}}},"src/plugin/extensions/governance/Addresslist.sol":{"Addresslist":{"abi":[{"inputs":[{"internalType":"address","name":"member","type":"address"}],"name":"InvalidAddresslistUpdate","type":"error"},{"inputs":[],"name":"addresslistLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_blockNumber","type":"uint256"}],"name":"addresslistLengthAtBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"isListed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_blockNumber","type":"uint256"}],"name":"isListedAtBlock","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"author":"Aragon X - 2021-2023","custom:security-contact":"sirt@aragon.org","details":"This contract inherits from `MajorityVotingBase` and implements the `IMajorityVoting` interface.","errors":{"InvalidAddresslistUpdate(address)":[{"params":{"member":"The array of member addresses to be added or removed."}}]},"kind":"dev","methods":{"addresslistLength()":{"returns":{"_0":"The current address list length."}},"addresslistLengthAtBlock(uint256)":{"params":{"_blockNumber":"The specific block to get the count from. If `0`, then the latest checkpoint value is returned."},"returns":{"_0":"The address list length at the specified block number."}},"isListed(address)":{"params":{"_account":"The account address being checked."},"returns":{"_0":"Whether the account is currently listed."}},"isListedAtBlock(address,uint256)":{"params":{"_account":"The account address being checked.","_blockNumber":"The block number."},"returns":{"_0":"Whether the account is listed at the specified block number."}}},"stateVariables":{"__gap":{"details":"This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain. https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"}},"title":"Addresslist","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"addresslistLength()":"27f1608d","addresslistLengthAtBlock(uint256)":"6a6b2d86","isListed(address)":"f794062e","isListedAtBlock(address,uint256)":"b1bb8d26"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"member\",\"type\":\"address\"}],\"name\":\"InvalidAddresslistUpdate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"addresslistLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_blockNumber\",\"type\":\"uint256\"}],\"name\":\"addresslistLengthAtBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"isListed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_blockNumber\",\"type\":\"uint256\"}],\"name\":\"isListedAtBlock\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Aragon X - 2021-2023\",\"custom:security-contact\":\"sirt@aragon.org\",\"details\":\"This contract inherits from `MajorityVotingBase` and implements the `IMajorityVoting` interface.\",\"errors\":{\"InvalidAddresslistUpdate(address)\":[{\"params\":{\"member\":\"The array of member addresses to be added or removed.\"}}]},\"kind\":\"dev\",\"methods\":{\"addresslistLength()\":{\"returns\":{\"_0\":\"The current address list length.\"}},\"addresslistLengthAtBlock(uint256)\":{\"params\":{\"_blockNumber\":\"The specific block to get the count from. If `0`, then the latest checkpoint value is returned.\"},\"returns\":{\"_0\":\"The address list length at the specified block number.\"}},\"isListed(address)\":{\"params\":{\"_account\":\"The account address being checked.\"},\"returns\":{\"_0\":\"Whether the account is currently listed.\"}},\"isListedAtBlock(address,uint256)\":{\"params\":{\"_account\":\"The account address being checked.\",\"_blockNumber\":\"The block number.\"},\"returns\":{\"_0\":\"Whether the account is listed at the specified block number.\"}}},\"stateVariables\":{\"__gap\":{\"details\":\"This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain. https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\"}},\"title\":\"Addresslist\",\"version\":1},\"userdoc\":{\"errors\":{\"InvalidAddresslistUpdate(address)\":[{\"notice\":\"Thrown when the address list update is invalid, which can be caused by the addition of an existing member or removal of a non-existing member.\"}]},\"kind\":\"user\",\"methods\":{\"addresslistLength()\":{\"notice\":\"Returns the current length of the address list.\"},\"addresslistLengthAtBlock(uint256)\":{\"notice\":\"Returns the length of the address list at a specific block number.\"},\"isListed(address)\":{\"notice\":\"Checks if an account is currently on the address list.\"},\"isListedAtBlock(address,uint256)\":{\"notice\":\"Checks if an account is on the address list at a specific block number.\"}},\"notice\":\"The majority voting implementation using a list of member addresses.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/plugin/extensions/governance/Addresslist.sol\":\"Addresslist\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/utils/CheckpointsUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Checkpoints.sol)\\n// This file was procedurally generated from scripts/generate/templates/Checkpoints.js.\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./math/MathUpgradeable.sol\\\";\\nimport \\\"./math/SafeCastUpgradeable.sol\\\";\\n\\n/**\\n * @dev This library defines the `History` struct, for checkpointing values as they change at different points in\\n * time, and later looking up past values by block number. See {Votes} as an example.\\n *\\n * To create a history of checkpoints define a variable type `Checkpoints.History` in your contract, and store a new\\n * checkpoint for the current transaction block using the {push} function.\\n *\\n * _Available since v4.5._\\n */\\nlibrary CheckpointsUpgradeable {\\n struct History {\\n Checkpoint[] _checkpoints;\\n }\\n\\n struct Checkpoint {\\n uint32 _blockNumber;\\n uint224 _value;\\n }\\n\\n /**\\n * @dev Returns the value at a given block number. If a checkpoint is not available at that block, the closest one\\n * before it is returned, or zero otherwise. Because the number returned corresponds to that at the end of the\\n * block, the requested block number must be in the past, excluding the current block.\\n */\\n function getAtBlock(History storage self, uint256 blockNumber) internal view returns (uint256) {\\n require(blockNumber < block.number, \\\"Checkpoints: block not yet mined\\\");\\n uint32 key = SafeCastUpgradeable.toUint32(blockNumber);\\n\\n uint256 len = self._checkpoints.length;\\n uint256 pos = _upperBinaryLookup(self._checkpoints, key, 0, len);\\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\\n }\\n\\n /**\\n * @dev Returns the value at a given block number. If a checkpoint is not available at that block, the closest one\\n * before it is returned, or zero otherwise. Similar to {upperLookup} but optimized for the case when the searched\\n * checkpoint is probably \\\"recent\\\", defined as being among the last sqrt(N) checkpoints where N is the number of\\n * checkpoints.\\n */\\n function getAtProbablyRecentBlock(History storage self, uint256 blockNumber) internal view returns (uint256) {\\n require(blockNumber < block.number, \\\"Checkpoints: block not yet mined\\\");\\n uint32 key = SafeCastUpgradeable.toUint32(blockNumber);\\n\\n uint256 len = self._checkpoints.length;\\n\\n uint256 low = 0;\\n uint256 high = len;\\n\\n if (len > 5) {\\n uint256 mid = len - MathUpgradeable.sqrt(len);\\n if (key < _unsafeAccess(self._checkpoints, mid)._blockNumber) {\\n high = mid;\\n } else {\\n low = mid + 1;\\n }\\n }\\n\\n uint256 pos = _upperBinaryLookup(self._checkpoints, key, low, high);\\n\\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\\n }\\n\\n /**\\n * @dev Pushes a value onto a History so that it is stored as the checkpoint for the current block.\\n *\\n * Returns previous value and new value.\\n */\\n function push(History storage self, uint256 value) internal returns (uint256, uint256) {\\n return _insert(self._checkpoints, SafeCastUpgradeable.toUint32(block.number), SafeCastUpgradeable.toUint224(value));\\n }\\n\\n /**\\n * @dev Pushes a value onto a History, by updating the latest value using binary operation `op`. The new value will\\n * be set to `op(latest, delta)`.\\n *\\n * Returns previous value and new value.\\n */\\n function push(\\n History storage self,\\n function(uint256, uint256) view returns (uint256) op,\\n uint256 delta\\n ) internal returns (uint256, uint256) {\\n return push(self, op(latest(self), delta));\\n }\\n\\n /**\\n * @dev Returns the value in the most recent checkpoint, or zero if there are no checkpoints.\\n */\\n function latest(History storage self) internal view returns (uint224) {\\n uint256 pos = self._checkpoints.length;\\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\\n }\\n\\n /**\\n * @dev Returns whether there is a checkpoint in the structure (i.e. it is not empty), and if so the key and value\\n * in the most recent checkpoint.\\n */\\n function latestCheckpoint(\\n History storage self\\n ) internal view returns (bool exists, uint32 _blockNumber, uint224 _value) {\\n uint256 pos = self._checkpoints.length;\\n if (pos == 0) {\\n return (false, 0, 0);\\n } else {\\n Checkpoint memory ckpt = _unsafeAccess(self._checkpoints, pos - 1);\\n return (true, ckpt._blockNumber, ckpt._value);\\n }\\n }\\n\\n /**\\n * @dev Returns the number of checkpoint.\\n */\\n function length(History storage self) internal view returns (uint256) {\\n return self._checkpoints.length;\\n }\\n\\n /**\\n * @dev Pushes a (`key`, `value`) pair into an ordered list of checkpoints, either by inserting a new checkpoint,\\n * or by updating the last one.\\n */\\n function _insert(Checkpoint[] storage self, uint32 key, uint224 value) private returns (uint224, uint224) {\\n uint256 pos = self.length;\\n\\n if (pos > 0) {\\n // Copying to memory is important here.\\n Checkpoint memory last = _unsafeAccess(self, pos - 1);\\n\\n // Checkpoint keys must be non-decreasing.\\n require(last._blockNumber <= key, \\\"Checkpoint: decreasing keys\\\");\\n\\n // Update or push new checkpoint\\n if (last._blockNumber == key) {\\n _unsafeAccess(self, pos - 1)._value = value;\\n } else {\\n self.push(Checkpoint({_blockNumber: key, _value: value}));\\n }\\n return (last._value, value);\\n } else {\\n self.push(Checkpoint({_blockNumber: key, _value: value}));\\n return (0, value);\\n }\\n }\\n\\n /**\\n * @dev Return the index of the last (most recent) checkpoint with key lower or equal than the search key, or `high` if there is none.\\n * `low` and `high` define a section where to do the search, with inclusive `low` and exclusive `high`.\\n *\\n * WARNING: `high` should not be greater than the array's length.\\n */\\n function _upperBinaryLookup(\\n Checkpoint[] storage self,\\n uint32 key,\\n uint256 low,\\n uint256 high\\n ) private view returns (uint256) {\\n while (low < high) {\\n uint256 mid = MathUpgradeable.average(low, high);\\n if (_unsafeAccess(self, mid)._blockNumber > key) {\\n high = mid;\\n } else {\\n low = mid + 1;\\n }\\n }\\n return high;\\n }\\n\\n /**\\n * @dev Return the index of the first (oldest) checkpoint with key is greater or equal than the search key, or `high` if there is none.\\n * `low` and `high` define a section where to do the search, with inclusive `low` and exclusive `high`.\\n *\\n * WARNING: `high` should not be greater than the array's length.\\n */\\n function _lowerBinaryLookup(\\n Checkpoint[] storage self,\\n uint32 key,\\n uint256 low,\\n uint256 high\\n ) private view returns (uint256) {\\n while (low < high) {\\n uint256 mid = MathUpgradeable.average(low, high);\\n if (_unsafeAccess(self, mid)._blockNumber < key) {\\n low = mid + 1;\\n } else {\\n high = mid;\\n }\\n }\\n return high;\\n }\\n\\n /**\\n * @dev Access an element of the array without performing bounds check. The position is assumed to be within bounds.\\n */\\n function _unsafeAccess(Checkpoint[] storage self, uint256 pos) private pure returns (Checkpoint storage result) {\\n assembly {\\n mstore(0, self.slot)\\n result.slot := add(keccak256(0, 0x20), pos)\\n }\\n }\\n\\n struct Trace224 {\\n Checkpoint224[] _checkpoints;\\n }\\n\\n struct Checkpoint224 {\\n uint32 _key;\\n uint224 _value;\\n }\\n\\n /**\\n * @dev Pushes a (`key`, `value`) pair into a Trace224 so that it is stored as the checkpoint.\\n *\\n * Returns previous value and new value.\\n */\\n function push(Trace224 storage self, uint32 key, uint224 value) internal returns (uint224, uint224) {\\n return _insert(self._checkpoints, key, value);\\n }\\n\\n /**\\n * @dev Returns the value in the first (oldest) checkpoint with key greater or equal than the search key, or zero if there is none.\\n */\\n function lowerLookup(Trace224 storage self, uint32 key) internal view returns (uint224) {\\n uint256 len = self._checkpoints.length;\\n uint256 pos = _lowerBinaryLookup(self._checkpoints, key, 0, len);\\n return pos == len ? 0 : _unsafeAccess(self._checkpoints, pos)._value;\\n }\\n\\n /**\\n * @dev Returns the value in the last (most recent) checkpoint with key lower or equal than the search key, or zero if there is none.\\n */\\n function upperLookup(Trace224 storage self, uint32 key) internal view returns (uint224) {\\n uint256 len = self._checkpoints.length;\\n uint256 pos = _upperBinaryLookup(self._checkpoints, key, 0, len);\\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\\n }\\n\\n /**\\n * @dev Returns the value in the last (most recent) checkpoint with key lower or equal than the search key, or zero if there is none.\\n *\\n * NOTE: This is a variant of {upperLookup} that is optimised to find \\\"recent\\\" checkpoint (checkpoints with high keys).\\n */\\n function upperLookupRecent(Trace224 storage self, uint32 key) internal view returns (uint224) {\\n uint256 len = self._checkpoints.length;\\n\\n uint256 low = 0;\\n uint256 high = len;\\n\\n if (len > 5) {\\n uint256 mid = len - MathUpgradeable.sqrt(len);\\n if (key < _unsafeAccess(self._checkpoints, mid)._key) {\\n high = mid;\\n } else {\\n low = mid + 1;\\n }\\n }\\n\\n uint256 pos = _upperBinaryLookup(self._checkpoints, key, low, high);\\n\\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\\n }\\n\\n /**\\n * @dev Returns the value in the most recent checkpoint, or zero if there are no checkpoints.\\n */\\n function latest(Trace224 storage self) internal view returns (uint224) {\\n uint256 pos = self._checkpoints.length;\\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\\n }\\n\\n /**\\n * @dev Returns whether there is a checkpoint in the structure (i.e. it is not empty), and if so the key and value\\n * in the most recent checkpoint.\\n */\\n function latestCheckpoint(Trace224 storage self) internal view returns (bool exists, uint32 _key, uint224 _value) {\\n uint256 pos = self._checkpoints.length;\\n if (pos == 0) {\\n return (false, 0, 0);\\n } else {\\n Checkpoint224 memory ckpt = _unsafeAccess(self._checkpoints, pos - 1);\\n return (true, ckpt._key, ckpt._value);\\n }\\n }\\n\\n /**\\n * @dev Returns the number of checkpoint.\\n */\\n function length(Trace224 storage self) internal view returns (uint256) {\\n return self._checkpoints.length;\\n }\\n\\n /**\\n * @dev Pushes a (`key`, `value`) pair into an ordered list of checkpoints, either by inserting a new checkpoint,\\n * or by updating the last one.\\n */\\n function _insert(Checkpoint224[] storage self, uint32 key, uint224 value) private returns (uint224, uint224) {\\n uint256 pos = self.length;\\n\\n if (pos > 0) {\\n // Copying to memory is important here.\\n Checkpoint224 memory last = _unsafeAccess(self, pos - 1);\\n\\n // Checkpoint keys must be non-decreasing.\\n require(last._key <= key, \\\"Checkpoint: decreasing keys\\\");\\n\\n // Update or push new checkpoint\\n if (last._key == key) {\\n _unsafeAccess(self, pos - 1)._value = value;\\n } else {\\n self.push(Checkpoint224({_key: key, _value: value}));\\n }\\n return (last._value, value);\\n } else {\\n self.push(Checkpoint224({_key: key, _value: value}));\\n return (0, value);\\n }\\n }\\n\\n /**\\n * @dev Return the index of the last (most recent) checkpoint with key lower or equal than the search key, or `high` if there is none.\\n * `low` and `high` define a section where to do the search, with inclusive `low` and exclusive `high`.\\n *\\n * WARNING: `high` should not be greater than the array's length.\\n */\\n function _upperBinaryLookup(\\n Checkpoint224[] storage self,\\n uint32 key,\\n uint256 low,\\n uint256 high\\n ) private view returns (uint256) {\\n while (low < high) {\\n uint256 mid = MathUpgradeable.average(low, high);\\n if (_unsafeAccess(self, mid)._key > key) {\\n high = mid;\\n } else {\\n low = mid + 1;\\n }\\n }\\n return high;\\n }\\n\\n /**\\n * @dev Return the index of the first (oldest) checkpoint with key is greater or equal than the search key, or `high` if there is none.\\n * `low` and `high` define a section where to do the search, with inclusive `low` and exclusive `high`.\\n *\\n * WARNING: `high` should not be greater than the array's length.\\n */\\n function _lowerBinaryLookup(\\n Checkpoint224[] storage self,\\n uint32 key,\\n uint256 low,\\n uint256 high\\n ) private view returns (uint256) {\\n while (low < high) {\\n uint256 mid = MathUpgradeable.average(low, high);\\n if (_unsafeAccess(self, mid)._key < key) {\\n low = mid + 1;\\n } else {\\n high = mid;\\n }\\n }\\n return high;\\n }\\n\\n /**\\n * @dev Access an element of the array without performing bounds check. The position is assumed to be within bounds.\\n */\\n function _unsafeAccess(\\n Checkpoint224[] storage self,\\n uint256 pos\\n ) private pure returns (Checkpoint224 storage result) {\\n assembly {\\n mstore(0, self.slot)\\n result.slot := add(keccak256(0, 0x20), pos)\\n }\\n }\\n\\n struct Trace160 {\\n Checkpoint160[] _checkpoints;\\n }\\n\\n struct Checkpoint160 {\\n uint96 _key;\\n uint160 _value;\\n }\\n\\n /**\\n * @dev Pushes a (`key`, `value`) pair into a Trace160 so that it is stored as the checkpoint.\\n *\\n * Returns previous value and new value.\\n */\\n function push(Trace160 storage self, uint96 key, uint160 value) internal returns (uint160, uint160) {\\n return _insert(self._checkpoints, key, value);\\n }\\n\\n /**\\n * @dev Returns the value in the first (oldest) checkpoint with key greater or equal than the search key, or zero if there is none.\\n */\\n function lowerLookup(Trace160 storage self, uint96 key) internal view returns (uint160) {\\n uint256 len = self._checkpoints.length;\\n uint256 pos = _lowerBinaryLookup(self._checkpoints, key, 0, len);\\n return pos == len ? 0 : _unsafeAccess(self._checkpoints, pos)._value;\\n }\\n\\n /**\\n * @dev Returns the value in the last (most recent) checkpoint with key lower or equal than the search key, or zero if there is none.\\n */\\n function upperLookup(Trace160 storage self, uint96 key) internal view returns (uint160) {\\n uint256 len = self._checkpoints.length;\\n uint256 pos = _upperBinaryLookup(self._checkpoints, key, 0, len);\\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\\n }\\n\\n /**\\n * @dev Returns the value in the last (most recent) checkpoint with key lower or equal than the search key, or zero if there is none.\\n *\\n * NOTE: This is a variant of {upperLookup} that is optimised to find \\\"recent\\\" checkpoint (checkpoints with high keys).\\n */\\n function upperLookupRecent(Trace160 storage self, uint96 key) internal view returns (uint160) {\\n uint256 len = self._checkpoints.length;\\n\\n uint256 low = 0;\\n uint256 high = len;\\n\\n if (len > 5) {\\n uint256 mid = len - MathUpgradeable.sqrt(len);\\n if (key < _unsafeAccess(self._checkpoints, mid)._key) {\\n high = mid;\\n } else {\\n low = mid + 1;\\n }\\n }\\n\\n uint256 pos = _upperBinaryLookup(self._checkpoints, key, low, high);\\n\\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\\n }\\n\\n /**\\n * @dev Returns the value in the most recent checkpoint, or zero if there are no checkpoints.\\n */\\n function latest(Trace160 storage self) internal view returns (uint160) {\\n uint256 pos = self._checkpoints.length;\\n return pos == 0 ? 0 : _unsafeAccess(self._checkpoints, pos - 1)._value;\\n }\\n\\n /**\\n * @dev Returns whether there is a checkpoint in the structure (i.e. it is not empty), and if so the key and value\\n * in the most recent checkpoint.\\n */\\n function latestCheckpoint(Trace160 storage self) internal view returns (bool exists, uint96 _key, uint160 _value) {\\n uint256 pos = self._checkpoints.length;\\n if (pos == 0) {\\n return (false, 0, 0);\\n } else {\\n Checkpoint160 memory ckpt = _unsafeAccess(self._checkpoints, pos - 1);\\n return (true, ckpt._key, ckpt._value);\\n }\\n }\\n\\n /**\\n * @dev Returns the number of checkpoint.\\n */\\n function length(Trace160 storage self) internal view returns (uint256) {\\n return self._checkpoints.length;\\n }\\n\\n /**\\n * @dev Pushes a (`key`, `value`) pair into an ordered list of checkpoints, either by inserting a new checkpoint,\\n * or by updating the last one.\\n */\\n function _insert(Checkpoint160[] storage self, uint96 key, uint160 value) private returns (uint160, uint160) {\\n uint256 pos = self.length;\\n\\n if (pos > 0) {\\n // Copying to memory is important here.\\n Checkpoint160 memory last = _unsafeAccess(self, pos - 1);\\n\\n // Checkpoint keys must be non-decreasing.\\n require(last._key <= key, \\\"Checkpoint: decreasing keys\\\");\\n\\n // Update or push new checkpoint\\n if (last._key == key) {\\n _unsafeAccess(self, pos - 1)._value = value;\\n } else {\\n self.push(Checkpoint160({_key: key, _value: value}));\\n }\\n return (last._value, value);\\n } else {\\n self.push(Checkpoint160({_key: key, _value: value}));\\n return (0, value);\\n }\\n }\\n\\n /**\\n * @dev Return the index of the last (most recent) checkpoint with key lower or equal than the search key, or `high` if there is none.\\n * `low` and `high` define a section where to do the search, with inclusive `low` and exclusive `high`.\\n *\\n * WARNING: `high` should not be greater than the array's length.\\n */\\n function _upperBinaryLookup(\\n Checkpoint160[] storage self,\\n uint96 key,\\n uint256 low,\\n uint256 high\\n ) private view returns (uint256) {\\n while (low < high) {\\n uint256 mid = MathUpgradeable.average(low, high);\\n if (_unsafeAccess(self, mid)._key > key) {\\n high = mid;\\n } else {\\n low = mid + 1;\\n }\\n }\\n return high;\\n }\\n\\n /**\\n * @dev Return the index of the first (oldest) checkpoint with key is greater or equal than the search key, or `high` if there is none.\\n * `low` and `high` define a section where to do the search, with inclusive `low` and exclusive `high`.\\n *\\n * WARNING: `high` should not be greater than the array's length.\\n */\\n function _lowerBinaryLookup(\\n Checkpoint160[] storage self,\\n uint96 key,\\n uint256 low,\\n uint256 high\\n ) private view returns (uint256) {\\n while (low < high) {\\n uint256 mid = MathUpgradeable.average(low, high);\\n if (_unsafeAccess(self, mid)._key < key) {\\n low = mid + 1;\\n } else {\\n high = mid;\\n }\\n }\\n return high;\\n }\\n\\n /**\\n * @dev Access an element of the array without performing bounds check. The position is assumed to be within bounds.\\n */\\n function _unsafeAccess(\\n Checkpoint160[] storage self,\\n uint256 pos\\n ) private pure returns (Checkpoint160 storage result) {\\n assembly {\\n mstore(0, self.slot)\\n result.slot := add(keccak256(0, 0x20), pos)\\n }\\n }\\n}\\n\",\"keccak256\":\"0x51ea916844ee2c53874c6895ce37acbca0250977b49b48909d75ad439f38f211\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/math/MathUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/math/Math.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard math utilities missing in the Solidity language.\\n */\\nlibrary MathUpgradeable {\\n enum Rounding {\\n Down, // Toward negative infinity\\n Up, // Toward infinity\\n Zero // Toward zero\\n }\\n\\n /**\\n * @dev Returns the largest of two numbers.\\n */\\n function max(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two numbers.\\n */\\n function min(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two numbers. The result is rounded towards\\n * zero.\\n */\\n function average(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b) / 2 can overflow.\\n return (a & b) + (a ^ b) / 2;\\n }\\n\\n /**\\n * @dev Returns the ceiling of the division of two numbers.\\n *\\n * This differs from standard division with `/` in that it rounds up instead\\n * of rounding down.\\n */\\n function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b - 1) / b can overflow on addition, so we distribute.\\n return a == 0 ? 0 : (a - 1) / b + 1;\\n }\\n\\n /**\\n * @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\\n * @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)\\n * with further edits by Uniswap Labs also under MIT license.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator) internal pure returns (uint256 result) {\\n unchecked {\\n // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use\\n // use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\\n // variables such that product = prod1 * 2^256 + prod0.\\n uint256 prod0; // Least significant 256 bits of the product\\n uint256 prod1; // Most significant 256 bits of the product\\n assembly {\\n let mm := mulmod(x, y, not(0))\\n prod0 := mul(x, y)\\n prod1 := sub(sub(mm, prod0), lt(mm, prod0))\\n }\\n\\n // Handle non-overflow cases, 256 by 256 division.\\n if (prod1 == 0) {\\n // Solidity will revert if denominator == 0, unlike the div opcode on its own.\\n // The surrounding unchecked block does not change this fact.\\n // See https://docs.soliditylang.org/en/latest/control-structures.html#checked-or-unchecked-arithmetic.\\n return prod0 / denominator;\\n }\\n\\n // Make sure the result is less than 2^256. Also prevents denominator == 0.\\n require(denominator > prod1, \\\"Math: mulDiv overflow\\\");\\n\\n ///////////////////////////////////////////////\\n // 512 by 256 division.\\n ///////////////////////////////////////////////\\n\\n // Make division exact by subtracting the remainder from [prod1 prod0].\\n uint256 remainder;\\n assembly {\\n // Compute remainder using mulmod.\\n remainder := mulmod(x, y, denominator)\\n\\n // Subtract 256 bit number from 512 bit number.\\n prod1 := sub(prod1, gt(remainder, prod0))\\n prod0 := sub(prod0, remainder)\\n }\\n\\n // Factor powers of two out of denominator and compute largest power of two divisor of denominator. Always >= 1.\\n // See https://cs.stackexchange.com/q/138556/92363.\\n\\n // Does not overflow because the denominator cannot be zero at this stage in the function.\\n uint256 twos = denominator & (~denominator + 1);\\n assembly {\\n // Divide denominator by twos.\\n denominator := div(denominator, twos)\\n\\n // Divide [prod1 prod0] by twos.\\n prod0 := div(prod0, twos)\\n\\n // Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one.\\n twos := add(div(sub(0, twos), twos), 1)\\n }\\n\\n // Shift in bits from prod1 into prod0.\\n prod0 |= prod1 * twos;\\n\\n // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such\\n // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for\\n // four bits. That is, denominator * inv = 1 mod 2^4.\\n uint256 inverse = (3 * denominator) ^ 2;\\n\\n // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also works\\n // in modular arithmetic, doubling the correct bits in each step.\\n inverse *= 2 - denominator * inverse; // inverse mod 2^8\\n inverse *= 2 - denominator * inverse; // inverse mod 2^16\\n inverse *= 2 - denominator * inverse; // inverse mod 2^32\\n inverse *= 2 - denominator * inverse; // inverse mod 2^64\\n inverse *= 2 - denominator * inverse; // inverse mod 2^128\\n inverse *= 2 - denominator * inverse; // inverse mod 2^256\\n\\n // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\\n // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is\\n // less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1\\n // is no longer required.\\n result = prod0 * inverse;\\n return result;\\n }\\n }\\n\\n /**\\n * @notice Calculates x * y / denominator with full precision, following the selected rounding direction.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator, Rounding rounding) internal pure returns (uint256) {\\n uint256 result = mulDiv(x, y, denominator);\\n if (rounding == Rounding.Up && mulmod(x, y, denominator) > 0) {\\n result += 1;\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down.\\n *\\n * Inspired by Henry S. Warren, Jr.'s \\\"Hacker's Delight\\\" (Chapter 11).\\n */\\n function sqrt(uint256 a) internal pure returns (uint256) {\\n if (a == 0) {\\n return 0;\\n }\\n\\n // For our first guess, we get the biggest power of 2 which is smaller than the square root of the target.\\n //\\n // We know that the \\\"msb\\\" (most significant bit) of our target number `a` is a power of 2 such that we have\\n // `msb(a) <= a < 2*msb(a)`. This value can be written `msb(a)=2**k` with `k=log2(a)`.\\n //\\n // This can be rewritten `2**log2(a) <= a < 2**(log2(a) + 1)`\\n // \\u2192 `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))`\\n // \\u2192 `2**(k/2) <= sqrt(a) < 2**((k+1)/2) <= 2**(k/2 + 1)`\\n //\\n // Consequently, `2**(log2(a) / 2)` is a good first approximation of `sqrt(a)` with at least 1 correct bit.\\n uint256 result = 1 << (log2(a) >> 1);\\n\\n // At this point `result` is an estimation with one bit of precision. We know the true value is a uint128,\\n // since it is the square root of a uint256. Newton's method converges quadratically (precision doubles at\\n // every iteration). We thus need at most 7 iteration to turn our partial result with one bit of precision\\n // into the expected uint128 result.\\n unchecked {\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n return min(result, a / result);\\n }\\n }\\n\\n /**\\n * @notice Calculates sqrt(a), following the selected rounding direction.\\n */\\n function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = sqrt(a);\\n return result + (rounding == Rounding.Up && result * result < a ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 2, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 128;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 64;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 32;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 16;\\n }\\n if (value >> 8 > 0) {\\n value >>= 8;\\n result += 8;\\n }\\n if (value >> 4 > 0) {\\n value >>= 4;\\n result += 4;\\n }\\n if (value >> 2 > 0) {\\n value >>= 2;\\n result += 2;\\n }\\n if (value >> 1 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 2, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log2(value);\\n return result + (rounding == Rounding.Up && 1 << result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 10, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >= 10 ** 64) {\\n value /= 10 ** 64;\\n result += 64;\\n }\\n if (value >= 10 ** 32) {\\n value /= 10 ** 32;\\n result += 32;\\n }\\n if (value >= 10 ** 16) {\\n value /= 10 ** 16;\\n result += 16;\\n }\\n if (value >= 10 ** 8) {\\n value /= 10 ** 8;\\n result += 8;\\n }\\n if (value >= 10 ** 4) {\\n value /= 10 ** 4;\\n result += 4;\\n }\\n if (value >= 10 ** 2) {\\n value /= 10 ** 2;\\n result += 2;\\n }\\n if (value >= 10 ** 1) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log10(value);\\n return result + (rounding == Rounding.Up && 10 ** result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 256, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n *\\n * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.\\n */\\n function log256(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 16;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 8;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 4;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 2;\\n }\\n if (value >> 8 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 256, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log256(value);\\n return result + (rounding == Rounding.Up && 1 << (result << 3) < value ? 1 : 0);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x2bc0007987c229ae7624eb29be6a9b84f6a6a5872f76248b15208b131ea41c4e\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/SafeCast.sol)\\n// This file was procedurally generated from scripts/generate/templates/SafeCast.js.\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Wrappers over Solidity's uintXX/intXX casting operators with added overflow\\n * checks.\\n *\\n * Downcasting from uint256/int256 in Solidity does not revert on overflow. This can\\n * easily result in undesired exploitation or bugs, since developers usually\\n * assume that overflows raise errors. `SafeCast` restores this intuition by\\n * reverting the transaction when such an operation overflows.\\n *\\n * Using this library instead of the unchecked operations eliminates an entire\\n * class of bugs, so it's recommended to use it always.\\n *\\n * Can be combined with {SafeMath} and {SignedSafeMath} to extend it to smaller types, by performing\\n * all math on `uint256` and `int256` and then downcasting.\\n */\\nlibrary SafeCastUpgradeable {\\n /**\\n * @dev Returns the downcasted uint248 from uint256, reverting on\\n * overflow (when the input is greater than largest uint248).\\n *\\n * Counterpart to Solidity's `uint248` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 248 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint248(uint256 value) internal pure returns (uint248) {\\n require(value <= type(uint248).max, \\\"SafeCast: value doesn't fit in 248 bits\\\");\\n return uint248(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint240 from uint256, reverting on\\n * overflow (when the input is greater than largest uint240).\\n *\\n * Counterpart to Solidity's `uint240` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 240 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint240(uint256 value) internal pure returns (uint240) {\\n require(value <= type(uint240).max, \\\"SafeCast: value doesn't fit in 240 bits\\\");\\n return uint240(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint232 from uint256, reverting on\\n * overflow (when the input is greater than largest uint232).\\n *\\n * Counterpart to Solidity's `uint232` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 232 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint232(uint256 value) internal pure returns (uint232) {\\n require(value <= type(uint232).max, \\\"SafeCast: value doesn't fit in 232 bits\\\");\\n return uint232(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint224 from uint256, reverting on\\n * overflow (when the input is greater than largest uint224).\\n *\\n * Counterpart to Solidity's `uint224` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 224 bits\\n *\\n * _Available since v4.2._\\n */\\n function toUint224(uint256 value) internal pure returns (uint224) {\\n require(value <= type(uint224).max, \\\"SafeCast: value doesn't fit in 224 bits\\\");\\n return uint224(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint216 from uint256, reverting on\\n * overflow (when the input is greater than largest uint216).\\n *\\n * Counterpart to Solidity's `uint216` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 216 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint216(uint256 value) internal pure returns (uint216) {\\n require(value <= type(uint216).max, \\\"SafeCast: value doesn't fit in 216 bits\\\");\\n return uint216(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint208 from uint256, reverting on\\n * overflow (when the input is greater than largest uint208).\\n *\\n * Counterpart to Solidity's `uint208` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 208 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint208(uint256 value) internal pure returns (uint208) {\\n require(value <= type(uint208).max, \\\"SafeCast: value doesn't fit in 208 bits\\\");\\n return uint208(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint200 from uint256, reverting on\\n * overflow (when the input is greater than largest uint200).\\n *\\n * Counterpart to Solidity's `uint200` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 200 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint200(uint256 value) internal pure returns (uint200) {\\n require(value <= type(uint200).max, \\\"SafeCast: value doesn't fit in 200 bits\\\");\\n return uint200(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint192 from uint256, reverting on\\n * overflow (when the input is greater than largest uint192).\\n *\\n * Counterpart to Solidity's `uint192` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 192 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint192(uint256 value) internal pure returns (uint192) {\\n require(value <= type(uint192).max, \\\"SafeCast: value doesn't fit in 192 bits\\\");\\n return uint192(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint184 from uint256, reverting on\\n * overflow (when the input is greater than largest uint184).\\n *\\n * Counterpart to Solidity's `uint184` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 184 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint184(uint256 value) internal pure returns (uint184) {\\n require(value <= type(uint184).max, \\\"SafeCast: value doesn't fit in 184 bits\\\");\\n return uint184(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint176 from uint256, reverting on\\n * overflow (when the input is greater than largest uint176).\\n *\\n * Counterpart to Solidity's `uint176` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 176 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint176(uint256 value) internal pure returns (uint176) {\\n require(value <= type(uint176).max, \\\"SafeCast: value doesn't fit in 176 bits\\\");\\n return uint176(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint168 from uint256, reverting on\\n * overflow (when the input is greater than largest uint168).\\n *\\n * Counterpart to Solidity's `uint168` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 168 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint168(uint256 value) internal pure returns (uint168) {\\n require(value <= type(uint168).max, \\\"SafeCast: value doesn't fit in 168 bits\\\");\\n return uint168(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint160 from uint256, reverting on\\n * overflow (when the input is greater than largest uint160).\\n *\\n * Counterpart to Solidity's `uint160` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 160 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint160(uint256 value) internal pure returns (uint160) {\\n require(value <= type(uint160).max, \\\"SafeCast: value doesn't fit in 160 bits\\\");\\n return uint160(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint152 from uint256, reverting on\\n * overflow (when the input is greater than largest uint152).\\n *\\n * Counterpart to Solidity's `uint152` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 152 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint152(uint256 value) internal pure returns (uint152) {\\n require(value <= type(uint152).max, \\\"SafeCast: value doesn't fit in 152 bits\\\");\\n return uint152(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint144 from uint256, reverting on\\n * overflow (when the input is greater than largest uint144).\\n *\\n * Counterpart to Solidity's `uint144` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 144 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint144(uint256 value) internal pure returns (uint144) {\\n require(value <= type(uint144).max, \\\"SafeCast: value doesn't fit in 144 bits\\\");\\n return uint144(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint136 from uint256, reverting on\\n * overflow (when the input is greater than largest uint136).\\n *\\n * Counterpart to Solidity's `uint136` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 136 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint136(uint256 value) internal pure returns (uint136) {\\n require(value <= type(uint136).max, \\\"SafeCast: value doesn't fit in 136 bits\\\");\\n return uint136(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint128 from uint256, reverting on\\n * overflow (when the input is greater than largest uint128).\\n *\\n * Counterpart to Solidity's `uint128` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 128 bits\\n *\\n * _Available since v2.5._\\n */\\n function toUint128(uint256 value) internal pure returns (uint128) {\\n require(value <= type(uint128).max, \\\"SafeCast: value doesn't fit in 128 bits\\\");\\n return uint128(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint120 from uint256, reverting on\\n * overflow (when the input is greater than largest uint120).\\n *\\n * Counterpart to Solidity's `uint120` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 120 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint120(uint256 value) internal pure returns (uint120) {\\n require(value <= type(uint120).max, \\\"SafeCast: value doesn't fit in 120 bits\\\");\\n return uint120(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint112 from uint256, reverting on\\n * overflow (when the input is greater than largest uint112).\\n *\\n * Counterpart to Solidity's `uint112` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 112 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint112(uint256 value) internal pure returns (uint112) {\\n require(value <= type(uint112).max, \\\"SafeCast: value doesn't fit in 112 bits\\\");\\n return uint112(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint104 from uint256, reverting on\\n * overflow (when the input is greater than largest uint104).\\n *\\n * Counterpart to Solidity's `uint104` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 104 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint104(uint256 value) internal pure returns (uint104) {\\n require(value <= type(uint104).max, \\\"SafeCast: value doesn't fit in 104 bits\\\");\\n return uint104(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint96 from uint256, reverting on\\n * overflow (when the input is greater than largest uint96).\\n *\\n * Counterpart to Solidity's `uint96` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 96 bits\\n *\\n * _Available since v4.2._\\n */\\n function toUint96(uint256 value) internal pure returns (uint96) {\\n require(value <= type(uint96).max, \\\"SafeCast: value doesn't fit in 96 bits\\\");\\n return uint96(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint88 from uint256, reverting on\\n * overflow (when the input is greater than largest uint88).\\n *\\n * Counterpart to Solidity's `uint88` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 88 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint88(uint256 value) internal pure returns (uint88) {\\n require(value <= type(uint88).max, \\\"SafeCast: value doesn't fit in 88 bits\\\");\\n return uint88(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint80 from uint256, reverting on\\n * overflow (when the input is greater than largest uint80).\\n *\\n * Counterpart to Solidity's `uint80` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 80 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint80(uint256 value) internal pure returns (uint80) {\\n require(value <= type(uint80).max, \\\"SafeCast: value doesn't fit in 80 bits\\\");\\n return uint80(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint72 from uint256, reverting on\\n * overflow (when the input is greater than largest uint72).\\n *\\n * Counterpart to Solidity's `uint72` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 72 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint72(uint256 value) internal pure returns (uint72) {\\n require(value <= type(uint72).max, \\\"SafeCast: value doesn't fit in 72 bits\\\");\\n return uint72(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint64 from uint256, reverting on\\n * overflow (when the input is greater than largest uint64).\\n *\\n * Counterpart to Solidity's `uint64` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 64 bits\\n *\\n * _Available since v2.5._\\n */\\n function toUint64(uint256 value) internal pure returns (uint64) {\\n require(value <= type(uint64).max, \\\"SafeCast: value doesn't fit in 64 bits\\\");\\n return uint64(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint56 from uint256, reverting on\\n * overflow (when the input is greater than largest uint56).\\n *\\n * Counterpart to Solidity's `uint56` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 56 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint56(uint256 value) internal pure returns (uint56) {\\n require(value <= type(uint56).max, \\\"SafeCast: value doesn't fit in 56 bits\\\");\\n return uint56(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint48 from uint256, reverting on\\n * overflow (when the input is greater than largest uint48).\\n *\\n * Counterpart to Solidity's `uint48` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 48 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint48(uint256 value) internal pure returns (uint48) {\\n require(value <= type(uint48).max, \\\"SafeCast: value doesn't fit in 48 bits\\\");\\n return uint48(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint40 from uint256, reverting on\\n * overflow (when the input is greater than largest uint40).\\n *\\n * Counterpart to Solidity's `uint40` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 40 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint40(uint256 value) internal pure returns (uint40) {\\n require(value <= type(uint40).max, \\\"SafeCast: value doesn't fit in 40 bits\\\");\\n return uint40(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint32 from uint256, reverting on\\n * overflow (when the input is greater than largest uint32).\\n *\\n * Counterpart to Solidity's `uint32` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 32 bits\\n *\\n * _Available since v2.5._\\n */\\n function toUint32(uint256 value) internal pure returns (uint32) {\\n require(value <= type(uint32).max, \\\"SafeCast: value doesn't fit in 32 bits\\\");\\n return uint32(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint24 from uint256, reverting on\\n * overflow (when the input is greater than largest uint24).\\n *\\n * Counterpart to Solidity's `uint24` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 24 bits\\n *\\n * _Available since v4.7._\\n */\\n function toUint24(uint256 value) internal pure returns (uint24) {\\n require(value <= type(uint24).max, \\\"SafeCast: value doesn't fit in 24 bits\\\");\\n return uint24(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint16 from uint256, reverting on\\n * overflow (when the input is greater than largest uint16).\\n *\\n * Counterpart to Solidity's `uint16` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 16 bits\\n *\\n * _Available since v2.5._\\n */\\n function toUint16(uint256 value) internal pure returns (uint16) {\\n require(value <= type(uint16).max, \\\"SafeCast: value doesn't fit in 16 bits\\\");\\n return uint16(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint8 from uint256, reverting on\\n * overflow (when the input is greater than largest uint8).\\n *\\n * Counterpart to Solidity's `uint8` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 8 bits\\n *\\n * _Available since v2.5._\\n */\\n function toUint8(uint256 value) internal pure returns (uint8) {\\n require(value <= type(uint8).max, \\\"SafeCast: value doesn't fit in 8 bits\\\");\\n return uint8(value);\\n }\\n\\n /**\\n * @dev Converts a signed int256 into an unsigned uint256.\\n *\\n * Requirements:\\n *\\n * - input must be greater than or equal to 0.\\n *\\n * _Available since v3.0._\\n */\\n function toUint256(int256 value) internal pure returns (uint256) {\\n require(value >= 0, \\\"SafeCast: value must be positive\\\");\\n return uint256(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted int248 from int256, reverting on\\n * overflow (when the input is less than smallest int248 or\\n * greater than largest int248).\\n *\\n * Counterpart to Solidity's `int248` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 248 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt248(int256 value) internal pure returns (int248 downcasted) {\\n downcasted = int248(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 248 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int240 from int256, reverting on\\n * overflow (when the input is less than smallest int240 or\\n * greater than largest int240).\\n *\\n * Counterpart to Solidity's `int240` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 240 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt240(int256 value) internal pure returns (int240 downcasted) {\\n downcasted = int240(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 240 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int232 from int256, reverting on\\n * overflow (when the input is less than smallest int232 or\\n * greater than largest int232).\\n *\\n * Counterpart to Solidity's `int232` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 232 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt232(int256 value) internal pure returns (int232 downcasted) {\\n downcasted = int232(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 232 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int224 from int256, reverting on\\n * overflow (when the input is less than smallest int224 or\\n * greater than largest int224).\\n *\\n * Counterpart to Solidity's `int224` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 224 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt224(int256 value) internal pure returns (int224 downcasted) {\\n downcasted = int224(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 224 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int216 from int256, reverting on\\n * overflow (when the input is less than smallest int216 or\\n * greater than largest int216).\\n *\\n * Counterpart to Solidity's `int216` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 216 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt216(int256 value) internal pure returns (int216 downcasted) {\\n downcasted = int216(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 216 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int208 from int256, reverting on\\n * overflow (when the input is less than smallest int208 or\\n * greater than largest int208).\\n *\\n * Counterpart to Solidity's `int208` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 208 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt208(int256 value) internal pure returns (int208 downcasted) {\\n downcasted = int208(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 208 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int200 from int256, reverting on\\n * overflow (when the input is less than smallest int200 or\\n * greater than largest int200).\\n *\\n * Counterpart to Solidity's `int200` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 200 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt200(int256 value) internal pure returns (int200 downcasted) {\\n downcasted = int200(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 200 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int192 from int256, reverting on\\n * overflow (when the input is less than smallest int192 or\\n * greater than largest int192).\\n *\\n * Counterpart to Solidity's `int192` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 192 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt192(int256 value) internal pure returns (int192 downcasted) {\\n downcasted = int192(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 192 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int184 from int256, reverting on\\n * overflow (when the input is less than smallest int184 or\\n * greater than largest int184).\\n *\\n * Counterpart to Solidity's `int184` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 184 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt184(int256 value) internal pure returns (int184 downcasted) {\\n downcasted = int184(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 184 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int176 from int256, reverting on\\n * overflow (when the input is less than smallest int176 or\\n * greater than largest int176).\\n *\\n * Counterpart to Solidity's `int176` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 176 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt176(int256 value) internal pure returns (int176 downcasted) {\\n downcasted = int176(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 176 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int168 from int256, reverting on\\n * overflow (when the input is less than smallest int168 or\\n * greater than largest int168).\\n *\\n * Counterpart to Solidity's `int168` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 168 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt168(int256 value) internal pure returns (int168 downcasted) {\\n downcasted = int168(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 168 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int160 from int256, reverting on\\n * overflow (when the input is less than smallest int160 or\\n * greater than largest int160).\\n *\\n * Counterpart to Solidity's `int160` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 160 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt160(int256 value) internal pure returns (int160 downcasted) {\\n downcasted = int160(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 160 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int152 from int256, reverting on\\n * overflow (when the input is less than smallest int152 or\\n * greater than largest int152).\\n *\\n * Counterpart to Solidity's `int152` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 152 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt152(int256 value) internal pure returns (int152 downcasted) {\\n downcasted = int152(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 152 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int144 from int256, reverting on\\n * overflow (when the input is less than smallest int144 or\\n * greater than largest int144).\\n *\\n * Counterpart to Solidity's `int144` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 144 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt144(int256 value) internal pure returns (int144 downcasted) {\\n downcasted = int144(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 144 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int136 from int256, reverting on\\n * overflow (when the input is less than smallest int136 or\\n * greater than largest int136).\\n *\\n * Counterpart to Solidity's `int136` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 136 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt136(int256 value) internal pure returns (int136 downcasted) {\\n downcasted = int136(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 136 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int128 from int256, reverting on\\n * overflow (when the input is less than smallest int128 or\\n * greater than largest int128).\\n *\\n * Counterpart to Solidity's `int128` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 128 bits\\n *\\n * _Available since v3.1._\\n */\\n function toInt128(int256 value) internal pure returns (int128 downcasted) {\\n downcasted = int128(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 128 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int120 from int256, reverting on\\n * overflow (when the input is less than smallest int120 or\\n * greater than largest int120).\\n *\\n * Counterpart to Solidity's `int120` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 120 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt120(int256 value) internal pure returns (int120 downcasted) {\\n downcasted = int120(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 120 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int112 from int256, reverting on\\n * overflow (when the input is less than smallest int112 or\\n * greater than largest int112).\\n *\\n * Counterpart to Solidity's `int112` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 112 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt112(int256 value) internal pure returns (int112 downcasted) {\\n downcasted = int112(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 112 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int104 from int256, reverting on\\n * overflow (when the input is less than smallest int104 or\\n * greater than largest int104).\\n *\\n * Counterpart to Solidity's `int104` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 104 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt104(int256 value) internal pure returns (int104 downcasted) {\\n downcasted = int104(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 104 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int96 from int256, reverting on\\n * overflow (when the input is less than smallest int96 or\\n * greater than largest int96).\\n *\\n * Counterpart to Solidity's `int96` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 96 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt96(int256 value) internal pure returns (int96 downcasted) {\\n downcasted = int96(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 96 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int88 from int256, reverting on\\n * overflow (when the input is less than smallest int88 or\\n * greater than largest int88).\\n *\\n * Counterpart to Solidity's `int88` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 88 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt88(int256 value) internal pure returns (int88 downcasted) {\\n downcasted = int88(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 88 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int80 from int256, reverting on\\n * overflow (when the input is less than smallest int80 or\\n * greater than largest int80).\\n *\\n * Counterpart to Solidity's `int80` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 80 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt80(int256 value) internal pure returns (int80 downcasted) {\\n downcasted = int80(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 80 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int72 from int256, reverting on\\n * overflow (when the input is less than smallest int72 or\\n * greater than largest int72).\\n *\\n * Counterpart to Solidity's `int72` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 72 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt72(int256 value) internal pure returns (int72 downcasted) {\\n downcasted = int72(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 72 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int64 from int256, reverting on\\n * overflow (when the input is less than smallest int64 or\\n * greater than largest int64).\\n *\\n * Counterpart to Solidity's `int64` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 64 bits\\n *\\n * _Available since v3.1._\\n */\\n function toInt64(int256 value) internal pure returns (int64 downcasted) {\\n downcasted = int64(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 64 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int56 from int256, reverting on\\n * overflow (when the input is less than smallest int56 or\\n * greater than largest int56).\\n *\\n * Counterpart to Solidity's `int56` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 56 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt56(int256 value) internal pure returns (int56 downcasted) {\\n downcasted = int56(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 56 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int48 from int256, reverting on\\n * overflow (when the input is less than smallest int48 or\\n * greater than largest int48).\\n *\\n * Counterpart to Solidity's `int48` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 48 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt48(int256 value) internal pure returns (int48 downcasted) {\\n downcasted = int48(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 48 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int40 from int256, reverting on\\n * overflow (when the input is less than smallest int40 or\\n * greater than largest int40).\\n *\\n * Counterpart to Solidity's `int40` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 40 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt40(int256 value) internal pure returns (int40 downcasted) {\\n downcasted = int40(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 40 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int32 from int256, reverting on\\n * overflow (when the input is less than smallest int32 or\\n * greater than largest int32).\\n *\\n * Counterpart to Solidity's `int32` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 32 bits\\n *\\n * _Available since v3.1._\\n */\\n function toInt32(int256 value) internal pure returns (int32 downcasted) {\\n downcasted = int32(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 32 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int24 from int256, reverting on\\n * overflow (when the input is less than smallest int24 or\\n * greater than largest int24).\\n *\\n * Counterpart to Solidity's `int24` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 24 bits\\n *\\n * _Available since v4.7._\\n */\\n function toInt24(int256 value) internal pure returns (int24 downcasted) {\\n downcasted = int24(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 24 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int16 from int256, reverting on\\n * overflow (when the input is less than smallest int16 or\\n * greater than largest int16).\\n *\\n * Counterpart to Solidity's `int16` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 16 bits\\n *\\n * _Available since v3.1._\\n */\\n function toInt16(int256 value) internal pure returns (int16 downcasted) {\\n downcasted = int16(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 16 bits\\\");\\n }\\n\\n /**\\n * @dev Returns the downcasted int8 from int256, reverting on\\n * overflow (when the input is less than smallest int8 or\\n * greater than largest int8).\\n *\\n * Counterpart to Solidity's `int8` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 8 bits\\n *\\n * _Available since v3.1._\\n */\\n function toInt8(int256 value) internal pure returns (int8 downcasted) {\\n downcasted = int8(value);\\n require(downcasted == value, \\\"SafeCast: value doesn't fit in 8 bits\\\");\\n }\\n\\n /**\\n * @dev Converts an unsigned uint256 into a signed int256.\\n *\\n * Requirements:\\n *\\n * - input must be less than or equal to maxInt256.\\n *\\n * _Available since v3.0._\\n */\\n function toInt256(uint256 value) internal pure returns (int256) {\\n // Note: Unsafe cast below is okay because `type(int256).max` is guaranteed to be positive\\n require(value <= uint256(type(int256).max), \\\"SafeCast: value doesn't fit in an int256\\\");\\n return int256(value);\\n }\\n}\\n\",\"keccak256\":\"0xcef50f95b43b038aa40aed25b62fc45906c681a5c1d504a4fdcf3bc6330a8d4b\",\"license\":\"MIT\"},\"src/plugin/extensions/governance/Addresslist.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {CheckpointsUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/CheckpointsUpgradeable.sol\\\";\\n\\nimport {_uncheckedAdd, _uncheckedSub} from \\\"../../../utils/math/UncheckedMath.sol\\\";\\n\\n/// @title Addresslist\\n/// @author Aragon X - 2021-2023\\n/// @notice The majority voting implementation using a list of member addresses.\\n/// @dev This contract inherits from `MajorityVotingBase` and implements the `IMajorityVoting` interface.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract Addresslist {\\n using CheckpointsUpgradeable for CheckpointsUpgradeable.History;\\n\\n /// @notice The mapping containing the checkpointed history of the address list.\\n // solhint-disable-next-line named-parameters-mapping\\n mapping(address => CheckpointsUpgradeable.History) private _addresslistCheckpoints;\\n\\n /// @notice The checkpointed history of the length of the address list.\\n CheckpointsUpgradeable.History private _addresslistLengthCheckpoints;\\n\\n /// @notice Thrown when the address list update is invalid, which can be caused by the addition of an existing member or removal of a non-existing member.\\n /// @param member The array of member addresses to be added or removed.\\n error InvalidAddresslistUpdate(address member);\\n\\n /// @notice Checks if an account is on the address list at a specific block number.\\n /// @param _account The account address being checked.\\n /// @param _blockNumber The block number.\\n /// @return Whether the account is listed at the specified block number.\\n function isListedAtBlock(\\n address _account,\\n uint256 _blockNumber\\n ) public view virtual returns (bool) {\\n return _addresslistCheckpoints[_account].getAtBlock(_blockNumber) == 1;\\n }\\n\\n /// @notice Checks if an account is currently on the address list.\\n /// @param _account The account address being checked.\\n /// @return Whether the account is currently listed.\\n function isListed(address _account) public view virtual returns (bool) {\\n return _addresslistCheckpoints[_account].latest() == 1;\\n }\\n\\n /// @notice Returns the length of the address list at a specific block number.\\n /// @param _blockNumber The specific block to get the count from. If `0`, then the latest checkpoint value is returned.\\n /// @return The address list length at the specified block number.\\n function addresslistLengthAtBlock(uint256 _blockNumber) public view virtual returns (uint256) {\\n return _addresslistLengthCheckpoints.getAtBlock(_blockNumber);\\n }\\n\\n /// @notice Returns the current length of the address list.\\n /// @return The current address list length.\\n function addresslistLength() public view virtual returns (uint256) {\\n return _addresslistLengthCheckpoints.latest();\\n }\\n\\n /// @notice Internal function to add new addresses to the address list.\\n /// @param _newAddresses The new addresses to be added.\\n function _addAddresses(address[] calldata _newAddresses) internal virtual {\\n for (uint256 i; i < _newAddresses.length; ) {\\n if (isListed(_newAddresses[i])) {\\n revert InvalidAddresslistUpdate(_newAddresses[i]);\\n }\\n\\n // Mark the address as listed\\n _addresslistCheckpoints[_newAddresses[i]].push(1);\\n\\n unchecked {\\n ++i;\\n }\\n }\\n _addresslistLengthCheckpoints.push(_uncheckedAdd, _newAddresses.length);\\n }\\n\\n /// @notice Internal function to remove existing addresses from the address list.\\n /// @param _exitingAddresses The existing addresses to be removed.\\n function _removeAddresses(address[] calldata _exitingAddresses) internal virtual {\\n for (uint256 i; i < _exitingAddresses.length; ) {\\n if (!isListed(_exitingAddresses[i])) {\\n revert InvalidAddresslistUpdate(_exitingAddresses[i]);\\n }\\n\\n // Mark the address as not listed\\n _addresslistCheckpoints[_exitingAddresses[i]].push(0);\\n\\n unchecked {\\n ++i;\\n }\\n }\\n _addresslistLengthCheckpoints.push(_uncheckedSub, _exitingAddresses.length);\\n }\\n\\n /// @dev This empty reserved space is put in place to allow future versions to add new\\n /// variables without shifting down storage in the inheritance chain.\\n /// https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n uint256[48] private __gap;\\n}\\n\",\"keccak256\":\"0x61daf3913f46d0408a1f2af86d594cb5d05cb1d9253ccd14a6e4d9c980b14b69\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/math/UncheckedMath.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @notice Adds two unsigned integers without checking the result for overflow errors (using safe math).\\n/// @param a The first summand.\\n/// @param b The second summand.\\n/// @return The sum.\\n/// @custom:security-contact sirt@aragon.org\\nfunction _uncheckedAdd(uint256 a, uint256 b) pure returns (uint256) {\\n unchecked {\\n return a + b;\\n }\\n}\\n\\n/// @notice Subtracts two unsigned integers without checking the result for overflow errors (using safe math).\\n/// @param a The minuend.\\n/// @param b The subtrahend.\\n/// @return The difference.\\n/// @custom:security-contact sirt@aragon.org\\nfunction _uncheckedSub(uint256 a, uint256 b) pure returns (uint256) {\\n unchecked {\\n return a - b;\\n }\\n}\\n\",\"keccak256\":\"0x358210b59bad961994be2e9bea64eadae3567b3f17ebeaf347dd990f52ce3d6d\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[{"astId":13651,"contract":"src/plugin/extensions/governance/Addresslist.sol:Addresslist","label":"_addresslistCheckpoints","offset":0,"slot":"0","type":"t_mapping(t_address,t_struct(History)1011_storage)"},{"astId":13655,"contract":"src/plugin/extensions/governance/Addresslist.sol:Addresslist","label":"_addresslistLengthCheckpoints","offset":0,"slot":"1","type":"t_struct(History)1011_storage"},{"astId":13830,"contract":"src/plugin/extensions/governance/Addresslist.sol:Addresslist","label":"__gap","offset":0,"slot":"2","type":"t_array(t_uint256)48_storage"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_array(t_struct(Checkpoint)1016_storage)dyn_storage":{"base":"t_struct(Checkpoint)1016_storage","encoding":"dynamic_array","label":"struct CheckpointsUpgradeable.Checkpoint[]","numberOfBytes":"32"},"t_array(t_uint256)48_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[48]","numberOfBytes":"1536"},"t_mapping(t_address,t_struct(History)1011_storage)":{"encoding":"mapping","key":"t_address","label":"mapping(address => struct CheckpointsUpgradeable.History)","numberOfBytes":"32","value":"t_struct(History)1011_storage"},"t_struct(Checkpoint)1016_storage":{"encoding":"inplace","label":"struct CheckpointsUpgradeable.Checkpoint","members":[{"astId":1013,"contract":"src/plugin/extensions/governance/Addresslist.sol:Addresslist","label":"_blockNumber","offset":0,"slot":"0","type":"t_uint32"},{"astId":1015,"contract":"src/plugin/extensions/governance/Addresslist.sol:Addresslist","label":"_value","offset":4,"slot":"0","type":"t_uint224"}],"numberOfBytes":"32"},"t_struct(History)1011_storage":{"encoding":"inplace","label":"struct CheckpointsUpgradeable.History","members":[{"astId":1010,"contract":"src/plugin/extensions/governance/Addresslist.sol:Addresslist","label":"_checkpoints","offset":0,"slot":"0","type":"t_array(t_struct(Checkpoint)1016_storage)dyn_storage"}],"numberOfBytes":"32"},"t_uint224":{"encoding":"inplace","label":"uint224","numberOfBytes":"28"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint32":{"encoding":"inplace","label":"uint32","numberOfBytes":"4"}}},"userdoc":{"errors":{"InvalidAddresslistUpdate(address)":[{"notice":"Thrown when the address list update is invalid, which can be caused by the addition of an existing member or removal of a non-existing member."}]},"kind":"user","methods":{"addresslistLength()":{"notice":"Returns the current length of the address list."},"addresslistLengthAtBlock(uint256)":{"notice":"Returns the length of the address list at a specific block number."},"isListed(address)":{"notice":"Checks if an account is currently on the address list."},"isListedAtBlock(address,uint256)":{"notice":"Checks if an account is on the address list at a specific block number."}},"notice":"The majority voting implementation using a list of member addresses.","version":1}}},"src/plugin/extensions/membership/IMembership.sol":{"IMembership":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address[]","name":"members","type":"address[]"}],"name":"MembersAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address[]","name":"members","type":"address[]"}],"name":"MembersRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"definingContract","type":"address"}],"name":"MembershipContractAnnounced","type":"event"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"isMember","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"author":"Aragon X - 2022-2023","custom:security-contact":"sirt@aragon.org","events":{"MembersAdded(address[])":{"params":{"members":"The list of new members being added."}},"MembersRemoved(address[])":{"params":{"members":"The list of existing members being removed."}},"MembershipContractAnnounced(address)":{"params":{"definingContract":"The contract defining the membership."}}},"kind":"dev","methods":{"isMember(address)":{"details":"This function must be implemented in the plugin contract that introduces the members to the DAO.","params":{"_account":"The address of the account to be checked."},"returns":{"_0":"Whether the account is a member or not."}}},"title":"IMembership","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"isMember(address)":"a230c524"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"members\",\"type\":\"address[]\"}],\"name\":\"MembersAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"members\",\"type\":\"address[]\"}],\"name\":\"MembersRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"definingContract\",\"type\":\"address\"}],\"name\":\"MembershipContractAnnounced\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"isMember\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Aragon X - 2022-2023\",\"custom:security-contact\":\"sirt@aragon.org\",\"events\":{\"MembersAdded(address[])\":{\"params\":{\"members\":\"The list of new members being added.\"}},\"MembersRemoved(address[])\":{\"params\":{\"members\":\"The list of existing members being removed.\"}},\"MembershipContractAnnounced(address)\":{\"params\":{\"definingContract\":\"The contract defining the membership.\"}}},\"kind\":\"dev\",\"methods\":{\"isMember(address)\":{\"details\":\"This function must be implemented in the plugin contract that introduces the members to the DAO.\",\"params\":{\"_account\":\"The address of the account to be checked.\"},\"returns\":{\"_0\":\"Whether the account is a member or not.\"}}},\"title\":\"IMembership\",\"version\":1},\"userdoc\":{\"events\":{\"MembersAdded(address[])\":{\"notice\":\"Emitted when members are added to the DAO plugin.\"},\"MembersRemoved(address[])\":{\"notice\":\"Emitted when members are removed from the DAO plugin.\"},\"MembershipContractAnnounced(address)\":{\"notice\":\"Emitted to announce the membership being defined by a contract.\"}},\"kind\":\"user\",\"methods\":{\"isMember(address)\":{\"notice\":\"Checks if an account is a member of the DAO.\"}},\"notice\":\"An interface to be implemented by DAO plugins that define membership.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/plugin/extensions/membership/IMembership.sol\":\"IMembership\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"src/plugin/extensions/membership/IMembership.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IMembership\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface to be implemented by DAO plugins that define membership.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IMembership {\\n /// @notice Emitted when members are added to the DAO plugin.\\n /// @param members The list of new members being added.\\n event MembersAdded(address[] members);\\n\\n /// @notice Emitted when members are removed from the DAO plugin.\\n /// @param members The list of existing members being removed.\\n event MembersRemoved(address[] members);\\n\\n /// @notice Emitted to announce the membership being defined by a contract.\\n /// @param definingContract The contract defining the membership.\\n event MembershipContractAnnounced(address indexed definingContract);\\n\\n /// @notice Checks if an account is a member of the DAO.\\n /// @param _account The address of the account to be checked.\\n /// @return Whether the account is a member or not.\\n /// @dev This function must be implemented in the plugin contract that introduces the members to the DAO.\\n function isMember(address _account) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x95f428ded1919b7e54df8953d48e60063688383b6db205ad897e1812ee0db098\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"events":{"MembersAdded(address[])":{"notice":"Emitted when members are added to the DAO plugin."},"MembersRemoved(address[])":{"notice":"Emitted when members are removed from the DAO plugin."},"MembershipContractAnnounced(address)":{"notice":"Emitted to announce the membership being defined by a contract."}},"kind":"user","methods":{"isMember(address)":{"notice":"Checks if an account is a member of the DAO."}},"notice":"An interface to be implemented by DAO plugins that define membership.","version":1}}},"src/plugin/extensions/proposal/IProposal.sol":{"IProposal":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":true,"internalType":"address","name":"creator","type":"address"},{"indexed":false,"internalType":"uint64","name":"startDate","type":"uint64"},{"indexed":false,"internalType":"uint64","name":"endDate","type":"uint64"},{"indexed":false,"internalType":"bytes","name":"metadata","type":"bytes"},{"components":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"indexed":false,"internalType":"struct IDAO.Action[]","name":"actions","type":"tuple[]"},{"indexed":false,"internalType":"uint256","name":"allowFailureMap","type":"uint256"}],"name":"ProposalCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalExecuted","type":"event"},{"inputs":[],"name":"proposalCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"devdoc":{"author":"Aragon X - 2022-2023","custom:security-contact":"sirt@aragon.org","events":{"ProposalCreated(uint256,address,uint64,uint64,bytes,(address,uint256,bytes)[],uint256)":{"params":{"actions":"The actions that will be executed if the proposal passes.","allowFailureMap":"A bitmap allowing the proposal to succeed, even if individual actions might revert. If the bit at index `i` is 1, the proposal succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.","creator":"The creator of the proposal.","endDate":"The end date of the proposal in seconds.","metadata":"The metadata of the proposal.","proposalId":"The ID of the proposal.","startDate":"The start date of the proposal in seconds."}},"ProposalExecuted(uint256)":{"params":{"proposalId":"The ID of the proposal."}}},"kind":"dev","methods":{"proposalCount()":{"returns":{"_0":"The proposal count."}}},"title":"IProposal","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"proposalCount()":"da35c664"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"proposalId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"creator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"startDate\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"endDate\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"struct IDAO.Action[]\",\"name\":\"actions\",\"type\":\"tuple[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"allowFailureMap\",\"type\":\"uint256\"}],\"name\":\"ProposalCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"proposalId\",\"type\":\"uint256\"}],\"name\":\"ProposalExecuted\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"proposalCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Aragon X - 2022-2023\",\"custom:security-contact\":\"sirt@aragon.org\",\"events\":{\"ProposalCreated(uint256,address,uint64,uint64,bytes,(address,uint256,bytes)[],uint256)\":{\"params\":{\"actions\":\"The actions that will be executed if the proposal passes.\",\"allowFailureMap\":\"A bitmap allowing the proposal to succeed, even if individual actions might revert. If the bit at index `i` is 1, the proposal succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\",\"creator\":\"The creator of the proposal.\",\"endDate\":\"The end date of the proposal in seconds.\",\"metadata\":\"The metadata of the proposal.\",\"proposalId\":\"The ID of the proposal.\",\"startDate\":\"The start date of the proposal in seconds.\"}},\"ProposalExecuted(uint256)\":{\"params\":{\"proposalId\":\"The ID of the proposal.\"}}},\"kind\":\"dev\",\"methods\":{\"proposalCount()\":{\"returns\":{\"_0\":\"The proposal count.\"}}},\"title\":\"IProposal\",\"version\":1},\"userdoc\":{\"events\":{\"ProposalCreated(uint256,address,uint64,uint64,bytes,(address,uint256,bytes)[],uint256)\":{\"notice\":\"Emitted when a proposal is created.\"},\"ProposalExecuted(uint256)\":{\"notice\":\"Emitted when a proposal is executed.\"}},\"kind\":\"user\",\"methods\":{\"proposalCount()\":{\"notice\":\"Returns the proposal count determining the next proposal ID.\"}},\"notice\":\"An interface to be implemented by DAO plugins that create and execute proposals.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/plugin/extensions/proposal/IProposal.sol\":\"IProposal\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"src/dao/IDAO.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IDAO\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for DAOs within the Aragon App DAO framework.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IDAO {\\n /// @notice The action struct to be consumed by the DAO's `execute` function resulting in an external call.\\n /// @param to The address to call.\\n /// @param value The native token value to be sent with the call.\\n /// @param data The bytes-encoded function selector and calldata for the call.\\n struct Action {\\n address to;\\n uint256 value;\\n bytes data;\\n }\\n\\n /// @notice Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\\n /// @param _where The address of the contract.\\n /// @param _who The address of a EOA or contract to give the permissions.\\n /// @param _permissionId The permission identifier.\\n /// @param _data The optional data passed to the `PermissionCondition` registered.\\n /// @return Returns true if the address has permission, false if not.\\n function hasPermission(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes memory _data\\n ) external view returns (bool);\\n\\n /// @notice Updates the DAO metadata (e.g., an IPFS hash).\\n /// @param _metadata The IPFS hash of the new metadata object.\\n function setMetadata(bytes calldata _metadata) external;\\n\\n /// @notice Emitted when the DAO metadata is updated.\\n /// @param metadata The IPFS hash of the new metadata object.\\n event MetadataSet(bytes metadata);\\n\\n /// @notice Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted.\\n /// @param _callId The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce.\\n /// @param _actions The array of actions.\\n /// @param _allowFailureMap A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @return The array of results obtained from the executed actions in `bytes`.\\n /// @return The resulting failure map containing the actions have actually failed.\\n function execute(\\n bytes32 _callId,\\n Action[] memory _actions,\\n uint256 _allowFailureMap\\n ) external returns (bytes[] memory, uint256);\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param actor The address of the caller.\\n /// @param callId The ID of the call.\\n /// @param actions The array of actions executed.\\n /// @param allowFailureMap The allow failure map encoding which actions are allowed to fail.\\n /// @param failureMap The failure map encoding which actions have failed.\\n /// @param execResults The array with the results of the executed actions.\\n /// @dev The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce.\\n event Executed(\\n address indexed actor,\\n bytes32 callId,\\n Action[] actions,\\n uint256 allowFailureMap,\\n uint256 failureMap,\\n bytes[] execResults\\n );\\n\\n /// @notice Emitted when a standard callback is registered.\\n /// @param interfaceId The ID of the interface.\\n /// @param callbackSelector The selector of the callback function.\\n /// @param magicNumber The magic number to be registered for the callback function selector.\\n event StandardCallbackRegistered(\\n bytes4 interfaceId,\\n bytes4 callbackSelector,\\n bytes4 magicNumber\\n );\\n\\n /// @notice Deposits (native) tokens to the DAO contract with a reference string.\\n /// @param _token The address of the token or address(0) in case of the native token.\\n /// @param _amount The amount of tokens to deposit.\\n /// @param _reference The reference describing the deposit reason.\\n function deposit(address _token, uint256 _amount, string calldata _reference) external payable;\\n\\n /// @notice Emitted when a token deposit has been made to the DAO.\\n /// @param sender The address of the sender.\\n /// @param token The address of the deposited token.\\n /// @param amount The amount of tokens deposited.\\n /// @param _reference The reference describing the deposit reason.\\n event Deposited(\\n address indexed sender,\\n address indexed token,\\n uint256 amount,\\n string _reference\\n );\\n\\n /// @notice Emitted when a native token deposit has been made to the DAO.\\n /// @dev This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).\\n /// @param sender The address of the sender.\\n /// @param amount The amount of native tokens deposited.\\n event NativeTokenDeposited(address sender, uint256 amount);\\n\\n /// @notice Setter for the trusted forwarder verifying the meta transaction.\\n /// @param _trustedForwarder The trusted forwarder address.\\n function setTrustedForwarder(address _trustedForwarder) external;\\n\\n /// @notice Getter for the trusted forwarder verifying the meta transaction.\\n /// @return The trusted forwarder address.\\n function getTrustedForwarder() external view returns (address);\\n\\n /// @notice Emitted when a new TrustedForwarder is set on the DAO.\\n /// @param forwarder the new forwarder address.\\n event TrustedForwarderSet(address forwarder);\\n\\n /// @notice Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\\n /// @param _hash The hash of the data to be signed.\\n /// @param _signature The signature byte array associated with `_hash`.\\n /// @return Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not.\\n function isValidSignature(bytes32 _hash, bytes memory _signature) external returns (bytes4);\\n\\n /// @notice Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\\n /// @param _interfaceId The ID of the interface.\\n /// @param _callbackSelector The selector of the callback function.\\n /// @param _magicNumber The magic number to be registered for the function signature.\\n function registerStandardCallback(\\n bytes4 _interfaceId,\\n bytes4 _callbackSelector,\\n bytes4 _magicNumber\\n ) external;\\n\\n /// @notice Removed function being left here to not corrupt the IDAO interface ID. Any call will revert.\\n /// @dev Introduced in v1.0.0. Removed in v1.4.0.\\n function setSignatureValidator(address) external;\\n}\\n\",\"keccak256\":\"0xb7f615523c26de042edce98731c658f44a1edb2464387ac1b642c4c69f57128e\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/extensions/proposal/IProposal.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IDAO} from \\\"../../../dao/IDAO.sol\\\";\\n\\n/// @title IProposal\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface to be implemented by DAO plugins that create and execute proposals.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IProposal {\\n /// @notice Emitted when a proposal is created.\\n /// @param proposalId The ID of the proposal.\\n /// @param creator The creator of the proposal.\\n /// @param startDate The start date of the proposal in seconds.\\n /// @param endDate The end date of the proposal in seconds.\\n /// @param metadata The metadata of the proposal.\\n /// @param actions The actions that will be executed if the proposal passes.\\n /// @param allowFailureMap A bitmap allowing the proposal to succeed, even if individual actions might revert. If the bit at index `i` is 1, the proposal succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n event ProposalCreated(\\n uint256 indexed proposalId,\\n address indexed creator,\\n uint64 startDate,\\n uint64 endDate,\\n bytes metadata,\\n IDAO.Action[] actions,\\n uint256 allowFailureMap\\n );\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param proposalId The ID of the proposal.\\n event ProposalExecuted(uint256 indexed proposalId);\\n\\n /// @notice Returns the proposal count determining the next proposal ID.\\n /// @return The proposal count.\\n function proposalCount() external view returns (uint256);\\n}\\n\",\"keccak256\":\"0x06205453d6800f598d41848ba9ebf50919ffb773f3ba63247ddcfb2464358239\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"events":{"ProposalCreated(uint256,address,uint64,uint64,bytes,(address,uint256,bytes)[],uint256)":{"notice":"Emitted when a proposal is created."},"ProposalExecuted(uint256)":{"notice":"Emitted when a proposal is executed."}},"kind":"user","methods":{"proposalCount()":{"notice":"Returns the proposal count determining the next proposal ID."}},"notice":"An interface to be implemented by DAO plugins that create and execute proposals.","version":1}}},"src/plugin/extensions/proposal/Proposal.sol":{"Proposal":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":true,"internalType":"address","name":"creator","type":"address"},{"indexed":false,"internalType":"uint64","name":"startDate","type":"uint64"},{"indexed":false,"internalType":"uint64","name":"endDate","type":"uint64"},{"indexed":false,"internalType":"bytes","name":"metadata","type":"bytes"},{"components":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"indexed":false,"internalType":"struct IDAO.Action[]","name":"actions","type":"tuple[]"},{"indexed":false,"internalType":"uint256","name":"allowFailureMap","type":"uint256"}],"name":"ProposalCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalExecuted","type":"event"},{"inputs":[],"name":"proposalCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"author":"Aragon X - 2022-2023","custom:security-contact":"sirt@aragon.org","kind":"dev","methods":{"proposalCount()":{"returns":{"_0":"The proposal count."}},"supportsInterface(bytes4)":{"params":{"_interfaceId":"The ID of the interface."},"returns":{"_0":"Returns `true` if the interface is supported."}}},"title":"Proposal","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"proposalCount()":"da35c664","supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"proposalId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"creator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"startDate\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"endDate\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"struct IDAO.Action[]\",\"name\":\"actions\",\"type\":\"tuple[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"allowFailureMap\",\"type\":\"uint256\"}],\"name\":\"ProposalCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"proposalId\",\"type\":\"uint256\"}],\"name\":\"ProposalExecuted\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"proposalCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Aragon X - 2022-2023\",\"custom:security-contact\":\"sirt@aragon.org\",\"kind\":\"dev\",\"methods\":{\"proposalCount()\":{\"returns\":{\"_0\":\"The proposal count.\"}},\"supportsInterface(bytes4)\":{\"params\":{\"_interfaceId\":\"The ID of the interface.\"},\"returns\":{\"_0\":\"Returns `true` if the interface is supported.\"}}},\"title\":\"Proposal\",\"version\":1},\"userdoc\":{\"events\":{\"ProposalCreated(uint256,address,uint64,uint64,bytes,(address,uint256,bytes)[],uint256)\":{\"notice\":\"Emitted when a proposal is created.\"},\"ProposalExecuted(uint256)\":{\"notice\":\"Emitted when a proposal is executed.\"}},\"kind\":\"user\",\"methods\":{\"proposalCount()\":{\"notice\":\"Returns the proposal count determining the next proposal ID.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Checks if this or the parent contract supports an interface by its ID.\"}},\"notice\":\"An abstract contract containing the traits and internal functionality to create and execute proposals that can be inherited by non-upgradeable DAO plugins.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/plugin/extensions/proposal/Proposal.sol\":\"Proposal\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Counters.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Counters.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title Counters\\n * @author Matt Condon (@shrugs)\\n * @dev Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number\\n * of elements in a mapping, issuing ERC721 ids, or counting request ids.\\n *\\n * Include with `using Counters for Counters.Counter;`\\n */\\nlibrary Counters {\\n struct Counter {\\n // This variable should never be directly accessed by users of the library: interactions must be restricted to\\n // the library's function. As of Solidity v0.5.2, this cannot be enforced, though there is a proposal to add\\n // this feature: see https://github.com/ethereum/solidity/issues/4637\\n uint256 _value; // default: 0\\n }\\n\\n function current(Counter storage counter) internal view returns (uint256) {\\n return counter._value;\\n }\\n\\n function increment(Counter storage counter) internal {\\n unchecked {\\n counter._value += 1;\\n }\\n }\\n\\n function decrement(Counter storage counter) internal {\\n uint256 value = counter._value;\\n require(value > 0, \\\"Counter: decrement overflow\\\");\\n unchecked {\\n counter._value = value - 1;\\n }\\n }\\n\\n function reset(Counter storage counter) internal {\\n counter._value = 0;\\n }\\n}\\n\",\"keccak256\":\"0xf0018c2440fbe238dd3a8732fa8e17a0f9dce84d31451dc8a32f6d62b349c9f1\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165 is IERC165 {\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165).interfaceId;\\n }\\n}\\n\",\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"src/dao/IDAO.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IDAO\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for DAOs within the Aragon App DAO framework.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IDAO {\\n /// @notice The action struct to be consumed by the DAO's `execute` function resulting in an external call.\\n /// @param to The address to call.\\n /// @param value The native token value to be sent with the call.\\n /// @param data The bytes-encoded function selector and calldata for the call.\\n struct Action {\\n address to;\\n uint256 value;\\n bytes data;\\n }\\n\\n /// @notice Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\\n /// @param _where The address of the contract.\\n /// @param _who The address of a EOA or contract to give the permissions.\\n /// @param _permissionId The permission identifier.\\n /// @param _data The optional data passed to the `PermissionCondition` registered.\\n /// @return Returns true if the address has permission, false if not.\\n function hasPermission(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes memory _data\\n ) external view returns (bool);\\n\\n /// @notice Updates the DAO metadata (e.g., an IPFS hash).\\n /// @param _metadata The IPFS hash of the new metadata object.\\n function setMetadata(bytes calldata _metadata) external;\\n\\n /// @notice Emitted when the DAO metadata is updated.\\n /// @param metadata The IPFS hash of the new metadata object.\\n event MetadataSet(bytes metadata);\\n\\n /// @notice Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted.\\n /// @param _callId The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce.\\n /// @param _actions The array of actions.\\n /// @param _allowFailureMap A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @return The array of results obtained from the executed actions in `bytes`.\\n /// @return The resulting failure map containing the actions have actually failed.\\n function execute(\\n bytes32 _callId,\\n Action[] memory _actions,\\n uint256 _allowFailureMap\\n ) external returns (bytes[] memory, uint256);\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param actor The address of the caller.\\n /// @param callId The ID of the call.\\n /// @param actions The array of actions executed.\\n /// @param allowFailureMap The allow failure map encoding which actions are allowed to fail.\\n /// @param failureMap The failure map encoding which actions have failed.\\n /// @param execResults The array with the results of the executed actions.\\n /// @dev The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce.\\n event Executed(\\n address indexed actor,\\n bytes32 callId,\\n Action[] actions,\\n uint256 allowFailureMap,\\n uint256 failureMap,\\n bytes[] execResults\\n );\\n\\n /// @notice Emitted when a standard callback is registered.\\n /// @param interfaceId The ID of the interface.\\n /// @param callbackSelector The selector of the callback function.\\n /// @param magicNumber The magic number to be registered for the callback function selector.\\n event StandardCallbackRegistered(\\n bytes4 interfaceId,\\n bytes4 callbackSelector,\\n bytes4 magicNumber\\n );\\n\\n /// @notice Deposits (native) tokens to the DAO contract with a reference string.\\n /// @param _token The address of the token or address(0) in case of the native token.\\n /// @param _amount The amount of tokens to deposit.\\n /// @param _reference The reference describing the deposit reason.\\n function deposit(address _token, uint256 _amount, string calldata _reference) external payable;\\n\\n /// @notice Emitted when a token deposit has been made to the DAO.\\n /// @param sender The address of the sender.\\n /// @param token The address of the deposited token.\\n /// @param amount The amount of tokens deposited.\\n /// @param _reference The reference describing the deposit reason.\\n event Deposited(\\n address indexed sender,\\n address indexed token,\\n uint256 amount,\\n string _reference\\n );\\n\\n /// @notice Emitted when a native token deposit has been made to the DAO.\\n /// @dev This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).\\n /// @param sender The address of the sender.\\n /// @param amount The amount of native tokens deposited.\\n event NativeTokenDeposited(address sender, uint256 amount);\\n\\n /// @notice Setter for the trusted forwarder verifying the meta transaction.\\n /// @param _trustedForwarder The trusted forwarder address.\\n function setTrustedForwarder(address _trustedForwarder) external;\\n\\n /// @notice Getter for the trusted forwarder verifying the meta transaction.\\n /// @return The trusted forwarder address.\\n function getTrustedForwarder() external view returns (address);\\n\\n /// @notice Emitted when a new TrustedForwarder is set on the DAO.\\n /// @param forwarder the new forwarder address.\\n event TrustedForwarderSet(address forwarder);\\n\\n /// @notice Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\\n /// @param _hash The hash of the data to be signed.\\n /// @param _signature The signature byte array associated with `_hash`.\\n /// @return Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not.\\n function isValidSignature(bytes32 _hash, bytes memory _signature) external returns (bytes4);\\n\\n /// @notice Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\\n /// @param _interfaceId The ID of the interface.\\n /// @param _callbackSelector The selector of the callback function.\\n /// @param _magicNumber The magic number to be registered for the function signature.\\n function registerStandardCallback(\\n bytes4 _interfaceId,\\n bytes4 _callbackSelector,\\n bytes4 _magicNumber\\n ) external;\\n\\n /// @notice Removed function being left here to not corrupt the IDAO interface ID. Any call will revert.\\n /// @dev Introduced in v1.0.0. Removed in v1.4.0.\\n function setSignatureValidator(address) external;\\n}\\n\",\"keccak256\":\"0xb7f615523c26de042edce98731c658f44a1edb2464387ac1b642c4c69f57128e\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/extensions/proposal/IProposal.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IDAO} from \\\"../../../dao/IDAO.sol\\\";\\n\\n/// @title IProposal\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface to be implemented by DAO plugins that create and execute proposals.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IProposal {\\n /// @notice Emitted when a proposal is created.\\n /// @param proposalId The ID of the proposal.\\n /// @param creator The creator of the proposal.\\n /// @param startDate The start date of the proposal in seconds.\\n /// @param endDate The end date of the proposal in seconds.\\n /// @param metadata The metadata of the proposal.\\n /// @param actions The actions that will be executed if the proposal passes.\\n /// @param allowFailureMap A bitmap allowing the proposal to succeed, even if individual actions might revert. If the bit at index `i` is 1, the proposal succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n event ProposalCreated(\\n uint256 indexed proposalId,\\n address indexed creator,\\n uint64 startDate,\\n uint64 endDate,\\n bytes metadata,\\n IDAO.Action[] actions,\\n uint256 allowFailureMap\\n );\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param proposalId The ID of the proposal.\\n event ProposalExecuted(uint256 indexed proposalId);\\n\\n /// @notice Returns the proposal count determining the next proposal ID.\\n /// @return The proposal count.\\n function proposalCount() external view returns (uint256);\\n}\\n\",\"keccak256\":\"0x06205453d6800f598d41848ba9ebf50919ffb773f3ba63247ddcfb2464358239\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/extensions/proposal/Proposal.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {Counters} from \\\"@openzeppelin/contracts/utils/Counters.sol\\\";\\nimport {ERC165} from \\\"@openzeppelin/contracts/utils/introspection/ERC165.sol\\\";\\n\\nimport {IDAO} from \\\"../../../dao/IDAO.sol\\\";\\nimport {IProposal} from \\\"./IProposal.sol\\\";\\n\\n/// @title Proposal\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract contract containing the traits and internal functionality to create and execute proposals that can be inherited by non-upgradeable DAO plugins.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract Proposal is IProposal, ERC165 {\\n using Counters for Counters.Counter;\\n\\n /// @notice The incremental ID for proposals and executions.\\n Counters.Counter private proposalCounter;\\n\\n /// @inheritdoc IProposal\\n function proposalCount() public view override returns (uint256) {\\n return proposalCounter.current();\\n }\\n\\n /// @notice Checks if this or the parent contract supports an interface by its ID.\\n /// @param _interfaceId The ID of the interface.\\n /// @return Returns `true` if the interface is supported.\\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\\n return _interfaceId == type(IProposal).interfaceId || super.supportsInterface(_interfaceId);\\n }\\n\\n /// @notice Creates a proposal ID.\\n /// @return proposalId The proposal ID.\\n function _createProposalId() internal returns (uint256 proposalId) {\\n proposalId = proposalCount();\\n proposalCounter.increment();\\n }\\n\\n /// @notice Internal function to create a proposal.\\n /// @param _metadata The proposal metadata.\\n /// @param _startDate The start date of the proposal in seconds.\\n /// @param _endDate The end date of the proposal in seconds.\\n /// @param _allowFailureMap A bitmap allowing the proposal to succeed, even if individual actions might revert. If the bit at index `i` is 1, the proposal succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @param _actions The actions that will be executed after the proposal passes.\\n /// @return proposalId The ID of the proposal.\\n function _createProposal(\\n address _creator,\\n bytes calldata _metadata,\\n uint64 _startDate,\\n uint64 _endDate,\\n IDAO.Action[] calldata _actions,\\n uint256 _allowFailureMap\\n ) internal virtual returns (uint256 proposalId) {\\n proposalId = _createProposalId();\\n\\n emit ProposalCreated({\\n proposalId: proposalId,\\n creator: _creator,\\n metadata: _metadata,\\n startDate: _startDate,\\n endDate: _endDate,\\n actions: _actions,\\n allowFailureMap: _allowFailureMap\\n });\\n }\\n\\n /// @notice Internal function to execute a proposal.\\n /// @param _proposalId The ID of the proposal to be executed.\\n /// @param _actions The array of actions to be executed.\\n /// @param _allowFailureMap A bitmap allowing the proposal to succeed, even if individual actions might revert. If the bit at index `i` is 1, the proposal succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @return execResults The array with the results of the executed actions.\\n /// @return failureMap The failure map encoding which actions have failed.\\n function _executeProposal(\\n IDAO _dao,\\n uint256 _proposalId,\\n IDAO.Action[] memory _actions,\\n uint256 _allowFailureMap\\n ) internal virtual returns (bytes[] memory execResults, uint256 failureMap) {\\n (execResults, failureMap) = _dao.execute(bytes32(_proposalId), _actions, _allowFailureMap);\\n emit ProposalExecuted({proposalId: _proposalId});\\n }\\n}\\n\",\"keccak256\":\"0xdd97adbd91ca0bdf56017e6a219f1d714ab686aeab22dc701ee82d913591458e\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[{"astId":13919,"contract":"src/plugin/extensions/proposal/Proposal.sol:Proposal","label":"proposalCounter","offset":0,"slot":"0","type":"t_struct(Counter)9300_storage"}],"types":{"t_struct(Counter)9300_storage":{"encoding":"inplace","label":"struct Counters.Counter","members":[{"astId":9299,"contract":"src/plugin/extensions/proposal/Proposal.sol:Proposal","label":"_value","offset":0,"slot":"0","type":"t_uint256"}],"numberOfBytes":"32"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"userdoc":{"events":{"ProposalCreated(uint256,address,uint64,uint64,bytes,(address,uint256,bytes)[],uint256)":{"notice":"Emitted when a proposal is created."},"ProposalExecuted(uint256)":{"notice":"Emitted when a proposal is executed."}},"kind":"user","methods":{"proposalCount()":{"notice":"Returns the proposal count determining the next proposal ID."},"supportsInterface(bytes4)":{"notice":"Checks if this or the parent contract supports an interface by its ID."}},"notice":"An abstract contract containing the traits and internal functionality to create and execute proposals that can be inherited by non-upgradeable DAO plugins.","version":1}}},"src/plugin/extensions/proposal/ProposalUpgradeable.sol":{"ProposalUpgradeable":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":true,"internalType":"address","name":"creator","type":"address"},{"indexed":false,"internalType":"uint64","name":"startDate","type":"uint64"},{"indexed":false,"internalType":"uint64","name":"endDate","type":"uint64"},{"indexed":false,"internalType":"bytes","name":"metadata","type":"bytes"},{"components":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"indexed":false,"internalType":"struct IDAO.Action[]","name":"actions","type":"tuple[]"},{"indexed":false,"internalType":"uint256","name":"allowFailureMap","type":"uint256"}],"name":"ProposalCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalExecuted","type":"event"},{"inputs":[],"name":"proposalCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"author":"Aragon X - 2022-2023","custom:security-contact":"sirt@aragon.org","kind":"dev","methods":{"proposalCount()":{"returns":{"_0":"The proposal count."}},"supportsInterface(bytes4)":{"params":{"_interfaceId":"The ID of the interface."},"returns":{"_0":"Returns `true` if the interface is supported."}}},"title":"ProposalUpgradeable","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"proposalCount()":"da35c664","supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"proposalId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"creator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"startDate\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"endDate\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"struct IDAO.Action[]\",\"name\":\"actions\",\"type\":\"tuple[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"allowFailureMap\",\"type\":\"uint256\"}],\"name\":\"ProposalCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"proposalId\",\"type\":\"uint256\"}],\"name\":\"ProposalExecuted\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"proposalCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Aragon X - 2022-2023\",\"custom:security-contact\":\"sirt@aragon.org\",\"kind\":\"dev\",\"methods\":{\"proposalCount()\":{\"returns\":{\"_0\":\"The proposal count.\"}},\"supportsInterface(bytes4)\":{\"params\":{\"_interfaceId\":\"The ID of the interface.\"},\"returns\":{\"_0\":\"Returns `true` if the interface is supported.\"}}},\"title\":\"ProposalUpgradeable\",\"version\":1},\"userdoc\":{\"events\":{\"ProposalCreated(uint256,address,uint64,uint64,bytes,(address,uint256,bytes)[],uint256)\":{\"notice\":\"Emitted when a proposal is created.\"},\"ProposalExecuted(uint256)\":{\"notice\":\"Emitted when a proposal is executed.\"}},\"kind\":\"user\",\"methods\":{\"proposalCount()\":{\"notice\":\"Returns the proposal count determining the next proposal ID.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Checks if this or the parent contract supports an interface by its ID.\"}},\"notice\":\"An abstract contract containing the traits and internal functionality to create and execute proposals that can be inherited by upgradeable DAO plugins.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/plugin/extensions/proposal/ProposalUpgradeable.sol\":\"ProposalUpgradeable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Counters.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title Counters\\n * @author Matt Condon (@shrugs)\\n * @dev Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number\\n * of elements in a mapping, issuing ERC721 ids, or counting request ids.\\n *\\n * Include with `using Counters for Counters.Counter;`\\n */\\nlibrary CountersUpgradeable {\\n struct Counter {\\n // This variable should never be directly accessed by users of the library: interactions must be restricted to\\n // the library's function. As of Solidity v0.5.2, this cannot be enforced, though there is a proposal to add\\n // this feature: see https://github.com/ethereum/solidity/issues/4637\\n uint256 _value; // default: 0\\n }\\n\\n function current(Counter storage counter) internal view returns (uint256) {\\n return counter._value;\\n }\\n\\n function increment(Counter storage counter) internal {\\n unchecked {\\n counter._value += 1;\\n }\\n }\\n\\n function decrement(Counter storage counter) internal {\\n uint256 value = counter._value;\\n require(value > 0, \\\"Counter: decrement overflow\\\");\\n unchecked {\\n counter._value = value - 1;\\n }\\n }\\n\\n function reset(Counter storage counter) internal {\\n counter._value = 0;\\n }\\n}\\n\",\"keccak256\":\"0x798741e231b22b81e2dd2eddaaf8832dee4baf5cd8e2dbaa5c1dd12a1c053c4d\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165Upgradeable.sol\\\";\\nimport {Initializable} from \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165Upgradeable is Initializable, IERC165Upgradeable {\\n function __ERC165_init() internal onlyInitializing {\\n }\\n\\n function __ERC165_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165Upgradeable).interfaceId;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0xd90d7723512df65ae417adaf0801042940f0dabd60039ceeaffe34aa5b238da1\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165Upgradeable {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\"},\"src/dao/IDAO.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IDAO\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for DAOs within the Aragon App DAO framework.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IDAO {\\n /// @notice The action struct to be consumed by the DAO's `execute` function resulting in an external call.\\n /// @param to The address to call.\\n /// @param value The native token value to be sent with the call.\\n /// @param data The bytes-encoded function selector and calldata for the call.\\n struct Action {\\n address to;\\n uint256 value;\\n bytes data;\\n }\\n\\n /// @notice Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\\n /// @param _where The address of the contract.\\n /// @param _who The address of a EOA or contract to give the permissions.\\n /// @param _permissionId The permission identifier.\\n /// @param _data The optional data passed to the `PermissionCondition` registered.\\n /// @return Returns true if the address has permission, false if not.\\n function hasPermission(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes memory _data\\n ) external view returns (bool);\\n\\n /// @notice Updates the DAO metadata (e.g., an IPFS hash).\\n /// @param _metadata The IPFS hash of the new metadata object.\\n function setMetadata(bytes calldata _metadata) external;\\n\\n /// @notice Emitted when the DAO metadata is updated.\\n /// @param metadata The IPFS hash of the new metadata object.\\n event MetadataSet(bytes metadata);\\n\\n /// @notice Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted.\\n /// @param _callId The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce.\\n /// @param _actions The array of actions.\\n /// @param _allowFailureMap A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @return The array of results obtained from the executed actions in `bytes`.\\n /// @return The resulting failure map containing the actions have actually failed.\\n function execute(\\n bytes32 _callId,\\n Action[] memory _actions,\\n uint256 _allowFailureMap\\n ) external returns (bytes[] memory, uint256);\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param actor The address of the caller.\\n /// @param callId The ID of the call.\\n /// @param actions The array of actions executed.\\n /// @param allowFailureMap The allow failure map encoding which actions are allowed to fail.\\n /// @param failureMap The failure map encoding which actions have failed.\\n /// @param execResults The array with the results of the executed actions.\\n /// @dev The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce.\\n event Executed(\\n address indexed actor,\\n bytes32 callId,\\n Action[] actions,\\n uint256 allowFailureMap,\\n uint256 failureMap,\\n bytes[] execResults\\n );\\n\\n /// @notice Emitted when a standard callback is registered.\\n /// @param interfaceId The ID of the interface.\\n /// @param callbackSelector The selector of the callback function.\\n /// @param magicNumber The magic number to be registered for the callback function selector.\\n event StandardCallbackRegistered(\\n bytes4 interfaceId,\\n bytes4 callbackSelector,\\n bytes4 magicNumber\\n );\\n\\n /// @notice Deposits (native) tokens to the DAO contract with a reference string.\\n /// @param _token The address of the token or address(0) in case of the native token.\\n /// @param _amount The amount of tokens to deposit.\\n /// @param _reference The reference describing the deposit reason.\\n function deposit(address _token, uint256 _amount, string calldata _reference) external payable;\\n\\n /// @notice Emitted when a token deposit has been made to the DAO.\\n /// @param sender The address of the sender.\\n /// @param token The address of the deposited token.\\n /// @param amount The amount of tokens deposited.\\n /// @param _reference The reference describing the deposit reason.\\n event Deposited(\\n address indexed sender,\\n address indexed token,\\n uint256 amount,\\n string _reference\\n );\\n\\n /// @notice Emitted when a native token deposit has been made to the DAO.\\n /// @dev This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).\\n /// @param sender The address of the sender.\\n /// @param amount The amount of native tokens deposited.\\n event NativeTokenDeposited(address sender, uint256 amount);\\n\\n /// @notice Setter for the trusted forwarder verifying the meta transaction.\\n /// @param _trustedForwarder The trusted forwarder address.\\n function setTrustedForwarder(address _trustedForwarder) external;\\n\\n /// @notice Getter for the trusted forwarder verifying the meta transaction.\\n /// @return The trusted forwarder address.\\n function getTrustedForwarder() external view returns (address);\\n\\n /// @notice Emitted when a new TrustedForwarder is set on the DAO.\\n /// @param forwarder the new forwarder address.\\n event TrustedForwarderSet(address forwarder);\\n\\n /// @notice Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\\n /// @param _hash The hash of the data to be signed.\\n /// @param _signature The signature byte array associated with `_hash`.\\n /// @return Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not.\\n function isValidSignature(bytes32 _hash, bytes memory _signature) external returns (bytes4);\\n\\n /// @notice Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\\n /// @param _interfaceId The ID of the interface.\\n /// @param _callbackSelector The selector of the callback function.\\n /// @param _magicNumber The magic number to be registered for the function signature.\\n function registerStandardCallback(\\n bytes4 _interfaceId,\\n bytes4 _callbackSelector,\\n bytes4 _magicNumber\\n ) external;\\n\\n /// @notice Removed function being left here to not corrupt the IDAO interface ID. Any call will revert.\\n /// @dev Introduced in v1.0.0. Removed in v1.4.0.\\n function setSignatureValidator(address) external;\\n}\\n\",\"keccak256\":\"0xb7f615523c26de042edce98731c658f44a1edb2464387ac1b642c4c69f57128e\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/extensions/proposal/IProposal.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IDAO} from \\\"../../../dao/IDAO.sol\\\";\\n\\n/// @title IProposal\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface to be implemented by DAO plugins that create and execute proposals.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IProposal {\\n /// @notice Emitted when a proposal is created.\\n /// @param proposalId The ID of the proposal.\\n /// @param creator The creator of the proposal.\\n /// @param startDate The start date of the proposal in seconds.\\n /// @param endDate The end date of the proposal in seconds.\\n /// @param metadata The metadata of the proposal.\\n /// @param actions The actions that will be executed if the proposal passes.\\n /// @param allowFailureMap A bitmap allowing the proposal to succeed, even if individual actions might revert. If the bit at index `i` is 1, the proposal succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n event ProposalCreated(\\n uint256 indexed proposalId,\\n address indexed creator,\\n uint64 startDate,\\n uint64 endDate,\\n bytes metadata,\\n IDAO.Action[] actions,\\n uint256 allowFailureMap\\n );\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param proposalId The ID of the proposal.\\n event ProposalExecuted(uint256 indexed proposalId);\\n\\n /// @notice Returns the proposal count determining the next proposal ID.\\n /// @return The proposal count.\\n function proposalCount() external view returns (uint256);\\n}\\n\",\"keccak256\":\"0x06205453d6800f598d41848ba9ebf50919ffb773f3ba63247ddcfb2464358239\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/extensions/proposal/ProposalUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {CountersUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol\\\";\\nimport {ERC165Upgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\\\";\\n\\nimport {IDAO} from \\\"../../../dao/IDAO.sol\\\";\\nimport {IProposal} from \\\"./IProposal.sol\\\";\\n\\n/// @title ProposalUpgradeable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract contract containing the traits and internal functionality to create and execute proposals that can be inherited by upgradeable DAO plugins.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract ProposalUpgradeable is IProposal, ERC165Upgradeable {\\n using CountersUpgradeable for CountersUpgradeable.Counter;\\n\\n /// @notice The incremental ID for proposals and executions.\\n CountersUpgradeable.Counter private proposalCounter;\\n\\n /// @inheritdoc IProposal\\n function proposalCount() public view override returns (uint256) {\\n return proposalCounter.current();\\n }\\n\\n /// @notice Checks if this or the parent contract supports an interface by its ID.\\n /// @param _interfaceId The ID of the interface.\\n /// @return Returns `true` if the interface is supported.\\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\\n return _interfaceId == type(IProposal).interfaceId || super.supportsInterface(_interfaceId);\\n }\\n\\n /// @notice Creates a proposal ID.\\n /// @return proposalId The proposal ID.\\n function _createProposalId() internal returns (uint256 proposalId) {\\n proposalId = proposalCount();\\n proposalCounter.increment();\\n }\\n\\n /// @notice Internal function to create a proposal.\\n /// @param _metadata The proposal metadata.\\n /// @param _startDate The start date of the proposal in seconds.\\n /// @param _endDate The end date of the proposal in seconds.\\n /// @param _allowFailureMap A bitmap allowing the proposal to succeed, even if individual actions might revert. If the bit at index `i` is 1, the proposal succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @param _actions The actions that will be executed after the proposal passes.\\n /// @return proposalId The ID of the proposal.\\n function _createProposal(\\n address _creator,\\n bytes calldata _metadata,\\n uint64 _startDate,\\n uint64 _endDate,\\n IDAO.Action[] calldata _actions,\\n uint256 _allowFailureMap\\n ) internal virtual returns (uint256 proposalId) {\\n proposalId = _createProposalId();\\n\\n emit ProposalCreated({\\n proposalId: proposalId,\\n creator: _creator,\\n metadata: _metadata,\\n startDate: _startDate,\\n endDate: _endDate,\\n actions: _actions,\\n allowFailureMap: _allowFailureMap\\n });\\n }\\n\\n /// @notice Internal function to execute a proposal.\\n /// @param _proposalId The ID of the proposal to be executed.\\n /// @param _actions The array of actions to be executed.\\n /// @param _allowFailureMap A bitmap allowing the proposal to succeed, even if individual actions might revert. If the bit at index `i` is 1, the proposal succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @return execResults The array with the results of the executed actions.\\n /// @return failureMap The failure map encoding which actions have failed.\\n function _executeProposal(\\n IDAO _dao,\\n uint256 _proposalId,\\n IDAO.Action[] memory _actions,\\n uint256 _allowFailureMap\\n ) internal virtual returns (bytes[] memory execResults, uint256 failureMap) {\\n (execResults, failureMap) = _dao.execute(bytes32(_proposalId), _actions, _allowFailureMap);\\n emit ProposalExecuted({proposalId: _proposalId});\\n }\\n\\n /// @notice This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain (see [OpenZeppelin's guide about storage gaps](https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps)).\\n uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0x6ec477b535a4c08fb0464db637f67bed89c89086150c1d3c107f9a69afc65a73\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[{"astId":372,"contract":"src/plugin/extensions/proposal/ProposalUpgradeable.sol:ProposalUpgradeable","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":375,"contract":"src/plugin/extensions/proposal/ProposalUpgradeable.sol:ProposalUpgradeable","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":2821,"contract":"src/plugin/extensions/proposal/ProposalUpgradeable.sol:ProposalUpgradeable","label":"__gap","offset":0,"slot":"1","type":"t_array(t_uint256)50_storage"},{"astId":14069,"contract":"src/plugin/extensions/proposal/ProposalUpgradeable.sol:ProposalUpgradeable","label":"proposalCounter","offset":0,"slot":"51","type":"t_struct(Counter)2599_storage"},{"astId":14200,"contract":"src/plugin/extensions/proposal/ProposalUpgradeable.sol:ProposalUpgradeable","label":"__gap","offset":0,"slot":"52","type":"t_array(t_uint256)49_storage"}],"types":{"t_array(t_uint256)49_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[49]","numberOfBytes":"1568"},"t_array(t_uint256)50_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[50]","numberOfBytes":"1600"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_struct(Counter)2599_storage":{"encoding":"inplace","label":"struct CountersUpgradeable.Counter","members":[{"astId":2598,"contract":"src/plugin/extensions/proposal/ProposalUpgradeable.sol:ProposalUpgradeable","label":"_value","offset":0,"slot":"0","type":"t_uint256"}],"numberOfBytes":"32"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"events":{"ProposalCreated(uint256,address,uint64,uint64,bytes,(address,uint256,bytes)[],uint256)":{"notice":"Emitted when a proposal is created."},"ProposalExecuted(uint256)":{"notice":"Emitted when a proposal is executed."}},"kind":"user","methods":{"proposalCount()":{"notice":"Returns the proposal count determining the next proposal ID."},"supportsInterface(bytes4)":{"notice":"Checks if this or the parent contract supports an interface by its ID."}},"notice":"An abstract contract containing the traits and internal functionality to create and execute proposals that can be inherited by upgradeable DAO plugins.","version":1}}},"src/plugin/setup/IPluginSetup.sol":{"IPluginSetup":{"abi":[{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_dao","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"prepareInstallation","outputs":[{"internalType":"address","name":"plugin","type":"address"},{"components":[{"internalType":"address[]","name":"helpers","type":"address[]"},{"components":[{"internalType":"enum PermissionLib.Operation","name":"operation","type":"uint8"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"condition","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"internalType":"struct PermissionLib.MultiTargetPermission[]","name":"permissions","type":"tuple[]"}],"internalType":"struct IPluginSetup.PreparedSetupData","name":"preparedSetupData","type":"tuple"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_dao","type":"address"},{"components":[{"internalType":"address","name":"plugin","type":"address"},{"internalType":"address[]","name":"currentHelpers","type":"address[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct IPluginSetup.SetupPayload","name":"_payload","type":"tuple"}],"name":"prepareUninstallation","outputs":[{"components":[{"internalType":"enum PermissionLib.Operation","name":"operation","type":"uint8"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"condition","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"internalType":"struct PermissionLib.MultiTargetPermission[]","name":"permissions","type":"tuple[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_dao","type":"address"},{"internalType":"uint16","name":"_fromBuild","type":"uint16"},{"components":[{"internalType":"address","name":"plugin","type":"address"},{"internalType":"address[]","name":"currentHelpers","type":"address[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct IPluginSetup.SetupPayload","name":"_payload","type":"tuple"}],"name":"prepareUpdate","outputs":[{"internalType":"bytes","name":"initData","type":"bytes"},{"components":[{"internalType":"address[]","name":"helpers","type":"address[]"},{"components":[{"internalType":"enum PermissionLib.Operation","name":"operation","type":"uint8"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"condition","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"internalType":"struct PermissionLib.MultiTargetPermission[]","name":"permissions","type":"tuple[]"}],"internalType":"struct IPluginSetup.PreparedSetupData","name":"preparedSetupData","type":"tuple"}],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"author":"Aragon X - 2022-2023","custom:security-contact":"sirt@aragon.org","kind":"dev","methods":{"implementation()":{"details":"The implementation can be instantiated via the `new` keyword, cloned via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)), or proxied via the UUPS proxy pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).","returns":{"_0":"The address of the plugin implementation contract."}},"prepareInstallation(address,bytes)":{"params":{"_dao":"The address of the installing DAO.","_data":"The bytes-encoded data containing the input parameters for the installation as specified in the plugin's build metadata JSON file."},"returns":{"plugin":"The address of the `Plugin` contract being prepared for installation.","preparedSetupData":"The deployed plugin's relevant data which consists of helpers and permissions."}},"prepareUninstallation(address,(address,address[],bytes))":{"params":{"_dao":"The address of the uninstalling DAO.","_payload":"The relevant data necessary for the `prepareUninstallation`. See above."},"returns":{"permissions":"The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the uninstalling DAO."}},"prepareUpdate(address,uint16,(address,address[],bytes))":{"params":{"_dao":"The address of the updating DAO.","_fromBuild":"The build number of the plugin to update from.","_payload":"The relevant data necessary for the `prepareUpdate`. See above."},"returns":{"initData":"The initialization data to be passed to upgradeable contracts when the update is applied in the `PluginSetupProcessor`.","preparedSetupData":"The deployed plugin's relevant data which consists of helpers and permissions."}}},"title":"IPluginSetup","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"implementation()":"5c60da1b","prepareInstallation(address,bytes)":"f10832f1","prepareUninstallation(address,(address,address[],bytes))":"9cb0a124","prepareUpdate(address,uint16,(address,address[],bytes))":"a8a9c29e"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_dao\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"prepareInstallation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"plugin\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address[]\",\"name\":\"helpers\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"enum PermissionLib.Operation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"condition\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PermissionLib.MultiTargetPermission[]\",\"name\":\"permissions\",\"type\":\"tuple[]\"}],\"internalType\":\"struct IPluginSetup.PreparedSetupData\",\"name\":\"preparedSetupData\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_dao\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"plugin\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"currentHelpers\",\"type\":\"address[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IPluginSetup.SetupPayload\",\"name\":\"_payload\",\"type\":\"tuple\"}],\"name\":\"prepareUninstallation\",\"outputs\":[{\"components\":[{\"internalType\":\"enum PermissionLib.Operation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"condition\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PermissionLib.MultiTargetPermission[]\",\"name\":\"permissions\",\"type\":\"tuple[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_dao\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"_fromBuild\",\"type\":\"uint16\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"plugin\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"currentHelpers\",\"type\":\"address[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IPluginSetup.SetupPayload\",\"name\":\"_payload\",\"type\":\"tuple\"}],\"name\":\"prepareUpdate\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"initData\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address[]\",\"name\":\"helpers\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"enum PermissionLib.Operation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"condition\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PermissionLib.MultiTargetPermission[]\",\"name\":\"permissions\",\"type\":\"tuple[]\"}],\"internalType\":\"struct IPluginSetup.PreparedSetupData\",\"name\":\"preparedSetupData\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Aragon X - 2022-2023\",\"custom:security-contact\":\"sirt@aragon.org\",\"kind\":\"dev\",\"methods\":{\"implementation()\":{\"details\":\"The implementation can be instantiated via the `new` keyword, cloned via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)), or proxied via the UUPS proxy pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\",\"returns\":{\"_0\":\"The address of the plugin implementation contract.\"}},\"prepareInstallation(address,bytes)\":{\"params\":{\"_dao\":\"The address of the installing DAO.\",\"_data\":\"The bytes-encoded data containing the input parameters for the installation as specified in the plugin's build metadata JSON file.\"},\"returns\":{\"plugin\":\"The address of the `Plugin` contract being prepared for installation.\",\"preparedSetupData\":\"The deployed plugin's relevant data which consists of helpers and permissions.\"}},\"prepareUninstallation(address,(address,address[],bytes))\":{\"params\":{\"_dao\":\"The address of the uninstalling DAO.\",\"_payload\":\"The relevant data necessary for the `prepareUninstallation`. See above.\"},\"returns\":{\"permissions\":\"The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the uninstalling DAO.\"}},\"prepareUpdate(address,uint16,(address,address[],bytes))\":{\"params\":{\"_dao\":\"The address of the updating DAO.\",\"_fromBuild\":\"The build number of the plugin to update from.\",\"_payload\":\"The relevant data necessary for the `prepareUpdate`. See above.\"},\"returns\":{\"initData\":\"The initialization data to be passed to upgradeable contracts when the update is applied in the `PluginSetupProcessor`.\",\"preparedSetupData\":\"The deployed plugin's relevant data which consists of helpers and permissions.\"}}},\"title\":\"IPluginSetup\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"implementation()\":{\"notice\":\"Returns the plugin implementation address.\"},\"prepareInstallation(address,bytes)\":{\"notice\":\"Prepares the installation of a plugin.\"},\"prepareUninstallation(address,(address,address[],bytes))\":{\"notice\":\"Prepares the uninstallation of a plugin.\"},\"prepareUpdate(address,uint16,(address,address[],bytes))\":{\"notice\":\"Prepares the update of a plugin.\"}},\"notice\":\"The interface required for a plugin setup contract to be consumed by the `PluginSetupProcessor` for plugin installations, updates, and uninstallations.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/plugin/setup/IPluginSetup.sol\":\"IPluginSetup\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"src/dao/IDAO.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IDAO\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for DAOs within the Aragon App DAO framework.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IDAO {\\n /// @notice The action struct to be consumed by the DAO's `execute` function resulting in an external call.\\n /// @param to The address to call.\\n /// @param value The native token value to be sent with the call.\\n /// @param data The bytes-encoded function selector and calldata for the call.\\n struct Action {\\n address to;\\n uint256 value;\\n bytes data;\\n }\\n\\n /// @notice Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\\n /// @param _where The address of the contract.\\n /// @param _who The address of a EOA or contract to give the permissions.\\n /// @param _permissionId The permission identifier.\\n /// @param _data The optional data passed to the `PermissionCondition` registered.\\n /// @return Returns true if the address has permission, false if not.\\n function hasPermission(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes memory _data\\n ) external view returns (bool);\\n\\n /// @notice Updates the DAO metadata (e.g., an IPFS hash).\\n /// @param _metadata The IPFS hash of the new metadata object.\\n function setMetadata(bytes calldata _metadata) external;\\n\\n /// @notice Emitted when the DAO metadata is updated.\\n /// @param metadata The IPFS hash of the new metadata object.\\n event MetadataSet(bytes metadata);\\n\\n /// @notice Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted.\\n /// @param _callId The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce.\\n /// @param _actions The array of actions.\\n /// @param _allowFailureMap A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @return The array of results obtained from the executed actions in `bytes`.\\n /// @return The resulting failure map containing the actions have actually failed.\\n function execute(\\n bytes32 _callId,\\n Action[] memory _actions,\\n uint256 _allowFailureMap\\n ) external returns (bytes[] memory, uint256);\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param actor The address of the caller.\\n /// @param callId The ID of the call.\\n /// @param actions The array of actions executed.\\n /// @param allowFailureMap The allow failure map encoding which actions are allowed to fail.\\n /// @param failureMap The failure map encoding which actions have failed.\\n /// @param execResults The array with the results of the executed actions.\\n /// @dev The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce.\\n event Executed(\\n address indexed actor,\\n bytes32 callId,\\n Action[] actions,\\n uint256 allowFailureMap,\\n uint256 failureMap,\\n bytes[] execResults\\n );\\n\\n /// @notice Emitted when a standard callback is registered.\\n /// @param interfaceId The ID of the interface.\\n /// @param callbackSelector The selector of the callback function.\\n /// @param magicNumber The magic number to be registered for the callback function selector.\\n event StandardCallbackRegistered(\\n bytes4 interfaceId,\\n bytes4 callbackSelector,\\n bytes4 magicNumber\\n );\\n\\n /// @notice Deposits (native) tokens to the DAO contract with a reference string.\\n /// @param _token The address of the token or address(0) in case of the native token.\\n /// @param _amount The amount of tokens to deposit.\\n /// @param _reference The reference describing the deposit reason.\\n function deposit(address _token, uint256 _amount, string calldata _reference) external payable;\\n\\n /// @notice Emitted when a token deposit has been made to the DAO.\\n /// @param sender The address of the sender.\\n /// @param token The address of the deposited token.\\n /// @param amount The amount of tokens deposited.\\n /// @param _reference The reference describing the deposit reason.\\n event Deposited(\\n address indexed sender,\\n address indexed token,\\n uint256 amount,\\n string _reference\\n );\\n\\n /// @notice Emitted when a native token deposit has been made to the DAO.\\n /// @dev This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).\\n /// @param sender The address of the sender.\\n /// @param amount The amount of native tokens deposited.\\n event NativeTokenDeposited(address sender, uint256 amount);\\n\\n /// @notice Setter for the trusted forwarder verifying the meta transaction.\\n /// @param _trustedForwarder The trusted forwarder address.\\n function setTrustedForwarder(address _trustedForwarder) external;\\n\\n /// @notice Getter for the trusted forwarder verifying the meta transaction.\\n /// @return The trusted forwarder address.\\n function getTrustedForwarder() external view returns (address);\\n\\n /// @notice Emitted when a new TrustedForwarder is set on the DAO.\\n /// @param forwarder the new forwarder address.\\n event TrustedForwarderSet(address forwarder);\\n\\n /// @notice Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\\n /// @param _hash The hash of the data to be signed.\\n /// @param _signature The signature byte array associated with `_hash`.\\n /// @return Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not.\\n function isValidSignature(bytes32 _hash, bytes memory _signature) external returns (bytes4);\\n\\n /// @notice Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\\n /// @param _interfaceId The ID of the interface.\\n /// @param _callbackSelector The selector of the callback function.\\n /// @param _magicNumber The magic number to be registered for the function signature.\\n function registerStandardCallback(\\n bytes4 _interfaceId,\\n bytes4 _callbackSelector,\\n bytes4 _magicNumber\\n ) external;\\n\\n /// @notice Removed function being left here to not corrupt the IDAO interface ID. Any call will revert.\\n /// @dev Introduced in v1.0.0. Removed in v1.4.0.\\n function setSignatureValidator(address) external;\\n}\\n\",\"keccak256\":\"0xb7f615523c26de042edce98731c658f44a1edb2464387ac1b642c4c69f57128e\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/PermissionLib.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title PermissionLib\\n/// @author Aragon X - 2021-2023\\n/// @notice A library containing objects for permission processing.\\n/// @custom:security-contact sirt@aragon.org\\nlibrary PermissionLib {\\n /// @notice A constant expressing that no condition is applied to a permission.\\n address public constant NO_CONDITION = address(0);\\n\\n /// @notice The types of permission operations available in the `PermissionManager`.\\n /// @param Grant The grant operation setting a permission without a condition.\\n /// @param Revoke The revoke operation removing a permission (that was granted with or without a condition).\\n /// @param GrantWithCondition The grant operation setting a permission with a condition.\\n enum Operation {\\n Grant,\\n Revoke,\\n GrantWithCondition\\n }\\n\\n /// @notice A struct containing the information for a permission to be applied on a single target contract without a condition.\\n /// @param operation The permission operation type.\\n /// @param who The address (EOA or contract) receiving the permission.\\n /// @param permissionId The permission identifier.\\n struct SingleTargetPermission {\\n Operation operation;\\n address who;\\n bytes32 permissionId;\\n }\\n\\n /// @notice A struct containing the information for a permission to be applied on multiple target contracts, optionally, with a condition.\\n /// @param operation The permission operation type.\\n /// @param where The address of the target contract for which `who` receives permission.\\n /// @param who The address (EOA or contract) receiving the permission.\\n /// @param condition The `PermissionCondition` that will be asked for authorization on calls connected to the specified permission identifier.\\n /// @param permissionId The permission identifier.\\n struct MultiTargetPermission {\\n Operation operation;\\n address where;\\n address who;\\n address condition;\\n bytes32 permissionId;\\n }\\n}\\n\",\"keccak256\":\"0x470faf3c4891ebc6420ef6cc09f6098917568ccc79268c90954d1478199b6097\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/setup/IPluginSetup.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {PermissionLib} from \\\"../../permission/PermissionLib.sol\\\";\\n\\n// solhint-disable-next-line no-unused-import\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @title IPluginSetup\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for a plugin setup contract to be consumed by the `PluginSetupProcessor` for plugin installations, updates, and uninstallations.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IPluginSetup {\\n /// @notice The data associated with a prepared setup.\\n /// @param helpers The address array of helpers (contracts or EOAs) associated with this plugin version after the installation or update.\\n /// @param permissions The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the installing or updating DAO.\\n struct PreparedSetupData {\\n address[] helpers;\\n PermissionLib.MultiTargetPermission[] permissions;\\n }\\n\\n /// @notice The payload for plugin updates and uninstallations containing the existing contracts as well as optional data to be consumed by the plugin setup.\\n /// @param plugin The address of the `Plugin`.\\n /// @param currentHelpers The address array of all current helpers (contracts or EOAs) associated with the plugin to update from.\\n /// @param data The bytes-encoded data containing the input parameters for the preparation of update/uninstall as specified in the corresponding ABI on the version's metadata.\\n struct SetupPayload {\\n address plugin;\\n address[] currentHelpers;\\n bytes data;\\n }\\n\\n /// @notice Prepares the installation of a plugin.\\n /// @param _dao The address of the installing DAO.\\n /// @param _data The bytes-encoded data containing the input parameters for the installation as specified in the plugin's build metadata JSON file.\\n /// @return plugin The address of the `Plugin` contract being prepared for installation.\\n /// @return preparedSetupData The deployed plugin's relevant data which consists of helpers and permissions.\\n function prepareInstallation(\\n address _dao,\\n bytes calldata _data\\n ) external returns (address plugin, PreparedSetupData memory preparedSetupData);\\n\\n /// @notice Prepares the update of a plugin.\\n /// @param _dao The address of the updating DAO.\\n /// @param _fromBuild The build number of the plugin to update from.\\n /// @param _payload The relevant data necessary for the `prepareUpdate`. See above.\\n /// @return initData The initialization data to be passed to upgradeable contracts when the update is applied in the `PluginSetupProcessor`.\\n /// @return preparedSetupData The deployed plugin's relevant data which consists of helpers and permissions.\\n function prepareUpdate(\\n address _dao,\\n uint16 _fromBuild,\\n SetupPayload calldata _payload\\n ) external returns (bytes memory initData, PreparedSetupData memory preparedSetupData);\\n\\n /// @notice Prepares the uninstallation of a plugin.\\n /// @param _dao The address of the uninstalling DAO.\\n /// @param _payload The relevant data necessary for the `prepareUninstallation`. See above.\\n /// @return permissions The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the uninstalling DAO.\\n function prepareUninstallation(\\n address _dao,\\n SetupPayload calldata _payload\\n ) external returns (PermissionLib.MultiTargetPermission[] memory permissions);\\n\\n /// @notice Returns the plugin implementation address.\\n /// @return The address of the plugin implementation contract.\\n /// @dev The implementation can be instantiated via the `new` keyword, cloned via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)), or proxied via the UUPS proxy pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0x21c99995208039ac6ace219b6f273243811dc2aa66399e8e499e43ec30b82fa9\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{"implementation()":{"notice":"Returns the plugin implementation address."},"prepareInstallation(address,bytes)":{"notice":"Prepares the installation of a plugin."},"prepareUninstallation(address,(address,address[],bytes))":{"notice":"Prepares the uninstallation of a plugin."},"prepareUpdate(address,uint16,(address,address[],bytes))":{"notice":"Prepares the update of a plugin."}},"notice":"The interface required for a plugin setup contract to be consumed by the `PluginSetupProcessor` for plugin installations, updates, and uninstallations.","version":1}}},"src/plugin/setup/PluginSetup.sol":{"PluginSetup":{"abi":[{"inputs":[],"name":"NonUpgradeablePlugin","type":"error"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_dao","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"prepareInstallation","outputs":[{"internalType":"address","name":"plugin","type":"address"},{"components":[{"internalType":"address[]","name":"helpers","type":"address[]"},{"components":[{"internalType":"enum PermissionLib.Operation","name":"operation","type":"uint8"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"condition","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"internalType":"struct PermissionLib.MultiTargetPermission[]","name":"permissions","type":"tuple[]"}],"internalType":"struct IPluginSetup.PreparedSetupData","name":"preparedSetupData","type":"tuple"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_dao","type":"address"},{"components":[{"internalType":"address","name":"plugin","type":"address"},{"internalType":"address[]","name":"currentHelpers","type":"address[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct IPluginSetup.SetupPayload","name":"_payload","type":"tuple"}],"name":"prepareUninstallation","outputs":[{"components":[{"internalType":"enum PermissionLib.Operation","name":"operation","type":"uint8"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"condition","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"internalType":"struct PermissionLib.MultiTargetPermission[]","name":"permissions","type":"tuple[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_dao","type":"address"},{"internalType":"uint16","name":"_fromBuild","type":"uint16"},{"components":[{"internalType":"address","name":"plugin","type":"address"},{"internalType":"address[]","name":"currentHelpers","type":"address[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct IPluginSetup.SetupPayload","name":"_payload","type":"tuple"}],"name":"prepareUpdate","outputs":[{"internalType":"bytes","name":"","type":"bytes"},{"components":[{"internalType":"address[]","name":"helpers","type":"address[]"},{"components":[{"internalType":"enum PermissionLib.Operation","name":"operation","type":"uint8"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"condition","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"internalType":"struct PermissionLib.MultiTargetPermission[]","name":"permissions","type":"tuple[]"}],"internalType":"struct IPluginSetup.PreparedSetupData","name":"","type":"tuple"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"protocolVersion","outputs":[{"internalType":"uint8[3]","name":"","type":"uint8[3]"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"author":"Aragon X - 2022-2024","custom:security-contact":"sirt@aragon.org","kind":"dev","methods":{"constructor":{"params":{"_implementation":"The address of the plugin implementation contract."}},"implementation()":{"details":"The implementation can be instantiated via the `new` keyword, cloned via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)), or proxied via the UUPS proxy pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).","returns":{"_0":"The address of the plugin implementation contract."}},"prepareInstallation(address,bytes)":{"params":{"_dao":"The address of the installing DAO.","_data":"The bytes-encoded data containing the input parameters for the installation as specified in the plugin's build metadata JSON file."},"returns":{"plugin":"The address of the `Plugin` contract being prepared for installation.","preparedSetupData":"The deployed plugin's relevant data which consists of helpers and permissions."}},"prepareUninstallation(address,(address,address[],bytes))":{"params":{"_dao":"The address of the uninstalling DAO.","_payload":"The relevant data necessary for the `prepareUninstallation`. See above."},"returns":{"permissions":"The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the uninstalling DAO."}},"prepareUpdate(address,uint16,(address,address[],bytes))":{"details":"Since the underlying plugin is non-upgradeable, this non-virtual function must always revert.","params":{"_dao":"The address of the updating DAO.","_fromBuild":"The build number of the plugin to update from.","_payload":"The relevant data necessary for the `prepareUpdate`. See above."},"returns":{"_0":"The initialization data to be passed to upgradeable contracts when the update is applied in the `PluginSetupProcessor`.","_1":"The deployed plugin's relevant data which consists of helpers and permissions."}},"protocolVersion()":{"details":"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.","returns":{"_0":"Returns the semantic Aragon OSx protocol version number."}},"supportsInterface(bytes4)":{"params":{"_interfaceId":"The ID of the interface."},"returns":{"_0":"Returns `true` if the interface is supported."}}},"title":"PluginSetup","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"implementation()":"5c60da1b","prepareInstallation(address,bytes)":"f10832f1","prepareUninstallation(address,(address,address[],bytes))":"9cb0a124","prepareUpdate(address,uint16,(address,address[],bytes))":"a8a9c29e","protocolVersion()":"2ae9c600","supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"NonUpgradeablePlugin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_dao\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"prepareInstallation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"plugin\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address[]\",\"name\":\"helpers\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"enum PermissionLib.Operation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"condition\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PermissionLib.MultiTargetPermission[]\",\"name\":\"permissions\",\"type\":\"tuple[]\"}],\"internalType\":\"struct IPluginSetup.PreparedSetupData\",\"name\":\"preparedSetupData\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_dao\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"plugin\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"currentHelpers\",\"type\":\"address[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IPluginSetup.SetupPayload\",\"name\":\"_payload\",\"type\":\"tuple\"}],\"name\":\"prepareUninstallation\",\"outputs\":[{\"components\":[{\"internalType\":\"enum PermissionLib.Operation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"condition\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PermissionLib.MultiTargetPermission[]\",\"name\":\"permissions\",\"type\":\"tuple[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_dao\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"_fromBuild\",\"type\":\"uint16\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"plugin\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"currentHelpers\",\"type\":\"address[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IPluginSetup.SetupPayload\",\"name\":\"_payload\",\"type\":\"tuple\"}],\"name\":\"prepareUpdate\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address[]\",\"name\":\"helpers\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"enum PermissionLib.Operation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"condition\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PermissionLib.MultiTargetPermission[]\",\"name\":\"permissions\",\"type\":\"tuple[]\"}],\"internalType\":\"struct IPluginSetup.PreparedSetupData\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"protocolVersion\",\"outputs\":[{\"internalType\":\"uint8[3]\",\"name\":\"\",\"type\":\"uint8[3]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Aragon X - 2022-2024\",\"custom:security-contact\":\"sirt@aragon.org\",\"kind\":\"dev\",\"methods\":{\"constructor\":{\"params\":{\"_implementation\":\"The address of the plugin implementation contract.\"}},\"implementation()\":{\"details\":\"The implementation can be instantiated via the `new` keyword, cloned via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)), or proxied via the UUPS proxy pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\",\"returns\":{\"_0\":\"The address of the plugin implementation contract.\"}},\"prepareInstallation(address,bytes)\":{\"params\":{\"_dao\":\"The address of the installing DAO.\",\"_data\":\"The bytes-encoded data containing the input parameters for the installation as specified in the plugin's build metadata JSON file.\"},\"returns\":{\"plugin\":\"The address of the `Plugin` contract being prepared for installation.\",\"preparedSetupData\":\"The deployed plugin's relevant data which consists of helpers and permissions.\"}},\"prepareUninstallation(address,(address,address[],bytes))\":{\"params\":{\"_dao\":\"The address of the uninstalling DAO.\",\"_payload\":\"The relevant data necessary for the `prepareUninstallation`. See above.\"},\"returns\":{\"permissions\":\"The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the uninstalling DAO.\"}},\"prepareUpdate(address,uint16,(address,address[],bytes))\":{\"details\":\"Since the underlying plugin is non-upgradeable, this non-virtual function must always revert.\",\"params\":{\"_dao\":\"The address of the updating DAO.\",\"_fromBuild\":\"The build number of the plugin to update from.\",\"_payload\":\"The relevant data necessary for the `prepareUpdate`. See above.\"},\"returns\":{\"_0\":\"The initialization data to be passed to upgradeable contracts when the update is applied in the `PluginSetupProcessor`.\",\"_1\":\"The deployed plugin's relevant data which consists of helpers and permissions.\"}},\"protocolVersion()\":{\"details\":\"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\",\"returns\":{\"_0\":\"Returns the semantic Aragon OSx protocol version number.\"}},\"supportsInterface(bytes4)\":{\"params\":{\"_interfaceId\":\"The ID of the interface.\"},\"returns\":{\"_0\":\"Returns `true` if the interface is supported.\"}}},\"title\":\"PluginSetup\",\"version\":1},\"userdoc\":{\"errors\":{\"NonUpgradeablePlugin()\":[{\"notice\":\"Thrown when attempting to prepare an update on a non-upgradeable plugin.\"}]},\"kind\":\"user\",\"methods\":{\"constructor\":{\"notice\":\"The contract constructor, that setting the plugin implementation contract.\"},\"implementation()\":{\"notice\":\"Returns the plugin implementation address.\"},\"prepareInstallation(address,bytes)\":{\"notice\":\"Prepares the installation of a plugin.\"},\"prepareUninstallation(address,(address,address[],bytes))\":{\"notice\":\"Prepares the uninstallation of a plugin.\"},\"prepareUpdate(address,uint16,(address,address[],bytes))\":{\"notice\":\"Prepares the update of a plugin.\"},\"protocolVersion()\":{\"notice\":\"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Checks if this or the parent contract supports an interface by its ID.\"}},\"notice\":\"An abstract contract to inherit from to implement the plugin setup for non-upgradeable plugins, i.e, - `Plugin` being deployed via the `new` keyword - `PluginCloneable` being deployed via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)).\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/plugin/setup/PluginSetup.sol\":\"PluginSetup\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165 is IERC165 {\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165).interfaceId;\\n }\\n}\\n\",\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"src/dao/IDAO.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IDAO\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for DAOs within the Aragon App DAO framework.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IDAO {\\n /// @notice The action struct to be consumed by the DAO's `execute` function resulting in an external call.\\n /// @param to The address to call.\\n /// @param value The native token value to be sent with the call.\\n /// @param data The bytes-encoded function selector and calldata for the call.\\n struct Action {\\n address to;\\n uint256 value;\\n bytes data;\\n }\\n\\n /// @notice Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\\n /// @param _where The address of the contract.\\n /// @param _who The address of a EOA or contract to give the permissions.\\n /// @param _permissionId The permission identifier.\\n /// @param _data The optional data passed to the `PermissionCondition` registered.\\n /// @return Returns true if the address has permission, false if not.\\n function hasPermission(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes memory _data\\n ) external view returns (bool);\\n\\n /// @notice Updates the DAO metadata (e.g., an IPFS hash).\\n /// @param _metadata The IPFS hash of the new metadata object.\\n function setMetadata(bytes calldata _metadata) external;\\n\\n /// @notice Emitted when the DAO metadata is updated.\\n /// @param metadata The IPFS hash of the new metadata object.\\n event MetadataSet(bytes metadata);\\n\\n /// @notice Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted.\\n /// @param _callId The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce.\\n /// @param _actions The array of actions.\\n /// @param _allowFailureMap A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @return The array of results obtained from the executed actions in `bytes`.\\n /// @return The resulting failure map containing the actions have actually failed.\\n function execute(\\n bytes32 _callId,\\n Action[] memory _actions,\\n uint256 _allowFailureMap\\n ) external returns (bytes[] memory, uint256);\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param actor The address of the caller.\\n /// @param callId The ID of the call.\\n /// @param actions The array of actions executed.\\n /// @param allowFailureMap The allow failure map encoding which actions are allowed to fail.\\n /// @param failureMap The failure map encoding which actions have failed.\\n /// @param execResults The array with the results of the executed actions.\\n /// @dev The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce.\\n event Executed(\\n address indexed actor,\\n bytes32 callId,\\n Action[] actions,\\n uint256 allowFailureMap,\\n uint256 failureMap,\\n bytes[] execResults\\n );\\n\\n /// @notice Emitted when a standard callback is registered.\\n /// @param interfaceId The ID of the interface.\\n /// @param callbackSelector The selector of the callback function.\\n /// @param magicNumber The magic number to be registered for the callback function selector.\\n event StandardCallbackRegistered(\\n bytes4 interfaceId,\\n bytes4 callbackSelector,\\n bytes4 magicNumber\\n );\\n\\n /// @notice Deposits (native) tokens to the DAO contract with a reference string.\\n /// @param _token The address of the token or address(0) in case of the native token.\\n /// @param _amount The amount of tokens to deposit.\\n /// @param _reference The reference describing the deposit reason.\\n function deposit(address _token, uint256 _amount, string calldata _reference) external payable;\\n\\n /// @notice Emitted when a token deposit has been made to the DAO.\\n /// @param sender The address of the sender.\\n /// @param token The address of the deposited token.\\n /// @param amount The amount of tokens deposited.\\n /// @param _reference The reference describing the deposit reason.\\n event Deposited(\\n address indexed sender,\\n address indexed token,\\n uint256 amount,\\n string _reference\\n );\\n\\n /// @notice Emitted when a native token deposit has been made to the DAO.\\n /// @dev This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).\\n /// @param sender The address of the sender.\\n /// @param amount The amount of native tokens deposited.\\n event NativeTokenDeposited(address sender, uint256 amount);\\n\\n /// @notice Setter for the trusted forwarder verifying the meta transaction.\\n /// @param _trustedForwarder The trusted forwarder address.\\n function setTrustedForwarder(address _trustedForwarder) external;\\n\\n /// @notice Getter for the trusted forwarder verifying the meta transaction.\\n /// @return The trusted forwarder address.\\n function getTrustedForwarder() external view returns (address);\\n\\n /// @notice Emitted when a new TrustedForwarder is set on the DAO.\\n /// @param forwarder the new forwarder address.\\n event TrustedForwarderSet(address forwarder);\\n\\n /// @notice Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\\n /// @param _hash The hash of the data to be signed.\\n /// @param _signature The signature byte array associated with `_hash`.\\n /// @return Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not.\\n function isValidSignature(bytes32 _hash, bytes memory _signature) external returns (bytes4);\\n\\n /// @notice Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\\n /// @param _interfaceId The ID of the interface.\\n /// @param _callbackSelector The selector of the callback function.\\n /// @param _magicNumber The magic number to be registered for the function signature.\\n function registerStandardCallback(\\n bytes4 _interfaceId,\\n bytes4 _callbackSelector,\\n bytes4 _magicNumber\\n ) external;\\n\\n /// @notice Removed function being left here to not corrupt the IDAO interface ID. Any call will revert.\\n /// @dev Introduced in v1.0.0. Removed in v1.4.0.\\n function setSignatureValidator(address) external;\\n}\\n\",\"keccak256\":\"0xb7f615523c26de042edce98731c658f44a1edb2464387ac1b642c4c69f57128e\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/PermissionLib.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title PermissionLib\\n/// @author Aragon X - 2021-2023\\n/// @notice A library containing objects for permission processing.\\n/// @custom:security-contact sirt@aragon.org\\nlibrary PermissionLib {\\n /// @notice A constant expressing that no condition is applied to a permission.\\n address public constant NO_CONDITION = address(0);\\n\\n /// @notice The types of permission operations available in the `PermissionManager`.\\n /// @param Grant The grant operation setting a permission without a condition.\\n /// @param Revoke The revoke operation removing a permission (that was granted with or without a condition).\\n /// @param GrantWithCondition The grant operation setting a permission with a condition.\\n enum Operation {\\n Grant,\\n Revoke,\\n GrantWithCondition\\n }\\n\\n /// @notice A struct containing the information for a permission to be applied on a single target contract without a condition.\\n /// @param operation The permission operation type.\\n /// @param who The address (EOA or contract) receiving the permission.\\n /// @param permissionId The permission identifier.\\n struct SingleTargetPermission {\\n Operation operation;\\n address who;\\n bytes32 permissionId;\\n }\\n\\n /// @notice A struct containing the information for a permission to be applied on multiple target contracts, optionally, with a condition.\\n /// @param operation The permission operation type.\\n /// @param where The address of the target contract for which `who` receives permission.\\n /// @param who The address (EOA or contract) receiving the permission.\\n /// @param condition The `PermissionCondition` that will be asked for authorization on calls connected to the specified permission identifier.\\n /// @param permissionId The permission identifier.\\n struct MultiTargetPermission {\\n Operation operation;\\n address where;\\n address who;\\n address condition;\\n bytes32 permissionId;\\n }\\n}\\n\",\"keccak256\":\"0x470faf3c4891ebc6420ef6cc09f6098917568ccc79268c90954d1478199b6097\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/setup/IPluginSetup.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {PermissionLib} from \\\"../../permission/PermissionLib.sol\\\";\\n\\n// solhint-disable-next-line no-unused-import\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @title IPluginSetup\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for a plugin setup contract to be consumed by the `PluginSetupProcessor` for plugin installations, updates, and uninstallations.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IPluginSetup {\\n /// @notice The data associated with a prepared setup.\\n /// @param helpers The address array of helpers (contracts or EOAs) associated with this plugin version after the installation or update.\\n /// @param permissions The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the installing or updating DAO.\\n struct PreparedSetupData {\\n address[] helpers;\\n PermissionLib.MultiTargetPermission[] permissions;\\n }\\n\\n /// @notice The payload for plugin updates and uninstallations containing the existing contracts as well as optional data to be consumed by the plugin setup.\\n /// @param plugin The address of the `Plugin`.\\n /// @param currentHelpers The address array of all current helpers (contracts or EOAs) associated with the plugin to update from.\\n /// @param data The bytes-encoded data containing the input parameters for the preparation of update/uninstall as specified in the corresponding ABI on the version's metadata.\\n struct SetupPayload {\\n address plugin;\\n address[] currentHelpers;\\n bytes data;\\n }\\n\\n /// @notice Prepares the installation of a plugin.\\n /// @param _dao The address of the installing DAO.\\n /// @param _data The bytes-encoded data containing the input parameters for the installation as specified in the plugin's build metadata JSON file.\\n /// @return plugin The address of the `Plugin` contract being prepared for installation.\\n /// @return preparedSetupData The deployed plugin's relevant data which consists of helpers and permissions.\\n function prepareInstallation(\\n address _dao,\\n bytes calldata _data\\n ) external returns (address plugin, PreparedSetupData memory preparedSetupData);\\n\\n /// @notice Prepares the update of a plugin.\\n /// @param _dao The address of the updating DAO.\\n /// @param _fromBuild The build number of the plugin to update from.\\n /// @param _payload The relevant data necessary for the `prepareUpdate`. See above.\\n /// @return initData The initialization data to be passed to upgradeable contracts when the update is applied in the `PluginSetupProcessor`.\\n /// @return preparedSetupData The deployed plugin's relevant data which consists of helpers and permissions.\\n function prepareUpdate(\\n address _dao,\\n uint16 _fromBuild,\\n SetupPayload calldata _payload\\n ) external returns (bytes memory initData, PreparedSetupData memory preparedSetupData);\\n\\n /// @notice Prepares the uninstallation of a plugin.\\n /// @param _dao The address of the uninstalling DAO.\\n /// @param _payload The relevant data necessary for the `prepareUninstallation`. See above.\\n /// @return permissions The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the uninstalling DAO.\\n function prepareUninstallation(\\n address _dao,\\n SetupPayload calldata _payload\\n ) external returns (PermissionLib.MultiTargetPermission[] memory permissions);\\n\\n /// @notice Returns the plugin implementation address.\\n /// @return The address of the plugin implementation contract.\\n /// @dev The implementation can be instantiated via the `new` keyword, cloned via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)), or proxied via the UUPS proxy pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0x21c99995208039ac6ace219b6f273243811dc2aa66399e8e499e43ec30b82fa9\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/setup/PluginSetup.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ERC165} from \\\"@openzeppelin/contracts/utils/introspection/ERC165.sol\\\";\\n\\nimport {IProtocolVersion} from \\\"../../utils/versioning/IProtocolVersion.sol\\\";\\nimport {ProtocolVersion} from \\\"../../utils/versioning/ProtocolVersion.sol\\\";\\nimport {IPluginSetup} from \\\"./IPluginSetup.sol\\\";\\n\\n/// @title PluginSetup\\n/// @author Aragon X - 2022-2024\\n/// @notice An abstract contract to inherit from to implement the plugin setup for non-upgradeable plugins, i.e,\\n/// - `Plugin` being deployed via the `new` keyword\\n/// - `PluginCloneable` being deployed via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)).\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract PluginSetup is ERC165, IPluginSetup, ProtocolVersion {\\n /// @notice The address of the plugin implementation contract for initial block explorer verification and, in the case of `PluginClonable` implementations, to create [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167) clones from.\\n address internal immutable IMPLEMENTATION;\\n\\n /// @notice Thrown when attempting to prepare an update on a non-upgradeable plugin.\\n error NonUpgradeablePlugin();\\n\\n /// @notice The contract constructor, that setting the plugin implementation contract.\\n /// @param _implementation The address of the plugin implementation contract.\\n constructor(address _implementation) {\\n IMPLEMENTATION = _implementation;\\n }\\n\\n /// @inheritdoc IPluginSetup\\n /// @dev Since the underlying plugin is non-upgradeable, this non-virtual function must always revert.\\n function prepareUpdate(\\n address _dao,\\n uint16 _fromBuild,\\n SetupPayload calldata _payload\\n ) external pure returns (bytes memory, PreparedSetupData memory) {\\n (_dao, _fromBuild, _payload);\\n revert NonUpgradeablePlugin();\\n }\\n\\n /// @notice Checks if this or the parent contract supports an interface by its ID.\\n /// @param _interfaceId The ID of the interface.\\n /// @return Returns `true` if the interface is supported.\\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\\n return\\n _interfaceId == type(IPluginSetup).interfaceId ||\\n _interfaceId == type(IProtocolVersion).interfaceId ||\\n super.supportsInterface(_interfaceId);\\n }\\n\\n /// @inheritdoc IPluginSetup\\n function implementation() public view returns (address) {\\n return IMPLEMENTATION;\\n }\\n}\\n\",\"keccak256\":\"0x93044f8080758c5cf8d621e3614b8150f55572a1770880106a49dfa53784a9d2\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/IProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IProtocolVersion\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the semantic Aragon OSx protocol version number.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IProtocolVersion {\\n /// @notice Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\\n /// @return _version Returns the semantic Aragon OSx protocol version number.\\n /// @dev This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\\n function protocolVersion() external view returns (uint8[3] memory _version);\\n}\\n\",\"keccak256\":\"0x00a4da654d21dc1bdadbdc8bd54bb86c378c56f85e461ccc31303628ea621361\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/ProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IProtocolVersion} from \\\"./IProtocolVersion.sol\\\";\\n\\n/// @title ProtocolVersion\\n/// @author Aragon X - 2023\\n/// @notice An abstract, stateless, non-upgradeable contract providing the current Aragon OSx protocol version number.\\n/// @dev Do not add any new variables to this contract that would shift down storage in the inheritance chain.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract ProtocolVersion is IProtocolVersion {\\n // IMPORTANT: Do not add any storage variable, see the above notice.\\n\\n /// @inheritdoc IProtocolVersion\\n function protocolVersion() public pure returns (uint8[3] memory) {\\n return [1, 4, 0];\\n }\\n}\\n\",\"keccak256\":\"0x3975c937be935f687c6b6b8f379071232681e98cf04b175d72781b819ea52bdb\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"errors":{"NonUpgradeablePlugin()":[{"notice":"Thrown when attempting to prepare an update on a non-upgradeable plugin."}]},"kind":"user","methods":{"constructor":{"notice":"The contract constructor, that setting the plugin implementation contract."},"implementation()":{"notice":"Returns the plugin implementation address."},"prepareInstallation(address,bytes)":{"notice":"Prepares the installation of a plugin."},"prepareUninstallation(address,(address,address[],bytes))":{"notice":"Prepares the uninstallation of a plugin."},"prepareUpdate(address,uint16,(address,address[],bytes))":{"notice":"Prepares the update of a plugin."},"protocolVersion()":{"notice":"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with."},"supportsInterface(bytes4)":{"notice":"Checks if this or the parent contract supports an interface by its ID."}},"notice":"An abstract contract to inherit from to implement the plugin setup for non-upgradeable plugins, i.e, - `Plugin` being deployed via the `new` keyword - `PluginCloneable` being deployed via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)).","version":1}}},"src/plugin/setup/PluginUpgradeableSetup.sol":{"PluginUpgradeableSetup":{"abi":[{"inputs":[{"internalType":"uint16","name":"fromBuild","type":"uint16"},{"internalType":"uint16","name":"thisBuild","type":"uint16"}],"name":"InvalidUpdatePath","type":"error"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_dao","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"prepareInstallation","outputs":[{"internalType":"address","name":"plugin","type":"address"},{"components":[{"internalType":"address[]","name":"helpers","type":"address[]"},{"components":[{"internalType":"enum PermissionLib.Operation","name":"operation","type":"uint8"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"condition","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"internalType":"struct PermissionLib.MultiTargetPermission[]","name":"permissions","type":"tuple[]"}],"internalType":"struct IPluginSetup.PreparedSetupData","name":"preparedSetupData","type":"tuple"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_dao","type":"address"},{"components":[{"internalType":"address","name":"plugin","type":"address"},{"internalType":"address[]","name":"currentHelpers","type":"address[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct IPluginSetup.SetupPayload","name":"_payload","type":"tuple"}],"name":"prepareUninstallation","outputs":[{"components":[{"internalType":"enum PermissionLib.Operation","name":"operation","type":"uint8"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"condition","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"internalType":"struct PermissionLib.MultiTargetPermission[]","name":"permissions","type":"tuple[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_dao","type":"address"},{"internalType":"uint16","name":"_fromBuild","type":"uint16"},{"components":[{"internalType":"address","name":"plugin","type":"address"},{"internalType":"address[]","name":"currentHelpers","type":"address[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct IPluginSetup.SetupPayload","name":"_payload","type":"tuple"}],"name":"prepareUpdate","outputs":[{"internalType":"bytes","name":"initData","type":"bytes"},{"components":[{"internalType":"address[]","name":"helpers","type":"address[]"},{"components":[{"internalType":"enum PermissionLib.Operation","name":"operation","type":"uint8"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"condition","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"internalType":"struct PermissionLib.MultiTargetPermission[]","name":"permissions","type":"tuple[]"}],"internalType":"struct IPluginSetup.PreparedSetupData","name":"preparedSetupData","type":"tuple"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"protocolVersion","outputs":[{"internalType":"uint8[3]","name":"","type":"uint8[3]"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"author":"Aragon X - 2022-2024","custom:security-contact":"sirt@aragon.org","errors":{"InvalidUpdatePath(uint16,uint16)":[{"params":{"fromBuild":"The build number to update from.","thisBuild":"The build number of this setup to update to."}}]},"kind":"dev","methods":{"constructor":{"params":{"_implementation":"The address of the plugin implementation contract."}},"implementation()":{"details":"The implementation can be instantiated via the `new` keyword, cloned via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)), or proxied via the UUPS proxy pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).","returns":{"_0":"The address of the plugin implementation contract."}},"prepareInstallation(address,bytes)":{"params":{"_dao":"The address of the installing DAO.","_data":"The bytes-encoded data containing the input parameters for the installation as specified in the plugin's build metadata JSON file."},"returns":{"plugin":"The address of the `Plugin` contract being prepared for installation.","preparedSetupData":"The deployed plugin's relevant data which consists of helpers and permissions."}},"prepareUninstallation(address,(address,address[],bytes))":{"params":{"_dao":"The address of the uninstalling DAO.","_payload":"The relevant data necessary for the `prepareUninstallation`. See above."},"returns":{"permissions":"The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the uninstalling DAO."}},"prepareUpdate(address,uint16,(address,address[],bytes))":{"params":{"_dao":"The address of the updating DAO.","_fromBuild":"The build number of the plugin to update from.","_payload":"The relevant data necessary for the `prepareUpdate`. See above."},"returns":{"initData":"The initialization data to be passed to upgradeable contracts when the update is applied in the `PluginSetupProcessor`.","preparedSetupData":"The deployed plugin's relevant data which consists of helpers and permissions."}},"protocolVersion()":{"details":"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.","returns":{"_0":"Returns the semantic Aragon OSx protocol version number."}},"supportsInterface(bytes4)":{"params":{"_interfaceId":"The ID of the interface."},"returns":{"_0":"Returns `true` if the interface is supported."}}},"title":"PluginUpgradeableSetup","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"implementation()":"5c60da1b","prepareInstallation(address,bytes)":"f10832f1","prepareUninstallation(address,(address,address[],bytes))":"9cb0a124","prepareUpdate(address,uint16,(address,address[],bytes))":"a8a9c29e","protocolVersion()":"2ae9c600","supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"fromBuild\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"thisBuild\",\"type\":\"uint16\"}],\"name\":\"InvalidUpdatePath\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_dao\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"prepareInstallation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"plugin\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address[]\",\"name\":\"helpers\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"enum PermissionLib.Operation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"condition\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PermissionLib.MultiTargetPermission[]\",\"name\":\"permissions\",\"type\":\"tuple[]\"}],\"internalType\":\"struct IPluginSetup.PreparedSetupData\",\"name\":\"preparedSetupData\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_dao\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"plugin\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"currentHelpers\",\"type\":\"address[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IPluginSetup.SetupPayload\",\"name\":\"_payload\",\"type\":\"tuple\"}],\"name\":\"prepareUninstallation\",\"outputs\":[{\"components\":[{\"internalType\":\"enum PermissionLib.Operation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"condition\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PermissionLib.MultiTargetPermission[]\",\"name\":\"permissions\",\"type\":\"tuple[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_dao\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"_fromBuild\",\"type\":\"uint16\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"plugin\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"currentHelpers\",\"type\":\"address[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IPluginSetup.SetupPayload\",\"name\":\"_payload\",\"type\":\"tuple\"}],\"name\":\"prepareUpdate\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"initData\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address[]\",\"name\":\"helpers\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"enum PermissionLib.Operation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"condition\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PermissionLib.MultiTargetPermission[]\",\"name\":\"permissions\",\"type\":\"tuple[]\"}],\"internalType\":\"struct IPluginSetup.PreparedSetupData\",\"name\":\"preparedSetupData\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"protocolVersion\",\"outputs\":[{\"internalType\":\"uint8[3]\",\"name\":\"\",\"type\":\"uint8[3]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Aragon X - 2022-2024\",\"custom:security-contact\":\"sirt@aragon.org\",\"errors\":{\"InvalidUpdatePath(uint16,uint16)\":[{\"params\":{\"fromBuild\":\"The build number to update from.\",\"thisBuild\":\"The build number of this setup to update to.\"}}]},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"params\":{\"_implementation\":\"The address of the plugin implementation contract.\"}},\"implementation()\":{\"details\":\"The implementation can be instantiated via the `new` keyword, cloned via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)), or proxied via the UUPS proxy pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\",\"returns\":{\"_0\":\"The address of the plugin implementation contract.\"}},\"prepareInstallation(address,bytes)\":{\"params\":{\"_dao\":\"The address of the installing DAO.\",\"_data\":\"The bytes-encoded data containing the input parameters for the installation as specified in the plugin's build metadata JSON file.\"},\"returns\":{\"plugin\":\"The address of the `Plugin` contract being prepared for installation.\",\"preparedSetupData\":\"The deployed plugin's relevant data which consists of helpers and permissions.\"}},\"prepareUninstallation(address,(address,address[],bytes))\":{\"params\":{\"_dao\":\"The address of the uninstalling DAO.\",\"_payload\":\"The relevant data necessary for the `prepareUninstallation`. See above.\"},\"returns\":{\"permissions\":\"The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the uninstalling DAO.\"}},\"prepareUpdate(address,uint16,(address,address[],bytes))\":{\"params\":{\"_dao\":\"The address of the updating DAO.\",\"_fromBuild\":\"The build number of the plugin to update from.\",\"_payload\":\"The relevant data necessary for the `prepareUpdate`. See above.\"},\"returns\":{\"initData\":\"The initialization data to be passed to upgradeable contracts when the update is applied in the `PluginSetupProcessor`.\",\"preparedSetupData\":\"The deployed plugin's relevant data which consists of helpers and permissions.\"}},\"protocolVersion()\":{\"details\":\"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\",\"returns\":{\"_0\":\"Returns the semantic Aragon OSx protocol version number.\"}},\"supportsInterface(bytes4)\":{\"params\":{\"_interfaceId\":\"The ID of the interface.\"},\"returns\":{\"_0\":\"Returns `true` if the interface is supported.\"}}},\"title\":\"PluginUpgradeableSetup\",\"version\":1},\"userdoc\":{\"errors\":{\"InvalidUpdatePath(uint16,uint16)\":[{\"notice\":\"Thrown when an update path is not available, for example, if this is the initial build.\"}]},\"kind\":\"user\",\"methods\":{\"constructor\":{\"notice\":\"The contract constructor, that setting the plugin implementation contract.\"},\"implementation()\":{\"notice\":\"Returns the plugin implementation address.\"},\"prepareInstallation(address,bytes)\":{\"notice\":\"Prepares the installation of a plugin.\"},\"prepareUninstallation(address,(address,address[],bytes))\":{\"notice\":\"Prepares the uninstallation of a plugin.\"},\"prepareUpdate(address,uint16,(address,address[],bytes))\":{\"notice\":\"Prepares the update of a plugin.\"},\"protocolVersion()\":{\"notice\":\"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Checks if this or the parent contract supports an interface by its ID.\"}},\"notice\":\"An abstract contract to inherit from to implement the plugin setup for upgradeable plugins, i.e, `PluginUUPSUpgradeable` being deployed via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822) and [ERC-1967](https://eips.ethereum.org/EIPS/eip-1967)).\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/plugin/setup/PluginUpgradeableSetup.sol\":\"PluginUpgradeableSetup\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165 is IERC165 {\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165).interfaceId;\\n }\\n}\\n\",\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"src/dao/IDAO.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IDAO\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for DAOs within the Aragon App DAO framework.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IDAO {\\n /// @notice The action struct to be consumed by the DAO's `execute` function resulting in an external call.\\n /// @param to The address to call.\\n /// @param value The native token value to be sent with the call.\\n /// @param data The bytes-encoded function selector and calldata for the call.\\n struct Action {\\n address to;\\n uint256 value;\\n bytes data;\\n }\\n\\n /// @notice Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\\n /// @param _where The address of the contract.\\n /// @param _who The address of a EOA or contract to give the permissions.\\n /// @param _permissionId The permission identifier.\\n /// @param _data The optional data passed to the `PermissionCondition` registered.\\n /// @return Returns true if the address has permission, false if not.\\n function hasPermission(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes memory _data\\n ) external view returns (bool);\\n\\n /// @notice Updates the DAO metadata (e.g., an IPFS hash).\\n /// @param _metadata The IPFS hash of the new metadata object.\\n function setMetadata(bytes calldata _metadata) external;\\n\\n /// @notice Emitted when the DAO metadata is updated.\\n /// @param metadata The IPFS hash of the new metadata object.\\n event MetadataSet(bytes metadata);\\n\\n /// @notice Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted.\\n /// @param _callId The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce.\\n /// @param _actions The array of actions.\\n /// @param _allowFailureMap A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @return The array of results obtained from the executed actions in `bytes`.\\n /// @return The resulting failure map containing the actions have actually failed.\\n function execute(\\n bytes32 _callId,\\n Action[] memory _actions,\\n uint256 _allowFailureMap\\n ) external returns (bytes[] memory, uint256);\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param actor The address of the caller.\\n /// @param callId The ID of the call.\\n /// @param actions The array of actions executed.\\n /// @param allowFailureMap The allow failure map encoding which actions are allowed to fail.\\n /// @param failureMap The failure map encoding which actions have failed.\\n /// @param execResults The array with the results of the executed actions.\\n /// @dev The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce.\\n event Executed(\\n address indexed actor,\\n bytes32 callId,\\n Action[] actions,\\n uint256 allowFailureMap,\\n uint256 failureMap,\\n bytes[] execResults\\n );\\n\\n /// @notice Emitted when a standard callback is registered.\\n /// @param interfaceId The ID of the interface.\\n /// @param callbackSelector The selector of the callback function.\\n /// @param magicNumber The magic number to be registered for the callback function selector.\\n event StandardCallbackRegistered(\\n bytes4 interfaceId,\\n bytes4 callbackSelector,\\n bytes4 magicNumber\\n );\\n\\n /// @notice Deposits (native) tokens to the DAO contract with a reference string.\\n /// @param _token The address of the token or address(0) in case of the native token.\\n /// @param _amount The amount of tokens to deposit.\\n /// @param _reference The reference describing the deposit reason.\\n function deposit(address _token, uint256 _amount, string calldata _reference) external payable;\\n\\n /// @notice Emitted when a token deposit has been made to the DAO.\\n /// @param sender The address of the sender.\\n /// @param token The address of the deposited token.\\n /// @param amount The amount of tokens deposited.\\n /// @param _reference The reference describing the deposit reason.\\n event Deposited(\\n address indexed sender,\\n address indexed token,\\n uint256 amount,\\n string _reference\\n );\\n\\n /// @notice Emitted when a native token deposit has been made to the DAO.\\n /// @dev This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).\\n /// @param sender The address of the sender.\\n /// @param amount The amount of native tokens deposited.\\n event NativeTokenDeposited(address sender, uint256 amount);\\n\\n /// @notice Setter for the trusted forwarder verifying the meta transaction.\\n /// @param _trustedForwarder The trusted forwarder address.\\n function setTrustedForwarder(address _trustedForwarder) external;\\n\\n /// @notice Getter for the trusted forwarder verifying the meta transaction.\\n /// @return The trusted forwarder address.\\n function getTrustedForwarder() external view returns (address);\\n\\n /// @notice Emitted when a new TrustedForwarder is set on the DAO.\\n /// @param forwarder the new forwarder address.\\n event TrustedForwarderSet(address forwarder);\\n\\n /// @notice Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\\n /// @param _hash The hash of the data to be signed.\\n /// @param _signature The signature byte array associated with `_hash`.\\n /// @return Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not.\\n function isValidSignature(bytes32 _hash, bytes memory _signature) external returns (bytes4);\\n\\n /// @notice Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\\n /// @param _interfaceId The ID of the interface.\\n /// @param _callbackSelector The selector of the callback function.\\n /// @param _magicNumber The magic number to be registered for the function signature.\\n function registerStandardCallback(\\n bytes4 _interfaceId,\\n bytes4 _callbackSelector,\\n bytes4 _magicNumber\\n ) external;\\n\\n /// @notice Removed function being left here to not corrupt the IDAO interface ID. Any call will revert.\\n /// @dev Introduced in v1.0.0. Removed in v1.4.0.\\n function setSignatureValidator(address) external;\\n}\\n\",\"keccak256\":\"0xb7f615523c26de042edce98731c658f44a1edb2464387ac1b642c4c69f57128e\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/PermissionLib.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title PermissionLib\\n/// @author Aragon X - 2021-2023\\n/// @notice A library containing objects for permission processing.\\n/// @custom:security-contact sirt@aragon.org\\nlibrary PermissionLib {\\n /// @notice A constant expressing that no condition is applied to a permission.\\n address public constant NO_CONDITION = address(0);\\n\\n /// @notice The types of permission operations available in the `PermissionManager`.\\n /// @param Grant The grant operation setting a permission without a condition.\\n /// @param Revoke The revoke operation removing a permission (that was granted with or without a condition).\\n /// @param GrantWithCondition The grant operation setting a permission with a condition.\\n enum Operation {\\n Grant,\\n Revoke,\\n GrantWithCondition\\n }\\n\\n /// @notice A struct containing the information for a permission to be applied on a single target contract without a condition.\\n /// @param operation The permission operation type.\\n /// @param who The address (EOA or contract) receiving the permission.\\n /// @param permissionId The permission identifier.\\n struct SingleTargetPermission {\\n Operation operation;\\n address who;\\n bytes32 permissionId;\\n }\\n\\n /// @notice A struct containing the information for a permission to be applied on multiple target contracts, optionally, with a condition.\\n /// @param operation The permission operation type.\\n /// @param where The address of the target contract for which `who` receives permission.\\n /// @param who The address (EOA or contract) receiving the permission.\\n /// @param condition The `PermissionCondition` that will be asked for authorization on calls connected to the specified permission identifier.\\n /// @param permissionId The permission identifier.\\n struct MultiTargetPermission {\\n Operation operation;\\n address where;\\n address who;\\n address condition;\\n bytes32 permissionId;\\n }\\n}\\n\",\"keccak256\":\"0x470faf3c4891ebc6420ef6cc09f6098917568ccc79268c90954d1478199b6097\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/setup/IPluginSetup.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {PermissionLib} from \\\"../../permission/PermissionLib.sol\\\";\\n\\n// solhint-disable-next-line no-unused-import\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @title IPluginSetup\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for a plugin setup contract to be consumed by the `PluginSetupProcessor` for plugin installations, updates, and uninstallations.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IPluginSetup {\\n /// @notice The data associated with a prepared setup.\\n /// @param helpers The address array of helpers (contracts or EOAs) associated with this plugin version after the installation or update.\\n /// @param permissions The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the installing or updating DAO.\\n struct PreparedSetupData {\\n address[] helpers;\\n PermissionLib.MultiTargetPermission[] permissions;\\n }\\n\\n /// @notice The payload for plugin updates and uninstallations containing the existing contracts as well as optional data to be consumed by the plugin setup.\\n /// @param plugin The address of the `Plugin`.\\n /// @param currentHelpers The address array of all current helpers (contracts or EOAs) associated with the plugin to update from.\\n /// @param data The bytes-encoded data containing the input parameters for the preparation of update/uninstall as specified in the corresponding ABI on the version's metadata.\\n struct SetupPayload {\\n address plugin;\\n address[] currentHelpers;\\n bytes data;\\n }\\n\\n /// @notice Prepares the installation of a plugin.\\n /// @param _dao The address of the installing DAO.\\n /// @param _data The bytes-encoded data containing the input parameters for the installation as specified in the plugin's build metadata JSON file.\\n /// @return plugin The address of the `Plugin` contract being prepared for installation.\\n /// @return preparedSetupData The deployed plugin's relevant data which consists of helpers and permissions.\\n function prepareInstallation(\\n address _dao,\\n bytes calldata _data\\n ) external returns (address plugin, PreparedSetupData memory preparedSetupData);\\n\\n /// @notice Prepares the update of a plugin.\\n /// @param _dao The address of the updating DAO.\\n /// @param _fromBuild The build number of the plugin to update from.\\n /// @param _payload The relevant data necessary for the `prepareUpdate`. See above.\\n /// @return initData The initialization data to be passed to upgradeable contracts when the update is applied in the `PluginSetupProcessor`.\\n /// @return preparedSetupData The deployed plugin's relevant data which consists of helpers and permissions.\\n function prepareUpdate(\\n address _dao,\\n uint16 _fromBuild,\\n SetupPayload calldata _payload\\n ) external returns (bytes memory initData, PreparedSetupData memory preparedSetupData);\\n\\n /// @notice Prepares the uninstallation of a plugin.\\n /// @param _dao The address of the uninstalling DAO.\\n /// @param _payload The relevant data necessary for the `prepareUninstallation`. See above.\\n /// @return permissions The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the uninstalling DAO.\\n function prepareUninstallation(\\n address _dao,\\n SetupPayload calldata _payload\\n ) external returns (PermissionLib.MultiTargetPermission[] memory permissions);\\n\\n /// @notice Returns the plugin implementation address.\\n /// @return The address of the plugin implementation contract.\\n /// @dev The implementation can be instantiated via the `new` keyword, cloned via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)), or proxied via the UUPS proxy pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0x21c99995208039ac6ace219b6f273243811dc2aa66399e8e499e43ec30b82fa9\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/setup/PluginUpgradeableSetup.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ERC165} from \\\"@openzeppelin/contracts/utils/introspection/ERC165.sol\\\";\\n\\nimport {IProtocolVersion} from \\\"../../utils/versioning/IProtocolVersion.sol\\\";\\nimport {ProtocolVersion} from \\\"../../utils/versioning/ProtocolVersion.sol\\\";\\nimport {IPluginSetup} from \\\"./IPluginSetup.sol\\\";\\n\\n/// @title PluginUpgradeableSetup\\n/// @author Aragon X - 2022-2024\\n/// @notice An abstract contract to inherit from to implement the plugin setup for upgradeable plugins, i.e, `PluginUUPSUpgradeable` being deployed via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822) and [ERC-1967](https://eips.ethereum.org/EIPS/eip-1967)).\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract PluginUpgradeableSetup is ERC165, IPluginSetup, ProtocolVersion {\\n /// @notice The address of the plugin implementation contract for initial block explorer verification\\n /// and to create [ERC-1967](https://eips.ethereum.org/EIPS/eip-1967) UUPS proxies from.\\n address internal immutable IMPLEMENTATION;\\n\\n /// @notice Thrown when an update path is not available, for example, if this is the initial build.\\n /// @param fromBuild The build number to update from.\\n /// @param thisBuild The build number of this setup to update to.\\n error InvalidUpdatePath(uint16 fromBuild, uint16 thisBuild);\\n\\n /// @notice The contract constructor, that setting the plugin implementation contract.\\n /// @param _implementation The address of the plugin implementation contract.\\n constructor(address _implementation) {\\n IMPLEMENTATION = _implementation;\\n }\\n\\n /// @notice Checks if this or the parent contract supports an interface by its ID.\\n /// @param _interfaceId The ID of the interface.\\n /// @return Returns `true` if the interface is supported.\\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\\n return\\n _interfaceId == type(IPluginSetup).interfaceId ||\\n _interfaceId == type(IProtocolVersion).interfaceId ||\\n super.supportsInterface(_interfaceId);\\n }\\n\\n /// @inheritdoc IPluginSetup\\n function implementation() public view returns (address) {\\n return IMPLEMENTATION;\\n }\\n}\\n\",\"keccak256\":\"0x2842d919d1ecb4fbeb40953128c3da3b36dcf6e91255089e987c2f11ff8d061e\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/IProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IProtocolVersion\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the semantic Aragon OSx protocol version number.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IProtocolVersion {\\n /// @notice Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\\n /// @return _version Returns the semantic Aragon OSx protocol version number.\\n /// @dev This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\\n function protocolVersion() external view returns (uint8[3] memory _version);\\n}\\n\",\"keccak256\":\"0x00a4da654d21dc1bdadbdc8bd54bb86c378c56f85e461ccc31303628ea621361\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/ProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IProtocolVersion} from \\\"./IProtocolVersion.sol\\\";\\n\\n/// @title ProtocolVersion\\n/// @author Aragon X - 2023\\n/// @notice An abstract, stateless, non-upgradeable contract providing the current Aragon OSx protocol version number.\\n/// @dev Do not add any new variables to this contract that would shift down storage in the inheritance chain.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract ProtocolVersion is IProtocolVersion {\\n // IMPORTANT: Do not add any storage variable, see the above notice.\\n\\n /// @inheritdoc IProtocolVersion\\n function protocolVersion() public pure returns (uint8[3] memory) {\\n return [1, 4, 0];\\n }\\n}\\n\",\"keccak256\":\"0x3975c937be935f687c6b6b8f379071232681e98cf04b175d72781b819ea52bdb\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"errors":{"InvalidUpdatePath(uint16,uint16)":[{"notice":"Thrown when an update path is not available, for example, if this is the initial build."}]},"kind":"user","methods":{"constructor":{"notice":"The contract constructor, that setting the plugin implementation contract."},"implementation()":{"notice":"Returns the plugin implementation address."},"prepareInstallation(address,bytes)":{"notice":"Prepares the installation of a plugin."},"prepareUninstallation(address,(address,address[],bytes))":{"notice":"Prepares the uninstallation of a plugin."},"prepareUpdate(address,uint16,(address,address[],bytes))":{"notice":"Prepares the update of a plugin."},"protocolVersion()":{"notice":"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with."},"supportsInterface(bytes4)":{"notice":"Checks if this or the parent contract supports an interface by its ID."}},"notice":"An abstract contract to inherit from to implement the plugin setup for upgradeable plugins, i.e, `PluginUUPSUpgradeable` being deployed via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822) and [ERC-1967](https://eips.ethereum.org/EIPS/eip-1967)).","version":1}}},"src/utils/deployment/ProxyFactory.sol":{"ProxyFactory":{"abi":[{"inputs":[{"internalType":"address","name":"_implementation","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"proxy","type":"address"}],"name":"ProxyCreated","type":"event"},{"inputs":[{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"deployMinimalProxy","outputs":[{"internalType":"address","name":"proxy","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"deployUUPSProxy","outputs":[{"internalType":"address","name":"proxy","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"devdoc":{"author":"Aragon X - 2024","custom:security-contact":"sirt@aragon.org","events":{"ProxyCreated(address)":{"params":{"proxy":"The proxy address."}}},"kind":"dev","methods":{"constructor":{"params":{"_implementation":"The logic contract address."}},"deployMinimalProxy(bytes)":{"details":"If `_data` is non-empty, it is used in a call to the clone contract. This will typically be an encoded function call initializing the storage of the contract.","params":{"_data":"The initialization data for this contract."},"returns":{"proxy":"The address of the proxy contract created."}},"deployUUPSProxy(bytes)":{"details":"If `_data` is non-empty, it is used in a delegate call to the `_implementation` contract. This will typically be an encoded function call initializing the proxy (see [OpenZeppelin ERC1967Proxy-constructor](https://docs.openzeppelin.com/contracts/4.x/api/proxy#ERC1967Proxy-constructor-address-bytes-)).","params":{"_data":"The initialization data for this contract."},"returns":{"proxy":"The address of the proxy contract created."}},"implementation()":{"details":"The implementation can be cloned via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)), or proxied via the UUPS proxy pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).","returns":{"_0":"The address of the implementation contract."}}},"title":"ProxyFactory","version":1},"evm":{"bytecode":{"functionDebugData":{"@_14475":{"entryPoint":null,"id":14475,"parameterSlots":1,"returnSlots":0},"abi_decode_tuple_t_address_fromMemory":{"entryPoint":64,"id":null,"parameterSlots":2,"returnSlots":1}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:306:92","statements":[{"nodeType":"YulBlock","src":"6:3:92","statements":[]},{"body":{"nodeType":"YulBlock","src":"95:209:92","statements":[{"body":{"nodeType":"YulBlock","src":"141:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"150:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"153:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"143:6:92"},"nodeType":"YulFunctionCall","src":"143:12:92"},"nodeType":"YulExpressionStatement","src":"143:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"116:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"125:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"112:3:92"},"nodeType":"YulFunctionCall","src":"112:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"137:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"108:3:92"},"nodeType":"YulFunctionCall","src":"108:32:92"},"nodeType":"YulIf","src":"105:52:92"},{"nodeType":"YulVariableDeclaration","src":"166:29:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"185:9:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"179:5:92"},"nodeType":"YulFunctionCall","src":"179:16:92"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"170:5:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"258:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"267:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"270:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"260:6:92"},"nodeType":"YulFunctionCall","src":"260:12:92"},"nodeType":"YulExpressionStatement","src":"260:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"217:5:92"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"228:5:92"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"243:3:92","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"248:1:92","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"239:3:92"},"nodeType":"YulFunctionCall","src":"239:11:92"},{"kind":"number","nodeType":"YulLiteral","src":"252:1:92","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"235:3:92"},"nodeType":"YulFunctionCall","src":"235:19:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"224:3:92"},"nodeType":"YulFunctionCall","src":"224:31:92"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"214:2:92"},"nodeType":"YulFunctionCall","src":"214:42:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"207:6:92"},"nodeType":"YulFunctionCall","src":"207:50:92"},"nodeType":"YulIf","src":"204:70:92"},{"nodeType":"YulAssignment","src":"283:15:92","value":{"name":"value","nodeType":"YulIdentifier","src":"293:5:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"283:6:92"}]}]},"name":"abi_decode_tuple_t_address_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"61:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"72:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"84:6:92","type":""}],"src":"14:290:92"}]},"contents":"{\n { }\n function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := mload(headStart)\n if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n value0 := value\n }\n}","id":92,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60a060405234801561001057600080fd5b50604051610db2380380610db283398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b608051610d1b6100976000396000818160800152818160cc01526101460152610d1b6000f3fe60806040523480156200001157600080fd5b5060043610620000465760003560e01c80635c5c278b146200004b5780635c60da1b146200007e57806393042ea314620000a5575b600080fd5b620000626200005c366004620004aa565b620000bc565b6040516001600160a01b03909116815260200160405180910390f35b7f000000000000000000000000000000000000000000000000000000000000000062000062565b62000062620000b6366004620004aa565b62000136565b6000620000f36001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016836200016d565b6040516001600160a01b03821681529091507efffc2da0b561cae30d9826d37709e9421c4725faebc226cbbb7ef5fc5e73499060200160405180910390a1919050565b6000620000f36001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001683620001b1565b600082826040516200017f9062000486565b6200018c929190620005b9565b604051809103906000f080158015620001a9573d6000803e3d6000fd5b509392505050565b6000620001c7836001600160a01b0316620001ef565b825190915015620001e957620001e76001600160a01b0382168362000296565b505b92915050565b6000763d602d80600a3d3981f3363d3d373d3d3d363d730000008260601b60e81c176000526e5af43d82803e903d91602b57fd5bf38260781b17602052603760096000f090506001600160a01b038116620002915760405162461bcd60e51b815260206004820152601660248201527f455243313136373a20637265617465206661696c65640000000000000000000060448201526064015b60405180910390fd5b919050565b6060620002dc838360006040518060400160405280601e81526020017f416464726573733a206c6f772d6c6576656c2063616c6c206661696c65640000815250620002e3565b9392505050565b6060824710156200035d5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c0000000000000000000000000000000000000000000000000000606482015260840162000288565b600080866001600160a01b031685876040516200037b9190620005dd565b60006040518083038185875af1925050503d8060008114620003ba576040519150601f19603f3d011682016040523d82523d6000602084013e620003bf565b606091505b5091509150620003d287838387620003df565b925050505b949350505050565b60608315620004535782516000036200044b576001600160a01b0385163b6200044b5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640162000288565b5081620003d7565b620003d783838151156200046a5781518083602001fd5b8060405162461bcd60e51b8152600401620002889190620005fb565b6106fe806200061183390190565b634e487b7160e01b600052604160045260246000fd5b600060208284031215620004bd57600080fd5b813567ffffffffffffffff80821115620004d657600080fd5b818401915084601f830112620004eb57600080fd5b81358181111562000500576200050062000494565b604051601f8201601f19908116603f011681019083821181831017156200052b576200052b62000494565b816040528281528760208487010111156200054557600080fd5b826020860160208301376000928101602001929092525095945050505050565b60005b838110156200058257818101518382015260200162000568565b50506000910152565b60008151808452620005a581602086016020860162000565565b601f01601f19169290920160200192915050565b6001600160a01b0383168152604060208201526000620003d760408301846200058b565b60008251620005f181846020870162000565565b9190910192915050565b602081526000620002dc60208301846200058b56fe60806040526040516106fe3803806106fe83398101604081905261002291610319565b61002e82826000610035565b5050610436565b61003e8361006b565b60008251118061004b5750805b156100665761006483836100ab60201b6100291760201c565b505b505050565b610074816100d7565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606100d083836040518060600160405280602781526020016106d7602791396101a9565b9392505050565b6100ea8161022260201b6100551760201c565b6101515760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b806101887f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61023160201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6060600080856001600160a01b0316856040516101c691906103e7565b600060405180830381855af49150503d8060008114610201576040519150601f19603f3d011682016040523d82523d6000602084013e610206565b606091505b50909250905061021886838387610234565b9695505050505050565b6001600160a01b03163b151590565b90565b606083156102a357825160000361029c576001600160a01b0385163b61029c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610148565b50816102ad565b6102ad83836102b5565b949350505050565b8151156102c55781518083602001fd5b8060405162461bcd60e51b81526004016101489190610403565b634e487b7160e01b600052604160045260246000fd5b60005b838110156103105781810151838201526020016102f8565b50506000910152565b6000806040838503121561032c57600080fd5b82516001600160a01b038116811461034357600080fd5b60208401519092506001600160401b038082111561036057600080fd5b818501915085601f83011261037457600080fd5b815181811115610386576103866102df565b604051601f8201601f19908116603f011681019083821181831017156103ae576103ae6102df565b816040528281528860208487010111156103c757600080fd5b6103d88360208301602088016102f5565b80955050505050509250929050565b600082516103f98184602087016102f5565b9190910192915050565b60208152600082518060208401526104228160408501602087016102f5565b601f01601f19169190910160400192915050565b610292806104456000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b61009f565b565b606061004e838360405180606001604052806027815260200161025f602791396100c3565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e8080156100be573d6000f35b3d6000fd5b6060600080856001600160a01b0316856040516100e0919061020f565b600060405180830381855af49150503d806000811461011b576040519150601f19603f3d011682016040523d82523d6000602084013e610120565b606091505b50915091506101318683838761013b565b9695505050505050565b606083156101af5782516000036101a8576001600160a01b0385163b6101a85760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b50816101b9565b6101b983836101c1565b949350505050565b8151156101d15781518083602001fd5b8060405162461bcd60e51b815260040161019f919061022b565b60005b838110156102065781810151838201526020016101ee565b50506000910152565b600082516102218184602087016101eb565b9190910192915050565b602081526000825180602084015261024a8160408501602087016101eb565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a","opcodes":"PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0xDB2 CODESIZE SUB DUP1 PUSH2 0xDB2 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0x40 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x80 MSTORE PUSH2 0x70 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x52 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x69 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH2 0xD1B PUSH2 0x97 PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH1 0x80 ADD MSTORE DUP2 DUP2 PUSH1 0xCC ADD MSTORE PUSH2 0x146 ADD MSTORE PUSH2 0xD1B PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH3 0x46 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x5C5C278B EQ PUSH3 0x4B JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH3 0x7E JUMPI DUP1 PUSH4 0x93042EA3 EQ PUSH3 0xA5 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x62 PUSH3 0x5C CALLDATASIZE PUSH1 0x4 PUSH3 0x4AA JUMP JUMPDEST PUSH3 0xBC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH32 0x0 PUSH3 0x62 JUMP JUMPDEST PUSH3 0x62 PUSH3 0xB6 CALLDATASIZE PUSH1 0x4 PUSH3 0x4AA JUMP JUMPDEST PUSH3 0x136 JUMP JUMPDEST PUSH1 0x0 PUSH3 0xF3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP4 PUSH3 0x16D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP2 MSTORE SWAP1 SWAP2 POP PUSH31 0xFFFC2DA0B561CAE30D9826D37709E9421C4725FAEBC226CBBB7EF5FC5E7349 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0xF3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP4 PUSH3 0x1B1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH3 0x17F SWAP1 PUSH3 0x486 JUMP JUMPDEST PUSH3 0x18C SWAP3 SWAP2 SWAP1 PUSH3 0x5B9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH3 0x1A9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1C7 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH3 0x1EF JUMP JUMPDEST DUP3 MLOAD SWAP1 SWAP2 POP ISZERO PUSH3 0x1E9 JUMPI PUSH3 0x1E7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP4 PUSH3 0x296 JUMP JUMPDEST POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH23 0x3D602D80600A3D3981F3363D3D373D3D3D363D73000000 DUP3 PUSH1 0x60 SHL PUSH1 0xE8 SHR OR PUSH1 0x0 MSTORE PUSH15 0x5AF43D82803E903D91602B57FD5BF3 DUP3 PUSH1 0x78 SHL OR PUSH1 0x20 MSTORE PUSH1 0x37 PUSH1 0x9 PUSH1 0x0 CREATE SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH3 0x291 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313136373A20637265617465206661696C656400000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH3 0x2DC DUP4 DUP4 PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x416464726573733A206C6F772D6C6576656C2063616C6C206661696C65640000 DUP2 MSTORE POP PUSH3 0x2E3 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP3 SELFBALANCE LT ISZERO PUSH3 0x35D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A20696E73756666696369656E742062616C616E636520666F PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x722063616C6C0000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH3 0x288 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP8 PUSH1 0x40 MLOAD PUSH3 0x37B SWAP2 SWAP1 PUSH3 0x5DD JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH3 0x3BA JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH3 0x3BF JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH3 0x3D2 DUP8 DUP4 DUP4 DUP8 PUSH3 0x3DF JUMP JUMPDEST SWAP3 POP POP POP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH3 0x453 JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH3 0x44B JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH3 0x44B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x288 JUMP JUMPDEST POP DUP2 PUSH3 0x3D7 JUMP JUMPDEST PUSH3 0x3D7 DUP4 DUP4 DUP2 MLOAD ISZERO PUSH3 0x46A JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x288 SWAP2 SWAP1 PUSH3 0x5FB JUMP JUMPDEST PUSH2 0x6FE DUP1 PUSH3 0x611 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x4BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH3 0x4D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP5 ADD SWAP2 POP DUP5 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x4EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH3 0x500 JUMPI PUSH3 0x500 PUSH3 0x494 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH3 0x52B JUMPI PUSH3 0x52B PUSH3 0x494 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP8 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH3 0x545 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 SWAP3 DUP2 ADD PUSH1 0x20 ADD SWAP3 SWAP1 SWAP3 MSTORE POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0x582 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0x568 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH3 0x5A5 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH3 0x565 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH3 0x3D7 PUSH1 0x40 DUP4 ADD DUP5 PUSH3 0x58B JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH3 0x5F1 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH3 0x565 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH3 0x2DC PUSH1 0x20 DUP4 ADD DUP5 PUSH3 0x58B JUMP INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH2 0x6FE CODESIZE SUB DUP1 PUSH2 0x6FE DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x22 SWAP2 PUSH2 0x319 JUMP JUMPDEST PUSH2 0x2E DUP3 DUP3 PUSH1 0x0 PUSH2 0x35 JUMP JUMPDEST POP POP PUSH2 0x436 JUMP JUMPDEST PUSH2 0x3E DUP4 PUSH2 0x6B JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD GT DUP1 PUSH2 0x4B JUMPI POP DUP1 JUMPDEST ISZERO PUSH2 0x66 JUMPI PUSH2 0x64 DUP4 DUP4 PUSH2 0xAB PUSH1 0x20 SHL PUSH2 0x29 OR PUSH1 0x20 SHR JUMP JUMPDEST POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x74 DUP2 PUSH2 0xD7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xD0 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x6D7 PUSH1 0x27 SWAP2 CODECOPY PUSH2 0x1A9 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xEA DUP2 PUSH2 0x222 PUSH1 0x20 SHL PUSH2 0x55 OR PUSH1 0x20 SHR JUMP JUMPDEST PUSH2 0x151 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313936373A206E657720696D706C656D656E746174696F6E206973206E PUSH1 0x44 DUP3 ADD MSTORE PUSH13 0x1BDD08184818DBDB9D1C9858DD PUSH1 0x9A SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH2 0x188 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC PUSH1 0x0 SHL PUSH2 0x231 PUSH1 0x20 SHL PUSH2 0x64 OR PUSH1 0x20 SHR JUMP JUMPDEST DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0x1C6 SWAP2 SWAP1 PUSH2 0x3E7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x201 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x206 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x218 DUP7 DUP4 DUP4 DUP8 PUSH2 0x234 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x2A3 JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0x29C JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0x29C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x148 JUMP JUMPDEST POP DUP2 PUSH2 0x2AD JUMP JUMPDEST PUSH2 0x2AD DUP4 DUP4 PUSH2 0x2B5 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x2C5 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x148 SWAP2 SWAP1 PUSH2 0x403 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x310 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2F8 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x32C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x343 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x360 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x374 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x386 JUMPI PUSH2 0x386 PUSH2 0x2DF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x3AE JUMPI PUSH2 0x3AE PUSH2 0x2DF JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x3C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3D8 DUP4 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x2F5 JUMP JUMPDEST DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x3F9 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x2F5 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x422 DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x2F5 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x292 DUP1 PUSH2 0x445 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLDATASIZE PUSH2 0x13 JUMPI PUSH2 0x11 PUSH2 0x17 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x11 JUMPDEST PUSH2 0x27 PUSH2 0x22 PUSH2 0x67 JUMP JUMPDEST PUSH2 0x9F JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x60 PUSH2 0x4E DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x25F PUSH1 0x27 SWAP2 CODECOPY PUSH2 0xC3 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9A PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 DUP1 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE PUSH1 0x0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH2 0xBE JUMPI RETURNDATASIZE PUSH1 0x0 RETURN JUMPDEST RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0xE0 SWAP2 SWAP1 PUSH2 0x20F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x11B JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x120 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x131 DUP7 DUP4 DUP4 DUP8 PUSH2 0x13B JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x1AF JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0x1A8 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0x1A8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP DUP2 PUSH2 0x1B9 JUMP JUMPDEST PUSH2 0x1B9 DUP4 DUP4 PUSH2 0x1C1 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x1D1 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x19F SWAP2 SWAP1 PUSH2 0x22B JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x206 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1EE JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x221 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x1EB JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x24A DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x1EB JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A164 PUSH20 0x6F6C6343000811000A416464726573733A206C6F PUSH24 0x2D6C6576656C2064656C65676174652063616C6C20666169 PUSH13 0x6564A164736F6C634300081100 EXP ","sourceMap":"415:2379:84:-:0;;;847:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;894:32:84;;;415:2379;;14:290:92;84:6;137:2;125:9;116:7;112:23;108:32;105:52;;;153:1;150;143:12;105:52;179:16;;-1:-1:-1;;;;;224:31:92;;214:42;;204:70;;270:1;267;260:12;204:70;293:5;14:290;-1:-1:-1;;;14:290:92:o;:::-;415:2379:84;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_revert_9263":{"entryPoint":null,"id":9263,"parameterSlots":2,"returnSlots":0},"@clone_5295":{"entryPoint":495,"id":5295,"parameterSlots":1,"returnSlots":1},"@deployMinimalProxy_14515":{"entryPoint":310,"id":14515,"parameterSlots":1,"returnSlots":1},"@deployMinimalProxy_14592":{"entryPoint":433,"id":14592,"parameterSlots":2,"returnSlots":1},"@deployUUPSProxy_14495":{"entryPoint":188,"id":14495,"parameterSlots":1,"returnSlots":1},"@deployUUPSProxy_14563":{"entryPoint":365,"id":14563,"parameterSlots":2,"returnSlots":1},"@functionCallWithValue_9088":{"entryPoint":739,"id":9088,"parameterSlots":4,"returnSlots":1},"@functionCall_9004":{"entryPoint":662,"id":9004,"parameterSlots":2,"returnSlots":1},"@implementation_14524":{"entryPoint":null,"id":14524,"parameterSlots":0,"returnSlots":1},"@isContract_8952":{"entryPoint":null,"id":8952,"parameterSlots":1,"returnSlots":1},"@verifyCallResultFromTarget_9219":{"entryPoint":991,"id":9219,"parameterSlots":4,"returnSlots":1},"abi_decode_tuple_t_bytes_memory_ptr":{"entryPoint":1194,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_bytes":{"entryPoint":1419,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":1501,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address_t_bytes_memory_ptr__to_t_address_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":1465,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":1531,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_68ca40b61460257f14e69f48b1a4dbc812e9afc6932f127ef8084544457b3335__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"copy_memory_to_memory_with_cleanup":{"entryPoint":1381,"id":null,"parameterSlots":3,"returnSlots":0},"panic_error_0x41":{"entryPoint":1172,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:3804:92","statements":[{"nodeType":"YulBlock","src":"6:3:92","statements":[]},{"body":{"nodeType":"YulBlock","src":"46:95:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"63:1:92","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"70:3:92","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"75:10:92","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"66:3:92"},"nodeType":"YulFunctionCall","src":"66:20:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"56:6:92"},"nodeType":"YulFunctionCall","src":"56:31:92"},"nodeType":"YulExpressionStatement","src":"56:31:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"103:1:92","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"106:4:92","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"96:6:92"},"nodeType":"YulFunctionCall","src":"96:15:92"},"nodeType":"YulExpressionStatement","src":"96:15:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"127:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"130:4:92","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"120:6:92"},"nodeType":"YulFunctionCall","src":"120:15:92"},"nodeType":"YulExpressionStatement","src":"120:15:92"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"14:127:92"},{"body":{"nodeType":"YulBlock","src":"225:842:92","statements":[{"body":{"nodeType":"YulBlock","src":"271:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"280:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"283:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"273:6:92"},"nodeType":"YulFunctionCall","src":"273:12:92"},"nodeType":"YulExpressionStatement","src":"273:12:92"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"246:7:92"},{"name":"headStart","nodeType":"YulIdentifier","src":"255:9:92"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"242:3:92"},"nodeType":"YulFunctionCall","src":"242:23:92"},{"kind":"number","nodeType":"YulLiteral","src":"267:2:92","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"238:3:92"},"nodeType":"YulFunctionCall","src":"238:32:92"},"nodeType":"YulIf","src":"235:52:92"},{"nodeType":"YulVariableDeclaration","src":"296:37:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"323:9:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"310:12:92"},"nodeType":"YulFunctionCall","src":"310:23:92"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"300:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"342:28:92","value":{"kind":"number","nodeType":"YulLiteral","src":"352:18:92","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"346:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"397:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"406:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"409:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"399:6:92"},"nodeType":"YulFunctionCall","src":"399:12:92"},"nodeType":"YulExpressionStatement","src":"399:12:92"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"385:6:92"},{"name":"_1","nodeType":"YulIdentifier","src":"393:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"382:2:92"},"nodeType":"YulFunctionCall","src":"382:14:92"},"nodeType":"YulIf","src":"379:34:92"},{"nodeType":"YulVariableDeclaration","src":"422:32:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"436:9:92"},{"name":"offset","nodeType":"YulIdentifier","src":"447:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"432:3:92"},"nodeType":"YulFunctionCall","src":"432:22:92"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"426:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"502:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"511:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"514:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"504:6:92"},"nodeType":"YulFunctionCall","src":"504:12:92"},"nodeType":"YulExpressionStatement","src":"504:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"481:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"485:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"477:3:92"},"nodeType":"YulFunctionCall","src":"477:13:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"492:7:92"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"473:3:92"},"nodeType":"YulFunctionCall","src":"473:27:92"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"466:6:92"},"nodeType":"YulFunctionCall","src":"466:35:92"},"nodeType":"YulIf","src":"463:55:92"},{"nodeType":"YulVariableDeclaration","src":"527:26:92","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"550:2:92"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"537:12:92"},"nodeType":"YulFunctionCall","src":"537:16:92"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"531:2:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"576:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"578:16:92"},"nodeType":"YulFunctionCall","src":"578:18:92"},"nodeType":"YulExpressionStatement","src":"578:18:92"}]},"condition":{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"568:2:92"},{"name":"_1","nodeType":"YulIdentifier","src":"572:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"565:2:92"},"nodeType":"YulFunctionCall","src":"565:10:92"},"nodeType":"YulIf","src":"562:36:92"},{"nodeType":"YulVariableDeclaration","src":"607:17:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"621:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"617:3:92"},"nodeType":"YulFunctionCall","src":"617:7:92"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"611:2:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"633:23:92","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"653:2:92","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"647:5:92"},"nodeType":"YulFunctionCall","src":"647:9:92"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"637:6:92","type":""}]},{"nodeType":"YulVariableDeclaration","src":"665:71:92","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"687:6:92"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"711:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"715:4:92","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"707:3:92"},"nodeType":"YulFunctionCall","src":"707:13:92"},{"name":"_4","nodeType":"YulIdentifier","src":"722:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"703:3:92"},"nodeType":"YulFunctionCall","src":"703:22:92"},{"kind":"number","nodeType":"YulLiteral","src":"727:2:92","type":"","value":"63"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"699:3:92"},"nodeType":"YulFunctionCall","src":"699:31:92"},{"name":"_4","nodeType":"YulIdentifier","src":"732:2:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"695:3:92"},"nodeType":"YulFunctionCall","src":"695:40:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"683:3:92"},"nodeType":"YulFunctionCall","src":"683:53:92"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"669:10:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"795:22:92","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"797:16:92"},"nodeType":"YulFunctionCall","src":"797:18:92"},"nodeType":"YulExpressionStatement","src":"797:18:92"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"754:10:92"},{"name":"_1","nodeType":"YulIdentifier","src":"766:2:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"751:2:92"},"nodeType":"YulFunctionCall","src":"751:18:92"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"774:10:92"},{"name":"memPtr","nodeType":"YulIdentifier","src":"786:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"771:2:92"},"nodeType":"YulFunctionCall","src":"771:22:92"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"748:2:92"},"nodeType":"YulFunctionCall","src":"748:46:92"},"nodeType":"YulIf","src":"745:72:92"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"833:2:92","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"837:10:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"826:6:92"},"nodeType":"YulFunctionCall","src":"826:22:92"},"nodeType":"YulExpressionStatement","src":"826:22:92"},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"864:6:92"},{"name":"_3","nodeType":"YulIdentifier","src":"872:2:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"857:6:92"},"nodeType":"YulFunctionCall","src":"857:18:92"},"nodeType":"YulExpressionStatement","src":"857:18:92"},{"body":{"nodeType":"YulBlock","src":"921:16:92","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"930:1:92","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"933:1:92","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"923:6:92"},"nodeType":"YulFunctionCall","src":"923:12:92"},"nodeType":"YulExpressionStatement","src":"923:12:92"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"898:2:92"},{"name":"_3","nodeType":"YulIdentifier","src":"902:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"894:3:92"},"nodeType":"YulFunctionCall","src":"894:11:92"},{"kind":"number","nodeType":"YulLiteral","src":"907:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"890:3:92"},"nodeType":"YulFunctionCall","src":"890:20:92"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"912:7:92"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"887:2:92"},"nodeType":"YulFunctionCall","src":"887:33:92"},"nodeType":"YulIf","src":"884:53:92"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"963:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"971:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"959:3:92"},"nodeType":"YulFunctionCall","src":"959:15:92"},{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"980:2:92"},{"kind":"number","nodeType":"YulLiteral","src":"984:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"976:3:92"},"nodeType":"YulFunctionCall","src":"976:11:92"},{"name":"_3","nodeType":"YulIdentifier","src":"989:2:92"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"946:12:92"},"nodeType":"YulFunctionCall","src":"946:46:92"},"nodeType":"YulExpressionStatement","src":"946:46:92"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1016:6:92"},{"name":"_3","nodeType":"YulIdentifier","src":"1024:2:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1012:3:92"},"nodeType":"YulFunctionCall","src":"1012:15:92"},{"kind":"number","nodeType":"YulLiteral","src":"1029:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1008:3:92"},"nodeType":"YulFunctionCall","src":"1008:24:92"},{"kind":"number","nodeType":"YulLiteral","src":"1034:1:92","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1001:6:92"},"nodeType":"YulFunctionCall","src":"1001:35:92"},"nodeType":"YulExpressionStatement","src":"1001:35:92"},{"nodeType":"YulAssignment","src":"1045:16:92","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"1055:6:92"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1045:6:92"}]}]},"name":"abi_decode_tuple_t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"191:9:92","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"202:7:92","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"214:6:92","type":""}],"src":"146:921:92"},{"body":{"nodeType":"YulBlock","src":"1173:125:92","statements":[{"nodeType":"YulAssignment","src":"1183:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1195:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"1206:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1191:3:92"},"nodeType":"YulFunctionCall","src":"1191:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1183:4:92"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1225:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1240:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"1248:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1236:3:92"},"nodeType":"YulFunctionCall","src":"1236:55:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1218:6:92"},"nodeType":"YulFunctionCall","src":"1218:74:92"},"nodeType":"YulExpressionStatement","src":"1218:74:92"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1142:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1153:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1164:4:92","type":""}],"src":"1072:226:92"},{"body":{"nodeType":"YulBlock","src":"1369:184:92","statements":[{"nodeType":"YulVariableDeclaration","src":"1379:10:92","value":{"kind":"number","nodeType":"YulLiteral","src":"1388:1:92","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"1383:1:92","type":""}]},{"body":{"nodeType":"YulBlock","src":"1448:63:92","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"1473:3:92"},{"name":"i","nodeType":"YulIdentifier","src":"1478:1:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1469:3:92"},"nodeType":"YulFunctionCall","src":"1469:11:92"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"1492:3:92"},{"name":"i","nodeType":"YulIdentifier","src":"1497:1:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1488:3:92"},"nodeType":"YulFunctionCall","src":"1488:11:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1482:5:92"},"nodeType":"YulFunctionCall","src":"1482:18:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1462:6:92"},"nodeType":"YulFunctionCall","src":"1462:39:92"},"nodeType":"YulExpressionStatement","src":"1462:39:92"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"1409:1:92"},{"name":"length","nodeType":"YulIdentifier","src":"1412:6:92"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"1406:2:92"},"nodeType":"YulFunctionCall","src":"1406:13:92"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"1420:19:92","statements":[{"nodeType":"YulAssignment","src":"1422:15:92","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"1431:1:92"},{"kind":"number","nodeType":"YulLiteral","src":"1434:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1427:3:92"},"nodeType":"YulFunctionCall","src":"1427:10:92"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"1422:1:92"}]}]},"pre":{"nodeType":"YulBlock","src":"1402:3:92","statements":[]},"src":"1398:113:92"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"1531:3:92"},{"name":"length","nodeType":"YulIdentifier","src":"1536:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1527:3:92"},"nodeType":"YulFunctionCall","src":"1527:16:92"},{"kind":"number","nodeType":"YulLiteral","src":"1545:1:92","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1520:6:92"},"nodeType":"YulFunctionCall","src":"1520:27:92"},"nodeType":"YulExpressionStatement","src":"1520:27:92"}]},"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"1347:3:92","type":""},{"name":"dst","nodeType":"YulTypedName","src":"1352:3:92","type":""},{"name":"length","nodeType":"YulTypedName","src":"1357:6:92","type":""}],"src":"1303:250:92"},{"body":{"nodeType":"YulBlock","src":"1607:221:92","statements":[{"nodeType":"YulVariableDeclaration","src":"1617:26:92","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1637:5:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1631:5:92"},"nodeType":"YulFunctionCall","src":"1631:12:92"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"1621:6:92","type":""}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1659:3:92"},{"name":"length","nodeType":"YulIdentifier","src":"1664:6:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1652:6:92"},"nodeType":"YulFunctionCall","src":"1652:19:92"},"nodeType":"YulExpressionStatement","src":"1652:19:92"},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1719:5:92"},{"kind":"number","nodeType":"YulLiteral","src":"1726:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1715:3:92"},"nodeType":"YulFunctionCall","src":"1715:16:92"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1737:3:92"},{"kind":"number","nodeType":"YulLiteral","src":"1742:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1733:3:92"},"nodeType":"YulFunctionCall","src":"1733:14:92"},{"name":"length","nodeType":"YulIdentifier","src":"1749:6:92"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"1680:34:92"},"nodeType":"YulFunctionCall","src":"1680:76:92"},"nodeType":"YulExpressionStatement","src":"1680:76:92"},{"nodeType":"YulAssignment","src":"1765:57:92","value":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1780:3:92"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"1793:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"1801:2:92","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1789:3:92"},"nodeType":"YulFunctionCall","src":"1789:15:92"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1810:2:92","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"1806:3:92"},"nodeType":"YulFunctionCall","src":"1806:7:92"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1785:3:92"},"nodeType":"YulFunctionCall","src":"1785:29:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1776:3:92"},"nodeType":"YulFunctionCall","src":"1776:39:92"},{"kind":"number","nodeType":"YulLiteral","src":"1817:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1772:3:92"},"nodeType":"YulFunctionCall","src":"1772:50:92"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1765:3:92"}]}]},"name":"abi_encode_bytes","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1584:5:92","type":""},{"name":"pos","nodeType":"YulTypedName","src":"1591:3:92","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1599:3:92","type":""}],"src":"1558:270:92"},{"body":{"nodeType":"YulBlock","src":"1980:190:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1997:9:92"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2012:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"2020:42:92","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2008:3:92"},"nodeType":"YulFunctionCall","src":"2008:55:92"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1990:6:92"},"nodeType":"YulFunctionCall","src":"1990:74:92"},"nodeType":"YulExpressionStatement","src":"1990:74:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2084:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2095:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2080:3:92"},"nodeType":"YulFunctionCall","src":"2080:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"2100:2:92","type":"","value":"64"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2073:6:92"},"nodeType":"YulFunctionCall","src":"2073:30:92"},"nodeType":"YulExpressionStatement","src":"2073:30:92"},{"nodeType":"YulAssignment","src":"2112:52:92","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"2137:6:92"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2149:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2160:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2145:3:92"},"nodeType":"YulFunctionCall","src":"2145:18:92"}],"functionName":{"name":"abi_encode_bytes","nodeType":"YulIdentifier","src":"2120:16:92"},"nodeType":"YulFunctionCall","src":"2120:44:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2112:4:92"}]}]},"name":"abi_encode_tuple_t_address_t_bytes_memory_ptr__to_t_address_t_bytes_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1941:9:92","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1952:6:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1960:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1971:4:92","type":""}],"src":"1833:337:92"},{"body":{"nodeType":"YulBlock","src":"2349:172:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2366:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2377:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2359:6:92"},"nodeType":"YulFunctionCall","src":"2359:21:92"},"nodeType":"YulExpressionStatement","src":"2359:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2400:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2411:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2396:3:92"},"nodeType":"YulFunctionCall","src":"2396:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"2416:2:92","type":"","value":"22"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2389:6:92"},"nodeType":"YulFunctionCall","src":"2389:30:92"},"nodeType":"YulExpressionStatement","src":"2389:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2439:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2450:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2435:3:92"},"nodeType":"YulFunctionCall","src":"2435:18:92"},{"hexValue":"455243313136373a20637265617465206661696c6564","kind":"string","nodeType":"YulLiteral","src":"2455:24:92","type":"","value":"ERC1167: create failed"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2428:6:92"},"nodeType":"YulFunctionCall","src":"2428:52:92"},"nodeType":"YulExpressionStatement","src":"2428:52:92"},{"nodeType":"YulAssignment","src":"2489:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2501:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2512:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2497:3:92"},"nodeType":"YulFunctionCall","src":"2497:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2489:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_68ca40b61460257f14e69f48b1a4dbc812e9afc6932f127ef8084544457b3335__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2326:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2340:4:92","type":""}],"src":"2175:346:92"},{"body":{"nodeType":"YulBlock","src":"2700:228:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2717:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2728:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2710:6:92"},"nodeType":"YulFunctionCall","src":"2710:21:92"},"nodeType":"YulExpressionStatement","src":"2710:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2751:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2762:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2747:3:92"},"nodeType":"YulFunctionCall","src":"2747:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"2767:2:92","type":"","value":"38"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2740:6:92"},"nodeType":"YulFunctionCall","src":"2740:30:92"},"nodeType":"YulExpressionStatement","src":"2740:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2790:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2801:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2786:3:92"},"nodeType":"YulFunctionCall","src":"2786:18:92"},{"hexValue":"416464726573733a20696e73756666696369656e742062616c616e636520666f","kind":"string","nodeType":"YulLiteral","src":"2806:34:92","type":"","value":"Address: insufficient balance fo"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2779:6:92"},"nodeType":"YulFunctionCall","src":"2779:62:92"},"nodeType":"YulExpressionStatement","src":"2779:62:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2861:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2872:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2857:3:92"},"nodeType":"YulFunctionCall","src":"2857:18:92"},{"hexValue":"722063616c6c","kind":"string","nodeType":"YulLiteral","src":"2877:8:92","type":"","value":"r call"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2850:6:92"},"nodeType":"YulFunctionCall","src":"2850:36:92"},"nodeType":"YulExpressionStatement","src":"2850:36:92"},{"nodeType":"YulAssignment","src":"2895:27:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2907:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"2918:3:92","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2903:3:92"},"nodeType":"YulFunctionCall","src":"2903:19:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2895:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2677:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2691:4:92","type":""}],"src":"2526:402:92"},{"body":{"nodeType":"YulBlock","src":"3070:150:92","statements":[{"nodeType":"YulVariableDeclaration","src":"3080:27:92","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3100:6:92"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3094:5:92"},"nodeType":"YulFunctionCall","src":"3094:13:92"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"3084:6:92","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3155:6:92"},{"kind":"number","nodeType":"YulLiteral","src":"3163:4:92","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3151:3:92"},"nodeType":"YulFunctionCall","src":"3151:17:92"},{"name":"pos","nodeType":"YulIdentifier","src":"3170:3:92"},{"name":"length","nodeType":"YulIdentifier","src":"3175:6:92"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"3116:34:92"},"nodeType":"YulFunctionCall","src":"3116:66:92"},"nodeType":"YulExpressionStatement","src":"3116:66:92"},{"nodeType":"YulAssignment","src":"3191:23:92","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3202:3:92"},{"name":"length","nodeType":"YulIdentifier","src":"3207:6:92"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3198:3:92"},"nodeType":"YulFunctionCall","src":"3198:16:92"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"3191:3:92"}]}]},"name":"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"3046:3:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3051:6:92","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"3062:3:92","type":""}],"src":"2933:287:92"},{"body":{"nodeType":"YulBlock","src":"3399:179:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3416:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3427:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3409:6:92"},"nodeType":"YulFunctionCall","src":"3409:21:92"},"nodeType":"YulExpressionStatement","src":"3409:21:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3450:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3461:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3446:3:92"},"nodeType":"YulFunctionCall","src":"3446:18:92"},{"kind":"number","nodeType":"YulLiteral","src":"3466:2:92","type":"","value":"29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3439:6:92"},"nodeType":"YulFunctionCall","src":"3439:30:92"},"nodeType":"YulExpressionStatement","src":"3439:30:92"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3489:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3500:2:92","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3485:3:92"},"nodeType":"YulFunctionCall","src":"3485:18:92"},{"hexValue":"416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374","kind":"string","nodeType":"YulLiteral","src":"3505:31:92","type":"","value":"Address: call to non-contract"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3478:6:92"},"nodeType":"YulFunctionCall","src":"3478:59:92"},"nodeType":"YulExpressionStatement","src":"3478:59:92"},{"nodeType":"YulAssignment","src":"3546:26:92","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3558:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3569:2:92","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3554:3:92"},"nodeType":"YulFunctionCall","src":"3554:18:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3546:4:92"}]}]},"name":"abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3376:9:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3390:4:92","type":""}],"src":"3225:353:92"},{"body":{"nodeType":"YulBlock","src":"3704:98:92","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3721:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3732:2:92","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3714:6:92"},"nodeType":"YulFunctionCall","src":"3714:21:92"},"nodeType":"YulExpressionStatement","src":"3714:21:92"},{"nodeType":"YulAssignment","src":"3744:52:92","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3769:6:92"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3781:9:92"},{"kind":"number","nodeType":"YulLiteral","src":"3792:2:92","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3777:3:92"},"nodeType":"YulFunctionCall","src":"3777:18:92"}],"functionName":{"name":"abi_encode_bytes","nodeType":"YulIdentifier","src":"3752:16:92"},"nodeType":"YulFunctionCall","src":"3752:44:92"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3744:4:92"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3673:9:92","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3684:6:92","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3695:4:92","type":""}],"src":"3583:219:92"}]},"contents":"{\n { }\n function panic_error_0x41()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function abi_decode_tuple_t_bytes_memory_ptr(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let offset := calldataload(headStart)\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n let _2 := add(headStart, offset)\n if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n let _3 := calldataload(_2)\n if gt(_3, _1) { panic_error_0x41() }\n let _4 := not(31)\n let memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n mstore(memPtr, _3)\n if gt(add(add(_2, _3), 32), dataEnd) { revert(0, 0) }\n calldatacopy(add(memPtr, 32), add(_2, 32), _3)\n mstore(add(add(memPtr, _3), 32), 0)\n value0 := memPtr\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function copy_memory_to_memory_with_cleanup(src, dst, length)\n {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n mstore(add(dst, length), 0)\n }\n function abi_encode_bytes(value, pos) -> end\n {\n let length := mload(value)\n mstore(pos, length)\n copy_memory_to_memory_with_cleanup(add(value, 0x20), add(pos, 0x20), length)\n end := add(add(pos, and(add(length, 31), not(31))), 0x20)\n }\n function abi_encode_tuple_t_address_t_bytes_memory_ptr__to_t_address_t_bytes_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n {\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n mstore(add(headStart, 32), 64)\n tail := abi_encode_bytes(value1, add(headStart, 64))\n }\n function abi_encode_tuple_t_stringliteral_68ca40b61460257f14e69f48b1a4dbc812e9afc6932f127ef8084544457b3335__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 22)\n mstore(add(headStart, 64), \"ERC1167: create failed\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 38)\n mstore(add(headStart, 64), \"Address: insufficient balance fo\")\n mstore(add(headStart, 96), \"r call\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n {\n let length := mload(value0)\n copy_memory_to_memory_with_cleanup(add(value0, 0x20), pos, length)\n end := add(pos, length)\n }\n function abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 29)\n mstore(add(headStart, 64), \"Address: call to non-contract\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n mstore(headStart, 32)\n tail := abi_encode_bytes(value0, add(headStart, 32))\n }\n}","id":92,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{"14459":[{"length":32,"start":128},{"length":32,"start":204},{"length":32,"start":326}]},"linkReferences":{},"object":"60806040523480156200001157600080fd5b5060043610620000465760003560e01c80635c5c278b146200004b5780635c60da1b146200007e57806393042ea314620000a5575b600080fd5b620000626200005c366004620004aa565b620000bc565b6040516001600160a01b03909116815260200160405180910390f35b7f000000000000000000000000000000000000000000000000000000000000000062000062565b62000062620000b6366004620004aa565b62000136565b6000620000f36001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016836200016d565b6040516001600160a01b03821681529091507efffc2da0b561cae30d9826d37709e9421c4725faebc226cbbb7ef5fc5e73499060200160405180910390a1919050565b6000620000f36001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001683620001b1565b600082826040516200017f9062000486565b6200018c929190620005b9565b604051809103906000f080158015620001a9573d6000803e3d6000fd5b509392505050565b6000620001c7836001600160a01b0316620001ef565b825190915015620001e957620001e76001600160a01b0382168362000296565b505b92915050565b6000763d602d80600a3d3981f3363d3d373d3d3d363d730000008260601b60e81c176000526e5af43d82803e903d91602b57fd5bf38260781b17602052603760096000f090506001600160a01b038116620002915760405162461bcd60e51b815260206004820152601660248201527f455243313136373a20637265617465206661696c65640000000000000000000060448201526064015b60405180910390fd5b919050565b6060620002dc838360006040518060400160405280601e81526020017f416464726573733a206c6f772d6c6576656c2063616c6c206661696c65640000815250620002e3565b9392505050565b6060824710156200035d5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c0000000000000000000000000000000000000000000000000000606482015260840162000288565b600080866001600160a01b031685876040516200037b9190620005dd565b60006040518083038185875af1925050503d8060008114620003ba576040519150601f19603f3d011682016040523d82523d6000602084013e620003bf565b606091505b5091509150620003d287838387620003df565b925050505b949350505050565b60608315620004535782516000036200044b576001600160a01b0385163b6200044b5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640162000288565b5081620003d7565b620003d783838151156200046a5781518083602001fd5b8060405162461bcd60e51b8152600401620002889190620005fb565b6106fe806200061183390190565b634e487b7160e01b600052604160045260246000fd5b600060208284031215620004bd57600080fd5b813567ffffffffffffffff80821115620004d657600080fd5b818401915084601f830112620004eb57600080fd5b81358181111562000500576200050062000494565b604051601f8201601f19908116603f011681019083821181831017156200052b576200052b62000494565b816040528281528760208487010111156200054557600080fd5b826020860160208301376000928101602001929092525095945050505050565b60005b838110156200058257818101518382015260200162000568565b50506000910152565b60008151808452620005a581602086016020860162000565565b601f01601f19169290920160200192915050565b6001600160a01b0383168152604060208201526000620003d760408301846200058b565b60008251620005f181846020870162000565565b9190910192915050565b602081526000620002dc60208301846200058b56fe60806040526040516106fe3803806106fe83398101604081905261002291610319565b61002e82826000610035565b5050610436565b61003e8361006b565b60008251118061004b5750805b156100665761006483836100ab60201b6100291760201c565b505b505050565b610074816100d7565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606100d083836040518060600160405280602781526020016106d7602791396101a9565b9392505050565b6100ea8161022260201b6100551760201c565b6101515760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b806101887f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61023160201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6060600080856001600160a01b0316856040516101c691906103e7565b600060405180830381855af49150503d8060008114610201576040519150601f19603f3d011682016040523d82523d6000602084013e610206565b606091505b50909250905061021886838387610234565b9695505050505050565b6001600160a01b03163b151590565b90565b606083156102a357825160000361029c576001600160a01b0385163b61029c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610148565b50816102ad565b6102ad83836102b5565b949350505050565b8151156102c55781518083602001fd5b8060405162461bcd60e51b81526004016101489190610403565b634e487b7160e01b600052604160045260246000fd5b60005b838110156103105781810151838201526020016102f8565b50506000910152565b6000806040838503121561032c57600080fd5b82516001600160a01b038116811461034357600080fd5b60208401519092506001600160401b038082111561036057600080fd5b818501915085601f83011261037457600080fd5b815181811115610386576103866102df565b604051601f8201601f19908116603f011681019083821181831017156103ae576103ae6102df565b816040528281528860208487010111156103c757600080fd5b6103d88360208301602088016102f5565b80955050505050509250929050565b600082516103f98184602087016102f5565b9190910192915050565b60208152600082518060208401526104228160408501602087016102f5565b601f01601f19169190910160400192915050565b610292806104456000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b61009f565b565b606061004e838360405180606001604052806027815260200161025f602791396100c3565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e8080156100be573d6000f35b3d6000fd5b6060600080856001600160a01b0316856040516100e0919061020f565b600060405180830381855af49150503d806000811461011b576040519150601f19603f3d011682016040523d82523d6000602084013e610120565b606091505b50915091506101318683838761013b565b9695505050505050565b606083156101af5782516000036101a8576001600160a01b0385163b6101a85760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b50816101b9565b6101b983836101c1565b949350505050565b8151156101d15781518083602001fd5b8060405162461bcd60e51b815260040161019f919061022b565b60005b838110156102065781810151838201526020016101ee565b50506000910152565b600082516102218184602087016101eb565b9190910192915050565b602081526000825180602084015261024a8160408501602087016101eb565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH3 0x46 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x5C5C278B EQ PUSH3 0x4B JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH3 0x7E JUMPI DUP1 PUSH4 0x93042EA3 EQ PUSH3 0xA5 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x62 PUSH3 0x5C CALLDATASIZE PUSH1 0x4 PUSH3 0x4AA JUMP JUMPDEST PUSH3 0xBC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH32 0x0 PUSH3 0x62 JUMP JUMPDEST PUSH3 0x62 PUSH3 0xB6 CALLDATASIZE PUSH1 0x4 PUSH3 0x4AA JUMP JUMPDEST PUSH3 0x136 JUMP JUMPDEST PUSH1 0x0 PUSH3 0xF3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP4 PUSH3 0x16D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP2 MSTORE SWAP1 SWAP2 POP PUSH31 0xFFFC2DA0B561CAE30D9826D37709E9421C4725FAEBC226CBBB7EF5FC5E7349 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0xF3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP4 PUSH3 0x1B1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH3 0x17F SWAP1 PUSH3 0x486 JUMP JUMPDEST PUSH3 0x18C SWAP3 SWAP2 SWAP1 PUSH3 0x5B9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH3 0x1A9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1C7 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH3 0x1EF JUMP JUMPDEST DUP3 MLOAD SWAP1 SWAP2 POP ISZERO PUSH3 0x1E9 JUMPI PUSH3 0x1E7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP4 PUSH3 0x296 JUMP JUMPDEST POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH23 0x3D602D80600A3D3981F3363D3D373D3D3D363D73000000 DUP3 PUSH1 0x60 SHL PUSH1 0xE8 SHR OR PUSH1 0x0 MSTORE PUSH15 0x5AF43D82803E903D91602B57FD5BF3 DUP3 PUSH1 0x78 SHL OR PUSH1 0x20 MSTORE PUSH1 0x37 PUSH1 0x9 PUSH1 0x0 CREATE SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH3 0x291 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313136373A20637265617465206661696C656400000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH3 0x2DC DUP4 DUP4 PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x416464726573733A206C6F772D6C6576656C2063616C6C206661696C65640000 DUP2 MSTORE POP PUSH3 0x2E3 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP3 SELFBALANCE LT ISZERO PUSH3 0x35D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A20696E73756666696369656E742062616C616E636520666F PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x722063616C6C0000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH3 0x288 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP8 PUSH1 0x40 MLOAD PUSH3 0x37B SWAP2 SWAP1 PUSH3 0x5DD JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH3 0x3BA JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH3 0x3BF JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH3 0x3D2 DUP8 DUP4 DUP4 DUP8 PUSH3 0x3DF JUMP JUMPDEST SWAP3 POP POP POP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH3 0x453 JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH3 0x44B JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH3 0x44B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x288 JUMP JUMPDEST POP DUP2 PUSH3 0x3D7 JUMP JUMPDEST PUSH3 0x3D7 DUP4 DUP4 DUP2 MLOAD ISZERO PUSH3 0x46A JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x288 SWAP2 SWAP1 PUSH3 0x5FB JUMP JUMPDEST PUSH2 0x6FE DUP1 PUSH3 0x611 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x4BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH3 0x4D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP5 ADD SWAP2 POP DUP5 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x4EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH3 0x500 JUMPI PUSH3 0x500 PUSH3 0x494 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH3 0x52B JUMPI PUSH3 0x52B PUSH3 0x494 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP8 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH3 0x545 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 SWAP3 DUP2 ADD PUSH1 0x20 ADD SWAP3 SWAP1 SWAP3 MSTORE POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0x582 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0x568 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH3 0x5A5 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH3 0x565 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH3 0x3D7 PUSH1 0x40 DUP4 ADD DUP5 PUSH3 0x58B JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH3 0x5F1 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH3 0x565 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH3 0x2DC PUSH1 0x20 DUP4 ADD DUP5 PUSH3 0x58B JUMP INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH2 0x6FE CODESIZE SUB DUP1 PUSH2 0x6FE DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x22 SWAP2 PUSH2 0x319 JUMP JUMPDEST PUSH2 0x2E DUP3 DUP3 PUSH1 0x0 PUSH2 0x35 JUMP JUMPDEST POP POP PUSH2 0x436 JUMP JUMPDEST PUSH2 0x3E DUP4 PUSH2 0x6B JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD GT DUP1 PUSH2 0x4B JUMPI POP DUP1 JUMPDEST ISZERO PUSH2 0x66 JUMPI PUSH2 0x64 DUP4 DUP4 PUSH2 0xAB PUSH1 0x20 SHL PUSH2 0x29 OR PUSH1 0x20 SHR JUMP JUMPDEST POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x74 DUP2 PUSH2 0xD7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xD0 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x6D7 PUSH1 0x27 SWAP2 CODECOPY PUSH2 0x1A9 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xEA DUP2 PUSH2 0x222 PUSH1 0x20 SHL PUSH2 0x55 OR PUSH1 0x20 SHR JUMP JUMPDEST PUSH2 0x151 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313936373A206E657720696D706C656D656E746174696F6E206973206E PUSH1 0x44 DUP3 ADD MSTORE PUSH13 0x1BDD08184818DBDB9D1C9858DD PUSH1 0x9A SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH2 0x188 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC PUSH1 0x0 SHL PUSH2 0x231 PUSH1 0x20 SHL PUSH2 0x64 OR PUSH1 0x20 SHR JUMP JUMPDEST DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0x1C6 SWAP2 SWAP1 PUSH2 0x3E7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x201 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x206 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x218 DUP7 DUP4 DUP4 DUP8 PUSH2 0x234 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x2A3 JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0x29C JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0x29C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x148 JUMP JUMPDEST POP DUP2 PUSH2 0x2AD JUMP JUMPDEST PUSH2 0x2AD DUP4 DUP4 PUSH2 0x2B5 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x2C5 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x148 SWAP2 SWAP1 PUSH2 0x403 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x310 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2F8 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x32C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x343 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x360 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x374 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x386 JUMPI PUSH2 0x386 PUSH2 0x2DF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x3AE JUMPI PUSH2 0x3AE PUSH2 0x2DF JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x3C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3D8 DUP4 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x2F5 JUMP JUMPDEST DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x3F9 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x2F5 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x422 DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x2F5 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x292 DUP1 PUSH2 0x445 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLDATASIZE PUSH2 0x13 JUMPI PUSH2 0x11 PUSH2 0x17 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x11 JUMPDEST PUSH2 0x27 PUSH2 0x22 PUSH2 0x67 JUMP JUMPDEST PUSH2 0x9F JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x60 PUSH2 0x4E DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x25F PUSH1 0x27 SWAP2 CODECOPY PUSH2 0xC3 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9A PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 DUP1 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE PUSH1 0x0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH2 0xBE JUMPI RETURNDATASIZE PUSH1 0x0 RETURN JUMPDEST RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0xE0 SWAP2 SWAP1 PUSH2 0x20F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x11B JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x120 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x131 DUP7 DUP4 DUP4 DUP8 PUSH2 0x13B JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x1AF JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0x1A8 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0x1A8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP DUP2 PUSH2 0x1B9 JUMP JUMPDEST PUSH2 0x1B9 DUP4 DUP4 PUSH2 0x1C1 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x1D1 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x19F SWAP2 SWAP1 PUSH2 0x22B JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x206 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1EE JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x221 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x1EB JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x24A DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x1EB JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A164 PUSH20 0x6F6C6343000811000A416464726573733A206C6F PUSH24 0x2D6C6576656C2064656C65676174652063616C6C20666169 PUSH13 0x6564A164736F6C634300081100 EXP ","sourceMap":"415:2379:84:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1518:183;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;1236:55:92;;;1218:74;;1206:2;1191:18;1518:183:84;;;;;;;2698:94;2771:14;2698:94;;2150:189;;;;;;:::i;:::-;;:::i;1518:183::-;1581:13;1614:37;-1:-1:-1;;;;;1614:14:84;:30;1645:5;1614:30;:37::i;:::-;1666:28;;-1:-1:-1;;;;;1236:55:92;;1218:74;;1606:45:84;;-1:-1:-1;1666:28:84;;1206:2:92;1191:18;1666:28:84;;;;;;;1518:183;;;:::o;2150:189::-;2216:13;2249:40;-1:-1:-1;;;;;2249:14:84;:33;2283:5;2249:33;:40::i;1415:222:85:-;1524:17;1599:6;1614:13;1573:56;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1553:77:85;1415:222;-1:-1:-1;;;1415:222:85:o;2237:292::-;2349:20;2396:14;:6;-1:-1:-1;;;;;2396:12:85;;:14::i;:::-;2424:20;;2381:29;;-1:-1:-1;2424:24:85;2420:103;;2464:48;-1:-1:-1;;;;;2464:25:85;;2497:13;2464:25;:48::i;:::-;;2420:103;2237:292;;;;:::o;973:759:17:-;1030:16;1362:48;1344:14;1338:4;1334:25;1328:4;1324:36;1321:90;1315:4;1308:104;1569:32;1552:14;1546:4;1542:25;1539:63;1533:4;1526:77;1644:4;1638;1635:1;1628:21;1616:33;-1:-1:-1;;;;;;1676:22:17;;1668:57;;;;-1:-1:-1;;;1668:57:17;;2377:2:92;1668:57:17;;;2359:21:92;2416:2;2396:18;;;2389:30;2455:24;2435:18;;;2428:52;2497:18;;1668:57:17;;;;;;;;;973:759;;;:::o;3701:185:33:-;3776:12;3807:72;3829:6;3837:4;3843:1;3807:72;;;;;;;;;;;;;;;;;:21;:72::i;:::-;3800:79;3701:185;-1:-1:-1;;;3701:185:33:o;5165:446::-;5330:12;5387:5;5362:21;:30;;5354:81;;;;-1:-1:-1;;;5354:81:33;;2728:2:92;5354:81:33;;;2710:21:92;2767:2;2747:18;;;2740:30;2806:34;2786:18;;;2779:62;2877:8;2857:18;;;2850:36;2903:19;;5354:81:33;2526:402:92;5354:81:33;5446:12;5460:23;5487:6;-1:-1:-1;;;;;5487:11:33;5506:5;5513:4;5487:31;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5445:73;;;;5535:69;5562:6;5570:7;5579:10;5591:12;5535:26;:69::i;:::-;5528:76;;;;5165:446;;;;;;;:::o;7671:628::-;7851:12;7879:7;7875:418;;;7906:10;:17;7927:1;7906:22;7902:286;;-1:-1:-1;;;;;1702:19:33;;;8113:60;;;;-1:-1:-1;;;8113:60:33;;3427:2:92;8113:60:33;;;3409:21:92;3466:2;3446:18;;;3439:30;3505:31;3485:18;;;3478:59;3554:18;;8113:60:33;3225:353:92;8113:60:33;-1:-1:-1;8208:10:33;8201:17;;7875:418;8249:33;8257:10;8269:12;8980:17;;:21;8976:379;;9208:10;9202:17;9264:15;9251:10;9247:2;9243:19;9236:44;8976:379;9331:12;9324:20;;-1:-1:-1;;;9324:20:33;;;;;;;;:::i;-1:-1:-1:-;;;;;;;;:::o;14:127:92:-;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:921;214:6;267:2;255:9;246:7;242:23;238:32;235:52;;;283:1;280;273:12;235:52;323:9;310:23;352:18;393:2;385:6;382:14;379:34;;;409:1;406;399:12;379:34;447:6;436:9;432:22;422:32;;492:7;485:4;481:2;477:13;473:27;463:55;;514:1;511;504:12;463:55;550:2;537:16;572:2;568;565:10;562:36;;;578:18;;:::i;:::-;653:2;647:9;621:2;707:13;;-1:-1:-1;;703:22:92;;;727:2;699:31;695:40;683:53;;;751:18;;;771:22;;;748:46;745:72;;;797:18;;:::i;:::-;837:10;833:2;826:22;872:2;864:6;857:18;912:7;907:2;902;898;894:11;890:20;887:33;884:53;;;933:1;930;923:12;884:53;989:2;984;980;976:11;971:2;963:6;959:15;946:46;1034:1;1012:15;;;1029:2;1008:24;1001:35;;;;-1:-1:-1;1016:6:92;146:921;-1:-1:-1;;;;;146:921:92:o;1303:250::-;1388:1;1398:113;1412:6;1409:1;1406:13;1398:113;;;1488:11;;;1482:18;1469:11;;;1462:39;1434:2;1427:10;1398:113;;;-1:-1:-1;;1545:1:92;1527:16;;1520:27;1303:250::o;1558:270::-;1599:3;1637:5;1631:12;1664:6;1659:3;1652:19;1680:76;1749:6;1742:4;1737:3;1733:14;1726:4;1719:5;1715:16;1680:76;:::i;:::-;1810:2;1789:15;-1:-1:-1;;1785:29:92;1776:39;;;;1817:4;1772:50;;1558:270;-1:-1:-1;;1558:270:92:o;1833:337::-;-1:-1:-1;;;;;2012:6:92;2008:55;1997:9;1990:74;2100:2;2095;2084:9;2080:18;2073:30;1971:4;2120:44;2160:2;2149:9;2145:18;2137:6;2120:44;:::i;2933:287::-;3062:3;3100:6;3094:13;3116:66;3175:6;3170:3;3163:4;3155:6;3151:17;3116:66;:::i;:::-;3198:16;;;;;2933:287;-1:-1:-1;;2933:287:92:o;3583:219::-;3732:2;3721:9;3714:21;3695:4;3752:44;3792:2;3781:9;3777:18;3769:6;3752:44;:::i"},"gasEstimates":{"creation":{"codeDepositCost":"671000","executionCost":"infinite","totalCost":"infinite"},"external":{"deployMinimalProxy(bytes)":"infinite","deployUUPSProxy(bytes)":"infinite","implementation()":"infinite"}},"methodIdentifiers":{"deployMinimalProxy(bytes)":"93042ea3","deployUUPSProxy(bytes)":"5c5c278b","implementation()":"5c60da1b"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_implementation\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"proxy\",\"type\":\"address\"}],\"name\":\"ProxyCreated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"deployMinimalProxy\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"proxy\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"deployUUPSProxy\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"proxy\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Aragon X - 2024\",\"custom:security-contact\":\"sirt@aragon.org\",\"events\":{\"ProxyCreated(address)\":{\"params\":{\"proxy\":\"The proxy address.\"}}},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"params\":{\"_implementation\":\"The logic contract address.\"}},\"deployMinimalProxy(bytes)\":{\"details\":\"If `_data` is non-empty, it is used in a call to the clone contract. This will typically be an encoded function call initializing the storage of the contract.\",\"params\":{\"_data\":\"The initialization data for this contract.\"},\"returns\":{\"proxy\":\"The address of the proxy contract created.\"}},\"deployUUPSProxy(bytes)\":{\"details\":\"If `_data` is non-empty, it is used in a delegate call to the `_implementation` contract. This will typically be an encoded function call initializing the proxy (see [OpenZeppelin ERC1967Proxy-constructor](https://docs.openzeppelin.com/contracts/4.x/api/proxy#ERC1967Proxy-constructor-address-bytes-)).\",\"params\":{\"_data\":\"The initialization data for this contract.\"},\"returns\":{\"proxy\":\"The address of the proxy contract created.\"}},\"implementation()\":{\"details\":\"The implementation can be cloned via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)), or proxied via the UUPS proxy pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\",\"returns\":{\"_0\":\"The address of the implementation contract.\"}}},\"title\":\"ProxyFactory\",\"version\":1},\"userdoc\":{\"events\":{\"ProxyCreated(address)\":{\"notice\":\"Emitted when an proxy contract is created.\"}},\"kind\":\"user\",\"methods\":{\"constructor\":{\"notice\":\"Initializes the contract with a logic contract address.\"},\"deployMinimalProxy(bytes)\":{\"notice\":\"Creates an [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167) minimal proxy contract pointing to the pre-set logic contract.\"},\"deployUUPSProxy(bytes)\":{\"notice\":\"Creates an [ERC-1967](https://eips.ethereum.org/EIPS/eip-1967) proxy contract pointing to the pre-set logic contract.\"},\"implementation()\":{\"notice\":\"Returns the implementation contract address.\"}},\"notice\":\"A factory to deploy proxies via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)) and minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)).\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/utils/deployment/ProxyFactory.sol\":\"ProxyFactory\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/IERC1967.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (interfaces/IERC1967.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\\n *\\n * _Available since v4.8.3._\\n */\\ninterface IERC1967 {\\n /**\\n * @dev Emitted when the implementation is upgraded.\\n */\\n event Upgraded(address indexed implementation);\\n\\n /**\\n * @dev Emitted when the admin account has changed.\\n */\\n event AdminChanged(address previousAdmin, address newAdmin);\\n\\n /**\\n * @dev Emitted when the beacon is changed.\\n */\\n event BeaconUpgraded(address indexed beacon);\\n}\\n\",\"keccak256\":\"0x3cbef5ebc24b415252e2f8c0c9254555d30d9f085603b4b80d9b5ed20ab87e90\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822Proxiable {\\n /**\\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n * address.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy.\\n */\\n function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/Clones.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/Clones.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev https://eips.ethereum.org/EIPS/eip-1167[EIP 1167] is a standard for\\n * deploying minimal proxy contracts, also known as \\\"clones\\\".\\n *\\n * > To simply and cheaply clone contract functionality in an immutable way, this standard specifies\\n * > a minimal bytecode implementation that delegates all calls to a known, fixed address.\\n *\\n * The library includes functions to deploy a proxy using either `create` (traditional deployment) or `create2`\\n * (salted deterministic deployment). It also includes functions to predict the addresses of clones deployed using the\\n * deterministic method.\\n *\\n * _Available since v3.4._\\n */\\nlibrary Clones {\\n /**\\n * @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`.\\n *\\n * This function uses the create opcode, which should never revert.\\n */\\n function clone(address implementation) internal returns (address instance) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n // Cleans the upper 96 bits of the `implementation` word, then packs the first 3 bytes\\n // of the `implementation` address with the bytecode before the address.\\n mstore(0x00, or(shr(0xe8, shl(0x60, implementation)), 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000))\\n // Packs the remaining 17 bytes of `implementation` with the bytecode after the address.\\n mstore(0x20, or(shl(0x78, implementation), 0x5af43d82803e903d91602b57fd5bf3))\\n instance := create(0, 0x09, 0x37)\\n }\\n require(instance != address(0), \\\"ERC1167: create failed\\\");\\n }\\n\\n /**\\n * @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`.\\n *\\n * This function uses the create2 opcode and a `salt` to deterministically deploy\\n * the clone. Using the same `implementation` and `salt` multiple time will revert, since\\n * the clones cannot be deployed twice at the same address.\\n */\\n function cloneDeterministic(address implementation, bytes32 salt) internal returns (address instance) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n // Cleans the upper 96 bits of the `implementation` word, then packs the first 3 bytes\\n // of the `implementation` address with the bytecode before the address.\\n mstore(0x00, or(shr(0xe8, shl(0x60, implementation)), 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000))\\n // Packs the remaining 17 bytes of `implementation` with the bytecode after the address.\\n mstore(0x20, or(shl(0x78, implementation), 0x5af43d82803e903d91602b57fd5bf3))\\n instance := create2(0, 0x09, 0x37, salt)\\n }\\n require(instance != address(0), \\\"ERC1167: create2 failed\\\");\\n }\\n\\n /**\\n * @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}.\\n */\\n function predictDeterministicAddress(\\n address implementation,\\n bytes32 salt,\\n address deployer\\n ) internal pure returns (address predicted) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n let ptr := mload(0x40)\\n mstore(add(ptr, 0x38), deployer)\\n mstore(add(ptr, 0x24), 0x5af43d82803e903d91602b57fd5bf3ff)\\n mstore(add(ptr, 0x14), implementation)\\n mstore(ptr, 0x3d602d80600a3d3981f3363d3d373d3d3d363d73)\\n mstore(add(ptr, 0x58), salt)\\n mstore(add(ptr, 0x78), keccak256(add(ptr, 0x0c), 0x37))\\n predicted := keccak256(add(ptr, 0x43), 0x55)\\n }\\n }\\n\\n /**\\n * @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}.\\n */\\n function predictDeterministicAddress(\\n address implementation,\\n bytes32 salt\\n ) internal view returns (address predicted) {\\n return predictDeterministicAddress(implementation, salt, address(this));\\n }\\n}\\n\",\"keccak256\":\"0x01f055f5c26ba25d7f83e9aa9ba877fbea4d0bf22227de046ea67494bc932999\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (proxy/ERC1967/ERC1967Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../Proxy.sol\\\";\\nimport \\\"./ERC1967Upgrade.sol\\\";\\n\\n/**\\n * @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an\\n * implementation address that can be changed. This address is stored in storage in the location specified by\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the\\n * implementation behind the proxy.\\n */\\ncontract ERC1967Proxy is Proxy, ERC1967Upgrade {\\n /**\\n * @dev Initializes the upgradeable proxy with an initial implementation specified by `_logic`.\\n *\\n * If `_data` is nonempty, it's used as data in a delegate call to `_logic`. This will typically be an encoded\\n * function call, and allows initializing the storage of the proxy like a Solidity constructor.\\n */\\n constructor(address _logic, bytes memory _data) payable {\\n _upgradeToAndCall(_logic, _data, false);\\n }\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _implementation() internal view virtual override returns (address impl) {\\n return ERC1967Upgrade._getImplementation();\\n }\\n}\\n\",\"keccak256\":\"0xa2b22da3032e50b55f95ec1d13336102d675f341167aa76db571ef7f8bb7975d\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../beacon/IBeacon.sol\\\";\\nimport \\\"../../interfaces/IERC1967.sol\\\";\\nimport \\\"../../interfaces/draft-IERC1822.sol\\\";\\nimport \\\"../../utils/Address.sol\\\";\\nimport \\\"../../utils/StorageSlot.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n */\\nabstract contract ERC1967Upgrade is IERC1967 {\\n // This is the keccak-256 hash of \\\"eip1967.proxy.rollback\\\" subtracted by 1\\n bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n /**\\n * @dev Storage slot with the address of the current implementation.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _getImplementation() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 implementation slot.\\n */\\n function _setImplementation(address newImplementation) private {\\n require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n }\\n\\n /**\\n * @dev Perform implementation upgrade\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeTo(address newImplementation) internal {\\n _setImplementation(newImplementation);\\n emit Upgraded(newImplementation);\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCall(address newImplementation, bytes memory data, bool forceCall) internal {\\n _upgradeTo(newImplementation);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(newImplementation, data);\\n }\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCallUUPS(address newImplementation, bytes memory data, bool forceCall) internal {\\n // Upgrades from old implementations will perform a rollback test. This test requires the new\\n // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n // this special case will break upgrade paths from old UUPS implementation to new ones.\\n if (StorageSlot.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n _setImplementation(newImplementation);\\n } else {\\n try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n require(slot == _IMPLEMENTATION_SLOT, \\\"ERC1967Upgrade: unsupported proxiableUUID\\\");\\n } catch {\\n revert(\\\"ERC1967Upgrade: new implementation is not UUPS\\\");\\n }\\n _upgradeToAndCall(newImplementation, data, forceCall);\\n }\\n }\\n\\n /**\\n * @dev Storage slot with the admin of the contract.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _getAdmin() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_ADMIN_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 admin slot.\\n */\\n function _setAdmin(address newAdmin) private {\\n require(newAdmin != address(0), \\\"ERC1967: new admin is the zero address\\\");\\n StorageSlot.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n */\\n function _changeAdmin(address newAdmin) internal {\\n emit AdminChanged(_getAdmin(), newAdmin);\\n _setAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\\n */\\n bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n /**\\n * @dev Returns the current beacon.\\n */\\n function _getBeacon() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_BEACON_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new beacon in the EIP1967 beacon slot.\\n */\\n function _setBeacon(address newBeacon) private {\\n require(Address.isContract(newBeacon), \\\"ERC1967: new beacon is not a contract\\\");\\n require(\\n Address.isContract(IBeacon(newBeacon).implementation()),\\n \\\"ERC1967: beacon implementation is not a contract\\\"\\n );\\n StorageSlot.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n }\\n\\n /**\\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n *\\n * Emits a {BeaconUpgraded} event.\\n */\\n function _upgradeBeaconToAndCall(address newBeacon, bytes memory data, bool forceCall) internal {\\n _setBeacon(newBeacon);\\n emit BeaconUpgraded(newBeacon);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x3b21ae06bf5957f73fa16754b0669c77b7abd8ba6c072d35c3281d446fdb86c2\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (proxy/Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\\n * be specified by overriding the virtual {_implementation} function.\\n *\\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\\n * different contract through the {_delegate} function.\\n *\\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\\n */\\nabstract contract Proxy {\\n /**\\n * @dev Delegates the current call to `implementation`.\\n *\\n * This function does not return to its internal call site, it will return directly to the external caller.\\n */\\n function _delegate(address implementation) internal virtual {\\n assembly {\\n // Copy msg.data. We take full control of memory in this inline assembly\\n // block because it will not return to Solidity code. We overwrite the\\n // Solidity scratch pad at memory position 0.\\n calldatacopy(0, 0, calldatasize())\\n\\n // Call the implementation.\\n // out and outsize are 0 because we don't know the size yet.\\n let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)\\n\\n // Copy the returned data.\\n returndatacopy(0, 0, returndatasize())\\n\\n switch result\\n // delegatecall returns 0 on error.\\n case 0 {\\n revert(0, returndatasize())\\n }\\n default {\\n return(0, returndatasize())\\n }\\n }\\n }\\n\\n /**\\n * @dev This is a virtual function that should be overridden so it returns the address to which the fallback function\\n * and {_fallback} should delegate.\\n */\\n function _implementation() internal view virtual returns (address);\\n\\n /**\\n * @dev Delegates the current call to the address returned by `_implementation()`.\\n *\\n * This function does not return to its internal call site, it will return directly to the external caller.\\n */\\n function _fallback() internal virtual {\\n _beforeFallback();\\n _delegate(_implementation());\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\\n * function in the contract matches the call data.\\n */\\n fallback() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data\\n * is empty.\\n */\\n receive() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`\\n * call, or as part of the Solidity `fallback` or `receive` functions.\\n *\\n * If overridden should call `super._beforeFallback()`.\\n */\\n function _beforeFallback() internal virtual {}\\n}\\n\",\"keccak256\":\"0xc130fe33f1b2132158531a87734153293f6d07bc263ff4ac90e85da9c82c0e27\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeacon {\\n /**\\n * @dev Must return an address that can be used as a delegate call target.\\n *\\n * {BeaconProxy} will check that this address is a contract.\\n */\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/StorageSlot.sol)\\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```solidity\\n * contract ERC1967 {\\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n * function _getImplementation() internal view returns (address) {\\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n * }\\n *\\n * function _setImplementation(address newImplementation) internal {\\n * require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n * }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._\\n * _Available since v4.9 for `string`, `bytes`._\\n */\\nlibrary StorageSlot {\\n struct AddressSlot {\\n address value;\\n }\\n\\n struct BooleanSlot {\\n bool value;\\n }\\n\\n struct Bytes32Slot {\\n bytes32 value;\\n }\\n\\n struct Uint256Slot {\\n uint256 value;\\n }\\n\\n struct StringSlot {\\n string value;\\n }\\n\\n struct BytesSlot {\\n bytes value;\\n }\\n\\n /**\\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n */\\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n */\\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n */\\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n */\\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` with member `value` located at `slot`.\\n */\\n function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\\n */\\n function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` with member `value` located at `slot`.\\n */\\n function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\\n */\\n function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n}\\n\",\"keccak256\":\"0xf09e68aa0dc6722a25bc46490e8d48ed864466d17313b8a0b254c36b54e49899\",\"license\":\"MIT\"},\"src/utils/deployment/ProxyFactory.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ProxyLib} from \\\"./ProxyLib.sol\\\";\\n\\n/// @title ProxyFactory\\n/// @author Aragon X - 2024\\n/// @notice A factory to deploy proxies via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)) and minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)).\\n/// @custom:security-contact sirt@aragon.org\\ncontract ProxyFactory {\\n using ProxyLib for address;\\n /// @notice The immutable logic contract address.\\n address internal immutable IMPLEMENTATION;\\n\\n /// @notice Emitted when an proxy contract is created.\\n /// @param proxy The proxy address.\\n event ProxyCreated(address proxy);\\n\\n /// @notice Initializes the contract with a logic contract address.\\n /// @param _implementation The logic contract address.\\n constructor(address _implementation) {\\n IMPLEMENTATION = _implementation;\\n }\\n\\n /// @notice Creates an [ERC-1967](https://eips.ethereum.org/EIPS/eip-1967) proxy contract pointing to the pre-set logic contract.\\n /// @param _data The initialization data for this contract.\\n /// @return proxy The address of the proxy contract created.\\n /// @dev If `_data` is non-empty, it is used in a delegate call to the `_implementation` contract. This will typically be an encoded function call initializing the proxy (see [OpenZeppelin ERC1967Proxy-constructor](https://docs.openzeppelin.com/contracts/4.x/api/proxy#ERC1967Proxy-constructor-address-bytes-)).\\n function deployUUPSProxy(bytes memory _data) external returns (address proxy) {\\n proxy = IMPLEMENTATION.deployUUPSProxy(_data);\\n emit ProxyCreated({proxy: proxy});\\n }\\n\\n /// @notice Creates an [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167) minimal proxy contract pointing to the pre-set logic contract.\\n /// @param _data The initialization data for this contract.\\n /// @return proxy The address of the proxy contract created.\\n /// @dev If `_data` is non-empty, it is used in a call to the clone contract. This will typically be an encoded function call initializing the storage of the contract.\\n function deployMinimalProxy(bytes memory _data) external returns (address proxy) {\\n proxy = IMPLEMENTATION.deployMinimalProxy(_data);\\n emit ProxyCreated({proxy: proxy});\\n }\\n\\n /// @notice Returns the implementation contract address.\\n /// @return The address of the implementation contract.\\n /// @dev The implementation can be cloned via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)), or proxied via the UUPS proxy pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\\n function implementation() public view returns (address) {\\n return IMPLEMENTATION;\\n }\\n}\\n\",\"keccak256\":\"0xdf9be07dd3f81dc4d6b63a833e4a05f9bf2bf0d2b5bd2a9865a5c5ae32426278\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/deployment/ProxyLib.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ERC1967Proxy} from \\\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol\\\";\\nimport {Clones} from \\\"@openzeppelin/contracts/proxy/Clones.sol\\\";\\nimport {Address} from \\\"@openzeppelin/contracts/utils/Address.sol\\\";\\n\\n/// @title ProxyLib\\n/// @author Aragon X - 2024\\n/// @notice A library containing methods for the deployment of proxies via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)) and minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)).\\n/// @custom:security-contact sirt@aragon.org\\nlibrary ProxyLib {\\n using Address for address;\\n using Clones for address;\\n\\n /// @notice Creates an [ERC-1967](https://eips.ethereum.org/EIPS/eip-1967) UUPS proxy contract pointing to a logic contract and allows to immediately initialize it.\\n /// @param _logic The logic contract the proxy is pointing to.\\n /// @param _initCalldata The initialization data for this contract.\\n /// @return uupsProxy The address of the UUPS proxy contract created.\\n /// @dev If `_initCalldata` is non-empty, it is used in a delegate call to the `_logic` contract. This will typically be an encoded function call initializing the storage of the proxy (see [OpenZeppelin ERC1967Proxy-constructor](https://docs.openzeppelin.com/contracts/4.x/api/proxy#ERC1967Proxy-constructor-address-bytes-)).\\n function deployUUPSProxy(\\n address _logic,\\n bytes memory _initCalldata\\n ) internal returns (address uupsProxy) {\\n uupsProxy = address(new ERC1967Proxy({_logic: _logic, _data: _initCalldata}));\\n }\\n\\n /// @notice Creates an [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167) minimal proxy contract, also known as clones, pointing to a logic contract and allows to immediately initialize it.\\n /// @param _logic The logic contract the proxy is pointing to.\\n /// @param _initCalldata The initialization data for this contract.\\n /// @return minimalProxy The address of the minimal proxy contract created.\\n /// @dev If `_initCalldata` is non-empty, it is used in a call to the clone contract. This will typically be an encoded function call initializing the storage of the contract.\\n function deployMinimalProxy(\\n address _logic,\\n bytes memory _initCalldata\\n ) internal returns (address minimalProxy) {\\n minimalProxy = _logic.clone();\\n if (_initCalldata.length > 0) {\\n minimalProxy.functionCall({data: _initCalldata});\\n }\\n }\\n}\\n\",\"keccak256\":\"0xef0d1790dfa026381c021daa2ec7267357497f58cd4a2fa5c64e72e0dea95acc\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"events":{"ProxyCreated(address)":{"notice":"Emitted when an proxy contract is created."}},"kind":"user","methods":{"constructor":{"notice":"Initializes the contract with a logic contract address."},"deployMinimalProxy(bytes)":{"notice":"Creates an [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167) minimal proxy contract pointing to the pre-set logic contract."},"deployUUPSProxy(bytes)":{"notice":"Creates an [ERC-1967](https://eips.ethereum.org/EIPS/eip-1967) proxy contract pointing to the pre-set logic contract."},"implementation()":{"notice":"Returns the implementation contract address."}},"notice":"A factory to deploy proxies via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)) and minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)).","version":1}}},"src/utils/deployment/ProxyLib.sol":{"ProxyLib":{"abi":[],"devdoc":{"author":"Aragon X - 2024","custom:security-contact":"sirt@aragon.org","kind":"dev","methods":{},"title":"ProxyLib","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"602d6037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a","opcodes":"PUSH1 0x2D PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"618:1913:85:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;618:1913:85;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"618:1913:85:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"9000","executionCost":"94","totalCost":"9094"},"internal":{"deployMinimalProxy(address,bytes memory)":"infinite","deployUUPSProxy(address,bytes memory)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"author\":\"Aragon X - 2024\",\"custom:security-contact\":\"sirt@aragon.org\",\"kind\":\"dev\",\"methods\":{},\"title\":\"ProxyLib\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"A library containing methods for the deployment of proxies via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)) and minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)).\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/utils/deployment/ProxyLib.sol\":\"ProxyLib\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/IERC1967.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (interfaces/IERC1967.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\\n *\\n * _Available since v4.8.3._\\n */\\ninterface IERC1967 {\\n /**\\n * @dev Emitted when the implementation is upgraded.\\n */\\n event Upgraded(address indexed implementation);\\n\\n /**\\n * @dev Emitted when the admin account has changed.\\n */\\n event AdminChanged(address previousAdmin, address newAdmin);\\n\\n /**\\n * @dev Emitted when the beacon is changed.\\n */\\n event BeaconUpgraded(address indexed beacon);\\n}\\n\",\"keccak256\":\"0x3cbef5ebc24b415252e2f8c0c9254555d30d9f085603b4b80d9b5ed20ab87e90\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822Proxiable {\\n /**\\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n * address.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy.\\n */\\n function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/Clones.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/Clones.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev https://eips.ethereum.org/EIPS/eip-1167[EIP 1167] is a standard for\\n * deploying minimal proxy contracts, also known as \\\"clones\\\".\\n *\\n * > To simply and cheaply clone contract functionality in an immutable way, this standard specifies\\n * > a minimal bytecode implementation that delegates all calls to a known, fixed address.\\n *\\n * The library includes functions to deploy a proxy using either `create` (traditional deployment) or `create2`\\n * (salted deterministic deployment). It also includes functions to predict the addresses of clones deployed using the\\n * deterministic method.\\n *\\n * _Available since v3.4._\\n */\\nlibrary Clones {\\n /**\\n * @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`.\\n *\\n * This function uses the create opcode, which should never revert.\\n */\\n function clone(address implementation) internal returns (address instance) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n // Cleans the upper 96 bits of the `implementation` word, then packs the first 3 bytes\\n // of the `implementation` address with the bytecode before the address.\\n mstore(0x00, or(shr(0xe8, shl(0x60, implementation)), 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000))\\n // Packs the remaining 17 bytes of `implementation` with the bytecode after the address.\\n mstore(0x20, or(shl(0x78, implementation), 0x5af43d82803e903d91602b57fd5bf3))\\n instance := create(0, 0x09, 0x37)\\n }\\n require(instance != address(0), \\\"ERC1167: create failed\\\");\\n }\\n\\n /**\\n * @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`.\\n *\\n * This function uses the create2 opcode and a `salt` to deterministically deploy\\n * the clone. Using the same `implementation` and `salt` multiple time will revert, since\\n * the clones cannot be deployed twice at the same address.\\n */\\n function cloneDeterministic(address implementation, bytes32 salt) internal returns (address instance) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n // Cleans the upper 96 bits of the `implementation` word, then packs the first 3 bytes\\n // of the `implementation` address with the bytecode before the address.\\n mstore(0x00, or(shr(0xe8, shl(0x60, implementation)), 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000))\\n // Packs the remaining 17 bytes of `implementation` with the bytecode after the address.\\n mstore(0x20, or(shl(0x78, implementation), 0x5af43d82803e903d91602b57fd5bf3))\\n instance := create2(0, 0x09, 0x37, salt)\\n }\\n require(instance != address(0), \\\"ERC1167: create2 failed\\\");\\n }\\n\\n /**\\n * @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}.\\n */\\n function predictDeterministicAddress(\\n address implementation,\\n bytes32 salt,\\n address deployer\\n ) internal pure returns (address predicted) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n let ptr := mload(0x40)\\n mstore(add(ptr, 0x38), deployer)\\n mstore(add(ptr, 0x24), 0x5af43d82803e903d91602b57fd5bf3ff)\\n mstore(add(ptr, 0x14), implementation)\\n mstore(ptr, 0x3d602d80600a3d3981f3363d3d373d3d3d363d73)\\n mstore(add(ptr, 0x58), salt)\\n mstore(add(ptr, 0x78), keccak256(add(ptr, 0x0c), 0x37))\\n predicted := keccak256(add(ptr, 0x43), 0x55)\\n }\\n }\\n\\n /**\\n * @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}.\\n */\\n function predictDeterministicAddress(\\n address implementation,\\n bytes32 salt\\n ) internal view returns (address predicted) {\\n return predictDeterministicAddress(implementation, salt, address(this));\\n }\\n}\\n\",\"keccak256\":\"0x01f055f5c26ba25d7f83e9aa9ba877fbea4d0bf22227de046ea67494bc932999\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (proxy/ERC1967/ERC1967Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../Proxy.sol\\\";\\nimport \\\"./ERC1967Upgrade.sol\\\";\\n\\n/**\\n * @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an\\n * implementation address that can be changed. This address is stored in storage in the location specified by\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the\\n * implementation behind the proxy.\\n */\\ncontract ERC1967Proxy is Proxy, ERC1967Upgrade {\\n /**\\n * @dev Initializes the upgradeable proxy with an initial implementation specified by `_logic`.\\n *\\n * If `_data` is nonempty, it's used as data in a delegate call to `_logic`. This will typically be an encoded\\n * function call, and allows initializing the storage of the proxy like a Solidity constructor.\\n */\\n constructor(address _logic, bytes memory _data) payable {\\n _upgradeToAndCall(_logic, _data, false);\\n }\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _implementation() internal view virtual override returns (address impl) {\\n return ERC1967Upgrade._getImplementation();\\n }\\n}\\n\",\"keccak256\":\"0xa2b22da3032e50b55f95ec1d13336102d675f341167aa76db571ef7f8bb7975d\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../beacon/IBeacon.sol\\\";\\nimport \\\"../../interfaces/IERC1967.sol\\\";\\nimport \\\"../../interfaces/draft-IERC1822.sol\\\";\\nimport \\\"../../utils/Address.sol\\\";\\nimport \\\"../../utils/StorageSlot.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n */\\nabstract contract ERC1967Upgrade is IERC1967 {\\n // This is the keccak-256 hash of \\\"eip1967.proxy.rollback\\\" subtracted by 1\\n bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n /**\\n * @dev Storage slot with the address of the current implementation.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _getImplementation() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 implementation slot.\\n */\\n function _setImplementation(address newImplementation) private {\\n require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n }\\n\\n /**\\n * @dev Perform implementation upgrade\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeTo(address newImplementation) internal {\\n _setImplementation(newImplementation);\\n emit Upgraded(newImplementation);\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCall(address newImplementation, bytes memory data, bool forceCall) internal {\\n _upgradeTo(newImplementation);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(newImplementation, data);\\n }\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCallUUPS(address newImplementation, bytes memory data, bool forceCall) internal {\\n // Upgrades from old implementations will perform a rollback test. This test requires the new\\n // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n // this special case will break upgrade paths from old UUPS implementation to new ones.\\n if (StorageSlot.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n _setImplementation(newImplementation);\\n } else {\\n try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n require(slot == _IMPLEMENTATION_SLOT, \\\"ERC1967Upgrade: unsupported proxiableUUID\\\");\\n } catch {\\n revert(\\\"ERC1967Upgrade: new implementation is not UUPS\\\");\\n }\\n _upgradeToAndCall(newImplementation, data, forceCall);\\n }\\n }\\n\\n /**\\n * @dev Storage slot with the admin of the contract.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _getAdmin() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_ADMIN_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 admin slot.\\n */\\n function _setAdmin(address newAdmin) private {\\n require(newAdmin != address(0), \\\"ERC1967: new admin is the zero address\\\");\\n StorageSlot.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n */\\n function _changeAdmin(address newAdmin) internal {\\n emit AdminChanged(_getAdmin(), newAdmin);\\n _setAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\\n */\\n bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n /**\\n * @dev Returns the current beacon.\\n */\\n function _getBeacon() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_BEACON_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new beacon in the EIP1967 beacon slot.\\n */\\n function _setBeacon(address newBeacon) private {\\n require(Address.isContract(newBeacon), \\\"ERC1967: new beacon is not a contract\\\");\\n require(\\n Address.isContract(IBeacon(newBeacon).implementation()),\\n \\\"ERC1967: beacon implementation is not a contract\\\"\\n );\\n StorageSlot.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n }\\n\\n /**\\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n *\\n * Emits a {BeaconUpgraded} event.\\n */\\n function _upgradeBeaconToAndCall(address newBeacon, bytes memory data, bool forceCall) internal {\\n _setBeacon(newBeacon);\\n emit BeaconUpgraded(newBeacon);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x3b21ae06bf5957f73fa16754b0669c77b7abd8ba6c072d35c3281d446fdb86c2\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (proxy/Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\\n * be specified by overriding the virtual {_implementation} function.\\n *\\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\\n * different contract through the {_delegate} function.\\n *\\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\\n */\\nabstract contract Proxy {\\n /**\\n * @dev Delegates the current call to `implementation`.\\n *\\n * This function does not return to its internal call site, it will return directly to the external caller.\\n */\\n function _delegate(address implementation) internal virtual {\\n assembly {\\n // Copy msg.data. We take full control of memory in this inline assembly\\n // block because it will not return to Solidity code. We overwrite the\\n // Solidity scratch pad at memory position 0.\\n calldatacopy(0, 0, calldatasize())\\n\\n // Call the implementation.\\n // out and outsize are 0 because we don't know the size yet.\\n let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)\\n\\n // Copy the returned data.\\n returndatacopy(0, 0, returndatasize())\\n\\n switch result\\n // delegatecall returns 0 on error.\\n case 0 {\\n revert(0, returndatasize())\\n }\\n default {\\n return(0, returndatasize())\\n }\\n }\\n }\\n\\n /**\\n * @dev This is a virtual function that should be overridden so it returns the address to which the fallback function\\n * and {_fallback} should delegate.\\n */\\n function _implementation() internal view virtual returns (address);\\n\\n /**\\n * @dev Delegates the current call to the address returned by `_implementation()`.\\n *\\n * This function does not return to its internal call site, it will return directly to the external caller.\\n */\\n function _fallback() internal virtual {\\n _beforeFallback();\\n _delegate(_implementation());\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\\n * function in the contract matches the call data.\\n */\\n fallback() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data\\n * is empty.\\n */\\n receive() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`\\n * call, or as part of the Solidity `fallback` or `receive` functions.\\n *\\n * If overridden should call `super._beforeFallback()`.\\n */\\n function _beforeFallback() internal virtual {}\\n}\\n\",\"keccak256\":\"0xc130fe33f1b2132158531a87734153293f6d07bc263ff4ac90e85da9c82c0e27\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeacon {\\n /**\\n * @dev Must return an address that can be used as a delegate call target.\\n *\\n * {BeaconProxy} will check that this address is a contract.\\n */\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/StorageSlot.sol)\\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```solidity\\n * contract ERC1967 {\\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n * function _getImplementation() internal view returns (address) {\\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n * }\\n *\\n * function _setImplementation(address newImplementation) internal {\\n * require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n * }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._\\n * _Available since v4.9 for `string`, `bytes`._\\n */\\nlibrary StorageSlot {\\n struct AddressSlot {\\n address value;\\n }\\n\\n struct BooleanSlot {\\n bool value;\\n }\\n\\n struct Bytes32Slot {\\n bytes32 value;\\n }\\n\\n struct Uint256Slot {\\n uint256 value;\\n }\\n\\n struct StringSlot {\\n string value;\\n }\\n\\n struct BytesSlot {\\n bytes value;\\n }\\n\\n /**\\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n */\\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n */\\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n */\\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n */\\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` with member `value` located at `slot`.\\n */\\n function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\\n */\\n function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` with member `value` located at `slot`.\\n */\\n function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\\n */\\n function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n}\\n\",\"keccak256\":\"0xf09e68aa0dc6722a25bc46490e8d48ed864466d17313b8a0b254c36b54e49899\",\"license\":\"MIT\"},\"src/utils/deployment/ProxyLib.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ERC1967Proxy} from \\\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol\\\";\\nimport {Clones} from \\\"@openzeppelin/contracts/proxy/Clones.sol\\\";\\nimport {Address} from \\\"@openzeppelin/contracts/utils/Address.sol\\\";\\n\\n/// @title ProxyLib\\n/// @author Aragon X - 2024\\n/// @notice A library containing methods for the deployment of proxies via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)) and minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)).\\n/// @custom:security-contact sirt@aragon.org\\nlibrary ProxyLib {\\n using Address for address;\\n using Clones for address;\\n\\n /// @notice Creates an [ERC-1967](https://eips.ethereum.org/EIPS/eip-1967) UUPS proxy contract pointing to a logic contract and allows to immediately initialize it.\\n /// @param _logic The logic contract the proxy is pointing to.\\n /// @param _initCalldata The initialization data for this contract.\\n /// @return uupsProxy The address of the UUPS proxy contract created.\\n /// @dev If `_initCalldata` is non-empty, it is used in a delegate call to the `_logic` contract. This will typically be an encoded function call initializing the storage of the proxy (see [OpenZeppelin ERC1967Proxy-constructor](https://docs.openzeppelin.com/contracts/4.x/api/proxy#ERC1967Proxy-constructor-address-bytes-)).\\n function deployUUPSProxy(\\n address _logic,\\n bytes memory _initCalldata\\n ) internal returns (address uupsProxy) {\\n uupsProxy = address(new ERC1967Proxy({_logic: _logic, _data: _initCalldata}));\\n }\\n\\n /// @notice Creates an [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167) minimal proxy contract, also known as clones, pointing to a logic contract and allows to immediately initialize it.\\n /// @param _logic The logic contract the proxy is pointing to.\\n /// @param _initCalldata The initialization data for this contract.\\n /// @return minimalProxy The address of the minimal proxy contract created.\\n /// @dev If `_initCalldata` is non-empty, it is used in a call to the clone contract. This will typically be an encoded function call initializing the storage of the contract.\\n function deployMinimalProxy(\\n address _logic,\\n bytes memory _initCalldata\\n ) internal returns (address minimalProxy) {\\n minimalProxy = _logic.clone();\\n if (_initCalldata.length > 0) {\\n minimalProxy.functionCall({data: _initCalldata});\\n }\\n }\\n}\\n\",\"keccak256\":\"0xef0d1790dfa026381c021daa2ec7267357497f58cd4a2fa5c64e72e0dea95acc\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"notice":"A library containing methods for the deployment of proxies via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)) and minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)).","version":1}}},"src/utils/versioning/IProtocolVersion.sol":{"IProtocolVersion":{"abi":[{"inputs":[],"name":"protocolVersion","outputs":[{"internalType":"uint8[3]","name":"_version","type":"uint8[3]"}],"stateMutability":"view","type":"function"}],"devdoc":{"author":"Aragon X - 2022-2023","custom:security-contact":"sirt@aragon.org","kind":"dev","methods":{"protocolVersion()":{"details":"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.","returns":{"_version":"Returns the semantic Aragon OSx protocol version number."}}},"title":"IProtocolVersion","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"protocolVersion()":"2ae9c600"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"protocolVersion\",\"outputs\":[{\"internalType\":\"uint8[3]\",\"name\":\"_version\",\"type\":\"uint8[3]\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Aragon X - 2022-2023\",\"custom:security-contact\":\"sirt@aragon.org\",\"kind\":\"dev\",\"methods\":{\"protocolVersion()\":{\"details\":\"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\",\"returns\":{\"_version\":\"Returns the semantic Aragon OSx protocol version number.\"}}},\"title\":\"IProtocolVersion\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"protocolVersion()\":{\"notice\":\"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\"}},\"notice\":\"An interface defining the semantic Aragon OSx protocol version number.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/utils/versioning/IProtocolVersion.sol\":\"IProtocolVersion\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"src/utils/versioning/IProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IProtocolVersion\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the semantic Aragon OSx protocol version number.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IProtocolVersion {\\n /// @notice Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\\n /// @return _version Returns the semantic Aragon OSx protocol version number.\\n /// @dev This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\\n function protocolVersion() external view returns (uint8[3] memory _version);\\n}\\n\",\"keccak256\":\"0x00a4da654d21dc1bdadbdc8bd54bb86c378c56f85e461ccc31303628ea621361\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{"protocolVersion()":{"notice":"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with."}},"notice":"An interface defining the semantic Aragon OSx protocol version number.","version":1}}},"src/utils/versioning/ProtocolVersion.sol":{"ProtocolVersion":{"abi":[{"inputs":[],"name":"protocolVersion","outputs":[{"internalType":"uint8[3]","name":"","type":"uint8[3]"}],"stateMutability":"pure","type":"function"}],"devdoc":{"author":"Aragon X - 2023","custom:security-contact":"sirt@aragon.org","details":"Do not add any new variables to this contract that would shift down storage in the inheritance chain.","kind":"dev","methods":{"protocolVersion()":{"details":"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.","returns":{"_0":"Returns the semantic Aragon OSx protocol version number."}}},"title":"ProtocolVersion","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"protocolVersion()":"2ae9c600"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"protocolVersion\",\"outputs\":[{\"internalType\":\"uint8[3]\",\"name\":\"\",\"type\":\"uint8[3]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Aragon X - 2023\",\"custom:security-contact\":\"sirt@aragon.org\",\"details\":\"Do not add any new variables to this contract that would shift down storage in the inheritance chain.\",\"kind\":\"dev\",\"methods\":{\"protocolVersion()\":{\"details\":\"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\",\"returns\":{\"_0\":\"Returns the semantic Aragon OSx protocol version number.\"}}},\"title\":\"ProtocolVersion\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"protocolVersion()\":{\"notice\":\"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\"}},\"notice\":\"An abstract, stateless, non-upgradeable contract providing the current Aragon OSx protocol version number.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/utils/versioning/ProtocolVersion.sol\":\"ProtocolVersion\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"src/utils/versioning/IProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IProtocolVersion\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the semantic Aragon OSx protocol version number.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IProtocolVersion {\\n /// @notice Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\\n /// @return _version Returns the semantic Aragon OSx protocol version number.\\n /// @dev This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\\n function protocolVersion() external view returns (uint8[3] memory _version);\\n}\\n\",\"keccak256\":\"0x00a4da654d21dc1bdadbdc8bd54bb86c378c56f85e461ccc31303628ea621361\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/ProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IProtocolVersion} from \\\"./IProtocolVersion.sol\\\";\\n\\n/// @title ProtocolVersion\\n/// @author Aragon X - 2023\\n/// @notice An abstract, stateless, non-upgradeable contract providing the current Aragon OSx protocol version number.\\n/// @dev Do not add any new variables to this contract that would shift down storage in the inheritance chain.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract ProtocolVersion is IProtocolVersion {\\n // IMPORTANT: Do not add any storage variable, see the above notice.\\n\\n /// @inheritdoc IProtocolVersion\\n function protocolVersion() public pure returns (uint8[3] memory) {\\n return [1, 4, 0];\\n }\\n}\\n\",\"keccak256\":\"0x3975c937be935f687c6b6b8f379071232681e98cf04b175d72781b819ea52bdb\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{"protocolVersion()":{"notice":"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with."}},"notice":"An abstract, stateless, non-upgradeable contract providing the current Aragon OSx protocol version number.","version":1}}},"src/utils/versioning/VersionComparisonLib.sol":{"VersionComparisonLib":{"abi":[],"devdoc":{"author":"Aragon X - 2023","custom:security-contact":"sirt@aragon.org","kind":"dev","methods":{},"title":"VersionComparisonLib","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"602d6037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a","opcodes":"PUSH1 0x2D PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"297:3556:91:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;297:3556:91;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"297:3556:91:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"9000","executionCost":"94","totalCost":"9094"},"internal":{"eq(uint8[3] memory,uint8[3] memory)":"infinite","gt(uint8[3] memory,uint8[3] memory)":"infinite","gte(uint8[3] memory,uint8[3] memory)":"infinite","lt(uint8[3] memory,uint8[3] memory)":"infinite","lte(uint8[3] memory,uint8[3] memory)":"infinite","neq(uint8[3] memory,uint8[3] memory)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"author\":\"Aragon X - 2023\",\"custom:security-contact\":\"sirt@aragon.org\",\"kind\":\"dev\",\"methods\":{},\"title\":\"VersionComparisonLib\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"A library containing methods for [semantic version number](https://semver.org/spec/v2.0.0.html) comparison.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/utils/versioning/VersionComparisonLib.sol\":\"VersionComparisonLib\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"src/utils/versioning/VersionComparisonLib.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title VersionComparisonLib\\n/// @author Aragon X - 2023\\n/// @notice A library containing methods for [semantic version number](https://semver.org/spec/v2.0.0.html) comparison.\\n/// @custom:security-contact sirt@aragon.org\\nlibrary VersionComparisonLib {\\n /// @notice Equality comparator for two semantic version numbers.\\n /// @param lhs The left-hand side semantic version number.\\n /// @param rhs The right-hand side semantic version number.\\n /// @return Whether the two numbers are equal or not.\\n function eq(uint8[3] memory lhs, uint8[3] memory rhs) internal pure returns (bool) {\\n if (lhs[0] != rhs[0]) return false;\\n\\n if (lhs[1] != rhs[1]) return false;\\n\\n if (lhs[2] != rhs[2]) return false;\\n\\n return true;\\n }\\n\\n /// @notice Inequality comparator for two semantic version numbers.\\n /// @param lhs The left-hand side semantic version number.\\n /// @param rhs The right-hand side semantic version number.\\n /// @return Whether the two numbers are inequal or not.\\n function neq(uint8[3] memory lhs, uint8[3] memory rhs) internal pure returns (bool) {\\n if (lhs[0] != rhs[0]) return true;\\n\\n if (lhs[1] != rhs[1]) return true;\\n\\n if (lhs[2] != rhs[2]) return true;\\n\\n return false;\\n }\\n\\n /// @notice Less than comparator for two semantic version numbers.\\n /// @param lhs The left-hand side semantic version number.\\n /// @param rhs The right-hand side semantic version number.\\n /// @return Whether the first number is less than the second number or not.\\n function lt(uint8[3] memory lhs, uint8[3] memory rhs) internal pure returns (bool) {\\n if (lhs[0] < rhs[0]) return true;\\n if (lhs[0] > rhs[0]) return false;\\n\\n if (lhs[1] < rhs[1]) return true;\\n if (lhs[1] > rhs[1]) return false;\\n\\n if (lhs[2] < rhs[2]) return true;\\n\\n return false;\\n }\\n\\n /// @notice Less than or equal to comparator for two semantic version numbers.\\n /// @param lhs The left-hand side semantic version number.\\n /// @param rhs The right-hand side semantic version number.\\n /// @return Whether the first number is less than or equal to the second number or not.\\n function lte(uint8[3] memory lhs, uint8[3] memory rhs) internal pure returns (bool) {\\n if (lhs[0] < rhs[0]) return true;\\n if (lhs[0] > rhs[0]) return false;\\n\\n if (lhs[1] < rhs[1]) return true;\\n if (lhs[1] > rhs[1]) return false;\\n\\n if (lhs[2] <= rhs[2]) return true;\\n\\n return false;\\n }\\n\\n /// @notice Greater than comparator for two semantic version numbers.\\n /// @param lhs The left-hand side semantic version number.\\n /// @param rhs The right-hand side semantic version number.\\n /// @return Whether the first number is greater than the second number or not.\\n function gt(uint8[3] memory lhs, uint8[3] memory rhs) internal pure returns (bool) {\\n if (lhs[0] > rhs[0]) return true;\\n if (lhs[0] < rhs[0]) return false;\\n\\n if (lhs[1] > rhs[1]) return true;\\n if (lhs[1] < rhs[1]) return false;\\n\\n if (lhs[2] > rhs[2]) return true;\\n\\n return false;\\n }\\n\\n /// @notice Greater than or equal to comparator for two semantic version numbers.\\n /// @param lhs The left-hand side semantic version number.\\n /// @param rhs The right-hand side semantic version number.\\n /// @return Whether the first number is greater than or equal to the second number or not.\\n function gte(uint8[3] memory lhs, uint8[3] memory rhs) internal pure returns (bool) {\\n if (lhs[0] > rhs[0]) return true;\\n if (lhs[0] < rhs[0]) return false;\\n\\n if (lhs[1] > rhs[1]) return true;\\n if (lhs[1] < rhs[1]) return false;\\n\\n if (lhs[2] >= rhs[2]) return true;\\n\\n return false;\\n }\\n}\\n\",\"keccak256\":\"0x559ed1adc1f16900db347c5586369c8b39849b8e0bce851a2d9f73d19ec9252a\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"notice":"A library containing methods for [semantic version number](https://semver.org/spec/v2.0.0.html) comparison.","version":1}}}}}} \ No newline at end of file diff --git a/contracts/artifacts/build-info/9ac591806bb2e846e5a60f79d635058e.json b/contracts/artifacts/build-info/9ac591806bb2e846e5a60f79d635058e.json deleted file mode 100644 index 065716ef..00000000 --- a/contracts/artifacts/build-info/9ac591806bb2e846e5a60f79d635058e.json +++ /dev/null @@ -1 +0,0 @@ -{"id":"9ac591806bb2e846e5a60f79d635058e","_format":"hh-sol-build-info-1","solcVersion":"0.8.17","solcLongVersion":"0.8.17+commit.8df45f5f","input":{"language":"Solidity","sources":{"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.5.0) (interfaces/draft-IERC1822.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\n * proxy whose upgrades are fully controlled by the current implementation.\n */\ninterface IERC1822ProxiableUpgradeable {\n /**\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\n * address.\n *\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\n * function revert if invoked through a proxy.\n */\n function proxiableUUID() external view returns (bytes32);\n}\n"},"@openzeppelin/contracts-upgradeable/interfaces/IERC1967Upgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (interfaces/IERC1967.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\n *\n * _Available since v4.8.3._\n */\ninterface IERC1967Upgradeable {\n /**\n * @dev Emitted when the implementation is upgraded.\n */\n event Upgraded(address indexed implementation);\n\n /**\n * @dev Emitted when the admin account has changed.\n */\n event AdminChanged(address previousAdmin, address newAdmin);\n\n /**\n * @dev Emitted when the beacon is changed.\n */\n event BeaconUpgraded(address indexed beacon);\n}\n"},"@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\n */\ninterface IBeaconUpgradeable {\n /**\n * @dev Must return an address that can be used as a delegate call target.\n *\n * {BeaconProxy} will check that this address is a contract.\n */\n function implementation() external view returns (address);\n}\n"},"@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/ERC1967/ERC1967Upgrade.sol)\n\npragma solidity ^0.8.2;\n\nimport \"../beacon/IBeaconUpgradeable.sol\";\nimport \"../../interfaces/IERC1967Upgradeable.sol\";\nimport \"../../interfaces/draft-IERC1822Upgradeable.sol\";\nimport \"../../utils/AddressUpgradeable.sol\";\nimport \"../../utils/StorageSlotUpgradeable.sol\";\nimport {Initializable} from \"../utils/Initializable.sol\";\n\n/**\n * @dev This abstract contract provides getters and event emitting update functions for\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\n *\n * _Available since v4.1._\n */\nabstract contract ERC1967UpgradeUpgradeable is Initializable, IERC1967Upgradeable {\n // This is the keccak-256 hash of \"eip1967.proxy.rollback\" subtracted by 1\n bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\n\n /**\n * @dev Storage slot with the address of the current implementation.\n * This is the keccak-256 hash of \"eip1967.proxy.implementation\" subtracted by 1, and is\n * validated in the constructor.\n */\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n\n function __ERC1967Upgrade_init() internal onlyInitializing {\n }\n\n function __ERC1967Upgrade_init_unchained() internal onlyInitializing {\n }\n /**\n * @dev Returns the current implementation address.\n */\n function _getImplementation() internal view returns (address) {\n return StorageSlotUpgradeable.getAddressSlot(_IMPLEMENTATION_SLOT).value;\n }\n\n /**\n * @dev Stores a new address in the EIP1967 implementation slot.\n */\n function _setImplementation(address newImplementation) private {\n require(AddressUpgradeable.isContract(newImplementation), \"ERC1967: new implementation is not a contract\");\n StorageSlotUpgradeable.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\n }\n\n /**\n * @dev Perform implementation upgrade\n *\n * Emits an {Upgraded} event.\n */\n function _upgradeTo(address newImplementation) internal {\n _setImplementation(newImplementation);\n emit Upgraded(newImplementation);\n }\n\n /**\n * @dev Perform implementation upgrade with additional setup call.\n *\n * Emits an {Upgraded} event.\n */\n function _upgradeToAndCall(address newImplementation, bytes memory data, bool forceCall) internal {\n _upgradeTo(newImplementation);\n if (data.length > 0 || forceCall) {\n AddressUpgradeable.functionDelegateCall(newImplementation, data);\n }\n }\n\n /**\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\n *\n * Emits an {Upgraded} event.\n */\n function _upgradeToAndCallUUPS(address newImplementation, bytes memory data, bool forceCall) internal {\n // Upgrades from old implementations will perform a rollback test. This test requires the new\n // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\n // this special case will break upgrade paths from old UUPS implementation to new ones.\n if (StorageSlotUpgradeable.getBooleanSlot(_ROLLBACK_SLOT).value) {\n _setImplementation(newImplementation);\n } else {\n try IERC1822ProxiableUpgradeable(newImplementation).proxiableUUID() returns (bytes32 slot) {\n require(slot == _IMPLEMENTATION_SLOT, \"ERC1967Upgrade: unsupported proxiableUUID\");\n } catch {\n revert(\"ERC1967Upgrade: new implementation is not UUPS\");\n }\n _upgradeToAndCall(newImplementation, data, forceCall);\n }\n }\n\n /**\n * @dev Storage slot with the admin of the contract.\n * This is the keccak-256 hash of \"eip1967.proxy.admin\" subtracted by 1, and is\n * validated in the constructor.\n */\n bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\n\n /**\n * @dev Returns the current admin.\n */\n function _getAdmin() internal view returns (address) {\n return StorageSlotUpgradeable.getAddressSlot(_ADMIN_SLOT).value;\n }\n\n /**\n * @dev Stores a new address in the EIP1967 admin slot.\n */\n function _setAdmin(address newAdmin) private {\n require(newAdmin != address(0), \"ERC1967: new admin is the zero address\");\n StorageSlotUpgradeable.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\n }\n\n /**\n * @dev Changes the admin of the proxy.\n *\n * Emits an {AdminChanged} event.\n */\n function _changeAdmin(address newAdmin) internal {\n emit AdminChanged(_getAdmin(), newAdmin);\n _setAdmin(newAdmin);\n }\n\n /**\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\n * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\n */\n bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\n\n /**\n * @dev Returns the current beacon.\n */\n function _getBeacon() internal view returns (address) {\n return StorageSlotUpgradeable.getAddressSlot(_BEACON_SLOT).value;\n }\n\n /**\n * @dev Stores a new beacon in the EIP1967 beacon slot.\n */\n function _setBeacon(address newBeacon) private {\n require(AddressUpgradeable.isContract(newBeacon), \"ERC1967: new beacon is not a contract\");\n require(\n AddressUpgradeable.isContract(IBeaconUpgradeable(newBeacon).implementation()),\n \"ERC1967: beacon implementation is not a contract\"\n );\n StorageSlotUpgradeable.getAddressSlot(_BEACON_SLOT).value = newBeacon;\n }\n\n /**\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\n *\n * Emits a {BeaconUpgraded} event.\n */\n function _upgradeBeaconToAndCall(address newBeacon, bytes memory data, bool forceCall) internal {\n _setBeacon(newBeacon);\n emit BeaconUpgraded(newBeacon);\n if (data.length > 0 || forceCall) {\n AddressUpgradeable.functionDelegateCall(IBeaconUpgradeable(newBeacon).implementation(), data);\n }\n }\n\n /**\n * @dev This empty reserved space is put in place to allow future versions to add new\n * variables without shifting down storage in the inheritance chain.\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\n */\n uint256[50] private __gap;\n}\n"},"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\n\npragma solidity ^0.8.2;\n\nimport \"../../utils/AddressUpgradeable.sol\";\n\n/**\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\n *\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\n * reused. This mechanism prevents re-execution of each \"step\" but allows the creation of new initialization steps in\n * case an upgrade adds a module that needs to be initialized.\n *\n * For example:\n *\n * [.hljs-theme-light.nopadding]\n * ```solidity\n * contract MyToken is ERC20Upgradeable {\n * function initialize() initializer public {\n * __ERC20_init(\"MyToken\", \"MTK\");\n * }\n * }\n *\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\n * function initializeV2() reinitializer(2) public {\n * __ERC20Permit_init(\"MyToken\");\n * }\n * }\n * ```\n *\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\n *\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\n *\n * [CAUTION]\n * ====\n * Avoid leaving a contract uninitialized.\n *\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\n *\n * [.hljs-theme-light.nopadding]\n * ```\n * /// @custom:oz-upgrades-unsafe-allow constructor\n * constructor() {\n * _disableInitializers();\n * }\n * ```\n * ====\n */\nabstract contract Initializable {\n /**\n * @dev Indicates that the contract has been initialized.\n * @custom:oz-retyped-from bool\n */\n uint8 private _initialized;\n\n /**\n * @dev Indicates that the contract is in the process of being initialized.\n */\n bool private _initializing;\n\n /**\n * @dev Triggered when the contract has been initialized or reinitialized.\n */\n event Initialized(uint8 version);\n\n /**\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\n * `onlyInitializing` functions can be used to initialize parent contracts.\n *\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\n * constructor.\n *\n * Emits an {Initialized} event.\n */\n modifier initializer() {\n bool isTopLevelCall = !_initializing;\n require(\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\n \"Initializable: contract is already initialized\"\n );\n _initialized = 1;\n if (isTopLevelCall) {\n _initializing = true;\n }\n _;\n if (isTopLevelCall) {\n _initializing = false;\n emit Initialized(1);\n }\n }\n\n /**\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\n * used to initialize parent contracts.\n *\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\n * are added through upgrades and that require initialization.\n *\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\n * cannot be nested. If one is invoked in the context of another, execution will revert.\n *\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\n * a contract, executing them in the right order is up to the developer or operator.\n *\n * WARNING: setting the version to 255 will prevent any future reinitialization.\n *\n * Emits an {Initialized} event.\n */\n modifier reinitializer(uint8 version) {\n require(!_initializing && _initialized < version, \"Initializable: contract is already initialized\");\n _initialized = version;\n _initializing = true;\n _;\n _initializing = false;\n emit Initialized(version);\n }\n\n /**\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\n */\n modifier onlyInitializing() {\n require(_initializing, \"Initializable: contract is not initializing\");\n _;\n }\n\n /**\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\n * through proxies.\n *\n * Emits an {Initialized} event the first time it is successfully executed.\n */\n function _disableInitializers() internal virtual {\n require(!_initializing, \"Initializable: contract is initializing\");\n if (_initialized != type(uint8).max) {\n _initialized = type(uint8).max;\n emit Initialized(type(uint8).max);\n }\n }\n\n /**\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\n */\n function _getInitializedVersion() internal view returns (uint8) {\n return _initialized;\n }\n\n /**\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\n */\n function _isInitializing() internal view returns (bool) {\n return _initializing;\n }\n}\n"},"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/UUPSUpgradeable.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../../interfaces/draft-IERC1822Upgradeable.sol\";\nimport \"../ERC1967/ERC1967UpgradeUpgradeable.sol\";\nimport {Initializable} from \"./Initializable.sol\";\n\n/**\n * @dev An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an\n * {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy.\n *\n * A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is\n * reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing\n * `UUPSUpgradeable` with a custom implementation of upgrades.\n *\n * The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism.\n *\n * _Available since v4.1._\n */\nabstract contract UUPSUpgradeable is Initializable, IERC1822ProxiableUpgradeable, ERC1967UpgradeUpgradeable {\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable state-variable-assignment\n address private immutable __self = address(this);\n\n /**\n * @dev Check that the execution is being performed through a delegatecall call and that the execution context is\n * a proxy contract with an implementation (as defined in ERC1967) pointing to self. This should only be the case\n * for UUPS and transparent proxies that are using the current contract as their implementation. Execution of a\n * function through ERC1167 minimal proxies (clones) would not normally pass this test, but is not guaranteed to\n * fail.\n */\n modifier onlyProxy() {\n require(address(this) != __self, \"Function must be called through delegatecall\");\n require(_getImplementation() == __self, \"Function must be called through active proxy\");\n _;\n }\n\n /**\n * @dev Check that the execution is not being performed through a delegate call. This allows a function to be\n * callable on the implementing contract but not through proxies.\n */\n modifier notDelegated() {\n require(address(this) == __self, \"UUPSUpgradeable: must not be called through delegatecall\");\n _;\n }\n\n function __UUPSUpgradeable_init() internal onlyInitializing {\n }\n\n function __UUPSUpgradeable_init_unchained() internal onlyInitializing {\n }\n /**\n * @dev Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the\n * implementation. It is used to validate the implementation's compatibility when performing an upgrade.\n *\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\n * function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\n */\n function proxiableUUID() external view virtual override notDelegated returns (bytes32) {\n return _IMPLEMENTATION_SLOT;\n }\n\n /**\n * @dev Upgrade the implementation of the proxy to `newImplementation`.\n *\n * Calls {_authorizeUpgrade}.\n *\n * Emits an {Upgraded} event.\n *\n * @custom:oz-upgrades-unsafe-allow-reachable delegatecall\n */\n function upgradeTo(address newImplementation) public virtual onlyProxy {\n _authorizeUpgrade(newImplementation);\n _upgradeToAndCallUUPS(newImplementation, new bytes(0), false);\n }\n\n /**\n * @dev Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call\n * encoded in `data`.\n *\n * Calls {_authorizeUpgrade}.\n *\n * Emits an {Upgraded} event.\n *\n * @custom:oz-upgrades-unsafe-allow-reachable delegatecall\n */\n function upgradeToAndCall(address newImplementation, bytes memory data) public payable virtual onlyProxy {\n _authorizeUpgrade(newImplementation);\n _upgradeToAndCallUUPS(newImplementation, data, true);\n }\n\n /**\n * @dev Function that should revert when `msg.sender` is not authorized to upgrade the contract. Called by\n * {upgradeTo} and {upgradeToAndCall}.\n *\n * Normally, this function will use an xref:access.adoc[access control] modifier such as {Ownable-onlyOwner}.\n *\n * ```solidity\n * function _authorizeUpgrade(address) internal override onlyOwner {}\n * ```\n */\n function _authorizeUpgrade(address newImplementation) internal virtual;\n\n /**\n * @dev This empty reserved space is put in place to allow future versions to add new\n * variables without shifting down storage in the inheritance chain.\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\n */\n uint256[50] private __gap;\n}\n"},"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\n\npragma solidity ^0.8.1;\n\n/**\n * @dev Collection of functions related to the address type\n */\nlibrary AddressUpgradeable {\n /**\n * @dev Returns true if `account` is a contract.\n *\n * [IMPORTANT]\n * ====\n * It is unsafe to assume that an address for which this function returns\n * false is an externally-owned account (EOA) and not a contract.\n *\n * Among others, `isContract` will return false for the following\n * types of addresses:\n *\n * - an externally-owned account\n * - a contract in construction\n * - an address where a contract will be created\n * - an address where a contract lived, but was destroyed\n *\n * Furthermore, `isContract` will also return true if the target contract within\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\n * which only has an effect at the end of a transaction.\n * ====\n *\n * [IMPORTANT]\n * ====\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\n *\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\n * constructor.\n * ====\n */\n function isContract(address account) internal view returns (bool) {\n // This method relies on extcodesize/address.code.length, which returns 0\n // for contracts in construction, since the code is only stored at the end\n // of the constructor execution.\n\n return account.code.length > 0;\n }\n\n /**\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n * `recipient`, forwarding all available gas and reverting on errors.\n *\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\n * imposed by `transfer`, making them unable to receive funds via\n * `transfer`. {sendValue} removes this limitation.\n *\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n *\n * IMPORTANT: because control is transferred to `recipient`, care must be\n * taken to not create reentrancy vulnerabilities. Consider using\n * {ReentrancyGuard} or the\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\n */\n function sendValue(address payable recipient, uint256 amount) internal {\n require(address(this).balance >= amount, \"Address: insufficient balance\");\n\n (bool success, ) = recipient.call{value: amount}(\"\");\n require(success, \"Address: unable to send value, recipient may have reverted\");\n }\n\n /**\n * @dev Performs a Solidity function call using a low level `call`. A\n * plain `call` is an unsafe replacement for a function call: use this\n * function instead.\n *\n * If `target` reverts with a revert reason, it is bubbled up by this\n * function (like regular Solidity function calls).\n *\n * Returns the raw returned data. To convert to the expected return value,\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n *\n * Requirements:\n *\n * - `target` must be a contract.\n * - calling `target` with `data` must not revert.\n *\n * _Available since v3.1._\n */\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\n return functionCallWithValue(target, data, 0, \"Address: low-level call failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n * `errorMessage` as a fallback revert reason when `target` reverts.\n *\n * _Available since v3.1._\n */\n function functionCall(\n address target,\n bytes memory data,\n string memory errorMessage\n ) internal returns (bytes memory) {\n return functionCallWithValue(target, data, 0, errorMessage);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but also transferring `value` wei to `target`.\n *\n * Requirements:\n *\n * - the calling contract must have an ETH balance of at least `value`.\n * - the called Solidity function must be `payable`.\n *\n * _Available since v3.1._\n */\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\n return functionCallWithValue(target, data, value, \"Address: low-level call with value failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n * with `errorMessage` as a fallback revert reason when `target` reverts.\n *\n * _Available since v3.1._\n */\n function functionCallWithValue(\n address target,\n bytes memory data,\n uint256 value,\n string memory errorMessage\n ) internal returns (bytes memory) {\n require(address(this).balance >= value, \"Address: insufficient balance for call\");\n (bool success, bytes memory returndata) = target.call{value: value}(data);\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but performing a static call.\n *\n * _Available since v3.3._\n */\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\n return functionStaticCall(target, data, \"Address: low-level static call failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n * but performing a static call.\n *\n * _Available since v3.3._\n */\n function functionStaticCall(\n address target,\n bytes memory data,\n string memory errorMessage\n ) internal view returns (bytes memory) {\n (bool success, bytes memory returndata) = target.staticcall(data);\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but performing a delegate call.\n *\n * _Available since v3.4._\n */\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\n return functionDelegateCall(target, data, \"Address: low-level delegate call failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n * but performing a delegate call.\n *\n * _Available since v3.4._\n */\n function functionDelegateCall(\n address target,\n bytes memory data,\n string memory errorMessage\n ) internal returns (bytes memory) {\n (bool success, bytes memory returndata) = target.delegatecall(data);\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\n }\n\n /**\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\n *\n * _Available since v4.8._\n */\n function verifyCallResultFromTarget(\n address target,\n bool success,\n bytes memory returndata,\n string memory errorMessage\n ) internal view returns (bytes memory) {\n if (success) {\n if (returndata.length == 0) {\n // only check isContract if the call was successful and the return data is empty\n // otherwise we already know that it was a contract\n require(isContract(target), \"Address: call to non-contract\");\n }\n return returndata;\n } else {\n _revert(returndata, errorMessage);\n }\n }\n\n /**\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\n * revert reason or using the provided one.\n *\n * _Available since v4.3._\n */\n function verifyCallResult(\n bool success,\n bytes memory returndata,\n string memory errorMessage\n ) internal pure returns (bytes memory) {\n if (success) {\n return returndata;\n } else {\n _revert(returndata, errorMessage);\n }\n }\n\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\n // Look for revert reason and bubble it up if present\n if (returndata.length > 0) {\n // The easiest way to bubble the revert reason is using memory via assembly\n /// @solidity memory-safe-assembly\n assembly {\n let returndata_size := mload(returndata)\n revert(add(32, returndata), returndata_size)\n }\n } else {\n revert(errorMessage);\n }\n }\n}\n"},"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\n\npragma solidity ^0.8.0;\nimport {Initializable} from \"../proxy/utils/Initializable.sol\";\n\n/**\n * @dev Provides information about the current execution context, including the\n * sender of the transaction and its data. While these are generally available\n * via msg.sender and msg.data, they should not be accessed in such a direct\n * manner, since when dealing with meta-transactions the account sending and\n * paying for execution may not be the actual sender (as far as an application\n * is concerned).\n *\n * This contract is only required for intermediate, library-like contracts.\n */\nabstract contract ContextUpgradeable is Initializable {\n function __Context_init() internal onlyInitializing {\n }\n\n function __Context_init_unchained() internal onlyInitializing {\n }\n function _msgSender() internal view virtual returns (address) {\n return msg.sender;\n }\n\n function _msgData() internal view virtual returns (bytes calldata) {\n return msg.data;\n }\n\n function _contextSuffixLength() internal view virtual returns (uint256) {\n return 0;\n }\n\n /**\n * @dev This empty reserved space is put in place to allow future versions to add new\n * variables without shifting down storage in the inheritance chain.\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\n */\n uint256[50] private __gap;\n}\n"},"@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/Counters.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @title Counters\n * @author Matt Condon (@shrugs)\n * @dev Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number\n * of elements in a mapping, issuing ERC721 ids, or counting request ids.\n *\n * Include with `using Counters for Counters.Counter;`\n */\nlibrary CountersUpgradeable {\n struct Counter {\n // This variable should never be directly accessed by users of the library: interactions must be restricted to\n // the library's function. As of Solidity v0.5.2, this cannot be enforced, though there is a proposal to add\n // this feature: see https://github.com/ethereum/solidity/issues/4637\n uint256 _value; // default: 0\n }\n\n function current(Counter storage counter) internal view returns (uint256) {\n return counter._value;\n }\n\n function increment(Counter storage counter) internal {\n unchecked {\n counter._value += 1;\n }\n }\n\n function decrement(Counter storage counter) internal {\n uint256 value = counter._value;\n require(value > 0, \"Counter: decrement overflow\");\n unchecked {\n counter._value = value - 1;\n }\n }\n\n function reset(Counter storage counter) internal {\n counter._value = 0;\n }\n}\n"},"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\n\npragma solidity ^0.8.0;\n\nimport \"./IERC165Upgradeable.sol\";\nimport {Initializable} from \"../../proxy/utils/Initializable.sol\";\n\n/**\n * @dev Implementation of the {IERC165} interface.\n *\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\n * for the additional interface id that will be supported. For example:\n *\n * ```solidity\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\n * }\n * ```\n *\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\n */\nabstract contract ERC165Upgradeable is Initializable, IERC165Upgradeable {\n function __ERC165_init() internal onlyInitializing {\n }\n\n function __ERC165_init_unchained() internal onlyInitializing {\n }\n /**\n * @dev See {IERC165-supportsInterface}.\n */\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n return interfaceId == type(IERC165Upgradeable).interfaceId;\n }\n\n /**\n * @dev This empty reserved space is put in place to allow future versions to add new\n * variables without shifting down storage in the inheritance chain.\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\n */\n uint256[50] private __gap;\n}\n"},"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Interface of the ERC165 standard, as defined in the\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\n *\n * Implementers can declare support of contract interfaces, which can then be\n * queried by others ({ERC165Checker}).\n *\n * For an implementation, see {ERC165}.\n */\ninterface IERC165Upgradeable {\n /**\n * @dev Returns true if this contract implements the interface defined by\n * `interfaceId`. See the corresponding\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\n * to learn more about how these ids are created.\n *\n * This function call must use less than 30 000 gas.\n */\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\n}\n"},"@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/StorageSlot.sol)\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Library for reading and writing primitive types to specific storage slots.\n *\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\n * This library helps with reading and writing to such slots without the need for inline assembly.\n *\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\n *\n * Example usage to set ERC1967 implementation slot:\n * ```solidity\n * contract ERC1967 {\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n *\n * function _getImplementation() internal view returns (address) {\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\n * }\n *\n * function _setImplementation(address newImplementation) internal {\n * require(Address.isContract(newImplementation), \"ERC1967: new implementation is not a contract\");\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\n * }\n * }\n * ```\n *\n * _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._\n * _Available since v4.9 for `string`, `bytes`._\n */\nlibrary StorageSlotUpgradeable {\n struct AddressSlot {\n address value;\n }\n\n struct BooleanSlot {\n bool value;\n }\n\n struct Bytes32Slot {\n bytes32 value;\n }\n\n struct Uint256Slot {\n uint256 value;\n }\n\n struct StringSlot {\n string value;\n }\n\n struct BytesSlot {\n bytes value;\n }\n\n /**\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\n */\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\n */\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\n */\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\n */\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `StringSlot` with member `value` located at `slot`.\n */\n function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\n */\n function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := store.slot\n }\n }\n\n /**\n * @dev Returns an `BytesSlot` with member `value` located at `slot`.\n */\n function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\n */\n function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := store.slot\n }\n }\n}\n"},"@openzeppelin/contracts/interfaces/draft-IERC1822.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.5.0) (interfaces/draft-IERC1822.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\n * proxy whose upgrades are fully controlled by the current implementation.\n */\ninterface IERC1822Proxiable {\n /**\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\n * address.\n *\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\n * function revert if invoked through a proxy.\n */\n function proxiableUUID() external view returns (bytes32);\n}\n"},"@openzeppelin/contracts/interfaces/IERC1967.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (interfaces/IERC1967.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\n *\n * _Available since v4.8.3._\n */\ninterface IERC1967 {\n /**\n * @dev Emitted when the implementation is upgraded.\n */\n event Upgraded(address indexed implementation);\n\n /**\n * @dev Emitted when the admin account has changed.\n */\n event AdminChanged(address previousAdmin, address newAdmin);\n\n /**\n * @dev Emitted when the beacon is changed.\n */\n event BeaconUpgraded(address indexed beacon);\n}\n"},"@openzeppelin/contracts/proxy/beacon/IBeacon.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\n */\ninterface IBeacon {\n /**\n * @dev Must return an address that can be used as a delegate call target.\n *\n * {BeaconProxy} will check that this address is a contract.\n */\n function implementation() external view returns (address);\n}\n"},"@openzeppelin/contracts/proxy/Clones.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/Clones.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev https://eips.ethereum.org/EIPS/eip-1167[EIP 1167] is a standard for\n * deploying minimal proxy contracts, also known as \"clones\".\n *\n * > To simply and cheaply clone contract functionality in an immutable way, this standard specifies\n * > a minimal bytecode implementation that delegates all calls to a known, fixed address.\n *\n * The library includes functions to deploy a proxy using either `create` (traditional deployment) or `create2`\n * (salted deterministic deployment). It also includes functions to predict the addresses of clones deployed using the\n * deterministic method.\n *\n * _Available since v3.4._\n */\nlibrary Clones {\n /**\n * @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`.\n *\n * This function uses the create opcode, which should never revert.\n */\n function clone(address implementation) internal returns (address instance) {\n /// @solidity memory-safe-assembly\n assembly {\n // Cleans the upper 96 bits of the `implementation` word, then packs the first 3 bytes\n // of the `implementation` address with the bytecode before the address.\n mstore(0x00, or(shr(0xe8, shl(0x60, implementation)), 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000))\n // Packs the remaining 17 bytes of `implementation` with the bytecode after the address.\n mstore(0x20, or(shl(0x78, implementation), 0x5af43d82803e903d91602b57fd5bf3))\n instance := create(0, 0x09, 0x37)\n }\n require(instance != address(0), \"ERC1167: create failed\");\n }\n\n /**\n * @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`.\n *\n * This function uses the create2 opcode and a `salt` to deterministically deploy\n * the clone. Using the same `implementation` and `salt` multiple time will revert, since\n * the clones cannot be deployed twice at the same address.\n */\n function cloneDeterministic(address implementation, bytes32 salt) internal returns (address instance) {\n /// @solidity memory-safe-assembly\n assembly {\n // Cleans the upper 96 bits of the `implementation` word, then packs the first 3 bytes\n // of the `implementation` address with the bytecode before the address.\n mstore(0x00, or(shr(0xe8, shl(0x60, implementation)), 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000))\n // Packs the remaining 17 bytes of `implementation` with the bytecode after the address.\n mstore(0x20, or(shl(0x78, implementation), 0x5af43d82803e903d91602b57fd5bf3))\n instance := create2(0, 0x09, 0x37, salt)\n }\n require(instance != address(0), \"ERC1167: create2 failed\");\n }\n\n /**\n * @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}.\n */\n function predictDeterministicAddress(\n address implementation,\n bytes32 salt,\n address deployer\n ) internal pure returns (address predicted) {\n /// @solidity memory-safe-assembly\n assembly {\n let ptr := mload(0x40)\n mstore(add(ptr, 0x38), deployer)\n mstore(add(ptr, 0x24), 0x5af43d82803e903d91602b57fd5bf3ff)\n mstore(add(ptr, 0x14), implementation)\n mstore(ptr, 0x3d602d80600a3d3981f3363d3d373d3d3d363d73)\n mstore(add(ptr, 0x58), salt)\n mstore(add(ptr, 0x78), keccak256(add(ptr, 0x0c), 0x37))\n predicted := keccak256(add(ptr, 0x43), 0x55)\n }\n }\n\n /**\n * @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}.\n */\n function predictDeterministicAddress(\n address implementation,\n bytes32 salt\n ) internal view returns (address predicted) {\n return predictDeterministicAddress(implementation, salt, address(this));\n }\n}\n"},"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.7.0) (proxy/ERC1967/ERC1967Proxy.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../Proxy.sol\";\nimport \"./ERC1967Upgrade.sol\";\n\n/**\n * @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an\n * implementation address that can be changed. This address is stored in storage in the location specified by\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the\n * implementation behind the proxy.\n */\ncontract ERC1967Proxy is Proxy, ERC1967Upgrade {\n /**\n * @dev Initializes the upgradeable proxy with an initial implementation specified by `_logic`.\n *\n * If `_data` is nonempty, it's used as data in a delegate call to `_logic`. This will typically be an encoded\n * function call, and allows initializing the storage of the proxy like a Solidity constructor.\n */\n constructor(address _logic, bytes memory _data) payable {\n _upgradeToAndCall(_logic, _data, false);\n }\n\n /**\n * @dev Returns the current implementation address.\n */\n function _implementation() internal view virtual override returns (address impl) {\n return ERC1967Upgrade._getImplementation();\n }\n}\n"},"@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/ERC1967/ERC1967Upgrade.sol)\n\npragma solidity ^0.8.2;\n\nimport \"../beacon/IBeacon.sol\";\nimport \"../../interfaces/IERC1967.sol\";\nimport \"../../interfaces/draft-IERC1822.sol\";\nimport \"../../utils/Address.sol\";\nimport \"../../utils/StorageSlot.sol\";\n\n/**\n * @dev This abstract contract provides getters and event emitting update functions for\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\n *\n * _Available since v4.1._\n */\nabstract contract ERC1967Upgrade is IERC1967 {\n // This is the keccak-256 hash of \"eip1967.proxy.rollback\" subtracted by 1\n bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\n\n /**\n * @dev Storage slot with the address of the current implementation.\n * This is the keccak-256 hash of \"eip1967.proxy.implementation\" subtracted by 1, and is\n * validated in the constructor.\n */\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n\n /**\n * @dev Returns the current implementation address.\n */\n function _getImplementation() internal view returns (address) {\n return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\n }\n\n /**\n * @dev Stores a new address in the EIP1967 implementation slot.\n */\n function _setImplementation(address newImplementation) private {\n require(Address.isContract(newImplementation), \"ERC1967: new implementation is not a contract\");\n StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\n }\n\n /**\n * @dev Perform implementation upgrade\n *\n * Emits an {Upgraded} event.\n */\n function _upgradeTo(address newImplementation) internal {\n _setImplementation(newImplementation);\n emit Upgraded(newImplementation);\n }\n\n /**\n * @dev Perform implementation upgrade with additional setup call.\n *\n * Emits an {Upgraded} event.\n */\n function _upgradeToAndCall(address newImplementation, bytes memory data, bool forceCall) internal {\n _upgradeTo(newImplementation);\n if (data.length > 0 || forceCall) {\n Address.functionDelegateCall(newImplementation, data);\n }\n }\n\n /**\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\n *\n * Emits an {Upgraded} event.\n */\n function _upgradeToAndCallUUPS(address newImplementation, bytes memory data, bool forceCall) internal {\n // Upgrades from old implementations will perform a rollback test. This test requires the new\n // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\n // this special case will break upgrade paths from old UUPS implementation to new ones.\n if (StorageSlot.getBooleanSlot(_ROLLBACK_SLOT).value) {\n _setImplementation(newImplementation);\n } else {\n try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\n require(slot == _IMPLEMENTATION_SLOT, \"ERC1967Upgrade: unsupported proxiableUUID\");\n } catch {\n revert(\"ERC1967Upgrade: new implementation is not UUPS\");\n }\n _upgradeToAndCall(newImplementation, data, forceCall);\n }\n }\n\n /**\n * @dev Storage slot with the admin of the contract.\n * This is the keccak-256 hash of \"eip1967.proxy.admin\" subtracted by 1, and is\n * validated in the constructor.\n */\n bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\n\n /**\n * @dev Returns the current admin.\n */\n function _getAdmin() internal view returns (address) {\n return StorageSlot.getAddressSlot(_ADMIN_SLOT).value;\n }\n\n /**\n * @dev Stores a new address in the EIP1967 admin slot.\n */\n function _setAdmin(address newAdmin) private {\n require(newAdmin != address(0), \"ERC1967: new admin is the zero address\");\n StorageSlot.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\n }\n\n /**\n * @dev Changes the admin of the proxy.\n *\n * Emits an {AdminChanged} event.\n */\n function _changeAdmin(address newAdmin) internal {\n emit AdminChanged(_getAdmin(), newAdmin);\n _setAdmin(newAdmin);\n }\n\n /**\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\n * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\n */\n bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\n\n /**\n * @dev Returns the current beacon.\n */\n function _getBeacon() internal view returns (address) {\n return StorageSlot.getAddressSlot(_BEACON_SLOT).value;\n }\n\n /**\n * @dev Stores a new beacon in the EIP1967 beacon slot.\n */\n function _setBeacon(address newBeacon) private {\n require(Address.isContract(newBeacon), \"ERC1967: new beacon is not a contract\");\n require(\n Address.isContract(IBeacon(newBeacon).implementation()),\n \"ERC1967: beacon implementation is not a contract\"\n );\n StorageSlot.getAddressSlot(_BEACON_SLOT).value = newBeacon;\n }\n\n /**\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\n *\n * Emits a {BeaconUpgraded} event.\n */\n function _upgradeBeaconToAndCall(address newBeacon, bytes memory data, bool forceCall) internal {\n _setBeacon(newBeacon);\n emit BeaconUpgraded(newBeacon);\n if (data.length > 0 || forceCall) {\n Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\n }\n }\n}\n"},"@openzeppelin/contracts/proxy/Proxy.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.6.0) (proxy/Proxy.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\n * be specified by overriding the virtual {_implementation} function.\n *\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\n * different contract through the {_delegate} function.\n *\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\n */\nabstract contract Proxy {\n /**\n * @dev Delegates the current call to `implementation`.\n *\n * This function does not return to its internal call site, it will return directly to the external caller.\n */\n function _delegate(address implementation) internal virtual {\n assembly {\n // Copy msg.data. We take full control of memory in this inline assembly\n // block because it will not return to Solidity code. We overwrite the\n // Solidity scratch pad at memory position 0.\n calldatacopy(0, 0, calldatasize())\n\n // Call the implementation.\n // out and outsize are 0 because we don't know the size yet.\n let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)\n\n // Copy the returned data.\n returndatacopy(0, 0, returndatasize())\n\n switch result\n // delegatecall returns 0 on error.\n case 0 {\n revert(0, returndatasize())\n }\n default {\n return(0, returndatasize())\n }\n }\n }\n\n /**\n * @dev This is a virtual function that should be overridden so it returns the address to which the fallback function\n * and {_fallback} should delegate.\n */\n function _implementation() internal view virtual returns (address);\n\n /**\n * @dev Delegates the current call to the address returned by `_implementation()`.\n *\n * This function does not return to its internal call site, it will return directly to the external caller.\n */\n function _fallback() internal virtual {\n _beforeFallback();\n _delegate(_implementation());\n }\n\n /**\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\n * function in the contract matches the call data.\n */\n fallback() external payable virtual {\n _fallback();\n }\n\n /**\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data\n * is empty.\n */\n receive() external payable virtual {\n _fallback();\n }\n\n /**\n * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`\n * call, or as part of the Solidity `fallback` or `receive` functions.\n *\n * If overridden should call `super._beforeFallback()`.\n */\n function _beforeFallback() internal virtual {}\n}\n"},"@openzeppelin/contracts/utils/Address.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\n\npragma solidity ^0.8.1;\n\n/**\n * @dev Collection of functions related to the address type\n */\nlibrary Address {\n /**\n * @dev Returns true if `account` is a contract.\n *\n * [IMPORTANT]\n * ====\n * It is unsafe to assume that an address for which this function returns\n * false is an externally-owned account (EOA) and not a contract.\n *\n * Among others, `isContract` will return false for the following\n * types of addresses:\n *\n * - an externally-owned account\n * - a contract in construction\n * - an address where a contract will be created\n * - an address where a contract lived, but was destroyed\n *\n * Furthermore, `isContract` will also return true if the target contract within\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\n * which only has an effect at the end of a transaction.\n * ====\n *\n * [IMPORTANT]\n * ====\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\n *\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\n * constructor.\n * ====\n */\n function isContract(address account) internal view returns (bool) {\n // This method relies on extcodesize/address.code.length, which returns 0\n // for contracts in construction, since the code is only stored at the end\n // of the constructor execution.\n\n return account.code.length > 0;\n }\n\n /**\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n * `recipient`, forwarding all available gas and reverting on errors.\n *\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\n * imposed by `transfer`, making them unable to receive funds via\n * `transfer`. {sendValue} removes this limitation.\n *\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n *\n * IMPORTANT: because control is transferred to `recipient`, care must be\n * taken to not create reentrancy vulnerabilities. Consider using\n * {ReentrancyGuard} or the\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\n */\n function sendValue(address payable recipient, uint256 amount) internal {\n require(address(this).balance >= amount, \"Address: insufficient balance\");\n\n (bool success, ) = recipient.call{value: amount}(\"\");\n require(success, \"Address: unable to send value, recipient may have reverted\");\n }\n\n /**\n * @dev Performs a Solidity function call using a low level `call`. A\n * plain `call` is an unsafe replacement for a function call: use this\n * function instead.\n *\n * If `target` reverts with a revert reason, it is bubbled up by this\n * function (like regular Solidity function calls).\n *\n * Returns the raw returned data. To convert to the expected return value,\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n *\n * Requirements:\n *\n * - `target` must be a contract.\n * - calling `target` with `data` must not revert.\n *\n * _Available since v3.1._\n */\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\n return functionCallWithValue(target, data, 0, \"Address: low-level call failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n * `errorMessage` as a fallback revert reason when `target` reverts.\n *\n * _Available since v3.1._\n */\n function functionCall(\n address target,\n bytes memory data,\n string memory errorMessage\n ) internal returns (bytes memory) {\n return functionCallWithValue(target, data, 0, errorMessage);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but also transferring `value` wei to `target`.\n *\n * Requirements:\n *\n * - the calling contract must have an ETH balance of at least `value`.\n * - the called Solidity function must be `payable`.\n *\n * _Available since v3.1._\n */\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\n return functionCallWithValue(target, data, value, \"Address: low-level call with value failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n * with `errorMessage` as a fallback revert reason when `target` reverts.\n *\n * _Available since v3.1._\n */\n function functionCallWithValue(\n address target,\n bytes memory data,\n uint256 value,\n string memory errorMessage\n ) internal returns (bytes memory) {\n require(address(this).balance >= value, \"Address: insufficient balance for call\");\n (bool success, bytes memory returndata) = target.call{value: value}(data);\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but performing a static call.\n *\n * _Available since v3.3._\n */\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\n return functionStaticCall(target, data, \"Address: low-level static call failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n * but performing a static call.\n *\n * _Available since v3.3._\n */\n function functionStaticCall(\n address target,\n bytes memory data,\n string memory errorMessage\n ) internal view returns (bytes memory) {\n (bool success, bytes memory returndata) = target.staticcall(data);\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but performing a delegate call.\n *\n * _Available since v3.4._\n */\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\n return functionDelegateCall(target, data, \"Address: low-level delegate call failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n * but performing a delegate call.\n *\n * _Available since v3.4._\n */\n function functionDelegateCall(\n address target,\n bytes memory data,\n string memory errorMessage\n ) internal returns (bytes memory) {\n (bool success, bytes memory returndata) = target.delegatecall(data);\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\n }\n\n /**\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\n *\n * _Available since v4.8._\n */\n function verifyCallResultFromTarget(\n address target,\n bool success,\n bytes memory returndata,\n string memory errorMessage\n ) internal view returns (bytes memory) {\n if (success) {\n if (returndata.length == 0) {\n // only check isContract if the call was successful and the return data is empty\n // otherwise we already know that it was a contract\n require(isContract(target), \"Address: call to non-contract\");\n }\n return returndata;\n } else {\n _revert(returndata, errorMessage);\n }\n }\n\n /**\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\n * revert reason or using the provided one.\n *\n * _Available since v4.3._\n */\n function verifyCallResult(\n bool success,\n bytes memory returndata,\n string memory errorMessage\n ) internal pure returns (bytes memory) {\n if (success) {\n return returndata;\n } else {\n _revert(returndata, errorMessage);\n }\n }\n\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\n // Look for revert reason and bubble it up if present\n if (returndata.length > 0) {\n // The easiest way to bubble the revert reason is using memory via assembly\n /// @solidity memory-safe-assembly\n assembly {\n let returndata_size := mload(returndata)\n revert(add(32, returndata), returndata_size)\n }\n } else {\n revert(errorMessage);\n }\n }\n}\n"},"@openzeppelin/contracts/utils/Context.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Provides information about the current execution context, including the\n * sender of the transaction and its data. While these are generally available\n * via msg.sender and msg.data, they should not be accessed in such a direct\n * manner, since when dealing with meta-transactions the account sending and\n * paying for execution may not be the actual sender (as far as an application\n * is concerned).\n *\n * This contract is only required for intermediate, library-like contracts.\n */\nabstract contract Context {\n function _msgSender() internal view virtual returns (address) {\n return msg.sender;\n }\n\n function _msgData() internal view virtual returns (bytes calldata) {\n return msg.data;\n }\n\n function _contextSuffixLength() internal view virtual returns (uint256) {\n return 0;\n }\n}\n"},"@openzeppelin/contracts/utils/Counters.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/Counters.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @title Counters\n * @author Matt Condon (@shrugs)\n * @dev Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number\n * of elements in a mapping, issuing ERC721 ids, or counting request ids.\n *\n * Include with `using Counters for Counters.Counter;`\n */\nlibrary Counters {\n struct Counter {\n // This variable should never be directly accessed by users of the library: interactions must be restricted to\n // the library's function. As of Solidity v0.5.2, this cannot be enforced, though there is a proposal to add\n // this feature: see https://github.com/ethereum/solidity/issues/4637\n uint256 _value; // default: 0\n }\n\n function current(Counter storage counter) internal view returns (uint256) {\n return counter._value;\n }\n\n function increment(Counter storage counter) internal {\n unchecked {\n counter._value += 1;\n }\n }\n\n function decrement(Counter storage counter) internal {\n uint256 value = counter._value;\n require(value > 0, \"Counter: decrement overflow\");\n unchecked {\n counter._value = value - 1;\n }\n }\n\n function reset(Counter storage counter) internal {\n counter._value = 0;\n }\n}\n"},"@openzeppelin/contracts/utils/introspection/ERC165.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\n\npragma solidity ^0.8.0;\n\nimport \"./IERC165.sol\";\n\n/**\n * @dev Implementation of the {IERC165} interface.\n *\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\n * for the additional interface id that will be supported. For example:\n *\n * ```solidity\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\n * }\n * ```\n *\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\n */\nabstract contract ERC165 is IERC165 {\n /**\n * @dev See {IERC165-supportsInterface}.\n */\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n return interfaceId == type(IERC165).interfaceId;\n }\n}\n"},"@openzeppelin/contracts/utils/introspection/IERC165.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Interface of the ERC165 standard, as defined in the\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\n *\n * Implementers can declare support of contract interfaces, which can then be\n * queried by others ({ERC165Checker}).\n *\n * For an implementation, see {ERC165}.\n */\ninterface IERC165 {\n /**\n * @dev Returns true if this contract implements the interface defined by\n * `interfaceId`. See the corresponding\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\n * to learn more about how these ids are created.\n *\n * This function call must use less than 30 000 gas.\n */\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\n}\n"},"@openzeppelin/contracts/utils/StorageSlot.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/StorageSlot.sol)\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Library for reading and writing primitive types to specific storage slots.\n *\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\n * This library helps with reading and writing to such slots without the need for inline assembly.\n *\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\n *\n * Example usage to set ERC1967 implementation slot:\n * ```solidity\n * contract ERC1967 {\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n *\n * function _getImplementation() internal view returns (address) {\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\n * }\n *\n * function _setImplementation(address newImplementation) internal {\n * require(Address.isContract(newImplementation), \"ERC1967: new implementation is not a contract\");\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\n * }\n * }\n * ```\n *\n * _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._\n * _Available since v4.9 for `string`, `bytes`._\n */\nlibrary StorageSlot {\n struct AddressSlot {\n address value;\n }\n\n struct BooleanSlot {\n bool value;\n }\n\n struct Bytes32Slot {\n bytes32 value;\n }\n\n struct Uint256Slot {\n uint256 value;\n }\n\n struct StringSlot {\n string value;\n }\n\n struct BytesSlot {\n bytes value;\n }\n\n /**\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\n */\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\n */\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\n */\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\n */\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `StringSlot` with member `value` located at `slot`.\n */\n function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\n */\n function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := store.slot\n }\n }\n\n /**\n * @dev Returns an `BytesSlot` with member `value` located at `slot`.\n */\n function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\n */\n function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := store.slot\n }\n }\n}\n"},"src/dao/IDAO.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\n/// @title IDAO\n/// @author Aragon X - 2022-2023\n/// @notice The interface required for DAOs within the Aragon App DAO framework.\n/// @custom:security-contact sirt@aragon.org\ninterface IDAO {\n /// @notice The action struct to be consumed by the DAO's `execute` function resulting in an external call.\n /// @param to The address to call.\n /// @param value The native token value to be sent with the call.\n /// @param data The bytes-encoded function selector and calldata for the call.\n struct Action {\n address to;\n uint256 value;\n bytes data;\n }\n\n /// @notice Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\n /// @param _where The address of the contract.\n /// @param _who The address of a EOA or contract to give the permissions.\n /// @param _permissionId The permission identifier.\n /// @param _data The optional data passed to the `PermissionCondition` registered.\n /// @return Returns true if the address has permission, false if not.\n function hasPermission(\n address _where,\n address _who,\n bytes32 _permissionId,\n bytes memory _data\n ) external view returns (bool);\n\n /// @notice Updates the DAO metadata (e.g., an IPFS hash).\n /// @param _metadata The IPFS hash of the new metadata object.\n function setMetadata(bytes calldata _metadata) external;\n\n /// @notice Emitted when the DAO metadata is updated.\n /// @param metadata The IPFS hash of the new metadata object.\n event MetadataSet(bytes metadata);\n\n /// @notice Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted.\n /// @param _callId The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce.\n /// @param _actions The array of actions.\n /// @param _allowFailureMap A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\n /// @return The array of results obtained from the executed actions in `bytes`.\n /// @return The resulting failure map containing the actions have actually failed.\n function execute(\n bytes32 _callId,\n Action[] memory _actions,\n uint256 _allowFailureMap\n ) external returns (bytes[] memory, uint256);\n\n /// @notice Emitted when a proposal is executed.\n /// @param actor The address of the caller.\n /// @param callId The ID of the call.\n /// @param actions The array of actions executed.\n /// @param allowFailureMap The allow failure map encoding which actions are allowed to fail.\n /// @param failureMap The failure map encoding which actions have failed.\n /// @param execResults The array with the results of the executed actions.\n /// @dev The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce.\n event Executed(\n address indexed actor,\n bytes32 callId,\n Action[] actions,\n uint256 allowFailureMap,\n uint256 failureMap,\n bytes[] execResults\n );\n\n /// @notice Emitted when a standard callback is registered.\n /// @param interfaceId The ID of the interface.\n /// @param callbackSelector The selector of the callback function.\n /// @param magicNumber The magic number to be registered for the callback function selector.\n event StandardCallbackRegistered(\n bytes4 interfaceId,\n bytes4 callbackSelector,\n bytes4 magicNumber\n );\n\n /// @notice Deposits (native) tokens to the DAO contract with a reference string.\n /// @param _token The address of the token or address(0) in case of the native token.\n /// @param _amount The amount of tokens to deposit.\n /// @param _reference The reference describing the deposit reason.\n function deposit(address _token, uint256 _amount, string calldata _reference) external payable;\n\n /// @notice Emitted when a token deposit has been made to the DAO.\n /// @param sender The address of the sender.\n /// @param token The address of the deposited token.\n /// @param amount The amount of tokens deposited.\n /// @param _reference The reference describing the deposit reason.\n event Deposited(\n address indexed sender,\n address indexed token,\n uint256 amount,\n string _reference\n );\n\n /// @notice Emitted when a native token deposit has been made to the DAO.\n /// @dev This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).\n /// @param sender The address of the sender.\n /// @param amount The amount of native tokens deposited.\n event NativeTokenDeposited(address sender, uint256 amount);\n\n /// @notice Setter for the trusted forwarder verifying the meta transaction.\n /// @param _trustedForwarder The trusted forwarder address.\n function setTrustedForwarder(address _trustedForwarder) external;\n\n /// @notice Getter for the trusted forwarder verifying the meta transaction.\n /// @return The trusted forwarder address.\n function getTrustedForwarder() external view returns (address);\n\n /// @notice Emitted when a new TrustedForwarder is set on the DAO.\n /// @param forwarder the new forwarder address.\n event TrustedForwarderSet(address forwarder);\n\n /// @notice Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\n /// @param _hash The hash of the data to be signed.\n /// @param _signature The signature byte array associated with `_hash`.\n /// @return Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not.\n function isValidSignature(bytes32 _hash, bytes memory _signature) external returns (bytes4);\n\n /// @notice Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\n /// @param _interfaceId The ID of the interface.\n /// @param _callbackSelector The selector of the callback function.\n /// @param _magicNumber The magic number to be registered for the function signature.\n function registerStandardCallback(\n bytes4 _interfaceId,\n bytes4 _callbackSelector,\n bytes4 _magicNumber\n ) external;\n\n /// @notice Removed function being left here to not corrupt the IDAO interface ID. Any call will revert.\n /// @dev Introduced in v1.0.0. Removed in v1.4.0.\n function setSignatureValidator(address) external;\n}\n"},"src/mocks/plugin/PluginCloneableMock.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\n/* solhint-disable one-contract-per-file */\npragma solidity ^0.8.8;\n\nimport {PluginCloneable} from \"../../plugin/PluginCloneable.sol\";\nimport {IDAO} from \"../../dao/IDAO.sol\";\n\n/// @notice A mock cloneable plugin to be deployed via the minimal proxy pattern.\n/// v1.1 (Release 1, Build 1)\n/// @dev DO NOT USE IN PRODUCTION!\ncontract PluginCloneableMockBuild1 is PluginCloneable {\n uint256 public state1;\n\n function initialize(IDAO _dao) external initializer {\n __PluginCloneable_init(_dao);\n state1 = 1;\n }\n}\n\n/// @notice A mock cloneable plugin to be deployed via the minimal proxy pattern.\n/// v1.1 (Release 1, Build 2)\n/// @dev DO NOT USE IN PRODUCTION!\ncontract PluginCloneableMockBuild2 is PluginCloneable {\n uint256 public state1;\n uint256 public state2;\n\n function initialize(IDAO _dao) external initializer {\n __PluginCloneable_init(_dao);\n state1 = 1;\n state2 = 2;\n }\n}\n\n/// @notice A mock cloneable plugin missing an initializer function.\n/// @dev DO NOT USE IN PRODUCTION!\ncontract PluginCloneableMockBad is PluginCloneable {\n uint256 public state1;\n\n function notAnInitializer(IDAO _dao) external {\n __PluginCloneable_init(_dao);\n state1 = 1;\n }\n}\n"},"src/mocks/plugin/PluginCloneableSetupMock.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\n/* solhint-disable one-contract-per-file */\npragma solidity ^0.8.8;\n\nimport {PermissionLib} from \"../../permission/PermissionLib.sol\";\nimport {IPluginSetup} from \"../../plugin/setup/IPluginSetup.sol\";\nimport {PluginSetup} from \"../../plugin/setup/PluginSetup.sol\";\nimport {ProxyLib} from \"../../utils/deployment/ProxyLib.sol\";\nimport {IDAO} from \"../../dao/IDAO.sol\";\nimport {mockPermissions, mockHelpers} from \"./PluginSetupMockData.sol\";\nimport {PluginCloneableMockBuild1, PluginCloneableMockBuild2} from \"./PluginCloneableMock.sol\";\n\n/// @notice A mock plugin setup of a cloneable plugin to be deployed via the minimal proxy pattern.\n/// v1.1 (Release 1, Build 1)\n/// @dev DO NOT USE IN PRODUCTION!\ncontract PluginCloneableSetupMockBuild1 is PluginSetup {\n using ProxyLib for address;\n\n uint16 internal constant THIS_BUILD = 1;\n\n constructor() PluginSetup(address(new PluginCloneableMockBuild1())) {}\n\n /// @inheritdoc IPluginSetup\n function prepareInstallation(\n address _dao,\n bytes memory\n ) external returns (address plugin, PreparedSetupData memory preparedSetupData) {\n bytes memory initData = abi.encodeCall(PluginCloneableMockBuild1.initialize, (IDAO(_dao)));\n plugin = implementation().deployMinimalProxy(initData);\n preparedSetupData.helpers = mockHelpers(THIS_BUILD);\n preparedSetupData.permissions = mockPermissions(\n 0,\n THIS_BUILD,\n PermissionLib.Operation.Grant\n );\n }\n\n /// @inheritdoc IPluginSetup\n function prepareUninstallation(\n address _dao,\n SetupPayload calldata _payload\n ) external pure returns (PermissionLib.MultiTargetPermission[] memory permissions) {\n (_dao, _payload);\n permissions = mockPermissions(0, THIS_BUILD, PermissionLib.Operation.Revoke);\n }\n}\n\n/// @notice A mock plugin setup of a cloneable plugin to be deployed via the minimal proxy pattern.\n/// v1.2 (Release 1, Build 2)\n/// @dev DO NOT USE IN PRODUCTION!\ncontract PluginCloneableSetupMockBuild2 is PluginSetup {\n using ProxyLib for address;\n\n uint16 internal constant THIS_BUILD = 2;\n\n constructor() PluginSetup(address(new PluginCloneableMockBuild2())) {}\n\n /// @inheritdoc IPluginSetup\n function prepareInstallation(\n address _dao,\n bytes memory\n ) external returns (address plugin, PreparedSetupData memory preparedSetupData) {\n bytes memory initData = abi.encodeCall(PluginCloneableMockBuild2.initialize, (IDAO(_dao)));\n plugin = implementation().deployMinimalProxy(initData);\n preparedSetupData.helpers = mockHelpers(THIS_BUILD);\n preparedSetupData.permissions = mockPermissions(\n 0,\n THIS_BUILD,\n PermissionLib.Operation.Grant\n );\n }\n\n /// @inheritdoc IPluginSetup\n function prepareUninstallation(\n address _dao,\n SetupPayload calldata _payload\n ) external pure returns (PermissionLib.MultiTargetPermission[] memory permissions) {\n (_dao, _payload);\n permissions = mockPermissions(0, THIS_BUILD, PermissionLib.Operation.Revoke);\n }\n}\n"},"src/mocks/plugin/PluginMock.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\nimport {Plugin} from \"../../plugin/Plugin.sol\";\nimport {IDAO} from \"../../dao/IDAO.sol\";\n\n/// @notice A mock plugin to be deployed via the `new` keyword.\n/// v1.1 (Release 1, Build 1)\n/// @dev DO NOT USE IN PRODUCTION!\ncontract PluginMockBuild1 is Plugin {\n uint256 public state1;\n\n constructor(IDAO _dao) Plugin(_dao) {\n state1 = 1;\n }\n}\n"},"src/mocks/plugin/PluginSetupMock.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\n/* solhint-disable one-contract-per-file */\npragma solidity ^0.8.8;\n\nimport {PermissionLib} from \"../../permission/PermissionLib.sol\";\nimport {IPluginSetup} from \"../../plugin/setup/IPluginSetup.sol\";\nimport {PluginSetup} from \"../../plugin/setup/PluginSetup.sol\";\nimport {IDAO} from \"../../dao/IDAO.sol\";\nimport {mockPermissions, mockHelpers} from \"./PluginSetupMockData.sol\";\nimport {PluginMockBuild1} from \"./PluginMock.sol\";\n\n/// @notice A mock plugin setup of a plugin to be deployed via the `new` keyword.\n/// v1.1 (Release 1, Build 1)\n/// @dev DO NOT USE IN PRODUCTION!\ncontract PluginSetupMockBuild1 is PluginSetup {\n constructor() PluginSetup(address(new PluginMockBuild1(IDAO(address(0))))) {}\n\n /// @inheritdoc IPluginSetup\n function prepareInstallation(\n address _dao,\n bytes memory _data\n ) external returns (address plugin, PreparedSetupData memory preparedSetupData) {\n (_data);\n plugin = address(new PluginMockBuild1(IDAO(_dao)));\n preparedSetupData.helpers = mockHelpers(1);\n preparedSetupData.permissions = mockPermissions(0, 1, PermissionLib.Operation.Grant);\n }\n\n /// @inheritdoc IPluginSetup\n function prepareUninstallation(\n address _dao,\n SetupPayload calldata _payload\n ) external pure returns (PermissionLib.MultiTargetPermission[] memory permissions) {\n (_dao, _payload);\n permissions = mockPermissions(0, 1, PermissionLib.Operation.Revoke);\n }\n}\n"},"src/mocks/plugin/PluginSetupMockData.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\nimport {PermissionLib} from \"../../permission/PermissionLib.sol\";\n\naddress constant NO_CONDITION = address(0);\n\nerror ConflictingValues();\n\n/// @notice Creates a mock `MultiTargetPermission` array by converting a range of `uint160` values into `address` values.\n/// @param rangeStart The start of the range.\n/// @param rangeEnd The end of the range (that is not included).\n/// @param op The permission operation type.\n/// @return permissions The mock array of permissions.\n/// @dev DO NOT USE IN PRODUCTION!\nfunction mockPermissions(\n uint160 rangeStart,\n uint160 rangeEnd,\n PermissionLib.Operation op\n) pure returns (PermissionLib.MultiTargetPermission[] memory permissions) {\n if (rangeStart > rangeEnd) revert ConflictingValues();\n\n permissions = new PermissionLib.MultiTargetPermission[](rangeEnd - rangeStart);\n\n for (uint160 i = rangeStart; i < rangeEnd; i++) {\n permissions[i - rangeStart] = PermissionLib.MultiTargetPermission({\n operation: op,\n where: address(i),\n who: address(i),\n condition: PermissionLib.NO_CONDITION,\n permissionId: keccak256(\"MOCK_PERMISSION\")\n });\n }\n}\n\n/// @notice Creates a mock array of helper addresses of specified length by converting `uint160` values starting from 0 into `address` values.\n/// @param len The length of the helper array.\n/// @return helpers The mock array of helper addresses.\n/// @dev DO NOT USE IN PRODUCTION!\nfunction mockHelpers(uint160 len) pure returns (address[] memory helpers) {\n helpers = new address[](len);\n\n for (uint160 i = 0; i < len; i++) {\n helpers[i] = address(i);\n }\n}\n"},"src/mocks/plugin/PluginUUPSUpgradeableMock.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\n/* solhint-disable one-contract-per-file */\npragma solidity ^0.8.8;\n\nimport {PluginUUPSUpgradeable} from \"../../plugin/PluginUUPSUpgradeable.sol\";\nimport {IDAO} from \"../../dao/IDAO.sol\";\n\n/// @notice A mock upgradeable plugin to be deployed via the UUPS proxy pattern.\n/// v1.1 (Release 1, Build 1)\n/// @dev DO NOT USE IN PRODUCTION!\ncontract PluginUUPSUpgradeableMockBuild1 is PluginUUPSUpgradeable {\n uint256 public state1;\n\n function initialize(IDAO _dao) external initializer {\n __PluginUUPSUpgradeable_init(_dao);\n state1 = 1;\n }\n}\n\n/// @notice A mock upgradeable plugin to be deployed via the UUPS proxy pattern.\n/// v1.1 (Release 1, Build 2)\n/// @dev DO NOT USE IN PRODUCTION!\ncontract PluginUUPSUpgradeableMockBuild2 is PluginUUPSUpgradeable {\n uint256 public state1;\n uint256 public state2;\n\n function initialize(IDAO _dao) external reinitializer(2) {\n __PluginUUPSUpgradeable_init(_dao);\n state1 = 1;\n state2 = 2;\n }\n\n function initializeFrom(uint16 _previousBuild) external reinitializer(2) {\n if (_previousBuild < 2) {\n state2 = 2;\n }\n }\n}\n\n/// @notice A mock upgradeable plugin to be deployed via the UUPS proxy pattern.\n/// v1.1 (Release 1, Build 3)\n/// @dev DO NOT USE IN PRODUCTION!\ncontract PluginUUPSUpgradeableMockBuild3 is PluginUUPSUpgradeable {\n uint256 public state1;\n uint256 public state2;\n uint256 public state3;\n\n function initialize(IDAO _dao) external reinitializer(3) {\n __PluginUUPSUpgradeable_init(_dao);\n state1 = 1;\n state2 = 2;\n state3 = 3;\n }\n\n function initializeFrom(uint16 _previousBuild) external reinitializer(3) {\n if (_previousBuild < 2) {\n state2 = 2;\n }\n if (_previousBuild < 3) {\n state3 = 3;\n }\n }\n}\n\n/// @notice A mock upgradeable plugin missing an initializer function.\n/// @dev DO NOT USE IN PRODUCTION!\ncontract PluginUUPSUpgradeableMockBad is PluginUUPSUpgradeable {\n uint256 public state1;\n\n function notAnInitializer(IDAO _dao) external {\n __PluginUUPSUpgradeable_init(_dao);\n state1 = 1;\n }\n}\n"},"src/mocks/plugin/PluginUUPSUpgradeableSetupMock.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\n/* solhint-disable one-contract-per-file */\npragma solidity ^0.8.8;\n\nimport {PermissionLib} from \"../../permission/PermissionLib.sol\";\nimport {IPluginSetup} from \"../../plugin/setup/IPluginSetup.sol\";\nimport {PluginUpgradeableSetup} from \"../../plugin/setup/PluginUpgradeableSetup.sol\";\nimport {ProxyLib} from \"../../utils/deployment/ProxyLib.sol\";\nimport {IDAO} from \"../../dao/IDAO.sol\";\nimport {mockPermissions, mockHelpers} from \"./PluginSetupMockData.sol\";\nimport {PluginUUPSUpgradeableMockBuild1, PluginUUPSUpgradeableMockBuild2, PluginUUPSUpgradeableMockBuild3} from \"./PluginUUPSUpgradeableMock.sol\";\n\n/// @notice A mock plugin setup of an upgradeable plugin to be deployed via the UUPS pattern.\n/// v1.1 (Release 1, Build 1)\n/// @dev DO NOT USE IN PRODUCTION!\ncontract PluginUUPSUpgradeableSetupMockBuild1 is PluginUpgradeableSetup {\n using ProxyLib for address;\n\n uint16 internal constant THIS_BUILD = 1;\n\n constructor() PluginUpgradeableSetup(address(new PluginUUPSUpgradeableMockBuild1())) {}\n\n /// @inheritdoc IPluginSetup\n function prepareInstallation(\n address _dao,\n bytes memory\n ) public returns (address plugin, PreparedSetupData memory preparedSetupData) {\n bytes memory initData = abi.encodeCall(\n PluginUUPSUpgradeableMockBuild1.initialize,\n (IDAO(_dao))\n );\n plugin = implementation().deployUUPSProxy(initData);\n preparedSetupData.helpers = mockHelpers(1);\n preparedSetupData.permissions = mockPermissions(0, 1, PermissionLib.Operation.Grant);\n }\n\n /// @inheritdoc IPluginSetup\n /// @dev The default implementation for the initial build 1 that reverts because no earlier build exists.\n function prepareUpdate(\n address _dao,\n uint16 _fromBuild,\n SetupPayload calldata _payload\n ) external pure virtual returns (bytes memory, PreparedSetupData memory) {\n (_dao, _fromBuild, _payload);\n revert InvalidUpdatePath({fromBuild: 0, thisBuild: THIS_BUILD});\n }\n\n /// @inheritdoc IPluginSetup\n function prepareUninstallation(\n address _dao,\n SetupPayload calldata _payload\n ) external pure returns (PermissionLib.MultiTargetPermission[] memory permissions) {\n (_dao, _payload);\n permissions = mockPermissions(0, THIS_BUILD, PermissionLib.Operation.Revoke);\n }\n}\n\n/// @notice A mock plugin setup of an upgradeable plugin to be deployed via the UUPS pattern.\n/// v1.2 (Release 1, Build 2)\n/// @dev DO NOT USE IN PRODUCTION!\ncontract PluginUUPSUpgradeableSetupMockBuild2 is PluginUpgradeableSetup {\n using ProxyLib for address;\n\n uint16 internal constant THIS_BUILD = 2;\n\n constructor() PluginUpgradeableSetup(address(new PluginUUPSUpgradeableMockBuild2())) {}\n\n /// @inheritdoc IPluginSetup\n function prepareInstallation(\n address _dao,\n bytes memory\n ) external returns (address plugin, PreparedSetupData memory preparedSetupData) {\n bytes memory initData = abi.encodeCall(\n PluginUUPSUpgradeableMockBuild2.initialize,\n (IDAO(_dao))\n );\n plugin = implementation().deployUUPSProxy(initData);\n preparedSetupData.helpers = mockHelpers(THIS_BUILD);\n preparedSetupData.permissions = mockPermissions(\n 0,\n THIS_BUILD,\n PermissionLib.Operation.Grant\n );\n }\n\n /// @inheritdoc IPluginSetup\n function prepareUpdate(\n address _dao,\n uint16 _fromBuild,\n SetupPayload calldata _payload\n )\n external\n pure\n override\n returns (bytes memory initData, PreparedSetupData memory preparedSetupData)\n {\n (_dao, _payload);\n\n // Update from Build 1\n if (_fromBuild == 1) {\n preparedSetupData.helpers = mockHelpers(THIS_BUILD);\n initData = abi.encodeCall(PluginUUPSUpgradeableMockBuild2.initializeFrom, (_fromBuild));\n preparedSetupData.permissions = mockPermissions(\n _fromBuild,\n THIS_BUILD,\n PermissionLib.Operation.Grant\n );\n }\n }\n\n /// @inheritdoc IPluginSetup\n function prepareUninstallation(\n address _dao,\n SetupPayload calldata _payload\n ) external pure returns (PermissionLib.MultiTargetPermission[] memory permissions) {\n (_dao, _payload);\n permissions = mockPermissions(0, THIS_BUILD, PermissionLib.Operation.Revoke);\n }\n}\n\n/// @notice A mock plugin setup of an upgradeable plugin to be deployed via the UUPS pattern.\n/// v1.3 (Release 1, Build 3)\ncontract PluginUUPSUpgradeableSetupMockBuild3 is PluginUpgradeableSetup {\n using ProxyLib for address;\n\n uint16 internal constant THIS_BUILD = 3;\n\n constructor() PluginUpgradeableSetup(address(new PluginUUPSUpgradeableMockBuild3())) {}\n\n /// @inheritdoc IPluginSetup\n function prepareInstallation(\n address _dao,\n bytes memory\n ) external returns (address plugin, PreparedSetupData memory preparedSetupData) {\n bytes memory initData = abi.encodeCall(\n PluginUUPSUpgradeableMockBuild3.initialize,\n (IDAO(_dao))\n );\n plugin = implementation().deployUUPSProxy(initData);\n preparedSetupData.helpers = mockHelpers(THIS_BUILD);\n preparedSetupData.permissions = mockPermissions(\n 0,\n THIS_BUILD,\n PermissionLib.Operation.Grant\n );\n }\n\n /// @inheritdoc IPluginSetup\n function prepareUpdate(\n address _dao,\n uint16 _fromBuild,\n SetupPayload calldata _payload\n )\n external\n pure\n override\n returns (bytes memory initData, PreparedSetupData memory preparedSetupData)\n {\n (_dao, _payload);\n\n // Update from Build 1\n if (_fromBuild == 1) {\n preparedSetupData.helpers = mockHelpers(THIS_BUILD);\n initData = abi.encodeCall(PluginUUPSUpgradeableMockBuild3.initializeFrom, (_fromBuild));\n preparedSetupData.permissions = mockPermissions(\n _fromBuild,\n THIS_BUILD,\n PermissionLib.Operation.Grant\n );\n\n // If this update path should not be supported, you can revert with an error, e.g.,\n // revert InvalidUpdatePath({fromBuild: _fromBuild, thisBuild: THIS_BUILD});\n }\n\n // Update from Build 2\n if (_fromBuild == 2) {\n preparedSetupData.helpers = mockHelpers(THIS_BUILD);\n initData = abi.encodeCall(PluginUUPSUpgradeableMockBuild3.initializeFrom, (_fromBuild));\n preparedSetupData.permissions = mockPermissions(\n _fromBuild,\n THIS_BUILD,\n PermissionLib.Operation.Grant\n );\n }\n }\n\n /// @inheritdoc IPluginSetup\n function prepareUninstallation(\n address _dao,\n SetupPayload calldata _payload\n ) external pure returns (PermissionLib.MultiTargetPermission[] memory permissions) {\n (_dao, _payload);\n permissions = mockPermissions(0, THIS_BUILD, PermissionLib.Operation.Revoke);\n }\n}\n"},"src/permission/auth/auth.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\nimport {IDAO} from \"../../dao/IDAO.sol\";\n\n/// @notice Thrown if a call is unauthorized in the associated DAO.\n/// @param dao The associated DAO.\n/// @param where The context in which the authorization reverted.\n/// @param who The address (EOA or contract) missing the permission.\n/// @param permissionId The permission identifier.\nerror DaoUnauthorized(address dao, address where, address who, bytes32 permissionId);\n\n/// @notice A free function checking if a caller is granted permissions on a target contract via a permission identifier that redirects the approval to a `PermissionCondition` if this was specified in the setup.\n/// @param _where The address of the target contract for which `who` receives permission.\n/// @param _who The address (EOA or contract) owning the permission.\n/// @param _permissionId The permission identifier.\n/// @param _data The optional data passed to the `PermissionCondition` registered.\n/// @custom:security-contact sirt@aragon.org\nfunction _auth(\n IDAO _dao,\n address _where,\n address _who,\n bytes32 _permissionId,\n bytes calldata _data\n) view {\n if (!_dao.hasPermission(_where, _who, _permissionId, _data))\n revert DaoUnauthorized({\n dao: address(_dao),\n where: _where,\n who: _who,\n permissionId: _permissionId\n });\n}\n"},"src/permission/auth/DaoAuthorizable.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\nimport {Context} from \"@openzeppelin/contracts/utils/Context.sol\";\n\nimport {IDAO} from \"../../dao/IDAO.sol\";\nimport {_auth} from \"./auth.sol\";\n\n/// @title DaoAuthorizable\n/// @author Aragon X - 2022-2023\n/// @notice An abstract contract providing a meta-transaction compatible modifier for non-upgradeable contracts instantiated via the `new` keyword to authorize function calls through an associated DAO.\n/// @custom:security-contact sirt@aragon.org\nabstract contract DaoAuthorizable is Context {\n /// @notice The associated DAO managing the permissions of inheriting contracts.\n IDAO private immutable DAO;\n\n /// @notice Constructs the contract by setting the associated DAO.\n /// @param _dao The associated DAO address.\n constructor(IDAO _dao) {\n DAO = _dao;\n }\n\n /// @notice Returns the DAO contract.\n /// @return The DAO contract.\n function dao() public view returns (IDAO) {\n return DAO;\n }\n\n /// @notice A modifier to make functions on inheriting contracts authorized. Permissions to call the function are checked through the associated DAO's permission manager.\n /// @param _permissionId The permission identifier required to call the method this modifier is applied to.\n modifier auth(bytes32 _permissionId) {\n _auth(DAO, address(this), _msgSender(), _permissionId, _msgData());\n _;\n }\n}\n"},"src/permission/auth/DaoAuthorizableUpgradeable.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\nimport {ContextUpgradeable} from \"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\";\n\nimport {IDAO} from \"../../dao/IDAO.sol\";\nimport {_auth} from \"./auth.sol\";\n\n/// @title DaoAuthorizableUpgradeable\n/// @author Aragon X - 2022-2023\n/// @notice An abstract contract providing a meta-transaction compatible modifier for upgradeable or cloneable contracts to authorize function calls through an associated DAO.\n/// @dev Make sure to call `__DaoAuthorizableUpgradeable_init` during initialization of the inheriting contract.\n/// @custom:security-contact sirt@aragon.org\nabstract contract DaoAuthorizableUpgradeable is ContextUpgradeable {\n /// @notice The associated DAO managing the permissions of inheriting contracts.\n IDAO private dao_;\n\n /// @notice Initializes the contract by setting the associated DAO.\n /// @param _dao The associated DAO address.\n // solhint-disable-next-line func-name-mixedcase\n function __DaoAuthorizableUpgradeable_init(IDAO _dao) internal onlyInitializing {\n dao_ = _dao;\n }\n\n /// @notice Returns the DAO contract.\n /// @return The DAO contract.\n function dao() public view returns (IDAO) {\n return dao_;\n }\n\n /// @notice A modifier to make functions on inheriting contracts authorized. Permissions to call the function are checked through the associated DAO's permission manager.\n /// @param _permissionId The permission identifier required to call the method this modifier is applied to.\n modifier auth(bytes32 _permissionId) {\n _auth(dao_, address(this), _msgSender(), _permissionId, _msgData());\n _;\n }\n\n /// @notice This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain (see [OpenZeppelin's guide about storage gaps](https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps)).\n uint256[49] private __gap;\n}\n"},"src/permission/PermissionLib.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\n/// @title PermissionLib\n/// @author Aragon X - 2021-2023\n/// @notice A library containing objects for permission processing.\n/// @custom:security-contact sirt@aragon.org\nlibrary PermissionLib {\n /// @notice A constant expressing that no condition is applied to a permission.\n address public constant NO_CONDITION = address(0);\n\n /// @notice The types of permission operations available in the `PermissionManager`.\n /// @param Grant The grant operation setting a permission without a condition.\n /// @param Revoke The revoke operation removing a permission (that was granted with or without a condition).\n /// @param GrantWithCondition The grant operation setting a permission with a condition.\n enum Operation {\n Grant,\n Revoke,\n GrantWithCondition\n }\n\n /// @notice A struct containing the information for a permission to be applied on a single target contract without a condition.\n /// @param operation The permission operation type.\n /// @param who The address (EOA or contract) receiving the permission.\n /// @param permissionId The permission identifier.\n struct SingleTargetPermission {\n Operation operation;\n address who;\n bytes32 permissionId;\n }\n\n /// @notice A struct containing the information for a permission to be applied on multiple target contracts, optionally, with a condition.\n /// @param operation The permission operation type.\n /// @param where The address of the target contract for which `who` receives permission.\n /// @param who The address (EOA or contract) receiving the permission.\n /// @param condition The `PermissionCondition` that will be asked for authorization on calls connected to the specified permission identifier.\n /// @param permissionId The permission identifier.\n struct MultiTargetPermission {\n Operation operation;\n address where;\n address who;\n address condition;\n bytes32 permissionId;\n }\n}\n"},"src/plugin/extensions/proposal/IProposal.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\nimport {IDAO} from \"../../../dao/IDAO.sol\";\n\n/// @title IProposal\n/// @author Aragon X - 2022-2023\n/// @notice An interface to be implemented by DAO plugins that create and execute proposals.\n/// @custom:security-contact sirt@aragon.org\ninterface IProposal {\n /// @notice Emitted when a proposal is created.\n /// @param proposalId The ID of the proposal.\n /// @param creator The creator of the proposal.\n /// @param startDate The start date of the proposal in seconds.\n /// @param endDate The end date of the proposal in seconds.\n /// @param metadata The metadata of the proposal.\n /// @param actions The actions that will be executed if the proposal passes.\n /// @param allowFailureMap A bitmap allowing the proposal to succeed, even if individual actions might revert. If the bit at index `i` is 1, the proposal succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\n event ProposalCreated(\n uint256 indexed proposalId,\n address indexed creator,\n uint64 startDate,\n uint64 endDate,\n bytes metadata,\n IDAO.Action[] actions,\n uint256 allowFailureMap\n );\n\n /// @notice Emitted when a proposal is executed.\n /// @param proposalId The ID of the proposal.\n event ProposalExecuted(uint256 indexed proposalId);\n\n /// @notice Creates a new proposal.\n /// @param data The metadata of the proposal.\n /// @param actions The actions that will be executed after the proposal passes.\n /// @param startDate The start date of the proposal.\n /// @param endDate The end date of the proposal.\n /// @return proposalId The id of the proposal.\n function createProposal(\n bytes memory data,\n IDAO.Action[] memory actions,\n uint64 startDate,\n uint64 endDate\n ) external returns (uint256 proposalId);\n\n /// @notice Whether proposal can be executed or not.\n /// @param proposalId The id of the proposal.\n /// @return bool Returns if proposal can be executed or not.\n function canExecute(uint256 proposalId) external returns (bool);\n\n /// @notice Returns the proposal count determining the next proposal ID.\n /// @dev This function is deprecated TODO:\n /// @return The proposal count.\n function proposalCount() external view returns (uint256);\n}\n"},"src/plugin/extensions/proposal/Proposal.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\nimport {Counters} from \"@openzeppelin/contracts/utils/Counters.sol\";\nimport {ERC165} from \"@openzeppelin/contracts/utils/introspection/ERC165.sol\";\n\nimport {IDAO} from \"../../../dao/IDAO.sol\";\nimport {IProposal} from \"./IProposal.sol\";\n\n/// @title Proposal\n/// @author Aragon X - 2022-2023\n/// @notice An abstract contract containing the traits and internal functionality to create and execute proposals that can be inherited by non-upgradeable DAO plugins.\n/// @custom:security-contact sirt@aragon.org\nabstract contract Proposal is IProposal, ERC165 {\n using Counters for Counters.Counter;\n\n /// @notice The incremental ID for proposals and executions.\n Counters.Counter private proposalCounter;\n\n /// Shall we remove this ? Does anyone use this ? if we keep having this,\n // this will not return the correct value anyways anymore.\n /// @inheritdoc IProposal\n function proposalCount() public view override returns (uint256) {\n return proposalCounter.current();\n }\n\n /// @notice Checks if this or the parent contract supports an interface by its ID.\n /// @param _interfaceId The ID of the interface.\n /// @return Returns `true` if the interface is supported.\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\n // In addition to the current interfaceId, also support previous version of the interfaceId that did not\n // include the createProposal() function as standard\n return\n _interfaceId ==\n type(IProposal).interfaceId ^\n IProposal.createProposal.selector ^\n IProposal.canExecute.selector ||\n _interfaceId == type(IProposal).interfaceId ||\n super.supportsInterface(_interfaceId);\n }\n}\n"},"src/plugin/extensions/proposal/ProposalUpgradeable.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\nimport {CountersUpgradeable} from \"@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol\";\nimport {ERC165Upgradeable} from \"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\";\n\nimport {IDAO} from \"../../../dao/IDAO.sol\";\nimport {IProposal} from \"./IProposal.sol\";\n\n/// @title ProposalUpgradeable\n/// @author Aragon X - 2022-2023\n/// @notice An abstract contract containing the traits and internal functionality to create and execute proposals that can be inherited by upgradeable DAO plugins.\n/// @custom:security-contact sirt@aragon.org\nabstract contract ProposalUpgradeable is IProposal, ERC165Upgradeable {\n using CountersUpgradeable for CountersUpgradeable.Counter;\n\n /// @notice The incremental ID for proposals and executions.\n CountersUpgradeable.Counter private proposalCounter;\n\n /// @inheritdoc IProposal\n function proposalCount() public view override returns (uint256) {\n return proposalCounter.current();\n }\n\n /// @notice Checks if this or the parent contract supports an interface by its ID.\n /// @param _interfaceId The ID of the interface.\n /// @return Returns `true` if the interface is supported.\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\n // In addition to the current interfaceId, also support previous version of the interfaceId that did not\n // include the createProposal() function as standard\n return\n _interfaceId ==\n type(IProposal).interfaceId ^\n IProposal.createProposal.selector ^\n IProposal.canExecute.selector ||\n _interfaceId == type(IProposal).interfaceId ||\n super.supportsInterface(_interfaceId);\n }\n\n /// @notice This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain (see [OpenZeppelin's guide about storage gaps](https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps)).\n uint256[49] private __gap;\n}\n"},"src/plugin/IPlugin.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\n/// @title IPlugin\n/// @author Aragon X - 2022-2023\n/// @notice An interface defining the traits of a plugin.\n/// @custom:security-contact sirt@aragon.org\ninterface IPlugin {\n enum PluginType {\n UUPS,\n Cloneable,\n Constructable\n }\n\n /// @notice Returns the plugin's type\n function pluginType() external view returns (PluginType);\n}\n"},"src/plugin/Plugin.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\nimport {ERC165} from \"@openzeppelin/contracts/utils/introspection/ERC165.sol\";\n\nimport {IProtocolVersion} from \"../utils/versioning/IProtocolVersion.sol\";\nimport {ProtocolVersion} from \"../utils/versioning/ProtocolVersion.sol\";\nimport {DaoAuthorizable} from \"../permission/auth/DaoAuthorizable.sol\";\nimport {IDAO} from \"../dao/IDAO.sol\";\nimport {IPlugin} from \"./IPlugin.sol\";\n\n/// @title Plugin\n/// @author Aragon X - 2022-2023\n/// @notice An abstract, non-upgradeable contract to inherit from when creating a plugin being deployed via the `new` keyword.\n/// @custom:security-contact sirt@aragon.org\nabstract contract Plugin is IPlugin, ERC165, DaoAuthorizable, ProtocolVersion {\n address public target;\n\n /// @dev Emitted each time the Target is set.\n event TargetSet(address indexed previousTarget, address indexed newTarget);\n\n /// @notice Constructs the plugin by storing the associated DAO.\n /// @param _dao The DAO contract.\n constructor(IDAO _dao) DaoAuthorizable(_dao) {}\n\n /// @inheritdoc IPlugin\n function pluginType() public pure override returns (PluginType) {\n return PluginType.Constructable;\n }\n\n /// @dev Sets the target to a new target (`newTarget`).\n /// @notice Can only be called by the current owner. TODO\n function setTarget(address _target) public {\n address previousTarget = target;\n target = _target;\n emit TargetSet(previousTarget, _target);\n }\n\n /// @notice Checks if this or the parent contract supports an interface by its ID.\n /// @param _interfaceId The ID of the interface.\n /// @return Returns `true` if the interface is supported.\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\n return\n _interfaceId == type(IPlugin).interfaceId ||\n _interfaceId == type(IProtocolVersion).interfaceId ||\n super.supportsInterface(_interfaceId);\n }\n\n /// @notice Forwards the actions to the currently set `target` for the execution.\n /// @param _callId Identifier for this execution.\n /// @param _actions actions that will be eventually called.\n /// @param _allowFailureMap Bitmap-encoded number. TODO:\n /// @return execResults address of the implementation contract.\n /// @return failureMap address of the implementation contract.\n function _execute(\n bytes32 _callId,\n IDAO.Action[] calldata _actions,\n uint256 _allowFailureMap\n ) internal virtual returns (bytes[] memory execResults, uint256 failureMap) {\n (execResults, failureMap) = IDAO(target).execute(_callId, _actions, _allowFailureMap);\n }\n\n /// @notice Forwards the actions to the `target` for the execution.\n /// @param _target Forwards the actions to the specific target.\n /// @param _callId Identifier for this execution.\n /// @param _actions actions that will be eventually called.\n /// @param _allowFailureMap Bitmap-encoded number. TODO:\n /// @return execResults address of the implementation contract.\n /// @return failureMap address of the implementation contract.\n function _execute(\n address _target,\n bytes32 _callId,\n IDAO.Action[] calldata _actions,\n uint256 _allowFailureMap\n ) internal virtual returns (bytes[] memory execResults, uint256 failureMap) {\n (execResults, failureMap) = IDAO(_target).execute(_callId, _actions, _allowFailureMap);\n }\n}\n"},"src/plugin/PluginCloneable.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\nimport {ERC165Upgradeable} from \"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\";\n\nimport {IProtocolVersion} from \"../utils/versioning/IProtocolVersion.sol\";\nimport {ProtocolVersion} from \"../utils/versioning/ProtocolVersion.sol\";\nimport {DaoAuthorizableUpgradeable} from \"../permission/auth/DaoAuthorizableUpgradeable.sol\";\nimport {IDAO} from \"../dao/IDAO.sol\";\nimport {IPlugin} from \"./IPlugin.sol\";\n\n/// @title PluginCloneable\n/// @author Aragon X - 2022-2023\n/// @notice An abstract, non-upgradeable contract to inherit from when creating a plugin being deployed via the minimal clones pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)).\n/// @custom:security-contact sirt@aragon.org\nabstract contract PluginCloneable is\n IPlugin,\n ERC165Upgradeable,\n DaoAuthorizableUpgradeable,\n ProtocolVersion\n{\n address public target;\n\n /// @dev Emitted each time the Target is set.\n event TargetSet(address indexed previousTarget, address indexed newTarget);\n\n /// @notice Disables the initializers on the implementation contract to prevent it from being left uninitialized.\n /// @custom:oz-upgrades-unsafe-allow constructor\n constructor() {\n _disableInitializers();\n }\n\n /// @notice Initializes the plugin by storing the associated DAO.\n /// @param _dao The DAO contract.\n // solhint-disable-next-line func-name-mixedcase\n function __PluginCloneable_init(IDAO _dao) internal virtual onlyInitializing {\n __DaoAuthorizableUpgradeable_init(_dao);\n }\n\n /// @dev Sets the target to a new target (`newTarget`).\n /// @notice Can only be called by the current owner. TODO\n function setTarget(address _target) public {\n address previousTarget = target;\n target = _target;\n emit TargetSet(previousTarget, _target);\n }\n\n /// @inheritdoc IPlugin\n function pluginType() public pure override returns (PluginType) {\n return PluginType.Cloneable;\n }\n\n /// @notice Checks if this or the parent contract supports an interface by its ID.\n /// @param _interfaceId The ID of the interface.\n /// @return Returns `true` if the interface is supported.\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\n return\n _interfaceId == type(IPlugin).interfaceId ||\n _interfaceId == type(IProtocolVersion).interfaceId ||\n super.supportsInterface(_interfaceId);\n }\n\n /// @notice Forwards the actions to the currently set `target` for the execution.\n /// @param _callId Identifier for this execution.\n /// @param _actions actions that will be eventually called.\n /// @param _allowFailureMap Bitmap-encoded number. TODO:\n /// @return execResults address of the implementation contract.\n /// @return failureMap address of the implementation contract.\n function _execute(\n bytes32 _callId,\n IDAO.Action[] calldata _actions,\n uint256 _allowFailureMap\n ) internal virtual returns (bytes[] memory execResults, uint256 failureMap) {\n (execResults, failureMap) = IDAO(target).execute(_callId, _actions, _allowFailureMap);\n }\n\n /// @notice Forwards the actions to the `target` for the execution.\n /// @param _target Forwards the actions to the specific target.\n /// @param _callId Identifier for this execution.\n /// @param _actions actions that will be eventually called.\n /// @param _allowFailureMap Bitmap-encoded number. TODO:\n /// @return execResults address of the implementation contract.\n /// @return failureMap address of the implementation contract.\n function _execute(\n address _target,\n bytes32 _callId,\n IDAO.Action[] calldata _actions,\n uint256 _allowFailureMap\n ) internal virtual returns (bytes[] memory execResults, uint256 failureMap) {\n (execResults, failureMap) = IDAO(_target).execute(_callId, _actions, _allowFailureMap);\n }\n}\n"},"src/plugin/PluginUUPSUpgradeable.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\nimport {UUPSUpgradeable} from \"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\";\nimport {IERC1822ProxiableUpgradeable} from \"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol\";\nimport {ERC165Upgradeable} from \"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\";\n\nimport {IProtocolVersion} from \"../utils/versioning/IProtocolVersion.sol\";\nimport {ProtocolVersion} from \"../utils/versioning/ProtocolVersion.sol\";\nimport {DaoAuthorizableUpgradeable} from \"../permission/auth/DaoAuthorizableUpgradeable.sol\";\nimport {IDAO} from \"../dao/IDAO.sol\";\nimport {IPlugin} from \"./IPlugin.sol\";\n\n/// @title PluginUUPSUpgradeable\n/// @author Aragon X - 2022-2023\n/// @notice An abstract, upgradeable contract to inherit from when creating a plugin being deployed via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\n/// @custom:security-contact sirt@aragon.org\nabstract contract PluginUUPSUpgradeable is\n IPlugin,\n ERC165Upgradeable,\n UUPSUpgradeable,\n DaoAuthorizableUpgradeable,\n ProtocolVersion\n{\n // NOTE: When adding new state variables to the contract, the size of `_gap` has to be adapted below as well.\n address public target;\n\n /// @dev Emitted each time the Target is set.\n event TargetSet(address indexed previousTarget, address indexed newTarget);\n\n /// @notice Disables the initializers on the implementation contract to prevent it from being left uninitialized.\n /// @custom:oz-upgrades-unsafe-allow constructor\n constructor() {\n _disableInitializers();\n }\n\n /// @inheritdoc IPlugin\n function pluginType() public pure override returns (PluginType) {\n return PluginType.UUPS;\n }\n\n /// @notice The ID of the permission required to call the `_authorizeUpgrade` function.\n bytes32 public constant UPGRADE_PLUGIN_PERMISSION_ID = keccak256(\"UPGRADE_PLUGIN_PERMISSION\");\n\n /// @notice Initializes the plugin by storing the associated DAO.\n /// @param _dao The DAO contract.\n // solhint-disable-next-line func-name-mixedcase\n function __PluginUUPSUpgradeable_init(IDAO _dao) internal virtual onlyInitializing {\n __DaoAuthorizableUpgradeable_init(_dao);\n }\n\n /// @dev Sets the target to a new target (`newTarget`).\n /// @notice Can only be called by the current owner. TODO\n function setTarget(address _target) public {\n address previousTarget = target;\n target = _target;\n emit TargetSet(previousTarget, _target);\n }\n\n /// @notice Checks if an interface is supported by this or its parent contract.\n /// @param _interfaceId The ID of the interface.\n /// @return Returns `true` if the interface is supported.\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\n return\n _interfaceId == type(IPlugin).interfaceId ||\n _interfaceId == type(IProtocolVersion).interfaceId ||\n _interfaceId == type(IERC1822ProxiableUpgradeable).interfaceId ||\n super.supportsInterface(_interfaceId);\n }\n\n /// @notice Returns the address of the implementation contract in the [proxy storage slot](https://eips.ethereum.org/EIPS/eip-1967) slot the [UUPS proxy](https://eips.ethereum.org/EIPS/eip-1822) is pointing to.\n /// @return The address of the implementation contract.\n function implementation() public view returns (address) {\n return _getImplementation();\n }\n\n /// @notice Forwards the actions to the currently set `target` for the execution.\n /// @param _callId Identifier for this execution.\n /// @param _actions actions that will be eventually called.\n /// @param _allowFailureMap Bitmap-encoded number. TODO:\n /// @return execResults address of the implementation contract.\n /// @return failureMap address of the implementation contract.\n function _execute(\n bytes32 _callId,\n IDAO.Action[] calldata _actions,\n uint256 _allowFailureMap\n ) internal virtual returns (bytes[] memory execResults, uint256 failureMap) {\n (execResults, failureMap) = IDAO(target).execute(_callId, _actions, _allowFailureMap);\n }\n\n /// @notice Forwards the actions to the `target` for the execution.\n /// @param _target Forwards the actions to the specific target.\n /// @param _callId Identifier for this execution.\n /// @param _actions actions that will be eventually called.\n /// @param _allowFailureMap Bitmap-encoded number. TODO:\n /// @return execResults address of the implementation contract.\n /// @return failureMap address of the implementation contract.\n function _execute(\n address _target,\n bytes32 _callId,\n IDAO.Action[] calldata _actions,\n uint256 _allowFailureMap\n ) internal virtual returns (bytes[] memory execResults, uint256 failureMap) {\n (execResults, failureMap) = IDAO(_target).execute(_callId, _actions, _allowFailureMap);\n }\n\n /// @notice Internal method authorizing the upgrade of the contract via the [upgradeability mechanism for UUPS proxies](https://docs.openzeppelin.com/contracts/4.x/api/proxy#UUPSUpgradeable) (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\n /// @dev The caller must have the `UPGRADE_PLUGIN_PERMISSION_ID` permission.\n function _authorizeUpgrade(\n address\n )\n internal\n virtual\n override\n auth(UPGRADE_PLUGIN_PERMISSION_ID)\n // solhint-disable-next-line no-empty-blocks\n {\n\n }\n\n /// @notice This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain (see [OpenZeppelin's guide about storage gaps](https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps)).\n uint256[49] private __gap;\n}\n"},"src/plugin/setup/IPluginSetup.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\nimport {PermissionLib} from \"../../permission/PermissionLib.sol\";\n\n// solhint-disable-next-line no-unused-import\nimport {IDAO} from \"../../dao/IDAO.sol\";\n\n/// @title IPluginSetup\n/// @author Aragon X - 2022-2023\n/// @notice The interface required for a plugin setup contract to be consumed by the `PluginSetupProcessor` for plugin installations, updates, and uninstallations.\n/// @custom:security-contact sirt@aragon.org\ninterface IPluginSetup {\n /// @notice The data associated with a prepared setup.\n /// @param helpers The address array of helpers (contracts or EOAs) associated with this plugin version after the installation or update.\n /// @param permissions The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the installing or updating DAO.\n struct PreparedSetupData {\n address[] helpers;\n PermissionLib.MultiTargetPermission[] permissions;\n }\n\n /// @notice The payload for plugin updates and uninstallations containing the existing contracts as well as optional data to be consumed by the plugin setup.\n /// @param plugin The address of the `Plugin`.\n /// @param currentHelpers The address array of all current helpers (contracts or EOAs) associated with the plugin to update from.\n /// @param data The bytes-encoded data containing the input parameters for the preparation of update/uninstall as specified in the corresponding ABI on the version's metadata.\n struct SetupPayload {\n address plugin;\n address[] currentHelpers;\n bytes data;\n }\n\n /// @notice Prepares the installation of a plugin.\n /// @param _dao The address of the installing DAO.\n /// @param _data The bytes-encoded data containing the input parameters for the installation as specified in the plugin's build metadata JSON file.\n /// @return plugin The address of the `Plugin` contract being prepared for installation.\n /// @return preparedSetupData The deployed plugin's relevant data which consists of helpers and permissions.\n function prepareInstallation(\n address _dao,\n bytes calldata _data\n ) external returns (address plugin, PreparedSetupData memory preparedSetupData);\n\n /// @notice Prepares the update of a plugin.\n /// @param _dao The address of the updating DAO.\n /// @param _fromBuild The build number of the plugin to update from.\n /// @param _payload The relevant data necessary for the `prepareUpdate`. See above.\n /// @return initData The initialization data to be passed to upgradeable contracts when the update is applied in the `PluginSetupProcessor`.\n /// @return preparedSetupData The deployed plugin's relevant data which consists of helpers and permissions.\n function prepareUpdate(\n address _dao,\n uint16 _fromBuild,\n SetupPayload calldata _payload\n ) external returns (bytes memory initData, PreparedSetupData memory preparedSetupData);\n\n /// @notice Prepares the uninstallation of a plugin.\n /// @param _dao The address of the uninstalling DAO.\n /// @param _payload The relevant data necessary for the `prepareUninstallation`. See above.\n /// @return permissions The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the uninstalling DAO.\n function prepareUninstallation(\n address _dao,\n SetupPayload calldata _payload\n ) external returns (PermissionLib.MultiTargetPermission[] memory permissions);\n\n /// @notice Returns the plugin implementation address.\n /// @return The address of the plugin implementation contract.\n /// @dev The implementation can be instantiated via the `new` keyword, cloned via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)), or proxied via the UUPS proxy pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\n function implementation() external view returns (address);\n}\n"},"src/plugin/setup/PluginSetup.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\nimport {ERC165} from \"@openzeppelin/contracts/utils/introspection/ERC165.sol\";\n\nimport {IProtocolVersion} from \"../../utils/versioning/IProtocolVersion.sol\";\nimport {ProtocolVersion} from \"../../utils/versioning/ProtocolVersion.sol\";\nimport {IPluginSetup} from \"./IPluginSetup.sol\";\n\n/// @title PluginSetup\n/// @author Aragon X - 2022-2024\n/// @notice An abstract contract to inherit from to implement the plugin setup for non-upgradeable plugins, i.e,\n/// - `Plugin` being deployed via the `new` keyword\n/// - `PluginCloneable` being deployed via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)).\n/// @custom:security-contact sirt@aragon.org\nabstract contract PluginSetup is ERC165, IPluginSetup, ProtocolVersion {\n /// @notice The address of the plugin implementation contract for initial block explorer verification and, in the case of `PluginClonable` implementations, to create [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167) clones from.\n address internal immutable IMPLEMENTATION;\n\n /// @notice Thrown when attempting to prepare an update on a non-upgradeable plugin.\n error NonUpgradeablePlugin();\n\n /// @notice The contract constructor, that setting the plugin implementation contract.\n /// @param _implementation The address of the plugin implementation contract.\n constructor(address _implementation) {\n IMPLEMENTATION = _implementation;\n }\n\n /// @inheritdoc IPluginSetup\n /// @dev Since the underlying plugin is non-upgradeable, this non-virtual function must always revert.\n function prepareUpdate(\n address _dao,\n uint16 _fromBuild,\n SetupPayload calldata _payload\n ) external pure returns (bytes memory, PreparedSetupData memory) {\n (_dao, _fromBuild, _payload);\n revert NonUpgradeablePlugin();\n }\n\n /// @notice Checks if this or the parent contract supports an interface by its ID.\n /// @param _interfaceId The ID of the interface.\n /// @return Returns `true` if the interface is supported.\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\n return\n _interfaceId == type(IPluginSetup).interfaceId ||\n _interfaceId == type(IProtocolVersion).interfaceId ||\n super.supportsInterface(_interfaceId);\n }\n\n /// @inheritdoc IPluginSetup\n function implementation() public view returns (address) {\n return IMPLEMENTATION;\n }\n}\n"},"src/plugin/setup/PluginUpgradeableSetup.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\nimport {ERC165} from \"@openzeppelin/contracts/utils/introspection/ERC165.sol\";\n\nimport {IProtocolVersion} from \"../../utils/versioning/IProtocolVersion.sol\";\nimport {ProtocolVersion} from \"../../utils/versioning/ProtocolVersion.sol\";\nimport {IPluginSetup} from \"./IPluginSetup.sol\";\n\n/// @title PluginUpgradeableSetup\n/// @author Aragon X - 2022-2024\n/// @notice An abstract contract to inherit from to implement the plugin setup for upgradeable plugins, i.e, `PluginUUPSUpgradeable` being deployed via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822) and [ERC-1967](https://eips.ethereum.org/EIPS/eip-1967)).\n/// @custom:security-contact sirt@aragon.org\nabstract contract PluginUpgradeableSetup is ERC165, IPluginSetup, ProtocolVersion {\n /// @notice The address of the plugin implementation contract for initial block explorer verification\n /// and to create [ERC-1967](https://eips.ethereum.org/EIPS/eip-1967) UUPS proxies from.\n address internal immutable IMPLEMENTATION;\n\n /// @notice Thrown when an update path is not available, for example, if this is the initial build.\n /// @param fromBuild The build number to update from.\n /// @param thisBuild The build number of this setup to update to.\n error InvalidUpdatePath(uint16 fromBuild, uint16 thisBuild);\n\n /// @notice The contract constructor, that setting the plugin implementation contract.\n /// @param _implementation The address of the plugin implementation contract.\n constructor(address _implementation) {\n IMPLEMENTATION = _implementation;\n }\n\n /// @notice Checks if this or the parent contract supports an interface by its ID.\n /// @param _interfaceId The ID of the interface.\n /// @return Returns `true` if the interface is supported.\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\n return\n _interfaceId == type(IPluginSetup).interfaceId ||\n _interfaceId == type(IProtocolVersion).interfaceId ||\n super.supportsInterface(_interfaceId);\n }\n\n /// @inheritdoc IPluginSetup\n function implementation() public view returns (address) {\n return IMPLEMENTATION;\n }\n}\n"},"src/utils/deployment/ProxyLib.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\nimport {ERC1967Proxy} from \"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol\";\nimport {Clones} from \"@openzeppelin/contracts/proxy/Clones.sol\";\nimport {Address} from \"@openzeppelin/contracts/utils/Address.sol\";\n\n/// @title ProxyLib\n/// @author Aragon X - 2024\n/// @notice A library containing methods for the deployment of proxies via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)) and minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)).\n/// @custom:security-contact sirt@aragon.org\nlibrary ProxyLib {\n using Address for address;\n using Clones for address;\n\n /// @notice Creates an [ERC-1967](https://eips.ethereum.org/EIPS/eip-1967) UUPS proxy contract pointing to a logic contract and allows to immediately initialize it.\n /// @param _logic The logic contract the proxy is pointing to.\n /// @param _initCalldata The initialization data for this contract.\n /// @return uupsProxy The address of the UUPS proxy contract created.\n /// @dev If `_initCalldata` is non-empty, it is used in a delegate call to the `_logic` contract. This will typically be an encoded function call initializing the storage of the proxy (see [OpenZeppelin ERC1967Proxy-constructor](https://docs.openzeppelin.com/contracts/4.x/api/proxy#ERC1967Proxy-constructor-address-bytes-)).\n function deployUUPSProxy(\n address _logic,\n bytes memory _initCalldata\n ) internal returns (address uupsProxy) {\n uupsProxy = address(new ERC1967Proxy({_logic: _logic, _data: _initCalldata}));\n }\n\n /// @notice Creates an [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167) minimal proxy contract, also known as clones, pointing to a logic contract and allows to immediately initialize it.\n /// @param _logic The logic contract the proxy is pointing to.\n /// @param _initCalldata The initialization data for this contract.\n /// @return minimalProxy The address of the minimal proxy contract created.\n /// @dev If `_initCalldata` is non-empty, it is used in a call to the clone contract. This will typically be an encoded function call initializing the storage of the contract.\n function deployMinimalProxy(\n address _logic,\n bytes memory _initCalldata\n ) internal returns (address minimalProxy) {\n minimalProxy = _logic.clone();\n if (_initCalldata.length > 0) {\n minimalProxy.functionCall({data: _initCalldata});\n }\n }\n}\n"},"src/utils/versioning/IProtocolVersion.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\n/// @title IProtocolVersion\n/// @author Aragon X - 2022-2023\n/// @notice An interface defining the semantic Aragon OSx protocol version number.\n/// @custom:security-contact sirt@aragon.org\ninterface IProtocolVersion {\n /// @notice Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\n /// @return _version Returns the semantic Aragon OSx protocol version number.\n /// @dev This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\n function protocolVersion() external view returns (uint8[3] memory _version);\n}\n"},"src/utils/versioning/ProtocolVersion.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-or-later\n\npragma solidity ^0.8.8;\n\nimport {IProtocolVersion} from \"./IProtocolVersion.sol\";\n\n/// @title ProtocolVersion\n/// @author Aragon X - 2023\n/// @notice An abstract, stateless, non-upgradeable contract providing the current Aragon OSx protocol version number.\n/// @dev Do not add any new variables to this contract that would shift down storage in the inheritance chain.\n/// @custom:security-contact sirt@aragon.org\nabstract contract ProtocolVersion is IProtocolVersion {\n // IMPORTANT: Do not add any storage variable, see the above notice.\n\n /// @inheritdoc IProtocolVersion\n function protocolVersion() public pure returns (uint8[3] memory) {\n return [1, 4, 0];\n }\n}\n"}},"settings":{"metadata":{"bytecodeHash":"none","useLiteralContent":true},"optimizer":{"enabled":true,"runs":800},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata","storageLayout","devdoc","userdoc","evm.gasEstimates"],"":["ast"]}}}},"output":{"sources":{"@openzeppelin/contracts-upgradeable/interfaces/IERC1967Upgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/interfaces/IERC1967Upgradeable.sol","exportedSymbols":{"IERC1967Upgradeable":[20]},"id":21,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"107:23:0"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC1967Upgradeable","contractDependencies":[],"contractKind":"interface","documentation":{"id":2,"nodeType":"StructuredDocumentation","src":"132:133:0","text":" @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\n _Available since v4.8.3._"},"fullyImplemented":true,"id":20,"linearizedBaseContracts":[20],"name":"IERC1967Upgradeable","nameLocation":"276:19:0","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":3,"nodeType":"StructuredDocumentation","src":"302:68:0","text":" @dev Emitted when the implementation is upgraded."},"eventSelector":"bc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","id":7,"name":"Upgraded","nameLocation":"381:8:0","nodeType":"EventDefinition","parameters":{"id":6,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5,"indexed":true,"mutability":"mutable","name":"implementation","nameLocation":"406:14:0","nodeType":"VariableDeclaration","scope":7,"src":"390:30:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4,"name":"address","nodeType":"ElementaryTypeName","src":"390:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"389:32:0"},"src":"375:47:0"},{"anonymous":false,"documentation":{"id":8,"nodeType":"StructuredDocumentation","src":"428:67:0","text":" @dev Emitted when the admin account has changed."},"eventSelector":"7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f","id":14,"name":"AdminChanged","nameLocation":"506:12:0","nodeType":"EventDefinition","parameters":{"id":13,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10,"indexed":false,"mutability":"mutable","name":"previousAdmin","nameLocation":"527:13:0","nodeType":"VariableDeclaration","scope":14,"src":"519:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9,"name":"address","nodeType":"ElementaryTypeName","src":"519:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12,"indexed":false,"mutability":"mutable","name":"newAdmin","nameLocation":"550:8:0","nodeType":"VariableDeclaration","scope":14,"src":"542:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11,"name":"address","nodeType":"ElementaryTypeName","src":"542:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"518:41:0"},"src":"500:60:0"},{"anonymous":false,"documentation":{"id":15,"nodeType":"StructuredDocumentation","src":"566:59:0","text":" @dev Emitted when the beacon is changed."},"eventSelector":"1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e","id":19,"name":"BeaconUpgraded","nameLocation":"636:14:0","nodeType":"EventDefinition","parameters":{"id":18,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17,"indexed":true,"mutability":"mutable","name":"beacon","nameLocation":"667:6:0","nodeType":"VariableDeclaration","scope":19,"src":"651:22:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16,"name":"address","nodeType":"ElementaryTypeName","src":"651:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"650:24:0"},"src":"630:45:0"}],"scope":21,"src":"266:411:0","usedErrors":[]}],"src":"107:571:0"},"id":0},"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol","exportedSymbols":{"IERC1822ProxiableUpgradeable":[30]},"id":31,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":22,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"113:23:1"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC1822ProxiableUpgradeable","contractDependencies":[],"contractKind":"interface","documentation":{"id":23,"nodeType":"StructuredDocumentation","src":"138:203:1","text":" @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\n proxy whose upgrades are fully controlled by the current implementation."},"fullyImplemented":false,"id":30,"linearizedBaseContracts":[30],"name":"IERC1822ProxiableUpgradeable","nameLocation":"352:28:1","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":24,"nodeType":"StructuredDocumentation","src":"387:438:1","text":" @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\n address.\n IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\n bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\n function revert if invoked through a proxy."},"functionSelector":"52d1902d","id":29,"implemented":false,"kind":"function","modifiers":[],"name":"proxiableUUID","nameLocation":"839:13:1","nodeType":"FunctionDefinition","parameters":{"id":25,"nodeType":"ParameterList","parameters":[],"src":"852:2:1"},"returnParameters":{"id":28,"nodeType":"ParameterList","parameters":[{"constant":false,"id":27,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":29,"src":"878:7:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":26,"name":"bytes32","nodeType":"ElementaryTypeName","src":"878:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"877:9:1"},"scope":30,"src":"830:57:1","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":31,"src":"342:547:1","usedErrors":[]}],"src":"113:777:1"},"id":1},"@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol","exportedSymbols":{"AddressUpgradeable":[1001],"ERC1967UpgradeUpgradeable":[355],"IBeaconUpgradeable":[365],"IERC1822ProxiableUpgradeable":[30],"IERC1967Upgradeable":[20],"Initializable":[534],"StorageSlotUpgradeable":[1236]},"id":356,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":32,"literals":["solidity","^","0.8",".2"],"nodeType":"PragmaDirective","src":"116:23:2"},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.sol","file":"../beacon/IBeaconUpgradeable.sol","id":33,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":356,"sourceUnit":366,"src":"141:42:2","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/interfaces/IERC1967Upgradeable.sol","file":"../../interfaces/IERC1967Upgradeable.sol","id":34,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":356,"sourceUnit":21,"src":"184:50:2","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol","file":"../../interfaces/draft-IERC1822Upgradeable.sol","id":35,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":356,"sourceUnit":31,"src":"235:56:2","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol","file":"../../utils/AddressUpgradeable.sol","id":36,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":356,"sourceUnit":1002,"src":"292:44:2","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol","file":"../../utils/StorageSlotUpgradeable.sol","id":37,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":356,"sourceUnit":1237,"src":"337:48:2","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","file":"../utils/Initializable.sol","id":39,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":356,"sourceUnit":535,"src":"386:57:2","symbolAliases":[{"foreign":{"id":38,"name":"Initializable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":534,"src":"394:13:2","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":41,"name":"Initializable","nameLocations":["677:13:2"],"nodeType":"IdentifierPath","referencedDeclaration":534,"src":"677:13:2"},"id":42,"nodeType":"InheritanceSpecifier","src":"677:13:2"},{"baseName":{"id":43,"name":"IERC1967Upgradeable","nameLocations":["692:19:2"],"nodeType":"IdentifierPath","referencedDeclaration":20,"src":"692:19:2"},"id":44,"nodeType":"InheritanceSpecifier","src":"692:19:2"}],"canonicalName":"ERC1967UpgradeUpgradeable","contractDependencies":[],"contractKind":"contract","documentation":{"id":40,"nodeType":"StructuredDocumentation","src":"445:184:2","text":" @dev This abstract contract provides getters and event emitting update functions for\n https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\n _Available since v4.1._"},"fullyImplemented":true,"id":355,"linearizedBaseContracts":[355,20,534],"name":"ERC1967UpgradeUpgradeable","nameLocation":"648:25:2","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":47,"mutability":"constant","name":"_ROLLBACK_SLOT","nameLocation":"822:14:2","nodeType":"VariableDeclaration","scope":355,"src":"797:108:2","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":45,"name":"bytes32","nodeType":"ElementaryTypeName","src":"797:7:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307834393130666466613136666564333236306564306537313437663763633664613131613630323038623562393430366431326136333536313466666439313433","id":46,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"839:66:2","typeDescriptions":{"typeIdentifier":"t_rational_33048860383849004559742813297059419343339852917517107368639918720169455489347_by_1","typeString":"int_const 3304...(69 digits omitted)...9347"},"value":"0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143"},"visibility":"private"},{"constant":true,"documentation":{"id":48,"nodeType":"StructuredDocumentation","src":"912:214:2","text":" @dev Storage slot with the address of the current implementation.\n This is the keccak-256 hash of \"eip1967.proxy.implementation\" subtracted by 1, and is\n validated in the constructor."},"id":51,"mutability":"constant","name":"_IMPLEMENTATION_SLOT","nameLocation":"1157:20:2","nodeType":"VariableDeclaration","scope":355,"src":"1131:115:2","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":49,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1131:7:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307833363038393461313362613161333231303636376338323834393264623938646361336532303736636333373335613932306133636135303564333832626263","id":50,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1180:66:2","typeDescriptions":{"typeIdentifier":"t_rational_24440054405305269366569402256811496959409073762505157381672968839269610695612_by_1","typeString":"int_const 2444...(69 digits omitted)...5612"},"value":"0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc"},"visibility":"internal"},{"body":{"id":56,"nodeType":"Block","src":"1312:7:2","statements":[]},"id":57,"implemented":true,"kind":"function","modifiers":[{"id":54,"kind":"modifierInvocation","modifierName":{"id":53,"name":"onlyInitializing","nameLocations":["1295:16:2"],"nodeType":"IdentifierPath","referencedDeclaration":479,"src":"1295:16:2"},"nodeType":"ModifierInvocation","src":"1295:16:2"}],"name":"__ERC1967Upgrade_init","nameLocation":"1262:21:2","nodeType":"FunctionDefinition","parameters":{"id":52,"nodeType":"ParameterList","parameters":[],"src":"1283:2:2"},"returnParameters":{"id":55,"nodeType":"ParameterList","parameters":[],"src":"1312:0:2"},"scope":355,"src":"1253:66:2","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":62,"nodeType":"Block","src":"1394:7:2","statements":[]},"id":63,"implemented":true,"kind":"function","modifiers":[{"id":60,"kind":"modifierInvocation","modifierName":{"id":59,"name":"onlyInitializing","nameLocations":["1377:16:2"],"nodeType":"IdentifierPath","referencedDeclaration":479,"src":"1377:16:2"},"nodeType":"ModifierInvocation","src":"1377:16:2"}],"name":"__ERC1967Upgrade_init_unchained","nameLocation":"1334:31:2","nodeType":"FunctionDefinition","parameters":{"id":58,"nodeType":"ParameterList","parameters":[],"src":"1365:2:2"},"returnParameters":{"id":61,"nodeType":"ParameterList","parameters":[],"src":"1394:0:2"},"scope":355,"src":"1325:76:2","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":75,"nodeType":"Block","src":"1540:89:2","statements":[{"expression":{"expression":{"arguments":[{"id":71,"name":"_IMPLEMENTATION_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51,"src":"1595:20:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":69,"name":"StorageSlotUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1236,"src":"1557:22:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlotUpgradeable_$1236_$","typeString":"type(library StorageSlotUpgradeable)"}},"id":70,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1580:14:2","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":1158,"src":"1557:37:2","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$1132_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlotUpgradeable.AddressSlot storage pointer)"}},"id":72,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1557:59:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$1132_storage_ptr","typeString":"struct StorageSlotUpgradeable.AddressSlot storage pointer"}},"id":73,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1617:5:2","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":1131,"src":"1557:65:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":68,"id":74,"nodeType":"Return","src":"1550:72:2"}]},"documentation":{"id":64,"nodeType":"StructuredDocumentation","src":"1406:67:2","text":" @dev Returns the current implementation address."},"id":76,"implemented":true,"kind":"function","modifiers":[],"name":"_getImplementation","nameLocation":"1487:18:2","nodeType":"FunctionDefinition","parameters":{"id":65,"nodeType":"ParameterList","parameters":[],"src":"1505:2:2"},"returnParameters":{"id":68,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":76,"src":"1531:7:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":66,"name":"address","nodeType":"ElementaryTypeName","src":"1531:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1530:9:2"},"scope":355,"src":"1478:151:2","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":99,"nodeType":"Block","src":"1783:218:2","statements":[{"expression":{"arguments":[{"arguments":[{"id":85,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79,"src":"1831:17:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":83,"name":"AddressUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1001,"src":"1801:18:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AddressUpgradeable_$1001_$","typeString":"type(library AddressUpgradeable)"}},"id":84,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1820:10:2","memberName":"isContract","nodeType":"MemberAccess","referencedDeclaration":689,"src":"1801:29:2","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":86,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1801:48:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"455243313936373a206e657720696d706c656d656e746174696f6e206973206e6f74206120636f6e7472616374","id":87,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1851:47:2","typeDescriptions":{"typeIdentifier":"t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65","typeString":"literal_string \"ERC1967: new implementation is not a contract\""},"value":"ERC1967: new implementation is not a contract"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65","typeString":"literal_string \"ERC1967: new implementation is not a contract\""}],"id":82,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"1793:7:2","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":88,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1793:106:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":89,"nodeType":"ExpressionStatement","src":"1793:106:2"},{"expression":{"id":97,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[{"id":93,"name":"_IMPLEMENTATION_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51,"src":"1947:20:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":90,"name":"StorageSlotUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1236,"src":"1909:22:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlotUpgradeable_$1236_$","typeString":"type(library StorageSlotUpgradeable)"}},"id":92,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1932:14:2","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":1158,"src":"1909:37:2","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$1132_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlotUpgradeable.AddressSlot storage pointer)"}},"id":94,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1909:59:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$1132_storage_ptr","typeString":"struct StorageSlotUpgradeable.AddressSlot storage pointer"}},"id":95,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1969:5:2","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":1131,"src":"1909:65:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":96,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79,"src":"1977:17:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1909:85:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":98,"nodeType":"ExpressionStatement","src":"1909:85:2"}]},"documentation":{"id":77,"nodeType":"StructuredDocumentation","src":"1635:80:2","text":" @dev Stores a new address in the EIP1967 implementation slot."},"id":100,"implemented":true,"kind":"function","modifiers":[],"name":"_setImplementation","nameLocation":"1729:18:2","nodeType":"FunctionDefinition","parameters":{"id":80,"nodeType":"ParameterList","parameters":[{"constant":false,"id":79,"mutability":"mutable","name":"newImplementation","nameLocation":"1756:17:2","nodeType":"VariableDeclaration","scope":100,"src":"1748:25:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":78,"name":"address","nodeType":"ElementaryTypeName","src":"1748:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1747:27:2"},"returnParameters":{"id":81,"nodeType":"ParameterList","parameters":[],"src":"1783:0:2"},"scope":355,"src":"1720:281:2","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":114,"nodeType":"Block","src":"2163:96:2","statements":[{"expression":{"arguments":[{"id":107,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":103,"src":"2192:17:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":106,"name":"_setImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":100,"src":"2173:18:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":108,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2173:37:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":109,"nodeType":"ExpressionStatement","src":"2173:37:2"},{"eventCall":{"arguments":[{"id":111,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":103,"src":"2234:17:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":110,"name":"Upgraded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7,"src":"2225:8:2","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":112,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2225:27:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":113,"nodeType":"EmitStatement","src":"2220:32:2"}]},"documentation":{"id":101,"nodeType":"StructuredDocumentation","src":"2007:95:2","text":" @dev Perform implementation upgrade\n Emits an {Upgraded} event."},"id":115,"implemented":true,"kind":"function","modifiers":[],"name":"_upgradeTo","nameLocation":"2116:10:2","nodeType":"FunctionDefinition","parameters":{"id":104,"nodeType":"ParameterList","parameters":[{"constant":false,"id":103,"mutability":"mutable","name":"newImplementation","nameLocation":"2135:17:2","nodeType":"VariableDeclaration","scope":115,"src":"2127:25:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":102,"name":"address","nodeType":"ElementaryTypeName","src":"2127:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2126:27:2"},"returnParameters":{"id":105,"nodeType":"ParameterList","parameters":[],"src":"2163:0:2"},"scope":355,"src":"2107:152:2","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":144,"nodeType":"Block","src":"2491:178:2","statements":[{"expression":{"arguments":[{"id":126,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":118,"src":"2512:17:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":125,"name":"_upgradeTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":115,"src":"2501:10:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":127,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2501:29:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":128,"nodeType":"ExpressionStatement","src":"2501:29:2"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":134,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":132,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":129,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120,"src":"2544:4:2","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":130,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2549:6:2","memberName":"length","nodeType":"MemberAccess","src":"2544:11:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":131,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2558:1:2","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2544:15:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"id":133,"name":"forceCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":122,"src":"2563:9:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2544:28:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":143,"nodeType":"IfStatement","src":"2540:123:2","trueBody":{"id":142,"nodeType":"Block","src":"2574:89:2","statements":[{"expression":{"arguments":[{"id":138,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":118,"src":"2628:17:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":139,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120,"src":"2647:4:2","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":135,"name":"AddressUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1001,"src":"2588:18:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AddressUpgradeable_$1001_$","typeString":"type(library AddressUpgradeable)"}},"id":137,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2607:20:2","memberName":"functionDelegateCall","nodeType":"MemberAccess","referencedDeclaration":888,"src":"2588:39:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory) returns (bytes memory)"}},"id":140,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2588:64:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":141,"nodeType":"ExpressionStatement","src":"2588:64:2"}]}}]},"documentation":{"id":116,"nodeType":"StructuredDocumentation","src":"2265:123:2","text":" @dev Perform implementation upgrade with additional setup call.\n Emits an {Upgraded} event."},"id":145,"implemented":true,"kind":"function","modifiers":[],"name":"_upgradeToAndCall","nameLocation":"2402:17:2","nodeType":"FunctionDefinition","parameters":{"id":123,"nodeType":"ParameterList","parameters":[{"constant":false,"id":118,"mutability":"mutable","name":"newImplementation","nameLocation":"2428:17:2","nodeType":"VariableDeclaration","scope":145,"src":"2420:25:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":117,"name":"address","nodeType":"ElementaryTypeName","src":"2420:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120,"mutability":"mutable","name":"data","nameLocation":"2460:4:2","nodeType":"VariableDeclaration","scope":145,"src":"2447:17:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":119,"name":"bytes","nodeType":"ElementaryTypeName","src":"2447:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":122,"mutability":"mutable","name":"forceCall","nameLocation":"2471:9:2","nodeType":"VariableDeclaration","scope":145,"src":"2466:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":121,"name":"bool","nodeType":"ElementaryTypeName","src":"2466:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2419:62:2"},"returnParameters":{"id":124,"nodeType":"ParameterList","parameters":[],"src":"2491:0:2"},"scope":355,"src":"2393:276:2","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":197,"nodeType":"Block","src":"2943:842:2","statements":[{"condition":{"expression":{"arguments":[{"id":157,"name":"_ROLLBACK_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47,"src":"3295:14:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":155,"name":"StorageSlotUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1236,"src":"3257:22:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlotUpgradeable_$1236_$","typeString":"type(library StorageSlotUpgradeable)"}},"id":156,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3280:14:2","memberName":"getBooleanSlot","nodeType":"MemberAccess","referencedDeclaration":1169,"src":"3257:37:2","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_BooleanSlot_$1135_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlotUpgradeable.BooleanSlot storage pointer)"}},"id":158,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3257:53:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_BooleanSlot_$1135_storage_ptr","typeString":"struct StorageSlotUpgradeable.BooleanSlot storage pointer"}},"id":159,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3311:5:2","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":1134,"src":"3257:59:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":195,"nodeType":"Block","src":"3386:393:2","statements":[{"clauses":[{"block":{"id":180,"nodeType":"Block","src":"3491:115:2","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":176,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":174,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":171,"src":"3517:4:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":175,"name":"_IMPLEMENTATION_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51,"src":"3525:20:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"3517:28:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"45524331393637557067726164653a20756e737570706f727465642070726f786961626c6555554944","id":177,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3547:43:2","typeDescriptions":{"typeIdentifier":"t_stringliteral_76b6b6debfc5febf101145a79ecf0b0d2e89e397dfdab2bca99888370411152c","typeString":"literal_string \"ERC1967Upgrade: unsupported proxiableUUID\""},"value":"ERC1967Upgrade: unsupported proxiableUUID"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_76b6b6debfc5febf101145a79ecf0b0d2e89e397dfdab2bca99888370411152c","typeString":"literal_string \"ERC1967Upgrade: unsupported proxiableUUID\""}],"id":173,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"3509:7:2","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":178,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3509:82:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":179,"nodeType":"ExpressionStatement","src":"3509:82:2"}]},"errorName":"","id":181,"nodeType":"TryCatchClause","parameters":{"id":172,"nodeType":"ParameterList","parameters":[{"constant":false,"id":171,"mutability":"mutable","name":"slot","nameLocation":"3485:4:2","nodeType":"VariableDeclaration","scope":181,"src":"3477:12:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":170,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3477:7:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3476:14:2"},"src":"3468:138:2"},{"block":{"id":186,"nodeType":"Block","src":"3613:89:2","statements":[{"expression":{"arguments":[{"hexValue":"45524331393637557067726164653a206e657720696d706c656d656e746174696f6e206973206e6f742055555053","id":183,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3638:48:2","typeDescriptions":{"typeIdentifier":"t_stringliteral_8e8e2fbcb586f700b5b14e2c4a650c8d83b9773c31c5fe8962070ea544e11f24","typeString":"literal_string \"ERC1967Upgrade: new implementation is not UUPS\""},"value":"ERC1967Upgrade: new implementation is not UUPS"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_8e8e2fbcb586f700b5b14e2c4a650c8d83b9773c31c5fe8962070ea544e11f24","typeString":"literal_string \"ERC1967Upgrade: new implementation is not UUPS\""}],"id":182,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[4294967277,4294967277],"referencedDeclaration":4294967277,"src":"3631:6:2","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":184,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3631:56:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":185,"nodeType":"ExpressionStatement","src":"3631:56:2"}]},"errorName":"","id":187,"nodeType":"TryCatchClause","src":"3607:95:2"}],"externalCall":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":166,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":148,"src":"3433:17:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":165,"name":"IERC1822ProxiableUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30,"src":"3404:28:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC1822ProxiableUpgradeable_$30_$","typeString":"type(contract IERC1822ProxiableUpgradeable)"}},"id":167,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3404:47:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC1822ProxiableUpgradeable_$30","typeString":"contract IERC1822ProxiableUpgradeable"}},"id":168,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3452:13:2","memberName":"proxiableUUID","nodeType":"MemberAccess","referencedDeclaration":29,"src":"3404:61:2","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_bytes32_$","typeString":"function () view external returns (bytes32)"}},"id":169,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3404:63:2","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":188,"nodeType":"TryStatement","src":"3400:302:2"},{"expression":{"arguments":[{"id":190,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":148,"src":"3733:17:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":191,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":150,"src":"3752:4:2","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":192,"name":"forceCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":152,"src":"3758:9:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":189,"name":"_upgradeToAndCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":145,"src":"3715:17:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_bool_$returns$__$","typeString":"function (address,bytes memory,bool)"}},"id":193,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3715:53:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":194,"nodeType":"ExpressionStatement","src":"3715:53:2"}]},"id":196,"nodeType":"IfStatement","src":"3253:526:2","trueBody":{"id":164,"nodeType":"Block","src":"3318:62:2","statements":[{"expression":{"arguments":[{"id":161,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":148,"src":"3351:17:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":160,"name":"_setImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":100,"src":"3332:18:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":162,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3332:37:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":163,"nodeType":"ExpressionStatement","src":"3332:37:2"}]}}]},"documentation":{"id":146,"nodeType":"StructuredDocumentation","src":"2675:161:2","text":" @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\n Emits an {Upgraded} event."},"id":198,"implemented":true,"kind":"function","modifiers":[],"name":"_upgradeToAndCallUUPS","nameLocation":"2850:21:2","nodeType":"FunctionDefinition","parameters":{"id":153,"nodeType":"ParameterList","parameters":[{"constant":false,"id":148,"mutability":"mutable","name":"newImplementation","nameLocation":"2880:17:2","nodeType":"VariableDeclaration","scope":198,"src":"2872:25:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":147,"name":"address","nodeType":"ElementaryTypeName","src":"2872:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":150,"mutability":"mutable","name":"data","nameLocation":"2912:4:2","nodeType":"VariableDeclaration","scope":198,"src":"2899:17:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":149,"name":"bytes","nodeType":"ElementaryTypeName","src":"2899:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":152,"mutability":"mutable","name":"forceCall","nameLocation":"2923:9:2","nodeType":"VariableDeclaration","scope":198,"src":"2918:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":151,"name":"bool","nodeType":"ElementaryTypeName","src":"2918:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2871:62:2"},"returnParameters":{"id":154,"nodeType":"ParameterList","parameters":[],"src":"2943:0:2"},"scope":355,"src":"2841:944:2","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"constant":true,"documentation":{"id":199,"nodeType":"StructuredDocumentation","src":"3791:189:2","text":" @dev Storage slot with the admin of the contract.\n This is the keccak-256 hash of \"eip1967.proxy.admin\" subtracted by 1, and is\n validated in the constructor."},"id":202,"mutability":"constant","name":"_ADMIN_SLOT","nameLocation":"4011:11:2","nodeType":"VariableDeclaration","scope":355,"src":"3985:106:2","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":200,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3985:7:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307862353331323736383461353638623331373361653133623966386136303136653234336536336236653865653131373864366137313738353062356436313033","id":201,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4025:66:2","typeDescriptions":{"typeIdentifier":"t_rational_81955473079516046949633743016697847541294818689821282749996681496272635257091_by_1","typeString":"int_const 8195...(69 digits omitted)...7091"},"value":"0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103"},"visibility":"internal"},{"body":{"id":214,"nodeType":"Block","src":"4206:80:2","statements":[{"expression":{"expression":{"arguments":[{"id":210,"name":"_ADMIN_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":202,"src":"4261:11:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":208,"name":"StorageSlotUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1236,"src":"4223:22:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlotUpgradeable_$1236_$","typeString":"type(library StorageSlotUpgradeable)"}},"id":209,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4246:14:2","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":1158,"src":"4223:37:2","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$1132_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlotUpgradeable.AddressSlot storage pointer)"}},"id":211,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4223:50:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$1132_storage_ptr","typeString":"struct StorageSlotUpgradeable.AddressSlot storage pointer"}},"id":212,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4274:5:2","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":1131,"src":"4223:56:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":207,"id":213,"nodeType":"Return","src":"4216:63:2"}]},"documentation":{"id":203,"nodeType":"StructuredDocumentation","src":"4098:50:2","text":" @dev Returns the current admin."},"id":215,"implemented":true,"kind":"function","modifiers":[],"name":"_getAdmin","nameLocation":"4162:9:2","nodeType":"FunctionDefinition","parameters":{"id":204,"nodeType":"ParameterList","parameters":[],"src":"4171:2:2"},"returnParameters":{"id":207,"nodeType":"ParameterList","parameters":[{"constant":false,"id":206,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":215,"src":"4197:7:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":205,"name":"address","nodeType":"ElementaryTypeName","src":"4197:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4196:9:2"},"scope":355,"src":"4153:133:2","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":240,"nodeType":"Block","src":"4413:167:2","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":227,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":222,"name":"newAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":218,"src":"4431:8:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":225,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4451:1:2","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":224,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4443:7:2","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":223,"name":"address","nodeType":"ElementaryTypeName","src":"4443:7:2","typeDescriptions":{}}},"id":226,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4443:10:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4431:22:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"455243313936373a206e65772061646d696e20697320746865207a65726f2061646472657373","id":228,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4455:40:2","typeDescriptions":{"typeIdentifier":"t_stringliteral_3820e16891102c1360a787e6e648431097d92537f969d458f5c94b56f8318be5","typeString":"literal_string \"ERC1967: new admin is the zero address\""},"value":"ERC1967: new admin is the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_3820e16891102c1360a787e6e648431097d92537f969d458f5c94b56f8318be5","typeString":"literal_string \"ERC1967: new admin is the zero address\""}],"id":221,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"4423:7:2","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":229,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4423:73:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":230,"nodeType":"ExpressionStatement","src":"4423:73:2"},{"expression":{"id":238,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[{"id":234,"name":"_ADMIN_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":202,"src":"4544:11:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":231,"name":"StorageSlotUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1236,"src":"4506:22:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlotUpgradeable_$1236_$","typeString":"type(library StorageSlotUpgradeable)"}},"id":233,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4529:14:2","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":1158,"src":"4506:37:2","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$1132_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlotUpgradeable.AddressSlot storage pointer)"}},"id":235,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4506:50:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$1132_storage_ptr","typeString":"struct StorageSlotUpgradeable.AddressSlot storage pointer"}},"id":236,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4557:5:2","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":1131,"src":"4506:56:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":237,"name":"newAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":218,"src":"4565:8:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4506:67:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":239,"nodeType":"ExpressionStatement","src":"4506:67:2"}]},"documentation":{"id":216,"nodeType":"StructuredDocumentation","src":"4292:71:2","text":" @dev Stores a new address in the EIP1967 admin slot."},"id":241,"implemented":true,"kind":"function","modifiers":[],"name":"_setAdmin","nameLocation":"4377:9:2","nodeType":"FunctionDefinition","parameters":{"id":219,"nodeType":"ParameterList","parameters":[{"constant":false,"id":218,"mutability":"mutable","name":"newAdmin","nameLocation":"4395:8:2","nodeType":"VariableDeclaration","scope":241,"src":"4387:16:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":217,"name":"address","nodeType":"ElementaryTypeName","src":"4387:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4386:18:2"},"returnParameters":{"id":220,"nodeType":"ParameterList","parameters":[],"src":"4413:0:2"},"scope":355,"src":"4368:212:2","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":257,"nodeType":"Block","src":"4740:86:2","statements":[{"eventCall":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":248,"name":"_getAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":215,"src":"4768:9:2","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":249,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4768:11:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":250,"name":"newAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":244,"src":"4781:8:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":247,"name":"AdminChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14,"src":"4755:12:2","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":251,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4755:35:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":252,"nodeType":"EmitStatement","src":"4750:40:2"},{"expression":{"arguments":[{"id":254,"name":"newAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":244,"src":"4810:8:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":253,"name":"_setAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":241,"src":"4800:9:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":255,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4800:19:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":256,"nodeType":"ExpressionStatement","src":"4800:19:2"}]},"documentation":{"id":242,"nodeType":"StructuredDocumentation","src":"4586:100:2","text":" @dev Changes the admin of the proxy.\n Emits an {AdminChanged} event."},"id":258,"implemented":true,"kind":"function","modifiers":[],"name":"_changeAdmin","nameLocation":"4700:12:2","nodeType":"FunctionDefinition","parameters":{"id":245,"nodeType":"ParameterList","parameters":[{"constant":false,"id":244,"mutability":"mutable","name":"newAdmin","nameLocation":"4721:8:2","nodeType":"VariableDeclaration","scope":258,"src":"4713:16:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":243,"name":"address","nodeType":"ElementaryTypeName","src":"4713:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4712:18:2"},"returnParameters":{"id":246,"nodeType":"ParameterList","parameters":[],"src":"4740:0:2"},"scope":355,"src":"4691:135:2","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"constant":true,"documentation":{"id":259,"nodeType":"StructuredDocumentation","src":"4832:232:2","text":" @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\n This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor."},"id":262,"mutability":"constant","name":"_BEACON_SLOT","nameLocation":"5095:12:2","nodeType":"VariableDeclaration","scope":355,"src":"5069:107:2","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":260,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5069:7:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307861336630616437346535343233616562666438306433656634333436353738333335613961373261656165653539666636636233353832623335313333643530","id":261,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5110:66:2","typeDescriptions":{"typeIdentifier":"t_rational_74152234768234802001998023604048924213078445070507226371336425913862612794704_by_1","typeString":"int_const 7415...(69 digits omitted)...4704"},"value":"0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50"},"visibility":"internal"},{"body":{"id":274,"nodeType":"Block","src":"5293:81:2","statements":[{"expression":{"expression":{"arguments":[{"id":270,"name":"_BEACON_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":262,"src":"5348:12:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":268,"name":"StorageSlotUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1236,"src":"5310:22:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlotUpgradeable_$1236_$","typeString":"type(library StorageSlotUpgradeable)"}},"id":269,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5333:14:2","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":1158,"src":"5310:37:2","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$1132_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlotUpgradeable.AddressSlot storage pointer)"}},"id":271,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5310:51:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$1132_storage_ptr","typeString":"struct StorageSlotUpgradeable.AddressSlot storage pointer"}},"id":272,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5362:5:2","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":1131,"src":"5310:57:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":267,"id":273,"nodeType":"Return","src":"5303:64:2"}]},"documentation":{"id":263,"nodeType":"StructuredDocumentation","src":"5183:51:2","text":" @dev Returns the current beacon."},"id":275,"implemented":true,"kind":"function","modifiers":[],"name":"_getBeacon","nameLocation":"5248:10:2","nodeType":"FunctionDefinition","parameters":{"id":264,"nodeType":"ParameterList","parameters":[],"src":"5258:2:2"},"returnParameters":{"id":267,"nodeType":"ParameterList","parameters":[{"constant":false,"id":266,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":275,"src":"5284:7:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":265,"name":"address","nodeType":"ElementaryTypeName","src":"5284:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5283:9:2"},"scope":355,"src":"5239:135:2","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":310,"nodeType":"Block","src":"5503:368:2","statements":[{"expression":{"arguments":[{"arguments":[{"id":284,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":278,"src":"5551:9:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":282,"name":"AddressUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1001,"src":"5521:18:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AddressUpgradeable_$1001_$","typeString":"type(library AddressUpgradeable)"}},"id":283,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5540:10:2","memberName":"isContract","nodeType":"MemberAccess","referencedDeclaration":689,"src":"5521:29:2","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":285,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5521:40:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"455243313936373a206e657720626561636f6e206973206e6f74206120636f6e7472616374","id":286,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5563:39:2","typeDescriptions":{"typeIdentifier":"t_stringliteral_9589b7809634e4928033de18bb696e9af4ef71b703652af5245f2dbebf2f4470","typeString":"literal_string \"ERC1967: new beacon is not a contract\""},"value":"ERC1967: new beacon is not a contract"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9589b7809634e4928033de18bb696e9af4ef71b703652af5245f2dbebf2f4470","typeString":"literal_string \"ERC1967: new beacon is not a contract\""}],"id":281,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"5513:7:2","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":287,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5513:90:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":288,"nodeType":"ExpressionStatement","src":"5513:90:2"},{"expression":{"arguments":[{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":293,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":278,"src":"5683:9:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":292,"name":"IBeaconUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":365,"src":"5664:18:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBeaconUpgradeable_$365_$","typeString":"type(contract IBeaconUpgradeable)"}},"id":294,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5664:29:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBeaconUpgradeable_$365","typeString":"contract IBeaconUpgradeable"}},"id":295,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5694:14:2","memberName":"implementation","nodeType":"MemberAccess","referencedDeclaration":364,"src":"5664:44:2","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":296,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5664:46:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":290,"name":"AddressUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1001,"src":"5634:18:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AddressUpgradeable_$1001_$","typeString":"type(library AddressUpgradeable)"}},"id":291,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5653:10:2","memberName":"isContract","nodeType":"MemberAccess","referencedDeclaration":689,"src":"5634:29:2","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":297,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5634:77:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"455243313936373a20626561636f6e20696d706c656d656e746174696f6e206973206e6f74206120636f6e7472616374","id":298,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5725:50:2","typeDescriptions":{"typeIdentifier":"t_stringliteral_f95fd1f5b5578816eb23f6ca0f2439b4b5e4094dc16e99c3b8e91603a83f93c8","typeString":"literal_string \"ERC1967: beacon implementation is not a contract\""},"value":"ERC1967: beacon implementation is not a contract"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_f95fd1f5b5578816eb23f6ca0f2439b4b5e4094dc16e99c3b8e91603a83f93c8","typeString":"literal_string \"ERC1967: beacon implementation is not a contract\""}],"id":289,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"5613:7:2","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":299,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5613:172:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":300,"nodeType":"ExpressionStatement","src":"5613:172:2"},{"expression":{"id":308,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[{"id":304,"name":"_BEACON_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":262,"src":"5833:12:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":301,"name":"StorageSlotUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1236,"src":"5795:22:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlotUpgradeable_$1236_$","typeString":"type(library StorageSlotUpgradeable)"}},"id":303,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5818:14:2","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":1158,"src":"5795:37:2","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$1132_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlotUpgradeable.AddressSlot storage pointer)"}},"id":305,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5795:51:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$1132_storage_ptr","typeString":"struct StorageSlotUpgradeable.AddressSlot storage pointer"}},"id":306,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5847:5:2","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":1131,"src":"5795:57:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":307,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":278,"src":"5855:9:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5795:69:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":309,"nodeType":"ExpressionStatement","src":"5795:69:2"}]},"documentation":{"id":276,"nodeType":"StructuredDocumentation","src":"5380:71:2","text":" @dev Stores a new beacon in the EIP1967 beacon slot."},"id":311,"implemented":true,"kind":"function","modifiers":[],"name":"_setBeacon","nameLocation":"5465:10:2","nodeType":"FunctionDefinition","parameters":{"id":279,"nodeType":"ParameterList","parameters":[{"constant":false,"id":278,"mutability":"mutable","name":"newBeacon","nameLocation":"5484:9:2","nodeType":"VariableDeclaration","scope":311,"src":"5476:17:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":277,"name":"address","nodeType":"ElementaryTypeName","src":"5476:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5475:19:2"},"returnParameters":{"id":280,"nodeType":"ParameterList","parameters":[],"src":"5503:0:2"},"scope":355,"src":"5456:415:2","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":348,"nodeType":"Block","src":"6270:239:2","statements":[{"expression":{"arguments":[{"id":322,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":314,"src":"6291:9:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":321,"name":"_setBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":311,"src":"6280:10:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":323,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6280:21:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":324,"nodeType":"ExpressionStatement","src":"6280:21:2"},{"eventCall":{"arguments":[{"id":326,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":314,"src":"6331:9:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":325,"name":"BeaconUpgraded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19,"src":"6316:14:2","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":327,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6316:25:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":328,"nodeType":"EmitStatement","src":"6311:30:2"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":334,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":332,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":329,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":316,"src":"6355:4:2","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":330,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6360:6:2","memberName":"length","nodeType":"MemberAccess","src":"6355:11:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":331,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6369:1:2","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6355:15:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"id":333,"name":"forceCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":318,"src":"6374:9:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6355:28:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":347,"nodeType":"IfStatement","src":"6351:152:2","trueBody":{"id":346,"nodeType":"Block","src":"6385:118:2","statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":339,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":314,"src":"6458:9:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":338,"name":"IBeaconUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":365,"src":"6439:18:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBeaconUpgradeable_$365_$","typeString":"type(contract IBeaconUpgradeable)"}},"id":340,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6439:29:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBeaconUpgradeable_$365","typeString":"contract IBeaconUpgradeable"}},"id":341,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6469:14:2","memberName":"implementation","nodeType":"MemberAccess","referencedDeclaration":364,"src":"6439:44:2","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":342,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6439:46:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":343,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":316,"src":"6487:4:2","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":335,"name":"AddressUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1001,"src":"6399:18:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AddressUpgradeable_$1001_$","typeString":"type(library AddressUpgradeable)"}},"id":337,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6418:20:2","memberName":"functionDelegateCall","nodeType":"MemberAccess","referencedDeclaration":888,"src":"6399:39:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory) returns (bytes memory)"}},"id":344,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6399:93:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":345,"nodeType":"ExpressionStatement","src":"6399:93:2"}]}}]},"documentation":{"id":312,"nodeType":"StructuredDocumentation","src":"5877:292:2","text":" @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\n not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\n Emits a {BeaconUpgraded} event."},"id":349,"implemented":true,"kind":"function","modifiers":[],"name":"_upgradeBeaconToAndCall","nameLocation":"6183:23:2","nodeType":"FunctionDefinition","parameters":{"id":319,"nodeType":"ParameterList","parameters":[{"constant":false,"id":314,"mutability":"mutable","name":"newBeacon","nameLocation":"6215:9:2","nodeType":"VariableDeclaration","scope":349,"src":"6207:17:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":313,"name":"address","nodeType":"ElementaryTypeName","src":"6207:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":316,"mutability":"mutable","name":"data","nameLocation":"6239:4:2","nodeType":"VariableDeclaration","scope":349,"src":"6226:17:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":315,"name":"bytes","nodeType":"ElementaryTypeName","src":"6226:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":318,"mutability":"mutable","name":"forceCall","nameLocation":"6250:9:2","nodeType":"VariableDeclaration","scope":349,"src":"6245:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":317,"name":"bool","nodeType":"ElementaryTypeName","src":"6245:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6206:54:2"},"returnParameters":{"id":320,"nodeType":"ParameterList","parameters":[],"src":"6270:0:2"},"scope":355,"src":"6174:335:2","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"constant":false,"documentation":{"id":350,"nodeType":"StructuredDocumentation","src":"6515:254:2","text":" @dev This empty reserved space is put in place to allow future versions to add new\n variables without shifting down storage in the inheritance chain.\n See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"},"id":354,"mutability":"mutable","name":"__gap","nameLocation":"6794:5:2","nodeType":"VariableDeclaration","scope":355,"src":"6774:25:2","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$50_storage","typeString":"uint256[50]"},"typeName":{"baseType":{"id":351,"name":"uint256","nodeType":"ElementaryTypeName","src":"6774:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":353,"length":{"hexValue":"3530","id":352,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6782:2:2","typeDescriptions":{"typeIdentifier":"t_rational_50_by_1","typeString":"int_const 50"},"value":"50"},"nodeType":"ArrayTypeName","src":"6774:11:2","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$50_storage_ptr","typeString":"uint256[50]"}},"visibility":"private"}],"scope":356,"src":"630:6172:2","usedErrors":[]}],"src":"116:6687:2"},"id":2},"@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.sol","exportedSymbols":{"IBeaconUpgradeable":[365]},"id":366,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":357,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"93:23:3"},{"abstract":false,"baseContracts":[],"canonicalName":"IBeaconUpgradeable","contractDependencies":[],"contractKind":"interface","documentation":{"id":358,"nodeType":"StructuredDocumentation","src":"118:79:3","text":" @dev This is the interface that {BeaconProxy} expects of its beacon."},"fullyImplemented":false,"id":365,"linearizedBaseContracts":[365],"name":"IBeaconUpgradeable","nameLocation":"208:18:3","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":359,"nodeType":"StructuredDocumentation","src":"233:162:3","text":" @dev Must return an address that can be used as a delegate call target.\n {BeaconProxy} will check that this address is a contract."},"functionSelector":"5c60da1b","id":364,"implemented":false,"kind":"function","modifiers":[],"name":"implementation","nameLocation":"409:14:3","nodeType":"FunctionDefinition","parameters":{"id":360,"nodeType":"ParameterList","parameters":[],"src":"423:2:3"},"returnParameters":{"id":363,"nodeType":"ParameterList","parameters":[{"constant":false,"id":362,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":364,"src":"449:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":361,"name":"address","nodeType":"ElementaryTypeName","src":"449:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"448:9:3"},"scope":365,"src":"400:58:3","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":366,"src":"198:262:3","usedErrors":[]}],"src":"93:368:3"},"id":3},"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","exportedSymbols":{"AddressUpgradeable":[1001],"Initializable":[534]},"id":535,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":367,"literals":["solidity","^","0.8",".2"],"nodeType":"PragmaDirective","src":"113:23:4"},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol","file":"../../utils/AddressUpgradeable.sol","id":368,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":535,"sourceUnit":1002,"src":"138:44:4","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[],"canonicalName":"Initializable","contractDependencies":[],"contractKind":"contract","documentation":{"id":369,"nodeType":"StructuredDocumentation","src":"184:2209:4","text":" @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\n behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\n external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\n function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\n The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\n reused. This mechanism prevents re-execution of each \"step\" but allows the creation of new initialization steps in\n case an upgrade adds a module that needs to be initialized.\n For example:\n [.hljs-theme-light.nopadding]\n ```solidity\n contract MyToken is ERC20Upgradeable {\n function initialize() initializer public {\n __ERC20_init(\"MyToken\", \"MTK\");\n }\n }\n contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\n function initializeV2() reinitializer(2) public {\n __ERC20Permit_init(\"MyToken\");\n }\n }\n ```\n TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\n possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\n CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\n that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\n [CAUTION]\n ====\n Avoid leaving a contract uninitialized.\n An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\n contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\n the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\n [.hljs-theme-light.nopadding]\n ```\n /// @custom:oz-upgrades-unsafe-allow constructor\n constructor() {\n _disableInitializers();\n }\n ```\n ===="},"fullyImplemented":true,"id":534,"linearizedBaseContracts":[534],"name":"Initializable","nameLocation":"2412:13:4","nodeType":"ContractDefinition","nodes":[{"constant":false,"documentation":{"id":370,"nodeType":"StructuredDocumentation","src":"2432:109:4","text":" @dev Indicates that the contract has been initialized.\n @custom:oz-retyped-from bool"},"id":372,"mutability":"mutable","name":"_initialized","nameLocation":"2560:12:4","nodeType":"VariableDeclaration","scope":534,"src":"2546:26:4","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":371,"name":"uint8","nodeType":"ElementaryTypeName","src":"2546:5:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"private"},{"constant":false,"documentation":{"id":373,"nodeType":"StructuredDocumentation","src":"2579:91:4","text":" @dev Indicates that the contract is in the process of being initialized."},"id":375,"mutability":"mutable","name":"_initializing","nameLocation":"2688:13:4","nodeType":"VariableDeclaration","scope":534,"src":"2675:26:4","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":374,"name":"bool","nodeType":"ElementaryTypeName","src":"2675:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"private"},{"anonymous":false,"documentation":{"id":376,"nodeType":"StructuredDocumentation","src":"2708:90:4","text":" @dev Triggered when the contract has been initialized or reinitialized."},"eventSelector":"7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498","id":380,"name":"Initialized","nameLocation":"2809:11:4","nodeType":"EventDefinition","parameters":{"id":379,"nodeType":"ParameterList","parameters":[{"constant":false,"id":378,"indexed":false,"mutability":"mutable","name":"version","nameLocation":"2827:7:4","nodeType":"VariableDeclaration","scope":380,"src":"2821:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":377,"name":"uint8","nodeType":"ElementaryTypeName","src":"2821:5:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"2820:15:4"},"src":"2803:33:4"},{"body":{"id":435,"nodeType":"Block","src":"3269:483:4","statements":[{"assignments":[384],"declarations":[{"constant":false,"id":384,"mutability":"mutable","name":"isTopLevelCall","nameLocation":"3284:14:4","nodeType":"VariableDeclaration","scope":435,"src":"3279:19:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":383,"name":"bool","nodeType":"ElementaryTypeName","src":"3279:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":387,"initialValue":{"id":386,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"3301:14:4","subExpression":{"id":385,"name":"_initializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":375,"src":"3302:13:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"3279:36:4"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":408,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":393,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":389,"name":"isTopLevelCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":384,"src":"3347:14:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":392,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":390,"name":"_initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":372,"src":"3365:12:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"31","id":391,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3380:1:4","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3365:16:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3347:34:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":394,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3346:36:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":406,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":402,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"3387:45:4","subExpression":{"arguments":[{"arguments":[{"id":399,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967268,"src":"3426:4:4","typeDescriptions":{"typeIdentifier":"t_contract$_Initializable_$534","typeString":"contract Initializable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Initializable_$534","typeString":"contract Initializable"}],"id":398,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3418:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":397,"name":"address","nodeType":"ElementaryTypeName","src":"3418:7:4","typeDescriptions":{}}},"id":400,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3418:13:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":395,"name":"AddressUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1001,"src":"3388:18:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AddressUpgradeable_$1001_$","typeString":"type(library AddressUpgradeable)"}},"id":396,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3407:10:4","memberName":"isContract","nodeType":"MemberAccess","referencedDeclaration":689,"src":"3388:29:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":401,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3388:44:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":405,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":403,"name":"_initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":372,"src":"3436:12:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":404,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3452:1:4","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3436:17:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3387:66:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":407,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3386:68:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3346:108:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a6564","id":409,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3468:48:4","typeDescriptions":{"typeIdentifier":"t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759","typeString":"literal_string \"Initializable: contract is already initialized\""},"value":"Initializable: contract is already initialized"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759","typeString":"literal_string \"Initializable: contract is already initialized\""}],"id":388,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"3325:7:4","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":410,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3325:201:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":411,"nodeType":"ExpressionStatement","src":"3325:201:4"},{"expression":{"id":414,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":412,"name":"_initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":372,"src":"3536:12:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"31","id":413,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3551:1:4","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3536:16:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":415,"nodeType":"ExpressionStatement","src":"3536:16:4"},{"condition":{"id":416,"name":"isTopLevelCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":384,"src":"3566:14:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":422,"nodeType":"IfStatement","src":"3562:65:4","trueBody":{"id":421,"nodeType":"Block","src":"3582:45:4","statements":[{"expression":{"id":419,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":417,"name":"_initializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":375,"src":"3596:13:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":418,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3612:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"3596:20:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":420,"nodeType":"ExpressionStatement","src":"3596:20:4"}]}},{"id":423,"nodeType":"PlaceholderStatement","src":"3636:1:4"},{"condition":{"id":424,"name":"isTopLevelCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":384,"src":"3651:14:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":434,"nodeType":"IfStatement","src":"3647:99:4","trueBody":{"id":433,"nodeType":"Block","src":"3667:79:4","statements":[{"expression":{"id":427,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":425,"name":"_initializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":375,"src":"3681:13:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":426,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3697:5:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"3681:21:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":428,"nodeType":"ExpressionStatement","src":"3681:21:4"},{"eventCall":{"arguments":[{"hexValue":"31","id":430,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3733:1:4","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":429,"name":"Initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":380,"src":"3721:11:4","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint8_$returns$__$","typeString":"function (uint8)"}},"id":431,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3721:14:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":432,"nodeType":"EmitStatement","src":"3716:19:4"}]}}]},"documentation":{"id":381,"nodeType":"StructuredDocumentation","src":"2842:399:4","text":" @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\n `onlyInitializing` functions can be used to initialize parent contracts.\n Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\n constructor.\n Emits an {Initialized} event."},"id":436,"name":"initializer","nameLocation":"3255:11:4","nodeType":"ModifierDefinition","parameters":{"id":382,"nodeType":"ParameterList","parameters":[],"src":"3266:2:4"},"src":"3246:506:4","virtual":false,"visibility":"internal"},{"body":{"id":468,"nodeType":"Block","src":"4863:255:4","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":447,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":443,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"4881:14:4","subExpression":{"id":442,"name":"_initializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":375,"src":"4882:13:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":446,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":444,"name":"_initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":372,"src":"4899:12:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":445,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":439,"src":"4914:7:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"4899:22:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4881:40:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a6564","id":448,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4923:48:4","typeDescriptions":{"typeIdentifier":"t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759","typeString":"literal_string \"Initializable: contract is already initialized\""},"value":"Initializable: contract is already initialized"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759","typeString":"literal_string \"Initializable: contract is already initialized\""}],"id":441,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"4873:7:4","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":449,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4873:99:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":450,"nodeType":"ExpressionStatement","src":"4873:99:4"},{"expression":{"id":453,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":451,"name":"_initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":372,"src":"4982:12:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":452,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":439,"src":"4997:7:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"4982:22:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":454,"nodeType":"ExpressionStatement","src":"4982:22:4"},{"expression":{"id":457,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":455,"name":"_initializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":375,"src":"5014:13:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":456,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5030:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"5014:20:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":458,"nodeType":"ExpressionStatement","src":"5014:20:4"},{"id":459,"nodeType":"PlaceholderStatement","src":"5044:1:4"},{"expression":{"id":462,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":460,"name":"_initializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":375,"src":"5055:13:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":461,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5071:5:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"5055:21:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":463,"nodeType":"ExpressionStatement","src":"5055:21:4"},{"eventCall":{"arguments":[{"id":465,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":439,"src":"5103:7:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":464,"name":"Initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":380,"src":"5091:11:4","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint8_$returns$__$","typeString":"function (uint8)"}},"id":466,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5091:20:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":467,"nodeType":"EmitStatement","src":"5086:25:4"}]},"documentation":{"id":437,"nodeType":"StructuredDocumentation","src":"3758:1062:4","text":" @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\n contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\n used to initialize parent contracts.\n A reinitializer may be used after the original initialization step. This is essential to configure modules that\n are added through upgrades and that require initialization.\n When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\n cannot be nested. If one is invoked in the context of another, execution will revert.\n Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\n a contract, executing them in the right order is up to the developer or operator.\n WARNING: setting the version to 255 will prevent any future reinitialization.\n Emits an {Initialized} event."},"id":469,"name":"reinitializer","nameLocation":"4834:13:4","nodeType":"ModifierDefinition","parameters":{"id":440,"nodeType":"ParameterList","parameters":[{"constant":false,"id":439,"mutability":"mutable","name":"version","nameLocation":"4854:7:4","nodeType":"VariableDeclaration","scope":469,"src":"4848:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":438,"name":"uint8","nodeType":"ElementaryTypeName","src":"4848:5:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"4847:15:4"},"src":"4825:293:4","virtual":false,"visibility":"internal"},{"body":{"id":478,"nodeType":"Block","src":"5356:97:4","statements":[{"expression":{"arguments":[{"id":473,"name":"_initializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":375,"src":"5374:13:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e697469616c697a61626c653a20636f6e7472616374206973206e6f7420696e697469616c697a696e67","id":474,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5389:45:4","typeDescriptions":{"typeIdentifier":"t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b","typeString":"literal_string \"Initializable: contract is not initializing\""},"value":"Initializable: contract is not initializing"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b","typeString":"literal_string \"Initializable: contract is not initializing\""}],"id":472,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"5366:7:4","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":475,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5366:69:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":476,"nodeType":"ExpressionStatement","src":"5366:69:4"},{"id":477,"nodeType":"PlaceholderStatement","src":"5445:1:4"}]},"documentation":{"id":470,"nodeType":"StructuredDocumentation","src":"5124:199:4","text":" @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\n {initializer} and {reinitializer} modifiers, directly or indirectly."},"id":479,"name":"onlyInitializing","nameLocation":"5337:16:4","nodeType":"ModifierDefinition","parameters":{"id":471,"nodeType":"ParameterList","parameters":[],"src":"5353:2:4"},"src":"5328:125:4","virtual":false,"visibility":"internal"},{"body":{"id":514,"nodeType":"Block","src":"5988:231:4","statements":[{"expression":{"arguments":[{"id":485,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"6006:14:4","subExpression":{"id":484,"name":"_initializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":375,"src":"6007:13:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e697469616c697a61626c653a20636f6e747261637420697320696e697469616c697a696e67","id":486,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6022:41:4","typeDescriptions":{"typeIdentifier":"t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a","typeString":"literal_string \"Initializable: contract is initializing\""},"value":"Initializable: contract is initializing"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a","typeString":"literal_string \"Initializable: contract is initializing\""}],"id":483,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"5998:7:4","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":487,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5998:66:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":488,"nodeType":"ExpressionStatement","src":"5998:66:4"},{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":495,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":489,"name":"_initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":372,"src":"6078:12:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"arguments":[{"id":492,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6099:5:4","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":491,"name":"uint8","nodeType":"ElementaryTypeName","src":"6099:5:4","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"}],"id":490,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"6094:4:4","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":493,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6094:11:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint8","typeString":"type(uint8)"}},"id":494,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6106:3:4","memberName":"max","nodeType":"MemberAccess","src":"6094:15:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"6078:31:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":513,"nodeType":"IfStatement","src":"6074:139:4","trueBody":{"id":512,"nodeType":"Block","src":"6111:102:4","statements":[{"expression":{"id":502,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":496,"name":"_initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":372,"src":"6125:12:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"arguments":[{"id":499,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6145:5:4","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":498,"name":"uint8","nodeType":"ElementaryTypeName","src":"6145:5:4","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"}],"id":497,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"6140:4:4","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":500,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6140:11:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint8","typeString":"type(uint8)"}},"id":501,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6152:3:4","memberName":"max","nodeType":"MemberAccess","src":"6140:15:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"6125:30:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":503,"nodeType":"ExpressionStatement","src":"6125:30:4"},{"eventCall":{"arguments":[{"expression":{"arguments":[{"id":507,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6191:5:4","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":506,"name":"uint8","nodeType":"ElementaryTypeName","src":"6191:5:4","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"}],"id":505,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"6186:4:4","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":508,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6186:11:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint8","typeString":"type(uint8)"}},"id":509,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6198:3:4","memberName":"max","nodeType":"MemberAccess","src":"6186:15:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":504,"name":"Initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":380,"src":"6174:11:4","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint8_$returns$__$","typeString":"function (uint8)"}},"id":510,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6174:28:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":511,"nodeType":"EmitStatement","src":"6169:33:4"}]}}]},"documentation":{"id":480,"nodeType":"StructuredDocumentation","src":"5459:475:4","text":" @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\n Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\n to any version. It is recommended to use this to lock implementation contracts that are designed to be called\n through proxies.\n Emits an {Initialized} event the first time it is successfully executed."},"id":515,"implemented":true,"kind":"function","modifiers":[],"name":"_disableInitializers","nameLocation":"5948:20:4","nodeType":"FunctionDefinition","parameters":{"id":481,"nodeType":"ParameterList","parameters":[],"src":"5968:2:4"},"returnParameters":{"id":482,"nodeType":"ParameterList","parameters":[],"src":"5988:0:4"},"scope":534,"src":"5939:280:4","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":523,"nodeType":"Block","src":"6393:36:4","statements":[{"expression":{"id":521,"name":"_initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":372,"src":"6410:12:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"functionReturnParameters":520,"id":522,"nodeType":"Return","src":"6403:19:4"}]},"documentation":{"id":516,"nodeType":"StructuredDocumentation","src":"6225:99:4","text":" @dev Returns the highest version that has been initialized. See {reinitializer}."},"id":524,"implemented":true,"kind":"function","modifiers":[],"name":"_getInitializedVersion","nameLocation":"6338:22:4","nodeType":"FunctionDefinition","parameters":{"id":517,"nodeType":"ParameterList","parameters":[],"src":"6360:2:4"},"returnParameters":{"id":520,"nodeType":"ParameterList","parameters":[{"constant":false,"id":519,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":524,"src":"6386:5:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":518,"name":"uint8","nodeType":"ElementaryTypeName","src":"6386:5:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"6385:7:4"},"scope":534,"src":"6329:100:4","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":532,"nodeType":"Block","src":"6601:37:4","statements":[{"expression":{"id":530,"name":"_initializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":375,"src":"6618:13:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":529,"id":531,"nodeType":"Return","src":"6611:20:4"}]},"documentation":{"id":525,"nodeType":"StructuredDocumentation","src":"6435:105:4","text":" @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}."},"id":533,"implemented":true,"kind":"function","modifiers":[],"name":"_isInitializing","nameLocation":"6554:15:4","nodeType":"FunctionDefinition","parameters":{"id":526,"nodeType":"ParameterList","parameters":[],"src":"6569:2:4"},"returnParameters":{"id":529,"nodeType":"ParameterList","parameters":[{"constant":false,"id":528,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":533,"src":"6595:4:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":527,"name":"bool","nodeType":"ElementaryTypeName","src":"6595:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6594:6:4"},"scope":534,"src":"6545:93:4","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":535,"src":"2394:4246:4","usedErrors":[]}],"src":"113:6528:4"},"id":4},"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol","exportedSymbols":{"AddressUpgradeable":[1001],"ERC1967UpgradeUpgradeable":[355],"IBeaconUpgradeable":[365],"IERC1822ProxiableUpgradeable":[30],"IERC1967Upgradeable":[20],"Initializable":[534],"StorageSlotUpgradeable":[1236],"UUPSUpgradeable":[671]},"id":672,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":536,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"115:23:5"},{"absolutePath":"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol","file":"../../interfaces/draft-IERC1822Upgradeable.sol","id":537,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":672,"sourceUnit":31,"src":"140:56:5","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol","file":"../ERC1967/ERC1967UpgradeUpgradeable.sol","id":538,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":672,"sourceUnit":356,"src":"197:50:5","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","file":"./Initializable.sol","id":540,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":672,"sourceUnit":535,"src":"248:50:5","symbolAliases":[{"foreign":{"id":539,"name":"Initializable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":534,"src":"256:13:5","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":542,"name":"Initializable","nameLocations":["986:13:5"],"nodeType":"IdentifierPath","referencedDeclaration":534,"src":"986:13:5"},"id":543,"nodeType":"InheritanceSpecifier","src":"986:13:5"},{"baseName":{"id":544,"name":"IERC1822ProxiableUpgradeable","nameLocations":["1001:28:5"],"nodeType":"IdentifierPath","referencedDeclaration":30,"src":"1001:28:5"},"id":545,"nodeType":"InheritanceSpecifier","src":"1001:28:5"},{"baseName":{"id":546,"name":"ERC1967UpgradeUpgradeable","nameLocations":["1031:25:5"],"nodeType":"IdentifierPath","referencedDeclaration":355,"src":"1031:25:5"},"id":547,"nodeType":"InheritanceSpecifier","src":"1031:25:5"}],"canonicalName":"UUPSUpgradeable","contractDependencies":[],"contractKind":"contract","documentation":{"id":541,"nodeType":"StructuredDocumentation","src":"300:648:5","text":" @dev An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an\n {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy.\n A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is\n reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing\n `UUPSUpgradeable` with a custom implementation of upgrades.\n The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism.\n _Available since v4.1._"},"fullyImplemented":false,"id":671,"linearizedBaseContracts":[671,355,20,30,534],"name":"UUPSUpgradeable","nameLocation":"967:15:5","nodeType":"ContractDefinition","nodes":[{"constant":false,"documentation":{"id":548,"nodeType":"StructuredDocumentation","src":"1063:87:5","text":"@custom:oz-upgrades-unsafe-allow state-variable-immutable state-variable-assignment"},"id":554,"mutability":"immutable","name":"__self","nameLocation":"1181:6:5","nodeType":"VariableDeclaration","scope":671,"src":"1155:48:5","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":549,"name":"address","nodeType":"ElementaryTypeName","src":"1155:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":{"arguments":[{"id":552,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967268,"src":"1198:4:5","typeDescriptions":{"typeIdentifier":"t_contract$_UUPSUpgradeable_$671","typeString":"contract UUPSUpgradeable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_UUPSUpgradeable_$671","typeString":"contract UUPSUpgradeable"}],"id":551,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1190:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":550,"name":"address","nodeType":"ElementaryTypeName","src":"1190:7:5","typeDescriptions":{}}},"id":553,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1190:13:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"body":{"id":576,"nodeType":"Block","src":"1729:205:5","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":563,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":560,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967268,"src":"1755:4:5","typeDescriptions":{"typeIdentifier":"t_contract$_UUPSUpgradeable_$671","typeString":"contract UUPSUpgradeable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_UUPSUpgradeable_$671","typeString":"contract UUPSUpgradeable"}],"id":559,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1747:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":558,"name":"address","nodeType":"ElementaryTypeName","src":"1747:7:5","typeDescriptions":{}}},"id":561,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1747:13:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":562,"name":"__self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":554,"src":"1764:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1747:23:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682064656c656761746563616c6c","id":564,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1772:46:5","typeDescriptions":{"typeIdentifier":"t_stringliteral_36e108fa7a809b52ab1951dd91c117a7bc9ac5250bdf1aa162d4e104f7edf9eb","typeString":"literal_string \"Function must be called through delegatecall\""},"value":"Function must be called through delegatecall"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_36e108fa7a809b52ab1951dd91c117a7bc9ac5250bdf1aa162d4e104f7edf9eb","typeString":"literal_string \"Function must be called through delegatecall\""}],"id":557,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"1739:7:5","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":565,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1739:80:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":566,"nodeType":"ExpressionStatement","src":"1739:80:5"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":571,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":568,"name":"_getImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76,"src":"1837:18:5","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":569,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1837:20:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":570,"name":"__self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":554,"src":"1861:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1837:30:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"46756e6374696f6e206d7573742062652063616c6c6564207468726f756768206163746976652070726f7879","id":572,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1869:46:5","typeDescriptions":{"typeIdentifier":"t_stringliteral_52f1ead4d9653e13afbd2e90ef2587c30187cd50b2e97d784e3f7a7541247434","typeString":"literal_string \"Function must be called through active proxy\""},"value":"Function must be called through active proxy"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_52f1ead4d9653e13afbd2e90ef2587c30187cd50b2e97d784e3f7a7541247434","typeString":"literal_string \"Function must be called through active proxy\""}],"id":567,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"1829:7:5","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":573,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1829:87:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":574,"nodeType":"ExpressionStatement","src":"1829:87:5"},{"id":575,"nodeType":"PlaceholderStatement","src":"1926:1:5"}]},"documentation":{"id":555,"nodeType":"StructuredDocumentation","src":"1210:493:5","text":" @dev Check that the execution is being performed through a delegatecall call and that the execution context is\n a proxy contract with an implementation (as defined in ERC1967) pointing to self. This should only be the case\n for UUPS and transparent proxies that are using the current contract as their implementation. Execution of a\n function through ERC1167 minimal proxies (clones) would not normally pass this test, but is not guaranteed to\n fail."},"id":577,"name":"onlyProxy","nameLocation":"1717:9:5","nodeType":"ModifierDefinition","parameters":{"id":556,"nodeType":"ParameterList","parameters":[],"src":"1726:2:5"},"src":"1708:226:5","virtual":false,"visibility":"internal"},{"body":{"id":591,"nodeType":"Block","src":"2164:120:5","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":586,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":583,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967268,"src":"2190:4:5","typeDescriptions":{"typeIdentifier":"t_contract$_UUPSUpgradeable_$671","typeString":"contract UUPSUpgradeable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_UUPSUpgradeable_$671","typeString":"contract UUPSUpgradeable"}],"id":582,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2182:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":581,"name":"address","nodeType":"ElementaryTypeName","src":"2182:7:5","typeDescriptions":{}}},"id":584,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2182:13:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":585,"name":"__self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":554,"src":"2199:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2182:23:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"555550535570677261646561626c653a206d757374206e6f742062652063616c6c6564207468726f7567682064656c656761746563616c6c","id":587,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2207:58:5","typeDescriptions":{"typeIdentifier":"t_stringliteral_67f0151b4ad1dcfa0e3302a0cd6019f51582ef1807b37dceb00bd852a514f7f4","typeString":"literal_string \"UUPSUpgradeable: must not be called through delegatecall\""},"value":"UUPSUpgradeable: must not be called through delegatecall"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_67f0151b4ad1dcfa0e3302a0cd6019f51582ef1807b37dceb00bd852a514f7f4","typeString":"literal_string \"UUPSUpgradeable: must not be called through delegatecall\""}],"id":580,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"2174:7:5","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":588,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2174:92:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":589,"nodeType":"ExpressionStatement","src":"2174:92:5"},{"id":590,"nodeType":"PlaceholderStatement","src":"2276:1:5"}]},"documentation":{"id":578,"nodeType":"StructuredDocumentation","src":"1940:195:5","text":" @dev Check that the execution is not being performed through a delegate call. This allows a function to be\n callable on the implementing contract but not through proxies."},"id":592,"name":"notDelegated","nameLocation":"2149:12:5","nodeType":"ModifierDefinition","parameters":{"id":579,"nodeType":"ParameterList","parameters":[],"src":"2161:2:5"},"src":"2140:144:5","virtual":false,"visibility":"internal"},{"body":{"id":597,"nodeType":"Block","src":"2350:7:5","statements":[]},"id":598,"implemented":true,"kind":"function","modifiers":[{"id":595,"kind":"modifierInvocation","modifierName":{"id":594,"name":"onlyInitializing","nameLocations":["2333:16:5"],"nodeType":"IdentifierPath","referencedDeclaration":479,"src":"2333:16:5"},"nodeType":"ModifierInvocation","src":"2333:16:5"}],"name":"__UUPSUpgradeable_init","nameLocation":"2299:22:5","nodeType":"FunctionDefinition","parameters":{"id":593,"nodeType":"ParameterList","parameters":[],"src":"2321:2:5"},"returnParameters":{"id":596,"nodeType":"ParameterList","parameters":[],"src":"2350:0:5"},"scope":671,"src":"2290:67:5","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":603,"nodeType":"Block","src":"2433:7:5","statements":[]},"id":604,"implemented":true,"kind":"function","modifiers":[{"id":601,"kind":"modifierInvocation","modifierName":{"id":600,"name":"onlyInitializing","nameLocations":["2416:16:5"],"nodeType":"IdentifierPath","referencedDeclaration":479,"src":"2416:16:5"},"nodeType":"ModifierInvocation","src":"2416:16:5"}],"name":"__UUPSUpgradeable_init_unchained","nameLocation":"2372:32:5","nodeType":"FunctionDefinition","parameters":{"id":599,"nodeType":"ParameterList","parameters":[],"src":"2404:2:5"},"returnParameters":{"id":602,"nodeType":"ParameterList","parameters":[],"src":"2433:0:5"},"scope":671,"src":"2363:77:5","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[29],"body":{"id":615,"nodeType":"Block","src":"3114:44:5","statements":[{"expression":{"id":613,"name":"_IMPLEMENTATION_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51,"src":"3131:20:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":612,"id":614,"nodeType":"Return","src":"3124:27:5"}]},"documentation":{"id":605,"nodeType":"StructuredDocumentation","src":"2445:577:5","text":" @dev Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the\n implementation. It is used to validate the implementation's compatibility when performing an upgrade.\n IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\n bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\n function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier."},"functionSelector":"52d1902d","id":616,"implemented":true,"kind":"function","modifiers":[{"id":609,"kind":"modifierInvocation","modifierName":{"id":608,"name":"notDelegated","nameLocations":["3083:12:5"],"nodeType":"IdentifierPath","referencedDeclaration":592,"src":"3083:12:5"},"nodeType":"ModifierInvocation","src":"3083:12:5"}],"name":"proxiableUUID","nameLocation":"3036:13:5","nodeType":"FunctionDefinition","overrides":{"id":607,"nodeType":"OverrideSpecifier","overrides":[],"src":"3074:8:5"},"parameters":{"id":606,"nodeType":"ParameterList","parameters":[],"src":"3049:2:5"},"returnParameters":{"id":612,"nodeType":"ParameterList","parameters":[{"constant":false,"id":611,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":616,"src":"3105:7:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":610,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3105:7:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3104:9:5"},"scope":671,"src":"3027:131:5","stateMutability":"view","virtual":true,"visibility":"external"},{"body":{"id":637,"nodeType":"Block","src":"3479:124:5","statements":[{"expression":{"arguments":[{"id":625,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":619,"src":"3507:17:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":624,"name":"_authorizeUpgrade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":665,"src":"3489:17:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":626,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3489:36:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":627,"nodeType":"ExpressionStatement","src":"3489:36:5"},{"expression":{"arguments":[{"id":629,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":619,"src":"3557:17:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":632,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3586:1:5","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":631,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"3576:9:5","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":630,"name":"bytes","nodeType":"ElementaryTypeName","src":"3580:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":633,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3576:12:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"66616c7365","id":634,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3590:5:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":628,"name":"_upgradeToAndCallUUPS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":198,"src":"3535:21:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_bool_$returns$__$","typeString":"function (address,bytes memory,bool)"}},"id":635,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3535:61:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":636,"nodeType":"ExpressionStatement","src":"3535:61:5"}]},"documentation":{"id":617,"nodeType":"StructuredDocumentation","src":"3164:239:5","text":" @dev Upgrade the implementation of the proxy to `newImplementation`.\n Calls {_authorizeUpgrade}.\n Emits an {Upgraded} event.\n @custom:oz-upgrades-unsafe-allow-reachable delegatecall"},"functionSelector":"3659cfe6","id":638,"implemented":true,"kind":"function","modifiers":[{"id":622,"kind":"modifierInvocation","modifierName":{"id":621,"name":"onlyProxy","nameLocations":["3469:9:5"],"nodeType":"IdentifierPath","referencedDeclaration":577,"src":"3469:9:5"},"nodeType":"ModifierInvocation","src":"3469:9:5"}],"name":"upgradeTo","nameLocation":"3417:9:5","nodeType":"FunctionDefinition","parameters":{"id":620,"nodeType":"ParameterList","parameters":[{"constant":false,"id":619,"mutability":"mutable","name":"newImplementation","nameLocation":"3435:17:5","nodeType":"VariableDeclaration","scope":638,"src":"3427:25:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":618,"name":"address","nodeType":"ElementaryTypeName","src":"3427:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3426:27:5"},"returnParameters":{"id":623,"nodeType":"ParameterList","parameters":[],"src":"3479:0:5"},"scope":671,"src":"3408:195:5","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":658,"nodeType":"Block","src":"4027:115:5","statements":[{"expression":{"arguments":[{"id":649,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":641,"src":"4055:17:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":648,"name":"_authorizeUpgrade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":665,"src":"4037:17:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":650,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4037:36:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":651,"nodeType":"ExpressionStatement","src":"4037:36:5"},{"expression":{"arguments":[{"id":653,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":641,"src":"4105:17:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":654,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":643,"src":"4124:4:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"74727565","id":655,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4130:4:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":652,"name":"_upgradeToAndCallUUPS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":198,"src":"4083:21:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_bool_$returns$__$","typeString":"function (address,bytes memory,bool)"}},"id":656,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4083:52:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":657,"nodeType":"ExpressionStatement","src":"4083:52:5"}]},"documentation":{"id":639,"nodeType":"StructuredDocumentation","src":"3609:308:5","text":" @dev Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call\n encoded in `data`.\n Calls {_authorizeUpgrade}.\n Emits an {Upgraded} event.\n @custom:oz-upgrades-unsafe-allow-reachable delegatecall"},"functionSelector":"4f1ef286","id":659,"implemented":true,"kind":"function","modifiers":[{"id":646,"kind":"modifierInvocation","modifierName":{"id":645,"name":"onlyProxy","nameLocations":["4017:9:5"],"nodeType":"IdentifierPath","referencedDeclaration":577,"src":"4017:9:5"},"nodeType":"ModifierInvocation","src":"4017:9:5"}],"name":"upgradeToAndCall","nameLocation":"3931:16:5","nodeType":"FunctionDefinition","parameters":{"id":644,"nodeType":"ParameterList","parameters":[{"constant":false,"id":641,"mutability":"mutable","name":"newImplementation","nameLocation":"3956:17:5","nodeType":"VariableDeclaration","scope":659,"src":"3948:25:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":640,"name":"address","nodeType":"ElementaryTypeName","src":"3948:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":643,"mutability":"mutable","name":"data","nameLocation":"3988:4:5","nodeType":"VariableDeclaration","scope":659,"src":"3975:17:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":642,"name":"bytes","nodeType":"ElementaryTypeName","src":"3975:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3947:46:5"},"returnParameters":{"id":647,"nodeType":"ParameterList","parameters":[],"src":"4027:0:5"},"scope":671,"src":"3922:220:5","stateMutability":"payable","virtual":true,"visibility":"public"},{"documentation":{"id":660,"nodeType":"StructuredDocumentation","src":"4148:397:5","text":" @dev Function that should revert when `msg.sender` is not authorized to upgrade the contract. Called by\n {upgradeTo} and {upgradeToAndCall}.\n Normally, this function will use an xref:access.adoc[access control] modifier such as {Ownable-onlyOwner}.\n ```solidity\n function _authorizeUpgrade(address) internal override onlyOwner {}\n ```"},"id":665,"implemented":false,"kind":"function","modifiers":[],"name":"_authorizeUpgrade","nameLocation":"4559:17:5","nodeType":"FunctionDefinition","parameters":{"id":663,"nodeType":"ParameterList","parameters":[{"constant":false,"id":662,"mutability":"mutable","name":"newImplementation","nameLocation":"4585:17:5","nodeType":"VariableDeclaration","scope":665,"src":"4577:25:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":661,"name":"address","nodeType":"ElementaryTypeName","src":"4577:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4576:27:5"},"returnParameters":{"id":664,"nodeType":"ParameterList","parameters":[],"src":"4620:0:5"},"scope":671,"src":"4550:71:5","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"constant":false,"documentation":{"id":666,"nodeType":"StructuredDocumentation","src":"4627:254:5","text":" @dev This empty reserved space is put in place to allow future versions to add new\n variables without shifting down storage in the inheritance chain.\n See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"},"id":670,"mutability":"mutable","name":"__gap","nameLocation":"4906:5:5","nodeType":"VariableDeclaration","scope":671,"src":"4886:25:5","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$50_storage","typeString":"uint256[50]"},"typeName":{"baseType":{"id":667,"name":"uint256","nodeType":"ElementaryTypeName","src":"4886:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":669,"length":{"hexValue":"3530","id":668,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4894:2:5","typeDescriptions":{"typeIdentifier":"t_rational_50_by_1","typeString":"int_const 50"},"value":"50"},"nodeType":"ArrayTypeName","src":"4886:11:5","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$50_storage_ptr","typeString":"uint256[50]"}},"visibility":"private"}],"scope":672,"src":"949:3965:5","usedErrors":[]}],"src":"115:4800:5"},"id":5},"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol","exportedSymbols":{"AddressUpgradeable":[1001]},"id":1002,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":673,"literals":["solidity","^","0.8",".1"],"nodeType":"PragmaDirective","src":"101:23:6"},{"abstract":false,"baseContracts":[],"canonicalName":"AddressUpgradeable","contractDependencies":[],"contractKind":"library","documentation":{"id":674,"nodeType":"StructuredDocumentation","src":"126:67:6","text":" @dev Collection of functions related to the address type"},"fullyImplemented":true,"id":1001,"linearizedBaseContracts":[1001],"name":"AddressUpgradeable","nameLocation":"202:18:6","nodeType":"ContractDefinition","nodes":[{"body":{"id":688,"nodeType":"Block","src":"1489:254:6","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":686,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":682,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":677,"src":"1713:7:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":683,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1721:4:6","memberName":"code","nodeType":"MemberAccess","src":"1713:12:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":684,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1726:6:6","memberName":"length","nodeType":"MemberAccess","src":"1713:19:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":685,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1735:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1713:23:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":681,"id":687,"nodeType":"Return","src":"1706:30:6"}]},"documentation":{"id":675,"nodeType":"StructuredDocumentation","src":"227:1191:6","text":" @dev Returns true if `account` is a contract.\n [IMPORTANT]\n ====\n It is unsafe to assume that an address for which this function returns\n false is an externally-owned account (EOA) and not a contract.\n Among others, `isContract` will return false for the following\n types of addresses:\n - an externally-owned account\n - a contract in construction\n - an address where a contract will be created\n - an address where a contract lived, but was destroyed\n Furthermore, `isContract` will also return true if the target contract within\n the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\n which only has an effect at the end of a transaction.\n ====\n [IMPORTANT]\n ====\n You shouldn't rely on `isContract` to protect against flash loan attacks!\n Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\n like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\n constructor.\n ===="},"id":689,"implemented":true,"kind":"function","modifiers":[],"name":"isContract","nameLocation":"1432:10:6","nodeType":"FunctionDefinition","parameters":{"id":678,"nodeType":"ParameterList","parameters":[{"constant":false,"id":677,"mutability":"mutable","name":"account","nameLocation":"1451:7:6","nodeType":"VariableDeclaration","scope":689,"src":"1443:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":676,"name":"address","nodeType":"ElementaryTypeName","src":"1443:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1442:17:6"},"returnParameters":{"id":681,"nodeType":"ParameterList","parameters":[{"constant":false,"id":680,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":689,"src":"1483:4:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":679,"name":"bool","nodeType":"ElementaryTypeName","src":"1483:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1482:6:6"},"scope":1001,"src":"1423:320:6","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":722,"nodeType":"Block","src":"2729:241:6","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":704,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":700,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967268,"src":"2755:4:6","typeDescriptions":{"typeIdentifier":"t_contract$_AddressUpgradeable_$1001","typeString":"library AddressUpgradeable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_AddressUpgradeable_$1001","typeString":"library AddressUpgradeable"}],"id":699,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2747:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":698,"name":"address","nodeType":"ElementaryTypeName","src":"2747:7:6","typeDescriptions":{}}},"id":701,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2747:13:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":702,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2761:7:6","memberName":"balance","nodeType":"MemberAccess","src":"2747:21:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":703,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":694,"src":"2772:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2747:31:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20696e73756666696369656e742062616c616e6365","id":705,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2780:31:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_5597a22abd0ef5332f8053862eb236db7590f17e2b93a53f63a103becfb561f9","typeString":"literal_string \"Address: insufficient balance\""},"value":"Address: insufficient balance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5597a22abd0ef5332f8053862eb236db7590f17e2b93a53f63a103becfb561f9","typeString":"literal_string \"Address: insufficient balance\""}],"id":697,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"2739:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":706,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2739:73:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":707,"nodeType":"ExpressionStatement","src":"2739:73:6"},{"assignments":[709,null],"declarations":[{"constant":false,"id":709,"mutability":"mutable","name":"success","nameLocation":"2829:7:6","nodeType":"VariableDeclaration","scope":722,"src":"2824:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":708,"name":"bool","nodeType":"ElementaryTypeName","src":"2824:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":716,"initialValue":{"arguments":[{"hexValue":"","id":714,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2872:2:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"id":710,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":692,"src":"2842:9:6","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":711,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2852:4:6","memberName":"call","nodeType":"MemberAccess","src":"2842:14:6","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":713,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":712,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":694,"src":"2864:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"2842:29:6","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":715,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2842:33:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"2823:52:6"},{"expression":{"arguments":[{"id":718,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":709,"src":"2893:7:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d61792068617665207265766572746564","id":719,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2902:60:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_51ddaa38748c0a1144620fb5bfe8edab31ea437571ad591a7734bbfd0429aeae","typeString":"literal_string \"Address: unable to send value, recipient may have reverted\""},"value":"Address: unable to send value, recipient may have reverted"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_51ddaa38748c0a1144620fb5bfe8edab31ea437571ad591a7734bbfd0429aeae","typeString":"literal_string \"Address: unable to send value, recipient may have reverted\""}],"id":717,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"2885:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":720,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2885:78:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":721,"nodeType":"ExpressionStatement","src":"2885:78:6"}]},"documentation":{"id":690,"nodeType":"StructuredDocumentation","src":"1749:904:6","text":" @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n `recipient`, forwarding all available gas and reverting on errors.\n https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n of certain opcodes, possibly making contracts go over the 2300 gas limit\n imposed by `transfer`, making them unable to receive funds via\n `transfer`. {sendValue} removes this limitation.\n https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n IMPORTANT: because control is transferred to `recipient`, care must be\n taken to not create reentrancy vulnerabilities. Consider using\n {ReentrancyGuard} or the\n https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]."},"id":723,"implemented":true,"kind":"function","modifiers":[],"name":"sendValue","nameLocation":"2667:9:6","nodeType":"FunctionDefinition","parameters":{"id":695,"nodeType":"ParameterList","parameters":[{"constant":false,"id":692,"mutability":"mutable","name":"recipient","nameLocation":"2693:9:6","nodeType":"VariableDeclaration","scope":723,"src":"2677:25:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":691,"name":"address","nodeType":"ElementaryTypeName","src":"2677:15:6","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"},{"constant":false,"id":694,"mutability":"mutable","name":"amount","nameLocation":"2712:6:6","nodeType":"VariableDeclaration","scope":723,"src":"2704:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":693,"name":"uint256","nodeType":"ElementaryTypeName","src":"2704:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2676:43:6"},"returnParameters":{"id":696,"nodeType":"ParameterList","parameters":[],"src":"2729:0:6"},"scope":1001,"src":"2658:312:6","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":740,"nodeType":"Block","src":"3801:96:6","statements":[{"expression":{"arguments":[{"id":734,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":726,"src":"3840:6:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":735,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":728,"src":"3848:4:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"30","id":736,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3854:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"416464726573733a206c6f772d6c6576656c2063616c6c206661696c6564","id":737,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3857:32:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_24d7ab5d382116e64324f19950ca9340b8af1ddeb09a8d026e0a3c6a01dcc9df","typeString":"literal_string \"Address: low-level call failed\""},"value":"Address: low-level call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_stringliteral_24d7ab5d382116e64324f19950ca9340b8af1ddeb09a8d026e0a3c6a01dcc9df","typeString":"literal_string \"Address: low-level call failed\""}],"id":733,"name":"functionCallWithValue","nodeType":"Identifier","overloadedDeclarations":[781,825],"referencedDeclaration":825,"src":"3818:21:6","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,uint256,string memory) returns (bytes memory)"}},"id":738,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3818:72:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":732,"id":739,"nodeType":"Return","src":"3811:79:6"}]},"documentation":{"id":724,"nodeType":"StructuredDocumentation","src":"2976:731:6","text":" @dev Performs a Solidity function call using a low level `call`. A\n plain `call` is an unsafe replacement for a function call: use this\n function instead.\n If `target` reverts with a revert reason, it is bubbled up by this\n function (like regular Solidity function calls).\n Returns the raw returned data. To convert to the expected return value,\n use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n Requirements:\n - `target` must be a contract.\n - calling `target` with `data` must not revert.\n _Available since v3.1._"},"id":741,"implemented":true,"kind":"function","modifiers":[],"name":"functionCall","nameLocation":"3721:12:6","nodeType":"FunctionDefinition","parameters":{"id":729,"nodeType":"ParameterList","parameters":[{"constant":false,"id":726,"mutability":"mutable","name":"target","nameLocation":"3742:6:6","nodeType":"VariableDeclaration","scope":741,"src":"3734:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":725,"name":"address","nodeType":"ElementaryTypeName","src":"3734:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":728,"mutability":"mutable","name":"data","nameLocation":"3763:4:6","nodeType":"VariableDeclaration","scope":741,"src":"3750:17:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":727,"name":"bytes","nodeType":"ElementaryTypeName","src":"3750:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3733:35:6"},"returnParameters":{"id":732,"nodeType":"ParameterList","parameters":[{"constant":false,"id":731,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":741,"src":"3787:12:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":730,"name":"bytes","nodeType":"ElementaryTypeName","src":"3787:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3786:14:6"},"scope":1001,"src":"3712:185:6","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":760,"nodeType":"Block","src":"4266:76:6","statements":[{"expression":{"arguments":[{"id":754,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":744,"src":"4305:6:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":755,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":746,"src":"4313:4:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"30","id":756,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4319:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":757,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":748,"src":"4322:12:6","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":753,"name":"functionCallWithValue","nodeType":"Identifier","overloadedDeclarations":[781,825],"referencedDeclaration":825,"src":"4283:21:6","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,uint256,string memory) returns (bytes memory)"}},"id":758,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4283:52:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":752,"id":759,"nodeType":"Return","src":"4276:59:6"}]},"documentation":{"id":742,"nodeType":"StructuredDocumentation","src":"3903:211:6","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n `errorMessage` as a fallback revert reason when `target` reverts.\n _Available since v3.1._"},"id":761,"implemented":true,"kind":"function","modifiers":[],"name":"functionCall","nameLocation":"4128:12:6","nodeType":"FunctionDefinition","parameters":{"id":749,"nodeType":"ParameterList","parameters":[{"constant":false,"id":744,"mutability":"mutable","name":"target","nameLocation":"4158:6:6","nodeType":"VariableDeclaration","scope":761,"src":"4150:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":743,"name":"address","nodeType":"ElementaryTypeName","src":"4150:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":746,"mutability":"mutable","name":"data","nameLocation":"4187:4:6","nodeType":"VariableDeclaration","scope":761,"src":"4174:17:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":745,"name":"bytes","nodeType":"ElementaryTypeName","src":"4174:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":748,"mutability":"mutable","name":"errorMessage","nameLocation":"4215:12:6","nodeType":"VariableDeclaration","scope":761,"src":"4201:26:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":747,"name":"string","nodeType":"ElementaryTypeName","src":"4201:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"4140:93:6"},"returnParameters":{"id":752,"nodeType":"ParameterList","parameters":[{"constant":false,"id":751,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":761,"src":"4252:12:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":750,"name":"bytes","nodeType":"ElementaryTypeName","src":"4252:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4251:14:6"},"scope":1001,"src":"4119:223:6","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":780,"nodeType":"Block","src":"4817:111:6","statements":[{"expression":{"arguments":[{"id":774,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":764,"src":"4856:6:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":775,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":766,"src":"4864:4:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":776,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":768,"src":"4870:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"416464726573733a206c6f772d6c6576656c2063616c6c20776974682076616c7565206661696c6564","id":777,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4877:43:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_88a4a0b5e975840320a0475d4027005235904fdb5ece94df156f3d717cb2dbfc","typeString":"literal_string \"Address: low-level call with value failed\""},"value":"Address: low-level call with value failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_88a4a0b5e975840320a0475d4027005235904fdb5ece94df156f3d717cb2dbfc","typeString":"literal_string \"Address: low-level call with value failed\""}],"id":773,"name":"functionCallWithValue","nodeType":"Identifier","overloadedDeclarations":[781,825],"referencedDeclaration":825,"src":"4834:21:6","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,uint256,string memory) returns (bytes memory)"}},"id":778,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4834:87:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":772,"id":779,"nodeType":"Return","src":"4827:94:6"}]},"documentation":{"id":762,"nodeType":"StructuredDocumentation","src":"4348:351:6","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but also transferring `value` wei to `target`.\n Requirements:\n - the calling contract must have an ETH balance of at least `value`.\n - the called Solidity function must be `payable`.\n _Available since v3.1._"},"id":781,"implemented":true,"kind":"function","modifiers":[],"name":"functionCallWithValue","nameLocation":"4713:21:6","nodeType":"FunctionDefinition","parameters":{"id":769,"nodeType":"ParameterList","parameters":[{"constant":false,"id":764,"mutability":"mutable","name":"target","nameLocation":"4743:6:6","nodeType":"VariableDeclaration","scope":781,"src":"4735:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":763,"name":"address","nodeType":"ElementaryTypeName","src":"4735:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":766,"mutability":"mutable","name":"data","nameLocation":"4764:4:6","nodeType":"VariableDeclaration","scope":781,"src":"4751:17:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":765,"name":"bytes","nodeType":"ElementaryTypeName","src":"4751:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":768,"mutability":"mutable","name":"value","nameLocation":"4778:5:6","nodeType":"VariableDeclaration","scope":781,"src":"4770:13:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":767,"name":"uint256","nodeType":"ElementaryTypeName","src":"4770:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4734:50:6"},"returnParameters":{"id":772,"nodeType":"ParameterList","parameters":[{"constant":false,"id":771,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":781,"src":"4803:12:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":770,"name":"bytes","nodeType":"ElementaryTypeName","src":"4803:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4802:14:6"},"scope":1001,"src":"4704:224:6","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":824,"nodeType":"Block","src":"5355:267:6","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":802,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":798,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967268,"src":"5381:4:6","typeDescriptions":{"typeIdentifier":"t_contract$_AddressUpgradeable_$1001","typeString":"library AddressUpgradeable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_AddressUpgradeable_$1001","typeString":"library AddressUpgradeable"}],"id":797,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5373:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":796,"name":"address","nodeType":"ElementaryTypeName","src":"5373:7:6","typeDescriptions":{}}},"id":799,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5373:13:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":800,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5387:7:6","memberName":"balance","nodeType":"MemberAccess","src":"5373:21:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":801,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":788,"src":"5398:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5373:30:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c","id":803,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5405:40:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c","typeString":"literal_string \"Address: insufficient balance for call\""},"value":"Address: insufficient balance for call"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c","typeString":"literal_string \"Address: insufficient balance for call\""}],"id":795,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"5365:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":804,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5365:81:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":805,"nodeType":"ExpressionStatement","src":"5365:81:6"},{"assignments":[807,809],"declarations":[{"constant":false,"id":807,"mutability":"mutable","name":"success","nameLocation":"5462:7:6","nodeType":"VariableDeclaration","scope":824,"src":"5457:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":806,"name":"bool","nodeType":"ElementaryTypeName","src":"5457:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":809,"mutability":"mutable","name":"returndata","nameLocation":"5484:10:6","nodeType":"VariableDeclaration","scope":824,"src":"5471:23:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":808,"name":"bytes","nodeType":"ElementaryTypeName","src":"5471:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":816,"initialValue":{"arguments":[{"id":814,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":786,"src":"5524:4:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":810,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":784,"src":"5498:6:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":811,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5505:4:6","memberName":"call","nodeType":"MemberAccess","src":"5498:11:6","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":813,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":812,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":788,"src":"5517:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"5498:25:6","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":815,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5498:31:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"5456:73:6"},{"expression":{"arguments":[{"id":818,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":784,"src":"5573:6:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":819,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":807,"src":"5581:7:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":820,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":809,"src":"5590:10:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":821,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":790,"src":"5602:12:6","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":817,"name":"verifyCallResultFromTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":956,"src":"5546:26:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bool,bytes memory,string memory) view returns (bytes memory)"}},"id":822,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5546:69:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":794,"id":823,"nodeType":"Return","src":"5539:76:6"}]},"documentation":{"id":782,"nodeType":"StructuredDocumentation","src":"4934:237:6","text":" @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n with `errorMessage` as a fallback revert reason when `target` reverts.\n _Available since v3.1._"},"id":825,"implemented":true,"kind":"function","modifiers":[],"name":"functionCallWithValue","nameLocation":"5185:21:6","nodeType":"FunctionDefinition","parameters":{"id":791,"nodeType":"ParameterList","parameters":[{"constant":false,"id":784,"mutability":"mutable","name":"target","nameLocation":"5224:6:6","nodeType":"VariableDeclaration","scope":825,"src":"5216:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":783,"name":"address","nodeType":"ElementaryTypeName","src":"5216:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":786,"mutability":"mutable","name":"data","nameLocation":"5253:4:6","nodeType":"VariableDeclaration","scope":825,"src":"5240:17:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":785,"name":"bytes","nodeType":"ElementaryTypeName","src":"5240:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":788,"mutability":"mutable","name":"value","nameLocation":"5275:5:6","nodeType":"VariableDeclaration","scope":825,"src":"5267:13:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":787,"name":"uint256","nodeType":"ElementaryTypeName","src":"5267:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":790,"mutability":"mutable","name":"errorMessage","nameLocation":"5304:12:6","nodeType":"VariableDeclaration","scope":825,"src":"5290:26:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":789,"name":"string","nodeType":"ElementaryTypeName","src":"5290:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"5206:116:6"},"returnParameters":{"id":794,"nodeType":"ParameterList","parameters":[{"constant":false,"id":793,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":825,"src":"5341:12:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":792,"name":"bytes","nodeType":"ElementaryTypeName","src":"5341:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5340:14:6"},"scope":1001,"src":"5176:446:6","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":841,"nodeType":"Block","src":"5899:97:6","statements":[{"expression":{"arguments":[{"id":836,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":828,"src":"5935:6:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":837,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":830,"src":"5943:4:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"416464726573733a206c6f772d6c6576656c207374617469632063616c6c206661696c6564","id":838,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5949:39:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_90ec82aa826a536a4cbfae44ecfa384680faa9a4b77344bce96aa761ad904df0","typeString":"literal_string \"Address: low-level static call failed\""},"value":"Address: low-level static call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_90ec82aa826a536a4cbfae44ecfa384680faa9a4b77344bce96aa761ad904df0","typeString":"literal_string \"Address: low-level static call failed\""}],"id":835,"name":"functionStaticCall","nodeType":"Identifier","overloadedDeclarations":[842,871],"referencedDeclaration":871,"src":"5916:18:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,string memory) view returns (bytes memory)"}},"id":839,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5916:73:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":834,"id":840,"nodeType":"Return","src":"5909:80:6"}]},"documentation":{"id":826,"nodeType":"StructuredDocumentation","src":"5628:166:6","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a static call.\n _Available since v3.3._"},"id":842,"implemented":true,"kind":"function","modifiers":[],"name":"functionStaticCall","nameLocation":"5808:18:6","nodeType":"FunctionDefinition","parameters":{"id":831,"nodeType":"ParameterList","parameters":[{"constant":false,"id":828,"mutability":"mutable","name":"target","nameLocation":"5835:6:6","nodeType":"VariableDeclaration","scope":842,"src":"5827:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":827,"name":"address","nodeType":"ElementaryTypeName","src":"5827:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":830,"mutability":"mutable","name":"data","nameLocation":"5856:4:6","nodeType":"VariableDeclaration","scope":842,"src":"5843:17:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":829,"name":"bytes","nodeType":"ElementaryTypeName","src":"5843:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5826:35:6"},"returnParameters":{"id":834,"nodeType":"ParameterList","parameters":[{"constant":false,"id":833,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":842,"src":"5885:12:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":832,"name":"bytes","nodeType":"ElementaryTypeName","src":"5885:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5884:14:6"},"scope":1001,"src":"5799:197:6","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":870,"nodeType":"Block","src":"6338:168:6","statements":[{"assignments":[855,857],"declarations":[{"constant":false,"id":855,"mutability":"mutable","name":"success","nameLocation":"6354:7:6","nodeType":"VariableDeclaration","scope":870,"src":"6349:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":854,"name":"bool","nodeType":"ElementaryTypeName","src":"6349:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":857,"mutability":"mutable","name":"returndata","nameLocation":"6376:10:6","nodeType":"VariableDeclaration","scope":870,"src":"6363:23:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":856,"name":"bytes","nodeType":"ElementaryTypeName","src":"6363:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":862,"initialValue":{"arguments":[{"id":860,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":847,"src":"6408:4:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":858,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":845,"src":"6390:6:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":859,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6397:10:6","memberName":"staticcall","nodeType":"MemberAccess","src":"6390:17:6","typeDescriptions":{"typeIdentifier":"t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) view returns (bool,bytes memory)"}},"id":861,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6390:23:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"6348:65:6"},{"expression":{"arguments":[{"id":864,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":845,"src":"6457:6:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":865,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":855,"src":"6465:7:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":866,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":857,"src":"6474:10:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":867,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":849,"src":"6486:12:6","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":863,"name":"verifyCallResultFromTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":956,"src":"6430:26:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bool,bytes memory,string memory) view returns (bytes memory)"}},"id":868,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6430:69:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":853,"id":869,"nodeType":"Return","src":"6423:76:6"}]},"documentation":{"id":843,"nodeType":"StructuredDocumentation","src":"6002:173:6","text":" @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n but performing a static call.\n _Available since v3.3._"},"id":871,"implemented":true,"kind":"function","modifiers":[],"name":"functionStaticCall","nameLocation":"6189:18:6","nodeType":"FunctionDefinition","parameters":{"id":850,"nodeType":"ParameterList","parameters":[{"constant":false,"id":845,"mutability":"mutable","name":"target","nameLocation":"6225:6:6","nodeType":"VariableDeclaration","scope":871,"src":"6217:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":844,"name":"address","nodeType":"ElementaryTypeName","src":"6217:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":847,"mutability":"mutable","name":"data","nameLocation":"6254:4:6","nodeType":"VariableDeclaration","scope":871,"src":"6241:17:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":846,"name":"bytes","nodeType":"ElementaryTypeName","src":"6241:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":849,"mutability":"mutable","name":"errorMessage","nameLocation":"6282:12:6","nodeType":"VariableDeclaration","scope":871,"src":"6268:26:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":848,"name":"string","nodeType":"ElementaryTypeName","src":"6268:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"6207:93:6"},"returnParameters":{"id":853,"nodeType":"ParameterList","parameters":[{"constant":false,"id":852,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":871,"src":"6324:12:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":851,"name":"bytes","nodeType":"ElementaryTypeName","src":"6324:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6323:14:6"},"scope":1001,"src":"6180:326:6","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":887,"nodeType":"Block","src":"6782:101:6","statements":[{"expression":{"arguments":[{"id":882,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":874,"src":"6820:6:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":883,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":876,"src":"6828:4:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564","id":884,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6834:41:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_9fdcd12e4b726339b32a442b0a448365d5d85c96b2d2cff917b4f66c63110398","typeString":"literal_string \"Address: low-level delegate call failed\""},"value":"Address: low-level delegate call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_9fdcd12e4b726339b32a442b0a448365d5d85c96b2d2cff917b4f66c63110398","typeString":"literal_string \"Address: low-level delegate call failed\""}],"id":881,"name":"functionDelegateCall","nodeType":"Identifier","overloadedDeclarations":[888,917],"referencedDeclaration":917,"src":"6799:20:6","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,string memory) returns (bytes memory)"}},"id":885,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6799:77:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":880,"id":886,"nodeType":"Return","src":"6792:84:6"}]},"documentation":{"id":872,"nodeType":"StructuredDocumentation","src":"6512:168:6","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a delegate call.\n _Available since v3.4._"},"id":888,"implemented":true,"kind":"function","modifiers":[],"name":"functionDelegateCall","nameLocation":"6694:20:6","nodeType":"FunctionDefinition","parameters":{"id":877,"nodeType":"ParameterList","parameters":[{"constant":false,"id":874,"mutability":"mutable","name":"target","nameLocation":"6723:6:6","nodeType":"VariableDeclaration","scope":888,"src":"6715:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":873,"name":"address","nodeType":"ElementaryTypeName","src":"6715:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":876,"mutability":"mutable","name":"data","nameLocation":"6744:4:6","nodeType":"VariableDeclaration","scope":888,"src":"6731:17:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":875,"name":"bytes","nodeType":"ElementaryTypeName","src":"6731:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6714:35:6"},"returnParameters":{"id":880,"nodeType":"ParameterList","parameters":[{"constant":false,"id":879,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":888,"src":"6768:12:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":878,"name":"bytes","nodeType":"ElementaryTypeName","src":"6768:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6767:14:6"},"scope":1001,"src":"6685:198:6","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":916,"nodeType":"Block","src":"7224:170:6","statements":[{"assignments":[901,903],"declarations":[{"constant":false,"id":901,"mutability":"mutable","name":"success","nameLocation":"7240:7:6","nodeType":"VariableDeclaration","scope":916,"src":"7235:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":900,"name":"bool","nodeType":"ElementaryTypeName","src":"7235:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":903,"mutability":"mutable","name":"returndata","nameLocation":"7262:10:6","nodeType":"VariableDeclaration","scope":916,"src":"7249:23:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":902,"name":"bytes","nodeType":"ElementaryTypeName","src":"7249:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":908,"initialValue":{"arguments":[{"id":906,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":893,"src":"7296:4:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":904,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":891,"src":"7276:6:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":905,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7283:12:6","memberName":"delegatecall","nodeType":"MemberAccess","src":"7276:19:6","typeDescriptions":{"typeIdentifier":"t_function_baredelegatecall_nonpayable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) returns (bool,bytes memory)"}},"id":907,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7276:25:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"7234:67:6"},{"expression":{"arguments":[{"id":910,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":891,"src":"7345:6:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":911,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":901,"src":"7353:7:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":912,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":903,"src":"7362:10:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":913,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":895,"src":"7374:12:6","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":909,"name":"verifyCallResultFromTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":956,"src":"7318:26:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bool,bytes memory,string memory) view returns (bytes memory)"}},"id":914,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7318:69:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":899,"id":915,"nodeType":"Return","src":"7311:76:6"}]},"documentation":{"id":889,"nodeType":"StructuredDocumentation","src":"6889:175:6","text":" @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n but performing a delegate call.\n _Available since v3.4._"},"id":917,"implemented":true,"kind":"function","modifiers":[],"name":"functionDelegateCall","nameLocation":"7078:20:6","nodeType":"FunctionDefinition","parameters":{"id":896,"nodeType":"ParameterList","parameters":[{"constant":false,"id":891,"mutability":"mutable","name":"target","nameLocation":"7116:6:6","nodeType":"VariableDeclaration","scope":917,"src":"7108:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":890,"name":"address","nodeType":"ElementaryTypeName","src":"7108:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":893,"mutability":"mutable","name":"data","nameLocation":"7145:4:6","nodeType":"VariableDeclaration","scope":917,"src":"7132:17:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":892,"name":"bytes","nodeType":"ElementaryTypeName","src":"7132:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":895,"mutability":"mutable","name":"errorMessage","nameLocation":"7173:12:6","nodeType":"VariableDeclaration","scope":917,"src":"7159:26:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":894,"name":"string","nodeType":"ElementaryTypeName","src":"7159:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"7098:93:6"},"returnParameters":{"id":899,"nodeType":"ParameterList","parameters":[{"constant":false,"id":898,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":917,"src":"7210:12:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":897,"name":"bytes","nodeType":"ElementaryTypeName","src":"7210:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7209:14:6"},"scope":1001,"src":"7069:325:6","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":955,"nodeType":"Block","src":"7876:434:6","statements":[{"condition":{"id":931,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":922,"src":"7890:7:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":953,"nodeType":"Block","src":"8246:58:6","statements":[{"expression":{"arguments":[{"id":949,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":924,"src":"8268:10:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":950,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":926,"src":"8280:12:6","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":948,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1000,"src":"8260:7:6","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (bytes memory,string memory) pure"}},"id":951,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8260:33:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":952,"nodeType":"ExpressionStatement","src":"8260:33:6"}]},"id":954,"nodeType":"IfStatement","src":"7886:418:6","trueBody":{"id":947,"nodeType":"Block","src":"7899:341:6","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":935,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":932,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":924,"src":"7917:10:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":933,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7928:6:6","memberName":"length","nodeType":"MemberAccess","src":"7917:17:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":934,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7938:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7917:22:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":944,"nodeType":"IfStatement","src":"7913:286:6","trueBody":{"id":943,"nodeType":"Block","src":"7941:258:6","statements":[{"expression":{"arguments":[{"arguments":[{"id":938,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":920,"src":"8143:6:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":937,"name":"isContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":689,"src":"8132:10:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":939,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8132:18:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374","id":940,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8152:31:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad","typeString":"literal_string \"Address: call to non-contract\""},"value":"Address: call to non-contract"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad","typeString":"literal_string \"Address: call to non-contract\""}],"id":936,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"8124:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":941,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8124:60:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":942,"nodeType":"ExpressionStatement","src":"8124:60:6"}]}},{"expression":{"id":945,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":924,"src":"8219:10:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":930,"id":946,"nodeType":"Return","src":"8212:17:6"}]}}]},"documentation":{"id":918,"nodeType":"StructuredDocumentation","src":"7400:277:6","text":" @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\n the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\n _Available since v4.8._"},"id":956,"implemented":true,"kind":"function","modifiers":[],"name":"verifyCallResultFromTarget","nameLocation":"7691:26:6","nodeType":"FunctionDefinition","parameters":{"id":927,"nodeType":"ParameterList","parameters":[{"constant":false,"id":920,"mutability":"mutable","name":"target","nameLocation":"7735:6:6","nodeType":"VariableDeclaration","scope":956,"src":"7727:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":919,"name":"address","nodeType":"ElementaryTypeName","src":"7727:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":922,"mutability":"mutable","name":"success","nameLocation":"7756:7:6","nodeType":"VariableDeclaration","scope":956,"src":"7751:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":921,"name":"bool","nodeType":"ElementaryTypeName","src":"7751:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":924,"mutability":"mutable","name":"returndata","nameLocation":"7786:10:6","nodeType":"VariableDeclaration","scope":956,"src":"7773:23:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":923,"name":"bytes","nodeType":"ElementaryTypeName","src":"7773:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":926,"mutability":"mutable","name":"errorMessage","nameLocation":"7820:12:6","nodeType":"VariableDeclaration","scope":956,"src":"7806:26:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":925,"name":"string","nodeType":"ElementaryTypeName","src":"7806:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"7717:121:6"},"returnParameters":{"id":930,"nodeType":"ParameterList","parameters":[{"constant":false,"id":929,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":956,"src":"7862:12:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":928,"name":"bytes","nodeType":"ElementaryTypeName","src":"7862:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7861:14:6"},"scope":1001,"src":"7682:628:6","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":979,"nodeType":"Block","src":"8691:135:6","statements":[{"condition":{"id":968,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":959,"src":"8705:7:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":977,"nodeType":"Block","src":"8762:58:6","statements":[{"expression":{"arguments":[{"id":973,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":961,"src":"8784:10:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":974,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":963,"src":"8796:12:6","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":972,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1000,"src":"8776:7:6","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (bytes memory,string memory) pure"}},"id":975,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8776:33:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":976,"nodeType":"ExpressionStatement","src":"8776:33:6"}]},"id":978,"nodeType":"IfStatement","src":"8701:119:6","trueBody":{"id":971,"nodeType":"Block","src":"8714:42:6","statements":[{"expression":{"id":969,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":961,"src":"8735:10:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":967,"id":970,"nodeType":"Return","src":"8728:17:6"}]}}]},"documentation":{"id":957,"nodeType":"StructuredDocumentation","src":"8316:210:6","text":" @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\n revert reason or using the provided one.\n _Available since v4.3._"},"id":980,"implemented":true,"kind":"function","modifiers":[],"name":"verifyCallResult","nameLocation":"8540:16:6","nodeType":"FunctionDefinition","parameters":{"id":964,"nodeType":"ParameterList","parameters":[{"constant":false,"id":959,"mutability":"mutable","name":"success","nameLocation":"8571:7:6","nodeType":"VariableDeclaration","scope":980,"src":"8566:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":958,"name":"bool","nodeType":"ElementaryTypeName","src":"8566:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":961,"mutability":"mutable","name":"returndata","nameLocation":"8601:10:6","nodeType":"VariableDeclaration","scope":980,"src":"8588:23:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":960,"name":"bytes","nodeType":"ElementaryTypeName","src":"8588:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":963,"mutability":"mutable","name":"errorMessage","nameLocation":"8635:12:6","nodeType":"VariableDeclaration","scope":980,"src":"8621:26:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":962,"name":"string","nodeType":"ElementaryTypeName","src":"8621:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"8556:97:6"},"returnParameters":{"id":967,"nodeType":"ParameterList","parameters":[{"constant":false,"id":966,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":980,"src":"8677:12:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":965,"name":"bytes","nodeType":"ElementaryTypeName","src":"8677:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"8676:14:6"},"scope":1001,"src":"8531:295:6","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":999,"nodeType":"Block","src":"8915:457:6","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":990,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":987,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":982,"src":"8991:10:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":988,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9002:6:6","memberName":"length","nodeType":"MemberAccess","src":"8991:17:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":989,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9011:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8991:21:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":997,"nodeType":"Block","src":"9321:45:6","statements":[{"expression":{"arguments":[{"id":994,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":984,"src":"9342:12:6","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":993,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[4294967277,4294967277],"referencedDeclaration":4294967277,"src":"9335:6:6","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":995,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9335:20:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":996,"nodeType":"ExpressionStatement","src":"9335:20:6"}]},"id":998,"nodeType":"IfStatement","src":"8987:379:6","trueBody":{"id":992,"nodeType":"Block","src":"9014:301:6","statements":[{"AST":{"nodeType":"YulBlock","src":"9172:133:6","statements":[{"nodeType":"YulVariableDeclaration","src":"9190:40:6","value":{"arguments":[{"name":"returndata","nodeType":"YulIdentifier","src":"9219:10:6"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"9213:5:6"},"nodeType":"YulFunctionCall","src":"9213:17:6"},"variables":[{"name":"returndata_size","nodeType":"YulTypedName","src":"9194:15:6","type":""}]},{"expression":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9258:2:6","type":"","value":"32"},{"name":"returndata","nodeType":"YulIdentifier","src":"9262:10:6"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9254:3:6"},"nodeType":"YulFunctionCall","src":"9254:19:6"},{"name":"returndata_size","nodeType":"YulIdentifier","src":"9275:15:6"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9247:6:6"},"nodeType":"YulFunctionCall","src":"9247:44:6"},"nodeType":"YulExpressionStatement","src":"9247:44:6"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"london","externalReferences":[{"declaration":982,"isOffset":false,"isSlot":false,"src":"9219:10:6","valueSize":1},{"declaration":982,"isOffset":false,"isSlot":false,"src":"9262:10:6","valueSize":1}],"id":991,"nodeType":"InlineAssembly","src":"9163:142:6"}]}}]},"id":1000,"implemented":true,"kind":"function","modifiers":[],"name":"_revert","nameLocation":"8841:7:6","nodeType":"FunctionDefinition","parameters":{"id":985,"nodeType":"ParameterList","parameters":[{"constant":false,"id":982,"mutability":"mutable","name":"returndata","nameLocation":"8862:10:6","nodeType":"VariableDeclaration","scope":1000,"src":"8849:23:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":981,"name":"bytes","nodeType":"ElementaryTypeName","src":"8849:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":984,"mutability":"mutable","name":"errorMessage","nameLocation":"8888:12:6","nodeType":"VariableDeclaration","scope":1000,"src":"8874:26:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":983,"name":"string","nodeType":"ElementaryTypeName","src":"8874:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"8848:53:6"},"returnParameters":{"id":986,"nodeType":"ParameterList","parameters":[],"src":"8915:0:6"},"scope":1001,"src":"8832:540:6","stateMutability":"pure","virtual":false,"visibility":"private"}],"scope":1002,"src":"194:9180:6","usedErrors":[]}],"src":"101:9274:6"},"id":6},"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol","exportedSymbols":{"ContextUpgradeable":[1052],"Initializable":[534]},"id":1053,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1003,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"101:23:7"},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","file":"../proxy/utils/Initializable.sol","id":1005,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1053,"sourceUnit":535,"src":"125:63:7","symbolAliases":[{"foreign":{"id":1004,"name":"Initializable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":534,"src":"133:13:7","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":1007,"name":"Initializable","nameLocations":["727:13:7"],"nodeType":"IdentifierPath","referencedDeclaration":534,"src":"727:13:7"},"id":1008,"nodeType":"InheritanceSpecifier","src":"727:13:7"}],"canonicalName":"ContextUpgradeable","contractDependencies":[],"contractKind":"contract","documentation":{"id":1006,"nodeType":"StructuredDocumentation","src":"190:496:7","text":" @dev Provides information about the current execution context, including the\n sender of the transaction and its data. While these are generally available\n via msg.sender and msg.data, they should not be accessed in such a direct\n manner, since when dealing with meta-transactions the account sending and\n paying for execution may not be the actual sender (as far as an application\n is concerned).\n This contract is only required for intermediate, library-like contracts."},"fullyImplemented":true,"id":1052,"linearizedBaseContracts":[1052,534],"name":"ContextUpgradeable","nameLocation":"705:18:7","nodeType":"ContractDefinition","nodes":[{"body":{"id":1013,"nodeType":"Block","src":"799:7:7","statements":[]},"id":1014,"implemented":true,"kind":"function","modifiers":[{"id":1011,"kind":"modifierInvocation","modifierName":{"id":1010,"name":"onlyInitializing","nameLocations":["782:16:7"],"nodeType":"IdentifierPath","referencedDeclaration":479,"src":"782:16:7"},"nodeType":"ModifierInvocation","src":"782:16:7"}],"name":"__Context_init","nameLocation":"756:14:7","nodeType":"FunctionDefinition","parameters":{"id":1009,"nodeType":"ParameterList","parameters":[],"src":"770:2:7"},"returnParameters":{"id":1012,"nodeType":"ParameterList","parameters":[],"src":"799:0:7"},"scope":1052,"src":"747:59:7","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1019,"nodeType":"Block","src":"874:7:7","statements":[]},"id":1020,"implemented":true,"kind":"function","modifiers":[{"id":1017,"kind":"modifierInvocation","modifierName":{"id":1016,"name":"onlyInitializing","nameLocations":["857:16:7"],"nodeType":"IdentifierPath","referencedDeclaration":479,"src":"857:16:7"},"nodeType":"ModifierInvocation","src":"857:16:7"}],"name":"__Context_init_unchained","nameLocation":"821:24:7","nodeType":"FunctionDefinition","parameters":{"id":1015,"nodeType":"ParameterList","parameters":[],"src":"845:2:7"},"returnParameters":{"id":1018,"nodeType":"ParameterList","parameters":[],"src":"874:0:7"},"scope":1052,"src":"812:69:7","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1028,"nodeType":"Block","src":"948:34:7","statements":[{"expression":{"expression":{"id":1025,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967281,"src":"965:3:7","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1026,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"969:6:7","memberName":"sender","nodeType":"MemberAccess","src":"965:10:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1024,"id":1027,"nodeType":"Return","src":"958:17:7"}]},"id":1029,"implemented":true,"kind":"function","modifiers":[],"name":"_msgSender","nameLocation":"895:10:7","nodeType":"FunctionDefinition","parameters":{"id":1021,"nodeType":"ParameterList","parameters":[],"src":"905:2:7"},"returnParameters":{"id":1024,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1023,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1029,"src":"939:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1022,"name":"address","nodeType":"ElementaryTypeName","src":"939:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"938:9:7"},"scope":1052,"src":"886:96:7","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":1037,"nodeType":"Block","src":"1055:32:7","statements":[{"expression":{"expression":{"id":1034,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967281,"src":"1072:3:7","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1035,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1076:4:7","memberName":"data","nodeType":"MemberAccess","src":"1072:8:7","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"functionReturnParameters":1033,"id":1036,"nodeType":"Return","src":"1065:15:7"}]},"id":1038,"implemented":true,"kind":"function","modifiers":[],"name":"_msgData","nameLocation":"997:8:7","nodeType":"FunctionDefinition","parameters":{"id":1030,"nodeType":"ParameterList","parameters":[],"src":"1005:2:7"},"returnParameters":{"id":1033,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1032,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1038,"src":"1039:14:7","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1031,"name":"bytes","nodeType":"ElementaryTypeName","src":"1039:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1038:16:7"},"scope":1052,"src":"988:99:7","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":1045,"nodeType":"Block","src":"1165:25:7","statements":[{"expression":{"hexValue":"30","id":1043,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1182:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":1042,"id":1044,"nodeType":"Return","src":"1175:8:7"}]},"id":1046,"implemented":true,"kind":"function","modifiers":[],"name":"_contextSuffixLength","nameLocation":"1102:20:7","nodeType":"FunctionDefinition","parameters":{"id":1039,"nodeType":"ParameterList","parameters":[],"src":"1122:2:7"},"returnParameters":{"id":1042,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1041,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1046,"src":"1156:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1040,"name":"uint256","nodeType":"ElementaryTypeName","src":"1156:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1155:9:7"},"scope":1052,"src":"1093:97:7","stateMutability":"view","virtual":true,"visibility":"internal"},{"constant":false,"documentation":{"id":1047,"nodeType":"StructuredDocumentation","src":"1196:254:7","text":" @dev This empty reserved space is put in place to allow future versions to add new\n variables without shifting down storage in the inheritance chain.\n See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"},"id":1051,"mutability":"mutable","name":"__gap","nameLocation":"1475:5:7","nodeType":"VariableDeclaration","scope":1052,"src":"1455:25:7","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$50_storage","typeString":"uint256[50]"},"typeName":{"baseType":{"id":1048,"name":"uint256","nodeType":"ElementaryTypeName","src":"1455:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1050,"length":{"hexValue":"3530","id":1049,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1463:2:7","typeDescriptions":{"typeIdentifier":"t_rational_50_by_1","typeString":"int_const 50"},"value":"50"},"nodeType":"ArrayTypeName","src":"1455:11:7","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$50_storage_ptr","typeString":"uint256[50]"}},"visibility":"private"}],"scope":1053,"src":"687:796:7","usedErrors":[]}],"src":"101:1383:7"},"id":7},"@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol","exportedSymbols":{"CountersUpgradeable":[1126]},"id":1127,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1054,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"87:23:8"},{"abstract":false,"baseContracts":[],"canonicalName":"CountersUpgradeable","contractDependencies":[],"contractKind":"library","documentation":{"id":1055,"nodeType":"StructuredDocumentation","src":"112:311:8","text":" @title Counters\n @author Matt Condon (@shrugs)\n @dev Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number\n of elements in a mapping, issuing ERC721 ids, or counting request ids.\n Include with `using Counters for Counters.Counter;`"},"fullyImplemented":true,"id":1126,"linearizedBaseContracts":[1126],"name":"CountersUpgradeable","nameLocation":"432:19:8","nodeType":"ContractDefinition","nodes":[{"canonicalName":"CountersUpgradeable.Counter","id":1058,"members":[{"constant":false,"id":1057,"mutability":"mutable","name":"_value","nameLocation":"805:6:8","nodeType":"VariableDeclaration","scope":1058,"src":"797:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1056,"name":"uint256","nodeType":"ElementaryTypeName","src":"797:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"Counter","nameLocation":"465:7:8","nodeType":"StructDefinition","scope":1126,"src":"458:374:8","visibility":"public"},{"body":{"id":1069,"nodeType":"Block","src":"912:38:8","statements":[{"expression":{"expression":{"id":1066,"name":"counter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1061,"src":"929:7:8","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$1058_storage_ptr","typeString":"struct CountersUpgradeable.Counter storage pointer"}},"id":1067,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"937:6:8","memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":1057,"src":"929:14:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1065,"id":1068,"nodeType":"Return","src":"922:21:8"}]},"id":1070,"implemented":true,"kind":"function","modifiers":[],"name":"current","nameLocation":"847:7:8","nodeType":"FunctionDefinition","parameters":{"id":1062,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1061,"mutability":"mutable","name":"counter","nameLocation":"871:7:8","nodeType":"VariableDeclaration","scope":1070,"src":"855:23:8","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$1058_storage_ptr","typeString":"struct CountersUpgradeable.Counter"},"typeName":{"id":1060,"nodeType":"UserDefinedTypeName","pathNode":{"id":1059,"name":"Counter","nameLocations":["855:7:8"],"nodeType":"IdentifierPath","referencedDeclaration":1058,"src":"855:7:8"},"referencedDeclaration":1058,"src":"855:7:8","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$1058_storage_ptr","typeString":"struct CountersUpgradeable.Counter"}},"visibility":"internal"}],"src":"854:25:8"},"returnParameters":{"id":1065,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1064,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1070,"src":"903:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1063,"name":"uint256","nodeType":"ElementaryTypeName","src":"903:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"902:9:8"},"scope":1126,"src":"838:112:8","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":1083,"nodeType":"Block","src":"1009:70:8","statements":[{"id":1082,"nodeType":"UncheckedBlock","src":"1019:54:8","statements":[{"expression":{"id":1080,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":1076,"name":"counter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1073,"src":"1043:7:8","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$1058_storage_ptr","typeString":"struct CountersUpgradeable.Counter storage pointer"}},"id":1078,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1051:6:8","memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":1057,"src":"1043:14:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":1079,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1061:1:8","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1043:19:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1081,"nodeType":"ExpressionStatement","src":"1043:19:8"}]}]},"id":1084,"implemented":true,"kind":"function","modifiers":[],"name":"increment","nameLocation":"965:9:8","nodeType":"FunctionDefinition","parameters":{"id":1074,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1073,"mutability":"mutable","name":"counter","nameLocation":"991:7:8","nodeType":"VariableDeclaration","scope":1084,"src":"975:23:8","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$1058_storage_ptr","typeString":"struct CountersUpgradeable.Counter"},"typeName":{"id":1072,"nodeType":"UserDefinedTypeName","pathNode":{"id":1071,"name":"Counter","nameLocations":["975:7:8"],"nodeType":"IdentifierPath","referencedDeclaration":1058,"src":"975:7:8"},"referencedDeclaration":1058,"src":"975:7:8","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$1058_storage_ptr","typeString":"struct CountersUpgradeable.Counter"}},"visibility":"internal"}],"src":"974:25:8"},"returnParameters":{"id":1075,"nodeType":"ParameterList","parameters":[],"src":"1009:0:8"},"scope":1126,"src":"956:123:8","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1111,"nodeType":"Block","src":"1138:176:8","statements":[{"assignments":[1091],"declarations":[{"constant":false,"id":1091,"mutability":"mutable","name":"value","nameLocation":"1156:5:8","nodeType":"VariableDeclaration","scope":1111,"src":"1148:13:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1090,"name":"uint256","nodeType":"ElementaryTypeName","src":"1148:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1094,"initialValue":{"expression":{"id":1092,"name":"counter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1087,"src":"1164:7:8","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$1058_storage_ptr","typeString":"struct CountersUpgradeable.Counter storage pointer"}},"id":1093,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1172:6:8","memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":1057,"src":"1164:14:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1148:30:8"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1098,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1096,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1091,"src":"1196:5:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1097,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1204:1:8","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1196:9:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"436f756e7465723a2064656372656d656e74206f766572666c6f77","id":1099,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1207:29:8","typeDescriptions":{"typeIdentifier":"t_stringliteral_1dfd0d5389474d871b8e8929aab9d4def041f55f90f625754fb5f9a9ba08af6f","typeString":"literal_string \"Counter: decrement overflow\""},"value":"Counter: decrement overflow"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_1dfd0d5389474d871b8e8929aab9d4def041f55f90f625754fb5f9a9ba08af6f","typeString":"literal_string \"Counter: decrement overflow\""}],"id":1095,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"1188:7:8","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1100,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1188:49:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1101,"nodeType":"ExpressionStatement","src":"1188:49:8"},{"id":1110,"nodeType":"UncheckedBlock","src":"1247:61:8","statements":[{"expression":{"id":1108,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":1102,"name":"counter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1087,"src":"1271:7:8","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$1058_storage_ptr","typeString":"struct CountersUpgradeable.Counter storage pointer"}},"id":1104,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1279:6:8","memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":1057,"src":"1271:14:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1107,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1105,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1091,"src":"1288:5:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":1106,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1296:1:8","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1288:9:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1271:26:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1109,"nodeType":"ExpressionStatement","src":"1271:26:8"}]}]},"id":1112,"implemented":true,"kind":"function","modifiers":[],"name":"decrement","nameLocation":"1094:9:8","nodeType":"FunctionDefinition","parameters":{"id":1088,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1087,"mutability":"mutable","name":"counter","nameLocation":"1120:7:8","nodeType":"VariableDeclaration","scope":1112,"src":"1104:23:8","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$1058_storage_ptr","typeString":"struct CountersUpgradeable.Counter"},"typeName":{"id":1086,"nodeType":"UserDefinedTypeName","pathNode":{"id":1085,"name":"Counter","nameLocations":["1104:7:8"],"nodeType":"IdentifierPath","referencedDeclaration":1058,"src":"1104:7:8"},"referencedDeclaration":1058,"src":"1104:7:8","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$1058_storage_ptr","typeString":"struct CountersUpgradeable.Counter"}},"visibility":"internal"}],"src":"1103:25:8"},"returnParameters":{"id":1089,"nodeType":"ParameterList","parameters":[],"src":"1138:0:8"},"scope":1126,"src":"1085:229:8","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1124,"nodeType":"Block","src":"1369:35:8","statements":[{"expression":{"id":1122,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":1118,"name":"counter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1115,"src":"1379:7:8","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$1058_storage_ptr","typeString":"struct CountersUpgradeable.Counter storage pointer"}},"id":1120,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1387:6:8","memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":1057,"src":"1379:14:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":1121,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1396:1:8","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1379:18:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1123,"nodeType":"ExpressionStatement","src":"1379:18:8"}]},"id":1125,"implemented":true,"kind":"function","modifiers":[],"name":"reset","nameLocation":"1329:5:8","nodeType":"FunctionDefinition","parameters":{"id":1116,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1115,"mutability":"mutable","name":"counter","nameLocation":"1351:7:8","nodeType":"VariableDeclaration","scope":1125,"src":"1335:23:8","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$1058_storage_ptr","typeString":"struct CountersUpgradeable.Counter"},"typeName":{"id":1114,"nodeType":"UserDefinedTypeName","pathNode":{"id":1113,"name":"Counter","nameLocations":["1335:7:8"],"nodeType":"IdentifierPath","referencedDeclaration":1058,"src":"1335:7:8"},"referencedDeclaration":1058,"src":"1335:7:8","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$1058_storage_ptr","typeString":"struct CountersUpgradeable.Counter"}},"visibility":"internal"}],"src":"1334:25:8"},"returnParameters":{"id":1117,"nodeType":"ParameterList","parameters":[],"src":"1369:0:8"},"scope":1126,"src":"1320:84:8","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":1127,"src":"424:982:8","usedErrors":[]}],"src":"87:1320:8"},"id":8},"@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol","exportedSymbols":{"StorageSlotUpgradeable":[1236]},"id":1237,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1128,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"193:23:9"},{"abstract":false,"baseContracts":[],"canonicalName":"StorageSlotUpgradeable","contractDependencies":[],"contractKind":"library","documentation":{"id":1129,"nodeType":"StructuredDocumentation","src":"218:1201:9","text":" @dev Library for reading and writing primitive types to specific storage slots.\n Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\n This library helps with reading and writing to such slots without the need for inline assembly.\n The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\n Example usage to set ERC1967 implementation slot:\n ```solidity\n contract ERC1967 {\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n function _getImplementation() internal view returns (address) {\n return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\n }\n function _setImplementation(address newImplementation) internal {\n require(Address.isContract(newImplementation), \"ERC1967: new implementation is not a contract\");\n StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\n }\n }\n ```\n _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._\n _Available since v4.9 for `string`, `bytes`._"},"fullyImplemented":true,"id":1236,"linearizedBaseContracts":[1236],"name":"StorageSlotUpgradeable","nameLocation":"1428:22:9","nodeType":"ContractDefinition","nodes":[{"canonicalName":"StorageSlotUpgradeable.AddressSlot","id":1132,"members":[{"constant":false,"id":1131,"mutability":"mutable","name":"value","nameLocation":"1494:5:9","nodeType":"VariableDeclaration","scope":1132,"src":"1486:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1130,"name":"address","nodeType":"ElementaryTypeName","src":"1486:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"name":"AddressSlot","nameLocation":"1464:11:9","nodeType":"StructDefinition","scope":1236,"src":"1457:49:9","visibility":"public"},{"canonicalName":"StorageSlotUpgradeable.BooleanSlot","id":1135,"members":[{"constant":false,"id":1134,"mutability":"mutable","name":"value","nameLocation":"1546:5:9","nodeType":"VariableDeclaration","scope":1135,"src":"1541:10:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1133,"name":"bool","nodeType":"ElementaryTypeName","src":"1541:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"name":"BooleanSlot","nameLocation":"1519:11:9","nodeType":"StructDefinition","scope":1236,"src":"1512:46:9","visibility":"public"},{"canonicalName":"StorageSlotUpgradeable.Bytes32Slot","id":1138,"members":[{"constant":false,"id":1137,"mutability":"mutable","name":"value","nameLocation":"1601:5:9","nodeType":"VariableDeclaration","scope":1138,"src":"1593:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1136,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1593:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"name":"Bytes32Slot","nameLocation":"1571:11:9","nodeType":"StructDefinition","scope":1236,"src":"1564:49:9","visibility":"public"},{"canonicalName":"StorageSlotUpgradeable.Uint256Slot","id":1141,"members":[{"constant":false,"id":1140,"mutability":"mutable","name":"value","nameLocation":"1656:5:9","nodeType":"VariableDeclaration","scope":1141,"src":"1648:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1139,"name":"uint256","nodeType":"ElementaryTypeName","src":"1648:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"Uint256Slot","nameLocation":"1626:11:9","nodeType":"StructDefinition","scope":1236,"src":"1619:49:9","visibility":"public"},{"canonicalName":"StorageSlotUpgradeable.StringSlot","id":1144,"members":[{"constant":false,"id":1143,"mutability":"mutable","name":"value","nameLocation":"1709:5:9","nodeType":"VariableDeclaration","scope":1144,"src":"1702:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":1142,"name":"string","nodeType":"ElementaryTypeName","src":"1702:6:9","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"name":"StringSlot","nameLocation":"1681:10:9","nodeType":"StructDefinition","scope":1236,"src":"1674:47:9","visibility":"public"},{"canonicalName":"StorageSlotUpgradeable.BytesSlot","id":1147,"members":[{"constant":false,"id":1146,"mutability":"mutable","name":"value","nameLocation":"1760:5:9","nodeType":"VariableDeclaration","scope":1147,"src":"1754:11:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":1145,"name":"bytes","nodeType":"ElementaryTypeName","src":"1754:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"name":"BytesSlot","nameLocation":"1734:9:9","nodeType":"StructDefinition","scope":1236,"src":"1727:45:9","visibility":"public"},{"body":{"id":1157,"nodeType":"Block","src":"1954:106:9","statements":[{"AST":{"nodeType":"YulBlock","src":"2016:38:9","statements":[{"nodeType":"YulAssignment","src":"2030:14:9","value":{"name":"slot","nodeType":"YulIdentifier","src":"2040:4:9"},"variableNames":[{"name":"r.slot","nodeType":"YulIdentifier","src":"2030:6:9"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"london","externalReferences":[{"declaration":1154,"isOffset":false,"isSlot":true,"src":"2030:6:9","suffix":"slot","valueSize":1},{"declaration":1150,"isOffset":false,"isSlot":false,"src":"2040:4:9","valueSize":1}],"id":1156,"nodeType":"InlineAssembly","src":"2007:47:9"}]},"documentation":{"id":1148,"nodeType":"StructuredDocumentation","src":"1778:87:9","text":" @dev Returns an `AddressSlot` with member `value` located at `slot`."},"id":1158,"implemented":true,"kind":"function","modifiers":[],"name":"getAddressSlot","nameLocation":"1879:14:9","nodeType":"FunctionDefinition","parameters":{"id":1151,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1150,"mutability":"mutable","name":"slot","nameLocation":"1902:4:9","nodeType":"VariableDeclaration","scope":1158,"src":"1894:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1149,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1894:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1893:14:9"},"returnParameters":{"id":1155,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1154,"mutability":"mutable","name":"r","nameLocation":"1951:1:9","nodeType":"VariableDeclaration","scope":1158,"src":"1931:21:9","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$1132_storage_ptr","typeString":"struct StorageSlotUpgradeable.AddressSlot"},"typeName":{"id":1153,"nodeType":"UserDefinedTypeName","pathNode":{"id":1152,"name":"AddressSlot","nameLocations":["1931:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":1132,"src":"1931:11:9"},"referencedDeclaration":1132,"src":"1931:11:9","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$1132_storage_ptr","typeString":"struct StorageSlotUpgradeable.AddressSlot"}},"visibility":"internal"}],"src":"1930:23:9"},"scope":1236,"src":"1870:190:9","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1168,"nodeType":"Block","src":"2242:106:9","statements":[{"AST":{"nodeType":"YulBlock","src":"2304:38:9","statements":[{"nodeType":"YulAssignment","src":"2318:14:9","value":{"name":"slot","nodeType":"YulIdentifier","src":"2328:4:9"},"variableNames":[{"name":"r.slot","nodeType":"YulIdentifier","src":"2318:6:9"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"london","externalReferences":[{"declaration":1165,"isOffset":false,"isSlot":true,"src":"2318:6:9","suffix":"slot","valueSize":1},{"declaration":1161,"isOffset":false,"isSlot":false,"src":"2328:4:9","valueSize":1}],"id":1167,"nodeType":"InlineAssembly","src":"2295:47:9"}]},"documentation":{"id":1159,"nodeType":"StructuredDocumentation","src":"2066:87:9","text":" @dev Returns an `BooleanSlot` with member `value` located at `slot`."},"id":1169,"implemented":true,"kind":"function","modifiers":[],"name":"getBooleanSlot","nameLocation":"2167:14:9","nodeType":"FunctionDefinition","parameters":{"id":1162,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1161,"mutability":"mutable","name":"slot","nameLocation":"2190:4:9","nodeType":"VariableDeclaration","scope":1169,"src":"2182:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1160,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2182:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2181:14:9"},"returnParameters":{"id":1166,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1165,"mutability":"mutable","name":"r","nameLocation":"2239:1:9","nodeType":"VariableDeclaration","scope":1169,"src":"2219:21:9","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_BooleanSlot_$1135_storage_ptr","typeString":"struct StorageSlotUpgradeable.BooleanSlot"},"typeName":{"id":1164,"nodeType":"UserDefinedTypeName","pathNode":{"id":1163,"name":"BooleanSlot","nameLocations":["2219:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":1135,"src":"2219:11:9"},"referencedDeclaration":1135,"src":"2219:11:9","typeDescriptions":{"typeIdentifier":"t_struct$_BooleanSlot_$1135_storage_ptr","typeString":"struct StorageSlotUpgradeable.BooleanSlot"}},"visibility":"internal"}],"src":"2218:23:9"},"scope":1236,"src":"2158:190:9","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1179,"nodeType":"Block","src":"2530:106:9","statements":[{"AST":{"nodeType":"YulBlock","src":"2592:38:9","statements":[{"nodeType":"YulAssignment","src":"2606:14:9","value":{"name":"slot","nodeType":"YulIdentifier","src":"2616:4:9"},"variableNames":[{"name":"r.slot","nodeType":"YulIdentifier","src":"2606:6:9"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"london","externalReferences":[{"declaration":1176,"isOffset":false,"isSlot":true,"src":"2606:6:9","suffix":"slot","valueSize":1},{"declaration":1172,"isOffset":false,"isSlot":false,"src":"2616:4:9","valueSize":1}],"id":1178,"nodeType":"InlineAssembly","src":"2583:47:9"}]},"documentation":{"id":1170,"nodeType":"StructuredDocumentation","src":"2354:87:9","text":" @dev Returns an `Bytes32Slot` with member `value` located at `slot`."},"id":1180,"implemented":true,"kind":"function","modifiers":[],"name":"getBytes32Slot","nameLocation":"2455:14:9","nodeType":"FunctionDefinition","parameters":{"id":1173,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1172,"mutability":"mutable","name":"slot","nameLocation":"2478:4:9","nodeType":"VariableDeclaration","scope":1180,"src":"2470:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1171,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2470:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2469:14:9"},"returnParameters":{"id":1177,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1176,"mutability":"mutable","name":"r","nameLocation":"2527:1:9","nodeType":"VariableDeclaration","scope":1180,"src":"2507:21:9","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Slot_$1138_storage_ptr","typeString":"struct StorageSlotUpgradeable.Bytes32Slot"},"typeName":{"id":1175,"nodeType":"UserDefinedTypeName","pathNode":{"id":1174,"name":"Bytes32Slot","nameLocations":["2507:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":1138,"src":"2507:11:9"},"referencedDeclaration":1138,"src":"2507:11:9","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Slot_$1138_storage_ptr","typeString":"struct StorageSlotUpgradeable.Bytes32Slot"}},"visibility":"internal"}],"src":"2506:23:9"},"scope":1236,"src":"2446:190:9","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1190,"nodeType":"Block","src":"2818:106:9","statements":[{"AST":{"nodeType":"YulBlock","src":"2880:38:9","statements":[{"nodeType":"YulAssignment","src":"2894:14:9","value":{"name":"slot","nodeType":"YulIdentifier","src":"2904:4:9"},"variableNames":[{"name":"r.slot","nodeType":"YulIdentifier","src":"2894:6:9"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"london","externalReferences":[{"declaration":1187,"isOffset":false,"isSlot":true,"src":"2894:6:9","suffix":"slot","valueSize":1},{"declaration":1183,"isOffset":false,"isSlot":false,"src":"2904:4:9","valueSize":1}],"id":1189,"nodeType":"InlineAssembly","src":"2871:47:9"}]},"documentation":{"id":1181,"nodeType":"StructuredDocumentation","src":"2642:87:9","text":" @dev Returns an `Uint256Slot` with member `value` located at `slot`."},"id":1191,"implemented":true,"kind":"function","modifiers":[],"name":"getUint256Slot","nameLocation":"2743:14:9","nodeType":"FunctionDefinition","parameters":{"id":1184,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1183,"mutability":"mutable","name":"slot","nameLocation":"2766:4:9","nodeType":"VariableDeclaration","scope":1191,"src":"2758:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1182,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2758:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2757:14:9"},"returnParameters":{"id":1188,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1187,"mutability":"mutable","name":"r","nameLocation":"2815:1:9","nodeType":"VariableDeclaration","scope":1191,"src":"2795:21:9","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Uint256Slot_$1141_storage_ptr","typeString":"struct StorageSlotUpgradeable.Uint256Slot"},"typeName":{"id":1186,"nodeType":"UserDefinedTypeName","pathNode":{"id":1185,"name":"Uint256Slot","nameLocations":["2795:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":1141,"src":"2795:11:9"},"referencedDeclaration":1141,"src":"2795:11:9","typeDescriptions":{"typeIdentifier":"t_struct$_Uint256Slot_$1141_storage_ptr","typeString":"struct StorageSlotUpgradeable.Uint256Slot"}},"visibility":"internal"}],"src":"2794:23:9"},"scope":1236,"src":"2734:190:9","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1201,"nodeType":"Block","src":"3103:106:9","statements":[{"AST":{"nodeType":"YulBlock","src":"3165:38:9","statements":[{"nodeType":"YulAssignment","src":"3179:14:9","value":{"name":"slot","nodeType":"YulIdentifier","src":"3189:4:9"},"variableNames":[{"name":"r.slot","nodeType":"YulIdentifier","src":"3179:6:9"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"london","externalReferences":[{"declaration":1198,"isOffset":false,"isSlot":true,"src":"3179:6:9","suffix":"slot","valueSize":1},{"declaration":1194,"isOffset":false,"isSlot":false,"src":"3189:4:9","valueSize":1}],"id":1200,"nodeType":"InlineAssembly","src":"3156:47:9"}]},"documentation":{"id":1192,"nodeType":"StructuredDocumentation","src":"2930:86:9","text":" @dev Returns an `StringSlot` with member `value` located at `slot`."},"id":1202,"implemented":true,"kind":"function","modifiers":[],"name":"getStringSlot","nameLocation":"3030:13:9","nodeType":"FunctionDefinition","parameters":{"id":1195,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1194,"mutability":"mutable","name":"slot","nameLocation":"3052:4:9","nodeType":"VariableDeclaration","scope":1202,"src":"3044:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1193,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3044:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3043:14:9"},"returnParameters":{"id":1199,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1198,"mutability":"mutable","name":"r","nameLocation":"3100:1:9","nodeType":"VariableDeclaration","scope":1202,"src":"3081:20:9","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_StringSlot_$1144_storage_ptr","typeString":"struct StorageSlotUpgradeable.StringSlot"},"typeName":{"id":1197,"nodeType":"UserDefinedTypeName","pathNode":{"id":1196,"name":"StringSlot","nameLocations":["3081:10:9"],"nodeType":"IdentifierPath","referencedDeclaration":1144,"src":"3081:10:9"},"referencedDeclaration":1144,"src":"3081:10:9","typeDescriptions":{"typeIdentifier":"t_struct$_StringSlot_$1144_storage_ptr","typeString":"struct StorageSlotUpgradeable.StringSlot"}},"visibility":"internal"}],"src":"3080:22:9"},"scope":1236,"src":"3021:188:9","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1212,"nodeType":"Block","src":"3411:112:9","statements":[{"AST":{"nodeType":"YulBlock","src":"3473:44:9","statements":[{"nodeType":"YulAssignment","src":"3487:20:9","value":{"name":"store.slot","nodeType":"YulIdentifier","src":"3497:10:9"},"variableNames":[{"name":"r.slot","nodeType":"YulIdentifier","src":"3487:6:9"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"london","externalReferences":[{"declaration":1209,"isOffset":false,"isSlot":true,"src":"3487:6:9","suffix":"slot","valueSize":1},{"declaration":1205,"isOffset":false,"isSlot":true,"src":"3497:10:9","suffix":"slot","valueSize":1}],"id":1211,"nodeType":"InlineAssembly","src":"3464:53:9"}]},"documentation":{"id":1203,"nodeType":"StructuredDocumentation","src":"3215:101:9","text":" @dev Returns an `StringSlot` representation of the string storage pointer `store`."},"id":1213,"implemented":true,"kind":"function","modifiers":[],"name":"getStringSlot","nameLocation":"3330:13:9","nodeType":"FunctionDefinition","parameters":{"id":1206,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1205,"mutability":"mutable","name":"store","nameLocation":"3359:5:9","nodeType":"VariableDeclaration","scope":1213,"src":"3344:20:9","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":1204,"name":"string","nodeType":"ElementaryTypeName","src":"3344:6:9","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3343:22:9"},"returnParameters":{"id":1210,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1209,"mutability":"mutable","name":"r","nameLocation":"3408:1:9","nodeType":"VariableDeclaration","scope":1213,"src":"3389:20:9","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_StringSlot_$1144_storage_ptr","typeString":"struct StorageSlotUpgradeable.StringSlot"},"typeName":{"id":1208,"nodeType":"UserDefinedTypeName","pathNode":{"id":1207,"name":"StringSlot","nameLocations":["3389:10:9"],"nodeType":"IdentifierPath","referencedDeclaration":1144,"src":"3389:10:9"},"referencedDeclaration":1144,"src":"3389:10:9","typeDescriptions":{"typeIdentifier":"t_struct$_StringSlot_$1144_storage_ptr","typeString":"struct StorageSlotUpgradeable.StringSlot"}},"visibility":"internal"}],"src":"3388:22:9"},"scope":1236,"src":"3321:202:9","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1223,"nodeType":"Block","src":"3699:106:9","statements":[{"AST":{"nodeType":"YulBlock","src":"3761:38:9","statements":[{"nodeType":"YulAssignment","src":"3775:14:9","value":{"name":"slot","nodeType":"YulIdentifier","src":"3785:4:9"},"variableNames":[{"name":"r.slot","nodeType":"YulIdentifier","src":"3775:6:9"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"london","externalReferences":[{"declaration":1220,"isOffset":false,"isSlot":true,"src":"3775:6:9","suffix":"slot","valueSize":1},{"declaration":1216,"isOffset":false,"isSlot":false,"src":"3785:4:9","valueSize":1}],"id":1222,"nodeType":"InlineAssembly","src":"3752:47:9"}]},"documentation":{"id":1214,"nodeType":"StructuredDocumentation","src":"3529:85:9","text":" @dev Returns an `BytesSlot` with member `value` located at `slot`."},"id":1224,"implemented":true,"kind":"function","modifiers":[],"name":"getBytesSlot","nameLocation":"3628:12:9","nodeType":"FunctionDefinition","parameters":{"id":1217,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1216,"mutability":"mutable","name":"slot","nameLocation":"3649:4:9","nodeType":"VariableDeclaration","scope":1224,"src":"3641:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1215,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3641:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3640:14:9"},"returnParameters":{"id":1221,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1220,"mutability":"mutable","name":"r","nameLocation":"3696:1:9","nodeType":"VariableDeclaration","scope":1224,"src":"3678:19:9","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$1147_storage_ptr","typeString":"struct StorageSlotUpgradeable.BytesSlot"},"typeName":{"id":1219,"nodeType":"UserDefinedTypeName","pathNode":{"id":1218,"name":"BytesSlot","nameLocations":["3678:9:9"],"nodeType":"IdentifierPath","referencedDeclaration":1147,"src":"3678:9:9"},"referencedDeclaration":1147,"src":"3678:9:9","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$1147_storage_ptr","typeString":"struct StorageSlotUpgradeable.BytesSlot"}},"visibility":"internal"}],"src":"3677:21:9"},"scope":1236,"src":"3619:186:9","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1234,"nodeType":"Block","src":"4002:112:9","statements":[{"AST":{"nodeType":"YulBlock","src":"4064:44:9","statements":[{"nodeType":"YulAssignment","src":"4078:20:9","value":{"name":"store.slot","nodeType":"YulIdentifier","src":"4088:10:9"},"variableNames":[{"name":"r.slot","nodeType":"YulIdentifier","src":"4078:6:9"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"london","externalReferences":[{"declaration":1231,"isOffset":false,"isSlot":true,"src":"4078:6:9","suffix":"slot","valueSize":1},{"declaration":1227,"isOffset":false,"isSlot":true,"src":"4088:10:9","suffix":"slot","valueSize":1}],"id":1233,"nodeType":"InlineAssembly","src":"4055:53:9"}]},"documentation":{"id":1225,"nodeType":"StructuredDocumentation","src":"3811:99:9","text":" @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`."},"id":1235,"implemented":true,"kind":"function","modifiers":[],"name":"getBytesSlot","nameLocation":"3924:12:9","nodeType":"FunctionDefinition","parameters":{"id":1228,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1227,"mutability":"mutable","name":"store","nameLocation":"3951:5:9","nodeType":"VariableDeclaration","scope":1235,"src":"3937:19:9","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":1226,"name":"bytes","nodeType":"ElementaryTypeName","src":"3937:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3936:21:9"},"returnParameters":{"id":1232,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1231,"mutability":"mutable","name":"r","nameLocation":"3999:1:9","nodeType":"VariableDeclaration","scope":1235,"src":"3981:19:9","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$1147_storage_ptr","typeString":"struct StorageSlotUpgradeable.BytesSlot"},"typeName":{"id":1230,"nodeType":"UserDefinedTypeName","pathNode":{"id":1229,"name":"BytesSlot","nameLocations":["3981:9:9"],"nodeType":"IdentifierPath","referencedDeclaration":1147,"src":"3981:9:9"},"referencedDeclaration":1147,"src":"3981:9:9","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$1147_storage_ptr","typeString":"struct StorageSlotUpgradeable.BytesSlot"}},"visibility":"internal"}],"src":"3980:21:9"},"scope":1236,"src":"3915:199:9","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":1237,"src":"1420:2696:9","usedErrors":[]}],"src":"193:3924:9"},"id":9},"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol","exportedSymbols":{"ERC165Upgradeable":[1281],"IERC165Upgradeable":[1293],"Initializable":[534]},"id":1282,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1238,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"99:23:10"},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol","file":"./IERC165Upgradeable.sol","id":1239,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1282,"sourceUnit":1294,"src":"124:34:10","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","file":"../../proxy/utils/Initializable.sol","id":1241,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1282,"sourceUnit":535,"src":"159:66:10","symbolAliases":[{"foreign":{"id":1240,"name":"Initializable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":534,"src":"167:13:10","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":1243,"name":"Initializable","nameLocations":["843:13:10"],"nodeType":"IdentifierPath","referencedDeclaration":534,"src":"843:13:10"},"id":1244,"nodeType":"InheritanceSpecifier","src":"843:13:10"},{"baseName":{"id":1245,"name":"IERC165Upgradeable","nameLocations":["858:18:10"],"nodeType":"IdentifierPath","referencedDeclaration":1293,"src":"858:18:10"},"id":1246,"nodeType":"InheritanceSpecifier","src":"858:18:10"}],"canonicalName":"ERC165Upgradeable","contractDependencies":[],"contractKind":"contract","documentation":{"id":1242,"nodeType":"StructuredDocumentation","src":"227:576:10","text":" @dev Implementation of the {IERC165} interface.\n Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\n for the additional interface id that will be supported. For example:\n ```solidity\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\n }\n ```\n Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation."},"fullyImplemented":true,"id":1281,"linearizedBaseContracts":[1281,1293,534],"name":"ERC165Upgradeable","nameLocation":"822:17:10","nodeType":"ContractDefinition","nodes":[{"body":{"id":1251,"nodeType":"Block","src":"934:7:10","statements":[]},"id":1252,"implemented":true,"kind":"function","modifiers":[{"id":1249,"kind":"modifierInvocation","modifierName":{"id":1248,"name":"onlyInitializing","nameLocations":["917:16:10"],"nodeType":"IdentifierPath","referencedDeclaration":479,"src":"917:16:10"},"nodeType":"ModifierInvocation","src":"917:16:10"}],"name":"__ERC165_init","nameLocation":"892:13:10","nodeType":"FunctionDefinition","parameters":{"id":1247,"nodeType":"ParameterList","parameters":[],"src":"905:2:10"},"returnParameters":{"id":1250,"nodeType":"ParameterList","parameters":[],"src":"934:0:10"},"scope":1281,"src":"883:58:10","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1257,"nodeType":"Block","src":"1008:7:10","statements":[]},"id":1258,"implemented":true,"kind":"function","modifiers":[{"id":1255,"kind":"modifierInvocation","modifierName":{"id":1254,"name":"onlyInitializing","nameLocations":["991:16:10"],"nodeType":"IdentifierPath","referencedDeclaration":479,"src":"991:16:10"},"nodeType":"ModifierInvocation","src":"991:16:10"}],"name":"__ERC165_init_unchained","nameLocation":"956:23:10","nodeType":"FunctionDefinition","parameters":{"id":1253,"nodeType":"ParameterList","parameters":[],"src":"979:2:10"},"returnParameters":{"id":1256,"nodeType":"ParameterList","parameters":[],"src":"1008:0:10"},"scope":1281,"src":"947:68:10","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[1292],"body":{"id":1274,"nodeType":"Block","src":"1172:75:10","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":1272,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1267,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1261,"src":"1189:11:10","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1269,"name":"IERC165Upgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1293,"src":"1209:18:10","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC165Upgradeable_$1293_$","typeString":"type(contract IERC165Upgradeable)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC165Upgradeable_$1293_$","typeString":"type(contract IERC165Upgradeable)"}],"id":1268,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"1204:4:10","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1270,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1204:24:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC165Upgradeable_$1293","typeString":"type(contract IERC165Upgradeable)"}},"id":1271,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1229:11:10","memberName":"interfaceId","nodeType":"MemberAccess","src":"1204:36:10","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"1189:51:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1266,"id":1273,"nodeType":"Return","src":"1182:58:10"}]},"documentation":{"id":1259,"nodeType":"StructuredDocumentation","src":"1020:56:10","text":" @dev See {IERC165-supportsInterface}."},"functionSelector":"01ffc9a7","id":1275,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"1090:17:10","nodeType":"FunctionDefinition","overrides":{"id":1263,"nodeType":"OverrideSpecifier","overrides":[],"src":"1148:8:10"},"parameters":{"id":1262,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1261,"mutability":"mutable","name":"interfaceId","nameLocation":"1115:11:10","nodeType":"VariableDeclaration","scope":1275,"src":"1108:18:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1260,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1108:6:10","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"1107:20:10"},"returnParameters":{"id":1266,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1265,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1275,"src":"1166:4:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1264,"name":"bool","nodeType":"ElementaryTypeName","src":"1166:4:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1165:6:10"},"scope":1281,"src":"1081:166:10","stateMutability":"view","virtual":true,"visibility":"public"},{"constant":false,"documentation":{"id":1276,"nodeType":"StructuredDocumentation","src":"1253:254:10","text":" @dev This empty reserved space is put in place to allow future versions to add new\n variables without shifting down storage in the inheritance chain.\n See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"},"id":1280,"mutability":"mutable","name":"__gap","nameLocation":"1532:5:10","nodeType":"VariableDeclaration","scope":1281,"src":"1512:25:10","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$50_storage","typeString":"uint256[50]"},"typeName":{"baseType":{"id":1277,"name":"uint256","nodeType":"ElementaryTypeName","src":"1512:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1279,"length":{"hexValue":"3530","id":1278,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1520:2:10","typeDescriptions":{"typeIdentifier":"t_rational_50_by_1","typeString":"int_const 50"},"value":"50"},"nodeType":"ArrayTypeName","src":"1512:11:10","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$50_storage_ptr","typeString":"uint256[50]"}},"visibility":"private"}],"scope":1282,"src":"804:736:10","usedErrors":[]}],"src":"99:1442:10"},"id":10},"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol","exportedSymbols":{"IERC165Upgradeable":[1293]},"id":1294,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1283,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"100:23:11"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC165Upgradeable","contractDependencies":[],"contractKind":"interface","documentation":{"id":1284,"nodeType":"StructuredDocumentation","src":"125:279:11","text":" @dev Interface of the ERC165 standard, as defined in the\n https://eips.ethereum.org/EIPS/eip-165[EIP].\n Implementers can declare support of contract interfaces, which can then be\n queried by others ({ERC165Checker}).\n For an implementation, see {ERC165}."},"fullyImplemented":false,"id":1293,"linearizedBaseContracts":[1293],"name":"IERC165Upgradeable","nameLocation":"415:18:11","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":1285,"nodeType":"StructuredDocumentation","src":"440:340:11","text":" @dev Returns true if this contract implements the interface defined by\n `interfaceId`. See the corresponding\n https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\n to learn more about how these ids are created.\n This function call must use less than 30 000 gas."},"functionSelector":"01ffc9a7","id":1292,"implemented":false,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"794:17:11","nodeType":"FunctionDefinition","parameters":{"id":1288,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1287,"mutability":"mutable","name":"interfaceId","nameLocation":"819:11:11","nodeType":"VariableDeclaration","scope":1292,"src":"812:18:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1286,"name":"bytes4","nodeType":"ElementaryTypeName","src":"812:6:11","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"811:20:11"},"returnParameters":{"id":1291,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1290,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1292,"src":"855:4:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1289,"name":"bool","nodeType":"ElementaryTypeName","src":"855:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"854:6:11"},"scope":1293,"src":"785:76:11","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":1294,"src":"405:458:11","usedErrors":[]}],"src":"100:764:11"},"id":11},"@openzeppelin/contracts/interfaces/IERC1967.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/interfaces/IERC1967.sol","exportedSymbols":{"IERC1967":[1314]},"id":1315,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1295,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"107:23:12"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC1967","contractDependencies":[],"contractKind":"interface","documentation":{"id":1296,"nodeType":"StructuredDocumentation","src":"132:133:12","text":" @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\n _Available since v4.8.3._"},"fullyImplemented":true,"id":1314,"linearizedBaseContracts":[1314],"name":"IERC1967","nameLocation":"276:8:12","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":1297,"nodeType":"StructuredDocumentation","src":"291:68:12","text":" @dev Emitted when the implementation is upgraded."},"eventSelector":"bc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","id":1301,"name":"Upgraded","nameLocation":"370:8:12","nodeType":"EventDefinition","parameters":{"id":1300,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1299,"indexed":true,"mutability":"mutable","name":"implementation","nameLocation":"395:14:12","nodeType":"VariableDeclaration","scope":1301,"src":"379:30:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1298,"name":"address","nodeType":"ElementaryTypeName","src":"379:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"378:32:12"},"src":"364:47:12"},{"anonymous":false,"documentation":{"id":1302,"nodeType":"StructuredDocumentation","src":"417:67:12","text":" @dev Emitted when the admin account has changed."},"eventSelector":"7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f","id":1308,"name":"AdminChanged","nameLocation":"495:12:12","nodeType":"EventDefinition","parameters":{"id":1307,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1304,"indexed":false,"mutability":"mutable","name":"previousAdmin","nameLocation":"516:13:12","nodeType":"VariableDeclaration","scope":1308,"src":"508:21:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1303,"name":"address","nodeType":"ElementaryTypeName","src":"508:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1306,"indexed":false,"mutability":"mutable","name":"newAdmin","nameLocation":"539:8:12","nodeType":"VariableDeclaration","scope":1308,"src":"531:16:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1305,"name":"address","nodeType":"ElementaryTypeName","src":"531:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"507:41:12"},"src":"489:60:12"},{"anonymous":false,"documentation":{"id":1309,"nodeType":"StructuredDocumentation","src":"555:59:12","text":" @dev Emitted when the beacon is changed."},"eventSelector":"1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e","id":1313,"name":"BeaconUpgraded","nameLocation":"625:14:12","nodeType":"EventDefinition","parameters":{"id":1312,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1311,"indexed":true,"mutability":"mutable","name":"beacon","nameLocation":"656:6:12","nodeType":"VariableDeclaration","scope":1313,"src":"640:22:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1310,"name":"address","nodeType":"ElementaryTypeName","src":"640:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"639:24:12"},"src":"619:45:12"}],"scope":1315,"src":"266:400:12","usedErrors":[]}],"src":"107:560:12"},"id":12},"@openzeppelin/contracts/interfaces/draft-IERC1822.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/interfaces/draft-IERC1822.sol","exportedSymbols":{"IERC1822Proxiable":[1324]},"id":1325,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1316,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"113:23:13"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC1822Proxiable","contractDependencies":[],"contractKind":"interface","documentation":{"id":1317,"nodeType":"StructuredDocumentation","src":"138:203:13","text":" @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\n proxy whose upgrades are fully controlled by the current implementation."},"fullyImplemented":false,"id":1324,"linearizedBaseContracts":[1324],"name":"IERC1822Proxiable","nameLocation":"352:17:13","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":1318,"nodeType":"StructuredDocumentation","src":"376:438:13","text":" @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\n address.\n IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\n bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\n function revert if invoked through a proxy."},"functionSelector":"52d1902d","id":1323,"implemented":false,"kind":"function","modifiers":[],"name":"proxiableUUID","nameLocation":"828:13:13","nodeType":"FunctionDefinition","parameters":{"id":1319,"nodeType":"ParameterList","parameters":[],"src":"841:2:13"},"returnParameters":{"id":1322,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1321,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1323,"src":"867:7:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1320,"name":"bytes32","nodeType":"ElementaryTypeName","src":"867:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"866:9:13"},"scope":1324,"src":"819:57:13","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":1325,"src":"342:536:13","usedErrors":[]}],"src":"113:766:13"},"id":13},"@openzeppelin/contracts/proxy/Clones.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/proxy/Clones.sol","exportedSymbols":{"Clones":[1404]},"id":1405,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1326,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"100:23:14"},{"abstract":false,"baseContracts":[],"canonicalName":"Clones","contractDependencies":[],"contractKind":"library","documentation":{"id":1327,"nodeType":"StructuredDocumentation","src":"125:629:14","text":" @dev https://eips.ethereum.org/EIPS/eip-1167[EIP 1167] is a standard for\n deploying minimal proxy contracts, also known as \"clones\".\n > To simply and cheaply clone contract functionality in an immutable way, this standard specifies\n > a minimal bytecode implementation that delegates all calls to a known, fixed address.\n The library includes functions to deploy a proxy using either `create` (traditional deployment) or `create2`\n (salted deterministic deployment). It also includes functions to predict the addresses of clones deployed using the\n deterministic method.\n _Available since v3.4._"},"fullyImplemented":true,"id":1404,"linearizedBaseContracts":[1404],"name":"Clones","nameLocation":"763:6:14","nodeType":"ContractDefinition","nodes":[{"body":{"id":1346,"nodeType":"Block","src":"1048:684:14","statements":[{"AST":{"nodeType":"YulBlock","src":"1110:549:14","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1315:4:14","type":"","value":"0x00"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1328:4:14","type":"","value":"0xe8"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1338:4:14","type":"","value":"0x60"},{"name":"implementation","nodeType":"YulIdentifier","src":"1344:14:14"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1334:3:14"},"nodeType":"YulFunctionCall","src":"1334:25:14"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"1324:3:14"},"nodeType":"YulFunctionCall","src":"1324:36:14"},{"kind":"number","nodeType":"YulLiteral","src":"1362:48:14","type":"","value":"0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"1321:2:14"},"nodeType":"YulFunctionCall","src":"1321:90:14"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1308:6:14"},"nodeType":"YulFunctionCall","src":"1308:104:14"},"nodeType":"YulExpressionStatement","src":"1308:104:14"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1533:4:14","type":"","value":"0x20"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1546:4:14","type":"","value":"0x78"},{"name":"implementation","nodeType":"YulIdentifier","src":"1552:14:14"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1542:3:14"},"nodeType":"YulFunctionCall","src":"1542:25:14"},{"kind":"number","nodeType":"YulLiteral","src":"1569:32:14","type":"","value":"0x5af43d82803e903d91602b57fd5bf3"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"1539:2:14"},"nodeType":"YulFunctionCall","src":"1539:63:14"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1526:6:14"},"nodeType":"YulFunctionCall","src":"1526:77:14"},"nodeType":"YulExpressionStatement","src":"1526:77:14"},{"nodeType":"YulAssignment","src":"1616:33:14","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1635:1:14","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1638:4:14","type":"","value":"0x09"},{"kind":"number","nodeType":"YulLiteral","src":"1644:4:14","type":"","value":"0x37"}],"functionName":{"name":"create","nodeType":"YulIdentifier","src":"1628:6:14"},"nodeType":"YulFunctionCall","src":"1628:21:14"},"variableNames":[{"name":"instance","nodeType":"YulIdentifier","src":"1616:8:14"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"london","externalReferences":[{"declaration":1330,"isOffset":false,"isSlot":false,"src":"1344:14:14","valueSize":1},{"declaration":1330,"isOffset":false,"isSlot":false,"src":"1552:14:14","valueSize":1},{"declaration":1333,"isOffset":false,"isSlot":false,"src":"1616:8:14","valueSize":1}],"id":1335,"nodeType":"InlineAssembly","src":"1101:558:14"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1342,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1337,"name":"instance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1333,"src":"1676:8:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":1340,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1696:1:14","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1339,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1688:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1338,"name":"address","nodeType":"ElementaryTypeName","src":"1688:7:14","typeDescriptions":{}}},"id":1341,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1688:10:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1676:22:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"455243313136373a20637265617465206661696c6564","id":1343,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1700:24:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_68ca40b61460257f14e69f48b1a4dbc812e9afc6932f127ef8084544457b3335","typeString":"literal_string \"ERC1167: create failed\""},"value":"ERC1167: create failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_68ca40b61460257f14e69f48b1a4dbc812e9afc6932f127ef8084544457b3335","typeString":"literal_string \"ERC1167: create failed\""}],"id":1336,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"1668:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1344,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1668:57:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1345,"nodeType":"ExpressionStatement","src":"1668:57:14"}]},"documentation":{"id":1328,"nodeType":"StructuredDocumentation","src":"776:192:14","text":" @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`.\n This function uses the create opcode, which should never revert."},"id":1347,"implemented":true,"kind":"function","modifiers":[],"name":"clone","nameLocation":"982:5:14","nodeType":"FunctionDefinition","parameters":{"id":1331,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1330,"mutability":"mutable","name":"implementation","nameLocation":"996:14:14","nodeType":"VariableDeclaration","scope":1347,"src":"988:22:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1329,"name":"address","nodeType":"ElementaryTypeName","src":"988:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"987:24:14"},"returnParameters":{"id":1334,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1333,"mutability":"mutable","name":"instance","nameLocation":"1038:8:14","nodeType":"VariableDeclaration","scope":1347,"src":"1030:16:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1332,"name":"address","nodeType":"ElementaryTypeName","src":"1030:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1029:18:14"},"scope":1404,"src":"973:759:14","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1368,"nodeType":"Block","src":"2209:692:14","statements":[{"AST":{"nodeType":"YulBlock","src":"2271:556:14","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2476:4:14","type":"","value":"0x00"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2489:4:14","type":"","value":"0xe8"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2499:4:14","type":"","value":"0x60"},{"name":"implementation","nodeType":"YulIdentifier","src":"2505:14:14"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2495:3:14"},"nodeType":"YulFunctionCall","src":"2495:25:14"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"2485:3:14"},"nodeType":"YulFunctionCall","src":"2485:36:14"},{"kind":"number","nodeType":"YulLiteral","src":"2523:48:14","type":"","value":"0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"2482:2:14"},"nodeType":"YulFunctionCall","src":"2482:90:14"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2469:6:14"},"nodeType":"YulFunctionCall","src":"2469:104:14"},"nodeType":"YulExpressionStatement","src":"2469:104:14"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2694:4:14","type":"","value":"0x20"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2707:4:14","type":"","value":"0x78"},{"name":"implementation","nodeType":"YulIdentifier","src":"2713:14:14"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2703:3:14"},"nodeType":"YulFunctionCall","src":"2703:25:14"},{"kind":"number","nodeType":"YulLiteral","src":"2730:32:14","type":"","value":"0x5af43d82803e903d91602b57fd5bf3"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"2700:2:14"},"nodeType":"YulFunctionCall","src":"2700:63:14"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2687:6:14"},"nodeType":"YulFunctionCall","src":"2687:77:14"},"nodeType":"YulExpressionStatement","src":"2687:77:14"},{"nodeType":"YulAssignment","src":"2777:40:14","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2797:1:14","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2800:4:14","type":"","value":"0x09"},{"kind":"number","nodeType":"YulLiteral","src":"2806:4:14","type":"","value":"0x37"},{"name":"salt","nodeType":"YulIdentifier","src":"2812:4:14"}],"functionName":{"name":"create2","nodeType":"YulIdentifier","src":"2789:7:14"},"nodeType":"YulFunctionCall","src":"2789:28:14"},"variableNames":[{"name":"instance","nodeType":"YulIdentifier","src":"2777:8:14"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"london","externalReferences":[{"declaration":1350,"isOffset":false,"isSlot":false,"src":"2505:14:14","valueSize":1},{"declaration":1350,"isOffset":false,"isSlot":false,"src":"2713:14:14","valueSize":1},{"declaration":1355,"isOffset":false,"isSlot":false,"src":"2777:8:14","valueSize":1},{"declaration":1352,"isOffset":false,"isSlot":false,"src":"2812:4:14","valueSize":1}],"id":1357,"nodeType":"InlineAssembly","src":"2262:565:14"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1364,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1359,"name":"instance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1355,"src":"2844:8:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":1362,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2864:1:14","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1361,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2856:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1360,"name":"address","nodeType":"ElementaryTypeName","src":"2856:7:14","typeDescriptions":{}}},"id":1363,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2856:10:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2844:22:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"455243313136373a2063726561746532206661696c6564","id":1365,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2868:25:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_4ec050e530ce66e7658278ab7a4e4a2f19225159c48fc52eb249bd268e755d73","typeString":"literal_string \"ERC1167: create2 failed\""},"value":"ERC1167: create2 failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_4ec050e530ce66e7658278ab7a4e4a2f19225159c48fc52eb249bd268e755d73","typeString":"literal_string \"ERC1167: create2 failed\""}],"id":1358,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"2836:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1366,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2836:58:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1367,"nodeType":"ExpressionStatement","src":"2836:58:14"}]},"documentation":{"id":1348,"nodeType":"StructuredDocumentation","src":"1738:364:14","text":" @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`.\n This function uses the create2 opcode and a `salt` to deterministically deploy\n the clone. Using the same `implementation` and `salt` multiple time will revert, since\n the clones cannot be deployed twice at the same address."},"id":1369,"implemented":true,"kind":"function","modifiers":[],"name":"cloneDeterministic","nameLocation":"2116:18:14","nodeType":"FunctionDefinition","parameters":{"id":1353,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1350,"mutability":"mutable","name":"implementation","nameLocation":"2143:14:14","nodeType":"VariableDeclaration","scope":1369,"src":"2135:22:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1349,"name":"address","nodeType":"ElementaryTypeName","src":"2135:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1352,"mutability":"mutable","name":"salt","nameLocation":"2167:4:14","nodeType":"VariableDeclaration","scope":1369,"src":"2159:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1351,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2159:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2134:38:14"},"returnParameters":{"id":1356,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1355,"mutability":"mutable","name":"instance","nameLocation":"2199:8:14","nodeType":"VariableDeclaration","scope":1369,"src":"2191:16:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1354,"name":"address","nodeType":"ElementaryTypeName","src":"2191:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2190:18:14"},"scope":1404,"src":"2107:794:14","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1382,"nodeType":"Block","src":"3176:515:14","statements":[{"AST":{"nodeType":"YulBlock","src":"3238:447:14","statements":[{"nodeType":"YulVariableDeclaration","src":"3252:22:14","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3269:4:14","type":"","value":"0x40"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3263:5:14"},"nodeType":"YulFunctionCall","src":"3263:11:14"},"variables":[{"name":"ptr","nodeType":"YulTypedName","src":"3256:3:14","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"3298:3:14"},{"kind":"number","nodeType":"YulLiteral","src":"3303:4:14","type":"","value":"0x38"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3294:3:14"},"nodeType":"YulFunctionCall","src":"3294:14:14"},{"name":"deployer","nodeType":"YulIdentifier","src":"3310:8:14"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3287:6:14"},"nodeType":"YulFunctionCall","src":"3287:32:14"},"nodeType":"YulExpressionStatement","src":"3287:32:14"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"3343:3:14"},{"kind":"number","nodeType":"YulLiteral","src":"3348:4:14","type":"","value":"0x24"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3339:3:14"},"nodeType":"YulFunctionCall","src":"3339:14:14"},{"kind":"number","nodeType":"YulLiteral","src":"3355:34:14","type":"","value":"0x5af43d82803e903d91602b57fd5bf3ff"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3332:6:14"},"nodeType":"YulFunctionCall","src":"3332:58:14"},"nodeType":"YulExpressionStatement","src":"3332:58:14"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"3414:3:14"},{"kind":"number","nodeType":"YulLiteral","src":"3419:4:14","type":"","value":"0x14"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3410:3:14"},"nodeType":"YulFunctionCall","src":"3410:14:14"},{"name":"implementation","nodeType":"YulIdentifier","src":"3426:14:14"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3403:6:14"},"nodeType":"YulFunctionCall","src":"3403:38:14"},"nodeType":"YulExpressionStatement","src":"3403:38:14"},{"expression":{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"3461:3:14"},{"kind":"number","nodeType":"YulLiteral","src":"3466:42:14","type":"","value":"0x3d602d80600a3d3981f3363d3d373d3d3d363d73"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3454:6:14"},"nodeType":"YulFunctionCall","src":"3454:55:14"},"nodeType":"YulExpressionStatement","src":"3454:55:14"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"3533:3:14"},{"kind":"number","nodeType":"YulLiteral","src":"3538:4:14","type":"","value":"0x58"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3529:3:14"},"nodeType":"YulFunctionCall","src":"3529:14:14"},{"name":"salt","nodeType":"YulIdentifier","src":"3545:4:14"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3522:6:14"},"nodeType":"YulFunctionCall","src":"3522:28:14"},"nodeType":"YulExpressionStatement","src":"3522:28:14"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"3574:3:14"},{"kind":"number","nodeType":"YulLiteral","src":"3579:4:14","type":"","value":"0x78"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3570:3:14"},"nodeType":"YulFunctionCall","src":"3570:14:14"},{"arguments":[{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"3600:3:14"},{"kind":"number","nodeType":"YulLiteral","src":"3605:4:14","type":"","value":"0x0c"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3596:3:14"},"nodeType":"YulFunctionCall","src":"3596:14:14"},{"kind":"number","nodeType":"YulLiteral","src":"3612:4:14","type":"","value":"0x37"}],"functionName":{"name":"keccak256","nodeType":"YulIdentifier","src":"3586:9:14"},"nodeType":"YulFunctionCall","src":"3586:31:14"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3563:6:14"},"nodeType":"YulFunctionCall","src":"3563:55:14"},"nodeType":"YulExpressionStatement","src":"3563:55:14"},{"nodeType":"YulAssignment","src":"3631:44:14","value":{"arguments":[{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"3658:3:14"},{"kind":"number","nodeType":"YulLiteral","src":"3663:4:14","type":"","value":"0x43"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3654:3:14"},"nodeType":"YulFunctionCall","src":"3654:14:14"},{"kind":"number","nodeType":"YulLiteral","src":"3670:4:14","type":"","value":"0x55"}],"functionName":{"name":"keccak256","nodeType":"YulIdentifier","src":"3644:9:14"},"nodeType":"YulFunctionCall","src":"3644:31:14"},"variableNames":[{"name":"predicted","nodeType":"YulIdentifier","src":"3631:9:14"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"london","externalReferences":[{"declaration":1376,"isOffset":false,"isSlot":false,"src":"3310:8:14","valueSize":1},{"declaration":1372,"isOffset":false,"isSlot":false,"src":"3426:14:14","valueSize":1},{"declaration":1379,"isOffset":false,"isSlot":false,"src":"3631:9:14","valueSize":1},{"declaration":1374,"isOffset":false,"isSlot":false,"src":"3545:4:14","valueSize":1}],"id":1381,"nodeType":"InlineAssembly","src":"3229:456:14"}]},"documentation":{"id":1370,"nodeType":"StructuredDocumentation","src":"2907:99:14","text":" @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}."},"id":1383,"implemented":true,"kind":"function","modifiers":[],"name":"predictDeterministicAddress","nameLocation":"3020:27:14","nodeType":"FunctionDefinition","parameters":{"id":1377,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1372,"mutability":"mutable","name":"implementation","nameLocation":"3065:14:14","nodeType":"VariableDeclaration","scope":1383,"src":"3057:22:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1371,"name":"address","nodeType":"ElementaryTypeName","src":"3057:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1374,"mutability":"mutable","name":"salt","nameLocation":"3097:4:14","nodeType":"VariableDeclaration","scope":1383,"src":"3089:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1373,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3089:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1376,"mutability":"mutable","name":"deployer","nameLocation":"3119:8:14","nodeType":"VariableDeclaration","scope":1383,"src":"3111:16:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1375,"name":"address","nodeType":"ElementaryTypeName","src":"3111:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3047:86:14"},"returnParameters":{"id":1380,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1379,"mutability":"mutable","name":"predicted","nameLocation":"3165:9:14","nodeType":"VariableDeclaration","scope":1383,"src":"3157:17:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1378,"name":"address","nodeType":"ElementaryTypeName","src":"3157:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3156:19:14"},"scope":1404,"src":"3011:680:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1402,"nodeType":"Block","src":"3940:88:14","statements":[{"expression":{"arguments":[{"id":1394,"name":"implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1386,"src":"3985:14:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1395,"name":"salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1388,"src":"4001:4:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[{"id":1398,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967268,"src":"4015:4:14","typeDescriptions":{"typeIdentifier":"t_contract$_Clones_$1404","typeString":"library Clones"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Clones_$1404","typeString":"library Clones"}],"id":1397,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4007:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1396,"name":"address","nodeType":"ElementaryTypeName","src":"4007:7:14","typeDescriptions":{}}},"id":1399,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4007:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1393,"name":"predictDeterministicAddress","nodeType":"Identifier","overloadedDeclarations":[1383,1403],"referencedDeclaration":1383,"src":"3957:27:14","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_bytes32_$_t_address_$returns$_t_address_$","typeString":"function (address,bytes32,address) pure returns (address)"}},"id":1400,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3957:64:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1392,"id":1401,"nodeType":"Return","src":"3950:71:14"}]},"documentation":{"id":1384,"nodeType":"StructuredDocumentation","src":"3697:99:14","text":" @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}."},"id":1403,"implemented":true,"kind":"function","modifiers":[],"name":"predictDeterministicAddress","nameLocation":"3810:27:14","nodeType":"FunctionDefinition","parameters":{"id":1389,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1386,"mutability":"mutable","name":"implementation","nameLocation":"3855:14:14","nodeType":"VariableDeclaration","scope":1403,"src":"3847:22:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1385,"name":"address","nodeType":"ElementaryTypeName","src":"3847:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1388,"mutability":"mutable","name":"salt","nameLocation":"3887:4:14","nodeType":"VariableDeclaration","scope":1403,"src":"3879:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1387,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3879:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3837:60:14"},"returnParameters":{"id":1392,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1391,"mutability":"mutable","name":"predicted","nameLocation":"3929:9:14","nodeType":"VariableDeclaration","scope":1403,"src":"3921:17:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1390,"name":"address","nodeType":"ElementaryTypeName","src":"3921:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3920:19:14"},"scope":1404,"src":"3801:227:14","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":1405,"src":"755:3275:14","usedErrors":[]}],"src":"100:3931:14"},"id":14},"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol","exportedSymbols":{"Address":[2137],"ERC1967Proxy":[1441],"ERC1967Upgrade":[1745],"IBeacon":[1807],"IERC1822Proxiable":[1324],"IERC1967":[1314],"Proxy":[1797],"StorageSlot":[2351]},"id":1442,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1406,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"114:23:15"},{"absolutePath":"@openzeppelin/contracts/proxy/Proxy.sol","file":"../Proxy.sol","id":1407,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1442,"sourceUnit":1798,"src":"139:22:15","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol","file":"./ERC1967Upgrade.sol","id":1408,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1442,"sourceUnit":1746,"src":"162:30:15","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":1410,"name":"Proxy","nameLocations":["592:5:15"],"nodeType":"IdentifierPath","referencedDeclaration":1797,"src":"592:5:15"},"id":1411,"nodeType":"InheritanceSpecifier","src":"592:5:15"},{"baseName":{"id":1412,"name":"ERC1967Upgrade","nameLocations":["599:14:15"],"nodeType":"IdentifierPath","referencedDeclaration":1745,"src":"599:14:15"},"id":1413,"nodeType":"InheritanceSpecifier","src":"599:14:15"}],"canonicalName":"ERC1967Proxy","contractDependencies":[],"contractKind":"contract","documentation":{"id":1409,"nodeType":"StructuredDocumentation","src":"194:372:15","text":" @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an\n implementation address that can be changed. This address is stored in storage in the location specified by\n https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the\n implementation behind the proxy."},"fullyImplemented":true,"id":1441,"linearizedBaseContracts":[1441,1745,1314,1797],"name":"ERC1967Proxy","nameLocation":"576:12:15","nodeType":"ContractDefinition","nodes":[{"body":{"id":1427,"nodeType":"Block","src":"1014:56:15","statements":[{"expression":{"arguments":[{"id":1422,"name":"_logic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1416,"src":"1042:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1423,"name":"_data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1418,"src":"1050:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"66616c7365","id":1424,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1057:5:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":1421,"name":"_upgradeToAndCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1540,"src":"1024:17:15","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_bool_$returns$__$","typeString":"function (address,bytes memory,bool)"}},"id":1425,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1024:39:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1426,"nodeType":"ExpressionStatement","src":"1024:39:15"}]},"documentation":{"id":1414,"nodeType":"StructuredDocumentation","src":"620:333:15","text":" @dev Initializes the upgradeable proxy with an initial implementation specified by `_logic`.\n If `_data` is nonempty, it's used as data in a delegate call to `_logic`. This will typically be an encoded\n function call, and allows initializing the storage of the proxy like a Solidity constructor."},"id":1428,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":1419,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1416,"mutability":"mutable","name":"_logic","nameLocation":"978:6:15","nodeType":"VariableDeclaration","scope":1428,"src":"970:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1415,"name":"address","nodeType":"ElementaryTypeName","src":"970:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1418,"mutability":"mutable","name":"_data","nameLocation":"999:5:15","nodeType":"VariableDeclaration","scope":1428,"src":"986:18:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1417,"name":"bytes","nodeType":"ElementaryTypeName","src":"986:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"969:36:15"},"returnParameters":{"id":1420,"nodeType":"ParameterList","parameters":[],"src":"1014:0:15"},"scope":1441,"src":"958:112:15","stateMutability":"payable","virtual":false,"visibility":"public"},{"baseFunctions":[1762],"body":{"id":1439,"nodeType":"Block","src":"1229:59:15","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":1435,"name":"ERC1967Upgrade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1745,"src":"1246:14:15","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC1967Upgrade_$1745_$","typeString":"type(contract ERC1967Upgrade)"}},"id":1436,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1261:18:15","memberName":"_getImplementation","nodeType":"MemberAccess","referencedDeclaration":1471,"src":"1246:33:15","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1437,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1246:35:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1434,"id":1438,"nodeType":"Return","src":"1239:42:15"}]},"documentation":{"id":1429,"nodeType":"StructuredDocumentation","src":"1076:67:15","text":" @dev Returns the current implementation address."},"id":1440,"implemented":true,"kind":"function","modifiers":[],"name":"_implementation","nameLocation":"1157:15:15","nodeType":"FunctionDefinition","overrides":{"id":1431,"nodeType":"OverrideSpecifier","overrides":[],"src":"1197:8:15"},"parameters":{"id":1430,"nodeType":"ParameterList","parameters":[],"src":"1172:2:15"},"returnParameters":{"id":1434,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1433,"mutability":"mutable","name":"impl","nameLocation":"1223:4:15","nodeType":"VariableDeclaration","scope":1440,"src":"1215:12:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1432,"name":"address","nodeType":"ElementaryTypeName","src":"1215:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1214:14:15"},"scope":1441,"src":"1148:140:15","stateMutability":"view","virtual":true,"visibility":"internal"}],"scope":1442,"src":"567:723:15","usedErrors":[]}],"src":"114:1177:15"},"id":15},"@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol","exportedSymbols":{"Address":[2137],"ERC1967Upgrade":[1745],"IBeacon":[1807],"IERC1822Proxiable":[1324],"IERC1967":[1314],"StorageSlot":[2351]},"id":1746,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1443,"literals":["solidity","^","0.8",".2"],"nodeType":"PragmaDirective","src":"116:23:16"},{"absolutePath":"@openzeppelin/contracts/proxy/beacon/IBeacon.sol","file":"../beacon/IBeacon.sol","id":1444,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1746,"sourceUnit":1808,"src":"141:31:16","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/interfaces/IERC1967.sol","file":"../../interfaces/IERC1967.sol","id":1445,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1746,"sourceUnit":1315,"src":"173:39:16","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/interfaces/draft-IERC1822.sol","file":"../../interfaces/draft-IERC1822.sol","id":1446,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1746,"sourceUnit":1325,"src":"213:45:16","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Address.sol","file":"../../utils/Address.sol","id":1447,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1746,"sourceUnit":2138,"src":"259:33:16","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/StorageSlot.sol","file":"../../utils/StorageSlot.sol","id":1448,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1746,"sourceUnit":2352,"src":"293:37:16","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":1450,"name":"IERC1967","nameLocations":["553:8:16"],"nodeType":"IdentifierPath","referencedDeclaration":1314,"src":"553:8:16"},"id":1451,"nodeType":"InheritanceSpecifier","src":"553:8:16"}],"canonicalName":"ERC1967Upgrade","contractDependencies":[],"contractKind":"contract","documentation":{"id":1449,"nodeType":"StructuredDocumentation","src":"332:184:16","text":" @dev This abstract contract provides getters and event emitting update functions for\n https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\n _Available since v4.1._"},"fullyImplemented":true,"id":1745,"linearizedBaseContracts":[1745,1314],"name":"ERC1967Upgrade","nameLocation":"535:14:16","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":1454,"mutability":"constant","name":"_ROLLBACK_SLOT","nameLocation":"672:14:16","nodeType":"VariableDeclaration","scope":1745,"src":"647:108:16","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1452,"name":"bytes32","nodeType":"ElementaryTypeName","src":"647:7:16","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307834393130666466613136666564333236306564306537313437663763633664613131613630323038623562393430366431326136333536313466666439313433","id":1453,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"689:66:16","typeDescriptions":{"typeIdentifier":"t_rational_33048860383849004559742813297059419343339852917517107368639918720169455489347_by_1","typeString":"int_const 3304...(69 digits omitted)...9347"},"value":"0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143"},"visibility":"private"},{"constant":true,"documentation":{"id":1455,"nodeType":"StructuredDocumentation","src":"762:214:16","text":" @dev Storage slot with the address of the current implementation.\n This is the keccak-256 hash of \"eip1967.proxy.implementation\" subtracted by 1, and is\n validated in the constructor."},"id":1458,"mutability":"constant","name":"_IMPLEMENTATION_SLOT","nameLocation":"1007:20:16","nodeType":"VariableDeclaration","scope":1745,"src":"981:115:16","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1456,"name":"bytes32","nodeType":"ElementaryTypeName","src":"981:7:16","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307833363038393461313362613161333231303636376338323834393264623938646361336532303736636333373335613932306133636135303564333832626263","id":1457,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1030:66:16","typeDescriptions":{"typeIdentifier":"t_rational_24440054405305269366569402256811496959409073762505157381672968839269610695612_by_1","typeString":"int_const 2444...(69 digits omitted)...5612"},"value":"0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc"},"visibility":"internal"},{"body":{"id":1470,"nodeType":"Block","src":"1237:78:16","statements":[{"expression":{"expression":{"arguments":[{"id":1466,"name":"_IMPLEMENTATION_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1458,"src":"1281:20:16","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":1464,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2351,"src":"1254:11:16","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$2351_$","typeString":"type(library StorageSlot)"}},"id":1465,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1266:14:16","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":2273,"src":"1254:26:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$2247_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"}},"id":1467,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1254:48:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$2247_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"id":1468,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1303:5:16","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":2246,"src":"1254:54:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1463,"id":1469,"nodeType":"Return","src":"1247:61:16"}]},"documentation":{"id":1459,"nodeType":"StructuredDocumentation","src":"1103:67:16","text":" @dev Returns the current implementation address."},"id":1471,"implemented":true,"kind":"function","modifiers":[],"name":"_getImplementation","nameLocation":"1184:18:16","nodeType":"FunctionDefinition","parameters":{"id":1460,"nodeType":"ParameterList","parameters":[],"src":"1202:2:16"},"returnParameters":{"id":1463,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1462,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1471,"src":"1228:7:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1461,"name":"address","nodeType":"ElementaryTypeName","src":"1228:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1227:9:16"},"scope":1745,"src":"1175:140:16","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":1494,"nodeType":"Block","src":"1469:196:16","statements":[{"expression":{"arguments":[{"arguments":[{"id":1480,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1474,"src":"1506:17:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":1478,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2137,"src":"1487:7:16","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Address_$2137_$","typeString":"type(library Address)"}},"id":1479,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1495:10:16","memberName":"isContract","nodeType":"MemberAccess","referencedDeclaration":1825,"src":"1487:18:16","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":1481,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1487:37:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"455243313936373a206e657720696d706c656d656e746174696f6e206973206e6f74206120636f6e7472616374","id":1482,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1526:47:16","typeDescriptions":{"typeIdentifier":"t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65","typeString":"literal_string \"ERC1967: new implementation is not a contract\""},"value":"ERC1967: new implementation is not a contract"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65","typeString":"literal_string \"ERC1967: new implementation is not a contract\""}],"id":1477,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"1479:7:16","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1483,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1479:95:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1484,"nodeType":"ExpressionStatement","src":"1479:95:16"},{"expression":{"id":1492,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[{"id":1488,"name":"_IMPLEMENTATION_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1458,"src":"1611:20:16","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":1485,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2351,"src":"1584:11:16","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$2351_$","typeString":"type(library StorageSlot)"}},"id":1487,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1596:14:16","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":2273,"src":"1584:26:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$2247_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"}},"id":1489,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1584:48:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$2247_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"id":1490,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1633:5:16","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":2246,"src":"1584:54:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1491,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1474,"src":"1641:17:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1584:74:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1493,"nodeType":"ExpressionStatement","src":"1584:74:16"}]},"documentation":{"id":1472,"nodeType":"StructuredDocumentation","src":"1321:80:16","text":" @dev Stores a new address in the EIP1967 implementation slot."},"id":1495,"implemented":true,"kind":"function","modifiers":[],"name":"_setImplementation","nameLocation":"1415:18:16","nodeType":"FunctionDefinition","parameters":{"id":1475,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1474,"mutability":"mutable","name":"newImplementation","nameLocation":"1442:17:16","nodeType":"VariableDeclaration","scope":1495,"src":"1434:25:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1473,"name":"address","nodeType":"ElementaryTypeName","src":"1434:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1433:27:16"},"returnParameters":{"id":1476,"nodeType":"ParameterList","parameters":[],"src":"1469:0:16"},"scope":1745,"src":"1406:259:16","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":1509,"nodeType":"Block","src":"1827:96:16","statements":[{"expression":{"arguments":[{"id":1502,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1498,"src":"1856:17:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1501,"name":"_setImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1495,"src":"1837:18:16","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":1503,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1837:37:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1504,"nodeType":"ExpressionStatement","src":"1837:37:16"},{"eventCall":{"arguments":[{"id":1506,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1498,"src":"1898:17:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1505,"name":"Upgraded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1301,"src":"1889:8:16","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":1507,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1889:27:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1508,"nodeType":"EmitStatement","src":"1884:32:16"}]},"documentation":{"id":1496,"nodeType":"StructuredDocumentation","src":"1671:95:16","text":" @dev Perform implementation upgrade\n Emits an {Upgraded} event."},"id":1510,"implemented":true,"kind":"function","modifiers":[],"name":"_upgradeTo","nameLocation":"1780:10:16","nodeType":"FunctionDefinition","parameters":{"id":1499,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1498,"mutability":"mutable","name":"newImplementation","nameLocation":"1799:17:16","nodeType":"VariableDeclaration","scope":1510,"src":"1791:25:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1497,"name":"address","nodeType":"ElementaryTypeName","src":"1791:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1790:27:16"},"returnParameters":{"id":1500,"nodeType":"ParameterList","parameters":[],"src":"1827:0:16"},"scope":1745,"src":"1771:152:16","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1539,"nodeType":"Block","src":"2155:167:16","statements":[{"expression":{"arguments":[{"id":1521,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1513,"src":"2176:17:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1520,"name":"_upgradeTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1510,"src":"2165:10:16","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":1522,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2165:29:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1523,"nodeType":"ExpressionStatement","src":"2165:29:16"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1529,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1527,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1524,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1515,"src":"2208:4:16","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1525,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2213:6:16","memberName":"length","nodeType":"MemberAccess","src":"2208:11:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1526,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2222:1:16","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2208:15:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"id":1528,"name":"forceCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1517,"src":"2227:9:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2208:28:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1538,"nodeType":"IfStatement","src":"2204:112:16","trueBody":{"id":1537,"nodeType":"Block","src":"2238:78:16","statements":[{"expression":{"arguments":[{"id":1533,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1513,"src":"2281:17:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1534,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1515,"src":"2300:4:16","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":1530,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2137,"src":"2252:7:16","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Address_$2137_$","typeString":"type(library Address)"}},"id":1532,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2260:20:16","memberName":"functionDelegateCall","nodeType":"MemberAccess","referencedDeclaration":2024,"src":"2252:28:16","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory) returns (bytes memory)"}},"id":1535,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2252:53:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1536,"nodeType":"ExpressionStatement","src":"2252:53:16"}]}}]},"documentation":{"id":1511,"nodeType":"StructuredDocumentation","src":"1929:123:16","text":" @dev Perform implementation upgrade with additional setup call.\n Emits an {Upgraded} event."},"id":1540,"implemented":true,"kind":"function","modifiers":[],"name":"_upgradeToAndCall","nameLocation":"2066:17:16","nodeType":"FunctionDefinition","parameters":{"id":1518,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1513,"mutability":"mutable","name":"newImplementation","nameLocation":"2092:17:16","nodeType":"VariableDeclaration","scope":1540,"src":"2084:25:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1512,"name":"address","nodeType":"ElementaryTypeName","src":"2084:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1515,"mutability":"mutable","name":"data","nameLocation":"2124:4:16","nodeType":"VariableDeclaration","scope":1540,"src":"2111:17:16","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1514,"name":"bytes","nodeType":"ElementaryTypeName","src":"2111:5:16","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1517,"mutability":"mutable","name":"forceCall","nameLocation":"2135:9:16","nodeType":"VariableDeclaration","scope":1540,"src":"2130:14:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1516,"name":"bool","nodeType":"ElementaryTypeName","src":"2130:4:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2083:62:16"},"returnParameters":{"id":1519,"nodeType":"ParameterList","parameters":[],"src":"2155:0:16"},"scope":1745,"src":"2057:265:16","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1592,"nodeType":"Block","src":"2596:820:16","statements":[{"condition":{"expression":{"arguments":[{"id":1552,"name":"_ROLLBACK_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1454,"src":"2937:14:16","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":1550,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2351,"src":"2910:11:16","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$2351_$","typeString":"type(library StorageSlot)"}},"id":1551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2922:14:16","memberName":"getBooleanSlot","nodeType":"MemberAccess","referencedDeclaration":2284,"src":"2910:26:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_BooleanSlot_$2250_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.BooleanSlot storage pointer)"}},"id":1553,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2910:42:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_BooleanSlot_$2250_storage_ptr","typeString":"struct StorageSlot.BooleanSlot storage pointer"}},"id":1554,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2953:5:16","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":2249,"src":"2910:48:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1590,"nodeType":"Block","src":"3028:382:16","statements":[{"clauses":[{"block":{"id":1575,"nodeType":"Block","src":"3122:115:16","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":1571,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1569,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1566,"src":"3148:4:16","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":1570,"name":"_IMPLEMENTATION_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1458,"src":"3156:20:16","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"3148:28:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"45524331393637557067726164653a20756e737570706f727465642070726f786961626c6555554944","id":1572,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3178:43:16","typeDescriptions":{"typeIdentifier":"t_stringliteral_76b6b6debfc5febf101145a79ecf0b0d2e89e397dfdab2bca99888370411152c","typeString":"literal_string \"ERC1967Upgrade: unsupported proxiableUUID\""},"value":"ERC1967Upgrade: unsupported proxiableUUID"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_76b6b6debfc5febf101145a79ecf0b0d2e89e397dfdab2bca99888370411152c","typeString":"literal_string \"ERC1967Upgrade: unsupported proxiableUUID\""}],"id":1568,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"3140:7:16","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1573,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3140:82:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1574,"nodeType":"ExpressionStatement","src":"3140:82:16"}]},"errorName":"","id":1576,"nodeType":"TryCatchClause","parameters":{"id":1567,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1566,"mutability":"mutable","name":"slot","nameLocation":"3116:4:16","nodeType":"VariableDeclaration","scope":1576,"src":"3108:12:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1565,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3108:7:16","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3107:14:16"},"src":"3099:138:16"},{"block":{"id":1581,"nodeType":"Block","src":"3244:89:16","statements":[{"expression":{"arguments":[{"hexValue":"45524331393637557067726164653a206e657720696d706c656d656e746174696f6e206973206e6f742055555053","id":1578,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3269:48:16","typeDescriptions":{"typeIdentifier":"t_stringliteral_8e8e2fbcb586f700b5b14e2c4a650c8d83b9773c31c5fe8962070ea544e11f24","typeString":"literal_string \"ERC1967Upgrade: new implementation is not UUPS\""},"value":"ERC1967Upgrade: new implementation is not UUPS"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_8e8e2fbcb586f700b5b14e2c4a650c8d83b9773c31c5fe8962070ea544e11f24","typeString":"literal_string \"ERC1967Upgrade: new implementation is not UUPS\""}],"id":1577,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[4294967277,4294967277],"referencedDeclaration":4294967277,"src":"3262:6:16","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":1579,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3262:56:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1580,"nodeType":"ExpressionStatement","src":"3262:56:16"}]},"errorName":"","id":1582,"nodeType":"TryCatchClause","src":"3238:95:16"}],"externalCall":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":1561,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1543,"src":"3064:17:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1560,"name":"IERC1822Proxiable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1324,"src":"3046:17:16","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC1822Proxiable_$1324_$","typeString":"type(contract IERC1822Proxiable)"}},"id":1562,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3046:36:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC1822Proxiable_$1324","typeString":"contract IERC1822Proxiable"}},"id":1563,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3083:13:16","memberName":"proxiableUUID","nodeType":"MemberAccess","referencedDeclaration":1323,"src":"3046:50:16","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_bytes32_$","typeString":"function () view external returns (bytes32)"}},"id":1564,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3046:52:16","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":1583,"nodeType":"TryStatement","src":"3042:291:16"},{"expression":{"arguments":[{"id":1585,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1543,"src":"3364:17:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1586,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1545,"src":"3383:4:16","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":1587,"name":"forceCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1547,"src":"3389:9:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":1584,"name":"_upgradeToAndCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1540,"src":"3346:17:16","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_bool_$returns$__$","typeString":"function (address,bytes memory,bool)"}},"id":1588,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3346:53:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1589,"nodeType":"ExpressionStatement","src":"3346:53:16"}]},"id":1591,"nodeType":"IfStatement","src":"2906:504:16","trueBody":{"id":1559,"nodeType":"Block","src":"2960:62:16","statements":[{"expression":{"arguments":[{"id":1556,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1543,"src":"2993:17:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1555,"name":"_setImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1495,"src":"2974:18:16","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":1557,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2974:37:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1558,"nodeType":"ExpressionStatement","src":"2974:37:16"}]}}]},"documentation":{"id":1541,"nodeType":"StructuredDocumentation","src":"2328:161:16","text":" @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\n Emits an {Upgraded} event."},"id":1593,"implemented":true,"kind":"function","modifiers":[],"name":"_upgradeToAndCallUUPS","nameLocation":"2503:21:16","nodeType":"FunctionDefinition","parameters":{"id":1548,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1543,"mutability":"mutable","name":"newImplementation","nameLocation":"2533:17:16","nodeType":"VariableDeclaration","scope":1593,"src":"2525:25:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1542,"name":"address","nodeType":"ElementaryTypeName","src":"2525:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1545,"mutability":"mutable","name":"data","nameLocation":"2565:4:16","nodeType":"VariableDeclaration","scope":1593,"src":"2552:17:16","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1544,"name":"bytes","nodeType":"ElementaryTypeName","src":"2552:5:16","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1547,"mutability":"mutable","name":"forceCall","nameLocation":"2576:9:16","nodeType":"VariableDeclaration","scope":1593,"src":"2571:14:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1546,"name":"bool","nodeType":"ElementaryTypeName","src":"2571:4:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2524:62:16"},"returnParameters":{"id":1549,"nodeType":"ParameterList","parameters":[],"src":"2596:0:16"},"scope":1745,"src":"2494:922:16","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"constant":true,"documentation":{"id":1594,"nodeType":"StructuredDocumentation","src":"3422:189:16","text":" @dev Storage slot with the admin of the contract.\n This is the keccak-256 hash of \"eip1967.proxy.admin\" subtracted by 1, and is\n validated in the constructor."},"id":1597,"mutability":"constant","name":"_ADMIN_SLOT","nameLocation":"3642:11:16","nodeType":"VariableDeclaration","scope":1745,"src":"3616:106:16","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1595,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3616:7:16","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307862353331323736383461353638623331373361653133623966386136303136653234336536336236653865653131373864366137313738353062356436313033","id":1596,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3656:66:16","typeDescriptions":{"typeIdentifier":"t_rational_81955473079516046949633743016697847541294818689821282749996681496272635257091_by_1","typeString":"int_const 8195...(69 digits omitted)...7091"},"value":"0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103"},"visibility":"internal"},{"body":{"id":1609,"nodeType":"Block","src":"3837:69:16","statements":[{"expression":{"expression":{"arguments":[{"id":1605,"name":"_ADMIN_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1597,"src":"3881:11:16","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":1603,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2351,"src":"3854:11:16","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$2351_$","typeString":"type(library StorageSlot)"}},"id":1604,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3866:14:16","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":2273,"src":"3854:26:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$2247_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"}},"id":1606,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3854:39:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$2247_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"id":1607,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3894:5:16","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":2246,"src":"3854:45:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1602,"id":1608,"nodeType":"Return","src":"3847:52:16"}]},"documentation":{"id":1598,"nodeType":"StructuredDocumentation","src":"3729:50:16","text":" @dev Returns the current admin."},"id":1610,"implemented":true,"kind":"function","modifiers":[],"name":"_getAdmin","nameLocation":"3793:9:16","nodeType":"FunctionDefinition","parameters":{"id":1599,"nodeType":"ParameterList","parameters":[],"src":"3802:2:16"},"returnParameters":{"id":1602,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1601,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1610,"src":"3828:7:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1600,"name":"address","nodeType":"ElementaryTypeName","src":"3828:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3827:9:16"},"scope":1745,"src":"3784:122:16","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":1635,"nodeType":"Block","src":"4033:156:16","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1622,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1617,"name":"newAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1613,"src":"4051:8:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":1620,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4071:1:16","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1619,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4063:7:16","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1618,"name":"address","nodeType":"ElementaryTypeName","src":"4063:7:16","typeDescriptions":{}}},"id":1621,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4063:10:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4051:22:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"455243313936373a206e65772061646d696e20697320746865207a65726f2061646472657373","id":1623,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4075:40:16","typeDescriptions":{"typeIdentifier":"t_stringliteral_3820e16891102c1360a787e6e648431097d92537f969d458f5c94b56f8318be5","typeString":"literal_string \"ERC1967: new admin is the zero address\""},"value":"ERC1967: new admin is the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_3820e16891102c1360a787e6e648431097d92537f969d458f5c94b56f8318be5","typeString":"literal_string \"ERC1967: new admin is the zero address\""}],"id":1616,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"4043:7:16","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1624,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4043:73:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1625,"nodeType":"ExpressionStatement","src":"4043:73:16"},{"expression":{"id":1633,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[{"id":1629,"name":"_ADMIN_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1597,"src":"4153:11:16","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":1626,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2351,"src":"4126:11:16","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$2351_$","typeString":"type(library StorageSlot)"}},"id":1628,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4138:14:16","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":2273,"src":"4126:26:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$2247_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"}},"id":1630,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4126:39:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$2247_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"id":1631,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4166:5:16","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":2246,"src":"4126:45:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1632,"name":"newAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1613,"src":"4174:8:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4126:56:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1634,"nodeType":"ExpressionStatement","src":"4126:56:16"}]},"documentation":{"id":1611,"nodeType":"StructuredDocumentation","src":"3912:71:16","text":" @dev Stores a new address in the EIP1967 admin slot."},"id":1636,"implemented":true,"kind":"function","modifiers":[],"name":"_setAdmin","nameLocation":"3997:9:16","nodeType":"FunctionDefinition","parameters":{"id":1614,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1613,"mutability":"mutable","name":"newAdmin","nameLocation":"4015:8:16","nodeType":"VariableDeclaration","scope":1636,"src":"4007:16:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1612,"name":"address","nodeType":"ElementaryTypeName","src":"4007:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4006:18:16"},"returnParameters":{"id":1615,"nodeType":"ParameterList","parameters":[],"src":"4033:0:16"},"scope":1745,"src":"3988:201:16","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":1652,"nodeType":"Block","src":"4349:86:16","statements":[{"eventCall":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":1643,"name":"_getAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1610,"src":"4377:9:16","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1644,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4377:11:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1645,"name":"newAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1639,"src":"4390:8:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1642,"name":"AdminChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1308,"src":"4364:12:16","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":1646,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4364:35:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1647,"nodeType":"EmitStatement","src":"4359:40:16"},{"expression":{"arguments":[{"id":1649,"name":"newAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1639,"src":"4419:8:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1648,"name":"_setAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1636,"src":"4409:9:16","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":1650,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4409:19:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1651,"nodeType":"ExpressionStatement","src":"4409:19:16"}]},"documentation":{"id":1637,"nodeType":"StructuredDocumentation","src":"4195:100:16","text":" @dev Changes the admin of the proxy.\n Emits an {AdminChanged} event."},"id":1653,"implemented":true,"kind":"function","modifiers":[],"name":"_changeAdmin","nameLocation":"4309:12:16","nodeType":"FunctionDefinition","parameters":{"id":1640,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1639,"mutability":"mutable","name":"newAdmin","nameLocation":"4330:8:16","nodeType":"VariableDeclaration","scope":1653,"src":"4322:16:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1638,"name":"address","nodeType":"ElementaryTypeName","src":"4322:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4321:18:16"},"returnParameters":{"id":1641,"nodeType":"ParameterList","parameters":[],"src":"4349:0:16"},"scope":1745,"src":"4300:135:16","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"constant":true,"documentation":{"id":1654,"nodeType":"StructuredDocumentation","src":"4441:232:16","text":" @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\n This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor."},"id":1657,"mutability":"constant","name":"_BEACON_SLOT","nameLocation":"4704:12:16","nodeType":"VariableDeclaration","scope":1745,"src":"4678:107:16","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1655,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4678:7:16","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307861336630616437346535343233616562666438306433656634333436353738333335613961373261656165653539666636636233353832623335313333643530","id":1656,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4719:66:16","typeDescriptions":{"typeIdentifier":"t_rational_74152234768234802001998023604048924213078445070507226371336425913862612794704_by_1","typeString":"int_const 7415...(69 digits omitted)...4704"},"value":"0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50"},"visibility":"internal"},{"body":{"id":1669,"nodeType":"Block","src":"4902:70:16","statements":[{"expression":{"expression":{"arguments":[{"id":1665,"name":"_BEACON_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1657,"src":"4946:12:16","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":1663,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2351,"src":"4919:11:16","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$2351_$","typeString":"type(library StorageSlot)"}},"id":1664,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4931:14:16","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":2273,"src":"4919:26:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$2247_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"}},"id":1666,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4919:40:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$2247_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"id":1667,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4960:5:16","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":2246,"src":"4919:46:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1662,"id":1668,"nodeType":"Return","src":"4912:53:16"}]},"documentation":{"id":1658,"nodeType":"StructuredDocumentation","src":"4792:51:16","text":" @dev Returns the current beacon."},"id":1670,"implemented":true,"kind":"function","modifiers":[],"name":"_getBeacon","nameLocation":"4857:10:16","nodeType":"FunctionDefinition","parameters":{"id":1659,"nodeType":"ParameterList","parameters":[],"src":"4867:2:16"},"returnParameters":{"id":1662,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1661,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1670,"src":"4893:7:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1660,"name":"address","nodeType":"ElementaryTypeName","src":"4893:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4892:9:16"},"scope":1745,"src":"4848:124:16","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":1705,"nodeType":"Block","src":"5101:324:16","statements":[{"expression":{"arguments":[{"arguments":[{"id":1679,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1673,"src":"5138:9:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":1677,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2137,"src":"5119:7:16","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Address_$2137_$","typeString":"type(library Address)"}},"id":1678,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5127:10:16","memberName":"isContract","nodeType":"MemberAccess","referencedDeclaration":1825,"src":"5119:18:16","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":1680,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5119:29:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"455243313936373a206e657720626561636f6e206973206e6f74206120636f6e7472616374","id":1681,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5150:39:16","typeDescriptions":{"typeIdentifier":"t_stringliteral_9589b7809634e4928033de18bb696e9af4ef71b703652af5245f2dbebf2f4470","typeString":"literal_string \"ERC1967: new beacon is not a contract\""},"value":"ERC1967: new beacon is not a contract"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9589b7809634e4928033de18bb696e9af4ef71b703652af5245f2dbebf2f4470","typeString":"literal_string \"ERC1967: new beacon is not a contract\""}],"id":1676,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"5111:7:16","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1682,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5111:79:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1683,"nodeType":"ExpressionStatement","src":"5111:79:16"},{"expression":{"arguments":[{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":1688,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1673,"src":"5248:9:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1687,"name":"IBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1807,"src":"5240:7:16","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBeacon_$1807_$","typeString":"type(contract IBeacon)"}},"id":1689,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5240:18:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBeacon_$1807","typeString":"contract IBeacon"}},"id":1690,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5259:14:16","memberName":"implementation","nodeType":"MemberAccess","referencedDeclaration":1806,"src":"5240:33:16","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":1691,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5240:35:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":1685,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2137,"src":"5221:7:16","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Address_$2137_$","typeString":"type(library Address)"}},"id":1686,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5229:10:16","memberName":"isContract","nodeType":"MemberAccess","referencedDeclaration":1825,"src":"5221:18:16","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":1692,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5221:55:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"455243313936373a20626561636f6e20696d706c656d656e746174696f6e206973206e6f74206120636f6e7472616374","id":1693,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5290:50:16","typeDescriptions":{"typeIdentifier":"t_stringliteral_f95fd1f5b5578816eb23f6ca0f2439b4b5e4094dc16e99c3b8e91603a83f93c8","typeString":"literal_string \"ERC1967: beacon implementation is not a contract\""},"value":"ERC1967: beacon implementation is not a contract"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_f95fd1f5b5578816eb23f6ca0f2439b4b5e4094dc16e99c3b8e91603a83f93c8","typeString":"literal_string \"ERC1967: beacon implementation is not a contract\""}],"id":1684,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"5200:7:16","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1694,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5200:150:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1695,"nodeType":"ExpressionStatement","src":"5200:150:16"},{"expression":{"id":1703,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[{"id":1699,"name":"_BEACON_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1657,"src":"5387:12:16","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":1696,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2351,"src":"5360:11:16","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$2351_$","typeString":"type(library StorageSlot)"}},"id":1698,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5372:14:16","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":2273,"src":"5360:26:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$2247_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"}},"id":1700,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5360:40:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$2247_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"id":1701,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5401:5:16","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":2246,"src":"5360:46:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1702,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1673,"src":"5409:9:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5360:58:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1704,"nodeType":"ExpressionStatement","src":"5360:58:16"}]},"documentation":{"id":1671,"nodeType":"StructuredDocumentation","src":"4978:71:16","text":" @dev Stores a new beacon in the EIP1967 beacon slot."},"id":1706,"implemented":true,"kind":"function","modifiers":[],"name":"_setBeacon","nameLocation":"5063:10:16","nodeType":"FunctionDefinition","parameters":{"id":1674,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1673,"mutability":"mutable","name":"newBeacon","nameLocation":"5082:9:16","nodeType":"VariableDeclaration","scope":1706,"src":"5074:17:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1672,"name":"address","nodeType":"ElementaryTypeName","src":"5074:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5073:19:16"},"returnParameters":{"id":1675,"nodeType":"ParameterList","parameters":[],"src":"5101:0:16"},"scope":1745,"src":"5054:371:16","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":1743,"nodeType":"Block","src":"5824:217:16","statements":[{"expression":{"arguments":[{"id":1717,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1709,"src":"5845:9:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1716,"name":"_setBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1706,"src":"5834:10:16","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":1718,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5834:21:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1719,"nodeType":"ExpressionStatement","src":"5834:21:16"},{"eventCall":{"arguments":[{"id":1721,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1709,"src":"5885:9:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1720,"name":"BeaconUpgraded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1313,"src":"5870:14:16","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":1722,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5870:25:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1723,"nodeType":"EmitStatement","src":"5865:30:16"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1729,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1727,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1724,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1711,"src":"5909:4:16","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1725,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5914:6:16","memberName":"length","nodeType":"MemberAccess","src":"5909:11:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1726,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5923:1:16","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5909:15:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"id":1728,"name":"forceCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1713,"src":"5928:9:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"5909:28:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1742,"nodeType":"IfStatement","src":"5905:130:16","trueBody":{"id":1741,"nodeType":"Block","src":"5939:96:16","statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":1734,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1709,"src":"5990:9:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1733,"name":"IBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1807,"src":"5982:7:16","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBeacon_$1807_$","typeString":"type(contract IBeacon)"}},"id":1735,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5982:18:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBeacon_$1807","typeString":"contract IBeacon"}},"id":1736,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6001:14:16","memberName":"implementation","nodeType":"MemberAccess","referencedDeclaration":1806,"src":"5982:33:16","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":1737,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5982:35:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1738,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1711,"src":"6019:4:16","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":1730,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2137,"src":"5953:7:16","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Address_$2137_$","typeString":"type(library Address)"}},"id":1732,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5961:20:16","memberName":"functionDelegateCall","nodeType":"MemberAccess","referencedDeclaration":2024,"src":"5953:28:16","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory) returns (bytes memory)"}},"id":1739,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5953:71:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1740,"nodeType":"ExpressionStatement","src":"5953:71:16"}]}}]},"documentation":{"id":1707,"nodeType":"StructuredDocumentation","src":"5431:292:16","text":" @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\n not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\n Emits a {BeaconUpgraded} event."},"id":1744,"implemented":true,"kind":"function","modifiers":[],"name":"_upgradeBeaconToAndCall","nameLocation":"5737:23:16","nodeType":"FunctionDefinition","parameters":{"id":1714,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1709,"mutability":"mutable","name":"newBeacon","nameLocation":"5769:9:16","nodeType":"VariableDeclaration","scope":1744,"src":"5761:17:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1708,"name":"address","nodeType":"ElementaryTypeName","src":"5761:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1711,"mutability":"mutable","name":"data","nameLocation":"5793:4:16","nodeType":"VariableDeclaration","scope":1744,"src":"5780:17:16","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1710,"name":"bytes","nodeType":"ElementaryTypeName","src":"5780:5:16","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1713,"mutability":"mutable","name":"forceCall","nameLocation":"5804:9:16","nodeType":"VariableDeclaration","scope":1744,"src":"5799:14:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1712,"name":"bool","nodeType":"ElementaryTypeName","src":"5799:4:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5760:54:16"},"returnParameters":{"id":1715,"nodeType":"ParameterList","parameters":[],"src":"5824:0:16"},"scope":1745,"src":"5728:313:16","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":1746,"src":"517:5526:16","usedErrors":[]}],"src":"116:5928:16"},"id":16},"@openzeppelin/contracts/proxy/Proxy.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/proxy/Proxy.sol","exportedSymbols":{"Proxy":[1797]},"id":1798,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1747,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"99:23:17"},{"abstract":true,"baseContracts":[],"canonicalName":"Proxy","contractDependencies":[],"contractKind":"contract","documentation":{"id":1748,"nodeType":"StructuredDocumentation","src":"124:598:17","text":" @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\n instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\n be specified by overriding the virtual {_implementation} function.\n Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\n different contract through the {_delegate} function.\n The success and return data of the delegated call will be returned back to the caller of the proxy."},"fullyImplemented":false,"id":1797,"linearizedBaseContracts":[1797],"name":"Proxy","nameLocation":"741:5:17","nodeType":"ContractDefinition","nodes":[{"body":{"id":1755,"nodeType":"Block","src":"1008:835:17","statements":[{"AST":{"nodeType":"YulBlock","src":"1027:810:17","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1280:1:17","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1283:1:17","type":"","value":"0"},{"arguments":[],"functionName":{"name":"calldatasize","nodeType":"YulIdentifier","src":"1286:12:17"},"nodeType":"YulFunctionCall","src":"1286:14:17"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"1267:12:17"},"nodeType":"YulFunctionCall","src":"1267:34:17"},"nodeType":"YulExpressionStatement","src":"1267:34:17"},{"nodeType":"YulVariableDeclaration","src":"1428:74:17","value":{"arguments":[{"arguments":[],"functionName":{"name":"gas","nodeType":"YulIdentifier","src":"1455:3:17"},"nodeType":"YulFunctionCall","src":"1455:5:17"},{"name":"implementation","nodeType":"YulIdentifier","src":"1462:14:17"},{"kind":"number","nodeType":"YulLiteral","src":"1478:1:17","type":"","value":"0"},{"arguments":[],"functionName":{"name":"calldatasize","nodeType":"YulIdentifier","src":"1481:12:17"},"nodeType":"YulFunctionCall","src":"1481:14:17"},{"kind":"number","nodeType":"YulLiteral","src":"1497:1:17","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1500:1:17","type":"","value":"0"}],"functionName":{"name":"delegatecall","nodeType":"YulIdentifier","src":"1442:12:17"},"nodeType":"YulFunctionCall","src":"1442:60:17"},"variables":[{"name":"result","nodeType":"YulTypedName","src":"1432:6:17","type":""}]},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1570:1:17","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1573:1:17","type":"","value":"0"},{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"1576:14:17"},"nodeType":"YulFunctionCall","src":"1576:16:17"}],"functionName":{"name":"returndatacopy","nodeType":"YulIdentifier","src":"1555:14:17"},"nodeType":"YulFunctionCall","src":"1555:38:17"},"nodeType":"YulExpressionStatement","src":"1555:38:17"},{"cases":[{"body":{"nodeType":"YulBlock","src":"1688:59:17","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1713:1:17","type":"","value":"0"},{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"1716:14:17"},"nodeType":"YulFunctionCall","src":"1716:16:17"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1706:6:17"},"nodeType":"YulFunctionCall","src":"1706:27:17"},"nodeType":"YulExpressionStatement","src":"1706:27:17"}]},"nodeType":"YulCase","src":"1681:66:17","value":{"kind":"number","nodeType":"YulLiteral","src":"1686:1:17","type":"","value":"0"}},{"body":{"nodeType":"YulBlock","src":"1768:59:17","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1793:1:17","type":"","value":"0"},{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"1796:14:17"},"nodeType":"YulFunctionCall","src":"1796:16:17"}],"functionName":{"name":"return","nodeType":"YulIdentifier","src":"1786:6:17"},"nodeType":"YulFunctionCall","src":"1786:27:17"},"nodeType":"YulExpressionStatement","src":"1786:27:17"}]},"nodeType":"YulCase","src":"1760:67:17","value":"default"}],"expression":{"name":"result","nodeType":"YulIdentifier","src":"1614:6:17"},"nodeType":"YulSwitch","src":"1607:220:17"}]},"evmVersion":"london","externalReferences":[{"declaration":1751,"isOffset":false,"isSlot":false,"src":"1462:14:17","valueSize":1}],"id":1754,"nodeType":"InlineAssembly","src":"1018:819:17"}]},"documentation":{"id":1749,"nodeType":"StructuredDocumentation","src":"753:190:17","text":" @dev Delegates the current call to `implementation`.\n This function does not return to its internal call site, it will return directly to the external caller."},"id":1756,"implemented":true,"kind":"function","modifiers":[],"name":"_delegate","nameLocation":"957:9:17","nodeType":"FunctionDefinition","parameters":{"id":1752,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1751,"mutability":"mutable","name":"implementation","nameLocation":"975:14:17","nodeType":"VariableDeclaration","scope":1756,"src":"967:22:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1750,"name":"address","nodeType":"ElementaryTypeName","src":"967:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"966:24:17"},"returnParameters":{"id":1753,"nodeType":"ParameterList","parameters":[],"src":"1008:0:17"},"scope":1797,"src":"948:895:17","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"documentation":{"id":1757,"nodeType":"StructuredDocumentation","src":"1849:173:17","text":" @dev This is a virtual function that should be overridden so it returns the address to which the fallback function\n and {_fallback} should delegate."},"id":1762,"implemented":false,"kind":"function","modifiers":[],"name":"_implementation","nameLocation":"2036:15:17","nodeType":"FunctionDefinition","parameters":{"id":1758,"nodeType":"ParameterList","parameters":[],"src":"2051:2:17"},"returnParameters":{"id":1761,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1760,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1762,"src":"2085:7:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1759,"name":"address","nodeType":"ElementaryTypeName","src":"2085:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2084:9:17"},"scope":1797,"src":"2027:67:17","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":1774,"nodeType":"Block","src":"2360:72:17","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":1766,"name":"_beforeFallback","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1796,"src":"2370:15:17","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":1767,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2370:17:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1768,"nodeType":"ExpressionStatement","src":"2370:17:17"},{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":1770,"name":"_implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1762,"src":"2407:15:17","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1771,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2407:17:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1769,"name":"_delegate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1756,"src":"2397:9:17","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":1772,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2397:28:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1773,"nodeType":"ExpressionStatement","src":"2397:28:17"}]},"documentation":{"id":1763,"nodeType":"StructuredDocumentation","src":"2100:217:17","text":" @dev Delegates the current call to the address returned by `_implementation()`.\n This function does not return to its internal call site, it will return directly to the external caller."},"id":1775,"implemented":true,"kind":"function","modifiers":[],"name":"_fallback","nameLocation":"2331:9:17","nodeType":"FunctionDefinition","parameters":{"id":1764,"nodeType":"ParameterList","parameters":[],"src":"2340:2:17"},"returnParameters":{"id":1765,"nodeType":"ParameterList","parameters":[],"src":"2360:0:17"},"scope":1797,"src":"2322:110:17","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":1782,"nodeType":"Block","src":"2665:28:17","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":1779,"name":"_fallback","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1775,"src":"2675:9:17","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":1780,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2675:11:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1781,"nodeType":"ExpressionStatement","src":"2675:11:17"}]},"documentation":{"id":1776,"nodeType":"StructuredDocumentation","src":"2438:186:17","text":" @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\n function in the contract matches the call data."},"id":1783,"implemented":true,"kind":"fallback","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":1777,"nodeType":"ParameterList","parameters":[],"src":"2637:2:17"},"returnParameters":{"id":1778,"nodeType":"ParameterList","parameters":[],"src":"2665:0:17"},"scope":1797,"src":"2629:64:17","stateMutability":"payable","virtual":true,"visibility":"external"},{"body":{"id":1790,"nodeType":"Block","src":"2888:28:17","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":1787,"name":"_fallback","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1775,"src":"2898:9:17","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":1788,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2898:11:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1789,"nodeType":"ExpressionStatement","src":"2898:11:17"}]},"documentation":{"id":1784,"nodeType":"StructuredDocumentation","src":"2699:149:17","text":" @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data\n is empty."},"id":1791,"implemented":true,"kind":"receive","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":1785,"nodeType":"ParameterList","parameters":[],"src":"2860:2:17"},"returnParameters":{"id":1786,"nodeType":"ParameterList","parameters":[],"src":"2888:0:17"},"scope":1797,"src":"2853:63:17","stateMutability":"payable","virtual":true,"visibility":"external"},{"body":{"id":1795,"nodeType":"Block","src":"3242:2:17","statements":[]},"documentation":{"id":1792,"nodeType":"StructuredDocumentation","src":"2922:271:17","text":" @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`\n call, or as part of the Solidity `fallback` or `receive` functions.\n If overridden should call `super._beforeFallback()`."},"id":1796,"implemented":true,"kind":"function","modifiers":[],"name":"_beforeFallback","nameLocation":"3207:15:17","nodeType":"FunctionDefinition","parameters":{"id":1793,"nodeType":"ParameterList","parameters":[],"src":"3222:2:17"},"returnParameters":{"id":1794,"nodeType":"ParameterList","parameters":[],"src":"3242:0:17"},"scope":1797,"src":"3198:46:17","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":1798,"src":"723:2523:17","usedErrors":[]}],"src":"99:3148:17"},"id":17},"@openzeppelin/contracts/proxy/beacon/IBeacon.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/proxy/beacon/IBeacon.sol","exportedSymbols":{"IBeacon":[1807]},"id":1808,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1799,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"93:23:18"},{"abstract":false,"baseContracts":[],"canonicalName":"IBeacon","contractDependencies":[],"contractKind":"interface","documentation":{"id":1800,"nodeType":"StructuredDocumentation","src":"118:79:18","text":" @dev This is the interface that {BeaconProxy} expects of its beacon."},"fullyImplemented":false,"id":1807,"linearizedBaseContracts":[1807],"name":"IBeacon","nameLocation":"208:7:18","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":1801,"nodeType":"StructuredDocumentation","src":"222:162:18","text":" @dev Must return an address that can be used as a delegate call target.\n {BeaconProxy} will check that this address is a contract."},"functionSelector":"5c60da1b","id":1806,"implemented":false,"kind":"function","modifiers":[],"name":"implementation","nameLocation":"398:14:18","nodeType":"FunctionDefinition","parameters":{"id":1802,"nodeType":"ParameterList","parameters":[],"src":"412:2:18"},"returnParameters":{"id":1805,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1804,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1806,"src":"438:7:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1803,"name":"address","nodeType":"ElementaryTypeName","src":"438:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"437:9:18"},"scope":1807,"src":"389:58:18","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":1808,"src":"198:251:18","usedErrors":[]}],"src":"93:357:18"},"id":18},"@openzeppelin/contracts/utils/Address.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/Address.sol","exportedSymbols":{"Address":[2137]},"id":2138,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1809,"literals":["solidity","^","0.8",".1"],"nodeType":"PragmaDirective","src":"101:23:19"},{"abstract":false,"baseContracts":[],"canonicalName":"Address","contractDependencies":[],"contractKind":"library","documentation":{"id":1810,"nodeType":"StructuredDocumentation","src":"126:67:19","text":" @dev Collection of functions related to the address type"},"fullyImplemented":true,"id":2137,"linearizedBaseContracts":[2137],"name":"Address","nameLocation":"202:7:19","nodeType":"ContractDefinition","nodes":[{"body":{"id":1824,"nodeType":"Block","src":"1478:254:19","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1822,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":1818,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1813,"src":"1702:7:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1819,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1710:4:19","memberName":"code","nodeType":"MemberAccess","src":"1702:12:19","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1820,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1715:6:19","memberName":"length","nodeType":"MemberAccess","src":"1702:19:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1821,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1724:1:19","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1702:23:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1817,"id":1823,"nodeType":"Return","src":"1695:30:19"}]},"documentation":{"id":1811,"nodeType":"StructuredDocumentation","src":"216:1191:19","text":" @dev Returns true if `account` is a contract.\n [IMPORTANT]\n ====\n It is unsafe to assume that an address for which this function returns\n false is an externally-owned account (EOA) and not a contract.\n Among others, `isContract` will return false for the following\n types of addresses:\n - an externally-owned account\n - a contract in construction\n - an address where a contract will be created\n - an address where a contract lived, but was destroyed\n Furthermore, `isContract` will also return true if the target contract within\n the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\n which only has an effect at the end of a transaction.\n ====\n [IMPORTANT]\n ====\n You shouldn't rely on `isContract` to protect against flash loan attacks!\n Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\n like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\n constructor.\n ===="},"id":1825,"implemented":true,"kind":"function","modifiers":[],"name":"isContract","nameLocation":"1421:10:19","nodeType":"FunctionDefinition","parameters":{"id":1814,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1813,"mutability":"mutable","name":"account","nameLocation":"1440:7:19","nodeType":"VariableDeclaration","scope":1825,"src":"1432:15:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1812,"name":"address","nodeType":"ElementaryTypeName","src":"1432:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1431:17:19"},"returnParameters":{"id":1817,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1816,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1825,"src":"1472:4:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1815,"name":"bool","nodeType":"ElementaryTypeName","src":"1472:4:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1471:6:19"},"scope":2137,"src":"1412:320:19","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":1858,"nodeType":"Block","src":"2718:241:19","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1840,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":1836,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967268,"src":"2744:4:19","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$2137","typeString":"library Address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Address_$2137","typeString":"library Address"}],"id":1835,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2736:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1834,"name":"address","nodeType":"ElementaryTypeName","src":"2736:7:19","typeDescriptions":{}}},"id":1837,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2736:13:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1838,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2750:7:19","memberName":"balance","nodeType":"MemberAccess","src":"2736:21:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":1839,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1830,"src":"2761:6:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2736:31:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20696e73756666696369656e742062616c616e6365","id":1841,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2769:31:19","typeDescriptions":{"typeIdentifier":"t_stringliteral_5597a22abd0ef5332f8053862eb236db7590f17e2b93a53f63a103becfb561f9","typeString":"literal_string \"Address: insufficient balance\""},"value":"Address: insufficient balance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5597a22abd0ef5332f8053862eb236db7590f17e2b93a53f63a103becfb561f9","typeString":"literal_string \"Address: insufficient balance\""}],"id":1833,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"2728:7:19","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1842,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2728:73:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1843,"nodeType":"ExpressionStatement","src":"2728:73:19"},{"assignments":[1845,null],"declarations":[{"constant":false,"id":1845,"mutability":"mutable","name":"success","nameLocation":"2818:7:19","nodeType":"VariableDeclaration","scope":1858,"src":"2813:12:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1844,"name":"bool","nodeType":"ElementaryTypeName","src":"2813:4:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":1852,"initialValue":{"arguments":[{"hexValue":"","id":1850,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2861:2:19","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"id":1846,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1828,"src":"2831:9:19","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":1847,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2841:4:19","memberName":"call","nodeType":"MemberAccess","src":"2831:14:19","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":1849,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":1848,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1830,"src":"2853:6:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"2831:29:19","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":1851,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2831:33:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"2812:52:19"},{"expression":{"arguments":[{"id":1854,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1845,"src":"2882:7:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d61792068617665207265766572746564","id":1855,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2891:60:19","typeDescriptions":{"typeIdentifier":"t_stringliteral_51ddaa38748c0a1144620fb5bfe8edab31ea437571ad591a7734bbfd0429aeae","typeString":"literal_string \"Address: unable to send value, recipient may have reverted\""},"value":"Address: unable to send value, recipient may have reverted"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_51ddaa38748c0a1144620fb5bfe8edab31ea437571ad591a7734bbfd0429aeae","typeString":"literal_string \"Address: unable to send value, recipient may have reverted\""}],"id":1853,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"2874:7:19","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1856,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2874:78:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1857,"nodeType":"ExpressionStatement","src":"2874:78:19"}]},"documentation":{"id":1826,"nodeType":"StructuredDocumentation","src":"1738:904:19","text":" @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n `recipient`, forwarding all available gas and reverting on errors.\n https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n of certain opcodes, possibly making contracts go over the 2300 gas limit\n imposed by `transfer`, making them unable to receive funds via\n `transfer`. {sendValue} removes this limitation.\n https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n IMPORTANT: because control is transferred to `recipient`, care must be\n taken to not create reentrancy vulnerabilities. Consider using\n {ReentrancyGuard} or the\n https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]."},"id":1859,"implemented":true,"kind":"function","modifiers":[],"name":"sendValue","nameLocation":"2656:9:19","nodeType":"FunctionDefinition","parameters":{"id":1831,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1828,"mutability":"mutable","name":"recipient","nameLocation":"2682:9:19","nodeType":"VariableDeclaration","scope":1859,"src":"2666:25:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":1827,"name":"address","nodeType":"ElementaryTypeName","src":"2666:15:19","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"},{"constant":false,"id":1830,"mutability":"mutable","name":"amount","nameLocation":"2701:6:19","nodeType":"VariableDeclaration","scope":1859,"src":"2693:14:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1829,"name":"uint256","nodeType":"ElementaryTypeName","src":"2693:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2665:43:19"},"returnParameters":{"id":1832,"nodeType":"ParameterList","parameters":[],"src":"2718:0:19"},"scope":2137,"src":"2647:312:19","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1876,"nodeType":"Block","src":"3790:96:19","statements":[{"expression":{"arguments":[{"id":1870,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1862,"src":"3829:6:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1871,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1864,"src":"3837:4:19","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"30","id":1872,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3843:1:19","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"416464726573733a206c6f772d6c6576656c2063616c6c206661696c6564","id":1873,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3846:32:19","typeDescriptions":{"typeIdentifier":"t_stringliteral_24d7ab5d382116e64324f19950ca9340b8af1ddeb09a8d026e0a3c6a01dcc9df","typeString":"literal_string \"Address: low-level call failed\""},"value":"Address: low-level call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_stringliteral_24d7ab5d382116e64324f19950ca9340b8af1ddeb09a8d026e0a3c6a01dcc9df","typeString":"literal_string \"Address: low-level call failed\""}],"id":1869,"name":"functionCallWithValue","nodeType":"Identifier","overloadedDeclarations":[1917,1961],"referencedDeclaration":1961,"src":"3807:21:19","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,uint256,string memory) returns (bytes memory)"}},"id":1874,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3807:72:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":1868,"id":1875,"nodeType":"Return","src":"3800:79:19"}]},"documentation":{"id":1860,"nodeType":"StructuredDocumentation","src":"2965:731:19","text":" @dev Performs a Solidity function call using a low level `call`. A\n plain `call` is an unsafe replacement for a function call: use this\n function instead.\n If `target` reverts with a revert reason, it is bubbled up by this\n function (like regular Solidity function calls).\n Returns the raw returned data. To convert to the expected return value,\n use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n Requirements:\n - `target` must be a contract.\n - calling `target` with `data` must not revert.\n _Available since v3.1._"},"id":1877,"implemented":true,"kind":"function","modifiers":[],"name":"functionCall","nameLocation":"3710:12:19","nodeType":"FunctionDefinition","parameters":{"id":1865,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1862,"mutability":"mutable","name":"target","nameLocation":"3731:6:19","nodeType":"VariableDeclaration","scope":1877,"src":"3723:14:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1861,"name":"address","nodeType":"ElementaryTypeName","src":"3723:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1864,"mutability":"mutable","name":"data","nameLocation":"3752:4:19","nodeType":"VariableDeclaration","scope":1877,"src":"3739:17:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1863,"name":"bytes","nodeType":"ElementaryTypeName","src":"3739:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3722:35:19"},"returnParameters":{"id":1868,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1867,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1877,"src":"3776:12:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1866,"name":"bytes","nodeType":"ElementaryTypeName","src":"3776:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3775:14:19"},"scope":2137,"src":"3701:185:19","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1896,"nodeType":"Block","src":"4255:76:19","statements":[{"expression":{"arguments":[{"id":1890,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1880,"src":"4294:6:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1891,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1882,"src":"4302:4:19","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"30","id":1892,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4308:1:19","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":1893,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1884,"src":"4311:12:19","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1889,"name":"functionCallWithValue","nodeType":"Identifier","overloadedDeclarations":[1917,1961],"referencedDeclaration":1961,"src":"4272:21:19","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,uint256,string memory) returns (bytes memory)"}},"id":1894,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4272:52:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":1888,"id":1895,"nodeType":"Return","src":"4265:59:19"}]},"documentation":{"id":1878,"nodeType":"StructuredDocumentation","src":"3892:211:19","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n `errorMessage` as a fallback revert reason when `target` reverts.\n _Available since v3.1._"},"id":1897,"implemented":true,"kind":"function","modifiers":[],"name":"functionCall","nameLocation":"4117:12:19","nodeType":"FunctionDefinition","parameters":{"id":1885,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1880,"mutability":"mutable","name":"target","nameLocation":"4147:6:19","nodeType":"VariableDeclaration","scope":1897,"src":"4139:14:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1879,"name":"address","nodeType":"ElementaryTypeName","src":"4139:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1882,"mutability":"mutable","name":"data","nameLocation":"4176:4:19","nodeType":"VariableDeclaration","scope":1897,"src":"4163:17:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1881,"name":"bytes","nodeType":"ElementaryTypeName","src":"4163:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1884,"mutability":"mutable","name":"errorMessage","nameLocation":"4204:12:19","nodeType":"VariableDeclaration","scope":1897,"src":"4190:26:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1883,"name":"string","nodeType":"ElementaryTypeName","src":"4190:6:19","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"4129:93:19"},"returnParameters":{"id":1888,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1887,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1897,"src":"4241:12:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1886,"name":"bytes","nodeType":"ElementaryTypeName","src":"4241:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4240:14:19"},"scope":2137,"src":"4108:223:19","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1916,"nodeType":"Block","src":"4806:111:19","statements":[{"expression":{"arguments":[{"id":1910,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1900,"src":"4845:6:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1911,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1902,"src":"4853:4:19","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":1912,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1904,"src":"4859:5:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"416464726573733a206c6f772d6c6576656c2063616c6c20776974682076616c7565206661696c6564","id":1913,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4866:43:19","typeDescriptions":{"typeIdentifier":"t_stringliteral_88a4a0b5e975840320a0475d4027005235904fdb5ece94df156f3d717cb2dbfc","typeString":"literal_string \"Address: low-level call with value failed\""},"value":"Address: low-level call with value failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_88a4a0b5e975840320a0475d4027005235904fdb5ece94df156f3d717cb2dbfc","typeString":"literal_string \"Address: low-level call with value failed\""}],"id":1909,"name":"functionCallWithValue","nodeType":"Identifier","overloadedDeclarations":[1917,1961],"referencedDeclaration":1961,"src":"4823:21:19","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,uint256,string memory) returns (bytes memory)"}},"id":1914,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4823:87:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":1908,"id":1915,"nodeType":"Return","src":"4816:94:19"}]},"documentation":{"id":1898,"nodeType":"StructuredDocumentation","src":"4337:351:19","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but also transferring `value` wei to `target`.\n Requirements:\n - the calling contract must have an ETH balance of at least `value`.\n - the called Solidity function must be `payable`.\n _Available since v3.1._"},"id":1917,"implemented":true,"kind":"function","modifiers":[],"name":"functionCallWithValue","nameLocation":"4702:21:19","nodeType":"FunctionDefinition","parameters":{"id":1905,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1900,"mutability":"mutable","name":"target","nameLocation":"4732:6:19","nodeType":"VariableDeclaration","scope":1917,"src":"4724:14:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1899,"name":"address","nodeType":"ElementaryTypeName","src":"4724:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1902,"mutability":"mutable","name":"data","nameLocation":"4753:4:19","nodeType":"VariableDeclaration","scope":1917,"src":"4740:17:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1901,"name":"bytes","nodeType":"ElementaryTypeName","src":"4740:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1904,"mutability":"mutable","name":"value","nameLocation":"4767:5:19","nodeType":"VariableDeclaration","scope":1917,"src":"4759:13:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1903,"name":"uint256","nodeType":"ElementaryTypeName","src":"4759:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4723:50:19"},"returnParameters":{"id":1908,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1907,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1917,"src":"4792:12:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1906,"name":"bytes","nodeType":"ElementaryTypeName","src":"4792:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4791:14:19"},"scope":2137,"src":"4693:224:19","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1960,"nodeType":"Block","src":"5344:267:19","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1938,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":1934,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967268,"src":"5370:4:19","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$2137","typeString":"library Address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Address_$2137","typeString":"library Address"}],"id":1933,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5362:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1932,"name":"address","nodeType":"ElementaryTypeName","src":"5362:7:19","typeDescriptions":{}}},"id":1935,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5362:13:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1936,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5376:7:19","memberName":"balance","nodeType":"MemberAccess","src":"5362:21:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":1937,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1924,"src":"5387:5:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5362:30:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c","id":1939,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5394:40:19","typeDescriptions":{"typeIdentifier":"t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c","typeString":"literal_string \"Address: insufficient balance for call\""},"value":"Address: insufficient balance for call"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c","typeString":"literal_string \"Address: insufficient balance for call\""}],"id":1931,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"5354:7:19","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1940,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5354:81:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1941,"nodeType":"ExpressionStatement","src":"5354:81:19"},{"assignments":[1943,1945],"declarations":[{"constant":false,"id":1943,"mutability":"mutable","name":"success","nameLocation":"5451:7:19","nodeType":"VariableDeclaration","scope":1960,"src":"5446:12:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1942,"name":"bool","nodeType":"ElementaryTypeName","src":"5446:4:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1945,"mutability":"mutable","name":"returndata","nameLocation":"5473:10:19","nodeType":"VariableDeclaration","scope":1960,"src":"5460:23:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1944,"name":"bytes","nodeType":"ElementaryTypeName","src":"5460:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":1952,"initialValue":{"arguments":[{"id":1950,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1922,"src":"5513:4:19","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":1946,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1920,"src":"5487:6:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1947,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5494:4:19","memberName":"call","nodeType":"MemberAccess","src":"5487:11:19","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":1949,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":1948,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1924,"src":"5506:5:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"5487:25:19","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":1951,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5487:31:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"5445:73:19"},{"expression":{"arguments":[{"id":1954,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1920,"src":"5562:6:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1955,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1943,"src":"5570:7:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":1956,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1945,"src":"5579:10:19","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":1957,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1926,"src":"5591:12:19","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1953,"name":"verifyCallResultFromTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2092,"src":"5535:26:19","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bool,bytes memory,string memory) view returns (bytes memory)"}},"id":1958,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5535:69:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":1930,"id":1959,"nodeType":"Return","src":"5528:76:19"}]},"documentation":{"id":1918,"nodeType":"StructuredDocumentation","src":"4923:237:19","text":" @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n with `errorMessage` as a fallback revert reason when `target` reverts.\n _Available since v3.1._"},"id":1961,"implemented":true,"kind":"function","modifiers":[],"name":"functionCallWithValue","nameLocation":"5174:21:19","nodeType":"FunctionDefinition","parameters":{"id":1927,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1920,"mutability":"mutable","name":"target","nameLocation":"5213:6:19","nodeType":"VariableDeclaration","scope":1961,"src":"5205:14:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1919,"name":"address","nodeType":"ElementaryTypeName","src":"5205:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1922,"mutability":"mutable","name":"data","nameLocation":"5242:4:19","nodeType":"VariableDeclaration","scope":1961,"src":"5229:17:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1921,"name":"bytes","nodeType":"ElementaryTypeName","src":"5229:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1924,"mutability":"mutable","name":"value","nameLocation":"5264:5:19","nodeType":"VariableDeclaration","scope":1961,"src":"5256:13:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1923,"name":"uint256","nodeType":"ElementaryTypeName","src":"5256:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1926,"mutability":"mutable","name":"errorMessage","nameLocation":"5293:12:19","nodeType":"VariableDeclaration","scope":1961,"src":"5279:26:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1925,"name":"string","nodeType":"ElementaryTypeName","src":"5279:6:19","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"5195:116:19"},"returnParameters":{"id":1930,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1929,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1961,"src":"5330:12:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1928,"name":"bytes","nodeType":"ElementaryTypeName","src":"5330:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5329:14:19"},"scope":2137,"src":"5165:446:19","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1977,"nodeType":"Block","src":"5888:97:19","statements":[{"expression":{"arguments":[{"id":1972,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1964,"src":"5924:6:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1973,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1966,"src":"5932:4:19","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"416464726573733a206c6f772d6c6576656c207374617469632063616c6c206661696c6564","id":1974,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5938:39:19","typeDescriptions":{"typeIdentifier":"t_stringliteral_90ec82aa826a536a4cbfae44ecfa384680faa9a4b77344bce96aa761ad904df0","typeString":"literal_string \"Address: low-level static call failed\""},"value":"Address: low-level static call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_90ec82aa826a536a4cbfae44ecfa384680faa9a4b77344bce96aa761ad904df0","typeString":"literal_string \"Address: low-level static call failed\""}],"id":1971,"name":"functionStaticCall","nodeType":"Identifier","overloadedDeclarations":[1978,2007],"referencedDeclaration":2007,"src":"5905:18:19","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,string memory) view returns (bytes memory)"}},"id":1975,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5905:73:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":1970,"id":1976,"nodeType":"Return","src":"5898:80:19"}]},"documentation":{"id":1962,"nodeType":"StructuredDocumentation","src":"5617:166:19","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a static call.\n _Available since v3.3._"},"id":1978,"implemented":true,"kind":"function","modifiers":[],"name":"functionStaticCall","nameLocation":"5797:18:19","nodeType":"FunctionDefinition","parameters":{"id":1967,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1964,"mutability":"mutable","name":"target","nameLocation":"5824:6:19","nodeType":"VariableDeclaration","scope":1978,"src":"5816:14:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1963,"name":"address","nodeType":"ElementaryTypeName","src":"5816:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1966,"mutability":"mutable","name":"data","nameLocation":"5845:4:19","nodeType":"VariableDeclaration","scope":1978,"src":"5832:17:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1965,"name":"bytes","nodeType":"ElementaryTypeName","src":"5832:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5815:35:19"},"returnParameters":{"id":1970,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1969,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1978,"src":"5874:12:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1968,"name":"bytes","nodeType":"ElementaryTypeName","src":"5874:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5873:14:19"},"scope":2137,"src":"5788:197:19","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":2006,"nodeType":"Block","src":"6327:168:19","statements":[{"assignments":[1991,1993],"declarations":[{"constant":false,"id":1991,"mutability":"mutable","name":"success","nameLocation":"6343:7:19","nodeType":"VariableDeclaration","scope":2006,"src":"6338:12:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1990,"name":"bool","nodeType":"ElementaryTypeName","src":"6338:4:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1993,"mutability":"mutable","name":"returndata","nameLocation":"6365:10:19","nodeType":"VariableDeclaration","scope":2006,"src":"6352:23:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1992,"name":"bytes","nodeType":"ElementaryTypeName","src":"6352:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":1998,"initialValue":{"arguments":[{"id":1996,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1983,"src":"6397:4:19","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":1994,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1981,"src":"6379:6:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1995,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6386:10:19","memberName":"staticcall","nodeType":"MemberAccess","src":"6379:17:19","typeDescriptions":{"typeIdentifier":"t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) view returns (bool,bytes memory)"}},"id":1997,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6379:23:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"6337:65:19"},{"expression":{"arguments":[{"id":2000,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1981,"src":"6446:6:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2001,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1991,"src":"6454:7:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":2002,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1993,"src":"6463:10:19","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":2003,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1985,"src":"6475:12:19","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1999,"name":"verifyCallResultFromTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2092,"src":"6419:26:19","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bool,bytes memory,string memory) view returns (bytes memory)"}},"id":2004,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6419:69:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":1989,"id":2005,"nodeType":"Return","src":"6412:76:19"}]},"documentation":{"id":1979,"nodeType":"StructuredDocumentation","src":"5991:173:19","text":" @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n but performing a static call.\n _Available since v3.3._"},"id":2007,"implemented":true,"kind":"function","modifiers":[],"name":"functionStaticCall","nameLocation":"6178:18:19","nodeType":"FunctionDefinition","parameters":{"id":1986,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1981,"mutability":"mutable","name":"target","nameLocation":"6214:6:19","nodeType":"VariableDeclaration","scope":2007,"src":"6206:14:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1980,"name":"address","nodeType":"ElementaryTypeName","src":"6206:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1983,"mutability":"mutable","name":"data","nameLocation":"6243:4:19","nodeType":"VariableDeclaration","scope":2007,"src":"6230:17:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1982,"name":"bytes","nodeType":"ElementaryTypeName","src":"6230:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1985,"mutability":"mutable","name":"errorMessage","nameLocation":"6271:12:19","nodeType":"VariableDeclaration","scope":2007,"src":"6257:26:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1984,"name":"string","nodeType":"ElementaryTypeName","src":"6257:6:19","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"6196:93:19"},"returnParameters":{"id":1989,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1988,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2007,"src":"6313:12:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1987,"name":"bytes","nodeType":"ElementaryTypeName","src":"6313:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6312:14:19"},"scope":2137,"src":"6169:326:19","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":2023,"nodeType":"Block","src":"6771:101:19","statements":[{"expression":{"arguments":[{"id":2018,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2010,"src":"6809:6:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2019,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2012,"src":"6817:4:19","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564","id":2020,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6823:41:19","typeDescriptions":{"typeIdentifier":"t_stringliteral_9fdcd12e4b726339b32a442b0a448365d5d85c96b2d2cff917b4f66c63110398","typeString":"literal_string \"Address: low-level delegate call failed\""},"value":"Address: low-level delegate call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_9fdcd12e4b726339b32a442b0a448365d5d85c96b2d2cff917b4f66c63110398","typeString":"literal_string \"Address: low-level delegate call failed\""}],"id":2017,"name":"functionDelegateCall","nodeType":"Identifier","overloadedDeclarations":[2024,2053],"referencedDeclaration":2053,"src":"6788:20:19","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,string memory) returns (bytes memory)"}},"id":2021,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6788:77:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":2016,"id":2022,"nodeType":"Return","src":"6781:84:19"}]},"documentation":{"id":2008,"nodeType":"StructuredDocumentation","src":"6501:168:19","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a delegate call.\n _Available since v3.4._"},"id":2024,"implemented":true,"kind":"function","modifiers":[],"name":"functionDelegateCall","nameLocation":"6683:20:19","nodeType":"FunctionDefinition","parameters":{"id":2013,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2010,"mutability":"mutable","name":"target","nameLocation":"6712:6:19","nodeType":"VariableDeclaration","scope":2024,"src":"6704:14:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2009,"name":"address","nodeType":"ElementaryTypeName","src":"6704:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2012,"mutability":"mutable","name":"data","nameLocation":"6733:4:19","nodeType":"VariableDeclaration","scope":2024,"src":"6720:17:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2011,"name":"bytes","nodeType":"ElementaryTypeName","src":"6720:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6703:35:19"},"returnParameters":{"id":2016,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2015,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2024,"src":"6757:12:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2014,"name":"bytes","nodeType":"ElementaryTypeName","src":"6757:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6756:14:19"},"scope":2137,"src":"6674:198:19","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2052,"nodeType":"Block","src":"7213:170:19","statements":[{"assignments":[2037,2039],"declarations":[{"constant":false,"id":2037,"mutability":"mutable","name":"success","nameLocation":"7229:7:19","nodeType":"VariableDeclaration","scope":2052,"src":"7224:12:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2036,"name":"bool","nodeType":"ElementaryTypeName","src":"7224:4:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2039,"mutability":"mutable","name":"returndata","nameLocation":"7251:10:19","nodeType":"VariableDeclaration","scope":2052,"src":"7238:23:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2038,"name":"bytes","nodeType":"ElementaryTypeName","src":"7238:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":2044,"initialValue":{"arguments":[{"id":2042,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2029,"src":"7285:4:19","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":2040,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2027,"src":"7265:6:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2041,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7272:12:19","memberName":"delegatecall","nodeType":"MemberAccess","src":"7265:19:19","typeDescriptions":{"typeIdentifier":"t_function_baredelegatecall_nonpayable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) returns (bool,bytes memory)"}},"id":2043,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7265:25:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"7223:67:19"},{"expression":{"arguments":[{"id":2046,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2027,"src":"7334:6:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2047,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2037,"src":"7342:7:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":2048,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2039,"src":"7351:10:19","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":2049,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"7363:12:19","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":2045,"name":"verifyCallResultFromTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2092,"src":"7307:26:19","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bool,bytes memory,string memory) view returns (bytes memory)"}},"id":2050,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7307:69:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":2035,"id":2051,"nodeType":"Return","src":"7300:76:19"}]},"documentation":{"id":2025,"nodeType":"StructuredDocumentation","src":"6878:175:19","text":" @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n but performing a delegate call.\n _Available since v3.4._"},"id":2053,"implemented":true,"kind":"function","modifiers":[],"name":"functionDelegateCall","nameLocation":"7067:20:19","nodeType":"FunctionDefinition","parameters":{"id":2032,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2027,"mutability":"mutable","name":"target","nameLocation":"7105:6:19","nodeType":"VariableDeclaration","scope":2053,"src":"7097:14:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2026,"name":"address","nodeType":"ElementaryTypeName","src":"7097:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2029,"mutability":"mutable","name":"data","nameLocation":"7134:4:19","nodeType":"VariableDeclaration","scope":2053,"src":"7121:17:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2028,"name":"bytes","nodeType":"ElementaryTypeName","src":"7121:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":2031,"mutability":"mutable","name":"errorMessage","nameLocation":"7162:12:19","nodeType":"VariableDeclaration","scope":2053,"src":"7148:26:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2030,"name":"string","nodeType":"ElementaryTypeName","src":"7148:6:19","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"7087:93:19"},"returnParameters":{"id":2035,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2034,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2053,"src":"7199:12:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2033,"name":"bytes","nodeType":"ElementaryTypeName","src":"7199:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7198:14:19"},"scope":2137,"src":"7058:325:19","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2091,"nodeType":"Block","src":"7865:434:19","statements":[{"condition":{"id":2067,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2058,"src":"7879:7:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2089,"nodeType":"Block","src":"8235:58:19","statements":[{"expression":{"arguments":[{"id":2085,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2060,"src":"8257:10:19","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":2086,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2062,"src":"8269:12:19","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":2084,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"8249:7:19","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (bytes memory,string memory) pure"}},"id":2087,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8249:33:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2088,"nodeType":"ExpressionStatement","src":"8249:33:19"}]},"id":2090,"nodeType":"IfStatement","src":"7875:418:19","trueBody":{"id":2083,"nodeType":"Block","src":"7888:341:19","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2071,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2068,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2060,"src":"7906:10:19","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2069,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7917:6:19","memberName":"length","nodeType":"MemberAccess","src":"7906:17:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2070,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7927:1:19","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7906:22:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2080,"nodeType":"IfStatement","src":"7902:286:19","trueBody":{"id":2079,"nodeType":"Block","src":"7930:258:19","statements":[{"expression":{"arguments":[{"arguments":[{"id":2074,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2056,"src":"8132:6:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2073,"name":"isContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1825,"src":"8121:10:19","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":2075,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8121:18:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374","id":2076,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8141:31:19","typeDescriptions":{"typeIdentifier":"t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad","typeString":"literal_string \"Address: call to non-contract\""},"value":"Address: call to non-contract"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad","typeString":"literal_string \"Address: call to non-contract\""}],"id":2072,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"8113:7:19","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2077,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8113:60:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2078,"nodeType":"ExpressionStatement","src":"8113:60:19"}]}},{"expression":{"id":2081,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2060,"src":"8208:10:19","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":2066,"id":2082,"nodeType":"Return","src":"8201:17:19"}]}}]},"documentation":{"id":2054,"nodeType":"StructuredDocumentation","src":"7389:277:19","text":" @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\n the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\n _Available since v4.8._"},"id":2092,"implemented":true,"kind":"function","modifiers":[],"name":"verifyCallResultFromTarget","nameLocation":"7680:26:19","nodeType":"FunctionDefinition","parameters":{"id":2063,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2056,"mutability":"mutable","name":"target","nameLocation":"7724:6:19","nodeType":"VariableDeclaration","scope":2092,"src":"7716:14:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2055,"name":"address","nodeType":"ElementaryTypeName","src":"7716:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2058,"mutability":"mutable","name":"success","nameLocation":"7745:7:19","nodeType":"VariableDeclaration","scope":2092,"src":"7740:12:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2057,"name":"bool","nodeType":"ElementaryTypeName","src":"7740:4:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2060,"mutability":"mutable","name":"returndata","nameLocation":"7775:10:19","nodeType":"VariableDeclaration","scope":2092,"src":"7762:23:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2059,"name":"bytes","nodeType":"ElementaryTypeName","src":"7762:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":2062,"mutability":"mutable","name":"errorMessage","nameLocation":"7809:12:19","nodeType":"VariableDeclaration","scope":2092,"src":"7795:26:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2061,"name":"string","nodeType":"ElementaryTypeName","src":"7795:6:19","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"7706:121:19"},"returnParameters":{"id":2066,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2065,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2092,"src":"7851:12:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2064,"name":"bytes","nodeType":"ElementaryTypeName","src":"7851:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7850:14:19"},"scope":2137,"src":"7671:628:19","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":2115,"nodeType":"Block","src":"8680:135:19","statements":[{"condition":{"id":2104,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2095,"src":"8694:7:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2113,"nodeType":"Block","src":"8751:58:19","statements":[{"expression":{"arguments":[{"id":2109,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2097,"src":"8773:10:19","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":2110,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2099,"src":"8785:12:19","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":2108,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"8765:7:19","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (bytes memory,string memory) pure"}},"id":2111,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8765:33:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2112,"nodeType":"ExpressionStatement","src":"8765:33:19"}]},"id":2114,"nodeType":"IfStatement","src":"8690:119:19","trueBody":{"id":2107,"nodeType":"Block","src":"8703:42:19","statements":[{"expression":{"id":2105,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2097,"src":"8724:10:19","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":2103,"id":2106,"nodeType":"Return","src":"8717:17:19"}]}}]},"documentation":{"id":2093,"nodeType":"StructuredDocumentation","src":"8305:210:19","text":" @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\n revert reason or using the provided one.\n _Available since v4.3._"},"id":2116,"implemented":true,"kind":"function","modifiers":[],"name":"verifyCallResult","nameLocation":"8529:16:19","nodeType":"FunctionDefinition","parameters":{"id":2100,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2095,"mutability":"mutable","name":"success","nameLocation":"8560:7:19","nodeType":"VariableDeclaration","scope":2116,"src":"8555:12:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2094,"name":"bool","nodeType":"ElementaryTypeName","src":"8555:4:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2097,"mutability":"mutable","name":"returndata","nameLocation":"8590:10:19","nodeType":"VariableDeclaration","scope":2116,"src":"8577:23:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2096,"name":"bytes","nodeType":"ElementaryTypeName","src":"8577:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":2099,"mutability":"mutable","name":"errorMessage","nameLocation":"8624:12:19","nodeType":"VariableDeclaration","scope":2116,"src":"8610:26:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2098,"name":"string","nodeType":"ElementaryTypeName","src":"8610:6:19","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"8545:97:19"},"returnParameters":{"id":2103,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2102,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2116,"src":"8666:12:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2101,"name":"bytes","nodeType":"ElementaryTypeName","src":"8666:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"8665:14:19"},"scope":2137,"src":"8520:295:19","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2135,"nodeType":"Block","src":"8904:457:19","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2126,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2123,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2118,"src":"8980:10:19","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2124,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8991:6:19","memberName":"length","nodeType":"MemberAccess","src":"8980:17:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2125,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9000:1:19","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8980:21:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2133,"nodeType":"Block","src":"9310:45:19","statements":[{"expression":{"arguments":[{"id":2130,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2120,"src":"9331:12:19","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":2129,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[4294967277,4294967277],"referencedDeclaration":4294967277,"src":"9324:6:19","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":2131,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9324:20:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2132,"nodeType":"ExpressionStatement","src":"9324:20:19"}]},"id":2134,"nodeType":"IfStatement","src":"8976:379:19","trueBody":{"id":2128,"nodeType":"Block","src":"9003:301:19","statements":[{"AST":{"nodeType":"YulBlock","src":"9161:133:19","statements":[{"nodeType":"YulVariableDeclaration","src":"9179:40:19","value":{"arguments":[{"name":"returndata","nodeType":"YulIdentifier","src":"9208:10:19"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"9202:5:19"},"nodeType":"YulFunctionCall","src":"9202:17:19"},"variables":[{"name":"returndata_size","nodeType":"YulTypedName","src":"9183:15:19","type":""}]},{"expression":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9247:2:19","type":"","value":"32"},{"name":"returndata","nodeType":"YulIdentifier","src":"9251:10:19"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9243:3:19"},"nodeType":"YulFunctionCall","src":"9243:19:19"},{"name":"returndata_size","nodeType":"YulIdentifier","src":"9264:15:19"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9236:6:19"},"nodeType":"YulFunctionCall","src":"9236:44:19"},"nodeType":"YulExpressionStatement","src":"9236:44:19"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"london","externalReferences":[{"declaration":2118,"isOffset":false,"isSlot":false,"src":"9208:10:19","valueSize":1},{"declaration":2118,"isOffset":false,"isSlot":false,"src":"9251:10:19","valueSize":1}],"id":2127,"nodeType":"InlineAssembly","src":"9152:142:19"}]}}]},"id":2136,"implemented":true,"kind":"function","modifiers":[],"name":"_revert","nameLocation":"8830:7:19","nodeType":"FunctionDefinition","parameters":{"id":2121,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2118,"mutability":"mutable","name":"returndata","nameLocation":"8851:10:19","nodeType":"VariableDeclaration","scope":2136,"src":"8838:23:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2117,"name":"bytes","nodeType":"ElementaryTypeName","src":"8838:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":2120,"mutability":"mutable","name":"errorMessage","nameLocation":"8877:12:19","nodeType":"VariableDeclaration","scope":2136,"src":"8863:26:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2119,"name":"string","nodeType":"ElementaryTypeName","src":"8863:6:19","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"8837:53:19"},"returnParameters":{"id":2122,"nodeType":"ParameterList","parameters":[],"src":"8904:0:19"},"scope":2137,"src":"8821:540:19","stateMutability":"pure","virtual":false,"visibility":"private"}],"scope":2138,"src":"194:9169:19","usedErrors":[]}],"src":"101:9263:19"},"id":19},"@openzeppelin/contracts/utils/Context.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/Context.sol","exportedSymbols":{"Context":[2167]},"id":2168,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2139,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"101:23:20"},{"abstract":true,"baseContracts":[],"canonicalName":"Context","contractDependencies":[],"contractKind":"contract","documentation":{"id":2140,"nodeType":"StructuredDocumentation","src":"126:496:20","text":" @dev Provides information about the current execution context, including the\n sender of the transaction and its data. While these are generally available\n via msg.sender and msg.data, they should not be accessed in such a direct\n manner, since when dealing with meta-transactions the account sending and\n paying for execution may not be the actual sender (as far as an application\n is concerned).\n This contract is only required for intermediate, library-like contracts."},"fullyImplemented":true,"id":2167,"linearizedBaseContracts":[2167],"name":"Context","nameLocation":"641:7:20","nodeType":"ContractDefinition","nodes":[{"body":{"id":2148,"nodeType":"Block","src":"717:34:20","statements":[{"expression":{"expression":{"id":2145,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967281,"src":"734:3:20","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2146,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"738:6:20","memberName":"sender","nodeType":"MemberAccess","src":"734:10:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2144,"id":2147,"nodeType":"Return","src":"727:17:20"}]},"id":2149,"implemented":true,"kind":"function","modifiers":[],"name":"_msgSender","nameLocation":"664:10:20","nodeType":"FunctionDefinition","parameters":{"id":2141,"nodeType":"ParameterList","parameters":[],"src":"674:2:20"},"returnParameters":{"id":2144,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2143,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2149,"src":"708:7:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2142,"name":"address","nodeType":"ElementaryTypeName","src":"708:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"707:9:20"},"scope":2167,"src":"655:96:20","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":2157,"nodeType":"Block","src":"824:32:20","statements":[{"expression":{"expression":{"id":2154,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967281,"src":"841:3:20","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2155,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"845:4:20","memberName":"data","nodeType":"MemberAccess","src":"841:8:20","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"functionReturnParameters":2153,"id":2156,"nodeType":"Return","src":"834:15:20"}]},"id":2158,"implemented":true,"kind":"function","modifiers":[],"name":"_msgData","nameLocation":"766:8:20","nodeType":"FunctionDefinition","parameters":{"id":2150,"nodeType":"ParameterList","parameters":[],"src":"774:2:20"},"returnParameters":{"id":2153,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2152,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2158,"src":"808:14:20","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2151,"name":"bytes","nodeType":"ElementaryTypeName","src":"808:5:20","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"807:16:20"},"scope":2167,"src":"757:99:20","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":2165,"nodeType":"Block","src":"934:25:20","statements":[{"expression":{"hexValue":"30","id":2163,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"951:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":2162,"id":2164,"nodeType":"Return","src":"944:8:20"}]},"id":2166,"implemented":true,"kind":"function","modifiers":[],"name":"_contextSuffixLength","nameLocation":"871:20:20","nodeType":"FunctionDefinition","parameters":{"id":2159,"nodeType":"ParameterList","parameters":[],"src":"891:2:20"},"returnParameters":{"id":2162,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2161,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2166,"src":"925:7:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2160,"name":"uint256","nodeType":"ElementaryTypeName","src":"925:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"924:9:20"},"scope":2167,"src":"862:97:20","stateMutability":"view","virtual":true,"visibility":"internal"}],"scope":2168,"src":"623:338:20","usedErrors":[]}],"src":"101:861:20"},"id":20},"@openzeppelin/contracts/utils/Counters.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/Counters.sol","exportedSymbols":{"Counters":[2241]},"id":2242,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2169,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"87:23:21"},{"abstract":false,"baseContracts":[],"canonicalName":"Counters","contractDependencies":[],"contractKind":"library","documentation":{"id":2170,"nodeType":"StructuredDocumentation","src":"112:311:21","text":" @title Counters\n @author Matt Condon (@shrugs)\n @dev Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number\n of elements in a mapping, issuing ERC721 ids, or counting request ids.\n Include with `using Counters for Counters.Counter;`"},"fullyImplemented":true,"id":2241,"linearizedBaseContracts":[2241],"name":"Counters","nameLocation":"432:8:21","nodeType":"ContractDefinition","nodes":[{"canonicalName":"Counters.Counter","id":2173,"members":[{"constant":false,"id":2172,"mutability":"mutable","name":"_value","nameLocation":"794:6:21","nodeType":"VariableDeclaration","scope":2173,"src":"786:14:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2171,"name":"uint256","nodeType":"ElementaryTypeName","src":"786:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"Counter","nameLocation":"454:7:21","nodeType":"StructDefinition","scope":2241,"src":"447:374:21","visibility":"public"},{"body":{"id":2184,"nodeType":"Block","src":"901:38:21","statements":[{"expression":{"expression":{"id":2181,"name":"counter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2176,"src":"918:7:21","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$2173_storage_ptr","typeString":"struct Counters.Counter storage pointer"}},"id":2182,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"926:6:21","memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":2172,"src":"918:14:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2180,"id":2183,"nodeType":"Return","src":"911:21:21"}]},"id":2185,"implemented":true,"kind":"function","modifiers":[],"name":"current","nameLocation":"836:7:21","nodeType":"FunctionDefinition","parameters":{"id":2177,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2176,"mutability":"mutable","name":"counter","nameLocation":"860:7:21","nodeType":"VariableDeclaration","scope":2185,"src":"844:23:21","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$2173_storage_ptr","typeString":"struct Counters.Counter"},"typeName":{"id":2175,"nodeType":"UserDefinedTypeName","pathNode":{"id":2174,"name":"Counter","nameLocations":["844:7:21"],"nodeType":"IdentifierPath","referencedDeclaration":2173,"src":"844:7:21"},"referencedDeclaration":2173,"src":"844:7:21","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$2173_storage_ptr","typeString":"struct Counters.Counter"}},"visibility":"internal"}],"src":"843:25:21"},"returnParameters":{"id":2180,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2179,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2185,"src":"892:7:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2178,"name":"uint256","nodeType":"ElementaryTypeName","src":"892:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"891:9:21"},"scope":2241,"src":"827:112:21","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":2198,"nodeType":"Block","src":"998:70:21","statements":[{"id":2197,"nodeType":"UncheckedBlock","src":"1008:54:21","statements":[{"expression":{"id":2195,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":2191,"name":"counter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2188,"src":"1032:7:21","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$2173_storage_ptr","typeString":"struct Counters.Counter storage pointer"}},"id":2193,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1040:6:21","memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":2172,"src":"1032:14:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":2194,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1050:1:21","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1032:19:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2196,"nodeType":"ExpressionStatement","src":"1032:19:21"}]}]},"id":2199,"implemented":true,"kind":"function","modifiers":[],"name":"increment","nameLocation":"954:9:21","nodeType":"FunctionDefinition","parameters":{"id":2189,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2188,"mutability":"mutable","name":"counter","nameLocation":"980:7:21","nodeType":"VariableDeclaration","scope":2199,"src":"964:23:21","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$2173_storage_ptr","typeString":"struct Counters.Counter"},"typeName":{"id":2187,"nodeType":"UserDefinedTypeName","pathNode":{"id":2186,"name":"Counter","nameLocations":["964:7:21"],"nodeType":"IdentifierPath","referencedDeclaration":2173,"src":"964:7:21"},"referencedDeclaration":2173,"src":"964:7:21","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$2173_storage_ptr","typeString":"struct Counters.Counter"}},"visibility":"internal"}],"src":"963:25:21"},"returnParameters":{"id":2190,"nodeType":"ParameterList","parameters":[],"src":"998:0:21"},"scope":2241,"src":"945:123:21","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2226,"nodeType":"Block","src":"1127:176:21","statements":[{"assignments":[2206],"declarations":[{"constant":false,"id":2206,"mutability":"mutable","name":"value","nameLocation":"1145:5:21","nodeType":"VariableDeclaration","scope":2226,"src":"1137:13:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2205,"name":"uint256","nodeType":"ElementaryTypeName","src":"1137:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2209,"initialValue":{"expression":{"id":2207,"name":"counter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2202,"src":"1153:7:21","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$2173_storage_ptr","typeString":"struct Counters.Counter storage pointer"}},"id":2208,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1161:6:21","memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":2172,"src":"1153:14:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1137:30:21"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2213,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2211,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2206,"src":"1185:5:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2212,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1193:1:21","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1185:9:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"436f756e7465723a2064656372656d656e74206f766572666c6f77","id":2214,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1196:29:21","typeDescriptions":{"typeIdentifier":"t_stringliteral_1dfd0d5389474d871b8e8929aab9d4def041f55f90f625754fb5f9a9ba08af6f","typeString":"literal_string \"Counter: decrement overflow\""},"value":"Counter: decrement overflow"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_1dfd0d5389474d871b8e8929aab9d4def041f55f90f625754fb5f9a9ba08af6f","typeString":"literal_string \"Counter: decrement overflow\""}],"id":2210,"name":"require","nodeType":"Identifier","overloadedDeclarations":[4294967278,4294967278],"referencedDeclaration":4294967278,"src":"1177:7:21","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2215,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1177:49:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2216,"nodeType":"ExpressionStatement","src":"1177:49:21"},{"id":2225,"nodeType":"UncheckedBlock","src":"1236:61:21","statements":[{"expression":{"id":2223,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":2217,"name":"counter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2202,"src":"1260:7:21","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$2173_storage_ptr","typeString":"struct Counters.Counter storage pointer"}},"id":2219,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1268:6:21","memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":2172,"src":"1260:14:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2222,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2220,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2206,"src":"1277:5:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":2221,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1285:1:21","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1277:9:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1260:26:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2224,"nodeType":"ExpressionStatement","src":"1260:26:21"}]}]},"id":2227,"implemented":true,"kind":"function","modifiers":[],"name":"decrement","nameLocation":"1083:9:21","nodeType":"FunctionDefinition","parameters":{"id":2203,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2202,"mutability":"mutable","name":"counter","nameLocation":"1109:7:21","nodeType":"VariableDeclaration","scope":2227,"src":"1093:23:21","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$2173_storage_ptr","typeString":"struct Counters.Counter"},"typeName":{"id":2201,"nodeType":"UserDefinedTypeName","pathNode":{"id":2200,"name":"Counter","nameLocations":["1093:7:21"],"nodeType":"IdentifierPath","referencedDeclaration":2173,"src":"1093:7:21"},"referencedDeclaration":2173,"src":"1093:7:21","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$2173_storage_ptr","typeString":"struct Counters.Counter"}},"visibility":"internal"}],"src":"1092:25:21"},"returnParameters":{"id":2204,"nodeType":"ParameterList","parameters":[],"src":"1127:0:21"},"scope":2241,"src":"1074:229:21","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2239,"nodeType":"Block","src":"1358:35:21","statements":[{"expression":{"id":2237,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":2233,"name":"counter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2230,"src":"1368:7:21","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$2173_storage_ptr","typeString":"struct Counters.Counter storage pointer"}},"id":2235,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1376:6:21","memberName":"_value","nodeType":"MemberAccess","referencedDeclaration":2172,"src":"1368:14:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":2236,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1385:1:21","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1368:18:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2238,"nodeType":"ExpressionStatement","src":"1368:18:21"}]},"id":2240,"implemented":true,"kind":"function","modifiers":[],"name":"reset","nameLocation":"1318:5:21","nodeType":"FunctionDefinition","parameters":{"id":2231,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2230,"mutability":"mutable","name":"counter","nameLocation":"1340:7:21","nodeType":"VariableDeclaration","scope":2240,"src":"1324:23:21","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$2173_storage_ptr","typeString":"struct Counters.Counter"},"typeName":{"id":2229,"nodeType":"UserDefinedTypeName","pathNode":{"id":2228,"name":"Counter","nameLocations":["1324:7:21"],"nodeType":"IdentifierPath","referencedDeclaration":2173,"src":"1324:7:21"},"referencedDeclaration":2173,"src":"1324:7:21","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$2173_storage_ptr","typeString":"struct Counters.Counter"}},"visibility":"internal"}],"src":"1323:25:21"},"returnParameters":{"id":2232,"nodeType":"ParameterList","parameters":[],"src":"1358:0:21"},"scope":2241,"src":"1309:84:21","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":2242,"src":"424:971:21","usedErrors":[]}],"src":"87:1309:21"},"id":21},"@openzeppelin/contracts/utils/StorageSlot.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/StorageSlot.sol","exportedSymbols":{"StorageSlot":[2351]},"id":2352,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2243,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"193:23:22"},{"abstract":false,"baseContracts":[],"canonicalName":"StorageSlot","contractDependencies":[],"contractKind":"library","documentation":{"id":2244,"nodeType":"StructuredDocumentation","src":"218:1201:22","text":" @dev Library for reading and writing primitive types to specific storage slots.\n Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\n This library helps with reading and writing to such slots without the need for inline assembly.\n The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\n Example usage to set ERC1967 implementation slot:\n ```solidity\n contract ERC1967 {\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n function _getImplementation() internal view returns (address) {\n return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\n }\n function _setImplementation(address newImplementation) internal {\n require(Address.isContract(newImplementation), \"ERC1967: new implementation is not a contract\");\n StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\n }\n }\n ```\n _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._\n _Available since v4.9 for `string`, `bytes`._"},"fullyImplemented":true,"id":2351,"linearizedBaseContracts":[2351],"name":"StorageSlot","nameLocation":"1428:11:22","nodeType":"ContractDefinition","nodes":[{"canonicalName":"StorageSlot.AddressSlot","id":2247,"members":[{"constant":false,"id":2246,"mutability":"mutable","name":"value","nameLocation":"1483:5:22","nodeType":"VariableDeclaration","scope":2247,"src":"1475:13:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2245,"name":"address","nodeType":"ElementaryTypeName","src":"1475:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"name":"AddressSlot","nameLocation":"1453:11:22","nodeType":"StructDefinition","scope":2351,"src":"1446:49:22","visibility":"public"},{"canonicalName":"StorageSlot.BooleanSlot","id":2250,"members":[{"constant":false,"id":2249,"mutability":"mutable","name":"value","nameLocation":"1535:5:22","nodeType":"VariableDeclaration","scope":2250,"src":"1530:10:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2248,"name":"bool","nodeType":"ElementaryTypeName","src":"1530:4:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"name":"BooleanSlot","nameLocation":"1508:11:22","nodeType":"StructDefinition","scope":2351,"src":"1501:46:22","visibility":"public"},{"canonicalName":"StorageSlot.Bytes32Slot","id":2253,"members":[{"constant":false,"id":2252,"mutability":"mutable","name":"value","nameLocation":"1590:5:22","nodeType":"VariableDeclaration","scope":2253,"src":"1582:13:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2251,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1582:7:22","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"name":"Bytes32Slot","nameLocation":"1560:11:22","nodeType":"StructDefinition","scope":2351,"src":"1553:49:22","visibility":"public"},{"canonicalName":"StorageSlot.Uint256Slot","id":2256,"members":[{"constant":false,"id":2255,"mutability":"mutable","name":"value","nameLocation":"1645:5:22","nodeType":"VariableDeclaration","scope":2256,"src":"1637:13:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2254,"name":"uint256","nodeType":"ElementaryTypeName","src":"1637:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"Uint256Slot","nameLocation":"1615:11:22","nodeType":"StructDefinition","scope":2351,"src":"1608:49:22","visibility":"public"},{"canonicalName":"StorageSlot.StringSlot","id":2259,"members":[{"constant":false,"id":2258,"mutability":"mutable","name":"value","nameLocation":"1698:5:22","nodeType":"VariableDeclaration","scope":2259,"src":"1691:12:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":2257,"name":"string","nodeType":"ElementaryTypeName","src":"1691:6:22","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"name":"StringSlot","nameLocation":"1670:10:22","nodeType":"StructDefinition","scope":2351,"src":"1663:47:22","visibility":"public"},{"canonicalName":"StorageSlot.BytesSlot","id":2262,"members":[{"constant":false,"id":2261,"mutability":"mutable","name":"value","nameLocation":"1749:5:22","nodeType":"VariableDeclaration","scope":2262,"src":"1743:11:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":2260,"name":"bytes","nodeType":"ElementaryTypeName","src":"1743:5:22","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"name":"BytesSlot","nameLocation":"1723:9:22","nodeType":"StructDefinition","scope":2351,"src":"1716:45:22","visibility":"public"},{"body":{"id":2272,"nodeType":"Block","src":"1943:106:22","statements":[{"AST":{"nodeType":"YulBlock","src":"2005:38:22","statements":[{"nodeType":"YulAssignment","src":"2019:14:22","value":{"name":"slot","nodeType":"YulIdentifier","src":"2029:4:22"},"variableNames":[{"name":"r.slot","nodeType":"YulIdentifier","src":"2019:6:22"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"london","externalReferences":[{"declaration":2269,"isOffset":false,"isSlot":true,"src":"2019:6:22","suffix":"slot","valueSize":1},{"declaration":2265,"isOffset":false,"isSlot":false,"src":"2029:4:22","valueSize":1}],"id":2271,"nodeType":"InlineAssembly","src":"1996:47:22"}]},"documentation":{"id":2263,"nodeType":"StructuredDocumentation","src":"1767:87:22","text":" @dev Returns an `AddressSlot` with member `value` located at `slot`."},"id":2273,"implemented":true,"kind":"function","modifiers":[],"name":"getAddressSlot","nameLocation":"1868:14:22","nodeType":"FunctionDefinition","parameters":{"id":2266,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2265,"mutability":"mutable","name":"slot","nameLocation":"1891:4:22","nodeType":"VariableDeclaration","scope":2273,"src":"1883:12:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2264,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1883:7:22","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1882:14:22"},"returnParameters":{"id":2270,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2269,"mutability":"mutable","name":"r","nameLocation":"1940:1:22","nodeType":"VariableDeclaration","scope":2273,"src":"1920:21:22","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$2247_storage_ptr","typeString":"struct StorageSlot.AddressSlot"},"typeName":{"id":2268,"nodeType":"UserDefinedTypeName","pathNode":{"id":2267,"name":"AddressSlot","nameLocations":["1920:11:22"],"nodeType":"IdentifierPath","referencedDeclaration":2247,"src":"1920:11:22"},"referencedDeclaration":2247,"src":"1920:11:22","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$2247_storage_ptr","typeString":"struct StorageSlot.AddressSlot"}},"visibility":"internal"}],"src":"1919:23:22"},"scope":2351,"src":"1859:190:22","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2283,"nodeType":"Block","src":"2231:106:22","statements":[{"AST":{"nodeType":"YulBlock","src":"2293:38:22","statements":[{"nodeType":"YulAssignment","src":"2307:14:22","value":{"name":"slot","nodeType":"YulIdentifier","src":"2317:4:22"},"variableNames":[{"name":"r.slot","nodeType":"YulIdentifier","src":"2307:6:22"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"london","externalReferences":[{"declaration":2280,"isOffset":false,"isSlot":true,"src":"2307:6:22","suffix":"slot","valueSize":1},{"declaration":2276,"isOffset":false,"isSlot":false,"src":"2317:4:22","valueSize":1}],"id":2282,"nodeType":"InlineAssembly","src":"2284:47:22"}]},"documentation":{"id":2274,"nodeType":"StructuredDocumentation","src":"2055:87:22","text":" @dev Returns an `BooleanSlot` with member `value` located at `slot`."},"id":2284,"implemented":true,"kind":"function","modifiers":[],"name":"getBooleanSlot","nameLocation":"2156:14:22","nodeType":"FunctionDefinition","parameters":{"id":2277,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2276,"mutability":"mutable","name":"slot","nameLocation":"2179:4:22","nodeType":"VariableDeclaration","scope":2284,"src":"2171:12:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2275,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2171:7:22","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2170:14:22"},"returnParameters":{"id":2281,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2280,"mutability":"mutable","name":"r","nameLocation":"2228:1:22","nodeType":"VariableDeclaration","scope":2284,"src":"2208:21:22","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_BooleanSlot_$2250_storage_ptr","typeString":"struct StorageSlot.BooleanSlot"},"typeName":{"id":2279,"nodeType":"UserDefinedTypeName","pathNode":{"id":2278,"name":"BooleanSlot","nameLocations":["2208:11:22"],"nodeType":"IdentifierPath","referencedDeclaration":2250,"src":"2208:11:22"},"referencedDeclaration":2250,"src":"2208:11:22","typeDescriptions":{"typeIdentifier":"t_struct$_BooleanSlot_$2250_storage_ptr","typeString":"struct StorageSlot.BooleanSlot"}},"visibility":"internal"}],"src":"2207:23:22"},"scope":2351,"src":"2147:190:22","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2294,"nodeType":"Block","src":"2519:106:22","statements":[{"AST":{"nodeType":"YulBlock","src":"2581:38:22","statements":[{"nodeType":"YulAssignment","src":"2595:14:22","value":{"name":"slot","nodeType":"YulIdentifier","src":"2605:4:22"},"variableNames":[{"name":"r.slot","nodeType":"YulIdentifier","src":"2595:6:22"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"london","externalReferences":[{"declaration":2291,"isOffset":false,"isSlot":true,"src":"2595:6:22","suffix":"slot","valueSize":1},{"declaration":2287,"isOffset":false,"isSlot":false,"src":"2605:4:22","valueSize":1}],"id":2293,"nodeType":"InlineAssembly","src":"2572:47:22"}]},"documentation":{"id":2285,"nodeType":"StructuredDocumentation","src":"2343:87:22","text":" @dev Returns an `Bytes32Slot` with member `value` located at `slot`."},"id":2295,"implemented":true,"kind":"function","modifiers":[],"name":"getBytes32Slot","nameLocation":"2444:14:22","nodeType":"FunctionDefinition","parameters":{"id":2288,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2287,"mutability":"mutable","name":"slot","nameLocation":"2467:4:22","nodeType":"VariableDeclaration","scope":2295,"src":"2459:12:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2286,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2459:7:22","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2458:14:22"},"returnParameters":{"id":2292,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2291,"mutability":"mutable","name":"r","nameLocation":"2516:1:22","nodeType":"VariableDeclaration","scope":2295,"src":"2496:21:22","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Slot_$2253_storage_ptr","typeString":"struct StorageSlot.Bytes32Slot"},"typeName":{"id":2290,"nodeType":"UserDefinedTypeName","pathNode":{"id":2289,"name":"Bytes32Slot","nameLocations":["2496:11:22"],"nodeType":"IdentifierPath","referencedDeclaration":2253,"src":"2496:11:22"},"referencedDeclaration":2253,"src":"2496:11:22","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Slot_$2253_storage_ptr","typeString":"struct StorageSlot.Bytes32Slot"}},"visibility":"internal"}],"src":"2495:23:22"},"scope":2351,"src":"2435:190:22","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2305,"nodeType":"Block","src":"2807:106:22","statements":[{"AST":{"nodeType":"YulBlock","src":"2869:38:22","statements":[{"nodeType":"YulAssignment","src":"2883:14:22","value":{"name":"slot","nodeType":"YulIdentifier","src":"2893:4:22"},"variableNames":[{"name":"r.slot","nodeType":"YulIdentifier","src":"2883:6:22"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"london","externalReferences":[{"declaration":2302,"isOffset":false,"isSlot":true,"src":"2883:6:22","suffix":"slot","valueSize":1},{"declaration":2298,"isOffset":false,"isSlot":false,"src":"2893:4:22","valueSize":1}],"id":2304,"nodeType":"InlineAssembly","src":"2860:47:22"}]},"documentation":{"id":2296,"nodeType":"StructuredDocumentation","src":"2631:87:22","text":" @dev Returns an `Uint256Slot` with member `value` located at `slot`."},"id":2306,"implemented":true,"kind":"function","modifiers":[],"name":"getUint256Slot","nameLocation":"2732:14:22","nodeType":"FunctionDefinition","parameters":{"id":2299,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2298,"mutability":"mutable","name":"slot","nameLocation":"2755:4:22","nodeType":"VariableDeclaration","scope":2306,"src":"2747:12:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2297,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2747:7:22","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2746:14:22"},"returnParameters":{"id":2303,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2302,"mutability":"mutable","name":"r","nameLocation":"2804:1:22","nodeType":"VariableDeclaration","scope":2306,"src":"2784:21:22","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Uint256Slot_$2256_storage_ptr","typeString":"struct StorageSlot.Uint256Slot"},"typeName":{"id":2301,"nodeType":"UserDefinedTypeName","pathNode":{"id":2300,"name":"Uint256Slot","nameLocations":["2784:11:22"],"nodeType":"IdentifierPath","referencedDeclaration":2256,"src":"2784:11:22"},"referencedDeclaration":2256,"src":"2784:11:22","typeDescriptions":{"typeIdentifier":"t_struct$_Uint256Slot_$2256_storage_ptr","typeString":"struct StorageSlot.Uint256Slot"}},"visibility":"internal"}],"src":"2783:23:22"},"scope":2351,"src":"2723:190:22","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2316,"nodeType":"Block","src":"3092:106:22","statements":[{"AST":{"nodeType":"YulBlock","src":"3154:38:22","statements":[{"nodeType":"YulAssignment","src":"3168:14:22","value":{"name":"slot","nodeType":"YulIdentifier","src":"3178:4:22"},"variableNames":[{"name":"r.slot","nodeType":"YulIdentifier","src":"3168:6:22"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"london","externalReferences":[{"declaration":2313,"isOffset":false,"isSlot":true,"src":"3168:6:22","suffix":"slot","valueSize":1},{"declaration":2309,"isOffset":false,"isSlot":false,"src":"3178:4:22","valueSize":1}],"id":2315,"nodeType":"InlineAssembly","src":"3145:47:22"}]},"documentation":{"id":2307,"nodeType":"StructuredDocumentation","src":"2919:86:22","text":" @dev Returns an `StringSlot` with member `value` located at `slot`."},"id":2317,"implemented":true,"kind":"function","modifiers":[],"name":"getStringSlot","nameLocation":"3019:13:22","nodeType":"FunctionDefinition","parameters":{"id":2310,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2309,"mutability":"mutable","name":"slot","nameLocation":"3041:4:22","nodeType":"VariableDeclaration","scope":2317,"src":"3033:12:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2308,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3033:7:22","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3032:14:22"},"returnParameters":{"id":2314,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2313,"mutability":"mutable","name":"r","nameLocation":"3089:1:22","nodeType":"VariableDeclaration","scope":2317,"src":"3070:20:22","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_StringSlot_$2259_storage_ptr","typeString":"struct StorageSlot.StringSlot"},"typeName":{"id":2312,"nodeType":"UserDefinedTypeName","pathNode":{"id":2311,"name":"StringSlot","nameLocations":["3070:10:22"],"nodeType":"IdentifierPath","referencedDeclaration":2259,"src":"3070:10:22"},"referencedDeclaration":2259,"src":"3070:10:22","typeDescriptions":{"typeIdentifier":"t_struct$_StringSlot_$2259_storage_ptr","typeString":"struct StorageSlot.StringSlot"}},"visibility":"internal"}],"src":"3069:22:22"},"scope":2351,"src":"3010:188:22","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2327,"nodeType":"Block","src":"3400:112:22","statements":[{"AST":{"nodeType":"YulBlock","src":"3462:44:22","statements":[{"nodeType":"YulAssignment","src":"3476:20:22","value":{"name":"store.slot","nodeType":"YulIdentifier","src":"3486:10:22"},"variableNames":[{"name":"r.slot","nodeType":"YulIdentifier","src":"3476:6:22"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"london","externalReferences":[{"declaration":2324,"isOffset":false,"isSlot":true,"src":"3476:6:22","suffix":"slot","valueSize":1},{"declaration":2320,"isOffset":false,"isSlot":true,"src":"3486:10:22","suffix":"slot","valueSize":1}],"id":2326,"nodeType":"InlineAssembly","src":"3453:53:22"}]},"documentation":{"id":2318,"nodeType":"StructuredDocumentation","src":"3204:101:22","text":" @dev Returns an `StringSlot` representation of the string storage pointer `store`."},"id":2328,"implemented":true,"kind":"function","modifiers":[],"name":"getStringSlot","nameLocation":"3319:13:22","nodeType":"FunctionDefinition","parameters":{"id":2321,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2320,"mutability":"mutable","name":"store","nameLocation":"3348:5:22","nodeType":"VariableDeclaration","scope":2328,"src":"3333:20:22","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":2319,"name":"string","nodeType":"ElementaryTypeName","src":"3333:6:22","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3332:22:22"},"returnParameters":{"id":2325,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2324,"mutability":"mutable","name":"r","nameLocation":"3397:1:22","nodeType":"VariableDeclaration","scope":2328,"src":"3378:20:22","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_StringSlot_$2259_storage_ptr","typeString":"struct StorageSlot.StringSlot"},"typeName":{"id":2323,"nodeType":"UserDefinedTypeName","pathNode":{"id":2322,"name":"StringSlot","nameLocations":["3378:10:22"],"nodeType":"IdentifierPath","referencedDeclaration":2259,"src":"3378:10:22"},"referencedDeclaration":2259,"src":"3378:10:22","typeDescriptions":{"typeIdentifier":"t_struct$_StringSlot_$2259_storage_ptr","typeString":"struct StorageSlot.StringSlot"}},"visibility":"internal"}],"src":"3377:22:22"},"scope":2351,"src":"3310:202:22","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2338,"nodeType":"Block","src":"3688:106:22","statements":[{"AST":{"nodeType":"YulBlock","src":"3750:38:22","statements":[{"nodeType":"YulAssignment","src":"3764:14:22","value":{"name":"slot","nodeType":"YulIdentifier","src":"3774:4:22"},"variableNames":[{"name":"r.slot","nodeType":"YulIdentifier","src":"3764:6:22"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"london","externalReferences":[{"declaration":2335,"isOffset":false,"isSlot":true,"src":"3764:6:22","suffix":"slot","valueSize":1},{"declaration":2331,"isOffset":false,"isSlot":false,"src":"3774:4:22","valueSize":1}],"id":2337,"nodeType":"InlineAssembly","src":"3741:47:22"}]},"documentation":{"id":2329,"nodeType":"StructuredDocumentation","src":"3518:85:22","text":" @dev Returns an `BytesSlot` with member `value` located at `slot`."},"id":2339,"implemented":true,"kind":"function","modifiers":[],"name":"getBytesSlot","nameLocation":"3617:12:22","nodeType":"FunctionDefinition","parameters":{"id":2332,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2331,"mutability":"mutable","name":"slot","nameLocation":"3638:4:22","nodeType":"VariableDeclaration","scope":2339,"src":"3630:12:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2330,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3630:7:22","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3629:14:22"},"returnParameters":{"id":2336,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2335,"mutability":"mutable","name":"r","nameLocation":"3685:1:22","nodeType":"VariableDeclaration","scope":2339,"src":"3667:19:22","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$2262_storage_ptr","typeString":"struct StorageSlot.BytesSlot"},"typeName":{"id":2334,"nodeType":"UserDefinedTypeName","pathNode":{"id":2333,"name":"BytesSlot","nameLocations":["3667:9:22"],"nodeType":"IdentifierPath","referencedDeclaration":2262,"src":"3667:9:22"},"referencedDeclaration":2262,"src":"3667:9:22","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$2262_storage_ptr","typeString":"struct StorageSlot.BytesSlot"}},"visibility":"internal"}],"src":"3666:21:22"},"scope":2351,"src":"3608:186:22","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2349,"nodeType":"Block","src":"3991:112:22","statements":[{"AST":{"nodeType":"YulBlock","src":"4053:44:22","statements":[{"nodeType":"YulAssignment","src":"4067:20:22","value":{"name":"store.slot","nodeType":"YulIdentifier","src":"4077:10:22"},"variableNames":[{"name":"r.slot","nodeType":"YulIdentifier","src":"4067:6:22"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"london","externalReferences":[{"declaration":2346,"isOffset":false,"isSlot":true,"src":"4067:6:22","suffix":"slot","valueSize":1},{"declaration":2342,"isOffset":false,"isSlot":true,"src":"4077:10:22","suffix":"slot","valueSize":1}],"id":2348,"nodeType":"InlineAssembly","src":"4044:53:22"}]},"documentation":{"id":2340,"nodeType":"StructuredDocumentation","src":"3800:99:22","text":" @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`."},"id":2350,"implemented":true,"kind":"function","modifiers":[],"name":"getBytesSlot","nameLocation":"3913:12:22","nodeType":"FunctionDefinition","parameters":{"id":2343,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2342,"mutability":"mutable","name":"store","nameLocation":"3940:5:22","nodeType":"VariableDeclaration","scope":2350,"src":"3926:19:22","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":2341,"name":"bytes","nodeType":"ElementaryTypeName","src":"3926:5:22","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3925:21:22"},"returnParameters":{"id":2347,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2346,"mutability":"mutable","name":"r","nameLocation":"3988:1:22","nodeType":"VariableDeclaration","scope":2350,"src":"3970:19:22","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$2262_storage_ptr","typeString":"struct StorageSlot.BytesSlot"},"typeName":{"id":2345,"nodeType":"UserDefinedTypeName","pathNode":{"id":2344,"name":"BytesSlot","nameLocations":["3970:9:22"],"nodeType":"IdentifierPath","referencedDeclaration":2262,"src":"3970:9:22"},"referencedDeclaration":2262,"src":"3970:9:22","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$2262_storage_ptr","typeString":"struct StorageSlot.BytesSlot"}},"visibility":"internal"}],"src":"3969:21:22"},"scope":2351,"src":"3904:199:22","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":2352,"src":"1420:2685:22","usedErrors":[]}],"src":"193:3913:22"},"id":22},"@openzeppelin/contracts/utils/introspection/ERC165.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/introspection/ERC165.sol","exportedSymbols":{"ERC165":[2375],"IERC165":[2387]},"id":2376,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2353,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"99:23:23"},{"absolutePath":"@openzeppelin/contracts/utils/introspection/IERC165.sol","file":"./IERC165.sol","id":2354,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2376,"sourceUnit":2388,"src":"124:23:23","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":2356,"name":"IERC165","nameLocations":["754:7:23"],"nodeType":"IdentifierPath","referencedDeclaration":2387,"src":"754:7:23"},"id":2357,"nodeType":"InheritanceSpecifier","src":"754:7:23"}],"canonicalName":"ERC165","contractDependencies":[],"contractKind":"contract","documentation":{"id":2355,"nodeType":"StructuredDocumentation","src":"149:576:23","text":" @dev Implementation of the {IERC165} interface.\n Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\n for the additional interface id that will be supported. For example:\n ```solidity\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\n }\n ```\n Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation."},"fullyImplemented":true,"id":2375,"linearizedBaseContracts":[2375,2387],"name":"ERC165","nameLocation":"744:6:23","nodeType":"ContractDefinition","nodes":[{"baseFunctions":[2386],"body":{"id":2373,"nodeType":"Block","src":"920:64:23","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":2371,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2366,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2360,"src":"937:11:23","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":2368,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2387,"src":"957:7:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC165_$2387_$","typeString":"type(contract IERC165)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC165_$2387_$","typeString":"type(contract IERC165)"}],"id":2367,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"952:4:23","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":2369,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"952:13:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC165_$2387","typeString":"type(contract IERC165)"}},"id":2370,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"966:11:23","memberName":"interfaceId","nodeType":"MemberAccess","src":"952:25:23","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"937:40:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2365,"id":2372,"nodeType":"Return","src":"930:47:23"}]},"documentation":{"id":2358,"nodeType":"StructuredDocumentation","src":"768:56:23","text":" @dev See {IERC165-supportsInterface}."},"functionSelector":"01ffc9a7","id":2374,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"838:17:23","nodeType":"FunctionDefinition","overrides":{"id":2362,"nodeType":"OverrideSpecifier","overrides":[],"src":"896:8:23"},"parameters":{"id":2361,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2360,"mutability":"mutable","name":"interfaceId","nameLocation":"863:11:23","nodeType":"VariableDeclaration","scope":2374,"src":"856:18:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2359,"name":"bytes4","nodeType":"ElementaryTypeName","src":"856:6:23","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"855:20:23"},"returnParameters":{"id":2365,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2364,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2374,"src":"914:4:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2363,"name":"bool","nodeType":"ElementaryTypeName","src":"914:4:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"913:6:23"},"scope":2375,"src":"829:155:23","stateMutability":"view","virtual":true,"visibility":"public"}],"scope":2376,"src":"726:260:23","usedErrors":[]}],"src":"99:888:23"},"id":23},"@openzeppelin/contracts/utils/introspection/IERC165.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/introspection/IERC165.sol","exportedSymbols":{"IERC165":[2387]},"id":2388,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2377,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"100:23:24"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC165","contractDependencies":[],"contractKind":"interface","documentation":{"id":2378,"nodeType":"StructuredDocumentation","src":"125:279:24","text":" @dev Interface of the ERC165 standard, as defined in the\n https://eips.ethereum.org/EIPS/eip-165[EIP].\n Implementers can declare support of contract interfaces, which can then be\n queried by others ({ERC165Checker}).\n For an implementation, see {ERC165}."},"fullyImplemented":false,"id":2387,"linearizedBaseContracts":[2387],"name":"IERC165","nameLocation":"415:7:24","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":2379,"nodeType":"StructuredDocumentation","src":"429:340:24","text":" @dev Returns true if this contract implements the interface defined by\n `interfaceId`. See the corresponding\n https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\n to learn more about how these ids are created.\n This function call must use less than 30 000 gas."},"functionSelector":"01ffc9a7","id":2386,"implemented":false,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"783:17:24","nodeType":"FunctionDefinition","parameters":{"id":2382,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2381,"mutability":"mutable","name":"interfaceId","nameLocation":"808:11:24","nodeType":"VariableDeclaration","scope":2386,"src":"801:18:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2380,"name":"bytes4","nodeType":"ElementaryTypeName","src":"801:6:24","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"800:20:24"},"returnParameters":{"id":2385,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2384,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2386,"src":"844:4:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2383,"name":"bool","nodeType":"ElementaryTypeName","src":"844:4:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"843:6:24"},"scope":2387,"src":"774:76:24","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":2388,"src":"405:447:24","usedErrors":[]}],"src":"100:753:24"},"id":24},"src/dao/IDAO.sol":{"ast":{"absolutePath":"src/dao/IDAO.sol","exportedSymbols":{"IDAO":[2538]},"id":2539,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":2389,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:25"},{"abstract":false,"baseContracts":[],"canonicalName":"IDAO","contractDependencies":[],"contractKind":"interface","documentation":{"id":2390,"nodeType":"StructuredDocumentation","src":"72:175:25","text":"@title IDAO\n @author Aragon X - 2022-2023\n @notice The interface required for DAOs within the Aragon App DAO framework.\n @custom:security-contact sirt@aragon.org"},"fullyImplemented":false,"id":2538,"linearizedBaseContracts":[2538],"name":"IDAO","nameLocation":"257:4:25","nodeType":"ContractDefinition","nodes":[{"canonicalName":"IDAO.Action","id":2397,"members":[{"constant":false,"id":2392,"mutability":"mutable","name":"to","nameLocation":"604:2:25","nodeType":"VariableDeclaration","scope":2397,"src":"596:10:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2391,"name":"address","nodeType":"ElementaryTypeName","src":"596:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2394,"mutability":"mutable","name":"value","nameLocation":"624:5:25","nodeType":"VariableDeclaration","scope":2397,"src":"616:13:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2393,"name":"uint256","nodeType":"ElementaryTypeName","src":"616:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2396,"mutability":"mutable","name":"data","nameLocation":"645:4:25","nodeType":"VariableDeclaration","scope":2397,"src":"639:10:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":2395,"name":"bytes","nodeType":"ElementaryTypeName","src":"639:5:25","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"name":"Action","nameLocation":"579:6:25","nodeType":"StructDefinition","scope":2538,"src":"572:84:25","visibility":"public"},{"documentation":{"id":2398,"nodeType":"StructuredDocumentation","src":"662:500:25","text":"@notice Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\n @param _where The address of the contract.\n @param _who The address of a EOA or contract to give the permissions.\n @param _permissionId The permission identifier.\n @param _data The optional data passed to the `PermissionCondition` registered.\n @return Returns true if the address has permission, false if not."},"functionSelector":"fdef9106","id":2411,"implemented":false,"kind":"function","modifiers":[],"name":"hasPermission","nameLocation":"1176:13:25","nodeType":"FunctionDefinition","parameters":{"id":2407,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2400,"mutability":"mutable","name":"_where","nameLocation":"1207:6:25","nodeType":"VariableDeclaration","scope":2411,"src":"1199:14:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2399,"name":"address","nodeType":"ElementaryTypeName","src":"1199:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2402,"mutability":"mutable","name":"_who","nameLocation":"1231:4:25","nodeType":"VariableDeclaration","scope":2411,"src":"1223:12:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2401,"name":"address","nodeType":"ElementaryTypeName","src":"1223:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2404,"mutability":"mutable","name":"_permissionId","nameLocation":"1253:13:25","nodeType":"VariableDeclaration","scope":2411,"src":"1245:21:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2403,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1245:7:25","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2406,"mutability":"mutable","name":"_data","nameLocation":"1289:5:25","nodeType":"VariableDeclaration","scope":2411,"src":"1276:18:25","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2405,"name":"bytes","nodeType":"ElementaryTypeName","src":"1276:5:25","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1189:111:25"},"returnParameters":{"id":2410,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2409,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2411,"src":"1324:4:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2408,"name":"bool","nodeType":"ElementaryTypeName","src":"1324:4:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1323:6:25"},"scope":2538,"src":"1167:163:25","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2412,"nodeType":"StructuredDocumentation","src":"1336:125:25","text":"@notice Updates the DAO metadata (e.g., an IPFS hash).\n @param _metadata The IPFS hash of the new metadata object."},"functionSelector":"ee57e36f","id":2417,"implemented":false,"kind":"function","modifiers":[],"name":"setMetadata","nameLocation":"1475:11:25","nodeType":"FunctionDefinition","parameters":{"id":2415,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2414,"mutability":"mutable","name":"_metadata","nameLocation":"1502:9:25","nodeType":"VariableDeclaration","scope":2417,"src":"1487:24:25","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2413,"name":"bytes","nodeType":"ElementaryTypeName","src":"1487:5:25","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1486:26:25"},"returnParameters":{"id":2416,"nodeType":"ParameterList","parameters":[],"src":"1521:0:25"},"scope":2538,"src":"1466:56:25","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"anonymous":false,"documentation":{"id":2418,"nodeType":"StructuredDocumentation","src":"1528:119:25","text":"@notice Emitted when the DAO metadata is updated.\n @param metadata The IPFS hash of the new metadata object."},"eventSelector":"bb39ebb37e60fb5d606ffdb749d2336e56b88e6c88c4bd6513b308f643186eed","id":2422,"name":"MetadataSet","nameLocation":"1658:11:25","nodeType":"EventDefinition","parameters":{"id":2421,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2420,"indexed":false,"mutability":"mutable","name":"metadata","nameLocation":"1676:8:25","nodeType":"VariableDeclaration","scope":2422,"src":"1670:14:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2419,"name":"bytes","nodeType":"ElementaryTypeName","src":"1670:5:25","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1669:16:25"},"src":"1652:34:25"},{"documentation":{"id":2423,"nodeType":"StructuredDocumentation","src":"1692:864:25","text":"@notice Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted.\n @param _callId The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce.\n @param _actions The array of actions.\n @param _allowFailureMap A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\n @return The array of results obtained from the executed actions in `bytes`.\n @return The resulting failure map containing the actions have actually failed."},"functionSelector":"c71bf324","id":2439,"implemented":false,"kind":"function","modifiers":[],"name":"execute","nameLocation":"2570:7:25","nodeType":"FunctionDefinition","parameters":{"id":2432,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2425,"mutability":"mutable","name":"_callId","nameLocation":"2595:7:25","nodeType":"VariableDeclaration","scope":2439,"src":"2587:15:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2424,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2587:7:25","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2429,"mutability":"mutable","name":"_actions","nameLocation":"2628:8:25","nodeType":"VariableDeclaration","scope":2439,"src":"2612:24:25","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Action_$2397_memory_ptr_$dyn_memory_ptr","typeString":"struct IDAO.Action[]"},"typeName":{"baseType":{"id":2427,"nodeType":"UserDefinedTypeName","pathNode":{"id":2426,"name":"Action","nameLocations":["2612:6:25"],"nodeType":"IdentifierPath","referencedDeclaration":2397,"src":"2612:6:25"},"referencedDeclaration":2397,"src":"2612:6:25","typeDescriptions":{"typeIdentifier":"t_struct$_Action_$2397_storage_ptr","typeString":"struct IDAO.Action"}},"id":2428,"nodeType":"ArrayTypeName","src":"2612:8:25","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Action_$2397_storage_$dyn_storage_ptr","typeString":"struct IDAO.Action[]"}},"visibility":"internal"},{"constant":false,"id":2431,"mutability":"mutable","name":"_allowFailureMap","nameLocation":"2654:16:25","nodeType":"VariableDeclaration","scope":2439,"src":"2646:24:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2430,"name":"uint256","nodeType":"ElementaryTypeName","src":"2646:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2577:99:25"},"returnParameters":{"id":2438,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2435,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2439,"src":"2695:14:25","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":2433,"name":"bytes","nodeType":"ElementaryTypeName","src":"2695:5:25","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":2434,"nodeType":"ArrayTypeName","src":"2695:7:25","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"},{"constant":false,"id":2437,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2439,"src":"2711:7:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2436,"name":"uint256","nodeType":"ElementaryTypeName","src":"2711:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2694:25:25"},"scope":2538,"src":"2561:159:25","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"anonymous":false,"documentation":{"id":2440,"nodeType":"StructuredDocumentation","src":"2726:611:25","text":"@notice Emitted when a proposal is executed.\n @param actor The address of the caller.\n @param callId The ID of the call.\n @param actions The array of actions executed.\n @param allowFailureMap The allow failure map encoding which actions are allowed to fail.\n @param failureMap The failure map encoding which actions have failed.\n @param execResults The array with the results of the executed actions.\n @dev The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce."},"eventSelector":"d4e57c2049f004fb297ef78591cd409503ceb6b2c722d7ffed032fc99e5f3b58","id":2457,"name":"Executed","nameLocation":"3348:8:25","nodeType":"EventDefinition","parameters":{"id":2456,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2442,"indexed":true,"mutability":"mutable","name":"actor","nameLocation":"3382:5:25","nodeType":"VariableDeclaration","scope":2457,"src":"3366:21:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2441,"name":"address","nodeType":"ElementaryTypeName","src":"3366:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2444,"indexed":false,"mutability":"mutable","name":"callId","nameLocation":"3405:6:25","nodeType":"VariableDeclaration","scope":2457,"src":"3397:14:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2443,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3397:7:25","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2448,"indexed":false,"mutability":"mutable","name":"actions","nameLocation":"3430:7:25","nodeType":"VariableDeclaration","scope":2457,"src":"3421:16:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Action_$2397_memory_ptr_$dyn_memory_ptr","typeString":"struct IDAO.Action[]"},"typeName":{"baseType":{"id":2446,"nodeType":"UserDefinedTypeName","pathNode":{"id":2445,"name":"Action","nameLocations":["3421:6:25"],"nodeType":"IdentifierPath","referencedDeclaration":2397,"src":"3421:6:25"},"referencedDeclaration":2397,"src":"3421:6:25","typeDescriptions":{"typeIdentifier":"t_struct$_Action_$2397_storage_ptr","typeString":"struct IDAO.Action"}},"id":2447,"nodeType":"ArrayTypeName","src":"3421:8:25","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Action_$2397_storage_$dyn_storage_ptr","typeString":"struct IDAO.Action[]"}},"visibility":"internal"},{"constant":false,"id":2450,"indexed":false,"mutability":"mutable","name":"allowFailureMap","nameLocation":"3455:15:25","nodeType":"VariableDeclaration","scope":2457,"src":"3447:23:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2449,"name":"uint256","nodeType":"ElementaryTypeName","src":"3447:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2452,"indexed":false,"mutability":"mutable","name":"failureMap","nameLocation":"3488:10:25","nodeType":"VariableDeclaration","scope":2457,"src":"3480:18:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2451,"name":"uint256","nodeType":"ElementaryTypeName","src":"3480:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2455,"indexed":false,"mutability":"mutable","name":"execResults","nameLocation":"3516:11:25","nodeType":"VariableDeclaration","scope":2457,"src":"3508:19:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":2453,"name":"bytes","nodeType":"ElementaryTypeName","src":"3508:5:25","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":2454,"nodeType":"ArrayTypeName","src":"3508:7:25","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"}],"src":"3356:177:25"},"src":"3342:192:25"},{"anonymous":false,"documentation":{"id":2458,"nodeType":"StructuredDocumentation","src":"3540:279:25","text":"@notice Emitted when a standard callback is registered.\n @param interfaceId The ID of the interface.\n @param callbackSelector The selector of the callback function.\n @param magicNumber The magic number to be registered for the callback function selector."},"eventSelector":"fc72fd547553f7a663e0048e590afc9c47b56a4242e960f31cf4c62e23d308b9","id":2466,"name":"StandardCallbackRegistered","nameLocation":"3830:26:25","nodeType":"EventDefinition","parameters":{"id":2465,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2460,"indexed":false,"mutability":"mutable","name":"interfaceId","nameLocation":"3873:11:25","nodeType":"VariableDeclaration","scope":2466,"src":"3866:18:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2459,"name":"bytes4","nodeType":"ElementaryTypeName","src":"3866:6:25","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"},{"constant":false,"id":2462,"indexed":false,"mutability":"mutable","name":"callbackSelector","nameLocation":"3901:16:25","nodeType":"VariableDeclaration","scope":2466,"src":"3894:23:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2461,"name":"bytes4","nodeType":"ElementaryTypeName","src":"3894:6:25","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"},{"constant":false,"id":2464,"indexed":false,"mutability":"mutable","name":"magicNumber","nameLocation":"3934:11:25","nodeType":"VariableDeclaration","scope":2466,"src":"3927:18:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2463,"name":"bytes4","nodeType":"ElementaryTypeName","src":"3927:6:25","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"3856:95:25"},"src":"3824:128:25"},{"documentation":{"id":2467,"nodeType":"StructuredDocumentation","src":"3958:298:25","text":"@notice Deposits (native) tokens to the DAO contract with a reference string.\n @param _token The address of the token or address(0) in case of the native token.\n @param _amount The amount of tokens to deposit.\n @param _reference The reference describing the deposit reason."},"functionSelector":"bfe07da6","id":2476,"implemented":false,"kind":"function","modifiers":[],"name":"deposit","nameLocation":"4270:7:25","nodeType":"FunctionDefinition","parameters":{"id":2474,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2469,"mutability":"mutable","name":"_token","nameLocation":"4286:6:25","nodeType":"VariableDeclaration","scope":2476,"src":"4278:14:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2468,"name":"address","nodeType":"ElementaryTypeName","src":"4278:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2471,"mutability":"mutable","name":"_amount","nameLocation":"4302:7:25","nodeType":"VariableDeclaration","scope":2476,"src":"4294:15:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2470,"name":"uint256","nodeType":"ElementaryTypeName","src":"4294:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2473,"mutability":"mutable","name":"_reference","nameLocation":"4327:10:25","nodeType":"VariableDeclaration","scope":2476,"src":"4311:26:25","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string"},"typeName":{"id":2472,"name":"string","nodeType":"ElementaryTypeName","src":"4311:6:25","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"4277:61:25"},"returnParameters":{"id":2475,"nodeType":"ParameterList","parameters":[],"src":"4355:0:25"},"scope":2538,"src":"4261:95:25","stateMutability":"payable","virtual":false,"visibility":"external"},{"anonymous":false,"documentation":{"id":2477,"nodeType":"StructuredDocumentation","src":"4362:297:25","text":"@notice Emitted when a token deposit has been made to the DAO.\n @param sender The address of the sender.\n @param token The address of the deposited token.\n @param amount The amount of tokens deposited.\n @param _reference The reference describing the deposit reason."},"eventSelector":"2bc500cf071be2d1c1458ed6ff484cd4db4345ada8943dee7ff29e7af3558f76","id":2487,"name":"Deposited","nameLocation":"4670:9:25","nodeType":"EventDefinition","parameters":{"id":2486,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2479,"indexed":true,"mutability":"mutable","name":"sender","nameLocation":"4705:6:25","nodeType":"VariableDeclaration","scope":2487,"src":"4689:22:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2478,"name":"address","nodeType":"ElementaryTypeName","src":"4689:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2481,"indexed":true,"mutability":"mutable","name":"token","nameLocation":"4737:5:25","nodeType":"VariableDeclaration","scope":2487,"src":"4721:21:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2480,"name":"address","nodeType":"ElementaryTypeName","src":"4721:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2483,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"4760:6:25","nodeType":"VariableDeclaration","scope":2487,"src":"4752:14:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2482,"name":"uint256","nodeType":"ElementaryTypeName","src":"4752:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2485,"indexed":false,"mutability":"mutable","name":"_reference","nameLocation":"4783:10:25","nodeType":"VariableDeclaration","scope":2487,"src":"4776:17:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2484,"name":"string","nodeType":"ElementaryTypeName","src":"4776:6:25","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"4679:120:25"},"src":"4664:136:25"},{"anonymous":false,"documentation":{"id":2488,"nodeType":"StructuredDocumentation","src":"4806:400:25","text":"@notice Emitted when a native token deposit has been made to the DAO.\n @dev This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).\n @param sender The address of the sender.\n @param amount The amount of native tokens deposited."},"eventSelector":"62c2c8e34665db7c56b2cabd7f5fb9702ccd352ffa8150147e450797e9f8e8f3","id":2494,"name":"NativeTokenDeposited","nameLocation":"5217:20:25","nodeType":"EventDefinition","parameters":{"id":2493,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2490,"indexed":false,"mutability":"mutable","name":"sender","nameLocation":"5246:6:25","nodeType":"VariableDeclaration","scope":2494,"src":"5238:14:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2489,"name":"address","nodeType":"ElementaryTypeName","src":"5238:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2492,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"5262:6:25","nodeType":"VariableDeclaration","scope":2494,"src":"5254:14:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2491,"name":"uint256","nodeType":"ElementaryTypeName","src":"5254:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5237:32:25"},"src":"5211:59:25"},{"documentation":{"id":2495,"nodeType":"StructuredDocumentation","src":"5276:140:25","text":"@notice Setter for the trusted forwarder verifying the meta transaction.\n @param _trustedForwarder The trusted forwarder address."},"functionSelector":"da742228","id":2500,"implemented":false,"kind":"function","modifiers":[],"name":"setTrustedForwarder","nameLocation":"5430:19:25","nodeType":"FunctionDefinition","parameters":{"id":2498,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2497,"mutability":"mutable","name":"_trustedForwarder","nameLocation":"5458:17:25","nodeType":"VariableDeclaration","scope":2500,"src":"5450:25:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2496,"name":"address","nodeType":"ElementaryTypeName","src":"5450:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5449:27:25"},"returnParameters":{"id":2499,"nodeType":"ParameterList","parameters":[],"src":"5485:0:25"},"scope":2538,"src":"5421:65:25","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2501,"nodeType":"StructuredDocumentation","src":"5492:123:25","text":"@notice Getter for the trusted forwarder verifying the meta transaction.\n @return The trusted forwarder address."},"functionSelector":"ce1b815f","id":2506,"implemented":false,"kind":"function","modifiers":[],"name":"getTrustedForwarder","nameLocation":"5629:19:25","nodeType":"FunctionDefinition","parameters":{"id":2502,"nodeType":"ParameterList","parameters":[],"src":"5648:2:25"},"returnParameters":{"id":2505,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2504,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2506,"src":"5674:7:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2503,"name":"address","nodeType":"ElementaryTypeName","src":"5674:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5673:9:25"},"scope":2538,"src":"5620:63:25","stateMutability":"view","virtual":false,"visibility":"external"},{"anonymous":false,"documentation":{"id":2507,"nodeType":"StructuredDocumentation","src":"5689:118:25","text":"@notice Emitted when a new TrustedForwarder is set on the DAO.\n @param forwarder the new forwarder address."},"eventSelector":"d91237492a9e30cd2faf361fc103998a382ff0ec2b1b07dc1cbebb76ae2f1ea2","id":2511,"name":"TrustedForwarderSet","nameLocation":"5818:19:25","nodeType":"EventDefinition","parameters":{"id":2510,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2509,"indexed":false,"mutability":"mutable","name":"forwarder","nameLocation":"5846:9:25","nodeType":"VariableDeclaration","scope":2511,"src":"5838:17:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2508,"name":"address","nodeType":"ElementaryTypeName","src":"5838:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5837:19:25"},"src":"5812:45:25"},{"documentation":{"id":2512,"nodeType":"StructuredDocumentation","src":"5863:378:25","text":"@notice Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\n @param _hash The hash of the data to be signed.\n @param _signature The signature byte array associated with `_hash`.\n @return Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not."},"functionSelector":"1626ba7e","id":2521,"implemented":false,"kind":"function","modifiers":[],"name":"isValidSignature","nameLocation":"6255:16:25","nodeType":"FunctionDefinition","parameters":{"id":2517,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2514,"mutability":"mutable","name":"_hash","nameLocation":"6280:5:25","nodeType":"VariableDeclaration","scope":2521,"src":"6272:13:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2513,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6272:7:25","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2516,"mutability":"mutable","name":"_signature","nameLocation":"6300:10:25","nodeType":"VariableDeclaration","scope":2521,"src":"6287:23:25","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2515,"name":"bytes","nodeType":"ElementaryTypeName","src":"6287:5:25","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6271:40:25"},"returnParameters":{"id":2520,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2519,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2521,"src":"6330:6:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2518,"name":"bytes4","nodeType":"ElementaryTypeName","src":"6330:6:25","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"6329:8:25"},"scope":2538,"src":"6246:92:25","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2522,"nodeType":"StructuredDocumentation","src":"6344:385:25","text":"@notice Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\n @param _interfaceId The ID of the interface.\n @param _callbackSelector The selector of the callback function.\n @param _magicNumber The magic number to be registered for the function signature."},"functionSelector":"c4a50145","id":2531,"implemented":false,"kind":"function","modifiers":[],"name":"registerStandardCallback","nameLocation":"6743:24:25","nodeType":"FunctionDefinition","parameters":{"id":2529,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2524,"mutability":"mutable","name":"_interfaceId","nameLocation":"6784:12:25","nodeType":"VariableDeclaration","scope":2531,"src":"6777:19:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2523,"name":"bytes4","nodeType":"ElementaryTypeName","src":"6777:6:25","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"},{"constant":false,"id":2526,"mutability":"mutable","name":"_callbackSelector","nameLocation":"6813:17:25","nodeType":"VariableDeclaration","scope":2531,"src":"6806:24:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2525,"name":"bytes4","nodeType":"ElementaryTypeName","src":"6806:6:25","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"},{"constant":false,"id":2528,"mutability":"mutable","name":"_magicNumber","nameLocation":"6847:12:25","nodeType":"VariableDeclaration","scope":2531,"src":"6840:19:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2527,"name":"bytes4","nodeType":"ElementaryTypeName","src":"6840:6:25","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"6767:98:25"},"returnParameters":{"id":2530,"nodeType":"ParameterList","parameters":[],"src":"6874:0:25"},"scope":2538,"src":"6734:141:25","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2532,"nodeType":"StructuredDocumentation","src":"6881:158:25","text":"@notice Removed function being left here to not corrupt the IDAO interface ID. Any call will revert.\n @dev Introduced in v1.0.0. Removed in v1.4.0."},"functionSelector":"3e2ab0d9","id":2537,"implemented":false,"kind":"function","modifiers":[],"name":"setSignatureValidator","nameLocation":"7053:21:25","nodeType":"FunctionDefinition","parameters":{"id":2535,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2534,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2537,"src":"7075:7:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2533,"name":"address","nodeType":"ElementaryTypeName","src":"7075:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7074:9:25"},"returnParameters":{"id":2536,"nodeType":"ParameterList","parameters":[],"src":"7092:0:25"},"scope":2538,"src":"7044:49:25","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":2539,"src":"247:6848:25","usedErrors":[]}],"src":"47:7049:25"},"id":25},"src/mocks/plugin/PluginCloneableMock.sol":{"ast":{"absolutePath":"src/mocks/plugin/PluginCloneableMock.sol","exportedSymbols":{"IDAO":[2538],"PluginCloneable":[4351],"PluginCloneableMockBad":[2617],"PluginCloneableMockBuild1":[2567],"PluginCloneableMockBuild2":[2596]},"id":2618,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":2540,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"91:23:26"},{"absolutePath":"src/plugin/PluginCloneable.sol","file":"../../plugin/PluginCloneable.sol","id":2542,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2618,"sourceUnit":4352,"src":"116:65:26","symbolAliases":[{"foreign":{"id":2541,"name":"PluginCloneable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4351,"src":"124:15:26","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/dao/IDAO.sol","file":"../../dao/IDAO.sol","id":2544,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2618,"sourceUnit":2539,"src":"182:40:26","symbolAliases":[{"foreign":{"id":2543,"name":"IDAO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2538,"src":"190:4:26","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":2546,"name":"PluginCloneable","nameLocations":["409:15:26"],"nodeType":"IdentifierPath","referencedDeclaration":4351,"src":"409:15:26"},"id":2547,"nodeType":"InheritanceSpecifier","src":"409:15:26"}],"canonicalName":"PluginCloneableMockBuild1","contractDependencies":[],"contractKind":"contract","documentation":{"id":2545,"nodeType":"StructuredDocumentation","src":"224:147:26","text":"@notice A mock cloneable plugin to be deployed via the minimal proxy pattern.\n v1.1 (Release 1, Build 1)\n @dev DO NOT USE IN PRODUCTION!"},"fullyImplemented":true,"id":2567,"linearizedBaseContracts":[2567,4351,5136,5114,3937,1052,1281,1293,534,4002],"name":"PluginCloneableMockBuild1","nameLocation":"380:25:26","nodeType":"ContractDefinition","nodes":[{"constant":false,"functionSelector":"6accab8c","id":2549,"mutability":"mutable","name":"state1","nameLocation":"446:6:26","nodeType":"VariableDeclaration","scope":2567,"src":"431:21:26","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2548,"name":"uint256","nodeType":"ElementaryTypeName","src":"431:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"body":{"id":2565,"nodeType":"Block","src":"511:65:26","statements":[{"expression":{"arguments":[{"id":2558,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2552,"src":"544:4:26","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}],"id":2557,"name":"__PluginCloneable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4225,"src":"521:22:26","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IDAO_$2538_$returns$__$","typeString":"function (contract IDAO)"}},"id":2559,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"521:28:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2560,"nodeType":"ExpressionStatement","src":"521:28:26"},{"expression":{"id":2563,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2561,"name":"state1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2549,"src":"559:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"31","id":2562,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"568:1:26","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"559:10:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2564,"nodeType":"ExpressionStatement","src":"559:10:26"}]},"functionSelector":"c4d66de8","id":2566,"implemented":true,"kind":"function","modifiers":[{"id":2555,"kind":"modifierInvocation","modifierName":{"id":2554,"name":"initializer","nameLocations":["499:11:26"],"nodeType":"IdentifierPath","referencedDeclaration":436,"src":"499:11:26"},"nodeType":"ModifierInvocation","src":"499:11:26"}],"name":"initialize","nameLocation":"468:10:26","nodeType":"FunctionDefinition","parameters":{"id":2553,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2552,"mutability":"mutable","name":"_dao","nameLocation":"484:4:26","nodeType":"VariableDeclaration","scope":2566,"src":"479:9:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"},"typeName":{"id":2551,"nodeType":"UserDefinedTypeName","pathNode":{"id":2550,"name":"IDAO","nameLocations":["479:4:26"],"nodeType":"IdentifierPath","referencedDeclaration":2538,"src":"479:4:26"},"referencedDeclaration":2538,"src":"479:4:26","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}},"visibility":"internal"}],"src":"478:11:26"},"returnParameters":{"id":2556,"nodeType":"ParameterList","parameters":[],"src":"511:0:26"},"scope":2567,"src":"459:117:26","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":2618,"src":"371:207:26","usedErrors":[]},{"abstract":false,"baseContracts":[{"baseName":{"id":2569,"name":"PluginCloneable","nameLocations":["765:15:26"],"nodeType":"IdentifierPath","referencedDeclaration":4351,"src":"765:15:26"},"id":2570,"nodeType":"InheritanceSpecifier","src":"765:15:26"}],"canonicalName":"PluginCloneableMockBuild2","contractDependencies":[],"contractKind":"contract","documentation":{"id":2568,"nodeType":"StructuredDocumentation","src":"580:147:26","text":"@notice A mock cloneable plugin to be deployed via the minimal proxy pattern.\n v1.1 (Release 1, Build 2)\n @dev DO NOT USE IN PRODUCTION!"},"fullyImplemented":true,"id":2596,"linearizedBaseContracts":[2596,4351,5136,5114,3937,1052,1281,1293,534,4002],"name":"PluginCloneableMockBuild2","nameLocation":"736:25:26","nodeType":"ContractDefinition","nodes":[{"constant":false,"functionSelector":"6accab8c","id":2572,"mutability":"mutable","name":"state1","nameLocation":"802:6:26","nodeType":"VariableDeclaration","scope":2596,"src":"787:21:26","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2571,"name":"uint256","nodeType":"ElementaryTypeName","src":"787:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"constant":false,"functionSelector":"efe51cca","id":2574,"mutability":"mutable","name":"state2","nameLocation":"829:6:26","nodeType":"VariableDeclaration","scope":2596,"src":"814:21:26","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2573,"name":"uint256","nodeType":"ElementaryTypeName","src":"814:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"body":{"id":2594,"nodeType":"Block","src":"894:85:26","statements":[{"expression":{"arguments":[{"id":2583,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2577,"src":"927:4:26","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}],"id":2582,"name":"__PluginCloneable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4225,"src":"904:22:26","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IDAO_$2538_$returns$__$","typeString":"function (contract IDAO)"}},"id":2584,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"904:28:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2585,"nodeType":"ExpressionStatement","src":"904:28:26"},{"expression":{"id":2588,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2586,"name":"state1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2572,"src":"942:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"31","id":2587,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"951:1:26","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"942:10:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2589,"nodeType":"ExpressionStatement","src":"942:10:26"},{"expression":{"id":2592,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2590,"name":"state2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2574,"src":"962:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"32","id":2591,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"971:1:26","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"962:10:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2593,"nodeType":"ExpressionStatement","src":"962:10:26"}]},"functionSelector":"c4d66de8","id":2595,"implemented":true,"kind":"function","modifiers":[{"id":2580,"kind":"modifierInvocation","modifierName":{"id":2579,"name":"initializer","nameLocations":["882:11:26"],"nodeType":"IdentifierPath","referencedDeclaration":436,"src":"882:11:26"},"nodeType":"ModifierInvocation","src":"882:11:26"}],"name":"initialize","nameLocation":"851:10:26","nodeType":"FunctionDefinition","parameters":{"id":2578,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2577,"mutability":"mutable","name":"_dao","nameLocation":"867:4:26","nodeType":"VariableDeclaration","scope":2595,"src":"862:9:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"},"typeName":{"id":2576,"nodeType":"UserDefinedTypeName","pathNode":{"id":2575,"name":"IDAO","nameLocations":["862:4:26"],"nodeType":"IdentifierPath","referencedDeclaration":2538,"src":"862:4:26"},"referencedDeclaration":2538,"src":"862:4:26","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}},"visibility":"internal"}],"src":"861:11:26"},"returnParameters":{"id":2581,"nodeType":"ParameterList","parameters":[],"src":"894:0:26"},"scope":2596,"src":"842:137:26","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":2618,"src":"727:254:26","usedErrors":[]},{"abstract":false,"baseContracts":[{"baseName":{"id":2598,"name":"PluginCloneable","nameLocations":["1122:15:26"],"nodeType":"IdentifierPath","referencedDeclaration":4351,"src":"1122:15:26"},"id":2599,"nodeType":"InheritanceSpecifier","src":"1122:15:26"}],"canonicalName":"PluginCloneableMockBad","contractDependencies":[],"contractKind":"contract","documentation":{"id":2597,"nodeType":"StructuredDocumentation","src":"983:104:26","text":"@notice A mock cloneable plugin missing an initializer function.\n @dev DO NOT USE IN PRODUCTION!"},"fullyImplemented":true,"id":2617,"linearizedBaseContracts":[2617,4351,5136,5114,3937,1052,1281,1293,534,4002],"name":"PluginCloneableMockBad","nameLocation":"1096:22:26","nodeType":"ContractDefinition","nodes":[{"constant":false,"functionSelector":"6accab8c","id":2601,"mutability":"mutable","name":"state1","nameLocation":"1159:6:26","nodeType":"VariableDeclaration","scope":2617,"src":"1144:21:26","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2600,"name":"uint256","nodeType":"ElementaryTypeName","src":"1144:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"body":{"id":2615,"nodeType":"Block","src":"1218:65:26","statements":[{"expression":{"arguments":[{"id":2608,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2604,"src":"1251:4:26","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}],"id":2607,"name":"__PluginCloneable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4225,"src":"1228:22:26","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IDAO_$2538_$returns$__$","typeString":"function (contract IDAO)"}},"id":2609,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1228:28:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2610,"nodeType":"ExpressionStatement","src":"1228:28:26"},{"expression":{"id":2613,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2611,"name":"state1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2601,"src":"1266:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"31","id":2612,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1275:1:26","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1266:10:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2614,"nodeType":"ExpressionStatement","src":"1266:10:26"}]},"functionSelector":"8883bbd7","id":2616,"implemented":true,"kind":"function","modifiers":[],"name":"notAnInitializer","nameLocation":"1181:16:26","nodeType":"FunctionDefinition","parameters":{"id":2605,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2604,"mutability":"mutable","name":"_dao","nameLocation":"1203:4:26","nodeType":"VariableDeclaration","scope":2616,"src":"1198:9:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"},"typeName":{"id":2603,"nodeType":"UserDefinedTypeName","pathNode":{"id":2602,"name":"IDAO","nameLocations":["1198:4:26"],"nodeType":"IdentifierPath","referencedDeclaration":2538,"src":"1198:4:26"},"referencedDeclaration":2538,"src":"1198:4:26","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}},"visibility":"internal"}],"src":"1197:11:26"},"returnParameters":{"id":2606,"nodeType":"ParameterList","parameters":[],"src":"1218:0:26"},"scope":2617,"src":"1172:111:26","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":2618,"src":"1087:198:26","usedErrors":[]}],"src":"91:1195:26"},"id":26},"src/mocks/plugin/PluginCloneableSetupMock.sol":{"ast":{"absolutePath":"src/mocks/plugin/PluginCloneableSetupMock.sol","exportedSymbols":{"IDAO":[2538],"IPluginSetup":[4859],"PermissionLib":[3814],"PluginCloneableMockBuild1":[2567],"PluginCloneableMockBuild2":[2596],"PluginCloneableSetupMockBuild1":[2740],"PluginCloneableSetupMockBuild2":[2845],"PluginSetup":[4957],"ProxyLib":[5102],"mockHelpers":[3108],"mockPermissions":[3069]},"id":2846,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":2619,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"91:23:27"},{"absolutePath":"src/permission/PermissionLib.sol","file":"../../permission/PermissionLib.sol","id":2621,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2846,"sourceUnit":3815,"src":"116:65:27","symbolAliases":[{"foreign":{"id":2620,"name":"PermissionLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3814,"src":"124:13:27","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/plugin/setup/IPluginSetup.sol","file":"../../plugin/setup/IPluginSetup.sol","id":2623,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2846,"sourceUnit":4860,"src":"182:65:27","symbolAliases":[{"foreign":{"id":2622,"name":"IPluginSetup","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4859,"src":"190:12:27","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/plugin/setup/PluginSetup.sol","file":"../../plugin/setup/PluginSetup.sol","id":2625,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2846,"sourceUnit":4958,"src":"248:63:27","symbolAliases":[{"foreign":{"id":2624,"name":"PluginSetup","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4957,"src":"256:11:27","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/utils/deployment/ProxyLib.sol","file":"../../utils/deployment/ProxyLib.sol","id":2627,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2846,"sourceUnit":5103,"src":"312:61:27","symbolAliases":[{"foreign":{"id":2626,"name":"ProxyLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5102,"src":"320:8:27","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/dao/IDAO.sol","file":"../../dao/IDAO.sol","id":2629,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2846,"sourceUnit":2539,"src":"374:40:27","symbolAliases":[{"foreign":{"id":2628,"name":"IDAO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2538,"src":"382:4:27","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/mocks/plugin/PluginSetupMockData.sol","file":"./PluginSetupMockData.sol","id":2632,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2846,"sourceUnit":3109,"src":"415:71:27","symbolAliases":[{"foreign":{"id":2630,"name":"mockPermissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3069,"src":"423:15:27","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":2631,"name":"mockHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3108,"src":"440:11:27","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/mocks/plugin/PluginCloneableMock.sol","file":"./PluginCloneableMock.sol","id":2635,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2846,"sourceUnit":2618,"src":"487:95:27","symbolAliases":[{"foreign":{"id":2633,"name":"PluginCloneableMockBuild1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2567,"src":"495:25:27","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":2634,"name":"PluginCloneableMockBuild2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2596,"src":"522:25:27","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":2637,"name":"PluginSetup","nameLocations":["792:11:27"],"nodeType":"IdentifierPath","referencedDeclaration":4957,"src":"792:11:27"},"id":2638,"nodeType":"InheritanceSpecifier","src":"792:11:27"}],"canonicalName":"PluginCloneableSetupMockBuild1","contractDependencies":[2567],"contractKind":"contract","documentation":{"id":2636,"nodeType":"StructuredDocumentation","src":"584:165:27","text":"@notice A mock plugin setup of a cloneable plugin to be deployed via the minimal proxy pattern.\n v1.1 (Release 1, Build 1)\n @dev DO NOT USE IN PRODUCTION!"},"fullyImplemented":true,"id":2740,"linearizedBaseContracts":[2740,4957,5136,5114,4859,2375,2387],"name":"PluginCloneableSetupMockBuild1","nameLocation":"758:30:27","nodeType":"ContractDefinition","nodes":[{"global":false,"id":2641,"libraryName":{"id":2639,"name":"ProxyLib","nameLocations":["816:8:27"],"nodeType":"IdentifierPath","referencedDeclaration":5102,"src":"816:8:27"},"nodeType":"UsingForDirective","src":"810:27:27","typeName":{"id":2640,"name":"address","nodeType":"ElementaryTypeName","src":"829:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},{"constant":true,"id":2644,"mutability":"constant","name":"THIS_BUILD","nameLocation":"868:10:27","nodeType":"VariableDeclaration","scope":2740,"src":"843:39:27","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":2642,"name":"uint16","nodeType":"ElementaryTypeName","src":"843:6:27","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"value":{"hexValue":"31","id":2643,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"881:1:27","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"visibility":"internal"},{"body":{"id":2656,"nodeType":"Block","src":"957:2:27","statements":[]},"id":2657,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":2651,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"NewExpression","src":"923:29:27","typeDescriptions":{"typeIdentifier":"t_function_creation_nonpayable$__$returns$_t_contract$_PluginCloneableMockBuild1_$2567_$","typeString":"function () returns (contract PluginCloneableMockBuild1)"},"typeName":{"id":2650,"nodeType":"UserDefinedTypeName","pathNode":{"id":2649,"name":"PluginCloneableMockBuild1","nameLocations":["927:25:27"],"nodeType":"IdentifierPath","referencedDeclaration":2567,"src":"927:25:27"},"referencedDeclaration":2567,"src":"927:25:27","typeDescriptions":{"typeIdentifier":"t_contract$_PluginCloneableMockBuild1_$2567","typeString":"contract PluginCloneableMockBuild1"}}},"id":2652,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"923:31:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_PluginCloneableMockBuild1_$2567","typeString":"contract PluginCloneableMockBuild1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_PluginCloneableMockBuild1_$2567","typeString":"contract PluginCloneableMockBuild1"}],"id":2648,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"915:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2647,"name":"address","nodeType":"ElementaryTypeName","src":"915:7:27","typeDescriptions":{}}},"id":2653,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"915:40:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":2654,"kind":"baseConstructorSpecifier","modifierName":{"id":2646,"name":"PluginSetup","nameLocations":["903:11:27"],"nodeType":"IdentifierPath","referencedDeclaration":4957,"src":"903:11:27"},"nodeType":"ModifierInvocation","src":"903:53:27"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":2645,"nodeType":"ParameterList","parameters":[],"src":"900:2:27"},"returnParameters":{"id":2655,"nodeType":"ParameterList","parameters":[],"src":"957:0:27"},"scope":2740,"src":"889:70:27","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[4823],"body":{"id":2710,"nodeType":"Block","src":"1155:381:27","statements":[{"assignments":[2671],"declarations":[{"constant":false,"id":2671,"mutability":"mutable","name":"initData","nameLocation":"1178:8:27","nodeType":"VariableDeclaration","scope":2710,"src":"1165:21:27","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2670,"name":"bytes","nodeType":"ElementaryTypeName","src":"1165:5:27","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":2681,"initialValue":{"arguments":[{"expression":{"id":2674,"name":"PluginCloneableMockBuild1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2567,"src":"1204:25:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PluginCloneableMockBuild1_$2567_$","typeString":"type(contract PluginCloneableMockBuild1)"}},"id":2675,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1230:10:27","memberName":"initialize","nodeType":"MemberAccess","referencedDeclaration":2566,"src":"1204:36:27","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_contract$_IDAO_$2538_$returns$__$","typeString":"function PluginCloneableMockBuild1.initialize(contract IDAO)"}},{"components":[{"arguments":[{"id":2677,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2660,"src":"1248:4:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2676,"name":"IDAO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2538,"src":"1243:4:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IDAO_$2538_$","typeString":"type(contract IDAO)"}},"id":2678,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1243:10:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}}],"id":2679,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1242:12:27","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_nonpayable$_t_contract$_IDAO_$2538_$returns$__$","typeString":"function PluginCloneableMockBuild1.initialize(contract IDAO)"},{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}],"expression":{"id":2672,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967295,"src":"1189:3:27","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":2673,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1193:10:27","memberName":"encodeCall","nodeType":"MemberAccess","src":"1189:14:27","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":2680,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1189:66:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"1165:90:27"},{"expression":{"id":2688,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2682,"name":"plugin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2665,"src":"1265:6:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":2686,"name":"initData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2671,"src":"1310:8:27","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":2683,"name":"implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4956,"src":"1274:14:27","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":2684,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1274:16:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2685,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1291:18:27","memberName":"deployMinimalProxy","nodeType":"MemberAccess","referencedDeclaration":5101,"src":"1274:35:27","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_address_$bound_to$_t_address_$","typeString":"function (address,bytes memory) returns (address)"}},"id":2687,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1274:45:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1265:54:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2689,"nodeType":"ExpressionStatement","src":"1265:54:27"},{"expression":{"id":2696,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":2690,"name":"preparedSetupData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2668,"src":"1329:17:27","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$4802_memory_ptr","typeString":"struct IPluginSetup.PreparedSetupData memory"}},"id":2692,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1347:7:27","memberName":"helpers","nodeType":"MemberAccess","referencedDeclaration":4797,"src":"1329:25:27","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":2694,"name":"THIS_BUILD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2644,"src":"1369:10:27","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"}],"id":2693,"name":"mockHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3108,"src":"1357:11:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$returns$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"function (uint160) pure returns (address[] memory)"}},"id":2695,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1357:23:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"src":"1329:51:27","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":2697,"nodeType":"ExpressionStatement","src":"1329:51:27"},{"expression":{"id":2708,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":2698,"name":"preparedSetupData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2668,"src":"1390:17:27","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$4802_memory_ptr","typeString":"struct IPluginSetup.PreparedSetupData memory"}},"id":2700,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1408:11:27","memberName":"permissions","nodeType":"MemberAccess","referencedDeclaration":4801,"src":"1390:29:27","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"hexValue":"30","id":2702,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1451:1:27","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":2703,"name":"THIS_BUILD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2644,"src":"1466:10:27","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"expression":{"expression":{"id":2704,"name":"PermissionLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3814,"src":"1490:13:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PermissionLib_$3814_$","typeString":"type(library PermissionLib)"}},"id":2705,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1504:9:27","memberName":"Operation","nodeType":"MemberAccess","referencedDeclaration":3793,"src":"1490:23:27","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Operation_$3793_$","typeString":"type(enum PermissionLib.Operation)"}},"id":2706,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1514:5:27","memberName":"Grant","nodeType":"MemberAccess","referencedDeclaration":3790,"src":"1490:29:27","typeDescriptions":{"typeIdentifier":"t_enum$_Operation_$3793","typeString":"enum PermissionLib.Operation"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_enum$_Operation_$3793","typeString":"enum PermissionLib.Operation"}],"id":2701,"name":"mockPermissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3069,"src":"1422:15:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_enum$_Operation_$3793_$returns$_t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint160,uint160,enum PermissionLib.Operation) pure returns (struct PermissionLib.MultiTargetPermission memory[] memory)"}},"id":2707,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1422:107:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"src":"1390:139:27","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"id":2709,"nodeType":"ExpressionStatement","src":"1390:139:27"}]},"documentation":{"id":2658,"nodeType":"StructuredDocumentation","src":"965:28:27","text":"@inheritdoc IPluginSetup"},"functionSelector":"f10832f1","id":2711,"implemented":true,"kind":"function","modifiers":[],"name":"prepareInstallation","nameLocation":"1007:19:27","nodeType":"FunctionDefinition","parameters":{"id":2663,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2660,"mutability":"mutable","name":"_dao","nameLocation":"1044:4:27","nodeType":"VariableDeclaration","scope":2711,"src":"1036:12:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2659,"name":"address","nodeType":"ElementaryTypeName","src":"1036:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2662,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2711,"src":"1058:12:27","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2661,"name":"bytes","nodeType":"ElementaryTypeName","src":"1058:5:27","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1026:50:27"},"returnParameters":{"id":2669,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2665,"mutability":"mutable","name":"plugin","nameLocation":"1103:6:27","nodeType":"VariableDeclaration","scope":2711,"src":"1095:14:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2664,"name":"address","nodeType":"ElementaryTypeName","src":"1095:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2668,"mutability":"mutable","name":"preparedSetupData","nameLocation":"1136:17:27","nodeType":"VariableDeclaration","scope":2711,"src":"1111:42:27","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$4802_memory_ptr","typeString":"struct IPluginSetup.PreparedSetupData"},"typeName":{"id":2667,"nodeType":"UserDefinedTypeName","pathNode":{"id":2666,"name":"PreparedSetupData","nameLocations":["1111:17:27"],"nodeType":"IdentifierPath","referencedDeclaration":4802,"src":"1111:17:27"},"referencedDeclaration":4802,"src":"1111:17:27","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$4802_storage_ptr","typeString":"struct IPluginSetup.PreparedSetupData"}},"visibility":"internal"}],"src":"1094:60:27"},"scope":2740,"src":"998:538:27","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[4852],"body":{"id":2738,"nodeType":"Block","src":"1755:119:27","statements":[{"expression":{"components":[{"id":2724,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2714,"src":"1766:4:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2725,"name":"_payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2717,"src":"1772:8:27","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$4810_calldata_ptr","typeString":"struct IPluginSetup.SetupPayload calldata"}}],"id":2726,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1765:16:27","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_struct$_SetupPayload_$4810_calldata_ptr_$","typeString":"tuple(address,struct IPluginSetup.SetupPayload calldata)"}},"id":2727,"nodeType":"ExpressionStatement","src":"1765:16:27"},{"expression":{"id":2736,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2728,"name":"permissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2722,"src":"1791:11:27","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"hexValue":"30","id":2730,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1821:1:27","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":2731,"name":"THIS_BUILD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2644,"src":"1824:10:27","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"expression":{"expression":{"id":2732,"name":"PermissionLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3814,"src":"1836:13:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PermissionLib_$3814_$","typeString":"type(library PermissionLib)"}},"id":2733,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1850:9:27","memberName":"Operation","nodeType":"MemberAccess","referencedDeclaration":3793,"src":"1836:23:27","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Operation_$3793_$","typeString":"type(enum PermissionLib.Operation)"}},"id":2734,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1860:6:27","memberName":"Revoke","nodeType":"MemberAccess","referencedDeclaration":3791,"src":"1836:30:27","typeDescriptions":{"typeIdentifier":"t_enum$_Operation_$3793","typeString":"enum PermissionLib.Operation"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_enum$_Operation_$3793","typeString":"enum PermissionLib.Operation"}],"id":2729,"name":"mockPermissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3069,"src":"1805:15:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_enum$_Operation_$3793_$returns$_t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint160,uint160,enum PermissionLib.Operation) pure returns (struct PermissionLib.MultiTargetPermission memory[] memory)"}},"id":2735,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1805:62:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"src":"1791:76:27","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"id":2737,"nodeType":"ExpressionStatement","src":"1791:76:27"}]},"documentation":{"id":2712,"nodeType":"StructuredDocumentation","src":"1542:28:27","text":"@inheritdoc IPluginSetup"},"functionSelector":"9cb0a124","id":2739,"implemented":true,"kind":"function","modifiers":[],"name":"prepareUninstallation","nameLocation":"1584:21:27","nodeType":"FunctionDefinition","parameters":{"id":2718,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2714,"mutability":"mutable","name":"_dao","nameLocation":"1623:4:27","nodeType":"VariableDeclaration","scope":2739,"src":"1615:12:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2713,"name":"address","nodeType":"ElementaryTypeName","src":"1615:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2717,"mutability":"mutable","name":"_payload","nameLocation":"1659:8:27","nodeType":"VariableDeclaration","scope":2739,"src":"1637:30:27","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$4810_calldata_ptr","typeString":"struct IPluginSetup.SetupPayload"},"typeName":{"id":2716,"nodeType":"UserDefinedTypeName","pathNode":{"id":2715,"name":"SetupPayload","nameLocations":["1637:12:27"],"nodeType":"IdentifierPath","referencedDeclaration":4810,"src":"1637:12:27"},"referencedDeclaration":4810,"src":"1637:12:27","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$4810_storage_ptr","typeString":"struct IPluginSetup.SetupPayload"}},"visibility":"internal"}],"src":"1605:68:27"},"returnParameters":{"id":2723,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2722,"mutability":"mutable","name":"permissions","nameLocation":"1742:11:27","nodeType":"VariableDeclaration","scope":2739,"src":"1697:56:27","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission[]"},"typeName":{"baseType":{"id":2720,"nodeType":"UserDefinedTypeName","pathNode":{"id":2719,"name":"PermissionLib.MultiTargetPermission","nameLocations":["1697:13:27","1711:21:27"],"nodeType":"IdentifierPath","referencedDeclaration":3813,"src":"1697:35:27"},"referencedDeclaration":3813,"src":"1697:35:27","typeDescriptions":{"typeIdentifier":"t_struct$_MultiTargetPermission_$3813_storage_ptr","typeString":"struct PermissionLib.MultiTargetPermission"}},"id":2721,"nodeType":"ArrayTypeName","src":"1697:37:27","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_storage_$dyn_storage_ptr","typeString":"struct PermissionLib.MultiTargetPermission[]"}},"visibility":"internal"}],"src":"1696:58:27"},"scope":2740,"src":"1575:299:27","stateMutability":"pure","virtual":false,"visibility":"external"}],"scope":2846,"src":"749:1127:27","usedErrors":[2999,4882]},{"abstract":false,"baseContracts":[{"baseName":{"id":2742,"name":"PluginSetup","nameLocations":["2086:11:27"],"nodeType":"IdentifierPath","referencedDeclaration":4957,"src":"2086:11:27"},"id":2743,"nodeType":"InheritanceSpecifier","src":"2086:11:27"}],"canonicalName":"PluginCloneableSetupMockBuild2","contractDependencies":[2596],"contractKind":"contract","documentation":{"id":2741,"nodeType":"StructuredDocumentation","src":"1878:165:27","text":"@notice A mock plugin setup of a cloneable plugin to be deployed via the minimal proxy pattern.\n v1.2 (Release 1, Build 2)\n @dev DO NOT USE IN PRODUCTION!"},"fullyImplemented":true,"id":2845,"linearizedBaseContracts":[2845,4957,5136,5114,4859,2375,2387],"name":"PluginCloneableSetupMockBuild2","nameLocation":"2052:30:27","nodeType":"ContractDefinition","nodes":[{"global":false,"id":2746,"libraryName":{"id":2744,"name":"ProxyLib","nameLocations":["2110:8:27"],"nodeType":"IdentifierPath","referencedDeclaration":5102,"src":"2110:8:27"},"nodeType":"UsingForDirective","src":"2104:27:27","typeName":{"id":2745,"name":"address","nodeType":"ElementaryTypeName","src":"2123:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},{"constant":true,"id":2749,"mutability":"constant","name":"THIS_BUILD","nameLocation":"2162:10:27","nodeType":"VariableDeclaration","scope":2845,"src":"2137:39:27","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":2747,"name":"uint16","nodeType":"ElementaryTypeName","src":"2137:6:27","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"value":{"hexValue":"32","id":2748,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2175:1:27","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"visibility":"internal"},{"body":{"id":2761,"nodeType":"Block","src":"2251:2:27","statements":[]},"id":2762,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":2756,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"NewExpression","src":"2217:29:27","typeDescriptions":{"typeIdentifier":"t_function_creation_nonpayable$__$returns$_t_contract$_PluginCloneableMockBuild2_$2596_$","typeString":"function () returns (contract PluginCloneableMockBuild2)"},"typeName":{"id":2755,"nodeType":"UserDefinedTypeName","pathNode":{"id":2754,"name":"PluginCloneableMockBuild2","nameLocations":["2221:25:27"],"nodeType":"IdentifierPath","referencedDeclaration":2596,"src":"2221:25:27"},"referencedDeclaration":2596,"src":"2221:25:27","typeDescriptions":{"typeIdentifier":"t_contract$_PluginCloneableMockBuild2_$2596","typeString":"contract PluginCloneableMockBuild2"}}},"id":2757,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2217:31:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_PluginCloneableMockBuild2_$2596","typeString":"contract PluginCloneableMockBuild2"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_PluginCloneableMockBuild2_$2596","typeString":"contract PluginCloneableMockBuild2"}],"id":2753,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2209:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2752,"name":"address","nodeType":"ElementaryTypeName","src":"2209:7:27","typeDescriptions":{}}},"id":2758,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2209:40:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":2759,"kind":"baseConstructorSpecifier","modifierName":{"id":2751,"name":"PluginSetup","nameLocations":["2197:11:27"],"nodeType":"IdentifierPath","referencedDeclaration":4957,"src":"2197:11:27"},"nodeType":"ModifierInvocation","src":"2197:53:27"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":2750,"nodeType":"ParameterList","parameters":[],"src":"2194:2:27"},"returnParameters":{"id":2760,"nodeType":"ParameterList","parameters":[],"src":"2251:0:27"},"scope":2845,"src":"2183:70:27","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[4823],"body":{"id":2815,"nodeType":"Block","src":"2449:381:27","statements":[{"assignments":[2776],"declarations":[{"constant":false,"id":2776,"mutability":"mutable","name":"initData","nameLocation":"2472:8:27","nodeType":"VariableDeclaration","scope":2815,"src":"2459:21:27","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2775,"name":"bytes","nodeType":"ElementaryTypeName","src":"2459:5:27","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":2786,"initialValue":{"arguments":[{"expression":{"id":2779,"name":"PluginCloneableMockBuild2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2596,"src":"2498:25:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PluginCloneableMockBuild2_$2596_$","typeString":"type(contract PluginCloneableMockBuild2)"}},"id":2780,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2524:10:27","memberName":"initialize","nodeType":"MemberAccess","referencedDeclaration":2595,"src":"2498:36:27","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_contract$_IDAO_$2538_$returns$__$","typeString":"function PluginCloneableMockBuild2.initialize(contract IDAO)"}},{"components":[{"arguments":[{"id":2782,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2765,"src":"2542:4:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2781,"name":"IDAO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2538,"src":"2537:4:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IDAO_$2538_$","typeString":"type(contract IDAO)"}},"id":2783,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2537:10:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}}],"id":2784,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2536:12:27","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_nonpayable$_t_contract$_IDAO_$2538_$returns$__$","typeString":"function PluginCloneableMockBuild2.initialize(contract IDAO)"},{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}],"expression":{"id":2777,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967295,"src":"2483:3:27","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":2778,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2487:10:27","memberName":"encodeCall","nodeType":"MemberAccess","src":"2483:14:27","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":2785,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2483:66:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"2459:90:27"},{"expression":{"id":2793,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2787,"name":"plugin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2770,"src":"2559:6:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":2791,"name":"initData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2776,"src":"2604:8:27","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":2788,"name":"implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4956,"src":"2568:14:27","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":2789,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2568:16:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2790,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2585:18:27","memberName":"deployMinimalProxy","nodeType":"MemberAccess","referencedDeclaration":5101,"src":"2568:35:27","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_address_$bound_to$_t_address_$","typeString":"function (address,bytes memory) returns (address)"}},"id":2792,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2568:45:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2559:54:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2794,"nodeType":"ExpressionStatement","src":"2559:54:27"},{"expression":{"id":2801,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":2795,"name":"preparedSetupData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2773,"src":"2623:17:27","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$4802_memory_ptr","typeString":"struct IPluginSetup.PreparedSetupData memory"}},"id":2797,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"2641:7:27","memberName":"helpers","nodeType":"MemberAccess","referencedDeclaration":4797,"src":"2623:25:27","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":2799,"name":"THIS_BUILD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2749,"src":"2663:10:27","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"}],"id":2798,"name":"mockHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3108,"src":"2651:11:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$returns$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"function (uint160) pure returns (address[] memory)"}},"id":2800,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2651:23:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"src":"2623:51:27","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":2802,"nodeType":"ExpressionStatement","src":"2623:51:27"},{"expression":{"id":2813,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":2803,"name":"preparedSetupData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2773,"src":"2684:17:27","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$4802_memory_ptr","typeString":"struct IPluginSetup.PreparedSetupData memory"}},"id":2805,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"2702:11:27","memberName":"permissions","nodeType":"MemberAccess","referencedDeclaration":4801,"src":"2684:29:27","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"hexValue":"30","id":2807,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2745:1:27","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":2808,"name":"THIS_BUILD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2749,"src":"2760:10:27","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"expression":{"expression":{"id":2809,"name":"PermissionLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3814,"src":"2784:13:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PermissionLib_$3814_$","typeString":"type(library PermissionLib)"}},"id":2810,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2798:9:27","memberName":"Operation","nodeType":"MemberAccess","referencedDeclaration":3793,"src":"2784:23:27","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Operation_$3793_$","typeString":"type(enum PermissionLib.Operation)"}},"id":2811,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2808:5:27","memberName":"Grant","nodeType":"MemberAccess","referencedDeclaration":3790,"src":"2784:29:27","typeDescriptions":{"typeIdentifier":"t_enum$_Operation_$3793","typeString":"enum PermissionLib.Operation"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_enum$_Operation_$3793","typeString":"enum PermissionLib.Operation"}],"id":2806,"name":"mockPermissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3069,"src":"2716:15:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_enum$_Operation_$3793_$returns$_t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint160,uint160,enum PermissionLib.Operation) pure returns (struct PermissionLib.MultiTargetPermission memory[] memory)"}},"id":2812,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2716:107:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"src":"2684:139:27","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"id":2814,"nodeType":"ExpressionStatement","src":"2684:139:27"}]},"documentation":{"id":2763,"nodeType":"StructuredDocumentation","src":"2259:28:27","text":"@inheritdoc IPluginSetup"},"functionSelector":"f10832f1","id":2816,"implemented":true,"kind":"function","modifiers":[],"name":"prepareInstallation","nameLocation":"2301:19:27","nodeType":"FunctionDefinition","parameters":{"id":2768,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2765,"mutability":"mutable","name":"_dao","nameLocation":"2338:4:27","nodeType":"VariableDeclaration","scope":2816,"src":"2330:12:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2764,"name":"address","nodeType":"ElementaryTypeName","src":"2330:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2767,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2816,"src":"2352:12:27","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2766,"name":"bytes","nodeType":"ElementaryTypeName","src":"2352:5:27","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2320:50:27"},"returnParameters":{"id":2774,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2770,"mutability":"mutable","name":"plugin","nameLocation":"2397:6:27","nodeType":"VariableDeclaration","scope":2816,"src":"2389:14:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2769,"name":"address","nodeType":"ElementaryTypeName","src":"2389:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2773,"mutability":"mutable","name":"preparedSetupData","nameLocation":"2430:17:27","nodeType":"VariableDeclaration","scope":2816,"src":"2405:42:27","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$4802_memory_ptr","typeString":"struct IPluginSetup.PreparedSetupData"},"typeName":{"id":2772,"nodeType":"UserDefinedTypeName","pathNode":{"id":2771,"name":"PreparedSetupData","nameLocations":["2405:17:27"],"nodeType":"IdentifierPath","referencedDeclaration":4802,"src":"2405:17:27"},"referencedDeclaration":4802,"src":"2405:17:27","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$4802_storage_ptr","typeString":"struct IPluginSetup.PreparedSetupData"}},"visibility":"internal"}],"src":"2388:60:27"},"scope":2845,"src":"2292:538:27","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[4852],"body":{"id":2843,"nodeType":"Block","src":"3049:119:27","statements":[{"expression":{"components":[{"id":2829,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2819,"src":"3060:4:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2830,"name":"_payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2822,"src":"3066:8:27","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$4810_calldata_ptr","typeString":"struct IPluginSetup.SetupPayload calldata"}}],"id":2831,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3059:16:27","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_struct$_SetupPayload_$4810_calldata_ptr_$","typeString":"tuple(address,struct IPluginSetup.SetupPayload calldata)"}},"id":2832,"nodeType":"ExpressionStatement","src":"3059:16:27"},{"expression":{"id":2841,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2833,"name":"permissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2827,"src":"3085:11:27","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"hexValue":"30","id":2835,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3115:1:27","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":2836,"name":"THIS_BUILD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2749,"src":"3118:10:27","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"expression":{"expression":{"id":2837,"name":"PermissionLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3814,"src":"3130:13:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PermissionLib_$3814_$","typeString":"type(library PermissionLib)"}},"id":2838,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3144:9:27","memberName":"Operation","nodeType":"MemberAccess","referencedDeclaration":3793,"src":"3130:23:27","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Operation_$3793_$","typeString":"type(enum PermissionLib.Operation)"}},"id":2839,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3154:6:27","memberName":"Revoke","nodeType":"MemberAccess","referencedDeclaration":3791,"src":"3130:30:27","typeDescriptions":{"typeIdentifier":"t_enum$_Operation_$3793","typeString":"enum PermissionLib.Operation"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_enum$_Operation_$3793","typeString":"enum PermissionLib.Operation"}],"id":2834,"name":"mockPermissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3069,"src":"3099:15:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_enum$_Operation_$3793_$returns$_t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint160,uint160,enum PermissionLib.Operation) pure returns (struct PermissionLib.MultiTargetPermission memory[] memory)"}},"id":2840,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3099:62:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"src":"3085:76:27","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"id":2842,"nodeType":"ExpressionStatement","src":"3085:76:27"}]},"documentation":{"id":2817,"nodeType":"StructuredDocumentation","src":"2836:28:27","text":"@inheritdoc IPluginSetup"},"functionSelector":"9cb0a124","id":2844,"implemented":true,"kind":"function","modifiers":[],"name":"prepareUninstallation","nameLocation":"2878:21:27","nodeType":"FunctionDefinition","parameters":{"id":2823,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2819,"mutability":"mutable","name":"_dao","nameLocation":"2917:4:27","nodeType":"VariableDeclaration","scope":2844,"src":"2909:12:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2818,"name":"address","nodeType":"ElementaryTypeName","src":"2909:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2822,"mutability":"mutable","name":"_payload","nameLocation":"2953:8:27","nodeType":"VariableDeclaration","scope":2844,"src":"2931:30:27","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$4810_calldata_ptr","typeString":"struct IPluginSetup.SetupPayload"},"typeName":{"id":2821,"nodeType":"UserDefinedTypeName","pathNode":{"id":2820,"name":"SetupPayload","nameLocations":["2931:12:27"],"nodeType":"IdentifierPath","referencedDeclaration":4810,"src":"2931:12:27"},"referencedDeclaration":4810,"src":"2931:12:27","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$4810_storage_ptr","typeString":"struct IPluginSetup.SetupPayload"}},"visibility":"internal"}],"src":"2899:68:27"},"returnParameters":{"id":2828,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2827,"mutability":"mutable","name":"permissions","nameLocation":"3036:11:27","nodeType":"VariableDeclaration","scope":2844,"src":"2991:56:27","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission[]"},"typeName":{"baseType":{"id":2825,"nodeType":"UserDefinedTypeName","pathNode":{"id":2824,"name":"PermissionLib.MultiTargetPermission","nameLocations":["2991:13:27","3005:21:27"],"nodeType":"IdentifierPath","referencedDeclaration":3813,"src":"2991:35:27"},"referencedDeclaration":3813,"src":"2991:35:27","typeDescriptions":{"typeIdentifier":"t_struct$_MultiTargetPermission_$3813_storage_ptr","typeString":"struct PermissionLib.MultiTargetPermission"}},"id":2826,"nodeType":"ArrayTypeName","src":"2991:37:27","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_storage_$dyn_storage_ptr","typeString":"struct PermissionLib.MultiTargetPermission[]"}},"visibility":"internal"}],"src":"2990:58:27"},"scope":2845,"src":"2869:299:27","stateMutability":"pure","virtual":false,"visibility":"external"}],"scope":2846,"src":"2043:1127:27","usedErrors":[2999,4882]}],"src":"91:3080:27"},"id":27},"src/mocks/plugin/PluginMock.sol":{"ast":{"absolutePath":"src/mocks/plugin/PluginMock.sol","exportedSymbols":{"IDAO":[2538],"Plugin":[4171],"PluginMockBuild1":[2871]},"id":2872,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":2847,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:28"},{"absolutePath":"src/plugin/Plugin.sol","file":"../../plugin/Plugin.sol","id":2849,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2872,"sourceUnit":4172,"src":"72:47:28","symbolAliases":[{"foreign":{"id":2848,"name":"Plugin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4171,"src":"80:6:28","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/dao/IDAO.sol","file":"../../dao/IDAO.sol","id":2851,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2872,"sourceUnit":2539,"src":"120:40:28","symbolAliases":[{"foreign":{"id":2850,"name":"IDAO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2538,"src":"128:4:28","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":2853,"name":"Plugin","nameLocations":["320:6:28"],"nodeType":"IdentifierPath","referencedDeclaration":4171,"src":"320:6:28"},"id":2854,"nodeType":"InheritanceSpecifier","src":"320:6:28"}],"canonicalName":"PluginMockBuild1","contractDependencies":[],"contractKind":"contract","documentation":{"id":2852,"nodeType":"StructuredDocumentation","src":"162:129:28","text":"@notice A mock plugin to be deployed via the `new` keyword.\n v1.1 (Release 1, Build 1)\n @dev DO NOT USE IN PRODUCTION!"},"fullyImplemented":true,"id":2871,"linearizedBaseContracts":[2871,4171,5136,5114,3872,2167,2375,2387,4002],"name":"PluginMockBuild1","nameLocation":"300:16:28","nodeType":"ContractDefinition","nodes":[{"constant":false,"functionSelector":"6accab8c","id":2856,"mutability":"mutable","name":"state1","nameLocation":"348:6:28","nodeType":"VariableDeclaration","scope":2871,"src":"333:21:28","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2855,"name":"uint256","nodeType":"ElementaryTypeName","src":"333:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"body":{"id":2869,"nodeType":"Block","src":"397:27:28","statements":[{"expression":{"id":2867,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2865,"name":"state1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2856,"src":"407:6:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"31","id":2866,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"416:1:28","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"407:10:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2868,"nodeType":"ExpressionStatement","src":"407:10:28"}]},"id":2870,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":2862,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2859,"src":"391:4:28","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}}],"id":2863,"kind":"baseConstructorSpecifier","modifierName":{"id":2861,"name":"Plugin","nameLocations":["384:6:28"],"nodeType":"IdentifierPath","referencedDeclaration":4171,"src":"384:6:28"},"nodeType":"ModifierInvocation","src":"384:12:28"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":2860,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2859,"mutability":"mutable","name":"_dao","nameLocation":"378:4:28","nodeType":"VariableDeclaration","scope":2870,"src":"373:9:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"},"typeName":{"id":2858,"nodeType":"UserDefinedTypeName","pathNode":{"id":2857,"name":"IDAO","nameLocations":["373:4:28"],"nodeType":"IdentifierPath","referencedDeclaration":2538,"src":"373:4:28"},"referencedDeclaration":2538,"src":"373:4:28","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}},"visibility":"internal"}],"src":"372:11:28"},"returnParameters":{"id":2864,"nodeType":"ParameterList","parameters":[],"src":"397:0:28"},"scope":2871,"src":"361:63:28","stateMutability":"nonpayable","virtual":false,"visibility":"public"}],"scope":2872,"src":"291:135:28","usedErrors":[]}],"src":"47:380:28"},"id":28},"src/mocks/plugin/PluginSetupMock.sol":{"ast":{"absolutePath":"src/mocks/plugin/PluginSetupMock.sol","exportedSymbols":{"IDAO":[2538],"IPluginSetup":[4859],"PermissionLib":[3814],"PluginMockBuild1":[2871],"PluginSetup":[4957],"PluginSetupMockBuild1":[2987],"mockHelpers":[3108],"mockPermissions":[3069]},"id":2988,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":2873,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"91:23:29"},{"absolutePath":"src/permission/PermissionLib.sol","file":"../../permission/PermissionLib.sol","id":2875,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2988,"sourceUnit":3815,"src":"116:65:29","symbolAliases":[{"foreign":{"id":2874,"name":"PermissionLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3814,"src":"124:13:29","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/plugin/setup/IPluginSetup.sol","file":"../../plugin/setup/IPluginSetup.sol","id":2877,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2988,"sourceUnit":4860,"src":"182:65:29","symbolAliases":[{"foreign":{"id":2876,"name":"IPluginSetup","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4859,"src":"190:12:29","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/plugin/setup/PluginSetup.sol","file":"../../plugin/setup/PluginSetup.sol","id":2879,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2988,"sourceUnit":4958,"src":"248:63:29","symbolAliases":[{"foreign":{"id":2878,"name":"PluginSetup","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4957,"src":"256:11:29","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/dao/IDAO.sol","file":"../../dao/IDAO.sol","id":2881,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2988,"sourceUnit":2539,"src":"312:40:29","symbolAliases":[{"foreign":{"id":2880,"name":"IDAO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2538,"src":"320:4:29","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/mocks/plugin/PluginSetupMockData.sol","file":"./PluginSetupMockData.sol","id":2884,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2988,"sourceUnit":3109,"src":"353:71:29","symbolAliases":[{"foreign":{"id":2882,"name":"mockPermissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3069,"src":"361:15:29","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":2883,"name":"mockHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3108,"src":"378:11:29","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/mocks/plugin/PluginMock.sol","file":"./PluginMock.sol","id":2886,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2988,"sourceUnit":2872,"src":"425:50:29","symbolAliases":[{"foreign":{"id":2885,"name":"PluginMockBuild1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2871,"src":"433:16:29","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":2888,"name":"PluginSetup","nameLocations":["658:11:29"],"nodeType":"IdentifierPath","referencedDeclaration":4957,"src":"658:11:29"},"id":2889,"nodeType":"InheritanceSpecifier","src":"658:11:29"}],"canonicalName":"PluginSetupMockBuild1","contractDependencies":[2871],"contractKind":"contract","documentation":{"id":2887,"nodeType":"StructuredDocumentation","src":"477:147:29","text":"@notice A mock plugin setup of a plugin to be deployed via the `new` keyword.\n v1.1 (Release 1, Build 1)\n @dev DO NOT USE IN PRODUCTION!"},"fullyImplemented":true,"id":2987,"linearizedBaseContracts":[2987,4957,5136,5114,4859,2375,2387],"name":"PluginSetupMockBuild1","nameLocation":"633:21:29","nodeType":"ContractDefinition","nodes":[{"body":{"id":2907,"nodeType":"Block","src":"751:2:29","statements":[]},"id":2908,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"hexValue":"30","id":2900,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"744:1:29","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2899,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"736:7:29","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2898,"name":"address","nodeType":"ElementaryTypeName","src":"736:7:29","typeDescriptions":{}}},"id":2901,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"736:10:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2897,"name":"IDAO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2538,"src":"731:4:29","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IDAO_$2538_$","typeString":"type(contract IDAO)"}},"id":2902,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"731:16:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}],"id":2896,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"NewExpression","src":"710:20:29","typeDescriptions":{"typeIdentifier":"t_function_creation_nonpayable$_t_contract$_IDAO_$2538_$returns$_t_contract$_PluginMockBuild1_$2871_$","typeString":"function (contract IDAO) returns (contract PluginMockBuild1)"},"typeName":{"id":2895,"nodeType":"UserDefinedTypeName","pathNode":{"id":2894,"name":"PluginMockBuild1","nameLocations":["714:16:29"],"nodeType":"IdentifierPath","referencedDeclaration":2871,"src":"714:16:29"},"referencedDeclaration":2871,"src":"714:16:29","typeDescriptions":{"typeIdentifier":"t_contract$_PluginMockBuild1_$2871","typeString":"contract PluginMockBuild1"}}},"id":2903,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"710:38:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_PluginMockBuild1_$2871","typeString":"contract PluginMockBuild1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_PluginMockBuild1_$2871","typeString":"contract PluginMockBuild1"}],"id":2893,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"702:7:29","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2892,"name":"address","nodeType":"ElementaryTypeName","src":"702:7:29","typeDescriptions":{}}},"id":2904,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"702:47:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":2905,"kind":"baseConstructorSpecifier","modifierName":{"id":2891,"name":"PluginSetup","nameLocations":["690:11:29"],"nodeType":"IdentifierPath","referencedDeclaration":4957,"src":"690:11:29"},"nodeType":"ModifierInvocation","src":"690:60:29"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":2890,"nodeType":"ParameterList","parameters":[],"src":"687:2:29"},"returnParameters":{"id":2906,"nodeType":"ParameterList","parameters":[],"src":"751:0:29"},"scope":2987,"src":"676:77:29","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[4823],"body":{"id":2957,"nodeType":"Block","src":"955:230:29","statements":[{"expression":{"components":[{"id":2921,"name":"_data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2913,"src":"966:5:29","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":2922,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"965:7:29","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2923,"nodeType":"ExpressionStatement","src":"965:7:29"},{"expression":{"id":2935,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2924,"name":"plugin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2916,"src":"982:6:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"arguments":[{"id":2931,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2911,"src":"1025:4:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2930,"name":"IDAO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2538,"src":"1020:4:29","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IDAO_$2538_$","typeString":"type(contract IDAO)"}},"id":2932,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1020:10:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}],"id":2929,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"NewExpression","src":"999:20:29","typeDescriptions":{"typeIdentifier":"t_function_creation_nonpayable$_t_contract$_IDAO_$2538_$returns$_t_contract$_PluginMockBuild1_$2871_$","typeString":"function (contract IDAO) returns (contract PluginMockBuild1)"},"typeName":{"id":2928,"nodeType":"UserDefinedTypeName","pathNode":{"id":2927,"name":"PluginMockBuild1","nameLocations":["1003:16:29"],"nodeType":"IdentifierPath","referencedDeclaration":2871,"src":"1003:16:29"},"referencedDeclaration":2871,"src":"1003:16:29","typeDescriptions":{"typeIdentifier":"t_contract$_PluginMockBuild1_$2871","typeString":"contract PluginMockBuild1"}}},"id":2933,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"999:32:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_PluginMockBuild1_$2871","typeString":"contract PluginMockBuild1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_PluginMockBuild1_$2871","typeString":"contract PluginMockBuild1"}],"id":2926,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"991:7:29","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2925,"name":"address","nodeType":"ElementaryTypeName","src":"991:7:29","typeDescriptions":{}}},"id":2934,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"991:41:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"982:50:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2936,"nodeType":"ExpressionStatement","src":"982:50:29"},{"expression":{"id":2943,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":2937,"name":"preparedSetupData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2919,"src":"1042:17:29","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$4802_memory_ptr","typeString":"struct IPluginSetup.PreparedSetupData memory"}},"id":2939,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1060:7:29","memberName":"helpers","nodeType":"MemberAccess","referencedDeclaration":4797,"src":"1042:25:29","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"hexValue":"31","id":2941,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1082:1:29","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":2940,"name":"mockHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3108,"src":"1070:11:29","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$returns$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"function (uint160) pure returns (address[] memory)"}},"id":2942,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1070:14:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"src":"1042:42:29","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":2944,"nodeType":"ExpressionStatement","src":"1042:42:29"},{"expression":{"id":2955,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":2945,"name":"preparedSetupData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2919,"src":"1094:17:29","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$4802_memory_ptr","typeString":"struct IPluginSetup.PreparedSetupData memory"}},"id":2947,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1112:11:29","memberName":"permissions","nodeType":"MemberAccess","referencedDeclaration":4801,"src":"1094:29:29","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"hexValue":"30","id":2949,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1142:1:29","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"31","id":2950,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1145:1:29","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},{"expression":{"expression":{"id":2951,"name":"PermissionLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3814,"src":"1148:13:29","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PermissionLib_$3814_$","typeString":"type(library PermissionLib)"}},"id":2952,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1162:9:29","memberName":"Operation","nodeType":"MemberAccess","referencedDeclaration":3793,"src":"1148:23:29","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Operation_$3793_$","typeString":"type(enum PermissionLib.Operation)"}},"id":2953,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1172:5:29","memberName":"Grant","nodeType":"MemberAccess","referencedDeclaration":3790,"src":"1148:29:29","typeDescriptions":{"typeIdentifier":"t_enum$_Operation_$3793","typeString":"enum PermissionLib.Operation"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},{"typeIdentifier":"t_enum$_Operation_$3793","typeString":"enum PermissionLib.Operation"}],"id":2948,"name":"mockPermissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3069,"src":"1126:15:29","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_enum$_Operation_$3793_$returns$_t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint160,uint160,enum PermissionLib.Operation) pure returns (struct PermissionLib.MultiTargetPermission memory[] memory)"}},"id":2954,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1126:52:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"src":"1094:84:29","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"id":2956,"nodeType":"ExpressionStatement","src":"1094:84:29"}]},"documentation":{"id":2909,"nodeType":"StructuredDocumentation","src":"759:28:29","text":"@inheritdoc IPluginSetup"},"functionSelector":"f10832f1","id":2958,"implemented":true,"kind":"function","modifiers":[],"name":"prepareInstallation","nameLocation":"801:19:29","nodeType":"FunctionDefinition","parameters":{"id":2914,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2911,"mutability":"mutable","name":"_dao","nameLocation":"838:4:29","nodeType":"VariableDeclaration","scope":2958,"src":"830:12:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2910,"name":"address","nodeType":"ElementaryTypeName","src":"830:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2913,"mutability":"mutable","name":"_data","nameLocation":"865:5:29","nodeType":"VariableDeclaration","scope":2958,"src":"852:18:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2912,"name":"bytes","nodeType":"ElementaryTypeName","src":"852:5:29","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"820:56:29"},"returnParameters":{"id":2920,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2916,"mutability":"mutable","name":"plugin","nameLocation":"903:6:29","nodeType":"VariableDeclaration","scope":2958,"src":"895:14:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2915,"name":"address","nodeType":"ElementaryTypeName","src":"895:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2919,"mutability":"mutable","name":"preparedSetupData","nameLocation":"936:17:29","nodeType":"VariableDeclaration","scope":2958,"src":"911:42:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$4802_memory_ptr","typeString":"struct IPluginSetup.PreparedSetupData"},"typeName":{"id":2918,"nodeType":"UserDefinedTypeName","pathNode":{"id":2917,"name":"PreparedSetupData","nameLocations":["911:17:29"],"nodeType":"IdentifierPath","referencedDeclaration":4802,"src":"911:17:29"},"referencedDeclaration":4802,"src":"911:17:29","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$4802_storage_ptr","typeString":"struct IPluginSetup.PreparedSetupData"}},"visibility":"internal"}],"src":"894:60:29"},"scope":2987,"src":"792:393:29","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[4852],"body":{"id":2985,"nodeType":"Block","src":"1404:110:29","statements":[{"expression":{"components":[{"id":2971,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2961,"src":"1415:4:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2972,"name":"_payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2964,"src":"1421:8:29","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$4810_calldata_ptr","typeString":"struct IPluginSetup.SetupPayload calldata"}}],"id":2973,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1414:16:29","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_struct$_SetupPayload_$4810_calldata_ptr_$","typeString":"tuple(address,struct IPluginSetup.SetupPayload calldata)"}},"id":2974,"nodeType":"ExpressionStatement","src":"1414:16:29"},{"expression":{"id":2983,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2975,"name":"permissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2969,"src":"1440:11:29","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"hexValue":"30","id":2977,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1470:1:29","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"31","id":2978,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1473:1:29","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},{"expression":{"expression":{"id":2979,"name":"PermissionLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3814,"src":"1476:13:29","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PermissionLib_$3814_$","typeString":"type(library PermissionLib)"}},"id":2980,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1490:9:29","memberName":"Operation","nodeType":"MemberAccess","referencedDeclaration":3793,"src":"1476:23:29","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Operation_$3793_$","typeString":"type(enum PermissionLib.Operation)"}},"id":2981,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1500:6:29","memberName":"Revoke","nodeType":"MemberAccess","referencedDeclaration":3791,"src":"1476:30:29","typeDescriptions":{"typeIdentifier":"t_enum$_Operation_$3793","typeString":"enum PermissionLib.Operation"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},{"typeIdentifier":"t_enum$_Operation_$3793","typeString":"enum PermissionLib.Operation"}],"id":2976,"name":"mockPermissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3069,"src":"1454:15:29","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_enum$_Operation_$3793_$returns$_t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint160,uint160,enum PermissionLib.Operation) pure returns (struct PermissionLib.MultiTargetPermission memory[] memory)"}},"id":2982,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1454:53:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"src":"1440:67:29","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"id":2984,"nodeType":"ExpressionStatement","src":"1440:67:29"}]},"documentation":{"id":2959,"nodeType":"StructuredDocumentation","src":"1191:28:29","text":"@inheritdoc IPluginSetup"},"functionSelector":"9cb0a124","id":2986,"implemented":true,"kind":"function","modifiers":[],"name":"prepareUninstallation","nameLocation":"1233:21:29","nodeType":"FunctionDefinition","parameters":{"id":2965,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2961,"mutability":"mutable","name":"_dao","nameLocation":"1272:4:29","nodeType":"VariableDeclaration","scope":2986,"src":"1264:12:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2960,"name":"address","nodeType":"ElementaryTypeName","src":"1264:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2964,"mutability":"mutable","name":"_payload","nameLocation":"1308:8:29","nodeType":"VariableDeclaration","scope":2986,"src":"1286:30:29","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$4810_calldata_ptr","typeString":"struct IPluginSetup.SetupPayload"},"typeName":{"id":2963,"nodeType":"UserDefinedTypeName","pathNode":{"id":2962,"name":"SetupPayload","nameLocations":["1286:12:29"],"nodeType":"IdentifierPath","referencedDeclaration":4810,"src":"1286:12:29"},"referencedDeclaration":4810,"src":"1286:12:29","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$4810_storage_ptr","typeString":"struct IPluginSetup.SetupPayload"}},"visibility":"internal"}],"src":"1254:68:29"},"returnParameters":{"id":2970,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2969,"mutability":"mutable","name":"permissions","nameLocation":"1391:11:29","nodeType":"VariableDeclaration","scope":2986,"src":"1346:56:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission[]"},"typeName":{"baseType":{"id":2967,"nodeType":"UserDefinedTypeName","pathNode":{"id":2966,"name":"PermissionLib.MultiTargetPermission","nameLocations":["1346:13:29","1360:21:29"],"nodeType":"IdentifierPath","referencedDeclaration":3813,"src":"1346:35:29"},"referencedDeclaration":3813,"src":"1346:35:29","typeDescriptions":{"typeIdentifier":"t_struct$_MultiTargetPermission_$3813_storage_ptr","typeString":"struct PermissionLib.MultiTargetPermission"}},"id":2968,"nodeType":"ArrayTypeName","src":"1346:37:29","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_storage_$dyn_storage_ptr","typeString":"struct PermissionLib.MultiTargetPermission[]"}},"visibility":"internal"}],"src":"1345:58:29"},"scope":2987,"src":"1224:290:29","stateMutability":"pure","virtual":false,"visibility":"external"}],"scope":2988,"src":"624:892:29","usedErrors":[2999,4882]}],"src":"91:1426:29"},"id":29},"src/mocks/plugin/PluginSetupMockData.sol":{"ast":{"absolutePath":"src/mocks/plugin/PluginSetupMockData.sol","exportedSymbols":{"ConflictingValues":[2999],"NO_CONDITION":[2997],"PermissionLib":[3814],"mockHelpers":[3108],"mockPermissions":[3069]},"id":3109,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":2989,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:30"},{"absolutePath":"src/permission/PermissionLib.sol","file":"../../permission/PermissionLib.sol","id":2991,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3109,"sourceUnit":3815,"src":"72:65:30","symbolAliases":[{"foreign":{"id":2990,"name":"PermissionLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3814,"src":"80:13:30","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"constant":true,"id":2997,"mutability":"constant","name":"NO_CONDITION","nameLocation":"156:12:30","nodeType":"VariableDeclaration","scope":3109,"src":"139:42:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2992,"name":"address","nodeType":"ElementaryTypeName","src":"139:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":{"arguments":[{"hexValue":"30","id":2995,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"179:1:30","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2994,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"171:7:30","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2993,"name":"address","nodeType":"ElementaryTypeName","src":"171:7:30","typeDescriptions":{}}},"id":2996,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"171:10:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"errorSelector":"e9004f34","id":2999,"name":"ConflictingValues","nameLocation":"190:17:30","nodeType":"ErrorDefinition","parameters":{"id":2998,"nodeType":"ParameterList","parameters":[],"src":"207:2:30"},"src":"184:26:30"},{"body":{"id":3068,"nodeType":"Block","src":"757:489:30","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":3016,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3014,"name":"rangeStart","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3002,"src":"767:10:30","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":3015,"name":"rangeEnd","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3004,"src":"780:8:30","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"767:21:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3020,"nodeType":"IfStatement","src":"763:53:30","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":3017,"name":"ConflictingValues","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2999,"src":"797:17:30","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":3018,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"797:19:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3019,"nodeType":"RevertStatement","src":"790:26:30"}},{"expression":{"id":3030,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3021,"name":"permissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3012,"src":"823:11:30","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":3028,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3026,"name":"rangeEnd","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3004,"src":"879:8:30","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":3027,"name":"rangeStart","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3002,"src":"890:10:30","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"879:21:30","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":3025,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"837:41:30","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (struct PermissionLib.MultiTargetPermission memory[] memory)"},"typeName":{"baseType":{"id":3023,"nodeType":"UserDefinedTypeName","pathNode":{"id":3022,"name":"PermissionLib.MultiTargetPermission","nameLocations":["841:13:30","855:21:30"],"nodeType":"IdentifierPath","referencedDeclaration":3813,"src":"841:35:30"},"referencedDeclaration":3813,"src":"841:35:30","typeDescriptions":{"typeIdentifier":"t_struct$_MultiTargetPermission_$3813_storage_ptr","typeString":"struct PermissionLib.MultiTargetPermission"}},"id":3024,"nodeType":"ArrayTypeName","src":"841:37:30","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_storage_$dyn_storage_ptr","typeString":"struct PermissionLib.MultiTargetPermission[]"}}},"id":3029,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"837:64:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"src":"823:78:30","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"id":3031,"nodeType":"ExpressionStatement","src":"823:78:30"},{"body":{"id":3066,"nodeType":"Block","src":"956:288:30","statements":[{"expression":{"id":3064,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":3042,"name":"permissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3012,"src":"966:11:30","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"id":3046,"indexExpression":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":3045,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3043,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3033,"src":"978:1:30","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":3044,"name":"rangeStart","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3002,"src":"982:10:30","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"978:14:30","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"966:27:30","typeDescriptions":{"typeIdentifier":"t_struct$_MultiTargetPermission_$3813_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3049,"name":"op","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3007,"src":"1057:2:30","typeDescriptions":{"typeIdentifier":"t_enum$_Operation_$3793","typeString":"enum PermissionLib.Operation"}},{"arguments":[{"id":3052,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3033,"src":"1088:1:30","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":3051,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1080:7:30","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3050,"name":"address","nodeType":"ElementaryTypeName","src":"1080:7:30","typeDescriptions":{}}},"id":3053,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1080:10:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":3056,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3033,"src":"1117:1:30","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":3055,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1109:7:30","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3054,"name":"address","nodeType":"ElementaryTypeName","src":"1109:7:30","typeDescriptions":{}}},"id":3057,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1109:10:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":3058,"name":"PermissionLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3814,"src":"1144:13:30","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PermissionLib_$3814_$","typeString":"type(library PermissionLib)"}},"id":3059,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1158:12:30","memberName":"NO_CONDITION","nodeType":"MemberAccess","referencedDeclaration":3789,"src":"1144:26:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"4d4f434b5f5045524d495353494f4e","id":3061,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1208:17:30","typeDescriptions":{"typeIdentifier":"t_stringliteral_a280eec51ab8e1bc4b6b0c1b7f1bde785761b787a49db404e3e9338ed9b016ef","typeString":"literal_string \"MOCK_PERMISSION\""},"value":"MOCK_PERMISSION"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_a280eec51ab8e1bc4b6b0c1b7f1bde785761b787a49db404e3e9338ed9b016ef","typeString":"literal_string \"MOCK_PERMISSION\""}],"id":3060,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967288,"src":"1198:9:30","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":3062,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1198:28:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Operation_$3793","typeString":"enum PermissionLib.Operation"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":3047,"name":"PermissionLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3814,"src":"996:13:30","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PermissionLib_$3814_$","typeString":"type(library PermissionLib)"}},"id":3048,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1010:21:30","memberName":"MultiTargetPermission","nodeType":"MemberAccess","referencedDeclaration":3813,"src":"996:35:30","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_MultiTargetPermission_$3813_storage_ptr_$","typeString":"type(struct PermissionLib.MultiTargetPermission storage pointer)"}},"id":3063,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["1046:9:30","1073:5:30","1104:3:30","1133:9:30","1184:12:30"],"names":["operation","where","who","condition","permissionId"],"nodeType":"FunctionCall","src":"996:241:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_MultiTargetPermission_$3813_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory"}},"src":"966:271:30","typeDescriptions":{"typeIdentifier":"t_struct$_MultiTargetPermission_$3813_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory"}},"id":3065,"nodeType":"ExpressionStatement","src":"966:271:30"}]},"condition":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":3038,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3036,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3033,"src":"937:1:30","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":3037,"name":"rangeEnd","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3004,"src":"941:8:30","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"937:12:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3067,"initializationExpression":{"assignments":[3033],"declarations":[{"constant":false,"id":3033,"mutability":"mutable","name":"i","nameLocation":"921:1:30","nodeType":"VariableDeclaration","scope":3067,"src":"913:9:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":3032,"name":"uint160","nodeType":"ElementaryTypeName","src":"913:7:30","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"id":3035,"initialValue":{"id":3034,"name":"rangeStart","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3002,"src":"925:10:30","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"VariableDeclarationStatement","src":"913:22:30"},"loopExpression":{"expression":{"id":3040,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"951:3:30","subExpression":{"id":3039,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3033,"src":"951:1:30","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"id":3041,"nodeType":"ExpressionStatement","src":"951:3:30"},"nodeType":"ForStatement","src":"908:336:30"}]},"documentation":{"id":3000,"nodeType":"StructuredDocumentation","src":"212:368:30","text":"@notice Creates a mock `MultiTargetPermission` array by converting a range of `uint160` values into `address` values.\n @param rangeStart The start of the range.\n @param rangeEnd The end of the range (that is not included).\n @param op The permission operation type.\n @return permissions The mock array of permissions.\n @dev DO NOT USE IN PRODUCTION!"},"id":3069,"implemented":true,"kind":"freeFunction","modifiers":[],"name":"mockPermissions","nameLocation":"589:15:30","nodeType":"FunctionDefinition","parameters":{"id":3008,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3002,"mutability":"mutable","name":"rangeStart","nameLocation":"618:10:30","nodeType":"VariableDeclaration","scope":3069,"src":"610:18:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":3001,"name":"uint160","nodeType":"ElementaryTypeName","src":"610:7:30","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":3004,"mutability":"mutable","name":"rangeEnd","nameLocation":"642:8:30","nodeType":"VariableDeclaration","scope":3069,"src":"634:16:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":3003,"name":"uint160","nodeType":"ElementaryTypeName","src":"634:7:30","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":3007,"mutability":"mutable","name":"op","nameLocation":"680:2:30","nodeType":"VariableDeclaration","scope":3069,"src":"656:26:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Operation_$3793","typeString":"enum PermissionLib.Operation"},"typeName":{"id":3006,"nodeType":"UserDefinedTypeName","pathNode":{"id":3005,"name":"PermissionLib.Operation","nameLocations":["656:13:30","670:9:30"],"nodeType":"IdentifierPath","referencedDeclaration":3793,"src":"656:23:30"},"referencedDeclaration":3793,"src":"656:23:30","typeDescriptions":{"typeIdentifier":"t_enum$_Operation_$3793","typeString":"enum PermissionLib.Operation"}},"visibility":"internal"}],"src":"604:80:30"},"returnParameters":{"id":3013,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3012,"mutability":"mutable","name":"permissions","nameLocation":"744:11:30","nodeType":"VariableDeclaration","scope":3069,"src":"699:56:30","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission[]"},"typeName":{"baseType":{"id":3010,"nodeType":"UserDefinedTypeName","pathNode":{"id":3009,"name":"PermissionLib.MultiTargetPermission","nameLocations":["699:13:30","713:21:30"],"nodeType":"IdentifierPath","referencedDeclaration":3813,"src":"699:35:30"},"referencedDeclaration":3813,"src":"699:35:30","typeDescriptions":{"typeIdentifier":"t_struct$_MultiTargetPermission_$3813_storage_ptr","typeString":"struct PermissionLib.MultiTargetPermission"}},"id":3011,"nodeType":"ArrayTypeName","src":"699:37:30","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_storage_$dyn_storage_ptr","typeString":"struct PermissionLib.MultiTargetPermission[]"}},"visibility":"internal"}],"src":"698:58:30"},"scope":3109,"src":"580:666:30","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3107,"nodeType":"Block","src":"1603:117:30","statements":[{"expression":{"id":3084,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3078,"name":"helpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3076,"src":"1609:7:30","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3082,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3072,"src":"1633:3:30","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":3081,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"1619:13:30","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (address[] memory)"},"typeName":{"baseType":{"id":3079,"name":"address","nodeType":"ElementaryTypeName","src":"1623:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3080,"nodeType":"ArrayTypeName","src":"1623:9:30","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}}},"id":3083,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1619:18:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"src":"1609:28:30","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":3085,"nodeType":"ExpressionStatement","src":"1609:28:30"},{"body":{"id":3105,"nodeType":"Block","src":"1678:40:30","statements":[{"expression":{"id":3103,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":3096,"name":"helpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3076,"src":"1688:7:30","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":3098,"indexExpression":{"id":3097,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3087,"src":"1696:1:30","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1688:10:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3101,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3087,"src":"1709:1:30","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":3100,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1701:7:30","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3099,"name":"address","nodeType":"ElementaryTypeName","src":"1701:7:30","typeDescriptions":{}}},"id":3102,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1701:10:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1688:23:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3104,"nodeType":"ExpressionStatement","src":"1688:23:30"}]},"condition":{"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"id":3092,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3090,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3087,"src":"1664:1:30","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":3091,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3072,"src":"1668:3:30","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"1664:7:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3106,"initializationExpression":{"assignments":[3087],"declarations":[{"constant":false,"id":3087,"mutability":"mutable","name":"i","nameLocation":"1657:1:30","nodeType":"VariableDeclaration","scope":3106,"src":"1649:9:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":3086,"name":"uint160","nodeType":"ElementaryTypeName","src":"1649:7:30","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"id":3089,"initialValue":{"hexValue":"30","id":3088,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1661:1:30","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"1649:13:30"},"loopExpression":{"expression":{"id":3094,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"1673:3:30","subExpression":{"id":3093,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3087,"src":"1673:1:30","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"id":3095,"nodeType":"ExpressionStatement","src":"1673:3:30"},"nodeType":"ForStatement","src":"1644:74:30"}]},"documentation":{"id":3070,"nodeType":"StructuredDocumentation","src":"1248:281:30","text":"@notice Creates a mock array of helper addresses of specified length by converting `uint160` values starting from 0 into `address` values.\n @param len The length of the helper array.\n @return helpers The mock array of helper addresses.\n @dev DO NOT USE IN PRODUCTION!"},"id":3108,"implemented":true,"kind":"freeFunction","modifiers":[],"name":"mockHelpers","nameLocation":"1538:11:30","nodeType":"FunctionDefinition","parameters":{"id":3073,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3072,"mutability":"mutable","name":"len","nameLocation":"1558:3:30","nodeType":"VariableDeclaration","scope":3108,"src":"1550:11:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":3071,"name":"uint160","nodeType":"ElementaryTypeName","src":"1550:7:30","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"1549:13:30"},"returnParameters":{"id":3077,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3076,"mutability":"mutable","name":"helpers","nameLocation":"1594:7:30","nodeType":"VariableDeclaration","scope":3108,"src":"1577:24:30","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":3074,"name":"address","nodeType":"ElementaryTypeName","src":"1577:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3075,"nodeType":"ArrayTypeName","src":"1577:9:30","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"1576:26:30"},"scope":3109,"src":"1529:191:30","stateMutability":"pure","virtual":false,"visibility":"internal"}],"src":"47:1674:30"},"id":30},"src/mocks/plugin/PluginUUPSUpgradeableMock.sol":{"ast":{"absolutePath":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol","exportedSymbols":{"IDAO":[2538],"PluginUUPSUpgradeable":[4576],"PluginUUPSUpgradeableMockBad":[3269],"PluginUUPSUpgradeableMockBuild1":[3137],"PluginUUPSUpgradeableMockBuild2":[3185],"PluginUUPSUpgradeableMockBuild3":[3248]},"id":3270,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":3110,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"91:23:31"},{"absolutePath":"src/plugin/PluginUUPSUpgradeable.sol","file":"../../plugin/PluginUUPSUpgradeable.sol","id":3112,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3270,"sourceUnit":4577,"src":"116:77:31","symbolAliases":[{"foreign":{"id":3111,"name":"PluginUUPSUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4576,"src":"124:21:31","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/dao/IDAO.sol","file":"../../dao/IDAO.sol","id":3114,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3270,"sourceUnit":2539,"src":"194:40:31","symbolAliases":[{"foreign":{"id":3113,"name":"IDAO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2538,"src":"202:4:31","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":3116,"name":"PluginUUPSUpgradeable","nameLocations":["426:21:31"],"nodeType":"IdentifierPath","referencedDeclaration":4576,"src":"426:21:31"},"id":3117,"nodeType":"InheritanceSpecifier","src":"426:21:31"}],"canonicalName":"PluginUUPSUpgradeableMockBuild1","contractDependencies":[],"contractKind":"contract","documentation":{"id":3115,"nodeType":"StructuredDocumentation","src":"236:146:31","text":"@notice A mock upgradeable plugin to be deployed via the UUPS proxy pattern.\n v1.1 (Release 1, Build 1)\n @dev DO NOT USE IN PRODUCTION!"},"fullyImplemented":true,"id":3137,"linearizedBaseContracts":[3137,4576,5136,5114,3937,1052,671,355,20,30,1281,1293,534,4002],"name":"PluginUUPSUpgradeableMockBuild1","nameLocation":"391:31:31","nodeType":"ContractDefinition","nodes":[{"constant":false,"functionSelector":"6accab8c","id":3119,"mutability":"mutable","name":"state1","nameLocation":"469:6:31","nodeType":"VariableDeclaration","scope":3137,"src":"454:21:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3118,"name":"uint256","nodeType":"ElementaryTypeName","src":"454:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"body":{"id":3135,"nodeType":"Block","src":"534:71:31","statements":[{"expression":{"arguments":[{"id":3128,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3122,"src":"573:4:31","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}],"id":3127,"name":"__PluginUUPSUpgradeable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4429,"src":"544:28:31","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IDAO_$2538_$returns$__$","typeString":"function (contract IDAO)"}},"id":3129,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"544:34:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3130,"nodeType":"ExpressionStatement","src":"544:34:31"},{"expression":{"id":3133,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3131,"name":"state1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3119,"src":"588:6:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"31","id":3132,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"597:1:31","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"588:10:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3134,"nodeType":"ExpressionStatement","src":"588:10:31"}]},"functionSelector":"c4d66de8","id":3136,"implemented":true,"kind":"function","modifiers":[{"id":3125,"kind":"modifierInvocation","modifierName":{"id":3124,"name":"initializer","nameLocations":["522:11:31"],"nodeType":"IdentifierPath","referencedDeclaration":436,"src":"522:11:31"},"nodeType":"ModifierInvocation","src":"522:11:31"}],"name":"initialize","nameLocation":"491:10:31","nodeType":"FunctionDefinition","parameters":{"id":3123,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3122,"mutability":"mutable","name":"_dao","nameLocation":"507:4:31","nodeType":"VariableDeclaration","scope":3136,"src":"502:9:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"},"typeName":{"id":3121,"nodeType":"UserDefinedTypeName","pathNode":{"id":3120,"name":"IDAO","nameLocations":["502:4:31"],"nodeType":"IdentifierPath","referencedDeclaration":2538,"src":"502:4:31"},"referencedDeclaration":2538,"src":"502:4:31","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}},"visibility":"internal"}],"src":"501:11:31"},"returnParameters":{"id":3126,"nodeType":"ParameterList","parameters":[],"src":"534:0:31"},"scope":3137,"src":"482:123:31","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":3270,"src":"382:225:31","usedErrors":[3952]},{"abstract":false,"baseContracts":[{"baseName":{"id":3139,"name":"PluginUUPSUpgradeable","nameLocations":["799:21:31"],"nodeType":"IdentifierPath","referencedDeclaration":4576,"src":"799:21:31"},"id":3140,"nodeType":"InheritanceSpecifier","src":"799:21:31"}],"canonicalName":"PluginUUPSUpgradeableMockBuild2","contractDependencies":[],"contractKind":"contract","documentation":{"id":3138,"nodeType":"StructuredDocumentation","src":"609:146:31","text":"@notice A mock upgradeable plugin to be deployed via the UUPS proxy pattern.\n v1.1 (Release 1, Build 2)\n @dev DO NOT USE IN PRODUCTION!"},"fullyImplemented":true,"id":3185,"linearizedBaseContracts":[3185,4576,5136,5114,3937,1052,671,355,20,30,1281,1293,534,4002],"name":"PluginUUPSUpgradeableMockBuild2","nameLocation":"764:31:31","nodeType":"ContractDefinition","nodes":[{"constant":false,"functionSelector":"6accab8c","id":3142,"mutability":"mutable","name":"state1","nameLocation":"842:6:31","nodeType":"VariableDeclaration","scope":3185,"src":"827:21:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3141,"name":"uint256","nodeType":"ElementaryTypeName","src":"827:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"constant":false,"functionSelector":"efe51cca","id":3144,"mutability":"mutable","name":"state2","nameLocation":"869:6:31","nodeType":"VariableDeclaration","scope":3185,"src":"854:21:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3143,"name":"uint256","nodeType":"ElementaryTypeName","src":"854:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"body":{"id":3165,"nodeType":"Block","src":"939:91:31","statements":[{"expression":{"arguments":[{"id":3154,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3147,"src":"978:4:31","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}],"id":3153,"name":"__PluginUUPSUpgradeable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4429,"src":"949:28:31","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IDAO_$2538_$returns$__$","typeString":"function (contract IDAO)"}},"id":3155,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"949:34:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3156,"nodeType":"ExpressionStatement","src":"949:34:31"},{"expression":{"id":3159,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3157,"name":"state1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3142,"src":"993:6:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"31","id":3158,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1002:1:31","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"993:10:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3160,"nodeType":"ExpressionStatement","src":"993:10:31"},{"expression":{"id":3163,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3161,"name":"state2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3144,"src":"1013:6:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"32","id":3162,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1022:1:31","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"1013:10:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3164,"nodeType":"ExpressionStatement","src":"1013:10:31"}]},"functionSelector":"c4d66de8","id":3166,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"hexValue":"32","id":3150,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"936:1:31","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"}],"id":3151,"kind":"modifierInvocation","modifierName":{"id":3149,"name":"reinitializer","nameLocations":["922:13:31"],"nodeType":"IdentifierPath","referencedDeclaration":469,"src":"922:13:31"},"nodeType":"ModifierInvocation","src":"922:16:31"}],"name":"initialize","nameLocation":"891:10:31","nodeType":"FunctionDefinition","parameters":{"id":3148,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3147,"mutability":"mutable","name":"_dao","nameLocation":"907:4:31","nodeType":"VariableDeclaration","scope":3166,"src":"902:9:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"},"typeName":{"id":3146,"nodeType":"UserDefinedTypeName","pathNode":{"id":3145,"name":"IDAO","nameLocations":["902:4:31"],"nodeType":"IdentifierPath","referencedDeclaration":2538,"src":"902:4:31"},"referencedDeclaration":2538,"src":"902:4:31","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}},"visibility":"internal"}],"src":"901:11:31"},"returnParameters":{"id":3152,"nodeType":"ParameterList","parameters":[],"src":"939:0:31"},"scope":3185,"src":"882:148:31","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":3183,"nodeType":"Block","src":"1109:75:31","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"id":3176,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3174,"name":"_previousBuild","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3168,"src":"1123:14:31","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"32","id":3175,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1140:1:31","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"1123:18:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3182,"nodeType":"IfStatement","src":"1119:59:31","trueBody":{"id":3181,"nodeType":"Block","src":"1143:35:31","statements":[{"expression":{"id":3179,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3177,"name":"state2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3144,"src":"1157:6:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"32","id":3178,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1166:1:31","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"1157:10:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3180,"nodeType":"ExpressionStatement","src":"1157:10:31"}]}}]},"functionSelector":"039a8c50","id":3184,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"hexValue":"32","id":3171,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1106:1:31","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"}],"id":3172,"kind":"modifierInvocation","modifierName":{"id":3170,"name":"reinitializer","nameLocations":["1092:13:31"],"nodeType":"IdentifierPath","referencedDeclaration":469,"src":"1092:13:31"},"nodeType":"ModifierInvocation","src":"1092:16:31"}],"name":"initializeFrom","nameLocation":"1045:14:31","nodeType":"FunctionDefinition","parameters":{"id":3169,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3168,"mutability":"mutable","name":"_previousBuild","nameLocation":"1067:14:31","nodeType":"VariableDeclaration","scope":3184,"src":"1060:21:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":3167,"name":"uint16","nodeType":"ElementaryTypeName","src":"1060:6:31","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"1059:23:31"},"returnParameters":{"id":3173,"nodeType":"ParameterList","parameters":[],"src":"1109:0:31"},"scope":3185,"src":"1036:148:31","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":3270,"src":"755:431:31","usedErrors":[3952]},{"abstract":false,"baseContracts":[{"baseName":{"id":3187,"name":"PluginUUPSUpgradeable","nameLocations":["1378:21:31"],"nodeType":"IdentifierPath","referencedDeclaration":4576,"src":"1378:21:31"},"id":3188,"nodeType":"InheritanceSpecifier","src":"1378:21:31"}],"canonicalName":"PluginUUPSUpgradeableMockBuild3","contractDependencies":[],"contractKind":"contract","documentation":{"id":3186,"nodeType":"StructuredDocumentation","src":"1188:146:31","text":"@notice A mock upgradeable plugin to be deployed via the UUPS proxy pattern.\n v1.1 (Release 1, Build 3)\n @dev DO NOT USE IN PRODUCTION!"},"fullyImplemented":true,"id":3248,"linearizedBaseContracts":[3248,4576,5136,5114,3937,1052,671,355,20,30,1281,1293,534,4002],"name":"PluginUUPSUpgradeableMockBuild3","nameLocation":"1343:31:31","nodeType":"ContractDefinition","nodes":[{"constant":false,"functionSelector":"6accab8c","id":3190,"mutability":"mutable","name":"state1","nameLocation":"1421:6:31","nodeType":"VariableDeclaration","scope":3248,"src":"1406:21:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3189,"name":"uint256","nodeType":"ElementaryTypeName","src":"1406:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"constant":false,"functionSelector":"efe51cca","id":3192,"mutability":"mutable","name":"state2","nameLocation":"1448:6:31","nodeType":"VariableDeclaration","scope":3248,"src":"1433:21:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3191,"name":"uint256","nodeType":"ElementaryTypeName","src":"1433:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"constant":false,"functionSelector":"2491118d","id":3194,"mutability":"mutable","name":"state3","nameLocation":"1475:6:31","nodeType":"VariableDeclaration","scope":3248,"src":"1460:21:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3193,"name":"uint256","nodeType":"ElementaryTypeName","src":"1460:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"body":{"id":3219,"nodeType":"Block","src":"1545:111:31","statements":[{"expression":{"arguments":[{"id":3204,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3197,"src":"1584:4:31","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}],"id":3203,"name":"__PluginUUPSUpgradeable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4429,"src":"1555:28:31","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IDAO_$2538_$returns$__$","typeString":"function (contract IDAO)"}},"id":3205,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1555:34:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3206,"nodeType":"ExpressionStatement","src":"1555:34:31"},{"expression":{"id":3209,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3207,"name":"state1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3190,"src":"1599:6:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"31","id":3208,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1608:1:31","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1599:10:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3210,"nodeType":"ExpressionStatement","src":"1599:10:31"},{"expression":{"id":3213,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3211,"name":"state2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3192,"src":"1619:6:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"32","id":3212,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1628:1:31","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"1619:10:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3214,"nodeType":"ExpressionStatement","src":"1619:10:31"},{"expression":{"id":3217,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3215,"name":"state3","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3194,"src":"1639:6:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"33","id":3216,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1648:1:31","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"1639:10:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3218,"nodeType":"ExpressionStatement","src":"1639:10:31"}]},"functionSelector":"c4d66de8","id":3220,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"hexValue":"33","id":3200,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1542:1:31","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"}],"id":3201,"kind":"modifierInvocation","modifierName":{"id":3199,"name":"reinitializer","nameLocations":["1528:13:31"],"nodeType":"IdentifierPath","referencedDeclaration":469,"src":"1528:13:31"},"nodeType":"ModifierInvocation","src":"1528:16:31"}],"name":"initialize","nameLocation":"1497:10:31","nodeType":"FunctionDefinition","parameters":{"id":3198,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3197,"mutability":"mutable","name":"_dao","nameLocation":"1513:4:31","nodeType":"VariableDeclaration","scope":3220,"src":"1508:9:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"},"typeName":{"id":3196,"nodeType":"UserDefinedTypeName","pathNode":{"id":3195,"name":"IDAO","nameLocations":["1508:4:31"],"nodeType":"IdentifierPath","referencedDeclaration":2538,"src":"1508:4:31"},"referencedDeclaration":2538,"src":"1508:4:31","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}},"visibility":"internal"}],"src":"1507:11:31"},"returnParameters":{"id":3202,"nodeType":"ParameterList","parameters":[],"src":"1545:0:31"},"scope":3248,"src":"1488:168:31","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":3246,"nodeType":"Block","src":"1735:143:31","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"id":3230,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3228,"name":"_previousBuild","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3222,"src":"1749:14:31","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"32","id":3229,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1766:1:31","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"1749:18:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3236,"nodeType":"IfStatement","src":"1745:59:31","trueBody":{"id":3235,"nodeType":"Block","src":"1769:35:31","statements":[{"expression":{"id":3233,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3231,"name":"state2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3192,"src":"1783:6:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"32","id":3232,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1792:1:31","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"1783:10:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3234,"nodeType":"ExpressionStatement","src":"1783:10:31"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"id":3239,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3237,"name":"_previousBuild","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3222,"src":"1817:14:31","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"33","id":3238,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1834:1:31","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"1817:18:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3245,"nodeType":"IfStatement","src":"1813:59:31","trueBody":{"id":3244,"nodeType":"Block","src":"1837:35:31","statements":[{"expression":{"id":3242,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3240,"name":"state3","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3194,"src":"1851:6:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"33","id":3241,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1860:1:31","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"1851:10:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3243,"nodeType":"ExpressionStatement","src":"1851:10:31"}]}}]},"functionSelector":"039a8c50","id":3247,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"hexValue":"33","id":3225,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1732:1:31","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"}],"id":3226,"kind":"modifierInvocation","modifierName":{"id":3224,"name":"reinitializer","nameLocations":["1718:13:31"],"nodeType":"IdentifierPath","referencedDeclaration":469,"src":"1718:13:31"},"nodeType":"ModifierInvocation","src":"1718:16:31"}],"name":"initializeFrom","nameLocation":"1671:14:31","nodeType":"FunctionDefinition","parameters":{"id":3223,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3222,"mutability":"mutable","name":"_previousBuild","nameLocation":"1693:14:31","nodeType":"VariableDeclaration","scope":3247,"src":"1686:21:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":3221,"name":"uint16","nodeType":"ElementaryTypeName","src":"1686:6:31","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"1685:23:31"},"returnParameters":{"id":3227,"nodeType":"ParameterList","parameters":[],"src":"1735:0:31"},"scope":3248,"src":"1662:216:31","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":3270,"src":"1334:546:31","usedErrors":[3952]},{"abstract":false,"baseContracts":[{"baseName":{"id":3250,"name":"PluginUUPSUpgradeable","nameLocations":["2029:21:31"],"nodeType":"IdentifierPath","referencedDeclaration":4576,"src":"2029:21:31"},"id":3251,"nodeType":"InheritanceSpecifier","src":"2029:21:31"}],"canonicalName":"PluginUUPSUpgradeableMockBad","contractDependencies":[],"contractKind":"contract","documentation":{"id":3249,"nodeType":"StructuredDocumentation","src":"1882:106:31","text":"@notice A mock upgradeable plugin missing an initializer function.\n @dev DO NOT USE IN PRODUCTION!"},"fullyImplemented":true,"id":3269,"linearizedBaseContracts":[3269,4576,5136,5114,3937,1052,671,355,20,30,1281,1293,534,4002],"name":"PluginUUPSUpgradeableMockBad","nameLocation":"1997:28:31","nodeType":"ContractDefinition","nodes":[{"constant":false,"functionSelector":"6accab8c","id":3253,"mutability":"mutable","name":"state1","nameLocation":"2072:6:31","nodeType":"VariableDeclaration","scope":3269,"src":"2057:21:31","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3252,"name":"uint256","nodeType":"ElementaryTypeName","src":"2057:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"body":{"id":3267,"nodeType":"Block","src":"2131:71:31","statements":[{"expression":{"arguments":[{"id":3260,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3256,"src":"2170:4:31","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}],"id":3259,"name":"__PluginUUPSUpgradeable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4429,"src":"2141:28:31","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IDAO_$2538_$returns$__$","typeString":"function (contract IDAO)"}},"id":3261,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2141:34:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3262,"nodeType":"ExpressionStatement","src":"2141:34:31"},{"expression":{"id":3265,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3263,"name":"state1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3253,"src":"2185:6:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"31","id":3264,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2194:1:31","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2185:10:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3266,"nodeType":"ExpressionStatement","src":"2185:10:31"}]},"functionSelector":"8883bbd7","id":3268,"implemented":true,"kind":"function","modifiers":[],"name":"notAnInitializer","nameLocation":"2094:16:31","nodeType":"FunctionDefinition","parameters":{"id":3257,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3256,"mutability":"mutable","name":"_dao","nameLocation":"2116:4:31","nodeType":"VariableDeclaration","scope":3268,"src":"2111:9:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"},"typeName":{"id":3255,"nodeType":"UserDefinedTypeName","pathNode":{"id":3254,"name":"IDAO","nameLocations":["2111:4:31"],"nodeType":"IdentifierPath","referencedDeclaration":2538,"src":"2111:4:31"},"referencedDeclaration":2538,"src":"2111:4:31","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}},"visibility":"internal"}],"src":"2110:11:31"},"returnParameters":{"id":3258,"nodeType":"ParameterList","parameters":[],"src":"2131:0:31"},"scope":3269,"src":"2085:117:31","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":3270,"src":"1988:216:31","usedErrors":[3952]}],"src":"91:2114:31"},"id":31},"src/mocks/plugin/PluginUUPSUpgradeableSetupMock.sol":{"ast":{"absolutePath":"src/mocks/plugin/PluginUUPSUpgradeableSetupMock.sol","exportedSymbols":{"IDAO":[2538],"IPluginSetup":[4859],"PermissionLib":[3814],"PluginUUPSUpgradeableMockBuild1":[3137],"PluginUUPSUpgradeableMockBuild2":[3185],"PluginUUPSUpgradeableMockBuild3":[3248],"PluginUUPSUpgradeableSetupMockBuild1":[3420],"PluginUUPSUpgradeableSetupMockBuild2":[3582],"PluginUUPSUpgradeableSetupMockBuild3":[3779],"PluginUpgradeableSetup":[5034],"ProxyLib":[5102],"mockHelpers":[3108],"mockPermissions":[3069]},"id":3780,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":3271,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"91:23:32"},{"absolutePath":"src/permission/PermissionLib.sol","file":"../../permission/PermissionLib.sol","id":3273,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3780,"sourceUnit":3815,"src":"116:65:32","symbolAliases":[{"foreign":{"id":3272,"name":"PermissionLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3814,"src":"124:13:32","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/plugin/setup/IPluginSetup.sol","file":"../../plugin/setup/IPluginSetup.sol","id":3275,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3780,"sourceUnit":4860,"src":"182:65:32","symbolAliases":[{"foreign":{"id":3274,"name":"IPluginSetup","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4859,"src":"190:12:32","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/plugin/setup/PluginUpgradeableSetup.sol","file":"../../plugin/setup/PluginUpgradeableSetup.sol","id":3277,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3780,"sourceUnit":5035,"src":"248:85:32","symbolAliases":[{"foreign":{"id":3276,"name":"PluginUpgradeableSetup","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5034,"src":"256:22:32","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/utils/deployment/ProxyLib.sol","file":"../../utils/deployment/ProxyLib.sol","id":3279,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3780,"sourceUnit":5103,"src":"334:61:32","symbolAliases":[{"foreign":{"id":3278,"name":"ProxyLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5102,"src":"342:8:32","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/dao/IDAO.sol","file":"../../dao/IDAO.sol","id":3281,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3780,"sourceUnit":2539,"src":"396:40:32","symbolAliases":[{"foreign":{"id":3280,"name":"IDAO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2538,"src":"404:4:32","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/mocks/plugin/PluginSetupMockData.sol","file":"./PluginSetupMockData.sol","id":3284,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3780,"sourceUnit":3109,"src":"437:71:32","symbolAliases":[{"foreign":{"id":3282,"name":"mockPermissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3069,"src":"445:15:32","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":3283,"name":"mockHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3108,"src":"462:11:32","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol","file":"./PluginUUPSUpgradeableMock.sol","id":3288,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3780,"sourceUnit":3270,"src":"509:146:32","symbolAliases":[{"foreign":{"id":3285,"name":"PluginUUPSUpgradeableMockBuild1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3137,"src":"517:31:32","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":3286,"name":"PluginUUPSUpgradeableMockBuild2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3185,"src":"550:31:32","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":3287,"name":"PluginUUPSUpgradeableMockBuild3","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3248,"src":"583:31:32","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":3290,"name":"PluginUpgradeableSetup","nameLocations":["865:22:32"],"nodeType":"IdentifierPath","referencedDeclaration":5034,"src":"865:22:32"},"id":3291,"nodeType":"InheritanceSpecifier","src":"865:22:32"}],"canonicalName":"PluginUUPSUpgradeableSetupMockBuild1","contractDependencies":[1441,3137],"contractKind":"contract","documentation":{"id":3289,"nodeType":"StructuredDocumentation","src":"657:159:32","text":"@notice A mock plugin setup of an upgradeable plugin to be deployed via the UUPS pattern.\n v1.1 (Release 1, Build 1)\n @dev DO NOT USE IN PRODUCTION!"},"fullyImplemented":true,"id":3420,"linearizedBaseContracts":[3420,5034,5136,5114,4859,2375,2387],"name":"PluginUUPSUpgradeableSetupMockBuild1","nameLocation":"825:36:32","nodeType":"ContractDefinition","nodes":[{"global":false,"id":3294,"libraryName":{"id":3292,"name":"ProxyLib","nameLocations":["900:8:32"],"nodeType":"IdentifierPath","referencedDeclaration":5102,"src":"900:8:32"},"nodeType":"UsingForDirective","src":"894:27:32","typeName":{"id":3293,"name":"address","nodeType":"ElementaryTypeName","src":"913:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},{"constant":true,"id":3297,"mutability":"constant","name":"THIS_BUILD","nameLocation":"952:10:32","nodeType":"VariableDeclaration","scope":3420,"src":"927:39:32","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":3295,"name":"uint16","nodeType":"ElementaryTypeName","src":"927:6:32","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"value":{"hexValue":"31","id":3296,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"965:1:32","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"visibility":"internal"},{"body":{"id":3309,"nodeType":"Block","src":"1058:2:32","statements":[]},"id":3310,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":3304,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"NewExpression","src":"1018:35:32","typeDescriptions":{"typeIdentifier":"t_function_creation_nonpayable$__$returns$_t_contract$_PluginUUPSUpgradeableMockBuild1_$3137_$","typeString":"function () returns (contract PluginUUPSUpgradeableMockBuild1)"},"typeName":{"id":3303,"nodeType":"UserDefinedTypeName","pathNode":{"id":3302,"name":"PluginUUPSUpgradeableMockBuild1","nameLocations":["1022:31:32"],"nodeType":"IdentifierPath","referencedDeclaration":3137,"src":"1022:31:32"},"referencedDeclaration":3137,"src":"1022:31:32","typeDescriptions":{"typeIdentifier":"t_contract$_PluginUUPSUpgradeableMockBuild1_$3137","typeString":"contract PluginUUPSUpgradeableMockBuild1"}}},"id":3305,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1018:37:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_PluginUUPSUpgradeableMockBuild1_$3137","typeString":"contract PluginUUPSUpgradeableMockBuild1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_PluginUUPSUpgradeableMockBuild1_$3137","typeString":"contract PluginUUPSUpgradeableMockBuild1"}],"id":3301,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1010:7:32","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3300,"name":"address","nodeType":"ElementaryTypeName","src":"1010:7:32","typeDescriptions":{}}},"id":3306,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1010:46:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":3307,"kind":"baseConstructorSpecifier","modifierName":{"id":3299,"name":"PluginUpgradeableSetup","nameLocations":["987:22:32"],"nodeType":"IdentifierPath","referencedDeclaration":5034,"src":"987:22:32"},"nodeType":"ModifierInvocation","src":"987:70:32"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":3298,"nodeType":"ParameterList","parameters":[],"src":"984:2:32"},"returnParameters":{"id":3308,"nodeType":"ParameterList","parameters":[],"src":"1058:0:32"},"scope":3420,"src":"973:87:32","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[4823],"body":{"id":3363,"nodeType":"Block","src":"1254:354:32","statements":[{"assignments":[3324],"declarations":[{"constant":false,"id":3324,"mutability":"mutable","name":"initData","nameLocation":"1277:8:32","nodeType":"VariableDeclaration","scope":3363,"src":"1264:21:32","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3323,"name":"bytes","nodeType":"ElementaryTypeName","src":"1264:5:32","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":3334,"initialValue":{"arguments":[{"expression":{"id":3327,"name":"PluginUUPSUpgradeableMockBuild1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3137,"src":"1316:31:32","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PluginUUPSUpgradeableMockBuild1_$3137_$","typeString":"type(contract PluginUUPSUpgradeableMockBuild1)"}},"id":3328,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1348:10:32","memberName":"initialize","nodeType":"MemberAccess","referencedDeclaration":3136,"src":"1316:42:32","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_contract$_IDAO_$2538_$returns$__$","typeString":"function PluginUUPSUpgradeableMockBuild1.initialize(contract IDAO)"}},{"components":[{"arguments":[{"id":3330,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3313,"src":"1378:4:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3329,"name":"IDAO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2538,"src":"1373:4:32","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IDAO_$2538_$","typeString":"type(contract IDAO)"}},"id":3331,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1373:10:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}}],"id":3332,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1372:12:32","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_nonpayable$_t_contract$_IDAO_$2538_$returns$__$","typeString":"function PluginUUPSUpgradeableMockBuild1.initialize(contract IDAO)"},{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}],"expression":{"id":3325,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967295,"src":"1288:3:32","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":3326,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1292:10:32","memberName":"encodeCall","nodeType":"MemberAccess","src":"1288:14:32","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":3333,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1288:106:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"1264:130:32"},{"expression":{"id":3341,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3335,"name":"plugin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3318,"src":"1404:6:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3339,"name":"initData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3324,"src":"1446:8:32","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":3336,"name":"implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5033,"src":"1413:14:32","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":3337,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1413:16:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3338,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1430:15:32","memberName":"deployUUPSProxy","nodeType":"MemberAccess","referencedDeclaration":5072,"src":"1413:32:32","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_address_$bound_to$_t_address_$","typeString":"function (address,bytes memory) returns (address)"}},"id":3340,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1413:42:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1404:51:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3342,"nodeType":"ExpressionStatement","src":"1404:51:32"},{"expression":{"id":3349,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":3343,"name":"preparedSetupData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3321,"src":"1465:17:32","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$4802_memory_ptr","typeString":"struct IPluginSetup.PreparedSetupData memory"}},"id":3345,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1483:7:32","memberName":"helpers","nodeType":"MemberAccess","referencedDeclaration":4797,"src":"1465:25:32","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"hexValue":"31","id":3347,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1505:1:32","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":3346,"name":"mockHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3108,"src":"1493:11:32","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$returns$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"function (uint160) pure returns (address[] memory)"}},"id":3348,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1493:14:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"src":"1465:42:32","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":3350,"nodeType":"ExpressionStatement","src":"1465:42:32"},{"expression":{"id":3361,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":3351,"name":"preparedSetupData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3321,"src":"1517:17:32","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$4802_memory_ptr","typeString":"struct IPluginSetup.PreparedSetupData memory"}},"id":3353,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1535:11:32","memberName":"permissions","nodeType":"MemberAccess","referencedDeclaration":4801,"src":"1517:29:32","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"hexValue":"30","id":3355,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1565:1:32","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"31","id":3356,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1568:1:32","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},{"expression":{"expression":{"id":3357,"name":"PermissionLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3814,"src":"1571:13:32","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PermissionLib_$3814_$","typeString":"type(library PermissionLib)"}},"id":3358,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1585:9:32","memberName":"Operation","nodeType":"MemberAccess","referencedDeclaration":3793,"src":"1571:23:32","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Operation_$3793_$","typeString":"type(enum PermissionLib.Operation)"}},"id":3359,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1595:5:32","memberName":"Grant","nodeType":"MemberAccess","referencedDeclaration":3790,"src":"1571:29:32","typeDescriptions":{"typeIdentifier":"t_enum$_Operation_$3793","typeString":"enum PermissionLib.Operation"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},{"typeIdentifier":"t_enum$_Operation_$3793","typeString":"enum PermissionLib.Operation"}],"id":3354,"name":"mockPermissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3069,"src":"1549:15:32","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_enum$_Operation_$3793_$returns$_t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint160,uint160,enum PermissionLib.Operation) pure returns (struct PermissionLib.MultiTargetPermission memory[] memory)"}},"id":3360,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1549:52:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"src":"1517:84:32","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"id":3362,"nodeType":"ExpressionStatement","src":"1517:84:32"}]},"documentation":{"id":3311,"nodeType":"StructuredDocumentation","src":"1066:28:32","text":"@inheritdoc IPluginSetup"},"functionSelector":"f10832f1","id":3364,"implemented":true,"kind":"function","modifiers":[],"name":"prepareInstallation","nameLocation":"1108:19:32","nodeType":"FunctionDefinition","parameters":{"id":3316,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3313,"mutability":"mutable","name":"_dao","nameLocation":"1145:4:32","nodeType":"VariableDeclaration","scope":3364,"src":"1137:12:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3312,"name":"address","nodeType":"ElementaryTypeName","src":"1137:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3315,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3364,"src":"1159:12:32","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3314,"name":"bytes","nodeType":"ElementaryTypeName","src":"1159:5:32","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1127:50:32"},"returnParameters":{"id":3322,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3318,"mutability":"mutable","name":"plugin","nameLocation":"1202:6:32","nodeType":"VariableDeclaration","scope":3364,"src":"1194:14:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3317,"name":"address","nodeType":"ElementaryTypeName","src":"1194:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3321,"mutability":"mutable","name":"preparedSetupData","nameLocation":"1235:17:32","nodeType":"VariableDeclaration","scope":3364,"src":"1210:42:32","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$4802_memory_ptr","typeString":"struct IPluginSetup.PreparedSetupData"},"typeName":{"id":3320,"nodeType":"UserDefinedTypeName","pathNode":{"id":3319,"name":"PreparedSetupData","nameLocations":["1210:17:32"],"nodeType":"IdentifierPath","referencedDeclaration":4802,"src":"1210:17:32"},"referencedDeclaration":4802,"src":"1210:17:32","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$4802_storage_ptr","typeString":"struct IPluginSetup.PreparedSetupData"}},"visibility":"internal"}],"src":"1193:60:32"},"scope":3420,"src":"1099:509:32","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[4839],"body":{"id":3390,"nodeType":"Block","src":"1946:118:32","statements":[{"expression":{"components":[{"id":3380,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3367,"src":"1957:4:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3381,"name":"_fromBuild","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3369,"src":"1963:10:32","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"id":3382,"name":"_payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3372,"src":"1975:8:32","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$4810_calldata_ptr","typeString":"struct IPluginSetup.SetupPayload calldata"}}],"id":3383,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1956:28:32","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint16_$_t_struct$_SetupPayload_$4810_calldata_ptr_$","typeString":"tuple(address,uint16,struct IPluginSetup.SetupPayload calldata)"}},"id":3384,"nodeType":"ExpressionStatement","src":"1956:28:32"},{"errorCall":{"arguments":[{"hexValue":"30","id":3386,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2031:1:32","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":3387,"name":"THIS_BUILD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3297,"src":"2045:10:32","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint16","typeString":"uint16"}],"id":3385,"name":"InvalidUpdatePath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4984,"src":"2001:17:32","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint16_$_t_uint16_$returns$__$","typeString":"function (uint16,uint16) pure"}},"id":3388,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":["2020:9:32","2034:9:32"],"names":["fromBuild","thisBuild"],"nodeType":"FunctionCall","src":"2001:56:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3389,"nodeType":"RevertStatement","src":"1994:63:32"}]},"documentation":{"id":3365,"nodeType":"StructuredDocumentation","src":"1614:138:32","text":"@inheritdoc IPluginSetup\n @dev The default implementation for the initial build 1 that reverts because no earlier build exists."},"functionSelector":"a8a9c29e","id":3391,"implemented":true,"kind":"function","modifiers":[],"name":"prepareUpdate","nameLocation":"1766:13:32","nodeType":"FunctionDefinition","parameters":{"id":3373,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3367,"mutability":"mutable","name":"_dao","nameLocation":"1797:4:32","nodeType":"VariableDeclaration","scope":3391,"src":"1789:12:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3366,"name":"address","nodeType":"ElementaryTypeName","src":"1789:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3369,"mutability":"mutable","name":"_fromBuild","nameLocation":"1818:10:32","nodeType":"VariableDeclaration","scope":3391,"src":"1811:17:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":3368,"name":"uint16","nodeType":"ElementaryTypeName","src":"1811:6:32","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":3372,"mutability":"mutable","name":"_payload","nameLocation":"1860:8:32","nodeType":"VariableDeclaration","scope":3391,"src":"1838:30:32","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$4810_calldata_ptr","typeString":"struct IPluginSetup.SetupPayload"},"typeName":{"id":3371,"nodeType":"UserDefinedTypeName","pathNode":{"id":3370,"name":"SetupPayload","nameLocations":["1838:12:32"],"nodeType":"IdentifierPath","referencedDeclaration":4810,"src":"1838:12:32"},"referencedDeclaration":4810,"src":"1838:12:32","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$4810_storage_ptr","typeString":"struct IPluginSetup.SetupPayload"}},"visibility":"internal"}],"src":"1779:95:32"},"returnParameters":{"id":3379,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3375,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3391,"src":"1906:12:32","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3374,"name":"bytes","nodeType":"ElementaryTypeName","src":"1906:5:32","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":3378,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3391,"src":"1920:24:32","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$4802_memory_ptr","typeString":"struct IPluginSetup.PreparedSetupData"},"typeName":{"id":3377,"nodeType":"UserDefinedTypeName","pathNode":{"id":3376,"name":"PreparedSetupData","nameLocations":["1920:17:32"],"nodeType":"IdentifierPath","referencedDeclaration":4802,"src":"1920:17:32"},"referencedDeclaration":4802,"src":"1920:17:32","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$4802_storage_ptr","typeString":"struct IPluginSetup.PreparedSetupData"}},"visibility":"internal"}],"src":"1905:40:32"},"scope":3420,"src":"1757:307:32","stateMutability":"pure","virtual":true,"visibility":"external"},{"baseFunctions":[4852],"body":{"id":3418,"nodeType":"Block","src":"2283:119:32","statements":[{"expression":{"components":[{"id":3404,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3394,"src":"2294:4:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3405,"name":"_payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3397,"src":"2300:8:32","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$4810_calldata_ptr","typeString":"struct IPluginSetup.SetupPayload calldata"}}],"id":3406,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2293:16:32","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_struct$_SetupPayload_$4810_calldata_ptr_$","typeString":"tuple(address,struct IPluginSetup.SetupPayload calldata)"}},"id":3407,"nodeType":"ExpressionStatement","src":"2293:16:32"},{"expression":{"id":3416,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3408,"name":"permissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3402,"src":"2319:11:32","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"hexValue":"30","id":3410,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2349:1:32","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":3411,"name":"THIS_BUILD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3297,"src":"2352:10:32","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"expression":{"expression":{"id":3412,"name":"PermissionLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3814,"src":"2364:13:32","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PermissionLib_$3814_$","typeString":"type(library PermissionLib)"}},"id":3413,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2378:9:32","memberName":"Operation","nodeType":"MemberAccess","referencedDeclaration":3793,"src":"2364:23:32","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Operation_$3793_$","typeString":"type(enum PermissionLib.Operation)"}},"id":3414,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2388:6:32","memberName":"Revoke","nodeType":"MemberAccess","referencedDeclaration":3791,"src":"2364:30:32","typeDescriptions":{"typeIdentifier":"t_enum$_Operation_$3793","typeString":"enum PermissionLib.Operation"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_enum$_Operation_$3793","typeString":"enum PermissionLib.Operation"}],"id":3409,"name":"mockPermissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3069,"src":"2333:15:32","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_enum$_Operation_$3793_$returns$_t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint160,uint160,enum PermissionLib.Operation) pure returns (struct PermissionLib.MultiTargetPermission memory[] memory)"}},"id":3415,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2333:62:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"src":"2319:76:32","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"id":3417,"nodeType":"ExpressionStatement","src":"2319:76:32"}]},"documentation":{"id":3392,"nodeType":"StructuredDocumentation","src":"2070:28:32","text":"@inheritdoc IPluginSetup"},"functionSelector":"9cb0a124","id":3419,"implemented":true,"kind":"function","modifiers":[],"name":"prepareUninstallation","nameLocation":"2112:21:32","nodeType":"FunctionDefinition","parameters":{"id":3398,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3394,"mutability":"mutable","name":"_dao","nameLocation":"2151:4:32","nodeType":"VariableDeclaration","scope":3419,"src":"2143:12:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3393,"name":"address","nodeType":"ElementaryTypeName","src":"2143:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3397,"mutability":"mutable","name":"_payload","nameLocation":"2187:8:32","nodeType":"VariableDeclaration","scope":3419,"src":"2165:30:32","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$4810_calldata_ptr","typeString":"struct IPluginSetup.SetupPayload"},"typeName":{"id":3396,"nodeType":"UserDefinedTypeName","pathNode":{"id":3395,"name":"SetupPayload","nameLocations":["2165:12:32"],"nodeType":"IdentifierPath","referencedDeclaration":4810,"src":"2165:12:32"},"referencedDeclaration":4810,"src":"2165:12:32","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$4810_storage_ptr","typeString":"struct IPluginSetup.SetupPayload"}},"visibility":"internal"}],"src":"2133:68:32"},"returnParameters":{"id":3403,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3402,"mutability":"mutable","name":"permissions","nameLocation":"2270:11:32","nodeType":"VariableDeclaration","scope":3419,"src":"2225:56:32","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission[]"},"typeName":{"baseType":{"id":3400,"nodeType":"UserDefinedTypeName","pathNode":{"id":3399,"name":"PermissionLib.MultiTargetPermission","nameLocations":["2225:13:32","2239:21:32"],"nodeType":"IdentifierPath","referencedDeclaration":3813,"src":"2225:35:32"},"referencedDeclaration":3813,"src":"2225:35:32","typeDescriptions":{"typeIdentifier":"t_struct$_MultiTargetPermission_$3813_storage_ptr","typeString":"struct PermissionLib.MultiTargetPermission"}},"id":3401,"nodeType":"ArrayTypeName","src":"2225:37:32","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_storage_$dyn_storage_ptr","typeString":"struct PermissionLib.MultiTargetPermission[]"}},"visibility":"internal"}],"src":"2224:58:32"},"scope":3420,"src":"2103:299:32","stateMutability":"pure","virtual":false,"visibility":"external"}],"scope":3780,"src":"816:1588:32","usedErrors":[2999,4984]},{"abstract":false,"baseContracts":[{"baseName":{"id":3422,"name":"PluginUpgradeableSetup","nameLocations":["2614:22:32"],"nodeType":"IdentifierPath","referencedDeclaration":5034,"src":"2614:22:32"},"id":3423,"nodeType":"InheritanceSpecifier","src":"2614:22:32"}],"canonicalName":"PluginUUPSUpgradeableSetupMockBuild2","contractDependencies":[1441,3185],"contractKind":"contract","documentation":{"id":3421,"nodeType":"StructuredDocumentation","src":"2406:159:32","text":"@notice A mock plugin setup of an upgradeable plugin to be deployed via the UUPS pattern.\n v1.2 (Release 1, Build 2)\n @dev DO NOT USE IN PRODUCTION!"},"fullyImplemented":true,"id":3582,"linearizedBaseContracts":[3582,5034,5136,5114,4859,2375,2387],"name":"PluginUUPSUpgradeableSetupMockBuild2","nameLocation":"2574:36:32","nodeType":"ContractDefinition","nodes":[{"global":false,"id":3426,"libraryName":{"id":3424,"name":"ProxyLib","nameLocations":["2649:8:32"],"nodeType":"IdentifierPath","referencedDeclaration":5102,"src":"2649:8:32"},"nodeType":"UsingForDirective","src":"2643:27:32","typeName":{"id":3425,"name":"address","nodeType":"ElementaryTypeName","src":"2662:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},{"constant":true,"id":3429,"mutability":"constant","name":"THIS_BUILD","nameLocation":"2701:10:32","nodeType":"VariableDeclaration","scope":3582,"src":"2676:39:32","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":3427,"name":"uint16","nodeType":"ElementaryTypeName","src":"2676:6:32","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"value":{"hexValue":"32","id":3428,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2714:1:32","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"visibility":"internal"},{"body":{"id":3441,"nodeType":"Block","src":"2807:2:32","statements":[]},"id":3442,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":3436,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"NewExpression","src":"2767:35:32","typeDescriptions":{"typeIdentifier":"t_function_creation_nonpayable$__$returns$_t_contract$_PluginUUPSUpgradeableMockBuild2_$3185_$","typeString":"function () returns (contract PluginUUPSUpgradeableMockBuild2)"},"typeName":{"id":3435,"nodeType":"UserDefinedTypeName","pathNode":{"id":3434,"name":"PluginUUPSUpgradeableMockBuild2","nameLocations":["2771:31:32"],"nodeType":"IdentifierPath","referencedDeclaration":3185,"src":"2771:31:32"},"referencedDeclaration":3185,"src":"2771:31:32","typeDescriptions":{"typeIdentifier":"t_contract$_PluginUUPSUpgradeableMockBuild2_$3185","typeString":"contract PluginUUPSUpgradeableMockBuild2"}}},"id":3437,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2767:37:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_PluginUUPSUpgradeableMockBuild2_$3185","typeString":"contract PluginUUPSUpgradeableMockBuild2"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_PluginUUPSUpgradeableMockBuild2_$3185","typeString":"contract PluginUUPSUpgradeableMockBuild2"}],"id":3433,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2759:7:32","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3432,"name":"address","nodeType":"ElementaryTypeName","src":"2759:7:32","typeDescriptions":{}}},"id":3438,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2759:46:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":3439,"kind":"baseConstructorSpecifier","modifierName":{"id":3431,"name":"PluginUpgradeableSetup","nameLocations":["2736:22:32"],"nodeType":"IdentifierPath","referencedDeclaration":5034,"src":"2736:22:32"},"nodeType":"ModifierInvocation","src":"2736:70:32"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":3430,"nodeType":"ParameterList","parameters":[],"src":"2733:2:32"},"returnParameters":{"id":3440,"nodeType":"ParameterList","parameters":[],"src":"2807:0:32"},"scope":3582,"src":"2722:87:32","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[4823],"body":{"id":3495,"nodeType":"Block","src":"3005:418:32","statements":[{"assignments":[3456],"declarations":[{"constant":false,"id":3456,"mutability":"mutable","name":"initData","nameLocation":"3028:8:32","nodeType":"VariableDeclaration","scope":3495,"src":"3015:21:32","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3455,"name":"bytes","nodeType":"ElementaryTypeName","src":"3015:5:32","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":3466,"initialValue":{"arguments":[{"expression":{"id":3459,"name":"PluginUUPSUpgradeableMockBuild2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3185,"src":"3067:31:32","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PluginUUPSUpgradeableMockBuild2_$3185_$","typeString":"type(contract PluginUUPSUpgradeableMockBuild2)"}},"id":3460,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3099:10:32","memberName":"initialize","nodeType":"MemberAccess","referencedDeclaration":3166,"src":"3067:42:32","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_contract$_IDAO_$2538_$returns$__$","typeString":"function PluginUUPSUpgradeableMockBuild2.initialize(contract IDAO)"}},{"components":[{"arguments":[{"id":3462,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3445,"src":"3129:4:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3461,"name":"IDAO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2538,"src":"3124:4:32","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IDAO_$2538_$","typeString":"type(contract IDAO)"}},"id":3463,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3124:10:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}}],"id":3464,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3123:12:32","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_nonpayable$_t_contract$_IDAO_$2538_$returns$__$","typeString":"function PluginUUPSUpgradeableMockBuild2.initialize(contract IDAO)"},{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}],"expression":{"id":3457,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967295,"src":"3039:3:32","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":3458,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3043:10:32","memberName":"encodeCall","nodeType":"MemberAccess","src":"3039:14:32","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":3465,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3039:106:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"3015:130:32"},{"expression":{"id":3473,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3467,"name":"plugin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3450,"src":"3155:6:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3471,"name":"initData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3456,"src":"3197:8:32","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":3468,"name":"implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5033,"src":"3164:14:32","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":3469,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3164:16:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3470,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3181:15:32","memberName":"deployUUPSProxy","nodeType":"MemberAccess","referencedDeclaration":5072,"src":"3164:32:32","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_address_$bound_to$_t_address_$","typeString":"function (address,bytes memory) returns (address)"}},"id":3472,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3164:42:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3155:51:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3474,"nodeType":"ExpressionStatement","src":"3155:51:32"},{"expression":{"id":3481,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":3475,"name":"preparedSetupData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3453,"src":"3216:17:32","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$4802_memory_ptr","typeString":"struct IPluginSetup.PreparedSetupData memory"}},"id":3477,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"3234:7:32","memberName":"helpers","nodeType":"MemberAccess","referencedDeclaration":4797,"src":"3216:25:32","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3479,"name":"THIS_BUILD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3429,"src":"3256:10:32","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"}],"id":3478,"name":"mockHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3108,"src":"3244:11:32","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$returns$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"function (uint160) pure returns (address[] memory)"}},"id":3480,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3244:23:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"src":"3216:51:32","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":3482,"nodeType":"ExpressionStatement","src":"3216:51:32"},{"expression":{"id":3493,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":3483,"name":"preparedSetupData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3453,"src":"3277:17:32","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$4802_memory_ptr","typeString":"struct IPluginSetup.PreparedSetupData memory"}},"id":3485,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"3295:11:32","memberName":"permissions","nodeType":"MemberAccess","referencedDeclaration":4801,"src":"3277:29:32","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"hexValue":"30","id":3487,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3338:1:32","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":3488,"name":"THIS_BUILD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3429,"src":"3353:10:32","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"expression":{"expression":{"id":3489,"name":"PermissionLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3814,"src":"3377:13:32","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PermissionLib_$3814_$","typeString":"type(library PermissionLib)"}},"id":3490,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3391:9:32","memberName":"Operation","nodeType":"MemberAccess","referencedDeclaration":3793,"src":"3377:23:32","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Operation_$3793_$","typeString":"type(enum PermissionLib.Operation)"}},"id":3491,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3401:5:32","memberName":"Grant","nodeType":"MemberAccess","referencedDeclaration":3790,"src":"3377:29:32","typeDescriptions":{"typeIdentifier":"t_enum$_Operation_$3793","typeString":"enum PermissionLib.Operation"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_enum$_Operation_$3793","typeString":"enum PermissionLib.Operation"}],"id":3486,"name":"mockPermissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3069,"src":"3309:15:32","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_enum$_Operation_$3793_$returns$_t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint160,uint160,enum PermissionLib.Operation) pure returns (struct PermissionLib.MultiTargetPermission memory[] memory)"}},"id":3492,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3309:107:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"src":"3277:139:32","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"id":3494,"nodeType":"ExpressionStatement","src":"3277:139:32"}]},"documentation":{"id":3443,"nodeType":"StructuredDocumentation","src":"2815:28:32","text":"@inheritdoc IPluginSetup"},"functionSelector":"f10832f1","id":3496,"implemented":true,"kind":"function","modifiers":[],"name":"prepareInstallation","nameLocation":"2857:19:32","nodeType":"FunctionDefinition","parameters":{"id":3448,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3445,"mutability":"mutable","name":"_dao","nameLocation":"2894:4:32","nodeType":"VariableDeclaration","scope":3496,"src":"2886:12:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3444,"name":"address","nodeType":"ElementaryTypeName","src":"2886:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3447,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3496,"src":"2908:12:32","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3446,"name":"bytes","nodeType":"ElementaryTypeName","src":"2908:5:32","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2876:50:32"},"returnParameters":{"id":3454,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3450,"mutability":"mutable","name":"plugin","nameLocation":"2953:6:32","nodeType":"VariableDeclaration","scope":3496,"src":"2945:14:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3449,"name":"address","nodeType":"ElementaryTypeName","src":"2945:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3453,"mutability":"mutable","name":"preparedSetupData","nameLocation":"2986:17:32","nodeType":"VariableDeclaration","scope":3496,"src":"2961:42:32","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$4802_memory_ptr","typeString":"struct IPluginSetup.PreparedSetupData"},"typeName":{"id":3452,"nodeType":"UserDefinedTypeName","pathNode":{"id":3451,"name":"PreparedSetupData","nameLocations":["2961:17:32"],"nodeType":"IdentifierPath","referencedDeclaration":4802,"src":"2961:17:32"},"referencedDeclaration":4802,"src":"2961:17:32","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$4802_storage_ptr","typeString":"struct IPluginSetup.PreparedSetupData"}},"visibility":"internal"}],"src":"2944:60:32"},"scope":3582,"src":"2848:575:32","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[4839],"body":{"id":3552,"nodeType":"Block","src":"3715:450:32","statements":[{"expression":{"components":[{"id":3513,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3499,"src":"3726:4:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3514,"name":"_payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3504,"src":"3732:8:32","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$4810_calldata_ptr","typeString":"struct IPluginSetup.SetupPayload calldata"}}],"id":3515,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3725:16:32","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_struct$_SetupPayload_$4810_calldata_ptr_$","typeString":"tuple(address,struct IPluginSetup.SetupPayload calldata)"}},"id":3516,"nodeType":"ExpressionStatement","src":"3725:16:32"},{"condition":{"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"id":3519,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3517,"name":"_fromBuild","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3501,"src":"3787:10:32","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":3518,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3801:1:32","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3787:15:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3551,"nodeType":"IfStatement","src":"3783:376:32","trueBody":{"id":3550,"nodeType":"Block","src":"3804:355:32","statements":[{"expression":{"id":3526,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":3520,"name":"preparedSetupData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3511,"src":"3818:17:32","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$4802_memory_ptr","typeString":"struct IPluginSetup.PreparedSetupData memory"}},"id":3522,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"3836:7:32","memberName":"helpers","nodeType":"MemberAccess","referencedDeclaration":4797,"src":"3818:25:32","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3524,"name":"THIS_BUILD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3429,"src":"3858:10:32","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"}],"id":3523,"name":"mockHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3108,"src":"3846:11:32","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$returns$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"function (uint160) pure returns (address[] memory)"}},"id":3525,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3846:23:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"src":"3818:51:32","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":3527,"nodeType":"ExpressionStatement","src":"3818:51:32"},{"expression":{"id":3536,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3528,"name":"initData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3508,"src":"3883:8:32","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":3531,"name":"PluginUUPSUpgradeableMockBuild2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3185,"src":"3909:31:32","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PluginUUPSUpgradeableMockBuild2_$3185_$","typeString":"type(contract PluginUUPSUpgradeableMockBuild2)"}},"id":3532,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3941:14:32","memberName":"initializeFrom","nodeType":"MemberAccess","referencedDeclaration":3184,"src":"3909:46:32","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_uint16_$returns$__$","typeString":"function PluginUUPSUpgradeableMockBuild2.initializeFrom(uint16)"}},{"components":[{"id":3533,"name":"_fromBuild","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3501,"src":"3958:10:32","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"id":3534,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3957:12:32","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_nonpayable$_t_uint16_$returns$__$","typeString":"function PluginUUPSUpgradeableMockBuild2.initializeFrom(uint16)"},{"typeIdentifier":"t_uint16","typeString":"uint16"}],"expression":{"id":3529,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967295,"src":"3894:3:32","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":3530,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3898:10:32","memberName":"encodeCall","nodeType":"MemberAccess","src":"3894:14:32","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":3535,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3894:76:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"3883:87:32","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":3537,"nodeType":"ExpressionStatement","src":"3883:87:32"},{"expression":{"id":3548,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":3538,"name":"preparedSetupData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3511,"src":"3984:17:32","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$4802_memory_ptr","typeString":"struct IPluginSetup.PreparedSetupData memory"}},"id":3540,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4002:11:32","memberName":"permissions","nodeType":"MemberAccess","referencedDeclaration":4801,"src":"3984:29:32","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3542,"name":"_fromBuild","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3501,"src":"4049:10:32","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"id":3543,"name":"THIS_BUILD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3429,"src":"4077:10:32","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"expression":{"expression":{"id":3544,"name":"PermissionLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3814,"src":"4105:13:32","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PermissionLib_$3814_$","typeString":"type(library PermissionLib)"}},"id":3545,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4119:9:32","memberName":"Operation","nodeType":"MemberAccess","referencedDeclaration":3793,"src":"4105:23:32","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Operation_$3793_$","typeString":"type(enum PermissionLib.Operation)"}},"id":3546,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4129:5:32","memberName":"Grant","nodeType":"MemberAccess","referencedDeclaration":3790,"src":"4105:29:32","typeDescriptions":{"typeIdentifier":"t_enum$_Operation_$3793","typeString":"enum PermissionLib.Operation"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_enum$_Operation_$3793","typeString":"enum PermissionLib.Operation"}],"id":3541,"name":"mockPermissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3069,"src":"4016:15:32","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_enum$_Operation_$3793_$returns$_t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint160,uint160,enum PermissionLib.Operation) pure returns (struct PermissionLib.MultiTargetPermission memory[] memory)"}},"id":3547,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4016:132:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"src":"3984:164:32","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"id":3549,"nodeType":"ExpressionStatement","src":"3984:164:32"}]}}]},"documentation":{"id":3497,"nodeType":"StructuredDocumentation","src":"3429:28:32","text":"@inheritdoc IPluginSetup"},"functionSelector":"a8a9c29e","id":3553,"implemented":true,"kind":"function","modifiers":[],"name":"prepareUpdate","nameLocation":"3471:13:32","nodeType":"FunctionDefinition","overrides":{"id":3506,"nodeType":"OverrideSpecifier","overrides":[],"src":"3618:8:32"},"parameters":{"id":3505,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3499,"mutability":"mutable","name":"_dao","nameLocation":"3502:4:32","nodeType":"VariableDeclaration","scope":3553,"src":"3494:12:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3498,"name":"address","nodeType":"ElementaryTypeName","src":"3494:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3501,"mutability":"mutable","name":"_fromBuild","nameLocation":"3523:10:32","nodeType":"VariableDeclaration","scope":3553,"src":"3516:17:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":3500,"name":"uint16","nodeType":"ElementaryTypeName","src":"3516:6:32","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":3504,"mutability":"mutable","name":"_payload","nameLocation":"3565:8:32","nodeType":"VariableDeclaration","scope":3553,"src":"3543:30:32","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$4810_calldata_ptr","typeString":"struct IPluginSetup.SetupPayload"},"typeName":{"id":3503,"nodeType":"UserDefinedTypeName","pathNode":{"id":3502,"name":"SetupPayload","nameLocations":["3543:12:32"],"nodeType":"IdentifierPath","referencedDeclaration":4810,"src":"3543:12:32"},"referencedDeclaration":4810,"src":"3543:12:32","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$4810_storage_ptr","typeString":"struct IPluginSetup.SetupPayload"}},"visibility":"internal"}],"src":"3484:95:32"},"returnParameters":{"id":3512,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3508,"mutability":"mutable","name":"initData","nameLocation":"3657:8:32","nodeType":"VariableDeclaration","scope":3553,"src":"3644:21:32","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3507,"name":"bytes","nodeType":"ElementaryTypeName","src":"3644:5:32","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":3511,"mutability":"mutable","name":"preparedSetupData","nameLocation":"3692:17:32","nodeType":"VariableDeclaration","scope":3553,"src":"3667:42:32","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$4802_memory_ptr","typeString":"struct IPluginSetup.PreparedSetupData"},"typeName":{"id":3510,"nodeType":"UserDefinedTypeName","pathNode":{"id":3509,"name":"PreparedSetupData","nameLocations":["3667:17:32"],"nodeType":"IdentifierPath","referencedDeclaration":4802,"src":"3667:17:32"},"referencedDeclaration":4802,"src":"3667:17:32","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$4802_storage_ptr","typeString":"struct IPluginSetup.PreparedSetupData"}},"visibility":"internal"}],"src":"3643:67:32"},"scope":3582,"src":"3462:703:32","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[4852],"body":{"id":3580,"nodeType":"Block","src":"4384:119:32","statements":[{"expression":{"components":[{"id":3566,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3556,"src":"4395:4:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3567,"name":"_payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3559,"src":"4401:8:32","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$4810_calldata_ptr","typeString":"struct IPluginSetup.SetupPayload calldata"}}],"id":3568,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4394:16:32","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_struct$_SetupPayload_$4810_calldata_ptr_$","typeString":"tuple(address,struct IPluginSetup.SetupPayload calldata)"}},"id":3569,"nodeType":"ExpressionStatement","src":"4394:16:32"},{"expression":{"id":3578,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3570,"name":"permissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3564,"src":"4420:11:32","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"hexValue":"30","id":3572,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4450:1:32","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":3573,"name":"THIS_BUILD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3429,"src":"4453:10:32","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"expression":{"expression":{"id":3574,"name":"PermissionLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3814,"src":"4465:13:32","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PermissionLib_$3814_$","typeString":"type(library PermissionLib)"}},"id":3575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4479:9:32","memberName":"Operation","nodeType":"MemberAccess","referencedDeclaration":3793,"src":"4465:23:32","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Operation_$3793_$","typeString":"type(enum PermissionLib.Operation)"}},"id":3576,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4489:6:32","memberName":"Revoke","nodeType":"MemberAccess","referencedDeclaration":3791,"src":"4465:30:32","typeDescriptions":{"typeIdentifier":"t_enum$_Operation_$3793","typeString":"enum PermissionLib.Operation"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_enum$_Operation_$3793","typeString":"enum PermissionLib.Operation"}],"id":3571,"name":"mockPermissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3069,"src":"4434:15:32","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_enum$_Operation_$3793_$returns$_t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint160,uint160,enum PermissionLib.Operation) pure returns (struct PermissionLib.MultiTargetPermission memory[] memory)"}},"id":3577,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4434:62:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"src":"4420:76:32","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"id":3579,"nodeType":"ExpressionStatement","src":"4420:76:32"}]},"documentation":{"id":3554,"nodeType":"StructuredDocumentation","src":"4171:28:32","text":"@inheritdoc IPluginSetup"},"functionSelector":"9cb0a124","id":3581,"implemented":true,"kind":"function","modifiers":[],"name":"prepareUninstallation","nameLocation":"4213:21:32","nodeType":"FunctionDefinition","parameters":{"id":3560,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3556,"mutability":"mutable","name":"_dao","nameLocation":"4252:4:32","nodeType":"VariableDeclaration","scope":3581,"src":"4244:12:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3555,"name":"address","nodeType":"ElementaryTypeName","src":"4244:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3559,"mutability":"mutable","name":"_payload","nameLocation":"4288:8:32","nodeType":"VariableDeclaration","scope":3581,"src":"4266:30:32","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$4810_calldata_ptr","typeString":"struct IPluginSetup.SetupPayload"},"typeName":{"id":3558,"nodeType":"UserDefinedTypeName","pathNode":{"id":3557,"name":"SetupPayload","nameLocations":["4266:12:32"],"nodeType":"IdentifierPath","referencedDeclaration":4810,"src":"4266:12:32"},"referencedDeclaration":4810,"src":"4266:12:32","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$4810_storage_ptr","typeString":"struct IPluginSetup.SetupPayload"}},"visibility":"internal"}],"src":"4234:68:32"},"returnParameters":{"id":3565,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3564,"mutability":"mutable","name":"permissions","nameLocation":"4371:11:32","nodeType":"VariableDeclaration","scope":3581,"src":"4326:56:32","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission[]"},"typeName":{"baseType":{"id":3562,"nodeType":"UserDefinedTypeName","pathNode":{"id":3561,"name":"PermissionLib.MultiTargetPermission","nameLocations":["4326:13:32","4340:21:32"],"nodeType":"IdentifierPath","referencedDeclaration":3813,"src":"4326:35:32"},"referencedDeclaration":3813,"src":"4326:35:32","typeDescriptions":{"typeIdentifier":"t_struct$_MultiTargetPermission_$3813_storage_ptr","typeString":"struct PermissionLib.MultiTargetPermission"}},"id":3563,"nodeType":"ArrayTypeName","src":"4326:37:32","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_storage_$dyn_storage_ptr","typeString":"struct PermissionLib.MultiTargetPermission[]"}},"visibility":"internal"}],"src":"4325:58:32"},"scope":3582,"src":"4204:299:32","stateMutability":"pure","virtual":false,"visibility":"external"}],"scope":3780,"src":"2565:1940:32","usedErrors":[2999,4984]},{"abstract":false,"baseContracts":[{"baseName":{"id":3584,"name":"PluginUpgradeableSetup","nameLocations":["4680:22:32"],"nodeType":"IdentifierPath","referencedDeclaration":5034,"src":"4680:22:32"},"id":3585,"nodeType":"InheritanceSpecifier","src":"4680:22:32"}],"canonicalName":"PluginUUPSUpgradeableSetupMockBuild3","contractDependencies":[1441,3248],"contractKind":"contract","documentation":{"id":3583,"nodeType":"StructuredDocumentation","src":"4507:124:32","text":"@notice A mock plugin setup of an upgradeable plugin to be deployed via the UUPS pattern.\n v1.3 (Release 1, Build 3)"},"fullyImplemented":true,"id":3779,"linearizedBaseContracts":[3779,5034,5136,5114,4859,2375,2387],"name":"PluginUUPSUpgradeableSetupMockBuild3","nameLocation":"4640:36:32","nodeType":"ContractDefinition","nodes":[{"global":false,"id":3588,"libraryName":{"id":3586,"name":"ProxyLib","nameLocations":["4715:8:32"],"nodeType":"IdentifierPath","referencedDeclaration":5102,"src":"4715:8:32"},"nodeType":"UsingForDirective","src":"4709:27:32","typeName":{"id":3587,"name":"address","nodeType":"ElementaryTypeName","src":"4728:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},{"constant":true,"id":3591,"mutability":"constant","name":"THIS_BUILD","nameLocation":"4767:10:32","nodeType":"VariableDeclaration","scope":3779,"src":"4742:39:32","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":3589,"name":"uint16","nodeType":"ElementaryTypeName","src":"4742:6:32","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"value":{"hexValue":"33","id":3590,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4780:1:32","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"visibility":"internal"},{"body":{"id":3603,"nodeType":"Block","src":"4873:2:32","statements":[]},"id":3604,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":3598,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"NewExpression","src":"4833:35:32","typeDescriptions":{"typeIdentifier":"t_function_creation_nonpayable$__$returns$_t_contract$_PluginUUPSUpgradeableMockBuild3_$3248_$","typeString":"function () returns (contract PluginUUPSUpgradeableMockBuild3)"},"typeName":{"id":3597,"nodeType":"UserDefinedTypeName","pathNode":{"id":3596,"name":"PluginUUPSUpgradeableMockBuild3","nameLocations":["4837:31:32"],"nodeType":"IdentifierPath","referencedDeclaration":3248,"src":"4837:31:32"},"referencedDeclaration":3248,"src":"4837:31:32","typeDescriptions":{"typeIdentifier":"t_contract$_PluginUUPSUpgradeableMockBuild3_$3248","typeString":"contract PluginUUPSUpgradeableMockBuild3"}}},"id":3599,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4833:37:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_PluginUUPSUpgradeableMockBuild3_$3248","typeString":"contract PluginUUPSUpgradeableMockBuild3"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_PluginUUPSUpgradeableMockBuild3_$3248","typeString":"contract PluginUUPSUpgradeableMockBuild3"}],"id":3595,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4825:7:32","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3594,"name":"address","nodeType":"ElementaryTypeName","src":"4825:7:32","typeDescriptions":{}}},"id":3600,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4825:46:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":3601,"kind":"baseConstructorSpecifier","modifierName":{"id":3593,"name":"PluginUpgradeableSetup","nameLocations":["4802:22:32"],"nodeType":"IdentifierPath","referencedDeclaration":5034,"src":"4802:22:32"},"nodeType":"ModifierInvocation","src":"4802:70:32"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":3592,"nodeType":"ParameterList","parameters":[],"src":"4799:2:32"},"returnParameters":{"id":3602,"nodeType":"ParameterList","parameters":[],"src":"4873:0:32"},"scope":3779,"src":"4788:87:32","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[4823],"body":{"id":3657,"nodeType":"Block","src":"5071:418:32","statements":[{"assignments":[3618],"declarations":[{"constant":false,"id":3618,"mutability":"mutable","name":"initData","nameLocation":"5094:8:32","nodeType":"VariableDeclaration","scope":3657,"src":"5081:21:32","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3617,"name":"bytes","nodeType":"ElementaryTypeName","src":"5081:5:32","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":3628,"initialValue":{"arguments":[{"expression":{"id":3621,"name":"PluginUUPSUpgradeableMockBuild3","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3248,"src":"5133:31:32","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PluginUUPSUpgradeableMockBuild3_$3248_$","typeString":"type(contract PluginUUPSUpgradeableMockBuild3)"}},"id":3622,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5165:10:32","memberName":"initialize","nodeType":"MemberAccess","referencedDeclaration":3220,"src":"5133:42:32","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_contract$_IDAO_$2538_$returns$__$","typeString":"function PluginUUPSUpgradeableMockBuild3.initialize(contract IDAO)"}},{"components":[{"arguments":[{"id":3624,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3607,"src":"5195:4:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3623,"name":"IDAO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2538,"src":"5190:4:32","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IDAO_$2538_$","typeString":"type(contract IDAO)"}},"id":3625,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5190:10:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}}],"id":3626,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5189:12:32","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_nonpayable$_t_contract$_IDAO_$2538_$returns$__$","typeString":"function PluginUUPSUpgradeableMockBuild3.initialize(contract IDAO)"},{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}],"expression":{"id":3619,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967295,"src":"5105:3:32","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":3620,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5109:10:32","memberName":"encodeCall","nodeType":"MemberAccess","src":"5105:14:32","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":3627,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5105:106:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"5081:130:32"},{"expression":{"id":3635,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3629,"name":"plugin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3612,"src":"5221:6:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3633,"name":"initData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3618,"src":"5263:8:32","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":3630,"name":"implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5033,"src":"5230:14:32","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":3631,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5230:16:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3632,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5247:15:32","memberName":"deployUUPSProxy","nodeType":"MemberAccess","referencedDeclaration":5072,"src":"5230:32:32","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_address_$bound_to$_t_address_$","typeString":"function (address,bytes memory) returns (address)"}},"id":3634,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5230:42:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5221:51:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3636,"nodeType":"ExpressionStatement","src":"5221:51:32"},{"expression":{"id":3643,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":3637,"name":"preparedSetupData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3615,"src":"5282:17:32","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$4802_memory_ptr","typeString":"struct IPluginSetup.PreparedSetupData memory"}},"id":3639,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5300:7:32","memberName":"helpers","nodeType":"MemberAccess","referencedDeclaration":4797,"src":"5282:25:32","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3641,"name":"THIS_BUILD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3591,"src":"5322:10:32","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"}],"id":3640,"name":"mockHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3108,"src":"5310:11:32","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$returns$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"function (uint160) pure returns (address[] memory)"}},"id":3642,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5310:23:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"src":"5282:51:32","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":3644,"nodeType":"ExpressionStatement","src":"5282:51:32"},{"expression":{"id":3655,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":3645,"name":"preparedSetupData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3615,"src":"5343:17:32","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$4802_memory_ptr","typeString":"struct IPluginSetup.PreparedSetupData memory"}},"id":3647,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5361:11:32","memberName":"permissions","nodeType":"MemberAccess","referencedDeclaration":4801,"src":"5343:29:32","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"hexValue":"30","id":3649,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5404:1:32","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":3650,"name":"THIS_BUILD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3591,"src":"5419:10:32","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"expression":{"expression":{"id":3651,"name":"PermissionLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3814,"src":"5443:13:32","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PermissionLib_$3814_$","typeString":"type(library PermissionLib)"}},"id":3652,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5457:9:32","memberName":"Operation","nodeType":"MemberAccess","referencedDeclaration":3793,"src":"5443:23:32","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Operation_$3793_$","typeString":"type(enum PermissionLib.Operation)"}},"id":3653,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5467:5:32","memberName":"Grant","nodeType":"MemberAccess","referencedDeclaration":3790,"src":"5443:29:32","typeDescriptions":{"typeIdentifier":"t_enum$_Operation_$3793","typeString":"enum PermissionLib.Operation"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_enum$_Operation_$3793","typeString":"enum PermissionLib.Operation"}],"id":3648,"name":"mockPermissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3069,"src":"5375:15:32","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_enum$_Operation_$3793_$returns$_t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint160,uint160,enum PermissionLib.Operation) pure returns (struct PermissionLib.MultiTargetPermission memory[] memory)"}},"id":3654,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5375:107:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"src":"5343:139:32","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"id":3656,"nodeType":"ExpressionStatement","src":"5343:139:32"}]},"documentation":{"id":3605,"nodeType":"StructuredDocumentation","src":"4881:28:32","text":"@inheritdoc IPluginSetup"},"functionSelector":"f10832f1","id":3658,"implemented":true,"kind":"function","modifiers":[],"name":"prepareInstallation","nameLocation":"4923:19:32","nodeType":"FunctionDefinition","parameters":{"id":3610,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3607,"mutability":"mutable","name":"_dao","nameLocation":"4960:4:32","nodeType":"VariableDeclaration","scope":3658,"src":"4952:12:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3606,"name":"address","nodeType":"ElementaryTypeName","src":"4952:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3609,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3658,"src":"4974:12:32","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3608,"name":"bytes","nodeType":"ElementaryTypeName","src":"4974:5:32","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4942:50:32"},"returnParameters":{"id":3616,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3612,"mutability":"mutable","name":"plugin","nameLocation":"5019:6:32","nodeType":"VariableDeclaration","scope":3658,"src":"5011:14:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3611,"name":"address","nodeType":"ElementaryTypeName","src":"5011:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3615,"mutability":"mutable","name":"preparedSetupData","nameLocation":"5052:17:32","nodeType":"VariableDeclaration","scope":3658,"src":"5027:42:32","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$4802_memory_ptr","typeString":"struct IPluginSetup.PreparedSetupData"},"typeName":{"id":3614,"nodeType":"UserDefinedTypeName","pathNode":{"id":3613,"name":"PreparedSetupData","nameLocations":["5027:17:32"],"nodeType":"IdentifierPath","referencedDeclaration":4802,"src":"5027:17:32"},"referencedDeclaration":4802,"src":"5027:17:32","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$4802_storage_ptr","typeString":"struct IPluginSetup.PreparedSetupData"}},"visibility":"internal"}],"src":"5010:60:32"},"scope":3779,"src":"4914:575:32","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[4839],"body":{"id":3749,"nodeType":"Block","src":"5781:1053:32","statements":[{"expression":{"components":[{"id":3675,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3661,"src":"5792:4:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3676,"name":"_payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3666,"src":"5798:8:32","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$4810_calldata_ptr","typeString":"struct IPluginSetup.SetupPayload calldata"}}],"id":3677,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5791:16:32","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_struct$_SetupPayload_$4810_calldata_ptr_$","typeString":"tuple(address,struct IPluginSetup.SetupPayload calldata)"}},"id":3678,"nodeType":"ExpressionStatement","src":"5791:16:32"},{"condition":{"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"id":3681,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3679,"name":"_fromBuild","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3663,"src":"5853:10:32","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":3680,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5867:1:32","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"5853:15:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3713,"nodeType":"IfStatement","src":"5849:562:32","trueBody":{"id":3712,"nodeType":"Block","src":"5870:541:32","statements":[{"expression":{"id":3688,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":3682,"name":"preparedSetupData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3673,"src":"5884:17:32","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$4802_memory_ptr","typeString":"struct IPluginSetup.PreparedSetupData memory"}},"id":3684,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5902:7:32","memberName":"helpers","nodeType":"MemberAccess","referencedDeclaration":4797,"src":"5884:25:32","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3686,"name":"THIS_BUILD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3591,"src":"5924:10:32","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"}],"id":3685,"name":"mockHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3108,"src":"5912:11:32","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$returns$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"function (uint160) pure returns (address[] memory)"}},"id":3687,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5912:23:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"src":"5884:51:32","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":3689,"nodeType":"ExpressionStatement","src":"5884:51:32"},{"expression":{"id":3698,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3690,"name":"initData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3670,"src":"5949:8:32","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":3693,"name":"PluginUUPSUpgradeableMockBuild3","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3248,"src":"5975:31:32","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PluginUUPSUpgradeableMockBuild3_$3248_$","typeString":"type(contract PluginUUPSUpgradeableMockBuild3)"}},"id":3694,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6007:14:32","memberName":"initializeFrom","nodeType":"MemberAccess","referencedDeclaration":3247,"src":"5975:46:32","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_uint16_$returns$__$","typeString":"function PluginUUPSUpgradeableMockBuild3.initializeFrom(uint16)"}},{"components":[{"id":3695,"name":"_fromBuild","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3663,"src":"6024:10:32","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"id":3696,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6023:12:32","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_nonpayable$_t_uint16_$returns$__$","typeString":"function PluginUUPSUpgradeableMockBuild3.initializeFrom(uint16)"},{"typeIdentifier":"t_uint16","typeString":"uint16"}],"expression":{"id":3691,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967295,"src":"5960:3:32","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":3692,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5964:10:32","memberName":"encodeCall","nodeType":"MemberAccess","src":"5960:14:32","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":3697,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5960:76:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"5949:87:32","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":3699,"nodeType":"ExpressionStatement","src":"5949:87:32"},{"expression":{"id":3710,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":3700,"name":"preparedSetupData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3673,"src":"6050:17:32","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$4802_memory_ptr","typeString":"struct IPluginSetup.PreparedSetupData memory"}},"id":3702,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"6068:11:32","memberName":"permissions","nodeType":"MemberAccess","referencedDeclaration":4801,"src":"6050:29:32","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3704,"name":"_fromBuild","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3663,"src":"6115:10:32","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"id":3705,"name":"THIS_BUILD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3591,"src":"6143:10:32","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"expression":{"expression":{"id":3706,"name":"PermissionLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3814,"src":"6171:13:32","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PermissionLib_$3814_$","typeString":"type(library PermissionLib)"}},"id":3707,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6185:9:32","memberName":"Operation","nodeType":"MemberAccess","referencedDeclaration":3793,"src":"6171:23:32","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Operation_$3793_$","typeString":"type(enum PermissionLib.Operation)"}},"id":3708,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6195:5:32","memberName":"Grant","nodeType":"MemberAccess","referencedDeclaration":3790,"src":"6171:29:32","typeDescriptions":{"typeIdentifier":"t_enum$_Operation_$3793","typeString":"enum PermissionLib.Operation"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_enum$_Operation_$3793","typeString":"enum PermissionLib.Operation"}],"id":3703,"name":"mockPermissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3069,"src":"6082:15:32","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_enum$_Operation_$3793_$returns$_t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint160,uint160,enum PermissionLib.Operation) pure returns (struct PermissionLib.MultiTargetPermission memory[] memory)"}},"id":3709,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6082:132:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"src":"6050:164:32","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"id":3711,"nodeType":"ExpressionStatement","src":"6050:164:32"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"id":3716,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3714,"name":"_fromBuild","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3663,"src":"6456:10:32","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"32","id":3715,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6470:1:32","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"6456:15:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3748,"nodeType":"IfStatement","src":"6452:376:32","trueBody":{"id":3747,"nodeType":"Block","src":"6473:355:32","statements":[{"expression":{"id":3723,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":3717,"name":"preparedSetupData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3673,"src":"6487:17:32","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$4802_memory_ptr","typeString":"struct IPluginSetup.PreparedSetupData memory"}},"id":3719,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"6505:7:32","memberName":"helpers","nodeType":"MemberAccess","referencedDeclaration":4797,"src":"6487:25:32","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3721,"name":"THIS_BUILD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3591,"src":"6527:10:32","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"}],"id":3720,"name":"mockHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3108,"src":"6515:11:32","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$returns$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"function (uint160) pure returns (address[] memory)"}},"id":3722,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6515:23:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"src":"6487:51:32","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":3724,"nodeType":"ExpressionStatement","src":"6487:51:32"},{"expression":{"id":3733,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3725,"name":"initData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3670,"src":"6552:8:32","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":3728,"name":"PluginUUPSUpgradeableMockBuild3","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3248,"src":"6578:31:32","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PluginUUPSUpgradeableMockBuild3_$3248_$","typeString":"type(contract PluginUUPSUpgradeableMockBuild3)"}},"id":3729,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6610:14:32","memberName":"initializeFrom","nodeType":"MemberAccess","referencedDeclaration":3247,"src":"6578:46:32","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_uint16_$returns$__$","typeString":"function PluginUUPSUpgradeableMockBuild3.initializeFrom(uint16)"}},{"components":[{"id":3730,"name":"_fromBuild","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3663,"src":"6627:10:32","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"id":3731,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6626:12:32","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_nonpayable$_t_uint16_$returns$__$","typeString":"function PluginUUPSUpgradeableMockBuild3.initializeFrom(uint16)"},{"typeIdentifier":"t_uint16","typeString":"uint16"}],"expression":{"id":3726,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967295,"src":"6563:3:32","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":3727,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6567:10:32","memberName":"encodeCall","nodeType":"MemberAccess","src":"6563:14:32","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":3732,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6563:76:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"6552:87:32","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":3734,"nodeType":"ExpressionStatement","src":"6552:87:32"},{"expression":{"id":3745,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":3735,"name":"preparedSetupData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3673,"src":"6653:17:32","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$4802_memory_ptr","typeString":"struct IPluginSetup.PreparedSetupData memory"}},"id":3737,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"6671:11:32","memberName":"permissions","nodeType":"MemberAccess","referencedDeclaration":4801,"src":"6653:29:32","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3739,"name":"_fromBuild","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3663,"src":"6718:10:32","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"id":3740,"name":"THIS_BUILD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3591,"src":"6746:10:32","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"expression":{"expression":{"id":3741,"name":"PermissionLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3814,"src":"6774:13:32","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PermissionLib_$3814_$","typeString":"type(library PermissionLib)"}},"id":3742,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6788:9:32","memberName":"Operation","nodeType":"MemberAccess","referencedDeclaration":3793,"src":"6774:23:32","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Operation_$3793_$","typeString":"type(enum PermissionLib.Operation)"}},"id":3743,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6798:5:32","memberName":"Grant","nodeType":"MemberAccess","referencedDeclaration":3790,"src":"6774:29:32","typeDescriptions":{"typeIdentifier":"t_enum$_Operation_$3793","typeString":"enum PermissionLib.Operation"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_enum$_Operation_$3793","typeString":"enum PermissionLib.Operation"}],"id":3738,"name":"mockPermissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3069,"src":"6685:15:32","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_enum$_Operation_$3793_$returns$_t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint160,uint160,enum PermissionLib.Operation) pure returns (struct PermissionLib.MultiTargetPermission memory[] memory)"}},"id":3744,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6685:132:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"src":"6653:164:32","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"id":3746,"nodeType":"ExpressionStatement","src":"6653:164:32"}]}}]},"documentation":{"id":3659,"nodeType":"StructuredDocumentation","src":"5495:28:32","text":"@inheritdoc IPluginSetup"},"functionSelector":"a8a9c29e","id":3750,"implemented":true,"kind":"function","modifiers":[],"name":"prepareUpdate","nameLocation":"5537:13:32","nodeType":"FunctionDefinition","overrides":{"id":3668,"nodeType":"OverrideSpecifier","overrides":[],"src":"5684:8:32"},"parameters":{"id":3667,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3661,"mutability":"mutable","name":"_dao","nameLocation":"5568:4:32","nodeType":"VariableDeclaration","scope":3750,"src":"5560:12:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3660,"name":"address","nodeType":"ElementaryTypeName","src":"5560:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3663,"mutability":"mutable","name":"_fromBuild","nameLocation":"5589:10:32","nodeType":"VariableDeclaration","scope":3750,"src":"5582:17:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":3662,"name":"uint16","nodeType":"ElementaryTypeName","src":"5582:6:32","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":3666,"mutability":"mutable","name":"_payload","nameLocation":"5631:8:32","nodeType":"VariableDeclaration","scope":3750,"src":"5609:30:32","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$4810_calldata_ptr","typeString":"struct IPluginSetup.SetupPayload"},"typeName":{"id":3665,"nodeType":"UserDefinedTypeName","pathNode":{"id":3664,"name":"SetupPayload","nameLocations":["5609:12:32"],"nodeType":"IdentifierPath","referencedDeclaration":4810,"src":"5609:12:32"},"referencedDeclaration":4810,"src":"5609:12:32","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$4810_storage_ptr","typeString":"struct IPluginSetup.SetupPayload"}},"visibility":"internal"}],"src":"5550:95:32"},"returnParameters":{"id":3674,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3670,"mutability":"mutable","name":"initData","nameLocation":"5723:8:32","nodeType":"VariableDeclaration","scope":3750,"src":"5710:21:32","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3669,"name":"bytes","nodeType":"ElementaryTypeName","src":"5710:5:32","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":3673,"mutability":"mutable","name":"preparedSetupData","nameLocation":"5758:17:32","nodeType":"VariableDeclaration","scope":3750,"src":"5733:42:32","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$4802_memory_ptr","typeString":"struct IPluginSetup.PreparedSetupData"},"typeName":{"id":3672,"nodeType":"UserDefinedTypeName","pathNode":{"id":3671,"name":"PreparedSetupData","nameLocations":["5733:17:32"],"nodeType":"IdentifierPath","referencedDeclaration":4802,"src":"5733:17:32"},"referencedDeclaration":4802,"src":"5733:17:32","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$4802_storage_ptr","typeString":"struct IPluginSetup.PreparedSetupData"}},"visibility":"internal"}],"src":"5709:67:32"},"scope":3779,"src":"5528:1306:32","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[4852],"body":{"id":3777,"nodeType":"Block","src":"7053:119:32","statements":[{"expression":{"components":[{"id":3763,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3753,"src":"7064:4:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3764,"name":"_payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3756,"src":"7070:8:32","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$4810_calldata_ptr","typeString":"struct IPluginSetup.SetupPayload calldata"}}],"id":3765,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7063:16:32","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_struct$_SetupPayload_$4810_calldata_ptr_$","typeString":"tuple(address,struct IPluginSetup.SetupPayload calldata)"}},"id":3766,"nodeType":"ExpressionStatement","src":"7063:16:32"},{"expression":{"id":3775,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3767,"name":"permissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3761,"src":"7089:11:32","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"hexValue":"30","id":3769,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7119:1:32","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":3770,"name":"THIS_BUILD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3591,"src":"7122:10:32","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"expression":{"expression":{"id":3771,"name":"PermissionLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3814,"src":"7134:13:32","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PermissionLib_$3814_$","typeString":"type(library PermissionLib)"}},"id":3772,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7148:9:32","memberName":"Operation","nodeType":"MemberAccess","referencedDeclaration":3793,"src":"7134:23:32","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Operation_$3793_$","typeString":"type(enum PermissionLib.Operation)"}},"id":3773,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7158:6:32","memberName":"Revoke","nodeType":"MemberAccess","referencedDeclaration":3791,"src":"7134:30:32","typeDescriptions":{"typeIdentifier":"t_enum$_Operation_$3793","typeString":"enum PermissionLib.Operation"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_enum$_Operation_$3793","typeString":"enum PermissionLib.Operation"}],"id":3768,"name":"mockPermissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3069,"src":"7103:15:32","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint160_$_t_uint160_$_t_enum$_Operation_$3793_$returns$_t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint160,uint160,enum PermissionLib.Operation) pure returns (struct PermissionLib.MultiTargetPermission memory[] memory)"}},"id":3774,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7103:62:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"src":"7089:76:32","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission memory[] memory"}},"id":3776,"nodeType":"ExpressionStatement","src":"7089:76:32"}]},"documentation":{"id":3751,"nodeType":"StructuredDocumentation","src":"6840:28:32","text":"@inheritdoc IPluginSetup"},"functionSelector":"9cb0a124","id":3778,"implemented":true,"kind":"function","modifiers":[],"name":"prepareUninstallation","nameLocation":"6882:21:32","nodeType":"FunctionDefinition","parameters":{"id":3757,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3753,"mutability":"mutable","name":"_dao","nameLocation":"6921:4:32","nodeType":"VariableDeclaration","scope":3778,"src":"6913:12:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3752,"name":"address","nodeType":"ElementaryTypeName","src":"6913:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3756,"mutability":"mutable","name":"_payload","nameLocation":"6957:8:32","nodeType":"VariableDeclaration","scope":3778,"src":"6935:30:32","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$4810_calldata_ptr","typeString":"struct IPluginSetup.SetupPayload"},"typeName":{"id":3755,"nodeType":"UserDefinedTypeName","pathNode":{"id":3754,"name":"SetupPayload","nameLocations":["6935:12:32"],"nodeType":"IdentifierPath","referencedDeclaration":4810,"src":"6935:12:32"},"referencedDeclaration":4810,"src":"6935:12:32","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$4810_storage_ptr","typeString":"struct IPluginSetup.SetupPayload"}},"visibility":"internal"}],"src":"6903:68:32"},"returnParameters":{"id":3762,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3761,"mutability":"mutable","name":"permissions","nameLocation":"7040:11:32","nodeType":"VariableDeclaration","scope":3778,"src":"6995:56:32","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission[]"},"typeName":{"baseType":{"id":3759,"nodeType":"UserDefinedTypeName","pathNode":{"id":3758,"name":"PermissionLib.MultiTargetPermission","nameLocations":["6995:13:32","7009:21:32"],"nodeType":"IdentifierPath","referencedDeclaration":3813,"src":"6995:35:32"},"referencedDeclaration":3813,"src":"6995:35:32","typeDescriptions":{"typeIdentifier":"t_struct$_MultiTargetPermission_$3813_storage_ptr","typeString":"struct PermissionLib.MultiTargetPermission"}},"id":3760,"nodeType":"ArrayTypeName","src":"6995:37:32","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_storage_$dyn_storage_ptr","typeString":"struct PermissionLib.MultiTargetPermission[]"}},"visibility":"internal"}],"src":"6994:58:32"},"scope":3779,"src":"6873:299:32","stateMutability":"pure","virtual":false,"visibility":"external"}],"scope":3780,"src":"4631:2543:32","usedErrors":[2999,4984]}],"src":"91:7084:32"},"id":32},"src/permission/PermissionLib.sol":{"ast":{"absolutePath":"src/permission/PermissionLib.sol","exportedSymbols":{"PermissionLib":[3814]},"id":3815,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":3781,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:33"},{"abstract":false,"baseContracts":[],"canonicalName":"PermissionLib","contractDependencies":[],"contractKind":"library","documentation":{"id":3782,"nodeType":"StructuredDocumentation","src":"72:171:33","text":"@title PermissionLib\n @author Aragon X - 2021-2023\n @notice A library containing objects for permission processing.\n @custom:security-contact sirt@aragon.org"},"fullyImplemented":true,"id":3814,"linearizedBaseContracts":[3814],"name":"PermissionLib","nameLocation":"251:13:33","nodeType":"ContractDefinition","nodes":[{"constant":true,"documentation":{"id":3783,"nodeType":"StructuredDocumentation","src":"271:79:33","text":"@notice A constant expressing that no condition is applied to a permission."},"functionSelector":"6dd02a5b","id":3789,"mutability":"constant","name":"NO_CONDITION","nameLocation":"379:12:33","nodeType":"VariableDeclaration","scope":3814,"src":"355:49:33","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3784,"name":"address","nodeType":"ElementaryTypeName","src":"355:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":{"arguments":[{"hexValue":"30","id":3787,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"402:1:33","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3786,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"394:7:33","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3785,"name":"address","nodeType":"ElementaryTypeName","src":"394:7:33","typeDescriptions":{}}},"id":3788,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"394:10:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"canonicalName":"PermissionLib.Operation","id":3793,"members":[{"id":3790,"name":"Grant","nameLocation":"814:5:33","nodeType":"EnumValue","src":"814:5:33"},{"id":3791,"name":"Revoke","nameLocation":"829:6:33","nodeType":"EnumValue","src":"829:6:33"},{"id":3792,"name":"GrantWithCondition","nameLocation":"845:18:33","nodeType":"EnumValue","src":"845:18:33"}],"name":"Operation","nameLocation":"794:9:33","nodeType":"EnumDefinition","src":"789:80:33"},{"canonicalName":"PermissionLib.SingleTargetPermission","id":3801,"members":[{"constant":false,"id":3796,"mutability":"mutable","name":"operation","nameLocation":"1243:9:33","nodeType":"VariableDeclaration","scope":3801,"src":"1233:19:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Operation_$3793","typeString":"enum PermissionLib.Operation"},"typeName":{"id":3795,"nodeType":"UserDefinedTypeName","pathNode":{"id":3794,"name":"Operation","nameLocations":["1233:9:33"],"nodeType":"IdentifierPath","referencedDeclaration":3793,"src":"1233:9:33"},"referencedDeclaration":3793,"src":"1233:9:33","typeDescriptions":{"typeIdentifier":"t_enum$_Operation_$3793","typeString":"enum PermissionLib.Operation"}},"visibility":"internal"},{"constant":false,"id":3798,"mutability":"mutable","name":"who","nameLocation":"1270:3:33","nodeType":"VariableDeclaration","scope":3801,"src":"1262:11:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3797,"name":"address","nodeType":"ElementaryTypeName","src":"1262:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3800,"mutability":"mutable","name":"permissionId","nameLocation":"1291:12:33","nodeType":"VariableDeclaration","scope":3801,"src":"1283:20:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3799,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1283:7:33","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"name":"SingleTargetPermission","nameLocation":"1200:22:33","nodeType":"StructDefinition","scope":3814,"src":"1193:117:33","visibility":"public"},{"canonicalName":"PermissionLib.MultiTargetPermission","id":3813,"members":[{"constant":false,"id":3804,"mutability":"mutable","name":"operation","nameLocation":"1934:9:33","nodeType":"VariableDeclaration","scope":3813,"src":"1924:19:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Operation_$3793","typeString":"enum PermissionLib.Operation"},"typeName":{"id":3803,"nodeType":"UserDefinedTypeName","pathNode":{"id":3802,"name":"Operation","nameLocations":["1924:9:33"],"nodeType":"IdentifierPath","referencedDeclaration":3793,"src":"1924:9:33"},"referencedDeclaration":3793,"src":"1924:9:33","typeDescriptions":{"typeIdentifier":"t_enum$_Operation_$3793","typeString":"enum PermissionLib.Operation"}},"visibility":"internal"},{"constant":false,"id":3806,"mutability":"mutable","name":"where","nameLocation":"1961:5:33","nodeType":"VariableDeclaration","scope":3813,"src":"1953:13:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3805,"name":"address","nodeType":"ElementaryTypeName","src":"1953:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3808,"mutability":"mutable","name":"who","nameLocation":"1984:3:33","nodeType":"VariableDeclaration","scope":3813,"src":"1976:11:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3807,"name":"address","nodeType":"ElementaryTypeName","src":"1976:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3810,"mutability":"mutable","name":"condition","nameLocation":"2005:9:33","nodeType":"VariableDeclaration","scope":3813,"src":"1997:17:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3809,"name":"address","nodeType":"ElementaryTypeName","src":"1997:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3812,"mutability":"mutable","name":"permissionId","nameLocation":"2032:12:33","nodeType":"VariableDeclaration","scope":3813,"src":"2024:20:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3811,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2024:7:33","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"name":"MultiTargetPermission","nameLocation":"1892:21:33","nodeType":"StructDefinition","scope":3814,"src":"1885:166:33","visibility":"public"}],"scope":3815,"src":"243:1810:33","usedErrors":[]}],"src":"47:2007:33"},"id":33},"src/permission/auth/DaoAuthorizable.sol":{"ast":{"absolutePath":"src/permission/auth/DaoAuthorizable.sol","exportedSymbols":{"Context":[2167],"DaoAuthorizable":[3872],"IDAO":[2538],"_auth":[3987]},"id":3873,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":3816,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:34"},{"absolutePath":"@openzeppelin/contracts/utils/Context.sol","file":"@openzeppelin/contracts/utils/Context.sol","id":3818,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3873,"sourceUnit":2168,"src":"72:66:34","symbolAliases":[{"foreign":{"id":3817,"name":"Context","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2167,"src":"80:7:34","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/dao/IDAO.sol","file":"../../dao/IDAO.sol","id":3820,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3873,"sourceUnit":2539,"src":"140:40:34","symbolAliases":[{"foreign":{"id":3819,"name":"IDAO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2538,"src":"148:4:34","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/permission/auth/auth.sol","file":"./auth.sol","id":3822,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3873,"sourceUnit":3988,"src":"181:33:34","symbolAliases":[{"foreign":{"id":3821,"name":"_auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3987,"src":"189:5:34","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":3824,"name":"Context","nameLocations":["560:7:34"],"nodeType":"IdentifierPath","referencedDeclaration":2167,"src":"560:7:34"},"id":3825,"nodeType":"InheritanceSpecifier","src":"560:7:34"}],"canonicalName":"DaoAuthorizable","contractDependencies":[],"contractKind":"contract","documentation":{"id":3823,"nodeType":"StructuredDocumentation","src":"216:307:34","text":"@title DaoAuthorizable\n @author Aragon X - 2022-2023\n @notice An abstract contract providing a meta-transaction compatible modifier for non-upgradeable contracts instantiated via the `new` keyword to authorize function calls through an associated DAO.\n @custom:security-contact sirt@aragon.org"},"fullyImplemented":true,"id":3872,"linearizedBaseContracts":[3872,2167],"name":"DaoAuthorizable","nameLocation":"541:15:34","nodeType":"ContractDefinition","nodes":[{"constant":false,"documentation":{"id":3826,"nodeType":"StructuredDocumentation","src":"574:80:34","text":"@notice The associated DAO managing the permissions of inheriting contracts."},"id":3829,"mutability":"immutable","name":"DAO","nameLocation":"682:3:34","nodeType":"VariableDeclaration","scope":3872,"src":"659:26:34","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"},"typeName":{"id":3828,"nodeType":"UserDefinedTypeName","pathNode":{"id":3827,"name":"IDAO","nameLocations":["659:4:34"],"nodeType":"IdentifierPath","referencedDeclaration":2538,"src":"659:4:34"},"referencedDeclaration":2538,"src":"659:4:34","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}},"visibility":"private"},{"body":{"id":3840,"nodeType":"Block","src":"834:27:34","statements":[{"expression":{"id":3838,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3836,"name":"DAO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3829,"src":"844:3:34","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3837,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3833,"src":"850:4:34","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}},"src":"844:10:34","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}},"id":3839,"nodeType":"ExpressionStatement","src":"844:10:34"}]},"documentation":{"id":3830,"nodeType":"StructuredDocumentation","src":"692:114:34","text":"@notice Constructs the contract by setting the associated DAO.\n @param _dao The associated DAO address."},"id":3841,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":3834,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3833,"mutability":"mutable","name":"_dao","nameLocation":"828:4:34","nodeType":"VariableDeclaration","scope":3841,"src":"823:9:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"},"typeName":{"id":3832,"nodeType":"UserDefinedTypeName","pathNode":{"id":3831,"name":"IDAO","nameLocations":["823:4:34"],"nodeType":"IdentifierPath","referencedDeclaration":2538,"src":"823:4:34"},"referencedDeclaration":2538,"src":"823:4:34","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}},"visibility":"internal"}],"src":"822:11:34"},"returnParameters":{"id":3835,"nodeType":"ParameterList","parameters":[],"src":"834:0:34"},"scope":3872,"src":"811:50:34","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":3850,"nodeType":"Block","src":"985:27:34","statements":[{"expression":{"id":3848,"name":"DAO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3829,"src":"1002:3:34","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}},"functionReturnParameters":3847,"id":3849,"nodeType":"Return","src":"995:10:34"}]},"documentation":{"id":3842,"nodeType":"StructuredDocumentation","src":"867:71:34","text":"@notice Returns the DAO contract.\n @return The DAO contract."},"functionSelector":"4162169f","id":3851,"implemented":true,"kind":"function","modifiers":[],"name":"dao","nameLocation":"952:3:34","nodeType":"FunctionDefinition","parameters":{"id":3843,"nodeType":"ParameterList","parameters":[],"src":"955:2:34"},"returnParameters":{"id":3847,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3846,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3851,"src":"979:4:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"},"typeName":{"id":3845,"nodeType":"UserDefinedTypeName","pathNode":{"id":3844,"name":"IDAO","nameLocations":["979:4:34"],"nodeType":"IdentifierPath","referencedDeclaration":2538,"src":"979:4:34"},"referencedDeclaration":2538,"src":"979:4:34","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}},"visibility":"internal"}],"src":"978:6:34"},"scope":3872,"src":"943:69:34","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":3870,"nodeType":"Block","src":"1342:94:34","statements":[{"expression":{"arguments":[{"id":3857,"name":"DAO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3829,"src":"1358:3:34","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}},{"arguments":[{"id":3860,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967268,"src":"1371:4:34","typeDescriptions":{"typeIdentifier":"t_contract$_DaoAuthorizable_$3872","typeString":"contract DaoAuthorizable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_DaoAuthorizable_$3872","typeString":"contract DaoAuthorizable"}],"id":3859,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1363:7:34","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3858,"name":"address","nodeType":"ElementaryTypeName","src":"1363:7:34","typeDescriptions":{}}},"id":3861,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1363:13:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[],"expression":{"argumentTypes":[],"id":3862,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2149,"src":"1378:10:34","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":3863,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1378:12:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3864,"name":"_permissionId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3854,"src":"1392:13:34","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[],"expression":{"argumentTypes":[],"id":3865,"name":"_msgData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2158,"src":"1407:8:34","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bytes_calldata_ptr_$","typeString":"function () view returns (bytes calldata)"}},"id":3866,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1407:10:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":3856,"name":"_auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3987,"src":"1352:5:34","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_IDAO_$2538_$_t_address_$_t_address_$_t_bytes32_$_t_bytes_calldata_ptr_$returns$__$","typeString":"function (contract IDAO,address,address,bytes32,bytes calldata) view"}},"id":3867,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1352:66:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3868,"nodeType":"ExpressionStatement","src":"1352:66:34"},{"id":3869,"nodeType":"PlaceholderStatement","src":"1428:1:34"}]},"documentation":{"id":3852,"nodeType":"StructuredDocumentation","src":"1018:282:34","text":"@notice A modifier to make functions on inheriting contracts authorized. Permissions to call the function are checked through the associated DAO's permission manager.\n @param _permissionId The permission identifier required to call the method this modifier is applied to."},"id":3871,"name":"auth","nameLocation":"1314:4:34","nodeType":"ModifierDefinition","parameters":{"id":3855,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3854,"mutability":"mutable","name":"_permissionId","nameLocation":"1327:13:34","nodeType":"VariableDeclaration","scope":3871,"src":"1319:21:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3853,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1319:7:34","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1318:23:34"},"src":"1305:131:34","virtual":false,"visibility":"internal"}],"scope":3873,"src":"523:915:34","usedErrors":[]}],"src":"47:1392:34"},"id":34},"src/permission/auth/DaoAuthorizableUpgradeable.sol":{"ast":{"absolutePath":"src/permission/auth/DaoAuthorizableUpgradeable.sol","exportedSymbols":{"ContextUpgradeable":[1052],"DaoAuthorizableUpgradeable":[3937],"IDAO":[2538],"_auth":[3987]},"id":3938,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":3874,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:35"},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol","id":3876,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3938,"sourceUnit":1053,"src":"72:100:35","symbolAliases":[{"foreign":{"id":3875,"name":"ContextUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1052,"src":"80:18:35","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/dao/IDAO.sol","file":"../../dao/IDAO.sol","id":3878,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3938,"sourceUnit":2539,"src":"174:40:35","symbolAliases":[{"foreign":{"id":3877,"name":"IDAO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2538,"src":"182:4:35","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/permission/auth/auth.sol","file":"./auth.sol","id":3880,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3938,"sourceUnit":3988,"src":"215:33:35","symbolAliases":[{"foreign":{"id":3879,"name":"_auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3987,"src":"223:5:35","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":3882,"name":"ContextUpgradeable","nameLocations":["703:18:35"],"nodeType":"IdentifierPath","referencedDeclaration":1052,"src":"703:18:35"},"id":3883,"nodeType":"InheritanceSpecifier","src":"703:18:35"}],"canonicalName":"DaoAuthorizableUpgradeable","contractDependencies":[],"contractKind":"contract","documentation":{"id":3881,"nodeType":"StructuredDocumentation","src":"250:405:35","text":"@title DaoAuthorizableUpgradeable\n @author Aragon X - 2022-2023\n @notice An abstract contract providing a meta-transaction compatible modifier for upgradeable or cloneable contracts to authorize function calls through an associated DAO.\n @dev Make sure to call `__DaoAuthorizableUpgradeable_init` during initialization of the inheriting contract.\n @custom:security-contact sirt@aragon.org"},"fullyImplemented":true,"id":3937,"linearizedBaseContracts":[3937,1052,534],"name":"DaoAuthorizableUpgradeable","nameLocation":"673:26:35","nodeType":"ContractDefinition","nodes":[{"constant":false,"documentation":{"id":3884,"nodeType":"StructuredDocumentation","src":"728:80:35","text":"@notice The associated DAO managing the permissions of inheriting contracts."},"id":3887,"mutability":"mutable","name":"dao_","nameLocation":"826:4:35","nodeType":"VariableDeclaration","scope":3937,"src":"813:17:35","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"},"typeName":{"id":3886,"nodeType":"UserDefinedTypeName","pathNode":{"id":3885,"name":"IDAO","nameLocations":["813:4:35"],"nodeType":"IdentifierPath","referencedDeclaration":2538,"src":"813:4:35"},"referencedDeclaration":2538,"src":"813:4:35","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}},"visibility":"private"},{"body":{"id":3900,"nodeType":"Block","src":"1090:28:35","statements":[{"expression":{"id":3898,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3896,"name":"dao_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3887,"src":"1100:4:35","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3897,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3891,"src":"1107:4:35","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}},"src":"1100:11:35","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}},"id":3899,"nodeType":"ExpressionStatement","src":"1100:11:35"}]},"documentation":{"id":3888,"nodeType":"StructuredDocumentation","src":"837:115:35","text":"@notice Initializes the contract by setting the associated DAO.\n @param _dao The associated DAO address."},"id":3901,"implemented":true,"kind":"function","modifiers":[{"id":3894,"kind":"modifierInvocation","modifierName":{"id":3893,"name":"onlyInitializing","nameLocations":["1073:16:35"],"nodeType":"IdentifierPath","referencedDeclaration":479,"src":"1073:16:35"},"nodeType":"ModifierInvocation","src":"1073:16:35"}],"name":"__DaoAuthorizableUpgradeable_init","nameLocation":"1019:33:35","nodeType":"FunctionDefinition","parameters":{"id":3892,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3891,"mutability":"mutable","name":"_dao","nameLocation":"1058:4:35","nodeType":"VariableDeclaration","scope":3901,"src":"1053:9:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"},"typeName":{"id":3890,"nodeType":"UserDefinedTypeName","pathNode":{"id":3889,"name":"IDAO","nameLocations":["1053:4:35"],"nodeType":"IdentifierPath","referencedDeclaration":2538,"src":"1053:4:35"},"referencedDeclaration":2538,"src":"1053:4:35","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}},"visibility":"internal"}],"src":"1052:11:35"},"returnParameters":{"id":3895,"nodeType":"ParameterList","parameters":[],"src":"1090:0:35"},"scope":3937,"src":"1010:108:35","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":3910,"nodeType":"Block","src":"1242:28:35","statements":[{"expression":{"id":3908,"name":"dao_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3887,"src":"1259:4:35","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}},"functionReturnParameters":3907,"id":3909,"nodeType":"Return","src":"1252:11:35"}]},"documentation":{"id":3902,"nodeType":"StructuredDocumentation","src":"1124:71:35","text":"@notice Returns the DAO contract.\n @return The DAO contract."},"functionSelector":"4162169f","id":3911,"implemented":true,"kind":"function","modifiers":[],"name":"dao","nameLocation":"1209:3:35","nodeType":"FunctionDefinition","parameters":{"id":3903,"nodeType":"ParameterList","parameters":[],"src":"1212:2:35"},"returnParameters":{"id":3907,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3906,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3911,"src":"1236:4:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"},"typeName":{"id":3905,"nodeType":"UserDefinedTypeName","pathNode":{"id":3904,"name":"IDAO","nameLocations":["1236:4:35"],"nodeType":"IdentifierPath","referencedDeclaration":2538,"src":"1236:4:35"},"referencedDeclaration":2538,"src":"1236:4:35","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}},"visibility":"internal"}],"src":"1235:6:35"},"scope":3937,"src":"1200:70:35","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":3930,"nodeType":"Block","src":"1600:95:35","statements":[{"expression":{"arguments":[{"id":3917,"name":"dao_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3887,"src":"1616:4:35","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}},{"arguments":[{"id":3920,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967268,"src":"1630:4:35","typeDescriptions":{"typeIdentifier":"t_contract$_DaoAuthorizableUpgradeable_$3937","typeString":"contract DaoAuthorizableUpgradeable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_DaoAuthorizableUpgradeable_$3937","typeString":"contract DaoAuthorizableUpgradeable"}],"id":3919,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1622:7:35","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3918,"name":"address","nodeType":"ElementaryTypeName","src":"1622:7:35","typeDescriptions":{}}},"id":3921,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1622:13:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[],"expression":{"argumentTypes":[],"id":3922,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1029,"src":"1637:10:35","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":3923,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1637:12:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3924,"name":"_permissionId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3914,"src":"1651:13:35","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[],"expression":{"argumentTypes":[],"id":3925,"name":"_msgData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1038,"src":"1666:8:35","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bytes_calldata_ptr_$","typeString":"function () view returns (bytes calldata)"}},"id":3926,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1666:10:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":3916,"name":"_auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3987,"src":"1610:5:35","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_IDAO_$2538_$_t_address_$_t_address_$_t_bytes32_$_t_bytes_calldata_ptr_$returns$__$","typeString":"function (contract IDAO,address,address,bytes32,bytes calldata) view"}},"id":3927,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1610:67:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3928,"nodeType":"ExpressionStatement","src":"1610:67:35"},{"id":3929,"nodeType":"PlaceholderStatement","src":"1687:1:35"}]},"documentation":{"id":3912,"nodeType":"StructuredDocumentation","src":"1276:282:35","text":"@notice A modifier to make functions on inheriting contracts authorized. Permissions to call the function are checked through the associated DAO's permission manager.\n @param _permissionId The permission identifier required to call the method this modifier is applied to."},"id":3931,"name":"auth","nameLocation":"1572:4:35","nodeType":"ModifierDefinition","parameters":{"id":3915,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3914,"mutability":"mutable","name":"_permissionId","nameLocation":"1585:13:35","nodeType":"VariableDeclaration","scope":3931,"src":"1577:21:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3913,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1577:7:35","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1576:23:35"},"src":"1563:132:35","virtual":false,"visibility":"internal"},{"constant":false,"documentation":{"id":3932,"nodeType":"StructuredDocumentation","src":"1701:273:35","text":"@notice This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain (see [OpenZeppelin's guide about storage gaps](https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps))."},"id":3936,"mutability":"mutable","name":"__gap","nameLocation":"1999:5:35","nodeType":"VariableDeclaration","scope":3937,"src":"1979:25:35","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$49_storage","typeString":"uint256[49]"},"typeName":{"baseType":{"id":3933,"name":"uint256","nodeType":"ElementaryTypeName","src":"1979:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3935,"length":{"hexValue":"3439","id":3934,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1987:2:35","typeDescriptions":{"typeIdentifier":"t_rational_49_by_1","typeString":"int_const 49"},"value":"49"},"nodeType":"ArrayTypeName","src":"1979:11:35","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$49_storage_ptr","typeString":"uint256[49]"}},"visibility":"private"}],"scope":3938,"src":"655:1352:35","usedErrors":[]}],"src":"47:1961:35"},"id":35},"src/permission/auth/auth.sol":{"ast":{"absolutePath":"src/permission/auth/auth.sol","exportedSymbols":{"DaoUnauthorized":[3952],"IDAO":[2538],"_auth":[3987]},"id":3988,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":3939,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:36"},{"absolutePath":"src/dao/IDAO.sol","file":"../../dao/IDAO.sol","id":3941,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3988,"sourceUnit":2539,"src":"72:40:36","symbolAliases":[{"foreign":{"id":3940,"name":"IDAO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2538,"src":"80:4:36","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"documentation":{"id":3942,"nodeType":"StructuredDocumentation","src":"114:289:36","text":"@notice Thrown if a call is unauthorized in the associated DAO.\n @param dao The associated DAO.\n @param where The context in which the authorization reverted.\n @param who The address (EOA or contract) missing the permission.\n @param permissionId The permission identifier."},"errorSelector":"32dbe3b4","id":3952,"name":"DaoUnauthorized","nameLocation":"409:15:36","nodeType":"ErrorDefinition","parameters":{"id":3951,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3944,"mutability":"mutable","name":"dao","nameLocation":"433:3:36","nodeType":"VariableDeclaration","scope":3952,"src":"425:11:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3943,"name":"address","nodeType":"ElementaryTypeName","src":"425:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3946,"mutability":"mutable","name":"where","nameLocation":"446:5:36","nodeType":"VariableDeclaration","scope":3952,"src":"438:13:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3945,"name":"address","nodeType":"ElementaryTypeName","src":"438:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3948,"mutability":"mutable","name":"who","nameLocation":"461:3:36","nodeType":"VariableDeclaration","scope":3952,"src":"453:11:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3947,"name":"address","nodeType":"ElementaryTypeName","src":"453:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3950,"mutability":"mutable","name":"permissionId","nameLocation":"474:12:36","nodeType":"VariableDeclaration","scope":3952,"src":"466:20:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3949,"name":"bytes32","nodeType":"ElementaryTypeName","src":"466:7:36","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"424:63:36"},"src":"403:85:36"},{"body":{"id":3986,"nodeType":"Block","src":"1169:235:36","statements":[{"condition":{"id":3974,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"1179:55:36","subExpression":{"arguments":[{"id":3969,"name":"_where","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3958,"src":"1199:6:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3970,"name":"_who","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3960,"src":"1207:4:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3971,"name":"_permissionId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3962,"src":"1213:13:36","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3972,"name":"_data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3964,"src":"1228:5:36","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"id":3967,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3956,"src":"1180:4:36","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}},"id":3968,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1185:13:36","memberName":"hasPermission","nodeType":"MemberAccess","referencedDeclaration":2411,"src":"1180:18:36","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (address,address,bytes32,bytes memory) view external returns (bool)"}},"id":3973,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1180:54:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3985,"nodeType":"IfStatement","src":"1175:226:36","trueBody":{"errorCall":{"arguments":[{"arguments":[{"id":3978,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3956,"src":"1294:4:36","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}],"id":3977,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1286:7:36","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3976,"name":"address","nodeType":"ElementaryTypeName","src":"1286:7:36","typeDescriptions":{}}},"id":3979,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1286:13:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3980,"name":"_where","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3958,"src":"1320:6:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3981,"name":"_who","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3960,"src":"1345:4:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3982,"name":"_permissionId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3962,"src":"1377:13:36","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":3975,"name":"DaoUnauthorized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3952,"src":"1251:15:36","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_address_$_t_address_$_t_bytes32_$returns$__$","typeString":"function (address,address,address,bytes32) pure"}},"id":3983,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":["1281:3:36","1313:5:36","1340:3:36","1363:12:36"],"names":["dao","where","who","permissionId"],"nodeType":"FunctionCall","src":"1251:150:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3984,"nodeType":"RevertStatement","src":"1244:157:36"}}]},"documentation":{"id":3953,"nodeType":"StructuredDocumentation","src":"490:551:36","text":"@notice A free function checking if a caller is granted permissions on a target contract via a permission identifier that redirects the approval to a `PermissionCondition` if this was specified in the setup.\n @param _where The address of the target contract for which `who` receives permission.\n @param _who The address (EOA or contract) owning the permission.\n @param _permissionId The permission identifier.\n @param _data The optional data passed to the `PermissionCondition` registered.\n @custom:security-contact sirt@aragon.org"},"id":3987,"implemented":true,"kind":"freeFunction","modifiers":[],"name":"_auth","nameLocation":"1050:5:36","nodeType":"FunctionDefinition","parameters":{"id":3965,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3956,"mutability":"mutable","name":"_dao","nameLocation":"1066:4:36","nodeType":"VariableDeclaration","scope":3987,"src":"1061:9:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"},"typeName":{"id":3955,"nodeType":"UserDefinedTypeName","pathNode":{"id":3954,"name":"IDAO","nameLocations":["1061:4:36"],"nodeType":"IdentifierPath","referencedDeclaration":2538,"src":"1061:4:36"},"referencedDeclaration":2538,"src":"1061:4:36","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}},"visibility":"internal"},{"constant":false,"id":3958,"mutability":"mutable","name":"_where","nameLocation":"1084:6:36","nodeType":"VariableDeclaration","scope":3987,"src":"1076:14:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3957,"name":"address","nodeType":"ElementaryTypeName","src":"1076:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3960,"mutability":"mutable","name":"_who","nameLocation":"1104:4:36","nodeType":"VariableDeclaration","scope":3987,"src":"1096:12:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3959,"name":"address","nodeType":"ElementaryTypeName","src":"1096:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3962,"mutability":"mutable","name":"_permissionId","nameLocation":"1122:13:36","nodeType":"VariableDeclaration","scope":3987,"src":"1114:21:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3961,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1114:7:36","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3964,"mutability":"mutable","name":"_data","nameLocation":"1156:5:36","nodeType":"VariableDeclaration","scope":3987,"src":"1141:20:36","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":3963,"name":"bytes","nodeType":"ElementaryTypeName","src":"1141:5:36","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1055:108:36"},"returnParameters":{"id":3966,"nodeType":"ParameterList","parameters":[],"src":"1169:0:36"},"scope":3988,"src":"1041:363:36","stateMutability":"view","virtual":false,"visibility":"internal"}],"src":"47:1358:36"},"id":36},"src/plugin/IPlugin.sol":{"ast":{"absolutePath":"src/plugin/IPlugin.sol","exportedSymbols":{"IPlugin":[4002]},"id":4003,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":3989,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:37"},{"abstract":false,"baseContracts":[],"canonicalName":"IPlugin","contractDependencies":[],"contractKind":"interface","documentation":{"id":3990,"nodeType":"StructuredDocumentation","src":"72:155:37","text":"@title IPlugin\n @author Aragon X - 2022-2023\n @notice An interface defining the traits of a plugin.\n @custom:security-contact sirt@aragon.org"},"fullyImplemented":false,"id":4002,"linearizedBaseContracts":[4002],"name":"IPlugin","nameLocation":"237:7:37","nodeType":"ContractDefinition","nodes":[{"canonicalName":"IPlugin.PluginType","id":3994,"members":[{"id":3991,"name":"UUPS","nameLocation":"277:4:37","nodeType":"EnumValue","src":"277:4:37"},{"id":3992,"name":"Cloneable","nameLocation":"291:9:37","nodeType":"EnumValue","src":"291:9:37"},{"id":3993,"name":"Constructable","nameLocation":"310:13:37","nodeType":"EnumValue","src":"310:13:37"}],"name":"PluginType","nameLocation":"256:10:37","nodeType":"EnumDefinition","src":"251:78:37"},{"documentation":{"id":3995,"nodeType":"StructuredDocumentation","src":"335:37:37","text":"@notice Returns the plugin's type"},"functionSelector":"41de6830","id":4001,"implemented":false,"kind":"function","modifiers":[],"name":"pluginType","nameLocation":"386:10:37","nodeType":"FunctionDefinition","parameters":{"id":3996,"nodeType":"ParameterList","parameters":[],"src":"396:2:37"},"returnParameters":{"id":4000,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3999,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4001,"src":"422:10:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_PluginType_$3994","typeString":"enum IPlugin.PluginType"},"typeName":{"id":3998,"nodeType":"UserDefinedTypeName","pathNode":{"id":3997,"name":"PluginType","nameLocations":["422:10:37"],"nodeType":"IdentifierPath","referencedDeclaration":3994,"src":"422:10:37"},"referencedDeclaration":3994,"src":"422:10:37","typeDescriptions":{"typeIdentifier":"t_enum$_PluginType_$3994","typeString":"enum IPlugin.PluginType"}},"visibility":"internal"}],"src":"421:12:37"},"scope":4002,"src":"377:57:37","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":4003,"src":"227:209:37","usedErrors":[]}],"src":"47:390:37"},"id":37},"src/plugin/Plugin.sol":{"ast":{"absolutePath":"src/plugin/Plugin.sol","exportedSymbols":{"DaoAuthorizable":[3872],"ERC165":[2375],"IDAO":[2538],"IPlugin":[4002],"IProtocolVersion":[5114],"Plugin":[4171],"ProtocolVersion":[5136]},"id":4172,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":4004,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:38"},{"absolutePath":"@openzeppelin/contracts/utils/introspection/ERC165.sol","file":"@openzeppelin/contracts/utils/introspection/ERC165.sol","id":4006,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4172,"sourceUnit":2376,"src":"72:78:38","symbolAliases":[{"foreign":{"id":4005,"name":"ERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2375,"src":"80:6:38","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/utils/versioning/IProtocolVersion.sol","file":"../utils/versioning/IProtocolVersion.sol","id":4008,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4172,"sourceUnit":5115,"src":"152:74:38","symbolAliases":[{"foreign":{"id":4007,"name":"IProtocolVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5114,"src":"160:16:38","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/utils/versioning/ProtocolVersion.sol","file":"../utils/versioning/ProtocolVersion.sol","id":4010,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4172,"sourceUnit":5137,"src":"227:72:38","symbolAliases":[{"foreign":{"id":4009,"name":"ProtocolVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5136,"src":"235:15:38","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/permission/auth/DaoAuthorizable.sol","file":"../permission/auth/DaoAuthorizable.sol","id":4012,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4172,"sourceUnit":3873,"src":"300:71:38","symbolAliases":[{"foreign":{"id":4011,"name":"DaoAuthorizable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3872,"src":"308:15:38","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/dao/IDAO.sol","file":"../dao/IDAO.sol","id":4014,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4172,"sourceUnit":2539,"src":"372:37:38","symbolAliases":[{"foreign":{"id":4013,"name":"IDAO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2538,"src":"380:4:38","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/plugin/IPlugin.sol","file":"./IPlugin.sol","id":4016,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4172,"sourceUnit":4003,"src":"410:38:38","symbolAliases":[{"foreign":{"id":4015,"name":"IPlugin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4002,"src":"418:7:38","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":4018,"name":"IPlugin","nameLocations":["701:7:38"],"nodeType":"IdentifierPath","referencedDeclaration":4002,"src":"701:7:38"},"id":4019,"nodeType":"InheritanceSpecifier","src":"701:7:38"},{"baseName":{"id":4020,"name":"ERC165","nameLocations":["710:6:38"],"nodeType":"IdentifierPath","referencedDeclaration":2375,"src":"710:6:38"},"id":4021,"nodeType":"InheritanceSpecifier","src":"710:6:38"},{"baseName":{"id":4022,"name":"DaoAuthorizable","nameLocations":["718:15:38"],"nodeType":"IdentifierPath","referencedDeclaration":3872,"src":"718:15:38"},"id":4023,"nodeType":"InheritanceSpecifier","src":"718:15:38"},{"baseName":{"id":4024,"name":"ProtocolVersion","nameLocations":["735:15:38"],"nodeType":"IdentifierPath","referencedDeclaration":5136,"src":"735:15:38"},"id":4025,"nodeType":"InheritanceSpecifier","src":"735:15:38"}],"canonicalName":"Plugin","contractDependencies":[],"contractKind":"contract","documentation":{"id":4017,"nodeType":"StructuredDocumentation","src":"450:223:38","text":"@title Plugin\n @author Aragon X - 2022-2023\n @notice An abstract, non-upgradeable contract to inherit from when creating a plugin being deployed via the `new` keyword.\n @custom:security-contact sirt@aragon.org"},"fullyImplemented":true,"id":4171,"linearizedBaseContracts":[4171,5136,5114,3872,2167,2375,2387,4002],"name":"Plugin","nameLocation":"691:6:38","nodeType":"ContractDefinition","nodes":[{"constant":false,"functionSelector":"d4b83992","id":4027,"mutability":"mutable","name":"target","nameLocation":"772:6:38","nodeType":"VariableDeclaration","scope":4171,"src":"757:21:38","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4026,"name":"address","nodeType":"ElementaryTypeName","src":"757:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"anonymous":false,"documentation":{"id":4028,"nodeType":"StructuredDocumentation","src":"785:45:38","text":"@dev Emitted each time the Target is set."},"eventSelector":"90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d6","id":4034,"name":"TargetSet","nameLocation":"841:9:38","nodeType":"EventDefinition","parameters":{"id":4033,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4030,"indexed":true,"mutability":"mutable","name":"previousTarget","nameLocation":"867:14:38","nodeType":"VariableDeclaration","scope":4034,"src":"851:30:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4029,"name":"address","nodeType":"ElementaryTypeName","src":"851:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4032,"indexed":true,"mutability":"mutable","name":"newTarget","nameLocation":"899:9:38","nodeType":"VariableDeclaration","scope":4034,"src":"883:25:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4031,"name":"address","nodeType":"ElementaryTypeName","src":"883:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"850:59:38"},"src":"835:75:38"},{"body":{"id":4044,"nodeType":"Block","src":"1068:2:38","statements":[]},"documentation":{"id":4035,"nodeType":"StructuredDocumentation","src":"916:102:38","text":"@notice Constructs the plugin by storing the associated DAO.\n @param _dao The DAO contract."},"id":4045,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":4041,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4038,"src":"1062:4:38","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}}],"id":4042,"kind":"baseConstructorSpecifier","modifierName":{"id":4040,"name":"DaoAuthorizable","nameLocations":["1046:15:38"],"nodeType":"IdentifierPath","referencedDeclaration":3872,"src":"1046:15:38"},"nodeType":"ModifierInvocation","src":"1046:21:38"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":4039,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4038,"mutability":"mutable","name":"_dao","nameLocation":"1040:4:38","nodeType":"VariableDeclaration","scope":4045,"src":"1035:9:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"},"typeName":{"id":4037,"nodeType":"UserDefinedTypeName","pathNode":{"id":4036,"name":"IDAO","nameLocations":["1035:4:38"],"nodeType":"IdentifierPath","referencedDeclaration":2538,"src":"1035:4:38"},"referencedDeclaration":2538,"src":"1035:4:38","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}},"visibility":"internal"}],"src":"1034:11:38"},"returnParameters":{"id":4043,"nodeType":"ParameterList","parameters":[],"src":"1068:0:38"},"scope":4171,"src":"1023:47:38","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[4001],"body":{"id":4056,"nodeType":"Block","src":"1168:48:38","statements":[{"expression":{"expression":{"id":4053,"name":"PluginType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3994,"src":"1185:10:38","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_PluginType_$3994_$","typeString":"type(enum IPlugin.PluginType)"}},"id":4054,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1196:13:38","memberName":"Constructable","nodeType":"MemberAccess","referencedDeclaration":3993,"src":"1185:24:38","typeDescriptions":{"typeIdentifier":"t_enum$_PluginType_$3994","typeString":"enum IPlugin.PluginType"}},"functionReturnParameters":4052,"id":4055,"nodeType":"Return","src":"1178:31:38"}]},"documentation":{"id":4046,"nodeType":"StructuredDocumentation","src":"1076:23:38","text":"@inheritdoc IPlugin"},"functionSelector":"41de6830","id":4057,"implemented":true,"kind":"function","modifiers":[],"name":"pluginType","nameLocation":"1113:10:38","nodeType":"FunctionDefinition","overrides":{"id":4048,"nodeType":"OverrideSpecifier","overrides":[],"src":"1138:8:38"},"parameters":{"id":4047,"nodeType":"ParameterList","parameters":[],"src":"1123:2:38"},"returnParameters":{"id":4052,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4051,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4057,"src":"1156:10:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_PluginType_$3994","typeString":"enum IPlugin.PluginType"},"typeName":{"id":4050,"nodeType":"UserDefinedTypeName","pathNode":{"id":4049,"name":"PluginType","nameLocations":["1156:10:38"],"nodeType":"IdentifierPath","referencedDeclaration":3994,"src":"1156:10:38"},"referencedDeclaration":3994,"src":"1156:10:38","typeDescriptions":{"typeIdentifier":"t_enum$_PluginType_$3994","typeString":"enum IPlugin.PluginType"}},"visibility":"internal"}],"src":"1155:12:38"},"scope":4171,"src":"1104:112:38","stateMutability":"pure","virtual":false,"visibility":"public"},{"body":{"id":4076,"nodeType":"Block","src":"1387:123:38","statements":[{"assignments":[4064],"declarations":[{"constant":false,"id":4064,"mutability":"mutable","name":"previousTarget","nameLocation":"1405:14:38","nodeType":"VariableDeclaration","scope":4076,"src":"1397:22:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4063,"name":"address","nodeType":"ElementaryTypeName","src":"1397:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":4066,"initialValue":{"id":4065,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4027,"src":"1422:6:38","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"1397:31:38"},{"expression":{"id":4069,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4067,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4027,"src":"1438:6:38","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":4068,"name":"_target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4060,"src":"1447:7:38","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1438:16:38","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":4070,"nodeType":"ExpressionStatement","src":"1438:16:38"},{"eventCall":{"arguments":[{"id":4072,"name":"previousTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4064,"src":"1479:14:38","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4073,"name":"_target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4060,"src":"1495:7:38","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":4071,"name":"TargetSet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4034,"src":"1469:9:38","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":4074,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1469:34:38","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4075,"nodeType":"EmitStatement","src":"1464:39:38"}]},"documentation":{"id":4058,"nodeType":"StructuredDocumentation","src":"1222:117:38","text":"@dev Sets the target to a new target (`newTarget`).\n @notice Can only be called by the current owner. TODO"},"functionSelector":"776d1a01","id":4077,"implemented":true,"kind":"function","modifiers":[],"name":"setTarget","nameLocation":"1353:9:38","nodeType":"FunctionDefinition","parameters":{"id":4061,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4060,"mutability":"mutable","name":"_target","nameLocation":"1371:7:38","nodeType":"VariableDeclaration","scope":4077,"src":"1363:15:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4059,"name":"address","nodeType":"ElementaryTypeName","src":"1363:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1362:17:38"},"returnParameters":{"id":4062,"nodeType":"ParameterList","parameters":[],"src":"1387:0:38"},"scope":4171,"src":"1344:166:38","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[2374],"body":{"id":4105,"nodeType":"Block","src":"1810:196:38","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":4103,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":4098,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":4091,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4086,"name":"_interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4080,"src":"1839:12:38","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":4088,"name":"IPlugin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4002,"src":"1860:7:38","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IPlugin_$4002_$","typeString":"type(contract IPlugin)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IPlugin_$4002_$","typeString":"type(contract IPlugin)"}],"id":4087,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"1855:4:38","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":4089,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1855:13:38","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IPlugin_$4002","typeString":"type(contract IPlugin)"}},"id":4090,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1869:11:38","memberName":"interfaceId","nodeType":"MemberAccess","src":"1855:25:38","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"1839:41:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":4097,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4092,"name":"_interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4080,"src":"1896:12:38","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":4094,"name":"IProtocolVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5114,"src":"1917:16:38","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IProtocolVersion_$5114_$","typeString":"type(contract IProtocolVersion)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IProtocolVersion_$5114_$","typeString":"type(contract IProtocolVersion)"}],"id":4093,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"1912:4:38","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":4095,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1912:22:38","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IProtocolVersion_$5114","typeString":"type(contract IProtocolVersion)"}},"id":4096,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1935:11:38","memberName":"interfaceId","nodeType":"MemberAccess","src":"1912:34:38","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"1896:50:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1839:107:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":4101,"name":"_interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4080,"src":"1986:12:38","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":4099,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967271,"src":"1962:5:38","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_Plugin_$4171_$","typeString":"type(contract super Plugin)"}},"id":4100,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1968:17:38","memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":2374,"src":"1962:23:38","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bool_$","typeString":"function (bytes4) view returns (bool)"}},"id":4102,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1962:37:38","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1839:160:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":4085,"id":4104,"nodeType":"Return","src":"1820:179:38"}]},"documentation":{"id":4078,"nodeType":"StructuredDocumentation","src":"1516:197:38","text":"@notice Checks if this or the parent contract supports an interface by its ID.\n @param _interfaceId The ID of the interface.\n @return Returns `true` if the interface is supported."},"functionSelector":"01ffc9a7","id":4106,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"1727:17:38","nodeType":"FunctionDefinition","overrides":{"id":4082,"nodeType":"OverrideSpecifier","overrides":[],"src":"1786:8:38"},"parameters":{"id":4081,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4080,"mutability":"mutable","name":"_interfaceId","nameLocation":"1752:12:38","nodeType":"VariableDeclaration","scope":4106,"src":"1745:19:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":4079,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1745:6:38","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"1744:21:38"},"returnParameters":{"id":4085,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4084,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4106,"src":"1804:4:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4083,"name":"bool","nodeType":"ElementaryTypeName","src":"1804:4:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1803:6:38"},"scope":4171,"src":"1718:288:38","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":4136,"nodeType":"Block","src":"2610:102:38","statements":[{"expression":{"id":4134,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":4123,"name":"execResults","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4119,"src":"2621:11:38","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}},{"id":4124,"name":"failureMap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4121,"src":"2634:10:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4125,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"2620:25:38","typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$_t_uint256_$","typeString":"tuple(bytes memory[] memory,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4130,"name":"_callId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4109,"src":"2669:7:38","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":4131,"name":"_actions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4113,"src":"2678:8:38","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Action_$2397_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IDAO.Action calldata[] calldata"}},{"id":4132,"name":"_allowFailureMap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4115,"src":"2688:16:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_array$_t_struct$_Action_$2397_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IDAO.Action calldata[] calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":4127,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4027,"src":"2653:6:38","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4126,"name":"IDAO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2538,"src":"2648:4:38","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IDAO_$2538_$","typeString":"type(contract IDAO)"}},"id":4128,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2648:12:38","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}},"id":4129,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2661:7:38","memberName":"execute","nodeType":"MemberAccess","referencedDeclaration":2439,"src":"2648:20:38","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes32_$_t_array$_t_struct$_Action_$2397_memory_ptr_$dyn_memory_ptr_$_t_uint256_$returns$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$_t_uint256_$","typeString":"function (bytes32,struct IDAO.Action memory[] memory,uint256) external returns (bytes memory[] memory,uint256)"}},"id":4133,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2648:57:38","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$_t_uint256_$","typeString":"tuple(bytes memory[] memory,uint256)"}},"src":"2620:85:38","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4135,"nodeType":"ExpressionStatement","src":"2620:85:38"}]},"documentation":{"id":4107,"nodeType":"StructuredDocumentation","src":"2012:395:38","text":"@notice Forwards the actions to the currently set `target` for the execution.\n @param _callId Identifier for this execution.\n @param _actions actions that will be eventually called.\n @param _allowFailureMap Bitmap-encoded number. TODO:\n @return execResults address of the implementation contract.\n @return failureMap address of the implementation contract."},"id":4137,"implemented":true,"kind":"function","modifiers":[],"name":"_execute","nameLocation":"2421:8:38","nodeType":"FunctionDefinition","parameters":{"id":4116,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4109,"mutability":"mutable","name":"_callId","nameLocation":"2447:7:38","nodeType":"VariableDeclaration","scope":4137,"src":"2439:15:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4108,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2439:7:38","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":4113,"mutability":"mutable","name":"_actions","nameLocation":"2487:8:38","nodeType":"VariableDeclaration","scope":4137,"src":"2464:31:38","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Action_$2397_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IDAO.Action[]"},"typeName":{"baseType":{"id":4111,"nodeType":"UserDefinedTypeName","pathNode":{"id":4110,"name":"IDAO.Action","nameLocations":["2464:4:38","2469:6:38"],"nodeType":"IdentifierPath","referencedDeclaration":2397,"src":"2464:11:38"},"referencedDeclaration":2397,"src":"2464:11:38","typeDescriptions":{"typeIdentifier":"t_struct$_Action_$2397_storage_ptr","typeString":"struct IDAO.Action"}},"id":4112,"nodeType":"ArrayTypeName","src":"2464:13:38","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Action_$2397_storage_$dyn_storage_ptr","typeString":"struct IDAO.Action[]"}},"visibility":"internal"},{"constant":false,"id":4115,"mutability":"mutable","name":"_allowFailureMap","nameLocation":"2513:16:38","nodeType":"VariableDeclaration","scope":4137,"src":"2505:24:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4114,"name":"uint256","nodeType":"ElementaryTypeName","src":"2505:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2429:106:38"},"returnParameters":{"id":4122,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4119,"mutability":"mutable","name":"execResults","nameLocation":"2577:11:38","nodeType":"VariableDeclaration","scope":4137,"src":"2562:26:38","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":4117,"name":"bytes","nodeType":"ElementaryTypeName","src":"2562:5:38","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":4118,"nodeType":"ArrayTypeName","src":"2562:7:38","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"},{"constant":false,"id":4121,"mutability":"mutable","name":"failureMap","nameLocation":"2598:10:38","nodeType":"VariableDeclaration","scope":4137,"src":"2590:18:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4120,"name":"uint256","nodeType":"ElementaryTypeName","src":"2590:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2561:48:38"},"scope":4171,"src":"2412:300:38","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":4169,"nodeType":"Block","src":"3395:103:38","statements":[{"expression":{"id":4167,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":4156,"name":"execResults","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4152,"src":"3406:11:38","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}},{"id":4157,"name":"failureMap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4154,"src":"3419:10:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4158,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"3405:25:38","typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$_t_uint256_$","typeString":"tuple(bytes memory[] memory,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4163,"name":"_callId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4142,"src":"3455:7:38","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":4164,"name":"_actions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4146,"src":"3464:8:38","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Action_$2397_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IDAO.Action calldata[] calldata"}},{"id":4165,"name":"_allowFailureMap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4148,"src":"3474:16:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_array$_t_struct$_Action_$2397_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IDAO.Action calldata[] calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":4160,"name":"_target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4140,"src":"3438:7:38","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4159,"name":"IDAO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2538,"src":"3433:4:38","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IDAO_$2538_$","typeString":"type(contract IDAO)"}},"id":4161,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3433:13:38","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}},"id":4162,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3447:7:38","memberName":"execute","nodeType":"MemberAccess","referencedDeclaration":2439,"src":"3433:21:38","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes32_$_t_array$_t_struct$_Action_$2397_memory_ptr_$dyn_memory_ptr_$_t_uint256_$returns$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$_t_uint256_$","typeString":"function (bytes32,struct IDAO.Action memory[] memory,uint256) external returns (bytes memory[] memory,uint256)"}},"id":4166,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3433:58:38","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$_t_uint256_$","typeString":"tuple(bytes memory[] memory,uint256)"}},"src":"3405:86:38","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4168,"nodeType":"ExpressionStatement","src":"3405:86:38"}]},"documentation":{"id":4138,"nodeType":"StructuredDocumentation","src":"2718:449:38","text":"@notice Forwards the actions to the `target` for the execution.\n @param _target Forwards the actions to the specific target.\n @param _callId Identifier for this execution.\n @param _actions actions that will be eventually called.\n @param _allowFailureMap Bitmap-encoded number. TODO:\n @return execResults address of the implementation contract.\n @return failureMap address of the implementation contract."},"id":4170,"implemented":true,"kind":"function","modifiers":[],"name":"_execute","nameLocation":"3181:8:38","nodeType":"FunctionDefinition","parameters":{"id":4149,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4140,"mutability":"mutable","name":"_target","nameLocation":"3207:7:38","nodeType":"VariableDeclaration","scope":4170,"src":"3199:15:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4139,"name":"address","nodeType":"ElementaryTypeName","src":"3199:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4142,"mutability":"mutable","name":"_callId","nameLocation":"3232:7:38","nodeType":"VariableDeclaration","scope":4170,"src":"3224:15:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4141,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3224:7:38","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":4146,"mutability":"mutable","name":"_actions","nameLocation":"3272:8:38","nodeType":"VariableDeclaration","scope":4170,"src":"3249:31:38","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Action_$2397_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IDAO.Action[]"},"typeName":{"baseType":{"id":4144,"nodeType":"UserDefinedTypeName","pathNode":{"id":4143,"name":"IDAO.Action","nameLocations":["3249:4:38","3254:6:38"],"nodeType":"IdentifierPath","referencedDeclaration":2397,"src":"3249:11:38"},"referencedDeclaration":2397,"src":"3249:11:38","typeDescriptions":{"typeIdentifier":"t_struct$_Action_$2397_storage_ptr","typeString":"struct IDAO.Action"}},"id":4145,"nodeType":"ArrayTypeName","src":"3249:13:38","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Action_$2397_storage_$dyn_storage_ptr","typeString":"struct IDAO.Action[]"}},"visibility":"internal"},{"constant":false,"id":4148,"mutability":"mutable","name":"_allowFailureMap","nameLocation":"3298:16:38","nodeType":"VariableDeclaration","scope":4170,"src":"3290:24:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4147,"name":"uint256","nodeType":"ElementaryTypeName","src":"3290:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3189:131:38"},"returnParameters":{"id":4155,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4152,"mutability":"mutable","name":"execResults","nameLocation":"3362:11:38","nodeType":"VariableDeclaration","scope":4170,"src":"3347:26:38","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":4150,"name":"bytes","nodeType":"ElementaryTypeName","src":"3347:5:38","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":4151,"nodeType":"ArrayTypeName","src":"3347:7:38","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"},{"constant":false,"id":4154,"mutability":"mutable","name":"failureMap","nameLocation":"3383:10:38","nodeType":"VariableDeclaration","scope":4170,"src":"3375:18:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4153,"name":"uint256","nodeType":"ElementaryTypeName","src":"3375:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3346:48:38"},"scope":4171,"src":"3172:326:38","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":4172,"src":"673:2827:38","usedErrors":[]}],"src":"47:3454:38"},"id":38},"src/plugin/PluginCloneable.sol":{"ast":{"absolutePath":"src/plugin/PluginCloneable.sol","exportedSymbols":{"DaoAuthorizableUpgradeable":[3937],"ERC165Upgradeable":[1281],"IDAO":[2538],"IPlugin":[4002],"IProtocolVersion":[5114],"PluginCloneable":[4351],"ProtocolVersion":[5136]},"id":4352,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":4173,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:39"},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol","file":"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol","id":4175,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4352,"sourceUnit":1282,"src":"72:112:39","symbolAliases":[{"foreign":{"id":4174,"name":"ERC165Upgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1281,"src":"80:17:39","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/utils/versioning/IProtocolVersion.sol","file":"../utils/versioning/IProtocolVersion.sol","id":4177,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4352,"sourceUnit":5115,"src":"186:74:39","symbolAliases":[{"foreign":{"id":4176,"name":"IProtocolVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5114,"src":"194:16:39","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/utils/versioning/ProtocolVersion.sol","file":"../utils/versioning/ProtocolVersion.sol","id":4179,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4352,"sourceUnit":5137,"src":"261:72:39","symbolAliases":[{"foreign":{"id":4178,"name":"ProtocolVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5136,"src":"269:15:39","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/permission/auth/DaoAuthorizableUpgradeable.sol","file":"../permission/auth/DaoAuthorizableUpgradeable.sol","id":4181,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4352,"sourceUnit":3938,"src":"334:93:39","symbolAliases":[{"foreign":{"id":4180,"name":"DaoAuthorizableUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3937,"src":"342:26:39","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/dao/IDAO.sol","file":"../dao/IDAO.sol","id":4183,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4352,"sourceUnit":2539,"src":"428:37:39","symbolAliases":[{"foreign":{"id":4182,"name":"IDAO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2538,"src":"436:4:39","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/plugin/IPlugin.sol","file":"./IPlugin.sol","id":4185,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4352,"sourceUnit":4003,"src":"466:38:39","symbolAliases":[{"foreign":{"id":4184,"name":"IPlugin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4002,"src":"474:7:39","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":4187,"name":"IPlugin","nameLocations":["846:7:39"],"nodeType":"IdentifierPath","referencedDeclaration":4002,"src":"846:7:39"},"id":4188,"nodeType":"InheritanceSpecifier","src":"846:7:39"},{"baseName":{"id":4189,"name":"ERC165Upgradeable","nameLocations":["859:17:39"],"nodeType":"IdentifierPath","referencedDeclaration":1281,"src":"859:17:39"},"id":4190,"nodeType":"InheritanceSpecifier","src":"859:17:39"},{"baseName":{"id":4191,"name":"DaoAuthorizableUpgradeable","nameLocations":["882:26:39"],"nodeType":"IdentifierPath","referencedDeclaration":3937,"src":"882:26:39"},"id":4192,"nodeType":"InheritanceSpecifier","src":"882:26:39"},{"baseName":{"id":4193,"name":"ProtocolVersion","nameLocations":["914:15:39"],"nodeType":"IdentifierPath","referencedDeclaration":5136,"src":"914:15:39"},"id":4194,"nodeType":"InheritanceSpecifier","src":"914:15:39"}],"canonicalName":"PluginCloneable","contractDependencies":[],"contractKind":"contract","documentation":{"id":4186,"nodeType":"StructuredDocumentation","src":"506:299:39","text":"@title PluginCloneable\n @author Aragon X - 2022-2023\n @notice An abstract, non-upgradeable contract to inherit from when creating a plugin being deployed via the minimal clones pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)).\n @custom:security-contact sirt@aragon.org"},"fullyImplemented":true,"id":4351,"linearizedBaseContracts":[4351,5136,5114,3937,1052,1281,1293,534,4002],"name":"PluginCloneable","nameLocation":"823:15:39","nodeType":"ContractDefinition","nodes":[{"constant":false,"functionSelector":"d4b83992","id":4196,"mutability":"mutable","name":"target","nameLocation":"951:6:39","nodeType":"VariableDeclaration","scope":4351,"src":"936:21:39","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4195,"name":"address","nodeType":"ElementaryTypeName","src":"936:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"anonymous":false,"documentation":{"id":4197,"nodeType":"StructuredDocumentation","src":"964:45:39","text":"@dev Emitted each time the Target is set."},"eventSelector":"90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d6","id":4203,"name":"TargetSet","nameLocation":"1020:9:39","nodeType":"EventDefinition","parameters":{"id":4202,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4199,"indexed":true,"mutability":"mutable","name":"previousTarget","nameLocation":"1046:14:39","nodeType":"VariableDeclaration","scope":4203,"src":"1030:30:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4198,"name":"address","nodeType":"ElementaryTypeName","src":"1030:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4201,"indexed":true,"mutability":"mutable","name":"newTarget","nameLocation":"1078:9:39","nodeType":"VariableDeclaration","scope":4203,"src":"1062:25:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4200,"name":"address","nodeType":"ElementaryTypeName","src":"1062:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1029:59:39"},"src":"1014:75:39"},{"body":{"id":4210,"nodeType":"Block","src":"1280:39:39","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":4207,"name":"_disableInitializers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":515,"src":"1290:20:39","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":4208,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1290:22:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4209,"nodeType":"ExpressionStatement","src":"1290:22:39"}]},"documentation":{"id":4204,"nodeType":"StructuredDocumentation","src":"1095:166:39","text":"@notice Disables the initializers on the implementation contract to prevent it from being left uninitialized.\n @custom:oz-upgrades-unsafe-allow constructor"},"id":4211,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":4205,"nodeType":"ParameterList","parameters":[],"src":"1277:2:39"},"returnParameters":{"id":4206,"nodeType":"ParameterList","parameters":[],"src":"1280:0:39"},"scope":4351,"src":"1266:53:39","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":4224,"nodeType":"Block","src":"1563:56:39","statements":[{"expression":{"arguments":[{"id":4221,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4215,"src":"1607:4:39","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}],"id":4220,"name":"__DaoAuthorizableUpgradeable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3901,"src":"1573:33:39","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IDAO_$2538_$returns$__$","typeString":"function (contract IDAO)"}},"id":4222,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1573:39:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4223,"nodeType":"ExpressionStatement","src":"1573:39:39"}]},"documentation":{"id":4212,"nodeType":"StructuredDocumentation","src":"1325:103:39","text":"@notice Initializes the plugin by storing the associated DAO.\n @param _dao The DAO contract."},"id":4225,"implemented":true,"kind":"function","modifiers":[{"id":4218,"kind":"modifierInvocation","modifierName":{"id":4217,"name":"onlyInitializing","nameLocations":["1546:16:39"],"nodeType":"IdentifierPath","referencedDeclaration":479,"src":"1546:16:39"},"nodeType":"ModifierInvocation","src":"1546:16:39"}],"name":"__PluginCloneable_init","nameLocation":"1495:22:39","nodeType":"FunctionDefinition","parameters":{"id":4216,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4215,"mutability":"mutable","name":"_dao","nameLocation":"1523:4:39","nodeType":"VariableDeclaration","scope":4225,"src":"1518:9:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"},"typeName":{"id":4214,"nodeType":"UserDefinedTypeName","pathNode":{"id":4213,"name":"IDAO","nameLocations":["1518:4:39"],"nodeType":"IdentifierPath","referencedDeclaration":2538,"src":"1518:4:39"},"referencedDeclaration":2538,"src":"1518:4:39","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}},"visibility":"internal"}],"src":"1517:11:39"},"returnParameters":{"id":4219,"nodeType":"ParameterList","parameters":[],"src":"1563:0:39"},"scope":4351,"src":"1486:133:39","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":4244,"nodeType":"Block","src":"1790:123:39","statements":[{"assignments":[4232],"declarations":[{"constant":false,"id":4232,"mutability":"mutable","name":"previousTarget","nameLocation":"1808:14:39","nodeType":"VariableDeclaration","scope":4244,"src":"1800:22:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4231,"name":"address","nodeType":"ElementaryTypeName","src":"1800:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":4234,"initialValue":{"id":4233,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4196,"src":"1825:6:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"1800:31:39"},{"expression":{"id":4237,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4235,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4196,"src":"1841:6:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":4236,"name":"_target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4228,"src":"1850:7:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1841:16:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":4238,"nodeType":"ExpressionStatement","src":"1841:16:39"},{"eventCall":{"arguments":[{"id":4240,"name":"previousTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4232,"src":"1882:14:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4241,"name":"_target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4228,"src":"1898:7:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":4239,"name":"TargetSet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4203,"src":"1872:9:39","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":4242,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1872:34:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4243,"nodeType":"EmitStatement","src":"1867:39:39"}]},"documentation":{"id":4226,"nodeType":"StructuredDocumentation","src":"1625:117:39","text":"@dev Sets the target to a new target (`newTarget`).\n @notice Can only be called by the current owner. TODO"},"functionSelector":"776d1a01","id":4245,"implemented":true,"kind":"function","modifiers":[],"name":"setTarget","nameLocation":"1756:9:39","nodeType":"FunctionDefinition","parameters":{"id":4229,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4228,"mutability":"mutable","name":"_target","nameLocation":"1774:7:39","nodeType":"VariableDeclaration","scope":4245,"src":"1766:15:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4227,"name":"address","nodeType":"ElementaryTypeName","src":"1766:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1765:17:39"},"returnParameters":{"id":4230,"nodeType":"ParameterList","parameters":[],"src":"1790:0:39"},"scope":4351,"src":"1747:166:39","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[4001],"body":{"id":4256,"nodeType":"Block","src":"2011:44:39","statements":[{"expression":{"expression":{"id":4253,"name":"PluginType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3994,"src":"2028:10:39","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_PluginType_$3994_$","typeString":"type(enum IPlugin.PluginType)"}},"id":4254,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2039:9:39","memberName":"Cloneable","nodeType":"MemberAccess","referencedDeclaration":3992,"src":"2028:20:39","typeDescriptions":{"typeIdentifier":"t_enum$_PluginType_$3994","typeString":"enum IPlugin.PluginType"}},"functionReturnParameters":4252,"id":4255,"nodeType":"Return","src":"2021:27:39"}]},"documentation":{"id":4246,"nodeType":"StructuredDocumentation","src":"1919:23:39","text":"@inheritdoc IPlugin"},"functionSelector":"41de6830","id":4257,"implemented":true,"kind":"function","modifiers":[],"name":"pluginType","nameLocation":"1956:10:39","nodeType":"FunctionDefinition","overrides":{"id":4248,"nodeType":"OverrideSpecifier","overrides":[],"src":"1981:8:39"},"parameters":{"id":4247,"nodeType":"ParameterList","parameters":[],"src":"1966:2:39"},"returnParameters":{"id":4252,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4251,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4257,"src":"1999:10:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_PluginType_$3994","typeString":"enum IPlugin.PluginType"},"typeName":{"id":4250,"nodeType":"UserDefinedTypeName","pathNode":{"id":4249,"name":"PluginType","nameLocations":["1999:10:39"],"nodeType":"IdentifierPath","referencedDeclaration":3994,"src":"1999:10:39"},"referencedDeclaration":3994,"src":"1999:10:39","typeDescriptions":{"typeIdentifier":"t_enum$_PluginType_$3994","typeString":"enum IPlugin.PluginType"}},"visibility":"internal"}],"src":"1998:12:39"},"scope":4351,"src":"1947:108:39","stateMutability":"pure","virtual":false,"visibility":"public"},{"baseFunctions":[1275],"body":{"id":4285,"nodeType":"Block","src":"2355:196:39","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":4283,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":4278,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":4271,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4266,"name":"_interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4260,"src":"2384:12:39","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":4268,"name":"IPlugin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4002,"src":"2405:7:39","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IPlugin_$4002_$","typeString":"type(contract IPlugin)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IPlugin_$4002_$","typeString":"type(contract IPlugin)"}],"id":4267,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"2400:4:39","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":4269,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2400:13:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IPlugin_$4002","typeString":"type(contract IPlugin)"}},"id":4270,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2414:11:39","memberName":"interfaceId","nodeType":"MemberAccess","src":"2400:25:39","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"2384:41:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":4277,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4272,"name":"_interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4260,"src":"2441:12:39","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":4274,"name":"IProtocolVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5114,"src":"2462:16:39","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IProtocolVersion_$5114_$","typeString":"type(contract IProtocolVersion)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IProtocolVersion_$5114_$","typeString":"type(contract IProtocolVersion)"}],"id":4273,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"2457:4:39","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":4275,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2457:22:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IProtocolVersion_$5114","typeString":"type(contract IProtocolVersion)"}},"id":4276,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2480:11:39","memberName":"interfaceId","nodeType":"MemberAccess","src":"2457:34:39","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"2441:50:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2384:107:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":4281,"name":"_interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4260,"src":"2531:12:39","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":4279,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967271,"src":"2507:5:39","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_PluginCloneable_$4351_$","typeString":"type(contract super PluginCloneable)"}},"id":4280,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2513:17:39","memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":1275,"src":"2507:23:39","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bool_$","typeString":"function (bytes4) view returns (bool)"}},"id":4282,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2507:37:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2384:160:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":4265,"id":4284,"nodeType":"Return","src":"2365:179:39"}]},"documentation":{"id":4258,"nodeType":"StructuredDocumentation","src":"2061:197:39","text":"@notice Checks if this or the parent contract supports an interface by its ID.\n @param _interfaceId The ID of the interface.\n @return Returns `true` if the interface is supported."},"functionSelector":"01ffc9a7","id":4286,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"2272:17:39","nodeType":"FunctionDefinition","overrides":{"id":4262,"nodeType":"OverrideSpecifier","overrides":[],"src":"2331:8:39"},"parameters":{"id":4261,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4260,"mutability":"mutable","name":"_interfaceId","nameLocation":"2297:12:39","nodeType":"VariableDeclaration","scope":4286,"src":"2290:19:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":4259,"name":"bytes4","nodeType":"ElementaryTypeName","src":"2290:6:39","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"2289:21:39"},"returnParameters":{"id":4265,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4264,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4286,"src":"2349:4:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4263,"name":"bool","nodeType":"ElementaryTypeName","src":"2349:4:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2348:6:39"},"scope":4351,"src":"2263:288:39","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":4316,"nodeType":"Block","src":"3155:102:39","statements":[{"expression":{"id":4314,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":4303,"name":"execResults","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4299,"src":"3166:11:39","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}},{"id":4304,"name":"failureMap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4301,"src":"3179:10:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4305,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"3165:25:39","typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$_t_uint256_$","typeString":"tuple(bytes memory[] memory,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4310,"name":"_callId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4289,"src":"3214:7:39","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":4311,"name":"_actions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4293,"src":"3223:8:39","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Action_$2397_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IDAO.Action calldata[] calldata"}},{"id":4312,"name":"_allowFailureMap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4295,"src":"3233:16:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_array$_t_struct$_Action_$2397_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IDAO.Action calldata[] calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":4307,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4196,"src":"3198:6:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4306,"name":"IDAO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2538,"src":"3193:4:39","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IDAO_$2538_$","typeString":"type(contract IDAO)"}},"id":4308,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3193:12:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}},"id":4309,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3206:7:39","memberName":"execute","nodeType":"MemberAccess","referencedDeclaration":2439,"src":"3193:20:39","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes32_$_t_array$_t_struct$_Action_$2397_memory_ptr_$dyn_memory_ptr_$_t_uint256_$returns$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$_t_uint256_$","typeString":"function (bytes32,struct IDAO.Action memory[] memory,uint256) external returns (bytes memory[] memory,uint256)"}},"id":4313,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3193:57:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$_t_uint256_$","typeString":"tuple(bytes memory[] memory,uint256)"}},"src":"3165:85:39","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4315,"nodeType":"ExpressionStatement","src":"3165:85:39"}]},"documentation":{"id":4287,"nodeType":"StructuredDocumentation","src":"2557:395:39","text":"@notice Forwards the actions to the currently set `target` for the execution.\n @param _callId Identifier for this execution.\n @param _actions actions that will be eventually called.\n @param _allowFailureMap Bitmap-encoded number. TODO:\n @return execResults address of the implementation contract.\n @return failureMap address of the implementation contract."},"id":4317,"implemented":true,"kind":"function","modifiers":[],"name":"_execute","nameLocation":"2966:8:39","nodeType":"FunctionDefinition","parameters":{"id":4296,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4289,"mutability":"mutable","name":"_callId","nameLocation":"2992:7:39","nodeType":"VariableDeclaration","scope":4317,"src":"2984:15:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4288,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2984:7:39","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":4293,"mutability":"mutable","name":"_actions","nameLocation":"3032:8:39","nodeType":"VariableDeclaration","scope":4317,"src":"3009:31:39","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Action_$2397_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IDAO.Action[]"},"typeName":{"baseType":{"id":4291,"nodeType":"UserDefinedTypeName","pathNode":{"id":4290,"name":"IDAO.Action","nameLocations":["3009:4:39","3014:6:39"],"nodeType":"IdentifierPath","referencedDeclaration":2397,"src":"3009:11:39"},"referencedDeclaration":2397,"src":"3009:11:39","typeDescriptions":{"typeIdentifier":"t_struct$_Action_$2397_storage_ptr","typeString":"struct IDAO.Action"}},"id":4292,"nodeType":"ArrayTypeName","src":"3009:13:39","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Action_$2397_storage_$dyn_storage_ptr","typeString":"struct IDAO.Action[]"}},"visibility":"internal"},{"constant":false,"id":4295,"mutability":"mutable","name":"_allowFailureMap","nameLocation":"3058:16:39","nodeType":"VariableDeclaration","scope":4317,"src":"3050:24:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4294,"name":"uint256","nodeType":"ElementaryTypeName","src":"3050:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2974:106:39"},"returnParameters":{"id":4302,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4299,"mutability":"mutable","name":"execResults","nameLocation":"3122:11:39","nodeType":"VariableDeclaration","scope":4317,"src":"3107:26:39","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":4297,"name":"bytes","nodeType":"ElementaryTypeName","src":"3107:5:39","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":4298,"nodeType":"ArrayTypeName","src":"3107:7:39","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"},{"constant":false,"id":4301,"mutability":"mutable","name":"failureMap","nameLocation":"3143:10:39","nodeType":"VariableDeclaration","scope":4317,"src":"3135:18:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4300,"name":"uint256","nodeType":"ElementaryTypeName","src":"3135:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3106:48:39"},"scope":4351,"src":"2957:300:39","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":4349,"nodeType":"Block","src":"3940:103:39","statements":[{"expression":{"id":4347,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":4336,"name":"execResults","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4332,"src":"3951:11:39","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}},{"id":4337,"name":"failureMap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4334,"src":"3964:10:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4338,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"3950:25:39","typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$_t_uint256_$","typeString":"tuple(bytes memory[] memory,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4343,"name":"_callId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4322,"src":"4000:7:39","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":4344,"name":"_actions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4326,"src":"4009:8:39","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Action_$2397_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IDAO.Action calldata[] calldata"}},{"id":4345,"name":"_allowFailureMap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4328,"src":"4019:16:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_array$_t_struct$_Action_$2397_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IDAO.Action calldata[] calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":4340,"name":"_target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4320,"src":"3983:7:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4339,"name":"IDAO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2538,"src":"3978:4:39","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IDAO_$2538_$","typeString":"type(contract IDAO)"}},"id":4341,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3978:13:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}},"id":4342,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3992:7:39","memberName":"execute","nodeType":"MemberAccess","referencedDeclaration":2439,"src":"3978:21:39","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes32_$_t_array$_t_struct$_Action_$2397_memory_ptr_$dyn_memory_ptr_$_t_uint256_$returns$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$_t_uint256_$","typeString":"function (bytes32,struct IDAO.Action memory[] memory,uint256) external returns (bytes memory[] memory,uint256)"}},"id":4346,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3978:58:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$_t_uint256_$","typeString":"tuple(bytes memory[] memory,uint256)"}},"src":"3950:86:39","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4348,"nodeType":"ExpressionStatement","src":"3950:86:39"}]},"documentation":{"id":4318,"nodeType":"StructuredDocumentation","src":"3263:449:39","text":"@notice Forwards the actions to the `target` for the execution.\n @param _target Forwards the actions to the specific target.\n @param _callId Identifier for this execution.\n @param _actions actions that will be eventually called.\n @param _allowFailureMap Bitmap-encoded number. TODO:\n @return execResults address of the implementation contract.\n @return failureMap address of the implementation contract."},"id":4350,"implemented":true,"kind":"function","modifiers":[],"name":"_execute","nameLocation":"3726:8:39","nodeType":"FunctionDefinition","parameters":{"id":4329,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4320,"mutability":"mutable","name":"_target","nameLocation":"3752:7:39","nodeType":"VariableDeclaration","scope":4350,"src":"3744:15:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4319,"name":"address","nodeType":"ElementaryTypeName","src":"3744:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4322,"mutability":"mutable","name":"_callId","nameLocation":"3777:7:39","nodeType":"VariableDeclaration","scope":4350,"src":"3769:15:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4321,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3769:7:39","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":4326,"mutability":"mutable","name":"_actions","nameLocation":"3817:8:39","nodeType":"VariableDeclaration","scope":4350,"src":"3794:31:39","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Action_$2397_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IDAO.Action[]"},"typeName":{"baseType":{"id":4324,"nodeType":"UserDefinedTypeName","pathNode":{"id":4323,"name":"IDAO.Action","nameLocations":["3794:4:39","3799:6:39"],"nodeType":"IdentifierPath","referencedDeclaration":2397,"src":"3794:11:39"},"referencedDeclaration":2397,"src":"3794:11:39","typeDescriptions":{"typeIdentifier":"t_struct$_Action_$2397_storage_ptr","typeString":"struct IDAO.Action"}},"id":4325,"nodeType":"ArrayTypeName","src":"3794:13:39","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Action_$2397_storage_$dyn_storage_ptr","typeString":"struct IDAO.Action[]"}},"visibility":"internal"},{"constant":false,"id":4328,"mutability":"mutable","name":"_allowFailureMap","nameLocation":"3843:16:39","nodeType":"VariableDeclaration","scope":4350,"src":"3835:24:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4327,"name":"uint256","nodeType":"ElementaryTypeName","src":"3835:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3734:131:39"},"returnParameters":{"id":4335,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4332,"mutability":"mutable","name":"execResults","nameLocation":"3907:11:39","nodeType":"VariableDeclaration","scope":4350,"src":"3892:26:39","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":4330,"name":"bytes","nodeType":"ElementaryTypeName","src":"3892:5:39","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":4331,"nodeType":"ArrayTypeName","src":"3892:7:39","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"},{"constant":false,"id":4334,"mutability":"mutable","name":"failureMap","nameLocation":"3928:10:39","nodeType":"VariableDeclaration","scope":4350,"src":"3920:18:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4333,"name":"uint256","nodeType":"ElementaryTypeName","src":"3920:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3891:48:39"},"scope":4351,"src":"3717:326:39","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":4352,"src":"805:3240:39","usedErrors":[]}],"src":"47:3999:39"},"id":39},"src/plugin/PluginUUPSUpgradeable.sol":{"ast":{"absolutePath":"src/plugin/PluginUUPSUpgradeable.sol","exportedSymbols":{"DaoAuthorizableUpgradeable":[3937],"ERC165Upgradeable":[1281],"IDAO":[2538],"IERC1822ProxiableUpgradeable":[30],"IPlugin":[4002],"IProtocolVersion":[5114],"PluginUUPSUpgradeable":[4576],"ProtocolVersion":[5136],"UUPSUpgradeable":[671]},"id":4577,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":4353,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:40"},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol","id":4355,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4577,"sourceUnit":672,"src":"72:100:40","symbolAliases":[{"foreign":{"id":4354,"name":"UUPSUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":671,"src":"80:15:40","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol","file":"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol","id":4357,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4577,"sourceUnit":31,"src":"173:122:40","symbolAliases":[{"foreign":{"id":4356,"name":"IERC1822ProxiableUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30,"src":"181:28:40","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol","file":"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol","id":4359,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4577,"sourceUnit":1282,"src":"296:112:40","symbolAliases":[{"foreign":{"id":4358,"name":"ERC165Upgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1281,"src":"304:17:40","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/utils/versioning/IProtocolVersion.sol","file":"../utils/versioning/IProtocolVersion.sol","id":4361,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4577,"sourceUnit":5115,"src":"410:74:40","symbolAliases":[{"foreign":{"id":4360,"name":"IProtocolVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5114,"src":"418:16:40","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/utils/versioning/ProtocolVersion.sol","file":"../utils/versioning/ProtocolVersion.sol","id":4363,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4577,"sourceUnit":5137,"src":"485:72:40","symbolAliases":[{"foreign":{"id":4362,"name":"ProtocolVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5136,"src":"493:15:40","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/permission/auth/DaoAuthorizableUpgradeable.sol","file":"../permission/auth/DaoAuthorizableUpgradeable.sol","id":4365,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4577,"sourceUnit":3938,"src":"558:93:40","symbolAliases":[{"foreign":{"id":4364,"name":"DaoAuthorizableUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3937,"src":"566:26:40","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/dao/IDAO.sol","file":"../dao/IDAO.sol","id":4367,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4577,"sourceUnit":2539,"src":"652:37:40","symbolAliases":[{"foreign":{"id":4366,"name":"IDAO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2538,"src":"660:4:40","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/plugin/IPlugin.sol","file":"./IPlugin.sol","id":4369,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4577,"sourceUnit":4003,"src":"690:38:40","symbolAliases":[{"foreign":{"id":4368,"name":"IPlugin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4002,"src":"698:7:40","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":4371,"name":"IPlugin","nameLocations":["1068:7:40"],"nodeType":"IdentifierPath","referencedDeclaration":4002,"src":"1068:7:40"},"id":4372,"nodeType":"InheritanceSpecifier","src":"1068:7:40"},{"baseName":{"id":4373,"name":"ERC165Upgradeable","nameLocations":["1081:17:40"],"nodeType":"IdentifierPath","referencedDeclaration":1281,"src":"1081:17:40"},"id":4374,"nodeType":"InheritanceSpecifier","src":"1081:17:40"},{"baseName":{"id":4375,"name":"UUPSUpgradeable","nameLocations":["1104:15:40"],"nodeType":"IdentifierPath","referencedDeclaration":671,"src":"1104:15:40"},"id":4376,"nodeType":"InheritanceSpecifier","src":"1104:15:40"},{"baseName":{"id":4377,"name":"DaoAuthorizableUpgradeable","nameLocations":["1125:26:40"],"nodeType":"IdentifierPath","referencedDeclaration":3937,"src":"1125:26:40"},"id":4378,"nodeType":"InheritanceSpecifier","src":"1125:26:40"},{"baseName":{"id":4379,"name":"ProtocolVersion","nameLocations":["1157:15:40"],"nodeType":"IdentifierPath","referencedDeclaration":5136,"src":"1157:15:40"},"id":4380,"nodeType":"InheritanceSpecifier","src":"1157:15:40"}],"canonicalName":"PluginUUPSUpgradeable","contractDependencies":[],"contractKind":"contract","documentation":{"id":4370,"nodeType":"StructuredDocumentation","src":"730:291:40","text":"@title PluginUUPSUpgradeable\n @author Aragon X - 2022-2023\n @notice An abstract, upgradeable contract to inherit from when creating a plugin being deployed via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\n @custom:security-contact sirt@aragon.org"},"fullyImplemented":true,"id":4576,"linearizedBaseContracts":[4576,5136,5114,3937,1052,671,355,20,30,1281,1293,534,4002],"name":"PluginUUPSUpgradeable","nameLocation":"1039:21:40","nodeType":"ContractDefinition","nodes":[{"constant":false,"functionSelector":"d4b83992","id":4382,"mutability":"mutable","name":"target","nameLocation":"1308:6:40","nodeType":"VariableDeclaration","scope":4576,"src":"1293:21:40","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4381,"name":"address","nodeType":"ElementaryTypeName","src":"1293:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"anonymous":false,"documentation":{"id":4383,"nodeType":"StructuredDocumentation","src":"1321:45:40","text":"@dev Emitted each time the Target is set."},"eventSelector":"90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d6","id":4389,"name":"TargetSet","nameLocation":"1377:9:40","nodeType":"EventDefinition","parameters":{"id":4388,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4385,"indexed":true,"mutability":"mutable","name":"previousTarget","nameLocation":"1403:14:40","nodeType":"VariableDeclaration","scope":4389,"src":"1387:30:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4384,"name":"address","nodeType":"ElementaryTypeName","src":"1387:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4387,"indexed":true,"mutability":"mutable","name":"newTarget","nameLocation":"1435:9:40","nodeType":"VariableDeclaration","scope":4389,"src":"1419:25:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4386,"name":"address","nodeType":"ElementaryTypeName","src":"1419:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1386:59:40"},"src":"1371:75:40"},{"body":{"id":4396,"nodeType":"Block","src":"1637:39:40","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":4393,"name":"_disableInitializers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":515,"src":"1647:20:40","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":4394,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1647:22:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4395,"nodeType":"ExpressionStatement","src":"1647:22:40"}]},"documentation":{"id":4390,"nodeType":"StructuredDocumentation","src":"1452:166:40","text":"@notice Disables the initializers on the implementation contract to prevent it from being left uninitialized.\n @custom:oz-upgrades-unsafe-allow constructor"},"id":4397,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":4391,"nodeType":"ParameterList","parameters":[],"src":"1634:2:40"},"returnParameters":{"id":4392,"nodeType":"ParameterList","parameters":[],"src":"1637:0:40"},"scope":4576,"src":"1623:53:40","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[4001],"body":{"id":4408,"nodeType":"Block","src":"1774:39:40","statements":[{"expression":{"expression":{"id":4405,"name":"PluginType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3994,"src":"1791:10:40","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_PluginType_$3994_$","typeString":"type(enum IPlugin.PluginType)"}},"id":4406,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1802:4:40","memberName":"UUPS","nodeType":"MemberAccess","referencedDeclaration":3991,"src":"1791:15:40","typeDescriptions":{"typeIdentifier":"t_enum$_PluginType_$3994","typeString":"enum IPlugin.PluginType"}},"functionReturnParameters":4404,"id":4407,"nodeType":"Return","src":"1784:22:40"}]},"documentation":{"id":4398,"nodeType":"StructuredDocumentation","src":"1682:23:40","text":"@inheritdoc IPlugin"},"functionSelector":"41de6830","id":4409,"implemented":true,"kind":"function","modifiers":[],"name":"pluginType","nameLocation":"1719:10:40","nodeType":"FunctionDefinition","overrides":{"id":4400,"nodeType":"OverrideSpecifier","overrides":[],"src":"1744:8:40"},"parameters":{"id":4399,"nodeType":"ParameterList","parameters":[],"src":"1729:2:40"},"returnParameters":{"id":4404,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4403,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4409,"src":"1762:10:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_PluginType_$3994","typeString":"enum IPlugin.PluginType"},"typeName":{"id":4402,"nodeType":"UserDefinedTypeName","pathNode":{"id":4401,"name":"PluginType","nameLocations":["1762:10:40"],"nodeType":"IdentifierPath","referencedDeclaration":3994,"src":"1762:10:40"},"referencedDeclaration":3994,"src":"1762:10:40","typeDescriptions":{"typeIdentifier":"t_enum$_PluginType_$3994","typeString":"enum IPlugin.PluginType"}},"visibility":"internal"}],"src":"1761:12:40"},"scope":4576,"src":"1710:103:40","stateMutability":"pure","virtual":false,"visibility":"public"},{"constant":true,"documentation":{"id":4410,"nodeType":"StructuredDocumentation","src":"1819:87:40","text":"@notice The ID of the permission required to call the `_authorizeUpgrade` function."},"functionSelector":"c9c4bfca","id":4415,"mutability":"constant","name":"UPGRADE_PLUGIN_PERMISSION_ID","nameLocation":"1935:28:40","nodeType":"VariableDeclaration","scope":4576,"src":"1911:93:40","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4411,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1911:7:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"555047524144455f504c5547494e5f5045524d495353494f4e","id":4413,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1976:27:40","typeDescriptions":{"typeIdentifier":"t_stringliteral_821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f5","typeString":"literal_string \"UPGRADE_PLUGIN_PERMISSION\""},"value":"UPGRADE_PLUGIN_PERMISSION"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f5","typeString":"literal_string \"UPGRADE_PLUGIN_PERMISSION\""}],"id":4412,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967288,"src":"1966:9:40","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":4414,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1966:38:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"public"},{"body":{"id":4428,"nodeType":"Block","src":"2255:56:40","statements":[{"expression":{"arguments":[{"id":4425,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4419,"src":"2299:4:40","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}],"id":4424,"name":"__DaoAuthorizableUpgradeable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3901,"src":"2265:33:40","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IDAO_$2538_$returns$__$","typeString":"function (contract IDAO)"}},"id":4426,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2265:39:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4427,"nodeType":"ExpressionStatement","src":"2265:39:40"}]},"documentation":{"id":4416,"nodeType":"StructuredDocumentation","src":"2011:103:40","text":"@notice Initializes the plugin by storing the associated DAO.\n @param _dao The DAO contract."},"id":4429,"implemented":true,"kind":"function","modifiers":[{"id":4422,"kind":"modifierInvocation","modifierName":{"id":4421,"name":"onlyInitializing","nameLocations":["2238:16:40"],"nodeType":"IdentifierPath","referencedDeclaration":479,"src":"2238:16:40"},"nodeType":"ModifierInvocation","src":"2238:16:40"}],"name":"__PluginUUPSUpgradeable_init","nameLocation":"2181:28:40","nodeType":"FunctionDefinition","parameters":{"id":4420,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4419,"mutability":"mutable","name":"_dao","nameLocation":"2215:4:40","nodeType":"VariableDeclaration","scope":4429,"src":"2210:9:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"},"typeName":{"id":4418,"nodeType":"UserDefinedTypeName","pathNode":{"id":4417,"name":"IDAO","nameLocations":["2210:4:40"],"nodeType":"IdentifierPath","referencedDeclaration":2538,"src":"2210:4:40"},"referencedDeclaration":2538,"src":"2210:4:40","typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}},"visibility":"internal"}],"src":"2209:11:40"},"returnParameters":{"id":4423,"nodeType":"ParameterList","parameters":[],"src":"2255:0:40"},"scope":4576,"src":"2172:139:40","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":4448,"nodeType":"Block","src":"2482:123:40","statements":[{"assignments":[4436],"declarations":[{"constant":false,"id":4436,"mutability":"mutable","name":"previousTarget","nameLocation":"2500:14:40","nodeType":"VariableDeclaration","scope":4448,"src":"2492:22:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4435,"name":"address","nodeType":"ElementaryTypeName","src":"2492:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":4438,"initialValue":{"id":4437,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4382,"src":"2517:6:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"2492:31:40"},{"expression":{"id":4441,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4439,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4382,"src":"2533:6:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":4440,"name":"_target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4432,"src":"2542:7:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2533:16:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":4442,"nodeType":"ExpressionStatement","src":"2533:16:40"},{"eventCall":{"arguments":[{"id":4444,"name":"previousTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4436,"src":"2574:14:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4445,"name":"_target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4432,"src":"2590:7:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":4443,"name":"TargetSet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4389,"src":"2564:9:40","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":4446,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2564:34:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4447,"nodeType":"EmitStatement","src":"2559:39:40"}]},"documentation":{"id":4430,"nodeType":"StructuredDocumentation","src":"2317:117:40","text":"@dev Sets the target to a new target (`newTarget`).\n @notice Can only be called by the current owner. TODO"},"functionSelector":"776d1a01","id":4449,"implemented":true,"kind":"function","modifiers":[],"name":"setTarget","nameLocation":"2448:9:40","nodeType":"FunctionDefinition","parameters":{"id":4433,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4432,"mutability":"mutable","name":"_target","nameLocation":"2466:7:40","nodeType":"VariableDeclaration","scope":4449,"src":"2458:15:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4431,"name":"address","nodeType":"ElementaryTypeName","src":"2458:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2457:17:40"},"returnParameters":{"id":4434,"nodeType":"ParameterList","parameters":[],"src":"2482:0:40"},"scope":4576,"src":"2439:166:40","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[1275],"body":{"id":4484,"nodeType":"Block","src":"2902:274:40","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":4482,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":4477,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":4470,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":4463,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4458,"name":"_interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4452,"src":"2931:12:40","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":4460,"name":"IPlugin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4002,"src":"2952:7:40","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IPlugin_$4002_$","typeString":"type(contract IPlugin)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IPlugin_$4002_$","typeString":"type(contract IPlugin)"}],"id":4459,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"2947:4:40","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":4461,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2947:13:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IPlugin_$4002","typeString":"type(contract IPlugin)"}},"id":4462,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2961:11:40","memberName":"interfaceId","nodeType":"MemberAccess","src":"2947:25:40","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"2931:41:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":4469,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4464,"name":"_interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4452,"src":"2988:12:40","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":4466,"name":"IProtocolVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5114,"src":"3009:16:40","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IProtocolVersion_$5114_$","typeString":"type(contract IProtocolVersion)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IProtocolVersion_$5114_$","typeString":"type(contract IProtocolVersion)"}],"id":4465,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"3004:4:40","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":4467,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3004:22:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IProtocolVersion_$5114","typeString":"type(contract IProtocolVersion)"}},"id":4468,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3027:11:40","memberName":"interfaceId","nodeType":"MemberAccess","src":"3004:34:40","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"2988:50:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2931:107:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":4476,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4471,"name":"_interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4452,"src":"3054:12:40","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":4473,"name":"IERC1822ProxiableUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30,"src":"3075:28:40","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC1822ProxiableUpgradeable_$30_$","typeString":"type(contract IERC1822ProxiableUpgradeable)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC1822ProxiableUpgradeable_$30_$","typeString":"type(contract IERC1822ProxiableUpgradeable)"}],"id":4472,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"3070:4:40","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":4474,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3070:34:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC1822ProxiableUpgradeable_$30","typeString":"type(contract IERC1822ProxiableUpgradeable)"}},"id":4475,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3105:11:40","memberName":"interfaceId","nodeType":"MemberAccess","src":"3070:46:40","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"3054:62:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2931:185:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":4480,"name":"_interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4452,"src":"3156:12:40","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":4478,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967271,"src":"3132:5:40","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_PluginUUPSUpgradeable_$4576_$","typeString":"type(contract super PluginUUPSUpgradeable)"}},"id":4479,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3138:17:40","memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":1275,"src":"3132:23:40","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bool_$","typeString":"function (bytes4) view returns (bool)"}},"id":4481,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3132:37:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2931:238:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":4457,"id":4483,"nodeType":"Return","src":"2912:257:40"}]},"documentation":{"id":4450,"nodeType":"StructuredDocumentation","src":"2611:194:40","text":"@notice Checks if an interface is supported by this or its parent contract.\n @param _interfaceId The ID of the interface.\n @return Returns `true` if the interface is supported."},"functionSelector":"01ffc9a7","id":4485,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"2819:17:40","nodeType":"FunctionDefinition","overrides":{"id":4454,"nodeType":"OverrideSpecifier","overrides":[],"src":"2878:8:40"},"parameters":{"id":4453,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4452,"mutability":"mutable","name":"_interfaceId","nameLocation":"2844:12:40","nodeType":"VariableDeclaration","scope":4485,"src":"2837:19:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":4451,"name":"bytes4","nodeType":"ElementaryTypeName","src":"2837:6:40","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"2836:21:40"},"returnParameters":{"id":4457,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4456,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4485,"src":"2896:4:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4455,"name":"bool","nodeType":"ElementaryTypeName","src":"2896:4:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2895:6:40"},"scope":4576,"src":"2810:366:40","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":4494,"nodeType":"Block","src":"3513:44:40","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":4491,"name":"_getImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76,"src":"3530:18:40","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":4492,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3530:20:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":4490,"id":4493,"nodeType":"Return","src":"3523:27:40"}]},"documentation":{"id":4486,"nodeType":"StructuredDocumentation","src":"3182:270:40","text":"@notice Returns the address of the implementation contract in the [proxy storage slot](https://eips.ethereum.org/EIPS/eip-1967) slot the [UUPS proxy](https://eips.ethereum.org/EIPS/eip-1822) is pointing to.\n @return The address of the implementation contract."},"functionSelector":"5c60da1b","id":4495,"implemented":true,"kind":"function","modifiers":[],"name":"implementation","nameLocation":"3466:14:40","nodeType":"FunctionDefinition","parameters":{"id":4487,"nodeType":"ParameterList","parameters":[],"src":"3480:2:40"},"returnParameters":{"id":4490,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4489,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4495,"src":"3504:7:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4488,"name":"address","nodeType":"ElementaryTypeName","src":"3504:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3503:9:40"},"scope":4576,"src":"3457:100:40","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":4525,"nodeType":"Block","src":"4161:102:40","statements":[{"expression":{"id":4523,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":4512,"name":"execResults","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4508,"src":"4172:11:40","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}},{"id":4513,"name":"failureMap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4510,"src":"4185:10:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4514,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"4171:25:40","typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$_t_uint256_$","typeString":"tuple(bytes memory[] memory,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4519,"name":"_callId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4498,"src":"4220:7:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":4520,"name":"_actions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4502,"src":"4229:8:40","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Action_$2397_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IDAO.Action calldata[] calldata"}},{"id":4521,"name":"_allowFailureMap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4504,"src":"4239:16:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_array$_t_struct$_Action_$2397_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IDAO.Action calldata[] calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":4516,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4382,"src":"4204:6:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4515,"name":"IDAO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2538,"src":"4199:4:40","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IDAO_$2538_$","typeString":"type(contract IDAO)"}},"id":4517,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4199:12:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}},"id":4518,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4212:7:40","memberName":"execute","nodeType":"MemberAccess","referencedDeclaration":2439,"src":"4199:20:40","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes32_$_t_array$_t_struct$_Action_$2397_memory_ptr_$dyn_memory_ptr_$_t_uint256_$returns$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$_t_uint256_$","typeString":"function (bytes32,struct IDAO.Action memory[] memory,uint256) external returns (bytes memory[] memory,uint256)"}},"id":4522,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4199:57:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$_t_uint256_$","typeString":"tuple(bytes memory[] memory,uint256)"}},"src":"4171:85:40","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4524,"nodeType":"ExpressionStatement","src":"4171:85:40"}]},"documentation":{"id":4496,"nodeType":"StructuredDocumentation","src":"3563:395:40","text":"@notice Forwards the actions to the currently set `target` for the execution.\n @param _callId Identifier for this execution.\n @param _actions actions that will be eventually called.\n @param _allowFailureMap Bitmap-encoded number. TODO:\n @return execResults address of the implementation contract.\n @return failureMap address of the implementation contract."},"id":4526,"implemented":true,"kind":"function","modifiers":[],"name":"_execute","nameLocation":"3972:8:40","nodeType":"FunctionDefinition","parameters":{"id":4505,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4498,"mutability":"mutable","name":"_callId","nameLocation":"3998:7:40","nodeType":"VariableDeclaration","scope":4526,"src":"3990:15:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4497,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3990:7:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":4502,"mutability":"mutable","name":"_actions","nameLocation":"4038:8:40","nodeType":"VariableDeclaration","scope":4526,"src":"4015:31:40","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Action_$2397_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IDAO.Action[]"},"typeName":{"baseType":{"id":4500,"nodeType":"UserDefinedTypeName","pathNode":{"id":4499,"name":"IDAO.Action","nameLocations":["4015:4:40","4020:6:40"],"nodeType":"IdentifierPath","referencedDeclaration":2397,"src":"4015:11:40"},"referencedDeclaration":2397,"src":"4015:11:40","typeDescriptions":{"typeIdentifier":"t_struct$_Action_$2397_storage_ptr","typeString":"struct IDAO.Action"}},"id":4501,"nodeType":"ArrayTypeName","src":"4015:13:40","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Action_$2397_storage_$dyn_storage_ptr","typeString":"struct IDAO.Action[]"}},"visibility":"internal"},{"constant":false,"id":4504,"mutability":"mutable","name":"_allowFailureMap","nameLocation":"4064:16:40","nodeType":"VariableDeclaration","scope":4526,"src":"4056:24:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4503,"name":"uint256","nodeType":"ElementaryTypeName","src":"4056:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3980:106:40"},"returnParameters":{"id":4511,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4508,"mutability":"mutable","name":"execResults","nameLocation":"4128:11:40","nodeType":"VariableDeclaration","scope":4526,"src":"4113:26:40","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":4506,"name":"bytes","nodeType":"ElementaryTypeName","src":"4113:5:40","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":4507,"nodeType":"ArrayTypeName","src":"4113:7:40","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"},{"constant":false,"id":4510,"mutability":"mutable","name":"failureMap","nameLocation":"4149:10:40","nodeType":"VariableDeclaration","scope":4526,"src":"4141:18:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4509,"name":"uint256","nodeType":"ElementaryTypeName","src":"4141:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4112:48:40"},"scope":4576,"src":"3963:300:40","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":4558,"nodeType":"Block","src":"4946:103:40","statements":[{"expression":{"id":4556,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":4545,"name":"execResults","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4541,"src":"4957:11:40","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}},{"id":4546,"name":"failureMap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4543,"src":"4970:10:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4547,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"4956:25:40","typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$_t_uint256_$","typeString":"tuple(bytes memory[] memory,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4552,"name":"_callId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4531,"src":"5006:7:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":4553,"name":"_actions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4535,"src":"5015:8:40","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Action_$2397_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IDAO.Action calldata[] calldata"}},{"id":4554,"name":"_allowFailureMap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4537,"src":"5025:16:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_array$_t_struct$_Action_$2397_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IDAO.Action calldata[] calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":4549,"name":"_target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4529,"src":"4989:7:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4548,"name":"IDAO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2538,"src":"4984:4:40","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IDAO_$2538_$","typeString":"type(contract IDAO)"}},"id":4550,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4984:13:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IDAO_$2538","typeString":"contract IDAO"}},"id":4551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4998:7:40","memberName":"execute","nodeType":"MemberAccess","referencedDeclaration":2439,"src":"4984:21:40","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes32_$_t_array$_t_struct$_Action_$2397_memory_ptr_$dyn_memory_ptr_$_t_uint256_$returns$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$_t_uint256_$","typeString":"function (bytes32,struct IDAO.Action memory[] memory,uint256) external returns (bytes memory[] memory,uint256)"}},"id":4555,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4984:58:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$_t_uint256_$","typeString":"tuple(bytes memory[] memory,uint256)"}},"src":"4956:86:40","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4557,"nodeType":"ExpressionStatement","src":"4956:86:40"}]},"documentation":{"id":4527,"nodeType":"StructuredDocumentation","src":"4269:449:40","text":"@notice Forwards the actions to the `target` for the execution.\n @param _target Forwards the actions to the specific target.\n @param _callId Identifier for this execution.\n @param _actions actions that will be eventually called.\n @param _allowFailureMap Bitmap-encoded number. TODO:\n @return execResults address of the implementation contract.\n @return failureMap address of the implementation contract."},"id":4559,"implemented":true,"kind":"function","modifiers":[],"name":"_execute","nameLocation":"4732:8:40","nodeType":"FunctionDefinition","parameters":{"id":4538,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4529,"mutability":"mutable","name":"_target","nameLocation":"4758:7:40","nodeType":"VariableDeclaration","scope":4559,"src":"4750:15:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4528,"name":"address","nodeType":"ElementaryTypeName","src":"4750:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4531,"mutability":"mutable","name":"_callId","nameLocation":"4783:7:40","nodeType":"VariableDeclaration","scope":4559,"src":"4775:15:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4530,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4775:7:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":4535,"mutability":"mutable","name":"_actions","nameLocation":"4823:8:40","nodeType":"VariableDeclaration","scope":4559,"src":"4800:31:40","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Action_$2397_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IDAO.Action[]"},"typeName":{"baseType":{"id":4533,"nodeType":"UserDefinedTypeName","pathNode":{"id":4532,"name":"IDAO.Action","nameLocations":["4800:4:40","4805:6:40"],"nodeType":"IdentifierPath","referencedDeclaration":2397,"src":"4800:11:40"},"referencedDeclaration":2397,"src":"4800:11:40","typeDescriptions":{"typeIdentifier":"t_struct$_Action_$2397_storage_ptr","typeString":"struct IDAO.Action"}},"id":4534,"nodeType":"ArrayTypeName","src":"4800:13:40","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Action_$2397_storage_$dyn_storage_ptr","typeString":"struct IDAO.Action[]"}},"visibility":"internal"},{"constant":false,"id":4537,"mutability":"mutable","name":"_allowFailureMap","nameLocation":"4849:16:40","nodeType":"VariableDeclaration","scope":4559,"src":"4841:24:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4536,"name":"uint256","nodeType":"ElementaryTypeName","src":"4841:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4740:131:40"},"returnParameters":{"id":4544,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4541,"mutability":"mutable","name":"execResults","nameLocation":"4913:11:40","nodeType":"VariableDeclaration","scope":4559,"src":"4898:26:40","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":4539,"name":"bytes","nodeType":"ElementaryTypeName","src":"4898:5:40","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":4540,"nodeType":"ArrayTypeName","src":"4898:7:40","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"},{"constant":false,"id":4543,"mutability":"mutable","name":"failureMap","nameLocation":"4934:10:40","nodeType":"VariableDeclaration","scope":4559,"src":"4926:18:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4542,"name":"uint256","nodeType":"ElementaryTypeName","src":"4926:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4897:48:40"},"scope":4576,"src":"4723:326:40","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"baseFunctions":[665],"body":{"id":4569,"nodeType":"Block","src":"5586:8:40","statements":[]},"documentation":{"id":4560,"nodeType":"StructuredDocumentation","src":"5055:330:40","text":"@notice Internal method authorizing the upgrade of the contract via the [upgradeability mechanism for UUPS proxies](https://docs.openzeppelin.com/contracts/4.x/api/proxy#UUPSUpgradeable) (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\n @dev The caller must have the `UPGRADE_PLUGIN_PERMISSION_ID` permission."},"id":4570,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":4566,"name":"UPGRADE_PLUGIN_PERMISSION_ID","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4415,"src":"5503:28:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":4567,"kind":"modifierInvocation","modifierName":{"id":4565,"name":"auth","nameLocations":["5498:4:40"],"nodeType":"IdentifierPath","referencedDeclaration":3931,"src":"5498:4:40"},"nodeType":"ModifierInvocation","src":"5498:34:40"}],"name":"_authorizeUpgrade","nameLocation":"5399:17:40","nodeType":"FunctionDefinition","overrides":{"id":4564,"nodeType":"OverrideSpecifier","overrides":[],"src":"5481:8:40"},"parameters":{"id":4563,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4562,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4570,"src":"5426:7:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4561,"name":"address","nodeType":"ElementaryTypeName","src":"5426:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5416:23:40"},"returnParameters":{"id":4568,"nodeType":"ParameterList","parameters":[],"src":"5586:0:40"},"scope":4576,"src":"5390:204:40","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"constant":false,"documentation":{"id":4571,"nodeType":"StructuredDocumentation","src":"5600:273:40","text":"@notice This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain (see [OpenZeppelin's guide about storage gaps](https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps))."},"id":4575,"mutability":"mutable","name":"__gap","nameLocation":"5898:5:40","nodeType":"VariableDeclaration","scope":4576,"src":"5878:25:40","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$49_storage","typeString":"uint256[49]"},"typeName":{"baseType":{"id":4572,"name":"uint256","nodeType":"ElementaryTypeName","src":"5878:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4574,"length":{"hexValue":"3439","id":4573,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5886:2:40","typeDescriptions":{"typeIdentifier":"t_rational_49_by_1","typeString":"int_const 49"},"value":"49"},"nodeType":"ArrayTypeName","src":"5878:11:40","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$49_storage_ptr","typeString":"uint256[49]"}},"visibility":"private"}],"scope":4577,"src":"1021:4885:40","usedErrors":[3952]}],"src":"47:5860:40"},"id":40},"src/plugin/extensions/proposal/IProposal.sol":{"ast":{"absolutePath":"src/plugin/extensions/proposal/IProposal.sol","exportedSymbols":{"IDAO":[2538],"IProposal":[4636]},"id":4637,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":4578,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:41"},{"absolutePath":"src/dao/IDAO.sol","file":"../../../dao/IDAO.sol","id":4580,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4637,"sourceUnit":2539,"src":"72:43:41","symbolAliases":[{"foreign":{"id":4579,"name":"IDAO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2538,"src":"80:4:41","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"IProposal","contractDependencies":[],"contractKind":"interface","documentation":{"id":4581,"nodeType":"StructuredDocumentation","src":"117:192:41","text":"@title IProposal\n @author Aragon X - 2022-2023\n @notice An interface to be implemented by DAO plugins that create and execute proposals.\n @custom:security-contact sirt@aragon.org"},"fullyImplemented":false,"id":4636,"linearizedBaseContracts":[4636],"name":"IProposal","nameLocation":"319:9:41","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":4582,"nodeType":"StructuredDocumentation","src":"335:680:41","text":"@notice Emitted when a proposal is created.\n @param proposalId The ID of the proposal.\n @param creator The creator of the proposal.\n @param startDate The start date of the proposal in seconds.\n @param endDate The end date of the proposal in seconds.\n @param metadata The metadata of the proposal.\n @param actions The actions that will be executed if the proposal passes.\n @param allowFailureMap A bitmap allowing the proposal to succeed, even if individual actions might revert. If the bit at index `i` is 1, the proposal succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert."},"eventSelector":"a6c1f8f4276dc3f243459e13b557c84e8f4e90b2e09070bad5f6909cee687c92","id":4600,"name":"ProposalCreated","nameLocation":"1026:15:41","nodeType":"EventDefinition","parameters":{"id":4599,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4584,"indexed":true,"mutability":"mutable","name":"proposalId","nameLocation":"1067:10:41","nodeType":"VariableDeclaration","scope":4600,"src":"1051:26:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4583,"name":"uint256","nodeType":"ElementaryTypeName","src":"1051:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4586,"indexed":true,"mutability":"mutable","name":"creator","nameLocation":"1103:7:41","nodeType":"VariableDeclaration","scope":4600,"src":"1087:23:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4585,"name":"address","nodeType":"ElementaryTypeName","src":"1087:7:41","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4588,"indexed":false,"mutability":"mutable","name":"startDate","nameLocation":"1127:9:41","nodeType":"VariableDeclaration","scope":4600,"src":"1120:16:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":4587,"name":"uint64","nodeType":"ElementaryTypeName","src":"1120:6:41","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":4590,"indexed":false,"mutability":"mutable","name":"endDate","nameLocation":"1153:7:41","nodeType":"VariableDeclaration","scope":4600,"src":"1146:14:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":4589,"name":"uint64","nodeType":"ElementaryTypeName","src":"1146:6:41","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":4592,"indexed":false,"mutability":"mutable","name":"metadata","nameLocation":"1176:8:41","nodeType":"VariableDeclaration","scope":4600,"src":"1170:14:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4591,"name":"bytes","nodeType":"ElementaryTypeName","src":"1170:5:41","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":4596,"indexed":false,"mutability":"mutable","name":"actions","nameLocation":"1208:7:41","nodeType":"VariableDeclaration","scope":4600,"src":"1194:21:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Action_$2397_memory_ptr_$dyn_memory_ptr","typeString":"struct IDAO.Action[]"},"typeName":{"baseType":{"id":4594,"nodeType":"UserDefinedTypeName","pathNode":{"id":4593,"name":"IDAO.Action","nameLocations":["1194:4:41","1199:6:41"],"nodeType":"IdentifierPath","referencedDeclaration":2397,"src":"1194:11:41"},"referencedDeclaration":2397,"src":"1194:11:41","typeDescriptions":{"typeIdentifier":"t_struct$_Action_$2397_storage_ptr","typeString":"struct IDAO.Action"}},"id":4595,"nodeType":"ArrayTypeName","src":"1194:13:41","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Action_$2397_storage_$dyn_storage_ptr","typeString":"struct IDAO.Action[]"}},"visibility":"internal"},{"constant":false,"id":4598,"indexed":false,"mutability":"mutable","name":"allowFailureMap","nameLocation":"1233:15:41","nodeType":"VariableDeclaration","scope":4600,"src":"1225:23:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4597,"name":"uint256","nodeType":"ElementaryTypeName","src":"1225:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1041:213:41"},"src":"1020:235:41"},{"anonymous":false,"documentation":{"id":4601,"nodeType":"StructuredDocumentation","src":"1261:98:41","text":"@notice Emitted when a proposal is executed.\n @param proposalId The ID of the proposal."},"eventSelector":"712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f","id":4605,"name":"ProposalExecuted","nameLocation":"1370:16:41","nodeType":"EventDefinition","parameters":{"id":4604,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4603,"indexed":true,"mutability":"mutable","name":"proposalId","nameLocation":"1403:10:41","nodeType":"VariableDeclaration","scope":4605,"src":"1387:26:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4602,"name":"uint256","nodeType":"ElementaryTypeName","src":"1387:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1386:28:41"},"src":"1364:51:41"},{"documentation":{"id":4606,"nodeType":"StructuredDocumentation","src":"1421:330:41","text":"@notice Creates a new proposal.\n @param data The metadata of the proposal.\n @param actions The actions that will be executed after the proposal passes.\n @param startDate The start date of the proposal.\n @param endDate The end date of the proposal.\n @return proposalId The id of the proposal."},"functionSelector":"74d786be","id":4621,"implemented":false,"kind":"function","modifiers":[],"name":"createProposal","nameLocation":"1765:14:41","nodeType":"FunctionDefinition","parameters":{"id":4617,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4608,"mutability":"mutable","name":"data","nameLocation":"1802:4:41","nodeType":"VariableDeclaration","scope":4621,"src":"1789:17:41","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4607,"name":"bytes","nodeType":"ElementaryTypeName","src":"1789:5:41","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":4612,"mutability":"mutable","name":"actions","nameLocation":"1837:7:41","nodeType":"VariableDeclaration","scope":4621,"src":"1816:28:41","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Action_$2397_memory_ptr_$dyn_memory_ptr","typeString":"struct IDAO.Action[]"},"typeName":{"baseType":{"id":4610,"nodeType":"UserDefinedTypeName","pathNode":{"id":4609,"name":"IDAO.Action","nameLocations":["1816:4:41","1821:6:41"],"nodeType":"IdentifierPath","referencedDeclaration":2397,"src":"1816:11:41"},"referencedDeclaration":2397,"src":"1816:11:41","typeDescriptions":{"typeIdentifier":"t_struct$_Action_$2397_storage_ptr","typeString":"struct IDAO.Action"}},"id":4611,"nodeType":"ArrayTypeName","src":"1816:13:41","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Action_$2397_storage_$dyn_storage_ptr","typeString":"struct IDAO.Action[]"}},"visibility":"internal"},{"constant":false,"id":4614,"mutability":"mutable","name":"startDate","nameLocation":"1861:9:41","nodeType":"VariableDeclaration","scope":4621,"src":"1854:16:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":4613,"name":"uint64","nodeType":"ElementaryTypeName","src":"1854:6:41","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":4616,"mutability":"mutable","name":"endDate","nameLocation":"1887:7:41","nodeType":"VariableDeclaration","scope":4621,"src":"1880:14:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":4615,"name":"uint64","nodeType":"ElementaryTypeName","src":"1880:6:41","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"1779:121:41"},"returnParameters":{"id":4620,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4619,"mutability":"mutable","name":"proposalId","nameLocation":"1927:10:41","nodeType":"VariableDeclaration","scope":4621,"src":"1919:18:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4618,"name":"uint256","nodeType":"ElementaryTypeName","src":"1919:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1918:20:41"},"scope":4636,"src":"1756:183:41","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":4622,"nodeType":"StructuredDocumentation","src":"1945:167:41","text":"@notice Whether proposal can be executed or not.\n @param proposalId The id of the proposal.\n @return bool Returns if proposal can be executed or not."},"functionSelector":"cc63604a","id":4629,"implemented":false,"kind":"function","modifiers":[],"name":"canExecute","nameLocation":"2126:10:41","nodeType":"FunctionDefinition","parameters":{"id":4625,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4624,"mutability":"mutable","name":"proposalId","nameLocation":"2145:10:41","nodeType":"VariableDeclaration","scope":4629,"src":"2137:18:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4623,"name":"uint256","nodeType":"ElementaryTypeName","src":"2137:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2136:20:41"},"returnParameters":{"id":4628,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4627,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4629,"src":"2175:4:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4626,"name":"bool","nodeType":"ElementaryTypeName","src":"2175:4:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2174:6:41"},"scope":4636,"src":"2117:64:41","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":4630,"nodeType":"StructuredDocumentation","src":"2187:155:41","text":"@notice Returns the proposal count determining the next proposal ID.\n @dev This function is deprecated TODO:\n @return The proposal count."},"functionSelector":"da35c664","id":4635,"implemented":false,"kind":"function","modifiers":[],"name":"proposalCount","nameLocation":"2356:13:41","nodeType":"FunctionDefinition","parameters":{"id":4631,"nodeType":"ParameterList","parameters":[],"src":"2369:2:41"},"returnParameters":{"id":4634,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4633,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4635,"src":"2395:7:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4632,"name":"uint256","nodeType":"ElementaryTypeName","src":"2395:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2394:9:41"},"scope":4636,"src":"2347:57:41","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":4637,"src":"309:2097:41","usedErrors":[]}],"src":"47:2360:41"},"id":41},"src/plugin/extensions/proposal/Proposal.sol":{"ast":{"absolutePath":"src/plugin/extensions/proposal/Proposal.sol","exportedSymbols":{"Counters":[2241],"ERC165":[2375],"IDAO":[2538],"IProposal":[4636],"Proposal":[4709]},"id":4710,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":4638,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:42"},{"absolutePath":"@openzeppelin/contracts/utils/Counters.sol","file":"@openzeppelin/contracts/utils/Counters.sol","id":4640,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4710,"sourceUnit":2242,"src":"72:68:42","symbolAliases":[{"foreign":{"id":4639,"name":"Counters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2241,"src":"80:8:42","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/introspection/ERC165.sol","file":"@openzeppelin/contracts/utils/introspection/ERC165.sol","id":4642,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4710,"sourceUnit":2376,"src":"141:78:42","symbolAliases":[{"foreign":{"id":4641,"name":"ERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2375,"src":"149:6:42","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/dao/IDAO.sol","file":"../../../dao/IDAO.sol","id":4644,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4710,"sourceUnit":2539,"src":"221:43:42","symbolAliases":[{"foreign":{"id":4643,"name":"IDAO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2538,"src":"229:4:42","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/plugin/extensions/proposal/IProposal.sol","file":"./IProposal.sol","id":4646,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4710,"sourceUnit":4637,"src":"265:42:42","symbolAliases":[{"foreign":{"id":4645,"name":"IProposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4636,"src":"273:9:42","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":4648,"name":"IProposal","nameLocations":["605:9:42"],"nodeType":"IdentifierPath","referencedDeclaration":4636,"src":"605:9:42"},"id":4649,"nodeType":"InheritanceSpecifier","src":"605:9:42"},{"baseName":{"id":4650,"name":"ERC165","nameLocations":["616:6:42"],"nodeType":"IdentifierPath","referencedDeclaration":2375,"src":"616:6:42"},"id":4651,"nodeType":"InheritanceSpecifier","src":"616:6:42"}],"canonicalName":"Proposal","contractDependencies":[],"contractKind":"contract","documentation":{"id":4647,"nodeType":"StructuredDocumentation","src":"309:266:42","text":"@title Proposal\n @author Aragon X - 2022-2023\n @notice An abstract contract containing the traits and internal functionality to create and execute proposals that can be inherited by non-upgradeable DAO plugins.\n @custom:security-contact sirt@aragon.org"},"fullyImplemented":false,"id":4709,"linearizedBaseContracts":[4709,2375,2387,4636],"name":"Proposal","nameLocation":"593:8:42","nodeType":"ContractDefinition","nodes":[{"global":false,"id":4655,"libraryName":{"id":4652,"name":"Counters","nameLocations":["635:8:42"],"nodeType":"IdentifierPath","referencedDeclaration":2241,"src":"635:8:42"},"nodeType":"UsingForDirective","src":"629:36:42","typeName":{"id":4654,"nodeType":"UserDefinedTypeName","pathNode":{"id":4653,"name":"Counters.Counter","nameLocations":["648:8:42","657:7:42"],"nodeType":"IdentifierPath","referencedDeclaration":2173,"src":"648:16:42"},"referencedDeclaration":2173,"src":"648:16:42","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$2173_storage_ptr","typeString":"struct Counters.Counter"}}},{"constant":false,"documentation":{"id":4656,"nodeType":"StructuredDocumentation","src":"671:60:42","text":"@notice The incremental ID for proposals and executions."},"id":4659,"mutability":"mutable","name":"proposalCounter","nameLocation":"761:15:42","nodeType":"VariableDeclaration","scope":4709,"src":"736:40:42","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$2173_storage","typeString":"struct Counters.Counter"},"typeName":{"id":4658,"nodeType":"UserDefinedTypeName","pathNode":{"id":4657,"name":"Counters.Counter","nameLocations":["736:8:42","745:7:42"],"nodeType":"IdentifierPath","referencedDeclaration":2173,"src":"736:16:42"},"referencedDeclaration":2173,"src":"736:16:42","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$2173_storage_ptr","typeString":"struct Counters.Counter"}},"visibility":"private"},{"baseFunctions":[4635],"body":{"id":4670,"nodeType":"Block","src":"1018:49:42","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":4666,"name":"proposalCounter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4659,"src":"1035:15:42","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$2173_storage","typeString":"struct Counters.Counter storage ref"}},"id":4667,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1051:7:42","memberName":"current","nodeType":"MemberAccess","referencedDeclaration":2185,"src":"1035:23:42","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Counter_$2173_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Counter_$2173_storage_ptr_$","typeString":"function (struct Counters.Counter storage pointer) view returns (uint256)"}},"id":4668,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1035:25:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4665,"id":4669,"nodeType":"Return","src":"1028:32:42"}]},"documentation":{"id":4660,"nodeType":"StructuredDocumentation","src":"924:25:42","text":"@inheritdoc IProposal"},"functionSelector":"da35c664","id":4671,"implemented":true,"kind":"function","modifiers":[],"name":"proposalCount","nameLocation":"963:13:42","nodeType":"FunctionDefinition","overrides":{"id":4662,"nodeType":"OverrideSpecifier","overrides":[],"src":"991:8:42"},"parameters":{"id":4661,"nodeType":"ParameterList","parameters":[],"src":"976:2:42"},"returnParameters":{"id":4665,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4664,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4671,"src":"1009:7:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4663,"name":"uint256","nodeType":"ElementaryTypeName","src":"1009:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1008:9:42"},"scope":4709,"src":"954:113:42","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[2374],"body":{"id":4707,"nodeType":"Block","src":"1367:477:42","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":4705,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":4700,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":4693,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4680,"name":"_interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4674,"src":"1570:12:42","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":4692,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":4688,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":4682,"name":"IProposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4636,"src":"1603:9:42","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IProposal_$4636_$","typeString":"type(contract IProposal)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IProposal_$4636_$","typeString":"type(contract IProposal)"}],"id":4681,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"1598:4:42","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":4683,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1598:15:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IProposal_$4636","typeString":"type(contract IProposal)"}},"id":4684,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1614:11:42","memberName":"interfaceId","nodeType":"MemberAccess","src":"1598:27:42","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"expression":{"expression":{"id":4685,"name":"IProposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4636,"src":"1644:9:42","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IProposal_$4636_$","typeString":"type(contract IProposal)"}},"id":4686,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1654:14:42","memberName":"createProposal","nodeType":"MemberAccess","referencedDeclaration":4621,"src":"1644:24:42","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_bytes_memory_ptr_$_t_array$_t_struct$_Action_$2397_memory_ptr_$dyn_memory_ptr_$_t_uint64_$_t_uint64_$returns$_t_uint256_$","typeString":"function IProposal.createProposal(bytes memory,struct IDAO.Action memory[] memory,uint64,uint64) returns (uint256)"}},"id":4687,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1669:8:42","memberName":"selector","nodeType":"MemberAccess","src":"1644:33:42","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"1598:79:42","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"expression":{"expression":{"id":4689,"name":"IProposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4636,"src":"1696:9:42","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IProposal_$4636_$","typeString":"type(contract IProposal)"}},"id":4690,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1706:10:42","memberName":"canExecute","nodeType":"MemberAccess","referencedDeclaration":4629,"src":"1696:20:42","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_uint256_$returns$_t_bool_$","typeString":"function IProposal.canExecute(uint256) returns (bool)"}},"id":4691,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1717:8:42","memberName":"selector","nodeType":"MemberAccess","src":"1696:29:42","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"1598:127:42","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"1570:155:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":4699,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4694,"name":"_interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4674,"src":"1741:12:42","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":4696,"name":"IProposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4636,"src":"1762:9:42","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IProposal_$4636_$","typeString":"type(contract IProposal)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IProposal_$4636_$","typeString":"type(contract IProposal)"}],"id":4695,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"1757:4:42","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":4697,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1757:15:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IProposal_$4636","typeString":"type(contract IProposal)"}},"id":4698,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1773:11:42","memberName":"interfaceId","nodeType":"MemberAccess","src":"1757:27:42","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"1741:43:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1570:214:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":4703,"name":"_interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4674,"src":"1824:12:42","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":4701,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967271,"src":"1800:5:42","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_Proposal_$4709_$","typeString":"type(contract super Proposal)"}},"id":4702,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1806:17:42","memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":2374,"src":"1800:23:42","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bool_$","typeString":"function (bytes4) view returns (bool)"}},"id":4704,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1800:37:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1570:267:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":4679,"id":4706,"nodeType":"Return","src":"1551:286:42"}]},"documentation":{"id":4672,"nodeType":"StructuredDocumentation","src":"1073:197:42","text":"@notice Checks if this or the parent contract supports an interface by its ID.\n @param _interfaceId The ID of the interface.\n @return Returns `true` if the interface is supported."},"functionSelector":"01ffc9a7","id":4708,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"1284:17:42","nodeType":"FunctionDefinition","overrides":{"id":4676,"nodeType":"OverrideSpecifier","overrides":[],"src":"1343:8:42"},"parameters":{"id":4675,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4674,"mutability":"mutable","name":"_interfaceId","nameLocation":"1309:12:42","nodeType":"VariableDeclaration","scope":4708,"src":"1302:19:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":4673,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1302:6:42","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"1301:21:42"},"returnParameters":{"id":4679,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4678,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4708,"src":"1361:4:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4677,"name":"bool","nodeType":"ElementaryTypeName","src":"1361:4:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1360:6:42"},"scope":4709,"src":"1275:569:42","stateMutability":"view","virtual":true,"visibility":"public"}],"scope":4710,"src":"575:1271:42","usedErrors":[]}],"src":"47:1800:42"},"id":42},"src/plugin/extensions/proposal/ProposalUpgradeable.sol":{"ast":{"absolutePath":"src/plugin/extensions/proposal/ProposalUpgradeable.sol","exportedSymbols":{"CountersUpgradeable":[1126],"ERC165Upgradeable":[1281],"IDAO":[2538],"IProposal":[4636],"ProposalUpgradeable":[4787]},"id":4788,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":4711,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:43"},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol","id":4713,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4788,"sourceUnit":1127,"src":"72:102:43","symbolAliases":[{"foreign":{"id":4712,"name":"CountersUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1126,"src":"80:19:43","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol","file":"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol","id":4715,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4788,"sourceUnit":1282,"src":"175:112:43","symbolAliases":[{"foreign":{"id":4714,"name":"ERC165Upgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1281,"src":"183:17:43","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/dao/IDAO.sol","file":"../../../dao/IDAO.sol","id":4717,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4788,"sourceUnit":2539,"src":"289:43:43","symbolAliases":[{"foreign":{"id":4716,"name":"IDAO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2538,"src":"297:4:43","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/plugin/extensions/proposal/IProposal.sol","file":"./IProposal.sol","id":4719,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4788,"sourceUnit":4637,"src":"333:42:43","symbolAliases":[{"foreign":{"id":4718,"name":"IProposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4636,"src":"341:9:43","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":4721,"name":"IProposal","nameLocations":["691:9:43"],"nodeType":"IdentifierPath","referencedDeclaration":4636,"src":"691:9:43"},"id":4722,"nodeType":"InheritanceSpecifier","src":"691:9:43"},{"baseName":{"id":4723,"name":"ERC165Upgradeable","nameLocations":["702:17:43"],"nodeType":"IdentifierPath","referencedDeclaration":1281,"src":"702:17:43"},"id":4724,"nodeType":"InheritanceSpecifier","src":"702:17:43"}],"canonicalName":"ProposalUpgradeable","contractDependencies":[],"contractKind":"contract","documentation":{"id":4720,"nodeType":"StructuredDocumentation","src":"377:273:43","text":"@title ProposalUpgradeable\n @author Aragon X - 2022-2023\n @notice An abstract contract containing the traits and internal functionality to create and execute proposals that can be inherited by upgradeable DAO plugins.\n @custom:security-contact sirt@aragon.org"},"fullyImplemented":false,"id":4787,"linearizedBaseContracts":[4787,1281,1293,534,4636],"name":"ProposalUpgradeable","nameLocation":"668:19:43","nodeType":"ContractDefinition","nodes":[{"global":false,"id":4728,"libraryName":{"id":4725,"name":"CountersUpgradeable","nameLocations":["732:19:43"],"nodeType":"IdentifierPath","referencedDeclaration":1126,"src":"732:19:43"},"nodeType":"UsingForDirective","src":"726:58:43","typeName":{"id":4727,"nodeType":"UserDefinedTypeName","pathNode":{"id":4726,"name":"CountersUpgradeable.Counter","nameLocations":["756:19:43","776:7:43"],"nodeType":"IdentifierPath","referencedDeclaration":1058,"src":"756:27:43"},"referencedDeclaration":1058,"src":"756:27:43","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$1058_storage_ptr","typeString":"struct CountersUpgradeable.Counter"}}},{"constant":false,"documentation":{"id":4729,"nodeType":"StructuredDocumentation","src":"790:60:43","text":"@notice The incremental ID for proposals and executions."},"id":4732,"mutability":"mutable","name":"proposalCounter","nameLocation":"891:15:43","nodeType":"VariableDeclaration","scope":4787,"src":"855:51:43","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$1058_storage","typeString":"struct CountersUpgradeable.Counter"},"typeName":{"id":4731,"nodeType":"UserDefinedTypeName","pathNode":{"id":4730,"name":"CountersUpgradeable.Counter","nameLocations":["855:19:43","875:7:43"],"nodeType":"IdentifierPath","referencedDeclaration":1058,"src":"855:27:43"},"referencedDeclaration":1058,"src":"855:27:43","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$1058_storage_ptr","typeString":"struct CountersUpgradeable.Counter"}},"visibility":"private"},{"baseFunctions":[4635],"body":{"id":4743,"nodeType":"Block","src":"1007:49:43","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":4739,"name":"proposalCounter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4732,"src":"1024:15:43","typeDescriptions":{"typeIdentifier":"t_struct$_Counter_$1058_storage","typeString":"struct CountersUpgradeable.Counter storage ref"}},"id":4740,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1040:7:43","memberName":"current","nodeType":"MemberAccess","referencedDeclaration":1070,"src":"1024:23:43","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Counter_$1058_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Counter_$1058_storage_ptr_$","typeString":"function (struct CountersUpgradeable.Counter storage pointer) view returns (uint256)"}},"id":4741,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1024:25:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4738,"id":4742,"nodeType":"Return","src":"1017:32:43"}]},"documentation":{"id":4733,"nodeType":"StructuredDocumentation","src":"913:25:43","text":"@inheritdoc IProposal"},"functionSelector":"da35c664","id":4744,"implemented":true,"kind":"function","modifiers":[],"name":"proposalCount","nameLocation":"952:13:43","nodeType":"FunctionDefinition","overrides":{"id":4735,"nodeType":"OverrideSpecifier","overrides":[],"src":"980:8:43"},"parameters":{"id":4734,"nodeType":"ParameterList","parameters":[],"src":"965:2:43"},"returnParameters":{"id":4738,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4737,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4744,"src":"998:7:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4736,"name":"uint256","nodeType":"ElementaryTypeName","src":"998:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"997:9:43"},"scope":4787,"src":"943:113:43","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[1275],"body":{"id":4780,"nodeType":"Block","src":"1356:477:43","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":4778,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":4773,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":4766,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4753,"name":"_interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4747,"src":"1559:12:43","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":4765,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":4761,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":4755,"name":"IProposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4636,"src":"1592:9:43","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IProposal_$4636_$","typeString":"type(contract IProposal)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IProposal_$4636_$","typeString":"type(contract IProposal)"}],"id":4754,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"1587:4:43","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":4756,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1587:15:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IProposal_$4636","typeString":"type(contract IProposal)"}},"id":4757,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1603:11:43","memberName":"interfaceId","nodeType":"MemberAccess","src":"1587:27:43","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"expression":{"expression":{"id":4758,"name":"IProposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4636,"src":"1633:9:43","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IProposal_$4636_$","typeString":"type(contract IProposal)"}},"id":4759,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1643:14:43","memberName":"createProposal","nodeType":"MemberAccess","referencedDeclaration":4621,"src":"1633:24:43","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_bytes_memory_ptr_$_t_array$_t_struct$_Action_$2397_memory_ptr_$dyn_memory_ptr_$_t_uint64_$_t_uint64_$returns$_t_uint256_$","typeString":"function IProposal.createProposal(bytes memory,struct IDAO.Action memory[] memory,uint64,uint64) returns (uint256)"}},"id":4760,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1658:8:43","memberName":"selector","nodeType":"MemberAccess","src":"1633:33:43","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"1587:79:43","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"expression":{"expression":{"id":4762,"name":"IProposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4636,"src":"1685:9:43","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IProposal_$4636_$","typeString":"type(contract IProposal)"}},"id":4763,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1695:10:43","memberName":"canExecute","nodeType":"MemberAccess","referencedDeclaration":4629,"src":"1685:20:43","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_uint256_$returns$_t_bool_$","typeString":"function IProposal.canExecute(uint256) returns (bool)"}},"id":4764,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1706:8:43","memberName":"selector","nodeType":"MemberAccess","src":"1685:29:43","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"1587:127:43","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"1559:155:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":4772,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4767,"name":"_interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4747,"src":"1730:12:43","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":4769,"name":"IProposal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4636,"src":"1751:9:43","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IProposal_$4636_$","typeString":"type(contract IProposal)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IProposal_$4636_$","typeString":"type(contract IProposal)"}],"id":4768,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"1746:4:43","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":4770,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1746:15:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IProposal_$4636","typeString":"type(contract IProposal)"}},"id":4771,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1762:11:43","memberName":"interfaceId","nodeType":"MemberAccess","src":"1746:27:43","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"1730:43:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1559:214:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":4776,"name":"_interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4747,"src":"1813:12:43","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":4774,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967271,"src":"1789:5:43","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_ProposalUpgradeable_$4787_$","typeString":"type(contract super ProposalUpgradeable)"}},"id":4775,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1795:17:43","memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":1275,"src":"1789:23:43","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bool_$","typeString":"function (bytes4) view returns (bool)"}},"id":4777,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1789:37:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1559:267:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":4752,"id":4779,"nodeType":"Return","src":"1540:286:43"}]},"documentation":{"id":4745,"nodeType":"StructuredDocumentation","src":"1062:197:43","text":"@notice Checks if this or the parent contract supports an interface by its ID.\n @param _interfaceId The ID of the interface.\n @return Returns `true` if the interface is supported."},"functionSelector":"01ffc9a7","id":4781,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"1273:17:43","nodeType":"FunctionDefinition","overrides":{"id":4749,"nodeType":"OverrideSpecifier","overrides":[],"src":"1332:8:43"},"parameters":{"id":4748,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4747,"mutability":"mutable","name":"_interfaceId","nameLocation":"1298:12:43","nodeType":"VariableDeclaration","scope":4781,"src":"1291:19:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":4746,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1291:6:43","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"1290:21:43"},"returnParameters":{"id":4752,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4751,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4781,"src":"1350:4:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4750,"name":"bool","nodeType":"ElementaryTypeName","src":"1350:4:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1349:6:43"},"scope":4787,"src":"1264:569:43","stateMutability":"view","virtual":true,"visibility":"public"},{"constant":false,"documentation":{"id":4782,"nodeType":"StructuredDocumentation","src":"1839:273:43","text":"@notice This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain (see [OpenZeppelin's guide about storage gaps](https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps))."},"id":4786,"mutability":"mutable","name":"__gap","nameLocation":"2137:5:43","nodeType":"VariableDeclaration","scope":4787,"src":"2117:25:43","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$49_storage","typeString":"uint256[49]"},"typeName":{"baseType":{"id":4783,"name":"uint256","nodeType":"ElementaryTypeName","src":"2117:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4785,"length":{"hexValue":"3439","id":4784,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2125:2:43","typeDescriptions":{"typeIdentifier":"t_rational_49_by_1","typeString":"int_const 49"},"value":"49"},"nodeType":"ArrayTypeName","src":"2117:11:43","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$49_storage_ptr","typeString":"uint256[49]"}},"visibility":"private"}],"scope":4788,"src":"650:1495:43","usedErrors":[]}],"src":"47:2099:43"},"id":43},"src/plugin/setup/IPluginSetup.sol":{"ast":{"absolutePath":"src/plugin/setup/IPluginSetup.sol","exportedSymbols":{"IDAO":[2538],"IPluginSetup":[4859],"PermissionLib":[3814]},"id":4860,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":4789,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:44"},{"absolutePath":"src/permission/PermissionLib.sol","file":"../../permission/PermissionLib.sol","id":4791,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4860,"sourceUnit":3815,"src":"72:65:44","symbolAliases":[{"foreign":{"id":4790,"name":"PermissionLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3814,"src":"80:13:44","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/dao/IDAO.sol","file":"../../dao/IDAO.sol","id":4793,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4860,"sourceUnit":2539,"src":"185:40:44","symbolAliases":[{"foreign":{"id":4792,"name":"IDAO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2538,"src":"193:4:44","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"IPluginSetup","contractDependencies":[],"contractKind":"interface","documentation":{"id":4794,"nodeType":"StructuredDocumentation","src":"227:266:44","text":"@title IPluginSetup\n @author Aragon X - 2022-2023\n @notice The interface required for a plugin setup contract to be consumed by the `PluginSetupProcessor` for plugin installations, updates, and uninstallations.\n @custom:security-contact sirt@aragon.org"},"fullyImplemented":false,"id":4859,"linearizedBaseContracts":[4859],"name":"IPluginSetup","nameLocation":"503:12:44","nodeType":"ContractDefinition","nodes":[{"canonicalName":"IPluginSetup.PreparedSetupData","id":4802,"members":[{"constant":false,"id":4797,"mutability":"mutable","name":"helpers","nameLocation":"924:7:44","nodeType":"VariableDeclaration","scope":4802,"src":"914:17:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":4795,"name":"address","nodeType":"ElementaryTypeName","src":"914:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":4796,"nodeType":"ArrayTypeName","src":"914:9:44","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":4801,"mutability":"mutable","name":"permissions","nameLocation":"979:11:44","nodeType":"VariableDeclaration","scope":4802,"src":"941:49:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_storage_$dyn_storage_ptr","typeString":"struct PermissionLib.MultiTargetPermission[]"},"typeName":{"baseType":{"id":4799,"nodeType":"UserDefinedTypeName","pathNode":{"id":4798,"name":"PermissionLib.MultiTargetPermission","nameLocations":["941:13:44","955:21:44"],"nodeType":"IdentifierPath","referencedDeclaration":3813,"src":"941:35:44"},"referencedDeclaration":3813,"src":"941:35:44","typeDescriptions":{"typeIdentifier":"t_struct$_MultiTargetPermission_$3813_storage_ptr","typeString":"struct PermissionLib.MultiTargetPermission"}},"id":4800,"nodeType":"ArrayTypeName","src":"941:37:44","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_storage_$dyn_storage_ptr","typeString":"struct PermissionLib.MultiTargetPermission[]"}},"visibility":"internal"}],"name":"PreparedSetupData","nameLocation":"886:17:44","nodeType":"StructDefinition","scope":4859,"src":"879:118:44","visibility":"public"},{"canonicalName":"IPluginSetup.SetupPayload","id":4810,"members":[{"constant":false,"id":4804,"mutability":"mutable","name":"plugin","nameLocation":"1568:6:44","nodeType":"VariableDeclaration","scope":4810,"src":"1560:14:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4803,"name":"address","nodeType":"ElementaryTypeName","src":"1560:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4807,"mutability":"mutable","name":"currentHelpers","nameLocation":"1594:14:44","nodeType":"VariableDeclaration","scope":4810,"src":"1584:24:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":4805,"name":"address","nodeType":"ElementaryTypeName","src":"1584:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":4806,"nodeType":"ArrayTypeName","src":"1584:9:44","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":4809,"mutability":"mutable","name":"data","nameLocation":"1624:4:44","nodeType":"VariableDeclaration","scope":4810,"src":"1618:10:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":4808,"name":"bytes","nodeType":"ElementaryTypeName","src":"1618:5:44","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"name":"SetupPayload","nameLocation":"1537:12:44","nodeType":"StructDefinition","scope":4859,"src":"1530:105:44","visibility":"public"},{"documentation":{"id":4811,"nodeType":"StructuredDocumentation","src":"1641:463:44","text":"@notice Prepares the installation of a plugin.\n @param _dao The address of the installing DAO.\n @param _data The bytes-encoded data containing the input parameters for the installation as specified in the plugin's build metadata JSON file.\n @return plugin The address of the `Plugin` contract being prepared for installation.\n @return preparedSetupData The deployed plugin's relevant data which consists of helpers and permissions."},"functionSelector":"f10832f1","id":4823,"implemented":false,"kind":"function","modifiers":[],"name":"prepareInstallation","nameLocation":"2118:19:44","nodeType":"FunctionDefinition","parameters":{"id":4816,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4813,"mutability":"mutable","name":"_dao","nameLocation":"2155:4:44","nodeType":"VariableDeclaration","scope":4823,"src":"2147:12:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4812,"name":"address","nodeType":"ElementaryTypeName","src":"2147:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4815,"mutability":"mutable","name":"_data","nameLocation":"2184:5:44","nodeType":"VariableDeclaration","scope":4823,"src":"2169:20:44","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":4814,"name":"bytes","nodeType":"ElementaryTypeName","src":"2169:5:44","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2137:58:44"},"returnParameters":{"id":4822,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4818,"mutability":"mutable","name":"plugin","nameLocation":"2222:6:44","nodeType":"VariableDeclaration","scope":4823,"src":"2214:14:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4817,"name":"address","nodeType":"ElementaryTypeName","src":"2214:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4821,"mutability":"mutable","name":"preparedSetupData","nameLocation":"2255:17:44","nodeType":"VariableDeclaration","scope":4823,"src":"2230:42:44","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$4802_memory_ptr","typeString":"struct IPluginSetup.PreparedSetupData"},"typeName":{"id":4820,"nodeType":"UserDefinedTypeName","pathNode":{"id":4819,"name":"PreparedSetupData","nameLocations":["2230:17:44"],"nodeType":"IdentifierPath","referencedDeclaration":4802,"src":"2230:17:44"},"referencedDeclaration":4802,"src":"2230:17:44","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$4802_storage_ptr","typeString":"struct IPluginSetup.PreparedSetupData"}},"visibility":"internal"}],"src":"2213:60:44"},"scope":4859,"src":"2109:165:44","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":4824,"nodeType":"StructuredDocumentation","src":"2280:516:44","text":"@notice Prepares the update of a plugin.\n @param _dao The address of the updating DAO.\n @param _fromBuild The build number of the plugin to update from.\n @param _payload The relevant data necessary for the `prepareUpdate`. See above.\n @return initData The initialization data to be passed to upgradeable contracts when the update is applied in the `PluginSetupProcessor`.\n @return preparedSetupData The deployed plugin's relevant data which consists of helpers and permissions."},"functionSelector":"a8a9c29e","id":4839,"implemented":false,"kind":"function","modifiers":[],"name":"prepareUpdate","nameLocation":"2810:13:44","nodeType":"FunctionDefinition","parameters":{"id":4832,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4826,"mutability":"mutable","name":"_dao","nameLocation":"2841:4:44","nodeType":"VariableDeclaration","scope":4839,"src":"2833:12:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4825,"name":"address","nodeType":"ElementaryTypeName","src":"2833:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4828,"mutability":"mutable","name":"_fromBuild","nameLocation":"2862:10:44","nodeType":"VariableDeclaration","scope":4839,"src":"2855:17:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":4827,"name":"uint16","nodeType":"ElementaryTypeName","src":"2855:6:44","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":4831,"mutability":"mutable","name":"_payload","nameLocation":"2904:8:44","nodeType":"VariableDeclaration","scope":4839,"src":"2882:30:44","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$4810_calldata_ptr","typeString":"struct IPluginSetup.SetupPayload"},"typeName":{"id":4830,"nodeType":"UserDefinedTypeName","pathNode":{"id":4829,"name":"SetupPayload","nameLocations":["2882:12:44"],"nodeType":"IdentifierPath","referencedDeclaration":4810,"src":"2882:12:44"},"referencedDeclaration":4810,"src":"2882:12:44","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$4810_storage_ptr","typeString":"struct IPluginSetup.SetupPayload"}},"visibility":"internal"}],"src":"2823:95:44"},"returnParameters":{"id":4838,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4834,"mutability":"mutable","name":"initData","nameLocation":"2950:8:44","nodeType":"VariableDeclaration","scope":4839,"src":"2937:21:44","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4833,"name":"bytes","nodeType":"ElementaryTypeName","src":"2937:5:44","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":4837,"mutability":"mutable","name":"preparedSetupData","nameLocation":"2985:17:44","nodeType":"VariableDeclaration","scope":4839,"src":"2960:42:44","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$4802_memory_ptr","typeString":"struct IPluginSetup.PreparedSetupData"},"typeName":{"id":4836,"nodeType":"UserDefinedTypeName","pathNode":{"id":4835,"name":"PreparedSetupData","nameLocations":["2960:17:44"],"nodeType":"IdentifierPath","referencedDeclaration":4802,"src":"2960:17:44"},"referencedDeclaration":4802,"src":"2960:17:44","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$4802_storage_ptr","typeString":"struct IPluginSetup.PreparedSetupData"}},"visibility":"internal"}],"src":"2936:67:44"},"scope":4859,"src":"2801:203:44","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":4840,"nodeType":"StructuredDocumentation","src":"3010:352:44","text":"@notice Prepares the uninstallation of a plugin.\n @param _dao The address of the uninstalling DAO.\n @param _payload The relevant data necessary for the `prepareUninstallation`. See above.\n @return permissions The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the uninstalling DAO."},"functionSelector":"9cb0a124","id":4852,"implemented":false,"kind":"function","modifiers":[],"name":"prepareUninstallation","nameLocation":"3376:21:44","nodeType":"FunctionDefinition","parameters":{"id":4846,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4842,"mutability":"mutable","name":"_dao","nameLocation":"3415:4:44","nodeType":"VariableDeclaration","scope":4852,"src":"3407:12:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4841,"name":"address","nodeType":"ElementaryTypeName","src":"3407:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4845,"mutability":"mutable","name":"_payload","nameLocation":"3451:8:44","nodeType":"VariableDeclaration","scope":4852,"src":"3429:30:44","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$4810_calldata_ptr","typeString":"struct IPluginSetup.SetupPayload"},"typeName":{"id":4844,"nodeType":"UserDefinedTypeName","pathNode":{"id":4843,"name":"SetupPayload","nameLocations":["3429:12:44"],"nodeType":"IdentifierPath","referencedDeclaration":4810,"src":"3429:12:44"},"referencedDeclaration":4810,"src":"3429:12:44","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$4810_storage_ptr","typeString":"struct IPluginSetup.SetupPayload"}},"visibility":"internal"}],"src":"3397:68:44"},"returnParameters":{"id":4851,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4850,"mutability":"mutable","name":"permissions","nameLocation":"3529:11:44","nodeType":"VariableDeclaration","scope":4852,"src":"3484:56:44","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr","typeString":"struct PermissionLib.MultiTargetPermission[]"},"typeName":{"baseType":{"id":4848,"nodeType":"UserDefinedTypeName","pathNode":{"id":4847,"name":"PermissionLib.MultiTargetPermission","nameLocations":["3484:13:44","3498:21:44"],"nodeType":"IdentifierPath","referencedDeclaration":3813,"src":"3484:35:44"},"referencedDeclaration":3813,"src":"3484:35:44","typeDescriptions":{"typeIdentifier":"t_struct$_MultiTargetPermission_$3813_storage_ptr","typeString":"struct PermissionLib.MultiTargetPermission"}},"id":4849,"nodeType":"ArrayTypeName","src":"3484:37:44","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MultiTargetPermission_$3813_storage_$dyn_storage_ptr","typeString":"struct PermissionLib.MultiTargetPermission[]"}},"visibility":"internal"}],"src":"3483:58:44"},"scope":4859,"src":"3367:175:44","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":4853,"nodeType":"StructuredDocumentation","src":"3548:389:44","text":"@notice Returns the plugin implementation address.\n @return The address of the plugin implementation contract.\n @dev The implementation can be instantiated via the `new` keyword, cloned via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)), or proxied via the UUPS proxy pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822))."},"functionSelector":"5c60da1b","id":4858,"implemented":false,"kind":"function","modifiers":[],"name":"implementation","nameLocation":"3951:14:44","nodeType":"FunctionDefinition","parameters":{"id":4854,"nodeType":"ParameterList","parameters":[],"src":"3965:2:44"},"returnParameters":{"id":4857,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4856,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4858,"src":"3991:7:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4855,"name":"address","nodeType":"ElementaryTypeName","src":"3991:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3990:9:44"},"scope":4859,"src":"3942:58:44","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":4860,"src":"493:3509:44","usedErrors":[]}],"src":"47:3956:44"},"id":44},"src/plugin/setup/PluginSetup.sol":{"ast":{"absolutePath":"src/plugin/setup/PluginSetup.sol","exportedSymbols":{"ERC165":[2375],"IPluginSetup":[4859],"IProtocolVersion":[5114],"PluginSetup":[4957],"ProtocolVersion":[5136]},"id":4958,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":4861,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:45"},{"absolutePath":"@openzeppelin/contracts/utils/introspection/ERC165.sol","file":"@openzeppelin/contracts/utils/introspection/ERC165.sol","id":4863,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4958,"sourceUnit":2376,"src":"72:78:45","symbolAliases":[{"foreign":{"id":4862,"name":"ERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2375,"src":"80:6:45","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/utils/versioning/IProtocolVersion.sol","file":"../../utils/versioning/IProtocolVersion.sol","id":4865,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4958,"sourceUnit":5115,"src":"152:77:45","symbolAliases":[{"foreign":{"id":4864,"name":"IProtocolVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5114,"src":"160:16:45","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/utils/versioning/ProtocolVersion.sol","file":"../../utils/versioning/ProtocolVersion.sol","id":4867,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4958,"sourceUnit":5137,"src":"230:75:45","symbolAliases":[{"foreign":{"id":4866,"name":"ProtocolVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5136,"src":"238:15:45","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/plugin/setup/IPluginSetup.sol","file":"./IPluginSetup.sol","id":4869,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4958,"sourceUnit":4860,"src":"306:48:45","symbolAliases":[{"foreign":{"id":4868,"name":"IPluginSetup","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4859,"src":"314:12:45","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":4871,"name":"ERC165","nameLocations":["783:6:45"],"nodeType":"IdentifierPath","referencedDeclaration":2375,"src":"783:6:45"},"id":4872,"nodeType":"InheritanceSpecifier","src":"783:6:45"},{"baseName":{"id":4873,"name":"IPluginSetup","nameLocations":["791:12:45"],"nodeType":"IdentifierPath","referencedDeclaration":4859,"src":"791:12:45"},"id":4874,"nodeType":"InheritanceSpecifier","src":"791:12:45"},{"baseName":{"id":4875,"name":"ProtocolVersion","nameLocations":["805:15:45"],"nodeType":"IdentifierPath","referencedDeclaration":5136,"src":"805:15:45"},"id":4876,"nodeType":"InheritanceSpecifier","src":"805:15:45"}],"canonicalName":"PluginSetup","contractDependencies":[],"contractKind":"contract","documentation":{"id":4870,"nodeType":"StructuredDocumentation","src":"356:394:45","text":"@title PluginSetup\n @author Aragon X - 2022-2024\n @notice An abstract contract to inherit from to implement the plugin setup for non-upgradeable plugins, i.e,\n - `Plugin` being deployed via the `new` keyword\n - `PluginCloneable` being deployed via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)).\n @custom:security-contact sirt@aragon.org"},"fullyImplemented":false,"id":4957,"linearizedBaseContracts":[4957,5136,5114,4859,2375,2387],"name":"PluginSetup","nameLocation":"768:11:45","nodeType":"ContractDefinition","nodes":[{"constant":false,"documentation":{"id":4877,"nodeType":"StructuredDocumentation","src":"827:230:45","text":"@notice The address of the plugin implementation contract for initial block explorer verification and, in the case of `PluginClonable` implementations, to create [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167) clones from."},"id":4879,"mutability":"immutable","name":"IMPLEMENTATION","nameLocation":"1089:14:45","nodeType":"VariableDeclaration","scope":4957,"src":"1062:41:45","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4878,"name":"address","nodeType":"ElementaryTypeName","src":"1062:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"documentation":{"id":4880,"nodeType":"StructuredDocumentation","src":"1110:84:45","text":"@notice Thrown when attempting to prepare an update on a non-upgradeable plugin."},"errorSelector":"a1128101","id":4882,"name":"NonUpgradeablePlugin","nameLocation":"1205:20:45","nodeType":"ErrorDefinition","parameters":{"id":4881,"nodeType":"ParameterList","parameters":[],"src":"1225:2:45"},"src":"1199:29:45"},{"body":{"id":4892,"nodeType":"Block","src":"1444:49:45","statements":[{"expression":{"id":4890,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4888,"name":"IMPLEMENTATION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4879,"src":"1454:14:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":4889,"name":"_implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4885,"src":"1471:15:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1454:32:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":4891,"nodeType":"ExpressionStatement","src":"1454:32:45"}]},"documentation":{"id":4883,"nodeType":"StructuredDocumentation","src":"1234:168:45","text":"@notice The contract constructor, that setting the plugin implementation contract.\n @param _implementation The address of the plugin implementation contract."},"id":4893,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":4886,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4885,"mutability":"mutable","name":"_implementation","nameLocation":"1427:15:45","nodeType":"VariableDeclaration","scope":4893,"src":"1419:23:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4884,"name":"address","nodeType":"ElementaryTypeName","src":"1419:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1418:25:45"},"returnParameters":{"id":4887,"nodeType":"ParameterList","parameters":[],"src":"1444:0:45"},"scope":4957,"src":"1407:86:45","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[4839],"body":{"id":4917,"nodeType":"Block","src":"1820:84:45","statements":[{"expression":{"components":[{"id":4909,"name":"_dao","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4896,"src":"1831:4:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4910,"name":"_fromBuild","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4898,"src":"1837:10:45","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"id":4911,"name":"_payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4901,"src":"1849:8:45","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$4810_calldata_ptr","typeString":"struct IPluginSetup.SetupPayload calldata"}}],"id":4912,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1830:28:45","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint16_$_t_struct$_SetupPayload_$4810_calldata_ptr_$","typeString":"tuple(address,uint16,struct IPluginSetup.SetupPayload calldata)"}},"id":4913,"nodeType":"ExpressionStatement","src":"1830:28:45"},{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":4914,"name":"NonUpgradeablePlugin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4882,"src":"1875:20:45","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":4915,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1875:22:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4916,"nodeType":"RevertStatement","src":"1868:29:45"}]},"documentation":{"id":4894,"nodeType":"StructuredDocumentation","src":"1499:135:45","text":"@inheritdoc IPluginSetup\n @dev Since the underlying plugin is non-upgradeable, this non-virtual function must always revert."},"functionSelector":"a8a9c29e","id":4918,"implemented":true,"kind":"function","modifiers":[],"name":"prepareUpdate","nameLocation":"1648:13:45","nodeType":"FunctionDefinition","parameters":{"id":4902,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4896,"mutability":"mutable","name":"_dao","nameLocation":"1679:4:45","nodeType":"VariableDeclaration","scope":4918,"src":"1671:12:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4895,"name":"address","nodeType":"ElementaryTypeName","src":"1671:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4898,"mutability":"mutable","name":"_fromBuild","nameLocation":"1700:10:45","nodeType":"VariableDeclaration","scope":4918,"src":"1693:17:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":4897,"name":"uint16","nodeType":"ElementaryTypeName","src":"1693:6:45","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":4901,"mutability":"mutable","name":"_payload","nameLocation":"1742:8:45","nodeType":"VariableDeclaration","scope":4918,"src":"1720:30:45","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$4810_calldata_ptr","typeString":"struct IPluginSetup.SetupPayload"},"typeName":{"id":4900,"nodeType":"UserDefinedTypeName","pathNode":{"id":4899,"name":"SetupPayload","nameLocations":["1720:12:45"],"nodeType":"IdentifierPath","referencedDeclaration":4810,"src":"1720:12:45"},"referencedDeclaration":4810,"src":"1720:12:45","typeDescriptions":{"typeIdentifier":"t_struct$_SetupPayload_$4810_storage_ptr","typeString":"struct IPluginSetup.SetupPayload"}},"visibility":"internal"}],"src":"1661:95:45"},"returnParameters":{"id":4908,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4904,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4918,"src":"1780:12:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4903,"name":"bytes","nodeType":"ElementaryTypeName","src":"1780:5:45","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":4907,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4918,"src":"1794:24:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$4802_memory_ptr","typeString":"struct IPluginSetup.PreparedSetupData"},"typeName":{"id":4906,"nodeType":"UserDefinedTypeName","pathNode":{"id":4905,"name":"PreparedSetupData","nameLocations":["1794:17:45"],"nodeType":"IdentifierPath","referencedDeclaration":4802,"src":"1794:17:45"},"referencedDeclaration":4802,"src":"1794:17:45","typeDescriptions":{"typeIdentifier":"t_struct$_PreparedSetupData_$4802_storage_ptr","typeString":"struct IPluginSetup.PreparedSetupData"}},"visibility":"internal"}],"src":"1779:40:45"},"scope":4957,"src":"1639:265:45","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[2374],"body":{"id":4946,"nodeType":"Block","src":"2204:201:45","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":4944,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":4939,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":4932,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4927,"name":"_interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4921,"src":"2233:12:45","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":4929,"name":"IPluginSetup","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4859,"src":"2254:12:45","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IPluginSetup_$4859_$","typeString":"type(contract IPluginSetup)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IPluginSetup_$4859_$","typeString":"type(contract IPluginSetup)"}],"id":4928,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"2249:4:45","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":4930,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2249:18:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IPluginSetup_$4859","typeString":"type(contract IPluginSetup)"}},"id":4931,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2268:11:45","memberName":"interfaceId","nodeType":"MemberAccess","src":"2249:30:45","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"2233:46:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":4938,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4933,"name":"_interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4921,"src":"2295:12:45","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":4935,"name":"IProtocolVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5114,"src":"2316:16:45","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IProtocolVersion_$5114_$","typeString":"type(contract IProtocolVersion)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IProtocolVersion_$5114_$","typeString":"type(contract IProtocolVersion)"}],"id":4934,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"2311:4:45","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":4936,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2311:22:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IProtocolVersion_$5114","typeString":"type(contract IProtocolVersion)"}},"id":4937,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2334:11:45","memberName":"interfaceId","nodeType":"MemberAccess","src":"2311:34:45","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"2295:50:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2233:112:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":4942,"name":"_interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4921,"src":"2385:12:45","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":4940,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967271,"src":"2361:5:45","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_PluginSetup_$4957_$","typeString":"type(contract super PluginSetup)"}},"id":4941,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2367:17:45","memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":2374,"src":"2361:23:45","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bool_$","typeString":"function (bytes4) view returns (bool)"}},"id":4943,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2361:37:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2233:165:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":4926,"id":4945,"nodeType":"Return","src":"2214:184:45"}]},"documentation":{"id":4919,"nodeType":"StructuredDocumentation","src":"1910:197:45","text":"@notice Checks if this or the parent contract supports an interface by its ID.\n @param _interfaceId The ID of the interface.\n @return Returns `true` if the interface is supported."},"functionSelector":"01ffc9a7","id":4947,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"2121:17:45","nodeType":"FunctionDefinition","overrides":{"id":4923,"nodeType":"OverrideSpecifier","overrides":[],"src":"2180:8:45"},"parameters":{"id":4922,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4921,"mutability":"mutable","name":"_interfaceId","nameLocation":"2146:12:45","nodeType":"VariableDeclaration","scope":4947,"src":"2139:19:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":4920,"name":"bytes4","nodeType":"ElementaryTypeName","src":"2139:6:45","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"2138:21:45"},"returnParameters":{"id":4926,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4925,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4947,"src":"2198:4:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4924,"name":"bool","nodeType":"ElementaryTypeName","src":"2198:4:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2197:6:45"},"scope":4957,"src":"2112:293:45","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[4858],"body":{"id":4955,"nodeType":"Block","src":"2500:38:45","statements":[{"expression":{"id":4953,"name":"IMPLEMENTATION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4879,"src":"2517:14:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":4952,"id":4954,"nodeType":"Return","src":"2510:21:45"}]},"documentation":{"id":4948,"nodeType":"StructuredDocumentation","src":"2411:28:45","text":"@inheritdoc IPluginSetup"},"functionSelector":"5c60da1b","id":4956,"implemented":true,"kind":"function","modifiers":[],"name":"implementation","nameLocation":"2453:14:45","nodeType":"FunctionDefinition","parameters":{"id":4949,"nodeType":"ParameterList","parameters":[],"src":"2467:2:45"},"returnParameters":{"id":4952,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4951,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4956,"src":"2491:7:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4950,"name":"address","nodeType":"ElementaryTypeName","src":"2491:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2490:9:45"},"scope":4957,"src":"2444:94:45","stateMutability":"view","virtual":false,"visibility":"public"}],"scope":4958,"src":"750:1790:45","usedErrors":[4882]}],"src":"47:2494:45"},"id":45},"src/plugin/setup/PluginUpgradeableSetup.sol":{"ast":{"absolutePath":"src/plugin/setup/PluginUpgradeableSetup.sol","exportedSymbols":{"ERC165":[2375],"IPluginSetup":[4859],"IProtocolVersion":[5114],"PluginUpgradeableSetup":[5034],"ProtocolVersion":[5136]},"id":5035,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":4959,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:46"},{"absolutePath":"@openzeppelin/contracts/utils/introspection/ERC165.sol","file":"@openzeppelin/contracts/utils/introspection/ERC165.sol","id":4961,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5035,"sourceUnit":2376,"src":"72:78:46","symbolAliases":[{"foreign":{"id":4960,"name":"ERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2375,"src":"80:6:46","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/utils/versioning/IProtocolVersion.sol","file":"../../utils/versioning/IProtocolVersion.sol","id":4963,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5035,"sourceUnit":5115,"src":"152:77:46","symbolAliases":[{"foreign":{"id":4962,"name":"IProtocolVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5114,"src":"160:16:46","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/utils/versioning/ProtocolVersion.sol","file":"../../utils/versioning/ProtocolVersion.sol","id":4965,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5035,"sourceUnit":5137,"src":"230:75:46","symbolAliases":[{"foreign":{"id":4964,"name":"ProtocolVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5136,"src":"238:15:46","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"src/plugin/setup/IPluginSetup.sol","file":"./IPluginSetup.sol","id":4967,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5035,"sourceUnit":4860,"src":"306:48:46","symbolAliases":[{"foreign":{"id":4966,"name":"IPluginSetup","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4859,"src":"314:12:46","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":4969,"name":"ERC165","nameLocations":["796:6:46"],"nodeType":"IdentifierPath","referencedDeclaration":2375,"src":"796:6:46"},"id":4970,"nodeType":"InheritanceSpecifier","src":"796:6:46"},{"baseName":{"id":4971,"name":"IPluginSetup","nameLocations":["804:12:46"],"nodeType":"IdentifierPath","referencedDeclaration":4859,"src":"804:12:46"},"id":4972,"nodeType":"InheritanceSpecifier","src":"804:12:46"},{"baseName":{"id":4973,"name":"ProtocolVersion","nameLocations":["818:15:46"],"nodeType":"IdentifierPath","referencedDeclaration":5136,"src":"818:15:46"},"id":4974,"nodeType":"InheritanceSpecifier","src":"818:15:46"}],"canonicalName":"PluginUpgradeableSetup","contractDependencies":[],"contractKind":"contract","documentation":{"id":4968,"nodeType":"StructuredDocumentation","src":"356:396:46","text":"@title PluginUpgradeableSetup\n @author Aragon X - 2022-2024\n @notice An abstract contract to inherit from to implement the plugin setup for upgradeable plugins, i.e, `PluginUUPSUpgradeable` being deployed via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822) and [ERC-1967](https://eips.ethereum.org/EIPS/eip-1967)).\n @custom:security-contact sirt@aragon.org"},"fullyImplemented":false,"id":5034,"linearizedBaseContracts":[5034,5136,5114,4859,2375,2387],"name":"PluginUpgradeableSetup","nameLocation":"770:22:46","nodeType":"ContractDefinition","nodes":[{"constant":false,"documentation":{"id":4975,"nodeType":"StructuredDocumentation","src":"840:194:46","text":"@notice The address of the plugin implementation contract for initial block explorer verification\n and to create [ERC-1967](https://eips.ethereum.org/EIPS/eip-1967) UUPS proxies from."},"id":4977,"mutability":"immutable","name":"IMPLEMENTATION","nameLocation":"1066:14:46","nodeType":"VariableDeclaration","scope":5034,"src":"1039:41:46","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4976,"name":"address","nodeType":"ElementaryTypeName","src":"1039:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"documentation":{"id":4978,"nodeType":"StructuredDocumentation","src":"1087:227:46","text":"@notice Thrown when an update path is not available, for example, if this is the initial build.\n @param fromBuild The build number to update from.\n @param thisBuild The build number of this setup to update to."},"errorSelector":"1313218a","id":4984,"name":"InvalidUpdatePath","nameLocation":"1325:17:46","nodeType":"ErrorDefinition","parameters":{"id":4983,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4980,"mutability":"mutable","name":"fromBuild","nameLocation":"1350:9:46","nodeType":"VariableDeclaration","scope":4984,"src":"1343:16:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":4979,"name":"uint16","nodeType":"ElementaryTypeName","src":"1343:6:46","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":4982,"mutability":"mutable","name":"thisBuild","nameLocation":"1368:9:46","nodeType":"VariableDeclaration","scope":4984,"src":"1361:16:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":4981,"name":"uint16","nodeType":"ElementaryTypeName","src":"1361:6:46","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"1342:36:46"},"src":"1319:60:46"},{"body":{"id":4994,"nodeType":"Block","src":"1595:49:46","statements":[{"expression":{"id":4992,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4990,"name":"IMPLEMENTATION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4977,"src":"1605:14:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":4991,"name":"_implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4987,"src":"1622:15:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1605:32:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":4993,"nodeType":"ExpressionStatement","src":"1605:32:46"}]},"documentation":{"id":4985,"nodeType":"StructuredDocumentation","src":"1385:168:46","text":"@notice The contract constructor, that setting the plugin implementation contract.\n @param _implementation The address of the plugin implementation contract."},"id":4995,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":4988,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4987,"mutability":"mutable","name":"_implementation","nameLocation":"1578:15:46","nodeType":"VariableDeclaration","scope":4995,"src":"1570:23:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4986,"name":"address","nodeType":"ElementaryTypeName","src":"1570:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1569:25:46"},"returnParameters":{"id":4989,"nodeType":"ParameterList","parameters":[],"src":"1595:0:46"},"scope":5034,"src":"1558:86:46","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[2374],"body":{"id":5023,"nodeType":"Block","src":"1944:201:46","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":5021,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":5016,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":5009,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5004,"name":"_interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4998,"src":"1973:12:46","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":5006,"name":"IPluginSetup","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4859,"src":"1994:12:46","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IPluginSetup_$4859_$","typeString":"type(contract IPluginSetup)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IPluginSetup_$4859_$","typeString":"type(contract IPluginSetup)"}],"id":5005,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"1989:4:46","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5007,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1989:18:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IPluginSetup_$4859","typeString":"type(contract IPluginSetup)"}},"id":5008,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2008:11:46","memberName":"interfaceId","nodeType":"MemberAccess","src":"1989:30:46","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"1973:46:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":5015,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5010,"name":"_interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4998,"src":"2035:12:46","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":5012,"name":"IProtocolVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5114,"src":"2056:16:46","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IProtocolVersion_$5114_$","typeString":"type(contract IProtocolVersion)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IProtocolVersion_$5114_$","typeString":"type(contract IProtocolVersion)"}],"id":5011,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967269,"src":"2051:4:46","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5013,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2051:22:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IProtocolVersion_$5114","typeString":"type(contract IProtocolVersion)"}},"id":5014,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2074:11:46","memberName":"interfaceId","nodeType":"MemberAccess","src":"2051:34:46","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"2035:50:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1973:112:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":5019,"name":"_interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4998,"src":"2125:12:46","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":5017,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294967271,"src":"2101:5:46","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_PluginUpgradeableSetup_$5034_$","typeString":"type(contract super PluginUpgradeableSetup)"}},"id":5018,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2107:17:46","memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":2374,"src":"2101:23:46","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bool_$","typeString":"function (bytes4) view returns (bool)"}},"id":5020,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2101:37:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1973:165:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":5003,"id":5022,"nodeType":"Return","src":"1954:184:46"}]},"documentation":{"id":4996,"nodeType":"StructuredDocumentation","src":"1650:197:46","text":"@notice Checks if this or the parent contract supports an interface by its ID.\n @param _interfaceId The ID of the interface.\n @return Returns `true` if the interface is supported."},"functionSelector":"01ffc9a7","id":5024,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"1861:17:46","nodeType":"FunctionDefinition","overrides":{"id":5000,"nodeType":"OverrideSpecifier","overrides":[],"src":"1920:8:46"},"parameters":{"id":4999,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4998,"mutability":"mutable","name":"_interfaceId","nameLocation":"1886:12:46","nodeType":"VariableDeclaration","scope":5024,"src":"1879:19:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":4997,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1879:6:46","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"1878:21:46"},"returnParameters":{"id":5003,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5002,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5024,"src":"1938:4:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5001,"name":"bool","nodeType":"ElementaryTypeName","src":"1938:4:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1937:6:46"},"scope":5034,"src":"1852:293:46","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[4858],"body":{"id":5032,"nodeType":"Block","src":"2240:38:46","statements":[{"expression":{"id":5030,"name":"IMPLEMENTATION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4977,"src":"2257:14:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":5029,"id":5031,"nodeType":"Return","src":"2250:21:46"}]},"documentation":{"id":5025,"nodeType":"StructuredDocumentation","src":"2151:28:46","text":"@inheritdoc IPluginSetup"},"functionSelector":"5c60da1b","id":5033,"implemented":true,"kind":"function","modifiers":[],"name":"implementation","nameLocation":"2193:14:46","nodeType":"FunctionDefinition","parameters":{"id":5026,"nodeType":"ParameterList","parameters":[],"src":"2207:2:46"},"returnParameters":{"id":5029,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5028,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5033,"src":"2231:7:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5027,"name":"address","nodeType":"ElementaryTypeName","src":"2231:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2230:9:46"},"scope":5034,"src":"2184:94:46","stateMutability":"view","virtual":false,"visibility":"public"}],"scope":5035,"src":"752:1528:46","usedErrors":[4984]}],"src":"47:2234:46"},"id":46},"src/utils/deployment/ProxyLib.sol":{"ast":{"absolutePath":"src/utils/deployment/ProxyLib.sol","exportedSymbols":{"Address":[2137],"Clones":[1404],"ERC1967Proxy":[1441],"ProxyLib":[5102]},"id":5103,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":5036,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:47"},{"absolutePath":"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol","file":"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol","id":5038,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5103,"sourceUnit":1442,"src":"72:84:47","symbolAliases":[{"foreign":{"id":5037,"name":"ERC1967Proxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1441,"src":"80:12:47","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/proxy/Clones.sol","file":"@openzeppelin/contracts/proxy/Clones.sol","id":5040,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5103,"sourceUnit":1405,"src":"157:64:47","symbolAliases":[{"foreign":{"id":5039,"name":"Clones","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1404,"src":"165:6:47","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Address.sol","file":"@openzeppelin/contracts/utils/Address.sol","id":5042,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5103,"sourceUnit":2138,"src":"222:66:47","symbolAliases":[{"foreign":{"id":5041,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2137,"src":"230:7:47","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"ProxyLib","contractDependencies":[],"contractKind":"library","documentation":{"id":5043,"nodeType":"StructuredDocumentation","src":"290:328:47","text":"@title ProxyLib\n @author Aragon X - 2024\n @notice A library containing methods for the deployment of proxies via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)) and minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)).\n @custom:security-contact sirt@aragon.org"},"fullyImplemented":true,"id":5102,"linearizedBaseContracts":[5102],"name":"ProxyLib","nameLocation":"626:8:47","nodeType":"ContractDefinition","nodes":[{"global":false,"id":5046,"libraryName":{"id":5044,"name":"Address","nameLocations":["647:7:47"],"nodeType":"IdentifierPath","referencedDeclaration":2137,"src":"647:7:47"},"nodeType":"UsingForDirective","src":"641:26:47","typeName":{"id":5045,"name":"address","nodeType":"ElementaryTypeName","src":"659:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},{"global":false,"id":5049,"libraryName":{"id":5047,"name":"Clones","nameLocations":["678:6:47"],"nodeType":"IdentifierPath","referencedDeclaration":1404,"src":"678:6:47"},"nodeType":"UsingForDirective","src":"672:25:47","typeName":{"id":5048,"name":"address","nodeType":"ElementaryTypeName","src":"689:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},{"body":{"id":5071,"nodeType":"Block","src":"1543:94:47","statements":[{"expression":{"id":5069,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5059,"name":"uupsProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5057,"src":"1553:9:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":5065,"name":"_logic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5052,"src":"1599:6:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5066,"name":"_initCalldata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5054,"src":"1614:13:47","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":5064,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"NewExpression","src":"1573:16:47","typeDescriptions":{"typeIdentifier":"t_function_creation_payable$_t_address_$_t_bytes_memory_ptr_$returns$_t_contract$_ERC1967Proxy_$1441_$","typeString":"function (address,bytes memory) payable returns (contract ERC1967Proxy)"},"typeName":{"id":5063,"nodeType":"UserDefinedTypeName","pathNode":{"id":5062,"name":"ERC1967Proxy","nameLocations":["1577:12:47"],"nodeType":"IdentifierPath","referencedDeclaration":1441,"src":"1577:12:47"},"referencedDeclaration":1441,"src":"1577:12:47","typeDescriptions":{"typeIdentifier":"t_contract$_ERC1967Proxy_$1441","typeString":"contract ERC1967Proxy"}}},"id":5067,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":["1591:6:47","1607:5:47"],"names":["_logic","_data"],"nodeType":"FunctionCall","src":"1573:56:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ERC1967Proxy_$1441","typeString":"contract ERC1967Proxy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC1967Proxy_$1441","typeString":"contract ERC1967Proxy"}],"id":5061,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1565:7:47","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5060,"name":"address","nodeType":"ElementaryTypeName","src":"1565:7:47","typeDescriptions":{}}},"id":5068,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1565:65:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1553:77:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":5070,"nodeType":"ExpressionStatement","src":"1553:77:47"}]},"documentation":{"id":5050,"nodeType":"StructuredDocumentation","src":"703:707:47","text":"@notice Creates an [ERC-1967](https://eips.ethereum.org/EIPS/eip-1967) UUPS proxy contract pointing to a logic contract and allows to immediately initialize it.\n @param _logic The logic contract the proxy is pointing to.\n @param _initCalldata The initialization data for this contract.\n @return uupsProxy The address of the UUPS proxy contract created.\n @dev If `_initCalldata` is non-empty, it is used in a delegate call to the `_logic` contract. This will typically be an encoded function call initializing the storage of the proxy (see [OpenZeppelin ERC1967Proxy-constructor](https://docs.openzeppelin.com/contracts/4.x/api/proxy#ERC1967Proxy-constructor-address-bytes-))."},"id":5072,"implemented":true,"kind":"function","modifiers":[],"name":"deployUUPSProxy","nameLocation":"1424:15:47","nodeType":"FunctionDefinition","parameters":{"id":5055,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5052,"mutability":"mutable","name":"_logic","nameLocation":"1457:6:47","nodeType":"VariableDeclaration","scope":5072,"src":"1449:14:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5051,"name":"address","nodeType":"ElementaryTypeName","src":"1449:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5054,"mutability":"mutable","name":"_initCalldata","nameLocation":"1486:13:47","nodeType":"VariableDeclaration","scope":5072,"src":"1473:26:47","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5053,"name":"bytes","nodeType":"ElementaryTypeName","src":"1473:5:47","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1439:66:47"},"returnParameters":{"id":5058,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5057,"mutability":"mutable","name":"uupsProxy","nameLocation":"1532:9:47","nodeType":"VariableDeclaration","scope":5072,"src":"1524:17:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5056,"name":"address","nodeType":"ElementaryTypeName","src":"1524:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1523:19:47"},"scope":5102,"src":"1415:222:47","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":5100,"nodeType":"Block","src":"2371:158:47","statements":[{"expression":{"id":5086,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5082,"name":"minimalProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5080,"src":"2381:12:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":5083,"name":"_logic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5075,"src":"2396:6:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":5084,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2403:5:47","memberName":"clone","nodeType":"MemberAccess","referencedDeclaration":1347,"src":"2396:12:47","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$_t_address_$bound_to$_t_address_$","typeString":"function (address) returns (address)"}},"id":5085,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2396:14:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2381:29:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":5087,"nodeType":"ExpressionStatement","src":"2381:29:47"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5091,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":5088,"name":"_initCalldata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5077,"src":"2424:13:47","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":5089,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2438:6:47","memberName":"length","nodeType":"MemberAccess","src":"2424:20:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":5090,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2447:1:47","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2424:24:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5099,"nodeType":"IfStatement","src":"2420:103:47","trueBody":{"id":5098,"nodeType":"Block","src":"2450:73:47","statements":[{"expression":{"arguments":[{"id":5095,"name":"_initCalldata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5077,"src":"2497:13:47","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":5092,"name":"minimalProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5080,"src":"2464:12:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":5094,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2477:12:47","memberName":"functionCall","nodeType":"MemberAccess","referencedDeclaration":1877,"src":"2464:25:47","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$bound_to$_t_address_$","typeString":"function (address,bytes memory) returns (bytes memory)"}},"id":5096,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":["2491:4:47"],"names":["data"],"nodeType":"FunctionCall","src":"2464:48:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":5097,"nodeType":"ExpressionStatement","src":"2464:48:47"}]}}]},"documentation":{"id":5073,"nodeType":"StructuredDocumentation","src":"1643:589:47","text":"@notice Creates an [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167) minimal proxy contract, also known as clones, pointing to a logic contract and allows to immediately initialize it.\n @param _logic The logic contract the proxy is pointing to.\n @param _initCalldata The initialization data for this contract.\n @return minimalProxy The address of the minimal proxy contract created.\n @dev If `_initCalldata` is non-empty, it is used in a call to the clone contract. This will typically be an encoded function call initializing the storage of the contract."},"id":5101,"implemented":true,"kind":"function","modifiers":[],"name":"deployMinimalProxy","nameLocation":"2246:18:47","nodeType":"FunctionDefinition","parameters":{"id":5078,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5075,"mutability":"mutable","name":"_logic","nameLocation":"2282:6:47","nodeType":"VariableDeclaration","scope":5101,"src":"2274:14:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5074,"name":"address","nodeType":"ElementaryTypeName","src":"2274:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5077,"mutability":"mutable","name":"_initCalldata","nameLocation":"2311:13:47","nodeType":"VariableDeclaration","scope":5101,"src":"2298:26:47","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5076,"name":"bytes","nodeType":"ElementaryTypeName","src":"2298:5:47","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2264:66:47"},"returnParameters":{"id":5081,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5080,"mutability":"mutable","name":"minimalProxy","nameLocation":"2357:12:47","nodeType":"VariableDeclaration","scope":5101,"src":"2349:20:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5079,"name":"address","nodeType":"ElementaryTypeName","src":"2349:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2348:22:47"},"scope":5102,"src":"2237:292:47","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":5103,"src":"618:1913:47","usedErrors":[]}],"src":"47:2485:47"},"id":47},"src/utils/versioning/IProtocolVersion.sol":{"ast":{"absolutePath":"src/utils/versioning/IProtocolVersion.sol","exportedSymbols":{"IProtocolVersion":[5114]},"id":5115,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":5104,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:48"},{"abstract":false,"baseContracts":[],"canonicalName":"IProtocolVersion","contractDependencies":[],"contractKind":"interface","documentation":{"id":5105,"nodeType":"StructuredDocumentation","src":"72:189:48","text":"@title IProtocolVersion\n @author Aragon X - 2022-2023\n @notice An interface defining the semantic Aragon OSx protocol version number.\n @custom:security-contact sirt@aragon.org"},"fullyImplemented":false,"id":5114,"linearizedBaseContracts":[5114],"name":"IProtocolVersion","nameLocation":"271:16:48","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":5106,"nodeType":"StructuredDocumentation","src":"294:444:48","text":"@notice Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\n @return _version Returns the semantic Aragon OSx protocol version number.\n @dev This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts."},"functionSelector":"2ae9c600","id":5113,"implemented":false,"kind":"function","modifiers":[],"name":"protocolVersion","nameLocation":"752:15:48","nodeType":"FunctionDefinition","parameters":{"id":5107,"nodeType":"ParameterList","parameters":[],"src":"767:2:48"},"returnParameters":{"id":5112,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5111,"mutability":"mutable","name":"_version","nameLocation":"809:8:48","nodeType":"VariableDeclaration","scope":5113,"src":"793:24:48","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3]"},"typeName":{"baseType":{"id":5108,"name":"uint8","nodeType":"ElementaryTypeName","src":"793:5:48","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":5110,"length":{"hexValue":"33","id":5109,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"799:1:48","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"ArrayTypeName","src":"793:8:48","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_storage_ptr","typeString":"uint8[3]"}},"visibility":"internal"}],"src":"792:26:48"},"scope":5114,"src":"743:76:48","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":5115,"src":"261:560:48","usedErrors":[]}],"src":"47:775:48"},"id":48},"src/utils/versioning/ProtocolVersion.sol":{"ast":{"absolutePath":"src/utils/versioning/ProtocolVersion.sol","exportedSymbols":{"IProtocolVersion":[5114],"ProtocolVersion":[5136]},"id":5137,"license":"AGPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":5116,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"47:23:49"},{"absolutePath":"src/utils/versioning/IProtocolVersion.sol","file":"./IProtocolVersion.sol","id":5118,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5137,"sourceUnit":5115,"src":"72:56:49","symbolAliases":[{"foreign":{"id":5117,"name":"IProtocolVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5114,"src":"80:16:49","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":5120,"name":"IProtocolVersion","nameLocations":["497:16:49"],"nodeType":"IdentifierPath","referencedDeclaration":5114,"src":"497:16:49"},"id":5121,"nodeType":"InheritanceSpecifier","src":"497:16:49"}],"canonicalName":"ProtocolVersion","contractDependencies":[],"contractKind":"contract","documentation":{"id":5119,"nodeType":"StructuredDocumentation","src":"130:330:49","text":"@title ProtocolVersion\n @author Aragon X - 2023\n @notice An abstract, stateless, non-upgradeable contract providing the current Aragon OSx protocol version number.\n @dev Do not add any new variables to this contract that would shift down storage in the inheritance chain.\n @custom:security-contact sirt@aragon.org"},"fullyImplemented":true,"id":5136,"linearizedBaseContracts":[5136,5114],"name":"ProtocolVersion","nameLocation":"478:15:49","nodeType":"ContractDefinition","nodes":[{"baseFunctions":[5113],"body":{"id":5134,"nodeType":"Block","src":"696:33:49","statements":[{"expression":{"components":[{"hexValue":"31","id":5129,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"714:1:49","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},{"hexValue":"34","id":5130,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"717:1:49","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},{"hexValue":"30","id":5131,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"720:1:49","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":5132,"isConstant":false,"isInlineArray":true,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"713:9:49","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3] memory"}},"functionReturnParameters":5128,"id":5133,"nodeType":"Return","src":"706:16:49"}]},"documentation":{"id":5122,"nodeType":"StructuredDocumentation","src":"594:32:49","text":"@inheritdoc IProtocolVersion"},"functionSelector":"2ae9c600","id":5135,"implemented":true,"kind":"function","modifiers":[],"name":"protocolVersion","nameLocation":"640:15:49","nodeType":"FunctionDefinition","parameters":{"id":5123,"nodeType":"ParameterList","parameters":[],"src":"655:2:49"},"returnParameters":{"id":5128,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5127,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5135,"src":"679:15:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_memory_ptr","typeString":"uint8[3]"},"typeName":{"baseType":{"id":5124,"name":"uint8","nodeType":"ElementaryTypeName","src":"679:5:49","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":5126,"length":{"hexValue":"33","id":5125,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"685:1:49","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"ArrayTypeName","src":"679:8:49","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$3_storage_ptr","typeString":"uint8[3]"}},"visibility":"internal"}],"src":"678:17:49"},"scope":5136,"src":"631:98:49","stateMutability":"pure","virtual":false,"visibility":"public"}],"scope":5137,"src":"460:271:49","usedErrors":[]}],"src":"47:685:49"},"id":49}},"contracts":{"@openzeppelin/contracts-upgradeable/interfaces/IERC1967Upgradeable.sol":{"IERC1967Upgradeable":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"beacon","type":"address"}],"name":"BeaconUpgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"}],"devdoc":{"details":"ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC. _Available since v4.8.3._","events":{"AdminChanged(address,address)":{"details":"Emitted when the admin account has changed."},"BeaconUpgraded(address)":{"details":"Emitted when the beacon is changed."},"Upgraded(address)":{"details":"Emitted when the implementation is upgraded."}},"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"}],\"devdoc\":{\"details\":\"ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC. _Available since v4.8.3._\",\"events\":{\"AdminChanged(address,address)\":{\"details\":\"Emitted when the admin account has changed.\"},\"BeaconUpgraded(address)\":{\"details\":\"Emitted when the beacon is changed.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/interfaces/IERC1967Upgradeable.sol\":\"IERC1967Upgradeable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/interfaces/IERC1967Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (interfaces/IERC1967.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\\n *\\n * _Available since v4.8.3._\\n */\\ninterface IERC1967Upgradeable {\\n /**\\n * @dev Emitted when the implementation is upgraded.\\n */\\n event Upgraded(address indexed implementation);\\n\\n /**\\n * @dev Emitted when the admin account has changed.\\n */\\n event AdminChanged(address previousAdmin, address newAdmin);\\n\\n /**\\n * @dev Emitted when the beacon is changed.\\n */\\n event BeaconUpgraded(address indexed beacon);\\n}\\n\",\"keccak256\":\"0x47d6e06872b12e72c79d1b5eb55842f860b5fb1207b2317c2358d2766b950a7b\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol":{"IERC1822ProxiableUpgradeable":{"abi":[{"inputs":[],"name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified proxy whose upgrades are fully controlled by the current implementation.","kind":"dev","methods":{"proxiableUUID()":{"details":"Returns the storage slot that the proxiable contract assumes is being used to store the implementation address. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"proxiableUUID()":"52d1902d"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified proxy whose upgrades are fully controlled by the current implementation.\",\"kind\":\"dev\",\"methods\":{\"proxiableUUID()\":{\"details\":\"Returns the storage slot that the proxiable contract assumes is being used to store the implementation address. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol\":\"IERC1822ProxiableUpgradeable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822ProxiableUpgradeable {\\n /**\\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n * address.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy.\\n */\\n function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol":{"ERC1967UpgradeUpgradeable":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"beacon","type":"address"}],"name":"BeaconUpgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"}],"devdoc":{"details":"This abstract contract provides getters and event emitting update functions for https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots. _Available since v4.1._","kind":"dev","methods":{},"stateVariables":{"_ADMIN_SLOT":{"details":"Storage slot with the admin of the contract. This is the keccak-256 hash of \"eip1967.proxy.admin\" subtracted by 1, and is validated in the constructor."},"_BEACON_SLOT":{"details":"The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy. This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor."},"_IMPLEMENTATION_SLOT":{"details":"Storage slot with the address of the current implementation. This is the keccak-256 hash of \"eip1967.proxy.implementation\" subtracted by 1, and is validated in the constructor."},"__gap":{"details":"This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain. See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"}],\"devdoc\":{\"details\":\"This abstract contract provides getters and event emitting update functions for https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots. _Available since v4.1._\",\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"_ADMIN_SLOT\":{\"details\":\"Storage slot with the admin of the contract. This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is validated in the constructor.\"},\"_BEACON_SLOT\":{\"details\":\"The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy. This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\"},\"_IMPLEMENTATION_SLOT\":{\"details\":\"Storage slot with the address of the current implementation. This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is validated in the constructor.\"},\"__gap\":{\"details\":\"This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain. See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol\":\"ERC1967UpgradeUpgradeable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/interfaces/IERC1967Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (interfaces/IERC1967.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\\n *\\n * _Available since v4.8.3._\\n */\\ninterface IERC1967Upgradeable {\\n /**\\n * @dev Emitted when the implementation is upgraded.\\n */\\n event Upgraded(address indexed implementation);\\n\\n /**\\n * @dev Emitted when the admin account has changed.\\n */\\n event AdminChanged(address previousAdmin, address newAdmin);\\n\\n /**\\n * @dev Emitted when the beacon is changed.\\n */\\n event BeaconUpgraded(address indexed beacon);\\n}\\n\",\"keccak256\":\"0x47d6e06872b12e72c79d1b5eb55842f860b5fb1207b2317c2358d2766b950a7b\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822ProxiableUpgradeable {\\n /**\\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n * address.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy.\\n */\\n function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../beacon/IBeaconUpgradeable.sol\\\";\\nimport \\\"../../interfaces/IERC1967Upgradeable.sol\\\";\\nimport \\\"../../interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\nimport \\\"../../utils/StorageSlotUpgradeable.sol\\\";\\nimport {Initializable} from \\\"../utils/Initializable.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n */\\nabstract contract ERC1967UpgradeUpgradeable is Initializable, IERC1967Upgradeable {\\n // This is the keccak-256 hash of \\\"eip1967.proxy.rollback\\\" subtracted by 1\\n bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n /**\\n * @dev Storage slot with the address of the current implementation.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n function __ERC1967Upgrade_init() internal onlyInitializing {\\n }\\n\\n function __ERC1967Upgrade_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _getImplementation() internal view returns (address) {\\n return StorageSlotUpgradeable.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 implementation slot.\\n */\\n function _setImplementation(address newImplementation) private {\\n require(AddressUpgradeable.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n StorageSlotUpgradeable.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n }\\n\\n /**\\n * @dev Perform implementation upgrade\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeTo(address newImplementation) internal {\\n _setImplementation(newImplementation);\\n emit Upgraded(newImplementation);\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCall(address newImplementation, bytes memory data, bool forceCall) internal {\\n _upgradeTo(newImplementation);\\n if (data.length > 0 || forceCall) {\\n AddressUpgradeable.functionDelegateCall(newImplementation, data);\\n }\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCallUUPS(address newImplementation, bytes memory data, bool forceCall) internal {\\n // Upgrades from old implementations will perform a rollback test. This test requires the new\\n // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n // this special case will break upgrade paths from old UUPS implementation to new ones.\\n if (StorageSlotUpgradeable.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n _setImplementation(newImplementation);\\n } else {\\n try IERC1822ProxiableUpgradeable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n require(slot == _IMPLEMENTATION_SLOT, \\\"ERC1967Upgrade: unsupported proxiableUUID\\\");\\n } catch {\\n revert(\\\"ERC1967Upgrade: new implementation is not UUPS\\\");\\n }\\n _upgradeToAndCall(newImplementation, data, forceCall);\\n }\\n }\\n\\n /**\\n * @dev Storage slot with the admin of the contract.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _getAdmin() internal view returns (address) {\\n return StorageSlotUpgradeable.getAddressSlot(_ADMIN_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 admin slot.\\n */\\n function _setAdmin(address newAdmin) private {\\n require(newAdmin != address(0), \\\"ERC1967: new admin is the zero address\\\");\\n StorageSlotUpgradeable.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n */\\n function _changeAdmin(address newAdmin) internal {\\n emit AdminChanged(_getAdmin(), newAdmin);\\n _setAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\\n */\\n bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n /**\\n * @dev Returns the current beacon.\\n */\\n function _getBeacon() internal view returns (address) {\\n return StorageSlotUpgradeable.getAddressSlot(_BEACON_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new beacon in the EIP1967 beacon slot.\\n */\\n function _setBeacon(address newBeacon) private {\\n require(AddressUpgradeable.isContract(newBeacon), \\\"ERC1967: new beacon is not a contract\\\");\\n require(\\n AddressUpgradeable.isContract(IBeaconUpgradeable(newBeacon).implementation()),\\n \\\"ERC1967: beacon implementation is not a contract\\\"\\n );\\n StorageSlotUpgradeable.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n }\\n\\n /**\\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n *\\n * Emits a {BeaconUpgraded} event.\\n */\\n function _upgradeBeaconToAndCall(address newBeacon, bytes memory data, bool forceCall) internal {\\n _setBeacon(newBeacon);\\n emit BeaconUpgraded(newBeacon);\\n if (data.length > 0 || forceCall) {\\n AddressUpgradeable.functionDelegateCall(IBeaconUpgradeable(newBeacon).implementation(), data);\\n }\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x7795808e3899c805254e3ae58074b20f799b466e3f43e057e47bedee5fb771f8\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeaconUpgradeable {\\n /**\\n * @dev Must return an address that can be used as a delegate call target.\\n *\\n * {BeaconProxy} will check that this address is a contract.\\n */\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/StorageSlot.sol)\\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```solidity\\n * contract ERC1967 {\\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n * function _getImplementation() internal view returns (address) {\\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n * }\\n *\\n * function _setImplementation(address newImplementation) internal {\\n * require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n * }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._\\n * _Available since v4.9 for `string`, `bytes`._\\n */\\nlibrary StorageSlotUpgradeable {\\n struct AddressSlot {\\n address value;\\n }\\n\\n struct BooleanSlot {\\n bool value;\\n }\\n\\n struct Bytes32Slot {\\n bytes32 value;\\n }\\n\\n struct Uint256Slot {\\n uint256 value;\\n }\\n\\n struct StringSlot {\\n string value;\\n }\\n\\n struct BytesSlot {\\n bytes value;\\n }\\n\\n /**\\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n */\\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n */\\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n */\\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n */\\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` with member `value` located at `slot`.\\n */\\n function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\\n */\\n function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` with member `value` located at `slot`.\\n */\\n function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\\n */\\n function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n}\\n\",\"keccak256\":\"0x07ac95acad040f1fb1f6120dd0aa5f702db69446e95f82613721879d30de0908\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":372,"contract":"@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:ERC1967UpgradeUpgradeable","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":375,"contract":"@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:ERC1967UpgradeUpgradeable","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":354,"contract":"@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:ERC1967UpgradeUpgradeable","label":"__gap","offset":0,"slot":"1","type":"t_array(t_uint256)50_storage"}],"types":{"t_array(t_uint256)50_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[50]","numberOfBytes":"1600"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.sol":{"IBeaconUpgradeable":{"abi":[{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"This is the interface that {BeaconProxy} expects of its beacon.","kind":"dev","methods":{"implementation()":{"details":"Must return an address that can be used as a delegate call target. {BeaconProxy} will check that this address is a contract."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"implementation()":"5c60da1b"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"This is the interface that {BeaconProxy} expects of its beacon.\",\"kind\":\"dev\",\"methods\":{\"implementation()\":{\"details\":\"Must return an address that can be used as a delegate call target. {BeaconProxy} will check that this address is a contract.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.sol\":\"IBeaconUpgradeable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeaconUpgradeable {\\n /**\\n * @dev Must return an address that can be used as a delegate call target.\\n *\\n * {BeaconProxy} will check that this address is a contract.\\n */\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol":{"Initializable":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"}],"devdoc":{"custom:oz-upgrades-unsafe-allow":"constructor constructor() { _disableInitializers(); } ``` ====","details":"This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer function so it can only be called once. The {initializer} modifier provided by this contract will have this effect. The initialization functions use a version number. Once a version number is used, it is consumed and cannot be reused. This mechanism prevents re-execution of each \"step\" but allows the creation of new initialization steps in case an upgrade adds a module that needs to be initialized. For example: [.hljs-theme-light.nopadding] ```solidity contract MyToken is ERC20Upgradeable { function initialize() initializer public { __ERC20_init(\"MyToken\", \"MTK\"); } } contract MyTokenV2 is MyToken, ERC20PermitUpgradeable { function initializeV2() reinitializer(2) public { __ERC20Permit_init(\"MyToken\"); } } ``` TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}. CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure that all initializers are idempotent. This is not verified automatically as constructors are by Solidity. [CAUTION] ==== Avoid leaving a contract uninitialized. An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke the {_disableInitializers} function in the constructor to automatically lock it when it is deployed: [.hljs-theme-light.nopadding] ```","events":{"Initialized(uint8)":{"details":"Triggered when the contract has been initialized or reinitialized."}},"kind":"dev","methods":{},"stateVariables":{"_initialized":{"custom:oz-retyped-from":"bool","details":"Indicates that the contract has been initialized."},"_initializing":{"details":"Indicates that the contract is in the process of being initialized."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"}],\"devdoc\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor constructor() { _disableInitializers(); } ``` ====\",\"details\":\"This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer function so it can only be called once. The {initializer} modifier provided by this contract will have this effect. The initialization functions use a version number. Once a version number is used, it is consumed and cannot be reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in case an upgrade adds a module that needs to be initialized. For example: [.hljs-theme-light.nopadding] ```solidity contract MyToken is ERC20Upgradeable { function initialize() initializer public { __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\"); } } contract MyTokenV2 is MyToken, ERC20PermitUpgradeable { function initializeV2() reinitializer(2) public { __ERC20Permit_init(\\\"MyToken\\\"); } } ``` TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}. CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure that all initializers are idempotent. This is not verified automatically as constructors are by Solidity. [CAUTION] ==== Avoid leaving a contract uninitialized. An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke the {_disableInitializers} function in the constructor to automatically lock it when it is deployed: [.hljs-theme-light.nopadding] ```\",\"events\":{\"Initialized(uint8)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"_initialized\":{\"custom:oz-retyped-from\":\"bool\",\"details\":\"Indicates that the contract has been initialized.\"},\"_initializing\":{\"details\":\"Indicates that the contract is in the process of being initialized.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":\"Initializable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":372,"contract":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":375,"contract":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable","label":"_initializing","offset":1,"slot":"0","type":"t_bool"}],"types":{"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol":{"UUPSUpgradeable":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"beacon","type":"address"}],"name":"BeaconUpgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"inputs":[],"name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"}],"name":"upgradeTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"}],"devdoc":{"details":"An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy. A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing `UUPSUpgradeable` with a custom implementation of upgrades. The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism. _Available since v4.1._","kind":"dev","methods":{"proxiableUUID()":{"details":"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier."},"upgradeTo(address)":{"custom:oz-upgrades-unsafe-allow-reachable":"delegatecall","details":"Upgrade the implementation of the proxy to `newImplementation`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."},"upgradeToAndCall(address,bytes)":{"custom:oz-upgrades-unsafe-allow-reachable":"delegatecall","details":"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."}},"stateVariables":{"__gap":{"details":"This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain. See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"},"__self":{"custom:oz-upgrades-unsafe-allow":"state-variable-immutable state-variable-assignment"}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"proxiableUUID()":"52d1902d","upgradeTo(address)":"3659cfe6","upgradeToAndCall(address,bytes)":"4f1ef286"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"upgradeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy. A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing `UUPSUpgradeable` with a custom implementation of upgrades. The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism. _Available since v4.1._\",\"kind\":\"dev\",\"methods\":{\"proxiableUUID()\":{\"details\":\"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"upgradeTo(address)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"},\"upgradeToAndCall(address,bytes)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"}},\"stateVariables\":{\"__gap\":{\"details\":\"This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain. See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\"},\"__self\":{\"custom:oz-upgrades-unsafe-allow\":\"state-variable-immutable state-variable-assignment\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":\"UUPSUpgradeable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/interfaces/IERC1967Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (interfaces/IERC1967.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\\n *\\n * _Available since v4.8.3._\\n */\\ninterface IERC1967Upgradeable {\\n /**\\n * @dev Emitted when the implementation is upgraded.\\n */\\n event Upgraded(address indexed implementation);\\n\\n /**\\n * @dev Emitted when the admin account has changed.\\n */\\n event AdminChanged(address previousAdmin, address newAdmin);\\n\\n /**\\n * @dev Emitted when the beacon is changed.\\n */\\n event BeaconUpgraded(address indexed beacon);\\n}\\n\",\"keccak256\":\"0x47d6e06872b12e72c79d1b5eb55842f860b5fb1207b2317c2358d2766b950a7b\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822ProxiableUpgradeable {\\n /**\\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n * address.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy.\\n */\\n function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../beacon/IBeaconUpgradeable.sol\\\";\\nimport \\\"../../interfaces/IERC1967Upgradeable.sol\\\";\\nimport \\\"../../interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\nimport \\\"../../utils/StorageSlotUpgradeable.sol\\\";\\nimport {Initializable} from \\\"../utils/Initializable.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n */\\nabstract contract ERC1967UpgradeUpgradeable is Initializable, IERC1967Upgradeable {\\n // This is the keccak-256 hash of \\\"eip1967.proxy.rollback\\\" subtracted by 1\\n bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n /**\\n * @dev Storage slot with the address of the current implementation.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n function __ERC1967Upgrade_init() internal onlyInitializing {\\n }\\n\\n function __ERC1967Upgrade_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _getImplementation() internal view returns (address) {\\n return StorageSlotUpgradeable.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 implementation slot.\\n */\\n function _setImplementation(address newImplementation) private {\\n require(AddressUpgradeable.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n StorageSlotUpgradeable.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n }\\n\\n /**\\n * @dev Perform implementation upgrade\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeTo(address newImplementation) internal {\\n _setImplementation(newImplementation);\\n emit Upgraded(newImplementation);\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCall(address newImplementation, bytes memory data, bool forceCall) internal {\\n _upgradeTo(newImplementation);\\n if (data.length > 0 || forceCall) {\\n AddressUpgradeable.functionDelegateCall(newImplementation, data);\\n }\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCallUUPS(address newImplementation, bytes memory data, bool forceCall) internal {\\n // Upgrades from old implementations will perform a rollback test. This test requires the new\\n // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n // this special case will break upgrade paths from old UUPS implementation to new ones.\\n if (StorageSlotUpgradeable.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n _setImplementation(newImplementation);\\n } else {\\n try IERC1822ProxiableUpgradeable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n require(slot == _IMPLEMENTATION_SLOT, \\\"ERC1967Upgrade: unsupported proxiableUUID\\\");\\n } catch {\\n revert(\\\"ERC1967Upgrade: new implementation is not UUPS\\\");\\n }\\n _upgradeToAndCall(newImplementation, data, forceCall);\\n }\\n }\\n\\n /**\\n * @dev Storage slot with the admin of the contract.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _getAdmin() internal view returns (address) {\\n return StorageSlotUpgradeable.getAddressSlot(_ADMIN_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 admin slot.\\n */\\n function _setAdmin(address newAdmin) private {\\n require(newAdmin != address(0), \\\"ERC1967: new admin is the zero address\\\");\\n StorageSlotUpgradeable.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n */\\n function _changeAdmin(address newAdmin) internal {\\n emit AdminChanged(_getAdmin(), newAdmin);\\n _setAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\\n */\\n bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n /**\\n * @dev Returns the current beacon.\\n */\\n function _getBeacon() internal view returns (address) {\\n return StorageSlotUpgradeable.getAddressSlot(_BEACON_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new beacon in the EIP1967 beacon slot.\\n */\\n function _setBeacon(address newBeacon) private {\\n require(AddressUpgradeable.isContract(newBeacon), \\\"ERC1967: new beacon is not a contract\\\");\\n require(\\n AddressUpgradeable.isContract(IBeaconUpgradeable(newBeacon).implementation()),\\n \\\"ERC1967: beacon implementation is not a contract\\\"\\n );\\n StorageSlotUpgradeable.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n }\\n\\n /**\\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n *\\n * Emits a {BeaconUpgraded} event.\\n */\\n function _upgradeBeaconToAndCall(address newBeacon, bytes memory data, bool forceCall) internal {\\n _setBeacon(newBeacon);\\n emit BeaconUpgraded(newBeacon);\\n if (data.length > 0 || forceCall) {\\n AddressUpgradeable.functionDelegateCall(IBeaconUpgradeable(newBeacon).implementation(), data);\\n }\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x7795808e3899c805254e3ae58074b20f799b466e3f43e057e47bedee5fb771f8\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeaconUpgradeable {\\n /**\\n * @dev Must return an address that can be used as a delegate call target.\\n *\\n * {BeaconProxy} will check that this address is a contract.\\n */\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/UUPSUpgradeable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport \\\"../ERC1967/ERC1967UpgradeUpgradeable.sol\\\";\\nimport {Initializable} from \\\"./Initializable.sol\\\";\\n\\n/**\\n * @dev An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an\\n * {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy.\\n *\\n * A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is\\n * reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing\\n * `UUPSUpgradeable` with a custom implementation of upgrades.\\n *\\n * The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism.\\n *\\n * _Available since v4.1._\\n */\\nabstract contract UUPSUpgradeable is Initializable, IERC1822ProxiableUpgradeable, ERC1967UpgradeUpgradeable {\\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable state-variable-assignment\\n address private immutable __self = address(this);\\n\\n /**\\n * @dev Check that the execution is being performed through a delegatecall call and that the execution context is\\n * a proxy contract with an implementation (as defined in ERC1967) pointing to self. This should only be the case\\n * for UUPS and transparent proxies that are using the current contract as their implementation. Execution of a\\n * function through ERC1167 minimal proxies (clones) would not normally pass this test, but is not guaranteed to\\n * fail.\\n */\\n modifier onlyProxy() {\\n require(address(this) != __self, \\\"Function must be called through delegatecall\\\");\\n require(_getImplementation() == __self, \\\"Function must be called through active proxy\\\");\\n _;\\n }\\n\\n /**\\n * @dev Check that the execution is not being performed through a delegate call. This allows a function to be\\n * callable on the implementing contract but not through proxies.\\n */\\n modifier notDelegated() {\\n require(address(this) == __self, \\\"UUPSUpgradeable: must not be called through delegatecall\\\");\\n _;\\n }\\n\\n function __UUPSUpgradeable_init() internal onlyInitializing {\\n }\\n\\n function __UUPSUpgradeable_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the\\n * implementation. It is used to validate the implementation's compatibility when performing an upgrade.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\\n */\\n function proxiableUUID() external view virtual override notDelegated returns (bytes32) {\\n return _IMPLEMENTATION_SLOT;\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy to `newImplementation`.\\n *\\n * Calls {_authorizeUpgrade}.\\n *\\n * Emits an {Upgraded} event.\\n *\\n * @custom:oz-upgrades-unsafe-allow-reachable delegatecall\\n */\\n function upgradeTo(address newImplementation) public virtual onlyProxy {\\n _authorizeUpgrade(newImplementation);\\n _upgradeToAndCallUUPS(newImplementation, new bytes(0), false);\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call\\n * encoded in `data`.\\n *\\n * Calls {_authorizeUpgrade}.\\n *\\n * Emits an {Upgraded} event.\\n *\\n * @custom:oz-upgrades-unsafe-allow-reachable delegatecall\\n */\\n function upgradeToAndCall(address newImplementation, bytes memory data) public payable virtual onlyProxy {\\n _authorizeUpgrade(newImplementation);\\n _upgradeToAndCallUUPS(newImplementation, data, true);\\n }\\n\\n /**\\n * @dev Function that should revert when `msg.sender` is not authorized to upgrade the contract. Called by\\n * {upgradeTo} and {upgradeToAndCall}.\\n *\\n * Normally, this function will use an xref:access.adoc[access control] modifier such as {Ownable-onlyOwner}.\\n *\\n * ```solidity\\n * function _authorizeUpgrade(address) internal override onlyOwner {}\\n * ```\\n */\\n function _authorizeUpgrade(address newImplementation) internal virtual;\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0xefb41f5c1a00249b7a99f0782f8c557865605426a3fb6e5fe9ae334293ae4f33\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/StorageSlot.sol)\\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```solidity\\n * contract ERC1967 {\\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n * function _getImplementation() internal view returns (address) {\\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n * }\\n *\\n * function _setImplementation(address newImplementation) internal {\\n * require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n * }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._\\n * _Available since v4.9 for `string`, `bytes`._\\n */\\nlibrary StorageSlotUpgradeable {\\n struct AddressSlot {\\n address value;\\n }\\n\\n struct BooleanSlot {\\n bool value;\\n }\\n\\n struct Bytes32Slot {\\n bytes32 value;\\n }\\n\\n struct Uint256Slot {\\n uint256 value;\\n }\\n\\n struct StringSlot {\\n string value;\\n }\\n\\n struct BytesSlot {\\n bytes value;\\n }\\n\\n /**\\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n */\\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n */\\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n */\\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n */\\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` with member `value` located at `slot`.\\n */\\n function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\\n */\\n function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` with member `value` located at `slot`.\\n */\\n function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\\n */\\n function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n}\\n\",\"keccak256\":\"0x07ac95acad040f1fb1f6120dd0aa5f702db69446e95f82613721879d30de0908\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":372,"contract":"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:UUPSUpgradeable","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":375,"contract":"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:UUPSUpgradeable","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":354,"contract":"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:UUPSUpgradeable","label":"__gap","offset":0,"slot":"1","type":"t_array(t_uint256)50_storage"},{"astId":670,"contract":"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:UUPSUpgradeable","label":"__gap","offset":0,"slot":"51","type":"t_array(t_uint256)50_storage"}],"types":{"t_array(t_uint256)50_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[50]","numberOfBytes":"1600"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol":{"AddressUpgradeable":{"abi":[],"devdoc":{"details":"Collection of functions related to the address type","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"602d6037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a","opcodes":"PUSH1 0x2D PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"194:9180:6:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;194:9180:6;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"194:9180:6:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"9000","executionCost":"94","totalCost":"9094"},"internal":{"_revert(bytes memory,string memory)":"infinite","functionCall(address,bytes memory)":"infinite","functionCall(address,bytes memory,string memory)":"infinite","functionCallWithValue(address,bytes memory,uint256)":"infinite","functionCallWithValue(address,bytes memory,uint256,string memory)":"infinite","functionDelegateCall(address,bytes memory)":"infinite","functionDelegateCall(address,bytes memory,string memory)":"infinite","functionStaticCall(address,bytes memory)":"infinite","functionStaticCall(address,bytes memory,string memory)":"infinite","isContract(address)":"infinite","sendValue(address payable,uint256)":"infinite","verifyCallResult(bool,bytes memory,string memory)":"infinite","verifyCallResultFromTarget(address,bool,bytes memory,string memory)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Collection of functions related to the address type\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":\"AddressUpgradeable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol":{"ContextUpgradeable":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"}],"devdoc":{"details":"Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.","kind":"dev","methods":{},"stateVariables":{"__gap":{"details":"This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain. See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"}],\"devdoc\":{\"details\":\"Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.\",\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"__gap\":{\"details\":\"This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain. See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":\"ContextUpgradeable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n function __Context_init() internal onlyInitializing {\\n }\\n\\n function __Context_init_unchained() internal onlyInitializing {\\n }\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n function _contextSuffixLength() internal view virtual returns (uint256) {\\n return 0;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x75097e35253e7fb282ee4d7f27a80eaacfa759923185bf17302a89cbc059c5ef\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":372,"contract":"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":375,"contract":"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":1051,"contract":"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable","label":"__gap","offset":0,"slot":"1","type":"t_array(t_uint256)50_storage"}],"types":{"t_array(t_uint256)50_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[50]","numberOfBytes":"1600"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol":{"CountersUpgradeable":{"abi":[],"devdoc":{"author":"Matt Condon (@shrugs)","details":"Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number of elements in a mapping, issuing ERC721 ids, or counting request ids. Include with `using Counters for Counters.Counter;`","kind":"dev","methods":{},"title":"Counters","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"602d6037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a","opcodes":"PUSH1 0x2D PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"424:982:8:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;424:982:8;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"424:982:8:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"9000","executionCost":"94","totalCost":"9094"},"internal":{"current(struct CountersUpgradeable.Counter storage pointer)":"infinite","decrement(struct CountersUpgradeable.Counter storage pointer)":"infinite","increment(struct CountersUpgradeable.Counter storage pointer)":"infinite","reset(struct CountersUpgradeable.Counter storage pointer)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"author\":\"Matt Condon (@shrugs)\",\"details\":\"Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number of elements in a mapping, issuing ERC721 ids, or counting request ids. Include with `using Counters for Counters.Counter;`\",\"kind\":\"dev\",\"methods\":{},\"title\":\"Counters\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol\":\"CountersUpgradeable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Counters.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title Counters\\n * @author Matt Condon (@shrugs)\\n * @dev Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number\\n * of elements in a mapping, issuing ERC721 ids, or counting request ids.\\n *\\n * Include with `using Counters for Counters.Counter;`\\n */\\nlibrary CountersUpgradeable {\\n struct Counter {\\n // This variable should never be directly accessed by users of the library: interactions must be restricted to\\n // the library's function. As of Solidity v0.5.2, this cannot be enforced, though there is a proposal to add\\n // this feature: see https://github.com/ethereum/solidity/issues/4637\\n uint256 _value; // default: 0\\n }\\n\\n function current(Counter storage counter) internal view returns (uint256) {\\n return counter._value;\\n }\\n\\n function increment(Counter storage counter) internal {\\n unchecked {\\n counter._value += 1;\\n }\\n }\\n\\n function decrement(Counter storage counter) internal {\\n uint256 value = counter._value;\\n require(value > 0, \\\"Counter: decrement overflow\\\");\\n unchecked {\\n counter._value = value - 1;\\n }\\n }\\n\\n function reset(Counter storage counter) internal {\\n counter._value = 0;\\n }\\n}\\n\",\"keccak256\":\"0x798741e231b22b81e2dd2eddaaf8832dee4baf5cd8e2dbaa5c1dd12a1c053c4d\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol":{"StorageSlotUpgradeable":{"abi":[],"devdoc":{"details":"Library for reading and writing primitive types to specific storage slots. Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts. This library helps with reading and writing to such slots without the need for inline assembly. The functions in this library return Slot structs that contain a `value` member that can be used to read or write. Example usage to set ERC1967 implementation slot: ```solidity contract ERC1967 { bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc; function _getImplementation() internal view returns (address) { return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value; } function _setImplementation(address newImplementation) internal { require(Address.isContract(newImplementation), \"ERC1967: new implementation is not a contract\"); StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation; } } ``` _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._ _Available since v4.9 for `string`, `bytes`._","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"602d6037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a","opcodes":"PUSH1 0x2D PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"1420:2696:9:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;1420:2696:9;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"1420:2696:9:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"9000","executionCost":"94","totalCost":"9094"},"internal":{"getAddressSlot(bytes32)":"infinite","getBooleanSlot(bytes32)":"infinite","getBytes32Slot(bytes32)":"infinite","getBytesSlot(bytes storage pointer)":"infinite","getBytesSlot(bytes32)":"infinite","getStringSlot(bytes32)":"infinite","getStringSlot(string storage pointer)":"infinite","getUint256Slot(bytes32)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Library for reading and writing primitive types to specific storage slots. Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts. This library helps with reading and writing to such slots without the need for inline assembly. The functions in this library return Slot structs that contain a `value` member that can be used to read or write. Example usage to set ERC1967 implementation slot: ```solidity contract ERC1967 { bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc; function _getImplementation() internal view returns (address) { return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value; } function _setImplementation(address newImplementation) internal { require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\"); StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation; } } ``` _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._ _Available since v4.9 for `string`, `bytes`._\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol\":\"StorageSlotUpgradeable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/StorageSlot.sol)\\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```solidity\\n * contract ERC1967 {\\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n * function _getImplementation() internal view returns (address) {\\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n * }\\n *\\n * function _setImplementation(address newImplementation) internal {\\n * require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n * }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._\\n * _Available since v4.9 for `string`, `bytes`._\\n */\\nlibrary StorageSlotUpgradeable {\\n struct AddressSlot {\\n address value;\\n }\\n\\n struct BooleanSlot {\\n bool value;\\n }\\n\\n struct Bytes32Slot {\\n bytes32 value;\\n }\\n\\n struct Uint256Slot {\\n uint256 value;\\n }\\n\\n struct StringSlot {\\n string value;\\n }\\n\\n struct BytesSlot {\\n bytes value;\\n }\\n\\n /**\\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n */\\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n */\\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n */\\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n */\\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` with member `value` located at `slot`.\\n */\\n function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\\n */\\n function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` with member `value` located at `slot`.\\n */\\n function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\\n */\\n function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n}\\n\",\"keccak256\":\"0x07ac95acad040f1fb1f6120dd0aa5f702db69446e95f82613721879d30de0908\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol":{"ERC165Upgradeable":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"Implementation of the {IERC165} interface. Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check for the additional interface id that will be supported. For example: ```solidity function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); } ``` Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.","kind":"dev","methods":{"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."}},"stateVariables":{"__gap":{"details":"This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain. See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of the {IERC165} interface. Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check for the additional interface id that will be supported. For example: ```solidity function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); } ``` Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\",\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"}},\"stateVariables\":{\"__gap\":{\"details\":\"This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain. See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":\"ERC165Upgradeable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165Upgradeable.sol\\\";\\nimport {Initializable} from \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165Upgradeable is Initializable, IERC165Upgradeable {\\n function __ERC165_init() internal onlyInitializing {\\n }\\n\\n function __ERC165_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165Upgradeable).interfaceId;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0xd90d7723512df65ae417adaf0801042940f0dabd60039ceeaffe34aa5b238da1\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165Upgradeable {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":372,"contract":"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":375,"contract":"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":1280,"contract":"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable","label":"__gap","offset":0,"slot":"1","type":"t_array(t_uint256)50_storage"}],"types":{"t_array(t_uint256)50_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[50]","numberOfBytes":"1600"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol":{"IERC165Upgradeable":{"abi":[{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"Interface of the ERC165 standard, as defined in the https://eips.ethereum.org/EIPS/eip-165[EIP]. Implementers can declare support of contract interfaces, which can then be queried by others ({ERC165Checker}). For an implementation, see {ERC165}.","kind":"dev","methods":{"supportsInterface(bytes4)":{"details":"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC165 standard, as defined in the https://eips.ethereum.org/EIPS/eip-165[EIP]. Implementers can declare support of contract interfaces, which can then be queried by others ({ERC165Checker}). For an implementation, see {ERC165}.\",\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":\"IERC165Upgradeable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165Upgradeable {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/interfaces/IERC1967.sol":{"IERC1967":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"beacon","type":"address"}],"name":"BeaconUpgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"}],"devdoc":{"details":"ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC. _Available since v4.8.3._","events":{"AdminChanged(address,address)":{"details":"Emitted when the admin account has changed."},"BeaconUpgraded(address)":{"details":"Emitted when the beacon is changed."},"Upgraded(address)":{"details":"Emitted when the implementation is upgraded."}},"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"}],\"devdoc\":{\"details\":\"ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC. _Available since v4.8.3._\",\"events\":{\"AdminChanged(address,address)\":{\"details\":\"Emitted when the admin account has changed.\"},\"BeaconUpgraded(address)\":{\"details\":\"Emitted when the beacon is changed.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/interfaces/IERC1967.sol\":\"IERC1967\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/IERC1967.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (interfaces/IERC1967.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\\n *\\n * _Available since v4.8.3._\\n */\\ninterface IERC1967 {\\n /**\\n * @dev Emitted when the implementation is upgraded.\\n */\\n event Upgraded(address indexed implementation);\\n\\n /**\\n * @dev Emitted when the admin account has changed.\\n */\\n event AdminChanged(address previousAdmin, address newAdmin);\\n\\n /**\\n * @dev Emitted when the beacon is changed.\\n */\\n event BeaconUpgraded(address indexed beacon);\\n}\\n\",\"keccak256\":\"0x3cbef5ebc24b415252e2f8c0c9254555d30d9f085603b4b80d9b5ed20ab87e90\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/interfaces/draft-IERC1822.sol":{"IERC1822Proxiable":{"abi":[{"inputs":[],"name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified proxy whose upgrades are fully controlled by the current implementation.","kind":"dev","methods":{"proxiableUUID()":{"details":"Returns the storage slot that the proxiable contract assumes is being used to store the implementation address. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"proxiableUUID()":"52d1902d"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified proxy whose upgrades are fully controlled by the current implementation.\",\"kind\":\"dev\",\"methods\":{\"proxiableUUID()\":{\"details\":\"Returns the storage slot that the proxiable contract assumes is being used to store the implementation address. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":\"IERC1822Proxiable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822Proxiable {\\n /**\\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n * address.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy.\\n */\\n function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/proxy/Clones.sol":{"Clones":{"abi":[],"devdoc":{"details":"https://eips.ethereum.org/EIPS/eip-1167[EIP 1167] is a standard for deploying minimal proxy contracts, also known as \"clones\". > To simply and cheaply clone contract functionality in an immutable way, this standard specifies > a minimal bytecode implementation that delegates all calls to a known, fixed address. The library includes functions to deploy a proxy using either `create` (traditional deployment) or `create2` (salted deterministic deployment). It also includes functions to predict the addresses of clones deployed using the deterministic method. _Available since v3.4._","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"602d6037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a","opcodes":"PUSH1 0x2D PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"755:3275:14:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;755:3275:14;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"755:3275:14:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"9000","executionCost":"94","totalCost":"9094"},"internal":{"clone(address)":"infinite","cloneDeterministic(address,bytes32)":"infinite","predictDeterministicAddress(address,bytes32)":"infinite","predictDeterministicAddress(address,bytes32,address)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"https://eips.ethereum.org/EIPS/eip-1167[EIP 1167] is a standard for deploying minimal proxy contracts, also known as \\\"clones\\\". > To simply and cheaply clone contract functionality in an immutable way, this standard specifies > a minimal bytecode implementation that delegates all calls to a known, fixed address. The library includes functions to deploy a proxy using either `create` (traditional deployment) or `create2` (salted deterministic deployment). It also includes functions to predict the addresses of clones deployed using the deterministic method. _Available since v3.4._\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/proxy/Clones.sol\":\"Clones\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/proxy/Clones.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/Clones.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev https://eips.ethereum.org/EIPS/eip-1167[EIP 1167] is a standard for\\n * deploying minimal proxy contracts, also known as \\\"clones\\\".\\n *\\n * > To simply and cheaply clone contract functionality in an immutable way, this standard specifies\\n * > a minimal bytecode implementation that delegates all calls to a known, fixed address.\\n *\\n * The library includes functions to deploy a proxy using either `create` (traditional deployment) or `create2`\\n * (salted deterministic deployment). It also includes functions to predict the addresses of clones deployed using the\\n * deterministic method.\\n *\\n * _Available since v3.4._\\n */\\nlibrary Clones {\\n /**\\n * @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`.\\n *\\n * This function uses the create opcode, which should never revert.\\n */\\n function clone(address implementation) internal returns (address instance) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n // Cleans the upper 96 bits of the `implementation` word, then packs the first 3 bytes\\n // of the `implementation` address with the bytecode before the address.\\n mstore(0x00, or(shr(0xe8, shl(0x60, implementation)), 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000))\\n // Packs the remaining 17 bytes of `implementation` with the bytecode after the address.\\n mstore(0x20, or(shl(0x78, implementation), 0x5af43d82803e903d91602b57fd5bf3))\\n instance := create(0, 0x09, 0x37)\\n }\\n require(instance != address(0), \\\"ERC1167: create failed\\\");\\n }\\n\\n /**\\n * @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`.\\n *\\n * This function uses the create2 opcode and a `salt` to deterministically deploy\\n * the clone. Using the same `implementation` and `salt` multiple time will revert, since\\n * the clones cannot be deployed twice at the same address.\\n */\\n function cloneDeterministic(address implementation, bytes32 salt) internal returns (address instance) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n // Cleans the upper 96 bits of the `implementation` word, then packs the first 3 bytes\\n // of the `implementation` address with the bytecode before the address.\\n mstore(0x00, or(shr(0xe8, shl(0x60, implementation)), 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000))\\n // Packs the remaining 17 bytes of `implementation` with the bytecode after the address.\\n mstore(0x20, or(shl(0x78, implementation), 0x5af43d82803e903d91602b57fd5bf3))\\n instance := create2(0, 0x09, 0x37, salt)\\n }\\n require(instance != address(0), \\\"ERC1167: create2 failed\\\");\\n }\\n\\n /**\\n * @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}.\\n */\\n function predictDeterministicAddress(\\n address implementation,\\n bytes32 salt,\\n address deployer\\n ) internal pure returns (address predicted) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n let ptr := mload(0x40)\\n mstore(add(ptr, 0x38), deployer)\\n mstore(add(ptr, 0x24), 0x5af43d82803e903d91602b57fd5bf3ff)\\n mstore(add(ptr, 0x14), implementation)\\n mstore(ptr, 0x3d602d80600a3d3981f3363d3d373d3d3d363d73)\\n mstore(add(ptr, 0x58), salt)\\n mstore(add(ptr, 0x78), keccak256(add(ptr, 0x0c), 0x37))\\n predicted := keccak256(add(ptr, 0x43), 0x55)\\n }\\n }\\n\\n /**\\n * @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}.\\n */\\n function predictDeterministicAddress(\\n address implementation,\\n bytes32 salt\\n ) internal view returns (address predicted) {\\n return predictDeterministicAddress(implementation, salt, address(this));\\n }\\n}\\n\",\"keccak256\":\"0x01f055f5c26ba25d7f83e9aa9ba877fbea4d0bf22227de046ea67494bc932999\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol":{"ERC1967Proxy":{"abi":[{"inputs":[{"internalType":"address","name":"_logic","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"}],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"beacon","type":"address"}],"name":"BeaconUpgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"stateMutability":"payable","type":"fallback"},{"stateMutability":"payable","type":"receive"}],"devdoc":{"details":"This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an implementation address that can be changed. This address is stored in storage in the location specified by https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the implementation behind the proxy.","kind":"dev","methods":{"constructor":{"details":"Initializes the upgradeable proxy with an initial implementation specified by `_logic`. If `_data` is nonempty, it's used as data in a delegate call to `_logic`. This will typically be an encoded function call, and allows initializing the storage of the proxy like a Solidity constructor."}},"version":1},"evm":{"bytecode":{"functionDebugData":{"@_1428":{"entryPoint":null,"id":1428,"parameterSlots":2,"returnSlots":0},"@_revert_2136":{"entryPoint":693,"id":2136,"parameterSlots":2,"returnSlots":0},"@_setImplementation_1495":{"entryPoint":215,"id":1495,"parameterSlots":1,"returnSlots":0},"@_upgradeToAndCall_1540":{"entryPoint":53,"id":1540,"parameterSlots":3,"returnSlots":0},"@_upgradeTo_1510":{"entryPoint":107,"id":1510,"parameterSlots":1,"returnSlots":0},"@functionDelegateCall_2024":{"entryPoint":171,"id":2024,"parameterSlots":2,"returnSlots":1},"@functionDelegateCall_2053":{"entryPoint":425,"id":2053,"parameterSlots":3,"returnSlots":1},"@getAddressSlot_2273":{"entryPoint":561,"id":2273,"parameterSlots":1,"returnSlots":1},"@isContract_1825":{"entryPoint":546,"id":1825,"parameterSlots":1,"returnSlots":1},"@verifyCallResultFromTarget_2092":{"entryPoint":564,"id":2092,"parameterSlots":4,"returnSlots":1},"abi_decode_tuple_t_addresst_bytes_memory_ptr_fromMemory":{"entryPoint":793,"id":null,"parameterSlots":2,"returnSlots":2},"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":999,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":1027,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"copy_memory_to_memory_with_cleanup":{"entryPoint":757,"id":null,"parameterSlots":3,"returnSlots":0},"panic_error_0x41":{"entryPoint":735,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:2931:50","statements":[{"nodeType":"YulBlock","src":"6:3:50","statements":[]},{"body":{"nodeType":"YulBlock","src":"46:95:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"63:1:50","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"70:3:50","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"75:10:50","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"66:3:50"},"nodeType":"YulFunctionCall","src":"66:20:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"56:6:50"},"nodeType":"YulFunctionCall","src":"56:31:50"},"nodeType":"YulExpressionStatement","src":"56:31:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"103:1:50","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"106:4:50","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"96:6:50"},"nodeType":"YulFunctionCall","src":"96:15:50"},"nodeType":"YulExpressionStatement","src":"96:15:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"127:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"130:4:50","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"120:6:50"},"nodeType":"YulFunctionCall","src":"120:15:50"},"nodeType":"YulExpressionStatement","src":"120:15:50"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"14:127:50"},{"body":{"nodeType":"YulBlock","src":"212:184:50","statements":[{"nodeType":"YulVariableDeclaration","src":"222:10:50","value":{"kind":"number","nodeType":"YulLiteral","src":"231:1:50","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"226:1:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"291:63:50","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"316:3:50"},{"name":"i","nodeType":"YulIdentifier","src":"321:1:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"312:3:50"},"nodeType":"YulFunctionCall","src":"312:11:50"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"335:3:50"},{"name":"i","nodeType":"YulIdentifier","src":"340:1:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"331:3:50"},"nodeType":"YulFunctionCall","src":"331:11:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"325:5:50"},"nodeType":"YulFunctionCall","src":"325:18:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"305:6:50"},"nodeType":"YulFunctionCall","src":"305:39:50"},"nodeType":"YulExpressionStatement","src":"305:39:50"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"252:1:50"},{"name":"length","nodeType":"YulIdentifier","src":"255:6:50"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"249:2:50"},"nodeType":"YulFunctionCall","src":"249:13:50"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"263:19:50","statements":[{"nodeType":"YulAssignment","src":"265:15:50","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"274:1:50"},{"kind":"number","nodeType":"YulLiteral","src":"277:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"270:3:50"},"nodeType":"YulFunctionCall","src":"270:10:50"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"265:1:50"}]}]},"pre":{"nodeType":"YulBlock","src":"245:3:50","statements":[]},"src":"241:113:50"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"374:3:50"},{"name":"length","nodeType":"YulIdentifier","src":"379:6:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"370:3:50"},"nodeType":"YulFunctionCall","src":"370:16:50"},{"kind":"number","nodeType":"YulLiteral","src":"388:1:50","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"363:6:50"},"nodeType":"YulFunctionCall","src":"363:27:50"},"nodeType":"YulExpressionStatement","src":"363:27:50"}]},"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"190:3:50","type":""},{"name":"dst","nodeType":"YulTypedName","src":"195:3:50","type":""},{"name":"length","nodeType":"YulTypedName","src":"200:6:50","type":""}],"src":"146:250:50"},{"body":{"nodeType":"YulBlock","src":"508:956:50","statements":[{"body":{"nodeType":"YulBlock","src":"554:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"563:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"566:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"556:6:50"},"nodeType":"YulFunctionCall","src":"556:12:50"},"nodeType":"YulExpressionStatement","src":"556:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"529:7:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"538:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"525:3:50"},"nodeType":"YulFunctionCall","src":"525:23:50"},{"kind":"number","nodeType":"YulLiteral","src":"550:2:50","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"521:3:50"},"nodeType":"YulFunctionCall","src":"521:32:50"},"nodeType":"YulIf","src":"518:52:50"},{"nodeType":"YulVariableDeclaration","src":"579:29:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"598:9:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"592:5:50"},"nodeType":"YulFunctionCall","src":"592:16:50"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"583:5:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"671:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"680:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"683:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"673:6:50"},"nodeType":"YulFunctionCall","src":"673:12:50"},"nodeType":"YulExpressionStatement","src":"673:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"630:5:50"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"641:5:50"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"656:3:50","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"661:1:50","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"652:3:50"},"nodeType":"YulFunctionCall","src":"652:11:50"},{"kind":"number","nodeType":"YulLiteral","src":"665:1:50","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"648:3:50"},"nodeType":"YulFunctionCall","src":"648:19:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"637:3:50"},"nodeType":"YulFunctionCall","src":"637:31:50"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"627:2:50"},"nodeType":"YulFunctionCall","src":"627:42:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"620:6:50"},"nodeType":"YulFunctionCall","src":"620:50:50"},"nodeType":"YulIf","src":"617:70:50"},{"nodeType":"YulAssignment","src":"696:15:50","value":{"name":"value","nodeType":"YulIdentifier","src":"706:5:50"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"696:6:50"}]},{"nodeType":"YulVariableDeclaration","src":"720:39:50","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"744:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"755:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"740:3:50"},"nodeType":"YulFunctionCall","src":"740:18:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"734:5:50"},"nodeType":"YulFunctionCall","src":"734:25:50"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"724:6:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"768:28:50","value":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"786:2:50","type":"","value":"64"},{"kind":"number","nodeType":"YulLiteral","src":"790:1:50","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"782:3:50"},"nodeType":"YulFunctionCall","src":"782:10:50"},{"kind":"number","nodeType":"YulLiteral","src":"794:1:50","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"778:3:50"},"nodeType":"YulFunctionCall","src":"778:18:50"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"772:2:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"823:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"832:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"835:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"825:6:50"},"nodeType":"YulFunctionCall","src":"825:12:50"},"nodeType":"YulExpressionStatement","src":"825:12:50"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"811:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"819:2:50"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"808:2:50"},"nodeType":"YulFunctionCall","src":"808:14:50"},"nodeType":"YulIf","src":"805:34:50"},{"nodeType":"YulVariableDeclaration","src":"848:32:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"862:9:50"},{"name":"offset","nodeType":"YulIdentifier","src":"873:6:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"858:3:50"},"nodeType":"YulFunctionCall","src":"858:22:50"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"852:2:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"928:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"937:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"940:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"930:6:50"},"nodeType":"YulFunctionCall","src":"930:12:50"},"nodeType":"YulExpressionStatement","src":"930:12:50"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"907:2:50"},{"kind":"number","nodeType":"YulLiteral","src":"911:4:50","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"903:3:50"},"nodeType":"YulFunctionCall","src":"903:13:50"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"918:7:50"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"899:3:50"},"nodeType":"YulFunctionCall","src":"899:27:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"892:6:50"},"nodeType":"YulFunctionCall","src":"892:35:50"},"nodeType":"YulIf","src":"889:55:50"},{"nodeType":"YulVariableDeclaration","src":"953:19:50","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"969:2:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"963:5:50"},"nodeType":"YulFunctionCall","src":"963:9:50"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"957:2:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"995:22:50","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"997:16:50"},"nodeType":"YulFunctionCall","src":"997:18:50"},"nodeType":"YulExpressionStatement","src":"997:18:50"}]},"condition":{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"987:2:50"},{"name":"_1","nodeType":"YulIdentifier","src":"991:2:50"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"984:2:50"},"nodeType":"YulFunctionCall","src":"984:10:50"},"nodeType":"YulIf","src":"981:36:50"},{"nodeType":"YulVariableDeclaration","src":"1026:17:50","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1040:2:50","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"1036:3:50"},"nodeType":"YulFunctionCall","src":"1036:7:50"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"1030:2:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"1052:23:50","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1072:2:50","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1066:5:50"},"nodeType":"YulFunctionCall","src":"1066:9:50"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"1056:6:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"1084:71:50","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1106:6:50"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"1130:2:50"},{"kind":"number","nodeType":"YulLiteral","src":"1134:4:50","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1126:3:50"},"nodeType":"YulFunctionCall","src":"1126:13:50"},{"name":"_4","nodeType":"YulIdentifier","src":"1141:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1122:3:50"},"nodeType":"YulFunctionCall","src":"1122:22:50"},{"kind":"number","nodeType":"YulLiteral","src":"1146:2:50","type":"","value":"63"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1118:3:50"},"nodeType":"YulFunctionCall","src":"1118:31:50"},{"name":"_4","nodeType":"YulIdentifier","src":"1151:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1114:3:50"},"nodeType":"YulFunctionCall","src":"1114:40:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1102:3:50"},"nodeType":"YulFunctionCall","src":"1102:53:50"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"1088:10:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"1214:22:50","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"1216:16:50"},"nodeType":"YulFunctionCall","src":"1216:18:50"},"nodeType":"YulExpressionStatement","src":"1216:18:50"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"1173:10:50"},{"name":"_1","nodeType":"YulIdentifier","src":"1185:2:50"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1170:2:50"},"nodeType":"YulFunctionCall","src":"1170:18:50"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"1193:10:50"},{"name":"memPtr","nodeType":"YulIdentifier","src":"1205:6:50"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"1190:2:50"},"nodeType":"YulFunctionCall","src":"1190:22:50"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"1167:2:50"},"nodeType":"YulFunctionCall","src":"1167:46:50"},"nodeType":"YulIf","src":"1164:72:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1252:2:50","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"1256:10:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1245:6:50"},"nodeType":"YulFunctionCall","src":"1245:22:50"},"nodeType":"YulExpressionStatement","src":"1245:22:50"},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1283:6:50"},{"name":"_3","nodeType":"YulIdentifier","src":"1291:2:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1276:6:50"},"nodeType":"YulFunctionCall","src":"1276:18:50"},"nodeType":"YulExpressionStatement","src":"1276:18:50"},{"body":{"nodeType":"YulBlock","src":"1340:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1349:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1352:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1342:6:50"},"nodeType":"YulFunctionCall","src":"1342:12:50"},"nodeType":"YulExpressionStatement","src":"1342:12:50"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"1317:2:50"},{"name":"_3","nodeType":"YulIdentifier","src":"1321:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1313:3:50"},"nodeType":"YulFunctionCall","src":"1313:11:50"},{"kind":"number","nodeType":"YulLiteral","src":"1326:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1309:3:50"},"nodeType":"YulFunctionCall","src":"1309:20:50"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1331:7:50"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1306:2:50"},"nodeType":"YulFunctionCall","src":"1306:33:50"},"nodeType":"YulIf","src":"1303:53:50"},{"expression":{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"1404:2:50"},{"kind":"number","nodeType":"YulLiteral","src":"1408:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1400:3:50"},"nodeType":"YulFunctionCall","src":"1400:11:50"},{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1417:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"1425:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1413:3:50"},"nodeType":"YulFunctionCall","src":"1413:15:50"},{"name":"_3","nodeType":"YulIdentifier","src":"1430:2:50"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"1365:34:50"},"nodeType":"YulFunctionCall","src":"1365:68:50"},"nodeType":"YulExpressionStatement","src":"1365:68:50"},{"nodeType":"YulAssignment","src":"1442:16:50","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"1452:6:50"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1442:6:50"}]}]},"name":"abi_decode_tuple_t_addresst_bytes_memory_ptr_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"466:9:50","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"477:7:50","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"489:6:50","type":""},{"name":"value1","nodeType":"YulTypedName","src":"497:6:50","type":""}],"src":"401:1063:50"},{"body":{"nodeType":"YulBlock","src":"1643:235:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1660:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"1671:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1653:6:50"},"nodeType":"YulFunctionCall","src":"1653:21:50"},"nodeType":"YulExpressionStatement","src":"1653:21:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1694:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"1705:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1690:3:50"},"nodeType":"YulFunctionCall","src":"1690:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"1710:2:50","type":"","value":"45"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1683:6:50"},"nodeType":"YulFunctionCall","src":"1683:30:50"},"nodeType":"YulExpressionStatement","src":"1683:30:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1733:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"1744:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1729:3:50"},"nodeType":"YulFunctionCall","src":"1729:18:50"},{"hexValue":"455243313936373a206e657720696d706c656d656e746174696f6e206973206e","kind":"string","nodeType":"YulLiteral","src":"1749:34:50","type":"","value":"ERC1967: new implementation is n"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1722:6:50"},"nodeType":"YulFunctionCall","src":"1722:62:50"},"nodeType":"YulExpressionStatement","src":"1722:62:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1804:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"1815:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1800:3:50"},"nodeType":"YulFunctionCall","src":"1800:18:50"},{"hexValue":"6f74206120636f6e7472616374","kind":"string","nodeType":"YulLiteral","src":"1820:15:50","type":"","value":"ot a contract"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1793:6:50"},"nodeType":"YulFunctionCall","src":"1793:43:50"},"nodeType":"YulExpressionStatement","src":"1793:43:50"},{"nodeType":"YulAssignment","src":"1845:27:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1857:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"1868:3:50","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1853:3:50"},"nodeType":"YulFunctionCall","src":"1853:19:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1845:4:50"}]}]},"name":"abi_encode_tuple_t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1620:9:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1634:4:50","type":""}],"src":"1469:409:50"},{"body":{"nodeType":"YulBlock","src":"2020:150:50","statements":[{"nodeType":"YulVariableDeclaration","src":"2030:27:50","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2050:6:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2044:5:50"},"nodeType":"YulFunctionCall","src":"2044:13:50"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"2034:6:50","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2105:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"2113:4:50","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2101:3:50"},"nodeType":"YulFunctionCall","src":"2101:17:50"},{"name":"pos","nodeType":"YulIdentifier","src":"2120:3:50"},{"name":"length","nodeType":"YulIdentifier","src":"2125:6:50"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"2066:34:50"},"nodeType":"YulFunctionCall","src":"2066:66:50"},"nodeType":"YulExpressionStatement","src":"2066:66:50"},{"nodeType":"YulAssignment","src":"2141:23:50","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2152:3:50"},{"name":"length","nodeType":"YulIdentifier","src":"2157:6:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2148:3:50"},"nodeType":"YulFunctionCall","src":"2148:16:50"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"2141:3:50"}]}]},"name":"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1996:3:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"2001:6:50","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"2012:3:50","type":""}],"src":"1883:287:50"},{"body":{"nodeType":"YulBlock","src":"2349:179:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2366:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"2377:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2359:6:50"},"nodeType":"YulFunctionCall","src":"2359:21:50"},"nodeType":"YulExpressionStatement","src":"2359:21:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2400:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"2411:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2396:3:50"},"nodeType":"YulFunctionCall","src":"2396:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"2416:2:50","type":"","value":"29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2389:6:50"},"nodeType":"YulFunctionCall","src":"2389:30:50"},"nodeType":"YulExpressionStatement","src":"2389:30:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2439:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"2450:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2435:3:50"},"nodeType":"YulFunctionCall","src":"2435:18:50"},{"hexValue":"416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374","kind":"string","nodeType":"YulLiteral","src":"2455:31:50","type":"","value":"Address: call to non-contract"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2428:6:50"},"nodeType":"YulFunctionCall","src":"2428:59:50"},"nodeType":"YulExpressionStatement","src":"2428:59:50"},{"nodeType":"YulAssignment","src":"2496:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2508:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"2519:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2504:3:50"},"nodeType":"YulFunctionCall","src":"2504:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2496:4:50"}]}]},"name":"abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2326:9:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2340:4:50","type":""}],"src":"2175:353:50"},{"body":{"nodeType":"YulBlock","src":"2654:275:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2671:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"2682:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2664:6:50"},"nodeType":"YulFunctionCall","src":"2664:21:50"},"nodeType":"YulExpressionStatement","src":"2664:21:50"},{"nodeType":"YulVariableDeclaration","src":"2694:27:50","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2714:6:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2708:5:50"},"nodeType":"YulFunctionCall","src":"2708:13:50"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"2698:6:50","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2741:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"2752:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2737:3:50"},"nodeType":"YulFunctionCall","src":"2737:18:50"},{"name":"length","nodeType":"YulIdentifier","src":"2757:6:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2730:6:50"},"nodeType":"YulFunctionCall","src":"2730:34:50"},"nodeType":"YulExpressionStatement","src":"2730:34:50"},{"expression":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2812:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"2820:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2808:3:50"},"nodeType":"YulFunctionCall","src":"2808:15:50"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2829:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"2840:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2825:3:50"},"nodeType":"YulFunctionCall","src":"2825:18:50"},{"name":"length","nodeType":"YulIdentifier","src":"2845:6:50"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"2773:34:50"},"nodeType":"YulFunctionCall","src":"2773:79:50"},"nodeType":"YulExpressionStatement","src":"2773:79:50"},{"nodeType":"YulAssignment","src":"2861:62:50","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2877:9:50"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"2896:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"2904:2:50","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2892:3:50"},"nodeType":"YulFunctionCall","src":"2892:15:50"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2913:2:50","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"2909:3:50"},"nodeType":"YulFunctionCall","src":"2909:7:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2888:3:50"},"nodeType":"YulFunctionCall","src":"2888:29:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2873:3:50"},"nodeType":"YulFunctionCall","src":"2873:45:50"},{"kind":"number","nodeType":"YulLiteral","src":"2920:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2869:3:50"},"nodeType":"YulFunctionCall","src":"2869:54:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2861:4:50"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2623:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"2634:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2645:4:50","type":""}],"src":"2533:396:50"}]},"contents":"{\n { }\n function panic_error_0x41()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function copy_memory_to_memory_with_cleanup(src, dst, length)\n {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n mstore(add(dst, length), 0)\n }\n function abi_decode_tuple_t_addresst_bytes_memory_ptr_fromMemory(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n let value := mload(headStart)\n if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n value0 := value\n let offset := mload(add(headStart, 32))\n let _1 := sub(shl(64, 1), 1)\n if gt(offset, _1) { revert(0, 0) }\n let _2 := add(headStart, offset)\n if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n let _3 := mload(_2)\n if gt(_3, _1) { panic_error_0x41() }\n let _4 := not(31)\n let memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n mstore(memPtr, _3)\n if gt(add(add(_2, _3), 32), dataEnd) { revert(0, 0) }\n copy_memory_to_memory_with_cleanup(add(_2, 32), add(memPtr, 32), _3)\n value1 := memPtr\n }\n function abi_encode_tuple_t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 45)\n mstore(add(headStart, 64), \"ERC1967: new implementation is n\")\n mstore(add(headStart, 96), \"ot a contract\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n {\n let length := mload(value0)\n copy_memory_to_memory_with_cleanup(add(value0, 0x20), pos, length)\n end := add(pos, length)\n }\n function abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 29)\n mstore(add(headStart, 64), \"Address: call to non-contract\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n mstore(headStart, 32)\n let length := mload(value0)\n mstore(add(headStart, 32), length)\n copy_memory_to_memory_with_cleanup(add(value0, 32), add(headStart, 64), length)\n tail := add(add(headStart, and(add(length, 31), not(31))), 64)\n }\n}","id":50,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60806040526040516106fe3803806106fe83398101604081905261002291610319565b61002e82826000610035565b5050610436565b61003e8361006b565b60008251118061004b5750805b156100665761006483836100ab60201b6100291760201c565b505b505050565b610074816100d7565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606100d083836040518060600160405280602781526020016106d7602791396101a9565b9392505050565b6100ea8161022260201b6100551760201c565b6101515760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b806101887f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61023160201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6060600080856001600160a01b0316856040516101c691906103e7565b600060405180830381855af49150503d8060008114610201576040519150601f19603f3d011682016040523d82523d6000602084013e610206565b606091505b50909250905061021886838387610234565b9695505050505050565b6001600160a01b03163b151590565b90565b606083156102a357825160000361029c576001600160a01b0385163b61029c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610148565b50816102ad565b6102ad83836102b5565b949350505050565b8151156102c55781518083602001fd5b8060405162461bcd60e51b81526004016101489190610403565b634e487b7160e01b600052604160045260246000fd5b60005b838110156103105781810151838201526020016102f8565b50506000910152565b6000806040838503121561032c57600080fd5b82516001600160a01b038116811461034357600080fd5b60208401519092506001600160401b038082111561036057600080fd5b818501915085601f83011261037457600080fd5b815181811115610386576103866102df565b604051601f8201601f19908116603f011681019083821181831017156103ae576103ae6102df565b816040528281528860208487010111156103c757600080fd5b6103d88360208301602088016102f5565b80955050505050509250929050565b600082516103f98184602087016102f5565b9190910192915050565b60208152600082518060208401526104228160408501602087016102f5565b601f01601f19169190910160400192915050565b610292806104456000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b61009f565b565b606061004e838360405180606001604052806027815260200161025f602791396100c3565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e8080156100be573d6000f35b3d6000fd5b6060600080856001600160a01b0316856040516100e0919061020f565b600060405180830381855af49150503d806000811461011b576040519150601f19603f3d011682016040523d82523d6000602084013e610120565b606091505b50915091506101318683838761013b565b9695505050505050565b606083156101af5782516000036101a8576001600160a01b0385163b6101a85760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b50816101b9565b6101b983836101c1565b949350505050565b8151156101d15781518083602001fd5b8060405162461bcd60e51b815260040161019f919061022b565b60005b838110156102065781810151838201526020016101ee565b50506000910152565b600082516102218184602087016101eb565b9190910192915050565b602081526000825180602084015261024a8160408501602087016101eb565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH2 0x6FE CODESIZE SUB DUP1 PUSH2 0x6FE DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x22 SWAP2 PUSH2 0x319 JUMP JUMPDEST PUSH2 0x2E DUP3 DUP3 PUSH1 0x0 PUSH2 0x35 JUMP JUMPDEST POP POP PUSH2 0x436 JUMP JUMPDEST PUSH2 0x3E DUP4 PUSH2 0x6B JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD GT DUP1 PUSH2 0x4B JUMPI POP DUP1 JUMPDEST ISZERO PUSH2 0x66 JUMPI PUSH2 0x64 DUP4 DUP4 PUSH2 0xAB PUSH1 0x20 SHL PUSH2 0x29 OR PUSH1 0x20 SHR JUMP JUMPDEST POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x74 DUP2 PUSH2 0xD7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xD0 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x6D7 PUSH1 0x27 SWAP2 CODECOPY PUSH2 0x1A9 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xEA DUP2 PUSH2 0x222 PUSH1 0x20 SHL PUSH2 0x55 OR PUSH1 0x20 SHR JUMP JUMPDEST PUSH2 0x151 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313936373A206E657720696D706C656D656E746174696F6E206973206E PUSH1 0x44 DUP3 ADD MSTORE PUSH13 0x1BDD08184818DBDB9D1C9858DD PUSH1 0x9A SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH2 0x188 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC PUSH1 0x0 SHL PUSH2 0x231 PUSH1 0x20 SHL PUSH2 0x64 OR PUSH1 0x20 SHR JUMP JUMPDEST DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0x1C6 SWAP2 SWAP1 PUSH2 0x3E7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x201 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x206 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x218 DUP7 DUP4 DUP4 DUP8 PUSH2 0x234 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x2A3 JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0x29C JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0x29C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x148 JUMP JUMPDEST POP DUP2 PUSH2 0x2AD JUMP JUMPDEST PUSH2 0x2AD DUP4 DUP4 PUSH2 0x2B5 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x2C5 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x148 SWAP2 SWAP1 PUSH2 0x403 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x310 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2F8 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x32C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x343 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x360 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x374 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x386 JUMPI PUSH2 0x386 PUSH2 0x2DF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x3AE JUMPI PUSH2 0x3AE PUSH2 0x2DF JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x3C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3D8 DUP4 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x2F5 JUMP JUMPDEST DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x3F9 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x2F5 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x422 DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x2F5 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x292 DUP1 PUSH2 0x445 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLDATASIZE PUSH2 0x13 JUMPI PUSH2 0x11 PUSH2 0x17 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x11 JUMPDEST PUSH2 0x27 PUSH2 0x22 PUSH2 0x67 JUMP JUMPDEST PUSH2 0x9F JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x60 PUSH2 0x4E DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x25F PUSH1 0x27 SWAP2 CODECOPY PUSH2 0xC3 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9A PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 DUP1 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE PUSH1 0x0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH2 0xBE JUMPI RETURNDATASIZE PUSH1 0x0 RETURN JUMPDEST RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0xE0 SWAP2 SWAP1 PUSH2 0x20F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x11B JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x120 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x131 DUP7 DUP4 DUP4 DUP8 PUSH2 0x13B JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x1AF JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0x1A8 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0x1A8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP DUP2 PUSH2 0x1B9 JUMP JUMPDEST PUSH2 0x1B9 DUP4 DUP4 PUSH2 0x1C1 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x1D1 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x19F SWAP2 SWAP1 PUSH2 0x22B JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x206 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1EE JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x221 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x1EB JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x24A DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x1EB JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A164 PUSH20 0x6F6C6343000811000A416464726573733A206C6F PUSH24 0x2D6C6576656C2064656C65676174652063616C6C20666169 PUSH13 0x65640000000000000000000000 ","sourceMap":"567:723:15:-:0;;;958:112;;;;;;;;;;;;;;;;;;:::i;:::-;1024:39;1042:6;1050:5;1057;1024:17;:39::i;:::-;958:112;;567:723;;2057:265:16;2165:29;2176:17;2165:10;:29::i;:::-;2222:1;2208:4;:11;:15;:28;;;;2227:9;2208:28;2204:112;;;2252:53;2281:17;2300:4;2252:28;;;;;:53;;:::i;:::-;;2204:112;2057:265;;;:::o;1771:152::-;1837:37;1856:17;1837:18;:37::i;:::-;1889:27;;-1:-1:-1;;;;;1889:27:16;;;;;;;;1771:152;:::o;6674:198:19:-;6757:12;6788:77;6809:6;6817:4;6788:77;;;;;;;;;;;;;;;;;:20;:77::i;:::-;6781:84;6674:198;-1:-1:-1;;;6674:198:19:o;1406:259:16:-;1487:37;1506:17;1487:18;;;;;:37;;:::i;:::-;1479:95;;;;-1:-1:-1;;;1479:95:16;;1671:2:50;1479:95:16;;;1653:21:50;1710:2;1690:18;;;1683:30;1749:34;1729:18;;;1722:62;-1:-1:-1;;;1800:18:50;;;1793:43;1853:19;;1479:95:16;;;;;;;;;1641:17;1584:48;1030:66;1611:20;;1584:26;;;;;:48;;:::i;:::-;:74;;-1:-1:-1;;;;;;1584:74:16;-1:-1:-1;;;;;1584:74:16;;;;;;;;;;-1:-1:-1;1406:259:16:o;7058:325:19:-;7199:12;7224;7238:23;7265:6;-1:-1:-1;;;;;7265:19:19;7285:4;7265:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7223:67:19;;-1:-1:-1;7223:67:19;-1:-1:-1;7307:69:19;7334:6;7223:67;;7363:12;7307:26;:69::i;:::-;7300:76;7058:325;-1:-1:-1;;;;;;7058:325:19:o;1412:320::-;-1:-1:-1;;;;;1702:19:19;;:23;;;1412:320::o;1859:190:22:-;2029:4;1859:190::o;7671:628:19:-;7851:12;7879:7;7875:418;;;7906:10;:17;7927:1;7906:22;7902:286;;-1:-1:-1;;;;;1702:19:19;;;8113:60;;;;-1:-1:-1;;;8113:60:19;;2377:2:50;8113:60:19;;;2359:21:50;2416:2;2396:18;;;2389:30;2455:31;2435:18;;;2428:59;2504:18;;8113:60:19;2175:353:50;8113:60:19;-1:-1:-1;8208:10:19;8201:17;;7875:418;8249:33;8257:10;8269:12;8249:7;:33::i;:::-;7671:628;;;;;;:::o;8821:540::-;8980:17;;:21;8976:379;;9208:10;9202:17;9264:15;9251:10;9247:2;9243:19;9236:44;8976:379;9331:12;9324:20;;-1:-1:-1;;;9324:20:19;;;;;;;;:::i;14:127:50:-;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:250;231:1;241:113;255:6;252:1;249:13;241:113;;;331:11;;;325:18;312:11;;;305:39;277:2;270:10;241:113;;;-1:-1:-1;;388:1:50;370:16;;363:27;146:250::o;401:1063::-;489:6;497;550:2;538:9;529:7;525:23;521:32;518:52;;;566:1;563;556:12;518:52;592:16;;-1:-1:-1;;;;;637:31:50;;627:42;;617:70;;683:1;680;673:12;617:70;755:2;740:18;;734:25;706:5;;-1:-1:-1;;;;;;808:14:50;;;805:34;;;835:1;832;825:12;805:34;873:6;862:9;858:22;848:32;;918:7;911:4;907:2;903:13;899:27;889:55;;940:1;937;930:12;889:55;969:2;963:9;991:2;987;984:10;981:36;;;997:18;;:::i;:::-;1072:2;1066:9;1040:2;1126:13;;-1:-1:-1;;1122:22:50;;;1146:2;1118:31;1114:40;1102:53;;;1170:18;;;1190:22;;;1167:46;1164:72;;;1216:18;;:::i;:::-;1256:10;1252:2;1245:22;1291:2;1283:6;1276:18;1331:7;1326:2;1321;1317;1313:11;1309:20;1306:33;1303:53;;;1352:1;1349;1342:12;1303:53;1365:68;1430:2;1425;1417:6;1413:15;1408:2;1404;1400:11;1365:68;:::i;:::-;1452:6;1442:16;;;;;;;401:1063;;;;;:::o;1883:287::-;2012:3;2050:6;2044:13;2066:66;2125:6;2120:3;2113:4;2105:6;2101:17;2066:66;:::i;:::-;2148:16;;;;;1883:287;-1:-1:-1;;1883:287:50:o;2533:396::-;2682:2;2671:9;2664:21;2645:4;2714:6;2708:13;2757:6;2752:2;2741:9;2737:18;2730:34;2773:79;2845:6;2840:2;2829:9;2825:18;2820:2;2812:6;2808:15;2773:79;:::i;:::-;2913:2;2892:15;-1:-1:-1;;2888:29:50;2873:45;;;;2920:2;2869:54;;2533:396;-1:-1:-1;;2533:396:50:o;:::-;567:723:15;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_1783":{"entryPoint":null,"id":1783,"parameterSlots":0,"returnSlots":0},"@_1791":{"entryPoint":null,"id":1791,"parameterSlots":0,"returnSlots":0},"@_beforeFallback_1796":{"entryPoint":null,"id":1796,"parameterSlots":0,"returnSlots":0},"@_delegate_1756":{"entryPoint":159,"id":1756,"parameterSlots":1,"returnSlots":0},"@_fallback_1775":{"entryPoint":23,"id":1775,"parameterSlots":0,"returnSlots":0},"@_getImplementation_1471":{"entryPoint":null,"id":1471,"parameterSlots":0,"returnSlots":1},"@_implementation_1440":{"entryPoint":103,"id":1440,"parameterSlots":0,"returnSlots":1},"@_revert_2136":{"entryPoint":449,"id":2136,"parameterSlots":2,"returnSlots":0},"@functionDelegateCall_2024":{"entryPoint":41,"id":2024,"parameterSlots":2,"returnSlots":1},"@functionDelegateCall_2053":{"entryPoint":195,"id":2053,"parameterSlots":3,"returnSlots":1},"@getAddressSlot_2273":{"entryPoint":100,"id":2273,"parameterSlots":1,"returnSlots":1},"@isContract_1825":{"entryPoint":85,"id":1825,"parameterSlots":1,"returnSlots":1},"@verifyCallResultFromTarget_2092":{"entryPoint":315,"id":2092,"parameterSlots":4,"returnSlots":1},"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":527,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":555,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"copy_memory_to_memory_with_cleanup":{"entryPoint":491,"id":null,"parameterSlots":3,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:1317:50","statements":[{"nodeType":"YulBlock","src":"6:3:50","statements":[]},{"body":{"nodeType":"YulBlock","src":"80:184:50","statements":[{"nodeType":"YulVariableDeclaration","src":"90:10:50","value":{"kind":"number","nodeType":"YulLiteral","src":"99:1:50","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"94:1:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"159:63:50","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"184:3:50"},{"name":"i","nodeType":"YulIdentifier","src":"189:1:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"180:3:50"},"nodeType":"YulFunctionCall","src":"180:11:50"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"203:3:50"},{"name":"i","nodeType":"YulIdentifier","src":"208:1:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"199:3:50"},"nodeType":"YulFunctionCall","src":"199:11:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"193:5:50"},"nodeType":"YulFunctionCall","src":"193:18:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"173:6:50"},"nodeType":"YulFunctionCall","src":"173:39:50"},"nodeType":"YulExpressionStatement","src":"173:39:50"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"120:1:50"},{"name":"length","nodeType":"YulIdentifier","src":"123:6:50"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"117:2:50"},"nodeType":"YulFunctionCall","src":"117:13:50"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"131:19:50","statements":[{"nodeType":"YulAssignment","src":"133:15:50","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"142:1:50"},{"kind":"number","nodeType":"YulLiteral","src":"145:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"138:3:50"},"nodeType":"YulFunctionCall","src":"138:10:50"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"133:1:50"}]}]},"pre":{"nodeType":"YulBlock","src":"113:3:50","statements":[]},"src":"109:113:50"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"242:3:50"},{"name":"length","nodeType":"YulIdentifier","src":"247:6:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"238:3:50"},"nodeType":"YulFunctionCall","src":"238:16:50"},{"kind":"number","nodeType":"YulLiteral","src":"256:1:50","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"231:6:50"},"nodeType":"YulFunctionCall","src":"231:27:50"},"nodeType":"YulExpressionStatement","src":"231:27:50"}]},"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"58:3:50","type":""},{"name":"dst","nodeType":"YulTypedName","src":"63:3:50","type":""},{"name":"length","nodeType":"YulTypedName","src":"68:6:50","type":""}],"src":"14:250:50"},{"body":{"nodeType":"YulBlock","src":"406:150:50","statements":[{"nodeType":"YulVariableDeclaration","src":"416:27:50","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"436:6:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"430:5:50"},"nodeType":"YulFunctionCall","src":"430:13:50"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"420:6:50","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"491:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"499:4:50","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"487:3:50"},"nodeType":"YulFunctionCall","src":"487:17:50"},{"name":"pos","nodeType":"YulIdentifier","src":"506:3:50"},{"name":"length","nodeType":"YulIdentifier","src":"511:6:50"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"452:34:50"},"nodeType":"YulFunctionCall","src":"452:66:50"},"nodeType":"YulExpressionStatement","src":"452:66:50"},{"nodeType":"YulAssignment","src":"527:23:50","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"538:3:50"},{"name":"length","nodeType":"YulIdentifier","src":"543:6:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"534:3:50"},"nodeType":"YulFunctionCall","src":"534:16:50"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"527:3:50"}]}]},"name":"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"382:3:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"387:6:50","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"398:3:50","type":""}],"src":"269:287:50"},{"body":{"nodeType":"YulBlock","src":"735:179:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"752:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"763:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"745:6:50"},"nodeType":"YulFunctionCall","src":"745:21:50"},"nodeType":"YulExpressionStatement","src":"745:21:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"786:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"797:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"782:3:50"},"nodeType":"YulFunctionCall","src":"782:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"802:2:50","type":"","value":"29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"775:6:50"},"nodeType":"YulFunctionCall","src":"775:30:50"},"nodeType":"YulExpressionStatement","src":"775:30:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"825:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"836:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"821:3:50"},"nodeType":"YulFunctionCall","src":"821:18:50"},{"hexValue":"416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374","kind":"string","nodeType":"YulLiteral","src":"841:31:50","type":"","value":"Address: call to non-contract"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"814:6:50"},"nodeType":"YulFunctionCall","src":"814:59:50"},"nodeType":"YulExpressionStatement","src":"814:59:50"},{"nodeType":"YulAssignment","src":"882:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"894:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"905:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"890:3:50"},"nodeType":"YulFunctionCall","src":"890:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"882:4:50"}]}]},"name":"abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"712:9:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"726:4:50","type":""}],"src":"561:353:50"},{"body":{"nodeType":"YulBlock","src":"1040:275:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1057:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"1068:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1050:6:50"},"nodeType":"YulFunctionCall","src":"1050:21:50"},"nodeType":"YulExpressionStatement","src":"1050:21:50"},{"nodeType":"YulVariableDeclaration","src":"1080:27:50","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1100:6:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1094:5:50"},"nodeType":"YulFunctionCall","src":"1094:13:50"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"1084:6:50","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1127:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"1138:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1123:3:50"},"nodeType":"YulFunctionCall","src":"1123:18:50"},{"name":"length","nodeType":"YulIdentifier","src":"1143:6:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1116:6:50"},"nodeType":"YulFunctionCall","src":"1116:34:50"},"nodeType":"YulExpressionStatement","src":"1116:34:50"},{"expression":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1198:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"1206:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1194:3:50"},"nodeType":"YulFunctionCall","src":"1194:15:50"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1215:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"1226:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1211:3:50"},"nodeType":"YulFunctionCall","src":"1211:18:50"},{"name":"length","nodeType":"YulIdentifier","src":"1231:6:50"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"1159:34:50"},"nodeType":"YulFunctionCall","src":"1159:79:50"},"nodeType":"YulExpressionStatement","src":"1159:79:50"},{"nodeType":"YulAssignment","src":"1247:62:50","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1263:9:50"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"1282:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"1290:2:50","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1278:3:50"},"nodeType":"YulFunctionCall","src":"1278:15:50"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1299:2:50","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"1295:3:50"},"nodeType":"YulFunctionCall","src":"1295:7:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1274:3:50"},"nodeType":"YulFunctionCall","src":"1274:29:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1259:3:50"},"nodeType":"YulFunctionCall","src":"1259:45:50"},{"kind":"number","nodeType":"YulLiteral","src":"1306:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1255:3:50"},"nodeType":"YulFunctionCall","src":"1255:54:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1247:4:50"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1009:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1020:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1031:4:50","type":""}],"src":"919:396:50"}]},"contents":"{\n { }\n function copy_memory_to_memory_with_cleanup(src, dst, length)\n {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n mstore(add(dst, length), 0)\n }\n function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n {\n let length := mload(value0)\n copy_memory_to_memory_with_cleanup(add(value0, 0x20), pos, length)\n end := add(pos, length)\n }\n function abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 29)\n mstore(add(headStart, 64), \"Address: call to non-contract\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n mstore(headStart, 32)\n let length := mload(value0)\n mstore(add(headStart, 32), length)\n copy_memory_to_memory_with_cleanup(add(value0, 32), add(headStart, 64), length)\n tail := add(add(headStart, and(add(length, 31), not(31))), 64)\n }\n}","id":50,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"60806040523661001357610011610017565b005b6100115b610027610022610067565b61009f565b565b606061004e838360405180606001604052806027815260200161025f602791396100c3565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e8080156100be573d6000f35b3d6000fd5b6060600080856001600160a01b0316856040516100e0919061020f565b600060405180830381855af49150503d806000811461011b576040519150601f19603f3d011682016040523d82523d6000602084013e610120565b606091505b50915091506101318683838761013b565b9695505050505050565b606083156101af5782516000036101a8576001600160a01b0385163b6101a85760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b50816101b9565b6101b983836101c1565b949350505050565b8151156101d15781518083602001fd5b8060405162461bcd60e51b815260040161019f919061022b565b60005b838110156102065781810151838201526020016101ee565b50506000910152565b600082516102218184602087016101eb565b9190910192915050565b602081526000825180602084015261024a8160408501602087016101eb565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLDATASIZE PUSH2 0x13 JUMPI PUSH2 0x11 PUSH2 0x17 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x11 JUMPDEST PUSH2 0x27 PUSH2 0x22 PUSH2 0x67 JUMP JUMPDEST PUSH2 0x9F JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x60 PUSH2 0x4E DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x25F PUSH1 0x27 SWAP2 CODECOPY PUSH2 0xC3 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9A PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 DUP1 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE PUSH1 0x0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH2 0xBE JUMPI RETURNDATASIZE PUSH1 0x0 RETURN JUMPDEST RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0xE0 SWAP2 SWAP1 PUSH2 0x20F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x11B JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x120 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x131 DUP7 DUP4 DUP4 DUP8 PUSH2 0x13B JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x1AF JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0x1A8 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0x1A8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP DUP2 PUSH2 0x1B9 JUMP JUMPDEST PUSH2 0x1B9 DUP4 DUP4 PUSH2 0x1C1 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x1D1 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x19F SWAP2 SWAP1 PUSH2 0x22B JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x206 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1EE JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x221 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x1EB JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x24A DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x1EB JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A164 PUSH20 0x6F6C6343000811000A0000000000000000000000 ","sourceMap":"567:723:15:-:0;;;;;;2898:11:17;:9;:11::i;:::-;567:723:15;;2675:11:17;2322:110;2397:28;2407:17;:15;:17::i;:::-;2397:9;:28::i;:::-;2322:110::o;6674:198:19:-;6757:12;6788:77;6809:6;6817:4;6788:77;;;;;;;;;;;;;;;;;:20;:77::i;:::-;6781:84;6674:198;-1:-1:-1;;;6674:198:19:o;1412:320::-;-1:-1:-1;;;;;1702:19:19;;:23;;;1412:320::o;1859:190:22:-;2029:4;1859:190::o;1148:140:15:-;1215:12;1246:35;1030:66:16;1254:54;-1:-1:-1;;;;;1254:54:16;;1175:140;1246:35:15;1239:42;;1148:140;:::o;948:895:17:-;1286:14;1283:1;1280;1267:34;1500:1;1497;1481:14;1478:1;1462:14;1455:5;1442:60;1576:16;1573:1;1570;1555:38;1614:6;1681:66;;;;1796:16;1793:1;1786:27;1681:66;1716:16;1713:1;1706:27;7058:325:19;7199:12;7224;7238:23;7265:6;-1:-1:-1;;;;;7265:19:19;7285:4;7265:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7223:67;;;;7307:69;7334:6;7342:7;7351:10;7363:12;7307:26;:69::i;:::-;7300:76;7058:325;-1:-1:-1;;;;;;7058:325:19:o;7671:628::-;7851:12;7879:7;7875:418;;;7906:10;:17;7927:1;7906:22;7902:286;;-1:-1:-1;;;;;1702:19:19;;;8113:60;;;;-1:-1:-1;;;8113:60:19;;763:2:50;8113:60:19;;;745:21:50;802:2;782:18;;;775:30;841:31;821:18;;;814:59;890:18;;8113:60:19;;;;;;;;;-1:-1:-1;8208:10:19;8201:17;;7875:418;8249:33;8257:10;8269:12;8249:7;:33::i;:::-;7671:628;;;;;;:::o;8821:540::-;8980:17;;:21;8976:379;;9208:10;9202:17;9264:15;9251:10;9247:2;9243:19;9236:44;8976:379;9331:12;9324:20;;-1:-1:-1;;;9324:20:19;;;;;;;;:::i;14:250:50:-;99:1;109:113;123:6;120:1;117:13;109:113;;;199:11;;;193:18;180:11;;;173:39;145:2;138:10;109:113;;;-1:-1:-1;;256:1:50;238:16;;231:27;14:250::o;269:287::-;398:3;436:6;430:13;452:66;511:6;506:3;499:4;491:6;487:17;452:66;:::i;:::-;534:16;;;;;269:287;-1:-1:-1;;269:287:50:o;919:396::-;1068:2;1057:9;1050:21;1031:4;1100:6;1094:13;1143:6;1138:2;1127:9;1123:18;1116:34;1159:79;1231:6;1226:2;1215:9;1211:18;1206:2;1198:6;1194:15;1159:79;:::i;:::-;1299:2;1278:15;-1:-1:-1;;1274:29:50;1259:45;;;;1306:2;1255:54;;919:396;-1:-1:-1;;919:396:50:o"},"gasEstimates":{"creation":{"codeDepositCost":"131600","executionCost":"infinite","totalCost":"infinite"},"external":{"":"infinite"},"internal":{"_implementation()":"2156"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_logic\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"details\":\"This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an implementation address that can be changed. This address is stored in storage in the location specified by https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the implementation behind the proxy.\",\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Initializes the upgradeable proxy with an initial implementation specified by `_logic`. If `_data` is nonempty, it's used as data in a delegate call to `_logic`. This will typically be an encoded function call, and allows initializing the storage of the proxy like a Solidity constructor.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol\":\"ERC1967Proxy\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/IERC1967.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (interfaces/IERC1967.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\\n *\\n * _Available since v4.8.3._\\n */\\ninterface IERC1967 {\\n /**\\n * @dev Emitted when the implementation is upgraded.\\n */\\n event Upgraded(address indexed implementation);\\n\\n /**\\n * @dev Emitted when the admin account has changed.\\n */\\n event AdminChanged(address previousAdmin, address newAdmin);\\n\\n /**\\n * @dev Emitted when the beacon is changed.\\n */\\n event BeaconUpgraded(address indexed beacon);\\n}\\n\",\"keccak256\":\"0x3cbef5ebc24b415252e2f8c0c9254555d30d9f085603b4b80d9b5ed20ab87e90\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822Proxiable {\\n /**\\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n * address.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy.\\n */\\n function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (proxy/ERC1967/ERC1967Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../Proxy.sol\\\";\\nimport \\\"./ERC1967Upgrade.sol\\\";\\n\\n/**\\n * @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an\\n * implementation address that can be changed. This address is stored in storage in the location specified by\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the\\n * implementation behind the proxy.\\n */\\ncontract ERC1967Proxy is Proxy, ERC1967Upgrade {\\n /**\\n * @dev Initializes the upgradeable proxy with an initial implementation specified by `_logic`.\\n *\\n * If `_data` is nonempty, it's used as data in a delegate call to `_logic`. This will typically be an encoded\\n * function call, and allows initializing the storage of the proxy like a Solidity constructor.\\n */\\n constructor(address _logic, bytes memory _data) payable {\\n _upgradeToAndCall(_logic, _data, false);\\n }\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _implementation() internal view virtual override returns (address impl) {\\n return ERC1967Upgrade._getImplementation();\\n }\\n}\\n\",\"keccak256\":\"0xa2b22da3032e50b55f95ec1d13336102d675f341167aa76db571ef7f8bb7975d\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../beacon/IBeacon.sol\\\";\\nimport \\\"../../interfaces/IERC1967.sol\\\";\\nimport \\\"../../interfaces/draft-IERC1822.sol\\\";\\nimport \\\"../../utils/Address.sol\\\";\\nimport \\\"../../utils/StorageSlot.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n */\\nabstract contract ERC1967Upgrade is IERC1967 {\\n // This is the keccak-256 hash of \\\"eip1967.proxy.rollback\\\" subtracted by 1\\n bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n /**\\n * @dev Storage slot with the address of the current implementation.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _getImplementation() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 implementation slot.\\n */\\n function _setImplementation(address newImplementation) private {\\n require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n }\\n\\n /**\\n * @dev Perform implementation upgrade\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeTo(address newImplementation) internal {\\n _setImplementation(newImplementation);\\n emit Upgraded(newImplementation);\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCall(address newImplementation, bytes memory data, bool forceCall) internal {\\n _upgradeTo(newImplementation);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(newImplementation, data);\\n }\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCallUUPS(address newImplementation, bytes memory data, bool forceCall) internal {\\n // Upgrades from old implementations will perform a rollback test. This test requires the new\\n // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n // this special case will break upgrade paths from old UUPS implementation to new ones.\\n if (StorageSlot.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n _setImplementation(newImplementation);\\n } else {\\n try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n require(slot == _IMPLEMENTATION_SLOT, \\\"ERC1967Upgrade: unsupported proxiableUUID\\\");\\n } catch {\\n revert(\\\"ERC1967Upgrade: new implementation is not UUPS\\\");\\n }\\n _upgradeToAndCall(newImplementation, data, forceCall);\\n }\\n }\\n\\n /**\\n * @dev Storage slot with the admin of the contract.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _getAdmin() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_ADMIN_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 admin slot.\\n */\\n function _setAdmin(address newAdmin) private {\\n require(newAdmin != address(0), \\\"ERC1967: new admin is the zero address\\\");\\n StorageSlot.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n */\\n function _changeAdmin(address newAdmin) internal {\\n emit AdminChanged(_getAdmin(), newAdmin);\\n _setAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\\n */\\n bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n /**\\n * @dev Returns the current beacon.\\n */\\n function _getBeacon() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_BEACON_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new beacon in the EIP1967 beacon slot.\\n */\\n function _setBeacon(address newBeacon) private {\\n require(Address.isContract(newBeacon), \\\"ERC1967: new beacon is not a contract\\\");\\n require(\\n Address.isContract(IBeacon(newBeacon).implementation()),\\n \\\"ERC1967: beacon implementation is not a contract\\\"\\n );\\n StorageSlot.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n }\\n\\n /**\\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n *\\n * Emits a {BeaconUpgraded} event.\\n */\\n function _upgradeBeaconToAndCall(address newBeacon, bytes memory data, bool forceCall) internal {\\n _setBeacon(newBeacon);\\n emit BeaconUpgraded(newBeacon);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x3b21ae06bf5957f73fa16754b0669c77b7abd8ba6c072d35c3281d446fdb86c2\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (proxy/Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\\n * be specified by overriding the virtual {_implementation} function.\\n *\\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\\n * different contract through the {_delegate} function.\\n *\\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\\n */\\nabstract contract Proxy {\\n /**\\n * @dev Delegates the current call to `implementation`.\\n *\\n * This function does not return to its internal call site, it will return directly to the external caller.\\n */\\n function _delegate(address implementation) internal virtual {\\n assembly {\\n // Copy msg.data. We take full control of memory in this inline assembly\\n // block because it will not return to Solidity code. We overwrite the\\n // Solidity scratch pad at memory position 0.\\n calldatacopy(0, 0, calldatasize())\\n\\n // Call the implementation.\\n // out and outsize are 0 because we don't know the size yet.\\n let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)\\n\\n // Copy the returned data.\\n returndatacopy(0, 0, returndatasize())\\n\\n switch result\\n // delegatecall returns 0 on error.\\n case 0 {\\n revert(0, returndatasize())\\n }\\n default {\\n return(0, returndatasize())\\n }\\n }\\n }\\n\\n /**\\n * @dev This is a virtual function that should be overridden so it returns the address to which the fallback function\\n * and {_fallback} should delegate.\\n */\\n function _implementation() internal view virtual returns (address);\\n\\n /**\\n * @dev Delegates the current call to the address returned by `_implementation()`.\\n *\\n * This function does not return to its internal call site, it will return directly to the external caller.\\n */\\n function _fallback() internal virtual {\\n _beforeFallback();\\n _delegate(_implementation());\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\\n * function in the contract matches the call data.\\n */\\n fallback() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data\\n * is empty.\\n */\\n receive() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`\\n * call, or as part of the Solidity `fallback` or `receive` functions.\\n *\\n * If overridden should call `super._beforeFallback()`.\\n */\\n function _beforeFallback() internal virtual {}\\n}\\n\",\"keccak256\":\"0xc130fe33f1b2132158531a87734153293f6d07bc263ff4ac90e85da9c82c0e27\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeacon {\\n /**\\n * @dev Must return an address that can be used as a delegate call target.\\n *\\n * {BeaconProxy} will check that this address is a contract.\\n */\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/StorageSlot.sol)\\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```solidity\\n * contract ERC1967 {\\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n * function _getImplementation() internal view returns (address) {\\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n * }\\n *\\n * function _setImplementation(address newImplementation) internal {\\n * require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n * }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._\\n * _Available since v4.9 for `string`, `bytes`._\\n */\\nlibrary StorageSlot {\\n struct AddressSlot {\\n address value;\\n }\\n\\n struct BooleanSlot {\\n bool value;\\n }\\n\\n struct Bytes32Slot {\\n bytes32 value;\\n }\\n\\n struct Uint256Slot {\\n uint256 value;\\n }\\n\\n struct StringSlot {\\n string value;\\n }\\n\\n struct BytesSlot {\\n bytes value;\\n }\\n\\n /**\\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n */\\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n */\\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n */\\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n */\\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` with member `value` located at `slot`.\\n */\\n function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\\n */\\n function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` with member `value` located at `slot`.\\n */\\n function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\\n */\\n function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n}\\n\",\"keccak256\":\"0xf09e68aa0dc6722a25bc46490e8d48ed864466d17313b8a0b254c36b54e49899\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol":{"ERC1967Upgrade":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"beacon","type":"address"}],"name":"BeaconUpgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"}],"devdoc":{"details":"This abstract contract provides getters and event emitting update functions for https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots. _Available since v4.1._","kind":"dev","methods":{},"stateVariables":{"_ADMIN_SLOT":{"details":"Storage slot with the admin of the contract. This is the keccak-256 hash of \"eip1967.proxy.admin\" subtracted by 1, and is validated in the constructor."},"_BEACON_SLOT":{"details":"The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy. This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor."},"_IMPLEMENTATION_SLOT":{"details":"Storage slot with the address of the current implementation. This is the keccak-256 hash of \"eip1967.proxy.implementation\" subtracted by 1, and is validated in the constructor."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"}],\"devdoc\":{\"details\":\"This abstract contract provides getters and event emitting update functions for https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots. _Available since v4.1._\",\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"_ADMIN_SLOT\":{\"details\":\"Storage slot with the admin of the contract. This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is validated in the constructor.\"},\"_BEACON_SLOT\":{\"details\":\"The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy. This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\"},\"_IMPLEMENTATION_SLOT\":{\"details\":\"Storage slot with the address of the current implementation. This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is validated in the constructor.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol\":\"ERC1967Upgrade\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/IERC1967.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (interfaces/IERC1967.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\\n *\\n * _Available since v4.8.3._\\n */\\ninterface IERC1967 {\\n /**\\n * @dev Emitted when the implementation is upgraded.\\n */\\n event Upgraded(address indexed implementation);\\n\\n /**\\n * @dev Emitted when the admin account has changed.\\n */\\n event AdminChanged(address previousAdmin, address newAdmin);\\n\\n /**\\n * @dev Emitted when the beacon is changed.\\n */\\n event BeaconUpgraded(address indexed beacon);\\n}\\n\",\"keccak256\":\"0x3cbef5ebc24b415252e2f8c0c9254555d30d9f085603b4b80d9b5ed20ab87e90\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822Proxiable {\\n /**\\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n * address.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy.\\n */\\n function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../beacon/IBeacon.sol\\\";\\nimport \\\"../../interfaces/IERC1967.sol\\\";\\nimport \\\"../../interfaces/draft-IERC1822.sol\\\";\\nimport \\\"../../utils/Address.sol\\\";\\nimport \\\"../../utils/StorageSlot.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n */\\nabstract contract ERC1967Upgrade is IERC1967 {\\n // This is the keccak-256 hash of \\\"eip1967.proxy.rollback\\\" subtracted by 1\\n bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n /**\\n * @dev Storage slot with the address of the current implementation.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _getImplementation() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 implementation slot.\\n */\\n function _setImplementation(address newImplementation) private {\\n require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n }\\n\\n /**\\n * @dev Perform implementation upgrade\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeTo(address newImplementation) internal {\\n _setImplementation(newImplementation);\\n emit Upgraded(newImplementation);\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCall(address newImplementation, bytes memory data, bool forceCall) internal {\\n _upgradeTo(newImplementation);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(newImplementation, data);\\n }\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCallUUPS(address newImplementation, bytes memory data, bool forceCall) internal {\\n // Upgrades from old implementations will perform a rollback test. This test requires the new\\n // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n // this special case will break upgrade paths from old UUPS implementation to new ones.\\n if (StorageSlot.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n _setImplementation(newImplementation);\\n } else {\\n try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n require(slot == _IMPLEMENTATION_SLOT, \\\"ERC1967Upgrade: unsupported proxiableUUID\\\");\\n } catch {\\n revert(\\\"ERC1967Upgrade: new implementation is not UUPS\\\");\\n }\\n _upgradeToAndCall(newImplementation, data, forceCall);\\n }\\n }\\n\\n /**\\n * @dev Storage slot with the admin of the contract.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _getAdmin() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_ADMIN_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 admin slot.\\n */\\n function _setAdmin(address newAdmin) private {\\n require(newAdmin != address(0), \\\"ERC1967: new admin is the zero address\\\");\\n StorageSlot.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n */\\n function _changeAdmin(address newAdmin) internal {\\n emit AdminChanged(_getAdmin(), newAdmin);\\n _setAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\\n */\\n bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n /**\\n * @dev Returns the current beacon.\\n */\\n function _getBeacon() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_BEACON_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new beacon in the EIP1967 beacon slot.\\n */\\n function _setBeacon(address newBeacon) private {\\n require(Address.isContract(newBeacon), \\\"ERC1967: new beacon is not a contract\\\");\\n require(\\n Address.isContract(IBeacon(newBeacon).implementation()),\\n \\\"ERC1967: beacon implementation is not a contract\\\"\\n );\\n StorageSlot.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n }\\n\\n /**\\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n *\\n * Emits a {BeaconUpgraded} event.\\n */\\n function _upgradeBeaconToAndCall(address newBeacon, bytes memory data, bool forceCall) internal {\\n _setBeacon(newBeacon);\\n emit BeaconUpgraded(newBeacon);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x3b21ae06bf5957f73fa16754b0669c77b7abd8ba6c072d35c3281d446fdb86c2\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeacon {\\n /**\\n * @dev Must return an address that can be used as a delegate call target.\\n *\\n * {BeaconProxy} will check that this address is a contract.\\n */\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/StorageSlot.sol)\\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```solidity\\n * contract ERC1967 {\\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n * function _getImplementation() internal view returns (address) {\\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n * }\\n *\\n * function _setImplementation(address newImplementation) internal {\\n * require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n * }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._\\n * _Available since v4.9 for `string`, `bytes`._\\n */\\nlibrary StorageSlot {\\n struct AddressSlot {\\n address value;\\n }\\n\\n struct BooleanSlot {\\n bool value;\\n }\\n\\n struct Bytes32Slot {\\n bytes32 value;\\n }\\n\\n struct Uint256Slot {\\n uint256 value;\\n }\\n\\n struct StringSlot {\\n string value;\\n }\\n\\n struct BytesSlot {\\n bytes value;\\n }\\n\\n /**\\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n */\\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n */\\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n */\\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n */\\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` with member `value` located at `slot`.\\n */\\n function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\\n */\\n function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` with member `value` located at `slot`.\\n */\\n function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\\n */\\n function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n}\\n\",\"keccak256\":\"0xf09e68aa0dc6722a25bc46490e8d48ed864466d17313b8a0b254c36b54e49899\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/proxy/Proxy.sol":{"Proxy":{"abi":[{"stateMutability":"payable","type":"fallback"},{"stateMutability":"payable","type":"receive"}],"devdoc":{"details":"This abstract contract provides a fallback function that delegates all calls to another contract using the EVM instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to be specified by overriding the virtual {_implementation} function. Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a different contract through the {_delegate} function. The success and return data of the delegated call will be returned back to the caller of the proxy.","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"details\":\"This abstract contract provides a fallback function that delegates all calls to another contract using the EVM instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to be specified by overriding the virtual {_implementation} function. Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a different contract through the {_delegate} function. The success and return data of the delegated call will be returned back to the caller of the proxy.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/proxy/Proxy.sol\":\"Proxy\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/proxy/Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (proxy/Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\\n * be specified by overriding the virtual {_implementation} function.\\n *\\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\\n * different contract through the {_delegate} function.\\n *\\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\\n */\\nabstract contract Proxy {\\n /**\\n * @dev Delegates the current call to `implementation`.\\n *\\n * This function does not return to its internal call site, it will return directly to the external caller.\\n */\\n function _delegate(address implementation) internal virtual {\\n assembly {\\n // Copy msg.data. We take full control of memory in this inline assembly\\n // block because it will not return to Solidity code. We overwrite the\\n // Solidity scratch pad at memory position 0.\\n calldatacopy(0, 0, calldatasize())\\n\\n // Call the implementation.\\n // out and outsize are 0 because we don't know the size yet.\\n let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)\\n\\n // Copy the returned data.\\n returndatacopy(0, 0, returndatasize())\\n\\n switch result\\n // delegatecall returns 0 on error.\\n case 0 {\\n revert(0, returndatasize())\\n }\\n default {\\n return(0, returndatasize())\\n }\\n }\\n }\\n\\n /**\\n * @dev This is a virtual function that should be overridden so it returns the address to which the fallback function\\n * and {_fallback} should delegate.\\n */\\n function _implementation() internal view virtual returns (address);\\n\\n /**\\n * @dev Delegates the current call to the address returned by `_implementation()`.\\n *\\n * This function does not return to its internal call site, it will return directly to the external caller.\\n */\\n function _fallback() internal virtual {\\n _beforeFallback();\\n _delegate(_implementation());\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\\n * function in the contract matches the call data.\\n */\\n fallback() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data\\n * is empty.\\n */\\n receive() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`\\n * call, or as part of the Solidity `fallback` or `receive` functions.\\n *\\n * If overridden should call `super._beforeFallback()`.\\n */\\n function _beforeFallback() internal virtual {}\\n}\\n\",\"keccak256\":\"0xc130fe33f1b2132158531a87734153293f6d07bc263ff4ac90e85da9c82c0e27\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/proxy/beacon/IBeacon.sol":{"IBeacon":{"abi":[{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"This is the interface that {BeaconProxy} expects of its beacon.","kind":"dev","methods":{"implementation()":{"details":"Must return an address that can be used as a delegate call target. {BeaconProxy} will check that this address is a contract."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"implementation()":"5c60da1b"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"This is the interface that {BeaconProxy} expects of its beacon.\",\"kind\":\"dev\",\"methods\":{\"implementation()\":{\"details\":\"Must return an address that can be used as a delegate call target. {BeaconProxy} will check that this address is a contract.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":\"IBeacon\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeacon {\\n /**\\n * @dev Must return an address that can be used as a delegate call target.\\n *\\n * {BeaconProxy} will check that this address is a contract.\\n */\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/utils/Address.sol":{"Address":{"abi":[],"devdoc":{"details":"Collection of functions related to the address type","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"602d6037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a","opcodes":"PUSH1 0x2D PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"194:9169:19:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;194:9169:19;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"194:9169:19:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"9000","executionCost":"94","totalCost":"9094"},"internal":{"_revert(bytes memory,string memory)":"infinite","functionCall(address,bytes memory)":"infinite","functionCall(address,bytes memory,string memory)":"infinite","functionCallWithValue(address,bytes memory,uint256)":"infinite","functionCallWithValue(address,bytes memory,uint256,string memory)":"infinite","functionDelegateCall(address,bytes memory)":"infinite","functionDelegateCall(address,bytes memory,string memory)":"infinite","functionStaticCall(address,bytes memory)":"infinite","functionStaticCall(address,bytes memory,string memory)":"infinite","isContract(address)":"infinite","sendValue(address payable,uint256)":"infinite","verifyCallResult(bool,bytes memory,string memory)":"infinite","verifyCallResultFromTarget(address,bool,bytes memory,string memory)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Collection of functions related to the address type\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Address.sol\":\"Address\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/utils/Context.sol":{"Context":{"abi":[],"devdoc":{"details":"Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Context.sol\":\"Context\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n function _contextSuffixLength() internal view virtual returns (uint256) {\\n return 0;\\n }\\n}\\n\",\"keccak256\":\"0xa92e4fa126feb6907daa0513ddd816b2eb91f30a808de54f63c17d0e162c3439\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/utils/Counters.sol":{"Counters":{"abi":[],"devdoc":{"author":"Matt Condon (@shrugs)","details":"Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number of elements in a mapping, issuing ERC721 ids, or counting request ids. Include with `using Counters for Counters.Counter;`","kind":"dev","methods":{},"title":"Counters","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"602d6037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a","opcodes":"PUSH1 0x2D PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"424:971:21:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;424:971:21;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"424:971:21:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"9000","executionCost":"94","totalCost":"9094"},"internal":{"current(struct Counters.Counter storage pointer)":"infinite","decrement(struct Counters.Counter storage pointer)":"infinite","increment(struct Counters.Counter storage pointer)":"infinite","reset(struct Counters.Counter storage pointer)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"author\":\"Matt Condon (@shrugs)\",\"details\":\"Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number of elements in a mapping, issuing ERC721 ids, or counting request ids. Include with `using Counters for Counters.Counter;`\",\"kind\":\"dev\",\"methods\":{},\"title\":\"Counters\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Counters.sol\":\"Counters\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Counters.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Counters.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title Counters\\n * @author Matt Condon (@shrugs)\\n * @dev Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number\\n * of elements in a mapping, issuing ERC721 ids, or counting request ids.\\n *\\n * Include with `using Counters for Counters.Counter;`\\n */\\nlibrary Counters {\\n struct Counter {\\n // This variable should never be directly accessed by users of the library: interactions must be restricted to\\n // the library's function. As of Solidity v0.5.2, this cannot be enforced, though there is a proposal to add\\n // this feature: see https://github.com/ethereum/solidity/issues/4637\\n uint256 _value; // default: 0\\n }\\n\\n function current(Counter storage counter) internal view returns (uint256) {\\n return counter._value;\\n }\\n\\n function increment(Counter storage counter) internal {\\n unchecked {\\n counter._value += 1;\\n }\\n }\\n\\n function decrement(Counter storage counter) internal {\\n uint256 value = counter._value;\\n require(value > 0, \\\"Counter: decrement overflow\\\");\\n unchecked {\\n counter._value = value - 1;\\n }\\n }\\n\\n function reset(Counter storage counter) internal {\\n counter._value = 0;\\n }\\n}\\n\",\"keccak256\":\"0xf0018c2440fbe238dd3a8732fa8e17a0f9dce84d31451dc8a32f6d62b349c9f1\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/utils/StorageSlot.sol":{"StorageSlot":{"abi":[],"devdoc":{"details":"Library for reading and writing primitive types to specific storage slots. Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts. This library helps with reading and writing to such slots without the need for inline assembly. The functions in this library return Slot structs that contain a `value` member that can be used to read or write. Example usage to set ERC1967 implementation slot: ```solidity contract ERC1967 { bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc; function _getImplementation() internal view returns (address) { return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value; } function _setImplementation(address newImplementation) internal { require(Address.isContract(newImplementation), \"ERC1967: new implementation is not a contract\"); StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation; } } ``` _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._ _Available since v4.9 for `string`, `bytes`._","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"602d6037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a","opcodes":"PUSH1 0x2D PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"1420:2685:22:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;1420:2685:22;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"1420:2685:22:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"9000","executionCost":"94","totalCost":"9094"},"internal":{"getAddressSlot(bytes32)":"infinite","getBooleanSlot(bytes32)":"infinite","getBytes32Slot(bytes32)":"infinite","getBytesSlot(bytes storage pointer)":"infinite","getBytesSlot(bytes32)":"infinite","getStringSlot(bytes32)":"infinite","getStringSlot(string storage pointer)":"infinite","getUint256Slot(bytes32)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Library for reading and writing primitive types to specific storage slots. Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts. This library helps with reading and writing to such slots without the need for inline assembly. The functions in this library return Slot structs that contain a `value` member that can be used to read or write. Example usage to set ERC1967 implementation slot: ```solidity contract ERC1967 { bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc; function _getImplementation() internal view returns (address) { return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value; } function _setImplementation(address newImplementation) internal { require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\"); StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation; } } ``` _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._ _Available since v4.9 for `string`, `bytes`._\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/StorageSlot.sol\":\"StorageSlot\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/StorageSlot.sol)\\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```solidity\\n * contract ERC1967 {\\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n * function _getImplementation() internal view returns (address) {\\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n * }\\n *\\n * function _setImplementation(address newImplementation) internal {\\n * require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n * }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._\\n * _Available since v4.9 for `string`, `bytes`._\\n */\\nlibrary StorageSlot {\\n struct AddressSlot {\\n address value;\\n }\\n\\n struct BooleanSlot {\\n bool value;\\n }\\n\\n struct Bytes32Slot {\\n bytes32 value;\\n }\\n\\n struct Uint256Slot {\\n uint256 value;\\n }\\n\\n struct StringSlot {\\n string value;\\n }\\n\\n struct BytesSlot {\\n bytes value;\\n }\\n\\n /**\\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n */\\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n */\\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n */\\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n */\\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` with member `value` located at `slot`.\\n */\\n function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\\n */\\n function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` with member `value` located at `slot`.\\n */\\n function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\\n */\\n function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n}\\n\",\"keccak256\":\"0xf09e68aa0dc6722a25bc46490e8d48ed864466d17313b8a0b254c36b54e49899\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/utils/introspection/ERC165.sol":{"ERC165":{"abi":[{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"Implementation of the {IERC165} interface. Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check for the additional interface id that will be supported. For example: ```solidity function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); } ``` Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.","kind":"dev","methods":{"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of the {IERC165} interface. Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check for the additional interface id that will be supported. For example: ```solidity function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); } ``` Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\",\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":\"ERC165\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165 is IERC165 {\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165).interfaceId;\\n }\\n}\\n\",\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/utils/introspection/IERC165.sol":{"IERC165":{"abi":[{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"Interface of the ERC165 standard, as defined in the https://eips.ethereum.org/EIPS/eip-165[EIP]. Implementers can declare support of contract interfaces, which can then be queried by others ({ERC165Checker}). For an implementation, see {ERC165}.","kind":"dev","methods":{"supportsInterface(bytes4)":{"details":"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC165 standard, as defined in the https://eips.ethereum.org/EIPS/eip-165[EIP]. Implementers can declare support of contract interfaces, which can then be queried by others ({ERC165Checker}). For an implementation, see {ERC165}.\",\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":\"IERC165\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"src/dao/IDAO.sol":{"IDAO":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"string","name":"_reference","type":"string"}],"name":"Deposited","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"actor","type":"address"},{"indexed":false,"internalType":"bytes32","name":"callId","type":"bytes32"},{"components":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"indexed":false,"internalType":"struct IDAO.Action[]","name":"actions","type":"tuple[]"},{"indexed":false,"internalType":"uint256","name":"allowFailureMap","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"failureMap","type":"uint256"},{"indexed":false,"internalType":"bytes[]","name":"execResults","type":"bytes[]"}],"name":"Executed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes","name":"metadata","type":"bytes"}],"name":"MetadataSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"NativeTokenDeposited","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes4","name":"interfaceId","type":"bytes4"},{"indexed":false,"internalType":"bytes4","name":"callbackSelector","type":"bytes4"},{"indexed":false,"internalType":"bytes4","name":"magicNumber","type":"bytes4"}],"name":"StandardCallbackRegistered","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"forwarder","type":"address"}],"name":"TrustedForwarderSet","type":"event"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"string","name":"_reference","type":"string"}],"name":"deposit","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_callId","type":"bytes32"},{"components":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct IDAO.Action[]","name":"_actions","type":"tuple[]"},{"internalType":"uint256","name":"_allowFailureMap","type":"uint256"}],"name":"execute","outputs":[{"internalType":"bytes[]","name":"","type":"bytes[]"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getTrustedForwarder","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_where","type":"address"},{"internalType":"address","name":"_who","type":"address"},{"internalType":"bytes32","name":"_permissionId","type":"bytes32"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"hasPermission","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_hash","type":"bytes32"},{"internalType":"bytes","name":"_signature","type":"bytes"}],"name":"isValidSignature","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_interfaceId","type":"bytes4"},{"internalType":"bytes4","name":"_callbackSelector","type":"bytes4"},{"internalType":"bytes4","name":"_magicNumber","type":"bytes4"}],"name":"registerStandardCallback","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"_metadata","type":"bytes"}],"name":"setMetadata","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"setSignatureValidator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_trustedForwarder","type":"address"}],"name":"setTrustedForwarder","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"author":"Aragon X - 2022-2023","custom:security-contact":"sirt@aragon.org","events":{"Deposited(address,address,uint256,string)":{"params":{"_reference":"The reference describing the deposit reason.","amount":"The amount of tokens deposited.","sender":"The address of the sender.","token":"The address of the deposited token."}},"Executed(address,bytes32,(address,uint256,bytes)[],uint256,uint256,bytes[])":{"details":"The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce.","params":{"actions":"The array of actions executed.","actor":"The address of the caller.","allowFailureMap":"The allow failure map encoding which actions are allowed to fail.","callId":"The ID of the call.","execResults":"The array with the results of the executed actions.","failureMap":"The failure map encoding which actions have failed."}},"MetadataSet(bytes)":{"params":{"metadata":"The IPFS hash of the new metadata object."}},"NativeTokenDeposited(address,uint256)":{"details":"This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).","params":{"amount":"The amount of native tokens deposited.","sender":"The address of the sender."}},"StandardCallbackRegistered(bytes4,bytes4,bytes4)":{"params":{"callbackSelector":"The selector of the callback function.","interfaceId":"The ID of the interface.","magicNumber":"The magic number to be registered for the callback function selector."}},"TrustedForwarderSet(address)":{"params":{"forwarder":"the new forwarder address."}}},"kind":"dev","methods":{"deposit(address,uint256,string)":{"params":{"_amount":"The amount of tokens to deposit.","_reference":"The reference describing the deposit reason.","_token":"The address of the token or address(0) in case of the native token."}},"execute(bytes32,(address,uint256,bytes)[],uint256)":{"params":{"_actions":"The array of actions.","_allowFailureMap":"A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.","_callId":"The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce."},"returns":{"_0":"The array of results obtained from the executed actions in `bytes`.","_1":"The resulting failure map containing the actions have actually failed."}},"getTrustedForwarder()":{"returns":{"_0":"The trusted forwarder address."}},"hasPermission(address,address,bytes32,bytes)":{"params":{"_data":"The optional data passed to the `PermissionCondition` registered.","_permissionId":"The permission identifier.","_where":"The address of the contract.","_who":"The address of a EOA or contract to give the permissions."},"returns":{"_0":"Returns true if the address has permission, false if not."}},"isValidSignature(bytes32,bytes)":{"params":{"_hash":"The hash of the data to be signed.","_signature":"The signature byte array associated with `_hash`."},"returns":{"_0":"Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not."}},"registerStandardCallback(bytes4,bytes4,bytes4)":{"params":{"_callbackSelector":"The selector of the callback function.","_interfaceId":"The ID of the interface.","_magicNumber":"The magic number to be registered for the function signature."}},"setMetadata(bytes)":{"params":{"_metadata":"The IPFS hash of the new metadata object."}},"setSignatureValidator(address)":{"details":"Introduced in v1.0.0. Removed in v1.4.0."},"setTrustedForwarder(address)":{"params":{"_trustedForwarder":"The trusted forwarder address."}}},"title":"IDAO","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"deposit(address,uint256,string)":"bfe07da6","execute(bytes32,(address,uint256,bytes)[],uint256)":"c71bf324","getTrustedForwarder()":"ce1b815f","hasPermission(address,address,bytes32,bytes)":"fdef9106","isValidSignature(bytes32,bytes)":"1626ba7e","registerStandardCallback(bytes4,bytes4,bytes4)":"c4a50145","setMetadata(bytes)":"ee57e36f","setSignatureValidator(address)":"3e2ab0d9","setTrustedForwarder(address)":"da742228"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"_reference\",\"type\":\"string\"}],\"name\":\"Deposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"actor\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"callId\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"struct IDAO.Action[]\",\"name\":\"actions\",\"type\":\"tuple[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"allowFailureMap\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"failureMap\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes[]\",\"name\":\"execResults\",\"type\":\"bytes[]\"}],\"name\":\"Executed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"name\":\"MetadataSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"NativeTokenDeposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"callbackSelector\",\"type\":\"bytes4\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"magicNumber\",\"type\":\"bytes4\"}],\"name\":\"StandardCallbackRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"forwarder\",\"type\":\"address\"}],\"name\":\"TrustedForwarderSet\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"_reference\",\"type\":\"string\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_callId\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IDAO.Action[]\",\"name\":\"_actions\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"_allowFailureMap\",\"type\":\"uint256\"}],\"name\":\"execute\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"\",\"type\":\"bytes[]\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTrustedForwarder\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_who\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_permissionId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"hasPermission\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"isValidSignature\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"},{\"internalType\":\"bytes4\",\"name\":\"_callbackSelector\",\"type\":\"bytes4\"},{\"internalType\":\"bytes4\",\"name\":\"_magicNumber\",\"type\":\"bytes4\"}],\"name\":\"registerStandardCallback\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_metadata\",\"type\":\"bytes\"}],\"name\":\"setMetadata\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"setSignatureValidator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_trustedForwarder\",\"type\":\"address\"}],\"name\":\"setTrustedForwarder\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Aragon X - 2022-2023\",\"custom:security-contact\":\"sirt@aragon.org\",\"events\":{\"Deposited(address,address,uint256,string)\":{\"params\":{\"_reference\":\"The reference describing the deposit reason.\",\"amount\":\"The amount of tokens deposited.\",\"sender\":\"The address of the sender.\",\"token\":\"The address of the deposited token.\"}},\"Executed(address,bytes32,(address,uint256,bytes)[],uint256,uint256,bytes[])\":{\"details\":\"The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce.\",\"params\":{\"actions\":\"The array of actions executed.\",\"actor\":\"The address of the caller.\",\"allowFailureMap\":\"The allow failure map encoding which actions are allowed to fail.\",\"callId\":\"The ID of the call.\",\"execResults\":\"The array with the results of the executed actions.\",\"failureMap\":\"The failure map encoding which actions have failed.\"}},\"MetadataSet(bytes)\":{\"params\":{\"metadata\":\"The IPFS hash of the new metadata object.\"}},\"NativeTokenDeposited(address,uint256)\":{\"details\":\"This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).\",\"params\":{\"amount\":\"The amount of native tokens deposited.\",\"sender\":\"The address of the sender.\"}},\"StandardCallbackRegistered(bytes4,bytes4,bytes4)\":{\"params\":{\"callbackSelector\":\"The selector of the callback function.\",\"interfaceId\":\"The ID of the interface.\",\"magicNumber\":\"The magic number to be registered for the callback function selector.\"}},\"TrustedForwarderSet(address)\":{\"params\":{\"forwarder\":\"the new forwarder address.\"}}},\"kind\":\"dev\",\"methods\":{\"deposit(address,uint256,string)\":{\"params\":{\"_amount\":\"The amount of tokens to deposit.\",\"_reference\":\"The reference describing the deposit reason.\",\"_token\":\"The address of the token or address(0) in case of the native token.\"}},\"execute(bytes32,(address,uint256,bytes)[],uint256)\":{\"params\":{\"_actions\":\"The array of actions.\",\"_allowFailureMap\":\"A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\",\"_callId\":\"The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce.\"},\"returns\":{\"_0\":\"The array of results obtained from the executed actions in `bytes`.\",\"_1\":\"The resulting failure map containing the actions have actually failed.\"}},\"getTrustedForwarder()\":{\"returns\":{\"_0\":\"The trusted forwarder address.\"}},\"hasPermission(address,address,bytes32,bytes)\":{\"params\":{\"_data\":\"The optional data passed to the `PermissionCondition` registered.\",\"_permissionId\":\"The permission identifier.\",\"_where\":\"The address of the contract.\",\"_who\":\"The address of a EOA or contract to give the permissions.\"},\"returns\":{\"_0\":\"Returns true if the address has permission, false if not.\"}},\"isValidSignature(bytes32,bytes)\":{\"params\":{\"_hash\":\"The hash of the data to be signed.\",\"_signature\":\"The signature byte array associated with `_hash`.\"},\"returns\":{\"_0\":\"Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not.\"}},\"registerStandardCallback(bytes4,bytes4,bytes4)\":{\"params\":{\"_callbackSelector\":\"The selector of the callback function.\",\"_interfaceId\":\"The ID of the interface.\",\"_magicNumber\":\"The magic number to be registered for the function signature.\"}},\"setMetadata(bytes)\":{\"params\":{\"_metadata\":\"The IPFS hash of the new metadata object.\"}},\"setSignatureValidator(address)\":{\"details\":\"Introduced in v1.0.0. Removed in v1.4.0.\"},\"setTrustedForwarder(address)\":{\"params\":{\"_trustedForwarder\":\"The trusted forwarder address.\"}}},\"title\":\"IDAO\",\"version\":1},\"userdoc\":{\"events\":{\"Deposited(address,address,uint256,string)\":{\"notice\":\"Emitted when a token deposit has been made to the DAO.\"},\"Executed(address,bytes32,(address,uint256,bytes)[],uint256,uint256,bytes[])\":{\"notice\":\"Emitted when a proposal is executed.\"},\"MetadataSet(bytes)\":{\"notice\":\"Emitted when the DAO metadata is updated.\"},\"NativeTokenDeposited(address,uint256)\":{\"notice\":\"Emitted when a native token deposit has been made to the DAO.\"},\"StandardCallbackRegistered(bytes4,bytes4,bytes4)\":{\"notice\":\"Emitted when a standard callback is registered.\"},\"TrustedForwarderSet(address)\":{\"notice\":\"Emitted when a new TrustedForwarder is set on the DAO.\"}},\"kind\":\"user\",\"methods\":{\"deposit(address,uint256,string)\":{\"notice\":\"Deposits (native) tokens to the DAO contract with a reference string.\"},\"execute(bytes32,(address,uint256,bytes)[],uint256)\":{\"notice\":\"Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted.\"},\"getTrustedForwarder()\":{\"notice\":\"Getter for the trusted forwarder verifying the meta transaction.\"},\"hasPermission(address,address,bytes32,bytes)\":{\"notice\":\"Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\"},\"isValidSignature(bytes32,bytes)\":{\"notice\":\"Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\"},\"registerStandardCallback(bytes4,bytes4,bytes4)\":{\"notice\":\"Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\"},\"setMetadata(bytes)\":{\"notice\":\"Updates the DAO metadata (e.g., an IPFS hash).\"},\"setSignatureValidator(address)\":{\"notice\":\"Removed function being left here to not corrupt the IDAO interface ID. Any call will revert.\"},\"setTrustedForwarder(address)\":{\"notice\":\"Setter for the trusted forwarder verifying the meta transaction.\"}},\"notice\":\"The interface required for DAOs within the Aragon App DAO framework.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/dao/IDAO.sol\":\"IDAO\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"src/dao/IDAO.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IDAO\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for DAOs within the Aragon App DAO framework.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IDAO {\\n /// @notice The action struct to be consumed by the DAO's `execute` function resulting in an external call.\\n /// @param to The address to call.\\n /// @param value The native token value to be sent with the call.\\n /// @param data The bytes-encoded function selector and calldata for the call.\\n struct Action {\\n address to;\\n uint256 value;\\n bytes data;\\n }\\n\\n /// @notice Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\\n /// @param _where The address of the contract.\\n /// @param _who The address of a EOA or contract to give the permissions.\\n /// @param _permissionId The permission identifier.\\n /// @param _data The optional data passed to the `PermissionCondition` registered.\\n /// @return Returns true if the address has permission, false if not.\\n function hasPermission(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes memory _data\\n ) external view returns (bool);\\n\\n /// @notice Updates the DAO metadata (e.g., an IPFS hash).\\n /// @param _metadata The IPFS hash of the new metadata object.\\n function setMetadata(bytes calldata _metadata) external;\\n\\n /// @notice Emitted when the DAO metadata is updated.\\n /// @param metadata The IPFS hash of the new metadata object.\\n event MetadataSet(bytes metadata);\\n\\n /// @notice Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted.\\n /// @param _callId The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce.\\n /// @param _actions The array of actions.\\n /// @param _allowFailureMap A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @return The array of results obtained from the executed actions in `bytes`.\\n /// @return The resulting failure map containing the actions have actually failed.\\n function execute(\\n bytes32 _callId,\\n Action[] memory _actions,\\n uint256 _allowFailureMap\\n ) external returns (bytes[] memory, uint256);\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param actor The address of the caller.\\n /// @param callId The ID of the call.\\n /// @param actions The array of actions executed.\\n /// @param allowFailureMap The allow failure map encoding which actions are allowed to fail.\\n /// @param failureMap The failure map encoding which actions have failed.\\n /// @param execResults The array with the results of the executed actions.\\n /// @dev The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce.\\n event Executed(\\n address indexed actor,\\n bytes32 callId,\\n Action[] actions,\\n uint256 allowFailureMap,\\n uint256 failureMap,\\n bytes[] execResults\\n );\\n\\n /// @notice Emitted when a standard callback is registered.\\n /// @param interfaceId The ID of the interface.\\n /// @param callbackSelector The selector of the callback function.\\n /// @param magicNumber The magic number to be registered for the callback function selector.\\n event StandardCallbackRegistered(\\n bytes4 interfaceId,\\n bytes4 callbackSelector,\\n bytes4 magicNumber\\n );\\n\\n /// @notice Deposits (native) tokens to the DAO contract with a reference string.\\n /// @param _token The address of the token or address(0) in case of the native token.\\n /// @param _amount The amount of tokens to deposit.\\n /// @param _reference The reference describing the deposit reason.\\n function deposit(address _token, uint256 _amount, string calldata _reference) external payable;\\n\\n /// @notice Emitted when a token deposit has been made to the DAO.\\n /// @param sender The address of the sender.\\n /// @param token The address of the deposited token.\\n /// @param amount The amount of tokens deposited.\\n /// @param _reference The reference describing the deposit reason.\\n event Deposited(\\n address indexed sender,\\n address indexed token,\\n uint256 amount,\\n string _reference\\n );\\n\\n /// @notice Emitted when a native token deposit has been made to the DAO.\\n /// @dev This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).\\n /// @param sender The address of the sender.\\n /// @param amount The amount of native tokens deposited.\\n event NativeTokenDeposited(address sender, uint256 amount);\\n\\n /// @notice Setter for the trusted forwarder verifying the meta transaction.\\n /// @param _trustedForwarder The trusted forwarder address.\\n function setTrustedForwarder(address _trustedForwarder) external;\\n\\n /// @notice Getter for the trusted forwarder verifying the meta transaction.\\n /// @return The trusted forwarder address.\\n function getTrustedForwarder() external view returns (address);\\n\\n /// @notice Emitted when a new TrustedForwarder is set on the DAO.\\n /// @param forwarder the new forwarder address.\\n event TrustedForwarderSet(address forwarder);\\n\\n /// @notice Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\\n /// @param _hash The hash of the data to be signed.\\n /// @param _signature The signature byte array associated with `_hash`.\\n /// @return Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not.\\n function isValidSignature(bytes32 _hash, bytes memory _signature) external returns (bytes4);\\n\\n /// @notice Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\\n /// @param _interfaceId The ID of the interface.\\n /// @param _callbackSelector The selector of the callback function.\\n /// @param _magicNumber The magic number to be registered for the function signature.\\n function registerStandardCallback(\\n bytes4 _interfaceId,\\n bytes4 _callbackSelector,\\n bytes4 _magicNumber\\n ) external;\\n\\n /// @notice Removed function being left here to not corrupt the IDAO interface ID. Any call will revert.\\n /// @dev Introduced in v1.0.0. Removed in v1.4.0.\\n function setSignatureValidator(address) external;\\n}\\n\",\"keccak256\":\"0xb7f615523c26de042edce98731c658f44a1edb2464387ac1b642c4c69f57128e\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"events":{"Deposited(address,address,uint256,string)":{"notice":"Emitted when a token deposit has been made to the DAO."},"Executed(address,bytes32,(address,uint256,bytes)[],uint256,uint256,bytes[])":{"notice":"Emitted when a proposal is executed."},"MetadataSet(bytes)":{"notice":"Emitted when the DAO metadata is updated."},"NativeTokenDeposited(address,uint256)":{"notice":"Emitted when a native token deposit has been made to the DAO."},"StandardCallbackRegistered(bytes4,bytes4,bytes4)":{"notice":"Emitted when a standard callback is registered."},"TrustedForwarderSet(address)":{"notice":"Emitted when a new TrustedForwarder is set on the DAO."}},"kind":"user","methods":{"deposit(address,uint256,string)":{"notice":"Deposits (native) tokens to the DAO contract with a reference string."},"execute(bytes32,(address,uint256,bytes)[],uint256)":{"notice":"Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted."},"getTrustedForwarder()":{"notice":"Getter for the trusted forwarder verifying the meta transaction."},"hasPermission(address,address,bytes32,bytes)":{"notice":"Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process."},"isValidSignature(bytes32,bytes)":{"notice":"Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271)."},"registerStandardCallback(bytes4,bytes4,bytes4)":{"notice":"Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature."},"setMetadata(bytes)":{"notice":"Updates the DAO metadata (e.g., an IPFS hash)."},"setSignatureValidator(address)":{"notice":"Removed function being left here to not corrupt the IDAO interface ID. Any call will revert."},"setTrustedForwarder(address)":{"notice":"Setter for the trusted forwarder verifying the meta transaction."}},"notice":"The interface required for DAOs within the Aragon App DAO framework.","version":1}}},"src/mocks/plugin/PluginCloneableMock.sol":{"PluginCloneableMockBad":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousTarget","type":"address"},{"indexed":true,"internalType":"address","name":"newTarget","type":"address"}],"name":"TargetSet","type":"event"},{"inputs":[],"name":"dao","outputs":[{"internalType":"contract IDAO","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IDAO","name":"_dao","type":"address"}],"name":"notAnInitializer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pluginType","outputs":[{"internalType":"enum IPlugin.PluginType","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"protocolVersion","outputs":[{"internalType":"uint8[3]","name":"","type":"uint8[3]"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_target","type":"address"}],"name":"setTarget","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"state1","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"target","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"DO NOT USE IN PRODUCTION!","kind":"dev","methods":{"dao()":{"returns":{"_0":"The DAO contract."}},"protocolVersion()":{"details":"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.","returns":{"_0":"Returns the semantic Aragon OSx protocol version number."}},"setTarget(address)":{"details":"Sets the target to a new target (`newTarget`)."},"supportsInterface(bytes4)":{"params":{"_interfaceId":"The ID of the interface."},"returns":{"_0":"Returns `true` if the interface is supported."}}},"version":1},"evm":{"bytecode":{"functionDebugData":{"@_4211":{"entryPoint":null,"id":4211,"parameterSlots":0,"returnSlots":0},"@_disableInitializers_515":{"entryPoint":30,"id":515,"parameterSlots":0,"returnSlots":0},"abi_encode_tuple_t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:608:50","statements":[{"nodeType":"YulBlock","src":"6:3:50","statements":[]},{"body":{"nodeType":"YulBlock","src":"188:229:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"205:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"216:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"198:6:50"},"nodeType":"YulFunctionCall","src":"198:21:50"},"nodeType":"YulExpressionStatement","src":"198:21:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"239:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"250:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"235:3:50"},"nodeType":"YulFunctionCall","src":"235:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"255:2:50","type":"","value":"39"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"228:6:50"},"nodeType":"YulFunctionCall","src":"228:30:50"},"nodeType":"YulExpressionStatement","src":"228:30:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"278:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"289:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"274:3:50"},"nodeType":"YulFunctionCall","src":"274:18:50"},{"hexValue":"496e697469616c697a61626c653a20636f6e747261637420697320696e697469","kind":"string","nodeType":"YulLiteral","src":"294:34:50","type":"","value":"Initializable: contract is initi"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"267:6:50"},"nodeType":"YulFunctionCall","src":"267:62:50"},"nodeType":"YulExpressionStatement","src":"267:62:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"349:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"360:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"345:3:50"},"nodeType":"YulFunctionCall","src":"345:18:50"},{"hexValue":"616c697a696e67","kind":"string","nodeType":"YulLiteral","src":"365:9:50","type":"","value":"alizing"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"338:6:50"},"nodeType":"YulFunctionCall","src":"338:37:50"},"nodeType":"YulExpressionStatement","src":"338:37:50"},{"nodeType":"YulAssignment","src":"384:27:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"396:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"407:3:50","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"392:3:50"},"nodeType":"YulFunctionCall","src":"392:19:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"384:4:50"}]}]},"name":"abi_encode_tuple_t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"165:9:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"179:4:50","type":""}],"src":"14:403:50"},{"body":{"nodeType":"YulBlock","src":"519:87:50","statements":[{"nodeType":"YulAssignment","src":"529:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"541:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"552:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"537:3:50"},"nodeType":"YulFunctionCall","src":"537:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"529:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"571:9:50"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"586:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"594:4:50","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"582:3:50"},"nodeType":"YulFunctionCall","src":"582:17:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"564:6:50"},"nodeType":"YulFunctionCall","src":"564:36:50"},"nodeType":"YulExpressionStatement","src":"564:36:50"}]},"name":"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"488:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"499:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"510:4:50","type":""}],"src":"422:184:50"}]},"contents":"{\n { }\n function abi_encode_tuple_t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 39)\n mstore(add(headStart, 64), \"Initializable: contract is initi\")\n mstore(add(headStart, 96), \"alizing\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xff))\n }\n}","id":50,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"608060405234801561001057600080fd5b5061001961001e565b6100dd565b600054610100900460ff161561008a5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116146100db576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b61043b806100ec6000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c80636accab8c1161005b5780636accab8c146100fe578063776d1a01146101155780638883bbd71461012a578063d4b839921461013d57600080fd5b806301ffc9a71461008d5780632ae9c600146100b55780634162169f146100ca57806341de6830146100ef575b600080fd5b6100a061009b36600461036f565b610150565b60405190151581526020015b60405180910390f35b6100bd6101a1565b6040516100ac91906103a0565b6065546001600160a01b03165b6040516001600160a01b0390911681526020016100ac565b60016040516100ac91906103d4565b61010760985481565b6040519081526020016100ac565b610128610123366004610411565b6101cb565b005b610128610138366004610411565b61022a565b6097546100d7906001600160a01b031681565b60006001600160e01b0319821663041de68360e41b148061018057506001600160e01b03198216621574e360e91b145b8061019b57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6101a9610351565b5060408051606081018252600181526004602082015260009181019190915290565b609780546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d690600090a35050565b6102338161023b565b506001609855565b600054610100900460ff166102ab5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084015b60405180910390fd5b6102b4816102b7565b50565b600054610100900460ff166103225760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016102a2565b6065805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b60405180606001604052806003906020820280368337509192915050565b60006020828403121561038157600080fd5b81356001600160e01b03198116811461039957600080fd5b9392505050565b60608101818360005b60038110156103cb57815160ff168352602092830192909101906001016103a9565b50505092915050565b60208101600383106103f657634e487b7160e01b600052602160045260246000fd5b91905290565b6001600160a01b03811681146102b457600080fd5b60006020828403121561042357600080fd5b8135610399816103fc56fea164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x19 PUSH2 0x1E JUMP JUMPDEST PUSH2 0xDD JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x8A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x27 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320696E697469 PUSH1 0x44 DUP3 ADD MSTORE PUSH7 0x616C697A696E67 PUSH1 0xC8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xFF SWAP1 DUP2 AND EQ PUSH2 0xDB JUMPI PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST JUMP JUMPDEST PUSH2 0x43B DUP1 PUSH2 0xEC PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x88 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6ACCAB8C GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x6ACCAB8C EQ PUSH2 0xFE JUMPI DUP1 PUSH4 0x776D1A01 EQ PUSH2 0x115 JUMPI DUP1 PUSH4 0x8883BBD7 EQ PUSH2 0x12A JUMPI DUP1 PUSH4 0xD4B83992 EQ PUSH2 0x13D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x8D JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0xB5 JUMPI DUP1 PUSH4 0x4162169F EQ PUSH2 0xCA JUMPI DUP1 PUSH4 0x41DE6830 EQ PUSH2 0xEF JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA0 PUSH2 0x9B CALLDATASIZE PUSH1 0x4 PUSH2 0x36F JUMP JUMPDEST PUSH2 0x150 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xBD PUSH2 0x1A1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xAC SWAP2 SWAP1 PUSH2 0x3A0 JUMP JUMPDEST PUSH1 0x65 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xAC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x40 MLOAD PUSH2 0xAC SWAP2 SWAP1 PUSH2 0x3D4 JUMP JUMPDEST PUSH2 0x107 PUSH1 0x98 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xAC JUMP JUMPDEST PUSH2 0x128 PUSH2 0x123 CALLDATASIZE PUSH1 0x4 PUSH2 0x411 JUMP JUMPDEST PUSH2 0x1CB JUMP JUMPDEST STOP JUMPDEST PUSH2 0x128 PUSH2 0x138 CALLDATASIZE PUSH1 0x4 PUSH2 0x411 JUMP JUMPDEST PUSH2 0x22A JUMP JUMPDEST PUSH1 0x97 SLOAD PUSH2 0xD7 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x41DE683 PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x180 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x19B JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1A9 PUSH2 0x351 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x97 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP2 SWAP1 DUP3 SWAP1 PUSH32 0x90CC2F570A6EB594B1580EA3E41247D2D73A55281889E86BD4EC2FC29C7E62D6 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH2 0x233 DUP2 PUSH2 0x23B JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x98 SSTORE JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x2AB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2B4 DUP2 PUSH2 0x2B7 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x322 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x2A2 JUMP JUMPDEST PUSH1 0x65 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x381 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x399 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0x3CB JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x3A9 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH1 0x3 DUP4 LT PUSH2 0x3F6 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 SWAP1 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x2B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x423 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x399 DUP2 PUSH2 0x3FC JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"1087:198:26:-:0;;;;;;;;;;;;-1:-1:-1;1290:22:39;:20;:22::i;:::-;1087:198:26;;5939:280:4;6007:13;;;;;;;6006:14;5998:66;;;;-1:-1:-1;;;5998:66:4;;216:2:50;5998:66:4;;;198:21:50;255:2;235:18;;;228:30;294:34;274:18;;;267:62;-1:-1:-1;;;345:18:50;;;338:37;392:19;;5998:66:4;;;;;;;;6078:12;;6094:15;6078:12;;;:31;6074:139;;6125:12;:30;;-1:-1:-1;;6125:30:4;6140:15;6125:30;;;;;;6174:28;;564:36:50;;;6174:28:4;;552:2:50;537:18;6174:28:4;;;;;;;6074:139;5939:280::o;422:184:50:-;1087:198:26;;;;;;"},"deployedBytecode":{"functionDebugData":{"@__DaoAuthorizableUpgradeable_init_3901":{"entryPoint":695,"id":3901,"parameterSlots":1,"returnSlots":0},"@__PluginCloneable_init_4225":{"entryPoint":571,"id":4225,"parameterSlots":1,"returnSlots":0},"@dao_3911":{"entryPoint":null,"id":3911,"parameterSlots":0,"returnSlots":1},"@notAnInitializer_2616":{"entryPoint":554,"id":2616,"parameterSlots":1,"returnSlots":0},"@pluginType_4257":{"entryPoint":null,"id":4257,"parameterSlots":0,"returnSlots":1},"@protocolVersion_5135":{"entryPoint":417,"id":5135,"parameterSlots":0,"returnSlots":1},"@setTarget_4245":{"entryPoint":459,"id":4245,"parameterSlots":1,"returnSlots":0},"@state1_2601":{"entryPoint":null,"id":2601,"parameterSlots":0,"returnSlots":0},"@supportsInterface_1275":{"entryPoint":null,"id":1275,"parameterSlots":1,"returnSlots":1},"@supportsInterface_4286":{"entryPoint":336,"id":4286,"parameterSlots":1,"returnSlots":1},"@target_4196":{"entryPoint":null,"id":4196,"parameterSlots":0,"returnSlots":0},"abi_decode_tuple_t_address":{"entryPoint":1041,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes4":{"entryPoint":879,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_contract$_IDAO_$2538":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed":{"entryPoint":928,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_contract$_IDAO_$2538__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_enum$_PluginType_$3994__to_t_uint8__fromStack_reversed":{"entryPoint":980,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"validator_revert_address":{"entryPoint":1020,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:3093:50","statements":[{"nodeType":"YulBlock","src":"6:3:50","statements":[]},{"body":{"nodeType":"YulBlock","src":"83:217:50","statements":[{"body":{"nodeType":"YulBlock","src":"129:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"138:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"141:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"131:6:50"},"nodeType":"YulFunctionCall","src":"131:12:50"},"nodeType":"YulExpressionStatement","src":"131:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"104:7:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"113:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"100:3:50"},"nodeType":"YulFunctionCall","src":"100:23:50"},{"kind":"number","nodeType":"YulLiteral","src":"125:2:50","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"96:3:50"},"nodeType":"YulFunctionCall","src":"96:32:50"},"nodeType":"YulIf","src":"93:52:50"},{"nodeType":"YulVariableDeclaration","src":"154:36:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"180:9:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"167:12:50"},"nodeType":"YulFunctionCall","src":"167:23:50"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"158:5:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"254:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"263:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"266:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"256:6:50"},"nodeType":"YulFunctionCall","src":"256:12:50"},"nodeType":"YulExpressionStatement","src":"256:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"212:5:50"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"223:5:50"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"234:3:50","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"239:10:50","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"230:3:50"},"nodeType":"YulFunctionCall","src":"230:20:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"219:3:50"},"nodeType":"YulFunctionCall","src":"219:32:50"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"209:2:50"},"nodeType":"YulFunctionCall","src":"209:43:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"202:6:50"},"nodeType":"YulFunctionCall","src":"202:51:50"},"nodeType":"YulIf","src":"199:71:50"},{"nodeType":"YulAssignment","src":"279:15:50","value":{"name":"value","nodeType":"YulIdentifier","src":"289:5:50"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"279:6:50"}]}]},"name":"abi_decode_tuple_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"49:9:50","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"60:7:50","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"72:6:50","type":""}],"src":"14:286:50"},{"body":{"nodeType":"YulBlock","src":"400:92:50","statements":[{"nodeType":"YulAssignment","src":"410:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"422:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"433:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"418:3:50"},"nodeType":"YulFunctionCall","src":"418:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"410:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"452:9:50"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"477:6:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"470:6:50"},"nodeType":"YulFunctionCall","src":"470:14:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"463:6:50"},"nodeType":"YulFunctionCall","src":"463:22:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"445:6:50"},"nodeType":"YulFunctionCall","src":"445:41:50"},"nodeType":"YulExpressionStatement","src":"445:41:50"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"369:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"380:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"391:4:50","type":""}],"src":"305:187:50"},{"body":{"nodeType":"YulBlock","src":"640:358:50","statements":[{"nodeType":"YulAssignment","src":"650:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"662:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"673:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"658:3:50"},"nodeType":"YulFunctionCall","src":"658:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"650:4:50"}]},{"nodeType":"YulVariableDeclaration","src":"685:20:50","value":{"name":"headStart","nodeType":"YulIdentifier","src":"696:9:50"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"689:3:50","type":""}]},{"nodeType":"YulAssignment","src":"714:16:50","value":{"name":"headStart","nodeType":"YulIdentifier","src":"721:9:50"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"714:3:50"}]},{"nodeType":"YulVariableDeclaration","src":"739:20:50","value":{"name":"value0","nodeType":"YulIdentifier","src":"753:6:50"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"743:6:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"768:10:50","value":{"kind":"number","nodeType":"YulLiteral","src":"777:1:50","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"772:1:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"834:158:50","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"855:3:50"},{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"870:6:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"864:5:50"},"nodeType":"YulFunctionCall","src":"864:13:50"},{"kind":"number","nodeType":"YulLiteral","src":"879:4:50","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"860:3:50"},"nodeType":"YulFunctionCall","src":"860:24:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"848:6:50"},"nodeType":"YulFunctionCall","src":"848:37:50"},"nodeType":"YulExpressionStatement","src":"848:37:50"},{"nodeType":"YulVariableDeclaration","src":"898:14:50","value":{"kind":"number","nodeType":"YulLiteral","src":"908:4:50","type":"","value":"0x20"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"902:2:50","type":""}]},{"nodeType":"YulAssignment","src":"925:19:50","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"936:3:50"},{"name":"_1","nodeType":"YulIdentifier","src":"941:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"932:3:50"},"nodeType":"YulFunctionCall","src":"932:12:50"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"925:3:50"}]},{"nodeType":"YulAssignment","src":"957:25:50","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"971:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"979:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"967:3:50"},"nodeType":"YulFunctionCall","src":"967:15:50"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"957:6:50"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"798:1:50"},{"kind":"number","nodeType":"YulLiteral","src":"801:4:50","type":"","value":"0x03"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"795:2:50"},"nodeType":"YulFunctionCall","src":"795:11:50"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"807:18:50","statements":[{"nodeType":"YulAssignment","src":"809:14:50","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"818:1:50"},{"kind":"number","nodeType":"YulLiteral","src":"821:1:50","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"814:3:50"},"nodeType":"YulFunctionCall","src":"814:9:50"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"809:1:50"}]}]},"pre":{"nodeType":"YulBlock","src":"791:3:50","statements":[]},"src":"787:205:50"}]},"name":"abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"609:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"620:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"631:4:50","type":""}],"src":"497:501:50"},{"body":{"nodeType":"YulBlock","src":"1117:125:50","statements":[{"nodeType":"YulAssignment","src":"1127:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1139:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"1150:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1135:3:50"},"nodeType":"YulFunctionCall","src":"1135:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1127:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1169:9:50"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1184:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"1192:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1180:3:50"},"nodeType":"YulFunctionCall","src":"1180:55:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1162:6:50"},"nodeType":"YulFunctionCall","src":"1162:74:50"},"nodeType":"YulExpressionStatement","src":"1162:74:50"}]},"name":"abi_encode_tuple_t_contract$_IDAO_$2538__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1086:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1097:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1108:4:50","type":""}],"src":"1003:239:50"},{"body":{"nodeType":"YulBlock","src":"1361:229:50","statements":[{"nodeType":"YulAssignment","src":"1371:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1383:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"1394:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1379:3:50"},"nodeType":"YulFunctionCall","src":"1379:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1371:4:50"}]},{"body":{"nodeType":"YulBlock","src":"1439:111:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1460:1:50","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1467:3:50","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"1472:10:50","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1463:3:50"},"nodeType":"YulFunctionCall","src":"1463:20:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1453:6:50"},"nodeType":"YulFunctionCall","src":"1453:31:50"},"nodeType":"YulExpressionStatement","src":"1453:31:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1504:1:50","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"1507:4:50","type":"","value":"0x21"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1497:6:50"},"nodeType":"YulFunctionCall","src":"1497:15:50"},"nodeType":"YulExpressionStatement","src":"1497:15:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1532:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1535:4:50","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1525:6:50"},"nodeType":"YulFunctionCall","src":"1525:15:50"},"nodeType":"YulExpressionStatement","src":"1525:15:50"}]},"condition":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1419:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"1427:1:50","type":"","value":"3"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"1416:2:50"},"nodeType":"YulFunctionCall","src":"1416:13:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1409:6:50"},"nodeType":"YulFunctionCall","src":"1409:21:50"},"nodeType":"YulIf","src":"1406:144:50"},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1566:9:50"},{"name":"value0","nodeType":"YulIdentifier","src":"1577:6:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1559:6:50"},"nodeType":"YulFunctionCall","src":"1559:25:50"},"nodeType":"YulExpressionStatement","src":"1559:25:50"}]},"name":"abi_encode_tuple_t_enum$_PluginType_$3994__to_t_uint8__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1330:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1341:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1352:4:50","type":""}],"src":"1247:343:50"},{"body":{"nodeType":"YulBlock","src":"1696:76:50","statements":[{"nodeType":"YulAssignment","src":"1706:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1718:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"1729:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1714:3:50"},"nodeType":"YulFunctionCall","src":"1714:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1706:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1748:9:50"},{"name":"value0","nodeType":"YulIdentifier","src":"1759:6:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1741:6:50"},"nodeType":"YulFunctionCall","src":"1741:25:50"},"nodeType":"YulExpressionStatement","src":"1741:25:50"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1665:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1676:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1687:4:50","type":""}],"src":"1595:177:50"},{"body":{"nodeType":"YulBlock","src":"1822:109:50","statements":[{"body":{"nodeType":"YulBlock","src":"1909:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1918:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1921:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1911:6:50"},"nodeType":"YulFunctionCall","src":"1911:12:50"},"nodeType":"YulExpressionStatement","src":"1911:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1845:5:50"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1856:5:50"},{"kind":"number","nodeType":"YulLiteral","src":"1863:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1852:3:50"},"nodeType":"YulFunctionCall","src":"1852:54:50"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1842:2:50"},"nodeType":"YulFunctionCall","src":"1842:65:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1835:6:50"},"nodeType":"YulFunctionCall","src":"1835:73:50"},"nodeType":"YulIf","src":"1832:93:50"}]},"name":"validator_revert_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1811:5:50","type":""}],"src":"1777:154:50"},{"body":{"nodeType":"YulBlock","src":"2006:177:50","statements":[{"body":{"nodeType":"YulBlock","src":"2052:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2061:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2064:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2054:6:50"},"nodeType":"YulFunctionCall","src":"2054:12:50"},"nodeType":"YulExpressionStatement","src":"2054:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2027:7:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"2036:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2023:3:50"},"nodeType":"YulFunctionCall","src":"2023:23:50"},{"kind":"number","nodeType":"YulLiteral","src":"2048:2:50","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2019:3:50"},"nodeType":"YulFunctionCall","src":"2019:32:50"},"nodeType":"YulIf","src":"2016:52:50"},{"nodeType":"YulVariableDeclaration","src":"2077:36:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2103:9:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2090:12:50"},"nodeType":"YulFunctionCall","src":"2090:23:50"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"2081:5:50","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2147:5:50"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"2122:24:50"},"nodeType":"YulFunctionCall","src":"2122:31:50"},"nodeType":"YulExpressionStatement","src":"2122:31:50"},{"nodeType":"YulAssignment","src":"2162:15:50","value":{"name":"value","nodeType":"YulIdentifier","src":"2172:5:50"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2162:6:50"}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1972:9:50","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1983:7:50","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1995:6:50","type":""}],"src":"1936:247:50"},{"body":{"nodeType":"YulBlock","src":"2271:177:50","statements":[{"body":{"nodeType":"YulBlock","src":"2317:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2326:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2329:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2319:6:50"},"nodeType":"YulFunctionCall","src":"2319:12:50"},"nodeType":"YulExpressionStatement","src":"2319:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2292:7:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"2301:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2288:3:50"},"nodeType":"YulFunctionCall","src":"2288:23:50"},{"kind":"number","nodeType":"YulLiteral","src":"2313:2:50","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2284:3:50"},"nodeType":"YulFunctionCall","src":"2284:32:50"},"nodeType":"YulIf","src":"2281:52:50"},{"nodeType":"YulVariableDeclaration","src":"2342:36:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2368:9:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2355:12:50"},"nodeType":"YulFunctionCall","src":"2355:23:50"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"2346:5:50","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2412:5:50"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"2387:24:50"},"nodeType":"YulFunctionCall","src":"2387:31:50"},"nodeType":"YulExpressionStatement","src":"2387:31:50"},{"nodeType":"YulAssignment","src":"2427:15:50","value":{"name":"value","nodeType":"YulIdentifier","src":"2437:5:50"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2427:6:50"}]}]},"name":"abi_decode_tuple_t_contract$_IDAO_$2538","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2237:9:50","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2248:7:50","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2260:6:50","type":""}],"src":"2188:260:50"},{"body":{"nodeType":"YulBlock","src":"2554:125:50","statements":[{"nodeType":"YulAssignment","src":"2564:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2576:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"2587:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2572:3:50"},"nodeType":"YulFunctionCall","src":"2572:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2564:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2606:9:50"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2621:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"2629:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2617:3:50"},"nodeType":"YulFunctionCall","src":"2617:55:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2599:6:50"},"nodeType":"YulFunctionCall","src":"2599:74:50"},"nodeType":"YulExpressionStatement","src":"2599:74:50"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2523:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"2534:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2545:4:50","type":""}],"src":"2453:226:50"},{"body":{"nodeType":"YulBlock","src":"2858:233:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2875:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"2886:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2868:6:50"},"nodeType":"YulFunctionCall","src":"2868:21:50"},"nodeType":"YulExpressionStatement","src":"2868:21:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2909:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"2920:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2905:3:50"},"nodeType":"YulFunctionCall","src":"2905:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"2925:2:50","type":"","value":"43"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2898:6:50"},"nodeType":"YulFunctionCall","src":"2898:30:50"},"nodeType":"YulExpressionStatement","src":"2898:30:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2948:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"2959:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2944:3:50"},"nodeType":"YulFunctionCall","src":"2944:18:50"},{"hexValue":"496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069","kind":"string","nodeType":"YulLiteral","src":"2964:34:50","type":"","value":"Initializable: contract is not i"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2937:6:50"},"nodeType":"YulFunctionCall","src":"2937:62:50"},"nodeType":"YulExpressionStatement","src":"2937:62:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3019:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"3030:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3015:3:50"},"nodeType":"YulFunctionCall","src":"3015:18:50"},{"hexValue":"6e697469616c697a696e67","kind":"string","nodeType":"YulLiteral","src":"3035:13:50","type":"","value":"nitializing"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3008:6:50"},"nodeType":"YulFunctionCall","src":"3008:41:50"},"nodeType":"YulExpressionStatement","src":"3008:41:50"},{"nodeType":"YulAssignment","src":"3058:27:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3070:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"3081:3:50","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3066:3:50"},"nodeType":"YulFunctionCall","src":"3066:19:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3058:4:50"}]}]},"name":"abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2835:9:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2849:4:50","type":""}],"src":"2684:407:50"}]},"contents":"{\n { }\n function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n if iszero(eq(value, and(value, shl(224, 0xffffffff)))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 96)\n let pos := headStart\n pos := headStart\n let srcPtr := value0\n let i := 0\n for { } lt(i, 0x03) { i := add(i, 1) }\n {\n mstore(pos, and(mload(srcPtr), 0xff))\n let _1 := 0x20\n pos := add(pos, _1)\n srcPtr := add(srcPtr, _1)\n }\n }\n function abi_encode_tuple_t_contract$_IDAO_$2538__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_encode_tuple_t_enum$_PluginType_$3994__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n if iszero(lt(value0, 3))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x21)\n revert(0, 0x24)\n }\n mstore(headStart, value0)\n }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function validator_revert_address(value)\n {\n if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n }\n function abi_decode_tuple_t_contract$_IDAO_$2538(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 43)\n mstore(add(headStart, 64), \"Initializable: contract is not i\")\n mstore(add(headStart, 96), \"nitializing\")\n tail := add(headStart, 128)\n }\n}","id":50,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100885760003560e01c80636accab8c1161005b5780636accab8c146100fe578063776d1a01146101155780638883bbd71461012a578063d4b839921461013d57600080fd5b806301ffc9a71461008d5780632ae9c600146100b55780634162169f146100ca57806341de6830146100ef575b600080fd5b6100a061009b36600461036f565b610150565b60405190151581526020015b60405180910390f35b6100bd6101a1565b6040516100ac91906103a0565b6065546001600160a01b03165b6040516001600160a01b0390911681526020016100ac565b60016040516100ac91906103d4565b61010760985481565b6040519081526020016100ac565b610128610123366004610411565b6101cb565b005b610128610138366004610411565b61022a565b6097546100d7906001600160a01b031681565b60006001600160e01b0319821663041de68360e41b148061018057506001600160e01b03198216621574e360e91b145b8061019b57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6101a9610351565b5060408051606081018252600181526004602082015260009181019190915290565b609780546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d690600090a35050565b6102338161023b565b506001609855565b600054610100900460ff166102ab5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084015b60405180910390fd5b6102b4816102b7565b50565b600054610100900460ff166103225760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016102a2565b6065805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b60405180606001604052806003906020820280368337509192915050565b60006020828403121561038157600080fd5b81356001600160e01b03198116811461039957600080fd5b9392505050565b60608101818360005b60038110156103cb57815160ff168352602092830192909101906001016103a9565b50505092915050565b60208101600383106103f657634e487b7160e01b600052602160045260246000fd5b91905290565b6001600160a01b03811681146102b457600080fd5b60006020828403121561042357600080fd5b8135610399816103fc56fea164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x88 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6ACCAB8C GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x6ACCAB8C EQ PUSH2 0xFE JUMPI DUP1 PUSH4 0x776D1A01 EQ PUSH2 0x115 JUMPI DUP1 PUSH4 0x8883BBD7 EQ PUSH2 0x12A JUMPI DUP1 PUSH4 0xD4B83992 EQ PUSH2 0x13D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x8D JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0xB5 JUMPI DUP1 PUSH4 0x4162169F EQ PUSH2 0xCA JUMPI DUP1 PUSH4 0x41DE6830 EQ PUSH2 0xEF JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA0 PUSH2 0x9B CALLDATASIZE PUSH1 0x4 PUSH2 0x36F JUMP JUMPDEST PUSH2 0x150 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xBD PUSH2 0x1A1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xAC SWAP2 SWAP1 PUSH2 0x3A0 JUMP JUMPDEST PUSH1 0x65 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xAC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x40 MLOAD PUSH2 0xAC SWAP2 SWAP1 PUSH2 0x3D4 JUMP JUMPDEST PUSH2 0x107 PUSH1 0x98 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xAC JUMP JUMPDEST PUSH2 0x128 PUSH2 0x123 CALLDATASIZE PUSH1 0x4 PUSH2 0x411 JUMP JUMPDEST PUSH2 0x1CB JUMP JUMPDEST STOP JUMPDEST PUSH2 0x128 PUSH2 0x138 CALLDATASIZE PUSH1 0x4 PUSH2 0x411 JUMP JUMPDEST PUSH2 0x22A JUMP JUMPDEST PUSH1 0x97 SLOAD PUSH2 0xD7 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x41DE683 PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x180 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x19B JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1A9 PUSH2 0x351 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x97 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP2 SWAP1 DUP3 SWAP1 PUSH32 0x90CC2F570A6EB594B1580EA3E41247D2D73A55281889E86BD4EC2FC29C7E62D6 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH2 0x233 DUP2 PUSH2 0x23B JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x98 SSTORE JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x2AB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2B4 DUP2 PUSH2 0x2B7 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x322 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x2A2 JUMP JUMPDEST PUSH1 0x65 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x381 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x399 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0x3CB JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x3A9 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH1 0x3 DUP4 LT PUSH2 0x3F6 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 SWAP1 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x2B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x423 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x399 DUP2 PUSH2 0x3FC JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"1087:198:26:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2263:288:39;;;;;;:::i;:::-;;:::i;:::-;;;470:14:50;;463:22;445:41;;433:2;418:18;2263:288:39;;;;;;;;631:98:49;;;:::i;:::-;;;;;;;:::i;1200:70:35:-;1259:4;;-1:-1:-1;;;;;1259:4:35;1200:70;;;-1:-1:-1;;;;;1180:55:50;;;1162:74;;1150:2;1135:18;1200:70:35;1003:239:50;1947:108:39;2028:20;1947:108;;;;;;:::i;1144:21:26:-;;;;;;;;;1741:25:50;;;1729:2;1714:18;1144:21:26;1595:177:50;1747:166:39;;;;;;:::i;:::-;;:::i;:::-;;1172:111:26;;;;;;:::i;:::-;;:::i;936:21:39:-;;;;;-1:-1:-1;;;;;936:21:39;;;2263:288;2349:4;-1:-1:-1;;;;;;2384:41:39;;-1:-1:-1;;;2384:41:39;;:107;;-1:-1:-1;;;;;;;2441:50:39;;-1:-1:-1;;;2441:50:39;2384:107;:160;;;-1:-1:-1;;;;;;;;;;1189:51:10;;;2507:37:39;2365:179;2263:288;-1:-1:-1;;2263:288:39:o;631:98:49:-;679:15;;:::i;:::-;-1:-1:-1;706:16:49;;;;;;;;714:1;706:16;;717:1;706:16;;;;-1:-1:-1;706:16:49;;;;;;;;631:98::o;1747:166:39:-;1825:6;;;-1:-1:-1;;;;;1841:16:39;;;-1:-1:-1;;1841:16:39;;;;;;;1872:34;;1825:6;;;1841:16;1825:6;;1872:34;;1800:22;;1872:34;1790:123;1747:166;:::o;1172:111:26:-;1228:28;1251:4;1228:22;:28::i;:::-;-1:-1:-1;1275:1:26;1266:6;:10;1172:111::o;1486:133:39:-;5374:13:4;;;;;;;5366:69;;;;-1:-1:-1;;;5366:69:4;;2886:2:50;5366:69:4;;;2868:21:50;2925:2;2905:18;;;2898:30;2964:34;2944:18;;;2937:62;-1:-1:-1;;;3015:18:50;;;3008:41;3066:19;;5366:69:4;;;;;;;;;1573:39:39::1;1607:4;1573:33;:39::i;:::-;1486:133:::0;:::o;1010:108:35:-;5374:13:4;;;;;;;5366:69;;;;-1:-1:-1;;;5366:69:4;;2886:2:50;5366:69:4;;;2868:21:50;2925:2;2905:18;;;2898:30;2964:34;2944:18;;;2937:62;-1:-1:-1;;;3015:18:50;;;3008:41;3066:19;;5366:69:4;2684:407:50;5366:69:4;1100:4:35::1;:11:::0;;-1:-1:-1;;1100:11:35::1;-1:-1:-1::0;;;;;1100:11:35;;;::::1;::::0;;;::::1;::::0;;1010:108::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:286:50:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:50;;209:43;;199:71;;266:1;263;256:12;199:71;289:5;14:286;-1:-1:-1;;;14:286:50:o;497:501::-;673:2;658:18;;662:9;753:6;631:4;787:205;801:4;798:1;795:11;787:205;;;864:13;;879:4;860:24;848:37;;908:4;932:12;;;;967:15;;;;821:1;814:9;787:205;;;791:3;;;497:501;;;;:::o;1247:343::-;1394:2;1379:18;;1427:1;1416:13;;1406:144;;1472:10;1467:3;1463:20;1460:1;1453:31;1507:4;1504:1;1497:15;1535:4;1532:1;1525:15;1406:144;1559:25;;;1247:343;:::o;1777:154::-;-1:-1:-1;;;;;1856:5:50;1852:54;1845:5;1842:65;1832:93;;1921:1;1918;1911:12;1936:247;1995:6;2048:2;2036:9;2027:7;2023:23;2019:32;2016:52;;;2064:1;2061;2054:12;2016:52;2103:9;2090:23;2122:31;2147:5;2122:31;:::i"},"gasEstimates":{"creation":{"codeDepositCost":"216600","executionCost":"29846","totalCost":"246446"},"external":{"dao()":"2365","notAnInitializer(address)":"infinite","pluginType()":"294","protocolVersion()":"infinite","setTarget(address)":"26112","state1()":"2295","supportsInterface(bytes4)":"482","target()":"2403"}},"methodIdentifiers":{"dao()":"4162169f","notAnInitializer(address)":"8883bbd7","pluginType()":"41de6830","protocolVersion()":"2ae9c600","setTarget(address)":"776d1a01","state1()":"6accab8c","supportsInterface(bytes4)":"01ffc9a7","target()":"d4b83992"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousTarget\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newTarget\",\"type\":\"address\"}],\"name\":\"TargetSet\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"dao\",\"outputs\":[{\"internalType\":\"contract IDAO\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IDAO\",\"name\":\"_dao\",\"type\":\"address\"}],\"name\":\"notAnInitializer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pluginType\",\"outputs\":[{\"internalType\":\"enum IPlugin.PluginType\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"protocolVersion\",\"outputs\":[{\"internalType\":\"uint8[3]\",\"name\":\"\",\"type\":\"uint8[3]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_target\",\"type\":\"address\"}],\"name\":\"setTarget\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"state1\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"target\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"DO NOT USE IN PRODUCTION!\",\"kind\":\"dev\",\"methods\":{\"dao()\":{\"returns\":{\"_0\":\"The DAO contract.\"}},\"protocolVersion()\":{\"details\":\"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\",\"returns\":{\"_0\":\"Returns the semantic Aragon OSx protocol version number.\"}},\"setTarget(address)\":{\"details\":\"Sets the target to a new target (`newTarget`).\"},\"supportsInterface(bytes4)\":{\"params\":{\"_interfaceId\":\"The ID of the interface.\"},\"returns\":{\"_0\":\"Returns `true` if the interface is supported.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"dao()\":{\"notice\":\"Returns the DAO contract.\"},\"pluginType()\":{\"notice\":\"Returns the plugin's type\"},\"protocolVersion()\":{\"notice\":\"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\"},\"setTarget(address)\":{\"notice\":\"Can only be called by the current owner. TODO\"},\"supportsInterface(bytes4)\":{\"notice\":\"Checks if this or the parent contract supports an interface by its ID.\"}},\"notice\":\"A mock cloneable plugin missing an initializer function.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/mocks/plugin/PluginCloneableMock.sol\":\"PluginCloneableMockBad\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n function __Context_init() internal onlyInitializing {\\n }\\n\\n function __Context_init_unchained() internal onlyInitializing {\\n }\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n function _contextSuffixLength() internal view virtual returns (uint256) {\\n return 0;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x75097e35253e7fb282ee4d7f27a80eaacfa759923185bf17302a89cbc059c5ef\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165Upgradeable.sol\\\";\\nimport {Initializable} from \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165Upgradeable is Initializable, IERC165Upgradeable {\\n function __ERC165_init() internal onlyInitializing {\\n }\\n\\n function __ERC165_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165Upgradeable).interfaceId;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0xd90d7723512df65ae417adaf0801042940f0dabd60039ceeaffe34aa5b238da1\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165Upgradeable {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\"},\"src/dao/IDAO.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IDAO\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for DAOs within the Aragon App DAO framework.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IDAO {\\n /// @notice The action struct to be consumed by the DAO's `execute` function resulting in an external call.\\n /// @param to The address to call.\\n /// @param value The native token value to be sent with the call.\\n /// @param data The bytes-encoded function selector and calldata for the call.\\n struct Action {\\n address to;\\n uint256 value;\\n bytes data;\\n }\\n\\n /// @notice Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\\n /// @param _where The address of the contract.\\n /// @param _who The address of a EOA or contract to give the permissions.\\n /// @param _permissionId The permission identifier.\\n /// @param _data The optional data passed to the `PermissionCondition` registered.\\n /// @return Returns true if the address has permission, false if not.\\n function hasPermission(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes memory _data\\n ) external view returns (bool);\\n\\n /// @notice Updates the DAO metadata (e.g., an IPFS hash).\\n /// @param _metadata The IPFS hash of the new metadata object.\\n function setMetadata(bytes calldata _metadata) external;\\n\\n /// @notice Emitted when the DAO metadata is updated.\\n /// @param metadata The IPFS hash of the new metadata object.\\n event MetadataSet(bytes metadata);\\n\\n /// @notice Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted.\\n /// @param _callId The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce.\\n /// @param _actions The array of actions.\\n /// @param _allowFailureMap A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @return The array of results obtained from the executed actions in `bytes`.\\n /// @return The resulting failure map containing the actions have actually failed.\\n function execute(\\n bytes32 _callId,\\n Action[] memory _actions,\\n uint256 _allowFailureMap\\n ) external returns (bytes[] memory, uint256);\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param actor The address of the caller.\\n /// @param callId The ID of the call.\\n /// @param actions The array of actions executed.\\n /// @param allowFailureMap The allow failure map encoding which actions are allowed to fail.\\n /// @param failureMap The failure map encoding which actions have failed.\\n /// @param execResults The array with the results of the executed actions.\\n /// @dev The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce.\\n event Executed(\\n address indexed actor,\\n bytes32 callId,\\n Action[] actions,\\n uint256 allowFailureMap,\\n uint256 failureMap,\\n bytes[] execResults\\n );\\n\\n /// @notice Emitted when a standard callback is registered.\\n /// @param interfaceId The ID of the interface.\\n /// @param callbackSelector The selector of the callback function.\\n /// @param magicNumber The magic number to be registered for the callback function selector.\\n event StandardCallbackRegistered(\\n bytes4 interfaceId,\\n bytes4 callbackSelector,\\n bytes4 magicNumber\\n );\\n\\n /// @notice Deposits (native) tokens to the DAO contract with a reference string.\\n /// @param _token The address of the token or address(0) in case of the native token.\\n /// @param _amount The amount of tokens to deposit.\\n /// @param _reference The reference describing the deposit reason.\\n function deposit(address _token, uint256 _amount, string calldata _reference) external payable;\\n\\n /// @notice Emitted when a token deposit has been made to the DAO.\\n /// @param sender The address of the sender.\\n /// @param token The address of the deposited token.\\n /// @param amount The amount of tokens deposited.\\n /// @param _reference The reference describing the deposit reason.\\n event Deposited(\\n address indexed sender,\\n address indexed token,\\n uint256 amount,\\n string _reference\\n );\\n\\n /// @notice Emitted when a native token deposit has been made to the DAO.\\n /// @dev This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).\\n /// @param sender The address of the sender.\\n /// @param amount The amount of native tokens deposited.\\n event NativeTokenDeposited(address sender, uint256 amount);\\n\\n /// @notice Setter for the trusted forwarder verifying the meta transaction.\\n /// @param _trustedForwarder The trusted forwarder address.\\n function setTrustedForwarder(address _trustedForwarder) external;\\n\\n /// @notice Getter for the trusted forwarder verifying the meta transaction.\\n /// @return The trusted forwarder address.\\n function getTrustedForwarder() external view returns (address);\\n\\n /// @notice Emitted when a new TrustedForwarder is set on the DAO.\\n /// @param forwarder the new forwarder address.\\n event TrustedForwarderSet(address forwarder);\\n\\n /// @notice Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\\n /// @param _hash The hash of the data to be signed.\\n /// @param _signature The signature byte array associated with `_hash`.\\n /// @return Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not.\\n function isValidSignature(bytes32 _hash, bytes memory _signature) external returns (bytes4);\\n\\n /// @notice Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\\n /// @param _interfaceId The ID of the interface.\\n /// @param _callbackSelector The selector of the callback function.\\n /// @param _magicNumber The magic number to be registered for the function signature.\\n function registerStandardCallback(\\n bytes4 _interfaceId,\\n bytes4 _callbackSelector,\\n bytes4 _magicNumber\\n ) external;\\n\\n /// @notice Removed function being left here to not corrupt the IDAO interface ID. Any call will revert.\\n /// @dev Introduced in v1.0.0. Removed in v1.4.0.\\n function setSignatureValidator(address) external;\\n}\\n\",\"keccak256\":\"0xb7f615523c26de042edce98731c658f44a1edb2464387ac1b642c4c69f57128e\",\"license\":\"AGPL-3.0-or-later\"},\"src/mocks/plugin/PluginCloneableMock.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\n/* solhint-disable one-contract-per-file */\\npragma solidity ^0.8.8;\\n\\nimport {PluginCloneable} from \\\"../../plugin/PluginCloneable.sol\\\";\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice A mock cloneable plugin to be deployed via the minimal proxy pattern.\\n/// v1.1 (Release 1, Build 1)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginCloneableMockBuild1 is PluginCloneable {\\n uint256 public state1;\\n\\n function initialize(IDAO _dao) external initializer {\\n __PluginCloneable_init(_dao);\\n state1 = 1;\\n }\\n}\\n\\n/// @notice A mock cloneable plugin to be deployed via the minimal proxy pattern.\\n/// v1.1 (Release 1, Build 2)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginCloneableMockBuild2 is PluginCloneable {\\n uint256 public state1;\\n uint256 public state2;\\n\\n function initialize(IDAO _dao) external initializer {\\n __PluginCloneable_init(_dao);\\n state1 = 1;\\n state2 = 2;\\n }\\n}\\n\\n/// @notice A mock cloneable plugin missing an initializer function.\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginCloneableMockBad is PluginCloneable {\\n uint256 public state1;\\n\\n function notAnInitializer(IDAO _dao) external {\\n __PluginCloneable_init(_dao);\\n state1 = 1;\\n }\\n}\\n\",\"keccak256\":\"0x1bb271f7b553040fad7907e97b860aa833aec9aefe7477e00ba7bdfd80d84e98\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/DaoAuthorizableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ContextUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\\\";\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\nimport {_auth} from \\\"./auth.sol\\\";\\n\\n/// @title DaoAuthorizableUpgradeable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract contract providing a meta-transaction compatible modifier for upgradeable or cloneable contracts to authorize function calls through an associated DAO.\\n/// @dev Make sure to call `__DaoAuthorizableUpgradeable_init` during initialization of the inheriting contract.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract DaoAuthorizableUpgradeable is ContextUpgradeable {\\n /// @notice The associated DAO managing the permissions of inheriting contracts.\\n IDAO private dao_;\\n\\n /// @notice Initializes the contract by setting the associated DAO.\\n /// @param _dao The associated DAO address.\\n // solhint-disable-next-line func-name-mixedcase\\n function __DaoAuthorizableUpgradeable_init(IDAO _dao) internal onlyInitializing {\\n dao_ = _dao;\\n }\\n\\n /// @notice Returns the DAO contract.\\n /// @return The DAO contract.\\n function dao() public view returns (IDAO) {\\n return dao_;\\n }\\n\\n /// @notice A modifier to make functions on inheriting contracts authorized. Permissions to call the function are checked through the associated DAO's permission manager.\\n /// @param _permissionId The permission identifier required to call the method this modifier is applied to.\\n modifier auth(bytes32 _permissionId) {\\n _auth(dao_, address(this), _msgSender(), _permissionId, _msgData());\\n _;\\n }\\n\\n /// @notice This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain (see [OpenZeppelin's guide about storage gaps](https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps)).\\n uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0x7fac6b01b037ba1cb9d6a22d3f43b0785037dcf496ffb672434d9bf7227d2585\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/auth.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice Thrown if a call is unauthorized in the associated DAO.\\n/// @param dao The associated DAO.\\n/// @param where The context in which the authorization reverted.\\n/// @param who The address (EOA or contract) missing the permission.\\n/// @param permissionId The permission identifier.\\nerror DaoUnauthorized(address dao, address where, address who, bytes32 permissionId);\\n\\n/// @notice A free function checking if a caller is granted permissions on a target contract via a permission identifier that redirects the approval to a `PermissionCondition` if this was specified in the setup.\\n/// @param _where The address of the target contract for which `who` receives permission.\\n/// @param _who The address (EOA or contract) owning the permission.\\n/// @param _permissionId The permission identifier.\\n/// @param _data The optional data passed to the `PermissionCondition` registered.\\n/// @custom:security-contact sirt@aragon.org\\nfunction _auth(\\n IDAO _dao,\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes calldata _data\\n) view {\\n if (!_dao.hasPermission(_where, _who, _permissionId, _data))\\n revert DaoUnauthorized({\\n dao: address(_dao),\\n where: _where,\\n who: _who,\\n permissionId: _permissionId\\n });\\n}\\n\",\"keccak256\":\"0x878764b4f87fe0651fb3798fb9cb87c952f8c6caf6ae79c7f09de84df6c00298\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/IPlugin.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IPlugin\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the traits of a plugin.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IPlugin {\\n enum PluginType {\\n UUPS,\\n Cloneable,\\n Constructable\\n }\\n\\n /// @notice Returns the plugin's type\\n function pluginType() external view returns (PluginType);\\n}\\n\",\"keccak256\":\"0xc57cd0d10b6380ab7f54c713a509e88fd8f4ad9288313a0e8e12b8887817ddfe\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/PluginCloneable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ERC165Upgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\\\";\\n\\nimport {IProtocolVersion} from \\\"../utils/versioning/IProtocolVersion.sol\\\";\\nimport {ProtocolVersion} from \\\"../utils/versioning/ProtocolVersion.sol\\\";\\nimport {DaoAuthorizableUpgradeable} from \\\"../permission/auth/DaoAuthorizableUpgradeable.sol\\\";\\nimport {IDAO} from \\\"../dao/IDAO.sol\\\";\\nimport {IPlugin} from \\\"./IPlugin.sol\\\";\\n\\n/// @title PluginCloneable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract, non-upgradeable contract to inherit from when creating a plugin being deployed via the minimal clones pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)).\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract PluginCloneable is\\n IPlugin,\\n ERC165Upgradeable,\\n DaoAuthorizableUpgradeable,\\n ProtocolVersion\\n{\\n address public target;\\n\\n /// @dev Emitted each time the Target is set.\\n event TargetSet(address indexed previousTarget, address indexed newTarget);\\n\\n /// @notice Disables the initializers on the implementation contract to prevent it from being left uninitialized.\\n /// @custom:oz-upgrades-unsafe-allow constructor\\n constructor() {\\n _disableInitializers();\\n }\\n\\n /// @notice Initializes the plugin by storing the associated DAO.\\n /// @param _dao The DAO contract.\\n // solhint-disable-next-line func-name-mixedcase\\n function __PluginCloneable_init(IDAO _dao) internal virtual onlyInitializing {\\n __DaoAuthorizableUpgradeable_init(_dao);\\n }\\n\\n /// @dev Sets the target to a new target (`newTarget`).\\n /// @notice Can only be called by the current owner. TODO\\n function setTarget(address _target) public {\\n address previousTarget = target;\\n target = _target;\\n emit TargetSet(previousTarget, _target);\\n }\\n\\n /// @inheritdoc IPlugin\\n function pluginType() public pure override returns (PluginType) {\\n return PluginType.Cloneable;\\n }\\n\\n /// @notice Checks if this or the parent contract supports an interface by its ID.\\n /// @param _interfaceId The ID of the interface.\\n /// @return Returns `true` if the interface is supported.\\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\\n return\\n _interfaceId == type(IPlugin).interfaceId ||\\n _interfaceId == type(IProtocolVersion).interfaceId ||\\n super.supportsInterface(_interfaceId);\\n }\\n\\n /// @notice Forwards the actions to the currently set `target` for the execution.\\n /// @param _callId Identifier for this execution.\\n /// @param _actions actions that will be eventually called.\\n /// @param _allowFailureMap Bitmap-encoded number. TODO:\\n /// @return execResults address of the implementation contract.\\n /// @return failureMap address of the implementation contract.\\n function _execute(\\n bytes32 _callId,\\n IDAO.Action[] calldata _actions,\\n uint256 _allowFailureMap\\n ) internal virtual returns (bytes[] memory execResults, uint256 failureMap) {\\n (execResults, failureMap) = IDAO(target).execute(_callId, _actions, _allowFailureMap);\\n }\\n\\n /// @notice Forwards the actions to the `target` for the execution.\\n /// @param _target Forwards the actions to the specific target.\\n /// @param _callId Identifier for this execution.\\n /// @param _actions actions that will be eventually called.\\n /// @param _allowFailureMap Bitmap-encoded number. TODO:\\n /// @return execResults address of the implementation contract.\\n /// @return failureMap address of the implementation contract.\\n function _execute(\\n address _target,\\n bytes32 _callId,\\n IDAO.Action[] calldata _actions,\\n uint256 _allowFailureMap\\n ) internal virtual returns (bytes[] memory execResults, uint256 failureMap) {\\n (execResults, failureMap) = IDAO(_target).execute(_callId, _actions, _allowFailureMap);\\n }\\n}\\n\",\"keccak256\":\"0x23fff653e79f6d079073bab2f878051cf85c8e3cfa7ef359f3be92fc65ca2501\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/IProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IProtocolVersion\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the semantic Aragon OSx protocol version number.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IProtocolVersion {\\n /// @notice Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\\n /// @return _version Returns the semantic Aragon OSx protocol version number.\\n /// @dev This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\\n function protocolVersion() external view returns (uint8[3] memory _version);\\n}\\n\",\"keccak256\":\"0x00a4da654d21dc1bdadbdc8bd54bb86c378c56f85e461ccc31303628ea621361\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/ProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IProtocolVersion} from \\\"./IProtocolVersion.sol\\\";\\n\\n/// @title ProtocolVersion\\n/// @author Aragon X - 2023\\n/// @notice An abstract, stateless, non-upgradeable contract providing the current Aragon OSx protocol version number.\\n/// @dev Do not add any new variables to this contract that would shift down storage in the inheritance chain.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract ProtocolVersion is IProtocolVersion {\\n // IMPORTANT: Do not add any storage variable, see the above notice.\\n\\n /// @inheritdoc IProtocolVersion\\n function protocolVersion() public pure returns (uint8[3] memory) {\\n return [1, 4, 0];\\n }\\n}\\n\",\"keccak256\":\"0x3975c937be935f687c6b6b8f379071232681e98cf04b175d72781b819ea52bdb\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[{"astId":372,"contract":"src/mocks/plugin/PluginCloneableMock.sol:PluginCloneableMockBad","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":375,"contract":"src/mocks/plugin/PluginCloneableMock.sol:PluginCloneableMockBad","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":1280,"contract":"src/mocks/plugin/PluginCloneableMock.sol:PluginCloneableMockBad","label":"__gap","offset":0,"slot":"1","type":"t_array(t_uint256)50_storage"},{"astId":1051,"contract":"src/mocks/plugin/PluginCloneableMock.sol:PluginCloneableMockBad","label":"__gap","offset":0,"slot":"51","type":"t_array(t_uint256)50_storage"},{"astId":3887,"contract":"src/mocks/plugin/PluginCloneableMock.sol:PluginCloneableMockBad","label":"dao_","offset":0,"slot":"101","type":"t_contract(IDAO)2538"},{"astId":3936,"contract":"src/mocks/plugin/PluginCloneableMock.sol:PluginCloneableMockBad","label":"__gap","offset":0,"slot":"102","type":"t_array(t_uint256)49_storage"},{"astId":4196,"contract":"src/mocks/plugin/PluginCloneableMock.sol:PluginCloneableMockBad","label":"target","offset":0,"slot":"151","type":"t_address"},{"astId":2601,"contract":"src/mocks/plugin/PluginCloneableMock.sol:PluginCloneableMockBad","label":"state1","offset":0,"slot":"152","type":"t_uint256"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_array(t_uint256)49_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[49]","numberOfBytes":"1568"},"t_array(t_uint256)50_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[50]","numberOfBytes":"1600"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_contract(IDAO)2538":{"encoding":"inplace","label":"contract IDAO","numberOfBytes":"20"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"kind":"user","methods":{"dao()":{"notice":"Returns the DAO contract."},"pluginType()":{"notice":"Returns the plugin's type"},"protocolVersion()":{"notice":"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with."},"setTarget(address)":{"notice":"Can only be called by the current owner. TODO"},"supportsInterface(bytes4)":{"notice":"Checks if this or the parent contract supports an interface by its ID."}},"notice":"A mock cloneable plugin missing an initializer function.","version":1}},"PluginCloneableMockBuild1":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousTarget","type":"address"},{"indexed":true,"internalType":"address","name":"newTarget","type":"address"}],"name":"TargetSet","type":"event"},{"inputs":[],"name":"dao","outputs":[{"internalType":"contract IDAO","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IDAO","name":"_dao","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pluginType","outputs":[{"internalType":"enum IPlugin.PluginType","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"protocolVersion","outputs":[{"internalType":"uint8[3]","name":"","type":"uint8[3]"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_target","type":"address"}],"name":"setTarget","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"state1","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"target","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"DO NOT USE IN PRODUCTION!","kind":"dev","methods":{"dao()":{"returns":{"_0":"The DAO contract."}},"protocolVersion()":{"details":"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.","returns":{"_0":"Returns the semantic Aragon OSx protocol version number."}},"setTarget(address)":{"details":"Sets the target to a new target (`newTarget`)."},"supportsInterface(bytes4)":{"params":{"_interfaceId":"The ID of the interface."},"returns":{"_0":"Returns `true` if the interface is supported."}}},"version":1},"evm":{"bytecode":{"functionDebugData":{"@_4211":{"entryPoint":null,"id":4211,"parameterSlots":0,"returnSlots":0},"@_disableInitializers_515":{"entryPoint":30,"id":515,"parameterSlots":0,"returnSlots":0},"abi_encode_tuple_t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:608:50","statements":[{"nodeType":"YulBlock","src":"6:3:50","statements":[]},{"body":{"nodeType":"YulBlock","src":"188:229:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"205:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"216:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"198:6:50"},"nodeType":"YulFunctionCall","src":"198:21:50"},"nodeType":"YulExpressionStatement","src":"198:21:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"239:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"250:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"235:3:50"},"nodeType":"YulFunctionCall","src":"235:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"255:2:50","type":"","value":"39"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"228:6:50"},"nodeType":"YulFunctionCall","src":"228:30:50"},"nodeType":"YulExpressionStatement","src":"228:30:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"278:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"289:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"274:3:50"},"nodeType":"YulFunctionCall","src":"274:18:50"},{"hexValue":"496e697469616c697a61626c653a20636f6e747261637420697320696e697469","kind":"string","nodeType":"YulLiteral","src":"294:34:50","type":"","value":"Initializable: contract is initi"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"267:6:50"},"nodeType":"YulFunctionCall","src":"267:62:50"},"nodeType":"YulExpressionStatement","src":"267:62:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"349:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"360:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"345:3:50"},"nodeType":"YulFunctionCall","src":"345:18:50"},{"hexValue":"616c697a696e67","kind":"string","nodeType":"YulLiteral","src":"365:9:50","type":"","value":"alizing"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"338:6:50"},"nodeType":"YulFunctionCall","src":"338:37:50"},"nodeType":"YulExpressionStatement","src":"338:37:50"},{"nodeType":"YulAssignment","src":"384:27:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"396:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"407:3:50","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"392:3:50"},"nodeType":"YulFunctionCall","src":"392:19:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"384:4:50"}]}]},"name":"abi_encode_tuple_t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"165:9:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"179:4:50","type":""}],"src":"14:403:50"},{"body":{"nodeType":"YulBlock","src":"519:87:50","statements":[{"nodeType":"YulAssignment","src":"529:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"541:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"552:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"537:3:50"},"nodeType":"YulFunctionCall","src":"537:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"529:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"571:9:50"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"586:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"594:4:50","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"582:3:50"},"nodeType":"YulFunctionCall","src":"582:17:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"564:6:50"},"nodeType":"YulFunctionCall","src":"564:36:50"},"nodeType":"YulExpressionStatement","src":"564:36:50"}]},"name":"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"488:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"499:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"510:4:50","type":""}],"src":"422:184:50"}]},"contents":"{\n { }\n function abi_encode_tuple_t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 39)\n mstore(add(headStart, 64), \"Initializable: contract is initi\")\n mstore(add(headStart, 96), \"alizing\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xff))\n }\n}","id":50,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"608060405234801561001057600080fd5b5061001961001e565b6100dd565b600054610100900460ff161561008a5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116146100db576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b610551806100ec6000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c80636accab8c1161005b5780636accab8c146100fe578063776d1a0114610115578063c4d66de81461012a578063d4b839921461013d57600080fd5b806301ffc9a71461008d5780632ae9c600146100b55780634162169f146100ca57806341de6830146100ef575b600080fd5b6100a061009b366004610485565b610150565b60405190151581526020015b60405180910390f35b6100bd6101a1565b6040516100ac91906104b6565b6065546001600160a01b03165b6040516001600160a01b0390911681526020016100ac565b60016040516100ac91906104ea565b61010760985481565b6040519081526020016100ac565b610128610123366004610527565b6101cb565b005b610128610138366004610527565b61022a565b6097546100d7906001600160a01b031681565b60006001600160e01b0319821663041de68360e41b148061018057506001600160e01b03198216621574e360e91b145b8061019b57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6101a9610467565b5060408051606081018252600181526004602082015260009181019190915290565b609780546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d690600090a35050565b600054610100900460ff161580801561024a5750600054600160ff909116105b806102645750303b158015610264575060005460ff166001145b6102db5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b6000805460ff1916600117905580156102fe576000805461ff0019166101001790555b61030782610356565b60016098558015610352576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b600054610100900460ff166103c15760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016102d2565b6103ca816103cd565b50565b600054610100900460ff166104385760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016102d2565b6065805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b60405180606001604052806003906020820280368337509192915050565b60006020828403121561049757600080fd5b81356001600160e01b0319811681146104af57600080fd5b9392505050565b60608101818360005b60038110156104e157815160ff168352602092830192909101906001016104bf565b50505092915050565b602081016003831061050c57634e487b7160e01b600052602160045260246000fd5b91905290565b6001600160a01b03811681146103ca57600080fd5b60006020828403121561053957600080fd5b81356104af8161051256fea164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x19 PUSH2 0x1E JUMP JUMPDEST PUSH2 0xDD JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x8A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x27 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320696E697469 PUSH1 0x44 DUP3 ADD MSTORE PUSH7 0x616C697A696E67 PUSH1 0xC8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xFF SWAP1 DUP2 AND EQ PUSH2 0xDB JUMPI PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST JUMP JUMPDEST PUSH2 0x551 DUP1 PUSH2 0xEC PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x88 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6ACCAB8C GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x6ACCAB8C EQ PUSH2 0xFE JUMPI DUP1 PUSH4 0x776D1A01 EQ PUSH2 0x115 JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0x12A JUMPI DUP1 PUSH4 0xD4B83992 EQ PUSH2 0x13D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x8D JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0xB5 JUMPI DUP1 PUSH4 0x4162169F EQ PUSH2 0xCA JUMPI DUP1 PUSH4 0x41DE6830 EQ PUSH2 0xEF JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA0 PUSH2 0x9B CALLDATASIZE PUSH1 0x4 PUSH2 0x485 JUMP JUMPDEST PUSH2 0x150 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xBD PUSH2 0x1A1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xAC SWAP2 SWAP1 PUSH2 0x4B6 JUMP JUMPDEST PUSH1 0x65 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xAC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x40 MLOAD PUSH2 0xAC SWAP2 SWAP1 PUSH2 0x4EA JUMP JUMPDEST PUSH2 0x107 PUSH1 0x98 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xAC JUMP JUMPDEST PUSH2 0x128 PUSH2 0x123 CALLDATASIZE PUSH1 0x4 PUSH2 0x527 JUMP JUMPDEST PUSH2 0x1CB JUMP JUMPDEST STOP JUMPDEST PUSH2 0x128 PUSH2 0x138 CALLDATASIZE PUSH1 0x4 PUSH2 0x527 JUMP JUMPDEST PUSH2 0x22A JUMP JUMPDEST PUSH1 0x97 SLOAD PUSH2 0xD7 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x41DE683 PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x180 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x19B JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1A9 PUSH2 0x467 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x97 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP2 SWAP1 DUP3 SWAP1 PUSH32 0x90CC2F570A6EB594B1580EA3E41247D2D73A55281889E86BD4EC2FC29C7E62D6 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 DUP1 ISZERO PUSH2 0x24A JUMPI POP PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xFF SWAP1 SWAP2 AND LT JUMPDEST DUP1 PUSH2 0x264 JUMPI POP ADDRESS EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x264 JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF AND PUSH1 0x1 EQ JUMPDEST PUSH2 0x2DB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x647920696E697469616C697A6564000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE DUP1 ISZERO PUSH2 0x2FE JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND PUSH2 0x100 OR SWAP1 SSTORE JUMPDEST PUSH2 0x307 DUP3 PUSH2 0x356 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x98 SSTORE DUP1 ISZERO PUSH2 0x352 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x3C1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x2D2 JUMP JUMPDEST PUSH2 0x3CA DUP2 PUSH2 0x3CD JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x438 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x2D2 JUMP JUMPDEST PUSH1 0x65 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x497 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x4AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0x4E1 JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x4BF JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH1 0x3 DUP4 LT PUSH2 0x50C JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 SWAP1 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x3CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x539 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x4AF DUP2 PUSH2 0x512 JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"371:207:26:-:0;;;;;;;;;;;;-1:-1:-1;1290:22:39;:20;:22::i;:::-;371:207:26;;5939:280:4;6007:13;;;;;;;6006:14;5998:66;;;;-1:-1:-1;;;5998:66:4;;216:2:50;5998:66:4;;;198:21:50;255:2;235:18;;;228:30;294:34;274:18;;;267:62;-1:-1:-1;;;345:18:50;;;338:37;392:19;;5998:66:4;;;;;;;;6078:12;;6094:15;6078:12;;;:31;6074:139;;6125:12;:30;;-1:-1:-1;;6125:30:4;6140:15;6125:30;;;;;;6174:28;;564:36:50;;;6174:28:4;;552:2:50;537:18;6174:28:4;;;;;;;6074:139;5939:280::o;422:184:50:-;371:207:26;;;;;;"},"deployedBytecode":{"functionDebugData":{"@__DaoAuthorizableUpgradeable_init_3901":{"entryPoint":973,"id":3901,"parameterSlots":1,"returnSlots":0},"@__PluginCloneable_init_4225":{"entryPoint":854,"id":4225,"parameterSlots":1,"returnSlots":0},"@dao_3911":{"entryPoint":null,"id":3911,"parameterSlots":0,"returnSlots":1},"@initialize_2566":{"entryPoint":554,"id":2566,"parameterSlots":1,"returnSlots":0},"@isContract_689":{"entryPoint":null,"id":689,"parameterSlots":1,"returnSlots":1},"@pluginType_4257":{"entryPoint":null,"id":4257,"parameterSlots":0,"returnSlots":1},"@protocolVersion_5135":{"entryPoint":417,"id":5135,"parameterSlots":0,"returnSlots":1},"@setTarget_4245":{"entryPoint":459,"id":4245,"parameterSlots":1,"returnSlots":0},"@state1_2549":{"entryPoint":null,"id":2549,"parameterSlots":0,"returnSlots":0},"@supportsInterface_1275":{"entryPoint":null,"id":1275,"parameterSlots":1,"returnSlots":1},"@supportsInterface_4286":{"entryPoint":336,"id":4286,"parameterSlots":1,"returnSlots":1},"@target_4196":{"entryPoint":null,"id":4196,"parameterSlots":0,"returnSlots":0},"abi_decode_tuple_t_address":{"entryPoint":1319,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes4":{"entryPoint":1157,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_contract$_IDAO_$2538":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed":{"entryPoint":1206,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_contract$_IDAO_$2538__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_enum$_PluginType_$3994__to_t_uint8__fromStack_reversed":{"entryPoint":1258,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_rational_1_by_1__to_t_uint8__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"validator_revert_address":{"entryPoint":1298,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:3707:50","statements":[{"nodeType":"YulBlock","src":"6:3:50","statements":[]},{"body":{"nodeType":"YulBlock","src":"83:217:50","statements":[{"body":{"nodeType":"YulBlock","src":"129:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"138:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"141:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"131:6:50"},"nodeType":"YulFunctionCall","src":"131:12:50"},"nodeType":"YulExpressionStatement","src":"131:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"104:7:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"113:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"100:3:50"},"nodeType":"YulFunctionCall","src":"100:23:50"},{"kind":"number","nodeType":"YulLiteral","src":"125:2:50","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"96:3:50"},"nodeType":"YulFunctionCall","src":"96:32:50"},"nodeType":"YulIf","src":"93:52:50"},{"nodeType":"YulVariableDeclaration","src":"154:36:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"180:9:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"167:12:50"},"nodeType":"YulFunctionCall","src":"167:23:50"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"158:5:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"254:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"263:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"266:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"256:6:50"},"nodeType":"YulFunctionCall","src":"256:12:50"},"nodeType":"YulExpressionStatement","src":"256:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"212:5:50"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"223:5:50"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"234:3:50","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"239:10:50","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"230:3:50"},"nodeType":"YulFunctionCall","src":"230:20:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"219:3:50"},"nodeType":"YulFunctionCall","src":"219:32:50"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"209:2:50"},"nodeType":"YulFunctionCall","src":"209:43:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"202:6:50"},"nodeType":"YulFunctionCall","src":"202:51:50"},"nodeType":"YulIf","src":"199:71:50"},{"nodeType":"YulAssignment","src":"279:15:50","value":{"name":"value","nodeType":"YulIdentifier","src":"289:5:50"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"279:6:50"}]}]},"name":"abi_decode_tuple_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"49:9:50","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"60:7:50","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"72:6:50","type":""}],"src":"14:286:50"},{"body":{"nodeType":"YulBlock","src":"400:92:50","statements":[{"nodeType":"YulAssignment","src":"410:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"422:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"433:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"418:3:50"},"nodeType":"YulFunctionCall","src":"418:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"410:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"452:9:50"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"477:6:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"470:6:50"},"nodeType":"YulFunctionCall","src":"470:14:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"463:6:50"},"nodeType":"YulFunctionCall","src":"463:22:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"445:6:50"},"nodeType":"YulFunctionCall","src":"445:41:50"},"nodeType":"YulExpressionStatement","src":"445:41:50"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"369:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"380:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"391:4:50","type":""}],"src":"305:187:50"},{"body":{"nodeType":"YulBlock","src":"640:358:50","statements":[{"nodeType":"YulAssignment","src":"650:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"662:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"673:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"658:3:50"},"nodeType":"YulFunctionCall","src":"658:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"650:4:50"}]},{"nodeType":"YulVariableDeclaration","src":"685:20:50","value":{"name":"headStart","nodeType":"YulIdentifier","src":"696:9:50"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"689:3:50","type":""}]},{"nodeType":"YulAssignment","src":"714:16:50","value":{"name":"headStart","nodeType":"YulIdentifier","src":"721:9:50"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"714:3:50"}]},{"nodeType":"YulVariableDeclaration","src":"739:20:50","value":{"name":"value0","nodeType":"YulIdentifier","src":"753:6:50"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"743:6:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"768:10:50","value":{"kind":"number","nodeType":"YulLiteral","src":"777:1:50","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"772:1:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"834:158:50","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"855:3:50"},{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"870:6:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"864:5:50"},"nodeType":"YulFunctionCall","src":"864:13:50"},{"kind":"number","nodeType":"YulLiteral","src":"879:4:50","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"860:3:50"},"nodeType":"YulFunctionCall","src":"860:24:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"848:6:50"},"nodeType":"YulFunctionCall","src":"848:37:50"},"nodeType":"YulExpressionStatement","src":"848:37:50"},{"nodeType":"YulVariableDeclaration","src":"898:14:50","value":{"kind":"number","nodeType":"YulLiteral","src":"908:4:50","type":"","value":"0x20"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"902:2:50","type":""}]},{"nodeType":"YulAssignment","src":"925:19:50","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"936:3:50"},{"name":"_1","nodeType":"YulIdentifier","src":"941:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"932:3:50"},"nodeType":"YulFunctionCall","src":"932:12:50"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"925:3:50"}]},{"nodeType":"YulAssignment","src":"957:25:50","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"971:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"979:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"967:3:50"},"nodeType":"YulFunctionCall","src":"967:15:50"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"957:6:50"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"798:1:50"},{"kind":"number","nodeType":"YulLiteral","src":"801:4:50","type":"","value":"0x03"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"795:2:50"},"nodeType":"YulFunctionCall","src":"795:11:50"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"807:18:50","statements":[{"nodeType":"YulAssignment","src":"809:14:50","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"818:1:50"},{"kind":"number","nodeType":"YulLiteral","src":"821:1:50","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"814:3:50"},"nodeType":"YulFunctionCall","src":"814:9:50"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"809:1:50"}]}]},"pre":{"nodeType":"YulBlock","src":"791:3:50","statements":[]},"src":"787:205:50"}]},"name":"abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"609:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"620:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"631:4:50","type":""}],"src":"497:501:50"},{"body":{"nodeType":"YulBlock","src":"1117:125:50","statements":[{"nodeType":"YulAssignment","src":"1127:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1139:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"1150:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1135:3:50"},"nodeType":"YulFunctionCall","src":"1135:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1127:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1169:9:50"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1184:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"1192:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1180:3:50"},"nodeType":"YulFunctionCall","src":"1180:55:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1162:6:50"},"nodeType":"YulFunctionCall","src":"1162:74:50"},"nodeType":"YulExpressionStatement","src":"1162:74:50"}]},"name":"abi_encode_tuple_t_contract$_IDAO_$2538__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1086:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1097:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1108:4:50","type":""}],"src":"1003:239:50"},{"body":{"nodeType":"YulBlock","src":"1361:229:50","statements":[{"nodeType":"YulAssignment","src":"1371:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1383:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"1394:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1379:3:50"},"nodeType":"YulFunctionCall","src":"1379:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1371:4:50"}]},{"body":{"nodeType":"YulBlock","src":"1439:111:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1460:1:50","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1467:3:50","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"1472:10:50","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1463:3:50"},"nodeType":"YulFunctionCall","src":"1463:20:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1453:6:50"},"nodeType":"YulFunctionCall","src":"1453:31:50"},"nodeType":"YulExpressionStatement","src":"1453:31:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1504:1:50","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"1507:4:50","type":"","value":"0x21"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1497:6:50"},"nodeType":"YulFunctionCall","src":"1497:15:50"},"nodeType":"YulExpressionStatement","src":"1497:15:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1532:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1535:4:50","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1525:6:50"},"nodeType":"YulFunctionCall","src":"1525:15:50"},"nodeType":"YulExpressionStatement","src":"1525:15:50"}]},"condition":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1419:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"1427:1:50","type":"","value":"3"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"1416:2:50"},"nodeType":"YulFunctionCall","src":"1416:13:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1409:6:50"},"nodeType":"YulFunctionCall","src":"1409:21:50"},"nodeType":"YulIf","src":"1406:144:50"},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1566:9:50"},{"name":"value0","nodeType":"YulIdentifier","src":"1577:6:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1559:6:50"},"nodeType":"YulFunctionCall","src":"1559:25:50"},"nodeType":"YulExpressionStatement","src":"1559:25:50"}]},"name":"abi_encode_tuple_t_enum$_PluginType_$3994__to_t_uint8__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1330:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1341:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1352:4:50","type":""}],"src":"1247:343:50"},{"body":{"nodeType":"YulBlock","src":"1696:76:50","statements":[{"nodeType":"YulAssignment","src":"1706:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1718:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"1729:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1714:3:50"},"nodeType":"YulFunctionCall","src":"1714:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1706:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1748:9:50"},{"name":"value0","nodeType":"YulIdentifier","src":"1759:6:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1741:6:50"},"nodeType":"YulFunctionCall","src":"1741:25:50"},"nodeType":"YulExpressionStatement","src":"1741:25:50"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1665:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1676:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1687:4:50","type":""}],"src":"1595:177:50"},{"body":{"nodeType":"YulBlock","src":"1822:109:50","statements":[{"body":{"nodeType":"YulBlock","src":"1909:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1918:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1921:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1911:6:50"},"nodeType":"YulFunctionCall","src":"1911:12:50"},"nodeType":"YulExpressionStatement","src":"1911:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1845:5:50"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1856:5:50"},{"kind":"number","nodeType":"YulLiteral","src":"1863:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1852:3:50"},"nodeType":"YulFunctionCall","src":"1852:54:50"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1842:2:50"},"nodeType":"YulFunctionCall","src":"1842:65:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1835:6:50"},"nodeType":"YulFunctionCall","src":"1835:73:50"},"nodeType":"YulIf","src":"1832:93:50"}]},"name":"validator_revert_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1811:5:50","type":""}],"src":"1777:154:50"},{"body":{"nodeType":"YulBlock","src":"2006:177:50","statements":[{"body":{"nodeType":"YulBlock","src":"2052:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2061:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2064:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2054:6:50"},"nodeType":"YulFunctionCall","src":"2054:12:50"},"nodeType":"YulExpressionStatement","src":"2054:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2027:7:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"2036:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2023:3:50"},"nodeType":"YulFunctionCall","src":"2023:23:50"},{"kind":"number","nodeType":"YulLiteral","src":"2048:2:50","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2019:3:50"},"nodeType":"YulFunctionCall","src":"2019:32:50"},"nodeType":"YulIf","src":"2016:52:50"},{"nodeType":"YulVariableDeclaration","src":"2077:36:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2103:9:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2090:12:50"},"nodeType":"YulFunctionCall","src":"2090:23:50"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"2081:5:50","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2147:5:50"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"2122:24:50"},"nodeType":"YulFunctionCall","src":"2122:31:50"},"nodeType":"YulExpressionStatement","src":"2122:31:50"},{"nodeType":"YulAssignment","src":"2162:15:50","value":{"name":"value","nodeType":"YulIdentifier","src":"2172:5:50"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2162:6:50"}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1972:9:50","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1983:7:50","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1995:6:50","type":""}],"src":"1936:247:50"},{"body":{"nodeType":"YulBlock","src":"2271:177:50","statements":[{"body":{"nodeType":"YulBlock","src":"2317:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2326:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2329:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2319:6:50"},"nodeType":"YulFunctionCall","src":"2319:12:50"},"nodeType":"YulExpressionStatement","src":"2319:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2292:7:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"2301:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2288:3:50"},"nodeType":"YulFunctionCall","src":"2288:23:50"},{"kind":"number","nodeType":"YulLiteral","src":"2313:2:50","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2284:3:50"},"nodeType":"YulFunctionCall","src":"2284:32:50"},"nodeType":"YulIf","src":"2281:52:50"},{"nodeType":"YulVariableDeclaration","src":"2342:36:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2368:9:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2355:12:50"},"nodeType":"YulFunctionCall","src":"2355:23:50"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"2346:5:50","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2412:5:50"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"2387:24:50"},"nodeType":"YulFunctionCall","src":"2387:31:50"},"nodeType":"YulExpressionStatement","src":"2387:31:50"},{"nodeType":"YulAssignment","src":"2427:15:50","value":{"name":"value","nodeType":"YulIdentifier","src":"2437:5:50"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2427:6:50"}]}]},"name":"abi_decode_tuple_t_contract$_IDAO_$2538","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2237:9:50","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2248:7:50","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2260:6:50","type":""}],"src":"2188:260:50"},{"body":{"nodeType":"YulBlock","src":"2554:125:50","statements":[{"nodeType":"YulAssignment","src":"2564:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2576:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"2587:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2572:3:50"},"nodeType":"YulFunctionCall","src":"2572:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2564:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2606:9:50"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2621:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"2629:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2617:3:50"},"nodeType":"YulFunctionCall","src":"2617:55:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2599:6:50"},"nodeType":"YulFunctionCall","src":"2599:74:50"},"nodeType":"YulExpressionStatement","src":"2599:74:50"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2523:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"2534:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2545:4:50","type":""}],"src":"2453:226:50"},{"body":{"nodeType":"YulBlock","src":"2858:236:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2875:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"2886:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2868:6:50"},"nodeType":"YulFunctionCall","src":"2868:21:50"},"nodeType":"YulExpressionStatement","src":"2868:21:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2909:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"2920:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2905:3:50"},"nodeType":"YulFunctionCall","src":"2905:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"2925:2:50","type":"","value":"46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2898:6:50"},"nodeType":"YulFunctionCall","src":"2898:30:50"},"nodeType":"YulExpressionStatement","src":"2898:30:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2948:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"2959:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2944:3:50"},"nodeType":"YulFunctionCall","src":"2944:18:50"},{"hexValue":"496e697469616c697a61626c653a20636f6e747261637420697320616c726561","kind":"string","nodeType":"YulLiteral","src":"2964:34:50","type":"","value":"Initializable: contract is alrea"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2937:6:50"},"nodeType":"YulFunctionCall","src":"2937:62:50"},"nodeType":"YulExpressionStatement","src":"2937:62:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3019:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"3030:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3015:3:50"},"nodeType":"YulFunctionCall","src":"3015:18:50"},{"hexValue":"647920696e697469616c697a6564","kind":"string","nodeType":"YulLiteral","src":"3035:16:50","type":"","value":"dy initialized"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3008:6:50"},"nodeType":"YulFunctionCall","src":"3008:44:50"},"nodeType":"YulExpressionStatement","src":"3008:44:50"},{"nodeType":"YulAssignment","src":"3061:27:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3073:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"3084:3:50","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3069:3:50"},"nodeType":"YulFunctionCall","src":"3069:19:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3061:4:50"}]}]},"name":"abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2835:9:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2849:4:50","type":""}],"src":"2684:410:50"},{"body":{"nodeType":"YulBlock","src":"3206:87:50","statements":[{"nodeType":"YulAssignment","src":"3216:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3228:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"3239:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3224:3:50"},"nodeType":"YulFunctionCall","src":"3224:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3216:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3258:9:50"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3273:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"3281:4:50","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3269:3:50"},"nodeType":"YulFunctionCall","src":"3269:17:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3251:6:50"},"nodeType":"YulFunctionCall","src":"3251:36:50"},"nodeType":"YulExpressionStatement","src":"3251:36:50"}]},"name":"abi_encode_tuple_t_rational_1_by_1__to_t_uint8__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3175:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3186:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3197:4:50","type":""}],"src":"3099:194:50"},{"body":{"nodeType":"YulBlock","src":"3472:233:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3489:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"3500:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3482:6:50"},"nodeType":"YulFunctionCall","src":"3482:21:50"},"nodeType":"YulExpressionStatement","src":"3482:21:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3523:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"3534:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3519:3:50"},"nodeType":"YulFunctionCall","src":"3519:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"3539:2:50","type":"","value":"43"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3512:6:50"},"nodeType":"YulFunctionCall","src":"3512:30:50"},"nodeType":"YulExpressionStatement","src":"3512:30:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3562:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"3573:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3558:3:50"},"nodeType":"YulFunctionCall","src":"3558:18:50"},{"hexValue":"496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069","kind":"string","nodeType":"YulLiteral","src":"3578:34:50","type":"","value":"Initializable: contract is not i"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3551:6:50"},"nodeType":"YulFunctionCall","src":"3551:62:50"},"nodeType":"YulExpressionStatement","src":"3551:62:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3633:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"3644:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3629:3:50"},"nodeType":"YulFunctionCall","src":"3629:18:50"},{"hexValue":"6e697469616c697a696e67","kind":"string","nodeType":"YulLiteral","src":"3649:13:50","type":"","value":"nitializing"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3622:6:50"},"nodeType":"YulFunctionCall","src":"3622:41:50"},"nodeType":"YulExpressionStatement","src":"3622:41:50"},{"nodeType":"YulAssignment","src":"3672:27:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3684:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"3695:3:50","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3680:3:50"},"nodeType":"YulFunctionCall","src":"3680:19:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3672:4:50"}]}]},"name":"abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3449:9:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3463:4:50","type":""}],"src":"3298:407:50"}]},"contents":"{\n { }\n function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n if iszero(eq(value, and(value, shl(224, 0xffffffff)))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 96)\n let pos := headStart\n pos := headStart\n let srcPtr := value0\n let i := 0\n for { } lt(i, 0x03) { i := add(i, 1) }\n {\n mstore(pos, and(mload(srcPtr), 0xff))\n let _1 := 0x20\n pos := add(pos, _1)\n srcPtr := add(srcPtr, _1)\n }\n }\n function abi_encode_tuple_t_contract$_IDAO_$2538__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_encode_tuple_t_enum$_PluginType_$3994__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n if iszero(lt(value0, 3))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x21)\n revert(0, 0x24)\n }\n mstore(headStart, value0)\n }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function validator_revert_address(value)\n {\n if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n }\n function abi_decode_tuple_t_contract$_IDAO_$2538(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 46)\n mstore(add(headStart, 64), \"Initializable: contract is alrea\")\n mstore(add(headStart, 96), \"dy initialized\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_rational_1_by_1__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xff))\n }\n function abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 43)\n mstore(add(headStart, 64), \"Initializable: contract is not i\")\n mstore(add(headStart, 96), \"nitializing\")\n tail := add(headStart, 128)\n }\n}","id":50,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100885760003560e01c80636accab8c1161005b5780636accab8c146100fe578063776d1a0114610115578063c4d66de81461012a578063d4b839921461013d57600080fd5b806301ffc9a71461008d5780632ae9c600146100b55780634162169f146100ca57806341de6830146100ef575b600080fd5b6100a061009b366004610485565b610150565b60405190151581526020015b60405180910390f35b6100bd6101a1565b6040516100ac91906104b6565b6065546001600160a01b03165b6040516001600160a01b0390911681526020016100ac565b60016040516100ac91906104ea565b61010760985481565b6040519081526020016100ac565b610128610123366004610527565b6101cb565b005b610128610138366004610527565b61022a565b6097546100d7906001600160a01b031681565b60006001600160e01b0319821663041de68360e41b148061018057506001600160e01b03198216621574e360e91b145b8061019b57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6101a9610467565b5060408051606081018252600181526004602082015260009181019190915290565b609780546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d690600090a35050565b600054610100900460ff161580801561024a5750600054600160ff909116105b806102645750303b158015610264575060005460ff166001145b6102db5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b6000805460ff1916600117905580156102fe576000805461ff0019166101001790555b61030782610356565b60016098558015610352576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b600054610100900460ff166103c15760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016102d2565b6103ca816103cd565b50565b600054610100900460ff166104385760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016102d2565b6065805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b60405180606001604052806003906020820280368337509192915050565b60006020828403121561049757600080fd5b81356001600160e01b0319811681146104af57600080fd5b9392505050565b60608101818360005b60038110156104e157815160ff168352602092830192909101906001016104bf565b50505092915050565b602081016003831061050c57634e487b7160e01b600052602160045260246000fd5b91905290565b6001600160a01b03811681146103ca57600080fd5b60006020828403121561053957600080fd5b81356104af8161051256fea164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x88 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6ACCAB8C GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x6ACCAB8C EQ PUSH2 0xFE JUMPI DUP1 PUSH4 0x776D1A01 EQ PUSH2 0x115 JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0x12A JUMPI DUP1 PUSH4 0xD4B83992 EQ PUSH2 0x13D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x8D JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0xB5 JUMPI DUP1 PUSH4 0x4162169F EQ PUSH2 0xCA JUMPI DUP1 PUSH4 0x41DE6830 EQ PUSH2 0xEF JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA0 PUSH2 0x9B CALLDATASIZE PUSH1 0x4 PUSH2 0x485 JUMP JUMPDEST PUSH2 0x150 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xBD PUSH2 0x1A1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xAC SWAP2 SWAP1 PUSH2 0x4B6 JUMP JUMPDEST PUSH1 0x65 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xAC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x40 MLOAD PUSH2 0xAC SWAP2 SWAP1 PUSH2 0x4EA JUMP JUMPDEST PUSH2 0x107 PUSH1 0x98 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xAC JUMP JUMPDEST PUSH2 0x128 PUSH2 0x123 CALLDATASIZE PUSH1 0x4 PUSH2 0x527 JUMP JUMPDEST PUSH2 0x1CB JUMP JUMPDEST STOP JUMPDEST PUSH2 0x128 PUSH2 0x138 CALLDATASIZE PUSH1 0x4 PUSH2 0x527 JUMP JUMPDEST PUSH2 0x22A JUMP JUMPDEST PUSH1 0x97 SLOAD PUSH2 0xD7 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x41DE683 PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x180 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x19B JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1A9 PUSH2 0x467 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x97 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP2 SWAP1 DUP3 SWAP1 PUSH32 0x90CC2F570A6EB594B1580EA3E41247D2D73A55281889E86BD4EC2FC29C7E62D6 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 DUP1 ISZERO PUSH2 0x24A JUMPI POP PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xFF SWAP1 SWAP2 AND LT JUMPDEST DUP1 PUSH2 0x264 JUMPI POP ADDRESS EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x264 JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF AND PUSH1 0x1 EQ JUMPDEST PUSH2 0x2DB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x647920696E697469616C697A6564000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE DUP1 ISZERO PUSH2 0x2FE JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND PUSH2 0x100 OR SWAP1 SSTORE JUMPDEST PUSH2 0x307 DUP3 PUSH2 0x356 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x98 SSTORE DUP1 ISZERO PUSH2 0x352 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x3C1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x2D2 JUMP JUMPDEST PUSH2 0x3CA DUP2 PUSH2 0x3CD JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x438 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x2D2 JUMP JUMPDEST PUSH1 0x65 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x497 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x4AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0x4E1 JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x4BF JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH1 0x3 DUP4 LT PUSH2 0x50C JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 SWAP1 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x3CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x539 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x4AF DUP2 PUSH2 0x512 JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"371:207:26:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2263:288:39;;;;;;:::i;:::-;;:::i;:::-;;;470:14:50;;463:22;445:41;;433:2;418:18;2263:288:39;;;;;;;;631:98:49;;;:::i;:::-;;;;;;;:::i;1200:70:35:-;1259:4;;-1:-1:-1;;;;;1259:4:35;1200:70;;;-1:-1:-1;;;;;1180:55:50;;;1162:74;;1150:2;1135:18;1200:70:35;1003:239:50;1947:108:39;2028:20;1947:108;;;;;;:::i;431:21:26:-;;;;;;;;;1741:25:50;;;1729:2;1714:18;431:21:26;1595:177:50;1747:166:39;;;;;;:::i;:::-;;:::i;:::-;;459:117:26;;;;;;:::i;:::-;;:::i;936:21:39:-;;;;;-1:-1:-1;;;;;936:21:39;;;2263:288;2349:4;-1:-1:-1;;;;;;2384:41:39;;-1:-1:-1;;;2384:41:39;;:107;;-1:-1:-1;;;;;;;2441:50:39;;-1:-1:-1;;;2441:50:39;2384:107;:160;;;-1:-1:-1;;;;;;;;;;1189:51:10;;;2507:37:39;2365:179;2263:288;-1:-1:-1;;2263:288:39:o;631:98:49:-;679:15;;:::i;:::-;-1:-1:-1;706:16:49;;;;;;;;714:1;706:16;;717:1;706:16;;;;-1:-1:-1;706:16:49;;;;;;;;631:98::o;1747:166:39:-;1825:6;;;-1:-1:-1;;;;;1841:16:39;;;-1:-1:-1;;1841:16:39;;;;;;;1872:34;;1825:6;;;1841:16;1825:6;;1872:34;;1800:22;;1872:34;1790:123;1747:166;:::o;459:117:26:-;3279:19:4;3302:13;;;;;;3301:14;;3347:34;;;;-1:-1:-1;3365:12:4;;3380:1;3365:12;;;;:16;3347:34;3346:108;;;-1:-1:-1;3426:4:4;1713:19:6;:23;;;3387:66:4;;-1:-1:-1;3436:12:4;;;;;:17;3387:66;3325:201;;;;-1:-1:-1;;;3325:201:4;;2886:2:50;3325:201:4;;;2868:21:50;2925:2;2905:18;;;2898:30;2964:34;2944:18;;;2937:62;3035:16;3015:18;;;3008:44;3069:19;;3325:201:4;;;;;;;;;3536:12;:16;;-1:-1:-1;;3536:16:4;3551:1;3536:16;;;3562:65;;;;3596:13;:20;;-1:-1:-1;;3596:20:4;;;;;3562:65;521:28:26::1;544:4;521:22;:28::i;:::-;568:1;559:6;:10:::0;3647:99:4;;;;3697:5;3681:21;;-1:-1:-1;;3681:21:4;;;3721:14;;-1:-1:-1;3251:36:50;;3721:14:4;;3239:2:50;3224:18;3721:14:4;;;;;;;3647:99;3269:483;459:117:26;:::o;1486:133:39:-;5374:13:4;;;;;;;5366:69;;;;-1:-1:-1;;;5366:69:4;;3500:2:50;5366:69:4;;;3482:21:50;3539:2;3519:18;;;3512:30;3578:34;3558:18;;;3551:62;-1:-1:-1;;;3629:18:50;;;3622:41;3680:19;;5366:69:4;3298:407:50;5366:69:4;1573:39:39::1;1607:4;1573:33;:39::i;:::-;1486:133:::0;:::o;1010:108:35:-;5374:13:4;;;;;;;5366:69;;;;-1:-1:-1;;;5366:69:4;;3500:2:50;5366:69:4;;;3482:21:50;3539:2;3519:18;;;3512:30;3578:34;3558:18;;;3551:62;-1:-1:-1;;;3629:18:50;;;3622:41;3680:19;;5366:69:4;3298:407:50;5366:69:4;1100:4:35::1;:11:::0;;-1:-1:-1;;1100:11:35::1;-1:-1:-1::0;;;;;1100:11:35;;;::::1;::::0;;;::::1;::::0;;1010:108::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:286:50:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:50;;209:43;;199:71;;266:1;263;256:12;199:71;289:5;14:286;-1:-1:-1;;;14:286:50:o;497:501::-;673:2;658:18;;662:9;753:6;631:4;787:205;801:4;798:1;795:11;787:205;;;864:13;;879:4;860:24;848:37;;908:4;932:12;;;;967:15;;;;821:1;814:9;787:205;;;791:3;;;497:501;;;;:::o;1247:343::-;1394:2;1379:18;;1427:1;1416:13;;1406:144;;1472:10;1467:3;1463:20;1460:1;1453:31;1507:4;1504:1;1497:15;1535:4;1532:1;1525:15;1406:144;1559:25;;;1247:343;:::o;1777:154::-;-1:-1:-1;;;;;1856:5:50;1852:54;1845:5;1842:65;1832:93;;1921:1;1918;1911:12;1936:247;1995:6;2048:2;2036:9;2027:7;2023:23;2019:32;2016:52;;;2064:1;2061;2054:12;2016:52;2103:9;2090:23;2122:31;2147:5;2122:31;:::i"},"gasEstimates":{"creation":{"codeDepositCost":"272200","executionCost":"29901","totalCost":"302101"},"external":{"dao()":"2365","initialize(address)":"infinite","pluginType()":"294","protocolVersion()":"infinite","setTarget(address)":"26112","state1()":"2295","supportsInterface(bytes4)":"482","target()":"2403"}},"methodIdentifiers":{"dao()":"4162169f","initialize(address)":"c4d66de8","pluginType()":"41de6830","protocolVersion()":"2ae9c600","setTarget(address)":"776d1a01","state1()":"6accab8c","supportsInterface(bytes4)":"01ffc9a7","target()":"d4b83992"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousTarget\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newTarget\",\"type\":\"address\"}],\"name\":\"TargetSet\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"dao\",\"outputs\":[{\"internalType\":\"contract IDAO\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IDAO\",\"name\":\"_dao\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pluginType\",\"outputs\":[{\"internalType\":\"enum IPlugin.PluginType\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"protocolVersion\",\"outputs\":[{\"internalType\":\"uint8[3]\",\"name\":\"\",\"type\":\"uint8[3]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_target\",\"type\":\"address\"}],\"name\":\"setTarget\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"state1\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"target\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"DO NOT USE IN PRODUCTION!\",\"kind\":\"dev\",\"methods\":{\"dao()\":{\"returns\":{\"_0\":\"The DAO contract.\"}},\"protocolVersion()\":{\"details\":\"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\",\"returns\":{\"_0\":\"Returns the semantic Aragon OSx protocol version number.\"}},\"setTarget(address)\":{\"details\":\"Sets the target to a new target (`newTarget`).\"},\"supportsInterface(bytes4)\":{\"params\":{\"_interfaceId\":\"The ID of the interface.\"},\"returns\":{\"_0\":\"Returns `true` if the interface is supported.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"dao()\":{\"notice\":\"Returns the DAO contract.\"},\"pluginType()\":{\"notice\":\"Returns the plugin's type\"},\"protocolVersion()\":{\"notice\":\"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\"},\"setTarget(address)\":{\"notice\":\"Can only be called by the current owner. TODO\"},\"supportsInterface(bytes4)\":{\"notice\":\"Checks if this or the parent contract supports an interface by its ID.\"}},\"notice\":\"A mock cloneable plugin to be deployed via the minimal proxy pattern. v1.1 (Release 1, Build 1)\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/mocks/plugin/PluginCloneableMock.sol\":\"PluginCloneableMockBuild1\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n function __Context_init() internal onlyInitializing {\\n }\\n\\n function __Context_init_unchained() internal onlyInitializing {\\n }\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n function _contextSuffixLength() internal view virtual returns (uint256) {\\n return 0;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x75097e35253e7fb282ee4d7f27a80eaacfa759923185bf17302a89cbc059c5ef\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165Upgradeable.sol\\\";\\nimport {Initializable} from \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165Upgradeable is Initializable, IERC165Upgradeable {\\n function __ERC165_init() internal onlyInitializing {\\n }\\n\\n function __ERC165_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165Upgradeable).interfaceId;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0xd90d7723512df65ae417adaf0801042940f0dabd60039ceeaffe34aa5b238da1\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165Upgradeable {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\"},\"src/dao/IDAO.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IDAO\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for DAOs within the Aragon App DAO framework.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IDAO {\\n /// @notice The action struct to be consumed by the DAO's `execute` function resulting in an external call.\\n /// @param to The address to call.\\n /// @param value The native token value to be sent with the call.\\n /// @param data The bytes-encoded function selector and calldata for the call.\\n struct Action {\\n address to;\\n uint256 value;\\n bytes data;\\n }\\n\\n /// @notice Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\\n /// @param _where The address of the contract.\\n /// @param _who The address of a EOA or contract to give the permissions.\\n /// @param _permissionId The permission identifier.\\n /// @param _data The optional data passed to the `PermissionCondition` registered.\\n /// @return Returns true if the address has permission, false if not.\\n function hasPermission(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes memory _data\\n ) external view returns (bool);\\n\\n /// @notice Updates the DAO metadata (e.g., an IPFS hash).\\n /// @param _metadata The IPFS hash of the new metadata object.\\n function setMetadata(bytes calldata _metadata) external;\\n\\n /// @notice Emitted when the DAO metadata is updated.\\n /// @param metadata The IPFS hash of the new metadata object.\\n event MetadataSet(bytes metadata);\\n\\n /// @notice Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted.\\n /// @param _callId The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce.\\n /// @param _actions The array of actions.\\n /// @param _allowFailureMap A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @return The array of results obtained from the executed actions in `bytes`.\\n /// @return The resulting failure map containing the actions have actually failed.\\n function execute(\\n bytes32 _callId,\\n Action[] memory _actions,\\n uint256 _allowFailureMap\\n ) external returns (bytes[] memory, uint256);\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param actor The address of the caller.\\n /// @param callId The ID of the call.\\n /// @param actions The array of actions executed.\\n /// @param allowFailureMap The allow failure map encoding which actions are allowed to fail.\\n /// @param failureMap The failure map encoding which actions have failed.\\n /// @param execResults The array with the results of the executed actions.\\n /// @dev The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce.\\n event Executed(\\n address indexed actor,\\n bytes32 callId,\\n Action[] actions,\\n uint256 allowFailureMap,\\n uint256 failureMap,\\n bytes[] execResults\\n );\\n\\n /// @notice Emitted when a standard callback is registered.\\n /// @param interfaceId The ID of the interface.\\n /// @param callbackSelector The selector of the callback function.\\n /// @param magicNumber The magic number to be registered for the callback function selector.\\n event StandardCallbackRegistered(\\n bytes4 interfaceId,\\n bytes4 callbackSelector,\\n bytes4 magicNumber\\n );\\n\\n /// @notice Deposits (native) tokens to the DAO contract with a reference string.\\n /// @param _token The address of the token or address(0) in case of the native token.\\n /// @param _amount The amount of tokens to deposit.\\n /// @param _reference The reference describing the deposit reason.\\n function deposit(address _token, uint256 _amount, string calldata _reference) external payable;\\n\\n /// @notice Emitted when a token deposit has been made to the DAO.\\n /// @param sender The address of the sender.\\n /// @param token The address of the deposited token.\\n /// @param amount The amount of tokens deposited.\\n /// @param _reference The reference describing the deposit reason.\\n event Deposited(\\n address indexed sender,\\n address indexed token,\\n uint256 amount,\\n string _reference\\n );\\n\\n /// @notice Emitted when a native token deposit has been made to the DAO.\\n /// @dev This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).\\n /// @param sender The address of the sender.\\n /// @param amount The amount of native tokens deposited.\\n event NativeTokenDeposited(address sender, uint256 amount);\\n\\n /// @notice Setter for the trusted forwarder verifying the meta transaction.\\n /// @param _trustedForwarder The trusted forwarder address.\\n function setTrustedForwarder(address _trustedForwarder) external;\\n\\n /// @notice Getter for the trusted forwarder verifying the meta transaction.\\n /// @return The trusted forwarder address.\\n function getTrustedForwarder() external view returns (address);\\n\\n /// @notice Emitted when a new TrustedForwarder is set on the DAO.\\n /// @param forwarder the new forwarder address.\\n event TrustedForwarderSet(address forwarder);\\n\\n /// @notice Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\\n /// @param _hash The hash of the data to be signed.\\n /// @param _signature The signature byte array associated with `_hash`.\\n /// @return Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not.\\n function isValidSignature(bytes32 _hash, bytes memory _signature) external returns (bytes4);\\n\\n /// @notice Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\\n /// @param _interfaceId The ID of the interface.\\n /// @param _callbackSelector The selector of the callback function.\\n /// @param _magicNumber The magic number to be registered for the function signature.\\n function registerStandardCallback(\\n bytes4 _interfaceId,\\n bytes4 _callbackSelector,\\n bytes4 _magicNumber\\n ) external;\\n\\n /// @notice Removed function being left here to not corrupt the IDAO interface ID. Any call will revert.\\n /// @dev Introduced in v1.0.0. Removed in v1.4.0.\\n function setSignatureValidator(address) external;\\n}\\n\",\"keccak256\":\"0xb7f615523c26de042edce98731c658f44a1edb2464387ac1b642c4c69f57128e\",\"license\":\"AGPL-3.0-or-later\"},\"src/mocks/plugin/PluginCloneableMock.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\n/* solhint-disable one-contract-per-file */\\npragma solidity ^0.8.8;\\n\\nimport {PluginCloneable} from \\\"../../plugin/PluginCloneable.sol\\\";\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice A mock cloneable plugin to be deployed via the minimal proxy pattern.\\n/// v1.1 (Release 1, Build 1)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginCloneableMockBuild1 is PluginCloneable {\\n uint256 public state1;\\n\\n function initialize(IDAO _dao) external initializer {\\n __PluginCloneable_init(_dao);\\n state1 = 1;\\n }\\n}\\n\\n/// @notice A mock cloneable plugin to be deployed via the minimal proxy pattern.\\n/// v1.1 (Release 1, Build 2)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginCloneableMockBuild2 is PluginCloneable {\\n uint256 public state1;\\n uint256 public state2;\\n\\n function initialize(IDAO _dao) external initializer {\\n __PluginCloneable_init(_dao);\\n state1 = 1;\\n state2 = 2;\\n }\\n}\\n\\n/// @notice A mock cloneable plugin missing an initializer function.\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginCloneableMockBad is PluginCloneable {\\n uint256 public state1;\\n\\n function notAnInitializer(IDAO _dao) external {\\n __PluginCloneable_init(_dao);\\n state1 = 1;\\n }\\n}\\n\",\"keccak256\":\"0x1bb271f7b553040fad7907e97b860aa833aec9aefe7477e00ba7bdfd80d84e98\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/DaoAuthorizableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ContextUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\\\";\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\nimport {_auth} from \\\"./auth.sol\\\";\\n\\n/// @title DaoAuthorizableUpgradeable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract contract providing a meta-transaction compatible modifier for upgradeable or cloneable contracts to authorize function calls through an associated DAO.\\n/// @dev Make sure to call `__DaoAuthorizableUpgradeable_init` during initialization of the inheriting contract.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract DaoAuthorizableUpgradeable is ContextUpgradeable {\\n /// @notice The associated DAO managing the permissions of inheriting contracts.\\n IDAO private dao_;\\n\\n /// @notice Initializes the contract by setting the associated DAO.\\n /// @param _dao The associated DAO address.\\n // solhint-disable-next-line func-name-mixedcase\\n function __DaoAuthorizableUpgradeable_init(IDAO _dao) internal onlyInitializing {\\n dao_ = _dao;\\n }\\n\\n /// @notice Returns the DAO contract.\\n /// @return The DAO contract.\\n function dao() public view returns (IDAO) {\\n return dao_;\\n }\\n\\n /// @notice A modifier to make functions on inheriting contracts authorized. Permissions to call the function are checked through the associated DAO's permission manager.\\n /// @param _permissionId The permission identifier required to call the method this modifier is applied to.\\n modifier auth(bytes32 _permissionId) {\\n _auth(dao_, address(this), _msgSender(), _permissionId, _msgData());\\n _;\\n }\\n\\n /// @notice This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain (see [OpenZeppelin's guide about storage gaps](https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps)).\\n uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0x7fac6b01b037ba1cb9d6a22d3f43b0785037dcf496ffb672434d9bf7227d2585\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/auth.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice Thrown if a call is unauthorized in the associated DAO.\\n/// @param dao The associated DAO.\\n/// @param where The context in which the authorization reverted.\\n/// @param who The address (EOA or contract) missing the permission.\\n/// @param permissionId The permission identifier.\\nerror DaoUnauthorized(address dao, address where, address who, bytes32 permissionId);\\n\\n/// @notice A free function checking if a caller is granted permissions on a target contract via a permission identifier that redirects the approval to a `PermissionCondition` if this was specified in the setup.\\n/// @param _where The address of the target contract for which `who` receives permission.\\n/// @param _who The address (EOA or contract) owning the permission.\\n/// @param _permissionId The permission identifier.\\n/// @param _data The optional data passed to the `PermissionCondition` registered.\\n/// @custom:security-contact sirt@aragon.org\\nfunction _auth(\\n IDAO _dao,\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes calldata _data\\n) view {\\n if (!_dao.hasPermission(_where, _who, _permissionId, _data))\\n revert DaoUnauthorized({\\n dao: address(_dao),\\n where: _where,\\n who: _who,\\n permissionId: _permissionId\\n });\\n}\\n\",\"keccak256\":\"0x878764b4f87fe0651fb3798fb9cb87c952f8c6caf6ae79c7f09de84df6c00298\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/IPlugin.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IPlugin\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the traits of a plugin.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IPlugin {\\n enum PluginType {\\n UUPS,\\n Cloneable,\\n Constructable\\n }\\n\\n /// @notice Returns the plugin's type\\n function pluginType() external view returns (PluginType);\\n}\\n\",\"keccak256\":\"0xc57cd0d10b6380ab7f54c713a509e88fd8f4ad9288313a0e8e12b8887817ddfe\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/PluginCloneable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ERC165Upgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\\\";\\n\\nimport {IProtocolVersion} from \\\"../utils/versioning/IProtocolVersion.sol\\\";\\nimport {ProtocolVersion} from \\\"../utils/versioning/ProtocolVersion.sol\\\";\\nimport {DaoAuthorizableUpgradeable} from \\\"../permission/auth/DaoAuthorizableUpgradeable.sol\\\";\\nimport {IDAO} from \\\"../dao/IDAO.sol\\\";\\nimport {IPlugin} from \\\"./IPlugin.sol\\\";\\n\\n/// @title PluginCloneable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract, non-upgradeable contract to inherit from when creating a plugin being deployed via the minimal clones pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)).\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract PluginCloneable is\\n IPlugin,\\n ERC165Upgradeable,\\n DaoAuthorizableUpgradeable,\\n ProtocolVersion\\n{\\n address public target;\\n\\n /// @dev Emitted each time the Target is set.\\n event TargetSet(address indexed previousTarget, address indexed newTarget);\\n\\n /// @notice Disables the initializers on the implementation contract to prevent it from being left uninitialized.\\n /// @custom:oz-upgrades-unsafe-allow constructor\\n constructor() {\\n _disableInitializers();\\n }\\n\\n /// @notice Initializes the plugin by storing the associated DAO.\\n /// @param _dao The DAO contract.\\n // solhint-disable-next-line func-name-mixedcase\\n function __PluginCloneable_init(IDAO _dao) internal virtual onlyInitializing {\\n __DaoAuthorizableUpgradeable_init(_dao);\\n }\\n\\n /// @dev Sets the target to a new target (`newTarget`).\\n /// @notice Can only be called by the current owner. TODO\\n function setTarget(address _target) public {\\n address previousTarget = target;\\n target = _target;\\n emit TargetSet(previousTarget, _target);\\n }\\n\\n /// @inheritdoc IPlugin\\n function pluginType() public pure override returns (PluginType) {\\n return PluginType.Cloneable;\\n }\\n\\n /// @notice Checks if this or the parent contract supports an interface by its ID.\\n /// @param _interfaceId The ID of the interface.\\n /// @return Returns `true` if the interface is supported.\\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\\n return\\n _interfaceId == type(IPlugin).interfaceId ||\\n _interfaceId == type(IProtocolVersion).interfaceId ||\\n super.supportsInterface(_interfaceId);\\n }\\n\\n /// @notice Forwards the actions to the currently set `target` for the execution.\\n /// @param _callId Identifier for this execution.\\n /// @param _actions actions that will be eventually called.\\n /// @param _allowFailureMap Bitmap-encoded number. TODO:\\n /// @return execResults address of the implementation contract.\\n /// @return failureMap address of the implementation contract.\\n function _execute(\\n bytes32 _callId,\\n IDAO.Action[] calldata _actions,\\n uint256 _allowFailureMap\\n ) internal virtual returns (bytes[] memory execResults, uint256 failureMap) {\\n (execResults, failureMap) = IDAO(target).execute(_callId, _actions, _allowFailureMap);\\n }\\n\\n /// @notice Forwards the actions to the `target` for the execution.\\n /// @param _target Forwards the actions to the specific target.\\n /// @param _callId Identifier for this execution.\\n /// @param _actions actions that will be eventually called.\\n /// @param _allowFailureMap Bitmap-encoded number. TODO:\\n /// @return execResults address of the implementation contract.\\n /// @return failureMap address of the implementation contract.\\n function _execute(\\n address _target,\\n bytes32 _callId,\\n IDAO.Action[] calldata _actions,\\n uint256 _allowFailureMap\\n ) internal virtual returns (bytes[] memory execResults, uint256 failureMap) {\\n (execResults, failureMap) = IDAO(_target).execute(_callId, _actions, _allowFailureMap);\\n }\\n}\\n\",\"keccak256\":\"0x23fff653e79f6d079073bab2f878051cf85c8e3cfa7ef359f3be92fc65ca2501\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/IProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IProtocolVersion\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the semantic Aragon OSx protocol version number.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IProtocolVersion {\\n /// @notice Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\\n /// @return _version Returns the semantic Aragon OSx protocol version number.\\n /// @dev This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\\n function protocolVersion() external view returns (uint8[3] memory _version);\\n}\\n\",\"keccak256\":\"0x00a4da654d21dc1bdadbdc8bd54bb86c378c56f85e461ccc31303628ea621361\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/ProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IProtocolVersion} from \\\"./IProtocolVersion.sol\\\";\\n\\n/// @title ProtocolVersion\\n/// @author Aragon X - 2023\\n/// @notice An abstract, stateless, non-upgradeable contract providing the current Aragon OSx protocol version number.\\n/// @dev Do not add any new variables to this contract that would shift down storage in the inheritance chain.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract ProtocolVersion is IProtocolVersion {\\n // IMPORTANT: Do not add any storage variable, see the above notice.\\n\\n /// @inheritdoc IProtocolVersion\\n function protocolVersion() public pure returns (uint8[3] memory) {\\n return [1, 4, 0];\\n }\\n}\\n\",\"keccak256\":\"0x3975c937be935f687c6b6b8f379071232681e98cf04b175d72781b819ea52bdb\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[{"astId":372,"contract":"src/mocks/plugin/PluginCloneableMock.sol:PluginCloneableMockBuild1","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":375,"contract":"src/mocks/plugin/PluginCloneableMock.sol:PluginCloneableMockBuild1","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":1280,"contract":"src/mocks/plugin/PluginCloneableMock.sol:PluginCloneableMockBuild1","label":"__gap","offset":0,"slot":"1","type":"t_array(t_uint256)50_storage"},{"astId":1051,"contract":"src/mocks/plugin/PluginCloneableMock.sol:PluginCloneableMockBuild1","label":"__gap","offset":0,"slot":"51","type":"t_array(t_uint256)50_storage"},{"astId":3887,"contract":"src/mocks/plugin/PluginCloneableMock.sol:PluginCloneableMockBuild1","label":"dao_","offset":0,"slot":"101","type":"t_contract(IDAO)2538"},{"astId":3936,"contract":"src/mocks/plugin/PluginCloneableMock.sol:PluginCloneableMockBuild1","label":"__gap","offset":0,"slot":"102","type":"t_array(t_uint256)49_storage"},{"astId":4196,"contract":"src/mocks/plugin/PluginCloneableMock.sol:PluginCloneableMockBuild1","label":"target","offset":0,"slot":"151","type":"t_address"},{"astId":2549,"contract":"src/mocks/plugin/PluginCloneableMock.sol:PluginCloneableMockBuild1","label":"state1","offset":0,"slot":"152","type":"t_uint256"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_array(t_uint256)49_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[49]","numberOfBytes":"1568"},"t_array(t_uint256)50_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[50]","numberOfBytes":"1600"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_contract(IDAO)2538":{"encoding":"inplace","label":"contract IDAO","numberOfBytes":"20"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"kind":"user","methods":{"dao()":{"notice":"Returns the DAO contract."},"pluginType()":{"notice":"Returns the plugin's type"},"protocolVersion()":{"notice":"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with."},"setTarget(address)":{"notice":"Can only be called by the current owner. TODO"},"supportsInterface(bytes4)":{"notice":"Checks if this or the parent contract supports an interface by its ID."}},"notice":"A mock cloneable plugin to be deployed via the minimal proxy pattern. v1.1 (Release 1, Build 1)","version":1}},"PluginCloneableMockBuild2":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousTarget","type":"address"},{"indexed":true,"internalType":"address","name":"newTarget","type":"address"}],"name":"TargetSet","type":"event"},{"inputs":[],"name":"dao","outputs":[{"internalType":"contract IDAO","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IDAO","name":"_dao","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pluginType","outputs":[{"internalType":"enum IPlugin.PluginType","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"protocolVersion","outputs":[{"internalType":"uint8[3]","name":"","type":"uint8[3]"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_target","type":"address"}],"name":"setTarget","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"state1","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"state2","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"target","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"DO NOT USE IN PRODUCTION!","kind":"dev","methods":{"dao()":{"returns":{"_0":"The DAO contract."}},"protocolVersion()":{"details":"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.","returns":{"_0":"Returns the semantic Aragon OSx protocol version number."}},"setTarget(address)":{"details":"Sets the target to a new target (`newTarget`)."},"supportsInterface(bytes4)":{"params":{"_interfaceId":"The ID of the interface."},"returns":{"_0":"Returns `true` if the interface is supported."}}},"version":1},"evm":{"bytecode":{"functionDebugData":{"@_4211":{"entryPoint":null,"id":4211,"parameterSlots":0,"returnSlots":0},"@_disableInitializers_515":{"entryPoint":30,"id":515,"parameterSlots":0,"returnSlots":0},"abi_encode_tuple_t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:608:50","statements":[{"nodeType":"YulBlock","src":"6:3:50","statements":[]},{"body":{"nodeType":"YulBlock","src":"188:229:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"205:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"216:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"198:6:50"},"nodeType":"YulFunctionCall","src":"198:21:50"},"nodeType":"YulExpressionStatement","src":"198:21:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"239:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"250:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"235:3:50"},"nodeType":"YulFunctionCall","src":"235:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"255:2:50","type":"","value":"39"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"228:6:50"},"nodeType":"YulFunctionCall","src":"228:30:50"},"nodeType":"YulExpressionStatement","src":"228:30:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"278:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"289:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"274:3:50"},"nodeType":"YulFunctionCall","src":"274:18:50"},{"hexValue":"496e697469616c697a61626c653a20636f6e747261637420697320696e697469","kind":"string","nodeType":"YulLiteral","src":"294:34:50","type":"","value":"Initializable: contract is initi"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"267:6:50"},"nodeType":"YulFunctionCall","src":"267:62:50"},"nodeType":"YulExpressionStatement","src":"267:62:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"349:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"360:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"345:3:50"},"nodeType":"YulFunctionCall","src":"345:18:50"},{"hexValue":"616c697a696e67","kind":"string","nodeType":"YulLiteral","src":"365:9:50","type":"","value":"alizing"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"338:6:50"},"nodeType":"YulFunctionCall","src":"338:37:50"},"nodeType":"YulExpressionStatement","src":"338:37:50"},{"nodeType":"YulAssignment","src":"384:27:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"396:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"407:3:50","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"392:3:50"},"nodeType":"YulFunctionCall","src":"392:19:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"384:4:50"}]}]},"name":"abi_encode_tuple_t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"165:9:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"179:4:50","type":""}],"src":"14:403:50"},{"body":{"nodeType":"YulBlock","src":"519:87:50","statements":[{"nodeType":"YulAssignment","src":"529:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"541:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"552:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"537:3:50"},"nodeType":"YulFunctionCall","src":"537:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"529:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"571:9:50"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"586:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"594:4:50","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"582:3:50"},"nodeType":"YulFunctionCall","src":"582:17:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"564:6:50"},"nodeType":"YulFunctionCall","src":"564:36:50"},"nodeType":"YulExpressionStatement","src":"564:36:50"}]},"name":"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"488:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"499:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"510:4:50","type":""}],"src":"422:184:50"}]},"contents":"{\n { }\n function abi_encode_tuple_t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 39)\n mstore(add(headStart, 64), \"Initializable: contract is initi\")\n mstore(add(headStart, 96), \"alizing\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xff))\n }\n}","id":50,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"608060405234801561001057600080fd5b5061001961001e565b6100dd565b600054610100900460ff161561008a5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116146100db576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b61057a806100ec6000396000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c80636accab8c11610076578063c4d66de81161005b578063c4d66de814610145578063d4b8399214610158578063efe51cca1461016b57600080fd5b80636accab8c14610119578063776d1a011461013057600080fd5b806301ffc9a7146100a85780632ae9c600146100d05780634162169f146100e557806341de68301461010a575b600080fd5b6100bb6100b63660046104ae565b610174565b60405190151581526020015b60405180910390f35b6100d86101c5565b6040516100c791906104df565b6065546001600160a01b03165b6040516001600160a01b0390911681526020016100c7565b60016040516100c79190610513565b61012260985481565b6040519081526020016100c7565b61014361013e366004610550565b6101ef565b005b610143610153366004610550565b61024e565b6097546100f2906001600160a01b031681565b61012260995481565b60006001600160e01b0319821663041de68360e41b14806101a457506001600160e01b03198216621574e360e91b145b806101bf57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6101cd610490565b5060408051606081018252600181526004602082015260009181019190915290565b609780546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d690600090a35050565b600054610100900460ff161580801561026e5750600054600160ff909116105b806102885750303b158015610288575060005460ff166001145b6102ff5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b6000805460ff191660011790558015610322576000805461ff0019166101001790555b61032b8261037f565b60016098556002609955801561037b576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b600054610100900460ff166103ea5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016102f6565b6103f3816103f6565b50565b600054610100900460ff166104615760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016102f6565b6065805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b60405180606001604052806003906020820280368337509192915050565b6000602082840312156104c057600080fd5b81356001600160e01b0319811681146104d857600080fd5b9392505050565b60608101818360005b600381101561050a57815160ff168352602092830192909101906001016104e8565b50505092915050565b602081016003831061053557634e487b7160e01b600052602160045260246000fd5b91905290565b6001600160a01b03811681146103f357600080fd5b60006020828403121561056257600080fd5b81356104d88161053b56fea164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x19 PUSH2 0x1E JUMP JUMPDEST PUSH2 0xDD JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x8A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x27 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320696E697469 PUSH1 0x44 DUP3 ADD MSTORE PUSH7 0x616C697A696E67 PUSH1 0xC8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xFF SWAP1 DUP2 AND EQ PUSH2 0xDB JUMPI PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST JUMP JUMPDEST PUSH2 0x57A DUP1 PUSH2 0xEC PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xA3 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6ACCAB8C GT PUSH2 0x76 JUMPI DUP1 PUSH4 0xC4D66DE8 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0x145 JUMPI DUP1 PUSH4 0xD4B83992 EQ PUSH2 0x158 JUMPI DUP1 PUSH4 0xEFE51CCA EQ PUSH2 0x16B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6ACCAB8C EQ PUSH2 0x119 JUMPI DUP1 PUSH4 0x776D1A01 EQ PUSH2 0x130 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xA8 JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0xD0 JUMPI DUP1 PUSH4 0x4162169F EQ PUSH2 0xE5 JUMPI DUP1 PUSH4 0x41DE6830 EQ PUSH2 0x10A JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xBB PUSH2 0xB6 CALLDATASIZE PUSH1 0x4 PUSH2 0x4AE JUMP JUMPDEST PUSH2 0x174 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xD8 PUSH2 0x1C5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xC7 SWAP2 SWAP1 PUSH2 0x4DF JUMP JUMPDEST PUSH1 0x65 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xC7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x40 MLOAD PUSH2 0xC7 SWAP2 SWAP1 PUSH2 0x513 JUMP JUMPDEST PUSH2 0x122 PUSH1 0x98 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xC7 JUMP JUMPDEST PUSH2 0x143 PUSH2 0x13E CALLDATASIZE PUSH1 0x4 PUSH2 0x550 JUMP JUMPDEST PUSH2 0x1EF JUMP JUMPDEST STOP JUMPDEST PUSH2 0x143 PUSH2 0x153 CALLDATASIZE PUSH1 0x4 PUSH2 0x550 JUMP JUMPDEST PUSH2 0x24E JUMP JUMPDEST PUSH1 0x97 SLOAD PUSH2 0xF2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x122 PUSH1 0x99 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x41DE683 PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x1A4 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x1BF JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1CD PUSH2 0x490 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x97 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP2 SWAP1 DUP3 SWAP1 PUSH32 0x90CC2F570A6EB594B1580EA3E41247D2D73A55281889E86BD4EC2FC29C7E62D6 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 DUP1 ISZERO PUSH2 0x26E JUMPI POP PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xFF SWAP1 SWAP2 AND LT JUMPDEST DUP1 PUSH2 0x288 JUMPI POP ADDRESS EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x288 JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF AND PUSH1 0x1 EQ JUMPDEST PUSH2 0x2FF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x647920696E697469616C697A6564000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE DUP1 ISZERO PUSH2 0x322 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND PUSH2 0x100 OR SWAP1 SSTORE JUMPDEST PUSH2 0x32B DUP3 PUSH2 0x37F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x98 SSTORE PUSH1 0x2 PUSH1 0x99 SSTORE DUP1 ISZERO PUSH2 0x37B JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x3EA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x2F6 JUMP JUMPDEST PUSH2 0x3F3 DUP2 PUSH2 0x3F6 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x461 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x2F6 JUMP JUMPDEST PUSH1 0x65 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x4D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0x50A JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x4E8 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH1 0x3 DUP4 LT PUSH2 0x535 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 SWAP1 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x3F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x562 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x4D8 DUP2 PUSH2 0x53B JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"727:254:26:-:0;;;;;;;;;;;;-1:-1:-1;1290:22:39;:20;:22::i;:::-;727:254:26;;5939:280:4;6007:13;;;;;;;6006:14;5998:66;;;;-1:-1:-1;;;5998:66:4;;216:2:50;5998:66:4;;;198:21:50;255:2;235:18;;;228:30;294:34;274:18;;;267:62;-1:-1:-1;;;345:18:50;;;338:37;392:19;;5998:66:4;;;;;;;;6078:12;;6094:15;6078:12;;;:31;6074:139;;6125:12;:30;;-1:-1:-1;;6125:30:4;6140:15;6125:30;;;;;;6174:28;;564:36:50;;;6174:28:4;;552:2:50;537:18;6174:28:4;;;;;;;6074:139;5939:280::o;422:184:50:-;727:254:26;;;;;;"},"deployedBytecode":{"functionDebugData":{"@__DaoAuthorizableUpgradeable_init_3901":{"entryPoint":1014,"id":3901,"parameterSlots":1,"returnSlots":0},"@__PluginCloneable_init_4225":{"entryPoint":895,"id":4225,"parameterSlots":1,"returnSlots":0},"@dao_3911":{"entryPoint":null,"id":3911,"parameterSlots":0,"returnSlots":1},"@initialize_2595":{"entryPoint":590,"id":2595,"parameterSlots":1,"returnSlots":0},"@isContract_689":{"entryPoint":null,"id":689,"parameterSlots":1,"returnSlots":1},"@pluginType_4257":{"entryPoint":null,"id":4257,"parameterSlots":0,"returnSlots":1},"@protocolVersion_5135":{"entryPoint":453,"id":5135,"parameterSlots":0,"returnSlots":1},"@setTarget_4245":{"entryPoint":495,"id":4245,"parameterSlots":1,"returnSlots":0},"@state1_2572":{"entryPoint":null,"id":2572,"parameterSlots":0,"returnSlots":0},"@state2_2574":{"entryPoint":null,"id":2574,"parameterSlots":0,"returnSlots":0},"@supportsInterface_1275":{"entryPoint":null,"id":1275,"parameterSlots":1,"returnSlots":1},"@supportsInterface_4286":{"entryPoint":372,"id":4286,"parameterSlots":1,"returnSlots":1},"@target_4196":{"entryPoint":null,"id":4196,"parameterSlots":0,"returnSlots":0},"abi_decode_tuple_t_address":{"entryPoint":1360,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes4":{"entryPoint":1198,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_contract$_IDAO_$2538":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed":{"entryPoint":1247,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_contract$_IDAO_$2538__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_enum$_PluginType_$3994__to_t_uint8__fromStack_reversed":{"entryPoint":1299,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_rational_1_by_1__to_t_uint8__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"validator_revert_address":{"entryPoint":1339,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:3707:50","statements":[{"nodeType":"YulBlock","src":"6:3:50","statements":[]},{"body":{"nodeType":"YulBlock","src":"83:217:50","statements":[{"body":{"nodeType":"YulBlock","src":"129:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"138:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"141:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"131:6:50"},"nodeType":"YulFunctionCall","src":"131:12:50"},"nodeType":"YulExpressionStatement","src":"131:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"104:7:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"113:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"100:3:50"},"nodeType":"YulFunctionCall","src":"100:23:50"},{"kind":"number","nodeType":"YulLiteral","src":"125:2:50","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"96:3:50"},"nodeType":"YulFunctionCall","src":"96:32:50"},"nodeType":"YulIf","src":"93:52:50"},{"nodeType":"YulVariableDeclaration","src":"154:36:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"180:9:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"167:12:50"},"nodeType":"YulFunctionCall","src":"167:23:50"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"158:5:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"254:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"263:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"266:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"256:6:50"},"nodeType":"YulFunctionCall","src":"256:12:50"},"nodeType":"YulExpressionStatement","src":"256:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"212:5:50"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"223:5:50"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"234:3:50","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"239:10:50","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"230:3:50"},"nodeType":"YulFunctionCall","src":"230:20:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"219:3:50"},"nodeType":"YulFunctionCall","src":"219:32:50"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"209:2:50"},"nodeType":"YulFunctionCall","src":"209:43:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"202:6:50"},"nodeType":"YulFunctionCall","src":"202:51:50"},"nodeType":"YulIf","src":"199:71:50"},{"nodeType":"YulAssignment","src":"279:15:50","value":{"name":"value","nodeType":"YulIdentifier","src":"289:5:50"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"279:6:50"}]}]},"name":"abi_decode_tuple_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"49:9:50","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"60:7:50","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"72:6:50","type":""}],"src":"14:286:50"},{"body":{"nodeType":"YulBlock","src":"400:92:50","statements":[{"nodeType":"YulAssignment","src":"410:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"422:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"433:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"418:3:50"},"nodeType":"YulFunctionCall","src":"418:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"410:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"452:9:50"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"477:6:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"470:6:50"},"nodeType":"YulFunctionCall","src":"470:14:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"463:6:50"},"nodeType":"YulFunctionCall","src":"463:22:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"445:6:50"},"nodeType":"YulFunctionCall","src":"445:41:50"},"nodeType":"YulExpressionStatement","src":"445:41:50"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"369:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"380:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"391:4:50","type":""}],"src":"305:187:50"},{"body":{"nodeType":"YulBlock","src":"640:358:50","statements":[{"nodeType":"YulAssignment","src":"650:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"662:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"673:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"658:3:50"},"nodeType":"YulFunctionCall","src":"658:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"650:4:50"}]},{"nodeType":"YulVariableDeclaration","src":"685:20:50","value":{"name":"headStart","nodeType":"YulIdentifier","src":"696:9:50"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"689:3:50","type":""}]},{"nodeType":"YulAssignment","src":"714:16:50","value":{"name":"headStart","nodeType":"YulIdentifier","src":"721:9:50"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"714:3:50"}]},{"nodeType":"YulVariableDeclaration","src":"739:20:50","value":{"name":"value0","nodeType":"YulIdentifier","src":"753:6:50"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"743:6:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"768:10:50","value":{"kind":"number","nodeType":"YulLiteral","src":"777:1:50","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"772:1:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"834:158:50","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"855:3:50"},{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"870:6:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"864:5:50"},"nodeType":"YulFunctionCall","src":"864:13:50"},{"kind":"number","nodeType":"YulLiteral","src":"879:4:50","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"860:3:50"},"nodeType":"YulFunctionCall","src":"860:24:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"848:6:50"},"nodeType":"YulFunctionCall","src":"848:37:50"},"nodeType":"YulExpressionStatement","src":"848:37:50"},{"nodeType":"YulVariableDeclaration","src":"898:14:50","value":{"kind":"number","nodeType":"YulLiteral","src":"908:4:50","type":"","value":"0x20"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"902:2:50","type":""}]},{"nodeType":"YulAssignment","src":"925:19:50","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"936:3:50"},{"name":"_1","nodeType":"YulIdentifier","src":"941:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"932:3:50"},"nodeType":"YulFunctionCall","src":"932:12:50"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"925:3:50"}]},{"nodeType":"YulAssignment","src":"957:25:50","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"971:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"979:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"967:3:50"},"nodeType":"YulFunctionCall","src":"967:15:50"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"957:6:50"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"798:1:50"},{"kind":"number","nodeType":"YulLiteral","src":"801:4:50","type":"","value":"0x03"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"795:2:50"},"nodeType":"YulFunctionCall","src":"795:11:50"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"807:18:50","statements":[{"nodeType":"YulAssignment","src":"809:14:50","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"818:1:50"},{"kind":"number","nodeType":"YulLiteral","src":"821:1:50","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"814:3:50"},"nodeType":"YulFunctionCall","src":"814:9:50"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"809:1:50"}]}]},"pre":{"nodeType":"YulBlock","src":"791:3:50","statements":[]},"src":"787:205:50"}]},"name":"abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"609:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"620:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"631:4:50","type":""}],"src":"497:501:50"},{"body":{"nodeType":"YulBlock","src":"1117:125:50","statements":[{"nodeType":"YulAssignment","src":"1127:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1139:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"1150:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1135:3:50"},"nodeType":"YulFunctionCall","src":"1135:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1127:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1169:9:50"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1184:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"1192:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1180:3:50"},"nodeType":"YulFunctionCall","src":"1180:55:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1162:6:50"},"nodeType":"YulFunctionCall","src":"1162:74:50"},"nodeType":"YulExpressionStatement","src":"1162:74:50"}]},"name":"abi_encode_tuple_t_contract$_IDAO_$2538__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1086:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1097:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1108:4:50","type":""}],"src":"1003:239:50"},{"body":{"nodeType":"YulBlock","src":"1361:229:50","statements":[{"nodeType":"YulAssignment","src":"1371:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1383:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"1394:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1379:3:50"},"nodeType":"YulFunctionCall","src":"1379:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1371:4:50"}]},{"body":{"nodeType":"YulBlock","src":"1439:111:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1460:1:50","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1467:3:50","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"1472:10:50","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1463:3:50"},"nodeType":"YulFunctionCall","src":"1463:20:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1453:6:50"},"nodeType":"YulFunctionCall","src":"1453:31:50"},"nodeType":"YulExpressionStatement","src":"1453:31:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1504:1:50","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"1507:4:50","type":"","value":"0x21"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1497:6:50"},"nodeType":"YulFunctionCall","src":"1497:15:50"},"nodeType":"YulExpressionStatement","src":"1497:15:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1532:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1535:4:50","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1525:6:50"},"nodeType":"YulFunctionCall","src":"1525:15:50"},"nodeType":"YulExpressionStatement","src":"1525:15:50"}]},"condition":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1419:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"1427:1:50","type":"","value":"3"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"1416:2:50"},"nodeType":"YulFunctionCall","src":"1416:13:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1409:6:50"},"nodeType":"YulFunctionCall","src":"1409:21:50"},"nodeType":"YulIf","src":"1406:144:50"},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1566:9:50"},{"name":"value0","nodeType":"YulIdentifier","src":"1577:6:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1559:6:50"},"nodeType":"YulFunctionCall","src":"1559:25:50"},"nodeType":"YulExpressionStatement","src":"1559:25:50"}]},"name":"abi_encode_tuple_t_enum$_PluginType_$3994__to_t_uint8__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1330:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1341:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1352:4:50","type":""}],"src":"1247:343:50"},{"body":{"nodeType":"YulBlock","src":"1696:76:50","statements":[{"nodeType":"YulAssignment","src":"1706:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1718:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"1729:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1714:3:50"},"nodeType":"YulFunctionCall","src":"1714:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1706:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1748:9:50"},{"name":"value0","nodeType":"YulIdentifier","src":"1759:6:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1741:6:50"},"nodeType":"YulFunctionCall","src":"1741:25:50"},"nodeType":"YulExpressionStatement","src":"1741:25:50"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1665:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1676:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1687:4:50","type":""}],"src":"1595:177:50"},{"body":{"nodeType":"YulBlock","src":"1822:109:50","statements":[{"body":{"nodeType":"YulBlock","src":"1909:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1918:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1921:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1911:6:50"},"nodeType":"YulFunctionCall","src":"1911:12:50"},"nodeType":"YulExpressionStatement","src":"1911:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1845:5:50"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1856:5:50"},{"kind":"number","nodeType":"YulLiteral","src":"1863:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1852:3:50"},"nodeType":"YulFunctionCall","src":"1852:54:50"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1842:2:50"},"nodeType":"YulFunctionCall","src":"1842:65:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1835:6:50"},"nodeType":"YulFunctionCall","src":"1835:73:50"},"nodeType":"YulIf","src":"1832:93:50"}]},"name":"validator_revert_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1811:5:50","type":""}],"src":"1777:154:50"},{"body":{"nodeType":"YulBlock","src":"2006:177:50","statements":[{"body":{"nodeType":"YulBlock","src":"2052:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2061:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2064:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2054:6:50"},"nodeType":"YulFunctionCall","src":"2054:12:50"},"nodeType":"YulExpressionStatement","src":"2054:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2027:7:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"2036:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2023:3:50"},"nodeType":"YulFunctionCall","src":"2023:23:50"},{"kind":"number","nodeType":"YulLiteral","src":"2048:2:50","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2019:3:50"},"nodeType":"YulFunctionCall","src":"2019:32:50"},"nodeType":"YulIf","src":"2016:52:50"},{"nodeType":"YulVariableDeclaration","src":"2077:36:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2103:9:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2090:12:50"},"nodeType":"YulFunctionCall","src":"2090:23:50"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"2081:5:50","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2147:5:50"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"2122:24:50"},"nodeType":"YulFunctionCall","src":"2122:31:50"},"nodeType":"YulExpressionStatement","src":"2122:31:50"},{"nodeType":"YulAssignment","src":"2162:15:50","value":{"name":"value","nodeType":"YulIdentifier","src":"2172:5:50"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2162:6:50"}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1972:9:50","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1983:7:50","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1995:6:50","type":""}],"src":"1936:247:50"},{"body":{"nodeType":"YulBlock","src":"2271:177:50","statements":[{"body":{"nodeType":"YulBlock","src":"2317:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2326:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2329:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2319:6:50"},"nodeType":"YulFunctionCall","src":"2319:12:50"},"nodeType":"YulExpressionStatement","src":"2319:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2292:7:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"2301:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2288:3:50"},"nodeType":"YulFunctionCall","src":"2288:23:50"},{"kind":"number","nodeType":"YulLiteral","src":"2313:2:50","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2284:3:50"},"nodeType":"YulFunctionCall","src":"2284:32:50"},"nodeType":"YulIf","src":"2281:52:50"},{"nodeType":"YulVariableDeclaration","src":"2342:36:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2368:9:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2355:12:50"},"nodeType":"YulFunctionCall","src":"2355:23:50"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"2346:5:50","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2412:5:50"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"2387:24:50"},"nodeType":"YulFunctionCall","src":"2387:31:50"},"nodeType":"YulExpressionStatement","src":"2387:31:50"},{"nodeType":"YulAssignment","src":"2427:15:50","value":{"name":"value","nodeType":"YulIdentifier","src":"2437:5:50"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2427:6:50"}]}]},"name":"abi_decode_tuple_t_contract$_IDAO_$2538","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2237:9:50","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2248:7:50","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2260:6:50","type":""}],"src":"2188:260:50"},{"body":{"nodeType":"YulBlock","src":"2554:125:50","statements":[{"nodeType":"YulAssignment","src":"2564:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2576:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"2587:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2572:3:50"},"nodeType":"YulFunctionCall","src":"2572:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2564:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2606:9:50"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2621:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"2629:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2617:3:50"},"nodeType":"YulFunctionCall","src":"2617:55:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2599:6:50"},"nodeType":"YulFunctionCall","src":"2599:74:50"},"nodeType":"YulExpressionStatement","src":"2599:74:50"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2523:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"2534:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2545:4:50","type":""}],"src":"2453:226:50"},{"body":{"nodeType":"YulBlock","src":"2858:236:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2875:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"2886:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2868:6:50"},"nodeType":"YulFunctionCall","src":"2868:21:50"},"nodeType":"YulExpressionStatement","src":"2868:21:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2909:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"2920:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2905:3:50"},"nodeType":"YulFunctionCall","src":"2905:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"2925:2:50","type":"","value":"46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2898:6:50"},"nodeType":"YulFunctionCall","src":"2898:30:50"},"nodeType":"YulExpressionStatement","src":"2898:30:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2948:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"2959:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2944:3:50"},"nodeType":"YulFunctionCall","src":"2944:18:50"},{"hexValue":"496e697469616c697a61626c653a20636f6e747261637420697320616c726561","kind":"string","nodeType":"YulLiteral","src":"2964:34:50","type":"","value":"Initializable: contract is alrea"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2937:6:50"},"nodeType":"YulFunctionCall","src":"2937:62:50"},"nodeType":"YulExpressionStatement","src":"2937:62:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3019:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"3030:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3015:3:50"},"nodeType":"YulFunctionCall","src":"3015:18:50"},{"hexValue":"647920696e697469616c697a6564","kind":"string","nodeType":"YulLiteral","src":"3035:16:50","type":"","value":"dy initialized"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3008:6:50"},"nodeType":"YulFunctionCall","src":"3008:44:50"},"nodeType":"YulExpressionStatement","src":"3008:44:50"},{"nodeType":"YulAssignment","src":"3061:27:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3073:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"3084:3:50","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3069:3:50"},"nodeType":"YulFunctionCall","src":"3069:19:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3061:4:50"}]}]},"name":"abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2835:9:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2849:4:50","type":""}],"src":"2684:410:50"},{"body":{"nodeType":"YulBlock","src":"3206:87:50","statements":[{"nodeType":"YulAssignment","src":"3216:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3228:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"3239:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3224:3:50"},"nodeType":"YulFunctionCall","src":"3224:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3216:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3258:9:50"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3273:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"3281:4:50","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3269:3:50"},"nodeType":"YulFunctionCall","src":"3269:17:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3251:6:50"},"nodeType":"YulFunctionCall","src":"3251:36:50"},"nodeType":"YulExpressionStatement","src":"3251:36:50"}]},"name":"abi_encode_tuple_t_rational_1_by_1__to_t_uint8__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3175:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3186:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3197:4:50","type":""}],"src":"3099:194:50"},{"body":{"nodeType":"YulBlock","src":"3472:233:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3489:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"3500:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3482:6:50"},"nodeType":"YulFunctionCall","src":"3482:21:50"},"nodeType":"YulExpressionStatement","src":"3482:21:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3523:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"3534:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3519:3:50"},"nodeType":"YulFunctionCall","src":"3519:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"3539:2:50","type":"","value":"43"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3512:6:50"},"nodeType":"YulFunctionCall","src":"3512:30:50"},"nodeType":"YulExpressionStatement","src":"3512:30:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3562:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"3573:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3558:3:50"},"nodeType":"YulFunctionCall","src":"3558:18:50"},{"hexValue":"496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069","kind":"string","nodeType":"YulLiteral","src":"3578:34:50","type":"","value":"Initializable: contract is not i"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3551:6:50"},"nodeType":"YulFunctionCall","src":"3551:62:50"},"nodeType":"YulExpressionStatement","src":"3551:62:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3633:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"3644:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3629:3:50"},"nodeType":"YulFunctionCall","src":"3629:18:50"},{"hexValue":"6e697469616c697a696e67","kind":"string","nodeType":"YulLiteral","src":"3649:13:50","type":"","value":"nitializing"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3622:6:50"},"nodeType":"YulFunctionCall","src":"3622:41:50"},"nodeType":"YulExpressionStatement","src":"3622:41:50"},{"nodeType":"YulAssignment","src":"3672:27:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3684:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"3695:3:50","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3680:3:50"},"nodeType":"YulFunctionCall","src":"3680:19:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3672:4:50"}]}]},"name":"abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3449:9:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3463:4:50","type":""}],"src":"3298:407:50"}]},"contents":"{\n { }\n function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n if iszero(eq(value, and(value, shl(224, 0xffffffff)))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 96)\n let pos := headStart\n pos := headStart\n let srcPtr := value0\n let i := 0\n for { } lt(i, 0x03) { i := add(i, 1) }\n {\n mstore(pos, and(mload(srcPtr), 0xff))\n let _1 := 0x20\n pos := add(pos, _1)\n srcPtr := add(srcPtr, _1)\n }\n }\n function abi_encode_tuple_t_contract$_IDAO_$2538__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_encode_tuple_t_enum$_PluginType_$3994__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n if iszero(lt(value0, 3))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x21)\n revert(0, 0x24)\n }\n mstore(headStart, value0)\n }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function validator_revert_address(value)\n {\n if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n }\n function abi_decode_tuple_t_contract$_IDAO_$2538(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 46)\n mstore(add(headStart, 64), \"Initializable: contract is alrea\")\n mstore(add(headStart, 96), \"dy initialized\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_rational_1_by_1__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xff))\n }\n function abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 43)\n mstore(add(headStart, 64), \"Initializable: contract is not i\")\n mstore(add(headStart, 96), \"nitializing\")\n tail := add(headStart, 128)\n }\n}","id":50,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100a35760003560e01c80636accab8c11610076578063c4d66de81161005b578063c4d66de814610145578063d4b8399214610158578063efe51cca1461016b57600080fd5b80636accab8c14610119578063776d1a011461013057600080fd5b806301ffc9a7146100a85780632ae9c600146100d05780634162169f146100e557806341de68301461010a575b600080fd5b6100bb6100b63660046104ae565b610174565b60405190151581526020015b60405180910390f35b6100d86101c5565b6040516100c791906104df565b6065546001600160a01b03165b6040516001600160a01b0390911681526020016100c7565b60016040516100c79190610513565b61012260985481565b6040519081526020016100c7565b61014361013e366004610550565b6101ef565b005b610143610153366004610550565b61024e565b6097546100f2906001600160a01b031681565b61012260995481565b60006001600160e01b0319821663041de68360e41b14806101a457506001600160e01b03198216621574e360e91b145b806101bf57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6101cd610490565b5060408051606081018252600181526004602082015260009181019190915290565b609780546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d690600090a35050565b600054610100900460ff161580801561026e5750600054600160ff909116105b806102885750303b158015610288575060005460ff166001145b6102ff5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b6000805460ff191660011790558015610322576000805461ff0019166101001790555b61032b8261037f565b60016098556002609955801561037b576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b600054610100900460ff166103ea5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016102f6565b6103f3816103f6565b50565b600054610100900460ff166104615760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016102f6565b6065805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b60405180606001604052806003906020820280368337509192915050565b6000602082840312156104c057600080fd5b81356001600160e01b0319811681146104d857600080fd5b9392505050565b60608101818360005b600381101561050a57815160ff168352602092830192909101906001016104e8565b50505092915050565b602081016003831061053557634e487b7160e01b600052602160045260246000fd5b91905290565b6001600160a01b03811681146103f357600080fd5b60006020828403121561056257600080fd5b81356104d88161053b56fea164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xA3 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6ACCAB8C GT PUSH2 0x76 JUMPI DUP1 PUSH4 0xC4D66DE8 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0x145 JUMPI DUP1 PUSH4 0xD4B83992 EQ PUSH2 0x158 JUMPI DUP1 PUSH4 0xEFE51CCA EQ PUSH2 0x16B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6ACCAB8C EQ PUSH2 0x119 JUMPI DUP1 PUSH4 0x776D1A01 EQ PUSH2 0x130 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xA8 JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0xD0 JUMPI DUP1 PUSH4 0x4162169F EQ PUSH2 0xE5 JUMPI DUP1 PUSH4 0x41DE6830 EQ PUSH2 0x10A JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xBB PUSH2 0xB6 CALLDATASIZE PUSH1 0x4 PUSH2 0x4AE JUMP JUMPDEST PUSH2 0x174 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xD8 PUSH2 0x1C5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xC7 SWAP2 SWAP1 PUSH2 0x4DF JUMP JUMPDEST PUSH1 0x65 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xC7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x40 MLOAD PUSH2 0xC7 SWAP2 SWAP1 PUSH2 0x513 JUMP JUMPDEST PUSH2 0x122 PUSH1 0x98 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xC7 JUMP JUMPDEST PUSH2 0x143 PUSH2 0x13E CALLDATASIZE PUSH1 0x4 PUSH2 0x550 JUMP JUMPDEST PUSH2 0x1EF JUMP JUMPDEST STOP JUMPDEST PUSH2 0x143 PUSH2 0x153 CALLDATASIZE PUSH1 0x4 PUSH2 0x550 JUMP JUMPDEST PUSH2 0x24E JUMP JUMPDEST PUSH1 0x97 SLOAD PUSH2 0xF2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x122 PUSH1 0x99 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x41DE683 PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x1A4 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x1BF JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1CD PUSH2 0x490 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x97 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP2 SWAP1 DUP3 SWAP1 PUSH32 0x90CC2F570A6EB594B1580EA3E41247D2D73A55281889E86BD4EC2FC29C7E62D6 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 DUP1 ISZERO PUSH2 0x26E JUMPI POP PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xFF SWAP1 SWAP2 AND LT JUMPDEST DUP1 PUSH2 0x288 JUMPI POP ADDRESS EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x288 JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF AND PUSH1 0x1 EQ JUMPDEST PUSH2 0x2FF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x647920696E697469616C697A6564000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE DUP1 ISZERO PUSH2 0x322 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND PUSH2 0x100 OR SWAP1 SSTORE JUMPDEST PUSH2 0x32B DUP3 PUSH2 0x37F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x98 SSTORE PUSH1 0x2 PUSH1 0x99 SSTORE DUP1 ISZERO PUSH2 0x37B JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x3EA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x2F6 JUMP JUMPDEST PUSH2 0x3F3 DUP2 PUSH2 0x3F6 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x461 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x2F6 JUMP JUMPDEST PUSH1 0x65 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x4D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0x50A JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x4E8 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH1 0x3 DUP4 LT PUSH2 0x535 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 SWAP1 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x3F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x562 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x4D8 DUP2 PUSH2 0x53B JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"727:254:26:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2263:288:39;;;;;;:::i;:::-;;:::i;:::-;;;470:14:50;;463:22;445:41;;433:2;418:18;2263:288:39;;;;;;;;631:98:49;;;:::i;:::-;;;;;;;:::i;1200:70:35:-;1259:4;;-1:-1:-1;;;;;1259:4:35;1200:70;;;-1:-1:-1;;;;;1180:55:50;;;1162:74;;1150:2;1135:18;1200:70:35;1003:239:50;1947:108:39;2028:20;1947:108;;;;;;:::i;787:21:26:-;;;;;;;;;1741:25:50;;;1729:2;1714:18;787:21:26;1595:177:50;1747:166:39;;;;;;:::i;:::-;;:::i;:::-;;842:137:26;;;;;;:::i;:::-;;:::i;936:21:39:-;;;;;-1:-1:-1;;;;;936:21:39;;;814::26;;;;;;2263:288:39;2349:4;-1:-1:-1;;;;;;2384:41:39;;-1:-1:-1;;;2384:41:39;;:107;;-1:-1:-1;;;;;;;2441:50:39;;-1:-1:-1;;;2441:50:39;2384:107;:160;;;-1:-1:-1;;;;;;;;;;1189:51:10;;;2507:37:39;2365:179;2263:288;-1:-1:-1;;2263:288:39:o;631:98:49:-;679:15;;:::i;:::-;-1:-1:-1;706:16:49;;;;;;;;714:1;706:16;;717:1;706:16;;;;-1:-1:-1;706:16:49;;;;;;;;631:98::o;1747:166:39:-;1825:6;;;-1:-1:-1;;;;;1841:16:39;;;-1:-1:-1;;1841:16:39;;;;;;;1872:34;;1825:6;;;1841:16;1825:6;;1872:34;;1800:22;;1872:34;1790:123;1747:166;:::o;842:137:26:-;3279:19:4;3302:13;;;;;;3301:14;;3347:34;;;;-1:-1:-1;3365:12:4;;3380:1;3365:12;;;;:16;3347:34;3346:108;;;-1:-1:-1;3426:4:4;1713:19:6;:23;;;3387:66:4;;-1:-1:-1;3436:12:4;;;;;:17;3387:66;3325:201;;;;-1:-1:-1;;;3325:201:4;;2886:2:50;3325:201:4;;;2868:21:50;2925:2;2905:18;;;2898:30;2964:34;2944:18;;;2937:62;3035:16;3015:18;;;3008:44;3069:19;;3325:201:4;;;;;;;;;3536:12;:16;;-1:-1:-1;;3536:16:4;3551:1;3536:16;;;3562:65;;;;3596:13;:20;;-1:-1:-1;;3596:20:4;;;;;3562:65;904:28:26::1;927:4;904:22;:28::i;:::-;951:1;942:6;:10:::0;971:1:::1;962:6;:10:::0;3647:99:4;;;;3697:5;3681:21;;-1:-1:-1;;3681:21:4;;;3721:14;;-1:-1:-1;3251:36:50;;3721:14:4;;3239:2:50;3224:18;3721:14:4;;;;;;;3647:99;3269:483;842:137:26;:::o;1486:133:39:-;5374:13:4;;;;;;;5366:69;;;;-1:-1:-1;;;5366:69:4;;3500:2:50;5366:69:4;;;3482:21:50;3539:2;3519:18;;;3512:30;3578:34;3558:18;;;3551:62;-1:-1:-1;;;3629:18:50;;;3622:41;3680:19;;5366:69:4;3298:407:50;5366:69:4;1573:39:39::1;1607:4;1573:33;:39::i;:::-;1486:133:::0;:::o;1010:108:35:-;5374:13:4;;;;;;;5366:69;;;;-1:-1:-1;;;5366:69:4;;3500:2:50;5366:69:4;;;3482:21:50;3539:2;3519:18;;;3512:30;3578:34;3558:18;;;3551:62;-1:-1:-1;;;3629:18:50;;;3622:41;3680:19;;5366:69:4;3298:407:50;5366:69:4;1100:4:35::1;:11:::0;;-1:-1:-1;;1100:11:35::1;-1:-1:-1::0;;;;;1100:11:35;;;::::1;::::0;;;::::1;::::0;;1010:108::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:286:50:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:50;;209:43;;199:71;;266:1;263;256:12;199:71;289:5;14:286;-1:-1:-1;;;14:286:50:o;497:501::-;673:2;658:18;;662:9;753:6;631:4;787:205;801:4;798:1;795:11;787:205;;;864:13;;879:4;860:24;848:37;;908:4;932:12;;;;967:15;;;;821:1;814:9;787:205;;;791:3;;;497:501;;;;:::o;1247:343::-;1394:2;1379:18;;1427:1;1416:13;;1406:144;;1472:10;1467:3;1463:20;1460:1;1453:31;1507:4;1504:1;1497:15;1535:4;1532:1;1525:15;1406:144;1559:25;;;1247:343;:::o;1777:154::-;-1:-1:-1;;;;;1856:5:50;1852:54;1845:5;1842:65;1832:93;;1921:1;1918;1911:12;1936:247;1995:6;2048:2;2036:9;2027:7;2023:23;2019:32;2016:52;;;2064:1;2061;2054:12;2016:52;2103:9;2090:23;2122:31;2147:5;2122:31;:::i"},"gasEstimates":{"creation":{"codeDepositCost":"280400","executionCost":"29907","totalCost":"310307"},"external":{"dao()":"2365","initialize(address)":"infinite","pluginType()":"294","protocolVersion()":"infinite","setTarget(address)":"26135","state1()":"2318","state2()":"2361","supportsInterface(bytes4)":"482","target()":"2381"}},"methodIdentifiers":{"dao()":"4162169f","initialize(address)":"c4d66de8","pluginType()":"41de6830","protocolVersion()":"2ae9c600","setTarget(address)":"776d1a01","state1()":"6accab8c","state2()":"efe51cca","supportsInterface(bytes4)":"01ffc9a7","target()":"d4b83992"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousTarget\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newTarget\",\"type\":\"address\"}],\"name\":\"TargetSet\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"dao\",\"outputs\":[{\"internalType\":\"contract IDAO\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IDAO\",\"name\":\"_dao\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pluginType\",\"outputs\":[{\"internalType\":\"enum IPlugin.PluginType\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"protocolVersion\",\"outputs\":[{\"internalType\":\"uint8[3]\",\"name\":\"\",\"type\":\"uint8[3]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_target\",\"type\":\"address\"}],\"name\":\"setTarget\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"state1\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"state2\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"target\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"DO NOT USE IN PRODUCTION!\",\"kind\":\"dev\",\"methods\":{\"dao()\":{\"returns\":{\"_0\":\"The DAO contract.\"}},\"protocolVersion()\":{\"details\":\"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\",\"returns\":{\"_0\":\"Returns the semantic Aragon OSx protocol version number.\"}},\"setTarget(address)\":{\"details\":\"Sets the target to a new target (`newTarget`).\"},\"supportsInterface(bytes4)\":{\"params\":{\"_interfaceId\":\"The ID of the interface.\"},\"returns\":{\"_0\":\"Returns `true` if the interface is supported.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"dao()\":{\"notice\":\"Returns the DAO contract.\"},\"pluginType()\":{\"notice\":\"Returns the plugin's type\"},\"protocolVersion()\":{\"notice\":\"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\"},\"setTarget(address)\":{\"notice\":\"Can only be called by the current owner. TODO\"},\"supportsInterface(bytes4)\":{\"notice\":\"Checks if this or the parent contract supports an interface by its ID.\"}},\"notice\":\"A mock cloneable plugin to be deployed via the minimal proxy pattern. v1.1 (Release 1, Build 2)\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/mocks/plugin/PluginCloneableMock.sol\":\"PluginCloneableMockBuild2\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n function __Context_init() internal onlyInitializing {\\n }\\n\\n function __Context_init_unchained() internal onlyInitializing {\\n }\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n function _contextSuffixLength() internal view virtual returns (uint256) {\\n return 0;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x75097e35253e7fb282ee4d7f27a80eaacfa759923185bf17302a89cbc059c5ef\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165Upgradeable.sol\\\";\\nimport {Initializable} from \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165Upgradeable is Initializable, IERC165Upgradeable {\\n function __ERC165_init() internal onlyInitializing {\\n }\\n\\n function __ERC165_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165Upgradeable).interfaceId;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0xd90d7723512df65ae417adaf0801042940f0dabd60039ceeaffe34aa5b238da1\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165Upgradeable {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\"},\"src/dao/IDAO.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IDAO\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for DAOs within the Aragon App DAO framework.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IDAO {\\n /// @notice The action struct to be consumed by the DAO's `execute` function resulting in an external call.\\n /// @param to The address to call.\\n /// @param value The native token value to be sent with the call.\\n /// @param data The bytes-encoded function selector and calldata for the call.\\n struct Action {\\n address to;\\n uint256 value;\\n bytes data;\\n }\\n\\n /// @notice Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\\n /// @param _where The address of the contract.\\n /// @param _who The address of a EOA or contract to give the permissions.\\n /// @param _permissionId The permission identifier.\\n /// @param _data The optional data passed to the `PermissionCondition` registered.\\n /// @return Returns true if the address has permission, false if not.\\n function hasPermission(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes memory _data\\n ) external view returns (bool);\\n\\n /// @notice Updates the DAO metadata (e.g., an IPFS hash).\\n /// @param _metadata The IPFS hash of the new metadata object.\\n function setMetadata(bytes calldata _metadata) external;\\n\\n /// @notice Emitted when the DAO metadata is updated.\\n /// @param metadata The IPFS hash of the new metadata object.\\n event MetadataSet(bytes metadata);\\n\\n /// @notice Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted.\\n /// @param _callId The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce.\\n /// @param _actions The array of actions.\\n /// @param _allowFailureMap A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @return The array of results obtained from the executed actions in `bytes`.\\n /// @return The resulting failure map containing the actions have actually failed.\\n function execute(\\n bytes32 _callId,\\n Action[] memory _actions,\\n uint256 _allowFailureMap\\n ) external returns (bytes[] memory, uint256);\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param actor The address of the caller.\\n /// @param callId The ID of the call.\\n /// @param actions The array of actions executed.\\n /// @param allowFailureMap The allow failure map encoding which actions are allowed to fail.\\n /// @param failureMap The failure map encoding which actions have failed.\\n /// @param execResults The array with the results of the executed actions.\\n /// @dev The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce.\\n event Executed(\\n address indexed actor,\\n bytes32 callId,\\n Action[] actions,\\n uint256 allowFailureMap,\\n uint256 failureMap,\\n bytes[] execResults\\n );\\n\\n /// @notice Emitted when a standard callback is registered.\\n /// @param interfaceId The ID of the interface.\\n /// @param callbackSelector The selector of the callback function.\\n /// @param magicNumber The magic number to be registered for the callback function selector.\\n event StandardCallbackRegistered(\\n bytes4 interfaceId,\\n bytes4 callbackSelector,\\n bytes4 magicNumber\\n );\\n\\n /// @notice Deposits (native) tokens to the DAO contract with a reference string.\\n /// @param _token The address of the token or address(0) in case of the native token.\\n /// @param _amount The amount of tokens to deposit.\\n /// @param _reference The reference describing the deposit reason.\\n function deposit(address _token, uint256 _amount, string calldata _reference) external payable;\\n\\n /// @notice Emitted when a token deposit has been made to the DAO.\\n /// @param sender The address of the sender.\\n /// @param token The address of the deposited token.\\n /// @param amount The amount of tokens deposited.\\n /// @param _reference The reference describing the deposit reason.\\n event Deposited(\\n address indexed sender,\\n address indexed token,\\n uint256 amount,\\n string _reference\\n );\\n\\n /// @notice Emitted when a native token deposit has been made to the DAO.\\n /// @dev This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).\\n /// @param sender The address of the sender.\\n /// @param amount The amount of native tokens deposited.\\n event NativeTokenDeposited(address sender, uint256 amount);\\n\\n /// @notice Setter for the trusted forwarder verifying the meta transaction.\\n /// @param _trustedForwarder The trusted forwarder address.\\n function setTrustedForwarder(address _trustedForwarder) external;\\n\\n /// @notice Getter for the trusted forwarder verifying the meta transaction.\\n /// @return The trusted forwarder address.\\n function getTrustedForwarder() external view returns (address);\\n\\n /// @notice Emitted when a new TrustedForwarder is set on the DAO.\\n /// @param forwarder the new forwarder address.\\n event TrustedForwarderSet(address forwarder);\\n\\n /// @notice Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\\n /// @param _hash The hash of the data to be signed.\\n /// @param _signature The signature byte array associated with `_hash`.\\n /// @return Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not.\\n function isValidSignature(bytes32 _hash, bytes memory _signature) external returns (bytes4);\\n\\n /// @notice Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\\n /// @param _interfaceId The ID of the interface.\\n /// @param _callbackSelector The selector of the callback function.\\n /// @param _magicNumber The magic number to be registered for the function signature.\\n function registerStandardCallback(\\n bytes4 _interfaceId,\\n bytes4 _callbackSelector,\\n bytes4 _magicNumber\\n ) external;\\n\\n /// @notice Removed function being left here to not corrupt the IDAO interface ID. Any call will revert.\\n /// @dev Introduced in v1.0.0. Removed in v1.4.0.\\n function setSignatureValidator(address) external;\\n}\\n\",\"keccak256\":\"0xb7f615523c26de042edce98731c658f44a1edb2464387ac1b642c4c69f57128e\",\"license\":\"AGPL-3.0-or-later\"},\"src/mocks/plugin/PluginCloneableMock.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\n/* solhint-disable one-contract-per-file */\\npragma solidity ^0.8.8;\\n\\nimport {PluginCloneable} from \\\"../../plugin/PluginCloneable.sol\\\";\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice A mock cloneable plugin to be deployed via the minimal proxy pattern.\\n/// v1.1 (Release 1, Build 1)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginCloneableMockBuild1 is PluginCloneable {\\n uint256 public state1;\\n\\n function initialize(IDAO _dao) external initializer {\\n __PluginCloneable_init(_dao);\\n state1 = 1;\\n }\\n}\\n\\n/// @notice A mock cloneable plugin to be deployed via the minimal proxy pattern.\\n/// v1.1 (Release 1, Build 2)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginCloneableMockBuild2 is PluginCloneable {\\n uint256 public state1;\\n uint256 public state2;\\n\\n function initialize(IDAO _dao) external initializer {\\n __PluginCloneable_init(_dao);\\n state1 = 1;\\n state2 = 2;\\n }\\n}\\n\\n/// @notice A mock cloneable plugin missing an initializer function.\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginCloneableMockBad is PluginCloneable {\\n uint256 public state1;\\n\\n function notAnInitializer(IDAO _dao) external {\\n __PluginCloneable_init(_dao);\\n state1 = 1;\\n }\\n}\\n\",\"keccak256\":\"0x1bb271f7b553040fad7907e97b860aa833aec9aefe7477e00ba7bdfd80d84e98\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/DaoAuthorizableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ContextUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\\\";\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\nimport {_auth} from \\\"./auth.sol\\\";\\n\\n/// @title DaoAuthorizableUpgradeable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract contract providing a meta-transaction compatible modifier for upgradeable or cloneable contracts to authorize function calls through an associated DAO.\\n/// @dev Make sure to call `__DaoAuthorizableUpgradeable_init` during initialization of the inheriting contract.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract DaoAuthorizableUpgradeable is ContextUpgradeable {\\n /// @notice The associated DAO managing the permissions of inheriting contracts.\\n IDAO private dao_;\\n\\n /// @notice Initializes the contract by setting the associated DAO.\\n /// @param _dao The associated DAO address.\\n // solhint-disable-next-line func-name-mixedcase\\n function __DaoAuthorizableUpgradeable_init(IDAO _dao) internal onlyInitializing {\\n dao_ = _dao;\\n }\\n\\n /// @notice Returns the DAO contract.\\n /// @return The DAO contract.\\n function dao() public view returns (IDAO) {\\n return dao_;\\n }\\n\\n /// @notice A modifier to make functions on inheriting contracts authorized. Permissions to call the function are checked through the associated DAO's permission manager.\\n /// @param _permissionId The permission identifier required to call the method this modifier is applied to.\\n modifier auth(bytes32 _permissionId) {\\n _auth(dao_, address(this), _msgSender(), _permissionId, _msgData());\\n _;\\n }\\n\\n /// @notice This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain (see [OpenZeppelin's guide about storage gaps](https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps)).\\n uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0x7fac6b01b037ba1cb9d6a22d3f43b0785037dcf496ffb672434d9bf7227d2585\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/auth.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice Thrown if a call is unauthorized in the associated DAO.\\n/// @param dao The associated DAO.\\n/// @param where The context in which the authorization reverted.\\n/// @param who The address (EOA or contract) missing the permission.\\n/// @param permissionId The permission identifier.\\nerror DaoUnauthorized(address dao, address where, address who, bytes32 permissionId);\\n\\n/// @notice A free function checking if a caller is granted permissions on a target contract via a permission identifier that redirects the approval to a `PermissionCondition` if this was specified in the setup.\\n/// @param _where The address of the target contract for which `who` receives permission.\\n/// @param _who The address (EOA or contract) owning the permission.\\n/// @param _permissionId The permission identifier.\\n/// @param _data The optional data passed to the `PermissionCondition` registered.\\n/// @custom:security-contact sirt@aragon.org\\nfunction _auth(\\n IDAO _dao,\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes calldata _data\\n) view {\\n if (!_dao.hasPermission(_where, _who, _permissionId, _data))\\n revert DaoUnauthorized({\\n dao: address(_dao),\\n where: _where,\\n who: _who,\\n permissionId: _permissionId\\n });\\n}\\n\",\"keccak256\":\"0x878764b4f87fe0651fb3798fb9cb87c952f8c6caf6ae79c7f09de84df6c00298\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/IPlugin.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IPlugin\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the traits of a plugin.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IPlugin {\\n enum PluginType {\\n UUPS,\\n Cloneable,\\n Constructable\\n }\\n\\n /// @notice Returns the plugin's type\\n function pluginType() external view returns (PluginType);\\n}\\n\",\"keccak256\":\"0xc57cd0d10b6380ab7f54c713a509e88fd8f4ad9288313a0e8e12b8887817ddfe\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/PluginCloneable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ERC165Upgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\\\";\\n\\nimport {IProtocolVersion} from \\\"../utils/versioning/IProtocolVersion.sol\\\";\\nimport {ProtocolVersion} from \\\"../utils/versioning/ProtocolVersion.sol\\\";\\nimport {DaoAuthorizableUpgradeable} from \\\"../permission/auth/DaoAuthorizableUpgradeable.sol\\\";\\nimport {IDAO} from \\\"../dao/IDAO.sol\\\";\\nimport {IPlugin} from \\\"./IPlugin.sol\\\";\\n\\n/// @title PluginCloneable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract, non-upgradeable contract to inherit from when creating a plugin being deployed via the minimal clones pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)).\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract PluginCloneable is\\n IPlugin,\\n ERC165Upgradeable,\\n DaoAuthorizableUpgradeable,\\n ProtocolVersion\\n{\\n address public target;\\n\\n /// @dev Emitted each time the Target is set.\\n event TargetSet(address indexed previousTarget, address indexed newTarget);\\n\\n /// @notice Disables the initializers on the implementation contract to prevent it from being left uninitialized.\\n /// @custom:oz-upgrades-unsafe-allow constructor\\n constructor() {\\n _disableInitializers();\\n }\\n\\n /// @notice Initializes the plugin by storing the associated DAO.\\n /// @param _dao The DAO contract.\\n // solhint-disable-next-line func-name-mixedcase\\n function __PluginCloneable_init(IDAO _dao) internal virtual onlyInitializing {\\n __DaoAuthorizableUpgradeable_init(_dao);\\n }\\n\\n /// @dev Sets the target to a new target (`newTarget`).\\n /// @notice Can only be called by the current owner. TODO\\n function setTarget(address _target) public {\\n address previousTarget = target;\\n target = _target;\\n emit TargetSet(previousTarget, _target);\\n }\\n\\n /// @inheritdoc IPlugin\\n function pluginType() public pure override returns (PluginType) {\\n return PluginType.Cloneable;\\n }\\n\\n /// @notice Checks if this or the parent contract supports an interface by its ID.\\n /// @param _interfaceId The ID of the interface.\\n /// @return Returns `true` if the interface is supported.\\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\\n return\\n _interfaceId == type(IPlugin).interfaceId ||\\n _interfaceId == type(IProtocolVersion).interfaceId ||\\n super.supportsInterface(_interfaceId);\\n }\\n\\n /// @notice Forwards the actions to the currently set `target` for the execution.\\n /// @param _callId Identifier for this execution.\\n /// @param _actions actions that will be eventually called.\\n /// @param _allowFailureMap Bitmap-encoded number. TODO:\\n /// @return execResults address of the implementation contract.\\n /// @return failureMap address of the implementation contract.\\n function _execute(\\n bytes32 _callId,\\n IDAO.Action[] calldata _actions,\\n uint256 _allowFailureMap\\n ) internal virtual returns (bytes[] memory execResults, uint256 failureMap) {\\n (execResults, failureMap) = IDAO(target).execute(_callId, _actions, _allowFailureMap);\\n }\\n\\n /// @notice Forwards the actions to the `target` for the execution.\\n /// @param _target Forwards the actions to the specific target.\\n /// @param _callId Identifier for this execution.\\n /// @param _actions actions that will be eventually called.\\n /// @param _allowFailureMap Bitmap-encoded number. TODO:\\n /// @return execResults address of the implementation contract.\\n /// @return failureMap address of the implementation contract.\\n function _execute(\\n address _target,\\n bytes32 _callId,\\n IDAO.Action[] calldata _actions,\\n uint256 _allowFailureMap\\n ) internal virtual returns (bytes[] memory execResults, uint256 failureMap) {\\n (execResults, failureMap) = IDAO(_target).execute(_callId, _actions, _allowFailureMap);\\n }\\n}\\n\",\"keccak256\":\"0x23fff653e79f6d079073bab2f878051cf85c8e3cfa7ef359f3be92fc65ca2501\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/IProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IProtocolVersion\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the semantic Aragon OSx protocol version number.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IProtocolVersion {\\n /// @notice Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\\n /// @return _version Returns the semantic Aragon OSx protocol version number.\\n /// @dev This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\\n function protocolVersion() external view returns (uint8[3] memory _version);\\n}\\n\",\"keccak256\":\"0x00a4da654d21dc1bdadbdc8bd54bb86c378c56f85e461ccc31303628ea621361\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/ProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IProtocolVersion} from \\\"./IProtocolVersion.sol\\\";\\n\\n/// @title ProtocolVersion\\n/// @author Aragon X - 2023\\n/// @notice An abstract, stateless, non-upgradeable contract providing the current Aragon OSx protocol version number.\\n/// @dev Do not add any new variables to this contract that would shift down storage in the inheritance chain.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract ProtocolVersion is IProtocolVersion {\\n // IMPORTANT: Do not add any storage variable, see the above notice.\\n\\n /// @inheritdoc IProtocolVersion\\n function protocolVersion() public pure returns (uint8[3] memory) {\\n return [1, 4, 0];\\n }\\n}\\n\",\"keccak256\":\"0x3975c937be935f687c6b6b8f379071232681e98cf04b175d72781b819ea52bdb\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[{"astId":372,"contract":"src/mocks/plugin/PluginCloneableMock.sol:PluginCloneableMockBuild2","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":375,"contract":"src/mocks/plugin/PluginCloneableMock.sol:PluginCloneableMockBuild2","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":1280,"contract":"src/mocks/plugin/PluginCloneableMock.sol:PluginCloneableMockBuild2","label":"__gap","offset":0,"slot":"1","type":"t_array(t_uint256)50_storage"},{"astId":1051,"contract":"src/mocks/plugin/PluginCloneableMock.sol:PluginCloneableMockBuild2","label":"__gap","offset":0,"slot":"51","type":"t_array(t_uint256)50_storage"},{"astId":3887,"contract":"src/mocks/plugin/PluginCloneableMock.sol:PluginCloneableMockBuild2","label":"dao_","offset":0,"slot":"101","type":"t_contract(IDAO)2538"},{"astId":3936,"contract":"src/mocks/plugin/PluginCloneableMock.sol:PluginCloneableMockBuild2","label":"__gap","offset":0,"slot":"102","type":"t_array(t_uint256)49_storage"},{"astId":4196,"contract":"src/mocks/plugin/PluginCloneableMock.sol:PluginCloneableMockBuild2","label":"target","offset":0,"slot":"151","type":"t_address"},{"astId":2572,"contract":"src/mocks/plugin/PluginCloneableMock.sol:PluginCloneableMockBuild2","label":"state1","offset":0,"slot":"152","type":"t_uint256"},{"astId":2574,"contract":"src/mocks/plugin/PluginCloneableMock.sol:PluginCloneableMockBuild2","label":"state2","offset":0,"slot":"153","type":"t_uint256"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_array(t_uint256)49_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[49]","numberOfBytes":"1568"},"t_array(t_uint256)50_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[50]","numberOfBytes":"1600"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_contract(IDAO)2538":{"encoding":"inplace","label":"contract IDAO","numberOfBytes":"20"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"kind":"user","methods":{"dao()":{"notice":"Returns the DAO contract."},"pluginType()":{"notice":"Returns the plugin's type"},"protocolVersion()":{"notice":"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with."},"setTarget(address)":{"notice":"Can only be called by the current owner. TODO"},"supportsInterface(bytes4)":{"notice":"Checks if this or the parent contract supports an interface by its ID."}},"notice":"A mock cloneable plugin to be deployed via the minimal proxy pattern. v1.1 (Release 1, Build 2)","version":1}}},"src/mocks/plugin/PluginCloneableSetupMock.sol":{"PluginCloneableSetupMockBuild1":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"ConflictingValues","type":"error"},{"inputs":[],"name":"NonUpgradeablePlugin","type":"error"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_dao","type":"address"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"prepareInstallation","outputs":[{"internalType":"address","name":"plugin","type":"address"},{"components":[{"internalType":"address[]","name":"helpers","type":"address[]"},{"components":[{"internalType":"enum PermissionLib.Operation","name":"operation","type":"uint8"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"condition","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"internalType":"struct PermissionLib.MultiTargetPermission[]","name":"permissions","type":"tuple[]"}],"internalType":"struct IPluginSetup.PreparedSetupData","name":"preparedSetupData","type":"tuple"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_dao","type":"address"},{"components":[{"internalType":"address","name":"plugin","type":"address"},{"internalType":"address[]","name":"currentHelpers","type":"address[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct IPluginSetup.SetupPayload","name":"_payload","type":"tuple"}],"name":"prepareUninstallation","outputs":[{"components":[{"internalType":"enum PermissionLib.Operation","name":"operation","type":"uint8"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"condition","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"internalType":"struct PermissionLib.MultiTargetPermission[]","name":"permissions","type":"tuple[]"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_dao","type":"address"},{"internalType":"uint16","name":"_fromBuild","type":"uint16"},{"components":[{"internalType":"address","name":"plugin","type":"address"},{"internalType":"address[]","name":"currentHelpers","type":"address[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct IPluginSetup.SetupPayload","name":"_payload","type":"tuple"}],"name":"prepareUpdate","outputs":[{"internalType":"bytes","name":"","type":"bytes"},{"components":[{"internalType":"address[]","name":"helpers","type":"address[]"},{"components":[{"internalType":"enum PermissionLib.Operation","name":"operation","type":"uint8"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"condition","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"internalType":"struct PermissionLib.MultiTargetPermission[]","name":"permissions","type":"tuple[]"}],"internalType":"struct IPluginSetup.PreparedSetupData","name":"","type":"tuple"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"protocolVersion","outputs":[{"internalType":"uint8[3]","name":"","type":"uint8[3]"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"DO NOT USE IN PRODUCTION!","kind":"dev","methods":{"implementation()":{"details":"The implementation can be instantiated via the `new` keyword, cloned via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)), or proxied via the UUPS proxy pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).","returns":{"_0":"The address of the plugin implementation contract."}},"prepareInstallation(address,bytes)":{"params":{"_dao":"The address of the installing DAO.","_data":"The bytes-encoded data containing the input parameters for the installation as specified in the plugin's build metadata JSON file."},"returns":{"plugin":"The address of the `Plugin` contract being prepared for installation.","preparedSetupData":"The deployed plugin's relevant data which consists of helpers and permissions."}},"prepareUninstallation(address,(address,address[],bytes))":{"params":{"_dao":"The address of the uninstalling DAO.","_payload":"The relevant data necessary for the `prepareUninstallation`. See above."},"returns":{"permissions":"The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the uninstalling DAO."}},"prepareUpdate(address,uint16,(address,address[],bytes))":{"details":"Since the underlying plugin is non-upgradeable, this non-virtual function must always revert.","params":{"_dao":"The address of the updating DAO.","_fromBuild":"The build number of the plugin to update from.","_payload":"The relevant data necessary for the `prepareUpdate`. See above."},"returns":{"_0":"The initialization data to be passed to upgradeable contracts when the update is applied in the `PluginSetupProcessor`.","_1":"The deployed plugin's relevant data which consists of helpers and permissions."}},"protocolVersion()":{"details":"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.","returns":{"_0":"Returns the semantic Aragon OSx protocol version number."}},"supportsInterface(bytes4)":{"params":{"_interfaceId":"The ID of the interface."},"returns":{"_0":"Returns `true` if the interface is supported."}}},"version":1},"evm":{"bytecode":{"functionDebugData":{"@_2657":{"entryPoint":null,"id":2657,"parameterSlots":0,"returnSlots":0},"@_4893":{"entryPoint":null,"id":4893,"parameterSlots":1,"returnSlots":0}},"generatedSources":[],"linkReferences":{},"object":"60a060405234801561001057600080fd5b5060405161001d9061004b565b604051809103906000f080158015610039573d6000803e3d6000fd5b506001600160a01b0316608052610058565b61063d80610d3083390190565b608051610cb76100796000396000818160c101526102970152610cb76000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c80639cb0a124116100505780639cb0a124146100eb578063a8a9c29e1461010b578063f10832f11461012c57600080fd5b806301ffc9a7146100775780632ae9c6001461009f5780635c60da1b146100b4575b600080fd5b61008a6100853660046107fd565b61014d565b60405190151581526020015b60405180910390f35b6100a761019e565b6040516100969190610827565b6040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152602001610096565b6100fe6100f9366004610884565b6101c8565b604051610096919061094e565b61011e610119366004610997565b6101de565b604051610096929190610ae1565b61013f61013a366004610b25565b610216565b604051610096929190610be7565b60006001600160e01b0319821663099718b560e41b148061017d57506001600160e01b03198216621574e360e91b145b8061019857506301ffc9a760e01b6001600160e01b03198316145b92915050565b6101a66107df565b5060408051606081018252600181526004602082015260009181019190915290565b60606101d760006001806102f2565b9392505050565b60606101fd604051806040016040528060608152602001606081525090565b60405163a112810160e01b815260040160405180910390fd5b6000610235604051806040016040528060608152602001606081525090565b6040516001600160a01b038516602482015260009060440160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663189acdbd60e31b17905290506102c8816102b97f000000000000000000000000000000000000000000000000000000000000000090565b6001600160a01b031690610477565b92506102d460016104af565b82526102e360006001816102f2565b60208301525090939092509050565b6060826001600160a01b0316846001600160a01b0316111561032757604051633a4013cd60e21b815260040160405180910390fd5b6103318484610c1f565b6001600160a01b031667ffffffffffffffff81111561035257610352610b0f565b6040519080825280602002602001820160405280156103ab57816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282526000199092019101816103705790505b509050835b836001600160a01b0316816001600160a01b0316101561046f576040518060a001604052808460028111156103e7576103e76108d2565b81526001600160a01b038316602082018190526040820152600060608201527fa280eec51ab8e1bc4b6b0c1b7f1bde785761b787a49db404e3e9338ed9b016ef608090910152826104388784610c1f565b6001600160a01b03168151811061045157610451610c3f565b6020026020010181905250808061046790610c55565b9150506103b0565b509392505050565b600061048b836001600160a01b0316610568565b825190915015610198576104a86001600160a01b0382168361060e565b5092915050565b6060816001600160a01b031667ffffffffffffffff8111156104d3576104d3610b0f565b6040519080825280602002602001820160405280156104fc578160200160208202803683370190505b50905060005b826001600160a01b0316816001600160a01b03161015610562578082826001600160a01b03168151811061053857610538610c3f565b6001600160a01b03909216602092830291909101909101528061055a81610c55565b915050610502565b50919050565b6000763d602d80600a3d3981f3363d3d373d3d3d363d730000008260601b60e81c176000526e5af43d82803e903d91602b57fd5bf38260781b17602052603760096000f090506001600160a01b0381166106095760405162461bcd60e51b815260206004820152601660248201527f455243313136373a20637265617465206661696c65640000000000000000000060448201526064015b60405180910390fd5b919050565b60606101d7838360006040518060400160405280601e81526020017f416464726573733a206c6f772d6c6576656c2063616c6c206661696c656400008152506060824710156106c55760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610600565b600080866001600160a01b031685876040516106e19190610c7b565b60006040518083038185875af1925050503d806000811461071e576040519150601f19603f3d011682016040523d82523d6000602084013e610723565b606091505b509150915061073487838387610741565b925050505b949350505050565b606083156107b05782516000036107a9576001600160a01b0385163b6107a95760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610600565b5081610739565b61073983838151156107c55781518083602001fd5b8060405162461bcd60e51b81526004016106009190610c97565b60405180606001604052806003906020820280368337509192915050565b60006020828403121561080f57600080fd5b81356001600160e01b0319811681146101d757600080fd5b60608101818360005b600381101561085257815160ff16835260209283019290910190600101610830565b50505092915050565b80356001600160a01b038116811461060957600080fd5b60006060828403121561056257600080fd5b6000806040838503121561089757600080fd5b6108a08361085b565b9150602083013567ffffffffffffffff8111156108bc57600080fd5b6108c885828601610872565b9150509250929050565b634e487b7160e01b600052602160045260246000fd5b600081516003811061090a57634e487b7160e01b600052602160045260246000fd5b8352506020818101516001600160a01b0390811691840191909152604080830151821690840152606080830151909116908301526080908101519082015260a00190565b6020808252825182820181905260009190848201906040850190845b8181101561098b5761097d8385516108e8565b93850193925060010161096a565b50909695505050505050565b6000806000606084860312156109ac57600080fd5b6109b58461085b565b9250602084013561ffff811681146109cc57600080fd5b9150604084013567ffffffffffffffff8111156109e857600080fd5b6109f486828701610872565b9150509250925092565b60005b83811015610a19578181015183820152602001610a01565b50506000910152565b60008151808452610a3a8160208601602086016109fe565b601f01601f19169290920160200192915050565b805160408084528151908401819052600091602091908201906060860190845b81811015610a935783516001600160a01b031683529284019291840191600101610a6e565b50508483015186820387850152805180835290840192506000918401905b80831015610ad657610ac48285516108e8565b91508484019350600183019250610ab1565b509695505050505050565b604081526000610af46040830185610a22565b8281036020840152610b068185610a4e565b95945050505050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215610b3857600080fd5b610b418361085b565b9150602083013567ffffffffffffffff80821115610b5e57600080fd5b818501915085601f830112610b7257600080fd5b813581811115610b8457610b84610b0f565b604051601f8201601f19908116603f01168101908382118183101715610bac57610bac610b0f565b81604052828152886020848701011115610bc557600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6001600160a01b03831681526040602082015260006107396040830184610a4e565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b038281168282160390808211156104a8576104a8610c09565b634e487b7160e01b600052603260045260246000fd5b60006001600160a01b03808316818103610c7157610c71610c09565b6001019392505050565b60008251610c8d8184602087016109fe565b9190910192915050565b6020815260006101d76020830184610a2256fea164736f6c6343000811000a608060405234801561001057600080fd5b5061001961001e565b6100dd565b600054610100900460ff161561008a5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116146100db576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b610551806100ec6000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c80636accab8c1161005b5780636accab8c146100fe578063776d1a0114610115578063c4d66de81461012a578063d4b839921461013d57600080fd5b806301ffc9a71461008d5780632ae9c600146100b55780634162169f146100ca57806341de6830146100ef575b600080fd5b6100a061009b366004610485565b610150565b60405190151581526020015b60405180910390f35b6100bd6101a1565b6040516100ac91906104b6565b6065546001600160a01b03165b6040516001600160a01b0390911681526020016100ac565b60016040516100ac91906104ea565b61010760985481565b6040519081526020016100ac565b610128610123366004610527565b6101cb565b005b610128610138366004610527565b61022a565b6097546100d7906001600160a01b031681565b60006001600160e01b0319821663041de68360e41b148061018057506001600160e01b03198216621574e360e91b145b8061019b57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6101a9610467565b5060408051606081018252600181526004602082015260009181019190915290565b609780546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d690600090a35050565b600054610100900460ff161580801561024a5750600054600160ff909116105b806102645750303b158015610264575060005460ff166001145b6102db5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b6000805460ff1916600117905580156102fe576000805461ff0019166101001790555b61030782610356565b60016098558015610352576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b600054610100900460ff166103c15760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016102d2565b6103ca816103cd565b50565b600054610100900460ff166104385760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016102d2565b6065805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b60405180606001604052806003906020820280368337509192915050565b60006020828403121561049757600080fd5b81356001600160e01b0319811681146104af57600080fd5b9392505050565b60608101818360005b60038110156104e157815160ff168352602092830192909101906001016104bf565b50505092915050565b602081016003831061050c57634e487b7160e01b600052602160045260246000fd5b91905290565b6001600160a01b03811681146103ca57600080fd5b60006020828403121561053957600080fd5b81356104af8161051256fea164736f6c6343000811000a","opcodes":"PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x1D SWAP1 PUSH2 0x4B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH2 0x39 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x80 MSTORE PUSH2 0x58 JUMP JUMPDEST PUSH2 0x63D DUP1 PUSH2 0xD30 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH2 0xCB7 PUSH2 0x79 PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH1 0xC1 ADD MSTORE PUSH2 0x297 ADD MSTORE PUSH2 0xCB7 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x72 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9CB0A124 GT PUSH2 0x50 JUMPI DUP1 PUSH4 0x9CB0A124 EQ PUSH2 0xEB JUMPI DUP1 PUSH4 0xA8A9C29E EQ PUSH2 0x10B JUMPI DUP1 PUSH4 0xF10832F1 EQ PUSH2 0x12C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x77 JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0x9F JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0xB4 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8A PUSH2 0x85 CALLDATASIZE PUSH1 0x4 PUSH2 0x7FD JUMP JUMPDEST PUSH2 0x14D JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xA7 PUSH2 0x19E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x96 SWAP2 SWAP1 PUSH2 0x827 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x96 JUMP JUMPDEST PUSH2 0xFE PUSH2 0xF9 CALLDATASIZE PUSH1 0x4 PUSH2 0x884 JUMP JUMPDEST PUSH2 0x1C8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x96 SWAP2 SWAP1 PUSH2 0x94E JUMP JUMPDEST PUSH2 0x11E PUSH2 0x119 CALLDATASIZE PUSH1 0x4 PUSH2 0x997 JUMP JUMPDEST PUSH2 0x1DE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x96 SWAP3 SWAP2 SWAP1 PUSH2 0xAE1 JUMP JUMPDEST PUSH2 0x13F PUSH2 0x13A CALLDATASIZE PUSH1 0x4 PUSH2 0xB25 JUMP JUMPDEST PUSH2 0x216 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x96 SWAP3 SWAP2 SWAP1 PUSH2 0xBE7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x99718B5 PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x17D JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x198 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1A6 PUSH2 0x7DF JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1D7 PUSH1 0x0 PUSH1 0x1 DUP1 PUSH2 0x2F2 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1FD PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xA1128101 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x235 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 PUSH1 0x44 ADD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x189ACDBD PUSH1 0xE3 SHL OR SWAP1 MSTORE SWAP1 POP PUSH2 0x2C8 DUP2 PUSH2 0x2B9 PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH2 0x477 JUMP JUMPDEST SWAP3 POP PUSH2 0x2D4 PUSH1 0x1 PUSH2 0x4AF JUMP JUMPDEST DUP3 MSTORE PUSH2 0x2E3 PUSH1 0x0 PUSH1 0x1 DUP2 PUSH2 0x2F2 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP SWAP1 SWAP4 SWAP1 SWAP3 POP SWAP1 POP JUMP JUMPDEST PUSH1 0x60 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH2 0x327 JUMPI PUSH1 0x40 MLOAD PUSH4 0x3A4013CD PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x331 DUP5 DUP5 PUSH2 0xC1F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x352 JUMPI PUSH2 0x352 PUSH2 0xB0F JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x3AB JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD DUP3 SWAP1 MSTORE SWAP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 DUP3 ADD MSTORE DUP3 MSTORE PUSH1 0x0 NOT SWAP1 SWAP3 ADD SWAP2 ADD DUP2 PUSH2 0x370 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP DUP4 JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT ISZERO PUSH2 0x46F JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 DUP5 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x3E7 JUMPI PUSH2 0x3E7 PUSH2 0x8D2 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x60 DUP3 ADD MSTORE PUSH32 0xA280EEC51AB8E1BC4B6B0C1B7F1BDE785761B787A49DB404E3E9338ED9B016EF PUSH1 0x80 SWAP1 SWAP2 ADD MSTORE DUP3 PUSH2 0x438 DUP8 DUP5 PUSH2 0xC1F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MLOAD DUP2 LT PUSH2 0x451 JUMPI PUSH2 0x451 PUSH2 0xC3F JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP DUP1 DUP1 PUSH2 0x467 SWAP1 PUSH2 0xC55 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x3B0 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x48B DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x568 JUMP JUMPDEST DUP3 MLOAD SWAP1 SWAP2 POP ISZERO PUSH2 0x198 JUMPI PUSH2 0x4A8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP4 PUSH2 0x60E JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x4D3 JUMPI PUSH2 0x4D3 PUSH2 0xB0F JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x4FC JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT ISZERO PUSH2 0x562 JUMPI DUP1 DUP3 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MLOAD DUP2 LT PUSH2 0x538 JUMPI PUSH2 0x538 PUSH2 0xC3F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE DUP1 PUSH2 0x55A DUP2 PUSH2 0xC55 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x502 JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH23 0x3D602D80600A3D3981F3363D3D373D3D3D363D73000000 DUP3 PUSH1 0x60 SHL PUSH1 0xE8 SHR OR PUSH1 0x0 MSTORE PUSH15 0x5AF43D82803E903D91602B57FD5BF3 DUP3 PUSH1 0x78 SHL OR PUSH1 0x20 MSTORE PUSH1 0x37 PUSH1 0x9 PUSH1 0x0 CREATE SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x609 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313136373A20637265617465206661696C656400000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1D7 DUP4 DUP4 PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x416464726573733A206C6F772D6C6576656C2063616C6C206661696C65640000 DUP2 MSTORE POP PUSH1 0x60 DUP3 SELFBALANCE LT ISZERO PUSH2 0x6C5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A20696E73756666696369656E742062616C616E636520666F PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x722063616C6C0000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x600 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP8 PUSH1 0x40 MLOAD PUSH2 0x6E1 SWAP2 SWAP1 PUSH2 0xC7B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x71E JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x723 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x734 DUP8 DUP4 DUP4 DUP8 PUSH2 0x741 JUMP JUMPDEST SWAP3 POP POP POP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x7B0 JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0x7A9 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0x7A9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x600 JUMP JUMPDEST POP DUP2 PUSH2 0x739 JUMP JUMPDEST PUSH2 0x739 DUP4 DUP4 DUP2 MLOAD ISZERO PUSH2 0x7C5 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x600 SWAP2 SWAP1 PUSH2 0xC97 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x80F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x1D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0x852 JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x830 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x609 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x562 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x897 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8A0 DUP4 PUSH2 0x85B JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x8BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8C8 DUP6 DUP3 DUP7 ADD PUSH2 0x872 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP2 MLOAD PUSH1 0x3 DUP2 LT PUSH2 0x90A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP4 MSTORE POP PUSH1 0x20 DUP2 DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP1 DUP4 ADD MLOAD DUP3 AND SWAP1 DUP5 ADD MSTORE PUSH1 0x60 DUP1 DUP4 ADD MLOAD SWAP1 SWAP2 AND SWAP1 DUP4 ADD MSTORE PUSH1 0x80 SWAP1 DUP2 ADD MLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x98B JUMPI PUSH2 0x97D DUP4 DUP6 MLOAD PUSH2 0x8E8 JUMP JUMPDEST SWAP4 DUP6 ADD SWAP4 SWAP3 POP PUSH1 0x1 ADD PUSH2 0x96A JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x9AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9B5 DUP5 PUSH2 0x85B JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH2 0x9CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x9E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9F4 DUP7 DUP3 DUP8 ADD PUSH2 0x872 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xA19 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xA01 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0xA3A DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x9FE JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x40 DUP1 DUP5 MSTORE DUP2 MLOAD SWAP1 DUP5 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x20 SWAP2 SWAP1 DUP3 ADD SWAP1 PUSH1 0x60 DUP7 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xA93 JUMPI DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0xA6E JUMP JUMPDEST POP POP DUP5 DUP4 ADD MLOAD DUP7 DUP3 SUB DUP8 DUP6 ADD MSTORE DUP1 MLOAD DUP1 DUP4 MSTORE SWAP1 DUP5 ADD SWAP3 POP PUSH1 0x0 SWAP2 DUP5 ADD SWAP1 JUMPDEST DUP1 DUP4 LT ISZERO PUSH2 0xAD6 JUMPI PUSH2 0xAC4 DUP3 DUP6 MLOAD PUSH2 0x8E8 JUMP JUMPDEST SWAP2 POP DUP5 DUP5 ADD SWAP4 POP PUSH1 0x1 DUP4 ADD SWAP3 POP PUSH2 0xAB1 JUMP JUMPDEST POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 PUSH2 0xAF4 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0xA22 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0xB06 DUP2 DUP6 PUSH2 0xA4E JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xB38 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB41 DUP4 PUSH2 0x85B JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xB5E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xB72 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0xB84 JUMPI PUSH2 0xB84 PUSH2 0xB0F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0xBAC JUMPI PUSH2 0xBAC PUSH2 0xB0F JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0xBC5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0x739 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0xA4E JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND DUP3 DUP3 AND SUB SWAP1 DUP1 DUP3 GT ISZERO PUSH2 0x4A8 JUMPI PUSH2 0x4A8 PUSH2 0xC09 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND DUP2 DUP2 SUB PUSH2 0xC71 JUMPI PUSH2 0xC71 PUSH2 0xC09 JUMP JUMPDEST PUSH1 0x1 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0xC8D DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x9FE JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x1D7 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0xA22 JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x19 PUSH2 0x1E JUMP JUMPDEST PUSH2 0xDD JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x8A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x27 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320696E697469 PUSH1 0x44 DUP3 ADD MSTORE PUSH7 0x616C697A696E67 PUSH1 0xC8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xFF SWAP1 DUP2 AND EQ PUSH2 0xDB JUMPI PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST JUMP JUMPDEST PUSH2 0x551 DUP1 PUSH2 0xEC PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x88 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6ACCAB8C GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x6ACCAB8C EQ PUSH2 0xFE JUMPI DUP1 PUSH4 0x776D1A01 EQ PUSH2 0x115 JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0x12A JUMPI DUP1 PUSH4 0xD4B83992 EQ PUSH2 0x13D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x8D JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0xB5 JUMPI DUP1 PUSH4 0x4162169F EQ PUSH2 0xCA JUMPI DUP1 PUSH4 0x41DE6830 EQ PUSH2 0xEF JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA0 PUSH2 0x9B CALLDATASIZE PUSH1 0x4 PUSH2 0x485 JUMP JUMPDEST PUSH2 0x150 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xBD PUSH2 0x1A1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xAC SWAP2 SWAP1 PUSH2 0x4B6 JUMP JUMPDEST PUSH1 0x65 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xAC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x40 MLOAD PUSH2 0xAC SWAP2 SWAP1 PUSH2 0x4EA JUMP JUMPDEST PUSH2 0x107 PUSH1 0x98 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xAC JUMP JUMPDEST PUSH2 0x128 PUSH2 0x123 CALLDATASIZE PUSH1 0x4 PUSH2 0x527 JUMP JUMPDEST PUSH2 0x1CB JUMP JUMPDEST STOP JUMPDEST PUSH2 0x128 PUSH2 0x138 CALLDATASIZE PUSH1 0x4 PUSH2 0x527 JUMP JUMPDEST PUSH2 0x22A JUMP JUMPDEST PUSH1 0x97 SLOAD PUSH2 0xD7 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x41DE683 PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x180 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x19B JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1A9 PUSH2 0x467 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x97 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP2 SWAP1 DUP3 SWAP1 PUSH32 0x90CC2F570A6EB594B1580EA3E41247D2D73A55281889E86BD4EC2FC29C7E62D6 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 DUP1 ISZERO PUSH2 0x24A JUMPI POP PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xFF SWAP1 SWAP2 AND LT JUMPDEST DUP1 PUSH2 0x264 JUMPI POP ADDRESS EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x264 JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF AND PUSH1 0x1 EQ JUMPDEST PUSH2 0x2DB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x647920696E697469616C697A6564000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE DUP1 ISZERO PUSH2 0x2FE JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND PUSH2 0x100 OR SWAP1 SSTORE JUMPDEST PUSH2 0x307 DUP3 PUSH2 0x356 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x98 SSTORE DUP1 ISZERO PUSH2 0x352 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x3C1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x2D2 JUMP JUMPDEST PUSH2 0x3CA DUP2 PUSH2 0x3CD JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x438 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x2D2 JUMP JUMPDEST PUSH1 0x65 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x497 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x4AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0x4E1 JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x4BF JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH1 0x3 DUP4 LT PUSH2 0x50C JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 SWAP1 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x3CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x539 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x4AF DUP2 PUSH2 0x512 JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"749:1127:27:-:0;;;889:70;;;;;;;;;;923:31;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1454:32:45;;;749:1127:27;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_revert_2136":{"entryPoint":null,"id":2136,"parameterSlots":2,"returnSlots":0},"@clone_1347":{"entryPoint":1384,"id":1347,"parameterSlots":1,"returnSlots":1},"@deployMinimalProxy_5101":{"entryPoint":1143,"id":5101,"parameterSlots":2,"returnSlots":1},"@functionCallWithValue_1961":{"entryPoint":null,"id":1961,"parameterSlots":4,"returnSlots":1},"@functionCall_1877":{"entryPoint":1550,"id":1877,"parameterSlots":2,"returnSlots":1},"@implementation_4956":{"entryPoint":null,"id":4956,"parameterSlots":0,"returnSlots":1},"@isContract_1825":{"entryPoint":null,"id":1825,"parameterSlots":1,"returnSlots":1},"@mockHelpers_3108":{"entryPoint":1199,"id":3108,"parameterSlots":1,"returnSlots":1},"@mockPermissions_3069":{"entryPoint":754,"id":3069,"parameterSlots":3,"returnSlots":1},"@prepareInstallation_2711":{"entryPoint":534,"id":2711,"parameterSlots":2,"returnSlots":2},"@prepareUninstallation_2739":{"entryPoint":456,"id":2739,"parameterSlots":2,"returnSlots":1},"@prepareUpdate_4918":{"entryPoint":478,"id":4918,"parameterSlots":3,"returnSlots":2},"@protocolVersion_5135":{"entryPoint":414,"id":5135,"parameterSlots":0,"returnSlots":1},"@supportsInterface_2374":{"entryPoint":null,"id":2374,"parameterSlots":1,"returnSlots":1},"@supportsInterface_4947":{"entryPoint":333,"id":4947,"parameterSlots":1,"returnSlots":1},"@verifyCallResultFromTarget_2092":{"entryPoint":1857,"id":2092,"parameterSlots":4,"returnSlots":1},"abi_decode_address":{"entryPoint":2139,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_struct_SetupPayload_calldata":{"entryPoint":2162,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_bytes_memory_ptr":{"entryPoint":2853,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_struct$_SetupPayload_$4810_calldata_ptr":{"entryPoint":2180,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_uint16t_struct$_SetupPayload_$4810_calldata_ptr":{"entryPoint":2455,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_bytes4":{"entryPoint":2045,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encodeUpdatedPos_struct_MultiTargetPermission":{"entryPoint":2280,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_bytes":{"entryPoint":2594,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_struct_PreparedSetupData":{"entryPoint":2638,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":3195,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address_t_struct$_PreparedSetupData_$4802_memory_ptr__to_t_address_t_struct$_PreparedSetupData_$4802_memory_ptr__fromStack_reversed":{"entryPoint":3047,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr__fromStack_reversed":{"entryPoint":2382,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed":{"entryPoint":2087,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$4802_memory_ptr__to_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$4802_memory_ptr__fromStack_reversed":{"entryPoint":2785,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_contract$_IDAO_$2538__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":3223,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_68ca40b61460257f14e69f48b1a4dbc812e9afc6932f127ef8084544457b3335__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"checked_sub_t_uint160":{"entryPoint":3103,"id":null,"parameterSlots":2,"returnSlots":1},"copy_memory_to_memory_with_cleanup":{"entryPoint":2558,"id":null,"parameterSlots":3,"returnSlots":0},"increment_t_uint160":{"entryPoint":3157,"id":null,"parameterSlots":1,"returnSlots":1},"panic_error_0x11":{"entryPoint":3081,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x21":{"entryPoint":2258,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x32":{"entryPoint":3135,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":2831,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:10500:50","statements":[{"nodeType":"YulBlock","src":"6:3:50","statements":[]},{"body":{"nodeType":"YulBlock","src":"83:217:50","statements":[{"body":{"nodeType":"YulBlock","src":"129:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"138:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"141:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"131:6:50"},"nodeType":"YulFunctionCall","src":"131:12:50"},"nodeType":"YulExpressionStatement","src":"131:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"104:7:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"113:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"100:3:50"},"nodeType":"YulFunctionCall","src":"100:23:50"},{"kind":"number","nodeType":"YulLiteral","src":"125:2:50","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"96:3:50"},"nodeType":"YulFunctionCall","src":"96:32:50"},"nodeType":"YulIf","src":"93:52:50"},{"nodeType":"YulVariableDeclaration","src":"154:36:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"180:9:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"167:12:50"},"nodeType":"YulFunctionCall","src":"167:23:50"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"158:5:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"254:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"263:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"266:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"256:6:50"},"nodeType":"YulFunctionCall","src":"256:12:50"},"nodeType":"YulExpressionStatement","src":"256:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"212:5:50"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"223:5:50"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"234:3:50","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"239:10:50","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"230:3:50"},"nodeType":"YulFunctionCall","src":"230:20:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"219:3:50"},"nodeType":"YulFunctionCall","src":"219:32:50"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"209:2:50"},"nodeType":"YulFunctionCall","src":"209:43:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"202:6:50"},"nodeType":"YulFunctionCall","src":"202:51:50"},"nodeType":"YulIf","src":"199:71:50"},{"nodeType":"YulAssignment","src":"279:15:50","value":{"name":"value","nodeType":"YulIdentifier","src":"289:5:50"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"279:6:50"}]}]},"name":"abi_decode_tuple_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"49:9:50","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"60:7:50","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"72:6:50","type":""}],"src":"14:286:50"},{"body":{"nodeType":"YulBlock","src":"400:92:50","statements":[{"nodeType":"YulAssignment","src":"410:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"422:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"433:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"418:3:50"},"nodeType":"YulFunctionCall","src":"418:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"410:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"452:9:50"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"477:6:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"470:6:50"},"nodeType":"YulFunctionCall","src":"470:14:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"463:6:50"},"nodeType":"YulFunctionCall","src":"463:22:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"445:6:50"},"nodeType":"YulFunctionCall","src":"445:41:50"},"nodeType":"YulExpressionStatement","src":"445:41:50"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"369:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"380:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"391:4:50","type":""}],"src":"305:187:50"},{"body":{"nodeType":"YulBlock","src":"640:358:50","statements":[{"nodeType":"YulAssignment","src":"650:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"662:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"673:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"658:3:50"},"nodeType":"YulFunctionCall","src":"658:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"650:4:50"}]},{"nodeType":"YulVariableDeclaration","src":"685:20:50","value":{"name":"headStart","nodeType":"YulIdentifier","src":"696:9:50"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"689:3:50","type":""}]},{"nodeType":"YulAssignment","src":"714:16:50","value":{"name":"headStart","nodeType":"YulIdentifier","src":"721:9:50"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"714:3:50"}]},{"nodeType":"YulVariableDeclaration","src":"739:20:50","value":{"name":"value0","nodeType":"YulIdentifier","src":"753:6:50"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"743:6:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"768:10:50","value":{"kind":"number","nodeType":"YulLiteral","src":"777:1:50","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"772:1:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"834:158:50","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"855:3:50"},{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"870:6:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"864:5:50"},"nodeType":"YulFunctionCall","src":"864:13:50"},{"kind":"number","nodeType":"YulLiteral","src":"879:4:50","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"860:3:50"},"nodeType":"YulFunctionCall","src":"860:24:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"848:6:50"},"nodeType":"YulFunctionCall","src":"848:37:50"},"nodeType":"YulExpressionStatement","src":"848:37:50"},{"nodeType":"YulVariableDeclaration","src":"898:14:50","value":{"kind":"number","nodeType":"YulLiteral","src":"908:4:50","type":"","value":"0x20"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"902:2:50","type":""}]},{"nodeType":"YulAssignment","src":"925:19:50","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"936:3:50"},{"name":"_1","nodeType":"YulIdentifier","src":"941:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"932:3:50"},"nodeType":"YulFunctionCall","src":"932:12:50"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"925:3:50"}]},{"nodeType":"YulAssignment","src":"957:25:50","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"971:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"979:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"967:3:50"},"nodeType":"YulFunctionCall","src":"967:15:50"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"957:6:50"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"798:1:50"},{"kind":"number","nodeType":"YulLiteral","src":"801:4:50","type":"","value":"0x03"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"795:2:50"},"nodeType":"YulFunctionCall","src":"795:11:50"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"807:18:50","statements":[{"nodeType":"YulAssignment","src":"809:14:50","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"818:1:50"},{"kind":"number","nodeType":"YulLiteral","src":"821:1:50","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"814:3:50"},"nodeType":"YulFunctionCall","src":"814:9:50"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"809:1:50"}]}]},"pre":{"nodeType":"YulBlock","src":"791:3:50","statements":[]},"src":"787:205:50"}]},"name":"abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"609:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"620:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"631:4:50","type":""}],"src":"497:501:50"},{"body":{"nodeType":"YulBlock","src":"1104:125:50","statements":[{"nodeType":"YulAssignment","src":"1114:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1126:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"1137:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1122:3:50"},"nodeType":"YulFunctionCall","src":"1122:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1114:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1156:9:50"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1171:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"1179:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1167:3:50"},"nodeType":"YulFunctionCall","src":"1167:55:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1149:6:50"},"nodeType":"YulFunctionCall","src":"1149:74:50"},"nodeType":"YulExpressionStatement","src":"1149:74:50"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1073:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1084:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1095:4:50","type":""}],"src":"1003:226:50"},{"body":{"nodeType":"YulBlock","src":"1283:147:50","statements":[{"nodeType":"YulAssignment","src":"1293:29:50","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1315:6:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1302:12:50"},"nodeType":"YulFunctionCall","src":"1302:20:50"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"1293:5:50"}]},{"body":{"nodeType":"YulBlock","src":"1408:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1417:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1420:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1410:6:50"},"nodeType":"YulFunctionCall","src":"1410:12:50"},"nodeType":"YulExpressionStatement","src":"1410:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1344:5:50"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1355:5:50"},{"kind":"number","nodeType":"YulLiteral","src":"1362:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1351:3:50"},"nodeType":"YulFunctionCall","src":"1351:54:50"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1341:2:50"},"nodeType":"YulFunctionCall","src":"1341:65:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1334:6:50"},"nodeType":"YulFunctionCall","src":"1334:73:50"},"nodeType":"YulIf","src":"1331:93:50"}]},"name":"abi_decode_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"1262:6:50","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"1273:5:50","type":""}],"src":"1234:196:50"},{"body":{"nodeType":"YulBlock","src":"1510:85:50","statements":[{"body":{"nodeType":"YulBlock","src":"1549:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1558:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1561:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1551:6:50"},"nodeType":"YulFunctionCall","src":"1551:12:50"},"nodeType":"YulExpressionStatement","src":"1551:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"end","nodeType":"YulIdentifier","src":"1531:3:50"},{"name":"offset","nodeType":"YulIdentifier","src":"1536:6:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1527:3:50"},"nodeType":"YulFunctionCall","src":"1527:16:50"},{"kind":"number","nodeType":"YulLiteral","src":"1545:2:50","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1523:3:50"},"nodeType":"YulFunctionCall","src":"1523:25:50"},"nodeType":"YulIf","src":"1520:45:50"},{"nodeType":"YulAssignment","src":"1574:15:50","value":{"name":"offset","nodeType":"YulIdentifier","src":"1583:6:50"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"1574:5:50"}]}]},"name":"abi_decode_struct_SetupPayload_calldata","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"1484:6:50","type":""},{"name":"end","nodeType":"YulTypedName","src":"1492:3:50","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"1500:5:50","type":""}],"src":"1435:160:50"},{"body":{"nodeType":"YulBlock","src":"1719:321:50","statements":[{"body":{"nodeType":"YulBlock","src":"1765:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1774:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1777:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1767:6:50"},"nodeType":"YulFunctionCall","src":"1767:12:50"},"nodeType":"YulExpressionStatement","src":"1767:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1740:7:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"1749:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1736:3:50"},"nodeType":"YulFunctionCall","src":"1736:23:50"},{"kind":"number","nodeType":"YulLiteral","src":"1761:2:50","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1732:3:50"},"nodeType":"YulFunctionCall","src":"1732:32:50"},"nodeType":"YulIf","src":"1729:52:50"},{"nodeType":"YulAssignment","src":"1790:39:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1819:9:50"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"1800:18:50"},"nodeType":"YulFunctionCall","src":"1800:29:50"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1790:6:50"}]},{"nodeType":"YulVariableDeclaration","src":"1838:46:50","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1869:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"1880:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1865:3:50"},"nodeType":"YulFunctionCall","src":"1865:18:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1852:12:50"},"nodeType":"YulFunctionCall","src":"1852:32:50"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1842:6:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"1927:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1936:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1939:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1929:6:50"},"nodeType":"YulFunctionCall","src":"1929:12:50"},"nodeType":"YulExpressionStatement","src":"1929:12:50"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1899:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"1907:18:50","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1896:2:50"},"nodeType":"YulFunctionCall","src":"1896:30:50"},"nodeType":"YulIf","src":"1893:50:50"},{"nodeType":"YulAssignment","src":"1952:82:50","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2006:9:50"},{"name":"offset","nodeType":"YulIdentifier","src":"2017:6:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2002:3:50"},"nodeType":"YulFunctionCall","src":"2002:22:50"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2026:7:50"}],"functionName":{"name":"abi_decode_struct_SetupPayload_calldata","nodeType":"YulIdentifier","src":"1962:39:50"},"nodeType":"YulFunctionCall","src":"1962:72:50"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1952:6:50"}]}]},"name":"abi_decode_tuple_t_addresst_struct$_SetupPayload_$4810_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1677:9:50","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1688:7:50","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1700:6:50","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1708:6:50","type":""}],"src":"1600:440:50"},{"body":{"nodeType":"YulBlock","src":"2077:95:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2094:1:50","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2101:3:50","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"2106:10:50","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2097:3:50"},"nodeType":"YulFunctionCall","src":"2097:20:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2087:6:50"},"nodeType":"YulFunctionCall","src":"2087:31:50"},"nodeType":"YulExpressionStatement","src":"2087:31:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2134:1:50","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"2137:4:50","type":"","value":"0x21"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2127:6:50"},"nodeType":"YulFunctionCall","src":"2127:15:50"},"nodeType":"YulExpressionStatement","src":"2127:15:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2158:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2161:4:50","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2151:6:50"},"nodeType":"YulFunctionCall","src":"2151:15:50"},"nodeType":"YulExpressionStatement","src":"2151:15:50"}]},"name":"panic_error_0x21","nodeType":"YulFunctionDefinition","src":"2045:127:50"},{"body":{"nodeType":"YulBlock","src":"2267:606:50","statements":[{"nodeType":"YulVariableDeclaration","src":"2277:23:50","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2293:6:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2287:5:50"},"nodeType":"YulFunctionCall","src":"2287:13:50"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"2281:2:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"2338:111:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2359:1:50","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2366:3:50","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"2371:10:50","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2362:3:50"},"nodeType":"YulFunctionCall","src":"2362:20:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2352:6:50"},"nodeType":"YulFunctionCall","src":"2352:31:50"},"nodeType":"YulExpressionStatement","src":"2352:31:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2403:1:50","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"2406:4:50","type":"","value":"0x21"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2396:6:50"},"nodeType":"YulFunctionCall","src":"2396:15:50"},"nodeType":"YulExpressionStatement","src":"2396:15:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2431:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2434:4:50","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2424:6:50"},"nodeType":"YulFunctionCall","src":"2424:15:50"},"nodeType":"YulExpressionStatement","src":"2424:15:50"}]},"condition":{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"2322:2:50"},{"kind":"number","nodeType":"YulLiteral","src":"2326:1:50","type":"","value":"3"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2319:2:50"},"nodeType":"YulFunctionCall","src":"2319:9:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2312:6:50"},"nodeType":"YulFunctionCall","src":"2312:17:50"},"nodeType":"YulIf","src":"2309:140:50"},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2465:3:50"},{"name":"_1","nodeType":"YulIdentifier","src":"2470:2:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2458:6:50"},"nodeType":"YulFunctionCall","src":"2458:15:50"},"nodeType":"YulExpressionStatement","src":"2458:15:50"},{"nodeType":"YulVariableDeclaration","src":"2482:44:50","value":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2512:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"2520:4:50","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2508:3:50"},"nodeType":"YulFunctionCall","src":"2508:17:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2502:5:50"},"nodeType":"YulFunctionCall","src":"2502:24:50"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"2486:12:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2535:52:50","value":{"kind":"number","nodeType":"YulLiteral","src":"2545:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"2539:2:50","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2607:3:50"},{"kind":"number","nodeType":"YulLiteral","src":"2612:4:50","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2603:3:50"},"nodeType":"YulFunctionCall","src":"2603:14:50"},{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"2623:12:50"},{"name":"_2","nodeType":"YulIdentifier","src":"2637:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2619:3:50"},"nodeType":"YulFunctionCall","src":"2619:21:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2596:6:50"},"nodeType":"YulFunctionCall","src":"2596:45:50"},"nodeType":"YulExpressionStatement","src":"2596:45:50"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2661:3:50"},{"kind":"number","nodeType":"YulLiteral","src":"2666:4:50","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2657:3:50"},"nodeType":"YulFunctionCall","src":"2657:14:50"},{"arguments":[{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2687:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"2695:4:50","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2683:3:50"},"nodeType":"YulFunctionCall","src":"2683:17:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2677:5:50"},"nodeType":"YulFunctionCall","src":"2677:24:50"},{"name":"_2","nodeType":"YulIdentifier","src":"2703:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2673:3:50"},"nodeType":"YulFunctionCall","src":"2673:33:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2650:6:50"},"nodeType":"YulFunctionCall","src":"2650:57:50"},"nodeType":"YulExpressionStatement","src":"2650:57:50"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2727:3:50"},{"kind":"number","nodeType":"YulLiteral","src":"2732:4:50","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2723:3:50"},"nodeType":"YulFunctionCall","src":"2723:14:50"},{"arguments":[{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2753:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"2761:4:50","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2749:3:50"},"nodeType":"YulFunctionCall","src":"2749:17:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2743:5:50"},"nodeType":"YulFunctionCall","src":"2743:24:50"},{"name":"_2","nodeType":"YulIdentifier","src":"2769:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2739:3:50"},"nodeType":"YulFunctionCall","src":"2739:33:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2716:6:50"},"nodeType":"YulFunctionCall","src":"2716:57:50"},"nodeType":"YulExpressionStatement","src":"2716:57:50"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2793:3:50"},{"kind":"number","nodeType":"YulLiteral","src":"2798:4:50","type":"","value":"0x80"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2789:3:50"},"nodeType":"YulFunctionCall","src":"2789:14:50"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2815:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"2823:4:50","type":"","value":"0x80"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2811:3:50"},"nodeType":"YulFunctionCall","src":"2811:17:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2805:5:50"},"nodeType":"YulFunctionCall","src":"2805:24:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2782:6:50"},"nodeType":"YulFunctionCall","src":"2782:48:50"},"nodeType":"YulExpressionStatement","src":"2782:48:50"},{"nodeType":"YulAssignment","src":"2839:28:50","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2857:3:50"},{"kind":"number","nodeType":"YulLiteral","src":"2862:4:50","type":"","value":"0xa0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2853:3:50"},"nodeType":"YulFunctionCall","src":"2853:14:50"},"variableNames":[{"name":"updatedPos","nodeType":"YulIdentifier","src":"2839:10:50"}]}]},"name":"abi_encodeUpdatedPos_struct_MultiTargetPermission","nodeType":"YulFunctionDefinition","parameters":[{"name":"value0","nodeType":"YulTypedName","src":"2236:6:50","type":""},{"name":"pos","nodeType":"YulTypedName","src":"2244:3:50","type":""}],"returnVariables":[{"name":"updatedPos","nodeType":"YulTypedName","src":"2252:10:50","type":""}],"src":"2177:696:50"},{"body":{"nodeType":"YulBlock","src":"3107:499:50","statements":[{"nodeType":"YulVariableDeclaration","src":"3117:12:50","value":{"kind":"number","nodeType":"YulLiteral","src":"3127:2:50","type":"","value":"32"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"3121:2:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3138:32:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3156:9:50"},{"name":"_1","nodeType":"YulIdentifier","src":"3167:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3152:3:50"},"nodeType":"YulFunctionCall","src":"3152:18:50"},"variables":[{"name":"tail_1","nodeType":"YulTypedName","src":"3142:6:50","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3186:9:50"},{"name":"_1","nodeType":"YulIdentifier","src":"3197:2:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3179:6:50"},"nodeType":"YulFunctionCall","src":"3179:21:50"},"nodeType":"YulExpressionStatement","src":"3179:21:50"},{"nodeType":"YulVariableDeclaration","src":"3209:17:50","value":{"name":"tail_1","nodeType":"YulIdentifier","src":"3220:6:50"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"3213:3:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3235:27:50","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3255:6:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3249:5:50"},"nodeType":"YulFunctionCall","src":"3249:13:50"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"3239:6:50","type":""}]},{"expression":{"arguments":[{"name":"tail_1","nodeType":"YulIdentifier","src":"3278:6:50"},{"name":"length","nodeType":"YulIdentifier","src":"3286:6:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3271:6:50"},"nodeType":"YulFunctionCall","src":"3271:22:50"},"nodeType":"YulExpressionStatement","src":"3271:22:50"},{"nodeType":"YulAssignment","src":"3302:25:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3313:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"3324:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3309:3:50"},"nodeType":"YulFunctionCall","src":"3309:18:50"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"3302:3:50"}]},{"nodeType":"YulVariableDeclaration","src":"3336:29:50","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3354:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"3362:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3350:3:50"},"nodeType":"YulFunctionCall","src":"3350:15:50"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"3340:6:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3374:10:50","value":{"kind":"number","nodeType":"YulLiteral","src":"3383:1:50","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"3378:1:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"3442:138:50","statements":[{"nodeType":"YulAssignment","src":"3456:76:50","value":{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"3519:6:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3513:5:50"},"nodeType":"YulFunctionCall","src":"3513:13:50"},{"name":"pos","nodeType":"YulIdentifier","src":"3528:3:50"}],"functionName":{"name":"abi_encodeUpdatedPos_struct_MultiTargetPermission","nodeType":"YulIdentifier","src":"3463:49:50"},"nodeType":"YulFunctionCall","src":"3463:69:50"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"3456:3:50"}]},{"nodeType":"YulAssignment","src":"3545:25:50","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"3559:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"3567:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3555:3:50"},"nodeType":"YulFunctionCall","src":"3555:15:50"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"3545:6:50"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3404:1:50"},{"name":"length","nodeType":"YulIdentifier","src":"3407:6:50"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"3401:2:50"},"nodeType":"YulFunctionCall","src":"3401:13:50"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"3415:18:50","statements":[{"nodeType":"YulAssignment","src":"3417:14:50","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3426:1:50"},{"kind":"number","nodeType":"YulLiteral","src":"3429:1:50","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3422:3:50"},"nodeType":"YulFunctionCall","src":"3422:9:50"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"3417:1:50"}]}]},"pre":{"nodeType":"YulBlock","src":"3397:3:50","statements":[]},"src":"3393:187:50"},{"nodeType":"YulAssignment","src":"3589:11:50","value":{"name":"pos","nodeType":"YulIdentifier","src":"3597:3:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3589:4:50"}]}]},"name":"abi_encode_tuple_t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3076:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3087:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3098:4:50","type":""}],"src":"2878:728:50"},{"body":{"nodeType":"YulBlock","src":"3746:465:50","statements":[{"body":{"nodeType":"YulBlock","src":"3792:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3801:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3804:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3794:6:50"},"nodeType":"YulFunctionCall","src":"3794:12:50"},"nodeType":"YulExpressionStatement","src":"3794:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3767:7:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"3776:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3763:3:50"},"nodeType":"YulFunctionCall","src":"3763:23:50"},{"kind":"number","nodeType":"YulLiteral","src":"3788:2:50","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3759:3:50"},"nodeType":"YulFunctionCall","src":"3759:32:50"},"nodeType":"YulIf","src":"3756:52:50"},{"nodeType":"YulAssignment","src":"3817:39:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3846:9:50"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"3827:18:50"},"nodeType":"YulFunctionCall","src":"3827:29:50"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3817:6:50"}]},{"nodeType":"YulVariableDeclaration","src":"3865:45:50","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3895:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"3906:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3891:3:50"},"nodeType":"YulFunctionCall","src":"3891:18:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3878:12:50"},"nodeType":"YulFunctionCall","src":"3878:32:50"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"3869:5:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"3960:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3969:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3972:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3962:6:50"},"nodeType":"YulFunctionCall","src":"3962:12:50"},"nodeType":"YulExpressionStatement","src":"3962:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3932:5:50"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3943:5:50"},{"kind":"number","nodeType":"YulLiteral","src":"3950:6:50","type":"","value":"0xffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3939:3:50"},"nodeType":"YulFunctionCall","src":"3939:18:50"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"3929:2:50"},"nodeType":"YulFunctionCall","src":"3929:29:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3922:6:50"},"nodeType":"YulFunctionCall","src":"3922:37:50"},"nodeType":"YulIf","src":"3919:57:50"},{"nodeType":"YulAssignment","src":"3985:15:50","value":{"name":"value","nodeType":"YulIdentifier","src":"3995:5:50"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"3985:6:50"}]},{"nodeType":"YulVariableDeclaration","src":"4009:46:50","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4040:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"4051:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4036:3:50"},"nodeType":"YulFunctionCall","src":"4036:18:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4023:12:50"},"nodeType":"YulFunctionCall","src":"4023:32:50"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4013:6:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"4098:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4107:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4110:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4100:6:50"},"nodeType":"YulFunctionCall","src":"4100:12:50"},"nodeType":"YulExpressionStatement","src":"4100:12:50"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"4070:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"4078:18:50","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4067:2:50"},"nodeType":"YulFunctionCall","src":"4067:30:50"},"nodeType":"YulIf","src":"4064:50:50"},{"nodeType":"YulAssignment","src":"4123:82:50","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4177:9:50"},{"name":"offset","nodeType":"YulIdentifier","src":"4188:6:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4173:3:50"},"nodeType":"YulFunctionCall","src":"4173:22:50"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4197:7:50"}],"functionName":{"name":"abi_decode_struct_SetupPayload_calldata","nodeType":"YulIdentifier","src":"4133:39:50"},"nodeType":"YulFunctionCall","src":"4133:72:50"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"4123:6:50"}]}]},"name":"abi_decode_tuple_t_addresst_uint16t_struct$_SetupPayload_$4810_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3696:9:50","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3707:7:50","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3719:6:50","type":""},{"name":"value1","nodeType":"YulTypedName","src":"3727:6:50","type":""},{"name":"value2","nodeType":"YulTypedName","src":"3735:6:50","type":""}],"src":"3611:600:50"},{"body":{"nodeType":"YulBlock","src":"4282:184:50","statements":[{"nodeType":"YulVariableDeclaration","src":"4292:10:50","value":{"kind":"number","nodeType":"YulLiteral","src":"4301:1:50","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"4296:1:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"4361:63:50","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"4386:3:50"},{"name":"i","nodeType":"YulIdentifier","src":"4391:1:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4382:3:50"},"nodeType":"YulFunctionCall","src":"4382:11:50"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"4405:3:50"},{"name":"i","nodeType":"YulIdentifier","src":"4410:1:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4401:3:50"},"nodeType":"YulFunctionCall","src":"4401:11:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4395:5:50"},"nodeType":"YulFunctionCall","src":"4395:18:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4375:6:50"},"nodeType":"YulFunctionCall","src":"4375:39:50"},"nodeType":"YulExpressionStatement","src":"4375:39:50"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"4322:1:50"},{"name":"length","nodeType":"YulIdentifier","src":"4325:6:50"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"4319:2:50"},"nodeType":"YulFunctionCall","src":"4319:13:50"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"4333:19:50","statements":[{"nodeType":"YulAssignment","src":"4335:15:50","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"4344:1:50"},{"kind":"number","nodeType":"YulLiteral","src":"4347:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4340:3:50"},"nodeType":"YulFunctionCall","src":"4340:10:50"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"4335:1:50"}]}]},"pre":{"nodeType":"YulBlock","src":"4315:3:50","statements":[]},"src":"4311:113:50"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"4444:3:50"},{"name":"length","nodeType":"YulIdentifier","src":"4449:6:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4440:3:50"},"nodeType":"YulFunctionCall","src":"4440:16:50"},{"kind":"number","nodeType":"YulLiteral","src":"4458:1:50","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4433:6:50"},"nodeType":"YulFunctionCall","src":"4433:27:50"},"nodeType":"YulExpressionStatement","src":"4433:27:50"}]},"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"4260:3:50","type":""},{"name":"dst","nodeType":"YulTypedName","src":"4265:3:50","type":""},{"name":"length","nodeType":"YulTypedName","src":"4270:6:50","type":""}],"src":"4216:250:50"},{"body":{"nodeType":"YulBlock","src":"4520:221:50","statements":[{"nodeType":"YulVariableDeclaration","src":"4530:26:50","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4550:5:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4544:5:50"},"nodeType":"YulFunctionCall","src":"4544:12:50"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"4534:6:50","type":""}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4572:3:50"},{"name":"length","nodeType":"YulIdentifier","src":"4577:6:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4565:6:50"},"nodeType":"YulFunctionCall","src":"4565:19:50"},"nodeType":"YulExpressionStatement","src":"4565:19:50"},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4632:5:50"},{"kind":"number","nodeType":"YulLiteral","src":"4639:4:50","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4628:3:50"},"nodeType":"YulFunctionCall","src":"4628:16:50"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4650:3:50"},{"kind":"number","nodeType":"YulLiteral","src":"4655:4:50","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4646:3:50"},"nodeType":"YulFunctionCall","src":"4646:14:50"},{"name":"length","nodeType":"YulIdentifier","src":"4662:6:50"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"4593:34:50"},"nodeType":"YulFunctionCall","src":"4593:76:50"},"nodeType":"YulExpressionStatement","src":"4593:76:50"},{"nodeType":"YulAssignment","src":"4678:57:50","value":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4693:3:50"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"4706:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"4714:2:50","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4702:3:50"},"nodeType":"YulFunctionCall","src":"4702:15:50"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4723:2:50","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"4719:3:50"},"nodeType":"YulFunctionCall","src":"4719:7:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4698:3:50"},"nodeType":"YulFunctionCall","src":"4698:29:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4689:3:50"},"nodeType":"YulFunctionCall","src":"4689:39:50"},{"kind":"number","nodeType":"YulLiteral","src":"4730:4:50","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4685:3:50"},"nodeType":"YulFunctionCall","src":"4685:50:50"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"4678:3:50"}]}]},"name":"abi_encode_bytes","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"4497:5:50","type":""},{"name":"pos","nodeType":"YulTypedName","src":"4504:3:50","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"4512:3:50","type":""}],"src":"4471:270:50"},{"body":{"nodeType":"YulBlock","src":"4814:1094:50","statements":[{"nodeType":"YulVariableDeclaration","src":"4824:26:50","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4840:3:50"},{"kind":"number","nodeType":"YulLiteral","src":"4845:4:50","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4836:3:50"},"nodeType":"YulFunctionCall","src":"4836:14:50"},"variables":[{"name":"tail","nodeType":"YulTypedName","src":"4828:4:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4859:32:50","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4885:5:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4879:5:50"},"nodeType":"YulFunctionCall","src":"4879:12:50"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"4863:12:50","type":""}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4907:3:50"},{"kind":"number","nodeType":"YulLiteral","src":"4912:4:50","type":"","value":"0x40"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4900:6:50"},"nodeType":"YulFunctionCall","src":"4900:17:50"},"nodeType":"YulExpressionStatement","src":"4900:17:50"},{"nodeType":"YulVariableDeclaration","src":"4926:17:50","value":{"name":"tail","nodeType":"YulIdentifier","src":"4939:4:50"},"variables":[{"name":"pos_1","nodeType":"YulTypedName","src":"4930:5:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4952:33:50","value":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"4972:12:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4966:5:50"},"nodeType":"YulFunctionCall","src":"4966:19:50"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"4956:6:50","type":""}]},{"expression":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"5001:4:50"},{"name":"length","nodeType":"YulIdentifier","src":"5007:6:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4994:6:50"},"nodeType":"YulFunctionCall","src":"4994:20:50"},"nodeType":"YulExpressionStatement","src":"4994:20:50"},{"nodeType":"YulAssignment","src":"5023:21:50","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5036:3:50"},{"kind":"number","nodeType":"YulLiteral","src":"5041:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5032:3:50"},"nodeType":"YulFunctionCall","src":"5032:12:50"},"variableNames":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5023:5:50"}]},{"nodeType":"YulVariableDeclaration","src":"5053:14:50","value":{"kind":"number","nodeType":"YulLiteral","src":"5063:4:50","type":"","value":"0x20"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"5057:2:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5076:35:50","value":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"5094:12:50"},{"name":"_1","nodeType":"YulIdentifier","src":"5108:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5090:3:50"},"nodeType":"YulFunctionCall","src":"5090:21:50"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"5080:6:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5120:10:50","value":{"kind":"number","nodeType":"YulLiteral","src":"5129:1:50","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"5124:1:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"5188:175:50","statements":[{"expression":{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5209:5:50"},{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"5226:6:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5220:5:50"},"nodeType":"YulFunctionCall","src":"5220:13:50"},{"kind":"number","nodeType":"YulLiteral","src":"5235:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5216:3:50"},"nodeType":"YulFunctionCall","src":"5216:62:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5202:6:50"},"nodeType":"YulFunctionCall","src":"5202:77:50"},"nodeType":"YulExpressionStatement","src":"5202:77:50"},{"nodeType":"YulAssignment","src":"5292:23:50","value":{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5305:5:50"},{"name":"_1","nodeType":"YulIdentifier","src":"5312:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5301:3:50"},"nodeType":"YulFunctionCall","src":"5301:14:50"},"variableNames":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5292:5:50"}]},{"nodeType":"YulAssignment","src":"5328:25:50","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"5342:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"5350:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5338:3:50"},"nodeType":"YulFunctionCall","src":"5338:15:50"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"5328:6:50"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"5150:1:50"},{"name":"length","nodeType":"YulIdentifier","src":"5153:6:50"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"5147:2:50"},"nodeType":"YulFunctionCall","src":"5147:13:50"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"5161:18:50","statements":[{"nodeType":"YulAssignment","src":"5163:14:50","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"5172:1:50"},{"kind":"number","nodeType":"YulLiteral","src":"5175:1:50","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5168:3:50"},"nodeType":"YulFunctionCall","src":"5168:9:50"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"5163:1:50"}]}]},"pre":{"nodeType":"YulBlock","src":"5143:3:50","statements":[]},"src":"5139:224:50"},{"nodeType":"YulVariableDeclaration","src":"5372:43:50","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5404:5:50"},{"name":"_1","nodeType":"YulIdentifier","src":"5411:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5400:3:50"},"nodeType":"YulFunctionCall","src":"5400:14:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5394:5:50"},"nodeType":"YulFunctionCall","src":"5394:21:50"},"variables":[{"name":"memberValue0_1","nodeType":"YulTypedName","src":"5376:14:50","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5435:3:50"},{"name":"_1","nodeType":"YulIdentifier","src":"5440:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5431:3:50"},"nodeType":"YulFunctionCall","src":"5431:12:50"},{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5449:5:50"},{"name":"pos","nodeType":"YulIdentifier","src":"5456:3:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5445:3:50"},"nodeType":"YulFunctionCall","src":"5445:15:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5424:6:50"},"nodeType":"YulFunctionCall","src":"5424:37:50"},"nodeType":"YulExpressionStatement","src":"5424:37:50"},{"nodeType":"YulVariableDeclaration","src":"5470:18:50","value":{"name":"pos_1","nodeType":"YulIdentifier","src":"5483:5:50"},"variables":[{"name":"pos_2","nodeType":"YulTypedName","src":"5474:5:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5497:37:50","value":{"arguments":[{"name":"memberValue0_1","nodeType":"YulIdentifier","src":"5519:14:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5513:5:50"},"nodeType":"YulFunctionCall","src":"5513:21:50"},"variables":[{"name":"length_1","nodeType":"YulTypedName","src":"5501:8:50","type":""}]},{"expression":{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5550:5:50"},{"name":"length_1","nodeType":"YulIdentifier","src":"5557:8:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5543:6:50"},"nodeType":"YulFunctionCall","src":"5543:23:50"},"nodeType":"YulExpressionStatement","src":"5543:23:50"},{"nodeType":"YulAssignment","src":"5575:23:50","value":{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5588:5:50"},{"name":"_1","nodeType":"YulIdentifier","src":"5595:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5584:3:50"},"nodeType":"YulFunctionCall","src":"5584:14:50"},"variableNames":[{"name":"pos_2","nodeType":"YulIdentifier","src":"5575:5:50"}]},{"nodeType":"YulVariableDeclaration","src":"5607:39:50","value":{"arguments":[{"name":"memberValue0_1","nodeType":"YulIdentifier","src":"5627:14:50"},{"name":"_1","nodeType":"YulIdentifier","src":"5643:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5623:3:50"},"nodeType":"YulFunctionCall","src":"5623:23:50"},"variables":[{"name":"srcPtr_1","nodeType":"YulTypedName","src":"5611:8:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5655:12:50","value":{"kind":"number","nodeType":"YulLiteral","src":"5666:1:50","type":"","value":"0"},"variables":[{"name":"i_1","nodeType":"YulTypedName","src":"5659:3:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"5733:148:50","statements":[{"nodeType":"YulAssignment","src":"5747:82:50","value":{"arguments":[{"arguments":[{"name":"srcPtr_1","nodeType":"YulIdentifier","src":"5812:8:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5806:5:50"},"nodeType":"YulFunctionCall","src":"5806:15:50"},{"name":"pos_2","nodeType":"YulIdentifier","src":"5823:5:50"}],"functionName":{"name":"abi_encodeUpdatedPos_struct_MultiTargetPermission","nodeType":"YulIdentifier","src":"5756:49:50"},"nodeType":"YulFunctionCall","src":"5756:73:50"},"variableNames":[{"name":"pos_2","nodeType":"YulIdentifier","src":"5747:5:50"}]},{"nodeType":"YulAssignment","src":"5842:29:50","value":{"arguments":[{"name":"srcPtr_1","nodeType":"YulIdentifier","src":"5858:8:50"},{"name":"_1","nodeType":"YulIdentifier","src":"5868:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5854:3:50"},"nodeType":"YulFunctionCall","src":"5854:17:50"},"variableNames":[{"name":"srcPtr_1","nodeType":"YulIdentifier","src":"5842:8:50"}]}]},"condition":{"arguments":[{"name":"i_1","nodeType":"YulIdentifier","src":"5687:3:50"},{"name":"length_1","nodeType":"YulIdentifier","src":"5692:8:50"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"5684:2:50"},"nodeType":"YulFunctionCall","src":"5684:17:50"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"5702:22:50","statements":[{"nodeType":"YulAssignment","src":"5704:18:50","value":{"arguments":[{"name":"i_1","nodeType":"YulIdentifier","src":"5715:3:50"},{"kind":"number","nodeType":"YulLiteral","src":"5720:1:50","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5711:3:50"},"nodeType":"YulFunctionCall","src":"5711:11:50"},"variableNames":[{"name":"i_1","nodeType":"YulIdentifier","src":"5704:3:50"}]}]},"pre":{"nodeType":"YulBlock","src":"5680:3:50","statements":[]},"src":"5676:205:50"},{"nodeType":"YulAssignment","src":"5890:12:50","value":{"name":"pos_2","nodeType":"YulIdentifier","src":"5897:5:50"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"5890:3:50"}]}]},"name":"abi_encode_struct_PreparedSetupData","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"4791:5:50","type":""},{"name":"pos","nodeType":"YulTypedName","src":"4798:3:50","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"4806:3:50","type":""}],"src":"4746:1162:50"},{"body":{"nodeType":"YulBlock","src":"6130:231:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6147:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"6158:2:50","type":"","value":"64"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6140:6:50"},"nodeType":"YulFunctionCall","src":"6140:21:50"},"nodeType":"YulExpressionStatement","src":"6140:21:50"},{"nodeType":"YulVariableDeclaration","src":"6170:58:50","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6201:6:50"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6213:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"6224:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6209:3:50"},"nodeType":"YulFunctionCall","src":"6209:18:50"}],"functionName":{"name":"abi_encode_bytes","nodeType":"YulIdentifier","src":"6184:16:50"},"nodeType":"YulFunctionCall","src":"6184:44:50"},"variables":[{"name":"tail_1","nodeType":"YulTypedName","src":"6174:6:50","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6248:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"6259:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6244:3:50"},"nodeType":"YulFunctionCall","src":"6244:18:50"},{"arguments":[{"name":"tail_1","nodeType":"YulIdentifier","src":"6268:6:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"6276:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6264:3:50"},"nodeType":"YulFunctionCall","src":"6264:22:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6237:6:50"},"nodeType":"YulFunctionCall","src":"6237:50:50"},"nodeType":"YulExpressionStatement","src":"6237:50:50"},{"nodeType":"YulAssignment","src":"6296:59:50","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"6340:6:50"},{"name":"tail_1","nodeType":"YulIdentifier","src":"6348:6:50"}],"functionName":{"name":"abi_encode_struct_PreparedSetupData","nodeType":"YulIdentifier","src":"6304:35:50"},"nodeType":"YulFunctionCall","src":"6304:51:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6296:4:50"}]}]},"name":"abi_encode_tuple_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$4802_memory_ptr__to_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$4802_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6091:9:50","type":""},{"name":"value1","nodeType":"YulTypedName","src":"6102:6:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"6110:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6121:4:50","type":""}],"src":"5913:448:50"},{"body":{"nodeType":"YulBlock","src":"6398:95:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6415:1:50","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6422:3:50","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"6427:10:50","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"6418:3:50"},"nodeType":"YulFunctionCall","src":"6418:20:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6408:6:50"},"nodeType":"YulFunctionCall","src":"6408:31:50"},"nodeType":"YulExpressionStatement","src":"6408:31:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6455:1:50","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"6458:4:50","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6448:6:50"},"nodeType":"YulFunctionCall","src":"6448:15:50"},"nodeType":"YulExpressionStatement","src":"6448:15:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6479:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6482:4:50","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6472:6:50"},"nodeType":"YulFunctionCall","src":"6472:15:50"},"nodeType":"YulExpressionStatement","src":"6472:15:50"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"6366:127:50"},{"body":{"nodeType":"YulBlock","src":"6594:899:50","statements":[{"body":{"nodeType":"YulBlock","src":"6640:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6649:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6652:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6642:6:50"},"nodeType":"YulFunctionCall","src":"6642:12:50"},"nodeType":"YulExpressionStatement","src":"6642:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"6615:7:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"6624:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6611:3:50"},"nodeType":"YulFunctionCall","src":"6611:23:50"},{"kind":"number","nodeType":"YulLiteral","src":"6636:2:50","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6607:3:50"},"nodeType":"YulFunctionCall","src":"6607:32:50"},"nodeType":"YulIf","src":"6604:52:50"},{"nodeType":"YulAssignment","src":"6665:39:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6694:9:50"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"6675:18:50"},"nodeType":"YulFunctionCall","src":"6675:29:50"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"6665:6:50"}]},{"nodeType":"YulVariableDeclaration","src":"6713:46:50","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6744:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"6755:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6740:3:50"},"nodeType":"YulFunctionCall","src":"6740:18:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6727:12:50"},"nodeType":"YulFunctionCall","src":"6727:32:50"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"6717:6:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"6768:28:50","value":{"kind":"number","nodeType":"YulLiteral","src":"6778:18:50","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"6772:2:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"6823:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6832:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6835:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6825:6:50"},"nodeType":"YulFunctionCall","src":"6825:12:50"},"nodeType":"YulExpressionStatement","src":"6825:12:50"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"6811:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"6819:2:50"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6808:2:50"},"nodeType":"YulFunctionCall","src":"6808:14:50"},"nodeType":"YulIf","src":"6805:34:50"},{"nodeType":"YulVariableDeclaration","src":"6848:32:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6862:9:50"},{"name":"offset","nodeType":"YulIdentifier","src":"6873:6:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6858:3:50"},"nodeType":"YulFunctionCall","src":"6858:22:50"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"6852:2:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"6928:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6937:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6940:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6930:6:50"},"nodeType":"YulFunctionCall","src":"6930:12:50"},"nodeType":"YulExpressionStatement","src":"6930:12:50"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"6907:2:50"},{"kind":"number","nodeType":"YulLiteral","src":"6911:4:50","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6903:3:50"},"nodeType":"YulFunctionCall","src":"6903:13:50"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"6918:7:50"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6899:3:50"},"nodeType":"YulFunctionCall","src":"6899:27:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"6892:6:50"},"nodeType":"YulFunctionCall","src":"6892:35:50"},"nodeType":"YulIf","src":"6889:55:50"},{"nodeType":"YulVariableDeclaration","src":"6953:26:50","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"6976:2:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6963:12:50"},"nodeType":"YulFunctionCall","src":"6963:16:50"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"6957:2:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"7002:22:50","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"7004:16:50"},"nodeType":"YulFunctionCall","src":"7004:18:50"},"nodeType":"YulExpressionStatement","src":"7004:18:50"}]},"condition":{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"6994:2:50"},{"name":"_1","nodeType":"YulIdentifier","src":"6998:2:50"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6991:2:50"},"nodeType":"YulFunctionCall","src":"6991:10:50"},"nodeType":"YulIf","src":"6988:36:50"},{"nodeType":"YulVariableDeclaration","src":"7033:17:50","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7047:2:50","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"7043:3:50"},"nodeType":"YulFunctionCall","src":"7043:7:50"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"7037:2:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"7059:23:50","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7079:2:50","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"7073:5:50"},"nodeType":"YulFunctionCall","src":"7073:9:50"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"7063:6:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"7091:71:50","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7113:6:50"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"7137:2:50"},{"kind":"number","nodeType":"YulLiteral","src":"7141:4:50","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7133:3:50"},"nodeType":"YulFunctionCall","src":"7133:13:50"},{"name":"_4","nodeType":"YulIdentifier","src":"7148:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7129:3:50"},"nodeType":"YulFunctionCall","src":"7129:22:50"},{"kind":"number","nodeType":"YulLiteral","src":"7153:2:50","type":"","value":"63"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7125:3:50"},"nodeType":"YulFunctionCall","src":"7125:31:50"},{"name":"_4","nodeType":"YulIdentifier","src":"7158:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7121:3:50"},"nodeType":"YulFunctionCall","src":"7121:40:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7109:3:50"},"nodeType":"YulFunctionCall","src":"7109:53:50"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"7095:10:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"7221:22:50","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"7223:16:50"},"nodeType":"YulFunctionCall","src":"7223:18:50"},"nodeType":"YulExpressionStatement","src":"7223:18:50"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"7180:10:50"},{"name":"_1","nodeType":"YulIdentifier","src":"7192:2:50"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"7177:2:50"},"nodeType":"YulFunctionCall","src":"7177:18:50"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"7200:10:50"},{"name":"memPtr","nodeType":"YulIdentifier","src":"7212:6:50"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"7197:2:50"},"nodeType":"YulFunctionCall","src":"7197:22:50"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"7174:2:50"},"nodeType":"YulFunctionCall","src":"7174:46:50"},"nodeType":"YulIf","src":"7171:72:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7259:2:50","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"7263:10:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7252:6:50"},"nodeType":"YulFunctionCall","src":"7252:22:50"},"nodeType":"YulExpressionStatement","src":"7252:22:50"},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7290:6:50"},{"name":"_3","nodeType":"YulIdentifier","src":"7298:2:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7283:6:50"},"nodeType":"YulFunctionCall","src":"7283:18:50"},"nodeType":"YulExpressionStatement","src":"7283:18:50"},{"body":{"nodeType":"YulBlock","src":"7347:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7356:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7359:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7349:6:50"},"nodeType":"YulFunctionCall","src":"7349:12:50"},"nodeType":"YulExpressionStatement","src":"7349:12:50"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"7324:2:50"},{"name":"_3","nodeType":"YulIdentifier","src":"7328:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7320:3:50"},"nodeType":"YulFunctionCall","src":"7320:11:50"},{"kind":"number","nodeType":"YulLiteral","src":"7333:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7316:3:50"},"nodeType":"YulFunctionCall","src":"7316:20:50"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"7338:7:50"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"7313:2:50"},"nodeType":"YulFunctionCall","src":"7313:33:50"},"nodeType":"YulIf","src":"7310:53:50"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7389:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"7397:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7385:3:50"},"nodeType":"YulFunctionCall","src":"7385:15:50"},{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"7406:2:50"},{"kind":"number","nodeType":"YulLiteral","src":"7410:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7402:3:50"},"nodeType":"YulFunctionCall","src":"7402:11:50"},{"name":"_3","nodeType":"YulIdentifier","src":"7415:2:50"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"7372:12:50"},"nodeType":"YulFunctionCall","src":"7372:46:50"},"nodeType":"YulExpressionStatement","src":"7372:46:50"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7442:6:50"},{"name":"_3","nodeType":"YulIdentifier","src":"7450:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7438:3:50"},"nodeType":"YulFunctionCall","src":"7438:15:50"},{"kind":"number","nodeType":"YulLiteral","src":"7455:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7434:3:50"},"nodeType":"YulFunctionCall","src":"7434:24:50"},{"kind":"number","nodeType":"YulLiteral","src":"7460:1:50","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7427:6:50"},"nodeType":"YulFunctionCall","src":"7427:35:50"},"nodeType":"YulExpressionStatement","src":"7427:35:50"},{"nodeType":"YulAssignment","src":"7471:16:50","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"7481:6:50"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"7471:6:50"}]}]},"name":"abi_decode_tuple_t_addresst_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6552:9:50","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"6563:7:50","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"6575:6:50","type":""},{"name":"value1","nodeType":"YulTypedName","src":"6583:6:50","type":""}],"src":"6498:995:50"},{"body":{"nodeType":"YulBlock","src":"7697:209:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7714:9:50"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7729:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"7737:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7725:3:50"},"nodeType":"YulFunctionCall","src":"7725:55:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7707:6:50"},"nodeType":"YulFunctionCall","src":"7707:74:50"},"nodeType":"YulExpressionStatement","src":"7707:74:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7801:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"7812:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7797:3:50"},"nodeType":"YulFunctionCall","src":"7797:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"7817:2:50","type":"","value":"64"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7790:6:50"},"nodeType":"YulFunctionCall","src":"7790:30:50"},"nodeType":"YulExpressionStatement","src":"7790:30:50"},{"nodeType":"YulAssignment","src":"7829:71:50","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"7873:6:50"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7885:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"7896:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7881:3:50"},"nodeType":"YulFunctionCall","src":"7881:18:50"}],"functionName":{"name":"abi_encode_struct_PreparedSetupData","nodeType":"YulIdentifier","src":"7837:35:50"},"nodeType":"YulFunctionCall","src":"7837:63:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7829:4:50"}]}]},"name":"abi_encode_tuple_t_address_t_struct$_PreparedSetupData_$4802_memory_ptr__to_t_address_t_struct$_PreparedSetupData_$4802_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7658:9:50","type":""},{"name":"value1","nodeType":"YulTypedName","src":"7669:6:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"7677:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7688:4:50","type":""}],"src":"7498:408:50"},{"body":{"nodeType":"YulBlock","src":"8025:125:50","statements":[{"nodeType":"YulAssignment","src":"8035:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8047:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"8058:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8043:3:50"},"nodeType":"YulFunctionCall","src":"8043:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"8035:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8077:9:50"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"8092:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"8100:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8088:3:50"},"nodeType":"YulFunctionCall","src":"8088:55:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8070:6:50"},"nodeType":"YulFunctionCall","src":"8070:74:50"},"nodeType":"YulExpressionStatement","src":"8070:74:50"}]},"name":"abi_encode_tuple_t_contract$_IDAO_$2538__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7994:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"8005:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"8016:4:50","type":""}],"src":"7911:239:50"},{"body":{"nodeType":"YulBlock","src":"8187:95:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8204:1:50","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8211:3:50","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"8216:10:50","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"8207:3:50"},"nodeType":"YulFunctionCall","src":"8207:20:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8197:6:50"},"nodeType":"YulFunctionCall","src":"8197:31:50"},"nodeType":"YulExpressionStatement","src":"8197:31:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8244:1:50","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"8247:4:50","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8237:6:50"},"nodeType":"YulFunctionCall","src":"8237:15:50"},"nodeType":"YulExpressionStatement","src":"8237:15:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8268:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8271:4:50","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8261:6:50"},"nodeType":"YulFunctionCall","src":"8261:15:50"},"nodeType":"YulExpressionStatement","src":"8261:15:50"}]},"name":"panic_error_0x11","nodeType":"YulFunctionDefinition","src":"8155:127:50"},{"body":{"nodeType":"YulBlock","src":"8336:159:50","statements":[{"nodeType":"YulVariableDeclaration","src":"8346:52:50","value":{"kind":"number","nodeType":"YulLiteral","src":"8356:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"8350:2:50","type":""}]},{"nodeType":"YulAssignment","src":"8407:35:50","value":{"arguments":[{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"8423:1:50"},{"name":"_1","nodeType":"YulIdentifier","src":"8426:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8419:3:50"},"nodeType":"YulFunctionCall","src":"8419:10:50"},{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"8435:1:50"},{"name":"_1","nodeType":"YulIdentifier","src":"8438:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8431:3:50"},"nodeType":"YulFunctionCall","src":"8431:10:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"8415:3:50"},"nodeType":"YulFunctionCall","src":"8415:27:50"},"variableNames":[{"name":"diff","nodeType":"YulIdentifier","src":"8407:4:50"}]},{"body":{"nodeType":"YulBlock","src":"8467:22:50","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"8469:16:50"},"nodeType":"YulFunctionCall","src":"8469:18:50"},"nodeType":"YulExpressionStatement","src":"8469:18:50"}]},"condition":{"arguments":[{"name":"diff","nodeType":"YulIdentifier","src":"8457:4:50"},{"name":"_1","nodeType":"YulIdentifier","src":"8463:2:50"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"8454:2:50"},"nodeType":"YulFunctionCall","src":"8454:12:50"},"nodeType":"YulIf","src":"8451:38:50"}]},"name":"checked_sub_t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"8318:1:50","type":""},{"name":"y","nodeType":"YulTypedName","src":"8321:1:50","type":""}],"returnVariables":[{"name":"diff","nodeType":"YulTypedName","src":"8327:4:50","type":""}],"src":"8287:208:50"},{"body":{"nodeType":"YulBlock","src":"8532:95:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8549:1:50","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8556:3:50","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"8561:10:50","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"8552:3:50"},"nodeType":"YulFunctionCall","src":"8552:20:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8542:6:50"},"nodeType":"YulFunctionCall","src":"8542:31:50"},"nodeType":"YulExpressionStatement","src":"8542:31:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8589:1:50","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"8592:4:50","type":"","value":"0x32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8582:6:50"},"nodeType":"YulFunctionCall","src":"8582:15:50"},"nodeType":"YulExpressionStatement","src":"8582:15:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8613:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8616:4:50","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8606:6:50"},"nodeType":"YulFunctionCall","src":"8606:15:50"},"nodeType":"YulExpressionStatement","src":"8606:15:50"}]},"name":"panic_error_0x32","nodeType":"YulFunctionDefinition","src":"8500:127:50"},{"body":{"nodeType":"YulBlock","src":"8679:187:50","statements":[{"nodeType":"YulVariableDeclaration","src":"8689:52:50","value":{"kind":"number","nodeType":"YulLiteral","src":"8699:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"8693:2:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"8750:29:50","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8769:5:50"},{"name":"_1","nodeType":"YulIdentifier","src":"8776:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8765:3:50"},"nodeType":"YulFunctionCall","src":"8765:14:50"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"8754:7:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"8807:22:50","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"8809:16:50"},"nodeType":"YulFunctionCall","src":"8809:18:50"},"nodeType":"YulExpressionStatement","src":"8809:18:50"}]},"condition":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"8794:7:50"},{"name":"_1","nodeType":"YulIdentifier","src":"8803:2:50"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"8791:2:50"},"nodeType":"YulFunctionCall","src":"8791:15:50"},"nodeType":"YulIf","src":"8788:41:50"},{"nodeType":"YulAssignment","src":"8838:22:50","value":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"8849:7:50"},{"kind":"number","nodeType":"YulLiteral","src":"8858:1:50","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8845:3:50"},"nodeType":"YulFunctionCall","src":"8845:15:50"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"8838:3:50"}]}]},"name":"increment_t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"8661:5:50","type":""}],"returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"8671:3:50","type":""}],"src":"8632:234:50"},{"body":{"nodeType":"YulBlock","src":"9045:172:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9062:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"9073:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9055:6:50"},"nodeType":"YulFunctionCall","src":"9055:21:50"},"nodeType":"YulExpressionStatement","src":"9055:21:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9096:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"9107:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9092:3:50"},"nodeType":"YulFunctionCall","src":"9092:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"9112:2:50","type":"","value":"22"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9085:6:50"},"nodeType":"YulFunctionCall","src":"9085:30:50"},"nodeType":"YulExpressionStatement","src":"9085:30:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9135:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"9146:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9131:3:50"},"nodeType":"YulFunctionCall","src":"9131:18:50"},{"hexValue":"455243313136373a20637265617465206661696c6564","kind":"string","nodeType":"YulLiteral","src":"9151:24:50","type":"","value":"ERC1167: create failed"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9124:6:50"},"nodeType":"YulFunctionCall","src":"9124:52:50"},"nodeType":"YulExpressionStatement","src":"9124:52:50"},{"nodeType":"YulAssignment","src":"9185:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9197:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"9208:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9193:3:50"},"nodeType":"YulFunctionCall","src":"9193:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"9185:4:50"}]}]},"name":"abi_encode_tuple_t_stringliteral_68ca40b61460257f14e69f48b1a4dbc812e9afc6932f127ef8084544457b3335__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9022:9:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"9036:4:50","type":""}],"src":"8871:346:50"},{"body":{"nodeType":"YulBlock","src":"9396:228:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9413:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"9424:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9406:6:50"},"nodeType":"YulFunctionCall","src":"9406:21:50"},"nodeType":"YulExpressionStatement","src":"9406:21:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9447:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"9458:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9443:3:50"},"nodeType":"YulFunctionCall","src":"9443:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"9463:2:50","type":"","value":"38"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9436:6:50"},"nodeType":"YulFunctionCall","src":"9436:30:50"},"nodeType":"YulExpressionStatement","src":"9436:30:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9486:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"9497:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9482:3:50"},"nodeType":"YulFunctionCall","src":"9482:18:50"},{"hexValue":"416464726573733a20696e73756666696369656e742062616c616e636520666f","kind":"string","nodeType":"YulLiteral","src":"9502:34:50","type":"","value":"Address: insufficient balance fo"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9475:6:50"},"nodeType":"YulFunctionCall","src":"9475:62:50"},"nodeType":"YulExpressionStatement","src":"9475:62:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9557:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"9568:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9553:3:50"},"nodeType":"YulFunctionCall","src":"9553:18:50"},{"hexValue":"722063616c6c","kind":"string","nodeType":"YulLiteral","src":"9573:8:50","type":"","value":"r call"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9546:6:50"},"nodeType":"YulFunctionCall","src":"9546:36:50"},"nodeType":"YulExpressionStatement","src":"9546:36:50"},{"nodeType":"YulAssignment","src":"9591:27:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9603:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"9614:3:50","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9599:3:50"},"nodeType":"YulFunctionCall","src":"9599:19:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"9591:4:50"}]}]},"name":"abi_encode_tuple_t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9373:9:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"9387:4:50","type":""}],"src":"9222:402:50"},{"body":{"nodeType":"YulBlock","src":"9766:150:50","statements":[{"nodeType":"YulVariableDeclaration","src":"9776:27:50","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"9796:6:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"9790:5:50"},"nodeType":"YulFunctionCall","src":"9790:13:50"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"9780:6:50","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"9851:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"9859:4:50","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9847:3:50"},"nodeType":"YulFunctionCall","src":"9847:17:50"},{"name":"pos","nodeType":"YulIdentifier","src":"9866:3:50"},{"name":"length","nodeType":"YulIdentifier","src":"9871:6:50"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"9812:34:50"},"nodeType":"YulFunctionCall","src":"9812:66:50"},"nodeType":"YulExpressionStatement","src":"9812:66:50"},{"nodeType":"YulAssignment","src":"9887:23:50","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"9898:3:50"},{"name":"length","nodeType":"YulIdentifier","src":"9903:6:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9894:3:50"},"nodeType":"YulFunctionCall","src":"9894:16:50"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"9887:3:50"}]}]},"name":"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"9742:3:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"9747:6:50","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"9758:3:50","type":""}],"src":"9629:287:50"},{"body":{"nodeType":"YulBlock","src":"10095:179:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10112:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"10123:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10105:6:50"},"nodeType":"YulFunctionCall","src":"10105:21:50"},"nodeType":"YulExpressionStatement","src":"10105:21:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10146:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"10157:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10142:3:50"},"nodeType":"YulFunctionCall","src":"10142:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"10162:2:50","type":"","value":"29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10135:6:50"},"nodeType":"YulFunctionCall","src":"10135:30:50"},"nodeType":"YulExpressionStatement","src":"10135:30:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10185:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"10196:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10181:3:50"},"nodeType":"YulFunctionCall","src":"10181:18:50"},{"hexValue":"416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374","kind":"string","nodeType":"YulLiteral","src":"10201:31:50","type":"","value":"Address: call to non-contract"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10174:6:50"},"nodeType":"YulFunctionCall","src":"10174:59:50"},"nodeType":"YulExpressionStatement","src":"10174:59:50"},{"nodeType":"YulAssignment","src":"10242:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10254:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"10265:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10250:3:50"},"nodeType":"YulFunctionCall","src":"10250:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"10242:4:50"}]}]},"name":"abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"10072:9:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"10086:4:50","type":""}],"src":"9921:353:50"},{"body":{"nodeType":"YulBlock","src":"10400:98:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10417:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"10428:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10410:6:50"},"nodeType":"YulFunctionCall","src":"10410:21:50"},"nodeType":"YulExpressionStatement","src":"10410:21:50"},{"nodeType":"YulAssignment","src":"10440:52:50","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"10465:6:50"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10477:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"10488:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10473:3:50"},"nodeType":"YulFunctionCall","src":"10473:18:50"}],"functionName":{"name":"abi_encode_bytes","nodeType":"YulIdentifier","src":"10448:16:50"},"nodeType":"YulFunctionCall","src":"10448:44:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"10440:4:50"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"10369:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"10380:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"10391:4:50","type":""}],"src":"10279:219:50"}]},"contents":"{\n { }\n function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n if iszero(eq(value, and(value, shl(224, 0xffffffff)))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 96)\n let pos := headStart\n pos := headStart\n let srcPtr := value0\n let i := 0\n for { } lt(i, 0x03) { i := add(i, 1) }\n {\n mstore(pos, and(mload(srcPtr), 0xff))\n let _1 := 0x20\n pos := add(pos, _1)\n srcPtr := add(srcPtr, _1)\n }\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_decode_address(offset) -> value\n {\n value := calldataload(offset)\n if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n }\n function abi_decode_struct_SetupPayload_calldata(offset, end) -> value\n {\n if slt(sub(end, offset), 96) { revert(0, 0) }\n value := offset\n }\n function abi_decode_tuple_t_addresst_struct$_SetupPayload_$4810_calldata_ptr(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n let offset := calldataload(add(headStart, 32))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n value1 := abi_decode_struct_SetupPayload_calldata(add(headStart, offset), dataEnd)\n }\n function panic_error_0x21()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x21)\n revert(0, 0x24)\n }\n function abi_encodeUpdatedPos_struct_MultiTargetPermission(value0, pos) -> updatedPos\n {\n let _1 := mload(value0)\n if iszero(lt(_1, 3))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x21)\n revert(0, 0x24)\n }\n mstore(pos, _1)\n let memberValue0 := mload(add(value0, 0x20))\n let _2 := 0xffffffffffffffffffffffffffffffffffffffff\n mstore(add(pos, 0x20), and(memberValue0, _2))\n mstore(add(pos, 0x40), and(mload(add(value0, 0x40)), _2))\n mstore(add(pos, 0x60), and(mload(add(value0, 0x60)), _2))\n mstore(add(pos, 0x80), mload(add(value0, 0x80)))\n updatedPos := add(pos, 0xa0)\n }\n function abi_encode_tuple_t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n let _1 := 32\n let tail_1 := add(headStart, _1)\n mstore(headStart, _1)\n let pos := tail_1\n let length := mload(value0)\n mstore(tail_1, length)\n pos := add(headStart, 64)\n let srcPtr := add(value0, _1)\n let i := 0\n for { } lt(i, length) { i := add(i, 1) }\n {\n pos := abi_encodeUpdatedPos_struct_MultiTargetPermission(mload(srcPtr), pos)\n srcPtr := add(srcPtr, _1)\n }\n tail := pos\n }\n function abi_decode_tuple_t_addresst_uint16t_struct$_SetupPayload_$4810_calldata_ptr(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n let value := calldataload(add(headStart, 32))\n if iszero(eq(value, and(value, 0xffff))) { revert(0, 0) }\n value1 := value\n let offset := calldataload(add(headStart, 64))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n value2 := abi_decode_struct_SetupPayload_calldata(add(headStart, offset), dataEnd)\n }\n function copy_memory_to_memory_with_cleanup(src, dst, length)\n {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n mstore(add(dst, length), 0)\n }\n function abi_encode_bytes(value, pos) -> end\n {\n let length := mload(value)\n mstore(pos, length)\n copy_memory_to_memory_with_cleanup(add(value, 0x20), add(pos, 0x20), length)\n end := add(add(pos, and(add(length, 31), not(31))), 0x20)\n }\n function abi_encode_struct_PreparedSetupData(value, pos) -> end\n {\n let tail := add(pos, 0x40)\n let memberValue0 := mload(value)\n mstore(pos, 0x40)\n let pos_1 := tail\n let length := mload(memberValue0)\n mstore(tail, length)\n pos_1 := add(pos, 96)\n let _1 := 0x20\n let srcPtr := add(memberValue0, _1)\n let i := 0\n for { } lt(i, length) { i := add(i, 1) }\n {\n mstore(pos_1, and(mload(srcPtr), 0xffffffffffffffffffffffffffffffffffffffff))\n pos_1 := add(pos_1, _1)\n srcPtr := add(srcPtr, _1)\n }\n let memberValue0_1 := mload(add(value, _1))\n mstore(add(pos, _1), sub(pos_1, pos))\n let pos_2 := pos_1\n let length_1 := mload(memberValue0_1)\n mstore(pos_1, length_1)\n pos_2 := add(pos_1, _1)\n let srcPtr_1 := add(memberValue0_1, _1)\n let i_1 := 0\n for { } lt(i_1, length_1) { i_1 := add(i_1, 1) }\n {\n pos_2 := abi_encodeUpdatedPos_struct_MultiTargetPermission(mload(srcPtr_1), pos_2)\n srcPtr_1 := add(srcPtr_1, _1)\n }\n end := pos_2\n }\n function abi_encode_tuple_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$4802_memory_ptr__to_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$4802_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n {\n mstore(headStart, 64)\n let tail_1 := abi_encode_bytes(value0, add(headStart, 64))\n mstore(add(headStart, 32), sub(tail_1, headStart))\n tail := abi_encode_struct_PreparedSetupData(value1, tail_1)\n }\n function panic_error_0x41()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function abi_decode_tuple_t_addresst_bytes_memory_ptr(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n let offset := calldataload(add(headStart, 32))\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n let _2 := add(headStart, offset)\n if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n let _3 := calldataload(_2)\n if gt(_3, _1) { panic_error_0x41() }\n let _4 := not(31)\n let memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n mstore(memPtr, _3)\n if gt(add(add(_2, _3), 32), dataEnd) { revert(0, 0) }\n calldatacopy(add(memPtr, 32), add(_2, 32), _3)\n mstore(add(add(memPtr, _3), 32), 0)\n value1 := memPtr\n }\n function abi_encode_tuple_t_address_t_struct$_PreparedSetupData_$4802_memory_ptr__to_t_address_t_struct$_PreparedSetupData_$4802_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n {\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n mstore(add(headStart, 32), 64)\n tail := abi_encode_struct_PreparedSetupData(value1, add(headStart, 64))\n }\n function abi_encode_tuple_t_contract$_IDAO_$2538__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function panic_error_0x11()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n function checked_sub_t_uint160(x, y) -> diff\n {\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n diff := sub(and(x, _1), and(y, _1))\n if gt(diff, _1) { panic_error_0x11() }\n }\n function panic_error_0x32()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n function increment_t_uint160(value) -> ret\n {\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n let value_1 := and(value, _1)\n if eq(value_1, _1) { panic_error_0x11() }\n ret := add(value_1, 1)\n }\n function abi_encode_tuple_t_stringliteral_68ca40b61460257f14e69f48b1a4dbc812e9afc6932f127ef8084544457b3335__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 22)\n mstore(add(headStart, 64), \"ERC1167: create failed\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 38)\n mstore(add(headStart, 64), \"Address: insufficient balance fo\")\n mstore(add(headStart, 96), \"r call\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n {\n let length := mload(value0)\n copy_memory_to_memory_with_cleanup(add(value0, 0x20), pos, length)\n end := add(pos, length)\n }\n function abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 29)\n mstore(add(headStart, 64), \"Address: call to non-contract\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n mstore(headStart, 32)\n tail := abi_encode_bytes(value0, add(headStart, 32))\n }\n}","id":50,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{"4879":[{"length":32,"start":193},{"length":32,"start":663}]},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100725760003560e01c80639cb0a124116100505780639cb0a124146100eb578063a8a9c29e1461010b578063f10832f11461012c57600080fd5b806301ffc9a7146100775780632ae9c6001461009f5780635c60da1b146100b4575b600080fd5b61008a6100853660046107fd565b61014d565b60405190151581526020015b60405180910390f35b6100a761019e565b6040516100969190610827565b6040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152602001610096565b6100fe6100f9366004610884565b6101c8565b604051610096919061094e565b61011e610119366004610997565b6101de565b604051610096929190610ae1565b61013f61013a366004610b25565b610216565b604051610096929190610be7565b60006001600160e01b0319821663099718b560e41b148061017d57506001600160e01b03198216621574e360e91b145b8061019857506301ffc9a760e01b6001600160e01b03198316145b92915050565b6101a66107df565b5060408051606081018252600181526004602082015260009181019190915290565b60606101d760006001806102f2565b9392505050565b60606101fd604051806040016040528060608152602001606081525090565b60405163a112810160e01b815260040160405180910390fd5b6000610235604051806040016040528060608152602001606081525090565b6040516001600160a01b038516602482015260009060440160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663189acdbd60e31b17905290506102c8816102b97f000000000000000000000000000000000000000000000000000000000000000090565b6001600160a01b031690610477565b92506102d460016104af565b82526102e360006001816102f2565b60208301525090939092509050565b6060826001600160a01b0316846001600160a01b0316111561032757604051633a4013cd60e21b815260040160405180910390fd5b6103318484610c1f565b6001600160a01b031667ffffffffffffffff81111561035257610352610b0f565b6040519080825280602002602001820160405280156103ab57816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282526000199092019101816103705790505b509050835b836001600160a01b0316816001600160a01b0316101561046f576040518060a001604052808460028111156103e7576103e76108d2565b81526001600160a01b038316602082018190526040820152600060608201527fa280eec51ab8e1bc4b6b0c1b7f1bde785761b787a49db404e3e9338ed9b016ef608090910152826104388784610c1f565b6001600160a01b03168151811061045157610451610c3f565b6020026020010181905250808061046790610c55565b9150506103b0565b509392505050565b600061048b836001600160a01b0316610568565b825190915015610198576104a86001600160a01b0382168361060e565b5092915050565b6060816001600160a01b031667ffffffffffffffff8111156104d3576104d3610b0f565b6040519080825280602002602001820160405280156104fc578160200160208202803683370190505b50905060005b826001600160a01b0316816001600160a01b03161015610562578082826001600160a01b03168151811061053857610538610c3f565b6001600160a01b03909216602092830291909101909101528061055a81610c55565b915050610502565b50919050565b6000763d602d80600a3d3981f3363d3d373d3d3d363d730000008260601b60e81c176000526e5af43d82803e903d91602b57fd5bf38260781b17602052603760096000f090506001600160a01b0381166106095760405162461bcd60e51b815260206004820152601660248201527f455243313136373a20637265617465206661696c65640000000000000000000060448201526064015b60405180910390fd5b919050565b60606101d7838360006040518060400160405280601e81526020017f416464726573733a206c6f772d6c6576656c2063616c6c206661696c656400008152506060824710156106c55760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610600565b600080866001600160a01b031685876040516106e19190610c7b565b60006040518083038185875af1925050503d806000811461071e576040519150601f19603f3d011682016040523d82523d6000602084013e610723565b606091505b509150915061073487838387610741565b925050505b949350505050565b606083156107b05782516000036107a9576001600160a01b0385163b6107a95760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610600565b5081610739565b61073983838151156107c55781518083602001fd5b8060405162461bcd60e51b81526004016106009190610c97565b60405180606001604052806003906020820280368337509192915050565b60006020828403121561080f57600080fd5b81356001600160e01b0319811681146101d757600080fd5b60608101818360005b600381101561085257815160ff16835260209283019290910190600101610830565b50505092915050565b80356001600160a01b038116811461060957600080fd5b60006060828403121561056257600080fd5b6000806040838503121561089757600080fd5b6108a08361085b565b9150602083013567ffffffffffffffff8111156108bc57600080fd5b6108c885828601610872565b9150509250929050565b634e487b7160e01b600052602160045260246000fd5b600081516003811061090a57634e487b7160e01b600052602160045260246000fd5b8352506020818101516001600160a01b0390811691840191909152604080830151821690840152606080830151909116908301526080908101519082015260a00190565b6020808252825182820181905260009190848201906040850190845b8181101561098b5761097d8385516108e8565b93850193925060010161096a565b50909695505050505050565b6000806000606084860312156109ac57600080fd5b6109b58461085b565b9250602084013561ffff811681146109cc57600080fd5b9150604084013567ffffffffffffffff8111156109e857600080fd5b6109f486828701610872565b9150509250925092565b60005b83811015610a19578181015183820152602001610a01565b50506000910152565b60008151808452610a3a8160208601602086016109fe565b601f01601f19169290920160200192915050565b805160408084528151908401819052600091602091908201906060860190845b81811015610a935783516001600160a01b031683529284019291840191600101610a6e565b50508483015186820387850152805180835290840192506000918401905b80831015610ad657610ac48285516108e8565b91508484019350600183019250610ab1565b509695505050505050565b604081526000610af46040830185610a22565b8281036020840152610b068185610a4e565b95945050505050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215610b3857600080fd5b610b418361085b565b9150602083013567ffffffffffffffff80821115610b5e57600080fd5b818501915085601f830112610b7257600080fd5b813581811115610b8457610b84610b0f565b604051601f8201601f19908116603f01168101908382118183101715610bac57610bac610b0f565b81604052828152886020848701011115610bc557600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6001600160a01b03831681526040602082015260006107396040830184610a4e565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b038281168282160390808211156104a8576104a8610c09565b634e487b7160e01b600052603260045260246000fd5b60006001600160a01b03808316818103610c7157610c71610c09565b6001019392505050565b60008251610c8d8184602087016109fe565b9190910192915050565b6020815260006101d76020830184610a2256fea164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x72 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9CB0A124 GT PUSH2 0x50 JUMPI DUP1 PUSH4 0x9CB0A124 EQ PUSH2 0xEB JUMPI DUP1 PUSH4 0xA8A9C29E EQ PUSH2 0x10B JUMPI DUP1 PUSH4 0xF10832F1 EQ PUSH2 0x12C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x77 JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0x9F JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0xB4 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8A PUSH2 0x85 CALLDATASIZE PUSH1 0x4 PUSH2 0x7FD JUMP JUMPDEST PUSH2 0x14D JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xA7 PUSH2 0x19E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x96 SWAP2 SWAP1 PUSH2 0x827 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x96 JUMP JUMPDEST PUSH2 0xFE PUSH2 0xF9 CALLDATASIZE PUSH1 0x4 PUSH2 0x884 JUMP JUMPDEST PUSH2 0x1C8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x96 SWAP2 SWAP1 PUSH2 0x94E JUMP JUMPDEST PUSH2 0x11E PUSH2 0x119 CALLDATASIZE PUSH1 0x4 PUSH2 0x997 JUMP JUMPDEST PUSH2 0x1DE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x96 SWAP3 SWAP2 SWAP1 PUSH2 0xAE1 JUMP JUMPDEST PUSH2 0x13F PUSH2 0x13A CALLDATASIZE PUSH1 0x4 PUSH2 0xB25 JUMP JUMPDEST PUSH2 0x216 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x96 SWAP3 SWAP2 SWAP1 PUSH2 0xBE7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x99718B5 PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x17D JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x198 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1A6 PUSH2 0x7DF JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1D7 PUSH1 0x0 PUSH1 0x1 DUP1 PUSH2 0x2F2 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1FD PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xA1128101 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x235 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 PUSH1 0x44 ADD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x189ACDBD PUSH1 0xE3 SHL OR SWAP1 MSTORE SWAP1 POP PUSH2 0x2C8 DUP2 PUSH2 0x2B9 PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH2 0x477 JUMP JUMPDEST SWAP3 POP PUSH2 0x2D4 PUSH1 0x1 PUSH2 0x4AF JUMP JUMPDEST DUP3 MSTORE PUSH2 0x2E3 PUSH1 0x0 PUSH1 0x1 DUP2 PUSH2 0x2F2 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP SWAP1 SWAP4 SWAP1 SWAP3 POP SWAP1 POP JUMP JUMPDEST PUSH1 0x60 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH2 0x327 JUMPI PUSH1 0x40 MLOAD PUSH4 0x3A4013CD PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x331 DUP5 DUP5 PUSH2 0xC1F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x352 JUMPI PUSH2 0x352 PUSH2 0xB0F JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x3AB JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD DUP3 SWAP1 MSTORE SWAP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 DUP3 ADD MSTORE DUP3 MSTORE PUSH1 0x0 NOT SWAP1 SWAP3 ADD SWAP2 ADD DUP2 PUSH2 0x370 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP DUP4 JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT ISZERO PUSH2 0x46F JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 DUP5 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x3E7 JUMPI PUSH2 0x3E7 PUSH2 0x8D2 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x60 DUP3 ADD MSTORE PUSH32 0xA280EEC51AB8E1BC4B6B0C1B7F1BDE785761B787A49DB404E3E9338ED9B016EF PUSH1 0x80 SWAP1 SWAP2 ADD MSTORE DUP3 PUSH2 0x438 DUP8 DUP5 PUSH2 0xC1F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MLOAD DUP2 LT PUSH2 0x451 JUMPI PUSH2 0x451 PUSH2 0xC3F JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP DUP1 DUP1 PUSH2 0x467 SWAP1 PUSH2 0xC55 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x3B0 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x48B DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x568 JUMP JUMPDEST DUP3 MLOAD SWAP1 SWAP2 POP ISZERO PUSH2 0x198 JUMPI PUSH2 0x4A8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP4 PUSH2 0x60E JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x4D3 JUMPI PUSH2 0x4D3 PUSH2 0xB0F JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x4FC JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT ISZERO PUSH2 0x562 JUMPI DUP1 DUP3 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MLOAD DUP2 LT PUSH2 0x538 JUMPI PUSH2 0x538 PUSH2 0xC3F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE DUP1 PUSH2 0x55A DUP2 PUSH2 0xC55 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x502 JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH23 0x3D602D80600A3D3981F3363D3D373D3D3D363D73000000 DUP3 PUSH1 0x60 SHL PUSH1 0xE8 SHR OR PUSH1 0x0 MSTORE PUSH15 0x5AF43D82803E903D91602B57FD5BF3 DUP3 PUSH1 0x78 SHL OR PUSH1 0x20 MSTORE PUSH1 0x37 PUSH1 0x9 PUSH1 0x0 CREATE SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x609 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313136373A20637265617465206661696C656400000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1D7 DUP4 DUP4 PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x416464726573733A206C6F772D6C6576656C2063616C6C206661696C65640000 DUP2 MSTORE POP PUSH1 0x60 DUP3 SELFBALANCE LT ISZERO PUSH2 0x6C5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A20696E73756666696369656E742062616C616E636520666F PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x722063616C6C0000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x600 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP8 PUSH1 0x40 MLOAD PUSH2 0x6E1 SWAP2 SWAP1 PUSH2 0xC7B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x71E JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x723 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x734 DUP8 DUP4 DUP4 DUP8 PUSH2 0x741 JUMP JUMPDEST SWAP3 POP POP POP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x7B0 JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0x7A9 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0x7A9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x600 JUMP JUMPDEST POP DUP2 PUSH2 0x739 JUMP JUMPDEST PUSH2 0x739 DUP4 DUP4 DUP2 MLOAD ISZERO PUSH2 0x7C5 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x600 SWAP2 SWAP1 PUSH2 0xC97 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x80F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x1D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0x852 JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x830 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x609 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x562 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x897 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8A0 DUP4 PUSH2 0x85B JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x8BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8C8 DUP6 DUP3 DUP7 ADD PUSH2 0x872 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP2 MLOAD PUSH1 0x3 DUP2 LT PUSH2 0x90A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP4 MSTORE POP PUSH1 0x20 DUP2 DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP1 DUP4 ADD MLOAD DUP3 AND SWAP1 DUP5 ADD MSTORE PUSH1 0x60 DUP1 DUP4 ADD MLOAD SWAP1 SWAP2 AND SWAP1 DUP4 ADD MSTORE PUSH1 0x80 SWAP1 DUP2 ADD MLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x98B JUMPI PUSH2 0x97D DUP4 DUP6 MLOAD PUSH2 0x8E8 JUMP JUMPDEST SWAP4 DUP6 ADD SWAP4 SWAP3 POP PUSH1 0x1 ADD PUSH2 0x96A JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x9AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9B5 DUP5 PUSH2 0x85B JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH2 0x9CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x9E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9F4 DUP7 DUP3 DUP8 ADD PUSH2 0x872 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xA19 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xA01 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0xA3A DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x9FE JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x40 DUP1 DUP5 MSTORE DUP2 MLOAD SWAP1 DUP5 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x20 SWAP2 SWAP1 DUP3 ADD SWAP1 PUSH1 0x60 DUP7 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xA93 JUMPI DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0xA6E JUMP JUMPDEST POP POP DUP5 DUP4 ADD MLOAD DUP7 DUP3 SUB DUP8 DUP6 ADD MSTORE DUP1 MLOAD DUP1 DUP4 MSTORE SWAP1 DUP5 ADD SWAP3 POP PUSH1 0x0 SWAP2 DUP5 ADD SWAP1 JUMPDEST DUP1 DUP4 LT ISZERO PUSH2 0xAD6 JUMPI PUSH2 0xAC4 DUP3 DUP6 MLOAD PUSH2 0x8E8 JUMP JUMPDEST SWAP2 POP DUP5 DUP5 ADD SWAP4 POP PUSH1 0x1 DUP4 ADD SWAP3 POP PUSH2 0xAB1 JUMP JUMPDEST POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 PUSH2 0xAF4 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0xA22 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0xB06 DUP2 DUP6 PUSH2 0xA4E JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xB38 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB41 DUP4 PUSH2 0x85B JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xB5E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xB72 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0xB84 JUMPI PUSH2 0xB84 PUSH2 0xB0F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0xBAC JUMPI PUSH2 0xBAC PUSH2 0xB0F JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0xBC5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0x739 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0xA4E JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND DUP3 DUP3 AND SUB SWAP1 DUP1 DUP3 GT ISZERO PUSH2 0x4A8 JUMPI PUSH2 0x4A8 PUSH2 0xC09 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND DUP2 DUP2 SUB PUSH2 0xC71 JUMPI PUSH2 0xC71 PUSH2 0xC09 JUMP JUMPDEST PUSH1 0x1 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0xC8D DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x9FE JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x1D7 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0xA22 JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"749:1127:27:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2112:293:45;;;;;;:::i;:::-;;:::i;:::-;;;470:14:50;;463:22;445:41;;433:2;418:18;2112:293:45;;;;;;;;631:98:49;;;:::i;:::-;;;;;;;:::i;2444:94:45:-;;;-1:-1:-1;;;;;2517:14:45;1167:55:50;1149:74;;1137:2;1122:18;2444:94:45;1003:226:50;1575:299:27;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1639:265:45:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;998:538:27:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;2112:293:45:-;2198:4;-1:-1:-1;;;;;;2233:46:45;;-1:-1:-1;;;2233:46:45;;:112;;-1:-1:-1;;;;;;;2295:50:45;;-1:-1:-1;;;2295:50:45;2233:112;:165;;;-1:-1:-1;;;;;;;;;;937:40:23;;;2361:37:45;2214:184;2112:293;-1:-1:-1;;2112:293:45:o;631:98:49:-;679:15;;:::i;:::-;-1:-1:-1;706:16:49;;;;;;;;714:1;706:16;;717:1;706:16;;;;-1:-1:-1;706:16:49;;;;;;;;631:98::o;1575:299:27:-;1697:56;1805:62;1821:1;881;;1805:15;:62::i;:::-;1791:76;1575:299;-1:-1:-1;;;1575:299:27:o;1639:265:45:-;1780:12;1794:24;-1:-1:-1;;;;;;;;;;;;;;;;;;;1794:24:45;1875:22;;-1:-1:-1;;;1875:22:45;;;;;;;;;;;998:538:27;1095:14;1111:42;-1:-1:-1;;;;;;;;;;;;;;;;;;;1111:42:27;1189:66;;-1:-1:-1;;;;;1167:55:50;;1189:66:27;;;1149:74:50;1165:21:27;;1122:18:50;;1189:66:27;;;-1:-1:-1;;1189:66:27;;;;;;;;;;;;;;;;-1:-1:-1;;;1189:66:27;;;;-1:-1:-1;1274:45:27;1189:66;1274:16;2517:14:45;;2444:94;1274:16:27;-1:-1:-1;;;;;1274:35:27;;;:45::i;:::-;1265:54;-1:-1:-1;1357:23:27;881:1;1357:11;:23::i;:::-;1329:51;;1422:107;1329:25;881:1;1329:25;1422:15;:107::i;:::-;1390:29;;;:139;-1:-1:-1;998:538:27;;1390:17;;-1:-1:-1;998:538:27;-1:-1:-1;998:538:27:o;580:666:30:-;699:56;780:8;-1:-1:-1;;;;;767:21:30;:10;-1:-1:-1;;;;;767:21:30;;763:53;;;797:19;;-1:-1:-1;;;797:19:30;;;;;;;;;;;763:53;879:21;890:10;879:8;:21;:::i;:::-;-1:-1:-1;;;;;837:64:30;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;837:64:30;;-1:-1:-1;;837:64:30;;;;;;;;;;;-1:-1:-1;823:78:30;-1:-1:-1;925:10:30;908:336;941:8;-1:-1:-1;;;;;937:12:30;:1;-1:-1:-1;;;;;937:12:30;;908:336;;;996:241;;;;;;;;1057:2;996:241;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;996:241:30;;;;;;;;;;;;-1:-1:-1;996:241:30;;;;1198:28;996:241;;;;;966:11;978:14;982:10;1088:1;978:14;:::i;:::-;-1:-1:-1;;;;;966:27:30;;;;;;;;;:::i;:::-;;;;;;:271;;;;951:3;;;;;:::i;:::-;;;;908:336;;;;580:666;;;;;:::o;2237:292:47:-;2349:20;2396:14;:6;-1:-1:-1;;;;;2396:12:47;;:14::i;:::-;2424:20;;2381:29;;-1:-1:-1;2424:24:47;2420:103;;2464:48;-1:-1:-1;;;;;2464:25:47;;2497:13;2464:25;:48::i;:::-;;2237:292;;;;:::o;1529:191:30:-;1577:24;1633:3;-1:-1:-1;;;;;1619:18:30;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1619:18:30;;1609:28;;1649:9;1644:74;1668:3;-1:-1:-1;;;;;1664:7:30;:1;-1:-1:-1;;;;;1664:7:30;;1644:74;;;1709:1;1688:7;1696:1;-1:-1:-1;;;;;1688:10:30;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1688:23:30;;;:10;;;;;;;;;;;:23;1673:3;;;;:::i;:::-;;;;1644:74;;;;1529:191;;;:::o;973:759:14:-;1030:16;1362:48;1344:14;1338:4;1334:25;1328:4;1324:36;1321:90;1315:4;1308:104;1569:32;1552:14;1546:4;1542:25;1539:63;1533:4;1526:77;1644:4;1638;1635:1;1628:21;1616:33;-1:-1:-1;;;;;;1676:22:14;;1668:57;;;;-1:-1:-1;;;1668:57:14;;9073:2:50;1668:57:14;;;9055:21:50;9112:2;9092:18;;;9085:30;9151:24;9131:18;;;9124:52;9193:18;;1668:57:14;;;;;;;;;973:759;;;:::o;3701:185:19:-;3776:12;3807:72;3829:6;3837:4;3843:1;3807:72;;;;;;;;;;;;;;;;;5330:12;5387:5;5362:21;:30;;5354:81;;;;-1:-1:-1;;;5354:81:19;;9424:2:50;5354:81:19;;;9406:21:50;9463:2;9443:18;;;9436:30;9502:34;9482:18;;;9475:62;9573:8;9553:18;;;9546:36;9599:19;;5354:81:19;9222:402:50;5354:81:19;5446:12;5460:23;5487:6;-1:-1:-1;;;;;5487:11:19;5506:5;5513:4;5487:31;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5445:73;;;;5535:69;5562:6;5570:7;5579:10;5591:12;5535:26;:69::i;:::-;5528:76;;;;5165:446;;;;;;;:::o;7671:628::-;7851:12;7879:7;7875:418;;;7906:10;:17;7927:1;7906:22;7902:286;;-1:-1:-1;;;;;1702:19:19;;;8113:60;;;;-1:-1:-1;;;8113:60:19;;10123:2:50;8113:60:19;;;10105:21:50;10162:2;10142:18;;;10135:30;10201:31;10181:18;;;10174:59;10250:18;;8113:60:19;9921:353:50;8113:60:19;-1:-1:-1;8208:10:19;8201:17;;7875:418;8249:33;8257:10;8269:12;8980:17;;:21;8976:379;;9208:10;9202:17;9264:15;9251:10;9247:2;9243:19;9236:44;8976:379;9331:12;9324:20;;-1:-1:-1;;;9324:20:19;;;;;;;;:::i;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:286:50:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:50;;209:43;;199:71;;266:1;263;256:12;497:501;673:2;658:18;;662:9;753:6;631:4;787:205;801:4;798:1;795:11;787:205;;;864:13;;879:4;860:24;848:37;;908:4;932:12;;;;967:15;;;;821:1;814:9;787:205;;;791:3;;;497:501;;;;:::o;1234:196::-;1302:20;;-1:-1:-1;;;;;1351:54:50;;1341:65;;1331:93;;1420:1;1417;1410:12;1435:160;1500:5;1545:2;1536:6;1531:3;1527:16;1523:25;1520:45;;;1561:1;1558;1551:12;1600:440;1700:6;1708;1761:2;1749:9;1740:7;1736:23;1732:32;1729:52;;;1777:1;1774;1767:12;1729:52;1800:29;1819:9;1800:29;:::i;:::-;1790:39;;1880:2;1869:9;1865:18;1852:32;1907:18;1899:6;1896:30;1893:50;;;1939:1;1936;1929:12;1893:50;1962:72;2026:7;2017:6;2006:9;2002:22;1962:72;:::i;:::-;1952:82;;;1600:440;;;;;:::o;2045:127::-;2106:10;2101:3;2097:20;2094:1;2087:31;2137:4;2134:1;2127:15;2161:4;2158:1;2151:15;2177:696;2252:10;2293:6;2287:13;2326:1;2322:2;2319:9;2309:140;;2371:10;2366:3;2362:20;2359:1;2352:31;2406:4;2403:1;2396:15;2434:4;2431:1;2424:15;2309:140;2458:15;;-1:-1:-1;2520:4:50;2508:17;;;2502:24;-1:-1:-1;;;;;2619:21:50;;;2603:14;;;2596:45;;;;2695:4;2683:17;;;2677:24;2673:33;;2657:14;;;2650:57;2761:4;2749:17;;;2743:24;2739:33;;;2723:14;;;2716:57;2823:4;2811:17;;;2805:24;2789:14;;;2782:48;2862:4;2853:14;;2177:696::o;2878:728::-;3127:2;3179:21;;;3249:13;;3152:18;;;3271:22;;;3098:4;;3127:2;3350:15;;;;3324:2;3309:18;;;3098:4;3393:187;3407:6;3404:1;3401:13;3393:187;;;3463:69;3528:3;3519:6;3513:13;3463:69;:::i;:::-;3555:15;;;;3456:76;-1:-1:-1;3429:1:50;3422:9;3393:187;;;-1:-1:-1;3597:3:50;;2878:728;-1:-1:-1;;;;;;2878:728:50:o;3611:600::-;3719:6;3727;3735;3788:2;3776:9;3767:7;3763:23;3759:32;3756:52;;;3804:1;3801;3794:12;3756:52;3827:29;3846:9;3827:29;:::i;:::-;3817:39;;3906:2;3895:9;3891:18;3878:32;3950:6;3943:5;3939:18;3932:5;3929:29;3919:57;;3972:1;3969;3962:12;3919:57;3995:5;-1:-1:-1;4051:2:50;4036:18;;4023:32;4078:18;4067:30;;4064:50;;;4110:1;4107;4100:12;4064:50;4133:72;4197:7;4188:6;4177:9;4173:22;4133:72;:::i;:::-;4123:82;;;3611:600;;;;;:::o;4216:250::-;4301:1;4311:113;4325:6;4322:1;4319:13;4311:113;;;4401:11;;;4395:18;4382:11;;;4375:39;4347:2;4340:10;4311:113;;;-1:-1:-1;;4458:1:50;4440:16;;4433:27;4216:250::o;4471:270::-;4512:3;4550:5;4544:12;4577:6;4572:3;4565:19;4593:76;4662:6;4655:4;4650:3;4646:14;4639:4;4632:5;4628:16;4593:76;:::i;:::-;4723:2;4702:15;-1:-1:-1;;4698:29:50;4689:39;;;;4730:4;4685:50;;4471:270;-1:-1:-1;;4471:270:50:o;4746:1162::-;4879:12;;4845:4;4900:17;;;4966:19;;4836:14;;;4994:20;;;4806:3;;5063:4;;5090:21;;;;5041:2;5032:12;;;4806:3;5139:224;5153:6;5150:1;5147:13;5139:224;;;5220:13;;-1:-1:-1;;;;;5216:62:50;5202:77;;5338:15;;;;5301:14;;;;5175:1;5168:9;5139:224;;;-1:-1:-1;;5400:14:50;;;5394:21;5445:15;;;5431:12;;;5424:37;5513:21;;5543:23;;;5623;;;;-1:-1:-1;5666:1:50;;5584:14;;;5676:205;5692:8;5687:3;5684:17;5676:205;;;5756:73;5823:5;5812:8;5806:15;5756:73;:::i;:::-;5747:82;;5868:2;5858:8;5854:17;5842:29;;5720:1;5715:3;5711:11;5704:18;;5676:205;;;-1:-1:-1;5897:5:50;4746:1162;-1:-1:-1;;;;;;4746:1162:50:o;5913:448::-;6158:2;6147:9;6140:21;6121:4;6184:44;6224:2;6213:9;6209:18;6201:6;6184:44;:::i;:::-;6276:9;6268:6;6264:22;6259:2;6248:9;6244:18;6237:50;6304:51;6348:6;6340;6304:51;:::i;:::-;6296:59;5913:448;-1:-1:-1;;;;;5913:448:50:o;6366:127::-;6427:10;6422:3;6418:20;6415:1;6408:31;6458:4;6455:1;6448:15;6482:4;6479:1;6472:15;6498:995;6575:6;6583;6636:2;6624:9;6615:7;6611:23;6607:32;6604:52;;;6652:1;6649;6642:12;6604:52;6675:29;6694:9;6675:29;:::i;:::-;6665:39;;6755:2;6744:9;6740:18;6727:32;6778:18;6819:2;6811:6;6808:14;6805:34;;;6835:1;6832;6825:12;6805:34;6873:6;6862:9;6858:22;6848:32;;6918:7;6911:4;6907:2;6903:13;6899:27;6889:55;;6940:1;6937;6930:12;6889:55;6976:2;6963:16;6998:2;6994;6991:10;6988:36;;;7004:18;;:::i;:::-;7079:2;7073:9;7047:2;7133:13;;-1:-1:-1;;7129:22:50;;;7153:2;7125:31;7121:40;7109:53;;;7177:18;;;7197:22;;;7174:46;7171:72;;;7223:18;;:::i;:::-;7263:10;7259:2;7252:22;7298:2;7290:6;7283:18;7338:7;7333:2;7328;7324;7320:11;7316:20;7313:33;7310:53;;;7359:1;7356;7349:12;7310:53;7415:2;7410;7406;7402:11;7397:2;7389:6;7385:15;7372:46;7460:1;7455:2;7450;7442:6;7438:15;7434:24;7427:35;7481:6;7471:16;;;;;;;6498:995;;;;;:::o;7498:408::-;-1:-1:-1;;;;;7729:6:50;7725:55;7714:9;7707:74;7817:2;7812;7801:9;7797:18;7790:30;7688:4;7837:63;7896:2;7885:9;7881:18;7873:6;7837:63;:::i;8155:127::-;8216:10;8211:3;8207:20;8204:1;8197:31;8247:4;8244:1;8237:15;8271:4;8268:1;8261:15;8287:208;-1:-1:-1;;;;;8431:10:50;;;8419;;;8415:27;;8454:12;;;8451:38;;;8469:18;;:::i;8500:127::-;8561:10;8556:3;8552:20;8549:1;8542:31;8592:4;8589:1;8582:15;8616:4;8613:1;8606:15;8632:234;8671:3;-1:-1:-1;;;;;8776:2:50;8769:5;8765:14;8803:2;8794:7;8791:15;8788:41;;8809:18;;:::i;:::-;8858:1;8845:15;;8632:234;-1:-1:-1;;;8632:234:50:o;9629:287::-;9758:3;9796:6;9790:13;9812:66;9871:6;9866:3;9859:4;9851:6;9847:17;9812:66;:::i;:::-;9894:16;;;;;9629:287;-1:-1:-1;;9629:287:50:o;10279:219::-;10428:2;10417:9;10410:21;10391:4;10448:44;10488:2;10477:9;10473:18;10465:6;10448:44;:::i"},"gasEstimates":{"creation":{"codeDepositCost":"651000","executionCost":"infinite","totalCost":"infinite"},"external":{"implementation()":"infinite","prepareInstallation(address,bytes)":"infinite","prepareUninstallation(address,(address,address[],bytes))":"infinite","prepareUpdate(address,uint16,(address,address[],bytes))":"624","protocolVersion()":"infinite","supportsInterface(bytes4)":"482"}},"methodIdentifiers":{"implementation()":"5c60da1b","prepareInstallation(address,bytes)":"f10832f1","prepareUninstallation(address,(address,address[],bytes))":"9cb0a124","prepareUpdate(address,uint16,(address,address[],bytes))":"a8a9c29e","protocolVersion()":"2ae9c600","supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ConflictingValues\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NonUpgradeablePlugin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_dao\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"prepareInstallation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"plugin\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address[]\",\"name\":\"helpers\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"enum PermissionLib.Operation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"condition\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PermissionLib.MultiTargetPermission[]\",\"name\":\"permissions\",\"type\":\"tuple[]\"}],\"internalType\":\"struct IPluginSetup.PreparedSetupData\",\"name\":\"preparedSetupData\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_dao\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"plugin\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"currentHelpers\",\"type\":\"address[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IPluginSetup.SetupPayload\",\"name\":\"_payload\",\"type\":\"tuple\"}],\"name\":\"prepareUninstallation\",\"outputs\":[{\"components\":[{\"internalType\":\"enum PermissionLib.Operation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"condition\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PermissionLib.MultiTargetPermission[]\",\"name\":\"permissions\",\"type\":\"tuple[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_dao\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"_fromBuild\",\"type\":\"uint16\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"plugin\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"currentHelpers\",\"type\":\"address[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IPluginSetup.SetupPayload\",\"name\":\"_payload\",\"type\":\"tuple\"}],\"name\":\"prepareUpdate\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address[]\",\"name\":\"helpers\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"enum PermissionLib.Operation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"condition\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PermissionLib.MultiTargetPermission[]\",\"name\":\"permissions\",\"type\":\"tuple[]\"}],\"internalType\":\"struct IPluginSetup.PreparedSetupData\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"protocolVersion\",\"outputs\":[{\"internalType\":\"uint8[3]\",\"name\":\"\",\"type\":\"uint8[3]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"DO NOT USE IN PRODUCTION!\",\"kind\":\"dev\",\"methods\":{\"implementation()\":{\"details\":\"The implementation can be instantiated via the `new` keyword, cloned via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)), or proxied via the UUPS proxy pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\",\"returns\":{\"_0\":\"The address of the plugin implementation contract.\"}},\"prepareInstallation(address,bytes)\":{\"params\":{\"_dao\":\"The address of the installing DAO.\",\"_data\":\"The bytes-encoded data containing the input parameters for the installation as specified in the plugin's build metadata JSON file.\"},\"returns\":{\"plugin\":\"The address of the `Plugin` contract being prepared for installation.\",\"preparedSetupData\":\"The deployed plugin's relevant data which consists of helpers and permissions.\"}},\"prepareUninstallation(address,(address,address[],bytes))\":{\"params\":{\"_dao\":\"The address of the uninstalling DAO.\",\"_payload\":\"The relevant data necessary for the `prepareUninstallation`. See above.\"},\"returns\":{\"permissions\":\"The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the uninstalling DAO.\"}},\"prepareUpdate(address,uint16,(address,address[],bytes))\":{\"details\":\"Since the underlying plugin is non-upgradeable, this non-virtual function must always revert.\",\"params\":{\"_dao\":\"The address of the updating DAO.\",\"_fromBuild\":\"The build number of the plugin to update from.\",\"_payload\":\"The relevant data necessary for the `prepareUpdate`. See above.\"},\"returns\":{\"_0\":\"The initialization data to be passed to upgradeable contracts when the update is applied in the `PluginSetupProcessor`.\",\"_1\":\"The deployed plugin's relevant data which consists of helpers and permissions.\"}},\"protocolVersion()\":{\"details\":\"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\",\"returns\":{\"_0\":\"Returns the semantic Aragon OSx protocol version number.\"}},\"supportsInterface(bytes4)\":{\"params\":{\"_interfaceId\":\"The ID of the interface.\"},\"returns\":{\"_0\":\"Returns `true` if the interface is supported.\"}}},\"version\":1},\"userdoc\":{\"errors\":{\"NonUpgradeablePlugin()\":[{\"notice\":\"Thrown when attempting to prepare an update on a non-upgradeable plugin.\"}]},\"kind\":\"user\",\"methods\":{\"implementation()\":{\"notice\":\"Returns the plugin implementation address.\"},\"prepareInstallation(address,bytes)\":{\"notice\":\"Prepares the installation of a plugin.\"},\"prepareUninstallation(address,(address,address[],bytes))\":{\"notice\":\"Prepares the uninstallation of a plugin.\"},\"prepareUpdate(address,uint16,(address,address[],bytes))\":{\"notice\":\"Prepares the update of a plugin.\"},\"protocolVersion()\":{\"notice\":\"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Checks if this or the parent contract supports an interface by its ID.\"}},\"notice\":\"A mock plugin setup of a cloneable plugin to be deployed via the minimal proxy pattern. v1.1 (Release 1, Build 1)\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/mocks/plugin/PluginCloneableSetupMock.sol\":\"PluginCloneableSetupMockBuild1\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n function __Context_init() internal onlyInitializing {\\n }\\n\\n function __Context_init_unchained() internal onlyInitializing {\\n }\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n function _contextSuffixLength() internal view virtual returns (uint256) {\\n return 0;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x75097e35253e7fb282ee4d7f27a80eaacfa759923185bf17302a89cbc059c5ef\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165Upgradeable.sol\\\";\\nimport {Initializable} from \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165Upgradeable is Initializable, IERC165Upgradeable {\\n function __ERC165_init() internal onlyInitializing {\\n }\\n\\n function __ERC165_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165Upgradeable).interfaceId;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0xd90d7723512df65ae417adaf0801042940f0dabd60039ceeaffe34aa5b238da1\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165Upgradeable {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/IERC1967.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (interfaces/IERC1967.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\\n *\\n * _Available since v4.8.3._\\n */\\ninterface IERC1967 {\\n /**\\n * @dev Emitted when the implementation is upgraded.\\n */\\n event Upgraded(address indexed implementation);\\n\\n /**\\n * @dev Emitted when the admin account has changed.\\n */\\n event AdminChanged(address previousAdmin, address newAdmin);\\n\\n /**\\n * @dev Emitted when the beacon is changed.\\n */\\n event BeaconUpgraded(address indexed beacon);\\n}\\n\",\"keccak256\":\"0x3cbef5ebc24b415252e2f8c0c9254555d30d9f085603b4b80d9b5ed20ab87e90\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822Proxiable {\\n /**\\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n * address.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy.\\n */\\n function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/Clones.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/Clones.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev https://eips.ethereum.org/EIPS/eip-1167[EIP 1167] is a standard for\\n * deploying minimal proxy contracts, also known as \\\"clones\\\".\\n *\\n * > To simply and cheaply clone contract functionality in an immutable way, this standard specifies\\n * > a minimal bytecode implementation that delegates all calls to a known, fixed address.\\n *\\n * The library includes functions to deploy a proxy using either `create` (traditional deployment) or `create2`\\n * (salted deterministic deployment). It also includes functions to predict the addresses of clones deployed using the\\n * deterministic method.\\n *\\n * _Available since v3.4._\\n */\\nlibrary Clones {\\n /**\\n * @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`.\\n *\\n * This function uses the create opcode, which should never revert.\\n */\\n function clone(address implementation) internal returns (address instance) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n // Cleans the upper 96 bits of the `implementation` word, then packs the first 3 bytes\\n // of the `implementation` address with the bytecode before the address.\\n mstore(0x00, or(shr(0xe8, shl(0x60, implementation)), 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000))\\n // Packs the remaining 17 bytes of `implementation` with the bytecode after the address.\\n mstore(0x20, or(shl(0x78, implementation), 0x5af43d82803e903d91602b57fd5bf3))\\n instance := create(0, 0x09, 0x37)\\n }\\n require(instance != address(0), \\\"ERC1167: create failed\\\");\\n }\\n\\n /**\\n * @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`.\\n *\\n * This function uses the create2 opcode and a `salt` to deterministically deploy\\n * the clone. Using the same `implementation` and `salt` multiple time will revert, since\\n * the clones cannot be deployed twice at the same address.\\n */\\n function cloneDeterministic(address implementation, bytes32 salt) internal returns (address instance) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n // Cleans the upper 96 bits of the `implementation` word, then packs the first 3 bytes\\n // of the `implementation` address with the bytecode before the address.\\n mstore(0x00, or(shr(0xe8, shl(0x60, implementation)), 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000))\\n // Packs the remaining 17 bytes of `implementation` with the bytecode after the address.\\n mstore(0x20, or(shl(0x78, implementation), 0x5af43d82803e903d91602b57fd5bf3))\\n instance := create2(0, 0x09, 0x37, salt)\\n }\\n require(instance != address(0), \\\"ERC1167: create2 failed\\\");\\n }\\n\\n /**\\n * @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}.\\n */\\n function predictDeterministicAddress(\\n address implementation,\\n bytes32 salt,\\n address deployer\\n ) internal pure returns (address predicted) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n let ptr := mload(0x40)\\n mstore(add(ptr, 0x38), deployer)\\n mstore(add(ptr, 0x24), 0x5af43d82803e903d91602b57fd5bf3ff)\\n mstore(add(ptr, 0x14), implementation)\\n mstore(ptr, 0x3d602d80600a3d3981f3363d3d373d3d3d363d73)\\n mstore(add(ptr, 0x58), salt)\\n mstore(add(ptr, 0x78), keccak256(add(ptr, 0x0c), 0x37))\\n predicted := keccak256(add(ptr, 0x43), 0x55)\\n }\\n }\\n\\n /**\\n * @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}.\\n */\\n function predictDeterministicAddress(\\n address implementation,\\n bytes32 salt\\n ) internal view returns (address predicted) {\\n return predictDeterministicAddress(implementation, salt, address(this));\\n }\\n}\\n\",\"keccak256\":\"0x01f055f5c26ba25d7f83e9aa9ba877fbea4d0bf22227de046ea67494bc932999\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (proxy/ERC1967/ERC1967Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../Proxy.sol\\\";\\nimport \\\"./ERC1967Upgrade.sol\\\";\\n\\n/**\\n * @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an\\n * implementation address that can be changed. This address is stored in storage in the location specified by\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the\\n * implementation behind the proxy.\\n */\\ncontract ERC1967Proxy is Proxy, ERC1967Upgrade {\\n /**\\n * @dev Initializes the upgradeable proxy with an initial implementation specified by `_logic`.\\n *\\n * If `_data` is nonempty, it's used as data in a delegate call to `_logic`. This will typically be an encoded\\n * function call, and allows initializing the storage of the proxy like a Solidity constructor.\\n */\\n constructor(address _logic, bytes memory _data) payable {\\n _upgradeToAndCall(_logic, _data, false);\\n }\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _implementation() internal view virtual override returns (address impl) {\\n return ERC1967Upgrade._getImplementation();\\n }\\n}\\n\",\"keccak256\":\"0xa2b22da3032e50b55f95ec1d13336102d675f341167aa76db571ef7f8bb7975d\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../beacon/IBeacon.sol\\\";\\nimport \\\"../../interfaces/IERC1967.sol\\\";\\nimport \\\"../../interfaces/draft-IERC1822.sol\\\";\\nimport \\\"../../utils/Address.sol\\\";\\nimport \\\"../../utils/StorageSlot.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n */\\nabstract contract ERC1967Upgrade is IERC1967 {\\n // This is the keccak-256 hash of \\\"eip1967.proxy.rollback\\\" subtracted by 1\\n bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n /**\\n * @dev Storage slot with the address of the current implementation.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _getImplementation() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 implementation slot.\\n */\\n function _setImplementation(address newImplementation) private {\\n require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n }\\n\\n /**\\n * @dev Perform implementation upgrade\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeTo(address newImplementation) internal {\\n _setImplementation(newImplementation);\\n emit Upgraded(newImplementation);\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCall(address newImplementation, bytes memory data, bool forceCall) internal {\\n _upgradeTo(newImplementation);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(newImplementation, data);\\n }\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCallUUPS(address newImplementation, bytes memory data, bool forceCall) internal {\\n // Upgrades from old implementations will perform a rollback test. This test requires the new\\n // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n // this special case will break upgrade paths from old UUPS implementation to new ones.\\n if (StorageSlot.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n _setImplementation(newImplementation);\\n } else {\\n try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n require(slot == _IMPLEMENTATION_SLOT, \\\"ERC1967Upgrade: unsupported proxiableUUID\\\");\\n } catch {\\n revert(\\\"ERC1967Upgrade: new implementation is not UUPS\\\");\\n }\\n _upgradeToAndCall(newImplementation, data, forceCall);\\n }\\n }\\n\\n /**\\n * @dev Storage slot with the admin of the contract.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _getAdmin() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_ADMIN_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 admin slot.\\n */\\n function _setAdmin(address newAdmin) private {\\n require(newAdmin != address(0), \\\"ERC1967: new admin is the zero address\\\");\\n StorageSlot.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n */\\n function _changeAdmin(address newAdmin) internal {\\n emit AdminChanged(_getAdmin(), newAdmin);\\n _setAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\\n */\\n bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n /**\\n * @dev Returns the current beacon.\\n */\\n function _getBeacon() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_BEACON_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new beacon in the EIP1967 beacon slot.\\n */\\n function _setBeacon(address newBeacon) private {\\n require(Address.isContract(newBeacon), \\\"ERC1967: new beacon is not a contract\\\");\\n require(\\n Address.isContract(IBeacon(newBeacon).implementation()),\\n \\\"ERC1967: beacon implementation is not a contract\\\"\\n );\\n StorageSlot.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n }\\n\\n /**\\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n *\\n * Emits a {BeaconUpgraded} event.\\n */\\n function _upgradeBeaconToAndCall(address newBeacon, bytes memory data, bool forceCall) internal {\\n _setBeacon(newBeacon);\\n emit BeaconUpgraded(newBeacon);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x3b21ae06bf5957f73fa16754b0669c77b7abd8ba6c072d35c3281d446fdb86c2\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (proxy/Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\\n * be specified by overriding the virtual {_implementation} function.\\n *\\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\\n * different contract through the {_delegate} function.\\n *\\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\\n */\\nabstract contract Proxy {\\n /**\\n * @dev Delegates the current call to `implementation`.\\n *\\n * This function does not return to its internal call site, it will return directly to the external caller.\\n */\\n function _delegate(address implementation) internal virtual {\\n assembly {\\n // Copy msg.data. We take full control of memory in this inline assembly\\n // block because it will not return to Solidity code. We overwrite the\\n // Solidity scratch pad at memory position 0.\\n calldatacopy(0, 0, calldatasize())\\n\\n // Call the implementation.\\n // out and outsize are 0 because we don't know the size yet.\\n let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)\\n\\n // Copy the returned data.\\n returndatacopy(0, 0, returndatasize())\\n\\n switch result\\n // delegatecall returns 0 on error.\\n case 0 {\\n revert(0, returndatasize())\\n }\\n default {\\n return(0, returndatasize())\\n }\\n }\\n }\\n\\n /**\\n * @dev This is a virtual function that should be overridden so it returns the address to which the fallback function\\n * and {_fallback} should delegate.\\n */\\n function _implementation() internal view virtual returns (address);\\n\\n /**\\n * @dev Delegates the current call to the address returned by `_implementation()`.\\n *\\n * This function does not return to its internal call site, it will return directly to the external caller.\\n */\\n function _fallback() internal virtual {\\n _beforeFallback();\\n _delegate(_implementation());\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\\n * function in the contract matches the call data.\\n */\\n fallback() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data\\n * is empty.\\n */\\n receive() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`\\n * call, or as part of the Solidity `fallback` or `receive` functions.\\n *\\n * If overridden should call `super._beforeFallback()`.\\n */\\n function _beforeFallback() internal virtual {}\\n}\\n\",\"keccak256\":\"0xc130fe33f1b2132158531a87734153293f6d07bc263ff4ac90e85da9c82c0e27\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeacon {\\n /**\\n * @dev Must return an address that can be used as a delegate call target.\\n *\\n * {BeaconProxy} will check that this address is a contract.\\n */\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/StorageSlot.sol)\\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```solidity\\n * contract ERC1967 {\\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n * function _getImplementation() internal view returns (address) {\\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n * }\\n *\\n * function _setImplementation(address newImplementation) internal {\\n * require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n * }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._\\n * _Available since v4.9 for `string`, `bytes`._\\n */\\nlibrary StorageSlot {\\n struct AddressSlot {\\n address value;\\n }\\n\\n struct BooleanSlot {\\n bool value;\\n }\\n\\n struct Bytes32Slot {\\n bytes32 value;\\n }\\n\\n struct Uint256Slot {\\n uint256 value;\\n }\\n\\n struct StringSlot {\\n string value;\\n }\\n\\n struct BytesSlot {\\n bytes value;\\n }\\n\\n /**\\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n */\\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n */\\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n */\\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n */\\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` with member `value` located at `slot`.\\n */\\n function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\\n */\\n function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` with member `value` located at `slot`.\\n */\\n function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\\n */\\n function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n}\\n\",\"keccak256\":\"0xf09e68aa0dc6722a25bc46490e8d48ed864466d17313b8a0b254c36b54e49899\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165 is IERC165 {\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165).interfaceId;\\n }\\n}\\n\",\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"src/dao/IDAO.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IDAO\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for DAOs within the Aragon App DAO framework.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IDAO {\\n /// @notice The action struct to be consumed by the DAO's `execute` function resulting in an external call.\\n /// @param to The address to call.\\n /// @param value The native token value to be sent with the call.\\n /// @param data The bytes-encoded function selector and calldata for the call.\\n struct Action {\\n address to;\\n uint256 value;\\n bytes data;\\n }\\n\\n /// @notice Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\\n /// @param _where The address of the contract.\\n /// @param _who The address of a EOA or contract to give the permissions.\\n /// @param _permissionId The permission identifier.\\n /// @param _data The optional data passed to the `PermissionCondition` registered.\\n /// @return Returns true if the address has permission, false if not.\\n function hasPermission(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes memory _data\\n ) external view returns (bool);\\n\\n /// @notice Updates the DAO metadata (e.g., an IPFS hash).\\n /// @param _metadata The IPFS hash of the new metadata object.\\n function setMetadata(bytes calldata _metadata) external;\\n\\n /// @notice Emitted when the DAO metadata is updated.\\n /// @param metadata The IPFS hash of the new metadata object.\\n event MetadataSet(bytes metadata);\\n\\n /// @notice Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted.\\n /// @param _callId The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce.\\n /// @param _actions The array of actions.\\n /// @param _allowFailureMap A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @return The array of results obtained from the executed actions in `bytes`.\\n /// @return The resulting failure map containing the actions have actually failed.\\n function execute(\\n bytes32 _callId,\\n Action[] memory _actions,\\n uint256 _allowFailureMap\\n ) external returns (bytes[] memory, uint256);\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param actor The address of the caller.\\n /// @param callId The ID of the call.\\n /// @param actions The array of actions executed.\\n /// @param allowFailureMap The allow failure map encoding which actions are allowed to fail.\\n /// @param failureMap The failure map encoding which actions have failed.\\n /// @param execResults The array with the results of the executed actions.\\n /// @dev The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce.\\n event Executed(\\n address indexed actor,\\n bytes32 callId,\\n Action[] actions,\\n uint256 allowFailureMap,\\n uint256 failureMap,\\n bytes[] execResults\\n );\\n\\n /// @notice Emitted when a standard callback is registered.\\n /// @param interfaceId The ID of the interface.\\n /// @param callbackSelector The selector of the callback function.\\n /// @param magicNumber The magic number to be registered for the callback function selector.\\n event StandardCallbackRegistered(\\n bytes4 interfaceId,\\n bytes4 callbackSelector,\\n bytes4 magicNumber\\n );\\n\\n /// @notice Deposits (native) tokens to the DAO contract with a reference string.\\n /// @param _token The address of the token or address(0) in case of the native token.\\n /// @param _amount The amount of tokens to deposit.\\n /// @param _reference The reference describing the deposit reason.\\n function deposit(address _token, uint256 _amount, string calldata _reference) external payable;\\n\\n /// @notice Emitted when a token deposit has been made to the DAO.\\n /// @param sender The address of the sender.\\n /// @param token The address of the deposited token.\\n /// @param amount The amount of tokens deposited.\\n /// @param _reference The reference describing the deposit reason.\\n event Deposited(\\n address indexed sender,\\n address indexed token,\\n uint256 amount,\\n string _reference\\n );\\n\\n /// @notice Emitted when a native token deposit has been made to the DAO.\\n /// @dev This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).\\n /// @param sender The address of the sender.\\n /// @param amount The amount of native tokens deposited.\\n event NativeTokenDeposited(address sender, uint256 amount);\\n\\n /// @notice Setter for the trusted forwarder verifying the meta transaction.\\n /// @param _trustedForwarder The trusted forwarder address.\\n function setTrustedForwarder(address _trustedForwarder) external;\\n\\n /// @notice Getter for the trusted forwarder verifying the meta transaction.\\n /// @return The trusted forwarder address.\\n function getTrustedForwarder() external view returns (address);\\n\\n /// @notice Emitted when a new TrustedForwarder is set on the DAO.\\n /// @param forwarder the new forwarder address.\\n event TrustedForwarderSet(address forwarder);\\n\\n /// @notice Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\\n /// @param _hash The hash of the data to be signed.\\n /// @param _signature The signature byte array associated with `_hash`.\\n /// @return Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not.\\n function isValidSignature(bytes32 _hash, bytes memory _signature) external returns (bytes4);\\n\\n /// @notice Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\\n /// @param _interfaceId The ID of the interface.\\n /// @param _callbackSelector The selector of the callback function.\\n /// @param _magicNumber The magic number to be registered for the function signature.\\n function registerStandardCallback(\\n bytes4 _interfaceId,\\n bytes4 _callbackSelector,\\n bytes4 _magicNumber\\n ) external;\\n\\n /// @notice Removed function being left here to not corrupt the IDAO interface ID. Any call will revert.\\n /// @dev Introduced in v1.0.0. Removed in v1.4.0.\\n function setSignatureValidator(address) external;\\n}\\n\",\"keccak256\":\"0xb7f615523c26de042edce98731c658f44a1edb2464387ac1b642c4c69f57128e\",\"license\":\"AGPL-3.0-or-later\"},\"src/mocks/plugin/PluginCloneableMock.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\n/* solhint-disable one-contract-per-file */\\npragma solidity ^0.8.8;\\n\\nimport {PluginCloneable} from \\\"../../plugin/PluginCloneable.sol\\\";\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice A mock cloneable plugin to be deployed via the minimal proxy pattern.\\n/// v1.1 (Release 1, Build 1)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginCloneableMockBuild1 is PluginCloneable {\\n uint256 public state1;\\n\\n function initialize(IDAO _dao) external initializer {\\n __PluginCloneable_init(_dao);\\n state1 = 1;\\n }\\n}\\n\\n/// @notice A mock cloneable plugin to be deployed via the minimal proxy pattern.\\n/// v1.1 (Release 1, Build 2)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginCloneableMockBuild2 is PluginCloneable {\\n uint256 public state1;\\n uint256 public state2;\\n\\n function initialize(IDAO _dao) external initializer {\\n __PluginCloneable_init(_dao);\\n state1 = 1;\\n state2 = 2;\\n }\\n}\\n\\n/// @notice A mock cloneable plugin missing an initializer function.\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginCloneableMockBad is PluginCloneable {\\n uint256 public state1;\\n\\n function notAnInitializer(IDAO _dao) external {\\n __PluginCloneable_init(_dao);\\n state1 = 1;\\n }\\n}\\n\",\"keccak256\":\"0x1bb271f7b553040fad7907e97b860aa833aec9aefe7477e00ba7bdfd80d84e98\",\"license\":\"AGPL-3.0-or-later\"},\"src/mocks/plugin/PluginCloneableSetupMock.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\n/* solhint-disable one-contract-per-file */\\npragma solidity ^0.8.8;\\n\\nimport {PermissionLib} from \\\"../../permission/PermissionLib.sol\\\";\\nimport {IPluginSetup} from \\\"../../plugin/setup/IPluginSetup.sol\\\";\\nimport {PluginSetup} from \\\"../../plugin/setup/PluginSetup.sol\\\";\\nimport {ProxyLib} from \\\"../../utils/deployment/ProxyLib.sol\\\";\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\nimport {mockPermissions, mockHelpers} from \\\"./PluginSetupMockData.sol\\\";\\nimport {PluginCloneableMockBuild1, PluginCloneableMockBuild2} from \\\"./PluginCloneableMock.sol\\\";\\n\\n/// @notice A mock plugin setup of a cloneable plugin to be deployed via the minimal proxy pattern.\\n/// v1.1 (Release 1, Build 1)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginCloneableSetupMockBuild1 is PluginSetup {\\n using ProxyLib for address;\\n\\n uint16 internal constant THIS_BUILD = 1;\\n\\n constructor() PluginSetup(address(new PluginCloneableMockBuild1())) {}\\n\\n /// @inheritdoc IPluginSetup\\n function prepareInstallation(\\n address _dao,\\n bytes memory\\n ) external returns (address plugin, PreparedSetupData memory preparedSetupData) {\\n bytes memory initData = abi.encodeCall(PluginCloneableMockBuild1.initialize, (IDAO(_dao)));\\n plugin = implementation().deployMinimalProxy(initData);\\n preparedSetupData.helpers = mockHelpers(THIS_BUILD);\\n preparedSetupData.permissions = mockPermissions(\\n 0,\\n THIS_BUILD,\\n PermissionLib.Operation.Grant\\n );\\n }\\n\\n /// @inheritdoc IPluginSetup\\n function prepareUninstallation(\\n address _dao,\\n SetupPayload calldata _payload\\n ) external pure returns (PermissionLib.MultiTargetPermission[] memory permissions) {\\n (_dao, _payload);\\n permissions = mockPermissions(0, THIS_BUILD, PermissionLib.Operation.Revoke);\\n }\\n}\\n\\n/// @notice A mock plugin setup of a cloneable plugin to be deployed via the minimal proxy pattern.\\n/// v1.2 (Release 1, Build 2)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginCloneableSetupMockBuild2 is PluginSetup {\\n using ProxyLib for address;\\n\\n uint16 internal constant THIS_BUILD = 2;\\n\\n constructor() PluginSetup(address(new PluginCloneableMockBuild2())) {}\\n\\n /// @inheritdoc IPluginSetup\\n function prepareInstallation(\\n address _dao,\\n bytes memory\\n ) external returns (address plugin, PreparedSetupData memory preparedSetupData) {\\n bytes memory initData = abi.encodeCall(PluginCloneableMockBuild2.initialize, (IDAO(_dao)));\\n plugin = implementation().deployMinimalProxy(initData);\\n preparedSetupData.helpers = mockHelpers(THIS_BUILD);\\n preparedSetupData.permissions = mockPermissions(\\n 0,\\n THIS_BUILD,\\n PermissionLib.Operation.Grant\\n );\\n }\\n\\n /// @inheritdoc IPluginSetup\\n function prepareUninstallation(\\n address _dao,\\n SetupPayload calldata _payload\\n ) external pure returns (PermissionLib.MultiTargetPermission[] memory permissions) {\\n (_dao, _payload);\\n permissions = mockPermissions(0, THIS_BUILD, PermissionLib.Operation.Revoke);\\n }\\n}\\n\",\"keccak256\":\"0xfac0ce75e9d665bc9e2900c5cfa3f2667e0ea73573c4f46147453c6582eac1de\",\"license\":\"AGPL-3.0-or-later\"},\"src/mocks/plugin/PluginSetupMockData.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {PermissionLib} from \\\"../../permission/PermissionLib.sol\\\";\\n\\naddress constant NO_CONDITION = address(0);\\n\\nerror ConflictingValues();\\n\\n/// @notice Creates a mock `MultiTargetPermission` array by converting a range of `uint160` values into `address` values.\\n/// @param rangeStart The start of the range.\\n/// @param rangeEnd The end of the range (that is not included).\\n/// @param op The permission operation type.\\n/// @return permissions The mock array of permissions.\\n/// @dev DO NOT USE IN PRODUCTION!\\nfunction mockPermissions(\\n uint160 rangeStart,\\n uint160 rangeEnd,\\n PermissionLib.Operation op\\n) pure returns (PermissionLib.MultiTargetPermission[] memory permissions) {\\n if (rangeStart > rangeEnd) revert ConflictingValues();\\n\\n permissions = new PermissionLib.MultiTargetPermission[](rangeEnd - rangeStart);\\n\\n for (uint160 i = rangeStart; i < rangeEnd; i++) {\\n permissions[i - rangeStart] = PermissionLib.MultiTargetPermission({\\n operation: op,\\n where: address(i),\\n who: address(i),\\n condition: PermissionLib.NO_CONDITION,\\n permissionId: keccak256(\\\"MOCK_PERMISSION\\\")\\n });\\n }\\n}\\n\\n/// @notice Creates a mock array of helper addresses of specified length by converting `uint160` values starting from 0 into `address` values.\\n/// @param len The length of the helper array.\\n/// @return helpers The mock array of helper addresses.\\n/// @dev DO NOT USE IN PRODUCTION!\\nfunction mockHelpers(uint160 len) pure returns (address[] memory helpers) {\\n helpers = new address[](len);\\n\\n for (uint160 i = 0; i < len; i++) {\\n helpers[i] = address(i);\\n }\\n}\\n\",\"keccak256\":\"0x529d1b7ea4c348fe18edf81a044792ca8aa1f6ad9a7d2edfd35e38bf8372abf9\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/PermissionLib.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title PermissionLib\\n/// @author Aragon X - 2021-2023\\n/// @notice A library containing objects for permission processing.\\n/// @custom:security-contact sirt@aragon.org\\nlibrary PermissionLib {\\n /// @notice A constant expressing that no condition is applied to a permission.\\n address public constant NO_CONDITION = address(0);\\n\\n /// @notice The types of permission operations available in the `PermissionManager`.\\n /// @param Grant The grant operation setting a permission without a condition.\\n /// @param Revoke The revoke operation removing a permission (that was granted with or without a condition).\\n /// @param GrantWithCondition The grant operation setting a permission with a condition.\\n enum Operation {\\n Grant,\\n Revoke,\\n GrantWithCondition\\n }\\n\\n /// @notice A struct containing the information for a permission to be applied on a single target contract without a condition.\\n /// @param operation The permission operation type.\\n /// @param who The address (EOA or contract) receiving the permission.\\n /// @param permissionId The permission identifier.\\n struct SingleTargetPermission {\\n Operation operation;\\n address who;\\n bytes32 permissionId;\\n }\\n\\n /// @notice A struct containing the information for a permission to be applied on multiple target contracts, optionally, with a condition.\\n /// @param operation The permission operation type.\\n /// @param where The address of the target contract for which `who` receives permission.\\n /// @param who The address (EOA or contract) receiving the permission.\\n /// @param condition The `PermissionCondition` that will be asked for authorization on calls connected to the specified permission identifier.\\n /// @param permissionId The permission identifier.\\n struct MultiTargetPermission {\\n Operation operation;\\n address where;\\n address who;\\n address condition;\\n bytes32 permissionId;\\n }\\n}\\n\",\"keccak256\":\"0x470faf3c4891ebc6420ef6cc09f6098917568ccc79268c90954d1478199b6097\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/DaoAuthorizableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ContextUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\\\";\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\nimport {_auth} from \\\"./auth.sol\\\";\\n\\n/// @title DaoAuthorizableUpgradeable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract contract providing a meta-transaction compatible modifier for upgradeable or cloneable contracts to authorize function calls through an associated DAO.\\n/// @dev Make sure to call `__DaoAuthorizableUpgradeable_init` during initialization of the inheriting contract.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract DaoAuthorizableUpgradeable is ContextUpgradeable {\\n /// @notice The associated DAO managing the permissions of inheriting contracts.\\n IDAO private dao_;\\n\\n /// @notice Initializes the contract by setting the associated DAO.\\n /// @param _dao The associated DAO address.\\n // solhint-disable-next-line func-name-mixedcase\\n function __DaoAuthorizableUpgradeable_init(IDAO _dao) internal onlyInitializing {\\n dao_ = _dao;\\n }\\n\\n /// @notice Returns the DAO contract.\\n /// @return The DAO contract.\\n function dao() public view returns (IDAO) {\\n return dao_;\\n }\\n\\n /// @notice A modifier to make functions on inheriting contracts authorized. Permissions to call the function are checked through the associated DAO's permission manager.\\n /// @param _permissionId The permission identifier required to call the method this modifier is applied to.\\n modifier auth(bytes32 _permissionId) {\\n _auth(dao_, address(this), _msgSender(), _permissionId, _msgData());\\n _;\\n }\\n\\n /// @notice This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain (see [OpenZeppelin's guide about storage gaps](https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps)).\\n uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0x7fac6b01b037ba1cb9d6a22d3f43b0785037dcf496ffb672434d9bf7227d2585\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/auth.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice Thrown if a call is unauthorized in the associated DAO.\\n/// @param dao The associated DAO.\\n/// @param where The context in which the authorization reverted.\\n/// @param who The address (EOA or contract) missing the permission.\\n/// @param permissionId The permission identifier.\\nerror DaoUnauthorized(address dao, address where, address who, bytes32 permissionId);\\n\\n/// @notice A free function checking if a caller is granted permissions on a target contract via a permission identifier that redirects the approval to a `PermissionCondition` if this was specified in the setup.\\n/// @param _where The address of the target contract for which `who` receives permission.\\n/// @param _who The address (EOA or contract) owning the permission.\\n/// @param _permissionId The permission identifier.\\n/// @param _data The optional data passed to the `PermissionCondition` registered.\\n/// @custom:security-contact sirt@aragon.org\\nfunction _auth(\\n IDAO _dao,\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes calldata _data\\n) view {\\n if (!_dao.hasPermission(_where, _who, _permissionId, _data))\\n revert DaoUnauthorized({\\n dao: address(_dao),\\n where: _where,\\n who: _who,\\n permissionId: _permissionId\\n });\\n}\\n\",\"keccak256\":\"0x878764b4f87fe0651fb3798fb9cb87c952f8c6caf6ae79c7f09de84df6c00298\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/IPlugin.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IPlugin\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the traits of a plugin.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IPlugin {\\n enum PluginType {\\n UUPS,\\n Cloneable,\\n Constructable\\n }\\n\\n /// @notice Returns the plugin's type\\n function pluginType() external view returns (PluginType);\\n}\\n\",\"keccak256\":\"0xc57cd0d10b6380ab7f54c713a509e88fd8f4ad9288313a0e8e12b8887817ddfe\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/PluginCloneable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ERC165Upgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\\\";\\n\\nimport {IProtocolVersion} from \\\"../utils/versioning/IProtocolVersion.sol\\\";\\nimport {ProtocolVersion} from \\\"../utils/versioning/ProtocolVersion.sol\\\";\\nimport {DaoAuthorizableUpgradeable} from \\\"../permission/auth/DaoAuthorizableUpgradeable.sol\\\";\\nimport {IDAO} from \\\"../dao/IDAO.sol\\\";\\nimport {IPlugin} from \\\"./IPlugin.sol\\\";\\n\\n/// @title PluginCloneable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract, non-upgradeable contract to inherit from when creating a plugin being deployed via the minimal clones pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)).\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract PluginCloneable is\\n IPlugin,\\n ERC165Upgradeable,\\n DaoAuthorizableUpgradeable,\\n ProtocolVersion\\n{\\n address public target;\\n\\n /// @dev Emitted each time the Target is set.\\n event TargetSet(address indexed previousTarget, address indexed newTarget);\\n\\n /// @notice Disables the initializers on the implementation contract to prevent it from being left uninitialized.\\n /// @custom:oz-upgrades-unsafe-allow constructor\\n constructor() {\\n _disableInitializers();\\n }\\n\\n /// @notice Initializes the plugin by storing the associated DAO.\\n /// @param _dao The DAO contract.\\n // solhint-disable-next-line func-name-mixedcase\\n function __PluginCloneable_init(IDAO _dao) internal virtual onlyInitializing {\\n __DaoAuthorizableUpgradeable_init(_dao);\\n }\\n\\n /// @dev Sets the target to a new target (`newTarget`).\\n /// @notice Can only be called by the current owner. TODO\\n function setTarget(address _target) public {\\n address previousTarget = target;\\n target = _target;\\n emit TargetSet(previousTarget, _target);\\n }\\n\\n /// @inheritdoc IPlugin\\n function pluginType() public pure override returns (PluginType) {\\n return PluginType.Cloneable;\\n }\\n\\n /// @notice Checks if this or the parent contract supports an interface by its ID.\\n /// @param _interfaceId The ID of the interface.\\n /// @return Returns `true` if the interface is supported.\\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\\n return\\n _interfaceId == type(IPlugin).interfaceId ||\\n _interfaceId == type(IProtocolVersion).interfaceId ||\\n super.supportsInterface(_interfaceId);\\n }\\n\\n /// @notice Forwards the actions to the currently set `target` for the execution.\\n /// @param _callId Identifier for this execution.\\n /// @param _actions actions that will be eventually called.\\n /// @param _allowFailureMap Bitmap-encoded number. TODO:\\n /// @return execResults address of the implementation contract.\\n /// @return failureMap address of the implementation contract.\\n function _execute(\\n bytes32 _callId,\\n IDAO.Action[] calldata _actions,\\n uint256 _allowFailureMap\\n ) internal virtual returns (bytes[] memory execResults, uint256 failureMap) {\\n (execResults, failureMap) = IDAO(target).execute(_callId, _actions, _allowFailureMap);\\n }\\n\\n /// @notice Forwards the actions to the `target` for the execution.\\n /// @param _target Forwards the actions to the specific target.\\n /// @param _callId Identifier for this execution.\\n /// @param _actions actions that will be eventually called.\\n /// @param _allowFailureMap Bitmap-encoded number. TODO:\\n /// @return execResults address of the implementation contract.\\n /// @return failureMap address of the implementation contract.\\n function _execute(\\n address _target,\\n bytes32 _callId,\\n IDAO.Action[] calldata _actions,\\n uint256 _allowFailureMap\\n ) internal virtual returns (bytes[] memory execResults, uint256 failureMap) {\\n (execResults, failureMap) = IDAO(_target).execute(_callId, _actions, _allowFailureMap);\\n }\\n}\\n\",\"keccak256\":\"0x23fff653e79f6d079073bab2f878051cf85c8e3cfa7ef359f3be92fc65ca2501\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/setup/IPluginSetup.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {PermissionLib} from \\\"../../permission/PermissionLib.sol\\\";\\n\\n// solhint-disable-next-line no-unused-import\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @title IPluginSetup\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for a plugin setup contract to be consumed by the `PluginSetupProcessor` for plugin installations, updates, and uninstallations.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IPluginSetup {\\n /// @notice The data associated with a prepared setup.\\n /// @param helpers The address array of helpers (contracts or EOAs) associated with this plugin version after the installation or update.\\n /// @param permissions The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the installing or updating DAO.\\n struct PreparedSetupData {\\n address[] helpers;\\n PermissionLib.MultiTargetPermission[] permissions;\\n }\\n\\n /// @notice The payload for plugin updates and uninstallations containing the existing contracts as well as optional data to be consumed by the plugin setup.\\n /// @param plugin The address of the `Plugin`.\\n /// @param currentHelpers The address array of all current helpers (contracts or EOAs) associated with the plugin to update from.\\n /// @param data The bytes-encoded data containing the input parameters for the preparation of update/uninstall as specified in the corresponding ABI on the version's metadata.\\n struct SetupPayload {\\n address plugin;\\n address[] currentHelpers;\\n bytes data;\\n }\\n\\n /// @notice Prepares the installation of a plugin.\\n /// @param _dao The address of the installing DAO.\\n /// @param _data The bytes-encoded data containing the input parameters for the installation as specified in the plugin's build metadata JSON file.\\n /// @return plugin The address of the `Plugin` contract being prepared for installation.\\n /// @return preparedSetupData The deployed plugin's relevant data which consists of helpers and permissions.\\n function prepareInstallation(\\n address _dao,\\n bytes calldata _data\\n ) external returns (address plugin, PreparedSetupData memory preparedSetupData);\\n\\n /// @notice Prepares the update of a plugin.\\n /// @param _dao The address of the updating DAO.\\n /// @param _fromBuild The build number of the plugin to update from.\\n /// @param _payload The relevant data necessary for the `prepareUpdate`. See above.\\n /// @return initData The initialization data to be passed to upgradeable contracts when the update is applied in the `PluginSetupProcessor`.\\n /// @return preparedSetupData The deployed plugin's relevant data which consists of helpers and permissions.\\n function prepareUpdate(\\n address _dao,\\n uint16 _fromBuild,\\n SetupPayload calldata _payload\\n ) external returns (bytes memory initData, PreparedSetupData memory preparedSetupData);\\n\\n /// @notice Prepares the uninstallation of a plugin.\\n /// @param _dao The address of the uninstalling DAO.\\n /// @param _payload The relevant data necessary for the `prepareUninstallation`. See above.\\n /// @return permissions The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the uninstalling DAO.\\n function prepareUninstallation(\\n address _dao,\\n SetupPayload calldata _payload\\n ) external returns (PermissionLib.MultiTargetPermission[] memory permissions);\\n\\n /// @notice Returns the plugin implementation address.\\n /// @return The address of the plugin implementation contract.\\n /// @dev The implementation can be instantiated via the `new` keyword, cloned via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)), or proxied via the UUPS proxy pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0x21c99995208039ac6ace219b6f273243811dc2aa66399e8e499e43ec30b82fa9\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/setup/PluginSetup.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ERC165} from \\\"@openzeppelin/contracts/utils/introspection/ERC165.sol\\\";\\n\\nimport {IProtocolVersion} from \\\"../../utils/versioning/IProtocolVersion.sol\\\";\\nimport {ProtocolVersion} from \\\"../../utils/versioning/ProtocolVersion.sol\\\";\\nimport {IPluginSetup} from \\\"./IPluginSetup.sol\\\";\\n\\n/// @title PluginSetup\\n/// @author Aragon X - 2022-2024\\n/// @notice An abstract contract to inherit from to implement the plugin setup for non-upgradeable plugins, i.e,\\n/// - `Plugin` being deployed via the `new` keyword\\n/// - `PluginCloneable` being deployed via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)).\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract PluginSetup is ERC165, IPluginSetup, ProtocolVersion {\\n /// @notice The address of the plugin implementation contract for initial block explorer verification and, in the case of `PluginClonable` implementations, to create [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167) clones from.\\n address internal immutable IMPLEMENTATION;\\n\\n /// @notice Thrown when attempting to prepare an update on a non-upgradeable plugin.\\n error NonUpgradeablePlugin();\\n\\n /// @notice The contract constructor, that setting the plugin implementation contract.\\n /// @param _implementation The address of the plugin implementation contract.\\n constructor(address _implementation) {\\n IMPLEMENTATION = _implementation;\\n }\\n\\n /// @inheritdoc IPluginSetup\\n /// @dev Since the underlying plugin is non-upgradeable, this non-virtual function must always revert.\\n function prepareUpdate(\\n address _dao,\\n uint16 _fromBuild,\\n SetupPayload calldata _payload\\n ) external pure returns (bytes memory, PreparedSetupData memory) {\\n (_dao, _fromBuild, _payload);\\n revert NonUpgradeablePlugin();\\n }\\n\\n /// @notice Checks if this or the parent contract supports an interface by its ID.\\n /// @param _interfaceId The ID of the interface.\\n /// @return Returns `true` if the interface is supported.\\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\\n return\\n _interfaceId == type(IPluginSetup).interfaceId ||\\n _interfaceId == type(IProtocolVersion).interfaceId ||\\n super.supportsInterface(_interfaceId);\\n }\\n\\n /// @inheritdoc IPluginSetup\\n function implementation() public view returns (address) {\\n return IMPLEMENTATION;\\n }\\n}\\n\",\"keccak256\":\"0x93044f8080758c5cf8d621e3614b8150f55572a1770880106a49dfa53784a9d2\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/deployment/ProxyLib.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ERC1967Proxy} from \\\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol\\\";\\nimport {Clones} from \\\"@openzeppelin/contracts/proxy/Clones.sol\\\";\\nimport {Address} from \\\"@openzeppelin/contracts/utils/Address.sol\\\";\\n\\n/// @title ProxyLib\\n/// @author Aragon X - 2024\\n/// @notice A library containing methods for the deployment of proxies via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)) and minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)).\\n/// @custom:security-contact sirt@aragon.org\\nlibrary ProxyLib {\\n using Address for address;\\n using Clones for address;\\n\\n /// @notice Creates an [ERC-1967](https://eips.ethereum.org/EIPS/eip-1967) UUPS proxy contract pointing to a logic contract and allows to immediately initialize it.\\n /// @param _logic The logic contract the proxy is pointing to.\\n /// @param _initCalldata The initialization data for this contract.\\n /// @return uupsProxy The address of the UUPS proxy contract created.\\n /// @dev If `_initCalldata` is non-empty, it is used in a delegate call to the `_logic` contract. This will typically be an encoded function call initializing the storage of the proxy (see [OpenZeppelin ERC1967Proxy-constructor](https://docs.openzeppelin.com/contracts/4.x/api/proxy#ERC1967Proxy-constructor-address-bytes-)).\\n function deployUUPSProxy(\\n address _logic,\\n bytes memory _initCalldata\\n ) internal returns (address uupsProxy) {\\n uupsProxy = address(new ERC1967Proxy({_logic: _logic, _data: _initCalldata}));\\n }\\n\\n /// @notice Creates an [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167) minimal proxy contract, also known as clones, pointing to a logic contract and allows to immediately initialize it.\\n /// @param _logic The logic contract the proxy is pointing to.\\n /// @param _initCalldata The initialization data for this contract.\\n /// @return minimalProxy The address of the minimal proxy contract created.\\n /// @dev If `_initCalldata` is non-empty, it is used in a call to the clone contract. This will typically be an encoded function call initializing the storage of the contract.\\n function deployMinimalProxy(\\n address _logic,\\n bytes memory _initCalldata\\n ) internal returns (address minimalProxy) {\\n minimalProxy = _logic.clone();\\n if (_initCalldata.length > 0) {\\n minimalProxy.functionCall({data: _initCalldata});\\n }\\n }\\n}\\n\",\"keccak256\":\"0xef0d1790dfa026381c021daa2ec7267357497f58cd4a2fa5c64e72e0dea95acc\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/IProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IProtocolVersion\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the semantic Aragon OSx protocol version number.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IProtocolVersion {\\n /// @notice Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\\n /// @return _version Returns the semantic Aragon OSx protocol version number.\\n /// @dev This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\\n function protocolVersion() external view returns (uint8[3] memory _version);\\n}\\n\",\"keccak256\":\"0x00a4da654d21dc1bdadbdc8bd54bb86c378c56f85e461ccc31303628ea621361\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/ProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IProtocolVersion} from \\\"./IProtocolVersion.sol\\\";\\n\\n/// @title ProtocolVersion\\n/// @author Aragon X - 2023\\n/// @notice An abstract, stateless, non-upgradeable contract providing the current Aragon OSx protocol version number.\\n/// @dev Do not add any new variables to this contract that would shift down storage in the inheritance chain.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract ProtocolVersion is IProtocolVersion {\\n // IMPORTANT: Do not add any storage variable, see the above notice.\\n\\n /// @inheritdoc IProtocolVersion\\n function protocolVersion() public pure returns (uint8[3] memory) {\\n return [1, 4, 0];\\n }\\n}\\n\",\"keccak256\":\"0x3975c937be935f687c6b6b8f379071232681e98cf04b175d72781b819ea52bdb\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"errors":{"NonUpgradeablePlugin()":[{"notice":"Thrown when attempting to prepare an update on a non-upgradeable plugin."}]},"kind":"user","methods":{"implementation()":{"notice":"Returns the plugin implementation address."},"prepareInstallation(address,bytes)":{"notice":"Prepares the installation of a plugin."},"prepareUninstallation(address,(address,address[],bytes))":{"notice":"Prepares the uninstallation of a plugin."},"prepareUpdate(address,uint16,(address,address[],bytes))":{"notice":"Prepares the update of a plugin."},"protocolVersion()":{"notice":"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with."},"supportsInterface(bytes4)":{"notice":"Checks if this or the parent contract supports an interface by its ID."}},"notice":"A mock plugin setup of a cloneable plugin to be deployed via the minimal proxy pattern. v1.1 (Release 1, Build 1)","version":1}},"PluginCloneableSetupMockBuild2":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"ConflictingValues","type":"error"},{"inputs":[],"name":"NonUpgradeablePlugin","type":"error"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_dao","type":"address"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"prepareInstallation","outputs":[{"internalType":"address","name":"plugin","type":"address"},{"components":[{"internalType":"address[]","name":"helpers","type":"address[]"},{"components":[{"internalType":"enum PermissionLib.Operation","name":"operation","type":"uint8"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"condition","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"internalType":"struct PermissionLib.MultiTargetPermission[]","name":"permissions","type":"tuple[]"}],"internalType":"struct IPluginSetup.PreparedSetupData","name":"preparedSetupData","type":"tuple"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_dao","type":"address"},{"components":[{"internalType":"address","name":"plugin","type":"address"},{"internalType":"address[]","name":"currentHelpers","type":"address[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct IPluginSetup.SetupPayload","name":"_payload","type":"tuple"}],"name":"prepareUninstallation","outputs":[{"components":[{"internalType":"enum PermissionLib.Operation","name":"operation","type":"uint8"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"condition","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"internalType":"struct PermissionLib.MultiTargetPermission[]","name":"permissions","type":"tuple[]"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_dao","type":"address"},{"internalType":"uint16","name":"_fromBuild","type":"uint16"},{"components":[{"internalType":"address","name":"plugin","type":"address"},{"internalType":"address[]","name":"currentHelpers","type":"address[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct IPluginSetup.SetupPayload","name":"_payload","type":"tuple"}],"name":"prepareUpdate","outputs":[{"internalType":"bytes","name":"","type":"bytes"},{"components":[{"internalType":"address[]","name":"helpers","type":"address[]"},{"components":[{"internalType":"enum PermissionLib.Operation","name":"operation","type":"uint8"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"condition","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"internalType":"struct PermissionLib.MultiTargetPermission[]","name":"permissions","type":"tuple[]"}],"internalType":"struct IPluginSetup.PreparedSetupData","name":"","type":"tuple"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"protocolVersion","outputs":[{"internalType":"uint8[3]","name":"","type":"uint8[3]"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"DO NOT USE IN PRODUCTION!","kind":"dev","methods":{"implementation()":{"details":"The implementation can be instantiated via the `new` keyword, cloned via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)), or proxied via the UUPS proxy pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).","returns":{"_0":"The address of the plugin implementation contract."}},"prepareInstallation(address,bytes)":{"params":{"_dao":"The address of the installing DAO.","_data":"The bytes-encoded data containing the input parameters for the installation as specified in the plugin's build metadata JSON file."},"returns":{"plugin":"The address of the `Plugin` contract being prepared for installation.","preparedSetupData":"The deployed plugin's relevant data which consists of helpers and permissions."}},"prepareUninstallation(address,(address,address[],bytes))":{"params":{"_dao":"The address of the uninstalling DAO.","_payload":"The relevant data necessary for the `prepareUninstallation`. See above."},"returns":{"permissions":"The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the uninstalling DAO."}},"prepareUpdate(address,uint16,(address,address[],bytes))":{"details":"Since the underlying plugin is non-upgradeable, this non-virtual function must always revert.","params":{"_dao":"The address of the updating DAO.","_fromBuild":"The build number of the plugin to update from.","_payload":"The relevant data necessary for the `prepareUpdate`. See above."},"returns":{"_0":"The initialization data to be passed to upgradeable contracts when the update is applied in the `PluginSetupProcessor`.","_1":"The deployed plugin's relevant data which consists of helpers and permissions."}},"protocolVersion()":{"details":"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.","returns":{"_0":"Returns the semantic Aragon OSx protocol version number."}},"supportsInterface(bytes4)":{"params":{"_interfaceId":"The ID of the interface."},"returns":{"_0":"Returns `true` if the interface is supported."}}},"version":1},"evm":{"bytecode":{"functionDebugData":{"@_2762":{"entryPoint":null,"id":2762,"parameterSlots":0,"returnSlots":0},"@_4893":{"entryPoint":null,"id":4893,"parameterSlots":1,"returnSlots":0}},"generatedSources":[],"linkReferences":{},"object":"60a060405234801561001057600080fd5b5060405161001d9061004b565b604051809103906000f080158015610039573d6000803e3d6000fd5b506001600160a01b0316608052610058565b61066680610d3183390190565b608051610cb86100796000396000818160c101526102980152610cb86000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c80639cb0a124116100505780639cb0a124146100eb578063a8a9c29e1461010b578063f10832f11461012c57600080fd5b806301ffc9a7146100775780632ae9c6001461009f5780635c60da1b146100b4575b600080fd5b61008a6100853660046107fe565b61014d565b60405190151581526020015b60405180910390f35b6100a761019e565b6040516100969190610828565b6040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152602001610096565b6100fe6100f9366004610885565b6101c8565b604051610096919061094f565b61011e610119366004610998565b6101df565b604051610096929190610ae2565b61013f61013a366004610b26565b610217565b604051610096929190610be8565b60006001600160e01b0319821663099718b560e41b148061017d57506001600160e01b03198216621574e360e91b145b8061019857506301ffc9a760e01b6001600160e01b03198316145b92915050565b6101a66107e0565b5060408051606081018252600181526004602082015260009181019190915290565b60606101d86000600260016102f3565b9392505050565b60606101fe604051806040016040528060608152602001606081525090565b60405163a112810160e01b815260040160405180910390fd5b6000610236604051806040016040528060608152602001606081525090565b6040516001600160a01b038516602482015260009060440160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663189acdbd60e31b17905290506102c9816102ba7f000000000000000000000000000000000000000000000000000000000000000090565b6001600160a01b031690610478565b92506102d560026104b0565b82526102e460006002816102f3565b60208301525090939092509050565b6060826001600160a01b0316846001600160a01b0316111561032857604051633a4013cd60e21b815260040160405180910390fd5b6103328484610c20565b6001600160a01b031667ffffffffffffffff81111561035357610353610b10565b6040519080825280602002602001820160405280156103ac57816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282526000199092019101816103715790505b509050835b836001600160a01b0316816001600160a01b03161015610470576040518060a001604052808460028111156103e8576103e86108d3565b81526001600160a01b038316602082018190526040820152600060608201527fa280eec51ab8e1bc4b6b0c1b7f1bde785761b787a49db404e3e9338ed9b016ef608090910152826104398784610c20565b6001600160a01b03168151811061045257610452610c40565b6020026020010181905250808061046890610c56565b9150506103b1565b509392505050565b600061048c836001600160a01b0316610569565b825190915015610198576104a96001600160a01b0382168361060f565b5092915050565b6060816001600160a01b031667ffffffffffffffff8111156104d4576104d4610b10565b6040519080825280602002602001820160405280156104fd578160200160208202803683370190505b50905060005b826001600160a01b0316816001600160a01b03161015610563578082826001600160a01b03168151811061053957610539610c40565b6001600160a01b03909216602092830291909101909101528061055b81610c56565b915050610503565b50919050565b6000763d602d80600a3d3981f3363d3d373d3d3d363d730000008260601b60e81c176000526e5af43d82803e903d91602b57fd5bf38260781b17602052603760096000f090506001600160a01b03811661060a5760405162461bcd60e51b815260206004820152601660248201527f455243313136373a20637265617465206661696c65640000000000000000000060448201526064015b60405180910390fd5b919050565b60606101d8838360006040518060400160405280601e81526020017f416464726573733a206c6f772d6c6576656c2063616c6c206661696c656400008152506060824710156106c65760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610601565b600080866001600160a01b031685876040516106e29190610c7c565b60006040518083038185875af1925050503d806000811461071f576040519150601f19603f3d011682016040523d82523d6000602084013e610724565b606091505b509150915061073587838387610742565b925050505b949350505050565b606083156107b15782516000036107aa576001600160a01b0385163b6107aa5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610601565b508161073a565b61073a83838151156107c65781518083602001fd5b8060405162461bcd60e51b81526004016106019190610c98565b60405180606001604052806003906020820280368337509192915050565b60006020828403121561081057600080fd5b81356001600160e01b0319811681146101d857600080fd5b60608101818360005b600381101561085357815160ff16835260209283019290910190600101610831565b50505092915050565b80356001600160a01b038116811461060a57600080fd5b60006060828403121561056357600080fd5b6000806040838503121561089857600080fd5b6108a18361085c565b9150602083013567ffffffffffffffff8111156108bd57600080fd5b6108c985828601610873565b9150509250929050565b634e487b7160e01b600052602160045260246000fd5b600081516003811061090b57634e487b7160e01b600052602160045260246000fd5b8352506020818101516001600160a01b0390811691840191909152604080830151821690840152606080830151909116908301526080908101519082015260a00190565b6020808252825182820181905260009190848201906040850190845b8181101561098c5761097e8385516108e9565b93850193925060010161096b565b50909695505050505050565b6000806000606084860312156109ad57600080fd5b6109b68461085c565b9250602084013561ffff811681146109cd57600080fd5b9150604084013567ffffffffffffffff8111156109e957600080fd5b6109f586828701610873565b9150509250925092565b60005b83811015610a1a578181015183820152602001610a02565b50506000910152565b60008151808452610a3b8160208601602086016109ff565b601f01601f19169290920160200192915050565b805160408084528151908401819052600091602091908201906060860190845b81811015610a945783516001600160a01b031683529284019291840191600101610a6f565b50508483015186820387850152805180835290840192506000918401905b80831015610ad757610ac58285516108e9565b91508484019350600183019250610ab2565b509695505050505050565b604081526000610af56040830185610a23565b8281036020840152610b078185610a4f565b95945050505050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215610b3957600080fd5b610b428361085c565b9150602083013567ffffffffffffffff80821115610b5f57600080fd5b818501915085601f830112610b7357600080fd5b813581811115610b8557610b85610b10565b604051601f8201601f19908116603f01168101908382118183101715610bad57610bad610b10565b81604052828152886020848701011115610bc657600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6001600160a01b038316815260406020820152600061073a6040830184610a4f565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b038281168282160390808211156104a9576104a9610c0a565b634e487b7160e01b600052603260045260246000fd5b60006001600160a01b03808316818103610c7257610c72610c0a565b6001019392505050565b60008251610c8e8184602087016109ff565b9190910192915050565b6020815260006101d86020830184610a2356fea164736f6c6343000811000a608060405234801561001057600080fd5b5061001961001e565b6100dd565b600054610100900460ff161561008a5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116146100db576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b61057a806100ec6000396000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c80636accab8c11610076578063c4d66de81161005b578063c4d66de814610145578063d4b8399214610158578063efe51cca1461016b57600080fd5b80636accab8c14610119578063776d1a011461013057600080fd5b806301ffc9a7146100a85780632ae9c600146100d05780634162169f146100e557806341de68301461010a575b600080fd5b6100bb6100b63660046104ae565b610174565b60405190151581526020015b60405180910390f35b6100d86101c5565b6040516100c791906104df565b6065546001600160a01b03165b6040516001600160a01b0390911681526020016100c7565b60016040516100c79190610513565b61012260985481565b6040519081526020016100c7565b61014361013e366004610550565b6101ef565b005b610143610153366004610550565b61024e565b6097546100f2906001600160a01b031681565b61012260995481565b60006001600160e01b0319821663041de68360e41b14806101a457506001600160e01b03198216621574e360e91b145b806101bf57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6101cd610490565b5060408051606081018252600181526004602082015260009181019190915290565b609780546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d690600090a35050565b600054610100900460ff161580801561026e5750600054600160ff909116105b806102885750303b158015610288575060005460ff166001145b6102ff5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b6000805460ff191660011790558015610322576000805461ff0019166101001790555b61032b8261037f565b60016098556002609955801561037b576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b600054610100900460ff166103ea5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016102f6565b6103f3816103f6565b50565b600054610100900460ff166104615760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016102f6565b6065805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b60405180606001604052806003906020820280368337509192915050565b6000602082840312156104c057600080fd5b81356001600160e01b0319811681146104d857600080fd5b9392505050565b60608101818360005b600381101561050a57815160ff168352602092830192909101906001016104e8565b50505092915050565b602081016003831061053557634e487b7160e01b600052602160045260246000fd5b91905290565b6001600160a01b03811681146103f357600080fd5b60006020828403121561056257600080fd5b81356104d88161053b56fea164736f6c6343000811000a","opcodes":"PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x1D SWAP1 PUSH2 0x4B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH2 0x39 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x80 MSTORE PUSH2 0x58 JUMP JUMPDEST PUSH2 0x666 DUP1 PUSH2 0xD31 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH2 0xCB8 PUSH2 0x79 PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH1 0xC1 ADD MSTORE PUSH2 0x298 ADD MSTORE PUSH2 0xCB8 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x72 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9CB0A124 GT PUSH2 0x50 JUMPI DUP1 PUSH4 0x9CB0A124 EQ PUSH2 0xEB JUMPI DUP1 PUSH4 0xA8A9C29E EQ PUSH2 0x10B JUMPI DUP1 PUSH4 0xF10832F1 EQ PUSH2 0x12C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x77 JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0x9F JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0xB4 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8A PUSH2 0x85 CALLDATASIZE PUSH1 0x4 PUSH2 0x7FE JUMP JUMPDEST PUSH2 0x14D JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xA7 PUSH2 0x19E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x96 SWAP2 SWAP1 PUSH2 0x828 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x96 JUMP JUMPDEST PUSH2 0xFE PUSH2 0xF9 CALLDATASIZE PUSH1 0x4 PUSH2 0x885 JUMP JUMPDEST PUSH2 0x1C8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x96 SWAP2 SWAP1 PUSH2 0x94F JUMP JUMPDEST PUSH2 0x11E PUSH2 0x119 CALLDATASIZE PUSH1 0x4 PUSH2 0x998 JUMP JUMPDEST PUSH2 0x1DF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x96 SWAP3 SWAP2 SWAP1 PUSH2 0xAE2 JUMP JUMPDEST PUSH2 0x13F PUSH2 0x13A CALLDATASIZE PUSH1 0x4 PUSH2 0xB26 JUMP JUMPDEST PUSH2 0x217 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x96 SWAP3 SWAP2 SWAP1 PUSH2 0xBE8 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x99718B5 PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x17D JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x198 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1A6 PUSH2 0x7E0 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1D8 PUSH1 0x0 PUSH1 0x2 PUSH1 0x1 PUSH2 0x2F3 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1FE PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xA1128101 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x236 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 PUSH1 0x44 ADD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x189ACDBD PUSH1 0xE3 SHL OR SWAP1 MSTORE SWAP1 POP PUSH2 0x2C9 DUP2 PUSH2 0x2BA PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH2 0x478 JUMP JUMPDEST SWAP3 POP PUSH2 0x2D5 PUSH1 0x2 PUSH2 0x4B0 JUMP JUMPDEST DUP3 MSTORE PUSH2 0x2E4 PUSH1 0x0 PUSH1 0x2 DUP2 PUSH2 0x2F3 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP SWAP1 SWAP4 SWAP1 SWAP3 POP SWAP1 POP JUMP JUMPDEST PUSH1 0x60 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH2 0x328 JUMPI PUSH1 0x40 MLOAD PUSH4 0x3A4013CD PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x332 DUP5 DUP5 PUSH2 0xC20 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x353 JUMPI PUSH2 0x353 PUSH2 0xB10 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x3AC JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD DUP3 SWAP1 MSTORE SWAP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 DUP3 ADD MSTORE DUP3 MSTORE PUSH1 0x0 NOT SWAP1 SWAP3 ADD SWAP2 ADD DUP2 PUSH2 0x371 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP DUP4 JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT ISZERO PUSH2 0x470 JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 DUP5 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x3E8 JUMPI PUSH2 0x3E8 PUSH2 0x8D3 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x60 DUP3 ADD MSTORE PUSH32 0xA280EEC51AB8E1BC4B6B0C1B7F1BDE785761B787A49DB404E3E9338ED9B016EF PUSH1 0x80 SWAP1 SWAP2 ADD MSTORE DUP3 PUSH2 0x439 DUP8 DUP5 PUSH2 0xC20 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MLOAD DUP2 LT PUSH2 0x452 JUMPI PUSH2 0x452 PUSH2 0xC40 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP DUP1 DUP1 PUSH2 0x468 SWAP1 PUSH2 0xC56 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x3B1 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x48C DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x569 JUMP JUMPDEST DUP3 MLOAD SWAP1 SWAP2 POP ISZERO PUSH2 0x198 JUMPI PUSH2 0x4A9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP4 PUSH2 0x60F JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x4D4 JUMPI PUSH2 0x4D4 PUSH2 0xB10 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x4FD JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT ISZERO PUSH2 0x563 JUMPI DUP1 DUP3 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MLOAD DUP2 LT PUSH2 0x539 JUMPI PUSH2 0x539 PUSH2 0xC40 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE DUP1 PUSH2 0x55B DUP2 PUSH2 0xC56 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x503 JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH23 0x3D602D80600A3D3981F3363D3D373D3D3D363D73000000 DUP3 PUSH1 0x60 SHL PUSH1 0xE8 SHR OR PUSH1 0x0 MSTORE PUSH15 0x5AF43D82803E903D91602B57FD5BF3 DUP3 PUSH1 0x78 SHL OR PUSH1 0x20 MSTORE PUSH1 0x37 PUSH1 0x9 PUSH1 0x0 CREATE SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x60A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313136373A20637265617465206661696C656400000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1D8 DUP4 DUP4 PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x416464726573733A206C6F772D6C6576656C2063616C6C206661696C65640000 DUP2 MSTORE POP PUSH1 0x60 DUP3 SELFBALANCE LT ISZERO PUSH2 0x6C6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A20696E73756666696369656E742062616C616E636520666F PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x722063616C6C0000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x601 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP8 PUSH1 0x40 MLOAD PUSH2 0x6E2 SWAP2 SWAP1 PUSH2 0xC7C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x71F JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x724 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x735 DUP8 DUP4 DUP4 DUP8 PUSH2 0x742 JUMP JUMPDEST SWAP3 POP POP POP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x7B1 JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0x7AA JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0x7AA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x601 JUMP JUMPDEST POP DUP2 PUSH2 0x73A JUMP JUMPDEST PUSH2 0x73A DUP4 DUP4 DUP2 MLOAD ISZERO PUSH2 0x7C6 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x601 SWAP2 SWAP1 PUSH2 0xC98 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x810 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x1D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0x853 JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x831 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x60A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x563 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x898 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8A1 DUP4 PUSH2 0x85C JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x8BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8C9 DUP6 DUP3 DUP7 ADD PUSH2 0x873 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP2 MLOAD PUSH1 0x3 DUP2 LT PUSH2 0x90B JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP4 MSTORE POP PUSH1 0x20 DUP2 DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP1 DUP4 ADD MLOAD DUP3 AND SWAP1 DUP5 ADD MSTORE PUSH1 0x60 DUP1 DUP4 ADD MLOAD SWAP1 SWAP2 AND SWAP1 DUP4 ADD MSTORE PUSH1 0x80 SWAP1 DUP2 ADD MLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x98C JUMPI PUSH2 0x97E DUP4 DUP6 MLOAD PUSH2 0x8E9 JUMP JUMPDEST SWAP4 DUP6 ADD SWAP4 SWAP3 POP PUSH1 0x1 ADD PUSH2 0x96B JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x9AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9B6 DUP5 PUSH2 0x85C JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH2 0x9CD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x9E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9F5 DUP7 DUP3 DUP8 ADD PUSH2 0x873 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xA1A JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xA02 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0xA3B DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x9FF JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x40 DUP1 DUP5 MSTORE DUP2 MLOAD SWAP1 DUP5 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x20 SWAP2 SWAP1 DUP3 ADD SWAP1 PUSH1 0x60 DUP7 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xA94 JUMPI DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0xA6F JUMP JUMPDEST POP POP DUP5 DUP4 ADD MLOAD DUP7 DUP3 SUB DUP8 DUP6 ADD MSTORE DUP1 MLOAD DUP1 DUP4 MSTORE SWAP1 DUP5 ADD SWAP3 POP PUSH1 0x0 SWAP2 DUP5 ADD SWAP1 JUMPDEST DUP1 DUP4 LT ISZERO PUSH2 0xAD7 JUMPI PUSH2 0xAC5 DUP3 DUP6 MLOAD PUSH2 0x8E9 JUMP JUMPDEST SWAP2 POP DUP5 DUP5 ADD SWAP4 POP PUSH1 0x1 DUP4 ADD SWAP3 POP PUSH2 0xAB2 JUMP JUMPDEST POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 PUSH2 0xAF5 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0xA23 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0xB07 DUP2 DUP6 PUSH2 0xA4F JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xB39 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB42 DUP4 PUSH2 0x85C JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xB5F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xB73 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0xB85 JUMPI PUSH2 0xB85 PUSH2 0xB10 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0xBAD JUMPI PUSH2 0xBAD PUSH2 0xB10 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0xBC6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0x73A PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0xA4F JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND DUP3 DUP3 AND SUB SWAP1 DUP1 DUP3 GT ISZERO PUSH2 0x4A9 JUMPI PUSH2 0x4A9 PUSH2 0xC0A JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND DUP2 DUP2 SUB PUSH2 0xC72 JUMPI PUSH2 0xC72 PUSH2 0xC0A JUMP JUMPDEST PUSH1 0x1 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0xC8E DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x9FF JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x1D8 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0xA23 JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x19 PUSH2 0x1E JUMP JUMPDEST PUSH2 0xDD JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x8A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x27 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320696E697469 PUSH1 0x44 DUP3 ADD MSTORE PUSH7 0x616C697A696E67 PUSH1 0xC8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xFF SWAP1 DUP2 AND EQ PUSH2 0xDB JUMPI PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST JUMP JUMPDEST PUSH2 0x57A DUP1 PUSH2 0xEC PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xA3 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6ACCAB8C GT PUSH2 0x76 JUMPI DUP1 PUSH4 0xC4D66DE8 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0x145 JUMPI DUP1 PUSH4 0xD4B83992 EQ PUSH2 0x158 JUMPI DUP1 PUSH4 0xEFE51CCA EQ PUSH2 0x16B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6ACCAB8C EQ PUSH2 0x119 JUMPI DUP1 PUSH4 0x776D1A01 EQ PUSH2 0x130 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xA8 JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0xD0 JUMPI DUP1 PUSH4 0x4162169F EQ PUSH2 0xE5 JUMPI DUP1 PUSH4 0x41DE6830 EQ PUSH2 0x10A JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xBB PUSH2 0xB6 CALLDATASIZE PUSH1 0x4 PUSH2 0x4AE JUMP JUMPDEST PUSH2 0x174 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xD8 PUSH2 0x1C5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xC7 SWAP2 SWAP1 PUSH2 0x4DF JUMP JUMPDEST PUSH1 0x65 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xC7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x40 MLOAD PUSH2 0xC7 SWAP2 SWAP1 PUSH2 0x513 JUMP JUMPDEST PUSH2 0x122 PUSH1 0x98 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xC7 JUMP JUMPDEST PUSH2 0x143 PUSH2 0x13E CALLDATASIZE PUSH1 0x4 PUSH2 0x550 JUMP JUMPDEST PUSH2 0x1EF JUMP JUMPDEST STOP JUMPDEST PUSH2 0x143 PUSH2 0x153 CALLDATASIZE PUSH1 0x4 PUSH2 0x550 JUMP JUMPDEST PUSH2 0x24E JUMP JUMPDEST PUSH1 0x97 SLOAD PUSH2 0xF2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x122 PUSH1 0x99 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x41DE683 PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x1A4 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x1BF JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1CD PUSH2 0x490 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x97 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP2 SWAP1 DUP3 SWAP1 PUSH32 0x90CC2F570A6EB594B1580EA3E41247D2D73A55281889E86BD4EC2FC29C7E62D6 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 DUP1 ISZERO PUSH2 0x26E JUMPI POP PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xFF SWAP1 SWAP2 AND LT JUMPDEST DUP1 PUSH2 0x288 JUMPI POP ADDRESS EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x288 JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF AND PUSH1 0x1 EQ JUMPDEST PUSH2 0x2FF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x647920696E697469616C697A6564000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE DUP1 ISZERO PUSH2 0x322 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND PUSH2 0x100 OR SWAP1 SSTORE JUMPDEST PUSH2 0x32B DUP3 PUSH2 0x37F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x98 SSTORE PUSH1 0x2 PUSH1 0x99 SSTORE DUP1 ISZERO PUSH2 0x37B JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x3EA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x2F6 JUMP JUMPDEST PUSH2 0x3F3 DUP2 PUSH2 0x3F6 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x461 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x2F6 JUMP JUMPDEST PUSH1 0x65 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x4D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0x50A JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x4E8 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH1 0x3 DUP4 LT PUSH2 0x535 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 SWAP1 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x3F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x562 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x4D8 DUP2 PUSH2 0x53B JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"2043:1127:27:-:0;;;2183:70;;;;;;;;;;2217:31;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1454:32:45;;;2043:1127:27;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_revert_2136":{"entryPoint":null,"id":2136,"parameterSlots":2,"returnSlots":0},"@clone_1347":{"entryPoint":1385,"id":1347,"parameterSlots":1,"returnSlots":1},"@deployMinimalProxy_5101":{"entryPoint":1144,"id":5101,"parameterSlots":2,"returnSlots":1},"@functionCallWithValue_1961":{"entryPoint":null,"id":1961,"parameterSlots":4,"returnSlots":1},"@functionCall_1877":{"entryPoint":1551,"id":1877,"parameterSlots":2,"returnSlots":1},"@implementation_4956":{"entryPoint":null,"id":4956,"parameterSlots":0,"returnSlots":1},"@isContract_1825":{"entryPoint":null,"id":1825,"parameterSlots":1,"returnSlots":1},"@mockHelpers_3108":{"entryPoint":1200,"id":3108,"parameterSlots":1,"returnSlots":1},"@mockPermissions_3069":{"entryPoint":755,"id":3069,"parameterSlots":3,"returnSlots":1},"@prepareInstallation_2816":{"entryPoint":535,"id":2816,"parameterSlots":2,"returnSlots":2},"@prepareUninstallation_2844":{"entryPoint":456,"id":2844,"parameterSlots":2,"returnSlots":1},"@prepareUpdate_4918":{"entryPoint":479,"id":4918,"parameterSlots":3,"returnSlots":2},"@protocolVersion_5135":{"entryPoint":414,"id":5135,"parameterSlots":0,"returnSlots":1},"@supportsInterface_2374":{"entryPoint":null,"id":2374,"parameterSlots":1,"returnSlots":1},"@supportsInterface_4947":{"entryPoint":333,"id":4947,"parameterSlots":1,"returnSlots":1},"@verifyCallResultFromTarget_2092":{"entryPoint":1858,"id":2092,"parameterSlots":4,"returnSlots":1},"abi_decode_address":{"entryPoint":2140,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_struct_SetupPayload_calldata":{"entryPoint":2163,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_bytes_memory_ptr":{"entryPoint":2854,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_struct$_SetupPayload_$4810_calldata_ptr":{"entryPoint":2181,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_uint16t_struct$_SetupPayload_$4810_calldata_ptr":{"entryPoint":2456,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_bytes4":{"entryPoint":2046,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encodeUpdatedPos_struct_MultiTargetPermission":{"entryPoint":2281,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_bytes":{"entryPoint":2595,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_struct_PreparedSetupData":{"entryPoint":2639,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":3196,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address_t_struct$_PreparedSetupData_$4802_memory_ptr__to_t_address_t_struct$_PreparedSetupData_$4802_memory_ptr__fromStack_reversed":{"entryPoint":3048,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr__fromStack_reversed":{"entryPoint":2383,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed":{"entryPoint":2088,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$4802_memory_ptr__to_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$4802_memory_ptr__fromStack_reversed":{"entryPoint":2786,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_contract$_IDAO_$2538__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":3224,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_68ca40b61460257f14e69f48b1a4dbc812e9afc6932f127ef8084544457b3335__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"checked_sub_t_uint160":{"entryPoint":3104,"id":null,"parameterSlots":2,"returnSlots":1},"copy_memory_to_memory_with_cleanup":{"entryPoint":2559,"id":null,"parameterSlots":3,"returnSlots":0},"increment_t_uint160":{"entryPoint":3158,"id":null,"parameterSlots":1,"returnSlots":1},"panic_error_0x11":{"entryPoint":3082,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x21":{"entryPoint":2259,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x32":{"entryPoint":3136,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":2832,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:10500:50","statements":[{"nodeType":"YulBlock","src":"6:3:50","statements":[]},{"body":{"nodeType":"YulBlock","src":"83:217:50","statements":[{"body":{"nodeType":"YulBlock","src":"129:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"138:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"141:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"131:6:50"},"nodeType":"YulFunctionCall","src":"131:12:50"},"nodeType":"YulExpressionStatement","src":"131:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"104:7:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"113:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"100:3:50"},"nodeType":"YulFunctionCall","src":"100:23:50"},{"kind":"number","nodeType":"YulLiteral","src":"125:2:50","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"96:3:50"},"nodeType":"YulFunctionCall","src":"96:32:50"},"nodeType":"YulIf","src":"93:52:50"},{"nodeType":"YulVariableDeclaration","src":"154:36:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"180:9:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"167:12:50"},"nodeType":"YulFunctionCall","src":"167:23:50"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"158:5:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"254:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"263:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"266:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"256:6:50"},"nodeType":"YulFunctionCall","src":"256:12:50"},"nodeType":"YulExpressionStatement","src":"256:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"212:5:50"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"223:5:50"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"234:3:50","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"239:10:50","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"230:3:50"},"nodeType":"YulFunctionCall","src":"230:20:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"219:3:50"},"nodeType":"YulFunctionCall","src":"219:32:50"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"209:2:50"},"nodeType":"YulFunctionCall","src":"209:43:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"202:6:50"},"nodeType":"YulFunctionCall","src":"202:51:50"},"nodeType":"YulIf","src":"199:71:50"},{"nodeType":"YulAssignment","src":"279:15:50","value":{"name":"value","nodeType":"YulIdentifier","src":"289:5:50"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"279:6:50"}]}]},"name":"abi_decode_tuple_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"49:9:50","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"60:7:50","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"72:6:50","type":""}],"src":"14:286:50"},{"body":{"nodeType":"YulBlock","src":"400:92:50","statements":[{"nodeType":"YulAssignment","src":"410:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"422:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"433:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"418:3:50"},"nodeType":"YulFunctionCall","src":"418:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"410:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"452:9:50"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"477:6:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"470:6:50"},"nodeType":"YulFunctionCall","src":"470:14:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"463:6:50"},"nodeType":"YulFunctionCall","src":"463:22:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"445:6:50"},"nodeType":"YulFunctionCall","src":"445:41:50"},"nodeType":"YulExpressionStatement","src":"445:41:50"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"369:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"380:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"391:4:50","type":""}],"src":"305:187:50"},{"body":{"nodeType":"YulBlock","src":"640:358:50","statements":[{"nodeType":"YulAssignment","src":"650:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"662:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"673:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"658:3:50"},"nodeType":"YulFunctionCall","src":"658:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"650:4:50"}]},{"nodeType":"YulVariableDeclaration","src":"685:20:50","value":{"name":"headStart","nodeType":"YulIdentifier","src":"696:9:50"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"689:3:50","type":""}]},{"nodeType":"YulAssignment","src":"714:16:50","value":{"name":"headStart","nodeType":"YulIdentifier","src":"721:9:50"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"714:3:50"}]},{"nodeType":"YulVariableDeclaration","src":"739:20:50","value":{"name":"value0","nodeType":"YulIdentifier","src":"753:6:50"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"743:6:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"768:10:50","value":{"kind":"number","nodeType":"YulLiteral","src":"777:1:50","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"772:1:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"834:158:50","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"855:3:50"},{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"870:6:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"864:5:50"},"nodeType":"YulFunctionCall","src":"864:13:50"},{"kind":"number","nodeType":"YulLiteral","src":"879:4:50","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"860:3:50"},"nodeType":"YulFunctionCall","src":"860:24:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"848:6:50"},"nodeType":"YulFunctionCall","src":"848:37:50"},"nodeType":"YulExpressionStatement","src":"848:37:50"},{"nodeType":"YulVariableDeclaration","src":"898:14:50","value":{"kind":"number","nodeType":"YulLiteral","src":"908:4:50","type":"","value":"0x20"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"902:2:50","type":""}]},{"nodeType":"YulAssignment","src":"925:19:50","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"936:3:50"},{"name":"_1","nodeType":"YulIdentifier","src":"941:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"932:3:50"},"nodeType":"YulFunctionCall","src":"932:12:50"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"925:3:50"}]},{"nodeType":"YulAssignment","src":"957:25:50","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"971:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"979:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"967:3:50"},"nodeType":"YulFunctionCall","src":"967:15:50"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"957:6:50"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"798:1:50"},{"kind":"number","nodeType":"YulLiteral","src":"801:4:50","type":"","value":"0x03"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"795:2:50"},"nodeType":"YulFunctionCall","src":"795:11:50"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"807:18:50","statements":[{"nodeType":"YulAssignment","src":"809:14:50","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"818:1:50"},{"kind":"number","nodeType":"YulLiteral","src":"821:1:50","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"814:3:50"},"nodeType":"YulFunctionCall","src":"814:9:50"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"809:1:50"}]}]},"pre":{"nodeType":"YulBlock","src":"791:3:50","statements":[]},"src":"787:205:50"}]},"name":"abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"609:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"620:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"631:4:50","type":""}],"src":"497:501:50"},{"body":{"nodeType":"YulBlock","src":"1104:125:50","statements":[{"nodeType":"YulAssignment","src":"1114:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1126:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"1137:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1122:3:50"},"nodeType":"YulFunctionCall","src":"1122:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1114:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1156:9:50"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1171:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"1179:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1167:3:50"},"nodeType":"YulFunctionCall","src":"1167:55:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1149:6:50"},"nodeType":"YulFunctionCall","src":"1149:74:50"},"nodeType":"YulExpressionStatement","src":"1149:74:50"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1073:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1084:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1095:4:50","type":""}],"src":"1003:226:50"},{"body":{"nodeType":"YulBlock","src":"1283:147:50","statements":[{"nodeType":"YulAssignment","src":"1293:29:50","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1315:6:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1302:12:50"},"nodeType":"YulFunctionCall","src":"1302:20:50"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"1293:5:50"}]},{"body":{"nodeType":"YulBlock","src":"1408:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1417:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1420:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1410:6:50"},"nodeType":"YulFunctionCall","src":"1410:12:50"},"nodeType":"YulExpressionStatement","src":"1410:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1344:5:50"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1355:5:50"},{"kind":"number","nodeType":"YulLiteral","src":"1362:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1351:3:50"},"nodeType":"YulFunctionCall","src":"1351:54:50"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1341:2:50"},"nodeType":"YulFunctionCall","src":"1341:65:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1334:6:50"},"nodeType":"YulFunctionCall","src":"1334:73:50"},"nodeType":"YulIf","src":"1331:93:50"}]},"name":"abi_decode_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"1262:6:50","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"1273:5:50","type":""}],"src":"1234:196:50"},{"body":{"nodeType":"YulBlock","src":"1510:85:50","statements":[{"body":{"nodeType":"YulBlock","src":"1549:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1558:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1561:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1551:6:50"},"nodeType":"YulFunctionCall","src":"1551:12:50"},"nodeType":"YulExpressionStatement","src":"1551:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"end","nodeType":"YulIdentifier","src":"1531:3:50"},{"name":"offset","nodeType":"YulIdentifier","src":"1536:6:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1527:3:50"},"nodeType":"YulFunctionCall","src":"1527:16:50"},{"kind":"number","nodeType":"YulLiteral","src":"1545:2:50","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1523:3:50"},"nodeType":"YulFunctionCall","src":"1523:25:50"},"nodeType":"YulIf","src":"1520:45:50"},{"nodeType":"YulAssignment","src":"1574:15:50","value":{"name":"offset","nodeType":"YulIdentifier","src":"1583:6:50"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"1574:5:50"}]}]},"name":"abi_decode_struct_SetupPayload_calldata","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"1484:6:50","type":""},{"name":"end","nodeType":"YulTypedName","src":"1492:3:50","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"1500:5:50","type":""}],"src":"1435:160:50"},{"body":{"nodeType":"YulBlock","src":"1719:321:50","statements":[{"body":{"nodeType":"YulBlock","src":"1765:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1774:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1777:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1767:6:50"},"nodeType":"YulFunctionCall","src":"1767:12:50"},"nodeType":"YulExpressionStatement","src":"1767:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1740:7:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"1749:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1736:3:50"},"nodeType":"YulFunctionCall","src":"1736:23:50"},{"kind":"number","nodeType":"YulLiteral","src":"1761:2:50","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1732:3:50"},"nodeType":"YulFunctionCall","src":"1732:32:50"},"nodeType":"YulIf","src":"1729:52:50"},{"nodeType":"YulAssignment","src":"1790:39:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1819:9:50"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"1800:18:50"},"nodeType":"YulFunctionCall","src":"1800:29:50"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1790:6:50"}]},{"nodeType":"YulVariableDeclaration","src":"1838:46:50","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1869:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"1880:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1865:3:50"},"nodeType":"YulFunctionCall","src":"1865:18:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1852:12:50"},"nodeType":"YulFunctionCall","src":"1852:32:50"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1842:6:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"1927:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1936:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1939:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1929:6:50"},"nodeType":"YulFunctionCall","src":"1929:12:50"},"nodeType":"YulExpressionStatement","src":"1929:12:50"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1899:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"1907:18:50","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1896:2:50"},"nodeType":"YulFunctionCall","src":"1896:30:50"},"nodeType":"YulIf","src":"1893:50:50"},{"nodeType":"YulAssignment","src":"1952:82:50","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2006:9:50"},{"name":"offset","nodeType":"YulIdentifier","src":"2017:6:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2002:3:50"},"nodeType":"YulFunctionCall","src":"2002:22:50"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2026:7:50"}],"functionName":{"name":"abi_decode_struct_SetupPayload_calldata","nodeType":"YulIdentifier","src":"1962:39:50"},"nodeType":"YulFunctionCall","src":"1962:72:50"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1952:6:50"}]}]},"name":"abi_decode_tuple_t_addresst_struct$_SetupPayload_$4810_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1677:9:50","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1688:7:50","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1700:6:50","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1708:6:50","type":""}],"src":"1600:440:50"},{"body":{"nodeType":"YulBlock","src":"2077:95:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2094:1:50","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2101:3:50","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"2106:10:50","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2097:3:50"},"nodeType":"YulFunctionCall","src":"2097:20:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2087:6:50"},"nodeType":"YulFunctionCall","src":"2087:31:50"},"nodeType":"YulExpressionStatement","src":"2087:31:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2134:1:50","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"2137:4:50","type":"","value":"0x21"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2127:6:50"},"nodeType":"YulFunctionCall","src":"2127:15:50"},"nodeType":"YulExpressionStatement","src":"2127:15:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2158:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2161:4:50","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2151:6:50"},"nodeType":"YulFunctionCall","src":"2151:15:50"},"nodeType":"YulExpressionStatement","src":"2151:15:50"}]},"name":"panic_error_0x21","nodeType":"YulFunctionDefinition","src":"2045:127:50"},{"body":{"nodeType":"YulBlock","src":"2267:606:50","statements":[{"nodeType":"YulVariableDeclaration","src":"2277:23:50","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2293:6:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2287:5:50"},"nodeType":"YulFunctionCall","src":"2287:13:50"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"2281:2:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"2338:111:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2359:1:50","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2366:3:50","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"2371:10:50","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2362:3:50"},"nodeType":"YulFunctionCall","src":"2362:20:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2352:6:50"},"nodeType":"YulFunctionCall","src":"2352:31:50"},"nodeType":"YulExpressionStatement","src":"2352:31:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2403:1:50","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"2406:4:50","type":"","value":"0x21"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2396:6:50"},"nodeType":"YulFunctionCall","src":"2396:15:50"},"nodeType":"YulExpressionStatement","src":"2396:15:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2431:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2434:4:50","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2424:6:50"},"nodeType":"YulFunctionCall","src":"2424:15:50"},"nodeType":"YulExpressionStatement","src":"2424:15:50"}]},"condition":{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"2322:2:50"},{"kind":"number","nodeType":"YulLiteral","src":"2326:1:50","type":"","value":"3"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2319:2:50"},"nodeType":"YulFunctionCall","src":"2319:9:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2312:6:50"},"nodeType":"YulFunctionCall","src":"2312:17:50"},"nodeType":"YulIf","src":"2309:140:50"},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2465:3:50"},{"name":"_1","nodeType":"YulIdentifier","src":"2470:2:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2458:6:50"},"nodeType":"YulFunctionCall","src":"2458:15:50"},"nodeType":"YulExpressionStatement","src":"2458:15:50"},{"nodeType":"YulVariableDeclaration","src":"2482:44:50","value":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2512:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"2520:4:50","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2508:3:50"},"nodeType":"YulFunctionCall","src":"2508:17:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2502:5:50"},"nodeType":"YulFunctionCall","src":"2502:24:50"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"2486:12:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2535:52:50","value":{"kind":"number","nodeType":"YulLiteral","src":"2545:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"2539:2:50","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2607:3:50"},{"kind":"number","nodeType":"YulLiteral","src":"2612:4:50","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2603:3:50"},"nodeType":"YulFunctionCall","src":"2603:14:50"},{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"2623:12:50"},{"name":"_2","nodeType":"YulIdentifier","src":"2637:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2619:3:50"},"nodeType":"YulFunctionCall","src":"2619:21:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2596:6:50"},"nodeType":"YulFunctionCall","src":"2596:45:50"},"nodeType":"YulExpressionStatement","src":"2596:45:50"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2661:3:50"},{"kind":"number","nodeType":"YulLiteral","src":"2666:4:50","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2657:3:50"},"nodeType":"YulFunctionCall","src":"2657:14:50"},{"arguments":[{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2687:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"2695:4:50","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2683:3:50"},"nodeType":"YulFunctionCall","src":"2683:17:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2677:5:50"},"nodeType":"YulFunctionCall","src":"2677:24:50"},{"name":"_2","nodeType":"YulIdentifier","src":"2703:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2673:3:50"},"nodeType":"YulFunctionCall","src":"2673:33:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2650:6:50"},"nodeType":"YulFunctionCall","src":"2650:57:50"},"nodeType":"YulExpressionStatement","src":"2650:57:50"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2727:3:50"},{"kind":"number","nodeType":"YulLiteral","src":"2732:4:50","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2723:3:50"},"nodeType":"YulFunctionCall","src":"2723:14:50"},{"arguments":[{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2753:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"2761:4:50","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2749:3:50"},"nodeType":"YulFunctionCall","src":"2749:17:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2743:5:50"},"nodeType":"YulFunctionCall","src":"2743:24:50"},{"name":"_2","nodeType":"YulIdentifier","src":"2769:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2739:3:50"},"nodeType":"YulFunctionCall","src":"2739:33:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2716:6:50"},"nodeType":"YulFunctionCall","src":"2716:57:50"},"nodeType":"YulExpressionStatement","src":"2716:57:50"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2793:3:50"},{"kind":"number","nodeType":"YulLiteral","src":"2798:4:50","type":"","value":"0x80"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2789:3:50"},"nodeType":"YulFunctionCall","src":"2789:14:50"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2815:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"2823:4:50","type":"","value":"0x80"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2811:3:50"},"nodeType":"YulFunctionCall","src":"2811:17:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2805:5:50"},"nodeType":"YulFunctionCall","src":"2805:24:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2782:6:50"},"nodeType":"YulFunctionCall","src":"2782:48:50"},"nodeType":"YulExpressionStatement","src":"2782:48:50"},{"nodeType":"YulAssignment","src":"2839:28:50","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2857:3:50"},{"kind":"number","nodeType":"YulLiteral","src":"2862:4:50","type":"","value":"0xa0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2853:3:50"},"nodeType":"YulFunctionCall","src":"2853:14:50"},"variableNames":[{"name":"updatedPos","nodeType":"YulIdentifier","src":"2839:10:50"}]}]},"name":"abi_encodeUpdatedPos_struct_MultiTargetPermission","nodeType":"YulFunctionDefinition","parameters":[{"name":"value0","nodeType":"YulTypedName","src":"2236:6:50","type":""},{"name":"pos","nodeType":"YulTypedName","src":"2244:3:50","type":""}],"returnVariables":[{"name":"updatedPos","nodeType":"YulTypedName","src":"2252:10:50","type":""}],"src":"2177:696:50"},{"body":{"nodeType":"YulBlock","src":"3107:499:50","statements":[{"nodeType":"YulVariableDeclaration","src":"3117:12:50","value":{"kind":"number","nodeType":"YulLiteral","src":"3127:2:50","type":"","value":"32"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"3121:2:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3138:32:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3156:9:50"},{"name":"_1","nodeType":"YulIdentifier","src":"3167:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3152:3:50"},"nodeType":"YulFunctionCall","src":"3152:18:50"},"variables":[{"name":"tail_1","nodeType":"YulTypedName","src":"3142:6:50","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3186:9:50"},{"name":"_1","nodeType":"YulIdentifier","src":"3197:2:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3179:6:50"},"nodeType":"YulFunctionCall","src":"3179:21:50"},"nodeType":"YulExpressionStatement","src":"3179:21:50"},{"nodeType":"YulVariableDeclaration","src":"3209:17:50","value":{"name":"tail_1","nodeType":"YulIdentifier","src":"3220:6:50"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"3213:3:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3235:27:50","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3255:6:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3249:5:50"},"nodeType":"YulFunctionCall","src":"3249:13:50"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"3239:6:50","type":""}]},{"expression":{"arguments":[{"name":"tail_1","nodeType":"YulIdentifier","src":"3278:6:50"},{"name":"length","nodeType":"YulIdentifier","src":"3286:6:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3271:6:50"},"nodeType":"YulFunctionCall","src":"3271:22:50"},"nodeType":"YulExpressionStatement","src":"3271:22:50"},{"nodeType":"YulAssignment","src":"3302:25:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3313:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"3324:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3309:3:50"},"nodeType":"YulFunctionCall","src":"3309:18:50"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"3302:3:50"}]},{"nodeType":"YulVariableDeclaration","src":"3336:29:50","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3354:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"3362:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3350:3:50"},"nodeType":"YulFunctionCall","src":"3350:15:50"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"3340:6:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3374:10:50","value":{"kind":"number","nodeType":"YulLiteral","src":"3383:1:50","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"3378:1:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"3442:138:50","statements":[{"nodeType":"YulAssignment","src":"3456:76:50","value":{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"3519:6:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3513:5:50"},"nodeType":"YulFunctionCall","src":"3513:13:50"},{"name":"pos","nodeType":"YulIdentifier","src":"3528:3:50"}],"functionName":{"name":"abi_encodeUpdatedPos_struct_MultiTargetPermission","nodeType":"YulIdentifier","src":"3463:49:50"},"nodeType":"YulFunctionCall","src":"3463:69:50"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"3456:3:50"}]},{"nodeType":"YulAssignment","src":"3545:25:50","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"3559:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"3567:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3555:3:50"},"nodeType":"YulFunctionCall","src":"3555:15:50"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"3545:6:50"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3404:1:50"},{"name":"length","nodeType":"YulIdentifier","src":"3407:6:50"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"3401:2:50"},"nodeType":"YulFunctionCall","src":"3401:13:50"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"3415:18:50","statements":[{"nodeType":"YulAssignment","src":"3417:14:50","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3426:1:50"},{"kind":"number","nodeType":"YulLiteral","src":"3429:1:50","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3422:3:50"},"nodeType":"YulFunctionCall","src":"3422:9:50"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"3417:1:50"}]}]},"pre":{"nodeType":"YulBlock","src":"3397:3:50","statements":[]},"src":"3393:187:50"},{"nodeType":"YulAssignment","src":"3589:11:50","value":{"name":"pos","nodeType":"YulIdentifier","src":"3597:3:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3589:4:50"}]}]},"name":"abi_encode_tuple_t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3076:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3087:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3098:4:50","type":""}],"src":"2878:728:50"},{"body":{"nodeType":"YulBlock","src":"3746:465:50","statements":[{"body":{"nodeType":"YulBlock","src":"3792:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3801:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3804:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3794:6:50"},"nodeType":"YulFunctionCall","src":"3794:12:50"},"nodeType":"YulExpressionStatement","src":"3794:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3767:7:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"3776:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3763:3:50"},"nodeType":"YulFunctionCall","src":"3763:23:50"},{"kind":"number","nodeType":"YulLiteral","src":"3788:2:50","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3759:3:50"},"nodeType":"YulFunctionCall","src":"3759:32:50"},"nodeType":"YulIf","src":"3756:52:50"},{"nodeType":"YulAssignment","src":"3817:39:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3846:9:50"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"3827:18:50"},"nodeType":"YulFunctionCall","src":"3827:29:50"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3817:6:50"}]},{"nodeType":"YulVariableDeclaration","src":"3865:45:50","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3895:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"3906:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3891:3:50"},"nodeType":"YulFunctionCall","src":"3891:18:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3878:12:50"},"nodeType":"YulFunctionCall","src":"3878:32:50"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"3869:5:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"3960:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3969:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3972:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3962:6:50"},"nodeType":"YulFunctionCall","src":"3962:12:50"},"nodeType":"YulExpressionStatement","src":"3962:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3932:5:50"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3943:5:50"},{"kind":"number","nodeType":"YulLiteral","src":"3950:6:50","type":"","value":"0xffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3939:3:50"},"nodeType":"YulFunctionCall","src":"3939:18:50"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"3929:2:50"},"nodeType":"YulFunctionCall","src":"3929:29:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3922:6:50"},"nodeType":"YulFunctionCall","src":"3922:37:50"},"nodeType":"YulIf","src":"3919:57:50"},{"nodeType":"YulAssignment","src":"3985:15:50","value":{"name":"value","nodeType":"YulIdentifier","src":"3995:5:50"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"3985:6:50"}]},{"nodeType":"YulVariableDeclaration","src":"4009:46:50","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4040:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"4051:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4036:3:50"},"nodeType":"YulFunctionCall","src":"4036:18:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4023:12:50"},"nodeType":"YulFunctionCall","src":"4023:32:50"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4013:6:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"4098:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4107:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4110:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4100:6:50"},"nodeType":"YulFunctionCall","src":"4100:12:50"},"nodeType":"YulExpressionStatement","src":"4100:12:50"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"4070:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"4078:18:50","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4067:2:50"},"nodeType":"YulFunctionCall","src":"4067:30:50"},"nodeType":"YulIf","src":"4064:50:50"},{"nodeType":"YulAssignment","src":"4123:82:50","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4177:9:50"},{"name":"offset","nodeType":"YulIdentifier","src":"4188:6:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4173:3:50"},"nodeType":"YulFunctionCall","src":"4173:22:50"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4197:7:50"}],"functionName":{"name":"abi_decode_struct_SetupPayload_calldata","nodeType":"YulIdentifier","src":"4133:39:50"},"nodeType":"YulFunctionCall","src":"4133:72:50"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"4123:6:50"}]}]},"name":"abi_decode_tuple_t_addresst_uint16t_struct$_SetupPayload_$4810_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3696:9:50","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3707:7:50","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3719:6:50","type":""},{"name":"value1","nodeType":"YulTypedName","src":"3727:6:50","type":""},{"name":"value2","nodeType":"YulTypedName","src":"3735:6:50","type":""}],"src":"3611:600:50"},{"body":{"nodeType":"YulBlock","src":"4282:184:50","statements":[{"nodeType":"YulVariableDeclaration","src":"4292:10:50","value":{"kind":"number","nodeType":"YulLiteral","src":"4301:1:50","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"4296:1:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"4361:63:50","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"4386:3:50"},{"name":"i","nodeType":"YulIdentifier","src":"4391:1:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4382:3:50"},"nodeType":"YulFunctionCall","src":"4382:11:50"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"4405:3:50"},{"name":"i","nodeType":"YulIdentifier","src":"4410:1:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4401:3:50"},"nodeType":"YulFunctionCall","src":"4401:11:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4395:5:50"},"nodeType":"YulFunctionCall","src":"4395:18:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4375:6:50"},"nodeType":"YulFunctionCall","src":"4375:39:50"},"nodeType":"YulExpressionStatement","src":"4375:39:50"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"4322:1:50"},{"name":"length","nodeType":"YulIdentifier","src":"4325:6:50"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"4319:2:50"},"nodeType":"YulFunctionCall","src":"4319:13:50"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"4333:19:50","statements":[{"nodeType":"YulAssignment","src":"4335:15:50","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"4344:1:50"},{"kind":"number","nodeType":"YulLiteral","src":"4347:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4340:3:50"},"nodeType":"YulFunctionCall","src":"4340:10:50"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"4335:1:50"}]}]},"pre":{"nodeType":"YulBlock","src":"4315:3:50","statements":[]},"src":"4311:113:50"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"4444:3:50"},{"name":"length","nodeType":"YulIdentifier","src":"4449:6:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4440:3:50"},"nodeType":"YulFunctionCall","src":"4440:16:50"},{"kind":"number","nodeType":"YulLiteral","src":"4458:1:50","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4433:6:50"},"nodeType":"YulFunctionCall","src":"4433:27:50"},"nodeType":"YulExpressionStatement","src":"4433:27:50"}]},"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"4260:3:50","type":""},{"name":"dst","nodeType":"YulTypedName","src":"4265:3:50","type":""},{"name":"length","nodeType":"YulTypedName","src":"4270:6:50","type":""}],"src":"4216:250:50"},{"body":{"nodeType":"YulBlock","src":"4520:221:50","statements":[{"nodeType":"YulVariableDeclaration","src":"4530:26:50","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4550:5:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4544:5:50"},"nodeType":"YulFunctionCall","src":"4544:12:50"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"4534:6:50","type":""}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4572:3:50"},{"name":"length","nodeType":"YulIdentifier","src":"4577:6:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4565:6:50"},"nodeType":"YulFunctionCall","src":"4565:19:50"},"nodeType":"YulExpressionStatement","src":"4565:19:50"},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4632:5:50"},{"kind":"number","nodeType":"YulLiteral","src":"4639:4:50","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4628:3:50"},"nodeType":"YulFunctionCall","src":"4628:16:50"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4650:3:50"},{"kind":"number","nodeType":"YulLiteral","src":"4655:4:50","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4646:3:50"},"nodeType":"YulFunctionCall","src":"4646:14:50"},{"name":"length","nodeType":"YulIdentifier","src":"4662:6:50"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"4593:34:50"},"nodeType":"YulFunctionCall","src":"4593:76:50"},"nodeType":"YulExpressionStatement","src":"4593:76:50"},{"nodeType":"YulAssignment","src":"4678:57:50","value":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4693:3:50"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"4706:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"4714:2:50","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4702:3:50"},"nodeType":"YulFunctionCall","src":"4702:15:50"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4723:2:50","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"4719:3:50"},"nodeType":"YulFunctionCall","src":"4719:7:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4698:3:50"},"nodeType":"YulFunctionCall","src":"4698:29:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4689:3:50"},"nodeType":"YulFunctionCall","src":"4689:39:50"},{"kind":"number","nodeType":"YulLiteral","src":"4730:4:50","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4685:3:50"},"nodeType":"YulFunctionCall","src":"4685:50:50"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"4678:3:50"}]}]},"name":"abi_encode_bytes","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"4497:5:50","type":""},{"name":"pos","nodeType":"YulTypedName","src":"4504:3:50","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"4512:3:50","type":""}],"src":"4471:270:50"},{"body":{"nodeType":"YulBlock","src":"4814:1094:50","statements":[{"nodeType":"YulVariableDeclaration","src":"4824:26:50","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4840:3:50"},{"kind":"number","nodeType":"YulLiteral","src":"4845:4:50","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4836:3:50"},"nodeType":"YulFunctionCall","src":"4836:14:50"},"variables":[{"name":"tail","nodeType":"YulTypedName","src":"4828:4:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4859:32:50","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4885:5:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4879:5:50"},"nodeType":"YulFunctionCall","src":"4879:12:50"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"4863:12:50","type":""}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4907:3:50"},{"kind":"number","nodeType":"YulLiteral","src":"4912:4:50","type":"","value":"0x40"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4900:6:50"},"nodeType":"YulFunctionCall","src":"4900:17:50"},"nodeType":"YulExpressionStatement","src":"4900:17:50"},{"nodeType":"YulVariableDeclaration","src":"4926:17:50","value":{"name":"tail","nodeType":"YulIdentifier","src":"4939:4:50"},"variables":[{"name":"pos_1","nodeType":"YulTypedName","src":"4930:5:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4952:33:50","value":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"4972:12:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4966:5:50"},"nodeType":"YulFunctionCall","src":"4966:19:50"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"4956:6:50","type":""}]},{"expression":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"5001:4:50"},{"name":"length","nodeType":"YulIdentifier","src":"5007:6:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4994:6:50"},"nodeType":"YulFunctionCall","src":"4994:20:50"},"nodeType":"YulExpressionStatement","src":"4994:20:50"},{"nodeType":"YulAssignment","src":"5023:21:50","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5036:3:50"},{"kind":"number","nodeType":"YulLiteral","src":"5041:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5032:3:50"},"nodeType":"YulFunctionCall","src":"5032:12:50"},"variableNames":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5023:5:50"}]},{"nodeType":"YulVariableDeclaration","src":"5053:14:50","value":{"kind":"number","nodeType":"YulLiteral","src":"5063:4:50","type":"","value":"0x20"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"5057:2:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5076:35:50","value":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"5094:12:50"},{"name":"_1","nodeType":"YulIdentifier","src":"5108:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5090:3:50"},"nodeType":"YulFunctionCall","src":"5090:21:50"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"5080:6:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5120:10:50","value":{"kind":"number","nodeType":"YulLiteral","src":"5129:1:50","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"5124:1:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"5188:175:50","statements":[{"expression":{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5209:5:50"},{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"5226:6:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5220:5:50"},"nodeType":"YulFunctionCall","src":"5220:13:50"},{"kind":"number","nodeType":"YulLiteral","src":"5235:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5216:3:50"},"nodeType":"YulFunctionCall","src":"5216:62:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5202:6:50"},"nodeType":"YulFunctionCall","src":"5202:77:50"},"nodeType":"YulExpressionStatement","src":"5202:77:50"},{"nodeType":"YulAssignment","src":"5292:23:50","value":{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5305:5:50"},{"name":"_1","nodeType":"YulIdentifier","src":"5312:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5301:3:50"},"nodeType":"YulFunctionCall","src":"5301:14:50"},"variableNames":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5292:5:50"}]},{"nodeType":"YulAssignment","src":"5328:25:50","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"5342:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"5350:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5338:3:50"},"nodeType":"YulFunctionCall","src":"5338:15:50"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"5328:6:50"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"5150:1:50"},{"name":"length","nodeType":"YulIdentifier","src":"5153:6:50"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"5147:2:50"},"nodeType":"YulFunctionCall","src":"5147:13:50"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"5161:18:50","statements":[{"nodeType":"YulAssignment","src":"5163:14:50","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"5172:1:50"},{"kind":"number","nodeType":"YulLiteral","src":"5175:1:50","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5168:3:50"},"nodeType":"YulFunctionCall","src":"5168:9:50"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"5163:1:50"}]}]},"pre":{"nodeType":"YulBlock","src":"5143:3:50","statements":[]},"src":"5139:224:50"},{"nodeType":"YulVariableDeclaration","src":"5372:43:50","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5404:5:50"},{"name":"_1","nodeType":"YulIdentifier","src":"5411:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5400:3:50"},"nodeType":"YulFunctionCall","src":"5400:14:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5394:5:50"},"nodeType":"YulFunctionCall","src":"5394:21:50"},"variables":[{"name":"memberValue0_1","nodeType":"YulTypedName","src":"5376:14:50","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5435:3:50"},{"name":"_1","nodeType":"YulIdentifier","src":"5440:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5431:3:50"},"nodeType":"YulFunctionCall","src":"5431:12:50"},{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5449:5:50"},{"name":"pos","nodeType":"YulIdentifier","src":"5456:3:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5445:3:50"},"nodeType":"YulFunctionCall","src":"5445:15:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5424:6:50"},"nodeType":"YulFunctionCall","src":"5424:37:50"},"nodeType":"YulExpressionStatement","src":"5424:37:50"},{"nodeType":"YulVariableDeclaration","src":"5470:18:50","value":{"name":"pos_1","nodeType":"YulIdentifier","src":"5483:5:50"},"variables":[{"name":"pos_2","nodeType":"YulTypedName","src":"5474:5:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5497:37:50","value":{"arguments":[{"name":"memberValue0_1","nodeType":"YulIdentifier","src":"5519:14:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5513:5:50"},"nodeType":"YulFunctionCall","src":"5513:21:50"},"variables":[{"name":"length_1","nodeType":"YulTypedName","src":"5501:8:50","type":""}]},{"expression":{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5550:5:50"},{"name":"length_1","nodeType":"YulIdentifier","src":"5557:8:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5543:6:50"},"nodeType":"YulFunctionCall","src":"5543:23:50"},"nodeType":"YulExpressionStatement","src":"5543:23:50"},{"nodeType":"YulAssignment","src":"5575:23:50","value":{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5588:5:50"},{"name":"_1","nodeType":"YulIdentifier","src":"5595:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5584:3:50"},"nodeType":"YulFunctionCall","src":"5584:14:50"},"variableNames":[{"name":"pos_2","nodeType":"YulIdentifier","src":"5575:5:50"}]},{"nodeType":"YulVariableDeclaration","src":"5607:39:50","value":{"arguments":[{"name":"memberValue0_1","nodeType":"YulIdentifier","src":"5627:14:50"},{"name":"_1","nodeType":"YulIdentifier","src":"5643:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5623:3:50"},"nodeType":"YulFunctionCall","src":"5623:23:50"},"variables":[{"name":"srcPtr_1","nodeType":"YulTypedName","src":"5611:8:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5655:12:50","value":{"kind":"number","nodeType":"YulLiteral","src":"5666:1:50","type":"","value":"0"},"variables":[{"name":"i_1","nodeType":"YulTypedName","src":"5659:3:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"5733:148:50","statements":[{"nodeType":"YulAssignment","src":"5747:82:50","value":{"arguments":[{"arguments":[{"name":"srcPtr_1","nodeType":"YulIdentifier","src":"5812:8:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5806:5:50"},"nodeType":"YulFunctionCall","src":"5806:15:50"},{"name":"pos_2","nodeType":"YulIdentifier","src":"5823:5:50"}],"functionName":{"name":"abi_encodeUpdatedPos_struct_MultiTargetPermission","nodeType":"YulIdentifier","src":"5756:49:50"},"nodeType":"YulFunctionCall","src":"5756:73:50"},"variableNames":[{"name":"pos_2","nodeType":"YulIdentifier","src":"5747:5:50"}]},{"nodeType":"YulAssignment","src":"5842:29:50","value":{"arguments":[{"name":"srcPtr_1","nodeType":"YulIdentifier","src":"5858:8:50"},{"name":"_1","nodeType":"YulIdentifier","src":"5868:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5854:3:50"},"nodeType":"YulFunctionCall","src":"5854:17:50"},"variableNames":[{"name":"srcPtr_1","nodeType":"YulIdentifier","src":"5842:8:50"}]}]},"condition":{"arguments":[{"name":"i_1","nodeType":"YulIdentifier","src":"5687:3:50"},{"name":"length_1","nodeType":"YulIdentifier","src":"5692:8:50"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"5684:2:50"},"nodeType":"YulFunctionCall","src":"5684:17:50"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"5702:22:50","statements":[{"nodeType":"YulAssignment","src":"5704:18:50","value":{"arguments":[{"name":"i_1","nodeType":"YulIdentifier","src":"5715:3:50"},{"kind":"number","nodeType":"YulLiteral","src":"5720:1:50","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5711:3:50"},"nodeType":"YulFunctionCall","src":"5711:11:50"},"variableNames":[{"name":"i_1","nodeType":"YulIdentifier","src":"5704:3:50"}]}]},"pre":{"nodeType":"YulBlock","src":"5680:3:50","statements":[]},"src":"5676:205:50"},{"nodeType":"YulAssignment","src":"5890:12:50","value":{"name":"pos_2","nodeType":"YulIdentifier","src":"5897:5:50"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"5890:3:50"}]}]},"name":"abi_encode_struct_PreparedSetupData","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"4791:5:50","type":""},{"name":"pos","nodeType":"YulTypedName","src":"4798:3:50","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"4806:3:50","type":""}],"src":"4746:1162:50"},{"body":{"nodeType":"YulBlock","src":"6130:231:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6147:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"6158:2:50","type":"","value":"64"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6140:6:50"},"nodeType":"YulFunctionCall","src":"6140:21:50"},"nodeType":"YulExpressionStatement","src":"6140:21:50"},{"nodeType":"YulVariableDeclaration","src":"6170:58:50","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6201:6:50"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6213:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"6224:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6209:3:50"},"nodeType":"YulFunctionCall","src":"6209:18:50"}],"functionName":{"name":"abi_encode_bytes","nodeType":"YulIdentifier","src":"6184:16:50"},"nodeType":"YulFunctionCall","src":"6184:44:50"},"variables":[{"name":"tail_1","nodeType":"YulTypedName","src":"6174:6:50","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6248:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"6259:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6244:3:50"},"nodeType":"YulFunctionCall","src":"6244:18:50"},{"arguments":[{"name":"tail_1","nodeType":"YulIdentifier","src":"6268:6:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"6276:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6264:3:50"},"nodeType":"YulFunctionCall","src":"6264:22:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6237:6:50"},"nodeType":"YulFunctionCall","src":"6237:50:50"},"nodeType":"YulExpressionStatement","src":"6237:50:50"},{"nodeType":"YulAssignment","src":"6296:59:50","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"6340:6:50"},{"name":"tail_1","nodeType":"YulIdentifier","src":"6348:6:50"}],"functionName":{"name":"abi_encode_struct_PreparedSetupData","nodeType":"YulIdentifier","src":"6304:35:50"},"nodeType":"YulFunctionCall","src":"6304:51:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6296:4:50"}]}]},"name":"abi_encode_tuple_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$4802_memory_ptr__to_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$4802_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6091:9:50","type":""},{"name":"value1","nodeType":"YulTypedName","src":"6102:6:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"6110:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6121:4:50","type":""}],"src":"5913:448:50"},{"body":{"nodeType":"YulBlock","src":"6398:95:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6415:1:50","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6422:3:50","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"6427:10:50","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"6418:3:50"},"nodeType":"YulFunctionCall","src":"6418:20:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6408:6:50"},"nodeType":"YulFunctionCall","src":"6408:31:50"},"nodeType":"YulExpressionStatement","src":"6408:31:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6455:1:50","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"6458:4:50","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6448:6:50"},"nodeType":"YulFunctionCall","src":"6448:15:50"},"nodeType":"YulExpressionStatement","src":"6448:15:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6479:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6482:4:50","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6472:6:50"},"nodeType":"YulFunctionCall","src":"6472:15:50"},"nodeType":"YulExpressionStatement","src":"6472:15:50"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"6366:127:50"},{"body":{"nodeType":"YulBlock","src":"6594:899:50","statements":[{"body":{"nodeType":"YulBlock","src":"6640:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6649:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6652:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6642:6:50"},"nodeType":"YulFunctionCall","src":"6642:12:50"},"nodeType":"YulExpressionStatement","src":"6642:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"6615:7:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"6624:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6611:3:50"},"nodeType":"YulFunctionCall","src":"6611:23:50"},{"kind":"number","nodeType":"YulLiteral","src":"6636:2:50","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6607:3:50"},"nodeType":"YulFunctionCall","src":"6607:32:50"},"nodeType":"YulIf","src":"6604:52:50"},{"nodeType":"YulAssignment","src":"6665:39:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6694:9:50"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"6675:18:50"},"nodeType":"YulFunctionCall","src":"6675:29:50"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"6665:6:50"}]},{"nodeType":"YulVariableDeclaration","src":"6713:46:50","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6744:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"6755:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6740:3:50"},"nodeType":"YulFunctionCall","src":"6740:18:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6727:12:50"},"nodeType":"YulFunctionCall","src":"6727:32:50"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"6717:6:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"6768:28:50","value":{"kind":"number","nodeType":"YulLiteral","src":"6778:18:50","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"6772:2:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"6823:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6832:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6835:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6825:6:50"},"nodeType":"YulFunctionCall","src":"6825:12:50"},"nodeType":"YulExpressionStatement","src":"6825:12:50"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"6811:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"6819:2:50"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6808:2:50"},"nodeType":"YulFunctionCall","src":"6808:14:50"},"nodeType":"YulIf","src":"6805:34:50"},{"nodeType":"YulVariableDeclaration","src":"6848:32:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6862:9:50"},{"name":"offset","nodeType":"YulIdentifier","src":"6873:6:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6858:3:50"},"nodeType":"YulFunctionCall","src":"6858:22:50"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"6852:2:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"6928:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6937:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6940:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6930:6:50"},"nodeType":"YulFunctionCall","src":"6930:12:50"},"nodeType":"YulExpressionStatement","src":"6930:12:50"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"6907:2:50"},{"kind":"number","nodeType":"YulLiteral","src":"6911:4:50","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6903:3:50"},"nodeType":"YulFunctionCall","src":"6903:13:50"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"6918:7:50"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6899:3:50"},"nodeType":"YulFunctionCall","src":"6899:27:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"6892:6:50"},"nodeType":"YulFunctionCall","src":"6892:35:50"},"nodeType":"YulIf","src":"6889:55:50"},{"nodeType":"YulVariableDeclaration","src":"6953:26:50","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"6976:2:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6963:12:50"},"nodeType":"YulFunctionCall","src":"6963:16:50"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"6957:2:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"7002:22:50","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"7004:16:50"},"nodeType":"YulFunctionCall","src":"7004:18:50"},"nodeType":"YulExpressionStatement","src":"7004:18:50"}]},"condition":{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"6994:2:50"},{"name":"_1","nodeType":"YulIdentifier","src":"6998:2:50"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6991:2:50"},"nodeType":"YulFunctionCall","src":"6991:10:50"},"nodeType":"YulIf","src":"6988:36:50"},{"nodeType":"YulVariableDeclaration","src":"7033:17:50","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7047:2:50","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"7043:3:50"},"nodeType":"YulFunctionCall","src":"7043:7:50"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"7037:2:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"7059:23:50","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7079:2:50","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"7073:5:50"},"nodeType":"YulFunctionCall","src":"7073:9:50"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"7063:6:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"7091:71:50","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7113:6:50"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"7137:2:50"},{"kind":"number","nodeType":"YulLiteral","src":"7141:4:50","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7133:3:50"},"nodeType":"YulFunctionCall","src":"7133:13:50"},{"name":"_4","nodeType":"YulIdentifier","src":"7148:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7129:3:50"},"nodeType":"YulFunctionCall","src":"7129:22:50"},{"kind":"number","nodeType":"YulLiteral","src":"7153:2:50","type":"","value":"63"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7125:3:50"},"nodeType":"YulFunctionCall","src":"7125:31:50"},{"name":"_4","nodeType":"YulIdentifier","src":"7158:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7121:3:50"},"nodeType":"YulFunctionCall","src":"7121:40:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7109:3:50"},"nodeType":"YulFunctionCall","src":"7109:53:50"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"7095:10:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"7221:22:50","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"7223:16:50"},"nodeType":"YulFunctionCall","src":"7223:18:50"},"nodeType":"YulExpressionStatement","src":"7223:18:50"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"7180:10:50"},{"name":"_1","nodeType":"YulIdentifier","src":"7192:2:50"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"7177:2:50"},"nodeType":"YulFunctionCall","src":"7177:18:50"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"7200:10:50"},{"name":"memPtr","nodeType":"YulIdentifier","src":"7212:6:50"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"7197:2:50"},"nodeType":"YulFunctionCall","src":"7197:22:50"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"7174:2:50"},"nodeType":"YulFunctionCall","src":"7174:46:50"},"nodeType":"YulIf","src":"7171:72:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7259:2:50","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"7263:10:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7252:6:50"},"nodeType":"YulFunctionCall","src":"7252:22:50"},"nodeType":"YulExpressionStatement","src":"7252:22:50"},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7290:6:50"},{"name":"_3","nodeType":"YulIdentifier","src":"7298:2:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7283:6:50"},"nodeType":"YulFunctionCall","src":"7283:18:50"},"nodeType":"YulExpressionStatement","src":"7283:18:50"},{"body":{"nodeType":"YulBlock","src":"7347:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7356:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7359:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7349:6:50"},"nodeType":"YulFunctionCall","src":"7349:12:50"},"nodeType":"YulExpressionStatement","src":"7349:12:50"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"7324:2:50"},{"name":"_3","nodeType":"YulIdentifier","src":"7328:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7320:3:50"},"nodeType":"YulFunctionCall","src":"7320:11:50"},{"kind":"number","nodeType":"YulLiteral","src":"7333:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7316:3:50"},"nodeType":"YulFunctionCall","src":"7316:20:50"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"7338:7:50"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"7313:2:50"},"nodeType":"YulFunctionCall","src":"7313:33:50"},"nodeType":"YulIf","src":"7310:53:50"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7389:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"7397:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7385:3:50"},"nodeType":"YulFunctionCall","src":"7385:15:50"},{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"7406:2:50"},{"kind":"number","nodeType":"YulLiteral","src":"7410:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7402:3:50"},"nodeType":"YulFunctionCall","src":"7402:11:50"},{"name":"_3","nodeType":"YulIdentifier","src":"7415:2:50"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"7372:12:50"},"nodeType":"YulFunctionCall","src":"7372:46:50"},"nodeType":"YulExpressionStatement","src":"7372:46:50"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7442:6:50"},{"name":"_3","nodeType":"YulIdentifier","src":"7450:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7438:3:50"},"nodeType":"YulFunctionCall","src":"7438:15:50"},{"kind":"number","nodeType":"YulLiteral","src":"7455:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7434:3:50"},"nodeType":"YulFunctionCall","src":"7434:24:50"},{"kind":"number","nodeType":"YulLiteral","src":"7460:1:50","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7427:6:50"},"nodeType":"YulFunctionCall","src":"7427:35:50"},"nodeType":"YulExpressionStatement","src":"7427:35:50"},{"nodeType":"YulAssignment","src":"7471:16:50","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"7481:6:50"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"7471:6:50"}]}]},"name":"abi_decode_tuple_t_addresst_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6552:9:50","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"6563:7:50","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"6575:6:50","type":""},{"name":"value1","nodeType":"YulTypedName","src":"6583:6:50","type":""}],"src":"6498:995:50"},{"body":{"nodeType":"YulBlock","src":"7697:209:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7714:9:50"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7729:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"7737:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7725:3:50"},"nodeType":"YulFunctionCall","src":"7725:55:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7707:6:50"},"nodeType":"YulFunctionCall","src":"7707:74:50"},"nodeType":"YulExpressionStatement","src":"7707:74:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7801:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"7812:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7797:3:50"},"nodeType":"YulFunctionCall","src":"7797:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"7817:2:50","type":"","value":"64"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7790:6:50"},"nodeType":"YulFunctionCall","src":"7790:30:50"},"nodeType":"YulExpressionStatement","src":"7790:30:50"},{"nodeType":"YulAssignment","src":"7829:71:50","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"7873:6:50"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7885:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"7896:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7881:3:50"},"nodeType":"YulFunctionCall","src":"7881:18:50"}],"functionName":{"name":"abi_encode_struct_PreparedSetupData","nodeType":"YulIdentifier","src":"7837:35:50"},"nodeType":"YulFunctionCall","src":"7837:63:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7829:4:50"}]}]},"name":"abi_encode_tuple_t_address_t_struct$_PreparedSetupData_$4802_memory_ptr__to_t_address_t_struct$_PreparedSetupData_$4802_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7658:9:50","type":""},{"name":"value1","nodeType":"YulTypedName","src":"7669:6:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"7677:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7688:4:50","type":""}],"src":"7498:408:50"},{"body":{"nodeType":"YulBlock","src":"8025:125:50","statements":[{"nodeType":"YulAssignment","src":"8035:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8047:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"8058:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8043:3:50"},"nodeType":"YulFunctionCall","src":"8043:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"8035:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8077:9:50"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"8092:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"8100:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8088:3:50"},"nodeType":"YulFunctionCall","src":"8088:55:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8070:6:50"},"nodeType":"YulFunctionCall","src":"8070:74:50"},"nodeType":"YulExpressionStatement","src":"8070:74:50"}]},"name":"abi_encode_tuple_t_contract$_IDAO_$2538__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7994:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"8005:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"8016:4:50","type":""}],"src":"7911:239:50"},{"body":{"nodeType":"YulBlock","src":"8187:95:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8204:1:50","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8211:3:50","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"8216:10:50","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"8207:3:50"},"nodeType":"YulFunctionCall","src":"8207:20:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8197:6:50"},"nodeType":"YulFunctionCall","src":"8197:31:50"},"nodeType":"YulExpressionStatement","src":"8197:31:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8244:1:50","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"8247:4:50","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8237:6:50"},"nodeType":"YulFunctionCall","src":"8237:15:50"},"nodeType":"YulExpressionStatement","src":"8237:15:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8268:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8271:4:50","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8261:6:50"},"nodeType":"YulFunctionCall","src":"8261:15:50"},"nodeType":"YulExpressionStatement","src":"8261:15:50"}]},"name":"panic_error_0x11","nodeType":"YulFunctionDefinition","src":"8155:127:50"},{"body":{"nodeType":"YulBlock","src":"8336:159:50","statements":[{"nodeType":"YulVariableDeclaration","src":"8346:52:50","value":{"kind":"number","nodeType":"YulLiteral","src":"8356:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"8350:2:50","type":""}]},{"nodeType":"YulAssignment","src":"8407:35:50","value":{"arguments":[{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"8423:1:50"},{"name":"_1","nodeType":"YulIdentifier","src":"8426:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8419:3:50"},"nodeType":"YulFunctionCall","src":"8419:10:50"},{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"8435:1:50"},{"name":"_1","nodeType":"YulIdentifier","src":"8438:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8431:3:50"},"nodeType":"YulFunctionCall","src":"8431:10:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"8415:3:50"},"nodeType":"YulFunctionCall","src":"8415:27:50"},"variableNames":[{"name":"diff","nodeType":"YulIdentifier","src":"8407:4:50"}]},{"body":{"nodeType":"YulBlock","src":"8467:22:50","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"8469:16:50"},"nodeType":"YulFunctionCall","src":"8469:18:50"},"nodeType":"YulExpressionStatement","src":"8469:18:50"}]},"condition":{"arguments":[{"name":"diff","nodeType":"YulIdentifier","src":"8457:4:50"},{"name":"_1","nodeType":"YulIdentifier","src":"8463:2:50"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"8454:2:50"},"nodeType":"YulFunctionCall","src":"8454:12:50"},"nodeType":"YulIf","src":"8451:38:50"}]},"name":"checked_sub_t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"8318:1:50","type":""},{"name":"y","nodeType":"YulTypedName","src":"8321:1:50","type":""}],"returnVariables":[{"name":"diff","nodeType":"YulTypedName","src":"8327:4:50","type":""}],"src":"8287:208:50"},{"body":{"nodeType":"YulBlock","src":"8532:95:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8549:1:50","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8556:3:50","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"8561:10:50","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"8552:3:50"},"nodeType":"YulFunctionCall","src":"8552:20:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8542:6:50"},"nodeType":"YulFunctionCall","src":"8542:31:50"},"nodeType":"YulExpressionStatement","src":"8542:31:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8589:1:50","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"8592:4:50","type":"","value":"0x32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8582:6:50"},"nodeType":"YulFunctionCall","src":"8582:15:50"},"nodeType":"YulExpressionStatement","src":"8582:15:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8613:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8616:4:50","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8606:6:50"},"nodeType":"YulFunctionCall","src":"8606:15:50"},"nodeType":"YulExpressionStatement","src":"8606:15:50"}]},"name":"panic_error_0x32","nodeType":"YulFunctionDefinition","src":"8500:127:50"},{"body":{"nodeType":"YulBlock","src":"8679:187:50","statements":[{"nodeType":"YulVariableDeclaration","src":"8689:52:50","value":{"kind":"number","nodeType":"YulLiteral","src":"8699:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"8693:2:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"8750:29:50","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8769:5:50"},{"name":"_1","nodeType":"YulIdentifier","src":"8776:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8765:3:50"},"nodeType":"YulFunctionCall","src":"8765:14:50"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"8754:7:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"8807:22:50","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"8809:16:50"},"nodeType":"YulFunctionCall","src":"8809:18:50"},"nodeType":"YulExpressionStatement","src":"8809:18:50"}]},"condition":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"8794:7:50"},{"name":"_1","nodeType":"YulIdentifier","src":"8803:2:50"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"8791:2:50"},"nodeType":"YulFunctionCall","src":"8791:15:50"},"nodeType":"YulIf","src":"8788:41:50"},{"nodeType":"YulAssignment","src":"8838:22:50","value":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"8849:7:50"},{"kind":"number","nodeType":"YulLiteral","src":"8858:1:50","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8845:3:50"},"nodeType":"YulFunctionCall","src":"8845:15:50"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"8838:3:50"}]}]},"name":"increment_t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"8661:5:50","type":""}],"returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"8671:3:50","type":""}],"src":"8632:234:50"},{"body":{"nodeType":"YulBlock","src":"9045:172:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9062:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"9073:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9055:6:50"},"nodeType":"YulFunctionCall","src":"9055:21:50"},"nodeType":"YulExpressionStatement","src":"9055:21:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9096:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"9107:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9092:3:50"},"nodeType":"YulFunctionCall","src":"9092:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"9112:2:50","type":"","value":"22"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9085:6:50"},"nodeType":"YulFunctionCall","src":"9085:30:50"},"nodeType":"YulExpressionStatement","src":"9085:30:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9135:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"9146:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9131:3:50"},"nodeType":"YulFunctionCall","src":"9131:18:50"},{"hexValue":"455243313136373a20637265617465206661696c6564","kind":"string","nodeType":"YulLiteral","src":"9151:24:50","type":"","value":"ERC1167: create failed"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9124:6:50"},"nodeType":"YulFunctionCall","src":"9124:52:50"},"nodeType":"YulExpressionStatement","src":"9124:52:50"},{"nodeType":"YulAssignment","src":"9185:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9197:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"9208:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9193:3:50"},"nodeType":"YulFunctionCall","src":"9193:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"9185:4:50"}]}]},"name":"abi_encode_tuple_t_stringliteral_68ca40b61460257f14e69f48b1a4dbc812e9afc6932f127ef8084544457b3335__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9022:9:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"9036:4:50","type":""}],"src":"8871:346:50"},{"body":{"nodeType":"YulBlock","src":"9396:228:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9413:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"9424:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9406:6:50"},"nodeType":"YulFunctionCall","src":"9406:21:50"},"nodeType":"YulExpressionStatement","src":"9406:21:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9447:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"9458:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9443:3:50"},"nodeType":"YulFunctionCall","src":"9443:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"9463:2:50","type":"","value":"38"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9436:6:50"},"nodeType":"YulFunctionCall","src":"9436:30:50"},"nodeType":"YulExpressionStatement","src":"9436:30:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9486:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"9497:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9482:3:50"},"nodeType":"YulFunctionCall","src":"9482:18:50"},{"hexValue":"416464726573733a20696e73756666696369656e742062616c616e636520666f","kind":"string","nodeType":"YulLiteral","src":"9502:34:50","type":"","value":"Address: insufficient balance fo"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9475:6:50"},"nodeType":"YulFunctionCall","src":"9475:62:50"},"nodeType":"YulExpressionStatement","src":"9475:62:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9557:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"9568:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9553:3:50"},"nodeType":"YulFunctionCall","src":"9553:18:50"},{"hexValue":"722063616c6c","kind":"string","nodeType":"YulLiteral","src":"9573:8:50","type":"","value":"r call"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9546:6:50"},"nodeType":"YulFunctionCall","src":"9546:36:50"},"nodeType":"YulExpressionStatement","src":"9546:36:50"},{"nodeType":"YulAssignment","src":"9591:27:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9603:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"9614:3:50","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9599:3:50"},"nodeType":"YulFunctionCall","src":"9599:19:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"9591:4:50"}]}]},"name":"abi_encode_tuple_t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9373:9:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"9387:4:50","type":""}],"src":"9222:402:50"},{"body":{"nodeType":"YulBlock","src":"9766:150:50","statements":[{"nodeType":"YulVariableDeclaration","src":"9776:27:50","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"9796:6:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"9790:5:50"},"nodeType":"YulFunctionCall","src":"9790:13:50"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"9780:6:50","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"9851:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"9859:4:50","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9847:3:50"},"nodeType":"YulFunctionCall","src":"9847:17:50"},{"name":"pos","nodeType":"YulIdentifier","src":"9866:3:50"},{"name":"length","nodeType":"YulIdentifier","src":"9871:6:50"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"9812:34:50"},"nodeType":"YulFunctionCall","src":"9812:66:50"},"nodeType":"YulExpressionStatement","src":"9812:66:50"},{"nodeType":"YulAssignment","src":"9887:23:50","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"9898:3:50"},{"name":"length","nodeType":"YulIdentifier","src":"9903:6:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9894:3:50"},"nodeType":"YulFunctionCall","src":"9894:16:50"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"9887:3:50"}]}]},"name":"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"9742:3:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"9747:6:50","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"9758:3:50","type":""}],"src":"9629:287:50"},{"body":{"nodeType":"YulBlock","src":"10095:179:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10112:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"10123:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10105:6:50"},"nodeType":"YulFunctionCall","src":"10105:21:50"},"nodeType":"YulExpressionStatement","src":"10105:21:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10146:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"10157:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10142:3:50"},"nodeType":"YulFunctionCall","src":"10142:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"10162:2:50","type":"","value":"29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10135:6:50"},"nodeType":"YulFunctionCall","src":"10135:30:50"},"nodeType":"YulExpressionStatement","src":"10135:30:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10185:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"10196:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10181:3:50"},"nodeType":"YulFunctionCall","src":"10181:18:50"},{"hexValue":"416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374","kind":"string","nodeType":"YulLiteral","src":"10201:31:50","type":"","value":"Address: call to non-contract"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10174:6:50"},"nodeType":"YulFunctionCall","src":"10174:59:50"},"nodeType":"YulExpressionStatement","src":"10174:59:50"},{"nodeType":"YulAssignment","src":"10242:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10254:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"10265:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10250:3:50"},"nodeType":"YulFunctionCall","src":"10250:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"10242:4:50"}]}]},"name":"abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"10072:9:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"10086:4:50","type":""}],"src":"9921:353:50"},{"body":{"nodeType":"YulBlock","src":"10400:98:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10417:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"10428:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10410:6:50"},"nodeType":"YulFunctionCall","src":"10410:21:50"},"nodeType":"YulExpressionStatement","src":"10410:21:50"},{"nodeType":"YulAssignment","src":"10440:52:50","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"10465:6:50"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10477:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"10488:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10473:3:50"},"nodeType":"YulFunctionCall","src":"10473:18:50"}],"functionName":{"name":"abi_encode_bytes","nodeType":"YulIdentifier","src":"10448:16:50"},"nodeType":"YulFunctionCall","src":"10448:44:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"10440:4:50"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"10369:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"10380:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"10391:4:50","type":""}],"src":"10279:219:50"}]},"contents":"{\n { }\n function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n if iszero(eq(value, and(value, shl(224, 0xffffffff)))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 96)\n let pos := headStart\n pos := headStart\n let srcPtr := value0\n let i := 0\n for { } lt(i, 0x03) { i := add(i, 1) }\n {\n mstore(pos, and(mload(srcPtr), 0xff))\n let _1 := 0x20\n pos := add(pos, _1)\n srcPtr := add(srcPtr, _1)\n }\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_decode_address(offset) -> value\n {\n value := calldataload(offset)\n if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n }\n function abi_decode_struct_SetupPayload_calldata(offset, end) -> value\n {\n if slt(sub(end, offset), 96) { revert(0, 0) }\n value := offset\n }\n function abi_decode_tuple_t_addresst_struct$_SetupPayload_$4810_calldata_ptr(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n let offset := calldataload(add(headStart, 32))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n value1 := abi_decode_struct_SetupPayload_calldata(add(headStart, offset), dataEnd)\n }\n function panic_error_0x21()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x21)\n revert(0, 0x24)\n }\n function abi_encodeUpdatedPos_struct_MultiTargetPermission(value0, pos) -> updatedPos\n {\n let _1 := mload(value0)\n if iszero(lt(_1, 3))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x21)\n revert(0, 0x24)\n }\n mstore(pos, _1)\n let memberValue0 := mload(add(value0, 0x20))\n let _2 := 0xffffffffffffffffffffffffffffffffffffffff\n mstore(add(pos, 0x20), and(memberValue0, _2))\n mstore(add(pos, 0x40), and(mload(add(value0, 0x40)), _2))\n mstore(add(pos, 0x60), and(mload(add(value0, 0x60)), _2))\n mstore(add(pos, 0x80), mload(add(value0, 0x80)))\n updatedPos := add(pos, 0xa0)\n }\n function abi_encode_tuple_t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n let _1 := 32\n let tail_1 := add(headStart, _1)\n mstore(headStart, _1)\n let pos := tail_1\n let length := mload(value0)\n mstore(tail_1, length)\n pos := add(headStart, 64)\n let srcPtr := add(value0, _1)\n let i := 0\n for { } lt(i, length) { i := add(i, 1) }\n {\n pos := abi_encodeUpdatedPos_struct_MultiTargetPermission(mload(srcPtr), pos)\n srcPtr := add(srcPtr, _1)\n }\n tail := pos\n }\n function abi_decode_tuple_t_addresst_uint16t_struct$_SetupPayload_$4810_calldata_ptr(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n let value := calldataload(add(headStart, 32))\n if iszero(eq(value, and(value, 0xffff))) { revert(0, 0) }\n value1 := value\n let offset := calldataload(add(headStart, 64))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n value2 := abi_decode_struct_SetupPayload_calldata(add(headStart, offset), dataEnd)\n }\n function copy_memory_to_memory_with_cleanup(src, dst, length)\n {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n mstore(add(dst, length), 0)\n }\n function abi_encode_bytes(value, pos) -> end\n {\n let length := mload(value)\n mstore(pos, length)\n copy_memory_to_memory_with_cleanup(add(value, 0x20), add(pos, 0x20), length)\n end := add(add(pos, and(add(length, 31), not(31))), 0x20)\n }\n function abi_encode_struct_PreparedSetupData(value, pos) -> end\n {\n let tail := add(pos, 0x40)\n let memberValue0 := mload(value)\n mstore(pos, 0x40)\n let pos_1 := tail\n let length := mload(memberValue0)\n mstore(tail, length)\n pos_1 := add(pos, 96)\n let _1 := 0x20\n let srcPtr := add(memberValue0, _1)\n let i := 0\n for { } lt(i, length) { i := add(i, 1) }\n {\n mstore(pos_1, and(mload(srcPtr), 0xffffffffffffffffffffffffffffffffffffffff))\n pos_1 := add(pos_1, _1)\n srcPtr := add(srcPtr, _1)\n }\n let memberValue0_1 := mload(add(value, _1))\n mstore(add(pos, _1), sub(pos_1, pos))\n let pos_2 := pos_1\n let length_1 := mload(memberValue0_1)\n mstore(pos_1, length_1)\n pos_2 := add(pos_1, _1)\n let srcPtr_1 := add(memberValue0_1, _1)\n let i_1 := 0\n for { } lt(i_1, length_1) { i_1 := add(i_1, 1) }\n {\n pos_2 := abi_encodeUpdatedPos_struct_MultiTargetPermission(mload(srcPtr_1), pos_2)\n srcPtr_1 := add(srcPtr_1, _1)\n }\n end := pos_2\n }\n function abi_encode_tuple_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$4802_memory_ptr__to_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$4802_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n {\n mstore(headStart, 64)\n let tail_1 := abi_encode_bytes(value0, add(headStart, 64))\n mstore(add(headStart, 32), sub(tail_1, headStart))\n tail := abi_encode_struct_PreparedSetupData(value1, tail_1)\n }\n function panic_error_0x41()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function abi_decode_tuple_t_addresst_bytes_memory_ptr(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n let offset := calldataload(add(headStart, 32))\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n let _2 := add(headStart, offset)\n if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n let _3 := calldataload(_2)\n if gt(_3, _1) { panic_error_0x41() }\n let _4 := not(31)\n let memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n mstore(memPtr, _3)\n if gt(add(add(_2, _3), 32), dataEnd) { revert(0, 0) }\n calldatacopy(add(memPtr, 32), add(_2, 32), _3)\n mstore(add(add(memPtr, _3), 32), 0)\n value1 := memPtr\n }\n function abi_encode_tuple_t_address_t_struct$_PreparedSetupData_$4802_memory_ptr__to_t_address_t_struct$_PreparedSetupData_$4802_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n {\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n mstore(add(headStart, 32), 64)\n tail := abi_encode_struct_PreparedSetupData(value1, add(headStart, 64))\n }\n function abi_encode_tuple_t_contract$_IDAO_$2538__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function panic_error_0x11()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n function checked_sub_t_uint160(x, y) -> diff\n {\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n diff := sub(and(x, _1), and(y, _1))\n if gt(diff, _1) { panic_error_0x11() }\n }\n function panic_error_0x32()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n function increment_t_uint160(value) -> ret\n {\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n let value_1 := and(value, _1)\n if eq(value_1, _1) { panic_error_0x11() }\n ret := add(value_1, 1)\n }\n function abi_encode_tuple_t_stringliteral_68ca40b61460257f14e69f48b1a4dbc812e9afc6932f127ef8084544457b3335__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 22)\n mstore(add(headStart, 64), \"ERC1167: create failed\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 38)\n mstore(add(headStart, 64), \"Address: insufficient balance fo\")\n mstore(add(headStart, 96), \"r call\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n {\n let length := mload(value0)\n copy_memory_to_memory_with_cleanup(add(value0, 0x20), pos, length)\n end := add(pos, length)\n }\n function abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 29)\n mstore(add(headStart, 64), \"Address: call to non-contract\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n mstore(headStart, 32)\n tail := abi_encode_bytes(value0, add(headStart, 32))\n }\n}","id":50,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{"4879":[{"length":32,"start":193},{"length":32,"start":664}]},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100725760003560e01c80639cb0a124116100505780639cb0a124146100eb578063a8a9c29e1461010b578063f10832f11461012c57600080fd5b806301ffc9a7146100775780632ae9c6001461009f5780635c60da1b146100b4575b600080fd5b61008a6100853660046107fe565b61014d565b60405190151581526020015b60405180910390f35b6100a761019e565b6040516100969190610828565b6040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152602001610096565b6100fe6100f9366004610885565b6101c8565b604051610096919061094f565b61011e610119366004610998565b6101df565b604051610096929190610ae2565b61013f61013a366004610b26565b610217565b604051610096929190610be8565b60006001600160e01b0319821663099718b560e41b148061017d57506001600160e01b03198216621574e360e91b145b8061019857506301ffc9a760e01b6001600160e01b03198316145b92915050565b6101a66107e0565b5060408051606081018252600181526004602082015260009181019190915290565b60606101d86000600260016102f3565b9392505050565b60606101fe604051806040016040528060608152602001606081525090565b60405163a112810160e01b815260040160405180910390fd5b6000610236604051806040016040528060608152602001606081525090565b6040516001600160a01b038516602482015260009060440160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663189acdbd60e31b17905290506102c9816102ba7f000000000000000000000000000000000000000000000000000000000000000090565b6001600160a01b031690610478565b92506102d560026104b0565b82526102e460006002816102f3565b60208301525090939092509050565b6060826001600160a01b0316846001600160a01b0316111561032857604051633a4013cd60e21b815260040160405180910390fd5b6103328484610c20565b6001600160a01b031667ffffffffffffffff81111561035357610353610b10565b6040519080825280602002602001820160405280156103ac57816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282526000199092019101816103715790505b509050835b836001600160a01b0316816001600160a01b03161015610470576040518060a001604052808460028111156103e8576103e86108d3565b81526001600160a01b038316602082018190526040820152600060608201527fa280eec51ab8e1bc4b6b0c1b7f1bde785761b787a49db404e3e9338ed9b016ef608090910152826104398784610c20565b6001600160a01b03168151811061045257610452610c40565b6020026020010181905250808061046890610c56565b9150506103b1565b509392505050565b600061048c836001600160a01b0316610569565b825190915015610198576104a96001600160a01b0382168361060f565b5092915050565b6060816001600160a01b031667ffffffffffffffff8111156104d4576104d4610b10565b6040519080825280602002602001820160405280156104fd578160200160208202803683370190505b50905060005b826001600160a01b0316816001600160a01b03161015610563578082826001600160a01b03168151811061053957610539610c40565b6001600160a01b03909216602092830291909101909101528061055b81610c56565b915050610503565b50919050565b6000763d602d80600a3d3981f3363d3d373d3d3d363d730000008260601b60e81c176000526e5af43d82803e903d91602b57fd5bf38260781b17602052603760096000f090506001600160a01b03811661060a5760405162461bcd60e51b815260206004820152601660248201527f455243313136373a20637265617465206661696c65640000000000000000000060448201526064015b60405180910390fd5b919050565b60606101d8838360006040518060400160405280601e81526020017f416464726573733a206c6f772d6c6576656c2063616c6c206661696c656400008152506060824710156106c65760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610601565b600080866001600160a01b031685876040516106e29190610c7c565b60006040518083038185875af1925050503d806000811461071f576040519150601f19603f3d011682016040523d82523d6000602084013e610724565b606091505b509150915061073587838387610742565b925050505b949350505050565b606083156107b15782516000036107aa576001600160a01b0385163b6107aa5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610601565b508161073a565b61073a83838151156107c65781518083602001fd5b8060405162461bcd60e51b81526004016106019190610c98565b60405180606001604052806003906020820280368337509192915050565b60006020828403121561081057600080fd5b81356001600160e01b0319811681146101d857600080fd5b60608101818360005b600381101561085357815160ff16835260209283019290910190600101610831565b50505092915050565b80356001600160a01b038116811461060a57600080fd5b60006060828403121561056357600080fd5b6000806040838503121561089857600080fd5b6108a18361085c565b9150602083013567ffffffffffffffff8111156108bd57600080fd5b6108c985828601610873565b9150509250929050565b634e487b7160e01b600052602160045260246000fd5b600081516003811061090b57634e487b7160e01b600052602160045260246000fd5b8352506020818101516001600160a01b0390811691840191909152604080830151821690840152606080830151909116908301526080908101519082015260a00190565b6020808252825182820181905260009190848201906040850190845b8181101561098c5761097e8385516108e9565b93850193925060010161096b565b50909695505050505050565b6000806000606084860312156109ad57600080fd5b6109b68461085c565b9250602084013561ffff811681146109cd57600080fd5b9150604084013567ffffffffffffffff8111156109e957600080fd5b6109f586828701610873565b9150509250925092565b60005b83811015610a1a578181015183820152602001610a02565b50506000910152565b60008151808452610a3b8160208601602086016109ff565b601f01601f19169290920160200192915050565b805160408084528151908401819052600091602091908201906060860190845b81811015610a945783516001600160a01b031683529284019291840191600101610a6f565b50508483015186820387850152805180835290840192506000918401905b80831015610ad757610ac58285516108e9565b91508484019350600183019250610ab2565b509695505050505050565b604081526000610af56040830185610a23565b8281036020840152610b078185610a4f565b95945050505050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215610b3957600080fd5b610b428361085c565b9150602083013567ffffffffffffffff80821115610b5f57600080fd5b818501915085601f830112610b7357600080fd5b813581811115610b8557610b85610b10565b604051601f8201601f19908116603f01168101908382118183101715610bad57610bad610b10565b81604052828152886020848701011115610bc657600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6001600160a01b038316815260406020820152600061073a6040830184610a4f565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b038281168282160390808211156104a9576104a9610c0a565b634e487b7160e01b600052603260045260246000fd5b60006001600160a01b03808316818103610c7257610c72610c0a565b6001019392505050565b60008251610c8e8184602087016109ff565b9190910192915050565b6020815260006101d86020830184610a2356fea164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x72 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9CB0A124 GT PUSH2 0x50 JUMPI DUP1 PUSH4 0x9CB0A124 EQ PUSH2 0xEB JUMPI DUP1 PUSH4 0xA8A9C29E EQ PUSH2 0x10B JUMPI DUP1 PUSH4 0xF10832F1 EQ PUSH2 0x12C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x77 JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0x9F JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0xB4 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8A PUSH2 0x85 CALLDATASIZE PUSH1 0x4 PUSH2 0x7FE JUMP JUMPDEST PUSH2 0x14D JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xA7 PUSH2 0x19E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x96 SWAP2 SWAP1 PUSH2 0x828 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x96 JUMP JUMPDEST PUSH2 0xFE PUSH2 0xF9 CALLDATASIZE PUSH1 0x4 PUSH2 0x885 JUMP JUMPDEST PUSH2 0x1C8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x96 SWAP2 SWAP1 PUSH2 0x94F JUMP JUMPDEST PUSH2 0x11E PUSH2 0x119 CALLDATASIZE PUSH1 0x4 PUSH2 0x998 JUMP JUMPDEST PUSH2 0x1DF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x96 SWAP3 SWAP2 SWAP1 PUSH2 0xAE2 JUMP JUMPDEST PUSH2 0x13F PUSH2 0x13A CALLDATASIZE PUSH1 0x4 PUSH2 0xB26 JUMP JUMPDEST PUSH2 0x217 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x96 SWAP3 SWAP2 SWAP1 PUSH2 0xBE8 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x99718B5 PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x17D JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x198 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1A6 PUSH2 0x7E0 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1D8 PUSH1 0x0 PUSH1 0x2 PUSH1 0x1 PUSH2 0x2F3 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1FE PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xA1128101 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x236 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 PUSH1 0x44 ADD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x189ACDBD PUSH1 0xE3 SHL OR SWAP1 MSTORE SWAP1 POP PUSH2 0x2C9 DUP2 PUSH2 0x2BA PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH2 0x478 JUMP JUMPDEST SWAP3 POP PUSH2 0x2D5 PUSH1 0x2 PUSH2 0x4B0 JUMP JUMPDEST DUP3 MSTORE PUSH2 0x2E4 PUSH1 0x0 PUSH1 0x2 DUP2 PUSH2 0x2F3 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP SWAP1 SWAP4 SWAP1 SWAP3 POP SWAP1 POP JUMP JUMPDEST PUSH1 0x60 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH2 0x328 JUMPI PUSH1 0x40 MLOAD PUSH4 0x3A4013CD PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x332 DUP5 DUP5 PUSH2 0xC20 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x353 JUMPI PUSH2 0x353 PUSH2 0xB10 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x3AC JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD DUP3 SWAP1 MSTORE SWAP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 DUP3 ADD MSTORE DUP3 MSTORE PUSH1 0x0 NOT SWAP1 SWAP3 ADD SWAP2 ADD DUP2 PUSH2 0x371 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP DUP4 JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT ISZERO PUSH2 0x470 JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 DUP5 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x3E8 JUMPI PUSH2 0x3E8 PUSH2 0x8D3 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x60 DUP3 ADD MSTORE PUSH32 0xA280EEC51AB8E1BC4B6B0C1B7F1BDE785761B787A49DB404E3E9338ED9B016EF PUSH1 0x80 SWAP1 SWAP2 ADD MSTORE DUP3 PUSH2 0x439 DUP8 DUP5 PUSH2 0xC20 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MLOAD DUP2 LT PUSH2 0x452 JUMPI PUSH2 0x452 PUSH2 0xC40 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP DUP1 DUP1 PUSH2 0x468 SWAP1 PUSH2 0xC56 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x3B1 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x48C DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x569 JUMP JUMPDEST DUP3 MLOAD SWAP1 SWAP2 POP ISZERO PUSH2 0x198 JUMPI PUSH2 0x4A9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP4 PUSH2 0x60F JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x4D4 JUMPI PUSH2 0x4D4 PUSH2 0xB10 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x4FD JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT ISZERO PUSH2 0x563 JUMPI DUP1 DUP3 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MLOAD DUP2 LT PUSH2 0x539 JUMPI PUSH2 0x539 PUSH2 0xC40 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE DUP1 PUSH2 0x55B DUP2 PUSH2 0xC56 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x503 JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH23 0x3D602D80600A3D3981F3363D3D373D3D3D363D73000000 DUP3 PUSH1 0x60 SHL PUSH1 0xE8 SHR OR PUSH1 0x0 MSTORE PUSH15 0x5AF43D82803E903D91602B57FD5BF3 DUP3 PUSH1 0x78 SHL OR PUSH1 0x20 MSTORE PUSH1 0x37 PUSH1 0x9 PUSH1 0x0 CREATE SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x60A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313136373A20637265617465206661696C656400000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1D8 DUP4 DUP4 PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x416464726573733A206C6F772D6C6576656C2063616C6C206661696C65640000 DUP2 MSTORE POP PUSH1 0x60 DUP3 SELFBALANCE LT ISZERO PUSH2 0x6C6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A20696E73756666696369656E742062616C616E636520666F PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x722063616C6C0000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x601 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP8 PUSH1 0x40 MLOAD PUSH2 0x6E2 SWAP2 SWAP1 PUSH2 0xC7C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x71F JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x724 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x735 DUP8 DUP4 DUP4 DUP8 PUSH2 0x742 JUMP JUMPDEST SWAP3 POP POP POP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x7B1 JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0x7AA JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0x7AA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x601 JUMP JUMPDEST POP DUP2 PUSH2 0x73A JUMP JUMPDEST PUSH2 0x73A DUP4 DUP4 DUP2 MLOAD ISZERO PUSH2 0x7C6 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x601 SWAP2 SWAP1 PUSH2 0xC98 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x810 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x1D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0x853 JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x831 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x60A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x563 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x898 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8A1 DUP4 PUSH2 0x85C JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x8BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8C9 DUP6 DUP3 DUP7 ADD PUSH2 0x873 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP2 MLOAD PUSH1 0x3 DUP2 LT PUSH2 0x90B JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP4 MSTORE POP PUSH1 0x20 DUP2 DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP1 DUP4 ADD MLOAD DUP3 AND SWAP1 DUP5 ADD MSTORE PUSH1 0x60 DUP1 DUP4 ADD MLOAD SWAP1 SWAP2 AND SWAP1 DUP4 ADD MSTORE PUSH1 0x80 SWAP1 DUP2 ADD MLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x98C JUMPI PUSH2 0x97E DUP4 DUP6 MLOAD PUSH2 0x8E9 JUMP JUMPDEST SWAP4 DUP6 ADD SWAP4 SWAP3 POP PUSH1 0x1 ADD PUSH2 0x96B JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x9AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9B6 DUP5 PUSH2 0x85C JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH2 0x9CD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x9E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9F5 DUP7 DUP3 DUP8 ADD PUSH2 0x873 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xA1A JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xA02 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0xA3B DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x9FF JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x40 DUP1 DUP5 MSTORE DUP2 MLOAD SWAP1 DUP5 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x20 SWAP2 SWAP1 DUP3 ADD SWAP1 PUSH1 0x60 DUP7 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xA94 JUMPI DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0xA6F JUMP JUMPDEST POP POP DUP5 DUP4 ADD MLOAD DUP7 DUP3 SUB DUP8 DUP6 ADD MSTORE DUP1 MLOAD DUP1 DUP4 MSTORE SWAP1 DUP5 ADD SWAP3 POP PUSH1 0x0 SWAP2 DUP5 ADD SWAP1 JUMPDEST DUP1 DUP4 LT ISZERO PUSH2 0xAD7 JUMPI PUSH2 0xAC5 DUP3 DUP6 MLOAD PUSH2 0x8E9 JUMP JUMPDEST SWAP2 POP DUP5 DUP5 ADD SWAP4 POP PUSH1 0x1 DUP4 ADD SWAP3 POP PUSH2 0xAB2 JUMP JUMPDEST POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 PUSH2 0xAF5 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0xA23 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0xB07 DUP2 DUP6 PUSH2 0xA4F JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xB39 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB42 DUP4 PUSH2 0x85C JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xB5F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xB73 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0xB85 JUMPI PUSH2 0xB85 PUSH2 0xB10 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0xBAD JUMPI PUSH2 0xBAD PUSH2 0xB10 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0xBC6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0x73A PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0xA4F JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND DUP3 DUP3 AND SUB SWAP1 DUP1 DUP3 GT ISZERO PUSH2 0x4A9 JUMPI PUSH2 0x4A9 PUSH2 0xC0A JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND DUP2 DUP2 SUB PUSH2 0xC72 JUMPI PUSH2 0xC72 PUSH2 0xC0A JUMP JUMPDEST PUSH1 0x1 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0xC8E DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x9FF JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x1D8 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0xA23 JUMP INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"2043:1127:27:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2112:293:45;;;;;;:::i;:::-;;:::i;:::-;;;470:14:50;;463:22;445:41;;433:2;418:18;2112:293:45;;;;;;;;631:98:49;;;:::i;:::-;;;;;;;:::i;2444:94:45:-;;;-1:-1:-1;;;;;2517:14:45;1167:55:50;1149:74;;1137:2;1122:18;2444:94:45;1003:226:50;2869:299:27;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1639:265:45:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;2292:538:27:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;2112:293:45:-;2198:4;-1:-1:-1;;;;;;2233:46:45;;-1:-1:-1;;;2233:46:45;;:112;;-1:-1:-1;;;;;;;2295:50:45;;-1:-1:-1;;;2295:50:45;2233:112;:165;;;-1:-1:-1;;;;;;;;;;937:40:23;;;2361:37:45;2214:184;2112:293;-1:-1:-1;;2112:293:45:o;631:98:49:-;679:15;;:::i;:::-;-1:-1:-1;706:16:49;;;;;;;;714:1;706:16;;717:1;706:16;;;;-1:-1:-1;706:16:49;;;;;;;;631:98::o;2869:299:27:-;2991:56;3099:62;3115:1;2175;3130:30;3099:15;:62::i;:::-;3085:76;2869:299;-1:-1:-1;;;2869:299:27:o;1639:265:45:-;1780:12;1794:24;-1:-1:-1;;;;;;;;;;;;;;;;;;;1794:24:45;1875:22;;-1:-1:-1;;;1875:22:45;;;;;;;;;;;2292:538:27;2389:14;2405:42;-1:-1:-1;;;;;;;;;;;;;;;;;;;2405:42:27;2483:66;;-1:-1:-1;;;;;1167:55:50;;2483:66:27;;;1149:74:50;2459:21:27;;1122:18:50;;2483:66:27;;;-1:-1:-1;;2483:66:27;;;;;;;;;;;;;;;;-1:-1:-1;;;2483:66:27;;;;-1:-1:-1;2568:45:27;2483:66;2568:16;2517:14:45;;2444:94;2568:16:27;-1:-1:-1;;;;;2568:35:27;;;:45::i;:::-;2559:54;-1:-1:-1;2651:23:27;2175:1;2651:11;:23::i;:::-;2623:51;;2716:107;2623:25;2175:1;2623:25;2716:15;:107::i;:::-;2684:29;;;:139;-1:-1:-1;2292:538:27;;2684:17;;-1:-1:-1;2292:538:27;-1:-1:-1;2292:538:27:o;580:666:30:-;699:56;780:8;-1:-1:-1;;;;;767:21:30;:10;-1:-1:-1;;;;;767:21:30;;763:53;;;797:19;;-1:-1:-1;;;797:19:30;;;;;;;;;;;763:53;879:21;890:10;879:8;:21;:::i;:::-;-1:-1:-1;;;;;837:64:30;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;837:64:30;;-1:-1:-1;;837:64:30;;;;;;;;;;;-1:-1:-1;823:78:30;-1:-1:-1;925:10:30;908:336;941:8;-1:-1:-1;;;;;937:12:30;:1;-1:-1:-1;;;;;937:12:30;;908:336;;;996:241;;;;;;;;1057:2;996:241;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;996:241:30;;;;;;;;;;;;-1:-1:-1;996:241:30;;;;1198:28;996:241;;;;;966:11;978:14;982:10;1088:1;978:14;:::i;:::-;-1:-1:-1;;;;;966:27:30;;;;;;;;;:::i;:::-;;;;;;:271;;;;951:3;;;;;:::i;:::-;;;;908:336;;;;580:666;;;;;:::o;2237:292:47:-;2349:20;2396:14;:6;-1:-1:-1;;;;;2396:12:47;;:14::i;:::-;2424:20;;2381:29;;-1:-1:-1;2424:24:47;2420:103;;2464:48;-1:-1:-1;;;;;2464:25:47;;2497:13;2464:25;:48::i;:::-;;2237:292;;;;:::o;1529:191:30:-;1577:24;1633:3;-1:-1:-1;;;;;1619:18:30;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1619:18:30;;1609:28;;1649:9;1644:74;1668:3;-1:-1:-1;;;;;1664:7:30;:1;-1:-1:-1;;;;;1664:7:30;;1644:74;;;1709:1;1688:7;1696:1;-1:-1:-1;;;;;1688:10:30;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1688:23:30;;;:10;;;;;;;;;;;:23;1673:3;;;;:::i;:::-;;;;1644:74;;;;1529:191;;;:::o;973:759:14:-;1030:16;1362:48;1344:14;1338:4;1334:25;1328:4;1324:36;1321:90;1315:4;1308:104;1569:32;1552:14;1546:4;1542:25;1539:63;1533:4;1526:77;1644:4;1638;1635:1;1628:21;1616:33;-1:-1:-1;;;;;;1676:22:14;;1668:57;;;;-1:-1:-1;;;1668:57:14;;9073:2:50;1668:57:14;;;9055:21:50;9112:2;9092:18;;;9085:30;9151:24;9131:18;;;9124:52;9193:18;;1668:57:14;;;;;;;;;973:759;;;:::o;3701:185:19:-;3776:12;3807:72;3829:6;3837:4;3843:1;3807:72;;;;;;;;;;;;;;;;;5330:12;5387:5;5362:21;:30;;5354:81;;;;-1:-1:-1;;;5354:81:19;;9424:2:50;5354:81:19;;;9406:21:50;9463:2;9443:18;;;9436:30;9502:34;9482:18;;;9475:62;9573:8;9553:18;;;9546:36;9599:19;;5354:81:19;9222:402:50;5354:81:19;5446:12;5460:23;5487:6;-1:-1:-1;;;;;5487:11:19;5506:5;5513:4;5487:31;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5445:73;;;;5535:69;5562:6;5570:7;5579:10;5591:12;5535:26;:69::i;:::-;5528:76;;;;5165:446;;;;;;;:::o;7671:628::-;7851:12;7879:7;7875:418;;;7906:10;:17;7927:1;7906:22;7902:286;;-1:-1:-1;;;;;1702:19:19;;;8113:60;;;;-1:-1:-1;;;8113:60:19;;10123:2:50;8113:60:19;;;10105:21:50;10162:2;10142:18;;;10135:30;10201:31;10181:18;;;10174:59;10250:18;;8113:60:19;9921:353:50;8113:60:19;-1:-1:-1;8208:10:19;8201:17;;7875:418;8249:33;8257:10;8269:12;8980:17;;:21;8976:379;;9208:10;9202:17;9264:15;9251:10;9247:2;9243:19;9236:44;8976:379;9331:12;9324:20;;-1:-1:-1;;;9324:20:19;;;;;;;;:::i;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:286:50:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:50;;209:43;;199:71;;266:1;263;256:12;497:501;673:2;658:18;;662:9;753:6;631:4;787:205;801:4;798:1;795:11;787:205;;;864:13;;879:4;860:24;848:37;;908:4;932:12;;;;967:15;;;;821:1;814:9;787:205;;;791:3;;;497:501;;;;:::o;1234:196::-;1302:20;;-1:-1:-1;;;;;1351:54:50;;1341:65;;1331:93;;1420:1;1417;1410:12;1435:160;1500:5;1545:2;1536:6;1531:3;1527:16;1523:25;1520:45;;;1561:1;1558;1551:12;1600:440;1700:6;1708;1761:2;1749:9;1740:7;1736:23;1732:32;1729:52;;;1777:1;1774;1767:12;1729:52;1800:29;1819:9;1800:29;:::i;:::-;1790:39;;1880:2;1869:9;1865:18;1852:32;1907:18;1899:6;1896:30;1893:50;;;1939:1;1936;1929:12;1893:50;1962:72;2026:7;2017:6;2006:9;2002:22;1962:72;:::i;:::-;1952:82;;;1600:440;;;;;:::o;2045:127::-;2106:10;2101:3;2097:20;2094:1;2087:31;2137:4;2134:1;2127:15;2161:4;2158:1;2151:15;2177:696;2252:10;2293:6;2287:13;2326:1;2322:2;2319:9;2309:140;;2371:10;2366:3;2362:20;2359:1;2352:31;2406:4;2403:1;2396:15;2434:4;2431:1;2424:15;2309:140;2458:15;;-1:-1:-1;2520:4:50;2508:17;;;2502:24;-1:-1:-1;;;;;2619:21:50;;;2603:14;;;2596:45;;;;2695:4;2683:17;;;2677:24;2673:33;;2657:14;;;2650:57;2761:4;2749:17;;;2743:24;2739:33;;;2723:14;;;2716:57;2823:4;2811:17;;;2805:24;2789:14;;;2782:48;2862:4;2853:14;;2177:696::o;2878:728::-;3127:2;3179:21;;;3249:13;;3152:18;;;3271:22;;;3098:4;;3127:2;3350:15;;;;3324:2;3309:18;;;3098:4;3393:187;3407:6;3404:1;3401:13;3393:187;;;3463:69;3528:3;3519:6;3513:13;3463:69;:::i;:::-;3555:15;;;;3456:76;-1:-1:-1;3429:1:50;3422:9;3393:187;;;-1:-1:-1;3597:3:50;;2878:728;-1:-1:-1;;;;;;2878:728:50:o;3611:600::-;3719:6;3727;3735;3788:2;3776:9;3767:7;3763:23;3759:32;3756:52;;;3804:1;3801;3794:12;3756:52;3827:29;3846:9;3827:29;:::i;:::-;3817:39;;3906:2;3895:9;3891:18;3878:32;3950:6;3943:5;3939:18;3932:5;3929:29;3919:57;;3972:1;3969;3962:12;3919:57;3995:5;-1:-1:-1;4051:2:50;4036:18;;4023:32;4078:18;4067:30;;4064:50;;;4110:1;4107;4100:12;4064:50;4133:72;4197:7;4188:6;4177:9;4173:22;4133:72;:::i;:::-;4123:82;;;3611:600;;;;;:::o;4216:250::-;4301:1;4311:113;4325:6;4322:1;4319:13;4311:113;;;4401:11;;;4395:18;4382:11;;;4375:39;4347:2;4340:10;4311:113;;;-1:-1:-1;;4458:1:50;4440:16;;4433:27;4216:250::o;4471:270::-;4512:3;4550:5;4544:12;4577:6;4572:3;4565:19;4593:76;4662:6;4655:4;4650:3;4646:14;4639:4;4632:5;4628:16;4593:76;:::i;:::-;4723:2;4702:15;-1:-1:-1;;4698:29:50;4689:39;;;;4730:4;4685:50;;4471:270;-1:-1:-1;;4471:270:50:o;4746:1162::-;4879:12;;4845:4;4900:17;;;4966:19;;4836:14;;;4994:20;;;4806:3;;5063:4;;5090:21;;;;5041:2;5032:12;;;4806:3;5139:224;5153:6;5150:1;5147:13;5139:224;;;5220:13;;-1:-1:-1;;;;;5216:62:50;5202:77;;5338:15;;;;5301:14;;;;5175:1;5168:9;5139:224;;;-1:-1:-1;;5400:14:50;;;5394:21;5445:15;;;5431:12;;;5424:37;5513:21;;5543:23;;;5623;;;;-1:-1:-1;5666:1:50;;5584:14;;;5676:205;5692:8;5687:3;5684:17;5676:205;;;5756:73;5823:5;5812:8;5806:15;5756:73;:::i;:::-;5747:82;;5868:2;5858:8;5854:17;5842:29;;5720:1;5715:3;5711:11;5704:18;;5676:205;;;-1:-1:-1;5897:5:50;4746:1162;-1:-1:-1;;;;;;4746:1162:50:o;5913:448::-;6158:2;6147:9;6140:21;6121:4;6184:44;6224:2;6213:9;6209:18;6201:6;6184:44;:::i;:::-;6276:9;6268:6;6264:22;6259:2;6248:9;6244:18;6237:50;6304:51;6348:6;6340;6304:51;:::i;:::-;6296:59;5913:448;-1:-1:-1;;;;;5913:448:50:o;6366:127::-;6427:10;6422:3;6418:20;6415:1;6408:31;6458:4;6455:1;6448:15;6482:4;6479:1;6472:15;6498:995;6575:6;6583;6636:2;6624:9;6615:7;6611:23;6607:32;6604:52;;;6652:1;6649;6642:12;6604:52;6675:29;6694:9;6675:29;:::i;:::-;6665:39;;6755:2;6744:9;6740:18;6727:32;6778:18;6819:2;6811:6;6808:14;6805:34;;;6835:1;6832;6825:12;6805:34;6873:6;6862:9;6858:22;6848:32;;6918:7;6911:4;6907:2;6903:13;6899:27;6889:55;;6940:1;6937;6930:12;6889:55;6976:2;6963:16;6998:2;6994;6991:10;6988:36;;;7004:18;;:::i;:::-;7079:2;7073:9;7047:2;7133:13;;-1:-1:-1;;7129:22:50;;;7153:2;7125:31;7121:40;7109:53;;;7177:18;;;7197:22;;;7174:46;7171:72;;;7223:18;;:::i;:::-;7263:10;7259:2;7252:22;7298:2;7290:6;7283:18;7338:7;7333:2;7328;7324;7320:11;7316:20;7313:33;7310:53;;;7359:1;7356;7349:12;7310:53;7415:2;7410;7406;7402:11;7397:2;7389:6;7385:15;7372:46;7460:1;7455:2;7450;7442:6;7438:15;7434:24;7427:35;7481:6;7471:16;;;;;;;6498:995;;;;;:::o;7498:408::-;-1:-1:-1;;;;;7729:6:50;7725:55;7714:9;7707:74;7817:2;7812;7801:9;7797:18;7790:30;7688:4;7837:63;7896:2;7885:9;7881:18;7873:6;7837:63;:::i;8155:127::-;8216:10;8211:3;8207:20;8204:1;8197:31;8247:4;8244:1;8237:15;8271:4;8268:1;8261:15;8287:208;-1:-1:-1;;;;;8431:10:50;;;8419;;;8415:27;;8454:12;;;8451:38;;;8469:18;;:::i;8500:127::-;8561:10;8556:3;8552:20;8549:1;8542:31;8592:4;8589:1;8582:15;8616:4;8613:1;8606:15;8632:234;8671:3;-1:-1:-1;;;;;8776:2:50;8769:5;8765:14;8803:2;8794:7;8791:15;8788:41;;8809:18;;:::i;:::-;8858:1;8845:15;;8632:234;-1:-1:-1;;;8632:234:50:o;9629:287::-;9758:3;9796:6;9790:13;9812:66;9871:6;9866:3;9859:4;9851:6;9847:17;9812:66;:::i;:::-;9894:16;;;;;9629:287;-1:-1:-1;;9629:287:50:o;10279:219::-;10428:2;10417:9;10410:21;10391:4;10448:44;10488:2;10477:9;10473:18;10465:6;10448:44;:::i"},"gasEstimates":{"creation":{"codeDepositCost":"651200","executionCost":"infinite","totalCost":"infinite"},"external":{"implementation()":"infinite","prepareInstallation(address,bytes)":"infinite","prepareUninstallation(address,(address,address[],bytes))":"infinite","prepareUpdate(address,uint16,(address,address[],bytes))":"624","protocolVersion()":"infinite","supportsInterface(bytes4)":"482"}},"methodIdentifiers":{"implementation()":"5c60da1b","prepareInstallation(address,bytes)":"f10832f1","prepareUninstallation(address,(address,address[],bytes))":"9cb0a124","prepareUpdate(address,uint16,(address,address[],bytes))":"a8a9c29e","protocolVersion()":"2ae9c600","supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ConflictingValues\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NonUpgradeablePlugin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_dao\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"prepareInstallation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"plugin\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address[]\",\"name\":\"helpers\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"enum PermissionLib.Operation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"condition\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PermissionLib.MultiTargetPermission[]\",\"name\":\"permissions\",\"type\":\"tuple[]\"}],\"internalType\":\"struct IPluginSetup.PreparedSetupData\",\"name\":\"preparedSetupData\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_dao\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"plugin\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"currentHelpers\",\"type\":\"address[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IPluginSetup.SetupPayload\",\"name\":\"_payload\",\"type\":\"tuple\"}],\"name\":\"prepareUninstallation\",\"outputs\":[{\"components\":[{\"internalType\":\"enum PermissionLib.Operation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"condition\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PermissionLib.MultiTargetPermission[]\",\"name\":\"permissions\",\"type\":\"tuple[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_dao\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"_fromBuild\",\"type\":\"uint16\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"plugin\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"currentHelpers\",\"type\":\"address[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IPluginSetup.SetupPayload\",\"name\":\"_payload\",\"type\":\"tuple\"}],\"name\":\"prepareUpdate\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address[]\",\"name\":\"helpers\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"enum PermissionLib.Operation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"condition\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PermissionLib.MultiTargetPermission[]\",\"name\":\"permissions\",\"type\":\"tuple[]\"}],\"internalType\":\"struct IPluginSetup.PreparedSetupData\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"protocolVersion\",\"outputs\":[{\"internalType\":\"uint8[3]\",\"name\":\"\",\"type\":\"uint8[3]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"DO NOT USE IN PRODUCTION!\",\"kind\":\"dev\",\"methods\":{\"implementation()\":{\"details\":\"The implementation can be instantiated via the `new` keyword, cloned via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)), or proxied via the UUPS proxy pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\",\"returns\":{\"_0\":\"The address of the plugin implementation contract.\"}},\"prepareInstallation(address,bytes)\":{\"params\":{\"_dao\":\"The address of the installing DAO.\",\"_data\":\"The bytes-encoded data containing the input parameters for the installation as specified in the plugin's build metadata JSON file.\"},\"returns\":{\"plugin\":\"The address of the `Plugin` contract being prepared for installation.\",\"preparedSetupData\":\"The deployed plugin's relevant data which consists of helpers and permissions.\"}},\"prepareUninstallation(address,(address,address[],bytes))\":{\"params\":{\"_dao\":\"The address of the uninstalling DAO.\",\"_payload\":\"The relevant data necessary for the `prepareUninstallation`. See above.\"},\"returns\":{\"permissions\":\"The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the uninstalling DAO.\"}},\"prepareUpdate(address,uint16,(address,address[],bytes))\":{\"details\":\"Since the underlying plugin is non-upgradeable, this non-virtual function must always revert.\",\"params\":{\"_dao\":\"The address of the updating DAO.\",\"_fromBuild\":\"The build number of the plugin to update from.\",\"_payload\":\"The relevant data necessary for the `prepareUpdate`. See above.\"},\"returns\":{\"_0\":\"The initialization data to be passed to upgradeable contracts when the update is applied in the `PluginSetupProcessor`.\",\"_1\":\"The deployed plugin's relevant data which consists of helpers and permissions.\"}},\"protocolVersion()\":{\"details\":\"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\",\"returns\":{\"_0\":\"Returns the semantic Aragon OSx protocol version number.\"}},\"supportsInterface(bytes4)\":{\"params\":{\"_interfaceId\":\"The ID of the interface.\"},\"returns\":{\"_0\":\"Returns `true` if the interface is supported.\"}}},\"version\":1},\"userdoc\":{\"errors\":{\"NonUpgradeablePlugin()\":[{\"notice\":\"Thrown when attempting to prepare an update on a non-upgradeable plugin.\"}]},\"kind\":\"user\",\"methods\":{\"implementation()\":{\"notice\":\"Returns the plugin implementation address.\"},\"prepareInstallation(address,bytes)\":{\"notice\":\"Prepares the installation of a plugin.\"},\"prepareUninstallation(address,(address,address[],bytes))\":{\"notice\":\"Prepares the uninstallation of a plugin.\"},\"prepareUpdate(address,uint16,(address,address[],bytes))\":{\"notice\":\"Prepares the update of a plugin.\"},\"protocolVersion()\":{\"notice\":\"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Checks if this or the parent contract supports an interface by its ID.\"}},\"notice\":\"A mock plugin setup of a cloneable plugin to be deployed via the minimal proxy pattern. v1.2 (Release 1, Build 2)\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/mocks/plugin/PluginCloneableSetupMock.sol\":\"PluginCloneableSetupMockBuild2\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n function __Context_init() internal onlyInitializing {\\n }\\n\\n function __Context_init_unchained() internal onlyInitializing {\\n }\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n function _contextSuffixLength() internal view virtual returns (uint256) {\\n return 0;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x75097e35253e7fb282ee4d7f27a80eaacfa759923185bf17302a89cbc059c5ef\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165Upgradeable.sol\\\";\\nimport {Initializable} from \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165Upgradeable is Initializable, IERC165Upgradeable {\\n function __ERC165_init() internal onlyInitializing {\\n }\\n\\n function __ERC165_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165Upgradeable).interfaceId;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0xd90d7723512df65ae417adaf0801042940f0dabd60039ceeaffe34aa5b238da1\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165Upgradeable {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/IERC1967.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (interfaces/IERC1967.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\\n *\\n * _Available since v4.8.3._\\n */\\ninterface IERC1967 {\\n /**\\n * @dev Emitted when the implementation is upgraded.\\n */\\n event Upgraded(address indexed implementation);\\n\\n /**\\n * @dev Emitted when the admin account has changed.\\n */\\n event AdminChanged(address previousAdmin, address newAdmin);\\n\\n /**\\n * @dev Emitted when the beacon is changed.\\n */\\n event BeaconUpgraded(address indexed beacon);\\n}\\n\",\"keccak256\":\"0x3cbef5ebc24b415252e2f8c0c9254555d30d9f085603b4b80d9b5ed20ab87e90\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822Proxiable {\\n /**\\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n * address.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy.\\n */\\n function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/Clones.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/Clones.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev https://eips.ethereum.org/EIPS/eip-1167[EIP 1167] is a standard for\\n * deploying minimal proxy contracts, also known as \\\"clones\\\".\\n *\\n * > To simply and cheaply clone contract functionality in an immutable way, this standard specifies\\n * > a minimal bytecode implementation that delegates all calls to a known, fixed address.\\n *\\n * The library includes functions to deploy a proxy using either `create` (traditional deployment) or `create2`\\n * (salted deterministic deployment). It also includes functions to predict the addresses of clones deployed using the\\n * deterministic method.\\n *\\n * _Available since v3.4._\\n */\\nlibrary Clones {\\n /**\\n * @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`.\\n *\\n * This function uses the create opcode, which should never revert.\\n */\\n function clone(address implementation) internal returns (address instance) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n // Cleans the upper 96 bits of the `implementation` word, then packs the first 3 bytes\\n // of the `implementation` address with the bytecode before the address.\\n mstore(0x00, or(shr(0xe8, shl(0x60, implementation)), 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000))\\n // Packs the remaining 17 bytes of `implementation` with the bytecode after the address.\\n mstore(0x20, or(shl(0x78, implementation), 0x5af43d82803e903d91602b57fd5bf3))\\n instance := create(0, 0x09, 0x37)\\n }\\n require(instance != address(0), \\\"ERC1167: create failed\\\");\\n }\\n\\n /**\\n * @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`.\\n *\\n * This function uses the create2 opcode and a `salt` to deterministically deploy\\n * the clone. Using the same `implementation` and `salt` multiple time will revert, since\\n * the clones cannot be deployed twice at the same address.\\n */\\n function cloneDeterministic(address implementation, bytes32 salt) internal returns (address instance) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n // Cleans the upper 96 bits of the `implementation` word, then packs the first 3 bytes\\n // of the `implementation` address with the bytecode before the address.\\n mstore(0x00, or(shr(0xe8, shl(0x60, implementation)), 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000))\\n // Packs the remaining 17 bytes of `implementation` with the bytecode after the address.\\n mstore(0x20, or(shl(0x78, implementation), 0x5af43d82803e903d91602b57fd5bf3))\\n instance := create2(0, 0x09, 0x37, salt)\\n }\\n require(instance != address(0), \\\"ERC1167: create2 failed\\\");\\n }\\n\\n /**\\n * @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}.\\n */\\n function predictDeterministicAddress(\\n address implementation,\\n bytes32 salt,\\n address deployer\\n ) internal pure returns (address predicted) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n let ptr := mload(0x40)\\n mstore(add(ptr, 0x38), deployer)\\n mstore(add(ptr, 0x24), 0x5af43d82803e903d91602b57fd5bf3ff)\\n mstore(add(ptr, 0x14), implementation)\\n mstore(ptr, 0x3d602d80600a3d3981f3363d3d373d3d3d363d73)\\n mstore(add(ptr, 0x58), salt)\\n mstore(add(ptr, 0x78), keccak256(add(ptr, 0x0c), 0x37))\\n predicted := keccak256(add(ptr, 0x43), 0x55)\\n }\\n }\\n\\n /**\\n * @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}.\\n */\\n function predictDeterministicAddress(\\n address implementation,\\n bytes32 salt\\n ) internal view returns (address predicted) {\\n return predictDeterministicAddress(implementation, salt, address(this));\\n }\\n}\\n\",\"keccak256\":\"0x01f055f5c26ba25d7f83e9aa9ba877fbea4d0bf22227de046ea67494bc932999\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (proxy/ERC1967/ERC1967Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../Proxy.sol\\\";\\nimport \\\"./ERC1967Upgrade.sol\\\";\\n\\n/**\\n * @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an\\n * implementation address that can be changed. This address is stored in storage in the location specified by\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the\\n * implementation behind the proxy.\\n */\\ncontract ERC1967Proxy is Proxy, ERC1967Upgrade {\\n /**\\n * @dev Initializes the upgradeable proxy with an initial implementation specified by `_logic`.\\n *\\n * If `_data` is nonempty, it's used as data in a delegate call to `_logic`. This will typically be an encoded\\n * function call, and allows initializing the storage of the proxy like a Solidity constructor.\\n */\\n constructor(address _logic, bytes memory _data) payable {\\n _upgradeToAndCall(_logic, _data, false);\\n }\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _implementation() internal view virtual override returns (address impl) {\\n return ERC1967Upgrade._getImplementation();\\n }\\n}\\n\",\"keccak256\":\"0xa2b22da3032e50b55f95ec1d13336102d675f341167aa76db571ef7f8bb7975d\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../beacon/IBeacon.sol\\\";\\nimport \\\"../../interfaces/IERC1967.sol\\\";\\nimport \\\"../../interfaces/draft-IERC1822.sol\\\";\\nimport \\\"../../utils/Address.sol\\\";\\nimport \\\"../../utils/StorageSlot.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n */\\nabstract contract ERC1967Upgrade is IERC1967 {\\n // This is the keccak-256 hash of \\\"eip1967.proxy.rollback\\\" subtracted by 1\\n bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n /**\\n * @dev Storage slot with the address of the current implementation.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _getImplementation() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 implementation slot.\\n */\\n function _setImplementation(address newImplementation) private {\\n require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n }\\n\\n /**\\n * @dev Perform implementation upgrade\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeTo(address newImplementation) internal {\\n _setImplementation(newImplementation);\\n emit Upgraded(newImplementation);\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCall(address newImplementation, bytes memory data, bool forceCall) internal {\\n _upgradeTo(newImplementation);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(newImplementation, data);\\n }\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCallUUPS(address newImplementation, bytes memory data, bool forceCall) internal {\\n // Upgrades from old implementations will perform a rollback test. This test requires the new\\n // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n // this special case will break upgrade paths from old UUPS implementation to new ones.\\n if (StorageSlot.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n _setImplementation(newImplementation);\\n } else {\\n try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n require(slot == _IMPLEMENTATION_SLOT, \\\"ERC1967Upgrade: unsupported proxiableUUID\\\");\\n } catch {\\n revert(\\\"ERC1967Upgrade: new implementation is not UUPS\\\");\\n }\\n _upgradeToAndCall(newImplementation, data, forceCall);\\n }\\n }\\n\\n /**\\n * @dev Storage slot with the admin of the contract.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _getAdmin() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_ADMIN_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 admin slot.\\n */\\n function _setAdmin(address newAdmin) private {\\n require(newAdmin != address(0), \\\"ERC1967: new admin is the zero address\\\");\\n StorageSlot.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n */\\n function _changeAdmin(address newAdmin) internal {\\n emit AdminChanged(_getAdmin(), newAdmin);\\n _setAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\\n */\\n bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n /**\\n * @dev Returns the current beacon.\\n */\\n function _getBeacon() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_BEACON_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new beacon in the EIP1967 beacon slot.\\n */\\n function _setBeacon(address newBeacon) private {\\n require(Address.isContract(newBeacon), \\\"ERC1967: new beacon is not a contract\\\");\\n require(\\n Address.isContract(IBeacon(newBeacon).implementation()),\\n \\\"ERC1967: beacon implementation is not a contract\\\"\\n );\\n StorageSlot.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n }\\n\\n /**\\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n *\\n * Emits a {BeaconUpgraded} event.\\n */\\n function _upgradeBeaconToAndCall(address newBeacon, bytes memory data, bool forceCall) internal {\\n _setBeacon(newBeacon);\\n emit BeaconUpgraded(newBeacon);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x3b21ae06bf5957f73fa16754b0669c77b7abd8ba6c072d35c3281d446fdb86c2\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (proxy/Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\\n * be specified by overriding the virtual {_implementation} function.\\n *\\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\\n * different contract through the {_delegate} function.\\n *\\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\\n */\\nabstract contract Proxy {\\n /**\\n * @dev Delegates the current call to `implementation`.\\n *\\n * This function does not return to its internal call site, it will return directly to the external caller.\\n */\\n function _delegate(address implementation) internal virtual {\\n assembly {\\n // Copy msg.data. We take full control of memory in this inline assembly\\n // block because it will not return to Solidity code. We overwrite the\\n // Solidity scratch pad at memory position 0.\\n calldatacopy(0, 0, calldatasize())\\n\\n // Call the implementation.\\n // out and outsize are 0 because we don't know the size yet.\\n let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)\\n\\n // Copy the returned data.\\n returndatacopy(0, 0, returndatasize())\\n\\n switch result\\n // delegatecall returns 0 on error.\\n case 0 {\\n revert(0, returndatasize())\\n }\\n default {\\n return(0, returndatasize())\\n }\\n }\\n }\\n\\n /**\\n * @dev This is a virtual function that should be overridden so it returns the address to which the fallback function\\n * and {_fallback} should delegate.\\n */\\n function _implementation() internal view virtual returns (address);\\n\\n /**\\n * @dev Delegates the current call to the address returned by `_implementation()`.\\n *\\n * This function does not return to its internal call site, it will return directly to the external caller.\\n */\\n function _fallback() internal virtual {\\n _beforeFallback();\\n _delegate(_implementation());\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\\n * function in the contract matches the call data.\\n */\\n fallback() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data\\n * is empty.\\n */\\n receive() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`\\n * call, or as part of the Solidity `fallback` or `receive` functions.\\n *\\n * If overridden should call `super._beforeFallback()`.\\n */\\n function _beforeFallback() internal virtual {}\\n}\\n\",\"keccak256\":\"0xc130fe33f1b2132158531a87734153293f6d07bc263ff4ac90e85da9c82c0e27\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeacon {\\n /**\\n * @dev Must return an address that can be used as a delegate call target.\\n *\\n * {BeaconProxy} will check that this address is a contract.\\n */\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/StorageSlot.sol)\\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```solidity\\n * contract ERC1967 {\\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n * function _getImplementation() internal view returns (address) {\\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n * }\\n *\\n * function _setImplementation(address newImplementation) internal {\\n * require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n * }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._\\n * _Available since v4.9 for `string`, `bytes`._\\n */\\nlibrary StorageSlot {\\n struct AddressSlot {\\n address value;\\n }\\n\\n struct BooleanSlot {\\n bool value;\\n }\\n\\n struct Bytes32Slot {\\n bytes32 value;\\n }\\n\\n struct Uint256Slot {\\n uint256 value;\\n }\\n\\n struct StringSlot {\\n string value;\\n }\\n\\n struct BytesSlot {\\n bytes value;\\n }\\n\\n /**\\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n */\\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n */\\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n */\\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n */\\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` with member `value` located at `slot`.\\n */\\n function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\\n */\\n function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` with member `value` located at `slot`.\\n */\\n function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\\n */\\n function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n}\\n\",\"keccak256\":\"0xf09e68aa0dc6722a25bc46490e8d48ed864466d17313b8a0b254c36b54e49899\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165 is IERC165 {\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165).interfaceId;\\n }\\n}\\n\",\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"src/dao/IDAO.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IDAO\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for DAOs within the Aragon App DAO framework.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IDAO {\\n /// @notice The action struct to be consumed by the DAO's `execute` function resulting in an external call.\\n /// @param to The address to call.\\n /// @param value The native token value to be sent with the call.\\n /// @param data The bytes-encoded function selector and calldata for the call.\\n struct Action {\\n address to;\\n uint256 value;\\n bytes data;\\n }\\n\\n /// @notice Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\\n /// @param _where The address of the contract.\\n /// @param _who The address of a EOA or contract to give the permissions.\\n /// @param _permissionId The permission identifier.\\n /// @param _data The optional data passed to the `PermissionCondition` registered.\\n /// @return Returns true if the address has permission, false if not.\\n function hasPermission(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes memory _data\\n ) external view returns (bool);\\n\\n /// @notice Updates the DAO metadata (e.g., an IPFS hash).\\n /// @param _metadata The IPFS hash of the new metadata object.\\n function setMetadata(bytes calldata _metadata) external;\\n\\n /// @notice Emitted when the DAO metadata is updated.\\n /// @param metadata The IPFS hash of the new metadata object.\\n event MetadataSet(bytes metadata);\\n\\n /// @notice Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted.\\n /// @param _callId The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce.\\n /// @param _actions The array of actions.\\n /// @param _allowFailureMap A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @return The array of results obtained from the executed actions in `bytes`.\\n /// @return The resulting failure map containing the actions have actually failed.\\n function execute(\\n bytes32 _callId,\\n Action[] memory _actions,\\n uint256 _allowFailureMap\\n ) external returns (bytes[] memory, uint256);\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param actor The address of the caller.\\n /// @param callId The ID of the call.\\n /// @param actions The array of actions executed.\\n /// @param allowFailureMap The allow failure map encoding which actions are allowed to fail.\\n /// @param failureMap The failure map encoding which actions have failed.\\n /// @param execResults The array with the results of the executed actions.\\n /// @dev The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce.\\n event Executed(\\n address indexed actor,\\n bytes32 callId,\\n Action[] actions,\\n uint256 allowFailureMap,\\n uint256 failureMap,\\n bytes[] execResults\\n );\\n\\n /// @notice Emitted when a standard callback is registered.\\n /// @param interfaceId The ID of the interface.\\n /// @param callbackSelector The selector of the callback function.\\n /// @param magicNumber The magic number to be registered for the callback function selector.\\n event StandardCallbackRegistered(\\n bytes4 interfaceId,\\n bytes4 callbackSelector,\\n bytes4 magicNumber\\n );\\n\\n /// @notice Deposits (native) tokens to the DAO contract with a reference string.\\n /// @param _token The address of the token or address(0) in case of the native token.\\n /// @param _amount The amount of tokens to deposit.\\n /// @param _reference The reference describing the deposit reason.\\n function deposit(address _token, uint256 _amount, string calldata _reference) external payable;\\n\\n /// @notice Emitted when a token deposit has been made to the DAO.\\n /// @param sender The address of the sender.\\n /// @param token The address of the deposited token.\\n /// @param amount The amount of tokens deposited.\\n /// @param _reference The reference describing the deposit reason.\\n event Deposited(\\n address indexed sender,\\n address indexed token,\\n uint256 amount,\\n string _reference\\n );\\n\\n /// @notice Emitted when a native token deposit has been made to the DAO.\\n /// @dev This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).\\n /// @param sender The address of the sender.\\n /// @param amount The amount of native tokens deposited.\\n event NativeTokenDeposited(address sender, uint256 amount);\\n\\n /// @notice Setter for the trusted forwarder verifying the meta transaction.\\n /// @param _trustedForwarder The trusted forwarder address.\\n function setTrustedForwarder(address _trustedForwarder) external;\\n\\n /// @notice Getter for the trusted forwarder verifying the meta transaction.\\n /// @return The trusted forwarder address.\\n function getTrustedForwarder() external view returns (address);\\n\\n /// @notice Emitted when a new TrustedForwarder is set on the DAO.\\n /// @param forwarder the new forwarder address.\\n event TrustedForwarderSet(address forwarder);\\n\\n /// @notice Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\\n /// @param _hash The hash of the data to be signed.\\n /// @param _signature The signature byte array associated with `_hash`.\\n /// @return Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not.\\n function isValidSignature(bytes32 _hash, bytes memory _signature) external returns (bytes4);\\n\\n /// @notice Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\\n /// @param _interfaceId The ID of the interface.\\n /// @param _callbackSelector The selector of the callback function.\\n /// @param _magicNumber The magic number to be registered for the function signature.\\n function registerStandardCallback(\\n bytes4 _interfaceId,\\n bytes4 _callbackSelector,\\n bytes4 _magicNumber\\n ) external;\\n\\n /// @notice Removed function being left here to not corrupt the IDAO interface ID. Any call will revert.\\n /// @dev Introduced in v1.0.0. Removed in v1.4.0.\\n function setSignatureValidator(address) external;\\n}\\n\",\"keccak256\":\"0xb7f615523c26de042edce98731c658f44a1edb2464387ac1b642c4c69f57128e\",\"license\":\"AGPL-3.0-or-later\"},\"src/mocks/plugin/PluginCloneableMock.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\n/* solhint-disable one-contract-per-file */\\npragma solidity ^0.8.8;\\n\\nimport {PluginCloneable} from \\\"../../plugin/PluginCloneable.sol\\\";\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice A mock cloneable plugin to be deployed via the minimal proxy pattern.\\n/// v1.1 (Release 1, Build 1)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginCloneableMockBuild1 is PluginCloneable {\\n uint256 public state1;\\n\\n function initialize(IDAO _dao) external initializer {\\n __PluginCloneable_init(_dao);\\n state1 = 1;\\n }\\n}\\n\\n/// @notice A mock cloneable plugin to be deployed via the minimal proxy pattern.\\n/// v1.1 (Release 1, Build 2)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginCloneableMockBuild2 is PluginCloneable {\\n uint256 public state1;\\n uint256 public state2;\\n\\n function initialize(IDAO _dao) external initializer {\\n __PluginCloneable_init(_dao);\\n state1 = 1;\\n state2 = 2;\\n }\\n}\\n\\n/// @notice A mock cloneable plugin missing an initializer function.\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginCloneableMockBad is PluginCloneable {\\n uint256 public state1;\\n\\n function notAnInitializer(IDAO _dao) external {\\n __PluginCloneable_init(_dao);\\n state1 = 1;\\n }\\n}\\n\",\"keccak256\":\"0x1bb271f7b553040fad7907e97b860aa833aec9aefe7477e00ba7bdfd80d84e98\",\"license\":\"AGPL-3.0-or-later\"},\"src/mocks/plugin/PluginCloneableSetupMock.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\n/* solhint-disable one-contract-per-file */\\npragma solidity ^0.8.8;\\n\\nimport {PermissionLib} from \\\"../../permission/PermissionLib.sol\\\";\\nimport {IPluginSetup} from \\\"../../plugin/setup/IPluginSetup.sol\\\";\\nimport {PluginSetup} from \\\"../../plugin/setup/PluginSetup.sol\\\";\\nimport {ProxyLib} from \\\"../../utils/deployment/ProxyLib.sol\\\";\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\nimport {mockPermissions, mockHelpers} from \\\"./PluginSetupMockData.sol\\\";\\nimport {PluginCloneableMockBuild1, PluginCloneableMockBuild2} from \\\"./PluginCloneableMock.sol\\\";\\n\\n/// @notice A mock plugin setup of a cloneable plugin to be deployed via the minimal proxy pattern.\\n/// v1.1 (Release 1, Build 1)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginCloneableSetupMockBuild1 is PluginSetup {\\n using ProxyLib for address;\\n\\n uint16 internal constant THIS_BUILD = 1;\\n\\n constructor() PluginSetup(address(new PluginCloneableMockBuild1())) {}\\n\\n /// @inheritdoc IPluginSetup\\n function prepareInstallation(\\n address _dao,\\n bytes memory\\n ) external returns (address plugin, PreparedSetupData memory preparedSetupData) {\\n bytes memory initData = abi.encodeCall(PluginCloneableMockBuild1.initialize, (IDAO(_dao)));\\n plugin = implementation().deployMinimalProxy(initData);\\n preparedSetupData.helpers = mockHelpers(THIS_BUILD);\\n preparedSetupData.permissions = mockPermissions(\\n 0,\\n THIS_BUILD,\\n PermissionLib.Operation.Grant\\n );\\n }\\n\\n /// @inheritdoc IPluginSetup\\n function prepareUninstallation(\\n address _dao,\\n SetupPayload calldata _payload\\n ) external pure returns (PermissionLib.MultiTargetPermission[] memory permissions) {\\n (_dao, _payload);\\n permissions = mockPermissions(0, THIS_BUILD, PermissionLib.Operation.Revoke);\\n }\\n}\\n\\n/// @notice A mock plugin setup of a cloneable plugin to be deployed via the minimal proxy pattern.\\n/// v1.2 (Release 1, Build 2)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginCloneableSetupMockBuild2 is PluginSetup {\\n using ProxyLib for address;\\n\\n uint16 internal constant THIS_BUILD = 2;\\n\\n constructor() PluginSetup(address(new PluginCloneableMockBuild2())) {}\\n\\n /// @inheritdoc IPluginSetup\\n function prepareInstallation(\\n address _dao,\\n bytes memory\\n ) external returns (address plugin, PreparedSetupData memory preparedSetupData) {\\n bytes memory initData = abi.encodeCall(PluginCloneableMockBuild2.initialize, (IDAO(_dao)));\\n plugin = implementation().deployMinimalProxy(initData);\\n preparedSetupData.helpers = mockHelpers(THIS_BUILD);\\n preparedSetupData.permissions = mockPermissions(\\n 0,\\n THIS_BUILD,\\n PermissionLib.Operation.Grant\\n );\\n }\\n\\n /// @inheritdoc IPluginSetup\\n function prepareUninstallation(\\n address _dao,\\n SetupPayload calldata _payload\\n ) external pure returns (PermissionLib.MultiTargetPermission[] memory permissions) {\\n (_dao, _payload);\\n permissions = mockPermissions(0, THIS_BUILD, PermissionLib.Operation.Revoke);\\n }\\n}\\n\",\"keccak256\":\"0xfac0ce75e9d665bc9e2900c5cfa3f2667e0ea73573c4f46147453c6582eac1de\",\"license\":\"AGPL-3.0-or-later\"},\"src/mocks/plugin/PluginSetupMockData.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {PermissionLib} from \\\"../../permission/PermissionLib.sol\\\";\\n\\naddress constant NO_CONDITION = address(0);\\n\\nerror ConflictingValues();\\n\\n/// @notice Creates a mock `MultiTargetPermission` array by converting a range of `uint160` values into `address` values.\\n/// @param rangeStart The start of the range.\\n/// @param rangeEnd The end of the range (that is not included).\\n/// @param op The permission operation type.\\n/// @return permissions The mock array of permissions.\\n/// @dev DO NOT USE IN PRODUCTION!\\nfunction mockPermissions(\\n uint160 rangeStart,\\n uint160 rangeEnd,\\n PermissionLib.Operation op\\n) pure returns (PermissionLib.MultiTargetPermission[] memory permissions) {\\n if (rangeStart > rangeEnd) revert ConflictingValues();\\n\\n permissions = new PermissionLib.MultiTargetPermission[](rangeEnd - rangeStart);\\n\\n for (uint160 i = rangeStart; i < rangeEnd; i++) {\\n permissions[i - rangeStart] = PermissionLib.MultiTargetPermission({\\n operation: op,\\n where: address(i),\\n who: address(i),\\n condition: PermissionLib.NO_CONDITION,\\n permissionId: keccak256(\\\"MOCK_PERMISSION\\\")\\n });\\n }\\n}\\n\\n/// @notice Creates a mock array of helper addresses of specified length by converting `uint160` values starting from 0 into `address` values.\\n/// @param len The length of the helper array.\\n/// @return helpers The mock array of helper addresses.\\n/// @dev DO NOT USE IN PRODUCTION!\\nfunction mockHelpers(uint160 len) pure returns (address[] memory helpers) {\\n helpers = new address[](len);\\n\\n for (uint160 i = 0; i < len; i++) {\\n helpers[i] = address(i);\\n }\\n}\\n\",\"keccak256\":\"0x529d1b7ea4c348fe18edf81a044792ca8aa1f6ad9a7d2edfd35e38bf8372abf9\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/PermissionLib.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title PermissionLib\\n/// @author Aragon X - 2021-2023\\n/// @notice A library containing objects for permission processing.\\n/// @custom:security-contact sirt@aragon.org\\nlibrary PermissionLib {\\n /// @notice A constant expressing that no condition is applied to a permission.\\n address public constant NO_CONDITION = address(0);\\n\\n /// @notice The types of permission operations available in the `PermissionManager`.\\n /// @param Grant The grant operation setting a permission without a condition.\\n /// @param Revoke The revoke operation removing a permission (that was granted with or without a condition).\\n /// @param GrantWithCondition The grant operation setting a permission with a condition.\\n enum Operation {\\n Grant,\\n Revoke,\\n GrantWithCondition\\n }\\n\\n /// @notice A struct containing the information for a permission to be applied on a single target contract without a condition.\\n /// @param operation The permission operation type.\\n /// @param who The address (EOA or contract) receiving the permission.\\n /// @param permissionId The permission identifier.\\n struct SingleTargetPermission {\\n Operation operation;\\n address who;\\n bytes32 permissionId;\\n }\\n\\n /// @notice A struct containing the information for a permission to be applied on multiple target contracts, optionally, with a condition.\\n /// @param operation The permission operation type.\\n /// @param where The address of the target contract for which `who` receives permission.\\n /// @param who The address (EOA or contract) receiving the permission.\\n /// @param condition The `PermissionCondition` that will be asked for authorization on calls connected to the specified permission identifier.\\n /// @param permissionId The permission identifier.\\n struct MultiTargetPermission {\\n Operation operation;\\n address where;\\n address who;\\n address condition;\\n bytes32 permissionId;\\n }\\n}\\n\",\"keccak256\":\"0x470faf3c4891ebc6420ef6cc09f6098917568ccc79268c90954d1478199b6097\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/DaoAuthorizableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ContextUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\\\";\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\nimport {_auth} from \\\"./auth.sol\\\";\\n\\n/// @title DaoAuthorizableUpgradeable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract contract providing a meta-transaction compatible modifier for upgradeable or cloneable contracts to authorize function calls through an associated DAO.\\n/// @dev Make sure to call `__DaoAuthorizableUpgradeable_init` during initialization of the inheriting contract.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract DaoAuthorizableUpgradeable is ContextUpgradeable {\\n /// @notice The associated DAO managing the permissions of inheriting contracts.\\n IDAO private dao_;\\n\\n /// @notice Initializes the contract by setting the associated DAO.\\n /// @param _dao The associated DAO address.\\n // solhint-disable-next-line func-name-mixedcase\\n function __DaoAuthorizableUpgradeable_init(IDAO _dao) internal onlyInitializing {\\n dao_ = _dao;\\n }\\n\\n /// @notice Returns the DAO contract.\\n /// @return The DAO contract.\\n function dao() public view returns (IDAO) {\\n return dao_;\\n }\\n\\n /// @notice A modifier to make functions on inheriting contracts authorized. Permissions to call the function are checked through the associated DAO's permission manager.\\n /// @param _permissionId The permission identifier required to call the method this modifier is applied to.\\n modifier auth(bytes32 _permissionId) {\\n _auth(dao_, address(this), _msgSender(), _permissionId, _msgData());\\n _;\\n }\\n\\n /// @notice This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain (see [OpenZeppelin's guide about storage gaps](https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps)).\\n uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0x7fac6b01b037ba1cb9d6a22d3f43b0785037dcf496ffb672434d9bf7227d2585\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/auth.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice Thrown if a call is unauthorized in the associated DAO.\\n/// @param dao The associated DAO.\\n/// @param where The context in which the authorization reverted.\\n/// @param who The address (EOA or contract) missing the permission.\\n/// @param permissionId The permission identifier.\\nerror DaoUnauthorized(address dao, address where, address who, bytes32 permissionId);\\n\\n/// @notice A free function checking if a caller is granted permissions on a target contract via a permission identifier that redirects the approval to a `PermissionCondition` if this was specified in the setup.\\n/// @param _where The address of the target contract for which `who` receives permission.\\n/// @param _who The address (EOA or contract) owning the permission.\\n/// @param _permissionId The permission identifier.\\n/// @param _data The optional data passed to the `PermissionCondition` registered.\\n/// @custom:security-contact sirt@aragon.org\\nfunction _auth(\\n IDAO _dao,\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes calldata _data\\n) view {\\n if (!_dao.hasPermission(_where, _who, _permissionId, _data))\\n revert DaoUnauthorized({\\n dao: address(_dao),\\n where: _where,\\n who: _who,\\n permissionId: _permissionId\\n });\\n}\\n\",\"keccak256\":\"0x878764b4f87fe0651fb3798fb9cb87c952f8c6caf6ae79c7f09de84df6c00298\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/IPlugin.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IPlugin\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the traits of a plugin.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IPlugin {\\n enum PluginType {\\n UUPS,\\n Cloneable,\\n Constructable\\n }\\n\\n /// @notice Returns the plugin's type\\n function pluginType() external view returns (PluginType);\\n}\\n\",\"keccak256\":\"0xc57cd0d10b6380ab7f54c713a509e88fd8f4ad9288313a0e8e12b8887817ddfe\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/PluginCloneable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ERC165Upgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\\\";\\n\\nimport {IProtocolVersion} from \\\"../utils/versioning/IProtocolVersion.sol\\\";\\nimport {ProtocolVersion} from \\\"../utils/versioning/ProtocolVersion.sol\\\";\\nimport {DaoAuthorizableUpgradeable} from \\\"../permission/auth/DaoAuthorizableUpgradeable.sol\\\";\\nimport {IDAO} from \\\"../dao/IDAO.sol\\\";\\nimport {IPlugin} from \\\"./IPlugin.sol\\\";\\n\\n/// @title PluginCloneable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract, non-upgradeable contract to inherit from when creating a plugin being deployed via the minimal clones pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)).\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract PluginCloneable is\\n IPlugin,\\n ERC165Upgradeable,\\n DaoAuthorizableUpgradeable,\\n ProtocolVersion\\n{\\n address public target;\\n\\n /// @dev Emitted each time the Target is set.\\n event TargetSet(address indexed previousTarget, address indexed newTarget);\\n\\n /// @notice Disables the initializers on the implementation contract to prevent it from being left uninitialized.\\n /// @custom:oz-upgrades-unsafe-allow constructor\\n constructor() {\\n _disableInitializers();\\n }\\n\\n /// @notice Initializes the plugin by storing the associated DAO.\\n /// @param _dao The DAO contract.\\n // solhint-disable-next-line func-name-mixedcase\\n function __PluginCloneable_init(IDAO _dao) internal virtual onlyInitializing {\\n __DaoAuthorizableUpgradeable_init(_dao);\\n }\\n\\n /// @dev Sets the target to a new target (`newTarget`).\\n /// @notice Can only be called by the current owner. TODO\\n function setTarget(address _target) public {\\n address previousTarget = target;\\n target = _target;\\n emit TargetSet(previousTarget, _target);\\n }\\n\\n /// @inheritdoc IPlugin\\n function pluginType() public pure override returns (PluginType) {\\n return PluginType.Cloneable;\\n }\\n\\n /// @notice Checks if this or the parent contract supports an interface by its ID.\\n /// @param _interfaceId The ID of the interface.\\n /// @return Returns `true` if the interface is supported.\\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\\n return\\n _interfaceId == type(IPlugin).interfaceId ||\\n _interfaceId == type(IProtocolVersion).interfaceId ||\\n super.supportsInterface(_interfaceId);\\n }\\n\\n /// @notice Forwards the actions to the currently set `target` for the execution.\\n /// @param _callId Identifier for this execution.\\n /// @param _actions actions that will be eventually called.\\n /// @param _allowFailureMap Bitmap-encoded number. TODO:\\n /// @return execResults address of the implementation contract.\\n /// @return failureMap address of the implementation contract.\\n function _execute(\\n bytes32 _callId,\\n IDAO.Action[] calldata _actions,\\n uint256 _allowFailureMap\\n ) internal virtual returns (bytes[] memory execResults, uint256 failureMap) {\\n (execResults, failureMap) = IDAO(target).execute(_callId, _actions, _allowFailureMap);\\n }\\n\\n /// @notice Forwards the actions to the `target` for the execution.\\n /// @param _target Forwards the actions to the specific target.\\n /// @param _callId Identifier for this execution.\\n /// @param _actions actions that will be eventually called.\\n /// @param _allowFailureMap Bitmap-encoded number. TODO:\\n /// @return execResults address of the implementation contract.\\n /// @return failureMap address of the implementation contract.\\n function _execute(\\n address _target,\\n bytes32 _callId,\\n IDAO.Action[] calldata _actions,\\n uint256 _allowFailureMap\\n ) internal virtual returns (bytes[] memory execResults, uint256 failureMap) {\\n (execResults, failureMap) = IDAO(_target).execute(_callId, _actions, _allowFailureMap);\\n }\\n}\\n\",\"keccak256\":\"0x23fff653e79f6d079073bab2f878051cf85c8e3cfa7ef359f3be92fc65ca2501\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/setup/IPluginSetup.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {PermissionLib} from \\\"../../permission/PermissionLib.sol\\\";\\n\\n// solhint-disable-next-line no-unused-import\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @title IPluginSetup\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for a plugin setup contract to be consumed by the `PluginSetupProcessor` for plugin installations, updates, and uninstallations.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IPluginSetup {\\n /// @notice The data associated with a prepared setup.\\n /// @param helpers The address array of helpers (contracts or EOAs) associated with this plugin version after the installation or update.\\n /// @param permissions The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the installing or updating DAO.\\n struct PreparedSetupData {\\n address[] helpers;\\n PermissionLib.MultiTargetPermission[] permissions;\\n }\\n\\n /// @notice The payload for plugin updates and uninstallations containing the existing contracts as well as optional data to be consumed by the plugin setup.\\n /// @param plugin The address of the `Plugin`.\\n /// @param currentHelpers The address array of all current helpers (contracts or EOAs) associated with the plugin to update from.\\n /// @param data The bytes-encoded data containing the input parameters for the preparation of update/uninstall as specified in the corresponding ABI on the version's metadata.\\n struct SetupPayload {\\n address plugin;\\n address[] currentHelpers;\\n bytes data;\\n }\\n\\n /// @notice Prepares the installation of a plugin.\\n /// @param _dao The address of the installing DAO.\\n /// @param _data The bytes-encoded data containing the input parameters for the installation as specified in the plugin's build metadata JSON file.\\n /// @return plugin The address of the `Plugin` contract being prepared for installation.\\n /// @return preparedSetupData The deployed plugin's relevant data which consists of helpers and permissions.\\n function prepareInstallation(\\n address _dao,\\n bytes calldata _data\\n ) external returns (address plugin, PreparedSetupData memory preparedSetupData);\\n\\n /// @notice Prepares the update of a plugin.\\n /// @param _dao The address of the updating DAO.\\n /// @param _fromBuild The build number of the plugin to update from.\\n /// @param _payload The relevant data necessary for the `prepareUpdate`. See above.\\n /// @return initData The initialization data to be passed to upgradeable contracts when the update is applied in the `PluginSetupProcessor`.\\n /// @return preparedSetupData The deployed plugin's relevant data which consists of helpers and permissions.\\n function prepareUpdate(\\n address _dao,\\n uint16 _fromBuild,\\n SetupPayload calldata _payload\\n ) external returns (bytes memory initData, PreparedSetupData memory preparedSetupData);\\n\\n /// @notice Prepares the uninstallation of a plugin.\\n /// @param _dao The address of the uninstalling DAO.\\n /// @param _payload The relevant data necessary for the `prepareUninstallation`. See above.\\n /// @return permissions The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the uninstalling DAO.\\n function prepareUninstallation(\\n address _dao,\\n SetupPayload calldata _payload\\n ) external returns (PermissionLib.MultiTargetPermission[] memory permissions);\\n\\n /// @notice Returns the plugin implementation address.\\n /// @return The address of the plugin implementation contract.\\n /// @dev The implementation can be instantiated via the `new` keyword, cloned via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)), or proxied via the UUPS proxy pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0x21c99995208039ac6ace219b6f273243811dc2aa66399e8e499e43ec30b82fa9\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/setup/PluginSetup.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ERC165} from \\\"@openzeppelin/contracts/utils/introspection/ERC165.sol\\\";\\n\\nimport {IProtocolVersion} from \\\"../../utils/versioning/IProtocolVersion.sol\\\";\\nimport {ProtocolVersion} from \\\"../../utils/versioning/ProtocolVersion.sol\\\";\\nimport {IPluginSetup} from \\\"./IPluginSetup.sol\\\";\\n\\n/// @title PluginSetup\\n/// @author Aragon X - 2022-2024\\n/// @notice An abstract contract to inherit from to implement the plugin setup for non-upgradeable plugins, i.e,\\n/// - `Plugin` being deployed via the `new` keyword\\n/// - `PluginCloneable` being deployed via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)).\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract PluginSetup is ERC165, IPluginSetup, ProtocolVersion {\\n /// @notice The address of the plugin implementation contract for initial block explorer verification and, in the case of `PluginClonable` implementations, to create [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167) clones from.\\n address internal immutable IMPLEMENTATION;\\n\\n /// @notice Thrown when attempting to prepare an update on a non-upgradeable plugin.\\n error NonUpgradeablePlugin();\\n\\n /// @notice The contract constructor, that setting the plugin implementation contract.\\n /// @param _implementation The address of the plugin implementation contract.\\n constructor(address _implementation) {\\n IMPLEMENTATION = _implementation;\\n }\\n\\n /// @inheritdoc IPluginSetup\\n /// @dev Since the underlying plugin is non-upgradeable, this non-virtual function must always revert.\\n function prepareUpdate(\\n address _dao,\\n uint16 _fromBuild,\\n SetupPayload calldata _payload\\n ) external pure returns (bytes memory, PreparedSetupData memory) {\\n (_dao, _fromBuild, _payload);\\n revert NonUpgradeablePlugin();\\n }\\n\\n /// @notice Checks if this or the parent contract supports an interface by its ID.\\n /// @param _interfaceId The ID of the interface.\\n /// @return Returns `true` if the interface is supported.\\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\\n return\\n _interfaceId == type(IPluginSetup).interfaceId ||\\n _interfaceId == type(IProtocolVersion).interfaceId ||\\n super.supportsInterface(_interfaceId);\\n }\\n\\n /// @inheritdoc IPluginSetup\\n function implementation() public view returns (address) {\\n return IMPLEMENTATION;\\n }\\n}\\n\",\"keccak256\":\"0x93044f8080758c5cf8d621e3614b8150f55572a1770880106a49dfa53784a9d2\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/deployment/ProxyLib.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ERC1967Proxy} from \\\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol\\\";\\nimport {Clones} from \\\"@openzeppelin/contracts/proxy/Clones.sol\\\";\\nimport {Address} from \\\"@openzeppelin/contracts/utils/Address.sol\\\";\\n\\n/// @title ProxyLib\\n/// @author Aragon X - 2024\\n/// @notice A library containing methods for the deployment of proxies via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)) and minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)).\\n/// @custom:security-contact sirt@aragon.org\\nlibrary ProxyLib {\\n using Address for address;\\n using Clones for address;\\n\\n /// @notice Creates an [ERC-1967](https://eips.ethereum.org/EIPS/eip-1967) UUPS proxy contract pointing to a logic contract and allows to immediately initialize it.\\n /// @param _logic The logic contract the proxy is pointing to.\\n /// @param _initCalldata The initialization data for this contract.\\n /// @return uupsProxy The address of the UUPS proxy contract created.\\n /// @dev If `_initCalldata` is non-empty, it is used in a delegate call to the `_logic` contract. This will typically be an encoded function call initializing the storage of the proxy (see [OpenZeppelin ERC1967Proxy-constructor](https://docs.openzeppelin.com/contracts/4.x/api/proxy#ERC1967Proxy-constructor-address-bytes-)).\\n function deployUUPSProxy(\\n address _logic,\\n bytes memory _initCalldata\\n ) internal returns (address uupsProxy) {\\n uupsProxy = address(new ERC1967Proxy({_logic: _logic, _data: _initCalldata}));\\n }\\n\\n /// @notice Creates an [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167) minimal proxy contract, also known as clones, pointing to a logic contract and allows to immediately initialize it.\\n /// @param _logic The logic contract the proxy is pointing to.\\n /// @param _initCalldata The initialization data for this contract.\\n /// @return minimalProxy The address of the minimal proxy contract created.\\n /// @dev If `_initCalldata` is non-empty, it is used in a call to the clone contract. This will typically be an encoded function call initializing the storage of the contract.\\n function deployMinimalProxy(\\n address _logic,\\n bytes memory _initCalldata\\n ) internal returns (address minimalProxy) {\\n minimalProxy = _logic.clone();\\n if (_initCalldata.length > 0) {\\n minimalProxy.functionCall({data: _initCalldata});\\n }\\n }\\n}\\n\",\"keccak256\":\"0xef0d1790dfa026381c021daa2ec7267357497f58cd4a2fa5c64e72e0dea95acc\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/IProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IProtocolVersion\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the semantic Aragon OSx protocol version number.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IProtocolVersion {\\n /// @notice Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\\n /// @return _version Returns the semantic Aragon OSx protocol version number.\\n /// @dev This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\\n function protocolVersion() external view returns (uint8[3] memory _version);\\n}\\n\",\"keccak256\":\"0x00a4da654d21dc1bdadbdc8bd54bb86c378c56f85e461ccc31303628ea621361\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/ProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IProtocolVersion} from \\\"./IProtocolVersion.sol\\\";\\n\\n/// @title ProtocolVersion\\n/// @author Aragon X - 2023\\n/// @notice An abstract, stateless, non-upgradeable contract providing the current Aragon OSx protocol version number.\\n/// @dev Do not add any new variables to this contract that would shift down storage in the inheritance chain.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract ProtocolVersion is IProtocolVersion {\\n // IMPORTANT: Do not add any storage variable, see the above notice.\\n\\n /// @inheritdoc IProtocolVersion\\n function protocolVersion() public pure returns (uint8[3] memory) {\\n return [1, 4, 0];\\n }\\n}\\n\",\"keccak256\":\"0x3975c937be935f687c6b6b8f379071232681e98cf04b175d72781b819ea52bdb\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"errors":{"NonUpgradeablePlugin()":[{"notice":"Thrown when attempting to prepare an update on a non-upgradeable plugin."}]},"kind":"user","methods":{"implementation()":{"notice":"Returns the plugin implementation address."},"prepareInstallation(address,bytes)":{"notice":"Prepares the installation of a plugin."},"prepareUninstallation(address,(address,address[],bytes))":{"notice":"Prepares the uninstallation of a plugin."},"prepareUpdate(address,uint16,(address,address[],bytes))":{"notice":"Prepares the update of a plugin."},"protocolVersion()":{"notice":"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with."},"supportsInterface(bytes4)":{"notice":"Checks if this or the parent contract supports an interface by its ID."}},"notice":"A mock plugin setup of a cloneable plugin to be deployed via the minimal proxy pattern. v1.2 (Release 1, Build 2)","version":1}}},"src/mocks/plugin/PluginMock.sol":{"PluginMockBuild1":{"abi":[{"inputs":[{"internalType":"contract IDAO","name":"_dao","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousTarget","type":"address"},{"indexed":true,"internalType":"address","name":"newTarget","type":"address"}],"name":"TargetSet","type":"event"},{"inputs":[],"name":"dao","outputs":[{"internalType":"contract IDAO","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pluginType","outputs":[{"internalType":"enum IPlugin.PluginType","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"protocolVersion","outputs":[{"internalType":"uint8[3]","name":"","type":"uint8[3]"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_target","type":"address"}],"name":"setTarget","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"state1","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"target","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"DO NOT USE IN PRODUCTION!","kind":"dev","methods":{"dao()":{"returns":{"_0":"The DAO contract."}},"protocolVersion()":{"details":"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.","returns":{"_0":"Returns the semantic Aragon OSx protocol version number."}},"setTarget(address)":{"details":"Sets the target to a new target (`newTarget`)."},"supportsInterface(bytes4)":{"params":{"_interfaceId":"The ID of the interface."},"returns":{"_0":"Returns `true` if the interface is supported."}}},"version":1},"evm":{"bytecode":{"functionDebugData":{"@_2870":{"entryPoint":null,"id":2870,"parameterSlots":1,"returnSlots":0},"@_3841":{"entryPoint":null,"id":3841,"parameterSlots":1,"returnSlots":0},"@_4045":{"entryPoint":null,"id":4045,"parameterSlots":1,"returnSlots":0},"abi_decode_tuple_t_contract$_IDAO_$2538_fromMemory":{"entryPoint":68,"id":null,"parameterSlots":2,"returnSlots":1}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:319:50","statements":[{"nodeType":"YulBlock","src":"6:3:50","statements":[]},{"body":{"nodeType":"YulBlock","src":"108:209:50","statements":[{"body":{"nodeType":"YulBlock","src":"154:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"163:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"166:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"156:6:50"},"nodeType":"YulFunctionCall","src":"156:12:50"},"nodeType":"YulExpressionStatement","src":"156:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"129:7:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"138:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"125:3:50"},"nodeType":"YulFunctionCall","src":"125:23:50"},{"kind":"number","nodeType":"YulLiteral","src":"150:2:50","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"121:3:50"},"nodeType":"YulFunctionCall","src":"121:32:50"},"nodeType":"YulIf","src":"118:52:50"},{"nodeType":"YulVariableDeclaration","src":"179:29:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"198:9:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"192:5:50"},"nodeType":"YulFunctionCall","src":"192:16:50"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"183:5:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"271:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"280:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"283:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"273:6:50"},"nodeType":"YulFunctionCall","src":"273:12:50"},"nodeType":"YulExpressionStatement","src":"273:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"230:5:50"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"241:5:50"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"256:3:50","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"261:1:50","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"252:3:50"},"nodeType":"YulFunctionCall","src":"252:11:50"},{"kind":"number","nodeType":"YulLiteral","src":"265:1:50","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"248:3:50"},"nodeType":"YulFunctionCall","src":"248:19:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"237:3:50"},"nodeType":"YulFunctionCall","src":"237:31:50"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"227:2:50"},"nodeType":"YulFunctionCall","src":"227:42:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"220:6:50"},"nodeType":"YulFunctionCall","src":"220:50:50"},"nodeType":"YulIf","src":"217:70:50"},{"nodeType":"YulAssignment","src":"296:15:50","value":{"name":"value","nodeType":"YulIdentifier","src":"306:5:50"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"296:6:50"}]}]},"name":"abi_decode_tuple_t_contract$_IDAO_$2538_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"74:9:50","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"85:7:50","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"97:6:50","type":""}],"src":"14:303:50"}]},"contents":"{\n { }\n function abi_decode_tuple_t_contract$_IDAO_$2538_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := mload(headStart)\n if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n value0 := value\n }\n}","id":50,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60a060405234801561001057600080fd5b5060405161039938038061039983398101604081905261002f91610044565b6001600160a01b031660805260018055610074565b60006020828403121561005657600080fd5b81516001600160a01b038116811461006d57600080fd5b9392505050565b60805161030b61008e600039600060c1015261030b6000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806341de68301161005b57806341de6830146100f95780636accab8c14610108578063776d1a011461011f578063d4b839921461013457600080fd5b806301ffc9a7146100825780632ae9c600146100aa5780634162169f146100bf575b600080fd5b610095610090366004610248565b610147565b60405190151581526020015b60405180910390f35b6100b2610198565b6040516100a19190610279565b7f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020016100a1565b60026040516100a191906102ad565b61011160015481565b6040519081526020016100a1565b61013261012d3660046102d5565b6101c2565b005b6000546100e1906001600160a01b031681565b60006001600160e01b0319821663041de68360e41b148061017757506001600160e01b03198216621574e360e91b145b8061019257506301ffc9a760e01b6001600160e01b03198316145b92915050565b6101a061022a565b5060408051606081018252600181526004602082015260009181019190915290565b600080546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d69190a35050565b60405180606001604052806003906020820280368337509192915050565b60006020828403121561025a57600080fd5b81356001600160e01b03198116811461027257600080fd5b9392505050565b60608101818360005b60038110156102a457815160ff16835260209283019290910190600101610282565b50505092915050565b60208101600383106102cf57634e487b7160e01b600052602160045260246000fd5b91905290565b6000602082840312156102e757600080fd5b81356001600160a01b038116811461027257600080fdfea164736f6c6343000811000a","opcodes":"PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x399 CODESIZE SUB DUP1 PUSH2 0x399 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0x44 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x80 MSTORE PUSH1 0x1 DUP1 SSTORE PUSH2 0x74 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x56 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x6D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH2 0x30B PUSH2 0x8E PUSH1 0x0 CODECOPY PUSH1 0x0 PUSH1 0xC1 ADD MSTORE PUSH2 0x30B PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x7D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x41DE6830 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x41DE6830 EQ PUSH2 0xF9 JUMPI DUP1 PUSH4 0x6ACCAB8C EQ PUSH2 0x108 JUMPI DUP1 PUSH4 0x776D1A01 EQ PUSH2 0x11F JUMPI DUP1 PUSH4 0xD4B83992 EQ PUSH2 0x134 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x82 JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0xAA JUMPI DUP1 PUSH4 0x4162169F EQ PUSH2 0xBF JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x95 PUSH2 0x90 CALLDATASIZE PUSH1 0x4 PUSH2 0x248 JUMP JUMPDEST PUSH2 0x147 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xB2 PUSH2 0x198 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA1 SWAP2 SWAP1 PUSH2 0x279 JUMP JUMPDEST PUSH32 0x0 JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xA1 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x40 MLOAD PUSH2 0xA1 SWAP2 SWAP1 PUSH2 0x2AD JUMP JUMPDEST PUSH2 0x111 PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xA1 JUMP JUMPDEST PUSH2 0x132 PUSH2 0x12D CALLDATASIZE PUSH1 0x4 PUSH2 0x2D5 JUMP JUMPDEST PUSH2 0x1C2 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0xE1 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x41DE683 PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x177 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x192 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1A0 PUSH2 0x22A JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 DUP4 AND DUP2 OR DUP5 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 DUP4 SWAP2 PUSH32 0x90CC2F570A6EB594B1580EA3E41247D2D73A55281889E86BD4EC2FC29C7E62D6 SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x25A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x272 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0x2A4 JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x282 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH1 0x3 DUP4 LT PUSH2 0x2CF JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 SWAP1 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x272 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"291:135:28:-:0;;;361:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;844:10:34;;;416:1:28::1;407:10:::0;;291:135;;14:303:50;97:6;150:2;138:9;129:7;125:23;121:32;118:52;;;166:1;163;156:12;118:52;192:16;;-1:-1:-1;;;;;237:31:50;;227:42;;217:70;;283:1;280;273:12;217:70;306:5;14:303;-1:-1:-1;;;14:303:50:o;:::-;291:135:28;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@dao_3851":{"entryPoint":null,"id":3851,"parameterSlots":0,"returnSlots":1},"@pluginType_4057":{"entryPoint":null,"id":4057,"parameterSlots":0,"returnSlots":1},"@protocolVersion_5135":{"entryPoint":408,"id":5135,"parameterSlots":0,"returnSlots":1},"@setTarget_4077":{"entryPoint":450,"id":4077,"parameterSlots":1,"returnSlots":0},"@state1_2856":{"entryPoint":null,"id":2856,"parameterSlots":0,"returnSlots":0},"@supportsInterface_2374":{"entryPoint":null,"id":2374,"parameterSlots":1,"returnSlots":1},"@supportsInterface_4106":{"entryPoint":327,"id":4106,"parameterSlots":1,"returnSlots":1},"@target_4027":{"entryPoint":null,"id":4027,"parameterSlots":0,"returnSlots":0},"abi_decode_tuple_t_address":{"entryPoint":725,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes4":{"entryPoint":584,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed":{"entryPoint":633,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_contract$_IDAO_$2538__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_enum$_PluginType_$3994__to_t_uint8__fromStack_reversed":{"entryPoint":685,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:2319:50","statements":[{"nodeType":"YulBlock","src":"6:3:50","statements":[]},{"body":{"nodeType":"YulBlock","src":"83:217:50","statements":[{"body":{"nodeType":"YulBlock","src":"129:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"138:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"141:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"131:6:50"},"nodeType":"YulFunctionCall","src":"131:12:50"},"nodeType":"YulExpressionStatement","src":"131:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"104:7:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"113:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"100:3:50"},"nodeType":"YulFunctionCall","src":"100:23:50"},{"kind":"number","nodeType":"YulLiteral","src":"125:2:50","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"96:3:50"},"nodeType":"YulFunctionCall","src":"96:32:50"},"nodeType":"YulIf","src":"93:52:50"},{"nodeType":"YulVariableDeclaration","src":"154:36:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"180:9:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"167:12:50"},"nodeType":"YulFunctionCall","src":"167:23:50"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"158:5:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"254:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"263:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"266:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"256:6:50"},"nodeType":"YulFunctionCall","src":"256:12:50"},"nodeType":"YulExpressionStatement","src":"256:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"212:5:50"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"223:5:50"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"234:3:50","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"239:10:50","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"230:3:50"},"nodeType":"YulFunctionCall","src":"230:20:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"219:3:50"},"nodeType":"YulFunctionCall","src":"219:32:50"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"209:2:50"},"nodeType":"YulFunctionCall","src":"209:43:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"202:6:50"},"nodeType":"YulFunctionCall","src":"202:51:50"},"nodeType":"YulIf","src":"199:71:50"},{"nodeType":"YulAssignment","src":"279:15:50","value":{"name":"value","nodeType":"YulIdentifier","src":"289:5:50"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"279:6:50"}]}]},"name":"abi_decode_tuple_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"49:9:50","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"60:7:50","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"72:6:50","type":""}],"src":"14:286:50"},{"body":{"nodeType":"YulBlock","src":"400:92:50","statements":[{"nodeType":"YulAssignment","src":"410:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"422:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"433:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"418:3:50"},"nodeType":"YulFunctionCall","src":"418:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"410:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"452:9:50"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"477:6:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"470:6:50"},"nodeType":"YulFunctionCall","src":"470:14:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"463:6:50"},"nodeType":"YulFunctionCall","src":"463:22:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"445:6:50"},"nodeType":"YulFunctionCall","src":"445:41:50"},"nodeType":"YulExpressionStatement","src":"445:41:50"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"369:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"380:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"391:4:50","type":""}],"src":"305:187:50"},{"body":{"nodeType":"YulBlock","src":"640:358:50","statements":[{"nodeType":"YulAssignment","src":"650:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"662:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"673:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"658:3:50"},"nodeType":"YulFunctionCall","src":"658:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"650:4:50"}]},{"nodeType":"YulVariableDeclaration","src":"685:20:50","value":{"name":"headStart","nodeType":"YulIdentifier","src":"696:9:50"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"689:3:50","type":""}]},{"nodeType":"YulAssignment","src":"714:16:50","value":{"name":"headStart","nodeType":"YulIdentifier","src":"721:9:50"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"714:3:50"}]},{"nodeType":"YulVariableDeclaration","src":"739:20:50","value":{"name":"value0","nodeType":"YulIdentifier","src":"753:6:50"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"743:6:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"768:10:50","value":{"kind":"number","nodeType":"YulLiteral","src":"777:1:50","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"772:1:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"834:158:50","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"855:3:50"},{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"870:6:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"864:5:50"},"nodeType":"YulFunctionCall","src":"864:13:50"},{"kind":"number","nodeType":"YulLiteral","src":"879:4:50","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"860:3:50"},"nodeType":"YulFunctionCall","src":"860:24:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"848:6:50"},"nodeType":"YulFunctionCall","src":"848:37:50"},"nodeType":"YulExpressionStatement","src":"848:37:50"},{"nodeType":"YulVariableDeclaration","src":"898:14:50","value":{"kind":"number","nodeType":"YulLiteral","src":"908:4:50","type":"","value":"0x20"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"902:2:50","type":""}]},{"nodeType":"YulAssignment","src":"925:19:50","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"936:3:50"},{"name":"_1","nodeType":"YulIdentifier","src":"941:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"932:3:50"},"nodeType":"YulFunctionCall","src":"932:12:50"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"925:3:50"}]},{"nodeType":"YulAssignment","src":"957:25:50","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"971:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"979:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"967:3:50"},"nodeType":"YulFunctionCall","src":"967:15:50"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"957:6:50"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"798:1:50"},{"kind":"number","nodeType":"YulLiteral","src":"801:4:50","type":"","value":"0x03"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"795:2:50"},"nodeType":"YulFunctionCall","src":"795:11:50"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"807:18:50","statements":[{"nodeType":"YulAssignment","src":"809:14:50","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"818:1:50"},{"kind":"number","nodeType":"YulLiteral","src":"821:1:50","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"814:3:50"},"nodeType":"YulFunctionCall","src":"814:9:50"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"809:1:50"}]}]},"pre":{"nodeType":"YulBlock","src":"791:3:50","statements":[]},"src":"787:205:50"}]},"name":"abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"609:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"620:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"631:4:50","type":""}],"src":"497:501:50"},{"body":{"nodeType":"YulBlock","src":"1117:125:50","statements":[{"nodeType":"YulAssignment","src":"1127:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1139:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"1150:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1135:3:50"},"nodeType":"YulFunctionCall","src":"1135:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1127:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1169:9:50"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1184:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"1192:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1180:3:50"},"nodeType":"YulFunctionCall","src":"1180:55:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1162:6:50"},"nodeType":"YulFunctionCall","src":"1162:74:50"},"nodeType":"YulExpressionStatement","src":"1162:74:50"}]},"name":"abi_encode_tuple_t_contract$_IDAO_$2538__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1086:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1097:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1108:4:50","type":""}],"src":"1003:239:50"},{"body":{"nodeType":"YulBlock","src":"1361:229:50","statements":[{"nodeType":"YulAssignment","src":"1371:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1383:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"1394:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1379:3:50"},"nodeType":"YulFunctionCall","src":"1379:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1371:4:50"}]},{"body":{"nodeType":"YulBlock","src":"1439:111:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1460:1:50","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1467:3:50","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"1472:10:50","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1463:3:50"},"nodeType":"YulFunctionCall","src":"1463:20:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1453:6:50"},"nodeType":"YulFunctionCall","src":"1453:31:50"},"nodeType":"YulExpressionStatement","src":"1453:31:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1504:1:50","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"1507:4:50","type":"","value":"0x21"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1497:6:50"},"nodeType":"YulFunctionCall","src":"1497:15:50"},"nodeType":"YulExpressionStatement","src":"1497:15:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1532:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1535:4:50","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1525:6:50"},"nodeType":"YulFunctionCall","src":"1525:15:50"},"nodeType":"YulExpressionStatement","src":"1525:15:50"}]},"condition":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1419:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"1427:1:50","type":"","value":"3"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"1416:2:50"},"nodeType":"YulFunctionCall","src":"1416:13:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1409:6:50"},"nodeType":"YulFunctionCall","src":"1409:21:50"},"nodeType":"YulIf","src":"1406:144:50"},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1566:9:50"},{"name":"value0","nodeType":"YulIdentifier","src":"1577:6:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1559:6:50"},"nodeType":"YulFunctionCall","src":"1559:25:50"},"nodeType":"YulExpressionStatement","src":"1559:25:50"}]},"name":"abi_encode_tuple_t_enum$_PluginType_$3994__to_t_uint8__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1330:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1341:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1352:4:50","type":""}],"src":"1247:343:50"},{"body":{"nodeType":"YulBlock","src":"1696:76:50","statements":[{"nodeType":"YulAssignment","src":"1706:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1718:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"1729:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1714:3:50"},"nodeType":"YulFunctionCall","src":"1714:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1706:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1748:9:50"},{"name":"value0","nodeType":"YulIdentifier","src":"1759:6:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1741:6:50"},"nodeType":"YulFunctionCall","src":"1741:25:50"},"nodeType":"YulExpressionStatement","src":"1741:25:50"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1665:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1676:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1687:4:50","type":""}],"src":"1595:177:50"},{"body":{"nodeType":"YulBlock","src":"1847:239:50","statements":[{"body":{"nodeType":"YulBlock","src":"1893:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1902:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1905:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1895:6:50"},"nodeType":"YulFunctionCall","src":"1895:12:50"},"nodeType":"YulExpressionStatement","src":"1895:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1868:7:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"1877:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1864:3:50"},"nodeType":"YulFunctionCall","src":"1864:23:50"},{"kind":"number","nodeType":"YulLiteral","src":"1889:2:50","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1860:3:50"},"nodeType":"YulFunctionCall","src":"1860:32:50"},"nodeType":"YulIf","src":"1857:52:50"},{"nodeType":"YulVariableDeclaration","src":"1918:36:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1944:9:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1931:12:50"},"nodeType":"YulFunctionCall","src":"1931:23:50"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"1922:5:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"2040:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2049:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2052:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2042:6:50"},"nodeType":"YulFunctionCall","src":"2042:12:50"},"nodeType":"YulExpressionStatement","src":"2042:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1976:5:50"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1987:5:50"},{"kind":"number","nodeType":"YulLiteral","src":"1994:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1983:3:50"},"nodeType":"YulFunctionCall","src":"1983:54:50"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1973:2:50"},"nodeType":"YulFunctionCall","src":"1973:65:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1966:6:50"},"nodeType":"YulFunctionCall","src":"1966:73:50"},"nodeType":"YulIf","src":"1963:93:50"},{"nodeType":"YulAssignment","src":"2065:15:50","value":{"name":"value","nodeType":"YulIdentifier","src":"2075:5:50"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2065:6:50"}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1813:9:50","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1824:7:50","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1836:6:50","type":""}],"src":"1777:309:50"},{"body":{"nodeType":"YulBlock","src":"2192:125:50","statements":[{"nodeType":"YulAssignment","src":"2202:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2214:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"2225:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2210:3:50"},"nodeType":"YulFunctionCall","src":"2210:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2202:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2244:9:50"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2259:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"2267:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2255:3:50"},"nodeType":"YulFunctionCall","src":"2255:55:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2237:6:50"},"nodeType":"YulFunctionCall","src":"2237:74:50"},"nodeType":"YulExpressionStatement","src":"2237:74:50"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2161:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"2172:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2183:4:50","type":""}],"src":"2091:226:50"}]},"contents":"{\n { }\n function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n if iszero(eq(value, and(value, shl(224, 0xffffffff)))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 96)\n let pos := headStart\n pos := headStart\n let srcPtr := value0\n let i := 0\n for { } lt(i, 0x03) { i := add(i, 1) }\n {\n mstore(pos, and(mload(srcPtr), 0xff))\n let _1 := 0x20\n pos := add(pos, _1)\n srcPtr := add(srcPtr, _1)\n }\n }\n function abi_encode_tuple_t_contract$_IDAO_$2538__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_encode_tuple_t_enum$_PluginType_$3994__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n if iszero(lt(value0, 3))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x21)\n revert(0, 0x24)\n }\n mstore(headStart, value0)\n }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n}","id":50,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{"3829":[{"length":32,"start":193}]},"linkReferences":{},"object":"608060405234801561001057600080fd5b506004361061007d5760003560e01c806341de68301161005b57806341de6830146100f95780636accab8c14610108578063776d1a011461011f578063d4b839921461013457600080fd5b806301ffc9a7146100825780632ae9c600146100aa5780634162169f146100bf575b600080fd5b610095610090366004610248565b610147565b60405190151581526020015b60405180910390f35b6100b2610198565b6040516100a19190610279565b7f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020016100a1565b60026040516100a191906102ad565b61011160015481565b6040519081526020016100a1565b61013261012d3660046102d5565b6101c2565b005b6000546100e1906001600160a01b031681565b60006001600160e01b0319821663041de68360e41b148061017757506001600160e01b03198216621574e360e91b145b8061019257506301ffc9a760e01b6001600160e01b03198316145b92915050565b6101a061022a565b5060408051606081018252600181526004602082015260009181019190915290565b600080546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d69190a35050565b60405180606001604052806003906020820280368337509192915050565b60006020828403121561025a57600080fd5b81356001600160e01b03198116811461027257600080fd5b9392505050565b60608101818360005b60038110156102a457815160ff16835260209283019290910190600101610282565b50505092915050565b60208101600383106102cf57634e487b7160e01b600052602160045260246000fd5b91905290565b6000602082840312156102e757600080fd5b81356001600160a01b038116811461027257600080fdfea164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x7D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x41DE6830 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x41DE6830 EQ PUSH2 0xF9 JUMPI DUP1 PUSH4 0x6ACCAB8C EQ PUSH2 0x108 JUMPI DUP1 PUSH4 0x776D1A01 EQ PUSH2 0x11F JUMPI DUP1 PUSH4 0xD4B83992 EQ PUSH2 0x134 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x82 JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0xAA JUMPI DUP1 PUSH4 0x4162169F EQ PUSH2 0xBF JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x95 PUSH2 0x90 CALLDATASIZE PUSH1 0x4 PUSH2 0x248 JUMP JUMPDEST PUSH2 0x147 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xB2 PUSH2 0x198 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA1 SWAP2 SWAP1 PUSH2 0x279 JUMP JUMPDEST PUSH32 0x0 JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xA1 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x40 MLOAD PUSH2 0xA1 SWAP2 SWAP1 PUSH2 0x2AD JUMP JUMPDEST PUSH2 0x111 PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xA1 JUMP JUMPDEST PUSH2 0x132 PUSH2 0x12D CALLDATASIZE PUSH1 0x4 PUSH2 0x2D5 JUMP JUMPDEST PUSH2 0x1C2 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0xE1 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x41DE683 PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x177 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x192 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1A0 PUSH2 0x22A JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 DUP4 AND DUP2 OR DUP5 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 DUP4 SWAP2 PUSH32 0x90CC2F570A6EB594B1580EA3E41247D2D73A55281889E86BD4EC2FC29C7E62D6 SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x25A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x272 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0x2A4 JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x282 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH1 0x3 DUP4 LT PUSH2 0x2CF JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 SWAP1 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x272 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"291:135:28:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1718:288:38;;;;;;:::i;:::-;;:::i;:::-;;;470:14:50;;463:22;445:41;;433:2;418:18;1718:288:38;;;;;;;;631:98:49;;;:::i;:::-;;;;;;;:::i;943:69:34:-;1002:3;943:69;;;-1:-1:-1;;;;;1180:55:50;;;1162:74;;1150:2;1135:18;943:69:34;1003:239:50;1104:112:38;1185:24;1104:112;;;;;;:::i;333:21:28:-;;;;;;;;;1741:25:50;;;1729:2;1714:18;333:21:28;1595:177:50;1344:166:38;;;;;;:::i;:::-;;:::i;:::-;;757:21;;;;;-1:-1:-1;;;;;757:21:38;;;1718:288;1804:4;-1:-1:-1;;;;;;1839:41:38;;-1:-1:-1;;;1839:41:38;;:107;;-1:-1:-1;;;;;;;1896:50:38;;-1:-1:-1;;;1896:50:38;1839:107;:160;;;-1:-1:-1;;;;;;;;;;937:40:23;;;1962:37:38;1820:179;1718:288;-1:-1:-1;;1718:288:38:o;631:98:49:-;679:15;;:::i;:::-;-1:-1:-1;706:16:49;;;;;;;;714:1;706:16;;717:1;706:16;;;;-1:-1:-1;706:16:49;;;;;;;;631:98::o;1344:166:38:-;1397:22;1422:6;;-1:-1:-1;;;;;1438:16:38;;;;;;;;;;1469:34;;1422:6;;;;;;;1469:34;;1397:22;1469:34;1387:123;1344:166;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:286:50:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:50;;209:43;;199:71;;266:1;263;256:12;199:71;289:5;14:286;-1:-1:-1;;;14:286:50:o;497:501::-;673:2;658:18;;662:9;753:6;631:4;787:205;801:4;798:1;795:11;787:205;;;864:13;;879:4;860:24;848:37;;908:4;932:12;;;;967:15;;;;821:1;814:9;787:205;;;791:3;;;497:501;;;;:::o;1247:343::-;1394:2;1379:18;;1427:1;1416:13;;1406:144;;1472:10;1467:3;1463:20;1460:1;1453:31;1507:4;1504:1;1497:15;1535:4;1532:1;1525:15;1406:144;1559:25;;;1247:343;:::o;1777:309::-;1836:6;1889:2;1877:9;1868:7;1864:23;1860:32;1857:52;;;1905:1;1902;1895:12;1857:52;1944:9;1931:23;-1:-1:-1;;;;;1987:5:50;1983:54;1976:5;1973:65;1963:93;;2052:1;2049;2042:12"},"gasEstimates":{"creation":{"codeDepositCost":"155800","executionCost":"infinite","totalCost":"infinite"},"external":{"dao()":"infinite","pluginType()":"227","protocolVersion()":"infinite","setTarget(address)":"26099","state1()":"2317","supportsInterface(bytes4)":"482","target()":"2403"}},"methodIdentifiers":{"dao()":"4162169f","pluginType()":"41de6830","protocolVersion()":"2ae9c600","setTarget(address)":"776d1a01","state1()":"6accab8c","supportsInterface(bytes4)":"01ffc9a7","target()":"d4b83992"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IDAO\",\"name\":\"_dao\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousTarget\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newTarget\",\"type\":\"address\"}],\"name\":\"TargetSet\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"dao\",\"outputs\":[{\"internalType\":\"contract IDAO\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pluginType\",\"outputs\":[{\"internalType\":\"enum IPlugin.PluginType\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"protocolVersion\",\"outputs\":[{\"internalType\":\"uint8[3]\",\"name\":\"\",\"type\":\"uint8[3]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_target\",\"type\":\"address\"}],\"name\":\"setTarget\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"state1\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"target\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"DO NOT USE IN PRODUCTION!\",\"kind\":\"dev\",\"methods\":{\"dao()\":{\"returns\":{\"_0\":\"The DAO contract.\"}},\"protocolVersion()\":{\"details\":\"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\",\"returns\":{\"_0\":\"Returns the semantic Aragon OSx protocol version number.\"}},\"setTarget(address)\":{\"details\":\"Sets the target to a new target (`newTarget`).\"},\"supportsInterface(bytes4)\":{\"params\":{\"_interfaceId\":\"The ID of the interface.\"},\"returns\":{\"_0\":\"Returns `true` if the interface is supported.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"dao()\":{\"notice\":\"Returns the DAO contract.\"},\"pluginType()\":{\"notice\":\"Returns the plugin's type\"},\"protocolVersion()\":{\"notice\":\"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\"},\"setTarget(address)\":{\"notice\":\"Can only be called by the current owner. TODO\"},\"supportsInterface(bytes4)\":{\"notice\":\"Checks if this or the parent contract supports an interface by its ID.\"}},\"notice\":\"A mock plugin to be deployed via the `new` keyword. v1.1 (Release 1, Build 1)\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/mocks/plugin/PluginMock.sol\":\"PluginMockBuild1\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n function _contextSuffixLength() internal view virtual returns (uint256) {\\n return 0;\\n }\\n}\\n\",\"keccak256\":\"0xa92e4fa126feb6907daa0513ddd816b2eb91f30a808de54f63c17d0e162c3439\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165 is IERC165 {\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165).interfaceId;\\n }\\n}\\n\",\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"src/dao/IDAO.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IDAO\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for DAOs within the Aragon App DAO framework.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IDAO {\\n /// @notice The action struct to be consumed by the DAO's `execute` function resulting in an external call.\\n /// @param to The address to call.\\n /// @param value The native token value to be sent with the call.\\n /// @param data The bytes-encoded function selector and calldata for the call.\\n struct Action {\\n address to;\\n uint256 value;\\n bytes data;\\n }\\n\\n /// @notice Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\\n /// @param _where The address of the contract.\\n /// @param _who The address of a EOA or contract to give the permissions.\\n /// @param _permissionId The permission identifier.\\n /// @param _data The optional data passed to the `PermissionCondition` registered.\\n /// @return Returns true if the address has permission, false if not.\\n function hasPermission(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes memory _data\\n ) external view returns (bool);\\n\\n /// @notice Updates the DAO metadata (e.g., an IPFS hash).\\n /// @param _metadata The IPFS hash of the new metadata object.\\n function setMetadata(bytes calldata _metadata) external;\\n\\n /// @notice Emitted when the DAO metadata is updated.\\n /// @param metadata The IPFS hash of the new metadata object.\\n event MetadataSet(bytes metadata);\\n\\n /// @notice Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted.\\n /// @param _callId The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce.\\n /// @param _actions The array of actions.\\n /// @param _allowFailureMap A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @return The array of results obtained from the executed actions in `bytes`.\\n /// @return The resulting failure map containing the actions have actually failed.\\n function execute(\\n bytes32 _callId,\\n Action[] memory _actions,\\n uint256 _allowFailureMap\\n ) external returns (bytes[] memory, uint256);\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param actor The address of the caller.\\n /// @param callId The ID of the call.\\n /// @param actions The array of actions executed.\\n /// @param allowFailureMap The allow failure map encoding which actions are allowed to fail.\\n /// @param failureMap The failure map encoding which actions have failed.\\n /// @param execResults The array with the results of the executed actions.\\n /// @dev The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce.\\n event Executed(\\n address indexed actor,\\n bytes32 callId,\\n Action[] actions,\\n uint256 allowFailureMap,\\n uint256 failureMap,\\n bytes[] execResults\\n );\\n\\n /// @notice Emitted when a standard callback is registered.\\n /// @param interfaceId The ID of the interface.\\n /// @param callbackSelector The selector of the callback function.\\n /// @param magicNumber The magic number to be registered for the callback function selector.\\n event StandardCallbackRegistered(\\n bytes4 interfaceId,\\n bytes4 callbackSelector,\\n bytes4 magicNumber\\n );\\n\\n /// @notice Deposits (native) tokens to the DAO contract with a reference string.\\n /// @param _token The address of the token or address(0) in case of the native token.\\n /// @param _amount The amount of tokens to deposit.\\n /// @param _reference The reference describing the deposit reason.\\n function deposit(address _token, uint256 _amount, string calldata _reference) external payable;\\n\\n /// @notice Emitted when a token deposit has been made to the DAO.\\n /// @param sender The address of the sender.\\n /// @param token The address of the deposited token.\\n /// @param amount The amount of tokens deposited.\\n /// @param _reference The reference describing the deposit reason.\\n event Deposited(\\n address indexed sender,\\n address indexed token,\\n uint256 amount,\\n string _reference\\n );\\n\\n /// @notice Emitted when a native token deposit has been made to the DAO.\\n /// @dev This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).\\n /// @param sender The address of the sender.\\n /// @param amount The amount of native tokens deposited.\\n event NativeTokenDeposited(address sender, uint256 amount);\\n\\n /// @notice Setter for the trusted forwarder verifying the meta transaction.\\n /// @param _trustedForwarder The trusted forwarder address.\\n function setTrustedForwarder(address _trustedForwarder) external;\\n\\n /// @notice Getter for the trusted forwarder verifying the meta transaction.\\n /// @return The trusted forwarder address.\\n function getTrustedForwarder() external view returns (address);\\n\\n /// @notice Emitted when a new TrustedForwarder is set on the DAO.\\n /// @param forwarder the new forwarder address.\\n event TrustedForwarderSet(address forwarder);\\n\\n /// @notice Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\\n /// @param _hash The hash of the data to be signed.\\n /// @param _signature The signature byte array associated with `_hash`.\\n /// @return Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not.\\n function isValidSignature(bytes32 _hash, bytes memory _signature) external returns (bytes4);\\n\\n /// @notice Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\\n /// @param _interfaceId The ID of the interface.\\n /// @param _callbackSelector The selector of the callback function.\\n /// @param _magicNumber The magic number to be registered for the function signature.\\n function registerStandardCallback(\\n bytes4 _interfaceId,\\n bytes4 _callbackSelector,\\n bytes4 _magicNumber\\n ) external;\\n\\n /// @notice Removed function being left here to not corrupt the IDAO interface ID. Any call will revert.\\n /// @dev Introduced in v1.0.0. Removed in v1.4.0.\\n function setSignatureValidator(address) external;\\n}\\n\",\"keccak256\":\"0xb7f615523c26de042edce98731c658f44a1edb2464387ac1b642c4c69f57128e\",\"license\":\"AGPL-3.0-or-later\"},\"src/mocks/plugin/PluginMock.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {Plugin} from \\\"../../plugin/Plugin.sol\\\";\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice A mock plugin to be deployed via the `new` keyword.\\n/// v1.1 (Release 1, Build 1)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginMockBuild1 is Plugin {\\n uint256 public state1;\\n\\n constructor(IDAO _dao) Plugin(_dao) {\\n state1 = 1;\\n }\\n}\\n\",\"keccak256\":\"0x9aca72aa9f93de6de6cc6a093aaaceb62649bea46fba7f07a01a067c145c35bd\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/DaoAuthorizable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {Context} from \\\"@openzeppelin/contracts/utils/Context.sol\\\";\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\nimport {_auth} from \\\"./auth.sol\\\";\\n\\n/// @title DaoAuthorizable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract contract providing a meta-transaction compatible modifier for non-upgradeable contracts instantiated via the `new` keyword to authorize function calls through an associated DAO.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract DaoAuthorizable is Context {\\n /// @notice The associated DAO managing the permissions of inheriting contracts.\\n IDAO private immutable DAO;\\n\\n /// @notice Constructs the contract by setting the associated DAO.\\n /// @param _dao The associated DAO address.\\n constructor(IDAO _dao) {\\n DAO = _dao;\\n }\\n\\n /// @notice Returns the DAO contract.\\n /// @return The DAO contract.\\n function dao() public view returns (IDAO) {\\n return DAO;\\n }\\n\\n /// @notice A modifier to make functions on inheriting contracts authorized. Permissions to call the function are checked through the associated DAO's permission manager.\\n /// @param _permissionId The permission identifier required to call the method this modifier is applied to.\\n modifier auth(bytes32 _permissionId) {\\n _auth(DAO, address(this), _msgSender(), _permissionId, _msgData());\\n _;\\n }\\n}\\n\",\"keccak256\":\"0x3d0be91b4f5854ed2d2c51b53fe7ffba58cc968e972015cf60eb3ea100543e64\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/auth.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice Thrown if a call is unauthorized in the associated DAO.\\n/// @param dao The associated DAO.\\n/// @param where The context in which the authorization reverted.\\n/// @param who The address (EOA or contract) missing the permission.\\n/// @param permissionId The permission identifier.\\nerror DaoUnauthorized(address dao, address where, address who, bytes32 permissionId);\\n\\n/// @notice A free function checking if a caller is granted permissions on a target contract via a permission identifier that redirects the approval to a `PermissionCondition` if this was specified in the setup.\\n/// @param _where The address of the target contract for which `who` receives permission.\\n/// @param _who The address (EOA or contract) owning the permission.\\n/// @param _permissionId The permission identifier.\\n/// @param _data The optional data passed to the `PermissionCondition` registered.\\n/// @custom:security-contact sirt@aragon.org\\nfunction _auth(\\n IDAO _dao,\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes calldata _data\\n) view {\\n if (!_dao.hasPermission(_where, _who, _permissionId, _data))\\n revert DaoUnauthorized({\\n dao: address(_dao),\\n where: _where,\\n who: _who,\\n permissionId: _permissionId\\n });\\n}\\n\",\"keccak256\":\"0x878764b4f87fe0651fb3798fb9cb87c952f8c6caf6ae79c7f09de84df6c00298\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/IPlugin.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IPlugin\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the traits of a plugin.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IPlugin {\\n enum PluginType {\\n UUPS,\\n Cloneable,\\n Constructable\\n }\\n\\n /// @notice Returns the plugin's type\\n function pluginType() external view returns (PluginType);\\n}\\n\",\"keccak256\":\"0xc57cd0d10b6380ab7f54c713a509e88fd8f4ad9288313a0e8e12b8887817ddfe\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/Plugin.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ERC165} from \\\"@openzeppelin/contracts/utils/introspection/ERC165.sol\\\";\\n\\nimport {IProtocolVersion} from \\\"../utils/versioning/IProtocolVersion.sol\\\";\\nimport {ProtocolVersion} from \\\"../utils/versioning/ProtocolVersion.sol\\\";\\nimport {DaoAuthorizable} from \\\"../permission/auth/DaoAuthorizable.sol\\\";\\nimport {IDAO} from \\\"../dao/IDAO.sol\\\";\\nimport {IPlugin} from \\\"./IPlugin.sol\\\";\\n\\n/// @title Plugin\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract, non-upgradeable contract to inherit from when creating a plugin being deployed via the `new` keyword.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract Plugin is IPlugin, ERC165, DaoAuthorizable, ProtocolVersion {\\n address public target;\\n\\n /// @dev Emitted each time the Target is set.\\n event TargetSet(address indexed previousTarget, address indexed newTarget);\\n\\n /// @notice Constructs the plugin by storing the associated DAO.\\n /// @param _dao The DAO contract.\\n constructor(IDAO _dao) DaoAuthorizable(_dao) {}\\n\\n /// @inheritdoc IPlugin\\n function pluginType() public pure override returns (PluginType) {\\n return PluginType.Constructable;\\n }\\n\\n /// @dev Sets the target to a new target (`newTarget`).\\n /// @notice Can only be called by the current owner. TODO\\n function setTarget(address _target) public {\\n address previousTarget = target;\\n target = _target;\\n emit TargetSet(previousTarget, _target);\\n }\\n\\n /// @notice Checks if this or the parent contract supports an interface by its ID.\\n /// @param _interfaceId The ID of the interface.\\n /// @return Returns `true` if the interface is supported.\\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\\n return\\n _interfaceId == type(IPlugin).interfaceId ||\\n _interfaceId == type(IProtocolVersion).interfaceId ||\\n super.supportsInterface(_interfaceId);\\n }\\n\\n /// @notice Forwards the actions to the currently set `target` for the execution.\\n /// @param _callId Identifier for this execution.\\n /// @param _actions actions that will be eventually called.\\n /// @param _allowFailureMap Bitmap-encoded number. TODO:\\n /// @return execResults address of the implementation contract.\\n /// @return failureMap address of the implementation contract.\\n function _execute(\\n bytes32 _callId,\\n IDAO.Action[] calldata _actions,\\n uint256 _allowFailureMap\\n ) internal virtual returns (bytes[] memory execResults, uint256 failureMap) {\\n (execResults, failureMap) = IDAO(target).execute(_callId, _actions, _allowFailureMap);\\n }\\n\\n /// @notice Forwards the actions to the `target` for the execution.\\n /// @param _target Forwards the actions to the specific target.\\n /// @param _callId Identifier for this execution.\\n /// @param _actions actions that will be eventually called.\\n /// @param _allowFailureMap Bitmap-encoded number. TODO:\\n /// @return execResults address of the implementation contract.\\n /// @return failureMap address of the implementation contract.\\n function _execute(\\n address _target,\\n bytes32 _callId,\\n IDAO.Action[] calldata _actions,\\n uint256 _allowFailureMap\\n ) internal virtual returns (bytes[] memory execResults, uint256 failureMap) {\\n (execResults, failureMap) = IDAO(_target).execute(_callId, _actions, _allowFailureMap);\\n }\\n}\\n\",\"keccak256\":\"0xaba248693127801c242cb55bdb8625c3f4138009c3e33fa5478c2d09efb309c3\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/IProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IProtocolVersion\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the semantic Aragon OSx protocol version number.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IProtocolVersion {\\n /// @notice Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\\n /// @return _version Returns the semantic Aragon OSx protocol version number.\\n /// @dev This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\\n function protocolVersion() external view returns (uint8[3] memory _version);\\n}\\n\",\"keccak256\":\"0x00a4da654d21dc1bdadbdc8bd54bb86c378c56f85e461ccc31303628ea621361\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/ProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IProtocolVersion} from \\\"./IProtocolVersion.sol\\\";\\n\\n/// @title ProtocolVersion\\n/// @author Aragon X - 2023\\n/// @notice An abstract, stateless, non-upgradeable contract providing the current Aragon OSx protocol version number.\\n/// @dev Do not add any new variables to this contract that would shift down storage in the inheritance chain.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract ProtocolVersion is IProtocolVersion {\\n // IMPORTANT: Do not add any storage variable, see the above notice.\\n\\n /// @inheritdoc IProtocolVersion\\n function protocolVersion() public pure returns (uint8[3] memory) {\\n return [1, 4, 0];\\n }\\n}\\n\",\"keccak256\":\"0x3975c937be935f687c6b6b8f379071232681e98cf04b175d72781b819ea52bdb\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[{"astId":4027,"contract":"src/mocks/plugin/PluginMock.sol:PluginMockBuild1","label":"target","offset":0,"slot":"0","type":"t_address"},{"astId":2856,"contract":"src/mocks/plugin/PluginMock.sol:PluginMockBuild1","label":"state1","offset":0,"slot":"1","type":"t_uint256"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"userdoc":{"kind":"user","methods":{"dao()":{"notice":"Returns the DAO contract."},"pluginType()":{"notice":"Returns the plugin's type"},"protocolVersion()":{"notice":"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with."},"setTarget(address)":{"notice":"Can only be called by the current owner. TODO"},"supportsInterface(bytes4)":{"notice":"Checks if this or the parent contract supports an interface by its ID."}},"notice":"A mock plugin to be deployed via the `new` keyword. v1.1 (Release 1, Build 1)","version":1}}},"src/mocks/plugin/PluginSetupMock.sol":{"PluginSetupMockBuild1":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"ConflictingValues","type":"error"},{"inputs":[],"name":"NonUpgradeablePlugin","type":"error"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_dao","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"prepareInstallation","outputs":[{"internalType":"address","name":"plugin","type":"address"},{"components":[{"internalType":"address[]","name":"helpers","type":"address[]"},{"components":[{"internalType":"enum PermissionLib.Operation","name":"operation","type":"uint8"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"condition","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"internalType":"struct PermissionLib.MultiTargetPermission[]","name":"permissions","type":"tuple[]"}],"internalType":"struct IPluginSetup.PreparedSetupData","name":"preparedSetupData","type":"tuple"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_dao","type":"address"},{"components":[{"internalType":"address","name":"plugin","type":"address"},{"internalType":"address[]","name":"currentHelpers","type":"address[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct IPluginSetup.SetupPayload","name":"_payload","type":"tuple"}],"name":"prepareUninstallation","outputs":[{"components":[{"internalType":"enum PermissionLib.Operation","name":"operation","type":"uint8"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"condition","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"internalType":"struct PermissionLib.MultiTargetPermission[]","name":"permissions","type":"tuple[]"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_dao","type":"address"},{"internalType":"uint16","name":"_fromBuild","type":"uint16"},{"components":[{"internalType":"address","name":"plugin","type":"address"},{"internalType":"address[]","name":"currentHelpers","type":"address[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct IPluginSetup.SetupPayload","name":"_payload","type":"tuple"}],"name":"prepareUpdate","outputs":[{"internalType":"bytes","name":"","type":"bytes"},{"components":[{"internalType":"address[]","name":"helpers","type":"address[]"},{"components":[{"internalType":"enum PermissionLib.Operation","name":"operation","type":"uint8"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"condition","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"internalType":"struct PermissionLib.MultiTargetPermission[]","name":"permissions","type":"tuple[]"}],"internalType":"struct IPluginSetup.PreparedSetupData","name":"","type":"tuple"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"protocolVersion","outputs":[{"internalType":"uint8[3]","name":"","type":"uint8[3]"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"DO NOT USE IN PRODUCTION!","kind":"dev","methods":{"implementation()":{"details":"The implementation can be instantiated via the `new` keyword, cloned via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)), or proxied via the UUPS proxy pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).","returns":{"_0":"The address of the plugin implementation contract."}},"prepareInstallation(address,bytes)":{"params":{"_dao":"The address of the installing DAO.","_data":"The bytes-encoded data containing the input parameters for the installation as specified in the plugin's build metadata JSON file."},"returns":{"plugin":"The address of the `Plugin` contract being prepared for installation.","preparedSetupData":"The deployed plugin's relevant data which consists of helpers and permissions."}},"prepareUninstallation(address,(address,address[],bytes))":{"params":{"_dao":"The address of the uninstalling DAO.","_payload":"The relevant data necessary for the `prepareUninstallation`. See above."},"returns":{"permissions":"The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the uninstalling DAO."}},"prepareUpdate(address,uint16,(address,address[],bytes))":{"details":"Since the underlying plugin is non-upgradeable, this non-virtual function must always revert.","params":{"_dao":"The address of the updating DAO.","_fromBuild":"The build number of the plugin to update from.","_payload":"The relevant data necessary for the `prepareUpdate`. See above."},"returns":{"_0":"The initialization data to be passed to upgradeable contracts when the update is applied in the `PluginSetupProcessor`.","_1":"The deployed plugin's relevant data which consists of helpers and permissions."}},"protocolVersion()":{"details":"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.","returns":{"_0":"Returns the semantic Aragon OSx protocol version number."}},"supportsInterface(bytes4)":{"params":{"_interfaceId":"The ID of the interface."},"returns":{"_0":"Returns `true` if the interface is supported."}}},"version":1},"evm":{"bytecode":{"functionDebugData":{"@_2908":{"entryPoint":null,"id":2908,"parameterSlots":0,"returnSlots":0},"@_4893":{"entryPoint":null,"id":4893,"parameterSlots":1,"returnSlots":0},"abi_encode_tuple_t_contract$_IDAO_$2538__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:232:50","statements":[{"nodeType":"YulBlock","src":"6:3:50","statements":[]},{"body":{"nodeType":"YulBlock","src":"128:102:50","statements":[{"nodeType":"YulAssignment","src":"138:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"150:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"161:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"146:3:50"},"nodeType":"YulFunctionCall","src":"146:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"138:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"180:9:50"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"195:6:50"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"211:3:50","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"216:1:50","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"207:3:50"},"nodeType":"YulFunctionCall","src":"207:11:50"},{"kind":"number","nodeType":"YulLiteral","src":"220:1:50","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"203:3:50"},"nodeType":"YulFunctionCall","src":"203:19:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"191:3:50"},"nodeType":"YulFunctionCall","src":"191:32:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"173:6:50"},"nodeType":"YulFunctionCall","src":"173:51:50"},"nodeType":"YulExpressionStatement","src":"173:51:50"}]},"name":"abi_encode_tuple_t_contract$_IDAO_$2538__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"97:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"108:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"119:4:50","type":""}],"src":"14:216:50"}]},"contents":"{\n { }\n function abi_encode_tuple_t_contract$_IDAO_$2538__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n }\n}","id":50,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60a060405234801561001057600080fd5b50600060405161001f9061005d565b6001600160a01b039091168152602001604051809103906000f08015801561004b573d6000803e3d6000fd5b506001600160a01b031660805261006a565b61039980610da483390190565b608051610d20610084600039600060c10152610d206000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c80639cb0a124116100505780639cb0a124146100eb578063a8a9c29e1461010b578063f10832f11461012c57600080fd5b806301ffc9a7146100775780632ae9c6001461009f5780635c60da1b146100b4575b600080fd5b61008a610085366004610501565b61014d565b60405190151581526020015b60405180910390f35b6100a761019e565b604051610096919061052b565b6040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152602001610096565b6100fe6100f936600461058d565b6101c8565b6040516100969190610657565b61011e6101193660046106a0565b6101de565b60405161009692919061079a565b61013f61013a366004610815565b610216565b6040516100969291906108d7565b60006001600160e01b0319821663099718b560e41b148061017d57506001600160e01b03198216621574e360e91b145b8061019857506301ffc9a760e01b6001600160e01b03198316145b92915050565b6101a66104d6565b5060408051606081018252600181526004602082015260009181019190915290565b60606101d76000600180610298565b9392505050565b60606101fd604051806040016040528060608152602001606081525090565b60405163a112810160e01b815260040160405180910390fd5b6000610235604051806040016040528060608152602001606081525090565b83604051610242906104f4565b6001600160a01b039091168152602001604051809103906000f08015801561026e573d6000803e3d6000fd5b50915061027b600161041d565b815261028a6000600181610298565b602082015290939092509050565b6060826001600160a01b0316846001600160a01b031611156102cd57604051633a4013cd60e21b815260040160405180910390fd5b6102d78484610917565b6001600160a01b031667ffffffffffffffff8111156102f8576102f86107ff565b60405190808252806020026020018201604052801561035157816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282526000199092019101816103165790505b509050835b836001600160a01b0316816001600160a01b03161015610415576040518060a0016040528084600281111561038d5761038d6105db565b81526001600160a01b038316602082018190526040820152600060608201527fa280eec51ab8e1bc4b6b0c1b7f1bde785761b787a49db404e3e9338ed9b016ef608090910152826103de8784610917565b6001600160a01b0316815181106103f7576103f761093e565b6020026020010181905250808061040d90610954565b915050610356565b509392505050565b6060816001600160a01b031667ffffffffffffffff811115610441576104416107ff565b60405190808252806020026020018201604052801561046a578160200160208202803683370190505b50905060005b826001600160a01b0316816001600160a01b031610156104d0578082826001600160a01b0316815181106104a6576104a661093e565b6001600160a01b0390921660209283029190910190910152806104c881610954565b915050610470565b50919050565b60405180606001604052806003906020820280368337509192915050565b6103998061097b83390190565b60006020828403121561051357600080fd5b81356001600160e01b0319811681146101d757600080fd5b60608101818360005b600381101561055657815160ff16835260209283019290910190600101610534565b50505092915050565b80356001600160a01b038116811461057657600080fd5b919050565b6000606082840312156104d057600080fd5b600080604083850312156105a057600080fd5b6105a98361055f565b9150602083013567ffffffffffffffff8111156105c557600080fd5b6105d18582860161057b565b9150509250929050565b634e487b7160e01b600052602160045260246000fd5b600081516003811061061357634e487b7160e01b600052602160045260246000fd5b8352506020818101516001600160a01b0390811691840191909152604080830151821690840152606080830151909116908301526080908101519082015260a00190565b6020808252825182820181905260009190848201906040850190845b81811015610694576106868385516105f1565b938501939250600101610673565b50909695505050505050565b6000806000606084860312156106b557600080fd5b6106be8461055f565b9250602084013561ffff811681146106d557600080fd5b9150604084013567ffffffffffffffff8111156106f157600080fd5b6106fd8682870161057b565b9150509250925092565b805160408084528151908401819052600091602091908201906060860190845b8181101561074c5783516001600160a01b031683529284019291840191600101610727565b50508483015186820387850152805180835290840192506000918401905b8083101561078f5761077d8285516105f1565b9150848401935060018301925061076a565b509695505050505050565b604081526000835180604084015260005b818110156107c857602081870181015160608684010152016107ab565b50600060608285010152601f19601f8201168301905060608382030160208401526107f66060820185610707565b95945050505050565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561082857600080fd5b6108318361055f565b9150602083013567ffffffffffffffff8082111561084e57600080fd5b818501915085601f83011261086257600080fd5b813581811115610874576108746107ff565b604051601f8201601f19908116603f0116810190838211818310171561089c5761089c6107ff565b816040528281528860208487010111156108b557600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6001600160a01b03831681526040602082015260006108f96040830184610707565b949350505050565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0382811682821603908082111561093757610937610901565b5092915050565b634e487b7160e01b600052603260045260246000fd5b60006001600160a01b0380831681810361097057610970610901565b600101939250505056fe60a060405234801561001057600080fd5b5060405161039938038061039983398101604081905261002f91610044565b6001600160a01b031660805260018055610074565b60006020828403121561005657600080fd5b81516001600160a01b038116811461006d57600080fd5b9392505050565b60805161030b61008e600039600060c1015261030b6000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806341de68301161005b57806341de6830146100f95780636accab8c14610108578063776d1a011461011f578063d4b839921461013457600080fd5b806301ffc9a7146100825780632ae9c600146100aa5780634162169f146100bf575b600080fd5b610095610090366004610248565b610147565b60405190151581526020015b60405180910390f35b6100b2610198565b6040516100a19190610279565b7f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020016100a1565b60026040516100a191906102ad565b61011160015481565b6040519081526020016100a1565b61013261012d3660046102d5565b6101c2565b005b6000546100e1906001600160a01b031681565b60006001600160e01b0319821663041de68360e41b148061017757506001600160e01b03198216621574e360e91b145b8061019257506301ffc9a760e01b6001600160e01b03198316145b92915050565b6101a061022a565b5060408051606081018252600181526004602082015260009181019190915290565b600080546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d69190a35050565b60405180606001604052806003906020820280368337509192915050565b60006020828403121561025a57600080fd5b81356001600160e01b03198116811461027257600080fd5b9392505050565b60608101818360005b60038110156102a457815160ff16835260209283019290910190600101610282565b50505092915050565b60208101600383106102cf57634e487b7160e01b600052602160045260246000fd5b91905290565b6000602082840312156102e757600080fd5b81356001600160a01b038116811461027257600080fdfea164736f6c6343000811000aa164736f6c6343000811000a60a060405234801561001057600080fd5b5060405161039938038061039983398101604081905261002f91610044565b6001600160a01b031660805260018055610074565b60006020828403121561005657600080fd5b81516001600160a01b038116811461006d57600080fd5b9392505050565b60805161030b61008e600039600060c1015261030b6000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806341de68301161005b57806341de6830146100f95780636accab8c14610108578063776d1a011461011f578063d4b839921461013457600080fd5b806301ffc9a7146100825780632ae9c600146100aa5780634162169f146100bf575b600080fd5b610095610090366004610248565b610147565b60405190151581526020015b60405180910390f35b6100b2610198565b6040516100a19190610279565b7f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020016100a1565b60026040516100a191906102ad565b61011160015481565b6040519081526020016100a1565b61013261012d3660046102d5565b6101c2565b005b6000546100e1906001600160a01b031681565b60006001600160e01b0319821663041de68360e41b148061017757506001600160e01b03198216621574e360e91b145b8061019257506301ffc9a760e01b6001600160e01b03198316145b92915050565b6101a061022a565b5060408051606081018252600181526004602082015260009181019190915290565b600080546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d69190a35050565b60405180606001604052806003906020820280368337509192915050565b60006020828403121561025a57600080fd5b81356001600160e01b03198116811461027257600080fd5b9392505050565b60608101818360005b60038110156102a457815160ff16835260209283019290910190600101610282565b50505092915050565b60208101600383106102cf57634e487b7160e01b600052602160045260246000fd5b91905290565b6000602082840312156102e757600080fd5b81356001600160a01b038116811461027257600080fdfea164736f6c6343000811000a","opcodes":"PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 PUSH1 0x40 MLOAD PUSH2 0x1F SWAP1 PUSH2 0x5D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH2 0x4B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x80 MSTORE PUSH2 0x6A JUMP JUMPDEST PUSH2 0x399 DUP1 PUSH2 0xDA4 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH2 0xD20 PUSH2 0x84 PUSH1 0x0 CODECOPY PUSH1 0x0 PUSH1 0xC1 ADD MSTORE PUSH2 0xD20 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x72 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9CB0A124 GT PUSH2 0x50 JUMPI DUP1 PUSH4 0x9CB0A124 EQ PUSH2 0xEB JUMPI DUP1 PUSH4 0xA8A9C29E EQ PUSH2 0x10B JUMPI DUP1 PUSH4 0xF10832F1 EQ PUSH2 0x12C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x77 JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0x9F JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0xB4 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8A PUSH2 0x85 CALLDATASIZE PUSH1 0x4 PUSH2 0x501 JUMP JUMPDEST PUSH2 0x14D JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xA7 PUSH2 0x19E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x96 SWAP2 SWAP1 PUSH2 0x52B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x96 JUMP JUMPDEST PUSH2 0xFE PUSH2 0xF9 CALLDATASIZE PUSH1 0x4 PUSH2 0x58D JUMP JUMPDEST PUSH2 0x1C8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x96 SWAP2 SWAP1 PUSH2 0x657 JUMP JUMPDEST PUSH2 0x11E PUSH2 0x119 CALLDATASIZE PUSH1 0x4 PUSH2 0x6A0 JUMP JUMPDEST PUSH2 0x1DE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x96 SWAP3 SWAP2 SWAP1 PUSH2 0x79A JUMP JUMPDEST PUSH2 0x13F PUSH2 0x13A CALLDATASIZE PUSH1 0x4 PUSH2 0x815 JUMP JUMPDEST PUSH2 0x216 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x96 SWAP3 SWAP2 SWAP1 PUSH2 0x8D7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x99718B5 PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x17D JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x198 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1A6 PUSH2 0x4D6 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1D7 PUSH1 0x0 PUSH1 0x1 DUP1 PUSH2 0x298 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1FD PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xA1128101 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x235 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST DUP4 PUSH1 0x40 MLOAD PUSH2 0x242 SWAP1 PUSH2 0x4F4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH2 0x26E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP SWAP2 POP PUSH2 0x27B PUSH1 0x1 PUSH2 0x41D JUMP JUMPDEST DUP2 MSTORE PUSH2 0x28A PUSH1 0x0 PUSH1 0x1 DUP2 PUSH2 0x298 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE SWAP1 SWAP4 SWAP1 SWAP3 POP SWAP1 POP JUMP JUMPDEST PUSH1 0x60 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH2 0x2CD JUMPI PUSH1 0x40 MLOAD PUSH4 0x3A4013CD PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2D7 DUP5 DUP5 PUSH2 0x917 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2F8 JUMPI PUSH2 0x2F8 PUSH2 0x7FF JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x351 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD DUP3 SWAP1 MSTORE SWAP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 DUP3 ADD MSTORE DUP3 MSTORE PUSH1 0x0 NOT SWAP1 SWAP3 ADD SWAP2 ADD DUP2 PUSH2 0x316 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP DUP4 JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT ISZERO PUSH2 0x415 JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 DUP5 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x38D JUMPI PUSH2 0x38D PUSH2 0x5DB JUMP JUMPDEST DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x60 DUP3 ADD MSTORE PUSH32 0xA280EEC51AB8E1BC4B6B0C1B7F1BDE785761B787A49DB404E3E9338ED9B016EF PUSH1 0x80 SWAP1 SWAP2 ADD MSTORE DUP3 PUSH2 0x3DE DUP8 DUP5 PUSH2 0x917 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MLOAD DUP2 LT PUSH2 0x3F7 JUMPI PUSH2 0x3F7 PUSH2 0x93E JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP DUP1 DUP1 PUSH2 0x40D SWAP1 PUSH2 0x954 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x356 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x441 JUMPI PUSH2 0x441 PUSH2 0x7FF JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x46A JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT ISZERO PUSH2 0x4D0 JUMPI DUP1 DUP3 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MLOAD DUP2 LT PUSH2 0x4A6 JUMPI PUSH2 0x4A6 PUSH2 0x93E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE DUP1 PUSH2 0x4C8 DUP2 PUSH2 0x954 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x470 JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x399 DUP1 PUSH2 0x97B DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x513 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x1D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0x556 JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x534 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x576 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x5A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5A9 DUP4 PUSH2 0x55F JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x5C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5D1 DUP6 DUP3 DUP7 ADD PUSH2 0x57B JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP2 MLOAD PUSH1 0x3 DUP2 LT PUSH2 0x613 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP4 MSTORE POP PUSH1 0x20 DUP2 DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP1 DUP4 ADD MLOAD DUP3 AND SWAP1 DUP5 ADD MSTORE PUSH1 0x60 DUP1 DUP4 ADD MLOAD SWAP1 SWAP2 AND SWAP1 DUP4 ADD MSTORE PUSH1 0x80 SWAP1 DUP2 ADD MLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x694 JUMPI PUSH2 0x686 DUP4 DUP6 MLOAD PUSH2 0x5F1 JUMP JUMPDEST SWAP4 DUP6 ADD SWAP4 SWAP3 POP PUSH1 0x1 ADD PUSH2 0x673 JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x6B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x6BE DUP5 PUSH2 0x55F JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH2 0x6D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x6F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x6FD DUP7 DUP3 DUP8 ADD PUSH2 0x57B JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x40 DUP1 DUP5 MSTORE DUP2 MLOAD SWAP1 DUP5 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x20 SWAP2 SWAP1 DUP3 ADD SWAP1 PUSH1 0x60 DUP7 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x74C JUMPI DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x727 JUMP JUMPDEST POP POP DUP5 DUP4 ADD MLOAD DUP7 DUP3 SUB DUP8 DUP6 ADD MSTORE DUP1 MLOAD DUP1 DUP4 MSTORE SWAP1 DUP5 ADD SWAP3 POP PUSH1 0x0 SWAP2 DUP5 ADD SWAP1 JUMPDEST DUP1 DUP4 LT ISZERO PUSH2 0x78F JUMPI PUSH2 0x77D DUP3 DUP6 MLOAD PUSH2 0x5F1 JUMP JUMPDEST SWAP2 POP DUP5 DUP5 ADD SWAP4 POP PUSH1 0x1 DUP4 ADD SWAP3 POP PUSH2 0x76A JUMP JUMPDEST POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 DUP4 MLOAD DUP1 PUSH1 0x40 DUP5 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x7C8 JUMPI PUSH1 0x20 DUP2 DUP8 ADD DUP2 ADD MLOAD PUSH1 0x60 DUP7 DUP5 ADD ADD MSTORE ADD PUSH2 0x7AB JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x60 DUP3 DUP6 ADD ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP4 ADD SWAP1 POP PUSH1 0x60 DUP4 DUP3 SUB ADD PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x7F6 PUSH1 0x60 DUP3 ADD DUP6 PUSH2 0x707 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x828 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x831 DUP4 PUSH2 0x55F JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x84E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x862 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x874 JUMPI PUSH2 0x874 PUSH2 0x7FF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x89C JUMPI PUSH2 0x89C PUSH2 0x7FF JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x8B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0x8F9 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x707 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND DUP3 DUP3 AND SUB SWAP1 DUP1 DUP3 GT ISZERO PUSH2 0x937 JUMPI PUSH2 0x937 PUSH2 0x901 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND DUP2 DUP2 SUB PUSH2 0x970 JUMPI PUSH2 0x970 PUSH2 0x901 JUMP JUMPDEST PUSH1 0x1 ADD SWAP4 SWAP3 POP POP POP JUMP INVALID PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x399 CODESIZE SUB DUP1 PUSH2 0x399 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0x44 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x80 MSTORE PUSH1 0x1 DUP1 SSTORE PUSH2 0x74 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x56 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x6D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH2 0x30B PUSH2 0x8E PUSH1 0x0 CODECOPY PUSH1 0x0 PUSH1 0xC1 ADD MSTORE PUSH2 0x30B PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x7D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x41DE6830 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x41DE6830 EQ PUSH2 0xF9 JUMPI DUP1 PUSH4 0x6ACCAB8C EQ PUSH2 0x108 JUMPI DUP1 PUSH4 0x776D1A01 EQ PUSH2 0x11F JUMPI DUP1 PUSH4 0xD4B83992 EQ PUSH2 0x134 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x82 JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0xAA JUMPI DUP1 PUSH4 0x4162169F EQ PUSH2 0xBF JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x95 PUSH2 0x90 CALLDATASIZE PUSH1 0x4 PUSH2 0x248 JUMP JUMPDEST PUSH2 0x147 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xB2 PUSH2 0x198 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA1 SWAP2 SWAP1 PUSH2 0x279 JUMP JUMPDEST PUSH32 0x0 JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xA1 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x40 MLOAD PUSH2 0xA1 SWAP2 SWAP1 PUSH2 0x2AD JUMP JUMPDEST PUSH2 0x111 PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xA1 JUMP JUMPDEST PUSH2 0x132 PUSH2 0x12D CALLDATASIZE PUSH1 0x4 PUSH2 0x2D5 JUMP JUMPDEST PUSH2 0x1C2 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0xE1 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x41DE683 PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x177 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x192 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1A0 PUSH2 0x22A JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 DUP4 AND DUP2 OR DUP5 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 DUP4 SWAP2 PUSH32 0x90CC2F570A6EB594B1580EA3E41247D2D73A55281889E86BD4EC2FC29C7E62D6 SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x25A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x272 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0x2A4 JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x282 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH1 0x3 DUP4 LT PUSH2 0x2CF JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 SWAP1 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x272 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x399 CODESIZE SUB DUP1 PUSH2 0x399 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0x44 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x80 MSTORE PUSH1 0x1 DUP1 SSTORE PUSH2 0x74 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x56 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x6D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH2 0x30B PUSH2 0x8E PUSH1 0x0 CODECOPY PUSH1 0x0 PUSH1 0xC1 ADD MSTORE PUSH2 0x30B PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x7D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x41DE6830 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x41DE6830 EQ PUSH2 0xF9 JUMPI DUP1 PUSH4 0x6ACCAB8C EQ PUSH2 0x108 JUMPI DUP1 PUSH4 0x776D1A01 EQ PUSH2 0x11F JUMPI DUP1 PUSH4 0xD4B83992 EQ PUSH2 0x134 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x82 JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0xAA JUMPI DUP1 PUSH4 0x4162169F EQ PUSH2 0xBF JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x95 PUSH2 0x90 CALLDATASIZE PUSH1 0x4 PUSH2 0x248 JUMP JUMPDEST PUSH2 0x147 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xB2 PUSH2 0x198 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA1 SWAP2 SWAP1 PUSH2 0x279 JUMP JUMPDEST PUSH32 0x0 JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xA1 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x40 MLOAD PUSH2 0xA1 SWAP2 SWAP1 PUSH2 0x2AD JUMP JUMPDEST PUSH2 0x111 PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xA1 JUMP JUMPDEST PUSH2 0x132 PUSH2 0x12D CALLDATASIZE PUSH1 0x4 PUSH2 0x2D5 JUMP JUMPDEST PUSH2 0x1C2 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0xE1 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x41DE683 PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x177 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x192 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1A0 PUSH2 0x22A JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 DUP4 AND DUP2 OR DUP5 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 DUP4 SWAP2 PUSH32 0x90CC2F570A6EB594B1580EA3E41247D2D73A55281889E86BD4EC2FC29C7E62D6 SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x25A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x272 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0x2A4 JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x282 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH1 0x3 DUP4 LT PUSH2 0x2CF JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 SWAP1 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x272 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"624:892:29:-:0;;;676:77;;;;;;;;;;744:1;710:38;;;;;:::i;:::-;-1:-1:-1;;;;;191:32:50;;;173:51;;161:2;146:18;710:38:29;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1454:32:45;;;624:892:29;;;;;;;;;;:::o;14:216:50:-;624:892:29;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@implementation_4956":{"entryPoint":null,"id":4956,"parameterSlots":0,"returnSlots":1},"@mockHelpers_3108":{"entryPoint":1053,"id":3108,"parameterSlots":1,"returnSlots":1},"@mockPermissions_3069":{"entryPoint":664,"id":3069,"parameterSlots":3,"returnSlots":1},"@prepareInstallation_2958":{"entryPoint":534,"id":2958,"parameterSlots":2,"returnSlots":2},"@prepareUninstallation_2986":{"entryPoint":456,"id":2986,"parameterSlots":2,"returnSlots":1},"@prepareUpdate_4918":{"entryPoint":478,"id":4918,"parameterSlots":3,"returnSlots":2},"@protocolVersion_5135":{"entryPoint":414,"id":5135,"parameterSlots":0,"returnSlots":1},"@supportsInterface_2374":{"entryPoint":null,"id":2374,"parameterSlots":1,"returnSlots":1},"@supportsInterface_4947":{"entryPoint":333,"id":4947,"parameterSlots":1,"returnSlots":1},"abi_decode_address":{"entryPoint":1375,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_struct_SetupPayload_calldata":{"entryPoint":1403,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_bytes_memory_ptr":{"entryPoint":2069,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_struct$_SetupPayload_$4810_calldata_ptr":{"entryPoint":1421,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_uint16t_struct$_SetupPayload_$4810_calldata_ptr":{"entryPoint":1696,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_bytes4":{"entryPoint":1281,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encodeUpdatedPos_struct_MultiTargetPermission":{"entryPoint":1521,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_struct_PreparedSetupData":{"entryPoint":1799,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address_t_struct$_PreparedSetupData_$4802_memory_ptr__to_t_address_t_struct$_PreparedSetupData_$4802_memory_ptr__fromStack_reversed":{"entryPoint":2263,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr__fromStack_reversed":{"entryPoint":1623,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed":{"entryPoint":1323,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$4802_memory_ptr__to_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$4802_memory_ptr__fromStack_reversed":{"entryPoint":1946,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_contract$_IDAO_$2538__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_t_uint160":{"entryPoint":2327,"id":null,"parameterSlots":2,"returnSlots":1},"increment_t_uint160":{"entryPoint":2388,"id":null,"parameterSlots":1,"returnSlots":1},"panic_error_0x11":{"entryPoint":2305,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x21":{"entryPoint":1499,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x32":{"entryPoint":2366,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":2047,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:8649:50","statements":[{"nodeType":"YulBlock","src":"6:3:50","statements":[]},{"body":{"nodeType":"YulBlock","src":"83:217:50","statements":[{"body":{"nodeType":"YulBlock","src":"129:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"138:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"141:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"131:6:50"},"nodeType":"YulFunctionCall","src":"131:12:50"},"nodeType":"YulExpressionStatement","src":"131:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"104:7:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"113:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"100:3:50"},"nodeType":"YulFunctionCall","src":"100:23:50"},{"kind":"number","nodeType":"YulLiteral","src":"125:2:50","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"96:3:50"},"nodeType":"YulFunctionCall","src":"96:32:50"},"nodeType":"YulIf","src":"93:52:50"},{"nodeType":"YulVariableDeclaration","src":"154:36:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"180:9:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"167:12:50"},"nodeType":"YulFunctionCall","src":"167:23:50"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"158:5:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"254:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"263:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"266:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"256:6:50"},"nodeType":"YulFunctionCall","src":"256:12:50"},"nodeType":"YulExpressionStatement","src":"256:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"212:5:50"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"223:5:50"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"234:3:50","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"239:10:50","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"230:3:50"},"nodeType":"YulFunctionCall","src":"230:20:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"219:3:50"},"nodeType":"YulFunctionCall","src":"219:32:50"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"209:2:50"},"nodeType":"YulFunctionCall","src":"209:43:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"202:6:50"},"nodeType":"YulFunctionCall","src":"202:51:50"},"nodeType":"YulIf","src":"199:71:50"},{"nodeType":"YulAssignment","src":"279:15:50","value":{"name":"value","nodeType":"YulIdentifier","src":"289:5:50"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"279:6:50"}]}]},"name":"abi_decode_tuple_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"49:9:50","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"60:7:50","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"72:6:50","type":""}],"src":"14:286:50"},{"body":{"nodeType":"YulBlock","src":"400:92:50","statements":[{"nodeType":"YulAssignment","src":"410:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"422:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"433:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"418:3:50"},"nodeType":"YulFunctionCall","src":"418:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"410:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"452:9:50"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"477:6:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"470:6:50"},"nodeType":"YulFunctionCall","src":"470:14:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"463:6:50"},"nodeType":"YulFunctionCall","src":"463:22:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"445:6:50"},"nodeType":"YulFunctionCall","src":"445:41:50"},"nodeType":"YulExpressionStatement","src":"445:41:50"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"369:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"380:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"391:4:50","type":""}],"src":"305:187:50"},{"body":{"nodeType":"YulBlock","src":"640:358:50","statements":[{"nodeType":"YulAssignment","src":"650:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"662:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"673:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"658:3:50"},"nodeType":"YulFunctionCall","src":"658:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"650:4:50"}]},{"nodeType":"YulVariableDeclaration","src":"685:20:50","value":{"name":"headStart","nodeType":"YulIdentifier","src":"696:9:50"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"689:3:50","type":""}]},{"nodeType":"YulAssignment","src":"714:16:50","value":{"name":"headStart","nodeType":"YulIdentifier","src":"721:9:50"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"714:3:50"}]},{"nodeType":"YulVariableDeclaration","src":"739:20:50","value":{"name":"value0","nodeType":"YulIdentifier","src":"753:6:50"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"743:6:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"768:10:50","value":{"kind":"number","nodeType":"YulLiteral","src":"777:1:50","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"772:1:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"834:158:50","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"855:3:50"},{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"870:6:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"864:5:50"},"nodeType":"YulFunctionCall","src":"864:13:50"},{"kind":"number","nodeType":"YulLiteral","src":"879:4:50","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"860:3:50"},"nodeType":"YulFunctionCall","src":"860:24:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"848:6:50"},"nodeType":"YulFunctionCall","src":"848:37:50"},"nodeType":"YulExpressionStatement","src":"848:37:50"},{"nodeType":"YulVariableDeclaration","src":"898:14:50","value":{"kind":"number","nodeType":"YulLiteral","src":"908:4:50","type":"","value":"0x20"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"902:2:50","type":""}]},{"nodeType":"YulAssignment","src":"925:19:50","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"936:3:50"},{"name":"_1","nodeType":"YulIdentifier","src":"941:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"932:3:50"},"nodeType":"YulFunctionCall","src":"932:12:50"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"925:3:50"}]},{"nodeType":"YulAssignment","src":"957:25:50","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"971:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"979:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"967:3:50"},"nodeType":"YulFunctionCall","src":"967:15:50"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"957:6:50"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"798:1:50"},{"kind":"number","nodeType":"YulLiteral","src":"801:4:50","type":"","value":"0x03"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"795:2:50"},"nodeType":"YulFunctionCall","src":"795:11:50"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"807:18:50","statements":[{"nodeType":"YulAssignment","src":"809:14:50","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"818:1:50"},{"kind":"number","nodeType":"YulLiteral","src":"821:1:50","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"814:3:50"},"nodeType":"YulFunctionCall","src":"814:9:50"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"809:1:50"}]}]},"pre":{"nodeType":"YulBlock","src":"791:3:50","statements":[]},"src":"787:205:50"}]},"name":"abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"609:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"620:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"631:4:50","type":""}],"src":"497:501:50"},{"body":{"nodeType":"YulBlock","src":"1104:125:50","statements":[{"nodeType":"YulAssignment","src":"1114:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1126:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"1137:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1122:3:50"},"nodeType":"YulFunctionCall","src":"1122:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1114:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1156:9:50"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1171:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"1179:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1167:3:50"},"nodeType":"YulFunctionCall","src":"1167:55:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1149:6:50"},"nodeType":"YulFunctionCall","src":"1149:74:50"},"nodeType":"YulExpressionStatement","src":"1149:74:50"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1073:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1084:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1095:4:50","type":""}],"src":"1003:226:50"},{"body":{"nodeType":"YulBlock","src":"1283:147:50","statements":[{"nodeType":"YulAssignment","src":"1293:29:50","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1315:6:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1302:12:50"},"nodeType":"YulFunctionCall","src":"1302:20:50"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"1293:5:50"}]},{"body":{"nodeType":"YulBlock","src":"1408:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1417:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1420:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1410:6:50"},"nodeType":"YulFunctionCall","src":"1410:12:50"},"nodeType":"YulExpressionStatement","src":"1410:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1344:5:50"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1355:5:50"},{"kind":"number","nodeType":"YulLiteral","src":"1362:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1351:3:50"},"nodeType":"YulFunctionCall","src":"1351:54:50"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1341:2:50"},"nodeType":"YulFunctionCall","src":"1341:65:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1334:6:50"},"nodeType":"YulFunctionCall","src":"1334:73:50"},"nodeType":"YulIf","src":"1331:93:50"}]},"name":"abi_decode_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"1262:6:50","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"1273:5:50","type":""}],"src":"1234:196:50"},{"body":{"nodeType":"YulBlock","src":"1510:85:50","statements":[{"body":{"nodeType":"YulBlock","src":"1549:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1558:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1561:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1551:6:50"},"nodeType":"YulFunctionCall","src":"1551:12:50"},"nodeType":"YulExpressionStatement","src":"1551:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"end","nodeType":"YulIdentifier","src":"1531:3:50"},{"name":"offset","nodeType":"YulIdentifier","src":"1536:6:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1527:3:50"},"nodeType":"YulFunctionCall","src":"1527:16:50"},{"kind":"number","nodeType":"YulLiteral","src":"1545:2:50","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1523:3:50"},"nodeType":"YulFunctionCall","src":"1523:25:50"},"nodeType":"YulIf","src":"1520:45:50"},{"nodeType":"YulAssignment","src":"1574:15:50","value":{"name":"offset","nodeType":"YulIdentifier","src":"1583:6:50"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"1574:5:50"}]}]},"name":"abi_decode_struct_SetupPayload_calldata","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"1484:6:50","type":""},{"name":"end","nodeType":"YulTypedName","src":"1492:3:50","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"1500:5:50","type":""}],"src":"1435:160:50"},{"body":{"nodeType":"YulBlock","src":"1719:321:50","statements":[{"body":{"nodeType":"YulBlock","src":"1765:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1774:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1777:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1767:6:50"},"nodeType":"YulFunctionCall","src":"1767:12:50"},"nodeType":"YulExpressionStatement","src":"1767:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1740:7:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"1749:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1736:3:50"},"nodeType":"YulFunctionCall","src":"1736:23:50"},{"kind":"number","nodeType":"YulLiteral","src":"1761:2:50","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1732:3:50"},"nodeType":"YulFunctionCall","src":"1732:32:50"},"nodeType":"YulIf","src":"1729:52:50"},{"nodeType":"YulAssignment","src":"1790:39:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1819:9:50"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"1800:18:50"},"nodeType":"YulFunctionCall","src":"1800:29:50"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1790:6:50"}]},{"nodeType":"YulVariableDeclaration","src":"1838:46:50","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1869:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"1880:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1865:3:50"},"nodeType":"YulFunctionCall","src":"1865:18:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1852:12:50"},"nodeType":"YulFunctionCall","src":"1852:32:50"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1842:6:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"1927:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1936:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1939:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1929:6:50"},"nodeType":"YulFunctionCall","src":"1929:12:50"},"nodeType":"YulExpressionStatement","src":"1929:12:50"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1899:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"1907:18:50","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1896:2:50"},"nodeType":"YulFunctionCall","src":"1896:30:50"},"nodeType":"YulIf","src":"1893:50:50"},{"nodeType":"YulAssignment","src":"1952:82:50","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2006:9:50"},{"name":"offset","nodeType":"YulIdentifier","src":"2017:6:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2002:3:50"},"nodeType":"YulFunctionCall","src":"2002:22:50"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2026:7:50"}],"functionName":{"name":"abi_decode_struct_SetupPayload_calldata","nodeType":"YulIdentifier","src":"1962:39:50"},"nodeType":"YulFunctionCall","src":"1962:72:50"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1952:6:50"}]}]},"name":"abi_decode_tuple_t_addresst_struct$_SetupPayload_$4810_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1677:9:50","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1688:7:50","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1700:6:50","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1708:6:50","type":""}],"src":"1600:440:50"},{"body":{"nodeType":"YulBlock","src":"2077:95:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2094:1:50","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2101:3:50","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"2106:10:50","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2097:3:50"},"nodeType":"YulFunctionCall","src":"2097:20:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2087:6:50"},"nodeType":"YulFunctionCall","src":"2087:31:50"},"nodeType":"YulExpressionStatement","src":"2087:31:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2134:1:50","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"2137:4:50","type":"","value":"0x21"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2127:6:50"},"nodeType":"YulFunctionCall","src":"2127:15:50"},"nodeType":"YulExpressionStatement","src":"2127:15:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2158:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2161:4:50","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2151:6:50"},"nodeType":"YulFunctionCall","src":"2151:15:50"},"nodeType":"YulExpressionStatement","src":"2151:15:50"}]},"name":"panic_error_0x21","nodeType":"YulFunctionDefinition","src":"2045:127:50"},{"body":{"nodeType":"YulBlock","src":"2267:606:50","statements":[{"nodeType":"YulVariableDeclaration","src":"2277:23:50","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2293:6:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2287:5:50"},"nodeType":"YulFunctionCall","src":"2287:13:50"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"2281:2:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"2338:111:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2359:1:50","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2366:3:50","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"2371:10:50","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2362:3:50"},"nodeType":"YulFunctionCall","src":"2362:20:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2352:6:50"},"nodeType":"YulFunctionCall","src":"2352:31:50"},"nodeType":"YulExpressionStatement","src":"2352:31:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2403:1:50","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"2406:4:50","type":"","value":"0x21"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2396:6:50"},"nodeType":"YulFunctionCall","src":"2396:15:50"},"nodeType":"YulExpressionStatement","src":"2396:15:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2431:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2434:4:50","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2424:6:50"},"nodeType":"YulFunctionCall","src":"2424:15:50"},"nodeType":"YulExpressionStatement","src":"2424:15:50"}]},"condition":{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"2322:2:50"},{"kind":"number","nodeType":"YulLiteral","src":"2326:1:50","type":"","value":"3"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2319:2:50"},"nodeType":"YulFunctionCall","src":"2319:9:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2312:6:50"},"nodeType":"YulFunctionCall","src":"2312:17:50"},"nodeType":"YulIf","src":"2309:140:50"},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2465:3:50"},{"name":"_1","nodeType":"YulIdentifier","src":"2470:2:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2458:6:50"},"nodeType":"YulFunctionCall","src":"2458:15:50"},"nodeType":"YulExpressionStatement","src":"2458:15:50"},{"nodeType":"YulVariableDeclaration","src":"2482:44:50","value":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2512:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"2520:4:50","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2508:3:50"},"nodeType":"YulFunctionCall","src":"2508:17:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2502:5:50"},"nodeType":"YulFunctionCall","src":"2502:24:50"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"2486:12:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2535:52:50","value":{"kind":"number","nodeType":"YulLiteral","src":"2545:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"2539:2:50","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2607:3:50"},{"kind":"number","nodeType":"YulLiteral","src":"2612:4:50","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2603:3:50"},"nodeType":"YulFunctionCall","src":"2603:14:50"},{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"2623:12:50"},{"name":"_2","nodeType":"YulIdentifier","src":"2637:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2619:3:50"},"nodeType":"YulFunctionCall","src":"2619:21:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2596:6:50"},"nodeType":"YulFunctionCall","src":"2596:45:50"},"nodeType":"YulExpressionStatement","src":"2596:45:50"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2661:3:50"},{"kind":"number","nodeType":"YulLiteral","src":"2666:4:50","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2657:3:50"},"nodeType":"YulFunctionCall","src":"2657:14:50"},{"arguments":[{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2687:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"2695:4:50","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2683:3:50"},"nodeType":"YulFunctionCall","src":"2683:17:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2677:5:50"},"nodeType":"YulFunctionCall","src":"2677:24:50"},{"name":"_2","nodeType":"YulIdentifier","src":"2703:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2673:3:50"},"nodeType":"YulFunctionCall","src":"2673:33:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2650:6:50"},"nodeType":"YulFunctionCall","src":"2650:57:50"},"nodeType":"YulExpressionStatement","src":"2650:57:50"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2727:3:50"},{"kind":"number","nodeType":"YulLiteral","src":"2732:4:50","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2723:3:50"},"nodeType":"YulFunctionCall","src":"2723:14:50"},{"arguments":[{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2753:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"2761:4:50","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2749:3:50"},"nodeType":"YulFunctionCall","src":"2749:17:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2743:5:50"},"nodeType":"YulFunctionCall","src":"2743:24:50"},{"name":"_2","nodeType":"YulIdentifier","src":"2769:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2739:3:50"},"nodeType":"YulFunctionCall","src":"2739:33:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2716:6:50"},"nodeType":"YulFunctionCall","src":"2716:57:50"},"nodeType":"YulExpressionStatement","src":"2716:57:50"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2793:3:50"},{"kind":"number","nodeType":"YulLiteral","src":"2798:4:50","type":"","value":"0x80"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2789:3:50"},"nodeType":"YulFunctionCall","src":"2789:14:50"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2815:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"2823:4:50","type":"","value":"0x80"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2811:3:50"},"nodeType":"YulFunctionCall","src":"2811:17:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2805:5:50"},"nodeType":"YulFunctionCall","src":"2805:24:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2782:6:50"},"nodeType":"YulFunctionCall","src":"2782:48:50"},"nodeType":"YulExpressionStatement","src":"2782:48:50"},{"nodeType":"YulAssignment","src":"2839:28:50","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2857:3:50"},{"kind":"number","nodeType":"YulLiteral","src":"2862:4:50","type":"","value":"0xa0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2853:3:50"},"nodeType":"YulFunctionCall","src":"2853:14:50"},"variableNames":[{"name":"updatedPos","nodeType":"YulIdentifier","src":"2839:10:50"}]}]},"name":"abi_encodeUpdatedPos_struct_MultiTargetPermission","nodeType":"YulFunctionDefinition","parameters":[{"name":"value0","nodeType":"YulTypedName","src":"2236:6:50","type":""},{"name":"pos","nodeType":"YulTypedName","src":"2244:3:50","type":""}],"returnVariables":[{"name":"updatedPos","nodeType":"YulTypedName","src":"2252:10:50","type":""}],"src":"2177:696:50"},{"body":{"nodeType":"YulBlock","src":"3107:499:50","statements":[{"nodeType":"YulVariableDeclaration","src":"3117:12:50","value":{"kind":"number","nodeType":"YulLiteral","src":"3127:2:50","type":"","value":"32"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"3121:2:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3138:32:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3156:9:50"},{"name":"_1","nodeType":"YulIdentifier","src":"3167:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3152:3:50"},"nodeType":"YulFunctionCall","src":"3152:18:50"},"variables":[{"name":"tail_1","nodeType":"YulTypedName","src":"3142:6:50","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3186:9:50"},{"name":"_1","nodeType":"YulIdentifier","src":"3197:2:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3179:6:50"},"nodeType":"YulFunctionCall","src":"3179:21:50"},"nodeType":"YulExpressionStatement","src":"3179:21:50"},{"nodeType":"YulVariableDeclaration","src":"3209:17:50","value":{"name":"tail_1","nodeType":"YulIdentifier","src":"3220:6:50"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"3213:3:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3235:27:50","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3255:6:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3249:5:50"},"nodeType":"YulFunctionCall","src":"3249:13:50"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"3239:6:50","type":""}]},{"expression":{"arguments":[{"name":"tail_1","nodeType":"YulIdentifier","src":"3278:6:50"},{"name":"length","nodeType":"YulIdentifier","src":"3286:6:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3271:6:50"},"nodeType":"YulFunctionCall","src":"3271:22:50"},"nodeType":"YulExpressionStatement","src":"3271:22:50"},{"nodeType":"YulAssignment","src":"3302:25:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3313:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"3324:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3309:3:50"},"nodeType":"YulFunctionCall","src":"3309:18:50"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"3302:3:50"}]},{"nodeType":"YulVariableDeclaration","src":"3336:29:50","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3354:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"3362:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3350:3:50"},"nodeType":"YulFunctionCall","src":"3350:15:50"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"3340:6:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3374:10:50","value":{"kind":"number","nodeType":"YulLiteral","src":"3383:1:50","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"3378:1:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"3442:138:50","statements":[{"nodeType":"YulAssignment","src":"3456:76:50","value":{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"3519:6:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3513:5:50"},"nodeType":"YulFunctionCall","src":"3513:13:50"},{"name":"pos","nodeType":"YulIdentifier","src":"3528:3:50"}],"functionName":{"name":"abi_encodeUpdatedPos_struct_MultiTargetPermission","nodeType":"YulIdentifier","src":"3463:49:50"},"nodeType":"YulFunctionCall","src":"3463:69:50"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"3456:3:50"}]},{"nodeType":"YulAssignment","src":"3545:25:50","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"3559:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"3567:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3555:3:50"},"nodeType":"YulFunctionCall","src":"3555:15:50"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"3545:6:50"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3404:1:50"},{"name":"length","nodeType":"YulIdentifier","src":"3407:6:50"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"3401:2:50"},"nodeType":"YulFunctionCall","src":"3401:13:50"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"3415:18:50","statements":[{"nodeType":"YulAssignment","src":"3417:14:50","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3426:1:50"},{"kind":"number","nodeType":"YulLiteral","src":"3429:1:50","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3422:3:50"},"nodeType":"YulFunctionCall","src":"3422:9:50"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"3417:1:50"}]}]},"pre":{"nodeType":"YulBlock","src":"3397:3:50","statements":[]},"src":"3393:187:50"},{"nodeType":"YulAssignment","src":"3589:11:50","value":{"name":"pos","nodeType":"YulIdentifier","src":"3597:3:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3589:4:50"}]}]},"name":"abi_encode_tuple_t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3076:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3087:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3098:4:50","type":""}],"src":"2878:728:50"},{"body":{"nodeType":"YulBlock","src":"3746:465:50","statements":[{"body":{"nodeType":"YulBlock","src":"3792:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3801:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3804:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3794:6:50"},"nodeType":"YulFunctionCall","src":"3794:12:50"},"nodeType":"YulExpressionStatement","src":"3794:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3767:7:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"3776:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3763:3:50"},"nodeType":"YulFunctionCall","src":"3763:23:50"},{"kind":"number","nodeType":"YulLiteral","src":"3788:2:50","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3759:3:50"},"nodeType":"YulFunctionCall","src":"3759:32:50"},"nodeType":"YulIf","src":"3756:52:50"},{"nodeType":"YulAssignment","src":"3817:39:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3846:9:50"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"3827:18:50"},"nodeType":"YulFunctionCall","src":"3827:29:50"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3817:6:50"}]},{"nodeType":"YulVariableDeclaration","src":"3865:45:50","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3895:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"3906:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3891:3:50"},"nodeType":"YulFunctionCall","src":"3891:18:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3878:12:50"},"nodeType":"YulFunctionCall","src":"3878:32:50"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"3869:5:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"3960:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3969:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3972:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3962:6:50"},"nodeType":"YulFunctionCall","src":"3962:12:50"},"nodeType":"YulExpressionStatement","src":"3962:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3932:5:50"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3943:5:50"},{"kind":"number","nodeType":"YulLiteral","src":"3950:6:50","type":"","value":"0xffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3939:3:50"},"nodeType":"YulFunctionCall","src":"3939:18:50"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"3929:2:50"},"nodeType":"YulFunctionCall","src":"3929:29:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3922:6:50"},"nodeType":"YulFunctionCall","src":"3922:37:50"},"nodeType":"YulIf","src":"3919:57:50"},{"nodeType":"YulAssignment","src":"3985:15:50","value":{"name":"value","nodeType":"YulIdentifier","src":"3995:5:50"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"3985:6:50"}]},{"nodeType":"YulVariableDeclaration","src":"4009:46:50","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4040:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"4051:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4036:3:50"},"nodeType":"YulFunctionCall","src":"4036:18:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4023:12:50"},"nodeType":"YulFunctionCall","src":"4023:32:50"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4013:6:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"4098:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4107:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4110:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4100:6:50"},"nodeType":"YulFunctionCall","src":"4100:12:50"},"nodeType":"YulExpressionStatement","src":"4100:12:50"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"4070:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"4078:18:50","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4067:2:50"},"nodeType":"YulFunctionCall","src":"4067:30:50"},"nodeType":"YulIf","src":"4064:50:50"},{"nodeType":"YulAssignment","src":"4123:82:50","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4177:9:50"},{"name":"offset","nodeType":"YulIdentifier","src":"4188:6:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4173:3:50"},"nodeType":"YulFunctionCall","src":"4173:22:50"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4197:7:50"}],"functionName":{"name":"abi_decode_struct_SetupPayload_calldata","nodeType":"YulIdentifier","src":"4133:39:50"},"nodeType":"YulFunctionCall","src":"4133:72:50"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"4123:6:50"}]}]},"name":"abi_decode_tuple_t_addresst_uint16t_struct$_SetupPayload_$4810_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3696:9:50","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3707:7:50","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3719:6:50","type":""},{"name":"value1","nodeType":"YulTypedName","src":"3727:6:50","type":""},{"name":"value2","nodeType":"YulTypedName","src":"3735:6:50","type":""}],"src":"3611:600:50"},{"body":{"nodeType":"YulBlock","src":"4284:1094:50","statements":[{"nodeType":"YulVariableDeclaration","src":"4294:26:50","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4310:3:50"},{"kind":"number","nodeType":"YulLiteral","src":"4315:4:50","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4306:3:50"},"nodeType":"YulFunctionCall","src":"4306:14:50"},"variables":[{"name":"tail","nodeType":"YulTypedName","src":"4298:4:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4329:32:50","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4355:5:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4349:5:50"},"nodeType":"YulFunctionCall","src":"4349:12:50"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"4333:12:50","type":""}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4377:3:50"},{"kind":"number","nodeType":"YulLiteral","src":"4382:4:50","type":"","value":"0x40"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4370:6:50"},"nodeType":"YulFunctionCall","src":"4370:17:50"},"nodeType":"YulExpressionStatement","src":"4370:17:50"},{"nodeType":"YulVariableDeclaration","src":"4396:17:50","value":{"name":"tail","nodeType":"YulIdentifier","src":"4409:4:50"},"variables":[{"name":"pos_1","nodeType":"YulTypedName","src":"4400:5:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4422:33:50","value":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"4442:12:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4436:5:50"},"nodeType":"YulFunctionCall","src":"4436:19:50"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"4426:6:50","type":""}]},{"expression":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"4471:4:50"},{"name":"length","nodeType":"YulIdentifier","src":"4477:6:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4464:6:50"},"nodeType":"YulFunctionCall","src":"4464:20:50"},"nodeType":"YulExpressionStatement","src":"4464:20:50"},{"nodeType":"YulAssignment","src":"4493:21:50","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4506:3:50"},{"kind":"number","nodeType":"YulLiteral","src":"4511:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4502:3:50"},"nodeType":"YulFunctionCall","src":"4502:12:50"},"variableNames":[{"name":"pos_1","nodeType":"YulIdentifier","src":"4493:5:50"}]},{"nodeType":"YulVariableDeclaration","src":"4523:14:50","value":{"kind":"number","nodeType":"YulLiteral","src":"4533:4:50","type":"","value":"0x20"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"4527:2:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4546:35:50","value":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"4564:12:50"},{"name":"_1","nodeType":"YulIdentifier","src":"4578:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4560:3:50"},"nodeType":"YulFunctionCall","src":"4560:21:50"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"4550:6:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4590:10:50","value":{"kind":"number","nodeType":"YulLiteral","src":"4599:1:50","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"4594:1:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"4658:175:50","statements":[{"expression":{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"4679:5:50"},{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"4696:6:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4690:5:50"},"nodeType":"YulFunctionCall","src":"4690:13:50"},{"kind":"number","nodeType":"YulLiteral","src":"4705:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4686:3:50"},"nodeType":"YulFunctionCall","src":"4686:62:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4672:6:50"},"nodeType":"YulFunctionCall","src":"4672:77:50"},"nodeType":"YulExpressionStatement","src":"4672:77:50"},{"nodeType":"YulAssignment","src":"4762:23:50","value":{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"4775:5:50"},{"name":"_1","nodeType":"YulIdentifier","src":"4782:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4771:3:50"},"nodeType":"YulFunctionCall","src":"4771:14:50"},"variableNames":[{"name":"pos_1","nodeType":"YulIdentifier","src":"4762:5:50"}]},{"nodeType":"YulAssignment","src":"4798:25:50","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"4812:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"4820:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4808:3:50"},"nodeType":"YulFunctionCall","src":"4808:15:50"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"4798:6:50"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"4620:1:50"},{"name":"length","nodeType":"YulIdentifier","src":"4623:6:50"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"4617:2:50"},"nodeType":"YulFunctionCall","src":"4617:13:50"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"4631:18:50","statements":[{"nodeType":"YulAssignment","src":"4633:14:50","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"4642:1:50"},{"kind":"number","nodeType":"YulLiteral","src":"4645:1:50","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4638:3:50"},"nodeType":"YulFunctionCall","src":"4638:9:50"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"4633:1:50"}]}]},"pre":{"nodeType":"YulBlock","src":"4613:3:50","statements":[]},"src":"4609:224:50"},{"nodeType":"YulVariableDeclaration","src":"4842:43:50","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4874:5:50"},{"name":"_1","nodeType":"YulIdentifier","src":"4881:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4870:3:50"},"nodeType":"YulFunctionCall","src":"4870:14:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4864:5:50"},"nodeType":"YulFunctionCall","src":"4864:21:50"},"variables":[{"name":"memberValue0_1","nodeType":"YulTypedName","src":"4846:14:50","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4905:3:50"},{"name":"_1","nodeType":"YulIdentifier","src":"4910:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4901:3:50"},"nodeType":"YulFunctionCall","src":"4901:12:50"},{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"4919:5:50"},{"name":"pos","nodeType":"YulIdentifier","src":"4926:3:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4915:3:50"},"nodeType":"YulFunctionCall","src":"4915:15:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4894:6:50"},"nodeType":"YulFunctionCall","src":"4894:37:50"},"nodeType":"YulExpressionStatement","src":"4894:37:50"},{"nodeType":"YulVariableDeclaration","src":"4940:18:50","value":{"name":"pos_1","nodeType":"YulIdentifier","src":"4953:5:50"},"variables":[{"name":"pos_2","nodeType":"YulTypedName","src":"4944:5:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4967:37:50","value":{"arguments":[{"name":"memberValue0_1","nodeType":"YulIdentifier","src":"4989:14:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4983:5:50"},"nodeType":"YulFunctionCall","src":"4983:21:50"},"variables":[{"name":"length_1","nodeType":"YulTypedName","src":"4971:8:50","type":""}]},{"expression":{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5020:5:50"},{"name":"length_1","nodeType":"YulIdentifier","src":"5027:8:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5013:6:50"},"nodeType":"YulFunctionCall","src":"5013:23:50"},"nodeType":"YulExpressionStatement","src":"5013:23:50"},{"nodeType":"YulAssignment","src":"5045:23:50","value":{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5058:5:50"},{"name":"_1","nodeType":"YulIdentifier","src":"5065:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5054:3:50"},"nodeType":"YulFunctionCall","src":"5054:14:50"},"variableNames":[{"name":"pos_2","nodeType":"YulIdentifier","src":"5045:5:50"}]},{"nodeType":"YulVariableDeclaration","src":"5077:39:50","value":{"arguments":[{"name":"memberValue0_1","nodeType":"YulIdentifier","src":"5097:14:50"},{"name":"_1","nodeType":"YulIdentifier","src":"5113:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5093:3:50"},"nodeType":"YulFunctionCall","src":"5093:23:50"},"variables":[{"name":"srcPtr_1","nodeType":"YulTypedName","src":"5081:8:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5125:12:50","value":{"kind":"number","nodeType":"YulLiteral","src":"5136:1:50","type":"","value":"0"},"variables":[{"name":"i_1","nodeType":"YulTypedName","src":"5129:3:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"5203:148:50","statements":[{"nodeType":"YulAssignment","src":"5217:82:50","value":{"arguments":[{"arguments":[{"name":"srcPtr_1","nodeType":"YulIdentifier","src":"5282:8:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5276:5:50"},"nodeType":"YulFunctionCall","src":"5276:15:50"},{"name":"pos_2","nodeType":"YulIdentifier","src":"5293:5:50"}],"functionName":{"name":"abi_encodeUpdatedPos_struct_MultiTargetPermission","nodeType":"YulIdentifier","src":"5226:49:50"},"nodeType":"YulFunctionCall","src":"5226:73:50"},"variableNames":[{"name":"pos_2","nodeType":"YulIdentifier","src":"5217:5:50"}]},{"nodeType":"YulAssignment","src":"5312:29:50","value":{"arguments":[{"name":"srcPtr_1","nodeType":"YulIdentifier","src":"5328:8:50"},{"name":"_1","nodeType":"YulIdentifier","src":"5338:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5324:3:50"},"nodeType":"YulFunctionCall","src":"5324:17:50"},"variableNames":[{"name":"srcPtr_1","nodeType":"YulIdentifier","src":"5312:8:50"}]}]},"condition":{"arguments":[{"name":"i_1","nodeType":"YulIdentifier","src":"5157:3:50"},{"name":"length_1","nodeType":"YulIdentifier","src":"5162:8:50"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"5154:2:50"},"nodeType":"YulFunctionCall","src":"5154:17:50"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"5172:22:50","statements":[{"nodeType":"YulAssignment","src":"5174:18:50","value":{"arguments":[{"name":"i_1","nodeType":"YulIdentifier","src":"5185:3:50"},{"kind":"number","nodeType":"YulLiteral","src":"5190:1:50","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5181:3:50"},"nodeType":"YulFunctionCall","src":"5181:11:50"},"variableNames":[{"name":"i_1","nodeType":"YulIdentifier","src":"5174:3:50"}]}]},"pre":{"nodeType":"YulBlock","src":"5150:3:50","statements":[]},"src":"5146:205:50"},{"nodeType":"YulAssignment","src":"5360:12:50","value":{"name":"pos_2","nodeType":"YulIdentifier","src":"5367:5:50"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"5360:3:50"}]}]},"name":"abi_encode_struct_PreparedSetupData","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"4261:5:50","type":""},{"name":"pos","nodeType":"YulTypedName","src":"4268:3:50","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"4276:3:50","type":""}],"src":"4216:1162:50"},{"body":{"nodeType":"YulBlock","src":"5600:542:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5617:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"5628:2:50","type":"","value":"64"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5610:6:50"},"nodeType":"YulFunctionCall","src":"5610:21:50"},"nodeType":"YulExpressionStatement","src":"5610:21:50"},{"nodeType":"YulVariableDeclaration","src":"5640:27:50","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5660:6:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5654:5:50"},"nodeType":"YulFunctionCall","src":"5654:13:50"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"5644:6:50","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5687:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"5698:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5683:3:50"},"nodeType":"YulFunctionCall","src":"5683:18:50"},{"name":"length","nodeType":"YulIdentifier","src":"5703:6:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5676:6:50"},"nodeType":"YulFunctionCall","src":"5676:34:50"},"nodeType":"YulExpressionStatement","src":"5676:34:50"},{"nodeType":"YulVariableDeclaration","src":"5719:10:50","value":{"kind":"number","nodeType":"YulLiteral","src":"5728:1:50","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"5723:1:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"5790:92:50","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5819:9:50"},{"name":"i","nodeType":"YulIdentifier","src":"5830:1:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5815:3:50"},"nodeType":"YulFunctionCall","src":"5815:17:50"},{"kind":"number","nodeType":"YulLiteral","src":"5834:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5811:3:50"},"nodeType":"YulFunctionCall","src":"5811:26:50"},{"arguments":[{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5853:6:50"},{"name":"i","nodeType":"YulIdentifier","src":"5861:1:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5849:3:50"},"nodeType":"YulFunctionCall","src":"5849:14:50"},{"kind":"number","nodeType":"YulLiteral","src":"5865:4:50","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5845:3:50"},"nodeType":"YulFunctionCall","src":"5845:25:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5839:5:50"},"nodeType":"YulFunctionCall","src":"5839:32:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5804:6:50"},"nodeType":"YulFunctionCall","src":"5804:68:50"},"nodeType":"YulExpressionStatement","src":"5804:68:50"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"5749:1:50"},{"name":"length","nodeType":"YulIdentifier","src":"5752:6:50"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"5746:2:50"},"nodeType":"YulFunctionCall","src":"5746:13:50"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"5760:21:50","statements":[{"nodeType":"YulAssignment","src":"5762:17:50","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"5771:1:50"},{"kind":"number","nodeType":"YulLiteral","src":"5774:4:50","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5767:3:50"},"nodeType":"YulFunctionCall","src":"5767:12:50"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"5762:1:50"}]}]},"pre":{"nodeType":"YulBlock","src":"5742:3:50","statements":[]},"src":"5738:144:50"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5906:9:50"},{"name":"length","nodeType":"YulIdentifier","src":"5917:6:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5902:3:50"},"nodeType":"YulFunctionCall","src":"5902:22:50"},{"kind":"number","nodeType":"YulLiteral","src":"5926:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5898:3:50"},"nodeType":"YulFunctionCall","src":"5898:31:50"},{"kind":"number","nodeType":"YulLiteral","src":"5931:1:50","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5891:6:50"},"nodeType":"YulFunctionCall","src":"5891:42:50"},"nodeType":"YulExpressionStatement","src":"5891:42:50"},{"nodeType":"YulVariableDeclaration","src":"5942:55:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5956:9:50"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"5975:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"5983:2:50","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5971:3:50"},"nodeType":"YulFunctionCall","src":"5971:15:50"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5992:2:50","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"5988:3:50"},"nodeType":"YulFunctionCall","src":"5988:7:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5967:3:50"},"nodeType":"YulFunctionCall","src":"5967:29:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5952:3:50"},"nodeType":"YulFunctionCall","src":"5952:45:50"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"5946:2:50","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6017:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"6028:4:50","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6013:3:50"},"nodeType":"YulFunctionCall","src":"6013:20:50"},{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"6043:2:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"6047:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6039:3:50"},"nodeType":"YulFunctionCall","src":"6039:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"6059:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6035:3:50"},"nodeType":"YulFunctionCall","src":"6035:27:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6006:6:50"},"nodeType":"YulFunctionCall","src":"6006:57:50"},"nodeType":"YulExpressionStatement","src":"6006:57:50"},{"nodeType":"YulAssignment","src":"6072:64:50","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"6116:6:50"},{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"6128:2:50"},{"kind":"number","nodeType":"YulLiteral","src":"6132:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6124:3:50"},"nodeType":"YulFunctionCall","src":"6124:11:50"}],"functionName":{"name":"abi_encode_struct_PreparedSetupData","nodeType":"YulIdentifier","src":"6080:35:50"},"nodeType":"YulFunctionCall","src":"6080:56:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6072:4:50"}]}]},"name":"abi_encode_tuple_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$4802_memory_ptr__to_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$4802_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5561:9:50","type":""},{"name":"value1","nodeType":"YulTypedName","src":"5572:6:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"5580:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5591:4:50","type":""}],"src":"5383:759:50"},{"body":{"nodeType":"YulBlock","src":"6179:95:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6196:1:50","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6203:3:50","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"6208:10:50","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"6199:3:50"},"nodeType":"YulFunctionCall","src":"6199:20:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6189:6:50"},"nodeType":"YulFunctionCall","src":"6189:31:50"},"nodeType":"YulExpressionStatement","src":"6189:31:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6236:1:50","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"6239:4:50","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6229:6:50"},"nodeType":"YulFunctionCall","src":"6229:15:50"},"nodeType":"YulExpressionStatement","src":"6229:15:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6260:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6263:4:50","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6253:6:50"},"nodeType":"YulFunctionCall","src":"6253:15:50"},"nodeType":"YulExpressionStatement","src":"6253:15:50"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"6147:127:50"},{"body":{"nodeType":"YulBlock","src":"6375:899:50","statements":[{"body":{"nodeType":"YulBlock","src":"6421:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6430:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6433:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6423:6:50"},"nodeType":"YulFunctionCall","src":"6423:12:50"},"nodeType":"YulExpressionStatement","src":"6423:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"6396:7:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"6405:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6392:3:50"},"nodeType":"YulFunctionCall","src":"6392:23:50"},{"kind":"number","nodeType":"YulLiteral","src":"6417:2:50","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6388:3:50"},"nodeType":"YulFunctionCall","src":"6388:32:50"},"nodeType":"YulIf","src":"6385:52:50"},{"nodeType":"YulAssignment","src":"6446:39:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6475:9:50"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"6456:18:50"},"nodeType":"YulFunctionCall","src":"6456:29:50"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"6446:6:50"}]},{"nodeType":"YulVariableDeclaration","src":"6494:46:50","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6525:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"6536:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6521:3:50"},"nodeType":"YulFunctionCall","src":"6521:18:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6508:12:50"},"nodeType":"YulFunctionCall","src":"6508:32:50"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"6498:6:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"6549:28:50","value":{"kind":"number","nodeType":"YulLiteral","src":"6559:18:50","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"6553:2:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"6604:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6613:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6616:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6606:6:50"},"nodeType":"YulFunctionCall","src":"6606:12:50"},"nodeType":"YulExpressionStatement","src":"6606:12:50"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"6592:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"6600:2:50"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6589:2:50"},"nodeType":"YulFunctionCall","src":"6589:14:50"},"nodeType":"YulIf","src":"6586:34:50"},{"nodeType":"YulVariableDeclaration","src":"6629:32:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6643:9:50"},{"name":"offset","nodeType":"YulIdentifier","src":"6654:6:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6639:3:50"},"nodeType":"YulFunctionCall","src":"6639:22:50"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"6633:2:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"6709:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6718:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6721:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6711:6:50"},"nodeType":"YulFunctionCall","src":"6711:12:50"},"nodeType":"YulExpressionStatement","src":"6711:12:50"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"6688:2:50"},{"kind":"number","nodeType":"YulLiteral","src":"6692:4:50","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6684:3:50"},"nodeType":"YulFunctionCall","src":"6684:13:50"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"6699:7:50"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6680:3:50"},"nodeType":"YulFunctionCall","src":"6680:27:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"6673:6:50"},"nodeType":"YulFunctionCall","src":"6673:35:50"},"nodeType":"YulIf","src":"6670:55:50"},{"nodeType":"YulVariableDeclaration","src":"6734:26:50","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"6757:2:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6744:12:50"},"nodeType":"YulFunctionCall","src":"6744:16:50"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"6738:2:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"6783:22:50","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"6785:16:50"},"nodeType":"YulFunctionCall","src":"6785:18:50"},"nodeType":"YulExpressionStatement","src":"6785:18:50"}]},"condition":{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"6775:2:50"},{"name":"_1","nodeType":"YulIdentifier","src":"6779:2:50"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6772:2:50"},"nodeType":"YulFunctionCall","src":"6772:10:50"},"nodeType":"YulIf","src":"6769:36:50"},{"nodeType":"YulVariableDeclaration","src":"6814:17:50","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6828:2:50","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"6824:3:50"},"nodeType":"YulFunctionCall","src":"6824:7:50"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"6818:2:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"6840:23:50","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6860:2:50","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6854:5:50"},"nodeType":"YulFunctionCall","src":"6854:9:50"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"6844:6:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"6872:71:50","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"6894:6:50"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"6918:2:50"},{"kind":"number","nodeType":"YulLiteral","src":"6922:4:50","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6914:3:50"},"nodeType":"YulFunctionCall","src":"6914:13:50"},{"name":"_4","nodeType":"YulIdentifier","src":"6929:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"6910:3:50"},"nodeType":"YulFunctionCall","src":"6910:22:50"},{"kind":"number","nodeType":"YulLiteral","src":"6934:2:50","type":"","value":"63"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6906:3:50"},"nodeType":"YulFunctionCall","src":"6906:31:50"},{"name":"_4","nodeType":"YulIdentifier","src":"6939:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"6902:3:50"},"nodeType":"YulFunctionCall","src":"6902:40:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6890:3:50"},"nodeType":"YulFunctionCall","src":"6890:53:50"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"6876:10:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"7002:22:50","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"7004:16:50"},"nodeType":"YulFunctionCall","src":"7004:18:50"},"nodeType":"YulExpressionStatement","src":"7004:18:50"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"6961:10:50"},{"name":"_1","nodeType":"YulIdentifier","src":"6973:2:50"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6958:2:50"},"nodeType":"YulFunctionCall","src":"6958:18:50"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"6981:10:50"},{"name":"memPtr","nodeType":"YulIdentifier","src":"6993:6:50"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"6978:2:50"},"nodeType":"YulFunctionCall","src":"6978:22:50"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"6955:2:50"},"nodeType":"YulFunctionCall","src":"6955:46:50"},"nodeType":"YulIf","src":"6952:72:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7040:2:50","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"7044:10:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7033:6:50"},"nodeType":"YulFunctionCall","src":"7033:22:50"},"nodeType":"YulExpressionStatement","src":"7033:22:50"},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7071:6:50"},{"name":"_3","nodeType":"YulIdentifier","src":"7079:2:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7064:6:50"},"nodeType":"YulFunctionCall","src":"7064:18:50"},"nodeType":"YulExpressionStatement","src":"7064:18:50"},{"body":{"nodeType":"YulBlock","src":"7128:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7137:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7140:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7130:6:50"},"nodeType":"YulFunctionCall","src":"7130:12:50"},"nodeType":"YulExpressionStatement","src":"7130:12:50"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"7105:2:50"},{"name":"_3","nodeType":"YulIdentifier","src":"7109:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7101:3:50"},"nodeType":"YulFunctionCall","src":"7101:11:50"},{"kind":"number","nodeType":"YulLiteral","src":"7114:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7097:3:50"},"nodeType":"YulFunctionCall","src":"7097:20:50"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"7119:7:50"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"7094:2:50"},"nodeType":"YulFunctionCall","src":"7094:33:50"},"nodeType":"YulIf","src":"7091:53:50"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7170:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"7178:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7166:3:50"},"nodeType":"YulFunctionCall","src":"7166:15:50"},{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"7187:2:50"},{"kind":"number","nodeType":"YulLiteral","src":"7191:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7183:3:50"},"nodeType":"YulFunctionCall","src":"7183:11:50"},{"name":"_3","nodeType":"YulIdentifier","src":"7196:2:50"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"7153:12:50"},"nodeType":"YulFunctionCall","src":"7153:46:50"},"nodeType":"YulExpressionStatement","src":"7153:46:50"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7223:6:50"},{"name":"_3","nodeType":"YulIdentifier","src":"7231:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7219:3:50"},"nodeType":"YulFunctionCall","src":"7219:15:50"},{"kind":"number","nodeType":"YulLiteral","src":"7236:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7215:3:50"},"nodeType":"YulFunctionCall","src":"7215:24:50"},{"kind":"number","nodeType":"YulLiteral","src":"7241:1:50","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7208:6:50"},"nodeType":"YulFunctionCall","src":"7208:35:50"},"nodeType":"YulExpressionStatement","src":"7208:35:50"},{"nodeType":"YulAssignment","src":"7252:16:50","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"7262:6:50"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"7252:6:50"}]}]},"name":"abi_decode_tuple_t_addresst_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6333:9:50","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"6344:7:50","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"6356:6:50","type":""},{"name":"value1","nodeType":"YulTypedName","src":"6364:6:50","type":""}],"src":"6279:995:50"},{"body":{"nodeType":"YulBlock","src":"7478:209:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7495:9:50"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7510:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"7518:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7506:3:50"},"nodeType":"YulFunctionCall","src":"7506:55:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7488:6:50"},"nodeType":"YulFunctionCall","src":"7488:74:50"},"nodeType":"YulExpressionStatement","src":"7488:74:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7582:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"7593:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7578:3:50"},"nodeType":"YulFunctionCall","src":"7578:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"7598:2:50","type":"","value":"64"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7571:6:50"},"nodeType":"YulFunctionCall","src":"7571:30:50"},"nodeType":"YulExpressionStatement","src":"7571:30:50"},{"nodeType":"YulAssignment","src":"7610:71:50","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"7654:6:50"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7666:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"7677:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7662:3:50"},"nodeType":"YulFunctionCall","src":"7662:18:50"}],"functionName":{"name":"abi_encode_struct_PreparedSetupData","nodeType":"YulIdentifier","src":"7618:35:50"},"nodeType":"YulFunctionCall","src":"7618:63:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7610:4:50"}]}]},"name":"abi_encode_tuple_t_address_t_struct$_PreparedSetupData_$4802_memory_ptr__to_t_address_t_struct$_PreparedSetupData_$4802_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7439:9:50","type":""},{"name":"value1","nodeType":"YulTypedName","src":"7450:6:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"7458:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7469:4:50","type":""}],"src":"7279:408:50"},{"body":{"nodeType":"YulBlock","src":"7806:125:50","statements":[{"nodeType":"YulAssignment","src":"7816:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7828:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"7839:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7824:3:50"},"nodeType":"YulFunctionCall","src":"7824:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7816:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7858:9:50"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7873:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"7881:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7869:3:50"},"nodeType":"YulFunctionCall","src":"7869:55:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7851:6:50"},"nodeType":"YulFunctionCall","src":"7851:74:50"},"nodeType":"YulExpressionStatement","src":"7851:74:50"}]},"name":"abi_encode_tuple_t_contract$_IDAO_$2538__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7775:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"7786:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7797:4:50","type":""}],"src":"7692:239:50"},{"body":{"nodeType":"YulBlock","src":"7968:95:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7985:1:50","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7992:3:50","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"7997:10:50","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"7988:3:50"},"nodeType":"YulFunctionCall","src":"7988:20:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7978:6:50"},"nodeType":"YulFunctionCall","src":"7978:31:50"},"nodeType":"YulExpressionStatement","src":"7978:31:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8025:1:50","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"8028:4:50","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8018:6:50"},"nodeType":"YulFunctionCall","src":"8018:15:50"},"nodeType":"YulExpressionStatement","src":"8018:15:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8049:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8052:4:50","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8042:6:50"},"nodeType":"YulFunctionCall","src":"8042:15:50"},"nodeType":"YulExpressionStatement","src":"8042:15:50"}]},"name":"panic_error_0x11","nodeType":"YulFunctionDefinition","src":"7936:127:50"},{"body":{"nodeType":"YulBlock","src":"8117:159:50","statements":[{"nodeType":"YulVariableDeclaration","src":"8127:52:50","value":{"kind":"number","nodeType":"YulLiteral","src":"8137:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"8131:2:50","type":""}]},{"nodeType":"YulAssignment","src":"8188:35:50","value":{"arguments":[{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"8204:1:50"},{"name":"_1","nodeType":"YulIdentifier","src":"8207:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8200:3:50"},"nodeType":"YulFunctionCall","src":"8200:10:50"},{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"8216:1:50"},{"name":"_1","nodeType":"YulIdentifier","src":"8219:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8212:3:50"},"nodeType":"YulFunctionCall","src":"8212:10:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"8196:3:50"},"nodeType":"YulFunctionCall","src":"8196:27:50"},"variableNames":[{"name":"diff","nodeType":"YulIdentifier","src":"8188:4:50"}]},{"body":{"nodeType":"YulBlock","src":"8248:22:50","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"8250:16:50"},"nodeType":"YulFunctionCall","src":"8250:18:50"},"nodeType":"YulExpressionStatement","src":"8250:18:50"}]},"condition":{"arguments":[{"name":"diff","nodeType":"YulIdentifier","src":"8238:4:50"},{"name":"_1","nodeType":"YulIdentifier","src":"8244:2:50"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"8235:2:50"},"nodeType":"YulFunctionCall","src":"8235:12:50"},"nodeType":"YulIf","src":"8232:38:50"}]},"name":"checked_sub_t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"8099:1:50","type":""},{"name":"y","nodeType":"YulTypedName","src":"8102:1:50","type":""}],"returnVariables":[{"name":"diff","nodeType":"YulTypedName","src":"8108:4:50","type":""}],"src":"8068:208:50"},{"body":{"nodeType":"YulBlock","src":"8313:95:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8330:1:50","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8337:3:50","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"8342:10:50","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"8333:3:50"},"nodeType":"YulFunctionCall","src":"8333:20:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8323:6:50"},"nodeType":"YulFunctionCall","src":"8323:31:50"},"nodeType":"YulExpressionStatement","src":"8323:31:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8370:1:50","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"8373:4:50","type":"","value":"0x32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8363:6:50"},"nodeType":"YulFunctionCall","src":"8363:15:50"},"nodeType":"YulExpressionStatement","src":"8363:15:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8394:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8397:4:50","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8387:6:50"},"nodeType":"YulFunctionCall","src":"8387:15:50"},"nodeType":"YulExpressionStatement","src":"8387:15:50"}]},"name":"panic_error_0x32","nodeType":"YulFunctionDefinition","src":"8281:127:50"},{"body":{"nodeType":"YulBlock","src":"8460:187:50","statements":[{"nodeType":"YulVariableDeclaration","src":"8470:52:50","value":{"kind":"number","nodeType":"YulLiteral","src":"8480:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"8474:2:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"8531:29:50","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8550:5:50"},{"name":"_1","nodeType":"YulIdentifier","src":"8557:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8546:3:50"},"nodeType":"YulFunctionCall","src":"8546:14:50"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"8535:7:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"8588:22:50","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"8590:16:50"},"nodeType":"YulFunctionCall","src":"8590:18:50"},"nodeType":"YulExpressionStatement","src":"8590:18:50"}]},"condition":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"8575:7:50"},{"name":"_1","nodeType":"YulIdentifier","src":"8584:2:50"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"8572:2:50"},"nodeType":"YulFunctionCall","src":"8572:15:50"},"nodeType":"YulIf","src":"8569:41:50"},{"nodeType":"YulAssignment","src":"8619:22:50","value":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"8630:7:50"},{"kind":"number","nodeType":"YulLiteral","src":"8639:1:50","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8626:3:50"},"nodeType":"YulFunctionCall","src":"8626:15:50"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"8619:3:50"}]}]},"name":"increment_t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"8442:5:50","type":""}],"returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"8452:3:50","type":""}],"src":"8413:234:50"}]},"contents":"{\n { }\n function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n if iszero(eq(value, and(value, shl(224, 0xffffffff)))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 96)\n let pos := headStart\n pos := headStart\n let srcPtr := value0\n let i := 0\n for { } lt(i, 0x03) { i := add(i, 1) }\n {\n mstore(pos, and(mload(srcPtr), 0xff))\n let _1 := 0x20\n pos := add(pos, _1)\n srcPtr := add(srcPtr, _1)\n }\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_decode_address(offset) -> value\n {\n value := calldataload(offset)\n if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n }\n function abi_decode_struct_SetupPayload_calldata(offset, end) -> value\n {\n if slt(sub(end, offset), 96) { revert(0, 0) }\n value := offset\n }\n function abi_decode_tuple_t_addresst_struct$_SetupPayload_$4810_calldata_ptr(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n let offset := calldataload(add(headStart, 32))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n value1 := abi_decode_struct_SetupPayload_calldata(add(headStart, offset), dataEnd)\n }\n function panic_error_0x21()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x21)\n revert(0, 0x24)\n }\n function abi_encodeUpdatedPos_struct_MultiTargetPermission(value0, pos) -> updatedPos\n {\n let _1 := mload(value0)\n if iszero(lt(_1, 3))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x21)\n revert(0, 0x24)\n }\n mstore(pos, _1)\n let memberValue0 := mload(add(value0, 0x20))\n let _2 := 0xffffffffffffffffffffffffffffffffffffffff\n mstore(add(pos, 0x20), and(memberValue0, _2))\n mstore(add(pos, 0x40), and(mload(add(value0, 0x40)), _2))\n mstore(add(pos, 0x60), and(mload(add(value0, 0x60)), _2))\n mstore(add(pos, 0x80), mload(add(value0, 0x80)))\n updatedPos := add(pos, 0xa0)\n }\n function abi_encode_tuple_t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n let _1 := 32\n let tail_1 := add(headStart, _1)\n mstore(headStart, _1)\n let pos := tail_1\n let length := mload(value0)\n mstore(tail_1, length)\n pos := add(headStart, 64)\n let srcPtr := add(value0, _1)\n let i := 0\n for { } lt(i, length) { i := add(i, 1) }\n {\n pos := abi_encodeUpdatedPos_struct_MultiTargetPermission(mload(srcPtr), pos)\n srcPtr := add(srcPtr, _1)\n }\n tail := pos\n }\n function abi_decode_tuple_t_addresst_uint16t_struct$_SetupPayload_$4810_calldata_ptr(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n let value := calldataload(add(headStart, 32))\n if iszero(eq(value, and(value, 0xffff))) { revert(0, 0) }\n value1 := value\n let offset := calldataload(add(headStart, 64))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n value2 := abi_decode_struct_SetupPayload_calldata(add(headStart, offset), dataEnd)\n }\n function abi_encode_struct_PreparedSetupData(value, pos) -> end\n {\n let tail := add(pos, 0x40)\n let memberValue0 := mload(value)\n mstore(pos, 0x40)\n let pos_1 := tail\n let length := mload(memberValue0)\n mstore(tail, length)\n pos_1 := add(pos, 96)\n let _1 := 0x20\n let srcPtr := add(memberValue0, _1)\n let i := 0\n for { } lt(i, length) { i := add(i, 1) }\n {\n mstore(pos_1, and(mload(srcPtr), 0xffffffffffffffffffffffffffffffffffffffff))\n pos_1 := add(pos_1, _1)\n srcPtr := add(srcPtr, _1)\n }\n let memberValue0_1 := mload(add(value, _1))\n mstore(add(pos, _1), sub(pos_1, pos))\n let pos_2 := pos_1\n let length_1 := mload(memberValue0_1)\n mstore(pos_1, length_1)\n pos_2 := add(pos_1, _1)\n let srcPtr_1 := add(memberValue0_1, _1)\n let i_1 := 0\n for { } lt(i_1, length_1) { i_1 := add(i_1, 1) }\n {\n pos_2 := abi_encodeUpdatedPos_struct_MultiTargetPermission(mload(srcPtr_1), pos_2)\n srcPtr_1 := add(srcPtr_1, _1)\n }\n end := pos_2\n }\n function abi_encode_tuple_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$4802_memory_ptr__to_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$4802_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n {\n mstore(headStart, 64)\n let length := mload(value0)\n mstore(add(headStart, 64), length)\n let i := 0\n for { } lt(i, length) { i := add(i, 0x20) }\n {\n mstore(add(add(headStart, i), 96), mload(add(add(value0, i), 0x20)))\n }\n mstore(add(add(headStart, length), 96), 0)\n let _1 := add(headStart, and(add(length, 31), not(31)))\n mstore(add(headStart, 0x20), add(sub(_1, headStart), 96))\n tail := abi_encode_struct_PreparedSetupData(value1, add(_1, 96))\n }\n function panic_error_0x41()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function abi_decode_tuple_t_addresst_bytes_memory_ptr(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n let offset := calldataload(add(headStart, 32))\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n let _2 := add(headStart, offset)\n if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n let _3 := calldataload(_2)\n if gt(_3, _1) { panic_error_0x41() }\n let _4 := not(31)\n let memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n mstore(memPtr, _3)\n if gt(add(add(_2, _3), 32), dataEnd) { revert(0, 0) }\n calldatacopy(add(memPtr, 32), add(_2, 32), _3)\n mstore(add(add(memPtr, _3), 32), 0)\n value1 := memPtr\n }\n function abi_encode_tuple_t_address_t_struct$_PreparedSetupData_$4802_memory_ptr__to_t_address_t_struct$_PreparedSetupData_$4802_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n {\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n mstore(add(headStart, 32), 64)\n tail := abi_encode_struct_PreparedSetupData(value1, add(headStart, 64))\n }\n function abi_encode_tuple_t_contract$_IDAO_$2538__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function panic_error_0x11()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n function checked_sub_t_uint160(x, y) -> diff\n {\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n diff := sub(and(x, _1), and(y, _1))\n if gt(diff, _1) { panic_error_0x11() }\n }\n function panic_error_0x32()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n function increment_t_uint160(value) -> ret\n {\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n let value_1 := and(value, _1)\n if eq(value_1, _1) { panic_error_0x11() }\n ret := add(value_1, 1)\n }\n}","id":50,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{"4879":[{"length":32,"start":193}]},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100725760003560e01c80639cb0a124116100505780639cb0a124146100eb578063a8a9c29e1461010b578063f10832f11461012c57600080fd5b806301ffc9a7146100775780632ae9c6001461009f5780635c60da1b146100b4575b600080fd5b61008a610085366004610501565b61014d565b60405190151581526020015b60405180910390f35b6100a761019e565b604051610096919061052b565b6040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152602001610096565b6100fe6100f936600461058d565b6101c8565b6040516100969190610657565b61011e6101193660046106a0565b6101de565b60405161009692919061079a565b61013f61013a366004610815565b610216565b6040516100969291906108d7565b60006001600160e01b0319821663099718b560e41b148061017d57506001600160e01b03198216621574e360e91b145b8061019857506301ffc9a760e01b6001600160e01b03198316145b92915050565b6101a66104d6565b5060408051606081018252600181526004602082015260009181019190915290565b60606101d76000600180610298565b9392505050565b60606101fd604051806040016040528060608152602001606081525090565b60405163a112810160e01b815260040160405180910390fd5b6000610235604051806040016040528060608152602001606081525090565b83604051610242906104f4565b6001600160a01b039091168152602001604051809103906000f08015801561026e573d6000803e3d6000fd5b50915061027b600161041d565b815261028a6000600181610298565b602082015290939092509050565b6060826001600160a01b0316846001600160a01b031611156102cd57604051633a4013cd60e21b815260040160405180910390fd5b6102d78484610917565b6001600160a01b031667ffffffffffffffff8111156102f8576102f86107ff565b60405190808252806020026020018201604052801561035157816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282526000199092019101816103165790505b509050835b836001600160a01b0316816001600160a01b03161015610415576040518060a0016040528084600281111561038d5761038d6105db565b81526001600160a01b038316602082018190526040820152600060608201527fa280eec51ab8e1bc4b6b0c1b7f1bde785761b787a49db404e3e9338ed9b016ef608090910152826103de8784610917565b6001600160a01b0316815181106103f7576103f761093e565b6020026020010181905250808061040d90610954565b915050610356565b509392505050565b6060816001600160a01b031667ffffffffffffffff811115610441576104416107ff565b60405190808252806020026020018201604052801561046a578160200160208202803683370190505b50905060005b826001600160a01b0316816001600160a01b031610156104d0578082826001600160a01b0316815181106104a6576104a661093e565b6001600160a01b0390921660209283029190910190910152806104c881610954565b915050610470565b50919050565b60405180606001604052806003906020820280368337509192915050565b6103998061097b83390190565b60006020828403121561051357600080fd5b81356001600160e01b0319811681146101d757600080fd5b60608101818360005b600381101561055657815160ff16835260209283019290910190600101610534565b50505092915050565b80356001600160a01b038116811461057657600080fd5b919050565b6000606082840312156104d057600080fd5b600080604083850312156105a057600080fd5b6105a98361055f565b9150602083013567ffffffffffffffff8111156105c557600080fd5b6105d18582860161057b565b9150509250929050565b634e487b7160e01b600052602160045260246000fd5b600081516003811061061357634e487b7160e01b600052602160045260246000fd5b8352506020818101516001600160a01b0390811691840191909152604080830151821690840152606080830151909116908301526080908101519082015260a00190565b6020808252825182820181905260009190848201906040850190845b81811015610694576106868385516105f1565b938501939250600101610673565b50909695505050505050565b6000806000606084860312156106b557600080fd5b6106be8461055f565b9250602084013561ffff811681146106d557600080fd5b9150604084013567ffffffffffffffff8111156106f157600080fd5b6106fd8682870161057b565b9150509250925092565b805160408084528151908401819052600091602091908201906060860190845b8181101561074c5783516001600160a01b031683529284019291840191600101610727565b50508483015186820387850152805180835290840192506000918401905b8083101561078f5761077d8285516105f1565b9150848401935060018301925061076a565b509695505050505050565b604081526000835180604084015260005b818110156107c857602081870181015160608684010152016107ab565b50600060608285010152601f19601f8201168301905060608382030160208401526107f66060820185610707565b95945050505050565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561082857600080fd5b6108318361055f565b9150602083013567ffffffffffffffff8082111561084e57600080fd5b818501915085601f83011261086257600080fd5b813581811115610874576108746107ff565b604051601f8201601f19908116603f0116810190838211818310171561089c5761089c6107ff565b816040528281528860208487010111156108b557600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6001600160a01b03831681526040602082015260006108f96040830184610707565b949350505050565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0382811682821603908082111561093757610937610901565b5092915050565b634e487b7160e01b600052603260045260246000fd5b60006001600160a01b0380831681810361097057610970610901565b600101939250505056fe60a060405234801561001057600080fd5b5060405161039938038061039983398101604081905261002f91610044565b6001600160a01b031660805260018055610074565b60006020828403121561005657600080fd5b81516001600160a01b038116811461006d57600080fd5b9392505050565b60805161030b61008e600039600060c1015261030b6000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806341de68301161005b57806341de6830146100f95780636accab8c14610108578063776d1a011461011f578063d4b839921461013457600080fd5b806301ffc9a7146100825780632ae9c600146100aa5780634162169f146100bf575b600080fd5b610095610090366004610248565b610147565b60405190151581526020015b60405180910390f35b6100b2610198565b6040516100a19190610279565b7f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020016100a1565b60026040516100a191906102ad565b61011160015481565b6040519081526020016100a1565b61013261012d3660046102d5565b6101c2565b005b6000546100e1906001600160a01b031681565b60006001600160e01b0319821663041de68360e41b148061017757506001600160e01b03198216621574e360e91b145b8061019257506301ffc9a760e01b6001600160e01b03198316145b92915050565b6101a061022a565b5060408051606081018252600181526004602082015260009181019190915290565b600080546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d69190a35050565b60405180606001604052806003906020820280368337509192915050565b60006020828403121561025a57600080fd5b81356001600160e01b03198116811461027257600080fd5b9392505050565b60608101818360005b60038110156102a457815160ff16835260209283019290910190600101610282565b50505092915050565b60208101600383106102cf57634e487b7160e01b600052602160045260246000fd5b91905290565b6000602082840312156102e757600080fd5b81356001600160a01b038116811461027257600080fdfea164736f6c6343000811000aa164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x72 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9CB0A124 GT PUSH2 0x50 JUMPI DUP1 PUSH4 0x9CB0A124 EQ PUSH2 0xEB JUMPI DUP1 PUSH4 0xA8A9C29E EQ PUSH2 0x10B JUMPI DUP1 PUSH4 0xF10832F1 EQ PUSH2 0x12C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x77 JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0x9F JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0xB4 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8A PUSH2 0x85 CALLDATASIZE PUSH1 0x4 PUSH2 0x501 JUMP JUMPDEST PUSH2 0x14D JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xA7 PUSH2 0x19E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x96 SWAP2 SWAP1 PUSH2 0x52B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x96 JUMP JUMPDEST PUSH2 0xFE PUSH2 0xF9 CALLDATASIZE PUSH1 0x4 PUSH2 0x58D JUMP JUMPDEST PUSH2 0x1C8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x96 SWAP2 SWAP1 PUSH2 0x657 JUMP JUMPDEST PUSH2 0x11E PUSH2 0x119 CALLDATASIZE PUSH1 0x4 PUSH2 0x6A0 JUMP JUMPDEST PUSH2 0x1DE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x96 SWAP3 SWAP2 SWAP1 PUSH2 0x79A JUMP JUMPDEST PUSH2 0x13F PUSH2 0x13A CALLDATASIZE PUSH1 0x4 PUSH2 0x815 JUMP JUMPDEST PUSH2 0x216 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x96 SWAP3 SWAP2 SWAP1 PUSH2 0x8D7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x99718B5 PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x17D JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x198 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1A6 PUSH2 0x4D6 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1D7 PUSH1 0x0 PUSH1 0x1 DUP1 PUSH2 0x298 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1FD PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xA1128101 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x235 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST DUP4 PUSH1 0x40 MLOAD PUSH2 0x242 SWAP1 PUSH2 0x4F4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH2 0x26E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP SWAP2 POP PUSH2 0x27B PUSH1 0x1 PUSH2 0x41D JUMP JUMPDEST DUP2 MSTORE PUSH2 0x28A PUSH1 0x0 PUSH1 0x1 DUP2 PUSH2 0x298 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE SWAP1 SWAP4 SWAP1 SWAP3 POP SWAP1 POP JUMP JUMPDEST PUSH1 0x60 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH2 0x2CD JUMPI PUSH1 0x40 MLOAD PUSH4 0x3A4013CD PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2D7 DUP5 DUP5 PUSH2 0x917 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2F8 JUMPI PUSH2 0x2F8 PUSH2 0x7FF JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x351 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD DUP3 SWAP1 MSTORE SWAP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 DUP3 ADD MSTORE DUP3 MSTORE PUSH1 0x0 NOT SWAP1 SWAP3 ADD SWAP2 ADD DUP2 PUSH2 0x316 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP DUP4 JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT ISZERO PUSH2 0x415 JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 DUP5 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x38D JUMPI PUSH2 0x38D PUSH2 0x5DB JUMP JUMPDEST DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x60 DUP3 ADD MSTORE PUSH32 0xA280EEC51AB8E1BC4B6B0C1B7F1BDE785761B787A49DB404E3E9338ED9B016EF PUSH1 0x80 SWAP1 SWAP2 ADD MSTORE DUP3 PUSH2 0x3DE DUP8 DUP5 PUSH2 0x917 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MLOAD DUP2 LT PUSH2 0x3F7 JUMPI PUSH2 0x3F7 PUSH2 0x93E JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP DUP1 DUP1 PUSH2 0x40D SWAP1 PUSH2 0x954 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x356 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x441 JUMPI PUSH2 0x441 PUSH2 0x7FF JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x46A JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT ISZERO PUSH2 0x4D0 JUMPI DUP1 DUP3 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MLOAD DUP2 LT PUSH2 0x4A6 JUMPI PUSH2 0x4A6 PUSH2 0x93E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE DUP1 PUSH2 0x4C8 DUP2 PUSH2 0x954 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x470 JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x399 DUP1 PUSH2 0x97B DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x513 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x1D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0x556 JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x534 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x576 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x5A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5A9 DUP4 PUSH2 0x55F JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x5C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5D1 DUP6 DUP3 DUP7 ADD PUSH2 0x57B JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP2 MLOAD PUSH1 0x3 DUP2 LT PUSH2 0x613 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP4 MSTORE POP PUSH1 0x20 DUP2 DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP1 DUP4 ADD MLOAD DUP3 AND SWAP1 DUP5 ADD MSTORE PUSH1 0x60 DUP1 DUP4 ADD MLOAD SWAP1 SWAP2 AND SWAP1 DUP4 ADD MSTORE PUSH1 0x80 SWAP1 DUP2 ADD MLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x694 JUMPI PUSH2 0x686 DUP4 DUP6 MLOAD PUSH2 0x5F1 JUMP JUMPDEST SWAP4 DUP6 ADD SWAP4 SWAP3 POP PUSH1 0x1 ADD PUSH2 0x673 JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x6B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x6BE DUP5 PUSH2 0x55F JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH2 0x6D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x6F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x6FD DUP7 DUP3 DUP8 ADD PUSH2 0x57B JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x40 DUP1 DUP5 MSTORE DUP2 MLOAD SWAP1 DUP5 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x20 SWAP2 SWAP1 DUP3 ADD SWAP1 PUSH1 0x60 DUP7 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x74C JUMPI DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x727 JUMP JUMPDEST POP POP DUP5 DUP4 ADD MLOAD DUP7 DUP3 SUB DUP8 DUP6 ADD MSTORE DUP1 MLOAD DUP1 DUP4 MSTORE SWAP1 DUP5 ADD SWAP3 POP PUSH1 0x0 SWAP2 DUP5 ADD SWAP1 JUMPDEST DUP1 DUP4 LT ISZERO PUSH2 0x78F JUMPI PUSH2 0x77D DUP3 DUP6 MLOAD PUSH2 0x5F1 JUMP JUMPDEST SWAP2 POP DUP5 DUP5 ADD SWAP4 POP PUSH1 0x1 DUP4 ADD SWAP3 POP PUSH2 0x76A JUMP JUMPDEST POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 DUP4 MLOAD DUP1 PUSH1 0x40 DUP5 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x7C8 JUMPI PUSH1 0x20 DUP2 DUP8 ADD DUP2 ADD MLOAD PUSH1 0x60 DUP7 DUP5 ADD ADD MSTORE ADD PUSH2 0x7AB JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x60 DUP3 DUP6 ADD ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP4 ADD SWAP1 POP PUSH1 0x60 DUP4 DUP3 SUB ADD PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x7F6 PUSH1 0x60 DUP3 ADD DUP6 PUSH2 0x707 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x828 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x831 DUP4 PUSH2 0x55F JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x84E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x862 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x874 JUMPI PUSH2 0x874 PUSH2 0x7FF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x89C JUMPI PUSH2 0x89C PUSH2 0x7FF JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x8B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0x8F9 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x707 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND DUP3 DUP3 AND SUB SWAP1 DUP1 DUP3 GT ISZERO PUSH2 0x937 JUMPI PUSH2 0x937 PUSH2 0x901 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND DUP2 DUP2 SUB PUSH2 0x970 JUMPI PUSH2 0x970 PUSH2 0x901 JUMP JUMPDEST PUSH1 0x1 ADD SWAP4 SWAP3 POP POP POP JUMP INVALID PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x399 CODESIZE SUB DUP1 PUSH2 0x399 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0x44 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x80 MSTORE PUSH1 0x1 DUP1 SSTORE PUSH2 0x74 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x56 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x6D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH2 0x30B PUSH2 0x8E PUSH1 0x0 CODECOPY PUSH1 0x0 PUSH1 0xC1 ADD MSTORE PUSH2 0x30B PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x7D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x41DE6830 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x41DE6830 EQ PUSH2 0xF9 JUMPI DUP1 PUSH4 0x6ACCAB8C EQ PUSH2 0x108 JUMPI DUP1 PUSH4 0x776D1A01 EQ PUSH2 0x11F JUMPI DUP1 PUSH4 0xD4B83992 EQ PUSH2 0x134 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x82 JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0xAA JUMPI DUP1 PUSH4 0x4162169F EQ PUSH2 0xBF JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x95 PUSH2 0x90 CALLDATASIZE PUSH1 0x4 PUSH2 0x248 JUMP JUMPDEST PUSH2 0x147 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xB2 PUSH2 0x198 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA1 SWAP2 SWAP1 PUSH2 0x279 JUMP JUMPDEST PUSH32 0x0 JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xA1 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x40 MLOAD PUSH2 0xA1 SWAP2 SWAP1 PUSH2 0x2AD JUMP JUMPDEST PUSH2 0x111 PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xA1 JUMP JUMPDEST PUSH2 0x132 PUSH2 0x12D CALLDATASIZE PUSH1 0x4 PUSH2 0x2D5 JUMP JUMPDEST PUSH2 0x1C2 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0xE1 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x41DE683 PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x177 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x192 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1A0 PUSH2 0x22A JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 DUP4 AND DUP2 OR DUP5 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 DUP4 SWAP2 PUSH32 0x90CC2F570A6EB594B1580EA3E41247D2D73A55281889E86BD4EC2FC29C7E62D6 SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x25A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x272 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0x2A4 JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x282 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH1 0x3 DUP4 LT PUSH2 0x2CF JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 SWAP1 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x272 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"624:892:29:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2112:293:45;;;;;;:::i;:::-;;:::i;:::-;;;470:14:50;;463:22;445:41;;433:2;418:18;2112:293:45;;;;;;;;631:98:49;;;:::i;:::-;;;;;;;:::i;2444:94:45:-;;;-1:-1:-1;;;;;2517:14:45;1167:55:50;1149:74;;1137:2;1122:18;2444:94:45;1003:226:50;1224:290:29;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1639:265:45:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;792:393:29:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;2112:293:45:-;2198:4;-1:-1:-1;;;;;;2233:46:45;;-1:-1:-1;;;2233:46:45;;:112;;-1:-1:-1;;;;;;;2295:50:45;;-1:-1:-1;;;2295:50:45;2233:112;:165;;;-1:-1:-1;;;;;;;;;;937:40:23;;;2361:37:45;2214:184;2112:293;-1:-1:-1;;2112:293:45:o;631:98:49:-;679:15;;:::i;:::-;-1:-1:-1;706:16:49;;;;;;;;714:1;706:16;;717:1;706:16;;;;-1:-1:-1;706:16:49;;;;;;;;631:98::o;1224:290:29:-;1346:56;1454:53;1470:1;1473;1476:30;1454:15;:53::i;:::-;1440:67;1224:290;-1:-1:-1;;;1224:290:29:o;1639:265:45:-;1780:12;1794:24;-1:-1:-1;;;;;;;;;;;;;;;;;;;1794:24:45;1875:22;;-1:-1:-1;;;1875:22:45;;;;;;;;;;;792:393:29;895:14;911:42;-1:-1:-1;;;;;;;;;;;;;;;;;;;911:42:29;1025:4;999:32;;;;;:::i;:::-;-1:-1:-1;;;;;1167:55:50;;;1149:74;;1137:2;1122:18;999:32:29;;;;;;;;;;;;;;;;;;;;;;;982:50;;1070:14;1082:1;1070:11;:14::i;:::-;1042:42;;1126:52;1042:25;1145:1;1042:25;1126:15;:52::i;:::-;1094:29;;;:84;792:393;;1094:17;;-1:-1:-1;792:393:29;-1:-1:-1;792:393:29:o;580:666:30:-;699:56;780:8;-1:-1:-1;;;;;767:21:30;:10;-1:-1:-1;;;;;767:21:30;;763:53;;;797:19;;-1:-1:-1;;;797:19:30;;;;;;;;;;;763:53;879:21;890:10;879:8;:21;:::i;:::-;-1:-1:-1;;;;;837:64:30;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;837:64:30;;-1:-1:-1;;837:64:30;;;;;;;;;;;-1:-1:-1;823:78:30;-1:-1:-1;925:10:30;908:336;941:8;-1:-1:-1;;;;;937:12:30;:1;-1:-1:-1;;;;;937:12:30;;908:336;;;996:241;;;;;;;;1057:2;996:241;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;996:241:30;;;;;;;;;;;;-1:-1:-1;996:241:30;;;;1198:28;996:241;;;;;966:11;978:14;982:10;1088:1;978:14;:::i;:::-;-1:-1:-1;;;;;966:27:30;;;;;;;;;:::i;:::-;;;;;;:271;;;;951:3;;;;;:::i;:::-;;;;908:336;;;;580:666;;;;;:::o;1529:191::-;1577:24;1633:3;-1:-1:-1;;;;;1619:18:30;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1619:18:30;;1609:28;;1649:9;1644:74;1668:3;-1:-1:-1;;;;;1664:7:30;:1;-1:-1:-1;;;;;1664:7:30;;1644:74;;;1709:1;1688:7;1696:1;-1:-1:-1;;;;;1688:10:30;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1688:23:30;;;:10;;;;;;;;;;;:23;1673:3;;;;:::i;:::-;;;;1644:74;;;;1529:191;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::o;14:286:50:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:50;;209:43;;199:71;;266:1;263;256:12;497:501;673:2;658:18;;662:9;753:6;631:4;787:205;801:4;798:1;795:11;787:205;;;864:13;;879:4;860:24;848:37;;908:4;932:12;;;;967:15;;;;821:1;814:9;787:205;;;791:3;;;497:501;;;;:::o;1234:196::-;1302:20;;-1:-1:-1;;;;;1351:54:50;;1341:65;;1331:93;;1420:1;1417;1410:12;1331:93;1234:196;;;:::o;1435:160::-;1500:5;1545:2;1536:6;1531:3;1527:16;1523:25;1520:45;;;1561:1;1558;1551:12;1600:440;1700:6;1708;1761:2;1749:9;1740:7;1736:23;1732:32;1729:52;;;1777:1;1774;1767:12;1729:52;1800:29;1819:9;1800:29;:::i;:::-;1790:39;;1880:2;1869:9;1865:18;1852:32;1907:18;1899:6;1896:30;1893:50;;;1939:1;1936;1929:12;1893:50;1962:72;2026:7;2017:6;2006:9;2002:22;1962:72;:::i;:::-;1952:82;;;1600:440;;;;;:::o;2045:127::-;2106:10;2101:3;2097:20;2094:1;2087:31;2137:4;2134:1;2127:15;2161:4;2158:1;2151:15;2177:696;2252:10;2293:6;2287:13;2326:1;2322:2;2319:9;2309:140;;2371:10;2366:3;2362:20;2359:1;2352:31;2406:4;2403:1;2396:15;2434:4;2431:1;2424:15;2309:140;2458:15;;-1:-1:-1;2520:4:50;2508:17;;;2502:24;-1:-1:-1;;;;;2619:21:50;;;2603:14;;;2596:45;;;;2695:4;2683:17;;;2677:24;2673:33;;2657:14;;;2650:57;2761:4;2749:17;;;2743:24;2739:33;;;2723:14;;;2716:57;2823:4;2811:17;;;2805:24;2789:14;;;2782:48;2862:4;2853:14;;2177:696::o;2878:728::-;3127:2;3179:21;;;3249:13;;3152:18;;;3271:22;;;3098:4;;3127:2;3350:15;;;;3324:2;3309:18;;;3098:4;3393:187;3407:6;3404:1;3401:13;3393:187;;;3463:69;3528:3;3519:6;3513:13;3463:69;:::i;:::-;3555:15;;;;3456:76;-1:-1:-1;3429:1:50;3422:9;3393:187;;;-1:-1:-1;3597:3:50;;2878:728;-1:-1:-1;;;;;;2878:728:50:o;3611:600::-;3719:6;3727;3735;3788:2;3776:9;3767:7;3763:23;3759:32;3756:52;;;3804:1;3801;3794:12;3756:52;3827:29;3846:9;3827:29;:::i;:::-;3817:39;;3906:2;3895:9;3891:18;3878:32;3950:6;3943:5;3939:18;3932:5;3929:29;3919:57;;3972:1;3969;3962:12;3919:57;3995:5;-1:-1:-1;4051:2:50;4036:18;;4023:32;4078:18;4067:30;;4064:50;;;4110:1;4107;4100:12;4064:50;4133:72;4197:7;4188:6;4177:9;4173:22;4133:72;:::i;:::-;4123:82;;;3611:600;;;;;:::o;4216:1162::-;4349:12;;4315:4;4370:17;;;4436:19;;4306:14;;;4464:20;;;4276:3;;4533:4;;4560:21;;;;4511:2;4502:12;;;4276:3;4609:224;4623:6;4620:1;4617:13;4609:224;;;4690:13;;-1:-1:-1;;;;;4686:62:50;4672:77;;4808:15;;;;4771:14;;;;4645:1;4638:9;4609:224;;;-1:-1:-1;;4870:14:50;;;4864:21;4915:15;;;4901:12;;;4894:37;4983:21;;5013:23;;;5093;;;;-1:-1:-1;5136:1:50;;5054:14;;;5146:205;5162:8;5157:3;5154:17;5146:205;;;5226:73;5293:5;5282:8;5276:15;5226:73;:::i;:::-;5217:82;;5338:2;5328:8;5324:17;5312:29;;5190:1;5185:3;5181:11;5174:18;;5146:205;;;-1:-1:-1;5367:5:50;4216:1162;-1:-1:-1;;;;;;4216:1162:50:o;5383:759::-;5628:2;5617:9;5610:21;5591:4;5660:6;5654:13;5703:6;5698:2;5687:9;5683:18;5676:34;5728:1;5738:144;5752:6;5749:1;5746:13;5738:144;;;5865:4;5849:14;;;5845:25;;5839:32;5834:2;5815:17;;;5811:26;5804:68;5767:12;5738:144;;;5742:3;5931:1;5926:2;5917:6;5906:9;5902:22;5898:31;5891:42;5992:2;5988:7;5983:2;5975:6;5971:15;5967:29;5956:9;5952:45;5942:55;;6059:2;6047:9;6043:2;6039:18;6035:27;6028:4;6017:9;6013:20;6006:57;6080:56;6132:2;6128;6124:11;6116:6;6080:56;:::i;:::-;6072:64;5383:759;-1:-1:-1;;;;;5383:759:50:o;6147:127::-;6208:10;6203:3;6199:20;6196:1;6189:31;6239:4;6236:1;6229:15;6263:4;6260:1;6253:15;6279:995;6356:6;6364;6417:2;6405:9;6396:7;6392:23;6388:32;6385:52;;;6433:1;6430;6423:12;6385:52;6456:29;6475:9;6456:29;:::i;:::-;6446:39;;6536:2;6525:9;6521:18;6508:32;6559:18;6600:2;6592:6;6589:14;6586:34;;;6616:1;6613;6606:12;6586:34;6654:6;6643:9;6639:22;6629:32;;6699:7;6692:4;6688:2;6684:13;6680:27;6670:55;;6721:1;6718;6711:12;6670:55;6757:2;6744:16;6779:2;6775;6772:10;6769:36;;;6785:18;;:::i;:::-;6860:2;6854:9;6828:2;6914:13;;-1:-1:-1;;6910:22:50;;;6934:2;6906:31;6902:40;6890:53;;;6958:18;;;6978:22;;;6955:46;6952:72;;;7004:18;;:::i;:::-;7044:10;7040:2;7033:22;7079:2;7071:6;7064:18;7119:7;7114:2;7109;7105;7101:11;7097:20;7094:33;7091:53;;;7140:1;7137;7130:12;7091:53;7196:2;7191;7187;7183:11;7178:2;7170:6;7166:15;7153:46;7241:1;7236:2;7231;7223:6;7219:15;7215:24;7208:35;7262:6;7252:16;;;;;;;6279:995;;;;;:::o;7279:408::-;-1:-1:-1;;;;;7510:6:50;7506:55;7495:9;7488:74;7598:2;7593;7582:9;7578:18;7571:30;7469:4;7618:63;7677:2;7666:9;7662:18;7654:6;7618:63;:::i;:::-;7610:71;7279:408;-1:-1:-1;;;;7279:408:50:o;7936:127::-;7997:10;7992:3;7988:20;7985:1;7978:31;8028:4;8025:1;8018:15;8052:4;8049:1;8042:15;8068:208;-1:-1:-1;;;;;8212:10:50;;;8200;;;8196:27;;8235:12;;;8232:38;;;8250:18;;:::i;:::-;8232:38;8068:208;;;;:::o;8281:127::-;8342:10;8337:3;8333:20;8330:1;8323:31;8373:4;8370:1;8363:15;8397:4;8394:1;8387:15;8413:234;8452:3;-1:-1:-1;;;;;8557:2:50;8550:5;8546:14;8584:2;8575:7;8572:15;8569:41;;8590:18;;:::i;:::-;8639:1;8626:15;;8413:234;-1:-1:-1;;;8413:234:50:o"},"gasEstimates":{"creation":{"codeDepositCost":"672000","executionCost":"infinite","totalCost":"infinite"},"external":{"implementation()":"infinite","prepareInstallation(address,bytes)":"infinite","prepareUninstallation(address,(address,address[],bytes))":"infinite","prepareUpdate(address,uint16,(address,address[],bytes))":"624","protocolVersion()":"infinite","supportsInterface(bytes4)":"482"}},"methodIdentifiers":{"implementation()":"5c60da1b","prepareInstallation(address,bytes)":"f10832f1","prepareUninstallation(address,(address,address[],bytes))":"9cb0a124","prepareUpdate(address,uint16,(address,address[],bytes))":"a8a9c29e","protocolVersion()":"2ae9c600","supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ConflictingValues\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NonUpgradeablePlugin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_dao\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"prepareInstallation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"plugin\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address[]\",\"name\":\"helpers\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"enum PermissionLib.Operation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"condition\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PermissionLib.MultiTargetPermission[]\",\"name\":\"permissions\",\"type\":\"tuple[]\"}],\"internalType\":\"struct IPluginSetup.PreparedSetupData\",\"name\":\"preparedSetupData\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_dao\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"plugin\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"currentHelpers\",\"type\":\"address[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IPluginSetup.SetupPayload\",\"name\":\"_payload\",\"type\":\"tuple\"}],\"name\":\"prepareUninstallation\",\"outputs\":[{\"components\":[{\"internalType\":\"enum PermissionLib.Operation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"condition\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PermissionLib.MultiTargetPermission[]\",\"name\":\"permissions\",\"type\":\"tuple[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_dao\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"_fromBuild\",\"type\":\"uint16\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"plugin\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"currentHelpers\",\"type\":\"address[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IPluginSetup.SetupPayload\",\"name\":\"_payload\",\"type\":\"tuple\"}],\"name\":\"prepareUpdate\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address[]\",\"name\":\"helpers\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"enum PermissionLib.Operation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"condition\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PermissionLib.MultiTargetPermission[]\",\"name\":\"permissions\",\"type\":\"tuple[]\"}],\"internalType\":\"struct IPluginSetup.PreparedSetupData\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"protocolVersion\",\"outputs\":[{\"internalType\":\"uint8[3]\",\"name\":\"\",\"type\":\"uint8[3]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"DO NOT USE IN PRODUCTION!\",\"kind\":\"dev\",\"methods\":{\"implementation()\":{\"details\":\"The implementation can be instantiated via the `new` keyword, cloned via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)), or proxied via the UUPS proxy pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\",\"returns\":{\"_0\":\"The address of the plugin implementation contract.\"}},\"prepareInstallation(address,bytes)\":{\"params\":{\"_dao\":\"The address of the installing DAO.\",\"_data\":\"The bytes-encoded data containing the input parameters for the installation as specified in the plugin's build metadata JSON file.\"},\"returns\":{\"plugin\":\"The address of the `Plugin` contract being prepared for installation.\",\"preparedSetupData\":\"The deployed plugin's relevant data which consists of helpers and permissions.\"}},\"prepareUninstallation(address,(address,address[],bytes))\":{\"params\":{\"_dao\":\"The address of the uninstalling DAO.\",\"_payload\":\"The relevant data necessary for the `prepareUninstallation`. See above.\"},\"returns\":{\"permissions\":\"The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the uninstalling DAO.\"}},\"prepareUpdate(address,uint16,(address,address[],bytes))\":{\"details\":\"Since the underlying plugin is non-upgradeable, this non-virtual function must always revert.\",\"params\":{\"_dao\":\"The address of the updating DAO.\",\"_fromBuild\":\"The build number of the plugin to update from.\",\"_payload\":\"The relevant data necessary for the `prepareUpdate`. See above.\"},\"returns\":{\"_0\":\"The initialization data to be passed to upgradeable contracts when the update is applied in the `PluginSetupProcessor`.\",\"_1\":\"The deployed plugin's relevant data which consists of helpers and permissions.\"}},\"protocolVersion()\":{\"details\":\"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\",\"returns\":{\"_0\":\"Returns the semantic Aragon OSx protocol version number.\"}},\"supportsInterface(bytes4)\":{\"params\":{\"_interfaceId\":\"The ID of the interface.\"},\"returns\":{\"_0\":\"Returns `true` if the interface is supported.\"}}},\"version\":1},\"userdoc\":{\"errors\":{\"NonUpgradeablePlugin()\":[{\"notice\":\"Thrown when attempting to prepare an update on a non-upgradeable plugin.\"}]},\"kind\":\"user\",\"methods\":{\"implementation()\":{\"notice\":\"Returns the plugin implementation address.\"},\"prepareInstallation(address,bytes)\":{\"notice\":\"Prepares the installation of a plugin.\"},\"prepareUninstallation(address,(address,address[],bytes))\":{\"notice\":\"Prepares the uninstallation of a plugin.\"},\"prepareUpdate(address,uint16,(address,address[],bytes))\":{\"notice\":\"Prepares the update of a plugin.\"},\"protocolVersion()\":{\"notice\":\"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Checks if this or the parent contract supports an interface by its ID.\"}},\"notice\":\"A mock plugin setup of a plugin to be deployed via the `new` keyword. v1.1 (Release 1, Build 1)\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/mocks/plugin/PluginSetupMock.sol\":\"PluginSetupMockBuild1\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n function _contextSuffixLength() internal view virtual returns (uint256) {\\n return 0;\\n }\\n}\\n\",\"keccak256\":\"0xa92e4fa126feb6907daa0513ddd816b2eb91f30a808de54f63c17d0e162c3439\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165 is IERC165 {\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165).interfaceId;\\n }\\n}\\n\",\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"src/dao/IDAO.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IDAO\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for DAOs within the Aragon App DAO framework.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IDAO {\\n /// @notice The action struct to be consumed by the DAO's `execute` function resulting in an external call.\\n /// @param to The address to call.\\n /// @param value The native token value to be sent with the call.\\n /// @param data The bytes-encoded function selector and calldata for the call.\\n struct Action {\\n address to;\\n uint256 value;\\n bytes data;\\n }\\n\\n /// @notice Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\\n /// @param _where The address of the contract.\\n /// @param _who The address of a EOA or contract to give the permissions.\\n /// @param _permissionId The permission identifier.\\n /// @param _data The optional data passed to the `PermissionCondition` registered.\\n /// @return Returns true if the address has permission, false if not.\\n function hasPermission(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes memory _data\\n ) external view returns (bool);\\n\\n /// @notice Updates the DAO metadata (e.g., an IPFS hash).\\n /// @param _metadata The IPFS hash of the new metadata object.\\n function setMetadata(bytes calldata _metadata) external;\\n\\n /// @notice Emitted when the DAO metadata is updated.\\n /// @param metadata The IPFS hash of the new metadata object.\\n event MetadataSet(bytes metadata);\\n\\n /// @notice Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted.\\n /// @param _callId The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce.\\n /// @param _actions The array of actions.\\n /// @param _allowFailureMap A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @return The array of results obtained from the executed actions in `bytes`.\\n /// @return The resulting failure map containing the actions have actually failed.\\n function execute(\\n bytes32 _callId,\\n Action[] memory _actions,\\n uint256 _allowFailureMap\\n ) external returns (bytes[] memory, uint256);\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param actor The address of the caller.\\n /// @param callId The ID of the call.\\n /// @param actions The array of actions executed.\\n /// @param allowFailureMap The allow failure map encoding which actions are allowed to fail.\\n /// @param failureMap The failure map encoding which actions have failed.\\n /// @param execResults The array with the results of the executed actions.\\n /// @dev The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce.\\n event Executed(\\n address indexed actor,\\n bytes32 callId,\\n Action[] actions,\\n uint256 allowFailureMap,\\n uint256 failureMap,\\n bytes[] execResults\\n );\\n\\n /// @notice Emitted when a standard callback is registered.\\n /// @param interfaceId The ID of the interface.\\n /// @param callbackSelector The selector of the callback function.\\n /// @param magicNumber The magic number to be registered for the callback function selector.\\n event StandardCallbackRegistered(\\n bytes4 interfaceId,\\n bytes4 callbackSelector,\\n bytes4 magicNumber\\n );\\n\\n /// @notice Deposits (native) tokens to the DAO contract with a reference string.\\n /// @param _token The address of the token or address(0) in case of the native token.\\n /// @param _amount The amount of tokens to deposit.\\n /// @param _reference The reference describing the deposit reason.\\n function deposit(address _token, uint256 _amount, string calldata _reference) external payable;\\n\\n /// @notice Emitted when a token deposit has been made to the DAO.\\n /// @param sender The address of the sender.\\n /// @param token The address of the deposited token.\\n /// @param amount The amount of tokens deposited.\\n /// @param _reference The reference describing the deposit reason.\\n event Deposited(\\n address indexed sender,\\n address indexed token,\\n uint256 amount,\\n string _reference\\n );\\n\\n /// @notice Emitted when a native token deposit has been made to the DAO.\\n /// @dev This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).\\n /// @param sender The address of the sender.\\n /// @param amount The amount of native tokens deposited.\\n event NativeTokenDeposited(address sender, uint256 amount);\\n\\n /// @notice Setter for the trusted forwarder verifying the meta transaction.\\n /// @param _trustedForwarder The trusted forwarder address.\\n function setTrustedForwarder(address _trustedForwarder) external;\\n\\n /// @notice Getter for the trusted forwarder verifying the meta transaction.\\n /// @return The trusted forwarder address.\\n function getTrustedForwarder() external view returns (address);\\n\\n /// @notice Emitted when a new TrustedForwarder is set on the DAO.\\n /// @param forwarder the new forwarder address.\\n event TrustedForwarderSet(address forwarder);\\n\\n /// @notice Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\\n /// @param _hash The hash of the data to be signed.\\n /// @param _signature The signature byte array associated with `_hash`.\\n /// @return Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not.\\n function isValidSignature(bytes32 _hash, bytes memory _signature) external returns (bytes4);\\n\\n /// @notice Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\\n /// @param _interfaceId The ID of the interface.\\n /// @param _callbackSelector The selector of the callback function.\\n /// @param _magicNumber The magic number to be registered for the function signature.\\n function registerStandardCallback(\\n bytes4 _interfaceId,\\n bytes4 _callbackSelector,\\n bytes4 _magicNumber\\n ) external;\\n\\n /// @notice Removed function being left here to not corrupt the IDAO interface ID. Any call will revert.\\n /// @dev Introduced in v1.0.0. Removed in v1.4.0.\\n function setSignatureValidator(address) external;\\n}\\n\",\"keccak256\":\"0xb7f615523c26de042edce98731c658f44a1edb2464387ac1b642c4c69f57128e\",\"license\":\"AGPL-3.0-or-later\"},\"src/mocks/plugin/PluginMock.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {Plugin} from \\\"../../plugin/Plugin.sol\\\";\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice A mock plugin to be deployed via the `new` keyword.\\n/// v1.1 (Release 1, Build 1)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginMockBuild1 is Plugin {\\n uint256 public state1;\\n\\n constructor(IDAO _dao) Plugin(_dao) {\\n state1 = 1;\\n }\\n}\\n\",\"keccak256\":\"0x9aca72aa9f93de6de6cc6a093aaaceb62649bea46fba7f07a01a067c145c35bd\",\"license\":\"AGPL-3.0-or-later\"},\"src/mocks/plugin/PluginSetupMock.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\n/* solhint-disable one-contract-per-file */\\npragma solidity ^0.8.8;\\n\\nimport {PermissionLib} from \\\"../../permission/PermissionLib.sol\\\";\\nimport {IPluginSetup} from \\\"../../plugin/setup/IPluginSetup.sol\\\";\\nimport {PluginSetup} from \\\"../../plugin/setup/PluginSetup.sol\\\";\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\nimport {mockPermissions, mockHelpers} from \\\"./PluginSetupMockData.sol\\\";\\nimport {PluginMockBuild1} from \\\"./PluginMock.sol\\\";\\n\\n/// @notice A mock plugin setup of a plugin to be deployed via the `new` keyword.\\n/// v1.1 (Release 1, Build 1)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginSetupMockBuild1 is PluginSetup {\\n constructor() PluginSetup(address(new PluginMockBuild1(IDAO(address(0))))) {}\\n\\n /// @inheritdoc IPluginSetup\\n function prepareInstallation(\\n address _dao,\\n bytes memory _data\\n ) external returns (address plugin, PreparedSetupData memory preparedSetupData) {\\n (_data);\\n plugin = address(new PluginMockBuild1(IDAO(_dao)));\\n preparedSetupData.helpers = mockHelpers(1);\\n preparedSetupData.permissions = mockPermissions(0, 1, PermissionLib.Operation.Grant);\\n }\\n\\n /// @inheritdoc IPluginSetup\\n function prepareUninstallation(\\n address _dao,\\n SetupPayload calldata _payload\\n ) external pure returns (PermissionLib.MultiTargetPermission[] memory permissions) {\\n (_dao, _payload);\\n permissions = mockPermissions(0, 1, PermissionLib.Operation.Revoke);\\n }\\n}\\n\",\"keccak256\":\"0xa6f273174c0824bf16728b127487e2e98e70068951de6989dc9bb6aac633e597\",\"license\":\"AGPL-3.0-or-later\"},\"src/mocks/plugin/PluginSetupMockData.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {PermissionLib} from \\\"../../permission/PermissionLib.sol\\\";\\n\\naddress constant NO_CONDITION = address(0);\\n\\nerror ConflictingValues();\\n\\n/// @notice Creates a mock `MultiTargetPermission` array by converting a range of `uint160` values into `address` values.\\n/// @param rangeStart The start of the range.\\n/// @param rangeEnd The end of the range (that is not included).\\n/// @param op The permission operation type.\\n/// @return permissions The mock array of permissions.\\n/// @dev DO NOT USE IN PRODUCTION!\\nfunction mockPermissions(\\n uint160 rangeStart,\\n uint160 rangeEnd,\\n PermissionLib.Operation op\\n) pure returns (PermissionLib.MultiTargetPermission[] memory permissions) {\\n if (rangeStart > rangeEnd) revert ConflictingValues();\\n\\n permissions = new PermissionLib.MultiTargetPermission[](rangeEnd - rangeStart);\\n\\n for (uint160 i = rangeStart; i < rangeEnd; i++) {\\n permissions[i - rangeStart] = PermissionLib.MultiTargetPermission({\\n operation: op,\\n where: address(i),\\n who: address(i),\\n condition: PermissionLib.NO_CONDITION,\\n permissionId: keccak256(\\\"MOCK_PERMISSION\\\")\\n });\\n }\\n}\\n\\n/// @notice Creates a mock array of helper addresses of specified length by converting `uint160` values starting from 0 into `address` values.\\n/// @param len The length of the helper array.\\n/// @return helpers The mock array of helper addresses.\\n/// @dev DO NOT USE IN PRODUCTION!\\nfunction mockHelpers(uint160 len) pure returns (address[] memory helpers) {\\n helpers = new address[](len);\\n\\n for (uint160 i = 0; i < len; i++) {\\n helpers[i] = address(i);\\n }\\n}\\n\",\"keccak256\":\"0x529d1b7ea4c348fe18edf81a044792ca8aa1f6ad9a7d2edfd35e38bf8372abf9\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/PermissionLib.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title PermissionLib\\n/// @author Aragon X - 2021-2023\\n/// @notice A library containing objects for permission processing.\\n/// @custom:security-contact sirt@aragon.org\\nlibrary PermissionLib {\\n /// @notice A constant expressing that no condition is applied to a permission.\\n address public constant NO_CONDITION = address(0);\\n\\n /// @notice The types of permission operations available in the `PermissionManager`.\\n /// @param Grant The grant operation setting a permission without a condition.\\n /// @param Revoke The revoke operation removing a permission (that was granted with or without a condition).\\n /// @param GrantWithCondition The grant operation setting a permission with a condition.\\n enum Operation {\\n Grant,\\n Revoke,\\n GrantWithCondition\\n }\\n\\n /// @notice A struct containing the information for a permission to be applied on a single target contract without a condition.\\n /// @param operation The permission operation type.\\n /// @param who The address (EOA or contract) receiving the permission.\\n /// @param permissionId The permission identifier.\\n struct SingleTargetPermission {\\n Operation operation;\\n address who;\\n bytes32 permissionId;\\n }\\n\\n /// @notice A struct containing the information for a permission to be applied on multiple target contracts, optionally, with a condition.\\n /// @param operation The permission operation type.\\n /// @param where The address of the target contract for which `who` receives permission.\\n /// @param who The address (EOA or contract) receiving the permission.\\n /// @param condition The `PermissionCondition` that will be asked for authorization on calls connected to the specified permission identifier.\\n /// @param permissionId The permission identifier.\\n struct MultiTargetPermission {\\n Operation operation;\\n address where;\\n address who;\\n address condition;\\n bytes32 permissionId;\\n }\\n}\\n\",\"keccak256\":\"0x470faf3c4891ebc6420ef6cc09f6098917568ccc79268c90954d1478199b6097\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/DaoAuthorizable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {Context} from \\\"@openzeppelin/contracts/utils/Context.sol\\\";\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\nimport {_auth} from \\\"./auth.sol\\\";\\n\\n/// @title DaoAuthorizable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract contract providing a meta-transaction compatible modifier for non-upgradeable contracts instantiated via the `new` keyword to authorize function calls through an associated DAO.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract DaoAuthorizable is Context {\\n /// @notice The associated DAO managing the permissions of inheriting contracts.\\n IDAO private immutable DAO;\\n\\n /// @notice Constructs the contract by setting the associated DAO.\\n /// @param _dao The associated DAO address.\\n constructor(IDAO _dao) {\\n DAO = _dao;\\n }\\n\\n /// @notice Returns the DAO contract.\\n /// @return The DAO contract.\\n function dao() public view returns (IDAO) {\\n return DAO;\\n }\\n\\n /// @notice A modifier to make functions on inheriting contracts authorized. Permissions to call the function are checked through the associated DAO's permission manager.\\n /// @param _permissionId The permission identifier required to call the method this modifier is applied to.\\n modifier auth(bytes32 _permissionId) {\\n _auth(DAO, address(this), _msgSender(), _permissionId, _msgData());\\n _;\\n }\\n}\\n\",\"keccak256\":\"0x3d0be91b4f5854ed2d2c51b53fe7ffba58cc968e972015cf60eb3ea100543e64\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/auth.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice Thrown if a call is unauthorized in the associated DAO.\\n/// @param dao The associated DAO.\\n/// @param where The context in which the authorization reverted.\\n/// @param who The address (EOA or contract) missing the permission.\\n/// @param permissionId The permission identifier.\\nerror DaoUnauthorized(address dao, address where, address who, bytes32 permissionId);\\n\\n/// @notice A free function checking if a caller is granted permissions on a target contract via a permission identifier that redirects the approval to a `PermissionCondition` if this was specified in the setup.\\n/// @param _where The address of the target contract for which `who` receives permission.\\n/// @param _who The address (EOA or contract) owning the permission.\\n/// @param _permissionId The permission identifier.\\n/// @param _data The optional data passed to the `PermissionCondition` registered.\\n/// @custom:security-contact sirt@aragon.org\\nfunction _auth(\\n IDAO _dao,\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes calldata _data\\n) view {\\n if (!_dao.hasPermission(_where, _who, _permissionId, _data))\\n revert DaoUnauthorized({\\n dao: address(_dao),\\n where: _where,\\n who: _who,\\n permissionId: _permissionId\\n });\\n}\\n\",\"keccak256\":\"0x878764b4f87fe0651fb3798fb9cb87c952f8c6caf6ae79c7f09de84df6c00298\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/IPlugin.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IPlugin\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the traits of a plugin.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IPlugin {\\n enum PluginType {\\n UUPS,\\n Cloneable,\\n Constructable\\n }\\n\\n /// @notice Returns the plugin's type\\n function pluginType() external view returns (PluginType);\\n}\\n\",\"keccak256\":\"0xc57cd0d10b6380ab7f54c713a509e88fd8f4ad9288313a0e8e12b8887817ddfe\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/Plugin.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ERC165} from \\\"@openzeppelin/contracts/utils/introspection/ERC165.sol\\\";\\n\\nimport {IProtocolVersion} from \\\"../utils/versioning/IProtocolVersion.sol\\\";\\nimport {ProtocolVersion} from \\\"../utils/versioning/ProtocolVersion.sol\\\";\\nimport {DaoAuthorizable} from \\\"../permission/auth/DaoAuthorizable.sol\\\";\\nimport {IDAO} from \\\"../dao/IDAO.sol\\\";\\nimport {IPlugin} from \\\"./IPlugin.sol\\\";\\n\\n/// @title Plugin\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract, non-upgradeable contract to inherit from when creating a plugin being deployed via the `new` keyword.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract Plugin is IPlugin, ERC165, DaoAuthorizable, ProtocolVersion {\\n address public target;\\n\\n /// @dev Emitted each time the Target is set.\\n event TargetSet(address indexed previousTarget, address indexed newTarget);\\n\\n /// @notice Constructs the plugin by storing the associated DAO.\\n /// @param _dao The DAO contract.\\n constructor(IDAO _dao) DaoAuthorizable(_dao) {}\\n\\n /// @inheritdoc IPlugin\\n function pluginType() public pure override returns (PluginType) {\\n return PluginType.Constructable;\\n }\\n\\n /// @dev Sets the target to a new target (`newTarget`).\\n /// @notice Can only be called by the current owner. TODO\\n function setTarget(address _target) public {\\n address previousTarget = target;\\n target = _target;\\n emit TargetSet(previousTarget, _target);\\n }\\n\\n /// @notice Checks if this or the parent contract supports an interface by its ID.\\n /// @param _interfaceId The ID of the interface.\\n /// @return Returns `true` if the interface is supported.\\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\\n return\\n _interfaceId == type(IPlugin).interfaceId ||\\n _interfaceId == type(IProtocolVersion).interfaceId ||\\n super.supportsInterface(_interfaceId);\\n }\\n\\n /// @notice Forwards the actions to the currently set `target` for the execution.\\n /// @param _callId Identifier for this execution.\\n /// @param _actions actions that will be eventually called.\\n /// @param _allowFailureMap Bitmap-encoded number. TODO:\\n /// @return execResults address of the implementation contract.\\n /// @return failureMap address of the implementation contract.\\n function _execute(\\n bytes32 _callId,\\n IDAO.Action[] calldata _actions,\\n uint256 _allowFailureMap\\n ) internal virtual returns (bytes[] memory execResults, uint256 failureMap) {\\n (execResults, failureMap) = IDAO(target).execute(_callId, _actions, _allowFailureMap);\\n }\\n\\n /// @notice Forwards the actions to the `target` for the execution.\\n /// @param _target Forwards the actions to the specific target.\\n /// @param _callId Identifier for this execution.\\n /// @param _actions actions that will be eventually called.\\n /// @param _allowFailureMap Bitmap-encoded number. TODO:\\n /// @return execResults address of the implementation contract.\\n /// @return failureMap address of the implementation contract.\\n function _execute(\\n address _target,\\n bytes32 _callId,\\n IDAO.Action[] calldata _actions,\\n uint256 _allowFailureMap\\n ) internal virtual returns (bytes[] memory execResults, uint256 failureMap) {\\n (execResults, failureMap) = IDAO(_target).execute(_callId, _actions, _allowFailureMap);\\n }\\n}\\n\",\"keccak256\":\"0xaba248693127801c242cb55bdb8625c3f4138009c3e33fa5478c2d09efb309c3\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/setup/IPluginSetup.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {PermissionLib} from \\\"../../permission/PermissionLib.sol\\\";\\n\\n// solhint-disable-next-line no-unused-import\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @title IPluginSetup\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for a plugin setup contract to be consumed by the `PluginSetupProcessor` for plugin installations, updates, and uninstallations.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IPluginSetup {\\n /// @notice The data associated with a prepared setup.\\n /// @param helpers The address array of helpers (contracts or EOAs) associated with this plugin version after the installation or update.\\n /// @param permissions The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the installing or updating DAO.\\n struct PreparedSetupData {\\n address[] helpers;\\n PermissionLib.MultiTargetPermission[] permissions;\\n }\\n\\n /// @notice The payload for plugin updates and uninstallations containing the existing contracts as well as optional data to be consumed by the plugin setup.\\n /// @param plugin The address of the `Plugin`.\\n /// @param currentHelpers The address array of all current helpers (contracts or EOAs) associated with the plugin to update from.\\n /// @param data The bytes-encoded data containing the input parameters for the preparation of update/uninstall as specified in the corresponding ABI on the version's metadata.\\n struct SetupPayload {\\n address plugin;\\n address[] currentHelpers;\\n bytes data;\\n }\\n\\n /// @notice Prepares the installation of a plugin.\\n /// @param _dao The address of the installing DAO.\\n /// @param _data The bytes-encoded data containing the input parameters for the installation as specified in the plugin's build metadata JSON file.\\n /// @return plugin The address of the `Plugin` contract being prepared for installation.\\n /// @return preparedSetupData The deployed plugin's relevant data which consists of helpers and permissions.\\n function prepareInstallation(\\n address _dao,\\n bytes calldata _data\\n ) external returns (address plugin, PreparedSetupData memory preparedSetupData);\\n\\n /// @notice Prepares the update of a plugin.\\n /// @param _dao The address of the updating DAO.\\n /// @param _fromBuild The build number of the plugin to update from.\\n /// @param _payload The relevant data necessary for the `prepareUpdate`. See above.\\n /// @return initData The initialization data to be passed to upgradeable contracts when the update is applied in the `PluginSetupProcessor`.\\n /// @return preparedSetupData The deployed plugin's relevant data which consists of helpers and permissions.\\n function prepareUpdate(\\n address _dao,\\n uint16 _fromBuild,\\n SetupPayload calldata _payload\\n ) external returns (bytes memory initData, PreparedSetupData memory preparedSetupData);\\n\\n /// @notice Prepares the uninstallation of a plugin.\\n /// @param _dao The address of the uninstalling DAO.\\n /// @param _payload The relevant data necessary for the `prepareUninstallation`. See above.\\n /// @return permissions The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the uninstalling DAO.\\n function prepareUninstallation(\\n address _dao,\\n SetupPayload calldata _payload\\n ) external returns (PermissionLib.MultiTargetPermission[] memory permissions);\\n\\n /// @notice Returns the plugin implementation address.\\n /// @return The address of the plugin implementation contract.\\n /// @dev The implementation can be instantiated via the `new` keyword, cloned via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)), or proxied via the UUPS proxy pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0x21c99995208039ac6ace219b6f273243811dc2aa66399e8e499e43ec30b82fa9\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/setup/PluginSetup.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ERC165} from \\\"@openzeppelin/contracts/utils/introspection/ERC165.sol\\\";\\n\\nimport {IProtocolVersion} from \\\"../../utils/versioning/IProtocolVersion.sol\\\";\\nimport {ProtocolVersion} from \\\"../../utils/versioning/ProtocolVersion.sol\\\";\\nimport {IPluginSetup} from \\\"./IPluginSetup.sol\\\";\\n\\n/// @title PluginSetup\\n/// @author Aragon X - 2022-2024\\n/// @notice An abstract contract to inherit from to implement the plugin setup for non-upgradeable plugins, i.e,\\n/// - `Plugin` being deployed via the `new` keyword\\n/// - `PluginCloneable` being deployed via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)).\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract PluginSetup is ERC165, IPluginSetup, ProtocolVersion {\\n /// @notice The address of the plugin implementation contract for initial block explorer verification and, in the case of `PluginClonable` implementations, to create [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167) clones from.\\n address internal immutable IMPLEMENTATION;\\n\\n /// @notice Thrown when attempting to prepare an update on a non-upgradeable plugin.\\n error NonUpgradeablePlugin();\\n\\n /// @notice The contract constructor, that setting the plugin implementation contract.\\n /// @param _implementation The address of the plugin implementation contract.\\n constructor(address _implementation) {\\n IMPLEMENTATION = _implementation;\\n }\\n\\n /// @inheritdoc IPluginSetup\\n /// @dev Since the underlying plugin is non-upgradeable, this non-virtual function must always revert.\\n function prepareUpdate(\\n address _dao,\\n uint16 _fromBuild,\\n SetupPayload calldata _payload\\n ) external pure returns (bytes memory, PreparedSetupData memory) {\\n (_dao, _fromBuild, _payload);\\n revert NonUpgradeablePlugin();\\n }\\n\\n /// @notice Checks if this or the parent contract supports an interface by its ID.\\n /// @param _interfaceId The ID of the interface.\\n /// @return Returns `true` if the interface is supported.\\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\\n return\\n _interfaceId == type(IPluginSetup).interfaceId ||\\n _interfaceId == type(IProtocolVersion).interfaceId ||\\n super.supportsInterface(_interfaceId);\\n }\\n\\n /// @inheritdoc IPluginSetup\\n function implementation() public view returns (address) {\\n return IMPLEMENTATION;\\n }\\n}\\n\",\"keccak256\":\"0x93044f8080758c5cf8d621e3614b8150f55572a1770880106a49dfa53784a9d2\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/IProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IProtocolVersion\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the semantic Aragon OSx protocol version number.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IProtocolVersion {\\n /// @notice Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\\n /// @return _version Returns the semantic Aragon OSx protocol version number.\\n /// @dev This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\\n function protocolVersion() external view returns (uint8[3] memory _version);\\n}\\n\",\"keccak256\":\"0x00a4da654d21dc1bdadbdc8bd54bb86c378c56f85e461ccc31303628ea621361\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/ProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IProtocolVersion} from \\\"./IProtocolVersion.sol\\\";\\n\\n/// @title ProtocolVersion\\n/// @author Aragon X - 2023\\n/// @notice An abstract, stateless, non-upgradeable contract providing the current Aragon OSx protocol version number.\\n/// @dev Do not add any new variables to this contract that would shift down storage in the inheritance chain.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract ProtocolVersion is IProtocolVersion {\\n // IMPORTANT: Do not add any storage variable, see the above notice.\\n\\n /// @inheritdoc IProtocolVersion\\n function protocolVersion() public pure returns (uint8[3] memory) {\\n return [1, 4, 0];\\n }\\n}\\n\",\"keccak256\":\"0x3975c937be935f687c6b6b8f379071232681e98cf04b175d72781b819ea52bdb\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"errors":{"NonUpgradeablePlugin()":[{"notice":"Thrown when attempting to prepare an update on a non-upgradeable plugin."}]},"kind":"user","methods":{"implementation()":{"notice":"Returns the plugin implementation address."},"prepareInstallation(address,bytes)":{"notice":"Prepares the installation of a plugin."},"prepareUninstallation(address,(address,address[],bytes))":{"notice":"Prepares the uninstallation of a plugin."},"prepareUpdate(address,uint16,(address,address[],bytes))":{"notice":"Prepares the update of a plugin."},"protocolVersion()":{"notice":"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with."},"supportsInterface(bytes4)":{"notice":"Checks if this or the parent contract supports an interface by its ID."}},"notice":"A mock plugin setup of a plugin to be deployed via the `new` keyword. v1.1 (Release 1, Build 1)","version":1}}},"src/mocks/plugin/PluginUUPSUpgradeableMock.sol":{"PluginUUPSUpgradeableMockBad":{"abi":[{"inputs":[{"internalType":"address","name":"dao","type":"address"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"name":"DaoUnauthorized","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"beacon","type":"address"}],"name":"BeaconUpgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousTarget","type":"address"},{"indexed":true,"internalType":"address","name":"newTarget","type":"address"}],"name":"TargetSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"inputs":[],"name":"UPGRADE_PLUGIN_PERMISSION_ID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dao","outputs":[{"internalType":"contract IDAO","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IDAO","name":"_dao","type":"address"}],"name":"notAnInitializer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pluginType","outputs":[{"internalType":"enum IPlugin.PluginType","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"protocolVersion","outputs":[{"internalType":"uint8[3]","name":"","type":"uint8[3]"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_target","type":"address"}],"name":"setTarget","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"state1","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"target","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"}],"name":"upgradeTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"}],"devdoc":{"details":"DO NOT USE IN PRODUCTION!","errors":{"DaoUnauthorized(address,address,address,bytes32)":[{"params":{"dao":"The associated DAO.","permissionId":"The permission identifier.","where":"The context in which the authorization reverted.","who":"The address (EOA or contract) missing the permission."}}]},"kind":"dev","methods":{"dao()":{"returns":{"_0":"The DAO contract."}},"implementation()":{"returns":{"_0":"The address of the implementation contract."}},"protocolVersion()":{"details":"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.","returns":{"_0":"Returns the semantic Aragon OSx protocol version number."}},"proxiableUUID()":{"details":"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier."},"setTarget(address)":{"details":"Sets the target to a new target (`newTarget`)."},"supportsInterface(bytes4)":{"params":{"_interfaceId":"The ID of the interface."},"returns":{"_0":"Returns `true` if the interface is supported."}},"upgradeTo(address)":{"custom:oz-upgrades-unsafe-allow-reachable":"delegatecall","details":"Upgrade the implementation of the proxy to `newImplementation`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."},"upgradeToAndCall(address,bytes)":{"custom:oz-upgrades-unsafe-allow-reachable":"delegatecall","details":"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."}},"version":1},"evm":{"bytecode":{"functionDebugData":{"@_4397":{"entryPoint":null,"id":4397,"parameterSlots":0,"returnSlots":0},"@_disableInitializers_515":{"entryPoint":34,"id":515,"parameterSlots":0,"returnSlots":0},"abi_encode_tuple_t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:608:50","statements":[{"nodeType":"YulBlock","src":"6:3:50","statements":[]},{"body":{"nodeType":"YulBlock","src":"188:229:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"205:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"216:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"198:6:50"},"nodeType":"YulFunctionCall","src":"198:21:50"},"nodeType":"YulExpressionStatement","src":"198:21:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"239:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"250:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"235:3:50"},"nodeType":"YulFunctionCall","src":"235:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"255:2:50","type":"","value":"39"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"228:6:50"},"nodeType":"YulFunctionCall","src":"228:30:50"},"nodeType":"YulExpressionStatement","src":"228:30:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"278:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"289:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"274:3:50"},"nodeType":"YulFunctionCall","src":"274:18:50"},{"hexValue":"496e697469616c697a61626c653a20636f6e747261637420697320696e697469","kind":"string","nodeType":"YulLiteral","src":"294:34:50","type":"","value":"Initializable: contract is initi"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"267:6:50"},"nodeType":"YulFunctionCall","src":"267:62:50"},"nodeType":"YulExpressionStatement","src":"267:62:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"349:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"360:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"345:3:50"},"nodeType":"YulFunctionCall","src":"345:18:50"},{"hexValue":"616c697a696e67","kind":"string","nodeType":"YulLiteral","src":"365:9:50","type":"","value":"alizing"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"338:6:50"},"nodeType":"YulFunctionCall","src":"338:37:50"},"nodeType":"YulExpressionStatement","src":"338:37:50"},{"nodeType":"YulAssignment","src":"384:27:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"396:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"407:3:50","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"392:3:50"},"nodeType":"YulFunctionCall","src":"392:19:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"384:4:50"}]}]},"name":"abi_encode_tuple_t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"165:9:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"179:4:50","type":""}],"src":"14:403:50"},{"body":{"nodeType":"YulBlock","src":"519:87:50","statements":[{"nodeType":"YulAssignment","src":"529:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"541:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"552:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"537:3:50"},"nodeType":"YulFunctionCall","src":"537:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"529:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"571:9:50"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"586:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"594:4:50","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"582:3:50"},"nodeType":"YulFunctionCall","src":"582:17:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"564:6:50"},"nodeType":"YulFunctionCall","src":"564:36:50"},"nodeType":"YulExpressionStatement","src":"564:36:50"}]},"name":"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"488:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"499:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"510:4:50","type":""}],"src":"422:184:50"}]},"contents":"{\n { }\n function abi_encode_tuple_t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 39)\n mstore(add(headStart, 64), \"Initializable: contract is initi\")\n mstore(add(headStart, 96), \"alizing\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xff))\n }\n}","id":50,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60a06040523060805234801561001457600080fd5b5061001d610022565b6100e1565b600054610100900460ff161561008e5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116146100df576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b60805161109b61011860003960008181610334015281816103be015281816104b4015281816105390152610623015261109b6000f3fe6080604052600436106100d25760003560e01c806352d1902d1161007f578063776d1a0111610059578063776d1a01146102005780638883bbd714610220578063c9c4bfca14610240578063d4b839921461027457600080fd5b806352d1902d146101b15780635c60da1b146101d45780636accab8c146101e957600080fd5b80634162169f116100b05780634162169f1461015057806341de6830146101825780634f1ef2861461019e57600080fd5b806301ffc9a7146100d75780632ae9c6001461010c5780633659cfe61461012e575b600080fd5b3480156100e357600080fd5b506100f76100f2366004610dd3565b610294565b60405190151581526020015b60405180910390f35b34801561011857600080fd5b50610121610300565b6040516101039190610dfd565b34801561013a57600080fd5b5061014e610149366004610e46565b61032a565b005b34801561015c57600080fd5b5060c9546001600160a01b03165b6040516001600160a01b039091168152602001610103565b34801561018e57600080fd5b5060006040516101039190610e63565b61014e6101ac366004610ea1565b6104aa565b3480156101bd57600080fd5b506101c6610616565b604051908152602001610103565b3480156101e057600080fd5b5061016a6106db565b3480156101f557600080fd5b506101c661012d5481565b34801561020c57600080fd5b5061014e61021b366004610e46565b610713565b34801561022c57600080fd5b5061014e61023b366004610e46565b610772565b34801561024c57600080fd5b506101c67f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f581565b34801561028057600080fd5b5060fb5461016a906001600160a01b031681565b60006001600160e01b0319821663041de68360e41b14806102c457506001600160e01b03198216621574e360e91b145b806102df57506001600160e01b031982166352d1902d60e01b145b806102fa57506301ffc9a760e01b6001600160e01b03198316145b92915050565b610308610db5565b5060408051606081018252600181526004602082015260009181019190915290565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036103bc5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b60648201526084015b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166104177f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b0316146104825760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b60648201526084016103b3565b61048b81610784565b604080516000808252602082019092526104a7918391906107c1565b50565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036105375760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b60648201526084016103b3565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166105927f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b0316146105fd5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b60648201526084016103b3565b61060682610784565b610612828260016107c1565b5050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106b65760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016103b3565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b600061070e7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b60fb80546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d690600090a35050565b61077b81610966565b50600161012d55565b60c9547f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f590610612906001600160a01b03163033846000366109da565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156107f9576107f483610a96565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610853575060408051601f3d908101601f1916820190925261085091810190610f65565b60015b6108c55760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201527f6f6e206973206e6f74205555505300000000000000000000000000000000000060648201526084016103b3565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc811461095a5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f7860448201527f6961626c6555554944000000000000000000000000000000000000000000000060648201526084016103b3565b506107f4838383610b61565b600054610100900460ff166109d15760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103b3565b6104a781610b8c565b604051637ef7c88360e11b81526001600160a01b0387169063fdef910690610a0e9088908890889088908890600401610f7e565b602060405180830381865afa158015610a2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4f9190610fd2565b610a8e57604051630cb6f8ed60e21b81526001600160a01b038088166004830152808716602483015285166044820152606481018490526084016103b3565b505050505050565b6001600160a01b0381163b610b135760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e74726163740000000000000000000000000000000000000060648201526084016103b3565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610b6a83610c26565b600082511180610b775750805b156107f457610b868383610c66565b50505050565b600054610100900460ff16610bf75760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103b3565b60c9805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610c2f81610a96565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060610c8b838360405180606001604052806027815260200161106860279139610c92565b9392505050565b6060600080856001600160a01b031685604051610caf9190611018565b600060405180830381855af49150503d8060008114610cea576040519150601f19603f3d011682016040523d82523d6000602084013e610cef565b606091505b5091509150610d0086838387610d0a565b9695505050505050565b60608315610d79578251600003610d72576001600160a01b0385163b610d725760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016103b3565b5081610d83565b610d838383610d8b565b949350505050565b815115610d9b5781518083602001fd5b8060405162461bcd60e51b81526004016103b39190611034565b60405180606001604052806003906020820280368337509192915050565b600060208284031215610de557600080fd5b81356001600160e01b031981168114610c8b57600080fd5b60608101818360005b6003811015610e2857815160ff16835260209283019290910190600101610e06565b50505092915050565b6001600160a01b03811681146104a757600080fd5b600060208284031215610e5857600080fd5b8135610c8b81610e31565b6020810160038310610e8557634e487b7160e01b600052602160045260246000fd5b91905290565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215610eb457600080fd5b8235610ebf81610e31565b9150602083013567ffffffffffffffff80821115610edc57600080fd5b818501915085601f830112610ef057600080fd5b813581811115610f0257610f02610e8b565b604051601f8201601f19908116603f01168101908382118183101715610f2a57610f2a610e8b565b81604052828152886020848701011115610f4357600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b600060208284031215610f7757600080fd5b5051919050565b60006001600160a01b03808816835280871660208401525084604083015260806060830152826080830152828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b600060208284031215610fe457600080fd5b81518015158114610c8b57600080fd5b60005b8381101561100f578181015183820152602001610ff7565b50506000910152565b6000825161102a818460208701610ff4565b9190910192915050565b6020815260008251806020840152611053816040850160208701610ff4565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a","opcodes":"PUSH1 0xA0 PUSH1 0x40 MSTORE ADDRESS PUSH1 0x80 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x14 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1D PUSH2 0x22 JUMP JUMPDEST PUSH2 0xE1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x8E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x27 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320696E697469 PUSH1 0x44 DUP3 ADD MSTORE PUSH7 0x616C697A696E67 PUSH1 0xC8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xFF SWAP1 DUP2 AND EQ PUSH2 0xDF JUMPI PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH2 0x109B PUSH2 0x118 PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH2 0x334 ADD MSTORE DUP2 DUP2 PUSH2 0x3BE ADD MSTORE DUP2 DUP2 PUSH2 0x4B4 ADD MSTORE DUP2 DUP2 PUSH2 0x539 ADD MSTORE PUSH2 0x623 ADD MSTORE PUSH2 0x109B PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xD2 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x52D1902D GT PUSH2 0x7F JUMPI DUP1 PUSH4 0x776D1A01 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0x776D1A01 EQ PUSH2 0x200 JUMPI DUP1 PUSH4 0x8883BBD7 EQ PUSH2 0x220 JUMPI DUP1 PUSH4 0xC9C4BFCA EQ PUSH2 0x240 JUMPI DUP1 PUSH4 0xD4B83992 EQ PUSH2 0x274 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x52D1902D EQ PUSH2 0x1B1 JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0x1D4 JUMPI DUP1 PUSH4 0x6ACCAB8C EQ PUSH2 0x1E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x4162169F GT PUSH2 0xB0 JUMPI DUP1 PUSH4 0x4162169F EQ PUSH2 0x150 JUMPI DUP1 PUSH4 0x41DE6830 EQ PUSH2 0x182 JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x19E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xD7 JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0x10C JUMPI DUP1 PUSH4 0x3659CFE6 EQ PUSH2 0x12E JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xE3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF7 PUSH2 0xF2 CALLDATASIZE PUSH1 0x4 PUSH2 0xDD3 JUMP JUMPDEST PUSH2 0x294 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x118 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x121 PUSH2 0x300 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x103 SWAP2 SWAP1 PUSH2 0xDFD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x13A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x14E PUSH2 0x149 CALLDATASIZE PUSH1 0x4 PUSH2 0xE46 JUMP JUMPDEST PUSH2 0x32A JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x15C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xC9 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x103 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x18E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 PUSH1 0x40 MLOAD PUSH2 0x103 SWAP2 SWAP1 PUSH2 0xE63 JUMP JUMPDEST PUSH2 0x14E PUSH2 0x1AC CALLDATASIZE PUSH1 0x4 PUSH2 0xEA1 JUMP JUMPDEST PUSH2 0x4AA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C6 PUSH2 0x616 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x103 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x16A PUSH2 0x6DB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C6 PUSH2 0x12D SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x20C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x14E PUSH2 0x21B CALLDATASIZE PUSH1 0x4 PUSH2 0xE46 JUMP JUMPDEST PUSH2 0x713 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x22C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x14E PUSH2 0x23B CALLDATASIZE PUSH1 0x4 PUSH2 0xE46 JUMP JUMPDEST PUSH2 0x772 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x24C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C6 PUSH32 0x821B6E3A557148015A918C89E5D092E878A69854A2D1A410635F771BD5A8A3F5 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x280 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xFB SLOAD PUSH2 0x16A SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x41DE683 PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x2C4 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x2DF JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x52D1902D PUSH1 0xE0 SHL EQ JUMPDEST DUP1 PUSH2 0x2FA JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x308 PUSH2 0xDB5 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x3BC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x19195B1959D85D1958D85B1B PUSH1 0xA2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x417 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x482 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x6163746976652070726F7879 PUSH1 0xA0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B3 JUMP JUMPDEST PUSH2 0x48B DUP2 PUSH2 0x784 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x4A7 SWAP2 DUP4 SWAP2 SWAP1 PUSH2 0x7C1 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x537 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x19195B1959D85D1958D85B1B PUSH1 0xA2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B3 JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x592 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x5FD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x6163746976652070726F7879 PUSH1 0xA0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B3 JUMP JUMPDEST PUSH2 0x606 DUP3 PUSH2 0x784 JUMP JUMPDEST PUSH2 0x612 DUP3 DUP3 PUSH1 0x1 PUSH2 0x7C1 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x6B6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x38 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x555550535570677261646561626C653A206D757374206E6F742062652063616C PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6C6564207468726F7567682064656C656761746563616C6C0000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B3 JUMP JUMPDEST POP PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x70E PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0xFB DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP2 SWAP1 DUP3 SWAP1 PUSH32 0x90CC2F570A6EB594B1580EA3E41247D2D73A55281889E86BD4EC2FC29C7E62D6 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH2 0x77B DUP2 PUSH2 0x966 JUMP JUMPDEST POP PUSH1 0x1 PUSH2 0x12D SSTORE JUMP JUMPDEST PUSH1 0xC9 SLOAD PUSH32 0x821B6E3A557148015A918C89E5D092E878A69854A2D1A410635F771BD5A8A3F5 SWAP1 PUSH2 0x612 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ADDRESS CALLER DUP5 PUSH1 0x0 CALLDATASIZE PUSH2 0x9DA JUMP JUMPDEST PUSH32 0x4910FDFA16FED3260ED0E7147F7CC6DA11A60208B5B9406D12A635614FFD9143 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x7F9 JUMPI PUSH2 0x7F4 DUP4 PUSH2 0xA96 JUMP JUMPDEST POP POP POP JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x52D1902D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x853 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x850 SWAP2 DUP2 ADD SWAP1 PUSH2 0xF65 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x8C5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524331393637557067726164653A206E657720696D706C656D656E74617469 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F6E206973206E6F742055555053000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B3 JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC DUP2 EQ PUSH2 0x95A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524331393637557067726164653A20756E737570706F727465642070726F78 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6961626C65555549440000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B3 JUMP JUMPDEST POP PUSH2 0x7F4 DUP4 DUP4 DUP4 PUSH2 0xB61 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x9D1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B3 JUMP JUMPDEST PUSH2 0x4A7 DUP2 PUSH2 0xB8C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x7EF7C883 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0xFDEF9106 SWAP1 PUSH2 0xA0E SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0xF7E JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xA2B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xA4F SWAP2 SWAP1 PUSH2 0xFD2 JUMP JUMPDEST PUSH2 0xA8E JUMPI PUSH1 0x40 MLOAD PUSH4 0xCB6F8ED PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND PUSH1 0x4 DUP4 ADD MSTORE DUP1 DUP8 AND PUSH1 0x24 DUP4 ADD MSTORE DUP6 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x84 ADD PUSH2 0x3B3 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND EXTCODESIZE PUSH2 0xB13 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313936373A206E657720696D706C656D656E746174696F6E206973206E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F74206120636F6E747261637400000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B3 JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xB6A DUP4 PUSH2 0xC26 JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD GT DUP1 PUSH2 0xB77 JUMPI POP DUP1 JUMPDEST ISZERO PUSH2 0x7F4 JUMPI PUSH2 0xB86 DUP4 DUP4 PUSH2 0xC66 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0xBF7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B3 JUMP JUMPDEST PUSH1 0xC9 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xC2F DUP2 PUSH2 0xA96 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xC8B DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1068 PUSH1 0x27 SWAP2 CODECOPY PUSH2 0xC92 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0xCAF SWAP2 SWAP1 PUSH2 0x1018 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xCEA JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xCEF JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0xD00 DUP7 DUP4 DUP4 DUP8 PUSH2 0xD0A JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0xD79 JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0xD72 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0xD72 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3B3 JUMP JUMPDEST POP DUP2 PUSH2 0xD83 JUMP JUMPDEST PUSH2 0xD83 DUP4 DUP4 PUSH2 0xD8B JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0xD9B JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3B3 SWAP2 SWAP1 PUSH2 0x1034 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xDE5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0xC8B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0xE28 JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0xE06 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x4A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xE58 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xC8B DUP2 PUSH2 0xE31 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH1 0x3 DUP4 LT PUSH2 0xE85 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 SWAP1 MSTORE SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xEB4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0xEBF DUP2 PUSH2 0xE31 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xEDC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xEF0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0xF02 JUMPI PUSH2 0xF02 PUSH2 0xE8B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0xF2A JUMPI PUSH2 0xF2A PUSH2 0xE8B JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0xF43 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xF77 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND DUP4 MSTORE DUP1 DUP8 AND PUSH1 0x20 DUP5 ADD MSTORE POP DUP5 PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x80 PUSH1 0x60 DUP4 ADD MSTORE DUP3 PUSH1 0x80 DUP4 ADD MSTORE DUP3 DUP5 PUSH1 0xA0 DUP5 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0xA0 DUP5 DUP5 ADD ADD MSTORE PUSH1 0xA0 PUSH1 0x1F NOT PUSH1 0x1F DUP6 ADD AND DUP4 ADD ADD SWAP1 POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xFE4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xC8B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x100F JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xFF7 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x102A DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0xFF4 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x1053 DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0xFF4 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A164 PUSH20 0x6F6C6343000811000A0000000000000000000000 ","sourceMap":"1988:216:31:-:0;;;1198:4:5;1155:48;;1988:216:31;;;;;;;;;-1:-1:-1;1647:22:40;:20;:22::i;:::-;1988:216:31;;5939:280:4;6007:13;;;;;;;6006:14;5998:66;;;;-1:-1:-1;;;5998:66:4;;216:2:50;5998:66:4;;;198:21:50;255:2;235:18;;;228:30;294:34;274:18;;;267:62;-1:-1:-1;;;345:18:50;;;338:37;392:19;;5998:66:4;;;;;;;;6078:12;;6094:15;6078:12;;;:31;6074:139;;6125:12;:30;;-1:-1:-1;;6125:30:4;6140:15;6125:30;;;;;;6174:28;;564:36:50;;;6174:28:4;;552:2:50;537:18;6174:28:4;;;;;;;6074:139;5939:280::o;422:184:50:-;1988:216:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@UPGRADE_PLUGIN_PERMISSION_ID_4415":{"entryPoint":null,"id":4415,"parameterSlots":0,"returnSlots":0},"@__DaoAuthorizableUpgradeable_init_3901":{"entryPoint":2956,"id":3901,"parameterSlots":1,"returnSlots":0},"@__PluginUUPSUpgradeable_init_4429":{"entryPoint":2406,"id":4429,"parameterSlots":1,"returnSlots":0},"@_auth_3987":{"entryPoint":2522,"id":3987,"parameterSlots":6,"returnSlots":0},"@_authorizeUpgrade_4570":{"entryPoint":1924,"id":4570,"parameterSlots":1,"returnSlots":0},"@_getImplementation_76":{"entryPoint":null,"id":76,"parameterSlots":0,"returnSlots":1},"@_msgData_1038":{"entryPoint":null,"id":1038,"parameterSlots":0,"returnSlots":2},"@_msgSender_1029":{"entryPoint":null,"id":1029,"parameterSlots":0,"returnSlots":1},"@_revert_1000":{"entryPoint":3467,"id":1000,"parameterSlots":2,"returnSlots":0},"@_setImplementation_100":{"entryPoint":2710,"id":100,"parameterSlots":1,"returnSlots":0},"@_upgradeToAndCallUUPS_198":{"entryPoint":1985,"id":198,"parameterSlots":3,"returnSlots":0},"@_upgradeToAndCall_145":{"entryPoint":2913,"id":145,"parameterSlots":3,"returnSlots":0},"@_upgradeTo_115":{"entryPoint":3110,"id":115,"parameterSlots":1,"returnSlots":0},"@dao_3911":{"entryPoint":null,"id":3911,"parameterSlots":0,"returnSlots":1},"@functionDelegateCall_888":{"entryPoint":3174,"id":888,"parameterSlots":2,"returnSlots":1},"@functionDelegateCall_917":{"entryPoint":3218,"id":917,"parameterSlots":3,"returnSlots":1},"@getAddressSlot_1158":{"entryPoint":null,"id":1158,"parameterSlots":1,"returnSlots":1},"@getBooleanSlot_1169":{"entryPoint":null,"id":1169,"parameterSlots":1,"returnSlots":1},"@implementation_4495":{"entryPoint":1755,"id":4495,"parameterSlots":0,"returnSlots":1},"@isContract_689":{"entryPoint":null,"id":689,"parameterSlots":1,"returnSlots":1},"@notAnInitializer_3268":{"entryPoint":1906,"id":3268,"parameterSlots":1,"returnSlots":0},"@pluginType_4409":{"entryPoint":null,"id":4409,"parameterSlots":0,"returnSlots":1},"@protocolVersion_5135":{"entryPoint":768,"id":5135,"parameterSlots":0,"returnSlots":1},"@proxiableUUID_616":{"entryPoint":1558,"id":616,"parameterSlots":0,"returnSlots":1},"@setTarget_4449":{"entryPoint":1811,"id":4449,"parameterSlots":1,"returnSlots":0},"@state1_3253":{"entryPoint":null,"id":3253,"parameterSlots":0,"returnSlots":0},"@supportsInterface_1275":{"entryPoint":null,"id":1275,"parameterSlots":1,"returnSlots":1},"@supportsInterface_4485":{"entryPoint":660,"id":4485,"parameterSlots":1,"returnSlots":1},"@target_4382":{"entryPoint":null,"id":4382,"parameterSlots":0,"returnSlots":0},"@upgradeToAndCall_659":{"entryPoint":1194,"id":659,"parameterSlots":2,"returnSlots":0},"@upgradeTo_638":{"entryPoint":810,"id":638,"parameterSlots":1,"returnSlots":0},"@verifyCallResultFromTarget_956":{"entryPoint":3338,"id":956,"parameterSlots":4,"returnSlots":1},"abi_decode_tuple_t_address":{"entryPoint":3654,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_bytes_memory_ptr":{"entryPoint":3745,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_bool_fromMemory":{"entryPoint":4050,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes32_fromMemory":{"entryPoint":3941,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes4":{"entryPoint":3539,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_contract$_IDAO_$2538":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":4120,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address_t_address_t_address_t_bytes32__to_t_address_t_address_t_address_t_bytes32__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":5,"returnSlots":1},"abi_encode_tuple_t_address_t_address_t_bytes32_t_bytes_calldata_ptr__to_t_address_t_address_t_bytes32_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":3966,"id":null,"parameterSlots":6,"returnSlots":1},"abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed":{"entryPoint":3581,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_contract$_IDAO_$2538__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_enum$_PluginType_$3994__to_t_uint8__fromStack_reversed":{"entryPoint":3683,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":4148,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_36e108fa7a809b52ab1951dd91c117a7bc9ac5250bdf1aa162d4e104f7edf9eb__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_52f1ead4d9653e13afbd2e90ef2587c30187cd50b2e97d784e3f7a7541247434__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_67f0151b4ad1dcfa0e3302a0cd6019f51582ef1807b37dceb00bd852a514f7f4__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_76b6b6debfc5febf101145a79ecf0b0d2e89e397dfdab2bca99888370411152c__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_8e8e2fbcb586f700b5b14e2c4a650c8d83b9773c31c5fe8962070ea544e11f24__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"copy_memory_to_memory_with_cleanup":{"entryPoint":4084,"id":null,"parameterSlots":3,"returnSlots":0},"panic_error_0x41":{"entryPoint":3723,"id":null,"parameterSlots":0,"returnSlots":0},"validator_revert_address":{"entryPoint":3633,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:9909:50","statements":[{"nodeType":"YulBlock","src":"6:3:50","statements":[]},{"body":{"nodeType":"YulBlock","src":"83:217:50","statements":[{"body":{"nodeType":"YulBlock","src":"129:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"138:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"141:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"131:6:50"},"nodeType":"YulFunctionCall","src":"131:12:50"},"nodeType":"YulExpressionStatement","src":"131:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"104:7:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"113:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"100:3:50"},"nodeType":"YulFunctionCall","src":"100:23:50"},{"kind":"number","nodeType":"YulLiteral","src":"125:2:50","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"96:3:50"},"nodeType":"YulFunctionCall","src":"96:32:50"},"nodeType":"YulIf","src":"93:52:50"},{"nodeType":"YulVariableDeclaration","src":"154:36:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"180:9:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"167:12:50"},"nodeType":"YulFunctionCall","src":"167:23:50"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"158:5:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"254:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"263:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"266:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"256:6:50"},"nodeType":"YulFunctionCall","src":"256:12:50"},"nodeType":"YulExpressionStatement","src":"256:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"212:5:50"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"223:5:50"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"234:3:50","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"239:10:50","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"230:3:50"},"nodeType":"YulFunctionCall","src":"230:20:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"219:3:50"},"nodeType":"YulFunctionCall","src":"219:32:50"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"209:2:50"},"nodeType":"YulFunctionCall","src":"209:43:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"202:6:50"},"nodeType":"YulFunctionCall","src":"202:51:50"},"nodeType":"YulIf","src":"199:71:50"},{"nodeType":"YulAssignment","src":"279:15:50","value":{"name":"value","nodeType":"YulIdentifier","src":"289:5:50"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"279:6:50"}]}]},"name":"abi_decode_tuple_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"49:9:50","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"60:7:50","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"72:6:50","type":""}],"src":"14:286:50"},{"body":{"nodeType":"YulBlock","src":"400:92:50","statements":[{"nodeType":"YulAssignment","src":"410:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"422:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"433:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"418:3:50"},"nodeType":"YulFunctionCall","src":"418:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"410:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"452:9:50"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"477:6:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"470:6:50"},"nodeType":"YulFunctionCall","src":"470:14:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"463:6:50"},"nodeType":"YulFunctionCall","src":"463:22:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"445:6:50"},"nodeType":"YulFunctionCall","src":"445:41:50"},"nodeType":"YulExpressionStatement","src":"445:41:50"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"369:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"380:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"391:4:50","type":""}],"src":"305:187:50"},{"body":{"nodeType":"YulBlock","src":"640:358:50","statements":[{"nodeType":"YulAssignment","src":"650:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"662:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"673:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"658:3:50"},"nodeType":"YulFunctionCall","src":"658:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"650:4:50"}]},{"nodeType":"YulVariableDeclaration","src":"685:20:50","value":{"name":"headStart","nodeType":"YulIdentifier","src":"696:9:50"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"689:3:50","type":""}]},{"nodeType":"YulAssignment","src":"714:16:50","value":{"name":"headStart","nodeType":"YulIdentifier","src":"721:9:50"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"714:3:50"}]},{"nodeType":"YulVariableDeclaration","src":"739:20:50","value":{"name":"value0","nodeType":"YulIdentifier","src":"753:6:50"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"743:6:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"768:10:50","value":{"kind":"number","nodeType":"YulLiteral","src":"777:1:50","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"772:1:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"834:158:50","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"855:3:50"},{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"870:6:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"864:5:50"},"nodeType":"YulFunctionCall","src":"864:13:50"},{"kind":"number","nodeType":"YulLiteral","src":"879:4:50","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"860:3:50"},"nodeType":"YulFunctionCall","src":"860:24:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"848:6:50"},"nodeType":"YulFunctionCall","src":"848:37:50"},"nodeType":"YulExpressionStatement","src":"848:37:50"},{"nodeType":"YulVariableDeclaration","src":"898:14:50","value":{"kind":"number","nodeType":"YulLiteral","src":"908:4:50","type":"","value":"0x20"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"902:2:50","type":""}]},{"nodeType":"YulAssignment","src":"925:19:50","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"936:3:50"},{"name":"_1","nodeType":"YulIdentifier","src":"941:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"932:3:50"},"nodeType":"YulFunctionCall","src":"932:12:50"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"925:3:50"}]},{"nodeType":"YulAssignment","src":"957:25:50","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"971:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"979:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"967:3:50"},"nodeType":"YulFunctionCall","src":"967:15:50"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"957:6:50"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"798:1:50"},{"kind":"number","nodeType":"YulLiteral","src":"801:4:50","type":"","value":"0x03"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"795:2:50"},"nodeType":"YulFunctionCall","src":"795:11:50"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"807:18:50","statements":[{"nodeType":"YulAssignment","src":"809:14:50","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"818:1:50"},{"kind":"number","nodeType":"YulLiteral","src":"821:1:50","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"814:3:50"},"nodeType":"YulFunctionCall","src":"814:9:50"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"809:1:50"}]}]},"pre":{"nodeType":"YulBlock","src":"791:3:50","statements":[]},"src":"787:205:50"}]},"name":"abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"609:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"620:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"631:4:50","type":""}],"src":"497:501:50"},{"body":{"nodeType":"YulBlock","src":"1048:109:50","statements":[{"body":{"nodeType":"YulBlock","src":"1135:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1144:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1147:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1137:6:50"},"nodeType":"YulFunctionCall","src":"1137:12:50"},"nodeType":"YulExpressionStatement","src":"1137:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1071:5:50"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1082:5:50"},{"kind":"number","nodeType":"YulLiteral","src":"1089:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1078:3:50"},"nodeType":"YulFunctionCall","src":"1078:54:50"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1068:2:50"},"nodeType":"YulFunctionCall","src":"1068:65:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1061:6:50"},"nodeType":"YulFunctionCall","src":"1061:73:50"},"nodeType":"YulIf","src":"1058:93:50"}]},"name":"validator_revert_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1037:5:50","type":""}],"src":"1003:154:50"},{"body":{"nodeType":"YulBlock","src":"1232:177:50","statements":[{"body":{"nodeType":"YulBlock","src":"1278:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1287:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1290:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1280:6:50"},"nodeType":"YulFunctionCall","src":"1280:12:50"},"nodeType":"YulExpressionStatement","src":"1280:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1253:7:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"1262:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1249:3:50"},"nodeType":"YulFunctionCall","src":"1249:23:50"},{"kind":"number","nodeType":"YulLiteral","src":"1274:2:50","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1245:3:50"},"nodeType":"YulFunctionCall","src":"1245:32:50"},"nodeType":"YulIf","src":"1242:52:50"},{"nodeType":"YulVariableDeclaration","src":"1303:36:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1329:9:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1316:12:50"},"nodeType":"YulFunctionCall","src":"1316:23:50"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"1307:5:50","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1373:5:50"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"1348:24:50"},"nodeType":"YulFunctionCall","src":"1348:31:50"},"nodeType":"YulExpressionStatement","src":"1348:31:50"},{"nodeType":"YulAssignment","src":"1388:15:50","value":{"name":"value","nodeType":"YulIdentifier","src":"1398:5:50"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1388:6:50"}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1198:9:50","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1209:7:50","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1221:6:50","type":""}],"src":"1162:247:50"},{"body":{"nodeType":"YulBlock","src":"1528:125:50","statements":[{"nodeType":"YulAssignment","src":"1538:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1550:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"1561:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1546:3:50"},"nodeType":"YulFunctionCall","src":"1546:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1538:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1580:9:50"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1595:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"1603:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1591:3:50"},"nodeType":"YulFunctionCall","src":"1591:55:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1573:6:50"},"nodeType":"YulFunctionCall","src":"1573:74:50"},"nodeType":"YulExpressionStatement","src":"1573:74:50"}]},"name":"abi_encode_tuple_t_contract$_IDAO_$2538__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1497:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1508:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1519:4:50","type":""}],"src":"1414:239:50"},{"body":{"nodeType":"YulBlock","src":"1772:229:50","statements":[{"nodeType":"YulAssignment","src":"1782:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1794:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"1805:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1790:3:50"},"nodeType":"YulFunctionCall","src":"1790:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1782:4:50"}]},{"body":{"nodeType":"YulBlock","src":"1850:111:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1871:1:50","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1878:3:50","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"1883:10:50","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1874:3:50"},"nodeType":"YulFunctionCall","src":"1874:20:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1864:6:50"},"nodeType":"YulFunctionCall","src":"1864:31:50"},"nodeType":"YulExpressionStatement","src":"1864:31:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1915:1:50","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"1918:4:50","type":"","value":"0x21"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1908:6:50"},"nodeType":"YulFunctionCall","src":"1908:15:50"},"nodeType":"YulExpressionStatement","src":"1908:15:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1943:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1946:4:50","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1936:6:50"},"nodeType":"YulFunctionCall","src":"1936:15:50"},"nodeType":"YulExpressionStatement","src":"1936:15:50"}]},"condition":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1830:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"1838:1:50","type":"","value":"3"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"1827:2:50"},"nodeType":"YulFunctionCall","src":"1827:13:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1820:6:50"},"nodeType":"YulFunctionCall","src":"1820:21:50"},"nodeType":"YulIf","src":"1817:144:50"},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1977:9:50"},{"name":"value0","nodeType":"YulIdentifier","src":"1988:6:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1970:6:50"},"nodeType":"YulFunctionCall","src":"1970:25:50"},"nodeType":"YulExpressionStatement","src":"1970:25:50"}]},"name":"abi_encode_tuple_t_enum$_PluginType_$3994__to_t_uint8__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1741:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1752:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1763:4:50","type":""}],"src":"1658:343:50"},{"body":{"nodeType":"YulBlock","src":"2038:95:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2055:1:50","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2062:3:50","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"2067:10:50","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2058:3:50"},"nodeType":"YulFunctionCall","src":"2058:20:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2048:6:50"},"nodeType":"YulFunctionCall","src":"2048:31:50"},"nodeType":"YulExpressionStatement","src":"2048:31:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2095:1:50","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"2098:4:50","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2088:6:50"},"nodeType":"YulFunctionCall","src":"2088:15:50"},"nodeType":"YulExpressionStatement","src":"2088:15:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2119:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2122:4:50","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2112:6:50"},"nodeType":"YulFunctionCall","src":"2112:15:50"},"nodeType":"YulExpressionStatement","src":"2112:15:50"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"2006:127:50"},{"body":{"nodeType":"YulBlock","src":"2234:960:50","statements":[{"body":{"nodeType":"YulBlock","src":"2280:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2289:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2292:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2282:6:50"},"nodeType":"YulFunctionCall","src":"2282:12:50"},"nodeType":"YulExpressionStatement","src":"2282:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2255:7:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"2264:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2251:3:50"},"nodeType":"YulFunctionCall","src":"2251:23:50"},{"kind":"number","nodeType":"YulLiteral","src":"2276:2:50","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2247:3:50"},"nodeType":"YulFunctionCall","src":"2247:32:50"},"nodeType":"YulIf","src":"2244:52:50"},{"nodeType":"YulVariableDeclaration","src":"2305:36:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2331:9:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2318:12:50"},"nodeType":"YulFunctionCall","src":"2318:23:50"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"2309:5:50","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2375:5:50"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"2350:24:50"},"nodeType":"YulFunctionCall","src":"2350:31:50"},"nodeType":"YulExpressionStatement","src":"2350:31:50"},{"nodeType":"YulAssignment","src":"2390:15:50","value":{"name":"value","nodeType":"YulIdentifier","src":"2400:5:50"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2390:6:50"}]},{"nodeType":"YulVariableDeclaration","src":"2414:46:50","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2445:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"2456:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2441:3:50"},"nodeType":"YulFunctionCall","src":"2441:18:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2428:12:50"},"nodeType":"YulFunctionCall","src":"2428:32:50"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"2418:6:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2469:28:50","value":{"kind":"number","nodeType":"YulLiteral","src":"2479:18:50","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"2473:2:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"2524:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2533:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2536:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2526:6:50"},"nodeType":"YulFunctionCall","src":"2526:12:50"},"nodeType":"YulExpressionStatement","src":"2526:12:50"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"2512:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"2520:2:50"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2509:2:50"},"nodeType":"YulFunctionCall","src":"2509:14:50"},"nodeType":"YulIf","src":"2506:34:50"},{"nodeType":"YulVariableDeclaration","src":"2549:32:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2563:9:50"},{"name":"offset","nodeType":"YulIdentifier","src":"2574:6:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2559:3:50"},"nodeType":"YulFunctionCall","src":"2559:22:50"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"2553:2:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"2629:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2638:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2641:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2631:6:50"},"nodeType":"YulFunctionCall","src":"2631:12:50"},"nodeType":"YulExpressionStatement","src":"2631:12:50"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"2608:2:50"},{"kind":"number","nodeType":"YulLiteral","src":"2612:4:50","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2604:3:50"},"nodeType":"YulFunctionCall","src":"2604:13:50"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2619:7:50"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2600:3:50"},"nodeType":"YulFunctionCall","src":"2600:27:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2593:6:50"},"nodeType":"YulFunctionCall","src":"2593:35:50"},"nodeType":"YulIf","src":"2590:55:50"},{"nodeType":"YulVariableDeclaration","src":"2654:26:50","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"2677:2:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2664:12:50"},"nodeType":"YulFunctionCall","src":"2664:16:50"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"2658:2:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"2703:22:50","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"2705:16:50"},"nodeType":"YulFunctionCall","src":"2705:18:50"},"nodeType":"YulExpressionStatement","src":"2705:18:50"}]},"condition":{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"2695:2:50"},{"name":"_1","nodeType":"YulIdentifier","src":"2699:2:50"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2692:2:50"},"nodeType":"YulFunctionCall","src":"2692:10:50"},"nodeType":"YulIf","src":"2689:36:50"},{"nodeType":"YulVariableDeclaration","src":"2734:17:50","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2748:2:50","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"2744:3:50"},"nodeType":"YulFunctionCall","src":"2744:7:50"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"2738:2:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2760:23:50","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2780:2:50","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2774:5:50"},"nodeType":"YulFunctionCall","src":"2774:9:50"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"2764:6:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2792:71:50","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"2814:6:50"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"2838:2:50"},{"kind":"number","nodeType":"YulLiteral","src":"2842:4:50","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2834:3:50"},"nodeType":"YulFunctionCall","src":"2834:13:50"},{"name":"_4","nodeType":"YulIdentifier","src":"2849:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2830:3:50"},"nodeType":"YulFunctionCall","src":"2830:22:50"},{"kind":"number","nodeType":"YulLiteral","src":"2854:2:50","type":"","value":"63"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2826:3:50"},"nodeType":"YulFunctionCall","src":"2826:31:50"},{"name":"_4","nodeType":"YulIdentifier","src":"2859:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2822:3:50"},"nodeType":"YulFunctionCall","src":"2822:40:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2810:3:50"},"nodeType":"YulFunctionCall","src":"2810:53:50"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"2796:10:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"2922:22:50","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"2924:16:50"},"nodeType":"YulFunctionCall","src":"2924:18:50"},"nodeType":"YulExpressionStatement","src":"2924:18:50"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"2881:10:50"},{"name":"_1","nodeType":"YulIdentifier","src":"2893:2:50"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2878:2:50"},"nodeType":"YulFunctionCall","src":"2878:18:50"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"2901:10:50"},{"name":"memPtr","nodeType":"YulIdentifier","src":"2913:6:50"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2898:2:50"},"nodeType":"YulFunctionCall","src":"2898:22:50"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"2875:2:50"},"nodeType":"YulFunctionCall","src":"2875:46:50"},"nodeType":"YulIf","src":"2872:72:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2960:2:50","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"2964:10:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2953:6:50"},"nodeType":"YulFunctionCall","src":"2953:22:50"},"nodeType":"YulExpressionStatement","src":"2953:22:50"},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"2991:6:50"},{"name":"_3","nodeType":"YulIdentifier","src":"2999:2:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2984:6:50"},"nodeType":"YulFunctionCall","src":"2984:18:50"},"nodeType":"YulExpressionStatement","src":"2984:18:50"},{"body":{"nodeType":"YulBlock","src":"3048:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3057:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3060:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3050:6:50"},"nodeType":"YulFunctionCall","src":"3050:12:50"},"nodeType":"YulExpressionStatement","src":"3050:12:50"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"3025:2:50"},{"name":"_3","nodeType":"YulIdentifier","src":"3029:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3021:3:50"},"nodeType":"YulFunctionCall","src":"3021:11:50"},{"kind":"number","nodeType":"YulLiteral","src":"3034:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3017:3:50"},"nodeType":"YulFunctionCall","src":"3017:20:50"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3039:7:50"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3014:2:50"},"nodeType":"YulFunctionCall","src":"3014:33:50"},"nodeType":"YulIf","src":"3011:53:50"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"3090:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"3098:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3086:3:50"},"nodeType":"YulFunctionCall","src":"3086:15:50"},{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"3107:2:50"},{"kind":"number","nodeType":"YulLiteral","src":"3111:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3103:3:50"},"nodeType":"YulFunctionCall","src":"3103:11:50"},{"name":"_3","nodeType":"YulIdentifier","src":"3116:2:50"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"3073:12:50"},"nodeType":"YulFunctionCall","src":"3073:46:50"},"nodeType":"YulExpressionStatement","src":"3073:46:50"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"3143:6:50"},{"name":"_3","nodeType":"YulIdentifier","src":"3151:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3139:3:50"},"nodeType":"YulFunctionCall","src":"3139:15:50"},{"kind":"number","nodeType":"YulLiteral","src":"3156:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3135:3:50"},"nodeType":"YulFunctionCall","src":"3135:24:50"},{"kind":"number","nodeType":"YulLiteral","src":"3161:1:50","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3128:6:50"},"nodeType":"YulFunctionCall","src":"3128:35:50"},"nodeType":"YulExpressionStatement","src":"3128:35:50"},{"nodeType":"YulAssignment","src":"3172:16:50","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"3182:6:50"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"3172:6:50"}]}]},"name":"abi_decode_tuple_t_addresst_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2192:9:50","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2203:7:50","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2215:6:50","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2223:6:50","type":""}],"src":"2138:1056:50"},{"body":{"nodeType":"YulBlock","src":"3300:76:50","statements":[{"nodeType":"YulAssignment","src":"3310:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3322:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"3333:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3318:3:50"},"nodeType":"YulFunctionCall","src":"3318:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3310:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3352:9:50"},{"name":"value0","nodeType":"YulIdentifier","src":"3363:6:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3345:6:50"},"nodeType":"YulFunctionCall","src":"3345:25:50"},"nodeType":"YulExpressionStatement","src":"3345:25:50"}]},"name":"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3269:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3280:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3291:4:50","type":""}],"src":"3199:177:50"},{"body":{"nodeType":"YulBlock","src":"3482:125:50","statements":[{"nodeType":"YulAssignment","src":"3492:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3504:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"3515:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3500:3:50"},"nodeType":"YulFunctionCall","src":"3500:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3492:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3534:9:50"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3549:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"3557:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3545:3:50"},"nodeType":"YulFunctionCall","src":"3545:55:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3527:6:50"},"nodeType":"YulFunctionCall","src":"3527:74:50"},"nodeType":"YulExpressionStatement","src":"3527:74:50"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3451:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3462:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3473:4:50","type":""}],"src":"3381:226:50"},{"body":{"nodeType":"YulBlock","src":"3713:76:50","statements":[{"nodeType":"YulAssignment","src":"3723:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3735:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"3746:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3731:3:50"},"nodeType":"YulFunctionCall","src":"3731:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3723:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3765:9:50"},{"name":"value0","nodeType":"YulIdentifier","src":"3776:6:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3758:6:50"},"nodeType":"YulFunctionCall","src":"3758:25:50"},"nodeType":"YulExpressionStatement","src":"3758:25:50"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3682:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3693:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3704:4:50","type":""}],"src":"3612:177:50"},{"body":{"nodeType":"YulBlock","src":"3877:177:50","statements":[{"body":{"nodeType":"YulBlock","src":"3923:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3932:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3935:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3925:6:50"},"nodeType":"YulFunctionCall","src":"3925:12:50"},"nodeType":"YulExpressionStatement","src":"3925:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3898:7:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"3907:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3894:3:50"},"nodeType":"YulFunctionCall","src":"3894:23:50"},{"kind":"number","nodeType":"YulLiteral","src":"3919:2:50","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3890:3:50"},"nodeType":"YulFunctionCall","src":"3890:32:50"},"nodeType":"YulIf","src":"3887:52:50"},{"nodeType":"YulVariableDeclaration","src":"3948:36:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3974:9:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3961:12:50"},"nodeType":"YulFunctionCall","src":"3961:23:50"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"3952:5:50","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4018:5:50"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"3993:24:50"},"nodeType":"YulFunctionCall","src":"3993:31:50"},"nodeType":"YulExpressionStatement","src":"3993:31:50"},{"nodeType":"YulAssignment","src":"4033:15:50","value":{"name":"value","nodeType":"YulIdentifier","src":"4043:5:50"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"4033:6:50"}]}]},"name":"abi_decode_tuple_t_contract$_IDAO_$2538","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3843:9:50","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3854:7:50","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3866:6:50","type":""}],"src":"3794:260:50"},{"body":{"nodeType":"YulBlock","src":"4233:234:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4250:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"4261:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4243:6:50"},"nodeType":"YulFunctionCall","src":"4243:21:50"},"nodeType":"YulExpressionStatement","src":"4243:21:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4284:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"4295:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4280:3:50"},"nodeType":"YulFunctionCall","src":"4280:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"4300:2:50","type":"","value":"44"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4273:6:50"},"nodeType":"YulFunctionCall","src":"4273:30:50"},"nodeType":"YulExpressionStatement","src":"4273:30:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4323:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"4334:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4319:3:50"},"nodeType":"YulFunctionCall","src":"4319:18:50"},{"hexValue":"46756e6374696f6e206d7573742062652063616c6c6564207468726f75676820","kind":"string","nodeType":"YulLiteral","src":"4339:34:50","type":"","value":"Function must be called through "}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4312:6:50"},"nodeType":"YulFunctionCall","src":"4312:62:50"},"nodeType":"YulExpressionStatement","src":"4312:62:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4394:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"4405:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4390:3:50"},"nodeType":"YulFunctionCall","src":"4390:18:50"},{"hexValue":"64656c656761746563616c6c","kind":"string","nodeType":"YulLiteral","src":"4410:14:50","type":"","value":"delegatecall"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4383:6:50"},"nodeType":"YulFunctionCall","src":"4383:42:50"},"nodeType":"YulExpressionStatement","src":"4383:42:50"},{"nodeType":"YulAssignment","src":"4434:27:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4446:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"4457:3:50","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4442:3:50"},"nodeType":"YulFunctionCall","src":"4442:19:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4434:4:50"}]}]},"name":"abi_encode_tuple_t_stringliteral_36e108fa7a809b52ab1951dd91c117a7bc9ac5250bdf1aa162d4e104f7edf9eb__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4210:9:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4224:4:50","type":""}],"src":"4059:408:50"},{"body":{"nodeType":"YulBlock","src":"4646:234:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4663:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"4674:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4656:6:50"},"nodeType":"YulFunctionCall","src":"4656:21:50"},"nodeType":"YulExpressionStatement","src":"4656:21:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4697:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"4708:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4693:3:50"},"nodeType":"YulFunctionCall","src":"4693:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"4713:2:50","type":"","value":"44"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4686:6:50"},"nodeType":"YulFunctionCall","src":"4686:30:50"},"nodeType":"YulExpressionStatement","src":"4686:30:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4736:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"4747:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4732:3:50"},"nodeType":"YulFunctionCall","src":"4732:18:50"},{"hexValue":"46756e6374696f6e206d7573742062652063616c6c6564207468726f75676820","kind":"string","nodeType":"YulLiteral","src":"4752:34:50","type":"","value":"Function must be called through "}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4725:6:50"},"nodeType":"YulFunctionCall","src":"4725:62:50"},"nodeType":"YulExpressionStatement","src":"4725:62:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4807:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"4818:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4803:3:50"},"nodeType":"YulFunctionCall","src":"4803:18:50"},{"hexValue":"6163746976652070726f7879","kind":"string","nodeType":"YulLiteral","src":"4823:14:50","type":"","value":"active proxy"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4796:6:50"},"nodeType":"YulFunctionCall","src":"4796:42:50"},"nodeType":"YulExpressionStatement","src":"4796:42:50"},{"nodeType":"YulAssignment","src":"4847:27:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4859:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"4870:3:50","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4855:3:50"},"nodeType":"YulFunctionCall","src":"4855:19:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4847:4:50"}]}]},"name":"abi_encode_tuple_t_stringliteral_52f1ead4d9653e13afbd2e90ef2587c30187cd50b2e97d784e3f7a7541247434__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4623:9:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4637:4:50","type":""}],"src":"4472:408:50"},{"body":{"nodeType":"YulBlock","src":"5059:246:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5076:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"5087:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5069:6:50"},"nodeType":"YulFunctionCall","src":"5069:21:50"},"nodeType":"YulExpressionStatement","src":"5069:21:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5110:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"5121:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5106:3:50"},"nodeType":"YulFunctionCall","src":"5106:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"5126:2:50","type":"","value":"56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5099:6:50"},"nodeType":"YulFunctionCall","src":"5099:30:50"},"nodeType":"YulExpressionStatement","src":"5099:30:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5149:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"5160:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5145:3:50"},"nodeType":"YulFunctionCall","src":"5145:18:50"},{"hexValue":"555550535570677261646561626c653a206d757374206e6f742062652063616c","kind":"string","nodeType":"YulLiteral","src":"5165:34:50","type":"","value":"UUPSUpgradeable: must not be cal"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5138:6:50"},"nodeType":"YulFunctionCall","src":"5138:62:50"},"nodeType":"YulExpressionStatement","src":"5138:62:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5220:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"5231:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5216:3:50"},"nodeType":"YulFunctionCall","src":"5216:18:50"},{"hexValue":"6c6564207468726f7567682064656c656761746563616c6c","kind":"string","nodeType":"YulLiteral","src":"5236:26:50","type":"","value":"led through delegatecall"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5209:6:50"},"nodeType":"YulFunctionCall","src":"5209:54:50"},"nodeType":"YulExpressionStatement","src":"5209:54:50"},{"nodeType":"YulAssignment","src":"5272:27:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5284:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"5295:3:50","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5280:3:50"},"nodeType":"YulFunctionCall","src":"5280:19:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5272:4:50"}]}]},"name":"abi_encode_tuple_t_stringliteral_67f0151b4ad1dcfa0e3302a0cd6019f51582ef1807b37dceb00bd852a514f7f4__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5036:9:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5050:4:50","type":""}],"src":"4885:420:50"},{"body":{"nodeType":"YulBlock","src":"5391:103:50","statements":[{"body":{"nodeType":"YulBlock","src":"5437:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5446:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5449:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5439:6:50"},"nodeType":"YulFunctionCall","src":"5439:12:50"},"nodeType":"YulExpressionStatement","src":"5439:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"5412:7:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"5421:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5408:3:50"},"nodeType":"YulFunctionCall","src":"5408:23:50"},{"kind":"number","nodeType":"YulLiteral","src":"5433:2:50","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"5404:3:50"},"nodeType":"YulFunctionCall","src":"5404:32:50"},"nodeType":"YulIf","src":"5401:52:50"},{"nodeType":"YulAssignment","src":"5462:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5478:9:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5472:5:50"},"nodeType":"YulFunctionCall","src":"5472:16:50"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"5462:6:50"}]}]},"name":"abi_decode_tuple_t_bytes32_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5357:9:50","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"5368:7:50","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"5380:6:50","type":""}],"src":"5310:184:50"},{"body":{"nodeType":"YulBlock","src":"5673:236:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5690:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"5701:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5683:6:50"},"nodeType":"YulFunctionCall","src":"5683:21:50"},"nodeType":"YulExpressionStatement","src":"5683:21:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5724:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"5735:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5720:3:50"},"nodeType":"YulFunctionCall","src":"5720:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"5740:2:50","type":"","value":"46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5713:6:50"},"nodeType":"YulFunctionCall","src":"5713:30:50"},"nodeType":"YulExpressionStatement","src":"5713:30:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5763:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"5774:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5759:3:50"},"nodeType":"YulFunctionCall","src":"5759:18:50"},{"hexValue":"45524331393637557067726164653a206e657720696d706c656d656e74617469","kind":"string","nodeType":"YulLiteral","src":"5779:34:50","type":"","value":"ERC1967Upgrade: new implementati"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5752:6:50"},"nodeType":"YulFunctionCall","src":"5752:62:50"},"nodeType":"YulExpressionStatement","src":"5752:62:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5834:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"5845:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5830:3:50"},"nodeType":"YulFunctionCall","src":"5830:18:50"},{"hexValue":"6f6e206973206e6f742055555053","kind":"string","nodeType":"YulLiteral","src":"5850:16:50","type":"","value":"on is not UUPS"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5823:6:50"},"nodeType":"YulFunctionCall","src":"5823:44:50"},"nodeType":"YulExpressionStatement","src":"5823:44:50"},{"nodeType":"YulAssignment","src":"5876:27:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5888:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"5899:3:50","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5884:3:50"},"nodeType":"YulFunctionCall","src":"5884:19:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5876:4:50"}]}]},"name":"abi_encode_tuple_t_stringliteral_8e8e2fbcb586f700b5b14e2c4a650c8d83b9773c31c5fe8962070ea544e11f24__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5650:9:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5664:4:50","type":""}],"src":"5499:410:50"},{"body":{"nodeType":"YulBlock","src":"6088:231:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6105:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"6116:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6098:6:50"},"nodeType":"YulFunctionCall","src":"6098:21:50"},"nodeType":"YulExpressionStatement","src":"6098:21:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6139:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"6150:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6135:3:50"},"nodeType":"YulFunctionCall","src":"6135:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"6155:2:50","type":"","value":"41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6128:6:50"},"nodeType":"YulFunctionCall","src":"6128:30:50"},"nodeType":"YulExpressionStatement","src":"6128:30:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6178:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"6189:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6174:3:50"},"nodeType":"YulFunctionCall","src":"6174:18:50"},{"hexValue":"45524331393637557067726164653a20756e737570706f727465642070726f78","kind":"string","nodeType":"YulLiteral","src":"6194:34:50","type":"","value":"ERC1967Upgrade: unsupported prox"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6167:6:50"},"nodeType":"YulFunctionCall","src":"6167:62:50"},"nodeType":"YulExpressionStatement","src":"6167:62:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6249:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"6260:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6245:3:50"},"nodeType":"YulFunctionCall","src":"6245:18:50"},{"hexValue":"6961626c6555554944","kind":"string","nodeType":"YulLiteral","src":"6265:11:50","type":"","value":"iableUUID"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6238:6:50"},"nodeType":"YulFunctionCall","src":"6238:39:50"},"nodeType":"YulExpressionStatement","src":"6238:39:50"},{"nodeType":"YulAssignment","src":"6286:27:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6298:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"6309:3:50","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6294:3:50"},"nodeType":"YulFunctionCall","src":"6294:19:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6286:4:50"}]}]},"name":"abi_encode_tuple_t_stringliteral_76b6b6debfc5febf101145a79ecf0b0d2e89e397dfdab2bca99888370411152c__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6065:9:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6079:4:50","type":""}],"src":"5914:405:50"},{"body":{"nodeType":"YulBlock","src":"6498:233:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6515:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"6526:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6508:6:50"},"nodeType":"YulFunctionCall","src":"6508:21:50"},"nodeType":"YulExpressionStatement","src":"6508:21:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6549:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"6560:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6545:3:50"},"nodeType":"YulFunctionCall","src":"6545:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"6565:2:50","type":"","value":"43"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6538:6:50"},"nodeType":"YulFunctionCall","src":"6538:30:50"},"nodeType":"YulExpressionStatement","src":"6538:30:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6588:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"6599:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6584:3:50"},"nodeType":"YulFunctionCall","src":"6584:18:50"},{"hexValue":"496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069","kind":"string","nodeType":"YulLiteral","src":"6604:34:50","type":"","value":"Initializable: contract is not i"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6577:6:50"},"nodeType":"YulFunctionCall","src":"6577:62:50"},"nodeType":"YulExpressionStatement","src":"6577:62:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6659:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"6670:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6655:3:50"},"nodeType":"YulFunctionCall","src":"6655:18:50"},{"hexValue":"6e697469616c697a696e67","kind":"string","nodeType":"YulLiteral","src":"6675:13:50","type":"","value":"nitializing"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6648:6:50"},"nodeType":"YulFunctionCall","src":"6648:41:50"},"nodeType":"YulExpressionStatement","src":"6648:41:50"},{"nodeType":"YulAssignment","src":"6698:27:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6710:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"6721:3:50","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6706:3:50"},"nodeType":"YulFunctionCall","src":"6706:19:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6698:4:50"}]}]},"name":"abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6475:9:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6489:4:50","type":""}],"src":"6324:407:50"},{"body":{"nodeType":"YulBlock","src":"6949:472:50","statements":[{"nodeType":"YulVariableDeclaration","src":"6959:52:50","value":{"kind":"number","nodeType":"YulLiteral","src":"6969:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"6963:2:50","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7027:9:50"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7042:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"7050:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7038:3:50"},"nodeType":"YulFunctionCall","src":"7038:15:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7020:6:50"},"nodeType":"YulFunctionCall","src":"7020:34:50"},"nodeType":"YulExpressionStatement","src":"7020:34:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7074:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"7085:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7070:3:50"},"nodeType":"YulFunctionCall","src":"7070:18:50"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"7094:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"7102:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7090:3:50"},"nodeType":"YulFunctionCall","src":"7090:15:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7063:6:50"},"nodeType":"YulFunctionCall","src":"7063:43:50"},"nodeType":"YulExpressionStatement","src":"7063:43:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7126:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"7137:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7122:3:50"},"nodeType":"YulFunctionCall","src":"7122:18:50"},{"name":"value2","nodeType":"YulIdentifier","src":"7142:6:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7115:6:50"},"nodeType":"YulFunctionCall","src":"7115:34:50"},"nodeType":"YulExpressionStatement","src":"7115:34:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7169:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"7180:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7165:3:50"},"nodeType":"YulFunctionCall","src":"7165:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"7185:3:50","type":"","value":"128"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7158:6:50"},"nodeType":"YulFunctionCall","src":"7158:31:50"},"nodeType":"YulExpressionStatement","src":"7158:31:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7209:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"7220:3:50","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7205:3:50"},"nodeType":"YulFunctionCall","src":"7205:19:50"},{"name":"value4","nodeType":"YulIdentifier","src":"7226:6:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7198:6:50"},"nodeType":"YulFunctionCall","src":"7198:35:50"},"nodeType":"YulExpressionStatement","src":"7198:35:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7259:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"7270:3:50","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7255:3:50"},"nodeType":"YulFunctionCall","src":"7255:19:50"},{"name":"value3","nodeType":"YulIdentifier","src":"7276:6:50"},{"name":"value4","nodeType":"YulIdentifier","src":"7284:6:50"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"7242:12:50"},"nodeType":"YulFunctionCall","src":"7242:49:50"},"nodeType":"YulExpressionStatement","src":"7242:49:50"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7315:9:50"},{"name":"value4","nodeType":"YulIdentifier","src":"7326:6:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7311:3:50"},"nodeType":"YulFunctionCall","src":"7311:22:50"},{"kind":"number","nodeType":"YulLiteral","src":"7335:3:50","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7307:3:50"},"nodeType":"YulFunctionCall","src":"7307:32:50"},{"kind":"number","nodeType":"YulLiteral","src":"7341:1:50","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7300:6:50"},"nodeType":"YulFunctionCall","src":"7300:43:50"},"nodeType":"YulExpressionStatement","src":"7300:43:50"},{"nodeType":"YulAssignment","src":"7352:63:50","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7368:9:50"},{"arguments":[{"arguments":[{"name":"value4","nodeType":"YulIdentifier","src":"7387:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"7395:2:50","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7383:3:50"},"nodeType":"YulFunctionCall","src":"7383:15:50"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7404:2:50","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"7400:3:50"},"nodeType":"YulFunctionCall","src":"7400:7:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7379:3:50"},"nodeType":"YulFunctionCall","src":"7379:29:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7364:3:50"},"nodeType":"YulFunctionCall","src":"7364:45:50"},{"kind":"number","nodeType":"YulLiteral","src":"7411:3:50","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7360:3:50"},"nodeType":"YulFunctionCall","src":"7360:55:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7352:4:50"}]}]},"name":"abi_encode_tuple_t_address_t_address_t_bytes32_t_bytes_calldata_ptr__to_t_address_t_address_t_bytes32_t_bytes_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6886:9:50","type":""},{"name":"value4","nodeType":"YulTypedName","src":"6897:6:50","type":""},{"name":"value3","nodeType":"YulTypedName","src":"6905:6:50","type":""},{"name":"value2","nodeType":"YulTypedName","src":"6913:6:50","type":""},{"name":"value1","nodeType":"YulTypedName","src":"6921:6:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"6929:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6940:4:50","type":""}],"src":"6736:685:50"},{"body":{"nodeType":"YulBlock","src":"7504:199:50","statements":[{"body":{"nodeType":"YulBlock","src":"7550:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7559:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7562:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7552:6:50"},"nodeType":"YulFunctionCall","src":"7552:12:50"},"nodeType":"YulExpressionStatement","src":"7552:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"7525:7:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"7534:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"7521:3:50"},"nodeType":"YulFunctionCall","src":"7521:23:50"},{"kind":"number","nodeType":"YulLiteral","src":"7546:2:50","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"7517:3:50"},"nodeType":"YulFunctionCall","src":"7517:32:50"},"nodeType":"YulIf","src":"7514:52:50"},{"nodeType":"YulVariableDeclaration","src":"7575:29:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7594:9:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"7588:5:50"},"nodeType":"YulFunctionCall","src":"7588:16:50"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"7579:5:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"7657:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7666:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7669:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7659:6:50"},"nodeType":"YulFunctionCall","src":"7659:12:50"},"nodeType":"YulExpressionStatement","src":"7659:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7626:5:50"},{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7647:5:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"7640:6:50"},"nodeType":"YulFunctionCall","src":"7640:13:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"7633:6:50"},"nodeType":"YulFunctionCall","src":"7633:21:50"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"7623:2:50"},"nodeType":"YulFunctionCall","src":"7623:32:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"7616:6:50"},"nodeType":"YulFunctionCall","src":"7616:40:50"},"nodeType":"YulIf","src":"7613:60:50"},{"nodeType":"YulAssignment","src":"7682:15:50","value":{"name":"value","nodeType":"YulIdentifier","src":"7692:5:50"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"7682:6:50"}]}]},"name":"abi_decode_tuple_t_bool_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7470:9:50","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"7481:7:50","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"7493:6:50","type":""}],"src":"7426:277:50"},{"body":{"nodeType":"YulBlock","src":"7893:294:50","statements":[{"nodeType":"YulAssignment","src":"7903:27:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7915:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"7926:3:50","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7911:3:50"},"nodeType":"YulFunctionCall","src":"7911:19:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7903:4:50"}]},{"nodeType":"YulVariableDeclaration","src":"7939:52:50","value":{"kind":"number","nodeType":"YulLiteral","src":"7949:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"7943:2:50","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8007:9:50"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"8022:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"8030:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8018:3:50"},"nodeType":"YulFunctionCall","src":"8018:15:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8000:6:50"},"nodeType":"YulFunctionCall","src":"8000:34:50"},"nodeType":"YulExpressionStatement","src":"8000:34:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8054:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"8065:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8050:3:50"},"nodeType":"YulFunctionCall","src":"8050:18:50"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"8074:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"8082:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8070:3:50"},"nodeType":"YulFunctionCall","src":"8070:15:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8043:6:50"},"nodeType":"YulFunctionCall","src":"8043:43:50"},"nodeType":"YulExpressionStatement","src":"8043:43:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8106:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"8117:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8102:3:50"},"nodeType":"YulFunctionCall","src":"8102:18:50"},{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"8126:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"8134:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8122:3:50"},"nodeType":"YulFunctionCall","src":"8122:15:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8095:6:50"},"nodeType":"YulFunctionCall","src":"8095:43:50"},"nodeType":"YulExpressionStatement","src":"8095:43:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8158:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"8169:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8154:3:50"},"nodeType":"YulFunctionCall","src":"8154:18:50"},{"name":"value3","nodeType":"YulIdentifier","src":"8174:6:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8147:6:50"},"nodeType":"YulFunctionCall","src":"8147:34:50"},"nodeType":"YulExpressionStatement","src":"8147:34:50"}]},"name":"abi_encode_tuple_t_address_t_address_t_address_t_bytes32__to_t_address_t_address_t_address_t_bytes32__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7838:9:50","type":""},{"name":"value3","nodeType":"YulTypedName","src":"7849:6:50","type":""},{"name":"value2","nodeType":"YulTypedName","src":"7857:6:50","type":""},{"name":"value1","nodeType":"YulTypedName","src":"7865:6:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"7873:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7884:4:50","type":""}],"src":"7708:479:50"},{"body":{"nodeType":"YulBlock","src":"8366:235:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8383:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"8394:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8376:6:50"},"nodeType":"YulFunctionCall","src":"8376:21:50"},"nodeType":"YulExpressionStatement","src":"8376:21:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8417:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"8428:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8413:3:50"},"nodeType":"YulFunctionCall","src":"8413:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"8433:2:50","type":"","value":"45"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8406:6:50"},"nodeType":"YulFunctionCall","src":"8406:30:50"},"nodeType":"YulExpressionStatement","src":"8406:30:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8456:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"8467:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8452:3:50"},"nodeType":"YulFunctionCall","src":"8452:18:50"},{"hexValue":"455243313936373a206e657720696d706c656d656e746174696f6e206973206e","kind":"string","nodeType":"YulLiteral","src":"8472:34:50","type":"","value":"ERC1967: new implementation is n"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8445:6:50"},"nodeType":"YulFunctionCall","src":"8445:62:50"},"nodeType":"YulExpressionStatement","src":"8445:62:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8527:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"8538:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8523:3:50"},"nodeType":"YulFunctionCall","src":"8523:18:50"},{"hexValue":"6f74206120636f6e7472616374","kind":"string","nodeType":"YulLiteral","src":"8543:15:50","type":"","value":"ot a contract"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8516:6:50"},"nodeType":"YulFunctionCall","src":"8516:43:50"},"nodeType":"YulExpressionStatement","src":"8516:43:50"},{"nodeType":"YulAssignment","src":"8568:27:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8580:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"8591:3:50","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8576:3:50"},"nodeType":"YulFunctionCall","src":"8576:19:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"8568:4:50"}]}]},"name":"abi_encode_tuple_t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8343:9:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"8357:4:50","type":""}],"src":"8192:409:50"},{"body":{"nodeType":"YulBlock","src":"8672:184:50","statements":[{"nodeType":"YulVariableDeclaration","src":"8682:10:50","value":{"kind":"number","nodeType":"YulLiteral","src":"8691:1:50","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"8686:1:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"8751:63:50","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"8776:3:50"},{"name":"i","nodeType":"YulIdentifier","src":"8781:1:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8772:3:50"},"nodeType":"YulFunctionCall","src":"8772:11:50"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"8795:3:50"},{"name":"i","nodeType":"YulIdentifier","src":"8800:1:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8791:3:50"},"nodeType":"YulFunctionCall","src":"8791:11:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"8785:5:50"},"nodeType":"YulFunctionCall","src":"8785:18:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8765:6:50"},"nodeType":"YulFunctionCall","src":"8765:39:50"},"nodeType":"YulExpressionStatement","src":"8765:39:50"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"8712:1:50"},{"name":"length","nodeType":"YulIdentifier","src":"8715:6:50"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"8709:2:50"},"nodeType":"YulFunctionCall","src":"8709:13:50"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"8723:19:50","statements":[{"nodeType":"YulAssignment","src":"8725:15:50","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"8734:1:50"},{"kind":"number","nodeType":"YulLiteral","src":"8737:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8730:3:50"},"nodeType":"YulFunctionCall","src":"8730:10:50"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"8725:1:50"}]}]},"pre":{"nodeType":"YulBlock","src":"8705:3:50","statements":[]},"src":"8701:113:50"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"8834:3:50"},{"name":"length","nodeType":"YulIdentifier","src":"8839:6:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8830:3:50"},"nodeType":"YulFunctionCall","src":"8830:16:50"},{"kind":"number","nodeType":"YulLiteral","src":"8848:1:50","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8823:6:50"},"nodeType":"YulFunctionCall","src":"8823:27:50"},"nodeType":"YulExpressionStatement","src":"8823:27:50"}]},"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"8650:3:50","type":""},{"name":"dst","nodeType":"YulTypedName","src":"8655:3:50","type":""},{"name":"length","nodeType":"YulTypedName","src":"8660:6:50","type":""}],"src":"8606:250:50"},{"body":{"nodeType":"YulBlock","src":"8998:150:50","statements":[{"nodeType":"YulVariableDeclaration","src":"9008:27:50","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"9028:6:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"9022:5:50"},"nodeType":"YulFunctionCall","src":"9022:13:50"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"9012:6:50","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"9083:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"9091:4:50","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9079:3:50"},"nodeType":"YulFunctionCall","src":"9079:17:50"},{"name":"pos","nodeType":"YulIdentifier","src":"9098:3:50"},{"name":"length","nodeType":"YulIdentifier","src":"9103:6:50"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"9044:34:50"},"nodeType":"YulFunctionCall","src":"9044:66:50"},"nodeType":"YulExpressionStatement","src":"9044:66:50"},{"nodeType":"YulAssignment","src":"9119:23:50","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"9130:3:50"},{"name":"length","nodeType":"YulIdentifier","src":"9135:6:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9126:3:50"},"nodeType":"YulFunctionCall","src":"9126:16:50"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"9119:3:50"}]}]},"name":"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"8974:3:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"8979:6:50","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"8990:3:50","type":""}],"src":"8861:287:50"},{"body":{"nodeType":"YulBlock","src":"9327:179:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9344:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"9355:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9337:6:50"},"nodeType":"YulFunctionCall","src":"9337:21:50"},"nodeType":"YulExpressionStatement","src":"9337:21:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9378:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"9389:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9374:3:50"},"nodeType":"YulFunctionCall","src":"9374:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"9394:2:50","type":"","value":"29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9367:6:50"},"nodeType":"YulFunctionCall","src":"9367:30:50"},"nodeType":"YulExpressionStatement","src":"9367:30:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9417:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"9428:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9413:3:50"},"nodeType":"YulFunctionCall","src":"9413:18:50"},{"hexValue":"416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374","kind":"string","nodeType":"YulLiteral","src":"9433:31:50","type":"","value":"Address: call to non-contract"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9406:6:50"},"nodeType":"YulFunctionCall","src":"9406:59:50"},"nodeType":"YulExpressionStatement","src":"9406:59:50"},{"nodeType":"YulAssignment","src":"9474:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9486:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"9497:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9482:3:50"},"nodeType":"YulFunctionCall","src":"9482:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"9474:4:50"}]}]},"name":"abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9304:9:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"9318:4:50","type":""}],"src":"9153:353:50"},{"body":{"nodeType":"YulBlock","src":"9632:275:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9649:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"9660:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9642:6:50"},"nodeType":"YulFunctionCall","src":"9642:21:50"},"nodeType":"YulExpressionStatement","src":"9642:21:50"},{"nodeType":"YulVariableDeclaration","src":"9672:27:50","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"9692:6:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"9686:5:50"},"nodeType":"YulFunctionCall","src":"9686:13:50"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"9676:6:50","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9719:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"9730:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9715:3:50"},"nodeType":"YulFunctionCall","src":"9715:18:50"},{"name":"length","nodeType":"YulIdentifier","src":"9735:6:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9708:6:50"},"nodeType":"YulFunctionCall","src":"9708:34:50"},"nodeType":"YulExpressionStatement","src":"9708:34:50"},{"expression":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"9790:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"9798:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9786:3:50"},"nodeType":"YulFunctionCall","src":"9786:15:50"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9807:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"9818:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9803:3:50"},"nodeType":"YulFunctionCall","src":"9803:18:50"},{"name":"length","nodeType":"YulIdentifier","src":"9823:6:50"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"9751:34:50"},"nodeType":"YulFunctionCall","src":"9751:79:50"},"nodeType":"YulExpressionStatement","src":"9751:79:50"},{"nodeType":"YulAssignment","src":"9839:62:50","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9855:9:50"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"9874:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"9882:2:50","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9870:3:50"},"nodeType":"YulFunctionCall","src":"9870:15:50"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9891:2:50","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"9887:3:50"},"nodeType":"YulFunctionCall","src":"9887:7:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"9866:3:50"},"nodeType":"YulFunctionCall","src":"9866:29:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9851:3:50"},"nodeType":"YulFunctionCall","src":"9851:45:50"},{"kind":"number","nodeType":"YulLiteral","src":"9898:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9847:3:50"},"nodeType":"YulFunctionCall","src":"9847:54:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"9839:4:50"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9601:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"9612:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"9623:4:50","type":""}],"src":"9511:396:50"}]},"contents":"{\n { }\n function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n if iszero(eq(value, and(value, shl(224, 0xffffffff)))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 96)\n let pos := headStart\n pos := headStart\n let srcPtr := value0\n let i := 0\n for { } lt(i, 0x03) { i := add(i, 1) }\n {\n mstore(pos, and(mload(srcPtr), 0xff))\n let _1 := 0x20\n pos := add(pos, _1)\n srcPtr := add(srcPtr, _1)\n }\n }\n function validator_revert_address(value)\n {\n if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n }\n function abi_encode_tuple_t_contract$_IDAO_$2538__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_encode_tuple_t_enum$_PluginType_$3994__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n if iszero(lt(value0, 3))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x21)\n revert(0, 0x24)\n }\n mstore(headStart, value0)\n }\n function panic_error_0x41()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function abi_decode_tuple_t_addresst_bytes_memory_ptr(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n let offset := calldataload(add(headStart, 32))\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n let _2 := add(headStart, offset)\n if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n let _3 := calldataload(_2)\n if gt(_3, _1) { panic_error_0x41() }\n let _4 := not(31)\n let memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n mstore(memPtr, _3)\n if gt(add(add(_2, _3), 32), dataEnd) { revert(0, 0) }\n calldatacopy(add(memPtr, 32), add(_2, 32), _3)\n mstore(add(add(memPtr, _3), 32), 0)\n value1 := memPtr\n }\n function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_decode_tuple_t_contract$_IDAO_$2538(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n }\n function abi_encode_tuple_t_stringliteral_36e108fa7a809b52ab1951dd91c117a7bc9ac5250bdf1aa162d4e104f7edf9eb__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 44)\n mstore(add(headStart, 64), \"Function must be called through \")\n mstore(add(headStart, 96), \"delegatecall\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_52f1ead4d9653e13afbd2e90ef2587c30187cd50b2e97d784e3f7a7541247434__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 44)\n mstore(add(headStart, 64), \"Function must be called through \")\n mstore(add(headStart, 96), \"active proxy\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_67f0151b4ad1dcfa0e3302a0cd6019f51582ef1807b37dceb00bd852a514f7f4__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 56)\n mstore(add(headStart, 64), \"UUPSUpgradeable: must not be cal\")\n mstore(add(headStart, 96), \"led through delegatecall\")\n tail := add(headStart, 128)\n }\n function abi_decode_tuple_t_bytes32_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := mload(headStart)\n }\n function abi_encode_tuple_t_stringliteral_8e8e2fbcb586f700b5b14e2c4a650c8d83b9773c31c5fe8962070ea544e11f24__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 46)\n mstore(add(headStart, 64), \"ERC1967Upgrade: new implementati\")\n mstore(add(headStart, 96), \"on is not UUPS\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_76b6b6debfc5febf101145a79ecf0b0d2e89e397dfdab2bca99888370411152c__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 41)\n mstore(add(headStart, 64), \"ERC1967Upgrade: unsupported prox\")\n mstore(add(headStart, 96), \"iableUUID\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 43)\n mstore(add(headStart, 64), \"Initializable: contract is not i\")\n mstore(add(headStart, 96), \"nitializing\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_address_t_address_t_bytes32_t_bytes_calldata_ptr__to_t_address_t_address_t_bytes32_t_bytes_memory_ptr__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n {\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n mstore(add(headStart, 64), value2)\n mstore(add(headStart, 96), 128)\n mstore(add(headStart, 128), value4)\n calldatacopy(add(headStart, 160), value3, value4)\n mstore(add(add(headStart, value4), 160), 0)\n tail := add(add(headStart, and(add(value4, 31), not(31))), 160)\n }\n function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := mload(headStart)\n if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_address_t_address_t_address_t_bytes32__to_t_address_t_address_t_address_t_bytes32__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n {\n tail := add(headStart, 128)\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n mstore(add(headStart, 64), and(value2, _1))\n mstore(add(headStart, 96), value3)\n }\n function abi_encode_tuple_t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 45)\n mstore(add(headStart, 64), \"ERC1967: new implementation is n\")\n mstore(add(headStart, 96), \"ot a contract\")\n tail := add(headStart, 128)\n }\n function copy_memory_to_memory_with_cleanup(src, dst, length)\n {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n mstore(add(dst, length), 0)\n }\n function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n {\n let length := mload(value0)\n copy_memory_to_memory_with_cleanup(add(value0, 0x20), pos, length)\n end := add(pos, length)\n }\n function abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 29)\n mstore(add(headStart, 64), \"Address: call to non-contract\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n mstore(headStart, 32)\n let length := mload(value0)\n mstore(add(headStart, 32), length)\n copy_memory_to_memory_with_cleanup(add(value0, 32), add(headStart, 64), length)\n tail := add(add(headStart, and(add(length, 31), not(31))), 64)\n }\n}","id":50,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{"554":[{"length":32,"start":820},{"length":32,"start":958},{"length":32,"start":1204},{"length":32,"start":1337},{"length":32,"start":1571}]},"linkReferences":{},"object":"6080604052600436106100d25760003560e01c806352d1902d1161007f578063776d1a0111610059578063776d1a01146102005780638883bbd714610220578063c9c4bfca14610240578063d4b839921461027457600080fd5b806352d1902d146101b15780635c60da1b146101d45780636accab8c146101e957600080fd5b80634162169f116100b05780634162169f1461015057806341de6830146101825780634f1ef2861461019e57600080fd5b806301ffc9a7146100d75780632ae9c6001461010c5780633659cfe61461012e575b600080fd5b3480156100e357600080fd5b506100f76100f2366004610dd3565b610294565b60405190151581526020015b60405180910390f35b34801561011857600080fd5b50610121610300565b6040516101039190610dfd565b34801561013a57600080fd5b5061014e610149366004610e46565b61032a565b005b34801561015c57600080fd5b5060c9546001600160a01b03165b6040516001600160a01b039091168152602001610103565b34801561018e57600080fd5b5060006040516101039190610e63565b61014e6101ac366004610ea1565b6104aa565b3480156101bd57600080fd5b506101c6610616565b604051908152602001610103565b3480156101e057600080fd5b5061016a6106db565b3480156101f557600080fd5b506101c661012d5481565b34801561020c57600080fd5b5061014e61021b366004610e46565b610713565b34801561022c57600080fd5b5061014e61023b366004610e46565b610772565b34801561024c57600080fd5b506101c67f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f581565b34801561028057600080fd5b5060fb5461016a906001600160a01b031681565b60006001600160e01b0319821663041de68360e41b14806102c457506001600160e01b03198216621574e360e91b145b806102df57506001600160e01b031982166352d1902d60e01b145b806102fa57506301ffc9a760e01b6001600160e01b03198316145b92915050565b610308610db5565b5060408051606081018252600181526004602082015260009181019190915290565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036103bc5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b60648201526084015b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166104177f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b0316146104825760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b60648201526084016103b3565b61048b81610784565b604080516000808252602082019092526104a7918391906107c1565b50565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036105375760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b60648201526084016103b3565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166105927f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b0316146105fd5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b60648201526084016103b3565b61060682610784565b610612828260016107c1565b5050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106b65760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016103b3565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b600061070e7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b60fb80546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d690600090a35050565b61077b81610966565b50600161012d55565b60c9547f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f590610612906001600160a01b03163033846000366109da565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156107f9576107f483610a96565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610853575060408051601f3d908101601f1916820190925261085091810190610f65565b60015b6108c55760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201527f6f6e206973206e6f74205555505300000000000000000000000000000000000060648201526084016103b3565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc811461095a5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f7860448201527f6961626c6555554944000000000000000000000000000000000000000000000060648201526084016103b3565b506107f4838383610b61565b600054610100900460ff166109d15760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103b3565b6104a781610b8c565b604051637ef7c88360e11b81526001600160a01b0387169063fdef910690610a0e9088908890889088908890600401610f7e565b602060405180830381865afa158015610a2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4f9190610fd2565b610a8e57604051630cb6f8ed60e21b81526001600160a01b038088166004830152808716602483015285166044820152606481018490526084016103b3565b505050505050565b6001600160a01b0381163b610b135760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e74726163740000000000000000000000000000000000000060648201526084016103b3565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610b6a83610c26565b600082511180610b775750805b156107f457610b868383610c66565b50505050565b600054610100900460ff16610bf75760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103b3565b60c9805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610c2f81610a96565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060610c8b838360405180606001604052806027815260200161106860279139610c92565b9392505050565b6060600080856001600160a01b031685604051610caf9190611018565b600060405180830381855af49150503d8060008114610cea576040519150601f19603f3d011682016040523d82523d6000602084013e610cef565b606091505b5091509150610d0086838387610d0a565b9695505050505050565b60608315610d79578251600003610d72576001600160a01b0385163b610d725760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016103b3565b5081610d83565b610d838383610d8b565b949350505050565b815115610d9b5781518083602001fd5b8060405162461bcd60e51b81526004016103b39190611034565b60405180606001604052806003906020820280368337509192915050565b600060208284031215610de557600080fd5b81356001600160e01b031981168114610c8b57600080fd5b60608101818360005b6003811015610e2857815160ff16835260209283019290910190600101610e06565b50505092915050565b6001600160a01b03811681146104a757600080fd5b600060208284031215610e5857600080fd5b8135610c8b81610e31565b6020810160038310610e8557634e487b7160e01b600052602160045260246000fd5b91905290565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215610eb457600080fd5b8235610ebf81610e31565b9150602083013567ffffffffffffffff80821115610edc57600080fd5b818501915085601f830112610ef057600080fd5b813581811115610f0257610f02610e8b565b604051601f8201601f19908116603f01168101908382118183101715610f2a57610f2a610e8b565b81604052828152886020848701011115610f4357600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b600060208284031215610f7757600080fd5b5051919050565b60006001600160a01b03808816835280871660208401525084604083015260806060830152826080830152828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b600060208284031215610fe457600080fd5b81518015158114610c8b57600080fd5b60005b8381101561100f578181015183820152602001610ff7565b50506000910152565b6000825161102a818460208701610ff4565b9190910192915050565b6020815260008251806020840152611053816040850160208701610ff4565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xD2 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x52D1902D GT PUSH2 0x7F JUMPI DUP1 PUSH4 0x776D1A01 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0x776D1A01 EQ PUSH2 0x200 JUMPI DUP1 PUSH4 0x8883BBD7 EQ PUSH2 0x220 JUMPI DUP1 PUSH4 0xC9C4BFCA EQ PUSH2 0x240 JUMPI DUP1 PUSH4 0xD4B83992 EQ PUSH2 0x274 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x52D1902D EQ PUSH2 0x1B1 JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0x1D4 JUMPI DUP1 PUSH4 0x6ACCAB8C EQ PUSH2 0x1E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x4162169F GT PUSH2 0xB0 JUMPI DUP1 PUSH4 0x4162169F EQ PUSH2 0x150 JUMPI DUP1 PUSH4 0x41DE6830 EQ PUSH2 0x182 JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x19E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xD7 JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0x10C JUMPI DUP1 PUSH4 0x3659CFE6 EQ PUSH2 0x12E JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xE3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF7 PUSH2 0xF2 CALLDATASIZE PUSH1 0x4 PUSH2 0xDD3 JUMP JUMPDEST PUSH2 0x294 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x118 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x121 PUSH2 0x300 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x103 SWAP2 SWAP1 PUSH2 0xDFD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x13A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x14E PUSH2 0x149 CALLDATASIZE PUSH1 0x4 PUSH2 0xE46 JUMP JUMPDEST PUSH2 0x32A JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x15C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xC9 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x103 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x18E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 PUSH1 0x40 MLOAD PUSH2 0x103 SWAP2 SWAP1 PUSH2 0xE63 JUMP JUMPDEST PUSH2 0x14E PUSH2 0x1AC CALLDATASIZE PUSH1 0x4 PUSH2 0xEA1 JUMP JUMPDEST PUSH2 0x4AA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C6 PUSH2 0x616 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x103 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x16A PUSH2 0x6DB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C6 PUSH2 0x12D SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x20C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x14E PUSH2 0x21B CALLDATASIZE PUSH1 0x4 PUSH2 0xE46 JUMP JUMPDEST PUSH2 0x713 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x22C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x14E PUSH2 0x23B CALLDATASIZE PUSH1 0x4 PUSH2 0xE46 JUMP JUMPDEST PUSH2 0x772 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x24C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C6 PUSH32 0x821B6E3A557148015A918C89E5D092E878A69854A2D1A410635F771BD5A8A3F5 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x280 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xFB SLOAD PUSH2 0x16A SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x41DE683 PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x2C4 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x2DF JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x52D1902D PUSH1 0xE0 SHL EQ JUMPDEST DUP1 PUSH2 0x2FA JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x308 PUSH2 0xDB5 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x3BC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x19195B1959D85D1958D85B1B PUSH1 0xA2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x417 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x482 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x6163746976652070726F7879 PUSH1 0xA0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B3 JUMP JUMPDEST PUSH2 0x48B DUP2 PUSH2 0x784 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x4A7 SWAP2 DUP4 SWAP2 SWAP1 PUSH2 0x7C1 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x537 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x19195B1959D85D1958D85B1B PUSH1 0xA2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B3 JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x592 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x5FD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x6163746976652070726F7879 PUSH1 0xA0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B3 JUMP JUMPDEST PUSH2 0x606 DUP3 PUSH2 0x784 JUMP JUMPDEST PUSH2 0x612 DUP3 DUP3 PUSH1 0x1 PUSH2 0x7C1 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x6B6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x38 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x555550535570677261646561626C653A206D757374206E6F742062652063616C PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6C6564207468726F7567682064656C656761746563616C6C0000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B3 JUMP JUMPDEST POP PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x70E PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0xFB DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP2 SWAP1 DUP3 SWAP1 PUSH32 0x90CC2F570A6EB594B1580EA3E41247D2D73A55281889E86BD4EC2FC29C7E62D6 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH2 0x77B DUP2 PUSH2 0x966 JUMP JUMPDEST POP PUSH1 0x1 PUSH2 0x12D SSTORE JUMP JUMPDEST PUSH1 0xC9 SLOAD PUSH32 0x821B6E3A557148015A918C89E5D092E878A69854A2D1A410635F771BD5A8A3F5 SWAP1 PUSH2 0x612 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ADDRESS CALLER DUP5 PUSH1 0x0 CALLDATASIZE PUSH2 0x9DA JUMP JUMPDEST PUSH32 0x4910FDFA16FED3260ED0E7147F7CC6DA11A60208B5B9406D12A635614FFD9143 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x7F9 JUMPI PUSH2 0x7F4 DUP4 PUSH2 0xA96 JUMP JUMPDEST POP POP POP JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x52D1902D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x853 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x850 SWAP2 DUP2 ADD SWAP1 PUSH2 0xF65 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x8C5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524331393637557067726164653A206E657720696D706C656D656E74617469 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F6E206973206E6F742055555053000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B3 JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC DUP2 EQ PUSH2 0x95A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524331393637557067726164653A20756E737570706F727465642070726F78 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6961626C65555549440000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B3 JUMP JUMPDEST POP PUSH2 0x7F4 DUP4 DUP4 DUP4 PUSH2 0xB61 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x9D1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B3 JUMP JUMPDEST PUSH2 0x4A7 DUP2 PUSH2 0xB8C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x7EF7C883 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0xFDEF9106 SWAP1 PUSH2 0xA0E SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0xF7E JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xA2B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xA4F SWAP2 SWAP1 PUSH2 0xFD2 JUMP JUMPDEST PUSH2 0xA8E JUMPI PUSH1 0x40 MLOAD PUSH4 0xCB6F8ED PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND PUSH1 0x4 DUP4 ADD MSTORE DUP1 DUP8 AND PUSH1 0x24 DUP4 ADD MSTORE DUP6 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x84 ADD PUSH2 0x3B3 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND EXTCODESIZE PUSH2 0xB13 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313936373A206E657720696D706C656D656E746174696F6E206973206E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F74206120636F6E747261637400000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B3 JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xB6A DUP4 PUSH2 0xC26 JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD GT DUP1 PUSH2 0xB77 JUMPI POP DUP1 JUMPDEST ISZERO PUSH2 0x7F4 JUMPI PUSH2 0xB86 DUP4 DUP4 PUSH2 0xC66 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0xBF7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B3 JUMP JUMPDEST PUSH1 0xC9 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xC2F DUP2 PUSH2 0xA96 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xC8B DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1068 PUSH1 0x27 SWAP2 CODECOPY PUSH2 0xC92 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0xCAF SWAP2 SWAP1 PUSH2 0x1018 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xCEA JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xCEF JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0xD00 DUP7 DUP4 DUP4 DUP8 PUSH2 0xD0A JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0xD79 JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0xD72 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0xD72 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3B3 JUMP JUMPDEST POP DUP2 PUSH2 0xD83 JUMP JUMPDEST PUSH2 0xD83 DUP4 DUP4 PUSH2 0xD8B JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0xD9B JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3B3 SWAP2 SWAP1 PUSH2 0x1034 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xDE5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0xC8B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0xE28 JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0xE06 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x4A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xE58 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xC8B DUP2 PUSH2 0xE31 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH1 0x3 DUP4 LT PUSH2 0xE85 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 SWAP1 MSTORE SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xEB4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0xEBF DUP2 PUSH2 0xE31 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xEDC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xEF0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0xF02 JUMPI PUSH2 0xF02 PUSH2 0xE8B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0xF2A JUMPI PUSH2 0xF2A PUSH2 0xE8B JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0xF43 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xF77 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND DUP4 MSTORE DUP1 DUP8 AND PUSH1 0x20 DUP5 ADD MSTORE POP DUP5 PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x80 PUSH1 0x60 DUP4 ADD MSTORE DUP3 PUSH1 0x80 DUP4 ADD MSTORE DUP3 DUP5 PUSH1 0xA0 DUP5 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0xA0 DUP5 DUP5 ADD ADD MSTORE PUSH1 0xA0 PUSH1 0x1F NOT PUSH1 0x1F DUP6 ADD AND DUP4 ADD ADD SWAP1 POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xFE4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xC8B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x100F JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xFF7 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x102A DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0xFF4 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x1053 DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0xFF4 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A164 PUSH20 0x6F6C6343000811000A0000000000000000000000 ","sourceMap":"1988:216:31:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2810:366:40;;;;;;;;;;-1:-1:-1;2810:366:40;;;;;:::i;:::-;;:::i;:::-;;;470:14:50;;463:22;445:41;;433:2;418:18;2810:366:40;;;;;;;;631:98:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;3408:195:5:-;;;;;;;;;;-1:-1:-1;3408:195:5;;;;;:::i;:::-;;:::i;:::-;;1200:70:35;;;;;;;;;;-1:-1:-1;1259:4:35;;-1:-1:-1;;;;;1259:4:35;1200:70;;;-1:-1:-1;;;;;1591:55:50;;;1573:74;;1561:2;1546:18;1200:70:35;1414:239:50;1710:103:40;;;;;;;;;;-1:-1:-1;1762:10:40;1710:103;;;;;;:::i;3922:220:5:-;;;;;;:::i;:::-;;:::i;3027:131::-;;;;;;;;;;;;;:::i;:::-;;;3345:25:50;;;3333:2;3318:18;3027:131:5;3199:177:50;3457:100:40;;;;;;;;;;;;;:::i;2057:21:31:-;;;;;;;;;;;;;;;;2439:166:40;;;;;;;;;;-1:-1:-1;2439:166:40;;;;;:::i;:::-;;:::i;2085:117:31:-;;;;;;;;;;-1:-1:-1;2085:117:31;;;;;:::i;:::-;;:::i;1911:93:40:-;;;;;;;;;;;;1966:38;1911:93;;1293:21;;;;;;;;;;-1:-1:-1;1293:21:40;;;;-1:-1:-1;;;;;1293:21:40;;;2810:366;2896:4;-1:-1:-1;;;;;;2931:41:40;;-1:-1:-1;;;2931:41:40;;:107;;-1:-1:-1;;;;;;;2988:50:40;;-1:-1:-1;;;2988:50:40;2931:107;:185;;;-1:-1:-1;;;;;;;3054:62:40;;-1:-1:-1;;;3054:62:40;2931:185;:238;;;-1:-1:-1;;;;;;;;;;1189:51:10;;;3132:37:40;2912:257;2810:366;-1:-1:-1;;2810:366:40:o;631:98:49:-;679:15;;:::i;:::-;-1:-1:-1;706:16:49;;;;;;;;714:1;706:16;;717:1;706:16;;;;-1:-1:-1;706:16:49;;;;;;;;631:98::o;3408:195:5:-;-1:-1:-1;;;;;1764:6:5;1747:23;1755:4;1747:23;1739:80;;;;-1:-1:-1;;;1739:80:5;;4261:2:50;1739:80:5;;;4243:21:50;4300:2;4280:18;;;4273:30;4339:34;4319:18;;;4312:62;-1:-1:-1;;;4390:18:50;;;4383:42;4442:19;;1739:80:5;;;;;;;;;1861:6;-1:-1:-1;;;;;1837:30:5;:20;1180:66:2;1557:65;-1:-1:-1;;;;;1557:65:2;;1478:151;1837:20:5;-1:-1:-1;;;;;1837:30:5;;1829:87;;;;-1:-1:-1;;;1829:87:5;;4674:2:50;1829:87:5;;;4656:21:50;4713:2;4693:18;;;4686:30;4752:34;4732:18;;;4725:62;-1:-1:-1;;;4803:18:50;;;4796:42;4855:19;;1829:87:5;4472:408:50;1829:87:5;3489:36:::1;3507:17;3489;:36::i;:::-;3576:12;::::0;;3586:1:::1;3576:12:::0;;;::::1;::::0;::::1;::::0;;;3535:61:::1;::::0;3557:17;;3576:12;3535:21:::1;:61::i;:::-;3408:195:::0;:::o;3922:220::-;-1:-1:-1;;;;;1764:6:5;1747:23;1755:4;1747:23;1739:80;;;;-1:-1:-1;;;1739:80:5;;4261:2:50;1739:80:5;;;4243:21:50;4300:2;4280:18;;;4273:30;4339:34;4319:18;;;4312:62;-1:-1:-1;;;4390:18:50;;;4383:42;4442:19;;1739:80:5;4059:408:50;1739:80:5;1861:6;-1:-1:-1;;;;;1837:30:5;:20;1180:66:2;1557:65;-1:-1:-1;;;;;1557:65:2;;1478:151;1837:20:5;-1:-1:-1;;;;;1837:30:5;;1829:87;;;;-1:-1:-1;;;1829:87:5;;4674:2:50;1829:87:5;;;4656:21:50;4713:2;4693:18;;;4686:30;4752:34;4732:18;;;4725:62;-1:-1:-1;;;4803:18:50;;;4796:42;4855:19;;1829:87:5;4472:408:50;1829:87:5;4037:36:::1;4055:17;4037;:36::i;:::-;4083:52;4105:17;4124:4;4130;4083:21;:52::i;:::-;3922:220:::0;;:::o;3027:131::-;3105:7;2190:4;-1:-1:-1;;;;;2199:6:5;2182:23;;2174:92;;;;-1:-1:-1;;;2174:92:5;;5087:2:50;2174:92:5;;;5069:21:50;5126:2;5106:18;;;5099:30;5165:34;5145:18;;;5138:62;5236:26;5216:18;;;5209:54;5280:19;;2174:92:5;4885:420:50;2174:92:5;-1:-1:-1;1180:66:2::1;3027:131:5::0;:::o;3457:100:40:-;3504:7;3530:20;1180:66:2;1557:65;-1:-1:-1;;;;;1557:65:2;;1478:151;3530:20:40;3523:27;;3457:100;:::o;2439:166::-;2517:6;;;-1:-1:-1;;;;;2533:16:40;;;-1:-1:-1;;2533:16:40;;;;;;;2564:34;;2517:6;;;2533:16;2517:6;;2564:34;;2492:22;;2564:34;2482:123;2439:166;:::o;2085:117:31:-;2141:34;2170:4;2141:28;:34::i;:::-;-1:-1:-1;2194:1:31;2185:6;:10;2085:117::o;5390:204:40:-;1616:4:35;;1966:38:40;;1610:67:35;;-1:-1:-1;;;;;1616:4:35;1630;965:10:7;1651:13:35;1039:14:7;;1610:5:35;:67::i;2841:944:2:-;839:66;3257:59;;;3253:526;;;3332:37;3351:17;3332:18;:37::i;:::-;2841:944;;;:::o;3253:526::-;3433:17;-1:-1:-1;;;;;3404:61:2;;:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3404:63:2;;;;;;;;-1:-1:-1;;3404:63:2;;;;;;;;;;;;:::i;:::-;;;3400:302;;3631:56;;-1:-1:-1;;;3631:56:2;;5701:2:50;3631:56:2;;;5683:21:50;5740:2;5720:18;;;5713:30;5779:34;5759:18;;;5752:62;5850:16;5830:18;;;5823:44;5884:19;;3631:56:2;5499:410:50;3400:302:2;1180:66;3517:28;;3509:82;;;;-1:-1:-1;;;3509:82:2;;6116:2:50;3509:82:2;;;6098:21:50;6155:2;6135:18;;;6128:30;6194:34;6174:18;;;6167:62;6265:11;6245:18;;;6238:39;6294:19;;3509:82:2;5914:405:50;3509:82:2;3468:138;3715:53;3733:17;3752:4;3758:9;3715:17;:53::i;2172:139:40:-;5374:13:4;;;;;;;5366:69;;;;-1:-1:-1;;;5366:69:4;;6526:2:50;5366:69:4;;;6508:21:50;6565:2;6545:18;;;6538:30;6604:34;6584:18;;;6577:62;-1:-1:-1;;;6655:18:50;;;6648:41;6706:19;;5366:69:4;6324:407:50;5366:69:4;2265:39:40::1;2299:4;2265:33;:39::i;1041:363:36:-:0;1180:54;;-1:-1:-1;;;1180:54:36;;-1:-1:-1;;;;;1180:18:36;;;;;:54;;1199:6;;1207:4;;1213:13;;1228:5;;;;1180:54;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1175:226;;1251:150;;-1:-1:-1;;;1251:150:36;;-1:-1:-1;;;;;8018:15:50;;;1251:150:36;;;8000:34:50;8070:15;;;8050:18;;;8043:43;8122:15;;8102:18;;;8095:43;8154:18;;;8147:34;;;7911:19;;1251:150:36;7708:479:50;1175:226:36;1041:363;;;;;;:::o;1720:281:2:-;-1:-1:-1;;;;;1713:19:6;;;1793:106:2;;;;-1:-1:-1;;;1793:106:2;;8394:2:50;1793:106:2;;;8376:21:50;8433:2;8413:18;;;8406:30;8472:34;8452:18;;;8445:62;8543:15;8523:18;;;8516:43;8576:19;;1793:106:2;8192:409:50;1793:106:2;1180:66;1909:85;;-1:-1:-1;;1909:85:2;-1:-1:-1;;;;;1909:85:2;;;;;;;;;;1720:281::o;2393:276::-;2501:29;2512:17;2501:10;:29::i;:::-;2558:1;2544:4;:11;:15;:28;;;;2563:9;2544:28;2540:123;;;2588:64;2628:17;2647:4;2588:39;:64::i;:::-;;2393:276;;;:::o;1010:108:35:-;5374:13:4;;;;;;;5366:69;;;;-1:-1:-1;;;5366:69:4;;6526:2:50;5366:69:4;;;6508:21:50;6565:2;6545:18;;;6538:30;6604:34;6584:18;;;6577:62;-1:-1:-1;;;6655:18:50;;;6648:41;6706:19;;5366:69:4;6324:407:50;5366:69:4;1100:4:35::1;:11:::0;;-1:-1:-1;;1100:11:35::1;-1:-1:-1::0;;;;;1100:11:35;;;::::1;::::0;;;::::1;::::0;;1010:108::o;2107:152:2:-;2173:37;2192:17;2173:18;:37::i;:::-;2225:27;;-1:-1:-1;;;;;2225:27:2;;;;;;;;2107:152;:::o;6685:198:6:-;6768:12;6799:77;6820:6;6828:4;6799:77;;;;;;;;;;;;;;;;;:20;:77::i;:::-;6792:84;6685:198;-1:-1:-1;;;6685:198:6:o;7069:325::-;7210:12;7235;7249:23;7276:6;-1:-1:-1;;;;;7276:19:6;7296:4;7276:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7234:67;;;;7318:69;7345:6;7353:7;7362:10;7374:12;7318:26;:69::i;:::-;7311:76;7069:325;-1:-1:-1;;;;;;7069:325:6:o;7682:628::-;7862:12;7890:7;7886:418;;;7917:10;:17;7938:1;7917:22;7913:286;;-1:-1:-1;;;;;1713:19:6;;;8124:60;;;;-1:-1:-1;;;8124:60:6;;9355:2:50;8124:60:6;;;9337:21:50;9394:2;9374:18;;;9367:30;9433:31;9413:18;;;9406:59;9482:18;;8124:60:6;9153:353:50;8124:60:6;-1:-1:-1;8219:10:6;8212:17;;7886:418;8260:33;8268:10;8280:12;8260:7;:33::i;:::-;7682:628;;;;;;:::o;8832:540::-;8991:17;;:21;8987:379;;9219:10;9213:17;9275:15;9262:10;9258:2;9254:19;9247:44;8987:379;9342:12;9335:20;;-1:-1:-1;;;9335:20:6;;;;;;;;:::i;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:286:50:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:50;;209:43;;199:71;;266:1;263;256:12;497:501;673:2;658:18;;662:9;753:6;631:4;787:205;801:4;798:1;795:11;787:205;;;864:13;;879:4;860:24;848:37;;908:4;932:12;;;;967:15;;;;821:1;814:9;787:205;;;791:3;;;497:501;;;;:::o;1003:154::-;-1:-1:-1;;;;;1082:5:50;1078:54;1071:5;1068:65;1058:93;;1147:1;1144;1137:12;1162:247;1221:6;1274:2;1262:9;1253:7;1249:23;1245:32;1242:52;;;1290:1;1287;1280:12;1242:52;1329:9;1316:23;1348:31;1373:5;1348:31;:::i;1658:343::-;1805:2;1790:18;;1838:1;1827:13;;1817:144;;1883:10;1878:3;1874:20;1871:1;1864:31;1918:4;1915:1;1908:15;1946:4;1943:1;1936:15;1817:144;1970:25;;;1658:343;:::o;2006:127::-;2067:10;2062:3;2058:20;2055:1;2048:31;2098:4;2095:1;2088:15;2122:4;2119:1;2112:15;2138:1056;2215:6;2223;2276:2;2264:9;2255:7;2251:23;2247:32;2244:52;;;2292:1;2289;2282:12;2244:52;2331:9;2318:23;2350:31;2375:5;2350:31;:::i;:::-;2400:5;-1:-1:-1;2456:2:50;2441:18;;2428:32;2479:18;2509:14;;;2506:34;;;2536:1;2533;2526:12;2506:34;2574:6;2563:9;2559:22;2549:32;;2619:7;2612:4;2608:2;2604:13;2600:27;2590:55;;2641:1;2638;2631:12;2590:55;2677:2;2664:16;2699:2;2695;2692:10;2689:36;;;2705:18;;:::i;:::-;2780:2;2774:9;2748:2;2834:13;;-1:-1:-1;;2830:22:50;;;2854:2;2826:31;2822:40;2810:53;;;2878:18;;;2898:22;;;2875:46;2872:72;;;2924:18;;:::i;:::-;2964:10;2960:2;2953:22;2999:2;2991:6;2984:18;3039:7;3034:2;3029;3025;3021:11;3017:20;3014:33;3011:53;;;3060:1;3057;3050:12;3011:53;3116:2;3111;3107;3103:11;3098:2;3090:6;3086:15;3073:46;3161:1;3156:2;3151;3143:6;3139:15;3135:24;3128:35;3182:6;3172:16;;;;;;;2138:1056;;;;;:::o;5310:184::-;5380:6;5433:2;5421:9;5412:7;5408:23;5404:32;5401:52;;;5449:1;5446;5439:12;5401:52;-1:-1:-1;5472:16:50;;5310:184;-1:-1:-1;5310:184:50:o;6736:685::-;6940:4;-1:-1:-1;;;;;7050:2:50;7042:6;7038:15;7027:9;7020:34;7102:2;7094:6;7090:15;7085:2;7074:9;7070:18;7063:43;;7142:6;7137:2;7126:9;7122:18;7115:34;7185:3;7180:2;7169:9;7165:18;7158:31;7226:6;7220:3;7209:9;7205:19;7198:35;7284:6;7276;7270:3;7259:9;7255:19;7242:49;7341:1;7335:3;7326:6;7315:9;7311:22;7307:32;7300:43;7411:3;7404:2;7400:7;7395:2;7387:6;7383:15;7379:29;7368:9;7364:45;7360:55;7352:63;;6736:685;;;;;;;;:::o;7426:277::-;7493:6;7546:2;7534:9;7525:7;7521:23;7517:32;7514:52;;;7562:1;7559;7552:12;7514:52;7594:9;7588:16;7647:5;7640:13;7633:21;7626:5;7623:32;7613:60;;7669:1;7666;7659:12;8606:250;8691:1;8701:113;8715:6;8712:1;8709:13;8701:113;;;8791:11;;;8785:18;8772:11;;;8765:39;8737:2;8730:10;8701:113;;;-1:-1:-1;;8848:1:50;8830:16;;8823:27;8606:250::o;8861:287::-;8990:3;9028:6;9022:13;9044:66;9103:6;9098:3;9091:4;9083:6;9079:17;9044:66;:::i;:::-;9126:16;;;;;8861:287;-1:-1:-1;;8861:287:50:o;9511:396::-;9660:2;9649:9;9642:21;9623:4;9692:6;9686:13;9735:6;9730:2;9719:9;9715:18;9708:34;9751:79;9823:6;9818:2;9807:9;9803:18;9798:2;9790:6;9786:15;9751:79;:::i;:::-;9891:2;9870:15;-1:-1:-1;;9866:29:50;9851:45;;;;9898:2;9847:54;;9511:396;-1:-1:-1;;9511:396:50:o"},"gasEstimates":{"creation":{"codeDepositCost":"850200","executionCost":"infinite","totalCost":"infinite"},"external":{"UPGRADE_PLUGIN_PERMISSION_ID()":"261","dao()":"2343","implementation()":"2414","notAnInitializer(address)":"infinite","pluginType()":"272","protocolVersion()":"infinite","proxiableUUID()":"infinite","setTarget(address)":"26112","state1()":"2362","supportsInterface(bytes4)":"560","target()":"2425","upgradeTo(address)":"infinite","upgradeToAndCall(address,bytes)":"infinite"}},"methodIdentifiers":{"UPGRADE_PLUGIN_PERMISSION_ID()":"c9c4bfca","dao()":"4162169f","implementation()":"5c60da1b","notAnInitializer(address)":"8883bbd7","pluginType()":"41de6830","protocolVersion()":"2ae9c600","proxiableUUID()":"52d1902d","setTarget(address)":"776d1a01","state1()":"6accab8c","supportsInterface(bytes4)":"01ffc9a7","target()":"d4b83992","upgradeTo(address)":"3659cfe6","upgradeToAndCall(address,bytes)":"4f1ef286"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"dao\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"name\":\"DaoUnauthorized\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousTarget\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newTarget\",\"type\":\"address\"}],\"name\":\"TargetSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"UPGRADE_PLUGIN_PERMISSION_ID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"dao\",\"outputs\":[{\"internalType\":\"contract IDAO\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IDAO\",\"name\":\"_dao\",\"type\":\"address\"}],\"name\":\"notAnInitializer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pluginType\",\"outputs\":[{\"internalType\":\"enum IPlugin.PluginType\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"protocolVersion\",\"outputs\":[{\"internalType\":\"uint8[3]\",\"name\":\"\",\"type\":\"uint8[3]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_target\",\"type\":\"address\"}],\"name\":\"setTarget\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"state1\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"target\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"upgradeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"DO NOT USE IN PRODUCTION!\",\"errors\":{\"DaoUnauthorized(address,address,address,bytes32)\":[{\"params\":{\"dao\":\"The associated DAO.\",\"permissionId\":\"The permission identifier.\",\"where\":\"The context in which the authorization reverted.\",\"who\":\"The address (EOA or contract) missing the permission.\"}}]},\"kind\":\"dev\",\"methods\":{\"dao()\":{\"returns\":{\"_0\":\"The DAO contract.\"}},\"implementation()\":{\"returns\":{\"_0\":\"The address of the implementation contract.\"}},\"protocolVersion()\":{\"details\":\"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\",\"returns\":{\"_0\":\"Returns the semantic Aragon OSx protocol version number.\"}},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"setTarget(address)\":{\"details\":\"Sets the target to a new target (`newTarget`).\"},\"supportsInterface(bytes4)\":{\"params\":{\"_interfaceId\":\"The ID of the interface.\"},\"returns\":{\"_0\":\"Returns `true` if the interface is supported.\"}},\"upgradeTo(address)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"},\"upgradeToAndCall(address,bytes)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"}},\"version\":1},\"userdoc\":{\"errors\":{\"DaoUnauthorized(address,address,address,bytes32)\":[{\"notice\":\"Thrown if a call is unauthorized in the associated DAO.\"}]},\"kind\":\"user\",\"methods\":{\"UPGRADE_PLUGIN_PERMISSION_ID()\":{\"notice\":\"The ID of the permission required to call the `_authorizeUpgrade` function.\"},\"dao()\":{\"notice\":\"Returns the DAO contract.\"},\"implementation()\":{\"notice\":\"Returns the address of the implementation contract in the [proxy storage slot](https://eips.ethereum.org/EIPS/eip-1967) slot the [UUPS proxy](https://eips.ethereum.org/EIPS/eip-1822) is pointing to.\"},\"pluginType()\":{\"notice\":\"Returns the plugin's type\"},\"protocolVersion()\":{\"notice\":\"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\"},\"setTarget(address)\":{\"notice\":\"Can only be called by the current owner. TODO\"},\"supportsInterface(bytes4)\":{\"notice\":\"Checks if an interface is supported by this or its parent contract.\"}},\"notice\":\"A mock upgradeable plugin missing an initializer function.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/mocks/plugin/PluginUUPSUpgradeableMock.sol\":\"PluginUUPSUpgradeableMockBad\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/interfaces/IERC1967Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (interfaces/IERC1967.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\\n *\\n * _Available since v4.8.3._\\n */\\ninterface IERC1967Upgradeable {\\n /**\\n * @dev Emitted when the implementation is upgraded.\\n */\\n event Upgraded(address indexed implementation);\\n\\n /**\\n * @dev Emitted when the admin account has changed.\\n */\\n event AdminChanged(address previousAdmin, address newAdmin);\\n\\n /**\\n * @dev Emitted when the beacon is changed.\\n */\\n event BeaconUpgraded(address indexed beacon);\\n}\\n\",\"keccak256\":\"0x47d6e06872b12e72c79d1b5eb55842f860b5fb1207b2317c2358d2766b950a7b\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822ProxiableUpgradeable {\\n /**\\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n * address.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy.\\n */\\n function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../beacon/IBeaconUpgradeable.sol\\\";\\nimport \\\"../../interfaces/IERC1967Upgradeable.sol\\\";\\nimport \\\"../../interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\nimport \\\"../../utils/StorageSlotUpgradeable.sol\\\";\\nimport {Initializable} from \\\"../utils/Initializable.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n */\\nabstract contract ERC1967UpgradeUpgradeable is Initializable, IERC1967Upgradeable {\\n // This is the keccak-256 hash of \\\"eip1967.proxy.rollback\\\" subtracted by 1\\n bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n /**\\n * @dev Storage slot with the address of the current implementation.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n function __ERC1967Upgrade_init() internal onlyInitializing {\\n }\\n\\n function __ERC1967Upgrade_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _getImplementation() internal view returns (address) {\\n return StorageSlotUpgradeable.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 implementation slot.\\n */\\n function _setImplementation(address newImplementation) private {\\n require(AddressUpgradeable.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n StorageSlotUpgradeable.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n }\\n\\n /**\\n * @dev Perform implementation upgrade\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeTo(address newImplementation) internal {\\n _setImplementation(newImplementation);\\n emit Upgraded(newImplementation);\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCall(address newImplementation, bytes memory data, bool forceCall) internal {\\n _upgradeTo(newImplementation);\\n if (data.length > 0 || forceCall) {\\n AddressUpgradeable.functionDelegateCall(newImplementation, data);\\n }\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCallUUPS(address newImplementation, bytes memory data, bool forceCall) internal {\\n // Upgrades from old implementations will perform a rollback test. This test requires the new\\n // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n // this special case will break upgrade paths from old UUPS implementation to new ones.\\n if (StorageSlotUpgradeable.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n _setImplementation(newImplementation);\\n } else {\\n try IERC1822ProxiableUpgradeable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n require(slot == _IMPLEMENTATION_SLOT, \\\"ERC1967Upgrade: unsupported proxiableUUID\\\");\\n } catch {\\n revert(\\\"ERC1967Upgrade: new implementation is not UUPS\\\");\\n }\\n _upgradeToAndCall(newImplementation, data, forceCall);\\n }\\n }\\n\\n /**\\n * @dev Storage slot with the admin of the contract.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _getAdmin() internal view returns (address) {\\n return StorageSlotUpgradeable.getAddressSlot(_ADMIN_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 admin slot.\\n */\\n function _setAdmin(address newAdmin) private {\\n require(newAdmin != address(0), \\\"ERC1967: new admin is the zero address\\\");\\n StorageSlotUpgradeable.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n */\\n function _changeAdmin(address newAdmin) internal {\\n emit AdminChanged(_getAdmin(), newAdmin);\\n _setAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\\n */\\n bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n /**\\n * @dev Returns the current beacon.\\n */\\n function _getBeacon() internal view returns (address) {\\n return StorageSlotUpgradeable.getAddressSlot(_BEACON_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new beacon in the EIP1967 beacon slot.\\n */\\n function _setBeacon(address newBeacon) private {\\n require(AddressUpgradeable.isContract(newBeacon), \\\"ERC1967: new beacon is not a contract\\\");\\n require(\\n AddressUpgradeable.isContract(IBeaconUpgradeable(newBeacon).implementation()),\\n \\\"ERC1967: beacon implementation is not a contract\\\"\\n );\\n StorageSlotUpgradeable.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n }\\n\\n /**\\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n *\\n * Emits a {BeaconUpgraded} event.\\n */\\n function _upgradeBeaconToAndCall(address newBeacon, bytes memory data, bool forceCall) internal {\\n _setBeacon(newBeacon);\\n emit BeaconUpgraded(newBeacon);\\n if (data.length > 0 || forceCall) {\\n AddressUpgradeable.functionDelegateCall(IBeaconUpgradeable(newBeacon).implementation(), data);\\n }\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x7795808e3899c805254e3ae58074b20f799b466e3f43e057e47bedee5fb771f8\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeaconUpgradeable {\\n /**\\n * @dev Must return an address that can be used as a delegate call target.\\n *\\n * {BeaconProxy} will check that this address is a contract.\\n */\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/UUPSUpgradeable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport \\\"../ERC1967/ERC1967UpgradeUpgradeable.sol\\\";\\nimport {Initializable} from \\\"./Initializable.sol\\\";\\n\\n/**\\n * @dev An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an\\n * {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy.\\n *\\n * A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is\\n * reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing\\n * `UUPSUpgradeable` with a custom implementation of upgrades.\\n *\\n * The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism.\\n *\\n * _Available since v4.1._\\n */\\nabstract contract UUPSUpgradeable is Initializable, IERC1822ProxiableUpgradeable, ERC1967UpgradeUpgradeable {\\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable state-variable-assignment\\n address private immutable __self = address(this);\\n\\n /**\\n * @dev Check that the execution is being performed through a delegatecall call and that the execution context is\\n * a proxy contract with an implementation (as defined in ERC1967) pointing to self. This should only be the case\\n * for UUPS and transparent proxies that are using the current contract as their implementation. Execution of a\\n * function through ERC1167 minimal proxies (clones) would not normally pass this test, but is not guaranteed to\\n * fail.\\n */\\n modifier onlyProxy() {\\n require(address(this) != __self, \\\"Function must be called through delegatecall\\\");\\n require(_getImplementation() == __self, \\\"Function must be called through active proxy\\\");\\n _;\\n }\\n\\n /**\\n * @dev Check that the execution is not being performed through a delegate call. This allows a function to be\\n * callable on the implementing contract but not through proxies.\\n */\\n modifier notDelegated() {\\n require(address(this) == __self, \\\"UUPSUpgradeable: must not be called through delegatecall\\\");\\n _;\\n }\\n\\n function __UUPSUpgradeable_init() internal onlyInitializing {\\n }\\n\\n function __UUPSUpgradeable_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the\\n * implementation. It is used to validate the implementation's compatibility when performing an upgrade.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\\n */\\n function proxiableUUID() external view virtual override notDelegated returns (bytes32) {\\n return _IMPLEMENTATION_SLOT;\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy to `newImplementation`.\\n *\\n * Calls {_authorizeUpgrade}.\\n *\\n * Emits an {Upgraded} event.\\n *\\n * @custom:oz-upgrades-unsafe-allow-reachable delegatecall\\n */\\n function upgradeTo(address newImplementation) public virtual onlyProxy {\\n _authorizeUpgrade(newImplementation);\\n _upgradeToAndCallUUPS(newImplementation, new bytes(0), false);\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call\\n * encoded in `data`.\\n *\\n * Calls {_authorizeUpgrade}.\\n *\\n * Emits an {Upgraded} event.\\n *\\n * @custom:oz-upgrades-unsafe-allow-reachable delegatecall\\n */\\n function upgradeToAndCall(address newImplementation, bytes memory data) public payable virtual onlyProxy {\\n _authorizeUpgrade(newImplementation);\\n _upgradeToAndCallUUPS(newImplementation, data, true);\\n }\\n\\n /**\\n * @dev Function that should revert when `msg.sender` is not authorized to upgrade the contract. Called by\\n * {upgradeTo} and {upgradeToAndCall}.\\n *\\n * Normally, this function will use an xref:access.adoc[access control] modifier such as {Ownable-onlyOwner}.\\n *\\n * ```solidity\\n * function _authorizeUpgrade(address) internal override onlyOwner {}\\n * ```\\n */\\n function _authorizeUpgrade(address newImplementation) internal virtual;\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0xefb41f5c1a00249b7a99f0782f8c557865605426a3fb6e5fe9ae334293ae4f33\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n function __Context_init() internal onlyInitializing {\\n }\\n\\n function __Context_init_unchained() internal onlyInitializing {\\n }\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n function _contextSuffixLength() internal view virtual returns (uint256) {\\n return 0;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x75097e35253e7fb282ee4d7f27a80eaacfa759923185bf17302a89cbc059c5ef\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/StorageSlot.sol)\\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```solidity\\n * contract ERC1967 {\\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n * function _getImplementation() internal view returns (address) {\\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n * }\\n *\\n * function _setImplementation(address newImplementation) internal {\\n * require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n * }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._\\n * _Available since v4.9 for `string`, `bytes`._\\n */\\nlibrary StorageSlotUpgradeable {\\n struct AddressSlot {\\n address value;\\n }\\n\\n struct BooleanSlot {\\n bool value;\\n }\\n\\n struct Bytes32Slot {\\n bytes32 value;\\n }\\n\\n struct Uint256Slot {\\n uint256 value;\\n }\\n\\n struct StringSlot {\\n string value;\\n }\\n\\n struct BytesSlot {\\n bytes value;\\n }\\n\\n /**\\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n */\\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n */\\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n */\\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n */\\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` with member `value` located at `slot`.\\n */\\n function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\\n */\\n function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` with member `value` located at `slot`.\\n */\\n function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\\n */\\n function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n}\\n\",\"keccak256\":\"0x07ac95acad040f1fb1f6120dd0aa5f702db69446e95f82613721879d30de0908\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165Upgradeable.sol\\\";\\nimport {Initializable} from \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165Upgradeable is Initializable, IERC165Upgradeable {\\n function __ERC165_init() internal onlyInitializing {\\n }\\n\\n function __ERC165_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165Upgradeable).interfaceId;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0xd90d7723512df65ae417adaf0801042940f0dabd60039ceeaffe34aa5b238da1\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165Upgradeable {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\"},\"src/dao/IDAO.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IDAO\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for DAOs within the Aragon App DAO framework.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IDAO {\\n /// @notice The action struct to be consumed by the DAO's `execute` function resulting in an external call.\\n /// @param to The address to call.\\n /// @param value The native token value to be sent with the call.\\n /// @param data The bytes-encoded function selector and calldata for the call.\\n struct Action {\\n address to;\\n uint256 value;\\n bytes data;\\n }\\n\\n /// @notice Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\\n /// @param _where The address of the contract.\\n /// @param _who The address of a EOA or contract to give the permissions.\\n /// @param _permissionId The permission identifier.\\n /// @param _data The optional data passed to the `PermissionCondition` registered.\\n /// @return Returns true if the address has permission, false if not.\\n function hasPermission(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes memory _data\\n ) external view returns (bool);\\n\\n /// @notice Updates the DAO metadata (e.g., an IPFS hash).\\n /// @param _metadata The IPFS hash of the new metadata object.\\n function setMetadata(bytes calldata _metadata) external;\\n\\n /// @notice Emitted when the DAO metadata is updated.\\n /// @param metadata The IPFS hash of the new metadata object.\\n event MetadataSet(bytes metadata);\\n\\n /// @notice Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted.\\n /// @param _callId The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce.\\n /// @param _actions The array of actions.\\n /// @param _allowFailureMap A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @return The array of results obtained from the executed actions in `bytes`.\\n /// @return The resulting failure map containing the actions have actually failed.\\n function execute(\\n bytes32 _callId,\\n Action[] memory _actions,\\n uint256 _allowFailureMap\\n ) external returns (bytes[] memory, uint256);\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param actor The address of the caller.\\n /// @param callId The ID of the call.\\n /// @param actions The array of actions executed.\\n /// @param allowFailureMap The allow failure map encoding which actions are allowed to fail.\\n /// @param failureMap The failure map encoding which actions have failed.\\n /// @param execResults The array with the results of the executed actions.\\n /// @dev The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce.\\n event Executed(\\n address indexed actor,\\n bytes32 callId,\\n Action[] actions,\\n uint256 allowFailureMap,\\n uint256 failureMap,\\n bytes[] execResults\\n );\\n\\n /// @notice Emitted when a standard callback is registered.\\n /// @param interfaceId The ID of the interface.\\n /// @param callbackSelector The selector of the callback function.\\n /// @param magicNumber The magic number to be registered for the callback function selector.\\n event StandardCallbackRegistered(\\n bytes4 interfaceId,\\n bytes4 callbackSelector,\\n bytes4 magicNumber\\n );\\n\\n /// @notice Deposits (native) tokens to the DAO contract with a reference string.\\n /// @param _token The address of the token or address(0) in case of the native token.\\n /// @param _amount The amount of tokens to deposit.\\n /// @param _reference The reference describing the deposit reason.\\n function deposit(address _token, uint256 _amount, string calldata _reference) external payable;\\n\\n /// @notice Emitted when a token deposit has been made to the DAO.\\n /// @param sender The address of the sender.\\n /// @param token The address of the deposited token.\\n /// @param amount The amount of tokens deposited.\\n /// @param _reference The reference describing the deposit reason.\\n event Deposited(\\n address indexed sender,\\n address indexed token,\\n uint256 amount,\\n string _reference\\n );\\n\\n /// @notice Emitted when a native token deposit has been made to the DAO.\\n /// @dev This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).\\n /// @param sender The address of the sender.\\n /// @param amount The amount of native tokens deposited.\\n event NativeTokenDeposited(address sender, uint256 amount);\\n\\n /// @notice Setter for the trusted forwarder verifying the meta transaction.\\n /// @param _trustedForwarder The trusted forwarder address.\\n function setTrustedForwarder(address _trustedForwarder) external;\\n\\n /// @notice Getter for the trusted forwarder verifying the meta transaction.\\n /// @return The trusted forwarder address.\\n function getTrustedForwarder() external view returns (address);\\n\\n /// @notice Emitted when a new TrustedForwarder is set on the DAO.\\n /// @param forwarder the new forwarder address.\\n event TrustedForwarderSet(address forwarder);\\n\\n /// @notice Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\\n /// @param _hash The hash of the data to be signed.\\n /// @param _signature The signature byte array associated with `_hash`.\\n /// @return Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not.\\n function isValidSignature(bytes32 _hash, bytes memory _signature) external returns (bytes4);\\n\\n /// @notice Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\\n /// @param _interfaceId The ID of the interface.\\n /// @param _callbackSelector The selector of the callback function.\\n /// @param _magicNumber The magic number to be registered for the function signature.\\n function registerStandardCallback(\\n bytes4 _interfaceId,\\n bytes4 _callbackSelector,\\n bytes4 _magicNumber\\n ) external;\\n\\n /// @notice Removed function being left here to not corrupt the IDAO interface ID. Any call will revert.\\n /// @dev Introduced in v1.0.0. Removed in v1.4.0.\\n function setSignatureValidator(address) external;\\n}\\n\",\"keccak256\":\"0xb7f615523c26de042edce98731c658f44a1edb2464387ac1b642c4c69f57128e\",\"license\":\"AGPL-3.0-or-later\"},\"src/mocks/plugin/PluginUUPSUpgradeableMock.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\n/* solhint-disable one-contract-per-file */\\npragma solidity ^0.8.8;\\n\\nimport {PluginUUPSUpgradeable} from \\\"../../plugin/PluginUUPSUpgradeable.sol\\\";\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice A mock upgradeable plugin to be deployed via the UUPS proxy pattern.\\n/// v1.1 (Release 1, Build 1)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableMockBuild1 is PluginUUPSUpgradeable {\\n uint256 public state1;\\n\\n function initialize(IDAO _dao) external initializer {\\n __PluginUUPSUpgradeable_init(_dao);\\n state1 = 1;\\n }\\n}\\n\\n/// @notice A mock upgradeable plugin to be deployed via the UUPS proxy pattern.\\n/// v1.1 (Release 1, Build 2)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableMockBuild2 is PluginUUPSUpgradeable {\\n uint256 public state1;\\n uint256 public state2;\\n\\n function initialize(IDAO _dao) external reinitializer(2) {\\n __PluginUUPSUpgradeable_init(_dao);\\n state1 = 1;\\n state2 = 2;\\n }\\n\\n function initializeFrom(uint16 _previousBuild) external reinitializer(2) {\\n if (_previousBuild < 2) {\\n state2 = 2;\\n }\\n }\\n}\\n\\n/// @notice A mock upgradeable plugin to be deployed via the UUPS proxy pattern.\\n/// v1.1 (Release 1, Build 3)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableMockBuild3 is PluginUUPSUpgradeable {\\n uint256 public state1;\\n uint256 public state2;\\n uint256 public state3;\\n\\n function initialize(IDAO _dao) external reinitializer(3) {\\n __PluginUUPSUpgradeable_init(_dao);\\n state1 = 1;\\n state2 = 2;\\n state3 = 3;\\n }\\n\\n function initializeFrom(uint16 _previousBuild) external reinitializer(3) {\\n if (_previousBuild < 2) {\\n state2 = 2;\\n }\\n if (_previousBuild < 3) {\\n state3 = 3;\\n }\\n }\\n}\\n\\n/// @notice A mock upgradeable plugin missing an initializer function.\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableMockBad is PluginUUPSUpgradeable {\\n uint256 public state1;\\n\\n function notAnInitializer(IDAO _dao) external {\\n __PluginUUPSUpgradeable_init(_dao);\\n state1 = 1;\\n }\\n}\\n\",\"keccak256\":\"0x2917df3b1da0de27f58cf531afeaa4e6c4285717247cbdd9ecc7880ae5cb9cb0\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/DaoAuthorizableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ContextUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\\\";\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\nimport {_auth} from \\\"./auth.sol\\\";\\n\\n/// @title DaoAuthorizableUpgradeable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract contract providing a meta-transaction compatible modifier for upgradeable or cloneable contracts to authorize function calls through an associated DAO.\\n/// @dev Make sure to call `__DaoAuthorizableUpgradeable_init` during initialization of the inheriting contract.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract DaoAuthorizableUpgradeable is ContextUpgradeable {\\n /// @notice The associated DAO managing the permissions of inheriting contracts.\\n IDAO private dao_;\\n\\n /// @notice Initializes the contract by setting the associated DAO.\\n /// @param _dao The associated DAO address.\\n // solhint-disable-next-line func-name-mixedcase\\n function __DaoAuthorizableUpgradeable_init(IDAO _dao) internal onlyInitializing {\\n dao_ = _dao;\\n }\\n\\n /// @notice Returns the DAO contract.\\n /// @return The DAO contract.\\n function dao() public view returns (IDAO) {\\n return dao_;\\n }\\n\\n /// @notice A modifier to make functions on inheriting contracts authorized. Permissions to call the function are checked through the associated DAO's permission manager.\\n /// @param _permissionId The permission identifier required to call the method this modifier is applied to.\\n modifier auth(bytes32 _permissionId) {\\n _auth(dao_, address(this), _msgSender(), _permissionId, _msgData());\\n _;\\n }\\n\\n /// @notice This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain (see [OpenZeppelin's guide about storage gaps](https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps)).\\n uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0x7fac6b01b037ba1cb9d6a22d3f43b0785037dcf496ffb672434d9bf7227d2585\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/auth.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice Thrown if a call is unauthorized in the associated DAO.\\n/// @param dao The associated DAO.\\n/// @param where The context in which the authorization reverted.\\n/// @param who The address (EOA or contract) missing the permission.\\n/// @param permissionId The permission identifier.\\nerror DaoUnauthorized(address dao, address where, address who, bytes32 permissionId);\\n\\n/// @notice A free function checking if a caller is granted permissions on a target contract via a permission identifier that redirects the approval to a `PermissionCondition` if this was specified in the setup.\\n/// @param _where The address of the target contract for which `who` receives permission.\\n/// @param _who The address (EOA or contract) owning the permission.\\n/// @param _permissionId The permission identifier.\\n/// @param _data The optional data passed to the `PermissionCondition` registered.\\n/// @custom:security-contact sirt@aragon.org\\nfunction _auth(\\n IDAO _dao,\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes calldata _data\\n) view {\\n if (!_dao.hasPermission(_where, _who, _permissionId, _data))\\n revert DaoUnauthorized({\\n dao: address(_dao),\\n where: _where,\\n who: _who,\\n permissionId: _permissionId\\n });\\n}\\n\",\"keccak256\":\"0x878764b4f87fe0651fb3798fb9cb87c952f8c6caf6ae79c7f09de84df6c00298\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/IPlugin.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IPlugin\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the traits of a plugin.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IPlugin {\\n enum PluginType {\\n UUPS,\\n Cloneable,\\n Constructable\\n }\\n\\n /// @notice Returns the plugin's type\\n function pluginType() external view returns (PluginType);\\n}\\n\",\"keccak256\":\"0xc57cd0d10b6380ab7f54c713a509e88fd8f4ad9288313a0e8e12b8887817ddfe\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/PluginUUPSUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {UUPSUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\\\";\\nimport {IERC1822ProxiableUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport {ERC165Upgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\\\";\\n\\nimport {IProtocolVersion} from \\\"../utils/versioning/IProtocolVersion.sol\\\";\\nimport {ProtocolVersion} from \\\"../utils/versioning/ProtocolVersion.sol\\\";\\nimport {DaoAuthorizableUpgradeable} from \\\"../permission/auth/DaoAuthorizableUpgradeable.sol\\\";\\nimport {IDAO} from \\\"../dao/IDAO.sol\\\";\\nimport {IPlugin} from \\\"./IPlugin.sol\\\";\\n\\n/// @title PluginUUPSUpgradeable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract, upgradeable contract to inherit from when creating a plugin being deployed via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract PluginUUPSUpgradeable is\\n IPlugin,\\n ERC165Upgradeable,\\n UUPSUpgradeable,\\n DaoAuthorizableUpgradeable,\\n ProtocolVersion\\n{\\n // NOTE: When adding new state variables to the contract, the size of `_gap` has to be adapted below as well.\\n address public target;\\n\\n /// @dev Emitted each time the Target is set.\\n event TargetSet(address indexed previousTarget, address indexed newTarget);\\n\\n /// @notice Disables the initializers on the implementation contract to prevent it from being left uninitialized.\\n /// @custom:oz-upgrades-unsafe-allow constructor\\n constructor() {\\n _disableInitializers();\\n }\\n\\n /// @inheritdoc IPlugin\\n function pluginType() public pure override returns (PluginType) {\\n return PluginType.UUPS;\\n }\\n\\n /// @notice The ID of the permission required to call the `_authorizeUpgrade` function.\\n bytes32 public constant UPGRADE_PLUGIN_PERMISSION_ID = keccak256(\\\"UPGRADE_PLUGIN_PERMISSION\\\");\\n\\n /// @notice Initializes the plugin by storing the associated DAO.\\n /// @param _dao The DAO contract.\\n // solhint-disable-next-line func-name-mixedcase\\n function __PluginUUPSUpgradeable_init(IDAO _dao) internal virtual onlyInitializing {\\n __DaoAuthorizableUpgradeable_init(_dao);\\n }\\n\\n /// @dev Sets the target to a new target (`newTarget`).\\n /// @notice Can only be called by the current owner. TODO\\n function setTarget(address _target) public {\\n address previousTarget = target;\\n target = _target;\\n emit TargetSet(previousTarget, _target);\\n }\\n\\n /// @notice Checks if an interface is supported by this or its parent contract.\\n /// @param _interfaceId The ID of the interface.\\n /// @return Returns `true` if the interface is supported.\\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\\n return\\n _interfaceId == type(IPlugin).interfaceId ||\\n _interfaceId == type(IProtocolVersion).interfaceId ||\\n _interfaceId == type(IERC1822ProxiableUpgradeable).interfaceId ||\\n super.supportsInterface(_interfaceId);\\n }\\n\\n /// @notice Returns the address of the implementation contract in the [proxy storage slot](https://eips.ethereum.org/EIPS/eip-1967) slot the [UUPS proxy](https://eips.ethereum.org/EIPS/eip-1822) is pointing to.\\n /// @return The address of the implementation contract.\\n function implementation() public view returns (address) {\\n return _getImplementation();\\n }\\n\\n /// @notice Forwards the actions to the currently set `target` for the execution.\\n /// @param _callId Identifier for this execution.\\n /// @param _actions actions that will be eventually called.\\n /// @param _allowFailureMap Bitmap-encoded number. TODO:\\n /// @return execResults address of the implementation contract.\\n /// @return failureMap address of the implementation contract.\\n function _execute(\\n bytes32 _callId,\\n IDAO.Action[] calldata _actions,\\n uint256 _allowFailureMap\\n ) internal virtual returns (bytes[] memory execResults, uint256 failureMap) {\\n (execResults, failureMap) = IDAO(target).execute(_callId, _actions, _allowFailureMap);\\n }\\n\\n /// @notice Forwards the actions to the `target` for the execution.\\n /// @param _target Forwards the actions to the specific target.\\n /// @param _callId Identifier for this execution.\\n /// @param _actions actions that will be eventually called.\\n /// @param _allowFailureMap Bitmap-encoded number. TODO:\\n /// @return execResults address of the implementation contract.\\n /// @return failureMap address of the implementation contract.\\n function _execute(\\n address _target,\\n bytes32 _callId,\\n IDAO.Action[] calldata _actions,\\n uint256 _allowFailureMap\\n ) internal virtual returns (bytes[] memory execResults, uint256 failureMap) {\\n (execResults, failureMap) = IDAO(_target).execute(_callId, _actions, _allowFailureMap);\\n }\\n\\n /// @notice Internal method authorizing the upgrade of the contract via the [upgradeability mechanism for UUPS proxies](https://docs.openzeppelin.com/contracts/4.x/api/proxy#UUPSUpgradeable) (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\\n /// @dev The caller must have the `UPGRADE_PLUGIN_PERMISSION_ID` permission.\\n function _authorizeUpgrade(\\n address\\n )\\n internal\\n virtual\\n override\\n auth(UPGRADE_PLUGIN_PERMISSION_ID)\\n // solhint-disable-next-line no-empty-blocks\\n {\\n\\n }\\n\\n /// @notice This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain (see [OpenZeppelin's guide about storage gaps](https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps)).\\n uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0xce1d0126b3ae8c8afc887fba9f49b1cc35f84f1c1d5bf4cadee330c7ae15014f\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/IProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IProtocolVersion\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the semantic Aragon OSx protocol version number.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IProtocolVersion {\\n /// @notice Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\\n /// @return _version Returns the semantic Aragon OSx protocol version number.\\n /// @dev This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\\n function protocolVersion() external view returns (uint8[3] memory _version);\\n}\\n\",\"keccak256\":\"0x00a4da654d21dc1bdadbdc8bd54bb86c378c56f85e461ccc31303628ea621361\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/ProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IProtocolVersion} from \\\"./IProtocolVersion.sol\\\";\\n\\n/// @title ProtocolVersion\\n/// @author Aragon X - 2023\\n/// @notice An abstract, stateless, non-upgradeable contract providing the current Aragon OSx protocol version number.\\n/// @dev Do not add any new variables to this contract that would shift down storage in the inheritance chain.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract ProtocolVersion is IProtocolVersion {\\n // IMPORTANT: Do not add any storage variable, see the above notice.\\n\\n /// @inheritdoc IProtocolVersion\\n function protocolVersion() public pure returns (uint8[3] memory) {\\n return [1, 4, 0];\\n }\\n}\\n\",\"keccak256\":\"0x3975c937be935f687c6b6b8f379071232681e98cf04b175d72781b819ea52bdb\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[{"astId":372,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBad","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":375,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBad","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":1280,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBad","label":"__gap","offset":0,"slot":"1","type":"t_array(t_uint256)50_storage"},{"astId":354,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBad","label":"__gap","offset":0,"slot":"51","type":"t_array(t_uint256)50_storage"},{"astId":670,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBad","label":"__gap","offset":0,"slot":"101","type":"t_array(t_uint256)50_storage"},{"astId":1051,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBad","label":"__gap","offset":0,"slot":"151","type":"t_array(t_uint256)50_storage"},{"astId":3887,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBad","label":"dao_","offset":0,"slot":"201","type":"t_contract(IDAO)2538"},{"astId":3936,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBad","label":"__gap","offset":0,"slot":"202","type":"t_array(t_uint256)49_storage"},{"astId":4382,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBad","label":"target","offset":0,"slot":"251","type":"t_address"},{"astId":4575,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBad","label":"__gap","offset":0,"slot":"252","type":"t_array(t_uint256)49_storage"},{"astId":3253,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBad","label":"state1","offset":0,"slot":"301","type":"t_uint256"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_array(t_uint256)49_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[49]","numberOfBytes":"1568"},"t_array(t_uint256)50_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[50]","numberOfBytes":"1600"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_contract(IDAO)2538":{"encoding":"inplace","label":"contract IDAO","numberOfBytes":"20"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"errors":{"DaoUnauthorized(address,address,address,bytes32)":[{"notice":"Thrown if a call is unauthorized in the associated DAO."}]},"kind":"user","methods":{"UPGRADE_PLUGIN_PERMISSION_ID()":{"notice":"The ID of the permission required to call the `_authorizeUpgrade` function."},"dao()":{"notice":"Returns the DAO contract."},"implementation()":{"notice":"Returns the address of the implementation contract in the [proxy storage slot](https://eips.ethereum.org/EIPS/eip-1967) slot the [UUPS proxy](https://eips.ethereum.org/EIPS/eip-1822) is pointing to."},"pluginType()":{"notice":"Returns the plugin's type"},"protocolVersion()":{"notice":"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with."},"setTarget(address)":{"notice":"Can only be called by the current owner. TODO"},"supportsInterface(bytes4)":{"notice":"Checks if an interface is supported by this or its parent contract."}},"notice":"A mock upgradeable plugin missing an initializer function.","version":1}},"PluginUUPSUpgradeableMockBuild1":{"abi":[{"inputs":[{"internalType":"address","name":"dao","type":"address"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"name":"DaoUnauthorized","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"beacon","type":"address"}],"name":"BeaconUpgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousTarget","type":"address"},{"indexed":true,"internalType":"address","name":"newTarget","type":"address"}],"name":"TargetSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"inputs":[],"name":"UPGRADE_PLUGIN_PERMISSION_ID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dao","outputs":[{"internalType":"contract IDAO","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IDAO","name":"_dao","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pluginType","outputs":[{"internalType":"enum IPlugin.PluginType","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"protocolVersion","outputs":[{"internalType":"uint8[3]","name":"","type":"uint8[3]"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_target","type":"address"}],"name":"setTarget","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"state1","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"target","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"}],"name":"upgradeTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"}],"devdoc":{"details":"DO NOT USE IN PRODUCTION!","errors":{"DaoUnauthorized(address,address,address,bytes32)":[{"params":{"dao":"The associated DAO.","permissionId":"The permission identifier.","where":"The context in which the authorization reverted.","who":"The address (EOA or contract) missing the permission."}}]},"kind":"dev","methods":{"dao()":{"returns":{"_0":"The DAO contract."}},"implementation()":{"returns":{"_0":"The address of the implementation contract."}},"protocolVersion()":{"details":"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.","returns":{"_0":"Returns the semantic Aragon OSx protocol version number."}},"proxiableUUID()":{"details":"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier."},"setTarget(address)":{"details":"Sets the target to a new target (`newTarget`)."},"supportsInterface(bytes4)":{"params":{"_interfaceId":"The ID of the interface."},"returns":{"_0":"Returns `true` if the interface is supported."}},"upgradeTo(address)":{"custom:oz-upgrades-unsafe-allow-reachable":"delegatecall","details":"Upgrade the implementation of the proxy to `newImplementation`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."},"upgradeToAndCall(address,bytes)":{"custom:oz-upgrades-unsafe-allow-reachable":"delegatecall","details":"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."}},"version":1},"evm":{"bytecode":{"functionDebugData":{"@_4397":{"entryPoint":null,"id":4397,"parameterSlots":0,"returnSlots":0},"@_disableInitializers_515":{"entryPoint":34,"id":515,"parameterSlots":0,"returnSlots":0},"abi_encode_tuple_t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:608:50","statements":[{"nodeType":"YulBlock","src":"6:3:50","statements":[]},{"body":{"nodeType":"YulBlock","src":"188:229:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"205:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"216:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"198:6:50"},"nodeType":"YulFunctionCall","src":"198:21:50"},"nodeType":"YulExpressionStatement","src":"198:21:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"239:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"250:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"235:3:50"},"nodeType":"YulFunctionCall","src":"235:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"255:2:50","type":"","value":"39"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"228:6:50"},"nodeType":"YulFunctionCall","src":"228:30:50"},"nodeType":"YulExpressionStatement","src":"228:30:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"278:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"289:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"274:3:50"},"nodeType":"YulFunctionCall","src":"274:18:50"},{"hexValue":"496e697469616c697a61626c653a20636f6e747261637420697320696e697469","kind":"string","nodeType":"YulLiteral","src":"294:34:50","type":"","value":"Initializable: contract is initi"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"267:6:50"},"nodeType":"YulFunctionCall","src":"267:62:50"},"nodeType":"YulExpressionStatement","src":"267:62:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"349:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"360:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"345:3:50"},"nodeType":"YulFunctionCall","src":"345:18:50"},{"hexValue":"616c697a696e67","kind":"string","nodeType":"YulLiteral","src":"365:9:50","type":"","value":"alizing"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"338:6:50"},"nodeType":"YulFunctionCall","src":"338:37:50"},"nodeType":"YulExpressionStatement","src":"338:37:50"},{"nodeType":"YulAssignment","src":"384:27:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"396:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"407:3:50","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"392:3:50"},"nodeType":"YulFunctionCall","src":"392:19:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"384:4:50"}]}]},"name":"abi_encode_tuple_t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"165:9:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"179:4:50","type":""}],"src":"14:403:50"},{"body":{"nodeType":"YulBlock","src":"519:87:50","statements":[{"nodeType":"YulAssignment","src":"529:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"541:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"552:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"537:3:50"},"nodeType":"YulFunctionCall","src":"537:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"529:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"571:9:50"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"586:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"594:4:50","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"582:3:50"},"nodeType":"YulFunctionCall","src":"582:17:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"564:6:50"},"nodeType":"YulFunctionCall","src":"564:36:50"},"nodeType":"YulExpressionStatement","src":"564:36:50"}]},"name":"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"488:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"499:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"510:4:50","type":""}],"src":"422:184:50"}]},"contents":"{\n { }\n function abi_encode_tuple_t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 39)\n mstore(add(headStart, 64), \"Initializable: contract is initi\")\n mstore(add(headStart, 96), \"alizing\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xff))\n }\n}","id":50,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60a06040523060805234801561001457600080fd5b5061001d610022565b6100e1565b600054610100900460ff161561008e5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116146100df576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6080516111b061011860003960008181610334015281816103be015281816104b401528181610539015261062301526111b06000f3fe6080604052600436106100d25760003560e01c806352d1902d1161007f578063776d1a0111610059578063776d1a0114610200578063c4d66de814610220578063c9c4bfca14610240578063d4b839921461027457600080fd5b806352d1902d146101b15780635c60da1b146101d45780636accab8c146101e957600080fd5b80634162169f116100b05780634162169f1461015057806341de6830146101825780634f1ef2861461019e57600080fd5b806301ffc9a7146100d75780632ae9c6001461010c5780633659cfe61461012e575b600080fd5b3480156100e357600080fd5b506100f76100f2366004610ee8565b610294565b60405190151581526020015b60405180910390f35b34801561011857600080fd5b50610121610300565b6040516101039190610f12565b34801561013a57600080fd5b5061014e610149366004610f5b565b61032a565b005b34801561015c57600080fd5b5060c9546001600160a01b03165b6040516001600160a01b039091168152602001610103565b34801561018e57600080fd5b5060006040516101039190610f78565b61014e6101ac366004610fb6565b6104aa565b3480156101bd57600080fd5b506101c6610616565b604051908152602001610103565b3480156101e057600080fd5b5061016a6106db565b3480156101f557600080fd5b506101c661012d5481565b34801561020c57600080fd5b5061014e61021b366004610f5b565b610713565b34801561022c57600080fd5b5061014e61023b366004610f5b565b610772565b34801561024c57600080fd5b506101c67f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f581565b34801561028057600080fd5b5060fb5461016a906001600160a01b031681565b60006001600160e01b0319821663041de68360e41b14806102c457506001600160e01b03198216621574e360e91b145b806102df57506001600160e01b031982166352d1902d60e01b145b806102fa57506301ffc9a760e01b6001600160e01b03198316145b92915050565b610308610eca565b5060408051606081018252600181526004602082015260009181019190915290565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036103bc5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b60648201526084015b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166104177f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b0316146104825760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b60648201526084016103b3565b61048b81610899565b604080516000808252602082019092526104a7918391906108d6565b50565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036105375760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b60648201526084016103b3565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166105927f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b0316146105fd5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b60648201526084016103b3565b61060682610899565b610612828260016108d6565b5050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106b65760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016103b3565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b600061070e7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b60fb80546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d690600090a35050565b600054610100900460ff16158080156107925750600054600160ff909116105b806107ac5750303b1580156107ac575060005460ff166001145b61081e5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016103b3565b6000805460ff191660011790558015610841576000805461ff0019166101001790555b61084a82610a7b565b600161012d558015610612576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b60c9547f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f590610612906001600160a01b0316303384600036610aef565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561090e5761090983610bab565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610968575060408051601f3d908101601f191682019092526109659181019061107a565b60015b6109da5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201527f6f6e206973206e6f74205555505300000000000000000000000000000000000060648201526084016103b3565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114610a6f5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f7860448201527f6961626c6555554944000000000000000000000000000000000000000000000060648201526084016103b3565b50610909838383610c76565b600054610100900460ff16610ae65760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103b3565b6104a781610ca1565b604051637ef7c88360e11b81526001600160a01b0387169063fdef910690610b239088908890889088908890600401611093565b602060405180830381865afa158015610b40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6491906110e7565b610ba357604051630cb6f8ed60e21b81526001600160a01b038088166004830152808716602483015285166044820152606481018490526084016103b3565b505050505050565b6001600160a01b0381163b610c285760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e74726163740000000000000000000000000000000000000060648201526084016103b3565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610c7f83610d3b565b600082511180610c8c5750805b1561090957610c9b8383610d7b565b50505050565b600054610100900460ff16610d0c5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103b3565b60c9805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610d4481610bab565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060610da0838360405180606001604052806027815260200161117d60279139610da7565b9392505050565b6060600080856001600160a01b031685604051610dc4919061112d565b600060405180830381855af49150503d8060008114610dff576040519150601f19603f3d011682016040523d82523d6000602084013e610e04565b606091505b5091509150610e1586838387610e1f565b9695505050505050565b60608315610e8e578251600003610e87576001600160a01b0385163b610e875760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016103b3565b5081610e98565b610e988383610ea0565b949350505050565b815115610eb05781518083602001fd5b8060405162461bcd60e51b81526004016103b39190611149565b60405180606001604052806003906020820280368337509192915050565b600060208284031215610efa57600080fd5b81356001600160e01b031981168114610da057600080fd5b60608101818360005b6003811015610f3d57815160ff16835260209283019290910190600101610f1b565b50505092915050565b6001600160a01b03811681146104a757600080fd5b600060208284031215610f6d57600080fd5b8135610da081610f46565b6020810160038310610f9a57634e487b7160e01b600052602160045260246000fd5b91905290565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215610fc957600080fd5b8235610fd481610f46565b9150602083013567ffffffffffffffff80821115610ff157600080fd5b818501915085601f83011261100557600080fd5b81358181111561101757611017610fa0565b604051601f8201601f19908116603f0116810190838211818310171561103f5761103f610fa0565b8160405282815288602084870101111561105857600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60006020828403121561108c57600080fd5b5051919050565b60006001600160a01b03808816835280871660208401525084604083015260806060830152826080830152828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b6000602082840312156110f957600080fd5b81518015158114610da057600080fd5b60005b8381101561112457818101518382015260200161110c565b50506000910152565b6000825161113f818460208701611109565b9190910192915050565b6020815260008251806020840152611168816040850160208701611109565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a","opcodes":"PUSH1 0xA0 PUSH1 0x40 MSTORE ADDRESS PUSH1 0x80 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x14 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1D PUSH2 0x22 JUMP JUMPDEST PUSH2 0xE1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x8E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x27 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320696E697469 PUSH1 0x44 DUP3 ADD MSTORE PUSH7 0x616C697A696E67 PUSH1 0xC8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xFF SWAP1 DUP2 AND EQ PUSH2 0xDF JUMPI PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH2 0x11B0 PUSH2 0x118 PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH2 0x334 ADD MSTORE DUP2 DUP2 PUSH2 0x3BE ADD MSTORE DUP2 DUP2 PUSH2 0x4B4 ADD MSTORE DUP2 DUP2 PUSH2 0x539 ADD MSTORE PUSH2 0x623 ADD MSTORE PUSH2 0x11B0 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xD2 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x52D1902D GT PUSH2 0x7F JUMPI DUP1 PUSH4 0x776D1A01 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0x776D1A01 EQ PUSH2 0x200 JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0x220 JUMPI DUP1 PUSH4 0xC9C4BFCA EQ PUSH2 0x240 JUMPI DUP1 PUSH4 0xD4B83992 EQ PUSH2 0x274 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x52D1902D EQ PUSH2 0x1B1 JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0x1D4 JUMPI DUP1 PUSH4 0x6ACCAB8C EQ PUSH2 0x1E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x4162169F GT PUSH2 0xB0 JUMPI DUP1 PUSH4 0x4162169F EQ PUSH2 0x150 JUMPI DUP1 PUSH4 0x41DE6830 EQ PUSH2 0x182 JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x19E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xD7 JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0x10C JUMPI DUP1 PUSH4 0x3659CFE6 EQ PUSH2 0x12E JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xE3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF7 PUSH2 0xF2 CALLDATASIZE PUSH1 0x4 PUSH2 0xEE8 JUMP JUMPDEST PUSH2 0x294 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x118 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x121 PUSH2 0x300 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x103 SWAP2 SWAP1 PUSH2 0xF12 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x13A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x14E PUSH2 0x149 CALLDATASIZE PUSH1 0x4 PUSH2 0xF5B JUMP JUMPDEST PUSH2 0x32A JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x15C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xC9 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x103 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x18E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 PUSH1 0x40 MLOAD PUSH2 0x103 SWAP2 SWAP1 PUSH2 0xF78 JUMP JUMPDEST PUSH2 0x14E PUSH2 0x1AC CALLDATASIZE PUSH1 0x4 PUSH2 0xFB6 JUMP JUMPDEST PUSH2 0x4AA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C6 PUSH2 0x616 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x103 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x16A PUSH2 0x6DB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C6 PUSH2 0x12D SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x20C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x14E PUSH2 0x21B CALLDATASIZE PUSH1 0x4 PUSH2 0xF5B JUMP JUMPDEST PUSH2 0x713 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x22C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x14E PUSH2 0x23B CALLDATASIZE PUSH1 0x4 PUSH2 0xF5B JUMP JUMPDEST PUSH2 0x772 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x24C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C6 PUSH32 0x821B6E3A557148015A918C89E5D092E878A69854A2D1A410635F771BD5A8A3F5 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x280 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xFB SLOAD PUSH2 0x16A SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x41DE683 PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x2C4 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x2DF JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x52D1902D PUSH1 0xE0 SHL EQ JUMPDEST DUP1 PUSH2 0x2FA JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x308 PUSH2 0xECA JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x3BC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x19195B1959D85D1958D85B1B PUSH1 0xA2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x417 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x482 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x6163746976652070726F7879 PUSH1 0xA0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B3 JUMP JUMPDEST PUSH2 0x48B DUP2 PUSH2 0x899 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x4A7 SWAP2 DUP4 SWAP2 SWAP1 PUSH2 0x8D6 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x537 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x19195B1959D85D1958D85B1B PUSH1 0xA2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B3 JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x592 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x5FD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x6163746976652070726F7879 PUSH1 0xA0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B3 JUMP JUMPDEST PUSH2 0x606 DUP3 PUSH2 0x899 JUMP JUMPDEST PUSH2 0x612 DUP3 DUP3 PUSH1 0x1 PUSH2 0x8D6 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x6B6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x38 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x555550535570677261646561626C653A206D757374206E6F742062652063616C PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6C6564207468726F7567682064656C656761746563616C6C0000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B3 JUMP JUMPDEST POP PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x70E PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0xFB DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP2 SWAP1 DUP3 SWAP1 PUSH32 0x90CC2F570A6EB594B1580EA3E41247D2D73A55281889E86BD4EC2FC29C7E62D6 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 DUP1 ISZERO PUSH2 0x792 JUMPI POP PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xFF SWAP1 SWAP2 AND LT JUMPDEST DUP1 PUSH2 0x7AC JUMPI POP ADDRESS EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x7AC JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF AND PUSH1 0x1 EQ JUMPDEST PUSH2 0x81E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x647920696E697469616C697A6564000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B3 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE DUP1 ISZERO PUSH2 0x841 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND PUSH2 0x100 OR SWAP1 SSTORE JUMPDEST PUSH2 0x84A DUP3 PUSH2 0xA7B JUMP JUMPDEST PUSH1 0x1 PUSH2 0x12D SSTORE DUP1 ISZERO PUSH2 0x612 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0xC9 SLOAD PUSH32 0x821B6E3A557148015A918C89E5D092E878A69854A2D1A410635F771BD5A8A3F5 SWAP1 PUSH2 0x612 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ADDRESS CALLER DUP5 PUSH1 0x0 CALLDATASIZE PUSH2 0xAEF JUMP JUMPDEST PUSH32 0x4910FDFA16FED3260ED0E7147F7CC6DA11A60208B5B9406D12A635614FFD9143 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x90E JUMPI PUSH2 0x909 DUP4 PUSH2 0xBAB JUMP JUMPDEST POP POP POP JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x52D1902D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x968 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x965 SWAP2 DUP2 ADD SWAP1 PUSH2 0x107A JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x9DA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524331393637557067726164653A206E657720696D706C656D656E74617469 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F6E206973206E6F742055555053000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B3 JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC DUP2 EQ PUSH2 0xA6F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524331393637557067726164653A20756E737570706F727465642070726F78 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6961626C65555549440000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B3 JUMP JUMPDEST POP PUSH2 0x909 DUP4 DUP4 DUP4 PUSH2 0xC76 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0xAE6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B3 JUMP JUMPDEST PUSH2 0x4A7 DUP2 PUSH2 0xCA1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x7EF7C883 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0xFDEF9106 SWAP1 PUSH2 0xB23 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x1093 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xB40 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xB64 SWAP2 SWAP1 PUSH2 0x10E7 JUMP JUMPDEST PUSH2 0xBA3 JUMPI PUSH1 0x40 MLOAD PUSH4 0xCB6F8ED PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND PUSH1 0x4 DUP4 ADD MSTORE DUP1 DUP8 AND PUSH1 0x24 DUP4 ADD MSTORE DUP6 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x84 ADD PUSH2 0x3B3 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND EXTCODESIZE PUSH2 0xC28 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313936373A206E657720696D706C656D656E746174696F6E206973206E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F74206120636F6E747261637400000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B3 JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xC7F DUP4 PUSH2 0xD3B JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD GT DUP1 PUSH2 0xC8C JUMPI POP DUP1 JUMPDEST ISZERO PUSH2 0x909 JUMPI PUSH2 0xC9B DUP4 DUP4 PUSH2 0xD7B JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0xD0C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B3 JUMP JUMPDEST PUSH1 0xC9 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xD44 DUP2 PUSH2 0xBAB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xDA0 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x117D PUSH1 0x27 SWAP2 CODECOPY PUSH2 0xDA7 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0xDC4 SWAP2 SWAP1 PUSH2 0x112D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xDFF JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xE04 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0xE15 DUP7 DUP4 DUP4 DUP8 PUSH2 0xE1F JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0xE8E JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0xE87 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0xE87 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3B3 JUMP JUMPDEST POP DUP2 PUSH2 0xE98 JUMP JUMPDEST PUSH2 0xE98 DUP4 DUP4 PUSH2 0xEA0 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0xEB0 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3B3 SWAP2 SWAP1 PUSH2 0x1149 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xEFA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0xDA0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0xF3D JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0xF1B JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x4A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xF6D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xDA0 DUP2 PUSH2 0xF46 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH1 0x3 DUP4 LT PUSH2 0xF9A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 SWAP1 MSTORE SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xFC9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0xFD4 DUP2 PUSH2 0xF46 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xFF1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1005 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x1017 JUMPI PUSH2 0x1017 PUSH2 0xFA0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x103F JUMPI PUSH2 0x103F PUSH2 0xFA0 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x1058 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x108C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND DUP4 MSTORE DUP1 DUP8 AND PUSH1 0x20 DUP5 ADD MSTORE POP DUP5 PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x80 PUSH1 0x60 DUP4 ADD MSTORE DUP3 PUSH1 0x80 DUP4 ADD MSTORE DUP3 DUP5 PUSH1 0xA0 DUP5 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0xA0 DUP5 DUP5 ADD ADD MSTORE PUSH1 0xA0 PUSH1 0x1F NOT PUSH1 0x1F DUP6 ADD AND DUP4 ADD ADD SWAP1 POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x10F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xDA0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1124 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x110C JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x113F DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x1109 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x1168 DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x1109 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A164 PUSH20 0x6F6C6343000811000A0000000000000000000000 ","sourceMap":"382:225:31:-:0;;;1198:4:5;1155:48;;382:225:31;;;;;;;;;-1:-1:-1;1647:22:40;:20;:22::i;:::-;382:225:31;;5939:280:4;6007:13;;;;;;;6006:14;5998:66;;;;-1:-1:-1;;;5998:66:4;;216:2:50;5998:66:4;;;198:21:50;255:2;235:18;;;228:30;294:34;274:18;;;267:62;-1:-1:-1;;;345:18:50;;;338:37;392:19;;5998:66:4;;;;;;;;6078:12;;6094:15;6078:12;;;:31;6074:139;;6125:12;:30;;-1:-1:-1;;6125:30:4;6140:15;6125:30;;;;;;6174:28;;564:36:50;;;6174:28:4;;552:2:50;537:18;6174:28:4;;;;;;;6074:139;5939:280::o;422:184:50:-;382:225:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@UPGRADE_PLUGIN_PERMISSION_ID_4415":{"entryPoint":null,"id":4415,"parameterSlots":0,"returnSlots":0},"@__DaoAuthorizableUpgradeable_init_3901":{"entryPoint":3233,"id":3901,"parameterSlots":1,"returnSlots":0},"@__PluginUUPSUpgradeable_init_4429":{"entryPoint":2683,"id":4429,"parameterSlots":1,"returnSlots":0},"@_auth_3987":{"entryPoint":2799,"id":3987,"parameterSlots":6,"returnSlots":0},"@_authorizeUpgrade_4570":{"entryPoint":2201,"id":4570,"parameterSlots":1,"returnSlots":0},"@_getImplementation_76":{"entryPoint":null,"id":76,"parameterSlots":0,"returnSlots":1},"@_msgData_1038":{"entryPoint":null,"id":1038,"parameterSlots":0,"returnSlots":2},"@_msgSender_1029":{"entryPoint":null,"id":1029,"parameterSlots":0,"returnSlots":1},"@_revert_1000":{"entryPoint":3744,"id":1000,"parameterSlots":2,"returnSlots":0},"@_setImplementation_100":{"entryPoint":2987,"id":100,"parameterSlots":1,"returnSlots":0},"@_upgradeToAndCallUUPS_198":{"entryPoint":2262,"id":198,"parameterSlots":3,"returnSlots":0},"@_upgradeToAndCall_145":{"entryPoint":3190,"id":145,"parameterSlots":3,"returnSlots":0},"@_upgradeTo_115":{"entryPoint":3387,"id":115,"parameterSlots":1,"returnSlots":0},"@dao_3911":{"entryPoint":null,"id":3911,"parameterSlots":0,"returnSlots":1},"@functionDelegateCall_888":{"entryPoint":3451,"id":888,"parameterSlots":2,"returnSlots":1},"@functionDelegateCall_917":{"entryPoint":3495,"id":917,"parameterSlots":3,"returnSlots":1},"@getAddressSlot_1158":{"entryPoint":null,"id":1158,"parameterSlots":1,"returnSlots":1},"@getBooleanSlot_1169":{"entryPoint":null,"id":1169,"parameterSlots":1,"returnSlots":1},"@implementation_4495":{"entryPoint":1755,"id":4495,"parameterSlots":0,"returnSlots":1},"@initialize_3136":{"entryPoint":1906,"id":3136,"parameterSlots":1,"returnSlots":0},"@isContract_689":{"entryPoint":null,"id":689,"parameterSlots":1,"returnSlots":1},"@pluginType_4409":{"entryPoint":null,"id":4409,"parameterSlots":0,"returnSlots":1},"@protocolVersion_5135":{"entryPoint":768,"id":5135,"parameterSlots":0,"returnSlots":1},"@proxiableUUID_616":{"entryPoint":1558,"id":616,"parameterSlots":0,"returnSlots":1},"@setTarget_4449":{"entryPoint":1811,"id":4449,"parameterSlots":1,"returnSlots":0},"@state1_3119":{"entryPoint":null,"id":3119,"parameterSlots":0,"returnSlots":0},"@supportsInterface_1275":{"entryPoint":null,"id":1275,"parameterSlots":1,"returnSlots":1},"@supportsInterface_4485":{"entryPoint":660,"id":4485,"parameterSlots":1,"returnSlots":1},"@target_4382":{"entryPoint":null,"id":4382,"parameterSlots":0,"returnSlots":0},"@upgradeToAndCall_659":{"entryPoint":1194,"id":659,"parameterSlots":2,"returnSlots":0},"@upgradeTo_638":{"entryPoint":810,"id":638,"parameterSlots":1,"returnSlots":0},"@verifyCallResultFromTarget_956":{"entryPoint":3615,"id":956,"parameterSlots":4,"returnSlots":1},"abi_decode_tuple_t_address":{"entryPoint":3931,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_bytes_memory_ptr":{"entryPoint":4022,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_bool_fromMemory":{"entryPoint":4327,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes32_fromMemory":{"entryPoint":4218,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes4":{"entryPoint":3816,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_contract$_IDAO_$2538":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":4397,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address_t_address_t_address_t_bytes32__to_t_address_t_address_t_address_t_bytes32__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":5,"returnSlots":1},"abi_encode_tuple_t_address_t_address_t_bytes32_t_bytes_calldata_ptr__to_t_address_t_address_t_bytes32_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":4243,"id":null,"parameterSlots":6,"returnSlots":1},"abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed":{"entryPoint":3858,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_contract$_IDAO_$2538__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_enum$_PluginType_$3994__to_t_uint8__fromStack_reversed":{"entryPoint":3960,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_rational_1_by_1__to_t_uint8__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":4425,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_36e108fa7a809b52ab1951dd91c117a7bc9ac5250bdf1aa162d4e104f7edf9eb__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_52f1ead4d9653e13afbd2e90ef2587c30187cd50b2e97d784e3f7a7541247434__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_67f0151b4ad1dcfa0e3302a0cd6019f51582ef1807b37dceb00bd852a514f7f4__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_76b6b6debfc5febf101145a79ecf0b0d2e89e397dfdab2bca99888370411152c__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_8e8e2fbcb586f700b5b14e2c4a650c8d83b9773c31c5fe8962070ea544e11f24__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"copy_memory_to_memory_with_cleanup":{"entryPoint":4361,"id":null,"parameterSlots":3,"returnSlots":0},"panic_error_0x41":{"entryPoint":4000,"id":null,"parameterSlots":0,"returnSlots":0},"validator_revert_address":{"entryPoint":3910,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:10523:50","statements":[{"nodeType":"YulBlock","src":"6:3:50","statements":[]},{"body":{"nodeType":"YulBlock","src":"83:217:50","statements":[{"body":{"nodeType":"YulBlock","src":"129:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"138:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"141:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"131:6:50"},"nodeType":"YulFunctionCall","src":"131:12:50"},"nodeType":"YulExpressionStatement","src":"131:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"104:7:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"113:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"100:3:50"},"nodeType":"YulFunctionCall","src":"100:23:50"},{"kind":"number","nodeType":"YulLiteral","src":"125:2:50","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"96:3:50"},"nodeType":"YulFunctionCall","src":"96:32:50"},"nodeType":"YulIf","src":"93:52:50"},{"nodeType":"YulVariableDeclaration","src":"154:36:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"180:9:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"167:12:50"},"nodeType":"YulFunctionCall","src":"167:23:50"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"158:5:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"254:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"263:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"266:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"256:6:50"},"nodeType":"YulFunctionCall","src":"256:12:50"},"nodeType":"YulExpressionStatement","src":"256:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"212:5:50"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"223:5:50"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"234:3:50","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"239:10:50","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"230:3:50"},"nodeType":"YulFunctionCall","src":"230:20:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"219:3:50"},"nodeType":"YulFunctionCall","src":"219:32:50"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"209:2:50"},"nodeType":"YulFunctionCall","src":"209:43:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"202:6:50"},"nodeType":"YulFunctionCall","src":"202:51:50"},"nodeType":"YulIf","src":"199:71:50"},{"nodeType":"YulAssignment","src":"279:15:50","value":{"name":"value","nodeType":"YulIdentifier","src":"289:5:50"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"279:6:50"}]}]},"name":"abi_decode_tuple_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"49:9:50","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"60:7:50","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"72:6:50","type":""}],"src":"14:286:50"},{"body":{"nodeType":"YulBlock","src":"400:92:50","statements":[{"nodeType":"YulAssignment","src":"410:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"422:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"433:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"418:3:50"},"nodeType":"YulFunctionCall","src":"418:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"410:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"452:9:50"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"477:6:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"470:6:50"},"nodeType":"YulFunctionCall","src":"470:14:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"463:6:50"},"nodeType":"YulFunctionCall","src":"463:22:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"445:6:50"},"nodeType":"YulFunctionCall","src":"445:41:50"},"nodeType":"YulExpressionStatement","src":"445:41:50"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"369:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"380:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"391:4:50","type":""}],"src":"305:187:50"},{"body":{"nodeType":"YulBlock","src":"640:358:50","statements":[{"nodeType":"YulAssignment","src":"650:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"662:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"673:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"658:3:50"},"nodeType":"YulFunctionCall","src":"658:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"650:4:50"}]},{"nodeType":"YulVariableDeclaration","src":"685:20:50","value":{"name":"headStart","nodeType":"YulIdentifier","src":"696:9:50"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"689:3:50","type":""}]},{"nodeType":"YulAssignment","src":"714:16:50","value":{"name":"headStart","nodeType":"YulIdentifier","src":"721:9:50"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"714:3:50"}]},{"nodeType":"YulVariableDeclaration","src":"739:20:50","value":{"name":"value0","nodeType":"YulIdentifier","src":"753:6:50"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"743:6:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"768:10:50","value":{"kind":"number","nodeType":"YulLiteral","src":"777:1:50","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"772:1:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"834:158:50","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"855:3:50"},{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"870:6:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"864:5:50"},"nodeType":"YulFunctionCall","src":"864:13:50"},{"kind":"number","nodeType":"YulLiteral","src":"879:4:50","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"860:3:50"},"nodeType":"YulFunctionCall","src":"860:24:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"848:6:50"},"nodeType":"YulFunctionCall","src":"848:37:50"},"nodeType":"YulExpressionStatement","src":"848:37:50"},{"nodeType":"YulVariableDeclaration","src":"898:14:50","value":{"kind":"number","nodeType":"YulLiteral","src":"908:4:50","type":"","value":"0x20"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"902:2:50","type":""}]},{"nodeType":"YulAssignment","src":"925:19:50","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"936:3:50"},{"name":"_1","nodeType":"YulIdentifier","src":"941:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"932:3:50"},"nodeType":"YulFunctionCall","src":"932:12:50"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"925:3:50"}]},{"nodeType":"YulAssignment","src":"957:25:50","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"971:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"979:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"967:3:50"},"nodeType":"YulFunctionCall","src":"967:15:50"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"957:6:50"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"798:1:50"},{"kind":"number","nodeType":"YulLiteral","src":"801:4:50","type":"","value":"0x03"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"795:2:50"},"nodeType":"YulFunctionCall","src":"795:11:50"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"807:18:50","statements":[{"nodeType":"YulAssignment","src":"809:14:50","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"818:1:50"},{"kind":"number","nodeType":"YulLiteral","src":"821:1:50","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"814:3:50"},"nodeType":"YulFunctionCall","src":"814:9:50"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"809:1:50"}]}]},"pre":{"nodeType":"YulBlock","src":"791:3:50","statements":[]},"src":"787:205:50"}]},"name":"abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"609:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"620:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"631:4:50","type":""}],"src":"497:501:50"},{"body":{"nodeType":"YulBlock","src":"1048:109:50","statements":[{"body":{"nodeType":"YulBlock","src":"1135:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1144:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1147:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1137:6:50"},"nodeType":"YulFunctionCall","src":"1137:12:50"},"nodeType":"YulExpressionStatement","src":"1137:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1071:5:50"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1082:5:50"},{"kind":"number","nodeType":"YulLiteral","src":"1089:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1078:3:50"},"nodeType":"YulFunctionCall","src":"1078:54:50"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1068:2:50"},"nodeType":"YulFunctionCall","src":"1068:65:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1061:6:50"},"nodeType":"YulFunctionCall","src":"1061:73:50"},"nodeType":"YulIf","src":"1058:93:50"}]},"name":"validator_revert_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1037:5:50","type":""}],"src":"1003:154:50"},{"body":{"nodeType":"YulBlock","src":"1232:177:50","statements":[{"body":{"nodeType":"YulBlock","src":"1278:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1287:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1290:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1280:6:50"},"nodeType":"YulFunctionCall","src":"1280:12:50"},"nodeType":"YulExpressionStatement","src":"1280:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1253:7:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"1262:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1249:3:50"},"nodeType":"YulFunctionCall","src":"1249:23:50"},{"kind":"number","nodeType":"YulLiteral","src":"1274:2:50","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1245:3:50"},"nodeType":"YulFunctionCall","src":"1245:32:50"},"nodeType":"YulIf","src":"1242:52:50"},{"nodeType":"YulVariableDeclaration","src":"1303:36:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1329:9:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1316:12:50"},"nodeType":"YulFunctionCall","src":"1316:23:50"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"1307:5:50","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1373:5:50"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"1348:24:50"},"nodeType":"YulFunctionCall","src":"1348:31:50"},"nodeType":"YulExpressionStatement","src":"1348:31:50"},{"nodeType":"YulAssignment","src":"1388:15:50","value":{"name":"value","nodeType":"YulIdentifier","src":"1398:5:50"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1388:6:50"}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1198:9:50","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1209:7:50","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1221:6:50","type":""}],"src":"1162:247:50"},{"body":{"nodeType":"YulBlock","src":"1528:125:50","statements":[{"nodeType":"YulAssignment","src":"1538:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1550:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"1561:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1546:3:50"},"nodeType":"YulFunctionCall","src":"1546:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1538:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1580:9:50"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1595:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"1603:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1591:3:50"},"nodeType":"YulFunctionCall","src":"1591:55:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1573:6:50"},"nodeType":"YulFunctionCall","src":"1573:74:50"},"nodeType":"YulExpressionStatement","src":"1573:74:50"}]},"name":"abi_encode_tuple_t_contract$_IDAO_$2538__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1497:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1508:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1519:4:50","type":""}],"src":"1414:239:50"},{"body":{"nodeType":"YulBlock","src":"1772:229:50","statements":[{"nodeType":"YulAssignment","src":"1782:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1794:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"1805:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1790:3:50"},"nodeType":"YulFunctionCall","src":"1790:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1782:4:50"}]},{"body":{"nodeType":"YulBlock","src":"1850:111:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1871:1:50","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1878:3:50","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"1883:10:50","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1874:3:50"},"nodeType":"YulFunctionCall","src":"1874:20:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1864:6:50"},"nodeType":"YulFunctionCall","src":"1864:31:50"},"nodeType":"YulExpressionStatement","src":"1864:31:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1915:1:50","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"1918:4:50","type":"","value":"0x21"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1908:6:50"},"nodeType":"YulFunctionCall","src":"1908:15:50"},"nodeType":"YulExpressionStatement","src":"1908:15:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1943:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1946:4:50","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1936:6:50"},"nodeType":"YulFunctionCall","src":"1936:15:50"},"nodeType":"YulExpressionStatement","src":"1936:15:50"}]},"condition":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1830:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"1838:1:50","type":"","value":"3"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"1827:2:50"},"nodeType":"YulFunctionCall","src":"1827:13:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1820:6:50"},"nodeType":"YulFunctionCall","src":"1820:21:50"},"nodeType":"YulIf","src":"1817:144:50"},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1977:9:50"},{"name":"value0","nodeType":"YulIdentifier","src":"1988:6:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1970:6:50"},"nodeType":"YulFunctionCall","src":"1970:25:50"},"nodeType":"YulExpressionStatement","src":"1970:25:50"}]},"name":"abi_encode_tuple_t_enum$_PluginType_$3994__to_t_uint8__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1741:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1752:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1763:4:50","type":""}],"src":"1658:343:50"},{"body":{"nodeType":"YulBlock","src":"2038:95:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2055:1:50","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2062:3:50","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"2067:10:50","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2058:3:50"},"nodeType":"YulFunctionCall","src":"2058:20:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2048:6:50"},"nodeType":"YulFunctionCall","src":"2048:31:50"},"nodeType":"YulExpressionStatement","src":"2048:31:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2095:1:50","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"2098:4:50","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2088:6:50"},"nodeType":"YulFunctionCall","src":"2088:15:50"},"nodeType":"YulExpressionStatement","src":"2088:15:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2119:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2122:4:50","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2112:6:50"},"nodeType":"YulFunctionCall","src":"2112:15:50"},"nodeType":"YulExpressionStatement","src":"2112:15:50"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"2006:127:50"},{"body":{"nodeType":"YulBlock","src":"2234:960:50","statements":[{"body":{"nodeType":"YulBlock","src":"2280:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2289:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2292:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2282:6:50"},"nodeType":"YulFunctionCall","src":"2282:12:50"},"nodeType":"YulExpressionStatement","src":"2282:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2255:7:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"2264:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2251:3:50"},"nodeType":"YulFunctionCall","src":"2251:23:50"},{"kind":"number","nodeType":"YulLiteral","src":"2276:2:50","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2247:3:50"},"nodeType":"YulFunctionCall","src":"2247:32:50"},"nodeType":"YulIf","src":"2244:52:50"},{"nodeType":"YulVariableDeclaration","src":"2305:36:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2331:9:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2318:12:50"},"nodeType":"YulFunctionCall","src":"2318:23:50"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"2309:5:50","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2375:5:50"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"2350:24:50"},"nodeType":"YulFunctionCall","src":"2350:31:50"},"nodeType":"YulExpressionStatement","src":"2350:31:50"},{"nodeType":"YulAssignment","src":"2390:15:50","value":{"name":"value","nodeType":"YulIdentifier","src":"2400:5:50"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2390:6:50"}]},{"nodeType":"YulVariableDeclaration","src":"2414:46:50","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2445:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"2456:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2441:3:50"},"nodeType":"YulFunctionCall","src":"2441:18:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2428:12:50"},"nodeType":"YulFunctionCall","src":"2428:32:50"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"2418:6:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2469:28:50","value":{"kind":"number","nodeType":"YulLiteral","src":"2479:18:50","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"2473:2:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"2524:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2533:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2536:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2526:6:50"},"nodeType":"YulFunctionCall","src":"2526:12:50"},"nodeType":"YulExpressionStatement","src":"2526:12:50"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"2512:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"2520:2:50"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2509:2:50"},"nodeType":"YulFunctionCall","src":"2509:14:50"},"nodeType":"YulIf","src":"2506:34:50"},{"nodeType":"YulVariableDeclaration","src":"2549:32:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2563:9:50"},{"name":"offset","nodeType":"YulIdentifier","src":"2574:6:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2559:3:50"},"nodeType":"YulFunctionCall","src":"2559:22:50"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"2553:2:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"2629:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2638:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2641:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2631:6:50"},"nodeType":"YulFunctionCall","src":"2631:12:50"},"nodeType":"YulExpressionStatement","src":"2631:12:50"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"2608:2:50"},{"kind":"number","nodeType":"YulLiteral","src":"2612:4:50","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2604:3:50"},"nodeType":"YulFunctionCall","src":"2604:13:50"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2619:7:50"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2600:3:50"},"nodeType":"YulFunctionCall","src":"2600:27:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2593:6:50"},"nodeType":"YulFunctionCall","src":"2593:35:50"},"nodeType":"YulIf","src":"2590:55:50"},{"nodeType":"YulVariableDeclaration","src":"2654:26:50","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"2677:2:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2664:12:50"},"nodeType":"YulFunctionCall","src":"2664:16:50"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"2658:2:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"2703:22:50","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"2705:16:50"},"nodeType":"YulFunctionCall","src":"2705:18:50"},"nodeType":"YulExpressionStatement","src":"2705:18:50"}]},"condition":{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"2695:2:50"},{"name":"_1","nodeType":"YulIdentifier","src":"2699:2:50"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2692:2:50"},"nodeType":"YulFunctionCall","src":"2692:10:50"},"nodeType":"YulIf","src":"2689:36:50"},{"nodeType":"YulVariableDeclaration","src":"2734:17:50","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2748:2:50","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"2744:3:50"},"nodeType":"YulFunctionCall","src":"2744:7:50"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"2738:2:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2760:23:50","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2780:2:50","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2774:5:50"},"nodeType":"YulFunctionCall","src":"2774:9:50"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"2764:6:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2792:71:50","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"2814:6:50"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"2838:2:50"},{"kind":"number","nodeType":"YulLiteral","src":"2842:4:50","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2834:3:50"},"nodeType":"YulFunctionCall","src":"2834:13:50"},{"name":"_4","nodeType":"YulIdentifier","src":"2849:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2830:3:50"},"nodeType":"YulFunctionCall","src":"2830:22:50"},{"kind":"number","nodeType":"YulLiteral","src":"2854:2:50","type":"","value":"63"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2826:3:50"},"nodeType":"YulFunctionCall","src":"2826:31:50"},{"name":"_4","nodeType":"YulIdentifier","src":"2859:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2822:3:50"},"nodeType":"YulFunctionCall","src":"2822:40:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2810:3:50"},"nodeType":"YulFunctionCall","src":"2810:53:50"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"2796:10:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"2922:22:50","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"2924:16:50"},"nodeType":"YulFunctionCall","src":"2924:18:50"},"nodeType":"YulExpressionStatement","src":"2924:18:50"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"2881:10:50"},{"name":"_1","nodeType":"YulIdentifier","src":"2893:2:50"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2878:2:50"},"nodeType":"YulFunctionCall","src":"2878:18:50"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"2901:10:50"},{"name":"memPtr","nodeType":"YulIdentifier","src":"2913:6:50"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2898:2:50"},"nodeType":"YulFunctionCall","src":"2898:22:50"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"2875:2:50"},"nodeType":"YulFunctionCall","src":"2875:46:50"},"nodeType":"YulIf","src":"2872:72:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2960:2:50","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"2964:10:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2953:6:50"},"nodeType":"YulFunctionCall","src":"2953:22:50"},"nodeType":"YulExpressionStatement","src":"2953:22:50"},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"2991:6:50"},{"name":"_3","nodeType":"YulIdentifier","src":"2999:2:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2984:6:50"},"nodeType":"YulFunctionCall","src":"2984:18:50"},"nodeType":"YulExpressionStatement","src":"2984:18:50"},{"body":{"nodeType":"YulBlock","src":"3048:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3057:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3060:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3050:6:50"},"nodeType":"YulFunctionCall","src":"3050:12:50"},"nodeType":"YulExpressionStatement","src":"3050:12:50"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"3025:2:50"},{"name":"_3","nodeType":"YulIdentifier","src":"3029:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3021:3:50"},"nodeType":"YulFunctionCall","src":"3021:11:50"},{"kind":"number","nodeType":"YulLiteral","src":"3034:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3017:3:50"},"nodeType":"YulFunctionCall","src":"3017:20:50"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3039:7:50"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3014:2:50"},"nodeType":"YulFunctionCall","src":"3014:33:50"},"nodeType":"YulIf","src":"3011:53:50"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"3090:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"3098:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3086:3:50"},"nodeType":"YulFunctionCall","src":"3086:15:50"},{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"3107:2:50"},{"kind":"number","nodeType":"YulLiteral","src":"3111:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3103:3:50"},"nodeType":"YulFunctionCall","src":"3103:11:50"},{"name":"_3","nodeType":"YulIdentifier","src":"3116:2:50"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"3073:12:50"},"nodeType":"YulFunctionCall","src":"3073:46:50"},"nodeType":"YulExpressionStatement","src":"3073:46:50"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"3143:6:50"},{"name":"_3","nodeType":"YulIdentifier","src":"3151:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3139:3:50"},"nodeType":"YulFunctionCall","src":"3139:15:50"},{"kind":"number","nodeType":"YulLiteral","src":"3156:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3135:3:50"},"nodeType":"YulFunctionCall","src":"3135:24:50"},{"kind":"number","nodeType":"YulLiteral","src":"3161:1:50","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3128:6:50"},"nodeType":"YulFunctionCall","src":"3128:35:50"},"nodeType":"YulExpressionStatement","src":"3128:35:50"},{"nodeType":"YulAssignment","src":"3172:16:50","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"3182:6:50"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"3172:6:50"}]}]},"name":"abi_decode_tuple_t_addresst_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2192:9:50","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2203:7:50","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2215:6:50","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2223:6:50","type":""}],"src":"2138:1056:50"},{"body":{"nodeType":"YulBlock","src":"3300:76:50","statements":[{"nodeType":"YulAssignment","src":"3310:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3322:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"3333:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3318:3:50"},"nodeType":"YulFunctionCall","src":"3318:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3310:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3352:9:50"},{"name":"value0","nodeType":"YulIdentifier","src":"3363:6:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3345:6:50"},"nodeType":"YulFunctionCall","src":"3345:25:50"},"nodeType":"YulExpressionStatement","src":"3345:25:50"}]},"name":"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3269:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3280:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3291:4:50","type":""}],"src":"3199:177:50"},{"body":{"nodeType":"YulBlock","src":"3482:125:50","statements":[{"nodeType":"YulAssignment","src":"3492:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3504:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"3515:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3500:3:50"},"nodeType":"YulFunctionCall","src":"3500:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3492:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3534:9:50"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3549:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"3557:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3545:3:50"},"nodeType":"YulFunctionCall","src":"3545:55:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3527:6:50"},"nodeType":"YulFunctionCall","src":"3527:74:50"},"nodeType":"YulExpressionStatement","src":"3527:74:50"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3451:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3462:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3473:4:50","type":""}],"src":"3381:226:50"},{"body":{"nodeType":"YulBlock","src":"3713:76:50","statements":[{"nodeType":"YulAssignment","src":"3723:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3735:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"3746:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3731:3:50"},"nodeType":"YulFunctionCall","src":"3731:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3723:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3765:9:50"},{"name":"value0","nodeType":"YulIdentifier","src":"3776:6:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3758:6:50"},"nodeType":"YulFunctionCall","src":"3758:25:50"},"nodeType":"YulExpressionStatement","src":"3758:25:50"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3682:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3693:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3704:4:50","type":""}],"src":"3612:177:50"},{"body":{"nodeType":"YulBlock","src":"3877:177:50","statements":[{"body":{"nodeType":"YulBlock","src":"3923:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3932:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3935:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3925:6:50"},"nodeType":"YulFunctionCall","src":"3925:12:50"},"nodeType":"YulExpressionStatement","src":"3925:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3898:7:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"3907:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3894:3:50"},"nodeType":"YulFunctionCall","src":"3894:23:50"},{"kind":"number","nodeType":"YulLiteral","src":"3919:2:50","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3890:3:50"},"nodeType":"YulFunctionCall","src":"3890:32:50"},"nodeType":"YulIf","src":"3887:52:50"},{"nodeType":"YulVariableDeclaration","src":"3948:36:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3974:9:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3961:12:50"},"nodeType":"YulFunctionCall","src":"3961:23:50"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"3952:5:50","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4018:5:50"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"3993:24:50"},"nodeType":"YulFunctionCall","src":"3993:31:50"},"nodeType":"YulExpressionStatement","src":"3993:31:50"},{"nodeType":"YulAssignment","src":"4033:15:50","value":{"name":"value","nodeType":"YulIdentifier","src":"4043:5:50"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"4033:6:50"}]}]},"name":"abi_decode_tuple_t_contract$_IDAO_$2538","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3843:9:50","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3854:7:50","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3866:6:50","type":""}],"src":"3794:260:50"},{"body":{"nodeType":"YulBlock","src":"4233:234:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4250:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"4261:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4243:6:50"},"nodeType":"YulFunctionCall","src":"4243:21:50"},"nodeType":"YulExpressionStatement","src":"4243:21:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4284:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"4295:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4280:3:50"},"nodeType":"YulFunctionCall","src":"4280:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"4300:2:50","type":"","value":"44"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4273:6:50"},"nodeType":"YulFunctionCall","src":"4273:30:50"},"nodeType":"YulExpressionStatement","src":"4273:30:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4323:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"4334:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4319:3:50"},"nodeType":"YulFunctionCall","src":"4319:18:50"},{"hexValue":"46756e6374696f6e206d7573742062652063616c6c6564207468726f75676820","kind":"string","nodeType":"YulLiteral","src":"4339:34:50","type":"","value":"Function must be called through "}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4312:6:50"},"nodeType":"YulFunctionCall","src":"4312:62:50"},"nodeType":"YulExpressionStatement","src":"4312:62:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4394:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"4405:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4390:3:50"},"nodeType":"YulFunctionCall","src":"4390:18:50"},{"hexValue":"64656c656761746563616c6c","kind":"string","nodeType":"YulLiteral","src":"4410:14:50","type":"","value":"delegatecall"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4383:6:50"},"nodeType":"YulFunctionCall","src":"4383:42:50"},"nodeType":"YulExpressionStatement","src":"4383:42:50"},{"nodeType":"YulAssignment","src":"4434:27:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4446:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"4457:3:50","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4442:3:50"},"nodeType":"YulFunctionCall","src":"4442:19:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4434:4:50"}]}]},"name":"abi_encode_tuple_t_stringliteral_36e108fa7a809b52ab1951dd91c117a7bc9ac5250bdf1aa162d4e104f7edf9eb__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4210:9:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4224:4:50","type":""}],"src":"4059:408:50"},{"body":{"nodeType":"YulBlock","src":"4646:234:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4663:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"4674:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4656:6:50"},"nodeType":"YulFunctionCall","src":"4656:21:50"},"nodeType":"YulExpressionStatement","src":"4656:21:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4697:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"4708:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4693:3:50"},"nodeType":"YulFunctionCall","src":"4693:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"4713:2:50","type":"","value":"44"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4686:6:50"},"nodeType":"YulFunctionCall","src":"4686:30:50"},"nodeType":"YulExpressionStatement","src":"4686:30:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4736:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"4747:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4732:3:50"},"nodeType":"YulFunctionCall","src":"4732:18:50"},{"hexValue":"46756e6374696f6e206d7573742062652063616c6c6564207468726f75676820","kind":"string","nodeType":"YulLiteral","src":"4752:34:50","type":"","value":"Function must be called through "}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4725:6:50"},"nodeType":"YulFunctionCall","src":"4725:62:50"},"nodeType":"YulExpressionStatement","src":"4725:62:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4807:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"4818:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4803:3:50"},"nodeType":"YulFunctionCall","src":"4803:18:50"},{"hexValue":"6163746976652070726f7879","kind":"string","nodeType":"YulLiteral","src":"4823:14:50","type":"","value":"active proxy"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4796:6:50"},"nodeType":"YulFunctionCall","src":"4796:42:50"},"nodeType":"YulExpressionStatement","src":"4796:42:50"},{"nodeType":"YulAssignment","src":"4847:27:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4859:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"4870:3:50","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4855:3:50"},"nodeType":"YulFunctionCall","src":"4855:19:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4847:4:50"}]}]},"name":"abi_encode_tuple_t_stringliteral_52f1ead4d9653e13afbd2e90ef2587c30187cd50b2e97d784e3f7a7541247434__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4623:9:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4637:4:50","type":""}],"src":"4472:408:50"},{"body":{"nodeType":"YulBlock","src":"5059:246:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5076:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"5087:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5069:6:50"},"nodeType":"YulFunctionCall","src":"5069:21:50"},"nodeType":"YulExpressionStatement","src":"5069:21:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5110:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"5121:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5106:3:50"},"nodeType":"YulFunctionCall","src":"5106:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"5126:2:50","type":"","value":"56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5099:6:50"},"nodeType":"YulFunctionCall","src":"5099:30:50"},"nodeType":"YulExpressionStatement","src":"5099:30:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5149:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"5160:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5145:3:50"},"nodeType":"YulFunctionCall","src":"5145:18:50"},{"hexValue":"555550535570677261646561626c653a206d757374206e6f742062652063616c","kind":"string","nodeType":"YulLiteral","src":"5165:34:50","type":"","value":"UUPSUpgradeable: must not be cal"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5138:6:50"},"nodeType":"YulFunctionCall","src":"5138:62:50"},"nodeType":"YulExpressionStatement","src":"5138:62:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5220:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"5231:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5216:3:50"},"nodeType":"YulFunctionCall","src":"5216:18:50"},{"hexValue":"6c6564207468726f7567682064656c656761746563616c6c","kind":"string","nodeType":"YulLiteral","src":"5236:26:50","type":"","value":"led through delegatecall"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5209:6:50"},"nodeType":"YulFunctionCall","src":"5209:54:50"},"nodeType":"YulExpressionStatement","src":"5209:54:50"},{"nodeType":"YulAssignment","src":"5272:27:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5284:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"5295:3:50","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5280:3:50"},"nodeType":"YulFunctionCall","src":"5280:19:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5272:4:50"}]}]},"name":"abi_encode_tuple_t_stringliteral_67f0151b4ad1dcfa0e3302a0cd6019f51582ef1807b37dceb00bd852a514f7f4__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5036:9:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5050:4:50","type":""}],"src":"4885:420:50"},{"body":{"nodeType":"YulBlock","src":"5484:236:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5501:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"5512:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5494:6:50"},"nodeType":"YulFunctionCall","src":"5494:21:50"},"nodeType":"YulExpressionStatement","src":"5494:21:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5535:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"5546:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5531:3:50"},"nodeType":"YulFunctionCall","src":"5531:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"5551:2:50","type":"","value":"46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5524:6:50"},"nodeType":"YulFunctionCall","src":"5524:30:50"},"nodeType":"YulExpressionStatement","src":"5524:30:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5574:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"5585:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5570:3:50"},"nodeType":"YulFunctionCall","src":"5570:18:50"},{"hexValue":"496e697469616c697a61626c653a20636f6e747261637420697320616c726561","kind":"string","nodeType":"YulLiteral","src":"5590:34:50","type":"","value":"Initializable: contract is alrea"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5563:6:50"},"nodeType":"YulFunctionCall","src":"5563:62:50"},"nodeType":"YulExpressionStatement","src":"5563:62:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5645:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"5656:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5641:3:50"},"nodeType":"YulFunctionCall","src":"5641:18:50"},{"hexValue":"647920696e697469616c697a6564","kind":"string","nodeType":"YulLiteral","src":"5661:16:50","type":"","value":"dy initialized"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5634:6:50"},"nodeType":"YulFunctionCall","src":"5634:44:50"},"nodeType":"YulExpressionStatement","src":"5634:44:50"},{"nodeType":"YulAssignment","src":"5687:27:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5699:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"5710:3:50","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5695:3:50"},"nodeType":"YulFunctionCall","src":"5695:19:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5687:4:50"}]}]},"name":"abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5461:9:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5475:4:50","type":""}],"src":"5310:410:50"},{"body":{"nodeType":"YulBlock","src":"5832:87:50","statements":[{"nodeType":"YulAssignment","src":"5842:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5854:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"5865:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5850:3:50"},"nodeType":"YulFunctionCall","src":"5850:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5842:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5884:9:50"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5899:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"5907:4:50","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5895:3:50"},"nodeType":"YulFunctionCall","src":"5895:17:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5877:6:50"},"nodeType":"YulFunctionCall","src":"5877:36:50"},"nodeType":"YulExpressionStatement","src":"5877:36:50"}]},"name":"abi_encode_tuple_t_rational_1_by_1__to_t_uint8__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5801:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"5812:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5823:4:50","type":""}],"src":"5725:194:50"},{"body":{"nodeType":"YulBlock","src":"6005:103:50","statements":[{"body":{"nodeType":"YulBlock","src":"6051:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6060:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6063:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6053:6:50"},"nodeType":"YulFunctionCall","src":"6053:12:50"},"nodeType":"YulExpressionStatement","src":"6053:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"6026:7:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"6035:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6022:3:50"},"nodeType":"YulFunctionCall","src":"6022:23:50"},{"kind":"number","nodeType":"YulLiteral","src":"6047:2:50","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6018:3:50"},"nodeType":"YulFunctionCall","src":"6018:32:50"},"nodeType":"YulIf","src":"6015:52:50"},{"nodeType":"YulAssignment","src":"6076:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6092:9:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6086:5:50"},"nodeType":"YulFunctionCall","src":"6086:16:50"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"6076:6:50"}]}]},"name":"abi_decode_tuple_t_bytes32_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5971:9:50","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"5982:7:50","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"5994:6:50","type":""}],"src":"5924:184:50"},{"body":{"nodeType":"YulBlock","src":"6287:236:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6304:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"6315:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6297:6:50"},"nodeType":"YulFunctionCall","src":"6297:21:50"},"nodeType":"YulExpressionStatement","src":"6297:21:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6338:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"6349:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6334:3:50"},"nodeType":"YulFunctionCall","src":"6334:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"6354:2:50","type":"","value":"46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6327:6:50"},"nodeType":"YulFunctionCall","src":"6327:30:50"},"nodeType":"YulExpressionStatement","src":"6327:30:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6377:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"6388:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6373:3:50"},"nodeType":"YulFunctionCall","src":"6373:18:50"},{"hexValue":"45524331393637557067726164653a206e657720696d706c656d656e74617469","kind":"string","nodeType":"YulLiteral","src":"6393:34:50","type":"","value":"ERC1967Upgrade: new implementati"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6366:6:50"},"nodeType":"YulFunctionCall","src":"6366:62:50"},"nodeType":"YulExpressionStatement","src":"6366:62:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6448:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"6459:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6444:3:50"},"nodeType":"YulFunctionCall","src":"6444:18:50"},{"hexValue":"6f6e206973206e6f742055555053","kind":"string","nodeType":"YulLiteral","src":"6464:16:50","type":"","value":"on is not UUPS"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6437:6:50"},"nodeType":"YulFunctionCall","src":"6437:44:50"},"nodeType":"YulExpressionStatement","src":"6437:44:50"},{"nodeType":"YulAssignment","src":"6490:27:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6502:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"6513:3:50","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6498:3:50"},"nodeType":"YulFunctionCall","src":"6498:19:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6490:4:50"}]}]},"name":"abi_encode_tuple_t_stringliteral_8e8e2fbcb586f700b5b14e2c4a650c8d83b9773c31c5fe8962070ea544e11f24__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6264:9:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6278:4:50","type":""}],"src":"6113:410:50"},{"body":{"nodeType":"YulBlock","src":"6702:231:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6719:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"6730:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6712:6:50"},"nodeType":"YulFunctionCall","src":"6712:21:50"},"nodeType":"YulExpressionStatement","src":"6712:21:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6753:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"6764:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6749:3:50"},"nodeType":"YulFunctionCall","src":"6749:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"6769:2:50","type":"","value":"41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6742:6:50"},"nodeType":"YulFunctionCall","src":"6742:30:50"},"nodeType":"YulExpressionStatement","src":"6742:30:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6792:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"6803:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6788:3:50"},"nodeType":"YulFunctionCall","src":"6788:18:50"},{"hexValue":"45524331393637557067726164653a20756e737570706f727465642070726f78","kind":"string","nodeType":"YulLiteral","src":"6808:34:50","type":"","value":"ERC1967Upgrade: unsupported prox"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6781:6:50"},"nodeType":"YulFunctionCall","src":"6781:62:50"},"nodeType":"YulExpressionStatement","src":"6781:62:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6863:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"6874:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6859:3:50"},"nodeType":"YulFunctionCall","src":"6859:18:50"},{"hexValue":"6961626c6555554944","kind":"string","nodeType":"YulLiteral","src":"6879:11:50","type":"","value":"iableUUID"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6852:6:50"},"nodeType":"YulFunctionCall","src":"6852:39:50"},"nodeType":"YulExpressionStatement","src":"6852:39:50"},{"nodeType":"YulAssignment","src":"6900:27:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6912:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"6923:3:50","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6908:3:50"},"nodeType":"YulFunctionCall","src":"6908:19:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6900:4:50"}]}]},"name":"abi_encode_tuple_t_stringliteral_76b6b6debfc5febf101145a79ecf0b0d2e89e397dfdab2bca99888370411152c__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6679:9:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6693:4:50","type":""}],"src":"6528:405:50"},{"body":{"nodeType":"YulBlock","src":"7112:233:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7129:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"7140:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7122:6:50"},"nodeType":"YulFunctionCall","src":"7122:21:50"},"nodeType":"YulExpressionStatement","src":"7122:21:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7163:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"7174:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7159:3:50"},"nodeType":"YulFunctionCall","src":"7159:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"7179:2:50","type":"","value":"43"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7152:6:50"},"nodeType":"YulFunctionCall","src":"7152:30:50"},"nodeType":"YulExpressionStatement","src":"7152:30:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7202:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"7213:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7198:3:50"},"nodeType":"YulFunctionCall","src":"7198:18:50"},{"hexValue":"496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069","kind":"string","nodeType":"YulLiteral","src":"7218:34:50","type":"","value":"Initializable: contract is not i"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7191:6:50"},"nodeType":"YulFunctionCall","src":"7191:62:50"},"nodeType":"YulExpressionStatement","src":"7191:62:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7273:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"7284:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7269:3:50"},"nodeType":"YulFunctionCall","src":"7269:18:50"},{"hexValue":"6e697469616c697a696e67","kind":"string","nodeType":"YulLiteral","src":"7289:13:50","type":"","value":"nitializing"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7262:6:50"},"nodeType":"YulFunctionCall","src":"7262:41:50"},"nodeType":"YulExpressionStatement","src":"7262:41:50"},{"nodeType":"YulAssignment","src":"7312:27:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7324:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"7335:3:50","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7320:3:50"},"nodeType":"YulFunctionCall","src":"7320:19:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7312:4:50"}]}]},"name":"abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7089:9:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7103:4:50","type":""}],"src":"6938:407:50"},{"body":{"nodeType":"YulBlock","src":"7563:472:50","statements":[{"nodeType":"YulVariableDeclaration","src":"7573:52:50","value":{"kind":"number","nodeType":"YulLiteral","src":"7583:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"7577:2:50","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7641:9:50"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7656:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"7664:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7652:3:50"},"nodeType":"YulFunctionCall","src":"7652:15:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7634:6:50"},"nodeType":"YulFunctionCall","src":"7634:34:50"},"nodeType":"YulExpressionStatement","src":"7634:34:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7688:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"7699:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7684:3:50"},"nodeType":"YulFunctionCall","src":"7684:18:50"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"7708:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"7716:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7704:3:50"},"nodeType":"YulFunctionCall","src":"7704:15:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7677:6:50"},"nodeType":"YulFunctionCall","src":"7677:43:50"},"nodeType":"YulExpressionStatement","src":"7677:43:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7740:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"7751:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7736:3:50"},"nodeType":"YulFunctionCall","src":"7736:18:50"},{"name":"value2","nodeType":"YulIdentifier","src":"7756:6:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7729:6:50"},"nodeType":"YulFunctionCall","src":"7729:34:50"},"nodeType":"YulExpressionStatement","src":"7729:34:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7783:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"7794:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7779:3:50"},"nodeType":"YulFunctionCall","src":"7779:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"7799:3:50","type":"","value":"128"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7772:6:50"},"nodeType":"YulFunctionCall","src":"7772:31:50"},"nodeType":"YulExpressionStatement","src":"7772:31:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7823:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"7834:3:50","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7819:3:50"},"nodeType":"YulFunctionCall","src":"7819:19:50"},{"name":"value4","nodeType":"YulIdentifier","src":"7840:6:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7812:6:50"},"nodeType":"YulFunctionCall","src":"7812:35:50"},"nodeType":"YulExpressionStatement","src":"7812:35:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7873:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"7884:3:50","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7869:3:50"},"nodeType":"YulFunctionCall","src":"7869:19:50"},{"name":"value3","nodeType":"YulIdentifier","src":"7890:6:50"},{"name":"value4","nodeType":"YulIdentifier","src":"7898:6:50"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"7856:12:50"},"nodeType":"YulFunctionCall","src":"7856:49:50"},"nodeType":"YulExpressionStatement","src":"7856:49:50"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7929:9:50"},{"name":"value4","nodeType":"YulIdentifier","src":"7940:6:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7925:3:50"},"nodeType":"YulFunctionCall","src":"7925:22:50"},{"kind":"number","nodeType":"YulLiteral","src":"7949:3:50","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7921:3:50"},"nodeType":"YulFunctionCall","src":"7921:32:50"},{"kind":"number","nodeType":"YulLiteral","src":"7955:1:50","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7914:6:50"},"nodeType":"YulFunctionCall","src":"7914:43:50"},"nodeType":"YulExpressionStatement","src":"7914:43:50"},{"nodeType":"YulAssignment","src":"7966:63:50","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7982:9:50"},{"arguments":[{"arguments":[{"name":"value4","nodeType":"YulIdentifier","src":"8001:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"8009:2:50","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7997:3:50"},"nodeType":"YulFunctionCall","src":"7997:15:50"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8018:2:50","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"8014:3:50"},"nodeType":"YulFunctionCall","src":"8014:7:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7993:3:50"},"nodeType":"YulFunctionCall","src":"7993:29:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7978:3:50"},"nodeType":"YulFunctionCall","src":"7978:45:50"},{"kind":"number","nodeType":"YulLiteral","src":"8025:3:50","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7974:3:50"},"nodeType":"YulFunctionCall","src":"7974:55:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7966:4:50"}]}]},"name":"abi_encode_tuple_t_address_t_address_t_bytes32_t_bytes_calldata_ptr__to_t_address_t_address_t_bytes32_t_bytes_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7500:9:50","type":""},{"name":"value4","nodeType":"YulTypedName","src":"7511:6:50","type":""},{"name":"value3","nodeType":"YulTypedName","src":"7519:6:50","type":""},{"name":"value2","nodeType":"YulTypedName","src":"7527:6:50","type":""},{"name":"value1","nodeType":"YulTypedName","src":"7535:6:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"7543:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7554:4:50","type":""}],"src":"7350:685:50"},{"body":{"nodeType":"YulBlock","src":"8118:199:50","statements":[{"body":{"nodeType":"YulBlock","src":"8164:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8173:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8176:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8166:6:50"},"nodeType":"YulFunctionCall","src":"8166:12:50"},"nodeType":"YulExpressionStatement","src":"8166:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"8139:7:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"8148:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"8135:3:50"},"nodeType":"YulFunctionCall","src":"8135:23:50"},{"kind":"number","nodeType":"YulLiteral","src":"8160:2:50","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"8131:3:50"},"nodeType":"YulFunctionCall","src":"8131:32:50"},"nodeType":"YulIf","src":"8128:52:50"},{"nodeType":"YulVariableDeclaration","src":"8189:29:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8208:9:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"8202:5:50"},"nodeType":"YulFunctionCall","src":"8202:16:50"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"8193:5:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"8271:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8280:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8283:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8273:6:50"},"nodeType":"YulFunctionCall","src":"8273:12:50"},"nodeType":"YulExpressionStatement","src":"8273:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8240:5:50"},{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8261:5:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"8254:6:50"},"nodeType":"YulFunctionCall","src":"8254:13:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"8247:6:50"},"nodeType":"YulFunctionCall","src":"8247:21:50"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"8237:2:50"},"nodeType":"YulFunctionCall","src":"8237:32:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"8230:6:50"},"nodeType":"YulFunctionCall","src":"8230:40:50"},"nodeType":"YulIf","src":"8227:60:50"},{"nodeType":"YulAssignment","src":"8296:15:50","value":{"name":"value","nodeType":"YulIdentifier","src":"8306:5:50"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"8296:6:50"}]}]},"name":"abi_decode_tuple_t_bool_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8084:9:50","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"8095:7:50","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"8107:6:50","type":""}],"src":"8040:277:50"},{"body":{"nodeType":"YulBlock","src":"8507:294:50","statements":[{"nodeType":"YulAssignment","src":"8517:27:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8529:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"8540:3:50","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8525:3:50"},"nodeType":"YulFunctionCall","src":"8525:19:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"8517:4:50"}]},{"nodeType":"YulVariableDeclaration","src":"8553:52:50","value":{"kind":"number","nodeType":"YulLiteral","src":"8563:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"8557:2:50","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8621:9:50"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"8636:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"8644:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8632:3:50"},"nodeType":"YulFunctionCall","src":"8632:15:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8614:6:50"},"nodeType":"YulFunctionCall","src":"8614:34:50"},"nodeType":"YulExpressionStatement","src":"8614:34:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8668:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"8679:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8664:3:50"},"nodeType":"YulFunctionCall","src":"8664:18:50"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"8688:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"8696:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8684:3:50"},"nodeType":"YulFunctionCall","src":"8684:15:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8657:6:50"},"nodeType":"YulFunctionCall","src":"8657:43:50"},"nodeType":"YulExpressionStatement","src":"8657:43:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8720:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"8731:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8716:3:50"},"nodeType":"YulFunctionCall","src":"8716:18:50"},{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"8740:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"8748:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8736:3:50"},"nodeType":"YulFunctionCall","src":"8736:15:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8709:6:50"},"nodeType":"YulFunctionCall","src":"8709:43:50"},"nodeType":"YulExpressionStatement","src":"8709:43:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8772:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"8783:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8768:3:50"},"nodeType":"YulFunctionCall","src":"8768:18:50"},{"name":"value3","nodeType":"YulIdentifier","src":"8788:6:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8761:6:50"},"nodeType":"YulFunctionCall","src":"8761:34:50"},"nodeType":"YulExpressionStatement","src":"8761:34:50"}]},"name":"abi_encode_tuple_t_address_t_address_t_address_t_bytes32__to_t_address_t_address_t_address_t_bytes32__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8452:9:50","type":""},{"name":"value3","nodeType":"YulTypedName","src":"8463:6:50","type":""},{"name":"value2","nodeType":"YulTypedName","src":"8471:6:50","type":""},{"name":"value1","nodeType":"YulTypedName","src":"8479:6:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"8487:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"8498:4:50","type":""}],"src":"8322:479:50"},{"body":{"nodeType":"YulBlock","src":"8980:235:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8997:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"9008:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8990:6:50"},"nodeType":"YulFunctionCall","src":"8990:21:50"},"nodeType":"YulExpressionStatement","src":"8990:21:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9031:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"9042:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9027:3:50"},"nodeType":"YulFunctionCall","src":"9027:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"9047:2:50","type":"","value":"45"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9020:6:50"},"nodeType":"YulFunctionCall","src":"9020:30:50"},"nodeType":"YulExpressionStatement","src":"9020:30:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9070:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"9081:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9066:3:50"},"nodeType":"YulFunctionCall","src":"9066:18:50"},{"hexValue":"455243313936373a206e657720696d706c656d656e746174696f6e206973206e","kind":"string","nodeType":"YulLiteral","src":"9086:34:50","type":"","value":"ERC1967: new implementation is n"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9059:6:50"},"nodeType":"YulFunctionCall","src":"9059:62:50"},"nodeType":"YulExpressionStatement","src":"9059:62:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9141:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"9152:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9137:3:50"},"nodeType":"YulFunctionCall","src":"9137:18:50"},{"hexValue":"6f74206120636f6e7472616374","kind":"string","nodeType":"YulLiteral","src":"9157:15:50","type":"","value":"ot a contract"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9130:6:50"},"nodeType":"YulFunctionCall","src":"9130:43:50"},"nodeType":"YulExpressionStatement","src":"9130:43:50"},{"nodeType":"YulAssignment","src":"9182:27:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9194:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"9205:3:50","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9190:3:50"},"nodeType":"YulFunctionCall","src":"9190:19:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"9182:4:50"}]}]},"name":"abi_encode_tuple_t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8957:9:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"8971:4:50","type":""}],"src":"8806:409:50"},{"body":{"nodeType":"YulBlock","src":"9286:184:50","statements":[{"nodeType":"YulVariableDeclaration","src":"9296:10:50","value":{"kind":"number","nodeType":"YulLiteral","src":"9305:1:50","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"9300:1:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"9365:63:50","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"9390:3:50"},{"name":"i","nodeType":"YulIdentifier","src":"9395:1:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9386:3:50"},"nodeType":"YulFunctionCall","src":"9386:11:50"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"9409:3:50"},{"name":"i","nodeType":"YulIdentifier","src":"9414:1:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9405:3:50"},"nodeType":"YulFunctionCall","src":"9405:11:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"9399:5:50"},"nodeType":"YulFunctionCall","src":"9399:18:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9379:6:50"},"nodeType":"YulFunctionCall","src":"9379:39:50"},"nodeType":"YulExpressionStatement","src":"9379:39:50"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"9326:1:50"},{"name":"length","nodeType":"YulIdentifier","src":"9329:6:50"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"9323:2:50"},"nodeType":"YulFunctionCall","src":"9323:13:50"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"9337:19:50","statements":[{"nodeType":"YulAssignment","src":"9339:15:50","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"9348:1:50"},{"kind":"number","nodeType":"YulLiteral","src":"9351:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9344:3:50"},"nodeType":"YulFunctionCall","src":"9344:10:50"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"9339:1:50"}]}]},"pre":{"nodeType":"YulBlock","src":"9319:3:50","statements":[]},"src":"9315:113:50"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"9448:3:50"},{"name":"length","nodeType":"YulIdentifier","src":"9453:6:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9444:3:50"},"nodeType":"YulFunctionCall","src":"9444:16:50"},{"kind":"number","nodeType":"YulLiteral","src":"9462:1:50","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9437:6:50"},"nodeType":"YulFunctionCall","src":"9437:27:50"},"nodeType":"YulExpressionStatement","src":"9437:27:50"}]},"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"9264:3:50","type":""},{"name":"dst","nodeType":"YulTypedName","src":"9269:3:50","type":""},{"name":"length","nodeType":"YulTypedName","src":"9274:6:50","type":""}],"src":"9220:250:50"},{"body":{"nodeType":"YulBlock","src":"9612:150:50","statements":[{"nodeType":"YulVariableDeclaration","src":"9622:27:50","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"9642:6:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"9636:5:50"},"nodeType":"YulFunctionCall","src":"9636:13:50"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"9626:6:50","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"9697:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"9705:4:50","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9693:3:50"},"nodeType":"YulFunctionCall","src":"9693:17:50"},{"name":"pos","nodeType":"YulIdentifier","src":"9712:3:50"},{"name":"length","nodeType":"YulIdentifier","src":"9717:6:50"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"9658:34:50"},"nodeType":"YulFunctionCall","src":"9658:66:50"},"nodeType":"YulExpressionStatement","src":"9658:66:50"},{"nodeType":"YulAssignment","src":"9733:23:50","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"9744:3:50"},{"name":"length","nodeType":"YulIdentifier","src":"9749:6:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9740:3:50"},"nodeType":"YulFunctionCall","src":"9740:16:50"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"9733:3:50"}]}]},"name":"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"9588:3:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"9593:6:50","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"9604:3:50","type":""}],"src":"9475:287:50"},{"body":{"nodeType":"YulBlock","src":"9941:179:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9958:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"9969:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9951:6:50"},"nodeType":"YulFunctionCall","src":"9951:21:50"},"nodeType":"YulExpressionStatement","src":"9951:21:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9992:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"10003:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9988:3:50"},"nodeType":"YulFunctionCall","src":"9988:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"10008:2:50","type":"","value":"29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9981:6:50"},"nodeType":"YulFunctionCall","src":"9981:30:50"},"nodeType":"YulExpressionStatement","src":"9981:30:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10031:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"10042:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10027:3:50"},"nodeType":"YulFunctionCall","src":"10027:18:50"},{"hexValue":"416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374","kind":"string","nodeType":"YulLiteral","src":"10047:31:50","type":"","value":"Address: call to non-contract"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10020:6:50"},"nodeType":"YulFunctionCall","src":"10020:59:50"},"nodeType":"YulExpressionStatement","src":"10020:59:50"},{"nodeType":"YulAssignment","src":"10088:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10100:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"10111:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10096:3:50"},"nodeType":"YulFunctionCall","src":"10096:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"10088:4:50"}]}]},"name":"abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9918:9:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"9932:4:50","type":""}],"src":"9767:353:50"},{"body":{"nodeType":"YulBlock","src":"10246:275:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10263:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"10274:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10256:6:50"},"nodeType":"YulFunctionCall","src":"10256:21:50"},"nodeType":"YulExpressionStatement","src":"10256:21:50"},{"nodeType":"YulVariableDeclaration","src":"10286:27:50","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"10306:6:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"10300:5:50"},"nodeType":"YulFunctionCall","src":"10300:13:50"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"10290:6:50","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10333:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"10344:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10329:3:50"},"nodeType":"YulFunctionCall","src":"10329:18:50"},{"name":"length","nodeType":"YulIdentifier","src":"10349:6:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10322:6:50"},"nodeType":"YulFunctionCall","src":"10322:34:50"},"nodeType":"YulExpressionStatement","src":"10322:34:50"},{"expression":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"10404:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"10412:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10400:3:50"},"nodeType":"YulFunctionCall","src":"10400:15:50"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10421:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"10432:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10417:3:50"},"nodeType":"YulFunctionCall","src":"10417:18:50"},{"name":"length","nodeType":"YulIdentifier","src":"10437:6:50"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"10365:34:50"},"nodeType":"YulFunctionCall","src":"10365:79:50"},"nodeType":"YulExpressionStatement","src":"10365:79:50"},{"nodeType":"YulAssignment","src":"10453:62:50","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10469:9:50"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"10488:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"10496:2:50","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10484:3:50"},"nodeType":"YulFunctionCall","src":"10484:15:50"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10505:2:50","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"10501:3:50"},"nodeType":"YulFunctionCall","src":"10501:7:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"10480:3:50"},"nodeType":"YulFunctionCall","src":"10480:29:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10465:3:50"},"nodeType":"YulFunctionCall","src":"10465:45:50"},{"kind":"number","nodeType":"YulLiteral","src":"10512:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10461:3:50"},"nodeType":"YulFunctionCall","src":"10461:54:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"10453:4:50"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"10215:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"10226:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"10237:4:50","type":""}],"src":"10125:396:50"}]},"contents":"{\n { }\n function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n if iszero(eq(value, and(value, shl(224, 0xffffffff)))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 96)\n let pos := headStart\n pos := headStart\n let srcPtr := value0\n let i := 0\n for { } lt(i, 0x03) { i := add(i, 1) }\n {\n mstore(pos, and(mload(srcPtr), 0xff))\n let _1 := 0x20\n pos := add(pos, _1)\n srcPtr := add(srcPtr, _1)\n }\n }\n function validator_revert_address(value)\n {\n if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n }\n function abi_encode_tuple_t_contract$_IDAO_$2538__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_encode_tuple_t_enum$_PluginType_$3994__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n if iszero(lt(value0, 3))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x21)\n revert(0, 0x24)\n }\n mstore(headStart, value0)\n }\n function panic_error_0x41()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function abi_decode_tuple_t_addresst_bytes_memory_ptr(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n let offset := calldataload(add(headStart, 32))\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n let _2 := add(headStart, offset)\n if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n let _3 := calldataload(_2)\n if gt(_3, _1) { panic_error_0x41() }\n let _4 := not(31)\n let memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n mstore(memPtr, _3)\n if gt(add(add(_2, _3), 32), dataEnd) { revert(0, 0) }\n calldatacopy(add(memPtr, 32), add(_2, 32), _3)\n mstore(add(add(memPtr, _3), 32), 0)\n value1 := memPtr\n }\n function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_decode_tuple_t_contract$_IDAO_$2538(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n }\n function abi_encode_tuple_t_stringliteral_36e108fa7a809b52ab1951dd91c117a7bc9ac5250bdf1aa162d4e104f7edf9eb__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 44)\n mstore(add(headStart, 64), \"Function must be called through \")\n mstore(add(headStart, 96), \"delegatecall\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_52f1ead4d9653e13afbd2e90ef2587c30187cd50b2e97d784e3f7a7541247434__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 44)\n mstore(add(headStart, 64), \"Function must be called through \")\n mstore(add(headStart, 96), \"active proxy\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_67f0151b4ad1dcfa0e3302a0cd6019f51582ef1807b37dceb00bd852a514f7f4__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 56)\n mstore(add(headStart, 64), \"UUPSUpgradeable: must not be cal\")\n mstore(add(headStart, 96), \"led through delegatecall\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 46)\n mstore(add(headStart, 64), \"Initializable: contract is alrea\")\n mstore(add(headStart, 96), \"dy initialized\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_rational_1_by_1__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xff))\n }\n function abi_decode_tuple_t_bytes32_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := mload(headStart)\n }\n function abi_encode_tuple_t_stringliteral_8e8e2fbcb586f700b5b14e2c4a650c8d83b9773c31c5fe8962070ea544e11f24__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 46)\n mstore(add(headStart, 64), \"ERC1967Upgrade: new implementati\")\n mstore(add(headStart, 96), \"on is not UUPS\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_76b6b6debfc5febf101145a79ecf0b0d2e89e397dfdab2bca99888370411152c__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 41)\n mstore(add(headStart, 64), \"ERC1967Upgrade: unsupported prox\")\n mstore(add(headStart, 96), \"iableUUID\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 43)\n mstore(add(headStart, 64), \"Initializable: contract is not i\")\n mstore(add(headStart, 96), \"nitializing\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_address_t_address_t_bytes32_t_bytes_calldata_ptr__to_t_address_t_address_t_bytes32_t_bytes_memory_ptr__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n {\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n mstore(add(headStart, 64), value2)\n mstore(add(headStart, 96), 128)\n mstore(add(headStart, 128), value4)\n calldatacopy(add(headStart, 160), value3, value4)\n mstore(add(add(headStart, value4), 160), 0)\n tail := add(add(headStart, and(add(value4, 31), not(31))), 160)\n }\n function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := mload(headStart)\n if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_address_t_address_t_address_t_bytes32__to_t_address_t_address_t_address_t_bytes32__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n {\n tail := add(headStart, 128)\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n mstore(add(headStart, 64), and(value2, _1))\n mstore(add(headStart, 96), value3)\n }\n function abi_encode_tuple_t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 45)\n mstore(add(headStart, 64), \"ERC1967: new implementation is n\")\n mstore(add(headStart, 96), \"ot a contract\")\n tail := add(headStart, 128)\n }\n function copy_memory_to_memory_with_cleanup(src, dst, length)\n {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n mstore(add(dst, length), 0)\n }\n function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n {\n let length := mload(value0)\n copy_memory_to_memory_with_cleanup(add(value0, 0x20), pos, length)\n end := add(pos, length)\n }\n function abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 29)\n mstore(add(headStart, 64), \"Address: call to non-contract\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n mstore(headStart, 32)\n let length := mload(value0)\n mstore(add(headStart, 32), length)\n copy_memory_to_memory_with_cleanup(add(value0, 32), add(headStart, 64), length)\n tail := add(add(headStart, and(add(length, 31), not(31))), 64)\n }\n}","id":50,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{"554":[{"length":32,"start":820},{"length":32,"start":958},{"length":32,"start":1204},{"length":32,"start":1337},{"length":32,"start":1571}]},"linkReferences":{},"object":"6080604052600436106100d25760003560e01c806352d1902d1161007f578063776d1a0111610059578063776d1a0114610200578063c4d66de814610220578063c9c4bfca14610240578063d4b839921461027457600080fd5b806352d1902d146101b15780635c60da1b146101d45780636accab8c146101e957600080fd5b80634162169f116100b05780634162169f1461015057806341de6830146101825780634f1ef2861461019e57600080fd5b806301ffc9a7146100d75780632ae9c6001461010c5780633659cfe61461012e575b600080fd5b3480156100e357600080fd5b506100f76100f2366004610ee8565b610294565b60405190151581526020015b60405180910390f35b34801561011857600080fd5b50610121610300565b6040516101039190610f12565b34801561013a57600080fd5b5061014e610149366004610f5b565b61032a565b005b34801561015c57600080fd5b5060c9546001600160a01b03165b6040516001600160a01b039091168152602001610103565b34801561018e57600080fd5b5060006040516101039190610f78565b61014e6101ac366004610fb6565b6104aa565b3480156101bd57600080fd5b506101c6610616565b604051908152602001610103565b3480156101e057600080fd5b5061016a6106db565b3480156101f557600080fd5b506101c661012d5481565b34801561020c57600080fd5b5061014e61021b366004610f5b565b610713565b34801561022c57600080fd5b5061014e61023b366004610f5b565b610772565b34801561024c57600080fd5b506101c67f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f581565b34801561028057600080fd5b5060fb5461016a906001600160a01b031681565b60006001600160e01b0319821663041de68360e41b14806102c457506001600160e01b03198216621574e360e91b145b806102df57506001600160e01b031982166352d1902d60e01b145b806102fa57506301ffc9a760e01b6001600160e01b03198316145b92915050565b610308610eca565b5060408051606081018252600181526004602082015260009181019190915290565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036103bc5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b60648201526084015b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166104177f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b0316146104825760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b60648201526084016103b3565b61048b81610899565b604080516000808252602082019092526104a7918391906108d6565b50565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036105375760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b60648201526084016103b3565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166105927f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b0316146105fd5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b60648201526084016103b3565b61060682610899565b610612828260016108d6565b5050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106b65760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016103b3565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b600061070e7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b60fb80546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d690600090a35050565b600054610100900460ff16158080156107925750600054600160ff909116105b806107ac5750303b1580156107ac575060005460ff166001145b61081e5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016103b3565b6000805460ff191660011790558015610841576000805461ff0019166101001790555b61084a82610a7b565b600161012d558015610612576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b60c9547f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f590610612906001600160a01b0316303384600036610aef565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561090e5761090983610bab565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610968575060408051601f3d908101601f191682019092526109659181019061107a565b60015b6109da5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201527f6f6e206973206e6f74205555505300000000000000000000000000000000000060648201526084016103b3565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114610a6f5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f7860448201527f6961626c6555554944000000000000000000000000000000000000000000000060648201526084016103b3565b50610909838383610c76565b600054610100900460ff16610ae65760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103b3565b6104a781610ca1565b604051637ef7c88360e11b81526001600160a01b0387169063fdef910690610b239088908890889088908890600401611093565b602060405180830381865afa158015610b40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6491906110e7565b610ba357604051630cb6f8ed60e21b81526001600160a01b038088166004830152808716602483015285166044820152606481018490526084016103b3565b505050505050565b6001600160a01b0381163b610c285760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e74726163740000000000000000000000000000000000000060648201526084016103b3565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610c7f83610d3b565b600082511180610c8c5750805b1561090957610c9b8383610d7b565b50505050565b600054610100900460ff16610d0c5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103b3565b60c9805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610d4481610bab565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060610da0838360405180606001604052806027815260200161117d60279139610da7565b9392505050565b6060600080856001600160a01b031685604051610dc4919061112d565b600060405180830381855af49150503d8060008114610dff576040519150601f19603f3d011682016040523d82523d6000602084013e610e04565b606091505b5091509150610e1586838387610e1f565b9695505050505050565b60608315610e8e578251600003610e87576001600160a01b0385163b610e875760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016103b3565b5081610e98565b610e988383610ea0565b949350505050565b815115610eb05781518083602001fd5b8060405162461bcd60e51b81526004016103b39190611149565b60405180606001604052806003906020820280368337509192915050565b600060208284031215610efa57600080fd5b81356001600160e01b031981168114610da057600080fd5b60608101818360005b6003811015610f3d57815160ff16835260209283019290910190600101610f1b565b50505092915050565b6001600160a01b03811681146104a757600080fd5b600060208284031215610f6d57600080fd5b8135610da081610f46565b6020810160038310610f9a57634e487b7160e01b600052602160045260246000fd5b91905290565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215610fc957600080fd5b8235610fd481610f46565b9150602083013567ffffffffffffffff80821115610ff157600080fd5b818501915085601f83011261100557600080fd5b81358181111561101757611017610fa0565b604051601f8201601f19908116603f0116810190838211818310171561103f5761103f610fa0565b8160405282815288602084870101111561105857600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60006020828403121561108c57600080fd5b5051919050565b60006001600160a01b03808816835280871660208401525084604083015260806060830152826080830152828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b6000602082840312156110f957600080fd5b81518015158114610da057600080fd5b60005b8381101561112457818101518382015260200161110c565b50506000910152565b6000825161113f818460208701611109565b9190910192915050565b6020815260008251806020840152611168816040850160208701611109565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xD2 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x52D1902D GT PUSH2 0x7F JUMPI DUP1 PUSH4 0x776D1A01 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0x776D1A01 EQ PUSH2 0x200 JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0x220 JUMPI DUP1 PUSH4 0xC9C4BFCA EQ PUSH2 0x240 JUMPI DUP1 PUSH4 0xD4B83992 EQ PUSH2 0x274 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x52D1902D EQ PUSH2 0x1B1 JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0x1D4 JUMPI DUP1 PUSH4 0x6ACCAB8C EQ PUSH2 0x1E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x4162169F GT PUSH2 0xB0 JUMPI DUP1 PUSH4 0x4162169F EQ PUSH2 0x150 JUMPI DUP1 PUSH4 0x41DE6830 EQ PUSH2 0x182 JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x19E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xD7 JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0x10C JUMPI DUP1 PUSH4 0x3659CFE6 EQ PUSH2 0x12E JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xE3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF7 PUSH2 0xF2 CALLDATASIZE PUSH1 0x4 PUSH2 0xEE8 JUMP JUMPDEST PUSH2 0x294 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x118 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x121 PUSH2 0x300 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x103 SWAP2 SWAP1 PUSH2 0xF12 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x13A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x14E PUSH2 0x149 CALLDATASIZE PUSH1 0x4 PUSH2 0xF5B JUMP JUMPDEST PUSH2 0x32A JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x15C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xC9 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x103 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x18E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 PUSH1 0x40 MLOAD PUSH2 0x103 SWAP2 SWAP1 PUSH2 0xF78 JUMP JUMPDEST PUSH2 0x14E PUSH2 0x1AC CALLDATASIZE PUSH1 0x4 PUSH2 0xFB6 JUMP JUMPDEST PUSH2 0x4AA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C6 PUSH2 0x616 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x103 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x16A PUSH2 0x6DB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C6 PUSH2 0x12D SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x20C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x14E PUSH2 0x21B CALLDATASIZE PUSH1 0x4 PUSH2 0xF5B JUMP JUMPDEST PUSH2 0x713 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x22C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x14E PUSH2 0x23B CALLDATASIZE PUSH1 0x4 PUSH2 0xF5B JUMP JUMPDEST PUSH2 0x772 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x24C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C6 PUSH32 0x821B6E3A557148015A918C89E5D092E878A69854A2D1A410635F771BD5A8A3F5 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x280 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xFB SLOAD PUSH2 0x16A SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x41DE683 PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x2C4 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x2DF JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x52D1902D PUSH1 0xE0 SHL EQ JUMPDEST DUP1 PUSH2 0x2FA JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x308 PUSH2 0xECA JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x3BC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x19195B1959D85D1958D85B1B PUSH1 0xA2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x417 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x482 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x6163746976652070726F7879 PUSH1 0xA0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B3 JUMP JUMPDEST PUSH2 0x48B DUP2 PUSH2 0x899 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x4A7 SWAP2 DUP4 SWAP2 SWAP1 PUSH2 0x8D6 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x537 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x19195B1959D85D1958D85B1B PUSH1 0xA2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B3 JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x592 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x5FD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x6163746976652070726F7879 PUSH1 0xA0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B3 JUMP JUMPDEST PUSH2 0x606 DUP3 PUSH2 0x899 JUMP JUMPDEST PUSH2 0x612 DUP3 DUP3 PUSH1 0x1 PUSH2 0x8D6 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x6B6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x38 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x555550535570677261646561626C653A206D757374206E6F742062652063616C PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6C6564207468726F7567682064656C656761746563616C6C0000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B3 JUMP JUMPDEST POP PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x70E PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0xFB DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP2 SWAP1 DUP3 SWAP1 PUSH32 0x90CC2F570A6EB594B1580EA3E41247D2D73A55281889E86BD4EC2FC29C7E62D6 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 DUP1 ISZERO PUSH2 0x792 JUMPI POP PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xFF SWAP1 SWAP2 AND LT JUMPDEST DUP1 PUSH2 0x7AC JUMPI POP ADDRESS EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x7AC JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF AND PUSH1 0x1 EQ JUMPDEST PUSH2 0x81E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x647920696E697469616C697A6564000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B3 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE DUP1 ISZERO PUSH2 0x841 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND PUSH2 0x100 OR SWAP1 SSTORE JUMPDEST PUSH2 0x84A DUP3 PUSH2 0xA7B JUMP JUMPDEST PUSH1 0x1 PUSH2 0x12D SSTORE DUP1 ISZERO PUSH2 0x612 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0xC9 SLOAD PUSH32 0x821B6E3A557148015A918C89E5D092E878A69854A2D1A410635F771BD5A8A3F5 SWAP1 PUSH2 0x612 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ADDRESS CALLER DUP5 PUSH1 0x0 CALLDATASIZE PUSH2 0xAEF JUMP JUMPDEST PUSH32 0x4910FDFA16FED3260ED0E7147F7CC6DA11A60208B5B9406D12A635614FFD9143 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x90E JUMPI PUSH2 0x909 DUP4 PUSH2 0xBAB JUMP JUMPDEST POP POP POP JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x52D1902D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x968 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x965 SWAP2 DUP2 ADD SWAP1 PUSH2 0x107A JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x9DA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524331393637557067726164653A206E657720696D706C656D656E74617469 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F6E206973206E6F742055555053000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B3 JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC DUP2 EQ PUSH2 0xA6F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524331393637557067726164653A20756E737570706F727465642070726F78 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6961626C65555549440000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B3 JUMP JUMPDEST POP PUSH2 0x909 DUP4 DUP4 DUP4 PUSH2 0xC76 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0xAE6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B3 JUMP JUMPDEST PUSH2 0x4A7 DUP2 PUSH2 0xCA1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x7EF7C883 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0xFDEF9106 SWAP1 PUSH2 0xB23 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x1093 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xB40 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xB64 SWAP2 SWAP1 PUSH2 0x10E7 JUMP JUMPDEST PUSH2 0xBA3 JUMPI PUSH1 0x40 MLOAD PUSH4 0xCB6F8ED PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND PUSH1 0x4 DUP4 ADD MSTORE DUP1 DUP8 AND PUSH1 0x24 DUP4 ADD MSTORE DUP6 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x84 ADD PUSH2 0x3B3 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND EXTCODESIZE PUSH2 0xC28 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313936373A206E657720696D706C656D656E746174696F6E206973206E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F74206120636F6E747261637400000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B3 JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xC7F DUP4 PUSH2 0xD3B JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD GT DUP1 PUSH2 0xC8C JUMPI POP DUP1 JUMPDEST ISZERO PUSH2 0x909 JUMPI PUSH2 0xC9B DUP4 DUP4 PUSH2 0xD7B JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0xD0C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B3 JUMP JUMPDEST PUSH1 0xC9 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xD44 DUP2 PUSH2 0xBAB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xDA0 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x117D PUSH1 0x27 SWAP2 CODECOPY PUSH2 0xDA7 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0xDC4 SWAP2 SWAP1 PUSH2 0x112D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xDFF JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xE04 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0xE15 DUP7 DUP4 DUP4 DUP8 PUSH2 0xE1F JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0xE8E JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0xE87 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0xE87 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3B3 JUMP JUMPDEST POP DUP2 PUSH2 0xE98 JUMP JUMPDEST PUSH2 0xE98 DUP4 DUP4 PUSH2 0xEA0 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0xEB0 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3B3 SWAP2 SWAP1 PUSH2 0x1149 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xEFA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0xDA0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0xF3D JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0xF1B JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x4A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xF6D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xDA0 DUP2 PUSH2 0xF46 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH1 0x3 DUP4 LT PUSH2 0xF9A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 SWAP1 MSTORE SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xFC9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0xFD4 DUP2 PUSH2 0xF46 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xFF1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1005 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x1017 JUMPI PUSH2 0x1017 PUSH2 0xFA0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x103F JUMPI PUSH2 0x103F PUSH2 0xFA0 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x1058 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x108C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND DUP4 MSTORE DUP1 DUP8 AND PUSH1 0x20 DUP5 ADD MSTORE POP DUP5 PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x80 PUSH1 0x60 DUP4 ADD MSTORE DUP3 PUSH1 0x80 DUP4 ADD MSTORE DUP3 DUP5 PUSH1 0xA0 DUP5 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0xA0 DUP5 DUP5 ADD ADD MSTORE PUSH1 0xA0 PUSH1 0x1F NOT PUSH1 0x1F DUP6 ADD AND DUP4 ADD ADD SWAP1 POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x10F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xDA0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1124 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x110C JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x113F DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x1109 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x1168 DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x1109 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A164 PUSH20 0x6F6C6343000811000A0000000000000000000000 ","sourceMap":"382:225:31:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2810:366:40;;;;;;;;;;-1:-1:-1;2810:366:40;;;;;:::i;:::-;;:::i;:::-;;;470:14:50;;463:22;445:41;;433:2;418:18;2810:366:40;;;;;;;;631:98:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;3408:195:5:-;;;;;;;;;;-1:-1:-1;3408:195:5;;;;;:::i;:::-;;:::i;:::-;;1200:70:35;;;;;;;;;;-1:-1:-1;1259:4:35;;-1:-1:-1;;;;;1259:4:35;1200:70;;;-1:-1:-1;;;;;1591:55:50;;;1573:74;;1561:2;1546:18;1200:70:35;1414:239:50;1710:103:40;;;;;;;;;;-1:-1:-1;1762:10:40;1710:103;;;;;;:::i;3922:220:5:-;;;;;;:::i;:::-;;:::i;3027:131::-;;;;;;;;;;;;;:::i;:::-;;;3345:25:50;;;3333:2;3318:18;3027:131:5;3199:177:50;3457:100:40;;;;;;;;;;;;;:::i;454:21:31:-;;;;;;;;;;;;;;;;2439:166:40;;;;;;;;;;-1:-1:-1;2439:166:40;;;;;:::i;:::-;;:::i;482:123:31:-;;;;;;;;;;-1:-1:-1;482:123:31;;;;;:::i;:::-;;:::i;1911:93:40:-;;;;;;;;;;;;1966:38;1911:93;;1293:21;;;;;;;;;;-1:-1:-1;1293:21:40;;;;-1:-1:-1;;;;;1293:21:40;;;2810:366;2896:4;-1:-1:-1;;;;;;2931:41:40;;-1:-1:-1;;;2931:41:40;;:107;;-1:-1:-1;;;;;;;2988:50:40;;-1:-1:-1;;;2988:50:40;2931:107;:185;;;-1:-1:-1;;;;;;;3054:62:40;;-1:-1:-1;;;3054:62:40;2931:185;:238;;;-1:-1:-1;;;;;;;;;;1189:51:10;;;3132:37:40;2912:257;2810:366;-1:-1:-1;;2810:366:40:o;631:98:49:-;679:15;;:::i;:::-;-1:-1:-1;706:16:49;;;;;;;;714:1;706:16;;717:1;706:16;;;;-1:-1:-1;706:16:49;;;;;;;;631:98::o;3408:195:5:-;-1:-1:-1;;;;;1764:6:5;1747:23;1755:4;1747:23;1739:80;;;;-1:-1:-1;;;1739:80:5;;4261:2:50;1739:80:5;;;4243:21:50;4300:2;4280:18;;;4273:30;4339:34;4319:18;;;4312:62;-1:-1:-1;;;4390:18:50;;;4383:42;4442:19;;1739:80:5;;;;;;;;;1861:6;-1:-1:-1;;;;;1837:30:5;:20;1180:66:2;1557:65;-1:-1:-1;;;;;1557:65:2;;1478:151;1837:20:5;-1:-1:-1;;;;;1837:30:5;;1829:87;;;;-1:-1:-1;;;1829:87:5;;4674:2:50;1829:87:5;;;4656:21:50;4713:2;4693:18;;;4686:30;4752:34;4732:18;;;4725:62;-1:-1:-1;;;4803:18:50;;;4796:42;4855:19;;1829:87:5;4472:408:50;1829:87:5;3489:36:::1;3507:17;3489;:36::i;:::-;3576:12;::::0;;3586:1:::1;3576:12:::0;;;::::1;::::0;::::1;::::0;;;3535:61:::1;::::0;3557:17;;3576:12;3535:21:::1;:61::i;:::-;3408:195:::0;:::o;3922:220::-;-1:-1:-1;;;;;1764:6:5;1747:23;1755:4;1747:23;1739:80;;;;-1:-1:-1;;;1739:80:5;;4261:2:50;1739:80:5;;;4243:21:50;4300:2;4280:18;;;4273:30;4339:34;4319:18;;;4312:62;-1:-1:-1;;;4390:18:50;;;4383:42;4442:19;;1739:80:5;4059:408:50;1739:80:5;1861:6;-1:-1:-1;;;;;1837:30:5;:20;1180:66:2;1557:65;-1:-1:-1;;;;;1557:65:2;;1478:151;1837:20:5;-1:-1:-1;;;;;1837:30:5;;1829:87;;;;-1:-1:-1;;;1829:87:5;;4674:2:50;1829:87:5;;;4656:21:50;4713:2;4693:18;;;4686:30;4752:34;4732:18;;;4725:62;-1:-1:-1;;;4803:18:50;;;4796:42;4855:19;;1829:87:5;4472:408:50;1829:87:5;4037:36:::1;4055:17;4037;:36::i;:::-;4083:52;4105:17;4124:4;4130;4083:21;:52::i;:::-;3922:220:::0;;:::o;3027:131::-;3105:7;2190:4;-1:-1:-1;;;;;2199:6:5;2182:23;;2174:92;;;;-1:-1:-1;;;2174:92:5;;5087:2:50;2174:92:5;;;5069:21:50;5126:2;5106:18;;;5099:30;5165:34;5145:18;;;5138:62;5236:26;5216:18;;;5209:54;5280:19;;2174:92:5;4885:420:50;2174:92:5;-1:-1:-1;1180:66:2::1;3027:131:5::0;:::o;3457:100:40:-;3504:7;3530:20;1180:66:2;1557:65;-1:-1:-1;;;;;1557:65:2;;1478:151;3530:20:40;3523:27;;3457:100;:::o;2439:166::-;2517:6;;;-1:-1:-1;;;;;2533:16:40;;;-1:-1:-1;;2533:16:40;;;;;;;2564:34;;2517:6;;;2533:16;2517:6;;2564:34;;2492:22;;2564:34;2482:123;2439:166;:::o;482:123:31:-;3279:19:4;3302:13;;;;;;3301:14;;3347:34;;;;-1:-1:-1;3365:12:4;;3380:1;3365:12;;;;:16;3347:34;3346:108;;;-1:-1:-1;3426:4:4;1713:19:6;:23;;;3387:66:4;;-1:-1:-1;3436:12:4;;;;;:17;3387:66;3325:201;;;;-1:-1:-1;;;3325:201:4;;5512:2:50;3325:201:4;;;5494:21:50;5551:2;5531:18;;;5524:30;5590:34;5570:18;;;5563:62;5661:16;5641:18;;;5634:44;5695:19;;3325:201:4;5310:410:50;3325:201:4;3536:12;:16;;-1:-1:-1;;3536:16:4;3551:1;3536:16;;;3562:65;;;;3596:13;:20;;-1:-1:-1;;3596:20:4;;;;;3562:65;544:34:31::1;573:4;544:28;:34::i;:::-;597:1;588:6;:10:::0;3647:99:4;;;;3697:5;3681:21;;-1:-1:-1;;3681:21:4;;;3721:14;;-1:-1:-1;5877:36:50;;3721:14:4;;5865:2:50;5850:18;3721:14:4;;;;;;;3269:483;482:123:31;:::o;5390:204:40:-;1616:4:35;;1966:38:40;;1610:67:35;;-1:-1:-1;;;;;1616:4:35;1630;965:10:7;1651:13:35;1039:14:7;;1610:5:35;:67::i;2841:944:2:-;839:66;3257:59;;;3253:526;;;3332:37;3351:17;3332:18;:37::i;:::-;2841:944;;;:::o;3253:526::-;3433:17;-1:-1:-1;;;;;3404:61:2;;:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3404:63:2;;;;;;;;-1:-1:-1;;3404:63:2;;;;;;;;;;;;:::i;:::-;;;3400:302;;3631:56;;-1:-1:-1;;;3631:56:2;;6315:2:50;3631:56:2;;;6297:21:50;6354:2;6334:18;;;6327:30;6393:34;6373:18;;;6366:62;6464:16;6444:18;;;6437:44;6498:19;;3631:56:2;6113:410:50;3400:302:2;1180:66;3517:28;;3509:82;;;;-1:-1:-1;;;3509:82:2;;6730:2:50;3509:82:2;;;6712:21:50;6769:2;6749:18;;;6742:30;6808:34;6788:18;;;6781:62;6879:11;6859:18;;;6852:39;6908:19;;3509:82:2;6528:405:50;3509:82:2;3468:138;3715:53;3733:17;3752:4;3758:9;3715:17;:53::i;2172:139:40:-;5374:13:4;;;;;;;5366:69;;;;-1:-1:-1;;;5366:69:4;;7140:2:50;5366:69:4;;;7122:21:50;7179:2;7159:18;;;7152:30;7218:34;7198:18;;;7191:62;-1:-1:-1;;;7269:18:50;;;7262:41;7320:19;;5366:69:4;6938:407:50;5366:69:4;2265:39:40::1;2299:4;2265:33;:39::i;1041:363:36:-:0;1180:54;;-1:-1:-1;;;1180:54:36;;-1:-1:-1;;;;;1180:18:36;;;;;:54;;1199:6;;1207:4;;1213:13;;1228:5;;;;1180:54;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1175:226;;1251:150;;-1:-1:-1;;;1251:150:36;;-1:-1:-1;;;;;8632:15:50;;;1251:150:36;;;8614:34:50;8684:15;;;8664:18;;;8657:43;8736:15;;8716:18;;;8709:43;8768:18;;;8761:34;;;8525:19;;1251:150:36;8322:479:50;1175:226:36;1041:363;;;;;;:::o;1720:281:2:-;-1:-1:-1;;;;;1713:19:6;;;1793:106:2;;;;-1:-1:-1;;;1793:106:2;;9008:2:50;1793:106:2;;;8990:21:50;9047:2;9027:18;;;9020:30;9086:34;9066:18;;;9059:62;9157:15;9137:18;;;9130:43;9190:19;;1793:106:2;8806:409:50;1793:106:2;1180:66;1909:85;;-1:-1:-1;;1909:85:2;-1:-1:-1;;;;;1909:85:2;;;;;;;;;;1720:281::o;2393:276::-;2501:29;2512:17;2501:10;:29::i;:::-;2558:1;2544:4;:11;:15;:28;;;;2563:9;2544:28;2540:123;;;2588:64;2628:17;2647:4;2588:39;:64::i;:::-;;2393:276;;;:::o;1010:108:35:-;5374:13:4;;;;;;;5366:69;;;;-1:-1:-1;;;5366:69:4;;7140:2:50;5366:69:4;;;7122:21:50;7179:2;7159:18;;;7152:30;7218:34;7198:18;;;7191:62;-1:-1:-1;;;7269:18:50;;;7262:41;7320:19;;5366:69:4;6938:407:50;5366:69:4;1100:4:35::1;:11:::0;;-1:-1:-1;;1100:11:35::1;-1:-1:-1::0;;;;;1100:11:35;;;::::1;::::0;;;::::1;::::0;;1010:108::o;2107:152:2:-;2173:37;2192:17;2173:18;:37::i;:::-;2225:27;;-1:-1:-1;;;;;2225:27:2;;;;;;;;2107:152;:::o;6685:198:6:-;6768:12;6799:77;6820:6;6828:4;6799:77;;;;;;;;;;;;;;;;;:20;:77::i;:::-;6792:84;6685:198;-1:-1:-1;;;6685:198:6:o;7069:325::-;7210:12;7235;7249:23;7276:6;-1:-1:-1;;;;;7276:19:6;7296:4;7276:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7234:67;;;;7318:69;7345:6;7353:7;7362:10;7374:12;7318:26;:69::i;:::-;7311:76;7069:325;-1:-1:-1;;;;;;7069:325:6:o;7682:628::-;7862:12;7890:7;7886:418;;;7917:10;:17;7938:1;7917:22;7913:286;;-1:-1:-1;;;;;1713:19:6;;;8124:60;;;;-1:-1:-1;;;8124:60:6;;9969:2:50;8124:60:6;;;9951:21:50;10008:2;9988:18;;;9981:30;10047:31;10027:18;;;10020:59;10096:18;;8124:60:6;9767:353:50;8124:60:6;-1:-1:-1;8219:10:6;8212:17;;7886:418;8260:33;8268:10;8280:12;8260:7;:33::i;:::-;7682:628;;;;;;:::o;8832:540::-;8991:17;;:21;8987:379;;9219:10;9213:17;9275:15;9262:10;9258:2;9254:19;9247:44;8987:379;9342:12;9335:20;;-1:-1:-1;;;9335:20:6;;;;;;;;:::i;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:286:50:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:50;;209:43;;199:71;;266:1;263;256:12;497:501;673:2;658:18;;662:9;753:6;631:4;787:205;801:4;798:1;795:11;787:205;;;864:13;;879:4;860:24;848:37;;908:4;932:12;;;;967:15;;;;821:1;814:9;787:205;;;791:3;;;497:501;;;;:::o;1003:154::-;-1:-1:-1;;;;;1082:5:50;1078:54;1071:5;1068:65;1058:93;;1147:1;1144;1137:12;1162:247;1221:6;1274:2;1262:9;1253:7;1249:23;1245:32;1242:52;;;1290:1;1287;1280:12;1242:52;1329:9;1316:23;1348:31;1373:5;1348:31;:::i;1658:343::-;1805:2;1790:18;;1838:1;1827:13;;1817:144;;1883:10;1878:3;1874:20;1871:1;1864:31;1918:4;1915:1;1908:15;1946:4;1943:1;1936:15;1817:144;1970:25;;;1658:343;:::o;2006:127::-;2067:10;2062:3;2058:20;2055:1;2048:31;2098:4;2095:1;2088:15;2122:4;2119:1;2112:15;2138:1056;2215:6;2223;2276:2;2264:9;2255:7;2251:23;2247:32;2244:52;;;2292:1;2289;2282:12;2244:52;2331:9;2318:23;2350:31;2375:5;2350:31;:::i;:::-;2400:5;-1:-1:-1;2456:2:50;2441:18;;2428:32;2479:18;2509:14;;;2506:34;;;2536:1;2533;2526:12;2506:34;2574:6;2563:9;2559:22;2549:32;;2619:7;2612:4;2608:2;2604:13;2600:27;2590:55;;2641:1;2638;2631:12;2590:55;2677:2;2664:16;2699:2;2695;2692:10;2689:36;;;2705:18;;:::i;:::-;2780:2;2774:9;2748:2;2834:13;;-1:-1:-1;;2830:22:50;;;2854:2;2826:31;2822:40;2810:53;;;2878:18;;;2898:22;;;2875:46;2872:72;;;2924:18;;:::i;:::-;2964:10;2960:2;2953:22;2999:2;2991:6;2984:18;3039:7;3034:2;3029;3025;3021:11;3017:20;3014:33;3011:53;;;3060:1;3057;3050:12;3011:53;3116:2;3111;3107;3103:11;3098:2;3090:6;3086:15;3073:46;3161:1;3156:2;3151;3143:6;3139:15;3135:24;3128:35;3182:6;3172:16;;;;;;;2138:1056;;;;;:::o;5924:184::-;5994:6;6047:2;6035:9;6026:7;6022:23;6018:32;6015:52;;;6063:1;6060;6053:12;6015:52;-1:-1:-1;6086:16:50;;5924:184;-1:-1:-1;5924:184:50:o;7350:685::-;7554:4;-1:-1:-1;;;;;7664:2:50;7656:6;7652:15;7641:9;7634:34;7716:2;7708:6;7704:15;7699:2;7688:9;7684:18;7677:43;;7756:6;7751:2;7740:9;7736:18;7729:34;7799:3;7794:2;7783:9;7779:18;7772:31;7840:6;7834:3;7823:9;7819:19;7812:35;7898:6;7890;7884:3;7873:9;7869:19;7856:49;7955:1;7949:3;7940:6;7929:9;7925:22;7921:32;7914:43;8025:3;8018:2;8014:7;8009:2;8001:6;7997:15;7993:29;7982:9;7978:45;7974:55;7966:63;;7350:685;;;;;;;;:::o;8040:277::-;8107:6;8160:2;8148:9;8139:7;8135:23;8131:32;8128:52;;;8176:1;8173;8166:12;8128:52;8208:9;8202:16;8261:5;8254:13;8247:21;8240:5;8237:32;8227:60;;8283:1;8280;8273:12;9220:250;9305:1;9315:113;9329:6;9326:1;9323:13;9315:113;;;9405:11;;;9399:18;9386:11;;;9379:39;9351:2;9344:10;9315:113;;;-1:-1:-1;;9462:1:50;9444:16;;9437:27;9220:250::o;9475:287::-;9604:3;9642:6;9636:13;9658:66;9717:6;9712:3;9705:4;9697:6;9693:17;9658:66;:::i;:::-;9740:16;;;;;9475:287;-1:-1:-1;;9475:287:50:o;10125:396::-;10274:2;10263:9;10256:21;10237:4;10306:6;10300:13;10349:6;10344:2;10333:9;10329:18;10322:34;10365:79;10437:6;10432:2;10421:9;10417:18;10412:2;10404:6;10400:15;10365:79;:::i;:::-;10505:2;10484:15;-1:-1:-1;;10480:29:50;10465:45;;;;10512:2;10461:54;;10125:396;-1:-1:-1;;10125:396:50:o"},"gasEstimates":{"creation":{"codeDepositCost":"905600","executionCost":"infinite","totalCost":"infinite"},"external":{"UPGRADE_PLUGIN_PERMISSION_ID()":"261","dao()":"2343","implementation()":"2414","initialize(address)":"infinite","pluginType()":"272","protocolVersion()":"infinite","proxiableUUID()":"infinite","setTarget(address)":"26112","state1()":"2362","supportsInterface(bytes4)":"560","target()":"2425","upgradeTo(address)":"infinite","upgradeToAndCall(address,bytes)":"infinite"}},"methodIdentifiers":{"UPGRADE_PLUGIN_PERMISSION_ID()":"c9c4bfca","dao()":"4162169f","implementation()":"5c60da1b","initialize(address)":"c4d66de8","pluginType()":"41de6830","protocolVersion()":"2ae9c600","proxiableUUID()":"52d1902d","setTarget(address)":"776d1a01","state1()":"6accab8c","supportsInterface(bytes4)":"01ffc9a7","target()":"d4b83992","upgradeTo(address)":"3659cfe6","upgradeToAndCall(address,bytes)":"4f1ef286"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"dao\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"name\":\"DaoUnauthorized\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousTarget\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newTarget\",\"type\":\"address\"}],\"name\":\"TargetSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"UPGRADE_PLUGIN_PERMISSION_ID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"dao\",\"outputs\":[{\"internalType\":\"contract IDAO\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IDAO\",\"name\":\"_dao\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pluginType\",\"outputs\":[{\"internalType\":\"enum IPlugin.PluginType\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"protocolVersion\",\"outputs\":[{\"internalType\":\"uint8[3]\",\"name\":\"\",\"type\":\"uint8[3]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_target\",\"type\":\"address\"}],\"name\":\"setTarget\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"state1\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"target\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"upgradeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"DO NOT USE IN PRODUCTION!\",\"errors\":{\"DaoUnauthorized(address,address,address,bytes32)\":[{\"params\":{\"dao\":\"The associated DAO.\",\"permissionId\":\"The permission identifier.\",\"where\":\"The context in which the authorization reverted.\",\"who\":\"The address (EOA or contract) missing the permission.\"}}]},\"kind\":\"dev\",\"methods\":{\"dao()\":{\"returns\":{\"_0\":\"The DAO contract.\"}},\"implementation()\":{\"returns\":{\"_0\":\"The address of the implementation contract.\"}},\"protocolVersion()\":{\"details\":\"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\",\"returns\":{\"_0\":\"Returns the semantic Aragon OSx protocol version number.\"}},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"setTarget(address)\":{\"details\":\"Sets the target to a new target (`newTarget`).\"},\"supportsInterface(bytes4)\":{\"params\":{\"_interfaceId\":\"The ID of the interface.\"},\"returns\":{\"_0\":\"Returns `true` if the interface is supported.\"}},\"upgradeTo(address)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"},\"upgradeToAndCall(address,bytes)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"}},\"version\":1},\"userdoc\":{\"errors\":{\"DaoUnauthorized(address,address,address,bytes32)\":[{\"notice\":\"Thrown if a call is unauthorized in the associated DAO.\"}]},\"kind\":\"user\",\"methods\":{\"UPGRADE_PLUGIN_PERMISSION_ID()\":{\"notice\":\"The ID of the permission required to call the `_authorizeUpgrade` function.\"},\"dao()\":{\"notice\":\"Returns the DAO contract.\"},\"implementation()\":{\"notice\":\"Returns the address of the implementation contract in the [proxy storage slot](https://eips.ethereum.org/EIPS/eip-1967) slot the [UUPS proxy](https://eips.ethereum.org/EIPS/eip-1822) is pointing to.\"},\"pluginType()\":{\"notice\":\"Returns the plugin's type\"},\"protocolVersion()\":{\"notice\":\"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\"},\"setTarget(address)\":{\"notice\":\"Can only be called by the current owner. TODO\"},\"supportsInterface(bytes4)\":{\"notice\":\"Checks if an interface is supported by this or its parent contract.\"}},\"notice\":\"A mock upgradeable plugin to be deployed via the UUPS proxy pattern. v1.1 (Release 1, Build 1)\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/mocks/plugin/PluginUUPSUpgradeableMock.sol\":\"PluginUUPSUpgradeableMockBuild1\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/interfaces/IERC1967Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (interfaces/IERC1967.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\\n *\\n * _Available since v4.8.3._\\n */\\ninterface IERC1967Upgradeable {\\n /**\\n * @dev Emitted when the implementation is upgraded.\\n */\\n event Upgraded(address indexed implementation);\\n\\n /**\\n * @dev Emitted when the admin account has changed.\\n */\\n event AdminChanged(address previousAdmin, address newAdmin);\\n\\n /**\\n * @dev Emitted when the beacon is changed.\\n */\\n event BeaconUpgraded(address indexed beacon);\\n}\\n\",\"keccak256\":\"0x47d6e06872b12e72c79d1b5eb55842f860b5fb1207b2317c2358d2766b950a7b\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822ProxiableUpgradeable {\\n /**\\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n * address.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy.\\n */\\n function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../beacon/IBeaconUpgradeable.sol\\\";\\nimport \\\"../../interfaces/IERC1967Upgradeable.sol\\\";\\nimport \\\"../../interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\nimport \\\"../../utils/StorageSlotUpgradeable.sol\\\";\\nimport {Initializable} from \\\"../utils/Initializable.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n */\\nabstract contract ERC1967UpgradeUpgradeable is Initializable, IERC1967Upgradeable {\\n // This is the keccak-256 hash of \\\"eip1967.proxy.rollback\\\" subtracted by 1\\n bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n /**\\n * @dev Storage slot with the address of the current implementation.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n function __ERC1967Upgrade_init() internal onlyInitializing {\\n }\\n\\n function __ERC1967Upgrade_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _getImplementation() internal view returns (address) {\\n return StorageSlotUpgradeable.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 implementation slot.\\n */\\n function _setImplementation(address newImplementation) private {\\n require(AddressUpgradeable.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n StorageSlotUpgradeable.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n }\\n\\n /**\\n * @dev Perform implementation upgrade\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeTo(address newImplementation) internal {\\n _setImplementation(newImplementation);\\n emit Upgraded(newImplementation);\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCall(address newImplementation, bytes memory data, bool forceCall) internal {\\n _upgradeTo(newImplementation);\\n if (data.length > 0 || forceCall) {\\n AddressUpgradeable.functionDelegateCall(newImplementation, data);\\n }\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCallUUPS(address newImplementation, bytes memory data, bool forceCall) internal {\\n // Upgrades from old implementations will perform a rollback test. This test requires the new\\n // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n // this special case will break upgrade paths from old UUPS implementation to new ones.\\n if (StorageSlotUpgradeable.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n _setImplementation(newImplementation);\\n } else {\\n try IERC1822ProxiableUpgradeable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n require(slot == _IMPLEMENTATION_SLOT, \\\"ERC1967Upgrade: unsupported proxiableUUID\\\");\\n } catch {\\n revert(\\\"ERC1967Upgrade: new implementation is not UUPS\\\");\\n }\\n _upgradeToAndCall(newImplementation, data, forceCall);\\n }\\n }\\n\\n /**\\n * @dev Storage slot with the admin of the contract.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _getAdmin() internal view returns (address) {\\n return StorageSlotUpgradeable.getAddressSlot(_ADMIN_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 admin slot.\\n */\\n function _setAdmin(address newAdmin) private {\\n require(newAdmin != address(0), \\\"ERC1967: new admin is the zero address\\\");\\n StorageSlotUpgradeable.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n */\\n function _changeAdmin(address newAdmin) internal {\\n emit AdminChanged(_getAdmin(), newAdmin);\\n _setAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\\n */\\n bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n /**\\n * @dev Returns the current beacon.\\n */\\n function _getBeacon() internal view returns (address) {\\n return StorageSlotUpgradeable.getAddressSlot(_BEACON_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new beacon in the EIP1967 beacon slot.\\n */\\n function _setBeacon(address newBeacon) private {\\n require(AddressUpgradeable.isContract(newBeacon), \\\"ERC1967: new beacon is not a contract\\\");\\n require(\\n AddressUpgradeable.isContract(IBeaconUpgradeable(newBeacon).implementation()),\\n \\\"ERC1967: beacon implementation is not a contract\\\"\\n );\\n StorageSlotUpgradeable.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n }\\n\\n /**\\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n *\\n * Emits a {BeaconUpgraded} event.\\n */\\n function _upgradeBeaconToAndCall(address newBeacon, bytes memory data, bool forceCall) internal {\\n _setBeacon(newBeacon);\\n emit BeaconUpgraded(newBeacon);\\n if (data.length > 0 || forceCall) {\\n AddressUpgradeable.functionDelegateCall(IBeaconUpgradeable(newBeacon).implementation(), data);\\n }\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x7795808e3899c805254e3ae58074b20f799b466e3f43e057e47bedee5fb771f8\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeaconUpgradeable {\\n /**\\n * @dev Must return an address that can be used as a delegate call target.\\n *\\n * {BeaconProxy} will check that this address is a contract.\\n */\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/UUPSUpgradeable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport \\\"../ERC1967/ERC1967UpgradeUpgradeable.sol\\\";\\nimport {Initializable} from \\\"./Initializable.sol\\\";\\n\\n/**\\n * @dev An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an\\n * {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy.\\n *\\n * A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is\\n * reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing\\n * `UUPSUpgradeable` with a custom implementation of upgrades.\\n *\\n * The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism.\\n *\\n * _Available since v4.1._\\n */\\nabstract contract UUPSUpgradeable is Initializable, IERC1822ProxiableUpgradeable, ERC1967UpgradeUpgradeable {\\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable state-variable-assignment\\n address private immutable __self = address(this);\\n\\n /**\\n * @dev Check that the execution is being performed through a delegatecall call and that the execution context is\\n * a proxy contract with an implementation (as defined in ERC1967) pointing to self. This should only be the case\\n * for UUPS and transparent proxies that are using the current contract as their implementation. Execution of a\\n * function through ERC1167 minimal proxies (clones) would not normally pass this test, but is not guaranteed to\\n * fail.\\n */\\n modifier onlyProxy() {\\n require(address(this) != __self, \\\"Function must be called through delegatecall\\\");\\n require(_getImplementation() == __self, \\\"Function must be called through active proxy\\\");\\n _;\\n }\\n\\n /**\\n * @dev Check that the execution is not being performed through a delegate call. This allows a function to be\\n * callable on the implementing contract but not through proxies.\\n */\\n modifier notDelegated() {\\n require(address(this) == __self, \\\"UUPSUpgradeable: must not be called through delegatecall\\\");\\n _;\\n }\\n\\n function __UUPSUpgradeable_init() internal onlyInitializing {\\n }\\n\\n function __UUPSUpgradeable_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the\\n * implementation. It is used to validate the implementation's compatibility when performing an upgrade.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\\n */\\n function proxiableUUID() external view virtual override notDelegated returns (bytes32) {\\n return _IMPLEMENTATION_SLOT;\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy to `newImplementation`.\\n *\\n * Calls {_authorizeUpgrade}.\\n *\\n * Emits an {Upgraded} event.\\n *\\n * @custom:oz-upgrades-unsafe-allow-reachable delegatecall\\n */\\n function upgradeTo(address newImplementation) public virtual onlyProxy {\\n _authorizeUpgrade(newImplementation);\\n _upgradeToAndCallUUPS(newImplementation, new bytes(0), false);\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call\\n * encoded in `data`.\\n *\\n * Calls {_authorizeUpgrade}.\\n *\\n * Emits an {Upgraded} event.\\n *\\n * @custom:oz-upgrades-unsafe-allow-reachable delegatecall\\n */\\n function upgradeToAndCall(address newImplementation, bytes memory data) public payable virtual onlyProxy {\\n _authorizeUpgrade(newImplementation);\\n _upgradeToAndCallUUPS(newImplementation, data, true);\\n }\\n\\n /**\\n * @dev Function that should revert when `msg.sender` is not authorized to upgrade the contract. Called by\\n * {upgradeTo} and {upgradeToAndCall}.\\n *\\n * Normally, this function will use an xref:access.adoc[access control] modifier such as {Ownable-onlyOwner}.\\n *\\n * ```solidity\\n * function _authorizeUpgrade(address) internal override onlyOwner {}\\n * ```\\n */\\n function _authorizeUpgrade(address newImplementation) internal virtual;\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0xefb41f5c1a00249b7a99f0782f8c557865605426a3fb6e5fe9ae334293ae4f33\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n function __Context_init() internal onlyInitializing {\\n }\\n\\n function __Context_init_unchained() internal onlyInitializing {\\n }\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n function _contextSuffixLength() internal view virtual returns (uint256) {\\n return 0;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x75097e35253e7fb282ee4d7f27a80eaacfa759923185bf17302a89cbc059c5ef\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/StorageSlot.sol)\\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```solidity\\n * contract ERC1967 {\\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n * function _getImplementation() internal view returns (address) {\\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n * }\\n *\\n * function _setImplementation(address newImplementation) internal {\\n * require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n * }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._\\n * _Available since v4.9 for `string`, `bytes`._\\n */\\nlibrary StorageSlotUpgradeable {\\n struct AddressSlot {\\n address value;\\n }\\n\\n struct BooleanSlot {\\n bool value;\\n }\\n\\n struct Bytes32Slot {\\n bytes32 value;\\n }\\n\\n struct Uint256Slot {\\n uint256 value;\\n }\\n\\n struct StringSlot {\\n string value;\\n }\\n\\n struct BytesSlot {\\n bytes value;\\n }\\n\\n /**\\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n */\\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n */\\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n */\\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n */\\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` with member `value` located at `slot`.\\n */\\n function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\\n */\\n function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` with member `value` located at `slot`.\\n */\\n function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\\n */\\n function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n}\\n\",\"keccak256\":\"0x07ac95acad040f1fb1f6120dd0aa5f702db69446e95f82613721879d30de0908\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165Upgradeable.sol\\\";\\nimport {Initializable} from \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165Upgradeable is Initializable, IERC165Upgradeable {\\n function __ERC165_init() internal onlyInitializing {\\n }\\n\\n function __ERC165_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165Upgradeable).interfaceId;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0xd90d7723512df65ae417adaf0801042940f0dabd60039ceeaffe34aa5b238da1\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165Upgradeable {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\"},\"src/dao/IDAO.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IDAO\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for DAOs within the Aragon App DAO framework.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IDAO {\\n /// @notice The action struct to be consumed by the DAO's `execute` function resulting in an external call.\\n /// @param to The address to call.\\n /// @param value The native token value to be sent with the call.\\n /// @param data The bytes-encoded function selector and calldata for the call.\\n struct Action {\\n address to;\\n uint256 value;\\n bytes data;\\n }\\n\\n /// @notice Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\\n /// @param _where The address of the contract.\\n /// @param _who The address of a EOA or contract to give the permissions.\\n /// @param _permissionId The permission identifier.\\n /// @param _data The optional data passed to the `PermissionCondition` registered.\\n /// @return Returns true if the address has permission, false if not.\\n function hasPermission(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes memory _data\\n ) external view returns (bool);\\n\\n /// @notice Updates the DAO metadata (e.g., an IPFS hash).\\n /// @param _metadata The IPFS hash of the new metadata object.\\n function setMetadata(bytes calldata _metadata) external;\\n\\n /// @notice Emitted when the DAO metadata is updated.\\n /// @param metadata The IPFS hash of the new metadata object.\\n event MetadataSet(bytes metadata);\\n\\n /// @notice Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted.\\n /// @param _callId The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce.\\n /// @param _actions The array of actions.\\n /// @param _allowFailureMap A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @return The array of results obtained from the executed actions in `bytes`.\\n /// @return The resulting failure map containing the actions have actually failed.\\n function execute(\\n bytes32 _callId,\\n Action[] memory _actions,\\n uint256 _allowFailureMap\\n ) external returns (bytes[] memory, uint256);\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param actor The address of the caller.\\n /// @param callId The ID of the call.\\n /// @param actions The array of actions executed.\\n /// @param allowFailureMap The allow failure map encoding which actions are allowed to fail.\\n /// @param failureMap The failure map encoding which actions have failed.\\n /// @param execResults The array with the results of the executed actions.\\n /// @dev The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce.\\n event Executed(\\n address indexed actor,\\n bytes32 callId,\\n Action[] actions,\\n uint256 allowFailureMap,\\n uint256 failureMap,\\n bytes[] execResults\\n );\\n\\n /// @notice Emitted when a standard callback is registered.\\n /// @param interfaceId The ID of the interface.\\n /// @param callbackSelector The selector of the callback function.\\n /// @param magicNumber The magic number to be registered for the callback function selector.\\n event StandardCallbackRegistered(\\n bytes4 interfaceId,\\n bytes4 callbackSelector,\\n bytes4 magicNumber\\n );\\n\\n /// @notice Deposits (native) tokens to the DAO contract with a reference string.\\n /// @param _token The address of the token or address(0) in case of the native token.\\n /// @param _amount The amount of tokens to deposit.\\n /// @param _reference The reference describing the deposit reason.\\n function deposit(address _token, uint256 _amount, string calldata _reference) external payable;\\n\\n /// @notice Emitted when a token deposit has been made to the DAO.\\n /// @param sender The address of the sender.\\n /// @param token The address of the deposited token.\\n /// @param amount The amount of tokens deposited.\\n /// @param _reference The reference describing the deposit reason.\\n event Deposited(\\n address indexed sender,\\n address indexed token,\\n uint256 amount,\\n string _reference\\n );\\n\\n /// @notice Emitted when a native token deposit has been made to the DAO.\\n /// @dev This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).\\n /// @param sender The address of the sender.\\n /// @param amount The amount of native tokens deposited.\\n event NativeTokenDeposited(address sender, uint256 amount);\\n\\n /// @notice Setter for the trusted forwarder verifying the meta transaction.\\n /// @param _trustedForwarder The trusted forwarder address.\\n function setTrustedForwarder(address _trustedForwarder) external;\\n\\n /// @notice Getter for the trusted forwarder verifying the meta transaction.\\n /// @return The trusted forwarder address.\\n function getTrustedForwarder() external view returns (address);\\n\\n /// @notice Emitted when a new TrustedForwarder is set on the DAO.\\n /// @param forwarder the new forwarder address.\\n event TrustedForwarderSet(address forwarder);\\n\\n /// @notice Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\\n /// @param _hash The hash of the data to be signed.\\n /// @param _signature The signature byte array associated with `_hash`.\\n /// @return Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not.\\n function isValidSignature(bytes32 _hash, bytes memory _signature) external returns (bytes4);\\n\\n /// @notice Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\\n /// @param _interfaceId The ID of the interface.\\n /// @param _callbackSelector The selector of the callback function.\\n /// @param _magicNumber The magic number to be registered for the function signature.\\n function registerStandardCallback(\\n bytes4 _interfaceId,\\n bytes4 _callbackSelector,\\n bytes4 _magicNumber\\n ) external;\\n\\n /// @notice Removed function being left here to not corrupt the IDAO interface ID. Any call will revert.\\n /// @dev Introduced in v1.0.0. Removed in v1.4.0.\\n function setSignatureValidator(address) external;\\n}\\n\",\"keccak256\":\"0xb7f615523c26de042edce98731c658f44a1edb2464387ac1b642c4c69f57128e\",\"license\":\"AGPL-3.0-or-later\"},\"src/mocks/plugin/PluginUUPSUpgradeableMock.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\n/* solhint-disable one-contract-per-file */\\npragma solidity ^0.8.8;\\n\\nimport {PluginUUPSUpgradeable} from \\\"../../plugin/PluginUUPSUpgradeable.sol\\\";\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice A mock upgradeable plugin to be deployed via the UUPS proxy pattern.\\n/// v1.1 (Release 1, Build 1)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableMockBuild1 is PluginUUPSUpgradeable {\\n uint256 public state1;\\n\\n function initialize(IDAO _dao) external initializer {\\n __PluginUUPSUpgradeable_init(_dao);\\n state1 = 1;\\n }\\n}\\n\\n/// @notice A mock upgradeable plugin to be deployed via the UUPS proxy pattern.\\n/// v1.1 (Release 1, Build 2)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableMockBuild2 is PluginUUPSUpgradeable {\\n uint256 public state1;\\n uint256 public state2;\\n\\n function initialize(IDAO _dao) external reinitializer(2) {\\n __PluginUUPSUpgradeable_init(_dao);\\n state1 = 1;\\n state2 = 2;\\n }\\n\\n function initializeFrom(uint16 _previousBuild) external reinitializer(2) {\\n if (_previousBuild < 2) {\\n state2 = 2;\\n }\\n }\\n}\\n\\n/// @notice A mock upgradeable plugin to be deployed via the UUPS proxy pattern.\\n/// v1.1 (Release 1, Build 3)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableMockBuild3 is PluginUUPSUpgradeable {\\n uint256 public state1;\\n uint256 public state2;\\n uint256 public state3;\\n\\n function initialize(IDAO _dao) external reinitializer(3) {\\n __PluginUUPSUpgradeable_init(_dao);\\n state1 = 1;\\n state2 = 2;\\n state3 = 3;\\n }\\n\\n function initializeFrom(uint16 _previousBuild) external reinitializer(3) {\\n if (_previousBuild < 2) {\\n state2 = 2;\\n }\\n if (_previousBuild < 3) {\\n state3 = 3;\\n }\\n }\\n}\\n\\n/// @notice A mock upgradeable plugin missing an initializer function.\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableMockBad is PluginUUPSUpgradeable {\\n uint256 public state1;\\n\\n function notAnInitializer(IDAO _dao) external {\\n __PluginUUPSUpgradeable_init(_dao);\\n state1 = 1;\\n }\\n}\\n\",\"keccak256\":\"0x2917df3b1da0de27f58cf531afeaa4e6c4285717247cbdd9ecc7880ae5cb9cb0\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/DaoAuthorizableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ContextUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\\\";\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\nimport {_auth} from \\\"./auth.sol\\\";\\n\\n/// @title DaoAuthorizableUpgradeable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract contract providing a meta-transaction compatible modifier for upgradeable or cloneable contracts to authorize function calls through an associated DAO.\\n/// @dev Make sure to call `__DaoAuthorizableUpgradeable_init` during initialization of the inheriting contract.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract DaoAuthorizableUpgradeable is ContextUpgradeable {\\n /// @notice The associated DAO managing the permissions of inheriting contracts.\\n IDAO private dao_;\\n\\n /// @notice Initializes the contract by setting the associated DAO.\\n /// @param _dao The associated DAO address.\\n // solhint-disable-next-line func-name-mixedcase\\n function __DaoAuthorizableUpgradeable_init(IDAO _dao) internal onlyInitializing {\\n dao_ = _dao;\\n }\\n\\n /// @notice Returns the DAO contract.\\n /// @return The DAO contract.\\n function dao() public view returns (IDAO) {\\n return dao_;\\n }\\n\\n /// @notice A modifier to make functions on inheriting contracts authorized. Permissions to call the function are checked through the associated DAO's permission manager.\\n /// @param _permissionId The permission identifier required to call the method this modifier is applied to.\\n modifier auth(bytes32 _permissionId) {\\n _auth(dao_, address(this), _msgSender(), _permissionId, _msgData());\\n _;\\n }\\n\\n /// @notice This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain (see [OpenZeppelin's guide about storage gaps](https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps)).\\n uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0x7fac6b01b037ba1cb9d6a22d3f43b0785037dcf496ffb672434d9bf7227d2585\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/auth.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice Thrown if a call is unauthorized in the associated DAO.\\n/// @param dao The associated DAO.\\n/// @param where The context in which the authorization reverted.\\n/// @param who The address (EOA or contract) missing the permission.\\n/// @param permissionId The permission identifier.\\nerror DaoUnauthorized(address dao, address where, address who, bytes32 permissionId);\\n\\n/// @notice A free function checking if a caller is granted permissions on a target contract via a permission identifier that redirects the approval to a `PermissionCondition` if this was specified in the setup.\\n/// @param _where The address of the target contract for which `who` receives permission.\\n/// @param _who The address (EOA or contract) owning the permission.\\n/// @param _permissionId The permission identifier.\\n/// @param _data The optional data passed to the `PermissionCondition` registered.\\n/// @custom:security-contact sirt@aragon.org\\nfunction _auth(\\n IDAO _dao,\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes calldata _data\\n) view {\\n if (!_dao.hasPermission(_where, _who, _permissionId, _data))\\n revert DaoUnauthorized({\\n dao: address(_dao),\\n where: _where,\\n who: _who,\\n permissionId: _permissionId\\n });\\n}\\n\",\"keccak256\":\"0x878764b4f87fe0651fb3798fb9cb87c952f8c6caf6ae79c7f09de84df6c00298\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/IPlugin.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IPlugin\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the traits of a plugin.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IPlugin {\\n enum PluginType {\\n UUPS,\\n Cloneable,\\n Constructable\\n }\\n\\n /// @notice Returns the plugin's type\\n function pluginType() external view returns (PluginType);\\n}\\n\",\"keccak256\":\"0xc57cd0d10b6380ab7f54c713a509e88fd8f4ad9288313a0e8e12b8887817ddfe\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/PluginUUPSUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {UUPSUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\\\";\\nimport {IERC1822ProxiableUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport {ERC165Upgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\\\";\\n\\nimport {IProtocolVersion} from \\\"../utils/versioning/IProtocolVersion.sol\\\";\\nimport {ProtocolVersion} from \\\"../utils/versioning/ProtocolVersion.sol\\\";\\nimport {DaoAuthorizableUpgradeable} from \\\"../permission/auth/DaoAuthorizableUpgradeable.sol\\\";\\nimport {IDAO} from \\\"../dao/IDAO.sol\\\";\\nimport {IPlugin} from \\\"./IPlugin.sol\\\";\\n\\n/// @title PluginUUPSUpgradeable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract, upgradeable contract to inherit from when creating a plugin being deployed via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract PluginUUPSUpgradeable is\\n IPlugin,\\n ERC165Upgradeable,\\n UUPSUpgradeable,\\n DaoAuthorizableUpgradeable,\\n ProtocolVersion\\n{\\n // NOTE: When adding new state variables to the contract, the size of `_gap` has to be adapted below as well.\\n address public target;\\n\\n /// @dev Emitted each time the Target is set.\\n event TargetSet(address indexed previousTarget, address indexed newTarget);\\n\\n /// @notice Disables the initializers on the implementation contract to prevent it from being left uninitialized.\\n /// @custom:oz-upgrades-unsafe-allow constructor\\n constructor() {\\n _disableInitializers();\\n }\\n\\n /// @inheritdoc IPlugin\\n function pluginType() public pure override returns (PluginType) {\\n return PluginType.UUPS;\\n }\\n\\n /// @notice The ID of the permission required to call the `_authorizeUpgrade` function.\\n bytes32 public constant UPGRADE_PLUGIN_PERMISSION_ID = keccak256(\\\"UPGRADE_PLUGIN_PERMISSION\\\");\\n\\n /// @notice Initializes the plugin by storing the associated DAO.\\n /// @param _dao The DAO contract.\\n // solhint-disable-next-line func-name-mixedcase\\n function __PluginUUPSUpgradeable_init(IDAO _dao) internal virtual onlyInitializing {\\n __DaoAuthorizableUpgradeable_init(_dao);\\n }\\n\\n /// @dev Sets the target to a new target (`newTarget`).\\n /// @notice Can only be called by the current owner. TODO\\n function setTarget(address _target) public {\\n address previousTarget = target;\\n target = _target;\\n emit TargetSet(previousTarget, _target);\\n }\\n\\n /// @notice Checks if an interface is supported by this or its parent contract.\\n /// @param _interfaceId The ID of the interface.\\n /// @return Returns `true` if the interface is supported.\\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\\n return\\n _interfaceId == type(IPlugin).interfaceId ||\\n _interfaceId == type(IProtocolVersion).interfaceId ||\\n _interfaceId == type(IERC1822ProxiableUpgradeable).interfaceId ||\\n super.supportsInterface(_interfaceId);\\n }\\n\\n /// @notice Returns the address of the implementation contract in the [proxy storage slot](https://eips.ethereum.org/EIPS/eip-1967) slot the [UUPS proxy](https://eips.ethereum.org/EIPS/eip-1822) is pointing to.\\n /// @return The address of the implementation contract.\\n function implementation() public view returns (address) {\\n return _getImplementation();\\n }\\n\\n /// @notice Forwards the actions to the currently set `target` for the execution.\\n /// @param _callId Identifier for this execution.\\n /// @param _actions actions that will be eventually called.\\n /// @param _allowFailureMap Bitmap-encoded number. TODO:\\n /// @return execResults address of the implementation contract.\\n /// @return failureMap address of the implementation contract.\\n function _execute(\\n bytes32 _callId,\\n IDAO.Action[] calldata _actions,\\n uint256 _allowFailureMap\\n ) internal virtual returns (bytes[] memory execResults, uint256 failureMap) {\\n (execResults, failureMap) = IDAO(target).execute(_callId, _actions, _allowFailureMap);\\n }\\n\\n /// @notice Forwards the actions to the `target` for the execution.\\n /// @param _target Forwards the actions to the specific target.\\n /// @param _callId Identifier for this execution.\\n /// @param _actions actions that will be eventually called.\\n /// @param _allowFailureMap Bitmap-encoded number. TODO:\\n /// @return execResults address of the implementation contract.\\n /// @return failureMap address of the implementation contract.\\n function _execute(\\n address _target,\\n bytes32 _callId,\\n IDAO.Action[] calldata _actions,\\n uint256 _allowFailureMap\\n ) internal virtual returns (bytes[] memory execResults, uint256 failureMap) {\\n (execResults, failureMap) = IDAO(_target).execute(_callId, _actions, _allowFailureMap);\\n }\\n\\n /// @notice Internal method authorizing the upgrade of the contract via the [upgradeability mechanism for UUPS proxies](https://docs.openzeppelin.com/contracts/4.x/api/proxy#UUPSUpgradeable) (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\\n /// @dev The caller must have the `UPGRADE_PLUGIN_PERMISSION_ID` permission.\\n function _authorizeUpgrade(\\n address\\n )\\n internal\\n virtual\\n override\\n auth(UPGRADE_PLUGIN_PERMISSION_ID)\\n // solhint-disable-next-line no-empty-blocks\\n {\\n\\n }\\n\\n /// @notice This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain (see [OpenZeppelin's guide about storage gaps](https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps)).\\n uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0xce1d0126b3ae8c8afc887fba9f49b1cc35f84f1c1d5bf4cadee330c7ae15014f\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/IProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IProtocolVersion\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the semantic Aragon OSx protocol version number.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IProtocolVersion {\\n /// @notice Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\\n /// @return _version Returns the semantic Aragon OSx protocol version number.\\n /// @dev This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\\n function protocolVersion() external view returns (uint8[3] memory _version);\\n}\\n\",\"keccak256\":\"0x00a4da654d21dc1bdadbdc8bd54bb86c378c56f85e461ccc31303628ea621361\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/ProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IProtocolVersion} from \\\"./IProtocolVersion.sol\\\";\\n\\n/// @title ProtocolVersion\\n/// @author Aragon X - 2023\\n/// @notice An abstract, stateless, non-upgradeable contract providing the current Aragon OSx protocol version number.\\n/// @dev Do not add any new variables to this contract that would shift down storage in the inheritance chain.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract ProtocolVersion is IProtocolVersion {\\n // IMPORTANT: Do not add any storage variable, see the above notice.\\n\\n /// @inheritdoc IProtocolVersion\\n function protocolVersion() public pure returns (uint8[3] memory) {\\n return [1, 4, 0];\\n }\\n}\\n\",\"keccak256\":\"0x3975c937be935f687c6b6b8f379071232681e98cf04b175d72781b819ea52bdb\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[{"astId":372,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild1","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":375,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild1","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":1280,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild1","label":"__gap","offset":0,"slot":"1","type":"t_array(t_uint256)50_storage"},{"astId":354,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild1","label":"__gap","offset":0,"slot":"51","type":"t_array(t_uint256)50_storage"},{"astId":670,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild1","label":"__gap","offset":0,"slot":"101","type":"t_array(t_uint256)50_storage"},{"astId":1051,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild1","label":"__gap","offset":0,"slot":"151","type":"t_array(t_uint256)50_storage"},{"astId":3887,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild1","label":"dao_","offset":0,"slot":"201","type":"t_contract(IDAO)2538"},{"astId":3936,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild1","label":"__gap","offset":0,"slot":"202","type":"t_array(t_uint256)49_storage"},{"astId":4382,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild1","label":"target","offset":0,"slot":"251","type":"t_address"},{"astId":4575,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild1","label":"__gap","offset":0,"slot":"252","type":"t_array(t_uint256)49_storage"},{"astId":3119,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild1","label":"state1","offset":0,"slot":"301","type":"t_uint256"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_array(t_uint256)49_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[49]","numberOfBytes":"1568"},"t_array(t_uint256)50_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[50]","numberOfBytes":"1600"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_contract(IDAO)2538":{"encoding":"inplace","label":"contract IDAO","numberOfBytes":"20"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"errors":{"DaoUnauthorized(address,address,address,bytes32)":[{"notice":"Thrown if a call is unauthorized in the associated DAO."}]},"kind":"user","methods":{"UPGRADE_PLUGIN_PERMISSION_ID()":{"notice":"The ID of the permission required to call the `_authorizeUpgrade` function."},"dao()":{"notice":"Returns the DAO contract."},"implementation()":{"notice":"Returns the address of the implementation contract in the [proxy storage slot](https://eips.ethereum.org/EIPS/eip-1967) slot the [UUPS proxy](https://eips.ethereum.org/EIPS/eip-1822) is pointing to."},"pluginType()":{"notice":"Returns the plugin's type"},"protocolVersion()":{"notice":"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with."},"setTarget(address)":{"notice":"Can only be called by the current owner. TODO"},"supportsInterface(bytes4)":{"notice":"Checks if an interface is supported by this or its parent contract."}},"notice":"A mock upgradeable plugin to be deployed via the UUPS proxy pattern. v1.1 (Release 1, Build 1)","version":1}},"PluginUUPSUpgradeableMockBuild2":{"abi":[{"inputs":[{"internalType":"address","name":"dao","type":"address"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"name":"DaoUnauthorized","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"beacon","type":"address"}],"name":"BeaconUpgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousTarget","type":"address"},{"indexed":true,"internalType":"address","name":"newTarget","type":"address"}],"name":"TargetSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"inputs":[],"name":"UPGRADE_PLUGIN_PERMISSION_ID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dao","outputs":[{"internalType":"contract IDAO","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IDAO","name":"_dao","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"_previousBuild","type":"uint16"}],"name":"initializeFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pluginType","outputs":[{"internalType":"enum IPlugin.PluginType","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"protocolVersion","outputs":[{"internalType":"uint8[3]","name":"","type":"uint8[3]"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_target","type":"address"}],"name":"setTarget","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"state1","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"state2","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"target","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"}],"name":"upgradeTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"}],"devdoc":{"details":"DO NOT USE IN PRODUCTION!","errors":{"DaoUnauthorized(address,address,address,bytes32)":[{"params":{"dao":"The associated DAO.","permissionId":"The permission identifier.","where":"The context in which the authorization reverted.","who":"The address (EOA or contract) missing the permission."}}]},"kind":"dev","methods":{"dao()":{"returns":{"_0":"The DAO contract."}},"implementation()":{"returns":{"_0":"The address of the implementation contract."}},"protocolVersion()":{"details":"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.","returns":{"_0":"Returns the semantic Aragon OSx protocol version number."}},"proxiableUUID()":{"details":"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier."},"setTarget(address)":{"details":"Sets the target to a new target (`newTarget`)."},"supportsInterface(bytes4)":{"params":{"_interfaceId":"The ID of the interface."},"returns":{"_0":"Returns `true` if the interface is supported."}},"upgradeTo(address)":{"custom:oz-upgrades-unsafe-allow-reachable":"delegatecall","details":"Upgrade the implementation of the proxy to `newImplementation`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."},"upgradeToAndCall(address,bytes)":{"custom:oz-upgrades-unsafe-allow-reachable":"delegatecall","details":"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."}},"version":1},"evm":{"bytecode":{"functionDebugData":{"@_4397":{"entryPoint":null,"id":4397,"parameterSlots":0,"returnSlots":0},"@_disableInitializers_515":{"entryPoint":34,"id":515,"parameterSlots":0,"returnSlots":0},"abi_encode_tuple_t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:608:50","statements":[{"nodeType":"YulBlock","src":"6:3:50","statements":[]},{"body":{"nodeType":"YulBlock","src":"188:229:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"205:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"216:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"198:6:50"},"nodeType":"YulFunctionCall","src":"198:21:50"},"nodeType":"YulExpressionStatement","src":"198:21:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"239:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"250:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"235:3:50"},"nodeType":"YulFunctionCall","src":"235:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"255:2:50","type":"","value":"39"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"228:6:50"},"nodeType":"YulFunctionCall","src":"228:30:50"},"nodeType":"YulExpressionStatement","src":"228:30:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"278:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"289:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"274:3:50"},"nodeType":"YulFunctionCall","src":"274:18:50"},{"hexValue":"496e697469616c697a61626c653a20636f6e747261637420697320696e697469","kind":"string","nodeType":"YulLiteral","src":"294:34:50","type":"","value":"Initializable: contract is initi"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"267:6:50"},"nodeType":"YulFunctionCall","src":"267:62:50"},"nodeType":"YulExpressionStatement","src":"267:62:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"349:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"360:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"345:3:50"},"nodeType":"YulFunctionCall","src":"345:18:50"},{"hexValue":"616c697a696e67","kind":"string","nodeType":"YulLiteral","src":"365:9:50","type":"","value":"alizing"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"338:6:50"},"nodeType":"YulFunctionCall","src":"338:37:50"},"nodeType":"YulExpressionStatement","src":"338:37:50"},{"nodeType":"YulAssignment","src":"384:27:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"396:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"407:3:50","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"392:3:50"},"nodeType":"YulFunctionCall","src":"392:19:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"384:4:50"}]}]},"name":"abi_encode_tuple_t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"165:9:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"179:4:50","type":""}],"src":"14:403:50"},{"body":{"nodeType":"YulBlock","src":"519:87:50","statements":[{"nodeType":"YulAssignment","src":"529:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"541:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"552:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"537:3:50"},"nodeType":"YulFunctionCall","src":"537:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"529:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"571:9:50"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"586:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"594:4:50","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"582:3:50"},"nodeType":"YulFunctionCall","src":"582:17:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"564:6:50"},"nodeType":"YulFunctionCall","src":"564:36:50"},"nodeType":"YulExpressionStatement","src":"564:36:50"}]},"name":"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"488:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"499:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"510:4:50","type":""}],"src":"422:184:50"}]},"contents":"{\n { }\n function abi_encode_tuple_t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 39)\n mstore(add(headStart, 64), \"Initializable: contract is initi\")\n mstore(add(headStart, 96), \"alizing\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xff))\n }\n}","id":50,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60a06040523060805234801561001457600080fd5b5061001d610022565b6100e1565b600054610100900460ff161561008e5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116146100df576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6080516112d961011860003960008181610479015281816104fe015281816105f401528181610679015261076301526112d96000f3fe6080604052600436106100e85760003560e01c806352d1902d1161008a578063c4d66de811610059578063c4d66de814610256578063c9c4bfca14610276578063d4b83992146102aa578063efe51cca146102ca57600080fd5b806352d1902d146101e75780635c60da1b1461020a5780636accab8c1461021f578063776d1a011461023657600080fd5b80633659cfe6116100c65780633659cfe6146101665780634162169f1461018657806341de6830146101b85780634f1ef286146101d457600080fd5b806301ffc9a7146100ed578063039a8c50146101225780632ae9c60014610144575b600080fd5b3480156100f957600080fd5b5061010d610108366004610fed565b6102e1565b60405190151581526020015b60405180910390f35b34801561012e57600080fd5b5061014261013d366004611017565b61034d565b005b34801561015057600080fd5b50610159610445565b604051610119919061103b565b34801561017257600080fd5b50610142610181366004611084565b61046f565b34801561019257600080fd5b5060c9546001600160a01b03165b6040516001600160a01b039091168152602001610119565b3480156101c457600080fd5b50600060405161011991906110a1565b6101426101e23660046110df565b6105ea565b3480156101f357600080fd5b506101fc610756565b604051908152602001610119565b34801561021657600080fd5b506101a061081b565b34801561022b57600080fd5b506101fc61012d5481565b34801561024257600080fd5b50610142610251366004611084565b610853565b34801561026257600080fd5b50610142610271366004611084565b6108b2565b34801561028257600080fd5b506101fc7f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f581565b3480156102b657600080fd5b5060fb546101a0906001600160a01b031681565b3480156102d657600080fd5b506101fc61012e5481565b60006001600160e01b0319821663041de68360e41b148061031157506001600160e01b03198216621574e360e91b145b8061032c57506001600160e01b031982166352d1902d60e01b145b8061034757506301ffc9a760e01b6001600160e01b03198316145b92915050565b600054600290610100900460ff1615801561036f575060005460ff8083169116105b6103d75760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805461ffff191660ff831617610100179055600261ffff831610156103ff57600261012e555b6000805461ff001916905560405160ff821681527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b61044d610fcf565b5060408051606081018252600181526004602082015260009181019190915290565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036104fc5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b60648201526084016103ce565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166105577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b0316146105c25760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b60648201526084016103ce565b6105cb8161099e565b604080516000808252602082019092526105e7918391906109db565b50565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036106775760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b60648201526084016103ce565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166106d27f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b03161461073d5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b60648201526084016103ce565b6107468261099e565b610752828260016109db565b5050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146107f65760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016103ce565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b600061084e7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b60fb80546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d690600090a35050565b600054600290610100900460ff161580156108d4575060005460ff8083169116105b6109375760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016103ce565b6000805461ffff191660ff83161761010017905561095482610b80565b600161012d55600261012e556000805461ff001916905560405160ff821681527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602001610439565b60c9547f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f590610752906001600160a01b0316303384600036610bf4565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610a1357610a0e83610cb0565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610a6d575060408051601f3d908101601f19168201909252610a6a918101906111a3565b60015b610adf5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201527f6f6e206973206e6f74205555505300000000000000000000000000000000000060648201526084016103ce565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114610b745760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f7860448201527f6961626c6555554944000000000000000000000000000000000000000000000060648201526084016103ce565b50610a0e838383610d7b565b600054610100900460ff16610beb5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103ce565b6105e781610da6565b604051637ef7c88360e11b81526001600160a01b0387169063fdef910690610c2890889088908890889088906004016111bc565b602060405180830381865afa158015610c45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c699190611210565b610ca857604051630cb6f8ed60e21b81526001600160a01b038088166004830152808716602483015285166044820152606481018490526084016103ce565b505050505050565b6001600160a01b0381163b610d2d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e74726163740000000000000000000000000000000000000060648201526084016103ce565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610d8483610e40565b600082511180610d915750805b15610a0e57610da08383610e80565b50505050565b600054610100900460ff16610e115760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103ce565b60c9805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610e4981610cb0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060610ea583836040518060600160405280602781526020016112a660279139610eac565b9392505050565b6060600080856001600160a01b031685604051610ec99190611256565b600060405180830381855af49150503d8060008114610f04576040519150601f19603f3d011682016040523d82523d6000602084013e610f09565b606091505b5091509150610f1a86838387610f24565b9695505050505050565b60608315610f93578251600003610f8c576001600160a01b0385163b610f8c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016103ce565b5081610f9d565b610f9d8383610fa5565b949350505050565b815115610fb55781518083602001fd5b8060405162461bcd60e51b81526004016103ce9190611272565b60405180606001604052806003906020820280368337509192915050565b600060208284031215610fff57600080fd5b81356001600160e01b031981168114610ea557600080fd5b60006020828403121561102957600080fd5b813561ffff81168114610ea557600080fd5b60608101818360005b600381101561106657815160ff16835260209283019290910190600101611044565b50505092915050565b6001600160a01b03811681146105e757600080fd5b60006020828403121561109657600080fd5b8135610ea58161106f565b60208101600383106110c357634e487b7160e01b600052602160045260246000fd5b91905290565b634e487b7160e01b600052604160045260246000fd5b600080604083850312156110f257600080fd5b82356110fd8161106f565b9150602083013567ffffffffffffffff8082111561111a57600080fd5b818501915085601f83011261112e57600080fd5b813581811115611140576111406110c9565b604051601f8201601f19908116603f01168101908382118183101715611168576111686110c9565b8160405282815288602084870101111561118157600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6000602082840312156111b557600080fd5b5051919050565b60006001600160a01b03808816835280871660208401525084604083015260806060830152826080830152828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b60006020828403121561122257600080fd5b81518015158114610ea557600080fd5b60005b8381101561124d578181015183820152602001611235565b50506000910152565b60008251611268818460208701611232565b9190910192915050565b6020815260008251806020840152611291816040850160208701611232565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a","opcodes":"PUSH1 0xA0 PUSH1 0x40 MSTORE ADDRESS PUSH1 0x80 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x14 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1D PUSH2 0x22 JUMP JUMPDEST PUSH2 0xE1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x8E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x27 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320696E697469 PUSH1 0x44 DUP3 ADD MSTORE PUSH7 0x616C697A696E67 PUSH1 0xC8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xFF SWAP1 DUP2 AND EQ PUSH2 0xDF JUMPI PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH2 0x12D9 PUSH2 0x118 PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH2 0x479 ADD MSTORE DUP2 DUP2 PUSH2 0x4FE ADD MSTORE DUP2 DUP2 PUSH2 0x5F4 ADD MSTORE DUP2 DUP2 PUSH2 0x679 ADD MSTORE PUSH2 0x763 ADD MSTORE PUSH2 0x12D9 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xE8 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x52D1902D GT PUSH2 0x8A JUMPI DUP1 PUSH4 0xC4D66DE8 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0x256 JUMPI DUP1 PUSH4 0xC9C4BFCA EQ PUSH2 0x276 JUMPI DUP1 PUSH4 0xD4B83992 EQ PUSH2 0x2AA JUMPI DUP1 PUSH4 0xEFE51CCA EQ PUSH2 0x2CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x52D1902D EQ PUSH2 0x1E7 JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0x20A JUMPI DUP1 PUSH4 0x6ACCAB8C EQ PUSH2 0x21F JUMPI DUP1 PUSH4 0x776D1A01 EQ PUSH2 0x236 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x3659CFE6 GT PUSH2 0xC6 JUMPI DUP1 PUSH4 0x3659CFE6 EQ PUSH2 0x166 JUMPI DUP1 PUSH4 0x4162169F EQ PUSH2 0x186 JUMPI DUP1 PUSH4 0x41DE6830 EQ PUSH2 0x1B8 JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x1D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xED JUMPI DUP1 PUSH4 0x39A8C50 EQ PUSH2 0x122 JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0x144 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xF9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x10D PUSH2 0x108 CALLDATASIZE PUSH1 0x4 PUSH2 0xFED JUMP JUMPDEST PUSH2 0x2E1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x12E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x142 PUSH2 0x13D CALLDATASIZE PUSH1 0x4 PUSH2 0x1017 JUMP JUMPDEST PUSH2 0x34D JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x150 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x159 PUSH2 0x445 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x119 SWAP2 SWAP1 PUSH2 0x103B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x172 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x142 PUSH2 0x181 CALLDATASIZE PUSH1 0x4 PUSH2 0x1084 JUMP JUMPDEST PUSH2 0x46F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x192 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xC9 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x119 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 PUSH1 0x40 MLOAD PUSH2 0x119 SWAP2 SWAP1 PUSH2 0x10A1 JUMP JUMPDEST PUSH2 0x142 PUSH2 0x1E2 CALLDATASIZE PUSH1 0x4 PUSH2 0x10DF JUMP JUMPDEST PUSH2 0x5EA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FC PUSH2 0x756 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x119 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x216 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1A0 PUSH2 0x81B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x22B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FC PUSH2 0x12D SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x242 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x142 PUSH2 0x251 CALLDATASIZE PUSH1 0x4 PUSH2 0x1084 JUMP JUMPDEST PUSH2 0x853 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x262 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x142 PUSH2 0x271 CALLDATASIZE PUSH1 0x4 PUSH2 0x1084 JUMP JUMPDEST PUSH2 0x8B2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x282 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FC PUSH32 0x821B6E3A557148015A918C89E5D092E878A69854A2D1A410635F771BD5A8A3F5 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xFB SLOAD PUSH2 0x1A0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FC PUSH2 0x12E SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x41DE683 PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x311 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x32C JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x52D1902D PUSH1 0xE0 SHL EQ JUMPDEST DUP1 PUSH2 0x347 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x2 SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH2 0x36F JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF DUP1 DUP4 AND SWAP2 AND LT JUMPDEST PUSH2 0x3D7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x44 DUP3 ADD MSTORE PUSH14 0x191E481A5B9A5D1A585B1A5E9959 PUSH1 0x92 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH2 0xFFFF NOT AND PUSH1 0xFF DUP4 AND OR PUSH2 0x100 OR SWAP1 SSTORE PUSH1 0x2 PUSH2 0xFFFF DUP4 AND LT ISZERO PUSH2 0x3FF JUMPI PUSH1 0x2 PUSH2 0x12E SSTORE JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH1 0xFF DUP3 AND DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH2 0x44D PUSH2 0xFCF JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x4FC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x19195B1959D85D1958D85B1B PUSH1 0xA2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3CE JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x557 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x5C2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x6163746976652070726F7879 PUSH1 0xA0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3CE JUMP JUMPDEST PUSH2 0x5CB DUP2 PUSH2 0x99E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x5E7 SWAP2 DUP4 SWAP2 SWAP1 PUSH2 0x9DB JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x677 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x19195B1959D85D1958D85B1B PUSH1 0xA2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3CE JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x6D2 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x73D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x6163746976652070726F7879 PUSH1 0xA0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3CE JUMP JUMPDEST PUSH2 0x746 DUP3 PUSH2 0x99E JUMP JUMPDEST PUSH2 0x752 DUP3 DUP3 PUSH1 0x1 PUSH2 0x9DB JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x7F6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x38 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x555550535570677261646561626C653A206D757374206E6F742062652063616C PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6C6564207468726F7567682064656C656761746563616C6C0000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3CE JUMP JUMPDEST POP PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x84E PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0xFB DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP2 SWAP1 DUP3 SWAP1 PUSH32 0x90CC2F570A6EB594B1580EA3E41247D2D73A55281889E86BD4EC2FC29C7E62D6 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x2 SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH2 0x8D4 JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF DUP1 DUP4 AND SWAP2 AND LT JUMPDEST PUSH2 0x937 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x44 DUP3 ADD MSTORE PUSH14 0x191E481A5B9A5D1A585B1A5E9959 PUSH1 0x92 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3CE JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH2 0xFFFF NOT AND PUSH1 0xFF DUP4 AND OR PUSH2 0x100 OR SWAP1 SSTORE PUSH2 0x954 DUP3 PUSH2 0xB80 JUMP JUMPDEST PUSH1 0x1 PUSH2 0x12D SSTORE PUSH1 0x2 PUSH2 0x12E SSTORE PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH1 0xFF DUP3 AND DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH2 0x439 JUMP JUMPDEST PUSH1 0xC9 SLOAD PUSH32 0x821B6E3A557148015A918C89E5D092E878A69854A2D1A410635F771BD5A8A3F5 SWAP1 PUSH2 0x752 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ADDRESS CALLER DUP5 PUSH1 0x0 CALLDATASIZE PUSH2 0xBF4 JUMP JUMPDEST PUSH32 0x4910FDFA16FED3260ED0E7147F7CC6DA11A60208B5B9406D12A635614FFD9143 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0xA13 JUMPI PUSH2 0xA0E DUP4 PUSH2 0xCB0 JUMP JUMPDEST POP POP POP JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x52D1902D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0xA6D JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0xA6A SWAP2 DUP2 ADD SWAP1 PUSH2 0x11A3 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0xADF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524331393637557067726164653A206E657720696D706C656D656E74617469 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F6E206973206E6F742055555053000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3CE JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC DUP2 EQ PUSH2 0xB74 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524331393637557067726164653A20756E737570706F727465642070726F78 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6961626C65555549440000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3CE JUMP JUMPDEST POP PUSH2 0xA0E DUP4 DUP4 DUP4 PUSH2 0xD7B JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0xBEB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3CE JUMP JUMPDEST PUSH2 0x5E7 DUP2 PUSH2 0xDA6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x7EF7C883 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0xFDEF9106 SWAP1 PUSH2 0xC28 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x11BC JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC45 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xC69 SWAP2 SWAP1 PUSH2 0x1210 JUMP JUMPDEST PUSH2 0xCA8 JUMPI PUSH1 0x40 MLOAD PUSH4 0xCB6F8ED PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND PUSH1 0x4 DUP4 ADD MSTORE DUP1 DUP8 AND PUSH1 0x24 DUP4 ADD MSTORE DUP6 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x84 ADD PUSH2 0x3CE JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND EXTCODESIZE PUSH2 0xD2D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313936373A206E657720696D706C656D656E746174696F6E206973206E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F74206120636F6E747261637400000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3CE JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xD84 DUP4 PUSH2 0xE40 JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD GT DUP1 PUSH2 0xD91 JUMPI POP DUP1 JUMPDEST ISZERO PUSH2 0xA0E JUMPI PUSH2 0xDA0 DUP4 DUP4 PUSH2 0xE80 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0xE11 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3CE JUMP JUMPDEST PUSH1 0xC9 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xE49 DUP2 PUSH2 0xCB0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xEA5 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x12A6 PUSH1 0x27 SWAP2 CODECOPY PUSH2 0xEAC JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0xEC9 SWAP2 SWAP1 PUSH2 0x1256 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xF04 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xF09 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0xF1A DUP7 DUP4 DUP4 DUP8 PUSH2 0xF24 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0xF93 JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0xF8C JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0xF8C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3CE JUMP JUMPDEST POP DUP2 PUSH2 0xF9D JUMP JUMPDEST PUSH2 0xF9D DUP4 DUP4 PUSH2 0xFA5 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0xFB5 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3CE SWAP2 SWAP1 PUSH2 0x1272 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xFFF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0xEA5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1029 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH2 0xEA5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0x1066 JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x1044 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x5E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1096 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xEA5 DUP2 PUSH2 0x106F JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH1 0x3 DUP4 LT PUSH2 0x10C3 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 SWAP1 MSTORE SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x10F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x10FD DUP2 PUSH2 0x106F JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x111A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x112E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x1140 JUMPI PUSH2 0x1140 PUSH2 0x10C9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x1168 JUMPI PUSH2 0x1168 PUSH2 0x10C9 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x1181 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x11B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND DUP4 MSTORE DUP1 DUP8 AND PUSH1 0x20 DUP5 ADD MSTORE POP DUP5 PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x80 PUSH1 0x60 DUP4 ADD MSTORE DUP3 PUSH1 0x80 DUP4 ADD MSTORE DUP3 DUP5 PUSH1 0xA0 DUP5 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0xA0 DUP5 DUP5 ADD ADD MSTORE PUSH1 0xA0 PUSH1 0x1F NOT PUSH1 0x1F DUP6 ADD AND DUP4 ADD ADD SWAP1 POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1222 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xEA5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x124D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1235 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x1268 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x1232 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x1291 DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x1232 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A164 PUSH20 0x6F6C6343000811000A0000000000000000000000 ","sourceMap":"755:431:31:-:0;;;1198:4:5;1155:48;;755:431:31;;;;;;;;;-1:-1:-1;1647:22:40;:20;:22::i;:::-;755:431:31;;5939:280:4;6007:13;;;;;;;6006:14;5998:66;;;;-1:-1:-1;;;5998:66:4;;216:2:50;5998:66:4;;;198:21:50;255:2;235:18;;;228:30;294:34;274:18;;;267:62;-1:-1:-1;;;345:18:50;;;338:37;392:19;;5998:66:4;;;;;;;;6078:12;;6094:15;6078:12;;;:31;6074:139;;6125:12;:30;;-1:-1:-1;;6125:30:4;6140:15;6125:30;;;;;;6174:28;;564:36:50;;;6174:28:4;;552:2:50;537:18;6174:28:4;;;;;;;6074:139;5939:280::o;422:184:50:-;755:431:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@UPGRADE_PLUGIN_PERMISSION_ID_4415":{"entryPoint":null,"id":4415,"parameterSlots":0,"returnSlots":0},"@__DaoAuthorizableUpgradeable_init_3901":{"entryPoint":3494,"id":3901,"parameterSlots":1,"returnSlots":0},"@__PluginUUPSUpgradeable_init_4429":{"entryPoint":2944,"id":4429,"parameterSlots":1,"returnSlots":0},"@_auth_3987":{"entryPoint":3060,"id":3987,"parameterSlots":6,"returnSlots":0},"@_authorizeUpgrade_4570":{"entryPoint":2462,"id":4570,"parameterSlots":1,"returnSlots":0},"@_getImplementation_76":{"entryPoint":null,"id":76,"parameterSlots":0,"returnSlots":1},"@_msgData_1038":{"entryPoint":null,"id":1038,"parameterSlots":0,"returnSlots":2},"@_msgSender_1029":{"entryPoint":null,"id":1029,"parameterSlots":0,"returnSlots":1},"@_revert_1000":{"entryPoint":4005,"id":1000,"parameterSlots":2,"returnSlots":0},"@_setImplementation_100":{"entryPoint":3248,"id":100,"parameterSlots":1,"returnSlots":0},"@_upgradeToAndCallUUPS_198":{"entryPoint":2523,"id":198,"parameterSlots":3,"returnSlots":0},"@_upgradeToAndCall_145":{"entryPoint":3451,"id":145,"parameterSlots":3,"returnSlots":0},"@_upgradeTo_115":{"entryPoint":3648,"id":115,"parameterSlots":1,"returnSlots":0},"@dao_3911":{"entryPoint":null,"id":3911,"parameterSlots":0,"returnSlots":1},"@functionDelegateCall_888":{"entryPoint":3712,"id":888,"parameterSlots":2,"returnSlots":1},"@functionDelegateCall_917":{"entryPoint":3756,"id":917,"parameterSlots":3,"returnSlots":1},"@getAddressSlot_1158":{"entryPoint":null,"id":1158,"parameterSlots":1,"returnSlots":1},"@getBooleanSlot_1169":{"entryPoint":null,"id":1169,"parameterSlots":1,"returnSlots":1},"@implementation_4495":{"entryPoint":2075,"id":4495,"parameterSlots":0,"returnSlots":1},"@initializeFrom_3184":{"entryPoint":845,"id":3184,"parameterSlots":1,"returnSlots":0},"@initialize_3166":{"entryPoint":2226,"id":3166,"parameterSlots":1,"returnSlots":0},"@isContract_689":{"entryPoint":null,"id":689,"parameterSlots":1,"returnSlots":1},"@pluginType_4409":{"entryPoint":null,"id":4409,"parameterSlots":0,"returnSlots":1},"@protocolVersion_5135":{"entryPoint":1093,"id":5135,"parameterSlots":0,"returnSlots":1},"@proxiableUUID_616":{"entryPoint":1878,"id":616,"parameterSlots":0,"returnSlots":1},"@setTarget_4449":{"entryPoint":2131,"id":4449,"parameterSlots":1,"returnSlots":0},"@state1_3142":{"entryPoint":null,"id":3142,"parameterSlots":0,"returnSlots":0},"@state2_3144":{"entryPoint":null,"id":3144,"parameterSlots":0,"returnSlots":0},"@supportsInterface_1275":{"entryPoint":null,"id":1275,"parameterSlots":1,"returnSlots":1},"@supportsInterface_4485":{"entryPoint":737,"id":4485,"parameterSlots":1,"returnSlots":1},"@target_4382":{"entryPoint":null,"id":4382,"parameterSlots":0,"returnSlots":0},"@upgradeToAndCall_659":{"entryPoint":1514,"id":659,"parameterSlots":2,"returnSlots":0},"@upgradeTo_638":{"entryPoint":1135,"id":638,"parameterSlots":1,"returnSlots":0},"@verifyCallResultFromTarget_956":{"entryPoint":3876,"id":956,"parameterSlots":4,"returnSlots":1},"abi_decode_tuple_t_address":{"entryPoint":4228,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_bytes_memory_ptr":{"entryPoint":4319,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_bool_fromMemory":{"entryPoint":4624,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes32_fromMemory":{"entryPoint":4515,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes4":{"entryPoint":4077,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_contract$_IDAO_$2538":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint16":{"entryPoint":4119,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":4694,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address_t_address_t_address_t_bytes32__to_t_address_t_address_t_address_t_bytes32__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":5,"returnSlots":1},"abi_encode_tuple_t_address_t_address_t_bytes32_t_bytes_calldata_ptr__to_t_address_t_address_t_bytes32_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":4540,"id":null,"parameterSlots":6,"returnSlots":1},"abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed":{"entryPoint":4155,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_contract$_IDAO_$2538__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_enum$_PluginType_$3994__to_t_uint8__fromStack_reversed":{"entryPoint":4257,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":4722,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_36e108fa7a809b52ab1951dd91c117a7bc9ac5250bdf1aa162d4e104f7edf9eb__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_52f1ead4d9653e13afbd2e90ef2587c30187cd50b2e97d784e3f7a7541247434__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_67f0151b4ad1dcfa0e3302a0cd6019f51582ef1807b37dceb00bd852a514f7f4__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_76b6b6debfc5febf101145a79ecf0b0d2e89e397dfdab2bca99888370411152c__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_8e8e2fbcb586f700b5b14e2c4a650c8d83b9773c31c5fe8962070ea544e11f24__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"copy_memory_to_memory_with_cleanup":{"entryPoint":4658,"id":null,"parameterSlots":3,"returnSlots":0},"panic_error_0x41":{"entryPoint":4297,"id":null,"parameterSlots":0,"returnSlots":0},"validator_revert_address":{"entryPoint":4207,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:10790:50","statements":[{"nodeType":"YulBlock","src":"6:3:50","statements":[]},{"body":{"nodeType":"YulBlock","src":"83:217:50","statements":[{"body":{"nodeType":"YulBlock","src":"129:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"138:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"141:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"131:6:50"},"nodeType":"YulFunctionCall","src":"131:12:50"},"nodeType":"YulExpressionStatement","src":"131:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"104:7:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"113:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"100:3:50"},"nodeType":"YulFunctionCall","src":"100:23:50"},{"kind":"number","nodeType":"YulLiteral","src":"125:2:50","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"96:3:50"},"nodeType":"YulFunctionCall","src":"96:32:50"},"nodeType":"YulIf","src":"93:52:50"},{"nodeType":"YulVariableDeclaration","src":"154:36:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"180:9:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"167:12:50"},"nodeType":"YulFunctionCall","src":"167:23:50"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"158:5:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"254:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"263:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"266:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"256:6:50"},"nodeType":"YulFunctionCall","src":"256:12:50"},"nodeType":"YulExpressionStatement","src":"256:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"212:5:50"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"223:5:50"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"234:3:50","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"239:10:50","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"230:3:50"},"nodeType":"YulFunctionCall","src":"230:20:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"219:3:50"},"nodeType":"YulFunctionCall","src":"219:32:50"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"209:2:50"},"nodeType":"YulFunctionCall","src":"209:43:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"202:6:50"},"nodeType":"YulFunctionCall","src":"202:51:50"},"nodeType":"YulIf","src":"199:71:50"},{"nodeType":"YulAssignment","src":"279:15:50","value":{"name":"value","nodeType":"YulIdentifier","src":"289:5:50"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"279:6:50"}]}]},"name":"abi_decode_tuple_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"49:9:50","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"60:7:50","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"72:6:50","type":""}],"src":"14:286:50"},{"body":{"nodeType":"YulBlock","src":"400:92:50","statements":[{"nodeType":"YulAssignment","src":"410:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"422:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"433:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"418:3:50"},"nodeType":"YulFunctionCall","src":"418:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"410:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"452:9:50"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"477:6:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"470:6:50"},"nodeType":"YulFunctionCall","src":"470:14:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"463:6:50"},"nodeType":"YulFunctionCall","src":"463:22:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"445:6:50"},"nodeType":"YulFunctionCall","src":"445:41:50"},"nodeType":"YulExpressionStatement","src":"445:41:50"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"369:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"380:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"391:4:50","type":""}],"src":"305:187:50"},{"body":{"nodeType":"YulBlock","src":"566:203:50","statements":[{"body":{"nodeType":"YulBlock","src":"612:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"621:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"624:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"614:6:50"},"nodeType":"YulFunctionCall","src":"614:12:50"},"nodeType":"YulExpressionStatement","src":"614:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"587:7:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"596:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"583:3:50"},"nodeType":"YulFunctionCall","src":"583:23:50"},{"kind":"number","nodeType":"YulLiteral","src":"608:2:50","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"579:3:50"},"nodeType":"YulFunctionCall","src":"579:32:50"},"nodeType":"YulIf","src":"576:52:50"},{"nodeType":"YulVariableDeclaration","src":"637:36:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"663:9:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"650:12:50"},"nodeType":"YulFunctionCall","src":"650:23:50"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"641:5:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"723:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"732:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"735:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"725:6:50"},"nodeType":"YulFunctionCall","src":"725:12:50"},"nodeType":"YulExpressionStatement","src":"725:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"695:5:50"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"706:5:50"},{"kind":"number","nodeType":"YulLiteral","src":"713:6:50","type":"","value":"0xffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"702:3:50"},"nodeType":"YulFunctionCall","src":"702:18:50"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"692:2:50"},"nodeType":"YulFunctionCall","src":"692:29:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"685:6:50"},"nodeType":"YulFunctionCall","src":"685:37:50"},"nodeType":"YulIf","src":"682:57:50"},{"nodeType":"YulAssignment","src":"748:15:50","value":{"name":"value","nodeType":"YulIdentifier","src":"758:5:50"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"748:6:50"}]}]},"name":"abi_decode_tuple_t_uint16","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"532:9:50","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"543:7:50","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"555:6:50","type":""}],"src":"497:272:50"},{"body":{"nodeType":"YulBlock","src":"917:358:50","statements":[{"nodeType":"YulAssignment","src":"927:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"939:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"950:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"935:3:50"},"nodeType":"YulFunctionCall","src":"935:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"927:4:50"}]},{"nodeType":"YulVariableDeclaration","src":"962:20:50","value":{"name":"headStart","nodeType":"YulIdentifier","src":"973:9:50"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"966:3:50","type":""}]},{"nodeType":"YulAssignment","src":"991:16:50","value":{"name":"headStart","nodeType":"YulIdentifier","src":"998:9:50"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"991:3:50"}]},{"nodeType":"YulVariableDeclaration","src":"1016:20:50","value":{"name":"value0","nodeType":"YulIdentifier","src":"1030:6:50"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"1020:6:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"1045:10:50","value":{"kind":"number","nodeType":"YulLiteral","src":"1054:1:50","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"1049:1:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"1111:158:50","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1132:3:50"},{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"1147:6:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1141:5:50"},"nodeType":"YulFunctionCall","src":"1141:13:50"},{"kind":"number","nodeType":"YulLiteral","src":"1156:4:50","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1137:3:50"},"nodeType":"YulFunctionCall","src":"1137:24:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1125:6:50"},"nodeType":"YulFunctionCall","src":"1125:37:50"},"nodeType":"YulExpressionStatement","src":"1125:37:50"},{"nodeType":"YulVariableDeclaration","src":"1175:14:50","value":{"kind":"number","nodeType":"YulLiteral","src":"1185:4:50","type":"","value":"0x20"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"1179:2:50","type":""}]},{"nodeType":"YulAssignment","src":"1202:19:50","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1213:3:50"},{"name":"_1","nodeType":"YulIdentifier","src":"1218:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1209:3:50"},"nodeType":"YulFunctionCall","src":"1209:12:50"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"1202:3:50"}]},{"nodeType":"YulAssignment","src":"1234:25:50","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"1248:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"1256:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1244:3:50"},"nodeType":"YulFunctionCall","src":"1244:15:50"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"1234:6:50"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"1075:1:50"},{"kind":"number","nodeType":"YulLiteral","src":"1078:4:50","type":"","value":"0x03"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"1072:2:50"},"nodeType":"YulFunctionCall","src":"1072:11:50"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"1084:18:50","statements":[{"nodeType":"YulAssignment","src":"1086:14:50","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"1095:1:50"},{"kind":"number","nodeType":"YulLiteral","src":"1098:1:50","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1091:3:50"},"nodeType":"YulFunctionCall","src":"1091:9:50"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"1086:1:50"}]}]},"pre":{"nodeType":"YulBlock","src":"1068:3:50","statements":[]},"src":"1064:205:50"}]},"name":"abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"886:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"897:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"908:4:50","type":""}],"src":"774:501:50"},{"body":{"nodeType":"YulBlock","src":"1325:109:50","statements":[{"body":{"nodeType":"YulBlock","src":"1412:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1421:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1424:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1414:6:50"},"nodeType":"YulFunctionCall","src":"1414:12:50"},"nodeType":"YulExpressionStatement","src":"1414:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1348:5:50"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1359:5:50"},{"kind":"number","nodeType":"YulLiteral","src":"1366:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1355:3:50"},"nodeType":"YulFunctionCall","src":"1355:54:50"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1345:2:50"},"nodeType":"YulFunctionCall","src":"1345:65:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1338:6:50"},"nodeType":"YulFunctionCall","src":"1338:73:50"},"nodeType":"YulIf","src":"1335:93:50"}]},"name":"validator_revert_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1314:5:50","type":""}],"src":"1280:154:50"},{"body":{"nodeType":"YulBlock","src":"1509:177:50","statements":[{"body":{"nodeType":"YulBlock","src":"1555:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1564:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1567:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1557:6:50"},"nodeType":"YulFunctionCall","src":"1557:12:50"},"nodeType":"YulExpressionStatement","src":"1557:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1530:7:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"1539:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1526:3:50"},"nodeType":"YulFunctionCall","src":"1526:23:50"},{"kind":"number","nodeType":"YulLiteral","src":"1551:2:50","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1522:3:50"},"nodeType":"YulFunctionCall","src":"1522:32:50"},"nodeType":"YulIf","src":"1519:52:50"},{"nodeType":"YulVariableDeclaration","src":"1580:36:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1606:9:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1593:12:50"},"nodeType":"YulFunctionCall","src":"1593:23:50"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"1584:5:50","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1650:5:50"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"1625:24:50"},"nodeType":"YulFunctionCall","src":"1625:31:50"},"nodeType":"YulExpressionStatement","src":"1625:31:50"},{"nodeType":"YulAssignment","src":"1665:15:50","value":{"name":"value","nodeType":"YulIdentifier","src":"1675:5:50"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1665:6:50"}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1475:9:50","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1486:7:50","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1498:6:50","type":""}],"src":"1439:247:50"},{"body":{"nodeType":"YulBlock","src":"1805:125:50","statements":[{"nodeType":"YulAssignment","src":"1815:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1827:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"1838:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1823:3:50"},"nodeType":"YulFunctionCall","src":"1823:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1815:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1857:9:50"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1872:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"1880:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1868:3:50"},"nodeType":"YulFunctionCall","src":"1868:55:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1850:6:50"},"nodeType":"YulFunctionCall","src":"1850:74:50"},"nodeType":"YulExpressionStatement","src":"1850:74:50"}]},"name":"abi_encode_tuple_t_contract$_IDAO_$2538__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1774:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1785:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1796:4:50","type":""}],"src":"1691:239:50"},{"body":{"nodeType":"YulBlock","src":"2049:229:50","statements":[{"nodeType":"YulAssignment","src":"2059:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2071:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"2082:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2067:3:50"},"nodeType":"YulFunctionCall","src":"2067:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2059:4:50"}]},{"body":{"nodeType":"YulBlock","src":"2127:111:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2148:1:50","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2155:3:50","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"2160:10:50","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2151:3:50"},"nodeType":"YulFunctionCall","src":"2151:20:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2141:6:50"},"nodeType":"YulFunctionCall","src":"2141:31:50"},"nodeType":"YulExpressionStatement","src":"2141:31:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2192:1:50","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"2195:4:50","type":"","value":"0x21"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2185:6:50"},"nodeType":"YulFunctionCall","src":"2185:15:50"},"nodeType":"YulExpressionStatement","src":"2185:15:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2220:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2223:4:50","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2213:6:50"},"nodeType":"YulFunctionCall","src":"2213:15:50"},"nodeType":"YulExpressionStatement","src":"2213:15:50"}]},"condition":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2107:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"2115:1:50","type":"","value":"3"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2104:2:50"},"nodeType":"YulFunctionCall","src":"2104:13:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2097:6:50"},"nodeType":"YulFunctionCall","src":"2097:21:50"},"nodeType":"YulIf","src":"2094:144:50"},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2254:9:50"},{"name":"value0","nodeType":"YulIdentifier","src":"2265:6:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2247:6:50"},"nodeType":"YulFunctionCall","src":"2247:25:50"},"nodeType":"YulExpressionStatement","src":"2247:25:50"}]},"name":"abi_encode_tuple_t_enum$_PluginType_$3994__to_t_uint8__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2018:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"2029:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2040:4:50","type":""}],"src":"1935:343:50"},{"body":{"nodeType":"YulBlock","src":"2315:95:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2332:1:50","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2339:3:50","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"2344:10:50","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2335:3:50"},"nodeType":"YulFunctionCall","src":"2335:20:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2325:6:50"},"nodeType":"YulFunctionCall","src":"2325:31:50"},"nodeType":"YulExpressionStatement","src":"2325:31:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2372:1:50","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"2375:4:50","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2365:6:50"},"nodeType":"YulFunctionCall","src":"2365:15:50"},"nodeType":"YulExpressionStatement","src":"2365:15:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2396:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2399:4:50","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2389:6:50"},"nodeType":"YulFunctionCall","src":"2389:15:50"},"nodeType":"YulExpressionStatement","src":"2389:15:50"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"2283:127:50"},{"body":{"nodeType":"YulBlock","src":"2511:960:50","statements":[{"body":{"nodeType":"YulBlock","src":"2557:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2566:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2569:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2559:6:50"},"nodeType":"YulFunctionCall","src":"2559:12:50"},"nodeType":"YulExpressionStatement","src":"2559:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2532:7:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"2541:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2528:3:50"},"nodeType":"YulFunctionCall","src":"2528:23:50"},{"kind":"number","nodeType":"YulLiteral","src":"2553:2:50","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2524:3:50"},"nodeType":"YulFunctionCall","src":"2524:32:50"},"nodeType":"YulIf","src":"2521:52:50"},{"nodeType":"YulVariableDeclaration","src":"2582:36:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2608:9:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2595:12:50"},"nodeType":"YulFunctionCall","src":"2595:23:50"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"2586:5:50","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2652:5:50"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"2627:24:50"},"nodeType":"YulFunctionCall","src":"2627:31:50"},"nodeType":"YulExpressionStatement","src":"2627:31:50"},{"nodeType":"YulAssignment","src":"2667:15:50","value":{"name":"value","nodeType":"YulIdentifier","src":"2677:5:50"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2667:6:50"}]},{"nodeType":"YulVariableDeclaration","src":"2691:46:50","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2722:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"2733:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2718:3:50"},"nodeType":"YulFunctionCall","src":"2718:18:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2705:12:50"},"nodeType":"YulFunctionCall","src":"2705:32:50"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"2695:6:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2746:28:50","value":{"kind":"number","nodeType":"YulLiteral","src":"2756:18:50","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"2750:2:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"2801:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2810:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2813:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2803:6:50"},"nodeType":"YulFunctionCall","src":"2803:12:50"},"nodeType":"YulExpressionStatement","src":"2803:12:50"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"2789:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"2797:2:50"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2786:2:50"},"nodeType":"YulFunctionCall","src":"2786:14:50"},"nodeType":"YulIf","src":"2783:34:50"},{"nodeType":"YulVariableDeclaration","src":"2826:32:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2840:9:50"},{"name":"offset","nodeType":"YulIdentifier","src":"2851:6:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2836:3:50"},"nodeType":"YulFunctionCall","src":"2836:22:50"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"2830:2:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"2906:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2915:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2918:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2908:6:50"},"nodeType":"YulFunctionCall","src":"2908:12:50"},"nodeType":"YulExpressionStatement","src":"2908:12:50"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"2885:2:50"},{"kind":"number","nodeType":"YulLiteral","src":"2889:4:50","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2881:3:50"},"nodeType":"YulFunctionCall","src":"2881:13:50"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2896:7:50"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2877:3:50"},"nodeType":"YulFunctionCall","src":"2877:27:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2870:6:50"},"nodeType":"YulFunctionCall","src":"2870:35:50"},"nodeType":"YulIf","src":"2867:55:50"},{"nodeType":"YulVariableDeclaration","src":"2931:26:50","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"2954:2:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2941:12:50"},"nodeType":"YulFunctionCall","src":"2941:16:50"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"2935:2:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"2980:22:50","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"2982:16:50"},"nodeType":"YulFunctionCall","src":"2982:18:50"},"nodeType":"YulExpressionStatement","src":"2982:18:50"}]},"condition":{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"2972:2:50"},{"name":"_1","nodeType":"YulIdentifier","src":"2976:2:50"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2969:2:50"},"nodeType":"YulFunctionCall","src":"2969:10:50"},"nodeType":"YulIf","src":"2966:36:50"},{"nodeType":"YulVariableDeclaration","src":"3011:17:50","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3025:2:50","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"3021:3:50"},"nodeType":"YulFunctionCall","src":"3021:7:50"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"3015:2:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3037:23:50","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3057:2:50","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3051:5:50"},"nodeType":"YulFunctionCall","src":"3051:9:50"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"3041:6:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3069:71:50","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"3091:6:50"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"3115:2:50"},{"kind":"number","nodeType":"YulLiteral","src":"3119:4:50","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3111:3:50"},"nodeType":"YulFunctionCall","src":"3111:13:50"},{"name":"_4","nodeType":"YulIdentifier","src":"3126:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3107:3:50"},"nodeType":"YulFunctionCall","src":"3107:22:50"},{"kind":"number","nodeType":"YulLiteral","src":"3131:2:50","type":"","value":"63"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3103:3:50"},"nodeType":"YulFunctionCall","src":"3103:31:50"},{"name":"_4","nodeType":"YulIdentifier","src":"3136:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3099:3:50"},"nodeType":"YulFunctionCall","src":"3099:40:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3087:3:50"},"nodeType":"YulFunctionCall","src":"3087:53:50"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"3073:10:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"3199:22:50","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"3201:16:50"},"nodeType":"YulFunctionCall","src":"3201:18:50"},"nodeType":"YulExpressionStatement","src":"3201:18:50"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"3158:10:50"},{"name":"_1","nodeType":"YulIdentifier","src":"3170:2:50"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3155:2:50"},"nodeType":"YulFunctionCall","src":"3155:18:50"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"3178:10:50"},{"name":"memPtr","nodeType":"YulIdentifier","src":"3190:6:50"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"3175:2:50"},"nodeType":"YulFunctionCall","src":"3175:22:50"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"3152:2:50"},"nodeType":"YulFunctionCall","src":"3152:46:50"},"nodeType":"YulIf","src":"3149:72:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3237:2:50","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"3241:10:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3230:6:50"},"nodeType":"YulFunctionCall","src":"3230:22:50"},"nodeType":"YulExpressionStatement","src":"3230:22:50"},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"3268:6:50"},{"name":"_3","nodeType":"YulIdentifier","src":"3276:2:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3261:6:50"},"nodeType":"YulFunctionCall","src":"3261:18:50"},"nodeType":"YulExpressionStatement","src":"3261:18:50"},{"body":{"nodeType":"YulBlock","src":"3325:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3334:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3337:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3327:6:50"},"nodeType":"YulFunctionCall","src":"3327:12:50"},"nodeType":"YulExpressionStatement","src":"3327:12:50"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"3302:2:50"},{"name":"_3","nodeType":"YulIdentifier","src":"3306:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3298:3:50"},"nodeType":"YulFunctionCall","src":"3298:11:50"},{"kind":"number","nodeType":"YulLiteral","src":"3311:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3294:3:50"},"nodeType":"YulFunctionCall","src":"3294:20:50"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3316:7:50"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3291:2:50"},"nodeType":"YulFunctionCall","src":"3291:33:50"},"nodeType":"YulIf","src":"3288:53:50"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"3367:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"3375:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3363:3:50"},"nodeType":"YulFunctionCall","src":"3363:15:50"},{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"3384:2:50"},{"kind":"number","nodeType":"YulLiteral","src":"3388:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3380:3:50"},"nodeType":"YulFunctionCall","src":"3380:11:50"},{"name":"_3","nodeType":"YulIdentifier","src":"3393:2:50"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"3350:12:50"},"nodeType":"YulFunctionCall","src":"3350:46:50"},"nodeType":"YulExpressionStatement","src":"3350:46:50"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"3420:6:50"},{"name":"_3","nodeType":"YulIdentifier","src":"3428:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3416:3:50"},"nodeType":"YulFunctionCall","src":"3416:15:50"},{"kind":"number","nodeType":"YulLiteral","src":"3433:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3412:3:50"},"nodeType":"YulFunctionCall","src":"3412:24:50"},{"kind":"number","nodeType":"YulLiteral","src":"3438:1:50","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3405:6:50"},"nodeType":"YulFunctionCall","src":"3405:35:50"},"nodeType":"YulExpressionStatement","src":"3405:35:50"},{"nodeType":"YulAssignment","src":"3449:16:50","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"3459:6:50"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"3449:6:50"}]}]},"name":"abi_decode_tuple_t_addresst_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2469:9:50","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2480:7:50","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2492:6:50","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2500:6:50","type":""}],"src":"2415:1056:50"},{"body":{"nodeType":"YulBlock","src":"3577:76:50","statements":[{"nodeType":"YulAssignment","src":"3587:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3599:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"3610:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3595:3:50"},"nodeType":"YulFunctionCall","src":"3595:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3587:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3629:9:50"},{"name":"value0","nodeType":"YulIdentifier","src":"3640:6:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3622:6:50"},"nodeType":"YulFunctionCall","src":"3622:25:50"},"nodeType":"YulExpressionStatement","src":"3622:25:50"}]},"name":"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3546:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3557:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3568:4:50","type":""}],"src":"3476:177:50"},{"body":{"nodeType":"YulBlock","src":"3759:125:50","statements":[{"nodeType":"YulAssignment","src":"3769:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3781:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"3792:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3777:3:50"},"nodeType":"YulFunctionCall","src":"3777:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3769:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3811:9:50"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3826:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"3834:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3822:3:50"},"nodeType":"YulFunctionCall","src":"3822:55:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3804:6:50"},"nodeType":"YulFunctionCall","src":"3804:74:50"},"nodeType":"YulExpressionStatement","src":"3804:74:50"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3728:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3739:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3750:4:50","type":""}],"src":"3658:226:50"},{"body":{"nodeType":"YulBlock","src":"3990:76:50","statements":[{"nodeType":"YulAssignment","src":"4000:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4012:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"4023:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4008:3:50"},"nodeType":"YulFunctionCall","src":"4008:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4000:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4042:9:50"},{"name":"value0","nodeType":"YulIdentifier","src":"4053:6:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4035:6:50"},"nodeType":"YulFunctionCall","src":"4035:25:50"},"nodeType":"YulExpressionStatement","src":"4035:25:50"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3959:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3970:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3981:4:50","type":""}],"src":"3889:177:50"},{"body":{"nodeType":"YulBlock","src":"4154:177:50","statements":[{"body":{"nodeType":"YulBlock","src":"4200:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4209:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4212:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4202:6:50"},"nodeType":"YulFunctionCall","src":"4202:12:50"},"nodeType":"YulExpressionStatement","src":"4202:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"4175:7:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"4184:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4171:3:50"},"nodeType":"YulFunctionCall","src":"4171:23:50"},{"kind":"number","nodeType":"YulLiteral","src":"4196:2:50","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4167:3:50"},"nodeType":"YulFunctionCall","src":"4167:32:50"},"nodeType":"YulIf","src":"4164:52:50"},{"nodeType":"YulVariableDeclaration","src":"4225:36:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4251:9:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4238:12:50"},"nodeType":"YulFunctionCall","src":"4238:23:50"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"4229:5:50","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4295:5:50"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"4270:24:50"},"nodeType":"YulFunctionCall","src":"4270:31:50"},"nodeType":"YulExpressionStatement","src":"4270:31:50"},{"nodeType":"YulAssignment","src":"4310:15:50","value":{"name":"value","nodeType":"YulIdentifier","src":"4320:5:50"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"4310:6:50"}]}]},"name":"abi_decode_tuple_t_contract$_IDAO_$2538","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4120:9:50","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"4131:7:50","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"4143:6:50","type":""}],"src":"4071:260:50"},{"body":{"nodeType":"YulBlock","src":"4510:236:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4527:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"4538:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4520:6:50"},"nodeType":"YulFunctionCall","src":"4520:21:50"},"nodeType":"YulExpressionStatement","src":"4520:21:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4561:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"4572:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4557:3:50"},"nodeType":"YulFunctionCall","src":"4557:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"4577:2:50","type":"","value":"46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4550:6:50"},"nodeType":"YulFunctionCall","src":"4550:30:50"},"nodeType":"YulExpressionStatement","src":"4550:30:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4600:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"4611:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4596:3:50"},"nodeType":"YulFunctionCall","src":"4596:18:50"},{"hexValue":"496e697469616c697a61626c653a20636f6e747261637420697320616c726561","kind":"string","nodeType":"YulLiteral","src":"4616:34:50","type":"","value":"Initializable: contract is alrea"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4589:6:50"},"nodeType":"YulFunctionCall","src":"4589:62:50"},"nodeType":"YulExpressionStatement","src":"4589:62:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4671:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"4682:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4667:3:50"},"nodeType":"YulFunctionCall","src":"4667:18:50"},{"hexValue":"647920696e697469616c697a6564","kind":"string","nodeType":"YulLiteral","src":"4687:16:50","type":"","value":"dy initialized"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4660:6:50"},"nodeType":"YulFunctionCall","src":"4660:44:50"},"nodeType":"YulExpressionStatement","src":"4660:44:50"},{"nodeType":"YulAssignment","src":"4713:27:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4725:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"4736:3:50","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4721:3:50"},"nodeType":"YulFunctionCall","src":"4721:19:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4713:4:50"}]}]},"name":"abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4487:9:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4501:4:50","type":""}],"src":"4336:410:50"},{"body":{"nodeType":"YulBlock","src":"4848:87:50","statements":[{"nodeType":"YulAssignment","src":"4858:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4870:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"4881:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4866:3:50"},"nodeType":"YulFunctionCall","src":"4866:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4858:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4900:9:50"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4915:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"4923:4:50","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4911:3:50"},"nodeType":"YulFunctionCall","src":"4911:17:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4893:6:50"},"nodeType":"YulFunctionCall","src":"4893:36:50"},"nodeType":"YulExpressionStatement","src":"4893:36:50"}]},"name":"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4817:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"4828:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4839:4:50","type":""}],"src":"4751:184:50"},{"body":{"nodeType":"YulBlock","src":"5114:234:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5131:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"5142:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5124:6:50"},"nodeType":"YulFunctionCall","src":"5124:21:50"},"nodeType":"YulExpressionStatement","src":"5124:21:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5165:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"5176:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5161:3:50"},"nodeType":"YulFunctionCall","src":"5161:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"5181:2:50","type":"","value":"44"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5154:6:50"},"nodeType":"YulFunctionCall","src":"5154:30:50"},"nodeType":"YulExpressionStatement","src":"5154:30:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5204:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"5215:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5200:3:50"},"nodeType":"YulFunctionCall","src":"5200:18:50"},{"hexValue":"46756e6374696f6e206d7573742062652063616c6c6564207468726f75676820","kind":"string","nodeType":"YulLiteral","src":"5220:34:50","type":"","value":"Function must be called through "}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5193:6:50"},"nodeType":"YulFunctionCall","src":"5193:62:50"},"nodeType":"YulExpressionStatement","src":"5193:62:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5275:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"5286:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5271:3:50"},"nodeType":"YulFunctionCall","src":"5271:18:50"},{"hexValue":"64656c656761746563616c6c","kind":"string","nodeType":"YulLiteral","src":"5291:14:50","type":"","value":"delegatecall"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5264:6:50"},"nodeType":"YulFunctionCall","src":"5264:42:50"},"nodeType":"YulExpressionStatement","src":"5264:42:50"},{"nodeType":"YulAssignment","src":"5315:27:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5327:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"5338:3:50","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5323:3:50"},"nodeType":"YulFunctionCall","src":"5323:19:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5315:4:50"}]}]},"name":"abi_encode_tuple_t_stringliteral_36e108fa7a809b52ab1951dd91c117a7bc9ac5250bdf1aa162d4e104f7edf9eb__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5091:9:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5105:4:50","type":""}],"src":"4940:408:50"},{"body":{"nodeType":"YulBlock","src":"5527:234:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5544:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"5555:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5537:6:50"},"nodeType":"YulFunctionCall","src":"5537:21:50"},"nodeType":"YulExpressionStatement","src":"5537:21:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5578:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"5589:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5574:3:50"},"nodeType":"YulFunctionCall","src":"5574:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"5594:2:50","type":"","value":"44"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5567:6:50"},"nodeType":"YulFunctionCall","src":"5567:30:50"},"nodeType":"YulExpressionStatement","src":"5567:30:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5617:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"5628:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5613:3:50"},"nodeType":"YulFunctionCall","src":"5613:18:50"},{"hexValue":"46756e6374696f6e206d7573742062652063616c6c6564207468726f75676820","kind":"string","nodeType":"YulLiteral","src":"5633:34:50","type":"","value":"Function must be called through "}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5606:6:50"},"nodeType":"YulFunctionCall","src":"5606:62:50"},"nodeType":"YulExpressionStatement","src":"5606:62:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5688:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"5699:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5684:3:50"},"nodeType":"YulFunctionCall","src":"5684:18:50"},{"hexValue":"6163746976652070726f7879","kind":"string","nodeType":"YulLiteral","src":"5704:14:50","type":"","value":"active proxy"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5677:6:50"},"nodeType":"YulFunctionCall","src":"5677:42:50"},"nodeType":"YulExpressionStatement","src":"5677:42:50"},{"nodeType":"YulAssignment","src":"5728:27:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5740:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"5751:3:50","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5736:3:50"},"nodeType":"YulFunctionCall","src":"5736:19:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5728:4:50"}]}]},"name":"abi_encode_tuple_t_stringliteral_52f1ead4d9653e13afbd2e90ef2587c30187cd50b2e97d784e3f7a7541247434__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5504:9:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5518:4:50","type":""}],"src":"5353:408:50"},{"body":{"nodeType":"YulBlock","src":"5940:246:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5957:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"5968:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5950:6:50"},"nodeType":"YulFunctionCall","src":"5950:21:50"},"nodeType":"YulExpressionStatement","src":"5950:21:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5991:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"6002:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5987:3:50"},"nodeType":"YulFunctionCall","src":"5987:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"6007:2:50","type":"","value":"56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5980:6:50"},"nodeType":"YulFunctionCall","src":"5980:30:50"},"nodeType":"YulExpressionStatement","src":"5980:30:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6030:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"6041:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6026:3:50"},"nodeType":"YulFunctionCall","src":"6026:18:50"},{"hexValue":"555550535570677261646561626c653a206d757374206e6f742062652063616c","kind":"string","nodeType":"YulLiteral","src":"6046:34:50","type":"","value":"UUPSUpgradeable: must not be cal"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6019:6:50"},"nodeType":"YulFunctionCall","src":"6019:62:50"},"nodeType":"YulExpressionStatement","src":"6019:62:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6101:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"6112:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6097:3:50"},"nodeType":"YulFunctionCall","src":"6097:18:50"},{"hexValue":"6c6564207468726f7567682064656c656761746563616c6c","kind":"string","nodeType":"YulLiteral","src":"6117:26:50","type":"","value":"led through delegatecall"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6090:6:50"},"nodeType":"YulFunctionCall","src":"6090:54:50"},"nodeType":"YulExpressionStatement","src":"6090:54:50"},{"nodeType":"YulAssignment","src":"6153:27:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6165:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"6176:3:50","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6161:3:50"},"nodeType":"YulFunctionCall","src":"6161:19:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6153:4:50"}]}]},"name":"abi_encode_tuple_t_stringliteral_67f0151b4ad1dcfa0e3302a0cd6019f51582ef1807b37dceb00bd852a514f7f4__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5917:9:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5931:4:50","type":""}],"src":"5766:420:50"},{"body":{"nodeType":"YulBlock","src":"6272:103:50","statements":[{"body":{"nodeType":"YulBlock","src":"6318:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6327:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6330:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6320:6:50"},"nodeType":"YulFunctionCall","src":"6320:12:50"},"nodeType":"YulExpressionStatement","src":"6320:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"6293:7:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"6302:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6289:3:50"},"nodeType":"YulFunctionCall","src":"6289:23:50"},{"kind":"number","nodeType":"YulLiteral","src":"6314:2:50","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6285:3:50"},"nodeType":"YulFunctionCall","src":"6285:32:50"},"nodeType":"YulIf","src":"6282:52:50"},{"nodeType":"YulAssignment","src":"6343:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6359:9:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6353:5:50"},"nodeType":"YulFunctionCall","src":"6353:16:50"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"6343:6:50"}]}]},"name":"abi_decode_tuple_t_bytes32_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6238:9:50","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"6249:7:50","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"6261:6:50","type":""}],"src":"6191:184:50"},{"body":{"nodeType":"YulBlock","src":"6554:236:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6571:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"6582:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6564:6:50"},"nodeType":"YulFunctionCall","src":"6564:21:50"},"nodeType":"YulExpressionStatement","src":"6564:21:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6605:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"6616:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6601:3:50"},"nodeType":"YulFunctionCall","src":"6601:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"6621:2:50","type":"","value":"46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6594:6:50"},"nodeType":"YulFunctionCall","src":"6594:30:50"},"nodeType":"YulExpressionStatement","src":"6594:30:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6644:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"6655:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6640:3:50"},"nodeType":"YulFunctionCall","src":"6640:18:50"},{"hexValue":"45524331393637557067726164653a206e657720696d706c656d656e74617469","kind":"string","nodeType":"YulLiteral","src":"6660:34:50","type":"","value":"ERC1967Upgrade: new implementati"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6633:6:50"},"nodeType":"YulFunctionCall","src":"6633:62:50"},"nodeType":"YulExpressionStatement","src":"6633:62:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6715:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"6726:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6711:3:50"},"nodeType":"YulFunctionCall","src":"6711:18:50"},{"hexValue":"6f6e206973206e6f742055555053","kind":"string","nodeType":"YulLiteral","src":"6731:16:50","type":"","value":"on is not UUPS"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6704:6:50"},"nodeType":"YulFunctionCall","src":"6704:44:50"},"nodeType":"YulExpressionStatement","src":"6704:44:50"},{"nodeType":"YulAssignment","src":"6757:27:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6769:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"6780:3:50","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6765:3:50"},"nodeType":"YulFunctionCall","src":"6765:19:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6757:4:50"}]}]},"name":"abi_encode_tuple_t_stringliteral_8e8e2fbcb586f700b5b14e2c4a650c8d83b9773c31c5fe8962070ea544e11f24__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6531:9:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6545:4:50","type":""}],"src":"6380:410:50"},{"body":{"nodeType":"YulBlock","src":"6969:231:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6986:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"6997:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6979:6:50"},"nodeType":"YulFunctionCall","src":"6979:21:50"},"nodeType":"YulExpressionStatement","src":"6979:21:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7020:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"7031:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7016:3:50"},"nodeType":"YulFunctionCall","src":"7016:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"7036:2:50","type":"","value":"41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7009:6:50"},"nodeType":"YulFunctionCall","src":"7009:30:50"},"nodeType":"YulExpressionStatement","src":"7009:30:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7059:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"7070:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7055:3:50"},"nodeType":"YulFunctionCall","src":"7055:18:50"},{"hexValue":"45524331393637557067726164653a20756e737570706f727465642070726f78","kind":"string","nodeType":"YulLiteral","src":"7075:34:50","type":"","value":"ERC1967Upgrade: unsupported prox"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7048:6:50"},"nodeType":"YulFunctionCall","src":"7048:62:50"},"nodeType":"YulExpressionStatement","src":"7048:62:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7130:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"7141:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7126:3:50"},"nodeType":"YulFunctionCall","src":"7126:18:50"},{"hexValue":"6961626c6555554944","kind":"string","nodeType":"YulLiteral","src":"7146:11:50","type":"","value":"iableUUID"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7119:6:50"},"nodeType":"YulFunctionCall","src":"7119:39:50"},"nodeType":"YulExpressionStatement","src":"7119:39:50"},{"nodeType":"YulAssignment","src":"7167:27:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7179:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"7190:3:50","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7175:3:50"},"nodeType":"YulFunctionCall","src":"7175:19:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7167:4:50"}]}]},"name":"abi_encode_tuple_t_stringliteral_76b6b6debfc5febf101145a79ecf0b0d2e89e397dfdab2bca99888370411152c__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6946:9:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6960:4:50","type":""}],"src":"6795:405:50"},{"body":{"nodeType":"YulBlock","src":"7379:233:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7396:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"7407:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7389:6:50"},"nodeType":"YulFunctionCall","src":"7389:21:50"},"nodeType":"YulExpressionStatement","src":"7389:21:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7430:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"7441:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7426:3:50"},"nodeType":"YulFunctionCall","src":"7426:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"7446:2:50","type":"","value":"43"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7419:6:50"},"nodeType":"YulFunctionCall","src":"7419:30:50"},"nodeType":"YulExpressionStatement","src":"7419:30:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7469:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"7480:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7465:3:50"},"nodeType":"YulFunctionCall","src":"7465:18:50"},{"hexValue":"496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069","kind":"string","nodeType":"YulLiteral","src":"7485:34:50","type":"","value":"Initializable: contract is not i"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7458:6:50"},"nodeType":"YulFunctionCall","src":"7458:62:50"},"nodeType":"YulExpressionStatement","src":"7458:62:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7540:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"7551:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7536:3:50"},"nodeType":"YulFunctionCall","src":"7536:18:50"},{"hexValue":"6e697469616c697a696e67","kind":"string","nodeType":"YulLiteral","src":"7556:13:50","type":"","value":"nitializing"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7529:6:50"},"nodeType":"YulFunctionCall","src":"7529:41:50"},"nodeType":"YulExpressionStatement","src":"7529:41:50"},{"nodeType":"YulAssignment","src":"7579:27:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7591:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"7602:3:50","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7587:3:50"},"nodeType":"YulFunctionCall","src":"7587:19:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7579:4:50"}]}]},"name":"abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7356:9:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7370:4:50","type":""}],"src":"7205:407:50"},{"body":{"nodeType":"YulBlock","src":"7830:472:50","statements":[{"nodeType":"YulVariableDeclaration","src":"7840:52:50","value":{"kind":"number","nodeType":"YulLiteral","src":"7850:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"7844:2:50","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7908:9:50"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7923:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"7931:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7919:3:50"},"nodeType":"YulFunctionCall","src":"7919:15:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7901:6:50"},"nodeType":"YulFunctionCall","src":"7901:34:50"},"nodeType":"YulExpressionStatement","src":"7901:34:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7955:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"7966:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7951:3:50"},"nodeType":"YulFunctionCall","src":"7951:18:50"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"7975:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"7983:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7971:3:50"},"nodeType":"YulFunctionCall","src":"7971:15:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7944:6:50"},"nodeType":"YulFunctionCall","src":"7944:43:50"},"nodeType":"YulExpressionStatement","src":"7944:43:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8007:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"8018:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8003:3:50"},"nodeType":"YulFunctionCall","src":"8003:18:50"},{"name":"value2","nodeType":"YulIdentifier","src":"8023:6:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7996:6:50"},"nodeType":"YulFunctionCall","src":"7996:34:50"},"nodeType":"YulExpressionStatement","src":"7996:34:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8050:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"8061:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8046:3:50"},"nodeType":"YulFunctionCall","src":"8046:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"8066:3:50","type":"","value":"128"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8039:6:50"},"nodeType":"YulFunctionCall","src":"8039:31:50"},"nodeType":"YulExpressionStatement","src":"8039:31:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8090:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"8101:3:50","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8086:3:50"},"nodeType":"YulFunctionCall","src":"8086:19:50"},{"name":"value4","nodeType":"YulIdentifier","src":"8107:6:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8079:6:50"},"nodeType":"YulFunctionCall","src":"8079:35:50"},"nodeType":"YulExpressionStatement","src":"8079:35:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8140:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"8151:3:50","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8136:3:50"},"nodeType":"YulFunctionCall","src":"8136:19:50"},{"name":"value3","nodeType":"YulIdentifier","src":"8157:6:50"},{"name":"value4","nodeType":"YulIdentifier","src":"8165:6:50"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"8123:12:50"},"nodeType":"YulFunctionCall","src":"8123:49:50"},"nodeType":"YulExpressionStatement","src":"8123:49:50"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8196:9:50"},{"name":"value4","nodeType":"YulIdentifier","src":"8207:6:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8192:3:50"},"nodeType":"YulFunctionCall","src":"8192:22:50"},{"kind":"number","nodeType":"YulLiteral","src":"8216:3:50","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8188:3:50"},"nodeType":"YulFunctionCall","src":"8188:32:50"},{"kind":"number","nodeType":"YulLiteral","src":"8222:1:50","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8181:6:50"},"nodeType":"YulFunctionCall","src":"8181:43:50"},"nodeType":"YulExpressionStatement","src":"8181:43:50"},{"nodeType":"YulAssignment","src":"8233:63:50","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8249:9:50"},{"arguments":[{"arguments":[{"name":"value4","nodeType":"YulIdentifier","src":"8268:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"8276:2:50","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8264:3:50"},"nodeType":"YulFunctionCall","src":"8264:15:50"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8285:2:50","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"8281:3:50"},"nodeType":"YulFunctionCall","src":"8281:7:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8260:3:50"},"nodeType":"YulFunctionCall","src":"8260:29:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8245:3:50"},"nodeType":"YulFunctionCall","src":"8245:45:50"},{"kind":"number","nodeType":"YulLiteral","src":"8292:3:50","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8241:3:50"},"nodeType":"YulFunctionCall","src":"8241:55:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"8233:4:50"}]}]},"name":"abi_encode_tuple_t_address_t_address_t_bytes32_t_bytes_calldata_ptr__to_t_address_t_address_t_bytes32_t_bytes_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7767:9:50","type":""},{"name":"value4","nodeType":"YulTypedName","src":"7778:6:50","type":""},{"name":"value3","nodeType":"YulTypedName","src":"7786:6:50","type":""},{"name":"value2","nodeType":"YulTypedName","src":"7794:6:50","type":""},{"name":"value1","nodeType":"YulTypedName","src":"7802:6:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"7810:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7821:4:50","type":""}],"src":"7617:685:50"},{"body":{"nodeType":"YulBlock","src":"8385:199:50","statements":[{"body":{"nodeType":"YulBlock","src":"8431:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8440:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8443:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8433:6:50"},"nodeType":"YulFunctionCall","src":"8433:12:50"},"nodeType":"YulExpressionStatement","src":"8433:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"8406:7:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"8415:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"8402:3:50"},"nodeType":"YulFunctionCall","src":"8402:23:50"},{"kind":"number","nodeType":"YulLiteral","src":"8427:2:50","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"8398:3:50"},"nodeType":"YulFunctionCall","src":"8398:32:50"},"nodeType":"YulIf","src":"8395:52:50"},{"nodeType":"YulVariableDeclaration","src":"8456:29:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8475:9:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"8469:5:50"},"nodeType":"YulFunctionCall","src":"8469:16:50"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"8460:5:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"8538:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8547:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8550:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8540:6:50"},"nodeType":"YulFunctionCall","src":"8540:12:50"},"nodeType":"YulExpressionStatement","src":"8540:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8507:5:50"},{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8528:5:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"8521:6:50"},"nodeType":"YulFunctionCall","src":"8521:13:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"8514:6:50"},"nodeType":"YulFunctionCall","src":"8514:21:50"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"8504:2:50"},"nodeType":"YulFunctionCall","src":"8504:32:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"8497:6:50"},"nodeType":"YulFunctionCall","src":"8497:40:50"},"nodeType":"YulIf","src":"8494:60:50"},{"nodeType":"YulAssignment","src":"8563:15:50","value":{"name":"value","nodeType":"YulIdentifier","src":"8573:5:50"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"8563:6:50"}]}]},"name":"abi_decode_tuple_t_bool_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8351:9:50","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"8362:7:50","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"8374:6:50","type":""}],"src":"8307:277:50"},{"body":{"nodeType":"YulBlock","src":"8774:294:50","statements":[{"nodeType":"YulAssignment","src":"8784:27:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8796:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"8807:3:50","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8792:3:50"},"nodeType":"YulFunctionCall","src":"8792:19:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"8784:4:50"}]},{"nodeType":"YulVariableDeclaration","src":"8820:52:50","value":{"kind":"number","nodeType":"YulLiteral","src":"8830:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"8824:2:50","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8888:9:50"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"8903:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"8911:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8899:3:50"},"nodeType":"YulFunctionCall","src":"8899:15:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8881:6:50"},"nodeType":"YulFunctionCall","src":"8881:34:50"},"nodeType":"YulExpressionStatement","src":"8881:34:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8935:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"8946:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8931:3:50"},"nodeType":"YulFunctionCall","src":"8931:18:50"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"8955:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"8963:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8951:3:50"},"nodeType":"YulFunctionCall","src":"8951:15:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8924:6:50"},"nodeType":"YulFunctionCall","src":"8924:43:50"},"nodeType":"YulExpressionStatement","src":"8924:43:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8987:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"8998:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8983:3:50"},"nodeType":"YulFunctionCall","src":"8983:18:50"},{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"9007:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"9015:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"9003:3:50"},"nodeType":"YulFunctionCall","src":"9003:15:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8976:6:50"},"nodeType":"YulFunctionCall","src":"8976:43:50"},"nodeType":"YulExpressionStatement","src":"8976:43:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9039:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"9050:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9035:3:50"},"nodeType":"YulFunctionCall","src":"9035:18:50"},{"name":"value3","nodeType":"YulIdentifier","src":"9055:6:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9028:6:50"},"nodeType":"YulFunctionCall","src":"9028:34:50"},"nodeType":"YulExpressionStatement","src":"9028:34:50"}]},"name":"abi_encode_tuple_t_address_t_address_t_address_t_bytes32__to_t_address_t_address_t_address_t_bytes32__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8719:9:50","type":""},{"name":"value3","nodeType":"YulTypedName","src":"8730:6:50","type":""},{"name":"value2","nodeType":"YulTypedName","src":"8738:6:50","type":""},{"name":"value1","nodeType":"YulTypedName","src":"8746:6:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"8754:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"8765:4:50","type":""}],"src":"8589:479:50"},{"body":{"nodeType":"YulBlock","src":"9247:235:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9264:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"9275:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9257:6:50"},"nodeType":"YulFunctionCall","src":"9257:21:50"},"nodeType":"YulExpressionStatement","src":"9257:21:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9298:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"9309:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9294:3:50"},"nodeType":"YulFunctionCall","src":"9294:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"9314:2:50","type":"","value":"45"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9287:6:50"},"nodeType":"YulFunctionCall","src":"9287:30:50"},"nodeType":"YulExpressionStatement","src":"9287:30:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9337:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"9348:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9333:3:50"},"nodeType":"YulFunctionCall","src":"9333:18:50"},{"hexValue":"455243313936373a206e657720696d706c656d656e746174696f6e206973206e","kind":"string","nodeType":"YulLiteral","src":"9353:34:50","type":"","value":"ERC1967: new implementation is n"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9326:6:50"},"nodeType":"YulFunctionCall","src":"9326:62:50"},"nodeType":"YulExpressionStatement","src":"9326:62:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9408:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"9419:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9404:3:50"},"nodeType":"YulFunctionCall","src":"9404:18:50"},{"hexValue":"6f74206120636f6e7472616374","kind":"string","nodeType":"YulLiteral","src":"9424:15:50","type":"","value":"ot a contract"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9397:6:50"},"nodeType":"YulFunctionCall","src":"9397:43:50"},"nodeType":"YulExpressionStatement","src":"9397:43:50"},{"nodeType":"YulAssignment","src":"9449:27:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9461:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"9472:3:50","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9457:3:50"},"nodeType":"YulFunctionCall","src":"9457:19:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"9449:4:50"}]}]},"name":"abi_encode_tuple_t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9224:9:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"9238:4:50","type":""}],"src":"9073:409:50"},{"body":{"nodeType":"YulBlock","src":"9553:184:50","statements":[{"nodeType":"YulVariableDeclaration","src":"9563:10:50","value":{"kind":"number","nodeType":"YulLiteral","src":"9572:1:50","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"9567:1:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"9632:63:50","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"9657:3:50"},{"name":"i","nodeType":"YulIdentifier","src":"9662:1:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9653:3:50"},"nodeType":"YulFunctionCall","src":"9653:11:50"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"9676:3:50"},{"name":"i","nodeType":"YulIdentifier","src":"9681:1:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9672:3:50"},"nodeType":"YulFunctionCall","src":"9672:11:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"9666:5:50"},"nodeType":"YulFunctionCall","src":"9666:18:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9646:6:50"},"nodeType":"YulFunctionCall","src":"9646:39:50"},"nodeType":"YulExpressionStatement","src":"9646:39:50"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"9593:1:50"},{"name":"length","nodeType":"YulIdentifier","src":"9596:6:50"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"9590:2:50"},"nodeType":"YulFunctionCall","src":"9590:13:50"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"9604:19:50","statements":[{"nodeType":"YulAssignment","src":"9606:15:50","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"9615:1:50"},{"kind":"number","nodeType":"YulLiteral","src":"9618:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9611:3:50"},"nodeType":"YulFunctionCall","src":"9611:10:50"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"9606:1:50"}]}]},"pre":{"nodeType":"YulBlock","src":"9586:3:50","statements":[]},"src":"9582:113:50"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"9715:3:50"},{"name":"length","nodeType":"YulIdentifier","src":"9720:6:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9711:3:50"},"nodeType":"YulFunctionCall","src":"9711:16:50"},{"kind":"number","nodeType":"YulLiteral","src":"9729:1:50","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9704:6:50"},"nodeType":"YulFunctionCall","src":"9704:27:50"},"nodeType":"YulExpressionStatement","src":"9704:27:50"}]},"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"9531:3:50","type":""},{"name":"dst","nodeType":"YulTypedName","src":"9536:3:50","type":""},{"name":"length","nodeType":"YulTypedName","src":"9541:6:50","type":""}],"src":"9487:250:50"},{"body":{"nodeType":"YulBlock","src":"9879:150:50","statements":[{"nodeType":"YulVariableDeclaration","src":"9889:27:50","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"9909:6:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"9903:5:50"},"nodeType":"YulFunctionCall","src":"9903:13:50"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"9893:6:50","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"9964:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"9972:4:50","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9960:3:50"},"nodeType":"YulFunctionCall","src":"9960:17:50"},{"name":"pos","nodeType":"YulIdentifier","src":"9979:3:50"},{"name":"length","nodeType":"YulIdentifier","src":"9984:6:50"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"9925:34:50"},"nodeType":"YulFunctionCall","src":"9925:66:50"},"nodeType":"YulExpressionStatement","src":"9925:66:50"},{"nodeType":"YulAssignment","src":"10000:23:50","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"10011:3:50"},{"name":"length","nodeType":"YulIdentifier","src":"10016:6:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10007:3:50"},"nodeType":"YulFunctionCall","src":"10007:16:50"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"10000:3:50"}]}]},"name":"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"9855:3:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"9860:6:50","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"9871:3:50","type":""}],"src":"9742:287:50"},{"body":{"nodeType":"YulBlock","src":"10208:179:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10225:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"10236:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10218:6:50"},"nodeType":"YulFunctionCall","src":"10218:21:50"},"nodeType":"YulExpressionStatement","src":"10218:21:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10259:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"10270:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10255:3:50"},"nodeType":"YulFunctionCall","src":"10255:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"10275:2:50","type":"","value":"29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10248:6:50"},"nodeType":"YulFunctionCall","src":"10248:30:50"},"nodeType":"YulExpressionStatement","src":"10248:30:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10298:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"10309:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10294:3:50"},"nodeType":"YulFunctionCall","src":"10294:18:50"},{"hexValue":"416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374","kind":"string","nodeType":"YulLiteral","src":"10314:31:50","type":"","value":"Address: call to non-contract"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10287:6:50"},"nodeType":"YulFunctionCall","src":"10287:59:50"},"nodeType":"YulExpressionStatement","src":"10287:59:50"},{"nodeType":"YulAssignment","src":"10355:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10367:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"10378:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10363:3:50"},"nodeType":"YulFunctionCall","src":"10363:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"10355:4:50"}]}]},"name":"abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"10185:9:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"10199:4:50","type":""}],"src":"10034:353:50"},{"body":{"nodeType":"YulBlock","src":"10513:275:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10530:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"10541:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10523:6:50"},"nodeType":"YulFunctionCall","src":"10523:21:50"},"nodeType":"YulExpressionStatement","src":"10523:21:50"},{"nodeType":"YulVariableDeclaration","src":"10553:27:50","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"10573:6:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"10567:5:50"},"nodeType":"YulFunctionCall","src":"10567:13:50"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"10557:6:50","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10600:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"10611:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10596:3:50"},"nodeType":"YulFunctionCall","src":"10596:18:50"},{"name":"length","nodeType":"YulIdentifier","src":"10616:6:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10589:6:50"},"nodeType":"YulFunctionCall","src":"10589:34:50"},"nodeType":"YulExpressionStatement","src":"10589:34:50"},{"expression":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"10671:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"10679:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10667:3:50"},"nodeType":"YulFunctionCall","src":"10667:15:50"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10688:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"10699:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10684:3:50"},"nodeType":"YulFunctionCall","src":"10684:18:50"},{"name":"length","nodeType":"YulIdentifier","src":"10704:6:50"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"10632:34:50"},"nodeType":"YulFunctionCall","src":"10632:79:50"},"nodeType":"YulExpressionStatement","src":"10632:79:50"},{"nodeType":"YulAssignment","src":"10720:62:50","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10736:9:50"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"10755:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"10763:2:50","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10751:3:50"},"nodeType":"YulFunctionCall","src":"10751:15:50"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10772:2:50","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"10768:3:50"},"nodeType":"YulFunctionCall","src":"10768:7:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"10747:3:50"},"nodeType":"YulFunctionCall","src":"10747:29:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10732:3:50"},"nodeType":"YulFunctionCall","src":"10732:45:50"},{"kind":"number","nodeType":"YulLiteral","src":"10779:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10728:3:50"},"nodeType":"YulFunctionCall","src":"10728:54:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"10720:4:50"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"10482:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"10493:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"10504:4:50","type":""}],"src":"10392:396:50"}]},"contents":"{\n { }\n function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n if iszero(eq(value, and(value, shl(224, 0xffffffff)))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function abi_decode_tuple_t_uint16(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n if iszero(eq(value, and(value, 0xffff))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 96)\n let pos := headStart\n pos := headStart\n let srcPtr := value0\n let i := 0\n for { } lt(i, 0x03) { i := add(i, 1) }\n {\n mstore(pos, and(mload(srcPtr), 0xff))\n let _1 := 0x20\n pos := add(pos, _1)\n srcPtr := add(srcPtr, _1)\n }\n }\n function validator_revert_address(value)\n {\n if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n }\n function abi_encode_tuple_t_contract$_IDAO_$2538__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_encode_tuple_t_enum$_PluginType_$3994__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n if iszero(lt(value0, 3))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x21)\n revert(0, 0x24)\n }\n mstore(headStart, value0)\n }\n function panic_error_0x41()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function abi_decode_tuple_t_addresst_bytes_memory_ptr(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n let offset := calldataload(add(headStart, 32))\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n let _2 := add(headStart, offset)\n if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n let _3 := calldataload(_2)\n if gt(_3, _1) { panic_error_0x41() }\n let _4 := not(31)\n let memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n mstore(memPtr, _3)\n if gt(add(add(_2, _3), 32), dataEnd) { revert(0, 0) }\n calldatacopy(add(memPtr, 32), add(_2, 32), _3)\n mstore(add(add(memPtr, _3), 32), 0)\n value1 := memPtr\n }\n function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_decode_tuple_t_contract$_IDAO_$2538(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n }\n function abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 46)\n mstore(add(headStart, 64), \"Initializable: contract is alrea\")\n mstore(add(headStart, 96), \"dy initialized\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xff))\n }\n function abi_encode_tuple_t_stringliteral_36e108fa7a809b52ab1951dd91c117a7bc9ac5250bdf1aa162d4e104f7edf9eb__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 44)\n mstore(add(headStart, 64), \"Function must be called through \")\n mstore(add(headStart, 96), \"delegatecall\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_52f1ead4d9653e13afbd2e90ef2587c30187cd50b2e97d784e3f7a7541247434__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 44)\n mstore(add(headStart, 64), \"Function must be called through \")\n mstore(add(headStart, 96), \"active proxy\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_67f0151b4ad1dcfa0e3302a0cd6019f51582ef1807b37dceb00bd852a514f7f4__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 56)\n mstore(add(headStart, 64), \"UUPSUpgradeable: must not be cal\")\n mstore(add(headStart, 96), \"led through delegatecall\")\n tail := add(headStart, 128)\n }\n function abi_decode_tuple_t_bytes32_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := mload(headStart)\n }\n function abi_encode_tuple_t_stringliteral_8e8e2fbcb586f700b5b14e2c4a650c8d83b9773c31c5fe8962070ea544e11f24__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 46)\n mstore(add(headStart, 64), \"ERC1967Upgrade: new implementati\")\n mstore(add(headStart, 96), \"on is not UUPS\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_76b6b6debfc5febf101145a79ecf0b0d2e89e397dfdab2bca99888370411152c__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 41)\n mstore(add(headStart, 64), \"ERC1967Upgrade: unsupported prox\")\n mstore(add(headStart, 96), \"iableUUID\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 43)\n mstore(add(headStart, 64), \"Initializable: contract is not i\")\n mstore(add(headStart, 96), \"nitializing\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_address_t_address_t_bytes32_t_bytes_calldata_ptr__to_t_address_t_address_t_bytes32_t_bytes_memory_ptr__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n {\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n mstore(add(headStart, 64), value2)\n mstore(add(headStart, 96), 128)\n mstore(add(headStart, 128), value4)\n calldatacopy(add(headStart, 160), value3, value4)\n mstore(add(add(headStart, value4), 160), 0)\n tail := add(add(headStart, and(add(value4, 31), not(31))), 160)\n }\n function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := mload(headStart)\n if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_address_t_address_t_address_t_bytes32__to_t_address_t_address_t_address_t_bytes32__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n {\n tail := add(headStart, 128)\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n mstore(add(headStart, 64), and(value2, _1))\n mstore(add(headStart, 96), value3)\n }\n function abi_encode_tuple_t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 45)\n mstore(add(headStart, 64), \"ERC1967: new implementation is n\")\n mstore(add(headStart, 96), \"ot a contract\")\n tail := add(headStart, 128)\n }\n function copy_memory_to_memory_with_cleanup(src, dst, length)\n {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n mstore(add(dst, length), 0)\n }\n function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n {\n let length := mload(value0)\n copy_memory_to_memory_with_cleanup(add(value0, 0x20), pos, length)\n end := add(pos, length)\n }\n function abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 29)\n mstore(add(headStart, 64), \"Address: call to non-contract\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n mstore(headStart, 32)\n let length := mload(value0)\n mstore(add(headStart, 32), length)\n copy_memory_to_memory_with_cleanup(add(value0, 32), add(headStart, 64), length)\n tail := add(add(headStart, and(add(length, 31), not(31))), 64)\n }\n}","id":50,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{"554":[{"length":32,"start":1145},{"length":32,"start":1278},{"length":32,"start":1524},{"length":32,"start":1657},{"length":32,"start":1891}]},"linkReferences":{},"object":"6080604052600436106100e85760003560e01c806352d1902d1161008a578063c4d66de811610059578063c4d66de814610256578063c9c4bfca14610276578063d4b83992146102aa578063efe51cca146102ca57600080fd5b806352d1902d146101e75780635c60da1b1461020a5780636accab8c1461021f578063776d1a011461023657600080fd5b80633659cfe6116100c65780633659cfe6146101665780634162169f1461018657806341de6830146101b85780634f1ef286146101d457600080fd5b806301ffc9a7146100ed578063039a8c50146101225780632ae9c60014610144575b600080fd5b3480156100f957600080fd5b5061010d610108366004610fed565b6102e1565b60405190151581526020015b60405180910390f35b34801561012e57600080fd5b5061014261013d366004611017565b61034d565b005b34801561015057600080fd5b50610159610445565b604051610119919061103b565b34801561017257600080fd5b50610142610181366004611084565b61046f565b34801561019257600080fd5b5060c9546001600160a01b03165b6040516001600160a01b039091168152602001610119565b3480156101c457600080fd5b50600060405161011991906110a1565b6101426101e23660046110df565b6105ea565b3480156101f357600080fd5b506101fc610756565b604051908152602001610119565b34801561021657600080fd5b506101a061081b565b34801561022b57600080fd5b506101fc61012d5481565b34801561024257600080fd5b50610142610251366004611084565b610853565b34801561026257600080fd5b50610142610271366004611084565b6108b2565b34801561028257600080fd5b506101fc7f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f581565b3480156102b657600080fd5b5060fb546101a0906001600160a01b031681565b3480156102d657600080fd5b506101fc61012e5481565b60006001600160e01b0319821663041de68360e41b148061031157506001600160e01b03198216621574e360e91b145b8061032c57506001600160e01b031982166352d1902d60e01b145b8061034757506301ffc9a760e01b6001600160e01b03198316145b92915050565b600054600290610100900460ff1615801561036f575060005460ff8083169116105b6103d75760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805461ffff191660ff831617610100179055600261ffff831610156103ff57600261012e555b6000805461ff001916905560405160ff821681527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b61044d610fcf565b5060408051606081018252600181526004602082015260009181019190915290565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036104fc5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b60648201526084016103ce565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166105577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b0316146105c25760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b60648201526084016103ce565b6105cb8161099e565b604080516000808252602082019092526105e7918391906109db565b50565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036106775760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b60648201526084016103ce565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166106d27f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b03161461073d5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b60648201526084016103ce565b6107468261099e565b610752828260016109db565b5050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146107f65760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016103ce565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b600061084e7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b60fb80546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d690600090a35050565b600054600290610100900460ff161580156108d4575060005460ff8083169116105b6109375760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016103ce565b6000805461ffff191660ff83161761010017905561095482610b80565b600161012d55600261012e556000805461ff001916905560405160ff821681527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602001610439565b60c9547f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f590610752906001600160a01b0316303384600036610bf4565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610a1357610a0e83610cb0565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610a6d575060408051601f3d908101601f19168201909252610a6a918101906111a3565b60015b610adf5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201527f6f6e206973206e6f74205555505300000000000000000000000000000000000060648201526084016103ce565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114610b745760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f7860448201527f6961626c6555554944000000000000000000000000000000000000000000000060648201526084016103ce565b50610a0e838383610d7b565b600054610100900460ff16610beb5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103ce565b6105e781610da6565b604051637ef7c88360e11b81526001600160a01b0387169063fdef910690610c2890889088908890889088906004016111bc565b602060405180830381865afa158015610c45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c699190611210565b610ca857604051630cb6f8ed60e21b81526001600160a01b038088166004830152808716602483015285166044820152606481018490526084016103ce565b505050505050565b6001600160a01b0381163b610d2d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e74726163740000000000000000000000000000000000000060648201526084016103ce565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610d8483610e40565b600082511180610d915750805b15610a0e57610da08383610e80565b50505050565b600054610100900460ff16610e115760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103ce565b60c9805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610e4981610cb0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060610ea583836040518060600160405280602781526020016112a660279139610eac565b9392505050565b6060600080856001600160a01b031685604051610ec99190611256565b600060405180830381855af49150503d8060008114610f04576040519150601f19603f3d011682016040523d82523d6000602084013e610f09565b606091505b5091509150610f1a86838387610f24565b9695505050505050565b60608315610f93578251600003610f8c576001600160a01b0385163b610f8c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016103ce565b5081610f9d565b610f9d8383610fa5565b949350505050565b815115610fb55781518083602001fd5b8060405162461bcd60e51b81526004016103ce9190611272565b60405180606001604052806003906020820280368337509192915050565b600060208284031215610fff57600080fd5b81356001600160e01b031981168114610ea557600080fd5b60006020828403121561102957600080fd5b813561ffff81168114610ea557600080fd5b60608101818360005b600381101561106657815160ff16835260209283019290910190600101611044565b50505092915050565b6001600160a01b03811681146105e757600080fd5b60006020828403121561109657600080fd5b8135610ea58161106f565b60208101600383106110c357634e487b7160e01b600052602160045260246000fd5b91905290565b634e487b7160e01b600052604160045260246000fd5b600080604083850312156110f257600080fd5b82356110fd8161106f565b9150602083013567ffffffffffffffff8082111561111a57600080fd5b818501915085601f83011261112e57600080fd5b813581811115611140576111406110c9565b604051601f8201601f19908116603f01168101908382118183101715611168576111686110c9565b8160405282815288602084870101111561118157600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6000602082840312156111b557600080fd5b5051919050565b60006001600160a01b03808816835280871660208401525084604083015260806060830152826080830152828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b60006020828403121561122257600080fd5b81518015158114610ea557600080fd5b60005b8381101561124d578181015183820152602001611235565b50506000910152565b60008251611268818460208701611232565b9190910192915050565b6020815260008251806020840152611291816040850160208701611232565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xE8 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x52D1902D GT PUSH2 0x8A JUMPI DUP1 PUSH4 0xC4D66DE8 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0x256 JUMPI DUP1 PUSH4 0xC9C4BFCA EQ PUSH2 0x276 JUMPI DUP1 PUSH4 0xD4B83992 EQ PUSH2 0x2AA JUMPI DUP1 PUSH4 0xEFE51CCA EQ PUSH2 0x2CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x52D1902D EQ PUSH2 0x1E7 JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0x20A JUMPI DUP1 PUSH4 0x6ACCAB8C EQ PUSH2 0x21F JUMPI DUP1 PUSH4 0x776D1A01 EQ PUSH2 0x236 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x3659CFE6 GT PUSH2 0xC6 JUMPI DUP1 PUSH4 0x3659CFE6 EQ PUSH2 0x166 JUMPI DUP1 PUSH4 0x4162169F EQ PUSH2 0x186 JUMPI DUP1 PUSH4 0x41DE6830 EQ PUSH2 0x1B8 JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x1D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xED JUMPI DUP1 PUSH4 0x39A8C50 EQ PUSH2 0x122 JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0x144 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xF9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x10D PUSH2 0x108 CALLDATASIZE PUSH1 0x4 PUSH2 0xFED JUMP JUMPDEST PUSH2 0x2E1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x12E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x142 PUSH2 0x13D CALLDATASIZE PUSH1 0x4 PUSH2 0x1017 JUMP JUMPDEST PUSH2 0x34D JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x150 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x159 PUSH2 0x445 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x119 SWAP2 SWAP1 PUSH2 0x103B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x172 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x142 PUSH2 0x181 CALLDATASIZE PUSH1 0x4 PUSH2 0x1084 JUMP JUMPDEST PUSH2 0x46F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x192 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xC9 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x119 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 PUSH1 0x40 MLOAD PUSH2 0x119 SWAP2 SWAP1 PUSH2 0x10A1 JUMP JUMPDEST PUSH2 0x142 PUSH2 0x1E2 CALLDATASIZE PUSH1 0x4 PUSH2 0x10DF JUMP JUMPDEST PUSH2 0x5EA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FC PUSH2 0x756 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x119 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x216 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1A0 PUSH2 0x81B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x22B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FC PUSH2 0x12D SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x242 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x142 PUSH2 0x251 CALLDATASIZE PUSH1 0x4 PUSH2 0x1084 JUMP JUMPDEST PUSH2 0x853 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x262 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x142 PUSH2 0x271 CALLDATASIZE PUSH1 0x4 PUSH2 0x1084 JUMP JUMPDEST PUSH2 0x8B2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x282 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FC PUSH32 0x821B6E3A557148015A918C89E5D092E878A69854A2D1A410635F771BD5A8A3F5 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xFB SLOAD PUSH2 0x1A0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FC PUSH2 0x12E SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x41DE683 PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x311 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x32C JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x52D1902D PUSH1 0xE0 SHL EQ JUMPDEST DUP1 PUSH2 0x347 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x2 SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH2 0x36F JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF DUP1 DUP4 AND SWAP2 AND LT JUMPDEST PUSH2 0x3D7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x44 DUP3 ADD MSTORE PUSH14 0x191E481A5B9A5D1A585B1A5E9959 PUSH1 0x92 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH2 0xFFFF NOT AND PUSH1 0xFF DUP4 AND OR PUSH2 0x100 OR SWAP1 SSTORE PUSH1 0x2 PUSH2 0xFFFF DUP4 AND LT ISZERO PUSH2 0x3FF JUMPI PUSH1 0x2 PUSH2 0x12E SSTORE JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH1 0xFF DUP3 AND DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH2 0x44D PUSH2 0xFCF JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x4FC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x19195B1959D85D1958D85B1B PUSH1 0xA2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3CE JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x557 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x5C2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x6163746976652070726F7879 PUSH1 0xA0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3CE JUMP JUMPDEST PUSH2 0x5CB DUP2 PUSH2 0x99E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x5E7 SWAP2 DUP4 SWAP2 SWAP1 PUSH2 0x9DB JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x677 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x19195B1959D85D1958D85B1B PUSH1 0xA2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3CE JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x6D2 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x73D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x6163746976652070726F7879 PUSH1 0xA0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3CE JUMP JUMPDEST PUSH2 0x746 DUP3 PUSH2 0x99E JUMP JUMPDEST PUSH2 0x752 DUP3 DUP3 PUSH1 0x1 PUSH2 0x9DB JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x7F6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x38 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x555550535570677261646561626C653A206D757374206E6F742062652063616C PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6C6564207468726F7567682064656C656761746563616C6C0000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3CE JUMP JUMPDEST POP PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x84E PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0xFB DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP2 SWAP1 DUP3 SWAP1 PUSH32 0x90CC2F570A6EB594B1580EA3E41247D2D73A55281889E86BD4EC2FC29C7E62D6 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x2 SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH2 0x8D4 JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF DUP1 DUP4 AND SWAP2 AND LT JUMPDEST PUSH2 0x937 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x44 DUP3 ADD MSTORE PUSH14 0x191E481A5B9A5D1A585B1A5E9959 PUSH1 0x92 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3CE JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH2 0xFFFF NOT AND PUSH1 0xFF DUP4 AND OR PUSH2 0x100 OR SWAP1 SSTORE PUSH2 0x954 DUP3 PUSH2 0xB80 JUMP JUMPDEST PUSH1 0x1 PUSH2 0x12D SSTORE PUSH1 0x2 PUSH2 0x12E SSTORE PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH1 0xFF DUP3 AND DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH2 0x439 JUMP JUMPDEST PUSH1 0xC9 SLOAD PUSH32 0x821B6E3A557148015A918C89E5D092E878A69854A2D1A410635F771BD5A8A3F5 SWAP1 PUSH2 0x752 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ADDRESS CALLER DUP5 PUSH1 0x0 CALLDATASIZE PUSH2 0xBF4 JUMP JUMPDEST PUSH32 0x4910FDFA16FED3260ED0E7147F7CC6DA11A60208B5B9406D12A635614FFD9143 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0xA13 JUMPI PUSH2 0xA0E DUP4 PUSH2 0xCB0 JUMP JUMPDEST POP POP POP JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x52D1902D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0xA6D JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0xA6A SWAP2 DUP2 ADD SWAP1 PUSH2 0x11A3 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0xADF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524331393637557067726164653A206E657720696D706C656D656E74617469 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F6E206973206E6F742055555053000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3CE JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC DUP2 EQ PUSH2 0xB74 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524331393637557067726164653A20756E737570706F727465642070726F78 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6961626C65555549440000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3CE JUMP JUMPDEST POP PUSH2 0xA0E DUP4 DUP4 DUP4 PUSH2 0xD7B JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0xBEB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3CE JUMP JUMPDEST PUSH2 0x5E7 DUP2 PUSH2 0xDA6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x7EF7C883 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0xFDEF9106 SWAP1 PUSH2 0xC28 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x11BC JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC45 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xC69 SWAP2 SWAP1 PUSH2 0x1210 JUMP JUMPDEST PUSH2 0xCA8 JUMPI PUSH1 0x40 MLOAD PUSH4 0xCB6F8ED PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND PUSH1 0x4 DUP4 ADD MSTORE DUP1 DUP8 AND PUSH1 0x24 DUP4 ADD MSTORE DUP6 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x84 ADD PUSH2 0x3CE JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND EXTCODESIZE PUSH2 0xD2D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313936373A206E657720696D706C656D656E746174696F6E206973206E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F74206120636F6E747261637400000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3CE JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xD84 DUP4 PUSH2 0xE40 JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD GT DUP1 PUSH2 0xD91 JUMPI POP DUP1 JUMPDEST ISZERO PUSH2 0xA0E JUMPI PUSH2 0xDA0 DUP4 DUP4 PUSH2 0xE80 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0xE11 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3CE JUMP JUMPDEST PUSH1 0xC9 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xE49 DUP2 PUSH2 0xCB0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xEA5 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x12A6 PUSH1 0x27 SWAP2 CODECOPY PUSH2 0xEAC JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0xEC9 SWAP2 SWAP1 PUSH2 0x1256 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xF04 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xF09 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0xF1A DUP7 DUP4 DUP4 DUP8 PUSH2 0xF24 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0xF93 JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0xF8C JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0xF8C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3CE JUMP JUMPDEST POP DUP2 PUSH2 0xF9D JUMP JUMPDEST PUSH2 0xF9D DUP4 DUP4 PUSH2 0xFA5 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0xFB5 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3CE SWAP2 SWAP1 PUSH2 0x1272 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xFFF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0xEA5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1029 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH2 0xEA5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0x1066 JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x1044 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x5E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1096 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xEA5 DUP2 PUSH2 0x106F JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH1 0x3 DUP4 LT PUSH2 0x10C3 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 SWAP1 MSTORE SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x10F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x10FD DUP2 PUSH2 0x106F JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x111A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x112E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x1140 JUMPI PUSH2 0x1140 PUSH2 0x10C9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x1168 JUMPI PUSH2 0x1168 PUSH2 0x10C9 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x1181 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x11B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND DUP4 MSTORE DUP1 DUP8 AND PUSH1 0x20 DUP5 ADD MSTORE POP DUP5 PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x80 PUSH1 0x60 DUP4 ADD MSTORE DUP3 PUSH1 0x80 DUP4 ADD MSTORE DUP3 DUP5 PUSH1 0xA0 DUP5 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0xA0 DUP5 DUP5 ADD ADD MSTORE PUSH1 0xA0 PUSH1 0x1F NOT PUSH1 0x1F DUP6 ADD AND DUP4 ADD ADD SWAP1 POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1222 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xEA5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x124D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1235 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x1268 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x1232 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x1291 DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x1232 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A164 PUSH20 0x6F6C6343000811000A0000000000000000000000 ","sourceMap":"755:431:31:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2810:366:40;;;;;;;;;;-1:-1:-1;2810:366:40;;;;;:::i;:::-;;:::i;:::-;;;470:14:50;;463:22;445:41;;433:2;418:18;2810:366:40;;;;;;;;1036:148:31;;;;;;;;;;-1:-1:-1;1036:148:31;;;;;:::i;:::-;;:::i;:::-;;631:98:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;3408:195:5:-;;;;;;;;;;-1:-1:-1;3408:195:5;;;;;:::i;:::-;;:::i;1200:70:35:-;;;;;;;;;;-1:-1:-1;1259:4:35;;-1:-1:-1;;;;;1259:4:35;1200:70;;;-1:-1:-1;;;;;1868:55:50;;;1850:74;;1838:2;1823:18;1200:70:35;1691:239:50;1710:103:40;;;;;;;;;;-1:-1:-1;1762:10:40;1710:103;;;;;;:::i;3922:220:5:-;;;;;;:::i;:::-;;:::i;3027:131::-;;;;;;;;;;;;;:::i;:::-;;;3622:25:50;;;3610:2;3595:18;3027:131:5;3476:177:50;3457:100:40;;;;;;;;;;;;;:::i;827:21:31:-;;;;;;;;;;;;;;;;2439:166:40;;;;;;;;;;-1:-1:-1;2439:166:40;;;;;:::i;:::-;;:::i;882:148:31:-;;;;;;;;;;-1:-1:-1;882:148:31;;;;;:::i;:::-;;:::i;1911:93:40:-;;;;;;;;;;;;1966:38;1911:93;;1293:21;;;;;;;;;;-1:-1:-1;1293:21:40;;;;-1:-1:-1;;;;;1293:21:40;;;854::31;;;;;;;;;;;;;;;;2810:366:40;2896:4;-1:-1:-1;;;;;;2931:41:40;;-1:-1:-1;;;2931:41:40;;:107;;-1:-1:-1;;;;;;;2988:50:40;;-1:-1:-1;;;2988:50:40;2931:107;:185;;;-1:-1:-1;;;;;;;3054:62:40;;-1:-1:-1;;;3054:62:40;2931:185;:238;;;-1:-1:-1;;;;;;;;;;1189:51:10;;;3132:37:40;2912:257;2810:366;-1:-1:-1;;2810:366:40:o;1036:148:31:-;4882:13:4;;1106:1:31;;4882:13:4;;;;;4881:14;:40;;;;-1:-1:-1;4899:12:4;;:22;;;;:12;;:22;4881:40;4873:99;;;;-1:-1:-1;;;4873:99:4;;4538:2:50;4873:99:4;;;4520:21:50;4577:2;4557:18;;;4550:30;4616:34;4596:18;;;4589:62;-1:-1:-1;;;4667:18:50;;;4660:44;4721:19;;4873:99:4;;;;;;;;;4982:12;:22;;-1:-1:-1;;5014:20:4;4982:22;;;5014:20;4982:22;5014:20;;;1140:1:31::1;1123:18;::::0;::::1;;1119:59;;;1166:1;1157:6;:10:::0;1119:59:::1;5071:5:4::0;5055:21;;-1:-1:-1;;5055:21:4;;;5091:20;;4923:4:50;4911:17;;4893:36;;5091:20:4;;4881:2:50;4866:18;5091:20:4;;;;;;;;1036:148:31;;:::o;631:98:49:-;679:15;;:::i;:::-;-1:-1:-1;706:16:49;;;;;;;;714:1;706:16;;717:1;706:16;;;;-1:-1:-1;706:16:49;;;;;;;;631:98::o;3408:195:5:-;-1:-1:-1;;;;;1764:6:5;1747:23;1755:4;1747:23;1739:80;;;;-1:-1:-1;;;1739:80:5;;5142:2:50;1739:80:5;;;5124:21:50;5181:2;5161:18;;;5154:30;5220:34;5200:18;;;5193:62;-1:-1:-1;;;5271:18:50;;;5264:42;5323:19;;1739:80:5;4940:408:50;1739:80:5;1861:6;-1:-1:-1;;;;;1837:30:5;:20;1180:66:2;1557:65;-1:-1:-1;;;;;1557:65:2;;1478:151;1837:20:5;-1:-1:-1;;;;;1837:30:5;;1829:87;;;;-1:-1:-1;;;1829:87:5;;5555:2:50;1829:87:5;;;5537:21:50;5594:2;5574:18;;;5567:30;5633:34;5613:18;;;5606:62;-1:-1:-1;;;5684:18:50;;;5677:42;5736:19;;1829:87:5;5353:408:50;1829:87:5;3489:36:::1;3507:17;3489;:36::i;:::-;3576:12;::::0;;3586:1:::1;3576:12:::0;;;::::1;::::0;::::1;::::0;;;3535:61:::1;::::0;3557:17;;3576:12;3535:21:::1;:61::i;:::-;3408:195:::0;:::o;3922:220::-;-1:-1:-1;;;;;1764:6:5;1747:23;1755:4;1747:23;1739:80;;;;-1:-1:-1;;;1739:80:5;;5142:2:50;1739:80:5;;;5124:21:50;5181:2;5161:18;;;5154:30;5220:34;5200:18;;;5193:62;-1:-1:-1;;;5271:18:50;;;5264:42;5323:19;;1739:80:5;4940:408:50;1739:80:5;1861:6;-1:-1:-1;;;;;1837:30:5;:20;1180:66:2;1557:65;-1:-1:-1;;;;;1557:65:2;;1478:151;1837:20:5;-1:-1:-1;;;;;1837:30:5;;1829:87;;;;-1:-1:-1;;;1829:87:5;;5555:2:50;1829:87:5;;;5537:21:50;5594:2;5574:18;;;5567:30;5633:34;5613:18;;;5606:62;-1:-1:-1;;;5684:18:50;;;5677:42;5736:19;;1829:87:5;5353:408:50;1829:87:5;4037:36:::1;4055:17;4037;:36::i;:::-;4083:52;4105:17;4124:4;4130;4083:21;:52::i;:::-;3922:220:::0;;:::o;3027:131::-;3105:7;2190:4;-1:-1:-1;;;;;2199:6:5;2182:23;;2174:92;;;;-1:-1:-1;;;2174:92:5;;5968:2:50;2174:92:5;;;5950:21:50;6007:2;5987:18;;;5980:30;6046:34;6026:18;;;6019:62;6117:26;6097:18;;;6090:54;6161:19;;2174:92:5;5766:420:50;2174:92:5;-1:-1:-1;1180:66:2::1;3027:131:5::0;:::o;3457:100:40:-;3504:7;3530:20;1180:66:2;1557:65;-1:-1:-1;;;;;1557:65:2;;1478:151;3530:20:40;3523:27;;3457:100;:::o;2439:166::-;2517:6;;;-1:-1:-1;;;;;2533:16:40;;;-1:-1:-1;;2533:16:40;;;;;;;2564:34;;2517:6;;;2533:16;2517:6;;2564:34;;2492:22;;2564:34;2482:123;2439:166;:::o;882:148:31:-;4882:13:4;;936:1:31;;4882:13:4;;;;;4881:14;:40;;;;-1:-1:-1;4899:12:4;;:22;;;;:12;;:22;4881:40;4873:99;;;;-1:-1:-1;;;4873:99:4;;4538:2:50;4873:99:4;;;4520:21:50;4577:2;4557:18;;;4550:30;4616:34;4596:18;;;4589:62;-1:-1:-1;;;4667:18:50;;;4660:44;4721:19;;4873:99:4;4336:410:50;4873:99:4;4982:12;:22;;-1:-1:-1;;5014:20:4;4982:22;;;5014:20;4982:22;5014:20;;;949:34:31::1;978:4:::0;949:28:::1;:34::i;:::-;1002:1;993:6;:10:::0;1022:1:::1;1013:6;:10:::0;-1:-1:-1;5055:21:4;;-1:-1:-1;;5055:21:4;;;5091:20;;4923:4:50;4911:17;;4893:36;;5091:20:4;;4881:2:50;4866:18;5091:20:4;4751:184:50;5390:204:40;1616:4:35;;1966:38:40;;1610:67:35;;-1:-1:-1;;;;;1616:4:35;1630;965:10:7;1651:13:35;1039:14:7;;1610:5:35;:67::i;2841:944:2:-;839:66;3257:59;;;3253:526;;;3332:37;3351:17;3332:18;:37::i;:::-;2841:944;;;:::o;3253:526::-;3433:17;-1:-1:-1;;;;;3404:61:2;;:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3404:63:2;;;;;;;;-1:-1:-1;;3404:63:2;;;;;;;;;;;;:::i;:::-;;;3400:302;;3631:56;;-1:-1:-1;;;3631:56:2;;6582:2:50;3631:56:2;;;6564:21:50;6621:2;6601:18;;;6594:30;6660:34;6640:18;;;6633:62;6731:16;6711:18;;;6704:44;6765:19;;3631:56:2;6380:410:50;3400:302:2;1180:66;3517:28;;3509:82;;;;-1:-1:-1;;;3509:82:2;;6997:2:50;3509:82:2;;;6979:21:50;7036:2;7016:18;;;7009:30;7075:34;7055:18;;;7048:62;7146:11;7126:18;;;7119:39;7175:19;;3509:82:2;6795:405:50;3509:82:2;3468:138;3715:53;3733:17;3752:4;3758:9;3715:17;:53::i;2172:139:40:-;5374:13:4;;;;;;;5366:69;;;;-1:-1:-1;;;5366:69:4;;7407:2:50;5366:69:4;;;7389:21:50;7446:2;7426:18;;;7419:30;7485:34;7465:18;;;7458:62;-1:-1:-1;;;7536:18:50;;;7529:41;7587:19;;5366:69:4;7205:407:50;5366:69:4;2265:39:40::1;2299:4;2265:33;:39::i;1041:363:36:-:0;1180:54;;-1:-1:-1;;;1180:54:36;;-1:-1:-1;;;;;1180:18:36;;;;;:54;;1199:6;;1207:4;;1213:13;;1228:5;;;;1180:54;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1175:226;;1251:150;;-1:-1:-1;;;1251:150:36;;-1:-1:-1;;;;;8899:15:50;;;1251:150:36;;;8881:34:50;8951:15;;;8931:18;;;8924:43;9003:15;;8983:18;;;8976:43;9035:18;;;9028:34;;;8792:19;;1251:150:36;8589:479:50;1175:226:36;1041:363;;;;;;:::o;1720:281:2:-;-1:-1:-1;;;;;1713:19:6;;;1793:106:2;;;;-1:-1:-1;;;1793:106:2;;9275:2:50;1793:106:2;;;9257:21:50;9314:2;9294:18;;;9287:30;9353:34;9333:18;;;9326:62;9424:15;9404:18;;;9397:43;9457:19;;1793:106:2;9073:409:50;1793:106:2;1180:66;1909:85;;-1:-1:-1;;1909:85:2;-1:-1:-1;;;;;1909:85:2;;;;;;;;;;1720:281::o;2393:276::-;2501:29;2512:17;2501:10;:29::i;:::-;2558:1;2544:4;:11;:15;:28;;;;2563:9;2544:28;2540:123;;;2588:64;2628:17;2647:4;2588:39;:64::i;:::-;;2393:276;;;:::o;1010:108:35:-;5374:13:4;;;;;;;5366:69;;;;-1:-1:-1;;;5366:69:4;;7407:2:50;5366:69:4;;;7389:21:50;7446:2;7426:18;;;7419:30;7485:34;7465:18;;;7458:62;-1:-1:-1;;;7536:18:50;;;7529:41;7587:19;;5366:69:4;7205:407:50;5366:69:4;1100:4:35::1;:11:::0;;-1:-1:-1;;1100:11:35::1;-1:-1:-1::0;;;;;1100:11:35;;;::::1;::::0;;;::::1;::::0;;1010:108::o;2107:152:2:-;2173:37;2192:17;2173:18;:37::i;:::-;2225:27;;-1:-1:-1;;;;;2225:27:2;;;;;;;;2107:152;:::o;6685:198:6:-;6768:12;6799:77;6820:6;6828:4;6799:77;;;;;;;;;;;;;;;;;:20;:77::i;:::-;6792:84;6685:198;-1:-1:-1;;;6685:198:6:o;7069:325::-;7210:12;7235;7249:23;7276:6;-1:-1:-1;;;;;7276:19:6;7296:4;7276:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7234:67;;;;7318:69;7345:6;7353:7;7362:10;7374:12;7318:26;:69::i;:::-;7311:76;7069:325;-1:-1:-1;;;;;;7069:325:6:o;7682:628::-;7862:12;7890:7;7886:418;;;7917:10;:17;7938:1;7917:22;7913:286;;-1:-1:-1;;;;;1713:19:6;;;8124:60;;;;-1:-1:-1;;;8124:60:6;;10236:2:50;8124:60:6;;;10218:21:50;10275:2;10255:18;;;10248:30;10314:31;10294:18;;;10287:59;10363:18;;8124:60:6;10034:353:50;8124:60:6;-1:-1:-1;8219:10:6;8212:17;;7886:418;8260:33;8268:10;8280:12;8260:7;:33::i;:::-;7682:628;;;;;;:::o;8832:540::-;8991:17;;:21;8987:379;;9219:10;9213:17;9275:15;9262:10;9258:2;9254:19;9247:44;8987:379;9342:12;9335:20;;-1:-1:-1;;;9335:20:6;;;;;;;;:::i;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:286:50:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:50;;209:43;;199:71;;266:1;263;256:12;497:272;555:6;608:2;596:9;587:7;583:23;579:32;576:52;;;624:1;621;614:12;576:52;663:9;650:23;713:6;706:5;702:18;695:5;692:29;682:57;;735:1;732;725:12;774:501;950:2;935:18;;939:9;1030:6;908:4;1064:205;1078:4;1075:1;1072:11;1064:205;;;1141:13;;1156:4;1137:24;1125:37;;1185:4;1209:12;;;;1244:15;;;;1098:1;1091:9;1064:205;;;1068:3;;;774:501;;;;:::o;1280:154::-;-1:-1:-1;;;;;1359:5:50;1355:54;1348:5;1345:65;1335:93;;1424:1;1421;1414:12;1439:247;1498:6;1551:2;1539:9;1530:7;1526:23;1522:32;1519:52;;;1567:1;1564;1557:12;1519:52;1606:9;1593:23;1625:31;1650:5;1625:31;:::i;1935:343::-;2082:2;2067:18;;2115:1;2104:13;;2094:144;;2160:10;2155:3;2151:20;2148:1;2141:31;2195:4;2192:1;2185:15;2223:4;2220:1;2213:15;2094:144;2247:25;;;1935:343;:::o;2283:127::-;2344:10;2339:3;2335:20;2332:1;2325:31;2375:4;2372:1;2365:15;2399:4;2396:1;2389:15;2415:1056;2492:6;2500;2553:2;2541:9;2532:7;2528:23;2524:32;2521:52;;;2569:1;2566;2559:12;2521:52;2608:9;2595:23;2627:31;2652:5;2627:31;:::i;:::-;2677:5;-1:-1:-1;2733:2:50;2718:18;;2705:32;2756:18;2786:14;;;2783:34;;;2813:1;2810;2803:12;2783:34;2851:6;2840:9;2836:22;2826:32;;2896:7;2889:4;2885:2;2881:13;2877:27;2867:55;;2918:1;2915;2908:12;2867:55;2954:2;2941:16;2976:2;2972;2969:10;2966:36;;;2982:18;;:::i;:::-;3057:2;3051:9;3025:2;3111:13;;-1:-1:-1;;3107:22:50;;;3131:2;3103:31;3099:40;3087:53;;;3155:18;;;3175:22;;;3152:46;3149:72;;;3201:18;;:::i;:::-;3241:10;3237:2;3230:22;3276:2;3268:6;3261:18;3316:7;3311:2;3306;3302;3298:11;3294:20;3291:33;3288:53;;;3337:1;3334;3327:12;3288:53;3393:2;3388;3384;3380:11;3375:2;3367:6;3363:15;3350:46;3438:1;3433:2;3428;3420:6;3416:15;3412:24;3405:35;3459:6;3449:16;;;;;;;2415:1056;;;;;:::o;6191:184::-;6261:6;6314:2;6302:9;6293:7;6289:23;6285:32;6282:52;;;6330:1;6327;6320:12;6282:52;-1:-1:-1;6353:16:50;;6191:184;-1:-1:-1;6191:184:50:o;7617:685::-;7821:4;-1:-1:-1;;;;;7931:2:50;7923:6;7919:15;7908:9;7901:34;7983:2;7975:6;7971:15;7966:2;7955:9;7951:18;7944:43;;8023:6;8018:2;8007:9;8003:18;7996:34;8066:3;8061:2;8050:9;8046:18;8039:31;8107:6;8101:3;8090:9;8086:19;8079:35;8165:6;8157;8151:3;8140:9;8136:19;8123:49;8222:1;8216:3;8207:6;8196:9;8192:22;8188:32;8181:43;8292:3;8285:2;8281:7;8276:2;8268:6;8264:15;8260:29;8249:9;8245:45;8241:55;8233:63;;7617:685;;;;;;;;:::o;8307:277::-;8374:6;8427:2;8415:9;8406:7;8402:23;8398:32;8395:52;;;8443:1;8440;8433:12;8395:52;8475:9;8469:16;8528:5;8521:13;8514:21;8507:5;8504:32;8494:60;;8550:1;8547;8540:12;9487:250;9572:1;9582:113;9596:6;9593:1;9590:13;9582:113;;;9672:11;;;9666:18;9653:11;;;9646:39;9618:2;9611:10;9582:113;;;-1:-1:-1;;9729:1:50;9711:16;;9704:27;9487:250::o;9742:287::-;9871:3;9909:6;9903:13;9925:66;9984:6;9979:3;9972:4;9964:6;9960:17;9925:66;:::i;:::-;10007:16;;;;;9742:287;-1:-1:-1;;9742:287:50:o;10392:396::-;10541:2;10530:9;10523:21;10504:4;10573:6;10567:13;10616:6;10611:2;10600:9;10596:18;10589:34;10632:79;10704:6;10699:2;10688:9;10684:18;10679:2;10671:6;10667:15;10632:79;:::i;:::-;10772:2;10751:15;-1:-1:-1;;10747:29:50;10732:45;;;;10779:2;10728:54;;10392:396;-1:-1:-1;;10392:396:50:o"},"gasEstimates":{"creation":{"codeDepositCost":"965000","executionCost":"infinite","totalCost":"infinite"},"external":{"UPGRADE_PLUGIN_PERMISSION_ID()":"239","dao()":"2365","implementation()":"2414","initialize(address)":"infinite","initializeFrom(uint16)":"76250","pluginType()":"294","protocolVersion()":"infinite","proxiableUUID()":"infinite","setTarget(address)":"26179","state1()":"2362","state2()":"2383","supportsInterface(bytes4)":"560","target()":"2403","upgradeTo(address)":"infinite","upgradeToAndCall(address,bytes)":"infinite"}},"methodIdentifiers":{"UPGRADE_PLUGIN_PERMISSION_ID()":"c9c4bfca","dao()":"4162169f","implementation()":"5c60da1b","initialize(address)":"c4d66de8","initializeFrom(uint16)":"039a8c50","pluginType()":"41de6830","protocolVersion()":"2ae9c600","proxiableUUID()":"52d1902d","setTarget(address)":"776d1a01","state1()":"6accab8c","state2()":"efe51cca","supportsInterface(bytes4)":"01ffc9a7","target()":"d4b83992","upgradeTo(address)":"3659cfe6","upgradeToAndCall(address,bytes)":"4f1ef286"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"dao\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"name\":\"DaoUnauthorized\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousTarget\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newTarget\",\"type\":\"address\"}],\"name\":\"TargetSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"UPGRADE_PLUGIN_PERMISSION_ID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"dao\",\"outputs\":[{\"internalType\":\"contract IDAO\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IDAO\",\"name\":\"_dao\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"_previousBuild\",\"type\":\"uint16\"}],\"name\":\"initializeFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pluginType\",\"outputs\":[{\"internalType\":\"enum IPlugin.PluginType\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"protocolVersion\",\"outputs\":[{\"internalType\":\"uint8[3]\",\"name\":\"\",\"type\":\"uint8[3]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_target\",\"type\":\"address\"}],\"name\":\"setTarget\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"state1\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"state2\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"target\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"upgradeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"DO NOT USE IN PRODUCTION!\",\"errors\":{\"DaoUnauthorized(address,address,address,bytes32)\":[{\"params\":{\"dao\":\"The associated DAO.\",\"permissionId\":\"The permission identifier.\",\"where\":\"The context in which the authorization reverted.\",\"who\":\"The address (EOA or contract) missing the permission.\"}}]},\"kind\":\"dev\",\"methods\":{\"dao()\":{\"returns\":{\"_0\":\"The DAO contract.\"}},\"implementation()\":{\"returns\":{\"_0\":\"The address of the implementation contract.\"}},\"protocolVersion()\":{\"details\":\"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\",\"returns\":{\"_0\":\"Returns the semantic Aragon OSx protocol version number.\"}},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"setTarget(address)\":{\"details\":\"Sets the target to a new target (`newTarget`).\"},\"supportsInterface(bytes4)\":{\"params\":{\"_interfaceId\":\"The ID of the interface.\"},\"returns\":{\"_0\":\"Returns `true` if the interface is supported.\"}},\"upgradeTo(address)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"},\"upgradeToAndCall(address,bytes)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"}},\"version\":1},\"userdoc\":{\"errors\":{\"DaoUnauthorized(address,address,address,bytes32)\":[{\"notice\":\"Thrown if a call is unauthorized in the associated DAO.\"}]},\"kind\":\"user\",\"methods\":{\"UPGRADE_PLUGIN_PERMISSION_ID()\":{\"notice\":\"The ID of the permission required to call the `_authorizeUpgrade` function.\"},\"dao()\":{\"notice\":\"Returns the DAO contract.\"},\"implementation()\":{\"notice\":\"Returns the address of the implementation contract in the [proxy storage slot](https://eips.ethereum.org/EIPS/eip-1967) slot the [UUPS proxy](https://eips.ethereum.org/EIPS/eip-1822) is pointing to.\"},\"pluginType()\":{\"notice\":\"Returns the plugin's type\"},\"protocolVersion()\":{\"notice\":\"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\"},\"setTarget(address)\":{\"notice\":\"Can only be called by the current owner. TODO\"},\"supportsInterface(bytes4)\":{\"notice\":\"Checks if an interface is supported by this or its parent contract.\"}},\"notice\":\"A mock upgradeable plugin to be deployed via the UUPS proxy pattern. v1.1 (Release 1, Build 2)\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/mocks/plugin/PluginUUPSUpgradeableMock.sol\":\"PluginUUPSUpgradeableMockBuild2\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/interfaces/IERC1967Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (interfaces/IERC1967.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\\n *\\n * _Available since v4.8.3._\\n */\\ninterface IERC1967Upgradeable {\\n /**\\n * @dev Emitted when the implementation is upgraded.\\n */\\n event Upgraded(address indexed implementation);\\n\\n /**\\n * @dev Emitted when the admin account has changed.\\n */\\n event AdminChanged(address previousAdmin, address newAdmin);\\n\\n /**\\n * @dev Emitted when the beacon is changed.\\n */\\n event BeaconUpgraded(address indexed beacon);\\n}\\n\",\"keccak256\":\"0x47d6e06872b12e72c79d1b5eb55842f860b5fb1207b2317c2358d2766b950a7b\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822ProxiableUpgradeable {\\n /**\\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n * address.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy.\\n */\\n function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../beacon/IBeaconUpgradeable.sol\\\";\\nimport \\\"../../interfaces/IERC1967Upgradeable.sol\\\";\\nimport \\\"../../interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\nimport \\\"../../utils/StorageSlotUpgradeable.sol\\\";\\nimport {Initializable} from \\\"../utils/Initializable.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n */\\nabstract contract ERC1967UpgradeUpgradeable is Initializable, IERC1967Upgradeable {\\n // This is the keccak-256 hash of \\\"eip1967.proxy.rollback\\\" subtracted by 1\\n bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n /**\\n * @dev Storage slot with the address of the current implementation.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n function __ERC1967Upgrade_init() internal onlyInitializing {\\n }\\n\\n function __ERC1967Upgrade_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _getImplementation() internal view returns (address) {\\n return StorageSlotUpgradeable.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 implementation slot.\\n */\\n function _setImplementation(address newImplementation) private {\\n require(AddressUpgradeable.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n StorageSlotUpgradeable.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n }\\n\\n /**\\n * @dev Perform implementation upgrade\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeTo(address newImplementation) internal {\\n _setImplementation(newImplementation);\\n emit Upgraded(newImplementation);\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCall(address newImplementation, bytes memory data, bool forceCall) internal {\\n _upgradeTo(newImplementation);\\n if (data.length > 0 || forceCall) {\\n AddressUpgradeable.functionDelegateCall(newImplementation, data);\\n }\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCallUUPS(address newImplementation, bytes memory data, bool forceCall) internal {\\n // Upgrades from old implementations will perform a rollback test. This test requires the new\\n // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n // this special case will break upgrade paths from old UUPS implementation to new ones.\\n if (StorageSlotUpgradeable.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n _setImplementation(newImplementation);\\n } else {\\n try IERC1822ProxiableUpgradeable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n require(slot == _IMPLEMENTATION_SLOT, \\\"ERC1967Upgrade: unsupported proxiableUUID\\\");\\n } catch {\\n revert(\\\"ERC1967Upgrade: new implementation is not UUPS\\\");\\n }\\n _upgradeToAndCall(newImplementation, data, forceCall);\\n }\\n }\\n\\n /**\\n * @dev Storage slot with the admin of the contract.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _getAdmin() internal view returns (address) {\\n return StorageSlotUpgradeable.getAddressSlot(_ADMIN_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 admin slot.\\n */\\n function _setAdmin(address newAdmin) private {\\n require(newAdmin != address(0), \\\"ERC1967: new admin is the zero address\\\");\\n StorageSlotUpgradeable.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n */\\n function _changeAdmin(address newAdmin) internal {\\n emit AdminChanged(_getAdmin(), newAdmin);\\n _setAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\\n */\\n bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n /**\\n * @dev Returns the current beacon.\\n */\\n function _getBeacon() internal view returns (address) {\\n return StorageSlotUpgradeable.getAddressSlot(_BEACON_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new beacon in the EIP1967 beacon slot.\\n */\\n function _setBeacon(address newBeacon) private {\\n require(AddressUpgradeable.isContract(newBeacon), \\\"ERC1967: new beacon is not a contract\\\");\\n require(\\n AddressUpgradeable.isContract(IBeaconUpgradeable(newBeacon).implementation()),\\n \\\"ERC1967: beacon implementation is not a contract\\\"\\n );\\n StorageSlotUpgradeable.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n }\\n\\n /**\\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n *\\n * Emits a {BeaconUpgraded} event.\\n */\\n function _upgradeBeaconToAndCall(address newBeacon, bytes memory data, bool forceCall) internal {\\n _setBeacon(newBeacon);\\n emit BeaconUpgraded(newBeacon);\\n if (data.length > 0 || forceCall) {\\n AddressUpgradeable.functionDelegateCall(IBeaconUpgradeable(newBeacon).implementation(), data);\\n }\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x7795808e3899c805254e3ae58074b20f799b466e3f43e057e47bedee5fb771f8\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeaconUpgradeable {\\n /**\\n * @dev Must return an address that can be used as a delegate call target.\\n *\\n * {BeaconProxy} will check that this address is a contract.\\n */\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/UUPSUpgradeable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport \\\"../ERC1967/ERC1967UpgradeUpgradeable.sol\\\";\\nimport {Initializable} from \\\"./Initializable.sol\\\";\\n\\n/**\\n * @dev An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an\\n * {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy.\\n *\\n * A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is\\n * reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing\\n * `UUPSUpgradeable` with a custom implementation of upgrades.\\n *\\n * The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism.\\n *\\n * _Available since v4.1._\\n */\\nabstract contract UUPSUpgradeable is Initializable, IERC1822ProxiableUpgradeable, ERC1967UpgradeUpgradeable {\\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable state-variable-assignment\\n address private immutable __self = address(this);\\n\\n /**\\n * @dev Check that the execution is being performed through a delegatecall call and that the execution context is\\n * a proxy contract with an implementation (as defined in ERC1967) pointing to self. This should only be the case\\n * for UUPS and transparent proxies that are using the current contract as their implementation. Execution of a\\n * function through ERC1167 minimal proxies (clones) would not normally pass this test, but is not guaranteed to\\n * fail.\\n */\\n modifier onlyProxy() {\\n require(address(this) != __self, \\\"Function must be called through delegatecall\\\");\\n require(_getImplementation() == __self, \\\"Function must be called through active proxy\\\");\\n _;\\n }\\n\\n /**\\n * @dev Check that the execution is not being performed through a delegate call. This allows a function to be\\n * callable on the implementing contract but not through proxies.\\n */\\n modifier notDelegated() {\\n require(address(this) == __self, \\\"UUPSUpgradeable: must not be called through delegatecall\\\");\\n _;\\n }\\n\\n function __UUPSUpgradeable_init() internal onlyInitializing {\\n }\\n\\n function __UUPSUpgradeable_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the\\n * implementation. It is used to validate the implementation's compatibility when performing an upgrade.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\\n */\\n function proxiableUUID() external view virtual override notDelegated returns (bytes32) {\\n return _IMPLEMENTATION_SLOT;\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy to `newImplementation`.\\n *\\n * Calls {_authorizeUpgrade}.\\n *\\n * Emits an {Upgraded} event.\\n *\\n * @custom:oz-upgrades-unsafe-allow-reachable delegatecall\\n */\\n function upgradeTo(address newImplementation) public virtual onlyProxy {\\n _authorizeUpgrade(newImplementation);\\n _upgradeToAndCallUUPS(newImplementation, new bytes(0), false);\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call\\n * encoded in `data`.\\n *\\n * Calls {_authorizeUpgrade}.\\n *\\n * Emits an {Upgraded} event.\\n *\\n * @custom:oz-upgrades-unsafe-allow-reachable delegatecall\\n */\\n function upgradeToAndCall(address newImplementation, bytes memory data) public payable virtual onlyProxy {\\n _authorizeUpgrade(newImplementation);\\n _upgradeToAndCallUUPS(newImplementation, data, true);\\n }\\n\\n /**\\n * @dev Function that should revert when `msg.sender` is not authorized to upgrade the contract. Called by\\n * {upgradeTo} and {upgradeToAndCall}.\\n *\\n * Normally, this function will use an xref:access.adoc[access control] modifier such as {Ownable-onlyOwner}.\\n *\\n * ```solidity\\n * function _authorizeUpgrade(address) internal override onlyOwner {}\\n * ```\\n */\\n function _authorizeUpgrade(address newImplementation) internal virtual;\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0xefb41f5c1a00249b7a99f0782f8c557865605426a3fb6e5fe9ae334293ae4f33\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n function __Context_init() internal onlyInitializing {\\n }\\n\\n function __Context_init_unchained() internal onlyInitializing {\\n }\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n function _contextSuffixLength() internal view virtual returns (uint256) {\\n return 0;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x75097e35253e7fb282ee4d7f27a80eaacfa759923185bf17302a89cbc059c5ef\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/StorageSlot.sol)\\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```solidity\\n * contract ERC1967 {\\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n * function _getImplementation() internal view returns (address) {\\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n * }\\n *\\n * function _setImplementation(address newImplementation) internal {\\n * require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n * }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._\\n * _Available since v4.9 for `string`, `bytes`._\\n */\\nlibrary StorageSlotUpgradeable {\\n struct AddressSlot {\\n address value;\\n }\\n\\n struct BooleanSlot {\\n bool value;\\n }\\n\\n struct Bytes32Slot {\\n bytes32 value;\\n }\\n\\n struct Uint256Slot {\\n uint256 value;\\n }\\n\\n struct StringSlot {\\n string value;\\n }\\n\\n struct BytesSlot {\\n bytes value;\\n }\\n\\n /**\\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n */\\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n */\\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n */\\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n */\\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` with member `value` located at `slot`.\\n */\\n function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\\n */\\n function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` with member `value` located at `slot`.\\n */\\n function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\\n */\\n function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n}\\n\",\"keccak256\":\"0x07ac95acad040f1fb1f6120dd0aa5f702db69446e95f82613721879d30de0908\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165Upgradeable.sol\\\";\\nimport {Initializable} from \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165Upgradeable is Initializable, IERC165Upgradeable {\\n function __ERC165_init() internal onlyInitializing {\\n }\\n\\n function __ERC165_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165Upgradeable).interfaceId;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0xd90d7723512df65ae417adaf0801042940f0dabd60039ceeaffe34aa5b238da1\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165Upgradeable {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\"},\"src/dao/IDAO.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IDAO\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for DAOs within the Aragon App DAO framework.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IDAO {\\n /// @notice The action struct to be consumed by the DAO's `execute` function resulting in an external call.\\n /// @param to The address to call.\\n /// @param value The native token value to be sent with the call.\\n /// @param data The bytes-encoded function selector and calldata for the call.\\n struct Action {\\n address to;\\n uint256 value;\\n bytes data;\\n }\\n\\n /// @notice Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\\n /// @param _where The address of the contract.\\n /// @param _who The address of a EOA or contract to give the permissions.\\n /// @param _permissionId The permission identifier.\\n /// @param _data The optional data passed to the `PermissionCondition` registered.\\n /// @return Returns true if the address has permission, false if not.\\n function hasPermission(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes memory _data\\n ) external view returns (bool);\\n\\n /// @notice Updates the DAO metadata (e.g., an IPFS hash).\\n /// @param _metadata The IPFS hash of the new metadata object.\\n function setMetadata(bytes calldata _metadata) external;\\n\\n /// @notice Emitted when the DAO metadata is updated.\\n /// @param metadata The IPFS hash of the new metadata object.\\n event MetadataSet(bytes metadata);\\n\\n /// @notice Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted.\\n /// @param _callId The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce.\\n /// @param _actions The array of actions.\\n /// @param _allowFailureMap A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @return The array of results obtained from the executed actions in `bytes`.\\n /// @return The resulting failure map containing the actions have actually failed.\\n function execute(\\n bytes32 _callId,\\n Action[] memory _actions,\\n uint256 _allowFailureMap\\n ) external returns (bytes[] memory, uint256);\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param actor The address of the caller.\\n /// @param callId The ID of the call.\\n /// @param actions The array of actions executed.\\n /// @param allowFailureMap The allow failure map encoding which actions are allowed to fail.\\n /// @param failureMap The failure map encoding which actions have failed.\\n /// @param execResults The array with the results of the executed actions.\\n /// @dev The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce.\\n event Executed(\\n address indexed actor,\\n bytes32 callId,\\n Action[] actions,\\n uint256 allowFailureMap,\\n uint256 failureMap,\\n bytes[] execResults\\n );\\n\\n /// @notice Emitted when a standard callback is registered.\\n /// @param interfaceId The ID of the interface.\\n /// @param callbackSelector The selector of the callback function.\\n /// @param magicNumber The magic number to be registered for the callback function selector.\\n event StandardCallbackRegistered(\\n bytes4 interfaceId,\\n bytes4 callbackSelector,\\n bytes4 magicNumber\\n );\\n\\n /// @notice Deposits (native) tokens to the DAO contract with a reference string.\\n /// @param _token The address of the token or address(0) in case of the native token.\\n /// @param _amount The amount of tokens to deposit.\\n /// @param _reference The reference describing the deposit reason.\\n function deposit(address _token, uint256 _amount, string calldata _reference) external payable;\\n\\n /// @notice Emitted when a token deposit has been made to the DAO.\\n /// @param sender The address of the sender.\\n /// @param token The address of the deposited token.\\n /// @param amount The amount of tokens deposited.\\n /// @param _reference The reference describing the deposit reason.\\n event Deposited(\\n address indexed sender,\\n address indexed token,\\n uint256 amount,\\n string _reference\\n );\\n\\n /// @notice Emitted when a native token deposit has been made to the DAO.\\n /// @dev This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).\\n /// @param sender The address of the sender.\\n /// @param amount The amount of native tokens deposited.\\n event NativeTokenDeposited(address sender, uint256 amount);\\n\\n /// @notice Setter for the trusted forwarder verifying the meta transaction.\\n /// @param _trustedForwarder The trusted forwarder address.\\n function setTrustedForwarder(address _trustedForwarder) external;\\n\\n /// @notice Getter for the trusted forwarder verifying the meta transaction.\\n /// @return The trusted forwarder address.\\n function getTrustedForwarder() external view returns (address);\\n\\n /// @notice Emitted when a new TrustedForwarder is set on the DAO.\\n /// @param forwarder the new forwarder address.\\n event TrustedForwarderSet(address forwarder);\\n\\n /// @notice Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\\n /// @param _hash The hash of the data to be signed.\\n /// @param _signature The signature byte array associated with `_hash`.\\n /// @return Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not.\\n function isValidSignature(bytes32 _hash, bytes memory _signature) external returns (bytes4);\\n\\n /// @notice Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\\n /// @param _interfaceId The ID of the interface.\\n /// @param _callbackSelector The selector of the callback function.\\n /// @param _magicNumber The magic number to be registered for the function signature.\\n function registerStandardCallback(\\n bytes4 _interfaceId,\\n bytes4 _callbackSelector,\\n bytes4 _magicNumber\\n ) external;\\n\\n /// @notice Removed function being left here to not corrupt the IDAO interface ID. Any call will revert.\\n /// @dev Introduced in v1.0.0. Removed in v1.4.0.\\n function setSignatureValidator(address) external;\\n}\\n\",\"keccak256\":\"0xb7f615523c26de042edce98731c658f44a1edb2464387ac1b642c4c69f57128e\",\"license\":\"AGPL-3.0-or-later\"},\"src/mocks/plugin/PluginUUPSUpgradeableMock.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\n/* solhint-disable one-contract-per-file */\\npragma solidity ^0.8.8;\\n\\nimport {PluginUUPSUpgradeable} from \\\"../../plugin/PluginUUPSUpgradeable.sol\\\";\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice A mock upgradeable plugin to be deployed via the UUPS proxy pattern.\\n/// v1.1 (Release 1, Build 1)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableMockBuild1 is PluginUUPSUpgradeable {\\n uint256 public state1;\\n\\n function initialize(IDAO _dao) external initializer {\\n __PluginUUPSUpgradeable_init(_dao);\\n state1 = 1;\\n }\\n}\\n\\n/// @notice A mock upgradeable plugin to be deployed via the UUPS proxy pattern.\\n/// v1.1 (Release 1, Build 2)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableMockBuild2 is PluginUUPSUpgradeable {\\n uint256 public state1;\\n uint256 public state2;\\n\\n function initialize(IDAO _dao) external reinitializer(2) {\\n __PluginUUPSUpgradeable_init(_dao);\\n state1 = 1;\\n state2 = 2;\\n }\\n\\n function initializeFrom(uint16 _previousBuild) external reinitializer(2) {\\n if (_previousBuild < 2) {\\n state2 = 2;\\n }\\n }\\n}\\n\\n/// @notice A mock upgradeable plugin to be deployed via the UUPS proxy pattern.\\n/// v1.1 (Release 1, Build 3)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableMockBuild3 is PluginUUPSUpgradeable {\\n uint256 public state1;\\n uint256 public state2;\\n uint256 public state3;\\n\\n function initialize(IDAO _dao) external reinitializer(3) {\\n __PluginUUPSUpgradeable_init(_dao);\\n state1 = 1;\\n state2 = 2;\\n state3 = 3;\\n }\\n\\n function initializeFrom(uint16 _previousBuild) external reinitializer(3) {\\n if (_previousBuild < 2) {\\n state2 = 2;\\n }\\n if (_previousBuild < 3) {\\n state3 = 3;\\n }\\n }\\n}\\n\\n/// @notice A mock upgradeable plugin missing an initializer function.\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableMockBad is PluginUUPSUpgradeable {\\n uint256 public state1;\\n\\n function notAnInitializer(IDAO _dao) external {\\n __PluginUUPSUpgradeable_init(_dao);\\n state1 = 1;\\n }\\n}\\n\",\"keccak256\":\"0x2917df3b1da0de27f58cf531afeaa4e6c4285717247cbdd9ecc7880ae5cb9cb0\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/DaoAuthorizableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ContextUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\\\";\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\nimport {_auth} from \\\"./auth.sol\\\";\\n\\n/// @title DaoAuthorizableUpgradeable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract contract providing a meta-transaction compatible modifier for upgradeable or cloneable contracts to authorize function calls through an associated DAO.\\n/// @dev Make sure to call `__DaoAuthorizableUpgradeable_init` during initialization of the inheriting contract.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract DaoAuthorizableUpgradeable is ContextUpgradeable {\\n /// @notice The associated DAO managing the permissions of inheriting contracts.\\n IDAO private dao_;\\n\\n /// @notice Initializes the contract by setting the associated DAO.\\n /// @param _dao The associated DAO address.\\n // solhint-disable-next-line func-name-mixedcase\\n function __DaoAuthorizableUpgradeable_init(IDAO _dao) internal onlyInitializing {\\n dao_ = _dao;\\n }\\n\\n /// @notice Returns the DAO contract.\\n /// @return The DAO contract.\\n function dao() public view returns (IDAO) {\\n return dao_;\\n }\\n\\n /// @notice A modifier to make functions on inheriting contracts authorized. Permissions to call the function are checked through the associated DAO's permission manager.\\n /// @param _permissionId The permission identifier required to call the method this modifier is applied to.\\n modifier auth(bytes32 _permissionId) {\\n _auth(dao_, address(this), _msgSender(), _permissionId, _msgData());\\n _;\\n }\\n\\n /// @notice This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain (see [OpenZeppelin's guide about storage gaps](https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps)).\\n uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0x7fac6b01b037ba1cb9d6a22d3f43b0785037dcf496ffb672434d9bf7227d2585\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/auth.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice Thrown if a call is unauthorized in the associated DAO.\\n/// @param dao The associated DAO.\\n/// @param where The context in which the authorization reverted.\\n/// @param who The address (EOA or contract) missing the permission.\\n/// @param permissionId The permission identifier.\\nerror DaoUnauthorized(address dao, address where, address who, bytes32 permissionId);\\n\\n/// @notice A free function checking if a caller is granted permissions on a target contract via a permission identifier that redirects the approval to a `PermissionCondition` if this was specified in the setup.\\n/// @param _where The address of the target contract for which `who` receives permission.\\n/// @param _who The address (EOA or contract) owning the permission.\\n/// @param _permissionId The permission identifier.\\n/// @param _data The optional data passed to the `PermissionCondition` registered.\\n/// @custom:security-contact sirt@aragon.org\\nfunction _auth(\\n IDAO _dao,\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes calldata _data\\n) view {\\n if (!_dao.hasPermission(_where, _who, _permissionId, _data))\\n revert DaoUnauthorized({\\n dao: address(_dao),\\n where: _where,\\n who: _who,\\n permissionId: _permissionId\\n });\\n}\\n\",\"keccak256\":\"0x878764b4f87fe0651fb3798fb9cb87c952f8c6caf6ae79c7f09de84df6c00298\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/IPlugin.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IPlugin\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the traits of a plugin.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IPlugin {\\n enum PluginType {\\n UUPS,\\n Cloneable,\\n Constructable\\n }\\n\\n /// @notice Returns the plugin's type\\n function pluginType() external view returns (PluginType);\\n}\\n\",\"keccak256\":\"0xc57cd0d10b6380ab7f54c713a509e88fd8f4ad9288313a0e8e12b8887817ddfe\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/PluginUUPSUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {UUPSUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\\\";\\nimport {IERC1822ProxiableUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport {ERC165Upgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\\\";\\n\\nimport {IProtocolVersion} from \\\"../utils/versioning/IProtocolVersion.sol\\\";\\nimport {ProtocolVersion} from \\\"../utils/versioning/ProtocolVersion.sol\\\";\\nimport {DaoAuthorizableUpgradeable} from \\\"../permission/auth/DaoAuthorizableUpgradeable.sol\\\";\\nimport {IDAO} from \\\"../dao/IDAO.sol\\\";\\nimport {IPlugin} from \\\"./IPlugin.sol\\\";\\n\\n/// @title PluginUUPSUpgradeable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract, upgradeable contract to inherit from when creating a plugin being deployed via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract PluginUUPSUpgradeable is\\n IPlugin,\\n ERC165Upgradeable,\\n UUPSUpgradeable,\\n DaoAuthorizableUpgradeable,\\n ProtocolVersion\\n{\\n // NOTE: When adding new state variables to the contract, the size of `_gap` has to be adapted below as well.\\n address public target;\\n\\n /// @dev Emitted each time the Target is set.\\n event TargetSet(address indexed previousTarget, address indexed newTarget);\\n\\n /// @notice Disables the initializers on the implementation contract to prevent it from being left uninitialized.\\n /// @custom:oz-upgrades-unsafe-allow constructor\\n constructor() {\\n _disableInitializers();\\n }\\n\\n /// @inheritdoc IPlugin\\n function pluginType() public pure override returns (PluginType) {\\n return PluginType.UUPS;\\n }\\n\\n /// @notice The ID of the permission required to call the `_authorizeUpgrade` function.\\n bytes32 public constant UPGRADE_PLUGIN_PERMISSION_ID = keccak256(\\\"UPGRADE_PLUGIN_PERMISSION\\\");\\n\\n /// @notice Initializes the plugin by storing the associated DAO.\\n /// @param _dao The DAO contract.\\n // solhint-disable-next-line func-name-mixedcase\\n function __PluginUUPSUpgradeable_init(IDAO _dao) internal virtual onlyInitializing {\\n __DaoAuthorizableUpgradeable_init(_dao);\\n }\\n\\n /// @dev Sets the target to a new target (`newTarget`).\\n /// @notice Can only be called by the current owner. TODO\\n function setTarget(address _target) public {\\n address previousTarget = target;\\n target = _target;\\n emit TargetSet(previousTarget, _target);\\n }\\n\\n /// @notice Checks if an interface is supported by this or its parent contract.\\n /// @param _interfaceId The ID of the interface.\\n /// @return Returns `true` if the interface is supported.\\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\\n return\\n _interfaceId == type(IPlugin).interfaceId ||\\n _interfaceId == type(IProtocolVersion).interfaceId ||\\n _interfaceId == type(IERC1822ProxiableUpgradeable).interfaceId ||\\n super.supportsInterface(_interfaceId);\\n }\\n\\n /// @notice Returns the address of the implementation contract in the [proxy storage slot](https://eips.ethereum.org/EIPS/eip-1967) slot the [UUPS proxy](https://eips.ethereum.org/EIPS/eip-1822) is pointing to.\\n /// @return The address of the implementation contract.\\n function implementation() public view returns (address) {\\n return _getImplementation();\\n }\\n\\n /// @notice Forwards the actions to the currently set `target` for the execution.\\n /// @param _callId Identifier for this execution.\\n /// @param _actions actions that will be eventually called.\\n /// @param _allowFailureMap Bitmap-encoded number. TODO:\\n /// @return execResults address of the implementation contract.\\n /// @return failureMap address of the implementation contract.\\n function _execute(\\n bytes32 _callId,\\n IDAO.Action[] calldata _actions,\\n uint256 _allowFailureMap\\n ) internal virtual returns (bytes[] memory execResults, uint256 failureMap) {\\n (execResults, failureMap) = IDAO(target).execute(_callId, _actions, _allowFailureMap);\\n }\\n\\n /// @notice Forwards the actions to the `target` for the execution.\\n /// @param _target Forwards the actions to the specific target.\\n /// @param _callId Identifier for this execution.\\n /// @param _actions actions that will be eventually called.\\n /// @param _allowFailureMap Bitmap-encoded number. TODO:\\n /// @return execResults address of the implementation contract.\\n /// @return failureMap address of the implementation contract.\\n function _execute(\\n address _target,\\n bytes32 _callId,\\n IDAO.Action[] calldata _actions,\\n uint256 _allowFailureMap\\n ) internal virtual returns (bytes[] memory execResults, uint256 failureMap) {\\n (execResults, failureMap) = IDAO(_target).execute(_callId, _actions, _allowFailureMap);\\n }\\n\\n /// @notice Internal method authorizing the upgrade of the contract via the [upgradeability mechanism for UUPS proxies](https://docs.openzeppelin.com/contracts/4.x/api/proxy#UUPSUpgradeable) (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\\n /// @dev The caller must have the `UPGRADE_PLUGIN_PERMISSION_ID` permission.\\n function _authorizeUpgrade(\\n address\\n )\\n internal\\n virtual\\n override\\n auth(UPGRADE_PLUGIN_PERMISSION_ID)\\n // solhint-disable-next-line no-empty-blocks\\n {\\n\\n }\\n\\n /// @notice This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain (see [OpenZeppelin's guide about storage gaps](https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps)).\\n uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0xce1d0126b3ae8c8afc887fba9f49b1cc35f84f1c1d5bf4cadee330c7ae15014f\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/IProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IProtocolVersion\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the semantic Aragon OSx protocol version number.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IProtocolVersion {\\n /// @notice Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\\n /// @return _version Returns the semantic Aragon OSx protocol version number.\\n /// @dev This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\\n function protocolVersion() external view returns (uint8[3] memory _version);\\n}\\n\",\"keccak256\":\"0x00a4da654d21dc1bdadbdc8bd54bb86c378c56f85e461ccc31303628ea621361\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/ProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IProtocolVersion} from \\\"./IProtocolVersion.sol\\\";\\n\\n/// @title ProtocolVersion\\n/// @author Aragon X - 2023\\n/// @notice An abstract, stateless, non-upgradeable contract providing the current Aragon OSx protocol version number.\\n/// @dev Do not add any new variables to this contract that would shift down storage in the inheritance chain.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract ProtocolVersion is IProtocolVersion {\\n // IMPORTANT: Do not add any storage variable, see the above notice.\\n\\n /// @inheritdoc IProtocolVersion\\n function protocolVersion() public pure returns (uint8[3] memory) {\\n return [1, 4, 0];\\n }\\n}\\n\",\"keccak256\":\"0x3975c937be935f687c6b6b8f379071232681e98cf04b175d72781b819ea52bdb\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[{"astId":372,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild2","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":375,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild2","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":1280,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild2","label":"__gap","offset":0,"slot":"1","type":"t_array(t_uint256)50_storage"},{"astId":354,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild2","label":"__gap","offset":0,"slot":"51","type":"t_array(t_uint256)50_storage"},{"astId":670,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild2","label":"__gap","offset":0,"slot":"101","type":"t_array(t_uint256)50_storage"},{"astId":1051,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild2","label":"__gap","offset":0,"slot":"151","type":"t_array(t_uint256)50_storage"},{"astId":3887,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild2","label":"dao_","offset":0,"slot":"201","type":"t_contract(IDAO)2538"},{"astId":3936,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild2","label":"__gap","offset":0,"slot":"202","type":"t_array(t_uint256)49_storage"},{"astId":4382,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild2","label":"target","offset":0,"slot":"251","type":"t_address"},{"astId":4575,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild2","label":"__gap","offset":0,"slot":"252","type":"t_array(t_uint256)49_storage"},{"astId":3142,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild2","label":"state1","offset":0,"slot":"301","type":"t_uint256"},{"astId":3144,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild2","label":"state2","offset":0,"slot":"302","type":"t_uint256"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_array(t_uint256)49_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[49]","numberOfBytes":"1568"},"t_array(t_uint256)50_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[50]","numberOfBytes":"1600"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_contract(IDAO)2538":{"encoding":"inplace","label":"contract IDAO","numberOfBytes":"20"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"errors":{"DaoUnauthorized(address,address,address,bytes32)":[{"notice":"Thrown if a call is unauthorized in the associated DAO."}]},"kind":"user","methods":{"UPGRADE_PLUGIN_PERMISSION_ID()":{"notice":"The ID of the permission required to call the `_authorizeUpgrade` function."},"dao()":{"notice":"Returns the DAO contract."},"implementation()":{"notice":"Returns the address of the implementation contract in the [proxy storage slot](https://eips.ethereum.org/EIPS/eip-1967) slot the [UUPS proxy](https://eips.ethereum.org/EIPS/eip-1822) is pointing to."},"pluginType()":{"notice":"Returns the plugin's type"},"protocolVersion()":{"notice":"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with."},"setTarget(address)":{"notice":"Can only be called by the current owner. TODO"},"supportsInterface(bytes4)":{"notice":"Checks if an interface is supported by this or its parent contract."}},"notice":"A mock upgradeable plugin to be deployed via the UUPS proxy pattern. v1.1 (Release 1, Build 2)","version":1}},"PluginUUPSUpgradeableMockBuild3":{"abi":[{"inputs":[{"internalType":"address","name":"dao","type":"address"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"name":"DaoUnauthorized","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"beacon","type":"address"}],"name":"BeaconUpgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousTarget","type":"address"},{"indexed":true,"internalType":"address","name":"newTarget","type":"address"}],"name":"TargetSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"inputs":[],"name":"UPGRADE_PLUGIN_PERMISSION_ID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dao","outputs":[{"internalType":"contract IDAO","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IDAO","name":"_dao","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"_previousBuild","type":"uint16"}],"name":"initializeFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pluginType","outputs":[{"internalType":"enum IPlugin.PluginType","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"protocolVersion","outputs":[{"internalType":"uint8[3]","name":"","type":"uint8[3]"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_target","type":"address"}],"name":"setTarget","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"state1","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"state2","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"state3","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"target","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"}],"name":"upgradeTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"}],"devdoc":{"details":"DO NOT USE IN PRODUCTION!","errors":{"DaoUnauthorized(address,address,address,bytes32)":[{"params":{"dao":"The associated DAO.","permissionId":"The permission identifier.","where":"The context in which the authorization reverted.","who":"The address (EOA or contract) missing the permission."}}]},"kind":"dev","methods":{"dao()":{"returns":{"_0":"The DAO contract."}},"implementation()":{"returns":{"_0":"The address of the implementation contract."}},"protocolVersion()":{"details":"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.","returns":{"_0":"Returns the semantic Aragon OSx protocol version number."}},"proxiableUUID()":{"details":"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier."},"setTarget(address)":{"details":"Sets the target to a new target (`newTarget`)."},"supportsInterface(bytes4)":{"params":{"_interfaceId":"The ID of the interface."},"returns":{"_0":"Returns `true` if the interface is supported."}},"upgradeTo(address)":{"custom:oz-upgrades-unsafe-allow-reachable":"delegatecall","details":"Upgrade the implementation of the proxy to `newImplementation`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."},"upgradeToAndCall(address,bytes)":{"custom:oz-upgrades-unsafe-allow-reachable":"delegatecall","details":"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."}},"version":1},"evm":{"bytecode":{"functionDebugData":{"@_4397":{"entryPoint":null,"id":4397,"parameterSlots":0,"returnSlots":0},"@_disableInitializers_515":{"entryPoint":34,"id":515,"parameterSlots":0,"returnSlots":0},"abi_encode_tuple_t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:608:50","statements":[{"nodeType":"YulBlock","src":"6:3:50","statements":[]},{"body":{"nodeType":"YulBlock","src":"188:229:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"205:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"216:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"198:6:50"},"nodeType":"YulFunctionCall","src":"198:21:50"},"nodeType":"YulExpressionStatement","src":"198:21:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"239:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"250:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"235:3:50"},"nodeType":"YulFunctionCall","src":"235:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"255:2:50","type":"","value":"39"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"228:6:50"},"nodeType":"YulFunctionCall","src":"228:30:50"},"nodeType":"YulExpressionStatement","src":"228:30:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"278:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"289:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"274:3:50"},"nodeType":"YulFunctionCall","src":"274:18:50"},{"hexValue":"496e697469616c697a61626c653a20636f6e747261637420697320696e697469","kind":"string","nodeType":"YulLiteral","src":"294:34:50","type":"","value":"Initializable: contract is initi"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"267:6:50"},"nodeType":"YulFunctionCall","src":"267:62:50"},"nodeType":"YulExpressionStatement","src":"267:62:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"349:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"360:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"345:3:50"},"nodeType":"YulFunctionCall","src":"345:18:50"},{"hexValue":"616c697a696e67","kind":"string","nodeType":"YulLiteral","src":"365:9:50","type":"","value":"alizing"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"338:6:50"},"nodeType":"YulFunctionCall","src":"338:37:50"},"nodeType":"YulExpressionStatement","src":"338:37:50"},{"nodeType":"YulAssignment","src":"384:27:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"396:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"407:3:50","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"392:3:50"},"nodeType":"YulFunctionCall","src":"392:19:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"384:4:50"}]}]},"name":"abi_encode_tuple_t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"165:9:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"179:4:50","type":""}],"src":"14:403:50"},{"body":{"nodeType":"YulBlock","src":"519:87:50","statements":[{"nodeType":"YulAssignment","src":"529:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"541:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"552:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"537:3:50"},"nodeType":"YulFunctionCall","src":"537:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"529:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"571:9:50"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"586:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"594:4:50","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"582:3:50"},"nodeType":"YulFunctionCall","src":"582:17:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"564:6:50"},"nodeType":"YulFunctionCall","src":"564:36:50"},"nodeType":"YulExpressionStatement","src":"564:36:50"}]},"name":"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"488:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"499:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"510:4:50","type":""}],"src":"422:184:50"}]},"contents":"{\n { }\n function abi_encode_tuple_t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 39)\n mstore(add(headStart, 64), \"Initializable: contract is initi\")\n mstore(add(headStart, 96), \"alizing\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xff))\n }\n}","id":50,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60a06040523060805234801561001457600080fd5b5061001d610022565b6100e1565b600054610100900460ff161561008e5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116146100df576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b608051611315610118600039600081816104af015281816105340152818161062a015281816106af015261079901526113156000f3fe6080604052600436106100f35760003560e01c806352d1902d1161008a578063c4d66de811610059578063c4d66de814610278578063c9c4bfca14610298578063d4b83992146102cc578063efe51cca146102ec57600080fd5b806352d1902d146102175780635c60da1b1461022c5780636accab8c14610241578063776d1a011461025857600080fd5b80633659cfe6116100c65780633659cfe6146101965780634162169f146101b657806341de6830146101e85780634f1ef2861461020457600080fd5b806301ffc9a7146100f8578063039a8c501461012d5780632491118d1461014f5780632ae9c60014610174575b600080fd5b34801561010457600080fd5b50610118610113366004611029565b610303565b60405190151581526020015b60405180910390f35b34801561013957600080fd5b5061014d610148366004611053565b61036f565b005b34801561015b57600080fd5b5061016661012f5481565b604051908152602001610124565b34801561018057600080fd5b5061018961047b565b6040516101249190611077565b3480156101a257600080fd5b5061014d6101b13660046110c0565b6104a5565b3480156101c257600080fd5b5060c9546001600160a01b03165b6040516001600160a01b039091168152602001610124565b3480156101f457600080fd5b50600060405161012491906110dd565b61014d61021236600461111b565b610620565b34801561022357600080fd5b5061016661078c565b34801561023857600080fd5b506101d0610851565b34801561024d57600080fd5b5061016661012d5481565b34801561026457600080fd5b5061014d6102733660046110c0565b610889565b34801561028457600080fd5b5061014d6102933660046110c0565b6108e8565b3480156102a457600080fd5b506101667f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f581565b3480156102d857600080fd5b5060fb546101d0906001600160a01b031681565b3480156102f857600080fd5b5061016661012e5481565b60006001600160e01b0319821663041de68360e41b148061033357506001600160e01b03198216621574e360e91b145b8061034e57506001600160e01b031982166352d1902d60e01b145b8061036957506301ffc9a760e01b6001600160e01b03198316145b92915050565b600054600390610100900460ff16158015610391575060005460ff8083169116105b6103f95760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805461ffff191660ff831617610100179055600261ffff8316101561042157600261012e555b60038261ffff16101561043557600361012f555b6000805461ff001916905560405160ff821681527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b61048361100b565b5060408051606081018252600181526004602082015260009181019190915290565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036105325760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b60648201526084016103f0565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661058d7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b0316146105f85760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b60648201526084016103f0565b610601816109da565b6040805160008082526020820190925261061d91839190610a17565b50565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036106ad5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b60648201526084016103f0565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166107087f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b0316146107735760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b60648201526084016103f0565b61077c826109da565b61078882826001610a17565b5050565b6000306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461082c5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016103f0565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b60006108847f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b60fb80546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d690600090a35050565b600054600390610100900460ff1615801561090a575060005460ff8083169116105b61096d5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016103f0565b6000805461ffff191660ff83161761010017905561098a82610bbc565b600161012d55600261012e55600361012f556000805461ff001916905560405160ff821681527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200161046f565b60c9547f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f590610788906001600160a01b0316303384600036610c30565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610a4f57610a4a83610cec565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610aa9575060408051601f3d908101601f19168201909252610aa6918101906111df565b60015b610b1b5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201527f6f6e206973206e6f74205555505300000000000000000000000000000000000060648201526084016103f0565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114610bb05760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f7860448201527f6961626c6555554944000000000000000000000000000000000000000000000060648201526084016103f0565b50610a4a838383610db7565b600054610100900460ff16610c275760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103f0565b61061d81610de2565b604051637ef7c88360e11b81526001600160a01b0387169063fdef910690610c6490889088908890889088906004016111f8565b602060405180830381865afa158015610c81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca5919061124c565b610ce457604051630cb6f8ed60e21b81526001600160a01b038088166004830152808716602483015285166044820152606481018490526084016103f0565b505050505050565b6001600160a01b0381163b610d695760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e74726163740000000000000000000000000000000000000060648201526084016103f0565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610dc083610e7c565b600082511180610dcd5750805b15610a4a57610ddc8383610ebc565b50505050565b600054610100900460ff16610e4d5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103f0565b60c9805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610e8581610cec565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060610ee183836040518060600160405280602781526020016112e260279139610ee8565b9392505050565b6060600080856001600160a01b031685604051610f059190611292565b600060405180830381855af49150503d8060008114610f40576040519150601f19603f3d011682016040523d82523d6000602084013e610f45565b606091505b5091509150610f5686838387610f60565b9695505050505050565b60608315610fcf578251600003610fc8576001600160a01b0385163b610fc85760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016103f0565b5081610fd9565b610fd98383610fe1565b949350505050565b815115610ff15781518083602001fd5b8060405162461bcd60e51b81526004016103f091906112ae565b60405180606001604052806003906020820280368337509192915050565b60006020828403121561103b57600080fd5b81356001600160e01b031981168114610ee157600080fd5b60006020828403121561106557600080fd5b813561ffff81168114610ee157600080fd5b60608101818360005b60038110156110a257815160ff16835260209283019290910190600101611080565b50505092915050565b6001600160a01b038116811461061d57600080fd5b6000602082840312156110d257600080fd5b8135610ee1816110ab565b60208101600383106110ff57634e487b7160e01b600052602160045260246000fd5b91905290565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561112e57600080fd5b8235611139816110ab565b9150602083013567ffffffffffffffff8082111561115657600080fd5b818501915085601f83011261116a57600080fd5b81358181111561117c5761117c611105565b604051601f8201601f19908116603f011681019083821181831017156111a4576111a4611105565b816040528281528860208487010111156111bd57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6000602082840312156111f157600080fd5b5051919050565b60006001600160a01b03808816835280871660208401525084604083015260806060830152826080830152828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b60006020828403121561125e57600080fd5b81518015158114610ee157600080fd5b60005b83811015611289578181015183820152602001611271565b50506000910152565b600082516112a481846020870161126e565b9190910192915050565b60208152600082518060208401526112cd81604085016020870161126e565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a","opcodes":"PUSH1 0xA0 PUSH1 0x40 MSTORE ADDRESS PUSH1 0x80 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x14 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1D PUSH2 0x22 JUMP JUMPDEST PUSH2 0xE1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x8E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x27 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320696E697469 PUSH1 0x44 DUP3 ADD MSTORE PUSH7 0x616C697A696E67 PUSH1 0xC8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xFF SWAP1 DUP2 AND EQ PUSH2 0xDF JUMPI PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH2 0x1315 PUSH2 0x118 PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH2 0x4AF ADD MSTORE DUP2 DUP2 PUSH2 0x534 ADD MSTORE DUP2 DUP2 PUSH2 0x62A ADD MSTORE DUP2 DUP2 PUSH2 0x6AF ADD MSTORE PUSH2 0x799 ADD MSTORE PUSH2 0x1315 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xF3 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x52D1902D GT PUSH2 0x8A JUMPI DUP1 PUSH4 0xC4D66DE8 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0x278 JUMPI DUP1 PUSH4 0xC9C4BFCA EQ PUSH2 0x298 JUMPI DUP1 PUSH4 0xD4B83992 EQ PUSH2 0x2CC JUMPI DUP1 PUSH4 0xEFE51CCA EQ PUSH2 0x2EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x52D1902D EQ PUSH2 0x217 JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0x22C JUMPI DUP1 PUSH4 0x6ACCAB8C EQ PUSH2 0x241 JUMPI DUP1 PUSH4 0x776D1A01 EQ PUSH2 0x258 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x3659CFE6 GT PUSH2 0xC6 JUMPI DUP1 PUSH4 0x3659CFE6 EQ PUSH2 0x196 JUMPI DUP1 PUSH4 0x4162169F EQ PUSH2 0x1B6 JUMPI DUP1 PUSH4 0x41DE6830 EQ PUSH2 0x1E8 JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x204 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xF8 JUMPI DUP1 PUSH4 0x39A8C50 EQ PUSH2 0x12D JUMPI DUP1 PUSH4 0x2491118D EQ PUSH2 0x14F JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0x174 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x104 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x118 PUSH2 0x113 CALLDATASIZE PUSH1 0x4 PUSH2 0x1029 JUMP JUMPDEST PUSH2 0x303 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x139 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x14D PUSH2 0x148 CALLDATASIZE PUSH1 0x4 PUSH2 0x1053 JUMP JUMPDEST PUSH2 0x36F JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x15B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x166 PUSH2 0x12F SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x124 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x180 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x189 PUSH2 0x47B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x124 SWAP2 SWAP1 PUSH2 0x1077 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x14D PUSH2 0x1B1 CALLDATASIZE PUSH1 0x4 PUSH2 0x10C0 JUMP JUMPDEST PUSH2 0x4A5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1C2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xC9 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x124 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 PUSH1 0x40 MLOAD PUSH2 0x124 SWAP2 SWAP1 PUSH2 0x10DD JUMP JUMPDEST PUSH2 0x14D PUSH2 0x212 CALLDATASIZE PUSH1 0x4 PUSH2 0x111B JUMP JUMPDEST PUSH2 0x620 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x223 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x166 PUSH2 0x78C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x238 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1D0 PUSH2 0x851 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x24D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x166 PUSH2 0x12D SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x264 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x14D PUSH2 0x273 CALLDATASIZE PUSH1 0x4 PUSH2 0x10C0 JUMP JUMPDEST PUSH2 0x889 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x284 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x14D PUSH2 0x293 CALLDATASIZE PUSH1 0x4 PUSH2 0x10C0 JUMP JUMPDEST PUSH2 0x8E8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x166 PUSH32 0x821B6E3A557148015A918C89E5D092E878A69854A2D1A410635F771BD5A8A3F5 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xFB SLOAD PUSH2 0x1D0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x166 PUSH2 0x12E SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x41DE683 PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x333 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x34E JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x52D1902D PUSH1 0xE0 SHL EQ JUMPDEST DUP1 PUSH2 0x369 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x3 SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH2 0x391 JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF DUP1 DUP4 AND SWAP2 AND LT JUMPDEST PUSH2 0x3F9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x44 DUP3 ADD MSTORE PUSH14 0x191E481A5B9A5D1A585B1A5E9959 PUSH1 0x92 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH2 0xFFFF NOT AND PUSH1 0xFF DUP4 AND OR PUSH2 0x100 OR SWAP1 SSTORE PUSH1 0x2 PUSH2 0xFFFF DUP4 AND LT ISZERO PUSH2 0x421 JUMPI PUSH1 0x2 PUSH2 0x12E SSTORE JUMPDEST PUSH1 0x3 DUP3 PUSH2 0xFFFF AND LT ISZERO PUSH2 0x435 JUMPI PUSH1 0x3 PUSH2 0x12F SSTORE JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH1 0xFF DUP3 AND DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH2 0x483 PUSH2 0x100B JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x532 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x19195B1959D85D1958D85B1B PUSH1 0xA2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3F0 JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x58D PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x5F8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x6163746976652070726F7879 PUSH1 0xA0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3F0 JUMP JUMPDEST PUSH2 0x601 DUP2 PUSH2 0x9DA JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x61D SWAP2 DUP4 SWAP2 SWAP1 PUSH2 0xA17 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x6AD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x19195B1959D85D1958D85B1B PUSH1 0xA2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3F0 JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x708 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x773 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x6163746976652070726F7879 PUSH1 0xA0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3F0 JUMP JUMPDEST PUSH2 0x77C DUP3 PUSH2 0x9DA JUMP JUMPDEST PUSH2 0x788 DUP3 DUP3 PUSH1 0x1 PUSH2 0xA17 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x82C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x38 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x555550535570677261646561626C653A206D757374206E6F742062652063616C PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6C6564207468726F7567682064656C656761746563616C6C0000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3F0 JUMP JUMPDEST POP PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x884 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0xFB DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP2 SWAP1 DUP3 SWAP1 PUSH32 0x90CC2F570A6EB594B1580EA3E41247D2D73A55281889E86BD4EC2FC29C7E62D6 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x3 SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH2 0x90A JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF DUP1 DUP4 AND SWAP2 AND LT JUMPDEST PUSH2 0x96D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x44 DUP3 ADD MSTORE PUSH14 0x191E481A5B9A5D1A585B1A5E9959 PUSH1 0x92 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3F0 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH2 0xFFFF NOT AND PUSH1 0xFF DUP4 AND OR PUSH2 0x100 OR SWAP1 SSTORE PUSH2 0x98A DUP3 PUSH2 0xBBC JUMP JUMPDEST PUSH1 0x1 PUSH2 0x12D SSTORE PUSH1 0x2 PUSH2 0x12E SSTORE PUSH1 0x3 PUSH2 0x12F SSTORE PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH1 0xFF DUP3 AND DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH2 0x46F JUMP JUMPDEST PUSH1 0xC9 SLOAD PUSH32 0x821B6E3A557148015A918C89E5D092E878A69854A2D1A410635F771BD5A8A3F5 SWAP1 PUSH2 0x788 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ADDRESS CALLER DUP5 PUSH1 0x0 CALLDATASIZE PUSH2 0xC30 JUMP JUMPDEST PUSH32 0x4910FDFA16FED3260ED0E7147F7CC6DA11A60208B5B9406D12A635614FFD9143 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0xA4F JUMPI PUSH2 0xA4A DUP4 PUSH2 0xCEC JUMP JUMPDEST POP POP POP JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x52D1902D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0xAA9 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0xAA6 SWAP2 DUP2 ADD SWAP1 PUSH2 0x11DF JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0xB1B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524331393637557067726164653A206E657720696D706C656D656E74617469 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F6E206973206E6F742055555053000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3F0 JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC DUP2 EQ PUSH2 0xBB0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524331393637557067726164653A20756E737570706F727465642070726F78 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6961626C65555549440000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3F0 JUMP JUMPDEST POP PUSH2 0xA4A DUP4 DUP4 DUP4 PUSH2 0xDB7 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0xC27 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3F0 JUMP JUMPDEST PUSH2 0x61D DUP2 PUSH2 0xDE2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x7EF7C883 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0xFDEF9106 SWAP1 PUSH2 0xC64 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x11F8 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC81 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xCA5 SWAP2 SWAP1 PUSH2 0x124C JUMP JUMPDEST PUSH2 0xCE4 JUMPI PUSH1 0x40 MLOAD PUSH4 0xCB6F8ED PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND PUSH1 0x4 DUP4 ADD MSTORE DUP1 DUP8 AND PUSH1 0x24 DUP4 ADD MSTORE DUP6 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x84 ADD PUSH2 0x3F0 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND EXTCODESIZE PUSH2 0xD69 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313936373A206E657720696D706C656D656E746174696F6E206973206E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F74206120636F6E747261637400000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3F0 JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xDC0 DUP4 PUSH2 0xE7C JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD GT DUP1 PUSH2 0xDCD JUMPI POP DUP1 JUMPDEST ISZERO PUSH2 0xA4A JUMPI PUSH2 0xDDC DUP4 DUP4 PUSH2 0xEBC JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0xE4D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3F0 JUMP JUMPDEST PUSH1 0xC9 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xE85 DUP2 PUSH2 0xCEC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xEE1 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x12E2 PUSH1 0x27 SWAP2 CODECOPY PUSH2 0xEE8 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0xF05 SWAP2 SWAP1 PUSH2 0x1292 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xF40 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xF45 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0xF56 DUP7 DUP4 DUP4 DUP8 PUSH2 0xF60 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0xFCF JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0xFC8 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0xFC8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3F0 JUMP JUMPDEST POP DUP2 PUSH2 0xFD9 JUMP JUMPDEST PUSH2 0xFD9 DUP4 DUP4 PUSH2 0xFE1 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0xFF1 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3F0 SWAP2 SWAP1 PUSH2 0x12AE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x103B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0xEE1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1065 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH2 0xEE1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0x10A2 JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x1080 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x61D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x10D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xEE1 DUP2 PUSH2 0x10AB JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH1 0x3 DUP4 LT PUSH2 0x10FF JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 SWAP1 MSTORE SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x112E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x1139 DUP2 PUSH2 0x10AB JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1156 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x116A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x117C JUMPI PUSH2 0x117C PUSH2 0x1105 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x11A4 JUMPI PUSH2 0x11A4 PUSH2 0x1105 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x11BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x11F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND DUP4 MSTORE DUP1 DUP8 AND PUSH1 0x20 DUP5 ADD MSTORE POP DUP5 PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x80 PUSH1 0x60 DUP4 ADD MSTORE DUP3 PUSH1 0x80 DUP4 ADD MSTORE DUP3 DUP5 PUSH1 0xA0 DUP5 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0xA0 DUP5 DUP5 ADD ADD MSTORE PUSH1 0xA0 PUSH1 0x1F NOT PUSH1 0x1F DUP6 ADD AND DUP4 ADD ADD SWAP1 POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x125E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xEE1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1289 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1271 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x12A4 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x126E JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x12CD DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x126E JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A164 PUSH20 0x6F6C6343000811000A0000000000000000000000 ","sourceMap":"1334:546:31:-:0;;;1198:4:5;1155:48;;1334:546:31;;;;;;;;;-1:-1:-1;1647:22:40;:20;:22::i;:::-;1334:546:31;;5939:280:4;6007:13;;;;;;;6006:14;5998:66;;;;-1:-1:-1;;;5998:66:4;;216:2:50;5998:66:4;;;198:21:50;255:2;235:18;;;228:30;294:34;274:18;;;267:62;-1:-1:-1;;;345:18:50;;;338:37;392:19;;5998:66:4;;;;;;;;6078:12;;6094:15;6078:12;;;:31;6074:139;;6125:12;:30;;-1:-1:-1;;6125:30:4;6140:15;6125:30;;;;;;6174:28;;564:36:50;;;6174:28:4;;552:2:50;537:18;6174:28:4;;;;;;;6074:139;5939:280::o;422:184:50:-;1334:546:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@UPGRADE_PLUGIN_PERMISSION_ID_4415":{"entryPoint":null,"id":4415,"parameterSlots":0,"returnSlots":0},"@__DaoAuthorizableUpgradeable_init_3901":{"entryPoint":3554,"id":3901,"parameterSlots":1,"returnSlots":0},"@__PluginUUPSUpgradeable_init_4429":{"entryPoint":3004,"id":4429,"parameterSlots":1,"returnSlots":0},"@_auth_3987":{"entryPoint":3120,"id":3987,"parameterSlots":6,"returnSlots":0},"@_authorizeUpgrade_4570":{"entryPoint":2522,"id":4570,"parameterSlots":1,"returnSlots":0},"@_getImplementation_76":{"entryPoint":null,"id":76,"parameterSlots":0,"returnSlots":1},"@_msgData_1038":{"entryPoint":null,"id":1038,"parameterSlots":0,"returnSlots":2},"@_msgSender_1029":{"entryPoint":null,"id":1029,"parameterSlots":0,"returnSlots":1},"@_revert_1000":{"entryPoint":4065,"id":1000,"parameterSlots":2,"returnSlots":0},"@_setImplementation_100":{"entryPoint":3308,"id":100,"parameterSlots":1,"returnSlots":0},"@_upgradeToAndCallUUPS_198":{"entryPoint":2583,"id":198,"parameterSlots":3,"returnSlots":0},"@_upgradeToAndCall_145":{"entryPoint":3511,"id":145,"parameterSlots":3,"returnSlots":0},"@_upgradeTo_115":{"entryPoint":3708,"id":115,"parameterSlots":1,"returnSlots":0},"@dao_3911":{"entryPoint":null,"id":3911,"parameterSlots":0,"returnSlots":1},"@functionDelegateCall_888":{"entryPoint":3772,"id":888,"parameterSlots":2,"returnSlots":1},"@functionDelegateCall_917":{"entryPoint":3816,"id":917,"parameterSlots":3,"returnSlots":1},"@getAddressSlot_1158":{"entryPoint":null,"id":1158,"parameterSlots":1,"returnSlots":1},"@getBooleanSlot_1169":{"entryPoint":null,"id":1169,"parameterSlots":1,"returnSlots":1},"@implementation_4495":{"entryPoint":2129,"id":4495,"parameterSlots":0,"returnSlots":1},"@initializeFrom_3247":{"entryPoint":879,"id":3247,"parameterSlots":1,"returnSlots":0},"@initialize_3220":{"entryPoint":2280,"id":3220,"parameterSlots":1,"returnSlots":0},"@isContract_689":{"entryPoint":null,"id":689,"parameterSlots":1,"returnSlots":1},"@pluginType_4409":{"entryPoint":null,"id":4409,"parameterSlots":0,"returnSlots":1},"@protocolVersion_5135":{"entryPoint":1147,"id":5135,"parameterSlots":0,"returnSlots":1},"@proxiableUUID_616":{"entryPoint":1932,"id":616,"parameterSlots":0,"returnSlots":1},"@setTarget_4449":{"entryPoint":2185,"id":4449,"parameterSlots":1,"returnSlots":0},"@state1_3190":{"entryPoint":null,"id":3190,"parameterSlots":0,"returnSlots":0},"@state2_3192":{"entryPoint":null,"id":3192,"parameterSlots":0,"returnSlots":0},"@state3_3194":{"entryPoint":null,"id":3194,"parameterSlots":0,"returnSlots":0},"@supportsInterface_1275":{"entryPoint":null,"id":1275,"parameterSlots":1,"returnSlots":1},"@supportsInterface_4485":{"entryPoint":771,"id":4485,"parameterSlots":1,"returnSlots":1},"@target_4382":{"entryPoint":null,"id":4382,"parameterSlots":0,"returnSlots":0},"@upgradeToAndCall_659":{"entryPoint":1568,"id":659,"parameterSlots":2,"returnSlots":0},"@upgradeTo_638":{"entryPoint":1189,"id":638,"parameterSlots":1,"returnSlots":0},"@verifyCallResultFromTarget_956":{"entryPoint":3936,"id":956,"parameterSlots":4,"returnSlots":1},"abi_decode_tuple_t_address":{"entryPoint":4288,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_bytes_memory_ptr":{"entryPoint":4379,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_bool_fromMemory":{"entryPoint":4684,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes32_fromMemory":{"entryPoint":4575,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes4":{"entryPoint":4137,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_contract$_IDAO_$2538":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint16":{"entryPoint":4179,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":4754,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address_t_address_t_address_t_bytes32__to_t_address_t_address_t_address_t_bytes32__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":5,"returnSlots":1},"abi_encode_tuple_t_address_t_address_t_bytes32_t_bytes_calldata_ptr__to_t_address_t_address_t_bytes32_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":4600,"id":null,"parameterSlots":6,"returnSlots":1},"abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed":{"entryPoint":4215,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_contract$_IDAO_$2538__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_enum$_PluginType_$3994__to_t_uint8__fromStack_reversed":{"entryPoint":4317,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":4782,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_36e108fa7a809b52ab1951dd91c117a7bc9ac5250bdf1aa162d4e104f7edf9eb__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_52f1ead4d9653e13afbd2e90ef2587c30187cd50b2e97d784e3f7a7541247434__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_67f0151b4ad1dcfa0e3302a0cd6019f51582ef1807b37dceb00bd852a514f7f4__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_76b6b6debfc5febf101145a79ecf0b0d2e89e397dfdab2bca99888370411152c__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_8e8e2fbcb586f700b5b14e2c4a650c8d83b9773c31c5fe8962070ea544e11f24__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"copy_memory_to_memory_with_cleanup":{"entryPoint":4718,"id":null,"parameterSlots":3,"returnSlots":0},"panic_error_0x41":{"entryPoint":4357,"id":null,"parameterSlots":0,"returnSlots":0},"validator_revert_address":{"entryPoint":4267,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:10790:50","statements":[{"nodeType":"YulBlock","src":"6:3:50","statements":[]},{"body":{"nodeType":"YulBlock","src":"83:217:50","statements":[{"body":{"nodeType":"YulBlock","src":"129:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"138:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"141:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"131:6:50"},"nodeType":"YulFunctionCall","src":"131:12:50"},"nodeType":"YulExpressionStatement","src":"131:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"104:7:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"113:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"100:3:50"},"nodeType":"YulFunctionCall","src":"100:23:50"},{"kind":"number","nodeType":"YulLiteral","src":"125:2:50","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"96:3:50"},"nodeType":"YulFunctionCall","src":"96:32:50"},"nodeType":"YulIf","src":"93:52:50"},{"nodeType":"YulVariableDeclaration","src":"154:36:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"180:9:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"167:12:50"},"nodeType":"YulFunctionCall","src":"167:23:50"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"158:5:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"254:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"263:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"266:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"256:6:50"},"nodeType":"YulFunctionCall","src":"256:12:50"},"nodeType":"YulExpressionStatement","src":"256:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"212:5:50"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"223:5:50"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"234:3:50","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"239:10:50","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"230:3:50"},"nodeType":"YulFunctionCall","src":"230:20:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"219:3:50"},"nodeType":"YulFunctionCall","src":"219:32:50"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"209:2:50"},"nodeType":"YulFunctionCall","src":"209:43:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"202:6:50"},"nodeType":"YulFunctionCall","src":"202:51:50"},"nodeType":"YulIf","src":"199:71:50"},{"nodeType":"YulAssignment","src":"279:15:50","value":{"name":"value","nodeType":"YulIdentifier","src":"289:5:50"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"279:6:50"}]}]},"name":"abi_decode_tuple_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"49:9:50","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"60:7:50","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"72:6:50","type":""}],"src":"14:286:50"},{"body":{"nodeType":"YulBlock","src":"400:92:50","statements":[{"nodeType":"YulAssignment","src":"410:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"422:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"433:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"418:3:50"},"nodeType":"YulFunctionCall","src":"418:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"410:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"452:9:50"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"477:6:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"470:6:50"},"nodeType":"YulFunctionCall","src":"470:14:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"463:6:50"},"nodeType":"YulFunctionCall","src":"463:22:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"445:6:50"},"nodeType":"YulFunctionCall","src":"445:41:50"},"nodeType":"YulExpressionStatement","src":"445:41:50"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"369:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"380:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"391:4:50","type":""}],"src":"305:187:50"},{"body":{"nodeType":"YulBlock","src":"566:203:50","statements":[{"body":{"nodeType":"YulBlock","src":"612:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"621:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"624:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"614:6:50"},"nodeType":"YulFunctionCall","src":"614:12:50"},"nodeType":"YulExpressionStatement","src":"614:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"587:7:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"596:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"583:3:50"},"nodeType":"YulFunctionCall","src":"583:23:50"},{"kind":"number","nodeType":"YulLiteral","src":"608:2:50","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"579:3:50"},"nodeType":"YulFunctionCall","src":"579:32:50"},"nodeType":"YulIf","src":"576:52:50"},{"nodeType":"YulVariableDeclaration","src":"637:36:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"663:9:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"650:12:50"},"nodeType":"YulFunctionCall","src":"650:23:50"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"641:5:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"723:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"732:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"735:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"725:6:50"},"nodeType":"YulFunctionCall","src":"725:12:50"},"nodeType":"YulExpressionStatement","src":"725:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"695:5:50"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"706:5:50"},{"kind":"number","nodeType":"YulLiteral","src":"713:6:50","type":"","value":"0xffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"702:3:50"},"nodeType":"YulFunctionCall","src":"702:18:50"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"692:2:50"},"nodeType":"YulFunctionCall","src":"692:29:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"685:6:50"},"nodeType":"YulFunctionCall","src":"685:37:50"},"nodeType":"YulIf","src":"682:57:50"},{"nodeType":"YulAssignment","src":"748:15:50","value":{"name":"value","nodeType":"YulIdentifier","src":"758:5:50"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"748:6:50"}]}]},"name":"abi_decode_tuple_t_uint16","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"532:9:50","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"543:7:50","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"555:6:50","type":""}],"src":"497:272:50"},{"body":{"nodeType":"YulBlock","src":"875:76:50","statements":[{"nodeType":"YulAssignment","src":"885:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"897:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"908:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"893:3:50"},"nodeType":"YulFunctionCall","src":"893:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"885:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"927:9:50"},{"name":"value0","nodeType":"YulIdentifier","src":"938:6:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"920:6:50"},"nodeType":"YulFunctionCall","src":"920:25:50"},"nodeType":"YulExpressionStatement","src":"920:25:50"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"844:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"855:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"866:4:50","type":""}],"src":"774:177:50"},{"body":{"nodeType":"YulBlock","src":"1099:358:50","statements":[{"nodeType":"YulAssignment","src":"1109:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1121:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"1132:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1117:3:50"},"nodeType":"YulFunctionCall","src":"1117:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1109:4:50"}]},{"nodeType":"YulVariableDeclaration","src":"1144:20:50","value":{"name":"headStart","nodeType":"YulIdentifier","src":"1155:9:50"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"1148:3:50","type":""}]},{"nodeType":"YulAssignment","src":"1173:16:50","value":{"name":"headStart","nodeType":"YulIdentifier","src":"1180:9:50"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"1173:3:50"}]},{"nodeType":"YulVariableDeclaration","src":"1198:20:50","value":{"name":"value0","nodeType":"YulIdentifier","src":"1212:6:50"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"1202:6:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"1227:10:50","value":{"kind":"number","nodeType":"YulLiteral","src":"1236:1:50","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"1231:1:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"1293:158:50","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1314:3:50"},{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"1329:6:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1323:5:50"},"nodeType":"YulFunctionCall","src":"1323:13:50"},{"kind":"number","nodeType":"YulLiteral","src":"1338:4:50","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1319:3:50"},"nodeType":"YulFunctionCall","src":"1319:24:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1307:6:50"},"nodeType":"YulFunctionCall","src":"1307:37:50"},"nodeType":"YulExpressionStatement","src":"1307:37:50"},{"nodeType":"YulVariableDeclaration","src":"1357:14:50","value":{"kind":"number","nodeType":"YulLiteral","src":"1367:4:50","type":"","value":"0x20"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"1361:2:50","type":""}]},{"nodeType":"YulAssignment","src":"1384:19:50","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1395:3:50"},{"name":"_1","nodeType":"YulIdentifier","src":"1400:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1391:3:50"},"nodeType":"YulFunctionCall","src":"1391:12:50"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"1384:3:50"}]},{"nodeType":"YulAssignment","src":"1416:25:50","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"1430:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"1438:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1426:3:50"},"nodeType":"YulFunctionCall","src":"1426:15:50"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"1416:6:50"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"1257:1:50"},{"kind":"number","nodeType":"YulLiteral","src":"1260:4:50","type":"","value":"0x03"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"1254:2:50"},"nodeType":"YulFunctionCall","src":"1254:11:50"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"1266:18:50","statements":[{"nodeType":"YulAssignment","src":"1268:14:50","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"1277:1:50"},{"kind":"number","nodeType":"YulLiteral","src":"1280:1:50","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1273:3:50"},"nodeType":"YulFunctionCall","src":"1273:9:50"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"1268:1:50"}]}]},"pre":{"nodeType":"YulBlock","src":"1250:3:50","statements":[]},"src":"1246:205:50"}]},"name":"abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1068:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1079:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1090:4:50","type":""}],"src":"956:501:50"},{"body":{"nodeType":"YulBlock","src":"1507:109:50","statements":[{"body":{"nodeType":"YulBlock","src":"1594:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1603:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1606:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1596:6:50"},"nodeType":"YulFunctionCall","src":"1596:12:50"},"nodeType":"YulExpressionStatement","src":"1596:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1530:5:50"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1541:5:50"},{"kind":"number","nodeType":"YulLiteral","src":"1548:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1537:3:50"},"nodeType":"YulFunctionCall","src":"1537:54:50"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1527:2:50"},"nodeType":"YulFunctionCall","src":"1527:65:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1520:6:50"},"nodeType":"YulFunctionCall","src":"1520:73:50"},"nodeType":"YulIf","src":"1517:93:50"}]},"name":"validator_revert_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1496:5:50","type":""}],"src":"1462:154:50"},{"body":{"nodeType":"YulBlock","src":"1691:177:50","statements":[{"body":{"nodeType":"YulBlock","src":"1737:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1746:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1749:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1739:6:50"},"nodeType":"YulFunctionCall","src":"1739:12:50"},"nodeType":"YulExpressionStatement","src":"1739:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1712:7:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"1721:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1708:3:50"},"nodeType":"YulFunctionCall","src":"1708:23:50"},{"kind":"number","nodeType":"YulLiteral","src":"1733:2:50","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1704:3:50"},"nodeType":"YulFunctionCall","src":"1704:32:50"},"nodeType":"YulIf","src":"1701:52:50"},{"nodeType":"YulVariableDeclaration","src":"1762:36:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1788:9:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1775:12:50"},"nodeType":"YulFunctionCall","src":"1775:23:50"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"1766:5:50","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1832:5:50"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"1807:24:50"},"nodeType":"YulFunctionCall","src":"1807:31:50"},"nodeType":"YulExpressionStatement","src":"1807:31:50"},{"nodeType":"YulAssignment","src":"1847:15:50","value":{"name":"value","nodeType":"YulIdentifier","src":"1857:5:50"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1847:6:50"}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1657:9:50","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1668:7:50","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1680:6:50","type":""}],"src":"1621:247:50"},{"body":{"nodeType":"YulBlock","src":"1987:125:50","statements":[{"nodeType":"YulAssignment","src":"1997:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2009:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"2020:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2005:3:50"},"nodeType":"YulFunctionCall","src":"2005:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1997:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2039:9:50"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2054:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"2062:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2050:3:50"},"nodeType":"YulFunctionCall","src":"2050:55:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2032:6:50"},"nodeType":"YulFunctionCall","src":"2032:74:50"},"nodeType":"YulExpressionStatement","src":"2032:74:50"}]},"name":"abi_encode_tuple_t_contract$_IDAO_$2538__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1956:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1967:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1978:4:50","type":""}],"src":"1873:239:50"},{"body":{"nodeType":"YulBlock","src":"2231:229:50","statements":[{"nodeType":"YulAssignment","src":"2241:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2253:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"2264:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2249:3:50"},"nodeType":"YulFunctionCall","src":"2249:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2241:4:50"}]},{"body":{"nodeType":"YulBlock","src":"2309:111:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2330:1:50","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2337:3:50","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"2342:10:50","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2333:3:50"},"nodeType":"YulFunctionCall","src":"2333:20:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2323:6:50"},"nodeType":"YulFunctionCall","src":"2323:31:50"},"nodeType":"YulExpressionStatement","src":"2323:31:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2374:1:50","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"2377:4:50","type":"","value":"0x21"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2367:6:50"},"nodeType":"YulFunctionCall","src":"2367:15:50"},"nodeType":"YulExpressionStatement","src":"2367:15:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2402:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2405:4:50","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2395:6:50"},"nodeType":"YulFunctionCall","src":"2395:15:50"},"nodeType":"YulExpressionStatement","src":"2395:15:50"}]},"condition":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2289:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"2297:1:50","type":"","value":"3"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2286:2:50"},"nodeType":"YulFunctionCall","src":"2286:13:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2279:6:50"},"nodeType":"YulFunctionCall","src":"2279:21:50"},"nodeType":"YulIf","src":"2276:144:50"},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2436:9:50"},{"name":"value0","nodeType":"YulIdentifier","src":"2447:6:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2429:6:50"},"nodeType":"YulFunctionCall","src":"2429:25:50"},"nodeType":"YulExpressionStatement","src":"2429:25:50"}]},"name":"abi_encode_tuple_t_enum$_PluginType_$3994__to_t_uint8__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2200:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"2211:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2222:4:50","type":""}],"src":"2117:343:50"},{"body":{"nodeType":"YulBlock","src":"2497:95:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2514:1:50","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2521:3:50","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"2526:10:50","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2517:3:50"},"nodeType":"YulFunctionCall","src":"2517:20:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2507:6:50"},"nodeType":"YulFunctionCall","src":"2507:31:50"},"nodeType":"YulExpressionStatement","src":"2507:31:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2554:1:50","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"2557:4:50","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2547:6:50"},"nodeType":"YulFunctionCall","src":"2547:15:50"},"nodeType":"YulExpressionStatement","src":"2547:15:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2578:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2581:4:50","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2571:6:50"},"nodeType":"YulFunctionCall","src":"2571:15:50"},"nodeType":"YulExpressionStatement","src":"2571:15:50"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"2465:127:50"},{"body":{"nodeType":"YulBlock","src":"2693:960:50","statements":[{"body":{"nodeType":"YulBlock","src":"2739:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2748:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2751:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2741:6:50"},"nodeType":"YulFunctionCall","src":"2741:12:50"},"nodeType":"YulExpressionStatement","src":"2741:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2714:7:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"2723:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2710:3:50"},"nodeType":"YulFunctionCall","src":"2710:23:50"},{"kind":"number","nodeType":"YulLiteral","src":"2735:2:50","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2706:3:50"},"nodeType":"YulFunctionCall","src":"2706:32:50"},"nodeType":"YulIf","src":"2703:52:50"},{"nodeType":"YulVariableDeclaration","src":"2764:36:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2790:9:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2777:12:50"},"nodeType":"YulFunctionCall","src":"2777:23:50"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"2768:5:50","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2834:5:50"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"2809:24:50"},"nodeType":"YulFunctionCall","src":"2809:31:50"},"nodeType":"YulExpressionStatement","src":"2809:31:50"},{"nodeType":"YulAssignment","src":"2849:15:50","value":{"name":"value","nodeType":"YulIdentifier","src":"2859:5:50"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2849:6:50"}]},{"nodeType":"YulVariableDeclaration","src":"2873:46:50","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2904:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"2915:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2900:3:50"},"nodeType":"YulFunctionCall","src":"2900:18:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2887:12:50"},"nodeType":"YulFunctionCall","src":"2887:32:50"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"2877:6:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2928:28:50","value":{"kind":"number","nodeType":"YulLiteral","src":"2938:18:50","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"2932:2:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"2983:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2992:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2995:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2985:6:50"},"nodeType":"YulFunctionCall","src":"2985:12:50"},"nodeType":"YulExpressionStatement","src":"2985:12:50"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"2971:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"2979:2:50"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2968:2:50"},"nodeType":"YulFunctionCall","src":"2968:14:50"},"nodeType":"YulIf","src":"2965:34:50"},{"nodeType":"YulVariableDeclaration","src":"3008:32:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3022:9:50"},{"name":"offset","nodeType":"YulIdentifier","src":"3033:6:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3018:3:50"},"nodeType":"YulFunctionCall","src":"3018:22:50"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"3012:2:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"3088:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3097:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3100:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3090:6:50"},"nodeType":"YulFunctionCall","src":"3090:12:50"},"nodeType":"YulExpressionStatement","src":"3090:12:50"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"3067:2:50"},{"kind":"number","nodeType":"YulLiteral","src":"3071:4:50","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3063:3:50"},"nodeType":"YulFunctionCall","src":"3063:13:50"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3078:7:50"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3059:3:50"},"nodeType":"YulFunctionCall","src":"3059:27:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3052:6:50"},"nodeType":"YulFunctionCall","src":"3052:35:50"},"nodeType":"YulIf","src":"3049:55:50"},{"nodeType":"YulVariableDeclaration","src":"3113:26:50","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"3136:2:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3123:12:50"},"nodeType":"YulFunctionCall","src":"3123:16:50"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"3117:2:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"3162:22:50","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"3164:16:50"},"nodeType":"YulFunctionCall","src":"3164:18:50"},"nodeType":"YulExpressionStatement","src":"3164:18:50"}]},"condition":{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"3154:2:50"},{"name":"_1","nodeType":"YulIdentifier","src":"3158:2:50"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3151:2:50"},"nodeType":"YulFunctionCall","src":"3151:10:50"},"nodeType":"YulIf","src":"3148:36:50"},{"nodeType":"YulVariableDeclaration","src":"3193:17:50","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3207:2:50","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"3203:3:50"},"nodeType":"YulFunctionCall","src":"3203:7:50"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"3197:2:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3219:23:50","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3239:2:50","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3233:5:50"},"nodeType":"YulFunctionCall","src":"3233:9:50"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"3223:6:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3251:71:50","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"3273:6:50"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"3297:2:50"},{"kind":"number","nodeType":"YulLiteral","src":"3301:4:50","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3293:3:50"},"nodeType":"YulFunctionCall","src":"3293:13:50"},{"name":"_4","nodeType":"YulIdentifier","src":"3308:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3289:3:50"},"nodeType":"YulFunctionCall","src":"3289:22:50"},{"kind":"number","nodeType":"YulLiteral","src":"3313:2:50","type":"","value":"63"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3285:3:50"},"nodeType":"YulFunctionCall","src":"3285:31:50"},{"name":"_4","nodeType":"YulIdentifier","src":"3318:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3281:3:50"},"nodeType":"YulFunctionCall","src":"3281:40:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3269:3:50"},"nodeType":"YulFunctionCall","src":"3269:53:50"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"3255:10:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"3381:22:50","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"3383:16:50"},"nodeType":"YulFunctionCall","src":"3383:18:50"},"nodeType":"YulExpressionStatement","src":"3383:18:50"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"3340:10:50"},{"name":"_1","nodeType":"YulIdentifier","src":"3352:2:50"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3337:2:50"},"nodeType":"YulFunctionCall","src":"3337:18:50"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"3360:10:50"},{"name":"memPtr","nodeType":"YulIdentifier","src":"3372:6:50"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"3357:2:50"},"nodeType":"YulFunctionCall","src":"3357:22:50"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"3334:2:50"},"nodeType":"YulFunctionCall","src":"3334:46:50"},"nodeType":"YulIf","src":"3331:72:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3419:2:50","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"3423:10:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3412:6:50"},"nodeType":"YulFunctionCall","src":"3412:22:50"},"nodeType":"YulExpressionStatement","src":"3412:22:50"},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"3450:6:50"},{"name":"_3","nodeType":"YulIdentifier","src":"3458:2:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3443:6:50"},"nodeType":"YulFunctionCall","src":"3443:18:50"},"nodeType":"YulExpressionStatement","src":"3443:18:50"},{"body":{"nodeType":"YulBlock","src":"3507:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3516:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3519:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3509:6:50"},"nodeType":"YulFunctionCall","src":"3509:12:50"},"nodeType":"YulExpressionStatement","src":"3509:12:50"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"3484:2:50"},{"name":"_3","nodeType":"YulIdentifier","src":"3488:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3480:3:50"},"nodeType":"YulFunctionCall","src":"3480:11:50"},{"kind":"number","nodeType":"YulLiteral","src":"3493:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3476:3:50"},"nodeType":"YulFunctionCall","src":"3476:20:50"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3498:7:50"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3473:2:50"},"nodeType":"YulFunctionCall","src":"3473:33:50"},"nodeType":"YulIf","src":"3470:53:50"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"3549:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"3557:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3545:3:50"},"nodeType":"YulFunctionCall","src":"3545:15:50"},{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"3566:2:50"},{"kind":"number","nodeType":"YulLiteral","src":"3570:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3562:3:50"},"nodeType":"YulFunctionCall","src":"3562:11:50"},{"name":"_3","nodeType":"YulIdentifier","src":"3575:2:50"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"3532:12:50"},"nodeType":"YulFunctionCall","src":"3532:46:50"},"nodeType":"YulExpressionStatement","src":"3532:46:50"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"3602:6:50"},{"name":"_3","nodeType":"YulIdentifier","src":"3610:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3598:3:50"},"nodeType":"YulFunctionCall","src":"3598:15:50"},{"kind":"number","nodeType":"YulLiteral","src":"3615:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3594:3:50"},"nodeType":"YulFunctionCall","src":"3594:24:50"},{"kind":"number","nodeType":"YulLiteral","src":"3620:1:50","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3587:6:50"},"nodeType":"YulFunctionCall","src":"3587:35:50"},"nodeType":"YulExpressionStatement","src":"3587:35:50"},{"nodeType":"YulAssignment","src":"3631:16:50","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"3641:6:50"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"3631:6:50"}]}]},"name":"abi_decode_tuple_t_addresst_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2651:9:50","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2662:7:50","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2674:6:50","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2682:6:50","type":""}],"src":"2597:1056:50"},{"body":{"nodeType":"YulBlock","src":"3759:76:50","statements":[{"nodeType":"YulAssignment","src":"3769:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3781:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"3792:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3777:3:50"},"nodeType":"YulFunctionCall","src":"3777:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3769:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3811:9:50"},{"name":"value0","nodeType":"YulIdentifier","src":"3822:6:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3804:6:50"},"nodeType":"YulFunctionCall","src":"3804:25:50"},"nodeType":"YulExpressionStatement","src":"3804:25:50"}]},"name":"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3728:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3739:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3750:4:50","type":""}],"src":"3658:177:50"},{"body":{"nodeType":"YulBlock","src":"3941:125:50","statements":[{"nodeType":"YulAssignment","src":"3951:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3963:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"3974:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3959:3:50"},"nodeType":"YulFunctionCall","src":"3959:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3951:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3993:9:50"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4008:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"4016:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4004:3:50"},"nodeType":"YulFunctionCall","src":"4004:55:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3986:6:50"},"nodeType":"YulFunctionCall","src":"3986:74:50"},"nodeType":"YulExpressionStatement","src":"3986:74:50"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3910:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3921:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3932:4:50","type":""}],"src":"3840:226:50"},{"body":{"nodeType":"YulBlock","src":"4154:177:50","statements":[{"body":{"nodeType":"YulBlock","src":"4200:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4209:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4212:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4202:6:50"},"nodeType":"YulFunctionCall","src":"4202:12:50"},"nodeType":"YulExpressionStatement","src":"4202:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"4175:7:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"4184:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4171:3:50"},"nodeType":"YulFunctionCall","src":"4171:23:50"},{"kind":"number","nodeType":"YulLiteral","src":"4196:2:50","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4167:3:50"},"nodeType":"YulFunctionCall","src":"4167:32:50"},"nodeType":"YulIf","src":"4164:52:50"},{"nodeType":"YulVariableDeclaration","src":"4225:36:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4251:9:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4238:12:50"},"nodeType":"YulFunctionCall","src":"4238:23:50"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"4229:5:50","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4295:5:50"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"4270:24:50"},"nodeType":"YulFunctionCall","src":"4270:31:50"},"nodeType":"YulExpressionStatement","src":"4270:31:50"},{"nodeType":"YulAssignment","src":"4310:15:50","value":{"name":"value","nodeType":"YulIdentifier","src":"4320:5:50"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"4310:6:50"}]}]},"name":"abi_decode_tuple_t_contract$_IDAO_$2538","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4120:9:50","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"4131:7:50","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"4143:6:50","type":""}],"src":"4071:260:50"},{"body":{"nodeType":"YulBlock","src":"4510:236:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4527:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"4538:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4520:6:50"},"nodeType":"YulFunctionCall","src":"4520:21:50"},"nodeType":"YulExpressionStatement","src":"4520:21:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4561:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"4572:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4557:3:50"},"nodeType":"YulFunctionCall","src":"4557:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"4577:2:50","type":"","value":"46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4550:6:50"},"nodeType":"YulFunctionCall","src":"4550:30:50"},"nodeType":"YulExpressionStatement","src":"4550:30:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4600:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"4611:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4596:3:50"},"nodeType":"YulFunctionCall","src":"4596:18:50"},{"hexValue":"496e697469616c697a61626c653a20636f6e747261637420697320616c726561","kind":"string","nodeType":"YulLiteral","src":"4616:34:50","type":"","value":"Initializable: contract is alrea"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4589:6:50"},"nodeType":"YulFunctionCall","src":"4589:62:50"},"nodeType":"YulExpressionStatement","src":"4589:62:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4671:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"4682:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4667:3:50"},"nodeType":"YulFunctionCall","src":"4667:18:50"},{"hexValue":"647920696e697469616c697a6564","kind":"string","nodeType":"YulLiteral","src":"4687:16:50","type":"","value":"dy initialized"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4660:6:50"},"nodeType":"YulFunctionCall","src":"4660:44:50"},"nodeType":"YulExpressionStatement","src":"4660:44:50"},{"nodeType":"YulAssignment","src":"4713:27:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4725:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"4736:3:50","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4721:3:50"},"nodeType":"YulFunctionCall","src":"4721:19:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4713:4:50"}]}]},"name":"abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4487:9:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4501:4:50","type":""}],"src":"4336:410:50"},{"body":{"nodeType":"YulBlock","src":"4848:87:50","statements":[{"nodeType":"YulAssignment","src":"4858:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4870:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"4881:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4866:3:50"},"nodeType":"YulFunctionCall","src":"4866:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4858:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4900:9:50"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4915:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"4923:4:50","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4911:3:50"},"nodeType":"YulFunctionCall","src":"4911:17:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4893:6:50"},"nodeType":"YulFunctionCall","src":"4893:36:50"},"nodeType":"YulExpressionStatement","src":"4893:36:50"}]},"name":"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4817:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"4828:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4839:4:50","type":""}],"src":"4751:184:50"},{"body":{"nodeType":"YulBlock","src":"5114:234:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5131:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"5142:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5124:6:50"},"nodeType":"YulFunctionCall","src":"5124:21:50"},"nodeType":"YulExpressionStatement","src":"5124:21:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5165:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"5176:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5161:3:50"},"nodeType":"YulFunctionCall","src":"5161:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"5181:2:50","type":"","value":"44"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5154:6:50"},"nodeType":"YulFunctionCall","src":"5154:30:50"},"nodeType":"YulExpressionStatement","src":"5154:30:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5204:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"5215:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5200:3:50"},"nodeType":"YulFunctionCall","src":"5200:18:50"},{"hexValue":"46756e6374696f6e206d7573742062652063616c6c6564207468726f75676820","kind":"string","nodeType":"YulLiteral","src":"5220:34:50","type":"","value":"Function must be called through "}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5193:6:50"},"nodeType":"YulFunctionCall","src":"5193:62:50"},"nodeType":"YulExpressionStatement","src":"5193:62:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5275:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"5286:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5271:3:50"},"nodeType":"YulFunctionCall","src":"5271:18:50"},{"hexValue":"64656c656761746563616c6c","kind":"string","nodeType":"YulLiteral","src":"5291:14:50","type":"","value":"delegatecall"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5264:6:50"},"nodeType":"YulFunctionCall","src":"5264:42:50"},"nodeType":"YulExpressionStatement","src":"5264:42:50"},{"nodeType":"YulAssignment","src":"5315:27:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5327:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"5338:3:50","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5323:3:50"},"nodeType":"YulFunctionCall","src":"5323:19:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5315:4:50"}]}]},"name":"abi_encode_tuple_t_stringliteral_36e108fa7a809b52ab1951dd91c117a7bc9ac5250bdf1aa162d4e104f7edf9eb__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5091:9:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5105:4:50","type":""}],"src":"4940:408:50"},{"body":{"nodeType":"YulBlock","src":"5527:234:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5544:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"5555:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5537:6:50"},"nodeType":"YulFunctionCall","src":"5537:21:50"},"nodeType":"YulExpressionStatement","src":"5537:21:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5578:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"5589:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5574:3:50"},"nodeType":"YulFunctionCall","src":"5574:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"5594:2:50","type":"","value":"44"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5567:6:50"},"nodeType":"YulFunctionCall","src":"5567:30:50"},"nodeType":"YulExpressionStatement","src":"5567:30:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5617:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"5628:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5613:3:50"},"nodeType":"YulFunctionCall","src":"5613:18:50"},{"hexValue":"46756e6374696f6e206d7573742062652063616c6c6564207468726f75676820","kind":"string","nodeType":"YulLiteral","src":"5633:34:50","type":"","value":"Function must be called through "}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5606:6:50"},"nodeType":"YulFunctionCall","src":"5606:62:50"},"nodeType":"YulExpressionStatement","src":"5606:62:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5688:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"5699:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5684:3:50"},"nodeType":"YulFunctionCall","src":"5684:18:50"},{"hexValue":"6163746976652070726f7879","kind":"string","nodeType":"YulLiteral","src":"5704:14:50","type":"","value":"active proxy"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5677:6:50"},"nodeType":"YulFunctionCall","src":"5677:42:50"},"nodeType":"YulExpressionStatement","src":"5677:42:50"},{"nodeType":"YulAssignment","src":"5728:27:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5740:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"5751:3:50","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5736:3:50"},"nodeType":"YulFunctionCall","src":"5736:19:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5728:4:50"}]}]},"name":"abi_encode_tuple_t_stringliteral_52f1ead4d9653e13afbd2e90ef2587c30187cd50b2e97d784e3f7a7541247434__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5504:9:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5518:4:50","type":""}],"src":"5353:408:50"},{"body":{"nodeType":"YulBlock","src":"5940:246:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5957:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"5968:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5950:6:50"},"nodeType":"YulFunctionCall","src":"5950:21:50"},"nodeType":"YulExpressionStatement","src":"5950:21:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5991:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"6002:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5987:3:50"},"nodeType":"YulFunctionCall","src":"5987:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"6007:2:50","type":"","value":"56"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5980:6:50"},"nodeType":"YulFunctionCall","src":"5980:30:50"},"nodeType":"YulExpressionStatement","src":"5980:30:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6030:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"6041:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6026:3:50"},"nodeType":"YulFunctionCall","src":"6026:18:50"},{"hexValue":"555550535570677261646561626c653a206d757374206e6f742062652063616c","kind":"string","nodeType":"YulLiteral","src":"6046:34:50","type":"","value":"UUPSUpgradeable: must not be cal"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6019:6:50"},"nodeType":"YulFunctionCall","src":"6019:62:50"},"nodeType":"YulExpressionStatement","src":"6019:62:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6101:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"6112:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6097:3:50"},"nodeType":"YulFunctionCall","src":"6097:18:50"},{"hexValue":"6c6564207468726f7567682064656c656761746563616c6c","kind":"string","nodeType":"YulLiteral","src":"6117:26:50","type":"","value":"led through delegatecall"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6090:6:50"},"nodeType":"YulFunctionCall","src":"6090:54:50"},"nodeType":"YulExpressionStatement","src":"6090:54:50"},{"nodeType":"YulAssignment","src":"6153:27:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6165:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"6176:3:50","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6161:3:50"},"nodeType":"YulFunctionCall","src":"6161:19:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6153:4:50"}]}]},"name":"abi_encode_tuple_t_stringliteral_67f0151b4ad1dcfa0e3302a0cd6019f51582ef1807b37dceb00bd852a514f7f4__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5917:9:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5931:4:50","type":""}],"src":"5766:420:50"},{"body":{"nodeType":"YulBlock","src":"6272:103:50","statements":[{"body":{"nodeType":"YulBlock","src":"6318:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6327:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6330:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6320:6:50"},"nodeType":"YulFunctionCall","src":"6320:12:50"},"nodeType":"YulExpressionStatement","src":"6320:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"6293:7:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"6302:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6289:3:50"},"nodeType":"YulFunctionCall","src":"6289:23:50"},{"kind":"number","nodeType":"YulLiteral","src":"6314:2:50","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6285:3:50"},"nodeType":"YulFunctionCall","src":"6285:32:50"},"nodeType":"YulIf","src":"6282:52:50"},{"nodeType":"YulAssignment","src":"6343:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6359:9:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6353:5:50"},"nodeType":"YulFunctionCall","src":"6353:16:50"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"6343:6:50"}]}]},"name":"abi_decode_tuple_t_bytes32_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6238:9:50","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"6249:7:50","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"6261:6:50","type":""}],"src":"6191:184:50"},{"body":{"nodeType":"YulBlock","src":"6554:236:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6571:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"6582:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6564:6:50"},"nodeType":"YulFunctionCall","src":"6564:21:50"},"nodeType":"YulExpressionStatement","src":"6564:21:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6605:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"6616:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6601:3:50"},"nodeType":"YulFunctionCall","src":"6601:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"6621:2:50","type":"","value":"46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6594:6:50"},"nodeType":"YulFunctionCall","src":"6594:30:50"},"nodeType":"YulExpressionStatement","src":"6594:30:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6644:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"6655:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6640:3:50"},"nodeType":"YulFunctionCall","src":"6640:18:50"},{"hexValue":"45524331393637557067726164653a206e657720696d706c656d656e74617469","kind":"string","nodeType":"YulLiteral","src":"6660:34:50","type":"","value":"ERC1967Upgrade: new implementati"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6633:6:50"},"nodeType":"YulFunctionCall","src":"6633:62:50"},"nodeType":"YulExpressionStatement","src":"6633:62:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6715:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"6726:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6711:3:50"},"nodeType":"YulFunctionCall","src":"6711:18:50"},{"hexValue":"6f6e206973206e6f742055555053","kind":"string","nodeType":"YulLiteral","src":"6731:16:50","type":"","value":"on is not UUPS"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6704:6:50"},"nodeType":"YulFunctionCall","src":"6704:44:50"},"nodeType":"YulExpressionStatement","src":"6704:44:50"},{"nodeType":"YulAssignment","src":"6757:27:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6769:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"6780:3:50","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6765:3:50"},"nodeType":"YulFunctionCall","src":"6765:19:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6757:4:50"}]}]},"name":"abi_encode_tuple_t_stringliteral_8e8e2fbcb586f700b5b14e2c4a650c8d83b9773c31c5fe8962070ea544e11f24__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6531:9:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6545:4:50","type":""}],"src":"6380:410:50"},{"body":{"nodeType":"YulBlock","src":"6969:231:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6986:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"6997:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6979:6:50"},"nodeType":"YulFunctionCall","src":"6979:21:50"},"nodeType":"YulExpressionStatement","src":"6979:21:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7020:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"7031:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7016:3:50"},"nodeType":"YulFunctionCall","src":"7016:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"7036:2:50","type":"","value":"41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7009:6:50"},"nodeType":"YulFunctionCall","src":"7009:30:50"},"nodeType":"YulExpressionStatement","src":"7009:30:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7059:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"7070:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7055:3:50"},"nodeType":"YulFunctionCall","src":"7055:18:50"},{"hexValue":"45524331393637557067726164653a20756e737570706f727465642070726f78","kind":"string","nodeType":"YulLiteral","src":"7075:34:50","type":"","value":"ERC1967Upgrade: unsupported prox"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7048:6:50"},"nodeType":"YulFunctionCall","src":"7048:62:50"},"nodeType":"YulExpressionStatement","src":"7048:62:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7130:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"7141:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7126:3:50"},"nodeType":"YulFunctionCall","src":"7126:18:50"},{"hexValue":"6961626c6555554944","kind":"string","nodeType":"YulLiteral","src":"7146:11:50","type":"","value":"iableUUID"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7119:6:50"},"nodeType":"YulFunctionCall","src":"7119:39:50"},"nodeType":"YulExpressionStatement","src":"7119:39:50"},{"nodeType":"YulAssignment","src":"7167:27:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7179:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"7190:3:50","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7175:3:50"},"nodeType":"YulFunctionCall","src":"7175:19:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7167:4:50"}]}]},"name":"abi_encode_tuple_t_stringliteral_76b6b6debfc5febf101145a79ecf0b0d2e89e397dfdab2bca99888370411152c__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6946:9:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6960:4:50","type":""}],"src":"6795:405:50"},{"body":{"nodeType":"YulBlock","src":"7379:233:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7396:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"7407:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7389:6:50"},"nodeType":"YulFunctionCall","src":"7389:21:50"},"nodeType":"YulExpressionStatement","src":"7389:21:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7430:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"7441:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7426:3:50"},"nodeType":"YulFunctionCall","src":"7426:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"7446:2:50","type":"","value":"43"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7419:6:50"},"nodeType":"YulFunctionCall","src":"7419:30:50"},"nodeType":"YulExpressionStatement","src":"7419:30:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7469:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"7480:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7465:3:50"},"nodeType":"YulFunctionCall","src":"7465:18:50"},{"hexValue":"496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069","kind":"string","nodeType":"YulLiteral","src":"7485:34:50","type":"","value":"Initializable: contract is not i"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7458:6:50"},"nodeType":"YulFunctionCall","src":"7458:62:50"},"nodeType":"YulExpressionStatement","src":"7458:62:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7540:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"7551:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7536:3:50"},"nodeType":"YulFunctionCall","src":"7536:18:50"},{"hexValue":"6e697469616c697a696e67","kind":"string","nodeType":"YulLiteral","src":"7556:13:50","type":"","value":"nitializing"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7529:6:50"},"nodeType":"YulFunctionCall","src":"7529:41:50"},"nodeType":"YulExpressionStatement","src":"7529:41:50"},{"nodeType":"YulAssignment","src":"7579:27:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7591:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"7602:3:50","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7587:3:50"},"nodeType":"YulFunctionCall","src":"7587:19:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7579:4:50"}]}]},"name":"abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7356:9:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7370:4:50","type":""}],"src":"7205:407:50"},{"body":{"nodeType":"YulBlock","src":"7830:472:50","statements":[{"nodeType":"YulVariableDeclaration","src":"7840:52:50","value":{"kind":"number","nodeType":"YulLiteral","src":"7850:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"7844:2:50","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7908:9:50"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7923:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"7931:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7919:3:50"},"nodeType":"YulFunctionCall","src":"7919:15:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7901:6:50"},"nodeType":"YulFunctionCall","src":"7901:34:50"},"nodeType":"YulExpressionStatement","src":"7901:34:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7955:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"7966:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7951:3:50"},"nodeType":"YulFunctionCall","src":"7951:18:50"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"7975:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"7983:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7971:3:50"},"nodeType":"YulFunctionCall","src":"7971:15:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7944:6:50"},"nodeType":"YulFunctionCall","src":"7944:43:50"},"nodeType":"YulExpressionStatement","src":"7944:43:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8007:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"8018:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8003:3:50"},"nodeType":"YulFunctionCall","src":"8003:18:50"},{"name":"value2","nodeType":"YulIdentifier","src":"8023:6:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7996:6:50"},"nodeType":"YulFunctionCall","src":"7996:34:50"},"nodeType":"YulExpressionStatement","src":"7996:34:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8050:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"8061:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8046:3:50"},"nodeType":"YulFunctionCall","src":"8046:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"8066:3:50","type":"","value":"128"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8039:6:50"},"nodeType":"YulFunctionCall","src":"8039:31:50"},"nodeType":"YulExpressionStatement","src":"8039:31:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8090:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"8101:3:50","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8086:3:50"},"nodeType":"YulFunctionCall","src":"8086:19:50"},{"name":"value4","nodeType":"YulIdentifier","src":"8107:6:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8079:6:50"},"nodeType":"YulFunctionCall","src":"8079:35:50"},"nodeType":"YulExpressionStatement","src":"8079:35:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8140:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"8151:3:50","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8136:3:50"},"nodeType":"YulFunctionCall","src":"8136:19:50"},{"name":"value3","nodeType":"YulIdentifier","src":"8157:6:50"},{"name":"value4","nodeType":"YulIdentifier","src":"8165:6:50"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"8123:12:50"},"nodeType":"YulFunctionCall","src":"8123:49:50"},"nodeType":"YulExpressionStatement","src":"8123:49:50"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8196:9:50"},{"name":"value4","nodeType":"YulIdentifier","src":"8207:6:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8192:3:50"},"nodeType":"YulFunctionCall","src":"8192:22:50"},{"kind":"number","nodeType":"YulLiteral","src":"8216:3:50","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8188:3:50"},"nodeType":"YulFunctionCall","src":"8188:32:50"},{"kind":"number","nodeType":"YulLiteral","src":"8222:1:50","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8181:6:50"},"nodeType":"YulFunctionCall","src":"8181:43:50"},"nodeType":"YulExpressionStatement","src":"8181:43:50"},{"nodeType":"YulAssignment","src":"8233:63:50","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8249:9:50"},{"arguments":[{"arguments":[{"name":"value4","nodeType":"YulIdentifier","src":"8268:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"8276:2:50","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8264:3:50"},"nodeType":"YulFunctionCall","src":"8264:15:50"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8285:2:50","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"8281:3:50"},"nodeType":"YulFunctionCall","src":"8281:7:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8260:3:50"},"nodeType":"YulFunctionCall","src":"8260:29:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8245:3:50"},"nodeType":"YulFunctionCall","src":"8245:45:50"},{"kind":"number","nodeType":"YulLiteral","src":"8292:3:50","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8241:3:50"},"nodeType":"YulFunctionCall","src":"8241:55:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"8233:4:50"}]}]},"name":"abi_encode_tuple_t_address_t_address_t_bytes32_t_bytes_calldata_ptr__to_t_address_t_address_t_bytes32_t_bytes_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7767:9:50","type":""},{"name":"value4","nodeType":"YulTypedName","src":"7778:6:50","type":""},{"name":"value3","nodeType":"YulTypedName","src":"7786:6:50","type":""},{"name":"value2","nodeType":"YulTypedName","src":"7794:6:50","type":""},{"name":"value1","nodeType":"YulTypedName","src":"7802:6:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"7810:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7821:4:50","type":""}],"src":"7617:685:50"},{"body":{"nodeType":"YulBlock","src":"8385:199:50","statements":[{"body":{"nodeType":"YulBlock","src":"8431:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8440:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8443:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8433:6:50"},"nodeType":"YulFunctionCall","src":"8433:12:50"},"nodeType":"YulExpressionStatement","src":"8433:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"8406:7:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"8415:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"8402:3:50"},"nodeType":"YulFunctionCall","src":"8402:23:50"},{"kind":"number","nodeType":"YulLiteral","src":"8427:2:50","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"8398:3:50"},"nodeType":"YulFunctionCall","src":"8398:32:50"},"nodeType":"YulIf","src":"8395:52:50"},{"nodeType":"YulVariableDeclaration","src":"8456:29:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8475:9:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"8469:5:50"},"nodeType":"YulFunctionCall","src":"8469:16:50"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"8460:5:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"8538:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8547:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8550:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8540:6:50"},"nodeType":"YulFunctionCall","src":"8540:12:50"},"nodeType":"YulExpressionStatement","src":"8540:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8507:5:50"},{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8528:5:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"8521:6:50"},"nodeType":"YulFunctionCall","src":"8521:13:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"8514:6:50"},"nodeType":"YulFunctionCall","src":"8514:21:50"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"8504:2:50"},"nodeType":"YulFunctionCall","src":"8504:32:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"8497:6:50"},"nodeType":"YulFunctionCall","src":"8497:40:50"},"nodeType":"YulIf","src":"8494:60:50"},{"nodeType":"YulAssignment","src":"8563:15:50","value":{"name":"value","nodeType":"YulIdentifier","src":"8573:5:50"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"8563:6:50"}]}]},"name":"abi_decode_tuple_t_bool_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8351:9:50","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"8362:7:50","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"8374:6:50","type":""}],"src":"8307:277:50"},{"body":{"nodeType":"YulBlock","src":"8774:294:50","statements":[{"nodeType":"YulAssignment","src":"8784:27:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8796:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"8807:3:50","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8792:3:50"},"nodeType":"YulFunctionCall","src":"8792:19:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"8784:4:50"}]},{"nodeType":"YulVariableDeclaration","src":"8820:52:50","value":{"kind":"number","nodeType":"YulLiteral","src":"8830:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"8824:2:50","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8888:9:50"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"8903:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"8911:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8899:3:50"},"nodeType":"YulFunctionCall","src":"8899:15:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8881:6:50"},"nodeType":"YulFunctionCall","src":"8881:34:50"},"nodeType":"YulExpressionStatement","src":"8881:34:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8935:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"8946:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8931:3:50"},"nodeType":"YulFunctionCall","src":"8931:18:50"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"8955:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"8963:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8951:3:50"},"nodeType":"YulFunctionCall","src":"8951:15:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8924:6:50"},"nodeType":"YulFunctionCall","src":"8924:43:50"},"nodeType":"YulExpressionStatement","src":"8924:43:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8987:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"8998:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8983:3:50"},"nodeType":"YulFunctionCall","src":"8983:18:50"},{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"9007:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"9015:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"9003:3:50"},"nodeType":"YulFunctionCall","src":"9003:15:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8976:6:50"},"nodeType":"YulFunctionCall","src":"8976:43:50"},"nodeType":"YulExpressionStatement","src":"8976:43:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9039:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"9050:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9035:3:50"},"nodeType":"YulFunctionCall","src":"9035:18:50"},{"name":"value3","nodeType":"YulIdentifier","src":"9055:6:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9028:6:50"},"nodeType":"YulFunctionCall","src":"9028:34:50"},"nodeType":"YulExpressionStatement","src":"9028:34:50"}]},"name":"abi_encode_tuple_t_address_t_address_t_address_t_bytes32__to_t_address_t_address_t_address_t_bytes32__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8719:9:50","type":""},{"name":"value3","nodeType":"YulTypedName","src":"8730:6:50","type":""},{"name":"value2","nodeType":"YulTypedName","src":"8738:6:50","type":""},{"name":"value1","nodeType":"YulTypedName","src":"8746:6:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"8754:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"8765:4:50","type":""}],"src":"8589:479:50"},{"body":{"nodeType":"YulBlock","src":"9247:235:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9264:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"9275:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9257:6:50"},"nodeType":"YulFunctionCall","src":"9257:21:50"},"nodeType":"YulExpressionStatement","src":"9257:21:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9298:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"9309:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9294:3:50"},"nodeType":"YulFunctionCall","src":"9294:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"9314:2:50","type":"","value":"45"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9287:6:50"},"nodeType":"YulFunctionCall","src":"9287:30:50"},"nodeType":"YulExpressionStatement","src":"9287:30:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9337:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"9348:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9333:3:50"},"nodeType":"YulFunctionCall","src":"9333:18:50"},{"hexValue":"455243313936373a206e657720696d706c656d656e746174696f6e206973206e","kind":"string","nodeType":"YulLiteral","src":"9353:34:50","type":"","value":"ERC1967: new implementation is n"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9326:6:50"},"nodeType":"YulFunctionCall","src":"9326:62:50"},"nodeType":"YulExpressionStatement","src":"9326:62:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9408:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"9419:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9404:3:50"},"nodeType":"YulFunctionCall","src":"9404:18:50"},{"hexValue":"6f74206120636f6e7472616374","kind":"string","nodeType":"YulLiteral","src":"9424:15:50","type":"","value":"ot a contract"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9397:6:50"},"nodeType":"YulFunctionCall","src":"9397:43:50"},"nodeType":"YulExpressionStatement","src":"9397:43:50"},{"nodeType":"YulAssignment","src":"9449:27:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9461:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"9472:3:50","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9457:3:50"},"nodeType":"YulFunctionCall","src":"9457:19:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"9449:4:50"}]}]},"name":"abi_encode_tuple_t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9224:9:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"9238:4:50","type":""}],"src":"9073:409:50"},{"body":{"nodeType":"YulBlock","src":"9553:184:50","statements":[{"nodeType":"YulVariableDeclaration","src":"9563:10:50","value":{"kind":"number","nodeType":"YulLiteral","src":"9572:1:50","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"9567:1:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"9632:63:50","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"9657:3:50"},{"name":"i","nodeType":"YulIdentifier","src":"9662:1:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9653:3:50"},"nodeType":"YulFunctionCall","src":"9653:11:50"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"9676:3:50"},{"name":"i","nodeType":"YulIdentifier","src":"9681:1:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9672:3:50"},"nodeType":"YulFunctionCall","src":"9672:11:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"9666:5:50"},"nodeType":"YulFunctionCall","src":"9666:18:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9646:6:50"},"nodeType":"YulFunctionCall","src":"9646:39:50"},"nodeType":"YulExpressionStatement","src":"9646:39:50"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"9593:1:50"},{"name":"length","nodeType":"YulIdentifier","src":"9596:6:50"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"9590:2:50"},"nodeType":"YulFunctionCall","src":"9590:13:50"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"9604:19:50","statements":[{"nodeType":"YulAssignment","src":"9606:15:50","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"9615:1:50"},{"kind":"number","nodeType":"YulLiteral","src":"9618:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9611:3:50"},"nodeType":"YulFunctionCall","src":"9611:10:50"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"9606:1:50"}]}]},"pre":{"nodeType":"YulBlock","src":"9586:3:50","statements":[]},"src":"9582:113:50"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"9715:3:50"},{"name":"length","nodeType":"YulIdentifier","src":"9720:6:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9711:3:50"},"nodeType":"YulFunctionCall","src":"9711:16:50"},{"kind":"number","nodeType":"YulLiteral","src":"9729:1:50","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9704:6:50"},"nodeType":"YulFunctionCall","src":"9704:27:50"},"nodeType":"YulExpressionStatement","src":"9704:27:50"}]},"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"9531:3:50","type":""},{"name":"dst","nodeType":"YulTypedName","src":"9536:3:50","type":""},{"name":"length","nodeType":"YulTypedName","src":"9541:6:50","type":""}],"src":"9487:250:50"},{"body":{"nodeType":"YulBlock","src":"9879:150:50","statements":[{"nodeType":"YulVariableDeclaration","src":"9889:27:50","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"9909:6:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"9903:5:50"},"nodeType":"YulFunctionCall","src":"9903:13:50"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"9893:6:50","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"9964:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"9972:4:50","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9960:3:50"},"nodeType":"YulFunctionCall","src":"9960:17:50"},{"name":"pos","nodeType":"YulIdentifier","src":"9979:3:50"},{"name":"length","nodeType":"YulIdentifier","src":"9984:6:50"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"9925:34:50"},"nodeType":"YulFunctionCall","src":"9925:66:50"},"nodeType":"YulExpressionStatement","src":"9925:66:50"},{"nodeType":"YulAssignment","src":"10000:23:50","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"10011:3:50"},{"name":"length","nodeType":"YulIdentifier","src":"10016:6:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10007:3:50"},"nodeType":"YulFunctionCall","src":"10007:16:50"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"10000:3:50"}]}]},"name":"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"9855:3:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"9860:6:50","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"9871:3:50","type":""}],"src":"9742:287:50"},{"body":{"nodeType":"YulBlock","src":"10208:179:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10225:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"10236:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10218:6:50"},"nodeType":"YulFunctionCall","src":"10218:21:50"},"nodeType":"YulExpressionStatement","src":"10218:21:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10259:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"10270:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10255:3:50"},"nodeType":"YulFunctionCall","src":"10255:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"10275:2:50","type":"","value":"29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10248:6:50"},"nodeType":"YulFunctionCall","src":"10248:30:50"},"nodeType":"YulExpressionStatement","src":"10248:30:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10298:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"10309:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10294:3:50"},"nodeType":"YulFunctionCall","src":"10294:18:50"},{"hexValue":"416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374","kind":"string","nodeType":"YulLiteral","src":"10314:31:50","type":"","value":"Address: call to non-contract"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10287:6:50"},"nodeType":"YulFunctionCall","src":"10287:59:50"},"nodeType":"YulExpressionStatement","src":"10287:59:50"},{"nodeType":"YulAssignment","src":"10355:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10367:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"10378:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10363:3:50"},"nodeType":"YulFunctionCall","src":"10363:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"10355:4:50"}]}]},"name":"abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"10185:9:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"10199:4:50","type":""}],"src":"10034:353:50"},{"body":{"nodeType":"YulBlock","src":"10513:275:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10530:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"10541:2:50","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10523:6:50"},"nodeType":"YulFunctionCall","src":"10523:21:50"},"nodeType":"YulExpressionStatement","src":"10523:21:50"},{"nodeType":"YulVariableDeclaration","src":"10553:27:50","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"10573:6:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"10567:5:50"},"nodeType":"YulFunctionCall","src":"10567:13:50"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"10557:6:50","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10600:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"10611:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10596:3:50"},"nodeType":"YulFunctionCall","src":"10596:18:50"},{"name":"length","nodeType":"YulIdentifier","src":"10616:6:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10589:6:50"},"nodeType":"YulFunctionCall","src":"10589:34:50"},"nodeType":"YulExpressionStatement","src":"10589:34:50"},{"expression":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"10671:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"10679:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10667:3:50"},"nodeType":"YulFunctionCall","src":"10667:15:50"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10688:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"10699:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10684:3:50"},"nodeType":"YulFunctionCall","src":"10684:18:50"},{"name":"length","nodeType":"YulIdentifier","src":"10704:6:50"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"10632:34:50"},"nodeType":"YulFunctionCall","src":"10632:79:50"},"nodeType":"YulExpressionStatement","src":"10632:79:50"},{"nodeType":"YulAssignment","src":"10720:62:50","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10736:9:50"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"10755:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"10763:2:50","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10751:3:50"},"nodeType":"YulFunctionCall","src":"10751:15:50"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10772:2:50","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"10768:3:50"},"nodeType":"YulFunctionCall","src":"10768:7:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"10747:3:50"},"nodeType":"YulFunctionCall","src":"10747:29:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10732:3:50"},"nodeType":"YulFunctionCall","src":"10732:45:50"},{"kind":"number","nodeType":"YulLiteral","src":"10779:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10728:3:50"},"nodeType":"YulFunctionCall","src":"10728:54:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"10720:4:50"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"10482:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"10493:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"10504:4:50","type":""}],"src":"10392:396:50"}]},"contents":"{\n { }\n function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n if iszero(eq(value, and(value, shl(224, 0xffffffff)))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function abi_decode_tuple_t_uint16(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n if iszero(eq(value, and(value, 0xffff))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 96)\n let pos := headStart\n pos := headStart\n let srcPtr := value0\n let i := 0\n for { } lt(i, 0x03) { i := add(i, 1) }\n {\n mstore(pos, and(mload(srcPtr), 0xff))\n let _1 := 0x20\n pos := add(pos, _1)\n srcPtr := add(srcPtr, _1)\n }\n }\n function validator_revert_address(value)\n {\n if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n }\n function abi_encode_tuple_t_contract$_IDAO_$2538__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_encode_tuple_t_enum$_PluginType_$3994__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n if iszero(lt(value0, 3))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x21)\n revert(0, 0x24)\n }\n mstore(headStart, value0)\n }\n function panic_error_0x41()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function abi_decode_tuple_t_addresst_bytes_memory_ptr(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n let offset := calldataload(add(headStart, 32))\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n let _2 := add(headStart, offset)\n if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n let _3 := calldataload(_2)\n if gt(_3, _1) { panic_error_0x41() }\n let _4 := not(31)\n let memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n mstore(memPtr, _3)\n if gt(add(add(_2, _3), 32), dataEnd) { revert(0, 0) }\n calldatacopy(add(memPtr, 32), add(_2, 32), _3)\n mstore(add(add(memPtr, _3), 32), 0)\n value1 := memPtr\n }\n function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_decode_tuple_t_contract$_IDAO_$2538(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n }\n function abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 46)\n mstore(add(headStart, 64), \"Initializable: contract is alrea\")\n mstore(add(headStart, 96), \"dy initialized\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xff))\n }\n function abi_encode_tuple_t_stringliteral_36e108fa7a809b52ab1951dd91c117a7bc9ac5250bdf1aa162d4e104f7edf9eb__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 44)\n mstore(add(headStart, 64), \"Function must be called through \")\n mstore(add(headStart, 96), \"delegatecall\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_52f1ead4d9653e13afbd2e90ef2587c30187cd50b2e97d784e3f7a7541247434__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 44)\n mstore(add(headStart, 64), \"Function must be called through \")\n mstore(add(headStart, 96), \"active proxy\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_67f0151b4ad1dcfa0e3302a0cd6019f51582ef1807b37dceb00bd852a514f7f4__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 56)\n mstore(add(headStart, 64), \"UUPSUpgradeable: must not be cal\")\n mstore(add(headStart, 96), \"led through delegatecall\")\n tail := add(headStart, 128)\n }\n function abi_decode_tuple_t_bytes32_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := mload(headStart)\n }\n function abi_encode_tuple_t_stringliteral_8e8e2fbcb586f700b5b14e2c4a650c8d83b9773c31c5fe8962070ea544e11f24__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 46)\n mstore(add(headStart, 64), \"ERC1967Upgrade: new implementati\")\n mstore(add(headStart, 96), \"on is not UUPS\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_76b6b6debfc5febf101145a79ecf0b0d2e89e397dfdab2bca99888370411152c__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 41)\n mstore(add(headStart, 64), \"ERC1967Upgrade: unsupported prox\")\n mstore(add(headStart, 96), \"iableUUID\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 43)\n mstore(add(headStart, 64), \"Initializable: contract is not i\")\n mstore(add(headStart, 96), \"nitializing\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_address_t_address_t_bytes32_t_bytes_calldata_ptr__to_t_address_t_address_t_bytes32_t_bytes_memory_ptr__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n {\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n mstore(add(headStart, 64), value2)\n mstore(add(headStart, 96), 128)\n mstore(add(headStart, 128), value4)\n calldatacopy(add(headStart, 160), value3, value4)\n mstore(add(add(headStart, value4), 160), 0)\n tail := add(add(headStart, and(add(value4, 31), not(31))), 160)\n }\n function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := mload(headStart)\n if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_address_t_address_t_address_t_bytes32__to_t_address_t_address_t_address_t_bytes32__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n {\n tail := add(headStart, 128)\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n mstore(add(headStart, 64), and(value2, _1))\n mstore(add(headStart, 96), value3)\n }\n function abi_encode_tuple_t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 45)\n mstore(add(headStart, 64), \"ERC1967: new implementation is n\")\n mstore(add(headStart, 96), \"ot a contract\")\n tail := add(headStart, 128)\n }\n function copy_memory_to_memory_with_cleanup(src, dst, length)\n {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n mstore(add(dst, length), 0)\n }\n function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n {\n let length := mload(value0)\n copy_memory_to_memory_with_cleanup(add(value0, 0x20), pos, length)\n end := add(pos, length)\n }\n function abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 29)\n mstore(add(headStart, 64), \"Address: call to non-contract\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n mstore(headStart, 32)\n let length := mload(value0)\n mstore(add(headStart, 32), length)\n copy_memory_to_memory_with_cleanup(add(value0, 32), add(headStart, 64), length)\n tail := add(add(headStart, and(add(length, 31), not(31))), 64)\n }\n}","id":50,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{"554":[{"length":32,"start":1199},{"length":32,"start":1332},{"length":32,"start":1578},{"length":32,"start":1711},{"length":32,"start":1945}]},"linkReferences":{},"object":"6080604052600436106100f35760003560e01c806352d1902d1161008a578063c4d66de811610059578063c4d66de814610278578063c9c4bfca14610298578063d4b83992146102cc578063efe51cca146102ec57600080fd5b806352d1902d146102175780635c60da1b1461022c5780636accab8c14610241578063776d1a011461025857600080fd5b80633659cfe6116100c65780633659cfe6146101965780634162169f146101b657806341de6830146101e85780634f1ef2861461020457600080fd5b806301ffc9a7146100f8578063039a8c501461012d5780632491118d1461014f5780632ae9c60014610174575b600080fd5b34801561010457600080fd5b50610118610113366004611029565b610303565b60405190151581526020015b60405180910390f35b34801561013957600080fd5b5061014d610148366004611053565b61036f565b005b34801561015b57600080fd5b5061016661012f5481565b604051908152602001610124565b34801561018057600080fd5b5061018961047b565b6040516101249190611077565b3480156101a257600080fd5b5061014d6101b13660046110c0565b6104a5565b3480156101c257600080fd5b5060c9546001600160a01b03165b6040516001600160a01b039091168152602001610124565b3480156101f457600080fd5b50600060405161012491906110dd565b61014d61021236600461111b565b610620565b34801561022357600080fd5b5061016661078c565b34801561023857600080fd5b506101d0610851565b34801561024d57600080fd5b5061016661012d5481565b34801561026457600080fd5b5061014d6102733660046110c0565b610889565b34801561028457600080fd5b5061014d6102933660046110c0565b6108e8565b3480156102a457600080fd5b506101667f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f581565b3480156102d857600080fd5b5060fb546101d0906001600160a01b031681565b3480156102f857600080fd5b5061016661012e5481565b60006001600160e01b0319821663041de68360e41b148061033357506001600160e01b03198216621574e360e91b145b8061034e57506001600160e01b031982166352d1902d60e01b145b8061036957506301ffc9a760e01b6001600160e01b03198316145b92915050565b600054600390610100900460ff16158015610391575060005460ff8083169116105b6103f95760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805461ffff191660ff831617610100179055600261ffff8316101561042157600261012e555b60038261ffff16101561043557600361012f555b6000805461ff001916905560405160ff821681527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b61048361100b565b5060408051606081018252600181526004602082015260009181019190915290565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036105325760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b60648201526084016103f0565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661058d7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b0316146105f85760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b60648201526084016103f0565b610601816109da565b6040805160008082526020820190925261061d91839190610a17565b50565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036106ad5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b60648201526084016103f0565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166107087f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b0316146107735760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b60648201526084016103f0565b61077c826109da565b61078882826001610a17565b5050565b6000306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461082c5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016103f0565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b60006108847f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b60fb80546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d690600090a35050565b600054600390610100900460ff1615801561090a575060005460ff8083169116105b61096d5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016103f0565b6000805461ffff191660ff83161761010017905561098a82610bbc565b600161012d55600261012e55600361012f556000805461ff001916905560405160ff821681527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200161046f565b60c9547f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f590610788906001600160a01b0316303384600036610c30565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610a4f57610a4a83610cec565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610aa9575060408051601f3d908101601f19168201909252610aa6918101906111df565b60015b610b1b5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201527f6f6e206973206e6f74205555505300000000000000000000000000000000000060648201526084016103f0565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114610bb05760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f7860448201527f6961626c6555554944000000000000000000000000000000000000000000000060648201526084016103f0565b50610a4a838383610db7565b600054610100900460ff16610c275760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103f0565b61061d81610de2565b604051637ef7c88360e11b81526001600160a01b0387169063fdef910690610c6490889088908890889088906004016111f8565b602060405180830381865afa158015610c81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca5919061124c565b610ce457604051630cb6f8ed60e21b81526001600160a01b038088166004830152808716602483015285166044820152606481018490526084016103f0565b505050505050565b6001600160a01b0381163b610d695760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e74726163740000000000000000000000000000000000000060648201526084016103f0565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610dc083610e7c565b600082511180610dcd5750805b15610a4a57610ddc8383610ebc565b50505050565b600054610100900460ff16610e4d5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103f0565b60c9805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610e8581610cec565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060610ee183836040518060600160405280602781526020016112e260279139610ee8565b9392505050565b6060600080856001600160a01b031685604051610f059190611292565b600060405180830381855af49150503d8060008114610f40576040519150601f19603f3d011682016040523d82523d6000602084013e610f45565b606091505b5091509150610f5686838387610f60565b9695505050505050565b60608315610fcf578251600003610fc8576001600160a01b0385163b610fc85760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016103f0565b5081610fd9565b610fd98383610fe1565b949350505050565b815115610ff15781518083602001fd5b8060405162461bcd60e51b81526004016103f091906112ae565b60405180606001604052806003906020820280368337509192915050565b60006020828403121561103b57600080fd5b81356001600160e01b031981168114610ee157600080fd5b60006020828403121561106557600080fd5b813561ffff81168114610ee157600080fd5b60608101818360005b60038110156110a257815160ff16835260209283019290910190600101611080565b50505092915050565b6001600160a01b038116811461061d57600080fd5b6000602082840312156110d257600080fd5b8135610ee1816110ab565b60208101600383106110ff57634e487b7160e01b600052602160045260246000fd5b91905290565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561112e57600080fd5b8235611139816110ab565b9150602083013567ffffffffffffffff8082111561115657600080fd5b818501915085601f83011261116a57600080fd5b81358181111561117c5761117c611105565b604051601f8201601f19908116603f011681019083821181831017156111a4576111a4611105565b816040528281528860208487010111156111bd57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6000602082840312156111f157600080fd5b5051919050565b60006001600160a01b03808816835280871660208401525084604083015260806060830152826080830152828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b60006020828403121561125e57600080fd5b81518015158114610ee157600080fd5b60005b83811015611289578181015183820152602001611271565b50506000910152565b600082516112a481846020870161126e565b9190910192915050565b60208152600082518060208401526112cd81604085016020870161126e565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xF3 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x52D1902D GT PUSH2 0x8A JUMPI DUP1 PUSH4 0xC4D66DE8 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0x278 JUMPI DUP1 PUSH4 0xC9C4BFCA EQ PUSH2 0x298 JUMPI DUP1 PUSH4 0xD4B83992 EQ PUSH2 0x2CC JUMPI DUP1 PUSH4 0xEFE51CCA EQ PUSH2 0x2EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x52D1902D EQ PUSH2 0x217 JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0x22C JUMPI DUP1 PUSH4 0x6ACCAB8C EQ PUSH2 0x241 JUMPI DUP1 PUSH4 0x776D1A01 EQ PUSH2 0x258 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x3659CFE6 GT PUSH2 0xC6 JUMPI DUP1 PUSH4 0x3659CFE6 EQ PUSH2 0x196 JUMPI DUP1 PUSH4 0x4162169F EQ PUSH2 0x1B6 JUMPI DUP1 PUSH4 0x41DE6830 EQ PUSH2 0x1E8 JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x204 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xF8 JUMPI DUP1 PUSH4 0x39A8C50 EQ PUSH2 0x12D JUMPI DUP1 PUSH4 0x2491118D EQ PUSH2 0x14F JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0x174 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x104 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x118 PUSH2 0x113 CALLDATASIZE PUSH1 0x4 PUSH2 0x1029 JUMP JUMPDEST PUSH2 0x303 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x139 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x14D PUSH2 0x148 CALLDATASIZE PUSH1 0x4 PUSH2 0x1053 JUMP JUMPDEST PUSH2 0x36F JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x15B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x166 PUSH2 0x12F SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x124 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x180 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x189 PUSH2 0x47B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x124 SWAP2 SWAP1 PUSH2 0x1077 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x14D PUSH2 0x1B1 CALLDATASIZE PUSH1 0x4 PUSH2 0x10C0 JUMP JUMPDEST PUSH2 0x4A5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1C2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xC9 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x124 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 PUSH1 0x40 MLOAD PUSH2 0x124 SWAP2 SWAP1 PUSH2 0x10DD JUMP JUMPDEST PUSH2 0x14D PUSH2 0x212 CALLDATASIZE PUSH1 0x4 PUSH2 0x111B JUMP JUMPDEST PUSH2 0x620 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x223 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x166 PUSH2 0x78C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x238 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1D0 PUSH2 0x851 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x24D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x166 PUSH2 0x12D SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x264 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x14D PUSH2 0x273 CALLDATASIZE PUSH1 0x4 PUSH2 0x10C0 JUMP JUMPDEST PUSH2 0x889 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x284 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x14D PUSH2 0x293 CALLDATASIZE PUSH1 0x4 PUSH2 0x10C0 JUMP JUMPDEST PUSH2 0x8E8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x166 PUSH32 0x821B6E3A557148015A918C89E5D092E878A69854A2D1A410635F771BD5A8A3F5 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xFB SLOAD PUSH2 0x1D0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x166 PUSH2 0x12E SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x41DE683 PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x333 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x34E JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x52D1902D PUSH1 0xE0 SHL EQ JUMPDEST DUP1 PUSH2 0x369 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x3 SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH2 0x391 JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF DUP1 DUP4 AND SWAP2 AND LT JUMPDEST PUSH2 0x3F9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x44 DUP3 ADD MSTORE PUSH14 0x191E481A5B9A5D1A585B1A5E9959 PUSH1 0x92 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH2 0xFFFF NOT AND PUSH1 0xFF DUP4 AND OR PUSH2 0x100 OR SWAP1 SSTORE PUSH1 0x2 PUSH2 0xFFFF DUP4 AND LT ISZERO PUSH2 0x421 JUMPI PUSH1 0x2 PUSH2 0x12E SSTORE JUMPDEST PUSH1 0x3 DUP3 PUSH2 0xFFFF AND LT ISZERO PUSH2 0x435 JUMPI PUSH1 0x3 PUSH2 0x12F SSTORE JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH1 0xFF DUP3 AND DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH2 0x483 PUSH2 0x100B JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x532 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x19195B1959D85D1958D85B1B PUSH1 0xA2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3F0 JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x58D PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x5F8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x6163746976652070726F7879 PUSH1 0xA0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3F0 JUMP JUMPDEST PUSH2 0x601 DUP2 PUSH2 0x9DA JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x61D SWAP2 DUP4 SWAP2 SWAP1 PUSH2 0xA17 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x6AD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x19195B1959D85D1958D85B1B PUSH1 0xA2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3F0 JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x708 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x773 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x6163746976652070726F7879 PUSH1 0xA0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3F0 JUMP JUMPDEST PUSH2 0x77C DUP3 PUSH2 0x9DA JUMP JUMPDEST PUSH2 0x788 DUP3 DUP3 PUSH1 0x1 PUSH2 0xA17 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x82C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x38 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x555550535570677261646561626C653A206D757374206E6F742062652063616C PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6C6564207468726F7567682064656C656761746563616C6C0000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3F0 JUMP JUMPDEST POP PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x884 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0xFB DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP2 SWAP1 DUP3 SWAP1 PUSH32 0x90CC2F570A6EB594B1580EA3E41247D2D73A55281889E86BD4EC2FC29C7E62D6 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x3 SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH2 0x90A JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF DUP1 DUP4 AND SWAP2 AND LT JUMPDEST PUSH2 0x96D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x44 DUP3 ADD MSTORE PUSH14 0x191E481A5B9A5D1A585B1A5E9959 PUSH1 0x92 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3F0 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH2 0xFFFF NOT AND PUSH1 0xFF DUP4 AND OR PUSH2 0x100 OR SWAP1 SSTORE PUSH2 0x98A DUP3 PUSH2 0xBBC JUMP JUMPDEST PUSH1 0x1 PUSH2 0x12D SSTORE PUSH1 0x2 PUSH2 0x12E SSTORE PUSH1 0x3 PUSH2 0x12F SSTORE PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH1 0xFF DUP3 AND DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH2 0x46F JUMP JUMPDEST PUSH1 0xC9 SLOAD PUSH32 0x821B6E3A557148015A918C89E5D092E878A69854A2D1A410635F771BD5A8A3F5 SWAP1 PUSH2 0x788 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ADDRESS CALLER DUP5 PUSH1 0x0 CALLDATASIZE PUSH2 0xC30 JUMP JUMPDEST PUSH32 0x4910FDFA16FED3260ED0E7147F7CC6DA11A60208B5B9406D12A635614FFD9143 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0xA4F JUMPI PUSH2 0xA4A DUP4 PUSH2 0xCEC JUMP JUMPDEST POP POP POP JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x52D1902D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0xAA9 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0xAA6 SWAP2 DUP2 ADD SWAP1 PUSH2 0x11DF JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0xB1B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524331393637557067726164653A206E657720696D706C656D656E74617469 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F6E206973206E6F742055555053000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3F0 JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC DUP2 EQ PUSH2 0xBB0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524331393637557067726164653A20756E737570706F727465642070726F78 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6961626C65555549440000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3F0 JUMP JUMPDEST POP PUSH2 0xA4A DUP4 DUP4 DUP4 PUSH2 0xDB7 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0xC27 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3F0 JUMP JUMPDEST PUSH2 0x61D DUP2 PUSH2 0xDE2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x7EF7C883 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0xFDEF9106 SWAP1 PUSH2 0xC64 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x11F8 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC81 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xCA5 SWAP2 SWAP1 PUSH2 0x124C JUMP JUMPDEST PUSH2 0xCE4 JUMPI PUSH1 0x40 MLOAD PUSH4 0xCB6F8ED PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND PUSH1 0x4 DUP4 ADD MSTORE DUP1 DUP8 AND PUSH1 0x24 DUP4 ADD MSTORE DUP6 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x84 ADD PUSH2 0x3F0 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND EXTCODESIZE PUSH2 0xD69 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313936373A206E657720696D706C656D656E746174696F6E206973206E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F74206120636F6E747261637400000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3F0 JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xDC0 DUP4 PUSH2 0xE7C JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD GT DUP1 PUSH2 0xDCD JUMPI POP DUP1 JUMPDEST ISZERO PUSH2 0xA4A JUMPI PUSH2 0xDDC DUP4 DUP4 PUSH2 0xEBC JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0xE4D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3F0 JUMP JUMPDEST PUSH1 0xC9 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xE85 DUP2 PUSH2 0xCEC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xEE1 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x12E2 PUSH1 0x27 SWAP2 CODECOPY PUSH2 0xEE8 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0xF05 SWAP2 SWAP1 PUSH2 0x1292 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xF40 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xF45 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0xF56 DUP7 DUP4 DUP4 DUP8 PUSH2 0xF60 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0xFCF JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0xFC8 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0xFC8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3F0 JUMP JUMPDEST POP DUP2 PUSH2 0xFD9 JUMP JUMPDEST PUSH2 0xFD9 DUP4 DUP4 PUSH2 0xFE1 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0xFF1 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3F0 SWAP2 SWAP1 PUSH2 0x12AE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x103B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0xEE1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1065 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH2 0xEE1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0x10A2 JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x1080 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x61D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x10D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xEE1 DUP2 PUSH2 0x10AB JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH1 0x3 DUP4 LT PUSH2 0x10FF JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 SWAP1 MSTORE SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x112E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x1139 DUP2 PUSH2 0x10AB JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1156 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x116A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x117C JUMPI PUSH2 0x117C PUSH2 0x1105 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x11A4 JUMPI PUSH2 0x11A4 PUSH2 0x1105 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x11BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x11F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND DUP4 MSTORE DUP1 DUP8 AND PUSH1 0x20 DUP5 ADD MSTORE POP DUP5 PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x80 PUSH1 0x60 DUP4 ADD MSTORE DUP3 PUSH1 0x80 DUP4 ADD MSTORE DUP3 DUP5 PUSH1 0xA0 DUP5 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0xA0 DUP5 DUP5 ADD ADD MSTORE PUSH1 0xA0 PUSH1 0x1F NOT PUSH1 0x1F DUP6 ADD AND DUP4 ADD ADD SWAP1 POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x125E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xEE1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1289 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1271 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x12A4 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x126E JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x12CD DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x126E JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A164 PUSH20 0x6F6C6343000811000A0000000000000000000000 ","sourceMap":"1334:546:31:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2810:366:40;;;;;;;;;;-1:-1:-1;2810:366:40;;;;;:::i;:::-;;:::i;:::-;;;470:14:50;;463:22;445:41;;433:2;418:18;2810:366:40;;;;;;;;1662:216:31;;;;;;;;;;-1:-1:-1;1662:216:31;;;;;:::i;:::-;;:::i;:::-;;1460:21;;;;;;;;;;;;;;;;;;;920:25:50;;;908:2;893:18;1460:21:31;774:177:50;631:98:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;3408:195:5:-;;;;;;;;;;-1:-1:-1;3408:195:5;;;;;:::i;:::-;;:::i;1200:70:35:-;;;;;;;;;;-1:-1:-1;1259:4:35;;-1:-1:-1;;;;;1259:4:35;1200:70;;;-1:-1:-1;;;;;2050:55:50;;;2032:74;;2020:2;2005:18;1200:70:35;1873:239:50;1710:103:40;;;;;;;;;;-1:-1:-1;1762:10:40;1710:103;;;;;;:::i;3922:220:5:-;;;;;;:::i;:::-;;:::i;3027:131::-;;;;;;;;;;;;;:::i;3457:100:40:-;;;;;;;;;;;;;:::i;1406:21:31:-;;;;;;;;;;;;;;;;2439:166:40;;;;;;;;;;-1:-1:-1;2439:166:40;;;;;:::i;:::-;;:::i;1488:168:31:-;;;;;;;;;;-1:-1:-1;1488:168:31;;;;;:::i;:::-;;:::i;1911:93:40:-;;;;;;;;;;;;1966:38;1911:93;;1293:21;;;;;;;;;;-1:-1:-1;1293:21:40;;;;-1:-1:-1;;;;;1293:21:40;;;1433::31;;;;;;;;;;;;;;;;2810:366:40;2896:4;-1:-1:-1;;;;;;2931:41:40;;-1:-1:-1;;;2931:41:40;;:107;;-1:-1:-1;;;;;;;2988:50:40;;-1:-1:-1;;;2988:50:40;2931:107;:185;;;-1:-1:-1;;;;;;;3054:62:40;;-1:-1:-1;;;3054:62:40;2931:185;:238;;;-1:-1:-1;;;;;;;;;;1189:51:10;;;3132:37:40;2912:257;2810:366;-1:-1:-1;;2810:366:40:o;1662:216:31:-;4882:13:4;;1732:1:31;;4882:13:4;;;;;4881:14;:40;;;;-1:-1:-1;4899:12:4;;:22;;;;:12;;:22;4881:40;4873:99;;;;-1:-1:-1;;;4873:99:4;;4538:2:50;4873:99:4;;;4520:21:50;4577:2;4557:18;;;4550:30;4616:34;4596:18;;;4589:62;-1:-1:-1;;;4667:18:50;;;4660:44;4721:19;;4873:99:4;;;;;;;;;4982:12;:22;;-1:-1:-1;;5014:20:4;4982:22;;;5014:20;4982:22;5014:20;;;1766:1:31::1;1749:18;::::0;::::1;;1745:59;;;1792:1;1783:6;:10:::0;1745:59:::1;1834:1;1817:14;:18;;;1813:59;;;1860:1;1851:6;:10:::0;1813:59:::1;5071:5:4::0;5055:21;;-1:-1:-1;;5055:21:4;;;5091:20;;4923:4:50;4911:17;;4893:36;;5091:20:4;;4881:2:50;4866:18;5091:20:4;;;;;;;;1662:216:31;;:::o;631:98:49:-;679:15;;:::i;:::-;-1:-1:-1;706:16:49;;;;;;;;714:1;706:16;;717:1;706:16;;;;-1:-1:-1;706:16:49;;;;;;;;631:98::o;3408:195:5:-;-1:-1:-1;;;;;1764:6:5;1747:23;1755:4;1747:23;1739:80;;;;-1:-1:-1;;;1739:80:5;;5142:2:50;1739:80:5;;;5124:21:50;5181:2;5161:18;;;5154:30;5220:34;5200:18;;;5193:62;-1:-1:-1;;;5271:18:50;;;5264:42;5323:19;;1739:80:5;4940:408:50;1739:80:5;1861:6;-1:-1:-1;;;;;1837:30:5;:20;1180:66:2;1557:65;-1:-1:-1;;;;;1557:65:2;;1478:151;1837:20:5;-1:-1:-1;;;;;1837:30:5;;1829:87;;;;-1:-1:-1;;;1829:87:5;;5555:2:50;1829:87:5;;;5537:21:50;5594:2;5574:18;;;5567:30;5633:34;5613:18;;;5606:62;-1:-1:-1;;;5684:18:50;;;5677:42;5736:19;;1829:87:5;5353:408:50;1829:87:5;3489:36:::1;3507:17;3489;:36::i;:::-;3576:12;::::0;;3586:1:::1;3576:12:::0;;;::::1;::::0;::::1;::::0;;;3535:61:::1;::::0;3557:17;;3576:12;3535:21:::1;:61::i;:::-;3408:195:::0;:::o;3922:220::-;-1:-1:-1;;;;;1764:6:5;1747:23;1755:4;1747:23;1739:80;;;;-1:-1:-1;;;1739:80:5;;5142:2:50;1739:80:5;;;5124:21:50;5181:2;5161:18;;;5154:30;5220:34;5200:18;;;5193:62;-1:-1:-1;;;5271:18:50;;;5264:42;5323:19;;1739:80:5;4940:408:50;1739:80:5;1861:6;-1:-1:-1;;;;;1837:30:5;:20;1180:66:2;1557:65;-1:-1:-1;;;;;1557:65:2;;1478:151;1837:20:5;-1:-1:-1;;;;;1837:30:5;;1829:87;;;;-1:-1:-1;;;1829:87:5;;5555:2:50;1829:87:5;;;5537:21:50;5594:2;5574:18;;;5567:30;5633:34;5613:18;;;5606:62;-1:-1:-1;;;5684:18:50;;;5677:42;5736:19;;1829:87:5;5353:408:50;1829:87:5;4037:36:::1;4055:17;4037;:36::i;:::-;4083:52;4105:17;4124:4;4130;4083:21;:52::i;:::-;3922:220:::0;;:::o;3027:131::-;3105:7;2190:4;-1:-1:-1;;;;;2199:6:5;2182:23;;2174:92;;;;-1:-1:-1;;;2174:92:5;;5968:2:50;2174:92:5;;;5950:21:50;6007:2;5987:18;;;5980:30;6046:34;6026:18;;;6019:62;6117:26;6097:18;;;6090:54;6161:19;;2174:92:5;5766:420:50;2174:92:5;-1:-1:-1;1180:66:2::1;3027:131:5::0;:::o;3457:100:40:-;3504:7;3530:20;1180:66:2;1557:65;-1:-1:-1;;;;;1557:65:2;;1478:151;3530:20:40;3523:27;;3457:100;:::o;2439:166::-;2517:6;;;-1:-1:-1;;;;;2533:16:40;;;-1:-1:-1;;2533:16:40;;;;;;;2564:34;;2517:6;;;2533:16;2517:6;;2564:34;;2492:22;;2564:34;2482:123;2439:166;:::o;1488:168:31:-;4882:13:4;;1542:1:31;;4882:13:4;;;;;4881:14;:40;;;;-1:-1:-1;4899:12:4;;:22;;;;:12;;:22;4881:40;4873:99;;;;-1:-1:-1;;;4873:99:4;;4538:2:50;4873:99:4;;;4520:21:50;4577:2;4557:18;;;4550:30;4616:34;4596:18;;;4589:62;-1:-1:-1;;;4667:18:50;;;4660:44;4721:19;;4873:99:4;4336:410:50;4873:99:4;4982:12;:22;;-1:-1:-1;;5014:20:4;4982:22;;;5014:20;4982:22;5014:20;;;1555:34:31::1;1584:4:::0;1555:28:::1;:34::i;:::-;1608:1;1599:6;:10:::0;1628:1:::1;1619:6;:10:::0;1648:1:::1;1639:6;:10:::0;-1:-1:-1;5055:21:4;;-1:-1:-1;;5055:21:4;;;5091:20;;4923:4:50;4911:17;;4893:36;;5091:20:4;;4881:2:50;4866:18;5091:20:4;4751:184:50;5390:204:40;1616:4:35;;1966:38:40;;1610:67:35;;-1:-1:-1;;;;;1616:4:35;1630;965:10:7;1651:13:35;1039:14:7;;1610:5:35;:67::i;2841:944:2:-;839:66;3257:59;;;3253:526;;;3332:37;3351:17;3332:18;:37::i;:::-;2841:944;;;:::o;3253:526::-;3433:17;-1:-1:-1;;;;;3404:61:2;;:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3404:63:2;;;;;;;;-1:-1:-1;;3404:63:2;;;;;;;;;;;;:::i;:::-;;;3400:302;;3631:56;;-1:-1:-1;;;3631:56:2;;6582:2:50;3631:56:2;;;6564:21:50;6621:2;6601:18;;;6594:30;6660:34;6640:18;;;6633:62;6731:16;6711:18;;;6704:44;6765:19;;3631:56:2;6380:410:50;3400:302:2;1180:66;3517:28;;3509:82;;;;-1:-1:-1;;;3509:82:2;;6997:2:50;3509:82:2;;;6979:21:50;7036:2;7016:18;;;7009:30;7075:34;7055:18;;;7048:62;7146:11;7126:18;;;7119:39;7175:19;;3509:82:2;6795:405:50;3509:82:2;3468:138;3715:53;3733:17;3752:4;3758:9;3715:17;:53::i;2172:139:40:-;5374:13:4;;;;;;;5366:69;;;;-1:-1:-1;;;5366:69:4;;7407:2:50;5366:69:4;;;7389:21:50;7446:2;7426:18;;;7419:30;7485:34;7465:18;;;7458:62;-1:-1:-1;;;7536:18:50;;;7529:41;7587:19;;5366:69:4;7205:407:50;5366:69:4;2265:39:40::1;2299:4;2265:33;:39::i;1041:363:36:-:0;1180:54;;-1:-1:-1;;;1180:54:36;;-1:-1:-1;;;;;1180:18:36;;;;;:54;;1199:6;;1207:4;;1213:13;;1228:5;;;;1180:54;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1175:226;;1251:150;;-1:-1:-1;;;1251:150:36;;-1:-1:-1;;;;;8899:15:50;;;1251:150:36;;;8881:34:50;8951:15;;;8931:18;;;8924:43;9003:15;;8983:18;;;8976:43;9035:18;;;9028:34;;;8792:19;;1251:150:36;8589:479:50;1175:226:36;1041:363;;;;;;:::o;1720:281:2:-;-1:-1:-1;;;;;1713:19:6;;;1793:106:2;;;;-1:-1:-1;;;1793:106:2;;9275:2:50;1793:106:2;;;9257:21:50;9314:2;9294:18;;;9287:30;9353:34;9333:18;;;9326:62;9424:15;9404:18;;;9397:43;9457:19;;1793:106:2;9073:409:50;1793:106:2;1180:66;1909:85;;-1:-1:-1;;1909:85:2;-1:-1:-1;;;;;1909:85:2;;;;;;;;;;1720:281::o;2393:276::-;2501:29;2512:17;2501:10;:29::i;:::-;2558:1;2544:4;:11;:15;:28;;;;2563:9;2544:28;2540:123;;;2588:64;2628:17;2647:4;2588:39;:64::i;:::-;;2393:276;;;:::o;1010:108:35:-;5374:13:4;;;;;;;5366:69;;;;-1:-1:-1;;;5366:69:4;;7407:2:50;5366:69:4;;;7389:21:50;7446:2;7426:18;;;7419:30;7485:34;7465:18;;;7458:62;-1:-1:-1;;;7536:18:50;;;7529:41;7587:19;;5366:69:4;7205:407:50;5366:69:4;1100:4:35::1;:11:::0;;-1:-1:-1;;1100:11:35::1;-1:-1:-1::0;;;;;1100:11:35;;;::::1;::::0;;;::::1;::::0;;1010:108::o;2107:152:2:-;2173:37;2192:17;2173:18;:37::i;:::-;2225:27;;-1:-1:-1;;;;;2225:27:2;;;;;;;;2107:152;:::o;6685:198:6:-;6768:12;6799:77;6820:6;6828:4;6799:77;;;;;;;;;;;;;;;;;:20;:77::i;:::-;6792:84;6685:198;-1:-1:-1;;;6685:198:6:o;7069:325::-;7210:12;7235;7249:23;7276:6;-1:-1:-1;;;;;7276:19:6;7296:4;7276:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7234:67;;;;7318:69;7345:6;7353:7;7362:10;7374:12;7318:26;:69::i;:::-;7311:76;7069:325;-1:-1:-1;;;;;;7069:325:6:o;7682:628::-;7862:12;7890:7;7886:418;;;7917:10;:17;7938:1;7917:22;7913:286;;-1:-1:-1;;;;;1713:19:6;;;8124:60;;;;-1:-1:-1;;;8124:60:6;;10236:2:50;8124:60:6;;;10218:21:50;10275:2;10255:18;;;10248:30;10314:31;10294:18;;;10287:59;10363:18;;8124:60:6;10034:353:50;8124:60:6;-1:-1:-1;8219:10:6;8212:17;;7886:418;8260:33;8268:10;8280:12;8260:7;:33::i;:::-;7682:628;;;;;;:::o;8832:540::-;8991:17;;:21;8987:379;;9219:10;9213:17;9275:15;9262:10;9258:2;9254:19;9247:44;8987:379;9342:12;9335:20;;-1:-1:-1;;;9335:20:6;;;;;;;;:::i;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:286:50:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:50;;209:43;;199:71;;266:1;263;256:12;497:272;555:6;608:2;596:9;587:7;583:23;579:32;576:52;;;624:1;621;614:12;576:52;663:9;650:23;713:6;706:5;702:18;695:5;692:29;682:57;;735:1;732;725:12;956:501;1132:2;1117:18;;1121:9;1212:6;1090:4;1246:205;1260:4;1257:1;1254:11;1246:205;;;1323:13;;1338:4;1319:24;1307:37;;1367:4;1391:12;;;;1426:15;;;;1280:1;1273:9;1246:205;;;1250:3;;;956:501;;;;:::o;1462:154::-;-1:-1:-1;;;;;1541:5:50;1537:54;1530:5;1527:65;1517:93;;1606:1;1603;1596:12;1621:247;1680:6;1733:2;1721:9;1712:7;1708:23;1704:32;1701:52;;;1749:1;1746;1739:12;1701:52;1788:9;1775:23;1807:31;1832:5;1807:31;:::i;2117:343::-;2264:2;2249:18;;2297:1;2286:13;;2276:144;;2342:10;2337:3;2333:20;2330:1;2323:31;2377:4;2374:1;2367:15;2405:4;2402:1;2395:15;2276:144;2429:25;;;2117:343;:::o;2465:127::-;2526:10;2521:3;2517:20;2514:1;2507:31;2557:4;2554:1;2547:15;2581:4;2578:1;2571:15;2597:1056;2674:6;2682;2735:2;2723:9;2714:7;2710:23;2706:32;2703:52;;;2751:1;2748;2741:12;2703:52;2790:9;2777:23;2809:31;2834:5;2809:31;:::i;:::-;2859:5;-1:-1:-1;2915:2:50;2900:18;;2887:32;2938:18;2968:14;;;2965:34;;;2995:1;2992;2985:12;2965:34;3033:6;3022:9;3018:22;3008:32;;3078:7;3071:4;3067:2;3063:13;3059:27;3049:55;;3100:1;3097;3090:12;3049:55;3136:2;3123:16;3158:2;3154;3151:10;3148:36;;;3164:18;;:::i;:::-;3239:2;3233:9;3207:2;3293:13;;-1:-1:-1;;3289:22:50;;;3313:2;3285:31;3281:40;3269:53;;;3337:18;;;3357:22;;;3334:46;3331:72;;;3383:18;;:::i;:::-;3423:10;3419:2;3412:22;3458:2;3450:6;3443:18;3498:7;3493:2;3488;3484;3480:11;3476:20;3473:33;3470:53;;;3519:1;3516;3509:12;3470:53;3575:2;3570;3566;3562:11;3557:2;3549:6;3545:15;3532:46;3620:1;3615:2;3610;3602:6;3598:15;3594:24;3587:35;3641:6;3631:16;;;;;;;2597:1056;;;;;:::o;6191:184::-;6261:6;6314:2;6302:9;6293:7;6289:23;6285:32;6282:52;;;6330:1;6327;6320:12;6282:52;-1:-1:-1;6353:16:50;;6191:184;-1:-1:-1;6191:184:50:o;7617:685::-;7821:4;-1:-1:-1;;;;;7931:2:50;7923:6;7919:15;7908:9;7901:34;7983:2;7975:6;7971:15;7966:2;7955:9;7951:18;7944:43;;8023:6;8018:2;8007:9;8003:18;7996:34;8066:3;8061:2;8050:9;8046:18;8039:31;8107:6;8101:3;8090:9;8086:19;8079:35;8165:6;8157;8151:3;8140:9;8136:19;8123:49;8222:1;8216:3;8207:6;8196:9;8192:22;8188:32;8181:43;8292:3;8285:2;8281:7;8276:2;8268:6;8264:15;8260:29;8249:9;8245:45;8241:55;8233:63;;7617:685;;;;;;;;:::o;8307:277::-;8374:6;8427:2;8415:9;8406:7;8402:23;8398:32;8395:52;;;8443:1;8440;8433:12;8395:52;8475:9;8469:16;8528:5;8521:13;8514:21;8507:5;8504:32;8494:60;;8550:1;8547;8540:12;9487:250;9572:1;9582:113;9596:6;9593:1;9590:13;9582:113;;;9672:11;;;9666:18;9653:11;;;9646:39;9618:2;9611:10;9582:113;;;-1:-1:-1;;9729:1:50;9711:16;;9704:27;9487:250::o;9742:287::-;9871:3;9909:6;9903:13;9925:66;9984:6;9979:3;9972:4;9964:6;9960:17;9925:66;:::i;:::-;10007:16;;;;;9742:287;-1:-1:-1;;9742:287:50:o;10392:396::-;10541:2;10530:9;10523:21;10504:4;10573:6;10567:13;10616:6;10611:2;10600:9;10596:18;10589:34;10632:79;10704:6;10699:2;10688:9;10684:18;10679:2;10671:6;10667:15;10632:79;:::i;:::-;10772:2;10751:15;-1:-1:-1;;10747:29:50;10732:45;;;;10779:2;10728:54;;10392:396;-1:-1:-1;;10392:396:50:o"},"gasEstimates":{"creation":{"codeDepositCost":"977000","executionCost":"infinite","totalCost":"infinite"},"external":{"UPGRADE_PLUGIN_PERMISSION_ID()":"239","dao()":"2365","implementation()":"2414","initialize(address)":"infinite","initializeFrom(uint16)":"98388","pluginType()":"294","protocolVersion()":"infinite","proxiableUUID()":"infinite","setTarget(address)":"26179","state1()":"2362","state2()":"2383","state3()":"2363","supportsInterface(bytes4)":"560","target()":"2403","upgradeTo(address)":"infinite","upgradeToAndCall(address,bytes)":"infinite"}},"methodIdentifiers":{"UPGRADE_PLUGIN_PERMISSION_ID()":"c9c4bfca","dao()":"4162169f","implementation()":"5c60da1b","initialize(address)":"c4d66de8","initializeFrom(uint16)":"039a8c50","pluginType()":"41de6830","protocolVersion()":"2ae9c600","proxiableUUID()":"52d1902d","setTarget(address)":"776d1a01","state1()":"6accab8c","state2()":"efe51cca","state3()":"2491118d","supportsInterface(bytes4)":"01ffc9a7","target()":"d4b83992","upgradeTo(address)":"3659cfe6","upgradeToAndCall(address,bytes)":"4f1ef286"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"dao\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"name\":\"DaoUnauthorized\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousTarget\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newTarget\",\"type\":\"address\"}],\"name\":\"TargetSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"UPGRADE_PLUGIN_PERMISSION_ID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"dao\",\"outputs\":[{\"internalType\":\"contract IDAO\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IDAO\",\"name\":\"_dao\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"_previousBuild\",\"type\":\"uint16\"}],\"name\":\"initializeFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pluginType\",\"outputs\":[{\"internalType\":\"enum IPlugin.PluginType\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"protocolVersion\",\"outputs\":[{\"internalType\":\"uint8[3]\",\"name\":\"\",\"type\":\"uint8[3]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_target\",\"type\":\"address\"}],\"name\":\"setTarget\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"state1\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"state2\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"state3\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"target\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"upgradeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"DO NOT USE IN PRODUCTION!\",\"errors\":{\"DaoUnauthorized(address,address,address,bytes32)\":[{\"params\":{\"dao\":\"The associated DAO.\",\"permissionId\":\"The permission identifier.\",\"where\":\"The context in which the authorization reverted.\",\"who\":\"The address (EOA or contract) missing the permission.\"}}]},\"kind\":\"dev\",\"methods\":{\"dao()\":{\"returns\":{\"_0\":\"The DAO contract.\"}},\"implementation()\":{\"returns\":{\"_0\":\"The address of the implementation contract.\"}},\"protocolVersion()\":{\"details\":\"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\",\"returns\":{\"_0\":\"Returns the semantic Aragon OSx protocol version number.\"}},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"setTarget(address)\":{\"details\":\"Sets the target to a new target (`newTarget`).\"},\"supportsInterface(bytes4)\":{\"params\":{\"_interfaceId\":\"The ID of the interface.\"},\"returns\":{\"_0\":\"Returns `true` if the interface is supported.\"}},\"upgradeTo(address)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"},\"upgradeToAndCall(address,bytes)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"}},\"version\":1},\"userdoc\":{\"errors\":{\"DaoUnauthorized(address,address,address,bytes32)\":[{\"notice\":\"Thrown if a call is unauthorized in the associated DAO.\"}]},\"kind\":\"user\",\"methods\":{\"UPGRADE_PLUGIN_PERMISSION_ID()\":{\"notice\":\"The ID of the permission required to call the `_authorizeUpgrade` function.\"},\"dao()\":{\"notice\":\"Returns the DAO contract.\"},\"implementation()\":{\"notice\":\"Returns the address of the implementation contract in the [proxy storage slot](https://eips.ethereum.org/EIPS/eip-1967) slot the [UUPS proxy](https://eips.ethereum.org/EIPS/eip-1822) is pointing to.\"},\"pluginType()\":{\"notice\":\"Returns the plugin's type\"},\"protocolVersion()\":{\"notice\":\"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\"},\"setTarget(address)\":{\"notice\":\"Can only be called by the current owner. TODO\"},\"supportsInterface(bytes4)\":{\"notice\":\"Checks if an interface is supported by this or its parent contract.\"}},\"notice\":\"A mock upgradeable plugin to be deployed via the UUPS proxy pattern. v1.1 (Release 1, Build 3)\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/mocks/plugin/PluginUUPSUpgradeableMock.sol\":\"PluginUUPSUpgradeableMockBuild3\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/interfaces/IERC1967Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (interfaces/IERC1967.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\\n *\\n * _Available since v4.8.3._\\n */\\ninterface IERC1967Upgradeable {\\n /**\\n * @dev Emitted when the implementation is upgraded.\\n */\\n event Upgraded(address indexed implementation);\\n\\n /**\\n * @dev Emitted when the admin account has changed.\\n */\\n event AdminChanged(address previousAdmin, address newAdmin);\\n\\n /**\\n * @dev Emitted when the beacon is changed.\\n */\\n event BeaconUpgraded(address indexed beacon);\\n}\\n\",\"keccak256\":\"0x47d6e06872b12e72c79d1b5eb55842f860b5fb1207b2317c2358d2766b950a7b\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822ProxiableUpgradeable {\\n /**\\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n * address.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy.\\n */\\n function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../beacon/IBeaconUpgradeable.sol\\\";\\nimport \\\"../../interfaces/IERC1967Upgradeable.sol\\\";\\nimport \\\"../../interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\nimport \\\"../../utils/StorageSlotUpgradeable.sol\\\";\\nimport {Initializable} from \\\"../utils/Initializable.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n */\\nabstract contract ERC1967UpgradeUpgradeable is Initializable, IERC1967Upgradeable {\\n // This is the keccak-256 hash of \\\"eip1967.proxy.rollback\\\" subtracted by 1\\n bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n /**\\n * @dev Storage slot with the address of the current implementation.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n function __ERC1967Upgrade_init() internal onlyInitializing {\\n }\\n\\n function __ERC1967Upgrade_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _getImplementation() internal view returns (address) {\\n return StorageSlotUpgradeable.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 implementation slot.\\n */\\n function _setImplementation(address newImplementation) private {\\n require(AddressUpgradeable.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n StorageSlotUpgradeable.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n }\\n\\n /**\\n * @dev Perform implementation upgrade\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeTo(address newImplementation) internal {\\n _setImplementation(newImplementation);\\n emit Upgraded(newImplementation);\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCall(address newImplementation, bytes memory data, bool forceCall) internal {\\n _upgradeTo(newImplementation);\\n if (data.length > 0 || forceCall) {\\n AddressUpgradeable.functionDelegateCall(newImplementation, data);\\n }\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCallUUPS(address newImplementation, bytes memory data, bool forceCall) internal {\\n // Upgrades from old implementations will perform a rollback test. This test requires the new\\n // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n // this special case will break upgrade paths from old UUPS implementation to new ones.\\n if (StorageSlotUpgradeable.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n _setImplementation(newImplementation);\\n } else {\\n try IERC1822ProxiableUpgradeable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n require(slot == _IMPLEMENTATION_SLOT, \\\"ERC1967Upgrade: unsupported proxiableUUID\\\");\\n } catch {\\n revert(\\\"ERC1967Upgrade: new implementation is not UUPS\\\");\\n }\\n _upgradeToAndCall(newImplementation, data, forceCall);\\n }\\n }\\n\\n /**\\n * @dev Storage slot with the admin of the contract.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _getAdmin() internal view returns (address) {\\n return StorageSlotUpgradeable.getAddressSlot(_ADMIN_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 admin slot.\\n */\\n function _setAdmin(address newAdmin) private {\\n require(newAdmin != address(0), \\\"ERC1967: new admin is the zero address\\\");\\n StorageSlotUpgradeable.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n */\\n function _changeAdmin(address newAdmin) internal {\\n emit AdminChanged(_getAdmin(), newAdmin);\\n _setAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\\n */\\n bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n /**\\n * @dev Returns the current beacon.\\n */\\n function _getBeacon() internal view returns (address) {\\n return StorageSlotUpgradeable.getAddressSlot(_BEACON_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new beacon in the EIP1967 beacon slot.\\n */\\n function _setBeacon(address newBeacon) private {\\n require(AddressUpgradeable.isContract(newBeacon), \\\"ERC1967: new beacon is not a contract\\\");\\n require(\\n AddressUpgradeable.isContract(IBeaconUpgradeable(newBeacon).implementation()),\\n \\\"ERC1967: beacon implementation is not a contract\\\"\\n );\\n StorageSlotUpgradeable.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n }\\n\\n /**\\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n *\\n * Emits a {BeaconUpgraded} event.\\n */\\n function _upgradeBeaconToAndCall(address newBeacon, bytes memory data, bool forceCall) internal {\\n _setBeacon(newBeacon);\\n emit BeaconUpgraded(newBeacon);\\n if (data.length > 0 || forceCall) {\\n AddressUpgradeable.functionDelegateCall(IBeaconUpgradeable(newBeacon).implementation(), data);\\n }\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x7795808e3899c805254e3ae58074b20f799b466e3f43e057e47bedee5fb771f8\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeaconUpgradeable {\\n /**\\n * @dev Must return an address that can be used as a delegate call target.\\n *\\n * {BeaconProxy} will check that this address is a contract.\\n */\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/UUPSUpgradeable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport \\\"../ERC1967/ERC1967UpgradeUpgradeable.sol\\\";\\nimport {Initializable} from \\\"./Initializable.sol\\\";\\n\\n/**\\n * @dev An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an\\n * {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy.\\n *\\n * A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is\\n * reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing\\n * `UUPSUpgradeable` with a custom implementation of upgrades.\\n *\\n * The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism.\\n *\\n * _Available since v4.1._\\n */\\nabstract contract UUPSUpgradeable is Initializable, IERC1822ProxiableUpgradeable, ERC1967UpgradeUpgradeable {\\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable state-variable-assignment\\n address private immutable __self = address(this);\\n\\n /**\\n * @dev Check that the execution is being performed through a delegatecall call and that the execution context is\\n * a proxy contract with an implementation (as defined in ERC1967) pointing to self. This should only be the case\\n * for UUPS and transparent proxies that are using the current contract as their implementation. Execution of a\\n * function through ERC1167 minimal proxies (clones) would not normally pass this test, but is not guaranteed to\\n * fail.\\n */\\n modifier onlyProxy() {\\n require(address(this) != __self, \\\"Function must be called through delegatecall\\\");\\n require(_getImplementation() == __self, \\\"Function must be called through active proxy\\\");\\n _;\\n }\\n\\n /**\\n * @dev Check that the execution is not being performed through a delegate call. This allows a function to be\\n * callable on the implementing contract but not through proxies.\\n */\\n modifier notDelegated() {\\n require(address(this) == __self, \\\"UUPSUpgradeable: must not be called through delegatecall\\\");\\n _;\\n }\\n\\n function __UUPSUpgradeable_init() internal onlyInitializing {\\n }\\n\\n function __UUPSUpgradeable_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the\\n * implementation. It is used to validate the implementation's compatibility when performing an upgrade.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\\n */\\n function proxiableUUID() external view virtual override notDelegated returns (bytes32) {\\n return _IMPLEMENTATION_SLOT;\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy to `newImplementation`.\\n *\\n * Calls {_authorizeUpgrade}.\\n *\\n * Emits an {Upgraded} event.\\n *\\n * @custom:oz-upgrades-unsafe-allow-reachable delegatecall\\n */\\n function upgradeTo(address newImplementation) public virtual onlyProxy {\\n _authorizeUpgrade(newImplementation);\\n _upgradeToAndCallUUPS(newImplementation, new bytes(0), false);\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call\\n * encoded in `data`.\\n *\\n * Calls {_authorizeUpgrade}.\\n *\\n * Emits an {Upgraded} event.\\n *\\n * @custom:oz-upgrades-unsafe-allow-reachable delegatecall\\n */\\n function upgradeToAndCall(address newImplementation, bytes memory data) public payable virtual onlyProxy {\\n _authorizeUpgrade(newImplementation);\\n _upgradeToAndCallUUPS(newImplementation, data, true);\\n }\\n\\n /**\\n * @dev Function that should revert when `msg.sender` is not authorized to upgrade the contract. Called by\\n * {upgradeTo} and {upgradeToAndCall}.\\n *\\n * Normally, this function will use an xref:access.adoc[access control] modifier such as {Ownable-onlyOwner}.\\n *\\n * ```solidity\\n * function _authorizeUpgrade(address) internal override onlyOwner {}\\n * ```\\n */\\n function _authorizeUpgrade(address newImplementation) internal virtual;\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0xefb41f5c1a00249b7a99f0782f8c557865605426a3fb6e5fe9ae334293ae4f33\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n function __Context_init() internal onlyInitializing {\\n }\\n\\n function __Context_init_unchained() internal onlyInitializing {\\n }\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n function _contextSuffixLength() internal view virtual returns (uint256) {\\n return 0;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x75097e35253e7fb282ee4d7f27a80eaacfa759923185bf17302a89cbc059c5ef\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/StorageSlot.sol)\\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```solidity\\n * contract ERC1967 {\\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n * function _getImplementation() internal view returns (address) {\\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n * }\\n *\\n * function _setImplementation(address newImplementation) internal {\\n * require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n * }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._\\n * _Available since v4.9 for `string`, `bytes`._\\n */\\nlibrary StorageSlotUpgradeable {\\n struct AddressSlot {\\n address value;\\n }\\n\\n struct BooleanSlot {\\n bool value;\\n }\\n\\n struct Bytes32Slot {\\n bytes32 value;\\n }\\n\\n struct Uint256Slot {\\n uint256 value;\\n }\\n\\n struct StringSlot {\\n string value;\\n }\\n\\n struct BytesSlot {\\n bytes value;\\n }\\n\\n /**\\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n */\\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n */\\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n */\\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n */\\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` with member `value` located at `slot`.\\n */\\n function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\\n */\\n function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` with member `value` located at `slot`.\\n */\\n function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\\n */\\n function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n}\\n\",\"keccak256\":\"0x07ac95acad040f1fb1f6120dd0aa5f702db69446e95f82613721879d30de0908\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165Upgradeable.sol\\\";\\nimport {Initializable} from \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165Upgradeable is Initializable, IERC165Upgradeable {\\n function __ERC165_init() internal onlyInitializing {\\n }\\n\\n function __ERC165_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165Upgradeable).interfaceId;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0xd90d7723512df65ae417adaf0801042940f0dabd60039ceeaffe34aa5b238da1\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165Upgradeable {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\"},\"src/dao/IDAO.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IDAO\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for DAOs within the Aragon App DAO framework.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IDAO {\\n /// @notice The action struct to be consumed by the DAO's `execute` function resulting in an external call.\\n /// @param to The address to call.\\n /// @param value The native token value to be sent with the call.\\n /// @param data The bytes-encoded function selector and calldata for the call.\\n struct Action {\\n address to;\\n uint256 value;\\n bytes data;\\n }\\n\\n /// @notice Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\\n /// @param _where The address of the contract.\\n /// @param _who The address of a EOA or contract to give the permissions.\\n /// @param _permissionId The permission identifier.\\n /// @param _data The optional data passed to the `PermissionCondition` registered.\\n /// @return Returns true if the address has permission, false if not.\\n function hasPermission(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes memory _data\\n ) external view returns (bool);\\n\\n /// @notice Updates the DAO metadata (e.g., an IPFS hash).\\n /// @param _metadata The IPFS hash of the new metadata object.\\n function setMetadata(bytes calldata _metadata) external;\\n\\n /// @notice Emitted when the DAO metadata is updated.\\n /// @param metadata The IPFS hash of the new metadata object.\\n event MetadataSet(bytes metadata);\\n\\n /// @notice Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted.\\n /// @param _callId The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce.\\n /// @param _actions The array of actions.\\n /// @param _allowFailureMap A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @return The array of results obtained from the executed actions in `bytes`.\\n /// @return The resulting failure map containing the actions have actually failed.\\n function execute(\\n bytes32 _callId,\\n Action[] memory _actions,\\n uint256 _allowFailureMap\\n ) external returns (bytes[] memory, uint256);\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param actor The address of the caller.\\n /// @param callId The ID of the call.\\n /// @param actions The array of actions executed.\\n /// @param allowFailureMap The allow failure map encoding which actions are allowed to fail.\\n /// @param failureMap The failure map encoding which actions have failed.\\n /// @param execResults The array with the results of the executed actions.\\n /// @dev The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce.\\n event Executed(\\n address indexed actor,\\n bytes32 callId,\\n Action[] actions,\\n uint256 allowFailureMap,\\n uint256 failureMap,\\n bytes[] execResults\\n );\\n\\n /// @notice Emitted when a standard callback is registered.\\n /// @param interfaceId The ID of the interface.\\n /// @param callbackSelector The selector of the callback function.\\n /// @param magicNumber The magic number to be registered for the callback function selector.\\n event StandardCallbackRegistered(\\n bytes4 interfaceId,\\n bytes4 callbackSelector,\\n bytes4 magicNumber\\n );\\n\\n /// @notice Deposits (native) tokens to the DAO contract with a reference string.\\n /// @param _token The address of the token or address(0) in case of the native token.\\n /// @param _amount The amount of tokens to deposit.\\n /// @param _reference The reference describing the deposit reason.\\n function deposit(address _token, uint256 _amount, string calldata _reference) external payable;\\n\\n /// @notice Emitted when a token deposit has been made to the DAO.\\n /// @param sender The address of the sender.\\n /// @param token The address of the deposited token.\\n /// @param amount The amount of tokens deposited.\\n /// @param _reference The reference describing the deposit reason.\\n event Deposited(\\n address indexed sender,\\n address indexed token,\\n uint256 amount,\\n string _reference\\n );\\n\\n /// @notice Emitted when a native token deposit has been made to the DAO.\\n /// @dev This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).\\n /// @param sender The address of the sender.\\n /// @param amount The amount of native tokens deposited.\\n event NativeTokenDeposited(address sender, uint256 amount);\\n\\n /// @notice Setter for the trusted forwarder verifying the meta transaction.\\n /// @param _trustedForwarder The trusted forwarder address.\\n function setTrustedForwarder(address _trustedForwarder) external;\\n\\n /// @notice Getter for the trusted forwarder verifying the meta transaction.\\n /// @return The trusted forwarder address.\\n function getTrustedForwarder() external view returns (address);\\n\\n /// @notice Emitted when a new TrustedForwarder is set on the DAO.\\n /// @param forwarder the new forwarder address.\\n event TrustedForwarderSet(address forwarder);\\n\\n /// @notice Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\\n /// @param _hash The hash of the data to be signed.\\n /// @param _signature The signature byte array associated with `_hash`.\\n /// @return Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not.\\n function isValidSignature(bytes32 _hash, bytes memory _signature) external returns (bytes4);\\n\\n /// @notice Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\\n /// @param _interfaceId The ID of the interface.\\n /// @param _callbackSelector The selector of the callback function.\\n /// @param _magicNumber The magic number to be registered for the function signature.\\n function registerStandardCallback(\\n bytes4 _interfaceId,\\n bytes4 _callbackSelector,\\n bytes4 _magicNumber\\n ) external;\\n\\n /// @notice Removed function being left here to not corrupt the IDAO interface ID. Any call will revert.\\n /// @dev Introduced in v1.0.0. Removed in v1.4.0.\\n function setSignatureValidator(address) external;\\n}\\n\",\"keccak256\":\"0xb7f615523c26de042edce98731c658f44a1edb2464387ac1b642c4c69f57128e\",\"license\":\"AGPL-3.0-or-later\"},\"src/mocks/plugin/PluginUUPSUpgradeableMock.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\n/* solhint-disable one-contract-per-file */\\npragma solidity ^0.8.8;\\n\\nimport {PluginUUPSUpgradeable} from \\\"../../plugin/PluginUUPSUpgradeable.sol\\\";\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice A mock upgradeable plugin to be deployed via the UUPS proxy pattern.\\n/// v1.1 (Release 1, Build 1)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableMockBuild1 is PluginUUPSUpgradeable {\\n uint256 public state1;\\n\\n function initialize(IDAO _dao) external initializer {\\n __PluginUUPSUpgradeable_init(_dao);\\n state1 = 1;\\n }\\n}\\n\\n/// @notice A mock upgradeable plugin to be deployed via the UUPS proxy pattern.\\n/// v1.1 (Release 1, Build 2)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableMockBuild2 is PluginUUPSUpgradeable {\\n uint256 public state1;\\n uint256 public state2;\\n\\n function initialize(IDAO _dao) external reinitializer(2) {\\n __PluginUUPSUpgradeable_init(_dao);\\n state1 = 1;\\n state2 = 2;\\n }\\n\\n function initializeFrom(uint16 _previousBuild) external reinitializer(2) {\\n if (_previousBuild < 2) {\\n state2 = 2;\\n }\\n }\\n}\\n\\n/// @notice A mock upgradeable plugin to be deployed via the UUPS proxy pattern.\\n/// v1.1 (Release 1, Build 3)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableMockBuild3 is PluginUUPSUpgradeable {\\n uint256 public state1;\\n uint256 public state2;\\n uint256 public state3;\\n\\n function initialize(IDAO _dao) external reinitializer(3) {\\n __PluginUUPSUpgradeable_init(_dao);\\n state1 = 1;\\n state2 = 2;\\n state3 = 3;\\n }\\n\\n function initializeFrom(uint16 _previousBuild) external reinitializer(3) {\\n if (_previousBuild < 2) {\\n state2 = 2;\\n }\\n if (_previousBuild < 3) {\\n state3 = 3;\\n }\\n }\\n}\\n\\n/// @notice A mock upgradeable plugin missing an initializer function.\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableMockBad is PluginUUPSUpgradeable {\\n uint256 public state1;\\n\\n function notAnInitializer(IDAO _dao) external {\\n __PluginUUPSUpgradeable_init(_dao);\\n state1 = 1;\\n }\\n}\\n\",\"keccak256\":\"0x2917df3b1da0de27f58cf531afeaa4e6c4285717247cbdd9ecc7880ae5cb9cb0\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/DaoAuthorizableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ContextUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\\\";\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\nimport {_auth} from \\\"./auth.sol\\\";\\n\\n/// @title DaoAuthorizableUpgradeable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract contract providing a meta-transaction compatible modifier for upgradeable or cloneable contracts to authorize function calls through an associated DAO.\\n/// @dev Make sure to call `__DaoAuthorizableUpgradeable_init` during initialization of the inheriting contract.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract DaoAuthorizableUpgradeable is ContextUpgradeable {\\n /// @notice The associated DAO managing the permissions of inheriting contracts.\\n IDAO private dao_;\\n\\n /// @notice Initializes the contract by setting the associated DAO.\\n /// @param _dao The associated DAO address.\\n // solhint-disable-next-line func-name-mixedcase\\n function __DaoAuthorizableUpgradeable_init(IDAO _dao) internal onlyInitializing {\\n dao_ = _dao;\\n }\\n\\n /// @notice Returns the DAO contract.\\n /// @return The DAO contract.\\n function dao() public view returns (IDAO) {\\n return dao_;\\n }\\n\\n /// @notice A modifier to make functions on inheriting contracts authorized. Permissions to call the function are checked through the associated DAO's permission manager.\\n /// @param _permissionId The permission identifier required to call the method this modifier is applied to.\\n modifier auth(bytes32 _permissionId) {\\n _auth(dao_, address(this), _msgSender(), _permissionId, _msgData());\\n _;\\n }\\n\\n /// @notice This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain (see [OpenZeppelin's guide about storage gaps](https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps)).\\n uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0x7fac6b01b037ba1cb9d6a22d3f43b0785037dcf496ffb672434d9bf7227d2585\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/auth.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice Thrown if a call is unauthorized in the associated DAO.\\n/// @param dao The associated DAO.\\n/// @param where The context in which the authorization reverted.\\n/// @param who The address (EOA or contract) missing the permission.\\n/// @param permissionId The permission identifier.\\nerror DaoUnauthorized(address dao, address where, address who, bytes32 permissionId);\\n\\n/// @notice A free function checking if a caller is granted permissions on a target contract via a permission identifier that redirects the approval to a `PermissionCondition` if this was specified in the setup.\\n/// @param _where The address of the target contract for which `who` receives permission.\\n/// @param _who The address (EOA or contract) owning the permission.\\n/// @param _permissionId The permission identifier.\\n/// @param _data The optional data passed to the `PermissionCondition` registered.\\n/// @custom:security-contact sirt@aragon.org\\nfunction _auth(\\n IDAO _dao,\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes calldata _data\\n) view {\\n if (!_dao.hasPermission(_where, _who, _permissionId, _data))\\n revert DaoUnauthorized({\\n dao: address(_dao),\\n where: _where,\\n who: _who,\\n permissionId: _permissionId\\n });\\n}\\n\",\"keccak256\":\"0x878764b4f87fe0651fb3798fb9cb87c952f8c6caf6ae79c7f09de84df6c00298\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/IPlugin.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IPlugin\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the traits of a plugin.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IPlugin {\\n enum PluginType {\\n UUPS,\\n Cloneable,\\n Constructable\\n }\\n\\n /// @notice Returns the plugin's type\\n function pluginType() external view returns (PluginType);\\n}\\n\",\"keccak256\":\"0xc57cd0d10b6380ab7f54c713a509e88fd8f4ad9288313a0e8e12b8887817ddfe\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/PluginUUPSUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {UUPSUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\\\";\\nimport {IERC1822ProxiableUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport {ERC165Upgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\\\";\\n\\nimport {IProtocolVersion} from \\\"../utils/versioning/IProtocolVersion.sol\\\";\\nimport {ProtocolVersion} from \\\"../utils/versioning/ProtocolVersion.sol\\\";\\nimport {DaoAuthorizableUpgradeable} from \\\"../permission/auth/DaoAuthorizableUpgradeable.sol\\\";\\nimport {IDAO} from \\\"../dao/IDAO.sol\\\";\\nimport {IPlugin} from \\\"./IPlugin.sol\\\";\\n\\n/// @title PluginUUPSUpgradeable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract, upgradeable contract to inherit from when creating a plugin being deployed via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract PluginUUPSUpgradeable is\\n IPlugin,\\n ERC165Upgradeable,\\n UUPSUpgradeable,\\n DaoAuthorizableUpgradeable,\\n ProtocolVersion\\n{\\n // NOTE: When adding new state variables to the contract, the size of `_gap` has to be adapted below as well.\\n address public target;\\n\\n /// @dev Emitted each time the Target is set.\\n event TargetSet(address indexed previousTarget, address indexed newTarget);\\n\\n /// @notice Disables the initializers on the implementation contract to prevent it from being left uninitialized.\\n /// @custom:oz-upgrades-unsafe-allow constructor\\n constructor() {\\n _disableInitializers();\\n }\\n\\n /// @inheritdoc IPlugin\\n function pluginType() public pure override returns (PluginType) {\\n return PluginType.UUPS;\\n }\\n\\n /// @notice The ID of the permission required to call the `_authorizeUpgrade` function.\\n bytes32 public constant UPGRADE_PLUGIN_PERMISSION_ID = keccak256(\\\"UPGRADE_PLUGIN_PERMISSION\\\");\\n\\n /// @notice Initializes the plugin by storing the associated DAO.\\n /// @param _dao The DAO contract.\\n // solhint-disable-next-line func-name-mixedcase\\n function __PluginUUPSUpgradeable_init(IDAO _dao) internal virtual onlyInitializing {\\n __DaoAuthorizableUpgradeable_init(_dao);\\n }\\n\\n /// @dev Sets the target to a new target (`newTarget`).\\n /// @notice Can only be called by the current owner. TODO\\n function setTarget(address _target) public {\\n address previousTarget = target;\\n target = _target;\\n emit TargetSet(previousTarget, _target);\\n }\\n\\n /// @notice Checks if an interface is supported by this or its parent contract.\\n /// @param _interfaceId The ID of the interface.\\n /// @return Returns `true` if the interface is supported.\\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\\n return\\n _interfaceId == type(IPlugin).interfaceId ||\\n _interfaceId == type(IProtocolVersion).interfaceId ||\\n _interfaceId == type(IERC1822ProxiableUpgradeable).interfaceId ||\\n super.supportsInterface(_interfaceId);\\n }\\n\\n /// @notice Returns the address of the implementation contract in the [proxy storage slot](https://eips.ethereum.org/EIPS/eip-1967) slot the [UUPS proxy](https://eips.ethereum.org/EIPS/eip-1822) is pointing to.\\n /// @return The address of the implementation contract.\\n function implementation() public view returns (address) {\\n return _getImplementation();\\n }\\n\\n /// @notice Forwards the actions to the currently set `target` for the execution.\\n /// @param _callId Identifier for this execution.\\n /// @param _actions actions that will be eventually called.\\n /// @param _allowFailureMap Bitmap-encoded number. TODO:\\n /// @return execResults address of the implementation contract.\\n /// @return failureMap address of the implementation contract.\\n function _execute(\\n bytes32 _callId,\\n IDAO.Action[] calldata _actions,\\n uint256 _allowFailureMap\\n ) internal virtual returns (bytes[] memory execResults, uint256 failureMap) {\\n (execResults, failureMap) = IDAO(target).execute(_callId, _actions, _allowFailureMap);\\n }\\n\\n /// @notice Forwards the actions to the `target` for the execution.\\n /// @param _target Forwards the actions to the specific target.\\n /// @param _callId Identifier for this execution.\\n /// @param _actions actions that will be eventually called.\\n /// @param _allowFailureMap Bitmap-encoded number. TODO:\\n /// @return execResults address of the implementation contract.\\n /// @return failureMap address of the implementation contract.\\n function _execute(\\n address _target,\\n bytes32 _callId,\\n IDAO.Action[] calldata _actions,\\n uint256 _allowFailureMap\\n ) internal virtual returns (bytes[] memory execResults, uint256 failureMap) {\\n (execResults, failureMap) = IDAO(_target).execute(_callId, _actions, _allowFailureMap);\\n }\\n\\n /// @notice Internal method authorizing the upgrade of the contract via the [upgradeability mechanism for UUPS proxies](https://docs.openzeppelin.com/contracts/4.x/api/proxy#UUPSUpgradeable) (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\\n /// @dev The caller must have the `UPGRADE_PLUGIN_PERMISSION_ID` permission.\\n function _authorizeUpgrade(\\n address\\n )\\n internal\\n virtual\\n override\\n auth(UPGRADE_PLUGIN_PERMISSION_ID)\\n // solhint-disable-next-line no-empty-blocks\\n {\\n\\n }\\n\\n /// @notice This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain (see [OpenZeppelin's guide about storage gaps](https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps)).\\n uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0xce1d0126b3ae8c8afc887fba9f49b1cc35f84f1c1d5bf4cadee330c7ae15014f\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/IProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IProtocolVersion\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the semantic Aragon OSx protocol version number.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IProtocolVersion {\\n /// @notice Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\\n /// @return _version Returns the semantic Aragon OSx protocol version number.\\n /// @dev This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\\n function protocolVersion() external view returns (uint8[3] memory _version);\\n}\\n\",\"keccak256\":\"0x00a4da654d21dc1bdadbdc8bd54bb86c378c56f85e461ccc31303628ea621361\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/ProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IProtocolVersion} from \\\"./IProtocolVersion.sol\\\";\\n\\n/// @title ProtocolVersion\\n/// @author Aragon X - 2023\\n/// @notice An abstract, stateless, non-upgradeable contract providing the current Aragon OSx protocol version number.\\n/// @dev Do not add any new variables to this contract that would shift down storage in the inheritance chain.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract ProtocolVersion is IProtocolVersion {\\n // IMPORTANT: Do not add any storage variable, see the above notice.\\n\\n /// @inheritdoc IProtocolVersion\\n function protocolVersion() public pure returns (uint8[3] memory) {\\n return [1, 4, 0];\\n }\\n}\\n\",\"keccak256\":\"0x3975c937be935f687c6b6b8f379071232681e98cf04b175d72781b819ea52bdb\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[{"astId":372,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild3","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":375,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild3","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":1280,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild3","label":"__gap","offset":0,"slot":"1","type":"t_array(t_uint256)50_storage"},{"astId":354,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild3","label":"__gap","offset":0,"slot":"51","type":"t_array(t_uint256)50_storage"},{"astId":670,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild3","label":"__gap","offset":0,"slot":"101","type":"t_array(t_uint256)50_storage"},{"astId":1051,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild3","label":"__gap","offset":0,"slot":"151","type":"t_array(t_uint256)50_storage"},{"astId":3887,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild3","label":"dao_","offset":0,"slot":"201","type":"t_contract(IDAO)2538"},{"astId":3936,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild3","label":"__gap","offset":0,"slot":"202","type":"t_array(t_uint256)49_storage"},{"astId":4382,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild3","label":"target","offset":0,"slot":"251","type":"t_address"},{"astId":4575,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild3","label":"__gap","offset":0,"slot":"252","type":"t_array(t_uint256)49_storage"},{"astId":3190,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild3","label":"state1","offset":0,"slot":"301","type":"t_uint256"},{"astId":3192,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild3","label":"state2","offset":0,"slot":"302","type":"t_uint256"},{"astId":3194,"contract":"src/mocks/plugin/PluginUUPSUpgradeableMock.sol:PluginUUPSUpgradeableMockBuild3","label":"state3","offset":0,"slot":"303","type":"t_uint256"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_array(t_uint256)49_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[49]","numberOfBytes":"1568"},"t_array(t_uint256)50_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[50]","numberOfBytes":"1600"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_contract(IDAO)2538":{"encoding":"inplace","label":"contract IDAO","numberOfBytes":"20"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"errors":{"DaoUnauthorized(address,address,address,bytes32)":[{"notice":"Thrown if a call is unauthorized in the associated DAO."}]},"kind":"user","methods":{"UPGRADE_PLUGIN_PERMISSION_ID()":{"notice":"The ID of the permission required to call the `_authorizeUpgrade` function."},"dao()":{"notice":"Returns the DAO contract."},"implementation()":{"notice":"Returns the address of the implementation contract in the [proxy storage slot](https://eips.ethereum.org/EIPS/eip-1967) slot the [UUPS proxy](https://eips.ethereum.org/EIPS/eip-1822) is pointing to."},"pluginType()":{"notice":"Returns the plugin's type"},"protocolVersion()":{"notice":"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with."},"setTarget(address)":{"notice":"Can only be called by the current owner. TODO"},"supportsInterface(bytes4)":{"notice":"Checks if an interface is supported by this or its parent contract."}},"notice":"A mock upgradeable plugin to be deployed via the UUPS proxy pattern. v1.1 (Release 1, Build 3)","version":1}}},"src/mocks/plugin/PluginUUPSUpgradeableSetupMock.sol":{"PluginUUPSUpgradeableSetupMockBuild1":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"ConflictingValues","type":"error"},{"inputs":[{"internalType":"uint16","name":"fromBuild","type":"uint16"},{"internalType":"uint16","name":"thisBuild","type":"uint16"}],"name":"InvalidUpdatePath","type":"error"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_dao","type":"address"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"prepareInstallation","outputs":[{"internalType":"address","name":"plugin","type":"address"},{"components":[{"internalType":"address[]","name":"helpers","type":"address[]"},{"components":[{"internalType":"enum PermissionLib.Operation","name":"operation","type":"uint8"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"condition","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"internalType":"struct PermissionLib.MultiTargetPermission[]","name":"permissions","type":"tuple[]"}],"internalType":"struct IPluginSetup.PreparedSetupData","name":"preparedSetupData","type":"tuple"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_dao","type":"address"},{"components":[{"internalType":"address","name":"plugin","type":"address"},{"internalType":"address[]","name":"currentHelpers","type":"address[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct IPluginSetup.SetupPayload","name":"_payload","type":"tuple"}],"name":"prepareUninstallation","outputs":[{"components":[{"internalType":"enum PermissionLib.Operation","name":"operation","type":"uint8"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"condition","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"internalType":"struct PermissionLib.MultiTargetPermission[]","name":"permissions","type":"tuple[]"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_dao","type":"address"},{"internalType":"uint16","name":"_fromBuild","type":"uint16"},{"components":[{"internalType":"address","name":"plugin","type":"address"},{"internalType":"address[]","name":"currentHelpers","type":"address[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct IPluginSetup.SetupPayload","name":"_payload","type":"tuple"}],"name":"prepareUpdate","outputs":[{"internalType":"bytes","name":"","type":"bytes"},{"components":[{"internalType":"address[]","name":"helpers","type":"address[]"},{"components":[{"internalType":"enum PermissionLib.Operation","name":"operation","type":"uint8"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"condition","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"internalType":"struct PermissionLib.MultiTargetPermission[]","name":"permissions","type":"tuple[]"}],"internalType":"struct IPluginSetup.PreparedSetupData","name":"","type":"tuple"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"protocolVersion","outputs":[{"internalType":"uint8[3]","name":"","type":"uint8[3]"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"DO NOT USE IN PRODUCTION!","errors":{"InvalidUpdatePath(uint16,uint16)":[{"params":{"fromBuild":"The build number to update from.","thisBuild":"The build number of this setup to update to."}}]},"kind":"dev","methods":{"implementation()":{"details":"The implementation can be instantiated via the `new` keyword, cloned via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)), or proxied via the UUPS proxy pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).","returns":{"_0":"The address of the plugin implementation contract."}},"prepareInstallation(address,bytes)":{"params":{"_dao":"The address of the installing DAO.","_data":"The bytes-encoded data containing the input parameters for the installation as specified in the plugin's build metadata JSON file."},"returns":{"plugin":"The address of the `Plugin` contract being prepared for installation.","preparedSetupData":"The deployed plugin's relevant data which consists of helpers and permissions."}},"prepareUninstallation(address,(address,address[],bytes))":{"params":{"_dao":"The address of the uninstalling DAO.","_payload":"The relevant data necessary for the `prepareUninstallation`. See above."},"returns":{"permissions":"The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the uninstalling DAO."}},"prepareUpdate(address,uint16,(address,address[],bytes))":{"details":"The default implementation for the initial build 1 that reverts because no earlier build exists.","params":{"_dao":"The address of the updating DAO.","_fromBuild":"The build number of the plugin to update from.","_payload":"The relevant data necessary for the `prepareUpdate`. See above."},"returns":{"_0":"The initialization data to be passed to upgradeable contracts when the update is applied in the `PluginSetupProcessor`.","_1":"The deployed plugin's relevant data which consists of helpers and permissions."}},"protocolVersion()":{"details":"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.","returns":{"_0":"Returns the semantic Aragon OSx protocol version number."}},"supportsInterface(bytes4)":{"params":{"_interfaceId":"The ID of the interface."},"returns":{"_0":"Returns `true` if the interface is supported."}}},"version":1},"evm":{"bytecode":{"functionDebugData":{"@_3310":{"entryPoint":null,"id":3310,"parameterSlots":0,"returnSlots":0},"@_4995":{"entryPoint":null,"id":4995,"parameterSlots":1,"returnSlots":0}},"generatedSources":[],"linkReferences":{},"object":"60a060405234801561001057600080fd5b5060405161001d9061004b565b604051809103906000f080158015610039573d6000803e3d6000fd5b506001600160a01b0316608052610058565b6112c88061126083390190565b6080516111e76100796000396000818160d201526102d301526111e76000f3fe60806040523480156200001157600080fd5b50600436106200007b5760003560e01c80639cb0a12411620000565780639cb0a12414620000fd578063a8a9c29e1462000123578063f10832f1146200014a57600080fd5b806301ffc9a714620000805780632ae9c60014620000ac5780635c60da1b14620000c5575b600080fd5b6200009762000091366004620005f8565b62000171565b60405190151581526020015b60405180910390f35b620000b6620001c4565b604051620000a3919062000624565b6040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152602001620000a3565b620001146200010e3660046200068a565b620001f0565b604051620000a391906200075b565b6200013a62000134366004620007a8565b62000208565b604051620000a3929190620008f7565b620001616200015b3660046200093f565b6200024f565b604051620000a392919062000a0d565b60006001600160e01b0319821663099718b560e41b1480620001a257506001600160e01b03198216621574e360e91b145b80620001be57506301ffc9a760e01b6001600160e01b03198316145b92915050565b620001ce620005cc565b5060408051606081018252600181526004602082015260009181019190915290565b606062000201600060018062000333565b9392505050565b606062000228604051806040016040528060608152602001606081525090565b60405163098990c560e11b8152600060048201526001602482015260440160405180910390fd5b60006200026f604051806040016040528060608152602001606081525090565b6040516001600160a01b038516602482015260009060440160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663189acdbd60e31b17905290506200030581620002f57f000000000000000000000000000000000000000000000000000000000000000090565b6001600160a01b031690620004cc565b925062000313600162000508565b825262000324600060018162000333565b60208301525090939092509050565b6060826001600160a01b0316846001600160a01b031611156200036957604051633a4013cd60e21b815260040160405180910390fd5b62000375848462000a4f565b6001600160a01b031667ffffffffffffffff81111562000399576200039962000929565b604051908082528060200260200182016040528015620003f457816020015b6040805160a081018252600080825260208083018290529282018190526060820181905260808201528252600019909201910181620003b85790505b509050835b836001600160a01b0316816001600160a01b03161015620004c4576040518060a00160405280846002811115620004345762000434620006de565b81526001600160a01b038316602082018190526040820152600060608201527fa280eec51ab8e1bc4b6b0c1b7f1bde785761b787a49db404e3e9338ed9b016ef6080909101528262000487878462000a4f565b6001600160a01b031681518110620004a357620004a362000a79565b60200260200101819052508080620004bb9062000a8f565b915050620003f9565b509392505050565b60008282604051620004de90620005ea565b620004eb92919062000ab8565b604051809103906000f080158015620004c4573d6000803e3d6000fd5b6060816001600160a01b031667ffffffffffffffff8111156200052f576200052f62000929565b60405190808252806020026020018201604052801562000559578160200160208202803683370190505b50905060005b826001600160a01b0316816001600160a01b03161015620005c6578082826001600160a01b03168151811062000599576200059962000a79565b6001600160a01b039092166020928302919091019091015280620005bd8162000a8f565b9150506200055f565b50919050565b60405180606001604052806003906020820280368337509192915050565b6106fe8062000add83390190565b6000602082840312156200060b57600080fd5b81356001600160e01b0319811681146200020157600080fd5b60608101818360005b60038110156200065157815160ff168352602092830192909101906001016200062d565b50505092915050565b80356001600160a01b03811681146200067257600080fd5b919050565b600060608284031215620005c657600080fd5b600080604083850312156200069e57600080fd5b620006a9836200065a565b9150602083013567ffffffffffffffff811115620006c657600080fd5b620006d48582860162000677565b9150509250929050565b634e487b7160e01b600052602160045260246000fd5b60008151600381106200071757634e487b7160e01b600052602160045260246000fd5b8352506020818101516001600160a01b0390811691840191909152604080830151821690840152606080830151909116908301526080908101519082015260a00190565b6020808252825182820181905260009190848201906040850190845b818110156200079c576200078d838551620006f4565b93850193925060010162000777565b50909695505050505050565b600080600060608486031215620007be57600080fd5b620007c9846200065a565b9250602084013561ffff81168114620007e157600080fd5b9150604084013567ffffffffffffffff811115620007fe57600080fd5b6200080c8682870162000677565b9150509250925092565b6000815180845260005b818110156200083e5760208185018101518683018201520162000820565b506000602082860101526020601f19601f83011685010191505092915050565b805160408084528151908401819052600091602091908201906060860190845b81811015620008a55783516001600160a01b0316835292840192918401916001016200087e565b50508483015186820387850152805180835290840192506000918401905b80831015620008ec57620008d9828551620006f4565b91508484019350600183019250620008c3565b509695505050505050565b6040815260006200090c604083018562000816565b82810360208401526200092081856200085e565b95945050505050565b634e487b7160e01b600052604160045260246000fd5b600080604083850312156200095357600080fd5b6200095e836200065a565b9150602083013567ffffffffffffffff808211156200097c57600080fd5b818501915085601f8301126200099157600080fd5b813581811115620009a657620009a662000929565b604051601f8201601f19908116603f01168101908382118183101715620009d157620009d162000929565b81604052828152886020848701011115620009eb57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6001600160a01b038316815260406020820152600062000a3160408301846200085e565b949350505050565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0382811682821603908082111562000a725762000a7262000a39565b5092915050565b634e487b7160e01b600052603260045260246000fd5b60006001600160a01b0380831681810362000aae5762000aae62000a39565b6001019392505050565b6001600160a01b038316815260406020820152600062000a3160408301846200081656fe60806040526040516106fe3803806106fe83398101604081905261002291610319565b61002e82826000610035565b5050610436565b61003e8361006b565b60008251118061004b5750805b156100665761006483836100ab60201b6100291760201c565b505b505050565b610074816100d7565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606100d083836040518060600160405280602781526020016106d7602791396101a9565b9392505050565b6100ea8161022260201b6100551760201c565b6101515760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b806101887f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61023160201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6060600080856001600160a01b0316856040516101c691906103e7565b600060405180830381855af49150503d8060008114610201576040519150601f19603f3d011682016040523d82523d6000602084013e610206565b606091505b50909250905061021886838387610234565b9695505050505050565b6001600160a01b03163b151590565b90565b606083156102a357825160000361029c576001600160a01b0385163b61029c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610148565b50816102ad565b6102ad83836102b5565b949350505050565b8151156102c55781518083602001fd5b8060405162461bcd60e51b81526004016101489190610403565b634e487b7160e01b600052604160045260246000fd5b60005b838110156103105781810151838201526020016102f8565b50506000910152565b6000806040838503121561032c57600080fd5b82516001600160a01b038116811461034357600080fd5b60208401519092506001600160401b038082111561036057600080fd5b818501915085601f83011261037457600080fd5b815181811115610386576103866102df565b604051601f8201601f19908116603f011681019083821181831017156103ae576103ae6102df565b816040528281528860208487010111156103c757600080fd5b6103d88360208301602088016102f5565b80955050505050509250929050565b600082516103f98184602087016102f5565b9190910192915050565b60208152600082518060208401526104228160408501602087016102f5565b601f01601f19169190910160400192915050565b610292806104456000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b61009f565b565b606061004e838360405180606001604052806027815260200161025f602791396100c3565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e8080156100be573d6000f35b3d6000fd5b6060600080856001600160a01b0316856040516100e0919061020f565b600060405180830381855af49150503d806000811461011b576040519150601f19603f3d011682016040523d82523d6000602084013e610120565b606091505b50915091506101318683838761013b565b9695505050505050565b606083156101af5782516000036101a8576001600160a01b0385163b6101a85760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b50816101b9565b6101b983836101c1565b949350505050565b8151156101d15781518083602001fd5b8060405162461bcd60e51b815260040161019f919061022b565b60005b838110156102065781810151838201526020016101ee565b50506000910152565b600082516102218184602087016101eb565b9190910192915050565b602081526000825180602084015261024a8160408501602087016101eb565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a60a06040523060805234801561001457600080fd5b5061001d610022565b6100e1565b600054610100900460ff161561008e5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116146100df576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6080516111b061011860003960008181610334015281816103be015281816104b401528181610539015261062301526111b06000f3fe6080604052600436106100d25760003560e01c806352d1902d1161007f578063776d1a0111610059578063776d1a0114610200578063c4d66de814610220578063c9c4bfca14610240578063d4b839921461027457600080fd5b806352d1902d146101b15780635c60da1b146101d45780636accab8c146101e957600080fd5b80634162169f116100b05780634162169f1461015057806341de6830146101825780634f1ef2861461019e57600080fd5b806301ffc9a7146100d75780632ae9c6001461010c5780633659cfe61461012e575b600080fd5b3480156100e357600080fd5b506100f76100f2366004610ee8565b610294565b60405190151581526020015b60405180910390f35b34801561011857600080fd5b50610121610300565b6040516101039190610f12565b34801561013a57600080fd5b5061014e610149366004610f5b565b61032a565b005b34801561015c57600080fd5b5060c9546001600160a01b03165b6040516001600160a01b039091168152602001610103565b34801561018e57600080fd5b5060006040516101039190610f78565b61014e6101ac366004610fb6565b6104aa565b3480156101bd57600080fd5b506101c6610616565b604051908152602001610103565b3480156101e057600080fd5b5061016a6106db565b3480156101f557600080fd5b506101c661012d5481565b34801561020c57600080fd5b5061014e61021b366004610f5b565b610713565b34801561022c57600080fd5b5061014e61023b366004610f5b565b610772565b34801561024c57600080fd5b506101c67f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f581565b34801561028057600080fd5b5060fb5461016a906001600160a01b031681565b60006001600160e01b0319821663041de68360e41b14806102c457506001600160e01b03198216621574e360e91b145b806102df57506001600160e01b031982166352d1902d60e01b145b806102fa57506301ffc9a760e01b6001600160e01b03198316145b92915050565b610308610eca565b5060408051606081018252600181526004602082015260009181019190915290565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036103bc5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b60648201526084015b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166104177f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b0316146104825760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b60648201526084016103b3565b61048b81610899565b604080516000808252602082019092526104a7918391906108d6565b50565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036105375760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b60648201526084016103b3565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166105927f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b0316146105fd5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b60648201526084016103b3565b61060682610899565b610612828260016108d6565b5050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106b65760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016103b3565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b600061070e7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b60fb80546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d690600090a35050565b600054610100900460ff16158080156107925750600054600160ff909116105b806107ac5750303b1580156107ac575060005460ff166001145b61081e5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016103b3565b6000805460ff191660011790558015610841576000805461ff0019166101001790555b61084a82610a7b565b600161012d558015610612576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b60c9547f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f590610612906001600160a01b0316303384600036610aef565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561090e5761090983610bab565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610968575060408051601f3d908101601f191682019092526109659181019061107a565b60015b6109da5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201527f6f6e206973206e6f74205555505300000000000000000000000000000000000060648201526084016103b3565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114610a6f5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f7860448201527f6961626c6555554944000000000000000000000000000000000000000000000060648201526084016103b3565b50610909838383610c76565b600054610100900460ff16610ae65760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103b3565b6104a781610ca1565b604051637ef7c88360e11b81526001600160a01b0387169063fdef910690610b239088908890889088908890600401611093565b602060405180830381865afa158015610b40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6491906110e7565b610ba357604051630cb6f8ed60e21b81526001600160a01b038088166004830152808716602483015285166044820152606481018490526084016103b3565b505050505050565b6001600160a01b0381163b610c285760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e74726163740000000000000000000000000000000000000060648201526084016103b3565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610c7f83610d3b565b600082511180610c8c5750805b1561090957610c9b8383610d7b565b50505050565b600054610100900460ff16610d0c5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103b3565b60c9805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610d4481610bab565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060610da0838360405180606001604052806027815260200161117d60279139610da7565b9392505050565b6060600080856001600160a01b031685604051610dc4919061112d565b600060405180830381855af49150503d8060008114610dff576040519150601f19603f3d011682016040523d82523d6000602084013e610e04565b606091505b5091509150610e1586838387610e1f565b9695505050505050565b60608315610e8e578251600003610e87576001600160a01b0385163b610e875760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016103b3565b5081610e98565b610e988383610ea0565b949350505050565b815115610eb05781518083602001fd5b8060405162461bcd60e51b81526004016103b39190611149565b60405180606001604052806003906020820280368337509192915050565b600060208284031215610efa57600080fd5b81356001600160e01b031981168114610da057600080fd5b60608101818360005b6003811015610f3d57815160ff16835260209283019290910190600101610f1b565b50505092915050565b6001600160a01b03811681146104a757600080fd5b600060208284031215610f6d57600080fd5b8135610da081610f46565b6020810160038310610f9a57634e487b7160e01b600052602160045260246000fd5b91905290565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215610fc957600080fd5b8235610fd481610f46565b9150602083013567ffffffffffffffff80821115610ff157600080fd5b818501915085601f83011261100557600080fd5b81358181111561101757611017610fa0565b604051601f8201601f19908116603f0116810190838211818310171561103f5761103f610fa0565b8160405282815288602084870101111561105857600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60006020828403121561108c57600080fd5b5051919050565b60006001600160a01b03808816835280871660208401525084604083015260806060830152826080830152828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b6000602082840312156110f957600080fd5b81518015158114610da057600080fd5b60005b8381101561112457818101518382015260200161110c565b50506000910152565b6000825161113f818460208701611109565b9190910192915050565b6020815260008251806020840152611168816040850160208701611109565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a","opcodes":"PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x1D SWAP1 PUSH2 0x4B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH2 0x39 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x80 MSTORE PUSH2 0x58 JUMP JUMPDEST PUSH2 0x12C8 DUP1 PUSH2 0x1260 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH2 0x11E7 PUSH2 0x79 PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH1 0xD2 ADD MSTORE PUSH2 0x2D3 ADD MSTORE PUSH2 0x11E7 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH3 0x7B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9CB0A124 GT PUSH3 0x56 JUMPI DUP1 PUSH4 0x9CB0A124 EQ PUSH3 0xFD JUMPI DUP1 PUSH4 0xA8A9C29E EQ PUSH3 0x123 JUMPI DUP1 PUSH4 0xF10832F1 EQ PUSH3 0x14A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH3 0x80 JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH3 0xAC JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH3 0xC5 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x97 PUSH3 0x91 CALLDATASIZE PUSH1 0x4 PUSH3 0x5F8 JUMP JUMPDEST PUSH3 0x171 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0xB6 PUSH3 0x1C4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0xA3 SWAP2 SWAP1 PUSH3 0x624 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH3 0xA3 JUMP JUMPDEST PUSH3 0x114 PUSH3 0x10E CALLDATASIZE PUSH1 0x4 PUSH3 0x68A JUMP JUMPDEST PUSH3 0x1F0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0xA3 SWAP2 SWAP1 PUSH3 0x75B JUMP JUMPDEST PUSH3 0x13A PUSH3 0x134 CALLDATASIZE PUSH1 0x4 PUSH3 0x7A8 JUMP JUMPDEST PUSH3 0x208 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0xA3 SWAP3 SWAP2 SWAP1 PUSH3 0x8F7 JUMP JUMPDEST PUSH3 0x161 PUSH3 0x15B CALLDATASIZE PUSH1 0x4 PUSH3 0x93F JUMP JUMPDEST PUSH3 0x24F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0xA3 SWAP3 SWAP2 SWAP1 PUSH3 0xA0D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x99718B5 PUSH1 0xE4 SHL EQ DUP1 PUSH3 0x1A2 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH3 0x1BE JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH3 0x1CE PUSH3 0x5CC JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH3 0x201 PUSH1 0x0 PUSH1 0x1 DUP1 PUSH3 0x333 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH3 0x228 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x98990C5 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH3 0x26F PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 PUSH1 0x44 ADD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x189ACDBD PUSH1 0xE3 SHL OR SWAP1 MSTORE SWAP1 POP PUSH3 0x305 DUP2 PUSH3 0x2F5 PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH3 0x4CC JUMP JUMPDEST SWAP3 POP PUSH3 0x313 PUSH1 0x1 PUSH3 0x508 JUMP JUMPDEST DUP3 MSTORE PUSH3 0x324 PUSH1 0x0 PUSH1 0x1 DUP2 PUSH3 0x333 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP SWAP1 SWAP4 SWAP1 SWAP3 POP SWAP1 POP JUMP JUMPDEST PUSH1 0x60 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH3 0x369 JUMPI PUSH1 0x40 MLOAD PUSH4 0x3A4013CD PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0x375 DUP5 DUP5 PUSH3 0xA4F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x399 JUMPI PUSH3 0x399 PUSH3 0x929 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH3 0x3F4 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD DUP3 SWAP1 MSTORE SWAP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 DUP3 ADD MSTORE DUP3 MSTORE PUSH1 0x0 NOT SWAP1 SWAP3 ADD SWAP2 ADD DUP2 PUSH3 0x3B8 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP DUP4 JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT ISZERO PUSH3 0x4C4 JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 DUP5 PUSH1 0x2 DUP2 GT ISZERO PUSH3 0x434 JUMPI PUSH3 0x434 PUSH3 0x6DE JUMP JUMPDEST DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x60 DUP3 ADD MSTORE PUSH32 0xA280EEC51AB8E1BC4B6B0C1B7F1BDE785761B787A49DB404E3E9338ED9B016EF PUSH1 0x80 SWAP1 SWAP2 ADD MSTORE DUP3 PUSH3 0x487 DUP8 DUP5 PUSH3 0xA4F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MLOAD DUP2 LT PUSH3 0x4A3 JUMPI PUSH3 0x4A3 PUSH3 0xA79 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP DUP1 DUP1 PUSH3 0x4BB SWAP1 PUSH3 0xA8F JUMP JUMPDEST SWAP2 POP POP PUSH3 0x3F9 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH3 0x4DE SWAP1 PUSH3 0x5EA JUMP JUMPDEST PUSH3 0x4EB SWAP3 SWAP2 SWAP1 PUSH3 0xAB8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH3 0x4C4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x60 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x52F JUMPI PUSH3 0x52F PUSH3 0x929 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH3 0x559 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT ISZERO PUSH3 0x5C6 JUMPI DUP1 DUP3 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MLOAD DUP2 LT PUSH3 0x599 JUMPI PUSH3 0x599 PUSH3 0xA79 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE DUP1 PUSH3 0x5BD DUP2 PUSH3 0xA8F JUMP JUMPDEST SWAP2 POP POP PUSH3 0x55F JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x6FE DUP1 PUSH3 0xADD DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x60B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH3 0x201 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH3 0x651 JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH3 0x62D JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x672 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x5C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x69E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x6A9 DUP4 PUSH3 0x65A JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x6C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x6D4 DUP6 DUP3 DUP7 ADD PUSH3 0x677 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP2 MLOAD PUSH1 0x3 DUP2 LT PUSH3 0x717 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP4 MSTORE POP PUSH1 0x20 DUP2 DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP1 DUP4 ADD MLOAD DUP3 AND SWAP1 DUP5 ADD MSTORE PUSH1 0x60 DUP1 DUP4 ADD MLOAD SWAP1 SWAP2 AND SWAP1 DUP4 ADD MSTORE PUSH1 0x80 SWAP1 DUP2 ADD MLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x79C JUMPI PUSH3 0x78D DUP4 DUP6 MLOAD PUSH3 0x6F4 JUMP JUMPDEST SWAP4 DUP6 ADD SWAP4 SWAP3 POP PUSH1 0x1 ADD PUSH3 0x777 JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH3 0x7BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x7C9 DUP5 PUSH3 0x65A JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH3 0x7E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x7FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x80C DUP7 DUP3 DUP8 ADD PUSH3 0x677 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x83E JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD DUP3 ADD MSTORE ADD PUSH3 0x820 JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x20 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x20 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x40 DUP1 DUP5 MSTORE DUP2 MLOAD SWAP1 DUP5 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x20 SWAP2 SWAP1 DUP3 ADD SWAP1 PUSH1 0x60 DUP7 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x8A5 JUMPI DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH3 0x87E JUMP JUMPDEST POP POP DUP5 DUP4 ADD MLOAD DUP7 DUP3 SUB DUP8 DUP6 ADD MSTORE DUP1 MLOAD DUP1 DUP4 MSTORE SWAP1 DUP5 ADD SWAP3 POP PUSH1 0x0 SWAP2 DUP5 ADD SWAP1 JUMPDEST DUP1 DUP4 LT ISZERO PUSH3 0x8EC JUMPI PUSH3 0x8D9 DUP3 DUP6 MLOAD PUSH3 0x6F4 JUMP JUMPDEST SWAP2 POP DUP5 DUP5 ADD SWAP4 POP PUSH1 0x1 DUP4 ADD SWAP3 POP PUSH3 0x8C3 JUMP JUMPDEST POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 PUSH3 0x90C PUSH1 0x40 DUP4 ADD DUP6 PUSH3 0x816 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 ADD MSTORE PUSH3 0x920 DUP2 DUP6 PUSH3 0x85E JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x953 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x95E DUP4 PUSH3 0x65A JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH3 0x97C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x991 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH3 0x9A6 JUMPI PUSH3 0x9A6 PUSH3 0x929 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH3 0x9D1 JUMPI PUSH3 0x9D1 PUSH3 0x929 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH3 0x9EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH3 0xA31 PUSH1 0x40 DUP4 ADD DUP5 PUSH3 0x85E JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND DUP3 DUP3 AND SUB SWAP1 DUP1 DUP3 GT ISZERO PUSH3 0xA72 JUMPI PUSH3 0xA72 PUSH3 0xA39 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND DUP2 DUP2 SUB PUSH3 0xAAE JUMPI PUSH3 0xAAE PUSH3 0xA39 JUMP JUMPDEST PUSH1 0x1 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH3 0xA31 PUSH1 0x40 DUP4 ADD DUP5 PUSH3 0x816 JUMP INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH2 0x6FE CODESIZE SUB DUP1 PUSH2 0x6FE DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x22 SWAP2 PUSH2 0x319 JUMP JUMPDEST PUSH2 0x2E DUP3 DUP3 PUSH1 0x0 PUSH2 0x35 JUMP JUMPDEST POP POP PUSH2 0x436 JUMP JUMPDEST PUSH2 0x3E DUP4 PUSH2 0x6B JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD GT DUP1 PUSH2 0x4B JUMPI POP DUP1 JUMPDEST ISZERO PUSH2 0x66 JUMPI PUSH2 0x64 DUP4 DUP4 PUSH2 0xAB PUSH1 0x20 SHL PUSH2 0x29 OR PUSH1 0x20 SHR JUMP JUMPDEST POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x74 DUP2 PUSH2 0xD7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xD0 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x6D7 PUSH1 0x27 SWAP2 CODECOPY PUSH2 0x1A9 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xEA DUP2 PUSH2 0x222 PUSH1 0x20 SHL PUSH2 0x55 OR PUSH1 0x20 SHR JUMP JUMPDEST PUSH2 0x151 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313936373A206E657720696D706C656D656E746174696F6E206973206E PUSH1 0x44 DUP3 ADD MSTORE PUSH13 0x1BDD08184818DBDB9D1C9858DD PUSH1 0x9A SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH2 0x188 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC PUSH1 0x0 SHL PUSH2 0x231 PUSH1 0x20 SHL PUSH2 0x64 OR PUSH1 0x20 SHR JUMP JUMPDEST DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0x1C6 SWAP2 SWAP1 PUSH2 0x3E7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x201 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x206 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x218 DUP7 DUP4 DUP4 DUP8 PUSH2 0x234 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x2A3 JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0x29C JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0x29C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x148 JUMP JUMPDEST POP DUP2 PUSH2 0x2AD JUMP JUMPDEST PUSH2 0x2AD DUP4 DUP4 PUSH2 0x2B5 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x2C5 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x148 SWAP2 SWAP1 PUSH2 0x403 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x310 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2F8 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x32C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x343 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x360 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x374 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x386 JUMPI PUSH2 0x386 PUSH2 0x2DF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x3AE JUMPI PUSH2 0x3AE PUSH2 0x2DF JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x3C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3D8 DUP4 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x2F5 JUMP JUMPDEST DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x3F9 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x2F5 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x422 DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x2F5 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x292 DUP1 PUSH2 0x445 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLDATASIZE PUSH2 0x13 JUMPI PUSH2 0x11 PUSH2 0x17 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x11 JUMPDEST PUSH2 0x27 PUSH2 0x22 PUSH2 0x67 JUMP JUMPDEST PUSH2 0x9F JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x60 PUSH2 0x4E DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x25F PUSH1 0x27 SWAP2 CODECOPY PUSH2 0xC3 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9A PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 DUP1 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE PUSH1 0x0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH2 0xBE JUMPI RETURNDATASIZE PUSH1 0x0 RETURN JUMPDEST RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0xE0 SWAP2 SWAP1 PUSH2 0x20F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x11B JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x120 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x131 DUP7 DUP4 DUP4 DUP8 PUSH2 0x13B JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x1AF JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0x1A8 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0x1A8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP DUP2 PUSH2 0x1B9 JUMP JUMPDEST PUSH2 0x1B9 DUP4 DUP4 PUSH2 0x1C1 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x1D1 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x19F SWAP2 SWAP1 PUSH2 0x22B JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x206 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1EE JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x221 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x1EB JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x24A DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x1EB JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A164 PUSH20 0x6F6C6343000811000A416464726573733A206C6F PUSH24 0x2D6C6576656C2064656C65676174652063616C6C20666169 PUSH13 0x6564A164736F6C634300081100 EXP PUSH1 0xA0 PUSH1 0x40 MSTORE ADDRESS PUSH1 0x80 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x14 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1D PUSH2 0x22 JUMP JUMPDEST PUSH2 0xE1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x8E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x27 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320696E697469 PUSH1 0x44 DUP3 ADD MSTORE PUSH7 0x616C697A696E67 PUSH1 0xC8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xFF SWAP1 DUP2 AND EQ PUSH2 0xDF JUMPI PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH2 0x11B0 PUSH2 0x118 PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH2 0x334 ADD MSTORE DUP2 DUP2 PUSH2 0x3BE ADD MSTORE DUP2 DUP2 PUSH2 0x4B4 ADD MSTORE DUP2 DUP2 PUSH2 0x539 ADD MSTORE PUSH2 0x623 ADD MSTORE PUSH2 0x11B0 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xD2 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x52D1902D GT PUSH2 0x7F JUMPI DUP1 PUSH4 0x776D1A01 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0x776D1A01 EQ PUSH2 0x200 JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0x220 JUMPI DUP1 PUSH4 0xC9C4BFCA EQ PUSH2 0x240 JUMPI DUP1 PUSH4 0xD4B83992 EQ PUSH2 0x274 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x52D1902D EQ PUSH2 0x1B1 JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0x1D4 JUMPI DUP1 PUSH4 0x6ACCAB8C EQ PUSH2 0x1E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x4162169F GT PUSH2 0xB0 JUMPI DUP1 PUSH4 0x4162169F EQ PUSH2 0x150 JUMPI DUP1 PUSH4 0x41DE6830 EQ PUSH2 0x182 JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x19E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xD7 JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0x10C JUMPI DUP1 PUSH4 0x3659CFE6 EQ PUSH2 0x12E JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xE3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF7 PUSH2 0xF2 CALLDATASIZE PUSH1 0x4 PUSH2 0xEE8 JUMP JUMPDEST PUSH2 0x294 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x118 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x121 PUSH2 0x300 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x103 SWAP2 SWAP1 PUSH2 0xF12 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x13A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x14E PUSH2 0x149 CALLDATASIZE PUSH1 0x4 PUSH2 0xF5B JUMP JUMPDEST PUSH2 0x32A JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x15C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xC9 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x103 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x18E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 PUSH1 0x40 MLOAD PUSH2 0x103 SWAP2 SWAP1 PUSH2 0xF78 JUMP JUMPDEST PUSH2 0x14E PUSH2 0x1AC CALLDATASIZE PUSH1 0x4 PUSH2 0xFB6 JUMP JUMPDEST PUSH2 0x4AA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C6 PUSH2 0x616 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x103 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x16A PUSH2 0x6DB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C6 PUSH2 0x12D SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x20C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x14E PUSH2 0x21B CALLDATASIZE PUSH1 0x4 PUSH2 0xF5B JUMP JUMPDEST PUSH2 0x713 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x22C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x14E PUSH2 0x23B CALLDATASIZE PUSH1 0x4 PUSH2 0xF5B JUMP JUMPDEST PUSH2 0x772 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x24C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C6 PUSH32 0x821B6E3A557148015A918C89E5D092E878A69854A2D1A410635F771BD5A8A3F5 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x280 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xFB SLOAD PUSH2 0x16A SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x41DE683 PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x2C4 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x2DF JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x52D1902D PUSH1 0xE0 SHL EQ JUMPDEST DUP1 PUSH2 0x2FA JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x308 PUSH2 0xECA JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x3BC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x19195B1959D85D1958D85B1B PUSH1 0xA2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x417 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x482 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x6163746976652070726F7879 PUSH1 0xA0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B3 JUMP JUMPDEST PUSH2 0x48B DUP2 PUSH2 0x899 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x4A7 SWAP2 DUP4 SWAP2 SWAP1 PUSH2 0x8D6 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x537 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x19195B1959D85D1958D85B1B PUSH1 0xA2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B3 JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x592 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x5FD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x6163746976652070726F7879 PUSH1 0xA0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B3 JUMP JUMPDEST PUSH2 0x606 DUP3 PUSH2 0x899 JUMP JUMPDEST PUSH2 0x612 DUP3 DUP3 PUSH1 0x1 PUSH2 0x8D6 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x6B6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x38 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x555550535570677261646561626C653A206D757374206E6F742062652063616C PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6C6564207468726F7567682064656C656761746563616C6C0000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B3 JUMP JUMPDEST POP PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x70E PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0xFB DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP2 SWAP1 DUP3 SWAP1 PUSH32 0x90CC2F570A6EB594B1580EA3E41247D2D73A55281889E86BD4EC2FC29C7E62D6 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 DUP1 ISZERO PUSH2 0x792 JUMPI POP PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xFF SWAP1 SWAP2 AND LT JUMPDEST DUP1 PUSH2 0x7AC JUMPI POP ADDRESS EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x7AC JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF AND PUSH1 0x1 EQ JUMPDEST PUSH2 0x81E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x647920696E697469616C697A6564000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B3 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE DUP1 ISZERO PUSH2 0x841 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND PUSH2 0x100 OR SWAP1 SSTORE JUMPDEST PUSH2 0x84A DUP3 PUSH2 0xA7B JUMP JUMPDEST PUSH1 0x1 PUSH2 0x12D SSTORE DUP1 ISZERO PUSH2 0x612 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0xC9 SLOAD PUSH32 0x821B6E3A557148015A918C89E5D092E878A69854A2D1A410635F771BD5A8A3F5 SWAP1 PUSH2 0x612 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ADDRESS CALLER DUP5 PUSH1 0x0 CALLDATASIZE PUSH2 0xAEF JUMP JUMPDEST PUSH32 0x4910FDFA16FED3260ED0E7147F7CC6DA11A60208B5B9406D12A635614FFD9143 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x90E JUMPI PUSH2 0x909 DUP4 PUSH2 0xBAB JUMP JUMPDEST POP POP POP JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x52D1902D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x968 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x965 SWAP2 DUP2 ADD SWAP1 PUSH2 0x107A JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x9DA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524331393637557067726164653A206E657720696D706C656D656E74617469 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F6E206973206E6F742055555053000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B3 JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC DUP2 EQ PUSH2 0xA6F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524331393637557067726164653A20756E737570706F727465642070726F78 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6961626C65555549440000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B3 JUMP JUMPDEST POP PUSH2 0x909 DUP4 DUP4 DUP4 PUSH2 0xC76 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0xAE6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B3 JUMP JUMPDEST PUSH2 0x4A7 DUP2 PUSH2 0xCA1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x7EF7C883 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0xFDEF9106 SWAP1 PUSH2 0xB23 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x1093 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xB40 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xB64 SWAP2 SWAP1 PUSH2 0x10E7 JUMP JUMPDEST PUSH2 0xBA3 JUMPI PUSH1 0x40 MLOAD PUSH4 0xCB6F8ED PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND PUSH1 0x4 DUP4 ADD MSTORE DUP1 DUP8 AND PUSH1 0x24 DUP4 ADD MSTORE DUP6 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x84 ADD PUSH2 0x3B3 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND EXTCODESIZE PUSH2 0xC28 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313936373A206E657720696D706C656D656E746174696F6E206973206E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F74206120636F6E747261637400000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B3 JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xC7F DUP4 PUSH2 0xD3B JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD GT DUP1 PUSH2 0xC8C JUMPI POP DUP1 JUMPDEST ISZERO PUSH2 0x909 JUMPI PUSH2 0xC9B DUP4 DUP4 PUSH2 0xD7B JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0xD0C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B3 JUMP JUMPDEST PUSH1 0xC9 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xD44 DUP2 PUSH2 0xBAB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xDA0 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x117D PUSH1 0x27 SWAP2 CODECOPY PUSH2 0xDA7 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0xDC4 SWAP2 SWAP1 PUSH2 0x112D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xDFF JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xE04 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0xE15 DUP7 DUP4 DUP4 DUP8 PUSH2 0xE1F JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0xE8E JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0xE87 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0xE87 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3B3 JUMP JUMPDEST POP DUP2 PUSH2 0xE98 JUMP JUMPDEST PUSH2 0xE98 DUP4 DUP4 PUSH2 0xEA0 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0xEB0 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3B3 SWAP2 SWAP1 PUSH2 0x1149 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xEFA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0xDA0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0xF3D JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0xF1B JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x4A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xF6D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xDA0 DUP2 PUSH2 0xF46 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH1 0x3 DUP4 LT PUSH2 0xF9A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 SWAP1 MSTORE SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xFC9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0xFD4 DUP2 PUSH2 0xF46 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xFF1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1005 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x1017 JUMPI PUSH2 0x1017 PUSH2 0xFA0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x103F JUMPI PUSH2 0x103F PUSH2 0xFA0 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x1058 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x108C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND DUP4 MSTORE DUP1 DUP8 AND PUSH1 0x20 DUP5 ADD MSTORE POP DUP5 PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x80 PUSH1 0x60 DUP4 ADD MSTORE DUP3 PUSH1 0x80 DUP4 ADD MSTORE DUP3 DUP5 PUSH1 0xA0 DUP5 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0xA0 DUP5 DUP5 ADD ADD MSTORE PUSH1 0xA0 PUSH1 0x1F NOT PUSH1 0x1F DUP6 ADD AND DUP4 ADD ADD SWAP1 POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x10F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xDA0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1124 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x110C JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x113F DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x1109 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x1168 DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x1109 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A164 PUSH20 0x6F6C6343000811000A0000000000000000000000 ","sourceMap":"816:1588:32:-:0;;;973:87;;;;;;;;;;1018:37;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1605:32:46;;;816:1588:32;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@deployUUPSProxy_5072":{"entryPoint":1228,"id":5072,"parameterSlots":2,"returnSlots":1},"@implementation_5033":{"entryPoint":null,"id":5033,"parameterSlots":0,"returnSlots":1},"@mockHelpers_3108":{"entryPoint":1288,"id":3108,"parameterSlots":1,"returnSlots":1},"@mockPermissions_3069":{"entryPoint":819,"id":3069,"parameterSlots":3,"returnSlots":1},"@prepareInstallation_3364":{"entryPoint":591,"id":3364,"parameterSlots":2,"returnSlots":2},"@prepareUninstallation_3419":{"entryPoint":496,"id":3419,"parameterSlots":2,"returnSlots":1},"@prepareUpdate_3391":{"entryPoint":520,"id":3391,"parameterSlots":3,"returnSlots":2},"@protocolVersion_5135":{"entryPoint":452,"id":5135,"parameterSlots":0,"returnSlots":1},"@supportsInterface_2374":{"entryPoint":null,"id":2374,"parameterSlots":1,"returnSlots":1},"@supportsInterface_5024":{"entryPoint":369,"id":5024,"parameterSlots":1,"returnSlots":1},"abi_decode_address":{"entryPoint":1626,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_struct_SetupPayload_calldata":{"entryPoint":1655,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_bytes_memory_ptr":{"entryPoint":2367,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_struct$_SetupPayload_$4810_calldata_ptr":{"entryPoint":1674,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_uint16t_struct$_SetupPayload_$4810_calldata_ptr":{"entryPoint":1960,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_bytes4":{"entryPoint":1528,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encodeUpdatedPos_struct_MultiTargetPermission":{"entryPoint":1780,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_bytes":{"entryPoint":2070,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_struct_PreparedSetupData":{"entryPoint":2142,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address_t_bytes_memory_ptr__to_t_address_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":2744,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_address_t_struct$_PreparedSetupData_$4802_memory_ptr__to_t_address_t_struct$_PreparedSetupData_$4802_memory_ptr__fromStack_reversed":{"entryPoint":2573,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr__fromStack_reversed":{"entryPoint":1883,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed":{"entryPoint":1572,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$4802_memory_ptr__to_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$4802_memory_ptr__fromStack_reversed":{"entryPoint":2295,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_contract$_IDAO_$2538__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_rational_0_by_1_t_uint16__to_t_uint16_t_uint16__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"checked_sub_t_uint160":{"entryPoint":2639,"id":null,"parameterSlots":2,"returnSlots":1},"increment_t_uint160":{"entryPoint":2703,"id":null,"parameterSlots":1,"returnSlots":1},"panic_error_0x11":{"entryPoint":2617,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x21":{"entryPoint":1758,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x32":{"entryPoint":2681,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":2345,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:9408:50","statements":[{"nodeType":"YulBlock","src":"6:3:50","statements":[]},{"body":{"nodeType":"YulBlock","src":"83:217:50","statements":[{"body":{"nodeType":"YulBlock","src":"129:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"138:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"141:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"131:6:50"},"nodeType":"YulFunctionCall","src":"131:12:50"},"nodeType":"YulExpressionStatement","src":"131:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"104:7:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"113:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"100:3:50"},"nodeType":"YulFunctionCall","src":"100:23:50"},{"kind":"number","nodeType":"YulLiteral","src":"125:2:50","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"96:3:50"},"nodeType":"YulFunctionCall","src":"96:32:50"},"nodeType":"YulIf","src":"93:52:50"},{"nodeType":"YulVariableDeclaration","src":"154:36:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"180:9:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"167:12:50"},"nodeType":"YulFunctionCall","src":"167:23:50"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"158:5:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"254:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"263:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"266:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"256:6:50"},"nodeType":"YulFunctionCall","src":"256:12:50"},"nodeType":"YulExpressionStatement","src":"256:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"212:5:50"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"223:5:50"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"234:3:50","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"239:10:50","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"230:3:50"},"nodeType":"YulFunctionCall","src":"230:20:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"219:3:50"},"nodeType":"YulFunctionCall","src":"219:32:50"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"209:2:50"},"nodeType":"YulFunctionCall","src":"209:43:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"202:6:50"},"nodeType":"YulFunctionCall","src":"202:51:50"},"nodeType":"YulIf","src":"199:71:50"},{"nodeType":"YulAssignment","src":"279:15:50","value":{"name":"value","nodeType":"YulIdentifier","src":"289:5:50"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"279:6:50"}]}]},"name":"abi_decode_tuple_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"49:9:50","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"60:7:50","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"72:6:50","type":""}],"src":"14:286:50"},{"body":{"nodeType":"YulBlock","src":"400:92:50","statements":[{"nodeType":"YulAssignment","src":"410:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"422:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"433:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"418:3:50"},"nodeType":"YulFunctionCall","src":"418:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"410:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"452:9:50"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"477:6:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"470:6:50"},"nodeType":"YulFunctionCall","src":"470:14:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"463:6:50"},"nodeType":"YulFunctionCall","src":"463:22:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"445:6:50"},"nodeType":"YulFunctionCall","src":"445:41:50"},"nodeType":"YulExpressionStatement","src":"445:41:50"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"369:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"380:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"391:4:50","type":""}],"src":"305:187:50"},{"body":{"nodeType":"YulBlock","src":"640:358:50","statements":[{"nodeType":"YulAssignment","src":"650:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"662:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"673:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"658:3:50"},"nodeType":"YulFunctionCall","src":"658:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"650:4:50"}]},{"nodeType":"YulVariableDeclaration","src":"685:20:50","value":{"name":"headStart","nodeType":"YulIdentifier","src":"696:9:50"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"689:3:50","type":""}]},{"nodeType":"YulAssignment","src":"714:16:50","value":{"name":"headStart","nodeType":"YulIdentifier","src":"721:9:50"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"714:3:50"}]},{"nodeType":"YulVariableDeclaration","src":"739:20:50","value":{"name":"value0","nodeType":"YulIdentifier","src":"753:6:50"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"743:6:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"768:10:50","value":{"kind":"number","nodeType":"YulLiteral","src":"777:1:50","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"772:1:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"834:158:50","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"855:3:50"},{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"870:6:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"864:5:50"},"nodeType":"YulFunctionCall","src":"864:13:50"},{"kind":"number","nodeType":"YulLiteral","src":"879:4:50","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"860:3:50"},"nodeType":"YulFunctionCall","src":"860:24:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"848:6:50"},"nodeType":"YulFunctionCall","src":"848:37:50"},"nodeType":"YulExpressionStatement","src":"848:37:50"},{"nodeType":"YulVariableDeclaration","src":"898:14:50","value":{"kind":"number","nodeType":"YulLiteral","src":"908:4:50","type":"","value":"0x20"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"902:2:50","type":""}]},{"nodeType":"YulAssignment","src":"925:19:50","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"936:3:50"},{"name":"_1","nodeType":"YulIdentifier","src":"941:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"932:3:50"},"nodeType":"YulFunctionCall","src":"932:12:50"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"925:3:50"}]},{"nodeType":"YulAssignment","src":"957:25:50","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"971:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"979:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"967:3:50"},"nodeType":"YulFunctionCall","src":"967:15:50"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"957:6:50"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"798:1:50"},{"kind":"number","nodeType":"YulLiteral","src":"801:4:50","type":"","value":"0x03"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"795:2:50"},"nodeType":"YulFunctionCall","src":"795:11:50"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"807:18:50","statements":[{"nodeType":"YulAssignment","src":"809:14:50","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"818:1:50"},{"kind":"number","nodeType":"YulLiteral","src":"821:1:50","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"814:3:50"},"nodeType":"YulFunctionCall","src":"814:9:50"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"809:1:50"}]}]},"pre":{"nodeType":"YulBlock","src":"791:3:50","statements":[]},"src":"787:205:50"}]},"name":"abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"609:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"620:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"631:4:50","type":""}],"src":"497:501:50"},{"body":{"nodeType":"YulBlock","src":"1104:125:50","statements":[{"nodeType":"YulAssignment","src":"1114:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1126:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"1137:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1122:3:50"},"nodeType":"YulFunctionCall","src":"1122:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1114:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1156:9:50"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1171:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"1179:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1167:3:50"},"nodeType":"YulFunctionCall","src":"1167:55:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1149:6:50"},"nodeType":"YulFunctionCall","src":"1149:74:50"},"nodeType":"YulExpressionStatement","src":"1149:74:50"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1073:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1084:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1095:4:50","type":""}],"src":"1003:226:50"},{"body":{"nodeType":"YulBlock","src":"1283:147:50","statements":[{"nodeType":"YulAssignment","src":"1293:29:50","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1315:6:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1302:12:50"},"nodeType":"YulFunctionCall","src":"1302:20:50"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"1293:5:50"}]},{"body":{"nodeType":"YulBlock","src":"1408:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1417:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1420:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1410:6:50"},"nodeType":"YulFunctionCall","src":"1410:12:50"},"nodeType":"YulExpressionStatement","src":"1410:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1344:5:50"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1355:5:50"},{"kind":"number","nodeType":"YulLiteral","src":"1362:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1351:3:50"},"nodeType":"YulFunctionCall","src":"1351:54:50"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1341:2:50"},"nodeType":"YulFunctionCall","src":"1341:65:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1334:6:50"},"nodeType":"YulFunctionCall","src":"1334:73:50"},"nodeType":"YulIf","src":"1331:93:50"}]},"name":"abi_decode_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"1262:6:50","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"1273:5:50","type":""}],"src":"1234:196:50"},{"body":{"nodeType":"YulBlock","src":"1510:85:50","statements":[{"body":{"nodeType":"YulBlock","src":"1549:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1558:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1561:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1551:6:50"},"nodeType":"YulFunctionCall","src":"1551:12:50"},"nodeType":"YulExpressionStatement","src":"1551:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"end","nodeType":"YulIdentifier","src":"1531:3:50"},{"name":"offset","nodeType":"YulIdentifier","src":"1536:6:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1527:3:50"},"nodeType":"YulFunctionCall","src":"1527:16:50"},{"kind":"number","nodeType":"YulLiteral","src":"1545:2:50","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1523:3:50"},"nodeType":"YulFunctionCall","src":"1523:25:50"},"nodeType":"YulIf","src":"1520:45:50"},{"nodeType":"YulAssignment","src":"1574:15:50","value":{"name":"offset","nodeType":"YulIdentifier","src":"1583:6:50"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"1574:5:50"}]}]},"name":"abi_decode_struct_SetupPayload_calldata","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"1484:6:50","type":""},{"name":"end","nodeType":"YulTypedName","src":"1492:3:50","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"1500:5:50","type":""}],"src":"1435:160:50"},{"body":{"nodeType":"YulBlock","src":"1719:321:50","statements":[{"body":{"nodeType":"YulBlock","src":"1765:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1774:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1777:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1767:6:50"},"nodeType":"YulFunctionCall","src":"1767:12:50"},"nodeType":"YulExpressionStatement","src":"1767:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1740:7:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"1749:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1736:3:50"},"nodeType":"YulFunctionCall","src":"1736:23:50"},{"kind":"number","nodeType":"YulLiteral","src":"1761:2:50","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1732:3:50"},"nodeType":"YulFunctionCall","src":"1732:32:50"},"nodeType":"YulIf","src":"1729:52:50"},{"nodeType":"YulAssignment","src":"1790:39:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1819:9:50"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"1800:18:50"},"nodeType":"YulFunctionCall","src":"1800:29:50"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1790:6:50"}]},{"nodeType":"YulVariableDeclaration","src":"1838:46:50","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1869:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"1880:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1865:3:50"},"nodeType":"YulFunctionCall","src":"1865:18:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1852:12:50"},"nodeType":"YulFunctionCall","src":"1852:32:50"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1842:6:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"1927:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1936:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1939:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1929:6:50"},"nodeType":"YulFunctionCall","src":"1929:12:50"},"nodeType":"YulExpressionStatement","src":"1929:12:50"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1899:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"1907:18:50","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1896:2:50"},"nodeType":"YulFunctionCall","src":"1896:30:50"},"nodeType":"YulIf","src":"1893:50:50"},{"nodeType":"YulAssignment","src":"1952:82:50","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2006:9:50"},{"name":"offset","nodeType":"YulIdentifier","src":"2017:6:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2002:3:50"},"nodeType":"YulFunctionCall","src":"2002:22:50"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2026:7:50"}],"functionName":{"name":"abi_decode_struct_SetupPayload_calldata","nodeType":"YulIdentifier","src":"1962:39:50"},"nodeType":"YulFunctionCall","src":"1962:72:50"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1952:6:50"}]}]},"name":"abi_decode_tuple_t_addresst_struct$_SetupPayload_$4810_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1677:9:50","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1688:7:50","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1700:6:50","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1708:6:50","type":""}],"src":"1600:440:50"},{"body":{"nodeType":"YulBlock","src":"2077:95:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2094:1:50","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2101:3:50","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"2106:10:50","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2097:3:50"},"nodeType":"YulFunctionCall","src":"2097:20:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2087:6:50"},"nodeType":"YulFunctionCall","src":"2087:31:50"},"nodeType":"YulExpressionStatement","src":"2087:31:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2134:1:50","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"2137:4:50","type":"","value":"0x21"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2127:6:50"},"nodeType":"YulFunctionCall","src":"2127:15:50"},"nodeType":"YulExpressionStatement","src":"2127:15:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2158:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2161:4:50","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2151:6:50"},"nodeType":"YulFunctionCall","src":"2151:15:50"},"nodeType":"YulExpressionStatement","src":"2151:15:50"}]},"name":"panic_error_0x21","nodeType":"YulFunctionDefinition","src":"2045:127:50"},{"body":{"nodeType":"YulBlock","src":"2267:606:50","statements":[{"nodeType":"YulVariableDeclaration","src":"2277:23:50","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2293:6:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2287:5:50"},"nodeType":"YulFunctionCall","src":"2287:13:50"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"2281:2:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"2338:111:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2359:1:50","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2366:3:50","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"2371:10:50","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2362:3:50"},"nodeType":"YulFunctionCall","src":"2362:20:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2352:6:50"},"nodeType":"YulFunctionCall","src":"2352:31:50"},"nodeType":"YulExpressionStatement","src":"2352:31:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2403:1:50","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"2406:4:50","type":"","value":"0x21"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2396:6:50"},"nodeType":"YulFunctionCall","src":"2396:15:50"},"nodeType":"YulExpressionStatement","src":"2396:15:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2431:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2434:4:50","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2424:6:50"},"nodeType":"YulFunctionCall","src":"2424:15:50"},"nodeType":"YulExpressionStatement","src":"2424:15:50"}]},"condition":{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"2322:2:50"},{"kind":"number","nodeType":"YulLiteral","src":"2326:1:50","type":"","value":"3"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2319:2:50"},"nodeType":"YulFunctionCall","src":"2319:9:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2312:6:50"},"nodeType":"YulFunctionCall","src":"2312:17:50"},"nodeType":"YulIf","src":"2309:140:50"},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2465:3:50"},{"name":"_1","nodeType":"YulIdentifier","src":"2470:2:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2458:6:50"},"nodeType":"YulFunctionCall","src":"2458:15:50"},"nodeType":"YulExpressionStatement","src":"2458:15:50"},{"nodeType":"YulVariableDeclaration","src":"2482:44:50","value":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2512:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"2520:4:50","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2508:3:50"},"nodeType":"YulFunctionCall","src":"2508:17:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2502:5:50"},"nodeType":"YulFunctionCall","src":"2502:24:50"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"2486:12:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2535:52:50","value":{"kind":"number","nodeType":"YulLiteral","src":"2545:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"2539:2:50","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2607:3:50"},{"kind":"number","nodeType":"YulLiteral","src":"2612:4:50","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2603:3:50"},"nodeType":"YulFunctionCall","src":"2603:14:50"},{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"2623:12:50"},{"name":"_2","nodeType":"YulIdentifier","src":"2637:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2619:3:50"},"nodeType":"YulFunctionCall","src":"2619:21:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2596:6:50"},"nodeType":"YulFunctionCall","src":"2596:45:50"},"nodeType":"YulExpressionStatement","src":"2596:45:50"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2661:3:50"},{"kind":"number","nodeType":"YulLiteral","src":"2666:4:50","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2657:3:50"},"nodeType":"YulFunctionCall","src":"2657:14:50"},{"arguments":[{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2687:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"2695:4:50","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2683:3:50"},"nodeType":"YulFunctionCall","src":"2683:17:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2677:5:50"},"nodeType":"YulFunctionCall","src":"2677:24:50"},{"name":"_2","nodeType":"YulIdentifier","src":"2703:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2673:3:50"},"nodeType":"YulFunctionCall","src":"2673:33:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2650:6:50"},"nodeType":"YulFunctionCall","src":"2650:57:50"},"nodeType":"YulExpressionStatement","src":"2650:57:50"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2727:3:50"},{"kind":"number","nodeType":"YulLiteral","src":"2732:4:50","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2723:3:50"},"nodeType":"YulFunctionCall","src":"2723:14:50"},{"arguments":[{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2753:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"2761:4:50","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2749:3:50"},"nodeType":"YulFunctionCall","src":"2749:17:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2743:5:50"},"nodeType":"YulFunctionCall","src":"2743:24:50"},{"name":"_2","nodeType":"YulIdentifier","src":"2769:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2739:3:50"},"nodeType":"YulFunctionCall","src":"2739:33:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2716:6:50"},"nodeType":"YulFunctionCall","src":"2716:57:50"},"nodeType":"YulExpressionStatement","src":"2716:57:50"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2793:3:50"},{"kind":"number","nodeType":"YulLiteral","src":"2798:4:50","type":"","value":"0x80"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2789:3:50"},"nodeType":"YulFunctionCall","src":"2789:14:50"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2815:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"2823:4:50","type":"","value":"0x80"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2811:3:50"},"nodeType":"YulFunctionCall","src":"2811:17:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2805:5:50"},"nodeType":"YulFunctionCall","src":"2805:24:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2782:6:50"},"nodeType":"YulFunctionCall","src":"2782:48:50"},"nodeType":"YulExpressionStatement","src":"2782:48:50"},{"nodeType":"YulAssignment","src":"2839:28:50","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2857:3:50"},{"kind":"number","nodeType":"YulLiteral","src":"2862:4:50","type":"","value":"0xa0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2853:3:50"},"nodeType":"YulFunctionCall","src":"2853:14:50"},"variableNames":[{"name":"updatedPos","nodeType":"YulIdentifier","src":"2839:10:50"}]}]},"name":"abi_encodeUpdatedPos_struct_MultiTargetPermission","nodeType":"YulFunctionDefinition","parameters":[{"name":"value0","nodeType":"YulTypedName","src":"2236:6:50","type":""},{"name":"pos","nodeType":"YulTypedName","src":"2244:3:50","type":""}],"returnVariables":[{"name":"updatedPos","nodeType":"YulTypedName","src":"2252:10:50","type":""}],"src":"2177:696:50"},{"body":{"nodeType":"YulBlock","src":"3107:499:50","statements":[{"nodeType":"YulVariableDeclaration","src":"3117:12:50","value":{"kind":"number","nodeType":"YulLiteral","src":"3127:2:50","type":"","value":"32"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"3121:2:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3138:32:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3156:9:50"},{"name":"_1","nodeType":"YulIdentifier","src":"3167:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3152:3:50"},"nodeType":"YulFunctionCall","src":"3152:18:50"},"variables":[{"name":"tail_1","nodeType":"YulTypedName","src":"3142:6:50","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3186:9:50"},{"name":"_1","nodeType":"YulIdentifier","src":"3197:2:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3179:6:50"},"nodeType":"YulFunctionCall","src":"3179:21:50"},"nodeType":"YulExpressionStatement","src":"3179:21:50"},{"nodeType":"YulVariableDeclaration","src":"3209:17:50","value":{"name":"tail_1","nodeType":"YulIdentifier","src":"3220:6:50"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"3213:3:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3235:27:50","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3255:6:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3249:5:50"},"nodeType":"YulFunctionCall","src":"3249:13:50"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"3239:6:50","type":""}]},{"expression":{"arguments":[{"name":"tail_1","nodeType":"YulIdentifier","src":"3278:6:50"},{"name":"length","nodeType":"YulIdentifier","src":"3286:6:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3271:6:50"},"nodeType":"YulFunctionCall","src":"3271:22:50"},"nodeType":"YulExpressionStatement","src":"3271:22:50"},{"nodeType":"YulAssignment","src":"3302:25:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3313:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"3324:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3309:3:50"},"nodeType":"YulFunctionCall","src":"3309:18:50"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"3302:3:50"}]},{"nodeType":"YulVariableDeclaration","src":"3336:29:50","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3354:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"3362:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3350:3:50"},"nodeType":"YulFunctionCall","src":"3350:15:50"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"3340:6:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3374:10:50","value":{"kind":"number","nodeType":"YulLiteral","src":"3383:1:50","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"3378:1:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"3442:138:50","statements":[{"nodeType":"YulAssignment","src":"3456:76:50","value":{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"3519:6:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3513:5:50"},"nodeType":"YulFunctionCall","src":"3513:13:50"},{"name":"pos","nodeType":"YulIdentifier","src":"3528:3:50"}],"functionName":{"name":"abi_encodeUpdatedPos_struct_MultiTargetPermission","nodeType":"YulIdentifier","src":"3463:49:50"},"nodeType":"YulFunctionCall","src":"3463:69:50"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"3456:3:50"}]},{"nodeType":"YulAssignment","src":"3545:25:50","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"3559:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"3567:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3555:3:50"},"nodeType":"YulFunctionCall","src":"3555:15:50"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"3545:6:50"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3404:1:50"},{"name":"length","nodeType":"YulIdentifier","src":"3407:6:50"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"3401:2:50"},"nodeType":"YulFunctionCall","src":"3401:13:50"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"3415:18:50","statements":[{"nodeType":"YulAssignment","src":"3417:14:50","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3426:1:50"},{"kind":"number","nodeType":"YulLiteral","src":"3429:1:50","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3422:3:50"},"nodeType":"YulFunctionCall","src":"3422:9:50"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"3417:1:50"}]}]},"pre":{"nodeType":"YulBlock","src":"3397:3:50","statements":[]},"src":"3393:187:50"},{"nodeType":"YulAssignment","src":"3589:11:50","value":{"name":"pos","nodeType":"YulIdentifier","src":"3597:3:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3589:4:50"}]}]},"name":"abi_encode_tuple_t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3076:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3087:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3098:4:50","type":""}],"src":"2878:728:50"},{"body":{"nodeType":"YulBlock","src":"3746:465:50","statements":[{"body":{"nodeType":"YulBlock","src":"3792:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3801:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3804:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3794:6:50"},"nodeType":"YulFunctionCall","src":"3794:12:50"},"nodeType":"YulExpressionStatement","src":"3794:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3767:7:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"3776:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3763:3:50"},"nodeType":"YulFunctionCall","src":"3763:23:50"},{"kind":"number","nodeType":"YulLiteral","src":"3788:2:50","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3759:3:50"},"nodeType":"YulFunctionCall","src":"3759:32:50"},"nodeType":"YulIf","src":"3756:52:50"},{"nodeType":"YulAssignment","src":"3817:39:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3846:9:50"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"3827:18:50"},"nodeType":"YulFunctionCall","src":"3827:29:50"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3817:6:50"}]},{"nodeType":"YulVariableDeclaration","src":"3865:45:50","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3895:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"3906:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3891:3:50"},"nodeType":"YulFunctionCall","src":"3891:18:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3878:12:50"},"nodeType":"YulFunctionCall","src":"3878:32:50"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"3869:5:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"3960:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3969:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3972:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3962:6:50"},"nodeType":"YulFunctionCall","src":"3962:12:50"},"nodeType":"YulExpressionStatement","src":"3962:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3932:5:50"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3943:5:50"},{"kind":"number","nodeType":"YulLiteral","src":"3950:6:50","type":"","value":"0xffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3939:3:50"},"nodeType":"YulFunctionCall","src":"3939:18:50"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"3929:2:50"},"nodeType":"YulFunctionCall","src":"3929:29:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3922:6:50"},"nodeType":"YulFunctionCall","src":"3922:37:50"},"nodeType":"YulIf","src":"3919:57:50"},{"nodeType":"YulAssignment","src":"3985:15:50","value":{"name":"value","nodeType":"YulIdentifier","src":"3995:5:50"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"3985:6:50"}]},{"nodeType":"YulVariableDeclaration","src":"4009:46:50","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4040:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"4051:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4036:3:50"},"nodeType":"YulFunctionCall","src":"4036:18:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4023:12:50"},"nodeType":"YulFunctionCall","src":"4023:32:50"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4013:6:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"4098:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4107:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4110:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4100:6:50"},"nodeType":"YulFunctionCall","src":"4100:12:50"},"nodeType":"YulExpressionStatement","src":"4100:12:50"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"4070:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"4078:18:50","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4067:2:50"},"nodeType":"YulFunctionCall","src":"4067:30:50"},"nodeType":"YulIf","src":"4064:50:50"},{"nodeType":"YulAssignment","src":"4123:82:50","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4177:9:50"},{"name":"offset","nodeType":"YulIdentifier","src":"4188:6:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4173:3:50"},"nodeType":"YulFunctionCall","src":"4173:22:50"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4197:7:50"}],"functionName":{"name":"abi_decode_struct_SetupPayload_calldata","nodeType":"YulIdentifier","src":"4133:39:50"},"nodeType":"YulFunctionCall","src":"4133:72:50"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"4123:6:50"}]}]},"name":"abi_decode_tuple_t_addresst_uint16t_struct$_SetupPayload_$4810_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3696:9:50","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3707:7:50","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3719:6:50","type":""},{"name":"value1","nodeType":"YulTypedName","src":"3727:6:50","type":""},{"name":"value2","nodeType":"YulTypedName","src":"3735:6:50","type":""}],"src":"3611:600:50"},{"body":{"nodeType":"YulBlock","src":"4265:373:50","statements":[{"nodeType":"YulVariableDeclaration","src":"4275:26:50","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4295:5:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4289:5:50"},"nodeType":"YulFunctionCall","src":"4289:12:50"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"4279:6:50","type":""}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4317:3:50"},{"name":"length","nodeType":"YulIdentifier","src":"4322:6:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4310:6:50"},"nodeType":"YulFunctionCall","src":"4310:19:50"},"nodeType":"YulExpressionStatement","src":"4310:19:50"},{"nodeType":"YulVariableDeclaration","src":"4338:10:50","value":{"kind":"number","nodeType":"YulLiteral","src":"4347:1:50","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"4342:1:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"4409:110:50","statements":[{"nodeType":"YulVariableDeclaration","src":"4423:14:50","value":{"kind":"number","nodeType":"YulLiteral","src":"4433:4:50","type":"","value":"0x20"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"4427:2:50","type":""}]},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4465:3:50"},{"name":"i","nodeType":"YulIdentifier","src":"4470:1:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4461:3:50"},"nodeType":"YulFunctionCall","src":"4461:11:50"},{"name":"_1","nodeType":"YulIdentifier","src":"4474:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4457:3:50"},"nodeType":"YulFunctionCall","src":"4457:20:50"},{"arguments":[{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4493:5:50"},{"name":"i","nodeType":"YulIdentifier","src":"4500:1:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4489:3:50"},"nodeType":"YulFunctionCall","src":"4489:13:50"},{"name":"_1","nodeType":"YulIdentifier","src":"4504:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4485:3:50"},"nodeType":"YulFunctionCall","src":"4485:22:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4479:5:50"},"nodeType":"YulFunctionCall","src":"4479:29:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4450:6:50"},"nodeType":"YulFunctionCall","src":"4450:59:50"},"nodeType":"YulExpressionStatement","src":"4450:59:50"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"4368:1:50"},{"name":"length","nodeType":"YulIdentifier","src":"4371:6:50"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"4365:2:50"},"nodeType":"YulFunctionCall","src":"4365:13:50"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"4379:21:50","statements":[{"nodeType":"YulAssignment","src":"4381:17:50","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"4390:1:50"},{"kind":"number","nodeType":"YulLiteral","src":"4393:4:50","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4386:3:50"},"nodeType":"YulFunctionCall","src":"4386:12:50"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"4381:1:50"}]}]},"pre":{"nodeType":"YulBlock","src":"4361:3:50","statements":[]},"src":"4357:162:50"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4543:3:50"},{"name":"length","nodeType":"YulIdentifier","src":"4548:6:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4539:3:50"},"nodeType":"YulFunctionCall","src":"4539:16:50"},{"kind":"number","nodeType":"YulLiteral","src":"4557:4:50","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4535:3:50"},"nodeType":"YulFunctionCall","src":"4535:27:50"},{"kind":"number","nodeType":"YulLiteral","src":"4564:1:50","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4528:6:50"},"nodeType":"YulFunctionCall","src":"4528:38:50"},"nodeType":"YulExpressionStatement","src":"4528:38:50"},{"nodeType":"YulAssignment","src":"4575:57:50","value":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4590:3:50"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"4603:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"4611:2:50","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4599:3:50"},"nodeType":"YulFunctionCall","src":"4599:15:50"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4620:2:50","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"4616:3:50"},"nodeType":"YulFunctionCall","src":"4616:7:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4595:3:50"},"nodeType":"YulFunctionCall","src":"4595:29:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4586:3:50"},"nodeType":"YulFunctionCall","src":"4586:39:50"},{"kind":"number","nodeType":"YulLiteral","src":"4627:4:50","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4582:3:50"},"nodeType":"YulFunctionCall","src":"4582:50:50"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"4575:3:50"}]}]},"name":"abi_encode_bytes","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"4242:5:50","type":""},{"name":"pos","nodeType":"YulTypedName","src":"4249:3:50","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"4257:3:50","type":""}],"src":"4216:422:50"},{"body":{"nodeType":"YulBlock","src":"4711:1094:50","statements":[{"nodeType":"YulVariableDeclaration","src":"4721:26:50","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4737:3:50"},{"kind":"number","nodeType":"YulLiteral","src":"4742:4:50","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4733:3:50"},"nodeType":"YulFunctionCall","src":"4733:14:50"},"variables":[{"name":"tail","nodeType":"YulTypedName","src":"4725:4:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4756:32:50","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4782:5:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4776:5:50"},"nodeType":"YulFunctionCall","src":"4776:12:50"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"4760:12:50","type":""}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4804:3:50"},{"kind":"number","nodeType":"YulLiteral","src":"4809:4:50","type":"","value":"0x40"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4797:6:50"},"nodeType":"YulFunctionCall","src":"4797:17:50"},"nodeType":"YulExpressionStatement","src":"4797:17:50"},{"nodeType":"YulVariableDeclaration","src":"4823:17:50","value":{"name":"tail","nodeType":"YulIdentifier","src":"4836:4:50"},"variables":[{"name":"pos_1","nodeType":"YulTypedName","src":"4827:5:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4849:33:50","value":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"4869:12:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4863:5:50"},"nodeType":"YulFunctionCall","src":"4863:19:50"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"4853:6:50","type":""}]},{"expression":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"4898:4:50"},{"name":"length","nodeType":"YulIdentifier","src":"4904:6:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4891:6:50"},"nodeType":"YulFunctionCall","src":"4891:20:50"},"nodeType":"YulExpressionStatement","src":"4891:20:50"},{"nodeType":"YulAssignment","src":"4920:21:50","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4933:3:50"},{"kind":"number","nodeType":"YulLiteral","src":"4938:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4929:3:50"},"nodeType":"YulFunctionCall","src":"4929:12:50"},"variableNames":[{"name":"pos_1","nodeType":"YulIdentifier","src":"4920:5:50"}]},{"nodeType":"YulVariableDeclaration","src":"4950:14:50","value":{"kind":"number","nodeType":"YulLiteral","src":"4960:4:50","type":"","value":"0x20"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"4954:2:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4973:35:50","value":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"4991:12:50"},{"name":"_1","nodeType":"YulIdentifier","src":"5005:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4987:3:50"},"nodeType":"YulFunctionCall","src":"4987:21:50"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"4977:6:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5017:10:50","value":{"kind":"number","nodeType":"YulLiteral","src":"5026:1:50","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"5021:1:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"5085:175:50","statements":[{"expression":{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5106:5:50"},{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"5123:6:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5117:5:50"},"nodeType":"YulFunctionCall","src":"5117:13:50"},{"kind":"number","nodeType":"YulLiteral","src":"5132:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5113:3:50"},"nodeType":"YulFunctionCall","src":"5113:62:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5099:6:50"},"nodeType":"YulFunctionCall","src":"5099:77:50"},"nodeType":"YulExpressionStatement","src":"5099:77:50"},{"nodeType":"YulAssignment","src":"5189:23:50","value":{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5202:5:50"},{"name":"_1","nodeType":"YulIdentifier","src":"5209:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5198:3:50"},"nodeType":"YulFunctionCall","src":"5198:14:50"},"variableNames":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5189:5:50"}]},{"nodeType":"YulAssignment","src":"5225:25:50","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"5239:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"5247:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5235:3:50"},"nodeType":"YulFunctionCall","src":"5235:15:50"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"5225:6:50"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"5047:1:50"},{"name":"length","nodeType":"YulIdentifier","src":"5050:6:50"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"5044:2:50"},"nodeType":"YulFunctionCall","src":"5044:13:50"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"5058:18:50","statements":[{"nodeType":"YulAssignment","src":"5060:14:50","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"5069:1:50"},{"kind":"number","nodeType":"YulLiteral","src":"5072:1:50","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5065:3:50"},"nodeType":"YulFunctionCall","src":"5065:9:50"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"5060:1:50"}]}]},"pre":{"nodeType":"YulBlock","src":"5040:3:50","statements":[]},"src":"5036:224:50"},{"nodeType":"YulVariableDeclaration","src":"5269:43:50","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5301:5:50"},{"name":"_1","nodeType":"YulIdentifier","src":"5308:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5297:3:50"},"nodeType":"YulFunctionCall","src":"5297:14:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5291:5:50"},"nodeType":"YulFunctionCall","src":"5291:21:50"},"variables":[{"name":"memberValue0_1","nodeType":"YulTypedName","src":"5273:14:50","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5332:3:50"},{"name":"_1","nodeType":"YulIdentifier","src":"5337:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5328:3:50"},"nodeType":"YulFunctionCall","src":"5328:12:50"},{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5346:5:50"},{"name":"pos","nodeType":"YulIdentifier","src":"5353:3:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5342:3:50"},"nodeType":"YulFunctionCall","src":"5342:15:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5321:6:50"},"nodeType":"YulFunctionCall","src":"5321:37:50"},"nodeType":"YulExpressionStatement","src":"5321:37:50"},{"nodeType":"YulVariableDeclaration","src":"5367:18:50","value":{"name":"pos_1","nodeType":"YulIdentifier","src":"5380:5:50"},"variables":[{"name":"pos_2","nodeType":"YulTypedName","src":"5371:5:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5394:37:50","value":{"arguments":[{"name":"memberValue0_1","nodeType":"YulIdentifier","src":"5416:14:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5410:5:50"},"nodeType":"YulFunctionCall","src":"5410:21:50"},"variables":[{"name":"length_1","nodeType":"YulTypedName","src":"5398:8:50","type":""}]},{"expression":{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5447:5:50"},{"name":"length_1","nodeType":"YulIdentifier","src":"5454:8:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5440:6:50"},"nodeType":"YulFunctionCall","src":"5440:23:50"},"nodeType":"YulExpressionStatement","src":"5440:23:50"},{"nodeType":"YulAssignment","src":"5472:23:50","value":{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5485:5:50"},{"name":"_1","nodeType":"YulIdentifier","src":"5492:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5481:3:50"},"nodeType":"YulFunctionCall","src":"5481:14:50"},"variableNames":[{"name":"pos_2","nodeType":"YulIdentifier","src":"5472:5:50"}]},{"nodeType":"YulVariableDeclaration","src":"5504:39:50","value":{"arguments":[{"name":"memberValue0_1","nodeType":"YulIdentifier","src":"5524:14:50"},{"name":"_1","nodeType":"YulIdentifier","src":"5540:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5520:3:50"},"nodeType":"YulFunctionCall","src":"5520:23:50"},"variables":[{"name":"srcPtr_1","nodeType":"YulTypedName","src":"5508:8:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5552:12:50","value":{"kind":"number","nodeType":"YulLiteral","src":"5563:1:50","type":"","value":"0"},"variables":[{"name":"i_1","nodeType":"YulTypedName","src":"5556:3:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"5630:148:50","statements":[{"nodeType":"YulAssignment","src":"5644:82:50","value":{"arguments":[{"arguments":[{"name":"srcPtr_1","nodeType":"YulIdentifier","src":"5709:8:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5703:5:50"},"nodeType":"YulFunctionCall","src":"5703:15:50"},{"name":"pos_2","nodeType":"YulIdentifier","src":"5720:5:50"}],"functionName":{"name":"abi_encodeUpdatedPos_struct_MultiTargetPermission","nodeType":"YulIdentifier","src":"5653:49:50"},"nodeType":"YulFunctionCall","src":"5653:73:50"},"variableNames":[{"name":"pos_2","nodeType":"YulIdentifier","src":"5644:5:50"}]},{"nodeType":"YulAssignment","src":"5739:29:50","value":{"arguments":[{"name":"srcPtr_1","nodeType":"YulIdentifier","src":"5755:8:50"},{"name":"_1","nodeType":"YulIdentifier","src":"5765:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5751:3:50"},"nodeType":"YulFunctionCall","src":"5751:17:50"},"variableNames":[{"name":"srcPtr_1","nodeType":"YulIdentifier","src":"5739:8:50"}]}]},"condition":{"arguments":[{"name":"i_1","nodeType":"YulIdentifier","src":"5584:3:50"},{"name":"length_1","nodeType":"YulIdentifier","src":"5589:8:50"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"5581:2:50"},"nodeType":"YulFunctionCall","src":"5581:17:50"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"5599:22:50","statements":[{"nodeType":"YulAssignment","src":"5601:18:50","value":{"arguments":[{"name":"i_1","nodeType":"YulIdentifier","src":"5612:3:50"},{"kind":"number","nodeType":"YulLiteral","src":"5617:1:50","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5608:3:50"},"nodeType":"YulFunctionCall","src":"5608:11:50"},"variableNames":[{"name":"i_1","nodeType":"YulIdentifier","src":"5601:3:50"}]}]},"pre":{"nodeType":"YulBlock","src":"5577:3:50","statements":[]},"src":"5573:205:50"},{"nodeType":"YulAssignment","src":"5787:12:50","value":{"name":"pos_2","nodeType":"YulIdentifier","src":"5794:5:50"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"5787:3:50"}]}]},"name":"abi_encode_struct_PreparedSetupData","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"4688:5:50","type":""},{"name":"pos","nodeType":"YulTypedName","src":"4695:3:50","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"4703:3:50","type":""}],"src":"4643:1162:50"},{"body":{"nodeType":"YulBlock","src":"6027:231:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6044:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"6055:2:50","type":"","value":"64"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6037:6:50"},"nodeType":"YulFunctionCall","src":"6037:21:50"},"nodeType":"YulExpressionStatement","src":"6037:21:50"},{"nodeType":"YulVariableDeclaration","src":"6067:58:50","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6098:6:50"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6110:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"6121:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6106:3:50"},"nodeType":"YulFunctionCall","src":"6106:18:50"}],"functionName":{"name":"abi_encode_bytes","nodeType":"YulIdentifier","src":"6081:16:50"},"nodeType":"YulFunctionCall","src":"6081:44:50"},"variables":[{"name":"tail_1","nodeType":"YulTypedName","src":"6071:6:50","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6145:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"6156:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6141:3:50"},"nodeType":"YulFunctionCall","src":"6141:18:50"},{"arguments":[{"name":"tail_1","nodeType":"YulIdentifier","src":"6165:6:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"6173:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6161:3:50"},"nodeType":"YulFunctionCall","src":"6161:22:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6134:6:50"},"nodeType":"YulFunctionCall","src":"6134:50:50"},"nodeType":"YulExpressionStatement","src":"6134:50:50"},{"nodeType":"YulAssignment","src":"6193:59:50","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"6237:6:50"},{"name":"tail_1","nodeType":"YulIdentifier","src":"6245:6:50"}],"functionName":{"name":"abi_encode_struct_PreparedSetupData","nodeType":"YulIdentifier","src":"6201:35:50"},"nodeType":"YulFunctionCall","src":"6201:51:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6193:4:50"}]}]},"name":"abi_encode_tuple_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$4802_memory_ptr__to_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$4802_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5988:9:50","type":""},{"name":"value1","nodeType":"YulTypedName","src":"5999:6:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"6007:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6018:4:50","type":""}],"src":"5810:448:50"},{"body":{"nodeType":"YulBlock","src":"6295:95:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6312:1:50","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6319:3:50","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"6324:10:50","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"6315:3:50"},"nodeType":"YulFunctionCall","src":"6315:20:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6305:6:50"},"nodeType":"YulFunctionCall","src":"6305:31:50"},"nodeType":"YulExpressionStatement","src":"6305:31:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6352:1:50","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"6355:4:50","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6345:6:50"},"nodeType":"YulFunctionCall","src":"6345:15:50"},"nodeType":"YulExpressionStatement","src":"6345:15:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6376:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6379:4:50","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6369:6:50"},"nodeType":"YulFunctionCall","src":"6369:15:50"},"nodeType":"YulExpressionStatement","src":"6369:15:50"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"6263:127:50"},{"body":{"nodeType":"YulBlock","src":"6491:899:50","statements":[{"body":{"nodeType":"YulBlock","src":"6537:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6546:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6549:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6539:6:50"},"nodeType":"YulFunctionCall","src":"6539:12:50"},"nodeType":"YulExpressionStatement","src":"6539:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"6512:7:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"6521:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6508:3:50"},"nodeType":"YulFunctionCall","src":"6508:23:50"},{"kind":"number","nodeType":"YulLiteral","src":"6533:2:50","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6504:3:50"},"nodeType":"YulFunctionCall","src":"6504:32:50"},"nodeType":"YulIf","src":"6501:52:50"},{"nodeType":"YulAssignment","src":"6562:39:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6591:9:50"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"6572:18:50"},"nodeType":"YulFunctionCall","src":"6572:29:50"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"6562:6:50"}]},{"nodeType":"YulVariableDeclaration","src":"6610:46:50","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6641:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"6652:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6637:3:50"},"nodeType":"YulFunctionCall","src":"6637:18:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6624:12:50"},"nodeType":"YulFunctionCall","src":"6624:32:50"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"6614:6:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"6665:28:50","value":{"kind":"number","nodeType":"YulLiteral","src":"6675:18:50","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"6669:2:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"6720:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6729:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6732:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6722:6:50"},"nodeType":"YulFunctionCall","src":"6722:12:50"},"nodeType":"YulExpressionStatement","src":"6722:12:50"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"6708:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"6716:2:50"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6705:2:50"},"nodeType":"YulFunctionCall","src":"6705:14:50"},"nodeType":"YulIf","src":"6702:34:50"},{"nodeType":"YulVariableDeclaration","src":"6745:32:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6759:9:50"},{"name":"offset","nodeType":"YulIdentifier","src":"6770:6:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6755:3:50"},"nodeType":"YulFunctionCall","src":"6755:22:50"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"6749:2:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"6825:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6834:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6837:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6827:6:50"},"nodeType":"YulFunctionCall","src":"6827:12:50"},"nodeType":"YulExpressionStatement","src":"6827:12:50"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"6804:2:50"},{"kind":"number","nodeType":"YulLiteral","src":"6808:4:50","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6800:3:50"},"nodeType":"YulFunctionCall","src":"6800:13:50"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"6815:7:50"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6796:3:50"},"nodeType":"YulFunctionCall","src":"6796:27:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"6789:6:50"},"nodeType":"YulFunctionCall","src":"6789:35:50"},"nodeType":"YulIf","src":"6786:55:50"},{"nodeType":"YulVariableDeclaration","src":"6850:26:50","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"6873:2:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6860:12:50"},"nodeType":"YulFunctionCall","src":"6860:16:50"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"6854:2:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"6899:22:50","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"6901:16:50"},"nodeType":"YulFunctionCall","src":"6901:18:50"},"nodeType":"YulExpressionStatement","src":"6901:18:50"}]},"condition":{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"6891:2:50"},{"name":"_1","nodeType":"YulIdentifier","src":"6895:2:50"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6888:2:50"},"nodeType":"YulFunctionCall","src":"6888:10:50"},"nodeType":"YulIf","src":"6885:36:50"},{"nodeType":"YulVariableDeclaration","src":"6930:17:50","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6944:2:50","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"6940:3:50"},"nodeType":"YulFunctionCall","src":"6940:7:50"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"6934:2:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"6956:23:50","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6976:2:50","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6970:5:50"},"nodeType":"YulFunctionCall","src":"6970:9:50"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"6960:6:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"6988:71:50","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7010:6:50"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"7034:2:50"},{"kind":"number","nodeType":"YulLiteral","src":"7038:4:50","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7030:3:50"},"nodeType":"YulFunctionCall","src":"7030:13:50"},{"name":"_4","nodeType":"YulIdentifier","src":"7045:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7026:3:50"},"nodeType":"YulFunctionCall","src":"7026:22:50"},{"kind":"number","nodeType":"YulLiteral","src":"7050:2:50","type":"","value":"63"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7022:3:50"},"nodeType":"YulFunctionCall","src":"7022:31:50"},{"name":"_4","nodeType":"YulIdentifier","src":"7055:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7018:3:50"},"nodeType":"YulFunctionCall","src":"7018:40:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7006:3:50"},"nodeType":"YulFunctionCall","src":"7006:53:50"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"6992:10:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"7118:22:50","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"7120:16:50"},"nodeType":"YulFunctionCall","src":"7120:18:50"},"nodeType":"YulExpressionStatement","src":"7120:18:50"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"7077:10:50"},{"name":"_1","nodeType":"YulIdentifier","src":"7089:2:50"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"7074:2:50"},"nodeType":"YulFunctionCall","src":"7074:18:50"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"7097:10:50"},{"name":"memPtr","nodeType":"YulIdentifier","src":"7109:6:50"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"7094:2:50"},"nodeType":"YulFunctionCall","src":"7094:22:50"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"7071:2:50"},"nodeType":"YulFunctionCall","src":"7071:46:50"},"nodeType":"YulIf","src":"7068:72:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7156:2:50","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"7160:10:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7149:6:50"},"nodeType":"YulFunctionCall","src":"7149:22:50"},"nodeType":"YulExpressionStatement","src":"7149:22:50"},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7187:6:50"},{"name":"_3","nodeType":"YulIdentifier","src":"7195:2:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7180:6:50"},"nodeType":"YulFunctionCall","src":"7180:18:50"},"nodeType":"YulExpressionStatement","src":"7180:18:50"},{"body":{"nodeType":"YulBlock","src":"7244:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7253:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7256:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7246:6:50"},"nodeType":"YulFunctionCall","src":"7246:12:50"},"nodeType":"YulExpressionStatement","src":"7246:12:50"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"7221:2:50"},{"name":"_3","nodeType":"YulIdentifier","src":"7225:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7217:3:50"},"nodeType":"YulFunctionCall","src":"7217:11:50"},{"kind":"number","nodeType":"YulLiteral","src":"7230:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7213:3:50"},"nodeType":"YulFunctionCall","src":"7213:20:50"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"7235:7:50"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"7210:2:50"},"nodeType":"YulFunctionCall","src":"7210:33:50"},"nodeType":"YulIf","src":"7207:53:50"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7286:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"7294:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7282:3:50"},"nodeType":"YulFunctionCall","src":"7282:15:50"},{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"7303:2:50"},{"kind":"number","nodeType":"YulLiteral","src":"7307:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7299:3:50"},"nodeType":"YulFunctionCall","src":"7299:11:50"},{"name":"_3","nodeType":"YulIdentifier","src":"7312:2:50"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"7269:12:50"},"nodeType":"YulFunctionCall","src":"7269:46:50"},"nodeType":"YulExpressionStatement","src":"7269:46:50"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7339:6:50"},{"name":"_3","nodeType":"YulIdentifier","src":"7347:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7335:3:50"},"nodeType":"YulFunctionCall","src":"7335:15:50"},{"kind":"number","nodeType":"YulLiteral","src":"7352:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7331:3:50"},"nodeType":"YulFunctionCall","src":"7331:24:50"},{"kind":"number","nodeType":"YulLiteral","src":"7357:1:50","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7324:6:50"},"nodeType":"YulFunctionCall","src":"7324:35:50"},"nodeType":"YulExpressionStatement","src":"7324:35:50"},{"nodeType":"YulAssignment","src":"7368:16:50","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"7378:6:50"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"7368:6:50"}]}]},"name":"abi_decode_tuple_t_addresst_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6449:9:50","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"6460:7:50","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"6472:6:50","type":""},{"name":"value1","nodeType":"YulTypedName","src":"6480:6:50","type":""}],"src":"6395:995:50"},{"body":{"nodeType":"YulBlock","src":"7594:209:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7611:9:50"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7626:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"7634:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7622:3:50"},"nodeType":"YulFunctionCall","src":"7622:55:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7604:6:50"},"nodeType":"YulFunctionCall","src":"7604:74:50"},"nodeType":"YulExpressionStatement","src":"7604:74:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7698:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"7709:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7694:3:50"},"nodeType":"YulFunctionCall","src":"7694:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"7714:2:50","type":"","value":"64"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7687:6:50"},"nodeType":"YulFunctionCall","src":"7687:30:50"},"nodeType":"YulExpressionStatement","src":"7687:30:50"},{"nodeType":"YulAssignment","src":"7726:71:50","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"7770:6:50"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7782:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"7793:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7778:3:50"},"nodeType":"YulFunctionCall","src":"7778:18:50"}],"functionName":{"name":"abi_encode_struct_PreparedSetupData","nodeType":"YulIdentifier","src":"7734:35:50"},"nodeType":"YulFunctionCall","src":"7734:63:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7726:4:50"}]}]},"name":"abi_encode_tuple_t_address_t_struct$_PreparedSetupData_$4802_memory_ptr__to_t_address_t_struct$_PreparedSetupData_$4802_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7555:9:50","type":""},{"name":"value1","nodeType":"YulTypedName","src":"7566:6:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"7574:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7585:4:50","type":""}],"src":"7395:408:50"},{"body":{"nodeType":"YulBlock","src":"7942:162:50","statements":[{"nodeType":"YulAssignment","src":"7952:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7964:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"7975:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7960:3:50"},"nodeType":"YulFunctionCall","src":"7960:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7952:4:50"}]},{"nodeType":"YulVariableDeclaration","src":"7987:16:50","value":{"kind":"number","nodeType":"YulLiteral","src":"7997:6:50","type":"","value":"0xffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"7991:2:50","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8019:9:50"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"8034:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"8042:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8030:3:50"},"nodeType":"YulFunctionCall","src":"8030:15:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8012:6:50"},"nodeType":"YulFunctionCall","src":"8012:34:50"},"nodeType":"YulExpressionStatement","src":"8012:34:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8066:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"8077:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8062:3:50"},"nodeType":"YulFunctionCall","src":"8062:18:50"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"8086:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"8094:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8082:3:50"},"nodeType":"YulFunctionCall","src":"8082:15:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8055:6:50"},"nodeType":"YulFunctionCall","src":"8055:43:50"},"nodeType":"YulExpressionStatement","src":"8055:43:50"}]},"name":"abi_encode_tuple_t_rational_0_by_1_t_uint16__to_t_uint16_t_uint16__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7903:9:50","type":""},{"name":"value1","nodeType":"YulTypedName","src":"7914:6:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"7922:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7933:4:50","type":""}],"src":"7808:296:50"},{"body":{"nodeType":"YulBlock","src":"8223:125:50","statements":[{"nodeType":"YulAssignment","src":"8233:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8245:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"8256:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8241:3:50"},"nodeType":"YulFunctionCall","src":"8241:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"8233:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8275:9:50"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"8290:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"8298:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8286:3:50"},"nodeType":"YulFunctionCall","src":"8286:55:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8268:6:50"},"nodeType":"YulFunctionCall","src":"8268:74:50"},"nodeType":"YulExpressionStatement","src":"8268:74:50"}]},"name":"abi_encode_tuple_t_contract$_IDAO_$2538__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8192:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"8203:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"8214:4:50","type":""}],"src":"8109:239:50"},{"body":{"nodeType":"YulBlock","src":"8385:95:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8402:1:50","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8409:3:50","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"8414:10:50","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"8405:3:50"},"nodeType":"YulFunctionCall","src":"8405:20:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8395:6:50"},"nodeType":"YulFunctionCall","src":"8395:31:50"},"nodeType":"YulExpressionStatement","src":"8395:31:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8442:1:50","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"8445:4:50","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8435:6:50"},"nodeType":"YulFunctionCall","src":"8435:15:50"},"nodeType":"YulExpressionStatement","src":"8435:15:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8466:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8469:4:50","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8459:6:50"},"nodeType":"YulFunctionCall","src":"8459:15:50"},"nodeType":"YulExpressionStatement","src":"8459:15:50"}]},"name":"panic_error_0x11","nodeType":"YulFunctionDefinition","src":"8353:127:50"},{"body":{"nodeType":"YulBlock","src":"8534:159:50","statements":[{"nodeType":"YulVariableDeclaration","src":"8544:52:50","value":{"kind":"number","nodeType":"YulLiteral","src":"8554:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"8548:2:50","type":""}]},{"nodeType":"YulAssignment","src":"8605:35:50","value":{"arguments":[{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"8621:1:50"},{"name":"_1","nodeType":"YulIdentifier","src":"8624:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8617:3:50"},"nodeType":"YulFunctionCall","src":"8617:10:50"},{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"8633:1:50"},{"name":"_1","nodeType":"YulIdentifier","src":"8636:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8629:3:50"},"nodeType":"YulFunctionCall","src":"8629:10:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"8613:3:50"},"nodeType":"YulFunctionCall","src":"8613:27:50"},"variableNames":[{"name":"diff","nodeType":"YulIdentifier","src":"8605:4:50"}]},{"body":{"nodeType":"YulBlock","src":"8665:22:50","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"8667:16:50"},"nodeType":"YulFunctionCall","src":"8667:18:50"},"nodeType":"YulExpressionStatement","src":"8667:18:50"}]},"condition":{"arguments":[{"name":"diff","nodeType":"YulIdentifier","src":"8655:4:50"},{"name":"_1","nodeType":"YulIdentifier","src":"8661:2:50"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"8652:2:50"},"nodeType":"YulFunctionCall","src":"8652:12:50"},"nodeType":"YulIf","src":"8649:38:50"}]},"name":"checked_sub_t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"8516:1:50","type":""},{"name":"y","nodeType":"YulTypedName","src":"8519:1:50","type":""}],"returnVariables":[{"name":"diff","nodeType":"YulTypedName","src":"8525:4:50","type":""}],"src":"8485:208:50"},{"body":{"nodeType":"YulBlock","src":"8730:95:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8747:1:50","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8754:3:50","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"8759:10:50","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"8750:3:50"},"nodeType":"YulFunctionCall","src":"8750:20:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8740:6:50"},"nodeType":"YulFunctionCall","src":"8740:31:50"},"nodeType":"YulExpressionStatement","src":"8740:31:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8787:1:50","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"8790:4:50","type":"","value":"0x32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8780:6:50"},"nodeType":"YulFunctionCall","src":"8780:15:50"},"nodeType":"YulExpressionStatement","src":"8780:15:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8811:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8814:4:50","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8804:6:50"},"nodeType":"YulFunctionCall","src":"8804:15:50"},"nodeType":"YulExpressionStatement","src":"8804:15:50"}]},"name":"panic_error_0x32","nodeType":"YulFunctionDefinition","src":"8698:127:50"},{"body":{"nodeType":"YulBlock","src":"8877:187:50","statements":[{"nodeType":"YulVariableDeclaration","src":"8887:52:50","value":{"kind":"number","nodeType":"YulLiteral","src":"8897:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"8891:2:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"8948:29:50","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8967:5:50"},{"name":"_1","nodeType":"YulIdentifier","src":"8974:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8963:3:50"},"nodeType":"YulFunctionCall","src":"8963:14:50"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"8952:7:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"9005:22:50","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"9007:16:50"},"nodeType":"YulFunctionCall","src":"9007:18:50"},"nodeType":"YulExpressionStatement","src":"9007:18:50"}]},"condition":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"8992:7:50"},{"name":"_1","nodeType":"YulIdentifier","src":"9001:2:50"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"8989:2:50"},"nodeType":"YulFunctionCall","src":"8989:15:50"},"nodeType":"YulIf","src":"8986:41:50"},{"nodeType":"YulAssignment","src":"9036:22:50","value":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"9047:7:50"},{"kind":"number","nodeType":"YulLiteral","src":"9056:1:50","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9043:3:50"},"nodeType":"YulFunctionCall","src":"9043:15:50"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"9036:3:50"}]}]},"name":"increment_t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"8859:5:50","type":""}],"returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"8869:3:50","type":""}],"src":"8830:234:50"},{"body":{"nodeType":"YulBlock","src":"9216:190:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9233:9:50"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"9248:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"9256:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"9244:3:50"},"nodeType":"YulFunctionCall","src":"9244:55:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9226:6:50"},"nodeType":"YulFunctionCall","src":"9226:74:50"},"nodeType":"YulExpressionStatement","src":"9226:74:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9320:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"9331:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9316:3:50"},"nodeType":"YulFunctionCall","src":"9316:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"9336:2:50","type":"","value":"64"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9309:6:50"},"nodeType":"YulFunctionCall","src":"9309:30:50"},"nodeType":"YulExpressionStatement","src":"9309:30:50"},{"nodeType":"YulAssignment","src":"9348:52:50","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"9373:6:50"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9385:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"9396:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9381:3:50"},"nodeType":"YulFunctionCall","src":"9381:18:50"}],"functionName":{"name":"abi_encode_bytes","nodeType":"YulIdentifier","src":"9356:16:50"},"nodeType":"YulFunctionCall","src":"9356:44:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"9348:4:50"}]}]},"name":"abi_encode_tuple_t_address_t_bytes_memory_ptr__to_t_address_t_bytes_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9177:9:50","type":""},{"name":"value1","nodeType":"YulTypedName","src":"9188:6:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"9196:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"9207:4:50","type":""}],"src":"9069:337:50"}]},"contents":"{\n { }\n function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n if iszero(eq(value, and(value, shl(224, 0xffffffff)))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 96)\n let pos := headStart\n pos := headStart\n let srcPtr := value0\n let i := 0\n for { } lt(i, 0x03) { i := add(i, 1) }\n {\n mstore(pos, and(mload(srcPtr), 0xff))\n let _1 := 0x20\n pos := add(pos, _1)\n srcPtr := add(srcPtr, _1)\n }\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_decode_address(offset) -> value\n {\n value := calldataload(offset)\n if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n }\n function abi_decode_struct_SetupPayload_calldata(offset, end) -> value\n {\n if slt(sub(end, offset), 96) { revert(0, 0) }\n value := offset\n }\n function abi_decode_tuple_t_addresst_struct$_SetupPayload_$4810_calldata_ptr(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n let offset := calldataload(add(headStart, 32))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n value1 := abi_decode_struct_SetupPayload_calldata(add(headStart, offset), dataEnd)\n }\n function panic_error_0x21()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x21)\n revert(0, 0x24)\n }\n function abi_encodeUpdatedPos_struct_MultiTargetPermission(value0, pos) -> updatedPos\n {\n let _1 := mload(value0)\n if iszero(lt(_1, 3))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x21)\n revert(0, 0x24)\n }\n mstore(pos, _1)\n let memberValue0 := mload(add(value0, 0x20))\n let _2 := 0xffffffffffffffffffffffffffffffffffffffff\n mstore(add(pos, 0x20), and(memberValue0, _2))\n mstore(add(pos, 0x40), and(mload(add(value0, 0x40)), _2))\n mstore(add(pos, 0x60), and(mload(add(value0, 0x60)), _2))\n mstore(add(pos, 0x80), mload(add(value0, 0x80)))\n updatedPos := add(pos, 0xa0)\n }\n function abi_encode_tuple_t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n let _1 := 32\n let tail_1 := add(headStart, _1)\n mstore(headStart, _1)\n let pos := tail_1\n let length := mload(value0)\n mstore(tail_1, length)\n pos := add(headStart, 64)\n let srcPtr := add(value0, _1)\n let i := 0\n for { } lt(i, length) { i := add(i, 1) }\n {\n pos := abi_encodeUpdatedPos_struct_MultiTargetPermission(mload(srcPtr), pos)\n srcPtr := add(srcPtr, _1)\n }\n tail := pos\n }\n function abi_decode_tuple_t_addresst_uint16t_struct$_SetupPayload_$4810_calldata_ptr(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n let value := calldataload(add(headStart, 32))\n if iszero(eq(value, and(value, 0xffff))) { revert(0, 0) }\n value1 := value\n let offset := calldataload(add(headStart, 64))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n value2 := abi_decode_struct_SetupPayload_calldata(add(headStart, offset), dataEnd)\n }\n function abi_encode_bytes(value, pos) -> end\n {\n let length := mload(value)\n mstore(pos, length)\n let i := 0\n for { } lt(i, length) { i := add(i, 0x20) }\n {\n let _1 := 0x20\n mstore(add(add(pos, i), _1), mload(add(add(value, i), _1)))\n }\n mstore(add(add(pos, length), 0x20), 0)\n end := add(add(pos, and(add(length, 31), not(31))), 0x20)\n }\n function abi_encode_struct_PreparedSetupData(value, pos) -> end\n {\n let tail := add(pos, 0x40)\n let memberValue0 := mload(value)\n mstore(pos, 0x40)\n let pos_1 := tail\n let length := mload(memberValue0)\n mstore(tail, length)\n pos_1 := add(pos, 96)\n let _1 := 0x20\n let srcPtr := add(memberValue0, _1)\n let i := 0\n for { } lt(i, length) { i := add(i, 1) }\n {\n mstore(pos_1, and(mload(srcPtr), 0xffffffffffffffffffffffffffffffffffffffff))\n pos_1 := add(pos_1, _1)\n srcPtr := add(srcPtr, _1)\n }\n let memberValue0_1 := mload(add(value, _1))\n mstore(add(pos, _1), sub(pos_1, pos))\n let pos_2 := pos_1\n let length_1 := mload(memberValue0_1)\n mstore(pos_1, length_1)\n pos_2 := add(pos_1, _1)\n let srcPtr_1 := add(memberValue0_1, _1)\n let i_1 := 0\n for { } lt(i_1, length_1) { i_1 := add(i_1, 1) }\n {\n pos_2 := abi_encodeUpdatedPos_struct_MultiTargetPermission(mload(srcPtr_1), pos_2)\n srcPtr_1 := add(srcPtr_1, _1)\n }\n end := pos_2\n }\n function abi_encode_tuple_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$4802_memory_ptr__to_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$4802_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n {\n mstore(headStart, 64)\n let tail_1 := abi_encode_bytes(value0, add(headStart, 64))\n mstore(add(headStart, 32), sub(tail_1, headStart))\n tail := abi_encode_struct_PreparedSetupData(value1, tail_1)\n }\n function panic_error_0x41()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function abi_decode_tuple_t_addresst_bytes_memory_ptr(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n let offset := calldataload(add(headStart, 32))\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n let _2 := add(headStart, offset)\n if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n let _3 := calldataload(_2)\n if gt(_3, _1) { panic_error_0x41() }\n let _4 := not(31)\n let memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n mstore(memPtr, _3)\n if gt(add(add(_2, _3), 32), dataEnd) { revert(0, 0) }\n calldatacopy(add(memPtr, 32), add(_2, 32), _3)\n mstore(add(add(memPtr, _3), 32), 0)\n value1 := memPtr\n }\n function abi_encode_tuple_t_address_t_struct$_PreparedSetupData_$4802_memory_ptr__to_t_address_t_struct$_PreparedSetupData_$4802_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n {\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n mstore(add(headStart, 32), 64)\n tail := abi_encode_struct_PreparedSetupData(value1, add(headStart, 64))\n }\n function abi_encode_tuple_t_rational_0_by_1_t_uint16__to_t_uint16_t_uint16__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n let _1 := 0xffff\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n }\n function abi_encode_tuple_t_contract$_IDAO_$2538__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function panic_error_0x11()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n function checked_sub_t_uint160(x, y) -> diff\n {\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n diff := sub(and(x, _1), and(y, _1))\n if gt(diff, _1) { panic_error_0x11() }\n }\n function panic_error_0x32()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n function increment_t_uint160(value) -> ret\n {\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n let value_1 := and(value, _1)\n if eq(value_1, _1) { panic_error_0x11() }\n ret := add(value_1, 1)\n }\n function abi_encode_tuple_t_address_t_bytes_memory_ptr__to_t_address_t_bytes_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n {\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n mstore(add(headStart, 32), 64)\n tail := abi_encode_bytes(value1, add(headStart, 64))\n }\n}","id":50,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{"4977":[{"length":32,"start":210},{"length":32,"start":723}]},"linkReferences":{},"object":"60806040523480156200001157600080fd5b50600436106200007b5760003560e01c80639cb0a12411620000565780639cb0a12414620000fd578063a8a9c29e1462000123578063f10832f1146200014a57600080fd5b806301ffc9a714620000805780632ae9c60014620000ac5780635c60da1b14620000c5575b600080fd5b6200009762000091366004620005f8565b62000171565b60405190151581526020015b60405180910390f35b620000b6620001c4565b604051620000a3919062000624565b6040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152602001620000a3565b620001146200010e3660046200068a565b620001f0565b604051620000a391906200075b565b6200013a62000134366004620007a8565b62000208565b604051620000a3929190620008f7565b620001616200015b3660046200093f565b6200024f565b604051620000a392919062000a0d565b60006001600160e01b0319821663099718b560e41b1480620001a257506001600160e01b03198216621574e360e91b145b80620001be57506301ffc9a760e01b6001600160e01b03198316145b92915050565b620001ce620005cc565b5060408051606081018252600181526004602082015260009181019190915290565b606062000201600060018062000333565b9392505050565b606062000228604051806040016040528060608152602001606081525090565b60405163098990c560e11b8152600060048201526001602482015260440160405180910390fd5b60006200026f604051806040016040528060608152602001606081525090565b6040516001600160a01b038516602482015260009060440160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663189acdbd60e31b17905290506200030581620002f57f000000000000000000000000000000000000000000000000000000000000000090565b6001600160a01b031690620004cc565b925062000313600162000508565b825262000324600060018162000333565b60208301525090939092509050565b6060826001600160a01b0316846001600160a01b031611156200036957604051633a4013cd60e21b815260040160405180910390fd5b62000375848462000a4f565b6001600160a01b031667ffffffffffffffff81111562000399576200039962000929565b604051908082528060200260200182016040528015620003f457816020015b6040805160a081018252600080825260208083018290529282018190526060820181905260808201528252600019909201910181620003b85790505b509050835b836001600160a01b0316816001600160a01b03161015620004c4576040518060a00160405280846002811115620004345762000434620006de565b81526001600160a01b038316602082018190526040820152600060608201527fa280eec51ab8e1bc4b6b0c1b7f1bde785761b787a49db404e3e9338ed9b016ef6080909101528262000487878462000a4f565b6001600160a01b031681518110620004a357620004a362000a79565b60200260200101819052508080620004bb9062000a8f565b915050620003f9565b509392505050565b60008282604051620004de90620005ea565b620004eb92919062000ab8565b604051809103906000f080158015620004c4573d6000803e3d6000fd5b6060816001600160a01b031667ffffffffffffffff8111156200052f576200052f62000929565b60405190808252806020026020018201604052801562000559578160200160208202803683370190505b50905060005b826001600160a01b0316816001600160a01b03161015620005c6578082826001600160a01b03168151811062000599576200059962000a79565b6001600160a01b039092166020928302919091019091015280620005bd8162000a8f565b9150506200055f565b50919050565b60405180606001604052806003906020820280368337509192915050565b6106fe8062000add83390190565b6000602082840312156200060b57600080fd5b81356001600160e01b0319811681146200020157600080fd5b60608101818360005b60038110156200065157815160ff168352602092830192909101906001016200062d565b50505092915050565b80356001600160a01b03811681146200067257600080fd5b919050565b600060608284031215620005c657600080fd5b600080604083850312156200069e57600080fd5b620006a9836200065a565b9150602083013567ffffffffffffffff811115620006c657600080fd5b620006d48582860162000677565b9150509250929050565b634e487b7160e01b600052602160045260246000fd5b60008151600381106200071757634e487b7160e01b600052602160045260246000fd5b8352506020818101516001600160a01b0390811691840191909152604080830151821690840152606080830151909116908301526080908101519082015260a00190565b6020808252825182820181905260009190848201906040850190845b818110156200079c576200078d838551620006f4565b93850193925060010162000777565b50909695505050505050565b600080600060608486031215620007be57600080fd5b620007c9846200065a565b9250602084013561ffff81168114620007e157600080fd5b9150604084013567ffffffffffffffff811115620007fe57600080fd5b6200080c8682870162000677565b9150509250925092565b6000815180845260005b818110156200083e5760208185018101518683018201520162000820565b506000602082860101526020601f19601f83011685010191505092915050565b805160408084528151908401819052600091602091908201906060860190845b81811015620008a55783516001600160a01b0316835292840192918401916001016200087e565b50508483015186820387850152805180835290840192506000918401905b80831015620008ec57620008d9828551620006f4565b91508484019350600183019250620008c3565b509695505050505050565b6040815260006200090c604083018562000816565b82810360208401526200092081856200085e565b95945050505050565b634e487b7160e01b600052604160045260246000fd5b600080604083850312156200095357600080fd5b6200095e836200065a565b9150602083013567ffffffffffffffff808211156200097c57600080fd5b818501915085601f8301126200099157600080fd5b813581811115620009a657620009a662000929565b604051601f8201601f19908116603f01168101908382118183101715620009d157620009d162000929565b81604052828152886020848701011115620009eb57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6001600160a01b038316815260406020820152600062000a3160408301846200085e565b949350505050565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0382811682821603908082111562000a725762000a7262000a39565b5092915050565b634e487b7160e01b600052603260045260246000fd5b60006001600160a01b0380831681810362000aae5762000aae62000a39565b6001019392505050565b6001600160a01b038316815260406020820152600062000a3160408301846200081656fe60806040526040516106fe3803806106fe83398101604081905261002291610319565b61002e82826000610035565b5050610436565b61003e8361006b565b60008251118061004b5750805b156100665761006483836100ab60201b6100291760201c565b505b505050565b610074816100d7565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606100d083836040518060600160405280602781526020016106d7602791396101a9565b9392505050565b6100ea8161022260201b6100551760201c565b6101515760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b806101887f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61023160201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6060600080856001600160a01b0316856040516101c691906103e7565b600060405180830381855af49150503d8060008114610201576040519150601f19603f3d011682016040523d82523d6000602084013e610206565b606091505b50909250905061021886838387610234565b9695505050505050565b6001600160a01b03163b151590565b90565b606083156102a357825160000361029c576001600160a01b0385163b61029c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610148565b50816102ad565b6102ad83836102b5565b949350505050565b8151156102c55781518083602001fd5b8060405162461bcd60e51b81526004016101489190610403565b634e487b7160e01b600052604160045260246000fd5b60005b838110156103105781810151838201526020016102f8565b50506000910152565b6000806040838503121561032c57600080fd5b82516001600160a01b038116811461034357600080fd5b60208401519092506001600160401b038082111561036057600080fd5b818501915085601f83011261037457600080fd5b815181811115610386576103866102df565b604051601f8201601f19908116603f011681019083821181831017156103ae576103ae6102df565b816040528281528860208487010111156103c757600080fd5b6103d88360208301602088016102f5565b80955050505050509250929050565b600082516103f98184602087016102f5565b9190910192915050565b60208152600082518060208401526104228160408501602087016102f5565b601f01601f19169190910160400192915050565b610292806104456000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b61009f565b565b606061004e838360405180606001604052806027815260200161025f602791396100c3565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e8080156100be573d6000f35b3d6000fd5b6060600080856001600160a01b0316856040516100e0919061020f565b600060405180830381855af49150503d806000811461011b576040519150601f19603f3d011682016040523d82523d6000602084013e610120565b606091505b50915091506101318683838761013b565b9695505050505050565b606083156101af5782516000036101a8576001600160a01b0385163b6101a85760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b50816101b9565b6101b983836101c1565b949350505050565b8151156101d15781518083602001fd5b8060405162461bcd60e51b815260040161019f919061022b565b60005b838110156102065781810151838201526020016101ee565b50506000910152565b600082516102218184602087016101eb565b9190910192915050565b602081526000825180602084015261024a8160408501602087016101eb565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH3 0x7B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9CB0A124 GT PUSH3 0x56 JUMPI DUP1 PUSH4 0x9CB0A124 EQ PUSH3 0xFD JUMPI DUP1 PUSH4 0xA8A9C29E EQ PUSH3 0x123 JUMPI DUP1 PUSH4 0xF10832F1 EQ PUSH3 0x14A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH3 0x80 JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH3 0xAC JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH3 0xC5 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x97 PUSH3 0x91 CALLDATASIZE PUSH1 0x4 PUSH3 0x5F8 JUMP JUMPDEST PUSH3 0x171 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0xB6 PUSH3 0x1C4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0xA3 SWAP2 SWAP1 PUSH3 0x624 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH3 0xA3 JUMP JUMPDEST PUSH3 0x114 PUSH3 0x10E CALLDATASIZE PUSH1 0x4 PUSH3 0x68A JUMP JUMPDEST PUSH3 0x1F0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0xA3 SWAP2 SWAP1 PUSH3 0x75B JUMP JUMPDEST PUSH3 0x13A PUSH3 0x134 CALLDATASIZE PUSH1 0x4 PUSH3 0x7A8 JUMP JUMPDEST PUSH3 0x208 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0xA3 SWAP3 SWAP2 SWAP1 PUSH3 0x8F7 JUMP JUMPDEST PUSH3 0x161 PUSH3 0x15B CALLDATASIZE PUSH1 0x4 PUSH3 0x93F JUMP JUMPDEST PUSH3 0x24F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0xA3 SWAP3 SWAP2 SWAP1 PUSH3 0xA0D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x99718B5 PUSH1 0xE4 SHL EQ DUP1 PUSH3 0x1A2 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH3 0x1BE JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH3 0x1CE PUSH3 0x5CC JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH3 0x201 PUSH1 0x0 PUSH1 0x1 DUP1 PUSH3 0x333 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH3 0x228 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x98990C5 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH3 0x26F PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 PUSH1 0x44 ADD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x189ACDBD PUSH1 0xE3 SHL OR SWAP1 MSTORE SWAP1 POP PUSH3 0x305 DUP2 PUSH3 0x2F5 PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH3 0x4CC JUMP JUMPDEST SWAP3 POP PUSH3 0x313 PUSH1 0x1 PUSH3 0x508 JUMP JUMPDEST DUP3 MSTORE PUSH3 0x324 PUSH1 0x0 PUSH1 0x1 DUP2 PUSH3 0x333 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP SWAP1 SWAP4 SWAP1 SWAP3 POP SWAP1 POP JUMP JUMPDEST PUSH1 0x60 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH3 0x369 JUMPI PUSH1 0x40 MLOAD PUSH4 0x3A4013CD PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0x375 DUP5 DUP5 PUSH3 0xA4F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x399 JUMPI PUSH3 0x399 PUSH3 0x929 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH3 0x3F4 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD DUP3 SWAP1 MSTORE SWAP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 DUP3 ADD MSTORE DUP3 MSTORE PUSH1 0x0 NOT SWAP1 SWAP3 ADD SWAP2 ADD DUP2 PUSH3 0x3B8 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP DUP4 JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT ISZERO PUSH3 0x4C4 JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 DUP5 PUSH1 0x2 DUP2 GT ISZERO PUSH3 0x434 JUMPI PUSH3 0x434 PUSH3 0x6DE JUMP JUMPDEST DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x60 DUP3 ADD MSTORE PUSH32 0xA280EEC51AB8E1BC4B6B0C1B7F1BDE785761B787A49DB404E3E9338ED9B016EF PUSH1 0x80 SWAP1 SWAP2 ADD MSTORE DUP3 PUSH3 0x487 DUP8 DUP5 PUSH3 0xA4F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MLOAD DUP2 LT PUSH3 0x4A3 JUMPI PUSH3 0x4A3 PUSH3 0xA79 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP DUP1 DUP1 PUSH3 0x4BB SWAP1 PUSH3 0xA8F JUMP JUMPDEST SWAP2 POP POP PUSH3 0x3F9 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH3 0x4DE SWAP1 PUSH3 0x5EA JUMP JUMPDEST PUSH3 0x4EB SWAP3 SWAP2 SWAP1 PUSH3 0xAB8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH3 0x4C4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x60 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x52F JUMPI PUSH3 0x52F PUSH3 0x929 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH3 0x559 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT ISZERO PUSH3 0x5C6 JUMPI DUP1 DUP3 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MLOAD DUP2 LT PUSH3 0x599 JUMPI PUSH3 0x599 PUSH3 0xA79 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE DUP1 PUSH3 0x5BD DUP2 PUSH3 0xA8F JUMP JUMPDEST SWAP2 POP POP PUSH3 0x55F JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x6FE DUP1 PUSH3 0xADD DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x60B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH3 0x201 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH3 0x651 JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH3 0x62D JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x672 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x5C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x69E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x6A9 DUP4 PUSH3 0x65A JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x6C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x6D4 DUP6 DUP3 DUP7 ADD PUSH3 0x677 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP2 MLOAD PUSH1 0x3 DUP2 LT PUSH3 0x717 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP4 MSTORE POP PUSH1 0x20 DUP2 DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP1 DUP4 ADD MLOAD DUP3 AND SWAP1 DUP5 ADD MSTORE PUSH1 0x60 DUP1 DUP4 ADD MLOAD SWAP1 SWAP2 AND SWAP1 DUP4 ADD MSTORE PUSH1 0x80 SWAP1 DUP2 ADD MLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x79C JUMPI PUSH3 0x78D DUP4 DUP6 MLOAD PUSH3 0x6F4 JUMP JUMPDEST SWAP4 DUP6 ADD SWAP4 SWAP3 POP PUSH1 0x1 ADD PUSH3 0x777 JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH3 0x7BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x7C9 DUP5 PUSH3 0x65A JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH3 0x7E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x7FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x80C DUP7 DUP3 DUP8 ADD PUSH3 0x677 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x83E JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD DUP3 ADD MSTORE ADD PUSH3 0x820 JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x20 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x20 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x40 DUP1 DUP5 MSTORE DUP2 MLOAD SWAP1 DUP5 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x20 SWAP2 SWAP1 DUP3 ADD SWAP1 PUSH1 0x60 DUP7 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x8A5 JUMPI DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH3 0x87E JUMP JUMPDEST POP POP DUP5 DUP4 ADD MLOAD DUP7 DUP3 SUB DUP8 DUP6 ADD MSTORE DUP1 MLOAD DUP1 DUP4 MSTORE SWAP1 DUP5 ADD SWAP3 POP PUSH1 0x0 SWAP2 DUP5 ADD SWAP1 JUMPDEST DUP1 DUP4 LT ISZERO PUSH3 0x8EC JUMPI PUSH3 0x8D9 DUP3 DUP6 MLOAD PUSH3 0x6F4 JUMP JUMPDEST SWAP2 POP DUP5 DUP5 ADD SWAP4 POP PUSH1 0x1 DUP4 ADD SWAP3 POP PUSH3 0x8C3 JUMP JUMPDEST POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 PUSH3 0x90C PUSH1 0x40 DUP4 ADD DUP6 PUSH3 0x816 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 ADD MSTORE PUSH3 0x920 DUP2 DUP6 PUSH3 0x85E JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x953 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x95E DUP4 PUSH3 0x65A JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH3 0x97C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x991 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH3 0x9A6 JUMPI PUSH3 0x9A6 PUSH3 0x929 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH3 0x9D1 JUMPI PUSH3 0x9D1 PUSH3 0x929 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH3 0x9EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH3 0xA31 PUSH1 0x40 DUP4 ADD DUP5 PUSH3 0x85E JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND DUP3 DUP3 AND SUB SWAP1 DUP1 DUP3 GT ISZERO PUSH3 0xA72 JUMPI PUSH3 0xA72 PUSH3 0xA39 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND DUP2 DUP2 SUB PUSH3 0xAAE JUMPI PUSH3 0xAAE PUSH3 0xA39 JUMP JUMPDEST PUSH1 0x1 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH3 0xA31 PUSH1 0x40 DUP4 ADD DUP5 PUSH3 0x816 JUMP INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH2 0x6FE CODESIZE SUB DUP1 PUSH2 0x6FE DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x22 SWAP2 PUSH2 0x319 JUMP JUMPDEST PUSH2 0x2E DUP3 DUP3 PUSH1 0x0 PUSH2 0x35 JUMP JUMPDEST POP POP PUSH2 0x436 JUMP JUMPDEST PUSH2 0x3E DUP4 PUSH2 0x6B JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD GT DUP1 PUSH2 0x4B JUMPI POP DUP1 JUMPDEST ISZERO PUSH2 0x66 JUMPI PUSH2 0x64 DUP4 DUP4 PUSH2 0xAB PUSH1 0x20 SHL PUSH2 0x29 OR PUSH1 0x20 SHR JUMP JUMPDEST POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x74 DUP2 PUSH2 0xD7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xD0 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x6D7 PUSH1 0x27 SWAP2 CODECOPY PUSH2 0x1A9 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xEA DUP2 PUSH2 0x222 PUSH1 0x20 SHL PUSH2 0x55 OR PUSH1 0x20 SHR JUMP JUMPDEST PUSH2 0x151 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313936373A206E657720696D706C656D656E746174696F6E206973206E PUSH1 0x44 DUP3 ADD MSTORE PUSH13 0x1BDD08184818DBDB9D1C9858DD PUSH1 0x9A SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH2 0x188 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC PUSH1 0x0 SHL PUSH2 0x231 PUSH1 0x20 SHL PUSH2 0x64 OR PUSH1 0x20 SHR JUMP JUMPDEST DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0x1C6 SWAP2 SWAP1 PUSH2 0x3E7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x201 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x206 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x218 DUP7 DUP4 DUP4 DUP8 PUSH2 0x234 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x2A3 JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0x29C JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0x29C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x148 JUMP JUMPDEST POP DUP2 PUSH2 0x2AD JUMP JUMPDEST PUSH2 0x2AD DUP4 DUP4 PUSH2 0x2B5 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x2C5 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x148 SWAP2 SWAP1 PUSH2 0x403 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x310 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2F8 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x32C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x343 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x360 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x374 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x386 JUMPI PUSH2 0x386 PUSH2 0x2DF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x3AE JUMPI PUSH2 0x3AE PUSH2 0x2DF JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x3C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3D8 DUP4 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x2F5 JUMP JUMPDEST DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x3F9 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x2F5 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x422 DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x2F5 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x292 DUP1 PUSH2 0x445 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLDATASIZE PUSH2 0x13 JUMPI PUSH2 0x11 PUSH2 0x17 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x11 JUMPDEST PUSH2 0x27 PUSH2 0x22 PUSH2 0x67 JUMP JUMPDEST PUSH2 0x9F JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x60 PUSH2 0x4E DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x25F PUSH1 0x27 SWAP2 CODECOPY PUSH2 0xC3 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9A PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 DUP1 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE PUSH1 0x0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH2 0xBE JUMPI RETURNDATASIZE PUSH1 0x0 RETURN JUMPDEST RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0xE0 SWAP2 SWAP1 PUSH2 0x20F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x11B JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x120 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x131 DUP7 DUP4 DUP4 DUP8 PUSH2 0x13B JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x1AF JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0x1A8 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0x1A8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP DUP2 PUSH2 0x1B9 JUMP JUMPDEST PUSH2 0x1B9 DUP4 DUP4 PUSH2 0x1C1 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x1D1 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x19F SWAP2 SWAP1 PUSH2 0x22B JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x206 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1EE JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x221 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x1EB JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x24A DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x1EB JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A164 PUSH20 0x6F6C6343000811000A416464726573733A206C6F PUSH24 0x2D6C6576656C2064656C65676174652063616C6C20666169 PUSH13 0x6564A164736F6C634300081100 EXP ","sourceMap":"816:1588:32:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1852:293:46;;;;;;:::i;:::-;;:::i;:::-;;;470:14:50;;463:22;445:41;;433:2;418:18;1852:293:46;;;;;;;;631:98:49;;;:::i;:::-;;;;;;;:::i;2184:94:46:-;;;-1:-1:-1;;;;;2257:14:46;1167:55:50;1149:74;;1137:2;1122:18;2184:94:46;1003:226:50;2103:299:32;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1757:307::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;1099:509::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;1852:293:46:-;1938:4;-1:-1:-1;;;;;;1973:46:46;;-1:-1:-1;;;1973:46:46;;:112;;-1:-1:-1;;;;;;;2035:50:46;;-1:-1:-1;;;2035:50:46;1973:112;:165;;;-1:-1:-1;;;;;;;;;;937:40:23;;;2101:37:46;1954:184;1852:293;-1:-1:-1;;1852:293:46:o;631:98:49:-;679:15;;:::i;:::-;-1:-1:-1;706:16:49;;;;;;;;714:1;706:16;;717:1;706:16;;;;-1:-1:-1;706:16:49;;;;;;;;631:98::o;2103:299:32:-;2225:56;2333:62;2349:1;965;;2333:15;:62::i;:::-;2319:76;2103:299;-1:-1:-1;;;2103:299:32:o;1757:307::-;1906:12;1920:24;-1:-1:-1;;;;;;;;;;;;;;;;;;;1920:24:32;2001:56;;-1:-1:-1;;;2001:56:32;;2031:1;2001:56;;;8012:34:50;965:1:32;8062:18:50;;;8055:43;7960:18;;2001:56:32;;;;;;;1099:509;1194:14;1210:42;-1:-1:-1;;;;;;;;;;;;;;;;;;;1210:42:32;1288:106;;-1:-1:-1;;;;;1167:55:50;;1288:106:32;;;1149:74:50;1264:21:32;;1122:18:50;;1288:106:32;;;-1:-1:-1;;1288:106:32;;;;;;;;;;;;;;;;-1:-1:-1;;;1288:106:32;;;;-1:-1:-1;1413:42:32;1288:106;1413:16;2257:14:46;;2184:94;1413:16:32;-1:-1:-1;;;;;1413:32:32;;;:42::i;:::-;1404:51;;1493:14;1505:1;1493:11;:14::i;:::-;1465:42;;1549:52;1465:25;1568:1;1465:25;1549:15;:52::i;:::-;1517:29;;;:84;-1:-1:-1;1099:509:32;;1517:17;;-1:-1:-1;1099:509:32;-1:-1:-1;1099:509:32:o;580:666:30:-;699:56;780:8;-1:-1:-1;;;;;767:21:30;:10;-1:-1:-1;;;;;767:21:30;;763:53;;;797:19;;-1:-1:-1;;;797:19:30;;;;;;;;;;;763:53;879:21;890:10;879:8;:21;:::i;:::-;-1:-1:-1;;;;;837:64:30;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;837:64:30;;-1:-1:-1;;837:64:30;;;;;;;;;;;-1:-1:-1;823:78:30;-1:-1:-1;925:10:30;908:336;941:8;-1:-1:-1;;;;;937:12:30;:1;-1:-1:-1;;;;;937:12:30;;908:336;;;996:241;;;;;;;;1057:2;996:241;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;996:241:30;;;;;;;;;;;;-1:-1:-1;996:241:30;;;;1198:28;996:241;;;;;966:11;978:14;982:10;1088:1;978:14;:::i;:::-;-1:-1:-1;;;;;966:27:30;;;;;;;;;:::i;:::-;;;;;;:271;;;;951:3;;;;;:::i;:::-;;;;908:336;;;;580:666;;;;;:::o;1415:222:47:-;1524:17;1599:6;1614:13;1573:56;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;1529:191:30;1577:24;1633:3;-1:-1:-1;;;;;1619:18:30;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1619:18:30;;1609:28;;1649:9;1644:74;1668:3;-1:-1:-1;;;;;1664:7:30;:1;-1:-1:-1;;;;;1664:7:30;;1644:74;;;1709:1;1688:7;1696:1;-1:-1:-1;;;;;1688:10:30;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1688:23:30;;;:10;;;;;;;;;;;:23;1673:3;;;;:::i;:::-;;;;1644:74;;;;1529:191;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::o;14:286:50:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:50;;209:43;;199:71;;266:1;263;256:12;497:501;673:2;658:18;;662:9;753:6;631:4;787:205;801:4;798:1;795:11;787:205;;;864:13;;879:4;860:24;848:37;;908:4;932:12;;;;967:15;;;;821:1;814:9;787:205;;;791:3;;;497:501;;;;:::o;1234:196::-;1302:20;;-1:-1:-1;;;;;1351:54:50;;1341:65;;1331:93;;1420:1;1417;1410:12;1331:93;1234:196;;;:::o;1435:160::-;1500:5;1545:2;1536:6;1531:3;1527:16;1523:25;1520:45;;;1561:1;1558;1551:12;1600:440;1700:6;1708;1761:2;1749:9;1740:7;1736:23;1732:32;1729:52;;;1777:1;1774;1767:12;1729:52;1800:29;1819:9;1800:29;:::i;:::-;1790:39;;1880:2;1869:9;1865:18;1852:32;1907:18;1899:6;1896:30;1893:50;;;1939:1;1936;1929:12;1893:50;1962:72;2026:7;2017:6;2006:9;2002:22;1962:72;:::i;:::-;1952:82;;;1600:440;;;;;:::o;2045:127::-;2106:10;2101:3;2097:20;2094:1;2087:31;2137:4;2134:1;2127:15;2161:4;2158:1;2151:15;2177:696;2252:10;2293:6;2287:13;2326:1;2322:2;2319:9;2309:140;;2371:10;2366:3;2362:20;2359:1;2352:31;2406:4;2403:1;2396:15;2434:4;2431:1;2424:15;2309:140;2458:15;;-1:-1:-1;2520:4:50;2508:17;;;2502:24;-1:-1:-1;;;;;2619:21:50;;;2603:14;;;2596:45;;;;2695:4;2683:17;;;2677:24;2673:33;;2657:14;;;2650:57;2761:4;2749:17;;;2743:24;2739:33;;;2723:14;;;2716:57;2823:4;2811:17;;;2805:24;2789:14;;;2782:48;2862:4;2853:14;;2177:696::o;2878:728::-;3127:2;3179:21;;;3249:13;;3152:18;;;3271:22;;;3098:4;;3127:2;3350:15;;;;3324:2;3309:18;;;3098:4;3393:187;3407:6;3404:1;3401:13;3393:187;;;3463:69;3528:3;3519:6;3513:13;3463:69;:::i;:::-;3555:15;;;;3456:76;-1:-1:-1;3429:1:50;3422:9;3393:187;;;-1:-1:-1;3597:3:50;;2878:728;-1:-1:-1;;;;;;2878:728:50:o;3611:600::-;3719:6;3727;3735;3788:2;3776:9;3767:7;3763:23;3759:32;3756:52;;;3804:1;3801;3794:12;3756:52;3827:29;3846:9;3827:29;:::i;:::-;3817:39;;3906:2;3895:9;3891:18;3878:32;3950:6;3943:5;3939:18;3932:5;3929:29;3919:57;;3972:1;3969;3962:12;3919:57;3995:5;-1:-1:-1;4051:2:50;4036:18;;4023:32;4078:18;4067:30;;4064:50;;;4110:1;4107;4100:12;4064:50;4133:72;4197:7;4188:6;4177:9;4173:22;4133:72;:::i;:::-;4123:82;;;3611:600;;;;;:::o;4216:422::-;4257:3;4295:5;4289:12;4322:6;4317:3;4310:19;4347:1;4357:162;4371:6;4368:1;4365:13;4357:162;;;4433:4;4489:13;;;4485:22;;4479:29;4461:11;;;4457:20;;4450:59;4386:12;4357:162;;;4361:3;4564:1;4557:4;4548:6;4543:3;4539:16;4535:27;4528:38;4627:4;4620:2;4616:7;4611:2;4603:6;4599:15;4595:29;4590:3;4586:39;4582:50;4575:57;;;4216:422;;;;:::o;4643:1162::-;4776:12;;4742:4;4797:17;;;4863:19;;4733:14;;;4891:20;;;4703:3;;4960:4;;4987:21;;;;4938:2;4929:12;;;4703:3;5036:224;5050:6;5047:1;5044:13;5036:224;;;5117:13;;-1:-1:-1;;;;;5113:62:50;5099:77;;5235:15;;;;5198:14;;;;5072:1;5065:9;5036:224;;;-1:-1:-1;;5297:14:50;;;5291:21;5342:15;;;5328:12;;;5321:37;5410:21;;5440:23;;;5520;;;;-1:-1:-1;5563:1:50;;5481:14;;;5573:205;5589:8;5584:3;5581:17;5573:205;;;5653:73;5720:5;5709:8;5703:15;5653:73;:::i;:::-;5644:82;;5765:2;5755:8;5751:17;5739:29;;5617:1;5612:3;5608:11;5601:18;;5573:205;;;-1:-1:-1;5794:5:50;4643:1162;-1:-1:-1;;;;;;4643:1162:50:o;5810:448::-;6055:2;6044:9;6037:21;6018:4;6081:44;6121:2;6110:9;6106:18;6098:6;6081:44;:::i;:::-;6173:9;6165:6;6161:22;6156:2;6145:9;6141:18;6134:50;6201:51;6245:6;6237;6201:51;:::i;:::-;6193:59;5810:448;-1:-1:-1;;;;;5810:448:50:o;6263:127::-;6324:10;6319:3;6315:20;6312:1;6305:31;6355:4;6352:1;6345:15;6379:4;6376:1;6369:15;6395:995;6472:6;6480;6533:2;6521:9;6512:7;6508:23;6504:32;6501:52;;;6549:1;6546;6539:12;6501:52;6572:29;6591:9;6572:29;:::i;:::-;6562:39;;6652:2;6641:9;6637:18;6624:32;6675:18;6716:2;6708:6;6705:14;6702:34;;;6732:1;6729;6722:12;6702:34;6770:6;6759:9;6755:22;6745:32;;6815:7;6808:4;6804:2;6800:13;6796:27;6786:55;;6837:1;6834;6827:12;6786:55;6873:2;6860:16;6895:2;6891;6888:10;6885:36;;;6901:18;;:::i;:::-;6976:2;6970:9;6944:2;7030:13;;-1:-1:-1;;7026:22:50;;;7050:2;7022:31;7018:40;7006:53;;;7074:18;;;7094:22;;;7071:46;7068:72;;;7120:18;;:::i;:::-;7160:10;7156:2;7149:22;7195:2;7187:6;7180:18;7235:7;7230:2;7225;7221;7217:11;7213:20;7210:33;7207:53;;;7256:1;7253;7246:12;7207:53;7312:2;7307;7303;7299:11;7294:2;7286:6;7282:15;7269:46;7357:1;7352:2;7347;7339:6;7335:15;7331:24;7324:35;7378:6;7368:16;;;;;;;6395:995;;;;;:::o;7395:408::-;-1:-1:-1;;;;;7626:6:50;7622:55;7611:9;7604:74;7714:2;7709;7698:9;7694:18;7687:30;7585:4;7734:63;7793:2;7782:9;7778:18;7770:6;7734:63;:::i;:::-;7726:71;7395:408;-1:-1:-1;;;;7395:408:50:o;8353:127::-;8414:10;8409:3;8405:20;8402:1;8395:31;8445:4;8442:1;8435:15;8469:4;8466:1;8459:15;8485:208;-1:-1:-1;;;;;8629:10:50;;;8617;;;8613:27;;8652:12;;;8649:38;;;8667:18;;:::i;:::-;8649:38;8485:208;;;;:::o;8698:127::-;8759:10;8754:3;8750:20;8747:1;8740:31;8790:4;8787:1;8780:15;8814:4;8811:1;8804:15;8830:234;8869:3;-1:-1:-1;;;;;8974:2:50;8967:5;8963:14;9001:2;8992:7;8989:15;8986:41;;9007:18;;:::i;:::-;9056:1;9043:15;;8830:234;-1:-1:-1;;;8830:234:50:o;9069:337::-;-1:-1:-1;;;;;9248:6:50;9244:55;9233:9;9226:74;9336:2;9331;9320:9;9316:18;9309:30;9207:4;9356:44;9396:2;9385:9;9381:18;9373:6;9356:44;:::i"},"gasEstimates":{"creation":{"codeDepositCost":"916600","executionCost":"infinite","totalCost":"infinite"},"external":{"implementation()":"infinite","prepareInstallation(address,bytes)":"infinite","prepareUninstallation(address,(address,address[],bytes))":"infinite","prepareUpdate(address,uint16,(address,address[],bytes))":"660","protocolVersion()":"infinite","supportsInterface(bytes4)":"482"}},"methodIdentifiers":{"implementation()":"5c60da1b","prepareInstallation(address,bytes)":"f10832f1","prepareUninstallation(address,(address,address[],bytes))":"9cb0a124","prepareUpdate(address,uint16,(address,address[],bytes))":"a8a9c29e","protocolVersion()":"2ae9c600","supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ConflictingValues\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"fromBuild\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"thisBuild\",\"type\":\"uint16\"}],\"name\":\"InvalidUpdatePath\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_dao\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"prepareInstallation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"plugin\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address[]\",\"name\":\"helpers\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"enum PermissionLib.Operation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"condition\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PermissionLib.MultiTargetPermission[]\",\"name\":\"permissions\",\"type\":\"tuple[]\"}],\"internalType\":\"struct IPluginSetup.PreparedSetupData\",\"name\":\"preparedSetupData\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_dao\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"plugin\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"currentHelpers\",\"type\":\"address[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IPluginSetup.SetupPayload\",\"name\":\"_payload\",\"type\":\"tuple\"}],\"name\":\"prepareUninstallation\",\"outputs\":[{\"components\":[{\"internalType\":\"enum PermissionLib.Operation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"condition\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PermissionLib.MultiTargetPermission[]\",\"name\":\"permissions\",\"type\":\"tuple[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_dao\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"_fromBuild\",\"type\":\"uint16\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"plugin\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"currentHelpers\",\"type\":\"address[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IPluginSetup.SetupPayload\",\"name\":\"_payload\",\"type\":\"tuple\"}],\"name\":\"prepareUpdate\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address[]\",\"name\":\"helpers\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"enum PermissionLib.Operation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"condition\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PermissionLib.MultiTargetPermission[]\",\"name\":\"permissions\",\"type\":\"tuple[]\"}],\"internalType\":\"struct IPluginSetup.PreparedSetupData\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"protocolVersion\",\"outputs\":[{\"internalType\":\"uint8[3]\",\"name\":\"\",\"type\":\"uint8[3]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"DO NOT USE IN PRODUCTION!\",\"errors\":{\"InvalidUpdatePath(uint16,uint16)\":[{\"params\":{\"fromBuild\":\"The build number to update from.\",\"thisBuild\":\"The build number of this setup to update to.\"}}]},\"kind\":\"dev\",\"methods\":{\"implementation()\":{\"details\":\"The implementation can be instantiated via the `new` keyword, cloned via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)), or proxied via the UUPS proxy pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\",\"returns\":{\"_0\":\"The address of the plugin implementation contract.\"}},\"prepareInstallation(address,bytes)\":{\"params\":{\"_dao\":\"The address of the installing DAO.\",\"_data\":\"The bytes-encoded data containing the input parameters for the installation as specified in the plugin's build metadata JSON file.\"},\"returns\":{\"plugin\":\"The address of the `Plugin` contract being prepared for installation.\",\"preparedSetupData\":\"The deployed plugin's relevant data which consists of helpers and permissions.\"}},\"prepareUninstallation(address,(address,address[],bytes))\":{\"params\":{\"_dao\":\"The address of the uninstalling DAO.\",\"_payload\":\"The relevant data necessary for the `prepareUninstallation`. See above.\"},\"returns\":{\"permissions\":\"The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the uninstalling DAO.\"}},\"prepareUpdate(address,uint16,(address,address[],bytes))\":{\"details\":\"The default implementation for the initial build 1 that reverts because no earlier build exists.\",\"params\":{\"_dao\":\"The address of the updating DAO.\",\"_fromBuild\":\"The build number of the plugin to update from.\",\"_payload\":\"The relevant data necessary for the `prepareUpdate`. See above.\"},\"returns\":{\"_0\":\"The initialization data to be passed to upgradeable contracts when the update is applied in the `PluginSetupProcessor`.\",\"_1\":\"The deployed plugin's relevant data which consists of helpers and permissions.\"}},\"protocolVersion()\":{\"details\":\"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\",\"returns\":{\"_0\":\"Returns the semantic Aragon OSx protocol version number.\"}},\"supportsInterface(bytes4)\":{\"params\":{\"_interfaceId\":\"The ID of the interface.\"},\"returns\":{\"_0\":\"Returns `true` if the interface is supported.\"}}},\"version\":1},\"userdoc\":{\"errors\":{\"InvalidUpdatePath(uint16,uint16)\":[{\"notice\":\"Thrown when an update path is not available, for example, if this is the initial build.\"}]},\"kind\":\"user\",\"methods\":{\"implementation()\":{\"notice\":\"Returns the plugin implementation address.\"},\"prepareInstallation(address,bytes)\":{\"notice\":\"Prepares the installation of a plugin.\"},\"prepareUninstallation(address,(address,address[],bytes))\":{\"notice\":\"Prepares the uninstallation of a plugin.\"},\"prepareUpdate(address,uint16,(address,address[],bytes))\":{\"notice\":\"Prepares the update of a plugin.\"},\"protocolVersion()\":{\"notice\":\"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Checks if this or the parent contract supports an interface by its ID.\"}},\"notice\":\"A mock plugin setup of an upgradeable plugin to be deployed via the UUPS pattern. v1.1 (Release 1, Build 1)\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/mocks/plugin/PluginUUPSUpgradeableSetupMock.sol\":\"PluginUUPSUpgradeableSetupMockBuild1\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/interfaces/IERC1967Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (interfaces/IERC1967.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\\n *\\n * _Available since v4.8.3._\\n */\\ninterface IERC1967Upgradeable {\\n /**\\n * @dev Emitted when the implementation is upgraded.\\n */\\n event Upgraded(address indexed implementation);\\n\\n /**\\n * @dev Emitted when the admin account has changed.\\n */\\n event AdminChanged(address previousAdmin, address newAdmin);\\n\\n /**\\n * @dev Emitted when the beacon is changed.\\n */\\n event BeaconUpgraded(address indexed beacon);\\n}\\n\",\"keccak256\":\"0x47d6e06872b12e72c79d1b5eb55842f860b5fb1207b2317c2358d2766b950a7b\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822ProxiableUpgradeable {\\n /**\\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n * address.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy.\\n */\\n function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../beacon/IBeaconUpgradeable.sol\\\";\\nimport \\\"../../interfaces/IERC1967Upgradeable.sol\\\";\\nimport \\\"../../interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\nimport \\\"../../utils/StorageSlotUpgradeable.sol\\\";\\nimport {Initializable} from \\\"../utils/Initializable.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n */\\nabstract contract ERC1967UpgradeUpgradeable is Initializable, IERC1967Upgradeable {\\n // This is the keccak-256 hash of \\\"eip1967.proxy.rollback\\\" subtracted by 1\\n bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n /**\\n * @dev Storage slot with the address of the current implementation.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n function __ERC1967Upgrade_init() internal onlyInitializing {\\n }\\n\\n function __ERC1967Upgrade_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _getImplementation() internal view returns (address) {\\n return StorageSlotUpgradeable.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 implementation slot.\\n */\\n function _setImplementation(address newImplementation) private {\\n require(AddressUpgradeable.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n StorageSlotUpgradeable.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n }\\n\\n /**\\n * @dev Perform implementation upgrade\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeTo(address newImplementation) internal {\\n _setImplementation(newImplementation);\\n emit Upgraded(newImplementation);\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCall(address newImplementation, bytes memory data, bool forceCall) internal {\\n _upgradeTo(newImplementation);\\n if (data.length > 0 || forceCall) {\\n AddressUpgradeable.functionDelegateCall(newImplementation, data);\\n }\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCallUUPS(address newImplementation, bytes memory data, bool forceCall) internal {\\n // Upgrades from old implementations will perform a rollback test. This test requires the new\\n // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n // this special case will break upgrade paths from old UUPS implementation to new ones.\\n if (StorageSlotUpgradeable.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n _setImplementation(newImplementation);\\n } else {\\n try IERC1822ProxiableUpgradeable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n require(slot == _IMPLEMENTATION_SLOT, \\\"ERC1967Upgrade: unsupported proxiableUUID\\\");\\n } catch {\\n revert(\\\"ERC1967Upgrade: new implementation is not UUPS\\\");\\n }\\n _upgradeToAndCall(newImplementation, data, forceCall);\\n }\\n }\\n\\n /**\\n * @dev Storage slot with the admin of the contract.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _getAdmin() internal view returns (address) {\\n return StorageSlotUpgradeable.getAddressSlot(_ADMIN_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 admin slot.\\n */\\n function _setAdmin(address newAdmin) private {\\n require(newAdmin != address(0), \\\"ERC1967: new admin is the zero address\\\");\\n StorageSlotUpgradeable.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n */\\n function _changeAdmin(address newAdmin) internal {\\n emit AdminChanged(_getAdmin(), newAdmin);\\n _setAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\\n */\\n bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n /**\\n * @dev Returns the current beacon.\\n */\\n function _getBeacon() internal view returns (address) {\\n return StorageSlotUpgradeable.getAddressSlot(_BEACON_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new beacon in the EIP1967 beacon slot.\\n */\\n function _setBeacon(address newBeacon) private {\\n require(AddressUpgradeable.isContract(newBeacon), \\\"ERC1967: new beacon is not a contract\\\");\\n require(\\n AddressUpgradeable.isContract(IBeaconUpgradeable(newBeacon).implementation()),\\n \\\"ERC1967: beacon implementation is not a contract\\\"\\n );\\n StorageSlotUpgradeable.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n }\\n\\n /**\\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n *\\n * Emits a {BeaconUpgraded} event.\\n */\\n function _upgradeBeaconToAndCall(address newBeacon, bytes memory data, bool forceCall) internal {\\n _setBeacon(newBeacon);\\n emit BeaconUpgraded(newBeacon);\\n if (data.length > 0 || forceCall) {\\n AddressUpgradeable.functionDelegateCall(IBeaconUpgradeable(newBeacon).implementation(), data);\\n }\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x7795808e3899c805254e3ae58074b20f799b466e3f43e057e47bedee5fb771f8\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeaconUpgradeable {\\n /**\\n * @dev Must return an address that can be used as a delegate call target.\\n *\\n * {BeaconProxy} will check that this address is a contract.\\n */\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/UUPSUpgradeable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport \\\"../ERC1967/ERC1967UpgradeUpgradeable.sol\\\";\\nimport {Initializable} from \\\"./Initializable.sol\\\";\\n\\n/**\\n * @dev An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an\\n * {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy.\\n *\\n * A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is\\n * reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing\\n * `UUPSUpgradeable` with a custom implementation of upgrades.\\n *\\n * The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism.\\n *\\n * _Available since v4.1._\\n */\\nabstract contract UUPSUpgradeable is Initializable, IERC1822ProxiableUpgradeable, ERC1967UpgradeUpgradeable {\\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable state-variable-assignment\\n address private immutable __self = address(this);\\n\\n /**\\n * @dev Check that the execution is being performed through a delegatecall call and that the execution context is\\n * a proxy contract with an implementation (as defined in ERC1967) pointing to self. This should only be the case\\n * for UUPS and transparent proxies that are using the current contract as their implementation. Execution of a\\n * function through ERC1167 minimal proxies (clones) would not normally pass this test, but is not guaranteed to\\n * fail.\\n */\\n modifier onlyProxy() {\\n require(address(this) != __self, \\\"Function must be called through delegatecall\\\");\\n require(_getImplementation() == __self, \\\"Function must be called through active proxy\\\");\\n _;\\n }\\n\\n /**\\n * @dev Check that the execution is not being performed through a delegate call. This allows a function to be\\n * callable on the implementing contract but not through proxies.\\n */\\n modifier notDelegated() {\\n require(address(this) == __self, \\\"UUPSUpgradeable: must not be called through delegatecall\\\");\\n _;\\n }\\n\\n function __UUPSUpgradeable_init() internal onlyInitializing {\\n }\\n\\n function __UUPSUpgradeable_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the\\n * implementation. It is used to validate the implementation's compatibility when performing an upgrade.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\\n */\\n function proxiableUUID() external view virtual override notDelegated returns (bytes32) {\\n return _IMPLEMENTATION_SLOT;\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy to `newImplementation`.\\n *\\n * Calls {_authorizeUpgrade}.\\n *\\n * Emits an {Upgraded} event.\\n *\\n * @custom:oz-upgrades-unsafe-allow-reachable delegatecall\\n */\\n function upgradeTo(address newImplementation) public virtual onlyProxy {\\n _authorizeUpgrade(newImplementation);\\n _upgradeToAndCallUUPS(newImplementation, new bytes(0), false);\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call\\n * encoded in `data`.\\n *\\n * Calls {_authorizeUpgrade}.\\n *\\n * Emits an {Upgraded} event.\\n *\\n * @custom:oz-upgrades-unsafe-allow-reachable delegatecall\\n */\\n function upgradeToAndCall(address newImplementation, bytes memory data) public payable virtual onlyProxy {\\n _authorizeUpgrade(newImplementation);\\n _upgradeToAndCallUUPS(newImplementation, data, true);\\n }\\n\\n /**\\n * @dev Function that should revert when `msg.sender` is not authorized to upgrade the contract. Called by\\n * {upgradeTo} and {upgradeToAndCall}.\\n *\\n * Normally, this function will use an xref:access.adoc[access control] modifier such as {Ownable-onlyOwner}.\\n *\\n * ```solidity\\n * function _authorizeUpgrade(address) internal override onlyOwner {}\\n * ```\\n */\\n function _authorizeUpgrade(address newImplementation) internal virtual;\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0xefb41f5c1a00249b7a99f0782f8c557865605426a3fb6e5fe9ae334293ae4f33\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n function __Context_init() internal onlyInitializing {\\n }\\n\\n function __Context_init_unchained() internal onlyInitializing {\\n }\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n function _contextSuffixLength() internal view virtual returns (uint256) {\\n return 0;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x75097e35253e7fb282ee4d7f27a80eaacfa759923185bf17302a89cbc059c5ef\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/StorageSlot.sol)\\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```solidity\\n * contract ERC1967 {\\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n * function _getImplementation() internal view returns (address) {\\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n * }\\n *\\n * function _setImplementation(address newImplementation) internal {\\n * require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n * }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._\\n * _Available since v4.9 for `string`, `bytes`._\\n */\\nlibrary StorageSlotUpgradeable {\\n struct AddressSlot {\\n address value;\\n }\\n\\n struct BooleanSlot {\\n bool value;\\n }\\n\\n struct Bytes32Slot {\\n bytes32 value;\\n }\\n\\n struct Uint256Slot {\\n uint256 value;\\n }\\n\\n struct StringSlot {\\n string value;\\n }\\n\\n struct BytesSlot {\\n bytes value;\\n }\\n\\n /**\\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n */\\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n */\\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n */\\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n */\\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` with member `value` located at `slot`.\\n */\\n function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\\n */\\n function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` with member `value` located at `slot`.\\n */\\n function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\\n */\\n function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n}\\n\",\"keccak256\":\"0x07ac95acad040f1fb1f6120dd0aa5f702db69446e95f82613721879d30de0908\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165Upgradeable.sol\\\";\\nimport {Initializable} from \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165Upgradeable is Initializable, IERC165Upgradeable {\\n function __ERC165_init() internal onlyInitializing {\\n }\\n\\n function __ERC165_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165Upgradeable).interfaceId;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0xd90d7723512df65ae417adaf0801042940f0dabd60039ceeaffe34aa5b238da1\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165Upgradeable {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/IERC1967.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (interfaces/IERC1967.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\\n *\\n * _Available since v4.8.3._\\n */\\ninterface IERC1967 {\\n /**\\n * @dev Emitted when the implementation is upgraded.\\n */\\n event Upgraded(address indexed implementation);\\n\\n /**\\n * @dev Emitted when the admin account has changed.\\n */\\n event AdminChanged(address previousAdmin, address newAdmin);\\n\\n /**\\n * @dev Emitted when the beacon is changed.\\n */\\n event BeaconUpgraded(address indexed beacon);\\n}\\n\",\"keccak256\":\"0x3cbef5ebc24b415252e2f8c0c9254555d30d9f085603b4b80d9b5ed20ab87e90\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822Proxiable {\\n /**\\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n * address.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy.\\n */\\n function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/Clones.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/Clones.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev https://eips.ethereum.org/EIPS/eip-1167[EIP 1167] is a standard for\\n * deploying minimal proxy contracts, also known as \\\"clones\\\".\\n *\\n * > To simply and cheaply clone contract functionality in an immutable way, this standard specifies\\n * > a minimal bytecode implementation that delegates all calls to a known, fixed address.\\n *\\n * The library includes functions to deploy a proxy using either `create` (traditional deployment) or `create2`\\n * (salted deterministic deployment). It also includes functions to predict the addresses of clones deployed using the\\n * deterministic method.\\n *\\n * _Available since v3.4._\\n */\\nlibrary Clones {\\n /**\\n * @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`.\\n *\\n * This function uses the create opcode, which should never revert.\\n */\\n function clone(address implementation) internal returns (address instance) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n // Cleans the upper 96 bits of the `implementation` word, then packs the first 3 bytes\\n // of the `implementation` address with the bytecode before the address.\\n mstore(0x00, or(shr(0xe8, shl(0x60, implementation)), 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000))\\n // Packs the remaining 17 bytes of `implementation` with the bytecode after the address.\\n mstore(0x20, or(shl(0x78, implementation), 0x5af43d82803e903d91602b57fd5bf3))\\n instance := create(0, 0x09, 0x37)\\n }\\n require(instance != address(0), \\\"ERC1167: create failed\\\");\\n }\\n\\n /**\\n * @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`.\\n *\\n * This function uses the create2 opcode and a `salt` to deterministically deploy\\n * the clone. Using the same `implementation` and `salt` multiple time will revert, since\\n * the clones cannot be deployed twice at the same address.\\n */\\n function cloneDeterministic(address implementation, bytes32 salt) internal returns (address instance) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n // Cleans the upper 96 bits of the `implementation` word, then packs the first 3 bytes\\n // of the `implementation` address with the bytecode before the address.\\n mstore(0x00, or(shr(0xe8, shl(0x60, implementation)), 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000))\\n // Packs the remaining 17 bytes of `implementation` with the bytecode after the address.\\n mstore(0x20, or(shl(0x78, implementation), 0x5af43d82803e903d91602b57fd5bf3))\\n instance := create2(0, 0x09, 0x37, salt)\\n }\\n require(instance != address(0), \\\"ERC1167: create2 failed\\\");\\n }\\n\\n /**\\n * @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}.\\n */\\n function predictDeterministicAddress(\\n address implementation,\\n bytes32 salt,\\n address deployer\\n ) internal pure returns (address predicted) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n let ptr := mload(0x40)\\n mstore(add(ptr, 0x38), deployer)\\n mstore(add(ptr, 0x24), 0x5af43d82803e903d91602b57fd5bf3ff)\\n mstore(add(ptr, 0x14), implementation)\\n mstore(ptr, 0x3d602d80600a3d3981f3363d3d373d3d3d363d73)\\n mstore(add(ptr, 0x58), salt)\\n mstore(add(ptr, 0x78), keccak256(add(ptr, 0x0c), 0x37))\\n predicted := keccak256(add(ptr, 0x43), 0x55)\\n }\\n }\\n\\n /**\\n * @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}.\\n */\\n function predictDeterministicAddress(\\n address implementation,\\n bytes32 salt\\n ) internal view returns (address predicted) {\\n return predictDeterministicAddress(implementation, salt, address(this));\\n }\\n}\\n\",\"keccak256\":\"0x01f055f5c26ba25d7f83e9aa9ba877fbea4d0bf22227de046ea67494bc932999\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (proxy/ERC1967/ERC1967Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../Proxy.sol\\\";\\nimport \\\"./ERC1967Upgrade.sol\\\";\\n\\n/**\\n * @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an\\n * implementation address that can be changed. This address is stored in storage in the location specified by\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the\\n * implementation behind the proxy.\\n */\\ncontract ERC1967Proxy is Proxy, ERC1967Upgrade {\\n /**\\n * @dev Initializes the upgradeable proxy with an initial implementation specified by `_logic`.\\n *\\n * If `_data` is nonempty, it's used as data in a delegate call to `_logic`. This will typically be an encoded\\n * function call, and allows initializing the storage of the proxy like a Solidity constructor.\\n */\\n constructor(address _logic, bytes memory _data) payable {\\n _upgradeToAndCall(_logic, _data, false);\\n }\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _implementation() internal view virtual override returns (address impl) {\\n return ERC1967Upgrade._getImplementation();\\n }\\n}\\n\",\"keccak256\":\"0xa2b22da3032e50b55f95ec1d13336102d675f341167aa76db571ef7f8bb7975d\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../beacon/IBeacon.sol\\\";\\nimport \\\"../../interfaces/IERC1967.sol\\\";\\nimport \\\"../../interfaces/draft-IERC1822.sol\\\";\\nimport \\\"../../utils/Address.sol\\\";\\nimport \\\"../../utils/StorageSlot.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n */\\nabstract contract ERC1967Upgrade is IERC1967 {\\n // This is the keccak-256 hash of \\\"eip1967.proxy.rollback\\\" subtracted by 1\\n bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n /**\\n * @dev Storage slot with the address of the current implementation.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _getImplementation() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 implementation slot.\\n */\\n function _setImplementation(address newImplementation) private {\\n require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n }\\n\\n /**\\n * @dev Perform implementation upgrade\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeTo(address newImplementation) internal {\\n _setImplementation(newImplementation);\\n emit Upgraded(newImplementation);\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCall(address newImplementation, bytes memory data, bool forceCall) internal {\\n _upgradeTo(newImplementation);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(newImplementation, data);\\n }\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCallUUPS(address newImplementation, bytes memory data, bool forceCall) internal {\\n // Upgrades from old implementations will perform a rollback test. This test requires the new\\n // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n // this special case will break upgrade paths from old UUPS implementation to new ones.\\n if (StorageSlot.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n _setImplementation(newImplementation);\\n } else {\\n try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n require(slot == _IMPLEMENTATION_SLOT, \\\"ERC1967Upgrade: unsupported proxiableUUID\\\");\\n } catch {\\n revert(\\\"ERC1967Upgrade: new implementation is not UUPS\\\");\\n }\\n _upgradeToAndCall(newImplementation, data, forceCall);\\n }\\n }\\n\\n /**\\n * @dev Storage slot with the admin of the contract.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _getAdmin() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_ADMIN_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 admin slot.\\n */\\n function _setAdmin(address newAdmin) private {\\n require(newAdmin != address(0), \\\"ERC1967: new admin is the zero address\\\");\\n StorageSlot.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n */\\n function _changeAdmin(address newAdmin) internal {\\n emit AdminChanged(_getAdmin(), newAdmin);\\n _setAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\\n */\\n bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n /**\\n * @dev Returns the current beacon.\\n */\\n function _getBeacon() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_BEACON_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new beacon in the EIP1967 beacon slot.\\n */\\n function _setBeacon(address newBeacon) private {\\n require(Address.isContract(newBeacon), \\\"ERC1967: new beacon is not a contract\\\");\\n require(\\n Address.isContract(IBeacon(newBeacon).implementation()),\\n \\\"ERC1967: beacon implementation is not a contract\\\"\\n );\\n StorageSlot.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n }\\n\\n /**\\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n *\\n * Emits a {BeaconUpgraded} event.\\n */\\n function _upgradeBeaconToAndCall(address newBeacon, bytes memory data, bool forceCall) internal {\\n _setBeacon(newBeacon);\\n emit BeaconUpgraded(newBeacon);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x3b21ae06bf5957f73fa16754b0669c77b7abd8ba6c072d35c3281d446fdb86c2\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (proxy/Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\\n * be specified by overriding the virtual {_implementation} function.\\n *\\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\\n * different contract through the {_delegate} function.\\n *\\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\\n */\\nabstract contract Proxy {\\n /**\\n * @dev Delegates the current call to `implementation`.\\n *\\n * This function does not return to its internal call site, it will return directly to the external caller.\\n */\\n function _delegate(address implementation) internal virtual {\\n assembly {\\n // Copy msg.data. We take full control of memory in this inline assembly\\n // block because it will not return to Solidity code. We overwrite the\\n // Solidity scratch pad at memory position 0.\\n calldatacopy(0, 0, calldatasize())\\n\\n // Call the implementation.\\n // out and outsize are 0 because we don't know the size yet.\\n let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)\\n\\n // Copy the returned data.\\n returndatacopy(0, 0, returndatasize())\\n\\n switch result\\n // delegatecall returns 0 on error.\\n case 0 {\\n revert(0, returndatasize())\\n }\\n default {\\n return(0, returndatasize())\\n }\\n }\\n }\\n\\n /**\\n * @dev This is a virtual function that should be overridden so it returns the address to which the fallback function\\n * and {_fallback} should delegate.\\n */\\n function _implementation() internal view virtual returns (address);\\n\\n /**\\n * @dev Delegates the current call to the address returned by `_implementation()`.\\n *\\n * This function does not return to its internal call site, it will return directly to the external caller.\\n */\\n function _fallback() internal virtual {\\n _beforeFallback();\\n _delegate(_implementation());\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\\n * function in the contract matches the call data.\\n */\\n fallback() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data\\n * is empty.\\n */\\n receive() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`\\n * call, or as part of the Solidity `fallback` or `receive` functions.\\n *\\n * If overridden should call `super._beforeFallback()`.\\n */\\n function _beforeFallback() internal virtual {}\\n}\\n\",\"keccak256\":\"0xc130fe33f1b2132158531a87734153293f6d07bc263ff4ac90e85da9c82c0e27\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeacon {\\n /**\\n * @dev Must return an address that can be used as a delegate call target.\\n *\\n * {BeaconProxy} will check that this address is a contract.\\n */\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/StorageSlot.sol)\\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```solidity\\n * contract ERC1967 {\\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n * function _getImplementation() internal view returns (address) {\\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n * }\\n *\\n * function _setImplementation(address newImplementation) internal {\\n * require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n * }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._\\n * _Available since v4.9 for `string`, `bytes`._\\n */\\nlibrary StorageSlot {\\n struct AddressSlot {\\n address value;\\n }\\n\\n struct BooleanSlot {\\n bool value;\\n }\\n\\n struct Bytes32Slot {\\n bytes32 value;\\n }\\n\\n struct Uint256Slot {\\n uint256 value;\\n }\\n\\n struct StringSlot {\\n string value;\\n }\\n\\n struct BytesSlot {\\n bytes value;\\n }\\n\\n /**\\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n */\\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n */\\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n */\\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n */\\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` with member `value` located at `slot`.\\n */\\n function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\\n */\\n function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` with member `value` located at `slot`.\\n */\\n function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\\n */\\n function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n}\\n\",\"keccak256\":\"0xf09e68aa0dc6722a25bc46490e8d48ed864466d17313b8a0b254c36b54e49899\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165 is IERC165 {\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165).interfaceId;\\n }\\n}\\n\",\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"src/dao/IDAO.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IDAO\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for DAOs within the Aragon App DAO framework.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IDAO {\\n /// @notice The action struct to be consumed by the DAO's `execute` function resulting in an external call.\\n /// @param to The address to call.\\n /// @param value The native token value to be sent with the call.\\n /// @param data The bytes-encoded function selector and calldata for the call.\\n struct Action {\\n address to;\\n uint256 value;\\n bytes data;\\n }\\n\\n /// @notice Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\\n /// @param _where The address of the contract.\\n /// @param _who The address of a EOA or contract to give the permissions.\\n /// @param _permissionId The permission identifier.\\n /// @param _data The optional data passed to the `PermissionCondition` registered.\\n /// @return Returns true if the address has permission, false if not.\\n function hasPermission(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes memory _data\\n ) external view returns (bool);\\n\\n /// @notice Updates the DAO metadata (e.g., an IPFS hash).\\n /// @param _metadata The IPFS hash of the new metadata object.\\n function setMetadata(bytes calldata _metadata) external;\\n\\n /// @notice Emitted when the DAO metadata is updated.\\n /// @param metadata The IPFS hash of the new metadata object.\\n event MetadataSet(bytes metadata);\\n\\n /// @notice Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted.\\n /// @param _callId The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce.\\n /// @param _actions The array of actions.\\n /// @param _allowFailureMap A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @return The array of results obtained from the executed actions in `bytes`.\\n /// @return The resulting failure map containing the actions have actually failed.\\n function execute(\\n bytes32 _callId,\\n Action[] memory _actions,\\n uint256 _allowFailureMap\\n ) external returns (bytes[] memory, uint256);\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param actor The address of the caller.\\n /// @param callId The ID of the call.\\n /// @param actions The array of actions executed.\\n /// @param allowFailureMap The allow failure map encoding which actions are allowed to fail.\\n /// @param failureMap The failure map encoding which actions have failed.\\n /// @param execResults The array with the results of the executed actions.\\n /// @dev The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce.\\n event Executed(\\n address indexed actor,\\n bytes32 callId,\\n Action[] actions,\\n uint256 allowFailureMap,\\n uint256 failureMap,\\n bytes[] execResults\\n );\\n\\n /// @notice Emitted when a standard callback is registered.\\n /// @param interfaceId The ID of the interface.\\n /// @param callbackSelector The selector of the callback function.\\n /// @param magicNumber The magic number to be registered for the callback function selector.\\n event StandardCallbackRegistered(\\n bytes4 interfaceId,\\n bytes4 callbackSelector,\\n bytes4 magicNumber\\n );\\n\\n /// @notice Deposits (native) tokens to the DAO contract with a reference string.\\n /// @param _token The address of the token or address(0) in case of the native token.\\n /// @param _amount The amount of tokens to deposit.\\n /// @param _reference The reference describing the deposit reason.\\n function deposit(address _token, uint256 _amount, string calldata _reference) external payable;\\n\\n /// @notice Emitted when a token deposit has been made to the DAO.\\n /// @param sender The address of the sender.\\n /// @param token The address of the deposited token.\\n /// @param amount The amount of tokens deposited.\\n /// @param _reference The reference describing the deposit reason.\\n event Deposited(\\n address indexed sender,\\n address indexed token,\\n uint256 amount,\\n string _reference\\n );\\n\\n /// @notice Emitted when a native token deposit has been made to the DAO.\\n /// @dev This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).\\n /// @param sender The address of the sender.\\n /// @param amount The amount of native tokens deposited.\\n event NativeTokenDeposited(address sender, uint256 amount);\\n\\n /// @notice Setter for the trusted forwarder verifying the meta transaction.\\n /// @param _trustedForwarder The trusted forwarder address.\\n function setTrustedForwarder(address _trustedForwarder) external;\\n\\n /// @notice Getter for the trusted forwarder verifying the meta transaction.\\n /// @return The trusted forwarder address.\\n function getTrustedForwarder() external view returns (address);\\n\\n /// @notice Emitted when a new TrustedForwarder is set on the DAO.\\n /// @param forwarder the new forwarder address.\\n event TrustedForwarderSet(address forwarder);\\n\\n /// @notice Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\\n /// @param _hash The hash of the data to be signed.\\n /// @param _signature The signature byte array associated with `_hash`.\\n /// @return Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not.\\n function isValidSignature(bytes32 _hash, bytes memory _signature) external returns (bytes4);\\n\\n /// @notice Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\\n /// @param _interfaceId The ID of the interface.\\n /// @param _callbackSelector The selector of the callback function.\\n /// @param _magicNumber The magic number to be registered for the function signature.\\n function registerStandardCallback(\\n bytes4 _interfaceId,\\n bytes4 _callbackSelector,\\n bytes4 _magicNumber\\n ) external;\\n\\n /// @notice Removed function being left here to not corrupt the IDAO interface ID. Any call will revert.\\n /// @dev Introduced in v1.0.0. Removed in v1.4.0.\\n function setSignatureValidator(address) external;\\n}\\n\",\"keccak256\":\"0xb7f615523c26de042edce98731c658f44a1edb2464387ac1b642c4c69f57128e\",\"license\":\"AGPL-3.0-or-later\"},\"src/mocks/plugin/PluginSetupMockData.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {PermissionLib} from \\\"../../permission/PermissionLib.sol\\\";\\n\\naddress constant NO_CONDITION = address(0);\\n\\nerror ConflictingValues();\\n\\n/// @notice Creates a mock `MultiTargetPermission` array by converting a range of `uint160` values into `address` values.\\n/// @param rangeStart The start of the range.\\n/// @param rangeEnd The end of the range (that is not included).\\n/// @param op The permission operation type.\\n/// @return permissions The mock array of permissions.\\n/// @dev DO NOT USE IN PRODUCTION!\\nfunction mockPermissions(\\n uint160 rangeStart,\\n uint160 rangeEnd,\\n PermissionLib.Operation op\\n) pure returns (PermissionLib.MultiTargetPermission[] memory permissions) {\\n if (rangeStart > rangeEnd) revert ConflictingValues();\\n\\n permissions = new PermissionLib.MultiTargetPermission[](rangeEnd - rangeStart);\\n\\n for (uint160 i = rangeStart; i < rangeEnd; i++) {\\n permissions[i - rangeStart] = PermissionLib.MultiTargetPermission({\\n operation: op,\\n where: address(i),\\n who: address(i),\\n condition: PermissionLib.NO_CONDITION,\\n permissionId: keccak256(\\\"MOCK_PERMISSION\\\")\\n });\\n }\\n}\\n\\n/// @notice Creates a mock array of helper addresses of specified length by converting `uint160` values starting from 0 into `address` values.\\n/// @param len The length of the helper array.\\n/// @return helpers The mock array of helper addresses.\\n/// @dev DO NOT USE IN PRODUCTION!\\nfunction mockHelpers(uint160 len) pure returns (address[] memory helpers) {\\n helpers = new address[](len);\\n\\n for (uint160 i = 0; i < len; i++) {\\n helpers[i] = address(i);\\n }\\n}\\n\",\"keccak256\":\"0x529d1b7ea4c348fe18edf81a044792ca8aa1f6ad9a7d2edfd35e38bf8372abf9\",\"license\":\"AGPL-3.0-or-later\"},\"src/mocks/plugin/PluginUUPSUpgradeableMock.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\n/* solhint-disable one-contract-per-file */\\npragma solidity ^0.8.8;\\n\\nimport {PluginUUPSUpgradeable} from \\\"../../plugin/PluginUUPSUpgradeable.sol\\\";\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice A mock upgradeable plugin to be deployed via the UUPS proxy pattern.\\n/// v1.1 (Release 1, Build 1)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableMockBuild1 is PluginUUPSUpgradeable {\\n uint256 public state1;\\n\\n function initialize(IDAO _dao) external initializer {\\n __PluginUUPSUpgradeable_init(_dao);\\n state1 = 1;\\n }\\n}\\n\\n/// @notice A mock upgradeable plugin to be deployed via the UUPS proxy pattern.\\n/// v1.1 (Release 1, Build 2)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableMockBuild2 is PluginUUPSUpgradeable {\\n uint256 public state1;\\n uint256 public state2;\\n\\n function initialize(IDAO _dao) external reinitializer(2) {\\n __PluginUUPSUpgradeable_init(_dao);\\n state1 = 1;\\n state2 = 2;\\n }\\n\\n function initializeFrom(uint16 _previousBuild) external reinitializer(2) {\\n if (_previousBuild < 2) {\\n state2 = 2;\\n }\\n }\\n}\\n\\n/// @notice A mock upgradeable plugin to be deployed via the UUPS proxy pattern.\\n/// v1.1 (Release 1, Build 3)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableMockBuild3 is PluginUUPSUpgradeable {\\n uint256 public state1;\\n uint256 public state2;\\n uint256 public state3;\\n\\n function initialize(IDAO _dao) external reinitializer(3) {\\n __PluginUUPSUpgradeable_init(_dao);\\n state1 = 1;\\n state2 = 2;\\n state3 = 3;\\n }\\n\\n function initializeFrom(uint16 _previousBuild) external reinitializer(3) {\\n if (_previousBuild < 2) {\\n state2 = 2;\\n }\\n if (_previousBuild < 3) {\\n state3 = 3;\\n }\\n }\\n}\\n\\n/// @notice A mock upgradeable plugin missing an initializer function.\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableMockBad is PluginUUPSUpgradeable {\\n uint256 public state1;\\n\\n function notAnInitializer(IDAO _dao) external {\\n __PluginUUPSUpgradeable_init(_dao);\\n state1 = 1;\\n }\\n}\\n\",\"keccak256\":\"0x2917df3b1da0de27f58cf531afeaa4e6c4285717247cbdd9ecc7880ae5cb9cb0\",\"license\":\"AGPL-3.0-or-later\"},\"src/mocks/plugin/PluginUUPSUpgradeableSetupMock.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\n/* solhint-disable one-contract-per-file */\\npragma solidity ^0.8.8;\\n\\nimport {PermissionLib} from \\\"../../permission/PermissionLib.sol\\\";\\nimport {IPluginSetup} from \\\"../../plugin/setup/IPluginSetup.sol\\\";\\nimport {PluginUpgradeableSetup} from \\\"../../plugin/setup/PluginUpgradeableSetup.sol\\\";\\nimport {ProxyLib} from \\\"../../utils/deployment/ProxyLib.sol\\\";\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\nimport {mockPermissions, mockHelpers} from \\\"./PluginSetupMockData.sol\\\";\\nimport {PluginUUPSUpgradeableMockBuild1, PluginUUPSUpgradeableMockBuild2, PluginUUPSUpgradeableMockBuild3} from \\\"./PluginUUPSUpgradeableMock.sol\\\";\\n\\n/// @notice A mock plugin setup of an upgradeable plugin to be deployed via the UUPS pattern.\\n/// v1.1 (Release 1, Build 1)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableSetupMockBuild1 is PluginUpgradeableSetup {\\n using ProxyLib for address;\\n\\n uint16 internal constant THIS_BUILD = 1;\\n\\n constructor() PluginUpgradeableSetup(address(new PluginUUPSUpgradeableMockBuild1())) {}\\n\\n /// @inheritdoc IPluginSetup\\n function prepareInstallation(\\n address _dao,\\n bytes memory\\n ) public returns (address plugin, PreparedSetupData memory preparedSetupData) {\\n bytes memory initData = abi.encodeCall(\\n PluginUUPSUpgradeableMockBuild1.initialize,\\n (IDAO(_dao))\\n );\\n plugin = implementation().deployUUPSProxy(initData);\\n preparedSetupData.helpers = mockHelpers(1);\\n preparedSetupData.permissions = mockPermissions(0, 1, PermissionLib.Operation.Grant);\\n }\\n\\n /// @inheritdoc IPluginSetup\\n /// @dev The default implementation for the initial build 1 that reverts because no earlier build exists.\\n function prepareUpdate(\\n address _dao,\\n uint16 _fromBuild,\\n SetupPayload calldata _payload\\n ) external pure virtual returns (bytes memory, PreparedSetupData memory) {\\n (_dao, _fromBuild, _payload);\\n revert InvalidUpdatePath({fromBuild: 0, thisBuild: THIS_BUILD});\\n }\\n\\n /// @inheritdoc IPluginSetup\\n function prepareUninstallation(\\n address _dao,\\n SetupPayload calldata _payload\\n ) external pure returns (PermissionLib.MultiTargetPermission[] memory permissions) {\\n (_dao, _payload);\\n permissions = mockPermissions(0, THIS_BUILD, PermissionLib.Operation.Revoke);\\n }\\n}\\n\\n/// @notice A mock plugin setup of an upgradeable plugin to be deployed via the UUPS pattern.\\n/// v1.2 (Release 1, Build 2)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableSetupMockBuild2 is PluginUpgradeableSetup {\\n using ProxyLib for address;\\n\\n uint16 internal constant THIS_BUILD = 2;\\n\\n constructor() PluginUpgradeableSetup(address(new PluginUUPSUpgradeableMockBuild2())) {}\\n\\n /// @inheritdoc IPluginSetup\\n function prepareInstallation(\\n address _dao,\\n bytes memory\\n ) external returns (address plugin, PreparedSetupData memory preparedSetupData) {\\n bytes memory initData = abi.encodeCall(\\n PluginUUPSUpgradeableMockBuild2.initialize,\\n (IDAO(_dao))\\n );\\n plugin = implementation().deployUUPSProxy(initData);\\n preparedSetupData.helpers = mockHelpers(THIS_BUILD);\\n preparedSetupData.permissions = mockPermissions(\\n 0,\\n THIS_BUILD,\\n PermissionLib.Operation.Grant\\n );\\n }\\n\\n /// @inheritdoc IPluginSetup\\n function prepareUpdate(\\n address _dao,\\n uint16 _fromBuild,\\n SetupPayload calldata _payload\\n )\\n external\\n pure\\n override\\n returns (bytes memory initData, PreparedSetupData memory preparedSetupData)\\n {\\n (_dao, _payload);\\n\\n // Update from Build 1\\n if (_fromBuild == 1) {\\n preparedSetupData.helpers = mockHelpers(THIS_BUILD);\\n initData = abi.encodeCall(PluginUUPSUpgradeableMockBuild2.initializeFrom, (_fromBuild));\\n preparedSetupData.permissions = mockPermissions(\\n _fromBuild,\\n THIS_BUILD,\\n PermissionLib.Operation.Grant\\n );\\n }\\n }\\n\\n /// @inheritdoc IPluginSetup\\n function prepareUninstallation(\\n address _dao,\\n SetupPayload calldata _payload\\n ) external pure returns (PermissionLib.MultiTargetPermission[] memory permissions) {\\n (_dao, _payload);\\n permissions = mockPermissions(0, THIS_BUILD, PermissionLib.Operation.Revoke);\\n }\\n}\\n\\n/// @notice A mock plugin setup of an upgradeable plugin to be deployed via the UUPS pattern.\\n/// v1.3 (Release 1, Build 3)\\ncontract PluginUUPSUpgradeableSetupMockBuild3 is PluginUpgradeableSetup {\\n using ProxyLib for address;\\n\\n uint16 internal constant THIS_BUILD = 3;\\n\\n constructor() PluginUpgradeableSetup(address(new PluginUUPSUpgradeableMockBuild3())) {}\\n\\n /// @inheritdoc IPluginSetup\\n function prepareInstallation(\\n address _dao,\\n bytes memory\\n ) external returns (address plugin, PreparedSetupData memory preparedSetupData) {\\n bytes memory initData = abi.encodeCall(\\n PluginUUPSUpgradeableMockBuild3.initialize,\\n (IDAO(_dao))\\n );\\n plugin = implementation().deployUUPSProxy(initData);\\n preparedSetupData.helpers = mockHelpers(THIS_BUILD);\\n preparedSetupData.permissions = mockPermissions(\\n 0,\\n THIS_BUILD,\\n PermissionLib.Operation.Grant\\n );\\n }\\n\\n /// @inheritdoc IPluginSetup\\n function prepareUpdate(\\n address _dao,\\n uint16 _fromBuild,\\n SetupPayload calldata _payload\\n )\\n external\\n pure\\n override\\n returns (bytes memory initData, PreparedSetupData memory preparedSetupData)\\n {\\n (_dao, _payload);\\n\\n // Update from Build 1\\n if (_fromBuild == 1) {\\n preparedSetupData.helpers = mockHelpers(THIS_BUILD);\\n initData = abi.encodeCall(PluginUUPSUpgradeableMockBuild3.initializeFrom, (_fromBuild));\\n preparedSetupData.permissions = mockPermissions(\\n _fromBuild,\\n THIS_BUILD,\\n PermissionLib.Operation.Grant\\n );\\n\\n // If this update path should not be supported, you can revert with an error, e.g.,\\n // revert InvalidUpdatePath({fromBuild: _fromBuild, thisBuild: THIS_BUILD});\\n }\\n\\n // Update from Build 2\\n if (_fromBuild == 2) {\\n preparedSetupData.helpers = mockHelpers(THIS_BUILD);\\n initData = abi.encodeCall(PluginUUPSUpgradeableMockBuild3.initializeFrom, (_fromBuild));\\n preparedSetupData.permissions = mockPermissions(\\n _fromBuild,\\n THIS_BUILD,\\n PermissionLib.Operation.Grant\\n );\\n }\\n }\\n\\n /// @inheritdoc IPluginSetup\\n function prepareUninstallation(\\n address _dao,\\n SetupPayload calldata _payload\\n ) external pure returns (PermissionLib.MultiTargetPermission[] memory permissions) {\\n (_dao, _payload);\\n permissions = mockPermissions(0, THIS_BUILD, PermissionLib.Operation.Revoke);\\n }\\n}\\n\",\"keccak256\":\"0x6be5a7611fe85f0e6e1ea08f42bcce810bc4973da1eaa04c88445b8d9af130ba\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/PermissionLib.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title PermissionLib\\n/// @author Aragon X - 2021-2023\\n/// @notice A library containing objects for permission processing.\\n/// @custom:security-contact sirt@aragon.org\\nlibrary PermissionLib {\\n /// @notice A constant expressing that no condition is applied to a permission.\\n address public constant NO_CONDITION = address(0);\\n\\n /// @notice The types of permission operations available in the `PermissionManager`.\\n /// @param Grant The grant operation setting a permission without a condition.\\n /// @param Revoke The revoke operation removing a permission (that was granted with or without a condition).\\n /// @param GrantWithCondition The grant operation setting a permission with a condition.\\n enum Operation {\\n Grant,\\n Revoke,\\n GrantWithCondition\\n }\\n\\n /// @notice A struct containing the information for a permission to be applied on a single target contract without a condition.\\n /// @param operation The permission operation type.\\n /// @param who The address (EOA or contract) receiving the permission.\\n /// @param permissionId The permission identifier.\\n struct SingleTargetPermission {\\n Operation operation;\\n address who;\\n bytes32 permissionId;\\n }\\n\\n /// @notice A struct containing the information for a permission to be applied on multiple target contracts, optionally, with a condition.\\n /// @param operation The permission operation type.\\n /// @param where The address of the target contract for which `who` receives permission.\\n /// @param who The address (EOA or contract) receiving the permission.\\n /// @param condition The `PermissionCondition` that will be asked for authorization on calls connected to the specified permission identifier.\\n /// @param permissionId The permission identifier.\\n struct MultiTargetPermission {\\n Operation operation;\\n address where;\\n address who;\\n address condition;\\n bytes32 permissionId;\\n }\\n}\\n\",\"keccak256\":\"0x470faf3c4891ebc6420ef6cc09f6098917568ccc79268c90954d1478199b6097\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/DaoAuthorizableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ContextUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\\\";\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\nimport {_auth} from \\\"./auth.sol\\\";\\n\\n/// @title DaoAuthorizableUpgradeable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract contract providing a meta-transaction compatible modifier for upgradeable or cloneable contracts to authorize function calls through an associated DAO.\\n/// @dev Make sure to call `__DaoAuthorizableUpgradeable_init` during initialization of the inheriting contract.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract DaoAuthorizableUpgradeable is ContextUpgradeable {\\n /// @notice The associated DAO managing the permissions of inheriting contracts.\\n IDAO private dao_;\\n\\n /// @notice Initializes the contract by setting the associated DAO.\\n /// @param _dao The associated DAO address.\\n // solhint-disable-next-line func-name-mixedcase\\n function __DaoAuthorizableUpgradeable_init(IDAO _dao) internal onlyInitializing {\\n dao_ = _dao;\\n }\\n\\n /// @notice Returns the DAO contract.\\n /// @return The DAO contract.\\n function dao() public view returns (IDAO) {\\n return dao_;\\n }\\n\\n /// @notice A modifier to make functions on inheriting contracts authorized. Permissions to call the function are checked through the associated DAO's permission manager.\\n /// @param _permissionId The permission identifier required to call the method this modifier is applied to.\\n modifier auth(bytes32 _permissionId) {\\n _auth(dao_, address(this), _msgSender(), _permissionId, _msgData());\\n _;\\n }\\n\\n /// @notice This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain (see [OpenZeppelin's guide about storage gaps](https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps)).\\n uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0x7fac6b01b037ba1cb9d6a22d3f43b0785037dcf496ffb672434d9bf7227d2585\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/auth.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice Thrown if a call is unauthorized in the associated DAO.\\n/// @param dao The associated DAO.\\n/// @param where The context in which the authorization reverted.\\n/// @param who The address (EOA or contract) missing the permission.\\n/// @param permissionId The permission identifier.\\nerror DaoUnauthorized(address dao, address where, address who, bytes32 permissionId);\\n\\n/// @notice A free function checking if a caller is granted permissions on a target contract via a permission identifier that redirects the approval to a `PermissionCondition` if this was specified in the setup.\\n/// @param _where The address of the target contract for which `who` receives permission.\\n/// @param _who The address (EOA or contract) owning the permission.\\n/// @param _permissionId The permission identifier.\\n/// @param _data The optional data passed to the `PermissionCondition` registered.\\n/// @custom:security-contact sirt@aragon.org\\nfunction _auth(\\n IDAO _dao,\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes calldata _data\\n) view {\\n if (!_dao.hasPermission(_where, _who, _permissionId, _data))\\n revert DaoUnauthorized({\\n dao: address(_dao),\\n where: _where,\\n who: _who,\\n permissionId: _permissionId\\n });\\n}\\n\",\"keccak256\":\"0x878764b4f87fe0651fb3798fb9cb87c952f8c6caf6ae79c7f09de84df6c00298\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/IPlugin.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IPlugin\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the traits of a plugin.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IPlugin {\\n enum PluginType {\\n UUPS,\\n Cloneable,\\n Constructable\\n }\\n\\n /// @notice Returns the plugin's type\\n function pluginType() external view returns (PluginType);\\n}\\n\",\"keccak256\":\"0xc57cd0d10b6380ab7f54c713a509e88fd8f4ad9288313a0e8e12b8887817ddfe\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/PluginUUPSUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {UUPSUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\\\";\\nimport {IERC1822ProxiableUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport {ERC165Upgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\\\";\\n\\nimport {IProtocolVersion} from \\\"../utils/versioning/IProtocolVersion.sol\\\";\\nimport {ProtocolVersion} from \\\"../utils/versioning/ProtocolVersion.sol\\\";\\nimport {DaoAuthorizableUpgradeable} from \\\"../permission/auth/DaoAuthorizableUpgradeable.sol\\\";\\nimport {IDAO} from \\\"../dao/IDAO.sol\\\";\\nimport {IPlugin} from \\\"./IPlugin.sol\\\";\\n\\n/// @title PluginUUPSUpgradeable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract, upgradeable contract to inherit from when creating a plugin being deployed via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract PluginUUPSUpgradeable is\\n IPlugin,\\n ERC165Upgradeable,\\n UUPSUpgradeable,\\n DaoAuthorizableUpgradeable,\\n ProtocolVersion\\n{\\n // NOTE: When adding new state variables to the contract, the size of `_gap` has to be adapted below as well.\\n address public target;\\n\\n /// @dev Emitted each time the Target is set.\\n event TargetSet(address indexed previousTarget, address indexed newTarget);\\n\\n /// @notice Disables the initializers on the implementation contract to prevent it from being left uninitialized.\\n /// @custom:oz-upgrades-unsafe-allow constructor\\n constructor() {\\n _disableInitializers();\\n }\\n\\n /// @inheritdoc IPlugin\\n function pluginType() public pure override returns (PluginType) {\\n return PluginType.UUPS;\\n }\\n\\n /// @notice The ID of the permission required to call the `_authorizeUpgrade` function.\\n bytes32 public constant UPGRADE_PLUGIN_PERMISSION_ID = keccak256(\\\"UPGRADE_PLUGIN_PERMISSION\\\");\\n\\n /// @notice Initializes the plugin by storing the associated DAO.\\n /// @param _dao The DAO contract.\\n // solhint-disable-next-line func-name-mixedcase\\n function __PluginUUPSUpgradeable_init(IDAO _dao) internal virtual onlyInitializing {\\n __DaoAuthorizableUpgradeable_init(_dao);\\n }\\n\\n /// @dev Sets the target to a new target (`newTarget`).\\n /// @notice Can only be called by the current owner. TODO\\n function setTarget(address _target) public {\\n address previousTarget = target;\\n target = _target;\\n emit TargetSet(previousTarget, _target);\\n }\\n\\n /// @notice Checks if an interface is supported by this or its parent contract.\\n /// @param _interfaceId The ID of the interface.\\n /// @return Returns `true` if the interface is supported.\\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\\n return\\n _interfaceId == type(IPlugin).interfaceId ||\\n _interfaceId == type(IProtocolVersion).interfaceId ||\\n _interfaceId == type(IERC1822ProxiableUpgradeable).interfaceId ||\\n super.supportsInterface(_interfaceId);\\n }\\n\\n /// @notice Returns the address of the implementation contract in the [proxy storage slot](https://eips.ethereum.org/EIPS/eip-1967) slot the [UUPS proxy](https://eips.ethereum.org/EIPS/eip-1822) is pointing to.\\n /// @return The address of the implementation contract.\\n function implementation() public view returns (address) {\\n return _getImplementation();\\n }\\n\\n /// @notice Forwards the actions to the currently set `target` for the execution.\\n /// @param _callId Identifier for this execution.\\n /// @param _actions actions that will be eventually called.\\n /// @param _allowFailureMap Bitmap-encoded number. TODO:\\n /// @return execResults address of the implementation contract.\\n /// @return failureMap address of the implementation contract.\\n function _execute(\\n bytes32 _callId,\\n IDAO.Action[] calldata _actions,\\n uint256 _allowFailureMap\\n ) internal virtual returns (bytes[] memory execResults, uint256 failureMap) {\\n (execResults, failureMap) = IDAO(target).execute(_callId, _actions, _allowFailureMap);\\n }\\n\\n /// @notice Forwards the actions to the `target` for the execution.\\n /// @param _target Forwards the actions to the specific target.\\n /// @param _callId Identifier for this execution.\\n /// @param _actions actions that will be eventually called.\\n /// @param _allowFailureMap Bitmap-encoded number. TODO:\\n /// @return execResults address of the implementation contract.\\n /// @return failureMap address of the implementation contract.\\n function _execute(\\n address _target,\\n bytes32 _callId,\\n IDAO.Action[] calldata _actions,\\n uint256 _allowFailureMap\\n ) internal virtual returns (bytes[] memory execResults, uint256 failureMap) {\\n (execResults, failureMap) = IDAO(_target).execute(_callId, _actions, _allowFailureMap);\\n }\\n\\n /// @notice Internal method authorizing the upgrade of the contract via the [upgradeability mechanism for UUPS proxies](https://docs.openzeppelin.com/contracts/4.x/api/proxy#UUPSUpgradeable) (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\\n /// @dev The caller must have the `UPGRADE_PLUGIN_PERMISSION_ID` permission.\\n function _authorizeUpgrade(\\n address\\n )\\n internal\\n virtual\\n override\\n auth(UPGRADE_PLUGIN_PERMISSION_ID)\\n // solhint-disable-next-line no-empty-blocks\\n {\\n\\n }\\n\\n /// @notice This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain (see [OpenZeppelin's guide about storage gaps](https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps)).\\n uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0xce1d0126b3ae8c8afc887fba9f49b1cc35f84f1c1d5bf4cadee330c7ae15014f\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/setup/IPluginSetup.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {PermissionLib} from \\\"../../permission/PermissionLib.sol\\\";\\n\\n// solhint-disable-next-line no-unused-import\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @title IPluginSetup\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for a plugin setup contract to be consumed by the `PluginSetupProcessor` for plugin installations, updates, and uninstallations.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IPluginSetup {\\n /// @notice The data associated with a prepared setup.\\n /// @param helpers The address array of helpers (contracts or EOAs) associated with this plugin version after the installation or update.\\n /// @param permissions The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the installing or updating DAO.\\n struct PreparedSetupData {\\n address[] helpers;\\n PermissionLib.MultiTargetPermission[] permissions;\\n }\\n\\n /// @notice The payload for plugin updates and uninstallations containing the existing contracts as well as optional data to be consumed by the plugin setup.\\n /// @param plugin The address of the `Plugin`.\\n /// @param currentHelpers The address array of all current helpers (contracts or EOAs) associated with the plugin to update from.\\n /// @param data The bytes-encoded data containing the input parameters for the preparation of update/uninstall as specified in the corresponding ABI on the version's metadata.\\n struct SetupPayload {\\n address plugin;\\n address[] currentHelpers;\\n bytes data;\\n }\\n\\n /// @notice Prepares the installation of a plugin.\\n /// @param _dao The address of the installing DAO.\\n /// @param _data The bytes-encoded data containing the input parameters for the installation as specified in the plugin's build metadata JSON file.\\n /// @return plugin The address of the `Plugin` contract being prepared for installation.\\n /// @return preparedSetupData The deployed plugin's relevant data which consists of helpers and permissions.\\n function prepareInstallation(\\n address _dao,\\n bytes calldata _data\\n ) external returns (address plugin, PreparedSetupData memory preparedSetupData);\\n\\n /// @notice Prepares the update of a plugin.\\n /// @param _dao The address of the updating DAO.\\n /// @param _fromBuild The build number of the plugin to update from.\\n /// @param _payload The relevant data necessary for the `prepareUpdate`. See above.\\n /// @return initData The initialization data to be passed to upgradeable contracts when the update is applied in the `PluginSetupProcessor`.\\n /// @return preparedSetupData The deployed plugin's relevant data which consists of helpers and permissions.\\n function prepareUpdate(\\n address _dao,\\n uint16 _fromBuild,\\n SetupPayload calldata _payload\\n ) external returns (bytes memory initData, PreparedSetupData memory preparedSetupData);\\n\\n /// @notice Prepares the uninstallation of a plugin.\\n /// @param _dao The address of the uninstalling DAO.\\n /// @param _payload The relevant data necessary for the `prepareUninstallation`. See above.\\n /// @return permissions The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the uninstalling DAO.\\n function prepareUninstallation(\\n address _dao,\\n SetupPayload calldata _payload\\n ) external returns (PermissionLib.MultiTargetPermission[] memory permissions);\\n\\n /// @notice Returns the plugin implementation address.\\n /// @return The address of the plugin implementation contract.\\n /// @dev The implementation can be instantiated via the `new` keyword, cloned via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)), or proxied via the UUPS proxy pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0x21c99995208039ac6ace219b6f273243811dc2aa66399e8e499e43ec30b82fa9\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/setup/PluginUpgradeableSetup.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ERC165} from \\\"@openzeppelin/contracts/utils/introspection/ERC165.sol\\\";\\n\\nimport {IProtocolVersion} from \\\"../../utils/versioning/IProtocolVersion.sol\\\";\\nimport {ProtocolVersion} from \\\"../../utils/versioning/ProtocolVersion.sol\\\";\\nimport {IPluginSetup} from \\\"./IPluginSetup.sol\\\";\\n\\n/// @title PluginUpgradeableSetup\\n/// @author Aragon X - 2022-2024\\n/// @notice An abstract contract to inherit from to implement the plugin setup for upgradeable plugins, i.e, `PluginUUPSUpgradeable` being deployed via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822) and [ERC-1967](https://eips.ethereum.org/EIPS/eip-1967)).\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract PluginUpgradeableSetup is ERC165, IPluginSetup, ProtocolVersion {\\n /// @notice The address of the plugin implementation contract for initial block explorer verification\\n /// and to create [ERC-1967](https://eips.ethereum.org/EIPS/eip-1967) UUPS proxies from.\\n address internal immutable IMPLEMENTATION;\\n\\n /// @notice Thrown when an update path is not available, for example, if this is the initial build.\\n /// @param fromBuild The build number to update from.\\n /// @param thisBuild The build number of this setup to update to.\\n error InvalidUpdatePath(uint16 fromBuild, uint16 thisBuild);\\n\\n /// @notice The contract constructor, that setting the plugin implementation contract.\\n /// @param _implementation The address of the plugin implementation contract.\\n constructor(address _implementation) {\\n IMPLEMENTATION = _implementation;\\n }\\n\\n /// @notice Checks if this or the parent contract supports an interface by its ID.\\n /// @param _interfaceId The ID of the interface.\\n /// @return Returns `true` if the interface is supported.\\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\\n return\\n _interfaceId == type(IPluginSetup).interfaceId ||\\n _interfaceId == type(IProtocolVersion).interfaceId ||\\n super.supportsInterface(_interfaceId);\\n }\\n\\n /// @inheritdoc IPluginSetup\\n function implementation() public view returns (address) {\\n return IMPLEMENTATION;\\n }\\n}\\n\",\"keccak256\":\"0x2842d919d1ecb4fbeb40953128c3da3b36dcf6e91255089e987c2f11ff8d061e\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/deployment/ProxyLib.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ERC1967Proxy} from \\\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol\\\";\\nimport {Clones} from \\\"@openzeppelin/contracts/proxy/Clones.sol\\\";\\nimport {Address} from \\\"@openzeppelin/contracts/utils/Address.sol\\\";\\n\\n/// @title ProxyLib\\n/// @author Aragon X - 2024\\n/// @notice A library containing methods for the deployment of proxies via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)) and minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)).\\n/// @custom:security-contact sirt@aragon.org\\nlibrary ProxyLib {\\n using Address for address;\\n using Clones for address;\\n\\n /// @notice Creates an [ERC-1967](https://eips.ethereum.org/EIPS/eip-1967) UUPS proxy contract pointing to a logic contract and allows to immediately initialize it.\\n /// @param _logic The logic contract the proxy is pointing to.\\n /// @param _initCalldata The initialization data for this contract.\\n /// @return uupsProxy The address of the UUPS proxy contract created.\\n /// @dev If `_initCalldata` is non-empty, it is used in a delegate call to the `_logic` contract. This will typically be an encoded function call initializing the storage of the proxy (see [OpenZeppelin ERC1967Proxy-constructor](https://docs.openzeppelin.com/contracts/4.x/api/proxy#ERC1967Proxy-constructor-address-bytes-)).\\n function deployUUPSProxy(\\n address _logic,\\n bytes memory _initCalldata\\n ) internal returns (address uupsProxy) {\\n uupsProxy = address(new ERC1967Proxy({_logic: _logic, _data: _initCalldata}));\\n }\\n\\n /// @notice Creates an [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167) minimal proxy contract, also known as clones, pointing to a logic contract and allows to immediately initialize it.\\n /// @param _logic The logic contract the proxy is pointing to.\\n /// @param _initCalldata The initialization data for this contract.\\n /// @return minimalProxy The address of the minimal proxy contract created.\\n /// @dev If `_initCalldata` is non-empty, it is used in a call to the clone contract. This will typically be an encoded function call initializing the storage of the contract.\\n function deployMinimalProxy(\\n address _logic,\\n bytes memory _initCalldata\\n ) internal returns (address minimalProxy) {\\n minimalProxy = _logic.clone();\\n if (_initCalldata.length > 0) {\\n minimalProxy.functionCall({data: _initCalldata});\\n }\\n }\\n}\\n\",\"keccak256\":\"0xef0d1790dfa026381c021daa2ec7267357497f58cd4a2fa5c64e72e0dea95acc\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/IProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IProtocolVersion\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the semantic Aragon OSx protocol version number.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IProtocolVersion {\\n /// @notice Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\\n /// @return _version Returns the semantic Aragon OSx protocol version number.\\n /// @dev This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\\n function protocolVersion() external view returns (uint8[3] memory _version);\\n}\\n\",\"keccak256\":\"0x00a4da654d21dc1bdadbdc8bd54bb86c378c56f85e461ccc31303628ea621361\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/ProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IProtocolVersion} from \\\"./IProtocolVersion.sol\\\";\\n\\n/// @title ProtocolVersion\\n/// @author Aragon X - 2023\\n/// @notice An abstract, stateless, non-upgradeable contract providing the current Aragon OSx protocol version number.\\n/// @dev Do not add any new variables to this contract that would shift down storage in the inheritance chain.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract ProtocolVersion is IProtocolVersion {\\n // IMPORTANT: Do not add any storage variable, see the above notice.\\n\\n /// @inheritdoc IProtocolVersion\\n function protocolVersion() public pure returns (uint8[3] memory) {\\n return [1, 4, 0];\\n }\\n}\\n\",\"keccak256\":\"0x3975c937be935f687c6b6b8f379071232681e98cf04b175d72781b819ea52bdb\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"errors":{"InvalidUpdatePath(uint16,uint16)":[{"notice":"Thrown when an update path is not available, for example, if this is the initial build."}]},"kind":"user","methods":{"implementation()":{"notice":"Returns the plugin implementation address."},"prepareInstallation(address,bytes)":{"notice":"Prepares the installation of a plugin."},"prepareUninstallation(address,(address,address[],bytes))":{"notice":"Prepares the uninstallation of a plugin."},"prepareUpdate(address,uint16,(address,address[],bytes))":{"notice":"Prepares the update of a plugin."},"protocolVersion()":{"notice":"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with."},"supportsInterface(bytes4)":{"notice":"Checks if this or the parent contract supports an interface by its ID."}},"notice":"A mock plugin setup of an upgradeable plugin to be deployed via the UUPS pattern. v1.1 (Release 1, Build 1)","version":1}},"PluginUUPSUpgradeableSetupMockBuild2":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"ConflictingValues","type":"error"},{"inputs":[{"internalType":"uint16","name":"fromBuild","type":"uint16"},{"internalType":"uint16","name":"thisBuild","type":"uint16"}],"name":"InvalidUpdatePath","type":"error"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_dao","type":"address"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"prepareInstallation","outputs":[{"internalType":"address","name":"plugin","type":"address"},{"components":[{"internalType":"address[]","name":"helpers","type":"address[]"},{"components":[{"internalType":"enum PermissionLib.Operation","name":"operation","type":"uint8"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"condition","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"internalType":"struct PermissionLib.MultiTargetPermission[]","name":"permissions","type":"tuple[]"}],"internalType":"struct IPluginSetup.PreparedSetupData","name":"preparedSetupData","type":"tuple"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_dao","type":"address"},{"components":[{"internalType":"address","name":"plugin","type":"address"},{"internalType":"address[]","name":"currentHelpers","type":"address[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct IPluginSetup.SetupPayload","name":"_payload","type":"tuple"}],"name":"prepareUninstallation","outputs":[{"components":[{"internalType":"enum PermissionLib.Operation","name":"operation","type":"uint8"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"condition","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"internalType":"struct PermissionLib.MultiTargetPermission[]","name":"permissions","type":"tuple[]"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_dao","type":"address"},{"internalType":"uint16","name":"_fromBuild","type":"uint16"},{"components":[{"internalType":"address","name":"plugin","type":"address"},{"internalType":"address[]","name":"currentHelpers","type":"address[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct IPluginSetup.SetupPayload","name":"_payload","type":"tuple"}],"name":"prepareUpdate","outputs":[{"internalType":"bytes","name":"initData","type":"bytes"},{"components":[{"internalType":"address[]","name":"helpers","type":"address[]"},{"components":[{"internalType":"enum PermissionLib.Operation","name":"operation","type":"uint8"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"condition","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"internalType":"struct PermissionLib.MultiTargetPermission[]","name":"permissions","type":"tuple[]"}],"internalType":"struct IPluginSetup.PreparedSetupData","name":"preparedSetupData","type":"tuple"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"protocolVersion","outputs":[{"internalType":"uint8[3]","name":"","type":"uint8[3]"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"DO NOT USE IN PRODUCTION!","errors":{"InvalidUpdatePath(uint16,uint16)":[{"params":{"fromBuild":"The build number to update from.","thisBuild":"The build number of this setup to update to."}}]},"kind":"dev","methods":{"implementation()":{"details":"The implementation can be instantiated via the `new` keyword, cloned via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)), or proxied via the UUPS proxy pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).","returns":{"_0":"The address of the plugin implementation contract."}},"prepareInstallation(address,bytes)":{"params":{"_dao":"The address of the installing DAO.","_data":"The bytes-encoded data containing the input parameters for the installation as specified in the plugin's build metadata JSON file."},"returns":{"plugin":"The address of the `Plugin` contract being prepared for installation.","preparedSetupData":"The deployed plugin's relevant data which consists of helpers and permissions."}},"prepareUninstallation(address,(address,address[],bytes))":{"params":{"_dao":"The address of the uninstalling DAO.","_payload":"The relevant data necessary for the `prepareUninstallation`. See above."},"returns":{"permissions":"The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the uninstalling DAO."}},"prepareUpdate(address,uint16,(address,address[],bytes))":{"params":{"_dao":"The address of the updating DAO.","_fromBuild":"The build number of the plugin to update from.","_payload":"The relevant data necessary for the `prepareUpdate`. See above."},"returns":{"initData":"The initialization data to be passed to upgradeable contracts when the update is applied in the `PluginSetupProcessor`.","preparedSetupData":"The deployed plugin's relevant data which consists of helpers and permissions."}},"protocolVersion()":{"details":"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.","returns":{"_0":"Returns the semantic Aragon OSx protocol version number."}},"supportsInterface(bytes4)":{"params":{"_interfaceId":"The ID of the interface."},"returns":{"_0":"Returns `true` if the interface is supported."}}},"version":1},"evm":{"bytecode":{"functionDebugData":{"@_3442":{"entryPoint":null,"id":3442,"parameterSlots":0,"returnSlots":0},"@_4995":{"entryPoint":null,"id":4995,"parameterSlots":1,"returnSlots":0}},"generatedSources":[],"linkReferences":{},"object":"60a060405234801561001057600080fd5b5060405161001d9061004b565b604051809103906000f080158015610039573d6000803e3d6000fd5b506001600160a01b0316608052610058565b6113f1806112c683390190565b60805161124d6100796000396000818160d20152610339015261124d6000f3fe60806040523480156200001157600080fd5b50600436106200007b5760003560e01c80639cb0a12411620000565780639cb0a12414620000fd578063a8a9c29e1462000123578063f10832f1146200014a57600080fd5b806301ffc9a714620000805780632ae9c60014620000ac5780635c60da1b14620000c5575b600080fd5b62000097620000913660046200065e565b62000171565b60405190151581526020015b60405180910390f35b620000b6620001c4565b604051620000a391906200068a565b6040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152602001620000a3565b620001146200010e366004620006f0565b620001f0565b604051620000a39190620007c1565b6200013a620001343660046200080e565b62000209565b604051620000a39291906200095d565b620001616200015b366004620009a5565b620002b5565b604051620000a392919062000a73565b60006001600160e01b0319821663099718b560e41b1480620001a257506001600160e01b03198216621574e360e91b145b80620001be57506301ffc9a760e01b6001600160e01b03198316145b92915050565b620001ce62000632565b5060408051606081018252600181526004602082015260009181019190915290565b60606200020260006002600162000399565b9392505050565b606062000229604051806040016040528060608152602001606081525090565b8361ffff16600103620002ad5762000242600262000532565b815260405161ffff8516602482015260440160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166239a8c560e41b1790529150620002a761ffff85166002600062000399565b60208201525b935093915050565b6000620002d5604051806040016040528060608152602001606081525090565b6040516001600160a01b038516602482015260009060440160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663189acdbd60e31b17905290506200036b816200035b7f000000000000000000000000000000000000000000000000000000000000000090565b6001600160a01b031690620005f6565b925062000379600262000532565b82526200038a600060028162000399565b60208301525090939092509050565b6060826001600160a01b0316846001600160a01b03161115620003cf57604051633a4013cd60e21b815260040160405180910390fd5b620003db848462000ab5565b6001600160a01b031667ffffffffffffffff811115620003ff57620003ff6200098f565b6040519080825280602002602001820160405280156200045a57816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282526000199092019101816200041e5790505b509050835b836001600160a01b0316816001600160a01b031610156200052a576040518060a001604052808460028111156200049a576200049a62000744565b81526001600160a01b038316602082018190526040820152600060608201527fa280eec51ab8e1bc4b6b0c1b7f1bde785761b787a49db404e3e9338ed9b016ef60809091015282620004ed878462000ab5565b6001600160a01b03168151811062000509576200050962000adf565b60200260200101819052508080620005219062000af5565b9150506200045f565b509392505050565b6060816001600160a01b031667ffffffffffffffff8111156200055957620005596200098f565b60405190808252806020026020018201604052801562000583578160200160208202803683370190505b50905060005b826001600160a01b0316816001600160a01b03161015620005f0578082826001600160a01b031681518110620005c357620005c362000adf565b6001600160a01b039092166020928302919091019091015280620005e78162000af5565b91505062000589565b50919050565b60008282604051620006089062000650565b6200061592919062000b1e565b604051809103906000f0801580156200052a573d6000803e3d6000fd5b60405180606001604052806003906020820280368337509192915050565b6106fe8062000b4383390190565b6000602082840312156200067157600080fd5b81356001600160e01b0319811681146200020257600080fd5b60608101818360005b6003811015620006b757815160ff1683526020928301929091019060010162000693565b50505092915050565b80356001600160a01b0381168114620006d857600080fd5b919050565b600060608284031215620005f057600080fd5b600080604083850312156200070457600080fd5b6200070f83620006c0565b9150602083013567ffffffffffffffff8111156200072c57600080fd5b6200073a85828601620006dd565b9150509250929050565b634e487b7160e01b600052602160045260246000fd5b60008151600381106200077d57634e487b7160e01b600052602160045260246000fd5b8352506020818101516001600160a01b0390811691840191909152604080830151821690840152606080830151909116908301526080908101519082015260a00190565b6020808252825182820181905260009190848201906040850190845b818110156200080257620007f38385516200075a565b938501939250600101620007dd565b50909695505050505050565b6000806000606084860312156200082457600080fd5b6200082f84620006c0565b9250602084013561ffff811681146200084757600080fd5b9150604084013567ffffffffffffffff8111156200086457600080fd5b6200087286828701620006dd565b9150509250925092565b6000815180845260005b81811015620008a45760208185018101518683018201520162000886565b506000602082860101526020601f19601f83011685010191505092915050565b805160408084528151908401819052600091602091908201906060860190845b818110156200090b5783516001600160a01b031683529284019291840191600101620008e4565b50508483015186820387850152805180835290840192506000918401905b8083101562000952576200093f8285516200075a565b9150848401935060018301925062000929565b509695505050505050565b6040815260006200097260408301856200087c565b8281036020840152620009868185620008c4565b95945050505050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215620009b957600080fd5b620009c483620006c0565b9150602083013567ffffffffffffffff80821115620009e257600080fd5b818501915085601f830112620009f757600080fd5b81358181111562000a0c5762000a0c6200098f565b604051601f8201601f19908116603f0116810190838211818310171562000a375762000a376200098f565b8160405282815288602084870101111562000a5157600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6001600160a01b038316815260406020820152600062000a976040830184620008c4565b949350505050565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0382811682821603908082111562000ad85762000ad862000a9f565b5092915050565b634e487b7160e01b600052603260045260246000fd5b60006001600160a01b0380831681810362000b145762000b1462000a9f565b6001019392505050565b6001600160a01b038316815260406020820152600062000a9760408301846200087c56fe60806040526040516106fe3803806106fe83398101604081905261002291610319565b61002e82826000610035565b5050610436565b61003e8361006b565b60008251118061004b5750805b156100665761006483836100ab60201b6100291760201c565b505b505050565b610074816100d7565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606100d083836040518060600160405280602781526020016106d7602791396101a9565b9392505050565b6100ea8161022260201b6100551760201c565b6101515760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b806101887f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61023160201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6060600080856001600160a01b0316856040516101c691906103e7565b600060405180830381855af49150503d8060008114610201576040519150601f19603f3d011682016040523d82523d6000602084013e610206565b606091505b50909250905061021886838387610234565b9695505050505050565b6001600160a01b03163b151590565b90565b606083156102a357825160000361029c576001600160a01b0385163b61029c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610148565b50816102ad565b6102ad83836102b5565b949350505050565b8151156102c55781518083602001fd5b8060405162461bcd60e51b81526004016101489190610403565b634e487b7160e01b600052604160045260246000fd5b60005b838110156103105781810151838201526020016102f8565b50506000910152565b6000806040838503121561032c57600080fd5b82516001600160a01b038116811461034357600080fd5b60208401519092506001600160401b038082111561036057600080fd5b818501915085601f83011261037457600080fd5b815181811115610386576103866102df565b604051601f8201601f19908116603f011681019083821181831017156103ae576103ae6102df565b816040528281528860208487010111156103c757600080fd5b6103d88360208301602088016102f5565b80955050505050509250929050565b600082516103f98184602087016102f5565b9190910192915050565b60208152600082518060208401526104228160408501602087016102f5565b601f01601f19169190910160400192915050565b610292806104456000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b61009f565b565b606061004e838360405180606001604052806027815260200161025f602791396100c3565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e8080156100be573d6000f35b3d6000fd5b6060600080856001600160a01b0316856040516100e0919061020f565b600060405180830381855af49150503d806000811461011b576040519150601f19603f3d011682016040523d82523d6000602084013e610120565b606091505b50915091506101318683838761013b565b9695505050505050565b606083156101af5782516000036101a8576001600160a01b0385163b6101a85760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b50816101b9565b6101b983836101c1565b949350505050565b8151156101d15781518083602001fd5b8060405162461bcd60e51b815260040161019f919061022b565b60005b838110156102065781810151838201526020016101ee565b50506000910152565b600082516102218184602087016101eb565b9190910192915050565b602081526000825180602084015261024a8160408501602087016101eb565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a60a06040523060805234801561001457600080fd5b5061001d610022565b6100e1565b600054610100900460ff161561008e5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116146100df576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6080516112d961011860003960008181610479015281816104fe015281816105f401528181610679015261076301526112d96000f3fe6080604052600436106100e85760003560e01c806352d1902d1161008a578063c4d66de811610059578063c4d66de814610256578063c9c4bfca14610276578063d4b83992146102aa578063efe51cca146102ca57600080fd5b806352d1902d146101e75780635c60da1b1461020a5780636accab8c1461021f578063776d1a011461023657600080fd5b80633659cfe6116100c65780633659cfe6146101665780634162169f1461018657806341de6830146101b85780634f1ef286146101d457600080fd5b806301ffc9a7146100ed578063039a8c50146101225780632ae9c60014610144575b600080fd5b3480156100f957600080fd5b5061010d610108366004610fed565b6102e1565b60405190151581526020015b60405180910390f35b34801561012e57600080fd5b5061014261013d366004611017565b61034d565b005b34801561015057600080fd5b50610159610445565b604051610119919061103b565b34801561017257600080fd5b50610142610181366004611084565b61046f565b34801561019257600080fd5b5060c9546001600160a01b03165b6040516001600160a01b039091168152602001610119565b3480156101c457600080fd5b50600060405161011991906110a1565b6101426101e23660046110df565b6105ea565b3480156101f357600080fd5b506101fc610756565b604051908152602001610119565b34801561021657600080fd5b506101a061081b565b34801561022b57600080fd5b506101fc61012d5481565b34801561024257600080fd5b50610142610251366004611084565b610853565b34801561026257600080fd5b50610142610271366004611084565b6108b2565b34801561028257600080fd5b506101fc7f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f581565b3480156102b657600080fd5b5060fb546101a0906001600160a01b031681565b3480156102d657600080fd5b506101fc61012e5481565b60006001600160e01b0319821663041de68360e41b148061031157506001600160e01b03198216621574e360e91b145b8061032c57506001600160e01b031982166352d1902d60e01b145b8061034757506301ffc9a760e01b6001600160e01b03198316145b92915050565b600054600290610100900460ff1615801561036f575060005460ff8083169116105b6103d75760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805461ffff191660ff831617610100179055600261ffff831610156103ff57600261012e555b6000805461ff001916905560405160ff821681527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b61044d610fcf565b5060408051606081018252600181526004602082015260009181019190915290565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036104fc5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b60648201526084016103ce565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166105577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b0316146105c25760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b60648201526084016103ce565b6105cb8161099e565b604080516000808252602082019092526105e7918391906109db565b50565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036106775760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b60648201526084016103ce565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166106d27f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b03161461073d5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b60648201526084016103ce565b6107468261099e565b610752828260016109db565b5050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146107f65760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016103ce565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b600061084e7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b60fb80546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d690600090a35050565b600054600290610100900460ff161580156108d4575060005460ff8083169116105b6109375760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016103ce565b6000805461ffff191660ff83161761010017905561095482610b80565b600161012d55600261012e556000805461ff001916905560405160ff821681527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602001610439565b60c9547f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f590610752906001600160a01b0316303384600036610bf4565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610a1357610a0e83610cb0565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610a6d575060408051601f3d908101601f19168201909252610a6a918101906111a3565b60015b610adf5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201527f6f6e206973206e6f74205555505300000000000000000000000000000000000060648201526084016103ce565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114610b745760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f7860448201527f6961626c6555554944000000000000000000000000000000000000000000000060648201526084016103ce565b50610a0e838383610d7b565b600054610100900460ff16610beb5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103ce565b6105e781610da6565b604051637ef7c88360e11b81526001600160a01b0387169063fdef910690610c2890889088908890889088906004016111bc565b602060405180830381865afa158015610c45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c699190611210565b610ca857604051630cb6f8ed60e21b81526001600160a01b038088166004830152808716602483015285166044820152606481018490526084016103ce565b505050505050565b6001600160a01b0381163b610d2d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e74726163740000000000000000000000000000000000000060648201526084016103ce565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610d8483610e40565b600082511180610d915750805b15610a0e57610da08383610e80565b50505050565b600054610100900460ff16610e115760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103ce565b60c9805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610e4981610cb0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060610ea583836040518060600160405280602781526020016112a660279139610eac565b9392505050565b6060600080856001600160a01b031685604051610ec99190611256565b600060405180830381855af49150503d8060008114610f04576040519150601f19603f3d011682016040523d82523d6000602084013e610f09565b606091505b5091509150610f1a86838387610f24565b9695505050505050565b60608315610f93578251600003610f8c576001600160a01b0385163b610f8c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016103ce565b5081610f9d565b610f9d8383610fa5565b949350505050565b815115610fb55781518083602001fd5b8060405162461bcd60e51b81526004016103ce9190611272565b60405180606001604052806003906020820280368337509192915050565b600060208284031215610fff57600080fd5b81356001600160e01b031981168114610ea557600080fd5b60006020828403121561102957600080fd5b813561ffff81168114610ea557600080fd5b60608101818360005b600381101561106657815160ff16835260209283019290910190600101611044565b50505092915050565b6001600160a01b03811681146105e757600080fd5b60006020828403121561109657600080fd5b8135610ea58161106f565b60208101600383106110c357634e487b7160e01b600052602160045260246000fd5b91905290565b634e487b7160e01b600052604160045260246000fd5b600080604083850312156110f257600080fd5b82356110fd8161106f565b9150602083013567ffffffffffffffff8082111561111a57600080fd5b818501915085601f83011261112e57600080fd5b813581811115611140576111406110c9565b604051601f8201601f19908116603f01168101908382118183101715611168576111686110c9565b8160405282815288602084870101111561118157600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6000602082840312156111b557600080fd5b5051919050565b60006001600160a01b03808816835280871660208401525084604083015260806060830152826080830152828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b60006020828403121561122257600080fd5b81518015158114610ea557600080fd5b60005b8381101561124d578181015183820152602001611235565b50506000910152565b60008251611268818460208701611232565b9190910192915050565b6020815260008251806020840152611291816040850160208701611232565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a","opcodes":"PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x1D SWAP1 PUSH2 0x4B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH2 0x39 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x80 MSTORE PUSH2 0x58 JUMP JUMPDEST PUSH2 0x13F1 DUP1 PUSH2 0x12C6 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH2 0x124D PUSH2 0x79 PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH1 0xD2 ADD MSTORE PUSH2 0x339 ADD MSTORE PUSH2 0x124D PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH3 0x7B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9CB0A124 GT PUSH3 0x56 JUMPI DUP1 PUSH4 0x9CB0A124 EQ PUSH3 0xFD JUMPI DUP1 PUSH4 0xA8A9C29E EQ PUSH3 0x123 JUMPI DUP1 PUSH4 0xF10832F1 EQ PUSH3 0x14A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH3 0x80 JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH3 0xAC JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH3 0xC5 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x97 PUSH3 0x91 CALLDATASIZE PUSH1 0x4 PUSH3 0x65E JUMP JUMPDEST PUSH3 0x171 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0xB6 PUSH3 0x1C4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0xA3 SWAP2 SWAP1 PUSH3 0x68A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH3 0xA3 JUMP JUMPDEST PUSH3 0x114 PUSH3 0x10E CALLDATASIZE PUSH1 0x4 PUSH3 0x6F0 JUMP JUMPDEST PUSH3 0x1F0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0xA3 SWAP2 SWAP1 PUSH3 0x7C1 JUMP JUMPDEST PUSH3 0x13A PUSH3 0x134 CALLDATASIZE PUSH1 0x4 PUSH3 0x80E JUMP JUMPDEST PUSH3 0x209 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0xA3 SWAP3 SWAP2 SWAP1 PUSH3 0x95D JUMP JUMPDEST PUSH3 0x161 PUSH3 0x15B CALLDATASIZE PUSH1 0x4 PUSH3 0x9A5 JUMP JUMPDEST PUSH3 0x2B5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0xA3 SWAP3 SWAP2 SWAP1 PUSH3 0xA73 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x99718B5 PUSH1 0xE4 SHL EQ DUP1 PUSH3 0x1A2 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH3 0x1BE JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH3 0x1CE PUSH3 0x632 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH3 0x202 PUSH1 0x0 PUSH1 0x2 PUSH1 0x1 PUSH3 0x399 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH3 0x229 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST DUP4 PUSH2 0xFFFF AND PUSH1 0x1 SUB PUSH3 0x2AD JUMPI PUSH3 0x242 PUSH1 0x2 PUSH3 0x532 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x40 MLOAD PUSH2 0xFFFF DUP6 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH3 0x39A8C5 PUSH1 0xE4 SHL OR SWAP1 MSTORE SWAP2 POP PUSH3 0x2A7 PUSH2 0xFFFF DUP6 AND PUSH1 0x2 PUSH1 0x0 PUSH3 0x399 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE JUMPDEST SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x2D5 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 PUSH1 0x44 ADD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x189ACDBD PUSH1 0xE3 SHL OR SWAP1 MSTORE SWAP1 POP PUSH3 0x36B DUP2 PUSH3 0x35B PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH3 0x5F6 JUMP JUMPDEST SWAP3 POP PUSH3 0x379 PUSH1 0x2 PUSH3 0x532 JUMP JUMPDEST DUP3 MSTORE PUSH3 0x38A PUSH1 0x0 PUSH1 0x2 DUP2 PUSH3 0x399 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP SWAP1 SWAP4 SWAP1 SWAP3 POP SWAP1 POP JUMP JUMPDEST PUSH1 0x60 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH3 0x3CF JUMPI PUSH1 0x40 MLOAD PUSH4 0x3A4013CD PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0x3DB DUP5 DUP5 PUSH3 0xAB5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x3FF JUMPI PUSH3 0x3FF PUSH3 0x98F JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH3 0x45A JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD DUP3 SWAP1 MSTORE SWAP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 DUP3 ADD MSTORE DUP3 MSTORE PUSH1 0x0 NOT SWAP1 SWAP3 ADD SWAP2 ADD DUP2 PUSH3 0x41E JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP DUP4 JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT ISZERO PUSH3 0x52A JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 DUP5 PUSH1 0x2 DUP2 GT ISZERO PUSH3 0x49A JUMPI PUSH3 0x49A PUSH3 0x744 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x60 DUP3 ADD MSTORE PUSH32 0xA280EEC51AB8E1BC4B6B0C1B7F1BDE785761B787A49DB404E3E9338ED9B016EF PUSH1 0x80 SWAP1 SWAP2 ADD MSTORE DUP3 PUSH3 0x4ED DUP8 DUP5 PUSH3 0xAB5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MLOAD DUP2 LT PUSH3 0x509 JUMPI PUSH3 0x509 PUSH3 0xADF JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP DUP1 DUP1 PUSH3 0x521 SWAP1 PUSH3 0xAF5 JUMP JUMPDEST SWAP2 POP POP PUSH3 0x45F JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x559 JUMPI PUSH3 0x559 PUSH3 0x98F JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH3 0x583 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT ISZERO PUSH3 0x5F0 JUMPI DUP1 DUP3 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MLOAD DUP2 LT PUSH3 0x5C3 JUMPI PUSH3 0x5C3 PUSH3 0xADF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE DUP1 PUSH3 0x5E7 DUP2 PUSH3 0xAF5 JUMP JUMPDEST SWAP2 POP POP PUSH3 0x589 JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH3 0x608 SWAP1 PUSH3 0x650 JUMP JUMPDEST PUSH3 0x615 SWAP3 SWAP2 SWAP1 PUSH3 0xB1E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH3 0x52A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x6FE DUP1 PUSH3 0xB43 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x671 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH3 0x202 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH3 0x6B7 JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH3 0x693 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x6D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x5F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x704 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x70F DUP4 PUSH3 0x6C0 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x72C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x73A DUP6 DUP3 DUP7 ADD PUSH3 0x6DD JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP2 MLOAD PUSH1 0x3 DUP2 LT PUSH3 0x77D JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP4 MSTORE POP PUSH1 0x20 DUP2 DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP1 DUP4 ADD MLOAD DUP3 AND SWAP1 DUP5 ADD MSTORE PUSH1 0x60 DUP1 DUP4 ADD MLOAD SWAP1 SWAP2 AND SWAP1 DUP4 ADD MSTORE PUSH1 0x80 SWAP1 DUP2 ADD MLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x802 JUMPI PUSH3 0x7F3 DUP4 DUP6 MLOAD PUSH3 0x75A JUMP JUMPDEST SWAP4 DUP6 ADD SWAP4 SWAP3 POP PUSH1 0x1 ADD PUSH3 0x7DD JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH3 0x824 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x82F DUP5 PUSH3 0x6C0 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH3 0x847 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x864 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x872 DUP7 DUP3 DUP8 ADD PUSH3 0x6DD JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x8A4 JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD DUP3 ADD MSTORE ADD PUSH3 0x886 JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x20 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x20 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x40 DUP1 DUP5 MSTORE DUP2 MLOAD SWAP1 DUP5 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x20 SWAP2 SWAP1 DUP3 ADD SWAP1 PUSH1 0x60 DUP7 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x90B JUMPI DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH3 0x8E4 JUMP JUMPDEST POP POP DUP5 DUP4 ADD MLOAD DUP7 DUP3 SUB DUP8 DUP6 ADD MSTORE DUP1 MLOAD DUP1 DUP4 MSTORE SWAP1 DUP5 ADD SWAP3 POP PUSH1 0x0 SWAP2 DUP5 ADD SWAP1 JUMPDEST DUP1 DUP4 LT ISZERO PUSH3 0x952 JUMPI PUSH3 0x93F DUP3 DUP6 MLOAD PUSH3 0x75A JUMP JUMPDEST SWAP2 POP DUP5 DUP5 ADD SWAP4 POP PUSH1 0x1 DUP4 ADD SWAP3 POP PUSH3 0x929 JUMP JUMPDEST POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 PUSH3 0x972 PUSH1 0x40 DUP4 ADD DUP6 PUSH3 0x87C JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 ADD MSTORE PUSH3 0x986 DUP2 DUP6 PUSH3 0x8C4 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x9B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x9C4 DUP4 PUSH3 0x6C0 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH3 0x9E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x9F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH3 0xA0C JUMPI PUSH3 0xA0C PUSH3 0x98F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH3 0xA37 JUMPI PUSH3 0xA37 PUSH3 0x98F JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH3 0xA51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH3 0xA97 PUSH1 0x40 DUP4 ADD DUP5 PUSH3 0x8C4 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND DUP3 DUP3 AND SUB SWAP1 DUP1 DUP3 GT ISZERO PUSH3 0xAD8 JUMPI PUSH3 0xAD8 PUSH3 0xA9F JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND DUP2 DUP2 SUB PUSH3 0xB14 JUMPI PUSH3 0xB14 PUSH3 0xA9F JUMP JUMPDEST PUSH1 0x1 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH3 0xA97 PUSH1 0x40 DUP4 ADD DUP5 PUSH3 0x87C JUMP INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH2 0x6FE CODESIZE SUB DUP1 PUSH2 0x6FE DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x22 SWAP2 PUSH2 0x319 JUMP JUMPDEST PUSH2 0x2E DUP3 DUP3 PUSH1 0x0 PUSH2 0x35 JUMP JUMPDEST POP POP PUSH2 0x436 JUMP JUMPDEST PUSH2 0x3E DUP4 PUSH2 0x6B JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD GT DUP1 PUSH2 0x4B JUMPI POP DUP1 JUMPDEST ISZERO PUSH2 0x66 JUMPI PUSH2 0x64 DUP4 DUP4 PUSH2 0xAB PUSH1 0x20 SHL PUSH2 0x29 OR PUSH1 0x20 SHR JUMP JUMPDEST POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x74 DUP2 PUSH2 0xD7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xD0 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x6D7 PUSH1 0x27 SWAP2 CODECOPY PUSH2 0x1A9 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xEA DUP2 PUSH2 0x222 PUSH1 0x20 SHL PUSH2 0x55 OR PUSH1 0x20 SHR JUMP JUMPDEST PUSH2 0x151 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313936373A206E657720696D706C656D656E746174696F6E206973206E PUSH1 0x44 DUP3 ADD MSTORE PUSH13 0x1BDD08184818DBDB9D1C9858DD PUSH1 0x9A SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH2 0x188 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC PUSH1 0x0 SHL PUSH2 0x231 PUSH1 0x20 SHL PUSH2 0x64 OR PUSH1 0x20 SHR JUMP JUMPDEST DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0x1C6 SWAP2 SWAP1 PUSH2 0x3E7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x201 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x206 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x218 DUP7 DUP4 DUP4 DUP8 PUSH2 0x234 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x2A3 JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0x29C JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0x29C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x148 JUMP JUMPDEST POP DUP2 PUSH2 0x2AD JUMP JUMPDEST PUSH2 0x2AD DUP4 DUP4 PUSH2 0x2B5 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x2C5 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x148 SWAP2 SWAP1 PUSH2 0x403 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x310 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2F8 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x32C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x343 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x360 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x374 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x386 JUMPI PUSH2 0x386 PUSH2 0x2DF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x3AE JUMPI PUSH2 0x3AE PUSH2 0x2DF JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x3C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3D8 DUP4 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x2F5 JUMP JUMPDEST DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x3F9 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x2F5 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x422 DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x2F5 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x292 DUP1 PUSH2 0x445 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLDATASIZE PUSH2 0x13 JUMPI PUSH2 0x11 PUSH2 0x17 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x11 JUMPDEST PUSH2 0x27 PUSH2 0x22 PUSH2 0x67 JUMP JUMPDEST PUSH2 0x9F JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x60 PUSH2 0x4E DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x25F PUSH1 0x27 SWAP2 CODECOPY PUSH2 0xC3 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9A PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 DUP1 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE PUSH1 0x0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH2 0xBE JUMPI RETURNDATASIZE PUSH1 0x0 RETURN JUMPDEST RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0xE0 SWAP2 SWAP1 PUSH2 0x20F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x11B JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x120 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x131 DUP7 DUP4 DUP4 DUP8 PUSH2 0x13B JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x1AF JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0x1A8 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0x1A8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP DUP2 PUSH2 0x1B9 JUMP JUMPDEST PUSH2 0x1B9 DUP4 DUP4 PUSH2 0x1C1 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x1D1 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x19F SWAP2 SWAP1 PUSH2 0x22B JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x206 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1EE JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x221 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x1EB JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x24A DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x1EB JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A164 PUSH20 0x6F6C6343000811000A416464726573733A206C6F PUSH24 0x2D6C6576656C2064656C65676174652063616C6C20666169 PUSH13 0x6564A164736F6C634300081100 EXP PUSH1 0xA0 PUSH1 0x40 MSTORE ADDRESS PUSH1 0x80 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x14 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1D PUSH2 0x22 JUMP JUMPDEST PUSH2 0xE1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x8E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x27 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320696E697469 PUSH1 0x44 DUP3 ADD MSTORE PUSH7 0x616C697A696E67 PUSH1 0xC8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xFF SWAP1 DUP2 AND EQ PUSH2 0xDF JUMPI PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH2 0x12D9 PUSH2 0x118 PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH2 0x479 ADD MSTORE DUP2 DUP2 PUSH2 0x4FE ADD MSTORE DUP2 DUP2 PUSH2 0x5F4 ADD MSTORE DUP2 DUP2 PUSH2 0x679 ADD MSTORE PUSH2 0x763 ADD MSTORE PUSH2 0x12D9 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xE8 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x52D1902D GT PUSH2 0x8A JUMPI DUP1 PUSH4 0xC4D66DE8 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0x256 JUMPI DUP1 PUSH4 0xC9C4BFCA EQ PUSH2 0x276 JUMPI DUP1 PUSH4 0xD4B83992 EQ PUSH2 0x2AA JUMPI DUP1 PUSH4 0xEFE51CCA EQ PUSH2 0x2CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x52D1902D EQ PUSH2 0x1E7 JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0x20A JUMPI DUP1 PUSH4 0x6ACCAB8C EQ PUSH2 0x21F JUMPI DUP1 PUSH4 0x776D1A01 EQ PUSH2 0x236 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x3659CFE6 GT PUSH2 0xC6 JUMPI DUP1 PUSH4 0x3659CFE6 EQ PUSH2 0x166 JUMPI DUP1 PUSH4 0x4162169F EQ PUSH2 0x186 JUMPI DUP1 PUSH4 0x41DE6830 EQ PUSH2 0x1B8 JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x1D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xED JUMPI DUP1 PUSH4 0x39A8C50 EQ PUSH2 0x122 JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0x144 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xF9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x10D PUSH2 0x108 CALLDATASIZE PUSH1 0x4 PUSH2 0xFED JUMP JUMPDEST PUSH2 0x2E1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x12E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x142 PUSH2 0x13D CALLDATASIZE PUSH1 0x4 PUSH2 0x1017 JUMP JUMPDEST PUSH2 0x34D JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x150 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x159 PUSH2 0x445 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x119 SWAP2 SWAP1 PUSH2 0x103B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x172 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x142 PUSH2 0x181 CALLDATASIZE PUSH1 0x4 PUSH2 0x1084 JUMP JUMPDEST PUSH2 0x46F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x192 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xC9 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x119 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 PUSH1 0x40 MLOAD PUSH2 0x119 SWAP2 SWAP1 PUSH2 0x10A1 JUMP JUMPDEST PUSH2 0x142 PUSH2 0x1E2 CALLDATASIZE PUSH1 0x4 PUSH2 0x10DF JUMP JUMPDEST PUSH2 0x5EA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FC PUSH2 0x756 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x119 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x216 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1A0 PUSH2 0x81B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x22B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FC PUSH2 0x12D SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x242 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x142 PUSH2 0x251 CALLDATASIZE PUSH1 0x4 PUSH2 0x1084 JUMP JUMPDEST PUSH2 0x853 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x262 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x142 PUSH2 0x271 CALLDATASIZE PUSH1 0x4 PUSH2 0x1084 JUMP JUMPDEST PUSH2 0x8B2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x282 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FC PUSH32 0x821B6E3A557148015A918C89E5D092E878A69854A2D1A410635F771BD5A8A3F5 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xFB SLOAD PUSH2 0x1A0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FC PUSH2 0x12E SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x41DE683 PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x311 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x32C JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x52D1902D PUSH1 0xE0 SHL EQ JUMPDEST DUP1 PUSH2 0x347 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x2 SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH2 0x36F JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF DUP1 DUP4 AND SWAP2 AND LT JUMPDEST PUSH2 0x3D7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x44 DUP3 ADD MSTORE PUSH14 0x191E481A5B9A5D1A585B1A5E9959 PUSH1 0x92 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH2 0xFFFF NOT AND PUSH1 0xFF DUP4 AND OR PUSH2 0x100 OR SWAP1 SSTORE PUSH1 0x2 PUSH2 0xFFFF DUP4 AND LT ISZERO PUSH2 0x3FF JUMPI PUSH1 0x2 PUSH2 0x12E SSTORE JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH1 0xFF DUP3 AND DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH2 0x44D PUSH2 0xFCF JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x4FC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x19195B1959D85D1958D85B1B PUSH1 0xA2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3CE JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x557 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x5C2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x6163746976652070726F7879 PUSH1 0xA0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3CE JUMP JUMPDEST PUSH2 0x5CB DUP2 PUSH2 0x99E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x5E7 SWAP2 DUP4 SWAP2 SWAP1 PUSH2 0x9DB JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x677 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x19195B1959D85D1958D85B1B PUSH1 0xA2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3CE JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x6D2 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x73D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x6163746976652070726F7879 PUSH1 0xA0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3CE JUMP JUMPDEST PUSH2 0x746 DUP3 PUSH2 0x99E JUMP JUMPDEST PUSH2 0x752 DUP3 DUP3 PUSH1 0x1 PUSH2 0x9DB JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x7F6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x38 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x555550535570677261646561626C653A206D757374206E6F742062652063616C PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6C6564207468726F7567682064656C656761746563616C6C0000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3CE JUMP JUMPDEST POP PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x84E PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0xFB DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP2 SWAP1 DUP3 SWAP1 PUSH32 0x90CC2F570A6EB594B1580EA3E41247D2D73A55281889E86BD4EC2FC29C7E62D6 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x2 SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH2 0x8D4 JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF DUP1 DUP4 AND SWAP2 AND LT JUMPDEST PUSH2 0x937 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x44 DUP3 ADD MSTORE PUSH14 0x191E481A5B9A5D1A585B1A5E9959 PUSH1 0x92 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3CE JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH2 0xFFFF NOT AND PUSH1 0xFF DUP4 AND OR PUSH2 0x100 OR SWAP1 SSTORE PUSH2 0x954 DUP3 PUSH2 0xB80 JUMP JUMPDEST PUSH1 0x1 PUSH2 0x12D SSTORE PUSH1 0x2 PUSH2 0x12E SSTORE PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH1 0xFF DUP3 AND DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH2 0x439 JUMP JUMPDEST PUSH1 0xC9 SLOAD PUSH32 0x821B6E3A557148015A918C89E5D092E878A69854A2D1A410635F771BD5A8A3F5 SWAP1 PUSH2 0x752 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ADDRESS CALLER DUP5 PUSH1 0x0 CALLDATASIZE PUSH2 0xBF4 JUMP JUMPDEST PUSH32 0x4910FDFA16FED3260ED0E7147F7CC6DA11A60208B5B9406D12A635614FFD9143 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0xA13 JUMPI PUSH2 0xA0E DUP4 PUSH2 0xCB0 JUMP JUMPDEST POP POP POP JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x52D1902D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0xA6D JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0xA6A SWAP2 DUP2 ADD SWAP1 PUSH2 0x11A3 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0xADF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524331393637557067726164653A206E657720696D706C656D656E74617469 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F6E206973206E6F742055555053000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3CE JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC DUP2 EQ PUSH2 0xB74 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524331393637557067726164653A20756E737570706F727465642070726F78 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6961626C65555549440000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3CE JUMP JUMPDEST POP PUSH2 0xA0E DUP4 DUP4 DUP4 PUSH2 0xD7B JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0xBEB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3CE JUMP JUMPDEST PUSH2 0x5E7 DUP2 PUSH2 0xDA6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x7EF7C883 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0xFDEF9106 SWAP1 PUSH2 0xC28 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x11BC JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC45 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xC69 SWAP2 SWAP1 PUSH2 0x1210 JUMP JUMPDEST PUSH2 0xCA8 JUMPI PUSH1 0x40 MLOAD PUSH4 0xCB6F8ED PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND PUSH1 0x4 DUP4 ADD MSTORE DUP1 DUP8 AND PUSH1 0x24 DUP4 ADD MSTORE DUP6 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x84 ADD PUSH2 0x3CE JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND EXTCODESIZE PUSH2 0xD2D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313936373A206E657720696D706C656D656E746174696F6E206973206E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F74206120636F6E747261637400000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3CE JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xD84 DUP4 PUSH2 0xE40 JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD GT DUP1 PUSH2 0xD91 JUMPI POP DUP1 JUMPDEST ISZERO PUSH2 0xA0E JUMPI PUSH2 0xDA0 DUP4 DUP4 PUSH2 0xE80 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0xE11 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3CE JUMP JUMPDEST PUSH1 0xC9 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xE49 DUP2 PUSH2 0xCB0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xEA5 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x12A6 PUSH1 0x27 SWAP2 CODECOPY PUSH2 0xEAC JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0xEC9 SWAP2 SWAP1 PUSH2 0x1256 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xF04 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xF09 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0xF1A DUP7 DUP4 DUP4 DUP8 PUSH2 0xF24 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0xF93 JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0xF8C JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0xF8C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3CE JUMP JUMPDEST POP DUP2 PUSH2 0xF9D JUMP JUMPDEST PUSH2 0xF9D DUP4 DUP4 PUSH2 0xFA5 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0xFB5 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3CE SWAP2 SWAP1 PUSH2 0x1272 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xFFF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0xEA5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1029 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH2 0xEA5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0x1066 JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x1044 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x5E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1096 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xEA5 DUP2 PUSH2 0x106F JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH1 0x3 DUP4 LT PUSH2 0x10C3 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 SWAP1 MSTORE SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x10F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x10FD DUP2 PUSH2 0x106F JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x111A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x112E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x1140 JUMPI PUSH2 0x1140 PUSH2 0x10C9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x1168 JUMPI PUSH2 0x1168 PUSH2 0x10C9 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x1181 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x11B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND DUP4 MSTORE DUP1 DUP8 AND PUSH1 0x20 DUP5 ADD MSTORE POP DUP5 PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x80 PUSH1 0x60 DUP4 ADD MSTORE DUP3 PUSH1 0x80 DUP4 ADD MSTORE DUP3 DUP5 PUSH1 0xA0 DUP5 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0xA0 DUP5 DUP5 ADD ADD MSTORE PUSH1 0xA0 PUSH1 0x1F NOT PUSH1 0x1F DUP6 ADD AND DUP4 ADD ADD SWAP1 POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1222 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xEA5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x124D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1235 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x1268 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x1232 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x1291 DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x1232 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A164 PUSH20 0x6F6C6343000811000A0000000000000000000000 ","sourceMap":"2565:1940:32:-:0;;;2722:87;;;;;;;;;;2767:37;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1605:32:46;;;2565:1940:32;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@deployUUPSProxy_5072":{"entryPoint":1526,"id":5072,"parameterSlots":2,"returnSlots":1},"@implementation_5033":{"entryPoint":null,"id":5033,"parameterSlots":0,"returnSlots":1},"@mockHelpers_3108":{"entryPoint":1330,"id":3108,"parameterSlots":1,"returnSlots":1},"@mockPermissions_3069":{"entryPoint":921,"id":3069,"parameterSlots":3,"returnSlots":1},"@prepareInstallation_3496":{"entryPoint":693,"id":3496,"parameterSlots":2,"returnSlots":2},"@prepareUninstallation_3581":{"entryPoint":496,"id":3581,"parameterSlots":2,"returnSlots":1},"@prepareUpdate_3553":{"entryPoint":521,"id":3553,"parameterSlots":3,"returnSlots":2},"@protocolVersion_5135":{"entryPoint":452,"id":5135,"parameterSlots":0,"returnSlots":1},"@supportsInterface_2374":{"entryPoint":null,"id":2374,"parameterSlots":1,"returnSlots":1},"@supportsInterface_5024":{"entryPoint":369,"id":5024,"parameterSlots":1,"returnSlots":1},"abi_decode_address":{"entryPoint":1728,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_struct_SetupPayload_calldata":{"entryPoint":1757,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_bytes_memory_ptr":{"entryPoint":2469,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_struct$_SetupPayload_$4810_calldata_ptr":{"entryPoint":1776,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_uint16t_struct$_SetupPayload_$4810_calldata_ptr":{"entryPoint":2062,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_bytes4":{"entryPoint":1630,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encodeUpdatedPos_struct_MultiTargetPermission":{"entryPoint":1882,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_bytes":{"entryPoint":2172,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_struct_PreparedSetupData":{"entryPoint":2244,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address_t_bytes_memory_ptr__to_t_address_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":2846,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_address_t_struct$_PreparedSetupData_$4802_memory_ptr__to_t_address_t_struct$_PreparedSetupData_$4802_memory_ptr__fromStack_reversed":{"entryPoint":2675,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr__fromStack_reversed":{"entryPoint":1985,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed":{"entryPoint":1674,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$4802_memory_ptr__to_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$4802_memory_ptr__fromStack_reversed":{"entryPoint":2397,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_contract$_IDAO_$2538__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_uint16__to_t_uint16__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_t_uint160":{"entryPoint":2741,"id":null,"parameterSlots":2,"returnSlots":1},"increment_t_uint160":{"entryPoint":2805,"id":null,"parameterSlots":1,"returnSlots":1},"panic_error_0x11":{"entryPoint":2719,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x21":{"entryPoint":1860,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x32":{"entryPoint":2783,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":2447,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:9300:50","statements":[{"nodeType":"YulBlock","src":"6:3:50","statements":[]},{"body":{"nodeType":"YulBlock","src":"83:217:50","statements":[{"body":{"nodeType":"YulBlock","src":"129:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"138:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"141:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"131:6:50"},"nodeType":"YulFunctionCall","src":"131:12:50"},"nodeType":"YulExpressionStatement","src":"131:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"104:7:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"113:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"100:3:50"},"nodeType":"YulFunctionCall","src":"100:23:50"},{"kind":"number","nodeType":"YulLiteral","src":"125:2:50","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"96:3:50"},"nodeType":"YulFunctionCall","src":"96:32:50"},"nodeType":"YulIf","src":"93:52:50"},{"nodeType":"YulVariableDeclaration","src":"154:36:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"180:9:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"167:12:50"},"nodeType":"YulFunctionCall","src":"167:23:50"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"158:5:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"254:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"263:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"266:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"256:6:50"},"nodeType":"YulFunctionCall","src":"256:12:50"},"nodeType":"YulExpressionStatement","src":"256:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"212:5:50"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"223:5:50"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"234:3:50","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"239:10:50","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"230:3:50"},"nodeType":"YulFunctionCall","src":"230:20:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"219:3:50"},"nodeType":"YulFunctionCall","src":"219:32:50"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"209:2:50"},"nodeType":"YulFunctionCall","src":"209:43:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"202:6:50"},"nodeType":"YulFunctionCall","src":"202:51:50"},"nodeType":"YulIf","src":"199:71:50"},{"nodeType":"YulAssignment","src":"279:15:50","value":{"name":"value","nodeType":"YulIdentifier","src":"289:5:50"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"279:6:50"}]}]},"name":"abi_decode_tuple_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"49:9:50","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"60:7:50","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"72:6:50","type":""}],"src":"14:286:50"},{"body":{"nodeType":"YulBlock","src":"400:92:50","statements":[{"nodeType":"YulAssignment","src":"410:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"422:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"433:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"418:3:50"},"nodeType":"YulFunctionCall","src":"418:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"410:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"452:9:50"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"477:6:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"470:6:50"},"nodeType":"YulFunctionCall","src":"470:14:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"463:6:50"},"nodeType":"YulFunctionCall","src":"463:22:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"445:6:50"},"nodeType":"YulFunctionCall","src":"445:41:50"},"nodeType":"YulExpressionStatement","src":"445:41:50"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"369:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"380:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"391:4:50","type":""}],"src":"305:187:50"},{"body":{"nodeType":"YulBlock","src":"640:358:50","statements":[{"nodeType":"YulAssignment","src":"650:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"662:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"673:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"658:3:50"},"nodeType":"YulFunctionCall","src":"658:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"650:4:50"}]},{"nodeType":"YulVariableDeclaration","src":"685:20:50","value":{"name":"headStart","nodeType":"YulIdentifier","src":"696:9:50"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"689:3:50","type":""}]},{"nodeType":"YulAssignment","src":"714:16:50","value":{"name":"headStart","nodeType":"YulIdentifier","src":"721:9:50"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"714:3:50"}]},{"nodeType":"YulVariableDeclaration","src":"739:20:50","value":{"name":"value0","nodeType":"YulIdentifier","src":"753:6:50"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"743:6:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"768:10:50","value":{"kind":"number","nodeType":"YulLiteral","src":"777:1:50","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"772:1:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"834:158:50","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"855:3:50"},{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"870:6:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"864:5:50"},"nodeType":"YulFunctionCall","src":"864:13:50"},{"kind":"number","nodeType":"YulLiteral","src":"879:4:50","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"860:3:50"},"nodeType":"YulFunctionCall","src":"860:24:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"848:6:50"},"nodeType":"YulFunctionCall","src":"848:37:50"},"nodeType":"YulExpressionStatement","src":"848:37:50"},{"nodeType":"YulVariableDeclaration","src":"898:14:50","value":{"kind":"number","nodeType":"YulLiteral","src":"908:4:50","type":"","value":"0x20"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"902:2:50","type":""}]},{"nodeType":"YulAssignment","src":"925:19:50","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"936:3:50"},{"name":"_1","nodeType":"YulIdentifier","src":"941:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"932:3:50"},"nodeType":"YulFunctionCall","src":"932:12:50"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"925:3:50"}]},{"nodeType":"YulAssignment","src":"957:25:50","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"971:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"979:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"967:3:50"},"nodeType":"YulFunctionCall","src":"967:15:50"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"957:6:50"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"798:1:50"},{"kind":"number","nodeType":"YulLiteral","src":"801:4:50","type":"","value":"0x03"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"795:2:50"},"nodeType":"YulFunctionCall","src":"795:11:50"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"807:18:50","statements":[{"nodeType":"YulAssignment","src":"809:14:50","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"818:1:50"},{"kind":"number","nodeType":"YulLiteral","src":"821:1:50","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"814:3:50"},"nodeType":"YulFunctionCall","src":"814:9:50"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"809:1:50"}]}]},"pre":{"nodeType":"YulBlock","src":"791:3:50","statements":[]},"src":"787:205:50"}]},"name":"abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"609:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"620:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"631:4:50","type":""}],"src":"497:501:50"},{"body":{"nodeType":"YulBlock","src":"1104:125:50","statements":[{"nodeType":"YulAssignment","src":"1114:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1126:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"1137:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1122:3:50"},"nodeType":"YulFunctionCall","src":"1122:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1114:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1156:9:50"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1171:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"1179:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1167:3:50"},"nodeType":"YulFunctionCall","src":"1167:55:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1149:6:50"},"nodeType":"YulFunctionCall","src":"1149:74:50"},"nodeType":"YulExpressionStatement","src":"1149:74:50"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1073:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1084:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1095:4:50","type":""}],"src":"1003:226:50"},{"body":{"nodeType":"YulBlock","src":"1283:147:50","statements":[{"nodeType":"YulAssignment","src":"1293:29:50","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1315:6:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1302:12:50"},"nodeType":"YulFunctionCall","src":"1302:20:50"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"1293:5:50"}]},{"body":{"nodeType":"YulBlock","src":"1408:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1417:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1420:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1410:6:50"},"nodeType":"YulFunctionCall","src":"1410:12:50"},"nodeType":"YulExpressionStatement","src":"1410:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1344:5:50"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1355:5:50"},{"kind":"number","nodeType":"YulLiteral","src":"1362:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1351:3:50"},"nodeType":"YulFunctionCall","src":"1351:54:50"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1341:2:50"},"nodeType":"YulFunctionCall","src":"1341:65:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1334:6:50"},"nodeType":"YulFunctionCall","src":"1334:73:50"},"nodeType":"YulIf","src":"1331:93:50"}]},"name":"abi_decode_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"1262:6:50","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"1273:5:50","type":""}],"src":"1234:196:50"},{"body":{"nodeType":"YulBlock","src":"1510:85:50","statements":[{"body":{"nodeType":"YulBlock","src":"1549:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1558:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1561:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1551:6:50"},"nodeType":"YulFunctionCall","src":"1551:12:50"},"nodeType":"YulExpressionStatement","src":"1551:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"end","nodeType":"YulIdentifier","src":"1531:3:50"},{"name":"offset","nodeType":"YulIdentifier","src":"1536:6:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1527:3:50"},"nodeType":"YulFunctionCall","src":"1527:16:50"},{"kind":"number","nodeType":"YulLiteral","src":"1545:2:50","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1523:3:50"},"nodeType":"YulFunctionCall","src":"1523:25:50"},"nodeType":"YulIf","src":"1520:45:50"},{"nodeType":"YulAssignment","src":"1574:15:50","value":{"name":"offset","nodeType":"YulIdentifier","src":"1583:6:50"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"1574:5:50"}]}]},"name":"abi_decode_struct_SetupPayload_calldata","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"1484:6:50","type":""},{"name":"end","nodeType":"YulTypedName","src":"1492:3:50","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"1500:5:50","type":""}],"src":"1435:160:50"},{"body":{"nodeType":"YulBlock","src":"1719:321:50","statements":[{"body":{"nodeType":"YulBlock","src":"1765:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1774:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1777:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1767:6:50"},"nodeType":"YulFunctionCall","src":"1767:12:50"},"nodeType":"YulExpressionStatement","src":"1767:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1740:7:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"1749:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1736:3:50"},"nodeType":"YulFunctionCall","src":"1736:23:50"},{"kind":"number","nodeType":"YulLiteral","src":"1761:2:50","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1732:3:50"},"nodeType":"YulFunctionCall","src":"1732:32:50"},"nodeType":"YulIf","src":"1729:52:50"},{"nodeType":"YulAssignment","src":"1790:39:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1819:9:50"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"1800:18:50"},"nodeType":"YulFunctionCall","src":"1800:29:50"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1790:6:50"}]},{"nodeType":"YulVariableDeclaration","src":"1838:46:50","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1869:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"1880:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1865:3:50"},"nodeType":"YulFunctionCall","src":"1865:18:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1852:12:50"},"nodeType":"YulFunctionCall","src":"1852:32:50"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1842:6:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"1927:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1936:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1939:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1929:6:50"},"nodeType":"YulFunctionCall","src":"1929:12:50"},"nodeType":"YulExpressionStatement","src":"1929:12:50"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1899:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"1907:18:50","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1896:2:50"},"nodeType":"YulFunctionCall","src":"1896:30:50"},"nodeType":"YulIf","src":"1893:50:50"},{"nodeType":"YulAssignment","src":"1952:82:50","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2006:9:50"},{"name":"offset","nodeType":"YulIdentifier","src":"2017:6:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2002:3:50"},"nodeType":"YulFunctionCall","src":"2002:22:50"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2026:7:50"}],"functionName":{"name":"abi_decode_struct_SetupPayload_calldata","nodeType":"YulIdentifier","src":"1962:39:50"},"nodeType":"YulFunctionCall","src":"1962:72:50"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1952:6:50"}]}]},"name":"abi_decode_tuple_t_addresst_struct$_SetupPayload_$4810_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1677:9:50","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1688:7:50","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1700:6:50","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1708:6:50","type":""}],"src":"1600:440:50"},{"body":{"nodeType":"YulBlock","src":"2077:95:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2094:1:50","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2101:3:50","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"2106:10:50","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2097:3:50"},"nodeType":"YulFunctionCall","src":"2097:20:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2087:6:50"},"nodeType":"YulFunctionCall","src":"2087:31:50"},"nodeType":"YulExpressionStatement","src":"2087:31:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2134:1:50","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"2137:4:50","type":"","value":"0x21"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2127:6:50"},"nodeType":"YulFunctionCall","src":"2127:15:50"},"nodeType":"YulExpressionStatement","src":"2127:15:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2158:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2161:4:50","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2151:6:50"},"nodeType":"YulFunctionCall","src":"2151:15:50"},"nodeType":"YulExpressionStatement","src":"2151:15:50"}]},"name":"panic_error_0x21","nodeType":"YulFunctionDefinition","src":"2045:127:50"},{"body":{"nodeType":"YulBlock","src":"2267:606:50","statements":[{"nodeType":"YulVariableDeclaration","src":"2277:23:50","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2293:6:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2287:5:50"},"nodeType":"YulFunctionCall","src":"2287:13:50"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"2281:2:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"2338:111:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2359:1:50","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2366:3:50","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"2371:10:50","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2362:3:50"},"nodeType":"YulFunctionCall","src":"2362:20:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2352:6:50"},"nodeType":"YulFunctionCall","src":"2352:31:50"},"nodeType":"YulExpressionStatement","src":"2352:31:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2403:1:50","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"2406:4:50","type":"","value":"0x21"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2396:6:50"},"nodeType":"YulFunctionCall","src":"2396:15:50"},"nodeType":"YulExpressionStatement","src":"2396:15:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2431:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2434:4:50","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2424:6:50"},"nodeType":"YulFunctionCall","src":"2424:15:50"},"nodeType":"YulExpressionStatement","src":"2424:15:50"}]},"condition":{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"2322:2:50"},{"kind":"number","nodeType":"YulLiteral","src":"2326:1:50","type":"","value":"3"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2319:2:50"},"nodeType":"YulFunctionCall","src":"2319:9:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2312:6:50"},"nodeType":"YulFunctionCall","src":"2312:17:50"},"nodeType":"YulIf","src":"2309:140:50"},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2465:3:50"},{"name":"_1","nodeType":"YulIdentifier","src":"2470:2:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2458:6:50"},"nodeType":"YulFunctionCall","src":"2458:15:50"},"nodeType":"YulExpressionStatement","src":"2458:15:50"},{"nodeType":"YulVariableDeclaration","src":"2482:44:50","value":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2512:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"2520:4:50","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2508:3:50"},"nodeType":"YulFunctionCall","src":"2508:17:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2502:5:50"},"nodeType":"YulFunctionCall","src":"2502:24:50"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"2486:12:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2535:52:50","value":{"kind":"number","nodeType":"YulLiteral","src":"2545:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"2539:2:50","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2607:3:50"},{"kind":"number","nodeType":"YulLiteral","src":"2612:4:50","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2603:3:50"},"nodeType":"YulFunctionCall","src":"2603:14:50"},{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"2623:12:50"},{"name":"_2","nodeType":"YulIdentifier","src":"2637:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2619:3:50"},"nodeType":"YulFunctionCall","src":"2619:21:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2596:6:50"},"nodeType":"YulFunctionCall","src":"2596:45:50"},"nodeType":"YulExpressionStatement","src":"2596:45:50"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2661:3:50"},{"kind":"number","nodeType":"YulLiteral","src":"2666:4:50","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2657:3:50"},"nodeType":"YulFunctionCall","src":"2657:14:50"},{"arguments":[{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2687:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"2695:4:50","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2683:3:50"},"nodeType":"YulFunctionCall","src":"2683:17:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2677:5:50"},"nodeType":"YulFunctionCall","src":"2677:24:50"},{"name":"_2","nodeType":"YulIdentifier","src":"2703:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2673:3:50"},"nodeType":"YulFunctionCall","src":"2673:33:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2650:6:50"},"nodeType":"YulFunctionCall","src":"2650:57:50"},"nodeType":"YulExpressionStatement","src":"2650:57:50"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2727:3:50"},{"kind":"number","nodeType":"YulLiteral","src":"2732:4:50","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2723:3:50"},"nodeType":"YulFunctionCall","src":"2723:14:50"},{"arguments":[{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2753:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"2761:4:50","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2749:3:50"},"nodeType":"YulFunctionCall","src":"2749:17:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2743:5:50"},"nodeType":"YulFunctionCall","src":"2743:24:50"},{"name":"_2","nodeType":"YulIdentifier","src":"2769:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2739:3:50"},"nodeType":"YulFunctionCall","src":"2739:33:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2716:6:50"},"nodeType":"YulFunctionCall","src":"2716:57:50"},"nodeType":"YulExpressionStatement","src":"2716:57:50"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2793:3:50"},{"kind":"number","nodeType":"YulLiteral","src":"2798:4:50","type":"","value":"0x80"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2789:3:50"},"nodeType":"YulFunctionCall","src":"2789:14:50"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2815:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"2823:4:50","type":"","value":"0x80"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2811:3:50"},"nodeType":"YulFunctionCall","src":"2811:17:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2805:5:50"},"nodeType":"YulFunctionCall","src":"2805:24:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2782:6:50"},"nodeType":"YulFunctionCall","src":"2782:48:50"},"nodeType":"YulExpressionStatement","src":"2782:48:50"},{"nodeType":"YulAssignment","src":"2839:28:50","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2857:3:50"},{"kind":"number","nodeType":"YulLiteral","src":"2862:4:50","type":"","value":"0xa0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2853:3:50"},"nodeType":"YulFunctionCall","src":"2853:14:50"},"variableNames":[{"name":"updatedPos","nodeType":"YulIdentifier","src":"2839:10:50"}]}]},"name":"abi_encodeUpdatedPos_struct_MultiTargetPermission","nodeType":"YulFunctionDefinition","parameters":[{"name":"value0","nodeType":"YulTypedName","src":"2236:6:50","type":""},{"name":"pos","nodeType":"YulTypedName","src":"2244:3:50","type":""}],"returnVariables":[{"name":"updatedPos","nodeType":"YulTypedName","src":"2252:10:50","type":""}],"src":"2177:696:50"},{"body":{"nodeType":"YulBlock","src":"3107:499:50","statements":[{"nodeType":"YulVariableDeclaration","src":"3117:12:50","value":{"kind":"number","nodeType":"YulLiteral","src":"3127:2:50","type":"","value":"32"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"3121:2:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3138:32:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3156:9:50"},{"name":"_1","nodeType":"YulIdentifier","src":"3167:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3152:3:50"},"nodeType":"YulFunctionCall","src":"3152:18:50"},"variables":[{"name":"tail_1","nodeType":"YulTypedName","src":"3142:6:50","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3186:9:50"},{"name":"_1","nodeType":"YulIdentifier","src":"3197:2:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3179:6:50"},"nodeType":"YulFunctionCall","src":"3179:21:50"},"nodeType":"YulExpressionStatement","src":"3179:21:50"},{"nodeType":"YulVariableDeclaration","src":"3209:17:50","value":{"name":"tail_1","nodeType":"YulIdentifier","src":"3220:6:50"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"3213:3:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3235:27:50","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3255:6:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3249:5:50"},"nodeType":"YulFunctionCall","src":"3249:13:50"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"3239:6:50","type":""}]},{"expression":{"arguments":[{"name":"tail_1","nodeType":"YulIdentifier","src":"3278:6:50"},{"name":"length","nodeType":"YulIdentifier","src":"3286:6:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3271:6:50"},"nodeType":"YulFunctionCall","src":"3271:22:50"},"nodeType":"YulExpressionStatement","src":"3271:22:50"},{"nodeType":"YulAssignment","src":"3302:25:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3313:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"3324:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3309:3:50"},"nodeType":"YulFunctionCall","src":"3309:18:50"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"3302:3:50"}]},{"nodeType":"YulVariableDeclaration","src":"3336:29:50","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3354:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"3362:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3350:3:50"},"nodeType":"YulFunctionCall","src":"3350:15:50"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"3340:6:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3374:10:50","value":{"kind":"number","nodeType":"YulLiteral","src":"3383:1:50","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"3378:1:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"3442:138:50","statements":[{"nodeType":"YulAssignment","src":"3456:76:50","value":{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"3519:6:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3513:5:50"},"nodeType":"YulFunctionCall","src":"3513:13:50"},{"name":"pos","nodeType":"YulIdentifier","src":"3528:3:50"}],"functionName":{"name":"abi_encodeUpdatedPos_struct_MultiTargetPermission","nodeType":"YulIdentifier","src":"3463:49:50"},"nodeType":"YulFunctionCall","src":"3463:69:50"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"3456:3:50"}]},{"nodeType":"YulAssignment","src":"3545:25:50","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"3559:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"3567:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3555:3:50"},"nodeType":"YulFunctionCall","src":"3555:15:50"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"3545:6:50"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3404:1:50"},{"name":"length","nodeType":"YulIdentifier","src":"3407:6:50"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"3401:2:50"},"nodeType":"YulFunctionCall","src":"3401:13:50"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"3415:18:50","statements":[{"nodeType":"YulAssignment","src":"3417:14:50","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3426:1:50"},{"kind":"number","nodeType":"YulLiteral","src":"3429:1:50","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3422:3:50"},"nodeType":"YulFunctionCall","src":"3422:9:50"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"3417:1:50"}]}]},"pre":{"nodeType":"YulBlock","src":"3397:3:50","statements":[]},"src":"3393:187:50"},{"nodeType":"YulAssignment","src":"3589:11:50","value":{"name":"pos","nodeType":"YulIdentifier","src":"3597:3:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3589:4:50"}]}]},"name":"abi_encode_tuple_t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3076:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3087:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3098:4:50","type":""}],"src":"2878:728:50"},{"body":{"nodeType":"YulBlock","src":"3746:465:50","statements":[{"body":{"nodeType":"YulBlock","src":"3792:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3801:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3804:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3794:6:50"},"nodeType":"YulFunctionCall","src":"3794:12:50"},"nodeType":"YulExpressionStatement","src":"3794:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3767:7:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"3776:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3763:3:50"},"nodeType":"YulFunctionCall","src":"3763:23:50"},{"kind":"number","nodeType":"YulLiteral","src":"3788:2:50","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3759:3:50"},"nodeType":"YulFunctionCall","src":"3759:32:50"},"nodeType":"YulIf","src":"3756:52:50"},{"nodeType":"YulAssignment","src":"3817:39:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3846:9:50"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"3827:18:50"},"nodeType":"YulFunctionCall","src":"3827:29:50"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3817:6:50"}]},{"nodeType":"YulVariableDeclaration","src":"3865:45:50","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3895:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"3906:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3891:3:50"},"nodeType":"YulFunctionCall","src":"3891:18:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3878:12:50"},"nodeType":"YulFunctionCall","src":"3878:32:50"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"3869:5:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"3960:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3969:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3972:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3962:6:50"},"nodeType":"YulFunctionCall","src":"3962:12:50"},"nodeType":"YulExpressionStatement","src":"3962:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3932:5:50"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3943:5:50"},{"kind":"number","nodeType":"YulLiteral","src":"3950:6:50","type":"","value":"0xffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3939:3:50"},"nodeType":"YulFunctionCall","src":"3939:18:50"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"3929:2:50"},"nodeType":"YulFunctionCall","src":"3929:29:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3922:6:50"},"nodeType":"YulFunctionCall","src":"3922:37:50"},"nodeType":"YulIf","src":"3919:57:50"},{"nodeType":"YulAssignment","src":"3985:15:50","value":{"name":"value","nodeType":"YulIdentifier","src":"3995:5:50"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"3985:6:50"}]},{"nodeType":"YulVariableDeclaration","src":"4009:46:50","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4040:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"4051:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4036:3:50"},"nodeType":"YulFunctionCall","src":"4036:18:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4023:12:50"},"nodeType":"YulFunctionCall","src":"4023:32:50"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4013:6:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"4098:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4107:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4110:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4100:6:50"},"nodeType":"YulFunctionCall","src":"4100:12:50"},"nodeType":"YulExpressionStatement","src":"4100:12:50"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"4070:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"4078:18:50","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4067:2:50"},"nodeType":"YulFunctionCall","src":"4067:30:50"},"nodeType":"YulIf","src":"4064:50:50"},{"nodeType":"YulAssignment","src":"4123:82:50","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4177:9:50"},{"name":"offset","nodeType":"YulIdentifier","src":"4188:6:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4173:3:50"},"nodeType":"YulFunctionCall","src":"4173:22:50"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4197:7:50"}],"functionName":{"name":"abi_decode_struct_SetupPayload_calldata","nodeType":"YulIdentifier","src":"4133:39:50"},"nodeType":"YulFunctionCall","src":"4133:72:50"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"4123:6:50"}]}]},"name":"abi_decode_tuple_t_addresst_uint16t_struct$_SetupPayload_$4810_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3696:9:50","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3707:7:50","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3719:6:50","type":""},{"name":"value1","nodeType":"YulTypedName","src":"3727:6:50","type":""},{"name":"value2","nodeType":"YulTypedName","src":"3735:6:50","type":""}],"src":"3611:600:50"},{"body":{"nodeType":"YulBlock","src":"4265:373:50","statements":[{"nodeType":"YulVariableDeclaration","src":"4275:26:50","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4295:5:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4289:5:50"},"nodeType":"YulFunctionCall","src":"4289:12:50"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"4279:6:50","type":""}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4317:3:50"},{"name":"length","nodeType":"YulIdentifier","src":"4322:6:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4310:6:50"},"nodeType":"YulFunctionCall","src":"4310:19:50"},"nodeType":"YulExpressionStatement","src":"4310:19:50"},{"nodeType":"YulVariableDeclaration","src":"4338:10:50","value":{"kind":"number","nodeType":"YulLiteral","src":"4347:1:50","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"4342:1:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"4409:110:50","statements":[{"nodeType":"YulVariableDeclaration","src":"4423:14:50","value":{"kind":"number","nodeType":"YulLiteral","src":"4433:4:50","type":"","value":"0x20"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"4427:2:50","type":""}]},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4465:3:50"},{"name":"i","nodeType":"YulIdentifier","src":"4470:1:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4461:3:50"},"nodeType":"YulFunctionCall","src":"4461:11:50"},{"name":"_1","nodeType":"YulIdentifier","src":"4474:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4457:3:50"},"nodeType":"YulFunctionCall","src":"4457:20:50"},{"arguments":[{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4493:5:50"},{"name":"i","nodeType":"YulIdentifier","src":"4500:1:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4489:3:50"},"nodeType":"YulFunctionCall","src":"4489:13:50"},{"name":"_1","nodeType":"YulIdentifier","src":"4504:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4485:3:50"},"nodeType":"YulFunctionCall","src":"4485:22:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4479:5:50"},"nodeType":"YulFunctionCall","src":"4479:29:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4450:6:50"},"nodeType":"YulFunctionCall","src":"4450:59:50"},"nodeType":"YulExpressionStatement","src":"4450:59:50"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"4368:1:50"},{"name":"length","nodeType":"YulIdentifier","src":"4371:6:50"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"4365:2:50"},"nodeType":"YulFunctionCall","src":"4365:13:50"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"4379:21:50","statements":[{"nodeType":"YulAssignment","src":"4381:17:50","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"4390:1:50"},{"kind":"number","nodeType":"YulLiteral","src":"4393:4:50","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4386:3:50"},"nodeType":"YulFunctionCall","src":"4386:12:50"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"4381:1:50"}]}]},"pre":{"nodeType":"YulBlock","src":"4361:3:50","statements":[]},"src":"4357:162:50"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4543:3:50"},{"name":"length","nodeType":"YulIdentifier","src":"4548:6:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4539:3:50"},"nodeType":"YulFunctionCall","src":"4539:16:50"},{"kind":"number","nodeType":"YulLiteral","src":"4557:4:50","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4535:3:50"},"nodeType":"YulFunctionCall","src":"4535:27:50"},{"kind":"number","nodeType":"YulLiteral","src":"4564:1:50","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4528:6:50"},"nodeType":"YulFunctionCall","src":"4528:38:50"},"nodeType":"YulExpressionStatement","src":"4528:38:50"},{"nodeType":"YulAssignment","src":"4575:57:50","value":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4590:3:50"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"4603:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"4611:2:50","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4599:3:50"},"nodeType":"YulFunctionCall","src":"4599:15:50"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4620:2:50","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"4616:3:50"},"nodeType":"YulFunctionCall","src":"4616:7:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4595:3:50"},"nodeType":"YulFunctionCall","src":"4595:29:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4586:3:50"},"nodeType":"YulFunctionCall","src":"4586:39:50"},{"kind":"number","nodeType":"YulLiteral","src":"4627:4:50","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4582:3:50"},"nodeType":"YulFunctionCall","src":"4582:50:50"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"4575:3:50"}]}]},"name":"abi_encode_bytes","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"4242:5:50","type":""},{"name":"pos","nodeType":"YulTypedName","src":"4249:3:50","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"4257:3:50","type":""}],"src":"4216:422:50"},{"body":{"nodeType":"YulBlock","src":"4711:1094:50","statements":[{"nodeType":"YulVariableDeclaration","src":"4721:26:50","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4737:3:50"},{"kind":"number","nodeType":"YulLiteral","src":"4742:4:50","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4733:3:50"},"nodeType":"YulFunctionCall","src":"4733:14:50"},"variables":[{"name":"tail","nodeType":"YulTypedName","src":"4725:4:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4756:32:50","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4782:5:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4776:5:50"},"nodeType":"YulFunctionCall","src":"4776:12:50"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"4760:12:50","type":""}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4804:3:50"},{"kind":"number","nodeType":"YulLiteral","src":"4809:4:50","type":"","value":"0x40"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4797:6:50"},"nodeType":"YulFunctionCall","src":"4797:17:50"},"nodeType":"YulExpressionStatement","src":"4797:17:50"},{"nodeType":"YulVariableDeclaration","src":"4823:17:50","value":{"name":"tail","nodeType":"YulIdentifier","src":"4836:4:50"},"variables":[{"name":"pos_1","nodeType":"YulTypedName","src":"4827:5:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4849:33:50","value":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"4869:12:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4863:5:50"},"nodeType":"YulFunctionCall","src":"4863:19:50"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"4853:6:50","type":""}]},{"expression":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"4898:4:50"},{"name":"length","nodeType":"YulIdentifier","src":"4904:6:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4891:6:50"},"nodeType":"YulFunctionCall","src":"4891:20:50"},"nodeType":"YulExpressionStatement","src":"4891:20:50"},{"nodeType":"YulAssignment","src":"4920:21:50","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4933:3:50"},{"kind":"number","nodeType":"YulLiteral","src":"4938:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4929:3:50"},"nodeType":"YulFunctionCall","src":"4929:12:50"},"variableNames":[{"name":"pos_1","nodeType":"YulIdentifier","src":"4920:5:50"}]},{"nodeType":"YulVariableDeclaration","src":"4950:14:50","value":{"kind":"number","nodeType":"YulLiteral","src":"4960:4:50","type":"","value":"0x20"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"4954:2:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4973:35:50","value":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"4991:12:50"},{"name":"_1","nodeType":"YulIdentifier","src":"5005:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4987:3:50"},"nodeType":"YulFunctionCall","src":"4987:21:50"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"4977:6:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5017:10:50","value":{"kind":"number","nodeType":"YulLiteral","src":"5026:1:50","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"5021:1:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"5085:175:50","statements":[{"expression":{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5106:5:50"},{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"5123:6:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5117:5:50"},"nodeType":"YulFunctionCall","src":"5117:13:50"},{"kind":"number","nodeType":"YulLiteral","src":"5132:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5113:3:50"},"nodeType":"YulFunctionCall","src":"5113:62:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5099:6:50"},"nodeType":"YulFunctionCall","src":"5099:77:50"},"nodeType":"YulExpressionStatement","src":"5099:77:50"},{"nodeType":"YulAssignment","src":"5189:23:50","value":{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5202:5:50"},{"name":"_1","nodeType":"YulIdentifier","src":"5209:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5198:3:50"},"nodeType":"YulFunctionCall","src":"5198:14:50"},"variableNames":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5189:5:50"}]},{"nodeType":"YulAssignment","src":"5225:25:50","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"5239:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"5247:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5235:3:50"},"nodeType":"YulFunctionCall","src":"5235:15:50"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"5225:6:50"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"5047:1:50"},{"name":"length","nodeType":"YulIdentifier","src":"5050:6:50"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"5044:2:50"},"nodeType":"YulFunctionCall","src":"5044:13:50"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"5058:18:50","statements":[{"nodeType":"YulAssignment","src":"5060:14:50","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"5069:1:50"},{"kind":"number","nodeType":"YulLiteral","src":"5072:1:50","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5065:3:50"},"nodeType":"YulFunctionCall","src":"5065:9:50"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"5060:1:50"}]}]},"pre":{"nodeType":"YulBlock","src":"5040:3:50","statements":[]},"src":"5036:224:50"},{"nodeType":"YulVariableDeclaration","src":"5269:43:50","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5301:5:50"},{"name":"_1","nodeType":"YulIdentifier","src":"5308:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5297:3:50"},"nodeType":"YulFunctionCall","src":"5297:14:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5291:5:50"},"nodeType":"YulFunctionCall","src":"5291:21:50"},"variables":[{"name":"memberValue0_1","nodeType":"YulTypedName","src":"5273:14:50","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5332:3:50"},{"name":"_1","nodeType":"YulIdentifier","src":"5337:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5328:3:50"},"nodeType":"YulFunctionCall","src":"5328:12:50"},{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5346:5:50"},{"name":"pos","nodeType":"YulIdentifier","src":"5353:3:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5342:3:50"},"nodeType":"YulFunctionCall","src":"5342:15:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5321:6:50"},"nodeType":"YulFunctionCall","src":"5321:37:50"},"nodeType":"YulExpressionStatement","src":"5321:37:50"},{"nodeType":"YulVariableDeclaration","src":"5367:18:50","value":{"name":"pos_1","nodeType":"YulIdentifier","src":"5380:5:50"},"variables":[{"name":"pos_2","nodeType":"YulTypedName","src":"5371:5:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5394:37:50","value":{"arguments":[{"name":"memberValue0_1","nodeType":"YulIdentifier","src":"5416:14:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5410:5:50"},"nodeType":"YulFunctionCall","src":"5410:21:50"},"variables":[{"name":"length_1","nodeType":"YulTypedName","src":"5398:8:50","type":""}]},{"expression":{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5447:5:50"},{"name":"length_1","nodeType":"YulIdentifier","src":"5454:8:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5440:6:50"},"nodeType":"YulFunctionCall","src":"5440:23:50"},"nodeType":"YulExpressionStatement","src":"5440:23:50"},{"nodeType":"YulAssignment","src":"5472:23:50","value":{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5485:5:50"},{"name":"_1","nodeType":"YulIdentifier","src":"5492:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5481:3:50"},"nodeType":"YulFunctionCall","src":"5481:14:50"},"variableNames":[{"name":"pos_2","nodeType":"YulIdentifier","src":"5472:5:50"}]},{"nodeType":"YulVariableDeclaration","src":"5504:39:50","value":{"arguments":[{"name":"memberValue0_1","nodeType":"YulIdentifier","src":"5524:14:50"},{"name":"_1","nodeType":"YulIdentifier","src":"5540:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5520:3:50"},"nodeType":"YulFunctionCall","src":"5520:23:50"},"variables":[{"name":"srcPtr_1","nodeType":"YulTypedName","src":"5508:8:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5552:12:50","value":{"kind":"number","nodeType":"YulLiteral","src":"5563:1:50","type":"","value":"0"},"variables":[{"name":"i_1","nodeType":"YulTypedName","src":"5556:3:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"5630:148:50","statements":[{"nodeType":"YulAssignment","src":"5644:82:50","value":{"arguments":[{"arguments":[{"name":"srcPtr_1","nodeType":"YulIdentifier","src":"5709:8:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5703:5:50"},"nodeType":"YulFunctionCall","src":"5703:15:50"},{"name":"pos_2","nodeType":"YulIdentifier","src":"5720:5:50"}],"functionName":{"name":"abi_encodeUpdatedPos_struct_MultiTargetPermission","nodeType":"YulIdentifier","src":"5653:49:50"},"nodeType":"YulFunctionCall","src":"5653:73:50"},"variableNames":[{"name":"pos_2","nodeType":"YulIdentifier","src":"5644:5:50"}]},{"nodeType":"YulAssignment","src":"5739:29:50","value":{"arguments":[{"name":"srcPtr_1","nodeType":"YulIdentifier","src":"5755:8:50"},{"name":"_1","nodeType":"YulIdentifier","src":"5765:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5751:3:50"},"nodeType":"YulFunctionCall","src":"5751:17:50"},"variableNames":[{"name":"srcPtr_1","nodeType":"YulIdentifier","src":"5739:8:50"}]}]},"condition":{"arguments":[{"name":"i_1","nodeType":"YulIdentifier","src":"5584:3:50"},{"name":"length_1","nodeType":"YulIdentifier","src":"5589:8:50"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"5581:2:50"},"nodeType":"YulFunctionCall","src":"5581:17:50"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"5599:22:50","statements":[{"nodeType":"YulAssignment","src":"5601:18:50","value":{"arguments":[{"name":"i_1","nodeType":"YulIdentifier","src":"5612:3:50"},{"kind":"number","nodeType":"YulLiteral","src":"5617:1:50","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5608:3:50"},"nodeType":"YulFunctionCall","src":"5608:11:50"},"variableNames":[{"name":"i_1","nodeType":"YulIdentifier","src":"5601:3:50"}]}]},"pre":{"nodeType":"YulBlock","src":"5577:3:50","statements":[]},"src":"5573:205:50"},{"nodeType":"YulAssignment","src":"5787:12:50","value":{"name":"pos_2","nodeType":"YulIdentifier","src":"5794:5:50"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"5787:3:50"}]}]},"name":"abi_encode_struct_PreparedSetupData","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"4688:5:50","type":""},{"name":"pos","nodeType":"YulTypedName","src":"4695:3:50","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"4703:3:50","type":""}],"src":"4643:1162:50"},{"body":{"nodeType":"YulBlock","src":"6027:231:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6044:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"6055:2:50","type":"","value":"64"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6037:6:50"},"nodeType":"YulFunctionCall","src":"6037:21:50"},"nodeType":"YulExpressionStatement","src":"6037:21:50"},{"nodeType":"YulVariableDeclaration","src":"6067:58:50","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6098:6:50"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6110:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"6121:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6106:3:50"},"nodeType":"YulFunctionCall","src":"6106:18:50"}],"functionName":{"name":"abi_encode_bytes","nodeType":"YulIdentifier","src":"6081:16:50"},"nodeType":"YulFunctionCall","src":"6081:44:50"},"variables":[{"name":"tail_1","nodeType":"YulTypedName","src":"6071:6:50","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6145:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"6156:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6141:3:50"},"nodeType":"YulFunctionCall","src":"6141:18:50"},{"arguments":[{"name":"tail_1","nodeType":"YulIdentifier","src":"6165:6:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"6173:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6161:3:50"},"nodeType":"YulFunctionCall","src":"6161:22:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6134:6:50"},"nodeType":"YulFunctionCall","src":"6134:50:50"},"nodeType":"YulExpressionStatement","src":"6134:50:50"},{"nodeType":"YulAssignment","src":"6193:59:50","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"6237:6:50"},{"name":"tail_1","nodeType":"YulIdentifier","src":"6245:6:50"}],"functionName":{"name":"abi_encode_struct_PreparedSetupData","nodeType":"YulIdentifier","src":"6201:35:50"},"nodeType":"YulFunctionCall","src":"6201:51:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6193:4:50"}]}]},"name":"abi_encode_tuple_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$4802_memory_ptr__to_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$4802_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5988:9:50","type":""},{"name":"value1","nodeType":"YulTypedName","src":"5999:6:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"6007:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6018:4:50","type":""}],"src":"5810:448:50"},{"body":{"nodeType":"YulBlock","src":"6295:95:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6312:1:50","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6319:3:50","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"6324:10:50","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"6315:3:50"},"nodeType":"YulFunctionCall","src":"6315:20:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6305:6:50"},"nodeType":"YulFunctionCall","src":"6305:31:50"},"nodeType":"YulExpressionStatement","src":"6305:31:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6352:1:50","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"6355:4:50","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6345:6:50"},"nodeType":"YulFunctionCall","src":"6345:15:50"},"nodeType":"YulExpressionStatement","src":"6345:15:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6376:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6379:4:50","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6369:6:50"},"nodeType":"YulFunctionCall","src":"6369:15:50"},"nodeType":"YulExpressionStatement","src":"6369:15:50"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"6263:127:50"},{"body":{"nodeType":"YulBlock","src":"6491:899:50","statements":[{"body":{"nodeType":"YulBlock","src":"6537:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6546:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6549:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6539:6:50"},"nodeType":"YulFunctionCall","src":"6539:12:50"},"nodeType":"YulExpressionStatement","src":"6539:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"6512:7:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"6521:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6508:3:50"},"nodeType":"YulFunctionCall","src":"6508:23:50"},{"kind":"number","nodeType":"YulLiteral","src":"6533:2:50","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6504:3:50"},"nodeType":"YulFunctionCall","src":"6504:32:50"},"nodeType":"YulIf","src":"6501:52:50"},{"nodeType":"YulAssignment","src":"6562:39:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6591:9:50"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"6572:18:50"},"nodeType":"YulFunctionCall","src":"6572:29:50"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"6562:6:50"}]},{"nodeType":"YulVariableDeclaration","src":"6610:46:50","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6641:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"6652:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6637:3:50"},"nodeType":"YulFunctionCall","src":"6637:18:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6624:12:50"},"nodeType":"YulFunctionCall","src":"6624:32:50"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"6614:6:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"6665:28:50","value":{"kind":"number","nodeType":"YulLiteral","src":"6675:18:50","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"6669:2:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"6720:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6729:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6732:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6722:6:50"},"nodeType":"YulFunctionCall","src":"6722:12:50"},"nodeType":"YulExpressionStatement","src":"6722:12:50"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"6708:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"6716:2:50"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6705:2:50"},"nodeType":"YulFunctionCall","src":"6705:14:50"},"nodeType":"YulIf","src":"6702:34:50"},{"nodeType":"YulVariableDeclaration","src":"6745:32:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6759:9:50"},{"name":"offset","nodeType":"YulIdentifier","src":"6770:6:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6755:3:50"},"nodeType":"YulFunctionCall","src":"6755:22:50"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"6749:2:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"6825:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6834:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6837:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6827:6:50"},"nodeType":"YulFunctionCall","src":"6827:12:50"},"nodeType":"YulExpressionStatement","src":"6827:12:50"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"6804:2:50"},{"kind":"number","nodeType":"YulLiteral","src":"6808:4:50","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6800:3:50"},"nodeType":"YulFunctionCall","src":"6800:13:50"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"6815:7:50"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6796:3:50"},"nodeType":"YulFunctionCall","src":"6796:27:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"6789:6:50"},"nodeType":"YulFunctionCall","src":"6789:35:50"},"nodeType":"YulIf","src":"6786:55:50"},{"nodeType":"YulVariableDeclaration","src":"6850:26:50","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"6873:2:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6860:12:50"},"nodeType":"YulFunctionCall","src":"6860:16:50"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"6854:2:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"6899:22:50","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"6901:16:50"},"nodeType":"YulFunctionCall","src":"6901:18:50"},"nodeType":"YulExpressionStatement","src":"6901:18:50"}]},"condition":{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"6891:2:50"},{"name":"_1","nodeType":"YulIdentifier","src":"6895:2:50"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6888:2:50"},"nodeType":"YulFunctionCall","src":"6888:10:50"},"nodeType":"YulIf","src":"6885:36:50"},{"nodeType":"YulVariableDeclaration","src":"6930:17:50","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6944:2:50","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"6940:3:50"},"nodeType":"YulFunctionCall","src":"6940:7:50"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"6934:2:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"6956:23:50","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6976:2:50","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6970:5:50"},"nodeType":"YulFunctionCall","src":"6970:9:50"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"6960:6:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"6988:71:50","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7010:6:50"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"7034:2:50"},{"kind":"number","nodeType":"YulLiteral","src":"7038:4:50","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7030:3:50"},"nodeType":"YulFunctionCall","src":"7030:13:50"},{"name":"_4","nodeType":"YulIdentifier","src":"7045:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7026:3:50"},"nodeType":"YulFunctionCall","src":"7026:22:50"},{"kind":"number","nodeType":"YulLiteral","src":"7050:2:50","type":"","value":"63"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7022:3:50"},"nodeType":"YulFunctionCall","src":"7022:31:50"},{"name":"_4","nodeType":"YulIdentifier","src":"7055:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7018:3:50"},"nodeType":"YulFunctionCall","src":"7018:40:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7006:3:50"},"nodeType":"YulFunctionCall","src":"7006:53:50"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"6992:10:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"7118:22:50","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"7120:16:50"},"nodeType":"YulFunctionCall","src":"7120:18:50"},"nodeType":"YulExpressionStatement","src":"7120:18:50"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"7077:10:50"},{"name":"_1","nodeType":"YulIdentifier","src":"7089:2:50"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"7074:2:50"},"nodeType":"YulFunctionCall","src":"7074:18:50"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"7097:10:50"},{"name":"memPtr","nodeType":"YulIdentifier","src":"7109:6:50"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"7094:2:50"},"nodeType":"YulFunctionCall","src":"7094:22:50"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"7071:2:50"},"nodeType":"YulFunctionCall","src":"7071:46:50"},"nodeType":"YulIf","src":"7068:72:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7156:2:50","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"7160:10:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7149:6:50"},"nodeType":"YulFunctionCall","src":"7149:22:50"},"nodeType":"YulExpressionStatement","src":"7149:22:50"},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7187:6:50"},{"name":"_3","nodeType":"YulIdentifier","src":"7195:2:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7180:6:50"},"nodeType":"YulFunctionCall","src":"7180:18:50"},"nodeType":"YulExpressionStatement","src":"7180:18:50"},{"body":{"nodeType":"YulBlock","src":"7244:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7253:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7256:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7246:6:50"},"nodeType":"YulFunctionCall","src":"7246:12:50"},"nodeType":"YulExpressionStatement","src":"7246:12:50"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"7221:2:50"},{"name":"_3","nodeType":"YulIdentifier","src":"7225:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7217:3:50"},"nodeType":"YulFunctionCall","src":"7217:11:50"},{"kind":"number","nodeType":"YulLiteral","src":"7230:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7213:3:50"},"nodeType":"YulFunctionCall","src":"7213:20:50"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"7235:7:50"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"7210:2:50"},"nodeType":"YulFunctionCall","src":"7210:33:50"},"nodeType":"YulIf","src":"7207:53:50"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7286:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"7294:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7282:3:50"},"nodeType":"YulFunctionCall","src":"7282:15:50"},{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"7303:2:50"},{"kind":"number","nodeType":"YulLiteral","src":"7307:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7299:3:50"},"nodeType":"YulFunctionCall","src":"7299:11:50"},{"name":"_3","nodeType":"YulIdentifier","src":"7312:2:50"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"7269:12:50"},"nodeType":"YulFunctionCall","src":"7269:46:50"},"nodeType":"YulExpressionStatement","src":"7269:46:50"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7339:6:50"},{"name":"_3","nodeType":"YulIdentifier","src":"7347:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7335:3:50"},"nodeType":"YulFunctionCall","src":"7335:15:50"},{"kind":"number","nodeType":"YulLiteral","src":"7352:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7331:3:50"},"nodeType":"YulFunctionCall","src":"7331:24:50"},{"kind":"number","nodeType":"YulLiteral","src":"7357:1:50","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7324:6:50"},"nodeType":"YulFunctionCall","src":"7324:35:50"},"nodeType":"YulExpressionStatement","src":"7324:35:50"},{"nodeType":"YulAssignment","src":"7368:16:50","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"7378:6:50"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"7368:6:50"}]}]},"name":"abi_decode_tuple_t_addresst_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6449:9:50","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"6460:7:50","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"6472:6:50","type":""},{"name":"value1","nodeType":"YulTypedName","src":"6480:6:50","type":""}],"src":"6395:995:50"},{"body":{"nodeType":"YulBlock","src":"7594:209:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7611:9:50"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7626:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"7634:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7622:3:50"},"nodeType":"YulFunctionCall","src":"7622:55:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7604:6:50"},"nodeType":"YulFunctionCall","src":"7604:74:50"},"nodeType":"YulExpressionStatement","src":"7604:74:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7698:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"7709:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7694:3:50"},"nodeType":"YulFunctionCall","src":"7694:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"7714:2:50","type":"","value":"64"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7687:6:50"},"nodeType":"YulFunctionCall","src":"7687:30:50"},"nodeType":"YulExpressionStatement","src":"7687:30:50"},{"nodeType":"YulAssignment","src":"7726:71:50","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"7770:6:50"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7782:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"7793:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7778:3:50"},"nodeType":"YulFunctionCall","src":"7778:18:50"}],"functionName":{"name":"abi_encode_struct_PreparedSetupData","nodeType":"YulIdentifier","src":"7734:35:50"},"nodeType":"YulFunctionCall","src":"7734:63:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7726:4:50"}]}]},"name":"abi_encode_tuple_t_address_t_struct$_PreparedSetupData_$4802_memory_ptr__to_t_address_t_struct$_PreparedSetupData_$4802_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7555:9:50","type":""},{"name":"value1","nodeType":"YulTypedName","src":"7566:6:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"7574:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7585:4:50","type":""}],"src":"7395:408:50"},{"body":{"nodeType":"YulBlock","src":"7907:89:50","statements":[{"nodeType":"YulAssignment","src":"7917:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7929:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"7940:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7925:3:50"},"nodeType":"YulFunctionCall","src":"7925:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7917:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7959:9:50"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7974:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"7982:6:50","type":"","value":"0xffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7970:3:50"},"nodeType":"YulFunctionCall","src":"7970:19:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7952:6:50"},"nodeType":"YulFunctionCall","src":"7952:38:50"},"nodeType":"YulExpressionStatement","src":"7952:38:50"}]},"name":"abi_encode_tuple_t_uint16__to_t_uint16__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7876:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"7887:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7898:4:50","type":""}],"src":"7808:188:50"},{"body":{"nodeType":"YulBlock","src":"8115:125:50","statements":[{"nodeType":"YulAssignment","src":"8125:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8137:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"8148:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8133:3:50"},"nodeType":"YulFunctionCall","src":"8133:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"8125:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8167:9:50"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"8182:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"8190:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8178:3:50"},"nodeType":"YulFunctionCall","src":"8178:55:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8160:6:50"},"nodeType":"YulFunctionCall","src":"8160:74:50"},"nodeType":"YulExpressionStatement","src":"8160:74:50"}]},"name":"abi_encode_tuple_t_contract$_IDAO_$2538__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8084:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"8095:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"8106:4:50","type":""}],"src":"8001:239:50"},{"body":{"nodeType":"YulBlock","src":"8277:95:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8294:1:50","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8301:3:50","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"8306:10:50","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"8297:3:50"},"nodeType":"YulFunctionCall","src":"8297:20:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8287:6:50"},"nodeType":"YulFunctionCall","src":"8287:31:50"},"nodeType":"YulExpressionStatement","src":"8287:31:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8334:1:50","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"8337:4:50","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8327:6:50"},"nodeType":"YulFunctionCall","src":"8327:15:50"},"nodeType":"YulExpressionStatement","src":"8327:15:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8358:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8361:4:50","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8351:6:50"},"nodeType":"YulFunctionCall","src":"8351:15:50"},"nodeType":"YulExpressionStatement","src":"8351:15:50"}]},"name":"panic_error_0x11","nodeType":"YulFunctionDefinition","src":"8245:127:50"},{"body":{"nodeType":"YulBlock","src":"8426:159:50","statements":[{"nodeType":"YulVariableDeclaration","src":"8436:52:50","value":{"kind":"number","nodeType":"YulLiteral","src":"8446:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"8440:2:50","type":""}]},{"nodeType":"YulAssignment","src":"8497:35:50","value":{"arguments":[{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"8513:1:50"},{"name":"_1","nodeType":"YulIdentifier","src":"8516:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8509:3:50"},"nodeType":"YulFunctionCall","src":"8509:10:50"},{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"8525:1:50"},{"name":"_1","nodeType":"YulIdentifier","src":"8528:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8521:3:50"},"nodeType":"YulFunctionCall","src":"8521:10:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"8505:3:50"},"nodeType":"YulFunctionCall","src":"8505:27:50"},"variableNames":[{"name":"diff","nodeType":"YulIdentifier","src":"8497:4:50"}]},{"body":{"nodeType":"YulBlock","src":"8557:22:50","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"8559:16:50"},"nodeType":"YulFunctionCall","src":"8559:18:50"},"nodeType":"YulExpressionStatement","src":"8559:18:50"}]},"condition":{"arguments":[{"name":"diff","nodeType":"YulIdentifier","src":"8547:4:50"},{"name":"_1","nodeType":"YulIdentifier","src":"8553:2:50"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"8544:2:50"},"nodeType":"YulFunctionCall","src":"8544:12:50"},"nodeType":"YulIf","src":"8541:38:50"}]},"name":"checked_sub_t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"8408:1:50","type":""},{"name":"y","nodeType":"YulTypedName","src":"8411:1:50","type":""}],"returnVariables":[{"name":"diff","nodeType":"YulTypedName","src":"8417:4:50","type":""}],"src":"8377:208:50"},{"body":{"nodeType":"YulBlock","src":"8622:95:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8639:1:50","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8646:3:50","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"8651:10:50","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"8642:3:50"},"nodeType":"YulFunctionCall","src":"8642:20:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8632:6:50"},"nodeType":"YulFunctionCall","src":"8632:31:50"},"nodeType":"YulExpressionStatement","src":"8632:31:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8679:1:50","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"8682:4:50","type":"","value":"0x32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8672:6:50"},"nodeType":"YulFunctionCall","src":"8672:15:50"},"nodeType":"YulExpressionStatement","src":"8672:15:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8703:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8706:4:50","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8696:6:50"},"nodeType":"YulFunctionCall","src":"8696:15:50"},"nodeType":"YulExpressionStatement","src":"8696:15:50"}]},"name":"panic_error_0x32","nodeType":"YulFunctionDefinition","src":"8590:127:50"},{"body":{"nodeType":"YulBlock","src":"8769:187:50","statements":[{"nodeType":"YulVariableDeclaration","src":"8779:52:50","value":{"kind":"number","nodeType":"YulLiteral","src":"8789:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"8783:2:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"8840:29:50","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8859:5:50"},{"name":"_1","nodeType":"YulIdentifier","src":"8866:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8855:3:50"},"nodeType":"YulFunctionCall","src":"8855:14:50"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"8844:7:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"8897:22:50","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"8899:16:50"},"nodeType":"YulFunctionCall","src":"8899:18:50"},"nodeType":"YulExpressionStatement","src":"8899:18:50"}]},"condition":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"8884:7:50"},{"name":"_1","nodeType":"YulIdentifier","src":"8893:2:50"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"8881:2:50"},"nodeType":"YulFunctionCall","src":"8881:15:50"},"nodeType":"YulIf","src":"8878:41:50"},{"nodeType":"YulAssignment","src":"8928:22:50","value":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"8939:7:50"},{"kind":"number","nodeType":"YulLiteral","src":"8948:1:50","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8935:3:50"},"nodeType":"YulFunctionCall","src":"8935:15:50"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"8928:3:50"}]}]},"name":"increment_t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"8751:5:50","type":""}],"returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"8761:3:50","type":""}],"src":"8722:234:50"},{"body":{"nodeType":"YulBlock","src":"9108:190:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9125:9:50"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"9140:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"9148:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"9136:3:50"},"nodeType":"YulFunctionCall","src":"9136:55:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9118:6:50"},"nodeType":"YulFunctionCall","src":"9118:74:50"},"nodeType":"YulExpressionStatement","src":"9118:74:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9212:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"9223:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9208:3:50"},"nodeType":"YulFunctionCall","src":"9208:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"9228:2:50","type":"","value":"64"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9201:6:50"},"nodeType":"YulFunctionCall","src":"9201:30:50"},"nodeType":"YulExpressionStatement","src":"9201:30:50"},{"nodeType":"YulAssignment","src":"9240:52:50","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"9265:6:50"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9277:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"9288:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9273:3:50"},"nodeType":"YulFunctionCall","src":"9273:18:50"}],"functionName":{"name":"abi_encode_bytes","nodeType":"YulIdentifier","src":"9248:16:50"},"nodeType":"YulFunctionCall","src":"9248:44:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"9240:4:50"}]}]},"name":"abi_encode_tuple_t_address_t_bytes_memory_ptr__to_t_address_t_bytes_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9069:9:50","type":""},{"name":"value1","nodeType":"YulTypedName","src":"9080:6:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"9088:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"9099:4:50","type":""}],"src":"8961:337:50"}]},"contents":"{\n { }\n function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n if iszero(eq(value, and(value, shl(224, 0xffffffff)))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 96)\n let pos := headStart\n pos := headStart\n let srcPtr := value0\n let i := 0\n for { } lt(i, 0x03) { i := add(i, 1) }\n {\n mstore(pos, and(mload(srcPtr), 0xff))\n let _1 := 0x20\n pos := add(pos, _1)\n srcPtr := add(srcPtr, _1)\n }\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_decode_address(offset) -> value\n {\n value := calldataload(offset)\n if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n }\n function abi_decode_struct_SetupPayload_calldata(offset, end) -> value\n {\n if slt(sub(end, offset), 96) { revert(0, 0) }\n value := offset\n }\n function abi_decode_tuple_t_addresst_struct$_SetupPayload_$4810_calldata_ptr(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n let offset := calldataload(add(headStart, 32))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n value1 := abi_decode_struct_SetupPayload_calldata(add(headStart, offset), dataEnd)\n }\n function panic_error_0x21()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x21)\n revert(0, 0x24)\n }\n function abi_encodeUpdatedPos_struct_MultiTargetPermission(value0, pos) -> updatedPos\n {\n let _1 := mload(value0)\n if iszero(lt(_1, 3))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x21)\n revert(0, 0x24)\n }\n mstore(pos, _1)\n let memberValue0 := mload(add(value0, 0x20))\n let _2 := 0xffffffffffffffffffffffffffffffffffffffff\n mstore(add(pos, 0x20), and(memberValue0, _2))\n mstore(add(pos, 0x40), and(mload(add(value0, 0x40)), _2))\n mstore(add(pos, 0x60), and(mload(add(value0, 0x60)), _2))\n mstore(add(pos, 0x80), mload(add(value0, 0x80)))\n updatedPos := add(pos, 0xa0)\n }\n function abi_encode_tuple_t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n let _1 := 32\n let tail_1 := add(headStart, _1)\n mstore(headStart, _1)\n let pos := tail_1\n let length := mload(value0)\n mstore(tail_1, length)\n pos := add(headStart, 64)\n let srcPtr := add(value0, _1)\n let i := 0\n for { } lt(i, length) { i := add(i, 1) }\n {\n pos := abi_encodeUpdatedPos_struct_MultiTargetPermission(mload(srcPtr), pos)\n srcPtr := add(srcPtr, _1)\n }\n tail := pos\n }\n function abi_decode_tuple_t_addresst_uint16t_struct$_SetupPayload_$4810_calldata_ptr(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n let value := calldataload(add(headStart, 32))\n if iszero(eq(value, and(value, 0xffff))) { revert(0, 0) }\n value1 := value\n let offset := calldataload(add(headStart, 64))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n value2 := abi_decode_struct_SetupPayload_calldata(add(headStart, offset), dataEnd)\n }\n function abi_encode_bytes(value, pos) -> end\n {\n let length := mload(value)\n mstore(pos, length)\n let i := 0\n for { } lt(i, length) { i := add(i, 0x20) }\n {\n let _1 := 0x20\n mstore(add(add(pos, i), _1), mload(add(add(value, i), _1)))\n }\n mstore(add(add(pos, length), 0x20), 0)\n end := add(add(pos, and(add(length, 31), not(31))), 0x20)\n }\n function abi_encode_struct_PreparedSetupData(value, pos) -> end\n {\n let tail := add(pos, 0x40)\n let memberValue0 := mload(value)\n mstore(pos, 0x40)\n let pos_1 := tail\n let length := mload(memberValue0)\n mstore(tail, length)\n pos_1 := add(pos, 96)\n let _1 := 0x20\n let srcPtr := add(memberValue0, _1)\n let i := 0\n for { } lt(i, length) { i := add(i, 1) }\n {\n mstore(pos_1, and(mload(srcPtr), 0xffffffffffffffffffffffffffffffffffffffff))\n pos_1 := add(pos_1, _1)\n srcPtr := add(srcPtr, _1)\n }\n let memberValue0_1 := mload(add(value, _1))\n mstore(add(pos, _1), sub(pos_1, pos))\n let pos_2 := pos_1\n let length_1 := mload(memberValue0_1)\n mstore(pos_1, length_1)\n pos_2 := add(pos_1, _1)\n let srcPtr_1 := add(memberValue0_1, _1)\n let i_1 := 0\n for { } lt(i_1, length_1) { i_1 := add(i_1, 1) }\n {\n pos_2 := abi_encodeUpdatedPos_struct_MultiTargetPermission(mload(srcPtr_1), pos_2)\n srcPtr_1 := add(srcPtr_1, _1)\n }\n end := pos_2\n }\n function abi_encode_tuple_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$4802_memory_ptr__to_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$4802_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n {\n mstore(headStart, 64)\n let tail_1 := abi_encode_bytes(value0, add(headStart, 64))\n mstore(add(headStart, 32), sub(tail_1, headStart))\n tail := abi_encode_struct_PreparedSetupData(value1, tail_1)\n }\n function panic_error_0x41()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function abi_decode_tuple_t_addresst_bytes_memory_ptr(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n let offset := calldataload(add(headStart, 32))\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n let _2 := add(headStart, offset)\n if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n let _3 := calldataload(_2)\n if gt(_3, _1) { panic_error_0x41() }\n let _4 := not(31)\n let memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n mstore(memPtr, _3)\n if gt(add(add(_2, _3), 32), dataEnd) { revert(0, 0) }\n calldatacopy(add(memPtr, 32), add(_2, 32), _3)\n mstore(add(add(memPtr, _3), 32), 0)\n value1 := memPtr\n }\n function abi_encode_tuple_t_address_t_struct$_PreparedSetupData_$4802_memory_ptr__to_t_address_t_struct$_PreparedSetupData_$4802_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n {\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n mstore(add(headStart, 32), 64)\n tail := abi_encode_struct_PreparedSetupData(value1, add(headStart, 64))\n }\n function abi_encode_tuple_t_uint16__to_t_uint16__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffff))\n }\n function abi_encode_tuple_t_contract$_IDAO_$2538__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function panic_error_0x11()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n function checked_sub_t_uint160(x, y) -> diff\n {\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n diff := sub(and(x, _1), and(y, _1))\n if gt(diff, _1) { panic_error_0x11() }\n }\n function panic_error_0x32()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n function increment_t_uint160(value) -> ret\n {\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n let value_1 := and(value, _1)\n if eq(value_1, _1) { panic_error_0x11() }\n ret := add(value_1, 1)\n }\n function abi_encode_tuple_t_address_t_bytes_memory_ptr__to_t_address_t_bytes_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n {\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n mstore(add(headStart, 32), 64)\n tail := abi_encode_bytes(value1, add(headStart, 64))\n }\n}","id":50,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{"4977":[{"length":32,"start":210},{"length":32,"start":825}]},"linkReferences":{},"object":"60806040523480156200001157600080fd5b50600436106200007b5760003560e01c80639cb0a12411620000565780639cb0a12414620000fd578063a8a9c29e1462000123578063f10832f1146200014a57600080fd5b806301ffc9a714620000805780632ae9c60014620000ac5780635c60da1b14620000c5575b600080fd5b62000097620000913660046200065e565b62000171565b60405190151581526020015b60405180910390f35b620000b6620001c4565b604051620000a391906200068a565b6040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152602001620000a3565b620001146200010e366004620006f0565b620001f0565b604051620000a39190620007c1565b6200013a620001343660046200080e565b62000209565b604051620000a39291906200095d565b620001616200015b366004620009a5565b620002b5565b604051620000a392919062000a73565b60006001600160e01b0319821663099718b560e41b1480620001a257506001600160e01b03198216621574e360e91b145b80620001be57506301ffc9a760e01b6001600160e01b03198316145b92915050565b620001ce62000632565b5060408051606081018252600181526004602082015260009181019190915290565b60606200020260006002600162000399565b9392505050565b606062000229604051806040016040528060608152602001606081525090565b8361ffff16600103620002ad5762000242600262000532565b815260405161ffff8516602482015260440160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166239a8c560e41b1790529150620002a761ffff85166002600062000399565b60208201525b935093915050565b6000620002d5604051806040016040528060608152602001606081525090565b6040516001600160a01b038516602482015260009060440160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663189acdbd60e31b17905290506200036b816200035b7f000000000000000000000000000000000000000000000000000000000000000090565b6001600160a01b031690620005f6565b925062000379600262000532565b82526200038a600060028162000399565b60208301525090939092509050565b6060826001600160a01b0316846001600160a01b03161115620003cf57604051633a4013cd60e21b815260040160405180910390fd5b620003db848462000ab5565b6001600160a01b031667ffffffffffffffff811115620003ff57620003ff6200098f565b6040519080825280602002602001820160405280156200045a57816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282526000199092019101816200041e5790505b509050835b836001600160a01b0316816001600160a01b031610156200052a576040518060a001604052808460028111156200049a576200049a62000744565b81526001600160a01b038316602082018190526040820152600060608201527fa280eec51ab8e1bc4b6b0c1b7f1bde785761b787a49db404e3e9338ed9b016ef60809091015282620004ed878462000ab5565b6001600160a01b03168151811062000509576200050962000adf565b60200260200101819052508080620005219062000af5565b9150506200045f565b509392505050565b6060816001600160a01b031667ffffffffffffffff8111156200055957620005596200098f565b60405190808252806020026020018201604052801562000583578160200160208202803683370190505b50905060005b826001600160a01b0316816001600160a01b03161015620005f0578082826001600160a01b031681518110620005c357620005c362000adf565b6001600160a01b039092166020928302919091019091015280620005e78162000af5565b91505062000589565b50919050565b60008282604051620006089062000650565b6200061592919062000b1e565b604051809103906000f0801580156200052a573d6000803e3d6000fd5b60405180606001604052806003906020820280368337509192915050565b6106fe8062000b4383390190565b6000602082840312156200067157600080fd5b81356001600160e01b0319811681146200020257600080fd5b60608101818360005b6003811015620006b757815160ff1683526020928301929091019060010162000693565b50505092915050565b80356001600160a01b0381168114620006d857600080fd5b919050565b600060608284031215620005f057600080fd5b600080604083850312156200070457600080fd5b6200070f83620006c0565b9150602083013567ffffffffffffffff8111156200072c57600080fd5b6200073a85828601620006dd565b9150509250929050565b634e487b7160e01b600052602160045260246000fd5b60008151600381106200077d57634e487b7160e01b600052602160045260246000fd5b8352506020818101516001600160a01b0390811691840191909152604080830151821690840152606080830151909116908301526080908101519082015260a00190565b6020808252825182820181905260009190848201906040850190845b818110156200080257620007f38385516200075a565b938501939250600101620007dd565b50909695505050505050565b6000806000606084860312156200082457600080fd5b6200082f84620006c0565b9250602084013561ffff811681146200084757600080fd5b9150604084013567ffffffffffffffff8111156200086457600080fd5b6200087286828701620006dd565b9150509250925092565b6000815180845260005b81811015620008a45760208185018101518683018201520162000886565b506000602082860101526020601f19601f83011685010191505092915050565b805160408084528151908401819052600091602091908201906060860190845b818110156200090b5783516001600160a01b031683529284019291840191600101620008e4565b50508483015186820387850152805180835290840192506000918401905b8083101562000952576200093f8285516200075a565b9150848401935060018301925062000929565b509695505050505050565b6040815260006200097260408301856200087c565b8281036020840152620009868185620008c4565b95945050505050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215620009b957600080fd5b620009c483620006c0565b9150602083013567ffffffffffffffff80821115620009e257600080fd5b818501915085601f830112620009f757600080fd5b81358181111562000a0c5762000a0c6200098f565b604051601f8201601f19908116603f0116810190838211818310171562000a375762000a376200098f565b8160405282815288602084870101111562000a5157600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6001600160a01b038316815260406020820152600062000a976040830184620008c4565b949350505050565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0382811682821603908082111562000ad85762000ad862000a9f565b5092915050565b634e487b7160e01b600052603260045260246000fd5b60006001600160a01b0380831681810362000b145762000b1462000a9f565b6001019392505050565b6001600160a01b038316815260406020820152600062000a9760408301846200087c56fe60806040526040516106fe3803806106fe83398101604081905261002291610319565b61002e82826000610035565b5050610436565b61003e8361006b565b60008251118061004b5750805b156100665761006483836100ab60201b6100291760201c565b505b505050565b610074816100d7565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606100d083836040518060600160405280602781526020016106d7602791396101a9565b9392505050565b6100ea8161022260201b6100551760201c565b6101515760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b806101887f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61023160201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6060600080856001600160a01b0316856040516101c691906103e7565b600060405180830381855af49150503d8060008114610201576040519150601f19603f3d011682016040523d82523d6000602084013e610206565b606091505b50909250905061021886838387610234565b9695505050505050565b6001600160a01b03163b151590565b90565b606083156102a357825160000361029c576001600160a01b0385163b61029c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610148565b50816102ad565b6102ad83836102b5565b949350505050565b8151156102c55781518083602001fd5b8060405162461bcd60e51b81526004016101489190610403565b634e487b7160e01b600052604160045260246000fd5b60005b838110156103105781810151838201526020016102f8565b50506000910152565b6000806040838503121561032c57600080fd5b82516001600160a01b038116811461034357600080fd5b60208401519092506001600160401b038082111561036057600080fd5b818501915085601f83011261037457600080fd5b815181811115610386576103866102df565b604051601f8201601f19908116603f011681019083821181831017156103ae576103ae6102df565b816040528281528860208487010111156103c757600080fd5b6103d88360208301602088016102f5565b80955050505050509250929050565b600082516103f98184602087016102f5565b9190910192915050565b60208152600082518060208401526104228160408501602087016102f5565b601f01601f19169190910160400192915050565b610292806104456000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b61009f565b565b606061004e838360405180606001604052806027815260200161025f602791396100c3565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e8080156100be573d6000f35b3d6000fd5b6060600080856001600160a01b0316856040516100e0919061020f565b600060405180830381855af49150503d806000811461011b576040519150601f19603f3d011682016040523d82523d6000602084013e610120565b606091505b50915091506101318683838761013b565b9695505050505050565b606083156101af5782516000036101a8576001600160a01b0385163b6101a85760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b50816101b9565b6101b983836101c1565b949350505050565b8151156101d15781518083602001fd5b8060405162461bcd60e51b815260040161019f919061022b565b60005b838110156102065781810151838201526020016101ee565b50506000910152565b600082516102218184602087016101eb565b9190910192915050565b602081526000825180602084015261024a8160408501602087016101eb565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH3 0x7B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9CB0A124 GT PUSH3 0x56 JUMPI DUP1 PUSH4 0x9CB0A124 EQ PUSH3 0xFD JUMPI DUP1 PUSH4 0xA8A9C29E EQ PUSH3 0x123 JUMPI DUP1 PUSH4 0xF10832F1 EQ PUSH3 0x14A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH3 0x80 JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH3 0xAC JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH3 0xC5 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x97 PUSH3 0x91 CALLDATASIZE PUSH1 0x4 PUSH3 0x65E JUMP JUMPDEST PUSH3 0x171 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0xB6 PUSH3 0x1C4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0xA3 SWAP2 SWAP1 PUSH3 0x68A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH3 0xA3 JUMP JUMPDEST PUSH3 0x114 PUSH3 0x10E CALLDATASIZE PUSH1 0x4 PUSH3 0x6F0 JUMP JUMPDEST PUSH3 0x1F0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0xA3 SWAP2 SWAP1 PUSH3 0x7C1 JUMP JUMPDEST PUSH3 0x13A PUSH3 0x134 CALLDATASIZE PUSH1 0x4 PUSH3 0x80E JUMP JUMPDEST PUSH3 0x209 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0xA3 SWAP3 SWAP2 SWAP1 PUSH3 0x95D JUMP JUMPDEST PUSH3 0x161 PUSH3 0x15B CALLDATASIZE PUSH1 0x4 PUSH3 0x9A5 JUMP JUMPDEST PUSH3 0x2B5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0xA3 SWAP3 SWAP2 SWAP1 PUSH3 0xA73 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x99718B5 PUSH1 0xE4 SHL EQ DUP1 PUSH3 0x1A2 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH3 0x1BE JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH3 0x1CE PUSH3 0x632 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH3 0x202 PUSH1 0x0 PUSH1 0x2 PUSH1 0x1 PUSH3 0x399 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH3 0x229 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST DUP4 PUSH2 0xFFFF AND PUSH1 0x1 SUB PUSH3 0x2AD JUMPI PUSH3 0x242 PUSH1 0x2 PUSH3 0x532 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x40 MLOAD PUSH2 0xFFFF DUP6 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH3 0x39A8C5 PUSH1 0xE4 SHL OR SWAP1 MSTORE SWAP2 POP PUSH3 0x2A7 PUSH2 0xFFFF DUP6 AND PUSH1 0x2 PUSH1 0x0 PUSH3 0x399 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE JUMPDEST SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x2D5 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 PUSH1 0x44 ADD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x189ACDBD PUSH1 0xE3 SHL OR SWAP1 MSTORE SWAP1 POP PUSH3 0x36B DUP2 PUSH3 0x35B PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH3 0x5F6 JUMP JUMPDEST SWAP3 POP PUSH3 0x379 PUSH1 0x2 PUSH3 0x532 JUMP JUMPDEST DUP3 MSTORE PUSH3 0x38A PUSH1 0x0 PUSH1 0x2 DUP2 PUSH3 0x399 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP SWAP1 SWAP4 SWAP1 SWAP3 POP SWAP1 POP JUMP JUMPDEST PUSH1 0x60 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH3 0x3CF JUMPI PUSH1 0x40 MLOAD PUSH4 0x3A4013CD PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0x3DB DUP5 DUP5 PUSH3 0xAB5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x3FF JUMPI PUSH3 0x3FF PUSH3 0x98F JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH3 0x45A JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD DUP3 SWAP1 MSTORE SWAP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 DUP3 ADD MSTORE DUP3 MSTORE PUSH1 0x0 NOT SWAP1 SWAP3 ADD SWAP2 ADD DUP2 PUSH3 0x41E JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP DUP4 JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT ISZERO PUSH3 0x52A JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 DUP5 PUSH1 0x2 DUP2 GT ISZERO PUSH3 0x49A JUMPI PUSH3 0x49A PUSH3 0x744 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x60 DUP3 ADD MSTORE PUSH32 0xA280EEC51AB8E1BC4B6B0C1B7F1BDE785761B787A49DB404E3E9338ED9B016EF PUSH1 0x80 SWAP1 SWAP2 ADD MSTORE DUP3 PUSH3 0x4ED DUP8 DUP5 PUSH3 0xAB5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MLOAD DUP2 LT PUSH3 0x509 JUMPI PUSH3 0x509 PUSH3 0xADF JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP DUP1 DUP1 PUSH3 0x521 SWAP1 PUSH3 0xAF5 JUMP JUMPDEST SWAP2 POP POP PUSH3 0x45F JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x559 JUMPI PUSH3 0x559 PUSH3 0x98F JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH3 0x583 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT ISZERO PUSH3 0x5F0 JUMPI DUP1 DUP3 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MLOAD DUP2 LT PUSH3 0x5C3 JUMPI PUSH3 0x5C3 PUSH3 0xADF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE DUP1 PUSH3 0x5E7 DUP2 PUSH3 0xAF5 JUMP JUMPDEST SWAP2 POP POP PUSH3 0x589 JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH3 0x608 SWAP1 PUSH3 0x650 JUMP JUMPDEST PUSH3 0x615 SWAP3 SWAP2 SWAP1 PUSH3 0xB1E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH3 0x52A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x6FE DUP1 PUSH3 0xB43 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x671 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH3 0x202 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH3 0x6B7 JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH3 0x693 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x6D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x5F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x704 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x70F DUP4 PUSH3 0x6C0 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x72C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x73A DUP6 DUP3 DUP7 ADD PUSH3 0x6DD JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP2 MLOAD PUSH1 0x3 DUP2 LT PUSH3 0x77D JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP4 MSTORE POP PUSH1 0x20 DUP2 DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP1 DUP4 ADD MLOAD DUP3 AND SWAP1 DUP5 ADD MSTORE PUSH1 0x60 DUP1 DUP4 ADD MLOAD SWAP1 SWAP2 AND SWAP1 DUP4 ADD MSTORE PUSH1 0x80 SWAP1 DUP2 ADD MLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x802 JUMPI PUSH3 0x7F3 DUP4 DUP6 MLOAD PUSH3 0x75A JUMP JUMPDEST SWAP4 DUP6 ADD SWAP4 SWAP3 POP PUSH1 0x1 ADD PUSH3 0x7DD JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH3 0x824 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x82F DUP5 PUSH3 0x6C0 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH3 0x847 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x864 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x872 DUP7 DUP3 DUP8 ADD PUSH3 0x6DD JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x8A4 JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD DUP3 ADD MSTORE ADD PUSH3 0x886 JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x20 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x20 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x40 DUP1 DUP5 MSTORE DUP2 MLOAD SWAP1 DUP5 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x20 SWAP2 SWAP1 DUP3 ADD SWAP1 PUSH1 0x60 DUP7 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x90B JUMPI DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH3 0x8E4 JUMP JUMPDEST POP POP DUP5 DUP4 ADD MLOAD DUP7 DUP3 SUB DUP8 DUP6 ADD MSTORE DUP1 MLOAD DUP1 DUP4 MSTORE SWAP1 DUP5 ADD SWAP3 POP PUSH1 0x0 SWAP2 DUP5 ADD SWAP1 JUMPDEST DUP1 DUP4 LT ISZERO PUSH3 0x952 JUMPI PUSH3 0x93F DUP3 DUP6 MLOAD PUSH3 0x75A JUMP JUMPDEST SWAP2 POP DUP5 DUP5 ADD SWAP4 POP PUSH1 0x1 DUP4 ADD SWAP3 POP PUSH3 0x929 JUMP JUMPDEST POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 PUSH3 0x972 PUSH1 0x40 DUP4 ADD DUP6 PUSH3 0x87C JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 ADD MSTORE PUSH3 0x986 DUP2 DUP6 PUSH3 0x8C4 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x9B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x9C4 DUP4 PUSH3 0x6C0 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH3 0x9E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x9F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH3 0xA0C JUMPI PUSH3 0xA0C PUSH3 0x98F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH3 0xA37 JUMPI PUSH3 0xA37 PUSH3 0x98F JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH3 0xA51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH3 0xA97 PUSH1 0x40 DUP4 ADD DUP5 PUSH3 0x8C4 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND DUP3 DUP3 AND SUB SWAP1 DUP1 DUP3 GT ISZERO PUSH3 0xAD8 JUMPI PUSH3 0xAD8 PUSH3 0xA9F JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND DUP2 DUP2 SUB PUSH3 0xB14 JUMPI PUSH3 0xB14 PUSH3 0xA9F JUMP JUMPDEST PUSH1 0x1 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH3 0xA97 PUSH1 0x40 DUP4 ADD DUP5 PUSH3 0x87C JUMP INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH2 0x6FE CODESIZE SUB DUP1 PUSH2 0x6FE DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x22 SWAP2 PUSH2 0x319 JUMP JUMPDEST PUSH2 0x2E DUP3 DUP3 PUSH1 0x0 PUSH2 0x35 JUMP JUMPDEST POP POP PUSH2 0x436 JUMP JUMPDEST PUSH2 0x3E DUP4 PUSH2 0x6B JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD GT DUP1 PUSH2 0x4B JUMPI POP DUP1 JUMPDEST ISZERO PUSH2 0x66 JUMPI PUSH2 0x64 DUP4 DUP4 PUSH2 0xAB PUSH1 0x20 SHL PUSH2 0x29 OR PUSH1 0x20 SHR JUMP JUMPDEST POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x74 DUP2 PUSH2 0xD7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xD0 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x6D7 PUSH1 0x27 SWAP2 CODECOPY PUSH2 0x1A9 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xEA DUP2 PUSH2 0x222 PUSH1 0x20 SHL PUSH2 0x55 OR PUSH1 0x20 SHR JUMP JUMPDEST PUSH2 0x151 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313936373A206E657720696D706C656D656E746174696F6E206973206E PUSH1 0x44 DUP3 ADD MSTORE PUSH13 0x1BDD08184818DBDB9D1C9858DD PUSH1 0x9A SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH2 0x188 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC PUSH1 0x0 SHL PUSH2 0x231 PUSH1 0x20 SHL PUSH2 0x64 OR PUSH1 0x20 SHR JUMP JUMPDEST DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0x1C6 SWAP2 SWAP1 PUSH2 0x3E7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x201 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x206 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x218 DUP7 DUP4 DUP4 DUP8 PUSH2 0x234 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x2A3 JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0x29C JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0x29C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x148 JUMP JUMPDEST POP DUP2 PUSH2 0x2AD JUMP JUMPDEST PUSH2 0x2AD DUP4 DUP4 PUSH2 0x2B5 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x2C5 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x148 SWAP2 SWAP1 PUSH2 0x403 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x310 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2F8 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x32C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x343 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x360 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x374 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x386 JUMPI PUSH2 0x386 PUSH2 0x2DF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x3AE JUMPI PUSH2 0x3AE PUSH2 0x2DF JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x3C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3D8 DUP4 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x2F5 JUMP JUMPDEST DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x3F9 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x2F5 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x422 DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x2F5 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x292 DUP1 PUSH2 0x445 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLDATASIZE PUSH2 0x13 JUMPI PUSH2 0x11 PUSH2 0x17 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x11 JUMPDEST PUSH2 0x27 PUSH2 0x22 PUSH2 0x67 JUMP JUMPDEST PUSH2 0x9F JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x60 PUSH2 0x4E DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x25F PUSH1 0x27 SWAP2 CODECOPY PUSH2 0xC3 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9A PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 DUP1 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE PUSH1 0x0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH2 0xBE JUMPI RETURNDATASIZE PUSH1 0x0 RETURN JUMPDEST RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0xE0 SWAP2 SWAP1 PUSH2 0x20F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x11B JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x120 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x131 DUP7 DUP4 DUP4 DUP8 PUSH2 0x13B JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x1AF JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0x1A8 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0x1A8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP DUP2 PUSH2 0x1B9 JUMP JUMPDEST PUSH2 0x1B9 DUP4 DUP4 PUSH2 0x1C1 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x1D1 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x19F SWAP2 SWAP1 PUSH2 0x22B JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x206 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1EE JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x221 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x1EB JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x24A DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x1EB JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A164 PUSH20 0x6F6C6343000811000A416464726573733A206C6F PUSH24 0x2D6C6576656C2064656C65676174652063616C6C20666169 PUSH13 0x6564A164736F6C634300081100 EXP ","sourceMap":"2565:1940:32:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1852:293:46;;;;;;:::i;:::-;;:::i;:::-;;;470:14:50;;463:22;445:41;;433:2;418:18;1852:293:46;;;;;;;;631:98:49;;;:::i;:::-;;;;;;;:::i;2184:94:46:-;;;-1:-1:-1;;;;;2257:14:46;1167:55:50;1149:74;;1137:2;1122:18;2184:94:46;1003:226:50;4204:299:32;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;3462:703::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;2848:575::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;1852:293:46:-;1938:4;-1:-1:-1;;;;;;1973:46:46;;-1:-1:-1;;;1973:46:46;;:112;;-1:-1:-1;;;;;;;2035:50:46;;-1:-1:-1;;;2035:50:46;1973:112;:165;;;-1:-1:-1;;;;;;;;;;937:40:23;;;2101:37:46;1954:184;1852:293;-1:-1:-1;;1852:293:46:o;631:98:49:-;679:15;;:::i;:::-;-1:-1:-1;706:16:49;;;;;;;;714:1;706:16;;717:1;706:16;;;;-1:-1:-1;706:16:49;;;;;;;;631:98::o;4204:299:32:-;4326:56;4434:62;4450:1;2714;4465:30;4434:15;:62::i;:::-;4420:76;4204:299;-1:-1:-1;;;4204:299:32:o;3462:703::-;3644:21;3667:42;-1:-1:-1;;;;;;;;;;;;;;;;;;;3667:42:32;3787:10;:15;;3801:1;3787:15;3783:376;;3846:23;2714:1;3846:11;:23::i;:::-;3818:51;;3894:76;;7982:6:50;7970:19;;3894:76:32;;;7952:38:50;7925:18;;3894:76:32;;;-1:-1:-1;;3894:76:32;;;;;;;;;;;;;;;;-1:-1:-1;;;3894:76:32;;;;-1:-1:-1;4016:132:32;;;;2714:1;-1:-1:-1;4016:15:32;:132::i;:::-;3984:29;;;:164;3783:376;3462:703;;;;;;:::o;2848:575::-;2945:14;2961:42;-1:-1:-1;;;;;;;;;;;;;;;;;;;2961:42:32;3039:106;;-1:-1:-1;;;;;1167:55:50;;3039:106:32;;;1149:74:50;3015:21:32;;1122:18:50;;3039:106:32;;;-1:-1:-1;;3039:106:32;;;;;;;;;;;;;;;;-1:-1:-1;;;3039:106:32;;;;-1:-1:-1;3164:42:32;3039:106;3164:16;2257:14:46;;2184:94;3164:16:32;-1:-1:-1;;;;;3164:32:32;;;:42::i;:::-;3155:51;-1:-1:-1;3244:23:32;2714:1;3244:11;:23::i;:::-;3216:51;;3309:107;3216:25;2714:1;3216:25;3309:15;:107::i;:::-;3277:29;;;:139;-1:-1:-1;2848:575:32;;3277:17;;-1:-1:-1;2848:575:32;-1:-1:-1;2848:575:32:o;580:666:30:-;699:56;780:8;-1:-1:-1;;;;;767:21:30;:10;-1:-1:-1;;;;;767:21:30;;763:53;;;797:19;;-1:-1:-1;;;797:19:30;;;;;;;;;;;763:53;879:21;890:10;879:8;:21;:::i;:::-;-1:-1:-1;;;;;837:64:30;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;837:64:30;;-1:-1:-1;;837:64:30;;;;;;;;;;;-1:-1:-1;823:78:30;-1:-1:-1;925:10:30;908:336;941:8;-1:-1:-1;;;;;937:12:30;:1;-1:-1:-1;;;;;937:12:30;;908:336;;;996:241;;;;;;;;1057:2;996:241;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;996:241:30;;;;;;;;;;;;-1:-1:-1;996:241:30;;;;1198:28;996:241;;;;;966:11;978:14;982:10;1088:1;978:14;:::i;:::-;-1:-1:-1;;;;;966:27:30;;;;;;;;;:::i;:::-;;;;;;:271;;;;951:3;;;;;:::i;:::-;;;;908:336;;;;580:666;;;;;:::o;1529:191::-;1577:24;1633:3;-1:-1:-1;;;;;1619:18:30;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1619:18:30;;1609:28;;1649:9;1644:74;1668:3;-1:-1:-1;;;;;1664:7:30;:1;-1:-1:-1;;;;;1664:7:30;;1644:74;;;1709:1;1688:7;1696:1;-1:-1:-1;;;;;1688:10:30;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1688:23:30;;;:10;;;;;;;;;;;:23;1673:3;;;;:::i;:::-;;;;1644:74;;;;1529:191;;;:::o;1415:222:47:-;1524:17;1599:6;1614:13;1573:56;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::o;14:286:50:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:50;;209:43;;199:71;;266:1;263;256:12;497:501;673:2;658:18;;662:9;753:6;631:4;787:205;801:4;798:1;795:11;787:205;;;864:13;;879:4;860:24;848:37;;908:4;932:12;;;;967:15;;;;821:1;814:9;787:205;;;791:3;;;497:501;;;;:::o;1234:196::-;1302:20;;-1:-1:-1;;;;;1351:54:50;;1341:65;;1331:93;;1420:1;1417;1410:12;1331:93;1234:196;;;:::o;1435:160::-;1500:5;1545:2;1536:6;1531:3;1527:16;1523:25;1520:45;;;1561:1;1558;1551:12;1600:440;1700:6;1708;1761:2;1749:9;1740:7;1736:23;1732:32;1729:52;;;1777:1;1774;1767:12;1729:52;1800:29;1819:9;1800:29;:::i;:::-;1790:39;;1880:2;1869:9;1865:18;1852:32;1907:18;1899:6;1896:30;1893:50;;;1939:1;1936;1929:12;1893:50;1962:72;2026:7;2017:6;2006:9;2002:22;1962:72;:::i;:::-;1952:82;;;1600:440;;;;;:::o;2045:127::-;2106:10;2101:3;2097:20;2094:1;2087:31;2137:4;2134:1;2127:15;2161:4;2158:1;2151:15;2177:696;2252:10;2293:6;2287:13;2326:1;2322:2;2319:9;2309:140;;2371:10;2366:3;2362:20;2359:1;2352:31;2406:4;2403:1;2396:15;2434:4;2431:1;2424:15;2309:140;2458:15;;-1:-1:-1;2520:4:50;2508:17;;;2502:24;-1:-1:-1;;;;;2619:21:50;;;2603:14;;;2596:45;;;;2695:4;2683:17;;;2677:24;2673:33;;2657:14;;;2650:57;2761:4;2749:17;;;2743:24;2739:33;;;2723:14;;;2716:57;2823:4;2811:17;;;2805:24;2789:14;;;2782:48;2862:4;2853:14;;2177:696::o;2878:728::-;3127:2;3179:21;;;3249:13;;3152:18;;;3271:22;;;3098:4;;3127:2;3350:15;;;;3324:2;3309:18;;;3098:4;3393:187;3407:6;3404:1;3401:13;3393:187;;;3463:69;3528:3;3519:6;3513:13;3463:69;:::i;:::-;3555:15;;;;3456:76;-1:-1:-1;3429:1:50;3422:9;3393:187;;;-1:-1:-1;3597:3:50;;2878:728;-1:-1:-1;;;;;;2878:728:50:o;3611:600::-;3719:6;3727;3735;3788:2;3776:9;3767:7;3763:23;3759:32;3756:52;;;3804:1;3801;3794:12;3756:52;3827:29;3846:9;3827:29;:::i;:::-;3817:39;;3906:2;3895:9;3891:18;3878:32;3950:6;3943:5;3939:18;3932:5;3929:29;3919:57;;3972:1;3969;3962:12;3919:57;3995:5;-1:-1:-1;4051:2:50;4036:18;;4023:32;4078:18;4067:30;;4064:50;;;4110:1;4107;4100:12;4064:50;4133:72;4197:7;4188:6;4177:9;4173:22;4133:72;:::i;:::-;4123:82;;;3611:600;;;;;:::o;4216:422::-;4257:3;4295:5;4289:12;4322:6;4317:3;4310:19;4347:1;4357:162;4371:6;4368:1;4365:13;4357:162;;;4433:4;4489:13;;;4485:22;;4479:29;4461:11;;;4457:20;;4450:59;4386:12;4357:162;;;4361:3;4564:1;4557:4;4548:6;4543:3;4539:16;4535:27;4528:38;4627:4;4620:2;4616:7;4611:2;4603:6;4599:15;4595:29;4590:3;4586:39;4582:50;4575:57;;;4216:422;;;;:::o;4643:1162::-;4776:12;;4742:4;4797:17;;;4863:19;;4733:14;;;4891:20;;;4703:3;;4960:4;;4987:21;;;;4938:2;4929:12;;;4703:3;5036:224;5050:6;5047:1;5044:13;5036:224;;;5117:13;;-1:-1:-1;;;;;5113:62:50;5099:77;;5235:15;;;;5198:14;;;;5072:1;5065:9;5036:224;;;-1:-1:-1;;5297:14:50;;;5291:21;5342:15;;;5328:12;;;5321:37;5410:21;;5440:23;;;5520;;;;-1:-1:-1;5563:1:50;;5481:14;;;5573:205;5589:8;5584:3;5581:17;5573:205;;;5653:73;5720:5;5709:8;5703:15;5653:73;:::i;:::-;5644:82;;5765:2;5755:8;5751:17;5739:29;;5617:1;5612:3;5608:11;5601:18;;5573:205;;;-1:-1:-1;5794:5:50;4643:1162;-1:-1:-1;;;;;;4643:1162:50:o;5810:448::-;6055:2;6044:9;6037:21;6018:4;6081:44;6121:2;6110:9;6106:18;6098:6;6081:44;:::i;:::-;6173:9;6165:6;6161:22;6156:2;6145:9;6141:18;6134:50;6201:51;6245:6;6237;6201:51;:::i;:::-;6193:59;5810:448;-1:-1:-1;;;;;5810:448:50:o;6263:127::-;6324:10;6319:3;6315:20;6312:1;6305:31;6355:4;6352:1;6345:15;6379:4;6376:1;6369:15;6395:995;6472:6;6480;6533:2;6521:9;6512:7;6508:23;6504:32;6501:52;;;6549:1;6546;6539:12;6501:52;6572:29;6591:9;6572:29;:::i;:::-;6562:39;;6652:2;6641:9;6637:18;6624:32;6675:18;6716:2;6708:6;6705:14;6702:34;;;6732:1;6729;6722:12;6702:34;6770:6;6759:9;6755:22;6745:32;;6815:7;6808:4;6804:2;6800:13;6796:27;6786:55;;6837:1;6834;6827:12;6786:55;6873:2;6860:16;6895:2;6891;6888:10;6885:36;;;6901:18;;:::i;:::-;6976:2;6970:9;6944:2;7030:13;;-1:-1:-1;;7026:22:50;;;7050:2;7022:31;7018:40;7006:53;;;7074:18;;;7094:22;;;7071:46;7068:72;;;7120:18;;:::i;:::-;7160:10;7156:2;7149:22;7195:2;7187:6;7180:18;7235:7;7230:2;7225;7221;7217:11;7213:20;7210:33;7207:53;;;7256:1;7253;7246:12;7207:53;7312:2;7307;7303;7299:11;7294:2;7286:6;7282:15;7269:46;7357:1;7352:2;7347;7339:6;7335:15;7331:24;7324:35;7378:6;7368:16;;;;;;;6395:995;;;;;:::o;7395:408::-;-1:-1:-1;;;;;7626:6:50;7622:55;7611:9;7604:74;7714:2;7709;7698:9;7694:18;7687:30;7585:4;7734:63;7793:2;7782:9;7778:18;7770:6;7734:63;:::i;:::-;7726:71;7395:408;-1:-1:-1;;;;7395:408:50:o;8245:127::-;8306:10;8301:3;8297:20;8294:1;8287:31;8337:4;8334:1;8327:15;8361:4;8358:1;8351:15;8377:208;-1:-1:-1;;;;;8521:10:50;;;8509;;;8505:27;;8544:12;;;8541:38;;;8559:18;;:::i;:::-;8541:38;8377:208;;;;:::o;8590:127::-;8651:10;8646:3;8642:20;8639:1;8632:31;8682:4;8679:1;8672:15;8706:4;8703:1;8696:15;8722:234;8761:3;-1:-1:-1;;;;;8866:2:50;8859:5;8855:14;8893:2;8884:7;8881:15;8878:41;;8899:18;;:::i;:::-;8948:1;8935:15;;8722:234;-1:-1:-1;;;8722:234:50:o;8961:337::-;-1:-1:-1;;;;;9140:6:50;9136:55;9125:9;9118:74;9228:2;9223;9212:9;9208:18;9201:30;9099:4;9248:44;9288:2;9277:9;9273:18;9265:6;9248:44;:::i"},"gasEstimates":{"creation":{"codeDepositCost":"937000","executionCost":"infinite","totalCost":"infinite"},"external":{"implementation()":"infinite","prepareInstallation(address,bytes)":"infinite","prepareUninstallation(address,(address,address[],bytes))":"infinite","prepareUpdate(address,uint16,(address,address[],bytes))":"infinite","protocolVersion()":"infinite","supportsInterface(bytes4)":"482"}},"methodIdentifiers":{"implementation()":"5c60da1b","prepareInstallation(address,bytes)":"f10832f1","prepareUninstallation(address,(address,address[],bytes))":"9cb0a124","prepareUpdate(address,uint16,(address,address[],bytes))":"a8a9c29e","protocolVersion()":"2ae9c600","supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ConflictingValues\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"fromBuild\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"thisBuild\",\"type\":\"uint16\"}],\"name\":\"InvalidUpdatePath\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_dao\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"prepareInstallation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"plugin\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address[]\",\"name\":\"helpers\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"enum PermissionLib.Operation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"condition\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PermissionLib.MultiTargetPermission[]\",\"name\":\"permissions\",\"type\":\"tuple[]\"}],\"internalType\":\"struct IPluginSetup.PreparedSetupData\",\"name\":\"preparedSetupData\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_dao\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"plugin\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"currentHelpers\",\"type\":\"address[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IPluginSetup.SetupPayload\",\"name\":\"_payload\",\"type\":\"tuple\"}],\"name\":\"prepareUninstallation\",\"outputs\":[{\"components\":[{\"internalType\":\"enum PermissionLib.Operation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"condition\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PermissionLib.MultiTargetPermission[]\",\"name\":\"permissions\",\"type\":\"tuple[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_dao\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"_fromBuild\",\"type\":\"uint16\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"plugin\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"currentHelpers\",\"type\":\"address[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IPluginSetup.SetupPayload\",\"name\":\"_payload\",\"type\":\"tuple\"}],\"name\":\"prepareUpdate\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"initData\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address[]\",\"name\":\"helpers\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"enum PermissionLib.Operation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"condition\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PermissionLib.MultiTargetPermission[]\",\"name\":\"permissions\",\"type\":\"tuple[]\"}],\"internalType\":\"struct IPluginSetup.PreparedSetupData\",\"name\":\"preparedSetupData\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"protocolVersion\",\"outputs\":[{\"internalType\":\"uint8[3]\",\"name\":\"\",\"type\":\"uint8[3]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"DO NOT USE IN PRODUCTION!\",\"errors\":{\"InvalidUpdatePath(uint16,uint16)\":[{\"params\":{\"fromBuild\":\"The build number to update from.\",\"thisBuild\":\"The build number of this setup to update to.\"}}]},\"kind\":\"dev\",\"methods\":{\"implementation()\":{\"details\":\"The implementation can be instantiated via the `new` keyword, cloned via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)), or proxied via the UUPS proxy pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\",\"returns\":{\"_0\":\"The address of the plugin implementation contract.\"}},\"prepareInstallation(address,bytes)\":{\"params\":{\"_dao\":\"The address of the installing DAO.\",\"_data\":\"The bytes-encoded data containing the input parameters for the installation as specified in the plugin's build metadata JSON file.\"},\"returns\":{\"plugin\":\"The address of the `Plugin` contract being prepared for installation.\",\"preparedSetupData\":\"The deployed plugin's relevant data which consists of helpers and permissions.\"}},\"prepareUninstallation(address,(address,address[],bytes))\":{\"params\":{\"_dao\":\"The address of the uninstalling DAO.\",\"_payload\":\"The relevant data necessary for the `prepareUninstallation`. See above.\"},\"returns\":{\"permissions\":\"The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the uninstalling DAO.\"}},\"prepareUpdate(address,uint16,(address,address[],bytes))\":{\"params\":{\"_dao\":\"The address of the updating DAO.\",\"_fromBuild\":\"The build number of the plugin to update from.\",\"_payload\":\"The relevant data necessary for the `prepareUpdate`. See above.\"},\"returns\":{\"initData\":\"The initialization data to be passed to upgradeable contracts when the update is applied in the `PluginSetupProcessor`.\",\"preparedSetupData\":\"The deployed plugin's relevant data which consists of helpers and permissions.\"}},\"protocolVersion()\":{\"details\":\"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\",\"returns\":{\"_0\":\"Returns the semantic Aragon OSx protocol version number.\"}},\"supportsInterface(bytes4)\":{\"params\":{\"_interfaceId\":\"The ID of the interface.\"},\"returns\":{\"_0\":\"Returns `true` if the interface is supported.\"}}},\"version\":1},\"userdoc\":{\"errors\":{\"InvalidUpdatePath(uint16,uint16)\":[{\"notice\":\"Thrown when an update path is not available, for example, if this is the initial build.\"}]},\"kind\":\"user\",\"methods\":{\"implementation()\":{\"notice\":\"Returns the plugin implementation address.\"},\"prepareInstallation(address,bytes)\":{\"notice\":\"Prepares the installation of a plugin.\"},\"prepareUninstallation(address,(address,address[],bytes))\":{\"notice\":\"Prepares the uninstallation of a plugin.\"},\"prepareUpdate(address,uint16,(address,address[],bytes))\":{\"notice\":\"Prepares the update of a plugin.\"},\"protocolVersion()\":{\"notice\":\"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Checks if this or the parent contract supports an interface by its ID.\"}},\"notice\":\"A mock plugin setup of an upgradeable plugin to be deployed via the UUPS pattern. v1.2 (Release 1, Build 2)\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/mocks/plugin/PluginUUPSUpgradeableSetupMock.sol\":\"PluginUUPSUpgradeableSetupMockBuild2\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/interfaces/IERC1967Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (interfaces/IERC1967.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\\n *\\n * _Available since v4.8.3._\\n */\\ninterface IERC1967Upgradeable {\\n /**\\n * @dev Emitted when the implementation is upgraded.\\n */\\n event Upgraded(address indexed implementation);\\n\\n /**\\n * @dev Emitted when the admin account has changed.\\n */\\n event AdminChanged(address previousAdmin, address newAdmin);\\n\\n /**\\n * @dev Emitted when the beacon is changed.\\n */\\n event BeaconUpgraded(address indexed beacon);\\n}\\n\",\"keccak256\":\"0x47d6e06872b12e72c79d1b5eb55842f860b5fb1207b2317c2358d2766b950a7b\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822ProxiableUpgradeable {\\n /**\\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n * address.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy.\\n */\\n function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../beacon/IBeaconUpgradeable.sol\\\";\\nimport \\\"../../interfaces/IERC1967Upgradeable.sol\\\";\\nimport \\\"../../interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\nimport \\\"../../utils/StorageSlotUpgradeable.sol\\\";\\nimport {Initializable} from \\\"../utils/Initializable.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n */\\nabstract contract ERC1967UpgradeUpgradeable is Initializable, IERC1967Upgradeable {\\n // This is the keccak-256 hash of \\\"eip1967.proxy.rollback\\\" subtracted by 1\\n bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n /**\\n * @dev Storage slot with the address of the current implementation.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n function __ERC1967Upgrade_init() internal onlyInitializing {\\n }\\n\\n function __ERC1967Upgrade_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _getImplementation() internal view returns (address) {\\n return StorageSlotUpgradeable.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 implementation slot.\\n */\\n function _setImplementation(address newImplementation) private {\\n require(AddressUpgradeable.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n StorageSlotUpgradeable.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n }\\n\\n /**\\n * @dev Perform implementation upgrade\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeTo(address newImplementation) internal {\\n _setImplementation(newImplementation);\\n emit Upgraded(newImplementation);\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCall(address newImplementation, bytes memory data, bool forceCall) internal {\\n _upgradeTo(newImplementation);\\n if (data.length > 0 || forceCall) {\\n AddressUpgradeable.functionDelegateCall(newImplementation, data);\\n }\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCallUUPS(address newImplementation, bytes memory data, bool forceCall) internal {\\n // Upgrades from old implementations will perform a rollback test. This test requires the new\\n // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n // this special case will break upgrade paths from old UUPS implementation to new ones.\\n if (StorageSlotUpgradeable.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n _setImplementation(newImplementation);\\n } else {\\n try IERC1822ProxiableUpgradeable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n require(slot == _IMPLEMENTATION_SLOT, \\\"ERC1967Upgrade: unsupported proxiableUUID\\\");\\n } catch {\\n revert(\\\"ERC1967Upgrade: new implementation is not UUPS\\\");\\n }\\n _upgradeToAndCall(newImplementation, data, forceCall);\\n }\\n }\\n\\n /**\\n * @dev Storage slot with the admin of the contract.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _getAdmin() internal view returns (address) {\\n return StorageSlotUpgradeable.getAddressSlot(_ADMIN_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 admin slot.\\n */\\n function _setAdmin(address newAdmin) private {\\n require(newAdmin != address(0), \\\"ERC1967: new admin is the zero address\\\");\\n StorageSlotUpgradeable.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n */\\n function _changeAdmin(address newAdmin) internal {\\n emit AdminChanged(_getAdmin(), newAdmin);\\n _setAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\\n */\\n bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n /**\\n * @dev Returns the current beacon.\\n */\\n function _getBeacon() internal view returns (address) {\\n return StorageSlotUpgradeable.getAddressSlot(_BEACON_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new beacon in the EIP1967 beacon slot.\\n */\\n function _setBeacon(address newBeacon) private {\\n require(AddressUpgradeable.isContract(newBeacon), \\\"ERC1967: new beacon is not a contract\\\");\\n require(\\n AddressUpgradeable.isContract(IBeaconUpgradeable(newBeacon).implementation()),\\n \\\"ERC1967: beacon implementation is not a contract\\\"\\n );\\n StorageSlotUpgradeable.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n }\\n\\n /**\\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n *\\n * Emits a {BeaconUpgraded} event.\\n */\\n function _upgradeBeaconToAndCall(address newBeacon, bytes memory data, bool forceCall) internal {\\n _setBeacon(newBeacon);\\n emit BeaconUpgraded(newBeacon);\\n if (data.length > 0 || forceCall) {\\n AddressUpgradeable.functionDelegateCall(IBeaconUpgradeable(newBeacon).implementation(), data);\\n }\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x7795808e3899c805254e3ae58074b20f799b466e3f43e057e47bedee5fb771f8\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeaconUpgradeable {\\n /**\\n * @dev Must return an address that can be used as a delegate call target.\\n *\\n * {BeaconProxy} will check that this address is a contract.\\n */\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/UUPSUpgradeable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport \\\"../ERC1967/ERC1967UpgradeUpgradeable.sol\\\";\\nimport {Initializable} from \\\"./Initializable.sol\\\";\\n\\n/**\\n * @dev An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an\\n * {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy.\\n *\\n * A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is\\n * reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing\\n * `UUPSUpgradeable` with a custom implementation of upgrades.\\n *\\n * The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism.\\n *\\n * _Available since v4.1._\\n */\\nabstract contract UUPSUpgradeable is Initializable, IERC1822ProxiableUpgradeable, ERC1967UpgradeUpgradeable {\\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable state-variable-assignment\\n address private immutable __self = address(this);\\n\\n /**\\n * @dev Check that the execution is being performed through a delegatecall call and that the execution context is\\n * a proxy contract with an implementation (as defined in ERC1967) pointing to self. This should only be the case\\n * for UUPS and transparent proxies that are using the current contract as their implementation. Execution of a\\n * function through ERC1167 minimal proxies (clones) would not normally pass this test, but is not guaranteed to\\n * fail.\\n */\\n modifier onlyProxy() {\\n require(address(this) != __self, \\\"Function must be called through delegatecall\\\");\\n require(_getImplementation() == __self, \\\"Function must be called through active proxy\\\");\\n _;\\n }\\n\\n /**\\n * @dev Check that the execution is not being performed through a delegate call. This allows a function to be\\n * callable on the implementing contract but not through proxies.\\n */\\n modifier notDelegated() {\\n require(address(this) == __self, \\\"UUPSUpgradeable: must not be called through delegatecall\\\");\\n _;\\n }\\n\\n function __UUPSUpgradeable_init() internal onlyInitializing {\\n }\\n\\n function __UUPSUpgradeable_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the\\n * implementation. It is used to validate the implementation's compatibility when performing an upgrade.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\\n */\\n function proxiableUUID() external view virtual override notDelegated returns (bytes32) {\\n return _IMPLEMENTATION_SLOT;\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy to `newImplementation`.\\n *\\n * Calls {_authorizeUpgrade}.\\n *\\n * Emits an {Upgraded} event.\\n *\\n * @custom:oz-upgrades-unsafe-allow-reachable delegatecall\\n */\\n function upgradeTo(address newImplementation) public virtual onlyProxy {\\n _authorizeUpgrade(newImplementation);\\n _upgradeToAndCallUUPS(newImplementation, new bytes(0), false);\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call\\n * encoded in `data`.\\n *\\n * Calls {_authorizeUpgrade}.\\n *\\n * Emits an {Upgraded} event.\\n *\\n * @custom:oz-upgrades-unsafe-allow-reachable delegatecall\\n */\\n function upgradeToAndCall(address newImplementation, bytes memory data) public payable virtual onlyProxy {\\n _authorizeUpgrade(newImplementation);\\n _upgradeToAndCallUUPS(newImplementation, data, true);\\n }\\n\\n /**\\n * @dev Function that should revert when `msg.sender` is not authorized to upgrade the contract. Called by\\n * {upgradeTo} and {upgradeToAndCall}.\\n *\\n * Normally, this function will use an xref:access.adoc[access control] modifier such as {Ownable-onlyOwner}.\\n *\\n * ```solidity\\n * function _authorizeUpgrade(address) internal override onlyOwner {}\\n * ```\\n */\\n function _authorizeUpgrade(address newImplementation) internal virtual;\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0xefb41f5c1a00249b7a99f0782f8c557865605426a3fb6e5fe9ae334293ae4f33\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n function __Context_init() internal onlyInitializing {\\n }\\n\\n function __Context_init_unchained() internal onlyInitializing {\\n }\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n function _contextSuffixLength() internal view virtual returns (uint256) {\\n return 0;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x75097e35253e7fb282ee4d7f27a80eaacfa759923185bf17302a89cbc059c5ef\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/StorageSlot.sol)\\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```solidity\\n * contract ERC1967 {\\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n * function _getImplementation() internal view returns (address) {\\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n * }\\n *\\n * function _setImplementation(address newImplementation) internal {\\n * require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n * }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._\\n * _Available since v4.9 for `string`, `bytes`._\\n */\\nlibrary StorageSlotUpgradeable {\\n struct AddressSlot {\\n address value;\\n }\\n\\n struct BooleanSlot {\\n bool value;\\n }\\n\\n struct Bytes32Slot {\\n bytes32 value;\\n }\\n\\n struct Uint256Slot {\\n uint256 value;\\n }\\n\\n struct StringSlot {\\n string value;\\n }\\n\\n struct BytesSlot {\\n bytes value;\\n }\\n\\n /**\\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n */\\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n */\\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n */\\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n */\\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` with member `value` located at `slot`.\\n */\\n function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\\n */\\n function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` with member `value` located at `slot`.\\n */\\n function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\\n */\\n function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n}\\n\",\"keccak256\":\"0x07ac95acad040f1fb1f6120dd0aa5f702db69446e95f82613721879d30de0908\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165Upgradeable.sol\\\";\\nimport {Initializable} from \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165Upgradeable is Initializable, IERC165Upgradeable {\\n function __ERC165_init() internal onlyInitializing {\\n }\\n\\n function __ERC165_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165Upgradeable).interfaceId;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0xd90d7723512df65ae417adaf0801042940f0dabd60039ceeaffe34aa5b238da1\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165Upgradeable {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/IERC1967.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (interfaces/IERC1967.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\\n *\\n * _Available since v4.8.3._\\n */\\ninterface IERC1967 {\\n /**\\n * @dev Emitted when the implementation is upgraded.\\n */\\n event Upgraded(address indexed implementation);\\n\\n /**\\n * @dev Emitted when the admin account has changed.\\n */\\n event AdminChanged(address previousAdmin, address newAdmin);\\n\\n /**\\n * @dev Emitted when the beacon is changed.\\n */\\n event BeaconUpgraded(address indexed beacon);\\n}\\n\",\"keccak256\":\"0x3cbef5ebc24b415252e2f8c0c9254555d30d9f085603b4b80d9b5ed20ab87e90\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822Proxiable {\\n /**\\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n * address.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy.\\n */\\n function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/Clones.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/Clones.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev https://eips.ethereum.org/EIPS/eip-1167[EIP 1167] is a standard for\\n * deploying minimal proxy contracts, also known as \\\"clones\\\".\\n *\\n * > To simply and cheaply clone contract functionality in an immutable way, this standard specifies\\n * > a minimal bytecode implementation that delegates all calls to a known, fixed address.\\n *\\n * The library includes functions to deploy a proxy using either `create` (traditional deployment) or `create2`\\n * (salted deterministic deployment). It also includes functions to predict the addresses of clones deployed using the\\n * deterministic method.\\n *\\n * _Available since v3.4._\\n */\\nlibrary Clones {\\n /**\\n * @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`.\\n *\\n * This function uses the create opcode, which should never revert.\\n */\\n function clone(address implementation) internal returns (address instance) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n // Cleans the upper 96 bits of the `implementation` word, then packs the first 3 bytes\\n // of the `implementation` address with the bytecode before the address.\\n mstore(0x00, or(shr(0xe8, shl(0x60, implementation)), 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000))\\n // Packs the remaining 17 bytes of `implementation` with the bytecode after the address.\\n mstore(0x20, or(shl(0x78, implementation), 0x5af43d82803e903d91602b57fd5bf3))\\n instance := create(0, 0x09, 0x37)\\n }\\n require(instance != address(0), \\\"ERC1167: create failed\\\");\\n }\\n\\n /**\\n * @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`.\\n *\\n * This function uses the create2 opcode and a `salt` to deterministically deploy\\n * the clone. Using the same `implementation` and `salt` multiple time will revert, since\\n * the clones cannot be deployed twice at the same address.\\n */\\n function cloneDeterministic(address implementation, bytes32 salt) internal returns (address instance) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n // Cleans the upper 96 bits of the `implementation` word, then packs the first 3 bytes\\n // of the `implementation` address with the bytecode before the address.\\n mstore(0x00, or(shr(0xe8, shl(0x60, implementation)), 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000))\\n // Packs the remaining 17 bytes of `implementation` with the bytecode after the address.\\n mstore(0x20, or(shl(0x78, implementation), 0x5af43d82803e903d91602b57fd5bf3))\\n instance := create2(0, 0x09, 0x37, salt)\\n }\\n require(instance != address(0), \\\"ERC1167: create2 failed\\\");\\n }\\n\\n /**\\n * @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}.\\n */\\n function predictDeterministicAddress(\\n address implementation,\\n bytes32 salt,\\n address deployer\\n ) internal pure returns (address predicted) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n let ptr := mload(0x40)\\n mstore(add(ptr, 0x38), deployer)\\n mstore(add(ptr, 0x24), 0x5af43d82803e903d91602b57fd5bf3ff)\\n mstore(add(ptr, 0x14), implementation)\\n mstore(ptr, 0x3d602d80600a3d3981f3363d3d373d3d3d363d73)\\n mstore(add(ptr, 0x58), salt)\\n mstore(add(ptr, 0x78), keccak256(add(ptr, 0x0c), 0x37))\\n predicted := keccak256(add(ptr, 0x43), 0x55)\\n }\\n }\\n\\n /**\\n * @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}.\\n */\\n function predictDeterministicAddress(\\n address implementation,\\n bytes32 salt\\n ) internal view returns (address predicted) {\\n return predictDeterministicAddress(implementation, salt, address(this));\\n }\\n}\\n\",\"keccak256\":\"0x01f055f5c26ba25d7f83e9aa9ba877fbea4d0bf22227de046ea67494bc932999\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (proxy/ERC1967/ERC1967Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../Proxy.sol\\\";\\nimport \\\"./ERC1967Upgrade.sol\\\";\\n\\n/**\\n * @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an\\n * implementation address that can be changed. This address is stored in storage in the location specified by\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the\\n * implementation behind the proxy.\\n */\\ncontract ERC1967Proxy is Proxy, ERC1967Upgrade {\\n /**\\n * @dev Initializes the upgradeable proxy with an initial implementation specified by `_logic`.\\n *\\n * If `_data` is nonempty, it's used as data in a delegate call to `_logic`. This will typically be an encoded\\n * function call, and allows initializing the storage of the proxy like a Solidity constructor.\\n */\\n constructor(address _logic, bytes memory _data) payable {\\n _upgradeToAndCall(_logic, _data, false);\\n }\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _implementation() internal view virtual override returns (address impl) {\\n return ERC1967Upgrade._getImplementation();\\n }\\n}\\n\",\"keccak256\":\"0xa2b22da3032e50b55f95ec1d13336102d675f341167aa76db571ef7f8bb7975d\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../beacon/IBeacon.sol\\\";\\nimport \\\"../../interfaces/IERC1967.sol\\\";\\nimport \\\"../../interfaces/draft-IERC1822.sol\\\";\\nimport \\\"../../utils/Address.sol\\\";\\nimport \\\"../../utils/StorageSlot.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n */\\nabstract contract ERC1967Upgrade is IERC1967 {\\n // This is the keccak-256 hash of \\\"eip1967.proxy.rollback\\\" subtracted by 1\\n bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n /**\\n * @dev Storage slot with the address of the current implementation.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _getImplementation() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 implementation slot.\\n */\\n function _setImplementation(address newImplementation) private {\\n require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n }\\n\\n /**\\n * @dev Perform implementation upgrade\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeTo(address newImplementation) internal {\\n _setImplementation(newImplementation);\\n emit Upgraded(newImplementation);\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCall(address newImplementation, bytes memory data, bool forceCall) internal {\\n _upgradeTo(newImplementation);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(newImplementation, data);\\n }\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCallUUPS(address newImplementation, bytes memory data, bool forceCall) internal {\\n // Upgrades from old implementations will perform a rollback test. This test requires the new\\n // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n // this special case will break upgrade paths from old UUPS implementation to new ones.\\n if (StorageSlot.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n _setImplementation(newImplementation);\\n } else {\\n try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n require(slot == _IMPLEMENTATION_SLOT, \\\"ERC1967Upgrade: unsupported proxiableUUID\\\");\\n } catch {\\n revert(\\\"ERC1967Upgrade: new implementation is not UUPS\\\");\\n }\\n _upgradeToAndCall(newImplementation, data, forceCall);\\n }\\n }\\n\\n /**\\n * @dev Storage slot with the admin of the contract.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _getAdmin() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_ADMIN_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 admin slot.\\n */\\n function _setAdmin(address newAdmin) private {\\n require(newAdmin != address(0), \\\"ERC1967: new admin is the zero address\\\");\\n StorageSlot.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n */\\n function _changeAdmin(address newAdmin) internal {\\n emit AdminChanged(_getAdmin(), newAdmin);\\n _setAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\\n */\\n bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n /**\\n * @dev Returns the current beacon.\\n */\\n function _getBeacon() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_BEACON_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new beacon in the EIP1967 beacon slot.\\n */\\n function _setBeacon(address newBeacon) private {\\n require(Address.isContract(newBeacon), \\\"ERC1967: new beacon is not a contract\\\");\\n require(\\n Address.isContract(IBeacon(newBeacon).implementation()),\\n \\\"ERC1967: beacon implementation is not a contract\\\"\\n );\\n StorageSlot.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n }\\n\\n /**\\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n *\\n * Emits a {BeaconUpgraded} event.\\n */\\n function _upgradeBeaconToAndCall(address newBeacon, bytes memory data, bool forceCall) internal {\\n _setBeacon(newBeacon);\\n emit BeaconUpgraded(newBeacon);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x3b21ae06bf5957f73fa16754b0669c77b7abd8ba6c072d35c3281d446fdb86c2\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (proxy/Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\\n * be specified by overriding the virtual {_implementation} function.\\n *\\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\\n * different contract through the {_delegate} function.\\n *\\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\\n */\\nabstract contract Proxy {\\n /**\\n * @dev Delegates the current call to `implementation`.\\n *\\n * This function does not return to its internal call site, it will return directly to the external caller.\\n */\\n function _delegate(address implementation) internal virtual {\\n assembly {\\n // Copy msg.data. We take full control of memory in this inline assembly\\n // block because it will not return to Solidity code. We overwrite the\\n // Solidity scratch pad at memory position 0.\\n calldatacopy(0, 0, calldatasize())\\n\\n // Call the implementation.\\n // out and outsize are 0 because we don't know the size yet.\\n let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)\\n\\n // Copy the returned data.\\n returndatacopy(0, 0, returndatasize())\\n\\n switch result\\n // delegatecall returns 0 on error.\\n case 0 {\\n revert(0, returndatasize())\\n }\\n default {\\n return(0, returndatasize())\\n }\\n }\\n }\\n\\n /**\\n * @dev This is a virtual function that should be overridden so it returns the address to which the fallback function\\n * and {_fallback} should delegate.\\n */\\n function _implementation() internal view virtual returns (address);\\n\\n /**\\n * @dev Delegates the current call to the address returned by `_implementation()`.\\n *\\n * This function does not return to its internal call site, it will return directly to the external caller.\\n */\\n function _fallback() internal virtual {\\n _beforeFallback();\\n _delegate(_implementation());\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\\n * function in the contract matches the call data.\\n */\\n fallback() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data\\n * is empty.\\n */\\n receive() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`\\n * call, or as part of the Solidity `fallback` or `receive` functions.\\n *\\n * If overridden should call `super._beforeFallback()`.\\n */\\n function _beforeFallback() internal virtual {}\\n}\\n\",\"keccak256\":\"0xc130fe33f1b2132158531a87734153293f6d07bc263ff4ac90e85da9c82c0e27\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeacon {\\n /**\\n * @dev Must return an address that can be used as a delegate call target.\\n *\\n * {BeaconProxy} will check that this address is a contract.\\n */\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/StorageSlot.sol)\\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```solidity\\n * contract ERC1967 {\\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n * function _getImplementation() internal view returns (address) {\\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n * }\\n *\\n * function _setImplementation(address newImplementation) internal {\\n * require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n * }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._\\n * _Available since v4.9 for `string`, `bytes`._\\n */\\nlibrary StorageSlot {\\n struct AddressSlot {\\n address value;\\n }\\n\\n struct BooleanSlot {\\n bool value;\\n }\\n\\n struct Bytes32Slot {\\n bytes32 value;\\n }\\n\\n struct Uint256Slot {\\n uint256 value;\\n }\\n\\n struct StringSlot {\\n string value;\\n }\\n\\n struct BytesSlot {\\n bytes value;\\n }\\n\\n /**\\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n */\\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n */\\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n */\\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n */\\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` with member `value` located at `slot`.\\n */\\n function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\\n */\\n function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` with member `value` located at `slot`.\\n */\\n function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\\n */\\n function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n}\\n\",\"keccak256\":\"0xf09e68aa0dc6722a25bc46490e8d48ed864466d17313b8a0b254c36b54e49899\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165 is IERC165 {\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165).interfaceId;\\n }\\n}\\n\",\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"src/dao/IDAO.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IDAO\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for DAOs within the Aragon App DAO framework.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IDAO {\\n /// @notice The action struct to be consumed by the DAO's `execute` function resulting in an external call.\\n /// @param to The address to call.\\n /// @param value The native token value to be sent with the call.\\n /// @param data The bytes-encoded function selector and calldata for the call.\\n struct Action {\\n address to;\\n uint256 value;\\n bytes data;\\n }\\n\\n /// @notice Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\\n /// @param _where The address of the contract.\\n /// @param _who The address of a EOA or contract to give the permissions.\\n /// @param _permissionId The permission identifier.\\n /// @param _data The optional data passed to the `PermissionCondition` registered.\\n /// @return Returns true if the address has permission, false if not.\\n function hasPermission(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes memory _data\\n ) external view returns (bool);\\n\\n /// @notice Updates the DAO metadata (e.g., an IPFS hash).\\n /// @param _metadata The IPFS hash of the new metadata object.\\n function setMetadata(bytes calldata _metadata) external;\\n\\n /// @notice Emitted when the DAO metadata is updated.\\n /// @param metadata The IPFS hash of the new metadata object.\\n event MetadataSet(bytes metadata);\\n\\n /// @notice Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted.\\n /// @param _callId The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce.\\n /// @param _actions The array of actions.\\n /// @param _allowFailureMap A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @return The array of results obtained from the executed actions in `bytes`.\\n /// @return The resulting failure map containing the actions have actually failed.\\n function execute(\\n bytes32 _callId,\\n Action[] memory _actions,\\n uint256 _allowFailureMap\\n ) external returns (bytes[] memory, uint256);\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param actor The address of the caller.\\n /// @param callId The ID of the call.\\n /// @param actions The array of actions executed.\\n /// @param allowFailureMap The allow failure map encoding which actions are allowed to fail.\\n /// @param failureMap The failure map encoding which actions have failed.\\n /// @param execResults The array with the results of the executed actions.\\n /// @dev The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce.\\n event Executed(\\n address indexed actor,\\n bytes32 callId,\\n Action[] actions,\\n uint256 allowFailureMap,\\n uint256 failureMap,\\n bytes[] execResults\\n );\\n\\n /// @notice Emitted when a standard callback is registered.\\n /// @param interfaceId The ID of the interface.\\n /// @param callbackSelector The selector of the callback function.\\n /// @param magicNumber The magic number to be registered for the callback function selector.\\n event StandardCallbackRegistered(\\n bytes4 interfaceId,\\n bytes4 callbackSelector,\\n bytes4 magicNumber\\n );\\n\\n /// @notice Deposits (native) tokens to the DAO contract with a reference string.\\n /// @param _token The address of the token or address(0) in case of the native token.\\n /// @param _amount The amount of tokens to deposit.\\n /// @param _reference The reference describing the deposit reason.\\n function deposit(address _token, uint256 _amount, string calldata _reference) external payable;\\n\\n /// @notice Emitted when a token deposit has been made to the DAO.\\n /// @param sender The address of the sender.\\n /// @param token The address of the deposited token.\\n /// @param amount The amount of tokens deposited.\\n /// @param _reference The reference describing the deposit reason.\\n event Deposited(\\n address indexed sender,\\n address indexed token,\\n uint256 amount,\\n string _reference\\n );\\n\\n /// @notice Emitted when a native token deposit has been made to the DAO.\\n /// @dev This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).\\n /// @param sender The address of the sender.\\n /// @param amount The amount of native tokens deposited.\\n event NativeTokenDeposited(address sender, uint256 amount);\\n\\n /// @notice Setter for the trusted forwarder verifying the meta transaction.\\n /// @param _trustedForwarder The trusted forwarder address.\\n function setTrustedForwarder(address _trustedForwarder) external;\\n\\n /// @notice Getter for the trusted forwarder verifying the meta transaction.\\n /// @return The trusted forwarder address.\\n function getTrustedForwarder() external view returns (address);\\n\\n /// @notice Emitted when a new TrustedForwarder is set on the DAO.\\n /// @param forwarder the new forwarder address.\\n event TrustedForwarderSet(address forwarder);\\n\\n /// @notice Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\\n /// @param _hash The hash of the data to be signed.\\n /// @param _signature The signature byte array associated with `_hash`.\\n /// @return Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not.\\n function isValidSignature(bytes32 _hash, bytes memory _signature) external returns (bytes4);\\n\\n /// @notice Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\\n /// @param _interfaceId The ID of the interface.\\n /// @param _callbackSelector The selector of the callback function.\\n /// @param _magicNumber The magic number to be registered for the function signature.\\n function registerStandardCallback(\\n bytes4 _interfaceId,\\n bytes4 _callbackSelector,\\n bytes4 _magicNumber\\n ) external;\\n\\n /// @notice Removed function being left here to not corrupt the IDAO interface ID. Any call will revert.\\n /// @dev Introduced in v1.0.0. Removed in v1.4.0.\\n function setSignatureValidator(address) external;\\n}\\n\",\"keccak256\":\"0xb7f615523c26de042edce98731c658f44a1edb2464387ac1b642c4c69f57128e\",\"license\":\"AGPL-3.0-or-later\"},\"src/mocks/plugin/PluginSetupMockData.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {PermissionLib} from \\\"../../permission/PermissionLib.sol\\\";\\n\\naddress constant NO_CONDITION = address(0);\\n\\nerror ConflictingValues();\\n\\n/// @notice Creates a mock `MultiTargetPermission` array by converting a range of `uint160` values into `address` values.\\n/// @param rangeStart The start of the range.\\n/// @param rangeEnd The end of the range (that is not included).\\n/// @param op The permission operation type.\\n/// @return permissions The mock array of permissions.\\n/// @dev DO NOT USE IN PRODUCTION!\\nfunction mockPermissions(\\n uint160 rangeStart,\\n uint160 rangeEnd,\\n PermissionLib.Operation op\\n) pure returns (PermissionLib.MultiTargetPermission[] memory permissions) {\\n if (rangeStart > rangeEnd) revert ConflictingValues();\\n\\n permissions = new PermissionLib.MultiTargetPermission[](rangeEnd - rangeStart);\\n\\n for (uint160 i = rangeStart; i < rangeEnd; i++) {\\n permissions[i - rangeStart] = PermissionLib.MultiTargetPermission({\\n operation: op,\\n where: address(i),\\n who: address(i),\\n condition: PermissionLib.NO_CONDITION,\\n permissionId: keccak256(\\\"MOCK_PERMISSION\\\")\\n });\\n }\\n}\\n\\n/// @notice Creates a mock array of helper addresses of specified length by converting `uint160` values starting from 0 into `address` values.\\n/// @param len The length of the helper array.\\n/// @return helpers The mock array of helper addresses.\\n/// @dev DO NOT USE IN PRODUCTION!\\nfunction mockHelpers(uint160 len) pure returns (address[] memory helpers) {\\n helpers = new address[](len);\\n\\n for (uint160 i = 0; i < len; i++) {\\n helpers[i] = address(i);\\n }\\n}\\n\",\"keccak256\":\"0x529d1b7ea4c348fe18edf81a044792ca8aa1f6ad9a7d2edfd35e38bf8372abf9\",\"license\":\"AGPL-3.0-or-later\"},\"src/mocks/plugin/PluginUUPSUpgradeableMock.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\n/* solhint-disable one-contract-per-file */\\npragma solidity ^0.8.8;\\n\\nimport {PluginUUPSUpgradeable} from \\\"../../plugin/PluginUUPSUpgradeable.sol\\\";\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice A mock upgradeable plugin to be deployed via the UUPS proxy pattern.\\n/// v1.1 (Release 1, Build 1)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableMockBuild1 is PluginUUPSUpgradeable {\\n uint256 public state1;\\n\\n function initialize(IDAO _dao) external initializer {\\n __PluginUUPSUpgradeable_init(_dao);\\n state1 = 1;\\n }\\n}\\n\\n/// @notice A mock upgradeable plugin to be deployed via the UUPS proxy pattern.\\n/// v1.1 (Release 1, Build 2)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableMockBuild2 is PluginUUPSUpgradeable {\\n uint256 public state1;\\n uint256 public state2;\\n\\n function initialize(IDAO _dao) external reinitializer(2) {\\n __PluginUUPSUpgradeable_init(_dao);\\n state1 = 1;\\n state2 = 2;\\n }\\n\\n function initializeFrom(uint16 _previousBuild) external reinitializer(2) {\\n if (_previousBuild < 2) {\\n state2 = 2;\\n }\\n }\\n}\\n\\n/// @notice A mock upgradeable plugin to be deployed via the UUPS proxy pattern.\\n/// v1.1 (Release 1, Build 3)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableMockBuild3 is PluginUUPSUpgradeable {\\n uint256 public state1;\\n uint256 public state2;\\n uint256 public state3;\\n\\n function initialize(IDAO _dao) external reinitializer(3) {\\n __PluginUUPSUpgradeable_init(_dao);\\n state1 = 1;\\n state2 = 2;\\n state3 = 3;\\n }\\n\\n function initializeFrom(uint16 _previousBuild) external reinitializer(3) {\\n if (_previousBuild < 2) {\\n state2 = 2;\\n }\\n if (_previousBuild < 3) {\\n state3 = 3;\\n }\\n }\\n}\\n\\n/// @notice A mock upgradeable plugin missing an initializer function.\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableMockBad is PluginUUPSUpgradeable {\\n uint256 public state1;\\n\\n function notAnInitializer(IDAO _dao) external {\\n __PluginUUPSUpgradeable_init(_dao);\\n state1 = 1;\\n }\\n}\\n\",\"keccak256\":\"0x2917df3b1da0de27f58cf531afeaa4e6c4285717247cbdd9ecc7880ae5cb9cb0\",\"license\":\"AGPL-3.0-or-later\"},\"src/mocks/plugin/PluginUUPSUpgradeableSetupMock.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\n/* solhint-disable one-contract-per-file */\\npragma solidity ^0.8.8;\\n\\nimport {PermissionLib} from \\\"../../permission/PermissionLib.sol\\\";\\nimport {IPluginSetup} from \\\"../../plugin/setup/IPluginSetup.sol\\\";\\nimport {PluginUpgradeableSetup} from \\\"../../plugin/setup/PluginUpgradeableSetup.sol\\\";\\nimport {ProxyLib} from \\\"../../utils/deployment/ProxyLib.sol\\\";\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\nimport {mockPermissions, mockHelpers} from \\\"./PluginSetupMockData.sol\\\";\\nimport {PluginUUPSUpgradeableMockBuild1, PluginUUPSUpgradeableMockBuild2, PluginUUPSUpgradeableMockBuild3} from \\\"./PluginUUPSUpgradeableMock.sol\\\";\\n\\n/// @notice A mock plugin setup of an upgradeable plugin to be deployed via the UUPS pattern.\\n/// v1.1 (Release 1, Build 1)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableSetupMockBuild1 is PluginUpgradeableSetup {\\n using ProxyLib for address;\\n\\n uint16 internal constant THIS_BUILD = 1;\\n\\n constructor() PluginUpgradeableSetup(address(new PluginUUPSUpgradeableMockBuild1())) {}\\n\\n /// @inheritdoc IPluginSetup\\n function prepareInstallation(\\n address _dao,\\n bytes memory\\n ) public returns (address plugin, PreparedSetupData memory preparedSetupData) {\\n bytes memory initData = abi.encodeCall(\\n PluginUUPSUpgradeableMockBuild1.initialize,\\n (IDAO(_dao))\\n );\\n plugin = implementation().deployUUPSProxy(initData);\\n preparedSetupData.helpers = mockHelpers(1);\\n preparedSetupData.permissions = mockPermissions(0, 1, PermissionLib.Operation.Grant);\\n }\\n\\n /// @inheritdoc IPluginSetup\\n /// @dev The default implementation for the initial build 1 that reverts because no earlier build exists.\\n function prepareUpdate(\\n address _dao,\\n uint16 _fromBuild,\\n SetupPayload calldata _payload\\n ) external pure virtual returns (bytes memory, PreparedSetupData memory) {\\n (_dao, _fromBuild, _payload);\\n revert InvalidUpdatePath({fromBuild: 0, thisBuild: THIS_BUILD});\\n }\\n\\n /// @inheritdoc IPluginSetup\\n function prepareUninstallation(\\n address _dao,\\n SetupPayload calldata _payload\\n ) external pure returns (PermissionLib.MultiTargetPermission[] memory permissions) {\\n (_dao, _payload);\\n permissions = mockPermissions(0, THIS_BUILD, PermissionLib.Operation.Revoke);\\n }\\n}\\n\\n/// @notice A mock plugin setup of an upgradeable plugin to be deployed via the UUPS pattern.\\n/// v1.2 (Release 1, Build 2)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableSetupMockBuild2 is PluginUpgradeableSetup {\\n using ProxyLib for address;\\n\\n uint16 internal constant THIS_BUILD = 2;\\n\\n constructor() PluginUpgradeableSetup(address(new PluginUUPSUpgradeableMockBuild2())) {}\\n\\n /// @inheritdoc IPluginSetup\\n function prepareInstallation(\\n address _dao,\\n bytes memory\\n ) external returns (address plugin, PreparedSetupData memory preparedSetupData) {\\n bytes memory initData = abi.encodeCall(\\n PluginUUPSUpgradeableMockBuild2.initialize,\\n (IDAO(_dao))\\n );\\n plugin = implementation().deployUUPSProxy(initData);\\n preparedSetupData.helpers = mockHelpers(THIS_BUILD);\\n preparedSetupData.permissions = mockPermissions(\\n 0,\\n THIS_BUILD,\\n PermissionLib.Operation.Grant\\n );\\n }\\n\\n /// @inheritdoc IPluginSetup\\n function prepareUpdate(\\n address _dao,\\n uint16 _fromBuild,\\n SetupPayload calldata _payload\\n )\\n external\\n pure\\n override\\n returns (bytes memory initData, PreparedSetupData memory preparedSetupData)\\n {\\n (_dao, _payload);\\n\\n // Update from Build 1\\n if (_fromBuild == 1) {\\n preparedSetupData.helpers = mockHelpers(THIS_BUILD);\\n initData = abi.encodeCall(PluginUUPSUpgradeableMockBuild2.initializeFrom, (_fromBuild));\\n preparedSetupData.permissions = mockPermissions(\\n _fromBuild,\\n THIS_BUILD,\\n PermissionLib.Operation.Grant\\n );\\n }\\n }\\n\\n /// @inheritdoc IPluginSetup\\n function prepareUninstallation(\\n address _dao,\\n SetupPayload calldata _payload\\n ) external pure returns (PermissionLib.MultiTargetPermission[] memory permissions) {\\n (_dao, _payload);\\n permissions = mockPermissions(0, THIS_BUILD, PermissionLib.Operation.Revoke);\\n }\\n}\\n\\n/// @notice A mock plugin setup of an upgradeable plugin to be deployed via the UUPS pattern.\\n/// v1.3 (Release 1, Build 3)\\ncontract PluginUUPSUpgradeableSetupMockBuild3 is PluginUpgradeableSetup {\\n using ProxyLib for address;\\n\\n uint16 internal constant THIS_BUILD = 3;\\n\\n constructor() PluginUpgradeableSetup(address(new PluginUUPSUpgradeableMockBuild3())) {}\\n\\n /// @inheritdoc IPluginSetup\\n function prepareInstallation(\\n address _dao,\\n bytes memory\\n ) external returns (address plugin, PreparedSetupData memory preparedSetupData) {\\n bytes memory initData = abi.encodeCall(\\n PluginUUPSUpgradeableMockBuild3.initialize,\\n (IDAO(_dao))\\n );\\n plugin = implementation().deployUUPSProxy(initData);\\n preparedSetupData.helpers = mockHelpers(THIS_BUILD);\\n preparedSetupData.permissions = mockPermissions(\\n 0,\\n THIS_BUILD,\\n PermissionLib.Operation.Grant\\n );\\n }\\n\\n /// @inheritdoc IPluginSetup\\n function prepareUpdate(\\n address _dao,\\n uint16 _fromBuild,\\n SetupPayload calldata _payload\\n )\\n external\\n pure\\n override\\n returns (bytes memory initData, PreparedSetupData memory preparedSetupData)\\n {\\n (_dao, _payload);\\n\\n // Update from Build 1\\n if (_fromBuild == 1) {\\n preparedSetupData.helpers = mockHelpers(THIS_BUILD);\\n initData = abi.encodeCall(PluginUUPSUpgradeableMockBuild3.initializeFrom, (_fromBuild));\\n preparedSetupData.permissions = mockPermissions(\\n _fromBuild,\\n THIS_BUILD,\\n PermissionLib.Operation.Grant\\n );\\n\\n // If this update path should not be supported, you can revert with an error, e.g.,\\n // revert InvalidUpdatePath({fromBuild: _fromBuild, thisBuild: THIS_BUILD});\\n }\\n\\n // Update from Build 2\\n if (_fromBuild == 2) {\\n preparedSetupData.helpers = mockHelpers(THIS_BUILD);\\n initData = abi.encodeCall(PluginUUPSUpgradeableMockBuild3.initializeFrom, (_fromBuild));\\n preparedSetupData.permissions = mockPermissions(\\n _fromBuild,\\n THIS_BUILD,\\n PermissionLib.Operation.Grant\\n );\\n }\\n }\\n\\n /// @inheritdoc IPluginSetup\\n function prepareUninstallation(\\n address _dao,\\n SetupPayload calldata _payload\\n ) external pure returns (PermissionLib.MultiTargetPermission[] memory permissions) {\\n (_dao, _payload);\\n permissions = mockPermissions(0, THIS_BUILD, PermissionLib.Operation.Revoke);\\n }\\n}\\n\",\"keccak256\":\"0x6be5a7611fe85f0e6e1ea08f42bcce810bc4973da1eaa04c88445b8d9af130ba\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/PermissionLib.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title PermissionLib\\n/// @author Aragon X - 2021-2023\\n/// @notice A library containing objects for permission processing.\\n/// @custom:security-contact sirt@aragon.org\\nlibrary PermissionLib {\\n /// @notice A constant expressing that no condition is applied to a permission.\\n address public constant NO_CONDITION = address(0);\\n\\n /// @notice The types of permission operations available in the `PermissionManager`.\\n /// @param Grant The grant operation setting a permission without a condition.\\n /// @param Revoke The revoke operation removing a permission (that was granted with or without a condition).\\n /// @param GrantWithCondition The grant operation setting a permission with a condition.\\n enum Operation {\\n Grant,\\n Revoke,\\n GrantWithCondition\\n }\\n\\n /// @notice A struct containing the information for a permission to be applied on a single target contract without a condition.\\n /// @param operation The permission operation type.\\n /// @param who The address (EOA or contract) receiving the permission.\\n /// @param permissionId The permission identifier.\\n struct SingleTargetPermission {\\n Operation operation;\\n address who;\\n bytes32 permissionId;\\n }\\n\\n /// @notice A struct containing the information for a permission to be applied on multiple target contracts, optionally, with a condition.\\n /// @param operation The permission operation type.\\n /// @param where The address of the target contract for which `who` receives permission.\\n /// @param who The address (EOA or contract) receiving the permission.\\n /// @param condition The `PermissionCondition` that will be asked for authorization on calls connected to the specified permission identifier.\\n /// @param permissionId The permission identifier.\\n struct MultiTargetPermission {\\n Operation operation;\\n address where;\\n address who;\\n address condition;\\n bytes32 permissionId;\\n }\\n}\\n\",\"keccak256\":\"0x470faf3c4891ebc6420ef6cc09f6098917568ccc79268c90954d1478199b6097\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/DaoAuthorizableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ContextUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\\\";\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\nimport {_auth} from \\\"./auth.sol\\\";\\n\\n/// @title DaoAuthorizableUpgradeable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract contract providing a meta-transaction compatible modifier for upgradeable or cloneable contracts to authorize function calls through an associated DAO.\\n/// @dev Make sure to call `__DaoAuthorizableUpgradeable_init` during initialization of the inheriting contract.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract DaoAuthorizableUpgradeable is ContextUpgradeable {\\n /// @notice The associated DAO managing the permissions of inheriting contracts.\\n IDAO private dao_;\\n\\n /// @notice Initializes the contract by setting the associated DAO.\\n /// @param _dao The associated DAO address.\\n // solhint-disable-next-line func-name-mixedcase\\n function __DaoAuthorizableUpgradeable_init(IDAO _dao) internal onlyInitializing {\\n dao_ = _dao;\\n }\\n\\n /// @notice Returns the DAO contract.\\n /// @return The DAO contract.\\n function dao() public view returns (IDAO) {\\n return dao_;\\n }\\n\\n /// @notice A modifier to make functions on inheriting contracts authorized. Permissions to call the function are checked through the associated DAO's permission manager.\\n /// @param _permissionId The permission identifier required to call the method this modifier is applied to.\\n modifier auth(bytes32 _permissionId) {\\n _auth(dao_, address(this), _msgSender(), _permissionId, _msgData());\\n _;\\n }\\n\\n /// @notice This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain (see [OpenZeppelin's guide about storage gaps](https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps)).\\n uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0x7fac6b01b037ba1cb9d6a22d3f43b0785037dcf496ffb672434d9bf7227d2585\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/auth.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice Thrown if a call is unauthorized in the associated DAO.\\n/// @param dao The associated DAO.\\n/// @param where The context in which the authorization reverted.\\n/// @param who The address (EOA or contract) missing the permission.\\n/// @param permissionId The permission identifier.\\nerror DaoUnauthorized(address dao, address where, address who, bytes32 permissionId);\\n\\n/// @notice A free function checking if a caller is granted permissions on a target contract via a permission identifier that redirects the approval to a `PermissionCondition` if this was specified in the setup.\\n/// @param _where The address of the target contract for which `who` receives permission.\\n/// @param _who The address (EOA or contract) owning the permission.\\n/// @param _permissionId The permission identifier.\\n/// @param _data The optional data passed to the `PermissionCondition` registered.\\n/// @custom:security-contact sirt@aragon.org\\nfunction _auth(\\n IDAO _dao,\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes calldata _data\\n) view {\\n if (!_dao.hasPermission(_where, _who, _permissionId, _data))\\n revert DaoUnauthorized({\\n dao: address(_dao),\\n where: _where,\\n who: _who,\\n permissionId: _permissionId\\n });\\n}\\n\",\"keccak256\":\"0x878764b4f87fe0651fb3798fb9cb87c952f8c6caf6ae79c7f09de84df6c00298\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/IPlugin.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IPlugin\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the traits of a plugin.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IPlugin {\\n enum PluginType {\\n UUPS,\\n Cloneable,\\n Constructable\\n }\\n\\n /// @notice Returns the plugin's type\\n function pluginType() external view returns (PluginType);\\n}\\n\",\"keccak256\":\"0xc57cd0d10b6380ab7f54c713a509e88fd8f4ad9288313a0e8e12b8887817ddfe\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/PluginUUPSUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {UUPSUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\\\";\\nimport {IERC1822ProxiableUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport {ERC165Upgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\\\";\\n\\nimport {IProtocolVersion} from \\\"../utils/versioning/IProtocolVersion.sol\\\";\\nimport {ProtocolVersion} from \\\"../utils/versioning/ProtocolVersion.sol\\\";\\nimport {DaoAuthorizableUpgradeable} from \\\"../permission/auth/DaoAuthorizableUpgradeable.sol\\\";\\nimport {IDAO} from \\\"../dao/IDAO.sol\\\";\\nimport {IPlugin} from \\\"./IPlugin.sol\\\";\\n\\n/// @title PluginUUPSUpgradeable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract, upgradeable contract to inherit from when creating a plugin being deployed via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract PluginUUPSUpgradeable is\\n IPlugin,\\n ERC165Upgradeable,\\n UUPSUpgradeable,\\n DaoAuthorizableUpgradeable,\\n ProtocolVersion\\n{\\n // NOTE: When adding new state variables to the contract, the size of `_gap` has to be adapted below as well.\\n address public target;\\n\\n /// @dev Emitted each time the Target is set.\\n event TargetSet(address indexed previousTarget, address indexed newTarget);\\n\\n /// @notice Disables the initializers on the implementation contract to prevent it from being left uninitialized.\\n /// @custom:oz-upgrades-unsafe-allow constructor\\n constructor() {\\n _disableInitializers();\\n }\\n\\n /// @inheritdoc IPlugin\\n function pluginType() public pure override returns (PluginType) {\\n return PluginType.UUPS;\\n }\\n\\n /// @notice The ID of the permission required to call the `_authorizeUpgrade` function.\\n bytes32 public constant UPGRADE_PLUGIN_PERMISSION_ID = keccak256(\\\"UPGRADE_PLUGIN_PERMISSION\\\");\\n\\n /// @notice Initializes the plugin by storing the associated DAO.\\n /// @param _dao The DAO contract.\\n // solhint-disable-next-line func-name-mixedcase\\n function __PluginUUPSUpgradeable_init(IDAO _dao) internal virtual onlyInitializing {\\n __DaoAuthorizableUpgradeable_init(_dao);\\n }\\n\\n /// @dev Sets the target to a new target (`newTarget`).\\n /// @notice Can only be called by the current owner. TODO\\n function setTarget(address _target) public {\\n address previousTarget = target;\\n target = _target;\\n emit TargetSet(previousTarget, _target);\\n }\\n\\n /// @notice Checks if an interface is supported by this or its parent contract.\\n /// @param _interfaceId The ID of the interface.\\n /// @return Returns `true` if the interface is supported.\\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\\n return\\n _interfaceId == type(IPlugin).interfaceId ||\\n _interfaceId == type(IProtocolVersion).interfaceId ||\\n _interfaceId == type(IERC1822ProxiableUpgradeable).interfaceId ||\\n super.supportsInterface(_interfaceId);\\n }\\n\\n /// @notice Returns the address of the implementation contract in the [proxy storage slot](https://eips.ethereum.org/EIPS/eip-1967) slot the [UUPS proxy](https://eips.ethereum.org/EIPS/eip-1822) is pointing to.\\n /// @return The address of the implementation contract.\\n function implementation() public view returns (address) {\\n return _getImplementation();\\n }\\n\\n /// @notice Forwards the actions to the currently set `target` for the execution.\\n /// @param _callId Identifier for this execution.\\n /// @param _actions actions that will be eventually called.\\n /// @param _allowFailureMap Bitmap-encoded number. TODO:\\n /// @return execResults address of the implementation contract.\\n /// @return failureMap address of the implementation contract.\\n function _execute(\\n bytes32 _callId,\\n IDAO.Action[] calldata _actions,\\n uint256 _allowFailureMap\\n ) internal virtual returns (bytes[] memory execResults, uint256 failureMap) {\\n (execResults, failureMap) = IDAO(target).execute(_callId, _actions, _allowFailureMap);\\n }\\n\\n /// @notice Forwards the actions to the `target` for the execution.\\n /// @param _target Forwards the actions to the specific target.\\n /// @param _callId Identifier for this execution.\\n /// @param _actions actions that will be eventually called.\\n /// @param _allowFailureMap Bitmap-encoded number. TODO:\\n /// @return execResults address of the implementation contract.\\n /// @return failureMap address of the implementation contract.\\n function _execute(\\n address _target,\\n bytes32 _callId,\\n IDAO.Action[] calldata _actions,\\n uint256 _allowFailureMap\\n ) internal virtual returns (bytes[] memory execResults, uint256 failureMap) {\\n (execResults, failureMap) = IDAO(_target).execute(_callId, _actions, _allowFailureMap);\\n }\\n\\n /// @notice Internal method authorizing the upgrade of the contract via the [upgradeability mechanism for UUPS proxies](https://docs.openzeppelin.com/contracts/4.x/api/proxy#UUPSUpgradeable) (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\\n /// @dev The caller must have the `UPGRADE_PLUGIN_PERMISSION_ID` permission.\\n function _authorizeUpgrade(\\n address\\n )\\n internal\\n virtual\\n override\\n auth(UPGRADE_PLUGIN_PERMISSION_ID)\\n // solhint-disable-next-line no-empty-blocks\\n {\\n\\n }\\n\\n /// @notice This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain (see [OpenZeppelin's guide about storage gaps](https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps)).\\n uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0xce1d0126b3ae8c8afc887fba9f49b1cc35f84f1c1d5bf4cadee330c7ae15014f\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/setup/IPluginSetup.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {PermissionLib} from \\\"../../permission/PermissionLib.sol\\\";\\n\\n// solhint-disable-next-line no-unused-import\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @title IPluginSetup\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for a plugin setup contract to be consumed by the `PluginSetupProcessor` for plugin installations, updates, and uninstallations.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IPluginSetup {\\n /// @notice The data associated with a prepared setup.\\n /// @param helpers The address array of helpers (contracts or EOAs) associated with this plugin version after the installation or update.\\n /// @param permissions The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the installing or updating DAO.\\n struct PreparedSetupData {\\n address[] helpers;\\n PermissionLib.MultiTargetPermission[] permissions;\\n }\\n\\n /// @notice The payload for plugin updates and uninstallations containing the existing contracts as well as optional data to be consumed by the plugin setup.\\n /// @param plugin The address of the `Plugin`.\\n /// @param currentHelpers The address array of all current helpers (contracts or EOAs) associated with the plugin to update from.\\n /// @param data The bytes-encoded data containing the input parameters for the preparation of update/uninstall as specified in the corresponding ABI on the version's metadata.\\n struct SetupPayload {\\n address plugin;\\n address[] currentHelpers;\\n bytes data;\\n }\\n\\n /// @notice Prepares the installation of a plugin.\\n /// @param _dao The address of the installing DAO.\\n /// @param _data The bytes-encoded data containing the input parameters for the installation as specified in the plugin's build metadata JSON file.\\n /// @return plugin The address of the `Plugin` contract being prepared for installation.\\n /// @return preparedSetupData The deployed plugin's relevant data which consists of helpers and permissions.\\n function prepareInstallation(\\n address _dao,\\n bytes calldata _data\\n ) external returns (address plugin, PreparedSetupData memory preparedSetupData);\\n\\n /// @notice Prepares the update of a plugin.\\n /// @param _dao The address of the updating DAO.\\n /// @param _fromBuild The build number of the plugin to update from.\\n /// @param _payload The relevant data necessary for the `prepareUpdate`. See above.\\n /// @return initData The initialization data to be passed to upgradeable contracts when the update is applied in the `PluginSetupProcessor`.\\n /// @return preparedSetupData The deployed plugin's relevant data which consists of helpers and permissions.\\n function prepareUpdate(\\n address _dao,\\n uint16 _fromBuild,\\n SetupPayload calldata _payload\\n ) external returns (bytes memory initData, PreparedSetupData memory preparedSetupData);\\n\\n /// @notice Prepares the uninstallation of a plugin.\\n /// @param _dao The address of the uninstalling DAO.\\n /// @param _payload The relevant data necessary for the `prepareUninstallation`. See above.\\n /// @return permissions The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the uninstalling DAO.\\n function prepareUninstallation(\\n address _dao,\\n SetupPayload calldata _payload\\n ) external returns (PermissionLib.MultiTargetPermission[] memory permissions);\\n\\n /// @notice Returns the plugin implementation address.\\n /// @return The address of the plugin implementation contract.\\n /// @dev The implementation can be instantiated via the `new` keyword, cloned via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)), or proxied via the UUPS proxy pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0x21c99995208039ac6ace219b6f273243811dc2aa66399e8e499e43ec30b82fa9\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/setup/PluginUpgradeableSetup.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ERC165} from \\\"@openzeppelin/contracts/utils/introspection/ERC165.sol\\\";\\n\\nimport {IProtocolVersion} from \\\"../../utils/versioning/IProtocolVersion.sol\\\";\\nimport {ProtocolVersion} from \\\"../../utils/versioning/ProtocolVersion.sol\\\";\\nimport {IPluginSetup} from \\\"./IPluginSetup.sol\\\";\\n\\n/// @title PluginUpgradeableSetup\\n/// @author Aragon X - 2022-2024\\n/// @notice An abstract contract to inherit from to implement the plugin setup for upgradeable plugins, i.e, `PluginUUPSUpgradeable` being deployed via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822) and [ERC-1967](https://eips.ethereum.org/EIPS/eip-1967)).\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract PluginUpgradeableSetup is ERC165, IPluginSetup, ProtocolVersion {\\n /// @notice The address of the plugin implementation contract for initial block explorer verification\\n /// and to create [ERC-1967](https://eips.ethereum.org/EIPS/eip-1967) UUPS proxies from.\\n address internal immutable IMPLEMENTATION;\\n\\n /// @notice Thrown when an update path is not available, for example, if this is the initial build.\\n /// @param fromBuild The build number to update from.\\n /// @param thisBuild The build number of this setup to update to.\\n error InvalidUpdatePath(uint16 fromBuild, uint16 thisBuild);\\n\\n /// @notice The contract constructor, that setting the plugin implementation contract.\\n /// @param _implementation The address of the plugin implementation contract.\\n constructor(address _implementation) {\\n IMPLEMENTATION = _implementation;\\n }\\n\\n /// @notice Checks if this or the parent contract supports an interface by its ID.\\n /// @param _interfaceId The ID of the interface.\\n /// @return Returns `true` if the interface is supported.\\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\\n return\\n _interfaceId == type(IPluginSetup).interfaceId ||\\n _interfaceId == type(IProtocolVersion).interfaceId ||\\n super.supportsInterface(_interfaceId);\\n }\\n\\n /// @inheritdoc IPluginSetup\\n function implementation() public view returns (address) {\\n return IMPLEMENTATION;\\n }\\n}\\n\",\"keccak256\":\"0x2842d919d1ecb4fbeb40953128c3da3b36dcf6e91255089e987c2f11ff8d061e\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/deployment/ProxyLib.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ERC1967Proxy} from \\\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol\\\";\\nimport {Clones} from \\\"@openzeppelin/contracts/proxy/Clones.sol\\\";\\nimport {Address} from \\\"@openzeppelin/contracts/utils/Address.sol\\\";\\n\\n/// @title ProxyLib\\n/// @author Aragon X - 2024\\n/// @notice A library containing methods for the deployment of proxies via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)) and minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)).\\n/// @custom:security-contact sirt@aragon.org\\nlibrary ProxyLib {\\n using Address for address;\\n using Clones for address;\\n\\n /// @notice Creates an [ERC-1967](https://eips.ethereum.org/EIPS/eip-1967) UUPS proxy contract pointing to a logic contract and allows to immediately initialize it.\\n /// @param _logic The logic contract the proxy is pointing to.\\n /// @param _initCalldata The initialization data for this contract.\\n /// @return uupsProxy The address of the UUPS proxy contract created.\\n /// @dev If `_initCalldata` is non-empty, it is used in a delegate call to the `_logic` contract. This will typically be an encoded function call initializing the storage of the proxy (see [OpenZeppelin ERC1967Proxy-constructor](https://docs.openzeppelin.com/contracts/4.x/api/proxy#ERC1967Proxy-constructor-address-bytes-)).\\n function deployUUPSProxy(\\n address _logic,\\n bytes memory _initCalldata\\n ) internal returns (address uupsProxy) {\\n uupsProxy = address(new ERC1967Proxy({_logic: _logic, _data: _initCalldata}));\\n }\\n\\n /// @notice Creates an [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167) minimal proxy contract, also known as clones, pointing to a logic contract and allows to immediately initialize it.\\n /// @param _logic The logic contract the proxy is pointing to.\\n /// @param _initCalldata The initialization data for this contract.\\n /// @return minimalProxy The address of the minimal proxy contract created.\\n /// @dev If `_initCalldata` is non-empty, it is used in a call to the clone contract. This will typically be an encoded function call initializing the storage of the contract.\\n function deployMinimalProxy(\\n address _logic,\\n bytes memory _initCalldata\\n ) internal returns (address minimalProxy) {\\n minimalProxy = _logic.clone();\\n if (_initCalldata.length > 0) {\\n minimalProxy.functionCall({data: _initCalldata});\\n }\\n }\\n}\\n\",\"keccak256\":\"0xef0d1790dfa026381c021daa2ec7267357497f58cd4a2fa5c64e72e0dea95acc\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/IProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IProtocolVersion\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the semantic Aragon OSx protocol version number.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IProtocolVersion {\\n /// @notice Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\\n /// @return _version Returns the semantic Aragon OSx protocol version number.\\n /// @dev This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\\n function protocolVersion() external view returns (uint8[3] memory _version);\\n}\\n\",\"keccak256\":\"0x00a4da654d21dc1bdadbdc8bd54bb86c378c56f85e461ccc31303628ea621361\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/ProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IProtocolVersion} from \\\"./IProtocolVersion.sol\\\";\\n\\n/// @title ProtocolVersion\\n/// @author Aragon X - 2023\\n/// @notice An abstract, stateless, non-upgradeable contract providing the current Aragon OSx protocol version number.\\n/// @dev Do not add any new variables to this contract that would shift down storage in the inheritance chain.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract ProtocolVersion is IProtocolVersion {\\n // IMPORTANT: Do not add any storage variable, see the above notice.\\n\\n /// @inheritdoc IProtocolVersion\\n function protocolVersion() public pure returns (uint8[3] memory) {\\n return [1, 4, 0];\\n }\\n}\\n\",\"keccak256\":\"0x3975c937be935f687c6b6b8f379071232681e98cf04b175d72781b819ea52bdb\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"errors":{"InvalidUpdatePath(uint16,uint16)":[{"notice":"Thrown when an update path is not available, for example, if this is the initial build."}]},"kind":"user","methods":{"implementation()":{"notice":"Returns the plugin implementation address."},"prepareInstallation(address,bytes)":{"notice":"Prepares the installation of a plugin."},"prepareUninstallation(address,(address,address[],bytes))":{"notice":"Prepares the uninstallation of a plugin."},"prepareUpdate(address,uint16,(address,address[],bytes))":{"notice":"Prepares the update of a plugin."},"protocolVersion()":{"notice":"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with."},"supportsInterface(bytes4)":{"notice":"Checks if this or the parent contract supports an interface by its ID."}},"notice":"A mock plugin setup of an upgradeable plugin to be deployed via the UUPS pattern. v1.2 (Release 1, Build 2)","version":1}},"PluginUUPSUpgradeableSetupMockBuild3":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"ConflictingValues","type":"error"},{"inputs":[{"internalType":"uint16","name":"fromBuild","type":"uint16"},{"internalType":"uint16","name":"thisBuild","type":"uint16"}],"name":"InvalidUpdatePath","type":"error"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_dao","type":"address"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"prepareInstallation","outputs":[{"internalType":"address","name":"plugin","type":"address"},{"components":[{"internalType":"address[]","name":"helpers","type":"address[]"},{"components":[{"internalType":"enum PermissionLib.Operation","name":"operation","type":"uint8"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"condition","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"internalType":"struct PermissionLib.MultiTargetPermission[]","name":"permissions","type":"tuple[]"}],"internalType":"struct IPluginSetup.PreparedSetupData","name":"preparedSetupData","type":"tuple"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_dao","type":"address"},{"components":[{"internalType":"address","name":"plugin","type":"address"},{"internalType":"address[]","name":"currentHelpers","type":"address[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct IPluginSetup.SetupPayload","name":"_payload","type":"tuple"}],"name":"prepareUninstallation","outputs":[{"components":[{"internalType":"enum PermissionLib.Operation","name":"operation","type":"uint8"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"condition","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"internalType":"struct PermissionLib.MultiTargetPermission[]","name":"permissions","type":"tuple[]"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_dao","type":"address"},{"internalType":"uint16","name":"_fromBuild","type":"uint16"},{"components":[{"internalType":"address","name":"plugin","type":"address"},{"internalType":"address[]","name":"currentHelpers","type":"address[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct IPluginSetup.SetupPayload","name":"_payload","type":"tuple"}],"name":"prepareUpdate","outputs":[{"internalType":"bytes","name":"initData","type":"bytes"},{"components":[{"internalType":"address[]","name":"helpers","type":"address[]"},{"components":[{"internalType":"enum PermissionLib.Operation","name":"operation","type":"uint8"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"condition","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"internalType":"struct PermissionLib.MultiTargetPermission[]","name":"permissions","type":"tuple[]"}],"internalType":"struct IPluginSetup.PreparedSetupData","name":"preparedSetupData","type":"tuple"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"protocolVersion","outputs":[{"internalType":"uint8[3]","name":"","type":"uint8[3]"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"errors":{"InvalidUpdatePath(uint16,uint16)":[{"params":{"fromBuild":"The build number to update from.","thisBuild":"The build number of this setup to update to."}}]},"kind":"dev","methods":{"implementation()":{"details":"The implementation can be instantiated via the `new` keyword, cloned via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)), or proxied via the UUPS proxy pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).","returns":{"_0":"The address of the plugin implementation contract."}},"prepareInstallation(address,bytes)":{"params":{"_dao":"The address of the installing DAO.","_data":"The bytes-encoded data containing the input parameters for the installation as specified in the plugin's build metadata JSON file."},"returns":{"plugin":"The address of the `Plugin` contract being prepared for installation.","preparedSetupData":"The deployed plugin's relevant data which consists of helpers and permissions."}},"prepareUninstallation(address,(address,address[],bytes))":{"params":{"_dao":"The address of the uninstalling DAO.","_payload":"The relevant data necessary for the `prepareUninstallation`. See above."},"returns":{"permissions":"The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the uninstalling DAO."}},"prepareUpdate(address,uint16,(address,address[],bytes))":{"params":{"_dao":"The address of the updating DAO.","_fromBuild":"The build number of the plugin to update from.","_payload":"The relevant data necessary for the `prepareUpdate`. See above."},"returns":{"initData":"The initialization data to be passed to upgradeable contracts when the update is applied in the `PluginSetupProcessor`.","preparedSetupData":"The deployed plugin's relevant data which consists of helpers and permissions."}},"protocolVersion()":{"details":"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.","returns":{"_0":"Returns the semantic Aragon OSx protocol version number."}},"supportsInterface(bytes4)":{"params":{"_interfaceId":"The ID of the interface."},"returns":{"_0":"Returns `true` if the interface is supported."}}},"version":1},"evm":{"bytecode":{"functionDebugData":{"@_3604":{"entryPoint":null,"id":3604,"parameterSlots":0,"returnSlots":0},"@_4995":{"entryPoint":null,"id":4995,"parameterSlots":1,"returnSlots":0}},"generatedSources":[],"linkReferences":{},"object":"60a060405234801561001057600080fd5b5060405161001d9061004b565b604051809103906000f080158015610039573d6000803e3d6000fd5b506001600160a01b0316608052610058565b61142d8061130b83390190565b6080516112926100796000396000818160d2015261037e01526112926000f3fe60806040523480156200001157600080fd5b50600436106200007b5760003560e01c80639cb0a12411620000565780639cb0a12414620000fd578063a8a9c29e1462000123578063f10832f1146200014a57600080fd5b806301ffc9a714620000805780632ae9c60014620000ac5780635c60da1b14620000c5575b600080fd5b6200009762000091366004620006a3565b62000171565b60405190151581526020015b60405180910390f35b620000b6620001c4565b604051620000a39190620006cf565b6040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152602001620000a3565b620001146200010e36600462000735565b620001f0565b604051620000a3919062000806565b6200013a6200013436600462000853565b62000209565b604051620000a3929190620009a2565b620001616200015b366004620009ea565b6200030f565b604051620000a392919062000ab8565b60006001600160e01b0319821663099718b560e41b1480620001a257506001600160e01b03198216621574e360e91b145b80620001be57506301ffc9a760e01b6001600160e01b03198316145b92915050565b620001ce62000677565b5060408051606081018252600181526004602082015260009181019190915290565b606062000202600060036001620003de565b9392505050565b606062000229604051806040016040528060608152602001606081525090565b8361ffff16600103620002985762000242600362000577565b815260405161ffff8516602482015260440160408051601f198184030181529190526020810180516001600160e01b03166239a8c560e41b17905291506200029261ffff851660036000620003de565b60208201525b8361ffff166002036200030757620002b1600362000577565b815260405161ffff8516602482015260440160408051601f198184030181529190526020810180516001600160e01b03166239a8c560e41b17905291506200030161ffff851660036000620003de565b60208201525b935093915050565b60006200032f604051806040016040528060608152602001606081525090565b6040516001600160a01b038516602482015260009060440160408051601f198184030181529190526020810180516001600160e01b031663189acdbd60e31b1790529050620003b081620003a07f000000000000000000000000000000000000000000000000000000000000000090565b6001600160a01b0316906200063b565b9250620003be600362000577565b8252620003cf6000600381620003de565b60208301525090939092509050565b6060826001600160a01b0316846001600160a01b031611156200041457604051633a4013cd60e21b815260040160405180910390fd5b62000420848462000afa565b6001600160a01b031667ffffffffffffffff811115620004445762000444620009d4565b6040519080825280602002602001820160405280156200049f57816020015b6040805160a081018252600080825260208083018290529282018190526060820181905260808201528252600019909201910181620004635790505b509050835b836001600160a01b0316816001600160a01b031610156200056f576040518060a00160405280846002811115620004df57620004df62000789565b81526001600160a01b038316602082018190526040820152600060608201527fa280eec51ab8e1bc4b6b0c1b7f1bde785761b787a49db404e3e9338ed9b016ef6080909101528262000532878462000afa565b6001600160a01b0316815181106200054e576200054e62000b24565b60200260200101819052508080620005669062000b3a565b915050620004a4565b509392505050565b6060816001600160a01b031667ffffffffffffffff8111156200059e576200059e620009d4565b604051908082528060200260200182016040528015620005c8578160200160208202803683370190505b50905060005b826001600160a01b0316816001600160a01b0316101562000635578082826001600160a01b03168151811062000608576200060862000b24565b6001600160a01b0390921660209283029190910190910152806200062c8162000b3a565b915050620005ce565b50919050565b600082826040516200064d9062000695565b6200065a92919062000b63565b604051809103906000f0801580156200056f573d6000803e3d6000fd5b60405180606001604052806003906020820280368337509192915050565b6106fe8062000b8883390190565b600060208284031215620006b657600080fd5b81356001600160e01b0319811681146200020257600080fd5b60608101818360005b6003811015620006fc57815160ff16835260209283019290910190600101620006d8565b50505092915050565b80356001600160a01b03811681146200071d57600080fd5b919050565b6000606082840312156200063557600080fd5b600080604083850312156200074957600080fd5b620007548362000705565b9150602083013567ffffffffffffffff8111156200077157600080fd5b6200077f8582860162000722565b9150509250929050565b634e487b7160e01b600052602160045260246000fd5b6000815160038110620007c257634e487b7160e01b600052602160045260246000fd5b8352506020818101516001600160a01b0390811691840191909152604080830151821690840152606080830151909116908301526080908101519082015260a00190565b6020808252825182820181905260009190848201906040850190845b818110156200084757620008388385516200079f565b93850193925060010162000822565b50909695505050505050565b6000806000606084860312156200086957600080fd5b620008748462000705565b9250602084013561ffff811681146200088c57600080fd5b9150604084013567ffffffffffffffff811115620008a957600080fd5b620008b78682870162000722565b9150509250925092565b6000815180845260005b81811015620008e957602081850181015186830182015201620008cb565b506000602082860101526020601f19601f83011685010191505092915050565b805160408084528151908401819052600091602091908201906060860190845b81811015620009505783516001600160a01b03168352928401929184019160010162000929565b50508483015186820387850152805180835290840192506000918401905b808310156200099757620009848285516200079f565b915084840193506001830192506200096e565b509695505050505050565b604081526000620009b76040830185620008c1565b8281036020840152620009cb818562000909565b95945050505050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215620009fe57600080fd5b62000a098362000705565b9150602083013567ffffffffffffffff8082111562000a2757600080fd5b818501915085601f83011262000a3c57600080fd5b81358181111562000a515762000a51620009d4565b604051601f8201601f19908116603f0116810190838211818310171562000a7c5762000a7c620009d4565b8160405282815288602084870101111562000a9657600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6001600160a01b038316815260406020820152600062000adc604083018462000909565b949350505050565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0382811682821603908082111562000b1d5762000b1d62000ae4565b5092915050565b634e487b7160e01b600052603260045260246000fd5b60006001600160a01b0380831681810362000b595762000b5962000ae4565b6001019392505050565b6001600160a01b038316815260406020820152600062000adc6040830184620008c156fe60806040526040516106fe3803806106fe83398101604081905261002291610319565b61002e82826000610035565b5050610436565b61003e8361006b565b60008251118061004b5750805b156100665761006483836100ab60201b6100291760201c565b505b505050565b610074816100d7565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606100d083836040518060600160405280602781526020016106d7602791396101a9565b9392505050565b6100ea8161022260201b6100551760201c565b6101515760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b806101887f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61023160201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6060600080856001600160a01b0316856040516101c691906103e7565b600060405180830381855af49150503d8060008114610201576040519150601f19603f3d011682016040523d82523d6000602084013e610206565b606091505b50909250905061021886838387610234565b9695505050505050565b6001600160a01b03163b151590565b90565b606083156102a357825160000361029c576001600160a01b0385163b61029c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610148565b50816102ad565b6102ad83836102b5565b949350505050565b8151156102c55781518083602001fd5b8060405162461bcd60e51b81526004016101489190610403565b634e487b7160e01b600052604160045260246000fd5b60005b838110156103105781810151838201526020016102f8565b50506000910152565b6000806040838503121561032c57600080fd5b82516001600160a01b038116811461034357600080fd5b60208401519092506001600160401b038082111561036057600080fd5b818501915085601f83011261037457600080fd5b815181811115610386576103866102df565b604051601f8201601f19908116603f011681019083821181831017156103ae576103ae6102df565b816040528281528860208487010111156103c757600080fd5b6103d88360208301602088016102f5565b80955050505050509250929050565b600082516103f98184602087016102f5565b9190910192915050565b60208152600082518060208401526104228160408501602087016102f5565b601f01601f19169190910160400192915050565b610292806104456000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b61009f565b565b606061004e838360405180606001604052806027815260200161025f602791396100c3565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e8080156100be573d6000f35b3d6000fd5b6060600080856001600160a01b0316856040516100e0919061020f565b600060405180830381855af49150503d806000811461011b576040519150601f19603f3d011682016040523d82523d6000602084013e610120565b606091505b50915091506101318683838761013b565b9695505050505050565b606083156101af5782516000036101a8576001600160a01b0385163b6101a85760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b50816101b9565b6101b983836101c1565b949350505050565b8151156101d15781518083602001fd5b8060405162461bcd60e51b815260040161019f919061022b565b60005b838110156102065781810151838201526020016101ee565b50506000910152565b600082516102218184602087016101eb565b9190910192915050565b602081526000825180602084015261024a8160408501602087016101eb565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a60a06040523060805234801561001457600080fd5b5061001d610022565b6100e1565b600054610100900460ff161561008e5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116146100df576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b608051611315610118600039600081816104af015281816105340152818161062a015281816106af015261079901526113156000f3fe6080604052600436106100f35760003560e01c806352d1902d1161008a578063c4d66de811610059578063c4d66de814610278578063c9c4bfca14610298578063d4b83992146102cc578063efe51cca146102ec57600080fd5b806352d1902d146102175780635c60da1b1461022c5780636accab8c14610241578063776d1a011461025857600080fd5b80633659cfe6116100c65780633659cfe6146101965780634162169f146101b657806341de6830146101e85780634f1ef2861461020457600080fd5b806301ffc9a7146100f8578063039a8c501461012d5780632491118d1461014f5780632ae9c60014610174575b600080fd5b34801561010457600080fd5b50610118610113366004611029565b610303565b60405190151581526020015b60405180910390f35b34801561013957600080fd5b5061014d610148366004611053565b61036f565b005b34801561015b57600080fd5b5061016661012f5481565b604051908152602001610124565b34801561018057600080fd5b5061018961047b565b6040516101249190611077565b3480156101a257600080fd5b5061014d6101b13660046110c0565b6104a5565b3480156101c257600080fd5b5060c9546001600160a01b03165b6040516001600160a01b039091168152602001610124565b3480156101f457600080fd5b50600060405161012491906110dd565b61014d61021236600461111b565b610620565b34801561022357600080fd5b5061016661078c565b34801561023857600080fd5b506101d0610851565b34801561024d57600080fd5b5061016661012d5481565b34801561026457600080fd5b5061014d6102733660046110c0565b610889565b34801561028457600080fd5b5061014d6102933660046110c0565b6108e8565b3480156102a457600080fd5b506101667f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f581565b3480156102d857600080fd5b5060fb546101d0906001600160a01b031681565b3480156102f857600080fd5b5061016661012e5481565b60006001600160e01b0319821663041de68360e41b148061033357506001600160e01b03198216621574e360e91b145b8061034e57506001600160e01b031982166352d1902d60e01b145b8061036957506301ffc9a760e01b6001600160e01b03198316145b92915050565b600054600390610100900460ff16158015610391575060005460ff8083169116105b6103f95760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805461ffff191660ff831617610100179055600261ffff8316101561042157600261012e555b60038261ffff16101561043557600361012f555b6000805461ff001916905560405160ff821681527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b61048361100b565b5060408051606081018252600181526004602082015260009181019190915290565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036105325760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b60648201526084016103f0565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661058d7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b0316146105f85760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b60648201526084016103f0565b610601816109da565b6040805160008082526020820190925261061d91839190610a17565b50565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036106ad5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b60648201526084016103f0565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166107087f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b0316146107735760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b60648201526084016103f0565b61077c826109da565b61078882826001610a17565b5050565b6000306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461082c5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016103f0565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b60006108847f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b60fb80546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d690600090a35050565b600054600390610100900460ff1615801561090a575060005460ff8083169116105b61096d5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016103f0565b6000805461ffff191660ff83161761010017905561098a82610bbc565b600161012d55600261012e55600361012f556000805461ff001916905560405160ff821681527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200161046f565b60c9547f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f590610788906001600160a01b0316303384600036610c30565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610a4f57610a4a83610cec565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610aa9575060408051601f3d908101601f19168201909252610aa6918101906111df565b60015b610b1b5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201527f6f6e206973206e6f74205555505300000000000000000000000000000000000060648201526084016103f0565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114610bb05760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f7860448201527f6961626c6555554944000000000000000000000000000000000000000000000060648201526084016103f0565b50610a4a838383610db7565b600054610100900460ff16610c275760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103f0565b61061d81610de2565b604051637ef7c88360e11b81526001600160a01b0387169063fdef910690610c6490889088908890889088906004016111f8565b602060405180830381865afa158015610c81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca5919061124c565b610ce457604051630cb6f8ed60e21b81526001600160a01b038088166004830152808716602483015285166044820152606481018490526084016103f0565b505050505050565b6001600160a01b0381163b610d695760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e74726163740000000000000000000000000000000000000060648201526084016103f0565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610dc083610e7c565b600082511180610dcd5750805b15610a4a57610ddc8383610ebc565b50505050565b600054610100900460ff16610e4d5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103f0565b60c9805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610e8581610cec565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060610ee183836040518060600160405280602781526020016112e260279139610ee8565b9392505050565b6060600080856001600160a01b031685604051610f059190611292565b600060405180830381855af49150503d8060008114610f40576040519150601f19603f3d011682016040523d82523d6000602084013e610f45565b606091505b5091509150610f5686838387610f60565b9695505050505050565b60608315610fcf578251600003610fc8576001600160a01b0385163b610fc85760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016103f0565b5081610fd9565b610fd98383610fe1565b949350505050565b815115610ff15781518083602001fd5b8060405162461bcd60e51b81526004016103f091906112ae565b60405180606001604052806003906020820280368337509192915050565b60006020828403121561103b57600080fd5b81356001600160e01b031981168114610ee157600080fd5b60006020828403121561106557600080fd5b813561ffff81168114610ee157600080fd5b60608101818360005b60038110156110a257815160ff16835260209283019290910190600101611080565b50505092915050565b6001600160a01b038116811461061d57600080fd5b6000602082840312156110d257600080fd5b8135610ee1816110ab565b60208101600383106110ff57634e487b7160e01b600052602160045260246000fd5b91905290565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561112e57600080fd5b8235611139816110ab565b9150602083013567ffffffffffffffff8082111561115657600080fd5b818501915085601f83011261116a57600080fd5b81358181111561117c5761117c611105565b604051601f8201601f19908116603f011681019083821181831017156111a4576111a4611105565b816040528281528860208487010111156111bd57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6000602082840312156111f157600080fd5b5051919050565b60006001600160a01b03808816835280871660208401525084604083015260806060830152826080830152828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b60006020828403121561125e57600080fd5b81518015158114610ee157600080fd5b60005b83811015611289578181015183820152602001611271565b50506000910152565b600082516112a481846020870161126e565b9190910192915050565b60208152600082518060208401526112cd81604085016020870161126e565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a","opcodes":"PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x1D SWAP1 PUSH2 0x4B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH2 0x39 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x80 MSTORE PUSH2 0x58 JUMP JUMPDEST PUSH2 0x142D DUP1 PUSH2 0x130B DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH2 0x1292 PUSH2 0x79 PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH1 0xD2 ADD MSTORE PUSH2 0x37E ADD MSTORE PUSH2 0x1292 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH3 0x7B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9CB0A124 GT PUSH3 0x56 JUMPI DUP1 PUSH4 0x9CB0A124 EQ PUSH3 0xFD JUMPI DUP1 PUSH4 0xA8A9C29E EQ PUSH3 0x123 JUMPI DUP1 PUSH4 0xF10832F1 EQ PUSH3 0x14A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH3 0x80 JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH3 0xAC JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH3 0xC5 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x97 PUSH3 0x91 CALLDATASIZE PUSH1 0x4 PUSH3 0x6A3 JUMP JUMPDEST PUSH3 0x171 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0xB6 PUSH3 0x1C4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0xA3 SWAP2 SWAP1 PUSH3 0x6CF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH3 0xA3 JUMP JUMPDEST PUSH3 0x114 PUSH3 0x10E CALLDATASIZE PUSH1 0x4 PUSH3 0x735 JUMP JUMPDEST PUSH3 0x1F0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0xA3 SWAP2 SWAP1 PUSH3 0x806 JUMP JUMPDEST PUSH3 0x13A PUSH3 0x134 CALLDATASIZE PUSH1 0x4 PUSH3 0x853 JUMP JUMPDEST PUSH3 0x209 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0xA3 SWAP3 SWAP2 SWAP1 PUSH3 0x9A2 JUMP JUMPDEST PUSH3 0x161 PUSH3 0x15B CALLDATASIZE PUSH1 0x4 PUSH3 0x9EA JUMP JUMPDEST PUSH3 0x30F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0xA3 SWAP3 SWAP2 SWAP1 PUSH3 0xAB8 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x99718B5 PUSH1 0xE4 SHL EQ DUP1 PUSH3 0x1A2 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH3 0x1BE JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH3 0x1CE PUSH3 0x677 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH3 0x202 PUSH1 0x0 PUSH1 0x3 PUSH1 0x1 PUSH3 0x3DE JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH3 0x229 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST DUP4 PUSH2 0xFFFF AND PUSH1 0x1 SUB PUSH3 0x298 JUMPI PUSH3 0x242 PUSH1 0x3 PUSH3 0x577 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x40 MLOAD PUSH2 0xFFFF DUP6 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH3 0x39A8C5 PUSH1 0xE4 SHL OR SWAP1 MSTORE SWAP2 POP PUSH3 0x292 PUSH2 0xFFFF DUP6 AND PUSH1 0x3 PUSH1 0x0 PUSH3 0x3DE JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE JUMPDEST DUP4 PUSH2 0xFFFF AND PUSH1 0x2 SUB PUSH3 0x307 JUMPI PUSH3 0x2B1 PUSH1 0x3 PUSH3 0x577 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x40 MLOAD PUSH2 0xFFFF DUP6 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH3 0x39A8C5 PUSH1 0xE4 SHL OR SWAP1 MSTORE SWAP2 POP PUSH3 0x301 PUSH2 0xFFFF DUP6 AND PUSH1 0x3 PUSH1 0x0 PUSH3 0x3DE JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE JUMPDEST SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x32F PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 PUSH1 0x44 ADD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x189ACDBD PUSH1 0xE3 SHL OR SWAP1 MSTORE SWAP1 POP PUSH3 0x3B0 DUP2 PUSH3 0x3A0 PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH3 0x63B JUMP JUMPDEST SWAP3 POP PUSH3 0x3BE PUSH1 0x3 PUSH3 0x577 JUMP JUMPDEST DUP3 MSTORE PUSH3 0x3CF PUSH1 0x0 PUSH1 0x3 DUP2 PUSH3 0x3DE JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP SWAP1 SWAP4 SWAP1 SWAP3 POP SWAP1 POP JUMP JUMPDEST PUSH1 0x60 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH3 0x414 JUMPI PUSH1 0x40 MLOAD PUSH4 0x3A4013CD PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0x420 DUP5 DUP5 PUSH3 0xAFA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x444 JUMPI PUSH3 0x444 PUSH3 0x9D4 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH3 0x49F JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD DUP3 SWAP1 MSTORE SWAP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 DUP3 ADD MSTORE DUP3 MSTORE PUSH1 0x0 NOT SWAP1 SWAP3 ADD SWAP2 ADD DUP2 PUSH3 0x463 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP DUP4 JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT ISZERO PUSH3 0x56F JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 DUP5 PUSH1 0x2 DUP2 GT ISZERO PUSH3 0x4DF JUMPI PUSH3 0x4DF PUSH3 0x789 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x60 DUP3 ADD MSTORE PUSH32 0xA280EEC51AB8E1BC4B6B0C1B7F1BDE785761B787A49DB404E3E9338ED9B016EF PUSH1 0x80 SWAP1 SWAP2 ADD MSTORE DUP3 PUSH3 0x532 DUP8 DUP5 PUSH3 0xAFA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MLOAD DUP2 LT PUSH3 0x54E JUMPI PUSH3 0x54E PUSH3 0xB24 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP DUP1 DUP1 PUSH3 0x566 SWAP1 PUSH3 0xB3A JUMP JUMPDEST SWAP2 POP POP PUSH3 0x4A4 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x59E JUMPI PUSH3 0x59E PUSH3 0x9D4 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH3 0x5C8 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT ISZERO PUSH3 0x635 JUMPI DUP1 DUP3 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MLOAD DUP2 LT PUSH3 0x608 JUMPI PUSH3 0x608 PUSH3 0xB24 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE DUP1 PUSH3 0x62C DUP2 PUSH3 0xB3A JUMP JUMPDEST SWAP2 POP POP PUSH3 0x5CE JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH3 0x64D SWAP1 PUSH3 0x695 JUMP JUMPDEST PUSH3 0x65A SWAP3 SWAP2 SWAP1 PUSH3 0xB63 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH3 0x56F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x6FE DUP1 PUSH3 0xB88 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x6B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH3 0x202 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH3 0x6FC JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH3 0x6D8 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x71D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x635 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x749 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x754 DUP4 PUSH3 0x705 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x771 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x77F DUP6 DUP3 DUP7 ADD PUSH3 0x722 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP2 MLOAD PUSH1 0x3 DUP2 LT PUSH3 0x7C2 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP4 MSTORE POP PUSH1 0x20 DUP2 DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP1 DUP4 ADD MLOAD DUP3 AND SWAP1 DUP5 ADD MSTORE PUSH1 0x60 DUP1 DUP4 ADD MLOAD SWAP1 SWAP2 AND SWAP1 DUP4 ADD MSTORE PUSH1 0x80 SWAP1 DUP2 ADD MLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x847 JUMPI PUSH3 0x838 DUP4 DUP6 MLOAD PUSH3 0x79F JUMP JUMPDEST SWAP4 DUP6 ADD SWAP4 SWAP3 POP PUSH1 0x1 ADD PUSH3 0x822 JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH3 0x869 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x874 DUP5 PUSH3 0x705 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH3 0x88C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x8A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x8B7 DUP7 DUP3 DUP8 ADD PUSH3 0x722 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x8E9 JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD DUP3 ADD MSTORE ADD PUSH3 0x8CB JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x20 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x20 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x40 DUP1 DUP5 MSTORE DUP2 MLOAD SWAP1 DUP5 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x20 SWAP2 SWAP1 DUP3 ADD SWAP1 PUSH1 0x60 DUP7 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x950 JUMPI DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH3 0x929 JUMP JUMPDEST POP POP DUP5 DUP4 ADD MLOAD DUP7 DUP3 SUB DUP8 DUP6 ADD MSTORE DUP1 MLOAD DUP1 DUP4 MSTORE SWAP1 DUP5 ADD SWAP3 POP PUSH1 0x0 SWAP2 DUP5 ADD SWAP1 JUMPDEST DUP1 DUP4 LT ISZERO PUSH3 0x997 JUMPI PUSH3 0x984 DUP3 DUP6 MLOAD PUSH3 0x79F JUMP JUMPDEST SWAP2 POP DUP5 DUP5 ADD SWAP4 POP PUSH1 0x1 DUP4 ADD SWAP3 POP PUSH3 0x96E JUMP JUMPDEST POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 PUSH3 0x9B7 PUSH1 0x40 DUP4 ADD DUP6 PUSH3 0x8C1 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 ADD MSTORE PUSH3 0x9CB DUP2 DUP6 PUSH3 0x909 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x9FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0xA09 DUP4 PUSH3 0x705 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH3 0xA27 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH3 0xA3C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH3 0xA51 JUMPI PUSH3 0xA51 PUSH3 0x9D4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH3 0xA7C JUMPI PUSH3 0xA7C PUSH3 0x9D4 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH3 0xA96 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH3 0xADC PUSH1 0x40 DUP4 ADD DUP5 PUSH3 0x909 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND DUP3 DUP3 AND SUB SWAP1 DUP1 DUP3 GT ISZERO PUSH3 0xB1D JUMPI PUSH3 0xB1D PUSH3 0xAE4 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND DUP2 DUP2 SUB PUSH3 0xB59 JUMPI PUSH3 0xB59 PUSH3 0xAE4 JUMP JUMPDEST PUSH1 0x1 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH3 0xADC PUSH1 0x40 DUP4 ADD DUP5 PUSH3 0x8C1 JUMP INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH2 0x6FE CODESIZE SUB DUP1 PUSH2 0x6FE DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x22 SWAP2 PUSH2 0x319 JUMP JUMPDEST PUSH2 0x2E DUP3 DUP3 PUSH1 0x0 PUSH2 0x35 JUMP JUMPDEST POP POP PUSH2 0x436 JUMP JUMPDEST PUSH2 0x3E DUP4 PUSH2 0x6B JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD GT DUP1 PUSH2 0x4B JUMPI POP DUP1 JUMPDEST ISZERO PUSH2 0x66 JUMPI PUSH2 0x64 DUP4 DUP4 PUSH2 0xAB PUSH1 0x20 SHL PUSH2 0x29 OR PUSH1 0x20 SHR JUMP JUMPDEST POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x74 DUP2 PUSH2 0xD7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xD0 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x6D7 PUSH1 0x27 SWAP2 CODECOPY PUSH2 0x1A9 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xEA DUP2 PUSH2 0x222 PUSH1 0x20 SHL PUSH2 0x55 OR PUSH1 0x20 SHR JUMP JUMPDEST PUSH2 0x151 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313936373A206E657720696D706C656D656E746174696F6E206973206E PUSH1 0x44 DUP3 ADD MSTORE PUSH13 0x1BDD08184818DBDB9D1C9858DD PUSH1 0x9A SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH2 0x188 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC PUSH1 0x0 SHL PUSH2 0x231 PUSH1 0x20 SHL PUSH2 0x64 OR PUSH1 0x20 SHR JUMP JUMPDEST DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0x1C6 SWAP2 SWAP1 PUSH2 0x3E7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x201 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x206 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x218 DUP7 DUP4 DUP4 DUP8 PUSH2 0x234 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x2A3 JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0x29C JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0x29C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x148 JUMP JUMPDEST POP DUP2 PUSH2 0x2AD JUMP JUMPDEST PUSH2 0x2AD DUP4 DUP4 PUSH2 0x2B5 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x2C5 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x148 SWAP2 SWAP1 PUSH2 0x403 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x310 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2F8 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x32C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x343 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x360 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x374 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x386 JUMPI PUSH2 0x386 PUSH2 0x2DF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x3AE JUMPI PUSH2 0x3AE PUSH2 0x2DF JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x3C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3D8 DUP4 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x2F5 JUMP JUMPDEST DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x3F9 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x2F5 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x422 DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x2F5 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x292 DUP1 PUSH2 0x445 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLDATASIZE PUSH2 0x13 JUMPI PUSH2 0x11 PUSH2 0x17 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x11 JUMPDEST PUSH2 0x27 PUSH2 0x22 PUSH2 0x67 JUMP JUMPDEST PUSH2 0x9F JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x60 PUSH2 0x4E DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x25F PUSH1 0x27 SWAP2 CODECOPY PUSH2 0xC3 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9A PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 DUP1 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE PUSH1 0x0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH2 0xBE JUMPI RETURNDATASIZE PUSH1 0x0 RETURN JUMPDEST RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0xE0 SWAP2 SWAP1 PUSH2 0x20F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x11B JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x120 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x131 DUP7 DUP4 DUP4 DUP8 PUSH2 0x13B JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x1AF JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0x1A8 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0x1A8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP DUP2 PUSH2 0x1B9 JUMP JUMPDEST PUSH2 0x1B9 DUP4 DUP4 PUSH2 0x1C1 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x1D1 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x19F SWAP2 SWAP1 PUSH2 0x22B JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x206 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1EE JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x221 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x1EB JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x24A DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x1EB JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A164 PUSH20 0x6F6C6343000811000A416464726573733A206C6F PUSH24 0x2D6C6576656C2064656C65676174652063616C6C20666169 PUSH13 0x6564A164736F6C634300081100 EXP PUSH1 0xA0 PUSH1 0x40 MSTORE ADDRESS PUSH1 0x80 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x14 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1D PUSH2 0x22 JUMP JUMPDEST PUSH2 0xE1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x8E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x27 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320696E697469 PUSH1 0x44 DUP3 ADD MSTORE PUSH7 0x616C697A696E67 PUSH1 0xC8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xFF SWAP1 DUP2 AND EQ PUSH2 0xDF JUMPI PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH2 0x1315 PUSH2 0x118 PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH2 0x4AF ADD MSTORE DUP2 DUP2 PUSH2 0x534 ADD MSTORE DUP2 DUP2 PUSH2 0x62A ADD MSTORE DUP2 DUP2 PUSH2 0x6AF ADD MSTORE PUSH2 0x799 ADD MSTORE PUSH2 0x1315 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xF3 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x52D1902D GT PUSH2 0x8A JUMPI DUP1 PUSH4 0xC4D66DE8 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0x278 JUMPI DUP1 PUSH4 0xC9C4BFCA EQ PUSH2 0x298 JUMPI DUP1 PUSH4 0xD4B83992 EQ PUSH2 0x2CC JUMPI DUP1 PUSH4 0xEFE51CCA EQ PUSH2 0x2EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x52D1902D EQ PUSH2 0x217 JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0x22C JUMPI DUP1 PUSH4 0x6ACCAB8C EQ PUSH2 0x241 JUMPI DUP1 PUSH4 0x776D1A01 EQ PUSH2 0x258 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x3659CFE6 GT PUSH2 0xC6 JUMPI DUP1 PUSH4 0x3659CFE6 EQ PUSH2 0x196 JUMPI DUP1 PUSH4 0x4162169F EQ PUSH2 0x1B6 JUMPI DUP1 PUSH4 0x41DE6830 EQ PUSH2 0x1E8 JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x204 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xF8 JUMPI DUP1 PUSH4 0x39A8C50 EQ PUSH2 0x12D JUMPI DUP1 PUSH4 0x2491118D EQ PUSH2 0x14F JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH2 0x174 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x104 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x118 PUSH2 0x113 CALLDATASIZE PUSH1 0x4 PUSH2 0x1029 JUMP JUMPDEST PUSH2 0x303 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x139 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x14D PUSH2 0x148 CALLDATASIZE PUSH1 0x4 PUSH2 0x1053 JUMP JUMPDEST PUSH2 0x36F JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x15B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x166 PUSH2 0x12F SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x124 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x180 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x189 PUSH2 0x47B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x124 SWAP2 SWAP1 PUSH2 0x1077 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x14D PUSH2 0x1B1 CALLDATASIZE PUSH1 0x4 PUSH2 0x10C0 JUMP JUMPDEST PUSH2 0x4A5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1C2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xC9 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x124 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 PUSH1 0x40 MLOAD PUSH2 0x124 SWAP2 SWAP1 PUSH2 0x10DD JUMP JUMPDEST PUSH2 0x14D PUSH2 0x212 CALLDATASIZE PUSH1 0x4 PUSH2 0x111B JUMP JUMPDEST PUSH2 0x620 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x223 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x166 PUSH2 0x78C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x238 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1D0 PUSH2 0x851 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x24D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x166 PUSH2 0x12D SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x264 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x14D PUSH2 0x273 CALLDATASIZE PUSH1 0x4 PUSH2 0x10C0 JUMP JUMPDEST PUSH2 0x889 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x284 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x14D PUSH2 0x293 CALLDATASIZE PUSH1 0x4 PUSH2 0x10C0 JUMP JUMPDEST PUSH2 0x8E8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x166 PUSH32 0x821B6E3A557148015A918C89E5D092E878A69854A2D1A410635F771BD5A8A3F5 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xFB SLOAD PUSH2 0x1D0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x166 PUSH2 0x12E SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x41DE683 PUSH1 0xE4 SHL EQ DUP1 PUSH2 0x333 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH2 0x34E JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x52D1902D PUSH1 0xE0 SHL EQ JUMPDEST DUP1 PUSH2 0x369 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x3 SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH2 0x391 JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF DUP1 DUP4 AND SWAP2 AND LT JUMPDEST PUSH2 0x3F9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x44 DUP3 ADD MSTORE PUSH14 0x191E481A5B9A5D1A585B1A5E9959 PUSH1 0x92 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH2 0xFFFF NOT AND PUSH1 0xFF DUP4 AND OR PUSH2 0x100 OR SWAP1 SSTORE PUSH1 0x2 PUSH2 0xFFFF DUP4 AND LT ISZERO PUSH2 0x421 JUMPI PUSH1 0x2 PUSH2 0x12E SSTORE JUMPDEST PUSH1 0x3 DUP3 PUSH2 0xFFFF AND LT ISZERO PUSH2 0x435 JUMPI PUSH1 0x3 PUSH2 0x12F SSTORE JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH1 0xFF DUP3 AND DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH2 0x483 PUSH2 0x100B JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x532 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x19195B1959D85D1958D85B1B PUSH1 0xA2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3F0 JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x58D PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x5F8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x6163746976652070726F7879 PUSH1 0xA0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3F0 JUMP JUMPDEST PUSH2 0x601 DUP2 PUSH2 0x9DA JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x61D SWAP2 DUP4 SWAP2 SWAP1 PUSH2 0xA17 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x6AD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x19195B1959D85D1958D85B1B PUSH1 0xA2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3F0 JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x708 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x773 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756E6374696F6E206D7573742062652063616C6C6564207468726F75676820 PUSH1 0x44 DUP3 ADD MSTORE PUSH12 0x6163746976652070726F7879 PUSH1 0xA0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3F0 JUMP JUMPDEST PUSH2 0x77C DUP3 PUSH2 0x9DA JUMP JUMPDEST PUSH2 0x788 DUP3 DUP3 PUSH1 0x1 PUSH2 0xA17 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x82C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x38 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x555550535570677261646561626C653A206D757374206E6F742062652063616C PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6C6564207468726F7567682064656C656761746563616C6C0000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3F0 JUMP JUMPDEST POP PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x884 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0xFB DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP2 SWAP1 DUP3 SWAP1 PUSH32 0x90CC2F570A6EB594B1580EA3E41247D2D73A55281889E86BD4EC2FC29C7E62D6 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x3 SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH2 0x90A JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF DUP1 DUP4 AND SWAP2 AND LT JUMPDEST PUSH2 0x96D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x44 DUP3 ADD MSTORE PUSH14 0x191E481A5B9A5D1A585B1A5E9959 PUSH1 0x92 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3F0 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH2 0xFFFF NOT AND PUSH1 0xFF DUP4 AND OR PUSH2 0x100 OR SWAP1 SSTORE PUSH2 0x98A DUP3 PUSH2 0xBBC JUMP JUMPDEST PUSH1 0x1 PUSH2 0x12D SSTORE PUSH1 0x2 PUSH2 0x12E SSTORE PUSH1 0x3 PUSH2 0x12F SSTORE PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH1 0xFF DUP3 AND DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH2 0x46F JUMP JUMPDEST PUSH1 0xC9 SLOAD PUSH32 0x821B6E3A557148015A918C89E5D092E878A69854A2D1A410635F771BD5A8A3F5 SWAP1 PUSH2 0x788 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ADDRESS CALLER DUP5 PUSH1 0x0 CALLDATASIZE PUSH2 0xC30 JUMP JUMPDEST PUSH32 0x4910FDFA16FED3260ED0E7147F7CC6DA11A60208B5B9406D12A635614FFD9143 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0xA4F JUMPI PUSH2 0xA4A DUP4 PUSH2 0xCEC JUMP JUMPDEST POP POP POP JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x52D1902D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0xAA9 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0xAA6 SWAP2 DUP2 ADD SWAP1 PUSH2 0x11DF JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0xB1B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524331393637557067726164653A206E657720696D706C656D656E74617469 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F6E206973206E6F742055555053000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3F0 JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC DUP2 EQ PUSH2 0xBB0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524331393637557067726164653A20756E737570706F727465642070726F78 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6961626C65555549440000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3F0 JUMP JUMPDEST POP PUSH2 0xA4A DUP4 DUP4 DUP4 PUSH2 0xDB7 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0xC27 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3F0 JUMP JUMPDEST PUSH2 0x61D DUP2 PUSH2 0xDE2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x7EF7C883 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0xFDEF9106 SWAP1 PUSH2 0xC64 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x11F8 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC81 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xCA5 SWAP2 SWAP1 PUSH2 0x124C JUMP JUMPDEST PUSH2 0xCE4 JUMPI PUSH1 0x40 MLOAD PUSH4 0xCB6F8ED PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND PUSH1 0x4 DUP4 ADD MSTORE DUP1 DUP8 AND PUSH1 0x24 DUP4 ADD MSTORE DUP6 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x84 ADD PUSH2 0x3F0 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND EXTCODESIZE PUSH2 0xD69 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313936373A206E657720696D706C656D656E746174696F6E206973206E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F74206120636F6E747261637400000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3F0 JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xDC0 DUP4 PUSH2 0xE7C JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD GT DUP1 PUSH2 0xDCD JUMPI POP DUP1 JUMPDEST ISZERO PUSH2 0xA4A JUMPI PUSH2 0xDDC DUP4 DUP4 PUSH2 0xEBC JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0xE4D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x44 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3F0 JUMP JUMPDEST PUSH1 0xC9 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xE85 DUP2 PUSH2 0xCEC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xEE1 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x12E2 PUSH1 0x27 SWAP2 CODECOPY PUSH2 0xEE8 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0xF05 SWAP2 SWAP1 PUSH2 0x1292 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xF40 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xF45 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0xF56 DUP7 DUP4 DUP4 DUP8 PUSH2 0xF60 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0xFCF JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0xFC8 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0xFC8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3F0 JUMP JUMPDEST POP DUP2 PUSH2 0xFD9 JUMP JUMPDEST PUSH2 0xFD9 DUP4 DUP4 PUSH2 0xFE1 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0xFF1 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3F0 SWAP2 SWAP1 PUSH2 0x12AE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x103B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0xEE1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1065 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH2 0xEE1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH2 0x10A2 JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x1080 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x61D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x10D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xEE1 DUP2 PUSH2 0x10AB JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH1 0x3 DUP4 LT PUSH2 0x10FF JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 SWAP1 MSTORE SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x112E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x1139 DUP2 PUSH2 0x10AB JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1156 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x116A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x117C JUMPI PUSH2 0x117C PUSH2 0x1105 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x11A4 JUMPI PUSH2 0x11A4 PUSH2 0x1105 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x11BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x11F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND DUP4 MSTORE DUP1 DUP8 AND PUSH1 0x20 DUP5 ADD MSTORE POP DUP5 PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x80 PUSH1 0x60 DUP4 ADD MSTORE DUP3 PUSH1 0x80 DUP4 ADD MSTORE DUP3 DUP5 PUSH1 0xA0 DUP5 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0xA0 DUP5 DUP5 ADD ADD MSTORE PUSH1 0xA0 PUSH1 0x1F NOT PUSH1 0x1F DUP6 ADD AND DUP4 ADD ADD SWAP1 POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x125E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xEE1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1289 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1271 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x12A4 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x126E JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x12CD DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x126E JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A164 PUSH20 0x6F6C6343000811000A0000000000000000000000 ","sourceMap":"4631:2543:32:-:0;;;4788:87;;;;;;;;;;4833:37;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1605:32:46;;;4631:2543:32;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@deployUUPSProxy_5072":{"entryPoint":1595,"id":5072,"parameterSlots":2,"returnSlots":1},"@implementation_5033":{"entryPoint":null,"id":5033,"parameterSlots":0,"returnSlots":1},"@mockHelpers_3108":{"entryPoint":1399,"id":3108,"parameterSlots":1,"returnSlots":1},"@mockPermissions_3069":{"entryPoint":990,"id":3069,"parameterSlots":3,"returnSlots":1},"@prepareInstallation_3658":{"entryPoint":783,"id":3658,"parameterSlots":2,"returnSlots":2},"@prepareUninstallation_3778":{"entryPoint":496,"id":3778,"parameterSlots":2,"returnSlots":1},"@prepareUpdate_3750":{"entryPoint":521,"id":3750,"parameterSlots":3,"returnSlots":2},"@protocolVersion_5135":{"entryPoint":452,"id":5135,"parameterSlots":0,"returnSlots":1},"@supportsInterface_2374":{"entryPoint":null,"id":2374,"parameterSlots":1,"returnSlots":1},"@supportsInterface_5024":{"entryPoint":369,"id":5024,"parameterSlots":1,"returnSlots":1},"abi_decode_address":{"entryPoint":1797,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_struct_SetupPayload_calldata":{"entryPoint":1826,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_bytes_memory_ptr":{"entryPoint":2538,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_struct$_SetupPayload_$4810_calldata_ptr":{"entryPoint":1845,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_uint16t_struct$_SetupPayload_$4810_calldata_ptr":{"entryPoint":2131,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_bytes4":{"entryPoint":1699,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encodeUpdatedPos_struct_MultiTargetPermission":{"entryPoint":1951,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_bytes":{"entryPoint":2241,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_struct_PreparedSetupData":{"entryPoint":2313,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address_t_bytes_memory_ptr__to_t_address_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":2915,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_address_t_struct$_PreparedSetupData_$4802_memory_ptr__to_t_address_t_struct$_PreparedSetupData_$4802_memory_ptr__fromStack_reversed":{"entryPoint":2744,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr__fromStack_reversed":{"entryPoint":2054,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed":{"entryPoint":1743,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$4802_memory_ptr__to_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$4802_memory_ptr__fromStack_reversed":{"entryPoint":2466,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_contract$_IDAO_$2538__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_uint16__to_t_uint16__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_t_uint160":{"entryPoint":2810,"id":null,"parameterSlots":2,"returnSlots":1},"increment_t_uint160":{"entryPoint":2874,"id":null,"parameterSlots":1,"returnSlots":1},"panic_error_0x11":{"entryPoint":2788,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x21":{"entryPoint":1929,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x32":{"entryPoint":2852,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":2516,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:9300:50","statements":[{"nodeType":"YulBlock","src":"6:3:50","statements":[]},{"body":{"nodeType":"YulBlock","src":"83:217:50","statements":[{"body":{"nodeType":"YulBlock","src":"129:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"138:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"141:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"131:6:50"},"nodeType":"YulFunctionCall","src":"131:12:50"},"nodeType":"YulExpressionStatement","src":"131:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"104:7:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"113:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"100:3:50"},"nodeType":"YulFunctionCall","src":"100:23:50"},{"kind":"number","nodeType":"YulLiteral","src":"125:2:50","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"96:3:50"},"nodeType":"YulFunctionCall","src":"96:32:50"},"nodeType":"YulIf","src":"93:52:50"},{"nodeType":"YulVariableDeclaration","src":"154:36:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"180:9:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"167:12:50"},"nodeType":"YulFunctionCall","src":"167:23:50"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"158:5:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"254:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"263:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"266:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"256:6:50"},"nodeType":"YulFunctionCall","src":"256:12:50"},"nodeType":"YulExpressionStatement","src":"256:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"212:5:50"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"223:5:50"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"234:3:50","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"239:10:50","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"230:3:50"},"nodeType":"YulFunctionCall","src":"230:20:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"219:3:50"},"nodeType":"YulFunctionCall","src":"219:32:50"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"209:2:50"},"nodeType":"YulFunctionCall","src":"209:43:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"202:6:50"},"nodeType":"YulFunctionCall","src":"202:51:50"},"nodeType":"YulIf","src":"199:71:50"},{"nodeType":"YulAssignment","src":"279:15:50","value":{"name":"value","nodeType":"YulIdentifier","src":"289:5:50"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"279:6:50"}]}]},"name":"abi_decode_tuple_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"49:9:50","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"60:7:50","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"72:6:50","type":""}],"src":"14:286:50"},{"body":{"nodeType":"YulBlock","src":"400:92:50","statements":[{"nodeType":"YulAssignment","src":"410:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"422:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"433:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"418:3:50"},"nodeType":"YulFunctionCall","src":"418:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"410:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"452:9:50"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"477:6:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"470:6:50"},"nodeType":"YulFunctionCall","src":"470:14:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"463:6:50"},"nodeType":"YulFunctionCall","src":"463:22:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"445:6:50"},"nodeType":"YulFunctionCall","src":"445:41:50"},"nodeType":"YulExpressionStatement","src":"445:41:50"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"369:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"380:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"391:4:50","type":""}],"src":"305:187:50"},{"body":{"nodeType":"YulBlock","src":"640:358:50","statements":[{"nodeType":"YulAssignment","src":"650:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"662:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"673:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"658:3:50"},"nodeType":"YulFunctionCall","src":"658:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"650:4:50"}]},{"nodeType":"YulVariableDeclaration","src":"685:20:50","value":{"name":"headStart","nodeType":"YulIdentifier","src":"696:9:50"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"689:3:50","type":""}]},{"nodeType":"YulAssignment","src":"714:16:50","value":{"name":"headStart","nodeType":"YulIdentifier","src":"721:9:50"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"714:3:50"}]},{"nodeType":"YulVariableDeclaration","src":"739:20:50","value":{"name":"value0","nodeType":"YulIdentifier","src":"753:6:50"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"743:6:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"768:10:50","value":{"kind":"number","nodeType":"YulLiteral","src":"777:1:50","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"772:1:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"834:158:50","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"855:3:50"},{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"870:6:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"864:5:50"},"nodeType":"YulFunctionCall","src":"864:13:50"},{"kind":"number","nodeType":"YulLiteral","src":"879:4:50","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"860:3:50"},"nodeType":"YulFunctionCall","src":"860:24:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"848:6:50"},"nodeType":"YulFunctionCall","src":"848:37:50"},"nodeType":"YulExpressionStatement","src":"848:37:50"},{"nodeType":"YulVariableDeclaration","src":"898:14:50","value":{"kind":"number","nodeType":"YulLiteral","src":"908:4:50","type":"","value":"0x20"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"902:2:50","type":""}]},{"nodeType":"YulAssignment","src":"925:19:50","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"936:3:50"},{"name":"_1","nodeType":"YulIdentifier","src":"941:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"932:3:50"},"nodeType":"YulFunctionCall","src":"932:12:50"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"925:3:50"}]},{"nodeType":"YulAssignment","src":"957:25:50","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"971:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"979:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"967:3:50"},"nodeType":"YulFunctionCall","src":"967:15:50"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"957:6:50"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"798:1:50"},{"kind":"number","nodeType":"YulLiteral","src":"801:4:50","type":"","value":"0x03"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"795:2:50"},"nodeType":"YulFunctionCall","src":"795:11:50"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"807:18:50","statements":[{"nodeType":"YulAssignment","src":"809:14:50","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"818:1:50"},{"kind":"number","nodeType":"YulLiteral","src":"821:1:50","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"814:3:50"},"nodeType":"YulFunctionCall","src":"814:9:50"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"809:1:50"}]}]},"pre":{"nodeType":"YulBlock","src":"791:3:50","statements":[]},"src":"787:205:50"}]},"name":"abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"609:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"620:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"631:4:50","type":""}],"src":"497:501:50"},{"body":{"nodeType":"YulBlock","src":"1104:125:50","statements":[{"nodeType":"YulAssignment","src":"1114:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1126:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"1137:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1122:3:50"},"nodeType":"YulFunctionCall","src":"1122:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1114:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1156:9:50"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1171:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"1179:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1167:3:50"},"nodeType":"YulFunctionCall","src":"1167:55:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1149:6:50"},"nodeType":"YulFunctionCall","src":"1149:74:50"},"nodeType":"YulExpressionStatement","src":"1149:74:50"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1073:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1084:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1095:4:50","type":""}],"src":"1003:226:50"},{"body":{"nodeType":"YulBlock","src":"1283:147:50","statements":[{"nodeType":"YulAssignment","src":"1293:29:50","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1315:6:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1302:12:50"},"nodeType":"YulFunctionCall","src":"1302:20:50"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"1293:5:50"}]},{"body":{"nodeType":"YulBlock","src":"1408:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1417:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1420:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1410:6:50"},"nodeType":"YulFunctionCall","src":"1410:12:50"},"nodeType":"YulExpressionStatement","src":"1410:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1344:5:50"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1355:5:50"},{"kind":"number","nodeType":"YulLiteral","src":"1362:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1351:3:50"},"nodeType":"YulFunctionCall","src":"1351:54:50"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1341:2:50"},"nodeType":"YulFunctionCall","src":"1341:65:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1334:6:50"},"nodeType":"YulFunctionCall","src":"1334:73:50"},"nodeType":"YulIf","src":"1331:93:50"}]},"name":"abi_decode_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"1262:6:50","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"1273:5:50","type":""}],"src":"1234:196:50"},{"body":{"nodeType":"YulBlock","src":"1510:85:50","statements":[{"body":{"nodeType":"YulBlock","src":"1549:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1558:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1561:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1551:6:50"},"nodeType":"YulFunctionCall","src":"1551:12:50"},"nodeType":"YulExpressionStatement","src":"1551:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"end","nodeType":"YulIdentifier","src":"1531:3:50"},{"name":"offset","nodeType":"YulIdentifier","src":"1536:6:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1527:3:50"},"nodeType":"YulFunctionCall","src":"1527:16:50"},{"kind":"number","nodeType":"YulLiteral","src":"1545:2:50","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1523:3:50"},"nodeType":"YulFunctionCall","src":"1523:25:50"},"nodeType":"YulIf","src":"1520:45:50"},{"nodeType":"YulAssignment","src":"1574:15:50","value":{"name":"offset","nodeType":"YulIdentifier","src":"1583:6:50"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"1574:5:50"}]}]},"name":"abi_decode_struct_SetupPayload_calldata","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"1484:6:50","type":""},{"name":"end","nodeType":"YulTypedName","src":"1492:3:50","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"1500:5:50","type":""}],"src":"1435:160:50"},{"body":{"nodeType":"YulBlock","src":"1719:321:50","statements":[{"body":{"nodeType":"YulBlock","src":"1765:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1774:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1777:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1767:6:50"},"nodeType":"YulFunctionCall","src":"1767:12:50"},"nodeType":"YulExpressionStatement","src":"1767:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1740:7:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"1749:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1736:3:50"},"nodeType":"YulFunctionCall","src":"1736:23:50"},{"kind":"number","nodeType":"YulLiteral","src":"1761:2:50","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1732:3:50"},"nodeType":"YulFunctionCall","src":"1732:32:50"},"nodeType":"YulIf","src":"1729:52:50"},{"nodeType":"YulAssignment","src":"1790:39:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1819:9:50"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"1800:18:50"},"nodeType":"YulFunctionCall","src":"1800:29:50"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1790:6:50"}]},{"nodeType":"YulVariableDeclaration","src":"1838:46:50","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1869:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"1880:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1865:3:50"},"nodeType":"YulFunctionCall","src":"1865:18:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1852:12:50"},"nodeType":"YulFunctionCall","src":"1852:32:50"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1842:6:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"1927:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1936:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1939:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1929:6:50"},"nodeType":"YulFunctionCall","src":"1929:12:50"},"nodeType":"YulExpressionStatement","src":"1929:12:50"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1899:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"1907:18:50","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1896:2:50"},"nodeType":"YulFunctionCall","src":"1896:30:50"},"nodeType":"YulIf","src":"1893:50:50"},{"nodeType":"YulAssignment","src":"1952:82:50","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2006:9:50"},{"name":"offset","nodeType":"YulIdentifier","src":"2017:6:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2002:3:50"},"nodeType":"YulFunctionCall","src":"2002:22:50"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2026:7:50"}],"functionName":{"name":"abi_decode_struct_SetupPayload_calldata","nodeType":"YulIdentifier","src":"1962:39:50"},"nodeType":"YulFunctionCall","src":"1962:72:50"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1952:6:50"}]}]},"name":"abi_decode_tuple_t_addresst_struct$_SetupPayload_$4810_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1677:9:50","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1688:7:50","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1700:6:50","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1708:6:50","type":""}],"src":"1600:440:50"},{"body":{"nodeType":"YulBlock","src":"2077:95:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2094:1:50","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2101:3:50","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"2106:10:50","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2097:3:50"},"nodeType":"YulFunctionCall","src":"2097:20:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2087:6:50"},"nodeType":"YulFunctionCall","src":"2087:31:50"},"nodeType":"YulExpressionStatement","src":"2087:31:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2134:1:50","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"2137:4:50","type":"","value":"0x21"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2127:6:50"},"nodeType":"YulFunctionCall","src":"2127:15:50"},"nodeType":"YulExpressionStatement","src":"2127:15:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2158:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2161:4:50","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2151:6:50"},"nodeType":"YulFunctionCall","src":"2151:15:50"},"nodeType":"YulExpressionStatement","src":"2151:15:50"}]},"name":"panic_error_0x21","nodeType":"YulFunctionDefinition","src":"2045:127:50"},{"body":{"nodeType":"YulBlock","src":"2267:606:50","statements":[{"nodeType":"YulVariableDeclaration","src":"2277:23:50","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2293:6:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2287:5:50"},"nodeType":"YulFunctionCall","src":"2287:13:50"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"2281:2:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"2338:111:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2359:1:50","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2366:3:50","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"2371:10:50","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2362:3:50"},"nodeType":"YulFunctionCall","src":"2362:20:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2352:6:50"},"nodeType":"YulFunctionCall","src":"2352:31:50"},"nodeType":"YulExpressionStatement","src":"2352:31:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2403:1:50","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"2406:4:50","type":"","value":"0x21"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2396:6:50"},"nodeType":"YulFunctionCall","src":"2396:15:50"},"nodeType":"YulExpressionStatement","src":"2396:15:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2431:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2434:4:50","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2424:6:50"},"nodeType":"YulFunctionCall","src":"2424:15:50"},"nodeType":"YulExpressionStatement","src":"2424:15:50"}]},"condition":{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"2322:2:50"},{"kind":"number","nodeType":"YulLiteral","src":"2326:1:50","type":"","value":"3"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2319:2:50"},"nodeType":"YulFunctionCall","src":"2319:9:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2312:6:50"},"nodeType":"YulFunctionCall","src":"2312:17:50"},"nodeType":"YulIf","src":"2309:140:50"},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2465:3:50"},{"name":"_1","nodeType":"YulIdentifier","src":"2470:2:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2458:6:50"},"nodeType":"YulFunctionCall","src":"2458:15:50"},"nodeType":"YulExpressionStatement","src":"2458:15:50"},{"nodeType":"YulVariableDeclaration","src":"2482:44:50","value":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2512:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"2520:4:50","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2508:3:50"},"nodeType":"YulFunctionCall","src":"2508:17:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2502:5:50"},"nodeType":"YulFunctionCall","src":"2502:24:50"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"2486:12:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2535:52:50","value":{"kind":"number","nodeType":"YulLiteral","src":"2545:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"2539:2:50","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2607:3:50"},{"kind":"number","nodeType":"YulLiteral","src":"2612:4:50","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2603:3:50"},"nodeType":"YulFunctionCall","src":"2603:14:50"},{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"2623:12:50"},{"name":"_2","nodeType":"YulIdentifier","src":"2637:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2619:3:50"},"nodeType":"YulFunctionCall","src":"2619:21:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2596:6:50"},"nodeType":"YulFunctionCall","src":"2596:45:50"},"nodeType":"YulExpressionStatement","src":"2596:45:50"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2661:3:50"},{"kind":"number","nodeType":"YulLiteral","src":"2666:4:50","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2657:3:50"},"nodeType":"YulFunctionCall","src":"2657:14:50"},{"arguments":[{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2687:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"2695:4:50","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2683:3:50"},"nodeType":"YulFunctionCall","src":"2683:17:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2677:5:50"},"nodeType":"YulFunctionCall","src":"2677:24:50"},{"name":"_2","nodeType":"YulIdentifier","src":"2703:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2673:3:50"},"nodeType":"YulFunctionCall","src":"2673:33:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2650:6:50"},"nodeType":"YulFunctionCall","src":"2650:57:50"},"nodeType":"YulExpressionStatement","src":"2650:57:50"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2727:3:50"},{"kind":"number","nodeType":"YulLiteral","src":"2732:4:50","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2723:3:50"},"nodeType":"YulFunctionCall","src":"2723:14:50"},{"arguments":[{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2753:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"2761:4:50","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2749:3:50"},"nodeType":"YulFunctionCall","src":"2749:17:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2743:5:50"},"nodeType":"YulFunctionCall","src":"2743:24:50"},{"name":"_2","nodeType":"YulIdentifier","src":"2769:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2739:3:50"},"nodeType":"YulFunctionCall","src":"2739:33:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2716:6:50"},"nodeType":"YulFunctionCall","src":"2716:57:50"},"nodeType":"YulExpressionStatement","src":"2716:57:50"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2793:3:50"},{"kind":"number","nodeType":"YulLiteral","src":"2798:4:50","type":"","value":"0x80"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2789:3:50"},"nodeType":"YulFunctionCall","src":"2789:14:50"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2815:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"2823:4:50","type":"","value":"0x80"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2811:3:50"},"nodeType":"YulFunctionCall","src":"2811:17:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2805:5:50"},"nodeType":"YulFunctionCall","src":"2805:24:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2782:6:50"},"nodeType":"YulFunctionCall","src":"2782:48:50"},"nodeType":"YulExpressionStatement","src":"2782:48:50"},{"nodeType":"YulAssignment","src":"2839:28:50","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2857:3:50"},{"kind":"number","nodeType":"YulLiteral","src":"2862:4:50","type":"","value":"0xa0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2853:3:50"},"nodeType":"YulFunctionCall","src":"2853:14:50"},"variableNames":[{"name":"updatedPos","nodeType":"YulIdentifier","src":"2839:10:50"}]}]},"name":"abi_encodeUpdatedPos_struct_MultiTargetPermission","nodeType":"YulFunctionDefinition","parameters":[{"name":"value0","nodeType":"YulTypedName","src":"2236:6:50","type":""},{"name":"pos","nodeType":"YulTypedName","src":"2244:3:50","type":""}],"returnVariables":[{"name":"updatedPos","nodeType":"YulTypedName","src":"2252:10:50","type":""}],"src":"2177:696:50"},{"body":{"nodeType":"YulBlock","src":"3107:499:50","statements":[{"nodeType":"YulVariableDeclaration","src":"3117:12:50","value":{"kind":"number","nodeType":"YulLiteral","src":"3127:2:50","type":"","value":"32"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"3121:2:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3138:32:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3156:9:50"},{"name":"_1","nodeType":"YulIdentifier","src":"3167:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3152:3:50"},"nodeType":"YulFunctionCall","src":"3152:18:50"},"variables":[{"name":"tail_1","nodeType":"YulTypedName","src":"3142:6:50","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3186:9:50"},{"name":"_1","nodeType":"YulIdentifier","src":"3197:2:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3179:6:50"},"nodeType":"YulFunctionCall","src":"3179:21:50"},"nodeType":"YulExpressionStatement","src":"3179:21:50"},{"nodeType":"YulVariableDeclaration","src":"3209:17:50","value":{"name":"tail_1","nodeType":"YulIdentifier","src":"3220:6:50"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"3213:3:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3235:27:50","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3255:6:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3249:5:50"},"nodeType":"YulFunctionCall","src":"3249:13:50"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"3239:6:50","type":""}]},{"expression":{"arguments":[{"name":"tail_1","nodeType":"YulIdentifier","src":"3278:6:50"},{"name":"length","nodeType":"YulIdentifier","src":"3286:6:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3271:6:50"},"nodeType":"YulFunctionCall","src":"3271:22:50"},"nodeType":"YulExpressionStatement","src":"3271:22:50"},{"nodeType":"YulAssignment","src":"3302:25:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3313:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"3324:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3309:3:50"},"nodeType":"YulFunctionCall","src":"3309:18:50"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"3302:3:50"}]},{"nodeType":"YulVariableDeclaration","src":"3336:29:50","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3354:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"3362:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3350:3:50"},"nodeType":"YulFunctionCall","src":"3350:15:50"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"3340:6:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3374:10:50","value":{"kind":"number","nodeType":"YulLiteral","src":"3383:1:50","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"3378:1:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"3442:138:50","statements":[{"nodeType":"YulAssignment","src":"3456:76:50","value":{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"3519:6:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3513:5:50"},"nodeType":"YulFunctionCall","src":"3513:13:50"},{"name":"pos","nodeType":"YulIdentifier","src":"3528:3:50"}],"functionName":{"name":"abi_encodeUpdatedPos_struct_MultiTargetPermission","nodeType":"YulIdentifier","src":"3463:49:50"},"nodeType":"YulFunctionCall","src":"3463:69:50"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"3456:3:50"}]},{"nodeType":"YulAssignment","src":"3545:25:50","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"3559:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"3567:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3555:3:50"},"nodeType":"YulFunctionCall","src":"3555:15:50"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"3545:6:50"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3404:1:50"},{"name":"length","nodeType":"YulIdentifier","src":"3407:6:50"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"3401:2:50"},"nodeType":"YulFunctionCall","src":"3401:13:50"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"3415:18:50","statements":[{"nodeType":"YulAssignment","src":"3417:14:50","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3426:1:50"},{"kind":"number","nodeType":"YulLiteral","src":"3429:1:50","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3422:3:50"},"nodeType":"YulFunctionCall","src":"3422:9:50"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"3417:1:50"}]}]},"pre":{"nodeType":"YulBlock","src":"3397:3:50","statements":[]},"src":"3393:187:50"},{"nodeType":"YulAssignment","src":"3589:11:50","value":{"name":"pos","nodeType":"YulIdentifier","src":"3597:3:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3589:4:50"}]}]},"name":"abi_encode_tuple_t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3076:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3087:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3098:4:50","type":""}],"src":"2878:728:50"},{"body":{"nodeType":"YulBlock","src":"3746:465:50","statements":[{"body":{"nodeType":"YulBlock","src":"3792:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3801:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3804:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3794:6:50"},"nodeType":"YulFunctionCall","src":"3794:12:50"},"nodeType":"YulExpressionStatement","src":"3794:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3767:7:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"3776:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3763:3:50"},"nodeType":"YulFunctionCall","src":"3763:23:50"},{"kind":"number","nodeType":"YulLiteral","src":"3788:2:50","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3759:3:50"},"nodeType":"YulFunctionCall","src":"3759:32:50"},"nodeType":"YulIf","src":"3756:52:50"},{"nodeType":"YulAssignment","src":"3817:39:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3846:9:50"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"3827:18:50"},"nodeType":"YulFunctionCall","src":"3827:29:50"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3817:6:50"}]},{"nodeType":"YulVariableDeclaration","src":"3865:45:50","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3895:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"3906:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3891:3:50"},"nodeType":"YulFunctionCall","src":"3891:18:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3878:12:50"},"nodeType":"YulFunctionCall","src":"3878:32:50"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"3869:5:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"3960:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3969:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3972:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3962:6:50"},"nodeType":"YulFunctionCall","src":"3962:12:50"},"nodeType":"YulExpressionStatement","src":"3962:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3932:5:50"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3943:5:50"},{"kind":"number","nodeType":"YulLiteral","src":"3950:6:50","type":"","value":"0xffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3939:3:50"},"nodeType":"YulFunctionCall","src":"3939:18:50"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"3929:2:50"},"nodeType":"YulFunctionCall","src":"3929:29:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3922:6:50"},"nodeType":"YulFunctionCall","src":"3922:37:50"},"nodeType":"YulIf","src":"3919:57:50"},{"nodeType":"YulAssignment","src":"3985:15:50","value":{"name":"value","nodeType":"YulIdentifier","src":"3995:5:50"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"3985:6:50"}]},{"nodeType":"YulVariableDeclaration","src":"4009:46:50","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4040:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"4051:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4036:3:50"},"nodeType":"YulFunctionCall","src":"4036:18:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4023:12:50"},"nodeType":"YulFunctionCall","src":"4023:32:50"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4013:6:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"4098:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4107:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4110:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4100:6:50"},"nodeType":"YulFunctionCall","src":"4100:12:50"},"nodeType":"YulExpressionStatement","src":"4100:12:50"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"4070:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"4078:18:50","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4067:2:50"},"nodeType":"YulFunctionCall","src":"4067:30:50"},"nodeType":"YulIf","src":"4064:50:50"},{"nodeType":"YulAssignment","src":"4123:82:50","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4177:9:50"},{"name":"offset","nodeType":"YulIdentifier","src":"4188:6:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4173:3:50"},"nodeType":"YulFunctionCall","src":"4173:22:50"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4197:7:50"}],"functionName":{"name":"abi_decode_struct_SetupPayload_calldata","nodeType":"YulIdentifier","src":"4133:39:50"},"nodeType":"YulFunctionCall","src":"4133:72:50"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"4123:6:50"}]}]},"name":"abi_decode_tuple_t_addresst_uint16t_struct$_SetupPayload_$4810_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3696:9:50","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3707:7:50","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3719:6:50","type":""},{"name":"value1","nodeType":"YulTypedName","src":"3727:6:50","type":""},{"name":"value2","nodeType":"YulTypedName","src":"3735:6:50","type":""}],"src":"3611:600:50"},{"body":{"nodeType":"YulBlock","src":"4265:373:50","statements":[{"nodeType":"YulVariableDeclaration","src":"4275:26:50","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4295:5:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4289:5:50"},"nodeType":"YulFunctionCall","src":"4289:12:50"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"4279:6:50","type":""}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4317:3:50"},{"name":"length","nodeType":"YulIdentifier","src":"4322:6:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4310:6:50"},"nodeType":"YulFunctionCall","src":"4310:19:50"},"nodeType":"YulExpressionStatement","src":"4310:19:50"},{"nodeType":"YulVariableDeclaration","src":"4338:10:50","value":{"kind":"number","nodeType":"YulLiteral","src":"4347:1:50","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"4342:1:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"4409:110:50","statements":[{"nodeType":"YulVariableDeclaration","src":"4423:14:50","value":{"kind":"number","nodeType":"YulLiteral","src":"4433:4:50","type":"","value":"0x20"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"4427:2:50","type":""}]},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4465:3:50"},{"name":"i","nodeType":"YulIdentifier","src":"4470:1:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4461:3:50"},"nodeType":"YulFunctionCall","src":"4461:11:50"},{"name":"_1","nodeType":"YulIdentifier","src":"4474:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4457:3:50"},"nodeType":"YulFunctionCall","src":"4457:20:50"},{"arguments":[{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4493:5:50"},{"name":"i","nodeType":"YulIdentifier","src":"4500:1:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4489:3:50"},"nodeType":"YulFunctionCall","src":"4489:13:50"},{"name":"_1","nodeType":"YulIdentifier","src":"4504:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4485:3:50"},"nodeType":"YulFunctionCall","src":"4485:22:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4479:5:50"},"nodeType":"YulFunctionCall","src":"4479:29:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4450:6:50"},"nodeType":"YulFunctionCall","src":"4450:59:50"},"nodeType":"YulExpressionStatement","src":"4450:59:50"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"4368:1:50"},{"name":"length","nodeType":"YulIdentifier","src":"4371:6:50"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"4365:2:50"},"nodeType":"YulFunctionCall","src":"4365:13:50"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"4379:21:50","statements":[{"nodeType":"YulAssignment","src":"4381:17:50","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"4390:1:50"},{"kind":"number","nodeType":"YulLiteral","src":"4393:4:50","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4386:3:50"},"nodeType":"YulFunctionCall","src":"4386:12:50"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"4381:1:50"}]}]},"pre":{"nodeType":"YulBlock","src":"4361:3:50","statements":[]},"src":"4357:162:50"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4543:3:50"},{"name":"length","nodeType":"YulIdentifier","src":"4548:6:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4539:3:50"},"nodeType":"YulFunctionCall","src":"4539:16:50"},{"kind":"number","nodeType":"YulLiteral","src":"4557:4:50","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4535:3:50"},"nodeType":"YulFunctionCall","src":"4535:27:50"},{"kind":"number","nodeType":"YulLiteral","src":"4564:1:50","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4528:6:50"},"nodeType":"YulFunctionCall","src":"4528:38:50"},"nodeType":"YulExpressionStatement","src":"4528:38:50"},{"nodeType":"YulAssignment","src":"4575:57:50","value":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4590:3:50"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"4603:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"4611:2:50","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4599:3:50"},"nodeType":"YulFunctionCall","src":"4599:15:50"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4620:2:50","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"4616:3:50"},"nodeType":"YulFunctionCall","src":"4616:7:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4595:3:50"},"nodeType":"YulFunctionCall","src":"4595:29:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4586:3:50"},"nodeType":"YulFunctionCall","src":"4586:39:50"},{"kind":"number","nodeType":"YulLiteral","src":"4627:4:50","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4582:3:50"},"nodeType":"YulFunctionCall","src":"4582:50:50"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"4575:3:50"}]}]},"name":"abi_encode_bytes","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"4242:5:50","type":""},{"name":"pos","nodeType":"YulTypedName","src":"4249:3:50","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"4257:3:50","type":""}],"src":"4216:422:50"},{"body":{"nodeType":"YulBlock","src":"4711:1094:50","statements":[{"nodeType":"YulVariableDeclaration","src":"4721:26:50","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4737:3:50"},{"kind":"number","nodeType":"YulLiteral","src":"4742:4:50","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4733:3:50"},"nodeType":"YulFunctionCall","src":"4733:14:50"},"variables":[{"name":"tail","nodeType":"YulTypedName","src":"4725:4:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4756:32:50","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4782:5:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4776:5:50"},"nodeType":"YulFunctionCall","src":"4776:12:50"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"4760:12:50","type":""}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4804:3:50"},{"kind":"number","nodeType":"YulLiteral","src":"4809:4:50","type":"","value":"0x40"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4797:6:50"},"nodeType":"YulFunctionCall","src":"4797:17:50"},"nodeType":"YulExpressionStatement","src":"4797:17:50"},{"nodeType":"YulVariableDeclaration","src":"4823:17:50","value":{"name":"tail","nodeType":"YulIdentifier","src":"4836:4:50"},"variables":[{"name":"pos_1","nodeType":"YulTypedName","src":"4827:5:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4849:33:50","value":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"4869:12:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4863:5:50"},"nodeType":"YulFunctionCall","src":"4863:19:50"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"4853:6:50","type":""}]},{"expression":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"4898:4:50"},{"name":"length","nodeType":"YulIdentifier","src":"4904:6:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4891:6:50"},"nodeType":"YulFunctionCall","src":"4891:20:50"},"nodeType":"YulExpressionStatement","src":"4891:20:50"},{"nodeType":"YulAssignment","src":"4920:21:50","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4933:3:50"},{"kind":"number","nodeType":"YulLiteral","src":"4938:2:50","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4929:3:50"},"nodeType":"YulFunctionCall","src":"4929:12:50"},"variableNames":[{"name":"pos_1","nodeType":"YulIdentifier","src":"4920:5:50"}]},{"nodeType":"YulVariableDeclaration","src":"4950:14:50","value":{"kind":"number","nodeType":"YulLiteral","src":"4960:4:50","type":"","value":"0x20"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"4954:2:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4973:35:50","value":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"4991:12:50"},{"name":"_1","nodeType":"YulIdentifier","src":"5005:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4987:3:50"},"nodeType":"YulFunctionCall","src":"4987:21:50"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"4977:6:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5017:10:50","value":{"kind":"number","nodeType":"YulLiteral","src":"5026:1:50","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"5021:1:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"5085:175:50","statements":[{"expression":{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5106:5:50"},{"arguments":[{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"5123:6:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5117:5:50"},"nodeType":"YulFunctionCall","src":"5117:13:50"},{"kind":"number","nodeType":"YulLiteral","src":"5132:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5113:3:50"},"nodeType":"YulFunctionCall","src":"5113:62:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5099:6:50"},"nodeType":"YulFunctionCall","src":"5099:77:50"},"nodeType":"YulExpressionStatement","src":"5099:77:50"},{"nodeType":"YulAssignment","src":"5189:23:50","value":{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5202:5:50"},{"name":"_1","nodeType":"YulIdentifier","src":"5209:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5198:3:50"},"nodeType":"YulFunctionCall","src":"5198:14:50"},"variableNames":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5189:5:50"}]},{"nodeType":"YulAssignment","src":"5225:25:50","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"5239:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"5247:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5235:3:50"},"nodeType":"YulFunctionCall","src":"5235:15:50"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"5225:6:50"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"5047:1:50"},{"name":"length","nodeType":"YulIdentifier","src":"5050:6:50"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"5044:2:50"},"nodeType":"YulFunctionCall","src":"5044:13:50"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"5058:18:50","statements":[{"nodeType":"YulAssignment","src":"5060:14:50","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"5069:1:50"},{"kind":"number","nodeType":"YulLiteral","src":"5072:1:50","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5065:3:50"},"nodeType":"YulFunctionCall","src":"5065:9:50"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"5060:1:50"}]}]},"pre":{"nodeType":"YulBlock","src":"5040:3:50","statements":[]},"src":"5036:224:50"},{"nodeType":"YulVariableDeclaration","src":"5269:43:50","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5301:5:50"},{"name":"_1","nodeType":"YulIdentifier","src":"5308:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5297:3:50"},"nodeType":"YulFunctionCall","src":"5297:14:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5291:5:50"},"nodeType":"YulFunctionCall","src":"5291:21:50"},"variables":[{"name":"memberValue0_1","nodeType":"YulTypedName","src":"5273:14:50","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5332:3:50"},{"name":"_1","nodeType":"YulIdentifier","src":"5337:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5328:3:50"},"nodeType":"YulFunctionCall","src":"5328:12:50"},{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5346:5:50"},{"name":"pos","nodeType":"YulIdentifier","src":"5353:3:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5342:3:50"},"nodeType":"YulFunctionCall","src":"5342:15:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5321:6:50"},"nodeType":"YulFunctionCall","src":"5321:37:50"},"nodeType":"YulExpressionStatement","src":"5321:37:50"},{"nodeType":"YulVariableDeclaration","src":"5367:18:50","value":{"name":"pos_1","nodeType":"YulIdentifier","src":"5380:5:50"},"variables":[{"name":"pos_2","nodeType":"YulTypedName","src":"5371:5:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5394:37:50","value":{"arguments":[{"name":"memberValue0_1","nodeType":"YulIdentifier","src":"5416:14:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5410:5:50"},"nodeType":"YulFunctionCall","src":"5410:21:50"},"variables":[{"name":"length_1","nodeType":"YulTypedName","src":"5398:8:50","type":""}]},{"expression":{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5447:5:50"},{"name":"length_1","nodeType":"YulIdentifier","src":"5454:8:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5440:6:50"},"nodeType":"YulFunctionCall","src":"5440:23:50"},"nodeType":"YulExpressionStatement","src":"5440:23:50"},{"nodeType":"YulAssignment","src":"5472:23:50","value":{"arguments":[{"name":"pos_1","nodeType":"YulIdentifier","src":"5485:5:50"},{"name":"_1","nodeType":"YulIdentifier","src":"5492:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5481:3:50"},"nodeType":"YulFunctionCall","src":"5481:14:50"},"variableNames":[{"name":"pos_2","nodeType":"YulIdentifier","src":"5472:5:50"}]},{"nodeType":"YulVariableDeclaration","src":"5504:39:50","value":{"arguments":[{"name":"memberValue0_1","nodeType":"YulIdentifier","src":"5524:14:50"},{"name":"_1","nodeType":"YulIdentifier","src":"5540:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5520:3:50"},"nodeType":"YulFunctionCall","src":"5520:23:50"},"variables":[{"name":"srcPtr_1","nodeType":"YulTypedName","src":"5508:8:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5552:12:50","value":{"kind":"number","nodeType":"YulLiteral","src":"5563:1:50","type":"","value":"0"},"variables":[{"name":"i_1","nodeType":"YulTypedName","src":"5556:3:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"5630:148:50","statements":[{"nodeType":"YulAssignment","src":"5644:82:50","value":{"arguments":[{"arguments":[{"name":"srcPtr_1","nodeType":"YulIdentifier","src":"5709:8:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5703:5:50"},"nodeType":"YulFunctionCall","src":"5703:15:50"},{"name":"pos_2","nodeType":"YulIdentifier","src":"5720:5:50"}],"functionName":{"name":"abi_encodeUpdatedPos_struct_MultiTargetPermission","nodeType":"YulIdentifier","src":"5653:49:50"},"nodeType":"YulFunctionCall","src":"5653:73:50"},"variableNames":[{"name":"pos_2","nodeType":"YulIdentifier","src":"5644:5:50"}]},{"nodeType":"YulAssignment","src":"5739:29:50","value":{"arguments":[{"name":"srcPtr_1","nodeType":"YulIdentifier","src":"5755:8:50"},{"name":"_1","nodeType":"YulIdentifier","src":"5765:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5751:3:50"},"nodeType":"YulFunctionCall","src":"5751:17:50"},"variableNames":[{"name":"srcPtr_1","nodeType":"YulIdentifier","src":"5739:8:50"}]}]},"condition":{"arguments":[{"name":"i_1","nodeType":"YulIdentifier","src":"5584:3:50"},{"name":"length_1","nodeType":"YulIdentifier","src":"5589:8:50"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"5581:2:50"},"nodeType":"YulFunctionCall","src":"5581:17:50"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"5599:22:50","statements":[{"nodeType":"YulAssignment","src":"5601:18:50","value":{"arguments":[{"name":"i_1","nodeType":"YulIdentifier","src":"5612:3:50"},{"kind":"number","nodeType":"YulLiteral","src":"5617:1:50","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5608:3:50"},"nodeType":"YulFunctionCall","src":"5608:11:50"},"variableNames":[{"name":"i_1","nodeType":"YulIdentifier","src":"5601:3:50"}]}]},"pre":{"nodeType":"YulBlock","src":"5577:3:50","statements":[]},"src":"5573:205:50"},{"nodeType":"YulAssignment","src":"5787:12:50","value":{"name":"pos_2","nodeType":"YulIdentifier","src":"5794:5:50"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"5787:3:50"}]}]},"name":"abi_encode_struct_PreparedSetupData","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"4688:5:50","type":""},{"name":"pos","nodeType":"YulTypedName","src":"4695:3:50","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"4703:3:50","type":""}],"src":"4643:1162:50"},{"body":{"nodeType":"YulBlock","src":"6027:231:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6044:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"6055:2:50","type":"","value":"64"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6037:6:50"},"nodeType":"YulFunctionCall","src":"6037:21:50"},"nodeType":"YulExpressionStatement","src":"6037:21:50"},{"nodeType":"YulVariableDeclaration","src":"6067:58:50","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6098:6:50"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6110:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"6121:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6106:3:50"},"nodeType":"YulFunctionCall","src":"6106:18:50"}],"functionName":{"name":"abi_encode_bytes","nodeType":"YulIdentifier","src":"6081:16:50"},"nodeType":"YulFunctionCall","src":"6081:44:50"},"variables":[{"name":"tail_1","nodeType":"YulTypedName","src":"6071:6:50","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6145:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"6156:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6141:3:50"},"nodeType":"YulFunctionCall","src":"6141:18:50"},{"arguments":[{"name":"tail_1","nodeType":"YulIdentifier","src":"6165:6:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"6173:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6161:3:50"},"nodeType":"YulFunctionCall","src":"6161:22:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6134:6:50"},"nodeType":"YulFunctionCall","src":"6134:50:50"},"nodeType":"YulExpressionStatement","src":"6134:50:50"},{"nodeType":"YulAssignment","src":"6193:59:50","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"6237:6:50"},{"name":"tail_1","nodeType":"YulIdentifier","src":"6245:6:50"}],"functionName":{"name":"abi_encode_struct_PreparedSetupData","nodeType":"YulIdentifier","src":"6201:35:50"},"nodeType":"YulFunctionCall","src":"6201:51:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6193:4:50"}]}]},"name":"abi_encode_tuple_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$4802_memory_ptr__to_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$4802_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5988:9:50","type":""},{"name":"value1","nodeType":"YulTypedName","src":"5999:6:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"6007:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6018:4:50","type":""}],"src":"5810:448:50"},{"body":{"nodeType":"YulBlock","src":"6295:95:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6312:1:50","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6319:3:50","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"6324:10:50","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"6315:3:50"},"nodeType":"YulFunctionCall","src":"6315:20:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6305:6:50"},"nodeType":"YulFunctionCall","src":"6305:31:50"},"nodeType":"YulExpressionStatement","src":"6305:31:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6352:1:50","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"6355:4:50","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6345:6:50"},"nodeType":"YulFunctionCall","src":"6345:15:50"},"nodeType":"YulExpressionStatement","src":"6345:15:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6376:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6379:4:50","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6369:6:50"},"nodeType":"YulFunctionCall","src":"6369:15:50"},"nodeType":"YulExpressionStatement","src":"6369:15:50"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"6263:127:50"},{"body":{"nodeType":"YulBlock","src":"6491:899:50","statements":[{"body":{"nodeType":"YulBlock","src":"6537:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6546:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6549:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6539:6:50"},"nodeType":"YulFunctionCall","src":"6539:12:50"},"nodeType":"YulExpressionStatement","src":"6539:12:50"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"6512:7:50"},{"name":"headStart","nodeType":"YulIdentifier","src":"6521:9:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6508:3:50"},"nodeType":"YulFunctionCall","src":"6508:23:50"},{"kind":"number","nodeType":"YulLiteral","src":"6533:2:50","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6504:3:50"},"nodeType":"YulFunctionCall","src":"6504:32:50"},"nodeType":"YulIf","src":"6501:52:50"},{"nodeType":"YulAssignment","src":"6562:39:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6591:9:50"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"6572:18:50"},"nodeType":"YulFunctionCall","src":"6572:29:50"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"6562:6:50"}]},{"nodeType":"YulVariableDeclaration","src":"6610:46:50","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6641:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"6652:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6637:3:50"},"nodeType":"YulFunctionCall","src":"6637:18:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6624:12:50"},"nodeType":"YulFunctionCall","src":"6624:32:50"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"6614:6:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"6665:28:50","value":{"kind":"number","nodeType":"YulLiteral","src":"6675:18:50","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"6669:2:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"6720:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6729:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6732:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6722:6:50"},"nodeType":"YulFunctionCall","src":"6722:12:50"},"nodeType":"YulExpressionStatement","src":"6722:12:50"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"6708:6:50"},{"name":"_1","nodeType":"YulIdentifier","src":"6716:2:50"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6705:2:50"},"nodeType":"YulFunctionCall","src":"6705:14:50"},"nodeType":"YulIf","src":"6702:34:50"},{"nodeType":"YulVariableDeclaration","src":"6745:32:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6759:9:50"},{"name":"offset","nodeType":"YulIdentifier","src":"6770:6:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6755:3:50"},"nodeType":"YulFunctionCall","src":"6755:22:50"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"6749:2:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"6825:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6834:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6837:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6827:6:50"},"nodeType":"YulFunctionCall","src":"6827:12:50"},"nodeType":"YulExpressionStatement","src":"6827:12:50"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"6804:2:50"},{"kind":"number","nodeType":"YulLiteral","src":"6808:4:50","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6800:3:50"},"nodeType":"YulFunctionCall","src":"6800:13:50"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"6815:7:50"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6796:3:50"},"nodeType":"YulFunctionCall","src":"6796:27:50"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"6789:6:50"},"nodeType":"YulFunctionCall","src":"6789:35:50"},"nodeType":"YulIf","src":"6786:55:50"},{"nodeType":"YulVariableDeclaration","src":"6850:26:50","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"6873:2:50"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6860:12:50"},"nodeType":"YulFunctionCall","src":"6860:16:50"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"6854:2:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"6899:22:50","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"6901:16:50"},"nodeType":"YulFunctionCall","src":"6901:18:50"},"nodeType":"YulExpressionStatement","src":"6901:18:50"}]},"condition":{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"6891:2:50"},{"name":"_1","nodeType":"YulIdentifier","src":"6895:2:50"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6888:2:50"},"nodeType":"YulFunctionCall","src":"6888:10:50"},"nodeType":"YulIf","src":"6885:36:50"},{"nodeType":"YulVariableDeclaration","src":"6930:17:50","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6944:2:50","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"6940:3:50"},"nodeType":"YulFunctionCall","src":"6940:7:50"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"6934:2:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"6956:23:50","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6976:2:50","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6970:5:50"},"nodeType":"YulFunctionCall","src":"6970:9:50"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"6960:6:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"6988:71:50","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7010:6:50"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"7034:2:50"},{"kind":"number","nodeType":"YulLiteral","src":"7038:4:50","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7030:3:50"},"nodeType":"YulFunctionCall","src":"7030:13:50"},{"name":"_4","nodeType":"YulIdentifier","src":"7045:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7026:3:50"},"nodeType":"YulFunctionCall","src":"7026:22:50"},{"kind":"number","nodeType":"YulLiteral","src":"7050:2:50","type":"","value":"63"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7022:3:50"},"nodeType":"YulFunctionCall","src":"7022:31:50"},{"name":"_4","nodeType":"YulIdentifier","src":"7055:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7018:3:50"},"nodeType":"YulFunctionCall","src":"7018:40:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7006:3:50"},"nodeType":"YulFunctionCall","src":"7006:53:50"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"6992:10:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"7118:22:50","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"7120:16:50"},"nodeType":"YulFunctionCall","src":"7120:18:50"},"nodeType":"YulExpressionStatement","src":"7120:18:50"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"7077:10:50"},{"name":"_1","nodeType":"YulIdentifier","src":"7089:2:50"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"7074:2:50"},"nodeType":"YulFunctionCall","src":"7074:18:50"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"7097:10:50"},{"name":"memPtr","nodeType":"YulIdentifier","src":"7109:6:50"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"7094:2:50"},"nodeType":"YulFunctionCall","src":"7094:22:50"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"7071:2:50"},"nodeType":"YulFunctionCall","src":"7071:46:50"},"nodeType":"YulIf","src":"7068:72:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7156:2:50","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"7160:10:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7149:6:50"},"nodeType":"YulFunctionCall","src":"7149:22:50"},"nodeType":"YulExpressionStatement","src":"7149:22:50"},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7187:6:50"},{"name":"_3","nodeType":"YulIdentifier","src":"7195:2:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7180:6:50"},"nodeType":"YulFunctionCall","src":"7180:18:50"},"nodeType":"YulExpressionStatement","src":"7180:18:50"},{"body":{"nodeType":"YulBlock","src":"7244:16:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7253:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7256:1:50","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7246:6:50"},"nodeType":"YulFunctionCall","src":"7246:12:50"},"nodeType":"YulExpressionStatement","src":"7246:12:50"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"7221:2:50"},{"name":"_3","nodeType":"YulIdentifier","src":"7225:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7217:3:50"},"nodeType":"YulFunctionCall","src":"7217:11:50"},{"kind":"number","nodeType":"YulLiteral","src":"7230:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7213:3:50"},"nodeType":"YulFunctionCall","src":"7213:20:50"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"7235:7:50"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"7210:2:50"},"nodeType":"YulFunctionCall","src":"7210:33:50"},"nodeType":"YulIf","src":"7207:53:50"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7286:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"7294:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7282:3:50"},"nodeType":"YulFunctionCall","src":"7282:15:50"},{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"7303:2:50"},{"kind":"number","nodeType":"YulLiteral","src":"7307:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7299:3:50"},"nodeType":"YulFunctionCall","src":"7299:11:50"},{"name":"_3","nodeType":"YulIdentifier","src":"7312:2:50"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"7269:12:50"},"nodeType":"YulFunctionCall","src":"7269:46:50"},"nodeType":"YulExpressionStatement","src":"7269:46:50"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7339:6:50"},{"name":"_3","nodeType":"YulIdentifier","src":"7347:2:50"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7335:3:50"},"nodeType":"YulFunctionCall","src":"7335:15:50"},{"kind":"number","nodeType":"YulLiteral","src":"7352:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7331:3:50"},"nodeType":"YulFunctionCall","src":"7331:24:50"},{"kind":"number","nodeType":"YulLiteral","src":"7357:1:50","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7324:6:50"},"nodeType":"YulFunctionCall","src":"7324:35:50"},"nodeType":"YulExpressionStatement","src":"7324:35:50"},{"nodeType":"YulAssignment","src":"7368:16:50","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"7378:6:50"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"7368:6:50"}]}]},"name":"abi_decode_tuple_t_addresst_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6449:9:50","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"6460:7:50","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"6472:6:50","type":""},{"name":"value1","nodeType":"YulTypedName","src":"6480:6:50","type":""}],"src":"6395:995:50"},{"body":{"nodeType":"YulBlock","src":"7594:209:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7611:9:50"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7626:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"7634:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7622:3:50"},"nodeType":"YulFunctionCall","src":"7622:55:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7604:6:50"},"nodeType":"YulFunctionCall","src":"7604:74:50"},"nodeType":"YulExpressionStatement","src":"7604:74:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7698:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"7709:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7694:3:50"},"nodeType":"YulFunctionCall","src":"7694:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"7714:2:50","type":"","value":"64"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7687:6:50"},"nodeType":"YulFunctionCall","src":"7687:30:50"},"nodeType":"YulExpressionStatement","src":"7687:30:50"},{"nodeType":"YulAssignment","src":"7726:71:50","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"7770:6:50"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7782:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"7793:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7778:3:50"},"nodeType":"YulFunctionCall","src":"7778:18:50"}],"functionName":{"name":"abi_encode_struct_PreparedSetupData","nodeType":"YulIdentifier","src":"7734:35:50"},"nodeType":"YulFunctionCall","src":"7734:63:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7726:4:50"}]}]},"name":"abi_encode_tuple_t_address_t_struct$_PreparedSetupData_$4802_memory_ptr__to_t_address_t_struct$_PreparedSetupData_$4802_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7555:9:50","type":""},{"name":"value1","nodeType":"YulTypedName","src":"7566:6:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"7574:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7585:4:50","type":""}],"src":"7395:408:50"},{"body":{"nodeType":"YulBlock","src":"7907:89:50","statements":[{"nodeType":"YulAssignment","src":"7917:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7929:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"7940:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7925:3:50"},"nodeType":"YulFunctionCall","src":"7925:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7917:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7959:9:50"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7974:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"7982:6:50","type":"","value":"0xffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7970:3:50"},"nodeType":"YulFunctionCall","src":"7970:19:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7952:6:50"},"nodeType":"YulFunctionCall","src":"7952:38:50"},"nodeType":"YulExpressionStatement","src":"7952:38:50"}]},"name":"abi_encode_tuple_t_uint16__to_t_uint16__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7876:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"7887:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7898:4:50","type":""}],"src":"7808:188:50"},{"body":{"nodeType":"YulBlock","src":"8115:125:50","statements":[{"nodeType":"YulAssignment","src":"8125:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8137:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"8148:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8133:3:50"},"nodeType":"YulFunctionCall","src":"8133:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"8125:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8167:9:50"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"8182:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"8190:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8178:3:50"},"nodeType":"YulFunctionCall","src":"8178:55:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8160:6:50"},"nodeType":"YulFunctionCall","src":"8160:74:50"},"nodeType":"YulExpressionStatement","src":"8160:74:50"}]},"name":"abi_encode_tuple_t_contract$_IDAO_$2538__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8084:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"8095:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"8106:4:50","type":""}],"src":"8001:239:50"},{"body":{"nodeType":"YulBlock","src":"8277:95:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8294:1:50","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8301:3:50","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"8306:10:50","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"8297:3:50"},"nodeType":"YulFunctionCall","src":"8297:20:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8287:6:50"},"nodeType":"YulFunctionCall","src":"8287:31:50"},"nodeType":"YulExpressionStatement","src":"8287:31:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8334:1:50","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"8337:4:50","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8327:6:50"},"nodeType":"YulFunctionCall","src":"8327:15:50"},"nodeType":"YulExpressionStatement","src":"8327:15:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8358:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8361:4:50","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8351:6:50"},"nodeType":"YulFunctionCall","src":"8351:15:50"},"nodeType":"YulExpressionStatement","src":"8351:15:50"}]},"name":"panic_error_0x11","nodeType":"YulFunctionDefinition","src":"8245:127:50"},{"body":{"nodeType":"YulBlock","src":"8426:159:50","statements":[{"nodeType":"YulVariableDeclaration","src":"8436:52:50","value":{"kind":"number","nodeType":"YulLiteral","src":"8446:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"8440:2:50","type":""}]},{"nodeType":"YulAssignment","src":"8497:35:50","value":{"arguments":[{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"8513:1:50"},{"name":"_1","nodeType":"YulIdentifier","src":"8516:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8509:3:50"},"nodeType":"YulFunctionCall","src":"8509:10:50"},{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"8525:1:50"},{"name":"_1","nodeType":"YulIdentifier","src":"8528:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8521:3:50"},"nodeType":"YulFunctionCall","src":"8521:10:50"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"8505:3:50"},"nodeType":"YulFunctionCall","src":"8505:27:50"},"variableNames":[{"name":"diff","nodeType":"YulIdentifier","src":"8497:4:50"}]},{"body":{"nodeType":"YulBlock","src":"8557:22:50","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"8559:16:50"},"nodeType":"YulFunctionCall","src":"8559:18:50"},"nodeType":"YulExpressionStatement","src":"8559:18:50"}]},"condition":{"arguments":[{"name":"diff","nodeType":"YulIdentifier","src":"8547:4:50"},{"name":"_1","nodeType":"YulIdentifier","src":"8553:2:50"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"8544:2:50"},"nodeType":"YulFunctionCall","src":"8544:12:50"},"nodeType":"YulIf","src":"8541:38:50"}]},"name":"checked_sub_t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"8408:1:50","type":""},{"name":"y","nodeType":"YulTypedName","src":"8411:1:50","type":""}],"returnVariables":[{"name":"diff","nodeType":"YulTypedName","src":"8417:4:50","type":""}],"src":"8377:208:50"},{"body":{"nodeType":"YulBlock","src":"8622:95:50","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8639:1:50","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8646:3:50","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"8651:10:50","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"8642:3:50"},"nodeType":"YulFunctionCall","src":"8642:20:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8632:6:50"},"nodeType":"YulFunctionCall","src":"8632:31:50"},"nodeType":"YulExpressionStatement","src":"8632:31:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8679:1:50","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"8682:4:50","type":"","value":"0x32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8672:6:50"},"nodeType":"YulFunctionCall","src":"8672:15:50"},"nodeType":"YulExpressionStatement","src":"8672:15:50"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8703:1:50","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8706:4:50","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8696:6:50"},"nodeType":"YulFunctionCall","src":"8696:15:50"},"nodeType":"YulExpressionStatement","src":"8696:15:50"}]},"name":"panic_error_0x32","nodeType":"YulFunctionDefinition","src":"8590:127:50"},{"body":{"nodeType":"YulBlock","src":"8769:187:50","statements":[{"nodeType":"YulVariableDeclaration","src":"8779:52:50","value":{"kind":"number","nodeType":"YulLiteral","src":"8789:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"8783:2:50","type":""}]},{"nodeType":"YulVariableDeclaration","src":"8840:29:50","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8859:5:50"},{"name":"_1","nodeType":"YulIdentifier","src":"8866:2:50"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8855:3:50"},"nodeType":"YulFunctionCall","src":"8855:14:50"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"8844:7:50","type":""}]},{"body":{"nodeType":"YulBlock","src":"8897:22:50","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"8899:16:50"},"nodeType":"YulFunctionCall","src":"8899:18:50"},"nodeType":"YulExpressionStatement","src":"8899:18:50"}]},"condition":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"8884:7:50"},{"name":"_1","nodeType":"YulIdentifier","src":"8893:2:50"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"8881:2:50"},"nodeType":"YulFunctionCall","src":"8881:15:50"},"nodeType":"YulIf","src":"8878:41:50"},{"nodeType":"YulAssignment","src":"8928:22:50","value":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"8939:7:50"},{"kind":"number","nodeType":"YulLiteral","src":"8948:1:50","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8935:3:50"},"nodeType":"YulFunctionCall","src":"8935:15:50"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"8928:3:50"}]}]},"name":"increment_t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"8751:5:50","type":""}],"returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"8761:3:50","type":""}],"src":"8722:234:50"},{"body":{"nodeType":"YulBlock","src":"9108:190:50","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9125:9:50"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"9140:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"9148:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"9136:3:50"},"nodeType":"YulFunctionCall","src":"9136:55:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9118:6:50"},"nodeType":"YulFunctionCall","src":"9118:74:50"},"nodeType":"YulExpressionStatement","src":"9118:74:50"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9212:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"9223:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9208:3:50"},"nodeType":"YulFunctionCall","src":"9208:18:50"},{"kind":"number","nodeType":"YulLiteral","src":"9228:2:50","type":"","value":"64"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9201:6:50"},"nodeType":"YulFunctionCall","src":"9201:30:50"},"nodeType":"YulExpressionStatement","src":"9201:30:50"},{"nodeType":"YulAssignment","src":"9240:52:50","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"9265:6:50"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9277:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"9288:2:50","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9273:3:50"},"nodeType":"YulFunctionCall","src":"9273:18:50"}],"functionName":{"name":"abi_encode_bytes","nodeType":"YulIdentifier","src":"9248:16:50"},"nodeType":"YulFunctionCall","src":"9248:44:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"9240:4:50"}]}]},"name":"abi_encode_tuple_t_address_t_bytes_memory_ptr__to_t_address_t_bytes_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9069:9:50","type":""},{"name":"value1","nodeType":"YulTypedName","src":"9080:6:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"9088:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"9099:4:50","type":""}],"src":"8961:337:50"}]},"contents":"{\n { }\n function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n if iszero(eq(value, and(value, shl(224, 0xffffffff)))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function abi_encode_tuple_t_array$_t_uint8_$3_memory_ptr__to_t_array$_t_uint8_$3_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 96)\n let pos := headStart\n pos := headStart\n let srcPtr := value0\n let i := 0\n for { } lt(i, 0x03) { i := add(i, 1) }\n {\n mstore(pos, and(mload(srcPtr), 0xff))\n let _1 := 0x20\n pos := add(pos, _1)\n srcPtr := add(srcPtr, _1)\n }\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_decode_address(offset) -> value\n {\n value := calldataload(offset)\n if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n }\n function abi_decode_struct_SetupPayload_calldata(offset, end) -> value\n {\n if slt(sub(end, offset), 96) { revert(0, 0) }\n value := offset\n }\n function abi_decode_tuple_t_addresst_struct$_SetupPayload_$4810_calldata_ptr(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n let offset := calldataload(add(headStart, 32))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n value1 := abi_decode_struct_SetupPayload_calldata(add(headStart, offset), dataEnd)\n }\n function panic_error_0x21()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x21)\n revert(0, 0x24)\n }\n function abi_encodeUpdatedPos_struct_MultiTargetPermission(value0, pos) -> updatedPos\n {\n let _1 := mload(value0)\n if iszero(lt(_1, 3))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x21)\n revert(0, 0x24)\n }\n mstore(pos, _1)\n let memberValue0 := mload(add(value0, 0x20))\n let _2 := 0xffffffffffffffffffffffffffffffffffffffff\n mstore(add(pos, 0x20), and(memberValue0, _2))\n mstore(add(pos, 0x40), and(mload(add(value0, 0x40)), _2))\n mstore(add(pos, 0x60), and(mload(add(value0, 0x60)), _2))\n mstore(add(pos, 0x80), mload(add(value0, 0x80)))\n updatedPos := add(pos, 0xa0)\n }\n function abi_encode_tuple_t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_MultiTargetPermission_$3813_memory_ptr_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n let _1 := 32\n let tail_1 := add(headStart, _1)\n mstore(headStart, _1)\n let pos := tail_1\n let length := mload(value0)\n mstore(tail_1, length)\n pos := add(headStart, 64)\n let srcPtr := add(value0, _1)\n let i := 0\n for { } lt(i, length) { i := add(i, 1) }\n {\n pos := abi_encodeUpdatedPos_struct_MultiTargetPermission(mload(srcPtr), pos)\n srcPtr := add(srcPtr, _1)\n }\n tail := pos\n }\n function abi_decode_tuple_t_addresst_uint16t_struct$_SetupPayload_$4810_calldata_ptr(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n let value := calldataload(add(headStart, 32))\n if iszero(eq(value, and(value, 0xffff))) { revert(0, 0) }\n value1 := value\n let offset := calldataload(add(headStart, 64))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n value2 := abi_decode_struct_SetupPayload_calldata(add(headStart, offset), dataEnd)\n }\n function abi_encode_bytes(value, pos) -> end\n {\n let length := mload(value)\n mstore(pos, length)\n let i := 0\n for { } lt(i, length) { i := add(i, 0x20) }\n {\n let _1 := 0x20\n mstore(add(add(pos, i), _1), mload(add(add(value, i), _1)))\n }\n mstore(add(add(pos, length), 0x20), 0)\n end := add(add(pos, and(add(length, 31), not(31))), 0x20)\n }\n function abi_encode_struct_PreparedSetupData(value, pos) -> end\n {\n let tail := add(pos, 0x40)\n let memberValue0 := mload(value)\n mstore(pos, 0x40)\n let pos_1 := tail\n let length := mload(memberValue0)\n mstore(tail, length)\n pos_1 := add(pos, 96)\n let _1 := 0x20\n let srcPtr := add(memberValue0, _1)\n let i := 0\n for { } lt(i, length) { i := add(i, 1) }\n {\n mstore(pos_1, and(mload(srcPtr), 0xffffffffffffffffffffffffffffffffffffffff))\n pos_1 := add(pos_1, _1)\n srcPtr := add(srcPtr, _1)\n }\n let memberValue0_1 := mload(add(value, _1))\n mstore(add(pos, _1), sub(pos_1, pos))\n let pos_2 := pos_1\n let length_1 := mload(memberValue0_1)\n mstore(pos_1, length_1)\n pos_2 := add(pos_1, _1)\n let srcPtr_1 := add(memberValue0_1, _1)\n let i_1 := 0\n for { } lt(i_1, length_1) { i_1 := add(i_1, 1) }\n {\n pos_2 := abi_encodeUpdatedPos_struct_MultiTargetPermission(mload(srcPtr_1), pos_2)\n srcPtr_1 := add(srcPtr_1, _1)\n }\n end := pos_2\n }\n function abi_encode_tuple_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$4802_memory_ptr__to_t_bytes_memory_ptr_t_struct$_PreparedSetupData_$4802_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n {\n mstore(headStart, 64)\n let tail_1 := abi_encode_bytes(value0, add(headStart, 64))\n mstore(add(headStart, 32), sub(tail_1, headStart))\n tail := abi_encode_struct_PreparedSetupData(value1, tail_1)\n }\n function panic_error_0x41()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function abi_decode_tuple_t_addresst_bytes_memory_ptr(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n let offset := calldataload(add(headStart, 32))\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n let _2 := add(headStart, offset)\n if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n let _3 := calldataload(_2)\n if gt(_3, _1) { panic_error_0x41() }\n let _4 := not(31)\n let memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n mstore(memPtr, _3)\n if gt(add(add(_2, _3), 32), dataEnd) { revert(0, 0) }\n calldatacopy(add(memPtr, 32), add(_2, 32), _3)\n mstore(add(add(memPtr, _3), 32), 0)\n value1 := memPtr\n }\n function abi_encode_tuple_t_address_t_struct$_PreparedSetupData_$4802_memory_ptr__to_t_address_t_struct$_PreparedSetupData_$4802_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n {\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n mstore(add(headStart, 32), 64)\n tail := abi_encode_struct_PreparedSetupData(value1, add(headStart, 64))\n }\n function abi_encode_tuple_t_uint16__to_t_uint16__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffff))\n }\n function abi_encode_tuple_t_contract$_IDAO_$2538__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function panic_error_0x11()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n function checked_sub_t_uint160(x, y) -> diff\n {\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n diff := sub(and(x, _1), and(y, _1))\n if gt(diff, _1) { panic_error_0x11() }\n }\n function panic_error_0x32()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n function increment_t_uint160(value) -> ret\n {\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n let value_1 := and(value, _1)\n if eq(value_1, _1) { panic_error_0x11() }\n ret := add(value_1, 1)\n }\n function abi_encode_tuple_t_address_t_bytes_memory_ptr__to_t_address_t_bytes_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n {\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n mstore(add(headStart, 32), 64)\n tail := abi_encode_bytes(value1, add(headStart, 64))\n }\n}","id":50,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{"4977":[{"length":32,"start":210},{"length":32,"start":894}]},"linkReferences":{},"object":"60806040523480156200001157600080fd5b50600436106200007b5760003560e01c80639cb0a12411620000565780639cb0a12414620000fd578063a8a9c29e1462000123578063f10832f1146200014a57600080fd5b806301ffc9a714620000805780632ae9c60014620000ac5780635c60da1b14620000c5575b600080fd5b6200009762000091366004620006a3565b62000171565b60405190151581526020015b60405180910390f35b620000b6620001c4565b604051620000a39190620006cf565b6040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152602001620000a3565b620001146200010e36600462000735565b620001f0565b604051620000a3919062000806565b6200013a6200013436600462000853565b62000209565b604051620000a3929190620009a2565b620001616200015b366004620009ea565b6200030f565b604051620000a392919062000ab8565b60006001600160e01b0319821663099718b560e41b1480620001a257506001600160e01b03198216621574e360e91b145b80620001be57506301ffc9a760e01b6001600160e01b03198316145b92915050565b620001ce62000677565b5060408051606081018252600181526004602082015260009181019190915290565b606062000202600060036001620003de565b9392505050565b606062000229604051806040016040528060608152602001606081525090565b8361ffff16600103620002985762000242600362000577565b815260405161ffff8516602482015260440160408051601f198184030181529190526020810180516001600160e01b03166239a8c560e41b17905291506200029261ffff851660036000620003de565b60208201525b8361ffff166002036200030757620002b1600362000577565b815260405161ffff8516602482015260440160408051601f198184030181529190526020810180516001600160e01b03166239a8c560e41b17905291506200030161ffff851660036000620003de565b60208201525b935093915050565b60006200032f604051806040016040528060608152602001606081525090565b6040516001600160a01b038516602482015260009060440160408051601f198184030181529190526020810180516001600160e01b031663189acdbd60e31b1790529050620003b081620003a07f000000000000000000000000000000000000000000000000000000000000000090565b6001600160a01b0316906200063b565b9250620003be600362000577565b8252620003cf6000600381620003de565b60208301525090939092509050565b6060826001600160a01b0316846001600160a01b031611156200041457604051633a4013cd60e21b815260040160405180910390fd5b62000420848462000afa565b6001600160a01b031667ffffffffffffffff811115620004445762000444620009d4565b6040519080825280602002602001820160405280156200049f57816020015b6040805160a081018252600080825260208083018290529282018190526060820181905260808201528252600019909201910181620004635790505b509050835b836001600160a01b0316816001600160a01b031610156200056f576040518060a00160405280846002811115620004df57620004df62000789565b81526001600160a01b038316602082018190526040820152600060608201527fa280eec51ab8e1bc4b6b0c1b7f1bde785761b787a49db404e3e9338ed9b016ef6080909101528262000532878462000afa565b6001600160a01b0316815181106200054e576200054e62000b24565b60200260200101819052508080620005669062000b3a565b915050620004a4565b509392505050565b6060816001600160a01b031667ffffffffffffffff8111156200059e576200059e620009d4565b604051908082528060200260200182016040528015620005c8578160200160208202803683370190505b50905060005b826001600160a01b0316816001600160a01b0316101562000635578082826001600160a01b03168151811062000608576200060862000b24565b6001600160a01b0390921660209283029190910190910152806200062c8162000b3a565b915050620005ce565b50919050565b600082826040516200064d9062000695565b6200065a92919062000b63565b604051809103906000f0801580156200056f573d6000803e3d6000fd5b60405180606001604052806003906020820280368337509192915050565b6106fe8062000b8883390190565b600060208284031215620006b657600080fd5b81356001600160e01b0319811681146200020257600080fd5b60608101818360005b6003811015620006fc57815160ff16835260209283019290910190600101620006d8565b50505092915050565b80356001600160a01b03811681146200071d57600080fd5b919050565b6000606082840312156200063557600080fd5b600080604083850312156200074957600080fd5b620007548362000705565b9150602083013567ffffffffffffffff8111156200077157600080fd5b6200077f8582860162000722565b9150509250929050565b634e487b7160e01b600052602160045260246000fd5b6000815160038110620007c257634e487b7160e01b600052602160045260246000fd5b8352506020818101516001600160a01b0390811691840191909152604080830151821690840152606080830151909116908301526080908101519082015260a00190565b6020808252825182820181905260009190848201906040850190845b818110156200084757620008388385516200079f565b93850193925060010162000822565b50909695505050505050565b6000806000606084860312156200086957600080fd5b620008748462000705565b9250602084013561ffff811681146200088c57600080fd5b9150604084013567ffffffffffffffff811115620008a957600080fd5b620008b78682870162000722565b9150509250925092565b6000815180845260005b81811015620008e957602081850181015186830182015201620008cb565b506000602082860101526020601f19601f83011685010191505092915050565b805160408084528151908401819052600091602091908201906060860190845b81811015620009505783516001600160a01b03168352928401929184019160010162000929565b50508483015186820387850152805180835290840192506000918401905b808310156200099757620009848285516200079f565b915084840193506001830192506200096e565b509695505050505050565b604081526000620009b76040830185620008c1565b8281036020840152620009cb818562000909565b95945050505050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215620009fe57600080fd5b62000a098362000705565b9150602083013567ffffffffffffffff8082111562000a2757600080fd5b818501915085601f83011262000a3c57600080fd5b81358181111562000a515762000a51620009d4565b604051601f8201601f19908116603f0116810190838211818310171562000a7c5762000a7c620009d4565b8160405282815288602084870101111562000a9657600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6001600160a01b038316815260406020820152600062000adc604083018462000909565b949350505050565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0382811682821603908082111562000b1d5762000b1d62000ae4565b5092915050565b634e487b7160e01b600052603260045260246000fd5b60006001600160a01b0380831681810362000b595762000b5962000ae4565b6001019392505050565b6001600160a01b038316815260406020820152600062000adc6040830184620008c156fe60806040526040516106fe3803806106fe83398101604081905261002291610319565b61002e82826000610035565b5050610436565b61003e8361006b565b60008251118061004b5750805b156100665761006483836100ab60201b6100291760201c565b505b505050565b610074816100d7565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606100d083836040518060600160405280602781526020016106d7602791396101a9565b9392505050565b6100ea8161022260201b6100551760201c565b6101515760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b806101887f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61023160201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6060600080856001600160a01b0316856040516101c691906103e7565b600060405180830381855af49150503d8060008114610201576040519150601f19603f3d011682016040523d82523d6000602084013e610206565b606091505b50909250905061021886838387610234565b9695505050505050565b6001600160a01b03163b151590565b90565b606083156102a357825160000361029c576001600160a01b0385163b61029c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610148565b50816102ad565b6102ad83836102b5565b949350505050565b8151156102c55781518083602001fd5b8060405162461bcd60e51b81526004016101489190610403565b634e487b7160e01b600052604160045260246000fd5b60005b838110156103105781810151838201526020016102f8565b50506000910152565b6000806040838503121561032c57600080fd5b82516001600160a01b038116811461034357600080fd5b60208401519092506001600160401b038082111561036057600080fd5b818501915085601f83011261037457600080fd5b815181811115610386576103866102df565b604051601f8201601f19908116603f011681019083821181831017156103ae576103ae6102df565b816040528281528860208487010111156103c757600080fd5b6103d88360208301602088016102f5565b80955050505050509250929050565b600082516103f98184602087016102f5565b9190910192915050565b60208152600082518060208401526104228160408501602087016102f5565b601f01601f19169190910160400192915050565b610292806104456000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b61009f565b565b606061004e838360405180606001604052806027815260200161025f602791396100c3565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e8080156100be573d6000f35b3d6000fd5b6060600080856001600160a01b0316856040516100e0919061020f565b600060405180830381855af49150503d806000811461011b576040519150601f19603f3d011682016040523d82523d6000602084013e610120565b606091505b50915091506101318683838761013b565b9695505050505050565b606083156101af5782516000036101a8576001600160a01b0385163b6101a85760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b50816101b9565b6101b983836101c1565b949350505050565b8151156101d15781518083602001fd5b8060405162461bcd60e51b815260040161019f919061022b565b60005b838110156102065781810151838201526020016101ee565b50506000910152565b600082516102218184602087016101eb565b9190910192915050565b602081526000825180602084015261024a8160408501602087016101eb565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH3 0x7B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9CB0A124 GT PUSH3 0x56 JUMPI DUP1 PUSH4 0x9CB0A124 EQ PUSH3 0xFD JUMPI DUP1 PUSH4 0xA8A9C29E EQ PUSH3 0x123 JUMPI DUP1 PUSH4 0xF10832F1 EQ PUSH3 0x14A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH3 0x80 JUMPI DUP1 PUSH4 0x2AE9C600 EQ PUSH3 0xAC JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH3 0xC5 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x97 PUSH3 0x91 CALLDATASIZE PUSH1 0x4 PUSH3 0x6A3 JUMP JUMPDEST PUSH3 0x171 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0xB6 PUSH3 0x1C4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0xA3 SWAP2 SWAP1 PUSH3 0x6CF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH3 0xA3 JUMP JUMPDEST PUSH3 0x114 PUSH3 0x10E CALLDATASIZE PUSH1 0x4 PUSH3 0x735 JUMP JUMPDEST PUSH3 0x1F0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0xA3 SWAP2 SWAP1 PUSH3 0x806 JUMP JUMPDEST PUSH3 0x13A PUSH3 0x134 CALLDATASIZE PUSH1 0x4 PUSH3 0x853 JUMP JUMPDEST PUSH3 0x209 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0xA3 SWAP3 SWAP2 SWAP1 PUSH3 0x9A2 JUMP JUMPDEST PUSH3 0x161 PUSH3 0x15B CALLDATASIZE PUSH1 0x4 PUSH3 0x9EA JUMP JUMPDEST PUSH3 0x30F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0xA3 SWAP3 SWAP2 SWAP1 PUSH3 0xAB8 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x99718B5 PUSH1 0xE4 SHL EQ DUP1 PUSH3 0x1A2 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH3 0x1574E3 PUSH1 0xE9 SHL EQ JUMPDEST DUP1 PUSH3 0x1BE JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH3 0x1CE PUSH3 0x677 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH3 0x202 PUSH1 0x0 PUSH1 0x3 PUSH1 0x1 PUSH3 0x3DE JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH3 0x229 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST DUP4 PUSH2 0xFFFF AND PUSH1 0x1 SUB PUSH3 0x298 JUMPI PUSH3 0x242 PUSH1 0x3 PUSH3 0x577 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x40 MLOAD PUSH2 0xFFFF DUP6 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH3 0x39A8C5 PUSH1 0xE4 SHL OR SWAP1 MSTORE SWAP2 POP PUSH3 0x292 PUSH2 0xFFFF DUP6 AND PUSH1 0x3 PUSH1 0x0 PUSH3 0x3DE JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE JUMPDEST DUP4 PUSH2 0xFFFF AND PUSH1 0x2 SUB PUSH3 0x307 JUMPI PUSH3 0x2B1 PUSH1 0x3 PUSH3 0x577 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x40 MLOAD PUSH2 0xFFFF DUP6 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH3 0x39A8C5 PUSH1 0xE4 SHL OR SWAP1 MSTORE SWAP2 POP PUSH3 0x301 PUSH2 0xFFFF DUP6 AND PUSH1 0x3 PUSH1 0x0 PUSH3 0x3DE JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE JUMPDEST SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x32F PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 PUSH1 0x44 ADD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x189ACDBD PUSH1 0xE3 SHL OR SWAP1 MSTORE SWAP1 POP PUSH3 0x3B0 DUP2 PUSH3 0x3A0 PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH3 0x63B JUMP JUMPDEST SWAP3 POP PUSH3 0x3BE PUSH1 0x3 PUSH3 0x577 JUMP JUMPDEST DUP3 MSTORE PUSH3 0x3CF PUSH1 0x0 PUSH1 0x3 DUP2 PUSH3 0x3DE JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP SWAP1 SWAP4 SWAP1 SWAP3 POP SWAP1 POP JUMP JUMPDEST PUSH1 0x60 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH3 0x414 JUMPI PUSH1 0x40 MLOAD PUSH4 0x3A4013CD PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0x420 DUP5 DUP5 PUSH3 0xAFA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x444 JUMPI PUSH3 0x444 PUSH3 0x9D4 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH3 0x49F JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD DUP3 SWAP1 MSTORE SWAP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 DUP3 ADD MSTORE DUP3 MSTORE PUSH1 0x0 NOT SWAP1 SWAP3 ADD SWAP2 ADD DUP2 PUSH3 0x463 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP DUP4 JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT ISZERO PUSH3 0x56F JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 DUP5 PUSH1 0x2 DUP2 GT ISZERO PUSH3 0x4DF JUMPI PUSH3 0x4DF PUSH3 0x789 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x60 DUP3 ADD MSTORE PUSH32 0xA280EEC51AB8E1BC4B6B0C1B7F1BDE785761B787A49DB404E3E9338ED9B016EF PUSH1 0x80 SWAP1 SWAP2 ADD MSTORE DUP3 PUSH3 0x532 DUP8 DUP5 PUSH3 0xAFA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MLOAD DUP2 LT PUSH3 0x54E JUMPI PUSH3 0x54E PUSH3 0xB24 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP DUP1 DUP1 PUSH3 0x566 SWAP1 PUSH3 0xB3A JUMP JUMPDEST SWAP2 POP POP PUSH3 0x4A4 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x59E JUMPI PUSH3 0x59E PUSH3 0x9D4 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH3 0x5C8 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT ISZERO PUSH3 0x635 JUMPI DUP1 DUP3 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MLOAD DUP2 LT PUSH3 0x608 JUMPI PUSH3 0x608 PUSH3 0xB24 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE DUP1 PUSH3 0x62C DUP2 PUSH3 0xB3A JUMP JUMPDEST SWAP2 POP POP PUSH3 0x5CE JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH3 0x64D SWAP1 PUSH3 0x695 JUMP JUMPDEST PUSH3 0x65A SWAP3 SWAP2 SWAP1 PUSH3 0xB63 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH3 0x56F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x6FE DUP1 PUSH3 0xB88 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x6B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH3 0x202 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP2 ADD DUP2 DUP4 PUSH1 0x0 JUMPDEST PUSH1 0x3 DUP2 LT ISZERO PUSH3 0x6FC JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH3 0x6D8 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x71D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x635 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x749 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x754 DUP4 PUSH3 0x705 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x771 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x77F DUP6 DUP3 DUP7 ADD PUSH3 0x722 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP2 MLOAD PUSH1 0x3 DUP2 LT PUSH3 0x7C2 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP4 MSTORE POP PUSH1 0x20 DUP2 DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP1 DUP4 ADD MLOAD DUP3 AND SWAP1 DUP5 ADD MSTORE PUSH1 0x60 DUP1 DUP4 ADD MLOAD SWAP1 SWAP2 AND SWAP1 DUP4 ADD MSTORE PUSH1 0x80 SWAP1 DUP2 ADD MLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x847 JUMPI PUSH3 0x838 DUP4 DUP6 MLOAD PUSH3 0x79F JUMP JUMPDEST SWAP4 DUP6 ADD SWAP4 SWAP3 POP PUSH1 0x1 ADD PUSH3 0x822 JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH3 0x869 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x874 DUP5 PUSH3 0x705 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH3 0x88C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x8A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x8B7 DUP7 DUP3 DUP8 ADD PUSH3 0x722 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x8E9 JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD DUP3 ADD MSTORE ADD PUSH3 0x8CB JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x20 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x20 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x40 DUP1 DUP5 MSTORE DUP2 MLOAD SWAP1 DUP5 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x20 SWAP2 SWAP1 DUP3 ADD SWAP1 PUSH1 0x60 DUP7 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x950 JUMPI DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH3 0x929 JUMP JUMPDEST POP POP DUP5 DUP4 ADD MLOAD DUP7 DUP3 SUB DUP8 DUP6 ADD MSTORE DUP1 MLOAD DUP1 DUP4 MSTORE SWAP1 DUP5 ADD SWAP3 POP PUSH1 0x0 SWAP2 DUP5 ADD SWAP1 JUMPDEST DUP1 DUP4 LT ISZERO PUSH3 0x997 JUMPI PUSH3 0x984 DUP3 DUP6 MLOAD PUSH3 0x79F JUMP JUMPDEST SWAP2 POP DUP5 DUP5 ADD SWAP4 POP PUSH1 0x1 DUP4 ADD SWAP3 POP PUSH3 0x96E JUMP JUMPDEST POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 PUSH3 0x9B7 PUSH1 0x40 DUP4 ADD DUP6 PUSH3 0x8C1 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 ADD MSTORE PUSH3 0x9CB DUP2 DUP6 PUSH3 0x909 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x9FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0xA09 DUP4 PUSH3 0x705 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH3 0xA27 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH3 0xA3C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH3 0xA51 JUMPI PUSH3 0xA51 PUSH3 0x9D4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH3 0xA7C JUMPI PUSH3 0xA7C PUSH3 0x9D4 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH3 0xA96 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH3 0xADC PUSH1 0x40 DUP4 ADD DUP5 PUSH3 0x909 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND DUP3 DUP3 AND SUB SWAP1 DUP1 DUP3 GT ISZERO PUSH3 0xB1D JUMPI PUSH3 0xB1D PUSH3 0xAE4 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND DUP2 DUP2 SUB PUSH3 0xB59 JUMPI PUSH3 0xB59 PUSH3 0xAE4 JUMP JUMPDEST PUSH1 0x1 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH3 0xADC PUSH1 0x40 DUP4 ADD DUP5 PUSH3 0x8C1 JUMP INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH2 0x6FE CODESIZE SUB DUP1 PUSH2 0x6FE DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x22 SWAP2 PUSH2 0x319 JUMP JUMPDEST PUSH2 0x2E DUP3 DUP3 PUSH1 0x0 PUSH2 0x35 JUMP JUMPDEST POP POP PUSH2 0x436 JUMP JUMPDEST PUSH2 0x3E DUP4 PUSH2 0x6B JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD GT DUP1 PUSH2 0x4B JUMPI POP DUP1 JUMPDEST ISZERO PUSH2 0x66 JUMPI PUSH2 0x64 DUP4 DUP4 PUSH2 0xAB PUSH1 0x20 SHL PUSH2 0x29 OR PUSH1 0x20 SHR JUMP JUMPDEST POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x74 DUP2 PUSH2 0xD7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xD0 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x6D7 PUSH1 0x27 SWAP2 CODECOPY PUSH2 0x1A9 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xEA DUP2 PUSH2 0x222 PUSH1 0x20 SHL PUSH2 0x55 OR PUSH1 0x20 SHR JUMP JUMPDEST PUSH2 0x151 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313936373A206E657720696D706C656D656E746174696F6E206973206E PUSH1 0x44 DUP3 ADD MSTORE PUSH13 0x1BDD08184818DBDB9D1C9858DD PUSH1 0x9A SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH2 0x188 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC PUSH1 0x0 SHL PUSH2 0x231 PUSH1 0x20 SHL PUSH2 0x64 OR PUSH1 0x20 SHR JUMP JUMPDEST DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0x1C6 SWAP2 SWAP1 PUSH2 0x3E7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x201 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x206 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x218 DUP7 DUP4 DUP4 DUP8 PUSH2 0x234 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x2A3 JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0x29C JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0x29C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x148 JUMP JUMPDEST POP DUP2 PUSH2 0x2AD JUMP JUMPDEST PUSH2 0x2AD DUP4 DUP4 PUSH2 0x2B5 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x2C5 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x148 SWAP2 SWAP1 PUSH2 0x403 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x310 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2F8 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x32C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x343 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x360 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x374 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x386 JUMPI PUSH2 0x386 PUSH2 0x2DF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x3AE JUMPI PUSH2 0x3AE PUSH2 0x2DF JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x3C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3D8 DUP4 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x2F5 JUMP JUMPDEST DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x3F9 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x2F5 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x422 DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x2F5 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x292 DUP1 PUSH2 0x445 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLDATASIZE PUSH2 0x13 JUMPI PUSH2 0x11 PUSH2 0x17 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x11 JUMPDEST PUSH2 0x27 PUSH2 0x22 PUSH2 0x67 JUMP JUMPDEST PUSH2 0x9F JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x60 PUSH2 0x4E DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x25F PUSH1 0x27 SWAP2 CODECOPY PUSH2 0xC3 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9A PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 DUP1 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE PUSH1 0x0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH2 0xBE JUMPI RETURNDATASIZE PUSH1 0x0 RETURN JUMPDEST RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0xE0 SWAP2 SWAP1 PUSH2 0x20F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x11B JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x120 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x131 DUP7 DUP4 DUP4 DUP8 PUSH2 0x13B JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x1AF JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0x1A8 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0x1A8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP DUP2 PUSH2 0x1B9 JUMP JUMPDEST PUSH2 0x1B9 DUP4 DUP4 PUSH2 0x1C1 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x1D1 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x19F SWAP2 SWAP1 PUSH2 0x22B JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x206 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1EE JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x221 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x1EB JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x24A DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x1EB JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A164 PUSH20 0x6F6C6343000811000A416464726573733A206C6F PUSH24 0x2D6C6576656C2064656C65676174652063616C6C20666169 PUSH13 0x6564A164736F6C634300081100 EXP ","sourceMap":"4631:2543:32:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1852:293:46;;;;;;:::i;:::-;;:::i;:::-;;;470:14:50;;463:22;445:41;;433:2;418:18;1852:293:46;;;;;;;;631:98:49;;;:::i;:::-;;;;;;;:::i;2184:94:46:-;;;-1:-1:-1;;;;;2257:14:46;1167:55:50;1149:74;;1137:2;1122:18;2184:94:46;1003:226:50;6873:299:32;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;5528:1306::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;4914:575::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;1852:293:46:-;1938:4;-1:-1:-1;;;;;;1973:46:46;;-1:-1:-1;;;1973:46:46;;:112;;-1:-1:-1;;;;;;;2035:50:46;;-1:-1:-1;;;2035:50:46;1973:112;:165;;;-1:-1:-1;;;;;;;;;;937:40:23;;;2101:37:46;1954:184;1852:293;-1:-1:-1;;1852:293:46:o;631:98:49:-;679:15;;:::i;:::-;-1:-1:-1;706:16:49;;;;;;;;714:1;706:16;;717:1;706:16;;;;-1:-1:-1;706:16:49;;;;;;;;631:98::o;6873:299:32:-;6995:56;7103:62;7119:1;4780;7134:30;7103:15;:62::i;:::-;7089:76;6873:299;-1:-1:-1;;;6873:299:32:o;5528:1306::-;5710:21;5733:42;-1:-1:-1;;;;;;;;;;;;;;;;;;;5733:42:32;5853:10;:15;;5867:1;5853:15;5849:562;;5912:23;4780:1;5912:11;:23::i;:::-;5884:51;;5960:76;;7982:6:50;7970:19;;5960:76:32;;;7952:38:50;7925:18;;5960:76:32;;;-1:-1:-1;;5960:76:32;;;;;;;;;;;;;;-1:-1:-1;;;;;5960:76:32;-1:-1:-1;;;5960:76:32;;;;-1:-1:-1;6082:132:32;;;;4780:1;-1:-1:-1;6082:15:32;:132::i;:::-;6050:29;;;:164;5849:562;6456:10;:15;;6470:1;6456:15;6452:376;;6515:23;4780:1;6515:11;:23::i;:::-;6487:51;;6563:76;;7982:6:50;7970:19;;6563:76:32;;;7952:38:50;7925:18;;6563:76:32;;;-1:-1:-1;;6563:76:32;;;;;;;;;;;;;;-1:-1:-1;;;;;6563:76:32;-1:-1:-1;;;6563:76:32;;;;-1:-1:-1;6685:132:32;;;;4780:1;-1:-1:-1;6685:15:32;:132::i;:::-;6653:29;;;:164;6452:376;5528:1306;;;;;;:::o;4914:575::-;5011:14;5027:42;-1:-1:-1;;;;;;;;;;;;;;;;;;;5027:42:32;5105:106;;-1:-1:-1;;;;;1167:55:50;;5105:106:32;;;1149:74:50;5081:21:32;;1122:18:50;;5105:106:32;;;-1:-1:-1;;5105:106:32;;;;;;;;;;;;;;-1:-1:-1;;;;;5105:106:32;-1:-1:-1;;;5105:106:32;;;;-1:-1:-1;5230:42:32;5105:106;5230:16;2257:14:46;;2184:94;5230:16:32;-1:-1:-1;;;;;5230:32:32;;;:42::i;:::-;5221:51;-1:-1:-1;5310:23:32;4780:1;5310:11;:23::i;:::-;5282:51;;5375:107;5282:25;4780:1;5282:25;5375:15;:107::i;:::-;5343:29;;;:139;-1:-1:-1;4914:575:32;;5343:17;;-1:-1:-1;4914:575:32;-1:-1:-1;4914:575:32:o;580:666:30:-;699:56;780:8;-1:-1:-1;;;;;767:21:30;:10;-1:-1:-1;;;;;767:21:30;;763:53;;;797:19;;-1:-1:-1;;;797:19:30;;;;;;;;;;;763:53;879:21;890:10;879:8;:21;:::i;:::-;-1:-1:-1;;;;;837:64:30;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;837:64:30;;-1:-1:-1;;837:64:30;;;;;;;;;;;-1:-1:-1;823:78:30;-1:-1:-1;925:10:30;908:336;941:8;-1:-1:-1;;;;;937:12:30;:1;-1:-1:-1;;;;;937:12:30;;908:336;;;996:241;;;;;;;;1057:2;996:241;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;996:241:30;;;;;;;;;;;;-1:-1:-1;996:241:30;;;;1198:28;996:241;;;;;966:11;978:14;982:10;1088:1;978:14;:::i;:::-;-1:-1:-1;;;;;966:27:30;;;;;;;;;:::i;:::-;;;;;;:271;;;;951:3;;;;;:::i;:::-;;;;908:336;;;;580:666;;;;;:::o;1529:191::-;1577:24;1633:3;-1:-1:-1;;;;;1619:18:30;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1619:18:30;;1609:28;;1649:9;1644:74;1668:3;-1:-1:-1;;;;;1664:7:30;:1;-1:-1:-1;;;;;1664:7:30;;1644:74;;;1709:1;1688:7;1696:1;-1:-1:-1;;;;;1688:10:30;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1688:23:30;;;:10;;;;;;;;;;;:23;1673:3;;;;:::i;:::-;;;;1644:74;;;;1529:191;;;:::o;1415:222:47:-;1524:17;1599:6;1614:13;1573:56;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::o;14:286:50:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:50;;209:43;;199:71;;266:1;263;256:12;497:501;673:2;658:18;;662:9;753:6;631:4;787:205;801:4;798:1;795:11;787:205;;;864:13;;879:4;860:24;848:37;;908:4;932:12;;;;967:15;;;;821:1;814:9;787:205;;;791:3;;;497:501;;;;:::o;1234:196::-;1302:20;;-1:-1:-1;;;;;1351:54:50;;1341:65;;1331:93;;1420:1;1417;1410:12;1331:93;1234:196;;;:::o;1435:160::-;1500:5;1545:2;1536:6;1531:3;1527:16;1523:25;1520:45;;;1561:1;1558;1551:12;1600:440;1700:6;1708;1761:2;1749:9;1740:7;1736:23;1732:32;1729:52;;;1777:1;1774;1767:12;1729:52;1800:29;1819:9;1800:29;:::i;:::-;1790:39;;1880:2;1869:9;1865:18;1852:32;1907:18;1899:6;1896:30;1893:50;;;1939:1;1936;1929:12;1893:50;1962:72;2026:7;2017:6;2006:9;2002:22;1962:72;:::i;:::-;1952:82;;;1600:440;;;;;:::o;2045:127::-;2106:10;2101:3;2097:20;2094:1;2087:31;2137:4;2134:1;2127:15;2161:4;2158:1;2151:15;2177:696;2252:10;2293:6;2287:13;2326:1;2322:2;2319:9;2309:140;;2371:10;2366:3;2362:20;2359:1;2352:31;2406:4;2403:1;2396:15;2434:4;2431:1;2424:15;2309:140;2458:15;;-1:-1:-1;2520:4:50;2508:17;;;2502:24;-1:-1:-1;;;;;2619:21:50;;;2603:14;;;2596:45;;;;2695:4;2683:17;;;2677:24;2673:33;;2657:14;;;2650:57;2761:4;2749:17;;;2743:24;2739:33;;;2723:14;;;2716:57;2823:4;2811:17;;;2805:24;2789:14;;;2782:48;2862:4;2853:14;;2177:696::o;2878:728::-;3127:2;3179:21;;;3249:13;;3152:18;;;3271:22;;;3098:4;;3127:2;3350:15;;;;3324:2;3309:18;;;3098:4;3393:187;3407:6;3404:1;3401:13;3393:187;;;3463:69;3528:3;3519:6;3513:13;3463:69;:::i;:::-;3555:15;;;;3456:76;-1:-1:-1;3429:1:50;3422:9;3393:187;;;-1:-1:-1;3597:3:50;;2878:728;-1:-1:-1;;;;;;2878:728:50:o;3611:600::-;3719:6;3727;3735;3788:2;3776:9;3767:7;3763:23;3759:32;3756:52;;;3804:1;3801;3794:12;3756:52;3827:29;3846:9;3827:29;:::i;:::-;3817:39;;3906:2;3895:9;3891:18;3878:32;3950:6;3943:5;3939:18;3932:5;3929:29;3919:57;;3972:1;3969;3962:12;3919:57;3995:5;-1:-1:-1;4051:2:50;4036:18;;4023:32;4078:18;4067:30;;4064:50;;;4110:1;4107;4100:12;4064:50;4133:72;4197:7;4188:6;4177:9;4173:22;4133:72;:::i;:::-;4123:82;;;3611:600;;;;;:::o;4216:422::-;4257:3;4295:5;4289:12;4322:6;4317:3;4310:19;4347:1;4357:162;4371:6;4368:1;4365:13;4357:162;;;4433:4;4489:13;;;4485:22;;4479:29;4461:11;;;4457:20;;4450:59;4386:12;4357:162;;;4361:3;4564:1;4557:4;4548:6;4543:3;4539:16;4535:27;4528:38;4627:4;4620:2;4616:7;4611:2;4603:6;4599:15;4595:29;4590:3;4586:39;4582:50;4575:57;;;4216:422;;;;:::o;4643:1162::-;4776:12;;4742:4;4797:17;;;4863:19;;4733:14;;;4891:20;;;4703:3;;4960:4;;4987:21;;;;4938:2;4929:12;;;4703:3;5036:224;5050:6;5047:1;5044:13;5036:224;;;5117:13;;-1:-1:-1;;;;;5113:62:50;5099:77;;5235:15;;;;5198:14;;;;5072:1;5065:9;5036:224;;;-1:-1:-1;;5297:14:50;;;5291:21;5342:15;;;5328:12;;;5321:37;5410:21;;5440:23;;;5520;;;;-1:-1:-1;5563:1:50;;5481:14;;;5573:205;5589:8;5584:3;5581:17;5573:205;;;5653:73;5720:5;5709:8;5703:15;5653:73;:::i;:::-;5644:82;;5765:2;5755:8;5751:17;5739:29;;5617:1;5612:3;5608:11;5601:18;;5573:205;;;-1:-1:-1;5794:5:50;4643:1162;-1:-1:-1;;;;;;4643:1162:50:o;5810:448::-;6055:2;6044:9;6037:21;6018:4;6081:44;6121:2;6110:9;6106:18;6098:6;6081:44;:::i;:::-;6173:9;6165:6;6161:22;6156:2;6145:9;6141:18;6134:50;6201:51;6245:6;6237;6201:51;:::i;:::-;6193:59;5810:448;-1:-1:-1;;;;;5810:448:50:o;6263:127::-;6324:10;6319:3;6315:20;6312:1;6305:31;6355:4;6352:1;6345:15;6379:4;6376:1;6369:15;6395:995;6472:6;6480;6533:2;6521:9;6512:7;6508:23;6504:32;6501:52;;;6549:1;6546;6539:12;6501:52;6572:29;6591:9;6572:29;:::i;:::-;6562:39;;6652:2;6641:9;6637:18;6624:32;6675:18;6716:2;6708:6;6705:14;6702:34;;;6732:1;6729;6722:12;6702:34;6770:6;6759:9;6755:22;6745:32;;6815:7;6808:4;6804:2;6800:13;6796:27;6786:55;;6837:1;6834;6827:12;6786:55;6873:2;6860:16;6895:2;6891;6888:10;6885:36;;;6901:18;;:::i;:::-;6976:2;6970:9;6944:2;7030:13;;-1:-1:-1;;7026:22:50;;;7050:2;7022:31;7018:40;7006:53;;;7074:18;;;7094:22;;;7071:46;7068:72;;;7120:18;;:::i;:::-;7160:10;7156:2;7149:22;7195:2;7187:6;7180:18;7235:7;7230:2;7225;7221;7217:11;7213:20;7210:33;7207:53;;;7256:1;7253;7246:12;7207:53;7312:2;7307;7303;7299:11;7294:2;7286:6;7282:15;7269:46;7357:1;7352:2;7347;7339:6;7335:15;7331:24;7324:35;7378:6;7368:16;;;;;;;6395:995;;;;;:::o;7395:408::-;-1:-1:-1;;;;;7626:6:50;7622:55;7611:9;7604:74;7714:2;7709;7698:9;7694:18;7687:30;7585:4;7734:63;7793:2;7782:9;7778:18;7770:6;7734:63;:::i;:::-;7726:71;7395:408;-1:-1:-1;;;;7395:408:50:o;8245:127::-;8306:10;8301:3;8297:20;8294:1;8287:31;8337:4;8334:1;8327:15;8361:4;8358:1;8351:15;8377:208;-1:-1:-1;;;;;8521:10:50;;;8509;;;8505:27;;8544:12;;;8541:38;;;8559:18;;:::i;:::-;8541:38;8377:208;;;;:::o;8590:127::-;8651:10;8646:3;8642:20;8639:1;8632:31;8682:4;8679:1;8672:15;8706:4;8703:1;8696:15;8722:234;8761:3;-1:-1:-1;;;;;8866:2:50;8859:5;8855:14;8893:2;8884:7;8881:15;8878:41;;8899:18;;:::i;:::-;8948:1;8935:15;;8722:234;-1:-1:-1;;;8722:234:50:o;8961:337::-;-1:-1:-1;;;;;9140:6:50;9136:55;9125:9;9118:74;9228:2;9223;9212:9;9208:18;9201:30;9099:4;9248:44;9288:2;9277:9;9273:18;9265:6;9248:44;:::i"},"gasEstimates":{"creation":{"codeDepositCost":"950800","executionCost":"infinite","totalCost":"infinite"},"external":{"implementation()":"infinite","prepareInstallation(address,bytes)":"infinite","prepareUninstallation(address,(address,address[],bytes))":"infinite","prepareUpdate(address,uint16,(address,address[],bytes))":"infinite","protocolVersion()":"infinite","supportsInterface(bytes4)":"482"}},"methodIdentifiers":{"implementation()":"5c60da1b","prepareInstallation(address,bytes)":"f10832f1","prepareUninstallation(address,(address,address[],bytes))":"9cb0a124","prepareUpdate(address,uint16,(address,address[],bytes))":"a8a9c29e","protocolVersion()":"2ae9c600","supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ConflictingValues\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"fromBuild\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"thisBuild\",\"type\":\"uint16\"}],\"name\":\"InvalidUpdatePath\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_dao\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"prepareInstallation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"plugin\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address[]\",\"name\":\"helpers\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"enum PermissionLib.Operation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"condition\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PermissionLib.MultiTargetPermission[]\",\"name\":\"permissions\",\"type\":\"tuple[]\"}],\"internalType\":\"struct IPluginSetup.PreparedSetupData\",\"name\":\"preparedSetupData\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_dao\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"plugin\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"currentHelpers\",\"type\":\"address[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IPluginSetup.SetupPayload\",\"name\":\"_payload\",\"type\":\"tuple\"}],\"name\":\"prepareUninstallation\",\"outputs\":[{\"components\":[{\"internalType\":\"enum PermissionLib.Operation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"condition\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PermissionLib.MultiTargetPermission[]\",\"name\":\"permissions\",\"type\":\"tuple[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_dao\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"_fromBuild\",\"type\":\"uint16\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"plugin\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"currentHelpers\",\"type\":\"address[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IPluginSetup.SetupPayload\",\"name\":\"_payload\",\"type\":\"tuple\"}],\"name\":\"prepareUpdate\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"initData\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address[]\",\"name\":\"helpers\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"enum PermissionLib.Operation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"condition\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PermissionLib.MultiTargetPermission[]\",\"name\":\"permissions\",\"type\":\"tuple[]\"}],\"internalType\":\"struct IPluginSetup.PreparedSetupData\",\"name\":\"preparedSetupData\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"protocolVersion\",\"outputs\":[{\"internalType\":\"uint8[3]\",\"name\":\"\",\"type\":\"uint8[3]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"InvalidUpdatePath(uint16,uint16)\":[{\"params\":{\"fromBuild\":\"The build number to update from.\",\"thisBuild\":\"The build number of this setup to update to.\"}}]},\"kind\":\"dev\",\"methods\":{\"implementation()\":{\"details\":\"The implementation can be instantiated via the `new` keyword, cloned via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)), or proxied via the UUPS proxy pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\",\"returns\":{\"_0\":\"The address of the plugin implementation contract.\"}},\"prepareInstallation(address,bytes)\":{\"params\":{\"_dao\":\"The address of the installing DAO.\",\"_data\":\"The bytes-encoded data containing the input parameters for the installation as specified in the plugin's build metadata JSON file.\"},\"returns\":{\"plugin\":\"The address of the `Plugin` contract being prepared for installation.\",\"preparedSetupData\":\"The deployed plugin's relevant data which consists of helpers and permissions.\"}},\"prepareUninstallation(address,(address,address[],bytes))\":{\"params\":{\"_dao\":\"The address of the uninstalling DAO.\",\"_payload\":\"The relevant data necessary for the `prepareUninstallation`. See above.\"},\"returns\":{\"permissions\":\"The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the uninstalling DAO.\"}},\"prepareUpdate(address,uint16,(address,address[],bytes))\":{\"params\":{\"_dao\":\"The address of the updating DAO.\",\"_fromBuild\":\"The build number of the plugin to update from.\",\"_payload\":\"The relevant data necessary for the `prepareUpdate`. See above.\"},\"returns\":{\"initData\":\"The initialization data to be passed to upgradeable contracts when the update is applied in the `PluginSetupProcessor`.\",\"preparedSetupData\":\"The deployed plugin's relevant data which consists of helpers and permissions.\"}},\"protocolVersion()\":{\"details\":\"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\",\"returns\":{\"_0\":\"Returns the semantic Aragon OSx protocol version number.\"}},\"supportsInterface(bytes4)\":{\"params\":{\"_interfaceId\":\"The ID of the interface.\"},\"returns\":{\"_0\":\"Returns `true` if the interface is supported.\"}}},\"version\":1},\"userdoc\":{\"errors\":{\"InvalidUpdatePath(uint16,uint16)\":[{\"notice\":\"Thrown when an update path is not available, for example, if this is the initial build.\"}]},\"kind\":\"user\",\"methods\":{\"implementation()\":{\"notice\":\"Returns the plugin implementation address.\"},\"prepareInstallation(address,bytes)\":{\"notice\":\"Prepares the installation of a plugin.\"},\"prepareUninstallation(address,(address,address[],bytes))\":{\"notice\":\"Prepares the uninstallation of a plugin.\"},\"prepareUpdate(address,uint16,(address,address[],bytes))\":{\"notice\":\"Prepares the update of a plugin.\"},\"protocolVersion()\":{\"notice\":\"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Checks if this or the parent contract supports an interface by its ID.\"}},\"notice\":\"A mock plugin setup of an upgradeable plugin to be deployed via the UUPS pattern. v1.3 (Release 1, Build 3)\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/mocks/plugin/PluginUUPSUpgradeableSetupMock.sol\":\"PluginUUPSUpgradeableSetupMockBuild3\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/interfaces/IERC1967Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (interfaces/IERC1967.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\\n *\\n * _Available since v4.8.3._\\n */\\ninterface IERC1967Upgradeable {\\n /**\\n * @dev Emitted when the implementation is upgraded.\\n */\\n event Upgraded(address indexed implementation);\\n\\n /**\\n * @dev Emitted when the admin account has changed.\\n */\\n event AdminChanged(address previousAdmin, address newAdmin);\\n\\n /**\\n * @dev Emitted when the beacon is changed.\\n */\\n event BeaconUpgraded(address indexed beacon);\\n}\\n\",\"keccak256\":\"0x47d6e06872b12e72c79d1b5eb55842f860b5fb1207b2317c2358d2766b950a7b\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822ProxiableUpgradeable {\\n /**\\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n * address.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy.\\n */\\n function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../beacon/IBeaconUpgradeable.sol\\\";\\nimport \\\"../../interfaces/IERC1967Upgradeable.sol\\\";\\nimport \\\"../../interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\nimport \\\"../../utils/StorageSlotUpgradeable.sol\\\";\\nimport {Initializable} from \\\"../utils/Initializable.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n */\\nabstract contract ERC1967UpgradeUpgradeable is Initializable, IERC1967Upgradeable {\\n // This is the keccak-256 hash of \\\"eip1967.proxy.rollback\\\" subtracted by 1\\n bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n /**\\n * @dev Storage slot with the address of the current implementation.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n function __ERC1967Upgrade_init() internal onlyInitializing {\\n }\\n\\n function __ERC1967Upgrade_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _getImplementation() internal view returns (address) {\\n return StorageSlotUpgradeable.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 implementation slot.\\n */\\n function _setImplementation(address newImplementation) private {\\n require(AddressUpgradeable.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n StorageSlotUpgradeable.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n }\\n\\n /**\\n * @dev Perform implementation upgrade\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeTo(address newImplementation) internal {\\n _setImplementation(newImplementation);\\n emit Upgraded(newImplementation);\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCall(address newImplementation, bytes memory data, bool forceCall) internal {\\n _upgradeTo(newImplementation);\\n if (data.length > 0 || forceCall) {\\n AddressUpgradeable.functionDelegateCall(newImplementation, data);\\n }\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCallUUPS(address newImplementation, bytes memory data, bool forceCall) internal {\\n // Upgrades from old implementations will perform a rollback test. This test requires the new\\n // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n // this special case will break upgrade paths from old UUPS implementation to new ones.\\n if (StorageSlotUpgradeable.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n _setImplementation(newImplementation);\\n } else {\\n try IERC1822ProxiableUpgradeable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n require(slot == _IMPLEMENTATION_SLOT, \\\"ERC1967Upgrade: unsupported proxiableUUID\\\");\\n } catch {\\n revert(\\\"ERC1967Upgrade: new implementation is not UUPS\\\");\\n }\\n _upgradeToAndCall(newImplementation, data, forceCall);\\n }\\n }\\n\\n /**\\n * @dev Storage slot with the admin of the contract.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _getAdmin() internal view returns (address) {\\n return StorageSlotUpgradeable.getAddressSlot(_ADMIN_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 admin slot.\\n */\\n function _setAdmin(address newAdmin) private {\\n require(newAdmin != address(0), \\\"ERC1967: new admin is the zero address\\\");\\n StorageSlotUpgradeable.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n */\\n function _changeAdmin(address newAdmin) internal {\\n emit AdminChanged(_getAdmin(), newAdmin);\\n _setAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\\n */\\n bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n /**\\n * @dev Returns the current beacon.\\n */\\n function _getBeacon() internal view returns (address) {\\n return StorageSlotUpgradeable.getAddressSlot(_BEACON_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new beacon in the EIP1967 beacon slot.\\n */\\n function _setBeacon(address newBeacon) private {\\n require(AddressUpgradeable.isContract(newBeacon), \\\"ERC1967: new beacon is not a contract\\\");\\n require(\\n AddressUpgradeable.isContract(IBeaconUpgradeable(newBeacon).implementation()),\\n \\\"ERC1967: beacon implementation is not a contract\\\"\\n );\\n StorageSlotUpgradeable.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n }\\n\\n /**\\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n *\\n * Emits a {BeaconUpgraded} event.\\n */\\n function _upgradeBeaconToAndCall(address newBeacon, bytes memory data, bool forceCall) internal {\\n _setBeacon(newBeacon);\\n emit BeaconUpgraded(newBeacon);\\n if (data.length > 0 || forceCall) {\\n AddressUpgradeable.functionDelegateCall(IBeaconUpgradeable(newBeacon).implementation(), data);\\n }\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x7795808e3899c805254e3ae58074b20f799b466e3f43e057e47bedee5fb771f8\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeaconUpgradeable {\\n /**\\n * @dev Must return an address that can be used as a delegate call target.\\n *\\n * {BeaconProxy} will check that this address is a contract.\\n */\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/UUPSUpgradeable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport \\\"../ERC1967/ERC1967UpgradeUpgradeable.sol\\\";\\nimport {Initializable} from \\\"./Initializable.sol\\\";\\n\\n/**\\n * @dev An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an\\n * {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy.\\n *\\n * A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is\\n * reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing\\n * `UUPSUpgradeable` with a custom implementation of upgrades.\\n *\\n * The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism.\\n *\\n * _Available since v4.1._\\n */\\nabstract contract UUPSUpgradeable is Initializable, IERC1822ProxiableUpgradeable, ERC1967UpgradeUpgradeable {\\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable state-variable-assignment\\n address private immutable __self = address(this);\\n\\n /**\\n * @dev Check that the execution is being performed through a delegatecall call and that the execution context is\\n * a proxy contract with an implementation (as defined in ERC1967) pointing to self. This should only be the case\\n * for UUPS and transparent proxies that are using the current contract as their implementation. Execution of a\\n * function through ERC1167 minimal proxies (clones) would not normally pass this test, but is not guaranteed to\\n * fail.\\n */\\n modifier onlyProxy() {\\n require(address(this) != __self, \\\"Function must be called through delegatecall\\\");\\n require(_getImplementation() == __self, \\\"Function must be called through active proxy\\\");\\n _;\\n }\\n\\n /**\\n * @dev Check that the execution is not being performed through a delegate call. This allows a function to be\\n * callable on the implementing contract but not through proxies.\\n */\\n modifier notDelegated() {\\n require(address(this) == __self, \\\"UUPSUpgradeable: must not be called through delegatecall\\\");\\n _;\\n }\\n\\n function __UUPSUpgradeable_init() internal onlyInitializing {\\n }\\n\\n function __UUPSUpgradeable_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the\\n * implementation. It is used to validate the implementation's compatibility when performing an upgrade.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\\n */\\n function proxiableUUID() external view virtual override notDelegated returns (bytes32) {\\n return _IMPLEMENTATION_SLOT;\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy to `newImplementation`.\\n *\\n * Calls {_authorizeUpgrade}.\\n *\\n * Emits an {Upgraded} event.\\n *\\n * @custom:oz-upgrades-unsafe-allow-reachable delegatecall\\n */\\n function upgradeTo(address newImplementation) public virtual onlyProxy {\\n _authorizeUpgrade(newImplementation);\\n _upgradeToAndCallUUPS(newImplementation, new bytes(0), false);\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call\\n * encoded in `data`.\\n *\\n * Calls {_authorizeUpgrade}.\\n *\\n * Emits an {Upgraded} event.\\n *\\n * @custom:oz-upgrades-unsafe-allow-reachable delegatecall\\n */\\n function upgradeToAndCall(address newImplementation, bytes memory data) public payable virtual onlyProxy {\\n _authorizeUpgrade(newImplementation);\\n _upgradeToAndCallUUPS(newImplementation, data, true);\\n }\\n\\n /**\\n * @dev Function that should revert when `msg.sender` is not authorized to upgrade the contract. Called by\\n * {upgradeTo} and {upgradeToAndCall}.\\n *\\n * Normally, this function will use an xref:access.adoc[access control] modifier such as {Ownable-onlyOwner}.\\n *\\n * ```solidity\\n * function _authorizeUpgrade(address) internal override onlyOwner {}\\n * ```\\n */\\n function _authorizeUpgrade(address newImplementation) internal virtual;\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0xefb41f5c1a00249b7a99f0782f8c557865605426a3fb6e5fe9ae334293ae4f33\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n function __Context_init() internal onlyInitializing {\\n }\\n\\n function __Context_init_unchained() internal onlyInitializing {\\n }\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n function _contextSuffixLength() internal view virtual returns (uint256) {\\n return 0;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x75097e35253e7fb282ee4d7f27a80eaacfa759923185bf17302a89cbc059c5ef\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/StorageSlot.sol)\\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```solidity\\n * contract ERC1967 {\\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n * function _getImplementation() internal view returns (address) {\\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n * }\\n *\\n * function _setImplementation(address newImplementation) internal {\\n * require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n * }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._\\n * _Available since v4.9 for `string`, `bytes`._\\n */\\nlibrary StorageSlotUpgradeable {\\n struct AddressSlot {\\n address value;\\n }\\n\\n struct BooleanSlot {\\n bool value;\\n }\\n\\n struct Bytes32Slot {\\n bytes32 value;\\n }\\n\\n struct Uint256Slot {\\n uint256 value;\\n }\\n\\n struct StringSlot {\\n string value;\\n }\\n\\n struct BytesSlot {\\n bytes value;\\n }\\n\\n /**\\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n */\\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n */\\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n */\\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n */\\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` with member `value` located at `slot`.\\n */\\n function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\\n */\\n function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` with member `value` located at `slot`.\\n */\\n function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\\n */\\n function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n}\\n\",\"keccak256\":\"0x07ac95acad040f1fb1f6120dd0aa5f702db69446e95f82613721879d30de0908\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165Upgradeable.sol\\\";\\nimport {Initializable} from \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165Upgradeable is Initializable, IERC165Upgradeable {\\n function __ERC165_init() internal onlyInitializing {\\n }\\n\\n function __ERC165_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165Upgradeable).interfaceId;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0xd90d7723512df65ae417adaf0801042940f0dabd60039ceeaffe34aa5b238da1\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165Upgradeable {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/IERC1967.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (interfaces/IERC1967.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\\n *\\n * _Available since v4.8.3._\\n */\\ninterface IERC1967 {\\n /**\\n * @dev Emitted when the implementation is upgraded.\\n */\\n event Upgraded(address indexed implementation);\\n\\n /**\\n * @dev Emitted when the admin account has changed.\\n */\\n event AdminChanged(address previousAdmin, address newAdmin);\\n\\n /**\\n * @dev Emitted when the beacon is changed.\\n */\\n event BeaconUpgraded(address indexed beacon);\\n}\\n\",\"keccak256\":\"0x3cbef5ebc24b415252e2f8c0c9254555d30d9f085603b4b80d9b5ed20ab87e90\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822Proxiable {\\n /**\\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n * address.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy.\\n */\\n function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/Clones.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/Clones.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev https://eips.ethereum.org/EIPS/eip-1167[EIP 1167] is a standard for\\n * deploying minimal proxy contracts, also known as \\\"clones\\\".\\n *\\n * > To simply and cheaply clone contract functionality in an immutable way, this standard specifies\\n * > a minimal bytecode implementation that delegates all calls to a known, fixed address.\\n *\\n * The library includes functions to deploy a proxy using either `create` (traditional deployment) or `create2`\\n * (salted deterministic deployment). It also includes functions to predict the addresses of clones deployed using the\\n * deterministic method.\\n *\\n * _Available since v3.4._\\n */\\nlibrary Clones {\\n /**\\n * @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`.\\n *\\n * This function uses the create opcode, which should never revert.\\n */\\n function clone(address implementation) internal returns (address instance) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n // Cleans the upper 96 bits of the `implementation` word, then packs the first 3 bytes\\n // of the `implementation` address with the bytecode before the address.\\n mstore(0x00, or(shr(0xe8, shl(0x60, implementation)), 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000))\\n // Packs the remaining 17 bytes of `implementation` with the bytecode after the address.\\n mstore(0x20, or(shl(0x78, implementation), 0x5af43d82803e903d91602b57fd5bf3))\\n instance := create(0, 0x09, 0x37)\\n }\\n require(instance != address(0), \\\"ERC1167: create failed\\\");\\n }\\n\\n /**\\n * @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`.\\n *\\n * This function uses the create2 opcode and a `salt` to deterministically deploy\\n * the clone. Using the same `implementation` and `salt` multiple time will revert, since\\n * the clones cannot be deployed twice at the same address.\\n */\\n function cloneDeterministic(address implementation, bytes32 salt) internal returns (address instance) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n // Cleans the upper 96 bits of the `implementation` word, then packs the first 3 bytes\\n // of the `implementation` address with the bytecode before the address.\\n mstore(0x00, or(shr(0xe8, shl(0x60, implementation)), 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000))\\n // Packs the remaining 17 bytes of `implementation` with the bytecode after the address.\\n mstore(0x20, or(shl(0x78, implementation), 0x5af43d82803e903d91602b57fd5bf3))\\n instance := create2(0, 0x09, 0x37, salt)\\n }\\n require(instance != address(0), \\\"ERC1167: create2 failed\\\");\\n }\\n\\n /**\\n * @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}.\\n */\\n function predictDeterministicAddress(\\n address implementation,\\n bytes32 salt,\\n address deployer\\n ) internal pure returns (address predicted) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n let ptr := mload(0x40)\\n mstore(add(ptr, 0x38), deployer)\\n mstore(add(ptr, 0x24), 0x5af43d82803e903d91602b57fd5bf3ff)\\n mstore(add(ptr, 0x14), implementation)\\n mstore(ptr, 0x3d602d80600a3d3981f3363d3d373d3d3d363d73)\\n mstore(add(ptr, 0x58), salt)\\n mstore(add(ptr, 0x78), keccak256(add(ptr, 0x0c), 0x37))\\n predicted := keccak256(add(ptr, 0x43), 0x55)\\n }\\n }\\n\\n /**\\n * @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}.\\n */\\n function predictDeterministicAddress(\\n address implementation,\\n bytes32 salt\\n ) internal view returns (address predicted) {\\n return predictDeterministicAddress(implementation, salt, address(this));\\n }\\n}\\n\",\"keccak256\":\"0x01f055f5c26ba25d7f83e9aa9ba877fbea4d0bf22227de046ea67494bc932999\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (proxy/ERC1967/ERC1967Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../Proxy.sol\\\";\\nimport \\\"./ERC1967Upgrade.sol\\\";\\n\\n/**\\n * @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an\\n * implementation address that can be changed. This address is stored in storage in the location specified by\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the\\n * implementation behind the proxy.\\n */\\ncontract ERC1967Proxy is Proxy, ERC1967Upgrade {\\n /**\\n * @dev Initializes the upgradeable proxy with an initial implementation specified by `_logic`.\\n *\\n * If `_data` is nonempty, it's used as data in a delegate call to `_logic`. This will typically be an encoded\\n * function call, and allows initializing the storage of the proxy like a Solidity constructor.\\n */\\n constructor(address _logic, bytes memory _data) payable {\\n _upgradeToAndCall(_logic, _data, false);\\n }\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _implementation() internal view virtual override returns (address impl) {\\n return ERC1967Upgrade._getImplementation();\\n }\\n}\\n\",\"keccak256\":\"0xa2b22da3032e50b55f95ec1d13336102d675f341167aa76db571ef7f8bb7975d\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../beacon/IBeacon.sol\\\";\\nimport \\\"../../interfaces/IERC1967.sol\\\";\\nimport \\\"../../interfaces/draft-IERC1822.sol\\\";\\nimport \\\"../../utils/Address.sol\\\";\\nimport \\\"../../utils/StorageSlot.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n */\\nabstract contract ERC1967Upgrade is IERC1967 {\\n // This is the keccak-256 hash of \\\"eip1967.proxy.rollback\\\" subtracted by 1\\n bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n /**\\n * @dev Storage slot with the address of the current implementation.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _getImplementation() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 implementation slot.\\n */\\n function _setImplementation(address newImplementation) private {\\n require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n }\\n\\n /**\\n * @dev Perform implementation upgrade\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeTo(address newImplementation) internal {\\n _setImplementation(newImplementation);\\n emit Upgraded(newImplementation);\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCall(address newImplementation, bytes memory data, bool forceCall) internal {\\n _upgradeTo(newImplementation);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(newImplementation, data);\\n }\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCallUUPS(address newImplementation, bytes memory data, bool forceCall) internal {\\n // Upgrades from old implementations will perform a rollback test. This test requires the new\\n // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n // this special case will break upgrade paths from old UUPS implementation to new ones.\\n if (StorageSlot.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n _setImplementation(newImplementation);\\n } else {\\n try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n require(slot == _IMPLEMENTATION_SLOT, \\\"ERC1967Upgrade: unsupported proxiableUUID\\\");\\n } catch {\\n revert(\\\"ERC1967Upgrade: new implementation is not UUPS\\\");\\n }\\n _upgradeToAndCall(newImplementation, data, forceCall);\\n }\\n }\\n\\n /**\\n * @dev Storage slot with the admin of the contract.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _getAdmin() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_ADMIN_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 admin slot.\\n */\\n function _setAdmin(address newAdmin) private {\\n require(newAdmin != address(0), \\\"ERC1967: new admin is the zero address\\\");\\n StorageSlot.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n */\\n function _changeAdmin(address newAdmin) internal {\\n emit AdminChanged(_getAdmin(), newAdmin);\\n _setAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\\n */\\n bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n /**\\n * @dev Returns the current beacon.\\n */\\n function _getBeacon() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_BEACON_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new beacon in the EIP1967 beacon slot.\\n */\\n function _setBeacon(address newBeacon) private {\\n require(Address.isContract(newBeacon), \\\"ERC1967: new beacon is not a contract\\\");\\n require(\\n Address.isContract(IBeacon(newBeacon).implementation()),\\n \\\"ERC1967: beacon implementation is not a contract\\\"\\n );\\n StorageSlot.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n }\\n\\n /**\\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n *\\n * Emits a {BeaconUpgraded} event.\\n */\\n function _upgradeBeaconToAndCall(address newBeacon, bytes memory data, bool forceCall) internal {\\n _setBeacon(newBeacon);\\n emit BeaconUpgraded(newBeacon);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x3b21ae06bf5957f73fa16754b0669c77b7abd8ba6c072d35c3281d446fdb86c2\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (proxy/Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\\n * be specified by overriding the virtual {_implementation} function.\\n *\\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\\n * different contract through the {_delegate} function.\\n *\\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\\n */\\nabstract contract Proxy {\\n /**\\n * @dev Delegates the current call to `implementation`.\\n *\\n * This function does not return to its internal call site, it will return directly to the external caller.\\n */\\n function _delegate(address implementation) internal virtual {\\n assembly {\\n // Copy msg.data. We take full control of memory in this inline assembly\\n // block because it will not return to Solidity code. We overwrite the\\n // Solidity scratch pad at memory position 0.\\n calldatacopy(0, 0, calldatasize())\\n\\n // Call the implementation.\\n // out and outsize are 0 because we don't know the size yet.\\n let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)\\n\\n // Copy the returned data.\\n returndatacopy(0, 0, returndatasize())\\n\\n switch result\\n // delegatecall returns 0 on error.\\n case 0 {\\n revert(0, returndatasize())\\n }\\n default {\\n return(0, returndatasize())\\n }\\n }\\n }\\n\\n /**\\n * @dev This is a virtual function that should be overridden so it returns the address to which the fallback function\\n * and {_fallback} should delegate.\\n */\\n function _implementation() internal view virtual returns (address);\\n\\n /**\\n * @dev Delegates the current call to the address returned by `_implementation()`.\\n *\\n * This function does not return to its internal call site, it will return directly to the external caller.\\n */\\n function _fallback() internal virtual {\\n _beforeFallback();\\n _delegate(_implementation());\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\\n * function in the contract matches the call data.\\n */\\n fallback() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data\\n * is empty.\\n */\\n receive() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`\\n * call, or as part of the Solidity `fallback` or `receive` functions.\\n *\\n * If overridden should call `super._beforeFallback()`.\\n */\\n function _beforeFallback() internal virtual {}\\n}\\n\",\"keccak256\":\"0xc130fe33f1b2132158531a87734153293f6d07bc263ff4ac90e85da9c82c0e27\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeacon {\\n /**\\n * @dev Must return an address that can be used as a delegate call target.\\n *\\n * {BeaconProxy} will check that this address is a contract.\\n */\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/StorageSlot.sol)\\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```solidity\\n * contract ERC1967 {\\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n * function _getImplementation() internal view returns (address) {\\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n * }\\n *\\n * function _setImplementation(address newImplementation) internal {\\n * require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n * }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._\\n * _Available since v4.9 for `string`, `bytes`._\\n */\\nlibrary StorageSlot {\\n struct AddressSlot {\\n address value;\\n }\\n\\n struct BooleanSlot {\\n bool value;\\n }\\n\\n struct Bytes32Slot {\\n bytes32 value;\\n }\\n\\n struct Uint256Slot {\\n uint256 value;\\n }\\n\\n struct StringSlot {\\n string value;\\n }\\n\\n struct BytesSlot {\\n bytes value;\\n }\\n\\n /**\\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n */\\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n */\\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n */\\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n */\\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` with member `value` located at `slot`.\\n */\\n function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\\n */\\n function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` with member `value` located at `slot`.\\n */\\n function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\\n */\\n function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n}\\n\",\"keccak256\":\"0xf09e68aa0dc6722a25bc46490e8d48ed864466d17313b8a0b254c36b54e49899\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165 is IERC165 {\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165).interfaceId;\\n }\\n}\\n\",\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"src/dao/IDAO.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IDAO\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for DAOs within the Aragon App DAO framework.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IDAO {\\n /// @notice The action struct to be consumed by the DAO's `execute` function resulting in an external call.\\n /// @param to The address to call.\\n /// @param value The native token value to be sent with the call.\\n /// @param data The bytes-encoded function selector and calldata for the call.\\n struct Action {\\n address to;\\n uint256 value;\\n bytes data;\\n }\\n\\n /// @notice Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\\n /// @param _where The address of the contract.\\n /// @param _who The address of a EOA or contract to give the permissions.\\n /// @param _permissionId The permission identifier.\\n /// @param _data The optional data passed to the `PermissionCondition` registered.\\n /// @return Returns true if the address has permission, false if not.\\n function hasPermission(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes memory _data\\n ) external view returns (bool);\\n\\n /// @notice Updates the DAO metadata (e.g., an IPFS hash).\\n /// @param _metadata The IPFS hash of the new metadata object.\\n function setMetadata(bytes calldata _metadata) external;\\n\\n /// @notice Emitted when the DAO metadata is updated.\\n /// @param metadata The IPFS hash of the new metadata object.\\n event MetadataSet(bytes metadata);\\n\\n /// @notice Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted.\\n /// @param _callId The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce.\\n /// @param _actions The array of actions.\\n /// @param _allowFailureMap A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @return The array of results obtained from the executed actions in `bytes`.\\n /// @return The resulting failure map containing the actions have actually failed.\\n function execute(\\n bytes32 _callId,\\n Action[] memory _actions,\\n uint256 _allowFailureMap\\n ) external returns (bytes[] memory, uint256);\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param actor The address of the caller.\\n /// @param callId The ID of the call.\\n /// @param actions The array of actions executed.\\n /// @param allowFailureMap The allow failure map encoding which actions are allowed to fail.\\n /// @param failureMap The failure map encoding which actions have failed.\\n /// @param execResults The array with the results of the executed actions.\\n /// @dev The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce.\\n event Executed(\\n address indexed actor,\\n bytes32 callId,\\n Action[] actions,\\n uint256 allowFailureMap,\\n uint256 failureMap,\\n bytes[] execResults\\n );\\n\\n /// @notice Emitted when a standard callback is registered.\\n /// @param interfaceId The ID of the interface.\\n /// @param callbackSelector The selector of the callback function.\\n /// @param magicNumber The magic number to be registered for the callback function selector.\\n event StandardCallbackRegistered(\\n bytes4 interfaceId,\\n bytes4 callbackSelector,\\n bytes4 magicNumber\\n );\\n\\n /// @notice Deposits (native) tokens to the DAO contract with a reference string.\\n /// @param _token The address of the token or address(0) in case of the native token.\\n /// @param _amount The amount of tokens to deposit.\\n /// @param _reference The reference describing the deposit reason.\\n function deposit(address _token, uint256 _amount, string calldata _reference) external payable;\\n\\n /// @notice Emitted when a token deposit has been made to the DAO.\\n /// @param sender The address of the sender.\\n /// @param token The address of the deposited token.\\n /// @param amount The amount of tokens deposited.\\n /// @param _reference The reference describing the deposit reason.\\n event Deposited(\\n address indexed sender,\\n address indexed token,\\n uint256 amount,\\n string _reference\\n );\\n\\n /// @notice Emitted when a native token deposit has been made to the DAO.\\n /// @dev This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).\\n /// @param sender The address of the sender.\\n /// @param amount The amount of native tokens deposited.\\n event NativeTokenDeposited(address sender, uint256 amount);\\n\\n /// @notice Setter for the trusted forwarder verifying the meta transaction.\\n /// @param _trustedForwarder The trusted forwarder address.\\n function setTrustedForwarder(address _trustedForwarder) external;\\n\\n /// @notice Getter for the trusted forwarder verifying the meta transaction.\\n /// @return The trusted forwarder address.\\n function getTrustedForwarder() external view returns (address);\\n\\n /// @notice Emitted when a new TrustedForwarder is set on the DAO.\\n /// @param forwarder the new forwarder address.\\n event TrustedForwarderSet(address forwarder);\\n\\n /// @notice Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\\n /// @param _hash The hash of the data to be signed.\\n /// @param _signature The signature byte array associated with `_hash`.\\n /// @return Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not.\\n function isValidSignature(bytes32 _hash, bytes memory _signature) external returns (bytes4);\\n\\n /// @notice Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\\n /// @param _interfaceId The ID of the interface.\\n /// @param _callbackSelector The selector of the callback function.\\n /// @param _magicNumber The magic number to be registered for the function signature.\\n function registerStandardCallback(\\n bytes4 _interfaceId,\\n bytes4 _callbackSelector,\\n bytes4 _magicNumber\\n ) external;\\n\\n /// @notice Removed function being left here to not corrupt the IDAO interface ID. Any call will revert.\\n /// @dev Introduced in v1.0.0. Removed in v1.4.0.\\n function setSignatureValidator(address) external;\\n}\\n\",\"keccak256\":\"0xb7f615523c26de042edce98731c658f44a1edb2464387ac1b642c4c69f57128e\",\"license\":\"AGPL-3.0-or-later\"},\"src/mocks/plugin/PluginSetupMockData.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {PermissionLib} from \\\"../../permission/PermissionLib.sol\\\";\\n\\naddress constant NO_CONDITION = address(0);\\n\\nerror ConflictingValues();\\n\\n/// @notice Creates a mock `MultiTargetPermission` array by converting a range of `uint160` values into `address` values.\\n/// @param rangeStart The start of the range.\\n/// @param rangeEnd The end of the range (that is not included).\\n/// @param op The permission operation type.\\n/// @return permissions The mock array of permissions.\\n/// @dev DO NOT USE IN PRODUCTION!\\nfunction mockPermissions(\\n uint160 rangeStart,\\n uint160 rangeEnd,\\n PermissionLib.Operation op\\n) pure returns (PermissionLib.MultiTargetPermission[] memory permissions) {\\n if (rangeStart > rangeEnd) revert ConflictingValues();\\n\\n permissions = new PermissionLib.MultiTargetPermission[](rangeEnd - rangeStart);\\n\\n for (uint160 i = rangeStart; i < rangeEnd; i++) {\\n permissions[i - rangeStart] = PermissionLib.MultiTargetPermission({\\n operation: op,\\n where: address(i),\\n who: address(i),\\n condition: PermissionLib.NO_CONDITION,\\n permissionId: keccak256(\\\"MOCK_PERMISSION\\\")\\n });\\n }\\n}\\n\\n/// @notice Creates a mock array of helper addresses of specified length by converting `uint160` values starting from 0 into `address` values.\\n/// @param len The length of the helper array.\\n/// @return helpers The mock array of helper addresses.\\n/// @dev DO NOT USE IN PRODUCTION!\\nfunction mockHelpers(uint160 len) pure returns (address[] memory helpers) {\\n helpers = new address[](len);\\n\\n for (uint160 i = 0; i < len; i++) {\\n helpers[i] = address(i);\\n }\\n}\\n\",\"keccak256\":\"0x529d1b7ea4c348fe18edf81a044792ca8aa1f6ad9a7d2edfd35e38bf8372abf9\",\"license\":\"AGPL-3.0-or-later\"},\"src/mocks/plugin/PluginUUPSUpgradeableMock.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\n/* solhint-disable one-contract-per-file */\\npragma solidity ^0.8.8;\\n\\nimport {PluginUUPSUpgradeable} from \\\"../../plugin/PluginUUPSUpgradeable.sol\\\";\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice A mock upgradeable plugin to be deployed via the UUPS proxy pattern.\\n/// v1.1 (Release 1, Build 1)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableMockBuild1 is PluginUUPSUpgradeable {\\n uint256 public state1;\\n\\n function initialize(IDAO _dao) external initializer {\\n __PluginUUPSUpgradeable_init(_dao);\\n state1 = 1;\\n }\\n}\\n\\n/// @notice A mock upgradeable plugin to be deployed via the UUPS proxy pattern.\\n/// v1.1 (Release 1, Build 2)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableMockBuild2 is PluginUUPSUpgradeable {\\n uint256 public state1;\\n uint256 public state2;\\n\\n function initialize(IDAO _dao) external reinitializer(2) {\\n __PluginUUPSUpgradeable_init(_dao);\\n state1 = 1;\\n state2 = 2;\\n }\\n\\n function initializeFrom(uint16 _previousBuild) external reinitializer(2) {\\n if (_previousBuild < 2) {\\n state2 = 2;\\n }\\n }\\n}\\n\\n/// @notice A mock upgradeable plugin to be deployed via the UUPS proxy pattern.\\n/// v1.1 (Release 1, Build 3)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableMockBuild3 is PluginUUPSUpgradeable {\\n uint256 public state1;\\n uint256 public state2;\\n uint256 public state3;\\n\\n function initialize(IDAO _dao) external reinitializer(3) {\\n __PluginUUPSUpgradeable_init(_dao);\\n state1 = 1;\\n state2 = 2;\\n state3 = 3;\\n }\\n\\n function initializeFrom(uint16 _previousBuild) external reinitializer(3) {\\n if (_previousBuild < 2) {\\n state2 = 2;\\n }\\n if (_previousBuild < 3) {\\n state3 = 3;\\n }\\n }\\n}\\n\\n/// @notice A mock upgradeable plugin missing an initializer function.\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableMockBad is PluginUUPSUpgradeable {\\n uint256 public state1;\\n\\n function notAnInitializer(IDAO _dao) external {\\n __PluginUUPSUpgradeable_init(_dao);\\n state1 = 1;\\n }\\n}\\n\",\"keccak256\":\"0x2917df3b1da0de27f58cf531afeaa4e6c4285717247cbdd9ecc7880ae5cb9cb0\",\"license\":\"AGPL-3.0-or-later\"},\"src/mocks/plugin/PluginUUPSUpgradeableSetupMock.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\n/* solhint-disable one-contract-per-file */\\npragma solidity ^0.8.8;\\n\\nimport {PermissionLib} from \\\"../../permission/PermissionLib.sol\\\";\\nimport {IPluginSetup} from \\\"../../plugin/setup/IPluginSetup.sol\\\";\\nimport {PluginUpgradeableSetup} from \\\"../../plugin/setup/PluginUpgradeableSetup.sol\\\";\\nimport {ProxyLib} from \\\"../../utils/deployment/ProxyLib.sol\\\";\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\nimport {mockPermissions, mockHelpers} from \\\"./PluginSetupMockData.sol\\\";\\nimport {PluginUUPSUpgradeableMockBuild1, PluginUUPSUpgradeableMockBuild2, PluginUUPSUpgradeableMockBuild3} from \\\"./PluginUUPSUpgradeableMock.sol\\\";\\n\\n/// @notice A mock plugin setup of an upgradeable plugin to be deployed via the UUPS pattern.\\n/// v1.1 (Release 1, Build 1)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableSetupMockBuild1 is PluginUpgradeableSetup {\\n using ProxyLib for address;\\n\\n uint16 internal constant THIS_BUILD = 1;\\n\\n constructor() PluginUpgradeableSetup(address(new PluginUUPSUpgradeableMockBuild1())) {}\\n\\n /// @inheritdoc IPluginSetup\\n function prepareInstallation(\\n address _dao,\\n bytes memory\\n ) public returns (address plugin, PreparedSetupData memory preparedSetupData) {\\n bytes memory initData = abi.encodeCall(\\n PluginUUPSUpgradeableMockBuild1.initialize,\\n (IDAO(_dao))\\n );\\n plugin = implementation().deployUUPSProxy(initData);\\n preparedSetupData.helpers = mockHelpers(1);\\n preparedSetupData.permissions = mockPermissions(0, 1, PermissionLib.Operation.Grant);\\n }\\n\\n /// @inheritdoc IPluginSetup\\n /// @dev The default implementation for the initial build 1 that reverts because no earlier build exists.\\n function prepareUpdate(\\n address _dao,\\n uint16 _fromBuild,\\n SetupPayload calldata _payload\\n ) external pure virtual returns (bytes memory, PreparedSetupData memory) {\\n (_dao, _fromBuild, _payload);\\n revert InvalidUpdatePath({fromBuild: 0, thisBuild: THIS_BUILD});\\n }\\n\\n /// @inheritdoc IPluginSetup\\n function prepareUninstallation(\\n address _dao,\\n SetupPayload calldata _payload\\n ) external pure returns (PermissionLib.MultiTargetPermission[] memory permissions) {\\n (_dao, _payload);\\n permissions = mockPermissions(0, THIS_BUILD, PermissionLib.Operation.Revoke);\\n }\\n}\\n\\n/// @notice A mock plugin setup of an upgradeable plugin to be deployed via the UUPS pattern.\\n/// v1.2 (Release 1, Build 2)\\n/// @dev DO NOT USE IN PRODUCTION!\\ncontract PluginUUPSUpgradeableSetupMockBuild2 is PluginUpgradeableSetup {\\n using ProxyLib for address;\\n\\n uint16 internal constant THIS_BUILD = 2;\\n\\n constructor() PluginUpgradeableSetup(address(new PluginUUPSUpgradeableMockBuild2())) {}\\n\\n /// @inheritdoc IPluginSetup\\n function prepareInstallation(\\n address _dao,\\n bytes memory\\n ) external returns (address plugin, PreparedSetupData memory preparedSetupData) {\\n bytes memory initData = abi.encodeCall(\\n PluginUUPSUpgradeableMockBuild2.initialize,\\n (IDAO(_dao))\\n );\\n plugin = implementation().deployUUPSProxy(initData);\\n preparedSetupData.helpers = mockHelpers(THIS_BUILD);\\n preparedSetupData.permissions = mockPermissions(\\n 0,\\n THIS_BUILD,\\n PermissionLib.Operation.Grant\\n );\\n }\\n\\n /// @inheritdoc IPluginSetup\\n function prepareUpdate(\\n address _dao,\\n uint16 _fromBuild,\\n SetupPayload calldata _payload\\n )\\n external\\n pure\\n override\\n returns (bytes memory initData, PreparedSetupData memory preparedSetupData)\\n {\\n (_dao, _payload);\\n\\n // Update from Build 1\\n if (_fromBuild == 1) {\\n preparedSetupData.helpers = mockHelpers(THIS_BUILD);\\n initData = abi.encodeCall(PluginUUPSUpgradeableMockBuild2.initializeFrom, (_fromBuild));\\n preparedSetupData.permissions = mockPermissions(\\n _fromBuild,\\n THIS_BUILD,\\n PermissionLib.Operation.Grant\\n );\\n }\\n }\\n\\n /// @inheritdoc IPluginSetup\\n function prepareUninstallation(\\n address _dao,\\n SetupPayload calldata _payload\\n ) external pure returns (PermissionLib.MultiTargetPermission[] memory permissions) {\\n (_dao, _payload);\\n permissions = mockPermissions(0, THIS_BUILD, PermissionLib.Operation.Revoke);\\n }\\n}\\n\\n/// @notice A mock plugin setup of an upgradeable plugin to be deployed via the UUPS pattern.\\n/// v1.3 (Release 1, Build 3)\\ncontract PluginUUPSUpgradeableSetupMockBuild3 is PluginUpgradeableSetup {\\n using ProxyLib for address;\\n\\n uint16 internal constant THIS_BUILD = 3;\\n\\n constructor() PluginUpgradeableSetup(address(new PluginUUPSUpgradeableMockBuild3())) {}\\n\\n /// @inheritdoc IPluginSetup\\n function prepareInstallation(\\n address _dao,\\n bytes memory\\n ) external returns (address plugin, PreparedSetupData memory preparedSetupData) {\\n bytes memory initData = abi.encodeCall(\\n PluginUUPSUpgradeableMockBuild3.initialize,\\n (IDAO(_dao))\\n );\\n plugin = implementation().deployUUPSProxy(initData);\\n preparedSetupData.helpers = mockHelpers(THIS_BUILD);\\n preparedSetupData.permissions = mockPermissions(\\n 0,\\n THIS_BUILD,\\n PermissionLib.Operation.Grant\\n );\\n }\\n\\n /// @inheritdoc IPluginSetup\\n function prepareUpdate(\\n address _dao,\\n uint16 _fromBuild,\\n SetupPayload calldata _payload\\n )\\n external\\n pure\\n override\\n returns (bytes memory initData, PreparedSetupData memory preparedSetupData)\\n {\\n (_dao, _payload);\\n\\n // Update from Build 1\\n if (_fromBuild == 1) {\\n preparedSetupData.helpers = mockHelpers(THIS_BUILD);\\n initData = abi.encodeCall(PluginUUPSUpgradeableMockBuild3.initializeFrom, (_fromBuild));\\n preparedSetupData.permissions = mockPermissions(\\n _fromBuild,\\n THIS_BUILD,\\n PermissionLib.Operation.Grant\\n );\\n\\n // If this update path should not be supported, you can revert with an error, e.g.,\\n // revert InvalidUpdatePath({fromBuild: _fromBuild, thisBuild: THIS_BUILD});\\n }\\n\\n // Update from Build 2\\n if (_fromBuild == 2) {\\n preparedSetupData.helpers = mockHelpers(THIS_BUILD);\\n initData = abi.encodeCall(PluginUUPSUpgradeableMockBuild3.initializeFrom, (_fromBuild));\\n preparedSetupData.permissions = mockPermissions(\\n _fromBuild,\\n THIS_BUILD,\\n PermissionLib.Operation.Grant\\n );\\n }\\n }\\n\\n /// @inheritdoc IPluginSetup\\n function prepareUninstallation(\\n address _dao,\\n SetupPayload calldata _payload\\n ) external pure returns (PermissionLib.MultiTargetPermission[] memory permissions) {\\n (_dao, _payload);\\n permissions = mockPermissions(0, THIS_BUILD, PermissionLib.Operation.Revoke);\\n }\\n}\\n\",\"keccak256\":\"0x6be5a7611fe85f0e6e1ea08f42bcce810bc4973da1eaa04c88445b8d9af130ba\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/PermissionLib.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title PermissionLib\\n/// @author Aragon X - 2021-2023\\n/// @notice A library containing objects for permission processing.\\n/// @custom:security-contact sirt@aragon.org\\nlibrary PermissionLib {\\n /// @notice A constant expressing that no condition is applied to a permission.\\n address public constant NO_CONDITION = address(0);\\n\\n /// @notice The types of permission operations available in the `PermissionManager`.\\n /// @param Grant The grant operation setting a permission without a condition.\\n /// @param Revoke The revoke operation removing a permission (that was granted with or without a condition).\\n /// @param GrantWithCondition The grant operation setting a permission with a condition.\\n enum Operation {\\n Grant,\\n Revoke,\\n GrantWithCondition\\n }\\n\\n /// @notice A struct containing the information for a permission to be applied on a single target contract without a condition.\\n /// @param operation The permission operation type.\\n /// @param who The address (EOA or contract) receiving the permission.\\n /// @param permissionId The permission identifier.\\n struct SingleTargetPermission {\\n Operation operation;\\n address who;\\n bytes32 permissionId;\\n }\\n\\n /// @notice A struct containing the information for a permission to be applied on multiple target contracts, optionally, with a condition.\\n /// @param operation The permission operation type.\\n /// @param where The address of the target contract for which `who` receives permission.\\n /// @param who The address (EOA or contract) receiving the permission.\\n /// @param condition The `PermissionCondition` that will be asked for authorization on calls connected to the specified permission identifier.\\n /// @param permissionId The permission identifier.\\n struct MultiTargetPermission {\\n Operation operation;\\n address where;\\n address who;\\n address condition;\\n bytes32 permissionId;\\n }\\n}\\n\",\"keccak256\":\"0x470faf3c4891ebc6420ef6cc09f6098917568ccc79268c90954d1478199b6097\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/DaoAuthorizableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ContextUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\\\";\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\nimport {_auth} from \\\"./auth.sol\\\";\\n\\n/// @title DaoAuthorizableUpgradeable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract contract providing a meta-transaction compatible modifier for upgradeable or cloneable contracts to authorize function calls through an associated DAO.\\n/// @dev Make sure to call `__DaoAuthorizableUpgradeable_init` during initialization of the inheriting contract.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract DaoAuthorizableUpgradeable is ContextUpgradeable {\\n /// @notice The associated DAO managing the permissions of inheriting contracts.\\n IDAO private dao_;\\n\\n /// @notice Initializes the contract by setting the associated DAO.\\n /// @param _dao The associated DAO address.\\n // solhint-disable-next-line func-name-mixedcase\\n function __DaoAuthorizableUpgradeable_init(IDAO _dao) internal onlyInitializing {\\n dao_ = _dao;\\n }\\n\\n /// @notice Returns the DAO contract.\\n /// @return The DAO contract.\\n function dao() public view returns (IDAO) {\\n return dao_;\\n }\\n\\n /// @notice A modifier to make functions on inheriting contracts authorized. Permissions to call the function are checked through the associated DAO's permission manager.\\n /// @param _permissionId The permission identifier required to call the method this modifier is applied to.\\n modifier auth(bytes32 _permissionId) {\\n _auth(dao_, address(this), _msgSender(), _permissionId, _msgData());\\n _;\\n }\\n\\n /// @notice This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain (see [OpenZeppelin's guide about storage gaps](https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps)).\\n uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0x7fac6b01b037ba1cb9d6a22d3f43b0785037dcf496ffb672434d9bf7227d2585\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/auth.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice Thrown if a call is unauthorized in the associated DAO.\\n/// @param dao The associated DAO.\\n/// @param where The context in which the authorization reverted.\\n/// @param who The address (EOA or contract) missing the permission.\\n/// @param permissionId The permission identifier.\\nerror DaoUnauthorized(address dao, address where, address who, bytes32 permissionId);\\n\\n/// @notice A free function checking if a caller is granted permissions on a target contract via a permission identifier that redirects the approval to a `PermissionCondition` if this was specified in the setup.\\n/// @param _where The address of the target contract for which `who` receives permission.\\n/// @param _who The address (EOA or contract) owning the permission.\\n/// @param _permissionId The permission identifier.\\n/// @param _data The optional data passed to the `PermissionCondition` registered.\\n/// @custom:security-contact sirt@aragon.org\\nfunction _auth(\\n IDAO _dao,\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes calldata _data\\n) view {\\n if (!_dao.hasPermission(_where, _who, _permissionId, _data))\\n revert DaoUnauthorized({\\n dao: address(_dao),\\n where: _where,\\n who: _who,\\n permissionId: _permissionId\\n });\\n}\\n\",\"keccak256\":\"0x878764b4f87fe0651fb3798fb9cb87c952f8c6caf6ae79c7f09de84df6c00298\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/IPlugin.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IPlugin\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the traits of a plugin.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IPlugin {\\n enum PluginType {\\n UUPS,\\n Cloneable,\\n Constructable\\n }\\n\\n /// @notice Returns the plugin's type\\n function pluginType() external view returns (PluginType);\\n}\\n\",\"keccak256\":\"0xc57cd0d10b6380ab7f54c713a509e88fd8f4ad9288313a0e8e12b8887817ddfe\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/PluginUUPSUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {UUPSUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\\\";\\nimport {IERC1822ProxiableUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport {ERC165Upgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\\\";\\n\\nimport {IProtocolVersion} from \\\"../utils/versioning/IProtocolVersion.sol\\\";\\nimport {ProtocolVersion} from \\\"../utils/versioning/ProtocolVersion.sol\\\";\\nimport {DaoAuthorizableUpgradeable} from \\\"../permission/auth/DaoAuthorizableUpgradeable.sol\\\";\\nimport {IDAO} from \\\"../dao/IDAO.sol\\\";\\nimport {IPlugin} from \\\"./IPlugin.sol\\\";\\n\\n/// @title PluginUUPSUpgradeable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract, upgradeable contract to inherit from when creating a plugin being deployed via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract PluginUUPSUpgradeable is\\n IPlugin,\\n ERC165Upgradeable,\\n UUPSUpgradeable,\\n DaoAuthorizableUpgradeable,\\n ProtocolVersion\\n{\\n // NOTE: When adding new state variables to the contract, the size of `_gap` has to be adapted below as well.\\n address public target;\\n\\n /// @dev Emitted each time the Target is set.\\n event TargetSet(address indexed previousTarget, address indexed newTarget);\\n\\n /// @notice Disables the initializers on the implementation contract to prevent it from being left uninitialized.\\n /// @custom:oz-upgrades-unsafe-allow constructor\\n constructor() {\\n _disableInitializers();\\n }\\n\\n /// @inheritdoc IPlugin\\n function pluginType() public pure override returns (PluginType) {\\n return PluginType.UUPS;\\n }\\n\\n /// @notice The ID of the permission required to call the `_authorizeUpgrade` function.\\n bytes32 public constant UPGRADE_PLUGIN_PERMISSION_ID = keccak256(\\\"UPGRADE_PLUGIN_PERMISSION\\\");\\n\\n /// @notice Initializes the plugin by storing the associated DAO.\\n /// @param _dao The DAO contract.\\n // solhint-disable-next-line func-name-mixedcase\\n function __PluginUUPSUpgradeable_init(IDAO _dao) internal virtual onlyInitializing {\\n __DaoAuthorizableUpgradeable_init(_dao);\\n }\\n\\n /// @dev Sets the target to a new target (`newTarget`).\\n /// @notice Can only be called by the current owner. TODO\\n function setTarget(address _target) public {\\n address previousTarget = target;\\n target = _target;\\n emit TargetSet(previousTarget, _target);\\n }\\n\\n /// @notice Checks if an interface is supported by this or its parent contract.\\n /// @param _interfaceId The ID of the interface.\\n /// @return Returns `true` if the interface is supported.\\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\\n return\\n _interfaceId == type(IPlugin).interfaceId ||\\n _interfaceId == type(IProtocolVersion).interfaceId ||\\n _interfaceId == type(IERC1822ProxiableUpgradeable).interfaceId ||\\n super.supportsInterface(_interfaceId);\\n }\\n\\n /// @notice Returns the address of the implementation contract in the [proxy storage slot](https://eips.ethereum.org/EIPS/eip-1967) slot the [UUPS proxy](https://eips.ethereum.org/EIPS/eip-1822) is pointing to.\\n /// @return The address of the implementation contract.\\n function implementation() public view returns (address) {\\n return _getImplementation();\\n }\\n\\n /// @notice Forwards the actions to the currently set `target` for the execution.\\n /// @param _callId Identifier for this execution.\\n /// @param _actions actions that will be eventually called.\\n /// @param _allowFailureMap Bitmap-encoded number. TODO:\\n /// @return execResults address of the implementation contract.\\n /// @return failureMap address of the implementation contract.\\n function _execute(\\n bytes32 _callId,\\n IDAO.Action[] calldata _actions,\\n uint256 _allowFailureMap\\n ) internal virtual returns (bytes[] memory execResults, uint256 failureMap) {\\n (execResults, failureMap) = IDAO(target).execute(_callId, _actions, _allowFailureMap);\\n }\\n\\n /// @notice Forwards the actions to the `target` for the execution.\\n /// @param _target Forwards the actions to the specific target.\\n /// @param _callId Identifier for this execution.\\n /// @param _actions actions that will be eventually called.\\n /// @param _allowFailureMap Bitmap-encoded number. TODO:\\n /// @return execResults address of the implementation contract.\\n /// @return failureMap address of the implementation contract.\\n function _execute(\\n address _target,\\n bytes32 _callId,\\n IDAO.Action[] calldata _actions,\\n uint256 _allowFailureMap\\n ) internal virtual returns (bytes[] memory execResults, uint256 failureMap) {\\n (execResults, failureMap) = IDAO(_target).execute(_callId, _actions, _allowFailureMap);\\n }\\n\\n /// @notice Internal method authorizing the upgrade of the contract via the [upgradeability mechanism for UUPS proxies](https://docs.openzeppelin.com/contracts/4.x/api/proxy#UUPSUpgradeable) (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\\n /// @dev The caller must have the `UPGRADE_PLUGIN_PERMISSION_ID` permission.\\n function _authorizeUpgrade(\\n address\\n )\\n internal\\n virtual\\n override\\n auth(UPGRADE_PLUGIN_PERMISSION_ID)\\n // solhint-disable-next-line no-empty-blocks\\n {\\n\\n }\\n\\n /// @notice This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain (see [OpenZeppelin's guide about storage gaps](https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps)).\\n uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0xce1d0126b3ae8c8afc887fba9f49b1cc35f84f1c1d5bf4cadee330c7ae15014f\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/setup/IPluginSetup.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {PermissionLib} from \\\"../../permission/PermissionLib.sol\\\";\\n\\n// solhint-disable-next-line no-unused-import\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @title IPluginSetup\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for a plugin setup contract to be consumed by the `PluginSetupProcessor` for plugin installations, updates, and uninstallations.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IPluginSetup {\\n /// @notice The data associated with a prepared setup.\\n /// @param helpers The address array of helpers (contracts or EOAs) associated with this plugin version after the installation or update.\\n /// @param permissions The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the installing or updating DAO.\\n struct PreparedSetupData {\\n address[] helpers;\\n PermissionLib.MultiTargetPermission[] permissions;\\n }\\n\\n /// @notice The payload for plugin updates and uninstallations containing the existing contracts as well as optional data to be consumed by the plugin setup.\\n /// @param plugin The address of the `Plugin`.\\n /// @param currentHelpers The address array of all current helpers (contracts or EOAs) associated with the plugin to update from.\\n /// @param data The bytes-encoded data containing the input parameters for the preparation of update/uninstall as specified in the corresponding ABI on the version's metadata.\\n struct SetupPayload {\\n address plugin;\\n address[] currentHelpers;\\n bytes data;\\n }\\n\\n /// @notice Prepares the installation of a plugin.\\n /// @param _dao The address of the installing DAO.\\n /// @param _data The bytes-encoded data containing the input parameters for the installation as specified in the plugin's build metadata JSON file.\\n /// @return plugin The address of the `Plugin` contract being prepared for installation.\\n /// @return preparedSetupData The deployed plugin's relevant data which consists of helpers and permissions.\\n function prepareInstallation(\\n address _dao,\\n bytes calldata _data\\n ) external returns (address plugin, PreparedSetupData memory preparedSetupData);\\n\\n /// @notice Prepares the update of a plugin.\\n /// @param _dao The address of the updating DAO.\\n /// @param _fromBuild The build number of the plugin to update from.\\n /// @param _payload The relevant data necessary for the `prepareUpdate`. See above.\\n /// @return initData The initialization data to be passed to upgradeable contracts when the update is applied in the `PluginSetupProcessor`.\\n /// @return preparedSetupData The deployed plugin's relevant data which consists of helpers and permissions.\\n function prepareUpdate(\\n address _dao,\\n uint16 _fromBuild,\\n SetupPayload calldata _payload\\n ) external returns (bytes memory initData, PreparedSetupData memory preparedSetupData);\\n\\n /// @notice Prepares the uninstallation of a plugin.\\n /// @param _dao The address of the uninstalling DAO.\\n /// @param _payload The relevant data necessary for the `prepareUninstallation`. See above.\\n /// @return permissions The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the uninstalling DAO.\\n function prepareUninstallation(\\n address _dao,\\n SetupPayload calldata _payload\\n ) external returns (PermissionLib.MultiTargetPermission[] memory permissions);\\n\\n /// @notice Returns the plugin implementation address.\\n /// @return The address of the plugin implementation contract.\\n /// @dev The implementation can be instantiated via the `new` keyword, cloned via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)), or proxied via the UUPS proxy pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0x21c99995208039ac6ace219b6f273243811dc2aa66399e8e499e43ec30b82fa9\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/setup/PluginUpgradeableSetup.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ERC165} from \\\"@openzeppelin/contracts/utils/introspection/ERC165.sol\\\";\\n\\nimport {IProtocolVersion} from \\\"../../utils/versioning/IProtocolVersion.sol\\\";\\nimport {ProtocolVersion} from \\\"../../utils/versioning/ProtocolVersion.sol\\\";\\nimport {IPluginSetup} from \\\"./IPluginSetup.sol\\\";\\n\\n/// @title PluginUpgradeableSetup\\n/// @author Aragon X - 2022-2024\\n/// @notice An abstract contract to inherit from to implement the plugin setup for upgradeable plugins, i.e, `PluginUUPSUpgradeable` being deployed via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822) and [ERC-1967](https://eips.ethereum.org/EIPS/eip-1967)).\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract PluginUpgradeableSetup is ERC165, IPluginSetup, ProtocolVersion {\\n /// @notice The address of the plugin implementation contract for initial block explorer verification\\n /// and to create [ERC-1967](https://eips.ethereum.org/EIPS/eip-1967) UUPS proxies from.\\n address internal immutable IMPLEMENTATION;\\n\\n /// @notice Thrown when an update path is not available, for example, if this is the initial build.\\n /// @param fromBuild The build number to update from.\\n /// @param thisBuild The build number of this setup to update to.\\n error InvalidUpdatePath(uint16 fromBuild, uint16 thisBuild);\\n\\n /// @notice The contract constructor, that setting the plugin implementation contract.\\n /// @param _implementation The address of the plugin implementation contract.\\n constructor(address _implementation) {\\n IMPLEMENTATION = _implementation;\\n }\\n\\n /// @notice Checks if this or the parent contract supports an interface by its ID.\\n /// @param _interfaceId The ID of the interface.\\n /// @return Returns `true` if the interface is supported.\\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\\n return\\n _interfaceId == type(IPluginSetup).interfaceId ||\\n _interfaceId == type(IProtocolVersion).interfaceId ||\\n super.supportsInterface(_interfaceId);\\n }\\n\\n /// @inheritdoc IPluginSetup\\n function implementation() public view returns (address) {\\n return IMPLEMENTATION;\\n }\\n}\\n\",\"keccak256\":\"0x2842d919d1ecb4fbeb40953128c3da3b36dcf6e91255089e987c2f11ff8d061e\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/deployment/ProxyLib.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ERC1967Proxy} from \\\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol\\\";\\nimport {Clones} from \\\"@openzeppelin/contracts/proxy/Clones.sol\\\";\\nimport {Address} from \\\"@openzeppelin/contracts/utils/Address.sol\\\";\\n\\n/// @title ProxyLib\\n/// @author Aragon X - 2024\\n/// @notice A library containing methods for the deployment of proxies via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)) and minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)).\\n/// @custom:security-contact sirt@aragon.org\\nlibrary ProxyLib {\\n using Address for address;\\n using Clones for address;\\n\\n /// @notice Creates an [ERC-1967](https://eips.ethereum.org/EIPS/eip-1967) UUPS proxy contract pointing to a logic contract and allows to immediately initialize it.\\n /// @param _logic The logic contract the proxy is pointing to.\\n /// @param _initCalldata The initialization data for this contract.\\n /// @return uupsProxy The address of the UUPS proxy contract created.\\n /// @dev If `_initCalldata` is non-empty, it is used in a delegate call to the `_logic` contract. This will typically be an encoded function call initializing the storage of the proxy (see [OpenZeppelin ERC1967Proxy-constructor](https://docs.openzeppelin.com/contracts/4.x/api/proxy#ERC1967Proxy-constructor-address-bytes-)).\\n function deployUUPSProxy(\\n address _logic,\\n bytes memory _initCalldata\\n ) internal returns (address uupsProxy) {\\n uupsProxy = address(new ERC1967Proxy({_logic: _logic, _data: _initCalldata}));\\n }\\n\\n /// @notice Creates an [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167) minimal proxy contract, also known as clones, pointing to a logic contract and allows to immediately initialize it.\\n /// @param _logic The logic contract the proxy is pointing to.\\n /// @param _initCalldata The initialization data for this contract.\\n /// @return minimalProxy The address of the minimal proxy contract created.\\n /// @dev If `_initCalldata` is non-empty, it is used in a call to the clone contract. This will typically be an encoded function call initializing the storage of the contract.\\n function deployMinimalProxy(\\n address _logic,\\n bytes memory _initCalldata\\n ) internal returns (address minimalProxy) {\\n minimalProxy = _logic.clone();\\n if (_initCalldata.length > 0) {\\n minimalProxy.functionCall({data: _initCalldata});\\n }\\n }\\n}\\n\",\"keccak256\":\"0xef0d1790dfa026381c021daa2ec7267357497f58cd4a2fa5c64e72e0dea95acc\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/IProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IProtocolVersion\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the semantic Aragon OSx protocol version number.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IProtocolVersion {\\n /// @notice Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\\n /// @return _version Returns the semantic Aragon OSx protocol version number.\\n /// @dev This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\\n function protocolVersion() external view returns (uint8[3] memory _version);\\n}\\n\",\"keccak256\":\"0x00a4da654d21dc1bdadbdc8bd54bb86c378c56f85e461ccc31303628ea621361\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/ProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IProtocolVersion} from \\\"./IProtocolVersion.sol\\\";\\n\\n/// @title ProtocolVersion\\n/// @author Aragon X - 2023\\n/// @notice An abstract, stateless, non-upgradeable contract providing the current Aragon OSx protocol version number.\\n/// @dev Do not add any new variables to this contract that would shift down storage in the inheritance chain.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract ProtocolVersion is IProtocolVersion {\\n // IMPORTANT: Do not add any storage variable, see the above notice.\\n\\n /// @inheritdoc IProtocolVersion\\n function protocolVersion() public pure returns (uint8[3] memory) {\\n return [1, 4, 0];\\n }\\n}\\n\",\"keccak256\":\"0x3975c937be935f687c6b6b8f379071232681e98cf04b175d72781b819ea52bdb\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"errors":{"InvalidUpdatePath(uint16,uint16)":[{"notice":"Thrown when an update path is not available, for example, if this is the initial build."}]},"kind":"user","methods":{"implementation()":{"notice":"Returns the plugin implementation address."},"prepareInstallation(address,bytes)":{"notice":"Prepares the installation of a plugin."},"prepareUninstallation(address,(address,address[],bytes))":{"notice":"Prepares the uninstallation of a plugin."},"prepareUpdate(address,uint16,(address,address[],bytes))":{"notice":"Prepares the update of a plugin."},"protocolVersion()":{"notice":"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with."},"supportsInterface(bytes4)":{"notice":"Checks if this or the parent contract supports an interface by its ID."}},"notice":"A mock plugin setup of an upgradeable plugin to be deployed via the UUPS pattern. v1.3 (Release 1, Build 3)","version":1}}},"src/permission/PermissionLib.sol":{"PermissionLib":{"abi":[{"inputs":[],"name":"NO_CONDITION","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"devdoc":{"author":"Aragon X - 2021-2023","custom:security-contact":"sirt@aragon.org","kind":"dev","methods":{},"title":"PermissionLib","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"6075610038600b82828239805160001a607314602b57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe730000000000000000000000000000000000000000301460806040526004361060335760003560e01c80636dd02a5b146038575b600080fd5b603f600081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f3fea164736f6c6343000811000a","opcodes":"PUSH1 0x75 PUSH2 0x38 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2B JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH1 0x33 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6DD02A5B EQ PUSH1 0x38 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3F PUSH1 0x0 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"243:1810:33:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;243:1810:33;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@NO_CONDITION_3789":{"entryPoint":null,"id":3789,"parameterSlots":0,"returnSlots":0},"abi_encode_tuple_t_address__to_t_address__fromStack_library_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:250:50","statements":[{"nodeType":"YulBlock","src":"6:3:50","statements":[]},{"body":{"nodeType":"YulBlock","src":"123:125:50","statements":[{"nodeType":"YulAssignment","src":"133:26:50","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"145:9:50"},{"kind":"number","nodeType":"YulLiteral","src":"156:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"141:3:50"},"nodeType":"YulFunctionCall","src":"141:18:50"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"133:4:50"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"175:9:50"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"190:6:50"},{"kind":"number","nodeType":"YulLiteral","src":"198:42:50","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"186:3:50"},"nodeType":"YulFunctionCall","src":"186:55:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"168:6:50"},"nodeType":"YulFunctionCall","src":"168:74:50"},"nodeType":"YulExpressionStatement","src":"168:74:50"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_library_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"92:9:50","type":""},{"name":"value0","nodeType":"YulTypedName","src":"103:6:50","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"114:4:50","type":""}],"src":"14:234:50"}]},"contents":"{\n { }\n function abi_encode_tuple_t_address__to_t_address__fromStack_library_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n}","id":50,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"730000000000000000000000000000000000000000301460806040526004361060335760003560e01c80636dd02a5b146038575b600080fd5b603f600081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f3fea164736f6c6343000811000a","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH1 0x33 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6DD02A5B EQ PUSH1 0x38 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3F PUSH1 0x0 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"243:1810:33:-:0;;;;;;;;;;;;;;;;;;;;;;;;355:49;;402:1;355:49;;;;;198:42:50;186:55;;;168:74;;156:2;141:18;355:49:33;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"23400","executionCost":"106","totalCost":"23506"},"external":{"NO_CONDITION()":"154"}},"methodIdentifiers":{"NO_CONDITION()":"6dd02a5b"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"NO_CONDITION\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Aragon X - 2021-2023\",\"custom:security-contact\":\"sirt@aragon.org\",\"kind\":\"dev\",\"methods\":{},\"title\":\"PermissionLib\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"NO_CONDITION()\":{\"notice\":\"A constant expressing that no condition is applied to a permission.\"}},\"notice\":\"A library containing objects for permission processing.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/permission/PermissionLib.sol\":\"PermissionLib\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"src/permission/PermissionLib.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title PermissionLib\\n/// @author Aragon X - 2021-2023\\n/// @notice A library containing objects for permission processing.\\n/// @custom:security-contact sirt@aragon.org\\nlibrary PermissionLib {\\n /// @notice A constant expressing that no condition is applied to a permission.\\n address public constant NO_CONDITION = address(0);\\n\\n /// @notice The types of permission operations available in the `PermissionManager`.\\n /// @param Grant The grant operation setting a permission without a condition.\\n /// @param Revoke The revoke operation removing a permission (that was granted with or without a condition).\\n /// @param GrantWithCondition The grant operation setting a permission with a condition.\\n enum Operation {\\n Grant,\\n Revoke,\\n GrantWithCondition\\n }\\n\\n /// @notice A struct containing the information for a permission to be applied on a single target contract without a condition.\\n /// @param operation The permission operation type.\\n /// @param who The address (EOA or contract) receiving the permission.\\n /// @param permissionId The permission identifier.\\n struct SingleTargetPermission {\\n Operation operation;\\n address who;\\n bytes32 permissionId;\\n }\\n\\n /// @notice A struct containing the information for a permission to be applied on multiple target contracts, optionally, with a condition.\\n /// @param operation The permission operation type.\\n /// @param where The address of the target contract for which `who` receives permission.\\n /// @param who The address (EOA or contract) receiving the permission.\\n /// @param condition The `PermissionCondition` that will be asked for authorization on calls connected to the specified permission identifier.\\n /// @param permissionId The permission identifier.\\n struct MultiTargetPermission {\\n Operation operation;\\n address where;\\n address who;\\n address condition;\\n bytes32 permissionId;\\n }\\n}\\n\",\"keccak256\":\"0x470faf3c4891ebc6420ef6cc09f6098917568ccc79268c90954d1478199b6097\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{"NO_CONDITION()":{"notice":"A constant expressing that no condition is applied to a permission."}},"notice":"A library containing objects for permission processing.","version":1}}},"src/permission/auth/DaoAuthorizable.sol":{"DaoAuthorizable":{"abi":[{"inputs":[],"name":"dao","outputs":[{"internalType":"contract IDAO","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"devdoc":{"author":"Aragon X - 2022-2023","custom:security-contact":"sirt@aragon.org","kind":"dev","methods":{"constructor":{"params":{"_dao":"The associated DAO address."}},"dao()":{"returns":{"_0":"The DAO contract."}}},"title":"DaoAuthorizable","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"dao()":"4162169f"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"dao\",\"outputs\":[{\"internalType\":\"contract IDAO\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Aragon X - 2022-2023\",\"custom:security-contact\":\"sirt@aragon.org\",\"kind\":\"dev\",\"methods\":{\"constructor\":{\"params\":{\"_dao\":\"The associated DAO address.\"}},\"dao()\":{\"returns\":{\"_0\":\"The DAO contract.\"}}},\"title\":\"DaoAuthorizable\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"constructor\":{\"notice\":\"Constructs the contract by setting the associated DAO.\"},\"dao()\":{\"notice\":\"Returns the DAO contract.\"}},\"notice\":\"An abstract contract providing a meta-transaction compatible modifier for non-upgradeable contracts instantiated via the `new` keyword to authorize function calls through an associated DAO.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/permission/auth/DaoAuthorizable.sol\":\"DaoAuthorizable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n function _contextSuffixLength() internal view virtual returns (uint256) {\\n return 0;\\n }\\n}\\n\",\"keccak256\":\"0xa92e4fa126feb6907daa0513ddd816b2eb91f30a808de54f63c17d0e162c3439\",\"license\":\"MIT\"},\"src/dao/IDAO.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IDAO\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for DAOs within the Aragon App DAO framework.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IDAO {\\n /// @notice The action struct to be consumed by the DAO's `execute` function resulting in an external call.\\n /// @param to The address to call.\\n /// @param value The native token value to be sent with the call.\\n /// @param data The bytes-encoded function selector and calldata for the call.\\n struct Action {\\n address to;\\n uint256 value;\\n bytes data;\\n }\\n\\n /// @notice Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\\n /// @param _where The address of the contract.\\n /// @param _who The address of a EOA or contract to give the permissions.\\n /// @param _permissionId The permission identifier.\\n /// @param _data The optional data passed to the `PermissionCondition` registered.\\n /// @return Returns true if the address has permission, false if not.\\n function hasPermission(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes memory _data\\n ) external view returns (bool);\\n\\n /// @notice Updates the DAO metadata (e.g., an IPFS hash).\\n /// @param _metadata The IPFS hash of the new metadata object.\\n function setMetadata(bytes calldata _metadata) external;\\n\\n /// @notice Emitted when the DAO metadata is updated.\\n /// @param metadata The IPFS hash of the new metadata object.\\n event MetadataSet(bytes metadata);\\n\\n /// @notice Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted.\\n /// @param _callId The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce.\\n /// @param _actions The array of actions.\\n /// @param _allowFailureMap A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @return The array of results obtained from the executed actions in `bytes`.\\n /// @return The resulting failure map containing the actions have actually failed.\\n function execute(\\n bytes32 _callId,\\n Action[] memory _actions,\\n uint256 _allowFailureMap\\n ) external returns (bytes[] memory, uint256);\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param actor The address of the caller.\\n /// @param callId The ID of the call.\\n /// @param actions The array of actions executed.\\n /// @param allowFailureMap The allow failure map encoding which actions are allowed to fail.\\n /// @param failureMap The failure map encoding which actions have failed.\\n /// @param execResults The array with the results of the executed actions.\\n /// @dev The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce.\\n event Executed(\\n address indexed actor,\\n bytes32 callId,\\n Action[] actions,\\n uint256 allowFailureMap,\\n uint256 failureMap,\\n bytes[] execResults\\n );\\n\\n /// @notice Emitted when a standard callback is registered.\\n /// @param interfaceId The ID of the interface.\\n /// @param callbackSelector The selector of the callback function.\\n /// @param magicNumber The magic number to be registered for the callback function selector.\\n event StandardCallbackRegistered(\\n bytes4 interfaceId,\\n bytes4 callbackSelector,\\n bytes4 magicNumber\\n );\\n\\n /// @notice Deposits (native) tokens to the DAO contract with a reference string.\\n /// @param _token The address of the token or address(0) in case of the native token.\\n /// @param _amount The amount of tokens to deposit.\\n /// @param _reference The reference describing the deposit reason.\\n function deposit(address _token, uint256 _amount, string calldata _reference) external payable;\\n\\n /// @notice Emitted when a token deposit has been made to the DAO.\\n /// @param sender The address of the sender.\\n /// @param token The address of the deposited token.\\n /// @param amount The amount of tokens deposited.\\n /// @param _reference The reference describing the deposit reason.\\n event Deposited(\\n address indexed sender,\\n address indexed token,\\n uint256 amount,\\n string _reference\\n );\\n\\n /// @notice Emitted when a native token deposit has been made to the DAO.\\n /// @dev This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).\\n /// @param sender The address of the sender.\\n /// @param amount The amount of native tokens deposited.\\n event NativeTokenDeposited(address sender, uint256 amount);\\n\\n /// @notice Setter for the trusted forwarder verifying the meta transaction.\\n /// @param _trustedForwarder The trusted forwarder address.\\n function setTrustedForwarder(address _trustedForwarder) external;\\n\\n /// @notice Getter for the trusted forwarder verifying the meta transaction.\\n /// @return The trusted forwarder address.\\n function getTrustedForwarder() external view returns (address);\\n\\n /// @notice Emitted when a new TrustedForwarder is set on the DAO.\\n /// @param forwarder the new forwarder address.\\n event TrustedForwarderSet(address forwarder);\\n\\n /// @notice Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\\n /// @param _hash The hash of the data to be signed.\\n /// @param _signature The signature byte array associated with `_hash`.\\n /// @return Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not.\\n function isValidSignature(bytes32 _hash, bytes memory _signature) external returns (bytes4);\\n\\n /// @notice Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\\n /// @param _interfaceId The ID of the interface.\\n /// @param _callbackSelector The selector of the callback function.\\n /// @param _magicNumber The magic number to be registered for the function signature.\\n function registerStandardCallback(\\n bytes4 _interfaceId,\\n bytes4 _callbackSelector,\\n bytes4 _magicNumber\\n ) external;\\n\\n /// @notice Removed function being left here to not corrupt the IDAO interface ID. Any call will revert.\\n /// @dev Introduced in v1.0.0. Removed in v1.4.0.\\n function setSignatureValidator(address) external;\\n}\\n\",\"keccak256\":\"0xb7f615523c26de042edce98731c658f44a1edb2464387ac1b642c4c69f57128e\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/DaoAuthorizable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {Context} from \\\"@openzeppelin/contracts/utils/Context.sol\\\";\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\nimport {_auth} from \\\"./auth.sol\\\";\\n\\n/// @title DaoAuthorizable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract contract providing a meta-transaction compatible modifier for non-upgradeable contracts instantiated via the `new` keyword to authorize function calls through an associated DAO.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract DaoAuthorizable is Context {\\n /// @notice The associated DAO managing the permissions of inheriting contracts.\\n IDAO private immutable DAO;\\n\\n /// @notice Constructs the contract by setting the associated DAO.\\n /// @param _dao The associated DAO address.\\n constructor(IDAO _dao) {\\n DAO = _dao;\\n }\\n\\n /// @notice Returns the DAO contract.\\n /// @return The DAO contract.\\n function dao() public view returns (IDAO) {\\n return DAO;\\n }\\n\\n /// @notice A modifier to make functions on inheriting contracts authorized. Permissions to call the function are checked through the associated DAO's permission manager.\\n /// @param _permissionId The permission identifier required to call the method this modifier is applied to.\\n modifier auth(bytes32 _permissionId) {\\n _auth(DAO, address(this), _msgSender(), _permissionId, _msgData());\\n _;\\n }\\n}\\n\",\"keccak256\":\"0x3d0be91b4f5854ed2d2c51b53fe7ffba58cc968e972015cf60eb3ea100543e64\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/auth.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice Thrown if a call is unauthorized in the associated DAO.\\n/// @param dao The associated DAO.\\n/// @param where The context in which the authorization reverted.\\n/// @param who The address (EOA or contract) missing the permission.\\n/// @param permissionId The permission identifier.\\nerror DaoUnauthorized(address dao, address where, address who, bytes32 permissionId);\\n\\n/// @notice A free function checking if a caller is granted permissions on a target contract via a permission identifier that redirects the approval to a `PermissionCondition` if this was specified in the setup.\\n/// @param _where The address of the target contract for which `who` receives permission.\\n/// @param _who The address (EOA or contract) owning the permission.\\n/// @param _permissionId The permission identifier.\\n/// @param _data The optional data passed to the `PermissionCondition` registered.\\n/// @custom:security-contact sirt@aragon.org\\nfunction _auth(\\n IDAO _dao,\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes calldata _data\\n) view {\\n if (!_dao.hasPermission(_where, _who, _permissionId, _data))\\n revert DaoUnauthorized({\\n dao: address(_dao),\\n where: _where,\\n who: _who,\\n permissionId: _permissionId\\n });\\n}\\n\",\"keccak256\":\"0x878764b4f87fe0651fb3798fb9cb87c952f8c6caf6ae79c7f09de84df6c00298\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{"constructor":{"notice":"Constructs the contract by setting the associated DAO."},"dao()":{"notice":"Returns the DAO contract."}},"notice":"An abstract contract providing a meta-transaction compatible modifier for non-upgradeable contracts instantiated via the `new` keyword to authorize function calls through an associated DAO.","version":1}}},"src/permission/auth/DaoAuthorizableUpgradeable.sol":{"DaoAuthorizableUpgradeable":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"inputs":[],"name":"dao","outputs":[{"internalType":"contract IDAO","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"devdoc":{"author":"Aragon X - 2022-2023","custom:security-contact":"sirt@aragon.org","details":"Make sure to call `__DaoAuthorizableUpgradeable_init` during initialization of the inheriting contract.","kind":"dev","methods":{"dao()":{"returns":{"_0":"The DAO contract."}}},"title":"DaoAuthorizableUpgradeable","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"dao()":"4162169f"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"dao\",\"outputs\":[{\"internalType\":\"contract IDAO\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Aragon X - 2022-2023\",\"custom:security-contact\":\"sirt@aragon.org\",\"details\":\"Make sure to call `__DaoAuthorizableUpgradeable_init` during initialization of the inheriting contract.\",\"kind\":\"dev\",\"methods\":{\"dao()\":{\"returns\":{\"_0\":\"The DAO contract.\"}}},\"title\":\"DaoAuthorizableUpgradeable\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"dao()\":{\"notice\":\"Returns the DAO contract.\"}},\"notice\":\"An abstract contract providing a meta-transaction compatible modifier for upgradeable or cloneable contracts to authorize function calls through an associated DAO.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/permission/auth/DaoAuthorizableUpgradeable.sol\":\"DaoAuthorizableUpgradeable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n function __Context_init() internal onlyInitializing {\\n }\\n\\n function __Context_init_unchained() internal onlyInitializing {\\n }\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n function _contextSuffixLength() internal view virtual returns (uint256) {\\n return 0;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x75097e35253e7fb282ee4d7f27a80eaacfa759923185bf17302a89cbc059c5ef\",\"license\":\"MIT\"},\"src/dao/IDAO.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IDAO\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for DAOs within the Aragon App DAO framework.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IDAO {\\n /// @notice The action struct to be consumed by the DAO's `execute` function resulting in an external call.\\n /// @param to The address to call.\\n /// @param value The native token value to be sent with the call.\\n /// @param data The bytes-encoded function selector and calldata for the call.\\n struct Action {\\n address to;\\n uint256 value;\\n bytes data;\\n }\\n\\n /// @notice Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\\n /// @param _where The address of the contract.\\n /// @param _who The address of a EOA or contract to give the permissions.\\n /// @param _permissionId The permission identifier.\\n /// @param _data The optional data passed to the `PermissionCondition` registered.\\n /// @return Returns true if the address has permission, false if not.\\n function hasPermission(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes memory _data\\n ) external view returns (bool);\\n\\n /// @notice Updates the DAO metadata (e.g., an IPFS hash).\\n /// @param _metadata The IPFS hash of the new metadata object.\\n function setMetadata(bytes calldata _metadata) external;\\n\\n /// @notice Emitted when the DAO metadata is updated.\\n /// @param metadata The IPFS hash of the new metadata object.\\n event MetadataSet(bytes metadata);\\n\\n /// @notice Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted.\\n /// @param _callId The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce.\\n /// @param _actions The array of actions.\\n /// @param _allowFailureMap A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @return The array of results obtained from the executed actions in `bytes`.\\n /// @return The resulting failure map containing the actions have actually failed.\\n function execute(\\n bytes32 _callId,\\n Action[] memory _actions,\\n uint256 _allowFailureMap\\n ) external returns (bytes[] memory, uint256);\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param actor The address of the caller.\\n /// @param callId The ID of the call.\\n /// @param actions The array of actions executed.\\n /// @param allowFailureMap The allow failure map encoding which actions are allowed to fail.\\n /// @param failureMap The failure map encoding which actions have failed.\\n /// @param execResults The array with the results of the executed actions.\\n /// @dev The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce.\\n event Executed(\\n address indexed actor,\\n bytes32 callId,\\n Action[] actions,\\n uint256 allowFailureMap,\\n uint256 failureMap,\\n bytes[] execResults\\n );\\n\\n /// @notice Emitted when a standard callback is registered.\\n /// @param interfaceId The ID of the interface.\\n /// @param callbackSelector The selector of the callback function.\\n /// @param magicNumber The magic number to be registered for the callback function selector.\\n event StandardCallbackRegistered(\\n bytes4 interfaceId,\\n bytes4 callbackSelector,\\n bytes4 magicNumber\\n );\\n\\n /// @notice Deposits (native) tokens to the DAO contract with a reference string.\\n /// @param _token The address of the token or address(0) in case of the native token.\\n /// @param _amount The amount of tokens to deposit.\\n /// @param _reference The reference describing the deposit reason.\\n function deposit(address _token, uint256 _amount, string calldata _reference) external payable;\\n\\n /// @notice Emitted when a token deposit has been made to the DAO.\\n /// @param sender The address of the sender.\\n /// @param token The address of the deposited token.\\n /// @param amount The amount of tokens deposited.\\n /// @param _reference The reference describing the deposit reason.\\n event Deposited(\\n address indexed sender,\\n address indexed token,\\n uint256 amount,\\n string _reference\\n );\\n\\n /// @notice Emitted when a native token deposit has been made to the DAO.\\n /// @dev This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).\\n /// @param sender The address of the sender.\\n /// @param amount The amount of native tokens deposited.\\n event NativeTokenDeposited(address sender, uint256 amount);\\n\\n /// @notice Setter for the trusted forwarder verifying the meta transaction.\\n /// @param _trustedForwarder The trusted forwarder address.\\n function setTrustedForwarder(address _trustedForwarder) external;\\n\\n /// @notice Getter for the trusted forwarder verifying the meta transaction.\\n /// @return The trusted forwarder address.\\n function getTrustedForwarder() external view returns (address);\\n\\n /// @notice Emitted when a new TrustedForwarder is set on the DAO.\\n /// @param forwarder the new forwarder address.\\n event TrustedForwarderSet(address forwarder);\\n\\n /// @notice Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\\n /// @param _hash The hash of the data to be signed.\\n /// @param _signature The signature byte array associated with `_hash`.\\n /// @return Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not.\\n function isValidSignature(bytes32 _hash, bytes memory _signature) external returns (bytes4);\\n\\n /// @notice Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\\n /// @param _interfaceId The ID of the interface.\\n /// @param _callbackSelector The selector of the callback function.\\n /// @param _magicNumber The magic number to be registered for the function signature.\\n function registerStandardCallback(\\n bytes4 _interfaceId,\\n bytes4 _callbackSelector,\\n bytes4 _magicNumber\\n ) external;\\n\\n /// @notice Removed function being left here to not corrupt the IDAO interface ID. Any call will revert.\\n /// @dev Introduced in v1.0.0. Removed in v1.4.0.\\n function setSignatureValidator(address) external;\\n}\\n\",\"keccak256\":\"0xb7f615523c26de042edce98731c658f44a1edb2464387ac1b642c4c69f57128e\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/DaoAuthorizableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ContextUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\\\";\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\nimport {_auth} from \\\"./auth.sol\\\";\\n\\n/// @title DaoAuthorizableUpgradeable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract contract providing a meta-transaction compatible modifier for upgradeable or cloneable contracts to authorize function calls through an associated DAO.\\n/// @dev Make sure to call `__DaoAuthorizableUpgradeable_init` during initialization of the inheriting contract.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract DaoAuthorizableUpgradeable is ContextUpgradeable {\\n /// @notice The associated DAO managing the permissions of inheriting contracts.\\n IDAO private dao_;\\n\\n /// @notice Initializes the contract by setting the associated DAO.\\n /// @param _dao The associated DAO address.\\n // solhint-disable-next-line func-name-mixedcase\\n function __DaoAuthorizableUpgradeable_init(IDAO _dao) internal onlyInitializing {\\n dao_ = _dao;\\n }\\n\\n /// @notice Returns the DAO contract.\\n /// @return The DAO contract.\\n function dao() public view returns (IDAO) {\\n return dao_;\\n }\\n\\n /// @notice A modifier to make functions on inheriting contracts authorized. Permissions to call the function are checked through the associated DAO's permission manager.\\n /// @param _permissionId The permission identifier required to call the method this modifier is applied to.\\n modifier auth(bytes32 _permissionId) {\\n _auth(dao_, address(this), _msgSender(), _permissionId, _msgData());\\n _;\\n }\\n\\n /// @notice This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain (see [OpenZeppelin's guide about storage gaps](https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps)).\\n uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0x7fac6b01b037ba1cb9d6a22d3f43b0785037dcf496ffb672434d9bf7227d2585\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/auth.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice Thrown if a call is unauthorized in the associated DAO.\\n/// @param dao The associated DAO.\\n/// @param where The context in which the authorization reverted.\\n/// @param who The address (EOA or contract) missing the permission.\\n/// @param permissionId The permission identifier.\\nerror DaoUnauthorized(address dao, address where, address who, bytes32 permissionId);\\n\\n/// @notice A free function checking if a caller is granted permissions on a target contract via a permission identifier that redirects the approval to a `PermissionCondition` if this was specified in the setup.\\n/// @param _where The address of the target contract for which `who` receives permission.\\n/// @param _who The address (EOA or contract) owning the permission.\\n/// @param _permissionId The permission identifier.\\n/// @param _data The optional data passed to the `PermissionCondition` registered.\\n/// @custom:security-contact sirt@aragon.org\\nfunction _auth(\\n IDAO _dao,\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes calldata _data\\n) view {\\n if (!_dao.hasPermission(_where, _who, _permissionId, _data))\\n revert DaoUnauthorized({\\n dao: address(_dao),\\n where: _where,\\n who: _who,\\n permissionId: _permissionId\\n });\\n}\\n\",\"keccak256\":\"0x878764b4f87fe0651fb3798fb9cb87c952f8c6caf6ae79c7f09de84df6c00298\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[{"astId":372,"contract":"src/permission/auth/DaoAuthorizableUpgradeable.sol:DaoAuthorizableUpgradeable","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":375,"contract":"src/permission/auth/DaoAuthorizableUpgradeable.sol:DaoAuthorizableUpgradeable","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":1051,"contract":"src/permission/auth/DaoAuthorizableUpgradeable.sol:DaoAuthorizableUpgradeable","label":"__gap","offset":0,"slot":"1","type":"t_array(t_uint256)50_storage"},{"astId":3887,"contract":"src/permission/auth/DaoAuthorizableUpgradeable.sol:DaoAuthorizableUpgradeable","label":"dao_","offset":0,"slot":"51","type":"t_contract(IDAO)2538"},{"astId":3936,"contract":"src/permission/auth/DaoAuthorizableUpgradeable.sol:DaoAuthorizableUpgradeable","label":"__gap","offset":0,"slot":"52","type":"t_array(t_uint256)49_storage"}],"types":{"t_array(t_uint256)49_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[49]","numberOfBytes":"1568"},"t_array(t_uint256)50_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[50]","numberOfBytes":"1600"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_contract(IDAO)2538":{"encoding":"inplace","label":"contract IDAO","numberOfBytes":"20"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"kind":"user","methods":{"dao()":{"notice":"Returns the DAO contract."}},"notice":"An abstract contract providing a meta-transaction compatible modifier for upgradeable or cloneable contracts to authorize function calls through an associated DAO.","version":1}}},"src/plugin/IPlugin.sol":{"IPlugin":{"abi":[{"inputs":[],"name":"pluginType","outputs":[{"internalType":"enum IPlugin.PluginType","name":"","type":"uint8"}],"stateMutability":"view","type":"function"}],"devdoc":{"author":"Aragon X - 2022-2023","custom:security-contact":"sirt@aragon.org","kind":"dev","methods":{},"title":"IPlugin","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"pluginType()":"41de6830"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"pluginType\",\"outputs\":[{\"internalType\":\"enum IPlugin.PluginType\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Aragon X - 2022-2023\",\"custom:security-contact\":\"sirt@aragon.org\",\"kind\":\"dev\",\"methods\":{},\"title\":\"IPlugin\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"pluginType()\":{\"notice\":\"Returns the plugin's type\"}},\"notice\":\"An interface defining the traits of a plugin.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/plugin/IPlugin.sol\":\"IPlugin\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"src/plugin/IPlugin.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IPlugin\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the traits of a plugin.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IPlugin {\\n enum PluginType {\\n UUPS,\\n Cloneable,\\n Constructable\\n }\\n\\n /// @notice Returns the plugin's type\\n function pluginType() external view returns (PluginType);\\n}\\n\",\"keccak256\":\"0xc57cd0d10b6380ab7f54c713a509e88fd8f4ad9288313a0e8e12b8887817ddfe\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{"pluginType()":{"notice":"Returns the plugin's type"}},"notice":"An interface defining the traits of a plugin.","version":1}}},"src/plugin/Plugin.sol":{"Plugin":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousTarget","type":"address"},{"indexed":true,"internalType":"address","name":"newTarget","type":"address"}],"name":"TargetSet","type":"event"},{"inputs":[],"name":"dao","outputs":[{"internalType":"contract IDAO","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pluginType","outputs":[{"internalType":"enum IPlugin.PluginType","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"protocolVersion","outputs":[{"internalType":"uint8[3]","name":"","type":"uint8[3]"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_target","type":"address"}],"name":"setTarget","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"target","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"devdoc":{"author":"Aragon X - 2022-2023","custom:security-contact":"sirt@aragon.org","events":{"TargetSet(address,address)":{"details":"Emitted each time the Target is set."}},"kind":"dev","methods":{"constructor":{"params":{"_dao":"The DAO contract."}},"dao()":{"returns":{"_0":"The DAO contract."}},"protocolVersion()":{"details":"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.","returns":{"_0":"Returns the semantic Aragon OSx protocol version number."}},"setTarget(address)":{"details":"Sets the target to a new target (`newTarget`)."},"supportsInterface(bytes4)":{"params":{"_interfaceId":"The ID of the interface."},"returns":{"_0":"Returns `true` if the interface is supported."}}},"title":"Plugin","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"dao()":"4162169f","pluginType()":"41de6830","protocolVersion()":"2ae9c600","setTarget(address)":"776d1a01","supportsInterface(bytes4)":"01ffc9a7","target()":"d4b83992"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousTarget\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newTarget\",\"type\":\"address\"}],\"name\":\"TargetSet\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"dao\",\"outputs\":[{\"internalType\":\"contract IDAO\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pluginType\",\"outputs\":[{\"internalType\":\"enum IPlugin.PluginType\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"protocolVersion\",\"outputs\":[{\"internalType\":\"uint8[3]\",\"name\":\"\",\"type\":\"uint8[3]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_target\",\"type\":\"address\"}],\"name\":\"setTarget\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"target\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Aragon X - 2022-2023\",\"custom:security-contact\":\"sirt@aragon.org\",\"events\":{\"TargetSet(address,address)\":{\"details\":\"Emitted each time the Target is set.\"}},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"params\":{\"_dao\":\"The DAO contract.\"}},\"dao()\":{\"returns\":{\"_0\":\"The DAO contract.\"}},\"protocolVersion()\":{\"details\":\"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\",\"returns\":{\"_0\":\"Returns the semantic Aragon OSx protocol version number.\"}},\"setTarget(address)\":{\"details\":\"Sets the target to a new target (`newTarget`).\"},\"supportsInterface(bytes4)\":{\"params\":{\"_interfaceId\":\"The ID of the interface.\"},\"returns\":{\"_0\":\"Returns `true` if the interface is supported.\"}}},\"title\":\"Plugin\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"constructor\":{\"notice\":\"Constructs the plugin by storing the associated DAO.\"},\"dao()\":{\"notice\":\"Returns the DAO contract.\"},\"pluginType()\":{\"notice\":\"Returns the plugin's type\"},\"protocolVersion()\":{\"notice\":\"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\"},\"setTarget(address)\":{\"notice\":\"Can only be called by the current owner. TODO\"},\"supportsInterface(bytes4)\":{\"notice\":\"Checks if this or the parent contract supports an interface by its ID.\"}},\"notice\":\"An abstract, non-upgradeable contract to inherit from when creating a plugin being deployed via the `new` keyword.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/plugin/Plugin.sol\":\"Plugin\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n function _contextSuffixLength() internal view virtual returns (uint256) {\\n return 0;\\n }\\n}\\n\",\"keccak256\":\"0xa92e4fa126feb6907daa0513ddd816b2eb91f30a808de54f63c17d0e162c3439\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165 is IERC165 {\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165).interfaceId;\\n }\\n}\\n\",\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"src/dao/IDAO.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IDAO\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for DAOs within the Aragon App DAO framework.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IDAO {\\n /// @notice The action struct to be consumed by the DAO's `execute` function resulting in an external call.\\n /// @param to The address to call.\\n /// @param value The native token value to be sent with the call.\\n /// @param data The bytes-encoded function selector and calldata for the call.\\n struct Action {\\n address to;\\n uint256 value;\\n bytes data;\\n }\\n\\n /// @notice Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\\n /// @param _where The address of the contract.\\n /// @param _who The address of a EOA or contract to give the permissions.\\n /// @param _permissionId The permission identifier.\\n /// @param _data The optional data passed to the `PermissionCondition` registered.\\n /// @return Returns true if the address has permission, false if not.\\n function hasPermission(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes memory _data\\n ) external view returns (bool);\\n\\n /// @notice Updates the DAO metadata (e.g., an IPFS hash).\\n /// @param _metadata The IPFS hash of the new metadata object.\\n function setMetadata(bytes calldata _metadata) external;\\n\\n /// @notice Emitted when the DAO metadata is updated.\\n /// @param metadata The IPFS hash of the new metadata object.\\n event MetadataSet(bytes metadata);\\n\\n /// @notice Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted.\\n /// @param _callId The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce.\\n /// @param _actions The array of actions.\\n /// @param _allowFailureMap A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @return The array of results obtained from the executed actions in `bytes`.\\n /// @return The resulting failure map containing the actions have actually failed.\\n function execute(\\n bytes32 _callId,\\n Action[] memory _actions,\\n uint256 _allowFailureMap\\n ) external returns (bytes[] memory, uint256);\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param actor The address of the caller.\\n /// @param callId The ID of the call.\\n /// @param actions The array of actions executed.\\n /// @param allowFailureMap The allow failure map encoding which actions are allowed to fail.\\n /// @param failureMap The failure map encoding which actions have failed.\\n /// @param execResults The array with the results of the executed actions.\\n /// @dev The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce.\\n event Executed(\\n address indexed actor,\\n bytes32 callId,\\n Action[] actions,\\n uint256 allowFailureMap,\\n uint256 failureMap,\\n bytes[] execResults\\n );\\n\\n /// @notice Emitted when a standard callback is registered.\\n /// @param interfaceId The ID of the interface.\\n /// @param callbackSelector The selector of the callback function.\\n /// @param magicNumber The magic number to be registered for the callback function selector.\\n event StandardCallbackRegistered(\\n bytes4 interfaceId,\\n bytes4 callbackSelector,\\n bytes4 magicNumber\\n );\\n\\n /// @notice Deposits (native) tokens to the DAO contract with a reference string.\\n /// @param _token The address of the token or address(0) in case of the native token.\\n /// @param _amount The amount of tokens to deposit.\\n /// @param _reference The reference describing the deposit reason.\\n function deposit(address _token, uint256 _amount, string calldata _reference) external payable;\\n\\n /// @notice Emitted when a token deposit has been made to the DAO.\\n /// @param sender The address of the sender.\\n /// @param token The address of the deposited token.\\n /// @param amount The amount of tokens deposited.\\n /// @param _reference The reference describing the deposit reason.\\n event Deposited(\\n address indexed sender,\\n address indexed token,\\n uint256 amount,\\n string _reference\\n );\\n\\n /// @notice Emitted when a native token deposit has been made to the DAO.\\n /// @dev This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).\\n /// @param sender The address of the sender.\\n /// @param amount The amount of native tokens deposited.\\n event NativeTokenDeposited(address sender, uint256 amount);\\n\\n /// @notice Setter for the trusted forwarder verifying the meta transaction.\\n /// @param _trustedForwarder The trusted forwarder address.\\n function setTrustedForwarder(address _trustedForwarder) external;\\n\\n /// @notice Getter for the trusted forwarder verifying the meta transaction.\\n /// @return The trusted forwarder address.\\n function getTrustedForwarder() external view returns (address);\\n\\n /// @notice Emitted when a new TrustedForwarder is set on the DAO.\\n /// @param forwarder the new forwarder address.\\n event TrustedForwarderSet(address forwarder);\\n\\n /// @notice Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\\n /// @param _hash The hash of the data to be signed.\\n /// @param _signature The signature byte array associated with `_hash`.\\n /// @return Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not.\\n function isValidSignature(bytes32 _hash, bytes memory _signature) external returns (bytes4);\\n\\n /// @notice Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\\n /// @param _interfaceId The ID of the interface.\\n /// @param _callbackSelector The selector of the callback function.\\n /// @param _magicNumber The magic number to be registered for the function signature.\\n function registerStandardCallback(\\n bytes4 _interfaceId,\\n bytes4 _callbackSelector,\\n bytes4 _magicNumber\\n ) external;\\n\\n /// @notice Removed function being left here to not corrupt the IDAO interface ID. Any call will revert.\\n /// @dev Introduced in v1.0.0. Removed in v1.4.0.\\n function setSignatureValidator(address) external;\\n}\\n\",\"keccak256\":\"0xb7f615523c26de042edce98731c658f44a1edb2464387ac1b642c4c69f57128e\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/DaoAuthorizable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {Context} from \\\"@openzeppelin/contracts/utils/Context.sol\\\";\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\nimport {_auth} from \\\"./auth.sol\\\";\\n\\n/// @title DaoAuthorizable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract contract providing a meta-transaction compatible modifier for non-upgradeable contracts instantiated via the `new` keyword to authorize function calls through an associated DAO.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract DaoAuthorizable is Context {\\n /// @notice The associated DAO managing the permissions of inheriting contracts.\\n IDAO private immutable DAO;\\n\\n /// @notice Constructs the contract by setting the associated DAO.\\n /// @param _dao The associated DAO address.\\n constructor(IDAO _dao) {\\n DAO = _dao;\\n }\\n\\n /// @notice Returns the DAO contract.\\n /// @return The DAO contract.\\n function dao() public view returns (IDAO) {\\n return DAO;\\n }\\n\\n /// @notice A modifier to make functions on inheriting contracts authorized. Permissions to call the function are checked through the associated DAO's permission manager.\\n /// @param _permissionId The permission identifier required to call the method this modifier is applied to.\\n modifier auth(bytes32 _permissionId) {\\n _auth(DAO, address(this), _msgSender(), _permissionId, _msgData());\\n _;\\n }\\n}\\n\",\"keccak256\":\"0x3d0be91b4f5854ed2d2c51b53fe7ffba58cc968e972015cf60eb3ea100543e64\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/auth.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice Thrown if a call is unauthorized in the associated DAO.\\n/// @param dao The associated DAO.\\n/// @param where The context in which the authorization reverted.\\n/// @param who The address (EOA or contract) missing the permission.\\n/// @param permissionId The permission identifier.\\nerror DaoUnauthorized(address dao, address where, address who, bytes32 permissionId);\\n\\n/// @notice A free function checking if a caller is granted permissions on a target contract via a permission identifier that redirects the approval to a `PermissionCondition` if this was specified in the setup.\\n/// @param _where The address of the target contract for which `who` receives permission.\\n/// @param _who The address (EOA or contract) owning the permission.\\n/// @param _permissionId The permission identifier.\\n/// @param _data The optional data passed to the `PermissionCondition` registered.\\n/// @custom:security-contact sirt@aragon.org\\nfunction _auth(\\n IDAO _dao,\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes calldata _data\\n) view {\\n if (!_dao.hasPermission(_where, _who, _permissionId, _data))\\n revert DaoUnauthorized({\\n dao: address(_dao),\\n where: _where,\\n who: _who,\\n permissionId: _permissionId\\n });\\n}\\n\",\"keccak256\":\"0x878764b4f87fe0651fb3798fb9cb87c952f8c6caf6ae79c7f09de84df6c00298\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/IPlugin.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IPlugin\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the traits of a plugin.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IPlugin {\\n enum PluginType {\\n UUPS,\\n Cloneable,\\n Constructable\\n }\\n\\n /// @notice Returns the plugin's type\\n function pluginType() external view returns (PluginType);\\n}\\n\",\"keccak256\":\"0xc57cd0d10b6380ab7f54c713a509e88fd8f4ad9288313a0e8e12b8887817ddfe\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/Plugin.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ERC165} from \\\"@openzeppelin/contracts/utils/introspection/ERC165.sol\\\";\\n\\nimport {IProtocolVersion} from \\\"../utils/versioning/IProtocolVersion.sol\\\";\\nimport {ProtocolVersion} from \\\"../utils/versioning/ProtocolVersion.sol\\\";\\nimport {DaoAuthorizable} from \\\"../permission/auth/DaoAuthorizable.sol\\\";\\nimport {IDAO} from \\\"../dao/IDAO.sol\\\";\\nimport {IPlugin} from \\\"./IPlugin.sol\\\";\\n\\n/// @title Plugin\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract, non-upgradeable contract to inherit from when creating a plugin being deployed via the `new` keyword.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract Plugin is IPlugin, ERC165, DaoAuthorizable, ProtocolVersion {\\n address public target;\\n\\n /// @dev Emitted each time the Target is set.\\n event TargetSet(address indexed previousTarget, address indexed newTarget);\\n\\n /// @notice Constructs the plugin by storing the associated DAO.\\n /// @param _dao The DAO contract.\\n constructor(IDAO _dao) DaoAuthorizable(_dao) {}\\n\\n /// @inheritdoc IPlugin\\n function pluginType() public pure override returns (PluginType) {\\n return PluginType.Constructable;\\n }\\n\\n /// @dev Sets the target to a new target (`newTarget`).\\n /// @notice Can only be called by the current owner. TODO\\n function setTarget(address _target) public {\\n address previousTarget = target;\\n target = _target;\\n emit TargetSet(previousTarget, _target);\\n }\\n\\n /// @notice Checks if this or the parent contract supports an interface by its ID.\\n /// @param _interfaceId The ID of the interface.\\n /// @return Returns `true` if the interface is supported.\\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\\n return\\n _interfaceId == type(IPlugin).interfaceId ||\\n _interfaceId == type(IProtocolVersion).interfaceId ||\\n super.supportsInterface(_interfaceId);\\n }\\n\\n /// @notice Forwards the actions to the currently set `target` for the execution.\\n /// @param _callId Identifier for this execution.\\n /// @param _actions actions that will be eventually called.\\n /// @param _allowFailureMap Bitmap-encoded number. TODO:\\n /// @return execResults address of the implementation contract.\\n /// @return failureMap address of the implementation contract.\\n function _execute(\\n bytes32 _callId,\\n IDAO.Action[] calldata _actions,\\n uint256 _allowFailureMap\\n ) internal virtual returns (bytes[] memory execResults, uint256 failureMap) {\\n (execResults, failureMap) = IDAO(target).execute(_callId, _actions, _allowFailureMap);\\n }\\n\\n /// @notice Forwards the actions to the `target` for the execution.\\n /// @param _target Forwards the actions to the specific target.\\n /// @param _callId Identifier for this execution.\\n /// @param _actions actions that will be eventually called.\\n /// @param _allowFailureMap Bitmap-encoded number. TODO:\\n /// @return execResults address of the implementation contract.\\n /// @return failureMap address of the implementation contract.\\n function _execute(\\n address _target,\\n bytes32 _callId,\\n IDAO.Action[] calldata _actions,\\n uint256 _allowFailureMap\\n ) internal virtual returns (bytes[] memory execResults, uint256 failureMap) {\\n (execResults, failureMap) = IDAO(_target).execute(_callId, _actions, _allowFailureMap);\\n }\\n}\\n\",\"keccak256\":\"0xaba248693127801c242cb55bdb8625c3f4138009c3e33fa5478c2d09efb309c3\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/IProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IProtocolVersion\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the semantic Aragon OSx protocol version number.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IProtocolVersion {\\n /// @notice Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\\n /// @return _version Returns the semantic Aragon OSx protocol version number.\\n /// @dev This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\\n function protocolVersion() external view returns (uint8[3] memory _version);\\n}\\n\",\"keccak256\":\"0x00a4da654d21dc1bdadbdc8bd54bb86c378c56f85e461ccc31303628ea621361\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/ProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IProtocolVersion} from \\\"./IProtocolVersion.sol\\\";\\n\\n/// @title ProtocolVersion\\n/// @author Aragon X - 2023\\n/// @notice An abstract, stateless, non-upgradeable contract providing the current Aragon OSx protocol version number.\\n/// @dev Do not add any new variables to this contract that would shift down storage in the inheritance chain.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract ProtocolVersion is IProtocolVersion {\\n // IMPORTANT: Do not add any storage variable, see the above notice.\\n\\n /// @inheritdoc IProtocolVersion\\n function protocolVersion() public pure returns (uint8[3] memory) {\\n return [1, 4, 0];\\n }\\n}\\n\",\"keccak256\":\"0x3975c937be935f687c6b6b8f379071232681e98cf04b175d72781b819ea52bdb\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[{"astId":4027,"contract":"src/plugin/Plugin.sol:Plugin","label":"target","offset":0,"slot":"0","type":"t_address"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"}}},"userdoc":{"kind":"user","methods":{"constructor":{"notice":"Constructs the plugin by storing the associated DAO."},"dao()":{"notice":"Returns the DAO contract."},"pluginType()":{"notice":"Returns the plugin's type"},"protocolVersion()":{"notice":"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with."},"setTarget(address)":{"notice":"Can only be called by the current owner. TODO"},"supportsInterface(bytes4)":{"notice":"Checks if this or the parent contract supports an interface by its ID."}},"notice":"An abstract, non-upgradeable contract to inherit from when creating a plugin being deployed via the `new` keyword.","version":1}}},"src/plugin/PluginCloneable.sol":{"PluginCloneable":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousTarget","type":"address"},{"indexed":true,"internalType":"address","name":"newTarget","type":"address"}],"name":"TargetSet","type":"event"},{"inputs":[],"name":"dao","outputs":[{"internalType":"contract IDAO","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pluginType","outputs":[{"internalType":"enum IPlugin.PluginType","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"protocolVersion","outputs":[{"internalType":"uint8[3]","name":"","type":"uint8[3]"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_target","type":"address"}],"name":"setTarget","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"target","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"devdoc":{"author":"Aragon X - 2022-2023","custom:security-contact":"sirt@aragon.org","events":{"TargetSet(address,address)":{"details":"Emitted each time the Target is set."}},"kind":"dev","methods":{"constructor":{"custom:oz-upgrades-unsafe-allow":"constructor"},"dao()":{"returns":{"_0":"The DAO contract."}},"protocolVersion()":{"details":"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.","returns":{"_0":"Returns the semantic Aragon OSx protocol version number."}},"setTarget(address)":{"details":"Sets the target to a new target (`newTarget`)."},"supportsInterface(bytes4)":{"params":{"_interfaceId":"The ID of the interface."},"returns":{"_0":"Returns `true` if the interface is supported."}}},"title":"PluginCloneable","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"dao()":"4162169f","pluginType()":"41de6830","protocolVersion()":"2ae9c600","setTarget(address)":"776d1a01","supportsInterface(bytes4)":"01ffc9a7","target()":"d4b83992"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousTarget\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newTarget\",\"type\":\"address\"}],\"name\":\"TargetSet\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"dao\",\"outputs\":[{\"internalType\":\"contract IDAO\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pluginType\",\"outputs\":[{\"internalType\":\"enum IPlugin.PluginType\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"protocolVersion\",\"outputs\":[{\"internalType\":\"uint8[3]\",\"name\":\"\",\"type\":\"uint8[3]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_target\",\"type\":\"address\"}],\"name\":\"setTarget\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"target\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Aragon X - 2022-2023\",\"custom:security-contact\":\"sirt@aragon.org\",\"events\":{\"TargetSet(address,address)\":{\"details\":\"Emitted each time the Target is set.\"}},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor\"},\"dao()\":{\"returns\":{\"_0\":\"The DAO contract.\"}},\"protocolVersion()\":{\"details\":\"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\",\"returns\":{\"_0\":\"Returns the semantic Aragon OSx protocol version number.\"}},\"setTarget(address)\":{\"details\":\"Sets the target to a new target (`newTarget`).\"},\"supportsInterface(bytes4)\":{\"params\":{\"_interfaceId\":\"The ID of the interface.\"},\"returns\":{\"_0\":\"Returns `true` if the interface is supported.\"}}},\"title\":\"PluginCloneable\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"constructor\":{\"notice\":\"Disables the initializers on the implementation contract to prevent it from being left uninitialized.\"},\"dao()\":{\"notice\":\"Returns the DAO contract.\"},\"pluginType()\":{\"notice\":\"Returns the plugin's type\"},\"protocolVersion()\":{\"notice\":\"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\"},\"setTarget(address)\":{\"notice\":\"Can only be called by the current owner. TODO\"},\"supportsInterface(bytes4)\":{\"notice\":\"Checks if this or the parent contract supports an interface by its ID.\"}},\"notice\":\"An abstract, non-upgradeable contract to inherit from when creating a plugin being deployed via the minimal clones pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)).\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/plugin/PluginCloneable.sol\":\"PluginCloneable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n function __Context_init() internal onlyInitializing {\\n }\\n\\n function __Context_init_unchained() internal onlyInitializing {\\n }\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n function _contextSuffixLength() internal view virtual returns (uint256) {\\n return 0;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x75097e35253e7fb282ee4d7f27a80eaacfa759923185bf17302a89cbc059c5ef\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165Upgradeable.sol\\\";\\nimport {Initializable} from \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165Upgradeable is Initializable, IERC165Upgradeable {\\n function __ERC165_init() internal onlyInitializing {\\n }\\n\\n function __ERC165_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165Upgradeable).interfaceId;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0xd90d7723512df65ae417adaf0801042940f0dabd60039ceeaffe34aa5b238da1\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165Upgradeable {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\"},\"src/dao/IDAO.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IDAO\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for DAOs within the Aragon App DAO framework.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IDAO {\\n /// @notice The action struct to be consumed by the DAO's `execute` function resulting in an external call.\\n /// @param to The address to call.\\n /// @param value The native token value to be sent with the call.\\n /// @param data The bytes-encoded function selector and calldata for the call.\\n struct Action {\\n address to;\\n uint256 value;\\n bytes data;\\n }\\n\\n /// @notice Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\\n /// @param _where The address of the contract.\\n /// @param _who The address of a EOA or contract to give the permissions.\\n /// @param _permissionId The permission identifier.\\n /// @param _data The optional data passed to the `PermissionCondition` registered.\\n /// @return Returns true if the address has permission, false if not.\\n function hasPermission(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes memory _data\\n ) external view returns (bool);\\n\\n /// @notice Updates the DAO metadata (e.g., an IPFS hash).\\n /// @param _metadata The IPFS hash of the new metadata object.\\n function setMetadata(bytes calldata _metadata) external;\\n\\n /// @notice Emitted when the DAO metadata is updated.\\n /// @param metadata The IPFS hash of the new metadata object.\\n event MetadataSet(bytes metadata);\\n\\n /// @notice Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted.\\n /// @param _callId The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce.\\n /// @param _actions The array of actions.\\n /// @param _allowFailureMap A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @return The array of results obtained from the executed actions in `bytes`.\\n /// @return The resulting failure map containing the actions have actually failed.\\n function execute(\\n bytes32 _callId,\\n Action[] memory _actions,\\n uint256 _allowFailureMap\\n ) external returns (bytes[] memory, uint256);\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param actor The address of the caller.\\n /// @param callId The ID of the call.\\n /// @param actions The array of actions executed.\\n /// @param allowFailureMap The allow failure map encoding which actions are allowed to fail.\\n /// @param failureMap The failure map encoding which actions have failed.\\n /// @param execResults The array with the results of the executed actions.\\n /// @dev The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce.\\n event Executed(\\n address indexed actor,\\n bytes32 callId,\\n Action[] actions,\\n uint256 allowFailureMap,\\n uint256 failureMap,\\n bytes[] execResults\\n );\\n\\n /// @notice Emitted when a standard callback is registered.\\n /// @param interfaceId The ID of the interface.\\n /// @param callbackSelector The selector of the callback function.\\n /// @param magicNumber The magic number to be registered for the callback function selector.\\n event StandardCallbackRegistered(\\n bytes4 interfaceId,\\n bytes4 callbackSelector,\\n bytes4 magicNumber\\n );\\n\\n /// @notice Deposits (native) tokens to the DAO contract with a reference string.\\n /// @param _token The address of the token or address(0) in case of the native token.\\n /// @param _amount The amount of tokens to deposit.\\n /// @param _reference The reference describing the deposit reason.\\n function deposit(address _token, uint256 _amount, string calldata _reference) external payable;\\n\\n /// @notice Emitted when a token deposit has been made to the DAO.\\n /// @param sender The address of the sender.\\n /// @param token The address of the deposited token.\\n /// @param amount The amount of tokens deposited.\\n /// @param _reference The reference describing the deposit reason.\\n event Deposited(\\n address indexed sender,\\n address indexed token,\\n uint256 amount,\\n string _reference\\n );\\n\\n /// @notice Emitted when a native token deposit has been made to the DAO.\\n /// @dev This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).\\n /// @param sender The address of the sender.\\n /// @param amount The amount of native tokens deposited.\\n event NativeTokenDeposited(address sender, uint256 amount);\\n\\n /// @notice Setter for the trusted forwarder verifying the meta transaction.\\n /// @param _trustedForwarder The trusted forwarder address.\\n function setTrustedForwarder(address _trustedForwarder) external;\\n\\n /// @notice Getter for the trusted forwarder verifying the meta transaction.\\n /// @return The trusted forwarder address.\\n function getTrustedForwarder() external view returns (address);\\n\\n /// @notice Emitted when a new TrustedForwarder is set on the DAO.\\n /// @param forwarder the new forwarder address.\\n event TrustedForwarderSet(address forwarder);\\n\\n /// @notice Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\\n /// @param _hash The hash of the data to be signed.\\n /// @param _signature The signature byte array associated with `_hash`.\\n /// @return Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not.\\n function isValidSignature(bytes32 _hash, bytes memory _signature) external returns (bytes4);\\n\\n /// @notice Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\\n /// @param _interfaceId The ID of the interface.\\n /// @param _callbackSelector The selector of the callback function.\\n /// @param _magicNumber The magic number to be registered for the function signature.\\n function registerStandardCallback(\\n bytes4 _interfaceId,\\n bytes4 _callbackSelector,\\n bytes4 _magicNumber\\n ) external;\\n\\n /// @notice Removed function being left here to not corrupt the IDAO interface ID. Any call will revert.\\n /// @dev Introduced in v1.0.0. Removed in v1.4.0.\\n function setSignatureValidator(address) external;\\n}\\n\",\"keccak256\":\"0xb7f615523c26de042edce98731c658f44a1edb2464387ac1b642c4c69f57128e\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/DaoAuthorizableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ContextUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\\\";\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\nimport {_auth} from \\\"./auth.sol\\\";\\n\\n/// @title DaoAuthorizableUpgradeable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract contract providing a meta-transaction compatible modifier for upgradeable or cloneable contracts to authorize function calls through an associated DAO.\\n/// @dev Make sure to call `__DaoAuthorizableUpgradeable_init` during initialization of the inheriting contract.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract DaoAuthorizableUpgradeable is ContextUpgradeable {\\n /// @notice The associated DAO managing the permissions of inheriting contracts.\\n IDAO private dao_;\\n\\n /// @notice Initializes the contract by setting the associated DAO.\\n /// @param _dao The associated DAO address.\\n // solhint-disable-next-line func-name-mixedcase\\n function __DaoAuthorizableUpgradeable_init(IDAO _dao) internal onlyInitializing {\\n dao_ = _dao;\\n }\\n\\n /// @notice Returns the DAO contract.\\n /// @return The DAO contract.\\n function dao() public view returns (IDAO) {\\n return dao_;\\n }\\n\\n /// @notice A modifier to make functions on inheriting contracts authorized. Permissions to call the function are checked through the associated DAO's permission manager.\\n /// @param _permissionId The permission identifier required to call the method this modifier is applied to.\\n modifier auth(bytes32 _permissionId) {\\n _auth(dao_, address(this), _msgSender(), _permissionId, _msgData());\\n _;\\n }\\n\\n /// @notice This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain (see [OpenZeppelin's guide about storage gaps](https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps)).\\n uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0x7fac6b01b037ba1cb9d6a22d3f43b0785037dcf496ffb672434d9bf7227d2585\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/auth.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice Thrown if a call is unauthorized in the associated DAO.\\n/// @param dao The associated DAO.\\n/// @param where The context in which the authorization reverted.\\n/// @param who The address (EOA or contract) missing the permission.\\n/// @param permissionId The permission identifier.\\nerror DaoUnauthorized(address dao, address where, address who, bytes32 permissionId);\\n\\n/// @notice A free function checking if a caller is granted permissions on a target contract via a permission identifier that redirects the approval to a `PermissionCondition` if this was specified in the setup.\\n/// @param _where The address of the target contract for which `who` receives permission.\\n/// @param _who The address (EOA or contract) owning the permission.\\n/// @param _permissionId The permission identifier.\\n/// @param _data The optional data passed to the `PermissionCondition` registered.\\n/// @custom:security-contact sirt@aragon.org\\nfunction _auth(\\n IDAO _dao,\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes calldata _data\\n) view {\\n if (!_dao.hasPermission(_where, _who, _permissionId, _data))\\n revert DaoUnauthorized({\\n dao: address(_dao),\\n where: _where,\\n who: _who,\\n permissionId: _permissionId\\n });\\n}\\n\",\"keccak256\":\"0x878764b4f87fe0651fb3798fb9cb87c952f8c6caf6ae79c7f09de84df6c00298\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/IPlugin.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IPlugin\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the traits of a plugin.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IPlugin {\\n enum PluginType {\\n UUPS,\\n Cloneable,\\n Constructable\\n }\\n\\n /// @notice Returns the plugin's type\\n function pluginType() external view returns (PluginType);\\n}\\n\",\"keccak256\":\"0xc57cd0d10b6380ab7f54c713a509e88fd8f4ad9288313a0e8e12b8887817ddfe\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/PluginCloneable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ERC165Upgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\\\";\\n\\nimport {IProtocolVersion} from \\\"../utils/versioning/IProtocolVersion.sol\\\";\\nimport {ProtocolVersion} from \\\"../utils/versioning/ProtocolVersion.sol\\\";\\nimport {DaoAuthorizableUpgradeable} from \\\"../permission/auth/DaoAuthorizableUpgradeable.sol\\\";\\nimport {IDAO} from \\\"../dao/IDAO.sol\\\";\\nimport {IPlugin} from \\\"./IPlugin.sol\\\";\\n\\n/// @title PluginCloneable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract, non-upgradeable contract to inherit from when creating a plugin being deployed via the minimal clones pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)).\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract PluginCloneable is\\n IPlugin,\\n ERC165Upgradeable,\\n DaoAuthorizableUpgradeable,\\n ProtocolVersion\\n{\\n address public target;\\n\\n /// @dev Emitted each time the Target is set.\\n event TargetSet(address indexed previousTarget, address indexed newTarget);\\n\\n /// @notice Disables the initializers on the implementation contract to prevent it from being left uninitialized.\\n /// @custom:oz-upgrades-unsafe-allow constructor\\n constructor() {\\n _disableInitializers();\\n }\\n\\n /// @notice Initializes the plugin by storing the associated DAO.\\n /// @param _dao The DAO contract.\\n // solhint-disable-next-line func-name-mixedcase\\n function __PluginCloneable_init(IDAO _dao) internal virtual onlyInitializing {\\n __DaoAuthorizableUpgradeable_init(_dao);\\n }\\n\\n /// @dev Sets the target to a new target (`newTarget`).\\n /// @notice Can only be called by the current owner. TODO\\n function setTarget(address _target) public {\\n address previousTarget = target;\\n target = _target;\\n emit TargetSet(previousTarget, _target);\\n }\\n\\n /// @inheritdoc IPlugin\\n function pluginType() public pure override returns (PluginType) {\\n return PluginType.Cloneable;\\n }\\n\\n /// @notice Checks if this or the parent contract supports an interface by its ID.\\n /// @param _interfaceId The ID of the interface.\\n /// @return Returns `true` if the interface is supported.\\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\\n return\\n _interfaceId == type(IPlugin).interfaceId ||\\n _interfaceId == type(IProtocolVersion).interfaceId ||\\n super.supportsInterface(_interfaceId);\\n }\\n\\n /// @notice Forwards the actions to the currently set `target` for the execution.\\n /// @param _callId Identifier for this execution.\\n /// @param _actions actions that will be eventually called.\\n /// @param _allowFailureMap Bitmap-encoded number. TODO:\\n /// @return execResults address of the implementation contract.\\n /// @return failureMap address of the implementation contract.\\n function _execute(\\n bytes32 _callId,\\n IDAO.Action[] calldata _actions,\\n uint256 _allowFailureMap\\n ) internal virtual returns (bytes[] memory execResults, uint256 failureMap) {\\n (execResults, failureMap) = IDAO(target).execute(_callId, _actions, _allowFailureMap);\\n }\\n\\n /// @notice Forwards the actions to the `target` for the execution.\\n /// @param _target Forwards the actions to the specific target.\\n /// @param _callId Identifier for this execution.\\n /// @param _actions actions that will be eventually called.\\n /// @param _allowFailureMap Bitmap-encoded number. TODO:\\n /// @return execResults address of the implementation contract.\\n /// @return failureMap address of the implementation contract.\\n function _execute(\\n address _target,\\n bytes32 _callId,\\n IDAO.Action[] calldata _actions,\\n uint256 _allowFailureMap\\n ) internal virtual returns (bytes[] memory execResults, uint256 failureMap) {\\n (execResults, failureMap) = IDAO(_target).execute(_callId, _actions, _allowFailureMap);\\n }\\n}\\n\",\"keccak256\":\"0x23fff653e79f6d079073bab2f878051cf85c8e3cfa7ef359f3be92fc65ca2501\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/IProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IProtocolVersion\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the semantic Aragon OSx protocol version number.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IProtocolVersion {\\n /// @notice Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\\n /// @return _version Returns the semantic Aragon OSx protocol version number.\\n /// @dev This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\\n function protocolVersion() external view returns (uint8[3] memory _version);\\n}\\n\",\"keccak256\":\"0x00a4da654d21dc1bdadbdc8bd54bb86c378c56f85e461ccc31303628ea621361\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/ProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IProtocolVersion} from \\\"./IProtocolVersion.sol\\\";\\n\\n/// @title ProtocolVersion\\n/// @author Aragon X - 2023\\n/// @notice An abstract, stateless, non-upgradeable contract providing the current Aragon OSx protocol version number.\\n/// @dev Do not add any new variables to this contract that would shift down storage in the inheritance chain.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract ProtocolVersion is IProtocolVersion {\\n // IMPORTANT: Do not add any storage variable, see the above notice.\\n\\n /// @inheritdoc IProtocolVersion\\n function protocolVersion() public pure returns (uint8[3] memory) {\\n return [1, 4, 0];\\n }\\n}\\n\",\"keccak256\":\"0x3975c937be935f687c6b6b8f379071232681e98cf04b175d72781b819ea52bdb\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[{"astId":372,"contract":"src/plugin/PluginCloneable.sol:PluginCloneable","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":375,"contract":"src/plugin/PluginCloneable.sol:PluginCloneable","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":1280,"contract":"src/plugin/PluginCloneable.sol:PluginCloneable","label":"__gap","offset":0,"slot":"1","type":"t_array(t_uint256)50_storage"},{"astId":1051,"contract":"src/plugin/PluginCloneable.sol:PluginCloneable","label":"__gap","offset":0,"slot":"51","type":"t_array(t_uint256)50_storage"},{"astId":3887,"contract":"src/plugin/PluginCloneable.sol:PluginCloneable","label":"dao_","offset":0,"slot":"101","type":"t_contract(IDAO)2538"},{"astId":3936,"contract":"src/plugin/PluginCloneable.sol:PluginCloneable","label":"__gap","offset":0,"slot":"102","type":"t_array(t_uint256)49_storage"},{"astId":4196,"contract":"src/plugin/PluginCloneable.sol:PluginCloneable","label":"target","offset":0,"slot":"151","type":"t_address"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_array(t_uint256)49_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[49]","numberOfBytes":"1568"},"t_array(t_uint256)50_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[50]","numberOfBytes":"1600"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_contract(IDAO)2538":{"encoding":"inplace","label":"contract IDAO","numberOfBytes":"20"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"kind":"user","methods":{"constructor":{"notice":"Disables the initializers on the implementation contract to prevent it from being left uninitialized."},"dao()":{"notice":"Returns the DAO contract."},"pluginType()":{"notice":"Returns the plugin's type"},"protocolVersion()":{"notice":"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with."},"setTarget(address)":{"notice":"Can only be called by the current owner. TODO"},"supportsInterface(bytes4)":{"notice":"Checks if this or the parent contract supports an interface by its ID."}},"notice":"An abstract, non-upgradeable contract to inherit from when creating a plugin being deployed via the minimal clones pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)).","version":1}}},"src/plugin/PluginUUPSUpgradeable.sol":{"PluginUUPSUpgradeable":{"abi":[{"inputs":[{"internalType":"address","name":"dao","type":"address"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"name":"DaoUnauthorized","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"beacon","type":"address"}],"name":"BeaconUpgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousTarget","type":"address"},{"indexed":true,"internalType":"address","name":"newTarget","type":"address"}],"name":"TargetSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"inputs":[],"name":"UPGRADE_PLUGIN_PERMISSION_ID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dao","outputs":[{"internalType":"contract IDAO","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pluginType","outputs":[{"internalType":"enum IPlugin.PluginType","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"protocolVersion","outputs":[{"internalType":"uint8[3]","name":"","type":"uint8[3]"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_target","type":"address"}],"name":"setTarget","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"target","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"}],"name":"upgradeTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"}],"devdoc":{"author":"Aragon X - 2022-2023","custom:security-contact":"sirt@aragon.org","errors":{"DaoUnauthorized(address,address,address,bytes32)":[{"params":{"dao":"The associated DAO.","permissionId":"The permission identifier.","where":"The context in which the authorization reverted.","who":"The address (EOA or contract) missing the permission."}}]},"events":{"TargetSet(address,address)":{"details":"Emitted each time the Target is set."}},"kind":"dev","methods":{"constructor":{"custom:oz-upgrades-unsafe-allow":"constructor"},"dao()":{"returns":{"_0":"The DAO contract."}},"implementation()":{"returns":{"_0":"The address of the implementation contract."}},"protocolVersion()":{"details":"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.","returns":{"_0":"Returns the semantic Aragon OSx protocol version number."}},"proxiableUUID()":{"details":"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier."},"setTarget(address)":{"details":"Sets the target to a new target (`newTarget`)."},"supportsInterface(bytes4)":{"params":{"_interfaceId":"The ID of the interface."},"returns":{"_0":"Returns `true` if the interface is supported."}},"upgradeTo(address)":{"custom:oz-upgrades-unsafe-allow-reachable":"delegatecall","details":"Upgrade the implementation of the proxy to `newImplementation`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."},"upgradeToAndCall(address,bytes)":{"custom:oz-upgrades-unsafe-allow-reachable":"delegatecall","details":"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."}},"title":"PluginUUPSUpgradeable","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"UPGRADE_PLUGIN_PERMISSION_ID()":"c9c4bfca","dao()":"4162169f","implementation()":"5c60da1b","pluginType()":"41de6830","protocolVersion()":"2ae9c600","proxiableUUID()":"52d1902d","setTarget(address)":"776d1a01","supportsInterface(bytes4)":"01ffc9a7","target()":"d4b83992","upgradeTo(address)":"3659cfe6","upgradeToAndCall(address,bytes)":"4f1ef286"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"dao\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"name\":\"DaoUnauthorized\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousTarget\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newTarget\",\"type\":\"address\"}],\"name\":\"TargetSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"UPGRADE_PLUGIN_PERMISSION_ID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"dao\",\"outputs\":[{\"internalType\":\"contract IDAO\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pluginType\",\"outputs\":[{\"internalType\":\"enum IPlugin.PluginType\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"protocolVersion\",\"outputs\":[{\"internalType\":\"uint8[3]\",\"name\":\"\",\"type\":\"uint8[3]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_target\",\"type\":\"address\"}],\"name\":\"setTarget\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"target\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"upgradeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Aragon X - 2022-2023\",\"custom:security-contact\":\"sirt@aragon.org\",\"errors\":{\"DaoUnauthorized(address,address,address,bytes32)\":[{\"params\":{\"dao\":\"The associated DAO.\",\"permissionId\":\"The permission identifier.\",\"where\":\"The context in which the authorization reverted.\",\"who\":\"The address (EOA or contract) missing the permission.\"}}]},\"events\":{\"TargetSet(address,address)\":{\"details\":\"Emitted each time the Target is set.\"}},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor\"},\"dao()\":{\"returns\":{\"_0\":\"The DAO contract.\"}},\"implementation()\":{\"returns\":{\"_0\":\"The address of the implementation contract.\"}},\"protocolVersion()\":{\"details\":\"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\",\"returns\":{\"_0\":\"Returns the semantic Aragon OSx protocol version number.\"}},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"setTarget(address)\":{\"details\":\"Sets the target to a new target (`newTarget`).\"},\"supportsInterface(bytes4)\":{\"params\":{\"_interfaceId\":\"The ID of the interface.\"},\"returns\":{\"_0\":\"Returns `true` if the interface is supported.\"}},\"upgradeTo(address)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"},\"upgradeToAndCall(address,bytes)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"}},\"title\":\"PluginUUPSUpgradeable\",\"version\":1},\"userdoc\":{\"errors\":{\"DaoUnauthorized(address,address,address,bytes32)\":[{\"notice\":\"Thrown if a call is unauthorized in the associated DAO.\"}]},\"kind\":\"user\",\"methods\":{\"UPGRADE_PLUGIN_PERMISSION_ID()\":{\"notice\":\"The ID of the permission required to call the `_authorizeUpgrade` function.\"},\"constructor\":{\"notice\":\"Disables the initializers on the implementation contract to prevent it from being left uninitialized.\"},\"dao()\":{\"notice\":\"Returns the DAO contract.\"},\"implementation()\":{\"notice\":\"Returns the address of the implementation contract in the [proxy storage slot](https://eips.ethereum.org/EIPS/eip-1967) slot the [UUPS proxy](https://eips.ethereum.org/EIPS/eip-1822) is pointing to.\"},\"pluginType()\":{\"notice\":\"Returns the plugin's type\"},\"protocolVersion()\":{\"notice\":\"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\"},\"setTarget(address)\":{\"notice\":\"Can only be called by the current owner. TODO\"},\"supportsInterface(bytes4)\":{\"notice\":\"Checks if an interface is supported by this or its parent contract.\"}},\"notice\":\"An abstract, upgradeable contract to inherit from when creating a plugin being deployed via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/plugin/PluginUUPSUpgradeable.sol\":\"PluginUUPSUpgradeable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/interfaces/IERC1967Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (interfaces/IERC1967.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\\n *\\n * _Available since v4.8.3._\\n */\\ninterface IERC1967Upgradeable {\\n /**\\n * @dev Emitted when the implementation is upgraded.\\n */\\n event Upgraded(address indexed implementation);\\n\\n /**\\n * @dev Emitted when the admin account has changed.\\n */\\n event AdminChanged(address previousAdmin, address newAdmin);\\n\\n /**\\n * @dev Emitted when the beacon is changed.\\n */\\n event BeaconUpgraded(address indexed beacon);\\n}\\n\",\"keccak256\":\"0x47d6e06872b12e72c79d1b5eb55842f860b5fb1207b2317c2358d2766b950a7b\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822ProxiableUpgradeable {\\n /**\\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n * address.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy.\\n */\\n function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../beacon/IBeaconUpgradeable.sol\\\";\\nimport \\\"../../interfaces/IERC1967Upgradeable.sol\\\";\\nimport \\\"../../interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\nimport \\\"../../utils/StorageSlotUpgradeable.sol\\\";\\nimport {Initializable} from \\\"../utils/Initializable.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n */\\nabstract contract ERC1967UpgradeUpgradeable is Initializable, IERC1967Upgradeable {\\n // This is the keccak-256 hash of \\\"eip1967.proxy.rollback\\\" subtracted by 1\\n bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n /**\\n * @dev Storage slot with the address of the current implementation.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n function __ERC1967Upgrade_init() internal onlyInitializing {\\n }\\n\\n function __ERC1967Upgrade_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _getImplementation() internal view returns (address) {\\n return StorageSlotUpgradeable.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 implementation slot.\\n */\\n function _setImplementation(address newImplementation) private {\\n require(AddressUpgradeable.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n StorageSlotUpgradeable.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n }\\n\\n /**\\n * @dev Perform implementation upgrade\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeTo(address newImplementation) internal {\\n _setImplementation(newImplementation);\\n emit Upgraded(newImplementation);\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCall(address newImplementation, bytes memory data, bool forceCall) internal {\\n _upgradeTo(newImplementation);\\n if (data.length > 0 || forceCall) {\\n AddressUpgradeable.functionDelegateCall(newImplementation, data);\\n }\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCallUUPS(address newImplementation, bytes memory data, bool forceCall) internal {\\n // Upgrades from old implementations will perform a rollback test. This test requires the new\\n // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n // this special case will break upgrade paths from old UUPS implementation to new ones.\\n if (StorageSlotUpgradeable.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n _setImplementation(newImplementation);\\n } else {\\n try IERC1822ProxiableUpgradeable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n require(slot == _IMPLEMENTATION_SLOT, \\\"ERC1967Upgrade: unsupported proxiableUUID\\\");\\n } catch {\\n revert(\\\"ERC1967Upgrade: new implementation is not UUPS\\\");\\n }\\n _upgradeToAndCall(newImplementation, data, forceCall);\\n }\\n }\\n\\n /**\\n * @dev Storage slot with the admin of the contract.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _getAdmin() internal view returns (address) {\\n return StorageSlotUpgradeable.getAddressSlot(_ADMIN_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 admin slot.\\n */\\n function _setAdmin(address newAdmin) private {\\n require(newAdmin != address(0), \\\"ERC1967: new admin is the zero address\\\");\\n StorageSlotUpgradeable.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n */\\n function _changeAdmin(address newAdmin) internal {\\n emit AdminChanged(_getAdmin(), newAdmin);\\n _setAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\\n */\\n bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n /**\\n * @dev Returns the current beacon.\\n */\\n function _getBeacon() internal view returns (address) {\\n return StorageSlotUpgradeable.getAddressSlot(_BEACON_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new beacon in the EIP1967 beacon slot.\\n */\\n function _setBeacon(address newBeacon) private {\\n require(AddressUpgradeable.isContract(newBeacon), \\\"ERC1967: new beacon is not a contract\\\");\\n require(\\n AddressUpgradeable.isContract(IBeaconUpgradeable(newBeacon).implementation()),\\n \\\"ERC1967: beacon implementation is not a contract\\\"\\n );\\n StorageSlotUpgradeable.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n }\\n\\n /**\\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n *\\n * Emits a {BeaconUpgraded} event.\\n */\\n function _upgradeBeaconToAndCall(address newBeacon, bytes memory data, bool forceCall) internal {\\n _setBeacon(newBeacon);\\n emit BeaconUpgraded(newBeacon);\\n if (data.length > 0 || forceCall) {\\n AddressUpgradeable.functionDelegateCall(IBeaconUpgradeable(newBeacon).implementation(), data);\\n }\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x7795808e3899c805254e3ae58074b20f799b466e3f43e057e47bedee5fb771f8\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeaconUpgradeable {\\n /**\\n * @dev Must return an address that can be used as a delegate call target.\\n *\\n * {BeaconProxy} will check that this address is a contract.\\n */\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/UUPSUpgradeable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport \\\"../ERC1967/ERC1967UpgradeUpgradeable.sol\\\";\\nimport {Initializable} from \\\"./Initializable.sol\\\";\\n\\n/**\\n * @dev An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an\\n * {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy.\\n *\\n * A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is\\n * reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing\\n * `UUPSUpgradeable` with a custom implementation of upgrades.\\n *\\n * The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism.\\n *\\n * _Available since v4.1._\\n */\\nabstract contract UUPSUpgradeable is Initializable, IERC1822ProxiableUpgradeable, ERC1967UpgradeUpgradeable {\\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable state-variable-assignment\\n address private immutable __self = address(this);\\n\\n /**\\n * @dev Check that the execution is being performed through a delegatecall call and that the execution context is\\n * a proxy contract with an implementation (as defined in ERC1967) pointing to self. This should only be the case\\n * for UUPS and transparent proxies that are using the current contract as their implementation. Execution of a\\n * function through ERC1167 minimal proxies (clones) would not normally pass this test, but is not guaranteed to\\n * fail.\\n */\\n modifier onlyProxy() {\\n require(address(this) != __self, \\\"Function must be called through delegatecall\\\");\\n require(_getImplementation() == __self, \\\"Function must be called through active proxy\\\");\\n _;\\n }\\n\\n /**\\n * @dev Check that the execution is not being performed through a delegate call. This allows a function to be\\n * callable on the implementing contract but not through proxies.\\n */\\n modifier notDelegated() {\\n require(address(this) == __self, \\\"UUPSUpgradeable: must not be called through delegatecall\\\");\\n _;\\n }\\n\\n function __UUPSUpgradeable_init() internal onlyInitializing {\\n }\\n\\n function __UUPSUpgradeable_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the\\n * implementation. It is used to validate the implementation's compatibility when performing an upgrade.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\\n */\\n function proxiableUUID() external view virtual override notDelegated returns (bytes32) {\\n return _IMPLEMENTATION_SLOT;\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy to `newImplementation`.\\n *\\n * Calls {_authorizeUpgrade}.\\n *\\n * Emits an {Upgraded} event.\\n *\\n * @custom:oz-upgrades-unsafe-allow-reachable delegatecall\\n */\\n function upgradeTo(address newImplementation) public virtual onlyProxy {\\n _authorizeUpgrade(newImplementation);\\n _upgradeToAndCallUUPS(newImplementation, new bytes(0), false);\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call\\n * encoded in `data`.\\n *\\n * Calls {_authorizeUpgrade}.\\n *\\n * Emits an {Upgraded} event.\\n *\\n * @custom:oz-upgrades-unsafe-allow-reachable delegatecall\\n */\\n function upgradeToAndCall(address newImplementation, bytes memory data) public payable virtual onlyProxy {\\n _authorizeUpgrade(newImplementation);\\n _upgradeToAndCallUUPS(newImplementation, data, true);\\n }\\n\\n /**\\n * @dev Function that should revert when `msg.sender` is not authorized to upgrade the contract. Called by\\n * {upgradeTo} and {upgradeToAndCall}.\\n *\\n * Normally, this function will use an xref:access.adoc[access control] modifier such as {Ownable-onlyOwner}.\\n *\\n * ```solidity\\n * function _authorizeUpgrade(address) internal override onlyOwner {}\\n * ```\\n */\\n function _authorizeUpgrade(address newImplementation) internal virtual;\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0xefb41f5c1a00249b7a99f0782f8c557865605426a3fb6e5fe9ae334293ae4f33\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n function __Context_init() internal onlyInitializing {\\n }\\n\\n function __Context_init_unchained() internal onlyInitializing {\\n }\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n function _contextSuffixLength() internal view virtual returns (uint256) {\\n return 0;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x75097e35253e7fb282ee4d7f27a80eaacfa759923185bf17302a89cbc059c5ef\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/StorageSlot.sol)\\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```solidity\\n * contract ERC1967 {\\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n * function _getImplementation() internal view returns (address) {\\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n * }\\n *\\n * function _setImplementation(address newImplementation) internal {\\n * require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n * }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._\\n * _Available since v4.9 for `string`, `bytes`._\\n */\\nlibrary StorageSlotUpgradeable {\\n struct AddressSlot {\\n address value;\\n }\\n\\n struct BooleanSlot {\\n bool value;\\n }\\n\\n struct Bytes32Slot {\\n bytes32 value;\\n }\\n\\n struct Uint256Slot {\\n uint256 value;\\n }\\n\\n struct StringSlot {\\n string value;\\n }\\n\\n struct BytesSlot {\\n bytes value;\\n }\\n\\n /**\\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n */\\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n */\\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n */\\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n */\\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` with member `value` located at `slot`.\\n */\\n function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\\n */\\n function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` with member `value` located at `slot`.\\n */\\n function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\\n */\\n function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n}\\n\",\"keccak256\":\"0x07ac95acad040f1fb1f6120dd0aa5f702db69446e95f82613721879d30de0908\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165Upgradeable.sol\\\";\\nimport {Initializable} from \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165Upgradeable is Initializable, IERC165Upgradeable {\\n function __ERC165_init() internal onlyInitializing {\\n }\\n\\n function __ERC165_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165Upgradeable).interfaceId;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0xd90d7723512df65ae417adaf0801042940f0dabd60039ceeaffe34aa5b238da1\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165Upgradeable {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\"},\"src/dao/IDAO.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IDAO\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for DAOs within the Aragon App DAO framework.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IDAO {\\n /// @notice The action struct to be consumed by the DAO's `execute` function resulting in an external call.\\n /// @param to The address to call.\\n /// @param value The native token value to be sent with the call.\\n /// @param data The bytes-encoded function selector and calldata for the call.\\n struct Action {\\n address to;\\n uint256 value;\\n bytes data;\\n }\\n\\n /// @notice Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\\n /// @param _where The address of the contract.\\n /// @param _who The address of a EOA or contract to give the permissions.\\n /// @param _permissionId The permission identifier.\\n /// @param _data The optional data passed to the `PermissionCondition` registered.\\n /// @return Returns true if the address has permission, false if not.\\n function hasPermission(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes memory _data\\n ) external view returns (bool);\\n\\n /// @notice Updates the DAO metadata (e.g., an IPFS hash).\\n /// @param _metadata The IPFS hash of the new metadata object.\\n function setMetadata(bytes calldata _metadata) external;\\n\\n /// @notice Emitted when the DAO metadata is updated.\\n /// @param metadata The IPFS hash of the new metadata object.\\n event MetadataSet(bytes metadata);\\n\\n /// @notice Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted.\\n /// @param _callId The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce.\\n /// @param _actions The array of actions.\\n /// @param _allowFailureMap A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @return The array of results obtained from the executed actions in `bytes`.\\n /// @return The resulting failure map containing the actions have actually failed.\\n function execute(\\n bytes32 _callId,\\n Action[] memory _actions,\\n uint256 _allowFailureMap\\n ) external returns (bytes[] memory, uint256);\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param actor The address of the caller.\\n /// @param callId The ID of the call.\\n /// @param actions The array of actions executed.\\n /// @param allowFailureMap The allow failure map encoding which actions are allowed to fail.\\n /// @param failureMap The failure map encoding which actions have failed.\\n /// @param execResults The array with the results of the executed actions.\\n /// @dev The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce.\\n event Executed(\\n address indexed actor,\\n bytes32 callId,\\n Action[] actions,\\n uint256 allowFailureMap,\\n uint256 failureMap,\\n bytes[] execResults\\n );\\n\\n /// @notice Emitted when a standard callback is registered.\\n /// @param interfaceId The ID of the interface.\\n /// @param callbackSelector The selector of the callback function.\\n /// @param magicNumber The magic number to be registered for the callback function selector.\\n event StandardCallbackRegistered(\\n bytes4 interfaceId,\\n bytes4 callbackSelector,\\n bytes4 magicNumber\\n );\\n\\n /// @notice Deposits (native) tokens to the DAO contract with a reference string.\\n /// @param _token The address of the token or address(0) in case of the native token.\\n /// @param _amount The amount of tokens to deposit.\\n /// @param _reference The reference describing the deposit reason.\\n function deposit(address _token, uint256 _amount, string calldata _reference) external payable;\\n\\n /// @notice Emitted when a token deposit has been made to the DAO.\\n /// @param sender The address of the sender.\\n /// @param token The address of the deposited token.\\n /// @param amount The amount of tokens deposited.\\n /// @param _reference The reference describing the deposit reason.\\n event Deposited(\\n address indexed sender,\\n address indexed token,\\n uint256 amount,\\n string _reference\\n );\\n\\n /// @notice Emitted when a native token deposit has been made to the DAO.\\n /// @dev This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).\\n /// @param sender The address of the sender.\\n /// @param amount The amount of native tokens deposited.\\n event NativeTokenDeposited(address sender, uint256 amount);\\n\\n /// @notice Setter for the trusted forwarder verifying the meta transaction.\\n /// @param _trustedForwarder The trusted forwarder address.\\n function setTrustedForwarder(address _trustedForwarder) external;\\n\\n /// @notice Getter for the trusted forwarder verifying the meta transaction.\\n /// @return The trusted forwarder address.\\n function getTrustedForwarder() external view returns (address);\\n\\n /// @notice Emitted when a new TrustedForwarder is set on the DAO.\\n /// @param forwarder the new forwarder address.\\n event TrustedForwarderSet(address forwarder);\\n\\n /// @notice Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\\n /// @param _hash The hash of the data to be signed.\\n /// @param _signature The signature byte array associated with `_hash`.\\n /// @return Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not.\\n function isValidSignature(bytes32 _hash, bytes memory _signature) external returns (bytes4);\\n\\n /// @notice Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\\n /// @param _interfaceId The ID of the interface.\\n /// @param _callbackSelector The selector of the callback function.\\n /// @param _magicNumber The magic number to be registered for the function signature.\\n function registerStandardCallback(\\n bytes4 _interfaceId,\\n bytes4 _callbackSelector,\\n bytes4 _magicNumber\\n ) external;\\n\\n /// @notice Removed function being left here to not corrupt the IDAO interface ID. Any call will revert.\\n /// @dev Introduced in v1.0.0. Removed in v1.4.0.\\n function setSignatureValidator(address) external;\\n}\\n\",\"keccak256\":\"0xb7f615523c26de042edce98731c658f44a1edb2464387ac1b642c4c69f57128e\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/DaoAuthorizableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ContextUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\\\";\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\nimport {_auth} from \\\"./auth.sol\\\";\\n\\n/// @title DaoAuthorizableUpgradeable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract contract providing a meta-transaction compatible modifier for upgradeable or cloneable contracts to authorize function calls through an associated DAO.\\n/// @dev Make sure to call `__DaoAuthorizableUpgradeable_init` during initialization of the inheriting contract.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract DaoAuthorizableUpgradeable is ContextUpgradeable {\\n /// @notice The associated DAO managing the permissions of inheriting contracts.\\n IDAO private dao_;\\n\\n /// @notice Initializes the contract by setting the associated DAO.\\n /// @param _dao The associated DAO address.\\n // solhint-disable-next-line func-name-mixedcase\\n function __DaoAuthorizableUpgradeable_init(IDAO _dao) internal onlyInitializing {\\n dao_ = _dao;\\n }\\n\\n /// @notice Returns the DAO contract.\\n /// @return The DAO contract.\\n function dao() public view returns (IDAO) {\\n return dao_;\\n }\\n\\n /// @notice A modifier to make functions on inheriting contracts authorized. Permissions to call the function are checked through the associated DAO's permission manager.\\n /// @param _permissionId The permission identifier required to call the method this modifier is applied to.\\n modifier auth(bytes32 _permissionId) {\\n _auth(dao_, address(this), _msgSender(), _permissionId, _msgData());\\n _;\\n }\\n\\n /// @notice This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain (see [OpenZeppelin's guide about storage gaps](https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps)).\\n uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0x7fac6b01b037ba1cb9d6a22d3f43b0785037dcf496ffb672434d9bf7227d2585\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/auth/auth.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @notice Thrown if a call is unauthorized in the associated DAO.\\n/// @param dao The associated DAO.\\n/// @param where The context in which the authorization reverted.\\n/// @param who The address (EOA or contract) missing the permission.\\n/// @param permissionId The permission identifier.\\nerror DaoUnauthorized(address dao, address where, address who, bytes32 permissionId);\\n\\n/// @notice A free function checking if a caller is granted permissions on a target contract via a permission identifier that redirects the approval to a `PermissionCondition` if this was specified in the setup.\\n/// @param _where The address of the target contract for which `who` receives permission.\\n/// @param _who The address (EOA or contract) owning the permission.\\n/// @param _permissionId The permission identifier.\\n/// @param _data The optional data passed to the `PermissionCondition` registered.\\n/// @custom:security-contact sirt@aragon.org\\nfunction _auth(\\n IDAO _dao,\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes calldata _data\\n) view {\\n if (!_dao.hasPermission(_where, _who, _permissionId, _data))\\n revert DaoUnauthorized({\\n dao: address(_dao),\\n where: _where,\\n who: _who,\\n permissionId: _permissionId\\n });\\n}\\n\",\"keccak256\":\"0x878764b4f87fe0651fb3798fb9cb87c952f8c6caf6ae79c7f09de84df6c00298\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/IPlugin.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IPlugin\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the traits of a plugin.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IPlugin {\\n enum PluginType {\\n UUPS,\\n Cloneable,\\n Constructable\\n }\\n\\n /// @notice Returns the plugin's type\\n function pluginType() external view returns (PluginType);\\n}\\n\",\"keccak256\":\"0xc57cd0d10b6380ab7f54c713a509e88fd8f4ad9288313a0e8e12b8887817ddfe\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/PluginUUPSUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {UUPSUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\\\";\\nimport {IERC1822ProxiableUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport {ERC165Upgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\\\";\\n\\nimport {IProtocolVersion} from \\\"../utils/versioning/IProtocolVersion.sol\\\";\\nimport {ProtocolVersion} from \\\"../utils/versioning/ProtocolVersion.sol\\\";\\nimport {DaoAuthorizableUpgradeable} from \\\"../permission/auth/DaoAuthorizableUpgradeable.sol\\\";\\nimport {IDAO} from \\\"../dao/IDAO.sol\\\";\\nimport {IPlugin} from \\\"./IPlugin.sol\\\";\\n\\n/// @title PluginUUPSUpgradeable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract, upgradeable contract to inherit from when creating a plugin being deployed via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract PluginUUPSUpgradeable is\\n IPlugin,\\n ERC165Upgradeable,\\n UUPSUpgradeable,\\n DaoAuthorizableUpgradeable,\\n ProtocolVersion\\n{\\n // NOTE: When adding new state variables to the contract, the size of `_gap` has to be adapted below as well.\\n address public target;\\n\\n /// @dev Emitted each time the Target is set.\\n event TargetSet(address indexed previousTarget, address indexed newTarget);\\n\\n /// @notice Disables the initializers on the implementation contract to prevent it from being left uninitialized.\\n /// @custom:oz-upgrades-unsafe-allow constructor\\n constructor() {\\n _disableInitializers();\\n }\\n\\n /// @inheritdoc IPlugin\\n function pluginType() public pure override returns (PluginType) {\\n return PluginType.UUPS;\\n }\\n\\n /// @notice The ID of the permission required to call the `_authorizeUpgrade` function.\\n bytes32 public constant UPGRADE_PLUGIN_PERMISSION_ID = keccak256(\\\"UPGRADE_PLUGIN_PERMISSION\\\");\\n\\n /// @notice Initializes the plugin by storing the associated DAO.\\n /// @param _dao The DAO contract.\\n // solhint-disable-next-line func-name-mixedcase\\n function __PluginUUPSUpgradeable_init(IDAO _dao) internal virtual onlyInitializing {\\n __DaoAuthorizableUpgradeable_init(_dao);\\n }\\n\\n /// @dev Sets the target to a new target (`newTarget`).\\n /// @notice Can only be called by the current owner. TODO\\n function setTarget(address _target) public {\\n address previousTarget = target;\\n target = _target;\\n emit TargetSet(previousTarget, _target);\\n }\\n\\n /// @notice Checks if an interface is supported by this or its parent contract.\\n /// @param _interfaceId The ID of the interface.\\n /// @return Returns `true` if the interface is supported.\\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\\n return\\n _interfaceId == type(IPlugin).interfaceId ||\\n _interfaceId == type(IProtocolVersion).interfaceId ||\\n _interfaceId == type(IERC1822ProxiableUpgradeable).interfaceId ||\\n super.supportsInterface(_interfaceId);\\n }\\n\\n /// @notice Returns the address of the implementation contract in the [proxy storage slot](https://eips.ethereum.org/EIPS/eip-1967) slot the [UUPS proxy](https://eips.ethereum.org/EIPS/eip-1822) is pointing to.\\n /// @return The address of the implementation contract.\\n function implementation() public view returns (address) {\\n return _getImplementation();\\n }\\n\\n /// @notice Forwards the actions to the currently set `target` for the execution.\\n /// @param _callId Identifier for this execution.\\n /// @param _actions actions that will be eventually called.\\n /// @param _allowFailureMap Bitmap-encoded number. TODO:\\n /// @return execResults address of the implementation contract.\\n /// @return failureMap address of the implementation contract.\\n function _execute(\\n bytes32 _callId,\\n IDAO.Action[] calldata _actions,\\n uint256 _allowFailureMap\\n ) internal virtual returns (bytes[] memory execResults, uint256 failureMap) {\\n (execResults, failureMap) = IDAO(target).execute(_callId, _actions, _allowFailureMap);\\n }\\n\\n /// @notice Forwards the actions to the `target` for the execution.\\n /// @param _target Forwards the actions to the specific target.\\n /// @param _callId Identifier for this execution.\\n /// @param _actions actions that will be eventually called.\\n /// @param _allowFailureMap Bitmap-encoded number. TODO:\\n /// @return execResults address of the implementation contract.\\n /// @return failureMap address of the implementation contract.\\n function _execute(\\n address _target,\\n bytes32 _callId,\\n IDAO.Action[] calldata _actions,\\n uint256 _allowFailureMap\\n ) internal virtual returns (bytes[] memory execResults, uint256 failureMap) {\\n (execResults, failureMap) = IDAO(_target).execute(_callId, _actions, _allowFailureMap);\\n }\\n\\n /// @notice Internal method authorizing the upgrade of the contract via the [upgradeability mechanism for UUPS proxies](https://docs.openzeppelin.com/contracts/4.x/api/proxy#UUPSUpgradeable) (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\\n /// @dev The caller must have the `UPGRADE_PLUGIN_PERMISSION_ID` permission.\\n function _authorizeUpgrade(\\n address\\n )\\n internal\\n virtual\\n override\\n auth(UPGRADE_PLUGIN_PERMISSION_ID)\\n // solhint-disable-next-line no-empty-blocks\\n {\\n\\n }\\n\\n /// @notice This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain (see [OpenZeppelin's guide about storage gaps](https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps)).\\n uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0xce1d0126b3ae8c8afc887fba9f49b1cc35f84f1c1d5bf4cadee330c7ae15014f\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/IProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IProtocolVersion\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the semantic Aragon OSx protocol version number.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IProtocolVersion {\\n /// @notice Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\\n /// @return _version Returns the semantic Aragon OSx protocol version number.\\n /// @dev This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\\n function protocolVersion() external view returns (uint8[3] memory _version);\\n}\\n\",\"keccak256\":\"0x00a4da654d21dc1bdadbdc8bd54bb86c378c56f85e461ccc31303628ea621361\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/ProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IProtocolVersion} from \\\"./IProtocolVersion.sol\\\";\\n\\n/// @title ProtocolVersion\\n/// @author Aragon X - 2023\\n/// @notice An abstract, stateless, non-upgradeable contract providing the current Aragon OSx protocol version number.\\n/// @dev Do not add any new variables to this contract that would shift down storage in the inheritance chain.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract ProtocolVersion is IProtocolVersion {\\n // IMPORTANT: Do not add any storage variable, see the above notice.\\n\\n /// @inheritdoc IProtocolVersion\\n function protocolVersion() public pure returns (uint8[3] memory) {\\n return [1, 4, 0];\\n }\\n}\\n\",\"keccak256\":\"0x3975c937be935f687c6b6b8f379071232681e98cf04b175d72781b819ea52bdb\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[{"astId":372,"contract":"src/plugin/PluginUUPSUpgradeable.sol:PluginUUPSUpgradeable","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":375,"contract":"src/plugin/PluginUUPSUpgradeable.sol:PluginUUPSUpgradeable","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":1280,"contract":"src/plugin/PluginUUPSUpgradeable.sol:PluginUUPSUpgradeable","label":"__gap","offset":0,"slot":"1","type":"t_array(t_uint256)50_storage"},{"astId":354,"contract":"src/plugin/PluginUUPSUpgradeable.sol:PluginUUPSUpgradeable","label":"__gap","offset":0,"slot":"51","type":"t_array(t_uint256)50_storage"},{"astId":670,"contract":"src/plugin/PluginUUPSUpgradeable.sol:PluginUUPSUpgradeable","label":"__gap","offset":0,"slot":"101","type":"t_array(t_uint256)50_storage"},{"astId":1051,"contract":"src/plugin/PluginUUPSUpgradeable.sol:PluginUUPSUpgradeable","label":"__gap","offset":0,"slot":"151","type":"t_array(t_uint256)50_storage"},{"astId":3887,"contract":"src/plugin/PluginUUPSUpgradeable.sol:PluginUUPSUpgradeable","label":"dao_","offset":0,"slot":"201","type":"t_contract(IDAO)2538"},{"astId":3936,"contract":"src/plugin/PluginUUPSUpgradeable.sol:PluginUUPSUpgradeable","label":"__gap","offset":0,"slot":"202","type":"t_array(t_uint256)49_storage"},{"astId":4382,"contract":"src/plugin/PluginUUPSUpgradeable.sol:PluginUUPSUpgradeable","label":"target","offset":0,"slot":"251","type":"t_address"},{"astId":4575,"contract":"src/plugin/PluginUUPSUpgradeable.sol:PluginUUPSUpgradeable","label":"__gap","offset":0,"slot":"252","type":"t_array(t_uint256)49_storage"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_array(t_uint256)49_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[49]","numberOfBytes":"1568"},"t_array(t_uint256)50_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[50]","numberOfBytes":"1600"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_contract(IDAO)2538":{"encoding":"inplace","label":"contract IDAO","numberOfBytes":"20"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"errors":{"DaoUnauthorized(address,address,address,bytes32)":[{"notice":"Thrown if a call is unauthorized in the associated DAO."}]},"kind":"user","methods":{"UPGRADE_PLUGIN_PERMISSION_ID()":{"notice":"The ID of the permission required to call the `_authorizeUpgrade` function."},"constructor":{"notice":"Disables the initializers on the implementation contract to prevent it from being left uninitialized."},"dao()":{"notice":"Returns the DAO contract."},"implementation()":{"notice":"Returns the address of the implementation contract in the [proxy storage slot](https://eips.ethereum.org/EIPS/eip-1967) slot the [UUPS proxy](https://eips.ethereum.org/EIPS/eip-1822) is pointing to."},"pluginType()":{"notice":"Returns the plugin's type"},"protocolVersion()":{"notice":"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with."},"setTarget(address)":{"notice":"Can only be called by the current owner. TODO"},"supportsInterface(bytes4)":{"notice":"Checks if an interface is supported by this or its parent contract."}},"notice":"An abstract, upgradeable contract to inherit from when creating a plugin being deployed via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).","version":1}}},"src/plugin/extensions/proposal/IProposal.sol":{"IProposal":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":true,"internalType":"address","name":"creator","type":"address"},{"indexed":false,"internalType":"uint64","name":"startDate","type":"uint64"},{"indexed":false,"internalType":"uint64","name":"endDate","type":"uint64"},{"indexed":false,"internalType":"bytes","name":"metadata","type":"bytes"},{"components":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"indexed":false,"internalType":"struct IDAO.Action[]","name":"actions","type":"tuple[]"},{"indexed":false,"internalType":"uint256","name":"allowFailureMap","type":"uint256"}],"name":"ProposalCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalExecuted","type":"event"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"canExecute","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"data","type":"bytes"},{"components":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct IDAO.Action[]","name":"actions","type":"tuple[]"},{"internalType":"uint64","name":"startDate","type":"uint64"},{"internalType":"uint64","name":"endDate","type":"uint64"}],"name":"createProposal","outputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"proposalCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"devdoc":{"author":"Aragon X - 2022-2023","custom:security-contact":"sirt@aragon.org","events":{"ProposalCreated(uint256,address,uint64,uint64,bytes,(address,uint256,bytes)[],uint256)":{"params":{"actions":"The actions that will be executed if the proposal passes.","allowFailureMap":"A bitmap allowing the proposal to succeed, even if individual actions might revert. If the bit at index `i` is 1, the proposal succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.","creator":"The creator of the proposal.","endDate":"The end date of the proposal in seconds.","metadata":"The metadata of the proposal.","proposalId":"The ID of the proposal.","startDate":"The start date of the proposal in seconds."}},"ProposalExecuted(uint256)":{"params":{"proposalId":"The ID of the proposal."}}},"kind":"dev","methods":{"canExecute(uint256)":{"params":{"proposalId":"The id of the proposal."},"returns":{"_0":"bool Returns if proposal can be executed or not."}},"createProposal(bytes,(address,uint256,bytes)[],uint64,uint64)":{"params":{"actions":"The actions that will be executed after the proposal passes.","data":"The metadata of the proposal.","endDate":"The end date of the proposal.","startDate":"The start date of the proposal."},"returns":{"proposalId":"The id of the proposal."}},"proposalCount()":{"details":"This function is deprecated TODO:","returns":{"_0":"The proposal count."}}},"title":"IProposal","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"canExecute(uint256)":"cc63604a","createProposal(bytes,(address,uint256,bytes)[],uint64,uint64)":"74d786be","proposalCount()":"da35c664"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"proposalId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"creator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"startDate\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"endDate\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"struct IDAO.Action[]\",\"name\":\"actions\",\"type\":\"tuple[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"allowFailureMap\",\"type\":\"uint256\"}],\"name\":\"ProposalCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"proposalId\",\"type\":\"uint256\"}],\"name\":\"ProposalExecuted\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"proposalId\",\"type\":\"uint256\"}],\"name\":\"canExecute\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IDAO.Action[]\",\"name\":\"actions\",\"type\":\"tuple[]\"},{\"internalType\":\"uint64\",\"name\":\"startDate\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"endDate\",\"type\":\"uint64\"}],\"name\":\"createProposal\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"proposalId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proposalCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Aragon X - 2022-2023\",\"custom:security-contact\":\"sirt@aragon.org\",\"events\":{\"ProposalCreated(uint256,address,uint64,uint64,bytes,(address,uint256,bytes)[],uint256)\":{\"params\":{\"actions\":\"The actions that will be executed if the proposal passes.\",\"allowFailureMap\":\"A bitmap allowing the proposal to succeed, even if individual actions might revert. If the bit at index `i` is 1, the proposal succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\",\"creator\":\"The creator of the proposal.\",\"endDate\":\"The end date of the proposal in seconds.\",\"metadata\":\"The metadata of the proposal.\",\"proposalId\":\"The ID of the proposal.\",\"startDate\":\"The start date of the proposal in seconds.\"}},\"ProposalExecuted(uint256)\":{\"params\":{\"proposalId\":\"The ID of the proposal.\"}}},\"kind\":\"dev\",\"methods\":{\"canExecute(uint256)\":{\"params\":{\"proposalId\":\"The id of the proposal.\"},\"returns\":{\"_0\":\"bool Returns if proposal can be executed or not.\"}},\"createProposal(bytes,(address,uint256,bytes)[],uint64,uint64)\":{\"params\":{\"actions\":\"The actions that will be executed after the proposal passes.\",\"data\":\"The metadata of the proposal.\",\"endDate\":\"The end date of the proposal.\",\"startDate\":\"The start date of the proposal.\"},\"returns\":{\"proposalId\":\"The id of the proposal.\"}},\"proposalCount()\":{\"details\":\"This function is deprecated TODO:\",\"returns\":{\"_0\":\"The proposal count.\"}}},\"title\":\"IProposal\",\"version\":1},\"userdoc\":{\"events\":{\"ProposalCreated(uint256,address,uint64,uint64,bytes,(address,uint256,bytes)[],uint256)\":{\"notice\":\"Emitted when a proposal is created.\"},\"ProposalExecuted(uint256)\":{\"notice\":\"Emitted when a proposal is executed.\"}},\"kind\":\"user\",\"methods\":{\"canExecute(uint256)\":{\"notice\":\"Whether proposal can be executed or not.\"},\"createProposal(bytes,(address,uint256,bytes)[],uint64,uint64)\":{\"notice\":\"Creates a new proposal.\"},\"proposalCount()\":{\"notice\":\"Returns the proposal count determining the next proposal ID.\"}},\"notice\":\"An interface to be implemented by DAO plugins that create and execute proposals.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/plugin/extensions/proposal/IProposal.sol\":\"IProposal\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"src/dao/IDAO.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IDAO\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for DAOs within the Aragon App DAO framework.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IDAO {\\n /// @notice The action struct to be consumed by the DAO's `execute` function resulting in an external call.\\n /// @param to The address to call.\\n /// @param value The native token value to be sent with the call.\\n /// @param data The bytes-encoded function selector and calldata for the call.\\n struct Action {\\n address to;\\n uint256 value;\\n bytes data;\\n }\\n\\n /// @notice Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\\n /// @param _where The address of the contract.\\n /// @param _who The address of a EOA or contract to give the permissions.\\n /// @param _permissionId The permission identifier.\\n /// @param _data The optional data passed to the `PermissionCondition` registered.\\n /// @return Returns true if the address has permission, false if not.\\n function hasPermission(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes memory _data\\n ) external view returns (bool);\\n\\n /// @notice Updates the DAO metadata (e.g., an IPFS hash).\\n /// @param _metadata The IPFS hash of the new metadata object.\\n function setMetadata(bytes calldata _metadata) external;\\n\\n /// @notice Emitted when the DAO metadata is updated.\\n /// @param metadata The IPFS hash of the new metadata object.\\n event MetadataSet(bytes metadata);\\n\\n /// @notice Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted.\\n /// @param _callId The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce.\\n /// @param _actions The array of actions.\\n /// @param _allowFailureMap A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @return The array of results obtained from the executed actions in `bytes`.\\n /// @return The resulting failure map containing the actions have actually failed.\\n function execute(\\n bytes32 _callId,\\n Action[] memory _actions,\\n uint256 _allowFailureMap\\n ) external returns (bytes[] memory, uint256);\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param actor The address of the caller.\\n /// @param callId The ID of the call.\\n /// @param actions The array of actions executed.\\n /// @param allowFailureMap The allow failure map encoding which actions are allowed to fail.\\n /// @param failureMap The failure map encoding which actions have failed.\\n /// @param execResults The array with the results of the executed actions.\\n /// @dev The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce.\\n event Executed(\\n address indexed actor,\\n bytes32 callId,\\n Action[] actions,\\n uint256 allowFailureMap,\\n uint256 failureMap,\\n bytes[] execResults\\n );\\n\\n /// @notice Emitted when a standard callback is registered.\\n /// @param interfaceId The ID of the interface.\\n /// @param callbackSelector The selector of the callback function.\\n /// @param magicNumber The magic number to be registered for the callback function selector.\\n event StandardCallbackRegistered(\\n bytes4 interfaceId,\\n bytes4 callbackSelector,\\n bytes4 magicNumber\\n );\\n\\n /// @notice Deposits (native) tokens to the DAO contract with a reference string.\\n /// @param _token The address of the token or address(0) in case of the native token.\\n /// @param _amount The amount of tokens to deposit.\\n /// @param _reference The reference describing the deposit reason.\\n function deposit(address _token, uint256 _amount, string calldata _reference) external payable;\\n\\n /// @notice Emitted when a token deposit has been made to the DAO.\\n /// @param sender The address of the sender.\\n /// @param token The address of the deposited token.\\n /// @param amount The amount of tokens deposited.\\n /// @param _reference The reference describing the deposit reason.\\n event Deposited(\\n address indexed sender,\\n address indexed token,\\n uint256 amount,\\n string _reference\\n );\\n\\n /// @notice Emitted when a native token deposit has been made to the DAO.\\n /// @dev This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).\\n /// @param sender The address of the sender.\\n /// @param amount The amount of native tokens deposited.\\n event NativeTokenDeposited(address sender, uint256 amount);\\n\\n /// @notice Setter for the trusted forwarder verifying the meta transaction.\\n /// @param _trustedForwarder The trusted forwarder address.\\n function setTrustedForwarder(address _trustedForwarder) external;\\n\\n /// @notice Getter for the trusted forwarder verifying the meta transaction.\\n /// @return The trusted forwarder address.\\n function getTrustedForwarder() external view returns (address);\\n\\n /// @notice Emitted when a new TrustedForwarder is set on the DAO.\\n /// @param forwarder the new forwarder address.\\n event TrustedForwarderSet(address forwarder);\\n\\n /// @notice Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\\n /// @param _hash The hash of the data to be signed.\\n /// @param _signature The signature byte array associated with `_hash`.\\n /// @return Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not.\\n function isValidSignature(bytes32 _hash, bytes memory _signature) external returns (bytes4);\\n\\n /// @notice Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\\n /// @param _interfaceId The ID of the interface.\\n /// @param _callbackSelector The selector of the callback function.\\n /// @param _magicNumber The magic number to be registered for the function signature.\\n function registerStandardCallback(\\n bytes4 _interfaceId,\\n bytes4 _callbackSelector,\\n bytes4 _magicNumber\\n ) external;\\n\\n /// @notice Removed function being left here to not corrupt the IDAO interface ID. Any call will revert.\\n /// @dev Introduced in v1.0.0. Removed in v1.4.0.\\n function setSignatureValidator(address) external;\\n}\\n\",\"keccak256\":\"0xb7f615523c26de042edce98731c658f44a1edb2464387ac1b642c4c69f57128e\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/extensions/proposal/IProposal.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IDAO} from \\\"../../../dao/IDAO.sol\\\";\\n\\n/// @title IProposal\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface to be implemented by DAO plugins that create and execute proposals.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IProposal {\\n /// @notice Emitted when a proposal is created.\\n /// @param proposalId The ID of the proposal.\\n /// @param creator The creator of the proposal.\\n /// @param startDate The start date of the proposal in seconds.\\n /// @param endDate The end date of the proposal in seconds.\\n /// @param metadata The metadata of the proposal.\\n /// @param actions The actions that will be executed if the proposal passes.\\n /// @param allowFailureMap A bitmap allowing the proposal to succeed, even if individual actions might revert. If the bit at index `i` is 1, the proposal succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n event ProposalCreated(\\n uint256 indexed proposalId,\\n address indexed creator,\\n uint64 startDate,\\n uint64 endDate,\\n bytes metadata,\\n IDAO.Action[] actions,\\n uint256 allowFailureMap\\n );\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param proposalId The ID of the proposal.\\n event ProposalExecuted(uint256 indexed proposalId);\\n\\n /// @notice Creates a new proposal.\\n /// @param data The metadata of the proposal.\\n /// @param actions The actions that will be executed after the proposal passes.\\n /// @param startDate The start date of the proposal.\\n /// @param endDate The end date of the proposal.\\n /// @return proposalId The id of the proposal.\\n function createProposal(\\n bytes memory data,\\n IDAO.Action[] memory actions,\\n uint64 startDate,\\n uint64 endDate\\n ) external returns (uint256 proposalId);\\n\\n /// @notice Whether proposal can be executed or not.\\n /// @param proposalId The id of the proposal.\\n /// @return bool Returns if proposal can be executed or not.\\n function canExecute(uint256 proposalId) external returns (bool);\\n\\n /// @notice Returns the proposal count determining the next proposal ID.\\n /// @dev This function is deprecated TODO:\\n /// @return The proposal count.\\n function proposalCount() external view returns (uint256);\\n}\\n\",\"keccak256\":\"0xb008b4657c712fc0fcb8f7c54a381cc02a0584471b2b2899290a008454f7da71\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"events":{"ProposalCreated(uint256,address,uint64,uint64,bytes,(address,uint256,bytes)[],uint256)":{"notice":"Emitted when a proposal is created."},"ProposalExecuted(uint256)":{"notice":"Emitted when a proposal is executed."}},"kind":"user","methods":{"canExecute(uint256)":{"notice":"Whether proposal can be executed or not."},"createProposal(bytes,(address,uint256,bytes)[],uint64,uint64)":{"notice":"Creates a new proposal."},"proposalCount()":{"notice":"Returns the proposal count determining the next proposal ID."}},"notice":"An interface to be implemented by DAO plugins that create and execute proposals.","version":1}}},"src/plugin/extensions/proposal/Proposal.sol":{"Proposal":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":true,"internalType":"address","name":"creator","type":"address"},{"indexed":false,"internalType":"uint64","name":"startDate","type":"uint64"},{"indexed":false,"internalType":"uint64","name":"endDate","type":"uint64"},{"indexed":false,"internalType":"bytes","name":"metadata","type":"bytes"},{"components":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"indexed":false,"internalType":"struct IDAO.Action[]","name":"actions","type":"tuple[]"},{"indexed":false,"internalType":"uint256","name":"allowFailureMap","type":"uint256"}],"name":"ProposalCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalExecuted","type":"event"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"canExecute","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"data","type":"bytes"},{"components":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct IDAO.Action[]","name":"actions","type":"tuple[]"},{"internalType":"uint64","name":"startDate","type":"uint64"},{"internalType":"uint64","name":"endDate","type":"uint64"}],"name":"createProposal","outputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"proposalCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"author":"Aragon X - 2022-2023","custom:security-contact":"sirt@aragon.org","kind":"dev","methods":{"canExecute(uint256)":{"params":{"proposalId":"The id of the proposal."},"returns":{"_0":"bool Returns if proposal can be executed or not."}},"createProposal(bytes,(address,uint256,bytes)[],uint64,uint64)":{"params":{"actions":"The actions that will be executed after the proposal passes.","data":"The metadata of the proposal.","endDate":"The end date of the proposal.","startDate":"The start date of the proposal."},"returns":{"proposalId":"The id of the proposal."}},"proposalCount()":{"details":"This function is deprecated TODO:","returns":{"_0":"The proposal count."}},"supportsInterface(bytes4)":{"params":{"_interfaceId":"The ID of the interface."},"returns":{"_0":"Returns `true` if the interface is supported."}}},"title":"Proposal","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"canExecute(uint256)":"cc63604a","createProposal(bytes,(address,uint256,bytes)[],uint64,uint64)":"74d786be","proposalCount()":"da35c664","supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"proposalId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"creator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"startDate\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"endDate\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"struct IDAO.Action[]\",\"name\":\"actions\",\"type\":\"tuple[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"allowFailureMap\",\"type\":\"uint256\"}],\"name\":\"ProposalCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"proposalId\",\"type\":\"uint256\"}],\"name\":\"ProposalExecuted\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"proposalId\",\"type\":\"uint256\"}],\"name\":\"canExecute\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IDAO.Action[]\",\"name\":\"actions\",\"type\":\"tuple[]\"},{\"internalType\":\"uint64\",\"name\":\"startDate\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"endDate\",\"type\":\"uint64\"}],\"name\":\"createProposal\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"proposalId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proposalCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Aragon X - 2022-2023\",\"custom:security-contact\":\"sirt@aragon.org\",\"kind\":\"dev\",\"methods\":{\"canExecute(uint256)\":{\"params\":{\"proposalId\":\"The id of the proposal.\"},\"returns\":{\"_0\":\"bool Returns if proposal can be executed or not.\"}},\"createProposal(bytes,(address,uint256,bytes)[],uint64,uint64)\":{\"params\":{\"actions\":\"The actions that will be executed after the proposal passes.\",\"data\":\"The metadata of the proposal.\",\"endDate\":\"The end date of the proposal.\",\"startDate\":\"The start date of the proposal.\"},\"returns\":{\"proposalId\":\"The id of the proposal.\"}},\"proposalCount()\":{\"details\":\"This function is deprecated TODO:\",\"returns\":{\"_0\":\"The proposal count.\"}},\"supportsInterface(bytes4)\":{\"params\":{\"_interfaceId\":\"The ID of the interface.\"},\"returns\":{\"_0\":\"Returns `true` if the interface is supported.\"}}},\"title\":\"Proposal\",\"version\":1},\"userdoc\":{\"events\":{\"ProposalCreated(uint256,address,uint64,uint64,bytes,(address,uint256,bytes)[],uint256)\":{\"notice\":\"Emitted when a proposal is created.\"},\"ProposalExecuted(uint256)\":{\"notice\":\"Emitted when a proposal is executed.\"}},\"kind\":\"user\",\"methods\":{\"canExecute(uint256)\":{\"notice\":\"Whether proposal can be executed or not.\"},\"createProposal(bytes,(address,uint256,bytes)[],uint64,uint64)\":{\"notice\":\"Creates a new proposal.\"},\"proposalCount()\":{\"notice\":\"Returns the proposal count determining the next proposal ID.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Checks if this or the parent contract supports an interface by its ID.\"}},\"notice\":\"An abstract contract containing the traits and internal functionality to create and execute proposals that can be inherited by non-upgradeable DAO plugins.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/plugin/extensions/proposal/Proposal.sol\":\"Proposal\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Counters.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Counters.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title Counters\\n * @author Matt Condon (@shrugs)\\n * @dev Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number\\n * of elements in a mapping, issuing ERC721 ids, or counting request ids.\\n *\\n * Include with `using Counters for Counters.Counter;`\\n */\\nlibrary Counters {\\n struct Counter {\\n // This variable should never be directly accessed by users of the library: interactions must be restricted to\\n // the library's function. As of Solidity v0.5.2, this cannot be enforced, though there is a proposal to add\\n // this feature: see https://github.com/ethereum/solidity/issues/4637\\n uint256 _value; // default: 0\\n }\\n\\n function current(Counter storage counter) internal view returns (uint256) {\\n return counter._value;\\n }\\n\\n function increment(Counter storage counter) internal {\\n unchecked {\\n counter._value += 1;\\n }\\n }\\n\\n function decrement(Counter storage counter) internal {\\n uint256 value = counter._value;\\n require(value > 0, \\\"Counter: decrement overflow\\\");\\n unchecked {\\n counter._value = value - 1;\\n }\\n }\\n\\n function reset(Counter storage counter) internal {\\n counter._value = 0;\\n }\\n}\\n\",\"keccak256\":\"0xf0018c2440fbe238dd3a8732fa8e17a0f9dce84d31451dc8a32f6d62b349c9f1\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165 is IERC165 {\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165).interfaceId;\\n }\\n}\\n\",\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"src/dao/IDAO.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IDAO\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for DAOs within the Aragon App DAO framework.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IDAO {\\n /// @notice The action struct to be consumed by the DAO's `execute` function resulting in an external call.\\n /// @param to The address to call.\\n /// @param value The native token value to be sent with the call.\\n /// @param data The bytes-encoded function selector and calldata for the call.\\n struct Action {\\n address to;\\n uint256 value;\\n bytes data;\\n }\\n\\n /// @notice Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\\n /// @param _where The address of the contract.\\n /// @param _who The address of a EOA or contract to give the permissions.\\n /// @param _permissionId The permission identifier.\\n /// @param _data The optional data passed to the `PermissionCondition` registered.\\n /// @return Returns true if the address has permission, false if not.\\n function hasPermission(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes memory _data\\n ) external view returns (bool);\\n\\n /// @notice Updates the DAO metadata (e.g., an IPFS hash).\\n /// @param _metadata The IPFS hash of the new metadata object.\\n function setMetadata(bytes calldata _metadata) external;\\n\\n /// @notice Emitted when the DAO metadata is updated.\\n /// @param metadata The IPFS hash of the new metadata object.\\n event MetadataSet(bytes metadata);\\n\\n /// @notice Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted.\\n /// @param _callId The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce.\\n /// @param _actions The array of actions.\\n /// @param _allowFailureMap A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @return The array of results obtained from the executed actions in `bytes`.\\n /// @return The resulting failure map containing the actions have actually failed.\\n function execute(\\n bytes32 _callId,\\n Action[] memory _actions,\\n uint256 _allowFailureMap\\n ) external returns (bytes[] memory, uint256);\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param actor The address of the caller.\\n /// @param callId The ID of the call.\\n /// @param actions The array of actions executed.\\n /// @param allowFailureMap The allow failure map encoding which actions are allowed to fail.\\n /// @param failureMap The failure map encoding which actions have failed.\\n /// @param execResults The array with the results of the executed actions.\\n /// @dev The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce.\\n event Executed(\\n address indexed actor,\\n bytes32 callId,\\n Action[] actions,\\n uint256 allowFailureMap,\\n uint256 failureMap,\\n bytes[] execResults\\n );\\n\\n /// @notice Emitted when a standard callback is registered.\\n /// @param interfaceId The ID of the interface.\\n /// @param callbackSelector The selector of the callback function.\\n /// @param magicNumber The magic number to be registered for the callback function selector.\\n event StandardCallbackRegistered(\\n bytes4 interfaceId,\\n bytes4 callbackSelector,\\n bytes4 magicNumber\\n );\\n\\n /// @notice Deposits (native) tokens to the DAO contract with a reference string.\\n /// @param _token The address of the token or address(0) in case of the native token.\\n /// @param _amount The amount of tokens to deposit.\\n /// @param _reference The reference describing the deposit reason.\\n function deposit(address _token, uint256 _amount, string calldata _reference) external payable;\\n\\n /// @notice Emitted when a token deposit has been made to the DAO.\\n /// @param sender The address of the sender.\\n /// @param token The address of the deposited token.\\n /// @param amount The amount of tokens deposited.\\n /// @param _reference The reference describing the deposit reason.\\n event Deposited(\\n address indexed sender,\\n address indexed token,\\n uint256 amount,\\n string _reference\\n );\\n\\n /// @notice Emitted when a native token deposit has been made to the DAO.\\n /// @dev This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).\\n /// @param sender The address of the sender.\\n /// @param amount The amount of native tokens deposited.\\n event NativeTokenDeposited(address sender, uint256 amount);\\n\\n /// @notice Setter for the trusted forwarder verifying the meta transaction.\\n /// @param _trustedForwarder The trusted forwarder address.\\n function setTrustedForwarder(address _trustedForwarder) external;\\n\\n /// @notice Getter for the trusted forwarder verifying the meta transaction.\\n /// @return The trusted forwarder address.\\n function getTrustedForwarder() external view returns (address);\\n\\n /// @notice Emitted when a new TrustedForwarder is set on the DAO.\\n /// @param forwarder the new forwarder address.\\n event TrustedForwarderSet(address forwarder);\\n\\n /// @notice Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\\n /// @param _hash The hash of the data to be signed.\\n /// @param _signature The signature byte array associated with `_hash`.\\n /// @return Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not.\\n function isValidSignature(bytes32 _hash, bytes memory _signature) external returns (bytes4);\\n\\n /// @notice Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\\n /// @param _interfaceId The ID of the interface.\\n /// @param _callbackSelector The selector of the callback function.\\n /// @param _magicNumber The magic number to be registered for the function signature.\\n function registerStandardCallback(\\n bytes4 _interfaceId,\\n bytes4 _callbackSelector,\\n bytes4 _magicNumber\\n ) external;\\n\\n /// @notice Removed function being left here to not corrupt the IDAO interface ID. Any call will revert.\\n /// @dev Introduced in v1.0.0. Removed in v1.4.0.\\n function setSignatureValidator(address) external;\\n}\\n\",\"keccak256\":\"0xb7f615523c26de042edce98731c658f44a1edb2464387ac1b642c4c69f57128e\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/extensions/proposal/IProposal.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IDAO} from \\\"../../../dao/IDAO.sol\\\";\\n\\n/// @title IProposal\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface to be implemented by DAO plugins that create and execute proposals.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IProposal {\\n /// @notice Emitted when a proposal is created.\\n /// @param proposalId The ID of the proposal.\\n /// @param creator The creator of the proposal.\\n /// @param startDate The start date of the proposal in seconds.\\n /// @param endDate The end date of the proposal in seconds.\\n /// @param metadata The metadata of the proposal.\\n /// @param actions The actions that will be executed if the proposal passes.\\n /// @param allowFailureMap A bitmap allowing the proposal to succeed, even if individual actions might revert. If the bit at index `i` is 1, the proposal succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n event ProposalCreated(\\n uint256 indexed proposalId,\\n address indexed creator,\\n uint64 startDate,\\n uint64 endDate,\\n bytes metadata,\\n IDAO.Action[] actions,\\n uint256 allowFailureMap\\n );\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param proposalId The ID of the proposal.\\n event ProposalExecuted(uint256 indexed proposalId);\\n\\n /// @notice Creates a new proposal.\\n /// @param data The metadata of the proposal.\\n /// @param actions The actions that will be executed after the proposal passes.\\n /// @param startDate The start date of the proposal.\\n /// @param endDate The end date of the proposal.\\n /// @return proposalId The id of the proposal.\\n function createProposal(\\n bytes memory data,\\n IDAO.Action[] memory actions,\\n uint64 startDate,\\n uint64 endDate\\n ) external returns (uint256 proposalId);\\n\\n /// @notice Whether proposal can be executed or not.\\n /// @param proposalId The id of the proposal.\\n /// @return bool Returns if proposal can be executed or not.\\n function canExecute(uint256 proposalId) external returns (bool);\\n\\n /// @notice Returns the proposal count determining the next proposal ID.\\n /// @dev This function is deprecated TODO:\\n /// @return The proposal count.\\n function proposalCount() external view returns (uint256);\\n}\\n\",\"keccak256\":\"0xb008b4657c712fc0fcb8f7c54a381cc02a0584471b2b2899290a008454f7da71\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/extensions/proposal/Proposal.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {Counters} from \\\"@openzeppelin/contracts/utils/Counters.sol\\\";\\nimport {ERC165} from \\\"@openzeppelin/contracts/utils/introspection/ERC165.sol\\\";\\n\\nimport {IDAO} from \\\"../../../dao/IDAO.sol\\\";\\nimport {IProposal} from \\\"./IProposal.sol\\\";\\n\\n/// @title Proposal\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract contract containing the traits and internal functionality to create and execute proposals that can be inherited by non-upgradeable DAO plugins.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract Proposal is IProposal, ERC165 {\\n using Counters for Counters.Counter;\\n\\n /// @notice The incremental ID for proposals and executions.\\n Counters.Counter private proposalCounter;\\n\\n /// Shall we remove this ? Does anyone use this ? if we keep having this,\\n // this will not return the correct value anyways anymore.\\n /// @inheritdoc IProposal\\n function proposalCount() public view override returns (uint256) {\\n return proposalCounter.current();\\n }\\n\\n /// @notice Checks if this or the parent contract supports an interface by its ID.\\n /// @param _interfaceId The ID of the interface.\\n /// @return Returns `true` if the interface is supported.\\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\\n // In addition to the current interfaceId, also support previous version of the interfaceId that did not\\n // include the createProposal() function as standard\\n return\\n _interfaceId ==\\n type(IProposal).interfaceId ^\\n IProposal.createProposal.selector ^\\n IProposal.canExecute.selector ||\\n _interfaceId == type(IProposal).interfaceId ||\\n super.supportsInterface(_interfaceId);\\n }\\n}\\n\",\"keccak256\":\"0xd08bc8fa50634f4d9e95ed25ccaad3685fe695841ce7ca36b01e3318b825b588\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[{"astId":4659,"contract":"src/plugin/extensions/proposal/Proposal.sol:Proposal","label":"proposalCounter","offset":0,"slot":"0","type":"t_struct(Counter)2173_storage"}],"types":{"t_struct(Counter)2173_storage":{"encoding":"inplace","label":"struct Counters.Counter","members":[{"astId":2172,"contract":"src/plugin/extensions/proposal/Proposal.sol:Proposal","label":"_value","offset":0,"slot":"0","type":"t_uint256"}],"numberOfBytes":"32"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"userdoc":{"events":{"ProposalCreated(uint256,address,uint64,uint64,bytes,(address,uint256,bytes)[],uint256)":{"notice":"Emitted when a proposal is created."},"ProposalExecuted(uint256)":{"notice":"Emitted when a proposal is executed."}},"kind":"user","methods":{"canExecute(uint256)":{"notice":"Whether proposal can be executed or not."},"createProposal(bytes,(address,uint256,bytes)[],uint64,uint64)":{"notice":"Creates a new proposal."},"proposalCount()":{"notice":"Returns the proposal count determining the next proposal ID."},"supportsInterface(bytes4)":{"notice":"Checks if this or the parent contract supports an interface by its ID."}},"notice":"An abstract contract containing the traits and internal functionality to create and execute proposals that can be inherited by non-upgradeable DAO plugins.","version":1}}},"src/plugin/extensions/proposal/ProposalUpgradeable.sol":{"ProposalUpgradeable":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":true,"internalType":"address","name":"creator","type":"address"},{"indexed":false,"internalType":"uint64","name":"startDate","type":"uint64"},{"indexed":false,"internalType":"uint64","name":"endDate","type":"uint64"},{"indexed":false,"internalType":"bytes","name":"metadata","type":"bytes"},{"components":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"indexed":false,"internalType":"struct IDAO.Action[]","name":"actions","type":"tuple[]"},{"indexed":false,"internalType":"uint256","name":"allowFailureMap","type":"uint256"}],"name":"ProposalCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalExecuted","type":"event"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"canExecute","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"data","type":"bytes"},{"components":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct IDAO.Action[]","name":"actions","type":"tuple[]"},{"internalType":"uint64","name":"startDate","type":"uint64"},{"internalType":"uint64","name":"endDate","type":"uint64"}],"name":"createProposal","outputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"proposalCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"author":"Aragon X - 2022-2023","custom:security-contact":"sirt@aragon.org","kind":"dev","methods":{"canExecute(uint256)":{"params":{"proposalId":"The id of the proposal."},"returns":{"_0":"bool Returns if proposal can be executed or not."}},"createProposal(bytes,(address,uint256,bytes)[],uint64,uint64)":{"params":{"actions":"The actions that will be executed after the proposal passes.","data":"The metadata of the proposal.","endDate":"The end date of the proposal.","startDate":"The start date of the proposal."},"returns":{"proposalId":"The id of the proposal."}},"proposalCount()":{"details":"This function is deprecated TODO:","returns":{"_0":"The proposal count."}},"supportsInterface(bytes4)":{"params":{"_interfaceId":"The ID of the interface."},"returns":{"_0":"Returns `true` if the interface is supported."}}},"title":"ProposalUpgradeable","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"canExecute(uint256)":"cc63604a","createProposal(bytes,(address,uint256,bytes)[],uint64,uint64)":"74d786be","proposalCount()":"da35c664","supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"proposalId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"creator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"startDate\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"endDate\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"struct IDAO.Action[]\",\"name\":\"actions\",\"type\":\"tuple[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"allowFailureMap\",\"type\":\"uint256\"}],\"name\":\"ProposalCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"proposalId\",\"type\":\"uint256\"}],\"name\":\"ProposalExecuted\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"proposalId\",\"type\":\"uint256\"}],\"name\":\"canExecute\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IDAO.Action[]\",\"name\":\"actions\",\"type\":\"tuple[]\"},{\"internalType\":\"uint64\",\"name\":\"startDate\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"endDate\",\"type\":\"uint64\"}],\"name\":\"createProposal\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"proposalId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proposalCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Aragon X - 2022-2023\",\"custom:security-contact\":\"sirt@aragon.org\",\"kind\":\"dev\",\"methods\":{\"canExecute(uint256)\":{\"params\":{\"proposalId\":\"The id of the proposal.\"},\"returns\":{\"_0\":\"bool Returns if proposal can be executed or not.\"}},\"createProposal(bytes,(address,uint256,bytes)[],uint64,uint64)\":{\"params\":{\"actions\":\"The actions that will be executed after the proposal passes.\",\"data\":\"The metadata of the proposal.\",\"endDate\":\"The end date of the proposal.\",\"startDate\":\"The start date of the proposal.\"},\"returns\":{\"proposalId\":\"The id of the proposal.\"}},\"proposalCount()\":{\"details\":\"This function is deprecated TODO:\",\"returns\":{\"_0\":\"The proposal count.\"}},\"supportsInterface(bytes4)\":{\"params\":{\"_interfaceId\":\"The ID of the interface.\"},\"returns\":{\"_0\":\"Returns `true` if the interface is supported.\"}}},\"title\":\"ProposalUpgradeable\",\"version\":1},\"userdoc\":{\"events\":{\"ProposalCreated(uint256,address,uint64,uint64,bytes,(address,uint256,bytes)[],uint256)\":{\"notice\":\"Emitted when a proposal is created.\"},\"ProposalExecuted(uint256)\":{\"notice\":\"Emitted when a proposal is executed.\"}},\"kind\":\"user\",\"methods\":{\"canExecute(uint256)\":{\"notice\":\"Whether proposal can be executed or not.\"},\"createProposal(bytes,(address,uint256,bytes)[],uint64,uint64)\":{\"notice\":\"Creates a new proposal.\"},\"proposalCount()\":{\"notice\":\"Returns the proposal count determining the next proposal ID.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Checks if this or the parent contract supports an interface by its ID.\"}},\"notice\":\"An abstract contract containing the traits and internal functionality to create and execute proposals that can be inherited by upgradeable DAO plugins.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/plugin/extensions/proposal/ProposalUpgradeable.sol\":\"ProposalUpgradeable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Counters.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title Counters\\n * @author Matt Condon (@shrugs)\\n * @dev Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number\\n * of elements in a mapping, issuing ERC721 ids, or counting request ids.\\n *\\n * Include with `using Counters for Counters.Counter;`\\n */\\nlibrary CountersUpgradeable {\\n struct Counter {\\n // This variable should never be directly accessed by users of the library: interactions must be restricted to\\n // the library's function. As of Solidity v0.5.2, this cannot be enforced, though there is a proposal to add\\n // this feature: see https://github.com/ethereum/solidity/issues/4637\\n uint256 _value; // default: 0\\n }\\n\\n function current(Counter storage counter) internal view returns (uint256) {\\n return counter._value;\\n }\\n\\n function increment(Counter storage counter) internal {\\n unchecked {\\n counter._value += 1;\\n }\\n }\\n\\n function decrement(Counter storage counter) internal {\\n uint256 value = counter._value;\\n require(value > 0, \\\"Counter: decrement overflow\\\");\\n unchecked {\\n counter._value = value - 1;\\n }\\n }\\n\\n function reset(Counter storage counter) internal {\\n counter._value = 0;\\n }\\n}\\n\",\"keccak256\":\"0x798741e231b22b81e2dd2eddaaf8832dee4baf5cd8e2dbaa5c1dd12a1c053c4d\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165Upgradeable.sol\\\";\\nimport {Initializable} from \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165Upgradeable is Initializable, IERC165Upgradeable {\\n function __ERC165_init() internal onlyInitializing {\\n }\\n\\n function __ERC165_init_unchained() internal onlyInitializing {\\n }\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165Upgradeable).interfaceId;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0xd90d7723512df65ae417adaf0801042940f0dabd60039ceeaffe34aa5b238da1\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165Upgradeable {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\"},\"src/dao/IDAO.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IDAO\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for DAOs within the Aragon App DAO framework.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IDAO {\\n /// @notice The action struct to be consumed by the DAO's `execute` function resulting in an external call.\\n /// @param to The address to call.\\n /// @param value The native token value to be sent with the call.\\n /// @param data The bytes-encoded function selector and calldata for the call.\\n struct Action {\\n address to;\\n uint256 value;\\n bytes data;\\n }\\n\\n /// @notice Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\\n /// @param _where The address of the contract.\\n /// @param _who The address of a EOA or contract to give the permissions.\\n /// @param _permissionId The permission identifier.\\n /// @param _data The optional data passed to the `PermissionCondition` registered.\\n /// @return Returns true if the address has permission, false if not.\\n function hasPermission(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes memory _data\\n ) external view returns (bool);\\n\\n /// @notice Updates the DAO metadata (e.g., an IPFS hash).\\n /// @param _metadata The IPFS hash of the new metadata object.\\n function setMetadata(bytes calldata _metadata) external;\\n\\n /// @notice Emitted when the DAO metadata is updated.\\n /// @param metadata The IPFS hash of the new metadata object.\\n event MetadataSet(bytes metadata);\\n\\n /// @notice Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted.\\n /// @param _callId The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce.\\n /// @param _actions The array of actions.\\n /// @param _allowFailureMap A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @return The array of results obtained from the executed actions in `bytes`.\\n /// @return The resulting failure map containing the actions have actually failed.\\n function execute(\\n bytes32 _callId,\\n Action[] memory _actions,\\n uint256 _allowFailureMap\\n ) external returns (bytes[] memory, uint256);\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param actor The address of the caller.\\n /// @param callId The ID of the call.\\n /// @param actions The array of actions executed.\\n /// @param allowFailureMap The allow failure map encoding which actions are allowed to fail.\\n /// @param failureMap The failure map encoding which actions have failed.\\n /// @param execResults The array with the results of the executed actions.\\n /// @dev The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce.\\n event Executed(\\n address indexed actor,\\n bytes32 callId,\\n Action[] actions,\\n uint256 allowFailureMap,\\n uint256 failureMap,\\n bytes[] execResults\\n );\\n\\n /// @notice Emitted when a standard callback is registered.\\n /// @param interfaceId The ID of the interface.\\n /// @param callbackSelector The selector of the callback function.\\n /// @param magicNumber The magic number to be registered for the callback function selector.\\n event StandardCallbackRegistered(\\n bytes4 interfaceId,\\n bytes4 callbackSelector,\\n bytes4 magicNumber\\n );\\n\\n /// @notice Deposits (native) tokens to the DAO contract with a reference string.\\n /// @param _token The address of the token or address(0) in case of the native token.\\n /// @param _amount The amount of tokens to deposit.\\n /// @param _reference The reference describing the deposit reason.\\n function deposit(address _token, uint256 _amount, string calldata _reference) external payable;\\n\\n /// @notice Emitted when a token deposit has been made to the DAO.\\n /// @param sender The address of the sender.\\n /// @param token The address of the deposited token.\\n /// @param amount The amount of tokens deposited.\\n /// @param _reference The reference describing the deposit reason.\\n event Deposited(\\n address indexed sender,\\n address indexed token,\\n uint256 amount,\\n string _reference\\n );\\n\\n /// @notice Emitted when a native token deposit has been made to the DAO.\\n /// @dev This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).\\n /// @param sender The address of the sender.\\n /// @param amount The amount of native tokens deposited.\\n event NativeTokenDeposited(address sender, uint256 amount);\\n\\n /// @notice Setter for the trusted forwarder verifying the meta transaction.\\n /// @param _trustedForwarder The trusted forwarder address.\\n function setTrustedForwarder(address _trustedForwarder) external;\\n\\n /// @notice Getter for the trusted forwarder verifying the meta transaction.\\n /// @return The trusted forwarder address.\\n function getTrustedForwarder() external view returns (address);\\n\\n /// @notice Emitted when a new TrustedForwarder is set on the DAO.\\n /// @param forwarder the new forwarder address.\\n event TrustedForwarderSet(address forwarder);\\n\\n /// @notice Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\\n /// @param _hash The hash of the data to be signed.\\n /// @param _signature The signature byte array associated with `_hash`.\\n /// @return Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not.\\n function isValidSignature(bytes32 _hash, bytes memory _signature) external returns (bytes4);\\n\\n /// @notice Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\\n /// @param _interfaceId The ID of the interface.\\n /// @param _callbackSelector The selector of the callback function.\\n /// @param _magicNumber The magic number to be registered for the function signature.\\n function registerStandardCallback(\\n bytes4 _interfaceId,\\n bytes4 _callbackSelector,\\n bytes4 _magicNumber\\n ) external;\\n\\n /// @notice Removed function being left here to not corrupt the IDAO interface ID. Any call will revert.\\n /// @dev Introduced in v1.0.0. Removed in v1.4.0.\\n function setSignatureValidator(address) external;\\n}\\n\",\"keccak256\":\"0xb7f615523c26de042edce98731c658f44a1edb2464387ac1b642c4c69f57128e\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/extensions/proposal/IProposal.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IDAO} from \\\"../../../dao/IDAO.sol\\\";\\n\\n/// @title IProposal\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface to be implemented by DAO plugins that create and execute proposals.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IProposal {\\n /// @notice Emitted when a proposal is created.\\n /// @param proposalId The ID of the proposal.\\n /// @param creator The creator of the proposal.\\n /// @param startDate The start date of the proposal in seconds.\\n /// @param endDate The end date of the proposal in seconds.\\n /// @param metadata The metadata of the proposal.\\n /// @param actions The actions that will be executed if the proposal passes.\\n /// @param allowFailureMap A bitmap allowing the proposal to succeed, even if individual actions might revert. If the bit at index `i` is 1, the proposal succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n event ProposalCreated(\\n uint256 indexed proposalId,\\n address indexed creator,\\n uint64 startDate,\\n uint64 endDate,\\n bytes metadata,\\n IDAO.Action[] actions,\\n uint256 allowFailureMap\\n );\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param proposalId The ID of the proposal.\\n event ProposalExecuted(uint256 indexed proposalId);\\n\\n /// @notice Creates a new proposal.\\n /// @param data The metadata of the proposal.\\n /// @param actions The actions that will be executed after the proposal passes.\\n /// @param startDate The start date of the proposal.\\n /// @param endDate The end date of the proposal.\\n /// @return proposalId The id of the proposal.\\n function createProposal(\\n bytes memory data,\\n IDAO.Action[] memory actions,\\n uint64 startDate,\\n uint64 endDate\\n ) external returns (uint256 proposalId);\\n\\n /// @notice Whether proposal can be executed or not.\\n /// @param proposalId The id of the proposal.\\n /// @return bool Returns if proposal can be executed or not.\\n function canExecute(uint256 proposalId) external returns (bool);\\n\\n /// @notice Returns the proposal count determining the next proposal ID.\\n /// @dev This function is deprecated TODO:\\n /// @return The proposal count.\\n function proposalCount() external view returns (uint256);\\n}\\n\",\"keccak256\":\"0xb008b4657c712fc0fcb8f7c54a381cc02a0584471b2b2899290a008454f7da71\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/extensions/proposal/ProposalUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {CountersUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol\\\";\\nimport {ERC165Upgradeable} from \\\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\\\";\\n\\nimport {IDAO} from \\\"../../../dao/IDAO.sol\\\";\\nimport {IProposal} from \\\"./IProposal.sol\\\";\\n\\n/// @title ProposalUpgradeable\\n/// @author Aragon X - 2022-2023\\n/// @notice An abstract contract containing the traits and internal functionality to create and execute proposals that can be inherited by upgradeable DAO plugins.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract ProposalUpgradeable is IProposal, ERC165Upgradeable {\\n using CountersUpgradeable for CountersUpgradeable.Counter;\\n\\n /// @notice The incremental ID for proposals and executions.\\n CountersUpgradeable.Counter private proposalCounter;\\n\\n /// @inheritdoc IProposal\\n function proposalCount() public view override returns (uint256) {\\n return proposalCounter.current();\\n }\\n\\n /// @notice Checks if this or the parent contract supports an interface by its ID.\\n /// @param _interfaceId The ID of the interface.\\n /// @return Returns `true` if the interface is supported.\\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\\n // In addition to the current interfaceId, also support previous version of the interfaceId that did not\\n // include the createProposal() function as standard\\n return\\n _interfaceId ==\\n type(IProposal).interfaceId ^\\n IProposal.createProposal.selector ^\\n IProposal.canExecute.selector ||\\n _interfaceId == type(IProposal).interfaceId ||\\n super.supportsInterface(_interfaceId);\\n }\\n\\n /// @notice This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain (see [OpenZeppelin's guide about storage gaps](https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps)).\\n uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0x528501e364d5a414c4c04cff0a47eeded5d7b22b52d33eb8d9f138a6e4e3251c\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[{"astId":372,"contract":"src/plugin/extensions/proposal/ProposalUpgradeable.sol:ProposalUpgradeable","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":375,"contract":"src/plugin/extensions/proposal/ProposalUpgradeable.sol:ProposalUpgradeable","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":1280,"contract":"src/plugin/extensions/proposal/ProposalUpgradeable.sol:ProposalUpgradeable","label":"__gap","offset":0,"slot":"1","type":"t_array(t_uint256)50_storage"},{"astId":4732,"contract":"src/plugin/extensions/proposal/ProposalUpgradeable.sol:ProposalUpgradeable","label":"proposalCounter","offset":0,"slot":"51","type":"t_struct(Counter)1058_storage"},{"astId":4786,"contract":"src/plugin/extensions/proposal/ProposalUpgradeable.sol:ProposalUpgradeable","label":"__gap","offset":0,"slot":"52","type":"t_array(t_uint256)49_storage"}],"types":{"t_array(t_uint256)49_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[49]","numberOfBytes":"1568"},"t_array(t_uint256)50_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[50]","numberOfBytes":"1600"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_struct(Counter)1058_storage":{"encoding":"inplace","label":"struct CountersUpgradeable.Counter","members":[{"astId":1057,"contract":"src/plugin/extensions/proposal/ProposalUpgradeable.sol:ProposalUpgradeable","label":"_value","offset":0,"slot":"0","type":"t_uint256"}],"numberOfBytes":"32"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"events":{"ProposalCreated(uint256,address,uint64,uint64,bytes,(address,uint256,bytes)[],uint256)":{"notice":"Emitted when a proposal is created."},"ProposalExecuted(uint256)":{"notice":"Emitted when a proposal is executed."}},"kind":"user","methods":{"canExecute(uint256)":{"notice":"Whether proposal can be executed or not."},"createProposal(bytes,(address,uint256,bytes)[],uint64,uint64)":{"notice":"Creates a new proposal."},"proposalCount()":{"notice":"Returns the proposal count determining the next proposal ID."},"supportsInterface(bytes4)":{"notice":"Checks if this or the parent contract supports an interface by its ID."}},"notice":"An abstract contract containing the traits and internal functionality to create and execute proposals that can be inherited by upgradeable DAO plugins.","version":1}}},"src/plugin/setup/IPluginSetup.sol":{"IPluginSetup":{"abi":[{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_dao","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"prepareInstallation","outputs":[{"internalType":"address","name":"plugin","type":"address"},{"components":[{"internalType":"address[]","name":"helpers","type":"address[]"},{"components":[{"internalType":"enum PermissionLib.Operation","name":"operation","type":"uint8"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"condition","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"internalType":"struct PermissionLib.MultiTargetPermission[]","name":"permissions","type":"tuple[]"}],"internalType":"struct IPluginSetup.PreparedSetupData","name":"preparedSetupData","type":"tuple"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_dao","type":"address"},{"components":[{"internalType":"address","name":"plugin","type":"address"},{"internalType":"address[]","name":"currentHelpers","type":"address[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct IPluginSetup.SetupPayload","name":"_payload","type":"tuple"}],"name":"prepareUninstallation","outputs":[{"components":[{"internalType":"enum PermissionLib.Operation","name":"operation","type":"uint8"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"condition","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"internalType":"struct PermissionLib.MultiTargetPermission[]","name":"permissions","type":"tuple[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_dao","type":"address"},{"internalType":"uint16","name":"_fromBuild","type":"uint16"},{"components":[{"internalType":"address","name":"plugin","type":"address"},{"internalType":"address[]","name":"currentHelpers","type":"address[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct IPluginSetup.SetupPayload","name":"_payload","type":"tuple"}],"name":"prepareUpdate","outputs":[{"internalType":"bytes","name":"initData","type":"bytes"},{"components":[{"internalType":"address[]","name":"helpers","type":"address[]"},{"components":[{"internalType":"enum PermissionLib.Operation","name":"operation","type":"uint8"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"condition","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"internalType":"struct PermissionLib.MultiTargetPermission[]","name":"permissions","type":"tuple[]"}],"internalType":"struct IPluginSetup.PreparedSetupData","name":"preparedSetupData","type":"tuple"}],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"author":"Aragon X - 2022-2023","custom:security-contact":"sirt@aragon.org","kind":"dev","methods":{"implementation()":{"details":"The implementation can be instantiated via the `new` keyword, cloned via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)), or proxied via the UUPS proxy pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).","returns":{"_0":"The address of the plugin implementation contract."}},"prepareInstallation(address,bytes)":{"params":{"_dao":"The address of the installing DAO.","_data":"The bytes-encoded data containing the input parameters for the installation as specified in the plugin's build metadata JSON file."},"returns":{"plugin":"The address of the `Plugin` contract being prepared for installation.","preparedSetupData":"The deployed plugin's relevant data which consists of helpers and permissions."}},"prepareUninstallation(address,(address,address[],bytes))":{"params":{"_dao":"The address of the uninstalling DAO.","_payload":"The relevant data necessary for the `prepareUninstallation`. See above."},"returns":{"permissions":"The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the uninstalling DAO."}},"prepareUpdate(address,uint16,(address,address[],bytes))":{"params":{"_dao":"The address of the updating DAO.","_fromBuild":"The build number of the plugin to update from.","_payload":"The relevant data necessary for the `prepareUpdate`. See above."},"returns":{"initData":"The initialization data to be passed to upgradeable contracts when the update is applied in the `PluginSetupProcessor`.","preparedSetupData":"The deployed plugin's relevant data which consists of helpers and permissions."}}},"title":"IPluginSetup","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"implementation()":"5c60da1b","prepareInstallation(address,bytes)":"f10832f1","prepareUninstallation(address,(address,address[],bytes))":"9cb0a124","prepareUpdate(address,uint16,(address,address[],bytes))":"a8a9c29e"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_dao\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"prepareInstallation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"plugin\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address[]\",\"name\":\"helpers\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"enum PermissionLib.Operation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"condition\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PermissionLib.MultiTargetPermission[]\",\"name\":\"permissions\",\"type\":\"tuple[]\"}],\"internalType\":\"struct IPluginSetup.PreparedSetupData\",\"name\":\"preparedSetupData\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_dao\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"plugin\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"currentHelpers\",\"type\":\"address[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IPluginSetup.SetupPayload\",\"name\":\"_payload\",\"type\":\"tuple\"}],\"name\":\"prepareUninstallation\",\"outputs\":[{\"components\":[{\"internalType\":\"enum PermissionLib.Operation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"condition\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PermissionLib.MultiTargetPermission[]\",\"name\":\"permissions\",\"type\":\"tuple[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_dao\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"_fromBuild\",\"type\":\"uint16\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"plugin\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"currentHelpers\",\"type\":\"address[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IPluginSetup.SetupPayload\",\"name\":\"_payload\",\"type\":\"tuple\"}],\"name\":\"prepareUpdate\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"initData\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address[]\",\"name\":\"helpers\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"enum PermissionLib.Operation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"condition\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PermissionLib.MultiTargetPermission[]\",\"name\":\"permissions\",\"type\":\"tuple[]\"}],\"internalType\":\"struct IPluginSetup.PreparedSetupData\",\"name\":\"preparedSetupData\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Aragon X - 2022-2023\",\"custom:security-contact\":\"sirt@aragon.org\",\"kind\":\"dev\",\"methods\":{\"implementation()\":{\"details\":\"The implementation can be instantiated via the `new` keyword, cloned via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)), or proxied via the UUPS proxy pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\",\"returns\":{\"_0\":\"The address of the plugin implementation contract.\"}},\"prepareInstallation(address,bytes)\":{\"params\":{\"_dao\":\"The address of the installing DAO.\",\"_data\":\"The bytes-encoded data containing the input parameters for the installation as specified in the plugin's build metadata JSON file.\"},\"returns\":{\"plugin\":\"The address of the `Plugin` contract being prepared for installation.\",\"preparedSetupData\":\"The deployed plugin's relevant data which consists of helpers and permissions.\"}},\"prepareUninstallation(address,(address,address[],bytes))\":{\"params\":{\"_dao\":\"The address of the uninstalling DAO.\",\"_payload\":\"The relevant data necessary for the `prepareUninstallation`. See above.\"},\"returns\":{\"permissions\":\"The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the uninstalling DAO.\"}},\"prepareUpdate(address,uint16,(address,address[],bytes))\":{\"params\":{\"_dao\":\"The address of the updating DAO.\",\"_fromBuild\":\"The build number of the plugin to update from.\",\"_payload\":\"The relevant data necessary for the `prepareUpdate`. See above.\"},\"returns\":{\"initData\":\"The initialization data to be passed to upgradeable contracts when the update is applied in the `PluginSetupProcessor`.\",\"preparedSetupData\":\"The deployed plugin's relevant data which consists of helpers and permissions.\"}}},\"title\":\"IPluginSetup\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"implementation()\":{\"notice\":\"Returns the plugin implementation address.\"},\"prepareInstallation(address,bytes)\":{\"notice\":\"Prepares the installation of a plugin.\"},\"prepareUninstallation(address,(address,address[],bytes))\":{\"notice\":\"Prepares the uninstallation of a plugin.\"},\"prepareUpdate(address,uint16,(address,address[],bytes))\":{\"notice\":\"Prepares the update of a plugin.\"}},\"notice\":\"The interface required for a plugin setup contract to be consumed by the `PluginSetupProcessor` for plugin installations, updates, and uninstallations.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/plugin/setup/IPluginSetup.sol\":\"IPluginSetup\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"src/dao/IDAO.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IDAO\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for DAOs within the Aragon App DAO framework.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IDAO {\\n /// @notice The action struct to be consumed by the DAO's `execute` function resulting in an external call.\\n /// @param to The address to call.\\n /// @param value The native token value to be sent with the call.\\n /// @param data The bytes-encoded function selector and calldata for the call.\\n struct Action {\\n address to;\\n uint256 value;\\n bytes data;\\n }\\n\\n /// @notice Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\\n /// @param _where The address of the contract.\\n /// @param _who The address of a EOA or contract to give the permissions.\\n /// @param _permissionId The permission identifier.\\n /// @param _data The optional data passed to the `PermissionCondition` registered.\\n /// @return Returns true if the address has permission, false if not.\\n function hasPermission(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes memory _data\\n ) external view returns (bool);\\n\\n /// @notice Updates the DAO metadata (e.g., an IPFS hash).\\n /// @param _metadata The IPFS hash of the new metadata object.\\n function setMetadata(bytes calldata _metadata) external;\\n\\n /// @notice Emitted when the DAO metadata is updated.\\n /// @param metadata The IPFS hash of the new metadata object.\\n event MetadataSet(bytes metadata);\\n\\n /// @notice Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted.\\n /// @param _callId The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce.\\n /// @param _actions The array of actions.\\n /// @param _allowFailureMap A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @return The array of results obtained from the executed actions in `bytes`.\\n /// @return The resulting failure map containing the actions have actually failed.\\n function execute(\\n bytes32 _callId,\\n Action[] memory _actions,\\n uint256 _allowFailureMap\\n ) external returns (bytes[] memory, uint256);\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param actor The address of the caller.\\n /// @param callId The ID of the call.\\n /// @param actions The array of actions executed.\\n /// @param allowFailureMap The allow failure map encoding which actions are allowed to fail.\\n /// @param failureMap The failure map encoding which actions have failed.\\n /// @param execResults The array with the results of the executed actions.\\n /// @dev The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce.\\n event Executed(\\n address indexed actor,\\n bytes32 callId,\\n Action[] actions,\\n uint256 allowFailureMap,\\n uint256 failureMap,\\n bytes[] execResults\\n );\\n\\n /// @notice Emitted when a standard callback is registered.\\n /// @param interfaceId The ID of the interface.\\n /// @param callbackSelector The selector of the callback function.\\n /// @param magicNumber The magic number to be registered for the callback function selector.\\n event StandardCallbackRegistered(\\n bytes4 interfaceId,\\n bytes4 callbackSelector,\\n bytes4 magicNumber\\n );\\n\\n /// @notice Deposits (native) tokens to the DAO contract with a reference string.\\n /// @param _token The address of the token or address(0) in case of the native token.\\n /// @param _amount The amount of tokens to deposit.\\n /// @param _reference The reference describing the deposit reason.\\n function deposit(address _token, uint256 _amount, string calldata _reference) external payable;\\n\\n /// @notice Emitted when a token deposit has been made to the DAO.\\n /// @param sender The address of the sender.\\n /// @param token The address of the deposited token.\\n /// @param amount The amount of tokens deposited.\\n /// @param _reference The reference describing the deposit reason.\\n event Deposited(\\n address indexed sender,\\n address indexed token,\\n uint256 amount,\\n string _reference\\n );\\n\\n /// @notice Emitted when a native token deposit has been made to the DAO.\\n /// @dev This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).\\n /// @param sender The address of the sender.\\n /// @param amount The amount of native tokens deposited.\\n event NativeTokenDeposited(address sender, uint256 amount);\\n\\n /// @notice Setter for the trusted forwarder verifying the meta transaction.\\n /// @param _trustedForwarder The trusted forwarder address.\\n function setTrustedForwarder(address _trustedForwarder) external;\\n\\n /// @notice Getter for the trusted forwarder verifying the meta transaction.\\n /// @return The trusted forwarder address.\\n function getTrustedForwarder() external view returns (address);\\n\\n /// @notice Emitted when a new TrustedForwarder is set on the DAO.\\n /// @param forwarder the new forwarder address.\\n event TrustedForwarderSet(address forwarder);\\n\\n /// @notice Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\\n /// @param _hash The hash of the data to be signed.\\n /// @param _signature The signature byte array associated with `_hash`.\\n /// @return Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not.\\n function isValidSignature(bytes32 _hash, bytes memory _signature) external returns (bytes4);\\n\\n /// @notice Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\\n /// @param _interfaceId The ID of the interface.\\n /// @param _callbackSelector The selector of the callback function.\\n /// @param _magicNumber The magic number to be registered for the function signature.\\n function registerStandardCallback(\\n bytes4 _interfaceId,\\n bytes4 _callbackSelector,\\n bytes4 _magicNumber\\n ) external;\\n\\n /// @notice Removed function being left here to not corrupt the IDAO interface ID. Any call will revert.\\n /// @dev Introduced in v1.0.0. Removed in v1.4.0.\\n function setSignatureValidator(address) external;\\n}\\n\",\"keccak256\":\"0xb7f615523c26de042edce98731c658f44a1edb2464387ac1b642c4c69f57128e\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/PermissionLib.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title PermissionLib\\n/// @author Aragon X - 2021-2023\\n/// @notice A library containing objects for permission processing.\\n/// @custom:security-contact sirt@aragon.org\\nlibrary PermissionLib {\\n /// @notice A constant expressing that no condition is applied to a permission.\\n address public constant NO_CONDITION = address(0);\\n\\n /// @notice The types of permission operations available in the `PermissionManager`.\\n /// @param Grant The grant operation setting a permission without a condition.\\n /// @param Revoke The revoke operation removing a permission (that was granted with or without a condition).\\n /// @param GrantWithCondition The grant operation setting a permission with a condition.\\n enum Operation {\\n Grant,\\n Revoke,\\n GrantWithCondition\\n }\\n\\n /// @notice A struct containing the information for a permission to be applied on a single target contract without a condition.\\n /// @param operation The permission operation type.\\n /// @param who The address (EOA or contract) receiving the permission.\\n /// @param permissionId The permission identifier.\\n struct SingleTargetPermission {\\n Operation operation;\\n address who;\\n bytes32 permissionId;\\n }\\n\\n /// @notice A struct containing the information for a permission to be applied on multiple target contracts, optionally, with a condition.\\n /// @param operation The permission operation type.\\n /// @param where The address of the target contract for which `who` receives permission.\\n /// @param who The address (EOA or contract) receiving the permission.\\n /// @param condition The `PermissionCondition` that will be asked for authorization on calls connected to the specified permission identifier.\\n /// @param permissionId The permission identifier.\\n struct MultiTargetPermission {\\n Operation operation;\\n address where;\\n address who;\\n address condition;\\n bytes32 permissionId;\\n }\\n}\\n\",\"keccak256\":\"0x470faf3c4891ebc6420ef6cc09f6098917568ccc79268c90954d1478199b6097\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/setup/IPluginSetup.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {PermissionLib} from \\\"../../permission/PermissionLib.sol\\\";\\n\\n// solhint-disable-next-line no-unused-import\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @title IPluginSetup\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for a plugin setup contract to be consumed by the `PluginSetupProcessor` for plugin installations, updates, and uninstallations.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IPluginSetup {\\n /// @notice The data associated with a prepared setup.\\n /// @param helpers The address array of helpers (contracts or EOAs) associated with this plugin version after the installation or update.\\n /// @param permissions The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the installing or updating DAO.\\n struct PreparedSetupData {\\n address[] helpers;\\n PermissionLib.MultiTargetPermission[] permissions;\\n }\\n\\n /// @notice The payload for plugin updates and uninstallations containing the existing contracts as well as optional data to be consumed by the plugin setup.\\n /// @param plugin The address of the `Plugin`.\\n /// @param currentHelpers The address array of all current helpers (contracts or EOAs) associated with the plugin to update from.\\n /// @param data The bytes-encoded data containing the input parameters for the preparation of update/uninstall as specified in the corresponding ABI on the version's metadata.\\n struct SetupPayload {\\n address plugin;\\n address[] currentHelpers;\\n bytes data;\\n }\\n\\n /// @notice Prepares the installation of a plugin.\\n /// @param _dao The address of the installing DAO.\\n /// @param _data The bytes-encoded data containing the input parameters for the installation as specified in the plugin's build metadata JSON file.\\n /// @return plugin The address of the `Plugin` contract being prepared for installation.\\n /// @return preparedSetupData The deployed plugin's relevant data which consists of helpers and permissions.\\n function prepareInstallation(\\n address _dao,\\n bytes calldata _data\\n ) external returns (address plugin, PreparedSetupData memory preparedSetupData);\\n\\n /// @notice Prepares the update of a plugin.\\n /// @param _dao The address of the updating DAO.\\n /// @param _fromBuild The build number of the plugin to update from.\\n /// @param _payload The relevant data necessary for the `prepareUpdate`. See above.\\n /// @return initData The initialization data to be passed to upgradeable contracts when the update is applied in the `PluginSetupProcessor`.\\n /// @return preparedSetupData The deployed plugin's relevant data which consists of helpers and permissions.\\n function prepareUpdate(\\n address _dao,\\n uint16 _fromBuild,\\n SetupPayload calldata _payload\\n ) external returns (bytes memory initData, PreparedSetupData memory preparedSetupData);\\n\\n /// @notice Prepares the uninstallation of a plugin.\\n /// @param _dao The address of the uninstalling DAO.\\n /// @param _payload The relevant data necessary for the `prepareUninstallation`. See above.\\n /// @return permissions The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the uninstalling DAO.\\n function prepareUninstallation(\\n address _dao,\\n SetupPayload calldata _payload\\n ) external returns (PermissionLib.MultiTargetPermission[] memory permissions);\\n\\n /// @notice Returns the plugin implementation address.\\n /// @return The address of the plugin implementation contract.\\n /// @dev The implementation can be instantiated via the `new` keyword, cloned via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)), or proxied via the UUPS proxy pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0x21c99995208039ac6ace219b6f273243811dc2aa66399e8e499e43ec30b82fa9\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{"implementation()":{"notice":"Returns the plugin implementation address."},"prepareInstallation(address,bytes)":{"notice":"Prepares the installation of a plugin."},"prepareUninstallation(address,(address,address[],bytes))":{"notice":"Prepares the uninstallation of a plugin."},"prepareUpdate(address,uint16,(address,address[],bytes))":{"notice":"Prepares the update of a plugin."}},"notice":"The interface required for a plugin setup contract to be consumed by the `PluginSetupProcessor` for plugin installations, updates, and uninstallations.","version":1}}},"src/plugin/setup/PluginSetup.sol":{"PluginSetup":{"abi":[{"inputs":[],"name":"NonUpgradeablePlugin","type":"error"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_dao","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"prepareInstallation","outputs":[{"internalType":"address","name":"plugin","type":"address"},{"components":[{"internalType":"address[]","name":"helpers","type":"address[]"},{"components":[{"internalType":"enum PermissionLib.Operation","name":"operation","type":"uint8"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"condition","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"internalType":"struct PermissionLib.MultiTargetPermission[]","name":"permissions","type":"tuple[]"}],"internalType":"struct IPluginSetup.PreparedSetupData","name":"preparedSetupData","type":"tuple"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_dao","type":"address"},{"components":[{"internalType":"address","name":"plugin","type":"address"},{"internalType":"address[]","name":"currentHelpers","type":"address[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct IPluginSetup.SetupPayload","name":"_payload","type":"tuple"}],"name":"prepareUninstallation","outputs":[{"components":[{"internalType":"enum PermissionLib.Operation","name":"operation","type":"uint8"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"condition","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"internalType":"struct PermissionLib.MultiTargetPermission[]","name":"permissions","type":"tuple[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_dao","type":"address"},{"internalType":"uint16","name":"_fromBuild","type":"uint16"},{"components":[{"internalType":"address","name":"plugin","type":"address"},{"internalType":"address[]","name":"currentHelpers","type":"address[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct IPluginSetup.SetupPayload","name":"_payload","type":"tuple"}],"name":"prepareUpdate","outputs":[{"internalType":"bytes","name":"","type":"bytes"},{"components":[{"internalType":"address[]","name":"helpers","type":"address[]"},{"components":[{"internalType":"enum PermissionLib.Operation","name":"operation","type":"uint8"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"condition","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"internalType":"struct PermissionLib.MultiTargetPermission[]","name":"permissions","type":"tuple[]"}],"internalType":"struct IPluginSetup.PreparedSetupData","name":"","type":"tuple"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"protocolVersion","outputs":[{"internalType":"uint8[3]","name":"","type":"uint8[3]"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"author":"Aragon X - 2022-2024","custom:security-contact":"sirt@aragon.org","kind":"dev","methods":{"constructor":{"params":{"_implementation":"The address of the plugin implementation contract."}},"implementation()":{"details":"The implementation can be instantiated via the `new` keyword, cloned via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)), or proxied via the UUPS proxy pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).","returns":{"_0":"The address of the plugin implementation contract."}},"prepareInstallation(address,bytes)":{"params":{"_dao":"The address of the installing DAO.","_data":"The bytes-encoded data containing the input parameters for the installation as specified in the plugin's build metadata JSON file."},"returns":{"plugin":"The address of the `Plugin` contract being prepared for installation.","preparedSetupData":"The deployed plugin's relevant data which consists of helpers and permissions."}},"prepareUninstallation(address,(address,address[],bytes))":{"params":{"_dao":"The address of the uninstalling DAO.","_payload":"The relevant data necessary for the `prepareUninstallation`. See above."},"returns":{"permissions":"The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the uninstalling DAO."}},"prepareUpdate(address,uint16,(address,address[],bytes))":{"details":"Since the underlying plugin is non-upgradeable, this non-virtual function must always revert.","params":{"_dao":"The address of the updating DAO.","_fromBuild":"The build number of the plugin to update from.","_payload":"The relevant data necessary for the `prepareUpdate`. See above."},"returns":{"_0":"The initialization data to be passed to upgradeable contracts when the update is applied in the `PluginSetupProcessor`.","_1":"The deployed plugin's relevant data which consists of helpers and permissions."}},"protocolVersion()":{"details":"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.","returns":{"_0":"Returns the semantic Aragon OSx protocol version number."}},"supportsInterface(bytes4)":{"params":{"_interfaceId":"The ID of the interface."},"returns":{"_0":"Returns `true` if the interface is supported."}}},"title":"PluginSetup","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"implementation()":"5c60da1b","prepareInstallation(address,bytes)":"f10832f1","prepareUninstallation(address,(address,address[],bytes))":"9cb0a124","prepareUpdate(address,uint16,(address,address[],bytes))":"a8a9c29e","protocolVersion()":"2ae9c600","supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"NonUpgradeablePlugin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_dao\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"prepareInstallation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"plugin\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address[]\",\"name\":\"helpers\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"enum PermissionLib.Operation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"condition\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PermissionLib.MultiTargetPermission[]\",\"name\":\"permissions\",\"type\":\"tuple[]\"}],\"internalType\":\"struct IPluginSetup.PreparedSetupData\",\"name\":\"preparedSetupData\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_dao\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"plugin\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"currentHelpers\",\"type\":\"address[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IPluginSetup.SetupPayload\",\"name\":\"_payload\",\"type\":\"tuple\"}],\"name\":\"prepareUninstallation\",\"outputs\":[{\"components\":[{\"internalType\":\"enum PermissionLib.Operation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"condition\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PermissionLib.MultiTargetPermission[]\",\"name\":\"permissions\",\"type\":\"tuple[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_dao\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"_fromBuild\",\"type\":\"uint16\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"plugin\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"currentHelpers\",\"type\":\"address[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IPluginSetup.SetupPayload\",\"name\":\"_payload\",\"type\":\"tuple\"}],\"name\":\"prepareUpdate\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address[]\",\"name\":\"helpers\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"enum PermissionLib.Operation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"condition\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PermissionLib.MultiTargetPermission[]\",\"name\":\"permissions\",\"type\":\"tuple[]\"}],\"internalType\":\"struct IPluginSetup.PreparedSetupData\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"protocolVersion\",\"outputs\":[{\"internalType\":\"uint8[3]\",\"name\":\"\",\"type\":\"uint8[3]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Aragon X - 2022-2024\",\"custom:security-contact\":\"sirt@aragon.org\",\"kind\":\"dev\",\"methods\":{\"constructor\":{\"params\":{\"_implementation\":\"The address of the plugin implementation contract.\"}},\"implementation()\":{\"details\":\"The implementation can be instantiated via the `new` keyword, cloned via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)), or proxied via the UUPS proxy pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\",\"returns\":{\"_0\":\"The address of the plugin implementation contract.\"}},\"prepareInstallation(address,bytes)\":{\"params\":{\"_dao\":\"The address of the installing DAO.\",\"_data\":\"The bytes-encoded data containing the input parameters for the installation as specified in the plugin's build metadata JSON file.\"},\"returns\":{\"plugin\":\"The address of the `Plugin` contract being prepared for installation.\",\"preparedSetupData\":\"The deployed plugin's relevant data which consists of helpers and permissions.\"}},\"prepareUninstallation(address,(address,address[],bytes))\":{\"params\":{\"_dao\":\"The address of the uninstalling DAO.\",\"_payload\":\"The relevant data necessary for the `prepareUninstallation`. See above.\"},\"returns\":{\"permissions\":\"The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the uninstalling DAO.\"}},\"prepareUpdate(address,uint16,(address,address[],bytes))\":{\"details\":\"Since the underlying plugin is non-upgradeable, this non-virtual function must always revert.\",\"params\":{\"_dao\":\"The address of the updating DAO.\",\"_fromBuild\":\"The build number of the plugin to update from.\",\"_payload\":\"The relevant data necessary for the `prepareUpdate`. See above.\"},\"returns\":{\"_0\":\"The initialization data to be passed to upgradeable contracts when the update is applied in the `PluginSetupProcessor`.\",\"_1\":\"The deployed plugin's relevant data which consists of helpers and permissions.\"}},\"protocolVersion()\":{\"details\":\"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\",\"returns\":{\"_0\":\"Returns the semantic Aragon OSx protocol version number.\"}},\"supportsInterface(bytes4)\":{\"params\":{\"_interfaceId\":\"The ID of the interface.\"},\"returns\":{\"_0\":\"Returns `true` if the interface is supported.\"}}},\"title\":\"PluginSetup\",\"version\":1},\"userdoc\":{\"errors\":{\"NonUpgradeablePlugin()\":[{\"notice\":\"Thrown when attempting to prepare an update on a non-upgradeable plugin.\"}]},\"kind\":\"user\",\"methods\":{\"constructor\":{\"notice\":\"The contract constructor, that setting the plugin implementation contract.\"},\"implementation()\":{\"notice\":\"Returns the plugin implementation address.\"},\"prepareInstallation(address,bytes)\":{\"notice\":\"Prepares the installation of a plugin.\"},\"prepareUninstallation(address,(address,address[],bytes))\":{\"notice\":\"Prepares the uninstallation of a plugin.\"},\"prepareUpdate(address,uint16,(address,address[],bytes))\":{\"notice\":\"Prepares the update of a plugin.\"},\"protocolVersion()\":{\"notice\":\"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Checks if this or the parent contract supports an interface by its ID.\"}},\"notice\":\"An abstract contract to inherit from to implement the plugin setup for non-upgradeable plugins, i.e, - `Plugin` being deployed via the `new` keyword - `PluginCloneable` being deployed via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)).\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/plugin/setup/PluginSetup.sol\":\"PluginSetup\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165 is IERC165 {\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165).interfaceId;\\n }\\n}\\n\",\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"src/dao/IDAO.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IDAO\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for DAOs within the Aragon App DAO framework.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IDAO {\\n /// @notice The action struct to be consumed by the DAO's `execute` function resulting in an external call.\\n /// @param to The address to call.\\n /// @param value The native token value to be sent with the call.\\n /// @param data The bytes-encoded function selector and calldata for the call.\\n struct Action {\\n address to;\\n uint256 value;\\n bytes data;\\n }\\n\\n /// @notice Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\\n /// @param _where The address of the contract.\\n /// @param _who The address of a EOA or contract to give the permissions.\\n /// @param _permissionId The permission identifier.\\n /// @param _data The optional data passed to the `PermissionCondition` registered.\\n /// @return Returns true if the address has permission, false if not.\\n function hasPermission(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes memory _data\\n ) external view returns (bool);\\n\\n /// @notice Updates the DAO metadata (e.g., an IPFS hash).\\n /// @param _metadata The IPFS hash of the new metadata object.\\n function setMetadata(bytes calldata _metadata) external;\\n\\n /// @notice Emitted when the DAO metadata is updated.\\n /// @param metadata The IPFS hash of the new metadata object.\\n event MetadataSet(bytes metadata);\\n\\n /// @notice Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted.\\n /// @param _callId The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce.\\n /// @param _actions The array of actions.\\n /// @param _allowFailureMap A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @return The array of results obtained from the executed actions in `bytes`.\\n /// @return The resulting failure map containing the actions have actually failed.\\n function execute(\\n bytes32 _callId,\\n Action[] memory _actions,\\n uint256 _allowFailureMap\\n ) external returns (bytes[] memory, uint256);\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param actor The address of the caller.\\n /// @param callId The ID of the call.\\n /// @param actions The array of actions executed.\\n /// @param allowFailureMap The allow failure map encoding which actions are allowed to fail.\\n /// @param failureMap The failure map encoding which actions have failed.\\n /// @param execResults The array with the results of the executed actions.\\n /// @dev The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce.\\n event Executed(\\n address indexed actor,\\n bytes32 callId,\\n Action[] actions,\\n uint256 allowFailureMap,\\n uint256 failureMap,\\n bytes[] execResults\\n );\\n\\n /// @notice Emitted when a standard callback is registered.\\n /// @param interfaceId The ID of the interface.\\n /// @param callbackSelector The selector of the callback function.\\n /// @param magicNumber The magic number to be registered for the callback function selector.\\n event StandardCallbackRegistered(\\n bytes4 interfaceId,\\n bytes4 callbackSelector,\\n bytes4 magicNumber\\n );\\n\\n /// @notice Deposits (native) tokens to the DAO contract with a reference string.\\n /// @param _token The address of the token or address(0) in case of the native token.\\n /// @param _amount The amount of tokens to deposit.\\n /// @param _reference The reference describing the deposit reason.\\n function deposit(address _token, uint256 _amount, string calldata _reference) external payable;\\n\\n /// @notice Emitted when a token deposit has been made to the DAO.\\n /// @param sender The address of the sender.\\n /// @param token The address of the deposited token.\\n /// @param amount The amount of tokens deposited.\\n /// @param _reference The reference describing the deposit reason.\\n event Deposited(\\n address indexed sender,\\n address indexed token,\\n uint256 amount,\\n string _reference\\n );\\n\\n /// @notice Emitted when a native token deposit has been made to the DAO.\\n /// @dev This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).\\n /// @param sender The address of the sender.\\n /// @param amount The amount of native tokens deposited.\\n event NativeTokenDeposited(address sender, uint256 amount);\\n\\n /// @notice Setter for the trusted forwarder verifying the meta transaction.\\n /// @param _trustedForwarder The trusted forwarder address.\\n function setTrustedForwarder(address _trustedForwarder) external;\\n\\n /// @notice Getter for the trusted forwarder verifying the meta transaction.\\n /// @return The trusted forwarder address.\\n function getTrustedForwarder() external view returns (address);\\n\\n /// @notice Emitted when a new TrustedForwarder is set on the DAO.\\n /// @param forwarder the new forwarder address.\\n event TrustedForwarderSet(address forwarder);\\n\\n /// @notice Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\\n /// @param _hash The hash of the data to be signed.\\n /// @param _signature The signature byte array associated with `_hash`.\\n /// @return Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not.\\n function isValidSignature(bytes32 _hash, bytes memory _signature) external returns (bytes4);\\n\\n /// @notice Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\\n /// @param _interfaceId The ID of the interface.\\n /// @param _callbackSelector The selector of the callback function.\\n /// @param _magicNumber The magic number to be registered for the function signature.\\n function registerStandardCallback(\\n bytes4 _interfaceId,\\n bytes4 _callbackSelector,\\n bytes4 _magicNumber\\n ) external;\\n\\n /// @notice Removed function being left here to not corrupt the IDAO interface ID. Any call will revert.\\n /// @dev Introduced in v1.0.0. Removed in v1.4.0.\\n function setSignatureValidator(address) external;\\n}\\n\",\"keccak256\":\"0xb7f615523c26de042edce98731c658f44a1edb2464387ac1b642c4c69f57128e\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/PermissionLib.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title PermissionLib\\n/// @author Aragon X - 2021-2023\\n/// @notice A library containing objects for permission processing.\\n/// @custom:security-contact sirt@aragon.org\\nlibrary PermissionLib {\\n /// @notice A constant expressing that no condition is applied to a permission.\\n address public constant NO_CONDITION = address(0);\\n\\n /// @notice The types of permission operations available in the `PermissionManager`.\\n /// @param Grant The grant operation setting a permission without a condition.\\n /// @param Revoke The revoke operation removing a permission (that was granted with or without a condition).\\n /// @param GrantWithCondition The grant operation setting a permission with a condition.\\n enum Operation {\\n Grant,\\n Revoke,\\n GrantWithCondition\\n }\\n\\n /// @notice A struct containing the information for a permission to be applied on a single target contract without a condition.\\n /// @param operation The permission operation type.\\n /// @param who The address (EOA or contract) receiving the permission.\\n /// @param permissionId The permission identifier.\\n struct SingleTargetPermission {\\n Operation operation;\\n address who;\\n bytes32 permissionId;\\n }\\n\\n /// @notice A struct containing the information for a permission to be applied on multiple target contracts, optionally, with a condition.\\n /// @param operation The permission operation type.\\n /// @param where The address of the target contract for which `who` receives permission.\\n /// @param who The address (EOA or contract) receiving the permission.\\n /// @param condition The `PermissionCondition` that will be asked for authorization on calls connected to the specified permission identifier.\\n /// @param permissionId The permission identifier.\\n struct MultiTargetPermission {\\n Operation operation;\\n address where;\\n address who;\\n address condition;\\n bytes32 permissionId;\\n }\\n}\\n\",\"keccak256\":\"0x470faf3c4891ebc6420ef6cc09f6098917568ccc79268c90954d1478199b6097\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/setup/IPluginSetup.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {PermissionLib} from \\\"../../permission/PermissionLib.sol\\\";\\n\\n// solhint-disable-next-line no-unused-import\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @title IPluginSetup\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for a plugin setup contract to be consumed by the `PluginSetupProcessor` for plugin installations, updates, and uninstallations.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IPluginSetup {\\n /// @notice The data associated with a prepared setup.\\n /// @param helpers The address array of helpers (contracts or EOAs) associated with this plugin version after the installation or update.\\n /// @param permissions The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the installing or updating DAO.\\n struct PreparedSetupData {\\n address[] helpers;\\n PermissionLib.MultiTargetPermission[] permissions;\\n }\\n\\n /// @notice The payload for plugin updates and uninstallations containing the existing contracts as well as optional data to be consumed by the plugin setup.\\n /// @param plugin The address of the `Plugin`.\\n /// @param currentHelpers The address array of all current helpers (contracts or EOAs) associated with the plugin to update from.\\n /// @param data The bytes-encoded data containing the input parameters for the preparation of update/uninstall as specified in the corresponding ABI on the version's metadata.\\n struct SetupPayload {\\n address plugin;\\n address[] currentHelpers;\\n bytes data;\\n }\\n\\n /// @notice Prepares the installation of a plugin.\\n /// @param _dao The address of the installing DAO.\\n /// @param _data The bytes-encoded data containing the input parameters for the installation as specified in the plugin's build metadata JSON file.\\n /// @return plugin The address of the `Plugin` contract being prepared for installation.\\n /// @return preparedSetupData The deployed plugin's relevant data which consists of helpers and permissions.\\n function prepareInstallation(\\n address _dao,\\n bytes calldata _data\\n ) external returns (address plugin, PreparedSetupData memory preparedSetupData);\\n\\n /// @notice Prepares the update of a plugin.\\n /// @param _dao The address of the updating DAO.\\n /// @param _fromBuild The build number of the plugin to update from.\\n /// @param _payload The relevant data necessary for the `prepareUpdate`. See above.\\n /// @return initData The initialization data to be passed to upgradeable contracts when the update is applied in the `PluginSetupProcessor`.\\n /// @return preparedSetupData The deployed plugin's relevant data which consists of helpers and permissions.\\n function prepareUpdate(\\n address _dao,\\n uint16 _fromBuild,\\n SetupPayload calldata _payload\\n ) external returns (bytes memory initData, PreparedSetupData memory preparedSetupData);\\n\\n /// @notice Prepares the uninstallation of a plugin.\\n /// @param _dao The address of the uninstalling DAO.\\n /// @param _payload The relevant data necessary for the `prepareUninstallation`. See above.\\n /// @return permissions The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the uninstalling DAO.\\n function prepareUninstallation(\\n address _dao,\\n SetupPayload calldata _payload\\n ) external returns (PermissionLib.MultiTargetPermission[] memory permissions);\\n\\n /// @notice Returns the plugin implementation address.\\n /// @return The address of the plugin implementation contract.\\n /// @dev The implementation can be instantiated via the `new` keyword, cloned via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)), or proxied via the UUPS proxy pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0x21c99995208039ac6ace219b6f273243811dc2aa66399e8e499e43ec30b82fa9\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/setup/PluginSetup.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ERC165} from \\\"@openzeppelin/contracts/utils/introspection/ERC165.sol\\\";\\n\\nimport {IProtocolVersion} from \\\"../../utils/versioning/IProtocolVersion.sol\\\";\\nimport {ProtocolVersion} from \\\"../../utils/versioning/ProtocolVersion.sol\\\";\\nimport {IPluginSetup} from \\\"./IPluginSetup.sol\\\";\\n\\n/// @title PluginSetup\\n/// @author Aragon X - 2022-2024\\n/// @notice An abstract contract to inherit from to implement the plugin setup for non-upgradeable plugins, i.e,\\n/// - `Plugin` being deployed via the `new` keyword\\n/// - `PluginCloneable` being deployed via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)).\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract PluginSetup is ERC165, IPluginSetup, ProtocolVersion {\\n /// @notice The address of the plugin implementation contract for initial block explorer verification and, in the case of `PluginClonable` implementations, to create [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167) clones from.\\n address internal immutable IMPLEMENTATION;\\n\\n /// @notice Thrown when attempting to prepare an update on a non-upgradeable plugin.\\n error NonUpgradeablePlugin();\\n\\n /// @notice The contract constructor, that setting the plugin implementation contract.\\n /// @param _implementation The address of the plugin implementation contract.\\n constructor(address _implementation) {\\n IMPLEMENTATION = _implementation;\\n }\\n\\n /// @inheritdoc IPluginSetup\\n /// @dev Since the underlying plugin is non-upgradeable, this non-virtual function must always revert.\\n function prepareUpdate(\\n address _dao,\\n uint16 _fromBuild,\\n SetupPayload calldata _payload\\n ) external pure returns (bytes memory, PreparedSetupData memory) {\\n (_dao, _fromBuild, _payload);\\n revert NonUpgradeablePlugin();\\n }\\n\\n /// @notice Checks if this or the parent contract supports an interface by its ID.\\n /// @param _interfaceId The ID of the interface.\\n /// @return Returns `true` if the interface is supported.\\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\\n return\\n _interfaceId == type(IPluginSetup).interfaceId ||\\n _interfaceId == type(IProtocolVersion).interfaceId ||\\n super.supportsInterface(_interfaceId);\\n }\\n\\n /// @inheritdoc IPluginSetup\\n function implementation() public view returns (address) {\\n return IMPLEMENTATION;\\n }\\n}\\n\",\"keccak256\":\"0x93044f8080758c5cf8d621e3614b8150f55572a1770880106a49dfa53784a9d2\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/IProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IProtocolVersion\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the semantic Aragon OSx protocol version number.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IProtocolVersion {\\n /// @notice Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\\n /// @return _version Returns the semantic Aragon OSx protocol version number.\\n /// @dev This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\\n function protocolVersion() external view returns (uint8[3] memory _version);\\n}\\n\",\"keccak256\":\"0x00a4da654d21dc1bdadbdc8bd54bb86c378c56f85e461ccc31303628ea621361\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/ProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IProtocolVersion} from \\\"./IProtocolVersion.sol\\\";\\n\\n/// @title ProtocolVersion\\n/// @author Aragon X - 2023\\n/// @notice An abstract, stateless, non-upgradeable contract providing the current Aragon OSx protocol version number.\\n/// @dev Do not add any new variables to this contract that would shift down storage in the inheritance chain.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract ProtocolVersion is IProtocolVersion {\\n // IMPORTANT: Do not add any storage variable, see the above notice.\\n\\n /// @inheritdoc IProtocolVersion\\n function protocolVersion() public pure returns (uint8[3] memory) {\\n return [1, 4, 0];\\n }\\n}\\n\",\"keccak256\":\"0x3975c937be935f687c6b6b8f379071232681e98cf04b175d72781b819ea52bdb\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"errors":{"NonUpgradeablePlugin()":[{"notice":"Thrown when attempting to prepare an update on a non-upgradeable plugin."}]},"kind":"user","methods":{"constructor":{"notice":"The contract constructor, that setting the plugin implementation contract."},"implementation()":{"notice":"Returns the plugin implementation address."},"prepareInstallation(address,bytes)":{"notice":"Prepares the installation of a plugin."},"prepareUninstallation(address,(address,address[],bytes))":{"notice":"Prepares the uninstallation of a plugin."},"prepareUpdate(address,uint16,(address,address[],bytes))":{"notice":"Prepares the update of a plugin."},"protocolVersion()":{"notice":"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with."},"supportsInterface(bytes4)":{"notice":"Checks if this or the parent contract supports an interface by its ID."}},"notice":"An abstract contract to inherit from to implement the plugin setup for non-upgradeable plugins, i.e, - `Plugin` being deployed via the `new` keyword - `PluginCloneable` being deployed via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)).","version":1}}},"src/plugin/setup/PluginUpgradeableSetup.sol":{"PluginUpgradeableSetup":{"abi":[{"inputs":[{"internalType":"uint16","name":"fromBuild","type":"uint16"},{"internalType":"uint16","name":"thisBuild","type":"uint16"}],"name":"InvalidUpdatePath","type":"error"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_dao","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"prepareInstallation","outputs":[{"internalType":"address","name":"plugin","type":"address"},{"components":[{"internalType":"address[]","name":"helpers","type":"address[]"},{"components":[{"internalType":"enum PermissionLib.Operation","name":"operation","type":"uint8"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"condition","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"internalType":"struct PermissionLib.MultiTargetPermission[]","name":"permissions","type":"tuple[]"}],"internalType":"struct IPluginSetup.PreparedSetupData","name":"preparedSetupData","type":"tuple"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_dao","type":"address"},{"components":[{"internalType":"address","name":"plugin","type":"address"},{"internalType":"address[]","name":"currentHelpers","type":"address[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct IPluginSetup.SetupPayload","name":"_payload","type":"tuple"}],"name":"prepareUninstallation","outputs":[{"components":[{"internalType":"enum PermissionLib.Operation","name":"operation","type":"uint8"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"condition","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"internalType":"struct PermissionLib.MultiTargetPermission[]","name":"permissions","type":"tuple[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_dao","type":"address"},{"internalType":"uint16","name":"_fromBuild","type":"uint16"},{"components":[{"internalType":"address","name":"plugin","type":"address"},{"internalType":"address[]","name":"currentHelpers","type":"address[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct IPluginSetup.SetupPayload","name":"_payload","type":"tuple"}],"name":"prepareUpdate","outputs":[{"internalType":"bytes","name":"initData","type":"bytes"},{"components":[{"internalType":"address[]","name":"helpers","type":"address[]"},{"components":[{"internalType":"enum PermissionLib.Operation","name":"operation","type":"uint8"},{"internalType":"address","name":"where","type":"address"},{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"condition","type":"address"},{"internalType":"bytes32","name":"permissionId","type":"bytes32"}],"internalType":"struct PermissionLib.MultiTargetPermission[]","name":"permissions","type":"tuple[]"}],"internalType":"struct IPluginSetup.PreparedSetupData","name":"preparedSetupData","type":"tuple"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"protocolVersion","outputs":[{"internalType":"uint8[3]","name":"","type":"uint8[3]"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"author":"Aragon X - 2022-2024","custom:security-contact":"sirt@aragon.org","errors":{"InvalidUpdatePath(uint16,uint16)":[{"params":{"fromBuild":"The build number to update from.","thisBuild":"The build number of this setup to update to."}}]},"kind":"dev","methods":{"constructor":{"params":{"_implementation":"The address of the plugin implementation contract."}},"implementation()":{"details":"The implementation can be instantiated via the `new` keyword, cloned via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)), or proxied via the UUPS proxy pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).","returns":{"_0":"The address of the plugin implementation contract."}},"prepareInstallation(address,bytes)":{"params":{"_dao":"The address of the installing DAO.","_data":"The bytes-encoded data containing the input parameters for the installation as specified in the plugin's build metadata JSON file."},"returns":{"plugin":"The address of the `Plugin` contract being prepared for installation.","preparedSetupData":"The deployed plugin's relevant data which consists of helpers and permissions."}},"prepareUninstallation(address,(address,address[],bytes))":{"params":{"_dao":"The address of the uninstalling DAO.","_payload":"The relevant data necessary for the `prepareUninstallation`. See above."},"returns":{"permissions":"The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the uninstalling DAO."}},"prepareUpdate(address,uint16,(address,address[],bytes))":{"params":{"_dao":"The address of the updating DAO.","_fromBuild":"The build number of the plugin to update from.","_payload":"The relevant data necessary for the `prepareUpdate`. See above."},"returns":{"initData":"The initialization data to be passed to upgradeable contracts when the update is applied in the `PluginSetupProcessor`.","preparedSetupData":"The deployed plugin's relevant data which consists of helpers and permissions."}},"protocolVersion()":{"details":"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.","returns":{"_0":"Returns the semantic Aragon OSx protocol version number."}},"supportsInterface(bytes4)":{"params":{"_interfaceId":"The ID of the interface."},"returns":{"_0":"Returns `true` if the interface is supported."}}},"title":"PluginUpgradeableSetup","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"implementation()":"5c60da1b","prepareInstallation(address,bytes)":"f10832f1","prepareUninstallation(address,(address,address[],bytes))":"9cb0a124","prepareUpdate(address,uint16,(address,address[],bytes))":"a8a9c29e","protocolVersion()":"2ae9c600","supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"fromBuild\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"thisBuild\",\"type\":\"uint16\"}],\"name\":\"InvalidUpdatePath\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_dao\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"prepareInstallation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"plugin\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address[]\",\"name\":\"helpers\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"enum PermissionLib.Operation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"condition\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PermissionLib.MultiTargetPermission[]\",\"name\":\"permissions\",\"type\":\"tuple[]\"}],\"internalType\":\"struct IPluginSetup.PreparedSetupData\",\"name\":\"preparedSetupData\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_dao\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"plugin\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"currentHelpers\",\"type\":\"address[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IPluginSetup.SetupPayload\",\"name\":\"_payload\",\"type\":\"tuple\"}],\"name\":\"prepareUninstallation\",\"outputs\":[{\"components\":[{\"internalType\":\"enum PermissionLib.Operation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"condition\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PermissionLib.MultiTargetPermission[]\",\"name\":\"permissions\",\"type\":\"tuple[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_dao\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"_fromBuild\",\"type\":\"uint16\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"plugin\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"currentHelpers\",\"type\":\"address[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IPluginSetup.SetupPayload\",\"name\":\"_payload\",\"type\":\"tuple\"}],\"name\":\"prepareUpdate\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"initData\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address[]\",\"name\":\"helpers\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"enum PermissionLib.Operation\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"condition\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"permissionId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PermissionLib.MultiTargetPermission[]\",\"name\":\"permissions\",\"type\":\"tuple[]\"}],\"internalType\":\"struct IPluginSetup.PreparedSetupData\",\"name\":\"preparedSetupData\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"protocolVersion\",\"outputs\":[{\"internalType\":\"uint8[3]\",\"name\":\"\",\"type\":\"uint8[3]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Aragon X - 2022-2024\",\"custom:security-contact\":\"sirt@aragon.org\",\"errors\":{\"InvalidUpdatePath(uint16,uint16)\":[{\"params\":{\"fromBuild\":\"The build number to update from.\",\"thisBuild\":\"The build number of this setup to update to.\"}}]},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"params\":{\"_implementation\":\"The address of the plugin implementation contract.\"}},\"implementation()\":{\"details\":\"The implementation can be instantiated via the `new` keyword, cloned via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)), or proxied via the UUPS proxy pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\",\"returns\":{\"_0\":\"The address of the plugin implementation contract.\"}},\"prepareInstallation(address,bytes)\":{\"params\":{\"_dao\":\"The address of the installing DAO.\",\"_data\":\"The bytes-encoded data containing the input parameters for the installation as specified in the plugin's build metadata JSON file.\"},\"returns\":{\"plugin\":\"The address of the `Plugin` contract being prepared for installation.\",\"preparedSetupData\":\"The deployed plugin's relevant data which consists of helpers and permissions.\"}},\"prepareUninstallation(address,(address,address[],bytes))\":{\"params\":{\"_dao\":\"The address of the uninstalling DAO.\",\"_payload\":\"The relevant data necessary for the `prepareUninstallation`. See above.\"},\"returns\":{\"permissions\":\"The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the uninstalling DAO.\"}},\"prepareUpdate(address,uint16,(address,address[],bytes))\":{\"params\":{\"_dao\":\"The address of the updating DAO.\",\"_fromBuild\":\"The build number of the plugin to update from.\",\"_payload\":\"The relevant data necessary for the `prepareUpdate`. See above.\"},\"returns\":{\"initData\":\"The initialization data to be passed to upgradeable contracts when the update is applied in the `PluginSetupProcessor`.\",\"preparedSetupData\":\"The deployed plugin's relevant data which consists of helpers and permissions.\"}},\"protocolVersion()\":{\"details\":\"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\",\"returns\":{\"_0\":\"Returns the semantic Aragon OSx protocol version number.\"}},\"supportsInterface(bytes4)\":{\"params\":{\"_interfaceId\":\"The ID of the interface.\"},\"returns\":{\"_0\":\"Returns `true` if the interface is supported.\"}}},\"title\":\"PluginUpgradeableSetup\",\"version\":1},\"userdoc\":{\"errors\":{\"InvalidUpdatePath(uint16,uint16)\":[{\"notice\":\"Thrown when an update path is not available, for example, if this is the initial build.\"}]},\"kind\":\"user\",\"methods\":{\"constructor\":{\"notice\":\"The contract constructor, that setting the plugin implementation contract.\"},\"implementation()\":{\"notice\":\"Returns the plugin implementation address.\"},\"prepareInstallation(address,bytes)\":{\"notice\":\"Prepares the installation of a plugin.\"},\"prepareUninstallation(address,(address,address[],bytes))\":{\"notice\":\"Prepares the uninstallation of a plugin.\"},\"prepareUpdate(address,uint16,(address,address[],bytes))\":{\"notice\":\"Prepares the update of a plugin.\"},\"protocolVersion()\":{\"notice\":\"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Checks if this or the parent contract supports an interface by its ID.\"}},\"notice\":\"An abstract contract to inherit from to implement the plugin setup for upgradeable plugins, i.e, `PluginUUPSUpgradeable` being deployed via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822) and [ERC-1967](https://eips.ethereum.org/EIPS/eip-1967)).\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/plugin/setup/PluginUpgradeableSetup.sol\":\"PluginUpgradeableSetup\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165 is IERC165 {\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165).interfaceId;\\n }\\n}\\n\",\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"src/dao/IDAO.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IDAO\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for DAOs within the Aragon App DAO framework.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IDAO {\\n /// @notice The action struct to be consumed by the DAO's `execute` function resulting in an external call.\\n /// @param to The address to call.\\n /// @param value The native token value to be sent with the call.\\n /// @param data The bytes-encoded function selector and calldata for the call.\\n struct Action {\\n address to;\\n uint256 value;\\n bytes data;\\n }\\n\\n /// @notice Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process.\\n /// @param _where The address of the contract.\\n /// @param _who The address of a EOA or contract to give the permissions.\\n /// @param _permissionId The permission identifier.\\n /// @param _data The optional data passed to the `PermissionCondition` registered.\\n /// @return Returns true if the address has permission, false if not.\\n function hasPermission(\\n address _where,\\n address _who,\\n bytes32 _permissionId,\\n bytes memory _data\\n ) external view returns (bool);\\n\\n /// @notice Updates the DAO metadata (e.g., an IPFS hash).\\n /// @param _metadata The IPFS hash of the new metadata object.\\n function setMetadata(bytes calldata _metadata) external;\\n\\n /// @notice Emitted when the DAO metadata is updated.\\n /// @param metadata The IPFS hash of the new metadata object.\\n event MetadataSet(bytes metadata);\\n\\n /// @notice Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted.\\n /// @param _callId The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce.\\n /// @param _actions The array of actions.\\n /// @param _allowFailureMap A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert.\\n /// @return The array of results obtained from the executed actions in `bytes`.\\n /// @return The resulting failure map containing the actions have actually failed.\\n function execute(\\n bytes32 _callId,\\n Action[] memory _actions,\\n uint256 _allowFailureMap\\n ) external returns (bytes[] memory, uint256);\\n\\n /// @notice Emitted when a proposal is executed.\\n /// @param actor The address of the caller.\\n /// @param callId The ID of the call.\\n /// @param actions The array of actions executed.\\n /// @param allowFailureMap The allow failure map encoding which actions are allowed to fail.\\n /// @param failureMap The failure map encoding which actions have failed.\\n /// @param execResults The array with the results of the executed actions.\\n /// @dev The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce.\\n event Executed(\\n address indexed actor,\\n bytes32 callId,\\n Action[] actions,\\n uint256 allowFailureMap,\\n uint256 failureMap,\\n bytes[] execResults\\n );\\n\\n /// @notice Emitted when a standard callback is registered.\\n /// @param interfaceId The ID of the interface.\\n /// @param callbackSelector The selector of the callback function.\\n /// @param magicNumber The magic number to be registered for the callback function selector.\\n event StandardCallbackRegistered(\\n bytes4 interfaceId,\\n bytes4 callbackSelector,\\n bytes4 magicNumber\\n );\\n\\n /// @notice Deposits (native) tokens to the DAO contract with a reference string.\\n /// @param _token The address of the token or address(0) in case of the native token.\\n /// @param _amount The amount of tokens to deposit.\\n /// @param _reference The reference describing the deposit reason.\\n function deposit(address _token, uint256 _amount, string calldata _reference) external payable;\\n\\n /// @notice Emitted when a token deposit has been made to the DAO.\\n /// @param sender The address of the sender.\\n /// @param token The address of the deposited token.\\n /// @param amount The amount of tokens deposited.\\n /// @param _reference The reference describing the deposit reason.\\n event Deposited(\\n address indexed sender,\\n address indexed token,\\n uint256 amount,\\n string _reference\\n );\\n\\n /// @notice Emitted when a native token deposit has been made to the DAO.\\n /// @dev This event is intended to be emitted in the `receive` function and is therefore bound by the gas limitations for `send`/`transfer` calls introduced by [ERC-2929](https://eips.ethereum.org/EIPS/eip-2929).\\n /// @param sender The address of the sender.\\n /// @param amount The amount of native tokens deposited.\\n event NativeTokenDeposited(address sender, uint256 amount);\\n\\n /// @notice Setter for the trusted forwarder verifying the meta transaction.\\n /// @param _trustedForwarder The trusted forwarder address.\\n function setTrustedForwarder(address _trustedForwarder) external;\\n\\n /// @notice Getter for the trusted forwarder verifying the meta transaction.\\n /// @return The trusted forwarder address.\\n function getTrustedForwarder() external view returns (address);\\n\\n /// @notice Emitted when a new TrustedForwarder is set on the DAO.\\n /// @param forwarder the new forwarder address.\\n event TrustedForwarderSet(address forwarder);\\n\\n /// @notice Checks whether a signature is valid for a provided hash according to [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271).\\n /// @param _hash The hash of the data to be signed.\\n /// @param _signature The signature byte array associated with `_hash`.\\n /// @return Returns the `bytes4` magic value `0x1626ba7e` if the signature is valid and `0xffffffff` if not.\\n function isValidSignature(bytes32 _hash, bytes memory _signature) external returns (bytes4);\\n\\n /// @notice Registers an ERC standard having a callback by registering its [ERC-165](https://eips.ethereum.org/EIPS/eip-165) interface ID and callback function signature.\\n /// @param _interfaceId The ID of the interface.\\n /// @param _callbackSelector The selector of the callback function.\\n /// @param _magicNumber The magic number to be registered for the function signature.\\n function registerStandardCallback(\\n bytes4 _interfaceId,\\n bytes4 _callbackSelector,\\n bytes4 _magicNumber\\n ) external;\\n\\n /// @notice Removed function being left here to not corrupt the IDAO interface ID. Any call will revert.\\n /// @dev Introduced in v1.0.0. Removed in v1.4.0.\\n function setSignatureValidator(address) external;\\n}\\n\",\"keccak256\":\"0xb7f615523c26de042edce98731c658f44a1edb2464387ac1b642c4c69f57128e\",\"license\":\"AGPL-3.0-or-later\"},\"src/permission/PermissionLib.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title PermissionLib\\n/// @author Aragon X - 2021-2023\\n/// @notice A library containing objects for permission processing.\\n/// @custom:security-contact sirt@aragon.org\\nlibrary PermissionLib {\\n /// @notice A constant expressing that no condition is applied to a permission.\\n address public constant NO_CONDITION = address(0);\\n\\n /// @notice The types of permission operations available in the `PermissionManager`.\\n /// @param Grant The grant operation setting a permission without a condition.\\n /// @param Revoke The revoke operation removing a permission (that was granted with or without a condition).\\n /// @param GrantWithCondition The grant operation setting a permission with a condition.\\n enum Operation {\\n Grant,\\n Revoke,\\n GrantWithCondition\\n }\\n\\n /// @notice A struct containing the information for a permission to be applied on a single target contract without a condition.\\n /// @param operation The permission operation type.\\n /// @param who The address (EOA or contract) receiving the permission.\\n /// @param permissionId The permission identifier.\\n struct SingleTargetPermission {\\n Operation operation;\\n address who;\\n bytes32 permissionId;\\n }\\n\\n /// @notice A struct containing the information for a permission to be applied on multiple target contracts, optionally, with a condition.\\n /// @param operation The permission operation type.\\n /// @param where The address of the target contract for which `who` receives permission.\\n /// @param who The address (EOA or contract) receiving the permission.\\n /// @param condition The `PermissionCondition` that will be asked for authorization on calls connected to the specified permission identifier.\\n /// @param permissionId The permission identifier.\\n struct MultiTargetPermission {\\n Operation operation;\\n address where;\\n address who;\\n address condition;\\n bytes32 permissionId;\\n }\\n}\\n\",\"keccak256\":\"0x470faf3c4891ebc6420ef6cc09f6098917568ccc79268c90954d1478199b6097\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/setup/IPluginSetup.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {PermissionLib} from \\\"../../permission/PermissionLib.sol\\\";\\n\\n// solhint-disable-next-line no-unused-import\\nimport {IDAO} from \\\"../../dao/IDAO.sol\\\";\\n\\n/// @title IPluginSetup\\n/// @author Aragon X - 2022-2023\\n/// @notice The interface required for a plugin setup contract to be consumed by the `PluginSetupProcessor` for plugin installations, updates, and uninstallations.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IPluginSetup {\\n /// @notice The data associated with a prepared setup.\\n /// @param helpers The address array of helpers (contracts or EOAs) associated with this plugin version after the installation or update.\\n /// @param permissions The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the installing or updating DAO.\\n struct PreparedSetupData {\\n address[] helpers;\\n PermissionLib.MultiTargetPermission[] permissions;\\n }\\n\\n /// @notice The payload for plugin updates and uninstallations containing the existing contracts as well as optional data to be consumed by the plugin setup.\\n /// @param plugin The address of the `Plugin`.\\n /// @param currentHelpers The address array of all current helpers (contracts or EOAs) associated with the plugin to update from.\\n /// @param data The bytes-encoded data containing the input parameters for the preparation of update/uninstall as specified in the corresponding ABI on the version's metadata.\\n struct SetupPayload {\\n address plugin;\\n address[] currentHelpers;\\n bytes data;\\n }\\n\\n /// @notice Prepares the installation of a plugin.\\n /// @param _dao The address of the installing DAO.\\n /// @param _data The bytes-encoded data containing the input parameters for the installation as specified in the plugin's build metadata JSON file.\\n /// @return plugin The address of the `Plugin` contract being prepared for installation.\\n /// @return preparedSetupData The deployed plugin's relevant data which consists of helpers and permissions.\\n function prepareInstallation(\\n address _dao,\\n bytes calldata _data\\n ) external returns (address plugin, PreparedSetupData memory preparedSetupData);\\n\\n /// @notice Prepares the update of a plugin.\\n /// @param _dao The address of the updating DAO.\\n /// @param _fromBuild The build number of the plugin to update from.\\n /// @param _payload The relevant data necessary for the `prepareUpdate`. See above.\\n /// @return initData The initialization data to be passed to upgradeable contracts when the update is applied in the `PluginSetupProcessor`.\\n /// @return preparedSetupData The deployed plugin's relevant data which consists of helpers and permissions.\\n function prepareUpdate(\\n address _dao,\\n uint16 _fromBuild,\\n SetupPayload calldata _payload\\n ) external returns (bytes memory initData, PreparedSetupData memory preparedSetupData);\\n\\n /// @notice Prepares the uninstallation of a plugin.\\n /// @param _dao The address of the uninstalling DAO.\\n /// @param _payload The relevant data necessary for the `prepareUninstallation`. See above.\\n /// @return permissions The array of multi-targeted permission operations to be applied by the `PluginSetupProcessor` to the uninstalling DAO.\\n function prepareUninstallation(\\n address _dao,\\n SetupPayload calldata _payload\\n ) external returns (PermissionLib.MultiTargetPermission[] memory permissions);\\n\\n /// @notice Returns the plugin implementation address.\\n /// @return The address of the plugin implementation contract.\\n /// @dev The implementation can be instantiated via the `new` keyword, cloned via the minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)), or proxied via the UUPS proxy pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)).\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0x21c99995208039ac6ace219b6f273243811dc2aa66399e8e499e43ec30b82fa9\",\"license\":\"AGPL-3.0-or-later\"},\"src/plugin/setup/PluginUpgradeableSetup.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ERC165} from \\\"@openzeppelin/contracts/utils/introspection/ERC165.sol\\\";\\n\\nimport {IProtocolVersion} from \\\"../../utils/versioning/IProtocolVersion.sol\\\";\\nimport {ProtocolVersion} from \\\"../../utils/versioning/ProtocolVersion.sol\\\";\\nimport {IPluginSetup} from \\\"./IPluginSetup.sol\\\";\\n\\n/// @title PluginUpgradeableSetup\\n/// @author Aragon X - 2022-2024\\n/// @notice An abstract contract to inherit from to implement the plugin setup for upgradeable plugins, i.e, `PluginUUPSUpgradeable` being deployed via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822) and [ERC-1967](https://eips.ethereum.org/EIPS/eip-1967)).\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract PluginUpgradeableSetup is ERC165, IPluginSetup, ProtocolVersion {\\n /// @notice The address of the plugin implementation contract for initial block explorer verification\\n /// and to create [ERC-1967](https://eips.ethereum.org/EIPS/eip-1967) UUPS proxies from.\\n address internal immutable IMPLEMENTATION;\\n\\n /// @notice Thrown when an update path is not available, for example, if this is the initial build.\\n /// @param fromBuild The build number to update from.\\n /// @param thisBuild The build number of this setup to update to.\\n error InvalidUpdatePath(uint16 fromBuild, uint16 thisBuild);\\n\\n /// @notice The contract constructor, that setting the plugin implementation contract.\\n /// @param _implementation The address of the plugin implementation contract.\\n constructor(address _implementation) {\\n IMPLEMENTATION = _implementation;\\n }\\n\\n /// @notice Checks if this or the parent contract supports an interface by its ID.\\n /// @param _interfaceId The ID of the interface.\\n /// @return Returns `true` if the interface is supported.\\n function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) {\\n return\\n _interfaceId == type(IPluginSetup).interfaceId ||\\n _interfaceId == type(IProtocolVersion).interfaceId ||\\n super.supportsInterface(_interfaceId);\\n }\\n\\n /// @inheritdoc IPluginSetup\\n function implementation() public view returns (address) {\\n return IMPLEMENTATION;\\n }\\n}\\n\",\"keccak256\":\"0x2842d919d1ecb4fbeb40953128c3da3b36dcf6e91255089e987c2f11ff8d061e\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/IProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IProtocolVersion\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the semantic Aragon OSx protocol version number.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IProtocolVersion {\\n /// @notice Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\\n /// @return _version Returns the semantic Aragon OSx protocol version number.\\n /// @dev This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\\n function protocolVersion() external view returns (uint8[3] memory _version);\\n}\\n\",\"keccak256\":\"0x00a4da654d21dc1bdadbdc8bd54bb86c378c56f85e461ccc31303628ea621361\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/ProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IProtocolVersion} from \\\"./IProtocolVersion.sol\\\";\\n\\n/// @title ProtocolVersion\\n/// @author Aragon X - 2023\\n/// @notice An abstract, stateless, non-upgradeable contract providing the current Aragon OSx protocol version number.\\n/// @dev Do not add any new variables to this contract that would shift down storage in the inheritance chain.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract ProtocolVersion is IProtocolVersion {\\n // IMPORTANT: Do not add any storage variable, see the above notice.\\n\\n /// @inheritdoc IProtocolVersion\\n function protocolVersion() public pure returns (uint8[3] memory) {\\n return [1, 4, 0];\\n }\\n}\\n\",\"keccak256\":\"0x3975c937be935f687c6b6b8f379071232681e98cf04b175d72781b819ea52bdb\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"errors":{"InvalidUpdatePath(uint16,uint16)":[{"notice":"Thrown when an update path is not available, for example, if this is the initial build."}]},"kind":"user","methods":{"constructor":{"notice":"The contract constructor, that setting the plugin implementation contract."},"implementation()":{"notice":"Returns the plugin implementation address."},"prepareInstallation(address,bytes)":{"notice":"Prepares the installation of a plugin."},"prepareUninstallation(address,(address,address[],bytes))":{"notice":"Prepares the uninstallation of a plugin."},"prepareUpdate(address,uint16,(address,address[],bytes))":{"notice":"Prepares the update of a plugin."},"protocolVersion()":{"notice":"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with."},"supportsInterface(bytes4)":{"notice":"Checks if this or the parent contract supports an interface by its ID."}},"notice":"An abstract contract to inherit from to implement the plugin setup for upgradeable plugins, i.e, `PluginUUPSUpgradeable` being deployed via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822) and [ERC-1967](https://eips.ethereum.org/EIPS/eip-1967)).","version":1}}},"src/utils/deployment/ProxyLib.sol":{"ProxyLib":{"abi":[],"devdoc":{"author":"Aragon X - 2024","custom:security-contact":"sirt@aragon.org","kind":"dev","methods":{},"title":"ProxyLib","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"602d6037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a","opcodes":"PUSH1 0x2D PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"618:1913:47:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;618:1913:47;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP EXP ","sourceMap":"618:1913:47:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"9000","executionCost":"94","totalCost":"9094"},"internal":{"deployMinimalProxy(address,bytes memory)":"infinite","deployUUPSProxy(address,bytes memory)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"author\":\"Aragon X - 2024\",\"custom:security-contact\":\"sirt@aragon.org\",\"kind\":\"dev\",\"methods\":{},\"title\":\"ProxyLib\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"A library containing methods for the deployment of proxies via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)) and minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)).\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/utils/deployment/ProxyLib.sol\":\"ProxyLib\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/IERC1967.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (interfaces/IERC1967.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\\n *\\n * _Available since v4.8.3._\\n */\\ninterface IERC1967 {\\n /**\\n * @dev Emitted when the implementation is upgraded.\\n */\\n event Upgraded(address indexed implementation);\\n\\n /**\\n * @dev Emitted when the admin account has changed.\\n */\\n event AdminChanged(address previousAdmin, address newAdmin);\\n\\n /**\\n * @dev Emitted when the beacon is changed.\\n */\\n event BeaconUpgraded(address indexed beacon);\\n}\\n\",\"keccak256\":\"0x3cbef5ebc24b415252e2f8c0c9254555d30d9f085603b4b80d9b5ed20ab87e90\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822Proxiable {\\n /**\\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n * address.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy.\\n */\\n function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/Clones.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/Clones.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev https://eips.ethereum.org/EIPS/eip-1167[EIP 1167] is a standard for\\n * deploying minimal proxy contracts, also known as \\\"clones\\\".\\n *\\n * > To simply and cheaply clone contract functionality in an immutable way, this standard specifies\\n * > a minimal bytecode implementation that delegates all calls to a known, fixed address.\\n *\\n * The library includes functions to deploy a proxy using either `create` (traditional deployment) or `create2`\\n * (salted deterministic deployment). It also includes functions to predict the addresses of clones deployed using the\\n * deterministic method.\\n *\\n * _Available since v3.4._\\n */\\nlibrary Clones {\\n /**\\n * @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`.\\n *\\n * This function uses the create opcode, which should never revert.\\n */\\n function clone(address implementation) internal returns (address instance) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n // Cleans the upper 96 bits of the `implementation` word, then packs the first 3 bytes\\n // of the `implementation` address with the bytecode before the address.\\n mstore(0x00, or(shr(0xe8, shl(0x60, implementation)), 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000))\\n // Packs the remaining 17 bytes of `implementation` with the bytecode after the address.\\n mstore(0x20, or(shl(0x78, implementation), 0x5af43d82803e903d91602b57fd5bf3))\\n instance := create(0, 0x09, 0x37)\\n }\\n require(instance != address(0), \\\"ERC1167: create failed\\\");\\n }\\n\\n /**\\n * @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`.\\n *\\n * This function uses the create2 opcode and a `salt` to deterministically deploy\\n * the clone. Using the same `implementation` and `salt` multiple time will revert, since\\n * the clones cannot be deployed twice at the same address.\\n */\\n function cloneDeterministic(address implementation, bytes32 salt) internal returns (address instance) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n // Cleans the upper 96 bits of the `implementation` word, then packs the first 3 bytes\\n // of the `implementation` address with the bytecode before the address.\\n mstore(0x00, or(shr(0xe8, shl(0x60, implementation)), 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000))\\n // Packs the remaining 17 bytes of `implementation` with the bytecode after the address.\\n mstore(0x20, or(shl(0x78, implementation), 0x5af43d82803e903d91602b57fd5bf3))\\n instance := create2(0, 0x09, 0x37, salt)\\n }\\n require(instance != address(0), \\\"ERC1167: create2 failed\\\");\\n }\\n\\n /**\\n * @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}.\\n */\\n function predictDeterministicAddress(\\n address implementation,\\n bytes32 salt,\\n address deployer\\n ) internal pure returns (address predicted) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n let ptr := mload(0x40)\\n mstore(add(ptr, 0x38), deployer)\\n mstore(add(ptr, 0x24), 0x5af43d82803e903d91602b57fd5bf3ff)\\n mstore(add(ptr, 0x14), implementation)\\n mstore(ptr, 0x3d602d80600a3d3981f3363d3d373d3d3d363d73)\\n mstore(add(ptr, 0x58), salt)\\n mstore(add(ptr, 0x78), keccak256(add(ptr, 0x0c), 0x37))\\n predicted := keccak256(add(ptr, 0x43), 0x55)\\n }\\n }\\n\\n /**\\n * @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}.\\n */\\n function predictDeterministicAddress(\\n address implementation,\\n bytes32 salt\\n ) internal view returns (address predicted) {\\n return predictDeterministicAddress(implementation, salt, address(this));\\n }\\n}\\n\",\"keccak256\":\"0x01f055f5c26ba25d7f83e9aa9ba877fbea4d0bf22227de046ea67494bc932999\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (proxy/ERC1967/ERC1967Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../Proxy.sol\\\";\\nimport \\\"./ERC1967Upgrade.sol\\\";\\n\\n/**\\n * @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an\\n * implementation address that can be changed. This address is stored in storage in the location specified by\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the\\n * implementation behind the proxy.\\n */\\ncontract ERC1967Proxy is Proxy, ERC1967Upgrade {\\n /**\\n * @dev Initializes the upgradeable proxy with an initial implementation specified by `_logic`.\\n *\\n * If `_data` is nonempty, it's used as data in a delegate call to `_logic`. This will typically be an encoded\\n * function call, and allows initializing the storage of the proxy like a Solidity constructor.\\n */\\n constructor(address _logic, bytes memory _data) payable {\\n _upgradeToAndCall(_logic, _data, false);\\n }\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _implementation() internal view virtual override returns (address impl) {\\n return ERC1967Upgrade._getImplementation();\\n }\\n}\\n\",\"keccak256\":\"0xa2b22da3032e50b55f95ec1d13336102d675f341167aa76db571ef7f8bb7975d\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../beacon/IBeacon.sol\\\";\\nimport \\\"../../interfaces/IERC1967.sol\\\";\\nimport \\\"../../interfaces/draft-IERC1822.sol\\\";\\nimport \\\"../../utils/Address.sol\\\";\\nimport \\\"../../utils/StorageSlot.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n */\\nabstract contract ERC1967Upgrade is IERC1967 {\\n // This is the keccak-256 hash of \\\"eip1967.proxy.rollback\\\" subtracted by 1\\n bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n /**\\n * @dev Storage slot with the address of the current implementation.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _getImplementation() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 implementation slot.\\n */\\n function _setImplementation(address newImplementation) private {\\n require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n }\\n\\n /**\\n * @dev Perform implementation upgrade\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeTo(address newImplementation) internal {\\n _setImplementation(newImplementation);\\n emit Upgraded(newImplementation);\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCall(address newImplementation, bytes memory data, bool forceCall) internal {\\n _upgradeTo(newImplementation);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(newImplementation, data);\\n }\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCallUUPS(address newImplementation, bytes memory data, bool forceCall) internal {\\n // Upgrades from old implementations will perform a rollback test. This test requires the new\\n // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n // this special case will break upgrade paths from old UUPS implementation to new ones.\\n if (StorageSlot.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n _setImplementation(newImplementation);\\n } else {\\n try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n require(slot == _IMPLEMENTATION_SLOT, \\\"ERC1967Upgrade: unsupported proxiableUUID\\\");\\n } catch {\\n revert(\\\"ERC1967Upgrade: new implementation is not UUPS\\\");\\n }\\n _upgradeToAndCall(newImplementation, data, forceCall);\\n }\\n }\\n\\n /**\\n * @dev Storage slot with the admin of the contract.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _getAdmin() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_ADMIN_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 admin slot.\\n */\\n function _setAdmin(address newAdmin) private {\\n require(newAdmin != address(0), \\\"ERC1967: new admin is the zero address\\\");\\n StorageSlot.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n */\\n function _changeAdmin(address newAdmin) internal {\\n emit AdminChanged(_getAdmin(), newAdmin);\\n _setAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\\n */\\n bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n /**\\n * @dev Returns the current beacon.\\n */\\n function _getBeacon() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_BEACON_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new beacon in the EIP1967 beacon slot.\\n */\\n function _setBeacon(address newBeacon) private {\\n require(Address.isContract(newBeacon), \\\"ERC1967: new beacon is not a contract\\\");\\n require(\\n Address.isContract(IBeacon(newBeacon).implementation()),\\n \\\"ERC1967: beacon implementation is not a contract\\\"\\n );\\n StorageSlot.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n }\\n\\n /**\\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n *\\n * Emits a {BeaconUpgraded} event.\\n */\\n function _upgradeBeaconToAndCall(address newBeacon, bytes memory data, bool forceCall) internal {\\n _setBeacon(newBeacon);\\n emit BeaconUpgraded(newBeacon);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x3b21ae06bf5957f73fa16754b0669c77b7abd8ba6c072d35c3281d446fdb86c2\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (proxy/Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\\n * be specified by overriding the virtual {_implementation} function.\\n *\\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\\n * different contract through the {_delegate} function.\\n *\\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\\n */\\nabstract contract Proxy {\\n /**\\n * @dev Delegates the current call to `implementation`.\\n *\\n * This function does not return to its internal call site, it will return directly to the external caller.\\n */\\n function _delegate(address implementation) internal virtual {\\n assembly {\\n // Copy msg.data. We take full control of memory in this inline assembly\\n // block because it will not return to Solidity code. We overwrite the\\n // Solidity scratch pad at memory position 0.\\n calldatacopy(0, 0, calldatasize())\\n\\n // Call the implementation.\\n // out and outsize are 0 because we don't know the size yet.\\n let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)\\n\\n // Copy the returned data.\\n returndatacopy(0, 0, returndatasize())\\n\\n switch result\\n // delegatecall returns 0 on error.\\n case 0 {\\n revert(0, returndatasize())\\n }\\n default {\\n return(0, returndatasize())\\n }\\n }\\n }\\n\\n /**\\n * @dev This is a virtual function that should be overridden so it returns the address to which the fallback function\\n * and {_fallback} should delegate.\\n */\\n function _implementation() internal view virtual returns (address);\\n\\n /**\\n * @dev Delegates the current call to the address returned by `_implementation()`.\\n *\\n * This function does not return to its internal call site, it will return directly to the external caller.\\n */\\n function _fallback() internal virtual {\\n _beforeFallback();\\n _delegate(_implementation());\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\\n * function in the contract matches the call data.\\n */\\n fallback() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data\\n * is empty.\\n */\\n receive() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`\\n * call, or as part of the Solidity `fallback` or `receive` functions.\\n *\\n * If overridden should call `super._beforeFallback()`.\\n */\\n function _beforeFallback() internal virtual {}\\n}\\n\",\"keccak256\":\"0xc130fe33f1b2132158531a87734153293f6d07bc263ff4ac90e85da9c82c0e27\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeacon {\\n /**\\n * @dev Must return an address that can be used as a delegate call target.\\n *\\n * {BeaconProxy} will check that this address is a contract.\\n */\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/StorageSlot.sol)\\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```solidity\\n * contract ERC1967 {\\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n * function _getImplementation() internal view returns (address) {\\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n * }\\n *\\n * function _setImplementation(address newImplementation) internal {\\n * require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n * }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._\\n * _Available since v4.9 for `string`, `bytes`._\\n */\\nlibrary StorageSlot {\\n struct AddressSlot {\\n address value;\\n }\\n\\n struct BooleanSlot {\\n bool value;\\n }\\n\\n struct Bytes32Slot {\\n bytes32 value;\\n }\\n\\n struct Uint256Slot {\\n uint256 value;\\n }\\n\\n struct StringSlot {\\n string value;\\n }\\n\\n struct BytesSlot {\\n bytes value;\\n }\\n\\n /**\\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n */\\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n */\\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n */\\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n */\\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` with member `value` located at `slot`.\\n */\\n function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\\n */\\n function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` with member `value` located at `slot`.\\n */\\n function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\\n */\\n function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n}\\n\",\"keccak256\":\"0xf09e68aa0dc6722a25bc46490e8d48ed864466d17313b8a0b254c36b54e49899\",\"license\":\"MIT\"},\"src/utils/deployment/ProxyLib.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {ERC1967Proxy} from \\\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol\\\";\\nimport {Clones} from \\\"@openzeppelin/contracts/proxy/Clones.sol\\\";\\nimport {Address} from \\\"@openzeppelin/contracts/utils/Address.sol\\\";\\n\\n/// @title ProxyLib\\n/// @author Aragon X - 2024\\n/// @notice A library containing methods for the deployment of proxies via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)) and minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)).\\n/// @custom:security-contact sirt@aragon.org\\nlibrary ProxyLib {\\n using Address for address;\\n using Clones for address;\\n\\n /// @notice Creates an [ERC-1967](https://eips.ethereum.org/EIPS/eip-1967) UUPS proxy contract pointing to a logic contract and allows to immediately initialize it.\\n /// @param _logic The logic contract the proxy is pointing to.\\n /// @param _initCalldata The initialization data for this contract.\\n /// @return uupsProxy The address of the UUPS proxy contract created.\\n /// @dev If `_initCalldata` is non-empty, it is used in a delegate call to the `_logic` contract. This will typically be an encoded function call initializing the storage of the proxy (see [OpenZeppelin ERC1967Proxy-constructor](https://docs.openzeppelin.com/contracts/4.x/api/proxy#ERC1967Proxy-constructor-address-bytes-)).\\n function deployUUPSProxy(\\n address _logic,\\n bytes memory _initCalldata\\n ) internal returns (address uupsProxy) {\\n uupsProxy = address(new ERC1967Proxy({_logic: _logic, _data: _initCalldata}));\\n }\\n\\n /// @notice Creates an [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167) minimal proxy contract, also known as clones, pointing to a logic contract and allows to immediately initialize it.\\n /// @param _logic The logic contract the proxy is pointing to.\\n /// @param _initCalldata The initialization data for this contract.\\n /// @return minimalProxy The address of the minimal proxy contract created.\\n /// @dev If `_initCalldata` is non-empty, it is used in a call to the clone contract. This will typically be an encoded function call initializing the storage of the contract.\\n function deployMinimalProxy(\\n address _logic,\\n bytes memory _initCalldata\\n ) internal returns (address minimalProxy) {\\n minimalProxy = _logic.clone();\\n if (_initCalldata.length > 0) {\\n minimalProxy.functionCall({data: _initCalldata});\\n }\\n }\\n}\\n\",\"keccak256\":\"0xef0d1790dfa026381c021daa2ec7267357497f58cd4a2fa5c64e72e0dea95acc\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"notice":"A library containing methods for the deployment of proxies via the UUPS pattern (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)) and minimal proxy pattern (see [ERC-1167](https://eips.ethereum.org/EIPS/eip-1167)).","version":1}}},"src/utils/versioning/IProtocolVersion.sol":{"IProtocolVersion":{"abi":[{"inputs":[],"name":"protocolVersion","outputs":[{"internalType":"uint8[3]","name":"_version","type":"uint8[3]"}],"stateMutability":"view","type":"function"}],"devdoc":{"author":"Aragon X - 2022-2023","custom:security-contact":"sirt@aragon.org","kind":"dev","methods":{"protocolVersion()":{"details":"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.","returns":{"_version":"Returns the semantic Aragon OSx protocol version number."}}},"title":"IProtocolVersion","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"protocolVersion()":"2ae9c600"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"protocolVersion\",\"outputs\":[{\"internalType\":\"uint8[3]\",\"name\":\"_version\",\"type\":\"uint8[3]\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Aragon X - 2022-2023\",\"custom:security-contact\":\"sirt@aragon.org\",\"kind\":\"dev\",\"methods\":{\"protocolVersion()\":{\"details\":\"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\",\"returns\":{\"_version\":\"Returns the semantic Aragon OSx protocol version number.\"}}},\"title\":\"IProtocolVersion\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"protocolVersion()\":{\"notice\":\"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\"}},\"notice\":\"An interface defining the semantic Aragon OSx protocol version number.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/utils/versioning/IProtocolVersion.sol\":\"IProtocolVersion\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"src/utils/versioning/IProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IProtocolVersion\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the semantic Aragon OSx protocol version number.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IProtocolVersion {\\n /// @notice Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\\n /// @return _version Returns the semantic Aragon OSx protocol version number.\\n /// @dev This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\\n function protocolVersion() external view returns (uint8[3] memory _version);\\n}\\n\",\"keccak256\":\"0x00a4da654d21dc1bdadbdc8bd54bb86c378c56f85e461ccc31303628ea621361\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{"protocolVersion()":{"notice":"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with."}},"notice":"An interface defining the semantic Aragon OSx protocol version number.","version":1}}},"src/utils/versioning/ProtocolVersion.sol":{"ProtocolVersion":{"abi":[{"inputs":[],"name":"protocolVersion","outputs":[{"internalType":"uint8[3]","name":"","type":"uint8[3]"}],"stateMutability":"pure","type":"function"}],"devdoc":{"author":"Aragon X - 2023","custom:security-contact":"sirt@aragon.org","details":"Do not add any new variables to this contract that would shift down storage in the inheritance chain.","kind":"dev","methods":{"protocolVersion()":{"details":"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.","returns":{"_0":"Returns the semantic Aragon OSx protocol version number."}}},"title":"ProtocolVersion","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"protocolVersion()":"2ae9c600"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"protocolVersion\",\"outputs\":[{\"internalType\":\"uint8[3]\",\"name\":\"\",\"type\":\"uint8[3]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Aragon X - 2023\",\"custom:security-contact\":\"sirt@aragon.org\",\"details\":\"Do not add any new variables to this contract that would shift down storage in the inheritance chain.\",\"kind\":\"dev\",\"methods\":{\"protocolVersion()\":{\"details\":\"This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\",\"returns\":{\"_0\":\"Returns the semantic Aragon OSx protocol version number.\"}}},\"title\":\"ProtocolVersion\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"protocolVersion()\":{\"notice\":\"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\"}},\"notice\":\"An abstract, stateless, non-upgradeable contract providing the current Aragon OSx protocol version number.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/utils/versioning/ProtocolVersion.sol\":\"ProtocolVersion\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[]},\"sources\":{\"src/utils/versioning/IProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\n/// @title IProtocolVersion\\n/// @author Aragon X - 2022-2023\\n/// @notice An interface defining the semantic Aragon OSx protocol version number.\\n/// @custom:security-contact sirt@aragon.org\\ninterface IProtocolVersion {\\n /// @notice Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.\\n /// @return _version Returns the semantic Aragon OSx protocol version number.\\n /// @dev This version number is not to be confused with the `release` and `build` numbers found in the `Version.Tag` struct inside the `PluginRepo` contract being used to version plugin setup and associated plugin implementation contracts.\\n function protocolVersion() external view returns (uint8[3] memory _version);\\n}\\n\",\"keccak256\":\"0x00a4da654d21dc1bdadbdc8bd54bb86c378c56f85e461ccc31303628ea621361\",\"license\":\"AGPL-3.0-or-later\"},\"src/utils/versioning/ProtocolVersion.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-or-later\\n\\npragma solidity ^0.8.8;\\n\\nimport {IProtocolVersion} from \\\"./IProtocolVersion.sol\\\";\\n\\n/// @title ProtocolVersion\\n/// @author Aragon X - 2023\\n/// @notice An abstract, stateless, non-upgradeable contract providing the current Aragon OSx protocol version number.\\n/// @dev Do not add any new variables to this contract that would shift down storage in the inheritance chain.\\n/// @custom:security-contact sirt@aragon.org\\nabstract contract ProtocolVersion is IProtocolVersion {\\n // IMPORTANT: Do not add any storage variable, see the above notice.\\n\\n /// @inheritdoc IProtocolVersion\\n function protocolVersion() public pure returns (uint8[3] memory) {\\n return [1, 4, 0];\\n }\\n}\\n\",\"keccak256\":\"0x3975c937be935f687c6b6b8f379071232681e98cf04b175d72781b819ea52bdb\",\"license\":\"AGPL-3.0-or-later\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{"protocolVersion()":{"notice":"Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with."}},"notice":"An abstract, stateless, non-upgradeable contract providing the current Aragon OSx protocol version number.","version":1}}}}}} \ No newline at end of file diff --git a/contracts/artifacts/src/dao/IDAO.sol/IDAO.dbg.json b/contracts/artifacts/src/dao/IDAO.sol/IDAO.dbg.json deleted file mode 100644 index 25fef0c2..00000000 --- a/contracts/artifacts/src/dao/IDAO.sol/IDAO.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" -} diff --git a/contracts/artifacts/src/dao/IDAO.sol/IDAO.json b/contracts/artifacts/src/dao/IDAO.sol/IDAO.json deleted file mode 100644 index cd45e273..00000000 --- a/contracts/artifacts/src/dao/IDAO.sol/IDAO.json +++ /dev/null @@ -1,379 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "IDAO", - "sourceName": "src/dao/IDAO.sol", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "sender", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "token", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amount", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "string", - "name": "_reference", - "type": "string" - } - ], - "name": "Deposited", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "actor", - "type": "address" - }, - { - "indexed": false, - "internalType": "bytes32", - "name": "callId", - "type": "bytes32" - }, - { - "components": [ - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "indexed": false, - "internalType": "struct IDAO.Action[]", - "name": "actions", - "type": "tuple[]" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "allowFailureMap", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "failureMap", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "bytes[]", - "name": "execResults", - "type": "bytes[]" - } - ], - "name": "Executed", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "bytes", - "name": "metadata", - "type": "bytes" - } - ], - "name": "MetadataSet", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "sender", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "NativeTokenDeposited", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "bytes4", - "name": "interfaceId", - "type": "bytes4" - }, - { - "indexed": false, - "internalType": "bytes4", - "name": "callbackSelector", - "type": "bytes4" - }, - { - "indexed": false, - "internalType": "bytes4", - "name": "magicNumber", - "type": "bytes4" - } - ], - "name": "StandardCallbackRegistered", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "forwarder", - "type": "address" - } - ], - "name": "TrustedForwarderSet", - "type": "event" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_token", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }, - { - "internalType": "string", - "name": "_reference", - "type": "string" - } - ], - "name": "deposit", - "outputs": [], - "stateMutability": "payable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "_callId", - "type": "bytes32" - }, - { - "components": [ - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "internalType": "struct IDAO.Action[]", - "name": "_actions", - "type": "tuple[]" - }, - { - "internalType": "uint256", - "name": "_allowFailureMap", - "type": "uint256" - } - ], - "name": "execute", - "outputs": [ - { - "internalType": "bytes[]", - "name": "", - "type": "bytes[]" - }, - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "getTrustedForwarder", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_where", - "type": "address" - }, - { - "internalType": "address", - "name": "_who", - "type": "address" - }, - { - "internalType": "bytes32", - "name": "_permissionId", - "type": "bytes32" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "hasPermission", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "_hash", - "type": "bytes32" - }, - { - "internalType": "bytes", - "name": "_signature", - "type": "bytes" - } - ], - "name": "isValidSignature", - "outputs": [ - { - "internalType": "bytes4", - "name": "", - "type": "bytes4" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes4", - "name": "_interfaceId", - "type": "bytes4" - }, - { - "internalType": "bytes4", - "name": "_callbackSelector", - "type": "bytes4" - }, - { - "internalType": "bytes4", - "name": "_magicNumber", - "type": "bytes4" - } - ], - "name": "registerStandardCallback", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes", - "name": "_metadata", - "type": "bytes" - } - ], - "name": "setMetadata", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "setSignatureValidator", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_trustedForwarder", - "type": "address" - } - ], - "name": "setTrustedForwarder", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - } - ], - "bytecode": "0x", - "deployedBytecode": "0x", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/contracts/artifacts/src/mocks/dao/DAOMock.sol/DAOMock.dbg.json b/contracts/artifacts/src/mocks/dao/DAOMock.sol/DAOMock.dbg.json deleted file mode 100644 index 4058cb44..00000000 --- a/contracts/artifacts/src/mocks/dao/DAOMock.sol/DAOMock.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" -} diff --git a/contracts/artifacts/src/mocks/dao/DAOMock.sol/DAOMock.json b/contracts/artifacts/src/mocks/dao/DAOMock.sol/DAOMock.json deleted file mode 100644 index a9a57a5d..00000000 --- a/contracts/artifacts/src/mocks/dao/DAOMock.sol/DAOMock.json +++ /dev/null @@ -1,405 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "DAOMock", - "sourceName": "src/mocks/dao/DAOMock.sol", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "sender", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "token", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amount", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "string", - "name": "_reference", - "type": "string" - } - ], - "name": "Deposited", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "actor", - "type": "address" - }, - { - "indexed": false, - "internalType": "bytes32", - "name": "callId", - "type": "bytes32" - }, - { - "components": [ - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "indexed": false, - "internalType": "struct IDAO.Action[]", - "name": "actions", - "type": "tuple[]" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "allowFailureMap", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "failureMap", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "bytes[]", - "name": "execResults", - "type": "bytes[]" - } - ], - "name": "Executed", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "bytes", - "name": "metadata", - "type": "bytes" - } - ], - "name": "MetadataSet", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "sender", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "NativeTokenDeposited", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "bytes4", - "name": "interfaceId", - "type": "bytes4" - }, - { - "indexed": false, - "internalType": "bytes4", - "name": "callbackSelector", - "type": "bytes4" - }, - { - "indexed": false, - "internalType": "bytes4", - "name": "magicNumber", - "type": "bytes4" - } - ], - "name": "StandardCallbackRegistered", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "forwarder", - "type": "address" - } - ], - "name": "TrustedForwarderSet", - "type": "event" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_token", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }, - { - "internalType": "string", - "name": "_reference", - "type": "string" - } - ], - "name": "deposit", - "outputs": [], - "stateMutability": "payable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "callId", - "type": "bytes32" - }, - { - "components": [ - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "internalType": "struct IDAO.Action[]", - "name": "_actions", - "type": "tuple[]" - }, - { - "internalType": "uint256", - "name": "allowFailureMap", - "type": "uint256" - } - ], - "name": "execute", - "outputs": [ - { - "internalType": "bytes[]", - "name": "execResults", - "type": "bytes[]" - }, - { - "internalType": "uint256", - "name": "failureMap", - "type": "uint256" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "getTrustedForwarder", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_where", - "type": "address" - }, - { - "internalType": "address", - "name": "_who", - "type": "address" - }, - { - "internalType": "bytes32", - "name": "_permissionId", - "type": "bytes32" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "hasPermission", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "hasPermissionReturnValueMock", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "_hash", - "type": "bytes32" - }, - { - "internalType": "bytes", - "name": "_signature", - "type": "bytes" - } - ], - "name": "isValidSignature", - "outputs": [ - { - "internalType": "bytes4", - "name": "", - "type": "bytes4" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes4", - "name": "_interfaceId", - "type": "bytes4" - }, - { - "internalType": "bytes4", - "name": "_callbackSelector", - "type": "bytes4" - }, - { - "internalType": "bytes4", - "name": "_magicNumber", - "type": "bytes4" - } - ], - "name": "registerStandardCallback", - "outputs": [], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bool", - "name": "_hasPermissionReturnValueMock", - "type": "bool" - } - ], - "name": "setHasPermissionReturnValueMock", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes", - "name": "_metadata", - "type": "bytes" - } - ], - "name": "setMetadata", - "outputs": [], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_signatureValidator", - "type": "address" - } - ], - "name": "setSignatureValidator", - "outputs": [], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_trustedForwarder", - "type": "address" - } - ], - "name": "setTrustedForwarder", - "outputs": [], - "stateMutability": "pure", - "type": "function" - } - ], - "bytecode": "0x608060405234801561001057600080fd5b506108bc806100206000396000f3fe6080604052600436106100bc5760003560e01c8063c4a5014511610074578063da7422281161004e578063da74222814610144578063ee57e36f14610210578063fdef91061461022f57600080fd5b8063c4a50145146101a6578063c71bf324146101c6578063ce1b815f146101f457600080fd5b80633e2ab0d9116100a55780633e2ab0d91461014457806380e4cbe114610164578063bfe07da61461019257600080fd5b80630a1f41ca146100c15780631626ba7e146100f0575b600080fd5b3480156100cd57600080fd5b506000546100db9060ff1681565b60405190151581526020015b60405180910390f35b3480156100fc57600080fd5b5061011361010b36600461039a565b600092915050565b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020016100e7565b34801561015057600080fd5b5061016261015f36600461040a565b50565b005b34801561017057600080fd5b5061016261017f36600461042c565b6000805460ff1916911515919091179055565b6101626101a0366004610497565b50505050565b3480156101b257600080fd5b506101626101c1366004610521565b505050565b3480156101d257600080fd5b506101e66101e1366004610564565b610258565b6040516100e7929190610722565b34801561020057600080fd5b50604051600081526020016100e7565b34801561021c57600080fd5b5061016261022b366004610744565b5050565b34801561023b57600080fd5b506100db61024a366004610786565b60005460ff16949350505050565b606060003373ffffffffffffffffffffffffffffffffffffffff167fd4e57c2049f004fb297ef78591cd409503ceb6b2c722d7ffed032fc99e5f3b5886868685876040516102aa9594939291906107ee565b60405180910390a2935093915050565b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff811182821017156102f3576102f36102ba565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715610322576103226102ba565b604052919050565b600082601f83011261033b57600080fd5b813567ffffffffffffffff811115610355576103556102ba565b610368601f8201601f19166020016102f9565b81815284602083860101111561037d57600080fd5b816020850160208301376000918101602001919091529392505050565b600080604083850312156103ad57600080fd5b82359150602083013567ffffffffffffffff8111156103cb57600080fd5b6103d78582860161032a565b9150509250929050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461040557600080fd5b919050565b60006020828403121561041c57600080fd5b610425826103e1565b9392505050565b60006020828403121561043e57600080fd5b8135801515811461042557600080fd5b60008083601f84011261046057600080fd5b50813567ffffffffffffffff81111561047857600080fd5b60208301915083602082850101111561049057600080fd5b9250929050565b600080600080606085870312156104ad57600080fd5b6104b6856103e1565b935060208501359250604085013567ffffffffffffffff8111156104d957600080fd5b6104e58782880161044e565b95989497509550505050565b80357fffffffff000000000000000000000000000000000000000000000000000000008116811461040557600080fd5b60008060006060848603121561053657600080fd5b61053f846104f1565b925061054d602085016104f1565b915061055b604085016104f1565b90509250925092565b60008060006060848603121561057957600080fd5b8335925060208085013567ffffffffffffffff8082111561059957600080fd5b818701915087601f8301126105ad57600080fd5b8135818111156105bf576105bf6102ba565b8060051b6105ce8582016102f9565b918252838101850191858101908b8411156105e857600080fd5b86860192505b838310156106705782358581111561060557600080fd5b86016060818e03601f1901121561061b57600080fd5b6106236102d0565b61062e8983016103e1565b815260408201358982015260608201358781111561064c5760008081fd5b61065a8f8b8386010161032a565b60408301525083525091860191908601906105ee565b989b989a5050505060409690960135955050505050565b6000815180845260005b818110156106ad57602081850181015186830182015201610691565b506000602082860101526020601f19601f83011685010191505092915050565b600081518084526020808501808196508360051b8101915082860160005b85811015610715578284038952610703848351610687565b988501989350908401906001016106eb565b5091979650505050505050565b60408152600061073560408301856106cd565b90508260208301529392505050565b6000806020838503121561075757600080fd5b823567ffffffffffffffff81111561076e57600080fd5b61077a8582860161044e565b90969095509350505050565b6000806000806080858703121561079c57600080fd5b6107a5856103e1565b93506107b3602086016103e1565b925060408501359150606085013567ffffffffffffffff8111156107d657600080fd5b6107e28782880161032a565b91505092959194509250565b600060a08201878352602060a08185015281885180845260c08601915060c08160051b8701019350828a0160005b828110156108805787860360bf190184528151805173ffffffffffffffffffffffffffffffffffffffff168752858101518688015260409081015160609188018290529061086c81890183610687565b97505050928401929084019060010161081c565b505050505085604084015284606084015282810360808401526108a381856106cd565b9897505050505050505056fea164736f6c6343000811000a", - "deployedBytecode": "0x6080604052600436106100bc5760003560e01c8063c4a5014511610074578063da7422281161004e578063da74222814610144578063ee57e36f14610210578063fdef91061461022f57600080fd5b8063c4a50145146101a6578063c71bf324146101c6578063ce1b815f146101f457600080fd5b80633e2ab0d9116100a55780633e2ab0d91461014457806380e4cbe114610164578063bfe07da61461019257600080fd5b80630a1f41ca146100c15780631626ba7e146100f0575b600080fd5b3480156100cd57600080fd5b506000546100db9060ff1681565b60405190151581526020015b60405180910390f35b3480156100fc57600080fd5b5061011361010b36600461039a565b600092915050565b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020016100e7565b34801561015057600080fd5b5061016261015f36600461040a565b50565b005b34801561017057600080fd5b5061016261017f36600461042c565b6000805460ff1916911515919091179055565b6101626101a0366004610497565b50505050565b3480156101b257600080fd5b506101626101c1366004610521565b505050565b3480156101d257600080fd5b506101e66101e1366004610564565b610258565b6040516100e7929190610722565b34801561020057600080fd5b50604051600081526020016100e7565b34801561021c57600080fd5b5061016261022b366004610744565b5050565b34801561023b57600080fd5b506100db61024a366004610786565b60005460ff16949350505050565b606060003373ffffffffffffffffffffffffffffffffffffffff167fd4e57c2049f004fb297ef78591cd409503ceb6b2c722d7ffed032fc99e5f3b5886868685876040516102aa9594939291906107ee565b60405180910390a2935093915050565b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff811182821017156102f3576102f36102ba565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715610322576103226102ba565b604052919050565b600082601f83011261033b57600080fd5b813567ffffffffffffffff811115610355576103556102ba565b610368601f8201601f19166020016102f9565b81815284602083860101111561037d57600080fd5b816020850160208301376000918101602001919091529392505050565b600080604083850312156103ad57600080fd5b82359150602083013567ffffffffffffffff8111156103cb57600080fd5b6103d78582860161032a565b9150509250929050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461040557600080fd5b919050565b60006020828403121561041c57600080fd5b610425826103e1565b9392505050565b60006020828403121561043e57600080fd5b8135801515811461042557600080fd5b60008083601f84011261046057600080fd5b50813567ffffffffffffffff81111561047857600080fd5b60208301915083602082850101111561049057600080fd5b9250929050565b600080600080606085870312156104ad57600080fd5b6104b6856103e1565b935060208501359250604085013567ffffffffffffffff8111156104d957600080fd5b6104e58782880161044e565b95989497509550505050565b80357fffffffff000000000000000000000000000000000000000000000000000000008116811461040557600080fd5b60008060006060848603121561053657600080fd5b61053f846104f1565b925061054d602085016104f1565b915061055b604085016104f1565b90509250925092565b60008060006060848603121561057957600080fd5b8335925060208085013567ffffffffffffffff8082111561059957600080fd5b818701915087601f8301126105ad57600080fd5b8135818111156105bf576105bf6102ba565b8060051b6105ce8582016102f9565b918252838101850191858101908b8411156105e857600080fd5b86860192505b838310156106705782358581111561060557600080fd5b86016060818e03601f1901121561061b57600080fd5b6106236102d0565b61062e8983016103e1565b815260408201358982015260608201358781111561064c5760008081fd5b61065a8f8b8386010161032a565b60408301525083525091860191908601906105ee565b989b989a5050505060409690960135955050505050565b6000815180845260005b818110156106ad57602081850181015186830182015201610691565b506000602082860101526020601f19601f83011685010191505092915050565b600081518084526020808501808196508360051b8101915082860160005b85811015610715578284038952610703848351610687565b988501989350908401906001016106eb565b5091979650505050505050565b60408152600061073560408301856106cd565b90508260208301529392505050565b6000806020838503121561075757600080fd5b823567ffffffffffffffff81111561076e57600080fd5b61077a8582860161044e565b90969095509350505050565b6000806000806080858703121561079c57600080fd5b6107a5856103e1565b93506107b3602086016103e1565b925060408501359150606085013567ffffffffffffffff8111156107d657600080fd5b6107e28782880161032a565b91505092959194509250565b600060a08201878352602060a08185015281885180845260c08601915060c08160051b8701019350828a0160005b828110156108805787860360bf190184528151805173ffffffffffffffffffffffffffffffffffffffff168752858101518688015260409081015160609188018290529061086c81890183610687565b97505050928401929084019060010161081c565b505050505085604084015284606084015282810360808401526108a381856106cd565b9897505050505050505056fea164736f6c6343000811000a", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/contracts/artifacts/src/mocks/permission/auth/DaoAuthorizableMock.sol/DaoAuthorizableMock.dbg.json b/contracts/artifacts/src/mocks/permission/auth/DaoAuthorizableMock.sol/DaoAuthorizableMock.dbg.json deleted file mode 100644 index b8d2318f..00000000 --- a/contracts/artifacts/src/mocks/permission/auth/DaoAuthorizableMock.sol/DaoAuthorizableMock.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" -} diff --git a/contracts/artifacts/src/mocks/permission/auth/DaoAuthorizableMock.sol/DaoAuthorizableMock.json b/contracts/artifacts/src/mocks/permission/auth/DaoAuthorizableMock.sol/DaoAuthorizableMock.json deleted file mode 100644 index c1b730f0..00000000 --- a/contracts/artifacts/src/mocks/permission/auth/DaoAuthorizableMock.sol/DaoAuthorizableMock.json +++ /dev/null @@ -1,81 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "DaoAuthorizableMock", - "sourceName": "src/mocks/permission/auth/DaoAuthorizableMock.sol", - "abi": [ - { - "inputs": [ - { - "internalType": "contract IDAO", - "name": "_dao", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "dao", - "type": "address" - }, - { - "internalType": "address", - "name": "where", - "type": "address" - }, - { - "internalType": "address", - "name": "who", - "type": "address" - }, - { - "internalType": "bytes32", - "name": "permissionId", - "type": "bytes32" - } - ], - "name": "DaoUnauthorized", - "type": "error" - }, - { - "inputs": [], - "name": "AUTHORIZED_FUNC_PERMISSION_ID", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "authorizedFunc", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "dao", - "outputs": [ - { - "internalType": "contract IDAO", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - } - ], - "bytecode": "0x60a060405234801561001057600080fd5b506040516102ee3803806102ee83398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b60805161025e61009060003960008181608d015260e7015261025e6000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c8063403f8575146100465780634162169f14610080578063f09e1623146100b7575b600080fd5b61006d7f6c28b2d088260f42eed051af4616ddda00554ec1880b580a4a9fbf40a70b09eb81565b6040519081526020015b60405180910390f35b6040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152602001610077565b6100bf6100c1565b005b7f6c28b2d088260f42eed051af4616ddda00554ec1880b580a4a9fbf40a70b09eb6101117f0000000000000000000000000000000000000000000000000000000000000000303384600036610114565b50565b604051637ef7c88360e11b81526001600160a01b0387169063fdef91069061014890889088908890889088906004016101d4565b602060405180830381865afa158015610165573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101899190610228565b6101cc57604051630cb6f8ed60e21b81526001600160a01b0380881660048301528087166024830152851660448201526064810184905260840160405180910390fd5b505050505050565b60006001600160a01b03808816835280871660208401525084604083015260806060830152826080830152828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b60006020828403121561023a57600080fd5b8151801515811461024a57600080fd5b939250505056fea164736f6c6343000811000a", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100415760003560e01c8063403f8575146100465780634162169f14610080578063f09e1623146100b7575b600080fd5b61006d7f6c28b2d088260f42eed051af4616ddda00554ec1880b580a4a9fbf40a70b09eb81565b6040519081526020015b60405180910390f35b6040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152602001610077565b6100bf6100c1565b005b7f6c28b2d088260f42eed051af4616ddda00554ec1880b580a4a9fbf40a70b09eb6101117f0000000000000000000000000000000000000000000000000000000000000000303384600036610114565b50565b604051637ef7c88360e11b81526001600160a01b0387169063fdef91069061014890889088908890889088906004016101d4565b602060405180830381865afa158015610165573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101899190610228565b6101cc57604051630cb6f8ed60e21b81526001600160a01b0380881660048301528087166024830152851660448201526064810184905260840160405180910390fd5b505050505050565b60006001600160a01b03808816835280871660208401525084604083015260806060830152826080830152828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b60006020828403121561023a57600080fd5b8151801515811461024a57600080fd5b939250505056fea164736f6c6343000811000a", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/contracts/artifacts/src/mocks/permission/auth/DaoAuthorizableUpgradeableMock.sol/DaoAuthorizableUpgradeableMock.dbg.json b/contracts/artifacts/src/mocks/permission/auth/DaoAuthorizableUpgradeableMock.sol/DaoAuthorizableUpgradeableMock.dbg.json deleted file mode 100644 index b8d2318f..00000000 --- a/contracts/artifacts/src/mocks/permission/auth/DaoAuthorizableUpgradeableMock.sol/DaoAuthorizableUpgradeableMock.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" -} diff --git a/contracts/artifacts/src/mocks/permission/auth/DaoAuthorizableUpgradeableMock.sol/DaoAuthorizableUpgradeableMock.json b/contracts/artifacts/src/mocks/permission/auth/DaoAuthorizableUpgradeableMock.sol/DaoAuthorizableUpgradeableMock.json deleted file mode 100644 index 9ce9fc26..00000000 --- a/contracts/artifacts/src/mocks/permission/auth/DaoAuthorizableUpgradeableMock.sol/DaoAuthorizableUpgradeableMock.json +++ /dev/null @@ -1,109 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "DaoAuthorizableUpgradeableMock", - "sourceName": "src/mocks/permission/auth/DaoAuthorizableUpgradeableMock.sol", - "abi": [ - { - "inputs": [ - { - "internalType": "address", - "name": "dao", - "type": "address" - }, - { - "internalType": "address", - "name": "where", - "type": "address" - }, - { - "internalType": "address", - "name": "who", - "type": "address" - }, - { - "internalType": "bytes32", - "name": "permissionId", - "type": "bytes32" - } - ], - "name": "DaoUnauthorized", - "type": "error" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint8", - "name": "version", - "type": "uint8" - } - ], - "name": "Initialized", - "type": "event" - }, - { - "inputs": [], - "name": "AUTHORIZED_FUNC_PERMISSION_ID", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "authorizedFunc", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "dao", - "outputs": [ - { - "internalType": "contract IDAO", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "contract IDAO", - "name": "_dao", - "type": "address" - } - ], - "name": "initialize", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "contract IDAO", - "name": "_dao", - "type": "address" - } - ], - "name": "notAnInitializer", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - } - ], - "bytecode": "0x608060405234801561001057600080fd5b50610487806100206000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80638883bbd7116100505780638883bbd7146100c1578063c4d66de8146100d6578063f09e1623146100e957600080fd5b8063403f85751461006c5780634162169f146100a6575b600080fd5b6100937f6c28b2d088260f42eed051af4616ddda00554ec1880b580a4a9fbf40a70b09eb81565b6040519081526020015b60405180910390f35b6033546040516001600160a01b03909116815260200161009d565b6100d46100cf3660046103d4565b6100f1565b005b6100d46100e43660046103d4565b6100fd565b6100d4610224565b6100fa81610261565b50565b600054610100900460ff161580801561011d5750600054600160ff909116105b806101375750303b158015610137575060005460ff166001145b6101ae5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b6000805460ff1916600117905580156101d1576000805461ff0019166101001790555b6101da82610261565b8015610220576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b6033547f6c28b2d088260f42eed051af4616ddda00554ec1880b580a4a9fbf40a70b09eb906100fa906001600160a01b0316303384600036610318565b600054610100900460ff166102de5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016101a5565b603380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b604051637ef7c88360e11b81526001600160a01b0387169063fdef91069061034c9088908890889088908890600401610404565b602060405180830381865afa158015610369573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061038d9190610458565b6103cc57604051630cb6f8ed60e21b81526001600160a01b038088166004830152808716602483015285166044820152606481018490526084016101a5565b505050505050565b6000602082840312156103e657600080fd5b81356001600160a01b03811681146103fd57600080fd5b9392505050565b60006001600160a01b03808816835280871660208401525084604083015260806060830152826080830152828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b60006020828403121561046a57600080fd5b815180151581146103fd57600080fdfea164736f6c6343000811000a", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100675760003560e01c80638883bbd7116100505780638883bbd7146100c1578063c4d66de8146100d6578063f09e1623146100e957600080fd5b8063403f85751461006c5780634162169f146100a6575b600080fd5b6100937f6c28b2d088260f42eed051af4616ddda00554ec1880b580a4a9fbf40a70b09eb81565b6040519081526020015b60405180910390f35b6033546040516001600160a01b03909116815260200161009d565b6100d46100cf3660046103d4565b6100f1565b005b6100d46100e43660046103d4565b6100fd565b6100d4610224565b6100fa81610261565b50565b600054610100900460ff161580801561011d5750600054600160ff909116105b806101375750303b158015610137575060005460ff166001145b6101ae5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b6000805460ff1916600117905580156101d1576000805461ff0019166101001790555b6101da82610261565b8015610220576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b6033547f6c28b2d088260f42eed051af4616ddda00554ec1880b580a4a9fbf40a70b09eb906100fa906001600160a01b0316303384600036610318565b600054610100900460ff166102de5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016101a5565b603380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b604051637ef7c88360e11b81526001600160a01b0387169063fdef91069061034c9088908890889088908890600401610404565b602060405180830381865afa158015610369573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061038d9190610458565b6103cc57604051630cb6f8ed60e21b81526001600160a01b038088166004830152808716602483015285166044820152606481018490526084016101a5565b505050505050565b6000602082840312156103e657600080fd5b81356001600160a01b03811681146103fd57600080fd5b9392505050565b60006001600160a01b03808816835280871660208401525084604083015260806060830152826080830152828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b60006020828403121561046a57600080fd5b815180151581146103fd57600080fdfea164736f6c6343000811000a", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/contracts/artifacts/src/mocks/permission/condition/PermissionConditionMock.sol/PermissionConditionMock.dbg.json b/contracts/artifacts/src/mocks/permission/condition/PermissionConditionMock.sol/PermissionConditionMock.dbg.json deleted file mode 100644 index b8d2318f..00000000 --- a/contracts/artifacts/src/mocks/permission/condition/PermissionConditionMock.sol/PermissionConditionMock.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" -} diff --git a/contracts/artifacts/src/mocks/permission/condition/PermissionConditionMock.sol/PermissionConditionMock.json b/contracts/artifacts/src/mocks/permission/condition/PermissionConditionMock.sol/PermissionConditionMock.json deleted file mode 100644 index 6551eb6d..00000000 --- a/contracts/artifacts/src/mocks/permission/condition/PermissionConditionMock.sol/PermissionConditionMock.json +++ /dev/null @@ -1,103 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "PermissionConditionMock", - "sourceName": "src/mocks/permission/condition/PermissionConditionMock.sol", - "abi": [ - { - "inputs": [], - "name": "answer", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_where", - "type": "address" - }, - { - "internalType": "address", - "name": "_who", - "type": "address" - }, - { - "internalType": "bytes32", - "name": "_permissionId", - "type": "bytes32" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "isGranted", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "protocolVersion", - "outputs": [ - { - "internalType": "uint8[3]", - "name": "", - "type": "uint8[3]" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bool", - "name": "_answer", - "type": "bool" - } - ], - "name": "setAnswer", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes4", - "name": "_interfaceId", - "type": "bytes4" - } - ], - "name": "supportsInterface", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - } - ], - "bytecode": "0x608060405234801561001057600080fd5b5061033d806100206000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80632ae9c600116100505780632ae9c600146100b057806385bb7d69146100c5578063f01b7dd2146100d257600080fd5b806301ffc9a71461006c5780632675fdd014610094575b600080fd5b61007f61007a36600461018e565b6100f5565b60405190151581526020015b60405180910390f35b61007f6100a23660046101fe565b60005460ff16949350505050565b6100b8610146565b60405161008b91906102da565b60005461007f9060ff1681565b6100f36100e036600461030e565b6000805460ff1916911515919091179055565b005b60006001600160e01b031982166302675fdd60e41b148061012557506001600160e01b03198216621574e360e91b145b8061014057506301ffc9a760e01b6001600160e01b03198316145b92915050565b61014e610170565b5060408051606081018252600181526004602082015260009181019190915290565b60405180606001604052806003906020820280368337509192915050565b6000602082840312156101a057600080fd5b81356001600160e01b0319811681146101b857600080fd5b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146101e357600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b6000806000806080858703121561021457600080fd5b61021d856101bf565b935061022b602086016101bf565b925060408501359150606085013567ffffffffffffffff8082111561024f57600080fd5b818701915087601f83011261026357600080fd5b813581811115610275576102756101e8565b604051601f8201601f19908116603f0116810190838211818310171561029d5761029d6101e8565b816040528281528a60208487010111156102b657600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b60608101818360005b600381101561030557815160ff168352602092830192909101906001016102e3565b50505092915050565b60006020828403121561032057600080fd5b813580151581146101b857600080fdfea164736f6c6343000811000a", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100675760003560e01c80632ae9c600116100505780632ae9c600146100b057806385bb7d69146100c5578063f01b7dd2146100d257600080fd5b806301ffc9a71461006c5780632675fdd014610094575b600080fd5b61007f61007a36600461018e565b6100f5565b60405190151581526020015b60405180910390f35b61007f6100a23660046101fe565b60005460ff16949350505050565b6100b8610146565b60405161008b91906102da565b60005461007f9060ff1681565b6100f36100e036600461030e565b6000805460ff1916911515919091179055565b005b60006001600160e01b031982166302675fdd60e41b148061012557506001600160e01b03198216621574e360e91b145b8061014057506301ffc9a760e01b6001600160e01b03198316145b92915050565b61014e610170565b5060408051606081018252600181526004602082015260009181019190915290565b60405180606001604052806003906020820280368337509192915050565b6000602082840312156101a057600080fd5b81356001600160e01b0319811681146101b857600080fd5b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146101e357600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b6000806000806080858703121561021457600080fd5b61021d856101bf565b935061022b602086016101bf565b925060408501359150606085013567ffffffffffffffff8082111561024f57600080fd5b818701915087601f83011261026357600080fd5b813581811115610275576102756101e8565b604051601f8201601f19908116603f0116810190838211818310171561029d5761029d6101e8565b816040528281528a60208487010111156102b657600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b60608101818360005b600381101561030557815160ff168352602092830192909101906001016102e3565b50505092915050565b60006020828403121561032057600080fd5b813580151581146101b857600080fdfea164736f6c6343000811000a", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/contracts/artifacts/src/mocks/permission/condition/PermissionConditionUpgradeableMock.sol/PermissionConditionUpgradeableMock.dbg.json b/contracts/artifacts/src/mocks/permission/condition/PermissionConditionUpgradeableMock.sol/PermissionConditionUpgradeableMock.dbg.json deleted file mode 100644 index b8d2318f..00000000 --- a/contracts/artifacts/src/mocks/permission/condition/PermissionConditionUpgradeableMock.sol/PermissionConditionUpgradeableMock.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" -} diff --git a/contracts/artifacts/src/mocks/permission/condition/PermissionConditionUpgradeableMock.sol/PermissionConditionUpgradeableMock.json b/contracts/artifacts/src/mocks/permission/condition/PermissionConditionUpgradeableMock.sol/PermissionConditionUpgradeableMock.json deleted file mode 100644 index a8b870fd..00000000 --- a/contracts/artifacts/src/mocks/permission/condition/PermissionConditionUpgradeableMock.sol/PermissionConditionUpgradeableMock.json +++ /dev/null @@ -1,116 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "PermissionConditionUpgradeableMock", - "sourceName": "src/mocks/permission/condition/PermissionConditionUpgradeableMock.sol", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint8", - "name": "version", - "type": "uint8" - } - ], - "name": "Initialized", - "type": "event" - }, - { - "inputs": [], - "name": "answer", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_where", - "type": "address" - }, - { - "internalType": "address", - "name": "_who", - "type": "address" - }, - { - "internalType": "bytes32", - "name": "_permissionId", - "type": "bytes32" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "isGranted", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "protocolVersion", - "outputs": [ - { - "internalType": "uint8[3]", - "name": "", - "type": "uint8[3]" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bool", - "name": "_answer", - "type": "bool" - } - ], - "name": "setAnswer", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes4", - "name": "_interfaceId", - "type": "bytes4" - } - ], - "name": "supportsInterface", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - } - ], - "bytecode": "0x608060405234801561001057600080fd5b5061033d806100206000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80632ae9c600116100505780632ae9c600146100b057806385bb7d69146100c5578063f01b7dd2146100d257600080fd5b806301ffc9a71461006c5780632675fdd014610094575b600080fd5b61007f61007a36600461018e565b6100f5565b60405190151581526020015b60405180910390f35b61007f6100a23660046101fe565b60335460ff16949350505050565b6100b8610146565b60405161008b91906102da565b60335461007f9060ff1681565b6100f36100e036600461030e565b6033805460ff1916911515919091179055565b005b60006001600160e01b031982166302675fdd60e41b148061012557506001600160e01b03198216621574e360e91b145b8061014057506301ffc9a760e01b6001600160e01b03198316145b92915050565b61014e610170565b5060408051606081018252600181526004602082015260009181019190915290565b60405180606001604052806003906020820280368337509192915050565b6000602082840312156101a057600080fd5b81356001600160e01b0319811681146101b857600080fd5b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146101e357600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b6000806000806080858703121561021457600080fd5b61021d856101bf565b935061022b602086016101bf565b925060408501359150606085013567ffffffffffffffff8082111561024f57600080fd5b818701915087601f83011261026357600080fd5b813581811115610275576102756101e8565b604051601f8201601f19908116603f0116810190838211818310171561029d5761029d6101e8565b816040528281528a60208487010111156102b657600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b60608101818360005b600381101561030557815160ff168352602092830192909101906001016102e3565b50505092915050565b60006020828403121561032057600080fd5b813580151581146101b857600080fdfea164736f6c6343000811000a", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100675760003560e01c80632ae9c600116100505780632ae9c600146100b057806385bb7d69146100c5578063f01b7dd2146100d257600080fd5b806301ffc9a71461006c5780632675fdd014610094575b600080fd5b61007f61007a36600461018e565b6100f5565b60405190151581526020015b60405180910390f35b61007f6100a23660046101fe565b60335460ff16949350505050565b6100b8610146565b60405161008b91906102da565b60335461007f9060ff1681565b6100f36100e036600461030e565b6033805460ff1916911515919091179055565b005b60006001600160e01b031982166302675fdd60e41b148061012557506001600160e01b03198216621574e360e91b145b8061014057506301ffc9a760e01b6001600160e01b03198316145b92915050565b61014e610170565b5060408051606081018252600181526004602082015260009181019190915290565b60405180606001604052806003906020820280368337509192915050565b6000602082840312156101a057600080fd5b81356001600160e01b0319811681146101b857600080fd5b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146101e357600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b6000806000806080858703121561021457600080fd5b61021d856101bf565b935061022b602086016101bf565b925060408501359150606085013567ffffffffffffffff8082111561024f57600080fd5b818701915087601f83011261026357600080fd5b813581811115610275576102756101e8565b604051601f8201601f19908116603f0116810190838211818310171561029d5761029d6101e8565b816040528281528a60208487010111156102b657600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b60608101818360005b600381101561030557815160ff168352602092830192909101906001016102e3565b50505092915050565b60006020828403121561032057600080fd5b813580151581146101b857600080fdfea164736f6c6343000811000a", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/contracts/artifacts/src/mocks/plugin/PluginCloneableMock.sol/PluginCloneableMockBad.dbg.json b/contracts/artifacts/src/mocks/plugin/PluginCloneableMock.sol/PluginCloneableMockBad.dbg.json deleted file mode 100644 index 930fbb1d..00000000 --- a/contracts/artifacts/src/mocks/plugin/PluginCloneableMock.sol/PluginCloneableMockBad.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../build-info/9ac591806bb2e846e5a60f79d635058e.json" -} diff --git a/contracts/artifacts/src/mocks/plugin/PluginCloneableMock.sol/PluginCloneableMockBad.json b/contracts/artifacts/src/mocks/plugin/PluginCloneableMock.sol/PluginCloneableMockBad.json deleted file mode 100644 index eb2b8e22..00000000 --- a/contracts/artifacts/src/mocks/plugin/PluginCloneableMock.sol/PluginCloneableMockBad.json +++ /dev/null @@ -1,153 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "PluginCloneableMockBad", - "sourceName": "src/mocks/plugin/PluginCloneableMock.sol", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint8", - "name": "version", - "type": "uint8" - } - ], - "name": "Initialized", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousTarget", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newTarget", - "type": "address" - } - ], - "name": "TargetSet", - "type": "event" - }, - { - "inputs": [], - "name": "dao", - "outputs": [ - { - "internalType": "contract IDAO", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "contract IDAO", - "name": "_dao", - "type": "address" - } - ], - "name": "notAnInitializer", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "pluginType", - "outputs": [ - { - "internalType": "enum IPlugin.PluginType", - "name": "", - "type": "uint8" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [], - "name": "protocolVersion", - "outputs": [ - { - "internalType": "uint8[3]", - "name": "", - "type": "uint8[3]" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_target", - "type": "address" - } - ], - "name": "setTarget", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "state1", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes4", - "name": "_interfaceId", - "type": "bytes4" - } - ], - "name": "supportsInterface", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "target", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - } - ], - "bytecode": "0x608060405234801561001057600080fd5b5061001961001e565b6100dd565b600054610100900460ff161561008a5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116146100db576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b61043b806100ec6000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c80636accab8c1161005b5780636accab8c146100fe578063776d1a01146101155780638883bbd71461012a578063d4b839921461013d57600080fd5b806301ffc9a71461008d5780632ae9c600146100b55780634162169f146100ca57806341de6830146100ef575b600080fd5b6100a061009b36600461036f565b610150565b60405190151581526020015b60405180910390f35b6100bd6101a1565b6040516100ac91906103a0565b6065546001600160a01b03165b6040516001600160a01b0390911681526020016100ac565b60016040516100ac91906103d4565b61010760985481565b6040519081526020016100ac565b610128610123366004610411565b6101cb565b005b610128610138366004610411565b61022a565b6097546100d7906001600160a01b031681565b60006001600160e01b0319821663041de68360e41b148061018057506001600160e01b03198216621574e360e91b145b8061019b57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6101a9610351565b5060408051606081018252600181526004602082015260009181019190915290565b609780546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d690600090a35050565b6102338161023b565b506001609855565b600054610100900460ff166102ab5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084015b60405180910390fd5b6102b4816102b7565b50565b600054610100900460ff166103225760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016102a2565b6065805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b60405180606001604052806003906020820280368337509192915050565b60006020828403121561038157600080fd5b81356001600160e01b03198116811461039957600080fd5b9392505050565b60608101818360005b60038110156103cb57815160ff168352602092830192909101906001016103a9565b50505092915050565b60208101600383106103f657634e487b7160e01b600052602160045260246000fd5b91905290565b6001600160a01b03811681146102b457600080fd5b60006020828403121561042357600080fd5b8135610399816103fc56fea164736f6c6343000811000a", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100885760003560e01c80636accab8c1161005b5780636accab8c146100fe578063776d1a01146101155780638883bbd71461012a578063d4b839921461013d57600080fd5b806301ffc9a71461008d5780632ae9c600146100b55780634162169f146100ca57806341de6830146100ef575b600080fd5b6100a061009b36600461036f565b610150565b60405190151581526020015b60405180910390f35b6100bd6101a1565b6040516100ac91906103a0565b6065546001600160a01b03165b6040516001600160a01b0390911681526020016100ac565b60016040516100ac91906103d4565b61010760985481565b6040519081526020016100ac565b610128610123366004610411565b6101cb565b005b610128610138366004610411565b61022a565b6097546100d7906001600160a01b031681565b60006001600160e01b0319821663041de68360e41b148061018057506001600160e01b03198216621574e360e91b145b8061019b57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6101a9610351565b5060408051606081018252600181526004602082015260009181019190915290565b609780546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d690600090a35050565b6102338161023b565b506001609855565b600054610100900460ff166102ab5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084015b60405180910390fd5b6102b4816102b7565b50565b600054610100900460ff166103225760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016102a2565b6065805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b60405180606001604052806003906020820280368337509192915050565b60006020828403121561038157600080fd5b81356001600160e01b03198116811461039957600080fd5b9392505050565b60608101818360005b60038110156103cb57815160ff168352602092830192909101906001016103a9565b50505092915050565b60208101600383106103f657634e487b7160e01b600052602160045260246000fd5b91905290565b6001600160a01b03811681146102b457600080fd5b60006020828403121561042357600080fd5b8135610399816103fc56fea164736f6c6343000811000a", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/contracts/artifacts/src/mocks/plugin/PluginCloneableMock.sol/PluginCloneableMockBuild1.dbg.json b/contracts/artifacts/src/mocks/plugin/PluginCloneableMock.sol/PluginCloneableMockBuild1.dbg.json deleted file mode 100644 index 930fbb1d..00000000 --- a/contracts/artifacts/src/mocks/plugin/PluginCloneableMock.sol/PluginCloneableMockBuild1.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../build-info/9ac591806bb2e846e5a60f79d635058e.json" -} diff --git a/contracts/artifacts/src/mocks/plugin/PluginCloneableMock.sol/PluginCloneableMockBuild1.json b/contracts/artifacts/src/mocks/plugin/PluginCloneableMock.sol/PluginCloneableMockBuild1.json deleted file mode 100644 index d1cb285e..00000000 --- a/contracts/artifacts/src/mocks/plugin/PluginCloneableMock.sol/PluginCloneableMockBuild1.json +++ /dev/null @@ -1,153 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "PluginCloneableMockBuild1", - "sourceName": "src/mocks/plugin/PluginCloneableMock.sol", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint8", - "name": "version", - "type": "uint8" - } - ], - "name": "Initialized", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousTarget", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newTarget", - "type": "address" - } - ], - "name": "TargetSet", - "type": "event" - }, - { - "inputs": [], - "name": "dao", - "outputs": [ - { - "internalType": "contract IDAO", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "contract IDAO", - "name": "_dao", - "type": "address" - } - ], - "name": "initialize", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "pluginType", - "outputs": [ - { - "internalType": "enum IPlugin.PluginType", - "name": "", - "type": "uint8" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [], - "name": "protocolVersion", - "outputs": [ - { - "internalType": "uint8[3]", - "name": "", - "type": "uint8[3]" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_target", - "type": "address" - } - ], - "name": "setTarget", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "state1", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes4", - "name": "_interfaceId", - "type": "bytes4" - } - ], - "name": "supportsInterface", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "target", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - } - ], - "bytecode": "0x608060405234801561001057600080fd5b5061001961001e565b6100dd565b600054610100900460ff161561008a5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116146100db576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b610551806100ec6000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c80636accab8c1161005b5780636accab8c146100fe578063776d1a0114610115578063c4d66de81461012a578063d4b839921461013d57600080fd5b806301ffc9a71461008d5780632ae9c600146100b55780634162169f146100ca57806341de6830146100ef575b600080fd5b6100a061009b366004610485565b610150565b60405190151581526020015b60405180910390f35b6100bd6101a1565b6040516100ac91906104b6565b6065546001600160a01b03165b6040516001600160a01b0390911681526020016100ac565b60016040516100ac91906104ea565b61010760985481565b6040519081526020016100ac565b610128610123366004610527565b6101cb565b005b610128610138366004610527565b61022a565b6097546100d7906001600160a01b031681565b60006001600160e01b0319821663041de68360e41b148061018057506001600160e01b03198216621574e360e91b145b8061019b57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6101a9610467565b5060408051606081018252600181526004602082015260009181019190915290565b609780546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d690600090a35050565b600054610100900460ff161580801561024a5750600054600160ff909116105b806102645750303b158015610264575060005460ff166001145b6102db5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b6000805460ff1916600117905580156102fe576000805461ff0019166101001790555b61030782610356565b60016098558015610352576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b600054610100900460ff166103c15760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016102d2565b6103ca816103cd565b50565b600054610100900460ff166104385760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016102d2565b6065805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b60405180606001604052806003906020820280368337509192915050565b60006020828403121561049757600080fd5b81356001600160e01b0319811681146104af57600080fd5b9392505050565b60608101818360005b60038110156104e157815160ff168352602092830192909101906001016104bf565b50505092915050565b602081016003831061050c57634e487b7160e01b600052602160045260246000fd5b91905290565b6001600160a01b03811681146103ca57600080fd5b60006020828403121561053957600080fd5b81356104af8161051256fea164736f6c6343000811000a", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100885760003560e01c80636accab8c1161005b5780636accab8c146100fe578063776d1a0114610115578063c4d66de81461012a578063d4b839921461013d57600080fd5b806301ffc9a71461008d5780632ae9c600146100b55780634162169f146100ca57806341de6830146100ef575b600080fd5b6100a061009b366004610485565b610150565b60405190151581526020015b60405180910390f35b6100bd6101a1565b6040516100ac91906104b6565b6065546001600160a01b03165b6040516001600160a01b0390911681526020016100ac565b60016040516100ac91906104ea565b61010760985481565b6040519081526020016100ac565b610128610123366004610527565b6101cb565b005b610128610138366004610527565b61022a565b6097546100d7906001600160a01b031681565b60006001600160e01b0319821663041de68360e41b148061018057506001600160e01b03198216621574e360e91b145b8061019b57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6101a9610467565b5060408051606081018252600181526004602082015260009181019190915290565b609780546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d690600090a35050565b600054610100900460ff161580801561024a5750600054600160ff909116105b806102645750303b158015610264575060005460ff166001145b6102db5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b6000805460ff1916600117905580156102fe576000805461ff0019166101001790555b61030782610356565b60016098558015610352576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b600054610100900460ff166103c15760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016102d2565b6103ca816103cd565b50565b600054610100900460ff166104385760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016102d2565b6065805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b60405180606001604052806003906020820280368337509192915050565b60006020828403121561049757600080fd5b81356001600160e01b0319811681146104af57600080fd5b9392505050565b60608101818360005b60038110156104e157815160ff168352602092830192909101906001016104bf565b50505092915050565b602081016003831061050c57634e487b7160e01b600052602160045260246000fd5b91905290565b6001600160a01b03811681146103ca57600080fd5b60006020828403121561053957600080fd5b81356104af8161051256fea164736f6c6343000811000a", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/contracts/artifacts/src/mocks/plugin/PluginCloneableMock.sol/PluginCloneableMockBuild2.dbg.json b/contracts/artifacts/src/mocks/plugin/PluginCloneableMock.sol/PluginCloneableMockBuild2.dbg.json deleted file mode 100644 index 930fbb1d..00000000 --- a/contracts/artifacts/src/mocks/plugin/PluginCloneableMock.sol/PluginCloneableMockBuild2.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../build-info/9ac591806bb2e846e5a60f79d635058e.json" -} diff --git a/contracts/artifacts/src/mocks/plugin/PluginCloneableMock.sol/PluginCloneableMockBuild2.json b/contracts/artifacts/src/mocks/plugin/PluginCloneableMock.sol/PluginCloneableMockBuild2.json deleted file mode 100644 index 84311d71..00000000 --- a/contracts/artifacts/src/mocks/plugin/PluginCloneableMock.sol/PluginCloneableMockBuild2.json +++ /dev/null @@ -1,166 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "PluginCloneableMockBuild2", - "sourceName": "src/mocks/plugin/PluginCloneableMock.sol", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint8", - "name": "version", - "type": "uint8" - } - ], - "name": "Initialized", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousTarget", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newTarget", - "type": "address" - } - ], - "name": "TargetSet", - "type": "event" - }, - { - "inputs": [], - "name": "dao", - "outputs": [ - { - "internalType": "contract IDAO", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "contract IDAO", - "name": "_dao", - "type": "address" - } - ], - "name": "initialize", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "pluginType", - "outputs": [ - { - "internalType": "enum IPlugin.PluginType", - "name": "", - "type": "uint8" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [], - "name": "protocolVersion", - "outputs": [ - { - "internalType": "uint8[3]", - "name": "", - "type": "uint8[3]" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_target", - "type": "address" - } - ], - "name": "setTarget", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "state1", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "state2", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes4", - "name": "_interfaceId", - "type": "bytes4" - } - ], - "name": "supportsInterface", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "target", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - } - ], - "bytecode": "0x608060405234801561001057600080fd5b5061001961001e565b6100dd565b600054610100900460ff161561008a5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116146100db576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b61057a806100ec6000396000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c80636accab8c11610076578063c4d66de81161005b578063c4d66de814610145578063d4b8399214610158578063efe51cca1461016b57600080fd5b80636accab8c14610119578063776d1a011461013057600080fd5b806301ffc9a7146100a85780632ae9c600146100d05780634162169f146100e557806341de68301461010a575b600080fd5b6100bb6100b63660046104ae565b610174565b60405190151581526020015b60405180910390f35b6100d86101c5565b6040516100c791906104df565b6065546001600160a01b03165b6040516001600160a01b0390911681526020016100c7565b60016040516100c79190610513565b61012260985481565b6040519081526020016100c7565b61014361013e366004610550565b6101ef565b005b610143610153366004610550565b61024e565b6097546100f2906001600160a01b031681565b61012260995481565b60006001600160e01b0319821663041de68360e41b14806101a457506001600160e01b03198216621574e360e91b145b806101bf57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6101cd610490565b5060408051606081018252600181526004602082015260009181019190915290565b609780546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d690600090a35050565b600054610100900460ff161580801561026e5750600054600160ff909116105b806102885750303b158015610288575060005460ff166001145b6102ff5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b6000805460ff191660011790558015610322576000805461ff0019166101001790555b61032b8261037f565b60016098556002609955801561037b576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b600054610100900460ff166103ea5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016102f6565b6103f3816103f6565b50565b600054610100900460ff166104615760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016102f6565b6065805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b60405180606001604052806003906020820280368337509192915050565b6000602082840312156104c057600080fd5b81356001600160e01b0319811681146104d857600080fd5b9392505050565b60608101818360005b600381101561050a57815160ff168352602092830192909101906001016104e8565b50505092915050565b602081016003831061053557634e487b7160e01b600052602160045260246000fd5b91905290565b6001600160a01b03811681146103f357600080fd5b60006020828403121561056257600080fd5b81356104d88161053b56fea164736f6c6343000811000a", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100a35760003560e01c80636accab8c11610076578063c4d66de81161005b578063c4d66de814610145578063d4b8399214610158578063efe51cca1461016b57600080fd5b80636accab8c14610119578063776d1a011461013057600080fd5b806301ffc9a7146100a85780632ae9c600146100d05780634162169f146100e557806341de68301461010a575b600080fd5b6100bb6100b63660046104ae565b610174565b60405190151581526020015b60405180910390f35b6100d86101c5565b6040516100c791906104df565b6065546001600160a01b03165b6040516001600160a01b0390911681526020016100c7565b60016040516100c79190610513565b61012260985481565b6040519081526020016100c7565b61014361013e366004610550565b6101ef565b005b610143610153366004610550565b61024e565b6097546100f2906001600160a01b031681565b61012260995481565b60006001600160e01b0319821663041de68360e41b14806101a457506001600160e01b03198216621574e360e91b145b806101bf57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6101cd610490565b5060408051606081018252600181526004602082015260009181019190915290565b609780546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d690600090a35050565b600054610100900460ff161580801561026e5750600054600160ff909116105b806102885750303b158015610288575060005460ff166001145b6102ff5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b6000805460ff191660011790558015610322576000805461ff0019166101001790555b61032b8261037f565b60016098556002609955801561037b576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b600054610100900460ff166103ea5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016102f6565b6103f3816103f6565b50565b600054610100900460ff166104615760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016102f6565b6065805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b60405180606001604052806003906020820280368337509192915050565b6000602082840312156104c057600080fd5b81356001600160e01b0319811681146104d857600080fd5b9392505050565b60608101818360005b600381101561050a57815160ff168352602092830192909101906001016104e8565b50505092915050565b602081016003831061053557634e487b7160e01b600052602160045260246000fd5b91905290565b6001600160a01b03811681146103f357600080fd5b60006020828403121561056257600080fd5b81356104d88161053b56fea164736f6c6343000811000a", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/contracts/artifacts/src/mocks/plugin/PluginCloneableSetupMock.sol/PluginCloneableSetupMockBuild1.dbg.json b/contracts/artifacts/src/mocks/plugin/PluginCloneableSetupMock.sol/PluginCloneableSetupMockBuild1.dbg.json deleted file mode 100644 index 930fbb1d..00000000 --- a/contracts/artifacts/src/mocks/plugin/PluginCloneableSetupMock.sol/PluginCloneableSetupMockBuild1.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../build-info/9ac591806bb2e846e5a60f79d635058e.json" -} diff --git a/contracts/artifacts/src/mocks/plugin/PluginCloneableSetupMock.sol/PluginCloneableSetupMockBuild1.json b/contracts/artifacts/src/mocks/plugin/PluginCloneableSetupMock.sol/PluginCloneableSetupMockBuild1.json deleted file mode 100644 index b75853d7..00000000 --- a/contracts/artifacts/src/mocks/plugin/PluginCloneableSetupMock.sol/PluginCloneableSetupMockBuild1.json +++ /dev/null @@ -1,297 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "PluginCloneableSetupMockBuild1", - "sourceName": "src/mocks/plugin/PluginCloneableSetupMock.sol", - "abi": [ - { - "inputs": [], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "inputs": [], - "name": "ConflictingValues", - "type": "error" - }, - { - "inputs": [], - "name": "NonUpgradeablePlugin", - "type": "error" - }, - { - "inputs": [], - "name": "implementation", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_dao", - "type": "address" - }, - { - "internalType": "bytes", - "name": "", - "type": "bytes" - } - ], - "name": "prepareInstallation", - "outputs": [ - { - "internalType": "address", - "name": "plugin", - "type": "address" - }, - { - "components": [ - { - "internalType": "address[]", - "name": "helpers", - "type": "address[]" - }, - { - "components": [ - { - "internalType": "enum PermissionLib.Operation", - "name": "operation", - "type": "uint8" - }, - { - "internalType": "address", - "name": "where", - "type": "address" - }, - { - "internalType": "address", - "name": "who", - "type": "address" - }, - { - "internalType": "address", - "name": "condition", - "type": "address" - }, - { - "internalType": "bytes32", - "name": "permissionId", - "type": "bytes32" - } - ], - "internalType": "struct PermissionLib.MultiTargetPermission[]", - "name": "permissions", - "type": "tuple[]" - } - ], - "internalType": "struct IPluginSetup.PreparedSetupData", - "name": "preparedSetupData", - "type": "tuple" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_dao", - "type": "address" - }, - { - "components": [ - { - "internalType": "address", - "name": "plugin", - "type": "address" - }, - { - "internalType": "address[]", - "name": "currentHelpers", - "type": "address[]" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "internalType": "struct IPluginSetup.SetupPayload", - "name": "_payload", - "type": "tuple" - } - ], - "name": "prepareUninstallation", - "outputs": [ - { - "components": [ - { - "internalType": "enum PermissionLib.Operation", - "name": "operation", - "type": "uint8" - }, - { - "internalType": "address", - "name": "where", - "type": "address" - }, - { - "internalType": "address", - "name": "who", - "type": "address" - }, - { - "internalType": "address", - "name": "condition", - "type": "address" - }, - { - "internalType": "bytes32", - "name": "permissionId", - "type": "bytes32" - } - ], - "internalType": "struct PermissionLib.MultiTargetPermission[]", - "name": "permissions", - "type": "tuple[]" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_dao", - "type": "address" - }, - { - "internalType": "uint16", - "name": "_fromBuild", - "type": "uint16" - }, - { - "components": [ - { - "internalType": "address", - "name": "plugin", - "type": "address" - }, - { - "internalType": "address[]", - "name": "currentHelpers", - "type": "address[]" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "internalType": "struct IPluginSetup.SetupPayload", - "name": "_payload", - "type": "tuple" - } - ], - "name": "prepareUpdate", - "outputs": [ - { - "internalType": "bytes", - "name": "", - "type": "bytes" - }, - { - "components": [ - { - "internalType": "address[]", - "name": "helpers", - "type": "address[]" - }, - { - "components": [ - { - "internalType": "enum PermissionLib.Operation", - "name": "operation", - "type": "uint8" - }, - { - "internalType": "address", - "name": "where", - "type": "address" - }, - { - "internalType": "address", - "name": "who", - "type": "address" - }, - { - "internalType": "address", - "name": "condition", - "type": "address" - }, - { - "internalType": "bytes32", - "name": "permissionId", - "type": "bytes32" - } - ], - "internalType": "struct PermissionLib.MultiTargetPermission[]", - "name": "permissions", - "type": "tuple[]" - } - ], - "internalType": "struct IPluginSetup.PreparedSetupData", - "name": "", - "type": "tuple" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [], - "name": "protocolVersion", - "outputs": [ - { - "internalType": "uint8[3]", - "name": "", - "type": "uint8[3]" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes4", - "name": "_interfaceId", - "type": "bytes4" - } - ], - "name": "supportsInterface", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - } - ], - "bytecode": "0x60a060405234801561001057600080fd5b5060405161001d9061004b565b604051809103906000f080158015610039573d6000803e3d6000fd5b506001600160a01b0316608052610058565b61063d80610d3083390190565b608051610cb76100796000396000818160c101526102970152610cb76000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c80639cb0a124116100505780639cb0a124146100eb578063a8a9c29e1461010b578063f10832f11461012c57600080fd5b806301ffc9a7146100775780632ae9c6001461009f5780635c60da1b146100b4575b600080fd5b61008a6100853660046107fd565b61014d565b60405190151581526020015b60405180910390f35b6100a761019e565b6040516100969190610827565b6040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152602001610096565b6100fe6100f9366004610884565b6101c8565b604051610096919061094e565b61011e610119366004610997565b6101de565b604051610096929190610ae1565b61013f61013a366004610b25565b610216565b604051610096929190610be7565b60006001600160e01b0319821663099718b560e41b148061017d57506001600160e01b03198216621574e360e91b145b8061019857506301ffc9a760e01b6001600160e01b03198316145b92915050565b6101a66107df565b5060408051606081018252600181526004602082015260009181019190915290565b60606101d760006001806102f2565b9392505050565b60606101fd604051806040016040528060608152602001606081525090565b60405163a112810160e01b815260040160405180910390fd5b6000610235604051806040016040528060608152602001606081525090565b6040516001600160a01b038516602482015260009060440160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663189acdbd60e31b17905290506102c8816102b97f000000000000000000000000000000000000000000000000000000000000000090565b6001600160a01b031690610477565b92506102d460016104af565b82526102e360006001816102f2565b60208301525090939092509050565b6060826001600160a01b0316846001600160a01b0316111561032757604051633a4013cd60e21b815260040160405180910390fd5b6103318484610c1f565b6001600160a01b031667ffffffffffffffff81111561035257610352610b0f565b6040519080825280602002602001820160405280156103ab57816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282526000199092019101816103705790505b509050835b836001600160a01b0316816001600160a01b0316101561046f576040518060a001604052808460028111156103e7576103e76108d2565b81526001600160a01b038316602082018190526040820152600060608201527fa280eec51ab8e1bc4b6b0c1b7f1bde785761b787a49db404e3e9338ed9b016ef608090910152826104388784610c1f565b6001600160a01b03168151811061045157610451610c3f565b6020026020010181905250808061046790610c55565b9150506103b0565b509392505050565b600061048b836001600160a01b0316610568565b825190915015610198576104a86001600160a01b0382168361060e565b5092915050565b6060816001600160a01b031667ffffffffffffffff8111156104d3576104d3610b0f565b6040519080825280602002602001820160405280156104fc578160200160208202803683370190505b50905060005b826001600160a01b0316816001600160a01b03161015610562578082826001600160a01b03168151811061053857610538610c3f565b6001600160a01b03909216602092830291909101909101528061055a81610c55565b915050610502565b50919050565b6000763d602d80600a3d3981f3363d3d373d3d3d363d730000008260601b60e81c176000526e5af43d82803e903d91602b57fd5bf38260781b17602052603760096000f090506001600160a01b0381166106095760405162461bcd60e51b815260206004820152601660248201527f455243313136373a20637265617465206661696c65640000000000000000000060448201526064015b60405180910390fd5b919050565b60606101d7838360006040518060400160405280601e81526020017f416464726573733a206c6f772d6c6576656c2063616c6c206661696c656400008152506060824710156106c55760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610600565b600080866001600160a01b031685876040516106e19190610c7b565b60006040518083038185875af1925050503d806000811461071e576040519150601f19603f3d011682016040523d82523d6000602084013e610723565b606091505b509150915061073487838387610741565b925050505b949350505050565b606083156107b05782516000036107a9576001600160a01b0385163b6107a95760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610600565b5081610739565b61073983838151156107c55781518083602001fd5b8060405162461bcd60e51b81526004016106009190610c97565b60405180606001604052806003906020820280368337509192915050565b60006020828403121561080f57600080fd5b81356001600160e01b0319811681146101d757600080fd5b60608101818360005b600381101561085257815160ff16835260209283019290910190600101610830565b50505092915050565b80356001600160a01b038116811461060957600080fd5b60006060828403121561056257600080fd5b6000806040838503121561089757600080fd5b6108a08361085b565b9150602083013567ffffffffffffffff8111156108bc57600080fd5b6108c885828601610872565b9150509250929050565b634e487b7160e01b600052602160045260246000fd5b600081516003811061090a57634e487b7160e01b600052602160045260246000fd5b8352506020818101516001600160a01b0390811691840191909152604080830151821690840152606080830151909116908301526080908101519082015260a00190565b6020808252825182820181905260009190848201906040850190845b8181101561098b5761097d8385516108e8565b93850193925060010161096a565b50909695505050505050565b6000806000606084860312156109ac57600080fd5b6109b58461085b565b9250602084013561ffff811681146109cc57600080fd5b9150604084013567ffffffffffffffff8111156109e857600080fd5b6109f486828701610872565b9150509250925092565b60005b83811015610a19578181015183820152602001610a01565b50506000910152565b60008151808452610a3a8160208601602086016109fe565b601f01601f19169290920160200192915050565b805160408084528151908401819052600091602091908201906060860190845b81811015610a935783516001600160a01b031683529284019291840191600101610a6e565b50508483015186820387850152805180835290840192506000918401905b80831015610ad657610ac48285516108e8565b91508484019350600183019250610ab1565b509695505050505050565b604081526000610af46040830185610a22565b8281036020840152610b068185610a4e565b95945050505050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215610b3857600080fd5b610b418361085b565b9150602083013567ffffffffffffffff80821115610b5e57600080fd5b818501915085601f830112610b7257600080fd5b813581811115610b8457610b84610b0f565b604051601f8201601f19908116603f01168101908382118183101715610bac57610bac610b0f565b81604052828152886020848701011115610bc557600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6001600160a01b03831681526040602082015260006107396040830184610a4e565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b038281168282160390808211156104a8576104a8610c09565b634e487b7160e01b600052603260045260246000fd5b60006001600160a01b03808316818103610c7157610c71610c09565b6001019392505050565b60008251610c8d8184602087016109fe565b9190910192915050565b6020815260006101d76020830184610a2256fea164736f6c6343000811000a608060405234801561001057600080fd5b5061001961001e565b6100dd565b600054610100900460ff161561008a5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116146100db576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b610551806100ec6000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c80636accab8c1161005b5780636accab8c146100fe578063776d1a0114610115578063c4d66de81461012a578063d4b839921461013d57600080fd5b806301ffc9a71461008d5780632ae9c600146100b55780634162169f146100ca57806341de6830146100ef575b600080fd5b6100a061009b366004610485565b610150565b60405190151581526020015b60405180910390f35b6100bd6101a1565b6040516100ac91906104b6565b6065546001600160a01b03165b6040516001600160a01b0390911681526020016100ac565b60016040516100ac91906104ea565b61010760985481565b6040519081526020016100ac565b610128610123366004610527565b6101cb565b005b610128610138366004610527565b61022a565b6097546100d7906001600160a01b031681565b60006001600160e01b0319821663041de68360e41b148061018057506001600160e01b03198216621574e360e91b145b8061019b57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6101a9610467565b5060408051606081018252600181526004602082015260009181019190915290565b609780546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d690600090a35050565b600054610100900460ff161580801561024a5750600054600160ff909116105b806102645750303b158015610264575060005460ff166001145b6102db5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b6000805460ff1916600117905580156102fe576000805461ff0019166101001790555b61030782610356565b60016098558015610352576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b600054610100900460ff166103c15760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016102d2565b6103ca816103cd565b50565b600054610100900460ff166104385760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016102d2565b6065805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b60405180606001604052806003906020820280368337509192915050565b60006020828403121561049757600080fd5b81356001600160e01b0319811681146104af57600080fd5b9392505050565b60608101818360005b60038110156104e157815160ff168352602092830192909101906001016104bf565b50505092915050565b602081016003831061050c57634e487b7160e01b600052602160045260246000fd5b91905290565b6001600160a01b03811681146103ca57600080fd5b60006020828403121561053957600080fd5b81356104af8161051256fea164736f6c6343000811000a", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100725760003560e01c80639cb0a124116100505780639cb0a124146100eb578063a8a9c29e1461010b578063f10832f11461012c57600080fd5b806301ffc9a7146100775780632ae9c6001461009f5780635c60da1b146100b4575b600080fd5b61008a6100853660046107fd565b61014d565b60405190151581526020015b60405180910390f35b6100a761019e565b6040516100969190610827565b6040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152602001610096565b6100fe6100f9366004610884565b6101c8565b604051610096919061094e565b61011e610119366004610997565b6101de565b604051610096929190610ae1565b61013f61013a366004610b25565b610216565b604051610096929190610be7565b60006001600160e01b0319821663099718b560e41b148061017d57506001600160e01b03198216621574e360e91b145b8061019857506301ffc9a760e01b6001600160e01b03198316145b92915050565b6101a66107df565b5060408051606081018252600181526004602082015260009181019190915290565b60606101d760006001806102f2565b9392505050565b60606101fd604051806040016040528060608152602001606081525090565b60405163a112810160e01b815260040160405180910390fd5b6000610235604051806040016040528060608152602001606081525090565b6040516001600160a01b038516602482015260009060440160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663189acdbd60e31b17905290506102c8816102b97f000000000000000000000000000000000000000000000000000000000000000090565b6001600160a01b031690610477565b92506102d460016104af565b82526102e360006001816102f2565b60208301525090939092509050565b6060826001600160a01b0316846001600160a01b0316111561032757604051633a4013cd60e21b815260040160405180910390fd5b6103318484610c1f565b6001600160a01b031667ffffffffffffffff81111561035257610352610b0f565b6040519080825280602002602001820160405280156103ab57816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282526000199092019101816103705790505b509050835b836001600160a01b0316816001600160a01b0316101561046f576040518060a001604052808460028111156103e7576103e76108d2565b81526001600160a01b038316602082018190526040820152600060608201527fa280eec51ab8e1bc4b6b0c1b7f1bde785761b787a49db404e3e9338ed9b016ef608090910152826104388784610c1f565b6001600160a01b03168151811061045157610451610c3f565b6020026020010181905250808061046790610c55565b9150506103b0565b509392505050565b600061048b836001600160a01b0316610568565b825190915015610198576104a86001600160a01b0382168361060e565b5092915050565b6060816001600160a01b031667ffffffffffffffff8111156104d3576104d3610b0f565b6040519080825280602002602001820160405280156104fc578160200160208202803683370190505b50905060005b826001600160a01b0316816001600160a01b03161015610562578082826001600160a01b03168151811061053857610538610c3f565b6001600160a01b03909216602092830291909101909101528061055a81610c55565b915050610502565b50919050565b6000763d602d80600a3d3981f3363d3d373d3d3d363d730000008260601b60e81c176000526e5af43d82803e903d91602b57fd5bf38260781b17602052603760096000f090506001600160a01b0381166106095760405162461bcd60e51b815260206004820152601660248201527f455243313136373a20637265617465206661696c65640000000000000000000060448201526064015b60405180910390fd5b919050565b60606101d7838360006040518060400160405280601e81526020017f416464726573733a206c6f772d6c6576656c2063616c6c206661696c656400008152506060824710156106c55760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610600565b600080866001600160a01b031685876040516106e19190610c7b565b60006040518083038185875af1925050503d806000811461071e576040519150601f19603f3d011682016040523d82523d6000602084013e610723565b606091505b509150915061073487838387610741565b925050505b949350505050565b606083156107b05782516000036107a9576001600160a01b0385163b6107a95760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610600565b5081610739565b61073983838151156107c55781518083602001fd5b8060405162461bcd60e51b81526004016106009190610c97565b60405180606001604052806003906020820280368337509192915050565b60006020828403121561080f57600080fd5b81356001600160e01b0319811681146101d757600080fd5b60608101818360005b600381101561085257815160ff16835260209283019290910190600101610830565b50505092915050565b80356001600160a01b038116811461060957600080fd5b60006060828403121561056257600080fd5b6000806040838503121561089757600080fd5b6108a08361085b565b9150602083013567ffffffffffffffff8111156108bc57600080fd5b6108c885828601610872565b9150509250929050565b634e487b7160e01b600052602160045260246000fd5b600081516003811061090a57634e487b7160e01b600052602160045260246000fd5b8352506020818101516001600160a01b0390811691840191909152604080830151821690840152606080830151909116908301526080908101519082015260a00190565b6020808252825182820181905260009190848201906040850190845b8181101561098b5761097d8385516108e8565b93850193925060010161096a565b50909695505050505050565b6000806000606084860312156109ac57600080fd5b6109b58461085b565b9250602084013561ffff811681146109cc57600080fd5b9150604084013567ffffffffffffffff8111156109e857600080fd5b6109f486828701610872565b9150509250925092565b60005b83811015610a19578181015183820152602001610a01565b50506000910152565b60008151808452610a3a8160208601602086016109fe565b601f01601f19169290920160200192915050565b805160408084528151908401819052600091602091908201906060860190845b81811015610a935783516001600160a01b031683529284019291840191600101610a6e565b50508483015186820387850152805180835290840192506000918401905b80831015610ad657610ac48285516108e8565b91508484019350600183019250610ab1565b509695505050505050565b604081526000610af46040830185610a22565b8281036020840152610b068185610a4e565b95945050505050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215610b3857600080fd5b610b418361085b565b9150602083013567ffffffffffffffff80821115610b5e57600080fd5b818501915085601f830112610b7257600080fd5b813581811115610b8457610b84610b0f565b604051601f8201601f19908116603f01168101908382118183101715610bac57610bac610b0f565b81604052828152886020848701011115610bc557600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6001600160a01b03831681526040602082015260006107396040830184610a4e565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b038281168282160390808211156104a8576104a8610c09565b634e487b7160e01b600052603260045260246000fd5b60006001600160a01b03808316818103610c7157610c71610c09565b6001019392505050565b60008251610c8d8184602087016109fe565b9190910192915050565b6020815260006101d76020830184610a2256fea164736f6c6343000811000a", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/contracts/artifacts/src/mocks/plugin/PluginCloneableSetupMock.sol/PluginCloneableSetupMockBuild2.dbg.json b/contracts/artifacts/src/mocks/plugin/PluginCloneableSetupMock.sol/PluginCloneableSetupMockBuild2.dbg.json deleted file mode 100644 index 930fbb1d..00000000 --- a/contracts/artifacts/src/mocks/plugin/PluginCloneableSetupMock.sol/PluginCloneableSetupMockBuild2.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../build-info/9ac591806bb2e846e5a60f79d635058e.json" -} diff --git a/contracts/artifacts/src/mocks/plugin/PluginCloneableSetupMock.sol/PluginCloneableSetupMockBuild2.json b/contracts/artifacts/src/mocks/plugin/PluginCloneableSetupMock.sol/PluginCloneableSetupMockBuild2.json deleted file mode 100644 index 6b422dc5..00000000 --- a/contracts/artifacts/src/mocks/plugin/PluginCloneableSetupMock.sol/PluginCloneableSetupMockBuild2.json +++ /dev/null @@ -1,297 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "PluginCloneableSetupMockBuild2", - "sourceName": "src/mocks/plugin/PluginCloneableSetupMock.sol", - "abi": [ - { - "inputs": [], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "inputs": [], - "name": "ConflictingValues", - "type": "error" - }, - { - "inputs": [], - "name": "NonUpgradeablePlugin", - "type": "error" - }, - { - "inputs": [], - "name": "implementation", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_dao", - "type": "address" - }, - { - "internalType": "bytes", - "name": "", - "type": "bytes" - } - ], - "name": "prepareInstallation", - "outputs": [ - { - "internalType": "address", - "name": "plugin", - "type": "address" - }, - { - "components": [ - { - "internalType": "address[]", - "name": "helpers", - "type": "address[]" - }, - { - "components": [ - { - "internalType": "enum PermissionLib.Operation", - "name": "operation", - "type": "uint8" - }, - { - "internalType": "address", - "name": "where", - "type": "address" - }, - { - "internalType": "address", - "name": "who", - "type": "address" - }, - { - "internalType": "address", - "name": "condition", - "type": "address" - }, - { - "internalType": "bytes32", - "name": "permissionId", - "type": "bytes32" - } - ], - "internalType": "struct PermissionLib.MultiTargetPermission[]", - "name": "permissions", - "type": "tuple[]" - } - ], - "internalType": "struct IPluginSetup.PreparedSetupData", - "name": "preparedSetupData", - "type": "tuple" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_dao", - "type": "address" - }, - { - "components": [ - { - "internalType": "address", - "name": "plugin", - "type": "address" - }, - { - "internalType": "address[]", - "name": "currentHelpers", - "type": "address[]" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "internalType": "struct IPluginSetup.SetupPayload", - "name": "_payload", - "type": "tuple" - } - ], - "name": "prepareUninstallation", - "outputs": [ - { - "components": [ - { - "internalType": "enum PermissionLib.Operation", - "name": "operation", - "type": "uint8" - }, - { - "internalType": "address", - "name": "where", - "type": "address" - }, - { - "internalType": "address", - "name": "who", - "type": "address" - }, - { - "internalType": "address", - "name": "condition", - "type": "address" - }, - { - "internalType": "bytes32", - "name": "permissionId", - "type": "bytes32" - } - ], - "internalType": "struct PermissionLib.MultiTargetPermission[]", - "name": "permissions", - "type": "tuple[]" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_dao", - "type": "address" - }, - { - "internalType": "uint16", - "name": "_fromBuild", - "type": "uint16" - }, - { - "components": [ - { - "internalType": "address", - "name": "plugin", - "type": "address" - }, - { - "internalType": "address[]", - "name": "currentHelpers", - "type": "address[]" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "internalType": "struct IPluginSetup.SetupPayload", - "name": "_payload", - "type": "tuple" - } - ], - "name": "prepareUpdate", - "outputs": [ - { - "internalType": "bytes", - "name": "", - "type": "bytes" - }, - { - "components": [ - { - "internalType": "address[]", - "name": "helpers", - "type": "address[]" - }, - { - "components": [ - { - "internalType": "enum PermissionLib.Operation", - "name": "operation", - "type": "uint8" - }, - { - "internalType": "address", - "name": "where", - "type": "address" - }, - { - "internalType": "address", - "name": "who", - "type": "address" - }, - { - "internalType": "address", - "name": "condition", - "type": "address" - }, - { - "internalType": "bytes32", - "name": "permissionId", - "type": "bytes32" - } - ], - "internalType": "struct PermissionLib.MultiTargetPermission[]", - "name": "permissions", - "type": "tuple[]" - } - ], - "internalType": "struct IPluginSetup.PreparedSetupData", - "name": "", - "type": "tuple" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [], - "name": "protocolVersion", - "outputs": [ - { - "internalType": "uint8[3]", - "name": "", - "type": "uint8[3]" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes4", - "name": "_interfaceId", - "type": "bytes4" - } - ], - "name": "supportsInterface", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - } - ], - "bytecode": "0x60a060405234801561001057600080fd5b5060405161001d9061004b565b604051809103906000f080158015610039573d6000803e3d6000fd5b506001600160a01b0316608052610058565b61066680610d3183390190565b608051610cb86100796000396000818160c101526102980152610cb86000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c80639cb0a124116100505780639cb0a124146100eb578063a8a9c29e1461010b578063f10832f11461012c57600080fd5b806301ffc9a7146100775780632ae9c6001461009f5780635c60da1b146100b4575b600080fd5b61008a6100853660046107fe565b61014d565b60405190151581526020015b60405180910390f35b6100a761019e565b6040516100969190610828565b6040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152602001610096565b6100fe6100f9366004610885565b6101c8565b604051610096919061094f565b61011e610119366004610998565b6101df565b604051610096929190610ae2565b61013f61013a366004610b26565b610217565b604051610096929190610be8565b60006001600160e01b0319821663099718b560e41b148061017d57506001600160e01b03198216621574e360e91b145b8061019857506301ffc9a760e01b6001600160e01b03198316145b92915050565b6101a66107e0565b5060408051606081018252600181526004602082015260009181019190915290565b60606101d86000600260016102f3565b9392505050565b60606101fe604051806040016040528060608152602001606081525090565b60405163a112810160e01b815260040160405180910390fd5b6000610236604051806040016040528060608152602001606081525090565b6040516001600160a01b038516602482015260009060440160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663189acdbd60e31b17905290506102c9816102ba7f000000000000000000000000000000000000000000000000000000000000000090565b6001600160a01b031690610478565b92506102d560026104b0565b82526102e460006002816102f3565b60208301525090939092509050565b6060826001600160a01b0316846001600160a01b0316111561032857604051633a4013cd60e21b815260040160405180910390fd5b6103328484610c20565b6001600160a01b031667ffffffffffffffff81111561035357610353610b10565b6040519080825280602002602001820160405280156103ac57816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282526000199092019101816103715790505b509050835b836001600160a01b0316816001600160a01b03161015610470576040518060a001604052808460028111156103e8576103e86108d3565b81526001600160a01b038316602082018190526040820152600060608201527fa280eec51ab8e1bc4b6b0c1b7f1bde785761b787a49db404e3e9338ed9b016ef608090910152826104398784610c20565b6001600160a01b03168151811061045257610452610c40565b6020026020010181905250808061046890610c56565b9150506103b1565b509392505050565b600061048c836001600160a01b0316610569565b825190915015610198576104a96001600160a01b0382168361060f565b5092915050565b6060816001600160a01b031667ffffffffffffffff8111156104d4576104d4610b10565b6040519080825280602002602001820160405280156104fd578160200160208202803683370190505b50905060005b826001600160a01b0316816001600160a01b03161015610563578082826001600160a01b03168151811061053957610539610c40565b6001600160a01b03909216602092830291909101909101528061055b81610c56565b915050610503565b50919050565b6000763d602d80600a3d3981f3363d3d373d3d3d363d730000008260601b60e81c176000526e5af43d82803e903d91602b57fd5bf38260781b17602052603760096000f090506001600160a01b03811661060a5760405162461bcd60e51b815260206004820152601660248201527f455243313136373a20637265617465206661696c65640000000000000000000060448201526064015b60405180910390fd5b919050565b60606101d8838360006040518060400160405280601e81526020017f416464726573733a206c6f772d6c6576656c2063616c6c206661696c656400008152506060824710156106c65760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610601565b600080866001600160a01b031685876040516106e29190610c7c565b60006040518083038185875af1925050503d806000811461071f576040519150601f19603f3d011682016040523d82523d6000602084013e610724565b606091505b509150915061073587838387610742565b925050505b949350505050565b606083156107b15782516000036107aa576001600160a01b0385163b6107aa5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610601565b508161073a565b61073a83838151156107c65781518083602001fd5b8060405162461bcd60e51b81526004016106019190610c98565b60405180606001604052806003906020820280368337509192915050565b60006020828403121561081057600080fd5b81356001600160e01b0319811681146101d857600080fd5b60608101818360005b600381101561085357815160ff16835260209283019290910190600101610831565b50505092915050565b80356001600160a01b038116811461060a57600080fd5b60006060828403121561056357600080fd5b6000806040838503121561089857600080fd5b6108a18361085c565b9150602083013567ffffffffffffffff8111156108bd57600080fd5b6108c985828601610873565b9150509250929050565b634e487b7160e01b600052602160045260246000fd5b600081516003811061090b57634e487b7160e01b600052602160045260246000fd5b8352506020818101516001600160a01b0390811691840191909152604080830151821690840152606080830151909116908301526080908101519082015260a00190565b6020808252825182820181905260009190848201906040850190845b8181101561098c5761097e8385516108e9565b93850193925060010161096b565b50909695505050505050565b6000806000606084860312156109ad57600080fd5b6109b68461085c565b9250602084013561ffff811681146109cd57600080fd5b9150604084013567ffffffffffffffff8111156109e957600080fd5b6109f586828701610873565b9150509250925092565b60005b83811015610a1a578181015183820152602001610a02565b50506000910152565b60008151808452610a3b8160208601602086016109ff565b601f01601f19169290920160200192915050565b805160408084528151908401819052600091602091908201906060860190845b81811015610a945783516001600160a01b031683529284019291840191600101610a6f565b50508483015186820387850152805180835290840192506000918401905b80831015610ad757610ac58285516108e9565b91508484019350600183019250610ab2565b509695505050505050565b604081526000610af56040830185610a23565b8281036020840152610b078185610a4f565b95945050505050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215610b3957600080fd5b610b428361085c565b9150602083013567ffffffffffffffff80821115610b5f57600080fd5b818501915085601f830112610b7357600080fd5b813581811115610b8557610b85610b10565b604051601f8201601f19908116603f01168101908382118183101715610bad57610bad610b10565b81604052828152886020848701011115610bc657600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6001600160a01b038316815260406020820152600061073a6040830184610a4f565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b038281168282160390808211156104a9576104a9610c0a565b634e487b7160e01b600052603260045260246000fd5b60006001600160a01b03808316818103610c7257610c72610c0a565b6001019392505050565b60008251610c8e8184602087016109ff565b9190910192915050565b6020815260006101d86020830184610a2356fea164736f6c6343000811000a608060405234801561001057600080fd5b5061001961001e565b6100dd565b600054610100900460ff161561008a5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116146100db576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b61057a806100ec6000396000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c80636accab8c11610076578063c4d66de81161005b578063c4d66de814610145578063d4b8399214610158578063efe51cca1461016b57600080fd5b80636accab8c14610119578063776d1a011461013057600080fd5b806301ffc9a7146100a85780632ae9c600146100d05780634162169f146100e557806341de68301461010a575b600080fd5b6100bb6100b63660046104ae565b610174565b60405190151581526020015b60405180910390f35b6100d86101c5565b6040516100c791906104df565b6065546001600160a01b03165b6040516001600160a01b0390911681526020016100c7565b60016040516100c79190610513565b61012260985481565b6040519081526020016100c7565b61014361013e366004610550565b6101ef565b005b610143610153366004610550565b61024e565b6097546100f2906001600160a01b031681565b61012260995481565b60006001600160e01b0319821663041de68360e41b14806101a457506001600160e01b03198216621574e360e91b145b806101bf57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6101cd610490565b5060408051606081018252600181526004602082015260009181019190915290565b609780546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d690600090a35050565b600054610100900460ff161580801561026e5750600054600160ff909116105b806102885750303b158015610288575060005460ff166001145b6102ff5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b6000805460ff191660011790558015610322576000805461ff0019166101001790555b61032b8261037f565b60016098556002609955801561037b576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b600054610100900460ff166103ea5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016102f6565b6103f3816103f6565b50565b600054610100900460ff166104615760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016102f6565b6065805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b60405180606001604052806003906020820280368337509192915050565b6000602082840312156104c057600080fd5b81356001600160e01b0319811681146104d857600080fd5b9392505050565b60608101818360005b600381101561050a57815160ff168352602092830192909101906001016104e8565b50505092915050565b602081016003831061053557634e487b7160e01b600052602160045260246000fd5b91905290565b6001600160a01b03811681146103f357600080fd5b60006020828403121561056257600080fd5b81356104d88161053b56fea164736f6c6343000811000a", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100725760003560e01c80639cb0a124116100505780639cb0a124146100eb578063a8a9c29e1461010b578063f10832f11461012c57600080fd5b806301ffc9a7146100775780632ae9c6001461009f5780635c60da1b146100b4575b600080fd5b61008a6100853660046107fe565b61014d565b60405190151581526020015b60405180910390f35b6100a761019e565b6040516100969190610828565b6040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152602001610096565b6100fe6100f9366004610885565b6101c8565b604051610096919061094f565b61011e610119366004610998565b6101df565b604051610096929190610ae2565b61013f61013a366004610b26565b610217565b604051610096929190610be8565b60006001600160e01b0319821663099718b560e41b148061017d57506001600160e01b03198216621574e360e91b145b8061019857506301ffc9a760e01b6001600160e01b03198316145b92915050565b6101a66107e0565b5060408051606081018252600181526004602082015260009181019190915290565b60606101d86000600260016102f3565b9392505050565b60606101fe604051806040016040528060608152602001606081525090565b60405163a112810160e01b815260040160405180910390fd5b6000610236604051806040016040528060608152602001606081525090565b6040516001600160a01b038516602482015260009060440160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663189acdbd60e31b17905290506102c9816102ba7f000000000000000000000000000000000000000000000000000000000000000090565b6001600160a01b031690610478565b92506102d560026104b0565b82526102e460006002816102f3565b60208301525090939092509050565b6060826001600160a01b0316846001600160a01b0316111561032857604051633a4013cd60e21b815260040160405180910390fd5b6103328484610c20565b6001600160a01b031667ffffffffffffffff81111561035357610353610b10565b6040519080825280602002602001820160405280156103ac57816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282526000199092019101816103715790505b509050835b836001600160a01b0316816001600160a01b03161015610470576040518060a001604052808460028111156103e8576103e86108d3565b81526001600160a01b038316602082018190526040820152600060608201527fa280eec51ab8e1bc4b6b0c1b7f1bde785761b787a49db404e3e9338ed9b016ef608090910152826104398784610c20565b6001600160a01b03168151811061045257610452610c40565b6020026020010181905250808061046890610c56565b9150506103b1565b509392505050565b600061048c836001600160a01b0316610569565b825190915015610198576104a96001600160a01b0382168361060f565b5092915050565b6060816001600160a01b031667ffffffffffffffff8111156104d4576104d4610b10565b6040519080825280602002602001820160405280156104fd578160200160208202803683370190505b50905060005b826001600160a01b0316816001600160a01b03161015610563578082826001600160a01b03168151811061053957610539610c40565b6001600160a01b03909216602092830291909101909101528061055b81610c56565b915050610503565b50919050565b6000763d602d80600a3d3981f3363d3d373d3d3d363d730000008260601b60e81c176000526e5af43d82803e903d91602b57fd5bf38260781b17602052603760096000f090506001600160a01b03811661060a5760405162461bcd60e51b815260206004820152601660248201527f455243313136373a20637265617465206661696c65640000000000000000000060448201526064015b60405180910390fd5b919050565b60606101d8838360006040518060400160405280601e81526020017f416464726573733a206c6f772d6c6576656c2063616c6c206661696c656400008152506060824710156106c65760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610601565b600080866001600160a01b031685876040516106e29190610c7c565b60006040518083038185875af1925050503d806000811461071f576040519150601f19603f3d011682016040523d82523d6000602084013e610724565b606091505b509150915061073587838387610742565b925050505b949350505050565b606083156107b15782516000036107aa576001600160a01b0385163b6107aa5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610601565b508161073a565b61073a83838151156107c65781518083602001fd5b8060405162461bcd60e51b81526004016106019190610c98565b60405180606001604052806003906020820280368337509192915050565b60006020828403121561081057600080fd5b81356001600160e01b0319811681146101d857600080fd5b60608101818360005b600381101561085357815160ff16835260209283019290910190600101610831565b50505092915050565b80356001600160a01b038116811461060a57600080fd5b60006060828403121561056357600080fd5b6000806040838503121561089857600080fd5b6108a18361085c565b9150602083013567ffffffffffffffff8111156108bd57600080fd5b6108c985828601610873565b9150509250929050565b634e487b7160e01b600052602160045260246000fd5b600081516003811061090b57634e487b7160e01b600052602160045260246000fd5b8352506020818101516001600160a01b0390811691840191909152604080830151821690840152606080830151909116908301526080908101519082015260a00190565b6020808252825182820181905260009190848201906040850190845b8181101561098c5761097e8385516108e9565b93850193925060010161096b565b50909695505050505050565b6000806000606084860312156109ad57600080fd5b6109b68461085c565b9250602084013561ffff811681146109cd57600080fd5b9150604084013567ffffffffffffffff8111156109e957600080fd5b6109f586828701610873565b9150509250925092565b60005b83811015610a1a578181015183820152602001610a02565b50506000910152565b60008151808452610a3b8160208601602086016109ff565b601f01601f19169290920160200192915050565b805160408084528151908401819052600091602091908201906060860190845b81811015610a945783516001600160a01b031683529284019291840191600101610a6f565b50508483015186820387850152805180835290840192506000918401905b80831015610ad757610ac58285516108e9565b91508484019350600183019250610ab2565b509695505050505050565b604081526000610af56040830185610a23565b8281036020840152610b078185610a4f565b95945050505050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215610b3957600080fd5b610b428361085c565b9150602083013567ffffffffffffffff80821115610b5f57600080fd5b818501915085601f830112610b7357600080fd5b813581811115610b8557610b85610b10565b604051601f8201601f19908116603f01168101908382118183101715610bad57610bad610b10565b81604052828152886020848701011115610bc657600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6001600160a01b038316815260406020820152600061073a6040830184610a4f565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b038281168282160390808211156104a9576104a9610c0a565b634e487b7160e01b600052603260045260246000fd5b60006001600160a01b03808316818103610c7257610c72610c0a565b6001019392505050565b60008251610c8e8184602087016109ff565b9190910192915050565b6020815260006101d86020830184610a2356fea164736f6c6343000811000a", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/contracts/artifacts/src/mocks/plugin/PluginMock.sol/PluginMockBuild1.dbg.json b/contracts/artifacts/src/mocks/plugin/PluginMock.sol/PluginMockBuild1.dbg.json deleted file mode 100644 index 930fbb1d..00000000 --- a/contracts/artifacts/src/mocks/plugin/PluginMock.sol/PluginMockBuild1.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../build-info/9ac591806bb2e846e5a60f79d635058e.json" -} diff --git a/contracts/artifacts/src/mocks/plugin/PluginMock.sol/PluginMockBuild1.json b/contracts/artifacts/src/mocks/plugin/PluginMock.sol/PluginMockBuild1.json deleted file mode 100644 index dc1476e8..00000000 --- a/contracts/artifacts/src/mocks/plugin/PluginMock.sol/PluginMockBuild1.json +++ /dev/null @@ -1,138 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "PluginMockBuild1", - "sourceName": "src/mocks/plugin/PluginMock.sol", - "abi": [ - { - "inputs": [ - { - "internalType": "contract IDAO", - "name": "_dao", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousTarget", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newTarget", - "type": "address" - } - ], - "name": "TargetSet", - "type": "event" - }, - { - "inputs": [], - "name": "dao", - "outputs": [ - { - "internalType": "contract IDAO", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "pluginType", - "outputs": [ - { - "internalType": "enum IPlugin.PluginType", - "name": "", - "type": "uint8" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [], - "name": "protocolVersion", - "outputs": [ - { - "internalType": "uint8[3]", - "name": "", - "type": "uint8[3]" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_target", - "type": "address" - } - ], - "name": "setTarget", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "state1", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes4", - "name": "_interfaceId", - "type": "bytes4" - } - ], - "name": "supportsInterface", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "target", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - } - ], - "bytecode": "0x60a060405234801561001057600080fd5b5060405161039938038061039983398101604081905261002f91610044565b6001600160a01b031660805260018055610074565b60006020828403121561005657600080fd5b81516001600160a01b038116811461006d57600080fd5b9392505050565b60805161030b61008e600039600060c1015261030b6000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806341de68301161005b57806341de6830146100f95780636accab8c14610108578063776d1a011461011f578063d4b839921461013457600080fd5b806301ffc9a7146100825780632ae9c600146100aa5780634162169f146100bf575b600080fd5b610095610090366004610248565b610147565b60405190151581526020015b60405180910390f35b6100b2610198565b6040516100a19190610279565b7f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020016100a1565b60026040516100a191906102ad565b61011160015481565b6040519081526020016100a1565b61013261012d3660046102d5565b6101c2565b005b6000546100e1906001600160a01b031681565b60006001600160e01b0319821663041de68360e41b148061017757506001600160e01b03198216621574e360e91b145b8061019257506301ffc9a760e01b6001600160e01b03198316145b92915050565b6101a061022a565b5060408051606081018252600181526004602082015260009181019190915290565b600080546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d69190a35050565b60405180606001604052806003906020820280368337509192915050565b60006020828403121561025a57600080fd5b81356001600160e01b03198116811461027257600080fd5b9392505050565b60608101818360005b60038110156102a457815160ff16835260209283019290910190600101610282565b50505092915050565b60208101600383106102cf57634e487b7160e01b600052602160045260246000fd5b91905290565b6000602082840312156102e757600080fd5b81356001600160a01b038116811461027257600080fdfea164736f6c6343000811000a", - "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061007d5760003560e01c806341de68301161005b57806341de6830146100f95780636accab8c14610108578063776d1a011461011f578063d4b839921461013457600080fd5b806301ffc9a7146100825780632ae9c600146100aa5780634162169f146100bf575b600080fd5b610095610090366004610248565b610147565b60405190151581526020015b60405180910390f35b6100b2610198565b6040516100a19190610279565b7f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020016100a1565b60026040516100a191906102ad565b61011160015481565b6040519081526020016100a1565b61013261012d3660046102d5565b6101c2565b005b6000546100e1906001600160a01b031681565b60006001600160e01b0319821663041de68360e41b148061017757506001600160e01b03198216621574e360e91b145b8061019257506301ffc9a760e01b6001600160e01b03198316145b92915050565b6101a061022a565b5060408051606081018252600181526004602082015260009181019190915290565b600080546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d69190a35050565b60405180606001604052806003906020820280368337509192915050565b60006020828403121561025a57600080fd5b81356001600160e01b03198116811461027257600080fd5b9392505050565b60608101818360005b60038110156102a457815160ff16835260209283019290910190600101610282565b50505092915050565b60208101600383106102cf57634e487b7160e01b600052602160045260246000fd5b91905290565b6000602082840312156102e757600080fd5b81356001600160a01b038116811461027257600080fdfea164736f6c6343000811000a", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/contracts/artifacts/src/mocks/plugin/PluginSetupMock.sol/PluginSetupMockBuild1.dbg.json b/contracts/artifacts/src/mocks/plugin/PluginSetupMock.sol/PluginSetupMockBuild1.dbg.json deleted file mode 100644 index 930fbb1d..00000000 --- a/contracts/artifacts/src/mocks/plugin/PluginSetupMock.sol/PluginSetupMockBuild1.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../build-info/9ac591806bb2e846e5a60f79d635058e.json" -} diff --git a/contracts/artifacts/src/mocks/plugin/PluginSetupMock.sol/PluginSetupMockBuild1.json b/contracts/artifacts/src/mocks/plugin/PluginSetupMock.sol/PluginSetupMockBuild1.json deleted file mode 100644 index 431bed27..00000000 --- a/contracts/artifacts/src/mocks/plugin/PluginSetupMock.sol/PluginSetupMockBuild1.json +++ /dev/null @@ -1,297 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "PluginSetupMockBuild1", - "sourceName": "src/mocks/plugin/PluginSetupMock.sol", - "abi": [ - { - "inputs": [], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "inputs": [], - "name": "ConflictingValues", - "type": "error" - }, - { - "inputs": [], - "name": "NonUpgradeablePlugin", - "type": "error" - }, - { - "inputs": [], - "name": "implementation", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_dao", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "prepareInstallation", - "outputs": [ - { - "internalType": "address", - "name": "plugin", - "type": "address" - }, - { - "components": [ - { - "internalType": "address[]", - "name": "helpers", - "type": "address[]" - }, - { - "components": [ - { - "internalType": "enum PermissionLib.Operation", - "name": "operation", - "type": "uint8" - }, - { - "internalType": "address", - "name": "where", - "type": "address" - }, - { - "internalType": "address", - "name": "who", - "type": "address" - }, - { - "internalType": "address", - "name": "condition", - "type": "address" - }, - { - "internalType": "bytes32", - "name": "permissionId", - "type": "bytes32" - } - ], - "internalType": "struct PermissionLib.MultiTargetPermission[]", - "name": "permissions", - "type": "tuple[]" - } - ], - "internalType": "struct IPluginSetup.PreparedSetupData", - "name": "preparedSetupData", - "type": "tuple" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_dao", - "type": "address" - }, - { - "components": [ - { - "internalType": "address", - "name": "plugin", - "type": "address" - }, - { - "internalType": "address[]", - "name": "currentHelpers", - "type": "address[]" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "internalType": "struct IPluginSetup.SetupPayload", - "name": "_payload", - "type": "tuple" - } - ], - "name": "prepareUninstallation", - "outputs": [ - { - "components": [ - { - "internalType": "enum PermissionLib.Operation", - "name": "operation", - "type": "uint8" - }, - { - "internalType": "address", - "name": "where", - "type": "address" - }, - { - "internalType": "address", - "name": "who", - "type": "address" - }, - { - "internalType": "address", - "name": "condition", - "type": "address" - }, - { - "internalType": "bytes32", - "name": "permissionId", - "type": "bytes32" - } - ], - "internalType": "struct PermissionLib.MultiTargetPermission[]", - "name": "permissions", - "type": "tuple[]" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_dao", - "type": "address" - }, - { - "internalType": "uint16", - "name": "_fromBuild", - "type": "uint16" - }, - { - "components": [ - { - "internalType": "address", - "name": "plugin", - "type": "address" - }, - { - "internalType": "address[]", - "name": "currentHelpers", - "type": "address[]" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "internalType": "struct IPluginSetup.SetupPayload", - "name": "_payload", - "type": "tuple" - } - ], - "name": "prepareUpdate", - "outputs": [ - { - "internalType": "bytes", - "name": "", - "type": "bytes" - }, - { - "components": [ - { - "internalType": "address[]", - "name": "helpers", - "type": "address[]" - }, - { - "components": [ - { - "internalType": "enum PermissionLib.Operation", - "name": "operation", - "type": "uint8" - }, - { - "internalType": "address", - "name": "where", - "type": "address" - }, - { - "internalType": "address", - "name": "who", - "type": "address" - }, - { - "internalType": "address", - "name": "condition", - "type": "address" - }, - { - "internalType": "bytes32", - "name": "permissionId", - "type": "bytes32" - } - ], - "internalType": "struct PermissionLib.MultiTargetPermission[]", - "name": "permissions", - "type": "tuple[]" - } - ], - "internalType": "struct IPluginSetup.PreparedSetupData", - "name": "", - "type": "tuple" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [], - "name": "protocolVersion", - "outputs": [ - { - "internalType": "uint8[3]", - "name": "", - "type": "uint8[3]" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes4", - "name": "_interfaceId", - "type": "bytes4" - } - ], - "name": "supportsInterface", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - } - ], - "bytecode": "0x60a060405234801561001057600080fd5b50600060405161001f9061005d565b6001600160a01b039091168152602001604051809103906000f08015801561004b573d6000803e3d6000fd5b506001600160a01b031660805261006a565b61039980610da483390190565b608051610d20610084600039600060c10152610d206000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c80639cb0a124116100505780639cb0a124146100eb578063a8a9c29e1461010b578063f10832f11461012c57600080fd5b806301ffc9a7146100775780632ae9c6001461009f5780635c60da1b146100b4575b600080fd5b61008a610085366004610501565b61014d565b60405190151581526020015b60405180910390f35b6100a761019e565b604051610096919061052b565b6040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152602001610096565b6100fe6100f936600461058d565b6101c8565b6040516100969190610657565b61011e6101193660046106a0565b6101de565b60405161009692919061079a565b61013f61013a366004610815565b610216565b6040516100969291906108d7565b60006001600160e01b0319821663099718b560e41b148061017d57506001600160e01b03198216621574e360e91b145b8061019857506301ffc9a760e01b6001600160e01b03198316145b92915050565b6101a66104d6565b5060408051606081018252600181526004602082015260009181019190915290565b60606101d76000600180610298565b9392505050565b60606101fd604051806040016040528060608152602001606081525090565b60405163a112810160e01b815260040160405180910390fd5b6000610235604051806040016040528060608152602001606081525090565b83604051610242906104f4565b6001600160a01b039091168152602001604051809103906000f08015801561026e573d6000803e3d6000fd5b50915061027b600161041d565b815261028a6000600181610298565b602082015290939092509050565b6060826001600160a01b0316846001600160a01b031611156102cd57604051633a4013cd60e21b815260040160405180910390fd5b6102d78484610917565b6001600160a01b031667ffffffffffffffff8111156102f8576102f86107ff565b60405190808252806020026020018201604052801561035157816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282526000199092019101816103165790505b509050835b836001600160a01b0316816001600160a01b03161015610415576040518060a0016040528084600281111561038d5761038d6105db565b81526001600160a01b038316602082018190526040820152600060608201527fa280eec51ab8e1bc4b6b0c1b7f1bde785761b787a49db404e3e9338ed9b016ef608090910152826103de8784610917565b6001600160a01b0316815181106103f7576103f761093e565b6020026020010181905250808061040d90610954565b915050610356565b509392505050565b6060816001600160a01b031667ffffffffffffffff811115610441576104416107ff565b60405190808252806020026020018201604052801561046a578160200160208202803683370190505b50905060005b826001600160a01b0316816001600160a01b031610156104d0578082826001600160a01b0316815181106104a6576104a661093e565b6001600160a01b0390921660209283029190910190910152806104c881610954565b915050610470565b50919050565b60405180606001604052806003906020820280368337509192915050565b6103998061097b83390190565b60006020828403121561051357600080fd5b81356001600160e01b0319811681146101d757600080fd5b60608101818360005b600381101561055657815160ff16835260209283019290910190600101610534565b50505092915050565b80356001600160a01b038116811461057657600080fd5b919050565b6000606082840312156104d057600080fd5b600080604083850312156105a057600080fd5b6105a98361055f565b9150602083013567ffffffffffffffff8111156105c557600080fd5b6105d18582860161057b565b9150509250929050565b634e487b7160e01b600052602160045260246000fd5b600081516003811061061357634e487b7160e01b600052602160045260246000fd5b8352506020818101516001600160a01b0390811691840191909152604080830151821690840152606080830151909116908301526080908101519082015260a00190565b6020808252825182820181905260009190848201906040850190845b81811015610694576106868385516105f1565b938501939250600101610673565b50909695505050505050565b6000806000606084860312156106b557600080fd5b6106be8461055f565b9250602084013561ffff811681146106d557600080fd5b9150604084013567ffffffffffffffff8111156106f157600080fd5b6106fd8682870161057b565b9150509250925092565b805160408084528151908401819052600091602091908201906060860190845b8181101561074c5783516001600160a01b031683529284019291840191600101610727565b50508483015186820387850152805180835290840192506000918401905b8083101561078f5761077d8285516105f1565b9150848401935060018301925061076a565b509695505050505050565b604081526000835180604084015260005b818110156107c857602081870181015160608684010152016107ab565b50600060608285010152601f19601f8201168301905060608382030160208401526107f66060820185610707565b95945050505050565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561082857600080fd5b6108318361055f565b9150602083013567ffffffffffffffff8082111561084e57600080fd5b818501915085601f83011261086257600080fd5b813581811115610874576108746107ff565b604051601f8201601f19908116603f0116810190838211818310171561089c5761089c6107ff565b816040528281528860208487010111156108b557600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6001600160a01b03831681526040602082015260006108f96040830184610707565b949350505050565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0382811682821603908082111561093757610937610901565b5092915050565b634e487b7160e01b600052603260045260246000fd5b60006001600160a01b0380831681810361097057610970610901565b600101939250505056fe60a060405234801561001057600080fd5b5060405161039938038061039983398101604081905261002f91610044565b6001600160a01b031660805260018055610074565b60006020828403121561005657600080fd5b81516001600160a01b038116811461006d57600080fd5b9392505050565b60805161030b61008e600039600060c1015261030b6000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806341de68301161005b57806341de6830146100f95780636accab8c14610108578063776d1a011461011f578063d4b839921461013457600080fd5b806301ffc9a7146100825780632ae9c600146100aa5780634162169f146100bf575b600080fd5b610095610090366004610248565b610147565b60405190151581526020015b60405180910390f35b6100b2610198565b6040516100a19190610279565b7f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020016100a1565b60026040516100a191906102ad565b61011160015481565b6040519081526020016100a1565b61013261012d3660046102d5565b6101c2565b005b6000546100e1906001600160a01b031681565b60006001600160e01b0319821663041de68360e41b148061017757506001600160e01b03198216621574e360e91b145b8061019257506301ffc9a760e01b6001600160e01b03198316145b92915050565b6101a061022a565b5060408051606081018252600181526004602082015260009181019190915290565b600080546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d69190a35050565b60405180606001604052806003906020820280368337509192915050565b60006020828403121561025a57600080fd5b81356001600160e01b03198116811461027257600080fd5b9392505050565b60608101818360005b60038110156102a457815160ff16835260209283019290910190600101610282565b50505092915050565b60208101600383106102cf57634e487b7160e01b600052602160045260246000fd5b91905290565b6000602082840312156102e757600080fd5b81356001600160a01b038116811461027257600080fdfea164736f6c6343000811000aa164736f6c6343000811000a60a060405234801561001057600080fd5b5060405161039938038061039983398101604081905261002f91610044565b6001600160a01b031660805260018055610074565b60006020828403121561005657600080fd5b81516001600160a01b038116811461006d57600080fd5b9392505050565b60805161030b61008e600039600060c1015261030b6000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806341de68301161005b57806341de6830146100f95780636accab8c14610108578063776d1a011461011f578063d4b839921461013457600080fd5b806301ffc9a7146100825780632ae9c600146100aa5780634162169f146100bf575b600080fd5b610095610090366004610248565b610147565b60405190151581526020015b60405180910390f35b6100b2610198565b6040516100a19190610279565b7f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020016100a1565b60026040516100a191906102ad565b61011160015481565b6040519081526020016100a1565b61013261012d3660046102d5565b6101c2565b005b6000546100e1906001600160a01b031681565b60006001600160e01b0319821663041de68360e41b148061017757506001600160e01b03198216621574e360e91b145b8061019257506301ffc9a760e01b6001600160e01b03198316145b92915050565b6101a061022a565b5060408051606081018252600181526004602082015260009181019190915290565b600080546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d69190a35050565b60405180606001604052806003906020820280368337509192915050565b60006020828403121561025a57600080fd5b81356001600160e01b03198116811461027257600080fd5b9392505050565b60608101818360005b60038110156102a457815160ff16835260209283019290910190600101610282565b50505092915050565b60208101600383106102cf57634e487b7160e01b600052602160045260246000fd5b91905290565b6000602082840312156102e757600080fd5b81356001600160a01b038116811461027257600080fdfea164736f6c6343000811000a", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100725760003560e01c80639cb0a124116100505780639cb0a124146100eb578063a8a9c29e1461010b578063f10832f11461012c57600080fd5b806301ffc9a7146100775780632ae9c6001461009f5780635c60da1b146100b4575b600080fd5b61008a610085366004610501565b61014d565b60405190151581526020015b60405180910390f35b6100a761019e565b604051610096919061052b565b6040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152602001610096565b6100fe6100f936600461058d565b6101c8565b6040516100969190610657565b61011e6101193660046106a0565b6101de565b60405161009692919061079a565b61013f61013a366004610815565b610216565b6040516100969291906108d7565b60006001600160e01b0319821663099718b560e41b148061017d57506001600160e01b03198216621574e360e91b145b8061019857506301ffc9a760e01b6001600160e01b03198316145b92915050565b6101a66104d6565b5060408051606081018252600181526004602082015260009181019190915290565b60606101d76000600180610298565b9392505050565b60606101fd604051806040016040528060608152602001606081525090565b60405163a112810160e01b815260040160405180910390fd5b6000610235604051806040016040528060608152602001606081525090565b83604051610242906104f4565b6001600160a01b039091168152602001604051809103906000f08015801561026e573d6000803e3d6000fd5b50915061027b600161041d565b815261028a6000600181610298565b602082015290939092509050565b6060826001600160a01b0316846001600160a01b031611156102cd57604051633a4013cd60e21b815260040160405180910390fd5b6102d78484610917565b6001600160a01b031667ffffffffffffffff8111156102f8576102f86107ff565b60405190808252806020026020018201604052801561035157816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282526000199092019101816103165790505b509050835b836001600160a01b0316816001600160a01b03161015610415576040518060a0016040528084600281111561038d5761038d6105db565b81526001600160a01b038316602082018190526040820152600060608201527fa280eec51ab8e1bc4b6b0c1b7f1bde785761b787a49db404e3e9338ed9b016ef608090910152826103de8784610917565b6001600160a01b0316815181106103f7576103f761093e565b6020026020010181905250808061040d90610954565b915050610356565b509392505050565b6060816001600160a01b031667ffffffffffffffff811115610441576104416107ff565b60405190808252806020026020018201604052801561046a578160200160208202803683370190505b50905060005b826001600160a01b0316816001600160a01b031610156104d0578082826001600160a01b0316815181106104a6576104a661093e565b6001600160a01b0390921660209283029190910190910152806104c881610954565b915050610470565b50919050565b60405180606001604052806003906020820280368337509192915050565b6103998061097b83390190565b60006020828403121561051357600080fd5b81356001600160e01b0319811681146101d757600080fd5b60608101818360005b600381101561055657815160ff16835260209283019290910190600101610534565b50505092915050565b80356001600160a01b038116811461057657600080fd5b919050565b6000606082840312156104d057600080fd5b600080604083850312156105a057600080fd5b6105a98361055f565b9150602083013567ffffffffffffffff8111156105c557600080fd5b6105d18582860161057b565b9150509250929050565b634e487b7160e01b600052602160045260246000fd5b600081516003811061061357634e487b7160e01b600052602160045260246000fd5b8352506020818101516001600160a01b0390811691840191909152604080830151821690840152606080830151909116908301526080908101519082015260a00190565b6020808252825182820181905260009190848201906040850190845b81811015610694576106868385516105f1565b938501939250600101610673565b50909695505050505050565b6000806000606084860312156106b557600080fd5b6106be8461055f565b9250602084013561ffff811681146106d557600080fd5b9150604084013567ffffffffffffffff8111156106f157600080fd5b6106fd8682870161057b565b9150509250925092565b805160408084528151908401819052600091602091908201906060860190845b8181101561074c5783516001600160a01b031683529284019291840191600101610727565b50508483015186820387850152805180835290840192506000918401905b8083101561078f5761077d8285516105f1565b9150848401935060018301925061076a565b509695505050505050565b604081526000835180604084015260005b818110156107c857602081870181015160608684010152016107ab565b50600060608285010152601f19601f8201168301905060608382030160208401526107f66060820185610707565b95945050505050565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561082857600080fd5b6108318361055f565b9150602083013567ffffffffffffffff8082111561084e57600080fd5b818501915085601f83011261086257600080fd5b813581811115610874576108746107ff565b604051601f8201601f19908116603f0116810190838211818310171561089c5761089c6107ff565b816040528281528860208487010111156108b557600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6001600160a01b03831681526040602082015260006108f96040830184610707565b949350505050565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0382811682821603908082111561093757610937610901565b5092915050565b634e487b7160e01b600052603260045260246000fd5b60006001600160a01b0380831681810361097057610970610901565b600101939250505056fe60a060405234801561001057600080fd5b5060405161039938038061039983398101604081905261002f91610044565b6001600160a01b031660805260018055610074565b60006020828403121561005657600080fd5b81516001600160a01b038116811461006d57600080fd5b9392505050565b60805161030b61008e600039600060c1015261030b6000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806341de68301161005b57806341de6830146100f95780636accab8c14610108578063776d1a011461011f578063d4b839921461013457600080fd5b806301ffc9a7146100825780632ae9c600146100aa5780634162169f146100bf575b600080fd5b610095610090366004610248565b610147565b60405190151581526020015b60405180910390f35b6100b2610198565b6040516100a19190610279565b7f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020016100a1565b60026040516100a191906102ad565b61011160015481565b6040519081526020016100a1565b61013261012d3660046102d5565b6101c2565b005b6000546100e1906001600160a01b031681565b60006001600160e01b0319821663041de68360e41b148061017757506001600160e01b03198216621574e360e91b145b8061019257506301ffc9a760e01b6001600160e01b03198316145b92915050565b6101a061022a565b5060408051606081018252600181526004602082015260009181019190915290565b600080546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d69190a35050565b60405180606001604052806003906020820280368337509192915050565b60006020828403121561025a57600080fd5b81356001600160e01b03198116811461027257600080fd5b9392505050565b60608101818360005b60038110156102a457815160ff16835260209283019290910190600101610282565b50505092915050565b60208101600383106102cf57634e487b7160e01b600052602160045260246000fd5b91905290565b6000602082840312156102e757600080fd5b81356001600160a01b038116811461027257600080fdfea164736f6c6343000811000aa164736f6c6343000811000a", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/contracts/artifacts/src/mocks/plugin/PluginUUPSUpgradeableMock.sol/PluginUUPSUpgradeableMockBad.dbg.json b/contracts/artifacts/src/mocks/plugin/PluginUUPSUpgradeableMock.sol/PluginUUPSUpgradeableMockBad.dbg.json deleted file mode 100644 index 930fbb1d..00000000 --- a/contracts/artifacts/src/mocks/plugin/PluginUUPSUpgradeableMock.sol/PluginUUPSUpgradeableMockBad.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../build-info/9ac591806bb2e846e5a60f79d635058e.json" -} diff --git a/contracts/artifacts/src/mocks/plugin/PluginUUPSUpgradeableMock.sol/PluginUUPSUpgradeableMockBad.json b/contracts/artifacts/src/mocks/plugin/PluginUUPSUpgradeableMock.sol/PluginUUPSUpgradeableMockBad.json deleted file mode 100644 index d363c057..00000000 --- a/contracts/artifacts/src/mocks/plugin/PluginUUPSUpgradeableMock.sol/PluginUUPSUpgradeableMockBad.json +++ /dev/null @@ -1,294 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "PluginUUPSUpgradeableMockBad", - "sourceName": "src/mocks/plugin/PluginUUPSUpgradeableMock.sol", - "abi": [ - { - "inputs": [ - { - "internalType": "address", - "name": "dao", - "type": "address" - }, - { - "internalType": "address", - "name": "where", - "type": "address" - }, - { - "internalType": "address", - "name": "who", - "type": "address" - }, - { - "internalType": "bytes32", - "name": "permissionId", - "type": "bytes32" - } - ], - "name": "DaoUnauthorized", - "type": "error" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "previousAdmin", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "AdminChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "beacon", - "type": "address" - } - ], - "name": "BeaconUpgraded", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint8", - "name": "version", - "type": "uint8" - } - ], - "name": "Initialized", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousTarget", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newTarget", - "type": "address" - } - ], - "name": "TargetSet", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - }, - { - "inputs": [], - "name": "UPGRADE_PLUGIN_PERMISSION_ID", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "dao", - "outputs": [ - { - "internalType": "contract IDAO", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "implementation", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "contract IDAO", - "name": "_dao", - "type": "address" - } - ], - "name": "notAnInitializer", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "pluginType", - "outputs": [ - { - "internalType": "enum IPlugin.PluginType", - "name": "", - "type": "uint8" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [], - "name": "protocolVersion", - "outputs": [ - { - "internalType": "uint8[3]", - "name": "", - "type": "uint8[3]" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [], - "name": "proxiableUUID", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_target", - "type": "address" - } - ], - "name": "setTarget", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "state1", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes4", - "name": "_interfaceId", - "type": "bytes4" - } - ], - "name": "supportsInterface", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "target", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - } - ], - "name": "upgradeTo", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "upgradeToAndCall", - "outputs": [], - "stateMutability": "payable", - "type": "function" - } - ], - "bytecode": "0x60a06040523060805234801561001457600080fd5b5061001d610022565b6100e1565b600054610100900460ff161561008e5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116146100df576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b60805161109b61011860003960008181610334015281816103be015281816104b4015281816105390152610623015261109b6000f3fe6080604052600436106100d25760003560e01c806352d1902d1161007f578063776d1a0111610059578063776d1a01146102005780638883bbd714610220578063c9c4bfca14610240578063d4b839921461027457600080fd5b806352d1902d146101b15780635c60da1b146101d45780636accab8c146101e957600080fd5b80634162169f116100b05780634162169f1461015057806341de6830146101825780634f1ef2861461019e57600080fd5b806301ffc9a7146100d75780632ae9c6001461010c5780633659cfe61461012e575b600080fd5b3480156100e357600080fd5b506100f76100f2366004610dd3565b610294565b60405190151581526020015b60405180910390f35b34801561011857600080fd5b50610121610300565b6040516101039190610dfd565b34801561013a57600080fd5b5061014e610149366004610e46565b61032a565b005b34801561015c57600080fd5b5060c9546001600160a01b03165b6040516001600160a01b039091168152602001610103565b34801561018e57600080fd5b5060006040516101039190610e63565b61014e6101ac366004610ea1565b6104aa565b3480156101bd57600080fd5b506101c6610616565b604051908152602001610103565b3480156101e057600080fd5b5061016a6106db565b3480156101f557600080fd5b506101c661012d5481565b34801561020c57600080fd5b5061014e61021b366004610e46565b610713565b34801561022c57600080fd5b5061014e61023b366004610e46565b610772565b34801561024c57600080fd5b506101c67f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f581565b34801561028057600080fd5b5060fb5461016a906001600160a01b031681565b60006001600160e01b0319821663041de68360e41b14806102c457506001600160e01b03198216621574e360e91b145b806102df57506001600160e01b031982166352d1902d60e01b145b806102fa57506301ffc9a760e01b6001600160e01b03198316145b92915050565b610308610db5565b5060408051606081018252600181526004602082015260009181019190915290565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036103bc5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b60648201526084015b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166104177f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b0316146104825760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b60648201526084016103b3565b61048b81610784565b604080516000808252602082019092526104a7918391906107c1565b50565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036105375760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b60648201526084016103b3565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166105927f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b0316146105fd5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b60648201526084016103b3565b61060682610784565b610612828260016107c1565b5050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106b65760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016103b3565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b600061070e7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b60fb80546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d690600090a35050565b61077b81610966565b50600161012d55565b60c9547f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f590610612906001600160a01b03163033846000366109da565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156107f9576107f483610a96565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610853575060408051601f3d908101601f1916820190925261085091810190610f65565b60015b6108c55760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201527f6f6e206973206e6f74205555505300000000000000000000000000000000000060648201526084016103b3565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc811461095a5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f7860448201527f6961626c6555554944000000000000000000000000000000000000000000000060648201526084016103b3565b506107f4838383610b61565b600054610100900460ff166109d15760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103b3565b6104a781610b8c565b604051637ef7c88360e11b81526001600160a01b0387169063fdef910690610a0e9088908890889088908890600401610f7e565b602060405180830381865afa158015610a2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4f9190610fd2565b610a8e57604051630cb6f8ed60e21b81526001600160a01b038088166004830152808716602483015285166044820152606481018490526084016103b3565b505050505050565b6001600160a01b0381163b610b135760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e74726163740000000000000000000000000000000000000060648201526084016103b3565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610b6a83610c26565b600082511180610b775750805b156107f457610b868383610c66565b50505050565b600054610100900460ff16610bf75760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103b3565b60c9805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610c2f81610a96565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060610c8b838360405180606001604052806027815260200161106860279139610c92565b9392505050565b6060600080856001600160a01b031685604051610caf9190611018565b600060405180830381855af49150503d8060008114610cea576040519150601f19603f3d011682016040523d82523d6000602084013e610cef565b606091505b5091509150610d0086838387610d0a565b9695505050505050565b60608315610d79578251600003610d72576001600160a01b0385163b610d725760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016103b3565b5081610d83565b610d838383610d8b565b949350505050565b815115610d9b5781518083602001fd5b8060405162461bcd60e51b81526004016103b39190611034565b60405180606001604052806003906020820280368337509192915050565b600060208284031215610de557600080fd5b81356001600160e01b031981168114610c8b57600080fd5b60608101818360005b6003811015610e2857815160ff16835260209283019290910190600101610e06565b50505092915050565b6001600160a01b03811681146104a757600080fd5b600060208284031215610e5857600080fd5b8135610c8b81610e31565b6020810160038310610e8557634e487b7160e01b600052602160045260246000fd5b91905290565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215610eb457600080fd5b8235610ebf81610e31565b9150602083013567ffffffffffffffff80821115610edc57600080fd5b818501915085601f830112610ef057600080fd5b813581811115610f0257610f02610e8b565b604051601f8201601f19908116603f01168101908382118183101715610f2a57610f2a610e8b565b81604052828152886020848701011115610f4357600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b600060208284031215610f7757600080fd5b5051919050565b60006001600160a01b03808816835280871660208401525084604083015260806060830152826080830152828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b600060208284031215610fe457600080fd5b81518015158114610c8b57600080fd5b60005b8381101561100f578181015183820152602001610ff7565b50506000910152565b6000825161102a818460208701610ff4565b9190910192915050565b6020815260008251806020840152611053816040850160208701610ff4565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a", - "deployedBytecode": "0x6080604052600436106100d25760003560e01c806352d1902d1161007f578063776d1a0111610059578063776d1a01146102005780638883bbd714610220578063c9c4bfca14610240578063d4b839921461027457600080fd5b806352d1902d146101b15780635c60da1b146101d45780636accab8c146101e957600080fd5b80634162169f116100b05780634162169f1461015057806341de6830146101825780634f1ef2861461019e57600080fd5b806301ffc9a7146100d75780632ae9c6001461010c5780633659cfe61461012e575b600080fd5b3480156100e357600080fd5b506100f76100f2366004610dd3565b610294565b60405190151581526020015b60405180910390f35b34801561011857600080fd5b50610121610300565b6040516101039190610dfd565b34801561013a57600080fd5b5061014e610149366004610e46565b61032a565b005b34801561015c57600080fd5b5060c9546001600160a01b03165b6040516001600160a01b039091168152602001610103565b34801561018e57600080fd5b5060006040516101039190610e63565b61014e6101ac366004610ea1565b6104aa565b3480156101bd57600080fd5b506101c6610616565b604051908152602001610103565b3480156101e057600080fd5b5061016a6106db565b3480156101f557600080fd5b506101c661012d5481565b34801561020c57600080fd5b5061014e61021b366004610e46565b610713565b34801561022c57600080fd5b5061014e61023b366004610e46565b610772565b34801561024c57600080fd5b506101c67f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f581565b34801561028057600080fd5b5060fb5461016a906001600160a01b031681565b60006001600160e01b0319821663041de68360e41b14806102c457506001600160e01b03198216621574e360e91b145b806102df57506001600160e01b031982166352d1902d60e01b145b806102fa57506301ffc9a760e01b6001600160e01b03198316145b92915050565b610308610db5565b5060408051606081018252600181526004602082015260009181019190915290565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036103bc5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b60648201526084015b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166104177f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b0316146104825760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b60648201526084016103b3565b61048b81610784565b604080516000808252602082019092526104a7918391906107c1565b50565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036105375760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b60648201526084016103b3565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166105927f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b0316146105fd5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b60648201526084016103b3565b61060682610784565b610612828260016107c1565b5050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106b65760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016103b3565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b600061070e7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b60fb80546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d690600090a35050565b61077b81610966565b50600161012d55565b60c9547f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f590610612906001600160a01b03163033846000366109da565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156107f9576107f483610a96565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610853575060408051601f3d908101601f1916820190925261085091810190610f65565b60015b6108c55760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201527f6f6e206973206e6f74205555505300000000000000000000000000000000000060648201526084016103b3565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc811461095a5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f7860448201527f6961626c6555554944000000000000000000000000000000000000000000000060648201526084016103b3565b506107f4838383610b61565b600054610100900460ff166109d15760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103b3565b6104a781610b8c565b604051637ef7c88360e11b81526001600160a01b0387169063fdef910690610a0e9088908890889088908890600401610f7e565b602060405180830381865afa158015610a2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4f9190610fd2565b610a8e57604051630cb6f8ed60e21b81526001600160a01b038088166004830152808716602483015285166044820152606481018490526084016103b3565b505050505050565b6001600160a01b0381163b610b135760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e74726163740000000000000000000000000000000000000060648201526084016103b3565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610b6a83610c26565b600082511180610b775750805b156107f457610b868383610c66565b50505050565b600054610100900460ff16610bf75760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103b3565b60c9805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610c2f81610a96565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060610c8b838360405180606001604052806027815260200161106860279139610c92565b9392505050565b6060600080856001600160a01b031685604051610caf9190611018565b600060405180830381855af49150503d8060008114610cea576040519150601f19603f3d011682016040523d82523d6000602084013e610cef565b606091505b5091509150610d0086838387610d0a565b9695505050505050565b60608315610d79578251600003610d72576001600160a01b0385163b610d725760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016103b3565b5081610d83565b610d838383610d8b565b949350505050565b815115610d9b5781518083602001fd5b8060405162461bcd60e51b81526004016103b39190611034565b60405180606001604052806003906020820280368337509192915050565b600060208284031215610de557600080fd5b81356001600160e01b031981168114610c8b57600080fd5b60608101818360005b6003811015610e2857815160ff16835260209283019290910190600101610e06565b50505092915050565b6001600160a01b03811681146104a757600080fd5b600060208284031215610e5857600080fd5b8135610c8b81610e31565b6020810160038310610e8557634e487b7160e01b600052602160045260246000fd5b91905290565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215610eb457600080fd5b8235610ebf81610e31565b9150602083013567ffffffffffffffff80821115610edc57600080fd5b818501915085601f830112610ef057600080fd5b813581811115610f0257610f02610e8b565b604051601f8201601f19908116603f01168101908382118183101715610f2a57610f2a610e8b565b81604052828152886020848701011115610f4357600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b600060208284031215610f7757600080fd5b5051919050565b60006001600160a01b03808816835280871660208401525084604083015260806060830152826080830152828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b600060208284031215610fe457600080fd5b81518015158114610c8b57600080fd5b60005b8381101561100f578181015183820152602001610ff7565b50506000910152565b6000825161102a818460208701610ff4565b9190910192915050565b6020815260008251806020840152611053816040850160208701610ff4565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/contracts/artifacts/src/mocks/plugin/PluginUUPSUpgradeableMock.sol/PluginUUPSUpgradeableMockBuild1.dbg.json b/contracts/artifacts/src/mocks/plugin/PluginUUPSUpgradeableMock.sol/PluginUUPSUpgradeableMockBuild1.dbg.json deleted file mode 100644 index 930fbb1d..00000000 --- a/contracts/artifacts/src/mocks/plugin/PluginUUPSUpgradeableMock.sol/PluginUUPSUpgradeableMockBuild1.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../build-info/9ac591806bb2e846e5a60f79d635058e.json" -} diff --git a/contracts/artifacts/src/mocks/plugin/PluginUUPSUpgradeableMock.sol/PluginUUPSUpgradeableMockBuild1.json b/contracts/artifacts/src/mocks/plugin/PluginUUPSUpgradeableMock.sol/PluginUUPSUpgradeableMockBuild1.json deleted file mode 100644 index 5f127931..00000000 --- a/contracts/artifacts/src/mocks/plugin/PluginUUPSUpgradeableMock.sol/PluginUUPSUpgradeableMockBuild1.json +++ /dev/null @@ -1,294 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "PluginUUPSUpgradeableMockBuild1", - "sourceName": "src/mocks/plugin/PluginUUPSUpgradeableMock.sol", - "abi": [ - { - "inputs": [ - { - "internalType": "address", - "name": "dao", - "type": "address" - }, - { - "internalType": "address", - "name": "where", - "type": "address" - }, - { - "internalType": "address", - "name": "who", - "type": "address" - }, - { - "internalType": "bytes32", - "name": "permissionId", - "type": "bytes32" - } - ], - "name": "DaoUnauthorized", - "type": "error" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "previousAdmin", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "AdminChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "beacon", - "type": "address" - } - ], - "name": "BeaconUpgraded", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint8", - "name": "version", - "type": "uint8" - } - ], - "name": "Initialized", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousTarget", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newTarget", - "type": "address" - } - ], - "name": "TargetSet", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - }, - { - "inputs": [], - "name": "UPGRADE_PLUGIN_PERMISSION_ID", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "dao", - "outputs": [ - { - "internalType": "contract IDAO", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "implementation", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "contract IDAO", - "name": "_dao", - "type": "address" - } - ], - "name": "initialize", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "pluginType", - "outputs": [ - { - "internalType": "enum IPlugin.PluginType", - "name": "", - "type": "uint8" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [], - "name": "protocolVersion", - "outputs": [ - { - "internalType": "uint8[3]", - "name": "", - "type": "uint8[3]" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [], - "name": "proxiableUUID", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_target", - "type": "address" - } - ], - "name": "setTarget", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "state1", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes4", - "name": "_interfaceId", - "type": "bytes4" - } - ], - "name": "supportsInterface", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "target", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - } - ], - "name": "upgradeTo", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "upgradeToAndCall", - "outputs": [], - "stateMutability": "payable", - "type": "function" - } - ], - "bytecode": "0x60a06040523060805234801561001457600080fd5b5061001d610022565b6100e1565b600054610100900460ff161561008e5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116146100df576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6080516111b061011860003960008181610334015281816103be015281816104b401528181610539015261062301526111b06000f3fe6080604052600436106100d25760003560e01c806352d1902d1161007f578063776d1a0111610059578063776d1a0114610200578063c4d66de814610220578063c9c4bfca14610240578063d4b839921461027457600080fd5b806352d1902d146101b15780635c60da1b146101d45780636accab8c146101e957600080fd5b80634162169f116100b05780634162169f1461015057806341de6830146101825780634f1ef2861461019e57600080fd5b806301ffc9a7146100d75780632ae9c6001461010c5780633659cfe61461012e575b600080fd5b3480156100e357600080fd5b506100f76100f2366004610ee8565b610294565b60405190151581526020015b60405180910390f35b34801561011857600080fd5b50610121610300565b6040516101039190610f12565b34801561013a57600080fd5b5061014e610149366004610f5b565b61032a565b005b34801561015c57600080fd5b5060c9546001600160a01b03165b6040516001600160a01b039091168152602001610103565b34801561018e57600080fd5b5060006040516101039190610f78565b61014e6101ac366004610fb6565b6104aa565b3480156101bd57600080fd5b506101c6610616565b604051908152602001610103565b3480156101e057600080fd5b5061016a6106db565b3480156101f557600080fd5b506101c661012d5481565b34801561020c57600080fd5b5061014e61021b366004610f5b565b610713565b34801561022c57600080fd5b5061014e61023b366004610f5b565b610772565b34801561024c57600080fd5b506101c67f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f581565b34801561028057600080fd5b5060fb5461016a906001600160a01b031681565b60006001600160e01b0319821663041de68360e41b14806102c457506001600160e01b03198216621574e360e91b145b806102df57506001600160e01b031982166352d1902d60e01b145b806102fa57506301ffc9a760e01b6001600160e01b03198316145b92915050565b610308610eca565b5060408051606081018252600181526004602082015260009181019190915290565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036103bc5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b60648201526084015b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166104177f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b0316146104825760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b60648201526084016103b3565b61048b81610899565b604080516000808252602082019092526104a7918391906108d6565b50565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036105375760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b60648201526084016103b3565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166105927f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b0316146105fd5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b60648201526084016103b3565b61060682610899565b610612828260016108d6565b5050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106b65760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016103b3565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b600061070e7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b60fb80546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d690600090a35050565b600054610100900460ff16158080156107925750600054600160ff909116105b806107ac5750303b1580156107ac575060005460ff166001145b61081e5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016103b3565b6000805460ff191660011790558015610841576000805461ff0019166101001790555b61084a82610a7b565b600161012d558015610612576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b60c9547f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f590610612906001600160a01b0316303384600036610aef565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561090e5761090983610bab565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610968575060408051601f3d908101601f191682019092526109659181019061107a565b60015b6109da5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201527f6f6e206973206e6f74205555505300000000000000000000000000000000000060648201526084016103b3565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114610a6f5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f7860448201527f6961626c6555554944000000000000000000000000000000000000000000000060648201526084016103b3565b50610909838383610c76565b600054610100900460ff16610ae65760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103b3565b6104a781610ca1565b604051637ef7c88360e11b81526001600160a01b0387169063fdef910690610b239088908890889088908890600401611093565b602060405180830381865afa158015610b40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6491906110e7565b610ba357604051630cb6f8ed60e21b81526001600160a01b038088166004830152808716602483015285166044820152606481018490526084016103b3565b505050505050565b6001600160a01b0381163b610c285760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e74726163740000000000000000000000000000000000000060648201526084016103b3565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610c7f83610d3b565b600082511180610c8c5750805b1561090957610c9b8383610d7b565b50505050565b600054610100900460ff16610d0c5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103b3565b60c9805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610d4481610bab565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060610da0838360405180606001604052806027815260200161117d60279139610da7565b9392505050565b6060600080856001600160a01b031685604051610dc4919061112d565b600060405180830381855af49150503d8060008114610dff576040519150601f19603f3d011682016040523d82523d6000602084013e610e04565b606091505b5091509150610e1586838387610e1f565b9695505050505050565b60608315610e8e578251600003610e87576001600160a01b0385163b610e875760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016103b3565b5081610e98565b610e988383610ea0565b949350505050565b815115610eb05781518083602001fd5b8060405162461bcd60e51b81526004016103b39190611149565b60405180606001604052806003906020820280368337509192915050565b600060208284031215610efa57600080fd5b81356001600160e01b031981168114610da057600080fd5b60608101818360005b6003811015610f3d57815160ff16835260209283019290910190600101610f1b565b50505092915050565b6001600160a01b03811681146104a757600080fd5b600060208284031215610f6d57600080fd5b8135610da081610f46565b6020810160038310610f9a57634e487b7160e01b600052602160045260246000fd5b91905290565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215610fc957600080fd5b8235610fd481610f46565b9150602083013567ffffffffffffffff80821115610ff157600080fd5b818501915085601f83011261100557600080fd5b81358181111561101757611017610fa0565b604051601f8201601f19908116603f0116810190838211818310171561103f5761103f610fa0565b8160405282815288602084870101111561105857600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60006020828403121561108c57600080fd5b5051919050565b60006001600160a01b03808816835280871660208401525084604083015260806060830152826080830152828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b6000602082840312156110f957600080fd5b81518015158114610da057600080fd5b60005b8381101561112457818101518382015260200161110c565b50506000910152565b6000825161113f818460208701611109565b9190910192915050565b6020815260008251806020840152611168816040850160208701611109565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a", - "deployedBytecode": "0x6080604052600436106100d25760003560e01c806352d1902d1161007f578063776d1a0111610059578063776d1a0114610200578063c4d66de814610220578063c9c4bfca14610240578063d4b839921461027457600080fd5b806352d1902d146101b15780635c60da1b146101d45780636accab8c146101e957600080fd5b80634162169f116100b05780634162169f1461015057806341de6830146101825780634f1ef2861461019e57600080fd5b806301ffc9a7146100d75780632ae9c6001461010c5780633659cfe61461012e575b600080fd5b3480156100e357600080fd5b506100f76100f2366004610ee8565b610294565b60405190151581526020015b60405180910390f35b34801561011857600080fd5b50610121610300565b6040516101039190610f12565b34801561013a57600080fd5b5061014e610149366004610f5b565b61032a565b005b34801561015c57600080fd5b5060c9546001600160a01b03165b6040516001600160a01b039091168152602001610103565b34801561018e57600080fd5b5060006040516101039190610f78565b61014e6101ac366004610fb6565b6104aa565b3480156101bd57600080fd5b506101c6610616565b604051908152602001610103565b3480156101e057600080fd5b5061016a6106db565b3480156101f557600080fd5b506101c661012d5481565b34801561020c57600080fd5b5061014e61021b366004610f5b565b610713565b34801561022c57600080fd5b5061014e61023b366004610f5b565b610772565b34801561024c57600080fd5b506101c67f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f581565b34801561028057600080fd5b5060fb5461016a906001600160a01b031681565b60006001600160e01b0319821663041de68360e41b14806102c457506001600160e01b03198216621574e360e91b145b806102df57506001600160e01b031982166352d1902d60e01b145b806102fa57506301ffc9a760e01b6001600160e01b03198316145b92915050565b610308610eca565b5060408051606081018252600181526004602082015260009181019190915290565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036103bc5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b60648201526084015b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166104177f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b0316146104825760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b60648201526084016103b3565b61048b81610899565b604080516000808252602082019092526104a7918391906108d6565b50565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036105375760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b60648201526084016103b3565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166105927f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b0316146105fd5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b60648201526084016103b3565b61060682610899565b610612828260016108d6565b5050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106b65760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016103b3565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b600061070e7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b60fb80546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d690600090a35050565b600054610100900460ff16158080156107925750600054600160ff909116105b806107ac5750303b1580156107ac575060005460ff166001145b61081e5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016103b3565b6000805460ff191660011790558015610841576000805461ff0019166101001790555b61084a82610a7b565b600161012d558015610612576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b60c9547f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f590610612906001600160a01b0316303384600036610aef565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561090e5761090983610bab565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610968575060408051601f3d908101601f191682019092526109659181019061107a565b60015b6109da5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201527f6f6e206973206e6f74205555505300000000000000000000000000000000000060648201526084016103b3565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114610a6f5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f7860448201527f6961626c6555554944000000000000000000000000000000000000000000000060648201526084016103b3565b50610909838383610c76565b600054610100900460ff16610ae65760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103b3565b6104a781610ca1565b604051637ef7c88360e11b81526001600160a01b0387169063fdef910690610b239088908890889088908890600401611093565b602060405180830381865afa158015610b40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6491906110e7565b610ba357604051630cb6f8ed60e21b81526001600160a01b038088166004830152808716602483015285166044820152606481018490526084016103b3565b505050505050565b6001600160a01b0381163b610c285760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e74726163740000000000000000000000000000000000000060648201526084016103b3565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610c7f83610d3b565b600082511180610c8c5750805b1561090957610c9b8383610d7b565b50505050565b600054610100900460ff16610d0c5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103b3565b60c9805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610d4481610bab565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060610da0838360405180606001604052806027815260200161117d60279139610da7565b9392505050565b6060600080856001600160a01b031685604051610dc4919061112d565b600060405180830381855af49150503d8060008114610dff576040519150601f19603f3d011682016040523d82523d6000602084013e610e04565b606091505b5091509150610e1586838387610e1f565b9695505050505050565b60608315610e8e578251600003610e87576001600160a01b0385163b610e875760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016103b3565b5081610e98565b610e988383610ea0565b949350505050565b815115610eb05781518083602001fd5b8060405162461bcd60e51b81526004016103b39190611149565b60405180606001604052806003906020820280368337509192915050565b600060208284031215610efa57600080fd5b81356001600160e01b031981168114610da057600080fd5b60608101818360005b6003811015610f3d57815160ff16835260209283019290910190600101610f1b565b50505092915050565b6001600160a01b03811681146104a757600080fd5b600060208284031215610f6d57600080fd5b8135610da081610f46565b6020810160038310610f9a57634e487b7160e01b600052602160045260246000fd5b91905290565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215610fc957600080fd5b8235610fd481610f46565b9150602083013567ffffffffffffffff80821115610ff157600080fd5b818501915085601f83011261100557600080fd5b81358181111561101757611017610fa0565b604051601f8201601f19908116603f0116810190838211818310171561103f5761103f610fa0565b8160405282815288602084870101111561105857600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60006020828403121561108c57600080fd5b5051919050565b60006001600160a01b03808816835280871660208401525084604083015260806060830152826080830152828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b6000602082840312156110f957600080fd5b81518015158114610da057600080fd5b60005b8381101561112457818101518382015260200161110c565b50506000910152565b6000825161113f818460208701611109565b9190910192915050565b6020815260008251806020840152611168816040850160208701611109565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/contracts/artifacts/src/mocks/plugin/PluginUUPSUpgradeableMock.sol/PluginUUPSUpgradeableMockBuild2.dbg.json b/contracts/artifacts/src/mocks/plugin/PluginUUPSUpgradeableMock.sol/PluginUUPSUpgradeableMockBuild2.dbg.json deleted file mode 100644 index 930fbb1d..00000000 --- a/contracts/artifacts/src/mocks/plugin/PluginUUPSUpgradeableMock.sol/PluginUUPSUpgradeableMockBuild2.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../build-info/9ac591806bb2e846e5a60f79d635058e.json" -} diff --git a/contracts/artifacts/src/mocks/plugin/PluginUUPSUpgradeableMock.sol/PluginUUPSUpgradeableMockBuild2.json b/contracts/artifacts/src/mocks/plugin/PluginUUPSUpgradeableMock.sol/PluginUUPSUpgradeableMockBuild2.json deleted file mode 100644 index c384af7a..00000000 --- a/contracts/artifacts/src/mocks/plugin/PluginUUPSUpgradeableMock.sol/PluginUUPSUpgradeableMockBuild2.json +++ /dev/null @@ -1,320 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "PluginUUPSUpgradeableMockBuild2", - "sourceName": "src/mocks/plugin/PluginUUPSUpgradeableMock.sol", - "abi": [ - { - "inputs": [ - { - "internalType": "address", - "name": "dao", - "type": "address" - }, - { - "internalType": "address", - "name": "where", - "type": "address" - }, - { - "internalType": "address", - "name": "who", - "type": "address" - }, - { - "internalType": "bytes32", - "name": "permissionId", - "type": "bytes32" - } - ], - "name": "DaoUnauthorized", - "type": "error" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "previousAdmin", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "AdminChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "beacon", - "type": "address" - } - ], - "name": "BeaconUpgraded", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint8", - "name": "version", - "type": "uint8" - } - ], - "name": "Initialized", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousTarget", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newTarget", - "type": "address" - } - ], - "name": "TargetSet", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - }, - { - "inputs": [], - "name": "UPGRADE_PLUGIN_PERMISSION_ID", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "dao", - "outputs": [ - { - "internalType": "contract IDAO", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "implementation", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "contract IDAO", - "name": "_dao", - "type": "address" - } - ], - "name": "initialize", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint16", - "name": "_previousBuild", - "type": "uint16" - } - ], - "name": "initializeFrom", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "pluginType", - "outputs": [ - { - "internalType": "enum IPlugin.PluginType", - "name": "", - "type": "uint8" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [], - "name": "protocolVersion", - "outputs": [ - { - "internalType": "uint8[3]", - "name": "", - "type": "uint8[3]" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [], - "name": "proxiableUUID", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_target", - "type": "address" - } - ], - "name": "setTarget", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "state1", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "state2", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes4", - "name": "_interfaceId", - "type": "bytes4" - } - ], - "name": "supportsInterface", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "target", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - } - ], - "name": "upgradeTo", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "upgradeToAndCall", - "outputs": [], - "stateMutability": "payable", - "type": "function" - } - ], - "bytecode": "0x60a06040523060805234801561001457600080fd5b5061001d610022565b6100e1565b600054610100900460ff161561008e5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116146100df576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6080516112d961011860003960008181610479015281816104fe015281816105f401528181610679015261076301526112d96000f3fe6080604052600436106100e85760003560e01c806352d1902d1161008a578063c4d66de811610059578063c4d66de814610256578063c9c4bfca14610276578063d4b83992146102aa578063efe51cca146102ca57600080fd5b806352d1902d146101e75780635c60da1b1461020a5780636accab8c1461021f578063776d1a011461023657600080fd5b80633659cfe6116100c65780633659cfe6146101665780634162169f1461018657806341de6830146101b85780634f1ef286146101d457600080fd5b806301ffc9a7146100ed578063039a8c50146101225780632ae9c60014610144575b600080fd5b3480156100f957600080fd5b5061010d610108366004610fed565b6102e1565b60405190151581526020015b60405180910390f35b34801561012e57600080fd5b5061014261013d366004611017565b61034d565b005b34801561015057600080fd5b50610159610445565b604051610119919061103b565b34801561017257600080fd5b50610142610181366004611084565b61046f565b34801561019257600080fd5b5060c9546001600160a01b03165b6040516001600160a01b039091168152602001610119565b3480156101c457600080fd5b50600060405161011991906110a1565b6101426101e23660046110df565b6105ea565b3480156101f357600080fd5b506101fc610756565b604051908152602001610119565b34801561021657600080fd5b506101a061081b565b34801561022b57600080fd5b506101fc61012d5481565b34801561024257600080fd5b50610142610251366004611084565b610853565b34801561026257600080fd5b50610142610271366004611084565b6108b2565b34801561028257600080fd5b506101fc7f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f581565b3480156102b657600080fd5b5060fb546101a0906001600160a01b031681565b3480156102d657600080fd5b506101fc61012e5481565b60006001600160e01b0319821663041de68360e41b148061031157506001600160e01b03198216621574e360e91b145b8061032c57506001600160e01b031982166352d1902d60e01b145b8061034757506301ffc9a760e01b6001600160e01b03198316145b92915050565b600054600290610100900460ff1615801561036f575060005460ff8083169116105b6103d75760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805461ffff191660ff831617610100179055600261ffff831610156103ff57600261012e555b6000805461ff001916905560405160ff821681527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b61044d610fcf565b5060408051606081018252600181526004602082015260009181019190915290565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036104fc5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b60648201526084016103ce565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166105577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b0316146105c25760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b60648201526084016103ce565b6105cb8161099e565b604080516000808252602082019092526105e7918391906109db565b50565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036106775760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b60648201526084016103ce565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166106d27f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b03161461073d5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b60648201526084016103ce565b6107468261099e565b610752828260016109db565b5050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146107f65760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016103ce565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b600061084e7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b60fb80546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d690600090a35050565b600054600290610100900460ff161580156108d4575060005460ff8083169116105b6109375760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016103ce565b6000805461ffff191660ff83161761010017905561095482610b80565b600161012d55600261012e556000805461ff001916905560405160ff821681527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602001610439565b60c9547f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f590610752906001600160a01b0316303384600036610bf4565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610a1357610a0e83610cb0565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610a6d575060408051601f3d908101601f19168201909252610a6a918101906111a3565b60015b610adf5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201527f6f6e206973206e6f74205555505300000000000000000000000000000000000060648201526084016103ce565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114610b745760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f7860448201527f6961626c6555554944000000000000000000000000000000000000000000000060648201526084016103ce565b50610a0e838383610d7b565b600054610100900460ff16610beb5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103ce565b6105e781610da6565b604051637ef7c88360e11b81526001600160a01b0387169063fdef910690610c2890889088908890889088906004016111bc565b602060405180830381865afa158015610c45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c699190611210565b610ca857604051630cb6f8ed60e21b81526001600160a01b038088166004830152808716602483015285166044820152606481018490526084016103ce565b505050505050565b6001600160a01b0381163b610d2d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e74726163740000000000000000000000000000000000000060648201526084016103ce565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610d8483610e40565b600082511180610d915750805b15610a0e57610da08383610e80565b50505050565b600054610100900460ff16610e115760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103ce565b60c9805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610e4981610cb0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060610ea583836040518060600160405280602781526020016112a660279139610eac565b9392505050565b6060600080856001600160a01b031685604051610ec99190611256565b600060405180830381855af49150503d8060008114610f04576040519150601f19603f3d011682016040523d82523d6000602084013e610f09565b606091505b5091509150610f1a86838387610f24565b9695505050505050565b60608315610f93578251600003610f8c576001600160a01b0385163b610f8c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016103ce565b5081610f9d565b610f9d8383610fa5565b949350505050565b815115610fb55781518083602001fd5b8060405162461bcd60e51b81526004016103ce9190611272565b60405180606001604052806003906020820280368337509192915050565b600060208284031215610fff57600080fd5b81356001600160e01b031981168114610ea557600080fd5b60006020828403121561102957600080fd5b813561ffff81168114610ea557600080fd5b60608101818360005b600381101561106657815160ff16835260209283019290910190600101611044565b50505092915050565b6001600160a01b03811681146105e757600080fd5b60006020828403121561109657600080fd5b8135610ea58161106f565b60208101600383106110c357634e487b7160e01b600052602160045260246000fd5b91905290565b634e487b7160e01b600052604160045260246000fd5b600080604083850312156110f257600080fd5b82356110fd8161106f565b9150602083013567ffffffffffffffff8082111561111a57600080fd5b818501915085601f83011261112e57600080fd5b813581811115611140576111406110c9565b604051601f8201601f19908116603f01168101908382118183101715611168576111686110c9565b8160405282815288602084870101111561118157600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6000602082840312156111b557600080fd5b5051919050565b60006001600160a01b03808816835280871660208401525084604083015260806060830152826080830152828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b60006020828403121561122257600080fd5b81518015158114610ea557600080fd5b60005b8381101561124d578181015183820152602001611235565b50506000910152565b60008251611268818460208701611232565b9190910192915050565b6020815260008251806020840152611291816040850160208701611232565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a", - "deployedBytecode": "0x6080604052600436106100e85760003560e01c806352d1902d1161008a578063c4d66de811610059578063c4d66de814610256578063c9c4bfca14610276578063d4b83992146102aa578063efe51cca146102ca57600080fd5b806352d1902d146101e75780635c60da1b1461020a5780636accab8c1461021f578063776d1a011461023657600080fd5b80633659cfe6116100c65780633659cfe6146101665780634162169f1461018657806341de6830146101b85780634f1ef286146101d457600080fd5b806301ffc9a7146100ed578063039a8c50146101225780632ae9c60014610144575b600080fd5b3480156100f957600080fd5b5061010d610108366004610fed565b6102e1565b60405190151581526020015b60405180910390f35b34801561012e57600080fd5b5061014261013d366004611017565b61034d565b005b34801561015057600080fd5b50610159610445565b604051610119919061103b565b34801561017257600080fd5b50610142610181366004611084565b61046f565b34801561019257600080fd5b5060c9546001600160a01b03165b6040516001600160a01b039091168152602001610119565b3480156101c457600080fd5b50600060405161011991906110a1565b6101426101e23660046110df565b6105ea565b3480156101f357600080fd5b506101fc610756565b604051908152602001610119565b34801561021657600080fd5b506101a061081b565b34801561022b57600080fd5b506101fc61012d5481565b34801561024257600080fd5b50610142610251366004611084565b610853565b34801561026257600080fd5b50610142610271366004611084565b6108b2565b34801561028257600080fd5b506101fc7f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f581565b3480156102b657600080fd5b5060fb546101a0906001600160a01b031681565b3480156102d657600080fd5b506101fc61012e5481565b60006001600160e01b0319821663041de68360e41b148061031157506001600160e01b03198216621574e360e91b145b8061032c57506001600160e01b031982166352d1902d60e01b145b8061034757506301ffc9a760e01b6001600160e01b03198316145b92915050565b600054600290610100900460ff1615801561036f575060005460ff8083169116105b6103d75760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805461ffff191660ff831617610100179055600261ffff831610156103ff57600261012e555b6000805461ff001916905560405160ff821681527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b61044d610fcf565b5060408051606081018252600181526004602082015260009181019190915290565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036104fc5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b60648201526084016103ce565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166105577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b0316146105c25760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b60648201526084016103ce565b6105cb8161099e565b604080516000808252602082019092526105e7918391906109db565b50565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036106775760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b60648201526084016103ce565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166106d27f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b03161461073d5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b60648201526084016103ce565b6107468261099e565b610752828260016109db565b5050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146107f65760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016103ce565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b600061084e7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b60fb80546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d690600090a35050565b600054600290610100900460ff161580156108d4575060005460ff8083169116105b6109375760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016103ce565b6000805461ffff191660ff83161761010017905561095482610b80565b600161012d55600261012e556000805461ff001916905560405160ff821681527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602001610439565b60c9547f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f590610752906001600160a01b0316303384600036610bf4565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610a1357610a0e83610cb0565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610a6d575060408051601f3d908101601f19168201909252610a6a918101906111a3565b60015b610adf5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201527f6f6e206973206e6f74205555505300000000000000000000000000000000000060648201526084016103ce565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114610b745760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f7860448201527f6961626c6555554944000000000000000000000000000000000000000000000060648201526084016103ce565b50610a0e838383610d7b565b600054610100900460ff16610beb5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103ce565b6105e781610da6565b604051637ef7c88360e11b81526001600160a01b0387169063fdef910690610c2890889088908890889088906004016111bc565b602060405180830381865afa158015610c45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c699190611210565b610ca857604051630cb6f8ed60e21b81526001600160a01b038088166004830152808716602483015285166044820152606481018490526084016103ce565b505050505050565b6001600160a01b0381163b610d2d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e74726163740000000000000000000000000000000000000060648201526084016103ce565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610d8483610e40565b600082511180610d915750805b15610a0e57610da08383610e80565b50505050565b600054610100900460ff16610e115760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103ce565b60c9805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610e4981610cb0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060610ea583836040518060600160405280602781526020016112a660279139610eac565b9392505050565b6060600080856001600160a01b031685604051610ec99190611256565b600060405180830381855af49150503d8060008114610f04576040519150601f19603f3d011682016040523d82523d6000602084013e610f09565b606091505b5091509150610f1a86838387610f24565b9695505050505050565b60608315610f93578251600003610f8c576001600160a01b0385163b610f8c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016103ce565b5081610f9d565b610f9d8383610fa5565b949350505050565b815115610fb55781518083602001fd5b8060405162461bcd60e51b81526004016103ce9190611272565b60405180606001604052806003906020820280368337509192915050565b600060208284031215610fff57600080fd5b81356001600160e01b031981168114610ea557600080fd5b60006020828403121561102957600080fd5b813561ffff81168114610ea557600080fd5b60608101818360005b600381101561106657815160ff16835260209283019290910190600101611044565b50505092915050565b6001600160a01b03811681146105e757600080fd5b60006020828403121561109657600080fd5b8135610ea58161106f565b60208101600383106110c357634e487b7160e01b600052602160045260246000fd5b91905290565b634e487b7160e01b600052604160045260246000fd5b600080604083850312156110f257600080fd5b82356110fd8161106f565b9150602083013567ffffffffffffffff8082111561111a57600080fd5b818501915085601f83011261112e57600080fd5b813581811115611140576111406110c9565b604051601f8201601f19908116603f01168101908382118183101715611168576111686110c9565b8160405282815288602084870101111561118157600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6000602082840312156111b557600080fd5b5051919050565b60006001600160a01b03808816835280871660208401525084604083015260806060830152826080830152828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b60006020828403121561122257600080fd5b81518015158114610ea557600080fd5b60005b8381101561124d578181015183820152602001611235565b50506000910152565b60008251611268818460208701611232565b9190910192915050565b6020815260008251806020840152611291816040850160208701611232565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/contracts/artifacts/src/mocks/plugin/PluginUUPSUpgradeableMock.sol/PluginUUPSUpgradeableMockBuild3.dbg.json b/contracts/artifacts/src/mocks/plugin/PluginUUPSUpgradeableMock.sol/PluginUUPSUpgradeableMockBuild3.dbg.json deleted file mode 100644 index 930fbb1d..00000000 --- a/contracts/artifacts/src/mocks/plugin/PluginUUPSUpgradeableMock.sol/PluginUUPSUpgradeableMockBuild3.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../build-info/9ac591806bb2e846e5a60f79d635058e.json" -} diff --git a/contracts/artifacts/src/mocks/plugin/PluginUUPSUpgradeableMock.sol/PluginUUPSUpgradeableMockBuild3.json b/contracts/artifacts/src/mocks/plugin/PluginUUPSUpgradeableMock.sol/PluginUUPSUpgradeableMockBuild3.json deleted file mode 100644 index 8c9e4b0b..00000000 --- a/contracts/artifacts/src/mocks/plugin/PluginUUPSUpgradeableMock.sol/PluginUUPSUpgradeableMockBuild3.json +++ /dev/null @@ -1,333 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "PluginUUPSUpgradeableMockBuild3", - "sourceName": "src/mocks/plugin/PluginUUPSUpgradeableMock.sol", - "abi": [ - { - "inputs": [ - { - "internalType": "address", - "name": "dao", - "type": "address" - }, - { - "internalType": "address", - "name": "where", - "type": "address" - }, - { - "internalType": "address", - "name": "who", - "type": "address" - }, - { - "internalType": "bytes32", - "name": "permissionId", - "type": "bytes32" - } - ], - "name": "DaoUnauthorized", - "type": "error" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "previousAdmin", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "AdminChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "beacon", - "type": "address" - } - ], - "name": "BeaconUpgraded", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint8", - "name": "version", - "type": "uint8" - } - ], - "name": "Initialized", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousTarget", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newTarget", - "type": "address" - } - ], - "name": "TargetSet", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - }, - { - "inputs": [], - "name": "UPGRADE_PLUGIN_PERMISSION_ID", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "dao", - "outputs": [ - { - "internalType": "contract IDAO", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "implementation", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "contract IDAO", - "name": "_dao", - "type": "address" - } - ], - "name": "initialize", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint16", - "name": "_previousBuild", - "type": "uint16" - } - ], - "name": "initializeFrom", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "pluginType", - "outputs": [ - { - "internalType": "enum IPlugin.PluginType", - "name": "", - "type": "uint8" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [], - "name": "protocolVersion", - "outputs": [ - { - "internalType": "uint8[3]", - "name": "", - "type": "uint8[3]" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [], - "name": "proxiableUUID", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_target", - "type": "address" - } - ], - "name": "setTarget", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "state1", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "state2", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "state3", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes4", - "name": "_interfaceId", - "type": "bytes4" - } - ], - "name": "supportsInterface", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "target", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - } - ], - "name": "upgradeTo", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "upgradeToAndCall", - "outputs": [], - "stateMutability": "payable", - "type": "function" - } - ], - "bytecode": "0x60a06040523060805234801561001457600080fd5b5061001d610022565b6100e1565b600054610100900460ff161561008e5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116146100df576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b608051611315610118600039600081816104af015281816105340152818161062a015281816106af015261079901526113156000f3fe6080604052600436106100f35760003560e01c806352d1902d1161008a578063c4d66de811610059578063c4d66de814610278578063c9c4bfca14610298578063d4b83992146102cc578063efe51cca146102ec57600080fd5b806352d1902d146102175780635c60da1b1461022c5780636accab8c14610241578063776d1a011461025857600080fd5b80633659cfe6116100c65780633659cfe6146101965780634162169f146101b657806341de6830146101e85780634f1ef2861461020457600080fd5b806301ffc9a7146100f8578063039a8c501461012d5780632491118d1461014f5780632ae9c60014610174575b600080fd5b34801561010457600080fd5b50610118610113366004611029565b610303565b60405190151581526020015b60405180910390f35b34801561013957600080fd5b5061014d610148366004611053565b61036f565b005b34801561015b57600080fd5b5061016661012f5481565b604051908152602001610124565b34801561018057600080fd5b5061018961047b565b6040516101249190611077565b3480156101a257600080fd5b5061014d6101b13660046110c0565b6104a5565b3480156101c257600080fd5b5060c9546001600160a01b03165b6040516001600160a01b039091168152602001610124565b3480156101f457600080fd5b50600060405161012491906110dd565b61014d61021236600461111b565b610620565b34801561022357600080fd5b5061016661078c565b34801561023857600080fd5b506101d0610851565b34801561024d57600080fd5b5061016661012d5481565b34801561026457600080fd5b5061014d6102733660046110c0565b610889565b34801561028457600080fd5b5061014d6102933660046110c0565b6108e8565b3480156102a457600080fd5b506101667f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f581565b3480156102d857600080fd5b5060fb546101d0906001600160a01b031681565b3480156102f857600080fd5b5061016661012e5481565b60006001600160e01b0319821663041de68360e41b148061033357506001600160e01b03198216621574e360e91b145b8061034e57506001600160e01b031982166352d1902d60e01b145b8061036957506301ffc9a760e01b6001600160e01b03198316145b92915050565b600054600390610100900460ff16158015610391575060005460ff8083169116105b6103f95760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805461ffff191660ff831617610100179055600261ffff8316101561042157600261012e555b60038261ffff16101561043557600361012f555b6000805461ff001916905560405160ff821681527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b61048361100b565b5060408051606081018252600181526004602082015260009181019190915290565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036105325760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b60648201526084016103f0565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661058d7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b0316146105f85760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b60648201526084016103f0565b610601816109da565b6040805160008082526020820190925261061d91839190610a17565b50565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036106ad5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b60648201526084016103f0565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166107087f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b0316146107735760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b60648201526084016103f0565b61077c826109da565b61078882826001610a17565b5050565b6000306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461082c5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016103f0565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b60006108847f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b60fb80546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d690600090a35050565b600054600390610100900460ff1615801561090a575060005460ff8083169116105b61096d5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016103f0565b6000805461ffff191660ff83161761010017905561098a82610bbc565b600161012d55600261012e55600361012f556000805461ff001916905560405160ff821681527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200161046f565b60c9547f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f590610788906001600160a01b0316303384600036610c30565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610a4f57610a4a83610cec565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610aa9575060408051601f3d908101601f19168201909252610aa6918101906111df565b60015b610b1b5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201527f6f6e206973206e6f74205555505300000000000000000000000000000000000060648201526084016103f0565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114610bb05760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f7860448201527f6961626c6555554944000000000000000000000000000000000000000000000060648201526084016103f0565b50610a4a838383610db7565b600054610100900460ff16610c275760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103f0565b61061d81610de2565b604051637ef7c88360e11b81526001600160a01b0387169063fdef910690610c6490889088908890889088906004016111f8565b602060405180830381865afa158015610c81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca5919061124c565b610ce457604051630cb6f8ed60e21b81526001600160a01b038088166004830152808716602483015285166044820152606481018490526084016103f0565b505050505050565b6001600160a01b0381163b610d695760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e74726163740000000000000000000000000000000000000060648201526084016103f0565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610dc083610e7c565b600082511180610dcd5750805b15610a4a57610ddc8383610ebc565b50505050565b600054610100900460ff16610e4d5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103f0565b60c9805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610e8581610cec565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060610ee183836040518060600160405280602781526020016112e260279139610ee8565b9392505050565b6060600080856001600160a01b031685604051610f059190611292565b600060405180830381855af49150503d8060008114610f40576040519150601f19603f3d011682016040523d82523d6000602084013e610f45565b606091505b5091509150610f5686838387610f60565b9695505050505050565b60608315610fcf578251600003610fc8576001600160a01b0385163b610fc85760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016103f0565b5081610fd9565b610fd98383610fe1565b949350505050565b815115610ff15781518083602001fd5b8060405162461bcd60e51b81526004016103f091906112ae565b60405180606001604052806003906020820280368337509192915050565b60006020828403121561103b57600080fd5b81356001600160e01b031981168114610ee157600080fd5b60006020828403121561106557600080fd5b813561ffff81168114610ee157600080fd5b60608101818360005b60038110156110a257815160ff16835260209283019290910190600101611080565b50505092915050565b6001600160a01b038116811461061d57600080fd5b6000602082840312156110d257600080fd5b8135610ee1816110ab565b60208101600383106110ff57634e487b7160e01b600052602160045260246000fd5b91905290565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561112e57600080fd5b8235611139816110ab565b9150602083013567ffffffffffffffff8082111561115657600080fd5b818501915085601f83011261116a57600080fd5b81358181111561117c5761117c611105565b604051601f8201601f19908116603f011681019083821181831017156111a4576111a4611105565b816040528281528860208487010111156111bd57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6000602082840312156111f157600080fd5b5051919050565b60006001600160a01b03808816835280871660208401525084604083015260806060830152826080830152828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b60006020828403121561125e57600080fd5b81518015158114610ee157600080fd5b60005b83811015611289578181015183820152602001611271565b50506000910152565b600082516112a481846020870161126e565b9190910192915050565b60208152600082518060208401526112cd81604085016020870161126e565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a", - "deployedBytecode": "0x6080604052600436106100f35760003560e01c806352d1902d1161008a578063c4d66de811610059578063c4d66de814610278578063c9c4bfca14610298578063d4b83992146102cc578063efe51cca146102ec57600080fd5b806352d1902d146102175780635c60da1b1461022c5780636accab8c14610241578063776d1a011461025857600080fd5b80633659cfe6116100c65780633659cfe6146101965780634162169f146101b657806341de6830146101e85780634f1ef2861461020457600080fd5b806301ffc9a7146100f8578063039a8c501461012d5780632491118d1461014f5780632ae9c60014610174575b600080fd5b34801561010457600080fd5b50610118610113366004611029565b610303565b60405190151581526020015b60405180910390f35b34801561013957600080fd5b5061014d610148366004611053565b61036f565b005b34801561015b57600080fd5b5061016661012f5481565b604051908152602001610124565b34801561018057600080fd5b5061018961047b565b6040516101249190611077565b3480156101a257600080fd5b5061014d6101b13660046110c0565b6104a5565b3480156101c257600080fd5b5060c9546001600160a01b03165b6040516001600160a01b039091168152602001610124565b3480156101f457600080fd5b50600060405161012491906110dd565b61014d61021236600461111b565b610620565b34801561022357600080fd5b5061016661078c565b34801561023857600080fd5b506101d0610851565b34801561024d57600080fd5b5061016661012d5481565b34801561026457600080fd5b5061014d6102733660046110c0565b610889565b34801561028457600080fd5b5061014d6102933660046110c0565b6108e8565b3480156102a457600080fd5b506101667f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f581565b3480156102d857600080fd5b5060fb546101d0906001600160a01b031681565b3480156102f857600080fd5b5061016661012e5481565b60006001600160e01b0319821663041de68360e41b148061033357506001600160e01b03198216621574e360e91b145b8061034e57506001600160e01b031982166352d1902d60e01b145b8061036957506301ffc9a760e01b6001600160e01b03198316145b92915050565b600054600390610100900460ff16158015610391575060005460ff8083169116105b6103f95760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805461ffff191660ff831617610100179055600261ffff8316101561042157600261012e555b60038261ffff16101561043557600361012f555b6000805461ff001916905560405160ff821681527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b61048361100b565b5060408051606081018252600181526004602082015260009181019190915290565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036105325760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b60648201526084016103f0565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661058d7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b0316146105f85760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b60648201526084016103f0565b610601816109da565b6040805160008082526020820190925261061d91839190610a17565b50565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036106ad5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b60648201526084016103f0565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166107087f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b0316146107735760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b60648201526084016103f0565b61077c826109da565b61078882826001610a17565b5050565b6000306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461082c5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016103f0565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b60006108847f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b60fb80546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d690600090a35050565b600054600390610100900460ff1615801561090a575060005460ff8083169116105b61096d5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016103f0565b6000805461ffff191660ff83161761010017905561098a82610bbc565b600161012d55600261012e55600361012f556000805461ff001916905560405160ff821681527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200161046f565b60c9547f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f590610788906001600160a01b0316303384600036610c30565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610a4f57610a4a83610cec565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610aa9575060408051601f3d908101601f19168201909252610aa6918101906111df565b60015b610b1b5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201527f6f6e206973206e6f74205555505300000000000000000000000000000000000060648201526084016103f0565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114610bb05760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f7860448201527f6961626c6555554944000000000000000000000000000000000000000000000060648201526084016103f0565b50610a4a838383610db7565b600054610100900460ff16610c275760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103f0565b61061d81610de2565b604051637ef7c88360e11b81526001600160a01b0387169063fdef910690610c6490889088908890889088906004016111f8565b602060405180830381865afa158015610c81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca5919061124c565b610ce457604051630cb6f8ed60e21b81526001600160a01b038088166004830152808716602483015285166044820152606481018490526084016103f0565b505050505050565b6001600160a01b0381163b610d695760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e74726163740000000000000000000000000000000000000060648201526084016103f0565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610dc083610e7c565b600082511180610dcd5750805b15610a4a57610ddc8383610ebc565b50505050565b600054610100900460ff16610e4d5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103f0565b60c9805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610e8581610cec565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060610ee183836040518060600160405280602781526020016112e260279139610ee8565b9392505050565b6060600080856001600160a01b031685604051610f059190611292565b600060405180830381855af49150503d8060008114610f40576040519150601f19603f3d011682016040523d82523d6000602084013e610f45565b606091505b5091509150610f5686838387610f60565b9695505050505050565b60608315610fcf578251600003610fc8576001600160a01b0385163b610fc85760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016103f0565b5081610fd9565b610fd98383610fe1565b949350505050565b815115610ff15781518083602001fd5b8060405162461bcd60e51b81526004016103f091906112ae565b60405180606001604052806003906020820280368337509192915050565b60006020828403121561103b57600080fd5b81356001600160e01b031981168114610ee157600080fd5b60006020828403121561106557600080fd5b813561ffff81168114610ee157600080fd5b60608101818360005b60038110156110a257815160ff16835260209283019290910190600101611080565b50505092915050565b6001600160a01b038116811461061d57600080fd5b6000602082840312156110d257600080fd5b8135610ee1816110ab565b60208101600383106110ff57634e487b7160e01b600052602160045260246000fd5b91905290565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561112e57600080fd5b8235611139816110ab565b9150602083013567ffffffffffffffff8082111561115657600080fd5b818501915085601f83011261116a57600080fd5b81358181111561117c5761117c611105565b604051601f8201601f19908116603f011681019083821181831017156111a4576111a4611105565b816040528281528860208487010111156111bd57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6000602082840312156111f157600080fd5b5051919050565b60006001600160a01b03808816835280871660208401525084604083015260806060830152826080830152828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b60006020828403121561125e57600080fd5b81518015158114610ee157600080fd5b60005b83811015611289578181015183820152602001611271565b50506000910152565b600082516112a481846020870161126e565b9190910192915050565b60208152600082518060208401526112cd81604085016020870161126e565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/contracts/artifacts/src/mocks/plugin/PluginUUPSUpgradeableSetupMock.sol/PluginUUPSUpgradeableSetupMockBuild1.dbg.json b/contracts/artifacts/src/mocks/plugin/PluginUUPSUpgradeableSetupMock.sol/PluginUUPSUpgradeableSetupMockBuild1.dbg.json deleted file mode 100644 index 930fbb1d..00000000 --- a/contracts/artifacts/src/mocks/plugin/PluginUUPSUpgradeableSetupMock.sol/PluginUUPSUpgradeableSetupMockBuild1.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../build-info/9ac591806bb2e846e5a60f79d635058e.json" -} diff --git a/contracts/artifacts/src/mocks/plugin/PluginUUPSUpgradeableSetupMock.sol/PluginUUPSUpgradeableSetupMockBuild1.json b/contracts/artifacts/src/mocks/plugin/PluginUUPSUpgradeableSetupMock.sol/PluginUUPSUpgradeableSetupMockBuild1.json deleted file mode 100644 index 82628093..00000000 --- a/contracts/artifacts/src/mocks/plugin/PluginUUPSUpgradeableSetupMock.sol/PluginUUPSUpgradeableSetupMockBuild1.json +++ /dev/null @@ -1,308 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "PluginUUPSUpgradeableSetupMockBuild1", - "sourceName": "src/mocks/plugin/PluginUUPSUpgradeableSetupMock.sol", - "abi": [ - { - "inputs": [], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "inputs": [], - "name": "ConflictingValues", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "uint16", - "name": "fromBuild", - "type": "uint16" - }, - { - "internalType": "uint16", - "name": "thisBuild", - "type": "uint16" - } - ], - "name": "InvalidUpdatePath", - "type": "error" - }, - { - "inputs": [], - "name": "implementation", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_dao", - "type": "address" - }, - { - "internalType": "bytes", - "name": "", - "type": "bytes" - } - ], - "name": "prepareInstallation", - "outputs": [ - { - "internalType": "address", - "name": "plugin", - "type": "address" - }, - { - "components": [ - { - "internalType": "address[]", - "name": "helpers", - "type": "address[]" - }, - { - "components": [ - { - "internalType": "enum PermissionLib.Operation", - "name": "operation", - "type": "uint8" - }, - { - "internalType": "address", - "name": "where", - "type": "address" - }, - { - "internalType": "address", - "name": "who", - "type": "address" - }, - { - "internalType": "address", - "name": "condition", - "type": "address" - }, - { - "internalType": "bytes32", - "name": "permissionId", - "type": "bytes32" - } - ], - "internalType": "struct PermissionLib.MultiTargetPermission[]", - "name": "permissions", - "type": "tuple[]" - } - ], - "internalType": "struct IPluginSetup.PreparedSetupData", - "name": "preparedSetupData", - "type": "tuple" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_dao", - "type": "address" - }, - { - "components": [ - { - "internalType": "address", - "name": "plugin", - "type": "address" - }, - { - "internalType": "address[]", - "name": "currentHelpers", - "type": "address[]" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "internalType": "struct IPluginSetup.SetupPayload", - "name": "_payload", - "type": "tuple" - } - ], - "name": "prepareUninstallation", - "outputs": [ - { - "components": [ - { - "internalType": "enum PermissionLib.Operation", - "name": "operation", - "type": "uint8" - }, - { - "internalType": "address", - "name": "where", - "type": "address" - }, - { - "internalType": "address", - "name": "who", - "type": "address" - }, - { - "internalType": "address", - "name": "condition", - "type": "address" - }, - { - "internalType": "bytes32", - "name": "permissionId", - "type": "bytes32" - } - ], - "internalType": "struct PermissionLib.MultiTargetPermission[]", - "name": "permissions", - "type": "tuple[]" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_dao", - "type": "address" - }, - { - "internalType": "uint16", - "name": "_fromBuild", - "type": "uint16" - }, - { - "components": [ - { - "internalType": "address", - "name": "plugin", - "type": "address" - }, - { - "internalType": "address[]", - "name": "currentHelpers", - "type": "address[]" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "internalType": "struct IPluginSetup.SetupPayload", - "name": "_payload", - "type": "tuple" - } - ], - "name": "prepareUpdate", - "outputs": [ - { - "internalType": "bytes", - "name": "", - "type": "bytes" - }, - { - "components": [ - { - "internalType": "address[]", - "name": "helpers", - "type": "address[]" - }, - { - "components": [ - { - "internalType": "enum PermissionLib.Operation", - "name": "operation", - "type": "uint8" - }, - { - "internalType": "address", - "name": "where", - "type": "address" - }, - { - "internalType": "address", - "name": "who", - "type": "address" - }, - { - "internalType": "address", - "name": "condition", - "type": "address" - }, - { - "internalType": "bytes32", - "name": "permissionId", - "type": "bytes32" - } - ], - "internalType": "struct PermissionLib.MultiTargetPermission[]", - "name": "permissions", - "type": "tuple[]" - } - ], - "internalType": "struct IPluginSetup.PreparedSetupData", - "name": "", - "type": "tuple" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [], - "name": "protocolVersion", - "outputs": [ - { - "internalType": "uint8[3]", - "name": "", - "type": "uint8[3]" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes4", - "name": "_interfaceId", - "type": "bytes4" - } - ], - "name": "supportsInterface", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - } - ], - "bytecode": "0x60a060405234801561001057600080fd5b5060405161001d9061004b565b604051809103906000f080158015610039573d6000803e3d6000fd5b506001600160a01b0316608052610058565b6112c88061126083390190565b6080516111e76100796000396000818160d201526102d301526111e76000f3fe60806040523480156200001157600080fd5b50600436106200007b5760003560e01c80639cb0a12411620000565780639cb0a12414620000fd578063a8a9c29e1462000123578063f10832f1146200014a57600080fd5b806301ffc9a714620000805780632ae9c60014620000ac5780635c60da1b14620000c5575b600080fd5b6200009762000091366004620005f8565b62000171565b60405190151581526020015b60405180910390f35b620000b6620001c4565b604051620000a3919062000624565b6040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152602001620000a3565b620001146200010e3660046200068a565b620001f0565b604051620000a391906200075b565b6200013a62000134366004620007a8565b62000208565b604051620000a3929190620008f7565b620001616200015b3660046200093f565b6200024f565b604051620000a392919062000a0d565b60006001600160e01b0319821663099718b560e41b1480620001a257506001600160e01b03198216621574e360e91b145b80620001be57506301ffc9a760e01b6001600160e01b03198316145b92915050565b620001ce620005cc565b5060408051606081018252600181526004602082015260009181019190915290565b606062000201600060018062000333565b9392505050565b606062000228604051806040016040528060608152602001606081525090565b60405163098990c560e11b8152600060048201526001602482015260440160405180910390fd5b60006200026f604051806040016040528060608152602001606081525090565b6040516001600160a01b038516602482015260009060440160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663189acdbd60e31b17905290506200030581620002f57f000000000000000000000000000000000000000000000000000000000000000090565b6001600160a01b031690620004cc565b925062000313600162000508565b825262000324600060018162000333565b60208301525090939092509050565b6060826001600160a01b0316846001600160a01b031611156200036957604051633a4013cd60e21b815260040160405180910390fd5b62000375848462000a4f565b6001600160a01b031667ffffffffffffffff81111562000399576200039962000929565b604051908082528060200260200182016040528015620003f457816020015b6040805160a081018252600080825260208083018290529282018190526060820181905260808201528252600019909201910181620003b85790505b509050835b836001600160a01b0316816001600160a01b03161015620004c4576040518060a00160405280846002811115620004345762000434620006de565b81526001600160a01b038316602082018190526040820152600060608201527fa280eec51ab8e1bc4b6b0c1b7f1bde785761b787a49db404e3e9338ed9b016ef6080909101528262000487878462000a4f565b6001600160a01b031681518110620004a357620004a362000a79565b60200260200101819052508080620004bb9062000a8f565b915050620003f9565b509392505050565b60008282604051620004de90620005ea565b620004eb92919062000ab8565b604051809103906000f080158015620004c4573d6000803e3d6000fd5b6060816001600160a01b031667ffffffffffffffff8111156200052f576200052f62000929565b60405190808252806020026020018201604052801562000559578160200160208202803683370190505b50905060005b826001600160a01b0316816001600160a01b03161015620005c6578082826001600160a01b03168151811062000599576200059962000a79565b6001600160a01b039092166020928302919091019091015280620005bd8162000a8f565b9150506200055f565b50919050565b60405180606001604052806003906020820280368337509192915050565b6106fe8062000add83390190565b6000602082840312156200060b57600080fd5b81356001600160e01b0319811681146200020157600080fd5b60608101818360005b60038110156200065157815160ff168352602092830192909101906001016200062d565b50505092915050565b80356001600160a01b03811681146200067257600080fd5b919050565b600060608284031215620005c657600080fd5b600080604083850312156200069e57600080fd5b620006a9836200065a565b9150602083013567ffffffffffffffff811115620006c657600080fd5b620006d48582860162000677565b9150509250929050565b634e487b7160e01b600052602160045260246000fd5b60008151600381106200071757634e487b7160e01b600052602160045260246000fd5b8352506020818101516001600160a01b0390811691840191909152604080830151821690840152606080830151909116908301526080908101519082015260a00190565b6020808252825182820181905260009190848201906040850190845b818110156200079c576200078d838551620006f4565b93850193925060010162000777565b50909695505050505050565b600080600060608486031215620007be57600080fd5b620007c9846200065a565b9250602084013561ffff81168114620007e157600080fd5b9150604084013567ffffffffffffffff811115620007fe57600080fd5b6200080c8682870162000677565b9150509250925092565b6000815180845260005b818110156200083e5760208185018101518683018201520162000820565b506000602082860101526020601f19601f83011685010191505092915050565b805160408084528151908401819052600091602091908201906060860190845b81811015620008a55783516001600160a01b0316835292840192918401916001016200087e565b50508483015186820387850152805180835290840192506000918401905b80831015620008ec57620008d9828551620006f4565b91508484019350600183019250620008c3565b509695505050505050565b6040815260006200090c604083018562000816565b82810360208401526200092081856200085e565b95945050505050565b634e487b7160e01b600052604160045260246000fd5b600080604083850312156200095357600080fd5b6200095e836200065a565b9150602083013567ffffffffffffffff808211156200097c57600080fd5b818501915085601f8301126200099157600080fd5b813581811115620009a657620009a662000929565b604051601f8201601f19908116603f01168101908382118183101715620009d157620009d162000929565b81604052828152886020848701011115620009eb57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6001600160a01b038316815260406020820152600062000a3160408301846200085e565b949350505050565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0382811682821603908082111562000a725762000a7262000a39565b5092915050565b634e487b7160e01b600052603260045260246000fd5b60006001600160a01b0380831681810362000aae5762000aae62000a39565b6001019392505050565b6001600160a01b038316815260406020820152600062000a3160408301846200081656fe60806040526040516106fe3803806106fe83398101604081905261002291610319565b61002e82826000610035565b5050610436565b61003e8361006b565b60008251118061004b5750805b156100665761006483836100ab60201b6100291760201c565b505b505050565b610074816100d7565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606100d083836040518060600160405280602781526020016106d7602791396101a9565b9392505050565b6100ea8161022260201b6100551760201c565b6101515760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b806101887f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61023160201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6060600080856001600160a01b0316856040516101c691906103e7565b600060405180830381855af49150503d8060008114610201576040519150601f19603f3d011682016040523d82523d6000602084013e610206565b606091505b50909250905061021886838387610234565b9695505050505050565b6001600160a01b03163b151590565b90565b606083156102a357825160000361029c576001600160a01b0385163b61029c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610148565b50816102ad565b6102ad83836102b5565b949350505050565b8151156102c55781518083602001fd5b8060405162461bcd60e51b81526004016101489190610403565b634e487b7160e01b600052604160045260246000fd5b60005b838110156103105781810151838201526020016102f8565b50506000910152565b6000806040838503121561032c57600080fd5b82516001600160a01b038116811461034357600080fd5b60208401519092506001600160401b038082111561036057600080fd5b818501915085601f83011261037457600080fd5b815181811115610386576103866102df565b604051601f8201601f19908116603f011681019083821181831017156103ae576103ae6102df565b816040528281528860208487010111156103c757600080fd5b6103d88360208301602088016102f5565b80955050505050509250929050565b600082516103f98184602087016102f5565b9190910192915050565b60208152600082518060208401526104228160408501602087016102f5565b601f01601f19169190910160400192915050565b610292806104456000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b61009f565b565b606061004e838360405180606001604052806027815260200161025f602791396100c3565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e8080156100be573d6000f35b3d6000fd5b6060600080856001600160a01b0316856040516100e0919061020f565b600060405180830381855af49150503d806000811461011b576040519150601f19603f3d011682016040523d82523d6000602084013e610120565b606091505b50915091506101318683838761013b565b9695505050505050565b606083156101af5782516000036101a8576001600160a01b0385163b6101a85760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b50816101b9565b6101b983836101c1565b949350505050565b8151156101d15781518083602001fd5b8060405162461bcd60e51b815260040161019f919061022b565b60005b838110156102065781810151838201526020016101ee565b50506000910152565b600082516102218184602087016101eb565b9190910192915050565b602081526000825180602084015261024a8160408501602087016101eb565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a60a06040523060805234801561001457600080fd5b5061001d610022565b6100e1565b600054610100900460ff161561008e5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116146100df576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6080516111b061011860003960008181610334015281816103be015281816104b401528181610539015261062301526111b06000f3fe6080604052600436106100d25760003560e01c806352d1902d1161007f578063776d1a0111610059578063776d1a0114610200578063c4d66de814610220578063c9c4bfca14610240578063d4b839921461027457600080fd5b806352d1902d146101b15780635c60da1b146101d45780636accab8c146101e957600080fd5b80634162169f116100b05780634162169f1461015057806341de6830146101825780634f1ef2861461019e57600080fd5b806301ffc9a7146100d75780632ae9c6001461010c5780633659cfe61461012e575b600080fd5b3480156100e357600080fd5b506100f76100f2366004610ee8565b610294565b60405190151581526020015b60405180910390f35b34801561011857600080fd5b50610121610300565b6040516101039190610f12565b34801561013a57600080fd5b5061014e610149366004610f5b565b61032a565b005b34801561015c57600080fd5b5060c9546001600160a01b03165b6040516001600160a01b039091168152602001610103565b34801561018e57600080fd5b5060006040516101039190610f78565b61014e6101ac366004610fb6565b6104aa565b3480156101bd57600080fd5b506101c6610616565b604051908152602001610103565b3480156101e057600080fd5b5061016a6106db565b3480156101f557600080fd5b506101c661012d5481565b34801561020c57600080fd5b5061014e61021b366004610f5b565b610713565b34801561022c57600080fd5b5061014e61023b366004610f5b565b610772565b34801561024c57600080fd5b506101c67f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f581565b34801561028057600080fd5b5060fb5461016a906001600160a01b031681565b60006001600160e01b0319821663041de68360e41b14806102c457506001600160e01b03198216621574e360e91b145b806102df57506001600160e01b031982166352d1902d60e01b145b806102fa57506301ffc9a760e01b6001600160e01b03198316145b92915050565b610308610eca565b5060408051606081018252600181526004602082015260009181019190915290565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036103bc5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b60648201526084015b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166104177f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b0316146104825760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b60648201526084016103b3565b61048b81610899565b604080516000808252602082019092526104a7918391906108d6565b50565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036105375760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b60648201526084016103b3565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166105927f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b0316146105fd5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b60648201526084016103b3565b61060682610899565b610612828260016108d6565b5050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106b65760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016103b3565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b600061070e7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b60fb80546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d690600090a35050565b600054610100900460ff16158080156107925750600054600160ff909116105b806107ac5750303b1580156107ac575060005460ff166001145b61081e5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016103b3565b6000805460ff191660011790558015610841576000805461ff0019166101001790555b61084a82610a7b565b600161012d558015610612576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b60c9547f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f590610612906001600160a01b0316303384600036610aef565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561090e5761090983610bab565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610968575060408051601f3d908101601f191682019092526109659181019061107a565b60015b6109da5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201527f6f6e206973206e6f74205555505300000000000000000000000000000000000060648201526084016103b3565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114610a6f5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f7860448201527f6961626c6555554944000000000000000000000000000000000000000000000060648201526084016103b3565b50610909838383610c76565b600054610100900460ff16610ae65760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103b3565b6104a781610ca1565b604051637ef7c88360e11b81526001600160a01b0387169063fdef910690610b239088908890889088908890600401611093565b602060405180830381865afa158015610b40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6491906110e7565b610ba357604051630cb6f8ed60e21b81526001600160a01b038088166004830152808716602483015285166044820152606481018490526084016103b3565b505050505050565b6001600160a01b0381163b610c285760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e74726163740000000000000000000000000000000000000060648201526084016103b3565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610c7f83610d3b565b600082511180610c8c5750805b1561090957610c9b8383610d7b565b50505050565b600054610100900460ff16610d0c5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103b3565b60c9805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610d4481610bab565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060610da0838360405180606001604052806027815260200161117d60279139610da7565b9392505050565b6060600080856001600160a01b031685604051610dc4919061112d565b600060405180830381855af49150503d8060008114610dff576040519150601f19603f3d011682016040523d82523d6000602084013e610e04565b606091505b5091509150610e1586838387610e1f565b9695505050505050565b60608315610e8e578251600003610e87576001600160a01b0385163b610e875760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016103b3565b5081610e98565b610e988383610ea0565b949350505050565b815115610eb05781518083602001fd5b8060405162461bcd60e51b81526004016103b39190611149565b60405180606001604052806003906020820280368337509192915050565b600060208284031215610efa57600080fd5b81356001600160e01b031981168114610da057600080fd5b60608101818360005b6003811015610f3d57815160ff16835260209283019290910190600101610f1b565b50505092915050565b6001600160a01b03811681146104a757600080fd5b600060208284031215610f6d57600080fd5b8135610da081610f46565b6020810160038310610f9a57634e487b7160e01b600052602160045260246000fd5b91905290565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215610fc957600080fd5b8235610fd481610f46565b9150602083013567ffffffffffffffff80821115610ff157600080fd5b818501915085601f83011261100557600080fd5b81358181111561101757611017610fa0565b604051601f8201601f19908116603f0116810190838211818310171561103f5761103f610fa0565b8160405282815288602084870101111561105857600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60006020828403121561108c57600080fd5b5051919050565b60006001600160a01b03808816835280871660208401525084604083015260806060830152826080830152828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b6000602082840312156110f957600080fd5b81518015158114610da057600080fd5b60005b8381101561112457818101518382015260200161110c565b50506000910152565b6000825161113f818460208701611109565b9190910192915050565b6020815260008251806020840152611168816040850160208701611109565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a", - "deployedBytecode": "0x60806040523480156200001157600080fd5b50600436106200007b5760003560e01c80639cb0a12411620000565780639cb0a12414620000fd578063a8a9c29e1462000123578063f10832f1146200014a57600080fd5b806301ffc9a714620000805780632ae9c60014620000ac5780635c60da1b14620000c5575b600080fd5b6200009762000091366004620005f8565b62000171565b60405190151581526020015b60405180910390f35b620000b6620001c4565b604051620000a3919062000624565b6040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152602001620000a3565b620001146200010e3660046200068a565b620001f0565b604051620000a391906200075b565b6200013a62000134366004620007a8565b62000208565b604051620000a3929190620008f7565b620001616200015b3660046200093f565b6200024f565b604051620000a392919062000a0d565b60006001600160e01b0319821663099718b560e41b1480620001a257506001600160e01b03198216621574e360e91b145b80620001be57506301ffc9a760e01b6001600160e01b03198316145b92915050565b620001ce620005cc565b5060408051606081018252600181526004602082015260009181019190915290565b606062000201600060018062000333565b9392505050565b606062000228604051806040016040528060608152602001606081525090565b60405163098990c560e11b8152600060048201526001602482015260440160405180910390fd5b60006200026f604051806040016040528060608152602001606081525090565b6040516001600160a01b038516602482015260009060440160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663189acdbd60e31b17905290506200030581620002f57f000000000000000000000000000000000000000000000000000000000000000090565b6001600160a01b031690620004cc565b925062000313600162000508565b825262000324600060018162000333565b60208301525090939092509050565b6060826001600160a01b0316846001600160a01b031611156200036957604051633a4013cd60e21b815260040160405180910390fd5b62000375848462000a4f565b6001600160a01b031667ffffffffffffffff81111562000399576200039962000929565b604051908082528060200260200182016040528015620003f457816020015b6040805160a081018252600080825260208083018290529282018190526060820181905260808201528252600019909201910181620003b85790505b509050835b836001600160a01b0316816001600160a01b03161015620004c4576040518060a00160405280846002811115620004345762000434620006de565b81526001600160a01b038316602082018190526040820152600060608201527fa280eec51ab8e1bc4b6b0c1b7f1bde785761b787a49db404e3e9338ed9b016ef6080909101528262000487878462000a4f565b6001600160a01b031681518110620004a357620004a362000a79565b60200260200101819052508080620004bb9062000a8f565b915050620003f9565b509392505050565b60008282604051620004de90620005ea565b620004eb92919062000ab8565b604051809103906000f080158015620004c4573d6000803e3d6000fd5b6060816001600160a01b031667ffffffffffffffff8111156200052f576200052f62000929565b60405190808252806020026020018201604052801562000559578160200160208202803683370190505b50905060005b826001600160a01b0316816001600160a01b03161015620005c6578082826001600160a01b03168151811062000599576200059962000a79565b6001600160a01b039092166020928302919091019091015280620005bd8162000a8f565b9150506200055f565b50919050565b60405180606001604052806003906020820280368337509192915050565b6106fe8062000add83390190565b6000602082840312156200060b57600080fd5b81356001600160e01b0319811681146200020157600080fd5b60608101818360005b60038110156200065157815160ff168352602092830192909101906001016200062d565b50505092915050565b80356001600160a01b03811681146200067257600080fd5b919050565b600060608284031215620005c657600080fd5b600080604083850312156200069e57600080fd5b620006a9836200065a565b9150602083013567ffffffffffffffff811115620006c657600080fd5b620006d48582860162000677565b9150509250929050565b634e487b7160e01b600052602160045260246000fd5b60008151600381106200071757634e487b7160e01b600052602160045260246000fd5b8352506020818101516001600160a01b0390811691840191909152604080830151821690840152606080830151909116908301526080908101519082015260a00190565b6020808252825182820181905260009190848201906040850190845b818110156200079c576200078d838551620006f4565b93850193925060010162000777565b50909695505050505050565b600080600060608486031215620007be57600080fd5b620007c9846200065a565b9250602084013561ffff81168114620007e157600080fd5b9150604084013567ffffffffffffffff811115620007fe57600080fd5b6200080c8682870162000677565b9150509250925092565b6000815180845260005b818110156200083e5760208185018101518683018201520162000820565b506000602082860101526020601f19601f83011685010191505092915050565b805160408084528151908401819052600091602091908201906060860190845b81811015620008a55783516001600160a01b0316835292840192918401916001016200087e565b50508483015186820387850152805180835290840192506000918401905b80831015620008ec57620008d9828551620006f4565b91508484019350600183019250620008c3565b509695505050505050565b6040815260006200090c604083018562000816565b82810360208401526200092081856200085e565b95945050505050565b634e487b7160e01b600052604160045260246000fd5b600080604083850312156200095357600080fd5b6200095e836200065a565b9150602083013567ffffffffffffffff808211156200097c57600080fd5b818501915085601f8301126200099157600080fd5b813581811115620009a657620009a662000929565b604051601f8201601f19908116603f01168101908382118183101715620009d157620009d162000929565b81604052828152886020848701011115620009eb57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6001600160a01b038316815260406020820152600062000a3160408301846200085e565b949350505050565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0382811682821603908082111562000a725762000a7262000a39565b5092915050565b634e487b7160e01b600052603260045260246000fd5b60006001600160a01b0380831681810362000aae5762000aae62000a39565b6001019392505050565b6001600160a01b038316815260406020820152600062000a3160408301846200081656fe60806040526040516106fe3803806106fe83398101604081905261002291610319565b61002e82826000610035565b5050610436565b61003e8361006b565b60008251118061004b5750805b156100665761006483836100ab60201b6100291760201c565b505b505050565b610074816100d7565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606100d083836040518060600160405280602781526020016106d7602791396101a9565b9392505050565b6100ea8161022260201b6100551760201c565b6101515760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b806101887f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61023160201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6060600080856001600160a01b0316856040516101c691906103e7565b600060405180830381855af49150503d8060008114610201576040519150601f19603f3d011682016040523d82523d6000602084013e610206565b606091505b50909250905061021886838387610234565b9695505050505050565b6001600160a01b03163b151590565b90565b606083156102a357825160000361029c576001600160a01b0385163b61029c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610148565b50816102ad565b6102ad83836102b5565b949350505050565b8151156102c55781518083602001fd5b8060405162461bcd60e51b81526004016101489190610403565b634e487b7160e01b600052604160045260246000fd5b60005b838110156103105781810151838201526020016102f8565b50506000910152565b6000806040838503121561032c57600080fd5b82516001600160a01b038116811461034357600080fd5b60208401519092506001600160401b038082111561036057600080fd5b818501915085601f83011261037457600080fd5b815181811115610386576103866102df565b604051601f8201601f19908116603f011681019083821181831017156103ae576103ae6102df565b816040528281528860208487010111156103c757600080fd5b6103d88360208301602088016102f5565b80955050505050509250929050565b600082516103f98184602087016102f5565b9190910192915050565b60208152600082518060208401526104228160408501602087016102f5565b601f01601f19169190910160400192915050565b610292806104456000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b61009f565b565b606061004e838360405180606001604052806027815260200161025f602791396100c3565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e8080156100be573d6000f35b3d6000fd5b6060600080856001600160a01b0316856040516100e0919061020f565b600060405180830381855af49150503d806000811461011b576040519150601f19603f3d011682016040523d82523d6000602084013e610120565b606091505b50915091506101318683838761013b565b9695505050505050565b606083156101af5782516000036101a8576001600160a01b0385163b6101a85760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b50816101b9565b6101b983836101c1565b949350505050565b8151156101d15781518083602001fd5b8060405162461bcd60e51b815260040161019f919061022b565b60005b838110156102065781810151838201526020016101ee565b50506000910152565b600082516102218184602087016101eb565b9190910192915050565b602081526000825180602084015261024a8160408501602087016101eb565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/contracts/artifacts/src/mocks/plugin/PluginUUPSUpgradeableSetupMock.sol/PluginUUPSUpgradeableSetupMockBuild2.dbg.json b/contracts/artifacts/src/mocks/plugin/PluginUUPSUpgradeableSetupMock.sol/PluginUUPSUpgradeableSetupMockBuild2.dbg.json deleted file mode 100644 index 930fbb1d..00000000 --- a/contracts/artifacts/src/mocks/plugin/PluginUUPSUpgradeableSetupMock.sol/PluginUUPSUpgradeableSetupMockBuild2.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../build-info/9ac591806bb2e846e5a60f79d635058e.json" -} diff --git a/contracts/artifacts/src/mocks/plugin/PluginUUPSUpgradeableSetupMock.sol/PluginUUPSUpgradeableSetupMockBuild2.json b/contracts/artifacts/src/mocks/plugin/PluginUUPSUpgradeableSetupMock.sol/PluginUUPSUpgradeableSetupMockBuild2.json deleted file mode 100644 index eeb18641..00000000 --- a/contracts/artifacts/src/mocks/plugin/PluginUUPSUpgradeableSetupMock.sol/PluginUUPSUpgradeableSetupMockBuild2.json +++ /dev/null @@ -1,308 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "PluginUUPSUpgradeableSetupMockBuild2", - "sourceName": "src/mocks/plugin/PluginUUPSUpgradeableSetupMock.sol", - "abi": [ - { - "inputs": [], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "inputs": [], - "name": "ConflictingValues", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "uint16", - "name": "fromBuild", - "type": "uint16" - }, - { - "internalType": "uint16", - "name": "thisBuild", - "type": "uint16" - } - ], - "name": "InvalidUpdatePath", - "type": "error" - }, - { - "inputs": [], - "name": "implementation", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_dao", - "type": "address" - }, - { - "internalType": "bytes", - "name": "", - "type": "bytes" - } - ], - "name": "prepareInstallation", - "outputs": [ - { - "internalType": "address", - "name": "plugin", - "type": "address" - }, - { - "components": [ - { - "internalType": "address[]", - "name": "helpers", - "type": "address[]" - }, - { - "components": [ - { - "internalType": "enum PermissionLib.Operation", - "name": "operation", - "type": "uint8" - }, - { - "internalType": "address", - "name": "where", - "type": "address" - }, - { - "internalType": "address", - "name": "who", - "type": "address" - }, - { - "internalType": "address", - "name": "condition", - "type": "address" - }, - { - "internalType": "bytes32", - "name": "permissionId", - "type": "bytes32" - } - ], - "internalType": "struct PermissionLib.MultiTargetPermission[]", - "name": "permissions", - "type": "tuple[]" - } - ], - "internalType": "struct IPluginSetup.PreparedSetupData", - "name": "preparedSetupData", - "type": "tuple" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_dao", - "type": "address" - }, - { - "components": [ - { - "internalType": "address", - "name": "plugin", - "type": "address" - }, - { - "internalType": "address[]", - "name": "currentHelpers", - "type": "address[]" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "internalType": "struct IPluginSetup.SetupPayload", - "name": "_payload", - "type": "tuple" - } - ], - "name": "prepareUninstallation", - "outputs": [ - { - "components": [ - { - "internalType": "enum PermissionLib.Operation", - "name": "operation", - "type": "uint8" - }, - { - "internalType": "address", - "name": "where", - "type": "address" - }, - { - "internalType": "address", - "name": "who", - "type": "address" - }, - { - "internalType": "address", - "name": "condition", - "type": "address" - }, - { - "internalType": "bytes32", - "name": "permissionId", - "type": "bytes32" - } - ], - "internalType": "struct PermissionLib.MultiTargetPermission[]", - "name": "permissions", - "type": "tuple[]" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_dao", - "type": "address" - }, - { - "internalType": "uint16", - "name": "_fromBuild", - "type": "uint16" - }, - { - "components": [ - { - "internalType": "address", - "name": "plugin", - "type": "address" - }, - { - "internalType": "address[]", - "name": "currentHelpers", - "type": "address[]" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "internalType": "struct IPluginSetup.SetupPayload", - "name": "_payload", - "type": "tuple" - } - ], - "name": "prepareUpdate", - "outputs": [ - { - "internalType": "bytes", - "name": "initData", - "type": "bytes" - }, - { - "components": [ - { - "internalType": "address[]", - "name": "helpers", - "type": "address[]" - }, - { - "components": [ - { - "internalType": "enum PermissionLib.Operation", - "name": "operation", - "type": "uint8" - }, - { - "internalType": "address", - "name": "where", - "type": "address" - }, - { - "internalType": "address", - "name": "who", - "type": "address" - }, - { - "internalType": "address", - "name": "condition", - "type": "address" - }, - { - "internalType": "bytes32", - "name": "permissionId", - "type": "bytes32" - } - ], - "internalType": "struct PermissionLib.MultiTargetPermission[]", - "name": "permissions", - "type": "tuple[]" - } - ], - "internalType": "struct IPluginSetup.PreparedSetupData", - "name": "preparedSetupData", - "type": "tuple" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [], - "name": "protocolVersion", - "outputs": [ - { - "internalType": "uint8[3]", - "name": "", - "type": "uint8[3]" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes4", - "name": "_interfaceId", - "type": "bytes4" - } - ], - "name": "supportsInterface", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - } - ], - "bytecode": "0x60a060405234801561001057600080fd5b5060405161001d9061004b565b604051809103906000f080158015610039573d6000803e3d6000fd5b506001600160a01b0316608052610058565b6113f1806112c683390190565b60805161124d6100796000396000818160d20152610339015261124d6000f3fe60806040523480156200001157600080fd5b50600436106200007b5760003560e01c80639cb0a12411620000565780639cb0a12414620000fd578063a8a9c29e1462000123578063f10832f1146200014a57600080fd5b806301ffc9a714620000805780632ae9c60014620000ac5780635c60da1b14620000c5575b600080fd5b62000097620000913660046200065e565b62000171565b60405190151581526020015b60405180910390f35b620000b6620001c4565b604051620000a391906200068a565b6040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152602001620000a3565b620001146200010e366004620006f0565b620001f0565b604051620000a39190620007c1565b6200013a620001343660046200080e565b62000209565b604051620000a39291906200095d565b620001616200015b366004620009a5565b620002b5565b604051620000a392919062000a73565b60006001600160e01b0319821663099718b560e41b1480620001a257506001600160e01b03198216621574e360e91b145b80620001be57506301ffc9a760e01b6001600160e01b03198316145b92915050565b620001ce62000632565b5060408051606081018252600181526004602082015260009181019190915290565b60606200020260006002600162000399565b9392505050565b606062000229604051806040016040528060608152602001606081525090565b8361ffff16600103620002ad5762000242600262000532565b815260405161ffff8516602482015260440160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166239a8c560e41b1790529150620002a761ffff85166002600062000399565b60208201525b935093915050565b6000620002d5604051806040016040528060608152602001606081525090565b6040516001600160a01b038516602482015260009060440160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663189acdbd60e31b17905290506200036b816200035b7f000000000000000000000000000000000000000000000000000000000000000090565b6001600160a01b031690620005f6565b925062000379600262000532565b82526200038a600060028162000399565b60208301525090939092509050565b6060826001600160a01b0316846001600160a01b03161115620003cf57604051633a4013cd60e21b815260040160405180910390fd5b620003db848462000ab5565b6001600160a01b031667ffffffffffffffff811115620003ff57620003ff6200098f565b6040519080825280602002602001820160405280156200045a57816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282526000199092019101816200041e5790505b509050835b836001600160a01b0316816001600160a01b031610156200052a576040518060a001604052808460028111156200049a576200049a62000744565b81526001600160a01b038316602082018190526040820152600060608201527fa280eec51ab8e1bc4b6b0c1b7f1bde785761b787a49db404e3e9338ed9b016ef60809091015282620004ed878462000ab5565b6001600160a01b03168151811062000509576200050962000adf565b60200260200101819052508080620005219062000af5565b9150506200045f565b509392505050565b6060816001600160a01b031667ffffffffffffffff8111156200055957620005596200098f565b60405190808252806020026020018201604052801562000583578160200160208202803683370190505b50905060005b826001600160a01b0316816001600160a01b03161015620005f0578082826001600160a01b031681518110620005c357620005c362000adf565b6001600160a01b039092166020928302919091019091015280620005e78162000af5565b91505062000589565b50919050565b60008282604051620006089062000650565b6200061592919062000b1e565b604051809103906000f0801580156200052a573d6000803e3d6000fd5b60405180606001604052806003906020820280368337509192915050565b6106fe8062000b4383390190565b6000602082840312156200067157600080fd5b81356001600160e01b0319811681146200020257600080fd5b60608101818360005b6003811015620006b757815160ff1683526020928301929091019060010162000693565b50505092915050565b80356001600160a01b0381168114620006d857600080fd5b919050565b600060608284031215620005f057600080fd5b600080604083850312156200070457600080fd5b6200070f83620006c0565b9150602083013567ffffffffffffffff8111156200072c57600080fd5b6200073a85828601620006dd565b9150509250929050565b634e487b7160e01b600052602160045260246000fd5b60008151600381106200077d57634e487b7160e01b600052602160045260246000fd5b8352506020818101516001600160a01b0390811691840191909152604080830151821690840152606080830151909116908301526080908101519082015260a00190565b6020808252825182820181905260009190848201906040850190845b818110156200080257620007f38385516200075a565b938501939250600101620007dd565b50909695505050505050565b6000806000606084860312156200082457600080fd5b6200082f84620006c0565b9250602084013561ffff811681146200084757600080fd5b9150604084013567ffffffffffffffff8111156200086457600080fd5b6200087286828701620006dd565b9150509250925092565b6000815180845260005b81811015620008a45760208185018101518683018201520162000886565b506000602082860101526020601f19601f83011685010191505092915050565b805160408084528151908401819052600091602091908201906060860190845b818110156200090b5783516001600160a01b031683529284019291840191600101620008e4565b50508483015186820387850152805180835290840192506000918401905b8083101562000952576200093f8285516200075a565b9150848401935060018301925062000929565b509695505050505050565b6040815260006200097260408301856200087c565b8281036020840152620009868185620008c4565b95945050505050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215620009b957600080fd5b620009c483620006c0565b9150602083013567ffffffffffffffff80821115620009e257600080fd5b818501915085601f830112620009f757600080fd5b81358181111562000a0c5762000a0c6200098f565b604051601f8201601f19908116603f0116810190838211818310171562000a375762000a376200098f565b8160405282815288602084870101111562000a5157600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6001600160a01b038316815260406020820152600062000a976040830184620008c4565b949350505050565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0382811682821603908082111562000ad85762000ad862000a9f565b5092915050565b634e487b7160e01b600052603260045260246000fd5b60006001600160a01b0380831681810362000b145762000b1462000a9f565b6001019392505050565b6001600160a01b038316815260406020820152600062000a9760408301846200087c56fe60806040526040516106fe3803806106fe83398101604081905261002291610319565b61002e82826000610035565b5050610436565b61003e8361006b565b60008251118061004b5750805b156100665761006483836100ab60201b6100291760201c565b505b505050565b610074816100d7565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606100d083836040518060600160405280602781526020016106d7602791396101a9565b9392505050565b6100ea8161022260201b6100551760201c565b6101515760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b806101887f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61023160201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6060600080856001600160a01b0316856040516101c691906103e7565b600060405180830381855af49150503d8060008114610201576040519150601f19603f3d011682016040523d82523d6000602084013e610206565b606091505b50909250905061021886838387610234565b9695505050505050565b6001600160a01b03163b151590565b90565b606083156102a357825160000361029c576001600160a01b0385163b61029c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610148565b50816102ad565b6102ad83836102b5565b949350505050565b8151156102c55781518083602001fd5b8060405162461bcd60e51b81526004016101489190610403565b634e487b7160e01b600052604160045260246000fd5b60005b838110156103105781810151838201526020016102f8565b50506000910152565b6000806040838503121561032c57600080fd5b82516001600160a01b038116811461034357600080fd5b60208401519092506001600160401b038082111561036057600080fd5b818501915085601f83011261037457600080fd5b815181811115610386576103866102df565b604051601f8201601f19908116603f011681019083821181831017156103ae576103ae6102df565b816040528281528860208487010111156103c757600080fd5b6103d88360208301602088016102f5565b80955050505050509250929050565b600082516103f98184602087016102f5565b9190910192915050565b60208152600082518060208401526104228160408501602087016102f5565b601f01601f19169190910160400192915050565b610292806104456000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b61009f565b565b606061004e838360405180606001604052806027815260200161025f602791396100c3565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e8080156100be573d6000f35b3d6000fd5b6060600080856001600160a01b0316856040516100e0919061020f565b600060405180830381855af49150503d806000811461011b576040519150601f19603f3d011682016040523d82523d6000602084013e610120565b606091505b50915091506101318683838761013b565b9695505050505050565b606083156101af5782516000036101a8576001600160a01b0385163b6101a85760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b50816101b9565b6101b983836101c1565b949350505050565b8151156101d15781518083602001fd5b8060405162461bcd60e51b815260040161019f919061022b565b60005b838110156102065781810151838201526020016101ee565b50506000910152565b600082516102218184602087016101eb565b9190910192915050565b602081526000825180602084015261024a8160408501602087016101eb565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a60a06040523060805234801561001457600080fd5b5061001d610022565b6100e1565b600054610100900460ff161561008e5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116146100df576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6080516112d961011860003960008181610479015281816104fe015281816105f401528181610679015261076301526112d96000f3fe6080604052600436106100e85760003560e01c806352d1902d1161008a578063c4d66de811610059578063c4d66de814610256578063c9c4bfca14610276578063d4b83992146102aa578063efe51cca146102ca57600080fd5b806352d1902d146101e75780635c60da1b1461020a5780636accab8c1461021f578063776d1a011461023657600080fd5b80633659cfe6116100c65780633659cfe6146101665780634162169f1461018657806341de6830146101b85780634f1ef286146101d457600080fd5b806301ffc9a7146100ed578063039a8c50146101225780632ae9c60014610144575b600080fd5b3480156100f957600080fd5b5061010d610108366004610fed565b6102e1565b60405190151581526020015b60405180910390f35b34801561012e57600080fd5b5061014261013d366004611017565b61034d565b005b34801561015057600080fd5b50610159610445565b604051610119919061103b565b34801561017257600080fd5b50610142610181366004611084565b61046f565b34801561019257600080fd5b5060c9546001600160a01b03165b6040516001600160a01b039091168152602001610119565b3480156101c457600080fd5b50600060405161011991906110a1565b6101426101e23660046110df565b6105ea565b3480156101f357600080fd5b506101fc610756565b604051908152602001610119565b34801561021657600080fd5b506101a061081b565b34801561022b57600080fd5b506101fc61012d5481565b34801561024257600080fd5b50610142610251366004611084565b610853565b34801561026257600080fd5b50610142610271366004611084565b6108b2565b34801561028257600080fd5b506101fc7f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f581565b3480156102b657600080fd5b5060fb546101a0906001600160a01b031681565b3480156102d657600080fd5b506101fc61012e5481565b60006001600160e01b0319821663041de68360e41b148061031157506001600160e01b03198216621574e360e91b145b8061032c57506001600160e01b031982166352d1902d60e01b145b8061034757506301ffc9a760e01b6001600160e01b03198316145b92915050565b600054600290610100900460ff1615801561036f575060005460ff8083169116105b6103d75760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805461ffff191660ff831617610100179055600261ffff831610156103ff57600261012e555b6000805461ff001916905560405160ff821681527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b61044d610fcf565b5060408051606081018252600181526004602082015260009181019190915290565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036104fc5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b60648201526084016103ce565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166105577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b0316146105c25760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b60648201526084016103ce565b6105cb8161099e565b604080516000808252602082019092526105e7918391906109db565b50565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036106775760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b60648201526084016103ce565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166106d27f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b03161461073d5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b60648201526084016103ce565b6107468261099e565b610752828260016109db565b5050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146107f65760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016103ce565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b600061084e7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b60fb80546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d690600090a35050565b600054600290610100900460ff161580156108d4575060005460ff8083169116105b6109375760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016103ce565b6000805461ffff191660ff83161761010017905561095482610b80565b600161012d55600261012e556000805461ff001916905560405160ff821681527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602001610439565b60c9547f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f590610752906001600160a01b0316303384600036610bf4565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610a1357610a0e83610cb0565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610a6d575060408051601f3d908101601f19168201909252610a6a918101906111a3565b60015b610adf5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201527f6f6e206973206e6f74205555505300000000000000000000000000000000000060648201526084016103ce565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114610b745760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f7860448201527f6961626c6555554944000000000000000000000000000000000000000000000060648201526084016103ce565b50610a0e838383610d7b565b600054610100900460ff16610beb5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103ce565b6105e781610da6565b604051637ef7c88360e11b81526001600160a01b0387169063fdef910690610c2890889088908890889088906004016111bc565b602060405180830381865afa158015610c45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c699190611210565b610ca857604051630cb6f8ed60e21b81526001600160a01b038088166004830152808716602483015285166044820152606481018490526084016103ce565b505050505050565b6001600160a01b0381163b610d2d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e74726163740000000000000000000000000000000000000060648201526084016103ce565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610d8483610e40565b600082511180610d915750805b15610a0e57610da08383610e80565b50505050565b600054610100900460ff16610e115760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103ce565b60c9805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610e4981610cb0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060610ea583836040518060600160405280602781526020016112a660279139610eac565b9392505050565b6060600080856001600160a01b031685604051610ec99190611256565b600060405180830381855af49150503d8060008114610f04576040519150601f19603f3d011682016040523d82523d6000602084013e610f09565b606091505b5091509150610f1a86838387610f24565b9695505050505050565b60608315610f93578251600003610f8c576001600160a01b0385163b610f8c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016103ce565b5081610f9d565b610f9d8383610fa5565b949350505050565b815115610fb55781518083602001fd5b8060405162461bcd60e51b81526004016103ce9190611272565b60405180606001604052806003906020820280368337509192915050565b600060208284031215610fff57600080fd5b81356001600160e01b031981168114610ea557600080fd5b60006020828403121561102957600080fd5b813561ffff81168114610ea557600080fd5b60608101818360005b600381101561106657815160ff16835260209283019290910190600101611044565b50505092915050565b6001600160a01b03811681146105e757600080fd5b60006020828403121561109657600080fd5b8135610ea58161106f565b60208101600383106110c357634e487b7160e01b600052602160045260246000fd5b91905290565b634e487b7160e01b600052604160045260246000fd5b600080604083850312156110f257600080fd5b82356110fd8161106f565b9150602083013567ffffffffffffffff8082111561111a57600080fd5b818501915085601f83011261112e57600080fd5b813581811115611140576111406110c9565b604051601f8201601f19908116603f01168101908382118183101715611168576111686110c9565b8160405282815288602084870101111561118157600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6000602082840312156111b557600080fd5b5051919050565b60006001600160a01b03808816835280871660208401525084604083015260806060830152826080830152828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b60006020828403121561122257600080fd5b81518015158114610ea557600080fd5b60005b8381101561124d578181015183820152602001611235565b50506000910152565b60008251611268818460208701611232565b9190910192915050565b6020815260008251806020840152611291816040850160208701611232565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a", - "deployedBytecode": "0x60806040523480156200001157600080fd5b50600436106200007b5760003560e01c80639cb0a12411620000565780639cb0a12414620000fd578063a8a9c29e1462000123578063f10832f1146200014a57600080fd5b806301ffc9a714620000805780632ae9c60014620000ac5780635c60da1b14620000c5575b600080fd5b62000097620000913660046200065e565b62000171565b60405190151581526020015b60405180910390f35b620000b6620001c4565b604051620000a391906200068a565b6040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152602001620000a3565b620001146200010e366004620006f0565b620001f0565b604051620000a39190620007c1565b6200013a620001343660046200080e565b62000209565b604051620000a39291906200095d565b620001616200015b366004620009a5565b620002b5565b604051620000a392919062000a73565b60006001600160e01b0319821663099718b560e41b1480620001a257506001600160e01b03198216621574e360e91b145b80620001be57506301ffc9a760e01b6001600160e01b03198316145b92915050565b620001ce62000632565b5060408051606081018252600181526004602082015260009181019190915290565b60606200020260006002600162000399565b9392505050565b606062000229604051806040016040528060608152602001606081525090565b8361ffff16600103620002ad5762000242600262000532565b815260405161ffff8516602482015260440160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166239a8c560e41b1790529150620002a761ffff85166002600062000399565b60208201525b935093915050565b6000620002d5604051806040016040528060608152602001606081525090565b6040516001600160a01b038516602482015260009060440160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663189acdbd60e31b17905290506200036b816200035b7f000000000000000000000000000000000000000000000000000000000000000090565b6001600160a01b031690620005f6565b925062000379600262000532565b82526200038a600060028162000399565b60208301525090939092509050565b6060826001600160a01b0316846001600160a01b03161115620003cf57604051633a4013cd60e21b815260040160405180910390fd5b620003db848462000ab5565b6001600160a01b031667ffffffffffffffff811115620003ff57620003ff6200098f565b6040519080825280602002602001820160405280156200045a57816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282526000199092019101816200041e5790505b509050835b836001600160a01b0316816001600160a01b031610156200052a576040518060a001604052808460028111156200049a576200049a62000744565b81526001600160a01b038316602082018190526040820152600060608201527fa280eec51ab8e1bc4b6b0c1b7f1bde785761b787a49db404e3e9338ed9b016ef60809091015282620004ed878462000ab5565b6001600160a01b03168151811062000509576200050962000adf565b60200260200101819052508080620005219062000af5565b9150506200045f565b509392505050565b6060816001600160a01b031667ffffffffffffffff8111156200055957620005596200098f565b60405190808252806020026020018201604052801562000583578160200160208202803683370190505b50905060005b826001600160a01b0316816001600160a01b03161015620005f0578082826001600160a01b031681518110620005c357620005c362000adf565b6001600160a01b039092166020928302919091019091015280620005e78162000af5565b91505062000589565b50919050565b60008282604051620006089062000650565b6200061592919062000b1e565b604051809103906000f0801580156200052a573d6000803e3d6000fd5b60405180606001604052806003906020820280368337509192915050565b6106fe8062000b4383390190565b6000602082840312156200067157600080fd5b81356001600160e01b0319811681146200020257600080fd5b60608101818360005b6003811015620006b757815160ff1683526020928301929091019060010162000693565b50505092915050565b80356001600160a01b0381168114620006d857600080fd5b919050565b600060608284031215620005f057600080fd5b600080604083850312156200070457600080fd5b6200070f83620006c0565b9150602083013567ffffffffffffffff8111156200072c57600080fd5b6200073a85828601620006dd565b9150509250929050565b634e487b7160e01b600052602160045260246000fd5b60008151600381106200077d57634e487b7160e01b600052602160045260246000fd5b8352506020818101516001600160a01b0390811691840191909152604080830151821690840152606080830151909116908301526080908101519082015260a00190565b6020808252825182820181905260009190848201906040850190845b818110156200080257620007f38385516200075a565b938501939250600101620007dd565b50909695505050505050565b6000806000606084860312156200082457600080fd5b6200082f84620006c0565b9250602084013561ffff811681146200084757600080fd5b9150604084013567ffffffffffffffff8111156200086457600080fd5b6200087286828701620006dd565b9150509250925092565b6000815180845260005b81811015620008a45760208185018101518683018201520162000886565b506000602082860101526020601f19601f83011685010191505092915050565b805160408084528151908401819052600091602091908201906060860190845b818110156200090b5783516001600160a01b031683529284019291840191600101620008e4565b50508483015186820387850152805180835290840192506000918401905b8083101562000952576200093f8285516200075a565b9150848401935060018301925062000929565b509695505050505050565b6040815260006200097260408301856200087c565b8281036020840152620009868185620008c4565b95945050505050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215620009b957600080fd5b620009c483620006c0565b9150602083013567ffffffffffffffff80821115620009e257600080fd5b818501915085601f830112620009f757600080fd5b81358181111562000a0c5762000a0c6200098f565b604051601f8201601f19908116603f0116810190838211818310171562000a375762000a376200098f565b8160405282815288602084870101111562000a5157600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6001600160a01b038316815260406020820152600062000a976040830184620008c4565b949350505050565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0382811682821603908082111562000ad85762000ad862000a9f565b5092915050565b634e487b7160e01b600052603260045260246000fd5b60006001600160a01b0380831681810362000b145762000b1462000a9f565b6001019392505050565b6001600160a01b038316815260406020820152600062000a9760408301846200087c56fe60806040526040516106fe3803806106fe83398101604081905261002291610319565b61002e82826000610035565b5050610436565b61003e8361006b565b60008251118061004b5750805b156100665761006483836100ab60201b6100291760201c565b505b505050565b610074816100d7565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606100d083836040518060600160405280602781526020016106d7602791396101a9565b9392505050565b6100ea8161022260201b6100551760201c565b6101515760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b806101887f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61023160201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6060600080856001600160a01b0316856040516101c691906103e7565b600060405180830381855af49150503d8060008114610201576040519150601f19603f3d011682016040523d82523d6000602084013e610206565b606091505b50909250905061021886838387610234565b9695505050505050565b6001600160a01b03163b151590565b90565b606083156102a357825160000361029c576001600160a01b0385163b61029c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610148565b50816102ad565b6102ad83836102b5565b949350505050565b8151156102c55781518083602001fd5b8060405162461bcd60e51b81526004016101489190610403565b634e487b7160e01b600052604160045260246000fd5b60005b838110156103105781810151838201526020016102f8565b50506000910152565b6000806040838503121561032c57600080fd5b82516001600160a01b038116811461034357600080fd5b60208401519092506001600160401b038082111561036057600080fd5b818501915085601f83011261037457600080fd5b815181811115610386576103866102df565b604051601f8201601f19908116603f011681019083821181831017156103ae576103ae6102df565b816040528281528860208487010111156103c757600080fd5b6103d88360208301602088016102f5565b80955050505050509250929050565b600082516103f98184602087016102f5565b9190910192915050565b60208152600082518060208401526104228160408501602087016102f5565b601f01601f19169190910160400192915050565b610292806104456000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b61009f565b565b606061004e838360405180606001604052806027815260200161025f602791396100c3565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e8080156100be573d6000f35b3d6000fd5b6060600080856001600160a01b0316856040516100e0919061020f565b600060405180830381855af49150503d806000811461011b576040519150601f19603f3d011682016040523d82523d6000602084013e610120565b606091505b50915091506101318683838761013b565b9695505050505050565b606083156101af5782516000036101a8576001600160a01b0385163b6101a85760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b50816101b9565b6101b983836101c1565b949350505050565b8151156101d15781518083602001fd5b8060405162461bcd60e51b815260040161019f919061022b565b60005b838110156102065781810151838201526020016101ee565b50506000910152565b600082516102218184602087016101eb565b9190910192915050565b602081526000825180602084015261024a8160408501602087016101eb565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/contracts/artifacts/src/mocks/plugin/PluginUUPSUpgradeableSetupMock.sol/PluginUUPSUpgradeableSetupMockBuild3.dbg.json b/contracts/artifacts/src/mocks/plugin/PluginUUPSUpgradeableSetupMock.sol/PluginUUPSUpgradeableSetupMockBuild3.dbg.json deleted file mode 100644 index 930fbb1d..00000000 --- a/contracts/artifacts/src/mocks/plugin/PluginUUPSUpgradeableSetupMock.sol/PluginUUPSUpgradeableSetupMockBuild3.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../build-info/9ac591806bb2e846e5a60f79d635058e.json" -} diff --git a/contracts/artifacts/src/mocks/plugin/PluginUUPSUpgradeableSetupMock.sol/PluginUUPSUpgradeableSetupMockBuild3.json b/contracts/artifacts/src/mocks/plugin/PluginUUPSUpgradeableSetupMock.sol/PluginUUPSUpgradeableSetupMockBuild3.json deleted file mode 100644 index d3f73ba4..00000000 --- a/contracts/artifacts/src/mocks/plugin/PluginUUPSUpgradeableSetupMock.sol/PluginUUPSUpgradeableSetupMockBuild3.json +++ /dev/null @@ -1,308 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "PluginUUPSUpgradeableSetupMockBuild3", - "sourceName": "src/mocks/plugin/PluginUUPSUpgradeableSetupMock.sol", - "abi": [ - { - "inputs": [], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "inputs": [], - "name": "ConflictingValues", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "uint16", - "name": "fromBuild", - "type": "uint16" - }, - { - "internalType": "uint16", - "name": "thisBuild", - "type": "uint16" - } - ], - "name": "InvalidUpdatePath", - "type": "error" - }, - { - "inputs": [], - "name": "implementation", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_dao", - "type": "address" - }, - { - "internalType": "bytes", - "name": "", - "type": "bytes" - } - ], - "name": "prepareInstallation", - "outputs": [ - { - "internalType": "address", - "name": "plugin", - "type": "address" - }, - { - "components": [ - { - "internalType": "address[]", - "name": "helpers", - "type": "address[]" - }, - { - "components": [ - { - "internalType": "enum PermissionLib.Operation", - "name": "operation", - "type": "uint8" - }, - { - "internalType": "address", - "name": "where", - "type": "address" - }, - { - "internalType": "address", - "name": "who", - "type": "address" - }, - { - "internalType": "address", - "name": "condition", - "type": "address" - }, - { - "internalType": "bytes32", - "name": "permissionId", - "type": "bytes32" - } - ], - "internalType": "struct PermissionLib.MultiTargetPermission[]", - "name": "permissions", - "type": "tuple[]" - } - ], - "internalType": "struct IPluginSetup.PreparedSetupData", - "name": "preparedSetupData", - "type": "tuple" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_dao", - "type": "address" - }, - { - "components": [ - { - "internalType": "address", - "name": "plugin", - "type": "address" - }, - { - "internalType": "address[]", - "name": "currentHelpers", - "type": "address[]" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "internalType": "struct IPluginSetup.SetupPayload", - "name": "_payload", - "type": "tuple" - } - ], - "name": "prepareUninstallation", - "outputs": [ - { - "components": [ - { - "internalType": "enum PermissionLib.Operation", - "name": "operation", - "type": "uint8" - }, - { - "internalType": "address", - "name": "where", - "type": "address" - }, - { - "internalType": "address", - "name": "who", - "type": "address" - }, - { - "internalType": "address", - "name": "condition", - "type": "address" - }, - { - "internalType": "bytes32", - "name": "permissionId", - "type": "bytes32" - } - ], - "internalType": "struct PermissionLib.MultiTargetPermission[]", - "name": "permissions", - "type": "tuple[]" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_dao", - "type": "address" - }, - { - "internalType": "uint16", - "name": "_fromBuild", - "type": "uint16" - }, - { - "components": [ - { - "internalType": "address", - "name": "plugin", - "type": "address" - }, - { - "internalType": "address[]", - "name": "currentHelpers", - "type": "address[]" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "internalType": "struct IPluginSetup.SetupPayload", - "name": "_payload", - "type": "tuple" - } - ], - "name": "prepareUpdate", - "outputs": [ - { - "internalType": "bytes", - "name": "initData", - "type": "bytes" - }, - { - "components": [ - { - "internalType": "address[]", - "name": "helpers", - "type": "address[]" - }, - { - "components": [ - { - "internalType": "enum PermissionLib.Operation", - "name": "operation", - "type": "uint8" - }, - { - "internalType": "address", - "name": "where", - "type": "address" - }, - { - "internalType": "address", - "name": "who", - "type": "address" - }, - { - "internalType": "address", - "name": "condition", - "type": "address" - }, - { - "internalType": "bytes32", - "name": "permissionId", - "type": "bytes32" - } - ], - "internalType": "struct PermissionLib.MultiTargetPermission[]", - "name": "permissions", - "type": "tuple[]" - } - ], - "internalType": "struct IPluginSetup.PreparedSetupData", - "name": "preparedSetupData", - "type": "tuple" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [], - "name": "protocolVersion", - "outputs": [ - { - "internalType": "uint8[3]", - "name": "", - "type": "uint8[3]" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes4", - "name": "_interfaceId", - "type": "bytes4" - } - ], - "name": "supportsInterface", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - } - ], - "bytecode": "0x60a060405234801561001057600080fd5b5060405161001d9061004b565b604051809103906000f080158015610039573d6000803e3d6000fd5b506001600160a01b0316608052610058565b61142d8061130b83390190565b6080516112926100796000396000818160d2015261037e01526112926000f3fe60806040523480156200001157600080fd5b50600436106200007b5760003560e01c80639cb0a12411620000565780639cb0a12414620000fd578063a8a9c29e1462000123578063f10832f1146200014a57600080fd5b806301ffc9a714620000805780632ae9c60014620000ac5780635c60da1b14620000c5575b600080fd5b6200009762000091366004620006a3565b62000171565b60405190151581526020015b60405180910390f35b620000b6620001c4565b604051620000a39190620006cf565b6040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152602001620000a3565b620001146200010e36600462000735565b620001f0565b604051620000a3919062000806565b6200013a6200013436600462000853565b62000209565b604051620000a3929190620009a2565b620001616200015b366004620009ea565b6200030f565b604051620000a392919062000ab8565b60006001600160e01b0319821663099718b560e41b1480620001a257506001600160e01b03198216621574e360e91b145b80620001be57506301ffc9a760e01b6001600160e01b03198316145b92915050565b620001ce62000677565b5060408051606081018252600181526004602082015260009181019190915290565b606062000202600060036001620003de565b9392505050565b606062000229604051806040016040528060608152602001606081525090565b8361ffff16600103620002985762000242600362000577565b815260405161ffff8516602482015260440160408051601f198184030181529190526020810180516001600160e01b03166239a8c560e41b17905291506200029261ffff851660036000620003de565b60208201525b8361ffff166002036200030757620002b1600362000577565b815260405161ffff8516602482015260440160408051601f198184030181529190526020810180516001600160e01b03166239a8c560e41b17905291506200030161ffff851660036000620003de565b60208201525b935093915050565b60006200032f604051806040016040528060608152602001606081525090565b6040516001600160a01b038516602482015260009060440160408051601f198184030181529190526020810180516001600160e01b031663189acdbd60e31b1790529050620003b081620003a07f000000000000000000000000000000000000000000000000000000000000000090565b6001600160a01b0316906200063b565b9250620003be600362000577565b8252620003cf6000600381620003de565b60208301525090939092509050565b6060826001600160a01b0316846001600160a01b031611156200041457604051633a4013cd60e21b815260040160405180910390fd5b62000420848462000afa565b6001600160a01b031667ffffffffffffffff811115620004445762000444620009d4565b6040519080825280602002602001820160405280156200049f57816020015b6040805160a081018252600080825260208083018290529282018190526060820181905260808201528252600019909201910181620004635790505b509050835b836001600160a01b0316816001600160a01b031610156200056f576040518060a00160405280846002811115620004df57620004df62000789565b81526001600160a01b038316602082018190526040820152600060608201527fa280eec51ab8e1bc4b6b0c1b7f1bde785761b787a49db404e3e9338ed9b016ef6080909101528262000532878462000afa565b6001600160a01b0316815181106200054e576200054e62000b24565b60200260200101819052508080620005669062000b3a565b915050620004a4565b509392505050565b6060816001600160a01b031667ffffffffffffffff8111156200059e576200059e620009d4565b604051908082528060200260200182016040528015620005c8578160200160208202803683370190505b50905060005b826001600160a01b0316816001600160a01b0316101562000635578082826001600160a01b03168151811062000608576200060862000b24565b6001600160a01b0390921660209283029190910190910152806200062c8162000b3a565b915050620005ce565b50919050565b600082826040516200064d9062000695565b6200065a92919062000b63565b604051809103906000f0801580156200056f573d6000803e3d6000fd5b60405180606001604052806003906020820280368337509192915050565b6106fe8062000b8883390190565b600060208284031215620006b657600080fd5b81356001600160e01b0319811681146200020257600080fd5b60608101818360005b6003811015620006fc57815160ff16835260209283019290910190600101620006d8565b50505092915050565b80356001600160a01b03811681146200071d57600080fd5b919050565b6000606082840312156200063557600080fd5b600080604083850312156200074957600080fd5b620007548362000705565b9150602083013567ffffffffffffffff8111156200077157600080fd5b6200077f8582860162000722565b9150509250929050565b634e487b7160e01b600052602160045260246000fd5b6000815160038110620007c257634e487b7160e01b600052602160045260246000fd5b8352506020818101516001600160a01b0390811691840191909152604080830151821690840152606080830151909116908301526080908101519082015260a00190565b6020808252825182820181905260009190848201906040850190845b818110156200084757620008388385516200079f565b93850193925060010162000822565b50909695505050505050565b6000806000606084860312156200086957600080fd5b620008748462000705565b9250602084013561ffff811681146200088c57600080fd5b9150604084013567ffffffffffffffff811115620008a957600080fd5b620008b78682870162000722565b9150509250925092565b6000815180845260005b81811015620008e957602081850181015186830182015201620008cb565b506000602082860101526020601f19601f83011685010191505092915050565b805160408084528151908401819052600091602091908201906060860190845b81811015620009505783516001600160a01b03168352928401929184019160010162000929565b50508483015186820387850152805180835290840192506000918401905b808310156200099757620009848285516200079f565b915084840193506001830192506200096e565b509695505050505050565b604081526000620009b76040830185620008c1565b8281036020840152620009cb818562000909565b95945050505050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215620009fe57600080fd5b62000a098362000705565b9150602083013567ffffffffffffffff8082111562000a2757600080fd5b818501915085601f83011262000a3c57600080fd5b81358181111562000a515762000a51620009d4565b604051601f8201601f19908116603f0116810190838211818310171562000a7c5762000a7c620009d4565b8160405282815288602084870101111562000a9657600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6001600160a01b038316815260406020820152600062000adc604083018462000909565b949350505050565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0382811682821603908082111562000b1d5762000b1d62000ae4565b5092915050565b634e487b7160e01b600052603260045260246000fd5b60006001600160a01b0380831681810362000b595762000b5962000ae4565b6001019392505050565b6001600160a01b038316815260406020820152600062000adc6040830184620008c156fe60806040526040516106fe3803806106fe83398101604081905261002291610319565b61002e82826000610035565b5050610436565b61003e8361006b565b60008251118061004b5750805b156100665761006483836100ab60201b6100291760201c565b505b505050565b610074816100d7565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606100d083836040518060600160405280602781526020016106d7602791396101a9565b9392505050565b6100ea8161022260201b6100551760201c565b6101515760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b806101887f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61023160201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6060600080856001600160a01b0316856040516101c691906103e7565b600060405180830381855af49150503d8060008114610201576040519150601f19603f3d011682016040523d82523d6000602084013e610206565b606091505b50909250905061021886838387610234565b9695505050505050565b6001600160a01b03163b151590565b90565b606083156102a357825160000361029c576001600160a01b0385163b61029c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610148565b50816102ad565b6102ad83836102b5565b949350505050565b8151156102c55781518083602001fd5b8060405162461bcd60e51b81526004016101489190610403565b634e487b7160e01b600052604160045260246000fd5b60005b838110156103105781810151838201526020016102f8565b50506000910152565b6000806040838503121561032c57600080fd5b82516001600160a01b038116811461034357600080fd5b60208401519092506001600160401b038082111561036057600080fd5b818501915085601f83011261037457600080fd5b815181811115610386576103866102df565b604051601f8201601f19908116603f011681019083821181831017156103ae576103ae6102df565b816040528281528860208487010111156103c757600080fd5b6103d88360208301602088016102f5565b80955050505050509250929050565b600082516103f98184602087016102f5565b9190910192915050565b60208152600082518060208401526104228160408501602087016102f5565b601f01601f19169190910160400192915050565b610292806104456000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b61009f565b565b606061004e838360405180606001604052806027815260200161025f602791396100c3565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e8080156100be573d6000f35b3d6000fd5b6060600080856001600160a01b0316856040516100e0919061020f565b600060405180830381855af49150503d806000811461011b576040519150601f19603f3d011682016040523d82523d6000602084013e610120565b606091505b50915091506101318683838761013b565b9695505050505050565b606083156101af5782516000036101a8576001600160a01b0385163b6101a85760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b50816101b9565b6101b983836101c1565b949350505050565b8151156101d15781518083602001fd5b8060405162461bcd60e51b815260040161019f919061022b565b60005b838110156102065781810151838201526020016101ee565b50506000910152565b600082516102218184602087016101eb565b9190910192915050565b602081526000825180602084015261024a8160408501602087016101eb565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a60a06040523060805234801561001457600080fd5b5061001d610022565b6100e1565b600054610100900460ff161561008e5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116146100df576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b608051611315610118600039600081816104af015281816105340152818161062a015281816106af015261079901526113156000f3fe6080604052600436106100f35760003560e01c806352d1902d1161008a578063c4d66de811610059578063c4d66de814610278578063c9c4bfca14610298578063d4b83992146102cc578063efe51cca146102ec57600080fd5b806352d1902d146102175780635c60da1b1461022c5780636accab8c14610241578063776d1a011461025857600080fd5b80633659cfe6116100c65780633659cfe6146101965780634162169f146101b657806341de6830146101e85780634f1ef2861461020457600080fd5b806301ffc9a7146100f8578063039a8c501461012d5780632491118d1461014f5780632ae9c60014610174575b600080fd5b34801561010457600080fd5b50610118610113366004611029565b610303565b60405190151581526020015b60405180910390f35b34801561013957600080fd5b5061014d610148366004611053565b61036f565b005b34801561015b57600080fd5b5061016661012f5481565b604051908152602001610124565b34801561018057600080fd5b5061018961047b565b6040516101249190611077565b3480156101a257600080fd5b5061014d6101b13660046110c0565b6104a5565b3480156101c257600080fd5b5060c9546001600160a01b03165b6040516001600160a01b039091168152602001610124565b3480156101f457600080fd5b50600060405161012491906110dd565b61014d61021236600461111b565b610620565b34801561022357600080fd5b5061016661078c565b34801561023857600080fd5b506101d0610851565b34801561024d57600080fd5b5061016661012d5481565b34801561026457600080fd5b5061014d6102733660046110c0565b610889565b34801561028457600080fd5b5061014d6102933660046110c0565b6108e8565b3480156102a457600080fd5b506101667f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f581565b3480156102d857600080fd5b5060fb546101d0906001600160a01b031681565b3480156102f857600080fd5b5061016661012e5481565b60006001600160e01b0319821663041de68360e41b148061033357506001600160e01b03198216621574e360e91b145b8061034e57506001600160e01b031982166352d1902d60e01b145b8061036957506301ffc9a760e01b6001600160e01b03198316145b92915050565b600054600390610100900460ff16158015610391575060005460ff8083169116105b6103f95760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805461ffff191660ff831617610100179055600261ffff8316101561042157600261012e555b60038261ffff16101561043557600361012f555b6000805461ff001916905560405160ff821681527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b61048361100b565b5060408051606081018252600181526004602082015260009181019190915290565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036105325760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b60648201526084016103f0565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661058d7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b0316146105f85760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b60648201526084016103f0565b610601816109da565b6040805160008082526020820190925261061d91839190610a17565b50565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036106ad5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b60648201526084016103f0565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166107087f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b0316146107735760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b60648201526084016103f0565b61077c826109da565b61078882826001610a17565b5050565b6000306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461082c5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016103f0565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b60006108847f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b60fb80546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d690600090a35050565b600054600390610100900460ff1615801561090a575060005460ff8083169116105b61096d5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016103f0565b6000805461ffff191660ff83161761010017905561098a82610bbc565b600161012d55600261012e55600361012f556000805461ff001916905560405160ff821681527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200161046f565b60c9547f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f590610788906001600160a01b0316303384600036610c30565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610a4f57610a4a83610cec565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610aa9575060408051601f3d908101601f19168201909252610aa6918101906111df565b60015b610b1b5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201527f6f6e206973206e6f74205555505300000000000000000000000000000000000060648201526084016103f0565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114610bb05760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f7860448201527f6961626c6555554944000000000000000000000000000000000000000000000060648201526084016103f0565b50610a4a838383610db7565b600054610100900460ff16610c275760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103f0565b61061d81610de2565b604051637ef7c88360e11b81526001600160a01b0387169063fdef910690610c6490889088908890889088906004016111f8565b602060405180830381865afa158015610c81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca5919061124c565b610ce457604051630cb6f8ed60e21b81526001600160a01b038088166004830152808716602483015285166044820152606481018490526084016103f0565b505050505050565b6001600160a01b0381163b610d695760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e74726163740000000000000000000000000000000000000060648201526084016103f0565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610dc083610e7c565b600082511180610dcd5750805b15610a4a57610ddc8383610ebc565b50505050565b600054610100900460ff16610e4d5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103f0565b60c9805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610e8581610cec565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060610ee183836040518060600160405280602781526020016112e260279139610ee8565b9392505050565b6060600080856001600160a01b031685604051610f059190611292565b600060405180830381855af49150503d8060008114610f40576040519150601f19603f3d011682016040523d82523d6000602084013e610f45565b606091505b5091509150610f5686838387610f60565b9695505050505050565b60608315610fcf578251600003610fc8576001600160a01b0385163b610fc85760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016103f0565b5081610fd9565b610fd98383610fe1565b949350505050565b815115610ff15781518083602001fd5b8060405162461bcd60e51b81526004016103f091906112ae565b60405180606001604052806003906020820280368337509192915050565b60006020828403121561103b57600080fd5b81356001600160e01b031981168114610ee157600080fd5b60006020828403121561106557600080fd5b813561ffff81168114610ee157600080fd5b60608101818360005b60038110156110a257815160ff16835260209283019290910190600101611080565b50505092915050565b6001600160a01b038116811461061d57600080fd5b6000602082840312156110d257600080fd5b8135610ee1816110ab565b60208101600383106110ff57634e487b7160e01b600052602160045260246000fd5b91905290565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561112e57600080fd5b8235611139816110ab565b9150602083013567ffffffffffffffff8082111561115657600080fd5b818501915085601f83011261116a57600080fd5b81358181111561117c5761117c611105565b604051601f8201601f19908116603f011681019083821181831017156111a4576111a4611105565b816040528281528860208487010111156111bd57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6000602082840312156111f157600080fd5b5051919050565b60006001600160a01b03808816835280871660208401525084604083015260806060830152826080830152828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b60006020828403121561125e57600080fd5b81518015158114610ee157600080fd5b60005b83811015611289578181015183820152602001611271565b50506000910152565b600082516112a481846020870161126e565b9190910192915050565b60208152600082518060208401526112cd81604085016020870161126e565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a", - "deployedBytecode": "0x60806040523480156200001157600080fd5b50600436106200007b5760003560e01c80639cb0a12411620000565780639cb0a12414620000fd578063a8a9c29e1462000123578063f10832f1146200014a57600080fd5b806301ffc9a714620000805780632ae9c60014620000ac5780635c60da1b14620000c5575b600080fd5b6200009762000091366004620006a3565b62000171565b60405190151581526020015b60405180910390f35b620000b6620001c4565b604051620000a39190620006cf565b6040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152602001620000a3565b620001146200010e36600462000735565b620001f0565b604051620000a3919062000806565b6200013a6200013436600462000853565b62000209565b604051620000a3929190620009a2565b620001616200015b366004620009ea565b6200030f565b604051620000a392919062000ab8565b60006001600160e01b0319821663099718b560e41b1480620001a257506001600160e01b03198216621574e360e91b145b80620001be57506301ffc9a760e01b6001600160e01b03198316145b92915050565b620001ce62000677565b5060408051606081018252600181526004602082015260009181019190915290565b606062000202600060036001620003de565b9392505050565b606062000229604051806040016040528060608152602001606081525090565b8361ffff16600103620002985762000242600362000577565b815260405161ffff8516602482015260440160408051601f198184030181529190526020810180516001600160e01b03166239a8c560e41b17905291506200029261ffff851660036000620003de565b60208201525b8361ffff166002036200030757620002b1600362000577565b815260405161ffff8516602482015260440160408051601f198184030181529190526020810180516001600160e01b03166239a8c560e41b17905291506200030161ffff851660036000620003de565b60208201525b935093915050565b60006200032f604051806040016040528060608152602001606081525090565b6040516001600160a01b038516602482015260009060440160408051601f198184030181529190526020810180516001600160e01b031663189acdbd60e31b1790529050620003b081620003a07f000000000000000000000000000000000000000000000000000000000000000090565b6001600160a01b0316906200063b565b9250620003be600362000577565b8252620003cf6000600381620003de565b60208301525090939092509050565b6060826001600160a01b0316846001600160a01b031611156200041457604051633a4013cd60e21b815260040160405180910390fd5b62000420848462000afa565b6001600160a01b031667ffffffffffffffff811115620004445762000444620009d4565b6040519080825280602002602001820160405280156200049f57816020015b6040805160a081018252600080825260208083018290529282018190526060820181905260808201528252600019909201910181620004635790505b509050835b836001600160a01b0316816001600160a01b031610156200056f576040518060a00160405280846002811115620004df57620004df62000789565b81526001600160a01b038316602082018190526040820152600060608201527fa280eec51ab8e1bc4b6b0c1b7f1bde785761b787a49db404e3e9338ed9b016ef6080909101528262000532878462000afa565b6001600160a01b0316815181106200054e576200054e62000b24565b60200260200101819052508080620005669062000b3a565b915050620004a4565b509392505050565b6060816001600160a01b031667ffffffffffffffff8111156200059e576200059e620009d4565b604051908082528060200260200182016040528015620005c8578160200160208202803683370190505b50905060005b826001600160a01b0316816001600160a01b0316101562000635578082826001600160a01b03168151811062000608576200060862000b24565b6001600160a01b0390921660209283029190910190910152806200062c8162000b3a565b915050620005ce565b50919050565b600082826040516200064d9062000695565b6200065a92919062000b63565b604051809103906000f0801580156200056f573d6000803e3d6000fd5b60405180606001604052806003906020820280368337509192915050565b6106fe8062000b8883390190565b600060208284031215620006b657600080fd5b81356001600160e01b0319811681146200020257600080fd5b60608101818360005b6003811015620006fc57815160ff16835260209283019290910190600101620006d8565b50505092915050565b80356001600160a01b03811681146200071d57600080fd5b919050565b6000606082840312156200063557600080fd5b600080604083850312156200074957600080fd5b620007548362000705565b9150602083013567ffffffffffffffff8111156200077157600080fd5b6200077f8582860162000722565b9150509250929050565b634e487b7160e01b600052602160045260246000fd5b6000815160038110620007c257634e487b7160e01b600052602160045260246000fd5b8352506020818101516001600160a01b0390811691840191909152604080830151821690840152606080830151909116908301526080908101519082015260a00190565b6020808252825182820181905260009190848201906040850190845b818110156200084757620008388385516200079f565b93850193925060010162000822565b50909695505050505050565b6000806000606084860312156200086957600080fd5b620008748462000705565b9250602084013561ffff811681146200088c57600080fd5b9150604084013567ffffffffffffffff811115620008a957600080fd5b620008b78682870162000722565b9150509250925092565b6000815180845260005b81811015620008e957602081850181015186830182015201620008cb565b506000602082860101526020601f19601f83011685010191505092915050565b805160408084528151908401819052600091602091908201906060860190845b81811015620009505783516001600160a01b03168352928401929184019160010162000929565b50508483015186820387850152805180835290840192506000918401905b808310156200099757620009848285516200079f565b915084840193506001830192506200096e565b509695505050505050565b604081526000620009b76040830185620008c1565b8281036020840152620009cb818562000909565b95945050505050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215620009fe57600080fd5b62000a098362000705565b9150602083013567ffffffffffffffff8082111562000a2757600080fd5b818501915085601f83011262000a3c57600080fd5b81358181111562000a515762000a51620009d4565b604051601f8201601f19908116603f0116810190838211818310171562000a7c5762000a7c620009d4565b8160405282815288602084870101111562000a9657600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6001600160a01b038316815260406020820152600062000adc604083018462000909565b949350505050565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0382811682821603908082111562000b1d5762000b1d62000ae4565b5092915050565b634e487b7160e01b600052603260045260246000fd5b60006001600160a01b0380831681810362000b595762000b5962000ae4565b6001019392505050565b6001600160a01b038316815260406020820152600062000adc6040830184620008c156fe60806040526040516106fe3803806106fe83398101604081905261002291610319565b61002e82826000610035565b5050610436565b61003e8361006b565b60008251118061004b5750805b156100665761006483836100ab60201b6100291760201c565b505b505050565b610074816100d7565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606100d083836040518060600160405280602781526020016106d7602791396101a9565b9392505050565b6100ea8161022260201b6100551760201c565b6101515760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b806101887f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61023160201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6060600080856001600160a01b0316856040516101c691906103e7565b600060405180830381855af49150503d8060008114610201576040519150601f19603f3d011682016040523d82523d6000602084013e610206565b606091505b50909250905061021886838387610234565b9695505050505050565b6001600160a01b03163b151590565b90565b606083156102a357825160000361029c576001600160a01b0385163b61029c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610148565b50816102ad565b6102ad83836102b5565b949350505050565b8151156102c55781518083602001fd5b8060405162461bcd60e51b81526004016101489190610403565b634e487b7160e01b600052604160045260246000fd5b60005b838110156103105781810151838201526020016102f8565b50506000910152565b6000806040838503121561032c57600080fd5b82516001600160a01b038116811461034357600080fd5b60208401519092506001600160401b038082111561036057600080fd5b818501915085601f83011261037457600080fd5b815181811115610386576103866102df565b604051601f8201601f19908116603f011681019083821181831017156103ae576103ae6102df565b816040528281528860208487010111156103c757600080fd5b6103d88360208301602088016102f5565b80955050505050509250929050565b600082516103f98184602087016102f5565b9190910192915050565b60208152600082518060208401526104228160408501602087016102f5565b601f01601f19169190910160400192915050565b610292806104456000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b61009f565b565b606061004e838360405180606001604052806027815260200161025f602791396100c3565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e8080156100be573d6000f35b3d6000fd5b6060600080856001600160a01b0316856040516100e0919061020f565b600060405180830381855af49150503d806000811461011b576040519150601f19603f3d011682016040523d82523d6000602084013e610120565b606091505b50915091506101318683838761013b565b9695505050505050565b606083156101af5782516000036101a8576001600160a01b0385163b6101a85760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b50816101b9565b6101b983836101c1565b949350505050565b8151156101d15781518083602001fd5b8060405162461bcd60e51b815260040161019f919061022b565b60005b838110156102065781810151838201526020016101ee565b50506000910152565b600082516102218184602087016101eb565b9190910192915050565b602081526000825180602084015261024a8160408501602087016101eb565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/contracts/artifacts/src/mocks/plugin/extensions/governance/AddresslistMock.sol/AddresslistMock.dbg.json b/contracts/artifacts/src/mocks/plugin/extensions/governance/AddresslistMock.sol/AddresslistMock.dbg.json deleted file mode 100644 index c8024a50..00000000 --- a/contracts/artifacts/src/mocks/plugin/extensions/governance/AddresslistMock.sol/AddresslistMock.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" -} diff --git a/contracts/artifacts/src/mocks/plugin/extensions/governance/AddresslistMock.sol/AddresslistMock.json b/contracts/artifacts/src/mocks/plugin/extensions/governance/AddresslistMock.sol/AddresslistMock.json deleted file mode 100644 index 4f552f4b..00000000 --- a/contracts/artifacts/src/mocks/plugin/extensions/governance/AddresslistMock.sol/AddresslistMock.json +++ /dev/null @@ -1,123 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "AddresslistMock", - "sourceName": "src/mocks/plugin/extensions/governance/AddresslistMock.sol", - "abi": [ - { - "inputs": [ - { - "internalType": "address", - "name": "member", - "type": "address" - } - ], - "name": "InvalidAddresslistUpdate", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "address[]", - "name": "_newAddresses", - "type": "address[]" - } - ], - "name": "addAddresses", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "addresslistLength", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_blockNumber", - "type": "uint256" - } - ], - "name": "addresslistLengthAtBlock", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_account", - "type": "address" - } - ], - "name": "isListed", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_account", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_blockNumber", - "type": "uint256" - } - ], - "name": "isListedAtBlock", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address[]", - "name": "_exitingAddresses", - "type": "address[]" - } - ], - "name": "removeAddresses", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - } - ], - "bytecode": "0x608060405234801561001057600080fd5b50610905806100206000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c8063a84eb99911610050578063a84eb999146100ba578063b1bb8d26146100cd578063f794062e146100f057600080fd5b806327f1608d146100775780633628731c146100925780636a6b2d86146100a7575b600080fd5b61007f610103565b6040519081526020015b60405180910390f35b6100a56100a0366004610795565b61011d565b005b61007f6100b536600461080a565b61012b565b6100a56100c8366004610795565b61013e565b6100e06100db36600461083f565b610148565b6040519015158152602001610089565b6100e06100fe366004610869565b610174565b600061010f60016101a8565b6001600160e01b0316905090565b61012782826101f1565b5050565b60006101386001836102e9565b92915050565b610127828261039c565b6001600160a01b038216600090815260208190526040812061016a90836102e9565b6001149392505050565b6001600160a01b0381166000908152602081905260408120610195906101a8565b6001600160e01b03166001149050919050565b805460009080156101e7576101d0836101c260018461089a565b600091825260209091200190565b5464010000000090046001600160e01b03166101ea565b60005b9392505050565b60005b818110156102d457610226838383818110610211576102116108ad565b90506020020160208101906100fe9190610869565b1561027c5782828281811061023d5761023d6108ad565b90506020020160208101906102529190610869565b60405163c0b7477d60e01b81526001600160a01b0390911660048201526024015b60405180910390fd5b6102ca6001600080868686818110610296576102966108ad565b90506020020160208101906102ab9190610869565b6001600160a01b03168152602081019190915260400160002090610405565b50506001016101f4565b506102e360016104398361043d565b50505050565b600043821061033a5760405162461bcd60e51b815260206004820181905260248201527f436865636b706f696e74733a20626c6f636b206e6f7420796574206d696e65646044820152606401610273565b600061034583610475565b84549091506000610358868483856104f5565b905080156103865761036f866101c260018461089a565b5464010000000090046001600160e01b0316610389565b60005b6001600160e01b03169695505050505050565b60005b818110156103f6576103bc838383818110610211576102116108ad565b6103d25782828281811061023d5761023d6108ad565b6103ec6000806000868686818110610296576102966108ad565b505060010161039f565b506102e360016105538361043d565b6000806104238461041543610475565b61041e86610558565b6105d7565b6001600160e01b03918216969116945092505050565b0190565b60008061046885610463610450886101a8565b6001600160e01b0316868863ffffffff16565b610405565b915091505b935093915050565b600063ffffffff8211156104f15760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201527f32206269747300000000000000000000000000000000000000000000000000006064820152608401610273565b5090565b60005b8183101561054b57600061050c848461077a565b60008781526020902090915063ffffffff86169082015463ffffffff16111561053757809250610545565b6105428160016108c3565b93505b506104f8565b509392505050565b900390565b60006001600160e01b038211156104f15760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203260448201527f32342062697473000000000000000000000000000000000000000000000000006064820152608401610273565b8254600090819080156107205760006105f5876101c260018561089a565b60408051808201909152905463ffffffff8082168084526401000000009092046001600160e01b0316602084015291925090871610156106775760405162461bcd60e51b815260206004820152601b60248201527f436865636b706f696e743a2064656372656173696e67206b65797300000000006044820152606401610273565b805163ffffffff8088169116036106c05784610698886101c260018661089a565b80546001600160e01b03929092166401000000000263ffffffff909216919091179055610710565b6040805180820190915263ffffffff80881682526001600160e01b0380881660208085019182528b54600181018d5560008d81529190912094519151909216640100000000029216919091179101555b60200151925083915061046d9050565b50506040805180820190915263ffffffff80851682526001600160e01b0380851660208085019182528854600181018a5560008a81529182209551925190931664010000000002919093161792019190915590508161046d565b600061078960028484186108d6565b6101ea908484166108c3565b600080602083850312156107a857600080fd5b823567ffffffffffffffff808211156107c057600080fd5b818501915085601f8301126107d457600080fd5b8135818111156107e357600080fd5b8660208260051b85010111156107f857600080fd5b60209290920196919550909350505050565b60006020828403121561081c57600080fd5b5035919050565b80356001600160a01b038116811461083a57600080fd5b919050565b6000806040838503121561085257600080fd5b61085b83610823565b946020939093013593505050565b60006020828403121561087b57600080fd5b6101ea82610823565b634e487b7160e01b600052601160045260246000fd5b8181038181111561013857610138610884565b634e487b7160e01b600052603260045260246000fd5b8082018082111561013857610138610884565b6000826108f357634e487b7160e01b600052601260045260246000fd5b50049056fea164736f6c6343000811000a", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100725760003560e01c8063a84eb99911610050578063a84eb999146100ba578063b1bb8d26146100cd578063f794062e146100f057600080fd5b806327f1608d146100775780633628731c146100925780636a6b2d86146100a7575b600080fd5b61007f610103565b6040519081526020015b60405180910390f35b6100a56100a0366004610795565b61011d565b005b61007f6100b536600461080a565b61012b565b6100a56100c8366004610795565b61013e565b6100e06100db36600461083f565b610148565b6040519015158152602001610089565b6100e06100fe366004610869565b610174565b600061010f60016101a8565b6001600160e01b0316905090565b61012782826101f1565b5050565b60006101386001836102e9565b92915050565b610127828261039c565b6001600160a01b038216600090815260208190526040812061016a90836102e9565b6001149392505050565b6001600160a01b0381166000908152602081905260408120610195906101a8565b6001600160e01b03166001149050919050565b805460009080156101e7576101d0836101c260018461089a565b600091825260209091200190565b5464010000000090046001600160e01b03166101ea565b60005b9392505050565b60005b818110156102d457610226838383818110610211576102116108ad565b90506020020160208101906100fe9190610869565b1561027c5782828281811061023d5761023d6108ad565b90506020020160208101906102529190610869565b60405163c0b7477d60e01b81526001600160a01b0390911660048201526024015b60405180910390fd5b6102ca6001600080868686818110610296576102966108ad565b90506020020160208101906102ab9190610869565b6001600160a01b03168152602081019190915260400160002090610405565b50506001016101f4565b506102e360016104398361043d565b50505050565b600043821061033a5760405162461bcd60e51b815260206004820181905260248201527f436865636b706f696e74733a20626c6f636b206e6f7420796574206d696e65646044820152606401610273565b600061034583610475565b84549091506000610358868483856104f5565b905080156103865761036f866101c260018461089a565b5464010000000090046001600160e01b0316610389565b60005b6001600160e01b03169695505050505050565b60005b818110156103f6576103bc838383818110610211576102116108ad565b6103d25782828281811061023d5761023d6108ad565b6103ec6000806000868686818110610296576102966108ad565b505060010161039f565b506102e360016105538361043d565b6000806104238461041543610475565b61041e86610558565b6105d7565b6001600160e01b03918216969116945092505050565b0190565b60008061046885610463610450886101a8565b6001600160e01b0316868863ffffffff16565b610405565b915091505b935093915050565b600063ffffffff8211156104f15760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201527f32206269747300000000000000000000000000000000000000000000000000006064820152608401610273565b5090565b60005b8183101561054b57600061050c848461077a565b60008781526020902090915063ffffffff86169082015463ffffffff16111561053757809250610545565b6105428160016108c3565b93505b506104f8565b509392505050565b900390565b60006001600160e01b038211156104f15760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203260448201527f32342062697473000000000000000000000000000000000000000000000000006064820152608401610273565b8254600090819080156107205760006105f5876101c260018561089a565b60408051808201909152905463ffffffff8082168084526401000000009092046001600160e01b0316602084015291925090871610156106775760405162461bcd60e51b815260206004820152601b60248201527f436865636b706f696e743a2064656372656173696e67206b65797300000000006044820152606401610273565b805163ffffffff8088169116036106c05784610698886101c260018661089a565b80546001600160e01b03929092166401000000000263ffffffff909216919091179055610710565b6040805180820190915263ffffffff80881682526001600160e01b0380881660208085019182528b54600181018d5560008d81529190912094519151909216640100000000029216919091179101555b60200151925083915061046d9050565b50506040805180820190915263ffffffff80851682526001600160e01b0380851660208085019182528854600181018a5560008a81529182209551925190931664010000000002919093161792019190915590508161046d565b600061078960028484186108d6565b6101ea908484166108c3565b600080602083850312156107a857600080fd5b823567ffffffffffffffff808211156107c057600080fd5b818501915085601f8301126107d457600080fd5b8135818111156107e357600080fd5b8660208260051b85010111156107f857600080fd5b60209290920196919550909350505050565b60006020828403121561081c57600080fd5b5035919050565b80356001600160a01b038116811461083a57600080fd5b919050565b6000806040838503121561085257600080fd5b61085b83610823565b946020939093013593505050565b60006020828403121561087b57600080fd5b6101ea82610823565b634e487b7160e01b600052601160045260246000fd5b8181038181111561013857610138610884565b634e487b7160e01b600052603260045260246000fd5b8082018082111561013857610138610884565b6000826108f357634e487b7160e01b600052601260045260246000fd5b50049056fea164736f6c6343000811000a", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/contracts/artifacts/src/mocks/token/ERC1155Mock.sol/ERC1155Mock.dbg.json b/contracts/artifacts/src/mocks/token/ERC1155Mock.sol/ERC1155Mock.dbg.json deleted file mode 100644 index 4058cb44..00000000 --- a/contracts/artifacts/src/mocks/token/ERC1155Mock.sol/ERC1155Mock.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" -} diff --git a/contracts/artifacts/src/mocks/token/ERC1155Mock.sol/ERC1155Mock.json b/contracts/artifacts/src/mocks/token/ERC1155Mock.sol/ERC1155Mock.json deleted file mode 100644 index 71e824ba..00000000 --- a/contracts/artifacts/src/mocks/token/ERC1155Mock.sol/ERC1155Mock.json +++ /dev/null @@ -1,380 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "ERC1155Mock", - "sourceName": "src/mocks/token/ERC1155Mock.sol", - "abi": [ - { - "inputs": [ - { - "internalType": "string", - "name": "_uri", - "type": "string" - } - ], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "account", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "operator", - "type": "address" - }, - { - "indexed": false, - "internalType": "bool", - "name": "approved", - "type": "bool" - } - ], - "name": "ApprovalForAll", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "operator", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256[]", - "name": "ids", - "type": "uint256[]" - }, - { - "indexed": false, - "internalType": "uint256[]", - "name": "values", - "type": "uint256[]" - } - ], - "name": "TransferBatch", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "operator", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "id", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "TransferSingle", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "string", - "name": "value", - "type": "string" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "id", - "type": "uint256" - } - ], - "name": "URI", - "type": "event" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "account", - "type": "address" - }, - { - "internalType": "uint256", - "name": "id", - "type": "uint256" - } - ], - "name": "balanceOf", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address[]", - "name": "accounts", - "type": "address[]" - }, - { - "internalType": "uint256[]", - "name": "ids", - "type": "uint256[]" - } - ], - "name": "balanceOfBatch", - "outputs": [ - { - "internalType": "uint256[]", - "name": "", - "type": "uint256[]" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "account", - "type": "address" - }, - { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "burn", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "account", - "type": "address" - }, - { - "internalType": "address", - "name": "operator", - "type": "address" - } - ], - "name": "isApprovedForAll", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "account", - "type": "address" - }, - { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "mint", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256[]", - "name": "ids", - "type": "uint256[]" - }, - { - "internalType": "uint256[]", - "name": "amounts", - "type": "uint256[]" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "safeBatchTransferFrom", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "id", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "safeTransferFrom", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "operator", - "type": "address" - }, - { - "internalType": "bool", - "name": "approved", - "type": "bool" - } - ], - "name": "setApprovalForAll", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes4", - "name": "interfaceId", - "type": "bytes4" - } - ], - "name": "supportsInterface", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "uri", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "view", - "type": "function" - } - ], - "bytecode": "0x60806040523480156200001157600080fd5b5060405162001a8938038062001a89833981016040819052620000349162000070565b80620000408162000048565b5050620002a0565b6002620000568282620001d4565b5050565b634e487b7160e01b600052604160045260246000fd5b600060208083850312156200008457600080fd5b82516001600160401b03808211156200009c57600080fd5b818501915085601f830112620000b157600080fd5b815181811115620000c657620000c66200005a565b604051601f8201601f19908116603f01168101908382118183101715620000f157620000f16200005a565b8160405282815288868487010111156200010a57600080fd5b600093505b828410156200012e57848401860151818501870152928501926200010f565b600086848301015280965050505050505092915050565b600181811c908216806200015a57607f821691505b6020821081036200017b57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620001cf57600081815260208120601f850160051c81016020861015620001aa5750805b601f850160051c820191505b81811015620001cb57828155600101620001b6565b5050505b505050565b81516001600160401b03811115620001f057620001f06200005a565b620002088162000201845462000145565b8462000181565b602080601f831160018114620002405760008415620002275750858301515b600019600386901b1c1916600185901b178555620001cb565b600085815260208120601f198616915b82811015620002715788860151825594840194600190910190840162000250565b5085821015620002905787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6117d980620002b06000396000f3fe608060405234801561001057600080fd5b50600436106100bd5760003560e01c80634e1273f411610076578063e985e9c51161005b578063e985e9c514610186578063f242432a146101c2578063f5298aca146101d557600080fd5b80634e1273f414610153578063a22cb4651461017357600080fd5b80630e89341c116100a75780630e89341c1461010b578063156e29f61461012b5780632eb2c2d61461014057600080fd5b8062fdd58e146100c257806301ffc9a7146100e8575b600080fd5b6100d56100d03660046110b9565b6101e8565b6040519081526020015b60405180910390f35b6100fb6100f63660046110fc565b610294565b60405190151581526020016100df565b61011e610119366004611120565b6102e4565b6040516100df919061117f565b61013e610139366004611192565b610378565b005b61013e61014e366004611311565b610398565b6101666101613660046113bb565b61042b565b6040516100df91906114c1565b61013e6101813660046114d4565b610569565b6100fb610194366004611510565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205460ff1690565b61013e6101d0366004611543565b610578565b61013e6101e3366004611192565b610604565b60006001600160a01b03831661026b5760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201527f616c6964206f776e65720000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b506000818152602081815260408083206001600160a01b03861684529091529020545b92915050565b60006001600160e01b03198216636cdb3d1360e11b14806102c557506001600160e01b031982166303a24d0760e21b145b8061028e57506301ffc9a760e01b6001600160e01b031983161461028e565b6060600280546102f3906115a8565b80601f016020809104026020016040519081016040528092919081815260200182805461031f906115a8565b801561036c5780601f106103415761010080835404028352916020019161036c565b820191906000526020600020905b81548152906001019060200180831161034f57829003601f168201915b50505050509050919050565b6103938383836040518060200160405280600081525061060f565b505050565b6001600160a01b0385163314806103b457506103b48533610194565b6104175760405162461bcd60e51b815260206004820152602e60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201526d195c881bdc88185c1c1c9bdd995960921b6064820152608401610262565b6104248585858585610723565b5050505050565b606081518351146104a45760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e67746860448201527f206d69736d6174636800000000000000000000000000000000000000000000006064820152608401610262565b6000835167ffffffffffffffff8111156104c0576104c06111c5565b6040519080825280602002602001820160405280156104e9578160200160208202803683370190505b50905060005b84518110156105615761053485828151811061050d5761050d6115e2565b6020026020010151858381518110610527576105276115e2565b60200260200101516101e8565b828281518110610546576105466115e2565b602090810291909101015261055a8161160e565b90506104ef565b509392505050565b610574338383610996565b5050565b6001600160a01b03851633148061059457506105948533610194565b6105f75760405162461bcd60e51b815260206004820152602e60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201526d195c881bdc88185c1c1c9bdd995960921b6064820152608401610262565b6104248585858585610a8a565b610393838383610c35565b6001600160a01b03841661066f5760405162461bcd60e51b815260206004820152602160248201527f455243313135353a206d696e7420746f20746865207a65726f206164647265736044820152607360f81b6064820152608401610262565b33600061067b85610db1565b9050600061068885610db1565b90506000868152602081815260408083206001600160a01b038b168452909152812080548792906106ba908490611627565b909155505060408051878152602081018790526001600160a01b03808a1692600092918716917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a461071a83600089898989610dfc565b50505050505050565b815183511461079a5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060448201527f6d69736d617463680000000000000000000000000000000000000000000000006064820152608401610262565b6001600160a01b0384166107fe5760405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b6064820152608401610262565b3360005b845181101561092857600085828151811061081f5761081f6115e2565b60200260200101519050600085838151811061083d5761083d6115e2565b602090810291909101810151600084815280835260408082206001600160a01b038e1683529093529190912054909150818110156108d05760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201526939103a3930b739b332b960b11b6064820152608401610262565b6000838152602081815260408083206001600160a01b038e8116855292528083208585039055908b1682528120805484929061090d908490611627565b92505081905550505050806109219061160e565b9050610802565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb878760405161097892919061163a565b60405180910390a461098e818787878787610fa1565b505050505050565b816001600160a01b0316836001600160a01b031603610a1d5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c2073746174757360448201527f20666f722073656c6600000000000000000000000000000000000000000000006064820152608401610262565b6001600160a01b03838116600081815260016020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b038416610aee5760405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b6064820152608401610262565b336000610afa85610db1565b90506000610b0785610db1565b90506000868152602081815260408083206001600160a01b038c16845290915290205485811015610b8d5760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201526939103a3930b739b332b960b11b6064820152608401610262565b6000878152602081815260408083206001600160a01b038d8116855292528083208985039055908a16825281208054889290610bca908490611627565b909155505060408051888152602081018890526001600160a01b03808b16928c821692918816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4610c2a848a8a8a8a8a610dfc565b505050505050505050565b6001600160a01b038316610c975760405162461bcd60e51b815260206004820152602360248201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260448201526265737360e81b6064820152608401610262565b336000610ca384610db1565b90506000610cb084610db1565b60408051602080820183526000918290528882528181528282206001600160a01b038b1683529052205490915084811015610d395760405162461bcd60e51b8152602060048201526024808201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c604482015263616e636560e01b6064820152608401610262565b6000868152602081815260408083206001600160a01b038b81168086529184528285208a8703905582518b81529384018a90529092908816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a460408051602081019091526000905261071a565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110610deb57610deb6115e2565b602090810291909101015292915050565b6001600160a01b0384163b1561098e5760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e6190610e409089908990889088908890600401611668565b6020604051808303816000875af1925050508015610e7b575060408051601f3d908101601f19168201909252610e78918101906116ab565b60015b610f3057610e876116c8565b806308c379a003610ec05750610e9b6116e4565b80610ea65750610ec2565b8060405162461bcd60e51b8152600401610262919061117f565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e2d4552433131353560448201527f526563656976657220696d706c656d656e7465720000000000000000000000006064820152608401610262565b6001600160e01b0319811663f23a6e6160e01b1461071a5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a656374656044820152676420746f6b656e7360c01b6064820152608401610262565b6001600160a01b0384163b1561098e5760405163bc197c8160e01b81526001600160a01b0385169063bc197c8190610fe5908990899088908890889060040161176e565b6020604051808303816000875af1925050508015611020575060408051601f3d908101601f1916820190925261101d918101906116ab565b60015b61102c57610e876116c8565b6001600160e01b0319811663bc197c8160e01b1461071a5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a656374656044820152676420746f6b656e7360c01b6064820152608401610262565b80356001600160a01b03811681146110b457600080fd5b919050565b600080604083850312156110cc57600080fd5b6110d58361109d565b946020939093013593505050565b6001600160e01b0319811681146110f957600080fd5b50565b60006020828403121561110e57600080fd5b8135611119816110e3565b9392505050565b60006020828403121561113257600080fd5b5035919050565b6000815180845260005b8181101561115f57602081850181015186830182015201611143565b506000602082860101526020601f19601f83011685010191505092915050565b6020815260006111196020830184611139565b6000806000606084860312156111a757600080fd5b6111b08461109d565b95602085013595506040909401359392505050565b634e487b7160e01b600052604160045260246000fd5b601f8201601f1916810167ffffffffffffffff81118282101715611201576112016111c5565b6040525050565b600067ffffffffffffffff821115611222576112226111c5565b5060051b60200190565b600082601f83011261123d57600080fd5b8135602061124a82611208565b60405161125782826111db565b83815260059390931b850182019282810191508684111561127757600080fd5b8286015b84811015611292578035835291830191830161127b565b509695505050505050565b600082601f8301126112ae57600080fd5b813567ffffffffffffffff8111156112c8576112c86111c5565b6040516112df601f8301601f1916602001826111db565b8181528460208386010111156112f457600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a0868803121561132957600080fd5b6113328661109d565b94506113406020870161109d565b9350604086013567ffffffffffffffff8082111561135d57600080fd5b61136989838a0161122c565b9450606088013591508082111561137f57600080fd5b61138b89838a0161122c565b935060808801359150808211156113a157600080fd5b506113ae8882890161129d565b9150509295509295909350565b600080604083850312156113ce57600080fd5b823567ffffffffffffffff808211156113e657600080fd5b818501915085601f8301126113fa57600080fd5b8135602061140782611208565b60405161141482826111db565b83815260059390931b850182019282810191508984111561143457600080fd5b948201945b838610156114595761144a8661109d565b82529482019490820190611439565b9650508601359250508082111561146f57600080fd5b5061147c8582860161122c565b9150509250929050565b600081518084526020808501945080840160005b838110156114b65781518752958201959082019060010161149a565b509495945050505050565b6020815260006111196020830184611486565b600080604083850312156114e757600080fd5b6114f08361109d565b91506020830135801515811461150557600080fd5b809150509250929050565b6000806040838503121561152357600080fd5b61152c8361109d565b915061153a6020840161109d565b90509250929050565b600080600080600060a0868803121561155b57600080fd5b6115648661109d565b94506115726020870161109d565b93506040860135925060608601359150608086013567ffffffffffffffff81111561159c57600080fd5b6113ae8882890161129d565b600181811c908216806115bc57607f821691505b6020821081036115dc57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201611620576116206115f8565b5060010190565b8082018082111561028e5761028e6115f8565b60408152600061164d6040830185611486565b828103602084015261165f8185611486565b95945050505050565b60006001600160a01b03808816835280871660208401525084604083015283606083015260a060808301526116a060a0830184611139565b979650505050505050565b6000602082840312156116bd57600080fd5b8151611119816110e3565b600060033d11156116e15760046000803e5060005160e01c5b90565b600060443d10156116f25790565b6040516003193d81016004833e81513d67ffffffffffffffff816024840111818411171561172257505050505090565b828501915081518181111561173a5750505050505090565b843d87010160208285010111156117545750505050505090565b611763602082860101876111db565b509095945050505050565b60006001600160a01b03808816835280871660208401525060a0604083015261179a60a0830186611486565b82810360608401526117ac8186611486565b905082810360808401526117c08185611139565b9897505050505050505056fea164736f6c6343000811000a", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100bd5760003560e01c80634e1273f411610076578063e985e9c51161005b578063e985e9c514610186578063f242432a146101c2578063f5298aca146101d557600080fd5b80634e1273f414610153578063a22cb4651461017357600080fd5b80630e89341c116100a75780630e89341c1461010b578063156e29f61461012b5780632eb2c2d61461014057600080fd5b8062fdd58e146100c257806301ffc9a7146100e8575b600080fd5b6100d56100d03660046110b9565b6101e8565b6040519081526020015b60405180910390f35b6100fb6100f63660046110fc565b610294565b60405190151581526020016100df565b61011e610119366004611120565b6102e4565b6040516100df919061117f565b61013e610139366004611192565b610378565b005b61013e61014e366004611311565b610398565b6101666101613660046113bb565b61042b565b6040516100df91906114c1565b61013e6101813660046114d4565b610569565b6100fb610194366004611510565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205460ff1690565b61013e6101d0366004611543565b610578565b61013e6101e3366004611192565b610604565b60006001600160a01b03831661026b5760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201527f616c6964206f776e65720000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b506000818152602081815260408083206001600160a01b03861684529091529020545b92915050565b60006001600160e01b03198216636cdb3d1360e11b14806102c557506001600160e01b031982166303a24d0760e21b145b8061028e57506301ffc9a760e01b6001600160e01b031983161461028e565b6060600280546102f3906115a8565b80601f016020809104026020016040519081016040528092919081815260200182805461031f906115a8565b801561036c5780601f106103415761010080835404028352916020019161036c565b820191906000526020600020905b81548152906001019060200180831161034f57829003601f168201915b50505050509050919050565b6103938383836040518060200160405280600081525061060f565b505050565b6001600160a01b0385163314806103b457506103b48533610194565b6104175760405162461bcd60e51b815260206004820152602e60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201526d195c881bdc88185c1c1c9bdd995960921b6064820152608401610262565b6104248585858585610723565b5050505050565b606081518351146104a45760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e67746860448201527f206d69736d6174636800000000000000000000000000000000000000000000006064820152608401610262565b6000835167ffffffffffffffff8111156104c0576104c06111c5565b6040519080825280602002602001820160405280156104e9578160200160208202803683370190505b50905060005b84518110156105615761053485828151811061050d5761050d6115e2565b6020026020010151858381518110610527576105276115e2565b60200260200101516101e8565b828281518110610546576105466115e2565b602090810291909101015261055a8161160e565b90506104ef565b509392505050565b610574338383610996565b5050565b6001600160a01b03851633148061059457506105948533610194565b6105f75760405162461bcd60e51b815260206004820152602e60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201526d195c881bdc88185c1c1c9bdd995960921b6064820152608401610262565b6104248585858585610a8a565b610393838383610c35565b6001600160a01b03841661066f5760405162461bcd60e51b815260206004820152602160248201527f455243313135353a206d696e7420746f20746865207a65726f206164647265736044820152607360f81b6064820152608401610262565b33600061067b85610db1565b9050600061068885610db1565b90506000868152602081815260408083206001600160a01b038b168452909152812080548792906106ba908490611627565b909155505060408051878152602081018790526001600160a01b03808a1692600092918716917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a461071a83600089898989610dfc565b50505050505050565b815183511461079a5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060448201527f6d69736d617463680000000000000000000000000000000000000000000000006064820152608401610262565b6001600160a01b0384166107fe5760405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b6064820152608401610262565b3360005b845181101561092857600085828151811061081f5761081f6115e2565b60200260200101519050600085838151811061083d5761083d6115e2565b602090810291909101810151600084815280835260408082206001600160a01b038e1683529093529190912054909150818110156108d05760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201526939103a3930b739b332b960b11b6064820152608401610262565b6000838152602081815260408083206001600160a01b038e8116855292528083208585039055908b1682528120805484929061090d908490611627565b92505081905550505050806109219061160e565b9050610802565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb878760405161097892919061163a565b60405180910390a461098e818787878787610fa1565b505050505050565b816001600160a01b0316836001600160a01b031603610a1d5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c2073746174757360448201527f20666f722073656c6600000000000000000000000000000000000000000000006064820152608401610262565b6001600160a01b03838116600081815260016020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b038416610aee5760405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b6064820152608401610262565b336000610afa85610db1565b90506000610b0785610db1565b90506000868152602081815260408083206001600160a01b038c16845290915290205485811015610b8d5760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201526939103a3930b739b332b960b11b6064820152608401610262565b6000878152602081815260408083206001600160a01b038d8116855292528083208985039055908a16825281208054889290610bca908490611627565b909155505060408051888152602081018890526001600160a01b03808b16928c821692918816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4610c2a848a8a8a8a8a610dfc565b505050505050505050565b6001600160a01b038316610c975760405162461bcd60e51b815260206004820152602360248201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260448201526265737360e81b6064820152608401610262565b336000610ca384610db1565b90506000610cb084610db1565b60408051602080820183526000918290528882528181528282206001600160a01b038b1683529052205490915084811015610d395760405162461bcd60e51b8152602060048201526024808201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c604482015263616e636560e01b6064820152608401610262565b6000868152602081815260408083206001600160a01b038b81168086529184528285208a8703905582518b81529384018a90529092908816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a460408051602081019091526000905261071a565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110610deb57610deb6115e2565b602090810291909101015292915050565b6001600160a01b0384163b1561098e5760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e6190610e409089908990889088908890600401611668565b6020604051808303816000875af1925050508015610e7b575060408051601f3d908101601f19168201909252610e78918101906116ab565b60015b610f3057610e876116c8565b806308c379a003610ec05750610e9b6116e4565b80610ea65750610ec2565b8060405162461bcd60e51b8152600401610262919061117f565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e2d4552433131353560448201527f526563656976657220696d706c656d656e7465720000000000000000000000006064820152608401610262565b6001600160e01b0319811663f23a6e6160e01b1461071a5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a656374656044820152676420746f6b656e7360c01b6064820152608401610262565b6001600160a01b0384163b1561098e5760405163bc197c8160e01b81526001600160a01b0385169063bc197c8190610fe5908990899088908890889060040161176e565b6020604051808303816000875af1925050508015611020575060408051601f3d908101601f1916820190925261101d918101906116ab565b60015b61102c57610e876116c8565b6001600160e01b0319811663bc197c8160e01b1461071a5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a656374656044820152676420746f6b656e7360c01b6064820152608401610262565b80356001600160a01b03811681146110b457600080fd5b919050565b600080604083850312156110cc57600080fd5b6110d58361109d565b946020939093013593505050565b6001600160e01b0319811681146110f957600080fd5b50565b60006020828403121561110e57600080fd5b8135611119816110e3565b9392505050565b60006020828403121561113257600080fd5b5035919050565b6000815180845260005b8181101561115f57602081850181015186830182015201611143565b506000602082860101526020601f19601f83011685010191505092915050565b6020815260006111196020830184611139565b6000806000606084860312156111a757600080fd5b6111b08461109d565b95602085013595506040909401359392505050565b634e487b7160e01b600052604160045260246000fd5b601f8201601f1916810167ffffffffffffffff81118282101715611201576112016111c5565b6040525050565b600067ffffffffffffffff821115611222576112226111c5565b5060051b60200190565b600082601f83011261123d57600080fd5b8135602061124a82611208565b60405161125782826111db565b83815260059390931b850182019282810191508684111561127757600080fd5b8286015b84811015611292578035835291830191830161127b565b509695505050505050565b600082601f8301126112ae57600080fd5b813567ffffffffffffffff8111156112c8576112c86111c5565b6040516112df601f8301601f1916602001826111db565b8181528460208386010111156112f457600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a0868803121561132957600080fd5b6113328661109d565b94506113406020870161109d565b9350604086013567ffffffffffffffff8082111561135d57600080fd5b61136989838a0161122c565b9450606088013591508082111561137f57600080fd5b61138b89838a0161122c565b935060808801359150808211156113a157600080fd5b506113ae8882890161129d565b9150509295509295909350565b600080604083850312156113ce57600080fd5b823567ffffffffffffffff808211156113e657600080fd5b818501915085601f8301126113fa57600080fd5b8135602061140782611208565b60405161141482826111db565b83815260059390931b850182019282810191508984111561143457600080fd5b948201945b838610156114595761144a8661109d565b82529482019490820190611439565b9650508601359250508082111561146f57600080fd5b5061147c8582860161122c565b9150509250929050565b600081518084526020808501945080840160005b838110156114b65781518752958201959082019060010161149a565b509495945050505050565b6020815260006111196020830184611486565b600080604083850312156114e757600080fd5b6114f08361109d565b91506020830135801515811461150557600080fd5b809150509250929050565b6000806040838503121561152357600080fd5b61152c8361109d565b915061153a6020840161109d565b90509250929050565b600080600080600060a0868803121561155b57600080fd5b6115648661109d565b94506115726020870161109d565b93506040860135925060608601359150608086013567ffffffffffffffff81111561159c57600080fd5b6113ae8882890161129d565b600181811c908216806115bc57607f821691505b6020821081036115dc57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201611620576116206115f8565b5060010190565b8082018082111561028e5761028e6115f8565b60408152600061164d6040830185611486565b828103602084015261165f8185611486565b95945050505050565b60006001600160a01b03808816835280871660208401525084604083015283606083015260a060808301526116a060a0830184611139565b979650505050505050565b6000602082840312156116bd57600080fd5b8151611119816110e3565b600060033d11156116e15760046000803e5060005160e01c5b90565b600060443d10156116f25790565b6040516003193d81016004833e81513d67ffffffffffffffff816024840111818411171561172257505050505090565b828501915081518181111561173a5750505050505090565b843d87010160208285010111156117545750505050505090565b611763602082860101876111db565b509095945050505050565b60006001600160a01b03808816835280871660208401525060a0604083015261179a60a0830186611486565b82810360608401526117ac8186611486565b905082810360808401526117c08185611139565b9897505050505050505056fea164736f6c6343000811000a", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/contracts/artifacts/src/mocks/token/ERC20Mock.sol/ERC20Mock.dbg.json b/contracts/artifacts/src/mocks/token/ERC20Mock.sol/ERC20Mock.dbg.json deleted file mode 100644 index 4058cb44..00000000 --- a/contracts/artifacts/src/mocks/token/ERC20Mock.sol/ERC20Mock.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" -} diff --git a/contracts/artifacts/src/mocks/token/ERC20Mock.sol/ERC20Mock.json b/contracts/artifacts/src/mocks/token/ERC20Mock.sol/ERC20Mock.json deleted file mode 100644 index 556ea7fe..00000000 --- a/contracts/artifacts/src/mocks/token/ERC20Mock.sol/ERC20Mock.json +++ /dev/null @@ -1,341 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "ERC20Mock", - "sourceName": "src/mocks/token/ERC20Mock.sol", - "abi": [ - { - "inputs": [ - { - "internalType": "string", - "name": "_name", - "type": "string" - }, - { - "internalType": "string", - "name": "_symbol", - "type": "string" - } - ], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "Approval", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "Transfer", - "type": "event" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "internalType": "address", - "name": "spender", - "type": "address" - } - ], - "name": "allowance", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "approve", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "balanceOf", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "decimals", - "outputs": [ - { - "internalType": "uint8", - "name": "", - "type": "uint8" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "decimals_", - "outputs": [ - { - "internalType": "uint8", - "name": "", - "type": "uint8" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "subtractedValue", - "type": "uint256" - } - ], - "name": "decreaseAllowance", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "addedValue", - "type": "uint256" - } - ], - "name": "increaseAllowance", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "name", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "setBalance", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint8", - "name": "_decimals", - "type": "uint8" - } - ], - "name": "setDecimals", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "symbol", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "totalSupply", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "transfer", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "transferFrom", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - } - ], - "bytecode": "0x60806040526005805460ff191660121790553480156200001e57600080fd5b5060405162000ed038038062000ed0833981016040819052620000419162000130565b8181600362000051838262000229565b50600462000060828262000229565b5050505050620002f5565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200009357600080fd5b81516001600160401b0380821115620000b057620000b06200006b565b604051601f8301601f19908116603f01168101908282118183101715620000db57620000db6200006b565b81604052838152602092508683858801011115620000f857600080fd5b600091505b838210156200011c5785820183015181830184015290820190620000fd565b600093810190920192909252949350505050565b600080604083850312156200014457600080fd5b82516001600160401b03808211156200015c57600080fd5b6200016a8683870162000081565b935060208501519150808211156200018157600080fd5b50620001908582860162000081565b9150509250929050565b600181811c90821680620001af57607f821691505b602082108103620001d057634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200022457600081815260208120601f850160051c81016020861015620001ff5750805b601f850160051c820191505b8181101562000220578281556001016200020b565b5050505b505050565b81516001600160401b038111156200024557620002456200006b565b6200025d816200025684546200019a565b84620001d6565b602080601f8311600181146200029557600084156200027c5750858301515b600019600386901b1c1916600185901b17855562000220565b600085815260208120601f198616915b82811015620002c657888601518255948401946001909101908401620002a5565b5085821015620002e55787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b610bcb80620003056000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c80637a1395aa1161008c578063a9059cbb11610066578063a9059cbb146101eb578063dd62ed3e146101fe578063e30443bc14610237578063f785ef721461024a57600080fd5b80637a1395aa146101aa57806395d89b41146101d0578063a457c2d7146101d857600080fd5b806323b872dd116100c857806323b872dd14610142578063313ce56714610155578063395093511461016e57806370a082311461018157600080fd5b806306fdde03146100ef578063095ea7b31461010d57806318160ddd14610130575b600080fd5b6100f7610257565b6040516101049190610a00565b60405180910390f35b61012061011b366004610a6a565b6102e9565b6040519015158152602001610104565b6002545b604051908152602001610104565b610120610150366004610a94565b610303565b60055460ff165b60405160ff9091168152602001610104565b61012061017c366004610a6a565b610327565b61013461018f366004610ad0565b6001600160a01b031660009081526020819052604090205490565b6101ce6101b8366004610af2565b6005805460ff191660ff92909216919091179055565b005b6100f7610366565b6101206101e6366004610a6a565b610375565b6101206101f9366004610a6a565b610424565b61013461020c366004610b15565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6101ce610245366004610a6a565b610432565b60055461015c9060ff1681565b60606003805461026690610b48565b80601f016020809104026020016040519081016040528092919081815260200182805461029290610b48565b80156102df5780601f106102b4576101008083540402835291602001916102df565b820191906000526020600020905b8154815290600101906020018083116102c257829003601f168201915b5050505050905090565b6000336102f7818585610486565b60019150505b92915050565b6000336103118582856105aa565b61031c85858561063c565b506001949350505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091906102f79082908690610361908790610b98565b610486565b60606004805461026690610b48565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909190838110156104175760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b61031c8286868403610486565b6000336102f781858561063c565b6001600160a01b0382166000908152602081905260409020548181101561046b57610466836104618385610bab565b61080f565b505050565b8181111561046657610466836104818484610bab565b6108ce565b6001600160a01b0383166104e85760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161040e565b6001600160a01b0382166105495760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161040e565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03838116600090815260016020908152604080832093861683529290522054600019811461063657818110156106295760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161040e565b6106368484848403610486565b50505050565b6001600160a01b0383166106b85760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f6472657373000000000000000000000000000000000000000000000000000000606482015260840161040e565b6001600160a01b03821661071a5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161040e565b6001600160a01b038316600090815260208190526040902054818110156107a95760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e63650000000000000000000000000000000000000000000000000000606482015260840161040e565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610636565b6001600160a01b0382166108655760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161040e565b80600260008282546108779190610b98565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6001600160a01b03821661092e5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161040e565b6001600160a01b038216600090815260208190526040902054818110156109a25760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b606482015260840161040e565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b600060208083528351808285015260005b81811015610a2d57858101830151858201604001528201610a11565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610a6557600080fd5b919050565b60008060408385031215610a7d57600080fd5b610a8683610a4e565b946020939093013593505050565b600080600060608486031215610aa957600080fd5b610ab284610a4e565b9250610ac060208501610a4e565b9150604084013590509250925092565b600060208284031215610ae257600080fd5b610aeb82610a4e565b9392505050565b600060208284031215610b0457600080fd5b813560ff81168114610aeb57600080fd5b60008060408385031215610b2857600080fd5b610b3183610a4e565b9150610b3f60208401610a4e565b90509250929050565b600181811c90821680610b5c57607f821691505b602082108103610b7c57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156102fd576102fd610b82565b818103818111156102fd576102fd610b8256fea164736f6c6343000811000a", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100ea5760003560e01c80637a1395aa1161008c578063a9059cbb11610066578063a9059cbb146101eb578063dd62ed3e146101fe578063e30443bc14610237578063f785ef721461024a57600080fd5b80637a1395aa146101aa57806395d89b41146101d0578063a457c2d7146101d857600080fd5b806323b872dd116100c857806323b872dd14610142578063313ce56714610155578063395093511461016e57806370a082311461018157600080fd5b806306fdde03146100ef578063095ea7b31461010d57806318160ddd14610130575b600080fd5b6100f7610257565b6040516101049190610a00565b60405180910390f35b61012061011b366004610a6a565b6102e9565b6040519015158152602001610104565b6002545b604051908152602001610104565b610120610150366004610a94565b610303565b60055460ff165b60405160ff9091168152602001610104565b61012061017c366004610a6a565b610327565b61013461018f366004610ad0565b6001600160a01b031660009081526020819052604090205490565b6101ce6101b8366004610af2565b6005805460ff191660ff92909216919091179055565b005b6100f7610366565b6101206101e6366004610a6a565b610375565b6101206101f9366004610a6a565b610424565b61013461020c366004610b15565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6101ce610245366004610a6a565b610432565b60055461015c9060ff1681565b60606003805461026690610b48565b80601f016020809104026020016040519081016040528092919081815260200182805461029290610b48565b80156102df5780601f106102b4576101008083540402835291602001916102df565b820191906000526020600020905b8154815290600101906020018083116102c257829003601f168201915b5050505050905090565b6000336102f7818585610486565b60019150505b92915050565b6000336103118582856105aa565b61031c85858561063c565b506001949350505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091906102f79082908690610361908790610b98565b610486565b60606004805461026690610b48565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909190838110156104175760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b61031c8286868403610486565b6000336102f781858561063c565b6001600160a01b0382166000908152602081905260409020548181101561046b57610466836104618385610bab565b61080f565b505050565b8181111561046657610466836104818484610bab565b6108ce565b6001600160a01b0383166104e85760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161040e565b6001600160a01b0382166105495760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161040e565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03838116600090815260016020908152604080832093861683529290522054600019811461063657818110156106295760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161040e565b6106368484848403610486565b50505050565b6001600160a01b0383166106b85760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f6472657373000000000000000000000000000000000000000000000000000000606482015260840161040e565b6001600160a01b03821661071a5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161040e565b6001600160a01b038316600090815260208190526040902054818110156107a95760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e63650000000000000000000000000000000000000000000000000000606482015260840161040e565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610636565b6001600160a01b0382166108655760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161040e565b80600260008282546108779190610b98565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6001600160a01b03821661092e5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161040e565b6001600160a01b038216600090815260208190526040902054818110156109a25760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b606482015260840161040e565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b600060208083528351808285015260005b81811015610a2d57858101830151858201604001528201610a11565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610a6557600080fd5b919050565b60008060408385031215610a7d57600080fd5b610a8683610a4e565b946020939093013593505050565b600080600060608486031215610aa957600080fd5b610ab284610a4e565b9250610ac060208501610a4e565b9150604084013590509250925092565b600060208284031215610ae257600080fd5b610aeb82610a4e565b9392505050565b600060208284031215610b0457600080fd5b813560ff81168114610aeb57600080fd5b60008060408385031215610b2857600080fd5b610b3183610a4e565b9150610b3f60208401610a4e565b90509250929050565b600181811c90821680610b5c57607f821691505b602082108103610b7c57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156102fd576102fd610b82565b818103818111156102fd576102fd610b8256fea164736f6c6343000811000a", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/contracts/artifacts/src/mocks/token/ERC721Mock.sol/ERC721Mock.dbg.json b/contracts/artifacts/src/mocks/token/ERC721Mock.sol/ERC721Mock.dbg.json deleted file mode 100644 index 4058cb44..00000000 --- a/contracts/artifacts/src/mocks/token/ERC721Mock.sol/ERC721Mock.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" -} diff --git a/contracts/artifacts/src/mocks/token/ERC721Mock.sol/ERC721Mock.json b/contracts/artifacts/src/mocks/token/ERC721Mock.sol/ERC721Mock.json deleted file mode 100644 index 559f5457..00000000 --- a/contracts/artifacts/src/mocks/token/ERC721Mock.sol/ERC721Mock.json +++ /dev/null @@ -1,388 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "ERC721Mock", - "sourceName": "src/mocks/token/ERC721Mock.sol", - "abi": [ - { - "inputs": [ - { - "internalType": "string", - "name": "name_", - "type": "string" - }, - { - "internalType": "string", - "name": "symbol_", - "type": "string" - } - ], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "approved", - "type": "address" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - } - ], - "name": "Approval", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "operator", - "type": "address" - }, - { - "indexed": false, - "internalType": "bool", - "name": "approved", - "type": "bool" - } - ], - "name": "ApprovalForAll", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - } - ], - "name": "Transfer", - "type": "event" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - } - ], - "name": "approve", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "owner", - "type": "address" - } - ], - "name": "balanceOf", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - } - ], - "name": "burn", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - } - ], - "name": "getApproved", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "internalType": "address", - "name": "operator", - "type": "address" - } - ], - "name": "isApprovedForAll", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "account", - "type": "address" - }, - { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - } - ], - "name": "mint", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "name", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - } - ], - "name": "ownerOf", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - } - ], - "name": "safeTransferFrom", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "safeTransferFrom", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "operator", - "type": "address" - }, - { - "internalType": "bool", - "name": "approved", - "type": "bool" - } - ], - "name": "setApprovalForAll", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes4", - "name": "interfaceId", - "type": "bytes4" - } - ], - "name": "supportsInterface", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "symbol", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - } - ], - "name": "tokenURI", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - } - ], - "name": "transferFrom", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - } - ], - "bytecode": "0x60806040523480156200001157600080fd5b506040516200174538038062001745833981016040819052620000349162000123565b818160006200004483826200021c565b5060016200005382826200021c565b5050505050620002e8565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200008657600080fd5b81516001600160401b0380821115620000a357620000a36200005e565b604051601f8301601f19908116603f01168101908282118183101715620000ce57620000ce6200005e565b81604052838152602092508683858801011115620000eb57600080fd5b600091505b838210156200010f5785820183015181830184015290820190620000f0565b600093810190920192909252949350505050565b600080604083850312156200013757600080fd5b82516001600160401b03808211156200014f57600080fd5b6200015d8683870162000074565b935060208501519150808211156200017457600080fd5b50620001838582860162000074565b9150509250929050565b600181811c90821680620001a257607f821691505b602082108103620001c357634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200021757600081815260208120601f850160051c81016020861015620001f25750805b601f850160051c820191505b818110156200021357828155600101620001fe565b5050505b505050565b81516001600160401b038111156200023857620002386200005e565b62000250816200024984546200018d565b84620001c9565b602080601f8311600181146200028857600084156200026f5750858301515b600019600386901b1c1916600185901b17855562000213565b600085815260208120601f198616915b82811015620002b95788860151825594840194600190910190840162000298565b5085821015620002d85787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61144d80620002f86000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806342966c6811610097578063a22cb46511610066578063a22cb465146101ff578063b88d4fde14610212578063c87b56dd14610225578063e985e9c51461023857600080fd5b806342966c68146101b05780636352211e146101c357806370a08231146101d657806395d89b41146101f757600080fd5b8063095ea7b3116100d3578063095ea7b31461016257806323b872dd1461017757806340c10f191461018a57806342842e0e1461019d57600080fd5b806301ffc9a7146100fa57806306fdde0314610122578063081812fc14610137575b600080fd5b61010d6101083660046110e7565b610274565b60405190151581526020015b60405180910390f35b61012a6102c6565b6040516101199190611154565b61014a610145366004611167565b610358565b6040516001600160a01b039091168152602001610119565b61017561017036600461119c565b61037f565b005b6101756101853660046111c6565b610499565b61017561019836600461119c565b610510565b6101756101ab3660046111c6565b61051e565b6101756101be366004611167565b610539565b61014a6101d1366004611167565b610545565b6101e96101e4366004611202565b6105aa565b604051908152602001610119565b61012a610644565b61017561020d36600461121d565b610653565b61017561022036600461126f565b61065e565b61012a610233366004611167565b6106dc565b61010d61024636600461134b565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b60006001600160e01b031982166380ac58cd60e01b14806102a557506001600160e01b03198216635b5e139f60e01b145b806102c057506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600080546102d59061137e565b80601f01602080910402602001604051908101604052809291908181526020018280546103019061137e565b801561034e5780601f106103235761010080835404028352916020019161034e565b820191906000526020600020905b81548152906001019060200180831161033157829003601f168201915b5050505050905090565b600061036382610750565b506000908152600460205260409020546001600160a01b031690565b600061038a82610545565b9050806001600160a01b0316836001600160a01b0316036103fc5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b038216148061041857506104188133610246565b61048a5760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c00000060648201526084016103f3565b61049483836107b4565b505050565b6104a33382610822565b6105055760405162461bcd60e51b815260206004820152602d60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201526c1c881bdc88185c1c1c9bdd9959609a1b60648201526084016103f3565b6104948383836108a1565b61051a8282610a81565b5050565b6104948383836040518060200160405280600081525061065e565b61054281610c0c565b50565b6000818152600260205260408120546001600160a01b0316806102c05760405162461bcd60e51b815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e204944000000000000000060448201526064016103f3565b60006001600160a01b0382166106285760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f74206120766160448201527f6c6964206f776e6572000000000000000000000000000000000000000000000060648201526084016103f3565b506001600160a01b031660009081526003602052604090205490565b6060600180546102d59061137e565b61051a338383610ca1565b6106683383610822565b6106ca5760405162461bcd60e51b815260206004820152602d60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201526c1c881bdc88185c1c1c9bdd9959609a1b60648201526084016103f3565b6106d684848484610d6f565b50505050565b60606106e782610750565b60006106fe60408051602081019091526000815290565b9050600081511161071e5760405180602001604052806000815250610749565b8061072884610df8565b6040516020016107399291906113b8565b6040516020818303038152906040525b9392505050565b6000818152600260205260409020546001600160a01b03166105425760405162461bcd60e51b815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e204944000000000000000060448201526064016103f3565b600081815260046020526040902080546001600160a01b0319166001600160a01b03841690811790915581906107e982610545565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008061082e83610545565b9050806001600160a01b0316846001600160a01b0316148061087557506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b806108995750836001600160a01b031661088e84610358565b6001600160a01b0316145b949350505050565b826001600160a01b03166108b482610545565b6001600160a01b0316146109185760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016103f3565b6001600160a01b03821661097a5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016103f3565b826001600160a01b031661098d82610545565b6001600160a01b0316146109f15760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016103f3565b600081815260046020908152604080832080546001600160a01b03199081169091556001600160a01b0387811680865260038552838620805460001901905590871680865283862080546001019055868652600290945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6001600160a01b038216610ad75760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016103f3565b6000818152600260205260409020546001600160a01b031615610b3c5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016103f3565b6000818152600260205260409020546001600160a01b031615610ba15760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016103f3565b6001600160a01b038216600081815260036020908152604080832080546001019055848352600290915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6000610c1782610545565b9050610c2282610545565b600083815260046020908152604080832080546001600160a01b03199081169091556001600160a01b0385168085526003845282852080546000190190558785526002909352818420805490911690555192935084927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b816001600160a01b0316836001600160a01b031603610d025760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016103f3565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b610d7a8484846108a1565b610d8684848484610e98565b6106d65760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e746572000000000000000000000000000060648201526084016103f3565b60606000610e0583610fef565b600101905060008167ffffffffffffffff811115610e2557610e25611259565b6040519080825280601f01601f191660200182016040528015610e4f576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084610e5957509392505050565b60006001600160a01b0384163b15610fe457604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290610edc9033908990889088906004016113e7565b6020604051808303816000875af1925050508015610f17575060408051601f3d908101601f19168201909252610f1491810190611423565b60015b610fca573d808015610f45576040519150601f19603f3d011682016040523d82523d6000602084013e610f4a565b606091505b508051600003610fc25760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e746572000000000000000000000000000060648201526084016103f3565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050610899565b506001949350505050565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310611038577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310611064576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061108257662386f26fc10000830492506010015b6305f5e100831061109a576305f5e100830492506008015b61271083106110ae57612710830492506004015b606483106110c0576064830492506002015b600a83106102c05760010192915050565b6001600160e01b03198116811461054257600080fd5b6000602082840312156110f957600080fd5b8135610749816110d1565b60005b8381101561111f578181015183820152602001611107565b50506000910152565b60008151808452611140816020860160208601611104565b601f01601f19169290920160200192915050565b6020815260006107496020830184611128565b60006020828403121561117957600080fd5b5035919050565b80356001600160a01b038116811461119757600080fd5b919050565b600080604083850312156111af57600080fd5b6111b883611180565b946020939093013593505050565b6000806000606084860312156111db57600080fd5b6111e484611180565b92506111f260208501611180565b9150604084013590509250925092565b60006020828403121561121457600080fd5b61074982611180565b6000806040838503121561123057600080fd5b61123983611180565b91506020830135801515811461124e57600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b6000806000806080858703121561128557600080fd5b61128e85611180565b935061129c60208601611180565b925060408501359150606085013567ffffffffffffffff808211156112c057600080fd5b818701915087601f8301126112d457600080fd5b8135818111156112e6576112e6611259565b604051601f8201601f19908116603f0116810190838211818310171561130e5761130e611259565b816040528281528a602084870101111561132757600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b6000806040838503121561135e57600080fd5b61136783611180565b915061137560208401611180565b90509250929050565b600181811c9082168061139257607f821691505b6020821081036113b257634e487b7160e01b600052602260045260246000fd5b50919050565b600083516113ca818460208801611104565b8351908301906113de818360208801611104565b01949350505050565b60006001600160a01b038087168352808616602084015250836040830152608060608301526114196080830184611128565b9695505050505050565b60006020828403121561143557600080fd5b8151610749816110d156fea164736f6c6343000811000a", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100f55760003560e01c806342966c6811610097578063a22cb46511610066578063a22cb465146101ff578063b88d4fde14610212578063c87b56dd14610225578063e985e9c51461023857600080fd5b806342966c68146101b05780636352211e146101c357806370a08231146101d657806395d89b41146101f757600080fd5b8063095ea7b3116100d3578063095ea7b31461016257806323b872dd1461017757806340c10f191461018a57806342842e0e1461019d57600080fd5b806301ffc9a7146100fa57806306fdde0314610122578063081812fc14610137575b600080fd5b61010d6101083660046110e7565b610274565b60405190151581526020015b60405180910390f35b61012a6102c6565b6040516101199190611154565b61014a610145366004611167565b610358565b6040516001600160a01b039091168152602001610119565b61017561017036600461119c565b61037f565b005b6101756101853660046111c6565b610499565b61017561019836600461119c565b610510565b6101756101ab3660046111c6565b61051e565b6101756101be366004611167565b610539565b61014a6101d1366004611167565b610545565b6101e96101e4366004611202565b6105aa565b604051908152602001610119565b61012a610644565b61017561020d36600461121d565b610653565b61017561022036600461126f565b61065e565b61012a610233366004611167565b6106dc565b61010d61024636600461134b565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b60006001600160e01b031982166380ac58cd60e01b14806102a557506001600160e01b03198216635b5e139f60e01b145b806102c057506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600080546102d59061137e565b80601f01602080910402602001604051908101604052809291908181526020018280546103019061137e565b801561034e5780601f106103235761010080835404028352916020019161034e565b820191906000526020600020905b81548152906001019060200180831161033157829003601f168201915b5050505050905090565b600061036382610750565b506000908152600460205260409020546001600160a01b031690565b600061038a82610545565b9050806001600160a01b0316836001600160a01b0316036103fc5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b038216148061041857506104188133610246565b61048a5760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c00000060648201526084016103f3565b61049483836107b4565b505050565b6104a33382610822565b6105055760405162461bcd60e51b815260206004820152602d60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201526c1c881bdc88185c1c1c9bdd9959609a1b60648201526084016103f3565b6104948383836108a1565b61051a8282610a81565b5050565b6104948383836040518060200160405280600081525061065e565b61054281610c0c565b50565b6000818152600260205260408120546001600160a01b0316806102c05760405162461bcd60e51b815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e204944000000000000000060448201526064016103f3565b60006001600160a01b0382166106285760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f74206120766160448201527f6c6964206f776e6572000000000000000000000000000000000000000000000060648201526084016103f3565b506001600160a01b031660009081526003602052604090205490565b6060600180546102d59061137e565b61051a338383610ca1565b6106683383610822565b6106ca5760405162461bcd60e51b815260206004820152602d60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201526c1c881bdc88185c1c1c9bdd9959609a1b60648201526084016103f3565b6106d684848484610d6f565b50505050565b60606106e782610750565b60006106fe60408051602081019091526000815290565b9050600081511161071e5760405180602001604052806000815250610749565b8061072884610df8565b6040516020016107399291906113b8565b6040516020818303038152906040525b9392505050565b6000818152600260205260409020546001600160a01b03166105425760405162461bcd60e51b815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e204944000000000000000060448201526064016103f3565b600081815260046020526040902080546001600160a01b0319166001600160a01b03841690811790915581906107e982610545565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008061082e83610545565b9050806001600160a01b0316846001600160a01b0316148061087557506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b806108995750836001600160a01b031661088e84610358565b6001600160a01b0316145b949350505050565b826001600160a01b03166108b482610545565b6001600160a01b0316146109185760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016103f3565b6001600160a01b03821661097a5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016103f3565b826001600160a01b031661098d82610545565b6001600160a01b0316146109f15760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016103f3565b600081815260046020908152604080832080546001600160a01b03199081169091556001600160a01b0387811680865260038552838620805460001901905590871680865283862080546001019055868652600290945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6001600160a01b038216610ad75760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016103f3565b6000818152600260205260409020546001600160a01b031615610b3c5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016103f3565b6000818152600260205260409020546001600160a01b031615610ba15760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016103f3565b6001600160a01b038216600081815260036020908152604080832080546001019055848352600290915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6000610c1782610545565b9050610c2282610545565b600083815260046020908152604080832080546001600160a01b03199081169091556001600160a01b0385168085526003845282852080546000190190558785526002909352818420805490911690555192935084927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b816001600160a01b0316836001600160a01b031603610d025760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016103f3565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b610d7a8484846108a1565b610d8684848484610e98565b6106d65760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e746572000000000000000000000000000060648201526084016103f3565b60606000610e0583610fef565b600101905060008167ffffffffffffffff811115610e2557610e25611259565b6040519080825280601f01601f191660200182016040528015610e4f576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084610e5957509392505050565b60006001600160a01b0384163b15610fe457604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290610edc9033908990889088906004016113e7565b6020604051808303816000875af1925050508015610f17575060408051601f3d908101601f19168201909252610f1491810190611423565b60015b610fca573d808015610f45576040519150601f19603f3d011682016040523d82523d6000602084013e610f4a565b606091505b508051600003610fc25760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e746572000000000000000000000000000060648201526084016103f3565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050610899565b506001949350505050565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310611038577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310611064576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061108257662386f26fc10000830492506010015b6305f5e100831061109a576305f5e100830492506008015b61271083106110ae57612710830492506004015b606483106110c0576064830492506002015b600a83106102c05760010192915050565b6001600160e01b03198116811461054257600080fd5b6000602082840312156110f957600080fd5b8135610749816110d1565b60005b8381101561111f578181015183820152602001611107565b50506000910152565b60008151808452611140816020860160208601611104565b601f01601f19169290920160200192915050565b6020815260006107496020830184611128565b60006020828403121561117957600080fd5b5035919050565b80356001600160a01b038116811461119757600080fd5b919050565b600080604083850312156111af57600080fd5b6111b883611180565b946020939093013593505050565b6000806000606084860312156111db57600080fd5b6111e484611180565b92506111f260208501611180565b9150604084013590509250925092565b60006020828403121561121457600080fd5b61074982611180565b6000806040838503121561123057600080fd5b61123983611180565b91506020830135801515811461124e57600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b6000806000806080858703121561128557600080fd5b61128e85611180565b935061129c60208601611180565b925060408501359150606085013567ffffffffffffffff808211156112c057600080fd5b818701915087601f8301126112d457600080fd5b8135818111156112e6576112e6611259565b604051601f8201601f19908116603f0116810190838211818310171561130e5761130e611259565b816040528281528a602084870101111561132757600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b6000806040838503121561135e57600080fd5b61136783611180565b915061137560208401611180565b90509250929050565b600181811c9082168061139257607f821691505b6020821081036113b257634e487b7160e01b600052602260045260246000fd5b50919050565b600083516113ca818460208801611104565b8351908301906113de818360208801611104565b01949350505050565b60006001600160a01b038087168352808616602084015250836040830152608060608301526114196080830184611128565b9695505050505050565b60006020828403121561143557600080fd5b8151610749816110d156fea164736f6c6343000811000a", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/contracts/artifacts/src/mocks/utils/math/BitmapMock.sol/BitmapMock.dbg.json b/contracts/artifacts/src/mocks/utils/math/BitmapMock.sol/BitmapMock.dbg.json deleted file mode 100644 index b8d2318f..00000000 --- a/contracts/artifacts/src/mocks/utils/math/BitmapMock.sol/BitmapMock.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" -} diff --git a/contracts/artifacts/src/mocks/utils/math/BitmapMock.sol/BitmapMock.json b/contracts/artifacts/src/mocks/utils/math/BitmapMock.sol/BitmapMock.json deleted file mode 100644 index 7caa53da..00000000 --- a/contracts/artifacts/src/mocks/utils/math/BitmapMock.sol/BitmapMock.json +++ /dev/null @@ -1,59 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "BitmapMock", - "sourceName": "src/mocks/utils/math/BitmapMock.sol", - "abi": [ - { - "inputs": [ - { - "internalType": "uint256", - "name": "_bitmap", - "type": "uint256" - }, - { - "internalType": "uint8", - "name": "_index", - "type": "uint8" - } - ], - "name": "flipBit", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_bitmap", - "type": "uint256" - }, - { - "internalType": "uint8", - "name": "_index", - "type": "uint8" - } - ], - "name": "hasBit", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "pure", - "type": "function" - } - ], - "bytecode": "0x608060405234801561001057600080fd5b5060dc8061001f6000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c806330c869ef1460375780637a3a148514605b575b600080fd5b60466042366004609b565b6077565b60405190151581526020015b60405180910390f35b606a6066366004609b565b608c565b6040519081526020016052565b6000600160ff83161b831615155b9392505050565b6000600160ff83161b83186085565b6000806040838503121560ad57600080fd5b82359150602083013560ff8116811460c457600080fd5b80915050925092905056fea164736f6c6343000811000a", - "deployedBytecode": "0x6080604052348015600f57600080fd5b506004361060325760003560e01c806330c869ef1460375780637a3a148514605b575b600080fd5b60466042366004609b565b6077565b60405190151581526020015b60405180910390f35b606a6066366004609b565b608c565b6040519081526020016052565b6000600160ff83161b831615155b9392505050565b6000600160ff83161b83186085565b6000806040838503121560ad57600080fd5b82359150602083013560ff8116811460c457600080fd5b80915050925092905056fea164736f6c6343000811000a", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/contracts/artifacts/src/mocks/utils/math/RatioMock.sol/RatioMock.dbg.json b/contracts/artifacts/src/mocks/utils/math/RatioMock.sol/RatioMock.dbg.json deleted file mode 100644 index b8d2318f..00000000 --- a/contracts/artifacts/src/mocks/utils/math/RatioMock.sol/RatioMock.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" -} diff --git a/contracts/artifacts/src/mocks/utils/math/RatioMock.sol/RatioMock.json b/contracts/artifacts/src/mocks/utils/math/RatioMock.sol/RatioMock.json deleted file mode 100644 index f3730f65..00000000 --- a/contracts/artifacts/src/mocks/utils/math/RatioMock.sol/RatioMock.json +++ /dev/null @@ -1,64 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "RatioMock", - "sourceName": "src/mocks/utils/math/RatioMock.sol", - "abi": [ - { - "inputs": [ - { - "internalType": "uint256", - "name": "limit", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "actual", - "type": "uint256" - } - ], - "name": "RatioOutOfBounds", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_value", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_ratio", - "type": "uint256" - } - ], - "name": "applyRatioCeiled", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [], - "name": "getRatioBase", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "pure", - "type": "function" - } - ], - "bytecode": "0x608060405234801561001057600080fd5b506101a3806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80633d9de6701461003b578063a027562014610052575b600080fd5b620f42405b60405190815260200160405180910390f35b6100406100603660046100f0565b600061006c8383610075565b90505b92915050565b6000620f42408211156100ab5760405163cc80c19560e01b8152620f424060048201526024810183905260440160405180910390fd5b6100b58284610128565b925060006100c6620f424085610155565b90506100d5620f424085610169565b915080156100e9576100e68261017d565b91505b5092915050565b6000806040838503121561010357600080fd5b50508035926020909101359150565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761006f5761006f610112565b634e487b7160e01b600052601260045260246000fd5b6000826101645761016461013f565b500690565b6000826101785761017861013f565b500490565b60006001820161018f5761018f610112565b506001019056fea164736f6c6343000811000a", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100365760003560e01c80633d9de6701461003b578063a027562014610052575b600080fd5b620f42405b60405190815260200160405180910390f35b6100406100603660046100f0565b600061006c8383610075565b90505b92915050565b6000620f42408211156100ab5760405163cc80c19560e01b8152620f424060048201526024810183905260440160405180910390fd5b6100b58284610128565b925060006100c6620f424085610155565b90506100d5620f424085610169565b915080156100e9576100e68261017d565b91505b5092915050565b6000806040838503121561010357600080fd5b50508035926020909101359150565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761006f5761006f610112565b634e487b7160e01b600052601260045260246000fd5b6000826101645761016461013f565b500690565b6000826101785761017861013f565b500490565b60006001820161018f5761018f610112565b506001019056fea164736f6c6343000811000a", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/contracts/artifacts/src/mocks/utils/versioning/ProtocolVersionMock.sol/ProtocolVersionMock.dbg.json b/contracts/artifacts/src/mocks/utils/versioning/ProtocolVersionMock.sol/ProtocolVersionMock.dbg.json deleted file mode 100644 index b8d2318f..00000000 --- a/contracts/artifacts/src/mocks/utils/versioning/ProtocolVersionMock.sol/ProtocolVersionMock.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" -} diff --git a/contracts/artifacts/src/mocks/utils/versioning/ProtocolVersionMock.sol/ProtocolVersionMock.json b/contracts/artifacts/src/mocks/utils/versioning/ProtocolVersionMock.sol/ProtocolVersionMock.json deleted file mode 100644 index b7e0a7fc..00000000 --- a/contracts/artifacts/src/mocks/utils/versioning/ProtocolVersionMock.sol/ProtocolVersionMock.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "ProtocolVersionMock", - "sourceName": "src/mocks/utils/versioning/ProtocolVersionMock.sol", - "abi": [ - { - "inputs": [], - "name": "protocolVersion", - "outputs": [ - { - "internalType": "uint8[3]", - "name": "", - "type": "uint8[3]" - } - ], - "stateMutability": "pure", - "type": "function" - } - ], - "bytecode": "0x608060405234801561001057600080fd5b5060cc8061001f6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c80632ae9c60014602d575b600080fd5b60336047565b604051603e9190608d565b60405180910390f35b604d606f565b5060408051606081018252600181526004602082015260009181019190915290565b60405180606001604052806003906020820280368337509192915050565b60608101818360005b600381101560b657815160ff168352602092830192909101906001016096565b5050509291505056fea164736f6c6343000811000a", - "deployedBytecode": "0x6080604052348015600f57600080fd5b506004361060285760003560e01c80632ae9c60014602d575b600080fd5b60336047565b604051603e9190608d565b60405180910390f35b604d606f565b5060408051606081018252600181526004602082015260009181019190915290565b60405180606001604052806003906020820280368337509192915050565b60608101818360005b600381101560b657815160ff168352602092830192909101906001016096565b5050509291505056fea164736f6c6343000811000a", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/contracts/artifacts/src/mocks/utils/versioning/VersionComparisonLibMock.sol/VersionComparisonLibMock.dbg.json b/contracts/artifacts/src/mocks/utils/versioning/VersionComparisonLibMock.sol/VersionComparisonLibMock.dbg.json deleted file mode 100644 index b8d2318f..00000000 --- a/contracts/artifacts/src/mocks/utils/versioning/VersionComparisonLibMock.sol/VersionComparisonLibMock.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" -} diff --git a/contracts/artifacts/src/mocks/utils/versioning/VersionComparisonLibMock.sol/VersionComparisonLibMock.json b/contracts/artifacts/src/mocks/utils/versioning/VersionComparisonLibMock.sol/VersionComparisonLibMock.json deleted file mode 100644 index ee65472f..00000000 --- a/contracts/artifacts/src/mocks/utils/versioning/VersionComparisonLibMock.sol/VersionComparisonLibMock.json +++ /dev/null @@ -1,155 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "VersionComparisonLibMock", - "sourceName": "src/mocks/utils/versioning/VersionComparisonLibMock.sol", - "abi": [ - { - "inputs": [ - { - "internalType": "uint8[3]", - "name": "lhs", - "type": "uint8[3]" - }, - { - "internalType": "uint8[3]", - "name": "rhs", - "type": "uint8[3]" - } - ], - "name": "eq", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint8[3]", - "name": "lhs", - "type": "uint8[3]" - }, - { - "internalType": "uint8[3]", - "name": "rhs", - "type": "uint8[3]" - } - ], - "name": "gt", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint8[3]", - "name": "lhs", - "type": "uint8[3]" - }, - { - "internalType": "uint8[3]", - "name": "rhs", - "type": "uint8[3]" - } - ], - "name": "gte", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint8[3]", - "name": "lhs", - "type": "uint8[3]" - }, - { - "internalType": "uint8[3]", - "name": "rhs", - "type": "uint8[3]" - } - ], - "name": "lt", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint8[3]", - "name": "lhs", - "type": "uint8[3]" - }, - { - "internalType": "uint8[3]", - "name": "rhs", - "type": "uint8[3]" - } - ], - "name": "lte", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint8[3]", - "name": "lhs", - "type": "uint8[3]" - }, - { - "internalType": "uint8[3]", - "name": "rhs", - "type": "uint8[3]" - } - ], - "name": "neq", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "pure", - "type": "function" - } - ], - "bytecode": "0x608060405234801561001057600080fd5b5061052f806100206000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c80639fdb5746116100505780639fdb5746146100c4578063d343ec1b146100d7578063f92e9bb1146100ea57600080fd5b80632198ac8d14610077578063668a90f61461009e57806396b38697146100b1575b600080fd5b61008a6100853660046104ed565b6100fd565b604051901515815260200160405180910390f35b61008a6100ac3660046104ed565b610112565b61008a6100bf3660046104ed565b61011e565b61008a6100d23660046104ed565b61012a565b61008a6100e53660046104ed565b610136565b61008a6100f83660046104ed565b610142565b6000610109838361014e565b90505b92915050565b600061010983836101e8565b6000610109838361027a565b6000610109838361030c565b6000610109838361039d565b600061010983836103f4565b8051825160009160ff9081169116101561016a5750600161010c565b8151835160ff918216911611156101835750600061010c565b6020808301519084015160ff918216911610156101a25750600161010c565b6020808301519084015160ff918216911611156101c15750600061010c565b6040808301519084015160ff9182169116116101df5750600161010c565b50600092915050565b8051825160009160ff908116911610156102045750600161010c565b8151835160ff9182169116111561021d5750600061010c565b6020808301519084015160ff9182169116101561023c5750600161010c565b6020808301519084015160ff9182169116111561025b5750600061010c565b6040808301519084015160ff918216911610156101df5750600161010c565b8051825160009160ff908116911611156102965750600161010c565b8151835160ff918216911610156102af5750600061010c565b6020808301519084015160ff918216911611156102ce5750600161010c565b6020808301519084015160ff918216911610156102ed5750600061010c565b6040808301519084015160ff918216911611156101df5750600161010c565b8051825160009160ff908116911611156103285750600161010c565b8151835160ff918216911610156103415750600061010c565b6020808301519084015160ff918216911611156103605750600161010c565b6020808301519084015160ff9182169116101561037f5750600061010c565b6040808301519084015160ff9182169116106101df5750600161010c565b8051825160009160ff9182169116146103b85750600161010c565b6020808301519084015160ff9081169116146103d65750600161010c565b6040808301519084015160ff9081169116146101df5750600161010c565b8051825160009160ff91821691161461040f5750600061010c565b6020808301519084015160ff90811691161461042d5750600061010c565b6040808301519084015160ff90811691161461044b5750600061010c565b50600192915050565b803560ff8116811461046557600080fd5b919050565b600082601f83011261047b57600080fd5b6040516060810181811067ffffffffffffffff821117156104ac57634e487b7160e01b600052604160045260246000fd5b6040528060608401858111156104c157600080fd5b845b818110156104e2576104d481610454565b8352602092830192016104c3565b509195945050505050565b60008060c0838503121561050057600080fd5b61050a848461046a565b9150610519846060850161046a565b9050925092905056fea164736f6c6343000811000a", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100725760003560e01c80639fdb5746116100505780639fdb5746146100c4578063d343ec1b146100d7578063f92e9bb1146100ea57600080fd5b80632198ac8d14610077578063668a90f61461009e57806396b38697146100b1575b600080fd5b61008a6100853660046104ed565b6100fd565b604051901515815260200160405180910390f35b61008a6100ac3660046104ed565b610112565b61008a6100bf3660046104ed565b61011e565b61008a6100d23660046104ed565b61012a565b61008a6100e53660046104ed565b610136565b61008a6100f83660046104ed565b610142565b6000610109838361014e565b90505b92915050565b600061010983836101e8565b6000610109838361027a565b6000610109838361030c565b6000610109838361039d565b600061010983836103f4565b8051825160009160ff9081169116101561016a5750600161010c565b8151835160ff918216911611156101835750600061010c565b6020808301519084015160ff918216911610156101a25750600161010c565b6020808301519084015160ff918216911611156101c15750600061010c565b6040808301519084015160ff9182169116116101df5750600161010c565b50600092915050565b8051825160009160ff908116911610156102045750600161010c565b8151835160ff9182169116111561021d5750600061010c565b6020808301519084015160ff9182169116101561023c5750600161010c565b6020808301519084015160ff9182169116111561025b5750600061010c565b6040808301519084015160ff918216911610156101df5750600161010c565b8051825160009160ff908116911611156102965750600161010c565b8151835160ff918216911610156102af5750600061010c565b6020808301519084015160ff918216911611156102ce5750600161010c565b6020808301519084015160ff918216911610156102ed5750600061010c565b6040808301519084015160ff918216911611156101df5750600161010c565b8051825160009160ff908116911611156103285750600161010c565b8151835160ff918216911610156103415750600061010c565b6020808301519084015160ff918216911611156103605750600161010c565b6020808301519084015160ff9182169116101561037f5750600061010c565b6040808301519084015160ff9182169116106101df5750600161010c565b8051825160009160ff9182169116146103b85750600161010c565b6020808301519084015160ff9081169116146103d65750600161010c565b6040808301519084015160ff9081169116146101df5750600161010c565b8051825160009160ff91821691161461040f5750600061010c565b6020808301519084015160ff90811691161461042d5750600061010c565b6040808301519084015160ff90811691161461044b5750600061010c565b50600192915050565b803560ff8116811461046557600080fd5b919050565b600082601f83011261047b57600080fd5b6040516060810181811067ffffffffffffffff821117156104ac57634e487b7160e01b600052604160045260246000fd5b6040528060608401858111156104c157600080fd5b845b818110156104e2576104d481610454565b8352602092830192016104c3565b509195945050505050565b60008060c0838503121561050057600080fd5b61050a848461046a565b9150610519846060850161046a565b9050925092905056fea164736f6c6343000811000a", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/contracts/artifacts/src/permission/PermissionLib.sol/PermissionLib.dbg.json b/contracts/artifacts/src/permission/PermissionLib.sol/PermissionLib.dbg.json deleted file mode 100644 index 25fef0c2..00000000 --- a/contracts/artifacts/src/permission/PermissionLib.sol/PermissionLib.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" -} diff --git a/contracts/artifacts/src/permission/PermissionLib.sol/PermissionLib.json b/contracts/artifacts/src/permission/PermissionLib.sol/PermissionLib.json deleted file mode 100644 index 4d30470e..00000000 --- a/contracts/artifacts/src/permission/PermissionLib.sol/PermissionLib.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "PermissionLib", - "sourceName": "src/permission/PermissionLib.sol", - "abi": [ - { - "inputs": [], - "name": "NO_CONDITION", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - } - ], - "bytecode": "0x6075610038600b82828239805160001a607314602b57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe730000000000000000000000000000000000000000301460806040526004361060335760003560e01c80636dd02a5b146038575b600080fd5b603f600081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f3fea164736f6c6343000811000a", - "deployedBytecode": "0x730000000000000000000000000000000000000000301460806040526004361060335760003560e01c80636dd02a5b146038575b600080fd5b603f600081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f3fea164736f6c6343000811000a", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/contracts/artifacts/src/permission/auth/DaoAuthorizable.sol/DaoAuthorizable.dbg.json b/contracts/artifacts/src/permission/auth/DaoAuthorizable.sol/DaoAuthorizable.dbg.json deleted file mode 100644 index 4058cb44..00000000 --- a/contracts/artifacts/src/permission/auth/DaoAuthorizable.sol/DaoAuthorizable.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" -} diff --git a/contracts/artifacts/src/permission/auth/DaoAuthorizable.sol/DaoAuthorizable.json b/contracts/artifacts/src/permission/auth/DaoAuthorizable.sol/DaoAuthorizable.json deleted file mode 100644 index 4c8301d5..00000000 --- a/contracts/artifacts/src/permission/auth/DaoAuthorizable.sol/DaoAuthorizable.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "DaoAuthorizable", - "sourceName": "src/permission/auth/DaoAuthorizable.sol", - "abi": [ - { - "inputs": [], - "name": "dao", - "outputs": [ - { - "internalType": "contract IDAO", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - } - ], - "bytecode": "0x", - "deployedBytecode": "0x", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/contracts/artifacts/src/permission/auth/DaoAuthorizableUpgradeable.sol/DaoAuthorizableUpgradeable.dbg.json b/contracts/artifacts/src/permission/auth/DaoAuthorizableUpgradeable.sol/DaoAuthorizableUpgradeable.dbg.json deleted file mode 100644 index 4058cb44..00000000 --- a/contracts/artifacts/src/permission/auth/DaoAuthorizableUpgradeable.sol/DaoAuthorizableUpgradeable.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" -} diff --git a/contracts/artifacts/src/permission/auth/DaoAuthorizableUpgradeable.sol/DaoAuthorizableUpgradeable.json b/contracts/artifacts/src/permission/auth/DaoAuthorizableUpgradeable.sol/DaoAuthorizableUpgradeable.json deleted file mode 100644 index 86276fa2..00000000 --- a/contracts/artifacts/src/permission/auth/DaoAuthorizableUpgradeable.sol/DaoAuthorizableUpgradeable.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "DaoAuthorizableUpgradeable", - "sourceName": "src/permission/auth/DaoAuthorizableUpgradeable.sol", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint8", - "name": "version", - "type": "uint8" - } - ], - "name": "Initialized", - "type": "event" - }, - { - "inputs": [], - "name": "dao", - "outputs": [ - { - "internalType": "contract IDAO", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - } - ], - "bytecode": "0x", - "deployedBytecode": "0x", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/contracts/artifacts/src/permission/condition/IPermissionCondition.sol/IPermissionCondition.dbg.json b/contracts/artifacts/src/permission/condition/IPermissionCondition.sol/IPermissionCondition.dbg.json deleted file mode 100644 index 4058cb44..00000000 --- a/contracts/artifacts/src/permission/condition/IPermissionCondition.sol/IPermissionCondition.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" -} diff --git a/contracts/artifacts/src/permission/condition/IPermissionCondition.sol/IPermissionCondition.json b/contracts/artifacts/src/permission/condition/IPermissionCondition.sol/IPermissionCondition.json deleted file mode 100644 index d2ae3d7a..00000000 --- a/contracts/artifacts/src/permission/condition/IPermissionCondition.sol/IPermissionCondition.json +++ /dev/null @@ -1,45 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "IPermissionCondition", - "sourceName": "src/permission/condition/IPermissionCondition.sol", - "abi": [ - { - "inputs": [ - { - "internalType": "address", - "name": "_where", - "type": "address" - }, - { - "internalType": "address", - "name": "_who", - "type": "address" - }, - { - "internalType": "bytes32", - "name": "_permissionId", - "type": "bytes32" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "isGranted", - "outputs": [ - { - "internalType": "bool", - "name": "isPermitted", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - } - ], - "bytecode": "0x", - "deployedBytecode": "0x", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/contracts/artifacts/src/permission/condition/PermissionCondition.sol/PermissionCondition.dbg.json b/contracts/artifacts/src/permission/condition/PermissionCondition.sol/PermissionCondition.dbg.json deleted file mode 100644 index 4058cb44..00000000 --- a/contracts/artifacts/src/permission/condition/PermissionCondition.sol/PermissionCondition.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" -} diff --git a/contracts/artifacts/src/permission/condition/PermissionCondition.sol/PermissionCondition.json b/contracts/artifacts/src/permission/condition/PermissionCondition.sol/PermissionCondition.json deleted file mode 100644 index 5acf47a8..00000000 --- a/contracts/artifacts/src/permission/condition/PermissionCondition.sol/PermissionCondition.json +++ /dev/null @@ -1,77 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "PermissionCondition", - "sourceName": "src/permission/condition/PermissionCondition.sol", - "abi": [ - { - "inputs": [ - { - "internalType": "address", - "name": "_where", - "type": "address" - }, - { - "internalType": "address", - "name": "_who", - "type": "address" - }, - { - "internalType": "bytes32", - "name": "_permissionId", - "type": "bytes32" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "isGranted", - "outputs": [ - { - "internalType": "bool", - "name": "isPermitted", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "protocolVersion", - "outputs": [ - { - "internalType": "uint8[3]", - "name": "", - "type": "uint8[3]" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes4", - "name": "_interfaceId", - "type": "bytes4" - } - ], - "name": "supportsInterface", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - } - ], - "bytecode": "0x", - "deployedBytecode": "0x", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/contracts/artifacts/src/permission/condition/PermissionConditionUpgradeable.sol/PermissionConditionUpgradeable.dbg.json b/contracts/artifacts/src/permission/condition/PermissionConditionUpgradeable.sol/PermissionConditionUpgradeable.dbg.json deleted file mode 100644 index 4058cb44..00000000 --- a/contracts/artifacts/src/permission/condition/PermissionConditionUpgradeable.sol/PermissionConditionUpgradeable.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" -} diff --git a/contracts/artifacts/src/permission/condition/PermissionConditionUpgradeable.sol/PermissionConditionUpgradeable.json b/contracts/artifacts/src/permission/condition/PermissionConditionUpgradeable.sol/PermissionConditionUpgradeable.json deleted file mode 100644 index b9361c07..00000000 --- a/contracts/artifacts/src/permission/condition/PermissionConditionUpgradeable.sol/PermissionConditionUpgradeable.json +++ /dev/null @@ -1,90 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "PermissionConditionUpgradeable", - "sourceName": "src/permission/condition/PermissionConditionUpgradeable.sol", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint8", - "name": "version", - "type": "uint8" - } - ], - "name": "Initialized", - "type": "event" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_where", - "type": "address" - }, - { - "internalType": "address", - "name": "_who", - "type": "address" - }, - { - "internalType": "bytes32", - "name": "_permissionId", - "type": "bytes32" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "isGranted", - "outputs": [ - { - "internalType": "bool", - "name": "isPermitted", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "protocolVersion", - "outputs": [ - { - "internalType": "uint8[3]", - "name": "", - "type": "uint8[3]" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes4", - "name": "_interfaceId", - "type": "bytes4" - } - ], - "name": "supportsInterface", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - } - ], - "bytecode": "0x", - "deployedBytecode": "0x", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/contracts/artifacts/src/plugin/IPlugin.sol/IPlugin.dbg.json b/contracts/artifacts/src/plugin/IPlugin.sol/IPlugin.dbg.json deleted file mode 100644 index 25fef0c2..00000000 --- a/contracts/artifacts/src/plugin/IPlugin.sol/IPlugin.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" -} diff --git a/contracts/artifacts/src/plugin/IPlugin.sol/IPlugin.json b/contracts/artifacts/src/plugin/IPlugin.sol/IPlugin.json deleted file mode 100644 index db287fe2..00000000 --- a/contracts/artifacts/src/plugin/IPlugin.sol/IPlugin.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "IPlugin", - "sourceName": "src/plugin/IPlugin.sol", - "abi": [ - { - "inputs": [], - "name": "pluginType", - "outputs": [ - { - "internalType": "enum IPlugin.PluginType", - "name": "", - "type": "uint8" - } - ], - "stateMutability": "view", - "type": "function" - } - ], - "bytecode": "0x", - "deployedBytecode": "0x", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/contracts/artifacts/src/plugin/Plugin.sol/Plugin.dbg.json b/contracts/artifacts/src/plugin/Plugin.sol/Plugin.dbg.json deleted file mode 100644 index e0a8125d..00000000 --- a/contracts/artifacts/src/plugin/Plugin.sol/Plugin.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../build-info/9ac591806bb2e846e5a60f79d635058e.json" -} diff --git a/contracts/artifacts/src/plugin/Plugin.sol/Plugin.json b/contracts/artifacts/src/plugin/Plugin.sol/Plugin.json deleted file mode 100644 index 59d6b338..00000000 --- a/contracts/artifacts/src/plugin/Plugin.sol/Plugin.json +++ /dev/null @@ -1,114 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "Plugin", - "sourceName": "src/plugin/Plugin.sol", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousTarget", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newTarget", - "type": "address" - } - ], - "name": "TargetSet", - "type": "event" - }, - { - "inputs": [], - "name": "dao", - "outputs": [ - { - "internalType": "contract IDAO", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "pluginType", - "outputs": [ - { - "internalType": "enum IPlugin.PluginType", - "name": "", - "type": "uint8" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [], - "name": "protocolVersion", - "outputs": [ - { - "internalType": "uint8[3]", - "name": "", - "type": "uint8[3]" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_target", - "type": "address" - } - ], - "name": "setTarget", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes4", - "name": "_interfaceId", - "type": "bytes4" - } - ], - "name": "supportsInterface", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "target", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - } - ], - "bytecode": "0x", - "deployedBytecode": "0x", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/contracts/artifacts/src/plugin/PluginCloneable.sol/PluginCloneable.dbg.json b/contracts/artifacts/src/plugin/PluginCloneable.sol/PluginCloneable.dbg.json deleted file mode 100644 index e0a8125d..00000000 --- a/contracts/artifacts/src/plugin/PluginCloneable.sol/PluginCloneable.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../build-info/9ac591806bb2e846e5a60f79d635058e.json" -} diff --git a/contracts/artifacts/src/plugin/PluginCloneable.sol/PluginCloneable.json b/contracts/artifacts/src/plugin/PluginCloneable.sol/PluginCloneable.json deleted file mode 100644 index 4b99ef02..00000000 --- a/contracts/artifacts/src/plugin/PluginCloneable.sol/PluginCloneable.json +++ /dev/null @@ -1,127 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "PluginCloneable", - "sourceName": "src/plugin/PluginCloneable.sol", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint8", - "name": "version", - "type": "uint8" - } - ], - "name": "Initialized", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousTarget", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newTarget", - "type": "address" - } - ], - "name": "TargetSet", - "type": "event" - }, - { - "inputs": [], - "name": "dao", - "outputs": [ - { - "internalType": "contract IDAO", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "pluginType", - "outputs": [ - { - "internalType": "enum IPlugin.PluginType", - "name": "", - "type": "uint8" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [], - "name": "protocolVersion", - "outputs": [ - { - "internalType": "uint8[3]", - "name": "", - "type": "uint8[3]" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_target", - "type": "address" - } - ], - "name": "setTarget", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes4", - "name": "_interfaceId", - "type": "bytes4" - } - ], - "name": "supportsInterface", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "target", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - } - ], - "bytecode": "0x", - "deployedBytecode": "0x", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/contracts/artifacts/src/plugin/PluginUUPSUpgradeable.sol/PluginUUPSUpgradeable.dbg.json b/contracts/artifacts/src/plugin/PluginUUPSUpgradeable.sol/PluginUUPSUpgradeable.dbg.json deleted file mode 100644 index e0a8125d..00000000 --- a/contracts/artifacts/src/plugin/PluginUUPSUpgradeable.sol/PluginUUPSUpgradeable.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../build-info/9ac591806bb2e846e5a60f79d635058e.json" -} diff --git a/contracts/artifacts/src/plugin/PluginUUPSUpgradeable.sol/PluginUUPSUpgradeable.json b/contracts/artifacts/src/plugin/PluginUUPSUpgradeable.sol/PluginUUPSUpgradeable.json deleted file mode 100644 index 57d73099..00000000 --- a/contracts/artifacts/src/plugin/PluginUUPSUpgradeable.sol/PluginUUPSUpgradeable.json +++ /dev/null @@ -1,268 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "PluginUUPSUpgradeable", - "sourceName": "src/plugin/PluginUUPSUpgradeable.sol", - "abi": [ - { - "inputs": [ - { - "internalType": "address", - "name": "dao", - "type": "address" - }, - { - "internalType": "address", - "name": "where", - "type": "address" - }, - { - "internalType": "address", - "name": "who", - "type": "address" - }, - { - "internalType": "bytes32", - "name": "permissionId", - "type": "bytes32" - } - ], - "name": "DaoUnauthorized", - "type": "error" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "previousAdmin", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "AdminChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "beacon", - "type": "address" - } - ], - "name": "BeaconUpgraded", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint8", - "name": "version", - "type": "uint8" - } - ], - "name": "Initialized", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousTarget", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newTarget", - "type": "address" - } - ], - "name": "TargetSet", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - }, - { - "inputs": [], - "name": "UPGRADE_PLUGIN_PERMISSION_ID", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "dao", - "outputs": [ - { - "internalType": "contract IDAO", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "implementation", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "pluginType", - "outputs": [ - { - "internalType": "enum IPlugin.PluginType", - "name": "", - "type": "uint8" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [], - "name": "protocolVersion", - "outputs": [ - { - "internalType": "uint8[3]", - "name": "", - "type": "uint8[3]" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [], - "name": "proxiableUUID", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_target", - "type": "address" - } - ], - "name": "setTarget", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes4", - "name": "_interfaceId", - "type": "bytes4" - } - ], - "name": "supportsInterface", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "target", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - } - ], - "name": "upgradeTo", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "upgradeToAndCall", - "outputs": [], - "stateMutability": "payable", - "type": "function" - } - ], - "bytecode": "0x", - "deployedBytecode": "0x", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/contracts/artifacts/src/plugin/extensions/governance/Addresslist.sol/Addresslist.dbg.json b/contracts/artifacts/src/plugin/extensions/governance/Addresslist.sol/Addresslist.dbg.json deleted file mode 100644 index b8d2318f..00000000 --- a/contracts/artifacts/src/plugin/extensions/governance/Addresslist.sol/Addresslist.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" -} diff --git a/contracts/artifacts/src/plugin/extensions/governance/Addresslist.sol/Addresslist.json b/contracts/artifacts/src/plugin/extensions/governance/Addresslist.sol/Addresslist.json deleted file mode 100644 index 98c6b677..00000000 --- a/contracts/artifacts/src/plugin/extensions/governance/Addresslist.sol/Addresslist.json +++ /dev/null @@ -1,97 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "Addresslist", - "sourceName": "src/plugin/extensions/governance/Addresslist.sol", - "abi": [ - { - "inputs": [ - { - "internalType": "address", - "name": "member", - "type": "address" - } - ], - "name": "InvalidAddresslistUpdate", - "type": "error" - }, - { - "inputs": [], - "name": "addresslistLength", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_blockNumber", - "type": "uint256" - } - ], - "name": "addresslistLengthAtBlock", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_account", - "type": "address" - } - ], - "name": "isListed", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_account", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_blockNumber", - "type": "uint256" - } - ], - "name": "isListedAtBlock", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - } - ], - "bytecode": "0x", - "deployedBytecode": "0x", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/contracts/artifacts/src/plugin/extensions/membership/IMembership.sol/IMembership.dbg.json b/contracts/artifacts/src/plugin/extensions/membership/IMembership.sol/IMembership.dbg.json deleted file mode 100644 index b8d2318f..00000000 --- a/contracts/artifacts/src/plugin/extensions/membership/IMembership.sol/IMembership.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" -} diff --git a/contracts/artifacts/src/plugin/extensions/membership/IMembership.sol/IMembership.json b/contracts/artifacts/src/plugin/extensions/membership/IMembership.sol/IMembership.json deleted file mode 100644 index 7dd214f4..00000000 --- a/contracts/artifacts/src/plugin/extensions/membership/IMembership.sol/IMembership.json +++ /dev/null @@ -1,69 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "IMembership", - "sourceName": "src/plugin/extensions/membership/IMembership.sol", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address[]", - "name": "members", - "type": "address[]" - } - ], - "name": "MembersAdded", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address[]", - "name": "members", - "type": "address[]" - } - ], - "name": "MembersRemoved", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "definingContract", - "type": "address" - } - ], - "name": "MembershipContractAnnounced", - "type": "event" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_account", - "type": "address" - } - ], - "name": "isMember", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - } - ], - "bytecode": "0x", - "deployedBytecode": "0x", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/contracts/artifacts/src/plugin/extensions/proposal/IProposal.sol/IProposal.dbg.json b/contracts/artifacts/src/plugin/extensions/proposal/IProposal.sol/IProposal.dbg.json deleted file mode 100644 index 71ef0f77..00000000 --- a/contracts/artifacts/src/plugin/extensions/proposal/IProposal.sol/IProposal.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../../build-info/9ac591806bb2e846e5a60f79d635058e.json" -} diff --git a/contracts/artifacts/src/plugin/extensions/proposal/IProposal.sol/IProposal.json b/contracts/artifacts/src/plugin/extensions/proposal/IProposal.sol/IProposal.json deleted file mode 100644 index 28f8bb11..00000000 --- a/contracts/artifacts/src/plugin/extensions/proposal/IProposal.sol/IProposal.json +++ /dev/null @@ -1,173 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "IProposal", - "sourceName": "src/plugin/extensions/proposal/IProposal.sol", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "uint256", - "name": "proposalId", - "type": "uint256" - }, - { - "indexed": true, - "internalType": "address", - "name": "creator", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint64", - "name": "startDate", - "type": "uint64" - }, - { - "indexed": false, - "internalType": "uint64", - "name": "endDate", - "type": "uint64" - }, - { - "indexed": false, - "internalType": "bytes", - "name": "metadata", - "type": "bytes" - }, - { - "components": [ - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "indexed": false, - "internalType": "struct IDAO.Action[]", - "name": "actions", - "type": "tuple[]" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "allowFailureMap", - "type": "uint256" - } - ], - "name": "ProposalCreated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "uint256", - "name": "proposalId", - "type": "uint256" - } - ], - "name": "ProposalExecuted", - "type": "event" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "proposalId", - "type": "uint256" - } - ], - "name": "canExecute", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - }, - { - "components": [ - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "internalType": "struct IDAO.Action[]", - "name": "actions", - "type": "tuple[]" - }, - { - "internalType": "uint64", - "name": "startDate", - "type": "uint64" - }, - { - "internalType": "uint64", - "name": "endDate", - "type": "uint64" - } - ], - "name": "createProposal", - "outputs": [ - { - "internalType": "uint256", - "name": "proposalId", - "type": "uint256" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "proposalCount", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - } - ], - "bytecode": "0x", - "deployedBytecode": "0x", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/contracts/artifacts/src/plugin/extensions/proposal/Proposal.sol/Proposal.dbg.json b/contracts/artifacts/src/plugin/extensions/proposal/Proposal.sol/Proposal.dbg.json deleted file mode 100644 index 71ef0f77..00000000 --- a/contracts/artifacts/src/plugin/extensions/proposal/Proposal.sol/Proposal.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../../build-info/9ac591806bb2e846e5a60f79d635058e.json" -} diff --git a/contracts/artifacts/src/plugin/extensions/proposal/Proposal.sol/Proposal.json b/contracts/artifacts/src/plugin/extensions/proposal/Proposal.sol/Proposal.json deleted file mode 100644 index 590f0801..00000000 --- a/contracts/artifacts/src/plugin/extensions/proposal/Proposal.sol/Proposal.json +++ /dev/null @@ -1,192 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "Proposal", - "sourceName": "src/plugin/extensions/proposal/Proposal.sol", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "uint256", - "name": "proposalId", - "type": "uint256" - }, - { - "indexed": true, - "internalType": "address", - "name": "creator", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint64", - "name": "startDate", - "type": "uint64" - }, - { - "indexed": false, - "internalType": "uint64", - "name": "endDate", - "type": "uint64" - }, - { - "indexed": false, - "internalType": "bytes", - "name": "metadata", - "type": "bytes" - }, - { - "components": [ - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "indexed": false, - "internalType": "struct IDAO.Action[]", - "name": "actions", - "type": "tuple[]" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "allowFailureMap", - "type": "uint256" - } - ], - "name": "ProposalCreated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "uint256", - "name": "proposalId", - "type": "uint256" - } - ], - "name": "ProposalExecuted", - "type": "event" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "proposalId", - "type": "uint256" - } - ], - "name": "canExecute", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - }, - { - "components": [ - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "internalType": "struct IDAO.Action[]", - "name": "actions", - "type": "tuple[]" - }, - { - "internalType": "uint64", - "name": "startDate", - "type": "uint64" - }, - { - "internalType": "uint64", - "name": "endDate", - "type": "uint64" - } - ], - "name": "createProposal", - "outputs": [ - { - "internalType": "uint256", - "name": "proposalId", - "type": "uint256" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "proposalCount", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes4", - "name": "_interfaceId", - "type": "bytes4" - } - ], - "name": "supportsInterface", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - } - ], - "bytecode": "0x", - "deployedBytecode": "0x", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/contracts/artifacts/src/plugin/extensions/proposal/ProposalUpgradeable.sol/ProposalUpgradeable.dbg.json b/contracts/artifacts/src/plugin/extensions/proposal/ProposalUpgradeable.sol/ProposalUpgradeable.dbg.json deleted file mode 100644 index 71ef0f77..00000000 --- a/contracts/artifacts/src/plugin/extensions/proposal/ProposalUpgradeable.sol/ProposalUpgradeable.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../../build-info/9ac591806bb2e846e5a60f79d635058e.json" -} diff --git a/contracts/artifacts/src/plugin/extensions/proposal/ProposalUpgradeable.sol/ProposalUpgradeable.json b/contracts/artifacts/src/plugin/extensions/proposal/ProposalUpgradeable.sol/ProposalUpgradeable.json deleted file mode 100644 index d7af899b..00000000 --- a/contracts/artifacts/src/plugin/extensions/proposal/ProposalUpgradeable.sol/ProposalUpgradeable.json +++ /dev/null @@ -1,205 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "ProposalUpgradeable", - "sourceName": "src/plugin/extensions/proposal/ProposalUpgradeable.sol", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint8", - "name": "version", - "type": "uint8" - } - ], - "name": "Initialized", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "uint256", - "name": "proposalId", - "type": "uint256" - }, - { - "indexed": true, - "internalType": "address", - "name": "creator", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint64", - "name": "startDate", - "type": "uint64" - }, - { - "indexed": false, - "internalType": "uint64", - "name": "endDate", - "type": "uint64" - }, - { - "indexed": false, - "internalType": "bytes", - "name": "metadata", - "type": "bytes" - }, - { - "components": [ - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "indexed": false, - "internalType": "struct IDAO.Action[]", - "name": "actions", - "type": "tuple[]" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "allowFailureMap", - "type": "uint256" - } - ], - "name": "ProposalCreated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "uint256", - "name": "proposalId", - "type": "uint256" - } - ], - "name": "ProposalExecuted", - "type": "event" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "proposalId", - "type": "uint256" - } - ], - "name": "canExecute", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - }, - { - "components": [ - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "internalType": "struct IDAO.Action[]", - "name": "actions", - "type": "tuple[]" - }, - { - "internalType": "uint64", - "name": "startDate", - "type": "uint64" - }, - { - "internalType": "uint64", - "name": "endDate", - "type": "uint64" - } - ], - "name": "createProposal", - "outputs": [ - { - "internalType": "uint256", - "name": "proposalId", - "type": "uint256" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "proposalCount", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes4", - "name": "_interfaceId", - "type": "bytes4" - } - ], - "name": "supportsInterface", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - } - ], - "bytecode": "0x", - "deployedBytecode": "0x", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/contracts/artifacts/src/plugin/setup/IPluginSetup.sol/IPluginSetup.dbg.json b/contracts/artifacts/src/plugin/setup/IPluginSetup.sol/IPluginSetup.dbg.json deleted file mode 100644 index 4058cb44..00000000 --- a/contracts/artifacts/src/plugin/setup/IPluginSetup.sol/IPluginSetup.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" -} diff --git a/contracts/artifacts/src/plugin/setup/IPluginSetup.sol/IPluginSetup.json b/contracts/artifacts/src/plugin/setup/IPluginSetup.sol/IPluginSetup.json deleted file mode 100644 index f945e8ad..00000000 --- a/contracts/artifacts/src/plugin/setup/IPluginSetup.sol/IPluginSetup.json +++ /dev/null @@ -1,250 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "IPluginSetup", - "sourceName": "src/plugin/setup/IPluginSetup.sol", - "abi": [ - { - "inputs": [], - "name": "implementation", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_dao", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "prepareInstallation", - "outputs": [ - { - "internalType": "address", - "name": "plugin", - "type": "address" - }, - { - "components": [ - { - "internalType": "address[]", - "name": "helpers", - "type": "address[]" - }, - { - "components": [ - { - "internalType": "enum PermissionLib.Operation", - "name": "operation", - "type": "uint8" - }, - { - "internalType": "address", - "name": "where", - "type": "address" - }, - { - "internalType": "address", - "name": "who", - "type": "address" - }, - { - "internalType": "address", - "name": "condition", - "type": "address" - }, - { - "internalType": "bytes32", - "name": "permissionId", - "type": "bytes32" - } - ], - "internalType": "struct PermissionLib.MultiTargetPermission[]", - "name": "permissions", - "type": "tuple[]" - } - ], - "internalType": "struct IPluginSetup.PreparedSetupData", - "name": "preparedSetupData", - "type": "tuple" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_dao", - "type": "address" - }, - { - "components": [ - { - "internalType": "address", - "name": "plugin", - "type": "address" - }, - { - "internalType": "address[]", - "name": "currentHelpers", - "type": "address[]" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "internalType": "struct IPluginSetup.SetupPayload", - "name": "_payload", - "type": "tuple" - } - ], - "name": "prepareUninstallation", - "outputs": [ - { - "components": [ - { - "internalType": "enum PermissionLib.Operation", - "name": "operation", - "type": "uint8" - }, - { - "internalType": "address", - "name": "where", - "type": "address" - }, - { - "internalType": "address", - "name": "who", - "type": "address" - }, - { - "internalType": "address", - "name": "condition", - "type": "address" - }, - { - "internalType": "bytes32", - "name": "permissionId", - "type": "bytes32" - } - ], - "internalType": "struct PermissionLib.MultiTargetPermission[]", - "name": "permissions", - "type": "tuple[]" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_dao", - "type": "address" - }, - { - "internalType": "uint16", - "name": "_fromBuild", - "type": "uint16" - }, - { - "components": [ - { - "internalType": "address", - "name": "plugin", - "type": "address" - }, - { - "internalType": "address[]", - "name": "currentHelpers", - "type": "address[]" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "internalType": "struct IPluginSetup.SetupPayload", - "name": "_payload", - "type": "tuple" - } - ], - "name": "prepareUpdate", - "outputs": [ - { - "internalType": "bytes", - "name": "initData", - "type": "bytes" - }, - { - "components": [ - { - "internalType": "address[]", - "name": "helpers", - "type": "address[]" - }, - { - "components": [ - { - "internalType": "enum PermissionLib.Operation", - "name": "operation", - "type": "uint8" - }, - { - "internalType": "address", - "name": "where", - "type": "address" - }, - { - "internalType": "address", - "name": "who", - "type": "address" - }, - { - "internalType": "address", - "name": "condition", - "type": "address" - }, - { - "internalType": "bytes32", - "name": "permissionId", - "type": "bytes32" - } - ], - "internalType": "struct PermissionLib.MultiTargetPermission[]", - "name": "permissions", - "type": "tuple[]" - } - ], - "internalType": "struct IPluginSetup.PreparedSetupData", - "name": "preparedSetupData", - "type": "tuple" - } - ], - "stateMutability": "nonpayable", - "type": "function" - } - ], - "bytecode": "0x", - "deployedBytecode": "0x", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/contracts/artifacts/src/plugin/setup/PluginSetup.sol/PluginSetup.dbg.json b/contracts/artifacts/src/plugin/setup/PluginSetup.sol/PluginSetup.dbg.json deleted file mode 100644 index 4058cb44..00000000 --- a/contracts/artifacts/src/plugin/setup/PluginSetup.sol/PluginSetup.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" -} diff --git a/contracts/artifacts/src/plugin/setup/PluginSetup.sol/PluginSetup.json b/contracts/artifacts/src/plugin/setup/PluginSetup.sol/PluginSetup.json deleted file mode 100644 index 5c65eac7..00000000 --- a/contracts/artifacts/src/plugin/setup/PluginSetup.sol/PluginSetup.json +++ /dev/null @@ -1,287 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "PluginSetup", - "sourceName": "src/plugin/setup/PluginSetup.sol", - "abi": [ - { - "inputs": [], - "name": "NonUpgradeablePlugin", - "type": "error" - }, - { - "inputs": [], - "name": "implementation", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_dao", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "prepareInstallation", - "outputs": [ - { - "internalType": "address", - "name": "plugin", - "type": "address" - }, - { - "components": [ - { - "internalType": "address[]", - "name": "helpers", - "type": "address[]" - }, - { - "components": [ - { - "internalType": "enum PermissionLib.Operation", - "name": "operation", - "type": "uint8" - }, - { - "internalType": "address", - "name": "where", - "type": "address" - }, - { - "internalType": "address", - "name": "who", - "type": "address" - }, - { - "internalType": "address", - "name": "condition", - "type": "address" - }, - { - "internalType": "bytes32", - "name": "permissionId", - "type": "bytes32" - } - ], - "internalType": "struct PermissionLib.MultiTargetPermission[]", - "name": "permissions", - "type": "tuple[]" - } - ], - "internalType": "struct IPluginSetup.PreparedSetupData", - "name": "preparedSetupData", - "type": "tuple" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_dao", - "type": "address" - }, - { - "components": [ - { - "internalType": "address", - "name": "plugin", - "type": "address" - }, - { - "internalType": "address[]", - "name": "currentHelpers", - "type": "address[]" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "internalType": "struct IPluginSetup.SetupPayload", - "name": "_payload", - "type": "tuple" - } - ], - "name": "prepareUninstallation", - "outputs": [ - { - "components": [ - { - "internalType": "enum PermissionLib.Operation", - "name": "operation", - "type": "uint8" - }, - { - "internalType": "address", - "name": "where", - "type": "address" - }, - { - "internalType": "address", - "name": "who", - "type": "address" - }, - { - "internalType": "address", - "name": "condition", - "type": "address" - }, - { - "internalType": "bytes32", - "name": "permissionId", - "type": "bytes32" - } - ], - "internalType": "struct PermissionLib.MultiTargetPermission[]", - "name": "permissions", - "type": "tuple[]" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_dao", - "type": "address" - }, - { - "internalType": "uint16", - "name": "_fromBuild", - "type": "uint16" - }, - { - "components": [ - { - "internalType": "address", - "name": "plugin", - "type": "address" - }, - { - "internalType": "address[]", - "name": "currentHelpers", - "type": "address[]" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "internalType": "struct IPluginSetup.SetupPayload", - "name": "_payload", - "type": "tuple" - } - ], - "name": "prepareUpdate", - "outputs": [ - { - "internalType": "bytes", - "name": "", - "type": "bytes" - }, - { - "components": [ - { - "internalType": "address[]", - "name": "helpers", - "type": "address[]" - }, - { - "components": [ - { - "internalType": "enum PermissionLib.Operation", - "name": "operation", - "type": "uint8" - }, - { - "internalType": "address", - "name": "where", - "type": "address" - }, - { - "internalType": "address", - "name": "who", - "type": "address" - }, - { - "internalType": "address", - "name": "condition", - "type": "address" - }, - { - "internalType": "bytes32", - "name": "permissionId", - "type": "bytes32" - } - ], - "internalType": "struct PermissionLib.MultiTargetPermission[]", - "name": "permissions", - "type": "tuple[]" - } - ], - "internalType": "struct IPluginSetup.PreparedSetupData", - "name": "", - "type": "tuple" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [], - "name": "protocolVersion", - "outputs": [ - { - "internalType": "uint8[3]", - "name": "", - "type": "uint8[3]" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes4", - "name": "_interfaceId", - "type": "bytes4" - } - ], - "name": "supportsInterface", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - } - ], - "bytecode": "0x", - "deployedBytecode": "0x", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/contracts/artifacts/src/plugin/setup/PluginUpgradeableSetup.sol/PluginUpgradeableSetup.dbg.json b/contracts/artifacts/src/plugin/setup/PluginUpgradeableSetup.sol/PluginUpgradeableSetup.dbg.json deleted file mode 100644 index 4058cb44..00000000 --- a/contracts/artifacts/src/plugin/setup/PluginUpgradeableSetup.sol/PluginUpgradeableSetup.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" -} diff --git a/contracts/artifacts/src/plugin/setup/PluginUpgradeableSetup.sol/PluginUpgradeableSetup.json b/contracts/artifacts/src/plugin/setup/PluginUpgradeableSetup.sol/PluginUpgradeableSetup.json deleted file mode 100644 index 00f8b9e9..00000000 --- a/contracts/artifacts/src/plugin/setup/PluginUpgradeableSetup.sol/PluginUpgradeableSetup.json +++ /dev/null @@ -1,298 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "PluginUpgradeableSetup", - "sourceName": "src/plugin/setup/PluginUpgradeableSetup.sol", - "abi": [ - { - "inputs": [ - { - "internalType": "uint16", - "name": "fromBuild", - "type": "uint16" - }, - { - "internalType": "uint16", - "name": "thisBuild", - "type": "uint16" - } - ], - "name": "InvalidUpdatePath", - "type": "error" - }, - { - "inputs": [], - "name": "implementation", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_dao", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "prepareInstallation", - "outputs": [ - { - "internalType": "address", - "name": "plugin", - "type": "address" - }, - { - "components": [ - { - "internalType": "address[]", - "name": "helpers", - "type": "address[]" - }, - { - "components": [ - { - "internalType": "enum PermissionLib.Operation", - "name": "operation", - "type": "uint8" - }, - { - "internalType": "address", - "name": "where", - "type": "address" - }, - { - "internalType": "address", - "name": "who", - "type": "address" - }, - { - "internalType": "address", - "name": "condition", - "type": "address" - }, - { - "internalType": "bytes32", - "name": "permissionId", - "type": "bytes32" - } - ], - "internalType": "struct PermissionLib.MultiTargetPermission[]", - "name": "permissions", - "type": "tuple[]" - } - ], - "internalType": "struct IPluginSetup.PreparedSetupData", - "name": "preparedSetupData", - "type": "tuple" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_dao", - "type": "address" - }, - { - "components": [ - { - "internalType": "address", - "name": "plugin", - "type": "address" - }, - { - "internalType": "address[]", - "name": "currentHelpers", - "type": "address[]" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "internalType": "struct IPluginSetup.SetupPayload", - "name": "_payload", - "type": "tuple" - } - ], - "name": "prepareUninstallation", - "outputs": [ - { - "components": [ - { - "internalType": "enum PermissionLib.Operation", - "name": "operation", - "type": "uint8" - }, - { - "internalType": "address", - "name": "where", - "type": "address" - }, - { - "internalType": "address", - "name": "who", - "type": "address" - }, - { - "internalType": "address", - "name": "condition", - "type": "address" - }, - { - "internalType": "bytes32", - "name": "permissionId", - "type": "bytes32" - } - ], - "internalType": "struct PermissionLib.MultiTargetPermission[]", - "name": "permissions", - "type": "tuple[]" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_dao", - "type": "address" - }, - { - "internalType": "uint16", - "name": "_fromBuild", - "type": "uint16" - }, - { - "components": [ - { - "internalType": "address", - "name": "plugin", - "type": "address" - }, - { - "internalType": "address[]", - "name": "currentHelpers", - "type": "address[]" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "internalType": "struct IPluginSetup.SetupPayload", - "name": "_payload", - "type": "tuple" - } - ], - "name": "prepareUpdate", - "outputs": [ - { - "internalType": "bytes", - "name": "initData", - "type": "bytes" - }, - { - "components": [ - { - "internalType": "address[]", - "name": "helpers", - "type": "address[]" - }, - { - "components": [ - { - "internalType": "enum PermissionLib.Operation", - "name": "operation", - "type": "uint8" - }, - { - "internalType": "address", - "name": "where", - "type": "address" - }, - { - "internalType": "address", - "name": "who", - "type": "address" - }, - { - "internalType": "address", - "name": "condition", - "type": "address" - }, - { - "internalType": "bytes32", - "name": "permissionId", - "type": "bytes32" - } - ], - "internalType": "struct PermissionLib.MultiTargetPermission[]", - "name": "permissions", - "type": "tuple[]" - } - ], - "internalType": "struct IPluginSetup.PreparedSetupData", - "name": "preparedSetupData", - "type": "tuple" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "protocolVersion", - "outputs": [ - { - "internalType": "uint8[3]", - "name": "", - "type": "uint8[3]" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes4", - "name": "_interfaceId", - "type": "bytes4" - } - ], - "name": "supportsInterface", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - } - ], - "bytecode": "0x", - "deployedBytecode": "0x", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/contracts/artifacts/src/utils/deployment/ProxyFactory.sol/ProxyFactory.dbg.json b/contracts/artifacts/src/utils/deployment/ProxyFactory.sol/ProxyFactory.dbg.json deleted file mode 100644 index 4058cb44..00000000 --- a/contracts/artifacts/src/utils/deployment/ProxyFactory.sol/ProxyFactory.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" -} diff --git a/contracts/artifacts/src/utils/deployment/ProxyFactory.sol/ProxyFactory.json b/contracts/artifacts/src/utils/deployment/ProxyFactory.sol/ProxyFactory.json deleted file mode 100644 index d1e38258..00000000 --- a/contracts/artifacts/src/utils/deployment/ProxyFactory.sol/ProxyFactory.json +++ /dev/null @@ -1,86 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "ProxyFactory", - "sourceName": "src/utils/deployment/ProxyFactory.sol", - "abi": [ - { - "inputs": [ - { - "internalType": "address", - "name": "_implementation", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "proxy", - "type": "address" - } - ], - "name": "ProxyCreated", - "type": "event" - }, - { - "inputs": [ - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "deployMinimalProxy", - "outputs": [ - { - "internalType": "address", - "name": "proxy", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "deployUUPSProxy", - "outputs": [ - { - "internalType": "address", - "name": "proxy", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "implementation", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - } - ], - "bytecode": "0x60a060405234801561001057600080fd5b50604051610db2380380610db283398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b608051610d1b6100976000396000818160800152818160cc01526101460152610d1b6000f3fe60806040523480156200001157600080fd5b5060043610620000465760003560e01c80635c5c278b146200004b5780635c60da1b146200007e57806393042ea314620000a5575b600080fd5b620000626200005c366004620004aa565b620000bc565b6040516001600160a01b03909116815260200160405180910390f35b7f000000000000000000000000000000000000000000000000000000000000000062000062565b62000062620000b6366004620004aa565b62000136565b6000620000f36001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016836200016d565b6040516001600160a01b03821681529091507efffc2da0b561cae30d9826d37709e9421c4725faebc226cbbb7ef5fc5e73499060200160405180910390a1919050565b6000620000f36001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001683620001b1565b600082826040516200017f9062000486565b6200018c929190620005b9565b604051809103906000f080158015620001a9573d6000803e3d6000fd5b509392505050565b6000620001c7836001600160a01b0316620001ef565b825190915015620001e957620001e76001600160a01b0382168362000296565b505b92915050565b6000763d602d80600a3d3981f3363d3d373d3d3d363d730000008260601b60e81c176000526e5af43d82803e903d91602b57fd5bf38260781b17602052603760096000f090506001600160a01b038116620002915760405162461bcd60e51b815260206004820152601660248201527f455243313136373a20637265617465206661696c65640000000000000000000060448201526064015b60405180910390fd5b919050565b6060620002dc838360006040518060400160405280601e81526020017f416464726573733a206c6f772d6c6576656c2063616c6c206661696c65640000815250620002e3565b9392505050565b6060824710156200035d5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c0000000000000000000000000000000000000000000000000000606482015260840162000288565b600080866001600160a01b031685876040516200037b9190620005dd565b60006040518083038185875af1925050503d8060008114620003ba576040519150601f19603f3d011682016040523d82523d6000602084013e620003bf565b606091505b5091509150620003d287838387620003df565b925050505b949350505050565b60608315620004535782516000036200044b576001600160a01b0385163b6200044b5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640162000288565b5081620003d7565b620003d783838151156200046a5781518083602001fd5b8060405162461bcd60e51b8152600401620002889190620005fb565b6106fe806200061183390190565b634e487b7160e01b600052604160045260246000fd5b600060208284031215620004bd57600080fd5b813567ffffffffffffffff80821115620004d657600080fd5b818401915084601f830112620004eb57600080fd5b81358181111562000500576200050062000494565b604051601f8201601f19908116603f011681019083821181831017156200052b576200052b62000494565b816040528281528760208487010111156200054557600080fd5b826020860160208301376000928101602001929092525095945050505050565b60005b838110156200058257818101518382015260200162000568565b50506000910152565b60008151808452620005a581602086016020860162000565565b601f01601f19169290920160200192915050565b6001600160a01b0383168152604060208201526000620003d760408301846200058b565b60008251620005f181846020870162000565565b9190910192915050565b602081526000620002dc60208301846200058b56fe60806040526040516106fe3803806106fe83398101604081905261002291610319565b61002e82826000610035565b5050610436565b61003e8361006b565b60008251118061004b5750805b156100665761006483836100ab60201b6100291760201c565b505b505050565b610074816100d7565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606100d083836040518060600160405280602781526020016106d7602791396101a9565b9392505050565b6100ea8161022260201b6100551760201c565b6101515760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b806101887f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61023160201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6060600080856001600160a01b0316856040516101c691906103e7565b600060405180830381855af49150503d8060008114610201576040519150601f19603f3d011682016040523d82523d6000602084013e610206565b606091505b50909250905061021886838387610234565b9695505050505050565b6001600160a01b03163b151590565b90565b606083156102a357825160000361029c576001600160a01b0385163b61029c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610148565b50816102ad565b6102ad83836102b5565b949350505050565b8151156102c55781518083602001fd5b8060405162461bcd60e51b81526004016101489190610403565b634e487b7160e01b600052604160045260246000fd5b60005b838110156103105781810151838201526020016102f8565b50506000910152565b6000806040838503121561032c57600080fd5b82516001600160a01b038116811461034357600080fd5b60208401519092506001600160401b038082111561036057600080fd5b818501915085601f83011261037457600080fd5b815181811115610386576103866102df565b604051601f8201601f19908116603f011681019083821181831017156103ae576103ae6102df565b816040528281528860208487010111156103c757600080fd5b6103d88360208301602088016102f5565b80955050505050509250929050565b600082516103f98184602087016102f5565b9190910192915050565b60208152600082518060208401526104228160408501602087016102f5565b601f01601f19169190910160400192915050565b610292806104456000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b61009f565b565b606061004e838360405180606001604052806027815260200161025f602791396100c3565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e8080156100be573d6000f35b3d6000fd5b6060600080856001600160a01b0316856040516100e0919061020f565b600060405180830381855af49150503d806000811461011b576040519150601f19603f3d011682016040523d82523d6000602084013e610120565b606091505b50915091506101318683838761013b565b9695505050505050565b606083156101af5782516000036101a8576001600160a01b0385163b6101a85760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b50816101b9565b6101b983836101c1565b949350505050565b8151156101d15781518083602001fd5b8060405162461bcd60e51b815260040161019f919061022b565b60005b838110156102065781810151838201526020016101ee565b50506000910152565b600082516102218184602087016101eb565b9190910192915050565b602081526000825180602084015261024a8160408501602087016101eb565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a", - "deployedBytecode": "0x60806040523480156200001157600080fd5b5060043610620000465760003560e01c80635c5c278b146200004b5780635c60da1b146200007e57806393042ea314620000a5575b600080fd5b620000626200005c366004620004aa565b620000bc565b6040516001600160a01b03909116815260200160405180910390f35b7f000000000000000000000000000000000000000000000000000000000000000062000062565b62000062620000b6366004620004aa565b62000136565b6000620000f36001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016836200016d565b6040516001600160a01b03821681529091507efffc2da0b561cae30d9826d37709e9421c4725faebc226cbbb7ef5fc5e73499060200160405180910390a1919050565b6000620000f36001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001683620001b1565b600082826040516200017f9062000486565b6200018c929190620005b9565b604051809103906000f080158015620001a9573d6000803e3d6000fd5b509392505050565b6000620001c7836001600160a01b0316620001ef565b825190915015620001e957620001e76001600160a01b0382168362000296565b505b92915050565b6000763d602d80600a3d3981f3363d3d373d3d3d363d730000008260601b60e81c176000526e5af43d82803e903d91602b57fd5bf38260781b17602052603760096000f090506001600160a01b038116620002915760405162461bcd60e51b815260206004820152601660248201527f455243313136373a20637265617465206661696c65640000000000000000000060448201526064015b60405180910390fd5b919050565b6060620002dc838360006040518060400160405280601e81526020017f416464726573733a206c6f772d6c6576656c2063616c6c206661696c65640000815250620002e3565b9392505050565b6060824710156200035d5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c0000000000000000000000000000000000000000000000000000606482015260840162000288565b600080866001600160a01b031685876040516200037b9190620005dd565b60006040518083038185875af1925050503d8060008114620003ba576040519150601f19603f3d011682016040523d82523d6000602084013e620003bf565b606091505b5091509150620003d287838387620003df565b925050505b949350505050565b60608315620004535782516000036200044b576001600160a01b0385163b6200044b5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640162000288565b5081620003d7565b620003d783838151156200046a5781518083602001fd5b8060405162461bcd60e51b8152600401620002889190620005fb565b6106fe806200061183390190565b634e487b7160e01b600052604160045260246000fd5b600060208284031215620004bd57600080fd5b813567ffffffffffffffff80821115620004d657600080fd5b818401915084601f830112620004eb57600080fd5b81358181111562000500576200050062000494565b604051601f8201601f19908116603f011681019083821181831017156200052b576200052b62000494565b816040528281528760208487010111156200054557600080fd5b826020860160208301376000928101602001929092525095945050505050565b60005b838110156200058257818101518382015260200162000568565b50506000910152565b60008151808452620005a581602086016020860162000565565b601f01601f19169290920160200192915050565b6001600160a01b0383168152604060208201526000620003d760408301846200058b565b60008251620005f181846020870162000565565b9190910192915050565b602081526000620002dc60208301846200058b56fe60806040526040516106fe3803806106fe83398101604081905261002291610319565b61002e82826000610035565b5050610436565b61003e8361006b565b60008251118061004b5750805b156100665761006483836100ab60201b6100291760201c565b505b505050565b610074816100d7565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606100d083836040518060600160405280602781526020016106d7602791396101a9565b9392505050565b6100ea8161022260201b6100551760201c565b6101515760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b806101887f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61023160201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6060600080856001600160a01b0316856040516101c691906103e7565b600060405180830381855af49150503d8060008114610201576040519150601f19603f3d011682016040523d82523d6000602084013e610206565b606091505b50909250905061021886838387610234565b9695505050505050565b6001600160a01b03163b151590565b90565b606083156102a357825160000361029c576001600160a01b0385163b61029c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610148565b50816102ad565b6102ad83836102b5565b949350505050565b8151156102c55781518083602001fd5b8060405162461bcd60e51b81526004016101489190610403565b634e487b7160e01b600052604160045260246000fd5b60005b838110156103105781810151838201526020016102f8565b50506000910152565b6000806040838503121561032c57600080fd5b82516001600160a01b038116811461034357600080fd5b60208401519092506001600160401b038082111561036057600080fd5b818501915085601f83011261037457600080fd5b815181811115610386576103866102df565b604051601f8201601f19908116603f011681019083821181831017156103ae576103ae6102df565b816040528281528860208487010111156103c757600080fd5b6103d88360208301602088016102f5565b80955050505050509250929050565b600082516103f98184602087016102f5565b9190910192915050565b60208152600082518060208401526104228160408501602087016102f5565b601f01601f19169190910160400192915050565b610292806104456000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b61009f565b565b606061004e838360405180606001604052806027815260200161025f602791396100c3565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e8080156100be573d6000f35b3d6000fd5b6060600080856001600160a01b0316856040516100e0919061020f565b600060405180830381855af49150503d806000811461011b576040519150601f19603f3d011682016040523d82523d6000602084013e610120565b606091505b50915091506101318683838761013b565b9695505050505050565b606083156101af5782516000036101a8576001600160a01b0385163b6101a85760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b50816101b9565b6101b983836101c1565b949350505050565b8151156101d15781518083602001fd5b8060405162461bcd60e51b815260040161019f919061022b565b60005b838110156102065781810151838201526020016101ee565b50506000910152565b600082516102218184602087016101eb565b9190910192915050565b602081526000825180602084015261024a8160408501602087016101eb565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/contracts/artifacts/src/utils/deployment/ProxyLib.sol/ProxyLib.dbg.json b/contracts/artifacts/src/utils/deployment/ProxyLib.sol/ProxyLib.dbg.json deleted file mode 100644 index 4058cb44..00000000 --- a/contracts/artifacts/src/utils/deployment/ProxyLib.sol/ProxyLib.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" -} diff --git a/contracts/artifacts/src/utils/deployment/ProxyLib.sol/ProxyLib.json b/contracts/artifacts/src/utils/deployment/ProxyLib.sol/ProxyLib.json deleted file mode 100644 index 131accfd..00000000 --- a/contracts/artifacts/src/utils/deployment/ProxyLib.sol/ProxyLib.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "ProxyLib", - "sourceName": "src/utils/deployment/ProxyLib.sol", - "abi": [], - "bytecode": "0x602d6037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a", - "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/contracts/artifacts/src/utils/versioning/IProtocolVersion.sol/IProtocolVersion.dbg.json b/contracts/artifacts/src/utils/versioning/IProtocolVersion.sol/IProtocolVersion.dbg.json deleted file mode 100644 index 4058cb44..00000000 --- a/contracts/artifacts/src/utils/versioning/IProtocolVersion.sol/IProtocolVersion.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" -} diff --git a/contracts/artifacts/src/utils/versioning/IProtocolVersion.sol/IProtocolVersion.json b/contracts/artifacts/src/utils/versioning/IProtocolVersion.sol/IProtocolVersion.json deleted file mode 100644 index 08f85d0c..00000000 --- a/contracts/artifacts/src/utils/versioning/IProtocolVersion.sol/IProtocolVersion.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "IProtocolVersion", - "sourceName": "src/utils/versioning/IProtocolVersion.sol", - "abi": [ - { - "inputs": [], - "name": "protocolVersion", - "outputs": [ - { - "internalType": "uint8[3]", - "name": "_version", - "type": "uint8[3]" - } - ], - "stateMutability": "view", - "type": "function" - } - ], - "bytecode": "0x", - "deployedBytecode": "0x", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/contracts/artifacts/src/utils/versioning/ProtocolVersion.sol/ProtocolVersion.dbg.json b/contracts/artifacts/src/utils/versioning/ProtocolVersion.sol/ProtocolVersion.dbg.json deleted file mode 100644 index 4058cb44..00000000 --- a/contracts/artifacts/src/utils/versioning/ProtocolVersion.sol/ProtocolVersion.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" -} diff --git a/contracts/artifacts/src/utils/versioning/ProtocolVersion.sol/ProtocolVersion.json b/contracts/artifacts/src/utils/versioning/ProtocolVersion.sol/ProtocolVersion.json deleted file mode 100644 index 1800ace1..00000000 --- a/contracts/artifacts/src/utils/versioning/ProtocolVersion.sol/ProtocolVersion.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "ProtocolVersion", - "sourceName": "src/utils/versioning/ProtocolVersion.sol", - "abi": [ - { - "inputs": [], - "name": "protocolVersion", - "outputs": [ - { - "internalType": "uint8[3]", - "name": "", - "type": "uint8[3]" - } - ], - "stateMutability": "pure", - "type": "function" - } - ], - "bytecode": "0x", - "deployedBytecode": "0x", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/contracts/artifacts/src/utils/versioning/VersionComparisonLib.sol/VersionComparisonLib.dbg.json b/contracts/artifacts/src/utils/versioning/VersionComparisonLib.sol/VersionComparisonLib.dbg.json deleted file mode 100644 index 4058cb44..00000000 --- a/contracts/artifacts/src/utils/versioning/VersionComparisonLib.sol/VersionComparisonLib.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../build-info/58fb59cc656bfddaae1de55a017c315b.json" -} diff --git a/contracts/artifacts/src/utils/versioning/VersionComparisonLib.sol/VersionComparisonLib.json b/contracts/artifacts/src/utils/versioning/VersionComparisonLib.sol/VersionComparisonLib.json deleted file mode 100644 index 8e192748..00000000 --- a/contracts/artifacts/src/utils/versioning/VersionComparisonLib.sol/VersionComparisonLib.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "VersionComparisonLib", - "sourceName": "src/utils/versioning/VersionComparisonLib.sol", - "abi": [], - "bytecode": "0x602d6037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a", - "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c6343000811000a", - "linkReferences": {}, - "deployedLinkReferences": {} -} From b2338381be90ad6ee212fb592c83670bc9d5755b Mon Sep 17 00:00:00 2001 From: Giorgi Lagidze Date: Wed, 14 Aug 2024 14:16:32 +0400 Subject: [PATCH 03/15] fix calldata to memory --- contracts/src/plugin/Plugin.sol | 4 ++-- contracts/src/plugin/PluginCloneable.sol | 4 ++-- contracts/src/plugin/PluginUUPSUpgradeable.sol | 4 ++-- contracts/src/plugin/extensions/proposal/Proposal.sol | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/contracts/src/plugin/Plugin.sol b/contracts/src/plugin/Plugin.sol index 7f912c88..0b5d5997 100644 --- a/contracts/src/plugin/Plugin.sol +++ b/contracts/src/plugin/Plugin.sol @@ -55,7 +55,7 @@ abstract contract Plugin is IPlugin, ERC165, DaoAuthorizable, ProtocolVersion { /// @return failureMap address of the implementation contract. function _execute( bytes32 _callId, - IDAO.Action[] calldata _actions, + IDAO.Action[] memory _actions, uint256 _allowFailureMap ) internal virtual returns (bytes[] memory execResults, uint256 failureMap) { (execResults, failureMap) = IDAO(target).execute(_callId, _actions, _allowFailureMap); @@ -71,7 +71,7 @@ abstract contract Plugin is IPlugin, ERC165, DaoAuthorizable, ProtocolVersion { function _execute( address _target, bytes32 _callId, - IDAO.Action[] calldata _actions, + IDAO.Action[] memory _actions, uint256 _allowFailureMap ) internal virtual returns (bytes[] memory execResults, uint256 failureMap) { (execResults, failureMap) = IDAO(_target).execute(_callId, _actions, _allowFailureMap); diff --git a/contracts/src/plugin/PluginCloneable.sol b/contracts/src/plugin/PluginCloneable.sol index 9ff70fea..3f5d86ab 100644 --- a/contracts/src/plugin/PluginCloneable.sol +++ b/contracts/src/plugin/PluginCloneable.sol @@ -69,7 +69,7 @@ abstract contract PluginCloneable is /// @return failureMap address of the implementation contract. function _execute( bytes32 _callId, - IDAO.Action[] calldata _actions, + IDAO.Action[] memory _actions, uint256 _allowFailureMap ) internal virtual returns (bytes[] memory execResults, uint256 failureMap) { (execResults, failureMap) = IDAO(target).execute(_callId, _actions, _allowFailureMap); @@ -85,7 +85,7 @@ abstract contract PluginCloneable is function _execute( address _target, bytes32 _callId, - IDAO.Action[] calldata _actions, + IDAO.Action[] memory _actions, uint256 _allowFailureMap ) internal virtual returns (bytes[] memory execResults, uint256 failureMap) { (execResults, failureMap) = IDAO(_target).execute(_callId, _actions, _allowFailureMap); diff --git a/contracts/src/plugin/PluginUUPSUpgradeable.sol b/contracts/src/plugin/PluginUUPSUpgradeable.sol index a17abcb3..a3159438 100644 --- a/contracts/src/plugin/PluginUUPSUpgradeable.sol +++ b/contracts/src/plugin/PluginUUPSUpgradeable.sol @@ -83,7 +83,7 @@ abstract contract PluginUUPSUpgradeable is /// @return failureMap address of the implementation contract. function _execute( bytes32 _callId, - IDAO.Action[] calldata _actions, + IDAO.Action[] memory _actions, uint256 _allowFailureMap ) internal virtual returns (bytes[] memory execResults, uint256 failureMap) { (execResults, failureMap) = IDAO(target).execute(_callId, _actions, _allowFailureMap); @@ -99,7 +99,7 @@ abstract contract PluginUUPSUpgradeable is function _execute( address _target, bytes32 _callId, - IDAO.Action[] calldata _actions, + IDAO.Action[] memory _actions, uint256 _allowFailureMap ) internal virtual returns (bytes[] memory execResults, uint256 failureMap) { (execResults, failureMap) = IDAO(_target).execute(_callId, _actions, _allowFailureMap); diff --git a/contracts/src/plugin/extensions/proposal/Proposal.sol b/contracts/src/plugin/extensions/proposal/Proposal.sol index 54a50c66..1538c23e 100644 --- a/contracts/src/plugin/extensions/proposal/Proposal.sol +++ b/contracts/src/plugin/extensions/proposal/Proposal.sol @@ -22,7 +22,7 @@ abstract contract Proposal is IProposal, ERC165 { // this will not return the correct value anyways anymore. /// @inheritdoc IProposal function proposalCount() public view override returns (uint256) { - return proposalCounter.current(); + return 0; } /// @notice Checks if this or the parent contract supports an interface by its ID. From decd4ff3b6132a3631f26cae8d8dd9077b19b630 Mon Sep 17 00:00:00 2001 From: Giorgi Lagidze Date: Wed, 14 Aug 2024 16:27:26 +0400 Subject: [PATCH 04/15] add tests --- .../src/mocks/plugin/PluginCloneableMock.sol | 17 ++ contracts/src/mocks/plugin/PluginMock.sol | 17 ++ .../plugin/PluginUUPSUpgradeableMock.sol | 17 ++ .../extensions/proposal/ProposalMock.sol | 22 ++ .../proposal/ProposalUpgradeableMock.sol | 22 ++ contracts/src/plugin/Plugin.sol | 27 +- contracts/src/plugin/PluginCloneable.sol | 27 +- .../src/plugin/PluginUUPSUpgradeable.sol | 31 ++- .../plugin/extensions/proposal/IProposal.sol | 3 +- .../plugin/extensions/proposal/Proposal.sol | 13 +- .../proposal/ProposalUpgradeable.sol | 4 +- contracts/test/plugin/extensions/proposal.ts | 239 ++---------------- contracts/test/plugin/plugin-clonable.ts | 100 ++++++++ .../test/plugin/plugin-uups-upgradeable.ts | 100 ++++++++ contracts/test/plugin/plugin.ts | 94 +++++++ 15 files changed, 487 insertions(+), 246 deletions(-) create mode 100644 contracts/src/mocks/plugin/extensions/proposal/ProposalMock.sol create mode 100644 contracts/src/mocks/plugin/extensions/proposal/ProposalUpgradeableMock.sol diff --git a/contracts/src/mocks/plugin/PluginCloneableMock.sol b/contracts/src/mocks/plugin/PluginCloneableMock.sol index 71dfd8bf..de4c5bbc 100644 --- a/contracts/src/mocks/plugin/PluginCloneableMock.sol +++ b/contracts/src/mocks/plugin/PluginCloneableMock.sol @@ -16,6 +16,23 @@ contract PluginCloneableMockBuild1 is PluginCloneable { __PluginCloneable_init(_dao); state1 = 1; } + + function execute( + uint256 _callId, + IDAO.Action[] memory _actions, + uint256 _allowFailureMap + ) external returns (bytes[] memory execResults, uint256 failureMap) { + (execResults, failureMap) = _execute(bytes32(_callId), _actions, _allowFailureMap); + } + + function execute( + address _target, + uint256 _callId, + IDAO.Action[] memory _actions, + uint256 _allowFailureMap + ) external returns (bytes[] memory execResults, uint256 failureMap) { + (execResults, failureMap) = _execute(_target, bytes32(_callId), _actions, _allowFailureMap); + } } /// @notice A mock cloneable plugin to be deployed via the minimal proxy pattern. diff --git a/contracts/src/mocks/plugin/PluginMock.sol b/contracts/src/mocks/plugin/PluginMock.sol index 4fdaa558..3f1ab5e2 100644 --- a/contracts/src/mocks/plugin/PluginMock.sol +++ b/contracts/src/mocks/plugin/PluginMock.sol @@ -14,4 +14,21 @@ contract PluginMockBuild1 is Plugin { constructor(IDAO _dao) Plugin(_dao) { state1 = 1; } + + function execute( + uint256 _callId, + IDAO.Action[] memory _actions, + uint256 _allowFailureMap + ) external returns (bytes[] memory execResults, uint256 failureMap) { + (execResults, failureMap) = _execute(bytes32(_callId), _actions, _allowFailureMap); + } + + function execute( + address _target, + uint256 _callId, + IDAO.Action[] memory _actions, + uint256 _allowFailureMap + ) external returns (bytes[] memory execResults, uint256 failureMap) { + (execResults, failureMap) = _execute(_target, bytes32(_callId), _actions, _allowFailureMap); + } } diff --git a/contracts/src/mocks/plugin/PluginUUPSUpgradeableMock.sol b/contracts/src/mocks/plugin/PluginUUPSUpgradeableMock.sol index ea9d5306..e6429577 100644 --- a/contracts/src/mocks/plugin/PluginUUPSUpgradeableMock.sol +++ b/contracts/src/mocks/plugin/PluginUUPSUpgradeableMock.sol @@ -16,6 +16,23 @@ contract PluginUUPSUpgradeableMockBuild1 is PluginUUPSUpgradeable { __PluginUUPSUpgradeable_init(_dao); state1 = 1; } + + function execute( + uint256 _callId, + IDAO.Action[] memory _actions, + uint256 _allowFailureMap + ) external returns (bytes[] memory execResults, uint256 failureMap) { + (execResults, failureMap) = _execute(bytes32(_callId), _actions, _allowFailureMap); + } + + function execute( + address _target, + uint256 _callId, + IDAO.Action[] memory _actions, + uint256 _allowFailureMap + ) external returns (bytes[] memory execResults, uint256 failureMap) { + (execResults, failureMap) = _execute(_target, bytes32(_callId), _actions, _allowFailureMap); + } } /// @notice A mock upgradeable plugin to be deployed via the UUPS proxy pattern. diff --git a/contracts/src/mocks/plugin/extensions/proposal/ProposalMock.sol b/contracts/src/mocks/plugin/extensions/proposal/ProposalMock.sol new file mode 100644 index 00000000..b4624926 --- /dev/null +++ b/contracts/src/mocks/plugin/extensions/proposal/ProposalMock.sol @@ -0,0 +1,22 @@ +// SPDX-License-Identifier: AGPL-3.0-or-later + +pragma solidity ^0.8.8; + +import {Proposal} from "../../../../plugin/extensions/proposal/Proposal.sol"; +import {IDAO} from "../../../../dao/IDAO.sol"; + +/// @notice A mock contract. +/// @dev DO NOT USE IN PRODUCTION! +contract ProposalMock is Proposal { + // We don't need to test these below functions as they will be tested in the actual plugins. + // This mock contract is only used to test `supportsInterface` function. + + function createProposal( + bytes memory data, + IDAO.Action[] memory actions, + uint64 startDate, + uint64 endDate + ) external returns (uint256 proposalId) {} + + function canExecute(uint256 proposalId) external returns (bool) {} +} diff --git a/contracts/src/mocks/plugin/extensions/proposal/ProposalUpgradeableMock.sol b/contracts/src/mocks/plugin/extensions/proposal/ProposalUpgradeableMock.sol new file mode 100644 index 00000000..7595cba6 --- /dev/null +++ b/contracts/src/mocks/plugin/extensions/proposal/ProposalUpgradeableMock.sol @@ -0,0 +1,22 @@ +// SPDX-License-Identifier: AGPL-3.0-or-later + +pragma solidity ^0.8.8; + +import {ProposalUpgradeable} from "../../../../plugin/extensions/proposal/ProposalUpgradeable.sol"; +import {IDAO} from "../../../../dao/IDAO.sol"; + +/// @notice A mock contract. +/// @dev DO NOT USE IN PRODUCTION! +contract ProposalUpgradeableMock is ProposalUpgradeable { + // We don't need to test these below functions as they will be tested in the actual plugins. + // This mock contract is only used to test `supportsInterface` function. + + function createProposal( + bytes memory data, + IDAO.Action[] memory actions, + uint64 startDate, + uint64 endDate + ) external returns (uint256 proposalId) {} + + function canExecute(uint256 proposalId) external returns (bool) {} +} diff --git a/contracts/src/plugin/Plugin.sol b/contracts/src/plugin/Plugin.sol index 0b5d5997..939cc72d 100644 --- a/contracts/src/plugin/Plugin.sol +++ b/contracts/src/plugin/Plugin.sol @@ -15,11 +15,14 @@ import {IPlugin} from "./IPlugin.sol"; /// @notice An abstract, non-upgradeable contract to inherit from when creating a plugin being deployed via the `new` keyword. /// @custom:security-contact sirt@aragon.org abstract contract Plugin is IPlugin, ERC165, DaoAuthorizable, ProtocolVersion { - address public target; + address private target; /// @dev Emitted each time the Target is set. event TargetSet(address indexed previousTarget, address indexed newTarget); + /// @notice The ID of the permission required to call the `setTarget` function. + bytes32 public constant SET_TARGET_PERMISSION_ID = keccak256("SET_TARGET_PERMISSION"); + /// @notice Constructs the plugin by storing the associated DAO. /// @param _dao The DAO contract. constructor(IDAO _dao) DaoAuthorizable(_dao) {} @@ -30,11 +33,14 @@ abstract contract Plugin is IPlugin, ERC165, DaoAuthorizable, ProtocolVersion { } /// @dev Sets the target to a new target (`newTarget`). - /// @notice Can only be called by the current owner. TODO - function setTarget(address _target) public { - address previousTarget = target; - target = _target; - emit TargetSet(previousTarget, _target); + /// @param _target The target contract. + function setTarget(address _target) public auth(SET_TARGET_PERMISSION_ID) { + _setTarget(_target); + } + + /// @notice Returns the currently set target contract. + function getTarget() public view returns (address) { + return target; } /// @notice Checks if this or the parent contract supports an interface by its ID. @@ -44,9 +50,18 @@ abstract contract Plugin is IPlugin, ERC165, DaoAuthorizable, ProtocolVersion { return _interfaceId == type(IPlugin).interfaceId || _interfaceId == type(IProtocolVersion).interfaceId || + _interfaceId == this.setTarget.selector ^ this.getTarget.selector || super.supportsInterface(_interfaceId); } + /// @notice Sets the target to a new target (`newTarget`). + /// @param _target The target contract. + function _setTarget(address _target) internal virtual { + address previousTarget = target; + target = _target; + emit TargetSet(previousTarget, _target); + } + /// @notice Forwards the actions to the currently set `target` for the execution. /// @param _callId Identifier for this execution. /// @param _actions actions that will be eventually called. diff --git a/contracts/src/plugin/PluginCloneable.sol b/contracts/src/plugin/PluginCloneable.sol index 3f5d86ab..c9c01437 100644 --- a/contracts/src/plugin/PluginCloneable.sol +++ b/contracts/src/plugin/PluginCloneable.sol @@ -20,11 +20,14 @@ abstract contract PluginCloneable is DaoAuthorizableUpgradeable, ProtocolVersion { - address public target; + address private target; /// @dev Emitted each time the Target is set. event TargetSet(address indexed previousTarget, address indexed newTarget); + /// @notice The ID of the permission required to call the `setTarget` function. + bytes32 public constant SET_TARGET_PERMISSION_ID = keccak256("SET_TARGET_PERMISSION"); + /// @notice Disables the initializers on the implementation contract to prevent it from being left uninitialized. /// @custom:oz-upgrades-unsafe-allow constructor constructor() { @@ -39,11 +42,9 @@ abstract contract PluginCloneable is } /// @dev Sets the target to a new target (`newTarget`). - /// @notice Can only be called by the current owner. TODO - function setTarget(address _target) public { - address previousTarget = target; - target = _target; - emit TargetSet(previousTarget, _target); + /// @param _target The target contract. + function setTarget(address _target) public auth(SET_TARGET_PERMISSION_ID) { + _setTarget(_target); } /// @inheritdoc IPlugin @@ -51,6 +52,11 @@ abstract contract PluginCloneable is return PluginType.Cloneable; } + /// @notice Returns the currently set target contract. + function getTarget() public view returns (address) { + return target; + } + /// @notice Checks if this or the parent contract supports an interface by its ID. /// @param _interfaceId The ID of the interface. /// @return Returns `true` if the interface is supported. @@ -58,9 +64,18 @@ abstract contract PluginCloneable is return _interfaceId == type(IPlugin).interfaceId || _interfaceId == type(IProtocolVersion).interfaceId || + _interfaceId == this.setTarget.selector ^ this.getTarget.selector || super.supportsInterface(_interfaceId); } + /// @notice Sets the target to a new target (`newTarget`). + /// @param _target The target contract. + function _setTarget(address _target) internal virtual { + address previousTarget = target; + target = _target; + emit TargetSet(previousTarget, _target); + } + /// @notice Forwards the actions to the currently set `target` for the execution. /// @param _callId Identifier for this execution. /// @param _actions actions that will be eventually called. diff --git a/contracts/src/plugin/PluginUUPSUpgradeable.sol b/contracts/src/plugin/PluginUUPSUpgradeable.sol index a3159438..ab13dc0b 100644 --- a/contracts/src/plugin/PluginUUPSUpgradeable.sol +++ b/contracts/src/plugin/PluginUUPSUpgradeable.sol @@ -24,11 +24,17 @@ abstract contract PluginUUPSUpgradeable is ProtocolVersion { // NOTE: When adding new state variables to the contract, the size of `_gap` has to be adapted below as well. - address public target; + address private target; /// @dev Emitted each time the Target is set. event TargetSet(address indexed previousTarget, address indexed newTarget); + /// @notice The ID of the permission required to call the `setTarget` function. + bytes32 public constant SET_TARGET_PERMISSION_ID = keccak256("SET_TARGET_PERMISSION"); + + /// @notice The ID of the permission required to call the `_authorizeUpgrade` function. + bytes32 public constant UPGRADE_PLUGIN_PERMISSION_ID = keccak256("UPGRADE_PLUGIN_PERMISSION"); + /// @notice Disables the initializers on the implementation contract to prevent it from being left uninitialized. /// @custom:oz-upgrades-unsafe-allow constructor constructor() { @@ -40,8 +46,10 @@ abstract contract PluginUUPSUpgradeable is return PluginType.UUPS; } - /// @notice The ID of the permission required to call the `_authorizeUpgrade` function. - bytes32 public constant UPGRADE_PLUGIN_PERMISSION_ID = keccak256("UPGRADE_PLUGIN_PERMISSION"); + /// @notice Returns the currently set target contract. + function getTarget() public view returns (address) { + return target; + } /// @notice Initializes the plugin by storing the associated DAO. /// @param _dao The DAO contract. @@ -51,11 +59,9 @@ abstract contract PluginUUPSUpgradeable is } /// @dev Sets the target to a new target (`newTarget`). - /// @notice Can only be called by the current owner. TODO - function setTarget(address _target) public { - address previousTarget = target; - target = _target; - emit TargetSet(previousTarget, _target); + /// @param _target The target contract. + function setTarget(address _target) public auth(SET_TARGET_PERMISSION_ID) { + _setTarget(_target); } /// @notice Checks if an interface is supported by this or its parent contract. @@ -66,6 +72,7 @@ abstract contract PluginUUPSUpgradeable is _interfaceId == type(IPlugin).interfaceId || _interfaceId == type(IProtocolVersion).interfaceId || _interfaceId == type(IERC1822ProxiableUpgradeable).interfaceId || + _interfaceId == this.setTarget.selector ^ this.getTarget.selector || super.supportsInterface(_interfaceId); } @@ -75,6 +82,14 @@ abstract contract PluginUUPSUpgradeable is return _getImplementation(); } + /// @notice Sets the target to a new target (`newTarget`). + /// @param _target The target contract. + function _setTarget(address _target) internal virtual { + address previousTarget = target; + target = _target; + emit TargetSet(previousTarget, _target); + } + /// @notice Forwards the actions to the currently set `target` for the execution. /// @param _callId Identifier for this execution. /// @param _actions actions that will be eventually called. diff --git a/contracts/src/plugin/extensions/proposal/IProposal.sol b/contracts/src/plugin/extensions/proposal/IProposal.sol index a74d0f67..93f7305d 100644 --- a/contracts/src/plugin/extensions/proposal/IProposal.sol +++ b/contracts/src/plugin/extensions/proposal/IProposal.sol @@ -50,7 +50,8 @@ interface IProposal { function canExecute(uint256 proposalId) external returns (bool); /// @notice Returns the proposal count determining the next proposal ID. - /// @dev This function is deprecated TODO: + /// @dev This function has been deprecated but due to backwards compatibility, it still stays in the interface + /// but returns maximum value of uint256 to let consumers know not to depend on it anymore. /// @return The proposal count. function proposalCount() external view returns (uint256); } diff --git a/contracts/src/plugin/extensions/proposal/Proposal.sol b/contracts/src/plugin/extensions/proposal/Proposal.sol index 1538c23e..eb16e1de 100644 --- a/contracts/src/plugin/extensions/proposal/Proposal.sol +++ b/contracts/src/plugin/extensions/proposal/Proposal.sol @@ -2,10 +2,8 @@ pragma solidity ^0.8.8; -import {Counters} from "@openzeppelin/contracts/utils/Counters.sol"; import {ERC165} from "@openzeppelin/contracts/utils/introspection/ERC165.sol"; -import {IDAO} from "../../../dao/IDAO.sol"; import {IProposal} from "./IProposal.sol"; /// @title Proposal @@ -13,16 +11,9 @@ import {IProposal} from "./IProposal.sol"; /// @notice An abstract contract containing the traits and internal functionality to create and execute proposals that can be inherited by non-upgradeable DAO plugins. /// @custom:security-contact sirt@aragon.org abstract contract Proposal is IProposal, ERC165 { - using Counters for Counters.Counter; - - /// @notice The incremental ID for proposals and executions. - Counters.Counter private proposalCounter; - - /// Shall we remove this ? Does anyone use this ? if we keep having this, - // this will not return the correct value anyways anymore. /// @inheritdoc IProposal - function proposalCount() public view override returns (uint256) { - return 0; + function proposalCount() public pure override returns (uint256) { + return type(uint256).max; } /// @notice Checks if this or the parent contract supports an interface by its ID. diff --git a/contracts/src/plugin/extensions/proposal/ProposalUpgradeable.sol b/contracts/src/plugin/extensions/proposal/ProposalUpgradeable.sol index fce033f7..283be610 100644 --- a/contracts/src/plugin/extensions/proposal/ProposalUpgradeable.sol +++ b/contracts/src/plugin/extensions/proposal/ProposalUpgradeable.sol @@ -19,8 +19,8 @@ abstract contract ProposalUpgradeable is IProposal, ERC165Upgradeable { CountersUpgradeable.Counter private proposalCounter; /// @inheritdoc IProposal - function proposalCount() public view override returns (uint256) { - return proposalCounter.current(); + function proposalCount() public pure override returns (uint256) { + return type(uint256).max; } /// @notice Checks if this or the parent contract supports an interface by its ID. diff --git a/contracts/test/plugin/extensions/proposal.ts b/contracts/test/plugin/extensions/proposal.ts index d43d2bb1..5e9958e7 100644 --- a/contracts/test/plugin/extensions/proposal.ts +++ b/contracts/test/plugin/extensions/proposal.ts @@ -2,39 +2,20 @@ import { DAOMock, DAOMock__factory, IDAO, - IDAO__factory, IProposal__factory, ProposalMock, ProposalUpgradeableMock, ProposalMock__factory, ProposalUpgradeableMock__factory, } from '../../../typechain'; -import {ExecutedEvent} from '../../../typechain/src/dao/IDAO'; import {erc165ComplianceTests} from '../../helpers'; -import {findEventTopicLog, getInterfaceId} from '@aragon/osx-commons-sdk'; +import {getInterfaceId} from '@aragon/osx-commons-sdk'; import {IProposal__factory as IProposal_V1_0_0__factory} from '@aragon/osx-ethers-v1.0.0'; -import {loadFixture, time} from '@nomicfoundation/hardhat-network-helpers'; -import {SignerWithAddress} from '@nomiclabs/hardhat-ethers/signers'; +import {loadFixture} from '@nomicfoundation/hardhat-network-helpers'; import {expect} from 'chai'; import {BigNumberish, BytesLike} from 'ethers'; import {ethers} from 'hardhat'; -export type ProposalData = { - metadata: BytesLike; - startDate: BigNumberish; - endDate: BigNumberish; - actions: IDAO.ActionStruct[]; - allowFailureMap: BigNumberish; -}; - -describe('IProposal', function () { - it('has the same interface ID as its initial version introduced in v1.0.0', async () => { - const current = getInterfaceId(IProposal__factory.createInterface()); - const initial = getInterfaceId(IProposal_V1_0_0__factory.createInterface()); - expect(current).to.equal(initial); - }); -}); - describe('Proposal', async () => { proposalBaseTests(proposalFixture); }); @@ -45,231 +26,65 @@ describe('ProposalUpgradeable', async () => { // Contains tests for functionality common for `ProposalMock` and `ProposalUpgradeableMock` to avoid duplication. function proposalBaseTests(fixture: () => Promise) { - it('counts proposals', async () => { - const {alice, bob, proposalMock, exampleData} = await loadFixture(fixture); - - expect(await proposalMock.proposalCount()).to.equal(0); - - const creator = bob; - - await proposalMock - .connect(alice) - .createProposal( - creator.address, - exampleData.metadata, - exampleData.startDate, - exampleData.endDate, - exampleData.actions, - exampleData.allowFailureMap - ); - - expect(await proposalMock.proposalCount()).to.equal(1); - }); - - it('creates proposalIds', async () => { + it('returns max value of integer for backwards-compatibility', async () => { const {proposalMock} = await loadFixture(fixture); - const expectedProposalId = 0; - const proposalId = await proposalMock.callStatic.createProposalId(); - - expect(proposalId).to.equal(expectedProposalId); - }); - - it('creates proposals', async () => { - const {alice, bob, proposalMock, exampleData} = await loadFixture(fixture); - - const expectedProposalId = 0; - const creator = bob; - - const proposalId = await proposalMock - .connect(alice) - .callStatic.createProposal( - creator.address, - exampleData.metadata, - exampleData.startDate, - exampleData.endDate, - exampleData.actions, - exampleData.allowFailureMap - ); - - expect(proposalId).to.equal(expectedProposalId); - }); - - it('emits the `ProposalCreated` event', async () => { - const {alice, bob, proposalMock, exampleData} = await loadFixture(fixture); - - const expectedProposalId = 0; - const creator = bob; - - await expect( - proposalMock - .connect(alice) - .createProposal( - creator.address, - exampleData.metadata, - exampleData.startDate, - exampleData.endDate, - exampleData.actions, - exampleData.allowFailureMap - ) - ) - .to.emit(proposalMock, 'ProposalCreated') - .withArgs( - expectedProposalId, - creator.address, - exampleData.startDate, - exampleData.endDate, - exampleData.metadata, - exampleData.actions, - exampleData.allowFailureMap - ); - }); - it('executes proposals', async () => { - const {alice, daoMock, proposalMock, exampleData} = await loadFixture( - fixture + expect(await proposalMock.proposalCount()).to.equal( + ethers.constants.MaxUint256 ); - - const expectedExecResults: string[] = []; - const expectedFailureMap: BigNumberish = 0; - - const proposalId = 0; - const [execResults, failureMap] = await proposalMock - .connect(alice) - .callStatic.executeProposal( - daoMock.address, - proposalId, - exampleData.actions, - exampleData.allowFailureMap - ); - - expect(execResults).to.deep.equal(expectedExecResults); - expect(failureMap).to.equal(expectedFailureMap); - }); - - it('emits the `ProposalExecuted` event', async () => { - const {alice, daoMock, proposalMock, exampleData} = await loadFixture( - fixture - ); - - const proposalId = 0; - - await expect( - proposalMock - .connect(alice) - .executeProposal( - daoMock.address, - proposalId, - exampleData.actions, - exampleData.allowFailureMap - ) - ) - .to.emit(proposalMock, 'ProposalExecuted') - .withArgs(proposalId); - }); - - it('emits the `Executed` event on the executing DAO', async () => { - const {alice, daoMock, proposalMock, exampleData} = await loadFixture( - fixture - ); - - const proposalId = 0; - const proposalIdAsBytes32 = ethers.utils.hexZeroPad( - ethers.utils.hexlify(proposalId), - 32 - ); - - const expectedActor = proposalMock.address; - const expectedExecResults: string[] = []; - const expectedFailureMap: BigNumberish = 0; - - const tx = await proposalMock - .connect(alice) - .executeProposal( - daoMock.address, - proposalId, - exampleData.actions, - exampleData.allowFailureMap - ); - const event = findEventTopicLog( - await tx.wait(), - IDAO__factory.createInterface(), - 'Executed' - ); - - expect(event.args.actor).to.equal(expectedActor); - expect(event.args.callId).to.equal(proposalIdAsBytes32); - expect(event.args.actions).to.deep.equal(exampleData.actions); - expect(event.args.allowFailureMap).to.equal(exampleData.allowFailureMap); - expect(event.args.failureMap).to.equal(expectedFailureMap); - expect(event.args.execResults).to.deep.equal(expectedExecResults); }); describe('ERC-165', async () => { it('supports the `ERC-165` standard', async () => { - const {alice, proposalMock} = await loadFixture(fixture); - await erc165ComplianceTests(proposalMock, alice); + const {proposalMock} = await loadFixture(fixture); + const signers = await ethers.getSigners(); + await erc165ComplianceTests(proposalMock, signers[0]); }); - it('supports the `IProposal` interface', async () => { + it('supports the `IProposal` interface for the new as well as old versions', async () => { const {proposalMock} = await loadFixture(fixture); - const iface = IProposal__factory.createInterface(); - expect(await proposalMock.supportsInterface(getInterfaceId(iface))).to.be - .true; + const newIface = IProposal__factory.createInterface(); + expect(await proposalMock.supportsInterface(getInterfaceId(newIface))).to + .be.true; + + const oldIface = IProposal_V1_0_0__factory.createInterface(); + expect(await proposalMock.supportsInterface(getInterfaceId(oldIface))).to + .be.true; }); }); } type BaseFixtureResult = { - alice: SignerWithAddress; - bob: SignerWithAddress; daoMock: DAOMock; - exampleData: ProposalData; }; async function baseFixture(): Promise { - const [alice, bob] = await ethers.getSigners(); - const daoMock = await new DAOMock__factory(alice).deploy(); - - const uri = ethers.utils.hexlify( - ethers.utils.toUtf8Bytes( - 'ipfs://QmTMcfhxgYA3ziwpnhEg1K3aFn7ixMH9dBxWXs5YTJdZwR' - ) - ); - const current = await time.latest(); + const signers = await ethers.getSigners(); + const daoMock = await new DAOMock__factory(signers[0]).deploy(); - const exampleData = { - metadata: uri, - startDate: current, - endDate: current + 12, - actions: [], - allowFailureMap: 0, - }; - - return {alice, bob, daoMock, exampleData}; + return {daoMock}; } type FixtureResult = { proposalMock: ProposalMock | ProposalUpgradeableMock; - alice: SignerWithAddress; - bob: SignerWithAddress; daoMock: DAOMock; - exampleData: ProposalData; }; async function proposalFixture(): Promise { - const {alice, bob, daoMock, exampleData} = await baseFixture(); - - const proposalMock = await new ProposalMock__factory(alice).deploy(); + const {daoMock} = await baseFixture(); + const signers = await ethers.getSigners(); + const proposalMock = await new ProposalMock__factory(signers[0]).deploy(); - return {alice, bob, proposalMock, daoMock, exampleData}; + return {proposalMock, daoMock}; } async function proposalUpgradeableFixture(): Promise { - const {alice, bob, daoMock, exampleData} = await baseFixture(); + const {daoMock} = await baseFixture(); + const signers = await ethers.getSigners(); const proposalMock = await new ProposalUpgradeableMock__factory( - alice + signers[0] ).deploy(); - return {alice, bob, proposalMock, daoMock, exampleData}; + return {proposalMock, daoMock}; } diff --git a/contracts/test/plugin/plugin-clonable.ts b/contracts/test/plugin/plugin-clonable.ts index 4166216e..072d30c9 100644 --- a/contracts/test/plugin/plugin-clonable.ts +++ b/contracts/test/plugin/plugin-clonable.ts @@ -112,6 +112,17 @@ describe('PluginCloneable', function () { expect(await implementation.supportsInterface(getInterfaceId(iface))).to .be.true; }); + + it('supports the `setTarget^getTarget` interface', async () => { + const {implementation} = await loadFixture(fixture); + const iface = PluginCloneableMockBuild1__factory.createInterface(); + + let interfaceId = ethers.BigNumber.from(iface.getSighash('setTarget')) + .xor(ethers.BigNumber.from(iface.getSighash('getTarget'))) + .toHexString(); + + expect(await implementation.supportsInterface(interfaceId)).to.be.true; + }); }); describe('Protocol version', async () => { @@ -122,12 +133,96 @@ describe('PluginCloneable', function () { ); }); }); + + describe('setTarget/getTarget', async () => { + it('reverts if caller does not have the permission', async () => { + const {deployer, proxy, daoMock} = await loadFixture(fixture); + + let newTarget = proxy.address; + + await expect(proxy.setTarget(newTarget)) + .to.be.revertedWithCustomError(proxy, 'DaoUnauthorized') + .withArgs( + daoMock.address, + proxy.address, + deployer.address, + ethers.utils.id('SET_TARGET_PERMISSION') + ); + }); + + it('updates the target and emits an appropriate event', async () => { + const {proxy, daoMock} = await loadFixture(fixture); + + // Set the `hasPermission` mock function to return `true`. + await daoMock.setHasPermissionReturnValueMock(true); // answer true for all permission requests + + let newTarget = proxy.address; + + await expect(proxy.setTarget(newTarget)) + .to.emit(proxy, 'TargetSet') + .withArgs(ethers.constants.AddressZero, newTarget); + + expect(await proxy.getTarget()).to.equal(newTarget); + }); + }); + + describe('Executions', async () => { + describe('execute with current target', async () => { + it('reverts with ambiguity if target is not set', async () => { + const {proxy, daoMock} = await loadFixture(fixture); + + await expect( + proxy['execute(uint256,(address,uint256,bytes)[],uint256)'](1, [], 0) + ).to.be.reverted; + }); + + it('successfully forwards action to the currently set target', async () => { + const {proxy, daoMock} = await loadFixture(fixture); + + await daoMock.setHasPermissionReturnValueMock(true); + await proxy.setTarget(daoMock.address); + + await expect( + proxy['execute(uint256,(address,uint256,bytes)[],uint256)'](1, [], 0) + ).to.emit(daoMock, 'Executed'); + }); + }); + + describe('execute with the custom target', async () => { + it('reverts with ambiguity if target address(0) is passed', async () => { + const {proxy, daoMock} = await loadFixture(fixture); + + await expect( + proxy['execute(address,uint256,(address,uint256,bytes)[],uint256)']( + ethers.constants.AddressZero, + 1, + [], + 0 + ) + ).to.be.reverted; + }); + + it('successfully forwards action to the currently set target', async () => { + const {proxy, daoMock} = await loadFixture(fixture); + + await expect( + proxy['execute(address,uint256,(address,uint256,bytes)[],uint256)']( + daoMock.address, + 1, + [], + 0 + ) + ).to.emit(daoMock, 'Executed'); + }); + }); + }); }); type FixtureResult = { deployer: SignerWithAddress; implementation: PluginCloneableMockBuild1; proxyFactory: ProxyFactory; + proxy: PluginCloneableMockBuild1; daoMock: DAOMock; initCalldata: string; Build1Factory: PluginCloneableMockBuild1__factory; @@ -150,10 +245,15 @@ async function fixture(): Promise { [daoMock.address] ); + const tx = await proxyFactory.deployUUPSProxy(initCalldata); + const event = findEvent(await tx.wait(), 'ProxyCreated'); + const proxy = Build1Factory.attach(event.args.proxy); + return { deployer, implementation, proxyFactory, + proxy, daoMock, initCalldata, Build1Factory, diff --git a/contracts/test/plugin/plugin-uups-upgradeable.ts b/contracts/test/plugin/plugin-uups-upgradeable.ts index 03501e8a..237c578a 100644 --- a/contracts/test/plugin/plugin-uups-upgradeable.ts +++ b/contracts/test/plugin/plugin-uups-upgradeable.ts @@ -125,6 +125,17 @@ describe('PluginUUPSUpgradeable', function () { expect(await implementation.supportsInterface(getInterfaceId(iface))).to .be.true; }); + + it('supports the `setTarget^getTarget` interface', async () => { + const {implementation} = await loadFixture(fixture); + const iface = PluginUUPSUpgradeableMockBuild1__factory.createInterface(); + + let interfaceId = ethers.BigNumber.from(iface.getSighash('setTarget')) + .xor(ethers.BigNumber.from(iface.getSighash('getTarget'))) + .toHexString(); + + expect(await implementation.supportsInterface(interfaceId)).to.be.true; + }); }); describe('Protocol version', async () => { @@ -136,6 +147,89 @@ describe('PluginUUPSUpgradeable', function () { }); }); + describe('setTarget/getTarget', async () => { + it('reverts if caller does not have the permission', async () => { + const {deployer, proxy, daoMock} = await loadFixture(fixture); + + let newTarget = proxy.address; + + await expect(proxy.setTarget(newTarget)) + .to.be.revertedWithCustomError(proxy, 'DaoUnauthorized') + .withArgs( + daoMock.address, + proxy.address, + deployer.address, + ethers.utils.id('SET_TARGET_PERMISSION') + ); + }); + + it('updates the target and emits an appropriate event', async () => { + const {proxy, daoMock} = await loadFixture(fixture); + + // Set the `hasPermission` mock function to return `true`. + await daoMock.setHasPermissionReturnValueMock(true); // answer true for all permission requests + + let newTarget = proxy.address; + + await expect(proxy.setTarget(newTarget)) + .to.emit(proxy, 'TargetSet') + .withArgs(ethers.constants.AddressZero, newTarget); + + expect(await proxy.getTarget()).to.equal(newTarget); + }); + }); + + describe('Executions', async () => { + describe('execute with current target', async () => { + it('reverts with ambiguity if target is not set', async () => { + const {proxy, daoMock} = await loadFixture(fixture); + + await expect( + proxy['execute(uint256,(address,uint256,bytes)[],uint256)'](1, [], 0) + ).to.be.reverted; + }); + + it('successfully forwards action to the currently set target', async () => { + const {proxy, daoMock} = await loadFixture(fixture); + + await daoMock.setHasPermissionReturnValueMock(true); + await proxy.setTarget(daoMock.address); + + await expect( + proxy['execute(uint256,(address,uint256,bytes)[],uint256)'](1, [], 0) + ).to.emit(daoMock, 'Executed'); + }); + }); + + describe('execute with the custom target', async () => { + it('reverts with ambiguity if target address(0) is passed', async () => { + const {proxy, daoMock} = await loadFixture(fixture); + + await expect( + proxy['execute(address,uint256,(address,uint256,bytes)[],uint256)']( + ethers.constants.AddressZero, + 1, + [], + 0 + ) + ).to.be.reverted; + }); + + it('successfully forwards action to the currently set target', async () => { + const {proxy, daoMock} = await loadFixture(fixture); + + await expect( + proxy['execute(address,uint256,(address,uint256,bytes)[],uint256)']( + daoMock.address, + 1, + [], + 0 + ) + ).to.emit(daoMock, 'Executed'); + }); + }); + }); + describe('Upgradeability', async () => { it('returns the implementation', async () => { const {proxyFactory, Build1Factory, implementation} = await loadFixture( @@ -273,6 +367,7 @@ type FixtureResult = { deployer: SignerWithAddress; implementation: PluginUUPSUpgradeableMockBuild1; proxyFactory: ProxyFactory; + proxy: PluginUUPSUpgradeableMockBuild1; daoMock: DAOMock; initCalldata: string; Build1Factory: PluginUUPSUpgradeableMockBuild1__factory; @@ -297,10 +392,15 @@ async function fixture(): Promise { [daoMock.address] ); + const tx = await proxyFactory.deployUUPSProxy(initCalldata); + const event = findEvent(await tx.wait(), 'ProxyCreated'); + const proxy = Build1Factory.attach(event.args.proxy); + return { deployer, implementation, proxyFactory, + proxy, initCalldata, daoMock, Build1Factory, diff --git a/contracts/test/plugin/plugin.ts b/contracts/test/plugin/plugin.ts index d5d8342f..923e30c8 100644 --- a/contracts/test/plugin/plugin.ts +++ b/contracts/test/plugin/plugin.ts @@ -55,6 +55,17 @@ describe('Plugin', function () { const iface = IProtocolVersion__factory.createInterface(); expect(await plugin.supportsInterface(getInterfaceId(iface))).to.be.true; }); + + it('supports the `setTarget^getTarget` interface', async () => { + const {plugin} = await loadFixture(fixture); + const iface = PluginMockBuild1__factory.createInterface(); + + let interfaceId = ethers.BigNumber.from(iface.getSighash('setTarget')) + .xor(ethers.BigNumber.from(iface.getSighash('getTarget'))) + .toHexString(); + + expect(await plugin.supportsInterface(interfaceId)).to.be.true; + }); }); describe('Protocol version', async () => { @@ -65,6 +76,89 @@ describe('Plugin', function () { ); }); }); + + describe('setTarget', async () => { + it('reverts if caller does not have the permission', async () => { + const {deployer, plugin, daoMock} = await loadFixture(fixture); + + let newTarget = plugin.address; + + await expect(plugin.setTarget(newTarget)) + .to.be.revertedWithCustomError(plugin, 'DaoUnauthorized') + .withArgs( + daoMock.address, + plugin.address, + deployer.address, + ethers.utils.id('SET_TARGET_PERMISSION') + ); + }); + + it('updates the target and emits an appropriate event', async () => { + const {plugin, daoMock} = await loadFixture(fixture); + + let newTarget = plugin.address; + + // Set the `hasPermission` mock function to return `true`. + await daoMock.setHasPermissionReturnValueMock(true); // answer true for all permission requests + + await expect(plugin.setTarget(newTarget)) + .to.emit(plugin, 'TargetSet') + .withArgs(ethers.constants.AddressZero, newTarget); + + expect(await plugin.getTarget()).to.equal(newTarget); + }); + }); + + describe('Executions', async () => { + describe('execute with current target', async () => { + it('reverts with ambiguity if target is not set', async () => { + const {plugin, daoMock} = await loadFixture(fixture); + + await expect( + plugin['execute(uint256,(address,uint256,bytes)[],uint256)'](1, [], 0) + ).to.be.reverted; + }); + + it('successfully forwards action to the currently set target', async () => { + const {plugin, daoMock} = await loadFixture(fixture); + + await daoMock.setHasPermissionReturnValueMock(true); + await plugin.setTarget(daoMock.address); + + await expect( + plugin['execute(uint256,(address,uint256,bytes)[],uint256)'](1, [], 0) + ).to.emit(daoMock, 'Executed'); + }); + }); + + describe('execute with the custom target', async () => { + it('reverts with ambiguity if target address(0) is passed', async () => { + const {plugin, daoMock} = await loadFixture(fixture); + + await expect( + plugin['execute(address,uint256,(address,uint256,bytes)[],uint256)']( + ethers.constants.AddressZero, + 1, + [], + 0 + ) + ).to.be.reverted; + }); + + it('successfully forwards action to the currently set target', async () => { + const {plugin, daoMock} = await loadFixture(fixture); + + await expect( + plugin['execute(address,uint256,(address,uint256,bytes)[],uint256)']( + daoMock.address, + 1, + [], + 0 + ) + ).to.emit(daoMock, 'Executed'); + }); + }); + }); }); async function fixture(): Promise { From 918763d34e0a1fab3c7d4037a2b0f3ed4efca4ba Mon Sep 17 00:00:00 2001 From: Giorgi Lagidze Date: Tue, 20 Aug 2024 15:16:19 +0400 Subject: [PATCH 05/15] add operation type for target --- .../src/mocks/plugin/CustomExecutorMock.sol | 32 +++ .../src/mocks/plugin/PluginCloneableMock.sol | 11 +- contracts/src/mocks/plugin/PluginMock.sol | 11 +- .../plugin/PluginUUPSUpgradeableMock.sol | 11 +- contracts/src/plugin/Plugin.sol | 122 +++++++++-- contracts/src/plugin/PluginCloneable.sol | 121 +++++++++-- .../src/plugin/PluginUUPSUpgradeable.sol | 122 +++++++++-- contracts/test/plugin/plugin-clonable.ts | 197 ++++++++++++++--- .../test/plugin/plugin-uups-upgradeable.ts | 199 ++++++++++++++---- contracts/test/plugin/plugin.ts | 193 ++++++++++++++--- 10 files changed, 851 insertions(+), 168 deletions(-) create mode 100644 contracts/src/mocks/plugin/CustomExecutorMock.sol diff --git a/contracts/src/mocks/plugin/CustomExecutorMock.sol b/contracts/src/mocks/plugin/CustomExecutorMock.sol new file mode 100644 index 00000000..57f79b53 --- /dev/null +++ b/contracts/src/mocks/plugin/CustomExecutorMock.sol @@ -0,0 +1,32 @@ +// SPDX-License-Identifier: AGPL-3.0-or-later + +pragma solidity ^0.8.8; + +import {IDAO} from "../../dao/IDAO.sol"; + +/// @notice A mock DAO that anyone can set permissions in. +/// @dev DO NOT USE IN PRODUCTION! +contract CustomExecutorMock { + error Failed(); + + event Executed( + address indexed actor, + bytes32 callId, + IDAO.Action[] actions, + uint256 allowFailureMap, + uint256 failureMap, + bytes[] execResults + ); + + function execute( + bytes32 callId, + IDAO.Action[] memory _actions, + uint256 allowFailureMap + ) external returns (bytes[] memory execResults, uint256 failureMap) { + if (callId == bytes32(0)) { + revert Failed(); + } else { + emit Executed(msg.sender, callId, _actions, allowFailureMap, failureMap, execResults); + } + } +} diff --git a/contracts/src/mocks/plugin/PluginCloneableMock.sol b/contracts/src/mocks/plugin/PluginCloneableMock.sol index de4c5bbc..568940f5 100644 --- a/contracts/src/mocks/plugin/PluginCloneableMock.sol +++ b/contracts/src/mocks/plugin/PluginCloneableMock.sol @@ -29,9 +29,16 @@ contract PluginCloneableMockBuild1 is PluginCloneable { address _target, uint256 _callId, IDAO.Action[] memory _actions, - uint256 _allowFailureMap + uint256 _allowFailureMap, + Operation _op ) external returns (bytes[] memory execResults, uint256 failureMap) { - (execResults, failureMap) = _execute(_target, bytes32(_callId), _actions, _allowFailureMap); + (execResults, failureMap) = _execute( + _target, + bytes32(_callId), + _actions, + _allowFailureMap, + _op + ); } } diff --git a/contracts/src/mocks/plugin/PluginMock.sol b/contracts/src/mocks/plugin/PluginMock.sol index 3f1ab5e2..3b4099f3 100644 --- a/contracts/src/mocks/plugin/PluginMock.sol +++ b/contracts/src/mocks/plugin/PluginMock.sol @@ -27,8 +27,15 @@ contract PluginMockBuild1 is Plugin { address _target, uint256 _callId, IDAO.Action[] memory _actions, - uint256 _allowFailureMap + uint256 _allowFailureMap, + Operation _op ) external returns (bytes[] memory execResults, uint256 failureMap) { - (execResults, failureMap) = _execute(_target, bytes32(_callId), _actions, _allowFailureMap); + (execResults, failureMap) = _execute( + _target, + bytes32(_callId), + _actions, + _allowFailureMap, + _op + ); } } diff --git a/contracts/src/mocks/plugin/PluginUUPSUpgradeableMock.sol b/contracts/src/mocks/plugin/PluginUUPSUpgradeableMock.sol index e6429577..fd6c9597 100644 --- a/contracts/src/mocks/plugin/PluginUUPSUpgradeableMock.sol +++ b/contracts/src/mocks/plugin/PluginUUPSUpgradeableMock.sol @@ -29,9 +29,16 @@ contract PluginUUPSUpgradeableMockBuild1 is PluginUUPSUpgradeable { address _target, uint256 _callId, IDAO.Action[] memory _actions, - uint256 _allowFailureMap + uint256 _allowFailureMap, + Operation _op ) external returns (bytes[] memory execResults, uint256 failureMap) { - (execResults, failureMap) = _execute(_target, bytes32(_callId), _actions, _allowFailureMap); + (execResults, failureMap) = _execute( + _target, + bytes32(_callId), + _actions, + _allowFailureMap, + _op + ); } } diff --git a/contracts/src/plugin/Plugin.sol b/contracts/src/plugin/Plugin.sol index 939cc72d..67fa712a 100644 --- a/contracts/src/plugin/Plugin.sol +++ b/contracts/src/plugin/Plugin.sol @@ -3,6 +3,7 @@ pragma solidity ^0.8.8; import {ERC165} from "@openzeppelin/contracts/utils/introspection/ERC165.sol"; +import {ERC165Checker} from "@openzeppelin/contracts/utils/introspection/ERC165Checker.sol"; import {IProtocolVersion} from "../utils/versioning/IProtocolVersion.sol"; import {ProtocolVersion} from "../utils/versioning/ProtocolVersion.sol"; @@ -15,10 +16,29 @@ import {IPlugin} from "./IPlugin.sol"; /// @notice An abstract, non-upgradeable contract to inherit from when creating a plugin being deployed via the `new` keyword. /// @custom:security-contact sirt@aragon.org abstract contract Plugin is IPlugin, ERC165, DaoAuthorizable, ProtocolVersion { - address private target; + using ERC165Checker for address; - /// @dev Emitted each time the Target is set. - event TargetSet(address indexed previousTarget, address indexed newTarget); + enum Operation { + Call, + DelegateCall + } + + struct TargetConfig { + address target; + Operation operation; + } + + TargetConfig private currentTargetConfig; + + /// @notice Thrown when target is of type 'IDAO', but operation is `delegateCall`. + /// @param targetConfig The target config to update it to. + error InvalidTargetConfig(TargetConfig targetConfig); + + /// @dev Emitted each time the TargetConfig is set. + event TargetSet(TargetConfig previousTargetConfig, TargetConfig newTargetConfig); + + /// @notice Thrown when `delegatecall` fails. + error ExecuteFailed(); /// @notice The ID of the permission required to call the `setTarget` function. bytes32 public constant SET_TARGET_PERMISSION_ID = keccak256("SET_TARGET_PERMISSION"); @@ -32,34 +52,47 @@ abstract contract Plugin is IPlugin, ERC165, DaoAuthorizable, ProtocolVersion { return PluginType.Constructable; } - /// @dev Sets the target to a new target (`newTarget`). - /// @param _target The target contract. - function setTarget(address _target) public auth(SET_TARGET_PERMISSION_ID) { - _setTarget(_target); + /// @notice Returns the currently set target contract. + function getTargetConfig() public view returns (TargetConfig memory) { + return currentTargetConfig; } - /// @notice Returns the currently set target contract. - function getTarget() public view returns (address) { - return target; + /// @dev Sets the target to a new target (`newTarget`). + /// @param _targetConfig The target Config containing the address and operation type. + function setTargetConfig( + TargetConfig calldata _targetConfig + ) public auth(SET_TARGET_PERMISSION_ID) { + _setTargetConfig(_targetConfig); } - /// @notice Checks if this or the parent contract supports an interface by its ID. + /// @notice Checks if an interface is supported by this or its parent contract. /// @param _interfaceId The ID of the interface. /// @return Returns `true` if the interface is supported. function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) { return _interfaceId == type(IPlugin).interfaceId || _interfaceId == type(IProtocolVersion).interfaceId || - _interfaceId == this.setTarget.selector ^ this.getTarget.selector || + _interfaceId == this.setTargetConfig.selector ^ this.getTargetConfig.selector || super.supportsInterface(_interfaceId); } /// @notice Sets the target to a new target (`newTarget`). - /// @param _target The target contract. - function _setTarget(address _target) internal virtual { - address previousTarget = target; - target = _target; - emit TargetSet(previousTarget, _target); + /// @param _targetConfig The target Config containing the address and operation type. + function _setTargetConfig(TargetConfig calldata _targetConfig) internal virtual { + TargetConfig memory previousTargetConfig = currentTargetConfig; + + currentTargetConfig = _targetConfig; + + // safety check to avoid setting dao as `target` with `delegatecall` operation + // as this would not work and cause the plugin to be bricked. + if ( + _targetConfig.target.supportsInterface(type(IDAO).interfaceId) && + _targetConfig.operation == Operation.DelegateCall + ) { + revert InvalidTargetConfig(_targetConfig); + } + + emit TargetSet(previousTargetConfig, _targetConfig); } /// @notice Forwards the actions to the currently set `target` for the execution. @@ -73,7 +106,35 @@ abstract contract Plugin is IPlugin, ERC165, DaoAuthorizable, ProtocolVersion { IDAO.Action[] memory _actions, uint256 _allowFailureMap ) internal virtual returns (bytes[] memory execResults, uint256 failureMap) { - (execResults, failureMap) = IDAO(target).execute(_callId, _actions, _allowFailureMap); + Operation op = currentTargetConfig.operation; + + if (op == Operation.DelegateCall) { + bool success; + bytes memory data; + + (success, data) = currentTargetConfig.target.delegatecall( + abi.encodeCall(IDAO.execute, (_callId, _actions, _allowFailureMap)) + ); + + if (!success) { + if (data.length > 0) { + assembly { + let returndata_size := mload(data) + revert(add(32, data), returndata_size) + } + } else { + revert ExecuteFailed(); + } + } + + (execResults, failureMap) = abi.decode(data, (bytes[], uint256)); + } else { + (execResults, failureMap) = IDAO(currentTargetConfig.target).execute( + _callId, + _actions, + _allowFailureMap + ); + } } /// @notice Forwards the actions to the `target` for the execution. @@ -87,8 +148,29 @@ abstract contract Plugin is IPlugin, ERC165, DaoAuthorizable, ProtocolVersion { address _target, bytes32 _callId, IDAO.Action[] memory _actions, - uint256 _allowFailureMap + uint256 _allowFailureMap, + Operation _op ) internal virtual returns (bytes[] memory execResults, uint256 failureMap) { - (execResults, failureMap) = IDAO(_target).execute(_callId, _actions, _allowFailureMap); + if (_op == Operation.DelegateCall) { + bool success; + bytes memory data; + + (success, data) = _target.delegatecall( + abi.encodeCall(IDAO.execute, (_callId, _actions, _allowFailureMap)) + ); + + if (!success) { + if (data.length > 0) { + assembly { + let returndata_size := mload(data) + revert(add(32, data), returndata_size) + } + } else { + revert ExecuteFailed(); + } + } + } else { + (execResults, failureMap) = IDAO(_target).execute(_callId, _actions, _allowFailureMap); + } } } diff --git a/contracts/src/plugin/PluginCloneable.sol b/contracts/src/plugin/PluginCloneable.sol index c9c01437..1a6b4a7e 100644 --- a/contracts/src/plugin/PluginCloneable.sol +++ b/contracts/src/plugin/PluginCloneable.sol @@ -3,6 +3,7 @@ pragma solidity ^0.8.8; import {ERC165Upgradeable} from "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol"; +import {ERC165CheckerUpgradeable} from "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165CheckerUpgradeable.sol"; import {IProtocolVersion} from "../utils/versioning/IProtocolVersion.sol"; import {ProtocolVersion} from "../utils/versioning/ProtocolVersion.sol"; @@ -20,13 +21,33 @@ abstract contract PluginCloneable is DaoAuthorizableUpgradeable, ProtocolVersion { - address private target; + using ERC165CheckerUpgradeable for address; - /// @dev Emitted each time the Target is set. - event TargetSet(address indexed previousTarget, address indexed newTarget); + enum Operation { + Call, + DelegateCall + } + + struct TargetConfig { + address target; + Operation operation; + } + + TargetConfig private currentTargetConfig; + + /// @notice Thrown when target is of type 'IDAO', but operation is `delegateCall`. + /// @param targetConfig The target config to update it to. + error InvalidTargetConfig(TargetConfig targetConfig); - /// @notice The ID of the permission required to call the `setTarget` function. - bytes32 public constant SET_TARGET_PERMISSION_ID = keccak256("SET_TARGET_PERMISSION"); + /// @notice Thrown when `delegatecall` fails. + error ExecuteFailed(); + + /// @dev Emitted each time the TargetConfig is set. + event TargetSet(TargetConfig previousTargetConfig, TargetConfig newTargetConfig); + + /// @notice The ID of the permission required to call the `setTargetConfig` function. + bytes32 public constant SET_TARGET_CONFIG_PERMISSION_ID = + keccak256("SET_TARGET_CONFIG_PERMISSION"); /// @notice Disables the initializers on the implementation contract to prevent it from being left uninitialized. /// @custom:oz-upgrades-unsafe-allow constructor @@ -42,9 +63,11 @@ abstract contract PluginCloneable is } /// @dev Sets the target to a new target (`newTarget`). - /// @param _target The target contract. - function setTarget(address _target) public auth(SET_TARGET_PERMISSION_ID) { - _setTarget(_target); + /// @param _targetConfig The target Config containing the address and operation type. + function setTargetConfig( + TargetConfig calldata _targetConfig + ) public auth(SET_TARGET_CONFIG_PERMISSION_ID) { + _setTargetConfig(_targetConfig); } /// @inheritdoc IPlugin @@ -53,8 +76,8 @@ abstract contract PluginCloneable is } /// @notice Returns the currently set target contract. - function getTarget() public view returns (address) { - return target; + function getTargetConfig() public view returns (TargetConfig memory) { + return currentTargetConfig; } /// @notice Checks if this or the parent contract supports an interface by its ID. @@ -64,16 +87,27 @@ abstract contract PluginCloneable is return _interfaceId == type(IPlugin).interfaceId || _interfaceId == type(IProtocolVersion).interfaceId || - _interfaceId == this.setTarget.selector ^ this.getTarget.selector || + _interfaceId == this.setTargetConfig.selector ^ this.getTargetConfig.selector || super.supportsInterface(_interfaceId); } /// @notice Sets the target to a new target (`newTarget`). - /// @param _target The target contract. - function _setTarget(address _target) internal virtual { - address previousTarget = target; - target = _target; - emit TargetSet(previousTarget, _target); + /// @param _targetConfig The target Config containing the address and operation type. + function _setTargetConfig(TargetConfig calldata _targetConfig) internal virtual { + TargetConfig memory previousTargetConfig = currentTargetConfig; + + currentTargetConfig = _targetConfig; + + // safety check to avoid setting dao as `target` with `delegatecall` operation + // as this would not work and cause the plugin to be bricked. + if ( + _targetConfig.target.supportsInterface(type(IDAO).interfaceId) && + _targetConfig.operation == Operation.DelegateCall + ) { + revert InvalidTargetConfig(_targetConfig); + } + + emit TargetSet(previousTargetConfig, _targetConfig); } /// @notice Forwards the actions to the currently set `target` for the execution. @@ -87,7 +121,35 @@ abstract contract PluginCloneable is IDAO.Action[] memory _actions, uint256 _allowFailureMap ) internal virtual returns (bytes[] memory execResults, uint256 failureMap) { - (execResults, failureMap) = IDAO(target).execute(_callId, _actions, _allowFailureMap); + Operation op = currentTargetConfig.operation; + + if (op == Operation.DelegateCall) { + bool success; + bytes memory data; + + (success, data) = currentTargetConfig.target.delegatecall( + abi.encodeCall(IDAO.execute, (_callId, _actions, _allowFailureMap)) + ); + + if (!success) { + if (data.length > 0) { + assembly { + let returndata_size := mload(data) + revert(add(32, data), returndata_size) + } + } else { + revert ExecuteFailed(); + } + } + + (execResults, failureMap) = abi.decode(data, (bytes[], uint256)); + } else { + (execResults, failureMap) = IDAO(currentTargetConfig.target).execute( + _callId, + _actions, + _allowFailureMap + ); + } } /// @notice Forwards the actions to the `target` for the execution. @@ -101,8 +163,29 @@ abstract contract PluginCloneable is address _target, bytes32 _callId, IDAO.Action[] memory _actions, - uint256 _allowFailureMap + uint256 _allowFailureMap, + Operation _op ) internal virtual returns (bytes[] memory execResults, uint256 failureMap) { - (execResults, failureMap) = IDAO(_target).execute(_callId, _actions, _allowFailureMap); + if (_op == Operation.DelegateCall) { + bool success; + bytes memory data; + + (success, data) = _target.delegatecall( + abi.encodeCall(IDAO.execute, (_callId, _actions, _allowFailureMap)) + ); + + if (!success) { + if (data.length > 0) { + assembly { + let returndata_size := mload(data) + revert(add(32, data), returndata_size) + } + } else { + revert ExecuteFailed(); + } + } + } else { + (execResults, failureMap) = IDAO(_target).execute(_callId, _actions, _allowFailureMap); + } } } diff --git a/contracts/src/plugin/PluginUUPSUpgradeable.sol b/contracts/src/plugin/PluginUUPSUpgradeable.sol index ab13dc0b..632c6a47 100644 --- a/contracts/src/plugin/PluginUUPSUpgradeable.sol +++ b/contracts/src/plugin/PluginUUPSUpgradeable.sol @@ -5,6 +5,7 @@ pragma solidity ^0.8.8; import {UUPSUpgradeable} from "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol"; import {IERC1822ProxiableUpgradeable} from "@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol"; import {ERC165Upgradeable} from "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol"; +import {ERC165CheckerUpgradeable} from "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165CheckerUpgradeable.sol"; import {IProtocolVersion} from "../utils/versioning/IProtocolVersion.sol"; import {ProtocolVersion} from "../utils/versioning/ProtocolVersion.sol"; @@ -23,14 +24,35 @@ abstract contract PluginUUPSUpgradeable is DaoAuthorizableUpgradeable, ProtocolVersion { + using ERC165CheckerUpgradeable for address; + // NOTE: When adding new state variables to the contract, the size of `_gap` has to be adapted below as well. - address private target; - /// @dev Emitted each time the Target is set. - event TargetSet(address indexed previousTarget, address indexed newTarget); + enum Operation { + Call, + DelegateCall + } + + struct TargetConfig { + address target; + Operation operation; + } + + TargetConfig private currentTargetConfig; - /// @notice The ID of the permission required to call the `setTarget` function. - bytes32 public constant SET_TARGET_PERMISSION_ID = keccak256("SET_TARGET_PERMISSION"); + /// @notice Thrown when target is of type 'IDAO', but operation is `delegateCall`. + /// @param targetConfig The target config to update it to. + error InvalidTargetConfig(TargetConfig targetConfig); + + /// @notice Thrown when `delegatecall` fails. + error ExecuteFailed(); + + /// @dev Emitted each time the TargetConfig is set. + event TargetSet(TargetConfig previousTargetConfig, TargetConfig newTargetConfig); + + /// @notice The ID of the permission required to call the `setTargetConfig` function. + bytes32 public constant SET_TARGET_CONFIG_PERMISSION_ID = + keccak256("SET_TARGET_CONFIG_PERMISSION"); /// @notice The ID of the permission required to call the `_authorizeUpgrade` function. bytes32 public constant UPGRADE_PLUGIN_PERMISSION_ID = keccak256("UPGRADE_PLUGIN_PERMISSION"); @@ -47,8 +69,8 @@ abstract contract PluginUUPSUpgradeable is } /// @notice Returns the currently set target contract. - function getTarget() public view returns (address) { - return target; + function getTargetConfig() public view returns (TargetConfig memory) { + return currentTargetConfig; } /// @notice Initializes the plugin by storing the associated DAO. @@ -59,9 +81,11 @@ abstract contract PluginUUPSUpgradeable is } /// @dev Sets the target to a new target (`newTarget`). - /// @param _target The target contract. - function setTarget(address _target) public auth(SET_TARGET_PERMISSION_ID) { - _setTarget(_target); + /// @param _targetConfig The target Config containing the address and operation type. + function setTargetConfig( + TargetConfig calldata _targetConfig + ) public auth(SET_TARGET_CONFIG_PERMISSION_ID) { + _setTargetConfig(_targetConfig); } /// @notice Checks if an interface is supported by this or its parent contract. @@ -72,7 +96,7 @@ abstract contract PluginUUPSUpgradeable is _interfaceId == type(IPlugin).interfaceId || _interfaceId == type(IProtocolVersion).interfaceId || _interfaceId == type(IERC1822ProxiableUpgradeable).interfaceId || - _interfaceId == this.setTarget.selector ^ this.getTarget.selector || + _interfaceId == this.setTargetConfig.selector ^ this.getTargetConfig.selector || super.supportsInterface(_interfaceId); } @@ -83,11 +107,22 @@ abstract contract PluginUUPSUpgradeable is } /// @notice Sets the target to a new target (`newTarget`). - /// @param _target The target contract. - function _setTarget(address _target) internal virtual { - address previousTarget = target; - target = _target; - emit TargetSet(previousTarget, _target); + /// @param _targetConfig The target Config containing the address and operation type. + function _setTargetConfig(TargetConfig calldata _targetConfig) internal virtual { + TargetConfig memory previousTargetConfig = currentTargetConfig; + + currentTargetConfig = _targetConfig; + + // safety check to avoid setting dao as `target` with `delegatecall` operation + // as this would not work and cause the plugin to be bricked. + if ( + _targetConfig.target.supportsInterface(type(IDAO).interfaceId) && + _targetConfig.operation == Operation.DelegateCall + ) { + revert InvalidTargetConfig(_targetConfig); + } + + emit TargetSet(previousTargetConfig, _targetConfig); } /// @notice Forwards the actions to the currently set `target` for the execution. @@ -101,7 +136,35 @@ abstract contract PluginUUPSUpgradeable is IDAO.Action[] memory _actions, uint256 _allowFailureMap ) internal virtual returns (bytes[] memory execResults, uint256 failureMap) { - (execResults, failureMap) = IDAO(target).execute(_callId, _actions, _allowFailureMap); + Operation op = currentTargetConfig.operation; + + if (op == Operation.DelegateCall) { + bool success; + bytes memory data; + + (success, data) = currentTargetConfig.target.delegatecall( + abi.encodeCall(IDAO.execute, (_callId, _actions, _allowFailureMap)) + ); + + if (!success) { + if (data.length > 0) { + assembly { + let returndata_size := mload(data) + revert(add(32, data), returndata_size) + } + } else { + revert ExecuteFailed(); + } + } + + (execResults, failureMap) = abi.decode(data, (bytes[], uint256)); + } else { + (execResults, failureMap) = IDAO(currentTargetConfig.target).execute( + _callId, + _actions, + _allowFailureMap + ); + } } /// @notice Forwards the actions to the `target` for the execution. @@ -115,9 +178,30 @@ abstract contract PluginUUPSUpgradeable is address _target, bytes32 _callId, IDAO.Action[] memory _actions, - uint256 _allowFailureMap + uint256 _allowFailureMap, + Operation _op ) internal virtual returns (bytes[] memory execResults, uint256 failureMap) { - (execResults, failureMap) = IDAO(_target).execute(_callId, _actions, _allowFailureMap); + if (_op == Operation.DelegateCall) { + bool success; + bytes memory data; + + (success, data) = _target.delegatecall( + abi.encodeCall(IDAO.execute, (_callId, _actions, _allowFailureMap)) + ); + + if (!success) { + if (data.length > 0) { + assembly { + let returndata_size := mload(data) + revert(add(32, data), returndata_size) + } + } else { + revert ExecuteFailed(); + } + } + } else { + (execResults, failureMap) = IDAO(_target).execute(_callId, _actions, _allowFailureMap); + } } /// @notice Internal method authorizing the upgrade of the contract via the [upgradeability mechanism for UUPS proxies](https://docs.openzeppelin.com/contracts/4.x/api/proxy#UUPSUpgradeable) (see [ERC-1822](https://eips.ethereum.org/EIPS/eip-1822)). diff --git a/contracts/test/plugin/plugin-clonable.ts b/contracts/test/plugin/plugin-clonable.ts index 072d30c9..982a98d2 100644 --- a/contracts/test/plugin/plugin-clonable.ts +++ b/contracts/test/plugin/plugin-clonable.ts @@ -1,4 +1,6 @@ import { + CustomExecutorMock, + CustomExecutorMock__factory, DAOMock, DAOMock__factory, IPlugin__factory, @@ -20,6 +22,11 @@ import {SignerWithAddress} from '@nomiclabs/hardhat-ethers/signers'; import {expect} from 'chai'; import {ethers} from 'hardhat'; +enum Operation { + call, + delegatecall, +} + describe('PluginCloneable', function () { describe('Initializable', async () => { it('initialize', async () => { @@ -117,8 +124,10 @@ describe('PluginCloneable', function () { const {implementation} = await loadFixture(fixture); const iface = PluginCloneableMockBuild1__factory.createInterface(); - let interfaceId = ethers.BigNumber.from(iface.getSighash('setTarget')) - .xor(ethers.BigNumber.from(iface.getSighash('getTarget'))) + let interfaceId = ethers.BigNumber.from( + iface.getSighash('setTargetConfig') + ) + .xor(ethers.BigNumber.from(iface.getSighash('getTargetConfig'))) .toHexString(); expect(await implementation.supportsInterface(interfaceId)).to.be.true; @@ -140,13 +149,13 @@ describe('PluginCloneable', function () { let newTarget = proxy.address; - await expect(proxy.setTarget(newTarget)) + await expect(proxy.setTargetConfig({target: newTarget, operation: 0})) .to.be.revertedWithCustomError(proxy, 'DaoUnauthorized') .withArgs( daoMock.address, proxy.address, deployer.address, - ethers.utils.id('SET_TARGET_PERMISSION') + ethers.utils.id('SET_TARGET_CONFIG_PERMISSION') ); }); @@ -158,61 +167,179 @@ describe('PluginCloneable', function () { let newTarget = proxy.address; - await expect(proxy.setTarget(newTarget)) + let targetConfig = {target: newTarget, operation: 0}; + let previousTargetConfig = { + target: ethers.constants.AddressZero, + operation: 0, + }; + await expect(proxy.setTargetConfig(targetConfig)) .to.emit(proxy, 'TargetSet') - .withArgs(ethers.constants.AddressZero, newTarget); + .withArgs( + (val1: any) => + expect(val1).to.deep.equal([ + previousTargetConfig.target, + previousTargetConfig.operation, + ]), + (val2: any) => + expect(val2).to.deep.equal([ + targetConfig.target, + targetConfig.operation, + ]) + ); - expect(await proxy.getTarget()).to.equal(newTarget); + expect(await proxy.getTargetConfig()).to.deep.equal([ + targetConfig.target, + targetConfig.operation, + ]); }); }); describe('Executions', async () => { + let executor: CustomExecutorMock; + let proxy: PluginCloneableMockBuild1; + let daoMock: DAOMock; + let mergedABI: any; + before(async () => { + const [deployer] = await ethers.getSigners(); + + const executorFactory = new CustomExecutorMock__factory(deployer); + executor = await executorFactory.deploy(); + + var abiA = CustomExecutorMock__factory.abi; + var abiB = PluginCloneableMockBuild1__factory.abi; + // @ts-ignore + mergedABI = abiA.concat(abiB); + }); + + beforeEach(async () => { + let data = await fixture(); + const [deployer] = await ethers.getSigners(); + + proxy = new ethers.Contract( + data.proxy.address, + mergedABI, + deployer + ) as PluginCloneableMockBuild1; + daoMock = data.daoMock; + + await daoMock.setHasPermissionReturnValueMock(true); + }); + describe('execute with current target', async () => { it('reverts with ambiguity if target is not set', async () => { - const {proxy, daoMock} = await loadFixture(fixture); - await expect( proxy['execute(uint256,(address,uint256,bytes)[],uint256)'](1, [], 0) ).to.be.reverted; }); - it('successfully forwards action to the currently set target', async () => { - const {proxy, daoMock} = await loadFixture(fixture); - - await daoMock.setHasPermissionReturnValueMock(true); - await proxy.setTarget(daoMock.address); + describe('Execute with operation = `call`', async () => { + it('successfully forwards action to the currently set target and reverts from target', async () => { + await proxy.setTargetConfig({ + target: executor.address, + operation: Operation.call, + }); + await expect( + proxy['execute(uint256,(address,uint256,bytes)[],uint256)']( + 0, + [], + 0 + ) + ).to.be.revertedWithCustomError(executor, 'Failed'); + }); + + it('successfully forwards action to the currently set target and emits event from target', async () => { + await proxy.setTargetConfig({ + target: executor.address, + operation: Operation.call, + }); + await expect( + proxy['execute(uint256,(address,uint256,bytes)[],uint256)']( + 1, + [], + 0 + ) + ).to.emit(executor, 'Executed'); + }); + }); - await expect( - proxy['execute(uint256,(address,uint256,bytes)[],uint256)'](1, [], 0) - ).to.emit(daoMock, 'Executed'); + describe('Execute with operation = `delegatecall`', async () => { + it('bubbles up the revert message and reverts from the consumer', async () => { + await proxy.setTargetConfig({ + target: executor.address, + operation: Operation.delegatecall, + }); + await expect( + proxy['execute(uint256,(address,uint256,bytes)[],uint256)']( + 0, + [], + 0 + ) + ).to.be.revertedWithCustomError(proxy, 'Failed'); + }); + + it('successfully does `delegatecall` and emits the event from the consumer', async () => { + await proxy.setTargetConfig({ + target: executor.address, + operation: Operation.delegatecall, + }); + // Must emit the event from the consumer, not from the executor because of delegatecall + await expect( + proxy['execute(uint256,(address,uint256,bytes)[],uint256)']( + 1, + [], + 0 + ) + ).to.emit(proxy, 'Executed'); + }); }); }); describe('execute with the custom target', async () => { it('reverts with ambiguity if target address(0) is passed', async () => { - const {proxy, daoMock} = await loadFixture(fixture); - await expect( - proxy['execute(address,uint256,(address,uint256,bytes)[],uint256)']( - ethers.constants.AddressZero, - 1, - [], - 0 - ) + proxy[ + 'execute(address,uint256,(address,uint256,bytes)[],uint256,uint8)' + ](ethers.constants.AddressZero, 1, [], 0, 0) ).to.be.reverted; }); - it('successfully forwards action to the currently set target', async () => { - const {proxy, daoMock} = await loadFixture(fixture); + describe('Execute with operation = `call`', async () => { + it('successfully forwards action to the currently set target and emits event from target', async () => { + await expect( + proxy[ + 'execute(address,uint256,(address,uint256,bytes)[],uint256,uint8)' + ](executor.address, 0, [], 0, 0) + ).to.be.revertedWithCustomError(executor, 'Failed'); + }); + + it('successfully forwards action to the currently set target and reverts from target', async () => { + await expect( + proxy[ + 'execute(address,uint256,(address,uint256,bytes)[],uint256,uint8)' + ](executor.address, 1, [], 0, 0) + ).to.emit(executor, 'Executed'); + }); + }); - await expect( - proxy['execute(address,uint256,(address,uint256,bytes)[],uint256)']( - daoMock.address, - 1, - [], - 0 - ) - ).to.emit(daoMock, 'Executed'); + describe('Execute with operation = `delegatecall`', async () => { + it('bubbles up the revert message and reverts from the consumer', async () => { + await expect( + proxy[ + 'execute(address,uint256,(address,uint256,bytes)[],uint256,uint8)' + ](executor.address, 0, [], 0, Operation.delegatecall) + ).to.be.revertedWithCustomError(proxy, 'Failed'); + }); + + it('successfully does `delegatecall` and emits the event from the consumer', async () => { + // Must emit the event from the consumer, not from the executor because of delegatecall + await expect( + proxy[ + 'execute(address,uint256,(address,uint256,bytes)[],uint256,uint8)' + ](executor.address, 1, [], 0, Operation.delegatecall) + ).to.emit(proxy, 'Executed'); + }); + + // TODO: one more test that catches `ExecuteFailed` revert message. }); }); }); diff --git a/contracts/test/plugin/plugin-uups-upgradeable.ts b/contracts/test/plugin/plugin-uups-upgradeable.ts index 237c578a..37f53dbf 100644 --- a/contracts/test/plugin/plugin-uups-upgradeable.ts +++ b/contracts/test/plugin/plugin-uups-upgradeable.ts @@ -9,6 +9,8 @@ import { PluginUUPSUpgradeableMockBuild2__factory, PluginUUPSUpgradeableMockBad__factory, ProxyFactory__factory, + CustomExecutorMock__factory, + CustomExecutorMock, } from '../../typechain'; import { ProxyCreatedEvent, @@ -27,6 +29,11 @@ import {SignerWithAddress} from '@nomiclabs/hardhat-ethers/signers'; import {expect} from 'chai'; import {ethers} from 'hardhat'; +enum Operation { + call, + delegatecall, +} + describe('PluginUUPSUpgradeable', function () { describe('Initializable', async () => { it('initialize', async () => { @@ -126,12 +133,14 @@ describe('PluginUUPSUpgradeable', function () { .be.true; }); - it('supports the `setTarget^getTarget` interface', async () => { + it('supports the `setTargetConfig^getTargetConfig` interface', async () => { const {implementation} = await loadFixture(fixture); const iface = PluginUUPSUpgradeableMockBuild1__factory.createInterface(); - let interfaceId = ethers.BigNumber.from(iface.getSighash('setTarget')) - .xor(ethers.BigNumber.from(iface.getSighash('getTarget'))) + let interfaceId = ethers.BigNumber.from( + iface.getSighash('setTargetConfig') + ) + .xor(ethers.BigNumber.from(iface.getSighash('getTargetConfig'))) .toHexString(); expect(await implementation.supportsInterface(interfaceId)).to.be.true; @@ -153,13 +162,13 @@ describe('PluginUUPSUpgradeable', function () { let newTarget = proxy.address; - await expect(proxy.setTarget(newTarget)) + await expect(proxy.setTargetConfig({target: newTarget, operation: 0})) .to.be.revertedWithCustomError(proxy, 'DaoUnauthorized') .withArgs( daoMock.address, proxy.address, deployer.address, - ethers.utils.id('SET_TARGET_PERMISSION') + ethers.utils.id('SET_TARGET_CONFIG_PERMISSION') ); }); @@ -171,61 +180,179 @@ describe('PluginUUPSUpgradeable', function () { let newTarget = proxy.address; - await expect(proxy.setTarget(newTarget)) + let targetConfig = {target: newTarget, operation: 0}; + let previousTargetConfig = { + target: ethers.constants.AddressZero, + operation: 0, + }; + await expect(proxy.setTargetConfig(targetConfig)) .to.emit(proxy, 'TargetSet') - .withArgs(ethers.constants.AddressZero, newTarget); + .withArgs( + (val1: any) => + expect(val1).to.deep.equal([ + previousTargetConfig.target, + previousTargetConfig.operation, + ]), + (val2: any) => + expect(val2).to.deep.equal([ + targetConfig.target, + targetConfig.operation, + ]) + ); - expect(await proxy.getTarget()).to.equal(newTarget); + expect(await proxy.getTargetConfig()).to.deep.equal([ + targetConfig.target, + targetConfig.operation, + ]); }); }); describe('Executions', async () => { + let executor: CustomExecutorMock; + let proxy: PluginUUPSUpgradeableMockBuild1; + let daoMock: DAOMock; + let mergedABI: any; + before(async () => { + const [deployer] = await ethers.getSigners(); + + const executorFactory = new CustomExecutorMock__factory(deployer); + executor = await executorFactory.deploy(); + + var abiA = CustomExecutorMock__factory.abi; + var abiB = PluginUUPSUpgradeableMockBuild1__factory.abi; + // @ts-ignore + mergedABI = abiA.concat(abiB); + }); + + beforeEach(async () => { + let data = await fixture(); + const [deployer] = await ethers.getSigners(); + + proxy = new ethers.Contract( + data.proxy.address, + mergedABI, + deployer + ) as PluginUUPSUpgradeableMockBuild1; + daoMock = data.daoMock; + + await daoMock.setHasPermissionReturnValueMock(true); + }); + describe('execute with current target', async () => { it('reverts with ambiguity if target is not set', async () => { - const {proxy, daoMock} = await loadFixture(fixture); - await expect( proxy['execute(uint256,(address,uint256,bytes)[],uint256)'](1, [], 0) ).to.be.reverted; }); - it('successfully forwards action to the currently set target', async () => { - const {proxy, daoMock} = await loadFixture(fixture); - - await daoMock.setHasPermissionReturnValueMock(true); - await proxy.setTarget(daoMock.address); + describe('Execute with operation = `call`', async () => { + it('successfully forwards action to the currently set target and reverts from target', async () => { + await proxy.setTargetConfig({ + target: executor.address, + operation: Operation.call, + }); + await expect( + proxy['execute(uint256,(address,uint256,bytes)[],uint256)']( + 0, + [], + 0 + ) + ).to.be.revertedWithCustomError(executor, 'Failed'); + }); + + it('successfully forwards action to the currently set target and emits event from target', async () => { + await proxy.setTargetConfig({ + target: executor.address, + operation: Operation.call, + }); + await expect( + proxy['execute(uint256,(address,uint256,bytes)[],uint256)']( + 1, + [], + 0 + ) + ).to.emit(executor, 'Executed'); + }); + }); - await expect( - proxy['execute(uint256,(address,uint256,bytes)[],uint256)'](1, [], 0) - ).to.emit(daoMock, 'Executed'); + describe('Execute with operation = `delegatecall`', async () => { + await proxy.setTargetConfig({ + target: executor.address, + operation: Operation.delegatecall, + }); + it('bubbles up the revert message and reverts from the consumer', async () => { + await expect( + proxy['execute(uint256,(address,uint256,bytes)[],uint256)']( + 0, + [], + 0 + ) + ).to.be.revertedWithCustomError(proxy, 'Failed'); + }); + + it('successfully does `delegatecall` and emits the event from the consumer', async () => { + await proxy.setTargetConfig({ + target: executor.address, + operation: Operation.delegatecall, + }); + // Must emit the event from the consumer, not from the executor because of delegatecall + await expect( + proxy['execute(uint256,(address,uint256,bytes)[],uint256)']( + 1, + [], + 0 + ) + ).to.emit(proxy, 'Executed'); + }); }); }); describe('execute with the custom target', async () => { it('reverts with ambiguity if target address(0) is passed', async () => { - const {proxy, daoMock} = await loadFixture(fixture); - await expect( - proxy['execute(address,uint256,(address,uint256,bytes)[],uint256)']( - ethers.constants.AddressZero, - 1, - [], - 0 - ) + proxy[ + 'execute(address,uint256,(address,uint256,bytes)[],uint256,uint8)' + ](ethers.constants.AddressZero, 1, [], 0, 0) ).to.be.reverted; }); - it('successfully forwards action to the currently set target', async () => { - const {proxy, daoMock} = await loadFixture(fixture); + describe('Execute with operation = `call`', async () => { + it('successfully forwards action to the currently set target and emits event from target', async () => { + await expect( + proxy[ + 'execute(address,uint256,(address,uint256,bytes)[],uint256,uint8)' + ](executor.address, 0, [], 0, 0) + ).to.be.revertedWithCustomError(executor, 'Failed'); + }); + + it('successfully forwards action to the currently set target and reverts from target', async () => { + await expect( + proxy[ + 'execute(address,uint256,(address,uint256,bytes)[],uint256,uint8)' + ](executor.address, 1, [], 0, 0) + ).to.emit(executor, 'Executed'); + }); + }); - await expect( - proxy['execute(address,uint256,(address,uint256,bytes)[],uint256)']( - daoMock.address, - 1, - [], - 0 - ) - ).to.emit(daoMock, 'Executed'); + describe('Execute with operation = `delegatecall`', async () => { + it('bubbles up the revert message and reverts from the consumer', async () => { + await expect( + proxy[ + 'execute(address,uint256,(address,uint256,bytes)[],uint256,uint8)' + ](executor.address, 0, [], 0, Operation.delegatecall) + ).to.be.revertedWithCustomError(proxy, 'Failed'); + }); + + it('successfully does `delegatecall` and emits the event from the consumer', async () => { + // Must emit the event from the consumer, not from the executor because of delegatecall + await expect( + proxy[ + 'execute(address,uint256,(address,uint256,bytes)[],uint256,uint8)' + ](executor.address, 1, [], 0, Operation.delegatecall) + ).to.emit(proxy, 'Executed'); + }); + + // TODO: one more test that catches `ExecuteFailed` revert message. }); }); }); diff --git a/contracts/test/plugin/plugin.ts b/contracts/test/plugin/plugin.ts index 923e30c8..b4f8832c 100644 --- a/contracts/test/plugin/plugin.ts +++ b/contracts/test/plugin/plugin.ts @@ -1,4 +1,6 @@ import { + CustomExecutorMock, + CustomExecutorMock__factory, DAOMock, DAOMock__factory, IPlugin__factory, @@ -21,6 +23,11 @@ type FixtureResult = { Build1Factory: PluginMockBuild1__factory; }; +enum Operation { + call, + delegatecall, +} + describe('Plugin', function () { describe('PluginType', async () => { it('returns the current protocol version', async () => { @@ -60,8 +67,10 @@ describe('Plugin', function () { const {plugin} = await loadFixture(fixture); const iface = PluginMockBuild1__factory.createInterface(); - let interfaceId = ethers.BigNumber.from(iface.getSighash('setTarget')) - .xor(ethers.BigNumber.from(iface.getSighash('getTarget'))) + let interfaceId = ethers.BigNumber.from( + iface.getSighash('setTargetConfig') + ) + .xor(ethers.BigNumber.from(iface.getSighash('getTargetConfig'))) .toHexString(); expect(await plugin.supportsInterface(interfaceId)).to.be.true; @@ -83,7 +92,7 @@ describe('Plugin', function () { let newTarget = plugin.address; - await expect(plugin.setTarget(newTarget)) + await expect(plugin.setTargetConfig({target: newTarget, operation: 0})) .to.be.revertedWithCustomError(plugin, 'DaoUnauthorized') .withArgs( daoMock.address, @@ -101,61 +110,179 @@ describe('Plugin', function () { // Set the `hasPermission` mock function to return `true`. await daoMock.setHasPermissionReturnValueMock(true); // answer true for all permission requests - await expect(plugin.setTarget(newTarget)) + let targetConfig = {target: newTarget, operation: 0}; + let previousTargetConfig = { + target: ethers.constants.AddressZero, + operation: 0, + }; + await expect(plugin.setTargetConfig(targetConfig)) .to.emit(plugin, 'TargetSet') - .withArgs(ethers.constants.AddressZero, newTarget); + .withArgs( + (val1: any) => + expect(val1).to.deep.equal([ + previousTargetConfig.target, + previousTargetConfig.operation, + ]), + (val2: any) => + expect(val2).to.deep.equal([ + targetConfig.target, + targetConfig.operation, + ]) + ); - expect(await plugin.getTarget()).to.equal(newTarget); + expect(await plugin.getTargetConfig()).to.deep.equal([ + targetConfig.target, + targetConfig.operation, + ]); }); }); describe('Executions', async () => { + let executor: CustomExecutorMock; + let plugin: PluginMockBuild1; + let daoMock: DAOMock; + let mergedABI: any; + before(async () => { + const [deployer] = await ethers.getSigners(); + + const executorFactory = new CustomExecutorMock__factory(deployer); + executor = await executorFactory.deploy(); + + var abiA = CustomExecutorMock__factory.abi; + var abiB = PluginMockBuild1__factory.abi; + // @ts-ignore + mergedABI = abiA.concat(abiB); + }); + + beforeEach(async () => { + let data = await fixture(); + const [deployer] = await ethers.getSigners(); + + plugin = new ethers.Contract( + data.plugin.address, + mergedABI, + deployer + ) as PluginMockBuild1; + daoMock = data.daoMock; + + await daoMock.setHasPermissionReturnValueMock(true); + }); + describe('execute with current target', async () => { it('reverts with ambiguity if target is not set', async () => { - const {plugin, daoMock} = await loadFixture(fixture); - await expect( plugin['execute(uint256,(address,uint256,bytes)[],uint256)'](1, [], 0) ).to.be.reverted; }); - it('successfully forwards action to the currently set target', async () => { - const {plugin, daoMock} = await loadFixture(fixture); + describe('Execute with operation = `call`', async () => { + it('successfully forwards action to the currently set target and reverts from target', async () => { + await plugin.setTargetConfig({ + target: executor.address, + operation: Operation.call, + }); + await expect( + plugin['execute(uint256,(address,uint256,bytes)[],uint256)']( + 0, + [], + 0 + ) + ).to.be.revertedWithCustomError(executor, 'Failed'); + }); - await daoMock.setHasPermissionReturnValueMock(true); - await plugin.setTarget(daoMock.address); + it('successfully forwards action to the currently set target and emits event from target', async () => { + await plugin.setTargetConfig({ + target: executor.address, + operation: Operation.call, + }); + await expect( + plugin['execute(uint256,(address,uint256,bytes)[],uint256)']( + 1, + [], + 0 + ) + ).to.emit(executor, 'Executed'); + }); + }); - await expect( - plugin['execute(uint256,(address,uint256,bytes)[],uint256)'](1, [], 0) - ).to.emit(daoMock, 'Executed'); + describe('Execute with operation = `delegatecall`', async () => { + it('bubbles up the revert message and reverts from the consumer', async () => { + await plugin.setTargetConfig({ + target: executor.address, + operation: Operation.delegatecall, + }); + await expect( + plugin['execute(uint256,(address,uint256,bytes)[],uint256)']( + 0, + [], + 0 + ) + ).to.be.revertedWithCustomError(plugin, 'Failed'); + }); + + it('successfully does `delegatecall` and emits the event from the consumer', async () => { + await plugin.setTargetConfig({ + target: executor.address, + operation: Operation.delegatecall, + }); + // Must emit the event from the consumer, not from the executor because of delegatecall + await expect( + plugin['execute(uint256,(address,uint256,bytes)[],uint256)']( + 1, + [], + 0 + ) + ).to.emit(plugin, 'Executed'); + }); }); }); describe('execute with the custom target', async () => { it('reverts with ambiguity if target address(0) is passed', async () => { - const {plugin, daoMock} = await loadFixture(fixture); - await expect( - plugin['execute(address,uint256,(address,uint256,bytes)[],uint256)']( - ethers.constants.AddressZero, - 1, - [], - 0 - ) + plugin[ + 'execute(address,uint256,(address,uint256,bytes)[],uint256,uint8)' + ](ethers.constants.AddressZero, 1, [], 0, 0) ).to.be.reverted; }); - it('successfully forwards action to the currently set target', async () => { - const {plugin, daoMock} = await loadFixture(fixture); + describe('Execute with operation = `call`', async () => { + it('successfully forwards action to the currently set target and emits event from target', async () => { + await expect( + plugin[ + 'execute(address,uint256,(address,uint256,bytes)[],uint256,uint8)' + ](executor.address, 0, [], 0, 0) + ).to.be.revertedWithCustomError(executor, 'Failed'); + }); - await expect( - plugin['execute(address,uint256,(address,uint256,bytes)[],uint256)']( - daoMock.address, - 1, - [], - 0 - ) - ).to.emit(daoMock, 'Executed'); + it('successfully forwards action to the currently set target and reverts from target', async () => { + await expect( + plugin[ + 'execute(address,uint256,(address,uint256,bytes)[],uint256,uint8)' + ](executor.address, 1, [], 0, 0) + ).to.emit(executor, 'Executed'); + }); + }); + + describe('Execute with operation = `delegatecall`', async () => { + it('bubbles up the revert message and reverts from the consumer', async () => { + await expect( + plugin[ + 'execute(address,uint256,(address,uint256,bytes)[],uint256,uint8)' + ](executor.address, 0, [], 0, Operation.delegatecall) + ).to.be.revertedWithCustomError(plugin, 'Failed'); + }); + + it('successfully does `delegatecall` and emits the event from the consumer', async () => { + // Must emit the event from the consumer, not from the executor because of delegatecall + await expect( + plugin[ + 'execute(address,uint256,(address,uint256,bytes)[],uint256,uint8)' + ](executor.address, 1, [], 0, Operation.delegatecall) + ).to.emit(plugin, 'Executed'); + }); + + // TODO: one more test that catches `ExecuteFailed` revert message. }); }); }); From 045a403fbfa2486d168bafcbd27ba95b4d6c35c7 Mon Sep 17 00:00:00 2001 From: Claudia Barcelo Date: Thu, 22 Aug 2024 06:30:07 +0200 Subject: [PATCH 06/15] feat: add tests and refactor (#100) * feat: add test for checking the ExecuteFailed is properly emitted * feat: add new case in mock executor to simulate the tests * feat: refactor code to avoid duplications * ci: fix solhint warnings * ci: fix lint issues --- .../src/mocks/plugin/CustomExecutorMock.sol | 3 ++ .../extensions/proposal/ProposalMock.sol | 1 + .../proposal/ProposalUpgradeableMock.sol | 1 + contracts/src/plugin/Plugin.sol | 34 ++++---------- contracts/src/plugin/PluginCloneable.sol | 34 ++++---------- .../src/plugin/PluginUUPSUpgradeable.sol | 34 ++++---------- .../proposal/ProposalUpgradeable.sol | 1 - contracts/test/plugin/extensions/proposal.ts | 2 - contracts/test/plugin/plugin-clonable.ts | 39 +++++++++++---- .../test/plugin/plugin-uups-upgradeable.ts | 47 ++++++++++++++----- contracts/test/plugin/plugin.ts | 39 +++++++++++---- 11 files changed, 123 insertions(+), 112 deletions(-) diff --git a/contracts/src/mocks/plugin/CustomExecutorMock.sol b/contracts/src/mocks/plugin/CustomExecutorMock.sol index 57f79b53..9e5a05e2 100644 --- a/contracts/src/mocks/plugin/CustomExecutorMock.sol +++ b/contracts/src/mocks/plugin/CustomExecutorMock.sol @@ -25,6 +25,9 @@ contract CustomExecutorMock { ) external returns (bytes[] memory execResults, uint256 failureMap) { if (callId == bytes32(0)) { revert Failed(); + } else if (callId == bytes32(uint256(123))) { + // solhint-disable-next-line reason-string, custom-errors + revert(); } else { emit Executed(msg.sender, callId, _actions, allowFailureMap, failureMap, execResults); } diff --git a/contracts/src/mocks/plugin/extensions/proposal/ProposalMock.sol b/contracts/src/mocks/plugin/extensions/proposal/ProposalMock.sol index b4624926..62eabdea 100644 --- a/contracts/src/mocks/plugin/extensions/proposal/ProposalMock.sol +++ b/contracts/src/mocks/plugin/extensions/proposal/ProposalMock.sol @@ -11,6 +11,7 @@ contract ProposalMock is Proposal { // We don't need to test these below functions as they will be tested in the actual plugins. // This mock contract is only used to test `supportsInterface` function. + // solhint-disable no-empty-blocks function createProposal( bytes memory data, IDAO.Action[] memory actions, diff --git a/contracts/src/mocks/plugin/extensions/proposal/ProposalUpgradeableMock.sol b/contracts/src/mocks/plugin/extensions/proposal/ProposalUpgradeableMock.sol index 7595cba6..b01f4537 100644 --- a/contracts/src/mocks/plugin/extensions/proposal/ProposalUpgradeableMock.sol +++ b/contracts/src/mocks/plugin/extensions/proposal/ProposalUpgradeableMock.sol @@ -11,6 +11,7 @@ contract ProposalUpgradeableMock is ProposalUpgradeable { // We don't need to test these below functions as they will be tested in the actual plugins. // This mock contract is only used to test `supportsInterface` function. + // solhint-disable no-empty-blocks function createProposal( bytes memory data, IDAO.Action[] memory actions, diff --git a/contracts/src/plugin/Plugin.sol b/contracts/src/plugin/Plugin.sol index 67fa712a..25a198b6 100644 --- a/contracts/src/plugin/Plugin.sol +++ b/contracts/src/plugin/Plugin.sol @@ -106,35 +106,14 @@ abstract contract Plugin is IPlugin, ERC165, DaoAuthorizable, ProtocolVersion { IDAO.Action[] memory _actions, uint256 _allowFailureMap ) internal virtual returns (bytes[] memory execResults, uint256 failureMap) { - Operation op = currentTargetConfig.operation; - - if (op == Operation.DelegateCall) { - bool success; - bytes memory data; - - (success, data) = currentTargetConfig.target.delegatecall( - abi.encodeCall(IDAO.execute, (_callId, _actions, _allowFailureMap)) - ); - - if (!success) { - if (data.length > 0) { - assembly { - let returndata_size := mload(data) - revert(add(32, data), returndata_size) - } - } else { - revert ExecuteFailed(); - } - } - - (execResults, failureMap) = abi.decode(data, (bytes[], uint256)); - } else { - (execResults, failureMap) = IDAO(currentTargetConfig.target).execute( + return + _execute( + currentTargetConfig.target, _callId, _actions, - _allowFailureMap + _allowFailureMap, + currentTargetConfig.operation ); - } } /// @notice Forwards the actions to the `target` for the execution. @@ -155,12 +134,14 @@ abstract contract Plugin is IPlugin, ERC165, DaoAuthorizable, ProtocolVersion { bool success; bytes memory data; + // solhint-disable-next-line avoid-low-level-calls (success, data) = _target.delegatecall( abi.encodeCall(IDAO.execute, (_callId, _actions, _allowFailureMap)) ); if (!success) { if (data.length > 0) { + // solhint-disable-next-line no-inline-assembly assembly { let returndata_size := mload(data) revert(add(32, data), returndata_size) @@ -169,6 +150,7 @@ abstract contract Plugin is IPlugin, ERC165, DaoAuthorizable, ProtocolVersion { revert ExecuteFailed(); } } + (execResults, failureMap) = abi.decode(data, (bytes[], uint256)); } else { (execResults, failureMap) = IDAO(_target).execute(_callId, _actions, _allowFailureMap); } diff --git a/contracts/src/plugin/PluginCloneable.sol b/contracts/src/plugin/PluginCloneable.sol index 1a6b4a7e..bf457216 100644 --- a/contracts/src/plugin/PluginCloneable.sol +++ b/contracts/src/plugin/PluginCloneable.sol @@ -121,35 +121,14 @@ abstract contract PluginCloneable is IDAO.Action[] memory _actions, uint256 _allowFailureMap ) internal virtual returns (bytes[] memory execResults, uint256 failureMap) { - Operation op = currentTargetConfig.operation; - - if (op == Operation.DelegateCall) { - bool success; - bytes memory data; - - (success, data) = currentTargetConfig.target.delegatecall( - abi.encodeCall(IDAO.execute, (_callId, _actions, _allowFailureMap)) - ); - - if (!success) { - if (data.length > 0) { - assembly { - let returndata_size := mload(data) - revert(add(32, data), returndata_size) - } - } else { - revert ExecuteFailed(); - } - } - - (execResults, failureMap) = abi.decode(data, (bytes[], uint256)); - } else { - (execResults, failureMap) = IDAO(currentTargetConfig.target).execute( + return + _execute( + currentTargetConfig.target, _callId, _actions, - _allowFailureMap + _allowFailureMap, + currentTargetConfig.operation ); - } } /// @notice Forwards the actions to the `target` for the execution. @@ -170,12 +149,14 @@ abstract contract PluginCloneable is bool success; bytes memory data; + // solhint-disable-next-line avoid-low-level-calls (success, data) = _target.delegatecall( abi.encodeCall(IDAO.execute, (_callId, _actions, _allowFailureMap)) ); if (!success) { if (data.length > 0) { + // solhint-disable-next-line no-inline-assembly assembly { let returndata_size := mload(data) revert(add(32, data), returndata_size) @@ -184,6 +165,7 @@ abstract contract PluginCloneable is revert ExecuteFailed(); } } + (execResults, failureMap) = abi.decode(data, (bytes[], uint256)); } else { (execResults, failureMap) = IDAO(_target).execute(_callId, _actions, _allowFailureMap); } diff --git a/contracts/src/plugin/PluginUUPSUpgradeable.sol b/contracts/src/plugin/PluginUUPSUpgradeable.sol index 632c6a47..26aafaca 100644 --- a/contracts/src/plugin/PluginUUPSUpgradeable.sol +++ b/contracts/src/plugin/PluginUUPSUpgradeable.sol @@ -136,35 +136,14 @@ abstract contract PluginUUPSUpgradeable is IDAO.Action[] memory _actions, uint256 _allowFailureMap ) internal virtual returns (bytes[] memory execResults, uint256 failureMap) { - Operation op = currentTargetConfig.operation; - - if (op == Operation.DelegateCall) { - bool success; - bytes memory data; - - (success, data) = currentTargetConfig.target.delegatecall( - abi.encodeCall(IDAO.execute, (_callId, _actions, _allowFailureMap)) - ); - - if (!success) { - if (data.length > 0) { - assembly { - let returndata_size := mload(data) - revert(add(32, data), returndata_size) - } - } else { - revert ExecuteFailed(); - } - } - - (execResults, failureMap) = abi.decode(data, (bytes[], uint256)); - } else { - (execResults, failureMap) = IDAO(currentTargetConfig.target).execute( + return + _execute( + currentTargetConfig.target, _callId, _actions, - _allowFailureMap + _allowFailureMap, + currentTargetConfig.operation ); - } } /// @notice Forwards the actions to the `target` for the execution. @@ -185,12 +164,14 @@ abstract contract PluginUUPSUpgradeable is bool success; bytes memory data; + // solhint-disable-next-line avoid-low-level-calls (success, data) = _target.delegatecall( abi.encodeCall(IDAO.execute, (_callId, _actions, _allowFailureMap)) ); if (!success) { if (data.length > 0) { + // solhint-disable-next-line no-inline-assembly assembly { let returndata_size := mload(data) revert(add(32, data), returndata_size) @@ -199,6 +180,7 @@ abstract contract PluginUUPSUpgradeable is revert ExecuteFailed(); } } + (execResults, failureMap) = abi.decode(data, (bytes[], uint256)); } else { (execResults, failureMap) = IDAO(_target).execute(_callId, _actions, _allowFailureMap); } diff --git a/contracts/src/plugin/extensions/proposal/ProposalUpgradeable.sol b/contracts/src/plugin/extensions/proposal/ProposalUpgradeable.sol index 283be610..718b3b18 100644 --- a/contracts/src/plugin/extensions/proposal/ProposalUpgradeable.sol +++ b/contracts/src/plugin/extensions/proposal/ProposalUpgradeable.sol @@ -5,7 +5,6 @@ pragma solidity ^0.8.8; import {CountersUpgradeable} from "@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol"; import {ERC165Upgradeable} from "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol"; -import {IDAO} from "../../../dao/IDAO.sol"; import {IProposal} from "./IProposal.sol"; /// @title ProposalUpgradeable diff --git a/contracts/test/plugin/extensions/proposal.ts b/contracts/test/plugin/extensions/proposal.ts index 5e9958e7..4bea8272 100644 --- a/contracts/test/plugin/extensions/proposal.ts +++ b/contracts/test/plugin/extensions/proposal.ts @@ -1,7 +1,6 @@ import { DAOMock, DAOMock__factory, - IDAO, IProposal__factory, ProposalMock, ProposalUpgradeableMock, @@ -13,7 +12,6 @@ import {getInterfaceId} from '@aragon/osx-commons-sdk'; import {IProposal__factory as IProposal_V1_0_0__factory} from '@aragon/osx-ethers-v1.0.0'; import {loadFixture} from '@nomicfoundation/hardhat-network-helpers'; import {expect} from 'chai'; -import {BigNumberish, BytesLike} from 'ethers'; import {ethers} from 'hardhat'; describe('Proposal', async () => { diff --git a/contracts/test/plugin/plugin-clonable.ts b/contracts/test/plugin/plugin-clonable.ts index 982a98d2..a1c18d8d 100644 --- a/contracts/test/plugin/plugin-clonable.ts +++ b/contracts/test/plugin/plugin-clonable.ts @@ -124,7 +124,7 @@ describe('PluginCloneable', function () { const {implementation} = await loadFixture(fixture); const iface = PluginCloneableMockBuild1__factory.createInterface(); - let interfaceId = ethers.BigNumber.from( + const interfaceId = ethers.BigNumber.from( iface.getSighash('setTargetConfig') ) .xor(ethers.BigNumber.from(iface.getSighash('getTargetConfig'))) @@ -147,7 +147,7 @@ describe('PluginCloneable', function () { it('reverts if caller does not have the permission', async () => { const {deployer, proxy, daoMock} = await loadFixture(fixture); - let newTarget = proxy.address; + const newTarget = proxy.address; await expect(proxy.setTargetConfig({target: newTarget, operation: 0})) .to.be.revertedWithCustomError(proxy, 'DaoUnauthorized') @@ -165,10 +165,10 @@ describe('PluginCloneable', function () { // Set the `hasPermission` mock function to return `true`. await daoMock.setHasPermissionReturnValueMock(true); // answer true for all permission requests - let newTarget = proxy.address; + const newTarget = proxy.address; - let targetConfig = {target: newTarget, operation: 0}; - let previousTargetConfig = { + const targetConfig = {target: newTarget, operation: 0}; + const previousTargetConfig = { target: ethers.constants.AddressZero, operation: 0, }; @@ -205,14 +205,15 @@ describe('PluginCloneable', function () { const executorFactory = new CustomExecutorMock__factory(deployer); executor = await executorFactory.deploy(); - var abiA = CustomExecutorMock__factory.abi; - var abiB = PluginCloneableMockBuild1__factory.abi; + const abiA = CustomExecutorMock__factory.abi; + const abiB = PluginCloneableMockBuild1__factory.abi; + // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore mergedABI = abiA.concat(abiB); }); beforeEach(async () => { - let data = await fixture(); + const data = await fixture(); const [deployer] = await ethers.getSigners(); proxy = new ethers.Contract( @@ -291,6 +292,20 @@ describe('PluginCloneable', function () { ) ).to.emit(proxy, 'Executed'); }); + + it('reverts with `ExecuteFailed`error', async () => { + await proxy.setTargetConfig({ + target: executor.address, + operation: Operation.delegatecall, + }); + await expect( + proxy['execute(uint256,(address,uint256,bytes)[],uint256)']( + 123, + [], + 0 + ) + ).to.be.revertedWithCustomError(proxy, 'ExecuteFailed'); + }); }); }); @@ -339,7 +354,13 @@ describe('PluginCloneable', function () { ).to.emit(proxy, 'Executed'); }); - // TODO: one more test that catches `ExecuteFailed` revert message. + it('reverts with `ExecuteFailed`error', async () => { + await expect( + proxy[ + 'execute(address,uint256,(address,uint256,bytes)[],uint256,uint8)' + ](executor.address, 123, [], 0, Operation.delegatecall) + ).to.be.revertedWithCustomError(proxy, 'ExecuteFailed'); + }); }); }); }); diff --git a/contracts/test/plugin/plugin-uups-upgradeable.ts b/contracts/test/plugin/plugin-uups-upgradeable.ts index 37f53dbf..bffe04d6 100644 --- a/contracts/test/plugin/plugin-uups-upgradeable.ts +++ b/contracts/test/plugin/plugin-uups-upgradeable.ts @@ -137,7 +137,7 @@ describe('PluginUUPSUpgradeable', function () { const {implementation} = await loadFixture(fixture); const iface = PluginUUPSUpgradeableMockBuild1__factory.createInterface(); - let interfaceId = ethers.BigNumber.from( + const interfaceId = ethers.BigNumber.from( iface.getSighash('setTargetConfig') ) .xor(ethers.BigNumber.from(iface.getSighash('getTargetConfig'))) @@ -160,7 +160,7 @@ describe('PluginUUPSUpgradeable', function () { it('reverts if caller does not have the permission', async () => { const {deployer, proxy, daoMock} = await loadFixture(fixture); - let newTarget = proxy.address; + const newTarget = proxy.address; await expect(proxy.setTargetConfig({target: newTarget, operation: 0})) .to.be.revertedWithCustomError(proxy, 'DaoUnauthorized') @@ -178,10 +178,10 @@ describe('PluginUUPSUpgradeable', function () { // Set the `hasPermission` mock function to return `true`. await daoMock.setHasPermissionReturnValueMock(true); // answer true for all permission requests - let newTarget = proxy.address; + const newTarget = proxy.address; - let targetConfig = {target: newTarget, operation: 0}; - let previousTargetConfig = { + const targetConfig = {target: newTarget, operation: 0}; + const previousTargetConfig = { target: ethers.constants.AddressZero, operation: 0, }; @@ -218,14 +218,15 @@ describe('PluginUUPSUpgradeable', function () { const executorFactory = new CustomExecutorMock__factory(deployer); executor = await executorFactory.deploy(); - var abiA = CustomExecutorMock__factory.abi; - var abiB = PluginUUPSUpgradeableMockBuild1__factory.abi; + const abiA = CustomExecutorMock__factory.abi; + const abiB = PluginUUPSUpgradeableMockBuild1__factory.abi; + // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore mergedABI = abiA.concat(abiB); }); beforeEach(async () => { - let data = await fixture(); + const data = await fixture(); const [deployer] = await ethers.getSigners(); proxy = new ethers.Contract( @@ -276,11 +277,11 @@ describe('PluginUUPSUpgradeable', function () { }); describe('Execute with operation = `delegatecall`', async () => { - await proxy.setTargetConfig({ - target: executor.address, - operation: Operation.delegatecall, - }); it('bubbles up the revert message and reverts from the consumer', async () => { + await proxy.setTargetConfig({ + target: executor.address, + operation: Operation.delegatecall, + }); await expect( proxy['execute(uint256,(address,uint256,bytes)[],uint256)']( 0, @@ -304,6 +305,20 @@ describe('PluginUUPSUpgradeable', function () { ) ).to.emit(proxy, 'Executed'); }); + + it('reverts with `ExecuteFailed`error', async () => { + await proxy.setTargetConfig({ + target: executor.address, + operation: Operation.delegatecall, + }); + await expect( + proxy['execute(uint256,(address,uint256,bytes)[],uint256)']( + 123, + [], + 0 + ) + ).to.be.revertedWithCustomError(proxy, 'ExecuteFailed'); + }); }); }); @@ -352,7 +367,13 @@ describe('PluginUUPSUpgradeable', function () { ).to.emit(proxy, 'Executed'); }); - // TODO: one more test that catches `ExecuteFailed` revert message. + it('reverts with `ExecuteFailed`error', async () => { + await expect( + proxy[ + 'execute(address,uint256,(address,uint256,bytes)[],uint256,uint8)' + ](executor.address, 123, [], 0, Operation.delegatecall) + ).to.be.revertedWithCustomError(proxy, 'ExecuteFailed'); + }); }); }); }); diff --git a/contracts/test/plugin/plugin.ts b/contracts/test/plugin/plugin.ts index b4f8832c..251fcda6 100644 --- a/contracts/test/plugin/plugin.ts +++ b/contracts/test/plugin/plugin.ts @@ -67,7 +67,7 @@ describe('Plugin', function () { const {plugin} = await loadFixture(fixture); const iface = PluginMockBuild1__factory.createInterface(); - let interfaceId = ethers.BigNumber.from( + const interfaceId = ethers.BigNumber.from( iface.getSighash('setTargetConfig') ) .xor(ethers.BigNumber.from(iface.getSighash('getTargetConfig'))) @@ -90,7 +90,7 @@ describe('Plugin', function () { it('reverts if caller does not have the permission', async () => { const {deployer, plugin, daoMock} = await loadFixture(fixture); - let newTarget = plugin.address; + const newTarget = plugin.address; await expect(plugin.setTargetConfig({target: newTarget, operation: 0})) .to.be.revertedWithCustomError(plugin, 'DaoUnauthorized') @@ -105,13 +105,13 @@ describe('Plugin', function () { it('updates the target and emits an appropriate event', async () => { const {plugin, daoMock} = await loadFixture(fixture); - let newTarget = plugin.address; + const newTarget = plugin.address; // Set the `hasPermission` mock function to return `true`. await daoMock.setHasPermissionReturnValueMock(true); // answer true for all permission requests - let targetConfig = {target: newTarget, operation: 0}; - let previousTargetConfig = { + const targetConfig = {target: newTarget, operation: 0}; + const previousTargetConfig = { target: ethers.constants.AddressZero, operation: 0, }; @@ -148,14 +148,15 @@ describe('Plugin', function () { const executorFactory = new CustomExecutorMock__factory(deployer); executor = await executorFactory.deploy(); - var abiA = CustomExecutorMock__factory.abi; - var abiB = PluginMockBuild1__factory.abi; + const abiA = CustomExecutorMock__factory.abi; + const abiB = PluginMockBuild1__factory.abi; + // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore mergedABI = abiA.concat(abiB); }); beforeEach(async () => { - let data = await fixture(); + const data = await fixture(); const [deployer] = await ethers.getSigners(); plugin = new ethers.Contract( @@ -234,6 +235,20 @@ describe('Plugin', function () { ) ).to.emit(plugin, 'Executed'); }); + + it('reverts with `ExecuteFailed`error', async () => { + await plugin.setTargetConfig({ + target: executor.address, + operation: Operation.delegatecall, + }); + await expect( + plugin['execute(uint256,(address,uint256,bytes)[],uint256)']( + 123, + [], + 0 + ) + ).to.be.revertedWithCustomError(plugin, 'ExecuteFailed'); + }); }); }); @@ -282,7 +297,13 @@ describe('Plugin', function () { ).to.emit(plugin, 'Executed'); }); - // TODO: one more test that catches `ExecuteFailed` revert message. + it('reverts with `ExecuteFailed`error', async () => { + await expect( + plugin[ + 'execute(address,uint256,(address,uint256,bytes)[],uint256,uint8)' + ](executor.address, 123, [], 0, Operation.delegatecall) + ).to.be.revertedWithCustomError(plugin, 'ExecuteFailed'); + }); }); }); }); From f4dc570f3c109da14eab1b58f17400d12c819b42 Mon Sep 17 00:00:00 2001 From: Giorgi Lagidze Date: Mon, 26 Aug 2024 16:54:42 +0400 Subject: [PATCH 07/15] remove previous target from targetset event --- contracts/src/plugin/Plugin.sol | 10 ++++----- contracts/src/plugin/PluginCloneable.sol | 10 ++++----- .../src/plugin/PluginUUPSUpgradeable.sol | 10 ++++----- contracts/test/plugin/plugin-clonable.ts | 21 ++++++------------- .../test/plugin/plugin-uups-upgradeable.ts | 21 ++++++------------- contracts/test/plugin/plugin.ts | 21 ++++++------------- 6 files changed, 30 insertions(+), 63 deletions(-) diff --git a/contracts/src/plugin/Plugin.sol b/contracts/src/plugin/Plugin.sol index 25a198b6..f02d1407 100644 --- a/contracts/src/plugin/Plugin.sol +++ b/contracts/src/plugin/Plugin.sol @@ -35,7 +35,7 @@ abstract contract Plugin is IPlugin, ERC165, DaoAuthorizable, ProtocolVersion { error InvalidTargetConfig(TargetConfig targetConfig); /// @dev Emitted each time the TargetConfig is set. - event TargetSet(TargetConfig previousTargetConfig, TargetConfig newTargetConfig); + event TargetSet(TargetConfig newTargetConfig); /// @notice Thrown when `delegatecall` fails. error ExecuteFailed(); @@ -79,10 +79,6 @@ abstract contract Plugin is IPlugin, ERC165, DaoAuthorizable, ProtocolVersion { /// @notice Sets the target to a new target (`newTarget`). /// @param _targetConfig The target Config containing the address and operation type. function _setTargetConfig(TargetConfig calldata _targetConfig) internal virtual { - TargetConfig memory previousTargetConfig = currentTargetConfig; - - currentTargetConfig = _targetConfig; - // safety check to avoid setting dao as `target` with `delegatecall` operation // as this would not work and cause the plugin to be bricked. if ( @@ -92,7 +88,9 @@ abstract contract Plugin is IPlugin, ERC165, DaoAuthorizable, ProtocolVersion { revert InvalidTargetConfig(_targetConfig); } - emit TargetSet(previousTargetConfig, _targetConfig); + currentTargetConfig = _targetConfig; + + emit TargetSet(_targetConfig); } /// @notice Forwards the actions to the currently set `target` for the execution. diff --git a/contracts/src/plugin/PluginCloneable.sol b/contracts/src/plugin/PluginCloneable.sol index bf457216..85156f2d 100644 --- a/contracts/src/plugin/PluginCloneable.sol +++ b/contracts/src/plugin/PluginCloneable.sol @@ -43,7 +43,7 @@ abstract contract PluginCloneable is error ExecuteFailed(); /// @dev Emitted each time the TargetConfig is set. - event TargetSet(TargetConfig previousTargetConfig, TargetConfig newTargetConfig); + event TargetSet(TargetConfig newTargetConfig); /// @notice The ID of the permission required to call the `setTargetConfig` function. bytes32 public constant SET_TARGET_CONFIG_PERMISSION_ID = @@ -94,10 +94,6 @@ abstract contract PluginCloneable is /// @notice Sets the target to a new target (`newTarget`). /// @param _targetConfig The target Config containing the address and operation type. function _setTargetConfig(TargetConfig calldata _targetConfig) internal virtual { - TargetConfig memory previousTargetConfig = currentTargetConfig; - - currentTargetConfig = _targetConfig; - // safety check to avoid setting dao as `target` with `delegatecall` operation // as this would not work and cause the plugin to be bricked. if ( @@ -107,7 +103,9 @@ abstract contract PluginCloneable is revert InvalidTargetConfig(_targetConfig); } - emit TargetSet(previousTargetConfig, _targetConfig); + currentTargetConfig = _targetConfig; + + emit TargetSet(_targetConfig); } /// @notice Forwards the actions to the currently set `target` for the execution. diff --git a/contracts/src/plugin/PluginUUPSUpgradeable.sol b/contracts/src/plugin/PluginUUPSUpgradeable.sol index 26aafaca..7df3831d 100644 --- a/contracts/src/plugin/PluginUUPSUpgradeable.sol +++ b/contracts/src/plugin/PluginUUPSUpgradeable.sol @@ -48,7 +48,7 @@ abstract contract PluginUUPSUpgradeable is error ExecuteFailed(); /// @dev Emitted each time the TargetConfig is set. - event TargetSet(TargetConfig previousTargetConfig, TargetConfig newTargetConfig); + event TargetSet(TargetConfig newTargetConfig); /// @notice The ID of the permission required to call the `setTargetConfig` function. bytes32 public constant SET_TARGET_CONFIG_PERMISSION_ID = @@ -109,10 +109,6 @@ abstract contract PluginUUPSUpgradeable is /// @notice Sets the target to a new target (`newTarget`). /// @param _targetConfig The target Config containing the address and operation type. function _setTargetConfig(TargetConfig calldata _targetConfig) internal virtual { - TargetConfig memory previousTargetConfig = currentTargetConfig; - - currentTargetConfig = _targetConfig; - // safety check to avoid setting dao as `target` with `delegatecall` operation // as this would not work and cause the plugin to be bricked. if ( @@ -122,7 +118,9 @@ abstract contract PluginUUPSUpgradeable is revert InvalidTargetConfig(_targetConfig); } - emit TargetSet(previousTargetConfig, _targetConfig); + currentTargetConfig = _targetConfig; + + emit TargetSet(_targetConfig); } /// @notice Forwards the actions to the currently set `target` for the execution. diff --git a/contracts/test/plugin/plugin-clonable.ts b/contracts/test/plugin/plugin-clonable.ts index a1c18d8d..418d55cf 100644 --- a/contracts/test/plugin/plugin-clonable.ts +++ b/contracts/test/plugin/plugin-clonable.ts @@ -168,23 +168,14 @@ describe('PluginCloneable', function () { const newTarget = proxy.address; const targetConfig = {target: newTarget, operation: 0}; - const previousTargetConfig = { - target: ethers.constants.AddressZero, - operation: 0, - }; + await expect(proxy.setTargetConfig(targetConfig)) .to.emit(proxy, 'TargetSet') - .withArgs( - (val1: any) => - expect(val1).to.deep.equal([ - previousTargetConfig.target, - previousTargetConfig.operation, - ]), - (val2: any) => - expect(val2).to.deep.equal([ - targetConfig.target, - targetConfig.operation, - ]) + .withArgs((val: any) => + expect(val).to.deep.equal([ + targetConfig.target, + targetConfig.operation, + ]) ); expect(await proxy.getTargetConfig()).to.deep.equal([ diff --git a/contracts/test/plugin/plugin-uups-upgradeable.ts b/contracts/test/plugin/plugin-uups-upgradeable.ts index bffe04d6..0b237975 100644 --- a/contracts/test/plugin/plugin-uups-upgradeable.ts +++ b/contracts/test/plugin/plugin-uups-upgradeable.ts @@ -181,23 +181,14 @@ describe('PluginUUPSUpgradeable', function () { const newTarget = proxy.address; const targetConfig = {target: newTarget, operation: 0}; - const previousTargetConfig = { - target: ethers.constants.AddressZero, - operation: 0, - }; + await expect(proxy.setTargetConfig(targetConfig)) .to.emit(proxy, 'TargetSet') - .withArgs( - (val1: any) => - expect(val1).to.deep.equal([ - previousTargetConfig.target, - previousTargetConfig.operation, - ]), - (val2: any) => - expect(val2).to.deep.equal([ - targetConfig.target, - targetConfig.operation, - ]) + .withArgs((val: any) => + expect(val).to.deep.equal([ + targetConfig.target, + targetConfig.operation, + ]) ); expect(await proxy.getTargetConfig()).to.deep.equal([ diff --git a/contracts/test/plugin/plugin.ts b/contracts/test/plugin/plugin.ts index 251fcda6..c93ef81e 100644 --- a/contracts/test/plugin/plugin.ts +++ b/contracts/test/plugin/plugin.ts @@ -111,23 +111,14 @@ describe('Plugin', function () { await daoMock.setHasPermissionReturnValueMock(true); // answer true for all permission requests const targetConfig = {target: newTarget, operation: 0}; - const previousTargetConfig = { - target: ethers.constants.AddressZero, - operation: 0, - }; + await expect(plugin.setTargetConfig(targetConfig)) .to.emit(plugin, 'TargetSet') - .withArgs( - (val1: any) => - expect(val1).to.deep.equal([ - previousTargetConfig.target, - previousTargetConfig.operation, - ]), - (val2: any) => - expect(val2).to.deep.equal([ - targetConfig.target, - targetConfig.operation, - ]) + .withArgs((val: any) => + expect(val).to.deep.equal([ + targetConfig.target, + targetConfig.operation, + ]) ); expect(await plugin.getTargetConfig()).to.deep.equal([ From 5306a73b52a66049eea7bc0bf09a98de66d644db Mon Sep 17 00:00:00 2001 From: Giorgi Lagidze Date: Tue, 27 Aug 2024 11:13:18 +0400 Subject: [PATCH 08/15] add get proposalid in the interface --- contracts/src/plugin/extensions/proposal/IProposal.sol | 9 +++++++++ contracts/src/plugin/extensions/proposal/Proposal.sol | 3 ++- .../plugin/extensions/proposal/ProposalUpgradeable.sol | 3 ++- 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/contracts/src/plugin/extensions/proposal/IProposal.sol b/contracts/src/plugin/extensions/proposal/IProposal.sol index 93f7305d..5d8015f3 100644 --- a/contracts/src/plugin/extensions/proposal/IProposal.sol +++ b/contracts/src/plugin/extensions/proposal/IProposal.sol @@ -49,6 +49,15 @@ interface IProposal { /// @return bool Returns if proposal can be executed or not. function canExecute(uint256 proposalId) external returns (bool); + /// @notice Creates a proposal Id. + /// @param actions The actions that will be executed after the proposal passes. + /// @param metadata The custom metadata that is passed when creating a proposal. + /// @return proposalId The id of the proposal. + function getProposalId( + IDAO.Action[] memory actions, + bytes memory metadata + ) external returns (uint256); + /// @notice Returns the proposal count determining the next proposal ID. /// @dev This function has been deprecated but due to backwards compatibility, it still stays in the interface /// but returns maximum value of uint256 to let consumers know not to depend on it anymore. diff --git a/contracts/src/plugin/extensions/proposal/Proposal.sol b/contracts/src/plugin/extensions/proposal/Proposal.sol index eb16e1de..ea504469 100644 --- a/contracts/src/plugin/extensions/proposal/Proposal.sol +++ b/contracts/src/plugin/extensions/proposal/Proposal.sol @@ -26,7 +26,8 @@ abstract contract Proposal is IProposal, ERC165 { _interfaceId == type(IProposal).interfaceId ^ IProposal.createProposal.selector ^ - IProposal.canExecute.selector || + IProposal.canExecute.selector ^ + IProposal.getProposalId.selector || _interfaceId == type(IProposal).interfaceId || super.supportsInterface(_interfaceId); } diff --git a/contracts/src/plugin/extensions/proposal/ProposalUpgradeable.sol b/contracts/src/plugin/extensions/proposal/ProposalUpgradeable.sol index 718b3b18..042ac330 100644 --- a/contracts/src/plugin/extensions/proposal/ProposalUpgradeable.sol +++ b/contracts/src/plugin/extensions/proposal/ProposalUpgradeable.sol @@ -32,7 +32,8 @@ abstract contract ProposalUpgradeable is IProposal, ERC165Upgradeable { _interfaceId == type(IProposal).interfaceId ^ IProposal.createProposal.selector ^ - IProposal.canExecute.selector || + IProposal.canExecute.selector ^ + IProposal.getProposalId.selector || _interfaceId == type(IProposal).interfaceId || super.supportsInterface(_interfaceId); } From 6def9f4664aedd08e4c8045837200aa893d5a972 Mon Sep 17 00:00:00 2001 From: Giorgi Lagidze Date: Tue, 27 Aug 2024 15:34:51 +0400 Subject: [PATCH 09/15] rename function --- .../src/mocks/plugin/extensions/proposal/ProposalMock.sol | 5 +++++ .../plugin/extensions/proposal/ProposalUpgradeableMock.sol | 5 +++++ contracts/src/plugin/extensions/proposal/IProposal.sol | 2 +- contracts/src/plugin/extensions/proposal/Proposal.sol | 2 +- .../src/plugin/extensions/proposal/ProposalUpgradeable.sol | 2 +- 5 files changed, 13 insertions(+), 3 deletions(-) diff --git a/contracts/src/mocks/plugin/extensions/proposal/ProposalMock.sol b/contracts/src/mocks/plugin/extensions/proposal/ProposalMock.sol index 62eabdea..685c3a7e 100644 --- a/contracts/src/mocks/plugin/extensions/proposal/ProposalMock.sol +++ b/contracts/src/mocks/plugin/extensions/proposal/ProposalMock.sol @@ -20,4 +20,9 @@ contract ProposalMock is Proposal { ) external returns (uint256 proposalId) {} function canExecute(uint256 proposalId) external returns (bool) {} + + function createProposalId( + IDAO.Action[] memory actions, + bytes memory metadata + ) external returns (uint256) {} } diff --git a/contracts/src/mocks/plugin/extensions/proposal/ProposalUpgradeableMock.sol b/contracts/src/mocks/plugin/extensions/proposal/ProposalUpgradeableMock.sol index b01f4537..4ce7a0cf 100644 --- a/contracts/src/mocks/plugin/extensions/proposal/ProposalUpgradeableMock.sol +++ b/contracts/src/mocks/plugin/extensions/proposal/ProposalUpgradeableMock.sol @@ -20,4 +20,9 @@ contract ProposalUpgradeableMock is ProposalUpgradeable { ) external returns (uint256 proposalId) {} function canExecute(uint256 proposalId) external returns (bool) {} + + function createProposalId( + IDAO.Action[] memory actions, + bytes memory metadata + ) external returns (uint256) {} } diff --git a/contracts/src/plugin/extensions/proposal/IProposal.sol b/contracts/src/plugin/extensions/proposal/IProposal.sol index 5d8015f3..44e8763a 100644 --- a/contracts/src/plugin/extensions/proposal/IProposal.sol +++ b/contracts/src/plugin/extensions/proposal/IProposal.sol @@ -53,7 +53,7 @@ interface IProposal { /// @param actions The actions that will be executed after the proposal passes. /// @param metadata The custom metadata that is passed when creating a proposal. /// @return proposalId The id of the proposal. - function getProposalId( + function createProposalId( IDAO.Action[] memory actions, bytes memory metadata ) external returns (uint256); diff --git a/contracts/src/plugin/extensions/proposal/Proposal.sol b/contracts/src/plugin/extensions/proposal/Proposal.sol index ea504469..42e77421 100644 --- a/contracts/src/plugin/extensions/proposal/Proposal.sol +++ b/contracts/src/plugin/extensions/proposal/Proposal.sol @@ -27,7 +27,7 @@ abstract contract Proposal is IProposal, ERC165 { type(IProposal).interfaceId ^ IProposal.createProposal.selector ^ IProposal.canExecute.selector ^ - IProposal.getProposalId.selector || + IProposal.createProposalId.selector || _interfaceId == type(IProposal).interfaceId || super.supportsInterface(_interfaceId); } diff --git a/contracts/src/plugin/extensions/proposal/ProposalUpgradeable.sol b/contracts/src/plugin/extensions/proposal/ProposalUpgradeable.sol index 042ac330..13448bc0 100644 --- a/contracts/src/plugin/extensions/proposal/ProposalUpgradeable.sol +++ b/contracts/src/plugin/extensions/proposal/ProposalUpgradeable.sol @@ -33,7 +33,7 @@ abstract contract ProposalUpgradeable is IProposal, ERC165Upgradeable { type(IProposal).interfaceId ^ IProposal.createProposal.selector ^ IProposal.canExecute.selector ^ - IProposal.getProposalId.selector || + IProposal.createProposalId.selector || _interfaceId == type(IProposal).interfaceId || super.supportsInterface(_interfaceId); } From 9b799db24fcc954d524a3e16cbbeb40ba4db9423 Mon Sep 17 00:00:00 2001 From: Giorgi Lagidze Date: Tue, 10 Sep 2024 21:13:34 +0400 Subject: [PATCH 10/15] from calldata to memory --- contracts/src/plugin/Plugin.sol | 2 +- contracts/src/plugin/PluginCloneable.sol | 2 +- contracts/src/plugin/PluginUUPSUpgradeable.sol | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/contracts/src/plugin/Plugin.sol b/contracts/src/plugin/Plugin.sol index f02d1407..4bb6d0f6 100644 --- a/contracts/src/plugin/Plugin.sol +++ b/contracts/src/plugin/Plugin.sol @@ -78,7 +78,7 @@ abstract contract Plugin is IPlugin, ERC165, DaoAuthorizable, ProtocolVersion { /// @notice Sets the target to a new target (`newTarget`). /// @param _targetConfig The target Config containing the address and operation type. - function _setTargetConfig(TargetConfig calldata _targetConfig) internal virtual { + function _setTargetConfig(TargetConfig memory _targetConfig) internal virtual { // safety check to avoid setting dao as `target` with `delegatecall` operation // as this would not work and cause the plugin to be bricked. if ( diff --git a/contracts/src/plugin/PluginCloneable.sol b/contracts/src/plugin/PluginCloneable.sol index 85156f2d..fdcd4497 100644 --- a/contracts/src/plugin/PluginCloneable.sol +++ b/contracts/src/plugin/PluginCloneable.sol @@ -93,7 +93,7 @@ abstract contract PluginCloneable is /// @notice Sets the target to a new target (`newTarget`). /// @param _targetConfig The target Config containing the address and operation type. - function _setTargetConfig(TargetConfig calldata _targetConfig) internal virtual { + function _setTargetConfig(TargetConfig memory _targetConfig) internal virtual { // safety check to avoid setting dao as `target` with `delegatecall` operation // as this would not work and cause the plugin to be bricked. if ( diff --git a/contracts/src/plugin/PluginUUPSUpgradeable.sol b/contracts/src/plugin/PluginUUPSUpgradeable.sol index 7df3831d..322c2ae4 100644 --- a/contracts/src/plugin/PluginUUPSUpgradeable.sol +++ b/contracts/src/plugin/PluginUUPSUpgradeable.sol @@ -108,7 +108,7 @@ abstract contract PluginUUPSUpgradeable is /// @notice Sets the target to a new target (`newTarget`). /// @param _targetConfig The target Config containing the address and operation type. - function _setTargetConfig(TargetConfig calldata _targetConfig) internal virtual { + function _setTargetConfig(TargetConfig memory _targetConfig) internal virtual { // safety check to avoid setting dao as `target` with `delegatecall` operation // as this would not work and cause the plugin to be bricked. if ( From 23c73bd0f438d529e822b0d1f42648d75291c85b Mon Sep 17 00:00:00 2001 From: Giorgi Lagidze Date: Thu, 19 Sep 2024 13:33:18 +0400 Subject: [PATCH 11/15] improved target config and virtual functions --- .../extensions/proposal/ProposalMock.sol | 4 +- .../proposal/ProposalUpgradeableMock.sol | 4 +- contracts/src/plugin/Plugin.sol | 20 ++++++- contracts/src/plugin/PluginCloneable.sol | 20 ++++++- .../src/plugin/PluginUUPSUpgradeable.sol | 20 ++++++- .../plugin/extensions/proposal/IProposal.sol | 4 +- contracts/test/plugin/plugin-clonable.ts | 55 ++++++++++++++++++- .../test/plugin/plugin-uups-upgradeable.ts | 55 ++++++++++++++++++- contracts/test/plugin/plugin.ts | 55 ++++++++++++++++++- 9 files changed, 222 insertions(+), 15 deletions(-) diff --git a/contracts/src/mocks/plugin/extensions/proposal/ProposalMock.sol b/contracts/src/mocks/plugin/extensions/proposal/ProposalMock.sol index 685c3a7e..cdf3491c 100644 --- a/contracts/src/mocks/plugin/extensions/proposal/ProposalMock.sol +++ b/contracts/src/mocks/plugin/extensions/proposal/ProposalMock.sol @@ -19,10 +19,10 @@ contract ProposalMock is Proposal { uint64 endDate ) external returns (uint256 proposalId) {} - function canExecute(uint256 proposalId) external returns (bool) {} + function canExecute(uint256 proposalId) external view returns (bool) {} function createProposalId( IDAO.Action[] memory actions, bytes memory metadata - ) external returns (uint256) {} + ) external view returns (uint256) {} } diff --git a/contracts/src/mocks/plugin/extensions/proposal/ProposalUpgradeableMock.sol b/contracts/src/mocks/plugin/extensions/proposal/ProposalUpgradeableMock.sol index 4ce7a0cf..88aa154f 100644 --- a/contracts/src/mocks/plugin/extensions/proposal/ProposalUpgradeableMock.sol +++ b/contracts/src/mocks/plugin/extensions/proposal/ProposalUpgradeableMock.sol @@ -19,10 +19,10 @@ contract ProposalUpgradeableMock is ProposalUpgradeable { uint64 endDate ) external returns (uint256 proposalId) {} - function canExecute(uint256 proposalId) external returns (bool) {} + function canExecute(uint256 proposalId) external view returns (bool) {} function createProposalId( IDAO.Action[] memory actions, bytes memory metadata - ) external returns (uint256) {} + ) external view returns (uint256) {} } diff --git a/contracts/src/plugin/Plugin.sol b/contracts/src/plugin/Plugin.sol index 4bb6d0f6..27be98fd 100644 --- a/contracts/src/plugin/Plugin.sol +++ b/contracts/src/plugin/Plugin.sol @@ -53,10 +53,23 @@ abstract contract Plugin is IPlugin, ERC165, DaoAuthorizable, ProtocolVersion { } /// @notice Returns the currently set target contract. - function getTargetConfig() public view returns (TargetConfig memory) { + /// @return TargetConfig The currently set target. + function getCurrentTargetConfig() public view virtual returns (TargetConfig memory) { return currentTargetConfig; } + /// @notice A convenient function to get current target config only if its target is not address(0), otherwise dao(). + /// @return TargetConfig The current target config if its target is not address(0), otherwise returns dao()." + function getTargetConfig() public view virtual returns (TargetConfig memory) { + TargetConfig memory targetConfig = currentTargetConfig; + + if (targetConfig.target == address(0)) { + targetConfig = TargetConfig({target: address(dao()), operation: Operation.Call}); + } + + return targetConfig; + } + /// @dev Sets the target to a new target (`newTarget`). /// @param _targetConfig The target Config containing the address and operation type. function setTargetConfig( @@ -72,7 +85,10 @@ abstract contract Plugin is IPlugin, ERC165, DaoAuthorizable, ProtocolVersion { return _interfaceId == type(IPlugin).interfaceId || _interfaceId == type(IProtocolVersion).interfaceId || - _interfaceId == this.setTargetConfig.selector ^ this.getTargetConfig.selector || + _interfaceId == + this.setTargetConfig.selector ^ + this.getTargetConfig.selector ^ + this.getCurrentTargetConfig.selector || super.supportsInterface(_interfaceId); } diff --git a/contracts/src/plugin/PluginCloneable.sol b/contracts/src/plugin/PluginCloneable.sol index fdcd4497..5f7ceb86 100644 --- a/contracts/src/plugin/PluginCloneable.sol +++ b/contracts/src/plugin/PluginCloneable.sol @@ -76,10 +76,23 @@ abstract contract PluginCloneable is } /// @notice Returns the currently set target contract. - function getTargetConfig() public view returns (TargetConfig memory) { + /// @return TargetConfig The currently set target. + function getCurrentTargetConfig() public view virtual returns (TargetConfig memory) { return currentTargetConfig; } + /// @notice A convenient function to get current target config only if its target is not address(0), otherwise dao(). + /// @return TargetConfig The current target config if its target is not address(0), otherwise returns dao()." + function getTargetConfig() public view virtual returns (TargetConfig memory) { + TargetConfig memory targetConfig = currentTargetConfig; + + if (targetConfig.target == address(0)) { + targetConfig = TargetConfig({target: address(dao()), operation: Operation.Call}); + } + + return targetConfig; + } + /// @notice Checks if this or the parent contract supports an interface by its ID. /// @param _interfaceId The ID of the interface. /// @return Returns `true` if the interface is supported. @@ -87,7 +100,10 @@ abstract contract PluginCloneable is return _interfaceId == type(IPlugin).interfaceId || _interfaceId == type(IProtocolVersion).interfaceId || - _interfaceId == this.setTargetConfig.selector ^ this.getTargetConfig.selector || + _interfaceId == + this.setTargetConfig.selector ^ + this.getTargetConfig.selector ^ + this.getCurrentTargetConfig.selector || super.supportsInterface(_interfaceId); } diff --git a/contracts/src/plugin/PluginUUPSUpgradeable.sol b/contracts/src/plugin/PluginUUPSUpgradeable.sol index 322c2ae4..d2e5f693 100644 --- a/contracts/src/plugin/PluginUUPSUpgradeable.sol +++ b/contracts/src/plugin/PluginUUPSUpgradeable.sol @@ -69,10 +69,23 @@ abstract contract PluginUUPSUpgradeable is } /// @notice Returns the currently set target contract. - function getTargetConfig() public view returns (TargetConfig memory) { + /// @return TargetConfig The currently set target. + function getCurrentTargetConfig() public view virtual returns (TargetConfig memory) { return currentTargetConfig; } + /// @notice A convenient function to get current target config only if its target is not address(0), otherwise dao(). + /// @return TargetConfig The current target config if its target is not address(0), otherwise returns dao()." + function getTargetConfig() public view virtual returns (TargetConfig memory) { + TargetConfig memory targetConfig = currentTargetConfig; + + if (targetConfig.target == address(0)) { + targetConfig = TargetConfig({target: address(dao()), operation: Operation.Call}); + } + + return targetConfig; + } + /// @notice Initializes the plugin by storing the associated DAO. /// @param _dao The DAO contract. // solhint-disable-next-line func-name-mixedcase @@ -96,7 +109,10 @@ abstract contract PluginUUPSUpgradeable is _interfaceId == type(IPlugin).interfaceId || _interfaceId == type(IProtocolVersion).interfaceId || _interfaceId == type(IERC1822ProxiableUpgradeable).interfaceId || - _interfaceId == this.setTargetConfig.selector ^ this.getTargetConfig.selector || + _interfaceId == + this.setTargetConfig.selector ^ + this.getTargetConfig.selector ^ + this.getCurrentTargetConfig.selector || super.supportsInterface(_interfaceId); } diff --git a/contracts/src/plugin/extensions/proposal/IProposal.sol b/contracts/src/plugin/extensions/proposal/IProposal.sol index 44e8763a..2a184b57 100644 --- a/contracts/src/plugin/extensions/proposal/IProposal.sol +++ b/contracts/src/plugin/extensions/proposal/IProposal.sol @@ -47,7 +47,7 @@ interface IProposal { /// @notice Whether proposal can be executed or not. /// @param proposalId The id of the proposal. /// @return bool Returns if proposal can be executed or not. - function canExecute(uint256 proposalId) external returns (bool); + function canExecute(uint256 proposalId) external view returns (bool); /// @notice Creates a proposal Id. /// @param actions The actions that will be executed after the proposal passes. @@ -56,7 +56,7 @@ interface IProposal { function createProposalId( IDAO.Action[] memory actions, bytes memory metadata - ) external returns (uint256); + ) external view returns (uint256); /// @notice Returns the proposal count determining the next proposal ID. /// @dev This function has been deprecated but due to backwards compatibility, it still stays in the interface diff --git a/contracts/test/plugin/plugin-clonable.ts b/contracts/test/plugin/plugin-clonable.ts index 418d55cf..6914d46a 100644 --- a/contracts/test/plugin/plugin-clonable.ts +++ b/contracts/test/plugin/plugin-clonable.ts @@ -128,6 +128,7 @@ describe('PluginCloneable', function () { iface.getSighash('setTargetConfig') ) .xor(ethers.BigNumber.from(iface.getSighash('getTargetConfig'))) + .xor(ethers.BigNumber.from(iface.getSighash('getCurrentTargetConfig'))) .toHexString(); expect(await implementation.supportsInterface(interfaceId)).to.be.true; @@ -143,7 +144,7 @@ describe('PluginCloneable', function () { }); }); - describe('setTarget/getTarget', async () => { + describe('setTargetConfig/getTargetConfig/getCurrentTargetConfig', async () => { it('reverts if caller does not have the permission', async () => { const {deployer, proxy, daoMock} = await loadFixture(fixture); @@ -169,6 +170,11 @@ describe('PluginCloneable', function () { const targetConfig = {target: newTarget, operation: 0}; + expect(await proxy.getCurrentTargetConfig()).to.deep.equal([ + ethers.constants.AddressZero, + 0, + ]); + await expect(proxy.setTargetConfig(targetConfig)) .to.emit(proxy, 'TargetSet') .withArgs((val: any) => @@ -182,6 +188,53 @@ describe('PluginCloneable', function () { targetConfig.target, targetConfig.operation, ]); + + expect(await proxy.getCurrentTargetConfig()).to.deep.equal([ + targetConfig.target, + targetConfig.operation, + ]); + }); + + it('returns default target config if no target config is set', async () => { + const {proxy, daoMock} = await loadFixture(fixture); + + const dao = await proxy.dao(); + + // Current Config must return zeroes. + expect(await proxy.getCurrentTargetConfig()).to.deep.equal([ + ethers.constants.AddressZero, + 0, + ]); + + // Since no target is set, it must return default - i.e dao target. + expect(await proxy.getTargetConfig()).to.deep.equal([dao, 0]); + + // Set the `hasPermission` mock function to return `true`. + await daoMock.setHasPermissionReturnValueMock(true); // answer true for all permission requests + + const newTargetConfig = {target: proxy.address, operation: 1}; + + await proxy.setTargetConfig(newTargetConfig); + + // Current config must return the newly set one. + expect(await proxy.getCurrentTargetConfig()).to.deep.equal([ + newTargetConfig.target, + newTargetConfig.operation, + ]); + + // new config was set, so it must return the new one. + expect(await proxy.getTargetConfig()).to.deep.equal([ + newTargetConfig.target, + newTargetConfig.operation, + ]); + + // set the zero target which should then return default again - i.e dao. + await proxy.setTargetConfig({ + target: ethers.constants.AddressZero, + operation: 0, + }); + + expect(await proxy.getTargetConfig()).to.deep.equal([dao, 0]); }); }); diff --git a/contracts/test/plugin/plugin-uups-upgradeable.ts b/contracts/test/plugin/plugin-uups-upgradeable.ts index 0b237975..36c70d04 100644 --- a/contracts/test/plugin/plugin-uups-upgradeable.ts +++ b/contracts/test/plugin/plugin-uups-upgradeable.ts @@ -141,6 +141,7 @@ describe('PluginUUPSUpgradeable', function () { iface.getSighash('setTargetConfig') ) .xor(ethers.BigNumber.from(iface.getSighash('getTargetConfig'))) + .xor(ethers.BigNumber.from(iface.getSighash('getCurrentTargetConfig'))) .toHexString(); expect(await implementation.supportsInterface(interfaceId)).to.be.true; @@ -156,7 +157,7 @@ describe('PluginUUPSUpgradeable', function () { }); }); - describe('setTarget/getTarget', async () => { + describe('setTargetConfig/getTargetConfig/getCurrentTargetConfig', async () => { it('reverts if caller does not have the permission', async () => { const {deployer, proxy, daoMock} = await loadFixture(fixture); @@ -182,6 +183,11 @@ describe('PluginUUPSUpgradeable', function () { const targetConfig = {target: newTarget, operation: 0}; + expect(await proxy.getCurrentTargetConfig()).to.deep.equal([ + ethers.constants.AddressZero, + 0, + ]); + await expect(proxy.setTargetConfig(targetConfig)) .to.emit(proxy, 'TargetSet') .withArgs((val: any) => @@ -195,6 +201,53 @@ describe('PluginUUPSUpgradeable', function () { targetConfig.target, targetConfig.operation, ]); + + expect(await proxy.getCurrentTargetConfig()).to.deep.equal([ + targetConfig.target, + targetConfig.operation, + ]); + }); + + it('returns default target config if no target config is set', async () => { + const {proxy, daoMock} = await loadFixture(fixture); + + const dao = await proxy.dao(); + + // Current Config must return zeroes. + expect(await proxy.getCurrentTargetConfig()).to.deep.equal([ + ethers.constants.AddressZero, + 0, + ]); + + // Since no target is set, it must return default - i.e dao target. + expect(await proxy.getTargetConfig()).to.deep.equal([dao, 0]); + + // Set the `hasPermission` mock function to return `true`. + await daoMock.setHasPermissionReturnValueMock(true); // answer true for all permission requests + + const newTargetConfig = {target: proxy.address, operation: 1}; + + await proxy.setTargetConfig(newTargetConfig); + + // Current config must return the newly set one. + expect(await proxy.getCurrentTargetConfig()).to.deep.equal([ + newTargetConfig.target, + newTargetConfig.operation, + ]); + + // new config was set, so it must return the new one. + expect(await proxy.getTargetConfig()).to.deep.equal([ + newTargetConfig.target, + newTargetConfig.operation, + ]); + + // set the zero target which should then return default again - i.e dao. + await proxy.setTargetConfig({ + target: ethers.constants.AddressZero, + operation: 0, + }); + + expect(await proxy.getTargetConfig()).to.deep.equal([dao, 0]); }); }); diff --git a/contracts/test/plugin/plugin.ts b/contracts/test/plugin/plugin.ts index c93ef81e..1de5f99d 100644 --- a/contracts/test/plugin/plugin.ts +++ b/contracts/test/plugin/plugin.ts @@ -71,6 +71,7 @@ describe('Plugin', function () { iface.getSighash('setTargetConfig') ) .xor(ethers.BigNumber.from(iface.getSighash('getTargetConfig'))) + .xor(ethers.BigNumber.from(iface.getSighash('getCurrentTargetConfig'))) .toHexString(); expect(await plugin.supportsInterface(interfaceId)).to.be.true; @@ -86,7 +87,7 @@ describe('Plugin', function () { }); }); - describe('setTarget', async () => { + describe('setTargetConfig/getTargetConfig/getCurrentTargetConfig', async () => { it('reverts if caller does not have the permission', async () => { const {deployer, plugin, daoMock} = await loadFixture(fixture); @@ -110,6 +111,11 @@ describe('Plugin', function () { // Set the `hasPermission` mock function to return `true`. await daoMock.setHasPermissionReturnValueMock(true); // answer true for all permission requests + expect(await plugin.getCurrentTargetConfig()).to.deep.equal([ + ethers.constants.AddressZero, + 0, + ]); + const targetConfig = {target: newTarget, operation: 0}; await expect(plugin.setTargetConfig(targetConfig)) @@ -125,6 +131,53 @@ describe('Plugin', function () { targetConfig.target, targetConfig.operation, ]); + + expect(await plugin.getCurrentTargetConfig()).to.deep.equal([ + targetConfig.target, + targetConfig.operation, + ]); + }); + + it('returns default target config if no target config is set', async () => { + const {plugin, daoMock} = await loadFixture(fixture); + + const dao = await plugin.dao(); + + // Current Config must return zeroes. + expect(await plugin.getCurrentTargetConfig()).to.deep.equal([ + ethers.constants.AddressZero, + 0, + ]); + + // Since no target is set, it must return default - i.e dao target. + expect(await plugin.getTargetConfig()).to.deep.equal([dao, 0]); + + // Set the `hasPermission` mock function to return `true`. + await daoMock.setHasPermissionReturnValueMock(true); // answer true for all permission requests + + const newTargetConfig = {target: plugin.address, operation: 1}; + + await plugin.setTargetConfig(newTargetConfig); + + // Current config must return the newly set one. + expect(await plugin.getCurrentTargetConfig()).to.deep.equal([ + newTargetConfig.target, + newTargetConfig.operation, + ]); + + // new config was set, so it must return the new one. + expect(await plugin.getTargetConfig()).to.deep.equal([ + newTargetConfig.target, + newTargetConfig.operation, + ]); + + // set the zero target which should then return default again - i.e dao. + await plugin.setTargetConfig({ + target: ethers.constants.AddressZero, + operation: 0, + }); + + expect(await plugin.getTargetConfig()).to.deep.equal([dao, 0]); }); }); From db446f571446d395a83067fb0f2bd04482fa9d6e Mon Sep 17 00:00:00 2001 From: Giorgi Lagidze Date: Fri, 27 Sep 2024 12:08:21 +0400 Subject: [PATCH 12/15] add params byte approach (#102) * add params byte approach * add simple executor (#103) * add simple executor * action as free level export --- contracts/src/dao/IDAO.sol | 39 --------- contracts/src/executors/Executor.sol | 86 +++++++++++++++++++ contracts/src/executors/IExecutor.sol | 50 +++++++++++ contracts/src/mocks/dao/DAOMock.sol | 3 +- .../src/mocks/plugin/CustomExecutorMock.sol | 16 +--- .../src/mocks/plugin/PluginCloneableMock.sol | 5 +- contracts/src/mocks/plugin/PluginMock.sol | 5 +- .../plugin/PluginUUPSUpgradeableMock.sol | 5 +- .../extensions/proposal/ProposalMock.sol | 11 ++- .../proposal/ProposalUpgradeableMock.sol | 11 ++- contracts/src/plugin/Plugin.sol | 13 ++- contracts/src/plugin/PluginCloneable.sol | 13 ++- .../src/plugin/PluginUUPSUpgradeable.sol | 15 ++-- .../plugin/extensions/proposal/IProposal.sol | 20 +++-- .../plugin/extensions/proposal/Proposal.sol | 3 +- .../proposal/ProposalUpgradeable.sol | 3 +- contracts/test/dao/dao.ts | 12 --- 17 files changed, 211 insertions(+), 99 deletions(-) create mode 100644 contracts/src/executors/Executor.sol create mode 100644 contracts/src/executors/IExecutor.sol delete mode 100644 contracts/test/dao/dao.ts diff --git a/contracts/src/dao/IDAO.sol b/contracts/src/dao/IDAO.sol index ba1151eb..133970a8 100644 --- a/contracts/src/dao/IDAO.sol +++ b/contracts/src/dao/IDAO.sol @@ -7,16 +7,6 @@ pragma solidity ^0.8.8; /// @notice The interface required for DAOs within the Aragon App DAO framework. /// @custom:security-contact sirt@aragon.org interface IDAO { - /// @notice The action struct to be consumed by the DAO's `execute` function resulting in an external call. - /// @param to The address to call. - /// @param value The native token value to be sent with the call. - /// @param data The bytes-encoded function selector and calldata for the call. - struct Action { - address to; - uint256 value; - bytes data; - } - /// @notice Checks if an address has permission on a contract via a permission identifier and considers if `ANY_ADDRESS` was used in the granting process. /// @param _where The address of the contract. /// @param _who The address of a EOA or contract to give the permissions. @@ -38,35 +28,6 @@ interface IDAO { /// @param metadata The IPFS hash of the new metadata object. event MetadataSet(bytes metadata); - /// @notice Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted. - /// @param _callId The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce. - /// @param _actions The array of actions. - /// @param _allowFailureMap A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert. - /// @return The array of results obtained from the executed actions in `bytes`. - /// @return The resulting failure map containing the actions have actually failed. - function execute( - bytes32 _callId, - Action[] memory _actions, - uint256 _allowFailureMap - ) external returns (bytes[] memory, uint256); - - /// @notice Emitted when a proposal is executed. - /// @param actor The address of the caller. - /// @param callId The ID of the call. - /// @param actions The array of actions executed. - /// @param allowFailureMap The allow failure map encoding which actions are allowed to fail. - /// @param failureMap The failure map encoding which actions have failed. - /// @param execResults The array with the results of the executed actions. - /// @dev The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce. - event Executed( - address indexed actor, - bytes32 callId, - Action[] actions, - uint256 allowFailureMap, - uint256 failureMap, - bytes[] execResults - ); - /// @notice Emitted when a standard callback is registered. /// @param interfaceId The ID of the interface. /// @param callbackSelector The selector of the callback function. diff --git a/contracts/src/executors/Executor.sol b/contracts/src/executors/Executor.sol new file mode 100644 index 00000000..ed7c5a3c --- /dev/null +++ b/contracts/src/executors/Executor.sol @@ -0,0 +1,86 @@ +// SPDX-License-Identifier: AGPL-3.0-or-later + +pragma solidity ^0.8.8; + +import {IExecutor, Action} from "./IExecutor.sol"; +import {flipBit, hasBit} from "../utils/math/BitMap.sol"; + +/// @notice Simple Executor that loops through the actions and executes them. +/// @dev Reverts in case enough gas was not provided for the last action. +contract Executor is IExecutor { + /// @notice The internal constant storing the maximal action array length. + uint256 internal constant MAX_ACTIONS = 256; + + /// @notice Thrown if the action array length is larger than `MAX_ACTIONS`. + error TooManyActions(); + + /// @notice Thrown if an action has insufficient gas left. + error InsufficientGas(); + + /// @notice Thrown if action execution has failed. + /// @param index The index of the action in the action array that failed. + error ActionFailed(uint256 index); + + /// @inheritdoc IExecutor + function execute( + bytes32 _callId, + Action[] memory _actions, + uint256 _allowFailureMap + ) public virtual override returns (bytes[] memory execResults, uint256 failureMap) { + // Check that the action array length is within bounds. + if (_actions.length > MAX_ACTIONS) { + revert TooManyActions(); + } + + execResults = new bytes[](_actions.length); + + uint256 gasBefore; + uint256 gasAfter; + + for (uint256 i = 0; i < _actions.length; ) { + gasBefore = gasleft(); + + (bool success, bytes memory data) = _actions[i].to.call{value: _actions[i].value}( + _actions[i].data + ); + + gasAfter = gasleft(); + + // Check if failure is allowed + if (!hasBit(_allowFailureMap, uint8(i))) { + // Check if the call failed. + if (!success) { + revert ActionFailed(i); + } + } else { + // Check if the call failed. + if (!success) { + // Make sure that the action call did not fail because 63/64 of `gasleft()` was insufficient to execute the external call `.to.call` (see [ERC-150](https://eips.ethereum.org/EIPS/eip-150)). + // In specific scenarios, i.e. proposal execution where the last action in the action array is allowed to fail, the account calling `execute` could force-fail this action by setting a gas limit + // where 63/64 is insufficient causing the `.to.call` to fail, but where the remaining 1/64 gas are sufficient to successfully finish the `execute` call. + if (gasAfter < gasBefore / 64) { + revert InsufficientGas(); + } + + // Store that this action failed. + failureMap = flipBit(failureMap, uint8(i)); + } + } + + execResults[i] = data; + + unchecked { + ++i; + } + } + + emit Executed({ + actor: msg.sender, + callId: _callId, + actions: _actions, + allowFailureMap: _allowFailureMap, + failureMap: failureMap, + execResults: execResults + }); + } +} diff --git a/contracts/src/executors/IExecutor.sol b/contracts/src/executors/IExecutor.sol new file mode 100644 index 00000000..2961b87e --- /dev/null +++ b/contracts/src/executors/IExecutor.sol @@ -0,0 +1,50 @@ +// SPDX-License-Identifier: AGPL-3.0-or-later + +pragma solidity ^0.8.8; + +import {IDAO} from "../dao/IDAO.sol"; + +/// @notice The action struct to be consumed by the DAO's `execute` function resulting in an external call. +/// @param to The address to call. +/// @param value The native token value to be sent with the call. +/// @param data The bytes-encoded function selector and calldata for the call. +struct Action { + address to; + uint256 value; + bytes data; +} + +/// @title IDAO +/// @author Aragon X - 2022-2023 +/// @notice The interface required for Executors within the Aragon App DAO framework. +/// @custom:security-contact sirt@aragon.org +interface IExecutor { + /// @notice Emitted when a proposal is executed. + /// @param actor The address of the caller. + /// @param callId The ID of the call. + /// @param actions The array of actions executed. + /// @param allowFailureMap The allow failure map encoding which actions are allowed to fail. + /// @param failureMap The failure map encoding which actions have failed. + /// @param execResults The array with the results of the executed actions. + /// @dev The value of `callId` is defined by the component/contract calling the execute function. A `Plugin` implementation can use it, for example, as a nonce. + event Executed( + address indexed actor, + bytes32 callId, + Action[] actions, + uint256 allowFailureMap, + uint256 failureMap, + bytes[] execResults + ); + + /// @notice Executes a list of actions. If a zero allow-failure map is provided, a failing action reverts the entire execution. If a non-zero allow-failure map is provided, allowed actions can fail without the entire call being reverted. + /// @param _callId The ID of the call. The definition of the value of `callId` is up to the calling contract and can be used, e.g., as a nonce. + /// @param _actions The array of actions. + /// @param _allowFailureMap A bitmap allowing execution to succeed, even if individual actions might revert. If the bit at index `i` is 1, the execution succeeds even if the `i`th action reverts. A failure map value of 0 requires every action to not revert. + /// @return The array of results obtained from the executed actions in `bytes`. + /// @return The resulting failure map containing the actions have actually failed. + function execute( + bytes32 _callId, + Action[] memory _actions, + uint256 _allowFailureMap + ) external returns (bytes[] memory, uint256); +} diff --git a/contracts/src/mocks/dao/DAOMock.sol b/contracts/src/mocks/dao/DAOMock.sol index dbd49e1a..ff8ffc21 100644 --- a/contracts/src/mocks/dao/DAOMock.sol +++ b/contracts/src/mocks/dao/DAOMock.sol @@ -3,10 +3,11 @@ pragma solidity ^0.8.8; import {IDAO} from "../../dao/IDAO.sol"; +import {IExecutor, Action} from "../../executors/IExecutor.sol"; /// @notice A mock DAO that anyone can set permissions in. /// @dev DO NOT USE IN PRODUCTION! -contract DAOMock is IDAO { +contract DAOMock is IDAO, IExecutor { bool public hasPermissionReturnValueMock; function setHasPermissionReturnValueMock(bool _hasPermissionReturnValueMock) external { diff --git a/contracts/src/mocks/plugin/CustomExecutorMock.sol b/contracts/src/mocks/plugin/CustomExecutorMock.sol index 9e5a05e2..acab86e9 100644 --- a/contracts/src/mocks/plugin/CustomExecutorMock.sol +++ b/contracts/src/mocks/plugin/CustomExecutorMock.sol @@ -3,26 +3,18 @@ pragma solidity ^0.8.8; import {IDAO} from "../../dao/IDAO.sol"; +import {IExecutor, Action} from "../../executors/IExecutor.sol"; /// @notice A mock DAO that anyone can set permissions in. /// @dev DO NOT USE IN PRODUCTION! -contract CustomExecutorMock { +contract CustomExecutorMock is IExecutor { error Failed(); - event Executed( - address indexed actor, - bytes32 callId, - IDAO.Action[] actions, - uint256 allowFailureMap, - uint256 failureMap, - bytes[] execResults - ); - function execute( bytes32 callId, - IDAO.Action[] memory _actions, + Action[] memory _actions, uint256 allowFailureMap - ) external returns (bytes[] memory execResults, uint256 failureMap) { + ) external override returns (bytes[] memory execResults, uint256 failureMap) { if (callId == bytes32(0)) { revert Failed(); } else if (callId == bytes32(uint256(123))) { diff --git a/contracts/src/mocks/plugin/PluginCloneableMock.sol b/contracts/src/mocks/plugin/PluginCloneableMock.sol index 568940f5..2a5a4ecd 100644 --- a/contracts/src/mocks/plugin/PluginCloneableMock.sol +++ b/contracts/src/mocks/plugin/PluginCloneableMock.sol @@ -5,6 +5,7 @@ pragma solidity ^0.8.8; import {PluginCloneable} from "../../plugin/PluginCloneable.sol"; import {IDAO} from "../../dao/IDAO.sol"; +import {IExecutor, Action} from "../../executors/IExecutor.sol"; /// @notice A mock cloneable plugin to be deployed via the minimal proxy pattern. /// v1.1 (Release 1, Build 1) @@ -19,7 +20,7 @@ contract PluginCloneableMockBuild1 is PluginCloneable { function execute( uint256 _callId, - IDAO.Action[] memory _actions, + Action[] memory _actions, uint256 _allowFailureMap ) external returns (bytes[] memory execResults, uint256 failureMap) { (execResults, failureMap) = _execute(bytes32(_callId), _actions, _allowFailureMap); @@ -28,7 +29,7 @@ contract PluginCloneableMockBuild1 is PluginCloneable { function execute( address _target, uint256 _callId, - IDAO.Action[] memory _actions, + Action[] memory _actions, uint256 _allowFailureMap, Operation _op ) external returns (bytes[] memory execResults, uint256 failureMap) { diff --git a/contracts/src/mocks/plugin/PluginMock.sol b/contracts/src/mocks/plugin/PluginMock.sol index 3b4099f3..22fa5cc5 100644 --- a/contracts/src/mocks/plugin/PluginMock.sol +++ b/contracts/src/mocks/plugin/PluginMock.sol @@ -4,6 +4,7 @@ pragma solidity ^0.8.8; import {Plugin} from "../../plugin/Plugin.sol"; import {IDAO} from "../../dao/IDAO.sol"; +import {IExecutor, Action} from "../../executors/IExecutor.sol"; /// @notice A mock plugin to be deployed via the `new` keyword. /// v1.1 (Release 1, Build 1) @@ -17,7 +18,7 @@ contract PluginMockBuild1 is Plugin { function execute( uint256 _callId, - IDAO.Action[] memory _actions, + Action[] memory _actions, uint256 _allowFailureMap ) external returns (bytes[] memory execResults, uint256 failureMap) { (execResults, failureMap) = _execute(bytes32(_callId), _actions, _allowFailureMap); @@ -26,7 +27,7 @@ contract PluginMockBuild1 is Plugin { function execute( address _target, uint256 _callId, - IDAO.Action[] memory _actions, + Action[] memory _actions, uint256 _allowFailureMap, Operation _op ) external returns (bytes[] memory execResults, uint256 failureMap) { diff --git a/contracts/src/mocks/plugin/PluginUUPSUpgradeableMock.sol b/contracts/src/mocks/plugin/PluginUUPSUpgradeableMock.sol index fd6c9597..a792458c 100644 --- a/contracts/src/mocks/plugin/PluginUUPSUpgradeableMock.sol +++ b/contracts/src/mocks/plugin/PluginUUPSUpgradeableMock.sol @@ -5,6 +5,7 @@ pragma solidity ^0.8.8; import {PluginUUPSUpgradeable} from "../../plugin/PluginUUPSUpgradeable.sol"; import {IDAO} from "../../dao/IDAO.sol"; +import {IExecutor, Action} from "../../executors/IExecutor.sol"; /// @notice A mock upgradeable plugin to be deployed via the UUPS proxy pattern. /// v1.1 (Release 1, Build 1) @@ -19,7 +20,7 @@ contract PluginUUPSUpgradeableMockBuild1 is PluginUUPSUpgradeable { function execute( uint256 _callId, - IDAO.Action[] memory _actions, + Action[] memory _actions, uint256 _allowFailureMap ) external returns (bytes[] memory execResults, uint256 failureMap) { (execResults, failureMap) = _execute(bytes32(_callId), _actions, _allowFailureMap); @@ -28,7 +29,7 @@ contract PluginUUPSUpgradeableMockBuild1 is PluginUUPSUpgradeable { function execute( address _target, uint256 _callId, - IDAO.Action[] memory _actions, + Action[] memory _actions, uint256 _allowFailureMap, Operation _op ) external returns (bytes[] memory execResults, uint256 failureMap) { diff --git a/contracts/src/mocks/plugin/extensions/proposal/ProposalMock.sol b/contracts/src/mocks/plugin/extensions/proposal/ProposalMock.sol index cdf3491c..1bf07368 100644 --- a/contracts/src/mocks/plugin/extensions/proposal/ProposalMock.sol +++ b/contracts/src/mocks/plugin/extensions/proposal/ProposalMock.sol @@ -3,7 +3,7 @@ pragma solidity ^0.8.8; import {Proposal} from "../../../../plugin/extensions/proposal/Proposal.sol"; -import {IDAO} from "../../../../dao/IDAO.sol"; +import {IExecutor, Action} from "../../../../executors/IExecutor.sol"; /// @notice A mock contract. /// @dev DO NOT USE IN PRODUCTION! @@ -14,15 +14,18 @@ contract ProposalMock is Proposal { // solhint-disable no-empty-blocks function createProposal( bytes memory data, - IDAO.Action[] memory actions, + Action[] memory actions, uint64 startDate, - uint64 endDate + uint64 endDate, + bytes memory ) external returns (uint256 proposalId) {} function canExecute(uint256 proposalId) external view returns (bool) {} function createProposalId( - IDAO.Action[] memory actions, + Action[] memory actions, bytes memory metadata ) external view returns (uint256) {} + + function createProposalParamsABI() external view returns (string memory) {} } diff --git a/contracts/src/mocks/plugin/extensions/proposal/ProposalUpgradeableMock.sol b/contracts/src/mocks/plugin/extensions/proposal/ProposalUpgradeableMock.sol index 88aa154f..ff06644a 100644 --- a/contracts/src/mocks/plugin/extensions/proposal/ProposalUpgradeableMock.sol +++ b/contracts/src/mocks/plugin/extensions/proposal/ProposalUpgradeableMock.sol @@ -3,7 +3,7 @@ pragma solidity ^0.8.8; import {ProposalUpgradeable} from "../../../../plugin/extensions/proposal/ProposalUpgradeable.sol"; -import {IDAO} from "../../../../dao/IDAO.sol"; +import {IExecutor, Action} from "../../../../executors/IExecutor.sol"; /// @notice A mock contract. /// @dev DO NOT USE IN PRODUCTION! @@ -14,15 +14,18 @@ contract ProposalUpgradeableMock is ProposalUpgradeable { // solhint-disable no-empty-blocks function createProposal( bytes memory data, - IDAO.Action[] memory actions, + Action[] memory actions, uint64 startDate, - uint64 endDate + uint64 endDate, + bytes memory ) external returns (uint256 proposalId) {} function canExecute(uint256 proposalId) external view returns (bool) {} function createProposalId( - IDAO.Action[] memory actions, + Action[] memory actions, bytes memory metadata ) external view returns (uint256) {} + + function createProposalParamsABI() external view returns (string memory) {} } diff --git a/contracts/src/plugin/Plugin.sol b/contracts/src/plugin/Plugin.sol index 27be98fd..11b33e1f 100644 --- a/contracts/src/plugin/Plugin.sol +++ b/contracts/src/plugin/Plugin.sol @@ -10,6 +10,7 @@ import {ProtocolVersion} from "../utils/versioning/ProtocolVersion.sol"; import {DaoAuthorizable} from "../permission/auth/DaoAuthorizable.sol"; import {IDAO} from "../dao/IDAO.sol"; import {IPlugin} from "./IPlugin.sol"; +import {IExecutor, Action} from "../executors/IExecutor.sol"; /// @title Plugin /// @author Aragon X - 2022-2023 @@ -117,7 +118,7 @@ abstract contract Plugin is IPlugin, ERC165, DaoAuthorizable, ProtocolVersion { /// @return failureMap address of the implementation contract. function _execute( bytes32 _callId, - IDAO.Action[] memory _actions, + Action[] memory _actions, uint256 _allowFailureMap ) internal virtual returns (bytes[] memory execResults, uint256 failureMap) { return @@ -140,7 +141,7 @@ abstract contract Plugin is IPlugin, ERC165, DaoAuthorizable, ProtocolVersion { function _execute( address _target, bytes32 _callId, - IDAO.Action[] memory _actions, + Action[] memory _actions, uint256 _allowFailureMap, Operation _op ) internal virtual returns (bytes[] memory execResults, uint256 failureMap) { @@ -150,7 +151,7 @@ abstract contract Plugin is IPlugin, ERC165, DaoAuthorizable, ProtocolVersion { // solhint-disable-next-line avoid-low-level-calls (success, data) = _target.delegatecall( - abi.encodeCall(IDAO.execute, (_callId, _actions, _allowFailureMap)) + abi.encodeCall(IExecutor.execute, (_callId, _actions, _allowFailureMap)) ); if (!success) { @@ -166,7 +167,11 @@ abstract contract Plugin is IPlugin, ERC165, DaoAuthorizable, ProtocolVersion { } (execResults, failureMap) = abi.decode(data, (bytes[], uint256)); } else { - (execResults, failureMap) = IDAO(_target).execute(_callId, _actions, _allowFailureMap); + (execResults, failureMap) = IExecutor(_target).execute( + _callId, + _actions, + _allowFailureMap + ); } } } diff --git a/contracts/src/plugin/PluginCloneable.sol b/contracts/src/plugin/PluginCloneable.sol index 5f7ceb86..cb1704c8 100644 --- a/contracts/src/plugin/PluginCloneable.sol +++ b/contracts/src/plugin/PluginCloneable.sol @@ -10,6 +10,7 @@ import {ProtocolVersion} from "../utils/versioning/ProtocolVersion.sol"; import {DaoAuthorizableUpgradeable} from "../permission/auth/DaoAuthorizableUpgradeable.sol"; import {IDAO} from "../dao/IDAO.sol"; import {IPlugin} from "./IPlugin.sol"; +import {IExecutor, Action} from "../executors/IExecutor.sol"; /// @title PluginCloneable /// @author Aragon X - 2022-2023 @@ -132,7 +133,7 @@ abstract contract PluginCloneable is /// @return failureMap address of the implementation contract. function _execute( bytes32 _callId, - IDAO.Action[] memory _actions, + Action[] memory _actions, uint256 _allowFailureMap ) internal virtual returns (bytes[] memory execResults, uint256 failureMap) { return @@ -155,7 +156,7 @@ abstract contract PluginCloneable is function _execute( address _target, bytes32 _callId, - IDAO.Action[] memory _actions, + Action[] memory _actions, uint256 _allowFailureMap, Operation _op ) internal virtual returns (bytes[] memory execResults, uint256 failureMap) { @@ -165,7 +166,7 @@ abstract contract PluginCloneable is // solhint-disable-next-line avoid-low-level-calls (success, data) = _target.delegatecall( - abi.encodeCall(IDAO.execute, (_callId, _actions, _allowFailureMap)) + abi.encodeCall(IExecutor.execute, (_callId, _actions, _allowFailureMap)) ); if (!success) { @@ -181,7 +182,11 @@ abstract contract PluginCloneable is } (execResults, failureMap) = abi.decode(data, (bytes[], uint256)); } else { - (execResults, failureMap) = IDAO(_target).execute(_callId, _actions, _allowFailureMap); + (execResults, failureMap) = IExecutor(_target).execute( + _callId, + _actions, + _allowFailureMap + ); } } } diff --git a/contracts/src/plugin/PluginUUPSUpgradeable.sol b/contracts/src/plugin/PluginUUPSUpgradeable.sol index d2e5f693..80c6a66d 100644 --- a/contracts/src/plugin/PluginUUPSUpgradeable.sol +++ b/contracts/src/plugin/PluginUUPSUpgradeable.sol @@ -10,8 +10,9 @@ import {ERC165CheckerUpgradeable} from "@openzeppelin/contracts-upgradeable/util import {IProtocolVersion} from "../utils/versioning/IProtocolVersion.sol"; import {ProtocolVersion} from "../utils/versioning/ProtocolVersion.sol"; import {DaoAuthorizableUpgradeable} from "../permission/auth/DaoAuthorizableUpgradeable.sol"; -import {IDAO} from "../dao/IDAO.sol"; import {IPlugin} from "./IPlugin.sol"; +import {IDAO} from "../dao/IDAO.sol"; +import {IExecutor, Action} from "../executors/IExecutor.sol"; /// @title PluginUUPSUpgradeable /// @author Aragon X - 2022-2023 @@ -147,7 +148,7 @@ abstract contract PluginUUPSUpgradeable is /// @return failureMap address of the implementation contract. function _execute( bytes32 _callId, - IDAO.Action[] memory _actions, + Action[] memory _actions, uint256 _allowFailureMap ) internal virtual returns (bytes[] memory execResults, uint256 failureMap) { return @@ -170,7 +171,7 @@ abstract contract PluginUUPSUpgradeable is function _execute( address _target, bytes32 _callId, - IDAO.Action[] memory _actions, + Action[] memory _actions, uint256 _allowFailureMap, Operation _op ) internal virtual returns (bytes[] memory execResults, uint256 failureMap) { @@ -180,7 +181,7 @@ abstract contract PluginUUPSUpgradeable is // solhint-disable-next-line avoid-low-level-calls (success, data) = _target.delegatecall( - abi.encodeCall(IDAO.execute, (_callId, _actions, _allowFailureMap)) + abi.encodeCall(IExecutor.execute, (_callId, _actions, _allowFailureMap)) ); if (!success) { @@ -196,7 +197,11 @@ abstract contract PluginUUPSUpgradeable is } (execResults, failureMap) = abi.decode(data, (bytes[], uint256)); } else { - (execResults, failureMap) = IDAO(_target).execute(_callId, _actions, _allowFailureMap); + (execResults, failureMap) = IExecutor(_target).execute( + _callId, + _actions, + _allowFailureMap + ); } } diff --git a/contracts/src/plugin/extensions/proposal/IProposal.sol b/contracts/src/plugin/extensions/proposal/IProposal.sol index 2a184b57..5c325366 100644 --- a/contracts/src/plugin/extensions/proposal/IProposal.sol +++ b/contracts/src/plugin/extensions/proposal/IProposal.sol @@ -3,6 +3,7 @@ pragma solidity ^0.8.8; import {IDAO} from "../../../dao/IDAO.sol"; +import {IExecutor, Action} from "../../../executors/IExecutor.sol"; /// @title IProposal /// @author Aragon X - 2022-2023 @@ -23,7 +24,7 @@ interface IProposal { uint64 startDate, uint64 endDate, bytes metadata, - IDAO.Action[] actions, + Action[] actions, uint256 allowFailureMap ); @@ -32,16 +33,18 @@ interface IProposal { event ProposalExecuted(uint256 indexed proposalId); /// @notice Creates a new proposal. - /// @param data The metadata of the proposal. + /// @param metadata The metadata of the proposal. /// @param actions The actions that will be executed after the proposal passes. /// @param startDate The start date of the proposal. /// @param endDate The end date of the proposal. + /// @param data The additional abi-encoded data to include more necessary fields. /// @return proposalId The id of the proposal. function createProposal( - bytes memory data, - IDAO.Action[] memory actions, + bytes memory metadata, + Action[] memory actions, uint64 startDate, - uint64 endDate + uint64 endDate, + bytes memory data ) external returns (uint256 proposalId); /// @notice Whether proposal can be executed or not. @@ -54,10 +57,15 @@ interface IProposal { /// @param metadata The custom metadata that is passed when creating a proposal. /// @return proposalId The id of the proposal. function createProposalId( - IDAO.Action[] memory actions, + Action[] memory actions, bytes memory metadata ) external view returns (uint256); + /// @notice The human-readable abi format for extra params included in `data` of `createProposal`. + /// @dev Used for UI to easily detect what extra params the contract expects. + /// @return abi ABI of params in `data` of `createProposal`. + function createProposalParamsABI() external view returns (string memory abi); + /// @notice Returns the proposal count determining the next proposal ID. /// @dev This function has been deprecated but due to backwards compatibility, it still stays in the interface /// but returns maximum value of uint256 to let consumers know not to depend on it anymore. diff --git a/contracts/src/plugin/extensions/proposal/Proposal.sol b/contracts/src/plugin/extensions/proposal/Proposal.sol index 42e77421..ba6ae044 100644 --- a/contracts/src/plugin/extensions/proposal/Proposal.sol +++ b/contracts/src/plugin/extensions/proposal/Proposal.sol @@ -27,7 +27,8 @@ abstract contract Proposal is IProposal, ERC165 { type(IProposal).interfaceId ^ IProposal.createProposal.selector ^ IProposal.canExecute.selector ^ - IProposal.createProposalId.selector || + IProposal.createProposalId.selector ^ + IProposal.createProposalParamsABI.selector || _interfaceId == type(IProposal).interfaceId || super.supportsInterface(_interfaceId); } diff --git a/contracts/src/plugin/extensions/proposal/ProposalUpgradeable.sol b/contracts/src/plugin/extensions/proposal/ProposalUpgradeable.sol index 13448bc0..0d380df4 100644 --- a/contracts/src/plugin/extensions/proposal/ProposalUpgradeable.sol +++ b/contracts/src/plugin/extensions/proposal/ProposalUpgradeable.sol @@ -33,7 +33,8 @@ abstract contract ProposalUpgradeable is IProposal, ERC165Upgradeable { type(IProposal).interfaceId ^ IProposal.createProposal.selector ^ IProposal.canExecute.selector ^ - IProposal.createProposalId.selector || + IProposal.createProposalId.selector ^ + IProposal.createProposalParamsABI.selector || _interfaceId == type(IProposal).interfaceId || super.supportsInterface(_interfaceId); } diff --git a/contracts/test/dao/dao.ts b/contracts/test/dao/dao.ts deleted file mode 100644 index a6c1af75..00000000 --- a/contracts/test/dao/dao.ts +++ /dev/null @@ -1,12 +0,0 @@ -import {IDAO__factory} from '../../typechain'; -import {getInterfaceId} from '@aragon/osx-commons-sdk'; -import {IDAO__factory as IDAO_V1_0_0__factory} from '@aragon/osx-ethers-v1.0.0'; -import {expect} from 'chai'; - -describe('IDAO', function () { - it('has the same interface ID as its initial version introduced in v1.0.0', async () => { - const current = getInterfaceId(IDAO__factory.createInterface()); - const initial = getInterfaceId(IDAO_V1_0_0__factory.createInterface()); - expect(current).to.equal(initial); - }); -}); From 21ccec874633d8b50e2c733784e680b8a31399d5 Mon Sep 17 00:00:00 2001 From: Giorgi Lagidze Date: Fri, 27 Sep 2024 15:38:32 +0400 Subject: [PATCH 13/15] executor added with reentrancy guard --- contracts/src/executors/Executor.sol | 57 +++- .../src/mocks/executors/ActionExecute.sol | 27 ++ contracts/src/mocks/executors/GasConsumer.sol | 14 + contracts/test/executors/executor.ts | 268 ++++++++++++++++++ 4 files changed, 364 insertions(+), 2 deletions(-) create mode 100644 contracts/src/mocks/executors/ActionExecute.sol create mode 100644 contracts/src/mocks/executors/GasConsumer.sol create mode 100644 contracts/test/executors/executor.ts diff --git a/contracts/src/executors/Executor.sol b/contracts/src/executors/Executor.sol index ed7c5a3c..d86338bc 100644 --- a/contracts/src/executors/Executor.sol +++ b/contracts/src/executors/Executor.sol @@ -6,11 +6,24 @@ import {IExecutor, Action} from "./IExecutor.sol"; import {flipBit, hasBit} from "../utils/math/BitMap.sol"; /// @notice Simple Executor that loops through the actions and executes them. -/// @dev Reverts in case enough gas was not provided for the last action. +/// @dev This doesn't use any type of permission for execution and can be called by anyone. +/// Most useful use-case is to deploy as non-upgradeable and call from another contract via delegatecall. +/// If used with delegatecall, DO NOT add state variables in sequential slots, otherwise this will overwrite +/// the storage of the calling contract. contract Executor is IExecutor { /// @notice The internal constant storing the maximal action array length. uint256 internal constant MAX_ACTIONS = 256; + // keccak256("osx-commons.storage.Executor") + bytes32 private constant ReentrancyGuardStorageLocation = + 0x4d6542319dfb3f7c8adbb488d7b4d7cf849381f14faf4b64de3ac05d08c0bdec; + + /// @notice The first out of two values to which the `_reentrancyStatus` state variable (used by the `nonReentrant` modifier) can be set indicating that a function was not entered. + uint256 private constant _NOT_ENTERED = 1; + + /// @notice The second out of two values to which the `_reentrancyStatus` state variable (used by the `nonReentrant` modifier) can be set indicating that a function was entered. + uint256 private constant _ENTERED = 2; + /// @notice Thrown if the action array length is larger than `MAX_ACTIONS`. error TooManyActions(); @@ -21,12 +34,37 @@ contract Executor is IExecutor { /// @param index The index of the action in the action array that failed. error ActionFailed(uint256 index); + /// @notice Thrown if a call is reentrant. + error ReentrantCall(); + + constructor() { + _storeReentrancyStatus(_NOT_ENTERED); + } + + modifier nonReentrant() { + if (_getReentrancyStatus() == _ENTERED) { + revert ReentrantCall(); + } + + _storeReentrancyStatus(_ENTERED); + + _; + + _storeReentrancyStatus(_NOT_ENTERED); + } + /// @inheritdoc IExecutor function execute( bytes32 _callId, Action[] memory _actions, uint256 _allowFailureMap - ) public virtual override returns (bytes[] memory execResults, uint256 failureMap) { + ) + public + virtual + override + nonReentrant + returns (bytes[] memory execResults, uint256 failureMap) + { // Check that the action array length is within bounds. if (_actions.length > MAX_ACTIONS) { revert TooManyActions(); @@ -83,4 +121,19 @@ contract Executor is IExecutor { execResults: execResults }); } + + /// @notice Gets the current reentrancy status. + /// @return status This returns the current reentrancy status. + function _getReentrancyStatus() private view returns (uint256 status) { + assembly { + status := sload(ReentrancyGuardStorageLocation) + } + } + + /// @notice Stores the reentrancy status on a specific slot. + function _storeReentrancyStatus(uint256 _status) private { + assembly { + sstore(ReentrancyGuardStorageLocation, _status) + } + } } diff --git a/contracts/src/mocks/executors/ActionExecute.sol b/contracts/src/mocks/executors/ActionExecute.sol new file mode 100644 index 00000000..36fcd754 --- /dev/null +++ b/contracts/src/mocks/executors/ActionExecute.sol @@ -0,0 +1,27 @@ +// SPDX-License-Identifier: AGPL-3.0-or-later + +pragma solidity ^0.8.8; + +import {IExecutor, Action} from "../../executors/Executor.sol"; +import "hardhat/console.sol"; + +/// @notice A dummy contract to test if Executor can successfully execute an action. +contract ActionExecute { + uint num = 10; + + function setTest(uint newNum) public returns (uint) { + num = newNum; + return num; + } + + function fail() public pure { + revert("ActionExecute:Revert"); + } + + // Used to test custom reentrancy guard + // that is implemented on Executor contract's + // execute function. + function callBackCaller() public { + IExecutor(msg.sender).execute(bytes32(0), new Action[](0), 0); + } +} diff --git a/contracts/src/mocks/executors/GasConsumer.sol b/contracts/src/mocks/executors/GasConsumer.sol new file mode 100644 index 00000000..1eb2db57 --- /dev/null +++ b/contracts/src/mocks/executors/GasConsumer.sol @@ -0,0 +1,14 @@ +// SPDX-License-Identifier: AGPL-3.0-or-later + +pragma solidity ^0.8.8; + +/// @notice This contract is used for testing to consume gas. +contract GasConsumer { + mapping(uint256 => uint256) public store; + + function consumeGas(uint256 count) external { + for (uint256 i = 0; i < count; i++) { + store[i] = 1; + } + } +} diff --git a/contracts/test/executors/executor.ts b/contracts/test/executors/executor.ts new file mode 100644 index 00000000..424ffd32 --- /dev/null +++ b/contracts/test/executors/executor.ts @@ -0,0 +1,268 @@ +import { + ActionExecute__factory, + Executor, + Executor__factory, + GasConsumer__factory, +} from '../../typechain'; +import {ExecutedEvent} from '../../typechain/src/executors/Executor'; +import {findEvent, flipBit} from '@aragon/osx-commons-sdk'; +import {SignerWithAddress} from '@nomiclabs/hardhat-ethers/signers'; +import {expect} from 'chai'; +import {ethers} from 'hardhat'; + +export const ZERO_BYTES32 = + '0x0000000000000000000000000000000000000000000000000000000000000000'; + +const MAX_ACTIONS = 256; +const errorSignature = '0x08c379a0'; // first 4 bytes of Error(string) + +const EventExecuted = 'Executed'; + +export async function getActions() { + const signers = await ethers.getSigners(); + const ActionExecuteFactory = new ActionExecute__factory(signers[0]); + let ActionExecute = await ActionExecuteFactory.deploy(); + const iface = new ethers.utils.Interface(ActionExecute__factory.abi); + + const num = 20; + return { + failAction: { + to: ActionExecute.address, + data: iface.encodeFunctionData('fail'), + value: 0, + }, + succeedAction: { + to: ActionExecute.address, + data: iface.encodeFunctionData('setTest', [num]), + value: 0, + }, + reentrancyAction: { + to: ActionExecute.address, + data: iface.encodeFunctionData('callBackCaller'), + value: 0, + }, + failActionMessage: ethers.utils + .hexlify(ethers.utils.toUtf8Bytes('ActionExecute:Revert')) + .substring(2), + successActionResult: ethers.utils.hexZeroPad(ethers.utils.hexlify(num), 32), + }; +} + +describe.only('Executor', async () => { + let data: any; + let executor: Executor; + let ownerAddress: string; + let signers: SignerWithAddress[]; + + before(async () => { + data = await getActions(); + signers = await ethers.getSigners(); + ownerAddress = await signers[0].getAddress(); + + executor = await new Executor__factory(signers[0]).deploy(); + }); + + it('reverts if array of actions is too big', async () => { + let actions = []; + for (let i = 0; i < MAX_ACTIONS; i++) { + actions[i] = data.succeedAction; + } + + await expect(executor.execute(ZERO_BYTES32, actions, 0)).not.to.be.reverted; + + // add one more to make sure it fails + actions[MAX_ACTIONS] = data.failAction; + + await expect( + executor.execute(ZERO_BYTES32, actions, 0) + ).to.be.revertedWithCustomError(executor, 'TooManyActions'); + }); + + it("reverts if action is failable and allowFailureMap doesn't include it", async () => { + await expect(executor.execute(ZERO_BYTES32, [data.failAction], 0)) + .to.be.revertedWithCustomError(executor, 'ActionFailed') + .withArgs(0); + }); + + it('reverts if one of the action called back the Executor with reentrancy', async () => { + // Allow the call to fail so we can get the error message + // in the `execResults`, otherwise with allowFailureMap = 0, + // it fails with `ActionFailed` even though reentrancy worked correctly. + let allowFailureMap = flipBit(0, ethers.BigNumber.from(0)); + + let tx = await executor.execute( + ZERO_BYTES32, + [data.reentrancyAction], + allowFailureMap + ); + const event = findEvent(await tx.wait(), EventExecuted); + const execResult = event.args.execResults[0]; + + const reentrancyErrorSignature = + Executor__factory.createInterface().encodeErrorResult('ReentrantCall'); + + expect(reentrancyErrorSignature).to.equal(execResult); + + // If called with allowFailureMap = 0, it must fail with `ActionFailed`. + await expect( + executor.execute(ZERO_BYTES32, [data.reentrancyAction], 0) + ).to.be.revertedWithCustomError(executor, 'ActionFailed'); + }); + + it('succeeds if action is failable but allowFailureMap allows it', async () => { + let num = ethers.BigNumber.from(0); + num = flipBit(0, num); + + const tx = await executor.execute(ZERO_BYTES32, [data.failAction], num); + const event = findEvent(await tx.wait(), EventExecuted); + + // Check that failAction's revertMessage was correctly stored in the executor's execResults + expect(event.args.execResults[0]).to.includes(data.failActionMessage); + expect(event.args.execResults[0]).to.includes(errorSignature); + }); + + it('returns the correct result if action succeeds', async () => { + const tx = await executor.execute(ZERO_BYTES32, [data.succeedAction], 0); + const event = findEvent(await tx.wait(), EventExecuted); + expect(event.args.execResults[0]).to.equal(data.successActionResult); + }); + + it('succeeds and correctly constructs failureMap results ', async () => { + let allowFailureMap = ethers.BigNumber.from(0); + let actions = []; + + // First 3 actions will fail + actions[0] = data.failAction; + actions[1] = data.failAction; + actions[2] = data.failAction; + + // The next 3 actions will succeed + actions[3] = data.succeedAction; + actions[4] = data.succeedAction; + actions[5] = data.succeedAction; + + // add first 3 actions in the allowFailureMap + // to make sure tx succeeds. + for (let i = 0; i < 3; i++) { + allowFailureMap = flipBit(i, allowFailureMap); + } + + // If the below call not fails, means allowFailureMap is correct. + let tx = await executor.execute(ZERO_BYTES32, actions, allowFailureMap); + let event = findEvent(await tx.wait(), EventExecuted); + + expect(event.args.actor).to.equal(ownerAddress); + expect(event.args.callId).to.equal(ZERO_BYTES32); + expect(event.args.allowFailureMap).to.equal(allowFailureMap); + + // construct the failureMap which only has those + // bits set at indexes where actions failed + let failureMap = ethers.BigNumber.from(0); + for (let i = 0; i < 3; i++) { + failureMap = flipBit(i, failureMap); + } + // Check that executor correctly generated failureMap + expect(event.args.failureMap).to.equal(failureMap); + + // Check that execResult emitted correctly stores action results. + for (let i = 0; i < 3; i++) { + expect(event.args.execResults[i]).to.includes(data.failActionMessage); + expect(event.args.execResults[i]).to.includes(errorSignature); + } + for (let i = 3; i < 6; i++) { + expect(event.args.execResults[i]).to.equal(data.successActionResult); + } + + // lets remove one of the action from allowFailureMap + // to see tx will actually revert. + allowFailureMap = flipBit(2, allowFailureMap); + await expect(executor.execute(ZERO_BYTES32, actions, allowFailureMap)) + .to.be.revertedWithCustomError(executor, 'ActionFailed') + .withArgs(2); // Since we unset the 2th action from failureMap, it should fail with that index. + }); + + it('emits an event afterwards', async () => { + const tx = await executor.execute(ZERO_BYTES32, [data.succeedAction], 0); + const rc = await tx.wait(); + + const event = findEvent(rc, 'Executed'); + expect(event.args.actor).to.equal(ownerAddress); + expect(event.args.callId).to.equal(ZERO_BYTES32); + expect(event.args.actions.length).to.equal(1); + expect(event.args.actions[0].to).to.equal(data.succeedAction.to); + expect(event.args.actions[0].value).to.equal(data.succeedAction.value); + expect(event.args.actions[0].data).to.equal(data.succeedAction.data); + expect(event.args.execResults[0]).to.equal(data.successActionResult); + expect(event.args.allowFailureMap).to.equal(0); + }); + + it('reverts if failure is allowed but not enough gas is provided (many actions)', async () => { + const GasConsumer = new GasConsumer__factory(signers[0]); + const gasConsumer = await GasConsumer.deploy(); + + // Prepare an action array calling `consumeGas` twenty times. + const gasConsumingAction = { + to: gasConsumer.address, + data: GasConsumer.interface.encodeFunctionData('consumeGas', [20]), + value: 0, + }; + + let allowFailureMap = ethers.BigNumber.from(0); + allowFailureMap = flipBit(0, allowFailureMap); // allow the action to fail + + const expectedGas = await executor.estimateGas.execute( + ZERO_BYTES32, + [gasConsumingAction], + allowFailureMap + ); + + // Provide too little gas so that the last `to.call` fails, but the remaining gas is enough to finish the subsequent operations. + await expect( + executor.execute(ZERO_BYTES32, [gasConsumingAction], allowFailureMap, { + gasLimit: expectedGas.sub(3200), + }) + ).to.be.revertedWithCustomError(executor, 'InsufficientGas'); + + // Provide enough gas so that the entire call passes. + await expect( + executor.execute(ZERO_BYTES32, [gasConsumingAction], allowFailureMap, { + gasLimit: expectedGas, + }) + ).to.not.be.reverted; + }); + + it('reverts if failure is allowed but not enough gas is provided (one action)', async () => { + const GasConsumer = new GasConsumer__factory(signers[0]); + const gasConsumer = await GasConsumer.deploy(); + + // Prepare an action array calling `consumeGas` one times. + const gasConsumingAction = { + to: gasConsumer.address, + data: GasConsumer.interface.encodeFunctionData('consumeGas', [2]), + value: 0, + }; + + let allowFailureMap = ethers.BigNumber.from(0); + allowFailureMap = flipBit(0, allowFailureMap); // allow the action to fail + + const expectedGas = await executor.estimateGas.execute( + ZERO_BYTES32, + [gasConsumingAction], + allowFailureMap + ); + + // Provide too little gas so that the last `to.call` fails, but the remaining gas is enough to finish the subsequent operations. + await expect( + executor.execute(ZERO_BYTES32, [gasConsumingAction], allowFailureMap, { + gasLimit: expectedGas.sub(10000), + }) + ).to.be.revertedWithCustomError(executor, 'InsufficientGas'); + + // Provide enough gas so that the entire call passes. + await expect( + executor.execute(ZERO_BYTES32, [gasConsumingAction], allowFailureMap, { + gasLimit: expectedGas, + }) + ).to.not.be.reverted; + }); +}); From d1feeeb5bf4f568ed6683fc3fa3fa17107ef1953 Mon Sep 17 00:00:00 2001 From: Giorgi Lagidze Date: Sat, 28 Sep 2024 12:32:23 +0400 Subject: [PATCH 14/15] call initialization only --- contracts/src/plugin/PluginUUPSUpgradeable.sol | 12 ++++++++++++ contracts/test/executors/executor.ts | 2 +- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/contracts/src/plugin/PluginUUPSUpgradeable.sol b/contracts/src/plugin/PluginUUPSUpgradeable.sol index 80c6a66d..fa7c7c02 100644 --- a/contracts/src/plugin/PluginUUPSUpgradeable.sol +++ b/contracts/src/plugin/PluginUUPSUpgradeable.sol @@ -48,6 +48,9 @@ abstract contract PluginUUPSUpgradeable is /// @notice Thrown when `delegatecall` fails. error ExecuteFailed(); + /// @notice Thrown when initialize is called after it has already been executed. + error AlreadyInitialized(); + /// @dev Emitted each time the TargetConfig is set. event TargetSet(TargetConfig newTargetConfig); @@ -64,6 +67,15 @@ abstract contract PluginUUPSUpgradeable is _disableInitializers(); } + /// @notice This ensures that the initialize function cannot be called during the upgrade process. + modifier onlyCallAtInitialization() { + if (_getInitializedVersion() != 0) { + revert AlreadyInitialized(); + } + + _; + } + /// @inheritdoc IPlugin function pluginType() public pure override returns (PluginType) { return PluginType.UUPS; diff --git a/contracts/test/executors/executor.ts b/contracts/test/executors/executor.ts index 424ffd32..1fa95c05 100644 --- a/contracts/test/executors/executor.ts +++ b/contracts/test/executors/executor.ts @@ -48,7 +48,7 @@ export async function getActions() { }; } -describe.only('Executor', async () => { +describe('Executor', async () => { let data: any; let executor: Executor; let ownerAddress: string; From 55a0cc64507068c9dc7e39b8d6be1d4eb7202369 Mon Sep 17 00:00:00 2001 From: Giorgi Lagidze Date: Tue, 1 Oct 2024 21:04:18 +0400 Subject: [PATCH 15/15] add comments --- contracts/src/plugin/extensions/proposal/Proposal.sol | 5 +++-- .../src/plugin/extensions/proposal/ProposalUpgradeable.sol | 5 +++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/contracts/src/plugin/extensions/proposal/Proposal.sol b/contracts/src/plugin/extensions/proposal/Proposal.sol index ba6ae044..13dbd18c 100644 --- a/contracts/src/plugin/extensions/proposal/Proposal.sol +++ b/contracts/src/plugin/extensions/proposal/Proposal.sol @@ -20,8 +20,9 @@ abstract contract Proposal is IProposal, ERC165 { /// @param _interfaceId The ID of the interface. /// @return Returns `true` if the interface is supported. function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) { - // In addition to the current interfaceId, also support previous version of the interfaceId that did not - // include the createProposal() function as standard + // In addition to the current interfaceId, also support previous version of the interfaceId + // that did not include the following functions: + // `createProposal, canExecute, createProposalId, createProposalParamsABI`. return _interfaceId == type(IProposal).interfaceId ^ diff --git a/contracts/src/plugin/extensions/proposal/ProposalUpgradeable.sol b/contracts/src/plugin/extensions/proposal/ProposalUpgradeable.sol index 0d380df4..bbec294b 100644 --- a/contracts/src/plugin/extensions/proposal/ProposalUpgradeable.sol +++ b/contracts/src/plugin/extensions/proposal/ProposalUpgradeable.sol @@ -26,8 +26,9 @@ abstract contract ProposalUpgradeable is IProposal, ERC165Upgradeable { /// @param _interfaceId The ID of the interface. /// @return Returns `true` if the interface is supported. function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) { - // In addition to the current interfaceId, also support previous version of the interfaceId that did not - // include the createProposal() function as standard + // In addition to the current interfaceId, also support previous version of the interfaceId + // that did not include the following functions: + // `createProposal, canExecute, createProposalId, createProposalParamsABI`. return _interfaceId == type(IProposal).interfaceId ^